From dee6631bec350706d301f057be4d87df912e2018 Mon Sep 17 00:00:00 2001 From: github-deploy-action Date: Sat, 20 Jul 2024 06:07:26 +0000 Subject: [PATCH] github-deploy-action-projectors --- projectors/hazel.js | 694 ++++++++++++++++++++++--------------------- projectors/style.css | 1 - projectors/worker.js | 90 +++--- 3 files changed, 396 insertions(+), 389 deletions(-) diff --git a/projectors/hazel.js b/projectors/hazel.js index bcb6cff3..e3fb67d4 100644 --- a/projectors/hazel.js +++ b/projectors/hazel.js @@ -436363,133 +436363,135 @@ c=K(0,0,a)[4];/*<>*/return/*<>*/function +aS="textArea",F="Indicated",a2="checkbox",S="Checkbox",aR=")",E="Inline",p="<2>",l="@ ",P="SliderF",aP=125,aQ="(Some ",a0="src/haz3lcore/zipper/ProjectorBase.re.info",a1="src/haz3lcore/zipper/ProjectorBase.re.shape",O=" =",N="Info",ah="@])",C="%a",D="ci",aO="{ ",M="Fold",aN="src/haz3lcore/zipper/ProjectorBase.re.kind",aZ="sliderF",L="Slider",B="status",A="syntax",x="kind",w="Block",aY="src/haz3lcore/zipper/ProjectorBase.re.status",K="",ab=963043957,aX="slider",aa=";@ ",aV="fold",aW="@[<2>{ ",aM="None",R="TextArea",J="@]",aL="src/haz3lcore/zipper/ProjectorBase.re.entry",z="model",aU="@ }@]",Q="@[%s =@ ",aK="inline",aT="indicated",v=143,g=139,k=848054398,m=-976970511,y="id",aI="block",aJ="info",s=a.jsoo_runtime,aG=s.caml_string_compare,I=s.caml_update_dummy;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):s.caml_call_gen(a,[b,c])}/*<>*/function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):s.caml_call_gen(a,[b,c,d])}/*<>*/function -cr(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):s.caml_call_gen(a,[b,c,d,e])}/*<>*/function -aG(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):s.caml_call_gen(a,[b,c,d,e,f,g])}var -cs=undefined,l=s.caml_get_global_data(),q=aM,r=aM,Y=aK,u=a0,F=a0,P=aX,Q=aX,_=aZ,T=l.Sexplib__Sexp,d=l.Stdlib__Format,S=l.Haz3lcore__Info,n=l.Ppx_yojson_conv_lib__Yojson_conv,b=l.Ppx_yojson_conv_lib,f=l.Ppx_yojson_conv_lib__Yojson_conv_error,t=l.Sexplib__Std,an=l.Sexplib0__Sexp_conv_record,O=l.Util__Direction,i=l.Sexplib0__Sexp_conv_error,N=l.Haz3lcore__Measured,o=l.Haz3lcore__Id,R=l.Haz3lcore__Piece,b_=aP,b$=aQ,ca=aL,b3=aP,b4=aQ,b5=aL,bW=[0,[18,[1,[0,[11,p,0],p]],[11,aN,0]],aV],bX=z,bY=[0,[18,[1,[0,0,V]],[2,0,[11,W,[17,[0,m,1,0],0]]]],X],bZ=[0,[17,0,0],U],b0=[0,[12,59,[17,[0,m,1,0],0]],af],b1=A,b2=[0,[18,[1,[0,0,V]],[2,0,[11,W,[17,[0,m,1,0],0]]]],X],b6=[0,[17,0,0],U],b7=[0,[12,59,[17,[0,m,1,0],0]],af],b8=C,b9=[0,[18,[1,[0,0,V]],[2,0,[11,W,[17,[0,m,1,0],0]]]],X],cb=[0,[17,0,0],U],cc=[0,[17,[0,m,1,0],[12,aO,[17,0,0]]],aT],cd=[0,[15,0],B],co=C,cp=A,cq=z,cl=C,cm=A,cn=z,ci=[0,C],cj=[0,A],ck=[0,z],cf=C,cg=A,ch=z,bV=[0,[15,0],B],bQ=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,E,[17,[0,m,1,0],0]]]],"(@[<2>Indicated@ "],bR=[0,[17,0,[12,41,0]],ag],bS=[0,[15,0],B],bU=[0,k,E],bT=[0,E],bG=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,D,[17,[0,m,1,0],0]]]],"(@[<2>Inline@ "],bH=[0,[4,0,0,0,0],"%d"],bI=[0,[17,0,[12,41,0]],ag],bJ=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,w,[17,[0,m,1,0],0]]]],"(@[<2>Block@ "],bK=[0,[17,0,[12,41,0]],ag],bL=[0,[15,0],B],bO=[0,k,D],bP=[0,k,w],bM=[0,D],bN=[0,w],bE=[0,[15,0],B],bk=[0,[18,[1,[0,[11,p,0],p]],[11,aN,0]],aV],bl=x,bm=[0,[18,[1,[0,0,V]],[2,0,[11,W,[17,[0,m,1,0],0]]]],X],bn=[0,[17,0,0],U],bo=[0,[12,59,[17,[0,m,1,0],0]],af],bp=y,bq=[0,[18,[1,[0,0,V]],[2,0,[11,W,[17,[0,m,1,0],0]]]],X],br=[0,[3,0,0],"%S"],bs=[0,[17,0,0],U],bt=[0,[17,[0,m,1,0],[12,aO,[17,0,0]]],aT],bu=[0,[15,0],B],bC=y,bD=x,bA=y,bB=x,by=[0,y],bz=[0,x],bw=y,bx=x,a3=I,a4=J,a5=M,a6=H,a7=K,a8=L,a9=[0,[15,0],B],be=[0,j,[0,[0,k,I],0]],bf=[0,j,[0,[0,k,J],0]],bg=[0,j,[0,[0,k,M],0]],bh=[0,j,[0,[0,k,H],0]],bi=[0,j,[0,[0,k,K],0]],bj=[0,j,[0,[0,k,L],0]],a_=[0,I],a$=[0,J],ba=[0,M],bb=[0,H],bc=[0,K],bd=[0,L],bv=aK,ce=aZ;/*<>*/function -aa(a,b){/*<>*/switch(b){case +cz(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):s.caml_call_gen(a,[b,c,d,e])}/*<>*/function +aH(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):s.caml_call_gen(a,[b,c,d,e,f,g])}var +cA=undefined,n=s.caml_get_global_data(),q=aN,r=aN,_=aL,u=a1,G=a1,V=aY,W=aY,$=a0,Z=n.Sexplib__Sexp,H=n.Haz3lcore__Piece,d=n.Stdlib__Format,Y=n.Haz3lcore__Info,o=n.Ppx_yojson_conv_lib__Yojson_conv,j=n.Haz3lcore__Id,b=n.Ppx_yojson_conv_lib,f=n.Ppx_yojson_conv_lib__Yojson_conv_error,t=n.Sexplib__Std,ao=n.Sexplib0__Sexp_conv_record,U=n.Util__Direction,i=n.Sexplib0__Sexp_conv_error,T=n.Haz3lcore__Measured,cc=aQ,cd=aR,ce=aM,b7=aQ,b8=aR,b9=aM,bW=[0,[18,[1,[0,[11,p,0],p]],[11,aO,0]],aW],bX=y,bY=[0,[18,[1,[0,0,K]],[2,0,[11,O,[17,[0,l,1,0],0]]]],Q],bZ=[0,[17,0,0],J],b0=[0,[12,59,[17,[0,l,1,0],0]],aa],b1=A,b2=[0,[18,[1,[0,0,K]],[2,0,[11,O,[17,[0,l,1,0],0]]]],Q],b3=[0,[17,0,0],J],b4=[0,[12,59,[17,[0,l,1,0],0]],aa],b5=B,b6=[0,[18,[1,[0,0,K]],[2,0,[11,O,[17,[0,l,1,0],0]]]],Q],b_=[0,[17,0,0],J],b$=[0,[12,59,[17,[0,l,1,0],0]],aa],ca=D,cb=[0,[18,[1,[0,0,K]],[2,0,[11,O,[17,[0,l,1,0],0]]]],Q],cf=[0,[17,0,0],J],cg=[0,[17,[0,l,1,0],[12,aP,[17,0,0]]],aU],ch=[0,[15,0],C],cv=D,cw=B,cx=A,cy=y,cr=D,cs=B,ct=A,cu=y,cn=[0,D],co=[0,B],cp=[0,A],cq=[0,y],cj=D,ck=B,cl=A,cm=y,bV=[0,[15,0],C],bQ=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,F,[17,[0,l,1,0],0]]]],"(@[<2>Indicated@ "],bR=[0,[17,0,[12,41,0]],ah],bS=[0,[15,0],C],bU=[0,m,F],bT=[0,F],bG=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,E,[17,[0,l,1,0],0]]]],"(@[<2>Inline@ "],bH=[0,[4,0,0,0,0],"%d"],bI=[0,[17,0,[12,41,0]],ah],bJ=[0,[12,40,[18,[1,[0,[11,p,0],p]],[11,w,[17,[0,l,1,0],0]]]],"(@[<2>Block@ "],bK=[0,[17,0,[12,41,0]],ah],bL=[0,[15,0],C],bO=[0,m,E],bP=[0,m,w],bM=[0,E],bN=[0,w],bE=[0,[15,0],C],bk=[0,[18,[1,[0,[11,p,0],p]],[11,aO,0]],aW],bl=x,bm=[0,[18,[1,[0,0,K]],[2,0,[11,O,[17,[0,l,1,0],0]]]],Q],bn=[0,[17,0,0],J],bo=[0,[12,59,[17,[0,l,1,0],0]],aa],bp=z,bq=[0,[18,[1,[0,0,K]],[2,0,[11,O,[17,[0,l,1,0],0]]]],Q],br=[0,[3,0,0],"%S"],bs=[0,[17,0,0],J],bt=[0,[17,[0,l,1,0],[12,aP,[17,0,0]]],aU],bu=[0,[15,0],C],bC=z,bD=x,bA=z,bB=x,by=[0,z],bz=[0,x],bw=z,bx=x,a3=M,a4=N,a5=S,a6=L,a7=P,a8=R,a9=[0,[15,0],C],be=[0,k,[0,[0,m,M],0]],bf=[0,k,[0,[0,m,N],0]],bg=[0,k,[0,[0,m,S],0]],bh=[0,k,[0,[0,m,L],0]],bi=[0,k,[0,[0,m,P],0]],bj=[0,k,[0,[0,m,R],0]],a_=[0,M],a$=[0,N],ba=[0,S],bb=[0,L],bc=[0,P],bd=[0,R],bv=aL,ci=a0;/*<>*/function +ac(a,b){/*<>*/switch(b){case 0:/*<>*/return/*<>*/c(d[13],a,a3);case 1:/*<>*/return/*<>*/c(d[13],a,a4);case 2:/*<>*/return/*<>*/c(d[13],a,a5);case 3:/*<>*/return/*<>*/c(d[13],a,a6);case 4:/*<>*/return/*<>*/c(d[13],a,a7);default:/*<>*/return/*<>*/c(d[13],a,a8)}/*<>*/}/*<>*/function -ah(a){/*<>*/a:{if(0===a[0]){var -b=a[1],e=aF(b,a2);b:{c:{d:{e:{f:{if(0<=e){if(0>*/return 2}/*<>*/return 0}/*<>*/return 1}/*<>*/return 3}/*<>*/return 4}/*<>*/return 5}var +ai(a){/*<>*/a:{if(0===a[0]){var +b=a[1],e=aG(b,a2);b:{c:{d:{e:{f:{if(0<=e){if(0>*/return 2}/*<>*/return 0}/*<>*/return 1}/*<>*/return 3}/*<>*/return 4}/*<>*/return 5}var f=a[1];if(!f)/*<>*/return/*<>*/c(i[7],q,a);var g=f[1];if(0!==g[0])/*<>*/return/*<>*/c(i[6],q,a);var -d=g[1],h=aF(d,a2);b:{c:{d:{e:{f:{if(0<=h){if(0>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[8],q,a)/*<>*/}function -ai(a){/*<>*/switch(a){case +d=g[1],h=aG(d,a2);b:{c:{d:{e:{f:{if(0<=h){if(0>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[3],q,a)}/*<>*/return/*<>*/c(i[8],q,a)/*<>*/}function +aj(a){/*<>*/switch(a){case 0:/*<>*/return a_;case 1:/*<>*/return a$;case 2:/*<>*/return ba;case 3:/*<>*/return bb;case 4:/*<>*/return bc;default:/*<>*/return bd}/*<>*/}/*<>*/function -aj(a){/*<>*/if(typeof -a!=="number"&&j===a[1]){var +ak(a){/*<>*/if(typeof +a!=="number"&&k===a[1]){var b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],r,a);var e=b[1];if(typeof e!=="number"){var -g=e[1];if(k===g){var -d=e[2];if(d===M)return b[2]?/*<>*/c(f[3],r,a):2;if(d===I)return b[2]?/*<>*/c(f[3],r,a):0;if(d===J)return b[2]?/*<>*/c(f[3],r,a):1;if(d===H)return b[2]?/*<>*/c(f[3],r,a):3;if(d===K)return b[2]?/*<>*/c(f[3],r,a):4;if(d===L)return b[2]?/*<>*/c(f[3],r,a):5}else if(j===g)/*<>*/return/*<>*/c(f[6],r,a)}}/*<>*/return/*<>*/c(f[8],r,a)/*<>*/}function -ak(a){/*<>*/switch(a){case +g=e[1];if(m===g){var +d=e[2];if(d===S)return b[2]?/*<>*/c(f[3],r,a):2;if(d===M)return b[2]?/*<>*/c(f[3],r,a):0;if(d===N)return b[2]?/*<>*/c(f[3],r,a):1;if(d===L)return b[2]?/*<>*/c(f[3],r,a):3;if(d===P)return b[2]?/*<>*/c(f[3],r,a):4;if(d===R)return b[2]?/*<>*/c(f[3],r,a):5}else if(k===g)/*<>*/return/*<>*/c(f[6],r,a)}}/*<>*/return/*<>*/c(f[8],r,a)/*<>*/}function +al(a){/*<>*/switch(a){case 0:/*<>*/return be;case 1:/*<>*/return bf;case 2:/*<>*/return bg;case 3:/*<>*/return bh;case 4:/*<>*/return bi;default:/*<>*/return bj}/*<>*/}var -al=[];function -ab(a,b){/*<>*/ /*<>*/c(d[g],a,bk);/*<>*/ /*<>*/h(d[g],a,bm,bl);var -f=b[1];/*<>*/ /*<>*/e(e(al[1],a),f);/*<>*/ /*<>*/c(d[g],a,bn);/*<>*/ /*<>*/c(d[g],a,bo);/*<>*/ /*<>*/h(d[g],a,bq,bp);var -i=b[2];/*<>*/ /*<>*/e(/*<>*/c(d[g],a,br),i);/*<>*/ /*<>*/c(d[g],a,bs);/*<>*/return/*<>*/c(d[g],a,bt)/*<>*/}G(al,[0,aa]);function -am(a){/*<>*/return/*<>*/aG(an[3],bv,[0,bx,1,ah,[0,bw,1,t[10],0]],function(a){/*<>*/return a!==x?a!==y?-1:1:0/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/}function -ao(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,by,[0,/*<>*/e(t[9],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bz,[0,ai(b),0]]],c]]/*<>*/}function -ap(a){/*<>*/if(typeof -a!=="number"&&$===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/i=[0,0],/*<>*/d=[0,0],/*<>*/j=[0,0];/*<>*/(function(a){/*<>*/var +am=[];function +ad(a,b){/*<>*/ /*<>*/c(d[g],a,bk);/*<>*/ /*<>*/h(d[g],a,bm,bl);var +f=b[1];/*<>*/ /*<>*/e(e(am[1],a),f);/*<>*/ /*<>*/c(d[g],a,bn);/*<>*/ /*<>*/c(d[g],a,bo);/*<>*/ /*<>*/h(d[g],a,bq,bp);var +i=b[2];/*<>*/ /*<>*/e(/*<>*/c(d[g],a,br),i);/*<>*/ /*<>*/c(d[g],a,bs);/*<>*/return/*<>*/c(d[g],a,bt)/*<>*/}I(am,[0,ac]);function +an(a){/*<>*/return/*<>*/aH(ao[3],bv,[0,bx,1,ai,[0,bw,1,t[10],0]],function(a){/*<>*/return a!==x?a!==z?-1:1:0/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/}function +ap(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,by,[0,/*<>*/e(t[9],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bz,[0,aj(b),0]]],c]]/*<>*/}function +aq(a){/*<>*/if(typeof +a!=="number"&&ab===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/i=[0,0],/*<>*/d=[0,0],/*<>*/j=[0,0];/*<>*/(function(a){/*<>*/var f=a;/*<>*/for(;;){if(!f)/*<>*/return;var -h=f[1],k=h[2],c=h[1],l=f[2];if(c!==x)if(c!==y){/*<>*/if(/*<>*/e(b[2],n[22]))j[1]=[0,c,/*<>*/e(b[2],j)]}else if(/*<>*/e(b[2],i))d[1]=[0,c,/*<>*/e(b[2],d)];else -i[1]=[0,/*<>*/e(n[45][19],k)];else if(/*<>*/e(b[2],g))d[1]=[0,c,/*<>*/e(b[2],d)];else -g[1]=[0,aj(k)];f=l}/*<>*/}(a[2]));if(/*<>*/e(b[2],d)){/*<>*/ /*<>*/var -m=/*<>*/e(b[2],d);/*<>*/return/*<>*/h(f[10],Y,m,a)}if(/*<>*/e(b[2],j)){/*<>*/ /*<>*/var -o=/*<>*/e(b[2],j);/*<>*/return/*<>*/h(f[11],Y,o,a)}/*<>*/var/*<>*/k=/*<>*/e(b[2],g),/*<>*/l=/*<>*/e(b[2],i);if(k&&l)/*<>*/return[0,k[1],l[1]];/*<>*/var/*<>*/p=[0,[0,0===/*<>*/e(b[2],i)?1:0,bA],0],/*<>*/q=[0,[0,0===/*<>*/e(b[2],g)?1:0,bB],p];/*<>*/return/*<>*/h(f[13],Y,a,q)}/*<>*/return/*<>*/c(f[14],Y,a)/*<>*/}function -aq(a){/*<>*/var -b=a[1],c=[0,[0,bC,e(n[45][3],a[2])],0];/*<>*/return[0,$,[0,[0,bD,ak(b)],c]]/*<>*/}var -ac=[];function -ar(a){/*<>*/return c(ac[1],function(a){/*<>*/return e(ac[2],a)},a)}G(ac,[0,o[15][48],ab]);var -as=[];function -at(a,b){/*<>*/if(0===b[0]){var +h=f[1],k=h[2],c=h[1],l=f[2];if(c!==x)if(c!==z){/*<>*/if(/*<>*/e(b[2],o[22]))j[1]=[0,c,/*<>*/e(b[2],j)]}else if(/*<>*/e(b[2],i))d[1]=[0,c,/*<>*/e(b[2],d)];else +i[1]=[0,/*<>*/e(o[45][19],k)];else if(/*<>*/e(b[2],g))d[1]=[0,c,/*<>*/e(b[2],d)];else +g[1]=[0,ak(k)];f=l}/*<>*/}(a[2]));if(/*<>*/e(b[2],d)){/*<>*/ /*<>*/var +m=/*<>*/e(b[2],d);/*<>*/return/*<>*/h(f[10],_,m,a)}if(/*<>*/e(b[2],j)){/*<>*/ /*<>*/var +n=/*<>*/e(b[2],j);/*<>*/return/*<>*/h(f[11],_,n,a)}/*<>*/var/*<>*/k=/*<>*/e(b[2],g),/*<>*/l=/*<>*/e(b[2],i);if(k&&l)/*<>*/return[0,k[1],l[1]];/*<>*/var/*<>*/p=[0,[0,0===/*<>*/e(b[2],i)?1:0,bA],0],/*<>*/q=[0,[0,0===/*<>*/e(b[2],g)?1:0,bB],p];/*<>*/return/*<>*/h(f[13],_,a,q)}/*<>*/return/*<>*/c(f[14],_,a)/*<>*/}function +ar(a){/*<>*/var +b=a[1],c=[0,[0,bC,e(o[45][3],a[2])],0];/*<>*/return[0,ab,[0,[0,bD,al(b)],c]]/*<>*/}var +ae=[];function +as(a){/*<>*/return c(ae[1],function(a){/*<>*/return e(ae[2],a)},a)}I(ae,[0,j[15][48],ad]);var +at=[];function +au(a,b){/*<>*/if(0===b[0]){var f=b[1];/*<>*/ /*<>*/c(d[g],a,bG);e(/*<>*/c(d[g],a,bH),f);return c(d[g],a,bI)}var -h=b[1];/*<>*/ /*<>*/c(d[g],a,bJ);e(e(as[1],a),h);return c(d[g],a,bK)/*<>*/}/*<>*/ /*<>*/var -bF=[0,ar,function(a){/*<>*/return/*<>*/h(d[v],bE,ar,a)/*<>*/},function(a){/*<>*/return/*<>*/c(o[15][45],am,a)/*<>*/},function(a){/*<>*/return/*<>*/c(o[15][44],ao,a)/*<>*/},function(a){/*<>*/return c(o[15][47],ap,a)},function(a){/*<>*/return c(o[15][46],aq,a)},o[15][1],o[15][18],o[15][32],o[15][26],o[15][4]];G(as,[0,N[13][1]]);var -au=[];function -ad(a,b){/*<>*/var -f=b[1];/*<>*/ /*<>*/c(d[g],a,bQ);e(e(au[1],a),f);return c(d[g],a,bR)/*<>*/}G(au,[0,O[1]]);/*<>*/function -av(a){/*<>*/a:{if(0===a[0]){var -g=a[1];if(g!==E&&g!==aS)break a;/*<>*/return/*<>*/c(i[5],P,a)}var -b=a[1];if(!b)/*<>*/return/*<>*/c(i[7],P,a);var -j=b[1];if(0!==j[0])/*<>*/return/*<>*/c(i[6],P,a);var -d=j[1];if(d!==E&&d!==aS)break a;var -f=b[2];if(f&&!f[2])/*<>*/return[0,/*<>*/e(O[3],f[1])];/*<>*/return/*<>*/h(i[4],P,d,a)}/*<>*/return/*<>*/c(i[8],P,a)/*<>*/}function -aw(a){/*<>*/return[1,[0,bT,[0,/*<>*/e(O[4],a[1]),0]]]/*<>*/}/*<>*/function -ax(a){/*<>*/if(typeof +h=b[1];/*<>*/ /*<>*/c(d[g],a,bJ);e(e(at[1],a),h);return c(d[g],a,bK)/*<>*/}/*<>*/ /*<>*/var +bF=[0,as,function(a){/*<>*/return/*<>*/h(d[v],bE,as,a)/*<>*/},function(a){/*<>*/return/*<>*/c(j[15][45],an,a)/*<>*/},function(a){/*<>*/return/*<>*/c(j[15][44],ap,a)/*<>*/},function(a){/*<>*/return c(j[15][47],aq,a)},function(a){/*<>*/return c(j[15][46],ar,a)},j[15][1],j[15][18],j[15][32],j[15][26],j[15][4]];I(at,[0,T[13][1]]);var +av=[];function +af(a,b){/*<>*/var +f=b[1];/*<>*/ /*<>*/c(d[g],a,bQ);e(e(av[1],a),f);return c(d[g],a,bR)/*<>*/}I(av,[0,U[1]]);/*<>*/function +aw(a){/*<>*/a:{if(0===a[0]){var +g=a[1];if(g!==F&&g!==aT)break a;/*<>*/return/*<>*/c(i[5],V,a)}var +b=a[1];if(!b)/*<>*/return/*<>*/c(i[7],V,a);var +j=b[1];if(0!==j[0])/*<>*/return/*<>*/c(i[6],V,a);var +d=j[1];if(d!==F&&d!==aT)break a;var +f=b[2];if(f&&!f[2])/*<>*/return[0,/*<>*/e(U[3],f[1])];/*<>*/return/*<>*/h(i[4],V,d,a)}/*<>*/return/*<>*/c(i[8],V,a)/*<>*/}function +ax(a){/*<>*/return[1,[0,bT,[0,/*<>*/e(U[4],a[1]),0]]]/*<>*/}/*<>*/function +ay(a){/*<>*/if(typeof a!=="number"){var -i=a[1];if(k===i){if(a[2]===E)/*<>*/return/*<>*/c(f[5],Q,a)}else if(j===i){var -b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],Q,a);var +i=a[1];if(m===i){if(a[2]===F)/*<>*/return/*<>*/c(f[5],W,a)}else if(k===i){var +b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],W,a);var d=b[1];if(typeof d!=="number"){var -l=d[1];if(k===l){var -m=d[2];if(m===E){var -g=b[2];if(g&&!g[2])/*<>*/return[0,/*<>*/e(O[5],g[1])];/*<>*/return/*<>*/h(f[4],Q,m,a)}}else if(j===l)/*<>*/return/*<>*/c(f[6],Q,a)}}}/*<>*/return/*<>*/c(f[8],Q,a)/*<>*/}function -ay(a){/*<>*/return[0,j,[0,bU,[0,/*<>*/e(O[6],a[1]),0]]]/*<>*/}var -az=[];function -ae(a){/*<>*/return e(az[1],a)}G(az,[0,R[20]]);var -aA=R[22],aB=R[23],aC=R[24],aD=R[25],Z=[];function -aE(f,b){/*<>*/ /*<>*/c(d[g],f,bW);/*<>*/ /*<>*/h(d[g],f,bY,bX);var -a=b[1];/*<>*/ /*<>*/e(e(Z[3],f),a);/*<>*/ /*<>*/c(d[g],f,bZ);/*<>*/ /*<>*/c(d[g],f,b0);/*<>*/ /*<>*/h(d[g],f,b2,b1);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(d[13],f,b5);var -b=a[1];/*<>*/ /*<>*/c(d[13],f,b3);/*<>*/ /*<>*/e(e(Z[2],f),b);/*<>*/return/*<>*/c(d[13],f,b4)/*<>*/}(b[2]));/*<>*/ /*<>*/c(d[g],f,b6);/*<>*/ /*<>*/c(d[g],f,b7);/*<>*/ /*<>*/h(d[g],f,b9,b8);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(d[13],f,ca);var -b=a[1];/*<>*/ /*<>*/c(d[13],f,b_);/*<>*/ /*<>*/e(e(Z[1],f),b);/*<>*/return/*<>*/c(d[13],f,b$)/*<>*/}(b[3]));/*<>*/ /*<>*/c(d[g],f,cb);/*<>*/return/*<>*/c(d[g],f,cc)/*<>*/}G(Z,[0,S[a1],ad,ae]);s.caml_register_global(a1,[0,aa,function(a){/*<>*/return/*<>*/h(d[v],a9,aa,a)/*<>*/},ah,ai,aj,ak,ab,function(a){/*<>*/return/*<>*/h(d[v],bu,ab,a)/*<>*/},am,ao,ap,aq,bF,at,function(a){/*<>*/return/*<>*/h(d[v],bL,at,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -d=a[1];b:if(d!==w){if(d!==D){if(d===aH)break b;if(d!==aJ)break a}/*<>*/return/*<>*/c(i[5],u,a)}/*<>*/return/*<>*/c(i[5],u,a)}var +j=d[1];if(m===j){var +l=d[2];if(l===F){var +g=b[2];if(g&&!g[2])/*<>*/return[0,/*<>*/e(U[5],g[1])];/*<>*/return/*<>*/h(f[4],W,l,a)}}else if(k===j)/*<>*/return/*<>*/c(f[6],W,a)}}}/*<>*/return/*<>*/c(f[8],W,a)/*<>*/}function +az(a){/*<>*/return[0,k,[0,bU,[0,/*<>*/e(U[6],a[1]),0]]]/*<>*/}var +aA=[];function +ag(a){/*<>*/return e(aA[1],a)}I(aA,[0,H[20]]);var +aB=H[22],aC=H[23],aD=H[24],aE=H[25],X=[];function +aF(f,b){/*<>*/ /*<>*/c(d[g],f,bW);/*<>*/ /*<>*/h(d[g],f,bY,bX);var +a=b[1];/*<>*/ /*<>*/e(e(X[4],f),a);/*<>*/ /*<>*/c(d[g],f,bZ);/*<>*/ /*<>*/c(d[g],f,b0);/*<>*/ /*<>*/h(d[g],f,b2,b1);var +i=b[2];/*<>*/ /*<>*/e(e(X[3],f),i);/*<>*/ /*<>*/c(d[g],f,b3);/*<>*/ /*<>*/c(d[g],f,b4);/*<>*/ /*<>*/h(d[g],f,b6,b5);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(d[13],f,b9);var +b=a[1];/*<>*/ /*<>*/c(d[13],f,b7);/*<>*/ /*<>*/e(e(X[2],f),b);/*<>*/return/*<>*/c(d[13],f,b8)/*<>*/}(b[3]));/*<>*/ /*<>*/c(d[g],f,b_);/*<>*/ /*<>*/c(d[g],f,b$);/*<>*/ /*<>*/h(d[g],f,cb,ca);/*<>*/(function(a){/*<>*/if(!a)/*<>*/return/*<>*/c(d[13],f,ce);var +b=a[1];/*<>*/ /*<>*/c(d[13],f,cc);/*<>*/ /*<>*/e(e(X[1],f),b);/*<>*/return/*<>*/c(d[13],f,cd)/*<>*/}(b[4]));/*<>*/ /*<>*/c(d[g],f,cf);/*<>*/return/*<>*/c(d[g],f,cg)/*<>*/}I(X,[0,Y[169],af,ag,j[9]]);s.caml_register_global(179,[0,ac,function(a){/*<>*/return/*<>*/h(d[v],a9,ac,a)/*<>*/},ai,aj,ak,al,ad,function(a){/*<>*/return/*<>*/h(d[v],bu,ad,a)/*<>*/},an,ap,aq,ar,bF,au,function(a){/*<>*/return/*<>*/h(d[v],bL,au,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +d=a[1];b:if(d!==w){if(d!==E){if(d===aI)break b;if(d!==aK)break a}/*<>*/return/*<>*/c(i[5],u,a)}/*<>*/return/*<>*/c(i[5],u,a)}var f=a[1];if(!f)/*<>*/return/*<>*/c(i[7],u,a);var k=f[1];if(0!==k[0])/*<>*/return/*<>*/c(i[6],u,a);var -b=k[1];b:if(b!==w){if(b!==D){if(b===aH)break b;if(b!==aJ)break a}var +b=k[1];b:if(b!==w){if(b!==E){if(b===aI)break b;if(b!==aK)break a}var g=f[2];if(g&&!g[2])/*<>*/return[0,/*<>*/e(t[16],g[1])];/*<>*/return/*<>*/h(i[4],u,b,a)}var -j=f[2];if(j&&!j[2])/*<>*/return[1,/*<>*/e(N[13][3],j[1])];/*<>*/return/*<>*/h(i[4],u,b,a)}/*<>*/return/*<>*/c(i[8],u,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[1,[0,bM,[0,/*<>*/e(t[15],a[1]),0]]]:[1,[0,bN,[0,/*<>*/e(N[13][4],a[1]),0]]]/*<>*/},function(a){/*<>*/if(typeof +j=f[2];if(j&&!j[2])/*<>*/return[1,/*<>*/e(T[13][3],j[1])];/*<>*/return/*<>*/h(i[4],u,b,a)}/*<>*/return/*<>*/c(i[8],u,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[1,[0,bM,[0,/*<>*/e(t[15],a[1]),0]]]:[1,[0,bN,[0,/*<>*/e(T[13][4],a[1]),0]]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"){var -m=a[1];if(k===m){var -o=a[2];if(o===w||o===D)/*<>*/return/*<>*/c(f[5],F,a)}else if(j===m){var -b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],F,a);var +l=a[1];if(m===l){var +n=a[2];if(n===w||n===E)/*<>*/return/*<>*/c(f[5],G,a)}else if(k===l){var +b=a[2];if(!b)/*<>*/return/*<>*/c(f[7],G,a);var g=b[1];if(typeof g!=="number"){var -p=g[1];if(k===p){var +p=g[1];if(m===p){var d=g[2];if(d===w){var -l=b[2];if(l&&!l[2])/*<>*/return[1,/*<>*/e(N[13][5],l[1])];/*<>*/return/*<>*/h(f[4],F,d,a)}if(d===D){var -i=b[2];if(i&&!i[2])/*<>*/return[0,/*<>*/e(n[45][22],i[1])];/*<>*/return/*<>*/h(f[4],F,d,a)}}else if(j===p)/*<>*/return/*<>*/c(f[6],F,a)}}}/*<>*/return/*<>*/c(f[8],F,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[0,j,[0,bO,[0,/*<>*/e(n[45][6],a[1]),0]]]:[0,j,[0,bP,[0,/*<>*/e(N[13][6],a[1]),0]]]/*<>*/},ad,function(a){/*<>*/return/*<>*/h(d[v],bS,ad,a)/*<>*/},av,aw,ax,ay,ae,function(a){/*<>*/return/*<>*/h(d[v],bV,ae,a)/*<>*/},aA,aB,aC,aD,aE,function(a){/*<>*/return/*<>*/h(d[v],cd,aE,a)/*<>*/},function(a){/*<>*/var/*<>*/b=[0,cf,1,/*<>*/e(t[37],S[171]),0],/*<>*/c=[0,ch,1,aA,[0,cg,1,/*<>*/e(t[37],av),b]];/*<>*/return/*<>*/aG(an[3],ce,c,function(a){/*<>*/return a!==C?a!==A?a!==z?-1:0:1:2/*<>*/},0,function(a){/*<>*/var -b=a[2];/*<>*/return[0,a[1],b[1],b[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[2],d=a[1],/*<>*/f=[0,[1,[0,ci,[0,/*<>*/c(t[36],S[172],a[3]),0]]],0],/*<>*/g=[0,[1,[0,cj,[0,/*<>*/c(t[36],aw,b),0]]],f];/*<>*/return[1,[0,[1,[0,ck,[0,/*<>*/e(aB,d),0]]],g]]/*<>*/},function(a){/*<>*/if(typeof -a!=="number"&&$===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/i=[0,0],/*<>*/j=[0,0],/*<>*/d=[0,0],/*<>*/k=[0,0];/*<>*/(function(a){/*<>*/var +j=b[2];if(j&&!j[2])/*<>*/return[1,/*<>*/e(T[13][5],j[1])];/*<>*/return/*<>*/h(f[4],G,d,a)}if(d===E){var +i=b[2];if(i&&!i[2])/*<>*/return[0,/*<>*/e(o[45][22],i[1])];/*<>*/return/*<>*/h(f[4],G,d,a)}}else if(k===p)/*<>*/return/*<>*/c(f[6],G,a)}}}/*<>*/return/*<>*/c(f[8],G,a)/*<>*/},function(a){/*<>*/return 0===a[0]?[0,k,[0,bO,[0,/*<>*/e(o[45][6],a[1]),0]]]:[0,k,[0,bP,[0,/*<>*/e(T[13][6],a[1]),0]]]/*<>*/},af,function(a){/*<>*/return/*<>*/h(d[v],bS,af,a)/*<>*/},aw,ax,ay,az,ag,function(a){/*<>*/return/*<>*/h(d[v],bV,ag,a)/*<>*/},aB,aC,aD,aE,aF,function(a){/*<>*/return/*<>*/h(d[v],ch,aF,a)/*<>*/},function(a){/*<>*/var/*<>*/b=[0,cj,1,/*<>*/e(t[37],Y[171]),0],/*<>*/c=[0,cl,1,aB,[0,ck,1,/*<>*/e(t[37],aw),b]];/*<>*/return/*<>*/aH(ao[3],ci,[0,cm,1,j[2],c],function(a){/*<>*/return a!==D?a!==y?a!==B?a!==A?-1:1:2:0:3/*<>*/},0,function(a){/*<>*/var +b=a[2],c=b[2];/*<>*/return[0,a[1],b[1],c[1],c[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[3],d=a[2],f=a[1],/*<>*/g=[0,[1,[0,cn,[0,/*<>*/c(t[36],Y[172],a[4]),0]]],0],/*<>*/h=[0,[1,[0,co,[0,/*<>*/c(t[36],ax,b),0]]],g],/*<>*/i=[0,[1,[0,cp,[0,/*<>*/e(aC,d),0]]],h];/*<>*/return[1,[0,[1,[0,cq,[0,/*<>*/e(j[1],f),0]]],i]]/*<>*/},function(a){/*<>*/if(typeof +a!=="number"&&ab===a[1]){/*<>*/var/*<>*/g=[0,0],/*<>*/i=[0,0],/*<>*/k=[0,0],/*<>*/l=[0,0],/*<>*/d=[0,0],/*<>*/m=[0,0];/*<>*/(function(a){/*<>*/var h=a;/*<>*/for(;;){if(!h)/*<>*/return;var -m=h[1],l=m[2],f=m[1],o=h[2];if(f!==C)if(f!==A)if(f!==z){/*<>*/if(/*<>*/e(b[2],n[22]))k[1]=[0,f,/*<>*/e(b[2],k)]}else if(/*<>*/e(b[2],g))d[1]=[0,f,/*<>*/e(b[2],d)];else -g[1]=[0,/*<>*/e(aC,l)];else if(/*<>*/e(b[2],i))d[1]=[0,f,/*<>*/e(b[2],d)];else -i[1]=[0,c(n[45][29],ax,l)];else if(/*<>*/e(b[2],j))d[1]=[0,f,/*<>*/e(b[2],d)];else -j[1]=[0,c(n[45][29],S[173],l)];h=o}/*<>*/}(a[2]));if(/*<>*/e(b[2],d)){/*<>*/ /*<>*/var -p=/*<>*/e(b[2],d);/*<>*/return/*<>*/h(f[10],_,p,a)}if(/*<>*/e(b[2],k)){/*<>*/ /*<>*/var -q=/*<>*/e(b[2],k);/*<>*/return/*<>*/h(f[11],_,q,a)}/*<>*/var/*<>*/l=/*<>*/e(b[2],g),/*<>*/m=/*<>*/e(b[2],i),/*<>*/o=/*<>*/e(b[2],j);if(l&&m&&o)/*<>*/return[0,l[1],m[1],o[1]];/*<>*/var/*<>*/r=[0,[0,0===/*<>*/e(b[2],j)?1:0,cl],0],/*<>*/s=[0,[0,0===/*<>*/e(b[2],i)?1:0,cm],r],/*<>*/t=[0,[0,0===/*<>*/e(b[2],g)?1:0,cn],s];/*<>*/return/*<>*/h(f[13],_,a,t)}/*<>*/return/*<>*/c(f[14],_,a)/*<>*/},function(a){/*<>*/var -b=a[2],d=a[1],f=[0,[0,co,c(n[45][13],S[174],a[3])],0],g=[0,[0,cp,c(n[45][13],ay,b)],f];/*<>*/return[0,$,[0,[0,cq,e(aD,d)],g]]/*<>*/},function(f){function -d(a){/*<>*/ /*<>*/var -b=/*<>*/e(f[3],a);/*<>*/return/*<>*/e(T[53],b)/*<>*/}function -g(a){/*<>*/ /*<>*/var -b=/*<>*/e(T[43],a);/*<>*/return/*<>*/e(f[4],b)/*<>*/}/*<>*/ /*<>*/var +p=h[1],n=p[2],f=p[1],q=h[2];if(f!==D)if(f!==y)if(f!==B)if(f!==A){/*<>*/if(/*<>*/e(b[2],o[22]))m[1]=[0,f,/*<>*/e(b[2],m)]}else if(/*<>*/e(b[2],i))d[1]=[0,f,/*<>*/e(b[2],d)];else +i[1]=[0,/*<>*/e(aD,n)];else if(/*<>*/e(b[2],k))d[1]=[0,f,/*<>*/e(b[2],d)];else +k[1]=[0,c(o[45][29],ay,n)];else if(/*<>*/e(b[2],g))d[1]=[0,f,/*<>*/e(b[2],d)];else +g[1]=[0,/*<>*/e(j[4],n)];else if(/*<>*/e(b[2],l))d[1]=[0,f,/*<>*/e(b[2],d)];else +l[1]=[0,c(o[45][29],Y[173],n)];h=q}/*<>*/}(a[2]));if(/*<>*/e(b[2],d)){/*<>*/ /*<>*/var +s=/*<>*/e(b[2],d);/*<>*/return/*<>*/h(f[10],$,s,a)}if(/*<>*/e(b[2],m)){/*<>*/ /*<>*/var +t=/*<>*/e(b[2],m);/*<>*/return/*<>*/h(f[11],$,t,a)}/*<>*/var/*<>*/n=/*<>*/e(b[2],g),/*<>*/p=/*<>*/e(b[2],i),/*<>*/q=/*<>*/e(b[2],k),/*<>*/r=/*<>*/e(b[2],l);if(n&&p&&q&&r)/*<>*/return[0,n[1],p[1],q[1],r[1]];/*<>*/var/*<>*/u=[0,[0,0===/*<>*/e(b[2],l)?1:0,cr],0],/*<>*/v=[0,[0,0===/*<>*/e(b[2],k)?1:0,cs],u],/*<>*/w=[0,[0,0===/*<>*/e(b[2],i)?1:0,ct],v],/*<>*/x=[0,[0,0===/*<>*/e(b[2],g)?1:0,cu],w];/*<>*/return/*<>*/h(f[13],$,a,x)}/*<>*/return/*<>*/c(f[14],$,a)/*<>*/},function(a){/*<>*/var +b=a[3],d=a[2],f=a[1],g=[0,[0,cv,c(o[45][13],Y[174],a[4])],0],h=[0,[0,cw,c(o[45][13],az,b)],g],i=[0,[0,cx,e(aE,d)],h];/*<>*/return[0,ab,[0,[0,cy,e(j[3],f)],i]]/*<>*/},function(a){/*<>*/return[0,/*<>*/e(H[30],a),a,0,0]/*<>*/},function(f){function +d(a){/*<>*/ /*<>*/var +b=/*<>*/e(f[3],a);/*<>*/return/*<>*/e(Z[53],b)/*<>*/}function +g(a){/*<>*/ /*<>*/var +b=/*<>*/e(Z[43],a);/*<>*/return/*<>*/e(f[4],b)/*<>*/}/*<>*/ /*<>*/var a=d(f[13]);function -h(a){/*<>*/ /*<>*/var -b=/*<>*/e(f[9],a);/*<>*/return/*<>*/e(T[53],b)/*<>*/}function -i(a){/*<>*/ /*<>*/var -b=/*<>*/e(T[43],a);/*<>*/return/*<>*/e(f[10],b)/*<>*/}/*<>*/return[0,a,f[14],function(a,b,c,d){/*<>*/ /*<>*/var -i=g(a);/*<>*/return/*<>*/cr(f[15],i,b,function(a){/*<>*/return/*<>*/e(c,h(a))/*<>*/},d)/*<>*/},function(a){/*<>*/var/*<>*/b=/*<>*/e(T[43],a),/*<>*/c=/*<>*/e(f[4],b);/*<>*/return/*<>*/e(f[16],c)/*<>*/},function(a,b){/*<>*/var/*<>*/e=i(b),/*<>*/h=g(a);/*<>*/return d(/*<>*/c(f[17],h,e))/*<>*/},f[18]]}],"Haz3lcore__ProjectorBase");return/*<>*/}(globalThis)); +h(a){/*<>*/ /*<>*/var +b=/*<>*/e(f[9],a);/*<>*/return/*<>*/e(Z[53],b)/*<>*/}function +i(a){/*<>*/ /*<>*/var +b=/*<>*/e(Z[43],a);/*<>*/return/*<>*/e(f[10],b)/*<>*/}/*<>*/return[0,a,f[14],function(a,b,c,d){/*<>*/ /*<>*/var +i=g(a);/*<>*/return/*<>*/cz(f[15],i,b,function(a){/*<>*/return/*<>*/e(c,h(a))/*<>*/},d)/*<>*/},function(a){/*<>*/var/*<>*/b=/*<>*/e(Z[43],a),/*<>*/c=/*<>*/e(f[4],b);/*<>*/return/*<>*/e(f[16],c)/*<>*/},function(a,b){/*<>*/var/*<>*/e=i(b),/*<>*/h=g(a);/*<>*/return d(/*<>*/c(f[17],h,e))/*<>*/},f[18]]}],"Haz3lcore__ProjectorBase");return/*<>*/}(globalThis)); -//# 5669 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5671 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var u="@ ",M="<2>",L=" =",K="src/haz3lcore/zipper/Relatives.re.t",I=963043957,J="",H="@]",G="@[%s =@ ",o="ancestors",n=139,m="siblings",l=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -436558,7 +436560,7 @@ l=/*<>*/c(f[15],a[1][2]);if(!l)/*<>*/n=g([0,[0,j[1],i[3]],a[2]]),/*<>*/y=n[2],z=n[1];/*<>*/return[0,[0,w,v],[0,[0,/*<>*/d(s[24],x,u),z],y]]}/*<>*/var k=b[2][1],A=k[2],B=k[1],/*<>*/o=g([0,[0,a[1][1],k[3]],a[2]]),q=o[1],C=o[2],E=q[2],G=q[1],/*<>*/H=/*<>*/c(F[43],A),/*<>*/I=[0,B,[0,[0,/*<>*/c(F[37],H),E],0]];/*<>*/return[0,[0,G,/*<>*/c(f[10],I)],C]/*<>*/}/*<>*/return g(C(E(a)))/*<>*/}],"Haz3lcore__Relatives");return/*<>*/}(globalThis)); -//# 5739 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5741 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var Z="%d",Y="src/haz3lcore/zipper/ZipperBase.re.t",p="selection",i="@ ",L="<2>",w="Outer",E=" =",X="%a",W="outer",V="inner",o="relatives",U="@,",n="projectors",m="backpack",T="src/haz3lcore/zipper/ZipperBase.re.Caret.t",S=963043957,l="caret",D="",v="Inner",K=";@ ",C="@]",B="@[%s =@ ",R=143,g=139,I=848054398,J=-976970511,k=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -436614,11 +436616,11 @@ b=a[4],d=a[3],e=a[2],f=a[1],g=[0,[0,aX,c(G[13][6],a[5])],0],h=[0,[0,aY,c(t[6],b) c=b[1];/*<>*/return[0,[0,c[1],a,c[3]],b[2],b[3],b[4],b[5]]/*<>*/},function(a){/*<>*/return/*<>*/d(u[13],[0,a[1][2]],a[3])/*<>*/},function(a){/*<>*/var b=a[3][1],c=b[2],e=b[1],f=a[1],g=f[2];/*<>*/return f[1]?[0,/*<>*/d(Q[37],e,g),c]:[0,e,/*<>*/d(Q[37],g,c)]/*<>*/}],"Haz3lcore__ZipperBase");return/*<>*/}(globalThis)); -//# 5795 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5797 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var b=a.jsoo_runtime;b.caml_register_global(0,[0,[0,0]],"Haz3lcore__Os");return/*<>*/}(globalThis)); -//# 5800 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5802 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var am="%S",Y="Down",O="key",K="sys",u="<2>",j="@ ",X="KeyDown",N="shift",S="U",M="meta",t=" =",al="@])",J="ctrl",H="%a",R="D",p="",an=963043957,W="Up",G=";@ ",s="@]",V="Mac",v="@[%s =@ ",F=143,g=139,T="KeyUp",U="PC",k=-976970511,i=848054398,L="alt",m=a.jsoo_runtime,E=m.caml_get_public_method;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):m.caml_call_gen(a,[b])}/*<>*/function @@ -436699,7 +436701,7 @@ u=/*<>*/d(b[2],e);/*<>*/re v=/*<>*/d(b[2],n);/*<>*/return/*<>*/h(f[11],I,v,a)}/*<>*/var/*<>*/o=/*<>*/d(b[2],g),/*<>*/p=/*<>*/d(b[2],i),/*<>*/q=/*<>*/d(b[2],j),/*<>*/r=/*<>*/d(b[2],k),/*<>*/s=/*<>*/d(b[2],l),/*<>*/t=/*<>*/d(b[2],m);if(o&&p&&q&&r&&s&&t)/*<>*/return[0,o[1],p[1],q[1],r[1],s[1],t[1]];/*<>*/var/*<>*/w=[0,[0,0===/*<>*/d(b[2],m)?1:0,ba],0],/*<>*/y=[0,[0,0===/*<>*/d(b[2],l)?1:0,bb],w],/*<>*/z=[0,[0,0===/*<>*/d(b[2],k)?1:0,bc],y],/*<>*/B=[0,[0,0===/*<>*/d(b[2],j)?1:0,bd],z],/*<>*/C=[0,[0,0===/*<>*/d(b[2],i)?1:0,be],B],/*<>*/D=[0,[0,0===/*<>*/d(b[2],g)?1:0,bf],C];/*<>*/return/*<>*/h(f[13],I,a,D)}/*<>*/return/*<>*/c(f[14],I,a)},function(a){/*<>*/var b=a[5],c=a[4],d=a[3],e=a[2],f=a[1],g=[0,[0,bg,B(a[6])],0],h=[0,[0,bh,B(b)],g],i=[0,[0,bi,B(c)],h],j=[0,[0,bj,B(d)],i],k=[0,[0,bk,ab(e)],j];/*<>*/return[0,an,[0,[0,bl,$(f)],k]]/*<>*/},ad,ae,af,ag,ah,ai,C,function(a,b){/*<>*/var/*<>*/c=C(ag(b)),/*<>*/d=C(ae(b)),/*<>*/e=C(ah(b)),/*<>*/f=C(af(b)),g=bo[1][1]?0:1;/*<>*/return[0,ai(a,b),g,f,e,d,c]/*<>*/},D,aj,ak,function(a){/*<>*/var/*<>*/b=aj(a),/*<>*/d=ak(a),/*<>*/e=/*<>*/c(l[28],d,b);/*<>*/return/*<>*/c(l[28],bx,e)/*<>*/}],"Haz3lcore__Key");return/*<>*/}(globalThis)); -//# 5882 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5884 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var v="%a",u=143,t="()",g=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -436714,12 +436716,12 @@ b=k(a);/*<>*/return/*<>*/var/*<>*/c=k(a),/*<>*/b=/*<>*/e(/*<>*/e(z[9],f[31]),c);return b?b[1]:/*<>*/e(f[2],A)/*<>*/}function l(a){/*<>*/ /*<>*/var b=6;/*<>*/return function(a){/*<>*/return o(b,a)}(/*<>*/e(f[30],a))/*<>*/}function -q(a,g,c,d){/*<>*/var/*<>*/b=0,j=i(g[1])?[0,m[1][14],0]:0,k=[0,/*<>*/e(m[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,l(1-i(g[1]))])/*<>*/}),0],/*<>*/o=[0,/*<>*/h(m[1][1],C,B),k],/*<>*/p=[0,/*<>*/h(f[37],o,j)];/*<>*/return/*<>*/n(D[27],0,p,b)/*<>*/}/*<>*/function +q(a,g,c,d){/*<>*/var/*<>*/b=0,j=i(g[2])?[0,m[1][14],0]:0,k=[0,/*<>*/e(m[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,l(1-i(g[2]))])/*<>*/}),0],/*<>*/o=[0,/*<>*/h(m[1][1],C,B),k],/*<>*/p=[0,/*<>*/h(f[37],o,j)];/*<>*/return/*<>*/n(D[27],0,p,b)/*<>*/}/*<>*/function r(a,b){/*<>*/return/*<>*/h(c[13],a,F)/*<>*/}/*<>*/function s(a,b){/*<>*/return/*<>*/h(c[13],a,H)/*<>*/}g.caml_register_global(20,[0,k,o,p,i,l,function(a){/*<>*/return l(1-i(a))/*<>*/},q,function(a,b,c){/*<>*/var d=c[1];if(0===d[0]&&d[1]==="Escape")/*<>*/return E;/*<>*/return 0/*<>*/},[0,r,function(a){/*<>*/return/*<>*/n(c[u],G,r,a)/*<>*/},d[3],d[4],j[45][1],j[45][17],s,function(a){/*<>*/return/*<>*/n(c[u],I,s,a)/*<>*/},d[3],d[4],j[45][1],j[45][17],0,function(a){/*<>*/return 0!==p(a)?1:0/*<>*/},q,function(a,b){/*<>*/return J/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__CheckboxCore");return/*<>*/}(globalThis)); -//# 5903 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5905 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var Y="src/haz3lcore/prog/CoreSettings.re.t",h="@ ",L="<2>",F="show_hidden_steps",G="show_casts",X=125,n=" =",W="%a",V="{ ",E="elaborate",C="show_fn_bodies",D="statics",B="assist",A="show_fixpoints",K=963043957,o="%B",m="",z="show_lookup_steps",y="dynamics",p=";@ ",U="@[<2>{ ",x="evaluation",T="src/haz3lcore/prog/CoreSettings.re.Evaluation.t",l="@]",v="show_settings",w="show_stepper_filters",S="@ }@]",k="@[%s =@ ",u="show_case_clauses",R=143,t="stepper_history",e=139,s=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -436774,7 +436776,7 @@ u=/*<>*/c(b[2],d);/*<>*/c(b[2],n);/*<>*/return/*<>*/j(q[11],J,v,a)}/*<>*/var/*<>*/e=/*<>*/c(b[2],h),/*<>*/o=/*<>*/c(b[2],i),/*<>*/p=/*<>*/c(b[2],k),/*<>*/s=/*<>*/c(b[2],l),/*<>*/t=/*<>*/c(b[2],m);if(e&&o&&p&&s&&t)/*<>*/return[0,e[1],o[1],p[1],s[1],t[1]];/*<>*/var/*<>*/w=[0,[0,0===/*<>*/c(b[2],m)?1:0,b3],0],/*<>*/z=[0,[0,0===/*<>*/c(b[2],l)?1:0,b4],w],/*<>*/A=[0,[0,0===/*<>*/c(b[2],k)?1:0,b5],z],/*<>*/C=[0,[0,0===/*<>*/c(b[2],i)?1:0,b6],A],/*<>*/F=[0,[0,0===/*<>*/c(b[2],h)?1:0,b7],C];/*<>*/return/*<>*/j(q[13],J,a,F)}/*<>*/return/*<>*/f(q[14],J,a)},function(a){/*<>*/var b=a[4],d=a[3],e=a[2],f=a[1],h=[0,[0,b8,c(r[6],a[5])],0],i=[0,[0,b9,c(g[45][2],b)],h],j=[0,[0,b_,c(g[45][2],d)],i],k=[0,[0,b$,c(g[45][2],e)],j];/*<>*/return[0,K,[0,[0,ca,c(g[45][2],f)],k]]/*<>*/},[0,0,0,0,0,r[7]],[0,1,1,1,1,r[7]]],"Haz3lcore__CoreSettings");return/*<>*/}(globalThis)); -//# 5959 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5961 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="%a",n=143,m="()",e=a.jsoo_runtime;/*<>*/function h(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -436784,13 +436786,13 @@ b=e.caml_get_global_data(),k=b.Virtual_dom__Node,c=b.Stdlib__Format,d=b.Sexplib_ i(a,b){/*<>*/return/*<>*/l(c[13],a,p)/*<>*/}/*<>*/function j(a,b){/*<>*/return/*<>*/l(c[13],a,r)/*<>*/}e.caml_register_global(11,[0,[0,i,function(a){/*<>*/return/*<>*/g(c[n],q,i,a)/*<>*/},d[3],d[4],f[45][1],f[45][17],j,function(a){/*<>*/return/*<>*/g(c[n],s,j,a)/*<>*/},d[3],d[4],f[45][1],f[45][17],0,function(a){/*<>*/return 1/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/e=[0,/*<>*/h(k[5],u),0],/*<>*/f=[0,[0,/*<>*/h(v[1][57],function(a){/*<>*/return/*<>*/h(d,0)/*<>*/}),0]];/*<>*/return/*<>*/g(k[14],0,f,e)/*<>*/},function(a,b){/*<>*/return t/*<>*/},function(a,b){/*<>*/return 0/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__FoldCore");return/*<>*/}(globalThis)); -//# 5970 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5972 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,d=c.caml_compare;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var b=c.caml_get_global_data().Stdlib__Set,f=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),g=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),h=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]);c.caml_register_global(1,[0,f,g,h,e(b[1],[0,function(a,b){/*<>*/return d(a,b)}])],"Haz3lcore__Sets");return/*<>*/}(globalThis)); -//# 5977 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5979 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,H=i.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -436838,7 +436840,7 @@ a!=="number")switch(a[0]){case 5:/*<>*/return 1}/*<>*/return 0/*<>*/},b),v=m[1];if(!m[2])/*<>*/return s(v);b=/*<>*/c(h[37],m[2],v)}}/*<>*/}i.caml_register_global(9,[0,q,r,s,j,function(a,b){/*<>*/var/*<>*/c=/*<>*/e(g[9],b),/*<>*/d=/*<>*/e(g[7],c);/*<>*/return j([0,[6,/*<>*/e(g[8],a),d],0])/*<>*/},function(a){/*<>*/ /*<>*/var b=/*<>*/e(g[8],a);/*<>*/return j([0,/*<>*/e(g[7],b),0])/*<>*/}],"Haz3lcore__Incon");return/*<>*/}(globalThis)); -//# 6026 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6028 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var k="Self",L="src/haz3lcore/zipper/projectors/InfoCore.re.M.action",M="src/haz3lcore/zipper/projectors/InfoCore.re.M.model",K="%a",J="self",j="ToggleDisplay",I="toggleDisplay",i="Expected",H="expected",G=143,o=-976970511,h=848054398,g=a.jsoo_runtime;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -436884,97 +436886,96 @@ b=a[2];if(!b)/*<>*/return/*<>*/c(e[3],q,a):0}else if(h===f)/*<>*/return/*<>*/c(e[6],q,a)}}/*<>*/return/*<>*/c(e[8],q,a)/*<>*/},0,function(a){/*<>*/var -b=/*<>*/f(D[31],a)[1];if(2!==b&&6>b)/*<>*/return/*<>*/f(D[41],a)?1:0;/*<>*/return 1/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/e=E(a,b[3]),/*<>*/g=[0,/*<>*/f(F[5],e),0],/*<>*/h=[0,[0,/*<>*/f(ab[1][67],function(a){/*<>*/return/*<>*/f(c,0)/*<>*/}),0]];/*<>*/return/*<>*/u(F[14],0,h,g)/*<>*/},function(a,b){/*<>*/return[0,/*<>*/g.caml_ml_string_length(E(a,b[3]))-2|0]/*<>*/},function(a,b){/*<>*/return a?0:1/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__InfoCore");return/*<>*/}(globalThis)); +b=/*<>*/f(D[31],a)[1];if(2!==b&&6>b)/*<>*/return/*<>*/f(D[41],a)?1:0;/*<>*/return 1/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/e=E(a,b[4]),/*<>*/g=[0,/*<>*/f(F[5],e),0],/*<>*/h=[0,[0,/*<>*/f(ab[1][67],function(a){/*<>*/return/*<>*/f(c,0)/*<>*/}),0]];/*<>*/return/*<>*/u(F[14],0,h,g)/*<>*/},function(a,b){/*<>*/return[0,/*<>*/g.caml_ml_string_length(E(a,b[4]))-2|0]/*<>*/},function(a,b){/*<>*/return a?0:1/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__InfoCore");return/*<>*/}(globalThis)); -//# 6075 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6077 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -D="Last",ax="%d",az=-445061397,p="@ ",u="rows",Q="<2>",B="Middle",aF=125,aG="src/haz3lcore/JsUtil.re.TextArea.rel",M=" =",aE="middle",ae=76111832,af="%a",aw="{ ",t="col",aL="last",v="row",ac=448401680,aK=834174833,av="src/haz3lcore/JsUtil.re.TextArea.rel_pos",au="src/haz3lcore/JsUtil.re.TextArea.pos",E="src/haz3lcore/JsUtil.re",at=259676278,q="",R=963043957,aJ="selectAll",ay="@[<2>{ ",aD=";@ ",aI="first",P="@]",O="@[%s =@ ",aB=-471638958,aC=718768073,aH="@ }@]",ab=143,N=-976970511,H=848054398,ad=556247482,j=139,C="First",aA=5793429,s="cols",m=a.jsoo_runtime,e=m.caml_get_public_method,o=m.caml_jsstring_of_string,r=m.caml_maybe_attach_backtrace,aa=m.caml_ml_string_length,G=m.caml_string_of_jsstring,b1=m.caml_wrap_exception;/*<>*/function +E="Last",aw="%d",ay=-445061397,p="@ ",u="rows",Q="<2>",C="Middle",aE=125,aF="src/haz3lcore/JsUtil.re.TextArea.rel",M=" =",aD="middle",ae=76111832,af="%a",av="{ ",t="col",aK="last",v="row",ac=448401680,aJ=834174833,au="src/haz3lcore/JsUtil.re.TextArea.rel_pos",at="src/haz3lcore/JsUtil.re.TextArea.pos",F="src/haz3lcore/JsUtil.re",as=259676278,q="",R=963043957,aI="selectAll",ax="@[<2>{ ",aC=";@ ",aH="first",P="@]",O="@[%s =@ ",aA=-471638958,aB=718768073,aG="@ }@]",ab=143,N=-976970511,H=848054398,ad=556247482,j=139,D="First",az=5793429,s="cols",m=a.jsoo_runtime,e=m.caml_get_public_method,o=m.caml_jsstring_of_string,r=m.caml_maybe_attach_backtrace,aa=m.caml_ml_string_length,G=m.caml_string_of_jsstring,b0=m.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):m.caml_call_gen(a,[b])}/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):m.caml_call_gen(a,[b,c,d])}/*<>*/function -b0(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):m.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function -as(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):m.caml_call_gen(a,[b,c,d,e,f,g])}var -b2=undefined,g=m.caml_get_global_data(),U="clipboard-shim",J=au,y=aG,A=aG,L=av,ar=g.Stdlib__List,ap=g.Re__Str,n=g.Stdlib,h=g.Js_of_ocaml__Js,i=g.Js_of_ocaml__Dom_html,f=g.Stdlib__Format,b=g.Ppx_yojson_conv_lib,x=g.Ppx_yojson_conv_lib__Yojson_conv,l=g.Ppx_yojson_conv_lib__Yojson_conv_error,an=g.Sexplib0__Sexp_conv_record,z=g.Sexplib0__Sexp_conv_error,I=g.Sexplib__Std,T=g.Stdlib__Option,w=g.Assert_failure,S=g.Js_of_ocaml__File,al=g.Virtual_dom__Vdom,bZ="\n",bY="TextArea.get",bF=[0,[18,[1,[0,[11,Q,0],Q]],[11,aw,0]],ay],bG=u,bH=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bI=[0,[17,0,0],P],bJ=[0,[12,59,[17,[0,p,1,0],0]],aD],bK=s,bL=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bM=[0,[17,0,0],P],bN=[0,[17,[0,p,1,0],[12,aF,[17,0,0]]],aH],bO=[0,[15,0],af],bW=s,bX=u,bU=s,bV=u,bS=[0,s],bT=[0,u],bQ=s,bR=u,bv=C,bw=B,bx=D,by=[0,[15,0],af],bC=[0,H,[0,[0,N,C],0]],bD=[0,H,[0,[0,N,B],0]],bE=[0,H,[0,[0,N,D],0]],bz=[0,C],bA=[0,B],bB=[0,D],ba=[0,[18,[1,[0,[11,Q,0],Q]],[11,aw,0]],ay],bb=v,bc=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bd=[0,[4,0,0,0,0],ax],be=[0,[17,0,0],P],bf=[0,[12,59,[17,[0,p,1,0],0]],aD],bg=t,bh=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bi=[0,[4,0,0,0,0],ax],bj=[0,[17,0,0],P],bk=[0,[17,[0,p,1,0],[12,aF,[17,0,0]]],aH],bl=[0,[15,0],af],bt=t,bu=v,br=t,bs=v,bp=[0,t],bq=[0,v],bn=t,bo=v,a8=q,a7="#",a5="caret",a6="main",a4="WARNING: caret not found",a0=q,aY=" site: ",aZ="WARNING: Failed to focus in update: ",aW=[0,E,101,56],aV=[0,E,93,31],aU=[0,E,90,58],aT=[0,E,83,56],aQ="application/json",aR=".json",aO="JsUtil.get_key",aN=[0,E,24,6],aM=[0,E,13,6],bm=au,bP=av,a_=g.Virtual_dom__Effect,a9=g.Js_of_ocaml__Url,aX=g.Js_of_ocaml__Firebug,aS=g.Js_of_ocaml__Dom,aP=g.Yojson__Safe,a2=g.Virtual_dom__Node;function -F(b){/*<>*/ /*<>*/var -a=function(a,b,c){/*<>*/return a.getElementById(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,-332188296,6),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/r([0,w,aM],1)/*<>*/})/*<>*/}function -ag(b){/*<>*/ /*<>*/var -a=function(a,b,c){/*<>*/return a.querySelector(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,244826695,7),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/r([0,w,aN],1)/*<>*/})/*<>*/}function -ah(a){/*<>*/return function(a,b){/*<>*/return new +bZ(a,b,c,d,e,f){return(a.l>=0?a.l:a.l=a.length)==5?a(b,c,d,e,f):m.caml_call_gen(a,[b,c,d,e,f])}/*<>*/function +ar(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):m.caml_call_gen(a,[b,c,d,e,f,g])}var +b1=undefined,g=m.caml_get_global_data(),U="clipboard-shim",J=at,z=aF,B=aF,L=au,aq=g.Stdlib__List,ao=g.Re__Str,n=g.Stdlib,h=g.Js_of_ocaml__Js,i=g.Js_of_ocaml__Dom_html,f=g.Stdlib__Format,b=g.Ppx_yojson_conv_lib,y=g.Ppx_yojson_conv_lib__Yojson_conv,l=g.Ppx_yojson_conv_lib__Yojson_conv_error,am=g.Sexplib0__Sexp_conv_record,A=g.Sexplib0__Sexp_conv_error,I=g.Sexplib__Std,T=g.Stdlib__Option,x=g.Assert_failure,S=g.Js_of_ocaml__File,ak=g.Virtual_dom__Vdom,bY="\n",bX="TextArea.get",bE=[0,[18,[1,[0,[11,Q,0],Q]],[11,av,0]],ax],bF=u,bG=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bH=[0,[17,0,0],P],bI=[0,[12,59,[17,[0,p,1,0],0]],aC],bJ=s,bK=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bL=[0,[17,0,0],P],bM=[0,[17,[0,p,1,0],[12,aE,[17,0,0]]],aG],bN=[0,[15,0],af],bV=s,bW=u,bT=s,bU=u,bR=[0,s],bS=[0,u],bP=s,bQ=u,bu=D,bv=C,bw=E,bx=[0,[15,0],af],bB=[0,H,[0,[0,N,D],0]],bC=[0,H,[0,[0,N,C],0]],bD=[0,H,[0,[0,N,E],0]],by=[0,D],bz=[0,C],bA=[0,E],a$=[0,[18,[1,[0,[11,Q,0],Q]],[11,av,0]],ax],ba=v,bb=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bc=[0,[4,0,0,0,0],aw],bd=[0,[17,0,0],P],be=[0,[12,59,[17,[0,p,1,0],0]],aC],bf=t,bg=[0,[18,[1,[0,0,q]],[2,0,[11,M,[17,[0,p,1,0],0]]]],O],bh=[0,[4,0,0,0,0],aw],bi=[0,[17,0,0],P],bj=[0,[17,[0,p,1,0],[12,aE,[17,0,0]]],aG],bk=[0,[15,0],af],bs=t,bt=v,bq=t,br=v,bo=[0,t],bp=[0,v],bm=t,bn=v,a7=q,a6="#",a4="caret",a5="main",a3="WARNING: caret not found",aZ=q,aX=" site: ",aY="WARNING: Failed to focus in update: ",aV=[0,F,101,56],aU=[0,F,93,31],aT=[0,F,90,58],aS=[0,F,83,56],aP="application/json",aQ=".json",aN="JsUtil.get_key",aM=[0,F,24,6],aL=[0,F,13,6],bl=at,bO=au,a9=g.Virtual_dom__Effect,a8=g.Js_of_ocaml__Url,aW=g.Js_of_ocaml__Firebug,aR=g.Js_of_ocaml__Dom,aO=g.Yojson__Safe,a1=g.Virtual_dom__Node;function +w(b){/*<>*/ /*<>*/var +a=function(a,b,c){/*<>*/return a.getElementById(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,-332188296,6),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/r([0,x,aL],1)/*<>*/})/*<>*/}function +ag(a){/*<>*/return function(a,b){/*<>*/return new a}(h[26],0)/*<>*/}function -ai(a){/*<>*/return function(a,b){/*<>*/return a.detail}(a,function(a){/*<>*/return/*<>*/d(e(a,-266378607,14),a)/*<>*/})/*<>*/}function -aj(a,b,c){/*<>*/var/*<>*/g=/*<>*/k(S[1],[0,b],0,c),/*<>*/j=function(a,b,c){/*<>*/return a.createObjectURL(b)}(function(a,b){/*<>*/return a.URL}(i[8],function(a){/*<>*/return/*<>*/d(e(a,1057754192,16),a)/*<>*/}),g,function(a){/*<>*/return/*<>*/d(e(a,-461864108,15),a)/*<>*/}),/*<>*/f=/*<>*/d(i[67],i[2]);/*<>*/(function(a,b,c){/*<>*/a.href=b;return}(f,j,function(a){/*<>*/return/*<>*/d(e(a,-988476949,17),a)/*<>*/}));/*<>*/(function(a,b,c,d){/*<>*/a.setAttribute(b,c);return}(f,"download",/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,524300314,18),a)/*<>*/}));/*<>*/(function(a,b,c){/*<>*/a.onclick=b;return}(f,/*<>*/d(i[10],function(a){/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-881939767,19),a)/*<>*/}));return function(a,b){/*<>*/return a.click()}(f,function(a){/*<>*/return/*<>*/d(e(a,-933331896,20),a)/*<>*/})/*<>*/}function -ak(a){/*<>*/return function(a,b){/*<>*/return a.focus()}(F(U),function(a){/*<>*/return/*<>*/d(e(a,ae,33),a)/*<>*/})/*<>*/}/*<>*/var/*<>*/a1=[0,[0,/*<>*/d(al[1][23],U),0]],/*<>*/a3=/*<>*/k(a2[29],0,a1,0);/*<>*/function -am(a,b){/*<>*/ /*<>*/c(f[j],a,ba);/*<>*/ /*<>*/k(f[j],a,bc,bb);var -e=b[1];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bd),e);/*<>*/ /*<>*/c(f[j],a,be);/*<>*/ /*<>*/c(f[j],a,bf);/*<>*/ /*<>*/k(f[j],a,bh,bg);var -g=b[2];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bi),g);/*<>*/ /*<>*/c(f[j],a,bj);/*<>*/return/*<>*/c(f[j],a,bk)/*<>*/}/*<>*/function +ah(a){/*<>*/return function(a,b){/*<>*/return a.detail}(a,function(a){/*<>*/return/*<>*/d(e(a,-266378607,14),a)/*<>*/})/*<>*/}function +ai(a,b,c){/*<>*/var/*<>*/g=/*<>*/k(S[1],[0,b],0,c),/*<>*/j=function(a,b,c){/*<>*/return a.createObjectURL(b)}(function(a,b){/*<>*/return a.URL}(i[8],function(a){/*<>*/return/*<>*/d(e(a,1057754192,16),a)/*<>*/}),g,function(a){/*<>*/return/*<>*/d(e(a,-461864108,15),a)/*<>*/}),/*<>*/f=/*<>*/d(i[67],i[2]);/*<>*/(function(a,b,c){/*<>*/a.href=b;return}(f,j,function(a){/*<>*/return/*<>*/d(e(a,-988476949,17),a)/*<>*/}));/*<>*/(function(a,b,c,d){/*<>*/a.setAttribute(b,c);return}(f,"download",/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,524300314,18),a)/*<>*/}));/*<>*/(function(a,b,c){/*<>*/a.onclick=b;return}(f,/*<>*/d(i[10],function(a){/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-881939767,19),a)/*<>*/}));return function(a,b){/*<>*/return a.click()}(f,function(a){/*<>*/return/*<>*/d(e(a,-933331896,20),a)/*<>*/})/*<>*/}function +aj(a){/*<>*/return function(a,b){/*<>*/return a.focus()}(w(U),function(a){/*<>*/return/*<>*/d(e(a,ae,33),a)/*<>*/})/*<>*/}/*<>*/var/*<>*/a0=[0,[0,/*<>*/d(ak[1][23],U),0]],/*<>*/a2=/*<>*/k(a1[29],0,a0,0);/*<>*/function +al(a,b){/*<>*/ /*<>*/c(f[j],a,a$);/*<>*/ /*<>*/k(f[j],a,bb,ba);var +e=b[1];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bc),e);/*<>*/ /*<>*/c(f[j],a,bd);/*<>*/ /*<>*/c(f[j],a,be);/*<>*/ /*<>*/k(f[j],a,bg,bf);var +g=b[2];/*<>*/ /*<>*/d(/*<>*/c(f[j],a,bh),g);/*<>*/ /*<>*/c(f[j],a,bi);/*<>*/return/*<>*/c(f[j],a,bj)/*<>*/}/*<>*/function K(a,b){/*<>*/switch(b){case -0:/*<>*/return/*<>*/c(f[13],a,bv);case -1:/*<>*/return/*<>*/c(f[13],a,bw);default:/*<>*/return/*<>*/c(f[13],a,bx)}/*<>*/}/*<>*/function +0:/*<>*/return/*<>*/c(f[13],a,bu);case +1:/*<>*/return/*<>*/c(f[13],a,bv);default:/*<>*/return/*<>*/c(f[13],a,bw)}/*<>*/}/*<>*/function V(a){/*<>*/a:{if(0===a[0]){var -b=a[1];b:if(b!==C){c:if(b!==D){if(b!==B){if(b===aI)break b;if(b===aL)break c;if(b!==aE)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var -e=a[1];if(!e)/*<>*/return/*<>*/c(z[7],y,a);var -f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(z[6],y,a);var -d=f[1];b:if(d!==C){c:if(d!==D){if(d!==B){if(d===aI)break b;if(d===aL)break c;if(d!==aE)break a}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[3],y,a)}/*<>*/return/*<>*/c(z[8],y,a)/*<>*/}function +b=a[1];b:if(b!==D){c:if(b!==E){if(b!==C){if(b===aH)break b;if(b===aK)break c;if(b!==aD)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var +e=a[1];if(!e)/*<>*/return/*<>*/c(A[7],z,a);var +f=e[1];if(0!==f[0])/*<>*/return/*<>*/c(A[6],z,a);var +d=f[1];b:if(d!==D){c:if(d!==E){if(d!==C){if(d===aH)break b;if(d===aK)break c;if(d!==aD)break a}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[3],z,a)}/*<>*/return/*<>*/c(A[8],z,a)/*<>*/}function W(a){/*<>*/switch(a){case -0:/*<>*/return bz;case -1:/*<>*/return bA;default:/*<>*/return bB}/*<>*/}/*<>*/function +0:/*<>*/return by;case +1:/*<>*/return bz;default:/*<>*/return bA}/*<>*/}/*<>*/function X(a){/*<>*/if(typeof a!=="number"&&H===a[1]){var -b=a[2];if(!b)/*<>*/return/*<>*/c(l[7],A,a);var +b=a[2];if(!b)/*<>*/return/*<>*/c(l[7],B,a);var d=b[1];if(typeof d!=="number"){var f=d[1];if(N===f){var -e=d[2];if(e===C)return b[2]?/*<>*/c(l[3],A,a):0;if(e===D)return b[2]?/*<>*/c(l[3],A,a):2;if(e===B)return b[2]?/*<>*/c(l[3],A,a):1}else if(H===f)/*<>*/return/*<>*/c(l[6],A,a)}}/*<>*/return/*<>*/c(l[8],A,a)/*<>*/}function +e=d[2];if(e===D)return b[2]?/*<>*/c(l[3],B,a):0;if(e===E)return b[2]?/*<>*/c(l[3],B,a):2;if(e===C)return b[2]?/*<>*/c(l[3],B,a):1}else if(H===f)/*<>*/return/*<>*/c(l[6],B,a)}}/*<>*/return/*<>*/c(l[8],B,a)/*<>*/}function Y(a){/*<>*/switch(a){case -0:/*<>*/return bC;case -1:/*<>*/return bD;default:/*<>*/return bE}/*<>*/}var +0:/*<>*/return bB;case +1:/*<>*/return bC;default:/*<>*/return bD}/*<>*/}var Z=[];function -ao(a,b){/*<>*/ /*<>*/c(f[j],a,bF);/*<>*/ /*<>*/k(f[j],a,bH,bG);var -e=b[1];/*<>*/ /*<>*/d(d(Z[2],a),e);/*<>*/ /*<>*/c(f[j],a,bI);/*<>*/ /*<>*/c(f[j],a,bJ);/*<>*/ /*<>*/k(f[j],a,bL,bK);var -g=b[2];/*<>*/ /*<>*/d(d(Z[1],a),g);/*<>*/ /*<>*/c(f[j],a,bM);/*<>*/return/*<>*/c(f[j],a,bN)/*<>*/}/*<>*/ /*<>*/var -a$=/*<>*/d(al[1][67],function(a){/*<>*/ /*<>*/d(i[117],a);/*<>*/return a_[1]/*<>*/});m.caml_update_dummy(Z,[0,K,K]);function -_(a){/*<>*/var/*<>*/b=/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aK,47),a)/*<>*/})),/*<>*/f=/*<>*/d(ap[1],bZ);/*<>*/return/*<>*/c(ap[21],f,b)/*<>*/}function -aq(a){/*<>*/ /*<>*/var +an(a,b){/*<>*/ /*<>*/c(f[j],a,bE);/*<>*/ /*<>*/k(f[j],a,bG,bF);var +e=b[1];/*<>*/ /*<>*/d(d(Z[2],a),e);/*<>*/ /*<>*/c(f[j],a,bH);/*<>*/ /*<>*/c(f[j],a,bI);/*<>*/ /*<>*/k(f[j],a,bK,bJ);var +g=b[2];/*<>*/ /*<>*/d(d(Z[1],a),g);/*<>*/ /*<>*/c(f[j],a,bL);/*<>*/return/*<>*/c(f[j],a,bM)/*<>*/}/*<>*/ /*<>*/var +a_=/*<>*/d(ak[1][67],function(a){/*<>*/ /*<>*/d(i[117],a);/*<>*/return a9[1]/*<>*/});m.caml_update_dummy(Z,[0,K,K]);function +_(a){/*<>*/var/*<>*/b=/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aJ,47),a)/*<>*/})),/*<>*/f=/*<>*/d(ao[1],bY);/*<>*/return/*<>*/c(ao[21],f,b)/*<>*/}function +ap(a){/*<>*/ /*<>*/var b=_(a);/*<>*/return function(a,b,c,d){/*<>*/var -g=a,f=b,e=c,h=d;/*<>*/for(;;){if(!g)/*<>*/return[0,e,h];/*<>*/var/*<>*/i=/*<>*/aa(g[1]),j=g[2];if(f<=i)/*<>*/return[0,e,f];g=j;f=(f-i|0)-1|0;e=e+1|0;h=0}/*<>*/}(b,function(a,b){/*<>*/return a.selectionStart}(a,function(a){/*<>*/return/*<>*/d(e(a,at,48),a)/*<>*/}),0,0)/*<>*/}function -$(a,b){/*<>*/return 0===a?0:a===b?2:1/*<>*/}m.caml_register_global(172,[0,F,ag,ah,function(a){/*<>*/return function(a,b){/*<>*/return a.valueOf()}(ah(0),function(a){/*<>*/return/*<>*/d(e(a,-261340440,8),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var -b=function(a,b){/*<>*/return a.key}(a,function(a){/*<>*/return/*<>*/d(e(a,5343647,9),a)/*<>*/});/*<>*/return/*<>*/G(/*<>*/c(h[6][8],b,function(a){/*<>*/return/*<>*/d(n[2],aO)/*<>*/}))/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.ctrlKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-511887948,10),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.shiftKey}(a,function(a){/*<>*/return/*<>*/d(e(a,429888061,11),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.altKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-993351690,12),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.metaKey}(a,function(a){/*<>*/return/*<>*/d(e(a,562118618,13),a)/*<>*/})|0/*<>*/},ai,function(a){/*<>*/return 2===ai(a)?1:0/*<>*/},aj,function(a,b){/*<>*/ /*<>*/var -d=/*<>*/b0(aP[5],0,0,0,0,b);/*<>*/return aj(/*<>*/c(n[28],a,aR),aQ,d)/*<>*/},function(a,b){/*<>*/ /*<>*/var +g=a,f=b,e=c,h=d;/*<>*/for(;;){if(!g)/*<>*/return[0,e,h];/*<>*/var/*<>*/i=/*<>*/aa(g[1]),j=g[2];if(f<=i)/*<>*/return[0,e,f];g=j;f=(f-i|0)-1|0;e=e+1|0;h=0}/*<>*/}(b,function(a,b){/*<>*/return a.selectionStart}(a,function(a){/*<>*/return/*<>*/d(e(a,as,48),a)/*<>*/}),0,0)/*<>*/}function +$(a,b){/*<>*/return 0===a?0:a===b?2:1/*<>*/}m.caml_register_global(172,[0,w,function(b){/*<>*/ /*<>*/var +a=function(a,b,c){/*<>*/return a.querySelector(b)}(i[2],/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,244826695,7),a)/*<>*/});/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/r([0,x,aM],1)/*<>*/})/*<>*/},ag,function(a){/*<>*/return function(a,b){/*<>*/return a.valueOf()}(ag(0),function(a){/*<>*/return/*<>*/d(e(a,-261340440,8),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var +b=function(a,b){/*<>*/return a.key}(a,function(a){/*<>*/return/*<>*/d(e(a,5343647,9),a)/*<>*/});/*<>*/return/*<>*/G(/*<>*/c(h[6][8],b,function(a){/*<>*/return/*<>*/d(n[2],aN)/*<>*/}))/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.ctrlKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-511887948,10),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.shiftKey}(a,function(a){/*<>*/return/*<>*/d(e(a,429888061,11),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.altKey}(a,function(a){/*<>*/return/*<>*/d(e(a,-993351690,12),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b){/*<>*/return a.metaKey}(a,function(a){/*<>*/return/*<>*/d(e(a,562118618,13),a)/*<>*/})|0/*<>*/},ah,function(a){/*<>*/return 2===ah(a)?1:0/*<>*/},ai,function(a,b){/*<>*/ /*<>*/var +d=/*<>*/bZ(aO[5],0,0,0,0,b);/*<>*/return ai(/*<>*/c(n[28],a,aQ),aP,d)/*<>*/},function(a,b){/*<>*/ /*<>*/var f=function(a,b){/*<>*/return new -a}(S[6],0);/*<>*/(function(a,b,c){/*<>*/a.readAsText(b);return}(f,a,function(a){/*<>*/return/*<>*/d(e(a,822186677,21),a)/*<>*/}));return function(a,b,c){/*<>*/return a.onload=b}(f,/*<>*/d(aS[10],function(a){/*<>*/var/*<>*/g=function(a,b){/*<>*/return a.result}(f,function(a){/*<>*/return/*<>*/d(e(a,142895325,23),a)/*<>*/}),/*<>*/i=/*<>*/d(S[3][4],g),/*<>*/j=/*<>*/d(h[5][10],i);/*<>*/ /*<>*/d(b,/*<>*/c(T[7],function(a){/*<>*/return G(a)},j));/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-9931067,22),a)/*<>*/})/*<>*/},function(a,b){/*<>*/ /*<>*/var -f=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,24),a)/*<>*/});return function(a,b,c,d){/*<>*/return a.setItem(b,c)}(/*<>*/c(h[6][8],f,function(a){/*<>*/throw/*<>*/r([0,w,aT],1)/*<>*/}),/*<>*/o(a),/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,189007317,25),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,26),a)/*<>*/}),/*<>*/f=function(a){/*<>*/ /*<>*/var -b=/*<>*/G(/*<>*/c(h[5][8],a,function(a){/*<>*/throw/*<>*/r([0,w,aV],1)/*<>*/}));/*<>*/return/*<>*/d(T[2],b)/*<>*/}(function(a,b,c){/*<>*/return a.getItem(b)}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/r([0,w,aU],1)/*<>*/}),/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,407008457,27),a)/*<>*/}));/*<>*/return f}catch(f){/*<>*/return 0}/*<>*/},function(a){/*<>*/ /*<>*/var -b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,28),a)/*<>*/});return function(a,b){/*<>*/return a.clear()}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/r([0,w,aW],1)/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-933531251,29),a)/*<>*/})/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.confirm(b)}(i[8],/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,272211200,30),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.log(b)}(aX[1],a,function(a){/*<>*/return/*<>*/d(e(a,5395588,31),a)/*<>*/})/*<>*/},function(a,b){/*<>*/var -g=a?a[1]:a0;/*<>*/try{/*<>*/ /*<>*/var -f=function(a,b){/*<>*/return a.focus()}(F(b),function(a){/*<>*/return/*<>*/d(e(a,ae,32),a)/*<>*/});/*<>*/return f}catch(f){/*<>*/var/*<>*/h=/*<>*/c(n[28],aY,g),/*<>*/i=/*<>*/c(n[28],b,h),/*<>*/j=/*<>*/c(n[28],aZ,i);/*<>*/return/*<>*/d(n[46],j)}/*<>*/},U,ak,a3,function(a){/*<>*/ak(0);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],aJ,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,34),a)/*<>*/}));/*<>*/ /*<>*/var -b=/*<>*/d(h[5][9],[0,/*<>*/o(a)]);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],"insertText",!!0,b,function(a){/*<>*/return/*<>*/d(e(a,ad,35),a)/*<>*/}));return function(a,b,c,d,e){/*<>*/return a.execCommand(b,c,d)}(i[2],aJ,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,36),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=F(a5),/*<>*/f=function(a,b){/*<>*/return a.getBoundingClientRect()}(F(a6),function(a){/*<>*/return/*<>*/d(e(a,aC,37),a)/*<>*/}),/*<>*/g=function(a,b){/*<>*/return a.getBoundingClientRect()}(b,function(a){/*<>*/return/*<>*/d(e(a,aC,38),a)/*<>*/}),/*<>*/k=function(a,b){/*<>*/return a.top}(f,function(a){/*<>*/return/*<>*/d(e(a,aA,39),a)/*<>*/});if(function(a,b){/*<>*/return a.top}(g,function(a){/*<>*/return/*<>*/d(e(a,aA,40),a)/*<>*/})>*/return a.scrollIntoView(b)}(b,h[7],function(a){/*<>*/return/*<>*/d(e(a,aB,41),a)/*<>*/});else/*<>*/var/*<>*/l=function(a,b){/*<>*/return a.bottom}(f,function(a){/*<>*/return/*<>*/d(e(a,az,42),a)/*<>*/}),/*<>*/j=l>*/return a.bottom}(g,function(a){/*<>*/return/*<>*/d(e(a,az,43),a)/*<>*/})?1:0,i=j?function(a,b,c){/*<>*/return a.scrollIntoView(b)}(b,h[8],function(a){/*<>*/return/*<>*/d(e(a,aB,44),a)/*<>*/}):j;/*<>*/return i}catch(f){var -c=b1(f);if(c[1]!==n[5])throw r(c,0);/*<>*/ /*<>*/d(n[46],a4);/*<>*/return 0}/*<>*/},[0,function(a){/*<>*/var -b=a!==q?/*<>*/c(n[28],a7,a):a8,/*<>*/f=function(a,b){/*<>*/return a.history}(i[8],function(a){/*<>*/return/*<>*/d(e(a,-465095340,45),a)/*<>*/}),/*<>*/g=/*<>*/d(h[2],/*<>*/o(b));return function(a,b,c,d,e){/*<>*/return a.pushState(b,c,d)}(f,h[1],q,g,function(a){/*<>*/return/*<>*/d(e(a,-936976937,46),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var -b=/*<>*/d(a9[10][9],0);/*<>*/return/*<>*/d(/*<>*/d(T[7],function(a){/*<>*/var -b=2===a[0]?a[1][4]:a[1][6];/*<>*/return b/*<>*/}),b)/*<>*/}],a$,[0,am,function(a){/*<>*/return/*<>*/k(f[ab],bl,am,a)/*<>*/},function(a){/*<>*/return/*<>*/as(an[3],bm,[0,bo,1,I[16],[0,bn,1,I[16],0]],function(a){/*<>*/return a!==t?a!==v?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bp,[0,/*<>*/d(I[15],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bq,[0,/*<>*/d(I[15],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +a}(S[6],0);/*<>*/(function(a,b,c){/*<>*/a.readAsText(b);return}(f,a,function(a){/*<>*/return/*<>*/d(e(a,822186677,21),a)/*<>*/}));return function(a,b,c){/*<>*/return a.onload=b}(f,/*<>*/d(aR[10],function(a){/*<>*/var/*<>*/g=function(a,b){/*<>*/return a.result}(f,function(a){/*<>*/return/*<>*/d(e(a,142895325,23),a)/*<>*/}),/*<>*/i=/*<>*/d(S[3][4],g),/*<>*/j=/*<>*/d(h[5][10],i);/*<>*/ /*<>*/d(b,/*<>*/c(T[7],function(a){/*<>*/return G(a)},j));/*<>*/return h[7]/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-9931067,22),a)/*<>*/})/*<>*/},function(a,b){/*<>*/ /*<>*/var +f=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,24),a)/*<>*/});return function(a,b,c,d){/*<>*/return a.setItem(b,c)}(/*<>*/c(h[6][8],f,function(a){/*<>*/throw/*<>*/r([0,x,aS],1)/*<>*/}),/*<>*/o(a),/*<>*/o(b),function(a){/*<>*/return/*<>*/d(e(a,189007317,25),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,26),a)/*<>*/}),/*<>*/f=function(a){/*<>*/ /*<>*/var +b=/*<>*/G(/*<>*/c(h[5][8],a,function(a){/*<>*/throw/*<>*/r([0,x,aU],1)/*<>*/}));/*<>*/return/*<>*/d(T[2],b)/*<>*/}(function(a,b,c){/*<>*/return a.getItem(b)}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/r([0,x,aT],1)/*<>*/}),/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,407008457,27),a)/*<>*/}));/*<>*/return f}catch(f){/*<>*/return 0}/*<>*/},function(a){/*<>*/ /*<>*/var +b=function(a,b){/*<>*/return a.localStorage}(i[8],function(a){/*<>*/return/*<>*/d(e(a,ac,28),a)/*<>*/});return function(a,b){/*<>*/return a.clear()}(/*<>*/c(h[6][8],b,function(a){/*<>*/throw/*<>*/r([0,x,aV],1)/*<>*/}),function(a){/*<>*/return/*<>*/d(e(a,-933531251,29),a)/*<>*/})/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.confirm(b)}(i[8],/*<>*/o(a),function(a){/*<>*/return/*<>*/d(e(a,272211200,30),a)/*<>*/})|0/*<>*/},function(a){/*<>*/return function(a,b,c){/*<>*/return a.log(b)}(aW[1],a,function(a){/*<>*/return/*<>*/d(e(a,5395588,31),a)/*<>*/})/*<>*/},function(a,b){/*<>*/var +g=a?a[1]:aZ;/*<>*/try{/*<>*/ /*<>*/var +f=function(a,b){/*<>*/return a.focus()}(w(b),function(a){/*<>*/return/*<>*/d(e(a,ae,32),a)/*<>*/});/*<>*/return f}catch(f){/*<>*/var/*<>*/h=/*<>*/c(n[28],aX,g),/*<>*/i=/*<>*/c(n[28],b,h),/*<>*/j=/*<>*/c(n[28],aY,i);/*<>*/return/*<>*/d(n[46],j)}/*<>*/},U,aj,a2,function(a){/*<>*/aj(0);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],aI,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,34),a)/*<>*/}));/*<>*/ /*<>*/var +b=/*<>*/d(h[5][9],[0,/*<>*/o(a)]);/*<>*/(function(a,b,c,d,e){/*<>*/a.execCommand(b,c,d);return}(i[2],"insertText",!!0,b,function(a){/*<>*/return/*<>*/d(e(a,ad,35),a)/*<>*/}));return function(a,b,c,d,e){/*<>*/return a.execCommand(b,c,d)}(i[2],aI,!!0,h[5][1],function(a){/*<>*/return/*<>*/d(e(a,ad,36),a)/*<>*/})/*<>*/},function(a){/*<>*/try{/*<>*/var/*<>*/b=w(a4),/*<>*/f=function(a,b){/*<>*/return a.getBoundingClientRect()}(w(a5),function(a){/*<>*/return/*<>*/d(e(a,aB,37),a)/*<>*/}),/*<>*/g=function(a,b){/*<>*/return a.getBoundingClientRect()}(b,function(a){/*<>*/return/*<>*/d(e(a,aB,38),a)/*<>*/}),/*<>*/k=function(a,b){/*<>*/return a.top}(f,function(a){/*<>*/return/*<>*/d(e(a,az,39),a)/*<>*/});if(function(a,b){/*<>*/return a.top}(g,function(a){/*<>*/return/*<>*/d(e(a,az,40),a)/*<>*/})>*/return a.scrollIntoView(b)}(b,h[7],function(a){/*<>*/return/*<>*/d(e(a,aA,41),a)/*<>*/});else/*<>*/var/*<>*/l=function(a,b){/*<>*/return a.bottom}(f,function(a){/*<>*/return/*<>*/d(e(a,ay,42),a)/*<>*/}),/*<>*/j=l>*/return a.bottom}(g,function(a){/*<>*/return/*<>*/d(e(a,ay,43),a)/*<>*/})?1:0,i=j?function(a,b,c){/*<>*/return a.scrollIntoView(b)}(b,h[8],function(a){/*<>*/return/*<>*/d(e(a,aA,44),a)/*<>*/}):j;/*<>*/return i}catch(f){var +c=b0(f);if(c[1]!==n[5])throw r(c,0);/*<>*/ /*<>*/d(n[46],a3);/*<>*/return 0}/*<>*/},[0,function(a){/*<>*/var +b=a!==q?/*<>*/c(n[28],a6,a):a7,/*<>*/f=function(a,b){/*<>*/return a.history}(i[8],function(a){/*<>*/return/*<>*/d(e(a,-465095340,45),a)/*<>*/}),/*<>*/g=/*<>*/d(h[2],/*<>*/o(b));return function(a,b,c,d,e){/*<>*/return a.pushState(b,c,d)}(f,h[1],q,g,function(a){/*<>*/return/*<>*/d(e(a,-936976937,46),a)/*<>*/})/*<>*/},function(a){/*<>*/ /*<>*/var +b=/*<>*/d(a8[10][9],0);/*<>*/return/*<>*/d(/*<>*/d(T[7],function(a){/*<>*/var +b=2===a[0]?a[1][4]:a[1][6];/*<>*/return b/*<>*/}),b)/*<>*/}],a_,[0,al,function(a){/*<>*/return/*<>*/k(f[ab],bk,al,a)/*<>*/},function(a){/*<>*/return/*<>*/ar(am[3],bl,[0,bn,1,I[16],[0,bm,1,I[16],0]],function(a){/*<>*/return a!==t?a!==v?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bo,[0,/*<>*/d(I[15],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bp,[0,/*<>*/d(I[15],b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -j=i[1],k=j[2],c=j[1],l=i[2];if(c!==t)if(c!==v){/*<>*/if(/*<>*/d(b[2],x[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else -f[1]=[0,/*<>*/d(x[45][22],k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else -g[1]=[0,/*<>*/d(x[45][22],k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var +j=i[1],k=j[2],c=j[1],l=i[2];if(c!==t)if(c!==v){/*<>*/if(/*<>*/d(b[2],y[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else +f[1]=[0,/*<>*/d(y[45][22],k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else +g[1]=[0,/*<>*/d(y[45][22],k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],J,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var -n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],J,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,br],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bs],o];/*<>*/return/*<>*/k(l[13],J,a,p)}/*<>*/return/*<>*/c(l[14],J,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,bt,d(x[45][6],a[2])],0];/*<>*/return[0,R,[0,[0,bu,d(x[45][6],b)],c]]/*<>*/},K,function(a){/*<>*/return/*<>*/k(f[ab],by,K,a)/*<>*/},V,W,X,Y,ao,function(a){/*<>*/return/*<>*/k(f[ab],bO,ao,a)/*<>*/},function(a){/*<>*/return/*<>*/as(an[3],bP,[0,bR,1,V,[0,bQ,1,V,0]],function(a){/*<>*/return a!==s?a!==u?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bS,[0,W(a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bT,[0,W(b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof +n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],J,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bq],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,br],o];/*<>*/return/*<>*/k(l[13],J,a,p)}/*<>*/return/*<>*/c(l[14],J,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,bs,d(y[45][6],a[2])],0];/*<>*/return[0,R,[0,[0,bt,d(y[45][6],b)],c]]/*<>*/},K,function(a){/*<>*/return/*<>*/k(f[ab],bx,K,a)/*<>*/},V,W,X,Y,an,function(a){/*<>*/return/*<>*/k(f[ab],bN,an,a)/*<>*/},function(a){/*<>*/return/*<>*/ar(am[3],bO,[0,bQ,1,V,[0,bP,1,V,0]],function(a){/*<>*/return a!==s?a!==u?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bR,[0,W(a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bS,[0,W(b),0]]],c]]/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&R===a[1]){/*<>*/var/*<>*/f=[0,0],/*<>*/g=[0,0],/*<>*/e=[0,0],/*<>*/h=[0,0];/*<>*/(function(a){/*<>*/var i=a;/*<>*/for(;;){if(!i)/*<>*/return;var -j=i[1],k=j[2],c=j[1],l=i[2];if(c!==s)if(c!==u){/*<>*/if(/*<>*/d(b[2],x[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else +j=i[1],k=j[2],c=j[1],l=i[2];if(c!==s)if(c!==u){/*<>*/if(/*<>*/d(b[2],y[22]))h[1]=[0,c,/*<>*/d(b[2],h)]}else if(/*<>*/d(b[2],f))e[1]=[0,c,/*<>*/d(b[2],e)];else f[1]=[0,X(k)];else if(/*<>*/d(b[2],g))e[1]=[0,c,/*<>*/d(b[2],e)];else g[1]=[0,X(k)];i=l}/*<>*/}(a[2]));if(/*<>*/d(b[2],e)){/*<>*/ /*<>*/var m=/*<>*/d(b[2],e);/*<>*/return/*<>*/k(l[10],L,m,a)}if(/*<>*/d(b[2],h)){/*<>*/ /*<>*/var -n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],L,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bU],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bV],o];/*<>*/return/*<>*/k(l[13],L,a,p)}/*<>*/return/*<>*/c(l[14],L,a)/*<>*/},function(a){/*<>*/var -b=a[1],c=[0,[0,bW,Y(a[2])],0];/*<>*/return[0,R,[0,[0,bX,Y(b)],c]]/*<>*/},function(a){/*<>*/ /*<>*/var -b=ag(a);/*<>*/return function(a){/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/return/*<>*/d(n[2],bY)/*<>*/})/*<>*/}(/*<>*/d(i[118][55],b))/*<>*/},_,aq,$,function(a){/*<>*/var/*<>*/b=_(a),/*<>*/e=aq(a),f=e[1],g=e[2],/*<>*/h=$(g,/*<>*/aa(/*<>*/c(ar[8],b,f)));/*<>*/return[0,$(f,/*<>*/d(ar[1],b)-1|0),h]/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(a,function(a){/*<>*/return/*<>*/d(e(a,ae,49),a)/*<>*/}));/*<>*/ /*<>*/var -b=/*<>*/aa(/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aK,50),a)/*<>*/})));/*<>*/(function(a,b,c){/*<>*/a.selectionStart=b;return}(a,b,function(a){/*<>*/return/*<>*/d(e(a,at,51),a)/*<>*/}));return function(a,b,c){/*<>*/return a.selectionEnd=b}(a,b,function(a){/*<>*/return/*<>*/d(e(a,-578749713,52),a)/*<>*/})/*<>*/}]],"Haz3lcore__JsUtil");return/*<>*/}(globalThis)); +n=/*<>*/d(b[2],h);/*<>*/return/*<>*/k(l[11],L,n,a)}/*<>*/var/*<>*/i=/*<>*/d(b[2],f),/*<>*/j=/*<>*/d(b[2],g);if(i&&j)/*<>*/return[0,i[1],j[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(b[2],g)?1:0,bT],0],/*<>*/p=[0,[0,0===/*<>*/d(b[2],f)?1:0,bU],o];/*<>*/return/*<>*/k(l[13],L,a,p)}/*<>*/return/*<>*/c(l[14],L,a)/*<>*/},function(a){/*<>*/var +b=a[1],c=[0,[0,bV,Y(a[2])],0];/*<>*/return[0,R,[0,[0,bW,Y(b)],c]]/*<>*/},function(a){/*<>*/ /*<>*/var +b=w(a);/*<>*/return function(a){/*<>*/return/*<>*/c(h[5][8],a,function(a){/*<>*/return/*<>*/d(n[2],bX)/*<>*/})/*<>*/}(/*<>*/d(i[118][55],b))/*<>*/},_,ap,$,function(a){/*<>*/var/*<>*/b=_(a),/*<>*/e=ap(a),f=e[1],g=e[2],/*<>*/h=$(g,/*<>*/aa(/*<>*/c(aq[8],b,f)));/*<>*/return[0,$(f,/*<>*/d(aq[1],b)-1|0),h]/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(a,function(a){/*<>*/return/*<>*/d(e(a,ae,49),a)/*<>*/}));/*<>*/ /*<>*/var +b=/*<>*/aa(/*<>*/G(function(a,b){/*<>*/return a.value}(a,function(a){/*<>*/return/*<>*/d(e(a,aJ,50),a)/*<>*/})));/*<>*/(function(a,b,c){/*<>*/a.selectionStart=b;return}(a,b,function(a){/*<>*/return/*<>*/d(e(a,as,51),a)/*<>*/}));return function(a,b,c){/*<>*/return a.selectionEnd=b}(a,b,function(a){/*<>*/return/*<>*/d(e(a,-578749713,52),a)/*<>*/})/*<>*/}]],"Haz3lcore__JsUtil");return/*<>*/}(globalThis)); -//# 6164 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6165 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var s="%a",r=143,q="()",f=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -436987,9 +436988,9 @@ b=/*<>*/e(j[53],a);/*<>*/ /*<>*/var b=h(a);return b?/*<>*/e(i[33],b[1]):/*<>*/e(i[2],u)/*<>*/}/*<>*/function m(a,b){/*<>*/return/*<>*/o(c[13],a,v)/*<>*/}/*<>*/function -n(a,b){/*<>*/return/*<>*/o(c[13],a,x)/*<>*/}f.caml_register_global(14,[0,k,h,l,[0,m,function(a){/*<>*/return/*<>*/p(c[r],w,m,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],n,function(a){/*<>*/return/*<>*/p(c[r],y,n,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],0,function(a){/*<>*/return 0!==h(a)?1:0/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/f=l(b[1]),/*<>*/g=[0,[0,/*<>*/e(A[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,/*<>*/e(k,b)])/*<>*/}),0]];/*<>*/return/*<>*/C(B[8],g,0,0,f)/*<>*/},function(a,b){/*<>*/return z/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderCore");return/*<>*/}(globalThis)); +n(a,b){/*<>*/return/*<>*/o(c[13],a,x)/*<>*/}f.caml_register_global(14,[0,k,h,l,[0,m,function(a){/*<>*/return/*<>*/p(c[r],w,m,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],n,function(a){/*<>*/return/*<>*/p(c[r],y,n,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],0,function(a){/*<>*/return 0!==h(a)?1:0/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/f=l(b[2]),/*<>*/g=[0,[0,/*<>*/e(A[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,/*<>*/e(k,b)])/*<>*/}),0]];/*<>*/return/*<>*/C(B[8],g,0,0,f)/*<>*/},function(a,b){/*<>*/return z/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderCore");return/*<>*/}(globalThis)); -//# 6180 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6181 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var v="%a",u="%.2f",t=143,s="()",f=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -437006,9 +437007,9 @@ b=/*<>*/e(l[53],a);/*<>*/ /*<>*/var b=h(a);return b?b[1]:/*<>*/e(m[2],y)/*<>*/}/*<>*/function o(a,b){/*<>*/return/*<>*/q(c[13],a,z)/*<>*/}/*<>*/function -p(a,b){/*<>*/return/*<>*/q(c[13],a,B)/*<>*/}f.caml_register_global(17,[0,i,k,h,n,[0,o,function(a){/*<>*/return/*<>*/r(c[t],A,o,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],p,function(a){/*<>*/return/*<>*/r(c[t],C,p,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],0,function(a){/*<>*/return 0!==h(a)?1:0/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/f=n(b[1]),/*<>*/g=/*<>*/e(/*<>*/e(j[4],E),f),/*<>*/h=[0,[0,/*<>*/e(F[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,k(b)])/*<>*/}),0]];/*<>*/return/*<>*/H(G[8],h,0,0,g)/*<>*/},function(a,b){/*<>*/return D/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderFCore");return/*<>*/}(globalThis)); +p(a,b){/*<>*/return/*<>*/q(c[13],a,B)/*<>*/}f.caml_register_global(17,[0,i,k,h,n,[0,o,function(a){/*<>*/return/*<>*/r(c[t],A,o,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],p,function(a){/*<>*/return/*<>*/r(c[t],C,p,a)/*<>*/},d[3],d[4],g[45][1],g[45][17],0,function(a){/*<>*/return 0!==h(a)?1:0/*<>*/},function(a,b,c,d){/*<>*/var/*<>*/f=n(b[2]),/*<>*/g=/*<>*/e(/*<>*/e(j[4],E),f),/*<>*/h=[0,[0,/*<>*/e(F[1][52],function(a,b){/*<>*/return/*<>*/e(d,[2,k(b)])/*<>*/}),0]];/*<>*/return/*<>*/H(G[8],h,0,0,g)/*<>*/},function(a,b){/*<>*/return D/*<>*/},function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/return 0/*<>*/}]],"Haz3lcore__SliderFCore");return/*<>*/}(globalThis)); -//# 6200 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6201 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cp=203,ax=191,aw=188,Y=187,d="$Meta",o=a.jsoo_runtime,cn=o.caml_equal;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -437257,59 +437258,63 @@ var l=j;/*<>*/return[0,l,[0,f,a]]/*<>*/}/*<>*/var Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(64,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/ /*<>*/i(s[46],_);return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(s[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); -//# 6450 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6451 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var O="\xc2\xb7",u="\n",N="%a",M=-1055309145,L=143,K="()",i=a.jsoo_runtime,t=i.caml_get_public_method;/*<>*/function -f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function -g(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):i.caml_call_gen(a,[b,c])}/*<>*/function -k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):i.caml_call_gen(a,[b,c,d])}/*<>*/var -ah=undefined,b=i.caml_get_global_data(),s=".projector.text textarea",e=b.Haz3lcore__JsUtil,n=b.Stdlib__Format,E=b.Util__StringUtil,m=b.Stdlib,d=b.Stdlib__List,c=b.Re__Str,q=b.Haz3lcore__Form,r=b.Virtual_dom__Vdom,j=b.Virtual_dom__Node,h=b.Virtual_dom__Effect,o=b.Sexplib__Std,p=b.Ppx_yojson_conv_lib__Yojson_conv,af=K,ag=[0,[15,0],N],ad=K,ae=[0,[15,0],N],ac=u,ab=[0,"cols",0],$=O,aa=O,_=[1,1],Z=[1,0],W="TextArea: not string literal",P="\\n",Q=u,S=u,T="\\\\n",Y=b.Haz3lcore__Key,V=b.Haz3lcore__Piece,/*<>*/R=/*<>*/f(c[1],Q),/*<>*/v=/*<>*/g(c[16],R,P),/*<>*/U=/*<>*/f(c[1],T),/*<>*/w=/*<>*/g(c[16],U,S);function -x(a){/*<>*/if(0===a[0]){var -b=a[1][2];if(b&&!b[2])/*<>*/return[0,/*<>*/f(w,b[1])]}/*<>*/return 0/*<>*/}function -y(a,b){/*<>*/ /*<>*/var -c=/*<>*/f(v,b);/*<>*/return function(a){/*<>*/return/*<>*/g(V[51],a,0)/*<>*/}(/*<>*/f(/*<>*/f(q[98],a),c))/*<>*/}function -l(a){/*<>*/ /*<>*/var -b=x(a);return b?b[1]:/*<>*/f(m[2],W)/*<>*/}function -X(a){/*<>*/var -b=6;/*<>*/return function(a){/*<>*/return y(b,a)}(a)/*<>*/}function -z(a){/*<>*/return[2,X(/*<>*/f(q[50],a))]/*<>*/}function -A(a,b,c,d){/*<>*/var/*<>*/n=/*<>*/g(Y[28],1,d),/*<>*/o=/*<>*/f(e[28][19],b),/*<>*/i=/*<>*/f(e[28][23],o),k=2===i[1]?1:0,p=k?2===i[2]?1:0:k,l=0===i[1]?1:0,q=l?0===i[2]?1:0:l,/*<>*/m=n[1];a:if(0===m[0]){var -j=m[1];b:if(j!=="ArrowDown"){if(j!=="ArrowLeft"){if(j==="ArrowRight")break b;if(j!=="ArrowUp")break a}if(!q)break a;/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/f(e[2],b),function(a){/*<>*/return/*<>*/f(t(a,M,53),a)/*<>*/}));/*<>*/var -r=[0,h[19],[0,h[17],0]],/*<>*/s=[0,/*<>*/f(a,Z),r];/*<>*/return[0,h[2],s]}if(p){/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/f(e[2],b),function(a){/*<>*/return/*<>*/f(t(a,M,54),a)/*<>*/}));/*<>*/var -u=[0,h[19],[0,h[17],0]],/*<>*/v=[0,/*<>*/f(a,_),u];/*<>*/return[0,h[2],v]}}/*<>*/return h[17]/*<>*/}function -B(b,d,c){/*<>*/var/*<>*/a=[0,/*<>*/f(j[5],c),0],g=0,e=[0,/*<>*/f(r[1][52],function(a,b){/*<>*/return/*<>*/f(d,z(b))/*<>*/}),0],/*<>*/h=[0,[0,/*<>*/f(r[1][74],function(a){/*<>*/return A(d,b,g,a)}),e]];/*<>*/return/*<>*/k(j[29],0,h,a)/*<>*/}function -C(a){/*<>*/var/*<>*/b=/*<>*/g(d[11],a,function(a){/*<>*/var -b=[0,/*<>*/f(j[5],$),0];/*<>*/return[0,/*<>*/k(j[52],0,0,0),b]/*<>*/}),/*<>*/c=/*<>*/f(d[15],b),/*<>*/e=[0,/*<>*/f(j[5],aa),0];/*<>*/return/*<>*/g(m[37],e,c)/*<>*/}function -D(a,b,c,d,e){/*<>*/var/*<>*/i=l(c[1]),/*<>*/h=/*<>*/f(q[49],i),/*<>*/n=[0,B(b,e,h),0],/*<>*/o=C(/*<>*/f(E[10],h)),/*<>*/p=/*<>*/g(m[37],o,n),/*<>*/s=[0,[0,/*<>*/f(r[1][16],ab),0]];/*<>*/return/*<>*/k(j[14],0,s,p)/*<>*/}function -F(a){/*<>*/var/*<>*/b=l(a),/*<>*/e=/*<>*/f(c[1],ac),/*<>*/h=/*<>*/g(c[21],e,b);/*<>*/return/*<>*/g(d[20],function(a){/*<>*/return i.caml_ml_string_length(a)},h)/*<>*/}function +e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function +f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):i.caml_call_gen(a,[b,c])}/*<>*/function +j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):i.caml_call_gen(a,[b,c,d])}var +ak=undefined,b=i.caml_get_global_data(),g=b.Haz3lcore__JsUtil,p=b.Stdlib__Format,E=b.Util__StringUtil,l=b.Stdlib,o=b.Stdlib__List,c=b.Re__Str,s=b.Haz3lcore__Form,n=b.Virtual_dom__Vdom,k=b.Virtual_dom__Node,h=b.Virtual_dom__Effect,q=b.Sexplib__Std,r=b.Ppx_yojson_conv_lib__Yojson_conv,ai=K,aj=[0,[15,0],N],ag=K,ah=[0,[15,0],N],af=u,ae=[0,"cols",0],ac=O,ad=O,ab=[1,1],aa=[1,0],Z="TextArea: not string literal",R="id",S="\\n",T=u,V=u,W="\\\\n",$=b.Haz3lcore__Key,Y=b.Haz3lcore__Piece,Q=b.Stdlib__String,P=b.Haz3lcore__Id;function +d(a){/*<>*/ /*<>*/var +b=function(a){/*<>*/return/*<>*/j(Q[16],a,0,8)/*<>*/}(/*<>*/f(P[7],0,a));/*<>*/return/*<>*/f(l[28],R,b)/*<>*/}/*<>*/var/*<>*/U=/*<>*/e(c[1],T),/*<>*/v=/*<>*/f(c[16],U,S),/*<>*/X=/*<>*/e(c[1],W),/*<>*/w=/*<>*/f(c[16],X,V);function +x(a){/*<>*/if(0===a[0]){var +b=a[1][2];if(b&&!b[2])/*<>*/return[0,/*<>*/e(w,b[1])]}/*<>*/return 0/*<>*/}function +y(a,b){/*<>*/ /*<>*/var +c=/*<>*/e(v,b);/*<>*/return function(a){/*<>*/return/*<>*/f(Y[51],a,0)/*<>*/}(/*<>*/e(/*<>*/e(s[98],a),c))/*<>*/}function +m(a){/*<>*/ /*<>*/var +b=x(a);return b?b[1]:/*<>*/e(l[2],Z)/*<>*/}function +_(a){/*<>*/var +b=6;/*<>*/return function(a){/*<>*/return y(b,a)}(a)/*<>*/}function +z(a){/*<>*/return[2,_(/*<>*/e(s[50],a))]/*<>*/}function +A(a,b,c){/*<>*/var/*<>*/n=/*<>*/f($[28],1,c),/*<>*/o=d(a),/*<>*/p=/*<>*/e(g[28][19],o),/*<>*/i=/*<>*/e(g[28][23],p),k=2===i[1]?1:0,q=k?2===i[2]?1:0:k,l=0===i[1]?1:0,r=l?0===i[2]?1:0:l,/*<>*/m=n[1];a:if(0===m[0]){var +j=m[1];b:if(j!=="ArrowDown"){if(j!=="ArrowLeft"){if(j==="ArrowRight")break b;if(j!=="ArrowUp")break a}if(!r)break a;/*<>*/ /*<>*/var +s=d(a);/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/e(g[1],s),function(a){/*<>*/return/*<>*/e(t(a,M,53),a)/*<>*/}));/*<>*/var +u=[0,h[19],[0,h[17],0]],/*<>*/v=[0,/*<>*/e(b,aa),u];/*<>*/return[0,h[2],v]}if(q){/*<>*/ /*<>*/var +w=d(a);/*<>*/(function(a,b){/*<>*/a.blur();return}(/*<>*/e(g[1],w),function(a){/*<>*/return/*<>*/e(t(a,M,54),a)/*<>*/}));/*<>*/var +x=[0,h[19],[0,h[17],0]],/*<>*/y=[0,/*<>*/e(b,ab),x];/*<>*/return[0,h[2],y]}}/*<>*/return h[17]/*<>*/}function +B(b,f,c){/*<>*/var/*<>*/a=[0,/*<>*/e(k[5],c),0],g=[0,/*<>*/e(n[1][52],function(a,b){/*<>*/return/*<>*/e(f,z(b))/*<>*/}),0],h=[0,/*<>*/e(n[1][74],function(a){/*<>*/return A(b,f,a)}),g],/*<>*/i=d(b),/*<>*/l=[0,[0,/*<>*/e(n[1][23],i),h]];/*<>*/return/*<>*/j(k[29],0,l,a)/*<>*/}function +C(a){/*<>*/var/*<>*/b=/*<>*/f(o[11],a,function(a){/*<>*/var +b=[0,/*<>*/e(k[5],ac),0];/*<>*/return[0,/*<>*/j(k[52],0,0,0),b]/*<>*/}),/*<>*/c=/*<>*/e(o[15],b),/*<>*/d=[0,/*<>*/e(k[5],ad),0];/*<>*/return/*<>*/f(l[37],d,c)/*<>*/}function +D(a,b,c,d){/*<>*/var/*<>*/h=m(b[2]),/*<>*/g=/*<>*/e(s[49],h),/*<>*/i=[0,B(b[1],d,g),0],/*<>*/o=C(/*<>*/e(E[10],g)),/*<>*/p=/*<>*/f(l[37],o,i),/*<>*/q=[0,[0,/*<>*/e(n[1][16],ae),0]];/*<>*/return/*<>*/j(k[14],0,q,p)/*<>*/}function +F(a){/*<>*/var/*<>*/b=m(a),/*<>*/d=/*<>*/e(c[1],af),/*<>*/g=/*<>*/f(c[21],d,b);/*<>*/return/*<>*/f(o[20],function(a){/*<>*/return i.caml_ml_string_length(a)},g)/*<>*/}function G(a){/*<>*/ /*<>*/var -b=F(a);/*<>*/return/*<>*/k(d[26],m[17],0,b)/*<>*/}function +b=F(a);/*<>*/return/*<>*/j(o[26],l[17],0,b)/*<>*/}function H(a,b){/*<>*/var -c=2+G(b[1])|0,/*<>*/d=l(b[1]);/*<>*/return[1,[0,/*<>*/f(E[10],d),c]]/*<>*/}/*<>*/function -I(a,b){/*<>*/return/*<>*/g(n[13],a,ad)/*<>*/}/*<>*/function -J(a,b){/*<>*/return/*<>*/g(n[13],a,af)/*<>*/}i.caml_register_global(37,[0,v,w,x,y,l,z,A,B,C,D,F,G,H,[0,I,function(a){/*<>*/return/*<>*/k(n[L],ae,I,a)/*<>*/},o[3],o[4],p[45][1],p[45][17],J,function(a){/*<>*/return/*<>*/k(n[L],ag,J,a)/*<>*/},o[3],o[4],p[45][1],p[45][17],0,function(a){/*<>*/return 1/*<>*/},function(d){/*<>*/return function(a,b,c){/*<>*/return D(d,s,a,b,c)}},H,function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/(function(a,b){/*<>*/a.focus();return}(/*<>*/f(e[2],s),function(a){/*<>*/return/*<>*/f(t(a,76111832,55),a)/*<>*/}));if(!a)/*<>*/return 0;/*<>*/ /*<>*/var -b=/*<>*/f(e[28][19],s);/*<>*/return/*<>*/f(e[28][24],b)/*<>*/}]],"Haz3lcore__TextAreaCore");return/*<>*/}(globalThis)); +c=2+G(b[2])|0,/*<>*/d=m(b[2]);/*<>*/return[1,[0,/*<>*/e(E[10],d),c]]/*<>*/}/*<>*/function +I(a,b){/*<>*/return/*<>*/f(p[13],a,ag)/*<>*/}/*<>*/function +J(a,b){/*<>*/return/*<>*/f(p[13],a,ai)/*<>*/}i.caml_register_global(39,[0,d,v,w,x,y,m,z,A,B,C,D,F,G,H,[0,I,function(a){/*<>*/return/*<>*/j(p[L],ah,I,a)/*<>*/},q[3],q[4],r[45][1],r[45][17],J,function(a){/*<>*/return/*<>*/j(p[L],aj,J,a)/*<>*/},q[3],q[4],r[45][1],r[45][17],0,function(a){/*<>*/return 1/*<>*/},D,H,function(a,b){/*<>*/return a/*<>*/},function(a){/*<>*/var +b=a[1],c=a[2],/*<>*/f=d(b);/*<>*/(function(a,b){/*<>*/a.focus();return}(/*<>*/e(g[1],f),function(a){/*<>*/return/*<>*/e(t(a,76111832,55),a)/*<>*/}));if(!c)/*<>*/return 0;/*<>*/var/*<>*/h=d(b),/*<>*/i=/*<>*/e(g[28][19],h);/*<>*/return/*<>*/e(g[28][24],i)/*<>*/}]],"Haz3lcore__TextAreaCore");return/*<>*/}(globalThis)); -//# 6484 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6489 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var z="z",ah="<2>",y="@ ",ag=" =",af="",ae="@]",ai="@[%s =@ ",n=139,x="syntax_map",h=a.jsoo_runtime,ad=h.caml_equal;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function e(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):h.caml_call_gen(a,[b,c])}/*<>*/function w(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):h.caml_call_gen(a,[b,c,d])}/*<>*/function -bf(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):h.caml_call_gen(a,[b,c,d,e,f,g])}var -c=h.caml_get_global_data(),g=c.Haz3lcore__Piece,f=c.Haz3lcore__ZipperBase,i=c.Stdlib__List,k=c.Haz3lcore__Id,j=c.Stdlib__Format,o=c.Haz3lcore__Segment,R=c.Util__ListUtil,u=c.Stdlib__Option,t=c.Haz3lcore__Siblings,s=c.Stdlib__String,b=c.Haz3lcore__ProjectorBase,aZ=[0,[18,[1,[0,[11,ah,0],ah]],[11,"{ ",0]],"@[<2>{ "],a0=z,a1=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],a2=[0,[17,0,0],ae],a3=[0,[12,59,[17,[0,y,1,0],0]],";@ "],a4=x,a5=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],a6=[0,[17,0,0],ae],a7=[0,[17,[0,y,1,0],[12,125,[17,0,0]]],"@ }@]"],a8=[0,[15,0],"%a"],bb=[0,x],bc=[0,z],a_=x,a$=z,aX=[0,0,0],a9="src/haz3lcore/zipper/Projector.re.proj_ret",ba=c.Sexplib0__Sexp_conv_record,aY=c.Haz3lcore__Mold,aW=c.Stdlib,aQ=c.Haz3lcore__FoldCore,aR=c.Haz3lcore__InfoCore,aS=c.Haz3lcore__CheckboxCore,aT=c.Haz3lcore__SliderCore,aU=c.Haz3lcore__SliderFCore,aV=c.Haz3lcore__TextAreaCore,r=b[13],F=b[26],G=b[28],H=b[29],l=b[38];function +bg(a,b,c,d,e,f,g){return(a.l>=0?a.l:a.l=a.length)==6?a(b,c,d,e,f,g):h.caml_call_gen(a,[b,c,d,e,f,g])}var +c=h.caml_get_global_data(),g=c.Haz3lcore__Piece,f=c.Haz3lcore__ZipperBase,i=c.Stdlib__List,k=c.Haz3lcore__Id,j=c.Stdlib__Format,o=c.Haz3lcore__Segment,R=c.Util__ListUtil,u=c.Stdlib__Option,t=c.Haz3lcore__Siblings,s=c.Stdlib__String,b=c.Haz3lcore__ProjectorBase,a0=[0,[18,[1,[0,[11,ah,0],ah]],[11,"{ ",0]],"@[<2>{ "],a1=z,a2=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],a3=[0,[17,0,0],ae],a4=[0,[12,59,[17,[0,y,1,0],0]],";@ "],a5=x,a6=[0,[18,[1,[0,0,af]],[2,0,[11,ag,[17,[0,y,1,0],0]]]],ai],a7=[0,[17,0,0],ae],a8=[0,[17,[0,y,1,0],[12,125,[17,0,0]]],"@ }@]"],a9=[0,[15,0],"%a"],bc=[0,x],bd=[0,z],a$=x,ba=z,aY=[0,0,0],a_="src/haz3lcore/zipper/Projector.re.proj_ret",bb=c.Sexplib0__Sexp_conv_record,aZ=c.Haz3lcore__Mold,aX=c.Stdlib,aR=c.Haz3lcore__FoldCore,aS=c.Haz3lcore__InfoCore,aT=c.Haz3lcore__CheckboxCore,aU=c.Haz3lcore__SliderCore,aV=c.Haz3lcore__SliderFCore,aW=c.Haz3lcore__TextAreaCore,r=b[13],F=b[26],G=b[28],H=b[29],l=b[39];function A(a){/*<>*/switch(a){case -0:return d(l,aQ[1]);case -1:return d(l,aR[7]);case -2:return d(l,aS[9]);case -3:return d(l,aT[4]);case -4:return d(l,aU[5]);default:return d(l,aV[14])}/*<>*/}function +0:return d(l,aR[1]);case +1:return d(l,aS[7]);case +2:return d(l,aT[9]);case +3:return d(l,aU[4]);case +4:return d(l,aV[5]);default:return d(l,aW[15])}/*<>*/}function I(a,b){/*<>*/ /*<>*/var c=A(a[1]);/*<>*/return/*<>*/e(c[4],a[2],b)/*<>*/}function J(a,b){/*<>*/ /*<>*/var c=I(a,b);if(0===c[0])/*<>*/return[0,/*<>*/e(s[1],c[1],32),0];/*<>*/var -d=c[1],f=d[1],/*<>*/g=/*<>*/e(s[1],d[2],32),/*<>*/h=/*<>*/e(s[1],f,10);/*<>*/return[0,/*<>*/e(aW[28],h,g),0]/*<>*/}function -K(a,b){/*<>*/var/*<>*/c=/*<>*/e(aY[8],0,0),/*<>*/f=J(a,b);/*<>*/return[0,[0,/*<>*/d(g[30],b[1]),f,c,aX,0]]/*<>*/}function +d=c[1],f=d[1],/*<>*/g=/*<>*/e(s[1],d[2],32),/*<>*/h=/*<>*/e(s[1],f,10);/*<>*/return[0,/*<>*/e(aX[28],h,g),0]/*<>*/}function +K(a,b){/*<>*/var/*<>*/c=/*<>*/e(aZ[8],0,0),/*<>*/f=J(a,b);/*<>*/return[0,[0,/*<>*/d(g[30],b[2]),f,c,aY,0]]/*<>*/}function L(a){/*<>*/return/*<>*/d(g[40],a)/*<>*/}function q(a,b){/*<>*/if(b){/*<>*/var c=b[1],/*<>*/f=/*<>*/d(g[30],c);/*<>*/if(/*<>*/e(r[9],f,a)){/*<>*/ /*<>*/var @@ -437340,54 +437345,54 @@ W(c,b){/*<>*/return/*<>*/var c=b[3],/*<>*/d=m(a,b[2]);/*<>*/return[0,b[1],d,c]/*<>*/}/*<>*/var/*<>*/D=[0,m,S,T,C,U,V,W,X,function(a,b){/*<>*/var c=b[5],d=b[4],/*<>*/e=W(a,b[3][2]),/*<>*/f=[0,C(a,b[3][1]),e],g=b[2];/*<>*/return[0,X(a,b[1]),g,f,d,c]/*<>*/}],v=[];function -Y(a,b){/*<>*/ /*<>*/e(j[n],a,aZ);/*<>*/ /*<>*/w(j[n],a,a1,a0);var -c=b[1];/*<>*/ /*<>*/d(d(v[3],a),c);/*<>*/ /*<>*/e(j[n],a,a2);/*<>*/ /*<>*/e(j[n],a,a3);/*<>*/ /*<>*/w(j[n],a,a5,a4);var -f=b[2];/*<>*/ /*<>*/d(e(v[1],function(a){/*<>*/return d(v[2],a)},a),f);/*<>*/ /*<>*/e(j[n],a,a6);/*<>*/return/*<>*/e(j[n],a,a7)/*<>*/}var -aj=b[1],ak=b[2],al=b[3],am=b[4],an=b[5],ao=b[6],ap=b[7],aq=b[8],ar=b[9],as=b[10],at=b[11],au=b[12],av=b[14],aw=b[15],ax=b[16],ay=b[17],az=b[18],aA=b[19],aB=b[20],aC=b[21],aD=b[22],aE=b[23],aF=b[24],aG=b[25],aH=b[27],aI=b[30],aJ=b[31],aK=b[32],aL=b[33],aM=b[34],aN=b[35],aO=b[36],aP=b[37];h.caml_update_dummy(v,[0,k[15][48],F,f[2]]);/*<>*/ /*<>*/var +Y(a,b){/*<>*/ /*<>*/e(j[n],a,a0);/*<>*/ /*<>*/w(j[n],a,a2,a1);var +c=b[1];/*<>*/ /*<>*/d(d(v[3],a),c);/*<>*/ /*<>*/e(j[n],a,a3);/*<>*/ /*<>*/e(j[n],a,a4);/*<>*/ /*<>*/w(j[n],a,a6,a5);var +f=b[2];/*<>*/ /*<>*/d(e(v[1],function(a){/*<>*/return d(v[2],a)},a),f);/*<>*/ /*<>*/e(j[n],a,a7);/*<>*/return/*<>*/e(j[n],a,a8)/*<>*/}var +aj=b[1],ak=b[2],al=b[3],am=b[4],an=b[5],ao=b[6],ap=b[7],aq=b[8],ar=b[9],as=b[10],at=b[11],au=b[12],av=b[14],aw=b[15],ax=b[16],ay=b[17],az=b[18],aA=b[19],aB=b[20],aC=b[21],aD=b[22],aE=b[23],aF=b[24],aG=b[25],aH=b[27],aI=b[30],aJ=b[31],aK=b[32],aL=b[33],aM=b[34],aN=b[35],aO=b[36],aP=b[37],aQ=b[38];h.caml_update_dummy(v,[0,k[15][48],F,f[2]]);/*<>*/ /*<>*/var p=[0,k[15][1]];function Z(a,b,c){/*<>*/var/*<>*/f=/*<>*/d(g[30],c),/*<>*/h=/*<>*/e(r[8],f,a);if(!h)/*<>*/return c;/*<>*/var -i=h[1],/*<>*/j=[0,c,0,/*<>*/e(k[15][18],f,b)];p[1]=/*<>*/w(k[15][2],f,c,p[1]);/*<>*/return K(i,j)/*<>*/}function -_(a,b,c){/*<>*/return/*<>*/ad(b,/*<>*/d(g[30],c))?/*<>*/d(a,c):c/*<>*/}function -E(a,b,c){/*<>*/ /*<>*/var -e=/*<>*/d(a,b[3][1]);return e?/*<>*/ad(/*<>*/d(g[30],e[1]),c):0/*<>*/}/*<>*/var -bd=t[23];/*<>*/function -$(a,b){/*<>*/return E(bd,a,b)}/*<>*/var -be=t[24];/*<>*/function -aa(a,b){/*<>*/return E(be,a,b)}function -ab(a,b){/*<>*/var -c=b[3][1],g=c[1],/*<>*/h=/*<>*/e(i[20],a,c[2]),/*<>*/j=[0,/*<>*/e(i[20],a,g),h];/*<>*/return/*<>*/d(/*<>*/d(f[10],j),b)/*<>*/}function -ac(a,b){/*<>*/var +i=h[1],/*<>*/j=[0,f,c,0,/*<>*/e(k[15][18],f,b)];p[1]=/*<>*/w(k[15][2],f,c,p[1]);/*<>*/return K(i,j)/*<>*/}function +_(a,b,c){/*<>*/return/*<>*/ad(b,/*<>*/d(g[30],c))?/*<>*/d(a,c):c/*<>*/}function +E(a,b,c){/*<>*/ /*<>*/var +e=/*<>*/d(a,b[3][1]);return e?/*<>*/ad(/*<>*/d(g[30],e[1]),c):0/*<>*/}/*<>*/var +be=t[23];/*<>*/function +$(a,b){/*<>*/return E(be,a,b)}/*<>*/var +bf=t[24];/*<>*/function +aa(a,b){/*<>*/return E(bf,a,b)}function +ab(a,b){/*<>*/var +c=b[3][1],g=c[1],/*<>*/h=/*<>*/e(i[20],a,c[2]),/*<>*/j=[0,/*<>*/e(i[20],a,g),h];/*<>*/return/*<>*/d(/*<>*/d(f[10],j),b)/*<>*/}function +ac(a,b){/*<>*/var c=b[3][1],e=c[2];if(e)var -h=e[2],i=c[1],g=[0,i,[0,/*<>*/d(a,e[1]),h]];else +h=e[2],i=c[1],g=[0,i,[0,/*<>*/d(a,e[1]),h]];else var -g=c;/*<>*/return/*<>*/d(/*<>*/d(f[10],g),b)/*<>*/}h.caml_register_global(38,[0,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,r,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,F,aH,G,H,aI,aJ,aK,aL,aM,aN,aO,aP,l,A,I,function(a){/*<>*/if(0===a[0]){var +g=c;/*<>*/return/*<>*/d(/*<>*/d(f[10],g),b)/*<>*/}h.caml_register_global(38,[0,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,r,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,F,aH,G,H,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,l,A,I,function(a){/*<>*/if(0===a[0]){var b=a[1][2];if(b&&!b[2])return 0===/*<>*/h.caml_ml_string_length(/*<>*/d(s[24],b[1]))?1:0}/*<>*/return 0/*<>*/},J,K,L,function(a,b){/*<>*/var/*<>*/c=A(a),/*<>*/e=/*<>*/d(c[2],b),/*<>*/f=e?L(b):e;return f?[0,[0,a,c[1]]]:0/*<>*/},q,B,[0,M,N,function(a){/*<>*/var c=a[1][1],/*<>*/b=B(a[5],a[3][1]);if(c){if(b[2])/*<>*/return N(a)}else if(b[1])/*<>*/return M(a);/*<>*/return 0/*<>*/},O,P,Q,function(a){/*<>*/var b=a[1],/*<>*/d=b[1],/*<>*/c=Q(a[5],b);if(d){if(c[2])/*<>*/return P(a)}else if(c[1])/*<>*/return O(a);/*<>*/return 0/*<>*/}],[0,function(a,b){/*<>*/ /*<>*/var c=B(b[5],b[3][1]);if(a){if(c[2]){/*<>*/ /*<>*/var g=/*<>*/d(o[59],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],g,b)]}}else if(c[1]){/*<>*/ /*<>*/var -h=/*<>*/d(o[58],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],h,b)]}/*<>*/return 0/*<>*/}],D,Y,function(a){/*<>*/return/*<>*/w(j[143],a8,Y,a)/*<>*/},function(a){/*<>*/ /*<>*/var -b=[0,a_,1,/*<>*/d(k[15][45],G),0];/*<>*/return/*<>*/bf(ba[3],a9,[0,a$,1,f[4],b],function(a){/*<>*/return a!==x?a!==z?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var -b=a[1],/*<>*/c=[0,[1,[0,bb,[0,/*<>*/e(k[15][44],H,a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bc,[0,/*<>*/d(f[5],b),0]]],c]]/*<>*/},[0,p,Z,function(a,b){/*<>*/p[1]=k[15][1];/*<>*/if(/*<>*/d(k[15][31],a[5]))/*<>*/return[0,a,p[1]];/*<>*/var -c=a[5],/*<>*/f=/*<>*/e(D[9],function(a){/*<>*/return Z(c,b,a)},a);/*<>*/return[0,f,p[1]]/*<>*/}],[0,_,E,$,aa,ab,ac,function(f,b,c){function -a(a){/*<>*/return _(function(a){/*<>*/var/*<>*/b=/*<>*/d(f,a),/*<>*/c=/*<>*/d(g[30],a);/*<>*/return/*<>*/d(/*<>*/d(g[50],c),b)/*<>*/},b,a)/*<>*/}/*<>*/return $(c,b)?ab(a,c):aa(c,b)?ac(a,c):/*<>*/e(D[9],a,c)/*<>*/}]],"Haz3lcore__Projector");return/*<>*/}(globalThis)); +h=/*<>*/d(o[58],b[3][1]);/*<>*/return[0,/*<>*/e(f[10],h,b)]}/*<>*/return 0/*<>*/}],D,Y,function(a){/*<>*/return/*<>*/w(j[143],a9,Y,a)/*<>*/},function(a){/*<>*/ /*<>*/var +b=[0,a$,1,/*<>*/d(k[15][45],G),0];/*<>*/return/*<>*/bg(bb[3],a_,[0,ba,1,f[4],b],function(a){/*<>*/return a!==x?a!==z?-1:0:1/*<>*/},0,function(a){/*<>*/return[0,a[1],a[2][1]]/*<>*/},a)/*<>*/},function(a){/*<>*/var +b=a[1],/*<>*/c=[0,[1,[0,bc,[0,/*<>*/e(k[15][44],H,a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,bd,[0,/*<>*/d(f[5],b),0]]],c]]/*<>*/},[0,p,Z,function(a,b){/*<>*/p[1]=k[15][1];/*<>*/if(/*<>*/d(k[15][31],a[5]))/*<>*/return[0,a,p[1]];/*<>*/var +c=a[5],/*<>*/f=/*<>*/e(D[9],function(a){/*<>*/return Z(c,b,a)},a);/*<>*/return[0,f,p[1]]/*<>*/}],[0,_,E,$,aa,ab,ac,function(f,b,c){function +a(a){/*<>*/return _(function(a){/*<>*/var/*<>*/b=/*<>*/d(f,a),/*<>*/c=/*<>*/d(g[30],a);/*<>*/return/*<>*/d(/*<>*/d(g[50],c),b)/*<>*/},b,a)/*<>*/}/*<>*/return $(c,b)?ab(a,c):aa(c,b)?ac(a,c):/*<>*/e(D[9],a,c)/*<>*/}]],"Haz3lcore__Projector");return/*<>*/}(globalThis)); -//# 6567 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6572 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var -E="ByChar",aR="up",aQ="src/haz3lcore/zipper/Zipper.re.chunkiness",D="Down",V="<2>",aW="@ ",aV="left",aP="byChar",aO="@])",aU="%a",B="ByToken",A="MonoByChar",aT="src/haz3lcore/zipper/Zipper.re.planar",aN="monoByChar",ai="src/haz3lcore/zipper/Zipper.re",C="Up",aM=143,U=139,aL="byToken",aS="down",n=-976970511,m=848054398,u="Left",aJ="right",t="Right",aK="base_point",q=a.jsoo_runtime,ah=q.caml_maybe_attach_backtrace;/*<>*/function +F="ByChar",aR="up",aQ="src/haz3lcore/zipper/Zipper.re.chunkiness",E="Down",V="<2>",aW="@ ",aV="left",aP="byChar",aO="@])",aU="%a",C="ByToken",B="MonoByChar",aT="src/haz3lcore/zipper/Zipper.re.planar",aN="monoByChar",ai="src/haz3lcore/zipper/Zipper.re",D="Up",aM=143,U=139,aL="byToken",aS="down",n=-976970511,m=848054398,u="Left",aJ="right",t="Right",aK="base_point",q=a.jsoo_runtime,ah=q.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):q.caml_call_gen(a,[b])}/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):q.caml_call_gen(a,[b,c])}/*<>*/function h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):q.caml_call_gen(a,[b,c,d])}/*<>*/function bH(a,b,c,d,e){return(a.l>=0?a.l:a.l=a.length)==4?a(b,c,d,e):q.caml_call_gen(a,[b,c,d,e])}var -b=q.caml_get_global_data(),v=aQ,w=aQ,o=aT,p=aT,aB=b.Stdlib,L=b.Haz3lcore__Form,aC=b.Haz3lcore__Secondary,F=b.Haz3lcore__Id,z=b.Haz3lcore__Effect,g=b.Haz3lcore__Selection,r=b.Haz3lcore__Backpack,R=b.Stdlib__Option,ab=b.Assert_failure,k=b.Stdlib__List,ay=b.Haz3lcore__Tile,s=b.Haz3lcore__Segment,aA=b.Util__ListUtil,aG=b.Sexplib__Sexp,y=b.Haz3lcore__Piece,W=b.Haz3lcore__ProjectorBase,I=b.Haz3lcore__Projector,ag=b.Haz3lcore__Measured,x=b.Haz3lcore__Siblings,G=b.Util__OptUtil,aw=b.Util__Direction,j=b.Haz3lcore__Relatives,l=b.Stdlib__Format,d=b.Ppx_yojson_conv_lib__Yojson_conv_error,c=b.Sexplib0__Sexp_conv_error,i=b.Haz3lcore__ZipperBase,bw=[0,ai,260,4],by=[0,aK],bz=[0,aK],bA=[0,0,0],bt=[0,ai,83,2],bs=[0,ai,77,2],bd=C,be=D,bf=[0,[12,40,[18,[1,[0,[11,V,0],V]],[11,u,[17,[0,aW,1,0],0]]]],"(@[<2>Left@ "],bg=[0,[17,0,[12,41,0]],aO],bh=[0,[12,40,[18,[1,[0,[11,V,0],V]],[11,t,[17,[0,aW,1,0],0]]]],"(@[<2>Right@ "],bi=[0,[17,0,[12,41,0]],aO],bj=[0,[15,0],aU],bo=[0,m,[0,[0,n,C],0]],bp=[0,m,[0,[0,n,D],0]],bq=[0,n,u],br=[0,n,t],bk=[0,C],bl=[0,D],bm=[0,u],bn=[0,t],a5=E,a6=A,a7=B,a8=[0,[15,0],aU],ba=[0,m,[0,[0,n,E],0]],bb=[0,m,[0,[0,n,A],0]],bc=[0,m,[0,[0,n,B],0]],a9=[0,E],a_=[0,A],a$=[0,B],bx=b.Haz3lcore__Base,bv=b.Haz3lcore__Molds,bu=b.Haz3lcore__Ancestors,aj=i[1],ak=i[4],al=i[5],am=i[9],M=i[13];/*<>*/function +b=q.caml_get_global_data(),v=aQ,w=aQ,o=aT,p=aT,aB=b.Stdlib,L=b.Haz3lcore__Form,aC=b.Haz3lcore__Secondary,G=b.Haz3lcore__Id,A=b.Haz3lcore__Effect,g=b.Haz3lcore__Selection,r=b.Haz3lcore__Backpack,R=b.Stdlib__Option,ab=b.Assert_failure,k=b.Stdlib__List,ay=b.Haz3lcore__Tile,s=b.Haz3lcore__Segment,aA=b.Util__ListUtil,aG=b.Sexplib__Sexp,y=b.Haz3lcore__Piece,W=b.Haz3lcore__ProjectorBase,z=b.Haz3lcore__Projector,ag=b.Haz3lcore__Measured,x=b.Haz3lcore__Siblings,H=b.Util__OptUtil,aw=b.Util__Direction,j=b.Haz3lcore__Relatives,l=b.Stdlib__Format,d=b.Ppx_yojson_conv_lib__Yojson_conv_error,c=b.Sexplib0__Sexp_conv_error,i=b.Haz3lcore__ZipperBase,bw=[0,ai,260,4],by=[0,aK],bz=[0,aK],bA=[0,0,0],bt=[0,ai,83,2],bs=[0,ai,77,2],bd=D,be=E,bf=[0,[12,40,[18,[1,[0,[11,V,0],V]],[11,u,[17,[0,aW,1,0],0]]]],"(@[<2>Left@ "],bg=[0,[17,0,[12,41,0]],aO],bh=[0,[12,40,[18,[1,[0,[11,V,0],V]],[11,t,[17,[0,aW,1,0],0]]]],"(@[<2>Right@ "],bi=[0,[17,0,[12,41,0]],aO],bj=[0,[15,0],aU],bo=[0,m,[0,[0,n,D],0]],bp=[0,m,[0,[0,n,E],0]],bq=[0,n,u],br=[0,n,t],bk=[0,D],bl=[0,E],bm=[0,u],bn=[0,t],a5=F,a6=B,a7=C,a8=[0,[15,0],aU],ba=[0,m,[0,[0,n,F],0]],bb=[0,m,[0,[0,n,B],0]],bc=[0,m,[0,[0,n,C],0]],a9=[0,F],a_=[0,B],a$=[0,C],bx=b.Haz3lcore__Base,bv=b.Haz3lcore__Molds,bu=b.Haz3lcore__Ancestors,aj=i[1],ak=i[4],al=i[5],am=i[9],M=i[13];/*<>*/function N(a,b){/*<>*/switch(b){case 0:/*<>*/return/*<>*/f(l[13],a,a5);case 1:/*<>*/return/*<>*/f(l[13],a,a6);default:/*<>*/return/*<>*/f(l[13],a,a7)}/*<>*/}/*<>*/function X(a){/*<>*/a:{if(0===a[0]){var -b=a[1];b:if(b!==E){c:if(b!==B){if(b!==A){if(b===aP)break b;if(b===aL)break c;if(b!==aN)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var +b=a[1];b:if(b!==F){c:if(b!==C){if(b!==B){if(b===aP)break b;if(b===aL)break c;if(b!==aN)break a}/*<>*/return 1}/*<>*/return 2}/*<>*/return 0}var e=a[1];if(!e)/*<>*/return/*<>*/f(c[7],v,a);var g=e[1];if(0!==g[0])/*<>*/return/*<>*/f(c[6],v,a);var -d=g[1];b:if(d!==E){c:if(d!==B){if(d!==A){if(d===aP)break b;if(d===aL)break c;if(d!==aN)break a}/*<>*/return/*<>*/f(c[3],v,a)}/*<>*/return/*<>*/f(c[3],v,a)}/*<>*/return/*<>*/f(c[3],v,a)}/*<>*/return/*<>*/f(c[8],v,a)/*<>*/}function +d=g[1];b:if(d!==F){c:if(d!==C){if(d!==B){if(d===aP)break b;if(d===aL)break c;if(d!==aN)break a}/*<>*/return/*<>*/f(c[3],v,a)}/*<>*/return/*<>*/f(c[3],v,a)}/*<>*/return/*<>*/f(c[3],v,a)}/*<>*/return/*<>*/f(c[8],v,a)/*<>*/}function Y(a){/*<>*/switch(a){case 0:/*<>*/return a9;case 1:/*<>*/return a_;default:/*<>*/return a$}/*<>*/}/*<>*/function @@ -437397,7 +437402,7 @@ b=a[2];if(!b)/*<>*/return/*<>*/f(d[3],w,a):0;if(e===B)return b[2]?/*<>*/f(d[3],w,a):2;if(e===A)return b[2]?/*<>*/f(d[3],w,a):1}else if(m===g)/*<>*/return/*<>*/f(d[6],w,a)}}/*<>*/return/*<>*/f(d[8],w,a)/*<>*/}function +e=c[2];if(e===F)return b[2]?/*<>*/f(d[3],w,a):0;if(e===C)return b[2]?/*<>*/f(d[3],w,a):2;if(e===B)return b[2]?/*<>*/f(d[3],w,a):1}else if(m===g)/*<>*/return/*<>*/f(d[6],w,a)}}/*<>*/return/*<>*/f(d[8],w,a)/*<>*/}function _(a){/*<>*/switch(a){case 0:/*<>*/return ba;case 1:/*<>*/return bb;default:/*<>*/return bc}/*<>*/}var @@ -437413,35 +437418,35 @@ ap(a){/*<>*/return/*<>*/var b=a[2],/*<>*/c=/*<>*/e(j[12],a[3]);/*<>*/return/*<>*/f(r[12],c,b)/*<>*/}function aq(a){/*<>*/ /*<>*/var -b=/*<>*/e(x[23],a);/*<>*/return/*<>*/e(/*<>*/e(G[9],y[45]),b)/*<>*/}function +b=/*<>*/e(x[23],a);/*<>*/return/*<>*/e(/*<>*/e(H[9],y[45]),b)/*<>*/}function ar(a){/*<>*/ /*<>*/var -b=/*<>*/e(x[24],a);/*<>*/return/*<>*/e(/*<>*/e(G[9],y[45]),b)/*<>*/}function +b=/*<>*/e(x[24],a);/*<>*/return/*<>*/e(/*<>*/e(H[9],y[45]),b)/*<>*/}function O(a,b){/*<>*/if(!/*<>*/e(g[26],b[1]))/*<>*/throw/*<>*/ah([0,ab,bs],1);/*<>*/ /*<>*/var c=/*<>*/f(j[17],a,b[3]);/*<>*/return[0,b[1],b[2],c,b[4],b[5]]/*<>*/}function as(a){/*<>*/if(!/*<>*/e(g[26],a[1]))/*<>*/throw/*<>*/ah([0,ab,bt],1);/*<>*/var b=a[5],c=a[4],/*<>*/d=/*<>*/e(j[16],a[3]);/*<>*/return[0,a[1],a[2],d,c,b]/*<>*/}function ac(a){/*<>*/return a[1][3]?[0,g[23],a[2],a[3],a[4],a[5]]:a/*<>*/}function -H(a,b){/*<>*/var +I(a,b){/*<>*/var d=a?a[1]:0,/*<>*/c=d?ac(b):b,/*<>*/h=c[3],/*<>*/i=/*<>*/e(/*<>*/f(j[9],c[1][1],c[1][2]),h),/*<>*/k=/*<>*/e(j[23],i);/*<>*/return[0,g[23],c[2],k,c[4],c[5]]/*<>*/}function ad(a,b){/*<>*/var -c=a?a[1]:0,/*<>*/d=[0,c];/*<>*/return ap(function(a){/*<>*/return H(d,a)}(b))/*<>*/}function +c=a?a[1]:0,/*<>*/d=[0,c];/*<>*/return ap(function(a){/*<>*/return I(d,a)}(b))/*<>*/}function P(a,b){/*<>*/var -c=b[1];/*<>*/return[0,c,H(0,[0,a,b[2],b[3],b[4],b[5]])]/*<>*/}function +c=b[1];/*<>*/return[0,c,I(0,[0,a,b[2],b[3],b[4],b[5]])]/*<>*/}function at(a,b){/*<>*/return P(a,b)[2]/*<>*/}function ae(b){/*<>*/ /*<>*/var -a=/*<>*/e(I[48][3],b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var -c=/*<>*/f(j[10],b[1][1],b[3]);/*<>*/return/*<>*/f(G[10][2],c,function(a){/*<>*/var +a=/*<>*/e(z[49][3],b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var +c=/*<>*/f(j[10],b[1][1],b[3]);/*<>*/return/*<>*/f(H[10][2],c,function(a){/*<>*/var c=a[2],/*<>*/d=/*<>*/f(g[27],a[1],b[1]);/*<>*/return[0,d,b[2],c,b[4],b[5]]/*<>*/})/*<>*/}function au(a){/*<>*/ /*<>*/var b=/*<>*/e(g[28],a[1]);if(!b){/*<>*/ /*<>*/var n=/*<>*/e(g[25],a[1]);/*<>*/return ae([0,n,a[2],a[3],a[4],a[5]])}/*<>*/var -c=b[1],d=c[2],i=c[1],/*<>*/h=/*<>*/e(I[48][7],a);if(h)/*<>*/return[0,h[1]];/*<>*/var +c=b[1],d=c[2],i=c[1],/*<>*/h=/*<>*/e(z[49][7],a);if(h)/*<>*/return[0,h[1]];/*<>*/var k=a[3],/*<>*/l=/*<>*/e(/*<>*/f(j[8],d[1],i),k),/*<>*/m=/*<>*/e(j[23],l);/*<>*/return[0,[0,d,a[2],m,a[4],a[5]]]/*<>*/}function av(a,b){/*<>*/var -c=b[1],d=c[3],f=c[2],/*<>*/g=[0,/*<>*/e(aw[7],a),f,d];/*<>*/return H(0,[0,g,b[2],b[3],b[4],b[5]])/*<>*/}function +c=b[1],d=c[3],f=c[2],/*<>*/g=[0,/*<>*/e(aw[7],a),f,d];/*<>*/return I(0,[0,g,b[2],b[3],b[4],b[5]])/*<>*/}function Q(c,b){/*<>*/if(!/*<>*/e(g[26],b[1]))/*<>*/return[0,av(c,b)];/*<>*/ /*<>*/var -a=/*<>*/f(I[49][1],c,b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var -d=/*<>*/f(j[10],c,b[3]);/*<>*/return/*<>*/f(G[10][2],d,function(a){/*<>*/var +a=/*<>*/f(z[50][1],c,b);if(a)/*<>*/return[0,a[1]];/*<>*/ /*<>*/var +d=/*<>*/f(j[10],c,b[3]);/*<>*/return/*<>*/f(H[10][2],d,function(a){/*<>*/var d=a[2],g=a[1],/*<>*/h=/*<>*/e(aw[7],c),/*<>*/i=/*<>*/e(/*<>*/f(j[8],h,g),d),/*<>*/k=/*<>*/e(j[23],i);/*<>*/return[0,b[1],b[2],k,b[4],b[5]]/*<>*/})/*<>*/}function ax(a,b){/*<>*/return a===b[1][1]?ae(b):au(b)/*<>*/}function J(a,b){/*<>*/var @@ -437449,27 +437454,30 @@ m=a?a[1]:1,/*<>*/n=/*<>*/f(x[16],a,c[3][1]);/*<>*/return b?b:f(bu[21],a,c[3][2])/*<>*/}),o),l=j[1],p=j[2];/*<>*/if(m)/*<>*/var/*<>*/q=/*<>*/f(k[20],ay[42],l),d=/*<>*/e(k[15],q);else var d=l;/*<>*/ /*<>*/var -t=/*<>*/f(k[20],function(a){/*<>*/return a[1]/*<>*/},d);/*<>*/ /*<>*/e(z[9],t);/*<>*/var/*<>*/u=/*<>*/e(/*<>*/e(r[14],p),n),/*<>*/v=/*<>*/e(/*<>*/e(k[20],s[13]),d),/*<>*/w=g[19],/*<>*/y=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return h(w,0,0,a)}),v),/*<>*/A=/*<>*/e(/*<>*/e(r[11],y),u);/*<>*/return[0,c[1],A,c[3],c[4],c[5]]/*<>*/}function +t=/*<>*/f(k[20],function(a){/*<>*/return a[1]/*<>*/},d);/*<>*/ /*<>*/e(A[9],t);/*<>*/var/*<>*/u=/*<>*/e(/*<>*/e(r[14],p),n),/*<>*/v=/*<>*/e(/*<>*/e(k[20],s[13]),d),/*<>*/w=g[19],/*<>*/y=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return h(w,0,0,a)}),v),/*<>*/z=/*<>*/e(/*<>*/e(r[11],y),u);/*<>*/return[0,c[1],z,c[3],c[4],c[5]]/*<>*/}function az(c,b){/*<>*/ /*<>*/var a=function(a){/*<>*/return ax(c,a)}(b);/*<>*/return/*<>*/e(/*<>*/e(R[7],function(a){/*<>*/return J(0,a)}),a)/*<>*/}function -K(g,b){/*<>*/var/*<>*/c=J(0,b),/*<>*/a=aa(c);/*<>*/return/*<>*/f(G[10][1],a,function(a){/*<>*/var -b=a[2],f=a[3],/*<>*/h=/*<>*/e(s[16],b[2]),/*<>*/i=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return a[1]/*<>*/}),h);/*<>*/ /*<>*/e(z[9],i);/*<>*/ /*<>*/var -d=H(0,function(a){/*<>*/return at(b,a)}([0,c[1],f,c[3],c[4],c[5]]));/*<>*/return g?Q(0,d):[0,d]/*<>*/})/*<>*/}function +K(g,b){/*<>*/var/*<>*/c=J(0,b),/*<>*/a=aa(c);/*<>*/return/*<>*/f(H[10][1],a,function(a){/*<>*/var +b=a[2],f=a[3],/*<>*/h=/*<>*/e(s[16],b[2]),/*<>*/i=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return a[1]/*<>*/}),h);/*<>*/ /*<>*/e(A[9],i);/*<>*/ /*<>*/var +d=I(0,function(a){/*<>*/return at(b,a)}([0,c[1],f,c[3],c[4],c[5]]));/*<>*/return g?Q(0,d):[0,d]/*<>*/})/*<>*/}function af(a,b,c,d){/*<>*/var i=c;/*<>*/for(;;){if(i&&!i[2]){var -l=i[1];/*<>*/if(/*<>*/e(L[48],l)){i=[0,/*<>*/f(aB[28],L[46],L[46]),0];continue}/*<>*/if(/*<>*/e(L[42],l)){/*<>*/var/*<>*/D=/*<>*/e(aC[21],l),/*<>*/p=/*<>*/e(F[5],0);/*<>*/ /*<>*/e(z[9],[0,p,0]);/*<>*/var/*<>*/m=J(0,d),/*<>*/E=/*<>*/f(bx[19],p,D),/*<>*/G=[0,/*<>*/h(g[19],0,0,E),0],/*<>*/H=/*<>*/f(r[11],G,m[2]),/*<>*/I=K(a,[0,m[1],H,m[3],m[4],m[5]]);/*<>*/return/*<>*/e(R[4],I)}/*<>*/if(/*<>*/e(L[44],l)){/*<>*/ /*<>*/var -q=/*<>*/e(F[5],0);/*<>*/ /*<>*/e(z[9],[0,q,0]);/*<>*/var +l=i[1];/*<>*/if(/*<>*/e(L[48],l)){i=[0,/*<>*/f(aB[28],L[46],L[46]),0];continue}/*<>*/if(/*<>*/e(L[42],l)){/*<>*/var/*<>*/D=/*<>*/e(aC[21],l),/*<>*/p=/*<>*/e(G[5],0);/*<>*/ /*<>*/e(A[9],[0,p,0]);/*<>*/var/*<>*/m=J(0,d),/*<>*/E=/*<>*/f(bx[19],p,D),/*<>*/F=[0,/*<>*/h(g[19],0,0,E),0],/*<>*/H=/*<>*/f(r[11],F,m[2]),/*<>*/I=K(a,[0,m[1],H,m[3],m[4],m[5]]);/*<>*/return/*<>*/e(R[4],I)}/*<>*/if(/*<>*/e(L[44],l)){/*<>*/ /*<>*/var +q=/*<>*/e(G[5],0);/*<>*/ /*<>*/e(A[9],[0,q,0]);/*<>*/var M=[0,l];/*<>*/return/*<>*/e(/*<>*/e(am,function(a){/*<>*/var -b=a[2];/*<>*/return[0,/*<>*/f(aB[37],a[1],[0,[2,[0,q,M]],0]),b]/*<>*/}),d)}}/*<>*/var/*<>*/j=J(0,d),/*<>*/n=/*<>*/e(bv[8],i);/*<>*/if(0===n)/*<>*/throw/*<>*/ah([0,ab,bw],1);/*<>*/var/*<>*/t=/*<>*/e(k[6],n),/*<>*/o=/*<>*/e(F[5],0);/*<>*/ /*<>*/e(z[9],[0,o,0]);/*<>*/var/*<>*/u=/*<>*/f(k[21],function(a,b){/*<>*/return a/*<>*/},i),/*<>*/v=/*<>*/bH(ay[40],o,i,t,u),/*<>*/w=/*<>*/e(/*<>*/e(k[20],s[13]),v),/*<>*/x=g[19],/*<>*/y=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return h(x,0,0,a)}),w),/*<>*/A=/*<>*/e(/*<>*/e(aA[1],1===b?1:0),y),/*<>*/B=/*<>*/f(r[11],A,j[2]),/*<>*/C=K(a,[0,j[1],B,j[3],j[4],j[5]]);/*<>*/return/*<>*/e(R[4],C)}/*<>*/}function +b=a[2];/*<>*/return[0,/*<>*/f(aB[37],a[1],[0,[2,[0,q,M]],0]),b]/*<>*/}),d)}}/*<>*/var/*<>*/j=J(0,d),/*<>*/n=/*<>*/e(bv[8],i);/*<>*/if(0===n)/*<>*/throw/*<>*/ah([0,ab,bw],1);/*<>*/var/*<>*/t=/*<>*/e(k[6],n),/*<>*/o=/*<>*/e(G[5],0);/*<>*/ /*<>*/e(A[9],[0,o,0]);/*<>*/var/*<>*/u=/*<>*/f(k[21],function(a,b){/*<>*/return a/*<>*/},i),/*<>*/v=/*<>*/bH(ay[40],o,i,t,u),/*<>*/w=/*<>*/e(/*<>*/e(k[20],s[13]),v),/*<>*/x=g[19],/*<>*/y=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return h(x,0,0,a)}),w),/*<>*/z=/*<>*/e(/*<>*/e(aA[1],1===b?1:0),y),/*<>*/B=/*<>*/f(r[11],z,j[2]),/*<>*/C=K(a,[0,j[1],B,j[3],j[4],j[5]]);/*<>*/return/*<>*/e(R[4],C)}/*<>*/}function aD(f,b,c,d){/*<>*/ /*<>*/var a=function(a){/*<>*/return az(f,a)}(d);/*<>*/return/*<>*/e(/*<>*/e(R[7],function(a){/*<>*/return af(f,b,c,a)}),a)/*<>*/}function aE(a){/*<>*/var/*<>*/f=/*<>*/e(M,a),/*<>*/b=/*<>*/e(x[25],f),c=b[1];if(c)/*<>*/return[0,[0,c[1],0]];var d=b[2];return d?[0,[0,d[1],1]]:0/*<>*/}function aF(a,b){/*<>*/ /*<>*/var d=aE(b);if(!d)/*<>*/return bA;/*<>*/var -g=d[1],c=g[1],l=g[2],/*<>*/m=b[5],/*<>*/n=/*<>*/e(y[30],c),/*<>*/i=/*<>*/f(W[13][8],n,m),/*<>*/o=/*<>*/e(I[41],c)?c:i?/*<>*/f(I[43],i[1],[0,c,0,0]):c,/*<>*/j=/*<>*/e(y[38],o);/*<>*/if(l){/*<>*/ /*<>*/var -p=/*<>*/e(k[6],j);/*<>*/return/*<>*/h(ag[40],by,p,a)[1]}/*<>*/ /*<>*/var -q=/*<>*/e(aA[28],j);/*<>*/return/*<>*/h(ag[40],bz,q,a)[2]/*<>*/}function +g=d[1],c=g[1],m=g[2],/*<>*/n=b[5],/*<>*/o=/*<>*/e(y[30],c),/*<>*/i=/*<>*/f(W[13][8],o,n);if(/*<>*/e(z[42],c)||!i)var +j=c;else/*<>*/var +r=i[1],/*<>*/s=/*<>*/e(z[38],c),j=/*<>*/f(z[44],r,s);/*<>*/ /*<>*/var +l=/*<>*/e(y[38],j);/*<>*/if(m){/*<>*/ /*<>*/var +p=/*<>*/e(k[6],l);/*<>*/return/*<>*/h(ag[40],by,p,a)[1]}/*<>*/ /*<>*/var +q=/*<>*/e(aA[28],l);/*<>*/return/*<>*/h(ag[40],bz,q,a)[2]/*<>*/}function S(a){/*<>*/return aa(a)?0===a[4]?1:0:0/*<>*/}function aH(a){/*<>*/var b=a[3][1][2];/*<>*/if(b){var @@ -437484,11 +437492,11 @@ c=Q(1,b);if(!c)/*<>*/return b;b=c[1]}/*<< b=a;/*<>*/for(;;)/*<>*/if(S(b)){/*<>*/var/*<>*/d=c(b,b),/*<>*/e=K(1,d);if(!e)/*<>*/return d;b=O(1,e[1])}else{/*<>*/var/*<>*/f=i(b),/*<>*/g=c(f,f),/*<>*/h=K(1,g);if(!h)/*<>*/return g;b=O(1,h[1])}/*<>*/}([0,a[1],a[2],a[3],0,a[5]])/*<>*/}function T(a,b,c){/*<>*/var d=b?ac(c):c,/*<>*/e=a?aI(d):d;/*<>*/return ad([0,b],e)/*<>*/}var/*<>*/bB=0,bC=0,/*<>*/bD=1,bE=1,/*<>*/bF=1,bG=0;q.caml_register_global(101,[0,aj,aX,aY,ak,al,aZ,a0,a1,am,a2,a3,a4,M,function(a){/*<>*/var -b=W[13][7],/*<>*/c=[0,[0,0,[0,[1,[0,/*<>*/e(F[5],0),0]],0]],0];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,c,0,b]/*<>*/},function(a){/*<>*/return/*<>*/e(F[5],0)/*<>*/},N,function(a){/*<>*/return/*<>*/h(l[aM],a8,N,a)/*<>*/},X,Y,Z,_,an,function(a){/*<>*/return/*<>*/h(l[aM],bj,an,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var -d=a[1];b:if(d!==D){c:if(d!==u){d:if(d!==t){if(d!==C){if(d===aS)break b;if(d===aV)break c;if(d===aJ)break d;if(d!==aR)break a}/*<>*/return 0}/*<>*/return/*<>*/f(c[5],o,a)}/*<>*/return/*<>*/f(c[5],o,a)}/*<>*/return 1}var +b=W[13][7],/*<>*/c=[0,[0,0,[0,[1,[0,/*<>*/e(G[5],0),0]],0]],0];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,c,0,b]/*<>*/},function(a){/*<>*/return/*<>*/e(G[5],0)/*<>*/},N,function(a){/*<>*/return/*<>*/h(l[aM],a8,N,a)/*<>*/},X,Y,Z,_,an,function(a){/*<>*/return/*<>*/h(l[aM],bj,an,a)/*<>*/},function(a){/*<>*/a:{if(0===a[0]){var +d=a[1];b:if(d!==E){c:if(d!==u){d:if(d!==t){if(d!==D){if(d===aS)break b;if(d===aV)break c;if(d===aJ)break d;if(d!==aR)break a}/*<>*/return 0}/*<>*/return/*<>*/f(c[5],o,a)}/*<>*/return/*<>*/f(c[5],o,a)}/*<>*/return 1}var e=a[1];if(!e)/*<>*/return/*<>*/f(c[7],o,a);var j=e[1];if(0!==j[0])/*<>*/return/*<>*/f(c[6],o,a);var -b=j[1];b:if(b!==D){c:if(b!==u){d:if(b!==t){if(b!==C){if(b===aS)break b;if(b===aV)break c;if(b===aJ)break d;if(b!==aR)break a}/*<>*/return/*<>*/f(c[3],o,a)}var +b=j[1];b:if(b!==E){c:if(b!==u){d:if(b!==t){if(b!==D){if(b===aS)break b;if(b===aV)break c;if(b===aJ)break d;if(b!==aR)break a}/*<>*/return/*<>*/f(c[3],o,a)}var g=e[2];if(g&&!g[2])/*<>*/return[1,X(g[1])];/*<>*/return/*<>*/h(c[4],o,b,a)}var i=e[2];if(i&&!i[2])/*<>*/return[0,X(i[1])];/*<>*/return/*<>*/h(c[4],o,b,a)}/*<>*/return/*<>*/f(c[3],o,a)}/*<>*/return/*<>*/f(c[8],o,a)/*<>*/},function(a){/*<>*/return typeof a==="number"?0===a?bk:bl:0===a[0]?[1,[0,bm,[0,Y(a[1]),0]]]:[1,[0,bn,[0,Y(a[1]),0]]]/*<>*/},function(a){/*<>*/if(typeof @@ -437499,16 +437507,16 @@ b=a[2];if(!b)/*<>*/return/*<>*/f(d[3],p,a):1;if(c===u){var +c=e[2];if(c===E)return b[2]?/*<>*/f(d[3],p,a):1;if(c===u){var i=b[2];if(i&&!i[2])/*<>*/return[0,Z(i[1])];/*<>*/return/*<>*/h(d[4],p,c,a)}if(c===t){var -g=b[2];if(g&&!g[2])/*<>*/return[1,Z(g[1])];/*<>*/return/*<>*/h(d[4],p,c,a)}if(c===C)return b[2]?/*<>*/f(d[3],p,a):0}else if(m===l)/*<>*/return/*<>*/f(d[6],p,a)}}}/*<>*/return/*<>*/f(d[8],p,a)/*<>*/},function(a){/*<>*/return typeof +g=b[2];if(g&&!g[2])/*<>*/return[1,Z(g[1])];/*<>*/return/*<>*/h(d[4],p,c,a)}if(c===D)return b[2]?/*<>*/f(d[3],p,a):0}else if(m===l)/*<>*/return/*<>*/f(d[6],p,a)}}}/*<>*/return/*<>*/f(d[8],p,a)/*<>*/},function(a){/*<>*/return typeof a==="number"?0===a?bo:bp:0===a[0]?[0,m,[0,bq,[0,_(a[1]),0]]]:[0,m,[0,br,[0,_(a[1]),0]]]/*<>*/},function(a){/*<>*/return typeof a==="number"?0===a?0:1:0===a[0]?0:1/*<>*/},ao,function(b){function c(a){/*<>*/return b/*<>*/}/*<>*/return function(a){/*<>*/return ao(c,a)}/*<>*/},function(a){/*<>*/var b=a[5],c=a[4],/*<>*/d=/*<>*/e(j[14],a[3]);/*<>*/return[0,a[1],a[2],d,c,b]/*<>*/},ap,function(a){/*<>*/var b=W[13][7];/*<>*/return[0,/*<>*/h(g[19],0,0,0),0,[0,[0,a,0],0],0,b]/*<>*/},aa,aq,ar,function(a){/*<>*/ /*<>*/var -b=ar(a);/*<>*/return[0,aq(a),b]/*<>*/},O,as,function(c,b){/*<>*/return function(a){/*<>*/return O(c,a)}(as(b))/*<>*/},ac,H,ad,P,at,ae,au,function(a){/*<>*/var -b=a[5],c=a[4],d=a[3],f=a[2];/*<>*/return[0,/*<>*/e(g[25],a[1]),f,d,c,b]/*<>*/},av,Q,ax,function(a){/*<>*/var/*<>*/c=P(g[23],a),b=c[2],/*<>*/i=c[1][2],/*<>*/j=/*<>*/e(/*<>*/e(s[48],0),i),/*<>*/l=/*<>*/e(/*<>*/e(s[48],1),j),/*<>*/d=/*<>*/h(g[19],0,0,l),/*<>*/m=/*<>*/e(s[16],d[2]),/*<>*/n=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return a[1]/*<>*/}),m);/*<>*/ /*<>*/e(z[9],n);/*<>*/ /*<>*/var +b=ar(a);/*<>*/return[0,aq(a),b]/*<>*/},O,as,function(c,b){/*<>*/return function(a){/*<>*/return O(c,a)}(as(b))/*<>*/},ac,I,ad,P,at,ae,au,function(a){/*<>*/var +b=a[5],c=a[4],d=a[3],f=a[2];/*<>*/return[0,/*<>*/e(g[25],a[1]),f,d,c,b]/*<>*/},av,Q,ax,function(a){/*<>*/var/*<>*/c=P(g[23],a),b=c[2],/*<>*/i=c[1][2],/*<>*/j=/*<>*/e(/*<>*/e(s[48],0),i),/*<>*/l=/*<>*/e(/*<>*/e(s[48],1),j),/*<>*/d=/*<>*/h(g[19],0,0,l),/*<>*/m=/*<>*/e(s[16],d[2]),/*<>*/n=/*<>*/e(/*<>*/e(k[20],function(a){/*<>*/return a[1]/*<>*/}),m);/*<>*/ /*<>*/e(A[9],n);/*<>*/ /*<>*/var o=/*<>*/f(r[10],d,b[2]);/*<>*/return[0,b[1],o,b[3],b[4],b[5]]/*<>*/},J,az,K,af,function(a,b,c){/*<>*/return af(a,0,[0,b,0],c)/*<>*/},aD,function(a,b,c){/*<>*/return aD(a,0,[0,b,0],c)/*<>*/},aE,function(a){/*<>*/if(a[4])/*<>*/return 0;/*<>*/var/*<>*/f=/*<>*/e(M,a),/*<>*/b=/*<>*/e(x[25],f),c=b[1];if(c){var d=b[2];if(d){var g=d[1];/*<>*/if(/*<>*/e(y[42],c[1])&&/*<>*/e(y[42],g))/*<>*/return 0}}/*<>*/ /*<>*/var @@ -437517,7 +437525,7 @@ b=ad(0,a);/*<>*/return/*<>*/e(al,a);/*<>*/return/*<>*/e(aG[53],b)/*<>*/},function(a){/*<>*/return/*<>*/e(ak,/*<>*/e(aG[43],a))/*<>*/},S,function(a,b,c){/*<>*/var d=a[5],e=a[4],h=a[3],i=a[2];/*<>*/return[0,/*<>*/f(g[20],b,c),i,h,e,d]/*<>*/},aH,aI,T,function(a){/*<>*/return T(bC,bB,a)},function(a){/*<>*/return T(bE,bD,a)},function(a){/*<>*/return T(bG,bF,a)}],"Haz3lcore__Zipper");return/*<>*/}(globalThis)); -//# 6713 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6721 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -437525,7 +437533,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__MetaVar");return/*<>*/}(globalThis)); -//# 6722 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6730 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="InVarHole",G="<2>",F="notInVarHole",E="%a",D="@,",B="free",C="src/haz3lcore/dynamics/VarErrStatus.re.HoleReason.t",n="NotInVarHole",A="src/haz3lcore/dynamics/VarErrStatus.re.t",m="Free",y="inVarHole",z=143,v=139,g=848054398,l=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -437564,13 +437572,13 @@ m=k[2];if(m&&!m[2]){/*<>*/var s=m[1],/*<>*/u=/*<>*/d(h[5],k[1]);/*<>*/return[0,u,/*<>*/d(p[5],s)]}}/*<>*/return/*<>*/t(e[4],j,i,a)}if(i===n)return b[2]?/*<>*/c(e[3],j,a):0}else if(g===r)/*<>*/return/*<>*/c(e[6],j,a)}}}/*<>*/return/*<>*/c(e[8],j,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return T;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(h[6],a[1]);/*<>*/return[0,g,[0,S,[0,c,[0,/*<>*/d(p[6],b),0]]]]/*<>*/}],"Haz3lcore__VarErrStatus");return/*<>*/}(globalThis)); -//# 6762 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6770 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),c=e.Haz3lcore__Typ,b=e.Haz3lcore__VarMap;d.caml_register_global(2,[0,function(a){/*<>*/return/*<>*/f(b[3],c[13],a)/*<>*/},function(a){/*<>*/return/*<>*/f(b[4],c[11],a)/*<>*/},b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18]],"Haz3lcore__VarCtx");return/*<>*/}(globalThis)); -//# 6769 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6777 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ad="src/haz3lcore/dynamics/VarBstMap.re.Inner.binding",v="<2>",r="@ ",o="rev_order",_=" =",ac="%a",ab="src/haz3lcore/dynamics/VarBstMap.re.Ordered.t_",D="",aa=963043957,n="map",Z=";@ ",Y="@]",$="@[%s =@ ",X=143,j=139,w=848054398,l=a.jsoo_runtime,W=l.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -437658,7 +437666,7 @@ e=a[1],/*<>*/b=/*<>*/c=s(e,b);return c?[0,b,c[1]]:u(0)/*<>*/}),b)/*<>*/},function(a){/*<>*/var/*<>*/b=S(a),/*<>*/c=/*<>*/d(/*<>*/d(f[20],function(a){/*<>*/return[0,a[1],0]/*<>*/}),a);/*<>*/return[0,b,/*<>*/d(f[10],c)]/*<>*/},function(c,b){/*<>*/return V(function(a){/*<>*/var b=a[1];/*<>*/return 1-/*<>*/e(f[34],function(a){/*<>*/return a==b?1:0/*<>*/},c)/*<>*/},b)/*<>*/}]],"Haz3lcore__VarBstMap");return/*<>*/}(globalThis)); -//# 6858 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6866 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="NotInHole",I="<2>",H="%a",n="TypeInconsistent",o="InHole",G="inHole",F="@,",m="WrongLength",E="src/haz3lcore/dynamics/ErrStatus.re.HoleReason.t",C="notInHole",D=143,w=139,g=848054398,i=-976970511,B="src/haz3lcore/dynamics/ErrStatus.re.t",A="typeInconsistent",z="wrongLength",h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -437698,7 +437706,7 @@ m=k[2];if(m&&!m[2]){/*<>*/var r=m[1],/*<>*/t=/*<>*/d(j[5],k[1]);/*<>*/return[0,t,/*<>*/d(s[5],r)]}}/*<>*/return/*<>*/u(e[4],l,h,a)}if(h===p)return b[2]?/*<>*/c(e[3],l,a):0}else if(g===q)/*<>*/return/*<>*/c(e[6],l,a)}}}/*<>*/return/*<>*/c(e[8],l,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return Y;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(j[6],a[1]);/*<>*/return[0,g,[0,X,[0,c,[0,/*<>*/d(s[6],b),0]]]]/*<>*/}],"Haz3lcore__ErrStatus");return/*<>*/}(globalThis)); -//# 6899 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6907 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -437706,7 +437714,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__MetaVarInst");return/*<>*/}(globalThis)); -//# 6908 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6916 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aq="listLit",$="%S",N="BoolLit",ay="boolLit",ap="ap",M="Var",ao="badConstructor",L="StringLit",ae="@[<2>[",b="<2>",n="@ ",ax="stringLit",G="@])",K="Constructor",W="Cons",S="NonEmptyHole",v=",@ ",aw="intLit",t="@,",av="tuple",ad="@,]@]",V="Ap",F="))",au="var",as="constructor",at="nonEmptyHole",U="InvalidText",an="emptyHole",ac=";@ ",T="EmptyHole",R="BadConstructor",am="wild",J="FloatLit",al="cons",af="src/haz3lcore/dynamics/DHPat.re.t",I="@,))@]",g=139,Q="ListLit",r=-976970511,s=848054398,H="Tuple",P="Wild",ak="floatLit",E="IntLit",ar="invalidText",D=a.jsoo_runtime,C=D.caml_string_compare,aa=D.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):D.caml_call_gen(a,[b])}/*<>*/function @@ -437894,11 +437902,11 @@ f=b[1],/*<>*/g=Z(b[2]),/*<>*/d(x[20],Z,b[1]);/*<>*/return/*<>*/c(x[15],i);case 13:b=b[2];continue}/*<>*/return 0}/*<>*/}D.caml_register_global(188,[0,w,function(a){/*<>*/return/*<>*/i(f[143],bk,w,a)/*<>*/},y,z,A,B,function(a){/*<>*/if(a&&a[2])/*<>*/return[11,a];/*<>*/return/*<>*/c(ab[2],bR)/*<>*/},_,Z],"Haz3lcore__DHPat");return/*<>*/}(globalThis)); -//# 7097 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7105 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id;c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20]],"Haz3lcore__EnvironmentId");return/*<>*/}(globalThis)); -//# 7102 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7110 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -437906,7 +437914,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__HoleInstanceId");return/*<>*/}(globalThis)); -//# 7111 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7119 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="invalidOfString",w="negativeExponent",v="indexOutOfBounds",n="NegativeExponent",m="OutOfFuel",l="DivideByZero",u="src/haz3lcore/dynamics/InvalidOperationError.re.t",t="outOfFuel",k="InvalidOfString",s="divideByZero",j=-976970511,g=848054398,i="IndexOutOfBounds",o=a.jsoo_runtime,r=o.caml_string_compare;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function @@ -437940,7 +437948,7 @@ f=h[2];if(f===l)return e[2]?/*<>*/return Q;case 3:/*<>*/return R;default:/*<>*/return S}/*<>*/}],"Haz3lcore__InvalidOperationError");return/*<>*/}(globalThis)); -//# 7146 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7154 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -437948,7 +437956,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__KeywordID");return/*<>*/}(globalThis)); -//# 7155 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7163 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -437967,7 +437975,7 @@ b=e[1];if(!b)/*<>*/return/*<>*/j=/*<>*/d(f[2],a),/*<>*/g=/*<>*/h(f[15][18],j,i),k=g?g[1]:/*<>*/d(o[2],n);/*<>*/return/*<>*/d(c,k)/*<>*/}]/*<>*/},function(c,b){/*<>*/return[0,function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(c,a);e[1]=[0,f[15][1]];/*<>*/var/*<>*/b=/*<>*/d(c,a),/*<>*/g=[0,b,/*<>*/d(p[4],e[1])];e[1]=0;/*<>*/return m(g)/*<>*/},function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(b,a);/*<>*/var/*<>*/c=k(a),f=c[1];e[1]=[0,c[2]];/*<>*/ /*<>*/var g=/*<>*/d(b,f);e[1]=0;/*<>*/return g/*<>*/}]/*<>*/}],"Haz3lcore__StructureShareSexp");return/*<>*/}(globalThis)); -//# 7175 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7183 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cf="sequence",ae="BoolLit",cK="src/haz3lcore/dynamics/DH.re.if_consistency",b3="boolLit",b4="src/haz3lcore/dynamics/DH.re.DHFilter.t",ay="Prj",cr="rule",ce="binBoolOp",ag="StringLit",cJ="listConcat",l="@ ",aZ="Rule",cI="invalidOperation",b2="case",b1="stringLit",b0="boundVar",cd="typAp",cH="builtinFun",ad="BuiltinFun",aM="InvalidOperation",ah="Constructor",Z="%a",bZ="test",aL="Cons",cG="apBuiltin",cq="fixF",cc="intLit",aC="FreeVar",m="@,",cF="inconsistentBranches",aJ="IfThenElse",aK="FixF",ac="ConsistentCase",bY="tuple",cp="typFun",bX="fun",am="Sequence",S="Filter",ax="Ap",aB="BinFloatOp",cE=963043957,bW="nonEmptyHole",aA="TypFun",cD="constructor",aI="InvalidText",aw="EmptyHole",av="Closure",aX="Residue",aa="FloatLit",al="Fun",co="ifThenElse",bU="@[%s =@ ",cC="failedCast",aH="BinBoolOp",A="@,))@]",n=848054398,af="Tuple",p=-976970511,bg="filter",cA="closure",cB="consistentIf",bf="src/haz3lcore/dynamics/DH.re",au="FailedCast",cn="invalidText",b$="cast",ca="listLit",cb="src/haz3lcore/dynamics/DH.re.ClosureEnvironment.Inner.t",a8="%S",ak="pat",cm="consistentCase",bd="%d",bV="ap",at="BinStringOp",cl=")",bc="@[<2>[",cz="binStringOp",b="<2>",cj="freeVar",ck="src/haz3lcore/dynamics/DH.re.DHExp.case",cy="(Some ",b_="binIntOp",ar="BinIntOp",as="ApBuiltin",ci=" =",U="@])",cx="prj",aG="InconsistentBranches",b9="let",aq="Cast",ab="BoundVar",aF="NonEmptyHole",aY="ConsistentIf",o=",@ ",aV="Case",ap="ListConcat",aE="Test",be="@,]@]",cw="src/haz3lcore/dynamics/DH.re.Filter.t",b8="src/haz3lcore/dynamics/DH.re.DHExp.t",B="))",az="act",bu="",ch="inconsistentIf",b7="emptyHole",ao="Let",a9=";@ ",cv="None",cu="@]",b6="binFloatOp",cg="cons",ct="src/haz3lcore/dynamics/DH.re.DHExp.rule",an="TypAp",Y=143,g=139,aD="ListLit",$="IntLit",b5="residue",aW="InconsistentIf",cs="floatLit",X=a.jsoo_runtime,I=X.caml_equal,M=X.caml_string_compare,R=X.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):X.caml_call_gen(a,[b])}/*<>*/function @@ -438890,15 +438898,15 @@ c=g===b[1]?1:0,h=b[2],i=c?/*<>*/I(f,h):c;/* bS=[];function bT(c,b){/*<>*/ /*<>*/e(f[g],c,it);/*<>*/ /*<>*/h(J[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/e(f[g],c,iu);/*<>*/ /*<>*/d(d(bS[1],c),b);/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/e(f[g],c,iv)/*<>*/}R(bS,[0,N[1]]);h(_[2],ix,bx,[0,bT,function(a){/*<>*/return/*<>*/h(f[Y],iw,bT,a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[40],N[3],a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[39],N[4],a)/*<>*/},function(a){/*<>*/return e(y[45][30],N[5],a)},function(a){/*<>*/return e(y[45][14],N[6],a)},function(a,b){/*<>*/return[0,a,b]/*<>*/}]);X.caml_register_global(634,[0,bh,function(a){/*<>*/return/*<>*/h(f[Y],cN,bh,a)/*<>*/},bF,bv,bH,bw,P,H,ai,N,V,bx],"Haz3lcore__DH");return/*<>*/}(globalThis)); -//# 8099 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8107 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[7];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26]],"Haz3lcore__DHExp");return/*<>*/}(globalThis)); -//# 8104 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8112 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[8];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__Environment");return/*<>*/}(globalThis)); -//# 8109 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8117 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ae="invalidBoxedBoolLit",ad="invalidBuiltin",P="%S",al="invalidBoxedFloatLit",ak="freeInvalidVar",Q="src/haz3lcore/dynamics/EvaluatorError.re.t",aj="invalidBoxedTuple",D="InvalidBoxedFun",e="<2>",o="@ ",H="CastBVHoleGround",ac="stepDoesNotMatch",C="InvalidBoxedStringLit",G="InvalidBoxedBoolLit",q="@])",ai="invalidBoxedListLit",I="BadPatternMatch",ah="invalidBoxedTypFun",N="@,",F="InvalidBoxedListLit",L="OutOfFuel",aa="invalidProjection",ab="badPatternMatch",B="InvalidBoxedTuple",E="InvalidBoxedIntLit",_="outOfFuel",$="badBuiltinAp",A="InvalidProjection",ag="invalidBoxedStringLit",z="FreeInvalidVar",K="BadBuiltinAp",Z="invalidBoxedIntLit",y="InvalidBuiltin",af="invalidBoxedFun",Y="castBVHoleGround",g=139,m=-976970511,n=848054398,w="InvalidBoxedFloatLit",x="InvalidBoxedTypFun",J="StepDoesNotMatch",u=a.jsoo_runtime,v=u.caml_string_compare;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):u.caml_call_gen(a,[b])}/*<>*/function @@ -439013,7 +439021,7 @@ a==="number")switch(a){case 11:/*<>*/var e=a[2],/*<>*/f=/*<>*/c(s[45][3],a[1]);/*<>*/return[0,n,[0,bj,[0,f,[0,d(s[45][14],b[13],e),0]]]];default:/*<>*/return[0,n,[0,bk,[0,/*<>*/c(s[45][6],a[1]),0]]]}/*<>*/},[248,bl,u.caml_fresh_oo_id(0)]],"Haz3lcore__EvaluatorError");return/*<>*/}(globalThis)); -//# 8230 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8238 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="<2>",ag="int_of_string",M="@ ",J="Const",$="string_sub",L="%a",I=",@ ",af="mod",B="@,",K="Fn",_="))",ae="",ad="$Meta",Z="bool_of_string",H=143,ac="@,))@]",s=139,Y="float_of_string",ab="fn",aa="const",j=a.jsoo_runtime,X=j.caml_maybe_attach_backtrace,G=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -439100,11 +439108,11 @@ b=a[2],c=a[1];return 0===b[0]?[0,[0,c,z[16],b[1]]]:[0,[0,c,z[16],[3,b[1],b[2]]]] b=a[2],c=a[1];return 0===b[0]?0:[0,[0,c,b[3]]]/*<>*/},y[2]);j.caml_register_global(90,[0,C,function(a){/*<>*/return/*<>*/r(i[H],ap,C,a)/*<>*/},N,O,P,function(a){/*<>*/return/*<>*/r(i[H],as,P,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],N,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],O,a)/*<>*/},R,function(a){/*<>*/return/*<>*/r(i[H],au,R,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],v[48],a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],function(a){/*<>*/return d(v[24],function(a){/*<>*/return 0})},a)/*<>*/},m,c,y,d_,d$,/*<>*/r(u[26],function(a,b){/*<>*/var d=b[2],c=b[1];return 0===d[0]?/*<>*/f(F[10],a,[0,c,d[2]]):/*<>*/f(F[10],a,[0,c,[16,c]])/*<>*/},F[7],y[2])],"Haz3lcore__Builtins");return/*<>*/}(globalThis)); -//# 8318 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8326 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[9];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__ClosureEnvironment");return/*<>*/}(globalThis)); -//# 8323 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8331 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a6="sequence2",a7="consistentCaseRule",a5="let1",ae="Prj",an="BinFloatOp1",aY="mark",al="Ap1",am="Let1",m="@ ",be="let2",bu="invalidOperation",bv="ap2",bL="case",V="IfThenElse3",bd="binIntOp1",bK="boundVar",a4="typAp",bc="ifThenElse2",bO="src/haz3lcore/dynamics/EvalCtx.re.cls",av="InvalidOperation",bt="%a",aX="test",aJ="FailedCastCast",bs="apBuiltin",U="BinStringOp1",bb="fixF",ad="BinStringOp2",p="@,",br="inconsistentBranches",au="FixF",M="ConsistentCase",aV="tuple",aW="sequence1",aU="fun",T="Filter",ac="Ap2",ab="Cons1",bp="ifThenElse3",bq="binFloatOp2",aT="nonEmptyHole",bo="binStringOp2",S="IfThenElse1",at="Let2",aa="Closure",bn="(@[",R="Fun",a3="binBoolOp1",ak="ListConcat2",bm="failedCast",Q="ListConcat1",C="@,))@]",bP="failedCastCast",bl="listConcat2",as="IfThenElse2",n=-976970511,l=848054398,N="Tuple",bk="filter",bj="closure",$="FailedCast",bN="src/haz3lcore/dynamics/EvalCtx.re.case",a1="listLit",a2="cast",ba="consistentCase",aE="%d",P="BinIntOp1",a$="binIntOp2",az="@[<2>[",aj="BinBoolOp1",j="<2>",aS="cons1",bJ="src/haz3lcore/dynamics/EvalCtx.re.t",L="InconsistentBranchesRule",_="ApBuiltin",ar="BinIntOp2",ay="@])",bi="prj",aK="FilterPattern",aq="InconsistentBranches",aI="BoundVar",Z="Cast",ap="NonEmptyHole",q=",@ ",aH="Case",bh="listConcat1",ao="Test",Y="BinFloatOp2",aA="@,]@]",a_="binBoolOp2",a0="ap1",ai="BinBoolOp2",X="Mark",a9="binFloatOp1",ah="Sequence1",bg="ifThenElse1",D="))",bf="",bM="filterPattern",aB=";@ ",a8="binStringOp1",ag="Sequence2",aZ="cons2",W="TypAp",aR=143,K="ConsistentCaseRule",g=139,O="ListLit",aQ="inconsistentBranchesRule",af="Cons2",aC=a.jsoo_runtime,iF=aC.caml_maybe_attach_backtrace,r=aC.caml_string_compare,aD=aC.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):aC.caml_call_gen(a,[b])}/*<>*/function @@ -440120,7 +440128,7 @@ e!=="number"&&0===e[0]){e=e[2];continue}if(typeof b==="number"&&32===b)/*<>*/return[0,e];if(typeof e==="number")/*<>*/return 0;if(32===e[0]){e=e[1];continue}}/*<>*/return 0}/*<>*/}],"Haz3lcore__EvalCtx");return/*<>*/}(globalThis)); -//# 9340 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9348 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="called matches_cast_Cons with non-list pattern",d="src/haz3lcore/dynamics/PatternMatch.re",j=a.jsoo_runtime,U=j.caml_maybe_attach_backtrace,r=j.caml_trampoline,T=j.caml_trampoline_return;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -440490,7 +440498,7 @@ w!=="number")switch(w[0]){case 4:case 32:/*<>*/return 1;default:/*<>*/return 0}/*<>*/}j.caml_register_global(19,[0,e],"Haz3lcore__PatternMatch");return/*<>*/}(globalThis)); -//# 9711 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9719 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e="Pass",t="pass",s="src/haz3lcore/dynamics/TestStatus.re.t",d="Indet",b="Fail",r="fail",q="indet",n=-976970511,j=848054398,m=a.jsoo_runtime;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function @@ -440519,7 +440527,7 @@ k=h[2];if(k===b)return f[2]?/*<>*/c(i[ 0:/*<>*/return E;case 1:/*<>*/return F;default:/*<>*/return G}/*<>*/},p,/*<>*/c(H[26],p,0)],"Haz3lcore__TestStatus");return/*<>*/}(globalThis)); -//# 9741 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9749 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var W="@[<2>[",p="<2>",q="@ ",U="src/haz3lcore/dynamics/TestMap.re.instance_report",V="@])",z="%a",T=",@ ",S="@,",R="@,]@]",P="src/haz3lcore/dynamics/TestMap.re.report",Q="",O=";@ ",N="(@[",y=143,o=848054398,f=139,j=a.jsoo_runtime,x=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -440566,7 +440574,7 @@ d=/*<>*/c(M,a,b);return d?t(d[1]):2/*<>*/f=/*<>*/c(g[50],d,b);if(!f)/*<>*/return/*<>*/c(w[37],b,[0,[0,d,[0,e,0]],0]);/*<>*/var/*<>*/h=[0,[0,d,/*<>*/c(w[37],f[1],[0,e,0])],0],/*<>*/i=/*<>*/c(g[55],d,b);/*<>*/return/*<>*/c(w[37],i,h)/*<>*/},g[1],function(e,b){/*<>*/ /*<>*/var a=/*<>*/c(g[44],function(a){/*<>*/return e===t(a[2])?1:0/*<>*/},b);/*<>*/return/*<>*/d(g[1],a)/*<>*/}],"Haz3lcore__TestMap");return/*<>*/}(globalThis)); -//# 9789 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9797 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aM="fixUnwrap",a1="sequence",a2="completeFilter",Q="FunClosure",a0="binBoolOp",aZ="listConcat",P="@ ",ai="NotGroundOrHole",aL="completeClosure",aK="builtinWrap",$="FixClosure",aY="caseNext",aJ="letBind",aX="ground",aI="notGroundOrHole",_="Skip",z="BuiltinAp",Z="UpdateTest",aH="listCons",N="ListCons",O="Sequence",M="VarLookup",y="BinFloatOp",aG="updateTest",L="CastTypAp",aF="castAp",aE="castTypAp",K="TypFunAp",D="BinBoolOp",aD="invalidStep",aW="builtinAp",k=-976970511,l=848054398,Y="CompleteFilter",ak="Ground",aV="hole",aU="cast",aT="varLookup",J="CaseNext",aS="src/haz3lcore/dynamics/Transition.re.step_kind",aC="skip",C="BinStringOp",aR="binStringOp",r="<2>",aB="conditional",aA="fixClosure",I="FunAp",aQ="binIntOp",B="BinIntOp",H="@])",az="typFunAp",X="CompleteClosure",W="Cast",V="ListConcat",ay="funClosure",aP="caseApply",U="CaseApply",ax=">",S="BuiltinWrap",T="InvalidStep",R="LetBind",aw="projection",F="Projection",G="FixUnwrap",aO="binFloatOp",aj="Hole",av="funAp",A="Conditional",q=139,E="CastAp",aN="@<",s=a.jsoo_runtime,p=s.caml_maybe_attach_backtrace,n=s.caml_string_compare;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -440917,7 +440925,7 @@ b==="number")switch(b){case 18:case 19:/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Transition");return/*<>*/}(globalThis)); -//# 10141 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10149 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,G=f.caml_maybe_attach_backtrace;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -440966,7 +440974,7 @@ h=/*<>*/g(B[16],b,f);e=/*<>*/g(n[28],C,c);/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/G([0,D[7],[0,c]],1)/*<>*/}),h)}/*<>*/}var F=0;f.caml_register_global(16,[0,c,i,function(a,b){/*<>*/return l(A,a,b)},function(a,b){/*<>*/return m(F,a,b)}],"Haz3lcore__ValueChecker");return/*<>*/}(globalThis)); -//# 10191 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10199 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var k="$",e=a.jsoo_runtime,h=e.caml_ml_string_length;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -440977,7 +440985,7 @@ c(a){/*<>*/return i(f[16],a, g(a){/*<>*/if(a&&!a[2])/*<>*/return b(a[1]);/*<>*/return 0/*<>*/}e.caml_register_global(5,[0,l,b,c,g,function(a){/*<>*/return g(a)?/*<>*/j(o[20],function(a){/*<>*/ /*<>*/var b=c(a);/*<>*/return/*<>*/j(n[28],b,m)/*<>*/},a):a/*<>*/},function(a){/*<>*/return b(a)?c(a):a/*<>*/}],"Haz3lcore__AssistantExpander");return/*<>*/}(globalThis)); -//# 10203 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10211 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aP="pat",q="NewForm",F="Pat",k="<2>",o="@ ",aO="typ",X="fromCtx",aZ="src/haz3lcore/assistant/Suggestion.re.t",aN=" =",s="@])",E="Any",I="%a",aY="src/haz3lcore/assistant/Suggestion.re.strategy",H="FromCtxAp",D="content",aM="fromCtxAp",aW="src/haz3lcore/assistant/Suggestion.re.strategy_pat",aX="src/haz3lcore/assistant/Suggestion.re.strategy_exp",n="Common",C="FromCoCtx",p="FromCtx",aV="fromBackpack",G="Typ",aL="fromCoCtx",aJ="",aK="src/haz3lcore/assistant/Suggestion.re.strategy_all",aU=963043957,aI="exp",K="FromBackpack",W="newForm",B="Exp",aH="@]",A="strategy",aT="src/haz3lcore/assistant/Suggestion.re.strategy_common",aS="@[%s =@ ",aG="src/haz3lcore/assistant/Suggestion.re.strategy_typ",z=143,h=139,i=848054398,j=-976970511,aQ="any",Y="common",aR="(@[<2>Common@ ",y=a.jsoo_runtime,Q=y.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -441144,7 +441152,7 @@ l=/*<>*/d(m[2],b);/*<>*/d(m[2],i);/*<>*/return/*<>*/g(e[11],V,n,a)}/*<>*/var/*<>*/j=/*<>*/d(m[2],f),/*<>*/k=/*<>*/d(m[2],h);if(j&&k)/*<>*/return[0,j[1],k[1]];/*<>*/var/*<>*/o=[0,[0,0===/*<>*/d(m[2],h)?1:0,b8],0],/*<>*/p=[0,[0,0===/*<>*/d(m[2],f)?1:0,b9],o];/*<>*/return/*<>*/g(e[13],V,a,p)}/*<>*/return/*<>*/c(e[14],V,a)/*<>*/},function(a){/*<>*/var b=a[1],c=[0,[0,b_,aC(a[2])],0];/*<>*/return[0,aU,[0,[0,b$,d(ah[45][3],b)],c]]/*<>*/},function(a,b){/*<>*/return c(ca[10],a[1],b[1])/*<>*/}],"Haz3lcore__Suggestion");return/*<>*/}(globalThis)); -//# 10371 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10379 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y=" ",v="(",x="::",E=183,u=" )",s=" )::",r=",",l=a.jsoo_runtime;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -441197,7 +441205,7 @@ s=n[1];if(s){/*<>*/var C=s[1],/*<>*/al=/*<>*/f(g[1],s[2]),/*<>*/am=/*<>*/d(g[11],al,function(a){/*<>*/return ak/*<>*/}),/*<>*/D=/*<>*/f(/*<>*/f(w[7],an),am),/*<>*/ao=z(C),/*<>*/ap=/*<>*/d(g[20],function(a){/*<>*/return c(D,a)},ao),/*<>*/aq=A(C),/*<>*/as=/*<>*/d(e[28],ar,D),/*<>*/at=/*<>*/d(g[20],function(a){/*<>*/return c(as,a)},aq);/*<>*/return/*<>*/d(e[37],at,ap)}break}/*<>*/return 0;case 2:/*<>*/return 0;default:/*<>*/return 0}/*<>*/}],"Haz3lcore__AssistantCtx");return/*<>*/}(globalThis)); -//# 10425 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10433 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,an=i.caml_list_of_js_array,r=i.caml_string_compare;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -441233,7 +441241,7 @@ c=a[1]===g?1:0,d=c?/*<>*/f(e[3 n(a,b,c){/*<>*/var/*<>*/g=/*<>*/d(B[181],c),/*<>*/h=/*<>*/d(b,g),/*<>*/k=/*<>*/d(j[5],c),/*<>*/l=/*<>*/d(B[183],c),/*<>*/i=/*<>*/ap(j[6],l,k,a,h);/*<>*/return 2===g?/*<>*/f(e[20],function(a){/*<>*/return[0,a[1],[2,[0,[0,a[2]]]]]/*<>*/},i):6<=g?/*<>*/f(e[20],function(a){/*<>*/return[0,a[1],[1,[0,[0,a[2]]]]]/*<>*/},i):/*<>*/d(/*<>*/d(e[20],function(a){/*<>*/return[0,a,ag]/*<>*/}),h)/*<>*/}var ah=m[8],ai=j[4],aj=m[12],ak=j[2],al=m[4],am=j[3];i.caml_register_global(33,[0,h,j,m,n,function(a){/*<>*/return n(ai,ah,a)},function(a){/*<>*/return n(ak,aj,a)},function(a){/*<>*/return n(am,al,a)}],"Haz3lcore__AssistantForms");return/*<>*/}(globalThis)); -//# 10462 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10470 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -441283,7 +441291,7 @@ v=u[1];break b}}var m=0;break a}var m=[0,/*<>*/d(e[19],v)]}/*<>*/return/*<>*/f(k[10][1],m,C)/*<>*/}],"Haz3lcore__Indicated");return/*<>*/}(globalThis)); -//# 10513 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10521 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime,k=e.caml_ml_string_length;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -441314,7 +441322,7 @@ i=/*<>*/c(s[15][18],a,g);/*<>*/return/*<>*/c(h[10][1],f,function(a){/*<>*/var c=b[3][1],/*<>*/e=r(/*<>*/d(z[181],g),c,a);/*<>*/return[0,/*<>*/j(m[68],b,0,e)]/*<>*/})/*<>*/})/*<>*/})/*<>*/})/*<>*/})/*<>*/}],"Haz3lcore__TyDi");return/*<>*/}(globalThis)); -//# 10545 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10553 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -441325,7 +441333,7 @@ h(a,b){/*<>*/var c=a?a[1]:f,/*<>*/e=/*<>*/d(l[16],b);/*<>*/return/*<>*/d(/*<>*/j(i[26],function(a,b){/*<>*/var c=b[5],/*<>*/e=/*<>*/m(g,b[1],b,a);/*<>*/return/*<>*/d(/*<>*/j(i[26],function(a,b){/*<>*/return h([0,a],b)/*<>*/},e),c)/*<>*/},c),e)/*<>*/}e.caml_register_global(3,[0,f,g,b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48],h],"Haz3lcore__TileMap");return/*<>*/}(globalThis)); -//# 10557 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10565 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="passing",A="total",l=" ",F="%d",V=" are ",w="test_map",Q="@[<2>[",B="<2>",d="@ ",v=" =",U="src/haz3lcore/dynamics/TestResults.re.t",u="unfinished",P="%d are %s ",T="@,",G="and ",O="@,]@]",z="statuses",S="one is ",t="",R=963043957,o=";@ ",s="@]",L="All ",y="@[%s =@ ",x="descriptions",f=139,K="One ",q="failing",r=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):r.caml_call_gen(a,[b])}/*<>*/function @@ -441358,7 +441366,7 @@ I=/*<>*/c(b[2],t);/*<>*/return[0,R,[0,[0,ba,c(n[19],j)],q]]/*<>*/},function(a,b){/*<>*/var d=a?a[1]:0,/*<>*/e=/*<>*/i(n[25],2,b),/*<>*/f=/*<>*/i(n[25],1,b),/*<>*/g=/*<>*/i(n[25],0,b),/*<>*/h=/*<>*/c(n[24],b);/*<>*/return[0,b,/*<>*/c(/*<>*/c(I[20],function(a){/*<>*/return c(n[7],a[2])/*<>*/}),b),d,h,g,f,e]/*<>*/},N,function(a){/*<>*/return N(a[4],a[6],a[7],bL,bK,bJ,bI,bH)/*<>*/}],"Haz3lcore__TestResults");return/*<>*/}(globalThis)); -//# 10591 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10599 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -441376,7 +441384,7 @@ o(a){/*<>*/try{/*<>*/d(k[6],l,a);/*<>*/return c}catch(e){/*<>*/ /*<>*/var b=n(a);/*<>*/ /*<>*/t(k[5],l,a,b);/*<>*/return b}/*<>*/}i.caml_register_global(7,[0,j,q,r,s,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,g,l,n,o],"Haz3lcore__TermRanges");return/*<>*/}(globalThis)); -//# 10610 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10618 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -441384,7 +441392,7 @@ i(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<< h(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d])}var c=e.caml_get_global_data(),g=c.Stdlib__List,f=c.Haz3lcore__Id,b=f[15],d=b[2];e.caml_register_global(2,[0,b[1],d,b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48],function(a,e,c){/*<>*/return/*<>*/j(/*<>*/i(g[26],function(a,b){/*<>*/return/*<>*/h(d,b,e,a)/*<>*/},c),a)/*<>*/}],"Haz3lcore__TermMap");return/*<>*/}(globalThis)); -//# 10619 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10627 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -441455,7 +441463,7 @@ t(i,h,c){/*<>*/var/*<>*/k=10===c[0]?/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},c),b):c,/*<>*/l=[0,j,d(i,h,k)];/*<>*/return/*<>*/f(g[10],b,l)/*<>*/},g[7]),b);/*<>*/return/*<>*/f(k[7],a,j)/*<>*/}function u(f,b,c){/*<>*/return/*<>*/e(/*<>*/e(n[11][9],function(a){/*<>*/return d(f,b,a)}),c)/*<>*/}h.caml_register_global(6,[0,d,function(a,b){/*<>*/return/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},b),a)/*<>*/}],"Haz3lcore__Substitution");return/*<>*/}(globalThis)); -//# 10691 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10699 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var r="@ ",s="<2>",d="step",q=963043957,j=139,p="src/haz3lcore/dynamics/EvaluatorStats.re.t",h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -441474,7 +441482,7 @@ o=/*<>*/c(b[2],h);/*<>*/c(b[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var p=[0,[0,0===/*<>*/c(b[2],e)?1:0,E],0];/*<>*/return/*<>*/i(l[13],k,a,p)}/*<>*/return/*<>*/g(l[14],k,a)/*<>*/},function(a){/*<>*/return[0,q,[0,[0,F,c(m[45][6],a[1])],0]]/*<>*/},G,function(a){/*<>*/return[0,a[1]+1|0]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return[0,a]/*<>*/}],"Haz3lcore__EvaluatorStats");return/*<>*/}(globalThis)); -//# 10711 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10719 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="@ ",y="<2>",k="tests",x=" =",j="stats",v=963043957,w="",u="@]",s="@[%s =@ ",t="src/haz3lcore/dynamics/EvaluatorState.re.t",i=139,h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -441498,15 +441506,15 @@ b=a[2];/*<>*/return[0,/*<>*/return[0,/*<>*/d(c[10],a),e]/*<>*/},function(a,b,c){/*<>*/var e=a[2],/*<>*/g=/*<>*/d(/*<>*/d(f[23],[0,b,c]),e);/*<>*/return[0,a[1],g]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},function(a,b){/*<>*/return[0,b[1],a]/*<>*/}],"Haz3lcore__EvaluatorState");return/*<>*/}(globalThis)); -//# 10736 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10744 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[10];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]],"Haz3lcore__Filter");return/*<>*/}(globalThis)); -//# 10741 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10749 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[12];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7]],"Haz3lcore__FilterEnvironment");return/*<>*/}(globalThis)); -//# 10746 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10754 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a$="$e",d="__mutual__",a_="$v",f=a.jsoo_runtime,b=f.caml_equal,M=f.caml_maybe_attach_backtrace,g=f.caml_trampoline,v=f.caml_trampoline_return,N=f.caml_wrap_exception;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -441753,7 +441761,7 @@ p(a,b,c){/*<>*/return w(a,b,a,c[1 g=d,f=e;/*<>*/for(;;){if(!g)/*<>*/return[0,c,f];/*<>*/var i=g[2],/*<>*/h=p(a,b,g[1]);if(h)/*<>*/return[0,h[1],f];g=i;f=f+1|0}/*<>*/}(a,b,c,d,0);/*<>*/return[0,e[1],f-e[2]|0]/*<>*/}],"Haz3lcore__FilterMatcher");return/*<>*/}(globalThis)); -//# 10994 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11002 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="<2>",i="@ ",al=125,o="knd",p="d_loc",C="d",u=" =",ao="%a",ak="{ ",t="",B="env",aj="src/haz3lcore/dynamics/EvaluatorStep.re.EvalObj.t",L=963043957,A=";@ ",an="@[<2>{ ",s="@]",am="@ }@]",v="@[%s =@ ",ai=143,z="state",d=139,m="ctx",ah="src/haz3lcore/dynamics/EvaluatorStep.re.step",y=a.jsoo_runtime,af=y.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -442019,7 +442027,7 @@ d=ae(h,a);if(!d)/*<>*/return 0;/ b=d[1][2],/*<>*/e=/*<>*/f(ac,i,b[1],b[2]);if(!e)/*<>*/return 0;/*<>*/ /*<>*/var g=n(b[3],e[1]);/*<>*/return[0,g,c(g)]/*<>*/}/*<>*/return c(b)/*<>*/}],"Haz3lcore__EvaluatorStep");return/*<>*/}(globalThis)); -//# 11261 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11269 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aD="src/haz3lcore/dynamics/Stepper.re.persistent",ax="stepPending",L="StepTimeout",aw="stepTimeout",ac="@[<2>[",n="<2>",e="@ ",av=125,D=" =",au="src/haz3lcore/dynamics/Stepper.re.t",ad="%a",at="{ ",T=",@ ",G="@,",q="elab",ab="@,]@]",J="StepperOK",m="current",C="next",ar="))",as="list manipulation",z="",U=963043957,o="previous",y=";@ ",aC="@[<2>{ ",B="@]",aB="@ }@]",F="@[%s =@ ",aa=143,aA="@,))@]",d=139,O=-976970511,E=848054398,az="src/haz3lcore/dynamics/Stepper.re.current",ay="stepperOK",K="StepPending",t=a.jsoo_runtime,cE=t.caml_maybe_attach_backtrace,$=t.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}/*<>*/function @@ -442267,7 +442275,7 @@ d=a[2];if(typeof b!=="number"&&0!==b[0]){if(b[3])/*<>*/return[0,c,d,[1,b[1],b[2],0]];break a}}/*<>*/return[0,c,a[2],a[3]]/*<>*/},function(a,b){/*<>*/var c=b[3],d=b[2],e=b[1],/*<>*/f=ak([0,e,d,c,0]);/*<>*/return[0,e,d,c,/*<>*/h(p[18],a,f)]/*<>*/}],"Haz3lcore__Stepper");return/*<>*/}(globalThis)); -//# 11514 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11522 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ah="TileId",cM="point",aD="Cut",cK="insert",cL="src/haz3lcore/zipper/action/Action.re.select",cj="cant_put_down",ck="src/haz3lcore/zipper/action/Action.re.goal",ci="src/haz3lcore/zipper/action/Action.re.piece_goal",p="@ ",aR="Grout",aS="CantPaste",aT="Cant_destruct",cJ="accept",ch="src/haz3lcore/zipper/action/Action.re.buffer",cg="src/haz3lcore/zipper/action/Action.re.Failure.t",D="%a",ag="Unselect",aQ="Current",y="@,",aB="Pick_up",aC="Cant_move",af="Point",ae="ToggleIndicated",aO="Piece",aP="SetSyntax",ce="move",cf="grout",aM="All",aN="Reparse",U="Move",cF="cant_select",cG="cantReparse",cH="focusInternal",cI="smart",cD="set",cE="tyDi",ad="Extreme",aA="Accept",cC="cant_project",cA="copy",cB="src/haz3lcore/zipper/action/Action.re.jump_target",az="@,))@]",cd="id",h=-976970511,g=848054398,cx="cant_move",cy="unselect",cz="toggleIndicated",cc="cantAccept",ca="local",cb="goal",ax="Smart",ay="FocusInternal",b$="resize",bj="%S",b_="moveToBackpackTarget",b9="term",b8="setIndicated",cw="extreme",k="<2>",b4="pick_up",b5="buffer",b6="remove",b7="src/haz3lcore/zipper/action/Action.re.rel",b3="cut",T="Term",ac="MoveToBackpackTarget",aw="Copy",S="SetIndicated",q="@])",cu="cantPaste",cv="paste",ct="escape",ab="Insert",b2="cant_destruct",av="CantAccept",aK=",@ ",aL="Cant_insert",b0="setSyntax",b1="all",cr="tileId",aJ="BindingSiteOfIndicatedVar",cs="src/haz3lcore/zipper/action/Action.re.move",bZ="cant_insert",cq="project",bY="piece",au="Cant_select",$="Jump",aa="Paste",aI="Cant_put_down",bX="put_down",cp="tile",_="Select",bV="current",at="Escape",bW="src/haz3lcore/zipper/action/Action.re.agent",bT="destruct",bU="bindingSiteOfIndicatedVar",as="Cant_project",aH="))",Z="Goal",bS="reparse",R="Project",aF="Id",aG="CantReparse",Q="Destruct",co="rotateBackpack",X="Local",Y="Remove",cn="updateModel",bR="jump",ar="RotateBackpack",C=143,P="Tile",aq="UpdateModel",cm="select",W="Set",O="Buffer",bQ="src/haz3lcore/zipper/action/Action.re.project",j=139,V="Resize",aE="Put_down",ap="TyDi",cl="src/haz3lcore/zipper/action/Action.re.t",N=a.jsoo_runtime,u=N.caml_string_compare,K=N.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):N.caml_call_gen(a,[b])}/*<>*/function @@ -442698,7 +442706,7 @@ switch(a[0]){case 7:case 8:break;default:break a}/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Action");return/*<>*/}(globalThis)); -//# 11946 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11954 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ag="+",R=" ",ar=1000,bf="-",O="Post",J=")",a1="op",M="@ ",z="<2>",aX="bin",bg="::",N="(",a0="post",Q="Pre",aW="@])",ac="->",aq="%a",ab=",@ ",aV="src/haz3lcore/statics/MakeTerm.re.tile",L="@,",bi="=",be=">",ap="))",P="in",E="Op",ay="]",az="[",am=143,an=",",ao="@,))@]",y=848054398,K=-976970511,bh="end",o=139,aY="src/haz3lcore/statics/MakeTerm.re.unsorted",I="Bin",aZ="pre",s=a.jsoo_runtime,aU=s.caml_equal,bd=s.caml_float_of_string,bc=s.caml_int_of_string,af=s.caml_string_compare,D=s.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -443129,7 +443137,7 @@ b=/*<>*/d(h[14],a);function e(a,b){/*<>*/return aU(a,b)}/*<>*/ /*<>*/var c=/*<>*/d(/*<>*/d(n[20],function(a){/*<>*/return a[2]}),b);/*<>*/return/*<>*/d(/*<>*/d(n[33],function(a){/*<>*/return e(bI,a)}),c)/*<>*/},aD,aE,v,aF,_,H,$,aa,aj,B,C,aH,aI,aJ,aK,aL,aM,aN,aO,r,aT,al,cr,/*<>*/f(ak[1],0,cu,function(a){/*<>*/return al(ct,cs,a)})],"Haz3lcore__MakeTerm");return/*<>*/}(globalThis)); -//# 12378 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12386 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aw="src/haz3lcore/zipper/Editor.re.t",v="read_only",y="<2>",j="@ ",av=125,u="meta",B=" =",au="@])",N="%a",at="{ ",as=",@ ",aC="src/haz3lcore/zipper/Editor.re.History.t",t="history",s="",M=963043957,aB="src/haz3lcore/zipper/Editor.re.History.affix",K=";@ ",aA="@[<2>{ ",az="(@[",r="zipper",A="@]",ax="@ }@]",C="@[%s =@ ",ay="src/haz3lcore/zipper/Editor.re.State.t",J=143,q="state",d=139,L=848054398,n=a.jsoo_runtime,I=n.caml_update_dummy;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):n.caml_call_gen(a,[b])}/*<>*/function @@ -443141,8 +443149,8 @@ bM=undefined,e=n.caml_get_global_data(),E=ay,H=aw,D=e.Haz3lcore__Id,aj=e.Stdlib_ _(a){/*<>*/var/*<>*/b=/*<>*/g(l[43],0,a[1]),/*<>*/c=/*<>*/f(O[47],b),d=c[2],e=c[1],/*<>*/i=a[2],/*<>*/j=/*<>*/f(P[54],b),/*<>*/k=/*<>*/g($[49],0,b),/*<>*/m=/*<>*/f(aa[51],b),/*<>*/n=/*<>*/h(ab[45],0,0,b);/*<>*/return[0,a[1],b,n,e,m,d,k,j,i]/*<>*/}function ac(a,b){/*<>*/return a[1]?/*<>*/g(z[2],a,b):z[1]/*<>*/}function ae(a,b,c){/*<>*/var/*<>*/d=/*<>*/g(l[43],0,a[1]),/*<>*/e=/*<>*/f(O[47],d),i=e[2],j=e[1],/*<>*/k=/*<>*/h(ab[45],[0,c],[0,b],d),/*<>*/m=a[2],/*<>*/n=/*<>*/f(P[54],d),/*<>*/o=/*<>*/g($[49],0,d),/*<>*/p=/*<>*/f(aa[51],d);/*<>*/return[0,a[1],d,k,j,p,i,o,n,m]/*<>*/}function -af(a,b,c,d){/*<>*/return a[1]?/*<>*/f(m[64],b)?/*<>*/g(z[2],a,c):d:z[1]/*<>*/}/*<>*/var/*<>*/o=[0,_,ac,function(a,b){/*<>*/var/*<>*/c=ac(a,b),/*<>*/d=_(/*<>*/g(Q[55][3],b,c[2])),/*<>*/e=/*<>*/f(ad[22],d[1][1]);/*<>*/return[0,0,aE[1],e,c,d]/*<>*/},function(a){/*<>*/return[0,a[2],a[5][3],a[5][5],a[1]]/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aF)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aG)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aH)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aI)/*<>*/},ae,af,function(a,b,c,d,e){/*<>*/var/*<>*/s=/*<>*/f(m[57],c),/*<>*/t=/*<>*/g(w[28],aJ,s);/*<>*/ /*<>*/f(w[46],t);/*<>*/var -k=e[2],/*<>*/n=af(b,c,d,e[4]),/*<>*/o=/*<>*/g(Q[55][3],d,n[2]);if(/*<>*/f(m[64],c))var +af(a,b,c,d){/*<>*/return a[1]?/*<>*/f(m[64],b)?/*<>*/g(z[2],a,c):d:z[1]/*<>*/}/*<>*/var/*<>*/o=[0,_,ac,function(a,b){/*<>*/var/*<>*/c=ac(a,b),/*<>*/d=_(/*<>*/g(Q[56][3],b,c[2])),/*<>*/e=/*<>*/f(ad[22],d[1][1]);/*<>*/return[0,0,aE[1],e,c,d]/*<>*/},function(a){/*<>*/return[0,a[2],a[5][3],a[5][5],a[1]]/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aF)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aG)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aH)/*<>*/},function(a){/*<>*/return/*<>*/f(w[2],aI)/*<>*/},ae,af,function(a,b,c,d,e){/*<>*/var/*<>*/s=/*<>*/f(m[57],c),/*<>*/t=/*<>*/g(w[28],aJ,s);/*<>*/ /*<>*/f(w[46],t);/*<>*/var +k=e[2],/*<>*/n=af(b,c,d,e[4]),/*<>*/o=/*<>*/g(Q[56][3],d,n[2]);if(/*<>*/f(m[64],c))var i=ae(o,k,e[5][3]);else var h=e[5],i=[0,o[1],h[2],h[3],h[4],h[5],h[6],h[7],h[8],h[9]];a:{b:if(typeof @@ -443228,7 +443236,7 @@ b=/*<>*/g(Q[13][10],c,a[5]);/*<>*/g(D[15][18],b,a[1][2][5][7]);if(c)/*<>*/return[0,[0,c[1]]];/*<>*/ /*<>*/var d=/*<>*/g(aj[40],function(a){/*<>*/return/*<>*/n.caml_equal(a[1],b)/*<>*/},a[1][2][5][8]);/*<>*/return/*<>*/f(/*<>*/f(Y[7],function(a){/*<>*/return[1,a]/*<>*/}),d)/*<>*/}],"Haz3lcore__Editor");return/*<>*/}(globalThis)); -//# 12478 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12486 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var L="%d",K="<2>",J="canPass",I="cantEven",s="CantEven",r="CanEnter",H="@,",G="src/haz3lcore/zipper/action/Move.re.movability",E="canEnter",q="CanPass",t=139,u=-976970511,v=848054398,o=a.jsoo_runtime,ah=o.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -443296,7 +443304,7 @@ A(a,b){/*<>*/return[0,/*<>*/ /*<>*/var f=/*<>*/e(/*<>*/e(g[30],[0,b,c]),d);/*<>*/return/*<>*/e(/*<>*/e(g[50],a),f)/*<>*/}function d(a,b,c){/*<>*/var -d=c[4],/*<>*/e=D(a,c);if(0!==c[1][2])/*<>*/return r(b,c);/*<>*/if(!d&&0!==/*<>*/f(ac[49][1],b,c))/*<>*/return/*<>*/f(g[50],b,c);if(!b){if(d)return 2===a?x(c):[0,/*<>*/f(g[29],g[1][7],c)];var +d=c[4],/*<>*/e=D(a,c);if(0!==c[1][2])/*<>*/return r(b,c);/*<>*/if(!d&&0!==/*<>*/f(ac[50][1],b,c))/*<>*/return/*<>*/f(g[50],b,c);if(!b){if(d)return 2===a?x(c):[0,/*<>*/f(g[29],g[1][7],c)];var h=e[1];return typeof h==="number"?/*<>*/f(g[50],b,c):B(b,h[1],h[2],c)}if(!d){var j=e[2];return typeof @@ -443367,7 +443375,7 @@ i=a[1];if(0===i[0]){var t=i[1],u=0;/*<>*/return m(0,function(a,b){/*<>*/return d(u,a,b)},t,/*<>*/f(g[42],0,b))}var v=i[2];/*<>*/return H(/*<>*/e(ag[7],i[1]),v,b)}/*<>*/}]}],"Haz3lcore__Move");return/*<>*/}(globalThis)); -//# 12618 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12626 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -443393,7 +443401,7 @@ d==="number"?0===d?j(0,b):j(1,b):0===d[0]?g(0,b):g(1,b);default:var h=a[1];if(0!==h[0])/*<>*/return/*<>*/c(s[2],r);/*<>*/var l=h[1],/*<>*/m=/*<>*/c(e[48],b),/*<>*/n=[0,/*<>*/c(/*<>*/c(e[64],i[2]),m)];/*<>*/return/*<>*/k(f[12],n,g,l,b)}/*<>*/}]}],"Haz3lcore__Select");return/*<>*/}(globalThis)); -//# 12645 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12653 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -443405,10 +443413,10 @@ d=/*<>*/g(m[50],a,[0,c[1], i(a,b,c){/*<>*/ /*<>*/var d=/*<>*/f(h[13][11],a,function(a){/*<>*/return b/*<>*/},c[5]);/*<>*/return[0,c[1],c[2],c[3],c[4],d]/*<>*/}function k(a,b,c,d,e,f){/*<>*/ /*<>*/var -j=/*<>*/g(h[45],c,d);return j?[0,function(a){/*<>*/return l(e,f,a)}(i(a,j,b))]:p/*<>*/}function +j=/*<>*/g(h[46],c,d);return j?[0,function(a){/*<>*/return l(e,f,a)}(i(a,j,b))]:p/*<>*/}function n(a,b,c,d,e,f){/*<>*/return/*<>*/g(h[13][9],a,b[5])?[0,i(a,0,b)]:k(a,b,c,d,e,f)/*<>*/}e.caml_register_global(9,[0,l,i,k,n,function(a,b,c,d){/*<>*/switch(c[0]){case 0:var -D=c[2];/*<>*/return[0,/*<>*/f(h[56][7],function(a){/*<>*/return D/*<>*/},c[1],d)];case +D=c[2];/*<>*/return[0,/*<>*/f(h[57][7],function(a){/*<>*/return D/*<>*/},c[1],d)];case 1:/*<>*/var E=c[2],/*<>*/G=/*<>*/f(h[13][11],c[1],function(a){/*<>*/return/*<>*/g(F[7],function(a){/*<>*/return[0,a[1],E]/*<>*/},a)/*<>*/},d[5]);/*<>*/return[0,[0,d[1],d[2],d[3],d[4],G]];case 2:/*<>*/var @@ -443424,7 +443432,7 @@ v=m;else/*<>*/var/*<>*/var/*<>*/y=/*<>*/g(a,d,x),z=y?y[1]:d,/*<>*/A=/*<>*/f(b,2,1,z),R=A?A[1]:z;/*<>*/return[0,R]}/*<>*/var/*<>*/B=/*<>*/g(a,d,x),S=B?B[1]:d;/*<>*/return[0,S];default:var C=c[1];return/*<>*/g(h[13][9],C,d[5])?[0,i(C,0,d)]:T}/*<>*/}],"Haz3lcore__ProjectorPerform");return/*<>*/}(globalThis)); -//# 12677 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12685 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y="@ ",r="<2>",x="src/haz3lcore/dynamics/EvaluatorResult.re.t",w="@])",v="boxedValue",h="Indet",g="BoxedValue",u="indet",o=848054398,p=139,q=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -443455,7 +443463,7 @@ f=b[1],d=g;break a}}else{var h=a[1];if(0!==b[0]){var f=b[1],d=h;break a}}/*<>*/return 0}/*<>*/return/*<>*/c(e[24],d,f)/*<>*/}],"Haz3lcore__EvaluatorResult");return/*<>*/}(globalThis)); -//# 12709 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12717 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="EvaulatorError",aj="off",w="Off",an="resultPending",ag="resultOk",ah="unknownException",v="result",j="<2>",ai="src/haz3lcore/prog/ProgramResult.re.inner",o="@ ",af=" =",G="@])",P="%a",am="evaulatorError",u="ResultOk",ae="resultFail",z="ResultFail",B="ResultPending",ac="",ad="src/haz3lcore/prog/ProgramResult.re.error",al=963043957,ab="src/haz3lcore/prog/ProgramResult.re.t",C="Timeout",aa="@]",$="timeout",y="UnknownException",ak="@[%s =@ ",O=143,t="state",h=139,l=-976970511,m=848054398,s=a.jsoo_runtime,N=s.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -443539,7 +443547,7 @@ a==="number")/*<>*/return a7;switch(a[ 0:/*<>*/return[0,m,[0,a8,[0,/*<>*/c(F[13],a[1]),0]]];case 1:/*<>*/return[0,m,[0,a9,[0,T(a[1]),0]]];default:/*<>*/return[0,m,[0,a_,[0,Z(a[1]),0]]]}/*<>*/},function(a){/*<>*/return c(A[7],a[1])/*<>*/},function(a){/*<>*/return a[2]/*<>*/}],"Haz3lcore__ProgramResult");return/*<>*/}(globalThis)); -//# 12794 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12802 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var _="appendLeft",Z="@ ",A="<2>",r="AppendLeft",Y="@])",X="makeNew",W="src/haz3lcore/zipper/action/Insert.re.appendability",V="appendRight",z=139,v=-976970511,w=848054398,t="MakeNew",q="AppendRight",o=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -443635,7 +443643,7 @@ t!=="number"&&1===t[0]){var v=an;break a}var v=0}/*<>*/var/*<>*/C=function(a){/*<>*/return K(c,a)}(a),/*<>*/D=/*<>*/e(g[30],v),/*<>*/E=/*<>*/e(/*<>*/e(d[7],D),C),/*<>*/F=/*<>*/e(u(0),E);/*<>*/return/*<>*/e(/*<>*/e(d[7],function(a){/*<>*/return L(c,a)}),F)/*<>*/}],"Haz3lcore__Insert");return/*<>*/}(globalThis)); -//# 12891 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12899 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="%S",E=" ",A="code",D="selection",z="@[<2>[",j="<2>",k="@ ",s="\n",J=" =",C="@,",y="@,]@]",B="backpack",l="",U=963043957,q=";@ ",I="@]",L="@[%s =@ ",e=139,o=a.jsoo_runtime,aY=o.caml_wrap_exception;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -443681,7 +443689,7 @@ c=a?a[1]:aQ;/*<>*/return H([0,c],b[1][1]) b=a[1][1][1][2],/*<>*/c=x(0,/*<>*/g(r[62],a[1][1]),0,aR,b);/*<>*/return/*<>*/g(/*<>*/g(p[7],aS),c)/*<>*/},T,function(a){/*<>*/ /*<>*/var b=H(0,a);/*<>*/return T([0,/*<>*/g(r[14],0)],b)/*<>*/}],"Haz3lcore__Printer");return/*<>*/}(globalThis)); -//# 12938 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12946 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var G="%S",p="@ ",F="<2>",E="src/haz3lcore/zipper/PersistentZipper.re.t",D=" =",B=963043957,C="",i="backup_text",A="@]",j="zipper",z="@[%s =@ ",f=139,h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -443710,7 +443718,7 @@ b=/*<>*/g(v[18],0,a[2]);return b b=a[1],/*<>*/d=[0,[1,[0,X,[0,/*<>*/c(m[9],a[2]),0]]],0];/*<>*/return[1,[0,[1,[0,Y,[0,/*<>*/c(m[9],b),0]]],d]]/*<>*/},s,t,u,x,function(a){/*<>*/ /*<>*/var b=t(u(a));/*<>*/return/*<>*/ae(y[5],0,0,0,0,b)/*<>*/},function(a){/*<>*/return x(s(/*<>*/af(y[39],0,0,0,a)))/*<>*/}],"Haz3lcore__PersistentZipper");return/*<>*/}(globalThis)); -//# 12968 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12976 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -443756,7 +443764,7 @@ h=b[1];if(h){var j=b[2];if(j){var n=j[1],o=h[1];/*<>*/if(/*<>*/f(r[14],o,n))/*<>*/return k([0,o,n],a)}}}}/*<>*/return[0,a]/*<>*/})/*<>*/}],"Haz3lcore__Destruct");return/*<>*/}(globalThis)); -//# 13015 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13023 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime,ab=g.caml_equal;/*<>*/function f(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -443846,11 +443854,11 @@ j=m([0,g],d,b,h);/*<>*/return/*<>*/ab(b,s)?c:/*<>*/e(n[12],l,c),/*<>*/h=d(a,b,g);/*<>*/return/*<>*/e(i[42][1],h,function(a){/*<>*/if(!/*<>*/f(v[64],b))/*<>*/return[0,a];var c=a[1][2][4][2];/*<>*/return[0,/*<>*/e(n[12],function(a){/*<>*/return q(c,a)},a)]/*<>*/})}/*<>*/return d(a,b,c)/*<>*/}],"Haz3lcore__Perform");return/*<>*/}(globalThis)); -//# 13110 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13118 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id[15];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48]],"Haz3lcore__MetaVarMap");return/*<>*/}(globalThis)); -//# 13115 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13123 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="expressionHole",o="patternHole",i="ExpressionHole",j="PatternHole",e=a.jsoo_runtime;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -443869,7 +443877,7 @@ e=d[2];if(e&&!e[2]){/*<>*/var f=e[1],h=d[1],/*<>*/i=k(b[1]),/*<>*/j=/*<>*/g(m[13],h);/*<>*/return[0,i,j,/*<>*/g(n[1],f)]}}}}/*<>*/return/*<>*/t(c[2],s,3,a)/*<>*/},a)/*<>*/},function(a){/*<>*/return/*<>*/b(h[44],function(a){var b=a[3],c=a[2],d=l(a[1]),e=g(m[11],c);return[1,[0,d,[0,e,[0,g(n[2],b),0]]]]},a)/*<>*/},h[1]],"Haz3lcore__Delta");return/*<>*/}(globalThis)); -//# 13135 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13143 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var B="+",t="DoesNotElaborate",A="elaborates",r="Elaborates",x="doesNotElaborate",ad=194,u="_",h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -444120,7 +444128,7 @@ b=a[3],c=a[2],/*<>*/d=/*<>*/return 0;/*<>*/var e=c[1],/*<>*/d=v(a,b),f=d?d[1]:O;/*<>*/return[0,e,f,q[5]]/*<>*/}],"Haz3lcore__Elaborator");return/*<>*/}(globalThis)); -//# 13387 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13395 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="Unexpected Uneval",f=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -444165,7 +444173,7 @@ e=[0,c[1]];break;case e=[1,c[1]];break;default:var e=[1,c[1]]}/*<>*/return[0,f[1],e]/*<>*/},b,[0,m[2]]],"Haz3lcore__Evaluator");return/*<>*/}(globalThis)); -//# 13433 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13441 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,w=f.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -444180,7 +444188,7 @@ e=/*<>*/h(t[1],l,c)}catch(e){var f=w(e);if(f[1]===i[7]){/*<>*/var j=f[2],/*<>*/m=/*<>*/d(i[2],j),/*<>*/n=/*<>*/h(g[28],r,m);/*<>*/ /*<>*/d(g[46],n);/*<>*/return[2,[0,j]]}/*<>*/var/*<>*/o=/*<>*/d(k[1],f),/*<>*/p=/*<>*/h(g[28],s,o);/*<>*/ /*<>*/d(g[46],p);/*<>*/return[2,[1,/*<>*/d(k[1],f)]]}/*<>*/return[1,[0,e[2],e[1]]]/*<>*/}],"Haz3lcore__Interface");return/*<>*/}(globalThis)); -//# 13449 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13457 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ab="src/haz3lcore/prog/ModelResult.re.t",t="<2>",r="@ ",N=" =",aa="src/haz3lcore/prog/ModelResult.re.eval_result",M="@])",$="noElab",P="%a",Y="src/haz3lcore/prog/ModelResult.re.persistent",x="elab",E="stepper",m="Evaluation",B="NoElab",L="",_=963043957,k="Stepper",w="previous",X=";@ ",o="evaluation",K="@]",O="@[%s =@ ",Z="(@[<2>Stepper@ ",J=143,i=139,p=848054398,q=-976970511,v=a.jsoo_runtime,I=v.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function @@ -444267,7 +444275,7 @@ i=e[2];if(i===m)return b[2]?/*<>*/d(g[3] j=b[2];if(j&&!j[2])/*<>*/return[0,/*<>*/c(f[31],j[1])];/*<>*/return/*<>*/h(g[4],A,i,a)}}else if(p===n)/*<>*/return/*<>*/d(g[6],A,a)}}}/*<>*/return/*<>*/d(g[8],A,a)/*<>*/},function(a){/*<>*/return a?[0,p,[0,a2,[0,/*<>*/c(f[32],a[1]),0]]]:a3/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return[0,/*<>*/c(f[35],a[1])];/*<>*/return 0/*<>*/},function(a,b){/*<>*/return b?[1,/*<>*/d(f[36],a,b[1])]:0/*<>*/}],"Haz3lcore__ModelResult");return/*<>*/}(globalThis)); -//# 13537 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13545 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="%a",z=143,j=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -444291,7 +444299,7 @@ b=ap[3],/*<>*/h=function(a){/*<>*/r b=/*<>*/d(e[18],a);/*<>*/return/*<>*/d(c[28],b)/*<>*/},/*<>*/d(m,e[19]),x,y,function(c,b){/*<>*/ /*<>*/var a=/*<>*/d(/*<>*/d(i[23],function(a){/*<>*/return x(c,a)}),b);/*<>*/return/*<>*/d(k,/*<>*/d(i[64],a))/*<>*/},function(a){/*<>*/var/*<>*/b=/*<>*/d(t,a),/*<>*/c=/*<>*/d(/*<>*/d(i[23],y),b);/*<>*/return/*<>*/d(k,/*<>*/d(i[64],c))/*<>*/}],"Haz3lcore__ModelResults");return/*<>*/}(globalThis)); -//# 13562 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13570 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var n="src/haz3lcore/dynamics/HoleInstance.re.t",m=848054398,k=139,e=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -444310,7 +444318,7 @@ e=b[2];if(e&&!e[2]){var g=e[1],h=c(f[5],b[1]);return[0,h,c(d[5],g)]}}}return j(v[2],u,2,a)/*<>*/},function(a){/*<>*/var b=a[2],e=c(f[6],a[1]);return[0,m,[0,e,[0,c(d[6],b),0]]]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},[0,w[16],0]],"Haz3lcore__HoleInstance");return/*<>*/}(globalThis)); -//# 13991 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13999 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime;/*<>*/function q(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var @@ -444327,7 +444335,7 @@ l=c[1],/*<>*/m=[20,l,d(c[2],b)];/*<>*/var n=c[2],o=c[1],/*<>*/p=[22,o,n,d(c[3],b)];/*<>*/return[0,a[1],p]}/*<>*/return[0,[0,/*<>*/q(e[5],0),0],[20,a,b]]/*<>*/}c.caml_register_global(1,[0,d],"Haz3lcore__EditorUtil");return/*<>*/}(globalThis)); -//# 14009 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 14017 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -475138,7 +475146,7 @@ q(a){switch(a){case 3:return X;case 4:return Y;default:return Z}}function v(a){return a!==R?a!==P?a!==Q?a!==T?a!==O?a!==S?i(n[2],_):1:5:4:3:0:2}function -w(a,b,c,d){return 0===j(g[40],d,c)[0]?j(x[8],a,b):l(k[14],0,0,0)}function +w(a,b,c,d){return 0===j(g[41],d,c)[0]?j(x[8],a,b):l(k[14],0,0,0)}function y(a,b){if(a)var d=a[1][1]?$:ab,c=d;else var @@ -475154,8 +475162,8 @@ b==="number")return[6,a];switch(b[0]){case C(h,b,c,d,e){var a=j(g[13][8],h,b[5][1][5]);return j(f[10][1],a,function(k){var a=j(o[15][18],h,b[5][9]);return j(f[10][1],a,function(a){var -l=[0,a,e,j(o[15][18],h,b[4][2])],m=j(af[41],h,b[5][3]);return j(f[10][2],m,function(a){var -f=i(g[39],k[1]);function +l=[0,h,a,e,j(o[15][18],h,b[4][2])],m=j(af[41],h,b[5][3]);return j(f[10][2],m,function(a){var +f=i(g[40],k[1]);function m(a){return i(c,[11,[2,B(h,a)]])}var n=M(f[3],k[2],l,function(a){return m([3,j(f[5],k[2],a)])},m);return z(c,d,a,e,l,j(p[37],h,b[3]),k,n)})})})}function r(a){var @@ -475170,13 +475178,13 @@ d(a){return s(a[1][1])}function t(a){var b=d(a);return j(f[10][2],b,function(a){return a[2][1]})}function E(a,b){var -c=s(a);return j(f[10][2],c,function(a){return j(g[40],a[2],b)})}function +c=s(a);return j(f[10][2],c,function(a){return j(g[41],a[2],b)})}function F(a){var b=d(a);return b?b[1][1]:o[16]}function G(d,b){var a=i(c[5],d);return j(f[10][1],a,function(c){var a=j(o[15][18],c,b[5][9]);return j(f[10][1],a,function(a){var -e=j(o[15][18],c,b[4][2]);return E(d,[0,a,D(d),e])})})}function +e=j(o[15][18],c,b[4][2]);return E(d,[0,c,a,D(d),e])})})}function H(a,b){var c=[0,i(k[5],b),0],d=b==a?[0,j(m[1][1],aj,ai),0]:0;return l(k[32],0,[0,d],c)}function e(a){var @@ -475205,18 +475213,18 @@ J(e,b,c,d){var a=[0,[0,i(m[1][45],ar),0]],f=[0,M(k[62],as,0,a,0),0],g=[0,[0,i(K[1],at),0]],h=[0,l(k[14],0,g,f),0],o=[0,i(m[1][55],function(a){return i(e,I(d,c,b))}),0],p=d?au:0,q=j(n[37],av,p),r=[0,[0,i(K[1],q),o]];return l(k[14],0,r,h)}function L(a){var b=t(a),c=b?q(b[1]):aw;return function(a){return H(c,a)}}h.caml_register_global(51,[0,q,v,w,y,z,B,function(a,b){var -c=b[1],d=b[2];return[0,c,j(i(g[39],c)[5],d,a)]},C,r,D,function(d,b,c){var +c=b[1],d=b[2];return[0,c,j(i(g[40],c)[5],d,a)]},C,r,D,function(d,b,c){var a=i(o[15][10],d[5][1][5]);return j(p[23],function(a){var e=a[1],f=r(d[5][1]);a:{if(f){var g=f[1],j=g[2];if(h.caml_equal(g[1],e)){var i=[0,j];break a}}var i=0}return C(e,d,b,c,i)},a)},s,d,t,E,F,G,function(a,b){var c=G(a,b);return c?0===c[1][0]?0:ah:0},function(a,b){var -e=d(a);if(!e)return 0;var -h=e[1],k=h[1],l=h[2],m=i(c[2],a[1][1]);return j(f[10][1],m,function(a){var -c=a[2],d=i(g[39],l[1]);if(b[3]&&b[4]&&b[5]&&b[6]){var -e=b[1];if(0===e[0]){var -f=e[1];if(f!=="ArrowLeft"){if(f==="ArrowRight"&&c){i(d[6],0);return[0,[4,k,0]]}}else if(!c){i(d[6],1);return[0,[4,k,1]]}}return 0}return 0})},H,e,I,J,L,function(d,b,c){var +h=d(a);if(!h)return 0;var +k=h[1],e=k[1],l=k[2],m=i(c[2],a[1][1]);return j(f[10][1],m,function(a){var +c=a[2],d=i(g[40],l[1]);if(b[3]&&b[4]&&b[5]&&b[6]){var +f=b[1];if(0===f[0]){var +h=f[1];if(h!=="ArrowLeft"){if(h==="ArrowRight"&&c){i(d[6],[0,e,0]);return[0,[4,e,0]]}}else if(!c){i(d[6],[0,e,1]);return[0,[4,e,1]]}}return 0}return 0})},H,e,I,J,L,function(d,b,c){var a=e(c),f=i(i(p[20],q),a),g=L(b),h=i(i(p[20],g),f),j=[0,[0,i(m[1][53],function(a,b){return i(d,[2,v(b)])}),0]],n=[0,l(k[30],0,j,h),0],o=0!==t(b)?1:0,r=[0,J(d,c,F(b),o),n],s=[0,[0,i(m[1][23],ax),0]];return l(k[14],0,s,r)}],"Haz3lweb__ProjectorView");return}(globalThis)); //# 4395 ".haz3lweb.objs/jsoo/default/haz3lweb.cma.js" @@ -476576,4 +476584,4 @@ I=[0,[0,c[14]],[0,f[34]],[0],n,D],J=d(c[19],c[16]);Q(M[1],L,0,0,K,J,I)}h.caml_re (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwiZW1wdHkiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJkdW1teSIsIm1rIiwiY2F0IiwiZGVzYyIsImNyZWF0ZSIsImVxdWFsJDAiLCJoYXNoJDEiLCJjcmVhdGVfd29ya2luZ19hcmVhIiwiaW5kZXhfY291bnQiLCJ3IiwibWFya191c2VkX2luZGljZXMiLCJ0YmwiLCJmcmVlX2luZGV4IiwidGJsX3JlZiIsImxlbiIsImlkeCQwIiwicmVtb3ZlX21hdGNoZXMiLCJzcGxpdF9hdF9tYXRjaCIsInJlbW92ZV9kdXBsaWNhdGVzIiwicHJldiIsInByZXYkMCIsInByZXYkMSIsInByZXYkMiIsInIkMiIsInIkMyIsIngkMSIsInByZXYkMyIsInIkNCIsInNldF9pZHgiLCJmaWx0ZXJfbWFya3MiLCJkZWx0YV8xJDAiLCJuZXh0X2NhdCIsInByZXZfY2F0IiwiZGVsdGFfMiQwIiwiZGVsdGFfMSIsImRlbHRhX3NlcSQwIiwieSQxIiwia2luZCQwIiwicmVwX2tpbmQiLCJ5JDIiLCJtYXJrcyQxIiwieSQzIiwibWFya3MkMiIsImNhdCQwIiwibWFya3MkMyIsImRlbHRhXzIiLCJkZWx0YV9zZXEiLCJkZWx0YV80IiwicmVtJDAiLCJkZWx0YSIsImNoYXIkMCIsInN0IiwiZXhwciQwIiwicmVkX3RyIiwidHIyIiwic3QyIiwiczIiLCJ0cjEiLCJzdDEiLCJzMSIsInByZXBlbmRfZGVyaXYiLCJyZXN0cmljdCIsInMkMSIsInByZXBlbmRfbWFya3NfZXhwcl9sc3QiLCJtJDEiLCJkZXJpdl8xJDAiLCJhbGxfY2hhcnMiLCJjYXRlZ29yaWVzIiwicmVtJDEiLCJkZXJpdl8yJDAiLCJkZXJpdl8xIiwiZGVyaXZfc2VxIiwieiQwIiwicmVtJDIiLCJjYXQkMSIsImRlcml2XzIiLCJ4bCIsInokMSIsImRlcml2XzQiLCJkZXJpdiIsImRlciIsImV4cHIkMSIsInN0YXR1cyIsIm1hIiwic3QkMCIsIm1ha2UiLCJmbGF0dGVuIiwiY20iLCJjb2xvcl9yZXByIiwic3BsaXQiLCJkdW1teV9vZmZzZXQiLCJtMSIsInAxIiwicDIiLCJnZXQiLCJzdGFydCIsInN1YnMiLCJzdG9wIiwidGVzdCIsImdldF9vcHQiLCJhbGxfb2Zmc2V0IiwiYWxsIiwib2Zmc2V0cyIsInN0cnMiLCJtYXRjaGVzIiwicHBfbWF0Y2giLCJzdHIiLCJuYl9ncm91cHMiLCJuIiwibiQwIiwidiQwIiwidiQxIiwibiQxIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJicmVhayQwIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsIndvcmQiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwibWF0Y2hfYmFja3NsYXNoZXMiLCJwZXJpb2QiLCJleHBhbmRfYnJhY2VzIiwiZG91YmxlX2FzdGVyaXNrIiwidG9fcmUiLCJyZWFkIiwicGllY2VzIiwiZm91bmQiLCJwaWVjZXMkMCIsInN0YXRlJDgiLCJzdGF0ZSQ5IiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsImV4cGxpY2l0X3NsYXNoJDAiLCJub3RfZW1wdHkiLCJtYXliZV9lbXB0eSIsIm5vdF9lbXB0eSQxIiwiZW5jbG9zZWRfc2V0JDAiLCJzdGF0ZSQyIiwic3RhdGUkNCIsIm5vdF9lbXB0eSQwIiwic3RhdGUkNSIsInN0YXRlJDYiLCJlbmNsb3NlZCQwIiwic3RhdGUkNyIsImVuY2xvc2VkJDEiLCJzdGF0ZSQzIiwic3RhdGUkMSIsImVuY2xvc2VkJDIiLCJlbmNsb3NlZCQzIiwiZXhwbCIsImlubmVyIiwiYWNjIiwiYmVnJDAiLCJhY2MkMCIsImJlZyQxIiwiYWNjJDEiLCJpJDMiLCJiZWckMiIsImkkNCIsImkkMiIsImdsb2IkMCIsImdsb2J4IiwiZ2xvYngkMCIsInBvc2l4X2NsYXNzX3N0cmluZ3MiLCJvcHRzIiwidW5ncmVlZHkiLCJkb3RhbGwiLCJkb2xsYXJfZW5kb25seSIsIm11bHRpbGluZSIsImFjY2VwdF9zIiwidW5nZXQiLCJncmVlZHlfbW9kIiwiZ3IiLCJnciQwIiwiYXRvbSIsImludGVnZXIiLCJoZXhkaWdpdCIsImNvZGUiLCJzJDMiLCJzJDQiLCJjbGFzcyQwIiwicG9zaXhfY2xhc3MiLCJwYXQiLCJmbGFncyIsImV4dHJhY3QiLCJyZXgiLCJnZXRfc3Vic3RyaW5nIiwiZ2V0X25hbWVkX3N1YnN0cmluZyIsImdldF9zdWJzdHJpbmdfb2ZzIiwicG1hdGNoIiwic3Vic3RpdHV0ZSIsInN1YnN0Iiwic3MiLCJmaW4iLCJtYXgiLCJyZXN1bHRzIiwiZGVsaW0iLCJuZXdsaW5lIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vYmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vc2FmZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JFRWdEOzs7Ozs7OztZQVBGQyxNQUFPQyxJQUFRQyxJQUFLLE9BQWJELE9BQVFDLFdBQXFCOztJQUNwQ0M7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsWUFBd0JDO0lBRTFCLElBRldDLDJCQUVQQyxVQUZPRCxnQkFDUFYsU0FBQUE7SUFFSixPQUFBLHVCQURJVyxZQUZzQkY7O09BTXhCRztZQUNBQyxVQUFXSCxRQUFPRCxNQUFNSztJQUFpQixVQVB6Q04sT0FPV0UsUUFBT0Q7b0NBQU1LLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBZ0M7WUFDbkRDLGFBQWFILEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQix1QkFBbkJFLEdBQUdDLEtBQUtiLEtBQUtjLEtBQTBEO0dBQUM7WUFDckZFLGlCQUFpQkosR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBdUM7WUFDckVH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O09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkVBUztPQTdFQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdEVBVDtPQXNFQVM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FHQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThGQVU7T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQTBEQU07T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0dBVztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVVBQztPQXBCQUY7T0FVQUM7T0FvQkFFO09BOUJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQXdDQUk7T0FXQUM7T0FuREFMO09BQUFBO09BQUFBO09BQUFBO09BNkRBTTtPQVdBQztPQXhFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFRO09BbkZBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRGQVM7T0E1RkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUdBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0JBRTtPQXBCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQTJCQUc7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXJOQXhCO09BcU5Bd0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FsQkFGO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FBQUE7T0ErREFPO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdFQVE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F4RUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUZBUztPQWpGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EwRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXpNQXZCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb09BMEI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwT0ExQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZPQTJCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BN09BM0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUxBb0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BU0FDO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUE0Mk5BaUI7O09BcnlOQVQ7T0FFQUM7T0FFQUM7T0FHQUM7T0FBQUE7T0FBQUE7T0FPQUM7T0FPQUM7T0FPQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUFzeU5BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW55TkFGLGFBb3dOQUMsaUJBK0JBQzs7OztFOzs7Ozs7Ozs7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RW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtPQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7NkIsYzs7SSxXO0c7a0QsTztHOzZDLE87Rzs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7RzsrQixzQjs7STs7O0ssbUI7SSxlOzs7O0ksZTs7Z0QseUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7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QUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7NkI7NkI7Ozt3Qjs7NkI7NkI7NkI7NkI7NkI7NkI7O3dCOzs7Ozs2Qjs2Qjs2Qjs7NkI7NkI7NkI7U0F4SU52Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQU1BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQzlMSTBGO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFB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OzhCOzhCOzs7d0I7d0I7Ozs7Ozs4Qjs4Qjs4Qjs7OEI7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7OytCOytCOzs7eUI7OytCOytCOytCOytCOytCOytCOzt5Qjs7Ozs7K0I7K0I7K0I7OytCOytCOytCO1NBREFkO1NBQ0FjO0lBR0pYO0lBQ0FZO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lDcGFJQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEOFlNQztJQUNBQzs7OztTQzFhQTdFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQXdCTjBDO1NBeEJNekM7U0FBQUM7Ozs7U0FXTnFDOzs7U0FlQUs7U0FEQUQ7O1NBekJNeEM7U0EyQk4wQzs7OztTQU5BTDs7O1NBckJNcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FzQk5pQztTQXRCTWhDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NEeWFBUTtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUtFO1FBRUFFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0FFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0dFO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFyRTtRQUFBZDtRQUFBVTtRQUFBVDtRQUFRdUY7OztTQTdCSHZJO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBQ0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtLRTtVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQXVCRk87VUFBQUM7VUFBQVM7VUFyQk01RDs7U0FVRGtFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0xDO1NBQUFDO1NBQUFFO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUtFO1NBRUFFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCVnArRDtJQUNBbXFLO0lBQ0FsckQ7SUFDQWhzQztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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R0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFBQUc7Z0JBQUFBO2dCQUFBQTs7SUFEQWlxQzs7dUJBQUEsU0FBcUI7O1dBQXJCcEM7T0FBQUQ7Z0JBQUE1bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFIO2dCQUFBRztnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQWtxQzs7dUJBQUEsU0FBaUI7O1dBQWpCbkM7T0FBQUQ7Z0JBQUE5bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUg7Z0JBQUFHO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQW1xQzs7dUJBQUEsU0FBaUI7O1dBQWpCbEM7T0FBQUQ7Z0JBQUFob0MsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFB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O1NBT2dCLE9BQUEsV0FBaEJzQyxLQUFXRDs7Ozs7bUJBUFR0QyxtQ0FBQUE7WUFLUzRDLE1BTFQ1QyxRQUtGNkMsTUFMQTVDO1FBS2dCLE9BQUEsV0FBaEI0QyxLQUFXRDs7O0tBOEJkOztHQUFLO1lBRVozQixhQUFjL0QsS0FBSU8sS0FBSTFFLEdBQUksT0E3SDFCdUcsR0E2SGNwQyxLQUFJTyxLQUFJMUUsR0FBd0I7WUFDOUNtSSxpQkFBa0JoRSxLQUFJbkUsR0FBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkUsR0FBMkI7WUFDakRvSSxrQkFBbUJqRSxLQUFJSyxJQUFHeEU7SUF4SGxCLElBQU4wRyxNQUFNLCtCQXdIZWxDO0lBdkh6QixPQUFBOzthQURJa0M7O2tDLE9BUEZILEdBK0htQnBDO2FBQU9uRTtHQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JB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LEk7STtJO0k7O0s7SztLO0s7O0k7STtJO0k7STtLLEk7SztLO0s7SztLO0s7SztLO0s7Szs7Szs7Ozs7O087O1EsTTtjO2M7YztPO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7UTs7Uzs7Uzs7UztROzs7TztROzs7Ozs7OztPOzs7Ozs7Ozs7TTs7Ozs7SSxROztLO0s7SztLO0s7STtJO0k7STtJO0k7SSxPOzs7STtLLE0sbUI7SyxNO0ssSTtrQzsrQjtJLE87RztzQiwrQjtzQixpQzs7STtLLEk7ZTtnQjtJO0k7SSxPO0c7O0ksdUIsTyxvQztHO0csd0I7O0k7SyxLO0ssSztLLEs7SyxLO0ssSztLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO0ksdUIsb0M7Rzs7SSw4Qjs7O0s7OztJO0c7MEIsYSxvQzs7Ozt3QixTOztJLDRCLE07NkI7Z0M7SSxXOzs7STtLLFE7SyxxQjtLO0s7STtJLFE7STtJO0k7STtJLE87RztxQyxzQjs7STtnQjs7STtHOytCLFM7K0IsUzs7SSw0QixNO0k7OztjOztlOztnQjttQjtLO007TyxJO087TztPOztVLFcsTTtzQjtxQixNO3NCO3FCLE07c0IsTTtVO1M7Tzs7VSxlO3NCO1M7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7USxjO1E7O087Tzs7Ozs7Ozs0Qjs7O0k7OztJLDhCO0ksdUIsNEM7STtLLEk7SztLOztLOzs7STs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7b0IsTztLLFU7Szs7Ozs7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQ3JHQXFDO1lBR0FDLE9BQVVDO0lBQW1CLElBQzNCQyxxQ0FEUUQsSUFFWUUsV0FBWUM7SUFDbEM7UUFGRUYsU0FDb0JDLFFBQVlDLG1CQURoQ0YsT0FDZ0NFO1NBSTVCQyxtQ0FOSUosR0FFWUUsUUFBWUM7S0FLaEMsVUFESUM7Z0JBQUFBO2lCQUFBQTtRQU9HLElBWHlCQyxVQUFBRixlQUFaRyxVQUFBSjtRQUFBQSxRQUFBSTtRQUFZSCxR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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ2xWVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQSt1RnVCSztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7OztJQUFBQzs7Ozs7OztJQXZWWEM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUFuNUVwQkM7Ozs7Ozs7Ozs7Ozs7O0lBTFE7O1FBR1IxTDtJQURvQyxXQUNwQ0EsT0FFQTBMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N0SUk7R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsImZ1bmN0aW9uIFZkb21UaHVuayhmbiwgYXJncywga2V5KSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFZkb21UaHVuaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWZG9tVGh1bmsoZm4sIGFyZ3MsIGtleSk7XG4gICAgfVxuXG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgfVxuXG4gICAgdGhpcy5mbiA9IGZuO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5WZG9tVGh1bmsgPSBWZG9tVGh1bms7XG5cblZkb21UaHVuay5wcm90b3R5cGUudHlwZSA9ICdUaHVuayc7XG5WZG9tVGh1bmsucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChwcmV2KSB7XG4gIGlmIChwcmV2ICYmIHRoaXMuYXJncyA9PT0gcHJldi5hcmdzICYmIHRoaXMuZm4gPT09IHByZXYuZm4pIHtcbiAgICByZXR1cm4gcHJldi52bm9kZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmZuKHRoaXMuYXJncyk7XG59O1xuXG5cbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudCh2KSB7XG4gIHYgPSB2IC0gKCh2ID4+PiAxKSAmIDB4NTU1NTU1NTUpO1xuICB2ID0gKHYgJiAweDMzMzMzMzMzKSArICgodiA+Pj4gMikgJiAweDMzMzMzMzMzKTtcbiAgcmV0dXJuICgodiArICh2ID4+PiA0KSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+PiAyNDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MgY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zKHgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIGNvbnN0XG5mdW5jdGlvbiBCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4bih4KSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NseiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCkge1xuICB2YXIgbiA9IDMyO1xuICB2YXIgeTtcbiAgeSA9IHggPj4xNjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtMTY7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDg7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0geCA+PiA0OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMjsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDI7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDE7IGlmICh5ICE9IDApIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSB4O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2NselxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY2x6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY2x6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY2x6KHgpIHtcbiAgdmFyIG4gPSA2NDtcbiAgdmFyIHk7XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTMyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxNik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gODsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gNDsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMik7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMSk7XG4gIGlmICghY2FtbF9pbnQ2NF9pc196ZXJvKHkpKSByZXR1cm4gbiAtIDI7XG4gIHJldHVybiBuIC0gY2FtbF9pbnQ2NF90b19pbnQzMih4KTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHogY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpIHtcbiAgaWYgKHggPT09IDApIHsgcmV0dXJuIDMyOyB9XG4gIHZhciBuID0gMTtcbiAgaWYgKCAoeCAmIDB4MDAwMEZGRkYpID09PSAwKSB7IG4gPSBuICsgMTY7IHggPSB4ID4+IDE2OyB9XG4gIGlmICggKHggJiAweDAwMDAwMEZGKSA9PT0gMCkgeyBuID0gbiArICA4OyB4ID0geCA+PiAgODsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwRikgPT09IDApIHsgbiA9IG4gKyAgNDsgeCA9IHggPj4gIDQ7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwMDMpID09PSAwKSB7IG4gPSBuICsgIDI7IHggPSB4ID4+ICAyOyB9XG4gIHJldHVybiBuIC0gKHggJiAxKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDY0X2N0eiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCwgY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FuZCwgY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfY3R6KHgpIHtcbiAgaWYgKGNhbWxfaW50NjRfaXNfemVybyh4KSkgeyByZXR1cm4gNjQ7IH1cbiAgdmFyIG4gPSAxO1xuICBmdW5jdGlvbiBpc196ZXJvICh4KSAgICB7IHJldHVybiBjYW1sX2ludDY0X2lzX3plcm8oeCk7IH1cbiAgZnVuY3Rpb24gbGFuZCAoeCx5KSAgICAgeyByZXR1cm4gY2FtbF9pbnQ2NF9hbmQoeCwgeSk7IH1cbiAgZnVuY3Rpb24gc21hbGxfaW50NjQoeCkgeyByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoeCwwLDApOyB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMHhGRkZGRkYsIDB4MDAwMEZGLCAweDAwMDApKSkpIHtcbiAgICBuID0gbiArIDMyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAzMik7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwRkZGRikpKSkge1xuICAgIG4gPSBuICsgMTY7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMEZGKSkpKSB7XG4gICAgbiA9IG4gKyAgODsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgOCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwRikpKSkge1xuICAgIG4gPSBuICsgIDQ7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDQpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDMpKSkpIHtcbiAgICBuID0gbiArICAyOyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgfVxuICByZXR1cm4gbiAtIChjYW1sX2ludDY0X3RvX2ludDMyKGNhbWxfaW50NjRfYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDAxKSkpKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViKGJhc2UsIGV4cG9uZW50KSB7XG4gIHZhciBvbmUgPSAxO1xuICB2YXIgbXVsID0gW29uZSwgYmFzZSwgb25lLCBvbmVdO1xuICB2YXIgcmVzID0gb25lO1xuICB3aGlsZSAoIWV4cG9uZW50PT0wKSB7XG4gICAgbXVsWzFdID0gKG11bFsxXSAqIG11bFszXSkgfCAwO1xuICAgIG11bFsyXSA9IChtdWxbMV0gKiBtdWxbMV0pIHwgMDtcbiAgICBtdWxbM10gPSAobXVsWzJdICogbXVsWzFdKSB8IDA7XG4gICAgcmVzID0gKHJlcyAqIG11bFtleHBvbmVudCAmIDNdKSB8IDA7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCA+PiAyO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKDEsMCk7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghY2FtbF9pbnQ2NF9pc196ZXJvKGV4cG9uZW50KSkge1xuICAgIG11bFsxXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzNdKTtcbiAgICBtdWxbMl0gPSBjYW1sX2ludDY0X211bChtdWxbMV0sIG11bFsxXSk7XG4gICAgbXVsWzNdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzJdLCBtdWxbMV0pO1xuICAgIHJlcyA9IGNhbWxfaW50NjRfbXVsKHJlcywgbXVsW2NhbWxfaW50NjRfbG8zMihleHBvbmVudCkgJiAzXSk7XG4gICAgZXhwb25lbnQgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKGV4cG9uZW50LCAyKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2hhc2hfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAscylcbn1cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9kb3VibGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaFxuZnVuY3Rpb24gQmFzZV9oYXNoX2RvdWJsZShkKSB7XG4gIHJldHVybiBjYW1sX2hhc2goMSwxLDAsZCk7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfYW1fdGVzdGluZyBjb25zdFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBCYXNlX2FtX3Rlc3RpbmcoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jc2VsX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2NzZWxfdmFsdWUodl9jb25kLCB2X3RydWUsIHZfZmFsc2UpIHtcbiAgICBpZiAodl9jb25kKVxuICAgICAgICByZXR1cm4gdl90cnVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHZfZmFsc2U7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXNcbmZ1bmN0aW9uIEJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlcyh2X2xlbikge1xuICAgIC8vIFRoaXMgZG9lcyBhIHJlZHVuZGFudCBib3VuZHMgY2hlY2sgYW5kIChzaW5jZSB0aGlzIGlzXG4gICAgLy8gamF2YXNjcmlwdCkgZG9lc24ndCBhbGxvY2F0ZSBsb2NhbGx5LCBidXQgdGhhdCdzIGZpbmUuXG4gICAgcmV0dXJuIGNhbWxfY3JlYXRlX2J5dGVzKHZfbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2xvY2FsX3ZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWFrZV92ZWN0XG5mdW5jdGlvbiBjYW1sX21ha2VfbG9jYWxfdmVjdCh2X2xlbiwgdl9lbHQpIHtcbiAgICAvLyBJbiBqYXZhc2NyaXB0IHRoZXJlJ3Mgbm8gbG9jYWwgYWxsb2NhdGlvbi5cbiAgICByZXR1cm4gY2FtbF9tYWtlX3ZlY3QgKHZfbGVuLCB2X2VsdCk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfaW50IGNvbnN0IChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX2Zvcm1hdCwgY2FtbF9maW5pc2hfZm9ybWF0dGluZywgY2FtbF9zdHJfcmVwZWF0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9pbnQoZm10LCBpKSB7XG4gIGlmIChjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCkgPT0gXCIlZFwiKSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiK2kpO1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChpIDwgMCkgeyBpZiAoZi5zaWduZWRjb252KSB7IGYuc2lnbiA9IC0xOyBpID0gLWk7IH0gZWxzZSBpID4+Pj0gMDsgfVxuICB2YXIgcyA9IGkudG9TdHJpbmcoZi5iYXNlKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBzLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIHMgPSBjYW1sX3N0cl9yZXBlYXQgKG4sICcwJykgKyBzO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKSB7XG4gIHZhciBpID0gMCwgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpLCBiYXNlID0gMTAsIHNpZ24gPSAxO1xuICBpZiAobGVuID4gMCkge1xuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpKSB7XG4gICAgY2FzZSA0NTogaSsrOyBzaWduID0gLTE7IGJyZWFrO1xuICAgIGNhc2UgNDM6IGkrKzsgc2lnbiA9IDE7IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaSArIDEgPCBsZW4gJiYgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKSA9PSA0OClcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSArIDEpKSB7XG4gICAgY2FzZSAxMjA6IGNhc2UgODg6IGJhc2UgPSAxNjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExMTogY2FzZSA3OTogYmFzZSA9ICA4OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgIDk4OiBjYXNlIDY2OiBiYXNlID0gIDI7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTc6IGNhc2UgODU6IGkgKz0gMjsgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gW2ksIHNpZ24sIGJhc2VdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2RpZ2l0XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2RpZ2l0KGMpIHtcbiAgaWYgKGMgPj0gNDggJiYgYyA8PSA1NykgIHJldHVybiBjIC0gNDg7XG4gIGlmIChjID49IDY1ICYmIGMgPD0gOTApICByZXR1cm4gYyAtIDU1O1xuICBpZiAoYyA+PSA5NyAmJiBjIDw9IDEyMikgcmV0dXJuIGMgLSA4NztcbiAgcmV0dXJuIC0xO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfcGFyc2VfZGlnaXQsIGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfaW50X29mX3N0cmluZyAocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgdGhyZXNob2xkID0gLTEgPj4+IDA7XG4gIHZhciBjID0gKGkgPCBsZW4pP2NhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk6MDtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGQ7XG4gIGZvciAoaSsrO2k8bGVuO2krKykge1xuICAgIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICAgIGlmIChjID09IDk1KSBjb250aW51ZTtcbiAgICBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBicmVhaztcbiAgICByZXMgPSBiYXNlICogcmVzICsgZDtcbiAgICBpZiAocmVzID4gdGhyZXNob2xkKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICAvLyBGb3IgYmFzZSBkaWZmZXJlbnQgZnJvbSAxMCwgd2UgZXhwZWN0IGFuIHVuc2lnbmVkIHJlcHJlc2VudGF0aW9uLFxuICAvLyBoZW5jZSBhbnkgdmFsdWUgb2YgJ3JlcycgKGxlc3MgdGhhbiAndGhyZXNob2xkJykgaXMgYWNjZXB0YWJsZS5cbiAgLy8gQnV0IHdlIGhhdmUgdG8gY29udmVydCB0aGUgcmVzdWx0IGJhY2sgdG8gYSBzaWduZWQgaW50ZWdlci5cbiAgcmVzID0gc2lnbiAqIHJlcztcbiAgaWYgKChiYXNlID09IDEwKSAmJiAoKHJlcyB8IDApICE9IHJlcykpXG4gICAgLyogU2lnbmVkIHJlcHJlc2VudGF0aW9uIGV4cGVjdGVkLCBhbGxvdyAtMl4obmJpdHMtMSkgdG8gMl4obmJpdHMtMSkgLSAxICovXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX211bCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tdWwoYSxiKXtcbiAgcmV0dXJuIE1hdGguaW11bChhLGIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RpdlxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9kaXYoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiAoeC95KXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuZnVuY3Rpb24gY2FtbF9tb2QoeCx5KSB7XG4gIGlmICh5ID09IDApIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHJldHVybiB4JXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnN3YXAxNlxuZnVuY3Rpb24gY2FtbF9ic3dhcDE2KHgpIHtcbiAgcmV0dXJuICgoKCh4ICYgMHgwMEZGKSA8PCA4KSB8XG4gICAgICAgICAgICgoeCAmIDB4RkYwMCkgPj4gOCkpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfYnN3YXBcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYnN3YXAoeCkge1xuICByZXR1cm4gKCgoeCAmIDB4MDAwMDAwRkYpIDw8IDI0KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMDAwRkYwMCkgPDwgOCkgfFxuICAgICAgICAgICgoeCAmIDB4MDBGRjAwMDApID4+PiA4KSB8XG4gICAgICAgICAgKCh4ICYgMHhGRjAwMDAwMCkgPj4+IDI0KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Jzd2FwXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X2Jzd2FwKHgpIHtcbiAgdmFyIHkgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHgpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhbeVs3XSwgeVs2XSwgeVs1XSwgeVs0XSwgeVszXSwgeVsyXSwgeVsxXSwgeVswXV0pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBIYXNodGJsXG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX3VuaXZfcGFyYW0gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9oYXNoX3VuaXZfcGFyYW0gKGNvdW50LCBsaW1pdCwgb2JqKSB7XG4gIHZhciBoYXNoX2FjY3UgPSAwO1xuICBmdW5jdGlvbiBoYXNoX2F1eCAob2JqKSB7XG4gICAgbGltaXQgLS07XG4gICAgaWYgKGNvdW50IDwgMCB8fCBsaW1pdCA8IDApIHJldHVybjtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkgJiYgb2JqWzBdID09PSAob2JqWzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKG9ialswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqWzJdKSB8IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgbGltaXQrKzsgaGFzaF9hdXgob2JqKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb3VudCAtLTtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgb2JqWzBdKSB8IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSBvYmoubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkgaGFzaF9hdXggKG9ialtpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKG9iaikpIHtcbiAgICAgIGNvdW50IC0tO1xuICAgICAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQob2JqKTtcbiAgICAgIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGZvciAodmFyIGIgPSBjb250ZW50LCBsID0gYi5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgICAgfSBlbHNlIHsgLyogQVJSQVkgKi9cbiAgICAgICAgZm9yICh2YXIgYSA9IGNvbnRlbnQsIGwgPSBhLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYVtpXSkgfCAwO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcob2JqKSkge1xuICAgICAgdmFyIGpzYnl0ZXMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9iaik7XG4gICAgICBmb3IgKHZhciBiID0ganNieXRlcywgbCA9IGpzYnl0ZXMubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBmb3IgKHZhciBiID0gb2JqLCBsID0gb2JqLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSAob2JqfDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBjb3VudCAtLTtcbiAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9iaikgfCAwO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSArb2JqKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgY291bnQtLTtcbiAgICAgIHZhciBwID0gY2FtbF9pbnQ2NF90b19ieXRlcyAoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IChvYmopKTtcbiAgICAgIGZvciAodmFyIGkgPSA3OyBpID49IDA7IGktLSkgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgcFtpXSkgfCAwO1xuICAgIH0gZWxzZSBpZihvYmogJiYgb2JqLmNhbWxfY3VzdG9tKSB7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoID0gY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaChvYmopIHwgMDtcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgaCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBoYXNoX2F1eCAob2JqKTtcbiAgcmV0dXJuIGhhc2hfYWNjdSAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vZnVuY3Rpb24gUk9UTDMyKHgsbikgeyByZXR1cm4gKCh4IDw8IG4pIHwgKHggPj4+ICgzMi1uKSkpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50KGgsZCkge1xuICBkID0gY2FtbF9tdWwoZCwgMHhjYzllMmQ1MXwwKTtcbiAgZCA9ICgoZCA8PCAxNSkgfCAoZCA+Pj4gKDMyLTE1KSkpOyAvLyBST1RMMzIoZCwgMTUpO1xuICBkID0gY2FtbF9tdWwoZCwgMHgxYjg3MzU5Myk7XG4gIGggXj0gZDtcbiAgaCA9ICgoaCA8PCAxMykgfCAoaCA+Pj4gKDMyLTEzKSkpOyAgIC8vUk9UTDMyKGgsIDEzKTtcbiAgcmV0dXJuICgoKGggKyAoaCA8PCAyKSl8MCkgKyAoMHhlNjU0NmI2NHwwKSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9tdWxcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmluYWwoaCkge1xuICBoIF49IGggPj4+IDE2O1xuICBoID0gY2FtbF9tdWwgKGgsIDB4ODVlYmNhNmJ8MCk7XG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPSBjYW1sX211bCAoaCwgMHhjMmIyYWUzNXwwKTtcbiAgaCBePSBoID4+PiAxNjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9oYXNoX21peF9pbnQ2NFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9mbG9hdCAoaCwgdjApIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfaW50NjQoaCwgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh2MCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbG8zMiwgY2FtbF9pbnQ2NF9oaTMyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludDY0IChoLCB2KSB7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2xvMzIodikpO1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9oaTMyKHYpKTtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gcy5jaGFyQ29kZUF0KGkpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCA4KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMikgPDwgMTYpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSszKSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHMuY2hhckNvZGVBdChpKzIpIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gcy5jaGFyQ29kZUF0KGkrMSkgPDwgODtcbiAgY2FzZSAxOlxuICAgIHcgfD0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHNbaV1cbiAgICAgIHwgKHNbaSsxXSA8PCA4KVxuICAgICAgfCAoc1tpKzJdIDw8IDE2KVxuICAgICAgfCAoc1tpKzNdIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gc1tpKzJdIDw8IDE2O1xuICBjYXNlIDI6IHcgfD0gc1tpKzFdIDw8IDg7XG4gIGNhc2UgMTogdyB8PSBzW2ldO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgZGVmYXVsdDpcbiAgfVxuICBoIF49IGxlbjtcbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9ieXRlcyhoLCB2KSB7XG4gIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KHYpO1xuICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNvbnRlbnQpXG4gIGVsc2UgLyogQVJSQVkgKi9cbiAgICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCwgY29udGVudCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsIHYpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHYpKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2ggbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0LCBjYW1sX2hhc2hfbWl4X3N0cmluZywgY2FtbF9oYXNoX21peF9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9oYXNoIChjb3VudCwgbGltaXQsIHNlZWQsIG9iaikge1xuICB2YXIgcXVldWUsIHJkLCB3ciwgc3osIG51bSwgaCwgdiwgaSwgbGVuO1xuICBzeiA9IGxpbWl0O1xuICBpZiAoc3ogPCAwIHx8IHN6ID4gMjU2KSBzeiA9IDI1NjtcbiAgbnVtID0gY291bnQ7XG4gIGggPSBzZWVkO1xuICBxdWV1ZSA9IFtvYmpdOyByZCA9IDA7IHdyID0gMTtcbiAgd2hpbGUgKHJkIDwgd3IgJiYgbnVtID4gMCkge1xuICAgIHYgPSBxdWV1ZVtyZCsrXTtcbiAgICBpZiAodiAmJiB2LmNhbWxfY3VzdG9tKXtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaGggPSBjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0uaGFzaCh2KTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50IChoLCBoaCk7XG4gICAgICAgIG51bSAtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICBzd2l0Y2ggKHZbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHZbMl0pO1xuICAgICAgICBudW0tLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBxdWV1ZVstLXJkXSA9IHZbMV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKSB7XG4gICAgICAgICAgLyogQWxsIGNvbnRpbnVhdGlvbnMgaGFzaCB0byB0aGUgc2FtZSB2YWx1ZSxcbiAgICAgICAgICAgICBzaW5jZSB3ZSBoYXZlIG5vIGlkZWEgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZW0uICovXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRhZyA9ICgodi5sZW5ndGggLSAxKSA8PCAxMCkgfCB2WzBdO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdGFnKTtcbiAgICAgICAgZm9yIChpID0gMSwgbGVuID0gdi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGlmICh3ciA+PSBzeikgYnJlYWs7XG4gICAgICAgICAgcXVldWVbd3IrK10gPSB2W2ldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh2ID09PSAodnwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHYrdisxKTtcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLHYpO1xuICAgICAgbnVtLS07XG4gICAgfVxuICB9XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmluYWwsIGNhbWxfaGFzaF9taXhfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19oYXNoKGgsIHYpe1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfc3RyaW5nKGgsdik7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZmZzZXRcbnZhciBjYW1sX2ludDY0X29mZnNldCA9IE1hdGgucG93KDIsIC0yNCk7XG5cbi8vUHJvdmlkZXM6IE1sSW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zmc2V0LCBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBNbEludDY0IChsbyxtaSxoaSkge1xuICB0aGlzLmxvID0gbG8gJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9IG1pICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSBoaSAmIDB4ZmZmZjtcbn1cbk1sSW50NjQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfalwiXG5NbEludDY0LnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyx0aGlzLm1pLHRoaXMuaGkpO1xufVxuXG5NbEludDY0LnByb3RvdHlwZS51Y29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIGlmICh0aGlzLmhpID4geC5oaSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmhpIDwgeC5oaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBoaSA9IHRoaXMuaGkgPDwgMTY7XG4gIHZhciB4aGkgPSB4LmhpIDw8IDE2O1xuICBpZiAoaGkgPiB4aGkpIHJldHVybiAxO1xuICBpZiAoaGkgPCB4aGkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubWkgPiB4Lm1pKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubWkgPCB4Lm1pKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLmxvID4geC5sbykgcmV0dXJuIDE7XG4gIGlmICh0aGlzLmxvIDwgeC5sbykgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cbk1sSW50NjQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxvID0gLSB0aGlzLmxvO1xuICB2YXIgbWkgPSAtIHRoaXMubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSAtIHRoaXMuaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICsgeC5sbztcbiAgdmFyIG1pID0gdGhpcy5taSArIHgubWkgKyAobG8gPj4gMjQpO1xuICB2YXIgaGkgPSB0aGlzLmhpICsgeC5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gLSB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pIC0geC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgLSB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAqIHgubG87XG4gIHZhciBtaSA9ICgobG8gKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMubWkgKiB4LmxvICsgdGhpcy5sbyAqIHgubWk7XG4gIHZhciBoaSA9ICgobWkgKiBjYW1sX2ludDY0X29mZnNldCkgfCAwKSArIHRoaXMuaGkgKiB4LmxvICsgdGhpcy5taSAqIHgubWkgKyB0aGlzLmxvICogeC5oaTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKHRoaXMubG98dGhpcy5taXx0aGlzLmhpKSA9PSAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5oaSA8PCAxNikgPCAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHRoaXMubG8gJiB4LmxvLCB0aGlzLm1pICYgeC5taSwgdGhpcy5oaSAmIHguaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb3x4LmxvLCB0aGlzLm1pfHgubWksIHRoaXMuaGl8eC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sb154LmxvLCB0aGlzLm1pXngubWksIHRoaXMuaGleeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9sZWZ0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIGlmIChzIDwgMjQpIHtcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKHRoaXMubG8gPDwgcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IHMpIHwgKHRoaXMubG8gPj4gKDI0IC0gcykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaGkgPDwgcykgfCAodGhpcy5taSA+PiAoMjQgLSBzKSkpO1xuICB9XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0ICgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sbyA8PCAocyAtIDI0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1pIDw8IChzIC0gMjQpKSB8ICh0aGlzLmxvID4+ICg0OCAtIHMpKSk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCgwLCAwLCB0aGlzLmxvIDw8IChzIC0gNDgpKVxufVxuTWxJbnQ2NC5wcm90b3R5cGUuc2hpZnRfcmlnaHRfdW5zaWduZWQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8ICh0aGlzLmhpIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLmhpID4+IHMpKTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gKHMgLSAyNCkpLFxuICAgICAgMCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5oaSA+PiAocyAtIDQ4KSwgMCwgMCk7XG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICB2YXIgaCA9ICh0aGlzLmhpIDw8IDE2KSA+PiAxNjtcbiAgaWYgKHMgPCAyNClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubG8gPj4gcykgfCAodGhpcy5taSA8PCAoMjQgLSBzKSksXG4gICAgICAodGhpcy5taSA+PiBzKSB8IChoIDw8ICgyNCAtIHMpKSxcbiAgICAgICgodGhpcy5oaSA8PCAxNikgPj4gcykgPj4+IDE2KTtcbiAgdmFyIHNpZ24gPSAodGhpcy5oaSA8PCAxNikgPj4gMzE7XG4gIGlmIChzIDwgNDgpXG4gICAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICAgICh0aGlzLm1pID4+IChzIC0gMjQpKSB8ICh0aGlzLmhpIDw8ICg0OCAtIHMpKSxcbiAgICAgICh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDI0KSA+PiAxNixcbiAgICAgIHNpZ24gJiAweGZmZmYpO1xuICByZXR1cm4gbmV3IE1sSW50NjQgKCh0aGlzLmhpIDw8IDE2KSA+PiAocyAtIDMyKSwgc2lnbiwgc2lnbik7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc2wxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhpID0gKHRoaXMuaGkgPDwgMSkgfCAodGhpcy5taSA+PiAyMyk7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPDwgMSkgfCAodGhpcy5sbyA+PiAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubG8gPSAodGhpcy5sbyA8PCAxKSAmIDB4ZmZmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubHNyMSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sbyA9ICgodGhpcy5sbyA+Pj4gMSkgfCAodGhpcy5taSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMubWkgPSAoKHRoaXMubWkgPj4+IDEpIHwgKHRoaXMuaGkgPDwgMjMpKSAmIDB4ZmZmZmZmO1xuICB0aGlzLmhpID0gdGhpcy5oaSA+Pj4gMTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnVkaXZtb2QgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIG1vZHVsdXMgPSB0aGlzLmNvcHkoKTtcbiAgdmFyIGRpdmlzb3IgPSB4LmNvcHkoKTtcbiAgdmFyIHF1b3RpZW50ID0gbmV3IE1sSW50NjQoMCwwLDApO1xuICB3aGlsZSAobW9kdWx1cy51Y29tcGFyZShkaXZpc29yKSA+IDApIHtcbiAgICBvZmZzZXQrKztcbiAgICBkaXZpc29yLmxzbDEoKTtcbiAgfVxuICB3aGlsZSAob2Zmc2V0ID49IDApIHtcbiAgICBvZmZzZXQgLS07XG4gICAgcXVvdGllbnQubHNsMSgpO1xuICAgIGlmIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID49IDApIHtcbiAgICAgIHF1b3RpZW50LmxvICsrO1xuICAgICAgbW9kdWx1cyA9IG1vZHVsdXMuc3ViKGRpdmlzb3IpO1xuICAgIH1cbiAgICBkaXZpc29yLmxzcjEoKTtcbiAgfVxuICByZXR1cm4geyBxdW90aWVudCA6IHF1b3RpZW50LCBtb2R1bHVzIDogbW9kdWx1cyB9O1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaSBeIHkuaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgcSA9IHgudWRpdm1vZCh5KS5xdW90aWVudDtcbiAgaWYgKHNpZ24gJiAweDgwMDApIHEgPSBxLm5lZygpO1xuICByZXR1cm4gcTtcbn1cbk1sSW50NjQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh5KVxue1xuICB2YXIgeCA9IHRoaXM7XG4gIGlmICh5LmlzWmVybygpKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICB2YXIgc2lnbiA9IHguaGk7XG4gIGlmICh4LmhpICYgMHg4MDAwKSB4ID0geC5uZWcoKTtcbiAgaWYgKHkuaGkgJiAweDgwMDApIHkgPSB5Lm5lZygpO1xuICB2YXIgciA9IHgudWRpdm1vZCh5KS5tb2R1bHVzO1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgciA9IHIubmVnKCk7XG4gIHJldHVybiByO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKHRoaXMubWkgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudG9GbG9hdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5oaSA8PCAxNikgKiBNYXRoLnBvdygyLCAzMikgKyB0aGlzLm1pICogTWF0aC5wb3coMiwgMjQpKSArIHRoaXMubG87XG59XG5NbEludDY0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW3RoaXMuaGkgPj4gOCxcbiAgICAgICAgICB0aGlzLmhpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pID4+IDE2LFxuICAgICAgICAgICh0aGlzLm1pID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLm1pICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvID4+IDE2LFxuICAgICAgICAgICh0aGlzLmxvID4+IDgpICYgMHhmZixcbiAgICAgICAgICB0aGlzLmxvICYgMHhmZl07XG59XG5NbEludDY0LnByb3RvdHlwZS5sbzMyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sbyB8ICgodGhpcy5taSAmIDB4ZmYpIDw8IDI0KTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmhpMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAoKHRoaXMubWkgPj4+IDgpICYgMHhmZmZmKSB8ICh0aGlzLmhpIDw8IDE2KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdWx0KHgseSkgeyByZXR1cm4geC51Y29tcGFyZSh5KSA8IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NvbXBhcmUoeCx5LCB0b3RhbCkgeyByZXR1cm4geC5jb21wYXJlKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9uZWcgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbmVnICh4KSB7IHJldHVybiB4Lm5lZygpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hZGQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYWRkICh4LCB5KSB7IHJldHVybiB4LmFkZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc3ViIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3N1YiAoeCwgeSkgeyByZXR1cm4geC5zdWIoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X211bCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbXVsKHgseSkgeyByZXR1cm4geC5tdWwoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX3plcm8gY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfemVybyh4KSB7IHJldHVybiAreC5pc1plcm8oKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlKHgpIHsgcmV0dXJuICt4LmlzTmVnKCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9hbmQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYW5kICh4LCB5KSB7IHJldHVybiB4LmFuZCh5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29yICh4LCB5KSB7IHJldHVybiB4Lm9yKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfeG9yIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3hvciAoeCwgeSkgeyByZXR1cm4geC54b3IoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfbGVmdCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9sZWZ0KHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodF91bnNpZ25lZChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc2hpZnRfcmlnaHQgKHgsIHMpIHsgcmV0dXJuIHguc2hpZnRfcmlnaHQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2RpdiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9kaXYgKHgsIHkpIHsgcmV0dXJuIHguZGl2KHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tb2QgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbW9kICh4LCB5KSB7IHJldHVybiB4Lm1vZCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfaW50MzIgKHgpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KHggJiAweGZmZmZmZiwgKHggPj4gMjQpICYgMHhmZmZmZmYsICh4ID4+IDMxKSAmIDB4ZmZmZilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19pbnQzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19pbnQzMiAoeCkgeyByZXR1cm4geC50b0ludCgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF90b19mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF90b19mbG9hdCAoeCkgeyByZXR1cm4geC50b0Zsb2F0ICgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKHggPCAwKSB4ID0gTWF0aC5jZWlsKHgpO1xuICByZXR1cm4gbmV3IE1sSW50NjQoXG4gICAgeCAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0KSAmIDB4ZmZmZmZmLFxuICAgIE1hdGguZmxvb3IoeCAqIGNhbWxfaW50NjRfb2Zmc2V0ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mb3JtYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX25lZ2F0aXZlLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiwgY2FtbF9pbnQ2NF90b19pbnQzMlxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9pc196ZXJvLCBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZm9ybWF0IChmbXQsIHgpIHtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoZi5zaWduZWRjb252ICYmIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkpIHtcbiAgICBmLnNpZ24gPSAtMTsgeCA9IGNhbWxfaW50NjRfbmVnKHgpO1xuICB9XG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICB2YXIgd2Jhc2UgPSBjYW1sX2ludDY0X29mX2ludDMyKGYuYmFzZSk7XG4gIHZhciBjdnRibCA9IFwiMDEyMzQ1Njc4OWFiY2RlZlwiO1xuICBkbyB7XG4gICAgdmFyIHAgPSB4LnVkaXZtb2Qod2Jhc2UpO1xuICAgIHggPSBwLnF1b3RpZW50O1xuICAgIGJ1ZmZlciA9IGN2dGJsLmNoYXJBdChjYW1sX2ludDY0X3RvX2ludDMyKHAubW9kdWx1cykpICsgYnVmZmVyO1xuICB9IHdoaWxlICghIGNhbWxfaW50NjRfaXNfemVybyh4KSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZiAobiA+IDApIGJ1ZmZlciA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIGJ1ZmZlcjtcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBidWZmZXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3BhcnNlX2RpZ2l0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3VsdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfbXVsLCBjYW1sX2ludDY0X25lZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2Zfc3RyaW5nKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGJhc2U2NCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoYmFzZSk7XG4gIHZhciB0aHJlc2hvbGQgPVxuICAgICAgbmV3IE1sSW50NjQoMHhmZmZmZmYsIDB4ZmZmZmZmZiwgMHhmZmZmKS51ZGl2bW9kKGJhc2U2NCkucXVvdGllbnQ7XG4gIHZhciBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgdmFyIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICBpZiAoZCA8IDAgfHwgZCA+PSBiYXNlKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgdmFyIHJlcyA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gIGZvciAoOzspIHtcbiAgICBpKys7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBtdWx0aXBsaWNhdGlvbiBiYXNlICogcmVzICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHRocmVzaG9sZCwgcmVzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gICAgZCA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZCk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9hZGQoY2FtbF9pbnQ2NF9tdWwoYmFzZTY0LCByZXMpLCBkKTtcbiAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgaW4gYWRkaXRpb24gKGJhc2UgKiByZXMpICsgZCAqL1xuICAgIGlmIChjYW1sX2ludDY0X3VsdChyZXMsIGQpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgfVxuICBpZiAoaSAhPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoYmFzZSA9PSAxMCAmJiBjYW1sX2ludDY0X3VsdChuZXcgTWxJbnQ2NCgwLCAwLCAweDgwMDApLCByZXMpKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICBpZiAoc2lnbiA8IDApIHJlcyA9IGNhbWxfaW50NjRfbmVnKHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShsbywgbWksIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkobG8sIGhpKXtcbiAgcmV0dXJuIG5ldyBNbEludDY0IChcbiAgICBsbyAmIDB4ZmZmZmZmLFxuICAgICgobG8gPj4+IDI0KSAmIDB4ZmYpIHwgKChoaSAmIDB4ZmZmZikgPDwgOCksXG4gICAgKGhpID4+PiAxNikgJiAweGZmZmYpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9sbzMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2xvMzIodil7IHJldHVybiB2LmxvMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaGkzMiBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9oaTMyKHYpeyByZXR1cm4gdi5oaTMyKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X29mX2J5dGVzKGEpIHtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGFbN10gPDwgMCB8IChhWzZdIDw8IDgpIHwgKGFbNV0gPDwgMTYpLFxuICAgICAgICAgICAgICAgICAgICAgYVs0XSA8PCAwIHwgKGFbM10gPDwgOCkgfCAoYVsyXSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzFdIDw8IDAgfCAoYVswXSA8PCA4KSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2J5dGVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2J5dGVzKHgpIHsgcmV0dXJuIHgudG9BcnJheSgpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oYXNoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hhc2godil7XG4gIHJldHVybiAodi5sbzMyKCkpIF4gKHYuaGkzMigpKVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHN5bWIpIHtcbiAgdmFyIHIgPSB7fTtcbiAgaWYoc3ltYikge1xuICAgIGZvcih2YXIgaSA9IDE7IGkgPCBzeW1iLmxlbmd0aDsgaSsrKXtcbiAgICAgIHJbY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3ltYltpXVsxXSldID0gc3ltYltpXVsyXVxuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKGNvbnN0LCBzaGFsbG93LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfY2FsbGJhY2ssIGNhbWxfYnVpbGRfc3ltYm9sc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9nbG9iYWwgKG4sIHYsIG5hbWVfb3B0KSB7XG4gIGlmIChuYW1lX29wdCkge1xuICAgIHZhciBuYW1lID0gbmFtZV9vcHQ7XG4gICAgaWYoZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jKSB7XG4gICAgICBuID0gY2FtbF9jYWxsYmFjayhnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MsIFtuYW1lXSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4KSB7XG4gICAgICAgIGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4ID0gY2FtbF9idWlsZF9zeW1ib2xzKGNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scylcbiAgICAgIH1cbiAgICAgIHZhciBuaWQgPSBjYW1sX2dsb2JhbF9kYXRhLnN5bWlkeFtuYW1lXVxuICAgICAgaWYobmlkID49IDApXG4gICAgICAgIG4gPSBuaWRcbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9yZWdpc3Rlcl9nbG9iYWw6IGNhbm5vdCBsb2NhdGUgXCIgKyBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2FtbF9nbG9iYWxfZGF0YVtuICsgMV0gPSB2O1xuICBpZihuYW1lX29wdCkgY2FtbF9nbG9iYWxfZGF0YVtuYW1lX29wdF0gPSB2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9nbG9iYWxfZGF0YSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2dldF9nbG9iYWxfZGF0YSAoKSB7IHJldHVybiBjYW1sX2dsb2JhbF9kYXRhOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfcHJpbnRhYmxlIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfaXNfcHJpbnRhYmxlKGMpIHsgcmV0dXJuICsoYyA+IDMxICYmIGMgPCAxMjcpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfcHJpbnRfc3RhdHNcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfcHJpbnRfc3RhdHModW5pdCkgeyByZXR1cm4gMCB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KGEsYikgeyByZXR1cm4gYSArIGIgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb25jYXRcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIE1sQnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbmNhdChzMSxzMil7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhzMS50LHMxLmMrczIuYyxzMS5sK3MyLmwpXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmQsIEFuZHkgUmF5XG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4vL1xuLy8gQmlnYXJyYXkuXG4vL1xuLy8gLSBhbGwgYmlnYXJyYXkgdHlwZXMgaW5jbHVkaW5nIEludDY0IGFuZCBDb21wbGV4LlxuLy8gLSBmb3J0cmFuICsgYyBsYXlvdXRzXG4vLyAtIHN1Yi9zbGljZS9yZXNoYXBlXG4vLyAtIHJldGFpbiBmYXN0IHBhdGggZm9yIDFkIGFycmF5IGFjY2Vzc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2luaXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYmFfaW5pdCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSB7XG4gIHZhciBuX2RpbXMgPSBkaW1zLmxlbmd0aDtcbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5fZGltczsgaSsrKSB7XG4gICAgaWYgKGRpbXNbaV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiBuZWdhdGl2ZSBkaW1lbnNpb25cIik7XG4gICAgc2l6ZSA9IHNpemUgKiBkaW1zW2ldO1xuICB9XG4gIHJldHVybiBzaXplO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpe1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgNzogY2FzZSAxMDogY2FzZSAxMTogcmV0dXJuIDI7XG4gIGRlZmF1bHQ6IHJldHVybiAxO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSl7XG4gIHZhciB2aWV3O1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMDogIHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDE6ICB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAyOiAgdmlldyA9IEludDhBcnJheTsgYnJlYWs7XG4gIGNhc2UgMzogIHZpZXcgPSBVaW50OEFycmF5OyBicmVhaztcbiAgY2FzZSA0OiAgdmlldyA9IEludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDU6ICB2aWV3ID0gVWludDE2QXJyYXk7IGJyZWFrO1xuICBjYXNlIDY6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgNzogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA4OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDk6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTA6IHZpZXcgPSBGbG9hdDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDExOiB2aWV3ID0gRmxvYXQ2NEFycmF5OyBicmVhaztcbiAgY2FzZSAxMjogdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICB9XG4gIGlmICghdmlldykgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuY3JlYXRlOiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICB2YXIgZGF0YSA9IG5ldyB2aWV3KHNpemUgKiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3VzdG9tX25hbWVcbi8vVmVyc2lvbjogPCA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycmF5XCJcblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA+PSA0LjExXG52YXIgY2FtbF9iYV9jdXN0b21fbmFtZSA9IFwiX2JpZ2FycjAyXCJcblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfaGkzMiwgY2FtbF9pbnQ2NF9sbzMyXG5mdW5jdGlvbiBNbF9CaWdhcnJheSAoa2luZCwgbGF5b3V0LCBkaW1zLCBidWZmZXIpIHtcblxuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgPSBidWZmZXI7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IGNhbWxfYmFfY3VzdG9tX25hbWU7XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciBvZnMgPSAwO1xuICBpZih0eXBlb2YgYXJnID09PSBcIm51bWJlclwiKSBhcmcgPSBbYXJnXTtcbiAgaWYgKCEgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnYXJyYXkuanM6IGludmFsaWQgb2Zmc2V0XCIpO1xuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBhcmcubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmdldC9zZXQ6IGJhZCBudW1iZXIgb2YgZGltZW5zaW9uc1wiKTtcbiAgaWYodGhpcy5sYXlvdXQgPT0gMCAvKiBjX2xheW91dCAqLykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMCB8fCBhcmdbaV0gPj0gdGhpcy5kaW1zW2ldKVxuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIGFyZ1tpXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuZGltcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKGFyZ1tpXSA8IDEgfHwgYXJnW2ldID4gdGhpcy5kaW1zW2ldKXtcbiAgICAgICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICAgICAgfVxuICAgICAgb2ZzID0gKG9mcyAqIHRoaXMuZGltc1tpXSkgKyAoYXJnW2ldIC0gMSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZnM7XG59XG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgbCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGggPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsLGgpO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIHIgPSB0aGlzLmRhdGFbb2ZzICogMiArIDBdO1xuICAgIHZhciBpID0gdGhpcy5kYXRhW29mcyAqIDIgKyAxXTtcbiAgICByZXR1cm4gWzI1NCwgciwgaV07XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIHRoaXMuZGF0YVtvZnNdXG4gIH1cbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gY2FtbF9pbnQ2NF9oaTMyKHYpO1xuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAwXSA9IHZbMV07XG4gICAgdGhpcy5kYXRhW29mcyAqIDIgKyAxXSA9IHZbMl07XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhW29mc10gPSB2O1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwXG59XG5cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiAodikge1xuICBzd2l0Y2godGhpcy5raW5kKXtcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgdmFyIGEgPSBjYW1sX2ludDY0X2xvMzIodik7XG4gICAgdmFyIGIgPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgaWYoYSA9PSBiKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGEpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGZvcih2YXIgaSA9IDA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdGhpcy5kYXRhW2ldID0gKGklMiA9PSAwKSA/IGEgOiBiO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogY2FzZSAxMTpcbiAgICAvLyBDb21wbGV4MzIsIENvbXBsZXg2NFxuICAgIHZhciBpbSA9IHZbMV07XG4gICAgdmFyIHJlID0gdlsyXTtcbiAgICBpZihpbSA9PSByZSl7XG4gICAgICB0aGlzLmRhdGEuZmlsbChpbSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gaW0gOiByZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnJlYWs7XG4gIGRlZmF1bHQ6XG4gICAgdGhpcy5kYXRhLmZpbGwodik7XG4gICAgYnJlYWs7XG4gIH1cbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIChiLCB0b3RhbCkge1xuICBpZiAodGhpcy5sYXlvdXQgIT0gYi5sYXlvdXQgfHwgdGhpcy5raW5kICE9IGIua2luZCkge1xuICAgIHZhciBrMSA9IHRoaXMua2luZCB8ICh0aGlzLmxheW91dCA8PCA4KTtcbiAgICB2YXIgazIgPSAgICBiLmtpbmQgfCAoYi5sYXlvdXQgPDwgOCk7XG4gICAgcmV0dXJuIGsyIC0gazE7XG4gIH1cbiAgaWYgKHRoaXMuZGltcy5sZW5ndGggIT0gYi5kaW1zLmxlbmd0aCkge1xuICAgIHJldHVybiBiLmRpbXMubGVuZ3RoIC0gdGhpcy5kaW1zLmxlbmd0aDtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAodGhpcy5kaW1zW2ldICE9IGIuZGltc1tpXSlcbiAgICAgIHJldHVybiAodGhpcy5kaW1zW2ldIDwgYi5kaW1zW2ldKSA/IC0xIDogMTtcbiAgc3dpdGNoICh0aGlzLmtpbmQpIHtcbiAgY2FzZSAwOlxuICBjYXNlIDE6XG4gIGNhc2UgMTA6XG4gIGNhc2UgMTE6XG4gICAgLy8gRmxvYXRzXG4gICAgdmFyIHgsIHk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSB0aGlzLmRhdGFbaV07XG4gICAgICB5ID0gYi5kYXRhW2ldO1xuICAgICAgaWYgKHggPCB5KVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoeCA+IHkpXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgaWYgKHggIT0geSkge1xuICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICBpZiAoeCA9PSB4KSByZXR1cm4gMTtcbiAgICAgICAgaWYgKHkgPT0geSkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OlxuICAgIC8vIEludDY0XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKz0yKSB7XG4gICAgICAvLyBDaGVjayBoaWdoZXN0IGJpdHMgZmlyc3RcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA8IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2krMV0gPiBiLmRhdGFbaSsxXSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPCAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgaWYgKCh0aGlzLmRhdGFbaV0gPj4+IDApID4gKGIuZGF0YVtpXSA+Pj4gMCkpXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAyOlxuICBjYXNlIDM6XG4gIGNhc2UgNDpcbiAgY2FzZSA1OlxuICBjYXNlIDY6XG4gIGNhc2UgODpcbiAgY2FzZSA5OlxuICBjYXNlIDEyOlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldIDwgYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAodGhpcy5kYXRhW2ldID4gYi5kYXRhW2ldKVxuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IE1sX0JpZ2FycmF5X2NfMV8xXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuICB0aGlzLmtpbmQgICA9IGtpbmQgO1xuICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgdGhpcy5kaW1zICAgPSBkaW1zO1xuICB0aGlzLmRhdGEgICA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlID0gbmV3IE1sX0JpZ2FycmF5KClcbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5vZmZzZXQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIGlmKHR5cGVvZiBhcmcgIT09IFwibnVtYmVyXCIpe1xuICAgIGlmKChhcmcgaW5zdGFuY2VvZiBBcnJheSkgJiYgYXJnLmxlbmd0aCA9PSAxKVxuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiTWxfQmlnYXJyYXlfY18xXzEub2Zmc2V0XCIpO1xuICB9XG4gIGlmIChhcmcgPCAwIHx8IGFyZyA+PSB0aGlzLmRpbXNbMF0pXG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJnO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG9mcykge1xuICByZXR1cm4gdGhpcy5kYXRhW29mc107XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob2ZzLHYpIHtcbiAgdGhpcy5kYXRhW29mc10gPSB2O1xuICByZXR1cm4gMFxufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHRoaXMuZGF0YS5maWxsKHYpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NvbXBhcmVcbmZ1bmN0aW9uIGNhbWxfYmFfY29tcGFyZShhLGIsdG90YWwpe1xuICByZXR1cm4gYS5jb21wYXJlKGIsdG90YWwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogTWxfQmlnYXJyYXksIE1sX0JpZ2FycmF5X2NfMV8xLCBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpe1xuICB2YXIgc2l6ZV9wZXJfZWxlbWVudCA9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCk7XG4gIGlmKGNhbWxfYmFfZ2V0X3NpemUoZGltcykgKiBzaXplX3Blcl9lbGVtZW50ICE9IGRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwibGVuZ3RoIGRvZXNuJ3QgbWF0Y2ggZGltc1wiKTtcbiAgfVxuICBpZihsYXlvdXQgPT0gMCAmJiAvLyBjX2xheW91dFxuICAgICBkaW1zLmxlbmd0aCA9PSAxICYmIC8vIEFycmF5MVxuICAgICBzaXplX3Blcl9lbGVtZW50ID09IDEpIC8vIDEtdG8tMSBtYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBNbF9CaWdhcnJheV9jXzFfMShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5KGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG5cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplLCBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGUoa2luZCwgbGF5b3V0LCBkaW1zX21sKSB7XG4gIHZhciBkaW1zID0gY2FtbF9qc19mcm9tX2FycmF5KGRpbXNfbWwpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBjYW1sX2JhX2dldF9zaXplKGRpbXMpKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NoYW5nZV9sYXlvdXRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gY2FtbF9iYV9jaGFuZ2VfbGF5b3V0KGJhLCBsYXlvdXQpIHtcbiAgaWYoYmEubGF5b3V0ID09IGxheW91dCkgcmV0dXJuIGJhO1xuICB2YXIgbmV3X2RpbXMgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2JhLmRpbXMubGVuZ3RoIC0gaSAtIDFdO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGxheW91dCwgbmV3X2RpbXMsIGJhLmRhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRcbmZ1bmN0aW9uIGNhbWxfYmFfa2luZChiYSkge1xuICByZXR1cm4gYmEua2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9sYXlvdXRcbmZ1bmN0aW9uIGNhbWxfYmFfbGF5b3V0KGJhKSB7XG4gIHJldHVybiBiYS5sYXlvdXQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbnVtX2RpbXNcbmZ1bmN0aW9uIGNhbWxfYmFfbnVtX2RpbXMoYmEpIHtcbiAgcmV0dXJuIGJhLmRpbXMubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2RpbShiYSwgaSkge1xuICBpZiAoaSA8IDAgfHwgaSA+PSBiYS5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5kaW1cIik7XG4gIHJldHVybiBiYS5kaW1zW2ldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMShiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8yXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMihiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2RpbV8zXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2RpbVxuZnVuY3Rpb24gY2FtbF9iYV9kaW1fMyhiYSkge1xuICByZXR1cm4gY2FtbF9iYV9kaW0oYmEsIDIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X2dlbmVyaWMoYmEsIGkpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpO1xuICByZXR1cm4gYmEuZ2V0KG9mcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MTYoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMpO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzICsgMSk7XG4gIHJldHVybiAoYjEgfCAoYjIgPDwgOCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X2dldDMyKGJhLCBpMCkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBiYS5nZXQob2ZzKzApO1xuICB2YXIgYjIgPSBiYS5nZXQob2ZzKzEpO1xuICB2YXIgYjMgPSBiYS5nZXQob2ZzKzIpO1xuICB2YXIgYjQgPSBiYS5nZXQob2ZzKzMpO1xuICByZXR1cm4gKCAoYjEgPDwgMCkgIHxcbiAgICAgICAgICAgKGIyIDw8IDgpICB8XG4gICAgICAgICAgIChiMyA8PCAxNikgfFxuICAgICAgICAgICAoYjQgPDwgMjQpICk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0NjQoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHZhciBiNSA9IGJhLmdldChvZnMrNCk7XG4gIHZhciBiNiA9IGJhLmdldChvZnMrNSk7XG4gIHZhciBiNyA9IGJhLmdldChvZnMrNik7XG4gIHZhciBiOCA9IGJhLmdldChvZnMrNyk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFtiOCxiNyxiNixiNSxiNCxiMyxiMixiMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8xKGJhLCBpMCkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChpMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8yXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8yKGJhLCBpMCwgaTEpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2dldF8zXG5mdW5jdGlvbiBjYW1sX2JhX2dldF8zKGJhLCBpMCwgaTEsIGkyKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfZ2VuZXJpY1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JhX3NldF9nZW5lcmljKGJhLCBpLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoY2FtbF9qc19mcm9tX2FycmF5KGkpKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MTYoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAxID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMSwgKHYgPj4+IDgpICYgMHhmZik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3VpbnQ4X3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JhX3VpbnQ4X3NldDMyKGJhLCBpMCwgdikge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGkwKTtcbiAgaWYob2ZzICsgMyA+PSBiYS5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBiYS5zZXQob2ZzKzAsICB2ICAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgICYgMHhmZik7XG4gIGJhLnNldChvZnMrMiwgKHYgPj4+IDE2KSAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzMsICh2ID4+PiAyNCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0NjQoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyA3ID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciB2ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh2KTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDg7IGkrKykgYmEuc2V0KG9mcytpLCB2WzctaV0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF8xXG5mdW5jdGlvbiBjYW1sX2JhX3NldF8xKGJhLCBpMCwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KGkwKSwgdik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzIoYmEsIGkwLCBpMSwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMV0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzMoYmEsIGkwLCBpMSwgaTIsIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChbaTAsaTEsaTJdKSwgdik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYmFfZmlsbChiYSwgdikge1xuICBiYS5maWxsKHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfYmxpdChzcmMsIGRzdCkge1xuICBpZiAoZHN0LmRpbXMubGVuZ3RoICE9IHNyYy5kaW1zLmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZHN0LmRpbXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRzdC5kaW1zW2ldICE9IHNyYy5kaW1zW2ldKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuYmxpdDogZGltZW5zaW9uIG1pc21hdGNoXCIpO1xuICBkc3QuZGF0YS5zZXQoc3JjLmRhdGEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zdWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3N1YihiYSwgb2ZzLCBsZW4pIHtcbiAgdmFyIGNoYW5nZWRfZGltO1xuICB2YXIgbXVsID0gMTtcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IDA7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYmEuZGltcy5sZW5ndGggLSAxKTsgaSsrKVxuICAgICAgbXVsID0gbXVsICogYmEuZGltc1tpXTtcbiAgICBjaGFuZ2VkX2RpbSA9IGJhLmRpbXMubGVuZ3RoIC0gMTtcbiAgICBvZnMgPSBvZnMgLSAxO1xuICB9XG4gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAgfHwgKG9mcyArIGxlbikgPiBiYS5kaW1zW2NoYW5nZWRfZGltXSl7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc3ViOiBiYWQgc3ViLWFycmF5XCIpO1xuICB9XG4gIHZhciBuZXdfZGltcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgbmV3X2RpbXNbaV0gPSBiYS5kaW1zW2ldO1xuICBuZXdfZGltc1tjaGFuZ2VkX2RpbV0gPSBsZW47XG4gIG11bCAqPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIG11bCwgKG9mcyArIGxlbikgKiBtdWwpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zbGljZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9zbGljZShiYSwgdmluZCkge1xuICB2aW5kID0gY2FtbF9qc19mcm9tX2FycmF5KHZpbmQpO1xuICB2YXIgbnVtX2luZHMgPSB2aW5kLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gW107XG4gIHZhciBzdWJfZGltcyA9IFtdO1xuICB2YXIgb2ZzO1xuXG4gIGlmIChudW1faW5kcyA+IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnNsaWNlOiB0b28gbWFueSBpbmRpY2VzXCIpO1xuXG4gIC8vIENvbXB1dGUgb2Zmc2V0IGFuZCBjaGVjayBib3VuZHNcbiAgaWYgKGJhLmxheW91dCA9PSAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSB2aW5kW2ldO1xuICAgIGZvciAoOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMDtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UobnVtX2luZHMpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2JhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMgKyBpXSA9IHZpbmRbaV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aCAtIG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IDE7XG4gICAgc3ViX2RpbXMgPSBiYS5kaW1zLnNsaWNlKDAsIGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHMpO1xuICB9XG4gIG9mcyA9IGJhLm9mZnNldChpbmRleCk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShzdWJfZGltcyk7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChiYS5raW5kKTtcbiAgdmFyIG5ld19kYXRhID0gYmEuZGF0YS5zdWJhcnJheShvZnMgKiBzaXplX3Blcl9lbGVtZW50LCAob2ZzICsgc2l6ZSkgKiBzaXplX3Blcl9lbGVtZW50KTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiYS5raW5kLCBiYS5sYXlvdXQsIHN1Yl9kaW1zLCBuZXdfZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfcmVzaGFwZVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9iYV9nZXRfc2l6ZVxuZnVuY3Rpb24gY2FtbF9iYV9yZXNoYXBlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBuZXdfZGltID0gW107XG4gIHZhciBudW1fZGltcyA9IHZpbmQubGVuZ3RoO1xuXG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNil7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICB9XG4gIHZhciBudW1fZWx0cyA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2RpbXM7IGkrKykge1xuICAgIG5ld19kaW1baV0gPSB2aW5kW2ldO1xuICAgIGlmIChuZXdfZGltW2ldIDwgMClcbiAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBudW1fZWx0cyA9IG51bV9lbHRzICogbmV3X2RpbVtpXTtcbiAgfVxuXG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShiYS5kaW1zKTtcbiAgLy8gQ2hlY2sgdGhhdCBzaXplcyBhZ3JlZVxuICBpZiAobnVtX2VsdHMgIT0gc2l6ZSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBzaXplIG1pc21hdGNoXCIpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgbmV3X2RpbSwgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaW50NjRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdFxuZnVuY3Rpb24gY2FtbF9iYV9zZXJpYWxpemUod3JpdGVyLCBiYSwgc3opIHtcbiAgd3JpdGVyLndyaXRlKDMyLCBiYS5kaW1zLmxlbmd0aCk7XG4gIHdyaXRlci53cml0ZSgzMiwgKGJhLmtpbmQgfCAoYmEubGF5b3V0IDw8IDgpKSk7XG4gIGlmKGJhLmNhbWxfY3VzdG9tID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGJhLmRpbXNbaV0gPCAweGZmZmYpXG4gICAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGltc1tpXSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCAweGZmZmYpO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIDApO1xuICAgICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgZWxzZVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSB3cml0ZXIud3JpdGUoMzIsYmEuZGltc1tpXSlcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgxNiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgd3JpdGVyLndyaXRlKDgsMCk7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoYmEuZ2V0KGkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQoYmEuZ2V0KGkpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYik7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiAvLyBGbG9hdDMyQXJyYXkgKGNvbXBsZXgzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGogPSBiYS5nZXQoaSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzFdKSk7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChqWzJdKSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGggLyAyOyBpKyspe1xuICAgICAgdmFyIGNvbXBsZXggPSBiYS5nZXQoaSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMV0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgICAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdChjb21wbGV4WzJdKSk7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IDg7IGorKykgd3JpdGVyLndyaXRlICg4LCBiW2pdKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgc3pbMF0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDQ7XG4gIHN6WzFdID0gKDQgKyBiYS5kaW1zLmxlbmd0aCkgKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Rlc2VyaWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMsIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV9idWZmZXJcbmZ1bmN0aW9uIGNhbWxfYmFfZGVzZXJpYWxpemUocmVhZGVyLCBzeiwgbmFtZSl7XG4gIHZhciBudW1fZGltcyA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIGlmIChudW1fZGltcyA8IDAgfHwgbnVtX2RpbXMgPiAxNilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHdyb25nIG51bWJlciBvZiBiaWdhcnJheSBkaW1lbnNpb25zXCIpO1xuICB2YXIgdGFnID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIGtpbmQgPSB0YWcgJiAweGZmXG4gIHZhciBsYXlvdXQgPSAodGFnID4+IDgpICYgMTtcbiAgdmFyIGRpbXMgPSBbXVxuICBpZihuYW1lID09IFwiX2JpZ2FycjAyXCIpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZV9kaW0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgICAgaWYoc2l6ZV9kaW0gPT0gMHhmZmZmKXtcbiAgICAgICAgdmFyIHNpemVfZGltX2hpID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgdmFyIHNpemVfZGltX2xvID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgaWYoc2l6ZV9kaW1faGkgIT0gMClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGJpZ2FycmF5IGRpbWVuc2lvbiBvdmVyZmxvdyBpbiAzMmJpdFwiKTtcbiAgICAgICAgc2l6ZV9kaW0gPSBzaXplX2RpbV9sbztcbiAgICAgIH1cbiAgICAgIGRpbXMucHVzaChzaXplX2RpbSk7XG4gICAgfVxuICBlbHNlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSBkaW1zLnB1c2gocmVhZGVyLnJlYWQzMnUoKSk7XG4gIHZhciBzaXplID0gY2FtbF9iYV9nZXRfc2l6ZShkaW1zKTtcbiAgdmFyIGRhdGEgPSBjYW1sX2JhX2NyZWF0ZV9idWZmZXIoa2luZCwgc2l6ZSk7XG4gIHZhciBiYSA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCBsYXlvdXQsIGRpbXMsIGRhdGEpO1xuICBzd2l0Y2goa2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2cygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDE2dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA2OiAgLy8gSW50MzJBcnJheSAoaW50MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgODogIC8vIEludDMyQXJyYXkgKGludClcbiAgY2FzZSA5OiAgLy8gSW50MzJBcnJheSAobmF0aXZlaW50KVxuICAgIHZhciBzaXh0eSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICBpZihzaXh0eSkgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjYW5ub3QgcmVhZCBiaWdhcnJheSB3aXRoIDY0LWJpdCBPQ2FtbCBpbnRzXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6IC8vIChpbnQ2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW50NjQgPSBjYW1sX2ludDY0X29mX2J5dGVzKHQpO1xuICAgICAgYmEuc2V0KGksaW50NjQpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxOiAgLy8gRmxvYXQ2NEFycmF5XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMDogIC8vIEZsb2F0MzJBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIGYgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxmKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzKHJlYWRlci5yZWFkMzJzKCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIHJlID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIGltID0gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGNhbWxfaW50NjRfb2ZfYnl0ZXModCkpO1xuICAgICAgYmEuc2V0KGksWzI1NCxyZSxpbV0pO1xuICAgIH1cbiAgICBicmVha1xuICB9XG4gIHN6WzBdID0gKDQgKyBudW1fZGltcykgKiA0O1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vRGVwcmVjYXRlZFxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfZnJvbVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2Zyb20oZGF0YTEsIGRhdGEyLCBqc3R5cCwga2luZCwgbGF5b3V0LCBkaW1zKXtcbiAgaWYoZGF0YTIgfHwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKSA9PSAyKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2NyZWF0ZV9mcm9tOiB1c2UgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVwiKTtcbiAgfVxuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YTEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2hhc2ggY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfaGFzaF9taXhfaW50LCBjYW1sX2hhc2hfbWl4X2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX2hhc2goYmEpe1xuICB2YXIgbnVtX2VsdHMgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICB2YXIgaCA9IDA7XG4gIHN3aXRjaChiYS5raW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgY2FzZSAzOiAgLy9VaW50OEFycmF5XG4gIGNhc2UgMTI6IC8vVWludDhBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMjU2KSBudW1fZWx0cyA9IDI1NjtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgNCA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCA4KSB8IChiYS5kYXRhW2krMl0gPDwgMTYpIHwgKGJhLmRhdGFbaSszXSA8PCAyNCk7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgdyA9IDA7XG4gICAgc3dpdGNoIChudW1fZWx0cyAmIDMpIHtcbiAgICBjYXNlIDM6IHcgID0gYmEuZGF0YVtpKzJdIDw8IDE2OyAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgMjogdyB8PSBiYS5kYXRhW2krMV0gPDwgODsgICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAxOiB3IHw9IGJhLmRhdGFbaSswXTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNDogIC8vIEludDE2QXJyYXlcbiAgY2FzZSA1OiAgLy8gVWludDE2QXJyYXlcbiAgICBpZihudW1fZWx0cyA+IDEyOCkgbnVtX2VsdHMgPSAxMjg7XG4gICAgdmFyIHcgPSAwLCBpID0wO1xuICAgIGZvcihpID0gMDsgaSArIDIgPD0gYmEuZGF0YS5sZW5ndGg7IGkrPTIpe1xuICAgICAgdyA9IGJhLmRhdGFbaSswXSB8IChiYS5kYXRhW2krMV0gPDwgMTYpO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsdyk7XG4gICAgfVxuICAgIGlmICgobnVtX2VsdHMgJiAxKSAhPSAwKVxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogIC8vIEludDMyQXJyYXkgKGludDY0KVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIG51bV9lbHRzICo9IDJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIG51bV9lbHRzICo9MjsgLyogZmFsbHRocm91Z2ggKi9cbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgaWYgKG51bV9lbHRzID4gNjQpIG51bV9lbHRzID0gNjQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZWx0czsgaSsrKSBoID0gY2FtbF9oYXNoX21peF9mbG9hdChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSAxMTogLy8gRmxvYXQ2NEFycmF5IChjb21wbGV4NjQpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiAzMikgbnVtX2VsdHMgPSAzMjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYmEpe1xuICByZXR1cm4gYmEuZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKXtcbiAgdmFyIGtpbmQ7XG4gIGlmICAgICAgKHRhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSBraW5kID0gMDtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpIGtpbmQgPSAxO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDhBcnJheSkga2luZCA9IDI7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpIGtpbmQgPSAzO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIGtpbmQgPSA0O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5KSBraW5kID0gNTtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkga2luZCA9IDY7XG4gIGVsc2UgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5OiB1bnN1cHBvcnRlZCBraW5kXCIpO1xuICByZXR1cm4ga2luZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZCA9IGNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSh0YSk7XG4gIHZhciB0YSA9XG4gICAgICAvKiBOZWVkZWQgdG8gYXZvaWQgdW5zaWduZWQgc2V0dGVycyBvdmVyZmxvd2luZ1xuICAgICAgICAgdGhlIHJhbmdlIG9mIE9DYW1sIFtpbnQzMl0gdmFsdWVzLiAqL1xuICAgICAgdGEgaW5zdGFuY2VvZiBVaW50MzJBcnJheSA/XG4gICAgICBuZXcgSW50MzJBcnJheSh0YS5idWZmZXIgLHRhLmJ5dGVPZmZzZXQsIHRhLmxlbmd0aCkgOiB0YTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShraW5kLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBTeXNcblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZywgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuU3lzX2Vycm9yLCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGl0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4aXQgKGNvZGUpIHtcbiAgaWYoZ2xvYmFsVGhpcy5xdWl0KSBnbG9iYWxUaGlzLnF1aXQoY29kZSk7XG4gIC8vbm9kZWpzXG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdClcbiAgICBnbG9iYWxUaGlzLnByb2Nlc3MuZXhpdChjb2RlKTtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiRnVuY3Rpb24gJ2V4aXQnIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG4pe1xuICBzd2l0Y2goZXhuWzJdKSB7XG4gIGNhc2UgLTg6IC8vIE1hdGNoX2ZhaWx1cmVcbiAgY2FzZSAtMTE6IC8vIEFzc2VydF9mYWlsdXJlXG4gIGNhc2UgLTEyOiAvLyBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuICAgIHJldHVybiAxO1xuICBkZWZhdWx0OlxuICAgIHJldHVybiAwO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGV4bil7XG4gIHZhciByID0gXCJcIjtcbiAgaWYoZXhuWzBdID09IDApIHtcbiAgICByICs9IGV4blsxXVsxXTtcbiAgICBpZihleG4ubGVuZ3RoID09IDMgJiYgZXhuWzJdWzBdID09IDAgJiYgY2FtbF9pc19zcGVjaWFsX2V4Y2VwdGlvbihleG5bMV0pKSB7XG5cbiAgICAgIHZhciBidWNrZXQgPSBleG5bMl07XG4gICAgICB2YXIgc3RhcnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc3RhcnQgPSAyXG4gICAgICB2YXIgYnVja2V0ID0gZXhuO1xuICAgIH1cbiAgICByICs9IFwiKFwiO1xuICAgIGZvcih2YXIgaSA9IHN0YXJ0OyBpIDwgYnVja2V0Lmxlbmd0aDsgaSArKyl7XG4gICAgICBpZihpID4gc3RhcnQpIHIrPVwiLCBcIjtcbiAgICAgIHZhciB2ID0gYnVja2V0W2ldXG4gICAgICBpZih0eXBlb2YgdiA9PSBcIm51bWJlclwiKVxuICAgICAgICByKz0gdi50b1N0cmluZygpO1xuICAgICAgZWxzZSBpZih2IGluc3RhbmNlb2YgTWxCeXRlcyl7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodHlwZW9mIHYgPT0gXCJzdHJpbmdcIil7XG4gICAgICAgIHIrPSAnXCInICsgdi50b1N0cmluZygpICsgJ1wiJztcbiAgICAgIH1cbiAgICAgIGVsc2UgciArPSBcIl9cIjtcbiAgICB9XG4gICAgciArPSBcIilcIlxuICB9IGVsc2UgaWYgKGV4blswXSA9PSAyNDgpe1xuICAgIHIgKz0gZXhuWzFdXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbiwgY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKXtcbiAgaWYoZXJyIGluc3RhbmNlb2YgQXJyYXkgJiYgKGVyclswXSA9PSAwIHx8IGVyclswXSA9PSAyNDgpKSB7XG4gICAgdmFyIGhhbmRsZXIgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiKTtcbiAgICBpZihoYW5kbGVyKSBjYW1sX2NhbGxiYWNrKGhhbmRsZXIsIFtlcnIsZmFsc2VdKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBtc2cgPSBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHZhciBhdF9leGl0ID0gY2FtbF9uYW1lZF92YWx1ZShcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiKTtcbiAgICAgIGlmKGF0X2V4aXQpIGNhbWxfY2FsbGJhY2soYXRfZXhpdCwgWzBdKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiICsgbXNnKTtcbiAgICAgIGlmKGVyci5qc19lcnJvcikgdGhyb3cgZXJyLmpzX2Vycm9yO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9zdGF0aWNfZW52XG5mdW5jdGlvbiBjYW1sX3NldF9zdGF0aWNfZW52KGssdil7XG4gIGlmKCFnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudilcbiAgICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudiA9IHt9XG4gIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W2tdID0gdjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fc3lzX2dldGVudiAoY29uc3QpXG5mdW5jdGlvbiBqc29vX3N5c19nZXRlbnYobikge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgLy9ub2RlanMgZW52XG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5lbnZcbiAgICAgJiYgcHJvY2Vzcy5lbnZbbl0gIT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBwcm9jZXNzLmVudltuXTtcbiAgaWYoZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZcbiAgICAgJiYgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl0pXG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGVudiAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldGVudiAobmFtZSkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKSk7XG4gIGlmKHIgPT09IHVuZGVmaW5lZClcbiAgICBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnZcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfdW5zYWZlX2dldGVudihuYW1lKXtcbiAgcmV0dXJuIGNhbWxfc3lzX2dldGVudiAobmFtZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJndlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciBjYW1sX2FyZ3YgPSAoKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIHZhciBtYWluID0gXCJhLm91dFwiO1xuICB2YXIgYXJncyA9IFtdXG5cbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmFyZ3ZcbiAgICAgJiYgcHJvY2Vzcy5hcmd2Lmxlbmd0aCA+IDEpIHtcbiAgICB2YXIgYXJndiA9IHByb2Nlc3MuYXJndlxuICAgIC8vbm9kZWpzXG4gICAgbWFpbiA9IGFyZ3ZbMV07XG4gICAgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gIH1cblxuICB2YXIgcCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKG1haW4pO1xuICB2YXIgYXJnczIgPSBbMCwgcF07XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKVxuICAgIGFyZ3MyLnB1c2goY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoYXJnc1tpXSkpO1xuICByZXR1cm4gYXJnczI7XG59KSgpKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG52YXIgY2FtbF9leGVjdXRhYmxlX25hbWUgPSBjYW1sX2FyZ3ZbMV1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2FyZ3YgKGEpIHtcbiAgcmV0dXJuIFswLCBjYW1sX2FyZ3ZbMV0sIGNhbWxfYXJndl07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfYXJndiAoYSkge1xuICByZXR1cm4gY2FtbF9hcmd2O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19tb2RpZnlfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19tb2RpZnlfYXJndihhcmcpe1xuICBjYW1sX2FyZ3YgPSBhcmc7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG5mdW5jdGlvbiBjYW1sX3N5c19leGVjdXRhYmxlX25hbWUoYSl7XG4gIHJldHVybiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHZhciBjbWQgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhjbWQpO1xuICBpZiAodHlwZW9mIHJlcXVpcmUgIT0gXCJ1bmRlZmluZWRcIil7XG4gICAgdmFyIGNoaWxkX3Byb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG4gICAgaWYoY2hpbGRfcHJvY2VzcyAmJiBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhjbWQse3N0ZGlvOiAnaW5oZXJpdCd9KTtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH1cbiAgfVxuICBlbHNlIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZSBtdXRhYmxlXG52YXIgY2FtbF9pbml0aWFsX3RpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpICogMC4wMDE7XG5mdW5jdGlvbiBjYW1sX3N5c190aW1lICgpIHtcbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHJldHVybiBub3cgKiAwLjAwMSAtIGNhbWxfaW5pdGlhbF90aW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW5cbi8vUmVxdWlyZXM6IGNhbWxfc3lzX3RpbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbihiKSB7XG4gIHJldHVybiBjYW1sX3N5c190aW1lKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JhbmRvbV9zZWVkIG11dGFibGVcbi8vVGhlIGZ1bmN0aW9uIG5lZWRzIHRvIHJldHVybiBhbiBhcnJheSBzaW5jZSBPQ2FtbCA0LjAuLi5cbmZ1bmN0aW9uIGNhbWxfc3lzX3JhbmRvbV9zZWVkICgpIHtcbiAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvKSB7XG4gICAgIGlmIChnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgICB2YXIgYSA9IGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSg0KSk7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfSBlbHNlIGlmIChnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgIHZhciBhID0gbmV3IEludDMyQXJyYXkoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMoMTYpLmJ1ZmZlcik7XG4gICAgICAgcmV0dXJuIFswLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdXTtcbiAgICAgfVxuICB9XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICB2YXIgeCA9IG5vd14weGZmZmZmZmZmKk1hdGgucmFuZG9tKCk7XG4gIHJldHVybiBbMCx4XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2ludF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIGNvbnN0XG4vLyBtYXhfaW50IC8gNCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgb3ZlcmZsb3dcbi8vbGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gd29yZF9zaXplIC8gOCAqIG1heF9hcnJheV9sZW5ndGggLSAxOztcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgKCkgeyByZXR1cm4gKDB4N0ZGRkZGRkYvNCkgfCAwO31cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4ICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJVbml4XCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIldpbjMyXCIgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiAoKSB7IHJldHVybiBvc190eXBlID09IFwiQ3lnd2luXCIgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImpzX29mX29jYW1sXCIpXTtcbn1cblxuLy9Qcm92aWRlczogb3NfdHlwZVxudmFyIG9zX3R5cGUgPSAoZ2xvYmFsVGhpcy5wcm9jZXNzICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PSBcIndpbjMyXCIpID8gXCJDeWd3aW5cIiA6IFwiVW5peFwiO1xuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9jb25maWcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9jb25maWcgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMob3NfdHlwZSksIDMyLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3N5c19pc2F0dHkoX2NoYW4pIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV92YXJpYW50XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfdmFyaWFudChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyhfdW5pdCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIoKXtyZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG52YXIgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1xuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIChib29sKSB7XG4gIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IGJvb2w7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuLy9SZXF1aXJlczogY2FtbF9ydW50aW1lX3dhcm5pbmdzXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCAoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfcnVudGltZV93YXJuaW5ncztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9lbmFibGVkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUoX2NoYW5uZWwpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcIlNwYWNldGltZSBwcm9maWxpbmcgb25seSB3b3JrcyBmb3IgbmF0aXZlIGNvZGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeGRnX2RlZmF1bHRzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF94ZGdfZGVmYXVsdHMoX3VuaXQpIHtcbiAgcmV0dXJuIDA7IC8vIGVtcHR5IGxpc3Rcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmlzRmlsZShyb290LnJlc3QpO1xufVxuLy9BbHdheXNcbi8vUmVxdWlyZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgaWYocHJvY2VzcyAmJiBwcm9jZXNzLm9uKSB7XG4gICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiAoZXJyLCBvcmlnaW4pIHtcbiAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycik7XG4gICAgICBwcm9jZXNzLmV4aXQgKDIpO1xuICAgIH0pXG4gIH1cbiAgZWxzZSBpZihnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIpe1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbihldmVudCl7XG4gICAgICBpZihldmVudC5lcnJvcil7XG4gICAgICAgIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGV2ZW50LmVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpO1xuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoXCIrdHlwZV9vZl92K1wiKVwiKTtcbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLlxuICAgICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBDIC8qY3N0LkNPREVfRE9VQkxFX0xJVFRMRSovKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFs3IC0gaV0pfVxuICAgICAgICAgIHdyaXRlci5zaXplXzMyICs9IDNcbiAgICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQ2NFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjQgPSBjYW1sX2hhc2hfbWl4X2ludDY0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQgPSBjYW1sX2hhc2hfbWl4X2ludDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0ID0gY2FtbF9oYXNoX21peF9mbG9hdDtcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nID0gY2FtbF9oYXNoX21peF9zdHJpbmc7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbFxuZnVuY3Rpb24gQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUoc2VlZCkge1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoc2VlZCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBNbEZha2VEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIE1sRmFrZUZkLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9hcnJheSwgY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfYnl0ZXNfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzXG5mdW5jdGlvbiBNbEZha2VEZXZpY2UgKHJvb3QsIGYpIHtcbiAgdGhpcy5jb250ZW50PXt9O1xuICB0aGlzLnJvb3QgPSByb290O1xuICB0aGlzLmxvb2t1cEZ1biA9IGY7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jcmVhdGVfZGlyX2lmX25lZWRlZCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNvbXAgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgdmFyIHJlcyA9IFwiXCI7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBjb21wLmxlbmd0aCAtIDE7IGkrKyl7XG4gICAgcmVzICs9IGNvbXBbaV0gKyBcIi9cIjtcbiAgICBpZih0aGlzLmNvbnRlbnRbcmVzXSkgY29udGludWU7XG4gICAgdGhpcy5jb250ZW50W3Jlc10gPSBTeW1ib2woXCJkaXJlY3RvcnlcIik7XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuc2xhc2ggPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIC9cXC8kLy50ZXN0KG5hbWUpP25hbWU6KG5hbWUgKyBcIi9cIik7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYoIXRoaXMuY29udGVudFtuYW1lXSAmJiB0aGlzLmxvb2t1cEZ1bikge1xuICAgIHZhciByZXMgPSB0aGlzLmxvb2t1cEZ1bihjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucm9vdCksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSkpO1xuICAgIGlmKHJlcyAhPT0gMCkge1xuICAgICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICAgIHRoaXMuY29udGVudFtuYW1lXT1uZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhyZXNbMV0pKTtcbiAgICB9XG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICAvLyBUaGUgcm9vdCBvZiB0aGUgZGV2aWNlIGV4aXN0c1xuICBpZihuYW1lID09IFwiXCIpIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGRpcmVjdG9yeSBleGlzdHNcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0pIHJldHVybiAxO1xuICAvLyBDaGVjayBpZiBhIGZpbGUgZXhpc3RzXG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSAmJiAhdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICByZXR1cm4gMVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiAwXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICBpZih0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFRVhJU1RcIiwgXCJta2RpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBGaWxlIGV4aXN0c1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHBhcmVudCA9IC9eKC4qKVxcL1teL10rLy5leGVjKG5hbWUpO1xuICBwYXJlbnQgPSAocGFyZW50ICYmIHBhcmVudFsxXSkgfHwgJyc7XG4gIGlmKCF0aGlzLmV4aXN0cyhwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihwYXJlbnQpKXtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQodGhpcy5zbGFzaChuYW1lKSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVERJUlwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIGlmKG4ubWF0Y2gocikpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RFTVBUWVwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIjogRGlyZWN0b3J5IG5vdCBlbXB0eVwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICB9XG4gIHZhciByID0gbmV3IFJlZ0V4cChcIl5cIiArIG5hbWVfc2xhc2ggKyBcIihbXi9dKylcIik7XG4gIHZhciBzZWVuID0ge31cbiAgdmFyIGEgPSBbXTtcbiAgZm9yKHZhciBuIGluIHRoaXMuY29udGVudCkge1xuICAgIHZhciBtID0gbi5tYXRjaChyKTtcbiAgICBpZihtICYmICFzZWVuW21bMV1dKSB7c2VlblttWzFdXSA9IHRydWU7IGEucHVzaChtWzFdKX1cbiAgfVxuICByZXR1cm4gYTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuXG4gIHZhciBhID0gdGhpcy5yZWFkZGlyKG5hbWUpO1xuICB2YXIgYyA9IGZhbHNlO1xuICB2YXIgaSA9IDA7XG4gIHJldHVybiB7IHJlYWRTeW5jIDogKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoYykge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGkgPT0gYS5sZW5ndGgpIHJldHVybiBudWxsO1xuICAgIHZhciBlbnRyeSA9IGFbaV07XG4gICAgaSsrO1xuICAgIHJldHVybiB7IG5hbWU6IGVudHJ5IH1cbiAgfSlcbiAgICAsIGNsb3NlU3luYzogKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChjKSB7XG4gICAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBjbG9zZWRpciBmYWlsZWRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGMgPSB0cnVlO1xuICAgICAgYSA9IFtdO1xuICAgIH0pXG4gIH1cbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICBpZihuYW1lID09IFwiXCIpICByZXR1cm4gdHJ1ZTtcbiAgdmFyIG5hbWVfc2xhc2ggPSB0aGlzLnNsYXNoKG5hbWUpO1xuICByZXR1cm4gdGhpcy5jb250ZW50W25hbWVfc2xhc2hdPzE6MDtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgb2sgPSB0aGlzLmNvbnRlbnRbbmFtZV0/dHJ1ZTpmYWxzZTtcbiAgZGVsZXRlIHRoaXMuY29udGVudFtuYW1lXTtcbiAgcmV0dXJuIG9rO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlZ2lzdGVyPSBmdW5jdGlvbiAobmFtZSxjb250ZW50KXtcbiAgdmFyIGZpbGU7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lXSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgaWYoY2FtbF9pc19tbF9ieXRlcyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY29udGVudCk7XG4gIGlmKGNhbWxfaXNfbWxfc3RyaW5nKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX3N0cmluZyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudCBpbnN0YW5jZW9mIEFycmF5KVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2FycmF5KGNvbnRlbnQpKTtcbiAgZWxzZSBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIilcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9qc2J5dGVzKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50LnRvU3RyaW5nKSB7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9ieXRlc19vZl9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoY29udGVudC50b1N0cmluZygpKSk7XG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGJ5dGVzKTtcbiAgfVxuICBpZihmaWxlKXtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IGZpbGU7XG4gIH1cbiAgZWxzZSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiByZWdpc3RlcmluZyBmaWxlIHdpdGggaW52YWxpZCBjb250ZW50IHR5cGVcIik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VEZXZpY2VcblxuLy9Qcm92aWRlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogTWxGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gTWxGYWtlRmlsZShjb250ZW50KXtcbiAgdGhpcy5kYXRhID0gY29udGVudDtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sRmFrZUZpbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRmlsZVxuTWxGYWtlRmlsZS5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB2YXIgb2xkID0gdGhpcy5kYXRhO1xuICB0aGlzLmRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gIGNhbWxfYmxpdF9ieXRlcyhvbGQsIDAsIHRoaXMuZGF0YSwgMCwgbGVuKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHRoaXMuZGF0YSk7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICB2YXIgbmV3X3N0ciA9IGNhbWxfY3JlYXRlX2J5dGVzKG9mZnNldCArIGxlbik7XG4gICAgdmFyIG9sZF9kYXRhID0gdGhpcy5kYXRhO1xuICAgIHRoaXMuZGF0YSA9IG5ld19zdHI7XG4gICAgY2FtbF9ibGl0X2J5dGVzKG9sZF9kYXRhLCAwLCB0aGlzLmRhdGEsIDAsIGNsZW4pO1xuICB9XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgdGhpcy5kYXRhLCBvZmZzZXQsIGxlbik7XG4gIHJldHVybiAwXG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIGxlbiA9IGNsZW4gLSBvZmZzZXQ7XG4gIH1cbiAgaWYobGVuKSB7XG4gICAgdmFyIGRhdGEgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW58MCk7XG4gICAgY2FtbF9ibGl0X2J5dGVzKHRoaXMuZGF0YSwgb2Zmc2V0LCBkYXRhLCAwLCBsZW4pO1xuICAgIGJ1Zi5zZXQoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhkYXRhKSwgcG9zKTtcbiAgfVxuICByZXR1cm4gbGVuXG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmRfb3V0KGZkLGZsYWdzKSB7XG4gIE1sRmFrZUZpbGUuY2FsbCh0aGlzLCBjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gIHRoaXMubG9nID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiAwIH0pO1xuICBpZihmZCA9PSAxICYmIHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZztcbiAgZWxzZSBpZihmZCA9PSAyICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUuZXJyb3I7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nXG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7IHJldHVybiAwIH1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMubG9nKSB7XG4gICAgaWYobGVuID4gMFxuICAgICAgICYmIHBvcyA+PSAwXG4gICAgICAgJiYgcG9zK2xlbiA8PSBidWYubGVuZ3RoXG4gICAgICAgJiYgYnVmW3BvcytsZW4tMV0gPT0gMTApXG4gICAgICBsZW4gLS07XG4gICAgLy8gRG8gbm90IG91dHB1dCB0aGUgbGFzdCBcXG4gaWYgcHJlc2VudFxuICAgIC8vIGFzIGNvbnNvbGUgbG9nZ2luZyBkaXNwbGF5IGEgbmV3bGluZSBhdCB0aGUgZW5kXG4gICAgdmFyIHNyYyA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbik7XG4gICAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCBzcmMsIDAsIGxlbik7XG4gICAgdGhpcy5sb2coc3JjLnRvVXRmMTYoKSk7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgaXMgd3JpdGUgb25seVwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubG9nID0gdW5kZWZpbmVkO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxGYWtlRmQobmFtZSwgZmlsZSxmbGFncykge1xuICB0aGlzLmZpbGUgPSBmaWxlO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5cbk1sRmFrZUZkLnByb3RvdHlwZS5lcnJfY2xvc2VkID0gZnVuY3Rpb24gKCkge1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5hbWUgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLmxlbmd0aCAoKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLndyaXRlKG9mZnNldCxidWYscG9zLGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgaWYodGhpcy5maWxlKSByZXR1cm4gdGhpcy5maWxlLnJlYWQob2Zmc2V0LCBidWYsIHBvcywgbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5maWxlID0gdW5kZWZpbmVkO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogaW5pdGlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogc2VyaWFsaXplX25hdCwgZGVzZXJpYWxpemVfbmF0LCBjYW1sX2hhc2hfbmF0XG5mdW5jdGlvbiBpbml0aWFsaXplX25hdCgpIHtcbiAgY2FtbF9jdXN0b21fb3BzW1wiX25hdFwiXSA9XG4gICAgeyBkZXNlcmlhbGl6ZSA6IGRlc2VyaWFsaXplX25hdCxcbiAgICAgIHNlcmlhbGl6ZSA6IHNlcmlhbGl6ZV9uYXQsXG4gICAgICBoYXNoIDogY2FtbF9oYXNoX25hdFxuICAgIH1cbn1cblxuLy9Qcm92aWRlczogTWxOYXRcbmZ1bmN0aW9uIE1sTmF0KHgpe1xuICB0aGlzLmRhdGEgPSBuZXcgSW50MzJBcnJheSh4KTtcbiAgLy8gRm9yIG51bSA8IDEuNVxuICAvLyBsZW5ndGhfbmF0IGlzbid0IGV4dGVybmFsLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlIE9iai5zaXplXG4gIC8vIHdvcmsgb3V0IHJpZ2h0LlxuICAvLyBXZSBhZGQgKzIgdG8gdGhlIGFycmF5IGxlbmd0aDpcbiAgLy8gLSArMSBmb3IgdGhlIHRhZ1xuICAvLyAtICsxIGZvciB0aGUgY3VzdG9tX29wcyBzbG90XG4gIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aCArIDJcbn1cblxuTWxOYXQucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gXCJfbmF0XCI7XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9uYXRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50LCBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY2FtbF9oYXNoX25hdCh4KSB7XG4gIHZhciBsZW4gPSBudW1fZGlnaXRzX25hdCh4LCAwLCB4LmRhdGEubGVuZ3RoKTtcbiAgdmFyIGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHguZGF0YVtpXSk7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGxlbmd0aF9uYXRcbmZ1bmN0aW9uIGxlbmd0aF9uYXQoeCkge1xuICByZXR1cm4geC5kYXRhLmxlbmd0aDtcbn1cblxuLy9Qcm92aWRlczogbmF0X29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gbmF0X29mX2FycmF5KGwpe1xuICByZXR1cm4gbmV3IE1sTmF0KGwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjcmVhdGVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gY3JlYXRlX25hdChzaXplKSB7XG4gIHZhciBhcnIgPSBuZXcgTWxOYXQoc2l6ZSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBhcnIuZGF0YVtpXSA9IC0xO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vUHJvdmlkZXM6IHNldF90b196ZXJvX25hdFxuZnVuY3Rpb24gc2V0X3RvX3plcm9fbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmxpdF9uYXRcbmZ1bmN0aW9uIGJsaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IG5hdDIuZGF0YVtvZnMyK2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0XG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0KG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0XG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0KG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBudGhfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIG51bV9kaWdpdHNfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZihuYXQuZGF0YVtvZnMraV0gIT0gMCkgcmV0dXJuIGkrMTtcbiAgfVxuICByZXR1cm4gMTsgLy8gMCBjb3VudHMgYXMgMSBkaWdpdFxufVxuXG4vL1Byb3ZpZGVzOiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXRcbmZ1bmN0aW9uIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQsIG9mcykge1xuICB2YXIgYSA9IG5hdC5kYXRhW29mc107XG4gIHZhciBiID0gMDtcbiAgaWYoYSAmIDB4RkZGRjAwMDApIHsgYiArPTE2OyBhID4+Pj0xNjsgfVxuICBpZihhICYgMHhGRjAwKSAgICAgeyBiICs9IDg7IGEgPj4+PSA4OyB9XG4gIGlmKGEgJiAweEYwKSAgICAgICB7IGIgKz0gNDsgYSA+Pj49IDQ7IH1cbiAgaWYoYSAmIDEyKSAgICAgICAgIHsgYiArPSAyOyBhID4+Pj0gMjsgfVxuICBpZihhICYgMikgICAgICAgICAgeyBiICs9IDE7IGEgPj4+PSAxOyB9XG4gIGlmKGEgJiAxKSAgICAgICAgICB7IGIgKz0gMTsgfVxuICByZXR1cm4gMzIgLSBiO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9pbnRcbmZ1bmN0aW9uIGlzX2RpZ2l0X2ludChuYXQsIG9mcykge1xuICBpZiAobmF0LmRhdGFbb2ZzXSA+PSAwKSByZXR1cm4gMVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfemVyb1xuZnVuY3Rpb24gaXNfZGlnaXRfemVybyhuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdID09IDApIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfb2RkXG5mdW5jdGlvbiBpc19kaWdpdF9vZGQobmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSAmIDEpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGluY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKHggfCAwKTtcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IGFkZF9uYXRcbi8vUmVxdWlyZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBjYXJyeSA9IGNhcnJ5X2luO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geFxuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcnJ5ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBjYXJyeSk7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBsZW1lbnRfbmF0XG5mdW5jdGlvbiBjb21wbGVtZW50X25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICgtMSA+Pj4gMCkgLSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKTtcbiAgfVxufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy9Qcm92aWRlczogZGVjcl9uYXRcbmZ1bmN0aW9uIGRlY3JfbmF0KG5hdCwgb2ZzLCBsZW4sIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PjApIC0gYm9ycm93O1xuICAgIG5hdC5kYXRhW29mcytpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gKGJvcnJvdyA9PSAxKSA/IDAgOiAxO1xufVxuXG4vLyBvY2FtbCBmbGlwcyBjYXJyeV9pblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBzdWJfbmF0XG4vL1JlcXVpcmVzOiBkZWNyX25hdFxuZnVuY3Rpb24gc3ViX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgLSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApIC0gYm9ycm93O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3Jyb3cgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVjcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIChib3Jyb3c9PTEpPzA6MSk7XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNbb2ZzM11cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogbXVsdF9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGFkZF9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMykge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgYSA9IChuYXQzLmRhdGFbb2ZzM10gPj4+IDApO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHgxID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSAmIDB4MDAwMEZGRkYpICsgY2Fycnk7XG4gICAgdmFyIHgyID0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhID4+PiAxNik7XG4gICAgY2FycnkgPSBNYXRoLmZsb29yKHgyLzY1NTM2KTtcbiAgICB2YXIgeDMgPSB4MSArICh4MiAlIDY1NTM2KSAqIDY1NTM2O1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0geDM7XG4gICAgY2FycnkgKz0gTWF0aC5mbG9vcih4My80Mjk0OTY3Mjk2KTtcbiAgfVxuXG4gIGlmKGxlbjIgPCBsZW4xICYmIGNhcnJ5KSB7XG4gICAgcmV0dXJuIGFkZF9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIG5hdF9vZl9hcnJheShbY2FycnldKSwgMCwgMSwgMCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhcnJ5O1xuICB9XG59XG5cbi8vIG5hdDEgKz0gbmF0MiAqIG5hdDNcbi8vIGxlbjEgPj0gbGVuMiArIGxlbjMuXG4vL1Byb3ZpZGVzOiBtdWx0X25hdFxuLy9SZXF1aXJlczogbXVsdF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMsIGxlbjMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjM7IGkrKykge1xuICAgIGNhcnJ5ICs9IG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEraSwgbGVuMS1pLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzK2kpO1xuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbmF0MSA9IDIgKiBuYXQxICsgbmF0MiAqIG5hdDJcbi8vIGxlbjEgPj0gMiAqIGxlbjJcbi8vUHJvdmlkZXM6IHNxdWFyZV9uYXRcbi8vUmVxdWlyZXM6IG11bHRfbmF0LCBhZGRfbmF0XG5mdW5jdGlvbiBzcXVhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgY2FycnkgKz0gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQxLCBvZnMxLCBsZW4xLCAwKTtcbiAgY2FycnkgKz0gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMik7XG4gIHJldHVybiBjYXJyeTtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X2xlZnRfbmF0XG5mdW5jdGlvbiBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4xOyBpKyspIHtcbiAgICB2YXIgYSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA8PCBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhID4+PiAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIEFzc3VtaW5nIGMgPiBhLCByZXR1cm5zIFtxdW90aWVudCwgcmVtYWluZGVyXSBvZiAoYTw8MzIgKyBiKS9jXG4vL1Byb3ZpZGVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfaGVscGVyKGEsIGIsIGMpIHtcbiAgdmFyIHggPSBhICogNjU1MzYgKyAoYj4+PjE2KTtcbiAgdmFyIHkgPSBNYXRoLmZsb29yKHgvYykgKiA2NTUzNjtcbiAgdmFyIHogPSAoeCAlIGMpICogNjU1MzY7XG4gIHZhciB3ID0geiArIChiICYgMHgwMDAwRkZGRik7XG4gIHJldHVybiBbeSArIE1hdGguZmxvb3Iody9jKSwgdyAlIGNdO1xufVxuXG4vLyBuYXQxW29mczErbGVuXSA8IG5hdDJbb2ZzMl1cbi8vUHJvdmlkZXM6IGRpdl9kaWdpdF9uYXRcbi8vUmVxdWlyZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9kaWdpdF9uYXQobmF0cSwgb2ZzcSwgbmF0ciwgb2ZzciwgbmF0MSwgb2ZzMSwgbGVuLCBuYXQyLCBvZnMyKSB7XG4gIHZhciByZW0gPSAobmF0MS5kYXRhW29mczErbGVuLTFdID4+PjApO1xuICAvLyBuYXRxW29mc3ErbGVuLTFdIGlzIGd1YXJhbnRlZWQgdG8gYmUgemVybyAoZHVlIHRvIHRoZSBNU0QgcmVxdWlyZW1lbnQpLFxuICAvLyBhbmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLlxuICBmb3IodmFyIGkgPSBsZW4tMjsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgeCA9IGRpdl9oZWxwZXIocmVtLCAobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0Mi5kYXRhW29mczJdID4+PiAwKSk7XG4gICAgbmF0cS5kYXRhW29mc3EraV0gPSB4WzBdO1xuICAgIHJlbSA9IHhbMV07XG4gIH1cbiAgbmF0ci5kYXRhW29mc3JdID0gcmVtO1xuICByZXR1cm4gMDtcbn1cblxuLy8gbmF0MVtuYXQyOl0gOj0gbmF0MSAvIG5hdDJcbi8vIG5hdDFbOm5hdDJdIDo9IG5hdDEgJSBuYXQyXG4vLyBsZW4xID4gbGVuMiwgbmF0MltvZnMyK2xlbjItMV0gPiBuYXQxW29mczErbGVuMS0xXVxuLy9Qcm92aWRlczogZGl2X25hdFxuLy9SZXF1aXJlczogZGl2X2RpZ2l0X25hdCwgZGl2X2hlbHBlciwgbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0LCBzaGlmdF9sZWZ0X25hdCwgc2hpZnRfcmlnaHRfbmF0LCBjcmVhdGVfbmF0LCBzZXRfdG9femVyb19uYXQsIG11bHRfZGlnaXRfbmF0LCBzdWJfbmF0LCBjb21wYXJlX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBkaXZfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgaWYobGVuMiA9PSAxKSB7XG4gICAgZGl2X2RpZ2l0X25hdChuYXQxLCBvZnMxKzEsIG5hdDEsIG9mczEsIG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIpO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHMgPSBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0Miwgb2ZzMitsZW4yLTEpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcblxuICB2YXIgZCA9IChuYXQyLmRhdGFbb2ZzMitsZW4yLTFdID4+PiAwKSArIDE7XG4gIHZhciBhID0gY3JlYXRlX25hdChsZW4yKzEpO1xuICBmb3IgKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gbGVuMjsgaS0tKSB7XG4gICAgLy8gRGVjZW50IGxvd2VyIGJvdW5kIG9uIHF1b1xuICAgIHZhciBxdW8gPSBkID09IDQyOTQ5NjcyOTYgPyAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDogZGl2X2hlbHBlcigobmF0MS5kYXRhW29mczEraV0gPj4+IDApLCAobmF0MS5kYXRhW29mczEraS0xXSA+Pj4wKSwgZClbMF07XG4gICAgc2V0X3RvX3plcm9fbmF0KGEsIDAsIGxlbjIrMSk7XG4gICAgbXVsdF9kaWdpdF9uYXQoYSwgMCwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoW3F1b10pLCAwKTtcbiAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIGEsIDAsIGxlbjIrMSwgMSk7XG5cbiAgICB3aGlsZSAobmF0MS5kYXRhW29mczEraV0gIT0gMCB8fCBjb21wYXJlX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMiwgbmF0Miwgb2ZzMiwgbGVuMikgPj0gMCkge1xuICAgICAgcXVvID0gcXVvICsgMTtcbiAgICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgMSk7XG4gICAgfVxuXG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBxdW87XG4gIH1cblxuICBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyBzaGlmdCByZW1haW5kZXJcbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gcmVzdG9yZVxuICByZXR1cm4gMDtcbn1cblxuXG4vLyAwIDw9IHNoaWZ0IDwgMzJcbi8vUHJvdmlkZXM6IHNoaWZ0X3JpZ2h0X25hdFxuZnVuY3Rpb24gc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gbGVuMS0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciBhID0gbmF0MS5kYXRhW29mczEraV0gPj4+IDA7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSAoYSA+Pj4gbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA8PCAoMzIgLSBuYml0cyk7XG4gIH1cbiAgbmF0Mi5kYXRhW29mczJdID0gd3JhcDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgaWYobmF0MS5kYXRhW29mczFdID4gbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gMTtcbiAgaWYobmF0MS5kYXRhW29mczFdIDwgbmF0Mi5kYXRhW29mczJdKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdFxuLy9SZXF1aXJlczogbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIpIHtcbiAgdmFyIGEgPSBudW1fZGlnaXRzX25hdChuYXQxLCBvZnMxLCBsZW4xKTtcbiAgdmFyIGIgPSBudW1fZGlnaXRzX25hdChuYXQyLCBvZnMyLCBsZW4yKTtcbiAgaWYoYSA+IGIpIHJldHVybiAxO1xuICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICBmb3IodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA+IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAxO1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApIDwgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX25hdF9yZWFsXG4vL1JlcXVpcmVzOiBjb21wYXJlX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXRfcmVhbChuYXQxLG5hdDIpe1xuICByZXR1cm4gY29tcGFyZV9uYXQobmF0MSwwLG5hdDEuZGF0YS5sZW5ndGgsbmF0MiwwLG5hdDIuZGF0YS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBsYW5kX2RpZ2l0X25hdFxuZnVuY3Rpb24gbGFuZF9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gJj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSB8PSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBseG9yX2RpZ2l0X25hdFxuZnVuY3Rpb24gbHhvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gXj0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBzZXJpYWxpemVfbmF0XG5mdW5jdGlvbiBzZXJpYWxpemVfbmF0KHdyaXRlciwgbmF0LCBzeil7XG4gIHZhciBsZW4gPSBuYXQuZGF0YS5sZW5ndGg7XG4gIHdyaXRlci53cml0ZSgzMiwgbGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICB3cml0ZXIud3JpdGUoMzIsIG5hdC5kYXRhW2ldKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHN6WzFdID0gbGVuICogODtcbn1cblxuLy9Qcm92aWRlczogZGVzZXJpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBNbE5hdFxuZnVuY3Rpb24gZGVzZXJpYWxpemVfbmF0KHJlYWRlciwgc3ope1xuICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgdmFyIG5hdCA9IG5ldyBNbE5hdChsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIG5hdC5kYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgfVxuICBzelswXSA9IGxlbiAqIDQ7XG4gIHJldHVybiBuYXQ7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGUoaGF5c3RhY2ssIG5lZWRsZSwgaGF5c3RhY2tfcG9zLCBoYXlzdGFja19sZW4sIG5lZWRsZV9wb3MsIG5lZWRsZV9sZW4pe1xuICB2YXIgaSA9IDA7XG4gIHZhciBsaW0gPSBoYXlzdGFja19sZW4gLSBuZWVkbGVfbGVuO1xuICBmb3IodmFyIGkgPSAwOyBpIDw9IGxpbTsgKytpKSB7XG4gICAgdmFyIG1hdGNoZXMgPSB0cnVlO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbmVlZGxlX2xlbjsgKytqKSB7XG4gICAgICBpZiAoY2FtbF9iYV9nZXRfMShoYXlzdGFjaywgaGF5c3RhY2tfcG9zICsgaSArIGopICE9IGNhbWxfYmFfZ2V0XzEobmVlZGxlLG5lZWRsZV9wb3MgKyBqKSkge1xuICAgICAgICBtYXRjaGVzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobWF0Y2hlcykgcmV0dXJuIChoYXlzdGFja19wb3MgKyBpKTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZmRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luLCBjYW1sX21kNV9jaGFuLCBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbmZ1bmN0aW9uIGNvcmVfbWQ1X2ZkKGZkKXtcbiAgICB2YXIgaWMgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbihmZCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGNhbWxfbWQ1X2NoYW4oaWMsIC0xKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW1sX21sX2Nsb3NlX2NoYW5uZWwoaWMpO1xuICAgIH1cbn1cblxuLy9Qcm92aWRlczogY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tZDVfc3RyaW5nLCBjYW1sX2JsaXRfc3RyaW5nLCBjYW1sX2NyZWF0ZV9ieXRlc1xuLy9SZXF1aXJlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nKGJ1Ziwgb2ZzLCBsZW4sIHJlcyl7XG4gICAgdmFyIGJ5dGVzID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YihidWYsIG9mcywgYnl0ZXMsIDAsIGxlbik7XG4gICAgdmFyIHJlczIgPSBjYW1sX21kNV9zdHJpbmcoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMoYnl0ZXMpLCAwLCBsZW4pO1xuICAgIGNhbWxfYmxpdF9zdHJpbmcocmVzMiwgMCwgcmVzLCAwLCAxNik7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vQmlnc3RyaW5nXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19kZXN0cm95X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1Yih2X2JzdHIpIHtcbiAgaWYgKHZfYnN0ci5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX2Rlc3Ryb3k6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICB9XG4gIC8vIE11dGF0ZSB0aGUgb3JpZ2luYWwgYmlnc3RyaW5nIGluLXBsYWNlLCB0byBzaW11bGF0ZSB3aGF0IHRoZSBDIHZlcnNpb24gZG9lc1xuICB2X2JzdHIuX19pc19kZWFsbG9jYXRlZCA9IHRydWU7XG4gIHZfYnN0ci5kYXRhID0gbmV3IHZfYnN0ci5kYXRhLl9fcHJvdG9fXy5jb25zdHJ1Y3RvcigwKTtcbiAgdl9ic3RyLmRpbXMgPSBbIDAgXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19yZWFsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX3JlYWxsb2MoYmlnc3RyaW5nLCBzaXplKSB7XG4gICAgaWYgKGJpZ3N0cmluZy5oYXNPd25Qcm9wZXJ0eSgnX19pc19kZWFsbG9jYXRlZCcpKSB7XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImJpZ3N0cmluZ19yZWFsbG9jOiBiaWdzdHJpbmcgaXMgYWxyZWFkeSBkZWFsbG9jYXRlZFwiKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3X2RhdGEgPSBuZXcgYmlnc3RyaW5nLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKHNpemUpO1xuICAgIG5ld19kYXRhLnNldChiaWdzdHJpbmcuZGF0YS5zbGljZSgwLCBzaXplKSk7XG4gICAgdmFyIG5ld19iaWdzdHJpbmcgPSBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmlnc3RyaW5nLmtpbmQsIGJpZ3N0cmluZy5sYXlvdXQsIFtzaXplXSwgbmV3X2RhdGEpO1xuICAgIGJpZ3N0cmluZ19kZXN0cm95X3N0dWIoYmlnc3RyaW5nKTtcblxuICAgIHJldHVybiBuZXdfYmlnc3RyaW5nO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLHNyY19vZmYsZHN0LGRzdF9vZmYsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyhiYTEsIGJhMV9vZmYsIGJhMiwgYmEyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYTEsIGJhMV9vZmYgKyBpKSwgY2FtbF9iYV9nZXRfMShiYTIsIGJhMl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9pbnRfY29tcGFyZSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZyhiYSwgYmFfb2ZmLCBzdHIsIHN0cl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHN0ciwgc3RyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jaHJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNocihiYSwgYmFfb2ZmLCBjaHIsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGNhbWxfYmFfZ2V0XzEoYmEsIGJhX29mZiArIGkpID09IGNocikge1xuICAgICAgcmV0dXJuIChiYV9vZmYgKyBpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKXtcbiAgaWYgKHR5cGVvZiBhID09PSBcIm51bWJlclwiKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhhKSkgcmV0dXJuIDI1MjsgLy8gc3RyaW5nX3RhZ1xuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhhKSkgcmV0dXJuIDEyNTI7IC8vIG9jYW1sIHN0cmluZyAoaWYgZGlmZmVyZW50IGZyb20gYnl0ZXMpXG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBBcnJheSAmJiBhWzBdID09PSAoYVswXT4+PjApICYmIGFbMF0gPD0gMjU1KSB7XG4gICAgLy8gTG9vayBsaWtlIGFuIG9jYW1sIGJsb2NrXG4gICAgdmFyIHRhZyA9IGFbMF0gfCAwO1xuICAgIC8vIGlnbm9yZSBkb3VibGVfYXJyYXlfdGFnIGJlY2F1c2Ugd2UgY2Fubm90IGFjY3VyYXRlbHkgc2V0XG4gICAgLy8gdGhpcyB0YWcgd2hlbiB3ZSBjcmVhdGUgYW4gYXJyYXkgb2YgZmxvYXQuXG4gICAgcmV0dXJuICh0YWcgPT0gMjU0KT8wOnRhZ1xuICB9XG4gIGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBTdHJpbmcpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKSByZXR1cm4gMTI1MjA7IC8vIGphdmFzY3JpcHQgc3RyaW5nLCBsaWtlIHN0cmluZ190YWcgKDI1MilcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIE51bWJlcikgcmV0dXJuIDEwMDA7IC8vIGludF90YWcgKHdlIHVzZSBpdCBmb3IgYWxsIG51bWJlcnMpXG4gIGVsc2UgaWYgKGEgJiYgYS5jYW1sX2N1c3RvbSkgcmV0dXJuIDEyNTU7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmIChhICYmIGEuY29tcGFyZSkgcmV0dXJuIDEyNTY7IC8vIGxpa2UgY3VzdG9tX3RhZyAoMjU1KVxuICBlbHNlIGlmICh0eXBlb2YgYSA9PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxMjQ3OyAvLyBsaWtlIGNsb3N1cmVfdGFnICgyNDcpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3ltYm9sXCIpIHJldHVybiAxMjUxO1xuICByZXR1cm4gMTAwMTsgLy9vdXRfb2ZfaGVhcF90YWdcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKXtcbiAgcmV0dXJuIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXSAmJiBjYW1sX2N1c3RvbV9vcHNbYS5jYW1sX2N1c3RvbV0uY29tcGFyZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShudW0sIGN1c3RvbSwgc3dhcCwgdG90YWwpIHtcbiAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oY3VzdG9tKTtcbiAgaWYoY29tcCkge1xuICAgIHZhciB4ID0gKHN3YXAgPiAwKT9jb21wKGN1c3RvbSxudW0sdG90YWwpOmNvbXAobnVtLGN1c3RvbSx0b3RhbCk7XG4gICAgaWYodG90YWwgJiYgeCAhPSB4KSByZXR1cm4gc3dhcDsgLy8gdG90YWwgJiYgbmFuXG4gICAgaWYoK3ggIT0gK3gpIHJldHVybiAreDsgLy8gbmFuXG4gICAgaWYoKHggfCAwKSAhPSAwKSByZXR1cm4gKHggfCAwKTsgLy8gIW5hblxuICB9XG4gIHJldHVybiBzd2FwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29tcGFyZV92YWwgKGNvbnN0LCBjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ19jb21wYXJlLCBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tLCBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRvdGFsKSB7XG4gIHZhciBzdGFjayA9IFtdO1xuICBmb3IoOzspIHtcbiAgICBpZiAoISh0b3RhbCAmJiBhID09PSBiKSkge1xuICAgICAgdmFyIHRhZ19hID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYSk7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYSA9PSAyNTApIHsgYSA9IGFbMV07IGNvbnRpbnVlIH1cblxuICAgICAgdmFyIHRhZ19iID0gY2FtbF9jb21wYXJlX3ZhbF90YWcoYik7XG4gICAgICAvLyBmb3J3YXJkX3RhZyA/XG4gICAgICBpZih0YWdfYiA9PSAyNTApIHsgYiA9IGJbMV07IGNvbnRpbnVlIH1cblxuICAgICAgLy8gdGFncyBhcmUgZGlmZmVyZW50XG4gICAgICBpZih0YWdfYSAhPT0gdGFnX2IpIHtcbiAgICAgICAgaWYodGFnX2EgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19iID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYSwgYiwgLTEsIHRvdGFsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYodGFnX2IgPT0gMTAwMCkge1xuICAgICAgICAgIGlmKHRhZ19hID09IDEyNTUpIHsgLy9pbW1lZGlhdGUgY2FuIGNvbXBhcmUgYWdhaW5zdCBjdXN0b21cbiAgICAgICAgICAgIHJldHVybiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20oYiwgYSwgMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gMVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGFnX2EgPCB0YWdfYik/LTE6MTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCh0YWdfYSl7XG4gICAgICAgIC8vIDI0NjogTGF6eV90YWcgaGFuZGxlZCBiZWxsb3dcbiAgICAgIGNhc2UgMjQ3OiAvLyBDbG9zdXJlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI0ODogLy8gT2JqZWN0XG4gICAgICAgIHZhciB4ID0gY2FtbF9pbnRfY29tcGFyZShhWzJdLCBiWzJdKTtcbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDk6IC8vIEluZml4XG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjUwOiAvLyBGb3J3YXJkIHRhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRm9yd2FyZF90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUxOiAvL0Fic3RyYWN0XG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MjogLy8gT0NhbWwgYnl0ZXNcbiAgICAgICAgaWYgKGEgIT09IGIpIHtcbiAgICAgICAgICB2YXIgeCA9IGNhbWxfYnl0ZXNfY29tcGFyZShhLCBiKTtcbiAgICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MzogLy8gRG91YmxlX3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheV90YWdcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlbiwgaGFuZGxlZCBhYm92ZVxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IERvdWJsZV9hcnJheV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTU6IC8vIEN1c3RvbV90YWdcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBDdXN0b21fdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNDc6IC8vIEZ1bmN0aW9uXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGZ1bmN0aW9uYWwgdmFsdWVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU1OiAvLyBDdXN0b21cbiAgICAgICAgdmFyIGNvbXAgPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYSk7XG4gICAgICAgIGlmKGNvbXAgIT0gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGIpKXtcbiAgICAgICAgICByZXR1cm4gKGEuY2FtbF9jdXN0b208Yi5jYW1sX2N1c3RvbSk/LTE6MTtcbiAgICAgICAgfVxuICAgICAgICBpZighY29tcClcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBhYnN0cmFjdCB2YWx1ZVwiKTtcbiAgICAgICAgdmFyIHggPSBjb21wKGEsYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIFVOT1JERVJFRFxuICAgICAgICAgIHJldHVybiB0b3RhbD8tMTp4O1xuICAgICAgICB9XG4gICAgICAgIGlmKHggIT09ICh4fDApKXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHggIT0gMCkgcmV0dXJuICh4IHwgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjU2OiAvLyBjb21wYXJlIGZ1bmN0aW9uXG4gICAgICAgIHZhciB4ID0gYS5jb21wYXJlKGIsdG90YWwpO1xuICAgICAgICBpZih4ICE9IHgpIHsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEwMDA6IC8vIE51bWJlclxuICAgICAgICBhID0gK2E7XG4gICAgICAgIGIgPSArYjtcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMTogLy8gVGhlIHJlc3RcbiAgICAgICAgLy8gSGVyZSB3ZSBjYW4gYmUgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgICAgICAgLy8gMS4gSmF2YVNjcmlwdCBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMi4gSmF2YVNjcmlwdCBvYmplY3QgdGhhdCBjYW4gYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy8gMy4gSmF2YVNjcmlwdCBvYmplY3QgdGhhbiBjYW5ub3QgYmUgY29lcmNlZCB0byBwcmltaXRpdmUgdHlwZXNcbiAgICAgICAgLy9cbiAgICAgICAgLy8gKDMpIHdpbGwgcmFpc2UgYSBbVHlwZUVycm9yXVxuICAgICAgICAvLyAoMikgd2lsbCBjb2VyY2UgdG8gcHJpbWl0aXZlIHR5cGVzIHVzaW5nIFt2YWx1ZU9mXSBvciBbdG9TdHJpbmddXG4gICAgICAgIC8vICgyKSBhbmQgKDMpLCBhZnRlciBldmVudHVhbCBjb2VyY2lvblxuICAgICAgICAvLyAtIGlmIGEgYW5kIGIgYXJlIHN0cmluZ3MsIGFwcGx5IGxleGljb2dyYXBoaWMgY29tcGFyaXNvblxuICAgICAgICAvLyAtIGlmIGEgb3IgYiBhcmUgbm90IHN0cmluZ3MsIGNvbnZlcnQgYSBhbmQgYiB0byBudW1iZXJcbiAgICAgICAgLy8gICBhbmQgYXBwbHkgc3RhbmRhcmQgY29tcGFyaXNvblxuICAgICAgICAvL1xuICAgICAgICAvLyBFeGNlcHRpb246IGAhPWAgd2lsbCBub3QgY29lcmNlL2NvbnZlcnQgaWYgYm90aCBhIGFuZCBiIGFyZSBvYmplY3RzXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICBpZiAoYSAhPSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICBpZiAoYSA9PSBhKSByZXR1cm4gMTtcbiAgICAgICAgICBpZiAoYiA9PSBiKSByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTE6IC8vIEphdmFTY3JpcHQgU3ltYm9sLCBubyBvcmRlcmluZy5cbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTI6IC8vIG9jYW1sIHN0cmluZ3NcbiAgICAgICAgdmFyIGEgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGEpO1xuICAgICAgICB2YXIgYiA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYik7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjA6IC8vIGphdmFzY3JpcHQgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGEudG9TdHJpbmcoKTtcbiAgICAgICAgdmFyIGIgPSBiLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmKGEgIT09IGIpIHtcbiAgICAgICAgICBpZihhIDwgYikgcmV0dXJuIC0xO1xuICAgICAgICAgIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ2OiAvLyBMYXp5X3RhZ1xuICAgICAgY2FzZSAyNTQ6IC8vIERvdWJsZV9hcnJheVxuICAgICAgZGVmYXVsdDogLy8gQmxvY2sgd2l0aCBvdGhlciB0YWdcbiAgICAgICAgaWYoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHRhZ19hKSkge1xuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYS5sZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiAoYS5sZW5ndGggPCBiLmxlbmd0aCk/LTE6MTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID4gMSkgc3RhY2sucHVzaChhLCBiLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFjay5sZW5ndGggPT0gMCkgcmV0dXJuIDA7XG4gICAgdmFyIGkgPSBzdGFjay5wb3AoKTtcbiAgICBiID0gc3RhY2sucG9wKCk7XG4gICAgYSA9IHN0YWNrLnBvcCgpO1xuICAgIGlmIChpICsgMSA8IGEubGVuZ3RoKSBzdGFjay5wdXNoKGEsIGIsIGkgKyAxKTtcbiAgICBhID0gYVtpXTtcbiAgICBiID0gYltpXTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2NvbXBhcmUgKGEsIGIpIHsgcmV0dXJuIGNhbWxfY29tcGFyZV92YWwgKGEsIGIsIHRydWUpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2ludF9jb21wYXJlIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfaW50X2NvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPCBiKSByZXR1cm4gKC0xKTsgaWYgKGEgPT0gYikgcmV0dXJuIDA7IHJldHVybiAxO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA9PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX25vdGVxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSAhPSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9ncmVhdGVyZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVyZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID49IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJ0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID4gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbGVzc2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc2VxdWFsICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8PSAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzdGhhbiBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2xlc3N0aGFuICh4LCB5KSB7IHJldHVybiArKGNhbWxfY29tcGFyZV92YWwoeCx5LGZhbHNlKSA8IDApOyB9XG4iLCIvLy8vLy8vLy8gQklOX1BST1RcblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGJpZ3N0cmluZywgaSl7XG4gIGlmIChpID4+PiAwID49IGJpZ3N0cmluZy5kYXRhLmxlbmd0aCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xufVxuXG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICBjYW1sX2NoZWNrX2JvdW5kKGRzdCxkc3RfcG9zKTsgLy8gZmlyc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MrbGVuLTEpOyAvLyBsYXN0IHBvc1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhzcmMsIHNyY19wb3MpOyAgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgdmFyIHZpZXcgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KGxlbik7XG4gIHZhciBidWZmZXIgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheSh2aWV3LmJ1ZmZlcik7XG4gIGJ1ZmZlci5zZXQoc3JjLmRhdGEuc3ViYXJyYXkoc3JjX3Bvcywgc3JjX3BvcyArIChsZW4gKiA4KSkpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMCBcbiAgICBkc3RbZHN0X3BvcytpKzFdID0gdmlld1tpXTtcbiAgfVxuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YihzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXMoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2NoZWNrX2JvdW5kLCBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YihzcmNfcG9zLHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDAgXG4gIGNhbWxfY2hlY2tfYm91bmQgKHNyYywgc3JjX3Bvcyk7IC8vIGZpcnN0IHBvcyBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zICsgbGVuIC0gMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3Bvcyk7IC8qIGZpcnN0IHBvcyAqL1xuICBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyhkc3QsIGRzdF9wb3MgKyBsZW4gKiA4IC0gMSk7IC8qIGxhc3QgcG9zICovXG4gIC8vIFsrIDFdIGJlY2F1c2UgdGhlIHRhZyBpcyBhdCBwb3MgMFxuICBzcmNfcG9zID0gc3JjX3BvcyArIDFcbiAgdmFyIGZsb2F0NjQgPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuRmxvYXQ2NEFycmF5KHNyYy5zbGljZShzcmNfcG9zLHNyY19wb3MgKyBsZW4pKTtcbiAgdmFyIGZsb2F0NjRfdWludDggPSBuZXcgam9vX2dsb2JhbF9vYmplY3QuVWludDhBcnJheShmbG9hdDY0LmJ1ZmZlcik7XG4gIHZhciB2aWV3ID0gZHN0LmRhdGEuc3ViYXJyYXkoZHN0X3BvcywgZHN0X3BvcyArIChsZW4gKiA4KSk7XG4gIHZpZXcuc2V0KGZsb2F0NjRfdWludDgpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3BvcywgZHN0LCBkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEsIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVxuZnVuY3Rpb24gYmluX3Byb3RfYmxpdF9idWZfc3R1YiAoc3JjX3Bvcywgc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIC8vIFtiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXSBpcyB1c2VkIHdpdGggbWl4ZWQgYmlnYXJyYXkga2luZHMuXG4gIC8vIENvbnZlcnRlciBldmVyeXRoaW5nIHRvIGJpZ2FycmF5IG9mIGNoYXIgYmVmb3JlIHRoZSBibGl0LlxuICBpZihzcmMua2luZCAhPSAxMikgLy8gMTIgaXMgdGhlIGNoYXIga2luZFxuICAgIHNyYyA9IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShzcmMuZGF0YSk7XG4gIGlmKGRzdC5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgZHN0ID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGRzdC5kYXRhKTtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gQXJyYXlcblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zdWIgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIgKGEsIGksIGxlbikge1xuICB2YXIgYTIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBhMlswXT0wO1xuICBmb3IodmFyIGkyID0gMSwgaTE9IGkrMTsgaTIgPD0gbGVuOyBpMisrLGkxKysgKXtcbiAgICBhMltpMl09YVtpMV07XG4gIH1cbiAgcmV0dXJuIGEyO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2FwcGVuZCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2FwcGVuZChhMSwgYTIpIHtcbiAgdmFyIGwxID0gYTEubGVuZ3RoLCBsMiA9IGEyLmxlbmd0aDtcbiAgdmFyIGwgPSBsMStsMi0xXG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBhWzBdID0gMDtcbiAgdmFyIGkgPSAxLGogPSAxO1xuICBmb3IoO2k8bDE7aSsrKSBhW2ldPWExW2ldO1xuICBmb3IoO2k8bDtpKyssaisrKSBhW2ldPWEyW2pdO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9jb25jYXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkge1xuICB2YXIgYSA9IFswXTtcbiAgd2hpbGUgKGwgIT09IDApIHtcbiAgICB2YXIgYiA9IGxbMV07XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBiLmxlbmd0aDsgaSsrKSBhLnB1c2goYltpXSk7XG4gICAgbCA9IGxbMl07XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vLy8vLy8vLy8vLy8vIFBlcnZhc2l2ZVxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9zZXQgKGFycmF5LCBpbmRleCwgbmV3dmFsKSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYXJyYXlbaW5kZXgrMV09bmV3dmFsOyByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9nZXQgbXV0YWJsZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X2dldCAoYXJyYXksIGluZGV4KSB7XG4gIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gYXJyYXkubGVuZ3RoIC0gMSkpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5W2luZGV4KzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2ZpbGxcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZmlsbChhcnJheSwgb2ZzLCBsZW4sIHYpe1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIGFycmF5W29mcytpKzFdID0gdjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jaGVja19ib3VuZCAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2NoZWNrX2JvdW5kIChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKGluZGV4ID4+PiAwID49IGFycmF5Lmxlbmd0aCAtIDEpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGFycmF5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfdmVjdCBjb25zdCAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfdmVjdCAobGVuLCBpbml0KSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0wO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gaW5pdDtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9mbG9hdF92ZWN0IGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV9mbG9hdF92ZWN0KGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlKGxlbil7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBsZW4gPSBsZW4gKyAxIHwgMDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTtcbiAgYlswXT0yNTQ7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSAwO1xuICByZXR1cm4gYlxufVxuIiwiLy9Qcm92aWRlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBibGFrZTJiID0gKGZ1bmN0aW9uICgpIHtcbi8vIEJsYWtlMkIgaW4gcHVyZSBKYXZhc2NyaXB0XG4vLyBBZGFwdGVkIGZyb20gdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbiBSRkM3NjkzXG4vLyBQb3J0ZWQgdG8gSmF2YXNjcmlwdCBieSBEQyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9kY3Bvc2NoXG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSB2W2IsYisxXVxuLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuZnVuY3Rpb24gQURENjRBQSAodiwgYSwgYikge1xuICBjb25zdCBvMCA9IHZbYV0gKyB2W2JdXG4gIGxldCBvMSA9IHZbYSArIDFdICsgdltiICsgMV1cbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSBiXG4vLyBiMCBpcyB0aGUgbG93IDMyIGJpdHMgb2YgYiwgYjEgcmVwcmVzZW50cyB0aGUgaGlnaCAzMiBiaXRzXG5mdW5jdGlvbiBBREQ2NEFDICh2LCBhLCBiMCwgYjEpIHtcbiAgbGV0IG8wID0gdlthXSArIGIwXG4gIGlmIChiMCA8IDApIHtcbiAgICBvMCArPSAweDEwMDAwMDAwMFxuICB9XG4gIGxldCBvMSA9IHZbYSArIDFdICsgYjFcbiAgaWYgKG8wID49IDB4MTAwMDAwMDAwKSB7XG4gICAgbzErK1xuICB9XG4gIHZbYV0gPSBvMFxuICB2W2EgKyAxXSA9IG8xXG59XG5cbi8vIExpdHRsZS1lbmRpYW4gYnl0ZSBhY2Nlc3NcbmZ1bmN0aW9uIEIyQl9HRVQzMiAoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJbaV0gXiAoYXJyW2kgKyAxXSA8PCA4KSBeIChhcnJbaSArIDJdIDw8IDE2KSBeIChhcnJbaSArIDNdIDw8IDI0KVxufVxuXG4vLyBHIE1peGluZyBmdW5jdGlvblxuLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuZnVuY3Rpb24gQjJCX0cgKGEsIGIsIGMsIGQsIGl4LCBpeSkge1xuICBjb25zdCB4MCA9IG1baXhdXG4gIGNvbnN0IHgxID0gbVtpeCArIDFdXG4gIGNvbnN0IHkwID0gbVtpeV1cbiAgY29uc3QgeTEgPSBtW2l5ICsgMV1cblxuICBBREQ2NEFBKHYsIGEsIGIpIC8vIHZbYSxhKzFdICs9IHZbYixiKzFdIC4uLiBpbiBKUyB3ZSBtdXN0IHN0b3JlIGEgdWludDY0IGFzIHR3byB1aW50MzJzXG4gIEFERDY0QUModiwgYSwgeDAsIHgxKSAvLyB2W2EsIGErMV0gKz0geCAuLi4geDAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIHgsIHgxIGlzIHRoZSBoaWdoIDMyIGJpdHNcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgdG8gdGhlIHJpZ2h0IGJ5IDMyIGJpdHNcbiAgbGV0IHhvcjAgPSB2W2RdIF4gdlthXVxuICBsZXQgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9IHhvcjFcbiAgdltkICsgMV0gPSB4b3IwXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSAyNCBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjAgPj4+IDI0KSBeICh4b3IxIDw8IDgpXG4gIHZbYiArIDFdID0gKHhvcjEgPj4+IDI0KSBeICh4b3IwIDw8IDgpXG5cbiAgQURENjRBQSh2LCBhLCBiKVxuICBBREQ2NEFDKHYsIGEsIHkwLCB5MSlcblxuICAvLyB2W2QsZCsxXSA9ICh2W2QsZCsxXSB4b3IgdlthLGErMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMTYgYml0c1xuICB4b3IwID0gdltkXSBeIHZbYV1cbiAgeG9yMSA9IHZbZCArIDFdIF4gdlthICsgMV1cbiAgdltkXSA9ICh4b3IwID4+PiAxNikgXiAoeG9yMSA8PCAxNilcbiAgdltkICsgMV0gPSAoeG9yMSA+Pj4gMTYpIF4gKHhvcjAgPDwgMTYpXG5cbiAgQURENjRBQSh2LCBjLCBkKVxuXG4gIC8vIHZbYixiKzFdID0gKHZbYixiKzFdIHhvciB2W2MsYysxXSkgcm90YXRlZCByaWdodCBieSA2MyBiaXRzXG4gIHhvcjAgPSB2W2JdIF4gdltjXVxuICB4b3IxID0gdltiICsgMV0gXiB2W2MgKyAxXVxuICB2W2JdID0gKHhvcjEgPj4+IDMxKSBeICh4b3IwIDw8IDEpXG4gIHZbYiArIDFdID0gKHhvcjAgPj4+IDMxKSBeICh4b3IxIDw8IDEpXG59XG5cbi8vIEluaXRpYWxpemF0aW9uIFZlY3RvclxuY29uc3QgQkxBS0UyQl9JVjMyID0gbmV3IFVpbnQzMkFycmF5KFtcbiAgMHhmM2JjYzkwOCwgMHg2YTA5ZTY2NywgMHg4NGNhYTczYiwgMHhiYjY3YWU4NSwgMHhmZTk0ZjgyYiwgMHgzYzZlZjM3MixcbiAgMHg1ZjFkMzZmMSwgMHhhNTRmZjUzYSwgMHhhZGU2ODJkMSwgMHg1MTBlNTI3ZiwgMHgyYjNlNmMxZiwgMHg5YjA1Njg4YyxcbiAgMHhmYjQxYmQ2YiwgMHgxZjgzZDlhYiwgMHgxMzdlMjE3OSwgMHg1YmUwY2QxOVxuXSlcblxuY29uc3QgU0lHTUE4ID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMyxcbiAgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLCAxMSwgOCwgMTIsIDAsIDUsIDIsIDE1LCAxMywgMTAsIDE0LCAzLCA2LCA3LCAxLFxuICA5LCA0LCA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LCA5LCAwLCA1LCA3LCAyLCA0LFxuICAxMCwgMTUsIDE0LCAxLCAxMSwgMTIsIDYsIDgsIDMsIDEzLCAyLCAxMiwgNiwgMTAsIDAsIDExLCA4LCAzLCA0LCAxMywgNywgNSxcbiAgMTUsIDE0LCAxLCA5LCAxMiwgNSwgMSwgMTUsIDE0LCAxMywgNCwgMTAsIDAsIDcsIDYsIDMsIDksIDIsIDgsIDExLCAxMywgMTEsIDcsXG4gIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLCA2LCAxNSwgMTQsIDksIDExLCAzLCAwLCA4LCAxMiwgMixcbiAgMTMsIDcsIDEsIDQsIDEwLCA1LCAxMCwgMiwgOCwgNCwgNywgNiwgMSwgNSwgMTUsIDExLCA5LCAxNCwgMywgMTIsIDEzLCAwLCAwLFxuICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMywgNixcbiAgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzXG5dXG5cbi8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuLy8gTXVsdGlwbHkgdGhlbSBhbGwgYnkgMiB0byBtYWtlIHRoZW0gb2Zmc2V0cyBpbnRvIGEgdWludDMyIGJ1ZmZlcixcbi8vIGJlY2F1c2UgdGhpcyBpcyBKYXZhc2NyaXB0IGFuZCB3ZSBkb24ndCBoYXZlIHVpbnQ2NHNcbmNvbnN0IFNJR01BODIgPSBuZXcgVWludDhBcnJheShcbiAgU0lHTUE4Lm1hcChmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4ICogMlxuICB9KVxuKVxuXG4vLyBDb21wcmVzc2lvbiBmdW5jdGlvbi4gJ2xhc3QnIGZsYWcgaW5kaWNhdGVzIGxhc3QgYmxvY2suXG4vLyBOb3RlIHdlJ3JlIHJlcHJlc2VudGluZyAxNiB1aW50NjRzIGFzIDMyIHVpbnQzMnNcbmNvbnN0IHYgPSBuZXcgVWludDMyQXJyYXkoMzIpXG5jb25zdCBtID0gbmV3IFVpbnQzMkFycmF5KDMyKVxuZnVuY3Rpb24gYmxha2UyYkNvbXByZXNzIChjdHgsIGxhc3QpIHtcbiAgbGV0IGkgPSAwXG5cbiAgLy8gaW5pdCB3b3JrIHZhcmlhYmxlc1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIHZbaV0gPSBjdHguaFtpXVxuICAgIHZbaSArIDE2XSA9IEJMQUtFMkJfSVYzMltpXVxuICB9XG5cbiAgLy8gbG93IDY0IGJpdHMgb2Ygb2Zmc2V0XG4gIHZbMjRdID0gdlsyNF0gXiBjdHgudFxuICB2WzI1XSA9IHZbMjVdIF4gKGN0eC50IC8gMHgxMDAwMDAwMDApXG4gIC8vIGhpZ2ggNjQgYml0cyBub3Qgc3VwcG9ydGVkLCBvZmZzZXQgbWF5IG5vdCBiZSBoaWdoZXIgdGhhbiAyKio1My0xXG5cbiAgLy8gbGFzdCBibG9jayBmbGFnIHNldCA/XG4gIGlmIChsYXN0KSB7XG4gICAgdlsyOF0gPSB+dlsyOF1cbiAgICB2WzI5XSA9IH52WzI5XVxuICB9XG5cbiAgLy8gZ2V0IGxpdHRsZS1lbmRpYW4gd29yZHNcbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHtcbiAgICBtW2ldID0gQjJCX0dFVDMyKGN0eC5iLCA0ICogaSlcbiAgfVxuXG4gIC8vIHR3ZWx2ZSByb3VuZHMgb2YgbWl4aW5nXG4gIC8vIHVuY29tbWVudCB0aGUgRGVidWdQcmludCBjYWxscyB0byBsb2cgdGhlIGNvbXB1dGF0aW9uXG4gIC8vIGFuZCBtYXRjaCB0aGUgUkZDIHNhbXBsZSBkb2N1bWVudGF0aW9uXG4gIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgQjJCX0coMCwgOCwgMTYsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDBdLCBTSUdNQTgyW2kgKiAxNiArIDFdKVxuICAgIEIyQl9HKDIsIDEwLCAxOCwgMjYsIFNJR01BODJbaSAqIDE2ICsgMl0sIFNJR01BODJbaSAqIDE2ICsgM10pXG4gICAgQjJCX0coNCwgMTIsIDIwLCAyOCwgU0lHTUE4MltpICogMTYgKyA0XSwgU0lHTUE4MltpICogMTYgKyA1XSlcbiAgICBCMkJfRyg2LCAxNCwgMjIsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDZdLCBTSUdNQTgyW2kgKiAxNiArIDddKVxuICAgIEIyQl9HKDAsIDEwLCAyMCwgMzAsIFNJR01BODJbaSAqIDE2ICsgOF0sIFNJR01BODJbaSAqIDE2ICsgOV0pXG4gICAgQjJCX0coMiwgMTIsIDIyLCAyNCwgU0lHTUE4MltpICogMTYgKyAxMF0sIFNJR01BODJbaSAqIDE2ICsgMTFdKVxuICAgIEIyQl9HKDQsIDE0LCAxNiwgMjYsIFNJR01BODJbaSAqIDE2ICsgMTJdLCBTSUdNQTgyW2kgKiAxNiArIDEzXSlcbiAgICBCMkJfRyg2LCA4LCAxOCwgMjgsIFNJR01BODJbaSAqIDE2ICsgMTRdLCBTSUdNQTgyW2kgKiAxNiArIDE1XSlcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgY3R4LmhbaV0gPSBjdHguaFtpXSBeIHZbaV0gXiB2W2kgKyAxNl1cbiAgfVxufVxuXG4vLyByZXVzYWJsZSBwYXJhbWV0ZXJCbG9ja1xuY29uc3QgcGFyYW1ldGVyQmxvY2sgPSBuZXcgVWludDhBcnJheShbXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgNDogbGVhZiBsZW5ndGgsIHNlcXVlbnRpYWwgbW9kZVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAgODogbm9kZSBvZmZzZXRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDE2OiBub2RlIGRlcHRoLCBpbm5lciBsZW5ndGgsIHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyMDogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDI0OiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjg6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzMjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAzNjogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0MDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0NDogc2FsdFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA0ODogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNTI6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDU2OiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwIC8vIDYwOiBwZXJzb25hbFxuXSlcblxuLy8gQ3JlYXRlcyBhIEJMQUtFMmIgaGFzaGluZyBjb250ZXh0XG4vLyBSZXF1aXJlcyBhbiBvdXRwdXQgbGVuZ3RoIGJldHdlZW4gMSBhbmQgNjQgYnl0ZXNcbi8vIFRha2VzIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkga2V5XG5mdW5jdGlvbiBibGFrZTJiSW5pdCAob3V0bGVuLCBrZXkpIHtcbiAgaWYgKG91dGxlbiA9PT0gMCB8fCBvdXRsZW4gPiA2NCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBvdXRwdXQgbGVuZ3RoLCBleHBlY3RlZCAwIDwgbGVuZ3RoIDw9IDY0JylcbiAgfVxuICBpZiAoa2V5Lmxlbmd0aCA+IDY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGtleSwgZXhwZWN0ZWQgVWludDhBcnJheSB3aXRoIDAgPCBsZW5ndGggPD0gNjQnKVxuICB9XG5cbiAgLy8gc3RhdGUsICdwYXJhbSBibG9jaydcbiAgY29uc3QgY3R4ID0ge1xuICAgIGI6IG5ldyBVaW50OEFycmF5KDEyOCksXG4gICAgaDogbmV3IFVpbnQzMkFycmF5KDE2KSxcbiAgICB0OiAwLCAvLyBpbnB1dCBjb3VudFxuICAgIGM6IDAsIC8vIHBvaW50ZXIgd2l0aGluIGJ1ZmZlclxuICAgIG91dGxlbjogb3V0bGVuIC8vIG91dHB1dCBsZW5ndGggaW4gYnl0ZXNcbiAgfVxuXG4gIC8vIGluaXRpYWxpemUgcGFyYW1ldGVyQmxvY2sgYmVmb3JlIHVzYWdlXG4gIHBhcmFtZXRlckJsb2NrLmZpbGwoMClcbiAgcGFyYW1ldGVyQmxvY2tbMF0gPSBvdXRsZW5cbiAgcGFyYW1ldGVyQmxvY2tbMV0gPSBrZXkubGVuZ3RoXG4gIHBhcmFtZXRlckJsb2NrWzJdID0gMSAvLyBmYW5vdXRcbiAgcGFyYW1ldGVyQmxvY2tbM10gPSAxIC8vIGRlcHRoXG5cbiAgLy8gaW5pdGlhbGl6ZSBoYXNoIHN0YXRlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gQkxBS0UyQl9JVjMyW2ldIF4gQjJCX0dFVDMyKHBhcmFtZXRlckJsb2NrLCBpICogNClcbiAgfVxuXG5cblxuICBpZihrZXkubGVuZ3RoID4gMCl7XG4gICAgYmxha2UyYlVwZGF0ZShjdHgsIGtleSlcbiAgICAvLyBhdCB0aGUgZW5kXG4gICAgY3R4LmMgPSAxMjhcbiAgfVxuXG4gIHJldHVybiBjdHhcbn1cblxuLy8gVXBkYXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbi8vIFJlcXVpcmVzIGhhc2ggY29udGV4dCBhbmQgVWludDhBcnJheSAoYnl0ZSBhcnJheSlcbmZ1bmN0aW9uIGJsYWtlMmJVcGRhdGUgKGN0eCwgaW5wdXQpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChjdHguYyA9PT0gMTI4KSB7XG4gICAgICAvLyBidWZmZXIgZnVsbCA/XG4gICAgICBjdHgudCArPSBjdHguYyAvLyBhZGQgY291bnRlcnNcbiAgICAgIGJsYWtlMmJDb21wcmVzcyhjdHgsIGZhbHNlKSAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICBjdHguYyA9IDAgLy8gY291bnRlciB0byB6ZXJvXG4gICAgfVxuICAgIGN0eC5iW2N0eC5jKytdID0gaW5wdXRbaV1cbiAgfVxufVxuXG4vLyBDb21wbGV0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nIHRoZSBtZXNzYWdlIGRpZ2VzdFxuZnVuY3Rpb24gYmxha2UyYkZpbmFsIChjdHgpIHtcbiAgY3R4LnQgKz0gY3R4LmMgLy8gbWFyayBsYXN0IGJsb2NrIG9mZnNldFxuXG4gIHdoaWxlIChjdHguYyA8IDEyOCkge1xuICAgIC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgIGN0eC5iW2N0eC5jKytdID0gMFxuICB9XG4gIGJsYWtlMmJDb21wcmVzcyhjdHgsIHRydWUpIC8vIGZpbmFsIGJsb2NrIGZsYWcgPSAxXG5cbiAgLy8gbGl0dGxlIGVuZGlhbiBjb252ZXJ0IGFuZCBzdG9yZVxuICBjb25zdCBvdXQgPSBuZXcgVWludDhBcnJheShjdHgub3V0bGVuKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGN0eC5vdXRsZW47IGkrKykge1xuICAgIG91dFtpXSA9IGN0eC5oW2kgPj4gMl0gPj4gKDggKiAoaSAmIDMpKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiAgcmV0dXJuIHtJbml0OmJsYWtlMmJJbml0LCBVcGRhdGU6Ymxha2UyYlVwZGF0ZSwgRmluYWw6Ymxha2UyYkZpbmFsfVxufSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfY3JlYXRlKGhhc2hsZW4sIGtleSl7XG4gIGtleSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGtleSk7XG4gIGlmKGtleS5sZW5ndGggPiA2NCkge1xuICAgIGtleS5zdWJhcnJheSgwLDY0KTtcbiAgfVxuICByZXR1cm4gYmxha2UyYi5Jbml0KGhhc2hsZW4sIGtleSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX2ZpbmFsKGN0eCwgaGFzaGxlbikge1xuICB2YXIgciA9IGJsYWtlMmIuRmluYWwoY3R4KTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl91cGRhdGVcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbil7XG4gIHZhciBpbnB1dCA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKGJ1Zik7XG4gIGlucHV0ID0gaW5wdXQuc3ViYXJyYXkob2ZzLCBvZnMgKyBsZW4pO1xuICBibGFrZTJiLlVwZGF0ZShjdHgsIGlucHV0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9zdHJpbmcoaGFzaGxlbiwga2V5LCBidWYsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX2JsYWtlMl9jcmVhdGUgKGhhc2hsZW4sIGtleSk7XG4gIGNhbWxfYmxha2UyX3VwZGF0ZShjdHgsIGJ1Ziwgb2ZzLCBsZW4pO1xuICByZXR1cm4gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9jaGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfY2hhbihjaGFuaWQsdG9yZWFkKXtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoNDA5Nik7XG4gIGlmKHRvcmVhZCA8IDApe1xuICAgIHdoaWxlKHRydWUpe1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCxidWZmZXIubGVuZ3RoKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgYnJlYWs7XG4gICAgICBjYW1sX01ENVVwZGF0ZShjdHgsYnVmZmVyLnN1YmFycmF5KDAsIHJlYWQpLCByZWFkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUodG9yZWFkID4gMCkge1xuICAgICAgdmFyIHJlYWQgPSBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCxidWZmZXIsMCwgKHRvcmVhZCA+IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIubGVuZ3RoIDogdG9yZWFkKSk7XG4gICAgICBpZihyZWFkID09IDApIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgICAgdG9yZWFkIC09IHJlYWRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9zdHJpbmcsIGNhbWxfbWQ1X2J5dGVzXG5mdW5jdGlvbiBjYW1sX21kNV9zdHJpbmcocywgb2ZzLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfbWQ1X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpLG9mcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENVRyYW5zZm9ybVxudmFyIGNhbWxfTUQ1VHJhbnNmb3JtID0gKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkICh4LCB5KSB7IHJldHVybiAoeCArIHkpIHwgMDsgfVxuICBmdW5jdGlvbiB4eChxLGEsYix4LHMsdCkge1xuICAgIGEgPSBhZGQoYWRkKGEsIHEpLCBhZGQoeCwgdCkpO1xuICAgIHJldHVybiBhZGQoKGEgPDwgcykgfCAoYSA+Pj4gKDMyIC0gcykpLCBiKTtcbiAgfVxuICBmdW5jdGlvbiBmZihhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBnZyhhLGIsYyxkLHgscyx0KSB7XG4gICAgcmV0dXJuIHh4KChiICYgZCkgfCAoYyAmICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTtcbiAgfVxuICBmdW5jdGlvbiBoaChhLGIsYyxkLHgscyx0KSB7IHJldHVybiB4eChiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpOyB9XG4gIGZ1bmN0aW9uIGlpKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGMgXiAoYiB8ICh+ZCkpLCBhLCBiLCB4LCBzLCB0KTsgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAodywgYnVmZmVyKSB7XG4gICAgdmFyIGEgPSB3WzBdLCBiID0gd1sxXSwgYyA9IHdbMl0sIGQgPSB3WzNdO1xuXG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMF0sIDcsIDB4RDc2QUE0NzgpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDFdLCAxMiwgMHhFOEM3Qjc1Nik7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgMl0sIDE3LCAweDI0MjA3MERCKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyAzXSwgMjIsIDB4QzFCRENFRUUpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA3LCAweEY1N0MwRkFGKTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA1XSwgMTIsIDB4NDc4N0M2MkEpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNywgMHhBODMwNDYxMyk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsgN10sIDIyLCAweEZENDY5NTAxKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyA4XSwgNywgMHg2OTgwOThEOCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOV0sIDEyLCAweDhCNDRGN0FGKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTcsIDB4RkZGRjVCQjEpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTFdLCAyMiwgMHg4OTVDRDdCRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDcsIDB4NkI5MDExMjIpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbMTNdLCAxMiwgMHhGRDk4NzE5Myk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsxNF0sIDE3LCAweEE2Nzk0MzhFKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWzE1XSwgMjIsIDB4NDlCNDA4MjEpO1xuXG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDUsIDB4RjYxRTI1NjIpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDZdLCA5LCAweEMwNDBCMzQwKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTQsIDB4MjY1RTVBNTEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDBdLCAyMCwgMHhFOUI2QzdBQSk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNV0sIDUsIDB4RDYyRjEwNUQpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTBdLCA5LCAweDAyNDQxNDUzKTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTQsIDB4RDhBMUU2ODEpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDRdLCAyMCwgMHhFN0QzRkJDOCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOV0sIDUsIDB4MjFFMUNERTYpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbMTRdLCA5LCAweEMzMzcwN0Q2KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyAzXSwgMTQsIDB4RjRENTBEODcpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbIDhdLCAyMCwgMHg0NTVBMTRFRCk7XG4gICAgYSA9IGdnKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDUsIDB4QTlFM0U5MDUpO1xuICAgIGQgPSBnZyhkLCBhLCBiLCBjLCBidWZmZXJbIDJdLCA5LCAweEZDRUZBM0Y4KTtcbiAgICBjID0gZ2coYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTQsIDB4Njc2RjAyRDkpO1xuICAgIGIgPSBnZyhiLCBjLCBkLCBhLCBidWZmZXJbMTJdLCAyMCwgMHg4RDJBNEM4QSk7XG5cbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNCwgMHhGRkZBMzk0Mik7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgOF0sIDExLCAweDg3NzFGNjgxKTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzExXSwgMTYsIDB4NkQ5RDYxMjIpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTRdLCAyMywgMHhGREU1MzgwQyk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsgMV0sIDQsIDB4QTRCRUVBNDQpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDRdLCAxMSwgMHg0QkRFQ0ZBOSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgN10sIDE2LCAweEY2QkI0QjYwKTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWzEwXSwgMjMsIDB4QkVCRkJDNzApO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbMTNdLCA0LCAweDI4OUI3RUM2KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyAwXSwgMTEsIDB4RUFBMTI3RkEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNiwgMHhENEVGMzA4NSk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNl0sIDIzLCAweDA0ODgxRDA1KTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNCwgMHhEOUQ0RDAzOSk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMl0sIDExLCAweEU2REI5OUU1KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWzE1XSwgMTYsIDB4MUZBMjdDRjgpO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbIDJdLCAyMywgMHhDNEFDNTY2NSk7XG5cbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNiwgMHhGNDI5MjI0NCk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgN10sIDEwLCAweDQzMkFGRjk3KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTUsIDB4QUI5NDIzQTcpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDVdLCAyMSwgMHhGQzkzQTAzOSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsxMl0sIDYsIDB4NjU1QjU5QzMpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbIDNdLCAxMCwgMHg4RjBDQ0M5Mik7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsxMF0sIDE1LCAweEZGRUZGNDdEKTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWyAxXSwgMjEsIDB4ODU4NDVERDEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA2LCAweDZGQTg3RTRGKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzE1XSwgMTAsIDB4RkUyQ0U2RTApO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDZdLCAxNSwgMHhBMzAxNDMxNCk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsxM10sIDIxLCAweDRFMDgxMUExKTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWyA0XSwgNiwgMHhGNzUzN0U4Mik7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMV0sIDEwLCAweEJEM0FGMjM1KTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTUsIDB4MkFEN0QyQkIpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDldLCAyMSwgMHhFQjg2RDM5MSk7XG5cbiAgICB3WzBdID0gYWRkKGEsIHdbMF0pO1xuICAgIHdbMV0gPSBhZGQoYiwgd1sxXSk7XG4gICAgd1syXSA9IGFkZChjLCB3WzJdKTtcbiAgICB3WzNdID0gYWRkKGQsIHdbM10pO1xuICB9fSkoKVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUluaXRcbmZ1bmN0aW9uIGNhbWxfTUQ1SW5pdCgpIHtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig2NCk7XG4gIHZhciBiMzIgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyKTtcbiAgdmFyIGI4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIHtsZW46MCxcbiAgICAgICAgICB3Om5ldyBVaW50MzJBcnJheShbMHg2NzQ1MjMwMSwgMHhFRkNEQUI4OSwgMHg5OEJBRENGRSwgMHgxMDMyNTQ3Nl0pLFxuICAgICAgICAgIGIzMjpiMzIsXG4gICAgICAgICAgYjg6Yjh9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVVcGRhdGUoY3R4LCBpbnB1dCwgaW5wdXRfbGVuKXtcbiAgdmFyIGluX2J1ZiA9IGN0eC5sZW4gJiAweDNmO1xuICB2YXIgaW5wdXRfcG9zID0gMDtcbiAgY3R4LmxlbiArPSBpbnB1dF9sZW47XG4gIGlmKGluX2J1Zil7XG4gICAgdmFyIG1pc3NpbmcgPSA2NCAtIGluX2J1ZjtcbiAgICBpZihpbnB1dF9sZW4gPCBtaXNzaW5nKSB7XG4gICAgICBjdHguYjguc2V0KGlucHV0LnN1YmFycmF5KDAsaW5wdXRfbGVuKSxpbl9idWYpO1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxtaXNzaW5nKSxpbl9idWYpO1xuICAgIGNhbWxfTUQ1VHJhbnNmb3JtKGN0eC53LCBjdHguYjMyKTtcbiAgICBpbnB1dF9sZW4gLT0gbWlzc2luZztcbiAgICBpbnB1dF9wb3MgKz0gbWlzc2luZztcbiAgfVxuICB3aGlsZShpbnB1dF9sZW4gPj0gNjQpe1xuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIDY0KSwgMCk7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSA2NDtcbiAgICBpbnB1dF9wb3MgKz0gNjQ7XG4gIH1cbiAgaWYoaW5wdXRfbGVuKVxuICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoaW5wdXRfcG9zLGlucHV0X3BvcyArIGlucHV0X2xlbiksIDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX01ENUZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX01ENVRyYW5zZm9ybVxuZnVuY3Rpb24gY2FtbF9NRDVGaW5hbChjdHgpe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIGN0eC5iOFtpbl9idWZdID0gMHg4MDtcbiAgaW5fYnVmICsrO1xuICBpZihpbl9idWYgPiA1Nikge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDY0OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCA1NjsgaisrKXtcbiAgICAgIGN0eC5iOFtqXSA9IDA7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvcih2YXIgaiA9IGluX2J1ZjsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH1cbiAgY3R4LmIzMlsxNF0gPSBjdHgubGVuIDw8IDM7XG4gIGN0eC5iMzJbMTVdID0gKGN0eC5sZW4gPj4gMjkpICYgMHgxRkZGRkZGRjtcbiAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICB2YXIgdCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA0OyBqKyspXG4gICAgICB0W2kgKiA0ICsgal0gPSAoY3R4LndbaV0gPj4gKDggKiBqKSkgJiAweEZGO1xuICByZXR1cm4gdDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21kNV9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1SW5pdCwgY2FtbF9NRDVVcGRhdGUsIGNhbWxfTUQ1RmluYWxcbmZ1bmN0aW9uIGNhbWxfbWQ1X2J5dGVzKHMsIG9mcywgbGVuKSB7XG4gIHZhciBjdHggPSBjYW1sX01ENUluaXQoKTtcbiAgdmFyIGEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpO1xuICBjYW1sX01ENVVwZGF0ZShjdHgsYS5zdWJhcnJheShvZnMsIG9mcyArIGxlbiksIGxlbik7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShjYW1sX01ENUZpbmFsKGN0eCkpO1xufVxuIiwiLypcblRvIGRlYWwgd2l0aCBlZmZlY3RzLCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgaXMgaW50dWl0aXZlbHkgY29tcG9zZWQgb2ZcbmEgc3RhY2sgb2YgZmliZXJzLiBFYWNoIGZpYmVyIGhhcyBhIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuKG9uZS1hcmd1bWVudCBKYXZhU2NyaXB0IGZ1bmN0aW9uKSwgYSBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kXG5hIHRyaXBsZSBvZiBoYW5kbGVycywgd2hpY2ggYXJlIGludm9rZWQgd2hlbiB0aGUgZmliZXIgdGVybWluYXRlc1xuKGVpdGhlciB3aXRoIGEgdmFsdWUgb3IgYW4gZXhjZXB0aW9uKSBvciB3aGVuIGFuIGVmZmVjdCBpcyBwZXJmb3JtZWQuXG5UaGUgbG93LWxldmVsIGNvbnRpbnVhdGlvbiBvZiB0aGUgdG9wbW9zdCBmaWJlciAod2hpY2ggaXMgY3VycmVudGx5XG5leGVjdXRpbmcpIGlzIHBhc3NlZCBmcm9tIGZ1bmN0aW9uIHRvIGZ1bmN0aW9uIGFzIGFuIGFkZGl0aW9uYWxcbmFyZ3VtZW50LiBJdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGlzIHN0b3JlZCBpblxuW2NhbWxfZXhuX3N0YWNrXS4gRXhjZXB0aW9uIGhhbmRsZXJzIGFyZSBwdXNoZWQgaW50byB0aGlzIHN0YWNrIHdoZW5cbmVudGVyaW5nIGEgW3RyeSAuLi4gd2l0aCAuLi5dIGFuZCBwb3BwZWQgb24gZXhpdC4gVGhlbiwgaGFuZGxlcnMgYW5kXG50aGUgcmVtYWluaW5nIGZpYmVycyBhcmUgc3RvcmVkIGluIFtjYW1sX2ZpYmVyX3N0YWNrXS4gVG8gaW5zdGFsbCBhblxuZWZmZWN0IGhhbmRsZXIsIHdlIHB1c2ggYSBuZXcgZmliZXIgaW50byB0aGUgZXhlY3V0aW9uIGNvbnRleHQuXG5cbldlIGhhdmUgYmFzaWNhbGx5IHRoZSBmb2xsb3dpbmcgdHlwZSBmb3IgcmVpZmllZCBjb250aW51YXRpb25zICh0eXBlXG5bY29udGludWF0aW9uXSBpbiBtb2R1bGUgW0VmZmVjdF0gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkpOlxuXG4gIHR5cGUgKCdhLCAnYikgY29udGludWF0aW9uID0gKCdhLCAnYikgc3RhY2sgcmVmXG5cbiAgYW5kIChfLCBfKSBzdGFjayA9XG4gICAgICBDb25zIDogKCdiIC0+IHVuaXQpICogICAgICAgICAgICAgKCogbG93LWxldmVsIGNvbnRpbnVhdGlvbiAqKVxuICAgICAgICAgICAgIChleG4gLT4gdW5pdCkgbGlzdCAqICAgICAgICgqIGV4Y2VwdGlvbiBoYW5kbGVycyAqKVxuICAgICAgICAgICAgICgnYiwgJ2MpIGhhbmRsZXIgKlxuICAgICAgICAgICAgICgnYSwgJ2IpIHN0YWNrXG4gICAgICAgICAgICAgLT4gKCdhLCAnYykgc3RhY2tcbiAgICB8IEVtcHR5IDogKCdhLCAnYSkgc3RhY2tcblxuICBhbmQgKCdhLCdiKSBoYW5kbGVyID0gICAoKiBBcyBpbiBtb2R1bGUgRWZmZWN0IGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgRWZmZWN0LnQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG5Db250aW51YXRpb25zIGFyZSBvbmUtc2hvdC4gQSBjb250aW51YXRpb24gW3JlZiBFbXB0eV0gaGFzIGFscmVhZHlcbmJlZW4gcmVzdW1lZC5cblxuQSBjb250aW51YXRpb24gaXMgYmFzaWNhbGx5IGNvbXBvc2VkIG9mIGEgbGlzdCBvZiBmaWJlcnMsIHdoaWNoIGVhY2hcbmhhcyBpdHMgbG93LWxldmVsIGNvbnRpbnVhdGlvbiwgaXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQgYVxudHJpcGxlIG9mIGhhbmRsZXJzIHRvIGRlYWwgd2l0aCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzIG9yIGFuXG5lZmZlY3QgaXMgcGVyZm9ybWVkLiBXaGVuIHJlc3VtaW5nIGEgY29udGludWF0aW9uLCB0aGUgaW5uZXJtb3N0IGZpYmVyXG5pcyByZXN1bWVkIGZpcnN0LlxuXG5UaGUgaGFuZGxlcnMgYXJlIENQUy10cmFuc2Zvcm1lZCBmdW5jdGlvbnM6IHRoZXkgYWN0dWFsbHkgdGFrZSBhblxuYWRkaXRpb25hbCBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbG93LWxldmVsIGNvbnRpbnVhdGlvbi5cbiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGlzIGFuIE9DYW1sIGxpc3Qgb2YgZXhjZXB0aW9uIGhhbmRsZXJzXG52YXIgY2FtbF9leG5fc3RhY2sgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1c2hfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcHVzaF90cmFwKGhhbmRsZXIpIHtcbiAgY2FtbF9leG5fc3RhY2s9WzAsaGFuZGxlcixjYW1sX2V4bl9zdGFja107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF90cmFwKCkge1xuICBpZiAoIWNhbWxfZXhuX3N0YWNrKSByZXR1cm4gZnVuY3Rpb24oeCl7dGhyb3cgeDt9XG4gIHZhciBoID0gY2FtbF9leG5fc3RhY2tbMV07XG4gIGNhbWxfZXhuX3N0YWNrPWNhbWxfZXhuX3N0YWNrWzJdO1xuICByZXR1cm4gaFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG4vLyBUaGlzIGhhcyB0aGUgc2hhcGUge2gsIHI6e2ssIHgsIGV9fSB3aGVyZSBoIGlzIGEgdHJpcGxlIG9mIGhhbmRsZXJzXG4vLyAoc2VlIGVmZmVjdC5qcykgYW5kIGssIHggYW5kIGUgYXJlIHRoZSBzYXZlZCBjb250aW51YXRpb24sXG4vLyBleGNlcHRpb24gc3RhY2sgYW5kIGZpYmVyIHN0YWNrIG9mIHRoZSBwYXJlbnQgZmliZXIuXG52YXIgY2FtbF9maWJlcl9zdGFjaztcblxuLy9Qcm92aWRlczpjYW1sX3Jlc3VtZV9zdGFja1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcmVzdW1lX3N0YWNrKHN0YWNrLCBrKSB7XG4gIGlmICghc3RhY2spIGNhbWxfcmFpc2VfY29uc3RhbnRcbiAgICAgICAgICAgICAgICAgKGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiKSk7XG4gIC8vIFVwZGF0ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCB0aGUgc3RhY2sgb2YgZmliZXJzIGluIFtzdGFja10gaW5cbiAgLy8gb3JkZXIgdG8gcmVzdW1lIHRoZSBjb250aW51YXRpb25cbiAgZG8ge1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6c3RhY2tbM10sIHI6e2s6aywgeDpjYW1sX2V4bl9zdGFjaywgZTpjYW1sX2ZpYmVyX3N0YWNrfX07XG4gICAgayA9IHN0YWNrWzFdO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc3RhY2tbMl07XG4gICAgc3RhY2sgPSBzdGFja1s0XTtcbiAgfSB3aGlsZSAoc3RhY2spXG4gIHJldHVybiBrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF9maWJlclxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX2ZpYmVyKCkge1xuICAvLyBNb3ZlIHRvIHRoZSBwYXJlbnQgZmliZXIsIHJldHVybmluZyB0aGUgcGFyZW50J3MgbG93LWxldmVsIGNvbnRpbnVhdGlvblxuICB2YXIgcmVtID0gY2FtbF9maWJlcl9zdGFjay5yO1xuICBjYW1sX2V4bl9zdGFjayA9IHJlbS54O1xuICBjYW1sX2ZpYmVyX3N0YWNrID0gcmVtLmU7XG4gIHJldHVybiByZW0uaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wZXJmb3JtX2VmZmVjdFxuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BlcmZvcm1fZWZmZWN0KGVmZiwgY29udCwgazApIHtcbiAgLy8gQWxsb2NhdGUgYSBjb250aW51YXRpb24gaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZVxuICBpZiAoIWNvbnQpIGNvbnQgPSBbMjQ1IC8qY29udGludWF0aW9uKi8sIDBdO1xuICAvLyBHZXQgY3VycmVudCBlZmZlY3QgaGFuZGxlclxuICB2YXIgaGFuZGxlciA9IGNhbWxfZmliZXJfc3RhY2suaFszXTtcbiAgLy8gQ29ucyB0aGUgY3VycmVudCBmaWJlciBvbnRvIHRoZSBjb250aW51YXRpb246XG4gIC8vICAgY29udCA6PSBDb25zIChrLCBleG5fc3RhY2ssIGhhbmRsZXJzLCAhY29udClcbiAgY29udFsxXSA9IFswLGswLGNhbWxfZXhuX3N0YWNrLGNhbWxfZmliZXJfc3RhY2suaCxjb250WzFdXTtcbiAgLy8gTW92ZSB0byBwYXJlbnQgZmliZXIgYW5kIGV4ZWN1dGUgdGhlIGVmZmVjdCBoYW5kbGVyIHRoZXJlXG4gIC8vIFRoZSBoYW5kbGVyIGlzIGRlZmluZWQgaW4gU3RkbGliLkVmZmVjdCwgc28gd2Uga25vdyB0aGF0IHRoZSBhcml0eSBtYXRjaGVzXG4gIHZhciBrMSA9IGNhbWxfcG9wX2ZpYmVyKCk7XG4gIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/aGFuZGxlcihlZmYsY29udCxrMSxrMSlcbiAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGhhbmRsZXIsW2VmZixjb250LGsxLGsxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgZnVuY3Rpb24gY2FsbChpLCB4KSB7XG4gICAgdmFyIGY9Y2FtbF9maWJlcl9zdGFjay5oW2ldO1xuICAgIHZhciBhcmdzID0gW3gsIGNhbWxfcG9wX2ZpYmVyKCldO1xuICAgIHJldHVybiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCk/Y2FtbF9jYWxsX2dlbihmLGFyZ3MpXG4gICAgICAgICAgIDpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncyk7XG4gIH1cbiAgZnVuY3Rpb24gaHZhbCh4KSB7XG4gICAgLy8gQ2FsbCBbaHZdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgxLCB4KTtcbiAgfVxuICBmdW5jdGlvbiBoZXhuKGUpIHtcbiAgICAvLyBDYWxsIFtoeF0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDIsIGUpO1xuICB9XG4gIHJldHVybiBbMCwgaHZhbCwgWzAsIGhleG4sIDBdLCBbMCwgaHYsIGh4LCBoZl0sIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KSB7XG4gIHZhciBzdGFjaz1jb250WzFdO1xuICBjb250WzFdPTA7XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Y1xuLy9SZXF1aXJlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjKGNvbnQsIGh2YWwsIGhleG4sIGhlZmYpIHtcbiAgdmFyIHN0YWNrID0gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpO1xuICBzdGFja1szXSA9IFswLCBodmFsLCBoZXhuLCBoZWZmXTtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXG5mdW5jdGlvbiBjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9uZXdcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX25ldyh1bml0KXtcbiAgICByZXR1cm4ge2NvbmRpdGlvbjoxfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fd2FpdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fd2FpdCh0LG11dGV4dCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0KHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWxcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8hSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWQoKXtcbiAgY2FtbF9mYWlsd2l0aChcIkVmZmVjdCBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZFwiKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc1xudmFyIGNhbWxfZG9tYWluX2RscyA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfc2V0KGEpIHtcbiAgY2FtbF9kb21haW5fZGxzID0gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldChvbGQsbikge1xuICBpZihjYW1sX2RvbWFpbl9kbHMgIT09IG9sZCkgcmV0dXJuIDBcbiAgY2FtbF9kb21haW5fZGxzID0gbjtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0IChjYXB0dXJlZCwgaW50byl7XG4gIHZhciB0b19yZXN0b3JlID0gY2FtbF9tbF9jaGFubmVsX2dldChjYXB0dXJlZCk7XG4gIHZhciBuZXdfID0gY2FtbF9tbF9jaGFubmVsX2dldChpbnRvKTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjYXB0dXJlZF0gPSBuZXdfOyAvLyBYWFhcbiAgcmV0dXJuIHRvX3Jlc3RvcmU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVzdG9yZSAoY2FwdHVyZWQsIHRvX3Jlc3RvcmUpe1xuICBjYW1sX21sX2NoYW5uZWxzW2NhcHR1cmVkXSA9IHRvX3Jlc3RvcmU7IC8vIFhYWFxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX2dldChpZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tpZF07IC8vIFhYWFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9pc19iaW5hcnlfbW9kZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5XG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZihjaGFuLm9wZW5lZCkge1xuICAgIGNoYW4ub3BlbmVkID0gZmFsc2U7XG4gICAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZCk7XG4gICAgY2hhbi5mZCA9IC0xO1xuICAgIGNoYW4uYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXQsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG52YXIgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4XG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVnaXN0ZXIoZXZlbnRfbmFtZSwgZXZlbnRfdGFnLCBldmVudF90eXBlKSB7XG4gIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ICs9IDE7XG4gIHJldHVybiBbMCwgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXgsIGV2ZW50X25hbWUsIGV2ZW50X3R5cGUsIGV2ZW50X3RhZ107XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlKGV2ZW50LCBldmVudF9jb250ZW50KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuLy9BbGlhczogY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19wYXVzZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZVxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfYXJlX2FjdGl2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCJcbi8vUHJvdmlkZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjFcbnZhciB6c3RkX2RlY29tcHJlc3MgPSAoZnVuY3Rpb24gKCkge1xuXCJ1c2Ugc3RyaWN0XCI7XG4vLyBhbGlhc2VzIGZvciBzaG9ydGVyIGNvbXByZXNzZWQgY29kZSAobW9zdCBtaW5pZmVycyBkb24ndCBkbyB0aGlzKVxudmFyIGFiID0gQXJyYXlCdWZmZXIsIHU4ID0gVWludDhBcnJheSwgdTE2ID0gVWludDE2QXJyYXksIGkxNiA9IEludDE2QXJyYXksIHUzMiA9IFVpbnQzMkFycmF5LCBpMzIgPSBJbnQzMkFycmF5O1xudmFyIHNsYyA9IGZ1bmN0aW9uICh2LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5zbGljZSlcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5zbGljZS5jYWxsKHYsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgdmFyIG4gPSBuZXcgdTgoZSAtIHMpO1xuICAgIG4uc2V0KHYuc3ViYXJyYXkocywgZSkpO1xuICAgIHJldHVybiBuO1xufTtcbnZhciBmaWxsID0gZnVuY3Rpb24gKHYsIG4sIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmZpbGwpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuZmlsbC5jYWxsKHYsIG4sIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgZm9yICg7IHMgPCBlOyArK3MpXG4gICAgICAgIHZbc10gPSBuO1xuICAgIHJldHVybiB2O1xufTtcbnZhciBjcHcgPSBmdW5jdGlvbiAodiwgdCwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuY29weVdpdGhpbilcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5jb3B5V2l0aGluLmNhbGwodiwgdCwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB3aGlsZSAocyA8IGUpIHtcbiAgICAgICAgdlt0KytdID0gdltzKytdO1xuICAgIH1cbn07XG4vKipcbiAqIENvZGVzIGZvciBlcnJvcnMgZ2VuZXJhdGVkIHdpdGhpbiB0aGlzIGxpYnJhcnlcbiAqL1xuLy8gZXJyb3IgY29kZXNcbnZhciBlYyA9IFtcbiAgICAnaW52YWxpZCB6c3RkIGRhdGEnLFxuICAgICd3aW5kb3cgc2l6ZSB0b28gbGFyZ2UgKD4yMDQ2TUIpJyxcbiAgICAnaW52YWxpZCBibG9jayB0eXBlJyxcbiAgICAnRlNFIGFjY3VyYWN5IHRvbyBoaWdoJyxcbiAgICAnbWF0Y2ggZGlzdGFuY2UgdG9vIGZhciBiYWNrJyxcbiAgICAndW5leHBlY3RlZCBFT0YnXG5dO1xuO1xudmFyIGVyciA9IGZ1bmN0aW9uIChpbmQsIG1zZywgbnQpIHtcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgfHwgZWNbaW5kXSk7XG4gICAgZS5jb2RlID0gaW5kO1xuICAgIGlmICghbnQpXG4gICAgICAgIHRocm93IGU7XG4gICAgcmV0dXJuIGU7XG59O1xudmFyIHJiID0gZnVuY3Rpb24gKGQsIGIsIG4pIHtcbiAgICB2YXIgaSA9IDAsIG8gPSAwO1xuICAgIGZvciAoOyBpIDwgbjsgKytpKVxuICAgICAgICBvIHw9IGRbYisrXSA8PCAoaSA8PCAzKTtcbiAgICByZXR1cm4gbztcbn07XG52YXIgYjQgPSBmdW5jdGlvbiAoZCwgYikgeyByZXR1cm4gKGRbYl0gfCAoZFtiICsgMV0gPDwgOCkgfCAoZFtiICsgMl0gPDwgMTYpIHwgKGRbYiArIDNdIDw8IDI0KSkgPj4+IDA7IH07XG4vLyByZWFkIFpzdGFuZGFyZCBmcmFtZSBoZWFkZXJcbnZhciByemZoID0gZnVuY3Rpb24gKGRhdCwgdykge1xuICAgIHZhciBuMyA9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkgfCAoZGF0WzJdIDw8IDE2KTtcbiAgICBpZiAobjMgPT0gMHgyRkI1MjggJiYgZGF0WzNdID09IDI1Mykge1xuICAgICAgICAvLyBac3RhbmRhcmRcbiAgICAgICAgdmFyIGZsZyA9IGRhdFs0XTtcbiAgICAgICAgLy8gICAgc2luZ2xlIHNlZ21lbnQgICAgICAgY2hlY2tzdW0gICAgICAgICAgICAgZGljdCBmbGFnICAgICBmcmFtZSBjb250ZW50IGZsYWdcbiAgICAgICAgdmFyIHNzID0gKGZsZyA+PiA1KSAmIDEsIGNjID0gKGZsZyA+PiAyKSAmIDEsIGRmID0gZmxnICYgMywgZmNmID0gZmxnID4+IDY7XG4gICAgICAgIGlmIChmbGcgJiA4KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyBieXRlXG4gICAgICAgIHZhciBidCA9IDYgLSBzcztcbiAgICAgICAgLy8gZGljdCBieXRlc1xuICAgICAgICB2YXIgZGIgPSBkZiA9PSAzID8gNCA6IGRmO1xuICAgICAgICAvLyBkaWN0aW9uYXJ5IGlkXG4gICAgICAgIHZhciBkaSA9IHJiKGRhdCwgYnQsIGRiKTtcbiAgICAgICAgYnQgKz0gZGI7XG4gICAgICAgIC8vIGZyYW1lIHNpemUgYnl0ZXNcbiAgICAgICAgdmFyIGZzYiA9IGZjZiA/ICgxIDw8IGZjZikgOiBzcztcbiAgICAgICAgLy8gZnJhbWUgc291cmNlIHNpemVcbiAgICAgICAgdmFyIGZzcyA9IHJiKGRhdCwgYnQsIGZzYikgKyAoKGZjZiA9PSAxKSAmJiAyNTYpO1xuICAgICAgICAvLyB3aW5kb3cgc2l6ZVxuICAgICAgICB2YXIgd3MgPSBmc3M7XG4gICAgICAgIGlmICghc3MpIHtcbiAgICAgICAgICAgIC8vIHdpbmRvdyBkZXNjcmlwdG9yXG4gICAgICAgICAgICB2YXIgd2IgPSAxIDw8ICgxMCArIChkYXRbNV0gPj4gMykpO1xuICAgICAgICAgICAgd3MgPSB3YiArICh3YiA+PiAzKSAqIChkYXRbNV0gJiA3KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod3MgPiAyMTQ1Mzg2NDk2KVxuICAgICAgICAgICAgZXJyKDEpO1xuICAgICAgICB2YXIgYnVmID0gbmV3IHU4KCh3ID09IDEgPyAoZnNzIHx8IHdzKSA6IHcgPyAwIDogd3MpICsgMTIpO1xuICAgICAgICBidWZbMF0gPSAxLCBidWZbNF0gPSA0LCBidWZbOF0gPSA4O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjogYnQgKyBmc2IsXG4gICAgICAgICAgICB5OiAwLFxuICAgICAgICAgICAgbDogMCxcbiAgICAgICAgICAgIGQ6IGRpLFxuICAgICAgICAgICAgdzogKHcgJiYgdyAhPSAxKSA/IHcgOiBidWYuc3ViYXJyYXkoMTIpLFxuICAgICAgICAgICAgZTogd3MsXG4gICAgICAgICAgICBvOiBuZXcgaTMyKGJ1Zi5idWZmZXIsIDAsIDMpLFxuICAgICAgICAgICAgdTogZnNzLFxuICAgICAgICAgICAgYzogY2MsXG4gICAgICAgICAgICBtOiBNYXRoLm1pbigxMzEwNzIsIHdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIGlmICgoKG4zID4+IDQpIHwgKGRhdFszXSA8PCAyMCkpID09IDB4MTg0RDJBNSkge1xuICAgICAgICAvLyBza2lwcGFibGVcbiAgICAgICAgcmV0dXJuIGI0KGRhdCwgNCkgKyA4O1xuICAgIH1cbiAgICBlcnIoMCk7XG59O1xuLy8gbW9zdCBzaWduaWZpY2FudCBiaXQgZm9yIG5vbnplcm9cbnZhciBtc2IgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgdmFyIGJpdHMgPSAwO1xuICAgIGZvciAoOyAoMSA8PCBiaXRzKSA8PSB2YWw7ICsrYml0cylcbiAgICAgICAgO1xuICAgIHJldHVybiBiaXRzIC0gMTtcbn07XG4vLyByZWFkIGZpbml0ZSBzdGF0ZSBlbnRyb3B5XG52YXIgcmZzZSA9IGZ1bmN0aW9uIChkYXQsIGJ0LCBtYWwpIHtcbiAgICAvLyB0YWJsZSBwb3NcbiAgICB2YXIgdHBvcyA9IChidCA8PCAzKSArIDQ7XG4gICAgLy8gYWNjdXJhY3kgbG9nXG4gICAgdmFyIGFsID0gKGRhdFtidF0gJiAxNSkgKyA1O1xuICAgIGlmIChhbCA+IG1hbClcbiAgICAgICAgZXJyKDMpO1xuICAgIC8vIHNpemVcbiAgICB2YXIgc3ogPSAxIDw8IGFsO1xuICAgIC8vIHByb2JhYmlsaXRpZXMgc3ltYm9scyAgcmVwZWF0ICAgaW5kZXggICBoaWdoIHRocmVzaG9sZFxuICAgIHZhciBwcm9icyA9IHN6LCBzeW0gPSAtMSwgcmUgPSAtMSwgaSA9IC0xLCBodCA9IHN6O1xuICAgIC8vIG9wdGltaXphdGlvbjogc2luZ2xlIGFsbG9jYXRpb24gaXMgbXVjaCBmYXN0ZXJcbiAgICB2YXIgYnVmID0gbmV3IGFiKDUxMiArIChzeiA8PCAyKSk7XG4gICAgdmFyIGZyZXEgPSBuZXcgaTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICAvLyBzYW1lIHZpZXcgYXMgZnJlcVxuICAgIHZhciBkc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgMCwgMjU2KTtcbiAgICB2YXIgbnN0YXRlID0gbmV3IHUxNihidWYsIDUxMiwgc3opO1xuICAgIHZhciBiYjEgPSA1MTIgKyAoc3ogPDwgMSk7XG4gICAgdmFyIHN5bXMgPSBuZXcgdTgoYnVmLCBiYjEsIHN6KTtcbiAgICB2YXIgbmJpdHMgPSBuZXcgdTgoYnVmLCBiYjEgKyBzeik7XG4gICAgd2hpbGUgKHN5bSA8IDI1NSAmJiBwcm9icyA+IDApIHtcbiAgICAgICAgdmFyIGJpdHMgPSBtc2IocHJvYnMgKyAxKTtcbiAgICAgICAgdmFyIGNidCA9IHRwb3MgPj4gMztcbiAgICAgICAgLy8gbWFza1xuICAgICAgICB2YXIgbXNrID0gKDEgPDwgKGJpdHMgKyAxKSkgLSAxO1xuICAgICAgICB2YXIgdmFsID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHRwb3MgJiA3KSkgJiBtc2s7XG4gICAgICAgIC8vIG1hc2sgKDEgZmV3ZXIgYml0KVxuICAgICAgICB2YXIgbXNrMWZiID0gKDEgPDwgYml0cykgLSAxO1xuICAgICAgICAvLyBtYXggc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIG1zdiA9IG1zayAtIHByb2JzIC0gMTtcbiAgICAgICAgLy8gc21hbGwgdmFsdWVcbiAgICAgICAgdmFyIHN2YWwgPSB2YWwgJiBtc2sxZmI7XG4gICAgICAgIGlmIChzdmFsIDwgbXN2KVxuICAgICAgICAgICAgdHBvcyArPSBiaXRzLCB2YWwgPSBzdmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cyArIDE7XG4gICAgICAgICAgICBpZiAodmFsID4gbXNrMWZiKVxuICAgICAgICAgICAgICAgIHZhbCAtPSBtc3Y7XG4gICAgICAgIH1cbiAgICAgICAgZnJlcVsrK3N5bV0gPSAtLXZhbDtcbiAgICAgICAgaWYgKHZhbCA9PSAtMSkge1xuICAgICAgICAgICAgcHJvYnMgKz0gdmFsO1xuICAgICAgICAgICAgc3ltc1stLWh0XSA9IHN5bTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9icyAtPSB2YWw7XG4gICAgICAgIGlmICghdmFsKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgLy8gcmVwZWF0IGJ5dGVcbiAgICAgICAgICAgICAgICB2YXIgcmJ0ID0gdHBvcyA+PiAzO1xuICAgICAgICAgICAgICAgIHJlID0gKChkYXRbcmJ0XSB8IChkYXRbcmJ0ICsgMV0gPDwgOCkpID4+ICh0cG9zICYgNykpICYgMztcbiAgICAgICAgICAgICAgICB0cG9zICs9IDI7XG4gICAgICAgICAgICAgICAgc3ltICs9IHJlO1xuICAgICAgICAgICAgfSB3aGlsZSAocmUgPT0gMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN5bSA+IDI1NSB8fCBwcm9icylcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzeW1wb3MgPSAwO1xuICAgIC8vIHN5bSBzdGVwIChjb3ByaW1lIHdpdGggc3ogLSBmb3JtdWxhIGZyb20genN0ZCBzb3VyY2UpXG4gICAgdmFyIHNzdGVwID0gKHN6ID4+IDEpICsgKHN6ID4+IDMpICsgMztcbiAgICAvLyBzeW0gbWFza1xuICAgIHZhciBzbWFzayA9IHN6IC0gMTtcbiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzeW07ICsrcykge1xuICAgICAgICB2YXIgc2YgPSBmcmVxW3NdO1xuICAgICAgICBpZiAoc2YgPCAxKSB7XG4gICAgICAgICAgICBkc3RhdGVbc10gPSAtc2Y7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGlzIGlzIHNwbGl0IGludG8gdHdvIGxvb3BzIGluIHpzdGQgdG8gYXZvaWQgYnJhbmNoaW5nLCBidXQgYXMgSlMgaXMgaGlnaGVyLWxldmVsIHRoYXQgaXMgdW5uZWNlc3NhcnlcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHNmOyArK2kpIHtcbiAgICAgICAgICAgIHN5bXNbc3ltcG9zXSA9IHM7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgc3ltcG9zID0gKHN5bXBvcyArIHNzdGVwKSAmIHNtYXNrO1xuICAgICAgICAgICAgfSB3aGlsZSAoc3ltcG9zID49IGh0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBzcHJlYWRpbmcgc3ltYm9scywgc2hvdWxkIGJlIHplcm8gYWdhaW5cbiAgICBpZiAoc3ltcG9zKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHN6OyArK2kpIHtcbiAgICAgICAgLy8gbmV4dCBzdGF0ZVxuICAgICAgICB2YXIgbnMgPSBkc3RhdGVbc3ltc1tpXV0rKztcbiAgICAgICAgLy8gbnVtIGJpdHNcbiAgICAgICAgdmFyIG5iID0gbmJpdHNbaV0gPSBhbCAtIG1zYihucyk7XG4gICAgICAgIG5zdGF0ZVtpXSA9IChucyA8PCBuYikgLSBzejtcbiAgICB9XG4gICAgcmV0dXJuIFsodHBvcyArIDcpID4+IDMsIHtcbiAgICAgICAgICAgIGI6IGFsLFxuICAgICAgICAgICAgczogc3ltcyxcbiAgICAgICAgICAgIG46IG5iaXRzLFxuICAgICAgICAgICAgdDogbnN0YXRlXG4gICAgICAgIH1dO1xufTtcbi8vIHJlYWQgaHVmZm1hblxudmFyIHJodSA9IGZ1bmN0aW9uIChkYXQsIGJ0KSB7XG4gICAgLy8gIGluZGV4ICB3ZWlnaHQgY291bnRcbiAgICB2YXIgaSA9IDAsIHdjID0gLTE7XG4gICAgLy8gICAgYnVmZmVyICAgICAgICAgICAgIGhlYWRlciBieXRlXG4gICAgdmFyIGJ1ZiA9IG5ldyB1OCgyOTIpLCBoYiA9IGRhdFtidF07XG4gICAgLy8gaHVmZm1hbiB3ZWlnaHRzXG4gICAgdmFyIGh3ID0gYnVmLnN1YmFycmF5KDAsIDI1Nik7XG4gICAgLy8gcmFuayBjb3VudFxuICAgIHZhciByYyA9IGJ1Zi5zdWJhcnJheSgyNTYsIDI2OCk7XG4gICAgLy8gcmFuayBpbmRleFxuICAgIHZhciByaSA9IG5ldyB1MTYoYnVmLmJ1ZmZlciwgMjY4KTtcbiAgICAvLyBOT1RFOiBhdCB0aGlzIHBvaW50IGJ0IGlzIDEgbGVzcyB0aGFuIGV4cGVjdGVkXG4gICAgaWYgKGhiIDwgMTI4KSB7XG4gICAgICAgIC8vIGVuZCBieXRlLCBmc2UgZGVjb2RlIHRhYmxlXG4gICAgICAgIHZhciBfYSA9IHJmc2UoZGF0LCBidCArIDEsIDYpLCBlYnQgPSBfYVswXSwgZmR0ID0gX2FbMV07XG4gICAgICAgIGJ0ICs9IGhiO1xuICAgICAgICB2YXIgZXBvcyA9IGVidCA8PCAzO1xuICAgICAgICAvLyBsYXN0IGJ5dGVcbiAgICAgICAgdmFyIGxiID0gZGF0W2J0XTtcbiAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gIHN0YXRlMSAgIHN0YXRlMiAgIHN0YXRlMSBiaXRzICAgc3RhdGUyIGJpdHNcbiAgICAgICAgdmFyIHN0MSA9IDAsIHN0MiA9IDAsIGJ0cjEgPSBmZHQuYiwgYnRyMiA9IGJ0cjE7XG4gICAgICAgIC8vIGZzZSBwb3NcbiAgICAgICAgLy8gcHJlLWluY3JlbWVudCB0byBhY2NvdW50IGZvciBvcmlnaW5hbCBkZWZpY2l0IG9mIDFcbiAgICAgICAgdmFyIGZwb3MgPSAoKytidCA8PCAzKSAtIDggKyBtc2IobGIpO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjE7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB2YXIgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QxICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIxKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDFdO1xuICAgICAgICAgICAgZnBvcyAtPSBidHIyO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2J0ID0gZnBvcyA+PiAzO1xuICAgICAgICAgICAgc3QyICs9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoZnBvcyAmIDcpKSAmICgoMSA8PCBidHIyKSAtIDEpO1xuICAgICAgICAgICAgaHdbKyt3Y10gPSBmZHQuc1tzdDJdO1xuICAgICAgICAgICAgYnRyMSA9IGZkdC5uW3N0MV07XG4gICAgICAgICAgICBzdDEgPSBmZHQudFtzdDFdO1xuICAgICAgICAgICAgYnRyMiA9IGZkdC5uW3N0Ml07XG4gICAgICAgICAgICBzdDIgPSBmZHQudFtzdDJdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgrK3djID4gMjU1KVxuICAgICAgICAgICAgZXJyKDApO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgd2MgPSBoYiAtIDEyNztcbiAgICAgICAgZm9yICg7IGkgPCB3YzsgaSArPSAyKSB7XG4gICAgICAgICAgICB2YXIgYnl0ZSA9IGRhdFsrK2J0XTtcbiAgICAgICAgICAgIGh3W2ldID0gYnl0ZSA+PiA0O1xuICAgICAgICAgICAgaHdbaSArIDFdID0gYnl0ZSAmIDE1O1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgfVxuICAgIC8vIHdlaWdodCBleHBvbmVudGlhbCBzdW1cbiAgICB2YXIgd2VzID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgLy8gYml0cyBtdXN0IGJlIGF0IG1vc3QgMTEsIHNhbWUgYXMgd2VpZ2h0XG4gICAgICAgIGlmICh3dCA+IDExKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICB3ZXMgKz0gd3QgJiYgKDEgPDwgKHd0IC0gMSkpO1xuICAgIH1cbiAgICAvLyBtYXggYml0c1xuICAgIHZhciBtYiA9IG1zYih3ZXMpICsgMTtcbiAgICAvLyB0YWJsZSBzaXplXG4gICAgdmFyIHRzID0gMSA8PCBtYjtcbiAgICAvLyByZW1haW5pbmcgc3VtXG4gICAgdmFyIHJlbSA9IHRzIC0gd2VzO1xuICAgIC8vIG11c3QgYmUgcG93ZXIgb2YgMlxuICAgIGlmIChyZW0gJiAocmVtIC0gMSkpXG4gICAgICAgIGVycigwKTtcbiAgICBod1t3YysrXSA9IG1zYihyZW0pICsgMTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgd3QgPSBod1tpXTtcbiAgICAgICAgKytyY1tod1tpXSA9IHd0ICYmIChtYiArIDEgLSB3dCldO1xuICAgIH1cbiAgICAvLyBodWYgYnVmXG4gICAgdmFyIGhidWYgPSBuZXcgdTgodHMgPDwgMSk7XG4gICAgLy8gICAgc3ltYm9scyAgICAgICAgICAgICAgICAgICAgICBudW0gYml0c1xuICAgIHZhciBzeW1zID0gaGJ1Zi5zdWJhcnJheSgwLCB0cyksIG5iID0gaGJ1Zi5zdWJhcnJheSh0cyk7XG4gICAgcmlbbWJdID0gMDtcbiAgICBmb3IgKGkgPSBtYjsgaSA+IDA7IC0taSkge1xuICAgICAgICB2YXIgcHYgPSByaVtpXTtcbiAgICAgICAgZmlsbChuYiwgaSwgcHYsIHJpW2kgLSAxXSA9IHB2ICsgcmNbaV0gKiAoMSA8PCAobWIgLSBpKSkpO1xuICAgIH1cbiAgICBpZiAocmlbMF0gIT0gdHMpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2M7ICsraSkge1xuICAgICAgICB2YXIgYml0cyA9IGh3W2ldO1xuICAgICAgICBpZiAoYml0cykge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSByaVtiaXRzXTtcbiAgICAgICAgICAgIGZpbGwoc3ltcywgaSwgY29kZSwgcmlbYml0c10gPSBjb2RlICsgKDEgPDwgKG1iIC0gYml0cykpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW2J0LCB7XG4gICAgICAgICAgICBuOiBuYixcbiAgICAgICAgICAgIGI6IG1iLFxuICAgICAgICAgICAgczogc3ltc1xuICAgICAgICB9XTtcbn07XG4vLyBUYWJsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoaXM6XG4vLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS8xMDFhcnJvd3ovYTk3OTQ1MmQ0MzU1OTkyY2JmOGYyNTdjYmZmYzllZGRcbi8vIGRlZmF1bHQgbGl0ZXJhbCBsZW5ndGggdGFibGVcbnZhciBkbGx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICA4MSwgMTYsIDk5LCAxNDAsIDQ5LCAxOTgsIDI0LCA5OSwgMTIsIDMzLCAxOTYsIDI0LCA5OSwgMTAyLCAxMDIsIDEzNCwgNzAsIDE0NiwgNFxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBtYXRjaCBsZW5ndGggdGFibGVcbnZhciBkbWx0ID0gLyojX19QVVJFX18qLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMywgMjAsIDE5NiwgMjQsIDk5LCAxNDAsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCAzNiwgOVxuXSksIDAsIDYpWzFdO1xuLy8gZGVmYXVsdCBvZmZzZXQgY29kZSB0YWJsZVxudmFyIGRvY3QgPSAvKiNfX1BVUkVfXyAqLyByZnNlKC8qI19fUFVSRV9fKi8gbmV3IHU4KFtcbiAgICAzMiwgMTMyLCAxNiwgNjYsIDEwMiwgNzAsIDY4LCA2OCwgNjgsIDY4LCAzNiwgNzMsIDJcbl0pLCAwLCA1KVsxXTtcbi8vIGJpdHMgdG8gYmFzZWxpbmVcbnZhciBiMmJsID0gZnVuY3Rpb24gKGIsIHMpIHtcbiAgICB2YXIgbGVuID0gYi5sZW5ndGgsIGJsID0gbmV3IGkzMihsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgYmxbaV0gPSBzO1xuICAgICAgICBzICs9IDEgPDwgYltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGJsO1xufTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJpdHNcbnZhciBsbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTM0Njc4MDIwLCAyMDIwNTAwNTcsIDI2OTQyMjA5M1xuXSkpLmJ1ZmZlciwgMCwgMzYpO1xuLy8gbGl0ZXJhbCBsZW5ndGggYmFzZWxpbmVcbnZhciBsbGJsID0gLyojX19QVVJFX18gKi8gYjJibChsbGIsIDApO1xuLy8gbWF0Y2ggbGVuZ3RoIGJpdHNcbnZhciBtbGIgPSAvKiNfX1BVUkVfXyAqLyBuZXcgdTgoKCAvKiNfX1BVUkVfXyAqL25ldyBpMzIoW1xuICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODQzMDA5LCA1MDUyODc3MCwgMTE3NzY5MjIwLCAxODUyMDcwNDgsIDI1MjU3OTA4NCwgMTZcbl0pKS5idWZmZXIsIDAsIDUzKTtcbi8vIG1hdGNoIGxlbmd0aCBiYXNlbGluZVxudmFyIG1sYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKG1sYiwgMyk7XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW1cbnZhciBkaHUgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGxlbiA9IGRhdC5sZW5ndGgsIHNzID0gb3V0Lmxlbmd0aCwgbGIgPSBkYXRbbGVuIC0gMV0sIG1zayA9ICgxIDw8IGh1LmIpIC0gMSwgZWIgPSAtaHUuYjtcbiAgICBpZiAoIWxiKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN0ID0gMCwgYnRyID0gaHUuYiwgcG9zID0gKGxlbiA8PCAzKSAtIDggKyBtc2IobGIpIC0gYnRyLCBpID0gLTE7XG4gICAgZm9yICg7IHBvcyA+IGViICYmIGkgPCBzczspIHtcbiAgICAgICAgdmFyIGNidCA9IHBvcyA+PiAzO1xuICAgICAgICB2YXIgdmFsID0gKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAocG9zICYgNyk7XG4gICAgICAgIHN0ID0gKChzdCA8PCBidHIpIHwgdmFsKSAmIG1zaztcbiAgICAgICAgb3V0WysraV0gPSBodS5zW3N0XTtcbiAgICAgICAgcG9zIC09IChidHIgPSBodS5uW3N0XSk7XG4gICAgfVxuICAgIGlmIChwb3MgIT0gZWIgfHwgaSArIDEgIT0gc3MpXG4gICAgICAgIGVycigwKTtcbn07XG4vLyBkZWNvZGUgaHVmZm1hbiBzdHJlYW0gNHhcbi8vIFRPRE86IHVzZSB3b3JrZXJzIHRvIHBhcmFsbGVsaXplXG52YXIgZGh1NCA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgYnQgPSA2O1xuICAgIHZhciBzcyA9IG91dC5sZW5ndGgsIHN6MSA9IChzcyArIDMpID4+IDIsIHN6MiA9IHN6MSA8PCAxLCBzejMgPSBzejEgKyBzejI7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSksIG91dC5zdWJhcnJheSgwLCBzejEpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzJdIHwgKGRhdFszXSA8PCA4KSksIG91dC5zdWJhcnJheShzejEsIHN6MiksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbNF0gfCAoZGF0WzVdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6Miwgc3ozKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQpLCBvdXQuc3ViYXJyYXkoc3ozKSwgaHUpO1xufTtcbi8vIHJlYWQgWnN0YW5kYXJkIGJsb2NrXG52YXIgcnpiID0gZnVuY3Rpb24gKGRhdCwgc3QsIG91dCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYnQgPSBzdC5iO1xuICAgIC8vICAgIGJ5dGUgMCAgICAgICAgYmxvY2sgdHlwZVxuICAgIHZhciBiMCA9IGRhdFtidF0sIGJ0eXBlID0gKGIwID4+IDEpICYgMztcbiAgICBzdC5sID0gYjAgJiAxO1xuICAgIHZhciBzeiA9IChiMCA+PiAzKSB8IChkYXRbYnQgKyAxXSA8PCA1KSB8IChkYXRbYnQgKyAyXSA8PCAxMyk7XG4gICAgLy8gZW5kIGJ5dGUgZm9yIGJsb2NrXG4gICAgdmFyIGVidCA9IChidCArPSAzKSArIHN6O1xuICAgIGlmIChidHlwZSA9PSAxKSB7XG4gICAgICAgIGlmIChidCA+PSBkYXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdC5iID0gYnQgKyAxO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmaWxsKG91dCwgZGF0W2J0XSwgc3QueSwgc3QueSArPSBzeik7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxsKG5ldyB1OChzeiksIGRhdFtidF0pO1xuICAgIH1cbiAgICBpZiAoZWJ0ID4gZGF0Lmxlbmd0aClcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChidHlwZSA9PSAwKSB7XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIG91dC5zZXQoZGF0LnN1YmFycmF5KGJ0LCBlYnQpLCBzdC55KTtcbiAgICAgICAgICAgIHN0LnkgKz0gc3o7XG4gICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzbGMoZGF0LCBidCwgZWJ0KTtcbiAgICB9XG4gICAgaWYgKGJ0eXBlID09IDIpIHtcbiAgICAgICAgLy8gICAgYnl0ZSAzICAgICAgICBsaXQgYnR5cGUgICAgIHNpemUgZm9ybWF0XG4gICAgICAgIHZhciBiMyA9IGRhdFtidF0sIGxidCA9IGIzICYgMywgc2YgPSAoYjMgPj4gMikgJiAzO1xuICAgICAgICAvLyBsaXQgc3JjIHNpemUgIGxpdCBjbXAgc3ogNCBzdHJlYW1zXG4gICAgICAgIHZhciBsc3MgPSBiMyA+PiA0LCBsY3MgPSAwLCBzNCA9IDA7XG4gICAgICAgIGlmIChsYnQgPCAyKSB7XG4gICAgICAgICAgICBpZiAoc2YgJiAxKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChzZiAmIDIpICYmIChkYXRbKytidF0gPDwgMTIpKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgPSBiMyA+PiAzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczQgPSBzZjtcbiAgICAgICAgICAgIGlmIChzZiA8IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9ICgoZGF0WysrYnRdICYgNjMpIDw8IDQpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMik7XG4gICAgICAgICAgICBlbHNlIGlmIChzZiA9PSAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiAzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDIpIHwgKGRhdFsrK2J0XSA8PCA2KTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgNjMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpIHwgKGRhdFsrK2J0XSA8PCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICAgICAgLy8gYWRkIGxpdGVyYWxzIHRvIGVuZCAtIGNhbiBuZXZlciBvdmVybGFwIHdpdGggYmFja3JlZmVyZW5jZXMgYmVjYXVzZSB1bnVzZWQgbGl0ZXJhbHMgYWx3YXlzIGFwcGVuZGVkXG4gICAgICAgIHZhciBidWYgPSBvdXQgPyBvdXQuc3ViYXJyYXkoc3QueSwgc3QueSArIHN0Lm0pIDogbmV3IHU4KHN0Lm0pO1xuICAgICAgICAvLyBzdGFydGluZyBwb2ludCBmb3IgbGl0ZXJhbHNcbiAgICAgICAgdmFyIHNwbCA9IGJ1Zi5sZW5ndGggLSBsc3M7XG4gICAgICAgIGlmIChsYnQgPT0gMClcbiAgICAgICAgICAgIGJ1Zi5zZXQoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsc3MpLCBzcGwpO1xuICAgICAgICBlbHNlIGlmIChsYnQgPT0gMSlcbiAgICAgICAgICAgIGZpbGwoYnVmLCBkYXRbYnQrK10sIHNwbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaHVmZm1hbiB0YWJsZVxuICAgICAgICAgICAgdmFyIGh1ID0gc3QuaDtcbiAgICAgICAgICAgIGlmIChsYnQgPT0gMikge1xuICAgICAgICAgICAgICAgIHZhciBodWQgPSByaHUoZGF0LCBidCk7XG4gICAgICAgICAgICAgICAgLy8gc3VidHJhY3QgZGVzY3JpcHRpb24gbGVuZ3RoXG4gICAgICAgICAgICAgICAgbGNzICs9IGJ0IC0gKGJ0ID0gaHVkWzBdKTtcbiAgICAgICAgICAgICAgICBzdC5oID0gaHUgPSBodWRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghaHUpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgKHM0ID8gZGh1NCA6IGRodSkoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBsY3MpLCBidWYuc3ViYXJyYXkoc3BsKSwgaHUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG51bSBzZXF1ZW5jZXNcbiAgICAgICAgdmFyIG5zID0gZGF0W2J0KytdO1xuICAgICAgICBpZiAobnMpIHtcbiAgICAgICAgICAgIGlmIChucyA9PSAyNTUpXG4gICAgICAgICAgICAgICAgbnMgPSAoZGF0W2J0KytdIHwgKGRhdFtidCsrXSA8PCA4KSkgKyAweDdGMDA7XG4gICAgICAgICAgICBlbHNlIGlmIChucyA+IDEyNylcbiAgICAgICAgICAgICAgICBucyA9ICgobnMgLSAxMjgpIDw8IDgpIHwgZGF0W2J0KytdO1xuICAgICAgICAgICAgLy8gc3ltYm9sIGNvbXByZXNzaW9uIG1vZGVzXG4gICAgICAgICAgICB2YXIgc2NtID0gZGF0W2J0KytdO1xuICAgICAgICAgICAgaWYgKHNjbSAmIDMpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIGR0cyA9IFtkbWx0LCBkb2N0LCBkbGx0XTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpID4gLTE7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBtZCA9IChzY20gPj4gKChpIDw8IDEpICsgMikpICYgMztcbiAgICAgICAgICAgICAgICBpZiAobWQgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBybGUgYnVmXG4gICAgICAgICAgICAgICAgICAgIHZhciByYnVmID0gbmV3IHU4KFswLCAwLCBkYXRbYnQrK11dKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgczogcmJ1Zi5zdWJhcnJheSgyLCAzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG46IHJidWYuc3ViYXJyYXkoMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0OiBuZXcgdTE2KHJidWYuYnVmZmVyLCAwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGI6IDBcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAvLyBhY2N1cmFjeSBsb2cgOCBmb3Igb2Zmc2V0cywgOSBmb3Igb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgIF9hID0gcmZzZShkYXQsIGJ0LCA5IC0gKGkgJiAxKSksIGJ0ID0gX2FbMF0sIGR0c1tpXSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3QudClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgICAgICAgICAgZHRzW2ldID0gc3QudFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2IgPSBzdC50ID0gZHRzLCBtbHQgPSBfYlswXSwgb2N0ID0gX2JbMV0sIGxsdCA9IF9iWzJdO1xuICAgICAgICAgICAgdmFyIGxiID0gZGF0W2VidCAtIDFdO1xuICAgICAgICAgICAgaWYgKCFsYilcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgc3BvcyA9IChlYnQgPDwgMykgLSA4ICsgbXNiKGxiKSAtIGxsdC5iLCBjYnQgPSBzcG9zID4+IDMsIG91YnQgPSAwO1xuICAgICAgICAgICAgdmFyIGxzdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9jdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG9zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvY3QuYikgLSAxKTtcbiAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sdC5iKSA+PiAzO1xuICAgICAgICAgICAgdmFyIG1zdCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbHQuYikgLSAxKTtcbiAgICAgICAgICAgIGZvciAoKytuczsgLS1uczspIHtcbiAgICAgICAgICAgICAgICB2YXIgbGxjID0gbGx0LnNbbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbGJ0ciA9IGxsdC5uW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIG1sYyA9IG1sdC5zW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG1idHIgPSBtbHQublttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvZmMgPSBvY3Quc1tvc3RdO1xuICAgICAgICAgICAgICAgIHZhciBvYnRyID0gb2N0Lm5bb3N0XTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvZmMpID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG9mcCA9IDEgPDwgb2ZjO1xuICAgICAgICAgICAgICAgIHZhciBvZmYgPSBvZnAgKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSB8IChkYXRbY2J0ICsgM10gPDwgMjQpKSA+Pj4gKHNwb3MgJiA3KSkgJiAob2ZwIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1sYlttbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBtbCA9IG1sYmxbbWxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtbGJbbWxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGxiW2xsY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIGxsID0gbGxibFtsbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsYltsbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIGxzdCA9IGxsdC50W2xzdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxidHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG1idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbXN0ID0gbWx0LnRbbXN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2J0cikgPj4gMztcbiAgICAgICAgICAgICAgICBvc3QgPSBvY3QudFtvc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBvYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBpZiAob2ZmID4gMykge1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmYgLT0gMztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBvZmYgLSAobGwgIT0gMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IGlkeCA9PSAzID8gc3Qub1swXSAtIDEgOiBzdC5vW2lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzJdID0gc3Qub1sxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxsOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBsbCwgc3BsICs9IGxsO1xuICAgICAgICAgICAgICAgIHZhciBzdGluID0gb3VidCAtIG9mZjtcbiAgICAgICAgICAgICAgICBpZiAoc3RpbiA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IC1zdGluO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYnMgPSBzdC5lICsgc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1sKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gbWw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBzdC53W2JzICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb3VidCArPSBsZW4sIG1sIC09IGxlbiwgc3RpbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3N0aW4gKyBpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3VidCArPSBtbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdWJ0ICE9IHNwbCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzcGwgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0KytdID0gYnVmW3NwbCsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgb3VidCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZiAob3V0KVxuICAgICAgICAgICAgICAgIHN0LnkgKz0gb3VidDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCAwLCBvdWJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICBzdC55ICs9IGxzcztcbiAgICAgICAgICAgICAgICBpZiAoc3BsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbHNzOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltzcGwgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNwbClcbiAgICAgICAgICAgICAgICBidWYgPSBzbGMoYnVmLCBzcGwpO1xuICAgICAgICB9XG4gICAgICAgIHN0LmIgPSBlYnQ7XG4gICAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGVycigyKTtcbn07XG4vLyBjb25jYXRcbnZhciBjY3QgPSBmdW5jdGlvbiAoYnVmcywgb2wpIHtcbiAgICBpZiAoYnVmcy5sZW5ndGggPT0gMSlcbiAgICAgICAgcmV0dXJuIGJ1ZnNbMF07XG4gICAgdmFyIGJ1ZiA9IG5ldyB1OChvbCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnVmcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgY2hrID0gYnVmc1tpXTtcbiAgICAgICAgYnVmLnNldChjaGssIGIpO1xuICAgICAgICBiICs9IGNoay5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG59O1xuLyoqXG4gKiBEZWNvbXByZXNzZXMgWnN0YW5kYXJkIGRhdGFcbiAqIEBwYXJhbSBkYXQgVGhlIGlucHV0IGRhdGFcbiAqIEBwYXJhbSBidWYgVGhlIG91dHB1dCBidWZmZXIuIElmIHVuc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZVxuICogICAgICAgICAgICBleGFjdGx5IGVub3VnaCBtZW1vcnkgdG8gZml0IHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gSWYgeW91clxuICogICAgICAgICAgICBkYXRhIGhhcyBtdWx0aXBsZSBmcmFtZXMgYW5kIHlvdSBrbm93IHRoZSBvdXRwdXQgc2l6ZSwgc3BlY2lmeWluZ1xuICogICAgICAgICAgICBpdCB3aWxsIHlpZWxkIGJldHRlciBwZXJmb3JtYW5jZS5cbiAqIEByZXR1cm5zIFRoZSBkZWNvbXByZXNzZWQgZGF0YVxuICovXG5yZXR1cm4gZnVuY3Rpb24gZGVjb21wcmVzcyhkYXQsIGJ1Zikge1xuICAgIHZhciBidCA9IDAsIGJ1ZnMgPSBbXSwgbmIgPSArIWJ1Ziwgb2wgPSAwO1xuICAgIGZvciAoOyBkYXQubGVuZ3RoOykge1xuICAgICAgICB2YXIgc3QgPSByemZoKGRhdCwgbmIgfHwgYnVmKTtcbiAgICAgICAgaWYgKHR5cGVvZiBzdCA9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG5iKSB7XG4gICAgICAgICAgICAgICAgYnVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc3Qudy5sZW5ndGggPT0gc3QudSkge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmID0gc3Qudyk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IHN0LnU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgc3QuZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKDsgIXN0Lmw7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGJsayA9IHJ6YihkYXQsIHN0LCBidWYpO1xuICAgICAgICAgICAgICAgIGlmICghYmxrKVxuICAgICAgICAgICAgICAgICAgICBlcnIoNSk7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgc3QuZSA9IHN0Lnk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChibGspO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBibGsubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBjcHcoc3QudywgMCwgYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHN0Lncuc2V0KGJsaywgc3Qudy5sZW5ndGggLSBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidCA9IHN0LmIgKyAoc3QuYyAqIDQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ0ID0gc3Q7XG4gICAgICAgIGRhdCA9IGRhdC5zdWJhcnJheShidCk7XG4gICAgfVxuICAgIHJldHVybiBjY3QoYnVmcywgb2wpO1xufVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4wXG4vL1ZlcnNpb246IDwgNS4xLjFcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMS4xXG4vL1ZlcnNpb246IDwgNS4yLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjJcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcblxuLy9Qcm92aWRlczogY2FtbF96c3RkX2luaXRpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMS4xXG5mdW5jdGlvbiBjYW1sX3pzdGRfaW5pdGlhbGl6ZSh1bml0KSB7XG4gIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IHpzdGRfZGVjb21wcmVzcztcbiAgcmV0dXJuIDFcbn1cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbi8vVmVyc2lvbjogPj0gNC4xMlxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuLy9SZXF1aXJlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIHJldHVybiBjYW1sX2djX3F1aWNrX3N0YXQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19zZXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2dldFxuZnVuY3Rpb24gY2FtbF9nY19nZXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3NldFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3RlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3RlciAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcbnZhciBhbGxfZmluYWxpemVycyA9IG5ldyBnbG9iYWxUaGlzLlNldCgpXG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlIChjYiwgYSkge1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICB2YXIgeCA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICh4KXthbGxfZmluYWxpemVycy5kZWxldGUoeCk7IGNiKDApOyByZXR1cm47fSk7XG4gICAgeC5yZWdpc3RlcihhLHgpO1xuICAgIGFsbF9maW5hbGl6ZXJzLmFkZCh4KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWxlYXNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlbGVhc2UgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdGFydChyYXRlLHN0YWNrX3NpemUsdHJhY2tlcil7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc3RvcFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0b3AodW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX2Rpc2NhcmRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9kaXNjYXJkKHQpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19yZXN1bWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V2ZW50bG9nX3BhdXNlXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3BhdXNlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50XG5mdW5jdGlvbiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yX3NsaWNlXG5mdW5jdGlvbiBjYW1sX2djX21ham9yX3NsaWNlKHdvcmspIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY2FtbF9nY19taW5vcl93b3Jkcyh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21pbm9yX2ZyZWVcbmZ1bmN0aW9uIGNhbWxfZ2V0X21pbm9yX2ZyZWUodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9idWNrZXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2J1Y2tldChuKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2NyZWRpdFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfY3JlZGl0KG4pIHsgcmV0dXJuIDA7IH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlXG52YXIgY2FtbF9ncl9zdGF0ZTtcblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9nZXQoKSB7XG4gIGlmKGNhbWxfZ3Jfc3RhdGUpIHtcbiAgICByZXR1cm4gY2FtbF9ncl9zdGF0ZTtcbiAgfVxuICB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsY2FtbF9uYW1lZF92YWx1ZShcIkdyYXBoaWNzLkdyYXBoaWNfZmFpbHVyZVwiKSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIk5vdCBpbml0aWFsaXplZFwiKV0pO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGUsY2FtbF9ncl9zdGF0ZV9pbml0XG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX3NldChjdHgpIHtcbiAgY2FtbF9ncl9zdGF0ZT1jdHg7XG4gIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9ncmFwaChpbmZvKXtcbiAgdmFyIGluZm8gPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhpbmZvKTtcbiAgZnVuY3Rpb24gZ2V0KG5hbWUpe1xuICAgIHZhciByZXMgPSBpbmZvLm1hdGNoKFwiKF58LCkgKlwiK25hbWUrXCIgKj0gKihbYS16QS1aMC05X10rKSAqKCx8JClcIik7XG4gICAgaWYocmVzKSByZXR1cm4gcmVzWzJdO1xuICB9XG4gIHZhciBzcGVjcyA9IFtdO1xuICBpZighKGluZm89PVwiXCIpKSBzcGVjcy5wdXNoKGluZm8pO1xuICB2YXIgdGFyZ2V0ID0gZ2V0KFwidGFyZ2V0XCIpO1xuICBpZighdGFyZ2V0KSB0YXJnZXQ9XCJcIjtcbiAgdmFyIHN0YXR1cyA9IGdldChcInN0YXR1c1wiKTtcbiAgaWYoIXN0YXR1cykgc3BlY3MucHVzaChcInN0YXR1cz0xXCIpXG5cbiAgdmFyIHcgPSBnZXQoXCJ3aWR0aFwiKTtcbiAgdyA9IHc/cGFyc2VJbnQodyk6MjAwO1xuICBzcGVjcy5wdXNoKFwid2lkdGg9XCIrdyk7XG5cbiAgdmFyIGggPSBnZXQoXCJoZWlnaHRcIik7XG4gIGggPSBoP3BhcnNlSW50KGgpOjIwMDtcbiAgc3BlY3MucHVzaChcImhlaWdodD1cIitoKTtcblxuICB2YXIgd2luID0gZ2xvYmFsVGhpcy5vcGVuKFwiYWJvdXQ6YmxhbmtcIix0YXJnZXQsc3BlY3Muam9pbihcIixcIikpO1xuICBpZighd2luKSB7Y2FtbF9mYWlsd2l0aChcIkdyYXBoaWNzLm9wZW5fZ3JhcGg6IGNhbm5vdCBvcGVuIHRoZSB3aW5kb3dcIil9XG4gIHZhciBkb2MgPSB3aW4uZG9jdW1lbnQ7XG4gIHZhciBjYW52YXMgPSBkb2MuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gdztcbiAgY2FudmFzLmhlaWdodCA9IGg7XG4gIHZhciBjdHggPSBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKTtcbiAgY3R4LnNldF90aXRsZSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICAgIGRvYy50aXRsZSA9IHRpdGxlO1xuICB9O1xuICBjYW1sX2dyX3N0YXRlX3NldChjdHgpO1xuICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICBib2R5LnN0eWxlLm1hcmdpbiA9IFwiMHB4XCI7XG4gIGJvZHkuYXBwZW5kQ2hpbGQoY2FudmFzKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfaW5pdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfY29sb3IsY2FtbF9ncl9tb3ZldG8sY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoLGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSxjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfaW5pdCgpe1xuICBjYW1sX2dyX21vdmV0byhjYW1sX2dyX3N0YXRlLngsY2FtbF9ncl9zdGF0ZS55KTtcbiAgY2FtbF9ncl9yZXNpemVfd2luZG93KGNhbWxfZ3Jfc3RhdGUud2lkdGgsY2FtbF9ncl9zdGF0ZS5oZWlnaHQpO1xuICBjYW1sX2dyX3NldF9saW5lX3dpZHRoKGNhbWxfZ3Jfc3RhdGUubGluZV93aWR0aCk7XG4gIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShjYW1sX2dyX3N0YXRlLnRleHRfc2l6ZSk7XG4gIGNhbWxfZ3Jfc2V0X2ZvbnQoY2FtbF9ncl9zdGF0ZS5mb250KTtcbiAgY2FtbF9ncl9zZXRfY29sb3IoY2FtbF9ncl9zdGF0ZS5jb2xvcik7XG4gIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShjYW1sX2dyX3N0YXRlLnRpdGxlKTtcbiAgLy9jYW1sX2dyX3Jlc2l6ZV93aW5kb3cgbWlnaHQgcmVzZXQgc29tZSBjYW52YXMnIHByb3BlcnRpZXNcbiAgY2FtbF9ncl9zdGF0ZS5jb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCl7XG4gIHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgcmV0dXJuIHtcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIGNhbnZhcyA6IGNhbnZhcyxcbiAgICB4IDogMCxcbiAgICB5IDogMCxcbiAgICB3aWR0aCA6IHcsXG4gICAgaGVpZ2h0IDogaCxcbiAgICBsaW5lX3dpZHRoIDogMSxcbiAgICBmb250IDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcImZpeGVkXCIpLFxuICAgIHRleHRfc2l6ZSA6IDI2LFxuICAgIGNvbG9yIDogMHgwMDAwMDAsXG4gICAgdGl0bGUgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpXG4gIH07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZG9jX29mX3N0YXRlXG5mdW5jdGlvbiBjYW1sX2dyX2RvY19vZl9zdGF0ZShzdGF0ZSkge1xuICBpZihzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudClcbiAgICByZXR1cm4gc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2VfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSAwO1xuICBzLmNhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZShuYW1lKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRpdGxlID0gbmFtZTtcbiAgdmFyIGpzbmFtZSA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZihzLnNldF90aXRsZSkgcy5zZXRfdGl0bGUoanNuYW1lKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyh3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KClcbiAgcy53aWR0aCA9IHc7XG4gIHMuaGVpZ2h0ID0gaDtcbiAgcy5jYW52YXMud2lkdGggPSB3O1xuICBzLmNhbnZhcy5oZWlnaHQgPSBoO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbGVhcl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xlYXJfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gIHMuY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAvLyAgcy5jb250ZXh0LnN0cm9rZVJlY3QgKDAuLCAwLiwgcy53aWR0aCwgcy5oZWlnaHQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLndpZHRoO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaXplX3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NpemVfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmhlaWdodDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2NvbG9yKGNvbG9yKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBmdW5jdGlvbiBjb252ZXJ0KG51bWJlcikge1xuICAgIHZhciBzdHIgPSAnJyArIG51bWJlci50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHN0ci5sZW5ndGggPCAyKSBzdHIgPSAnMCcgKyBzdHI7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICB2YXJcbiAgciA9IChjb2xvciA+PiAxNikgJiAweGZmLFxuICBnID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsXG4gIGIgPSAoY29sb3IgPj4gMCkgICYgMHhmZjtcbiAgcy5jb2xvcj1jb2xvcjtcbiAgdmFyIGNfc3RyID0gJyMnICsgY29udmVydChyKSArIGNvbnZlcnQoZykgKyBjb252ZXJ0KGIpO1xuICBzLmNvbnRleHQuZmlsbFN0eWxlID0gICBjX3N0cjtcbiAgcy5jb250ZXh0LnN0cm9rZVN0eWxlID0gY19zdHI7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9wbG90XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wbG90KHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICB2YXIgY29sb3IgPSBzLmNvbG9yO1xuICBkWzBdID0gKGNvbG9yID4+IDE2KSAmIDB4ZmY7IC8vclxuICBkWzFdID0gKGNvbG9yID4+IDgpICAmIDB4ZmYsIC8vZ1xuICBkWzJdID0gKGNvbG9yID4+IDApICAmIDB4ZmY7IC8vYlxuICBkWzNdID0gMHhGRjsgLy9hXG4gIHMueD14O1xuICBzLnk9eTtcbiAgcy5jb250ZXh0LnB1dEltYWdlRGF0YShpbSx4LHMuaGVpZ2h0IC0geSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3BvaW50X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9wb2ludF9jb2xvcih4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSB5LDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgcmV0dXJuIChkWzBdIDw8IDE2KSArIChkWzFdIDw8IDgpICsgZFsyXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbW92ZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tb3ZldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueFxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3lcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeSgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbGluZXRvXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9saW5ldG8oeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8ocy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy5jb250ZXh0LmxpbmVUbyh4LHMuaGVpZ2h0IC0geSk7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LnN0cm9rZVJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfYXJjX2F1eChjdHgsY3gsY3kscnkscngsYTEsYTIpe1xuICB3aGlsZShhMT5hMikgYTIrPTM2MDtcbiAgYTEgLz0gMTgwO1xuICBhMiAvPSAxODA7XG4gIHZhciByb3QgPSAwLHhQb3MseVBvcyx4UG9zX3ByZXYseVBvc19wcmV2O1xuICB2YXIgc3BhY2UgPSAyO1xuICB2YXIgbnVtID0gKCgoYTIgLSBhMSkgKiBNYXRoLlBJICogKChyeCtyeSkvMikpIC8gc3BhY2UpIHwgMDtcbiAgdmFyIGRlbHRhID0gKGEyIC0gYTEpICogTWF0aC5QSSAvIG51bTtcbiAgdmFyIGkgPSBhMSAqIE1hdGguUEk7XG4gIGZvciAodmFyIGo9MDtqPD1udW07aisrKXtcbiAgICB4UG9zID0gY3ggLSAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHhQb3MgPSB4UG9zLnRvRml4ZWQoMik7XG4gICAgeVBvcyA9IGN5ICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnggKiBNYXRoLnNpbihpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB5UG9zID0geVBvcy50b0ZpeGVkKDIpO1xuICAgIGlmIChqPT0wKSB7XG4gICAgICBjdHgubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgIH0gZWxzZSBpZiAoeFBvc19wcmV2IT14UG9zIHx8IHlQb3NfcHJldiE9eVBvcyl7XG4gICAgICBjdHgubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgIH1cbiAgICB4UG9zX3ByZXY9eFBvcztcbiAgICB5UG9zX3ByZXY9eVBvcztcbiAgICBpLT0gZGVsdGE7Ly9jY3dcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgodyl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5saW5lX3dpZHRoID0gdztcbiAgcy5jb250ZXh0LmxpbmVXaWR0aCA9IHdcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9yZWN0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3JlY3QoeCx5LHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmZpbGxSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9wb2x5XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX3BvbHkoYXIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgZm9yKHZhciBpID0gMjsgaSA8IGFyLmxlbmd0aDsgaSsrKVxuICAgIHMuY29udGV4dC5saW5lVG8oYXJbaV1bMV0scy5oZWlnaHQgLSBhcltpXVsyXSk7XG4gIHMuY29udGV4dC5saW5lVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfYXJjXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldCwgY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfYXJjKHgseSxyeCxyeSxhMSxhMil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBjYW1sX2dyX2FyY19hdXgocy5jb250ZXh0LHgscy5oZWlnaHQgLSB5LHJ4LHJ5LGExLGEyKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyKHN0cil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIG0gPSBzLmNvbnRleHQubWVhc3VyZVRleHQoc3RyKTtcbiAgdmFyIGR4ID0gbS53aWR0aDtcbiAgcy5jb250ZXh0LmZpbGxUZXh0KHN0cixzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLnggKz0gZHggfCAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19jaGFyKGMpe1xuICBjYW1sX2dyX2RyYXdfc3RyKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHJpbmcoc3RyKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzdHIpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfZm9udChmKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmZvbnQgPSBmO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfdGV4dF9zaXplKHNpemUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGV4dF9zaXplID0gc2l6ZTtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl90ZXh0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl90ZXh0X3NpemUodHh0KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgdyA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh0eHQpKS53aWR0aDtcbiAgcmV0dXJuIFswLHcscy50ZXh0X3NpemVdO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfbWFrZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbWFrZV9pbWFnZShhcnIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBoID0gYXJyLmxlbmd0aCAtIDEgO1xuICB2YXIgdyA9IGFyclsxXS5sZW5ndGggLSAxO1xuICB2YXIgaW0gPSBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHcsaCk7XG4gIGZvcih2YXIgaT0wO2k8aDtpKyspe1xuICAgIGZvcih2YXIgaj0wO2o8dztqKyspe1xuICAgICAgdmFyIGMgPSBhcnJbaSsxXVtqKzFdO1xuICAgICAgdmFyIG8gPSBpKih3KjQpICsgKGogKiA0KTtcbiAgICAgIGlmKGMgPT0gLTEpIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW0uZGF0YVtvICsgMF0gPSBjID4+IDE2ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSBjID4+ICA4ICYgMHhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSBjID4+ICAwICYgMFhmZjtcbiAgICAgICAgaW0uZGF0YVtvICsgM10gPSAweGZmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gaW1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHVtcF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHVtcF9pbWFnZShpbSl7XG4gIHZhciBkYXRhID0gWzBdXG4gIGZvcih2YXIgaT0wOyBpPGltLmhlaWdodDtpKyspe1xuICAgIGRhdGFbaSsxXSA9IFswXVxuICAgIGZvcih2YXIgaj0wOyBqPGltLndpZHRoO2orKyl7XG4gICAgICB2YXIgbyA9IGkqKGltLndpZHRoKjQpICsgKGogKiA0KSxcbiAgICAgICAgICByID0gaW0uZGF0YVtvKzBdLFxuICAgICAgICAgIGcgPSBpbS5kYXRhW28rMV0sXG4gICAgICAgICAgYiA9IGltLmRhdGFbbysyXTtcbiAgICAgIGRhdGFbaSsxXVtqKzFdID0gKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiXG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBpZighaW0uaW1hZ2UpIHtcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSBzLndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgICBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpLnB1dEltYWdlRGF0YShpbSwwLDApO1xuICAgIHZhciBpbWFnZSA9IG5ldyBnbG9iYWxUaGlzLkltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gICAgICBpbS5pbWFnZSA9IGltYWdlO1xuICAgIH1cbiAgICBpbWFnZS5zcmMgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpO1xuICB9IGVsc2Uge1xuICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW0uaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9jcmVhdGVfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NyZWF0ZV9pbWFnZSh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHgseSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2JsaXRfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2JsaXRfaW1hZ2UoaW0seCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW0yID0gcy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSxpbS53aWR0aCxpbS5oZWlnaHQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGltMi5kYXRhLmxlbmd0aDsgaSs9NCl7XG4gICAgaW0uZGF0YVtpXSA9IGltMi5kYXRhW2ldO1xuICAgIGltLmRhdGFbaSsxXSA9IGltMi5kYXRhW2krMV07XG4gICAgaW0uZGF0YVtpKzJdID0gaW0yLmRhdGFbaSsyXTtcbiAgICBpbS5kYXRhW2krM10gPSBpbTIuZGF0YVtpKzNdO1xuICB9XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19oYW5kbGVyXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXIoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX2dyX3NpZ2lvX3NpZ25hbCgpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl93YWl0X2V2ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dhaXRfZXZlbnQoX2V2bCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dhaXRfZXZlbnQgbm90IEltcGxlbWVudGVkOiB1c2UgR3JhcGhpY3NfanMgaW5zdGVhZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zeW5jaHJvbml6ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9zeW5jaHJvbml6ZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3N5bmNocm9uaXplIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcmVtZW1iZXJfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9yZW1lbWJlcl9tb2RlICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Rpc3BsYXlfbW9kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9kaXNwbGF5X21vZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Rpc3BsYXlfbW9kZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2luZG93X2lkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3dpbmRvd19pZChhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3dpbmRvd19pZCBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3coYSxiLGMsZCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyhhKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWI6IGNvZGUgc3BlY2lmaWMgdG8gSnNfb2Zfb2NhbWxcblxuLy9Qcm92aWRlczogY2FtbF9qc19vbl9pZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19vbl9pZSAoKSB7XG4gIHZhciB1YSA9XG4gICAgICAoZ2xvYmFsVGhpcy5uYXZpZ2F0b3ImJmdsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgICAgID9nbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIjtcbiAgcmV0dXJuIHVhLmluZGV4T2YoXCJNU0lFXCIpICE9IC0xICYmIHVhLmluZGV4T2YoXCJPcGVyYVwiKSAhPSAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZXNjYXBlIGNvbnN0IChjb25zdClcbnZhciBjYW1sX2pzX3JlZ2V4cHMgPSB7IGFtcDovJi9nLCBsdDovPC9nLCBxdW90Oi9cXFwiL2csIGFsbDovWyY8XFxcIl0vIH07XG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZXNjYXBlIChzKSB7XG4gIGlmICghY2FtbF9qc19yZWdleHBzLmFsbC50ZXN0KHMpKSByZXR1cm4gcztcbiAgcmV0dXJuIHMucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMuYW1wLCBcIiZhbXA7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmx0LCBcIiZsdDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMucXVvdCwgXCImcXVvdDtcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lbnRpdGllc1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VudGl0aWVzKHMpIHtcbiAgdmFyIGVudGl0eSA9IC9eJiM/WzAtOWEtekEtWl0rOyQvXG4gIGlmKHMubWF0Y2goZW50aXR5KSlcbiAge1xuICAgIHZhciBzdHIsIHRlbXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGVtcC5pbm5lckhUTUw9IHM7XG4gICAgc3RyPSB0ZW1wLnRleHRDb250ZW50IHx8IHRlbXAuaW5uZXJUZXh0O1xuICAgIHRlbXA9bnVsbDtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJJbnZhbGlkIGVudGl0eSBcIiArIHMpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0X2NvbnNvbGUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0X2NvbnNvbGUgKCkge1xuICB2YXIgYyA9IGNvbnNvbGU7XG4gIHZhciBtID0gW1wibG9nXCIsIFwiZGVidWdcIiwgXCJpbmZvXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwiYXNzZXJ0XCIsIFwiZGlyXCIsIFwiZGlyeG1sXCIsXG4gICAgICAgICAgIFwidHJhY2VcIiwgXCJncm91cFwiLCBcImdyb3VwQ29sbGFwc2VkXCIsIFwiZ3JvdXBFbmRcIiwgXCJ0aW1lXCIsIFwidGltZUVuZFwiXTtcbiAgZnVuY3Rpb24gZiAoKSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIGlmICghY1ttW2ldXSkgY1ttW2ldXT1mO1xuICByZXR1cm4gYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGUodW5pdCl7XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCB9IGNhdGNoIChlKSB7IH07XG4gIH1cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMi5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDMuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgfVxuICBjYW1sX2ZhaWx3aXRoKFwiQ2Fubm90IGNyZWF0ZSBhIFhNTEh0dHBSZXF1ZXN0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gZXhuLmpzX2Vycm9yOyB9XG4gIHJldHVybiBudWxsO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IGxleGluZy5jIDYwNDUgMjAwNC0wMS0wMSAxNjo0Mjo0M1ogZG9saWdleiAkICovXG5cbi8qIFRoZSB0YWJsZS1kcml2ZW4gYXV0b21hdG9uIGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXguICovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpO1xuICB2YXIgbCA9IHMubGVuZ3RoIC8gMjtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChzLmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuXG4gIGlmICghdGJsLmxleF9kZWZhdWx0KSB7XG4gICAgdGJsLmxleF9iYXNlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV0pO1xuICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtdKTtcbiAgICB0YmwubGV4X2NoZWNrID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9jaGVja10pO1xuICAgIHRibC5sZXhfdHJhbnMgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zXSk7XG4gICAgdGJsLmxleF9kZWZhdWx0ID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF0pO1xuICB9XG5cbiAgdmFyIGMsIHN0YXRlID0gc3RhcnRfc3RhdGU7XG5cbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMobGV4YnVmW2xleF9idWZmZXJdKTtcblxuICBpZiAoc3RhdGUgPj0gMCkge1xuICAgIC8qIEZpcnN0IGVudHJ5ICovXG4gICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X3N0YXJ0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIC8qIFJlZW50cnkgYWZ0ZXIgcmVmaWxsICovXG4gICAgc3RhdGUgPSAtc3RhdGUgLSAxO1xuICB9XG4gIGZvcig7Oykge1xuICAgIC8qIExvb2t1cCBiYXNlIGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqL1xuICAgIHZhciBiYXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTtcbiAgICBpZiAoYmFzZSA8IDApIHJldHVybiAtYmFzZS0xO1xuICAgIC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovXG4gICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVdO1xuICAgIGlmIChiYWNrdHJrID49IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX25ld19sZXhfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2xleF9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9sZXhfcnVuX21lbShzLCBpLCBtZW0sIGN1cnJfcG9zKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm47XG4gICAgdmFyIHNyYyA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChzcmMgPT0gMHhmZilcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBjdXJyX3BvcztcbiAgICBlbHNlXG4gICAgICBtZW0gW2RzdCArIDFdID0gbWVtIFtzcmMgKyAxXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fdGFnKHMsIGksIG1lbSkge1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIGRzdCA9IHMuY2hhckNvZGVBdChpKTsgaSsrO1xuICAgIGlmIChkc3QgPT0gMHhmZikgcmV0dXJuIDtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IC0xO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbmV3X2xleF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7XG4gIHZhciBsZXhfYnVmZmVyID0gMjtcbiAgdmFyIGxleF9idWZmZXJfbGVuID0gMztcbiAgdmFyIGxleF9zdGFydF9wb3MgPSA1O1xuICB2YXIgbGV4X2N1cnJfcG9zID0gNjtcbiAgdmFyIGxleF9sYXN0X3BvcyA9IDc7XG4gIHZhciBsZXhfbGFzdF9hY3Rpb24gPSA4O1xuICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gOTtcbiAgdmFyIGxleF9tZW0gPSAxMDtcbiAgdmFyIGxleF9iYXNlID0gMTtcbiAgdmFyIGxleF9iYWNrdHJrID0gMjtcbiAgdmFyIGxleF9kZWZhdWx0ID0gMztcbiAgdmFyIGxleF90cmFucyA9IDQ7XG4gIHZhciBsZXhfY2hlY2sgPSA1O1xuICB2YXIgbGV4X2Jhc2VfY29kZSA9IDY7XG4gIHZhciBsZXhfYmFja3Rya19jb2RlID0gNztcbiAgdmFyIGxleF9kZWZhdWx0X2NvZGUgPSA4O1xuICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA5O1xuICB2YXIgbGV4X2NoZWNrX2NvZGUgPSAxMDtcbiAgdmFyIGxleF9jb2RlID0gMTE7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkge1xuICAgIHRibC5sZXhfYmFzZV9jb2RlID0gICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFzZV9jb2RlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrX2NvZGUgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrX2NvZGVdKTtcbiAgICB0YmwubGV4X2NoZWNrX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrX2NvZGVdKTtcbiAgICB0YmwubGV4X3RyYW5zX2NvZGUgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X3RyYW5zX2NvZGVdKTtcbiAgICB0YmwubGV4X2RlZmF1bHRfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRfY29kZV0pO1xuICB9XG4gIGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgdGJsLmxleF9jb2RlID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyh0YmxbbGV4X2NvZGVdKTtcblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICByZXR1cm4gLWJhc2UtMTtcbiAgICB9XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTtcbiAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhfbWVtXSk7XG4gICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJrO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgd2UgbmVlZCBhIHJlZmlsbCAqL1xuICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKXtcbiAgICAgIGlmIChsZXhidWZbbGV4X2VvZl9yZWFjaGVkXSA9PSAwKVxuICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTtcbiAgICAgIGVsc2VcbiAgICAgICAgYyA9IDI1NjtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovXG4gICAgICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdICsrO1xuICAgIH1cbiAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqL1xuICAgIHZhciBwc3RhdGUgPSBzdGF0ZSA7XG4gICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09IHN0YXRlKVxuICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTtcbiAgICBlbHNlXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfZGVmYXVsdFtzdGF0ZV07XG4gICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0cmFjayBwb2ludCAqL1xuICAgIGlmIChzdGF0ZSA8IDApIHtcbiAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bvc107XG4gICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpXG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJsZXhpbmc6IGVtcHR5IHRva2VuXCIpO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0X2FjdGlvbl07XG4gICAgfWVsc2V7XG4gICAgICAvKiBJZiBzb21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi9cbiAgICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7XG4gICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0ZSlcbiAgICAgICAgcGNfb2ZmID0gdGJsLmxleF90cmFuc19jb2RlW2Jhc2VfY29kZSArIGNdO1xuICAgICAgZWxzZVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X2RlZmF1bHRfY29kZVtwc3RhdGVdO1xuICAgICAgaWYgKHBjX29mZiA+IDApXG4gICAgICAgIGNhbWxfbGV4X3J1bl9tZW1cbiAgICAgICh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dLCBsZXhidWZbbGV4X2N1cnJfcG9zXSk7XG4gICAgICAvKiBFcmFzZSB0aGUgRU9GIGNvbmRpdGlvbiBvbmx5IGlmIHRoZSBFT0YgcHNldWRvLWNoYXJhY3RlciB3YXNcbiAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSlcbiAgICAgICovXG4gICAgICBpZiAoYyA9PSAyNTYpIGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID0gMDtcbiAgICB9XG4gIH1cbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9seG1fbmV4dFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3hvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9hZGRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfbXVsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NldF8xXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uZXdfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2x4bV9uZXh0KHYpIHtcbiAgZnVuY3Rpb24gc2hpZnRfbCh4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0KHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gc2hpZnRfcih4LCBrKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X29yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24geG9yKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3hvcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIGFkZChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9hZGQoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBtdWwoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gcm90bCh4LCBrKSB7XG4gICAgcmV0dXJuIG9yKHNoaWZ0X2woeCxrKSxzaGlmdF9yICh4LCA2NCAtIGspKTtcbiAgfVxuICBmdW5jdGlvbiBnZXQoYSwgaSkge1xuICAgIHJldHVybiBjYW1sX2JhX2dldF8xKGEsIGkpO1xuICB9XG4gIGZ1bmN0aW9uIHNldChhLCBpLCB4KSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfc2V0XzEoYSwgaSwgeCk7XG4gIH1cbiAgdmFyIE0gPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGQxMzQyNTQzZGU4MmVmOTVcIikpO1xuICB2YXIgZGFiYSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZGFiYTBiNmViMDkzMjJlM1wiKSk7XG4gIHZhciB6LCBxMCwgcTE7XG4gIHZhciBzdCA9IHY7XG4gIHZhciBhID0gZ2V0KHN0LDApO1xuICB2YXIgcyA9IGdldChzdCwxKTtcbiAgdmFyIHgwID0gZ2V0KHN0LDIpO1xuICB2YXIgeDEgPSBnZXQoc3QsMyk7XG4gIC8qIENvbWJpbmluZyBvcGVyYXRpb24gKi9cbiAgeiA9IGFkZChzLCB4MCk7XG4gIC8qIE1peGluZyBmdW5jdGlvbiAqL1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSB4b3IoeixzaGlmdF9yKHosMzIpKTtcbiAgLyogTENHIHVwZGF0ZSAqL1xuICBzZXQoc3QsIDEsIGFkZCAobXVsKHMsTSksIGEpKTtcbiAgLyogWEJHIHVwZGF0ZSAqL1xuICB2YXIgcTAgPSB4MFxuICB2YXIgcTEgPSB4MVxuICBxMSA9IHhvcihxMSxxMCk7XG4gIHEwID0gcm90bChxMCwgMjQpO1xuICBxMCA9IHhvcih4b3IocTAsIHExKSwgKHNoaWZ0X2wocTEsMTYpKSk7XG4gIHExID0gcm90bChxMSwgMzcpO1xuICBzZXQoc3QsIDIsIHEwKTtcbiAgc2V0KHN0LCAzLCBxMSk7XG4gIC8qIFJldHVybiByZXN1bHQgKi9cbiAgcmV0dXJuIHo7XG59XG4iLCIvL1Byb3ZpZGVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG52YXIgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCBcbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyXG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciwgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dFxuZnVuY3Rpb24gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0ICh2b3V0cHV0LCB2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl07XG4gIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdO1xuICB2YXIgb3V0cHV0ID0gY2FtbF9tbF9jaGFubmVsc1t2b3V0cHV0XTtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IG91dHB1dDtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXSA9IG91dHB1dDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdCAodnN0ZG91dCwgdnN0ZGVycil7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVycjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkKGNoYW4pe1xuICB2YXIgaW5mbyA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbl07XG4gIHJldHVybiBpbmZvLm9mZnNldFxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1xuZnVuY3Rpb24gY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2soeCl7XG4gIHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7XG59XG5cbiIsIi8vUHJvdmlkZXM6IGpzX3BlcmZvcm1hbmNlXG52YXIganNfcGVyZm9ybWFuY2UgPSB7bWFyazogKGZ1bmN0aW9uICgpIHt9KSwgbWVhc3VyZTogKGZ1bmN0aW9uICgpIHt9KSB9O1xuaWYgKHR5cGVvZiBqb29fZ2xvYmFsX29iamVjdC5wZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBqc19wZXJmb3JtYW5jZSA9IGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlO1xufSBlbHNlIHtcbiAgdHJ5IHtcbiAgICB2YXIgcGVyZl9ob29rcyA9IHJlcXVpcmUoJ3BlcmZfaG9va3MnKTtcbiAgICBqc19wZXJmb3JtYW5jZSA9IHBlcmZfaG9va3MucGVyZm9ybWFuY2U7XG4gICAgam9vX2dsb2JhbF9vYmplY3QuUGVyZm9ybWFuY2VPYnNlcnZlciA9IHBlcmZfaG9va3MuUGVyZm9ybWFuY2VPYnNlcnZlcjtcbiAgfSBjYXRjaCAoX2UpIHtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oXCJjb3VsZG4ndCBsb2FkIHBlcmZvcm1hbmNlIGhvb2tzXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfbWFya1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9tYXJrKG5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5tYXJrKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tZWFzdXJlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21lYXN1cmUobmFtZSwgc3RhcnQsIGVuZCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1lYXN1cmUoXG4gICAgICAgICAgICBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoc3RhcnQpLCBcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcoZW5kKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX2NsZWFyX21hcmtzXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX2NsZWFyX21hcmtzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLmNsZWFyTWFya3MoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuIiwiLy8vLy8vLy8vIFRJTUVfTk9XXG5cbi8vUHJvdmlkZXM6IHRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbnZhciBtc190b19uYW5vID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxMDAwKjEwMDApO1xuZnVuY3Rpb24gdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvKCl7XG4gICAgdmFyIG1zID0gRGF0ZS5ub3coKTtcbiAgICAvLyBtdWx0aXBsZSBieSB0d28gLSBpbnQ2MyBpbnRlZ2VycyBhcmUgc2hpZnRlZCB0byB0aGUgbGVmdFxuICAgIHZhciBtc19pNjMgPSBjYW1sX2ludDY0X29mX2Zsb2F0KG1zKjIpO1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChtc19pNjMsbXNfdG9fbmFubyk7XG59XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBhZGRpbmcgcG9zaXRpb24uICopXG50eXBlIHBhZHR5ID1cbiAgfCBMZWZ0ICAgKCogVGV4dCBpcyBsZWZ0IGp1c3RpZmllZCAoJy0nIG9wdGlvbikuICAgICAgICAgICAgICAgKilcbiAgfCBSaWdodCAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgKG5vICctJyBvcHRpb24pLiAgICAgICAgICAgKilcbiAgfCBaZXJvcyAgKCogVGV4dCBpcyByaWdodCBqdXN0aWZpZWQgYnkgemVyb3MgKHNlZSAnMCcgb3B0aW9uKS4gKilcblxuKCoqKilcblxuKCogSW50ZWdlciBjb252ZXJzaW9uLiAqKVxudHlwZSBpbnRfY29udiA9XG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgICAgICAgICgqICAlZCB8ICUrZCB8ICUgZCAgKilcbiAgfCBJbnRfaSB8IEludF9waSB8IEludF9zaSAgICAgICAgKCogICVpIHwgJStpIHwgJSBpICAqKVxuICB8IEludF94IHwgSW50X0N4ICAgICAgICAgICAgICAgICAoKiAgJXggfCAlI3ggICAgICAgICopXG4gIHwgSW50X1ggfCBJbnRfQ1ggICAgICAgICAgICAgICAgICgqICAlWCB8ICUjWCAgICAgICAgKilcbiAgfCBJbnRfbyB8IEludF9DbyAgICAgICAgICAgICAgICAgKCogICVvIHwgJSNvICAgICAgICAqKVxuICB8IEludF91ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJXUgICAgICAgICAgICAgICopXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1ICAgICAgICgqICAlI2QgfCAlI2kgfCAlI3UgKilcblxuKCogRmxvYXQgY29udmVyc2lvbi4gKilcbnR5cGUgZmxvYXRfZmxhZ19jb252ID1cbiAgfCBGbG9hdF9mbGFnXyAgICAgICAgICAgICAgICAgICAgKCogJVtmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3AgICAgICAgICAgICAgICAgICAgKCogJStbZmVFZ0dGaEhdICopXG4gIHwgRmxvYXRfZmxhZ19zICAgICAgICAgICAgICAgICAgICgqICUgW2ZlRWdHRmhIXSAqKVxudHlwZSBmbG9hdF9raW5kX2NvbnYgPVxuICB8IEZsb2F0X2YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWYgfCAlK2YgfCAlIGYgICopXG4gIHwgRmxvYXRfZSAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZSB8ICUrZSB8ICUgZSAgKilcbiAgfCBGbG9hdF9FICAgICAgICAgICAgICAgICAgICAgICAgKCogICVFIHwgJStFIHwgJSBFICAqKVxuICB8IEZsb2F0X2cgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWcgfCAlK2cgfCAlIGcgICopXG4gIHwgRmxvYXRfRyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlRyB8ICUrRyB8ICUgRyAgKilcbiAgfCBGbG9hdF9GICAgICAgICAgICAgICAgICAgICAgICAgKCogICVGIHwgJStGIHwgJSBGICAqKVxuICB8IEZsb2F0X2ggICAgICAgICAgICAgICAgICAgICAgICAoKiAgJWggfCAlK2ggfCAlIGggICopXG4gIHwgRmxvYXRfSCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlSCB8ICUrSCB8ICUgSCAgKilcbiAgfCBGbG9hdF9DRiAgICAgICAgICAgICAgICAgICAgICAgKCogICUjRnwgJSsjRnwgJSAjRiAqKVxudHlwZSBmbG9hdF9jb252ID0gZmxvYXRfZmxhZ19jb252ICogZmxvYXRfa2luZF9jb252XG5cbigqKiopXG5cbigqIENoYXIgc2V0cyAoc2VlICVbLi4uXSkgYXJlIGJpdG1hcHMgaW1wbGVtZW50ZWQgYXMgMzItY2hhciBzdHJpbmdzLiAqKVxudHlwZSBjaGFyX3NldCA9IHN0cmluZ1xuXG4oKioqKVxuXG4oKiBDb3VudGVyIHVzZWQgaW4gU2NhbmYuICopXG50eXBlIGNvdW50ZXIgPVxuICB8IExpbmVfY291bnRlciAgICAgKCogICVsICAgICAgKilcbiAgfCBDaGFyX2NvdW50ZXIgICAgICgqICAlbiAgICAgICopXG4gIHwgVG9rZW5fY291bnRlciAgICAoKiAgJU4sICVMICAqKVxuXG4oKioqKVxuXG4oKiBQYWRkaW5nIG9mIHN0cmluZ3MgYW5kIG51bWJlcnMuICopXG50eXBlICgnYSwgJ2IpIHBhZGRpbmcgPVxuICAoKiBObyBwYWRkaW5nIChleDogXCIlZFwiKSAqKVxuICB8IE5vX3BhZGRpbmcgIDogKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBMaXRlcmFsIHBhZGRpbmcgKGV4OiBcIiU4ZFwiKSAqKVxuICB8IExpdF9wYWRkaW5nIDogcGFkdHkgKiBpbnQgLT4gKCdhLCAnYSkgcGFkZGluZ1xuICAoKiBQYWRkaW5nIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKmRcIikgKilcbiAgfCBBcmdfcGFkZGluZyA6IHBhZHR5IC0+IChpbnQgLT4gJ2EsICdhKSBwYWRkaW5nXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2QsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcGFkZGluZyBvcHRpb24gKG5vIGV4dHJhIGFyZ3VtZW50KSAqKVxudHlwZSBwYWRfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBQcmVjaXNpb24gb2YgZmxvYXRzIGFuZCAnMCctcGFkZGluZyBvZiBpbnRlZ2Vycy4gKilcbnR5cGUgKCdhLCAnYikgcHJlY2lzaW9uID1cbiAgKCogTm8gcHJlY2lzaW9uIChleDogXCIlZlwiKSAqKVxuICB8IE5vX3ByZWNpc2lvbiA6ICgnYSwgJ2EpIHByZWNpc2lvblxuICAoKiBMaXRlcmFsIHByZWNpc2lvbiAoZXg6IFwiJS4zZlwiKSAqKVxuICB8IExpdF9wcmVjaXNpb24gOiBpbnQgLT4gKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIFByZWNpc2lvbiBhcyBleHRyYSBhcmd1bWVudCAoZXg6IFwiJS4qZlwiKSAqKVxuICB8IEFyZ19wcmVjaXNpb24gOiAoaW50IC0+ICdhLCAnYSkgcHJlY2lzaW9uXG5cbigqIFNvbWUgZm9ybWF0cywgc3VjaCBhcyAlX2YsXG4gICBvbmx5IGFjY2VwdCBhbiBvcHRpb25hbCBudW1iZXIgYXMgcHJlY2lzaW9uIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHByZWNfb3B0aW9uID0gaW50IG9wdGlvblxuXG4oKiBzZWUgdGhlIEN1c3RvbSBmb3JtYXQgY29tYmluYXRvciAqKVxudHlwZSAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5ID1cbiAgfCBDdXN0b21femVybyA6ICgnYSwgc3RyaW5nLCAnYSkgY3VzdG9tX2FyaXR5XG4gIHwgQ3VzdG9tX3N1Y2MgOiAoJ2EsICdiLCAnYykgY3VzdG9tX2FyaXR5IC0+XG4gICAgKCdhLCAneCAtPiAnYiwgJ3ggLT4gJ2MpIGN1c3RvbV9hcml0eVxuXG4oKioqKVxuXG4oKiAgICAgICAgUmVsYXRpb25hbCBmb3JtYXQgdHlwZXNcblxuSW4gdGhlIGZpcnN0IGZvcm1hdCtnYWR0cyBpbXBsZW1lbnRhdGlvbiwgdGhlIHR5cGUgZm9yICUoLi4lKSBpbiB0aGVcbmZtdCBHQURUIHdhcyBhcyBmb2xsb3dzOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICogKCdkMSwgJ3ExLCAnZDIsICdxMikgcmVhZGVyX25iX3VuaWZpZXIgKlxuICAgICgneCwgJ2IsICdjLCAnZDEsICdxMSwgJ3UpIGZtdHR5ICpcbiAgICAoJ3UsICdiLCAnYywgJ3ExLCAnZTEsICdmKSBmbXQgLT5cbiAgICAgICgoJ3gsICdiLCAnYywgJ2QyLCAncTIsICd1KSBmb3JtYXQ2IC0+ICd4LCAnYiwgJ2MsICdkMSwgJ2UxLCAnZikgZm10XG5cbk5vdGljZSB0aGF0IHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2YgcG9zaXRpb24gaW4gdGhlIGZvcm1hdCBhcmd1bWVudFxuKCgneCwgLi4sICd1KSBmb3JtYXQ2IC0+IC4uKSBpcyBlcXVhbCB0byB0aGUgJ3UgcGFyYW1ldGVyIGluICdhXG5wb3NpdGlvbiBpbiB0aGUgZm9ybWF0IHRhaWwgKCgndSwgLi4sICdmKSBmbXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlXG50eXBlIG9mIHRoZSBleHBlY3RlZCBmb3JtYXQgcGFyYW1ldGVyIGRlcGVuZHMgb2Ygd2hlcmUgdGhlICUoLi4uJSlcbmFyZSBpbiB0aGUgZm9ybWF0IHN0cmluZzpcblxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpXCJcbiAgLSA6ICh1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIHVuaXQpXG4gICAgICBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NiAtPiB1bml0XG4gID0gPGZ1bj5cbiAgIyBQcmludGYucHJpbnRmIFwiJSglKSVkXCJcbiAgLSA6IChpbnQgLT4gdW5pdCwgb3V0X2NoYW5uZWwsIHVuaXQsICdfYSwgJ19hLCBpbnQgLT4gdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IGludCAtPiB1bml0XG4gID0gPGZ1bj5cblxuT24gdGhlIGNvbnRyYXJ5LCB0aGUgbGVnYWN5IHR5cGVyIGdpdmVzIGEgY2xldmVyIHR5cGUgdGhhdCBkb2VzIG5vdFxuZGVwZW5kIG9uIHRoZSBwb3NpdGlvbiBvZiAlKC4uJSkgaW4gdGhlIGZvcm1hdCBzdHJpbmcuIEZvciBleGFtcGxlLFxuJSglKSB3aWxsIGhhdmUgdGhlIHBvbHltb3JwaGljIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpOiBpdCBjYW5cbmJlIGNvbmNhdGVuYXRlZCB0byBhbnkgZm9ybWF0IHR5cGUsIGFuZCBvbmx5IGVuZm9yY2VzIHRoZSBjb25zdHJhaW50XG50aGF0IGl0cyAnYSBhbmQgJ2YgcGFyYW1ldGVycyBhcmUgZXF1YWwgKG5vIGZvcm1hdCBhcmd1bWVudHMpIGFuZCAnZFxuYW5kICdlIGFyZSBlcXVhbCAobm8gcmVhZGVyIGFyZ3VtZW50KS5cblxuVGhlIHdlYWtlbmluZyBvZiB0aGlzIHBhcmFtZXRlciB0eXBlIGluIHRoZSBHQURUIHZlcnNpb24gYnJva2UgdXNlclxuY29kZSAoaW4gZmFjdCBpdCBlc3NlbnRpYWxseSBtYWRlICUoLi4uJSkgdW51c2FibGUgZXhjZXB0IGF0IHRoZSBsYXN0XG5wb3NpdGlvbiBvZiBhIGZvcm1hdCkuIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgd291bGQgbm90IHdvcmtcbmFueW1vcmU6XG5cbiAgZnVuIHNlcCAtPlxuICAgIEZvcm1hdC5wcmludGYgXCJmb28lKCUpYmFyJSglKWJhelwiIHNlcCBzZXBcblxuQXMgdGhlIHR5cGUtY2hlY2tlciB3b3VsZCByZXF1aXJlIHR3byAqaW5jb21wYXRpYmxlKiB0eXBlcyBmb3IgdGhlICUoJSlcbmluIGRpZmZlcmVudCBwb3NpdGlvbnMuXG5cblRoZSBzb2x1dGlvbiB0byByZWdhaW4gYSBnZW5lcmFsIHR5cGUgZm9yICUoLi4lKSBpcyB0byBnZW5lcmFsaXplIHRoaXNcbnRlY2huaXF1ZSwgbm90IG9ubHkgb24gdGhlICdkLCAnZSBwYXJhbWV0ZXJzLCBidXQgb24gYWxsIHNpeFxucGFyYW1ldGVycyBvZiBhIGZvcm1hdDogd2UgaW50cm9kdWNlIGEgXCJyZWxhdGlvbmFsXCIgdHlwZVxuICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxud2hvc2UgdmFsdWVzIGFyZSBwcm9vZnMgdGhhdCAoJ2ExLCAuLiwgJ2YxKSBhbmQgKCdhMiwgLi4sICdmMikgbW9yYWxseVxuY29ycmVzcG9uZCB0byB0aGUgc2FtZSBmb3JtYXQgdHlwZTogJ2ExIGlzIG9idGFpbmVkIGZyb20gJ2YxLCdiMSwnYzFcbmluIHRoZSBleGFjdCBzYW1lIHdheSB0aGF0ICdhMiBpcyBvYnRhaW5lZCBmcm9tICdmMiwnYjIsJ2MyLCBldGMuXG5cbkZvciBleGFtcGxlLCB0aGUgcmVsYXRpb24gYmV0d2VlbiB0d28gZm9ybWF0IHR5cGVzIGJlZ2lubmluZyB3aXRoIGEgQ2hhclxucGFyYW1ldGVyIGlzIGFzIGZvbGxvd3M6XG5cbnwgQ2hhcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVjICAqKVxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoY2hhciAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG5JbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGUgdGVybSBzdHJ1Y3R1cmUgb2YgZm10dHlfcmVsIGlzIChhbG1vc3RbMV0pXG5pc29tb3JwaGljIHRvIHRoZSBmbXR0eSBvZiB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb246IGV2ZXJ5XG5jb25zdHJ1Y3RvciBpcyByZS1yZWFkIHdpdGggYSBiaW5hcnksIHJlbGF0aW9uYWwgdHlwZSwgaW5zdGVhZCBvZiB0aGVcbnByZXZpb3VzIHVuYXJ5IHR5cGluZy4gZm10dHkgY2FuIHRoZW4gYmUgcmUtZGVmaW5lZCBhcyB0aGUgZGlhZ29uYWwgb2ZcbmZtdHR5X3JlbDpcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSA9XG4gICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuXG5PbmNlIHdlIGhhdmUgdGhpcyBmbXR0eV9yZWwgdHlwZSBpbiBwbGFjZSwgd2UgY2FuIGdpdmUgdGhlIG1vcmVcbmdlbmVyYWwgdHlwZSB0byAlKC4uLiUpOlxuXG58IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICBwYWRfb3B0aW9uICpcbiAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYiwgJ2MsICdqMiwgJ2UsICdmKSBmbXRcblxuV2UgYWNjZXB0IGFueSBmb3JtYXQgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2KSAodGhpcyBpc1xuY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHR5cGUgb2YgdGhlIGN1cnJlbnQgZm9ybWF0KSwgYnV0IGFsc29cbnJlcXVpcmUgYSBwcm9vZiB0aGF0IHRoaXMgZm9ybWF0IGlzIGluIHJlbGF0aW9uIHRvIGFub3RoZXIgZm9ybWF0IHRoYXRcbmlzIGNvbmNhdGVuYWJsZSB0byB0aGUgZm9ybWF0IHRhaWwuIFdoZW4gZXhlY3V0aW5nIGEgJSguLi4lKSBmb3JtYXRcbihpbiBjYW1saW50ZXJuYWxGb3JtYXQubWw6bWFrZV9wcmludGYgb3Igc2NhbmYubWw6bWFrZV9zY2FuZiksIHdlXG50cmFuc3R5cGUgdGhlIGZvcm1hdCBhbG9uZyB0aGlzIHJlbGF0aW9uIHVzaW5nIHRoZSAncmVjYXN0JyBmdW5jdGlvblxudG8gdHJhbnNwb3NlIGJldHdlZW4gcmVsYXRlZCBmb3JtYXQgdHlwZXMuXG5cbiAgdmFsIHJlY2FzdCA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxKSBmbXRcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdFxuXG5OT1RFIFsxXTogdGhlIHR5cGluZyBvZiBGb3JtYXRfc3Vic3RfdHkgcmVxdWlyZXMgbm90IG9uZSBmb3JtYXQgdHlwZSwgYnV0XG50d28sIG9uZSB0byBlc3RhYmxpc2ggdGhlIGxpbmsgYmV0d2VlbiB0aGUgZm9ybWF0IGFyZ3VtZW50IGFuZCB0aGVcbmZpcnN0IHNpeCBwYXJhbWV0ZXJzLCBhbmQgdGhlIG90aGVyIGZvciB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXRcbmFyZ3VtZW50IGFuZCB0aGUgbGFzdCBzaXggcGFyYW1ldGVycy5cblxufCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiMiwgJ2MyLCAnajIsICdkMiwgJ2EyKSBmbXR0eV9yZWwgKlxuICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZTEsICdmMSxcbiAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbldoZW4gd2UgZ2VuZXJhdGUgYSBmb3JtYXQgQVNULCB3ZSBnZW5lcmF0ZSBleGFjdGx5IHRoZSBzYW1lIHdpdG5lc3NcbmZvciBib3RoIHJlbGF0aW9ucywgYW5kIHRoZSB3aXRuZXNzLWNvbnZlcnNpb24gZnVuY3Rpb25zIGluXG5jYW1saW50ZXJuYWxGb3JtYXQgZG8gcmVseSBvbiB0aGlzIGludmFyaWFudC4gRm9yIGV4YW1wbGUsIHRoZVxuZnVuY3Rpb24gdGhhdCBwcm92ZXMgdGhhdCB0aGUgcmVsYXRpb24gaXMgdHJhbnNpdGl2ZVxuXG4gIHZhbCB0cmFucyA6XG4gICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIC0+ICgnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG4gIC0+ICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgJ2EzLCAnYjMsICdjMywgJ2QzLCAnZTMsICdmMykgZm10dHlfcmVsXG5cbmRvZXMgYXNzdW1lIHRoYXQgdGhlIHR3byBpbnB1dHMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRlcm0gc3RydWN0dXJlXG4oYW5kIGlzIG9ubHkgZXZlcnkgdXNlZCBmb3IgYXJndW1lbnQgd2l0bmVzc2VzIG9mIHRoZVxuRm9ybWF0X3N1YnN0X3R5IGNvbnN0cnVjdG9yKS5cbiopXG5cbigqIFR5cGUgb2YgYSBibG9jayB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggICAoKiBIb3Jpem9udGFsIGJsb2NrIG5vIGxpbmUgYnJlYWtpbmcgKilcbiAgfCBQcF92Ym94ICAgKCogVmVydGljYWwgYmxvY2sgZWFjaCBicmVhayBsZWFkcyB0byBhIG5ldyBsaW5lICopXG4gIHwgUHBfaHZib3ggICgqIEhvcml6b250YWwtdmVydGljYWwgYmxvY2s6IHNhbWUgYXMgdmJveCwgZXhjZXB0IGlmIHRoaXMgYmxvY2tcbiAgICAgICAgICAgICAgICAgaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lICopXG4gIHwgUHBfaG92Ym94ICgqIEhvcml6b250YWwgb3IgVmVydGljYWwgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrICopXG4gIHwgUHBfYm94ICAgICgqIEhvcml6b250YWwgb3IgSW5kZW50IGJsb2NrOiBicmVha3MgbGVhZCB0byBuZXcgbGluZVxuICAgICAgICAgICAgICAgICBvbmx5IHdoZW4gbmVjZXNzYXJ5IHRvIHByaW50IHRoZSBjb250ZW50IG9mIHRoZSBibG9jaywgb3JcbiAgICAgICAgICAgICAgICAgd2hlbiBpdCBsZWFkcyB0byBhIG5ldyBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lICopXG4gIHwgUHBfZml0cyAgICgqIEludGVybmFsIHVzYWdlOiB3aGVuIGEgYmxvY2sgZml0cyBvbiBhIHNpbmdsZSBsaW5lICopXG5cbigqIEZvcm1hdHRpbmcgZWxlbWVudCB1c2VkIGJ5IHRoZSBGb3JtYXQgcHJldHR5LXByaW50ZXIuICopXG50eXBlIGZvcm1hdHRpbmdfbGl0ID1cbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF0gICAqKVxuICB8IENsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAfSAgICopXG4gIHwgQnJlYWsgb2Ygc3RyaW5nICogaW50ICogaW50ICAgICAgICAgICgqIEAsIHwgQCAgfCBAOyB8IEA7PD4gKilcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQD8gICAqKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXFxuICAqKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBALiAgICopXG4gIHwgTWFnaWNfc2l6ZSBvZiBzdHJpbmcgKiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEA8bj4gKilcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQEAgICAqKVxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAJSUgICopXG4gIHwgU2Nhbl9pbmRpYyBvZiBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBYICAgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuID1cbiAgfCBPcGVuX3RhZyA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICAgICAgKCogQHsgICAqKVxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXR0aW5nX2dlblxuICB8IE9wZW5fYm94IDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAWyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG5cbigqKiopXG5cbigqIExpc3Qgb2YgZm9ybWF0IHR5cGUgZWxlbWVudHMuICopXG4oKiBJbiBwYXJ0aWN1bGFyIHVzZWQgdG8gcmVwcmVzZW50ICUoLi4uJSkgYW5kICV7Li4uJX0gY29udGVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YsXG4gICAgICAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eV9yZWxcbmFuZCAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsID1cbiAgfCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgY2hhciAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBTdHJpbmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChzdHJpbmcgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBzdHJpbmcgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVkICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDMyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDMyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50MzIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgTmF0aXZlaW50X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAobmF0aXZlaW50IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgbmF0aXZlaW50IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEludDY0X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlTGQgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGludDY0IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgaW50NjQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgRmxvYXRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVmICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoZmxvYXQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBmbG9hdCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBCb29sX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChib29sIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgYm9vbCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEZvcm1hdF9hcmdfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgKlxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKVxuICAgICAgICAgICBmbXR0eV9yZWxcbiAgfCBGb3JtYXRfc3Vic3RfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cxLCAnYjEsICdjMSwgJ2oxLCAnZDEsICdhMSkgZm10dHlfcmVsICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9ycy4gKilcbiAgfCBBbHBoYV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICd4IC0+ICdjMSkgLT4gJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICd4IC0+ICdjMikgLT4gJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgVGhldGFfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoKCdiMSAtPiAnYzEpIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdiMiAtPiAnYzIpIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEFueV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVXNlZCBmb3IgY3VzdG9tIGZvcm1hdHMgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCd4IC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ3ggLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgUmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVyICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9yICAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ2ExLCAnYjEsICdjMSwgKCdiMSAtPiAneCkgLT4gJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAoJ2IyIC0+ICd4KSAtPiAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICB8IEVuZF9vZl9mbXR0eSA6XG4gICAgICAoJ2YxLCAnYjEsICdjMSwgJ2QxLCAnZDEsICdmMSxcbiAgICAgICAnZjIsICdiMiwgJ2MyLCAnZDIsICdkMiwgJ2YyKSBmbXR0eV9yZWxcblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgZWxlbWVudHMuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCA9XG4gIHwgQ2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2FtbF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVMgKilcbiAgICAgICgneCwgc3RyaW5nIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50MzIgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBOYXRpdmVpbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlbltkaXhYdW9dICopXG4gICAgICBpbnRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIG5hdGl2ZWludCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50NjQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGbG9hdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICAgICAgZmxvYXRfY29udiAqICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksIGZsb2F0IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtiQl0gKilcbiAgICAgICgneCwgYm9vbCAtPiAnYSkgcGFkZGluZyAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsdXNoIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICB8IFN0cmluZ19saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGFiYyAqKVxuICAgICAgc3RyaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgQ2hhcl9saXRlcmFsIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogeCAqKVxuICAgICAgY2hhciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgRm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXsuLi4lfSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICBwYWRfb3B0aW9uICpcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAgICdnMiwgJ2IsICdjLCAnajIsICdkLCAnYSkgZm10dHlfcmVsICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yLiAqKVxuICB8IEFscGhhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVhICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ3ggLT4gJ2MpIC0+ICd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFRoZXRhIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV0ICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgoJ2IgLT4gJ2MpIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcjogKilcbiAgfCBGb3JtYXR0aW5nX2xpdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgZm9ybWF0dGluZ19saXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBGb3JtYXR0aW5nX2dlbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQF8gKilcbiAgICAgICgnYTEsICdiLCAnYywgJ2QxLCAnZTEsICdmMSkgZm9ybWF0dGluZ19nZW4gKlxuICAgICAgKCdmMSwgJ2IsICdjLCAnZTEsICdlMiwgJ2YyKSBmbXQgLT4gKCdhMSwgJ2IsICdjLCAnZDEsICdlMiwgJ2YyKSBmbXRcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgUmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4IC0+ICdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVsuLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgIChzdHJpbmcgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgU2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJVtubE5MXSAqKVxuICAgICAgY291bnRlciAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKGludCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgIChjaGFyIC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IElnbm9yZWRfcGFyYW0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgaWdub3JlZCAqICgneCwgJ2IsICdjLCAneSwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIEN1c3RvbSBwcmludGluZyBmb3JtYXQgKFBSIzY0NTIsIEdQUiMxNDApXG5cbiAgICAgV2UgaW5jbHVkZSBhIHR5cGUgQ3VzdG9tIG9mIFwiY3VzdG9tIGNvbnZlcnRlcnNcIiwgd2hlcmUgYW5cbiAgICAgYXJiaXRyYXJ5IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgb25lIG9yIG1vcmVcbiAgICAgYXJndW1lbnRzLiBUaGVyZSBpcyBubyBzeW50YXggZm9yIGN1c3RvbSBjb252ZXJ0ZXJzLCBpdCBpcyBvbmx5XG4gICAgIGludGVuZGVkIGZvciBjdXN0b20gcHJvY2Vzc29ycyB0aGF0IHdpc2ggdG8gcmVseSBvbiB0aGVcbiAgICAgc3RkbGliLWRlZmluZWQgZm9ybWF0IEdBRFRzLlxuXG4gICAgIEZvciBpbnN0YW5jZSBhIHByZS1wcm9jZXNzb3IgY291bGQgY2hvb3NlIHRvIGludGVycHJldCBzdHJpbmdzXG4gICAgIHByZWZpeGVkIHdpdGggW1wiIVwiXSBhcyBmb3JtYXQgc3RyaW5ncyB3aGVyZSBbJXt7IC4uLiB9fV0gaXNcbiAgICAgYSBzcGVjaWFsIGZvcm0gdG8gcGFzcyBhIHRvX3N0cmluZyBmdW5jdGlvbiwgc28gdGhhdCBvbmUgY291bGRcbiAgICAgd3JpdGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQ7IHkgOiBpbnQgfVxuXG4gICAgICAgbGV0IHN0cmluZ19vZl90IHQgPSBQcmludGYuc3ByaW50ZiBcInsgeCA9ICVkOyB5ID0gJWQgfVwiIHQueCB0LnlcblxuICAgICAgIFByaW50Zi5wcmludGYgIVwidCA9ICV7e3N0cmluZ19vZl90fX1cIiB7IHggPSA0MjsgeSA9IDQyIH1cbiAgICAgXX1cbiAgKilcbiAgfCBDdXN0b20gOlxuICAgICAgKCdhLCAneCwgJ3kpIGN1c3RvbV9hcml0eSAqICh1bml0IC0+ICd4KSAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICgneSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcblxuICAoKiBlbmQgb2YgYSBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqKVxuICB8IEVuZF9vZl9mb3JtYXQgOlxuICAgICAgICAoJ2YsICdiLCAnYywgJ2UsICdlLCAnZikgZm10XG5cbigqKiopXG5cbigqIFR5cGUgZm9yIGlnbm9yZWQgcGFyYW1ldGVycyAoc2VlIFwiJV9cIikuICopXG5hbmQgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWQgPVxuICB8IElnbm9yZWRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0MgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9zICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9TICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9pbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDMyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX25kICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludDY0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX0xkICopXG4gICAgICBpbnRfY29udiAqIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2YgKilcbiAgICAgIHBhZF9vcHRpb24gKiBwcmVjX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfYm9vbCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQiAqKVxuICAgICAgcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfey4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8oLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3JlYWRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgKilcbiAgICAgICgnYSwgJ2IsICdjLCAoJ2IgLT4gJ3gpIC0+ICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1suLi5dICopXG4gICAgICBwYWRfb3B0aW9uICogY2hhcl9zZXQgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1tubE5MXSAqKVxuICAgICAgY291bnRlciAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfMGMgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG5cbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gIEZvcm1hdCBvZiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ICogc3RyaW5nXG5cbmxldCByZWMgZXJhc2VfcmVsIDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gIChhLCBiLCBjLCBkLCBlLCBmLFxuICAgZywgaCwgaSwgaiwgaywgbCkgZm10dHlfcmVsIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eVxuPSBmdW5jdGlvblxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPlxuICAgIEludF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgTmF0aXZlaW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBlcmFzZV9yZWwgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgX3R5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkxLCBlcmFzZV9yZWwgcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBUaGV0YV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgSWdub3JlZF9yZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEVuZF9vZl9mbXR0eSAtPiBFbmRfb2ZfZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwZSBjb25jYXRlbmF0aW9uICopXG5cbigqIENvbmNhdGVuYXRlIHR3byBmb3JtYXQgdHlwZXMuICopXG4oKiBVc2VkIGJ5OlxuICAgKiByZWFkZXJfbmJfdW5pZmllcl9vZl9mbXR0eSB0byBjb3VudCByZWFkZXJzIGluIGFuIGZtdHR5LFxuICAgKiBTY2FuZi50YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIHRvIGV4dHJhY3QgcmVhZGVycyBpbnNpZGUgJSguLi4lKSxcbiAgICogQ2FtbGludGVybmFsRm9ybWF0LmZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IHRvIGV4dHJhY3QgZm9ybWF0IHR5cGUuICopXG5cbigqXG5sZXQgcmVjIGNvbmNhdF9mbXR0eSA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoZiwgYiwgYywgZSwgZywgaCkgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10dHkgPVxuKilcbmxldCByZWMgY29uY2F0X2ZtdHR5IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyXG4gICAgICAgZzEgajEgZzIgajJcbiAgLlxuICAgIChnMSwgYjEsIGMxLCBqMSwgZDEsIGExLFxuICAgICBnMiwgYjIsIGMyLCBqMiwgZDIsIGEyKSBmbXR0eV9yZWwgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsIC0+XG4gICAgKGcxLCBiMSwgYzEsIGoxLCBlMSwgZjEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBlMiwgZjIpIGZtdHR5X3JlbCA9XG5mdW4gZm10dHkxIGZtdHR5MiAtPiBtYXRjaCBmbXR0eTEgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAtPlxuICAgIENoYXJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBTdHJpbmdfdHkgcmVzdCAtPlxuICAgIFN0cmluZ190eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIEludDMyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgSW50NjRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgRmxvYXRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBCb29sX3R5IHJlc3QgLT5cbiAgICBCb29sX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIEFscGhhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgQW55X3R5IHJlc3QgLT5cbiAgICBBbnlfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIFJlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCBjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IGZtdHR5MlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdHMuICopXG5sZXQgcmVjIGNvbmNhdF9mbXQgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCAuXG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZywgaCkgZm10ID1cbmZ1biBmbXQxIGZtdDIgLT4gbWF0Y2ggZm10MSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgU3RyaW5nIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgQ2FtbF9zdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IENoYXIgKHJlc3QpIC0+XG4gICAgQ2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBDYW1sX2NoYXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBCb29sIChwYWQsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBBbHBoYSAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgVGhldGEgcmVzdCAtPlxuICAgIFRoZXRhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIEN1c3RvbSAoYXJpdHksIGYsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFJlYWRlciByZXN0IC0+XG4gICAgUmVhZGVyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgRmx1c2ggKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBDaGFyX2xpdGVyYWwgICAoY2hyLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdF9hcmcgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZyAgIChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0IChwYWQsIGZtdHR5LCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX25leHRfY2hhciAocmVzdCkgLT5cbiAgICBTY2FuX25leHRfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIElnbm9yZWRfcGFyYW0gKGlnbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpIC0+XG4gICAgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIGZtdDJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXhjZXB0aW9ucyAqKVxuXG5leHRlcm5hbCByZWdpc3Rlcl9uYW1lZF92YWx1ZSA6IHN0cmluZyAtPiAnYSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gICgqIGZvciBydW50aW1lL2ZhaWxfbmF0LmMgKilcbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmFycmF5X2JvdW5kX2Vycm9yXCJcbiAgICAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcblxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZVwiXG5leHRlcm5hbCByYWlzZV9ub3RyYWNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2Vfbm90cmFjZVwiXG5cbmxldCBmYWlsd2l0aCBzID0gcmFpc2UoRmFpbHVyZSBzKVxubGV0IGludmFsaWRfYXJnIHMgPSByYWlzZShJbnZhbGlkX2FyZ3VtZW50IHMpXG5cbmV4Y2VwdGlvbiBFeGl0XG5leGNlcHRpb24gTWF0Y2hfZmFpbHVyZSA9IE1hdGNoX2ZhaWx1cmVcbmV4Y2VwdGlvbiBBc3NlcnRfZmFpbHVyZSA9IEFzc2VydF9mYWlsdXJlXG5leGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCA9IEludmFsaWRfYXJndW1lbnRcbmV4Y2VwdGlvbiBGYWlsdXJlID0gRmFpbHVyZVxuZXhjZXB0aW9uIE5vdF9mb3VuZCA9IE5vdF9mb3VuZFxuZXhjZXB0aW9uIE91dF9vZl9tZW1vcnkgPSBPdXRfb2ZfbWVtb3J5XG5leGNlcHRpb24gU3RhY2tfb3ZlcmZsb3cgPSBTdGFja19vdmVyZmxvd1xuZXhjZXB0aW9uIFN5c19lcnJvciA9IFN5c19lcnJvclxuZXhjZXB0aW9uIEVuZF9vZl9maWxlID0gRW5kX29mX2ZpbGVcbmV4Y2VwdGlvbiBEaXZpc2lvbl9ieV96ZXJvID0gRGl2aXNpb25fYnlfemVyb1xuZXhjZXB0aW9uIFN5c19ibG9ja2VkX2lvID0gU3lzX2Jsb2NrZWRfaW9cbmV4Y2VwdGlvbiBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSA9IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG5cbigqIENvbXBvc2l0aW9uIG9wZXJhdG9ycyAqKVxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuKCogRGVidWdnaW5nICopXG5cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0ZVTkNUSU9OX18gOiBzdHJpbmcgPSBcIiVsb2NfRlVOQ1RJT05cIlxuXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuXG4oKiBDb21wYXJpc29ucyAqKVxuXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxubGV0IG1pbiB4IHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG5leHRlcm5hbCAoID09ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXFcIlxuZXh0ZXJuYWwgKCAhPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxXCJcblxuKCogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcblxuKCogSW50ZWdlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0gKSA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgKCB+KyApIDogaW50IC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxuZXh0ZXJuYWwgKCArICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCAoIC0gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgKCAvICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCAoIG1vZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcblxuZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCAoIGxvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCAoIGx4b3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcblxubGV0IGxub3QgeCA9IHggbHhvciAoLTEpXG5cbmV4dGVybmFsICggbHNsICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCAoIGxzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcblxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5cbigqIEZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LS4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgKCB+Ky4gKSA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCArLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCAoIC0uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsICggKi4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgKCAvLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCAoICoqICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9wb3dlcl9mbG9hdFwiIFwicG93XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuaF9mbG9hdFwiIFwiY2FtbF9hdGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhYnNfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFic2Zsb2F0XCJcbmV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RfZmxvYXQgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG5leHRlcm5hbCBmbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfaW50IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCB0cnVuY2F0ZSA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgaW50X29mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IGluZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5lZ19pbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHhGRl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuYW4gPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjhfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgbWF4X2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0VGX0ZGX0ZGX0ZGX0ZGX0ZGX0ZGTFxubGV0IG1pbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgwMF8xMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBlcHNpbG9uX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDNDX0IwXzAwXzAwXzAwXzAwXzAwXzAwTFxuXG50eXBlIGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuKCogU3RyaW5nIGFuZCBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGVzIFN0cmluZyBhbmQgQnl0ZXMgKilcblxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2xlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19jcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHN0cmluZ19ibGl0IDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgKCBeICkgczEgczIgPVxuICBsZXQgbDEgPSBzdHJpbmdfbGVuZ3RoIHMxIGFuZCBsMiA9IHN0cmluZ19sZW5ndGggczIgaW5cbiAgbGV0IHMgPSBieXRlc19jcmVhdGUgKGwxICsgbDIpIGluXG4gIHN0cmluZ19ibGl0IHMxIDAgcyAwIGwxO1xuICBzdHJpbmdfYmxpdCBzMiAwIHMgbDEgbDI7XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBDaGFyICopXG5cbmV4dGVybmFsIGludF9vZl9jaGFyIDogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB1bnNhZmVfY2hhcl9vZl9pbnQgOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcbmxldCBjaGFyX29mX2ludCBuID1cbiAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuIGludmFsaWRfYXJnIFwiY2hhcl9vZl9pbnRcIiBlbHNlIHVuc2FmZV9jaGFyX29mX2ludCBuXG5cbigqIFVuaXQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogUGFpciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGZzdCA6ICdhICogJ2IgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgc25kIDogJ2EgKiAnYiAtPiAnYiA9IFwiJWZpZWxkMVwiXG5cbigqIFJlZmVyZW5jZXMgKilcblxudHlwZSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG5cbigqIFJlc3VsdCB0eXBlICopXG5cbnR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbigqIFN0cmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbmxldCBzdHJpbmdfb2ZfYm9vbCBiID1cbiAgaWYgYiB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiXG5sZXQgYm9vbF9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiYm9vbF9vZl9zdHJpbmdcIlxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiBTb21lIHRydWVcbiAgfCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgc3RyaW5nX29mX2ludCBuID1cbiAgZm9ybWF0X2ludCBcIiVkXCIgblxuXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuZXh0ZXJuYWwgc3RyaW5nX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5cbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBzdHJpbmdfbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gbCB0aGVuIHMgXiBcIi5cIiBlbHNlXG4gICAgbWF0Y2ggc3RyaW5nX2dldCBzIGkgd2l0aFxuICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICB8IF8gLT4gc1xuICBpblxuICBsb29wIDBcblxubGV0IHN0cmluZ19vZl9mbG9hdCBmID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgZilcblxuZXh0ZXJuYWwgZmxvYXRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBwcm92aWRlIHRoaXMgZGlyZWN0bHkgYXMgYSBub24tcmFpc2luZyBwcmltaXRpdmUuICopXG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgTGlzdCAqKVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGgxIDo6IFtdIC0+IGgxIDo6IGwyXG4gIHwgaDEgOjogaDIgOjogW10gLT4gaDEgOjogaDIgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBoMyA6OiB0bCAtPiBoMSA6OiBoMiA6OiBoMyA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBEeW5hcnJheSAgICAgICA9IER5bmFycmF5XG5tb2R1bGUgRWZmZWN0ICAgICAgICAgPSBFZmZlY3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgICA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiAgICAgID0gRXBoZW1lcm9uXG5tb2R1bGUgRmlsZW5hbWUgICAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICAgID0gRmxvYXRcbm1vZHVsZSBGb3JtYXQgICAgICAgICA9IEZvcm1hdFxubW9kdWxlIEZ1biAgICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgICAgPSBHY1xubW9kdWxlIEhhc2h0YmwgICAgICAgID0gSGFzaHRibFxubW9kdWxlIEluX2NoYW5uZWwgICAgID0gSW5fY2hhbm5lbFxubW9kdWxlIEludCAgICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgICAgPSBJbnQzMlxubW9kdWxlIEludDY0ICAgICAgICAgID0gSW50NjRcbm1vZHVsZSBMYXp5ICAgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgICA9IExleGluZ1xubW9kdWxlIExpc3QgICAgICAgICAgID0gTGlzdFxubW9kdWxlIExpc3RMYWJlbHMgICAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICAgID0gTWFwXG5tb2R1bGUgTWFyc2hhbCAgICAgICAgPSBNYXJzaGFsXG5tb2R1bGUgTW9yZUxhYmVscyAgICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTXV0ZXggICAgICAgICAgPSBNdXRleFxubW9kdWxlIE5hdGl2ZWludCAgICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgICAgPSBPYmpcbm1vZHVsZSBPbyAgICAgICAgICAgICA9IE9vXG5tb2R1bGUgT3B0aW9uICAgICAgICAgPSBPcHRpb25cbm1vZHVsZSBPdXRfY2hhbm5lbCAgICA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGFyc2luZyAgICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUHJpbnRleGMgICAgICAgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiAgICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgICAgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSAgICAgICAgID0gUmFuZG9tXG5tb2R1bGUgUmVzdWx0ICAgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgICA9IFNjYW5mXG5tb2R1bGUgU2VtYXBob3JlICAgICAgPSBTZW1hcGhvcmVcbm1vZHVsZSBTZXEgICAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICAgID0gU2V0XG5tb2R1bGUgU3RhY2sgICAgICAgICAgPSBTdGFja1xubW9kdWxlIFN0ZExhYmVscyAgICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyaW5nICAgICAgICAgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdMYWJlbHMgICA9IFN0cmluZ0xhYmVsc1xubW9kdWxlIFN5cyAgICAgICAgICAgID0gU3lzXG5tb2R1bGUgVHlwZSAgICAgICAgICAgPSBUeXBlXG5tb2R1bGUgVWNoYXIgICAgICAgICAgPSBVY2hhclxubW9kdWxlIFVuaXQgICAgICAgICAgID0gVW5pdFxubW9kdWxlIFdlYWsgICAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCogQGNvbmZpZ3VyZV9pbnB1dEAgKilcbiMzIFwic3lzLm1sLmluXCJcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG4oKiBTeXN0ZW0gaW50ZXJmYWNlICopXG5cbmV4dGVybmFsIGdldF9jb25maWc6IHVuaXQgLT4gc3RyaW5nICogaW50ICogYm9vbCA9IFwiY2FtbF9zeXNfZ2V0X2NvbmZpZ1wiXG5leHRlcm5hbCBnZXRfZXhlY3V0YWJsZV9uYW1lIDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZVwiXG5leHRlcm5hbCBhcmd2IDogc3RyaW5nIGFycmF5ID0gXCIlc3lzX2FyZ3ZcIlxuZXh0ZXJuYWwgYmlnX2VuZGlhbiA6IHVuaXQgLT4gYm9vbCA9IFwiJWJpZ19lbmRpYW5cIlxuZXh0ZXJuYWwgd29yZF9zaXplIDogdW5pdCAtPiBpbnQgPSBcIiV3b3JkX3NpemVcIlxuZXh0ZXJuYWwgaW50X3NpemUgOiB1bml0IC0+IGludCA9IFwiJWludF9zaXplXCJcbmV4dGVybmFsIG1heF93b3NpemUgOiB1bml0IC0+IGludCA9IFwiJW1heF93b3NpemVcIlxuZXh0ZXJuYWwgdW5peCA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV91bml4XCJcbmV4dGVybmFsIHdpbjMyIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3dpbjMyXCJcbmV4dGVybmFsIGN5Z3dpbiA6IHVuaXQgLT4gYm9vbCA9IFwiJW9zdHlwZV9jeWd3aW5cIlxuZXh0ZXJuYWwgZ2V0X2JhY2tlbmRfdHlwZSA6IHVuaXQgLT4gYmFja2VuZF90eXBlID0gXCIlYmFja2VuZF90eXBlXCJcblxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGdldF9leGVjdXRhYmxlX25hbWUoKVxubGV0IChvc190eXBlLCBfLCBfKSA9IGdldF9jb25maWcoKVxubGV0IGJhY2tlbmRfdHlwZSA9IGdldF9iYWNrZW5kX3R5cGUgKClcbmxldCBiaWdfZW5kaWFuID0gYmlnX2VuZGlhbiAoKVxubGV0IHdvcmRfc2l6ZSA9IHdvcmRfc2l6ZSAoKVxubGV0IGludF9zaXplID0gaW50X3NpemUgKClcbmxldCB1bml4ID0gdW5peCAoKVxubGV0IHdpbjMyID0gd2luMzIgKClcbmxldCBjeWd3aW4gPSBjeWd3aW4gKClcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gbWF4X3dvc2l6ZSAoKVxubGV0IG1heF9mbG9hdGFycmF5X2xlbmd0aCA9IG1heF9hcnJheV9sZW5ndGggLyAoNjQgLyB3b3JkX3NpemUpXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDFcbmV4dGVybmFsIHJ1bnRpbWVfdmFyaWFudCA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfdmFyaWFudFwiXG5leHRlcm5hbCBydW50aW1lX3BhcmFtZXRlcnMgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcIlxuXG5leHRlcm5hbCBmaWxlX2V4aXN0czogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2ZpbGVfZXhpc3RzXCJcbmV4dGVybmFsIGlzX2RpcmVjdG9yeSA6IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N5c19pc19kaXJlY3RvcnlcIlxuZXh0ZXJuYWwgaXNfcmVndWxhcl9maWxlIDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdGFycmF5X2dldFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X3NldCA6XG4gICAgZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiY2FtbF9mbG9hdGFycmF5X3NldFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBkb3VibGVfZmllbGQgeCBpID0gZmxvYXRhcnJheV9nZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaVxubGV0IFtAaW5saW5lIGFsd2F5c10gc2V0X2RvdWJsZV9maWVsZCB4IGkgdiA9XG4gIGZsb2F0YXJyYXlfc2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGkgdlxuZXh0ZXJuYWwgcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgPSBcImNhbWxfb2JqX3Jhd19maWVsZFwiXG5leHRlcm5hbCBzZXRfcmF3X2ZpZWxkIDogdCAtPiBpbnQgLT4gcmF3X2RhdGEgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfb2JqX3NldF9yYXdfZmllbGRcIlxuXG5leHRlcm5hbCBuZXdfYmxvY2sgOiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfb2JqX2Jsb2NrXCJcbmV4dGVybmFsIGR1cCA6IHQgLT4gdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGFkZF9vZmZzZXQgOiB0IC0+IEludDMyLnQgLT4gdCA9IFwiY2FtbF9vYmpfYWRkX29mZnNldFwiXG5leHRlcm5hbCB3aXRoX3RhZyA6IGludCAtPiB0IC0+IHQgPSBcImNhbWxfb2JqX3dpdGhfdGFnXCJcblxubGV0IGZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAwXG5sZXQgbGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMjQzXG5cbmxldCBmb3JjaW5nX3RhZyA9IDI0NFxubGV0IGNvbnRfdGFnID0gMjQ1XG5sZXQgbGF6eV90YWcgPSAyNDZcbmxldCBjbG9zdXJlX3RhZyA9IDI0N1xubGV0IG9iamVjdF90YWcgPSAyNDhcbmxldCBpbmZpeF90YWcgPSAyNDlcbmxldCBmb3J3YXJkX3RhZyA9IDI1MFxuXG5sZXQgbm9fc2Nhbl90YWcgPSAyNTFcblxubGV0IGFic3RyYWN0X3RhZyA9IDI1MVxubGV0IHN0cmluZ190YWcgPSAyNTJcbmxldCBkb3VibGVfdGFnID0gMjUzXG5sZXQgZG91YmxlX2FycmF5X3RhZyA9IDI1NFxubGV0IGN1c3RvbV90YWcgPSAyNTVcblxuXG5sZXQgaW50X3RhZyA9IDEwMDBcbmxldCBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxXG5sZXQgdW5hbGlnbmVkX3RhZyA9IDEwMDJcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFR5cGUgZXF1YWxpdHkgd2l0bmVzcyAqKVxuXG50eXBlIChfLCBfKSBlcSA9IEVxdWFsOiAoJ2EsICdhKSBlcVxuXG4oKiBUeXBlIGlkZW50aWZpZXJzICopXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICB0eXBlIF8gaWQgPSAuLlxuICBtb2R1bGUgdHlwZSBJRCA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgXyBpZCArPSBJZCA6IHQgaWRcbiAgZW5kXG5cbiAgdHlwZSAhJ2EgdCA9IChtb2R1bGUgSUQgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgbWFrZSAodHlwZSBhKSAoKSA6IGEgdCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3QgdHlwZSB0ID0gYSB0eXBlIF8gaWQgKz0gSWQgOiB0IGlkIGVuZClcblxuICBsZXRbQGlubGluZV0gdWlkICh0eXBlIGEpICgobW9kdWxlIEEpIDogYSB0KSA9XG4gICAgT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgQS5JZClcblxuICBsZXQgcHJvdmFibHlfZXF1YWxcbiAgICAgICh0eXBlIGEgYikgKChtb2R1bGUgQSkgOiBhIHQpICgobW9kdWxlIEIpIDogYiB0KSA6IChhLCBiKSBlcSBvcHRpb25cbiAgICA9XG4gICAgbWF0Y2ggQS5JZCB3aXRoIEIuSWQgLT4gU29tZSBFcXVhbCB8IF8gLT4gTm9uZVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBtYWtlX2NvbnRlbmRlZCA6ICdhIC0+ICdhIHQgPSBcImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXCJcbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBleGNoYW5nZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgPSBcIiVhdG9taWNfZXhjaGFuZ2VcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc2V0IDogJ2EgdCAtPiAnYSAtPiAnYSAtPiBib29sID0gXCIlYXRvbWljX2Nhc1wiXG5leHRlcm5hbCBmZXRjaF9hbmRfYWRkIDogaW50IHQgLT4gaW50IC0+IGludCA9IFwiJWF0b21pY19mZXRjaF9hZGRcIlxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCBzZXQgciB4ID0gaWdub3JlIChleGNoYW5nZSByIHgpXG5sZXQgaW5jciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgMSlcbmxldCBkZWNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAoLTEpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbnRlcm5hbHMgb2YgZm9yY2luZyBsYXp5IHZhbHVlcy4gKilcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWRcblxuKCogW3VwZGF0ZV90b19mb3JjaW5nIGJsa10gdHJpZXMgdG8gdXBkYXRlIGEgW2Jsa10gd2l0aCBbbGF6eV90YWddIHRvXG4gICBbZm9yY2luZ190YWddIHVzaW5nIGNvbXBhcmUtYW5kLXN3YXAgKENBUyksIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoZSBoZWFkZXIgd29yZCBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiBSZXR1cm5zIFswXSBpZiB0aGVcbiAgIENBUyBpcyBzdWNjZXNzZnVsLiBJZiB0aGUgQ0FTIGZhaWxzLCB0aGVuIHRoZSB0YWcgd2FzIG9ic2VydmVkIHRvIGJlXG4gICBzb21ldGhpbmcgb3RoZXIgdGhhbiBbbGF6eV90YWddIGR1ZSB0byBhIGNvbmN1cnJlbnQgbXV0YXRvci4gSW4gdGhpcyBjYXNlLFxuICAgdGhlIGZ1bmN0aW9uIHJldHVybnMgWzFdLiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcmNpbmcgOiBPYmoudCAtPiBpbnQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZ1wiIFtAQG5vYWxsb2NdXG5cbigqIFtyZXNldF90b19sYXp5IGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGggW09iai5mb3JjaW5nX3RhZ11cbiAgIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5sYXp5X3RhZ10sIHRha2luZyBjYXJlIHRvIGhhbmRsZSBjb25jdXJyZW50XG4gICBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuICopXG5leHRlcm5hbCByZXNldF90b19sYXp5IDogT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenlcIiBbQEBub2FsbG9jXVxuXG4oKiBbdXBkYXRlX3RvX2ZvcndhcmQgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aFxuICAgW09iai5mb3JjaW5nX3RhZ10gYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmZvcndhcmRfdGFnXSwgdGFraW5nIGNhcmUgdG9cbiAgIGhhbmRsZSBjb25jdXJyZW50IG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC5cbiAqKVxuZXh0ZXJuYWwgdXBkYXRlX3RvX2ZvcndhcmQgOiBPYmoudCAtPiB1bml0ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcIiBbQEBub2FsbG9jXVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIHRyeVxuICAgIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgICByZXN1bHRcbiAgd2l0aCBlIC0+XG4gICAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIChmdW4gKCkgLT4gcmFpc2UgZSkpO1xuICAgIHJlc2V0X3RvX2xhenkgYjtcbiAgICByYWlzZSBlXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfdmFsX2Jsb2NrIGJsayA9XG4gIGxldCBiID0gT2JqLnJlcHIgYmxrIGluXG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCBiIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKCkpOyAoKiBSZWxlYXNlIHRoZSBjbG9zdXJlICopXG4gIGxldCByZXN1bHQgPSBjbG9zdXJlICgpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICByZXN1bHRcblxuKCogQ2FsbGVkIGJ5IFtmb3JjZV9nZW5dICopXG5sZXQgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIChibGsgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBXZSBleHBlY3QgdGhlIHRhZyB0byBiZSBbbGF6eV90YWddLCBidXQgbWF5IGJlIG90aGVyIHRhZ3MgZHVlIHRvXG4gICAgIGNvbmN1cnJlbnQgZm9yY2luZyBvZiBsYXp5IHZhbHVlcy4gKilcbiAgbWF0Y2ggdXBkYXRlX3RvX2ZvcmNpbmcgKE9iai5yZXByIGJsaykgd2l0aFxuICB8IDAgd2hlbiBvbmx5X3ZhbCAtPiBkb19mb3JjZV92YWxfYmxvY2sgYmxrXG4gIHwgMCAtPiBkb19mb3JjZV9ibG9jayBibGtcbiAgfCBfIC0+IHJhaXNlIFVuZGVmaW5lZFxuXG4oKiB1c2VkIGluIHRoZSAlbGF6eV9mb3JjZSBwcmltaXRpdmUgKilcbmxldCBmb3JjZV9sYXp5X2Jsb2NrIGJsayA9IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbDpmYWxzZSBibGtcblxuKCogW2ZvcmNlX2dlbiB+b25seV92YWw6ZmFsc2VdIGlzIG5vdCB1c2VkLCBzaW5jZSBbTGF6eS5mb3JjZV0gaXNcbiAgIGRlY2xhcmVkIGFzIGEgcHJpbWl0aXZlIHdob3NlIGNvZGUgaW5saW5lcyB0aGUgdGFnIHRlc3RzIG9mIGl0c1xuICAgYXJndW1lbnQsIGV4Y2VwdCB3aGVuIGFmbCBpbnN0cnVtZW50YXRpb24gaXMgdHVybmVkIG9uLiAqKVxubGV0IGZvcmNlX2dlbiB+b25seV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFVzaW5nIFtTeXMub3BhcXVlX2lkZW50aXR5XSBwcmV2ZW50cyB0d28gcG90ZW50aWFsIHByb2JsZW1zOlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLCB0aGVuIGl0IGNvdWxkIGhhdmUgYmVlblxuICAgICAgIHNob3J0Y3V0IGR1cmluZyBHQywgc28gdGhhdCBpbmZvcm1hdGlvbiBtdXN0IGJlIGZvcmdvdHRlbiAoc2VlIEdQUiM3MTNcbiAgICAgICBhbmQgaXNzdWUgIzczMDEpLiBUaGlzIGlzIG5vdCBhbiBpc3N1ZSBoZXJlIGF0IHRoZSBtb21lbnQgc2luY2VcbiAgICAgICBbT2JqLnRhZ10gaXMgbm90IHNpbXBsaWZpZWQgYnkgdGhlIGNvbXBpbGVyLCBhbmQgR1BSIzcxMyBhbHNvXG4gICAgICAgZW5zdXJlcyB0aGF0IG5vIHZhbHVlIHdpbGwgYmUga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZy5cbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgaW1tdXRhYmxlLCB0aGVuIGlmIHRoZSBjb21waWxlclxuICAgICAgIGNhbm5vdCBwcm92ZSB0aGF0IHRoZSBsYXN0IGJyYW5jaCBpcyBub3QgdGFrZW4gaXQgd2lsbCBpc3N1ZSBhXG4gICAgICAgd2FybmluZyA1OSAobW9kaWZpY2F0aW9uIG9mIGFuIGltbXV0YWJsZSB2YWx1ZSkgKilcbiAgbGV0IGx6diA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgbHp2IGluXG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gICgqIFNUQVJUIG5vIHNhZmUgcG9pbnRzLiBJZiBhIEdDIG9jY3VycyBoZXJlLCB0aGVuIHRoZSBvYmplY3QgW3hdIG1heSBiZVxuICAgICBzaG9ydC1jaXJjdWl0ZWQsIGFuZCBnZXR0aW5nIHRoZSBmaXJzdCBmaWVsZCBvZiBbeF0gd291bGQgZ2V0IHVzIHRoZSB3cm9uZ1xuICAgICB2YWx1ZS4gTHVja2lseSwgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGluc2VydCBHQyBzYWZlIHBvaW50cyBhdCB0aGlzIHBsYWNlLFxuICAgICBzbyBpdCBpcyBvay4gKilcbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuXG4gICAgKE9iai5vYmogKE9iai5maWVsZCB4IDApIDogJ2FyZylcbiAgKCogRU5EIG5vIHNhZmUgcG9pbnRzICopXG4gIGVsc2UgaWYgdCA9IE9iai5mb3JjaW5nX3RhZyB0aGVuIHJhaXNlIFVuZGVmaW5lZFxuICBlbHNlIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsIGx6dlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0xhenldOiBkZWZlcnJlZCBjb21wdXRhdGlvbnMgKilcblxuXG4oKlxuICAgV0FSTklORzogc29tZSBwdXJwbGUgbWFnaWMgaXMgZ29pbmcgb24gaGVyZS4gIERvIG5vdCB0YWtlIHRoaXMgZmlsZVxuICAgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcHJvZ3JhbSBpbiBPQ2FtbC5cbiopXG5cblxuKCogV2UgbWFrZSB1c2Ugb2YgdHdvIHNwZWNpYWwgdGFncyBwcm92aWRlZCBieSB0aGUgcnVudGltZTpcbiAgIFtsYXp5X3RhZ10gYW5kIFtmb3J3YXJkX3RhZ10uXG5cbiAgIEEgdmFsdWUgb2YgdHlwZSBbJ2EgTGF6eS50XSBjYW4gYmUgb25lIG9mIHRocmVlIHRoaW5nczpcbiAgIDEuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtsYXp5X3RhZ10uICBJdHMgZmllbGQgaXMgYSBjbG9zdXJlIG9mXG4gICAgICB0eXBlIFt1bml0IC0+ICdhXSB0aGF0IGNvbXB1dGVzIHRoZSB2YWx1ZS5cbiAgIDIuIEEgYmxvY2sgb2Ygc2l6ZSAxIHdpdGggdGFnIFtmb3J3YXJkX3RhZ10uICBJdHMgZmllbGQgaXMgdGhlIHZhbHVlXG4gICAgICBvZiB0eXBlIFsnYV0gdGhhdCB3YXMgY29tcHV0ZWQuXG4gICAzLiBBbnl0aGluZyBlbHNlIGV4Y2VwdCBhIGZsb2F0LiAgVGhpcyBoYXMgdHlwZSBbJ2FdIGFuZCBpcyB0aGUgdmFsdWVcbiAgICAgIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgRXhjZXB0aW9ucyBhcmUgc3RvcmVkIGluIGZvcm1hdCAoMSkuXG4gICBUaGUgR0Mgd2lsbCBtYWdpY2FsbHkgY2hhbmdlIHRoaW5ncyBmcm9tICgyKSB0byAoMykgYWNjb3JkaW5nIHRvIGl0c1xuICAgZmFuY3kuXG5cbiAgIElmIE9DYW1sIHdhcyBjb25maWd1cmVkIHdpdGggdGhlIC1mbGF0LWZsb2F0LWFycmF5IG9wdGlvbiAod2hpY2ggaXNcbiAgIGN1cnJlbnRseSB0aGUgZGVmYXVsdCksIHRoZSBmb2xsb3dpbmcgaXMgYWxzbyB0cnVlOlxuICAgV2UgY2Fubm90IHVzZSByZXByZXNlbnRhdGlvbiAoMykgZm9yIGEgW2Zsb2F0IExhenkudF0gYmVjYXVzZVxuICAgW2NhbWxfbWFrZV9hcnJheV0gYXNzdW1lcyB0aGF0IG9ubHkgYSBbZmxvYXRdIHZhbHVlIGNhbiBoYXZlIHRhZ1xuICAgW0RvdWJsZV90YWddLlxuXG4gICBXZSBoYXZlIHRvIHVzZSB0aGUgYnVpbHQtaW4gdHlwZSBjb25zdHJ1Y3RvciBbbGF6eV90XSB0b1xuICAgbGV0IHRoZSBjb21waWxlciBpbXBsZW1lbnQgdGhlIHNwZWNpYWwgdHlwaW5nIGFuZCBjb21waWxhdGlvblxuICAgcnVsZXMgZm9yIHRoZSBbbGF6eV0ga2V5d29yZC5cbiopXG5cbnR5cGUgJ2EgdCA9ICdhIENhbWxpbnRlcm5hbExhenkudFxuXG5leGNlcHRpb24gVW5kZWZpbmVkID0gQ2FtbGludGVybmFsTGF6eS5VbmRlZmluZWRcbmV4dGVybmFsIG1ha2VfZm9yd2FyZCA6ICdhIC0+ICdhIGxhenlfdCA9IFwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZFwiXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxubGV0IGZvcmNlX3ZhbCBsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV9nZW4gfm9ubHlfdmFsOnRydWUgbFxuXG5sZXQgZnJvbV9mdW4gKGYgOiB1bml0IC0+ICdhcmcpID1cbiAgbGV0IHggPSBPYmoubmV3X2Jsb2NrIE9iai5sYXp5X3RhZyAxIGluXG4gIE9iai5zZXRfZmllbGQgeCAwIChPYmoucmVwciBmKTtcbiAgKE9iai5vYmogeCA6ICdhcmcgdClcblxubGV0IGZyb21fdmFsICh2IDogJ2FyZykgPVxuICBsZXQgdCA9IE9iai50YWcgKE9iai5yZXByIHYpIGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgfHwgdCA9IE9iai5sYXp5X3RhZyB8fFxuICAgICB0ID0gT2JqLmZvcmNpbmdfdGFnIHx8IHQgPSBPYmouZG91YmxlX3RhZyB0aGVuIGJlZ2luXG4gICAgbWFrZV9mb3J3YXJkIHZcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICAoT2JqLm1hZ2ljIHYgOiAnYXJnIHQpXG4gIGVuZFxuXG5sZXQgaXNfdmFsIChsIDogJ2FyZyB0KSA9IE9iai50YWcgKE9iai5yZXByIGwpIDw+IE9iai5sYXp5X3RhZ1xuXG5sZXQgbWFwIGYgeCA9XG4gIGxhenkgKGYgKGZvcmNlIHgpKVxuXG5sZXQgbWFwX3ZhbCBmIHggPVxuICBpZiBpc192YWwgeFxuICB0aGVuIGZyb21fdmFsIChmIChmb3JjZSB4KSlcbiAgZWxzZSBsYXp5IChmIChmb3JjZSB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTaW1vbiBDcnVhbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtTZXFdOiBmdW5jdGlvbmFsIGl0ZXJhdG9ycyAqKVxuXG50eXBlICsnYSBub2RlID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZVxuXG5sZXQgZW1wdHkgKCkgPSBOaWxcblxubGV0IHJldHVybiB4ICgpID0gQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggbmV4dCAoKSA9IENvbnMgKHgsIG5leHQpXG5cbmxldCByZWMgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIG1hdGNoIHNlcTEoKSB3aXRoXG4gIHwgTmlsIC0+IHNlcTIoKVxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKHgsIGFwcGVuZCBuZXh0IHNlcTIpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zIChmIHgsIG1hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyX21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgICB8IFNvbWUgeSAtPiBDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXIgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBpZiBmIHhcbiAgICAgIHRoZW4gQ29ucyAoeCwgZmlsdGVyIGYgbmV4dClcbiAgICAgIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGNvbmNhdCBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICBhcHBlbmQgeCAoY29uY2F0IG5leHQpICgpXG5cbmxldCByZWMgZmxhdF9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGFwcGVuZCAoZiB4KSAoZmxhdF9tYXAgZiBuZXh0KSAoKVxuXG5sZXQgY29uY2F0X21hcCA9IGZsYXRfbWFwXG5cbmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBmb2xkX2xlZnQgZiBhY2MgbmV4dFxuXG5sZXQgcmVjIGl0ZXIgZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBmIHg7XG4gICAgICAgIGl0ZXIgZiBuZXh0XG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG5cbmxldCBpc19lbXB0eSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKF8sIF8pIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgdW5jb25zIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBTb21lICh4LCB4cylcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcblxuXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBhY2N1IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoXywgeHMpIC0+XG4gICAgICBsZW5ndGhfYXV4IChhY2N1ICsgMSkgeHNcblxubGV0W0BpbmxpbmVdIGxlbmd0aCB4cyA9XG4gIGxlbmd0aF9hdXggMCB4c1xuXG5sZXQgcmVjIGl0ZXJpX2F1eCBmIGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgICgpXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBmIGkgeDtcbiAgICAgIGl0ZXJpX2F1eCBmIChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBpdGVyaSBmIHhzID1cbiAgaXRlcmlfYXV4IGYgMCB4c1xuXG5sZXQgcmVjIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBhY2N1XG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBpIHggaW5cbiAgICAgIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gZm9sZF9sZWZ0aSBmIGFjY3UgeHMgPVxuICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgMCB4c1xuXG5sZXQgcmVjIGZvcl9hbGwgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4ICYmIGZvcl9hbGwgcCB4c1xuXG5sZXQgcmVjIGV4aXN0cyBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgcCB4IHx8IGV4aXN0cyBwIHhzXG5cbmxldCByZWMgZmluZCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kIHAgeHNcblxubGV0IGZpbmRfaW5kZXggcCB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIHhzIGluXG4gIGF1eCAwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG5sZXQgZmluZF9tYXBpIGYgeHMgPVxuICBsZXQgcmVjIGF1eCBpIHhzID0gbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBhdXggKGkrMSkgeHNcbiAgICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgICByZXN1bHQgaW5cbiAgYXV4IDAgeHNcblxuKCogW2l0ZXIyXSwgW2ZvbGRfbGVmdDJdLCBbZm9yX2FsbDJdLCBbZXhpc3RzMl0sIFttYXAyXSwgW3ppcF0gd29yayBhbHNvIGluXG4gICB0aGUgY2FzZSB3aGVyZSB0aGUgdHdvIHNlcXVlbmNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzLiBUaGV5IHN0b3AgYXMgc29vblxuICAgYXMgb25lIHNlcXVlbmNlIGlzIGV4aGF1c3RlZC4gVGhlaXIgYmVoYXZpb3IgaXMgc2xpZ2h0bHkgYXN5bW1ldHJpYzogd2hlblxuICAgW3hzXSBpcyBlbXB0eSwgdGhleSBkbyBub3QgZm9yY2UgW3lzXTsgaG93ZXZlciwgd2hlbiBbeXNdIGlzIGVtcHR5LCBbeHNdIGlzXG4gICBmb3JjZWQsIGV2ZW4gdGhvdWdoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGFwcGxpY2F0aW9uIFt4cygpXSB0dXJucyBvdXRcbiAgIHRvIGJlIHVzZWxlc3MuICopXG5cbmxldCByZWMgaXRlcjIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeTtcbiAgICAgICAgICBpdGVyMiBmIHhzIHlzXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBhY2N1XG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGxldCBhY2N1ID0gZiBhY2N1IHggeSBpblxuICAgICAgICAgIGZvbGRfbGVmdDIgZiBhY2N1IHhzIHlzXG5cbmxldCByZWMgZm9yX2FsbDIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgZiB4IHkgJiYgZm9yX2FsbDIgZiB4cyB5c1xuXG5sZXQgcmVjIGV4aXN0czIgZiB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIHlzKCkgd2l0aFxuICAgICAgfCBOaWwgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSB8fCBleGlzdHMyIGYgeHMgeXNcblxubGV0IHJlYyBlcXVhbCBlcSB4cyB5cyA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICB8IE5pbCwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpLCBDb25zICh5LCB5cykgLT5cbiAgICAgIGVxIHggeSAmJiBlcXVhbCBlcSB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXylcbiAgfCBDb25zIChfLCBfKSwgTmlsIC0+XG4gICAgICBmYWxzZVxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIDBcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgbGV0IGMgPSBjbXAgeCB5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY29tcGFyZSBjbXAgeHMgeXNcbiAgfCBOaWwsIENvbnMgKF8sIF8pIC0+XG4gICAgICAtMVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgICsxXG5cblxuXG4oKiBbaW5pdF9hdXggZiBpIGpdIGlzIHRoZSBzZXF1ZW5jZSBbZiBpLCAuLi4sIGYgKGotMSldLiAqKVxuXG5sZXQgcmVjIGluaXRfYXV4IGYgaSBqICgpID1cbiAgaWYgaSA8IGogdGhlbiBiZWdpblxuICAgIENvbnMgKGYgaSwgaW5pdF9hdXggZiAoaSArIDEpIGopXG4gIGVuZFxuICBlbHNlXG4gICAgTmlsXG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlNlcS5pbml0XCJcbiAgZWxzZVxuICAgIGluaXRfYXV4IGYgMCBuXG5cbmxldCByZWMgcmVwZWF0IHggKCkgPVxuICBDb25zICh4LCByZXBlYXQgeClcblxubGV0IHJlYyBmb3JldmVyIGYgKCkgPVxuICBDb25zIChmKCksIGZvcmV2ZXIgZilcblxuKCogVGhpcyBwcmVsaW1pbmFyeSBkZWZpbml0aW9uIG9mIFtjeWNsZV0gcmVxdWlyZXMgdGhlIHNlcXVlbmNlIFt4c11cbiAgIHRvIGJlIG5vbmVtcHR5LiBBcHBseWluZyBpdCB0byBhbiBlbXB0eSBzZXF1ZW5jZSB3b3VsZCBwcm9kdWNlIGFcbiAgIHNlcXVlbmNlIHRoYXQgZGl2ZXJnZXMgd2hlbiBpdCBpcyBmb3JjZWQuICopXG5cbmxldCByZWMgY3ljbGVfbm9uZW1wdHkgeHMgKCkgPVxuICBhcHBlbmQgeHMgKGN5Y2xlX25vbmVtcHR5IHhzKSAoKVxuXG4oKiBbY3ljbGUgeHNdIGNoZWNrcyB3aGV0aGVyIFt4c10gaXMgZW1wdHkgYW5kLCBpZiBzbywgcmV0dXJucyBhbiBlbXB0eVxuICAgc2VxdWVuY2UuIE90aGVyd2lzZSwgW2N5Y2xlIHhzXSBwcm9kdWNlcyBvbmUgY29weSBvZiBbeHNdIGZvbGxvd2VkXG4gICB3aXRoIHRoZSBpbmZpbml0ZSBzZXF1ZW5jZSBbY3ljbGVfbm9uZW1wdHkgeHNdLiBUaHVzLCB0aGUgbm9uZW1wdGluZXNzXG4gICBjaGVjayBpcyBwZXJmb3JtZWQganVzdCBvbmNlLiAqKVxuXG5sZXQgY3ljbGUgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzJykgLT5cbiAgICAgIENvbnMgKHgsIGFwcGVuZCB4cycgKGN5Y2xlX25vbmVtcHR5IHhzKSlcblxuKCogW2l0ZXJhdGUxIGYgeF0gaXMgdGhlIHNlcXVlbmNlIFtmIHgsIGYgKGYgeCksIC4uLl0uXG4gICBJdCBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChpdGVyYXRlIGYgeCldLlxuICAgW2l0ZXJhdGUxXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIGl0ZXJhdGUxIGYgeCAoKSA9XG4gIGxldCB5ID0gZiB4IGluXG4gIENvbnMgKHksIGl0ZXJhdGUxIGYgeSlcblxuKCogW2l0ZXJhdGUgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW3gsIGYgeCwgLi4uXS4gKilcblxuKCogVGhlIHJlYXNvbiB3aHkgd2UgZ2l2ZSB0aGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW2l0ZXJhdGVdLFxuICAgYXMgb3Bwb3NlZCB0byB0aGUgbW9yZSBuYWl2ZSBkZWZpbml0aW9uIHRoYXQgbWF5IGNvbWUgdG8gbWluZCwgaXMgdGhhdFxuICAgd2UgYXJlIGNhcmVmdWwgdG8gYXZvaWQgZXZhbHVhdGluZyBbZiB4XSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXNcbiAgIGFjdHVhbGx5IG5lY2Vzc2FyeS4gVGhlIG5haXZlIGRlZmluaXRpb24gKG5vdCBzaG93biBoZXJlKSBjb21wdXRlcyB0aGVcbiAgIHNlY29uZCBhcmd1bWVudCBvZiB0aGUgc2VxdWVuY2UsIFtmIHhdLCB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpc1xuICAgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAqKVxuXG5sZXQgaXRlcmF0ZSBmIHggPVxuICBjb25zIHggKGl0ZXJhdGUxIGYgeClcblxuXG5cbmxldCByZWMgbWFwaV9hdXggZiBpIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKGYgaSB4LCBtYXBpX2F1eCBmIChpKzEpIHhzKVxuXG5sZXRbQGlubGluZV0gbWFwaSBmIHhzID1cbiAgbWFwaV9hdXggZiAwIHhzXG5cbigqIFt0YWlsX3NjYW4gZiBzIHhzXSBpcyBlcXVpdmFsZW50IHRvIFt0YWlsIChzY2FuIGYgcyB4cyldLlxuICAgW3RhaWxfc2Nhbl0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtzY2FuXS4gKilcblxuKCogVGhpcyBzbGlnaHRseSBpbmRpcmVjdCBkZWZpbml0aW9uIG9mIFtzY2FuXSBpcyBtZWFudCB0byBhdm9pZCBjb21wdXRpbmdcbiAgIGVsZW1lbnRzIHRvbyBlYXJseTsgc2VlIHRoZSBhYm92ZSBjb21tZW50IGFib3V0IFtpdGVyYXRlMV0gYW5kIFtpdGVyYXRlXS4gKilcblxubGV0IHJlYyB0YWlsX3NjYW4gZiBzIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBzID0gZiBzIHggaW5cbiAgICAgIENvbnMgKHMsIHRhaWxfc2NhbiBmIHMgeHMpXG5cbmxldCBzY2FuIGYgcyB4cyA9XG4gIGNvbnMgcyAodGFpbF9zY2FuIGYgcyB4cylcblxuKCogW3Rha2VdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFt0YWtlIDAgeHNdIHJldHVybnMgW2VtcHR5XVxuICAgaW1tZWRpYXRlbHksIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgcmVjIHRha2VfYXV4IG4geHMgPVxuICBpZiBuID0gMCB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgICBDb25zICh4LCB0YWtlX2F1eCAobi0xKSB4cylcblxubGV0IHRha2UgbiB4cyA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTZXEudGFrZVwiO1xuICB0YWtlX2F1eCBuIHhzXG5cbigqIFtmb3JjZV9kcm9wIG4geHNdIGlzIGVxdWl2YWxlbnQgdG8gW2Ryb3AgbiB4cyAoKV0uXG4gICBbZm9yY2VfZHJvcCBuIHhzXSByZXF1aXJlcyBbbiA+IDBdLlxuICAgW2ZvcmNlX2Ryb3BdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbZHJvcF0uICopXG5cbmxldCByZWMgZm9yY2VfZHJvcCBuIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxldCBuID0gbiAtIDEgaW5cbiAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgeHMoKVxuICAgICAgZWxzZVxuICAgICAgICBmb3JjZV9kcm9wIG4geHNcblxuKCogW2Ryb3BdIGlzIGRlZmluZWQgaW4gc3VjaCBhIHdheSB0aGF0IFtkcm9wIDAgeHNdIHJldHVybnMgW3hzXSBpbW1lZGlhdGVseSxcbiAgIHdpdGhvdXQgYWxsb2NhdGluZyBhbnkgbWVtb3J5LiAqKVxuXG5sZXQgZHJvcCBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS5kcm9wXCJcbiAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgeHNcbiAgZWxzZVxuICAgIGZ1biAoKSAtPlxuICAgICAgZm9yY2VfZHJvcCBuIHhzXG5cbmxldCByZWMgdGFrZV93aGlsZSBwIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIENvbnMgKHgsIHRha2Vfd2hpbGUgcCB4cykgZWxzZSBOaWxcblxubGV0IHJlYyBkcm9wX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSBhcyBub2RlIC0+XG4gICAgICBpZiBwIHggdGhlbiBkcm9wX3doaWxlIHAgeHMgKCkgZWxzZSBub2RlXG5cbmxldCByZWMgZ3JvdXAgZXEgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoY29ucyB4ICh0YWtlX3doaWxlIChlcSB4KSB4cyksIGdyb3VwIGVxIChkcm9wX3doaWxlIChlcSB4KSB4cykpXG5cbmV4Y2VwdGlvbiBGb3JjZWRfdHdpY2VcblxubW9kdWxlIFN1c3BlbnNpb24gPSBzdHJ1Y3RcblxuICB0eXBlICdhIHN1c3BlbnNpb24gPVxuICAgIHVuaXQgLT4gJ2FcblxuICAoKiBDb252ZXJzaW9ucy4gKilcblxuICBsZXQgdG9fbGF6eSA6ICdhIHN1c3BlbnNpb24gLT4gJ2EgTGF6eS50ID1cbiAgICBMYXp5LmZyb21fZnVuXG4gICAgKCogZnVuIHMgLT4gbGF6eSAocygpKSAqKVxuXG4gIGxldCBmcm9tX2xhenkgKHMgOiAnYSBMYXp5LnQpIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+IExhenkuZm9yY2Ugc1xuXG4gICgqIFttZW1vaXplXSB0dXJucyBhbiBhcmJpdHJhcnkgc3VzcGVuc2lvbiBpbnRvIGEgcGVyc2lzdGVudCBzdXNwZW5zaW9uLiAqKVxuXG4gIGxldCBtZW1vaXplIChzIDogJ2Egc3VzcGVuc2lvbikgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmcm9tX2xhenkgKHRvX2xhenkgcylcblxuICAoKiBbZmFpbHVyZV0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgZmFpbHMgd2hlbiBmb3JjZWQuICopXG5cbiAgbGV0IGZhaWx1cmUgOiBfIHN1c3BlbnNpb24gPVxuICAgIGZ1biAoKSAtPlxuICAgICAgKCogQSBzdXNwZW5zaW9uIGNyZWF0ZWQgYnkgW29uY2VdIGhhcyBiZWVuIGZvcmNlZCB0d2ljZS4gKilcbiAgICAgIHJhaXNlIEZvcmNlZF90d2ljZVxuXG4gICgqIElmIFtmXSBpcyBhIHN1c3BlbnNpb24sIHRoZW4gW29uY2UgZl0gaXMgYSBzdXNwZW5zaW9uIHRoYXQgY2FuIGJlIGZvcmNlZFxuICAgICBhdCBtb3N0IG9uY2UuIElmIGl0IGlzIGZvcmNlZCBtb3JlIHRoYW4gb25jZSwgdGhlbiBbRm9yY2VkX3R3aWNlXSBpc1xuICAgICByYWlzZWQuICopXG5cbiAgbGV0IG9uY2UgKGYgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGxldCBhY3Rpb24gPSBBdG9taWMubWFrZSBmIGluXG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBHZXQgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBzdG9yZWQgaW4gW2FjdGlvbl0sIGFuZCB3cml0ZSB0aGVcbiAgICAgICAgIGZ1bmN0aW9uIFtmYWlsdXJlXSBpbiBpdHMgcGxhY2UsIHNvIHRoZSBuZXh0IGFjY2VzcyB3aWxsIHJlc3VsdFxuICAgICAgICAgaW4gYSBjYWxsIHRvIFtmYWlsdXJlKCldLiAqKVxuICAgICAgbGV0IGYgPSBBdG9taWMuZXhjaGFuZ2UgYWN0aW9uIGZhaWx1cmUgaW5cbiAgICAgIGYoKVxuXG5lbmQgKCogU3VzcGVuc2lvbiAqKVxuXG5sZXQgcmVjIG1lbW9pemUgeHMgPVxuICBTdXNwZW5zaW9uLm1lbW9pemUgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG1lbW9pemUgeHMpXG4gIClcblxubGV0IHJlYyBvbmNlIHhzID1cbiAgU3VzcGVuc2lvbi5vbmNlIChmdW4gKCkgLT5cbiAgICBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBDb25zICh4LCBvbmNlIHhzKVxuICApXG5cblxubGV0IHJlYyB6aXAgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zICgoeCwgeSksIHppcCB4cyB5cylcblxubGV0IHJlYyBtYXAyIGYgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIE5pbFxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBDb25zIChmIHggeSwgbWFwMiBmIHhzIHlzKVxuXG5sZXQgcmVjIGludGVybGVhdmUgeHMgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHlzKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIENvbnMgKHgsIGludGVybGVhdmUgeXMgeHMpXG5cbigqIFtzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSB5c10uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCB4cyAoY29ucyB5IHlzKV0uXG5cbiAgIFtzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgW3NvcnRlZF9tZXJnZSBjbXAgKGNvbnMgeCB4cykgKGNvbnMgeSB5cyldLlxuXG4gICBUaGVzZSB0aHJlZSBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgYnVpbGRpbmcgYmxvY2tzIGluIHRoZSBkZWZpbml0aW9uXG4gICBvZiBbc29ydGVkX21lcmdlXS4gKilcblxubGV0IHJlYyBzb3J0ZWRfbWVyZ2UxbCBjbXAgeCB4cyB5cyAoKSA9XG4gIG1hdGNoIHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgQ29ucyAoeCwgeHMpXG4gIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuYW5kIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh5LCB5cylcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzID1cbiAgaWYgY21wIHggeSA8PSAwIHRoZW5cbiAgICBDb25zICh4LCBzb3J0ZWRfbWVyZ2UxciBjbXAgeHMgeSB5cylcbiAgZWxzZVxuICAgIENvbnMgKHksIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzKVxuXG5sZXQgc29ydGVkX21lcmdlIGNtcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCksIHlzKCkgd2l0aFxuICAgIHwgTmlsLCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBOaWwsIGNcbiAgICB8IGMsIE5pbCAtPlxuICAgICAgICBjXG4gICAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgICBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXNcblxuXG5sZXQgcmVjIG1hcF9mc3QgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKHgsIF8pLCB4eXMpIC0+XG4gICAgICBDb25zICh4LCBtYXBfZnN0IHh5cylcblxubGV0IHJlYyBtYXBfc25kIHh5cyAoKSA9XG4gIG1hdGNoIHh5cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKChfLCB5KSwgeHlzKSAtPlxuICAgICAgQ29ucyAoeSwgbWFwX3NuZCB4eXMpXG5cbmxldCB1bnppcCB4eXMgPVxuICBtYXBfZnN0IHh5cywgbWFwX3NuZCB4eXNcblxubGV0IHNwbGl0ID1cbiAgdW56aXBcblxuKCogW2ZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzXSBpcyBlcXVpdmFsZW50IHRvXG4gICBbZmlsdGVyX21hcCBFaXRoZXIuZmluZF9sZWZ0IChtYXAgZiB4cyldLiAqKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IHkgLT5cbiAgICAgICAgICBDb25zICh5LCBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cylcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyAoKVxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBFaXRoZXIuTGVmdCBfIC0+XG4gICAgICAgICAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpXG4gICAgICB8IEVpdGhlci5SaWdodCB6IC0+XG4gICAgICAgICAgQ29ucyAoeiwgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzKVxuXG5sZXQgcGFydGl0aW9uX21hcCBmIHhzID1cbiAgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMsXG4gIGZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAgZiB4c1xuXG5sZXQgcGFydGl0aW9uIHAgeHMgPVxuICBmaWx0ZXIgcCB4cywgZmlsdGVyIChmdW4geCAtPiBub3QgKHAgeCkpIHhzXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtwZWVsIHhzc10gaXMgYSBwYWlyIG9mXG4gICB0aGUgZmlyc3QgY29sdW1uIChhIHNlcXVlbmNlIG9mIGVsZW1lbnRzKSBhbmQgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIG1hdHJpeCAoYSBzZXF1ZW5jZSBvZiBzaG9ydGVyIHJvd3MpLiBUaGVzZSB0d28gc2VxdWVuY2VzIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWVcbiAgIGxlbmd0aC4gQW4gZW1wdHkgcm93IGlzIGlnbm9yZWQuICopXG5cbigqIEJlY2F1c2UgW3BlZWxdIHVzZXMgW3VuemlwXSwgaXRzIGFyZ3VtZW50IG11c3QgYmUgcGVyc2lzdGVudC4gVGhlIHNhbWVcbiAgIHJlbWFyayBhcHBsaWVzIHRvIFt0cmFuc3Bvc2VdLCBbZGlhZ29uYWxzXSwgW3Byb2R1Y3RdLCBldGMuICopXG5cbmxldCBwZWVsIHhzcyA9XG4gIHVuemlwIChmaWx0ZXJfbWFwIHVuY29ucyB4c3MpXG5cbmxldCByZWMgdHJhbnNwb3NlIHhzcyAoKSA9XG4gIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHhzcyBpblxuICBpZiBpc19lbXB0eSBoZWFkcyB0aGVuIGJlZ2luXG4gICAgYXNzZXJ0IChpc19lbXB0eSB0YWlscyk7XG4gICAgTmlsXG4gIGVuZFxuICBlbHNlXG4gICAgQ29ucyAoaGVhZHMsIHRyYW5zcG9zZSB0YWlscylcblxuKCogVGhlIGludGVybmFsIGZ1bmN0aW9uIFtkaWFnb25hbHNdIHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50LCBbcmVtYWluZGVyc10sXG4gICB3aGljaCBjb250YWlucyB0aGUgcmVtYWluZGVycyBvZiB0aGUgcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICBkaXNjb3ZlcmVkLiAqKVxuXG5sZXQgcmVjIGRpYWdvbmFscyByZW1haW5kZXJzIHhzcyAoKSA9XG4gIG1hdGNoIHhzcygpIHdpdGhcbiAgfCBDb25zICh4cywgeHNzKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggeHMoKSB3aXRoXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IG5vbmVtcHR5IHJvdyBbeCA6OiB4c10uIFRodXMsIHRoZSBuZXh0IGRpYWdvbmFsXG4gICAgICAgICAgICAgaXMgW3ggOjogaGVhZHNdOiB0aGlzIGRpYWdvbmFsIGJlZ2lucyB3aXRoIFt4XSBhbmQgY29udGludWVzIHdpdGhcbiAgICAgICAgICAgICB0aGUgZmlyc3QgZWxlbWVudCBvZiBldmVyeSByb3cgaW4gW3JlbWFpbmRlcnNdLiBJbiB0aGUgcmVjdXJzaXZlXG4gICAgICAgICAgICAgY2FsbCwgdGhlIGFyZ3VtZW50IFtyZW1haW5kZXJzXSBpcyBpbnN0YW50aWF0ZWQgd2l0aCBbeHMgOjpcbiAgICAgICAgICAgICB0YWlsc10sIHdoaWNoIG1lYW5zIHRoYXQgd2UgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LCBbeHNdLFxuICAgICAgICAgICAgIGFuZCB0aGF0IHdlIGtlZXAgdGhlIHRhaWxzIG9mIHRoZSBwcmUtZXhpc3RpbmcgcmVtYWluaW5nIHJvd3MuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGNvbnMgeCBoZWFkcywgZGlhZ29uYWxzIChjb25zIHhzIHRhaWxzKSB4c3MpXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgqIFdlIGRpc2NvdmVyIGEgbmV3IGVtcHR5IHJvdy4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpYWdvbmFsIGlzXG4gICAgICAgICAgICAganVzdCBbaGVhZHNdLCBhbmQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIGp1c3QgW3RhaWxzXSxcbiAgICAgICAgICAgICBhcyB3ZSBkbyBub3QgaGF2ZSBvbmUgbW9yZSByZW1haW5pbmcgcm93LiAqKVxuICAgICAgICAgIGxldCBoZWFkcywgdGFpbHMgPSBwZWVsIHJlbWFpbmRlcnMgaW5cbiAgICAgICAgICBDb25zIChoZWFkcywgZGlhZ29uYWxzIHRhaWxzIHhzcylcbiAgICAgIGVuZFxuICB8IE5pbCAtPlxuICAgICAgKCogVGhlcmUgYXJlIG5vIG1vcmUgcm93cyB0byBiZSBkaXNjb3ZlcmVkLiBUaGVyZSByZW1haW5zIHRvIGV4aGF1c3RcbiAgICAgICAgIHRoZSByZW1haW5pbmcgcm93cy4gKilcbiAgICAgIHRyYW5zcG9zZSByZW1haW5kZXJzICgpXG5cbigqIElmIFt4c3NdIGlzIGEgbWF0cml4IChhIHNlcXVlbmNlIG9mIHJvd3MpLCB0aGVuIFtkaWFnb25hbHMgeHNzXSBpc1xuICAgdGhlIHNlcXVlbmNlIG9mIGl0cyBkaWFnb25hbHMuXG5cbiAgIFRoZSBmaXJzdCBkaWFnb25hbCBjb250YWlucyBqdXN0IHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgZmlyc3Qgcm93LiBUaGUgc2Vjb25kIGRpYWdvbmFsIGNvbnRhaW5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZVxuICAgc2Vjb25kIHJvdyBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBmaXJzdCByb3c7IGFuZCBzbyBvbi5cbiAgIFRoaXMga2luZCBvZiBkaWFnb25hbCBpcyBpbiBmYWN0IHNvbWV0aW1lcyBrbm93biBhcyBhbiBhbnRpZGlhZ29uYWwuXG5cbiAgIC0gRXZlcnkgZGlhZ29uYWwgaXMgYSBmaW5pdGUgc2VxdWVuY2UuXG4gICAtIFRoZSByb3dzIG9mIHRoZSBtYXRyaXggW3hzc10gYXJlIG5vdCByZXF1aXJlZCB0byBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZmluaXRlIChpbiBlaXRoZXIgZGlyZWN0aW9uKS5cbiAgIC0gVGhlIG1hdHJpeCBbeHNzXSBtdXN0IGJlIHBlcnNpc3RlbnQuICopXG5cbmxldCBkaWFnb25hbHMgeHNzID1cbiAgZGlhZ29uYWxzIGVtcHR5IHhzc1xuXG5sZXQgbWFwX3Byb2R1Y3QgZiB4cyB5cyA9XG4gIGNvbmNhdCAoZGlhZ29uYWxzIChcbiAgICBtYXAgKGZ1biB4IC0+XG4gICAgICBtYXAgKGZ1biB5IC0+XG4gICAgICAgIGYgeCB5XG4gICAgICApIHlzXG4gICAgKSB4c1xuICApKVxuXG5sZXQgcHJvZHVjdCB4cyB5cyA9XG4gIG1hcF9wcm9kdWN0IChmdW4geCB5IC0+ICh4LCB5KSkgeHMgeXNcblxubGV0IG9mX2Rpc3BlbnNlciBpdCA9XG4gIGxldCByZWMgYyAoKSA9XG4gICAgbWF0Y2ggaXQoKSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIE5pbFxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIENvbnMgKHgsIGMpXG4gIGluXG4gIGNcblxubGV0IHRvX2Rpc3BlbnNlciB4cyA9XG4gIGxldCBzID0gcmVmIHhzIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICghcykoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIHMgOj0geHM7XG4gICAgICAgIFNvbWUgeFxuXG5cblxubGV0IHJlYyBpbnRzIGkgKCkgPVxuICBDb25zIChpLCBpbnRzIChpICsgMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+ZGVmYXVsdCA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGRlZmF1bHRcbmxldCBnZXRfb2sgPSBmdW5jdGlvbiBPayB2IC0+IHYgfCBFcnJvciBfIC0+IGludmFsaWRfYXJnIFwicmVzdWx0IGlzIEVycm9yIF9cIlxubGV0IGdldF9lcnJvciA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZSB8IE9rIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgT2sgX1wiXG5sZXQgYmluZCByIGYgPSBtYXRjaCByIHdpdGggT2sgdiAtPiBmIHYgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IGpvaW4gPSBmdW5jdGlvbiBPayByIC0+IHIgfCBFcnJvciBfIGFzIGUgLT4gZVxubGV0IG1hcCBmID0gZnVuY3Rpb24gT2sgdiAtPiBPayAoZiB2KSB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IEVycm9yIChmIGUpIHwgT2sgXyBhcyB2IC0+IHZcbmxldCBmb2xkIH5vayB+ZXJyb3IgPSBmdW5jdGlvbiBPayB2IC0+IG9rIHYgfCBFcnJvciBlIC0+IGVycm9yIGVcbmxldCBpdGVyIGYgPSBmdW5jdGlvbiBPayB2IC0+IGYgdiB8IEVycm9yIF8gLT4gKClcbmxldCBpdGVyX2Vycm9yIGYgPSBmdW5jdGlvbiBFcnJvciBlIC0+IGYgZSB8IE9rIF8gLT4gKClcbmxldCBpc19vayA9IGZ1bmN0aW9uIE9rIF8gLT4gdHJ1ZSB8IEVycm9yIF8gLT4gZmFsc2VcbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uIEVycm9yIF8gLT4gdHJ1ZSB8IE9rIF8gLT4gZmFsc2VcblxubGV0IGVxdWFsIH5vayB+ZXJyb3IgcjAgcjEgPSBtYXRjaCByMCwgcjEgd2l0aFxufCBPayB2MCwgT2sgdjEgLT4gb2sgdjAgdjFcbnwgRXJyb3IgZTAsIEVycm9yIGUxIC0+IGVycm9yIGUwIGUxXG58IF8sIF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgT2sgXywgRXJyb3IgXyAtPiAtMVxufCBFcnJvciBfLCBPayBfIC0+IDFcblxubGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uIE9rIHYgLT4gU29tZSB2IHwgRXJyb3IgXyAtPiBOb25lXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE9rIHYgLT4gW3ZdIHwgRXJyb3IgXyAtPiBbXVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE9rIHYgLT4gU2VxLnJldHVybiB2IHwgRXJyb3IgXyAtPiBTZXEuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gYm9vbCA9IGZhbHNlIHwgdHJ1ZVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5sZXQgZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxuZXh0ZXJuYWwgdG9faW50IDogYm9vbCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvbiBmYWxzZSAtPiAwLiB8IHRydWUgLT4gMS5cblxuKCpcbmxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxufCBcImZhbHNlXCIgLT4gU29tZSBmYWxzZVxufCBcInRydWVcIiAtPiBTb21lIHRydWVcbnwgXyAtPiBOb25lXG4qKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb24gZmFsc2UgLT4gXCJmYWxzZVwiIHwgdHJ1ZSAtPiBcInRydWVcIlxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDaGFyYWN0ZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgY2hyIG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJDaGFyLmNoclwiIGVsc2UgdW5zYWZlX2NociBuXG5cbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZTogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBieXRlc191bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5sZXQgZXNjYXBlZCA9IGZ1bmN0aW9uXG4gIHwgJ1xcJycgLT4gXCJcXFxcJ1wiXG4gIHwgJ1xcXFwnIC0+IFwiXFxcXFxcXFxcIlxuICB8ICdcXG4nIC0+IFwiXFxcXG5cIlxuICB8ICdcXHQnIC0+IFwiXFxcXHRcIlxuICB8ICdcXHInIC0+IFwiXFxcXHJcIlxuICB8ICdcXGInIC0+IFwiXFxcXGJcIlxuICB8ICcgJyAuLiAnficgYXMgYyAtPlxuICAgICAgbGV0IHMgPSBieXRlc19jcmVhdGUgMSBpblxuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDAgYztcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuICB8IGMgLT5cbiAgICAgIGxldCBuID0gY29kZSBjIGluXG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSA0IGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCAnXFxcXCc7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMSAodW5zYWZlX2NociAoNDggKyBuIC8gMTAwKSk7XG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMiAodW5zYWZlX2NociAoNDggKyAobiAvIDEwKSBtb2QgMTApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAzICh1bnNhZmVfY2hyICg0OCArIG4gbW9kIDEwKSk7XG4gICAgICB1bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IGxvd2VyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ0EnIC4uICdaJyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuXG4oKiBVVEYgY29kZWNzIHRvb2xzICopXG5cbnR5cGUgdXRmX2RlY29kZSA9IGludFxuKCogVGhpcyBpcyBhbiBpbnQgWzB4RFVVVVVVVV0gZGVjb21wb3NlZCBhcyBmb2xsb3dzOlxuICAgLSBbRF0gaXMgZm91ciBiaXRzIGZvciBkZWNvZGUgaW5mb3JtYXRpb24sIHRoZSBoaWdoZXN0IGJpdCBpcyBzZXQgaWYgdGhlXG4gICAgIGRlY29kZSBpcyB2YWxpZC4gVGhlIHRocmVlIGxvd2VyIGJpdHMgaW5kaWNhdGUgdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgICBmcm9tIHRoZSBzb3VyY2UgdGhhdCB3ZXJlIGNvbnN1bWVkIGJ5IHRoZSBkZWNvZGUuXG4gICAtIFtVVVVVVVVdIGlzIHRoZSBkZWNvZGVkIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBVbmljb2RlIHJlcGxhY2VtZW50XG4gICAgIGNoYXJhY3RlciBVK0ZGRkQgaWYgZm9yIGludmFsaWQgZGVjb2Rlcy4gKilcblxubGV0IHZhbGlkX2JpdCA9IDI3XG5sZXQgZGVjb2RlX2JpdHMgPSAyNFxuXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pc192YWxpZCBkID0gKGQgbHNyIHZhbGlkX2JpdCkgPSAxXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9sZW5ndGggZCA9IChkIGxzciBkZWNvZGVfYml0cykgbGFuZCAwYjExMVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfdWNoYXIgZCA9IHVuc2FmZV9vZl9pbnQgKGQgbGFuZCAweEZGRkZGRilcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlIG4gdSA9ICgoOCBsb3IgbikgbHNsIGRlY29kZV9iaXRzKSBsb3IgKHRvX2ludCB1KVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGVfaW52YWxpZCBuID0gKG4gbHNsIGRlY29kZV9iaXRzKSBsb3IgcmVwXG5cbmxldCB1dGZfOF9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4MDA3RiAtPiAxXG58IHUgd2hlbiB1IDw9IDB4MDdGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAzXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHV0Zl8xNl9ieXRlX2xlbmd0aCB1ID0gbWF0Y2ggdG9faW50IHUgd2l0aFxufCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG58IHUgd2hlbiB1IDw9IDB4RkZGRiAtPiAyXG58IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+IDRcbnwgXyAtPiBhc3NlcnQgZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGxpc3RzLiAqKVxudHlwZSAnYSB0ID0gJ2EgbGlzdCA9IFtdIHwgKDo6KSBvZiAnYSAqICdhIGxpc3RcblxuKCogTGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZWMgbGVuZ3RoX2F1eCBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGxlblxuICB8IF86OmwgLT4gbGVuZ3RoX2F1eCAobGVuICsgMSkgbFxuXG5sZXQgbGVuZ3RoIGwgPSBsZW5ndGhfYXV4IDAgbFxuXG5sZXQgY29ucyBhIGwgPSBhOjpsXG5cbmxldCBoZCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJoZFwiXG4gIHwgYTo6XyAtPiBhXG5cbmxldCB0bCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFpbHdpdGggXCJ0bFwiXG4gIHwgXzo6bCAtPiBsXG5cbmxldCBudGggbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibnRoXCJcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBudGhfb3B0IGwgbiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0Lm50aFwiIGVsc2VcbiAgbGV0IHJlYyBudGhfYXV4IGwgbiA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCBsIChuLTEpXG4gIGluIG50aF9hdXggbCBuXG5cbmxldCBhcHBlbmQgPSAoQClcblxubGV0IHJlYyByZXZfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICAgIFtdIC0+IGwyXG4gIHwgYSA6OiBsIC0+IHJldl9hcHBlbmQgbCAoYSA6OiBsMilcblxubGV0IHJldiBsID0gcmV2X2FwcGVuZCBsIFtdXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGluaXQgaSBsYXN0IGYgPVxuICBpZiBpID4gbGFzdCB0aGVuIFtdXG4gIGVsc2UgaWYgaSA9IGxhc3QgdGhlbiBbZiBpXVxuICBlbHNlXG4gICAgbGV0IHIxID0gZiBpIGluXG4gICAgbGV0IHIyID0gZiAoaSsxKSBpblxuICAgIHIxIDo6IHIyIDo6IGluaXQgKGkrMikgbGFzdCBmXG5cbmxldCBpbml0IGxlbiBmID1cbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5pbml0XCIgZWxzZVxuICBpbml0IDAgKGxlbiAtIDEpIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGExIGluXG4gICAgICBsZXQgcjIgPSBmIGEyIGluXG4gICAgICByMTo6cjI6Om1hcCBmIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgW2ExXSAtPlxuICAgICAgbGV0IHIxID0gZiBpIGExIGluXG4gICAgICBbcjFdXG4gIHwgYTE6OmEyOjpsIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgKGkrMSkgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwaSAoaSsyKSBmIGxcblxubGV0IG1hcGkgZiBsID0gbWFwaSAwIGYgbFxuXG5sZXQgcmV2X21hcCBmIGwgPVxuICBsZXQgcmVjIHJtYXBfZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGE6OmwgLT4gcm1hcF9mIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBybWFwX2YgW10gbFxuXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBhOyBpdGVyIGYgbFxuXG5sZXQgcmVjIGl0ZXJpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCBhOjpsIC0+IGYgaSBhOyBpdGVyaSAoaSArIDEpIGYgbFxuXG5sZXQgaXRlcmkgZiBsID0gaXRlcmkgMCBmIGxcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2N1IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmb2xkX2xlZnQgZiAoZiBhY2N1IGEpIGxcblxubGV0IHJlYyBmb2xkX3JpZ2h0IGYgbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gLT4gYWNjdVxuICB8IGE6OmwgLT4gZiBhIChmb2xkX3JpZ2h0IGYgbCBhY2N1KVxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXAyIGYgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoW2ExXSwgW2IxXSkgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIFtyMV1cbiAgfCAoYTE6OmEyOjpsMSwgYjE6OmIyOjpsMikgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgYjEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgYjIgaW5cbiAgICAgIHIxOjpyMjo6bWFwMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5tYXAyXCJcblxubGV0IHJldl9tYXAyIGYgbDEgbDIgPVxuICBsZXQgcmVjIHJtYXAyX2YgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIHwgKFtdLCBbXSkgLT4gYWNjdVxuICAgIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBybWFwMl9mIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJldl9tYXAyXCJcbiAgaW5cbiAgcm1hcDJfZiBbXSBsMSBsMlxuXG5cbmxldCByZWMgaXRlcjIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiAoKVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMjsgaXRlcjIgZiBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuaXRlcjJcIlxuXG5sZXQgcmVjIGZvbGRfbGVmdDIgZiBhY2N1IGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGZvbGRfbGVmdDIgZiAoZiBhY2N1IGExIGEyKSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG5cbmxldCByZWMgZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1ID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGFjY3VcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IGYgYTEgYTIgKGZvbGRfcmlnaHQyIGYgbDEgbDIgYWNjdSlcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvbGRfcmlnaHQyXCJcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IHRydWVcbiAgfCBhOjpsIC0+IHAgYSAmJiBmb3JfYWxsIHAgbFxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gcCBhIHx8IGV4aXN0cyBwIGxcblxubGV0IHJlYyBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IHRydWVcbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHAgYTEgYTIgJiYgZm9yX2FsbDIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuXG5sZXQgcmVjIGV4aXN0czIgcCBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBmYWxzZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiB8fCBleGlzdHMyIHAgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmV4aXN0czJcIlxuXG5sZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWxzZVxuICB8IGE6OmwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbSB4IGxcblxubGV0IHJlYyBtZW1xIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBhID09IHggfHwgbWVtcSB4IGxcblxubGV0IHJlYyBhc3NvYyB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBiIGVsc2UgYXNzb2MgeCBsXG5cbmxldCByZWMgYXNzb2Nfb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBTb21lIGIgZWxzZSBhc3NvY19vcHQgeCBsXG5cbmxldCByZWMgYXNzcSB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBiIGVsc2UgYXNzcSB4IGxcblxubGV0IHJlYyBhc3NxX29wdCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gIHwgKGEsYik6OmwgLT4gaWYgYSA9PSB4IHRoZW4gU29tZSBiIGVsc2UgYXNzcV9vcHQgeCBsXG5cbmxldCByZWMgbWVtX2Fzc29jIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gY29tcGFyZSBhIHggPSAwIHx8IG1lbV9hc3NvYyB4IGxcblxubGV0IHJlYyBtZW1fYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWxzZVxuICB8IChhLCBfKSA6OiBsIC0+IGEgPT0geCB8fCBtZW1fYXNzcSB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+XG4gICAgICBpZiBjb21wYXJlIGEgeCA9IDAgdGhlbiBsIGVsc2UgcGFpciA6OiByZW1vdmVfYXNzb2MgeCBsXG5cbmxldCByZWMgcmVtb3ZlX2Fzc3EgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAoYSwgXyBhcyBwYWlyKSA6OiBsIC0+IGlmIGEgPT0geCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NxIHggbFxuXG5sZXQgcmVjIGZpbmQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggZWxzZSBmaW5kIHAgbFxuXG5sZXQgcmVjIGZpbmRfb3B0IHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZF9vcHQgcCBsXG5cbmxldCBmaW5kX2luZGV4IHAgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgICBbXSAtPiBOb25lXG4gICAgfCBhOjpsIC0+IGlmIHAgYSB0aGVuIFNvbWUgaSBlbHNlIGF1eCAoaSsxKSBsIGluXG4gIGF1eCAwXG5cbmxldCByZWMgZmluZF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgZiBsXG4gICAgIGVuZFxuXG5sZXQgZmluZF9tYXBpIGYgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGF1eCAoaSsxKSBsXG4gICAgIGVuZCBpblxuICBhdXggMFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2FsbCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiB4IDo6IGZpbmRfYWxsIHAgbCBlbHNlIGZpbmRfYWxsIHAgbFxuXG5sZXQgZmlsdGVyID0gZmluZF9hbGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyaSBwIGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6bCAtPlxuICAgICAgbGV0IGknID0gaSArIDEgaW5cbiAgICAgIGlmIHAgaSB4IHRoZW4geCA6OiBmaWx0ZXJpIHAgaScgbCBlbHNlIGZpbHRlcmkgcCBpJyBsXG5cbmxldCBmaWx0ZXJpIHAgbCA9IGZpbHRlcmkgcCAwIGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogbCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbFxuICAgICAgfCBTb21lIHYgLT4gdiA6OiBmaWx0ZXJfbWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBjb25jYXRfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeDo6eHMgLT4gcHJlcGVuZF9jb25jYXRfbWFwIChmIHgpIGYgeHNcbmFuZFtAdGFpbF9tb2RfY29uc10gcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHMgPVxuICBtYXRjaCB5cyB3aXRoXG4gIHwgW10gLT4gY29uY2F0X21hcCBmIHhzXG4gIHwgeSA6OiB5cyAtPiB5IDo6IHByZXBlbmRfY29uY2F0X21hcCB5cyBmIHhzXG5cbmxldCBmb2xkX2xlZnRfbWFwIGYgYWNjdSBsID1cbiAgbGV0IHJlYyBhdXggYWNjdSBsX2FjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdSwgcmV2IGxfYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBhY2N1LCB4ID0gZiBhY2N1IHggaW5cbiAgICAgICAgYXV4IGFjY3UgKHggOjogbF9hY2N1KSBsIGluXG4gIGF1eCBhY2N1IFtdIGxcblxubGV0IHBhcnRpdGlvbiBwIGwgPVxuICBsZXQgcmVjIHBhcnQgeWVzIG5vID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IHllcywgcmV2IG5vKVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBwYXJ0ICh4IDo6IHllcykgbm8gbCBlbHNlIHBhcnQgeWVzICh4IDo6IG5vKSBsIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX21hcCBwIGwgPVxuICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiBsZWZ0LCByZXYgcmlnaHQpXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsXG4gICAgIGVuZFxuICBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHJlYyBzcGxpdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKFtdLCBbXSlcbiAgfCAoeCx5KTo6bCAtPlxuICAgICAgbGV0IChyeCwgcnkpID0gc3BsaXQgbCBpbiAoeDo6cngsIHk6OnJ5KVxuXG5sZXQgcmVjIGNvbWJpbmUgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gW11cbiAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IChhMSwgYTIpIDo6IGNvbWJpbmUgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0LmNvbWJpbmVcIlxuXG4oKiogc29ydGluZyAqKVxuXG5sZXQgcmVjIG1lcmdlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwyIC0+IGwyXG4gIHwgbDEsIFtdIC0+IGwxXG4gIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgdGhlbiBoMSA6OiBtZXJnZSBjbXAgdDEgbDJcbiAgICAgIGVsc2UgaDIgOjogbWVyZ2UgY21wIGwxIHQyXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGlmIGNtcCBoMSBoMiA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA8PSAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyIDw9IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzIDw9IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXSBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgY21wIHgxIHgyID4gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHNvcnQgPSBzdGFibGVfc29ydFxubGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbigqIE5vdGU6IG9uIGEgdmVyeSBsb25nIGxpc3QgKGxlbmd0aCBvdmVyIGFib3V0IDEwMDAwMCksIGl0IHVzZWQgdG8gYmVcbiAgIGZhc3RlciB0byBjb252ZXJ0IHRoZSBsaXN0IHRvIGFuIGFycmF5LCBzb3J0IHRoZSBhcnJheSwgYW5kIGNvbnZlcnRcbiAgIGJhY2ssIHRydW5jYXRpbmcgdGhlIGFycmF5IG9iamVjdCBhZnRlciBwcmVwZW5kaW5nIGVhY2ggdGhvdXNhbmRcbiAgIGVudHJpZXMgdG8gdGhlIHJlc3VsdGluZyBsaXN0LiBJbXBvc3NpYmxlIG5vdyB0aGF0IE9iai50cnVuY2F0ZSBoYXNcbiAgIGJlZW4gcmVtb3ZlZC4gKilcblxuKCoqIHNvcnRpbmcgKyByZW1vdmluZyBkdXBsaWNhdGVzICopXG5cbmxldCBzb3J0X3VuaXEgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2UgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlIHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2UgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHJldl9tZXJnZV9yZXYgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlX3JldiB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIGwyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSByZXZfbWVyZ2VfcmV2IGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyBzb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MV0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4M10gZWxzZSBbeDM7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlblxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MTsgeDJdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDMgaW5cbiAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IGMgPSBjbXAgeDIgeDMgaW5cbiAgICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IF8gOjogbDEsIF8gOjogbDIgLT4gY29tcGFyZV9sZW5ndGhzIGwxIGwyXG5cbmxldCByZWMgY29tcGFyZV9sZW5ndGhfd2l0aCBsIG4gPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGlmIG4gPSAwIHRoZW4gMCBlbHNlXG4gICAgICBpZiBuID4gMCB0aGVuIC0xIGVsc2UgMVxuICB8IF8gOjogbCAtPlxuICAgIGlmIG4gPD0gMCB0aGVuIDEgZWxzZVxuICAgICAgY29tcGFyZV9sZW5ndGhfd2l0aCBsIChuLTEpXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gOjogXyAtPiBmYWxzZVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgb2Zfc2VxIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiBbXVxuICB8IFNlcS5Db25zICh4MSwgc2VxKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbeDFdXG4gICAgICB8IFNlcS5Db25zICh4Miwgc2VxKSAtPiB4MSA6OiB4MiA6OiBvZl9zZXEgc2VxXG4gICAgICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgdW5zYWZlX2VzY2FwZSBzID1cbiAgKCogV2UgcGVyZm9ybSB0d28gcGFzc2VzIG9uIHRoZSBpbnB1dCBzZXF1ZW5jZSwgb25lIHRvIGNvbXB1dGUgdGhlXG4gICAgIHJlc3VsdCBzaXplIGFuZCBvbmUgdG8gd3JpdGUgdGhlIHJlc3VsdC5cblxuICAgICAjMTE1MDgsICMxMTUwOTogVGhpcyBsb2dpYyB3b3VsZCBiZSBpbmNvcnJlY3QgaW4gcHJlc2VuY2Ugb2ZcbiAgICAgY29uY3VycmVudCBtb2RpZmljYXRpb24gdG8gdGhlIGlucHV0LCBtYWtpbmcgdGhlIHVzZSBvZlxuICAgICBbdW5zYWZlX3NldF0gYmVsb3cgbWVtb3J5LXVuc2FmZS5cblxuICAgICBQcmVjb25kaXRpb246IFRoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgb246XG4gICAgIC0gYW4gaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2VcbiAgICAgLSBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgKHRoZSBmdW5jdGlvbiB0YWtlcyBvd25lcnNoaXApXG5cbiAgICAgSW4gZWl0aGVyIGNhc2Ugd2UgcmV0dXJuIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZS5cbiAgKilcbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBzXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgcycgPSBjcmVhdGUgIW4gaW5cbiAgICBuIDo9IDA7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgYmVnaW4gbWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgIHwgKCcgJyAuLiAnficpIGFzIGMgLT4gdW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBsZXQgYSA9IGNoYXJfY29kZSBjIGluXG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgLyAxMDApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgKGEgLyAxMCkgbW9kIDEwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIGEgbW9kIDEwKSk7XG4gICAgICBlbmQ7XG4gICAgICBpbmNyIG5cbiAgICBkb25lO1xuICAgIHMnXG4gIGVuZFxuXG5sZXQgZXNjYXBlZCBiID1cbiAgbGV0IGIgPSBjb3B5IGIgaW5cbiAgKCogV2UgY29weSBvdXIgaW5wdXQgdG8gb2J0YWluIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSBbYl1cbiAgICAgdG8gc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gKilcbiAgdW5zYWZlX2VzY2FwZSBiXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGxldCBidWYgPSByZWYgKG1ha2UgMjU2ICdcXDAwMCcpIGluXG4gIGxldCByZXNpemUgKCkgPVxuICAgICgqIHJlc2l6ZSAqKVxuICAgIGxldCBuZXdfbGVuID0gSW50Lm1pbiAoMiAqIGxlbmd0aCAhYnVmKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICBpZiBsZW5ndGggIWJ1ZiA9IG5ld19sZW4gdGhlbiBmYWlsd2l0aCBcIkJ5dGVzLm9mX3NlcTogY2Fubm90IGdyb3cgYnl0ZXNcIjtcbiAgICBsZXQgbmV3X2J1ZiA9IG1ha2UgbmV3X2xlbiAnXFwwMDAnIGluXG4gICAgYmxpdCAhYnVmIDAgbmV3X2J1ZiAwICFuO1xuICAgIGJ1ZiA6PSBuZXdfYnVmXG4gIGluXG4gIFNlcS5pdGVyXG4gICAgKGZ1biBjIC0+XG4gICAgICAgaWYgIW4gPSBsZW5ndGggIWJ1ZiB0aGVuIHJlc2l6ZSgpO1xuICAgICAgIHNldCAhYnVmICFuIGM7XG4gICAgICAgaW5jciBuKVxuICAgIGk7XG4gIHN1YiAhYnVmIDAgIW5cblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCogVGhlIGdldF8gZnVuY3Rpb25zIGFyZSBhbGwgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbmV4dGVybmFsIGdldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9ieXRlc19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjRfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuICBlbHNlIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeFxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4IGVsc2VcbiAgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIChzd2FwMTYgeClcblxubGV0IHNldF9pbnQxNl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MTZfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9sZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfYmUgYiBpIHggPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF91aW50OCA9IHNldF9pbnQ4XG5sZXQgc2V0X3VpbnQxNl9uZSA9IHNldF9pbnQxNl9uZVxubGV0IHNldF91aW50MTZfYmUgPSBzZXRfaW50MTZfYmVcbmxldCBzZXRfdWludDE2X2xlID0gc2V0X2ludDE2X2xlXG5cbigqIFVURiBjb2RlY3MgYW5kIHZhbGlkYXRpb25zICopXG5cbmxldCBkZWNfaW52YWxpZCA9IFVjaGFyLnV0Zl9kZWNvZGVfaW52YWxpZFxubGV0W0BpbmxpbmVdIGRlY19yZXQgbiB1ID0gVWNoYXIudXRmX2RlY29kZSBuIChVY2hhci51bnNhZmVfb2ZfaW50IHUpXG5cbigqIEluIGNhc2Ugb2YgZGVjb2RpbmcgZXJyb3IsIGlmIHdlIGVycm9yIG9uIHRoZSBmaXJzdCBieXRlLCB3ZVxuICAgY29uc3VtZSB0aGUgYnl0ZSwgb3RoZXJ3aXNlIHdlIGNvbnN1bWUgdGhlIFtuXSBieXRlcyBwcmVjZWRpbmdcbiAgIHRoZSBlcnJvcmluZyBieXRlLlxuXG4gICBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGllbnQgdXNlcyBkZWNvZGVzIHdpdGhvdXQgY2FyaW5nIGFib3V0XG4gICB2YWxpZGl0eSBpdCBuYXR1cmFsbHkgcmVwbGFjZSBib2d1cyBkYXRhIHdpdGggVWNoYXIucmVwIGFjY29yZGluZ1xuICAgdG8gdGhlIFdIQVRXRyBFbmNvZGluZyBzdGFuZGFyZC4gT3RoZXIgc2NoZW1lcyBhcmUgcG9zc2libGUgYnlcbiAgIGNvbnN1bHRpbmcgdGhlIG51bWJlciBvZiB1c2VkIGJ5dGVzIG9uIGludmFsaWQgZGVjb2Rlcy4gRm9yIG1vcmVcbiAgIGRldGFpbHMgc2VlIGh0dHBzOi8vaHNpdm9uZW4uZmkvYnJva2VuLXV0Zi04L1xuXG4gICBGb3IgdGhpcyByZWFzb24gaW4gW2dldF91dGZfOF91Y2hhcl0gd2UgZ3JhZHVhbGx5IGNoZWNrIHRoZSBuZXh0XG4gICBieXRlIGlzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBkb2luZyBpdCBpbW1lZGlhdGVseSBhZnRlciB0aGVcbiAgIGZpcnN0IGJ5dGUuIENvbnRyYXN0IHdpdGggW2lzX3ZhbGlkX3V0Zl84XS4gKilcblxuKCogVVRGLTggKilcblxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feEJGIGIgPSBiIGxzciA2IDw+IDBiMTBcbmxldFtAaW5saW5lXSBub3RfaW5feEEwX3RvX3hCRiBiID0gYiBsc3IgNSA8PiAwYjEwMVxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDlGIGIgPSBiIGxzciA1IDw+IDBiMTAwXG5sZXRbQGlubGluZV0gbm90X2luX3g5MF90b194QkYgYiA9IGIgPCAweDkwIHx8IDB4QkYgPCBiXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OEYgYiA9IGIgbHNyIDQgPD4gMHg4XG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8yIGIwIGIxID1cbiAgKChiMCBsYW5kIDB4MUYpIGxzbCA2KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMyBiMCBiMSBiMiA9XG4gICgoYjAgbGFuZCAweDBGKSBsc2wgMTIpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIyIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzID1cbiAgKChiMCBsYW5kIDB4MDcpIGxzbCAxOCkgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgMTIpIGxvclxuICAoKGIyIGxhbmQgMHgzRikgbHNsIDYpIGxvclxuICAoKGIzIGxhbmQgMHgzRikpXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgYiBpID1cbiAgbGV0IGIwID0gZ2V0X3VpbnQ4IGIgaSBpbiAoKiByYWlzZXMgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIGluZGV4LiAqKVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIENoYXIudW5zYWZlX2NociBiMCB3aXRoICgqIFNlZSBUaGUgVW5pY29kZSBTdGFuZGFyZCwgVGFibGUgMy43ICopXG4gIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGRlY19yZXQgMSBiMFxuICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBkZWNfcmV0IDIgKHV0Zl84X3VjaGFyXzIgYjAgYjEpXG4gIHwgJ1xceEUwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94QTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEVEJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDlGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RjAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g5MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgJ1xceEY0JyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feDhGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8IF8gLT4gZGVjX2ludmFsaWQgMVxuXG5sZXQgc2V0X3V0Zl84X3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4MDA3RiAtPlxuICAgICAgc2V0X3VpbnQ4IGIgaSB1O1xuICAgICAgMVxuICB8IHUgd2hlbiB1IDw9IDB4MDdGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4QzAgbG9yICh1IGxzciA2KSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMilcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEUwIGxvciAodSBsc3IgMTIpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDMpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEYwIGxvciAodSBsc3IgMTgpKTtcbiAgICAgICBzZXQgYiAoaSArIDEpICgweDgwIGxvciAoKHUgbHNyIDEyKSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiAoaSArIDIpICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDQpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl84IGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gICAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIChnZXQgYiBpKSB3aXRoXG4gICAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gbG9vcCBtYXggYiAoaSArIDEpXG4gICAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feEEwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RUQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g5RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94OTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEY0JyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OEYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZCRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmJlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZiZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9iZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuXG4oKiBVVEYtMTZMRSAqKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSA9XG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIGlmIGkgPSBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfcmV0IDIgdVxuICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGRlY19pbnZhbGlkIDJcbiAgfCBoaSAtPiAoKiBjb21iaW5lIFtoaV0gd2l0aCBhIGxvdyBzdXJyb2dhdGUgKilcbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAobWF4IC0gaSArIDEpIGVsc2VcbiAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19pbnZhbGlkIDIgKCogcmV0cnkgaGVyZSAqKVxuICAgICAgfCBsbyAtPlxuICAgICAgICAgIGxldCB1ID0gKCgoaGkgbGFuZCAweDNGRikgbHNsIDEwKSBsb3IgKGxvIGxhbmQgMHgzRkYpKSArIDB4MTAwMDAgaW5cbiAgICAgICAgICBkZWNfcmV0IDQgdVxuXG5sZXQgc2V0X3V0Zl8xNmxlX3VjaGFyIGIgaSB1ID1cbiAgbGV0IHNldCA9IHVuc2FmZV9zZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2UgKHNldCBiIGkgdTsgMilcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgIGxldCBoaSA9ICgweEQ4MDAgbG9yICh1JyBsc3IgMTApKSBpblxuICAgICAgbGV0IGxvID0gKDB4REMwMCBsb3IgKHUnIGxhbmQgMHgzRkYpKSBpblxuICAgICAgc2V0IGIgaSBoaTsgc2V0IGIgKGkgKyAyKSBsbzsgNFxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfMTZsZSBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBpblxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBpZiBpID0gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgIG1hdGNoIGdldCBiIGkgd2l0aFxuICAgIHwgdSB3aGVuIHUgPCAweEQ4MDAgfHwgdSA+IDB4REZGRiAtPiBsb29wIG1heCBiIChpICsgMilcbiAgICB8IHUgd2hlbiB1ID4gMHhEQkZGIC0+IGZhbHNlXG4gICAgfCBfaGkgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZmFsc2UgZWxzZVxuICAgICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgICAgfCB1IHdoZW4gdSA8IDB4REMwMCB8fCB1ID4gMHhERkZGIC0+IGZhbHNlXG4gICAgICAgIHwgX2xvIC0+IGxvb3AgbWF4IGIgKGkgKyA0KVxuICBpblxuICBsb29wIChsZW5ndGggYiAtIDEpIGIgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5tb2R1bGUgQiA9IEJ5dGVzXG5cbmxldCBidHMgPSBCLnVuc2FmZV90b19zdHJpbmdcbmxldCBib3MgPSBCLnVuc2FmZV9vZl9zdHJpbmdcblxubGV0IG1ha2UgbiBjID1cbiAgQi5tYWtlIG4gYyB8PiBidHNcbmxldCBpbml0IG4gZiA9XG4gIEIuaW5pdCBuIGYgfD4gYnRzXG5sZXQgZW1wdHkgPSBcIlwiXG5sZXQgb2ZfYnl0ZXMgPSBCLnRvX3N0cmluZ1xubGV0IHRvX2J5dGVzID0gQi5vZl9zdHJpbmdcbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgQi5zdWIgKGJvcyBzKSBvZnMgbGVuIHw+IGJ0c1xubGV0IGJsaXQgPVxuICBCLmJsaXRfc3RyaW5nXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gXCJcIlxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW4gYnRzIEBAXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoQi5jcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCA9ICggXiApXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXJpIGYgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG5sZXQgbWFwIGYgcyA9XG4gIEIubWFwIGYgKGJvcyBzKSB8PiBidHNcbmxldCBtYXBpIGYgcyA9XG4gIEIubWFwaSBmIChib3MgcykgfD4gYnRzXG5sZXQgZm9sZF9yaWdodCBmIHggYSA9XG4gIEIuZm9sZF9yaWdodCBmIChib3MgeCkgYVxubGV0IGZvbGRfbGVmdCBmIGEgeCA9XG4gIEIuZm9sZF9sZWZ0IGYgYSAoYm9zIHgpXG5sZXQgZXhpc3RzIGYgcyA9XG4gIEIuZXhpc3RzIGYgKGJvcyBzKVxubGV0IGZvcl9hbGwgZiBzID1cbiAgQi5mb3JfYWxsIGYgKGJvcyBzKVxuXG4oKiBCZXdhcmU6IHdlIGNhbm5vdCB1c2UgQi50cmltIG9yIEIuZXNjYXBlIGJlY2F1c2UgdGhleSBhbHdheXMgbWFrZSBhXG4gICBjb3B5LCBidXQgU3RyaW5nLm1saSBzcGVsbHMgb3V0IHNvbWUgY2FzZXMgd2hlcmUgd2UgYXJlIG5vdCBhbGxvd2VkXG4gICB0byBtYWtlIGEgY29weS4gKilcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBpZiBzID0gXCJcIiB0aGVuIHNcbiAgZWxzZSBpZiBpc19zcGFjZSAodW5zYWZlX2dldCBzIDApIHx8IGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgKGxlbmd0aCBzIC0gMSkpXG4gICAgdGhlbiBidHMgKEIudHJpbSAoYm9zIHMpKVxuICBlbHNlIHNcblxubGV0IGVzY2FwZWQgcyA9XG4gIGxldCBiID0gYm9zIHMgaW5cbiAgKCogV2Ugc2F0aXNmeSBbdW5zYWZlX2VzY2FwZV0ncyBwcmVjb25kaXRpb24gYnkgcGFzc2luZyBhblxuICAgICBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZSBbYl0uICopXG4gIGJ0cyAoQi51bnNhZmVfZXNjYXBlIGIpXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zdHJpbmdfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2ggMCB4XG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiBVVEYgZGVjb2RlcnMgYW5kIHZhbGlkYXRvcnMgKilcblxubGV0IGdldF91dGZfOF91Y2hhciBzIGkgPSBCLmdldF91dGZfOF91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfOCBzID0gQi5pc192YWxpZF91dGZfOCAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2YmVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2YmUgKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmxlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmxlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmxlIChib3MgcylcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZy9kZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NFwiXG5cbmxldCBnZXRfaW50OCBzIGkgPSBCLmdldF9pbnQ4IChib3MgcykgaVxubGV0IGdldF91aW50MTZfbGUgcyBpID0gQi5nZXRfdWludDE2X2xlIChib3MgcykgaVxubGV0IGdldF91aW50MTZfYmUgcyBpID0gQi5nZXRfdWludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9uZSBzIGkgPSBCLmdldF9pbnQxNl9uZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbGUgcyBpID0gQi5nZXRfaW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2JlIHMgaSA9IEIuZ2V0X2ludDE2X2JlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9sZSBzIGkgPSBCLmdldF9pbnQzMl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfYmUgcyBpID0gQi5nZXRfaW50MzJfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2xlIHMgaSA9IEIuZ2V0X2ludDY0X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9iZSBzIGkgPSBCLmdldF9pbnQ2NF9iZSAoYm9zIHMpIGlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gdW5pdCA9ICgpXG5cbmxldCBlcXVhbCAoKSAoKSA9IHRydWVcbmxldCBjb21wYXJlICgpICgpID0gMFxubGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGV4dGVybl9mbGFncyA9XG4gICAgTm9fc2hhcmluZ1xuICB8IENsb3N1cmVzXG4gIHwgQ29tcGF0XzMyXG5cbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAxNlxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFuIGFsaWFzIGZvciB0aGUgdHlwZSBvZiBhcnJheXMuICopXG50eXBlICdhIHQgPSAnYSBhcnJheVxuXG4oKiBBcnJheSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5leHRlcm5hbCBnZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5leHRlcm5hbCBtYWtlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIGNyZWF0ZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCB1bnNhZmVfc3ViIDogJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9zdWJcIlxuZXh0ZXJuYWwgYXBwZW5kX3ByaW0gOiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9hcHBlbmRcIlxuZXh0ZXJuYWwgY29uY2F0IDogJ2EgYXJyYXkgbGlzdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9hcnJheV9jb25jYXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOlxuICAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfZmlsbFwiXG5leHRlcm5hbCBjcmVhdGVfZmxvYXQ6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuXG5tb2R1bGUgRmxvYXRhcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gZmxvYXRhcnJheSA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IGZsb2F0YXJyYXkgLT4gaW50ID0gXCIlZmxvYXRhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5lbmRcblxubGV0IGluaXQgbCBmID1cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2VcbiAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICAoKiBTZWUgIzY1NzUuIFdlIG11c3Qgbm90IGV2YWx1YXRlIFtmIDBdIHdoZW4gW2wgPD0gMF0uXG4gICAgIFdlIGNvdWxkIGFsc28gY2hlY2sgZm9yIG1heGltdW0gYXJyYXkgc2l6ZSwgYnV0IHRoaXMgZGVwZW5kc1xuICAgICBvbiB3aGV0aGVyIHdlIGNyZWF0ZSBhIGZsb2F0IGFycmF5IG9yIGEgcmVndWxhciBvbmUuLi4gKilcbiAgZWxzZVxuICAgbGV0IHJlcyA9IGNyZWF0ZSBsIChmIDApIGluXG4gICBmb3IgaSA9IDEgdG8gcHJlZCBsIGRvXG4gICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgIGRvbmU7XG4gICByZXNcblxubGV0IG1ha2VfbWF0cml4IHN4IHN5IGluaXQgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYWtlX21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgeCAoY3JlYXRlIHN5IGluaXQpXG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGluaXRfbWF0cml4IHN4IHN5IGYgPVxuICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0X21hdHJpeFwiO1xuICBsZXQgcmVzID0gY3JlYXRlIHN4IFt8fF0gaW5cbiAgKCogV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgeCAwXSB3aGVuIFtzeSA8PSAwXTogKilcbiAgaWYgc3kgPiAwIHRoZW4gYmVnaW5cbiAgICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgICAgbGV0IHJvdyA9IGNyZWF0ZSBzeSAoZiB4IDApIGluXG4gICAgICBmb3IgeSA9IDEgdG8gcHJlZCBzeSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgIGRvbmU7XG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgIGRvbmU7XG4gIGVuZDtcbiAgcmVzXG5cbmxldCBjb3B5IGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIHVuc2FmZV9zdWIgYSAwIGxcblxubGV0IGFwcGVuZCBhMSBhMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICBpZiBsMSA9IDAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbGVuZ3RoIGEyID0gMCB0aGVuIHVuc2FmZV9zdWIgYTEgMCBsMVxuICBlbHNlIGFwcGVuZF9wcmltIGExIGEyXG5cbmxldCBzdWIgYSBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5zdWJcIlxuICBlbHNlIHVuc2FmZV9zdWIgYSBvZnMgbGVuXG5cbmxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIGExIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlblxuXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGl0ZXIyIGYgYSBiID1cbiAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIChmKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgdW5zYWZlX3NldCBhIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gIGRvbmVcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfaW5kZXggcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX21hcCBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKHN1Y2MgaSlcbiAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwaSBmIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxubGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMSBkb1xuICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgIHVuc2FmZV9zZXQgYSBpIChnZXQgYSBqKTtcbiAgICB1bnNhZmVfc2V0IGEgaiB2XG4gIGRvbmVcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgcXVpZXRfbmFuID0gbmFuXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxubGV0IHNpZ25hbGluZ19uYW4gPSBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDFMXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgbWFrZV9tYXRyaXggc3ggc3kgdiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYWtlX21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyB4IChtYWtlIHN5IHYpXG4gICAgICBkb25lO1xuICAgIGVuZDtcbiAgICByZXNcblxuICBsZXQgaW5pdF9tYXRyaXggc3ggc3kgZiA9XG4gICAgKCogV2UgcmFpc2UgZXZlbiBpZiBbc3ggPSAwICYmIHN5IDwgMF06ICopXG4gICAgaWYgc3kgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pbml0X21hdHJpeFwiO1xuICAgIGxldCByZXMgPSBBcnJheS5tYWtlIHN4IChjcmVhdGUgMCkgaW5cbiAgICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgICAgZm9yIHggPSAwIHRvIHN4IC0gMSBkb1xuICAgICAgICBsZXQgcm93ID0gY3JlYXRlIHN5IGluXG4gICAgICAgIGZvciB5ID0gMCB0byBzeSAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHJvdyB5IChmIHggeSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgeCByb3dcbiAgICAgIGRvbmU7XG4gICAgZW5kO1xuICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWFwX2lucGxhY2UgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmVcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1hcGlfaW5wbGFjZSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICAgIGxldCByID0gcmVmIHggaW5cbiAgICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBleGlzdHMgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9yX2FsbCBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIGZhbHNlIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtZW0geCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEgaSkgeCA9IDAgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgYnV0IHNsaWdodGx5IGRpZmZlcmVudCAqKVxuICBsZXQgbWVtX2llZWUgeCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgICAgZWxzZSBpZiB4ID0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfb3B0IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX2luZGV4IHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX21hcCBmIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9tYXBpIGYgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBmIGkgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbiAgbGV0IHNvcnQgY21wIGEgPVxuICAgIGxldCBtYXhzb24gbCBpID1cbiAgICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgICBsZXQgeCA9IHJlZiBpMzEgaW5cbiAgICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgICAgaWYgY21wIChnZXQgYSAheCkgKGdldCBhIChpMzErMikpIDwgMCB0aGVuIHggOj0gaTMxKzI7XG4gICAgICAgICF4XG4gICAgICBlbmQgZWxzZVxuICAgICAgICBpZiBpMzErMSA8IGwgJiYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDBcbiAgICAgICAgdGhlbiBpMzErMVxuICAgICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gICAgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgaWYgY21wIChnZXQgYSBqKSBlID4gMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gICAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgYnViYmxlZG93biBsIGpcbiAgICBpblxuICAgIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICAgIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgICBsZXQgZmF0aGVyID0gKGkgLSAxKSAvIDMgaW5cbiAgICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgZmF0aGVyKTtcbiAgICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBhIGkgZTtcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gICAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgaSkgaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICAgIGRvbmU7XG4gICAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGV4Y2VwdCBmb3IgdGhlIGNhbGwgdG8gW2NyZWF0ZV0gKilcbiAgbGV0IGN1dG9mZiA9IDVcbiAgbGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgICAgbGV0IHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gYW5kIHNyYzJyID0gc3JjMm9mcyArIHNyYzJsZW4gaW5cbiAgICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMTtcbiAgICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgKGdldCBhIGkxKSBpMiBzMiAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgICBpZiBpMiA8IHNyYzJyIHRoZW5cbiAgICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmxpdCBhIGkxIGRzdCAoZCArIDEpIChzcmMxciAtIGkxKVxuICAgICAgICBlbmRcbiAgICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICAgIGluXG4gICAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlID0gKGdldCBhIChzcmNvZnMgKyBpKSkgaW5cbiAgICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgICAgc2V0IGRzdCAoIWogKyAxKSAoZ2V0IGRzdCAhaik7XG4gICAgICAgICAgZGVjciBqO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIGU7XG4gICAgICBkb25lO1xuICAgIGluXG4gICAgbGV0IHJlYyBzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgICAgbGV0IGwyID0gbGVuIC0gbDEgaW5cbiAgICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgICBtZXJnZSAoc3Jjb2ZzICsgbDIpIGwxIGRzdCAoZHN0b2ZzICsgbDEpIGwyIGRzdCBkc3RvZnM7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGwgLSBsMSBpblxuICAgICAgbGV0IHQgPSBjcmVhdGUgbDIgaW5cbiAgICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgICAgbWVyZ2UgbDIgbDEgdCAwIGwyIGEgMDtcbiAgICBlbmRcblxuICBsZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHNodWZmbGUgfnJhbmQgYSA9ICgqIEZpc2hlci1ZYXRlcyAqKVxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAxIGRvXG4gICAgICBsZXQgaiA9IHJhbmQgKGkgKyAxKSBpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgKGdldCBhIGopO1xuICAgICAgdW5zYWZlX3NldCBhIGogdlxuICAgIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXFpIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgICBlbHNlIFNlcS5OaWxcbiAgICBpblxuICAgIGF1eCAwXG5cbiAgKCogbW9zdGx5IGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2ZfcmV2X2xpc3QgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgIFtdIC0+IGFcbiAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgaW5cbiAgICBmaWxsIChsZW4tMSkgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgb2Zfc2VxIGkgPVxuICAgIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICAgIG9mX3Jldl9saXN0IGxcblxuXG4gIGxldCBtYXBfdG9fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgaWYgbCA9IDAgdGhlbiBbfCB8XSBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IEFycmF5Lm1ha2UgbCAoZiAodW5zYWZlX2dldCBhIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuXG4gIGxldCBtYXBfZnJvbV9hcnJheSBmIGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG5lbmRcblxubW9kdWxlIEFycmF5TGFiZWxzID0gQXJyYXlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtJbnQzMl06IDMyLWJpdCBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX25lZ1wiXG5leHRlcm5hbCBhZGQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FkZFwiXG5leHRlcm5hbCBzdWIgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3N1YlwiXG5leHRlcm5hbCBtdWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX211bFwiXG5leHRlcm5hbCBkaXYgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2RpdlwiXG5leHRlcm5hbCByZW0gOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX21vZFwiXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX2FuZFwiXG5leHRlcm5hbCBsb2dvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfb3JcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNyXCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfdG9fZmxvYXRcIiBcImNhbWxfaW50MzJfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHplcm8gPSAwbFxubGV0IG9uZSA9IDFsXG5sZXQgbWludXNfb25lID0gLTFsXG5sZXQgc3VjYyBuID0gYWRkIG4gMWxcbmxldCBwcmVkIG4gPSBzdWIgbiAxbFxubGV0IGFicyBuID0gaWYgbiA+PSAwbCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwbFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGbFxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbClcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemUgd2l0aFxuICB8IDMyIC0+XG4gICAgICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICAgICAgZnVuIG4gLT5cbiAgICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IGludDMyXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0geCA9IHlcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSB4ID0geVxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTmF0aXZlaW50XTogcHJvY2Vzc29yLW5hdGl2ZSBpbnRlZ2VycyAqKVxuXG5leHRlcm5hbCBuZWc6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbmVnXCJcbmV4dGVybmFsIGFkZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYWRkXCJcbmV4dGVybmFsIHN1YjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfc3ViXCJcbmV4dGVybmFsIG11bDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbXVsXCJcbmV4dGVybmFsIGRpdjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfZGl2XCJcbmV4dGVybmFsIHJlbTogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZDogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYW5kXCJcbmV4dGVybmFsIGxvZ29yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vclwiXG5leHRlcm5hbCBsb2d4b3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FzclwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsOiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50OiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludFwiXG5leHRlcm5hbCB0b19pbnQ6IG5hdGl2ZWludCAtPiBpbnQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IG5hdGl2ZWludCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzI6IGludDMyIC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMjogbmF0aXZlaW50IC0+IGludDMyID0gXCIlbmF0aXZlaW50X3RvX2ludDMyXCJcblxubGV0IHplcm8gPSAwblxubGV0IG9uZSA9IDFuXG5sZXQgbWludXNfb25lID0gLTFuXG5sZXQgc3VjYyBuID0gYWRkIG4gMW5cbmxldCBwcmVkIG4gPSBzdWIgbiAxblxubGV0IGFicyBuID0gaWYgbiA+PSAwbiB0aGVuIG4gZWxzZSBuZWcgblxubGV0IHNpemUgPSBTeXMud29yZF9zaXplXG5sZXQgbWluX2ludCA9IHNoaWZ0X2xlZnQgMW4gKHNpemUgLSAxKVxubGV0IG1heF9pbnQgPSBzdWIgbWluX2ludCAxblxubGV0IGxvZ25vdCBuID0gbG9neG9yIG4gKC0xbilcblxubGV0IHVuc2lnbmVkX3RvX2ludCA9XG4gIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gIGZ1biBuIC0+XG4gICAgaWYgbiA+PSAwbiAmJiBuIDw9IG1heF9pbnQgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gbmF0aXZlaW50XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleCAqKVxuXG50eXBlIHBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxubGV0IGR1bW15X3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAwO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAtMTtcbn1cblxudHlwZSBsZXhidWYgPVxuICB7IHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQ7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyIDogYnl0ZXM7XG4gICAgbXV0YWJsZSBsZXhfYnVmZmVyX2xlbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9hYnNfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9sYXN0X2FjdGlvbiA6IGludDtcbiAgICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBsZXhfbWVtIDogaW50IGFycmF5O1xuICAgIG11dGFibGUgbGV4X3N0YXJ0X3AgOiBwb3NpdGlvbjtcbiAgICBtdXRhYmxlIGxleF9jdXJyX3AgOiBwb3NpdGlvbjtcbiAgfVxuXG50eXBlIGxleF90YWJsZXMgPVxuICB7IGxleF9iYXNlOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cms6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdDogc3RyaW5nO1xuICAgIGxleF90cmFuczogc3RyaW5nO1xuICAgIGxleF9jaGVjazogc3RyaW5nO1xuICAgIGxleF9iYXNlX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2JhY2t0cmtfY29kZSA6IHN0cmluZztcbiAgICBsZXhfZGVmYXVsdF9jb2RlIDogc3RyaW5nO1xuICAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jaGVja19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9jb2RlOiBzdHJpbmc7fVxuXG5leHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5leHRlcm5hbCBjX25ld19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbmV3X2xleF9lbmdpbmVcIlxuXG5sZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5cbmxldCBuZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICBsZXQgcmVzdWx0ID0gY19uZXdfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxubGV0IGxleF9yZWZpbGwgcmVhZF9mdW4gYXV4X2J1ZmZlciBsZXhidWYgPVxuICBsZXQgcmVhZCA9XG4gICAgcmVhZF9mdW4gYXV4X2J1ZmZlciAoQnl0ZXMubGVuZ3RoIGF1eF9idWZmZXIpIGluXG4gIGxldCBuID1cbiAgICBpZiByZWFkID4gMFxuICAgIHRoZW4gcmVhZFxuICAgIGVsc2UgKGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZTsgMCkgaW5cbiAgKCogQ3VycmVudCBzdGF0ZSBvZiB0aGUgYnVmZmVyOlxuICAgICAgICA8LS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0+XG4gICAgICAgIHwgIGp1bmsgfCAgICAgIHZhbGlkIGRhdGEgICAgIHwgICBqdW5rICAgIHxcbiAgICAgICAgXiAgICAgICBeICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgXlxuICAgICAgICAwICAgIHN0YXJ0X3BvcyAgICAgICAgICAgICBidWZmZXJfZW5kICAgIEJ5dGVzLmxlbmd0aCBidWZmZXJcbiAgKilcbiAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuICsgbiA+IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlciB0aGVuIGJlZ2luXG4gICAgKCogVGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG5cbiAgICAgICA8PSBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXJcbiAgICB0aGVuIGJlZ2luXG4gICAgICAoKiBCdXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGlmIHdlIHJlY2xhaW0gdGhlIGp1bmsgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgICAgb2YgdGhlIGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXIgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBXZSBtdXN0IGdyb3cgdGhlIGJ1ZmZlci4gIERvdWJsaW5nIGl0cyBzaXplIHdpbGwgcHJvdmlkZSBlbm91Z2hcbiAgICAgICAgIHNwYWNlIHNpbmNlIG4gPD0gU3RyaW5nLmxlbmd0aCBhdXhfYnVmZmVyIDw9IFN0cmluZy5sZW5ndGggYnVmZmVyLlxuICAgICAgICAgV2F0Y2ggb3V0IGZvciBzdHJpbmcgbGVuZ3RoIG92ZXJmbG93LCB0aG91Z2guICopXG4gICAgICBsZXQgbmV3bGVuID1cbiAgICAgICAgSW50Lm1pbiAoMiAqIEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlcikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIG4gPiBuZXdsZW5cbiAgICAgIHRoZW4gZmFpbHdpdGggXCJMZXhpbmcubGV4X3JlZmlsbDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gICAgICBsZXQgbmV3YnVmID0gQnl0ZXMuY3JlYXRlIG5ld2xlbiBpblxuICAgICAgKCogQ29weSB0aGUgdmFsaWQgZGF0YSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXcgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBuZXdidWYgMFxuICAgICAgICAgICAgICAgICAgKGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zKTtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDwtIG5ld2J1ZlxuICAgIGVuZDtcbiAgICAoKiBSZWFsbG9jYXRpb24gb3Igbm90LCB3ZSBoYXZlIHNoaWZ0ZWQgdGhlIGRhdGEgbGVmdCBieVxuICAgICAgIHN0YXJ0X3BvcyBjaGFyYWN0ZXJzOyB1cGRhdGUgdGhlIHBvc2l0aW9ucyAqKVxuICAgIGxldCBzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXhidWYubGV4X2Fic19wb3MgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgcztcbiAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIDA7XG4gICAgbGV4YnVmLmxleF9sYXN0X3BvcyA8LSBsZXhidWYubGV4X2xhc3RfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gcyA7XG4gICAgbGV0IHQgPSBsZXhidWYubGV4X21lbSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC0xIGRvXG4gICAgICBsZXQgdiA9IHQuKGkpIGluXG4gICAgICBpZiB2ID49IDAgdGhlblxuICAgICAgICB0LihpKSA8LSB2LXNcbiAgICBkb25lXG4gIGVuZDtcbiAgKCogVGhlcmUgaXMgbm93IGVub3VnaCBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKilcbiAgQnl0ZXMuYmxpdCBhdXhfYnVmZmVyIDAgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9idWZmZXJfbGVuIG47XG4gIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuXG5cbmxldCB6ZXJvX3BvcyA9IHtcbiAgcG9zX2ZuYW1lID0gXCJcIjtcbiAgcG9zX2xudW0gPSAxO1xuICBwb3NfYm9sID0gMDtcbiAgcG9zX2NudW0gPSAwO1xufVxuXG5sZXQgZnJvbV9mdW5jdGlvbiA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgZiA9XG4gIHsgcmVmaWxsX2J1ZmYgPSBsZXhfcmVmaWxsIGYgKEJ5dGVzLmNyZWF0ZSA1MTIpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5jcmVhdGUgMTAyNDtcbiAgICBsZXhfYnVmZmVyX2xlbiA9IDA7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IGZhbHNlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgZnJvbV9jaGFubmVsID93aXRoX3Bvc2l0aW9ucyBpYyA9XG4gIGZyb21fZnVuY3Rpb24gP3dpdGhfcG9zaXRpb25zIChmdW4gYnVmIG4gLT4gaW5wdXQgaWMgYnVmIDAgbilcblxubGV0IGZyb21fc3RyaW5nID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBzID1cbiAgeyByZWZpbGxfYnVmZiA9IChmdW4gbGV4YnVmIC0+IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZSk7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLm9mX3N0cmluZyBzOyAoKiBoYXZlIHRvIG1ha2UgYSBjb3B5IGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHVuc2FmZS1zdHJpbmcgbW9kZSAqKVxuICAgIGxleF9idWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSB0cnVlO1xuICAgIGxleF9zdGFydF9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgICBsZXhfY3Vycl9wID0gaWYgd2l0aF9wb3NpdGlvbnMgdGhlbiB6ZXJvX3BvcyBlbHNlIGR1bW15X3BvcztcbiAgfVxuXG5sZXQgc2V0X3Bvc2l0aW9uIGxleGJ1ZiBwb3NpdGlvbiA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wICA8LSB7cG9zaXRpb24gd2l0aCBwb3NfZm5hbWUgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfZm5hbWV9O1xuICBsZXhidWYubGV4X2Fic19wb3MgPC0gcG9zaXRpb24ucG9zX2NudW1cblxubGV0IHNldF9maWxlbmFtZSBsZXhidWYgZm5hbWUgPVxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmbmFtZX1cblxubGV0IHdpdGhfcG9zaXRpb25zIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3Bvc1xuXG5sZXQgbGV4ZW1lIGxleGJ1ZiA9XG4gIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxubGV0IHN1Yl9sZXhlbWUgbGV4YnVmIGkxIGkyID1cbiAgbGV0IGxlbiA9IGkyLWkxIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuXG5cbmxldCBzdWJfbGV4ZW1lX29wdCBsZXhidWYgaTEgaTIgPVxuICBpZiBpMSA+PSAwIHRoZW4gYmVnaW5cbiAgICBsZXQgbGVuID0gaTItaTEgaW5cbiAgICBTb21lIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlbilcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBOb25lXG4gIGVuZFxuXG5sZXQgc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBpID0gQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGlcblxubGV0IHN1Yl9sZXhlbWVfY2hhcl9vcHQgbGV4YnVmIGkgPVxuICBpZiBpID49IDAgdGhlblxuICAgIFNvbWUgKEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpKVxuICBlbHNlXG4gICAgTm9uZVxuXG5cbmxldCBsZXhlbWVfY2hhciBsZXhidWYgaSA9XG4gIEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciAobGV4YnVmLmxleF9zdGFydF9wb3MgKyBpKVxuXG5sZXQgbGV4ZW1lX3N0YXJ0IGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcC5wb3NfY251bVxubGV0IGxleGVtZV9lbmQgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2NudW1cblxubGV0IGxleGVtZV9zdGFydF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfc3RhcnRfcFxubGV0IGxleGVtZV9lbmRfcCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcFxuXG5sZXQgbmV3X2xpbmUgbGV4YnVmID1cbiAgbGV0IGxjcCA9IGxleGJ1Zi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7IGxjcCB3aXRoXG4gICAgICAgIHBvc19sbnVtID0gbGNwLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxjcC5wb3NfY251bTtcbiAgICAgIH1cblxuXG5cbigqIERpc2NhcmQgZGF0YSBsZWZ0IGluIGxleGVyIGJ1ZmZlci4gKilcblxubGV0IGZsdXNoX2lucHV0IGxiID1cbiAgbGIubGV4X2N1cnJfcG9zIDwtIDA7XG4gIGxiLmxleF9hYnNfcG9zIDwtIDA7XG4gIGxldCBsY3AgPSBsYi5sZXhfY3Vycl9wIGluXG4gIGlmIGxjcCAhPSBkdW1teV9wb3MgdGhlblxuICAgIGxiLmxleF9jdXJyX3AgPC0ge3plcm9fcG9zIHdpdGggcG9zX2ZuYW1lID0gbGNwLnBvc19mbmFtZX07XG4gIGxiLmxleF9idWZmZXJfbGVuIDwtIDA7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG5vcGVuIExleGluZ1xuXG4oKiBJbnRlcm5hbCBpbnRlcmZhY2UgdG8gdGhlIHBhcnNpbmcgZW5naW5lICopXG5cbnR5cGUgcGFyc2VyX2VudiA9XG4gIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopXG4gICAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQgYXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2YgdGhlIHN0YWNrcyAqKVxuICAgIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgqIEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKilcbiAgICBtdXRhYmxlIGN1cnJfY2hhciA6IGludDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKilcbiAgICBtdXRhYmxlIGx2YWwgOiBPYmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wqKVxuICAgIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgqIEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKVxuICAgIG11dGFibGUgYXNwIDogaW50OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJocyBpdGVtcyBpbiB0aGUgcnVsZSAqKVxuICAgIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAgICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKVxuICAgIG11dGFibGUgc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAgKCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopXG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG50eXBlIHBhcnNlX3RhYmxlcyA9XG4gIHsgYWN0aW9ucyA6IChwYXJzZXJfZW52IC0+IE9iai50KSBhcnJheTtcbiAgICB0cmFuc2xfY29uc3QgOiBpbnQgYXJyYXk7XG4gICAgdHJhbnNsX2Jsb2NrIDogaW50IGFycmF5O1xuICAgIGxocyA6IHN0cmluZztcbiAgICBsZW4gOiBzdHJpbmc7XG4gICAgZGVmcmVkIDogc3RyaW5nO1xuICAgIGRnb3RvIDogc3RyaW5nO1xuICAgIHNpbmRleCA6IHN0cmluZztcbiAgICByaW5kZXggOiBzdHJpbmc7XG4gICAgZ2luZGV4IDogc3RyaW5nO1xuICAgIHRhYmxlc2l6ZSA6IGludDtcbiAgICB0YWJsZSA6IHN0cmluZztcbiAgICBjaGVjayA6IHN0cmluZztcbiAgICBlcnJvcl9mdW5jdGlvbiA6IHN0cmluZyAtPiB1bml0O1xuICAgIG5hbWVzX2NvbnN0IDogc3RyaW5nO1xuICAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nIH1cblxuZXhjZXB0aW9uIFlZZXhpdCBvZiBPYmoudFxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgcGFyc2VyX2lucHV0ID1cbiAgICBTdGFydFxuICB8IFRva2VuX3JlYWRcbiAgfCBTdGFja3NfZ3Jvd25fMVxuICB8IFN0YWNrc19ncm93bl8yXG4gIHwgU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkXG4gIHwgRXJyb3JfZGV0ZWN0ZWRcblxudHlwZSBwYXJzZXJfb3V0cHV0ID1cbiAgICBSZWFkX3Rva2VuXG4gIHwgUmFpc2VfcGFyc2VfZXJyb3JcbiAgfCBHcm93X3N0YWNrc18xXG4gIHwgR3Jvd19zdGFja3NfMlxuICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uXG4gIHwgQ2FsbF9lcnJvcl9mdW5jdGlvblxuXG4oKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxubGV0IF8gPSBbUmVhZF90b2tlbjsgUmFpc2VfcGFyc2VfZXJyb3I7IEdyb3dfc3RhY2tzXzE7IEdyb3dfc3RhY2tzXzI7XG4gICAgICAgICBDb21wdXRlX3NlbWFudGljX2FjdGlvbjsgQ2FsbF9lcnJvcl9mdW5jdGlvbl1cblxuZXh0ZXJuYWwgcGFyc2VfZW5naW5lIDpcbiAgICBwYXJzZV90YWJsZXMgLT4gcGFyc2VyX2VudiAtPiBwYXJzZXJfaW5wdXQgLT4gT2JqLnQgLT4gcGFyc2VyX291dHB1dFxuICAgID0gXCJjYW1sX3BhcnNlX2VuZ2luZVwiXG5cbmV4dGVybmFsIHNldF90cmFjZTogYm9vbCAtPiBib29sXG4gICAgPSBcImNhbWxfc2V0X3BhcnNlcl90cmFjZVwiXG5cbmxldCBlbnYgPVxuICB7IHNfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAwO1xuICAgIHZfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCAoT2JqLnJlcHIgKCkpO1xuICAgIHN5bWJfc3RhcnRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmRfc3RhY2sgPSBBcnJheS5tYWtlIDEwMCBkdW1teV9wb3M7XG4gICAgc3RhY2tzaXplID0gMTAwO1xuICAgIHN0YWNrYmFzZSA9IDA7XG4gICAgY3Vycl9jaGFyID0gMDtcbiAgICBsdmFsID0gT2JqLnJlcHIgKCk7XG4gICAgc3ltYl9zdGFydCA9IGR1bW15X3BvcztcbiAgICBzeW1iX2VuZCA9IGR1bW15X3BvcztcbiAgICBhc3AgPSAwO1xuICAgIHJ1bGVfbGVuID0gMDtcbiAgICBydWxlX251bWJlciA9IDA7XG4gICAgc3AgPSAwO1xuICAgIHN0YXRlID0gMDtcbiAgICBlcnJmbGFnID0gMCB9XG5cbmxldCBncm93X3N0YWNrcygpID1cbiAgbGV0IG9sZHNpemUgPSBlbnYuc3RhY2tzaXplIGluXG4gIGxldCBuZXdzaXplID0gb2xkc2l6ZSAqIDIgaW5cbiAgbGV0IG5ld19zID0gQXJyYXkubWFrZSBuZXdzaXplIDBcbiAgYW5kIG5ld192ID0gQXJyYXkubWFrZSBuZXdzaXplIChPYmoucmVwciAoKSlcbiAgYW5kIG5ld19zdGFydCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3NcbiAgYW5kIG5ld19lbmQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zIGluXG4gICAgQXJyYXkuYmxpdCBlbnYuc19zdGFjayAwIG5ld19zIDAgb2xkc2l6ZTtcbiAgICBlbnYuc19zdGFjayA8LSBuZXdfcztcbiAgICBBcnJheS5ibGl0IGVudi52X3N0YWNrIDAgbmV3X3YgMCBvbGRzaXplO1xuICAgIGVudi52X3N0YWNrIDwtIG5ld192O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfc3RhcnRfc3RhY2sgMCBuZXdfc3RhcnQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX3N0YXJ0X3N0YWNrIDwtIG5ld19zdGFydDtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX2VuZF9zdGFjayAwIG5ld19lbmQgMCBvbGRzaXplO1xuICAgIGVudi5zeW1iX2VuZF9zdGFjayA8LSBuZXdfZW5kO1xuICAgIGVudi5zdGFja3NpemUgPC0gbmV3c2l6ZVxuXG5sZXQgY2xlYXJfcGFyc2VyKCkgPVxuICBBcnJheS5maWxsIGVudi52X3N0YWNrIDAgZW52LnN0YWNrc2l6ZSAoT2JqLnJlcHIgKCkpO1xuICBlbnYubHZhbCA8LSBPYmoucmVwciAoKVxuXG5sZXQgY3VycmVudF9sb29rYWhlYWRfZnVuID0gcmVmIChmdW4gKF8gOiBPYmoudCkgLT4gZmFsc2UpXG5cbmxldCB5eXBhcnNlIHRhYmxlcyBzdGFydCBsZXhlciBsZXhidWYgPVxuICBsZXQgcmVjIGxvb3AgY21kIGFyZyA9XG4gICAgbWF0Y2ggcGFyc2VfZW5naW5lIHRhYmxlcyBlbnYgY21kIGFyZyB3aXRoXG4gICAgICBSZWFkX3Rva2VuIC0+XG4gICAgICAgIGxldCB0ID0gT2JqLnJlcHIobGV4ZXIgbGV4YnVmKSBpblxuICAgICAgICBlbnYuc3ltYl9zdGFydCA8LSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgICAgIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgICAgICAgbG9vcCBUb2tlbl9yZWFkIHRcbiAgICB8IFJhaXNlX3BhcnNlX2Vycm9yIC0+XG4gICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvbiAtPlxuICAgICAgICBsZXQgKGFjdGlvbiwgdmFsdWUpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIChTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWQsIHRhYmxlcy5hY3Rpb25zLihlbnYucnVsZV9udW1iZXIpIGVudilcbiAgICAgICAgICB3aXRoIFBhcnNlX2Vycm9yIC0+XG4gICAgICAgICAgICAoRXJyb3JfZGV0ZWN0ZWQsIE9iai5yZXByICgpKSBpblxuICAgICAgICBsb29wIGFjdGlvbiB2YWx1ZVxuICAgIHwgR3Jvd19zdGFja3NfMSAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8xIChPYmoucmVwciAoKSlcbiAgICB8IEdyb3dfc3RhY2tzXzIgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMiAoT2JqLnJlcHIgKCkpXG4gICAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uIC0+XG4gICAgICAgIHRhYmxlcy5lcnJvcl9mdW5jdGlvbiBcInN5bnRheCBlcnJvclwiO1xuICAgICAgICBsb29wIEVycm9yX2RldGVjdGVkIChPYmoucmVwciAoKSkgaW5cbiAgbGV0IGluaXRfYXNwID0gZW52LmFzcFxuICBhbmQgaW5pdF9zcCA9IGVudi5zcFxuICBhbmQgaW5pdF9zdGFja2Jhc2UgPSBlbnYuc3RhY2tiYXNlXG4gIGFuZCBpbml0X3N0YXRlID0gZW52LnN0YXRlXG4gIGFuZCBpbml0X2N1cnJfY2hhciA9IGVudi5jdXJyX2NoYXJcbiAgYW5kIGluaXRfbHZhbCA9IGVudi5sdmFsXG4gIGFuZCBpbml0X2VycmZsYWcgPSBlbnYuZXJyZmxhZyBpblxuICBlbnYuc3RhY2tiYXNlIDwtIGVudi5zcCArIDE7XG4gIGVudi5jdXJyX2NoYXIgPC0gc3RhcnQ7XG4gIGVudi5zeW1iX2VuZCA8LSBsZXhidWYubGV4X2N1cnJfcDtcbiAgdHJ5XG4gICAgbG9vcCBTdGFydCAoT2JqLnJlcHIgKCkpXG4gIHdpdGggZXhuIC0+XG4gICAgbGV0IGN1cnJfY2hhciA9IGVudi5jdXJyX2NoYXIgaW5cbiAgICBlbnYuYXNwIDwtIGluaXRfYXNwO1xuICAgIGVudi5zcCA8LSBpbml0X3NwO1xuICAgIGVudi5zdGFja2Jhc2UgPC0gaW5pdF9zdGFja2Jhc2U7XG4gICAgZW52LnN0YXRlIDwtIGluaXRfc3RhdGU7XG4gICAgZW52LmN1cnJfY2hhciA8LSBpbml0X2N1cnJfY2hhcjtcbiAgICBlbnYubHZhbCA8LSBpbml0X2x2YWw7XG4gICAgZW52LmVycmZsYWcgPC0gaW5pdF9lcnJmbGFnO1xuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICBZWWV4aXQgdiAtPlxuICAgICAgICBPYmoubWFnaWMgdlxuICAgIHwgXyAtPlxuICAgICAgICBjdXJyZW50X2xvb2thaGVhZF9mdW4gOj1cbiAgICAgICAgICAoZnVuIHRvayAtPlxuICAgICAgICAgICAgaWYgT2JqLmlzX2Jsb2NrIHRva1xuICAgICAgICAgICAgdGhlbiB0YWJsZXMudHJhbnNsX2Jsb2NrLihPYmoudGFnIHRvaykgPSBjdXJyX2NoYXJcbiAgICAgICAgICAgIGVsc2UgdGFibGVzLnRyYW5zbF9jb25zdC4oT2JqLm1hZ2ljIHRvaykgPSBjdXJyX2NoYXIpO1xuICAgICAgICByYWlzZSBleG5cblxubGV0IHBlZWtfdmFsIGVudiBuID1cbiAgT2JqLm1hZ2ljIGVudi52X3N0YWNrLihlbnYuYXNwIC0gbilcblxubGV0IHN5bWJvbF9zdGFydF9wb3MgKCkgPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8PSAwIHRoZW4gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBzdCA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBsZXQgZW4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGlmIHN0IDw+IGVuIHRoZW4gc3QgZWxzZSBsb29wIChpIC0gMSlcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBlbnYucnVsZV9sZW5cblxubGV0IHN5bWJvbF9lbmRfcG9zICgpID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwKVxubGV0IHJoc19zdGFydF9wb3MgbiA9IGVudi5zeW1iX3N0YXJ0X3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxubGV0IHJoc19lbmRfcG9zIG4gPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5cbmxldCBzeW1ib2xfc3RhcnQgKCkgPSAoc3ltYm9sX3N0YXJ0X3BvcyAoKSkucG9zX2NudW1cbmxldCBzeW1ib2xfZW5kICgpID0gKHN5bWJvbF9lbmRfcG9zICgpKS5wb3NfY251bVxubGV0IHJoc19zdGFydCBuID0gKHJoc19zdGFydF9wb3MgbikucG9zX2NudW1cbmxldCByaHNfZW5kIG4gPSAocmhzX2VuZF9wb3MgbikucG9zX2NudW1cblxubGV0IGlzX2N1cnJlbnRfbG9va2FoZWFkIHRvayA9XG4gICghY3VycmVudF9sb29rYWhlYWRfZnVuKShPYmoucmVwciB0b2spXG5cbmxldCBwYXJzZV9lcnJvciAoXyA6IHN0cmluZykgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBlbHRcbiAgICB0eXBlIHRcbiAgICB2YWwgZW1wdHk6IHRcbiAgICB2YWwgYWRkOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHNpbmdsZXRvbjogZWx0IC0+IHRcbiAgICB2YWwgcmVtb3ZlOiBlbHQgLT4gdCAtPiB0XG4gICAgdmFsIHVuaW9uOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBpbnRlcjogdCAtPiB0IC0+IHRcbiAgICB2YWwgZGlzam9pbnQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGRpZmY6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGNhcmRpbmFsOiB0IC0+IGludFxuICAgIHZhbCBlbGVtZW50czogdCAtPiBlbHQgbGlzdFxuICAgIHZhbCBtaW5fZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtaW5fZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIG1heF9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1heF9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiB0IC0+IGVsdFxuICAgIHZhbCBjaG9vc2Vfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXI6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChlbHQgLT4gZWx0IG9wdGlvbikgLT4gdCAtPiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgaXNfZW1wdHk6IHQgLT4gYm9vbFxuICAgIHZhbCBtZW06IGVsdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG9mX2xpc3Q6IGVsdCBsaXN0IC0+IHRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBlbHQgLT4gdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgdG9fcmV2X3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiBlbHQgU2VxLnQgLT4gdCAtPiB0XG4gICAgdmFsIG9mX3NlcSA6IGVsdCBTZXEudCAtPiB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcbiAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2Yge2w6dDsgdjplbHQ7IHI6dDsgaDppbnR9XG5cbiAgICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZVxuICAgICAgIGNoaWxkcmVuIGRpZmZlciBieSBhdCBtb3N0IDIgKilcblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgICgqIENyZWF0ZXMgYSBuZXcgbm9kZSB3aXRoIGxlZnQgc29uIGwsIHZhbHVlIHYgYW5kIHJpZ2h0IHNvbiByLlxuICAgICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBoZWlnaHQgZm9yIGJldHRlciBzcGVlZC4gKilcblxuICAgIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gICAgbGV0IGJhbCBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1scmw7IHY9bHJ2OyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPXJsbDsgdj1ybHY7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gICAgbGV0IHJlYyBhZGQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB0IGVsc2VcbiAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBsIGluXG4gICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdCBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdCBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCBzaW5nbGV0b24geCA9IE5vZGV7bD1FbXB0eTsgdj14OyByPUVtcHR5OyBoPTF9XG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIHYgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQgZWxlbWVudHMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkgZWxlbWVudC5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2VsZW1lbnQgeCBsKSB2IHJcblxuICAgIGxldCByZWMgYWRkX21heF9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgbCB2IChhZGRfbWF4X2VsZW1lbnQgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fZWxlbWVudCB2IHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2VsZW1lbnQgdiBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IHI9bHI7IGg9bGh9LCBOb2Rle2w9cmw7IHY9cnY7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBybCkgcnYgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgclxuXG4gICAgKCogU21hbGxlc3QgYW5kIGdyZWF0ZXN0IGVsZW1lbnQgb2YgYSBzZXQgKilcblxuICAgIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0IGxcblxuICAgIGxldCByZWMgbWluX2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdF9vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHQgclxuXG4gICAgbGV0IHJlYyBtYXhfZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0X29wdCByXG5cbiAgICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyByfSAtPiByXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGJhbCB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBqb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBTcGxpdHRpbmcuICBzcGxpdCB4IHMgcmV0dXJucyBhIHRyaXBsZSAobCwgcHJlc2VudCwgcikgd2hlcmVcbiAgICAgICAgLSBsIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA8IHhcbiAgICAgICAgLSByIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgb2YgcyB0aGF0IGFyZSA+IHhcbiAgICAgICAgLSBwcmVzZW50IGlzIGZhbHNlIGlmIHMgY29udGFpbnMgbm8gZWxlbWVudCBlcXVhbCB0byB4LFxuICAgICAgICAgIG9yIHRydWUgaWYgcyBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHguICopXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgZmFsc2UsIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCB0cnVlLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBsciwgcHJlcywgcnIpXG5cbiAgICAoKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2V0IG9wZXJhdGlvbnMgKilcblxuICAgIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBFbXB0eSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9IGFzIHQpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpblxuICAgICAgICAgICAgICBpZiBsID09IGxsIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsbCB2IHJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpblxuICAgICAgICAgICAgICBpZiByID09IHJyIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIGJhbCBsIHYgcnJcblxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIHQyKSAtPiB0MlxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxOyBoPWgxfSwgTm9kZXtsPWwyOyB2PXYyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDEgdGhlbiBhZGQgdjIgczEgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwyLCBfLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgaDEgPSAxIHRoZW4gYWRkIHYxIHMyIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMSwgXywgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYyICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoaW50ZXIgbDEgbDIpIChpbnRlciByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpXG5cbiAgICAoKiBTYW1lIGFzIHNwbGl0LCBidXQgY29tcHV0ZSB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXNcbiAgICAgICBvbmx5IGlmIHRoZSBwaXZvdCBlbGVtZW50IGlzIG5vdCBpbiB0aGUgc2V0LiAgVGhlIHJpZ2h0IHN1YnRyZWVcbiAgICAgICBpcyBjb21wdXRlZCBvbiBkZW1hbmQuICopXG5cbiAgICB0eXBlIHNwbGl0X2JpcyA9XG4gICAgICB8IEZvdW5kXG4gICAgICB8IE5vdEZvdW5kIG9mIHQgKiAodW5pdCAtPiB0KVxuXG4gICAgbGV0IHJlYyBzcGxpdF9iaXMgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm90Rm91bmQgKEVtcHR5LCAoZnVuICgpIC0+IEVtcHR5KSlcbiAgICAgIHwgTm9kZXtsOyB2OyByOyBffSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBGb3VuZFxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggbCB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsbCwgcmwpIC0+IE5vdEZvdW5kIChsbCwgKGZ1biAoKSAtPiBqb2luIChybCAoKSkgdiByKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCByIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxyLCBycikgLT4gTm90Rm91bmQgKGpvaW4gbCB2IGxyLCBycilcblxuICAgIGxldCByZWMgZGlzam9pbnQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIHwgKF8sIEVtcHR5KSAtPiB0cnVlXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBpZiBzMSA9PSBzMiB0aGVuIGZhbHNlXG4gICAgICAgICAgZWxzZSBtYXRjaCBzcGxpdF9iaXMgdjEgdDIgd2l0aFxuICAgICAgICAgICAgICBOb3RGb3VuZChsMiwgcjIpIC0+IGRpc2pvaW50IGwxIGwyICYmIGRpc2pvaW50IHIxIChyMiAoKSlcbiAgICAgICAgICAgIHwgRm91bmQgLT4gZmFsc2VcblxuICAgIGxldCByZWMgZGlmZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gRW1wdHlcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChkaWZmIGwxIGwyKSB2MSAoZGlmZiByMSByMilcbiAgICAgICAgICB8IChsMiwgdHJ1ZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpXG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIHIsIGUpKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICB8IChNb3JlKHYxLCByMSwgZTEpLCBNb3JlKHYyLCByMiwgZTIpKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG5cbiAgICBsZXQgY29tcGFyZSBzMSBzMiA9XG4gICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHMxIEVuZCkgKGNvbnNfZW51bSBzMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgczEgczIgPVxuICAgICAgY29tcGFyZSBzMSBzMiA9IDBcblxuICAgIGxldCByZWMgc3Vic2V0IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgRW1wdHksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bD1sMTsgdj12MTsgcj1yMX0sIChOb2RlIHtsPWwyOyB2PXYyOyByPXIyfSBhcyB0MikgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IGwxIGwyICYmIHN1YnNldCByMSByMlxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPWwxOyB2PXYxOyByPUVtcHR5OyBoPTB9KSBsMiAmJiBzdWJzZXQgcjEgdDJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9RW1wdHk7IHY9djE7IHI9cjE7IGg9MH0pIHIyICYmIHN1YnNldCBsMSB0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGl0ZXIgZiBsOyBmIHY7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIGZvbGQgZiBzIGFjY3UgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBmb2xkIGYgciAoZiB2IChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2IHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w7IHY7IHJ9KSBhcyB0IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2IHRoZW5cbiAgICAgICAgICAgIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gdCBlbHNlIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdlxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IHJmKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZXtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBlbGVtZW50cyBzID1cbiAgICAgIGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2VsdFxuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fZWx0X29wdFxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiB2XG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSB2XG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHRyeV9qb2luIGwgdiByID1cbiAgICAgICgqIFtqb2luIGwgdiByXSBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiAoZWxlbWVudHMgb2YgbCA8IHYgPFxuICAgICAgICAgZWxlbWVudHMgb2Ygcik7IHVzZSBbdHJ5X2pvaW4gbCB2IHJdIHdoZW4gdGhpcyBwcm9wZXJ0eSBtYXlcbiAgICAgICAgIG5vdCBob2xkLCBidXQgeW91IGhvcGUgaXQgZG9lcyBob2xkIGluIHRoZSBjb21tb24gY2FzZSAqKVxuICAgICAgaWYgKGwgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSAobWF4X2VsdCBsKSB2IDwgMClcbiAgICAgICYmIChyID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgdiAobWluX2VsdCByKSA8IDApXG4gICAgICB0aGVuIGpvaW4gbCB2IHJcbiAgICAgIGVsc2UgdW5pb24gbCAoYWRkIHYgcilcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuXG4gICAgbGV0IHRyeV9jb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiB0cnlfam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICgqIGVuZm9yY2UgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyICopXG4gICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggdicgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdicgLT5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHRyeV9jb25jYXQgbCcgcidcbiAgICAgICAgIGVuZFxuXG4gICAgbGV0IG9mX3NvcnRlZF9saXN0IGwgPVxuICAgICAgbGV0IHJlYyBzdWIgbiBsID1cbiAgICAgICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgICAgIHwgMCwgbCAtPiBFbXB0eSwgbFxuICAgICAgICB8IDEsIHgwIDo6IGwgLT4gTm9kZSB7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfSwgbFxuICAgICAgICB8IDIsIHgwIDo6IHgxIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7IHI9RW1wdHk7IGg9Mn0sIGxcbiAgICAgICAgfCAzLCB4MCA6OiB4MSA6OiB4MiA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxO1xuICAgICAgICAgICAgICAgICByPU5vZGV7bD1FbXB0eTsgdj14Mjsgcj1FbXB0eTsgaD0xfTsgaD0yfSwgbFxuICAgICAgICB8IG4sIGwgLT5cbiAgICAgICAgICBsZXQgbmwgPSBuIC8gMiBpblxuICAgICAgICAgIGxldCBsZWZ0LCBsID0gc3ViIG5sIGwgaW5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgbWlkIDo6IGwgLT5cbiAgICAgICAgICAgIGxldCByaWdodCwgbCA9IHN1YiAobiAtIG5sIC0gMSkgbCBpblxuICAgICAgICAgICAgY3JlYXRlIGxlZnQgbWlkIHJpZ2h0LCBsXG4gICAgICBpblxuICAgICAgZnN0IChzdWIgKExpc3QubGVuZ3RoIGwpIGwpXG5cbiAgICBsZXQgdG9fbGlzdCA9IGVsZW1lbnRzXG5cbiAgICBsZXQgb2ZfbGlzdCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBlbXB0eVxuICAgICAgfCBbeDBdIC0+IHNpbmdsZXRvbiB4MFxuICAgICAgfCBbeDA7IHgxXSAtPiBhZGQgeDEgKHNpbmdsZXRvbiB4MClcbiAgICAgIHwgW3gwOyB4MTsgeDJdIC0+IGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDNdIC0+IGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKVxuICAgICAgfCBbeDA7IHgxOyB4MjsgeDM7IHg0XSAtPiBhZGQgeDQgKGFkZCB4MyAoYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpKSlcbiAgICAgIHwgXyAtPiBvZl9zb3J0ZWRfbGlzdCAoTGlzdC5zb3J0X3VuaXEgT3JkLmNvbXBhcmUgbClcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gcyB4IC0+IGFkZCB4IHMpIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBjID0gc2VxX29mX2VudW1fIChjb25zX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKHgsIHQsIHJlc3QpIC0+IFNlcS5Db25zICh4LCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPSByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IHMgPVxuICAgICAgbGV0IHJlYyBhdXggbG93IHMgYyA9IG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyByOyB2OyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IHMgRW5kKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhKydhIHRcbiAgICB2YWwgZW1wdHk6ICdhIHRcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZF90b19saXN0OiBrZXkgLT4gJ2EgLT4gJ2EgbGlzdCB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCB1cGRhdGU6IGtleSAtPiAoJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHNpbmdsZXRvbjoga2V5IC0+ICdhIC0+ICdhIHRcbiAgICB2YWwgcmVtb3ZlOiBrZXkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIG1lcmdlOlxuICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT5cbiAgICAgICdhIHQgLT4gJ2IgdCAtPiAnYyB0XG4gICAgdmFsIHVuaW9uOiAoa2V5IC0+ICdhIC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY2FyZGluYWw6ICdhIHQgLT4gaW50XG4gICAgdmFsIGJpbmRpbmdzOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBtaW5fYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1pbl9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBtYXhfYmluZGluZzogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIG1heF9iaW5kaW5nX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBjaG9vc2U6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBjaG9vc2Vfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIHNwbGl0OiBrZXkgLT4gJ2EgdCAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbToga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBlcXVhbDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZm9yX2FsbDogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZXhpc3RzOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCB0b19saXN0IDogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgb2ZfbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IGFkZF90b19saXN0IHggZGF0YSBtID1cbiAgICAgIGxldCBhZGQgPSBmdW5jdGlvbiBOb25lIC0+IFNvbWUgW2RhdGFdIHwgU29tZSBsIC0+IFNvbWUgKGRhdGEgOjogbCkgaW5cbiAgICAgIHVwZGF0ZSB4IGFkZCBtXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCB0b19saXN0ID0gYmluZGluZ3NcbiAgICBsZXQgb2ZfbGlzdCBicyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBic1xuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLHYpIC0+IGFkZCBrIHYgbSkgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT4gU2VxLkNvbnMgKChrLHYpLCBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3NlcSBtID1cbiAgICAgIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIG0gRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgZDsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgZCwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPlxuICAgICAgICAgIFNlcS5Db25zICgoayx2KSwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID1cbiAgICAgIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgbSA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgbSBjID0gbWF0Y2ggbSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCBkLCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgZCwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgbSBFbmQpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIGMgOiAnYSBsaXN0OyBtdXRhYmxlIGxlbiA6IGludDsgfVxuXG5leGNlcHRpb24gRW1wdHlcblxubGV0IGNyZWF0ZSAoKSA9IHsgYyA9IFtdOyBsZW4gPSAwOyB9XG5cbmxldCBjbGVhciBzID0gcy5jIDwtIFtdOyBzLmxlbiA8LSAwXG5cbmxldCBjb3B5IHMgPSB7IGMgPSBzLmM7IGxlbiA9IHMubGVuOyB9XG5cbmxldCBwdXNoIHggcyA9IHMuYyA8LSB4IDo6IHMuYzsgcy5sZW4gPC0gcy5sZW4gKyAxXG5cbmxldCBwb3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBoZFxuICB8IFtdICAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgcG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IFNvbWUgaGRcbiAgfCBbXSAgICAgLT4gTm9uZVxuXG5sZXQgZHJvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBfaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxXG4gIHwgW10gLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgIFBpZXJyZSBXZWlzIGFuZCBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTkgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRXh0ZW5zaWJsZSBidWZmZXJzICopXG5cbigqIFRoZSBbaW5uZXJfYnVmZmVyXSB0eXBlIGVuc3VyZXMgdGhhdCB0aGUgW2xlbmd0aF0gYW5kIFtidWZmZXJdIGZpZWxkcyBhcmVcbiAgIGFsd2F5cyBzeW5jaHJvbml6ZWQsIFtsZW5ndGggPSBCeXRlcy5sZW5ndGggYnVmZmVyXSwgZXZlbiBpbiBwcmVzZW5jZVxuICAgb2YgZGF0YSByYWNlcy5cbiopXG50eXBlIGlubmVyX2J1ZmZlciA9IHtcbiAgYnVmZmVyOiBieXRlcztcbiAgbGVuZ3RoOiBpbnQ7XG59XG5cbnR5cGUgdCA9XG4ge211dGFibGUgaW5uZXIgOiBpbm5lcl9idWZmZXI7XG4gIG11dGFibGUgcG9zaXRpb24gOiBpbnQ7XG4gIGluaXRpYWxfYnVmZmVyIDogYnl0ZXN9XG4oKiBJbnZhcmlhbnRzOiBhbGwgcGFydHMgb2YgdGhlIGNvZGUgcHJlc2VydmUgdGhlIGludmFyaWFudHMgdGhhdDpcbiAgIC0gW2lubmVyLmxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBpbm5lci5idWZmZXJdXG4gICBJbiBhYnNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIGFsc28gaGF2ZVxuICAgLSBbMCA8PSBiLnBvc2l0aW9uIDw9IGIuaW5uZXIubGVuZ3RoXVxuXG4gICBOb3RlIGluIHBhcnRpY3VsYXIgdGhhdCBbYi5wb3NpdGlvbiA9IGIuaW5uZXIubGVuZ3RoXSBpcyBsZWdhbCxcbiAgIGl0IG1lYW5zIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsIGFuZCB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5kZWRcbiAgIGJlZm9yZSBhbnkgZnVydGhlciBhZGRpdGlvbi4gKilcblxubGV0IGNyZWF0ZSBuID1cbiBsZXQgbiA9IGlmIG4gPCAxIHRoZW4gMSBlbHNlIG4gaW5cbiBsZXQgbiA9IGlmIG4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBTeXMubWF4X3N0cmluZ19sZW5ndGggZWxzZSBuIGluXG4gbGV0IHMgPSBCeXRlcy5jcmVhdGUgbiBpblxuIHsgaW5uZXIgPSB7IGJ1ZmZlciA9IHM7IGxlbmd0aCA9IG59OyBwb3NpdGlvbiA9IDA7IGluaXRpYWxfYnVmZmVyID0gc31cblxubGV0IGNvbnRlbnRzIGIgPSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxubGV0IHRvX2J5dGVzIGIgPSBCeXRlcy5zdWIgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBzdWIgYiBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGIucG9zaXRpb24gLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5zdWJcIlxuICBlbHNlIEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgb2ZzIGxlblxuXG5cbmxldCBibGl0IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IHNyY29mZiA8IDAgfHwgc3Jjb2ZmID4gc3JjLnBvc2l0aW9uIC0gbGVuXG4gICAgICAgICAgICAgfHwgZHN0b2ZmIDwgMCB8fCBkc3RvZmYgPiAoQnl0ZXMubGVuZ3RoIGRzdCkgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5ibGl0XCJcbiAgZWxzZVxuICAgIEJ5dGVzLmJsaXQgc3JjLmlubmVyLmJ1ZmZlciBzcmNvZmYgZHN0IGRzdG9mZiBsZW5cblxuXG5sZXQgbnRoIGIgb2ZzID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBvZnMgPCAwIHx8IG9mcyA+PSBwb3NpdGlvbiB8fCBwb3NpdGlvbiA+IGxlbmd0aCB0aGVuXG4gICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5udGhcIlxuICBlbHNlIEJ5dGVzLnVuc2FmZV9nZXQgYnVmZmVyIG9mc1xuXG5cbmxldCBsZW5ndGggYiA9IGIucG9zaXRpb25cblxubGV0IGNsZWFyIGIgPSBiLnBvc2l0aW9uIDwtIDBcblxubGV0IHJlc2V0IGIgPVxuICBiLnBvc2l0aW9uIDwtIDA7XG4gIGxldCBpbm5lciA9XG4gICAgeyBidWZmZXIgPSBiLmluaXRpYWxfYnVmZmVyOyBsZW5ndGggPSBCeXRlcy5sZW5ndGggYi5pbml0aWFsX2J1ZmZlciB9XG4gIGluXG4gIGIuaW5uZXIgPC0gaW5uZXJcblxuKCogW3Jlc2l6ZSBiIG1vcmVdIGVuc3VyZXMgdGhhdCBbYi5wb3NpdGlvbiArIG1vcmUgPD0gYi5pbm5lci5sZW5ndGhdIGhvbGRzXG4gICBieSBkeW5hbWljYWxseSBleHRlbmRpbmcgW2IuaW5uZXJdIGlmIG5lY2Vzc2FyeSAtLSBhbmQgdGh1c1xuICAgaW5jcmVhc2luZyBbYi5pbm5lci5sZW5ndGhdLlxuKilcbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IG9sZF9wb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCBvbGRfbGVuID0gYi5pbm5lci5sZW5ndGggaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICB3aGlsZSBvbGRfcG9zICsgbW9yZSA+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuaW5uZXIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuaW5uZXIgPC0geyBidWZmZXIgPSBuZXdfYnVmZmVyOyBsZW5ndGggPSAhbmV3X2xlbiB9XG5cbigqIE5vdGU6XG4gICAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGJlbG93IGhhdmUgYSBmYXN0IHBhdGggd2hlbiB0aGUgaW5uZXJcbiAgYnVmZmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBleHRlbmRlZC5cbiAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB1bnNhZmUgYWNjZXNzZXMgb24gdGhlXG4gIGNvbnRlbnRzIG9mIHRoZSBbaW5uZXJdIGZpZWxkIHNpbmNlIGl0cyBmaWVsZHMgYXJlIGltbXV0YWJsZS5cbiAgSW4gcHJlc2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgbWF5IGFjY2VzcyB0aGUgd3JvbmcgaW5uZXIgYnVmZmVyLCBidXQgd2VcbiAgd2lsbCB1c2UgdGhpcyBidWZmZXIgc2FmZWx5LlxuICBBcyBzb29uIGFzIHdlIG5lZWQgdG8gcmVzaXplIHRoZSBidWZmZXIsIHdlIGZhbGwgYmFjayB0byBzYWZlIGFjY2Vzc2VzLlxuKilcblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIHBvcyA+PSBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMTtcbiAgICBCeXRlcy5zZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBjXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxubGV0IHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCA9IDRcbmxldCB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4ID0gNFxuXG5sZXQgcmVjIGFkZF91dGZfOF91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl84X3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl84X3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZiZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmxlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZsZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIG9mZnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlblxuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyBvZmZzZXQgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjsgbGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCBpblxuICAgICBpZiBzdG9wID0gc3RhcnQgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIGZpbmRfaWRlbnQgcyBqIGxpbSB3aXRoXG4gICAgICAgICB8IGlkZW50LCBuZXh0X2kgLT5cbiAgICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJyQnO1xuICAgICAgICAgICBzdWJzdCAnICcgalxuICAgICAgICAgZW5kXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cztcbiAgICAgICAgIGlmIGN1cnJlbnQgPD4gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgUGFzY2FsIEN1b3EsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHRcbmV4dGVybmFsIGNyZWF0ZTogdW5pdCAtPiB0ID0gXCJjYW1sX21sX211dGV4X25ld1wiXG5leHRlcm5hbCBsb2NrOiB0IC0+IHVuaXQgPSBcImNhbWxfbWxfbXV0ZXhfbG9ja1wiXG5leHRlcm5hbCB0cnlfbG9jazogdCAtPiBib29sID0gXCJjYW1sX21sX211dGV4X3RyeV9sb2NrXCJcbmV4dGVybmFsIHVubG9jazogdCAtPiB1bml0ID0gXCJjYW1sX21sX211dGV4X3VubG9ja1wiXG5cbigqIHByaXZhdGUgcmUtZXhwb3J0ICopXG5leHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbigqIGNhbm5vdCBpbmxpbmUsIG90aGVyd2lzZSBmbGFtYmRhIG1pZ2h0IG1vdmUgY29kZSBhcm91bmQuICopXG5sZXRbQGlubGluZSBuZXZlcl0gcHJvdGVjdCBtIGYgPVxuICBsb2NrIG07XG4gIG1hdGNoIGYoKSB3aXRoXG4gIHwgeCAtPlxuICAgIHVubG9jayBtOyB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAoKiBOT1RFOiBbdW5sb2NrXSBkb2VzIG5vdCBwb2xsIGZvciBhc3luY2hyb25vdXMgZXhjZXB0aW9ucyAqKVxuICAgIHVubG9jayBtO1xuICAgIHJlcmFpc2UgZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuXG4gICgqIFRoZSBsYXlvdXRzIG9mIFtzdGF0ZV0gYW5kIFt0ZXJtX3N5bmNdIGFyZSBoYXJkLWNvZGVkIGluXG4gICAgIFtydW50aW1lL2RvbWFpbi5jXSAqKVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUnVubmluZ1xuICAgIHwgRmluaXNoZWQgb2YgKCdhLCBleG4pIHJlc3VsdCBbQHdhcm5pbmcgXCItdW51c2VkLWNvbnN0cnVjdG9yXCJdXG5cbiAgdHlwZSAnYSB0ZXJtX3N5bmMgPSB7XG4gICAgKCogcHJvdGVjdGVkIGJ5IFttdXRdICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6ICdhIHN0YXRlIFtAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl0gO1xuICAgIG11dCA6IE11dGV4LnQgO1xuICAgIGNvbmQgOiBDb25kaXRpb24udCA7XG4gIH1cblxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+ICdhKSAtPiAnYSB0ZXJtX3N5bmMgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHQgPSB7XG4gIGRvbWFpbiA6IFJhdy50O1xuICB0ZXJtX3N5bmMgOiAnYSBSYXcudGVybV9zeW5jO1xufVxuXG5tb2R1bGUgRExTID0gc3RydWN0XG5cbiAgbW9kdWxlIE9ial9vcHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgbm9uZSA6IHRcbiAgICB2YWwgc29tZSA6ICdhIC0+IHRcbiAgICB2YWwgaXNfc29tZSA6IHQgLT4gYm9vbFxuXG4gICAgKCoqIFt1bnNhZmVfZ2V0IG9ial0gbWF5IG9ubHkgYmUgY2FsbGVkIHNhZmVseVxuICAgICAgICBpZiBbaXNfc29tZV0gaXMgdHJ1ZS5cblxuICAgICAgICBbdW5zYWZlX2dldCAoc29tZSB2KV0gaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICBbT2JqLm9iaiAoT2JqLnJlcHIgdildLiAqKVxuICAgIHZhbCB1bnNhZmVfZ2V0IDogdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBPYmoudFxuICAgIGxldCBub25lID0gT2JqLnJlcHIgKHJlZiAwKVxuICAgIGxldCBzb21lIHYgPSBPYmoucmVwciB2XG4gICAgbGV0IGlzX3NvbWUgb2JqID0gKG9iaiAhPSBub25lKVxuICAgIGxldCB1bnNhZmVfZ2V0IG9iaiA9IE9iai5vYmogb2JqXG4gIGVuZFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqX29wdC50IGFycmF5XG5cbiAgZXh0ZXJuYWwgZ2V0X2Rsc19zdGF0ZSA6IHVuaXQgLT4gZGxzX3N0YXRlID0gXCIlZGxzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiB1bml0ID1cbiAgICBcImNhbWxfZG9tYWluX2Rsc19zZXRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGNvbXBhcmVfYW5kX3NldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gZGxzX3N0YXRlIC0+IGJvb2wgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX2NvbXBhcmVfYW5kX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNyZWF0ZV9kbHMgKCkgPVxuICAgIGxldCBzdCA9IEFycmF5Lm1ha2UgOCBPYmpfb3B0Lm5vbmUgaW5cbiAgICBzZXRfZGxzX3N0YXRlIHN0XG5cbiAgbGV0IF8gPSBjcmVhdGVfZGxzICgpXG5cbiAgdHlwZSAnYSBrZXkgPSBpbnQgKiAodW5pdCAtPiAnYSlcblxuICBsZXQga2V5X2NvdW50ZXIgPSBBdG9taWMubWFrZSAwXG5cbiAgdHlwZSBrZXlfaW5pdGlhbGl6ZXIgPVxuICAgIEtJOiAnYSBrZXkgKiAoJ2EgLT4gJ2EpIC0+IGtleV9pbml0aWFsaXplclxuXG4gIGxldCBwYXJlbnRfa2V5cyA9IEF0b21pYy5tYWtlIChbXSA6IGtleV9pbml0aWFsaXplciBsaXN0KVxuXG4gIGxldCByZWMgYWRkX3BhcmVudF9rZXkga2kgPVxuICAgIGxldCBsID0gQXRvbWljLmdldCBwYXJlbnRfa2V5cyBpblxuICAgIGlmIG5vdCAoQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwYXJlbnRfa2V5cyBsIChraSA6OiBsKSlcbiAgICB0aGVuIGFkZF9wYXJlbnRfa2V5IGtpXG5cbiAgbGV0IG5ld19rZXkgP3NwbGl0X2Zyb21fcGFyZW50IGluaXRfb3JwaGFuID1cbiAgICBsZXQgaWR4ID0gQXRvbWljLmZldGNoX2FuZF9hZGQga2V5X2NvdW50ZXIgMSBpblxuICAgIGxldCBrID0gKGlkeCwgaW5pdF9vcnBoYW4pIGluXG4gICAgYmVnaW4gbWF0Y2ggc3BsaXRfZnJvbV9wYXJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBzcGxpdCAtPiBhZGRfcGFyZW50X2tleSAoS0koaywgc3BsaXQpKVxuICAgIGVuZDtcbiAgICBrXG5cbiAgKCogSWYgbmVjZXNzYXJ5LCBncm93IHRoZSBjdXJyZW50IGRvbWFpbidzIGxvY2FsIHN0YXRlIGFycmF5IHN1Y2ggdGhhdCBbaWR4XVxuICAgKiBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheS4gKilcbiAgbGV0IHJlYyBtYXliZV9ncm93IGlkeCA9XG4gICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgIGxldCBzeiA9IEFycmF5Lmxlbmd0aCBzdCBpblxuICAgIGlmIGlkeCA8IHN6IHRoZW4gc3RcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgcmVjIGNvbXB1dGVfbmV3X3NpemUgcyA9XG4gICAgICAgIGlmIGlkeCA8IHMgdGhlbiBzIGVsc2UgY29tcHV0ZV9uZXdfc2l6ZSAoMiAqIHMpXG4gICAgICBpblxuICAgICAgbGV0IG5ld19zeiA9IGNvbXB1dGVfbmV3X3NpemUgc3ogaW5cbiAgICAgIGxldCBuZXdfc3QgPSBBcnJheS5tYWtlIG5ld19zeiBPYmpfb3B0Lm5vbmUgaW5cbiAgICAgIEFycmF5LmJsaXQgc3QgMCBuZXdfc3QgMCBzejtcbiAgICAgICgqIFdlIHdhbnQgYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIHNhZmUgd2l0aCByZXNwZWN0IHRvXG4gICAgICAgICBzaW5nbGUtZG9tYWluIG11bHRpLXRocmVhZGluZzogcmV0cnkgaWYgdGhlIERMUyBzdGF0ZSBoYXNcbiAgICAgICAgIGNoYW5nZWQgdW5kZXIgb3VyIGZlZXQuXG4gICAgICAgICBOb3RlIHRoYXQgdGhlIG51bWJlciBvZiByZXRyaWVzIHdpbGwgYmUgdmVyeSBzbWFsbCBpblxuICAgICAgICAgY29udGVuZGVkIHNjZW5hcmlvcywgYXMgdGhlIGFycmF5IG9ubHkgZ3Jvd3MsIHdpdGhcbiAgICAgICAgIGV4cG9uZW50aWFsIHJlc2l6aW5nLiAqKVxuICAgICAgaWYgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSBzdCBuZXdfc3RcbiAgICAgIHRoZW4gbmV3X3N0XG4gICAgICBlbHNlIG1heWJlX2dyb3cgaWR4XG4gICAgZW5kXG5cbiAgbGV0IHNldCAodHlwZSBhKSAoaWR4LCBfaW5pdCkgKHggOiBhKSA9XG4gICAgbGV0IHN0ID0gbWF5YmVfZ3JvdyBpZHggaW5cbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gZW5zdXJlcyB0aGF0IGZsYW1iZGEgZG9lcyBub3QgbG9vayBhdCB0aGUgdHlwZSBvZlxuICAgICAqIFt4XSwgd2hpY2ggbWF5IGJlIGEgW2Zsb2F0XSBhbmQgY29uY2x1ZGUgdGhhdCB0aGUgW3N0XSBpcyBhIGZsb2F0IGFycmF5LlxuICAgICAqIFdlIGRvIG5vdCB3YW50IE9DYW1sJ3MgZmxvYXQgYXJyYXkgb3B0aW1pc2F0aW9uIGtpY2tpbmcgaW4gaGVyZS4gKilcbiAgICBzdC4oaWR4KSA8LSBPYmpfb3B0LnNvbWUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhcnJheV9jb21wYXJlX2FuZF9zZXQgYSBpIG9sZHZhbCBuZXd2YWwgPVxuICAgICgqIE5vdGU6IHdlIGNhbm5vdCB1c2UgW0Bwb2xsIGVycm9yXSBkdWUgdG8gdGhlXG4gICAgICAgYWxsb2NhdGlvbnMgb24gYS4oaSkgaW4gdGhlIERvdWJsZV9hcnJheSBjYXNlLiAqKVxuICAgIGxldCBjdXJ2YWwgPSBhLihpKSBpblxuICAgIGlmIGN1cnZhbCA9PSBvbGR2YWwgdGhlbiAoXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSBuZXd2YWw7XG4gICAgICB0cnVlXG4gICAgKSBlbHNlIGZhbHNlXG5cbiAgbGV0IGdldCAodHlwZSBhKSAoKGlkeCwgaW5pdCkgOiBhIGtleSkgOiBhID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCBvYmogPSBzdC4oaWR4KSBpblxuICAgIGlmIE9ial9vcHQuaXNfc29tZSBvYmpcbiAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgb2JqIDogYSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA6IGEgPSBpbml0ICgpIGluXG4gICAgICBsZXQgbmV3X29iaiA9IE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2KSBpblxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgW3N0XSBvciBbc3QuKGlkeCldIG1heSBoYXZlIGJlZW4gY2hhbmdlZFxuICAgICAgICAgYnkgYW5vdGhlciB0aHJlYWQgb24gdGhlIHNhbWUgZG9tYWluLlxuXG4gICAgICAgICBJZiBbc3RdIGNoYW5nZWQsIGl0IHdhcyByZXNpemVkIGludG8gYSBsYXJnZXIgdmFsdWUsXG4gICAgICAgICB3ZSBjYW4ganVzdCByZXVzZSB0aGUgbmV3IHZhbHVlLlxuXG4gICAgICAgICBJZiBbc3QuKGlkeCldIGNoYW5nZWQsIHdlIGRyb3AgdGhlIGN1cnJlbnQgdmFsdWUgdG8gYXZvaWRcbiAgICAgICAgIGxldHRpbmcgb3RoZXIgdGhyZWFkcyBvYnNlcnZlIGEgJ3JldmVydCcgdGhhdCBmb3JnZXRzXG4gICAgICAgICBwcmV2aW91cyBtb2RpZmljYXRpb25zLiAqKVxuICAgICAgbGV0IHN0ID0gZ2V0X2Rsc19zdGF0ZSAoKSBpblxuICAgICAgaWYgYXJyYXlfY29tcGFyZV9hbmRfc2V0IHN0IGlkeCBvYmogbmV3X29ialxuICAgICAgdGhlbiB2XG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgICgqIGlmIHN0LihpZHgpIGNoYW5nZWQsIHNvbWVvbmUgbXVzdCBoYXZlIGluaXRpYWxpemVkXG4gICAgICAgICAgIHRoZSBrZXkgaW4gdGhlIG1lYW50aW1lLiAqKVxuICAgICAgICBsZXQgdXBkYXRlZF9vYmogPSBzdC4oaWR4KSBpblxuICAgICAgICBpZiBPYmpfb3B0LmlzX3NvbWUgdXBkYXRlZF9vYmpcbiAgICAgICAgdGhlbiAoT2JqX29wdC51bnNhZmVfZ2V0IHVwZGF0ZWRfb2JqIDogYSlcbiAgICAgICAgZWxzZSBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gIHR5cGUga2V5X3ZhbHVlID0gS1YgOiAnYSBrZXkgKiAnYSAtPiBrZXlfdmFsdWVcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IGtleV92YWx1ZSBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoS0kgKGssIHNwbGl0KSkgLT4gS1YgKGssIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDoga2V5X3ZhbHVlIGxpc3QpID1cbiAgICBMaXN0Lml0ZXIgKGZ1biAoS1YgKGssIHYpKSAtPiBzZXQgayB2KSBsXG5lbmRcblxuKCoqKioqKioqIElkZW50aXR5ICoqKioqKioqKiopXG5cbmxldCBnZXRfaWQgeyBkb21haW47IF8gfSA9IGRvbWFpblxuXG5sZXQgc2VsZiAoKSA9IFJhdy5zZWxmICgpXG5cbmxldCBpc19tYWluX2RvbWFpbiAoKSA9IChzZWxmICgpIDo+IGludCkgPSAwXG5cbigqKioqKioqKiBDYWxsYmFja3MgKioqKioqKioqKilcblxuKCogZmlyc3Qgc3Bhd24sIGRvbWFpbiBzdGFydHVwIGFuZCBhdCBleGl0IGZ1bmN0aW9uYWxpdHkgKilcbmxldCBmaXJzdF9kb21haW5fc3Bhd25lZCA9IEF0b21pYy5tYWtlIGZhbHNlXG5cbmxldCBmaXJzdF9zcGF3bl9mdW5jdGlvbiA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgYmVmb3JlX2ZpcnN0X3NwYXduIGYgPVxuICBpZiBBdG9taWMuZ2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImZpcnN0IGRvbWFpbiBhbHJlYWR5IHNwYXduZWRcIilcbiAgZWxzZSBiZWdpblxuICAgIGxldCBvbGRfZiA9ICFmaXJzdF9zcGF3bl9mdW5jdGlvbiBpblxuICAgIGxldCBuZXdfZiAoKSA9IG9sZF9mICgpOyBmICgpIGluXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gbmV3X2ZcbiAgZW5kXG5cbmxldCBkb19iZWZvcmVfZmlyc3Rfc3Bhd24gKCkgPVxuICBpZiBub3QgKEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQpIHRoZW4gYmVnaW5cbiAgICBBdG9taWMuc2V0IGZpcnN0X2RvbWFpbl9zcGF3bmVkIHRydWU7XG4gICAgIWZpcnN0X3NwYXduX2Z1bmN0aW9uKCk7XG4gICAgKCogUmVsZWFzZSB0aGUgb2xkIGZ1bmN0aW9uICopXG4gICAgZmlyc3Rfc3Bhd25fZnVuY3Rpb24gOj0gKGZ1biAoKSAtPiAoKSlcbiAgZW5kXG5cbmxldCBhdF9leGl0X2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBhdF9leGl0IGYgPVxuICBsZXQgb2xkX2V4aXQgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgZiAoKTsgb2xkX2V4aXQgKClcbiAgaW5cbiAgRExTLnNldCBhdF9leGl0X2tleSBuZXdfZXhpdFxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gIGxldCBmIDogdW5pdCAtPiB1bml0ID0gRExTLmdldCBhdF9leGl0X2tleSBpblxuICBmICgpXG5cbmxldCBfID0gU3RkbGliLmRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IDo9IGRvX2F0X2V4aXRcblxuKCoqKioqKiogQ3JlYXRpb24gYW5kIFRlcm1pbmF0aW9uICoqKioqKioqKVxuXG5sZXQgc3Bhd24gZiA9XG4gIGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKTtcbiAgbGV0IHBrID0gRExTLmdldF9pbml0aWFsX2tleXMgKCkgaW5cblxuICAoKiBbdGVybV9zeW5jXSBpcyB1c2VkIHRvIHN5bmNocm9uaXplIHdpdGggdGhlIGpvaW5pbmcgZG9tYWlucyAqKVxuICBsZXQgdGVybV9zeW5jID1cbiAgICBSYXcueyBzdGF0ZSA9IFJ1bm5pbmcgO1xuICAgICAgICAgIG11dCA9IE11dGV4LmNyZWF0ZSAoKSA7XG4gICAgICAgICAgY29uZCA9IENvbmRpdGlvbi5jcmVhdGUgKCkgfVxuICBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBtYXRjaFxuICAgICAgRExTLmNyZWF0ZV9kbHMgKCk7XG4gICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgIGxldCByZXMgPSBmICgpIGluXG4gICAgICByZXNcbiAgICB3aXRoXG4gICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICB0ZXJtaW5hdGVzIG5vcm1hbGx5IG9yIGV4Y2VwdGlvbmFsbHkuICopXG4gICAgfCByZXMgLT5cbiAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgZG9fYXRfZXhpdCAoKTtcbiAgICAgICAgcmVzXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICgqIElmIGJvdGggdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBhbmQgdGhlIFthdF9leGl0XSBjYWxsYmFja3NcbiAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgKHRyeSBkb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgIHJhaXNlIGV4blxuICBpblxuICBsZXQgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9zeW5jIGluXG4gIHsgZG9tYWluIDsgdGVybV9zeW5jIH1cblxubGV0IGpvaW4geyB0ZXJtX3N5bmMgOyBfIH0gPVxuICBsZXQgb3BlbiBSYXcgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCB0ZXJtX3N5bmMuc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX3N5bmMuY29uZCB0ZXJtX3N5bmMubXV0O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgcmVzXG4gIGluXG4gIG1hdGNoIE11dGV4LnByb3RlY3QgdGVybV9zeW5jLm11dCBsb29wIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmlnblxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0cy4gV2hlbiB0aGUgZmxhZyBpcyBkaXNhYmxlZCwgaXQgd2lsbCByZWplY3QgYW55XG4gICAgICBmb3JtYXQgdGhhdCBpcyBub3QgYWNjZXB0ZWQgYnkgdGhlIHNwZWNpZmljYXRpb24uXG5cbiAgICAgIEEgdHlwaWNhbCBleGFtcGxlIHdvdWxkIGJlIFwiJSsgZFwiOiBzcGVjaWZ5aW5nIGJvdGggJysnIChpZiB0aGVcbiAgICAgIG51bWJlciBpcyBwb3NpdGl2ZSwgcGFkIHdpdGggYSAnKycgdG8gZ2V0IHRoZSBzYW1lIHdpZHRoIGFzXG4gICAgICBuZWdhdGl2ZSBudW1iZXJzKSBhbmQgJyAnIChpZiB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aFxuICAgICAgYSBzcGFjZSkgZG9lcyBub3QgbWFrZSBzZW5zZSwgYnV0IHRoZSBsZWdhY3kgKDwgNC4wMilcbiAgICAgIGltcGxlbWVudGF0aW9uIHdhcyBoYXBweSB0byBqdXN0IGlnbm9yZSB0aGUgc3BhY2UuXG4gICopXG4gIGluXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBzdHJfaW5kIG1zZyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXNcIlxuICAgICAgc3RyIHN0cl9pbmQgbXNnXG4gIGluXG5cbiAgKCogVXNlZCB3aGVuIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCAob3IgdGhlIGN1cnJlbnQgc3ViLWZvcm1hdCkgd2FzIGVuY291bnRlcmVkXG4gICAgICB1bmV4cGVjdGVkbHkuICopXG4gIGxldCB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZCA9XG4gICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZSBlbmRfaW5kXG4gICAgICBcInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdFwiXG4gIGluXG5cbiAgKCogVXNlZCBmb3IgJTBjOiBubyBvdGhlciB3aWR0aHMgYXJlIGltcGxlbWVudGVkICopXG4gIGxldCBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmRcbiAgICAgIFwibm9uLXplcm8gd2lkdGhzIGFyZSB1bnN1cHBvcnRlZCBmb3IgJWMgY29udmVyc2lvbnNcIlxuICBpblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gb3B0aW9uIGRlcGVuZGVuY3lcbiAgICAgcHJvYmxlbS4gKilcbiAgbGV0IGludmFsaWRfZm9ybWF0X3dpdGhvdXQgc3RyX2luZCBjIHMgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICclYycgd2l0aG91dCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBjIHNcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UgYWJvdXQgYW4gdW5leHBlY3RlZFxuICAgICBjaGFyYWN0ZXIuICopXG4gIGxldCBleHBlY3RlZF9jaGFyYWN0ZXIgc3RyX2luZCBleHBlY3RlZCByZWFkID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsICVzIGV4cGVjdGVkLCByZWFkICVDXCJcbiAgICAgIHN0ciBzdHJfaW5kIGV4cGVjdGVkIHJlYWRcbiAgaW5cblxuICAoKiBQYXJzZSB0aGUgc3RyaW5nIGZyb20gYmVnX2luZCAoaW5jbHVkZWQpIHRvIGVuZF9pbmQgKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBwYXJzZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBiZWdfaW5kIGVuZF9pbmQgLT4gcGFyc2VfbGl0ZXJhbCBiZWdfaW5kIGJlZ19pbmQgZW5kX2luZFxuXG4gICgqIFJlYWQgbGl0ZXJhbCBjaGFyYWN0ZXJzIHVwIHRvICclJyBvciAnQCcgc3BlY2lhbCBjaGFyYWN0ZXJzLiAqKVxuICBhbmQgcGFyc2VfbGl0ZXJhbCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgRW5kX29mX2Zvcm1hdCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2VfZm9ybWF0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9hZnRlcl9hdCAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgYWRkX2xpdGVyYWwgbGl0X3N0YXJ0IHN0cl9pbmQgZm10X3Jlc3RcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9saXRlcmFsIGxpdF9zdGFydCAoc3RyX2luZCArIDEpIGVuZF9pbmRcblxuICAoKiBQYXJzZSBhIGZvcm1hdCBhZnRlciAnJScgKilcbiAgYW5kIHBhcnNlX2Zvcm1hdCA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIGVuZF9pbmQgLT4gcGFyc2VfaWduIHBjdF9pbmQgKHBjdF9pbmQgKyAxKSBlbmRfaW5kXG5cbiAgYW5kIHBhcnNlX2lnbiA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXycgLT4gcGFyc2VfZmxhZ3MgcGN0X2luZCAoc3RyX2luZCsxKSBlbmRfaW5kIHRydWVcbiAgICAgIHwgXyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBmYWxzZVxuXG4gIGFuZCBwYXJzZV9mbGFncyA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiAoXywgXywgZSwgZikgZm10X2ViYlxuICA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBpZ24gLT5cbiAgICBsZXQgemVybyA9IHJlZiBmYWxzZSBhbmQgbWludXMgPSByZWYgZmFsc2VcbiAgICBhbmQgcGx1cyA9IHJlZiBmYWxzZSBhbmQgc3BhY2UgPSByZWYgZmFsc2VcbiAgICBhbmQgaGFzaCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzZXRfZmxhZyBzdHJfaW5kIGZsYWcgPVxuICAgICAgKCogaW4gbGVnYWN5IG1vZGUsIGR1cGxpY2F0ZSBmbGFncyBhcmUgYWNjZXB0ZWQgKilcbiAgICAgIGlmICFmbGFnICYmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgZHVwbGljYXRlIGZsYWcgJUNcIlxuICAgICAgICAgIHN0ciBzdHJfaW5kIHN0ci5bc3RyX2luZF07XG4gICAgICBmbGFnIDo9IHRydWU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHJlYWRfZmxhZ3Mgc3RyX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICcwJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHplcm87ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJy0nIC0+IHNldF9mbGFnIHN0cl9pbmQgbWludXM7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnKycgLT4gc2V0X2ZsYWcgc3RyX2luZCBwbHVzOyAgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcjJyAtPiBzZXRfZmxhZyBzdHJfaW5kIGhhc2g7IHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnICcgLT4gc2V0X2ZsYWcgc3RyX2luZCBzcGFjZTsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcGFyc2VfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZFxuICAgICAgICAgICF6ZXJvICFtaW51cyAhcGx1cyAhaGFzaCAhc3BhY2UgaWduXG4gICAgICBlbmRcbiAgICBpblxuICAgIHJlYWRfZmxhZ3Mgc3RyX2luZFxuXG4gICgqIFRyeSB0byByZWFkIGEgZGlnaXRhbCBvciBhICcqJyBwYWRkaW5nLiAqKVxuICBhbmQgcGFyc2VfcGFkZGluZyA6IHR5cGUgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIHplcm8gbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbGV0IHBhZHR5ID0gbWF0Y2ggemVybywgbWludXMgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gUmlnaHRcbiAgICAgIHwgZmFsc2UsIHRydWUgIC0+IExlZnRcbiAgICAgIHwgIHRydWUsIGZhbHNlIC0+IFplcm9zXG4gICAgICB8ICB0cnVlLCB0cnVlICAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMZWZ0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICctJyBcIjBcIiBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgbGV0IG5ld19pbmQsIHdpZHRoID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBuZXdfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAoTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkpXG4gICAgfCAnKicgLT5cbiAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiAoQXJnX3BhZGRpbmcgcGFkdHkpXG4gICAgfCBfIC0+XG4gICAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgICB8IExlZnQgIC0+XG4gICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlblxuICAgICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLScgXCJwYWRkaW5nXCI7XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIHwgWmVyb3MgLT5cbiAgICAgICAgICgqIGEgJzAnIHBhZGRpbmcgaW5kaWNhdGlvbiBub3QgZm9sbG93ZWQgYnkgYW55dGhpbmcgc2hvdWxkXG4gICAgICAgICAgIGJlIGludGVycHJldGVkIGFzIGEgUmlnaHQgcGFkZGluZyBvZiB3aWR0aCAwLiBUaGlzIGlzIHVzZWRcbiAgICAgICAgICAgYnkgc2Nhbm5pbmcgY29udmVyc2lvbnMgJTBzIGFuZCAlMGMgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgKExpdF9wYWRkaW5nIChSaWdodCwgMCkpXG4gICAgICB8IFJpZ2h0IC0+XG4gICAgICAgIHBhcnNlX2FmdGVyX3BhZGRpbmcgcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICAgIE5vX3BhZGRpbmdcbiAgICAgIGVuZFxuXG4gICgqIElzIHByZWNpc2lvbiBkZWZpbmVkPyAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcGFkZGluZyA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICB8ICcuJyAtPlxuICAgICAgcGFyc2VfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkXG4gICAgfCBzeW1iIC0+XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIE5vX3ByZWNpc2lvbiBwYWQgc3ltYlxuXG4gICgqIFJlYWQgdGhlIGRpZ2l0YWwgb3IgJyonIHByZWNpc2lvbi4gKilcbiAgYW5kIHBhcnNlX3ByZWNpc2lvbiA6IHR5cGUgeCBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+XG4gICAgICAgICh4LCBfKSBwYWRkaW5nIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfbGl0ZXJhbCBtaW51cyBzdHJfaW5kID1cbiAgICAgIGxldCBuZXdfaW5kLCBwcmVjID0gcGFyc2VfcG9zaXRpdmUgc3RyX2luZCBlbmRfaW5kIDAgaW5cbiAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIHBhZCAoTGl0X3ByZWNpc2lvbiBwcmVjKSBpblxuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmRcbiAgICB8ICgnKycgfCAnLScpIGFzIHN5bWIgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT5cbiAgICAgICgqIExlZ2FjeSBtb2RlIHdvdWxkIGFjY2VwdCBhbmQgaWdub3JlICcrJyBvciAnLScgYmVmb3JlIHRoZVxuICAgICAgICAgaW50ZWdlciBkZXNjcmliaW5nIHRoZSBkZXNpcmVkIHByZWNpc2lvbjsgbm90ZSB0aGF0IHRoaXNcbiAgICAgICAgIGNhbm5vdCBoYXBwZW4gZm9yIHBhZGRpbmcgd2lkdGgsIGFzICcrJyBhbmQgJy0nIGFscmVhZHkgaGF2ZVxuICAgICAgICAgYSBzZW1hbnRpY3MgdGhlcmUuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgdGhlIGlkZWEgKHN1cHBvcnRlZCBieSB0aGlzIHR3ZWFrKSB0aGF0IHdpZHRoIGFuZFxuICAgICAgICAgcHJlY2lzaW9uIGxpdGVyYWxzIGFyZSBcImludGVnZXIgbGl0ZXJhbHNcIiBpbiB0aGUgT0NhbWwgc2Vuc2UgaXNcbiAgICAgICAgIHN0aWxsIGJsYXRhbnRseSB3cm9uZywgYXMgMTIzXzQ1NiBvciAweEZGIGFyZSByZWplY3RlZC4gKilcbiAgICAgIHBhcnNlX2xpdGVyYWwgKG1pbnVzIHx8IHN5bWIgPSAnLScpIChzdHJfaW5kICsgMSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZVxuICAgICAgICBpZ24gcGFkIEFyZ19wcmVjaXNpb25cbiAgICB8IF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIG5vdGUgdGhhdCBsZWdhY3kgaW1wbGVtZW50YXRpb24gZGlkIG5vdCBpZ25vcmUgJy4nIHdpdGhvdXRcbiAgICAgICAgICAgYSBudW1iZXIgKGFzIGl0IGRvZXMgZm9yIHBhZGRpbmcgaW5kaWNhdGlvbnMpLCBidXRcbiAgICAgICAgICAgaW50ZXJwcmV0cyBpdCBhcyAnLjAnICopXG4gICAgICAgIHBhcnNlX2FmdGVyX3ByZWNpc2lvbiBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIDApXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfZm9ybWF0X3dpdGhvdXQgKHN0cl9pbmQgLSAxKSAnLicgXCJwcmVjaXNpb25cIlxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBjb252ZXJzaW9uLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIDogdHlwZSB4IHkgeiB0IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFyc2VfY29udiAodHlwZSB1KSAodHlwZSB2KSAocGFkcHJlYyA6ICh1LCB2KSBwYWRkaW5nKSA9XG4gICAgICBwYXJzZV9jb252ZXJzaW9uIHBjdF9pbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkXG4gICAgICAgIHByZWMgcGFkcHJlYyBzdHIuW3N0cl9pbmRdIGluXG4gICAgKCogaW4gbGVnYWN5IG1vZGUsIHNvbWUgZm9ybWF0cyAoJXMgYW5kICVTKSBhY2NlcHQgYSB3ZWlyZCBtaXggb2ZcbiAgICAgICBwYWRkaW5nIGFuZCBwcmVjaXNpb24sIHdoaWNoIGlzIG1lcmdlZCBhcyBhIHNpbmdsZSBwYWRkaW5nXG4gICAgICAgaW5mb3JtYXRpb24uIEZvciBleGFtcGxlLCBpbiAlLjEwcyB0aGUgcHJlY2lzaW9uIGlzIGltcGxpY2l0bHlcbiAgICAgICB1bmRlcnN0b29kIGFzIHBhZGRpbmcgJTEwcywgYnV0IHRoZSBsZWZ0LXBhZGRpbmcgY29tcG9uZW50IG1heVxuICAgICAgIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSBsZWZ0IHBhZGRpbmcgb3IgYSBuZWdhdGl2ZSBwcmVjaXNpb246XG4gICAgICAgJS0uM3MgYW5kICUuLTNzIGFyZSBlcXVpdmFsZW50IHRvICUtM3MgKilcbiAgICBtYXRjaCBwYWQgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAtPiAoXG4gICAgICBtYXRjaCBtaW51cywgcHJlYyB3aXRoXG4gICAgICAgIHwgXywgTm9fcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgTm9fcGFkZGluZ1xuICAgICAgICB8IGZhbHNlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKSlcbiAgICAgICAgfCB0cnVlLCBMaXRfcHJlY2lzaW9uIG4gLT4gcGFyc2VfY29udiAoTGl0X3BhZGRpbmcgKExlZnQsIG4pKVxuICAgICAgICB8IGZhbHNlLCBBcmdfcHJlY2lzaW9uIC0+IHBhcnNlX2NvbnYgKEFyZ19wYWRkaW5nIFJpZ2h0KVxuICAgICAgICB8IHRydWUsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgTGVmdClcbiAgICApXG4gICAgfCBwYWQgLT4gcGFyc2VfY29udiBwYWRcblxuICAoKiBDYXNlIGFuYWx5c2lzIG9uIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9jb252ZXJzaW9uIDogdHlwZSB4IHkgeiB0IHUgdiBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiAoeCwgeSkgcGFkZGluZyAtPlxuICAgICAgICAoeiwgdCkgcHJlY2lzaW9uIC0+ICh1LCB2KSBwYWRkaW5nIC0+IGNoYXIgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgcHJlYyBwYWRwcmVjIHN5bWIgLT5cbiAgICAoKiBGbGFncyB1c2VkIHRvIGNoZWNrIG9wdGlvbiB1c2FnZXMvY29tcGF0aWJpbGl0aWVzLiAqKVxuICAgIGxldCBwbHVzX3VzZWQgID0gcmVmIGZhbHNlIGFuZCBoYXNoX3VzZWQgPSByZWYgZmFsc2VcbiAgICBhbmQgc3BhY2VfdXNlZCA9IHJlZiBmYWxzZSBhbmQgaWduX3VzZWQgICA9IHJlZiBmYWxzZVxuICAgIGFuZCBwYWRfdXNlZCAgID0gcmVmIGZhbHNlIGFuZCBwcmVjX3VzZWQgID0gcmVmIGZhbHNlIGluXG5cbiAgICAoKiBBY2Nlc3MgdG8gb3B0aW9ucywgdXBkYXRlIGZsYWdzLiAqKVxuICAgIGxldCBnZXRfcGx1cyAgICAoKSA9IHBsdXNfdXNlZCAgOj0gdHJ1ZTsgcGx1c1xuICAgIGFuZCBnZXRfaGFzaCAgICgpID0gaGFzaF91c2VkIDo9IHRydWU7IGhhc2hcbiAgICBhbmQgZ2V0X3NwYWNlICAgKCkgPSBzcGFjZV91c2VkIDo9IHRydWU7IHNwYWNlXG4gICAgYW5kIGdldF9pZ24gICAgICgpID0gaWduX3VzZWQgICA6PSB0cnVlOyBpZ25cbiAgICBhbmQgZ2V0X3BhZCAgICAgKCkgPSBwYWRfdXNlZCAgIDo9IHRydWU7IHBhZFxuICAgIGFuZCBnZXRfcHJlYyAgICAoKSA9IHByZWNfdXNlZCAgOj0gdHJ1ZTsgcHJlY1xuICAgIGFuZCBnZXRfcGFkcHJlYyAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkcHJlYyBpblxuXG4gICAgbGV0IGdldF9pbnRfcGFkICgpIDogKHgseSkgcGFkZGluZyA9XG4gICAgICAoKiAlNS4zZCBpcyBhY2NlcHRlZCBhbmQgbWVhbmluZ2Z1bDogcGFkIHRvIGxlbmd0aCA1IHdpdGhcbiAgICAgICAgIHNwYWNlcywgYnV0IGZpcnN0IHBhZCB3aXRoIHplcm9zIHVwdG8gbGVuZ3RoIDMgKDAtcGFkZGluZ1xuICAgICAgICAgaXMgdGhlIGludGVycHJldGF0aW9uIG9mIFwicHJlY2lzaW9uXCIgZm9yIGludGVnZXIgZm9ybWF0cykuXG5cbiAgICAgICAgICUwNS4zZCBpcyByZWR1bmRhbnQ6IHBhZCB0byBsZW5ndGggNSAqd2l0aCB6ZXJvcyosIGJ1dFxuICAgICAgICAgZmlyc3QgcGFkIHdpdGggemVyb3MuLi4gVG8gYWRkIGluc3VsdCB0byB0aGUgaW5qdXJ5LCB0aGVcbiAgICAgICAgIGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZ25vcmVzIHRoZSAwLXBhZGRpbmcgaW5kaWNhdGlvbiBhbmRcbiAgICAgICAgIGRvZXMgdGhlIDUgcGFkZGluZyB3aXRoIHNwYWNlcyBpbnN0ZWFkLiBXZSByZXVzZSB0aGlzXG4gICAgICAgICBpbnRlcnByZXRhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHN0YXRpY2FsbHkgcmVqZWN0IHRoaXNcbiAgICAgICAgIGZvcm1hdCB3aGVuIHRoZSBsZWdhY3kgbW9kZSBpcyBkaXNhYmxlZCwgdG8gcHJvdGVjdCBzdHJpY3RcbiAgICAgICAgIHVzZXJzIGZyb20gdGhpcyBjb3JuZXIgY2FzZS4gKilcbiAgICAgICBtYXRjaCBnZXRfcGFkICgpLCBnZXRfcHJlYyAoKSB3aXRoXG4gICAgICAgICB8IHBhZCwgTm9fcHJlY2lzaW9uIC0+IHBhZFxuICAgICAgICAgfCBOb19wYWRkaW5nLCBfICAgICAtPiBOb19wYWRkaW5nXG4gICAgICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgbiksIF8gLT5cbiAgICAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCBuKVxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcywgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnMCcgXCJwcmVjaXNpb25cIlxuICAgICAgICAgfCBMaXRfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWRcbiAgICAgICAgIHwgQXJnX3BhZGRpbmcgXyBhcyBwYWQsIF8gLT4gcGFkIGluXG5cbiAgICAoKiBDaGVjayB0aGF0IHBhZHR5IDw+IFplcm9zLiAqKVxuICAgIGxldCBjaGVja19ub18wIHN5bWIgKHR5cGUgYSBiKSAocGFkIDogKGEsIGIpIHBhZGRpbmcpIDogKGEsYikgcGFkZGluZyA9XG4gICAgICBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoKExlZnQgfCBSaWdodCksIF8pIC0+IHBhZFxuICAgICAgfCBBcmdfcGFkZGluZyAoTGVmdCB8IFJpZ2h0KSAtPiBwYWRcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIjBcIlxuICAgICAgfCBBcmdfcGFkZGluZyBaZXJvcyAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBBcmdfcGFkZGluZyBSaWdodFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgaW5cblxuICAgICgqIEdldCBwYWRkaW5nIGFzIGEgcGFkX29wdGlvbiAoc2VlIFwiJV9cIiwgXCIle1wiLCBcIiUoXCIgYW5kIFwiJVtcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgb3B0X29mX3BhZCBjICh0eXBlIGEpICh0eXBlIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgPSBtYXRjaCBwYWQgd2l0aFxuICAgICAgfCBOb19wYWRkaW5nIC0+IE5vbmVcbiAgICAgIHwgTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aCkgLT4gU29tZSB3aWR0aFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBTb21lIHdpZHRoXG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInMCdcIlxuICAgICAgfCBMaXRfcGFkZGluZyAoTGVmdCwgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIictJ1wiXG4gICAgICB8IEFyZ19wYWRkaW5nIF8gLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIGMgXCInKidcIlxuICAgIGluXG4gICAgbGV0IGdldF9wYWRfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWQgKCkpIGluXG4gICAgbGV0IGdldF9wYWRwcmVjX29wdCBjID0gb3B0X29mX3BhZCBjIChnZXRfcGFkcHJlYyAoKSkgaW5cblxuICAgICgqIEdldCBwcmVjaXNpb24gYXMgYSBwcmVjX29wdGlvbiAoc2VlIFwiJV9mXCIpLlxuICAgICAgIChubyBuZWVkIGZvciBsZWdhY3kgbW9kZSB0d2Vha2luZywgdGhvc2Ugd2VyZSByZWplY3RlZCBieSB0aGVcbiAgICAgICBsZWdhY3kgcGFyc2VyIGFzIHdlbGwpICopXG4gICAgbGV0IGdldF9wcmVjX29wdCAoKSA9IG1hdGNoIGdldF9wcmVjICgpIHdpdGhcbiAgICAgIHwgTm9fcHJlY2lzaW9uICAgICAgIC0+IE5vbmVcbiAgICAgIHwgTGl0X3ByZWNpc2lvbiBuZGVjIC0+IFNvbWUgbmRlY1xuICAgICAgfCBBcmdfcHJlY2lzaW9uICAgICAgLT4gaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICdfJyBcIicqJ1wiXG4gICAgaW5cblxuICAgIGxldCBmbXRfcmVzdWx0ID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnLCcgLT5cbiAgICAgIHBhcnNlIHN0cl9pbmQgZW5kX2luZFxuICAgIHwgJ2MnIC0+XG4gICAgICBsZXQgY2hhcl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jaGFyLCBmbXRfcmVzdCkpXG4gICAgICAgIGVsc2UgRm10X0VCQiAoQ2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgc2Nhbl9mb3JtYXQgZm10X3Jlc3QgPSAoKiAlMGMgKilcbiAgICAgICAgaWYgZ2V0X2lnbiAoKVxuICAgICAgICB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChTY2FuX25leHRfY2hhciBmbXRfcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgYmVnaW4gbWF0Y2ggZ2V0X3BhZF9vcHQgJ2MnIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSAwIC0+IHNjYW5fZm9ybWF0IGZtdF9yZXN0XG4gICAgICAgIHwgU29tZSBfbiAtPlxuICAgICAgICAgICBpZiBub3QgbGVnYWN5X2JlaGF2aW9yXG4gICAgICAgICAgIHRoZW4gaW52YWxpZF9ub25udWxsX2NoYXJfd2lkdGggc3RyX2luZFxuICAgICAgICAgICBlbHNlICgqIGxlZ2FjeSBpZ25vcmVzICVjIHdpZHRocyAqKSBjaGFyX2Zvcm1hdCBmbXRfcmVzdFxuICAgICAgZW5kXG4gICAgfCAnQycgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9jYW1sX2NoYXIsZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChDYW1sX2NoYXIgZm10X3Jlc3QpXG4gICAgfCAncycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc3RyaW5nIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChTdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnUycgLT5cbiAgICAgIGxldCBwYWQgPSBjaGVja19ub18wIHN5bWIgKGdldF9wYWRwcmVjICgpKSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfY2FtbF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKENhbWxfc3RyaW5nIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2QnIHwgJ2knIHwgJ3gnIHwgJ1gnIHwgJ28nIHwgJ3UnIC0+XG4gICAgICBsZXQgaWNvbnYgPSBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50IChpY29udiwgZ2V0X3BhZF9vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X2ludF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoSW50IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnTicgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IFRva2VuX2NvdW50ZXIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIHwgJ24nIHwgJ0wnIHdoZW4gc3RyX2luZD1lbmRfaW5kIHx8IG5vdCAoaXNfaW50X2Jhc2Ugc3RyLltzdHJfaW5kXSkgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgY291bnRlciA9IGNvdW50ZXJfb2ZfY2hhciBzeW1iIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSlcbiAgICB8ICdsJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50MzIgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ24nIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpXG4gICAgICAgICAgKGdldF9oYXNoICgpKSAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdMJyAtPlxuICAgICAgbGV0IGljb252ID1cbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIChzdHJfaW5kICsgMSkgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpXG4gICAgICAgICAgKGdldF9zcGFjZSAoKSkgc3RyLltzdHJfaW5kXSBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfaW50NjQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2YnIHwgJ2UnIHwgJ0UnIHwgJ2cnIHwgJ0cnIHwgJ0YnIHwgJ2gnIHwgJ0gnIC0+XG4gICAgICBsZXQgZmNvbnYgPVxuICAgICAgICBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kXG4gICAgICAgICAgKGdldF9wbHVzICgpKSAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN5bWIgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zsb2F0IChnZXRfcGFkX29wdCAnXycsIGdldF9wcmVjX29wdCAoKSkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9wYWQgKCkpIChnZXRfcHJlYyAoKSkgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoRmxvYXQgKGZjb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdiJyB8ICdCJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9ib29sIChnZXRfcGFkcHJlY19vcHQgJ18nKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRkaW5nX2ZtdF9FQkIgKHBhZCcsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkZGluZ19mbXRfZWJiIHBhZCBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChCb29sIChwYWQnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2EnIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgRm10X0VCQiAoQWxwaGEgZm10X3Jlc3QpXG4gICAgfCAndCcgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChUaGV0YSBmbXRfcmVzdClcbiAgICB8ICdyJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10X3Jlc3QpKVxuICAgICAgZWxzZSBGbXRfRUJCIChSZWFkZXIgZm10X3Jlc3QpXG4gICAgfCAnIScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGbHVzaCBmbXRfcmVzdClcbiAgICB8ICgnJScgfCAnQCcpIGFzIGMgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKGMsIGZtdF9yZXN0KSlcbiAgICB8ICd7JyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJ30nIGluXG4gICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCBzdWJfZW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9hcmcgKGdldF9wYWRfb3B0ICd7Jywgc3ViX2ZtdHR5LCBmbXRfcmVzdCkpXG4gICAgfCAnKCcgLT5cbiAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgc3RyX2luZCBlbmRfaW5kICcpJyBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3ViX2VuZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBzdWJfZm10dHkgPSBmbXR0eV9vZl9mbXQgc3ViX2ZtdCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9mb3JtYXRfc3Vic3QgKGdldF9wYWRfb3B0ICdfJywgc3ViX2ZtdHR5KSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJygnLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICdbJyAtPlxuICAgICAgbGV0IG5leHRfaW5kLCBjaGFyX3NldCA9IHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKGdldF9wYWRfb3B0ICdfJywgY2hhcl9zZXQpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ1snLCBjaGFyX3NldCwgZm10X3Jlc3QpKVxuICAgIHwgJy0nIHwgJysnIHwgJyMnIHwgJyAnIHwgJ18nIC0+XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIFxcXG4gICAgICAgICBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvblwiXG4gICAgICAgIHN0ciBwY3RfaW5kIHN5bWJcbiAgICB8IF8gLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGludmFsaWQgY29udmVyc2lvbiBcXFwiJSUlY1xcXCJcIiBzdHIgKHN0cl9pbmQgLSAxKSBzeW1iXG4gICAgaW5cbiAgICAoKiBDaGVjayBmb3IgdW51c2VkIG9wdGlvbnMsIGFuZCByZWplY3QgdGhlbSBhcyBpbmNvbXBhdGlibGUuXG5cbiAgICAgICBTdWNoIGNoZWNrcyBuZWVkIHRvIGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLCBhcyB0aGUgbGVnYWN5XG4gICAgICAgcGFyc2VyIHNpbGVudGx5IGlnbm9yZWQgaW5jb21wYXRpYmxlIGZsYWdzLiAqKVxuICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3IgdGhlbiBiZWdpblxuICAgIGlmIG5vdCAhcGx1c191c2VkICYmIHBsdXMgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInKydcIjtcbiAgICBpZiBub3QgIWhhc2hfdXNlZCAmJiBoYXNoIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCI7XG4gICAgaWYgbm90ICFzcGFjZV91c2VkICYmIHNwYWNlIHRoZW5cbiAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCI7XG4gICAgaWYgbm90ICFwYWRfdXNlZCAgJiYgUGFkZGluZ19FQkIgcGFkIDw+IFBhZGRpbmdfRUJCIE5vX3BhZGRpbmcgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCJgcGFkZGluZydcIjtcbiAgICBpZiBub3QgIXByZWNfdXNlZCAmJiBQcmVjaXNpb25fRUJCIHByZWMgPD4gUHJlY2lzaW9uX0VCQiBOb19wcmVjaXNpb24gdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIChpZiBpZ24gdGhlbiAnXycgZWxzZSBzeW1iKVxuICAgICAgICBcImBwcmVjaXNpb24nXCI7XG4gICAgaWYgaWduICYmIHBsdXMgdGhlbiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJysnXCI7XG4gICAgZW5kO1xuICAgICgqIHRoaXMgbGFzdCB0ZXN0IG11c3Qgbm90IGJlIGRpc2FibGVkIGluIGxlZ2FjeSBtb2RlLFxuICAgICAgIGFzIGlnbm9yaW5nIGl0IHdvdWxkIHR5cGljYWxseSByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdHlwaW5nXG4gICAgICAgdGhhbiB3aGF0IHRoZSBsZWdhY3kgcGFyc2VyIHVzZWQgKilcbiAgICBpZiBub3QgIWlnbl91c2VkICYmIGlnbiB0aGVuXG4gICAgICBiZWdpbiBtYXRjaCBzeW1iIHdpdGhcbiAgICAgICAgKCogYXJndW1lbnQtbGVzcyBmb3JtYXRzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpbiBsZWdhY3kgbW9kZSAqKVxuICAgICAgICB8ICgnQCcgfCAnJScgfCAnIScgfCAnLCcpIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+ICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJ18nXCJcbiAgICAgIGVuZDtcbiAgICBmbXRfcmVzdWx0XG5cbiAgKCogUGFyc2UgZm9ybWF0dGluZyBpbmZvcm1hdGlvbiAoYWZ0ZXIgJ0AnKS4gKilcbiAgYW5kIHBhcnNlX2FmdGVyX2F0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIEVuZF9vZl9mb3JtYXQpKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnWycgLT5cbiAgICAgICAgcGFyc2VfdGFnIGZhbHNlIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKENsb3NlX2JveCwgZm10X3Jlc3QpKVxuICAgICAgfCAneycgLT5cbiAgICAgICAgcGFyc2VfdGFnIHRydWUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICd9JyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfdGFnLCBmbXRfcmVzdCkpXG4gICAgICB8ICcsJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQnJlYWsgKFwiQCxcIiwgMCwgMCksIGZtdF9yZXN0KSlcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJAIFwiLCAxLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnOycgLT5cbiAgICAgICAgcGFyc2VfZ29vZF9icmVhayAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJz8nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGRmx1c2gsIGZtdF9yZXN0KSlcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZvcmNlX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJy4nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChGbHVzaF9uZXdsaW5lLCBmbXRfcmVzdCkpXG4gICAgICB8ICc8JyAtPlxuICAgICAgICBwYXJzZV9tYWdpY19zaXplIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnQCcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfYXQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIHdoZW4gc3RyX2luZCArIDEgPCBlbmRfaW5kICYmIHN0ci5bc3RyX2luZCArIDFdID0gJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChFc2NhcGVkX3BlcmNlbnQsIGZtdF9yZXN0KSlcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoJ0AnLCBmbXRfcmVzdCkpXG4gICAgICB8IGMgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKFNjYW5faW5kaWMgYywgZm10X3Jlc3QpKVxuXG4gICgqIFRyeSB0byByZWFkIHRoZSBvcHRpb25hbCA8bmFtZT4gYWZ0ZXIgXCJAe1wiIG9yIFwiQFtcIi4gKilcbiAgYW5kIHBhcnNlX3RhZyA6IHR5cGUgZSBmIC4gYm9vbCAtPiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGlzX29wZW5fdGFnIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIHRyeVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIGxldCBpbmQgPSBTdHJpbmcuaW5kZXhfZnJvbSBzdHIgKHN0cl9pbmQgKyAxKSAnPicgaW5cbiAgICAgICAgaWYgaW5kID49IGVuZF9pbmQgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgc3RyX2luZCAoaW5kIC0gc3RyX2luZCArIDEpIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKGluZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgKGluZCArIDEpIGluXG4gICAgICAgIGxldCBzdWJfZm9ybWF0ID0gRm9ybWF0IChzdWJfZm10LCBzdWJfc3RyKSBpblxuICAgICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZywgZm10X3Jlc3QpKVxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKEVuZF9vZl9mb3JtYXQsIFwiXCIpIGluXG4gICAgICBsZXQgZm9ybWF0dGluZyA9XG4gICAgICAgIGlmIGlzX29wZW5fdGFnIHRoZW4gT3Blbl90YWcgc3ViX2Zvcm1hdCBlbHNlIE9wZW5fYm94IHN1Yl9mb3JtYXQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDx3aWR0aCBvZmZzZXQ+IGFmdGVyIFwiQDtcIi4gKilcbiAgYW5kIHBhcnNlX2dvb2RfYnJlYWsgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbGV0IG5leHRfaW5kLCBmb3JtYXR0aW5nX2xpdCA9XG4gICAgICB0cnlcbiAgICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgfHwgc3RyLltzdHJfaW5kXSA8PiAnPCcgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiAoXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMiwgd2lkdGggPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgICBsZXQgc3RyX2luZF8zID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfMiBlbmRfaW5kIGluXG4gICAgICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfM10gd2l0aFxuICAgICAgICAgICAgICB8ICc+JyAtPlxuICAgICAgICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQtMikgKHN0cl9pbmRfMy1zdHJfaW5kKzMpIGluXG4gICAgICAgICAgICAgICAgc3RyX2luZF8zICsgMSwgQnJlYWsgKHMsIHdpZHRoLCAwKVxuICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF80LCBvZmZzZXQgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMyBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0cl9pbmRfNSA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzQgZW5kX2luZCBpblxuICAgICAgICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF81XSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF81LXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzUgKyAxLCBCcmVhayAocywgd2lkdGgsIG9mZnNldClcbiAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICApXG4gICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIHN0cl9pbmQsIEJyZWFrIChcIkA7XCIsIDEsIDApXG4gICAgaW5cbiAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSB0aGUgc2l6ZSBpbiBhIDxuPi4gKilcbiAgYW5kIHBhcnNlX21hZ2ljX3NpemUgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgbWF0Y2hcbiAgICAgIHRyeVxuICAgICAgICBsZXQgc3RyX2luZF8xID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgICBtYXRjaCBzdHIuW3N0cl9pbmRfMV0gd2l0aFxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT5cbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCBzaXplID0gcGFyc2VfaW50ZWdlciBzdHJfaW5kXzEgZW5kX2luZCBpblxuICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICBpZiBzdHIuW3N0cl9pbmRfM10gPD4gJz4nIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICAgICAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgKHN0cl9pbmQgLSAyKSAoc3RyX2luZF8zIC0gc3RyX2luZCArIDMpIGluXG4gICAgICAgICAgU29tZSAoc3RyX2luZF8zICsgMSwgTWFnaWNfc2l6ZSAocywgc2l6ZSkpXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgICB3aXRoIE5vdF9mb3VuZCB8IEZhaWx1cmUgXyAtPlxuICAgICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgU29tZSAobmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0KSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBuZXh0X2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIGZtdF9yZXN0KSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyAnPCcsIGZtdF9yZXN0KSlcblxuICAoKiBQYXJzZSBhbmQgY29uc3RydWN0IGEgY2hhciBzZXQuICopXG4gIGFuZCBwYXJzZV9jaGFyX3NldCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG5cbiAgICBsZXQgY2hhcl9zZXQgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgICBsZXQgYWRkX2NoYXIgYyA9XG4gICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYztcbiAgICBpblxuICAgIGxldCBhZGRfcmFuZ2UgYyBjJyA9XG4gICAgICBmb3IgaSA9IGludF9vZl9jaGFyIGMgdG8gaW50X29mX2NoYXIgYycgZG9cbiAgICAgICAgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IChjaGFyX29mX2ludCBpKTtcbiAgICAgIGRvbmU7XG4gICAgaW5cblxuICAgIGxldCBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQgPVxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2NlcHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgXFxcbiAgICAgICAgIHVzZSAlJSUlIGluc3RlYWQgYXQgcG9zaXRpb24gJWQuXCIgc3RyIHN0cl9pbmRcbiAgICBpblxuXG4gICAgKCogUGFyc2UgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIGNoYXIgc2V0LiAqKVxuICAgIGxldCByZWMgcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBsZXQgYyA9IHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFBhcnNlIHRoZSBjb250ZW50IG9mIGEgY2hhciBzZXQgdW50aWwgdGhlIGZpcnN0ICddJy4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfY29udGVudCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnXScgLT5cbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJy0nIC0+XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgYyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjXG5cbiAgICAoKiBUZXN0IGZvciByYW5nZSBpbiBjaGFyIHNldC4gKilcbiAgICBhbmQgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfbWludXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcbiAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgd2hlbiBjID0gJyUnIC0+XG4gICAgICAgIGFkZF9jaGFyIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBpZiBjID0gJyUnIHRoZW4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kO1xuICAgICAgICAoKiBub3RlIHRoYXQgJ0AnIGFsb25lIGlzIGFjY2VwdGVkLCBhcyBkb25lIGJ5IHRoZSBsZWdhY3lcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb247IHRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSByZXF1aXJlcyAlQFxuICAgICAgICAgICBzbyB3ZSBjb3VsZCB3YXJuIG9uIHRoYXQgKilcbiAgICAgICAgYWRkX2NoYXIgYztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgYydcblxuICAgICgqIE1hbmFnZSByYW5nZSBpbiBjaGFyIHNldCAoZXhjZXB0IGlmIHRoZSAnLScgdGhlIGxhc3QgY2hhciBiZWZvcmUgJ10nKSAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBhZGRfY2hhciAnLSc7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICclJyAtPlxuICAgICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICAgIHwgKCclJyB8ICdAJykgYXMgYycgLT5cbiAgICAgICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDIpIGVuZF9pbmRcbiAgICAgICAgICB8IF8gLT4gZmFpbF9zaW5nbGVfcGVyY2VudCBzdHJfaW5kXG4gICAgICAgIGVuZFxuICAgICAgfCBjJyAtPlxuICAgICAgICBhZGRfcmFuZ2UgYyBjJztcbiAgICAgICAgcGFyc2VfY2hhcl9zZXRfY29udGVudCAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICBpblxuICAgIGxldCBzdHJfaW5kLCByZXZlcnNlID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgICAgfCAnXicgLT4gc3RyX2luZCArIDEsIHRydWVcbiAgICAgICAgfCBfIC0+IHN0cl9pbmQsIGZhbHNlIGluXG4gICAgbGV0IG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgbGV0IGNoYXJfc2V0ID0gZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0IGluXG4gICAgbmV4dF9pbmQsIChpZiByZXZlcnNlIHRoZW4gcmV2X2NoYXJfc2V0IGNoYXJfc2V0IGVsc2UgY2hhcl9zZXQpXG5cbiAgKCogQ29uc3VtZSBhbGwgbmV4dCBzcGFjZXMsIHJhaXNlIGFuIEZhaWx1cmUgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2Vfc3BhY2VzIHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBpZiBzdHIuW3N0cl9pbmRdID0gJyAnIHRoZW4gcGFyc2Vfc3BhY2VzIChzdHJfaW5kICsgMSkgZW5kX2luZCBlbHNlIHN0cl9pbmRcblxuICAoKiBSZWFkIGEgcG9zaXRpdmUgaW50ZWdlciBmcm9tIHRoZSBzdHJpbmcsIHJhaXNlIGEgRmFpbHVyZSBpZiBlbmRfaW5kIGlzXG4gICAgIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgYWNjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IGFjYyAqIDEwICsgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCcpIGluXG4gICAgICBpZiBuZXdfYWNjID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IGludGVnZXIgJWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1pdCAlZFwiXG4gICAgICAgICAgc3RyIG5ld19hY2MgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCBuZXdfYWNjXG4gICAgfCBfIC0+IHN0cl9pbmQsIGFjY1xuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlXG4gICAgIGlmIGVuZF9pbmQgaXMgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX2ludGVnZXIgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMFxuICAgIHwgJy0nIC0+IChcbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgIGxldCBuZXh0X2luZCwgbiA9IHBhcnNlX3Bvc2l0aXZlIChzdHJfaW5kICsgMSkgZW5kX2luZCAwIGluXG4gICAgICAgIG5leHRfaW5kLCAtblxuICAgICAgfCBjIC0+XG4gICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiZGlnaXRcIiBjXG4gICAgKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBBZGQgYSBsaXRlcmFsIHRvIGEgZm9ybWF0IGZyb20gYSBsaXRlcmFsIGNoYXJhY3RlciBzdWItc2VxdWVuY2UuICopXG4gIGFuZCBhZGRfbGl0ZXJhbCA6IHR5cGUgYSBkIGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IChhLCBfLCBfLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGxpdF9zdGFydCBzdHJfaW5kIGZtdCAtPiBtYXRjaCBzdHJfaW5kIC0gbGl0X3N0YXJ0IHdpdGhcbiAgICB8IDAgICAgLT4gRm10X0VCQiBmbXRcbiAgICB8IDEgICAgLT4gRm10X0VCQiAoQ2hhcl9saXRlcmFsIChzdHIuW2xpdF9zdGFydF0sIGZtdCkpXG4gICAgfCBzaXplIC0+IEZtdF9FQkIgKFN0cmluZ19saXRlcmFsIChTdHJpbmcuc3ViIHN0ciBsaXRfc3RhcnQgc2l6ZSwgZm10KSlcblxuICAoKiBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdWItZm9ybWF0XG4gICAgIChpLmUuIHRoZSBjb3JyZXNwb25kaW5nIFwiJX1cIiBvciBcIiUpXCIpICopXG4gIGFuZCBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgYyA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiB1bmNsb3NlZCBzdWItZm9ybWF0LCBcXFxuICAgICAgICAgZXhwZWN0ZWQgXFxcIiUlJWNcXFwiIGF0IGNoYXJhY3RlciBudW1iZXIgJWRcIiBzdHIgYyBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJyUnIC0+XG4gICAgICBpZiBzdHJfaW5kICsgMSA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGlmIHN0ci5bc3RyX2luZCArIDFdID0gYyB0aGVuICgqIEVuZCBvZiBmb3JtYXQgZm91bmQgKikgc3RyX2luZCBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDFdIHdpdGhcbiAgICAgICAgfCAnXycgLT5cbiAgICAgICAgICAoKiBTZWFyY2ggZm9yIFwiJV8oXCIgb3IgXCIlX3tcIi4gKilcbiAgICAgICAgICBpZiBzdHJfaW5kICsgMiA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAyXSB3aXRoXG4gICAgICAgICAgfCAneycgLT5cbiAgICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAzKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgICAgc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGNcbiAgICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJyknIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgY1xuICAgICAgICAgIGVuZFxuICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICgqICV7Li4uJX0gc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnfScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICcoJyAtPlxuICAgICAgICAgICgqICUoLi4uJSkgc3ViLWZvcm1hdCBmb3VuZC4gKilcbiAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICB8ICd9JyAtPlxuICAgICAgICAgICgqIEVycm9yOiAlKC4uLiV9LiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICcpJ1wiICd9J1xuICAgICAgICB8ICcpJyAtPlxuICAgICAgICAgICgqIEVycm9yOiAley4uLiUpLiAqKVxuICAgICAgICAgIGV4cGVjdGVkX2NoYXJhY3RlciAoc3RyX2luZCArIDEpIFwiY2hhcmFjdGVyICd9J1wiICcpJ1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICBlbmRcbiAgICB8IF8gLT4gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAoKiBDaGVjayBpZiBzeW1iIGlzIGEgdmFsaWQgaW50IGNvbnZlcnNpb24gYWZ0ZXIgXCIlbFwiLCBcIiVuXCIgb3IgXCIlTFwiICopXG4gIGFuZCBpc19pbnRfYmFzZSBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gICgqIENvbnZlcnQgYSBjaGFyIChsLCBuIG9yIEwpIHRvIGl0cyBhc3NvY2lhdGVkIGNvdW50ZXIuICopXG4gIGFuZCBjb3VudGVyX29mX2NoYXIgc3ltYiA9IG1hdGNoIHN5bWIgd2l0aFxuICAgIHwgJ2wnIC0+IExpbmVfY291bnRlciAgfCAnbicgLT4gQ2hhcl9jb3VudGVyXG4gICAgfCAnTCcgLT4gVG9rZW5fY291bnRlciB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgaW50X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggc3BhY2Ugc3ltYiA9XG4gICAgbWF0Y2ggcGx1cywgaGFzaCwgc3BhY2UsIHN5bWIgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9kICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfaVxuICAgIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2QnIC0+IEludF9zZCB8IGZhbHNlLCBmYWxzZSwgIHRydWUsICdpJyAtPiBJbnRfc2lcbiAgICB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdkJyAtPiBJbnRfcGQgfCAgdHJ1ZSwgZmFsc2UsIGZhbHNlLCAnaScgLT4gSW50X3BpXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAneCcgLT4gSW50X3ggIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ1gnIC0+IEludF9YXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAneCcgLT4gSW50X0N4IHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ1gnIC0+IEludF9DWFxuICAgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ28nIC0+IEludF9vXG4gICAgfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnbycgLT4gSW50X0NvXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAndScgLT4gSW50X3VcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdkJyAtPiBJbnRfQ2RcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdpJyAtPiBJbnRfQ2lcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd1JyAtPiBJbnRfQ3VcbiAgICB8IF8sIHRydWUsIF8sICd4JyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ3hcbiAgICB8IF8sIHRydWUsIF8sICdYJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ1hcbiAgICB8IF8sIHRydWUsIF8sICdvJyB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPiBJbnRfQ29cbiAgICB8IF8sIHRydWUsIF8sICgnZCcgfCAnaScgfCAndScpIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBmYWxzZSBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyMnXCJcbiAgICB8IHRydWUsIF8sIHRydWUsIF8gLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIlxuICAgIHwgZmFsc2UsIF8sIHRydWUsIF8gICAgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGhhc2ggZmFsc2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicgJ1wiXG4gICAgfCB0cnVlLCBfLCBmYWxzZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIGZhbHNlIGhhc2ggc3BhY2Ugc3ltYlxuICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgZmFsc2UsIF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogQ29udmVydCAocGx1cywgc3BhY2UsIHN5bWIpIHRvIGl0cyBhc3NvY2lhdGVkIGZsb2F0X2NvbnYuICopXG4gIGFuZCBjb21wdXRlX2Zsb2F0X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBsZXQgZmxhZyA9IG1hdGNoIHBsdXMsIHNwYWNlIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBGbG9hdF9mbGFnX1xuICAgIHwgZmFsc2UsICB0cnVlIC0+IEZsb2F0X2ZsYWdfc1xuICAgIHwgIHRydWUsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfcFxuICAgIHwgIHRydWUsICB0cnVlIC0+XG4gICAgICAoKiBwbHVzIGFuZCBzcGFjZTogbGVnYWN5IGltcGxlbWVudGF0aW9uIHByZWZlcnMgcGx1cyAqKVxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gRmxvYXRfZmxhZ19wXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnICcgXCInKydcIiBpblxuICAgIGxldCBraW5kID0gbWF0Y2ggaGFzaCwgc3ltYiB3aXRoXG4gICAgfCBfLCAnZicgLT4gRmxvYXRfZlxuICAgIHwgXywgJ2UnIC0+IEZsb2F0X2VcbiAgICB8IF8sICdFJyAtPiBGbG9hdF9FXG4gICAgfCBfLCAnZycgLT4gRmxvYXRfZ1xuICAgIHwgXywgJ0cnIC0+IEZsb2F0X0dcbiAgICB8IF8sICdoJyAtPiBGbG9hdF9oXG4gICAgfCBfLCAnSCcgLT4gRmxvYXRfSFxuICAgIHwgZmFsc2UsICdGJyAtPiBGbG9hdF9GXG4gICAgfCB0cnVlLCAnRicgLT4gRmxvYXRfQ0ZcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIGluXG4gICAgZmxhZywga2luZFxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBpbmNvbXBhdGlibGUgb3B0aW9ucy4qKVxuICBhbmQgaW5jb21wYXRpYmxlX2ZsYWcgOiB0eXBlIGEgLiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nIC0+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnRvdXQsIElOUklBIFBhcmlzLVNhY2xheSAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoIDogaW50O1xuICBtdXRhYmxlIGFyciA6ICdhIHNsb3QgYXJyYXk7XG59XG4oKiB7MiBUaGUgdHlwZSBbJ2EgdF19XG5cbiAgIEEgZHluYW1pYyBhcnJheSBpcyByZXByZXNlbnRlZCB1c2luZyBhIGJhY2tpbmcgYXJyYXkgW2Fycl0gYW5kXG4gICBhIFtsZW5ndGhdLiBJdCBiZWhhdmVzIGFzIGFuIGFycmF5IG9mIHNpemUgW2xlbmd0aF0gLS0gdGhlIGluZGljZXNcbiAgIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXSBpbmNsdWRlZCBjb250YWluIHVzZXItcHJvdmlkZWQgdmFsdWVzIGFuZFxuICAgY2FuIGJlIFtnZXRdIGFuZCBbc2V0XSAtLSBidXQgdGhlIGxlbmd0aCBtYXkgYWxzbyBjaGFuZ2UgaW4gdGhlXG4gICBmdXR1cmUgYnkgYWRkaW5nIG9yIHJlbW92aW5nIGVsZW1lbnRzIGF0IHRoZSBlbmQuXG5cbiAgIFdlIHVzZSB0aGUgZm9sbG93aW5nIGNvbmNlcHRzO1xuICAgLSBjYXBhY2l0eTogdGhlIGxlbmd0aCBvZiB0aGUgYmFja2luZyBhcnJheTpcbiAgICAgW0FycmF5Lmxlbmd0aCAgYXJyXVxuICAgLSBsaXZlIHNwYWNlOiB0aGUgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBhcnJheSB3aXRoXG4gICAgIGluZGljZXMgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdIGluY2x1ZGVkLlxuICAgLSBlbXB0eSBzcGFjZTogdGhlIHBvcnRpb24gb2YgdGhlIGJhY2tpbmcgYXJyYXlcbiAgICAgZnJvbSBbbGVuZ3RoXSB0byB0aGUgZW5kIG9mIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICB7MiBUaGUgdHlwZSBbJ2Egc2xvdF19XG5cbiAgIFdlIHNob3VsZCBub3Qga2VlcCBhIHVzZXItcHJvdmlkZWQgdmFsdWUgaW4gdGhlIGVtcHR5IHNwYWNlLCBhc1xuICAgdGhpcyBjb3VsZCBleHRlbmQgaXRzIGxpZmV0aW1lIGFuZCBtYXkgcmVzdWx0IGluIG1lbW9yeSBsZWFrcyBvZlxuICAgYXJiaXRyYXJ5IHNpemUuIEZ1bmN0aW9ucyB0aGF0IHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBkeW5hbWljXG4gICBhcnJheSwgc3VjaCBhcyBbcG9wX2xhc3RdIG9yIFt0cnVuY2F0ZV0sIG11c3QgcmVhbGx5IGVyYXNlIHRoZVxuICAgZWxlbWVudCBmcm9tIHRoZSBiYWNraW5nIGFycmF5LlxuXG4gICBUaGlzIGNvbnN0cmFpbnQgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHJlcHJlc2VudCBhbiBkeW5hbWljIGFycmF5IG9mXG4gICBlbGVtZW50cyBvZiB0eXBlIFsnYV0gd2l0aCBhIGJhY2tpbmcgYXJyYXkgb2YgdHlwZSBbJ2EgYXJyYXldOiB3aGF0XG4gICB2YWxpZCB2YWx1ZSBvZiB0eXBlIFsnYV0gd291bGQgd2UgdXNlIGluIHRoZSBlbXB0eSBzcGFjZT8gVHlwaWNhbFxuICAgY2hvaWNlcyBpbmNsdWRlOlxuICAgLSBhY2NlcHRpbmcgc2NlbmFyaW9zIHdoZXJlIHdlIGFjdHVhbGx5IGxlYWsgdXNlci1wcm92aWRlZCB2YWx1ZXNcbiAgICAgKGJ1dCB0aGlzIGNhbiBibG93dXAgbWVtb3J5IHVzYWdlIGluIHNvbWUgY2FzZXMsIGFuZCBpcyBoYXJkIHRvIGRlYnVnKVxuICAgLSByZXF1aXJpbmcgYSBcImR1bW15XCIgdmFsdWUgYXQgY3JlYXRpb24gb2YgdGhlIGR5bmFtaWMgYXJyYXlcbiAgICAgb3IgaW4gdGhlIHBhcnRzIG9mIHRoZSBBUEkgdGhhdCBncm93IHRoZSBlbXB0eSBzcGFjZVxuICAgICAoYnV0IHVzZXJzIGZpbmQgdGhpcyB2ZXJ5IGluY29udmVuaWVudClcbiAgIC0gdXNpbmcgYXJjYW5lIE9iai5tYWdpYyB0cmlja3NcbiAgICAgKGJ1dCBleHBlcnRzIGRvbid0IGFncmVlIG9uIHdoaWNoIHRyaWNrcyBhcmUgc2FmZSB0byB1c2UgYW5kL29yXG4gICAgICBzaG91bGQgYmUgdXNlZCBoZXJlKVxuICAgLSB1c2luZyBhIGJhY2tpbmcgYXJyYXkgb2YgWydhIG9wdGlvbl0gdmFsdWVzLCB1c2luZyBbTm9uZV1cbiAgICAgaW4gdGhlIGVtcHR5IHNwYWNlXG4gICAgIChidXQgdGhpcyBnaXZlcyBhIG5vdGljZWFibHkgbGVzcyBlZmZpY2llbnQgbWVtb3J5IHJlcHJlc2VudGF0aW9uKVxuXG4gICBJbiB0aGUgcHJlc2VudCBpbXBsZW1lbnRhdGlvbiwgd2UgdXNlIHRoZSBbJ2Egb3B0aW9uXSBhcHByb2FjaCxcbiAgIHdpdGggYSB0d2lzdC4gV2l0aCBbJ2Egb3B0aW9uXSwgY2FsbGluZyBbc2V0IGEgaSB4XSBtdXN0IHJlYWxsb2NhdGVcbiAgIGEgbmV3IFtTb21lIHhdIGJsb2NrOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIGEuYXJyLihpKSA8LSBTb21lIHhcbl19XG4gICBJbnN0ZWFkIHdlIHVzZSB0aGUgdHlwZSBbJ2Egc2xvdF0gYmVsb3csXG4gICB3aGljaCBiZWhhdmVzIGFzIGFuIG9wdGlvbiB3aG9zZSBbU29tZV0gY29uc3RydWN0b3JcbiAgIChjYWxsZWQgW0VsZW1dIGhlcmUpIGhhcyBhIF9tdXRhYmxlXyBhcmd1bWVudC5cbiopXG5hbmQgJ2Egc2xvdCA9XG58IEVtcHR5XG58IEVsZW0gb2YgeyBtdXRhYmxlIHY6ICdhIH1cbigqXG4gICBUaGlzIGdpdmVzIGFuIGFsbG9jYXRpb24tZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBbc2V0XSB0aGF0IGNhbGxzXG4gICBbQXJyYXkuZ2V0XSAoaW5zdGVhZCBvZiBbQXJyYXkuc2V0XSkgb24gdGhlIGJhY2tpbmcgYXJyYXkgYW5kIHRoZW5cbiAgIG11dGF0ZXMgdGhlIFt2XSBwYXJhbWV0ZXIuIEluIHBzZXVkby1jb2RlOlxue1tcbiAgIGxldCBzZXQgYSBpIHggPVxuICAgICBpZiBpIDwgMCB8fCBpID49IGEubGVuZ3RoIHRoZW4gZXJyb3IgXCJvdXQgb2YgYm91bmRzXCI7XG4gICAgIG1hdGNoIGEuYXJyLihpKSB3aXRoXG4gICAgIHwgRW1wdHkgLT4gZXJyb3IgXCJpbnZhbGlkIHN0YXRlOiBtaXNzaW5nIGVsZW1lbnRcIlxuICAgICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuXX1cbiAgIFdpdGggdGhpcyBhcHByb2FjaCwgYWNjZXNzaW5nIGFuIGVsZW1lbnQgc3RpbGwgcGF5cyB0aGUgY29zdCBvZiBhblxuICAgZXh0cmEgaW5kaXJlY3Rpb24gKGNvbXBhcmVkIHRvIGFwcHJvYWNoZXMgdGhhdCBkbyBub3QgYm94IGVsZW1lbnRzXG4gICBpbiB0aGUgYmFja2luZyBhcnJheSksIGJ1dCBvbmx5IG9wZXJhdGlvbnMgdGhhdCBhZGQgbmV3IGVsZW1lbnRzIGF0XG4gICB0aGUgZW5kIG9mIHRoZSBhcnJheSBwYXkgZXh0cmEgYWxsb2NhdGlvbnMuXG5cbiAgIFRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgWydhIG9wdGlvbl0gaXMgYmV0dGVyOiBpdCBtYWtlc1xuICAgW3BvcF9sYXN0X29wdF0gbW9yZSBlZmZpY2llbnQgYXMgdGhlIHVuZGVybHlpbmcgb3B0aW9uIGNhbiBiZVxuICAgcmV0dXJuZWQgZGlyZWN0bHksIGFuZCBpdCBhbHNvIGxldHMgdXMgdXNlIFtBcnJheS5ibGl0XSB0b1xuICAgaW1wbGVtZW50IFthcHBlbmRdLiBXZSBiZWxpZXZlIHRoYXQgb3B0aW1pemluZyBbZ2V0XSBhbmQgW3NldF0gaXNcbiAgIG1vcmUgaW1wb3J0YW50IGZvciBkeW5hbWljIGFycmF5cy5cblxuICAgezIgSW52YXJpYW50cyBhbmQgdmFsaWQgc3RhdGVzfVxuXG4gICBXZSBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBbbGVuZ3RoID49IDBdIGF0IGFsbCB0aW1lcy5cbiAgIHdlIHJlbHkgb24gdGhpcyBpbnZhcmlhbnQgZm9yIG9wdGltaXphdGlvbi5cblxuICAgVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGRlZmluZSB3aGF0IHdlIGNhbGwgYSBcInZhbGlkXCIgZHluYXJyYXk6XG4gICAtIHZhbGlkIGxlbmd0aDogW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuICAgLSBubyBtaXNzaW5nIGVsZW1lbnQgaW4gdGhlIGxpdmUgc3BhY2U6XG4gICAgIGZvcmFsbCBpLCBbMCA8PSBpIDwgbGVuZ3RoXSBpbXBsaWVzIFthcnIuKGkpIDw+IEVtcHR5XVxuICAgLSBubyBlbGVtZW50IGluIHRoZSBlbXB0eSBzcGFjZTpcbiAgICAgZm9yYWxsIGksIFtsZW5ndGggPD0gaSA8IEFycmF5Lmxlbmd0aCBhcnJdIGltcGxpZXMgW2Fyci4oaSkgPSBFbXB0eV1cblxuICAgVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IGVhc2lseSBlbmZvcmNlIHZhbGlkaXR5IGFzIGFuIGludmFyaWFudCBpblxuICAgcHJlc2VuY2Ugb2YgY29uY3VycmVudCB1cGRhdGVzLiBXZSBjYW4gdGh1cyBvYnNlcnZlIGR5bmFycmF5cyBpblxuICAgXCJpbnZhbGlkIHN0YXRlc1wiLiBPdXIgaW1wbGVtZW50YXRpb24gbWF5IHJhaXNlIGV4Y2VwdGlvbnMgb3IgcmV0dXJuXG4gICBpbmNvcnJlY3QgcmVzdWx0cyBvbiBvYnNlcnZpbmcgaW52YWxpZCBzdGF0ZXMsIGJ1dCBvZiBjb3Vyc2UgaXRcbiAgIG11c3QgcHJlc2VydmUgbWVtb3J5IHNhZmV0eS5cbiopXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBuZXZlcl0gaW5kZXhfb3V0X29mX2JvdW5kcyBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiRHluYXJyYXkuJXM6IGluZGV4ICVkIG91dCBvZiBib3VuZHMgKGVtcHR5IGR5bmFycmF5KVwiXG4gICAgICAgIGYgaVxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkR5bmFycmF5LiVzOiBpbmRleCAlZCBvdXQgb2YgYm91bmRzICgwLi4lZClcIlxuICAgICAgICBmIGkgKGxlbmd0aCAtIDEpXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgZiBuID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IG5lZ2F0aXZlIGxlbmd0aCAlZCByZXF1ZXN0ZWRcIlxuICAgICAgZiBuXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIG5lZ2F0aXZlX2NhcGFjaXR5X3JlcXVlc3RlZCBmIG4gPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogbmVnYXRpdmUgY2FwYWNpdHkgJWQgcmVxdWVzdGVkXCJcbiAgICAgIGYgblxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSByZXF1ZXN0ZWRfbGVuZ3RoX291dF9vZl9ib3VuZHMgZiByZXF1ZXN0ZWRfbGVuZ3RoID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGNhbm5vdCBncm93IHRvIHJlcXVlc3RlZCBsZW5ndGggJWQgKG1heF9hcnJheV9sZW5ndGggaXMgJWQpXCJcbiAgICAgIGYgcmVxdWVzdGVkX2xlbmd0aCBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG4gICgqIFdoZW4gb2JzZXJ2aW5nIGFuIGludmFsaWQgc3RhdGUgKFttaXNzaW5nX2VsZW1lbnRdLFxuICAgICBbaW52YWxpZF9sZW5ndGhdKSwgd2UgZG8gbm90IGdpdmUgdGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb25cbiAgICAgaW4gdGhlIGVycm9yIG1lc3NhZ2UsIGFzIHRoZSBlcnJvciBpcyByZWxhdGVkIHRvIGludmFsaWQgb3BlcmF0aW9uc1xuICAgICBwZXJmb3JtZWQgZWFybGllciwgYW5kIG5vdCB0byB0aGUgY2FsbHNpdGUgb2YgdGhlIGZ1bmN0aW9uXG4gICAgIGl0c2VsZi4gKilcblxuICBsZXQgaW52YWxpZF9zdGF0ZV9kZXNjcmlwdGlvbiA9XG4gICAgXCJJbnZhbGlkIGR5bmFycmF5ICh1bnN5bmNocm9uaXplZCBjb25jdXJyZW50IGxlbmd0aCBjaGFuZ2UpXCJcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGggPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCIlczogbWlzc2luZyBlbGVtZW50IGF0IHBvc2l0aW9uICVkIDwgbGVuZ3RoICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGkgbGVuZ3RoXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5ID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiJXM6IGxlbmd0aCAlZCA+IGNhcGFjaXR5ICVkXCJcbiAgICAgIGludmFsaWRfc3RhdGVfZGVzY3JpcHRpb25cbiAgICAgIGxlbmd0aCBjYXBhY2l0eVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBsZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZiB+ZXhwZWN0ZWQgfm9ic2VydmVkID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGEgbGVuZ3RoIGNoYW5nZSBmcm9tICVkIHRvICVkIG9jY3VycmVkIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgZiBleHBlY3RlZCBvYnNlcnZlZFxuXG4gICgqIFdoZW4gYW4gW0VtcHR5XSBlbGVtZW50IGlzIG9ic2VydmVkIHVuZXhwZWN0ZWRseSBhdCBpbmRleCBbaV0sXG4gICAgIGl0IG1heSBiZSBlaXRoZXIgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgYW4gaW52YWxpZC1zdGF0ZSBzaXR1YXRpb25cbiAgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgW2kgPD0gbGVuZ3RoXS4gKilcbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIHVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBmIH5pIH5sZW5ndGggPVxuICAgIGlmIGkgPCBsZW5ndGggdGhlblxuICAgICAgbWlzc2luZ19lbGVtZW50IH5pIH5sZW5ndGhcbiAgICBlbHNlXG4gICAgICBpbmRleF9vdXRfb2ZfYm91bmRzIGYgfmkgfmxlbmd0aFxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBlbXB0eV9keW5hcnJheSBmID1cbiAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgIFwiRHluYXJyYXkuJXM6IGVtcHR5IGFycmF5XCIgZlxuZW5kXG5cbigqIERldGVjdGluZyBpdGVyYXRvciBpbnZhbGlkYXRpb24uXG5cbiAgIFNlZSB7IWl0ZXJ9IGJlbG93IGZvciBhIGRldGFpbGVkIHVzYWdlIGV4YW1wbGUuXG4qKVxubGV0IGNoZWNrX3NhbWVfbGVuZ3RoIGYgYSB+bGVuZ3RoID1cbiAgbGV0IGxlbmd0aF9hID0gYS5sZW5ndGggaW5cbiAgaWYgbGVuZ3RoIDw+IGxlbmd0aF9hIHRoZW5cbiAgICBFcnJvci5sZW5ndGhfY2hhbmdlX2R1cmluZ19pdGVyYXRpb24gZlxuICAgICAgfmV4cGVjdGVkOmxlbmd0aCB+b2JzZXJ2ZWQ6bGVuZ3RoX2FcblxuKCoqIENhcmVmdWwgdW5zYWZlIGFjY2Vzcy4gKilcblxuKCogUG9zdGNvbmRpdGlvbiBvbiBub24tZXhjZXB0aW9uYWwgcmV0dXJuOlxuICAgW2xlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXSAqKVxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFyciA9XG4gIGxldCBjYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbGVuZ3RoID4gY2FwYWNpdHkgdGhlblxuICAgIEVycm9yLmludmFsaWRfbGVuZ3RoIH5sZW5ndGggfmNhcGFjaXR5XG5cbigqIFByZWNvbmRpdGlvbjogWzAgPD0gaSA8IGxlbmd0aCA8PSBBcnJheS5sZW5ndGggYXJyXVxuXG4gICBUaGlzIHByZWNvbmRpdGlvbiBpcyB0eXBpY2FsbHkgZ3VhcmFudGVlZCBieSBrbm93aW5nXG4gICBbMCA8PSBpIDwgbGVuZ3RoXSBhbmQgY2FsbGluZyBbY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnJdLiopXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggPVxuICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IGFyciBpIHdpdGhcbiAgfCBFbXB0eSAtPiBFcnJvci5taXNzaW5nX2VsZW1lbnQgfmkgfmxlbmd0aFxuICB8IEVsZW0ge3Z9IC0+IHZcblxuXG4oKiogezE6ZHluYXJyYXlzIER5bmFtaWMgYXJyYXlzfSAqKVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBhcnIgPSBbfCB8XTtcbn1cblxubGV0IG1ha2UgbiB4ID1cbiAgaWYgbiA8IDAgdGhlbiBFcnJvci5uZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIFwibWFrZVwiIG47XG4gIHtcbiAgICBsZW5ndGggPSBuO1xuICAgIGFyciA9IEFycmF5LmluaXQgbiAoZnVuIF8gLT4gRWxlbSB7diA9IHh9KTtcbiAgfVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJpbml0XCIgbjtcbiAge1xuICAgIGxlbmd0aCA9IG47XG4gICAgYXJyID0gQXJyYXkuaW5pdCBuIChmdW4gaSAtPiBFbGVtIHt2ID0gZiBpfSk7XG4gIH1cblxubGV0IGdldCBhIGkgPVxuICAoKiBUaGlzIGltcGxlbWVudGF0aW9uIHdpbGwgcHJvcGFnYXRlIGFuIFtJbnZhbGlkX2FyZ3VtZW50XSBleGNlcHRpb25cbiAgICAgZnJvbSBhcnJheSBsb29rdXAgaWYgdGhlIGluZGV4IGlzIG91dCBvZiB0aGUgYmFja2luZyBhcnJheSxcbiAgICAgaW5zdGVhZCBvZiB1c2luZyBvdXIgb3duIFtFcnJvci5pbmRleF9vdXRfb2ZfYm91bmRzXS4gVGhpcyBpc1xuICAgICBhbGxvd2VkIGJ5IG91ciBzcGVjaWZpY2F0aW9uLCBhbmQgbW9yZSBlZmZpY2llbnQgLS0gbm8gbmVlZCB0b1xuICAgICBjaGVjayB0aGF0IFtsZW5ndGggYSA8PSBjYXBhY2l0eSBhXSBpbiB0aGUgZmFzdCBwYXRoLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnZcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IudW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IFwiZ2V0XCIgfmkgfmxlbmd0aDphLmxlbmd0aFxuXG5sZXQgc2V0IGEgaSB4ID1cbiAgKCogU2VlIHshZ2V0fSBjb21tZW50IG9uIHRoZSB1c2Ugb2YgY2hlY2tlZCBhcnJheVxuICAgICBhY2Nlc3Mgd2l0aG91dCBvdXIgb3duIGJvdW5kIGNoZWNraW5nLiAqKVxuICBtYXRjaCBhLmFyci4oaSkgd2l0aFxuICB8IEVsZW0gcyAtPiBzLnYgPC0geFxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci51bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgXCJzZXRcIiB+aSB+bGVuZ3RoOmEubGVuZ3RoXG5cbmxldCBsZW5ndGggYSA9IGEubGVuZ3RoXG5cbmxldCBpc19lbXB0eSBhID0gKGEubGVuZ3RoID0gMClcblxubGV0IGNvcHkge2xlbmd0aDsgYXJyfSA9XG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiB1c2UgW2xlbmd0aF0gYXMgdGhlIG5ldyBjYXBhY2l0eSB0byBtYWtlXG4gICAgIHRoaXMgYW4gTyhsZW5ndGgpIG9wZXJhdGlvbi4gKilcbiAge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgRWxlbSB7dn1cbiAgICApO1xuICB9XG5cbmxldCBnZXRfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiBFcnJvci5lbXB0eV9keW5hcnJheSBcImdldF9sYXN0XCI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICB1bnNhZmVfZ2V0IGFyciB+aToobGVuZ3RoIC0gMSkgfmxlbmd0aFxuXG5sZXQgZmluZF9sYXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA8PSBjYXBhY2l0eSBhXS4gKilcbiAgaWYgbGVuZ3RoID0gMCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdLiAqKVxuICAgIFNvbWUgKHVuc2FmZV9nZXQgYXJyIH5pOihsZW5ndGggLSAxKSB+bGVuZ3RoKVxuXG4oKiogezE6cmVtb3ZpbmcgUmVtb3ZpbmcgZWxlbWVudHN9ICopXG5cbmxldCBwb3BfbGFzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICAoKiBXZSBrbm93IFtsZW5ndGggPD0gY2FwYWNpdHkgYV0uICopXG4gIGlmIGxlbmd0aCA9IDAgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBsYXN0ID0gbGVuZ3RoIC0gMSBpblxuICAoKiBXZSBrbm93IFtsZW5ndGggPiAwXSBzbyBbbGFzdCA+PSAwXS4gKilcbiAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCBhcnIgbGFzdCB3aXRoXG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLm1pc3NpbmdfZWxlbWVudCB+aTpsYXN0IH5sZW5ndGhcbiAgfCBFbGVtIHMgLT5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyIGxhc3QgRW1wdHk7XG4gICAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgICAgcy52XG5cbmxldCBwb3BfbGFzdF9vcHQgYSA9XG4gIG1hdGNoIHBvcF9sYXN0IGEgd2l0aFxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICB8IHggLT4gU29tZSB4XG5cbmxldCByZW1vdmVfbGFzdCBhID1cbiAgbGV0IGxhc3QgPSBsZW5ndGggYSAtIDEgaW5cbiAgaWYgbGFzdCA+PSAwIHRoZW4gYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsYXN0O1xuICAgIGEuYXJyLihsYXN0KSA8LSBFbXB0eTtcbiAgZW5kXG5cbmxldCB0cnVuY2F0ZSBhIG4gPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJ0cnVuY2F0ZVwiIG47XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBpZiBsZW5ndGggPD0gbiB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBuO1xuICAgIEFycmF5LmZpbGwgYXJyIG4gKGxlbmd0aCAtIG4pIEVtcHR5O1xuICBlbmRcblxubGV0IGNsZWFyIGEgPSB0cnVuY2F0ZSBhIDBcblxuXG4oKiogezE6Y2FwYWNpdHkgQmFja2luZyBhcnJheSBhbmQgY2FwYWNpdHl9ICopXG5cbmxldCBjYXBhY2l0eSBhID0gQXJyYXkubGVuZ3RoIGEuYXJyXG5cbmxldCBuZXh0X2NhcGFjaXR5IG4gPVxuICBsZXQgbicgPVxuICAgICgqIEZvciBsYXJnZSB2YWx1ZXMgb2Ygbiwgd2UgdXNlIDEuNSBhcyBvdXIgZ3Jvd3RoIGZhY3Rvci5cblxuICAgICAgIEZvciBzbWFsbGVyIHZhbHVlcyBvZiBuLCB3ZSBncm93IG1vcmUgYWdncmVzc2l2ZWx5IHRvIGF2b2lkXG4gICAgICAgcmVhbGxvY2F0aW5nIHRvbyBtdWNoIHdoZW4gYWNjdW11bGF0aW5nIGVsZW1lbnRzIGludG8gYW4gZW1wdHlcbiAgICAgICBhcnJheS5cblxuICAgICAgIFRoZSBjb25zdGFudHMgXCI1MTIgd29yZHNcIiBhbmQgXCI4IHdvcmRzXCIgYmVsb3cgYXJlIHRha2VuIGZyb21cbiAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mb2xseS9ibG9iL1xuICAgICAgICAgICBjMDZjMGY0MWQ5MWRhZjFhNmE1ZjNmYzFjZDQ2NTMwMmFjMjYwNDU5L2ZvbGx5L0ZCVmVjdG9yLmgjTDExMjgtTDExNTdcbiAgICAqKVxuICAgIGlmIG4gPD0gNTEyIHRoZW4gbiAqIDJcbiAgICBlbHNlIG4gKyBuIC8gMlxuICBpblxuICAoKiBqdW1wIGRpcmVjdGx5IGZyb20gMCB0byA4ICopXG4gIG1pbiAobWF4IDggbicpIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBlbnN1cmVfY2FwYWNpdHkgYSBjYXBhY2l0eV9yZXF1ZXN0ID1cbiAgbGV0IGFyciA9IGEuYXJyIGluXG4gIGxldCBjdXJfY2FwYWNpdHkgPSBBcnJheS5sZW5ndGggYXJyIGluXG4gIGlmIGNhcGFjaXR5X3JlcXVlc3QgPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJlbnN1cmVfY2FwYWNpdHlcIiBjYXBhY2l0eV9yZXF1ZXN0XG4gIGVsc2UgaWYgY3VyX2NhcGFjaXR5ID49IGNhcGFjaXR5X3JlcXVlc3QgdGhlblxuICAgICgqIFRoaXMgaXMgdGhlIGZhc3QgcGF0aCwgdGhlIGNvZGUgdXAgdG8gaGVyZSBtdXN0IGRvIGFzIGxpdHRsZSBhc1xuICAgICAgIHBvc3NpYmxlLiAoVGhpcyBpcyB3aHkgd2UgZG9uJ3QgdXNlIFtsZXQge2FycjsgbGVuZ3RofSA9IGFdIGFzXG4gICAgICAgdXN1YWwsIHRoZSBsZW5ndGggaXMgbm90IG5lZWRlZCBpbiB0aGUgZmFzdCBwYXRoLikqKVxuICAgICgpXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBjYXBhY2l0eV9yZXF1ZXN0ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlblxuICAgICAgRXJyb3IucmVxdWVzdGVkX2xlbmd0aF9vdXRfb2ZfYm91bmRzIFwiZW5zdXJlX2NhcGFjaXR5XCIgY2FwYWNpdHlfcmVxdWVzdDtcbiAgICBsZXQgbmV3X2NhcGFjaXR5ID1cbiAgICAgICgqIFdlIHVzZSBlaXRoZXIgdGhlIG5leHQgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LFxuICAgICAgICAgb3IgdGhlIHJlcXVlc3RlZCBzdHJhdGVneSwgd2hpY2hldmVyIGlzIGJpZ2dlci5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgZXhwb25lbnRpYWwtZ3Jvd3RoIHN0cmF0ZWd5LCB0aGlzXG4gICAgICAgICBsZXRzIHVzIHVzZSBsZXNzIG1lbW9yeSBieSBhdm9pZGluZyBhbnkgb3ZlcnNob290IHdoZW5ldmVyXG4gICAgICAgICB0aGUgY2FwYWNpdHkgcmVxdWVzdCBpcyBub3RpY2VhYmx5IGxhcmdlciB0aGFuIHRoZSBjdXJyZW50XG4gICAgICAgICBjYXBhY2l0eS5cblxuICAgICAgICAgQ29tcGFyZWQgdG8gb25seSB1c2luZyB0aGUgcmVxdWVzdGVkIGNhcGFjaXR5LCB0aGlzIGF2b2lkc1xuICAgICAgICAgbG9zaW5nIHRoZSBhbW9ydGl6ZWQgZ3VhcmFudGVlOiB3ZSBhbGxvY2F0ZWQgXCJleHBvbmVudGlhbGx5XG4gICAgICAgICBvciBtb3JlXCIsIHNvIHRoZSBhbW9ydGl6YXRpb24gaG9sZHMuIEluIHBhcnRpY3VsYXIsIG5vdGljZVxuICAgICAgICAgdGhhdCByZXBlYXRlZCBjYWxscyB0byBbZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgMSldXG4gICAgICAgICB3aWxsIGhhdmUgYW1vcnRpemVkLWxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgY29tcGxleGl0eS5cbiAgICAgICopXG4gICAgICBtYXggKG5leHRfY2FwYWNpdHkgY3VyX2NhcGFjaXR5KSBjYXBhY2l0eV9yZXF1ZXN0IGluXG4gICAgbGV0IG5ld19hcnIgPSBBcnJheS5tYWtlIG5ld19jYXBhY2l0eSBFbXB0eSBpblxuICAgIEFycmF5LmJsaXQgYXJyIDAgbmV3X2FyciAwIGEubGVuZ3RoO1xuICAgIGEuYXJyIDwtIG5ld19hcnI7XG4gICAgKCogcG9zdGNvbmRpdGlvbjogKilcbiAgICBhc3NlcnQgKDAgPD0gY2FwYWNpdHlfcmVxdWVzdCk7XG4gICAgYXNzZXJ0IChjYXBhY2l0eV9yZXF1ZXN0IDw9IEFycmF5Lmxlbmd0aCBuZXdfYXJyKTtcbiAgZW5kXG5cbmxldCBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBleHRyYV9jYXBhY2l0eV9yZXF1ZXN0ID1cbiAgZW5zdXJlX2NhcGFjaXR5IGEgKGxlbmd0aCBhICsgZXh0cmFfY2FwYWNpdHlfcmVxdWVzdClcblxubGV0IGZpdF9jYXBhY2l0eSBhID1cbiAgaWYgY2FwYWNpdHkgYSA9IGEubGVuZ3RoXG4gIHRoZW4gKClcbiAgZWxzZSBhLmFyciA8LSBBcnJheS5zdWIgYS5hcnIgMCBhLmxlbmd0aFxuXG5sZXQgc2V0X2NhcGFjaXR5IGEgbiA9XG4gIGlmIG4gPCAwIHRoZW5cbiAgICBFcnJvci5uZWdhdGl2ZV9jYXBhY2l0eV9yZXF1ZXN0ZWQgXCJzZXRfY2FwYWNpdHlcIiBuO1xuICBsZXQgYXJyID0gYS5hcnIgaW5cbiAgbGV0IGN1cl9jYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgbiA8IGN1cl9jYXBhY2l0eSB0aGVuIGJlZ2luXG4gICAgYS5sZW5ndGggPC0gbWluIGEubGVuZ3RoIG47XG4gICAgYS5hcnIgPC0gQXJyYXkuc3ViIGFyciAwIG47XG4gIGVuZFxuICBlbHNlIGlmIG4gPiBjdXJfY2FwYWNpdHkgdGhlbiBiZWdpblxuICAgIGxldCBuZXdfYXJyID0gQXJyYXkubWFrZSBuIEVtcHR5IGluXG4gICAgQXJyYXkuYmxpdCBhcnIgMCBuZXdfYXJyIDAgYS5sZW5ndGg7XG4gICAgYS5hcnIgPC0gbmV3X2FycjtcbiAgZW5kXG5cbmxldCByZXNldCBhID1cbiAgYS5sZW5ndGggPC0gMDtcbiAgYS5hcnIgPC0gW3x8XVxuXG4oKiogezE6YWRkaW5nIEFkZGluZyBlbGVtZW50c30gKilcblxuKCogV2UgY2hvc2UgYW4gaW1wbGVtZW50YXRpb24gb2YgW2FkZF9sYXN0IGEgeF0gdGhhdCBiZWhhdmVzIGNvcnJlY3RseVxuICAgaW4gcHJlc2VuY2Ugb2YgYXN5bmNocm9ub3VzIC8gcmUtZW50cmFudCBjb2RlIGV4ZWN1dGlvbiBhcm91bmRcbiAgIGFsbG9jYXRpb25zIGFuZCBwb2xsIHBvaW50czogaWYgYW5vdGhlciB0aHJlYWQgb3IgYSBjYWxsYmFjayBnZXRzXG4gICBleGVjdXRlZCBvbiBhbGxvY2F0aW9uLCB3ZSBhZGQgdGhlIGVsZW1lbnQgYXQgdGhlIG5ldyBlbmQgb2YgdGhlXG4gICBkeW5hbWljIGFycmF5LlxuXG4gICAoV2UgZG8gbm90IGdpdmUgdGhlIHNhbWUgZ3VhcmFudGVlcyBpbiBwcmVzZW5jZSBvZiBjb25jdXJyZW50XG4gICBwYXJhbGxlbCB1cGRhdGVzLCB3aGljaCBhcmUgbXVjaCBtb3JlIGV4cGVuc2l2ZSB0byBwcm90ZWN0XG4gICBhZ2FpbnN0LilcbiopXG5cbigqIFthZGRfbGFzdF9pZl9yb29tIGEgZWxlbV0gb25seSB3cml0ZXMgdGhlIHNsb3QgaWYgdGhlcmUgaXMgcm9vbSwgYW5kXG4gICByZXR1cm5zIFtmYWxzZV0gb3RoZXJ3aXNlLiAqKVxubGV0W0BpbmxpbmVdIGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gICgqIHdlIGtub3cgWzAgPD0gbGVuZ3RoXSAqKVxuICBpZiBsZW5ndGggPj0gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICAoKiB3ZSBrbm93IFswIDw9IGxlbmd0aCA8IEFycmF5Lmxlbmd0aCBhcnJdICopXG4gICAgYS5sZW5ndGggPC0gbGVuZ3RoICsgMTtcbiAgICBBcnJheS51bnNhZmVfc2V0IGFyciBsZW5ndGggZWxlbTtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYWRkX2xhc3QgYSB4ID1cbiAgbGV0IGVsZW0gPSBFbGVtIHt2ID0geH0gaW5cbiAgaWYgYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW0gdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hZGQgYSBlbGVtID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIDE7XG4gICAgICBpZiBub3QgKGFkZF9sYXN0X2lmX3Jvb20gYSBlbGVtKVxuICAgICAgdGhlbiBncm93X2FuZF9hZGQgYSBlbGVtXG4gICAgaW4gZ3Jvd19hbmRfYWRkIGEgZWxlbVxuICBlbmRcblxubGV0IHJlYyBhcHBlbmRfbGlzdCBhIGxpID1cbiAgbWF0Y2ggbGkgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgeCA6OiB4cyAtPiBhZGRfbGFzdCBhIHg7IGFwcGVuZF9saXN0IGEgeHNcblxubGV0IGFwcGVuZF9pdGVyIGEgaXRlciBiID1cbiAgaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBiXG5cbmxldCBhcHBlbmRfc2VxIGEgc2VxID1cbiAgU2VxLml0ZXIgKGZ1biB4IC0+IGFkZF9sYXN0IGEgeCkgc2VxXG5cbigqIGFwcGVuZF9hcnJheTogc2FtZSBbLi4uX2lmX3Jvb21dIGFuZCBsb29wIGxvZ2ljIGFzIFthZGRfbGFzdF0uICopXG5cbmxldCBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgPVxuICBsZXQge2FycjsgbGVuZ3RoID0gbGVuZ3RoX2F9ID0gYSBpblxuICBsZXQgbGVuZ3RoX2IgPSBBcnJheS5sZW5ndGggYiBpblxuICBpZiBsZW5ndGhfYSArIGxlbmd0aF9iID4gQXJyYXkubGVuZ3RoIGFyciB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgICgqIE5vdGU6IHdlIGludGVudGlvbmFsbHkgdXBkYXRlIHRoZSBsZW5ndGggKmJlZm9yZSogZmlsbGluZyB0aGVcbiAgICAgICBlbGVtZW50cy4gVGhpcyBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBhcHByb2FjaCBwcm92aWRlcyBiZXR0ZXJcbiAgICAgICBiZWhhdmlvciB0aGFuIFwiZmlsbCB0aGVuIG5vdGlmeVwiIGluIHByZXNlbmNlIG9mIHJlZW50cmFudFxuICAgICAgIG1vZGlmaWNhdGlvbnMgKHdoaWNoIG1heSBvY2N1ciBiZWxvdywgb24gYSBwb2xsIHBvaW50IGluIHRoZSBsb29wIG9yXG4gICAgICAgdGhlIFtFbGVtXSBhbGxvY2F0aW9uKTpcblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGFkZHMgbmV3IGVsZW1lbnRzIGFmdGVyIHRoaXNcbiAgICAgICAgIGxlbmd0aCB1cGRhdGUsIHRoZXkgd2lsbCBnbyBhZnRlciB0aGUgc3BhY2Ugd2UganVzdCByZXNlcnZlZCxcbiAgICAgICAgIGFuZCBpbiBwYXJ0aWN1bGFyIG5vIGFkZGl0aW9uIHdpbGwgYmUgbG9zdC4gSWYgaW5zdGVhZCB3ZVxuICAgICAgICAgdXBkYXRlZCB0aGUgbGVuZ3RoIGFmdGVyIHRoZSBsb29wLCBhbnkgYXN5bmNocm9ub3VzIGFkZGl0aW9uXG4gICAgICAgICBkdXJpbmcgdGhlIGxvb3AgY291bGQgYmUgZXJhc2VkIG9yIGVyYXNlIG9uZSBvZiBvdXIgYWRkaXRpb25zLFxuICAgICAgICAgc2lsZW50bHksIHdpdGhvdXQgd2FybmluZyB0aGUgdXNlci5cblxuICAgICAgIC0gSWYgc29tZSBjb2RlIGFzeW5jaHJvbm91c2x5IGl0ZXJhdGVzIG9uIHRoZSBkeW5hcnJheSwgb3JcbiAgICAgICAgIHJlbW92ZXMgZWxlbWVudHMsIG9yIG90aGVyd2lzZSB0cmllcyB0byBhY2Nlc3MgdGhlXG4gICAgICAgICByZXNlcnZlZC1idXQtbm90LXlldC1maWxsZWQgc3BhY2UsIGl0IHdpbGwgZ2V0IGEgY2xlYW4gXCJtaXNzaW5nXG4gICAgICAgICBlbGVtZW50XCIgZXJyb3IuIFRoaXMgaXMgd29yc2UgdGhhbiB3aXRoIHRoZSBmaWxsLXRoZW4tbm90aWZ5XG4gICAgICAgICBhcHByb2FjaCB3aGVyZSB0aGUgbmV3IGVsZW1lbnRzIHdvdWxkIG9ubHkgYmVjb21lIHZpc2libGVcbiAgICAgICAgICh0byBpdGVyYXRvcnMsIGZvciByZW1vdmFsLCBldGMuKSBhbGx0b2dldGhlciBhdCB0aGUgZW5kIG9mXG4gICAgICAgICBsb29wLlxuXG4gICAgICAgVG8gc3VtbWFyaXNlLCBcInJlc2VydmUgYmVmb3JlIGZpbGxcIiBpcyBiZXR0ZXIgb24gYWRkLWFkZCByYWNlcyxcbiAgICAgICBhbmQgXCJmaWxsIHRoZW4gbm90aWZ5XCIgaXMgYmV0dGVyIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGVcbiAgICAgICByYWNlcy4gQnV0IHRoZSBrZXkgZGlmZmVyZW5jZSBpcyB0aGUgZmFpbHVyZSBtb2RlOlxuICAgICAgIHJlc2VydmUtYmVmb3JlIGZhaWxzIG9uIGFkZC1yZW1vdmUgb3IgYWRkLWl0ZXJhdGUgcmFjZXMgd2l0aFxuICAgICAgIGEgY2xlYW4gZXJyb3IsIHdoaWxlIG5vdGlmeS1hZnRlciBmYWlscyBvbiBhZGQtYWRkIHJhY2VzIHdpdGhcbiAgICAgICBzaWxlbnRseSBkaXNhcHBlYXJpbmcgZGF0YS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX2IgLSAxIGRvXG4gICAgICBsZXQgeCA9IEFycmF5LnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFyciAobGVuZ3RoX2EgKyBpKSAoRWxlbSB7diA9IHh9KVxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICBlbmRcblxubGV0IGFwcGVuZF9hcnJheSBhIGIgPVxuICBpZiBhcHBlbmRfYXJyYXlfaWZfcm9vbSBhIGIgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIChBcnJheS5sZW5ndGggYik7XG4gICAgICBpZiBub3QgKGFwcGVuZF9hcnJheV9pZl9yb29tIGEgYilcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYXBwZW5kIGEgYlxuICAgIGluIGdyb3dfYW5kX2FwcGVuZCBhIGIgIGVuZFxuXG4oKiBhcHBlbmQ6IHNhbWUgWy4uLl9pZl9yb29tXSBhbmQgbG9vcCBsb2dpYyBhcyBbYWRkX2xhc3RdLFxuICAgc2FtZSByZXNlcnZlLWJlZm9yZS1maWxsIGxvZ2ljIGFzIFthcHBlbmRfYXJyYXldLiAqKVxuXG4oKiBJdCBpcyBhIHByb2dyYW1taW5nIGVycm9yIHRvIG11dGF0ZSB0aGUgbGVuZ3RoIG9mIFtiXSBkdXJpbmcgYSBjYWxsXG4gICB0byBbYXBwZW5kIGEgYl0uIFRvIGRldGVjdCB0aGlzIG1pc3Rha2Ugd2Uga2VlcCB0cmFjayBvZiB0aGUgbGVuZ3RoXG4gICBvZiBbYl0gdGhyb3VnaG91dCB0aGUgY29tcHV0YXRpb24gYW5kIGNoZWNrIGl0IHRoYXQgZG9lcyBub3RcbiAgIGNoYW5nZS5cbiopXG5sZXQgYXBwZW5kX2lmX3Jvb20gYSBiIH5sZW5ndGhfYiA9XG4gIGxldCB7YXJyID0gYXJyX2E7IGxlbmd0aCA9IGxlbmd0aF9hfSA9IGEgaW5cbiAgaWYgbGVuZ3RoX2EgKyBsZW5ndGhfYiA+IEFycmF5Lmxlbmd0aCBhcnJfYSB0aGVuIGZhbHNlXG4gIGVsc2UgYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBsZW5ndGhfYSArIGxlbmd0aF9iO1xuICAgIGxldCBhcnJfYiA9IGIuYXJyIGluXG4gICAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aF9iIGFycl9iO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGhfYiAtIDEgZG9cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhcnJfYiB+aSB+bGVuZ3RoOmxlbmd0aF9iIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGFycl9hIChsZW5ndGhfYSArIGkpIChFbGVtIHt2ID0geH0pXG4gICAgZG9uZTtcbiAgICBjaGVja19zYW1lX2xlbmd0aCBcImFwcGVuZFwiIGIgfmxlbmd0aDpsZW5ndGhfYjtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYXBwZW5kIGEgYiA9XG4gIGxldCBsZW5ndGhfYiA9IGxlbmd0aCBiIGluXG4gIGlmIGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IgdGhlbiAoKVxuICBlbHNlIGJlZ2luXG4gICAgKCogc2xvdyBwYXRoICopXG4gICAgbGV0IHJlYyBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYiA9XG4gICAgICBlbnN1cmVfZXh0cmFfY2FwYWNpdHkgYSBsZW5ndGhfYjtcbiAgICAgICgqIEVsaWRpbmcgdGhlIFtjaGVja19zYW1lX2xlbmd0aF0gY2FsbCBiZWxvdyB3b3VsZCBiZSB3cm9uZyBpblxuICAgICAgICAgdGhlIGNhc2Ugd2hlcmUgW2FdIGFuZCBbYl0gYXJlIGFsaWFzZXMgb2YgZWFjaCBvdGhlciwgd2VcbiAgICAgICAgIHdvdWxkIGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AgaW5zdGVhZCBvZiBmYWlsaW5nLlxuXG4gICAgICAgICBXZSBjb3VsZCBwdXNoIHRoZSBjYWxsIHRvIFthcHBlbmRfaWZfcm9vbV0gaXRzZWxmLCBidXQgd2VcbiAgICAgICAgIHByZWZlciB0byBrZWVwIGl0IGluIHRoZSBzbG93IHBhdGguICAqKVxuICAgICAgY2hlY2tfc2FtZV9sZW5ndGggXCJhcHBlbmRcIiBiIH5sZW5ndGg6bGVuZ3RoX2I7XG4gICAgICBpZiBub3QgKGFwcGVuZF9pZl9yb29tIGEgYiB+bGVuZ3RoX2IpXG4gICAgICB0aGVuIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iXG4gICAgaW4gZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2JcbiAgZW5kXG5cblxuXG4oKiogezE6aXRlcmF0aW9uIEl0ZXJhdGlvbn0gKilcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIGNob2ljZSB0aGF0IHdlIG1hZGUgZm9yIGl0ZXJhdG9ycyBpcyB0aGUgb25lXG4gICB0aGF0IG1heGltaXplcyBlZmZpY2llbmN5IGJ5IGF2b2lkaW5nIHJlcGVhdGVkIGJvdW5kIGNoZWNraW5nOiB3ZVxuICAgY2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgZHluYW1pYyBhcnJheSBvbmNlIGF0IHRoZSBiZWdpbm5pbmcsIGFuZFxuICAgdGhlbiBvbmx5IG9wZXJhdGUgb24gdGhhdCBwb3J0aW9uIG9mIHRoZSBkeW5hcnJheSwgaWdub3JpbmdcbiAgIGVsZW1lbnRzIGFkZGVkIGluIHRoZSBtZWFudGltZS5cblxuICAgVGhlIHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgaXQgaXMgYSBwcm9ncmFtbWluZyBlcnJvciB0byBtdXRhdGVcbiAgIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IGR1cmluZyBpdGVyYXRpb24uIFdlIGNoZWNrIGZvciB0aGlzIGFuZFxuICAgcmFpc2UgYW4gZXJyb3Igb24gc2l6ZSBjaGFuZ2UuXG4gICBOb3RlIHRoYXQgd2UgbWF5IHN0aWxsIG1pc3Mgc29tZSB0cmFuc2llbnQgc3RhdGUgY2hhbmdlcyB0aGF0IGNhbmNlbFxuICAgZWFjaCBvdGhlciBhbmQgbGVhdmUgdGhlIGxlbmd0aCB1bmNoYW5nZWQgYXQgdGhlIG5leHQgY2hlY2suXG4qKVxuXG5sZXQgaXRlcl8gZiBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgKCogW2NoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyXSBpcyB1c2VkIGZvciBtZW1vcnkgc2FmZXR5LCBpdFxuICAgICBndWFyYW50ZWVzIHRoYXQgdGhlIGJhY2tpbmcgYXJyYXkgaGFzIGNhcGFjaXR5IGF0IGxlYXN0IFtsZW5ndGhdLFxuICAgICBhbGxvd2luZyB1bnNhZmUgYXJyYXkgYWNjZXNzLlxuXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gaXMgdXNlZCBmb3IgY29ycmVjdG5lc3MsIGl0IGxldHMgdGhlIGZ1bmN0aW9uXG4gICAgIGZhaWwgbW9yZSBvZnRlbiBpZiB3ZSBkaXNjb3ZlciB0aGUgcHJvZ3JhbW1pbmcgZXJyb3Igb2YgbXV0YXRpbmdcbiAgICAgdGhlIGxlbmd0aCBkdXJpbmcgaXRlcmF0aW9uLlxuXG4gICAgIFdlIGNvdWxkLCBuYWl2ZWx5LCBjYWxsIFtjaGVja19zYW1lX2xlbmd0aF0gYXQgZWFjaCBpdGVyYXRpb24gb2ZcbiAgICAgdGhlIGxvb3AgKGJlZm9yZSBvciBhZnRlciwgb3IgYm90aCkuIEhvd2V2ZXIsIG5vdGljZSB0aGF0IHRoaXMgaXNcbiAgICAgbm90IG5lY2Vzc2FyeSB0byBkZXRlY3QgdGhlIHJlbW92YWwgb2YgZWxlbWVudHMgZnJvbSBbYV06IGlmXG4gICAgIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSB0aW1lIHRoZSBbZm9yXSBsb29wIHJlYWNoZXNcbiAgICAgdGhlbSwgdGhlbiBbdW5zYWZlX2dldF0gd2lsbCBpdHNlbGYgZmFpbCB3aXRoIGFuIFtJbnZhbGlkX2FyZ3VtZW50XVxuICAgICBleGNlcHRpb24uIFdlIG9ubHkgbmVlZCB0byBkZXRlY3QgdGhlIGFkZGl0aW9uIG9mIG5ldyBlbGVtZW50cyB0b1xuICAgICBbYV0gZHVyaW5nIGl0ZXJhdGlvbiwgYW5kIGZvciB0aGlzIGl0IGlzIGVub3VnaCB0byBjYWxsXG4gICAgIFtjaGVja19zYW1lX2xlbmd0aF0gb25jZSBhdCB0aGUgZW5kLlxuXG4gICAgIENhbGxpbmcgW2NoZWNrX3NhbWVfbGVuZ3RoXSBtb3JlIG9mdGVuIGNvdWxkIGNhdGNoIG1vcmVcbiAgICAgcHJvZ3JhbW1pbmcgZXJyb3JzLCBidXQgdGhlIG9ubHkgZXJyb3JzIHRoYXQgd2UgbWlzcyB3aXRoIHRoaXNcbiAgICAgb3B0aW1pemF0aW9uIGFyZSB0aG9zZSB0aGF0IGtlZXAgdGhlIGFycmF5IHNpemUgY29uc3RhbnQgLS1cbiAgICAgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgdGhhdCBjYW5jZWwgZWFjaCBvdGhlci4gV2UgY29uc2lkZXIgdGhpc1xuICAgICBhbiBhY2NlcHRhYmxlIHRyYWRlb2ZmLlxuICAqKVxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBrICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggZiBhIH5sZW5ndGhcblxubGV0IGl0ZXIgayBhID1cbiAgaXRlcl8gXCJpdGVyXCIgayBhXG5cbmxldCBpdGVyaSBrIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgayBpICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKTtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJpdGVyaVwiIGEgfmxlbmd0aFxuXG5sZXQgbWFwIGYgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgICBFbGVtIHt2ID0gZiAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCl9KTtcbiAgfSBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcIm1hcFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVzID0ge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIEVsZW0ge3YgPSBmIGkgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpfSk7XG4gIH0gaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJtYXBpXCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IGZvbGRfbGVmdCBmIGFjYyBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgIXIgdjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX2xlZnRcIiBhIH5sZW5ndGg7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBhY2MgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICByIDo9IGYgdiAhcjtcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb2xkX3JpZ2h0XCIgYSB+bGVuZ3RoO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gZmFsc2VcbiAgICBlbHNlXG4gICAgICBwICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKVxuICAgICAgfHwgbG9vcCBwIGFyciAoaSArIDEpIGxlbmd0aFxuICBpblxuICBsZXQgcmVzID0gbG9vcCBwIGFyciAwIGxlbmd0aCBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcImV4aXN0c1wiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBsb29wIHAgYXJyIGkgbGVuZ3RoID1cbiAgICBpZiBpID0gbGVuZ3RoIHRoZW4gdHJ1ZVxuICAgIGVsc2VcbiAgICAgIHAgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gICAgICAmJiBsb29wIHAgYXJyIChpICsgMSkgbGVuZ3RoXG4gIGluXG4gIGxldCByZXMgPSBsb29wIHAgYXJyIDAgbGVuZ3RoIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZm9yX2FsbFwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBmaWx0ZXIgZiBhID1cbiAgbGV0IGIgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcl8gXCJmaWx0ZXJcIiAoZnVuIHggLT4gaWYgZiB4IHRoZW4gYWRkX2xhc3QgYiB4KSBhO1xuICBiXG5cbmxldCBmaWx0ZXJfbWFwIGYgYSA9XG4gIGxldCBiID0gY3JlYXRlICgpIGluXG4gIGl0ZXJfIFwiZmlsdGVyX21hcFwiIChmdW4geCAtPlxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT4gYWRkX2xhc3QgYiB5XG4gICkgYTtcbiAgYlxuXG5cbigqKiB7MTpjb252ZXJzaW9ucyBDb252ZXJzaW9ucyB0byBvdGhlciBkYXRhIHN0cnVjdHVyZXN9ICopXG5cbigqIFRoZSBlYWdlciBbdG9fKl0gY29udmVyc2lvbiBmdW5jdGlvbnMgYmVoYXZlIHNpbWlsYXJseSB0byBpdGVyYXRvcnNcbiAgIGluIHByZXNlbmNlIG9mIHVwZGF0ZXMgZHVyaW5nIGNvbXB1dGF0aW9uLiBUaGUgWypfcmVlbnRyYW50XVxuICAgZnVuY3Rpb25zIG9iZXkgdGhlaXIgbW9yZSBwZXJtaXNzaXZlIHNwZWNpZmljYXRpb24sIHdoaWNoIHRvbGVyYXRlc1xuICAgYW55IGNvbmN1cnJlbnQgdXBkYXRlLiAqKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggYSBpblxuICB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPiBFbGVtIHt2ID0gQXJyYXkudW5zYWZlX2dldCBhIGl9KTtcbiAgfVxuXG5sZXQgdG9fYXJyYXkgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlcyA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgIHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fYXJyYXlcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgb2ZfbGlzdCBsaSA9XG4gIGxldCBhID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBsaTtcbiAgYVxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgbCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBsIDo9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggOjogIWxcbiAgZG9uZTtcbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19saXN0XCIgYSB+bGVuZ3RoO1xuICAhbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCBpbml0ID0gY3JlYXRlKCkgaW5cbiAgYXBwZW5kX3NlcSBpbml0IHNlcTtcbiAgaW5pdFxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBjaGVja19zYW1lX2xlbmd0aCBcInRvX3NlcVwiIGEgfmxlbmd0aDtcbiAgICBpZiBpID49IGxlbmd0aCB0aGVuIFNlcS5OaWxcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGggaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgKyAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcV9yZWVudHJhbnQgYSA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBpZiBpID49IGxlbmd0aCBhIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSArIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxX3JldiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19zZXFfcmV2XCIgYSB+bGVuZ3RoO1xuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSAtIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggKGxlbmd0aCAtIDEpXG5cbmxldCB0b19zZXFfcmV2X3JlZW50cmFudCBhID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGlmIGkgPCAwIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgaWYgaSA+PSBsZW5ndGggYSB0aGVuXG4gICAgICAoKiBJZiBzb21lIGVsZW1lbnRzIGhhdmUgYmVlbiByZW1vdmVkIGluIHRoZSBtZWFudGltZSwgd2Ugc2tpcFxuICAgICAgICAgdGhvc2UgZWxlbWVudHMgYW5kIGNvbnRpbnVlIHdpdGggdGhlIG5ldyBlbmQgb2YgdGhlIGFycmF5LiAqKVxuICAgICAgYXV4IChsZW5ndGggYSAtIDEpICgpXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSBnZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpIC0gMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAobGVuZ3RoIGEgLSAxKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLnN0YXJ0c193aXRoIH5wcmVmaXg6XCItXCIgcyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbigqIERpc2FibGUgd2FybmluZyAzNzogdmFsdWVzIGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcnVudGltZSAqKVxudHlwZVtAd2FybmluZyBcIi0zN1wiXSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICA6IGJvb2w7XG4gICAgICBmaWxlbmFtZSAgIDogc3RyaW5nO1xuICAgICAgc3RhcnRfbG51bSA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gICAgICBlbmRfb2Zmc2V0IDogaW50OyAoKiBSZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2Ygc3RhcnRfbG51bSAqKVxuICAgICAgZW5kX2xudW0gICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBlbmRfbG51bSBsaW5lICopXG4gICAgICBpc19pbmxpbmUgIDogYm9vbDtcbiAgICAgIGRlZm5hbWUgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdDpcbiAgcmF3X2JhY2t0cmFjZV9zbG90IC0+IGJhY2t0cmFjZV9zbG90ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCJcblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlOlxuICByYXdfYmFja3RyYWNlIC0+IGJhY2t0cmFjZV9zbG90IGFycmF5ID0gXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZVwiXG5cbmxldCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQgPVxuICB0cnkgU29tZSAoY29udmVydF9yYXdfYmFja3RyYWNlIGJ0KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgcG9zIHNsb3QgPVxuICBsZXQgaW5mbyBpc19yYWlzZSA9XG4gICAgaWYgaXNfcmFpc2UgdGhlblxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGF0XCIgZWxzZSBcIlJlLXJhaXNlZCBhdFwiXG4gICAgZWxzZVxuICAgICAgaWYgcG9zID0gMCB0aGVuIFwiUmFpc2VkIGJ5IHByaW1pdGl2ZSBvcGVyYXRpb24gYXRcIiBlbHNlIFwiQ2FsbGVkIGZyb21cIlxuICBpblxuICBtYXRjaCBzbG90IHdpdGhcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGlmIGwuaXNfcmFpc2UgdGhlblxuICAgICAgICAoKiBjb21waWxlci1pbnNlcnRlZCByZS1yYWlzZSwgc2tpcHBlZCAqKSBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIFNvbWUgKHNwcmludGYgXCIlcyB1bmtub3duIGxvY2F0aW9uXCIgKGluZm8gZmFsc2UpKVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgIGlmIGwuc3RhcnRfbG51bSA9IGwuZW5kX2xudW0gdGhlblxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiICVkXCIgbC5zdGFydF9sbnVtXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuc3ByaW50ZiBcInMgJWQtJWRcIiBsLnN0YXJ0X2xudW0gbC5lbmRfbG51bVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHNwcmludGYgXCIlcyAlcyBpbiBmaWxlIFxcXCIlc1xcXCIlcywgbGluZSVzLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsaW5lcyBsLnN0YXJ0X2NoYXIgbC5lbmRfY2hhcilcblxubGV0IHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGZwcmludGYgb3V0Y2hhblxuICAgICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBmcHJpbnRmIG91dGNoYW4gXCIlc1xcblwiIHN0clxuICAgICAgZG9uZVxuXG5sZXQgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIHJhd19iYWNrdHJhY2UgPVxuICBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG4oKiBjb25mdXNpbmdseSBuYW1lZDogcHJpbnRzIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBwcmludF9iYWNrdHJhY2Ugb3V0Y2hhbiA9XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiAoZ2V0X3Jhd19iYWNrdHJhY2UgKCkpXG5cbmxldCBiYWNrdHJhY2VfdG9fc3RyaW5nIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICBcIihQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgY2Fubm90IHByaW50IHN0YWNrIGJhY2t0cmFjZSlcXG5cIlxuICB8IFNvbWUgYSAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gYnByaW50ZiBiIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgcmF3X2JhY2t0cmFjZSA9XG4gIGJhY2t0cmFjZV90b19zdHJpbmcgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSByYXdfYmFja3RyYWNlKVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUgPSBmdW5jdGlvblxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19pbmxpbmVcbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcblxudHlwZSBsb2NhdGlvbiA9IHtcbiAgZmlsZW5hbWUgOiBzdHJpbmc7XG4gIGxpbmVfbnVtYmVyIDogaW50O1xuICBzdGFydF9jaGFyIDogaW50O1xuICBlbmRfY2hhciA6IGludDtcbiAgZW5kX2xpbmUgOiBpbnQ7XG4gIGVuZF9jb2wgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwuc3RhcnRfbG51bTtcbiAgICAgIHN0YXJ0X2NoYXIgID0gbC5zdGFydF9jaGFyO1xuICAgICAgZW5kX2NoYXIgICAgPSBsLmVuZF9vZmZzZXQ7XG4gICAgICBlbmRfbGluZSAgICA9IGwuZW5kX2xudW07XG4gICAgICBlbmRfY29sICAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgY29tcG9zZSBmIGcgeCA9IGYgKGcgeClcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbWlub3JfaGVhcF9zaXplIDogaW50O1xuICBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludDtcbiAgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIHZlcmJvc2UgOiBpbnQ7XG4gIG1heF9vdmVyaGVhZCA6IGludDtcbiAgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIGFsbG9jYXRpb25fcG9saWN5IDogaW50O1xuICB3aW5kb3dfc2l6ZSA6IGludDtcbiAgY3VzdG9tX21ham9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludDtcbn1cblxuZXh0ZXJuYWwgc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19zdGF0XCJcbmV4dGVybmFsIHF1aWNrX3N0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2NfcXVpY2tfc3RhdFwiXG5leHRlcm5hbCBjb3VudGVycyA6IHVuaXQgLT4gKGZsb2F0ICogZmxvYXQgKiBmbG9hdCkgPSBcImNhbWxfZ2NfY291bnRlcnNcIlxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKVxuICA9IFwiY2FtbF9nY19taW5vcl93b3Jkc1wiIFwiY2FtbF9nY19taW5vcl93b3Jkc191bmJveGVkXCJcbmV4dGVybmFsIGdldCA6IHVuaXQgLT4gY29udHJvbCA9IFwiY2FtbF9nY19nZXRcIlxuZXh0ZXJuYWwgc2V0IDogY29udHJvbCAtPiB1bml0ID0gXCJjYW1sX2djX3NldFwiXG5leHRlcm5hbCBtaW5vciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19taW5vclwiXG5leHRlcm5hbCBtYWpvcl9zbGljZSA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2NfbWFqb3Jfc2xpY2VcIlxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgZnVsbF9tYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19mdWxsX21ham9yXCJcbmV4dGVybmFsIGNvbXBhY3QgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfY29tcGFjdGlvblwiXG5leHRlcm5hbCBnZXRfbWlub3JfZnJlZSA6IHVuaXQgLT4gaW50ID0gXCJjYW1sX2dldF9taW5vcl9mcmVlXCJcblxubGV0IGV2ZW50bG9nX3BhdXNlICgpID0gKClcbmxldCBldmVudGxvZ19yZXN1bWUgKCkgPSAoKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcHJpbnRfc3RhdCBjID1cbiAgbGV0IHN0ID0gc3RhdCAoKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1pbm9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJtYWpvcl9jb2xsZWN0aW9uczogICAgICAlZFxcblwiIHN0Lm1ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJjb21wYWN0aW9uczogICAgICAgICAgICAlZFxcblwiIHN0LmNvbXBhY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6ICVkXFxuXCIgc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwxID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiUuMGZcIiBzdC5taW5vcl93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwibWlub3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWlub3Jfd29yZHM7XG4gIGZwcmludGYgYyBcInByb21vdGVkX3dvcmRzOiAlKi4wZlxcblwiIGwxIHN0LnByb21vdGVkX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJtYWpvcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5tYWpvcl93b3JkcztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMiA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlZFwiIHN0LnRvcF9oZWFwX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJ0b3BfaGVhcF93b3JkczogJSpkXFxuXCIgbDIgc3QudG9wX2hlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImhlYXBfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsaXZlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QubGl2ZV93b3JkcztcbiAgZnByaW50ZiBjIFwiZnJlZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmZyZWVfd29yZHM7XG4gIGZwcmludGYgYyBcImxhcmdlc3RfZnJlZTogICAlKmRcXG5cIiBsMiBzdC5sYXJnZXN0X2ZyZWU7XG4gIGZwcmludGYgYyBcImZyYWdtZW50czogICAgICAlKmRcXG5cIiBsMiBzdC5mcmFnbWVudHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBmcHJpbnRmIGMgXCJsaXZlX2Jsb2NrczogJWRcXG5cIiBzdC5saXZlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiZnJlZV9ibG9ja3M6ICVkXFxuXCIgc3QuZnJlZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImhlYXBfY2h1bmtzOiAlZFxcblwiIHN0LmhlYXBfY2h1bmtzXG5cblxubGV0IGFsbG9jYXRlZF9ieXRlcyAoKSA9XG4gIGxldCAobWksIHBybywgbWEpID0gY291bnRlcnMgKCkgaW5cbiAgKG1pICsuIG1hIC0uIHBybykgKi4gZmxvYXRfb2ZfaW50IChTeXMud29yZF9zaXplIC8gOClcblxuXG5leHRlcm5hbCBmaW5hbGlzZSA6ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyXCJcbmV4dGVybmFsIGZpbmFsaXNlX2xhc3QgOiAodW5pdCAtPiB1bml0KSAtPiAnYSAtPiB1bml0ID1cbiAgXCJjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXCJcbmV4dGVybmFsIGZpbmFsaXNlX3JlbGVhc2UgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVsZWFzZVwiXG5cblxudHlwZSBhbGFybSA9IGJvb2wgQXRvbWljLnRcbnR5cGUgYWxhcm1fcmVjID0ge2FjdGl2ZSA6IGFsYXJtOyBmIDogdW5pdCAtPiB1bml0fVxuXG5sZXQgcmVjIGNhbGxfYWxhcm0gYXJlYyA9XG4gIGlmIEF0b21pYy5nZXQgYXJlYy5hY3RpdmUgdGhlbiBiZWdpblxuICAgIGxldCBmaW5hbGx5ICgpID0gZmluYWxpc2UgY2FsbF9hbGFybSBhcmVjIGluXG4gICAgRnVuLnByb3RlY3QgfmZpbmFsbHkgYXJlYy5mXG4gIGVuZFxuXG5sZXQgZGVsZXRlX2FsYXJtIGEgPSBBdG9taWMuc2V0IGEgZmFsc2VcblxubGV0IGNyZWF0ZV9hbGFybSBmID1cbiAgbGV0IGFyZWMgPSB7IGFjdGl2ZSA9IEF0b21pYy5tYWtlIHRydWU7IGYgPSBmIH0gaW5cbiAgRG9tYWluLmF0X2V4aXQgKGZ1biAoKSAtPiBkZWxldGVfYWxhcm0gYXJlYy5hY3RpdmUpO1xuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubW9kdWxlIE1lbXByb2YgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIHRcbiAgICB0eXBlIGFsbG9jYXRpb25fc291cmNlID0gTm9ybWFsIHwgTWFyc2hhbCB8IEN1c3RvbVxuICAgIHR5cGUgYWxsb2NhdGlvbiA9XG4gICAgICB7IG5fc2FtcGxlcyA6IGludDtcbiAgICAgICAgc2l6ZSA6IGludDtcbiAgICAgICAgc291cmNlIDogYWxsb2NhdGlvbl9zb3VyY2U7XG4gICAgICAgIGNhbGxzdGFjayA6IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgfVxuXG4gICAgdHlwZSAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vcjogYWxsb2NhdGlvbiAtPiAnbWlub3Igb3B0aW9uO1xuICAgICAgYWxsb2NfbWFqb3I6IGFsbG9jYXRpb24gLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIHByb21vdGU6ICdtaW5vciAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgZGVhbGxvY19taW5vcjogJ21pbm9yIC0+IHVuaXQ7XG4gICAgICBkZWFsbG9jX21ham9yOiAnbWFqb3IgLT4gdW5pdDtcbiAgICB9XG5cbiAgICBsZXQgbnVsbF90cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBhbGxvY19tYWpvciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIHByb21vdGUgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBkZWFsbG9jX21pbm9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICAgIGRlYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgIH1cblxuICAgIGV4dGVybmFsIGNfc3RhcnQgOlxuICAgICAgZmxvYXQgLT4gaW50IC0+ICgnbWlub3IsICdtYWpvcikgdHJhY2tlciAtPiB0XG4gICAgICA9IFwiY2FtbF9tZW1wcm9mX3N0YXJ0XCJcblxuICAgIGxldCBzdGFydFxuICAgICAgfnNhbXBsaW5nX3JhdGVcbiAgICAgID8oY2FsbHN0YWNrX3NpemUgPSBtYXhfaW50KVxuICAgICAgdHJhY2tlciA9XG4gICAgICBjX3N0YXJ0IHNhbXBsaW5nX3JhdGUgY2FsbHN0YWNrX3NpemUgdHJhY2tlclxuXG4gICAgZXh0ZXJuYWwgc3RvcCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX3N0b3BcIlxuXG4gICAgZXh0ZXJuYWwgZGlzY2FyZCA6IHQgLT4gdW5pdCA9IFwiY2FtbF9tZW1wcm9mX2Rpc2NhcmRcIlxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW5fY2hhbm5lbFxuXG50eXBlIG9wZW5fZmxhZyA9IFN0ZGxpYi5vcGVuX2ZsYWcgPVxuICB8IE9wZW5fcmRvbmx5XG4gIHwgT3Blbl93cm9ubHlcbiAgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXRcbiAgfCBPcGVuX3RydW5jXG4gIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnlcbiAgfCBPcGVuX3RleHRcbiAgfCBPcGVuX25vbmJsb2NrXG5cbmxldCBzdGRpbiA9IFN0ZGxpYi5zdGRpblxubGV0IG9wZW5fYmluID0gU3RkbGliLm9wZW5faW5fYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5faW5cbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX2luX2dlblxuXG5sZXQgd2l0aF9vcGVuIG9wZW5mdW4gcyBmID1cbiAgbGV0IGljID0gb3BlbmZ1biBzIGluXG4gIEZ1bi5wcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gU3RkbGliLmNsb3NlX2luX25vZXJyIGljKVxuICAgIChmdW4gKCkgLT4gZiBpYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luX2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbiBzIGZcblxubGV0IHdpdGhfb3Blbl9nZW4gZmxhZ3MgcGVybSBzIGYgPVxuICB3aXRoX29wZW4gKFN0ZGxpYi5vcGVuX2luX2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19pblxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUuaW5fY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX2luX25vZXJyXG5cbmxldCBpbnB1dF9jaGFyIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICB8IGMgLT4gU29tZSBjXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2J5dGUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfYnl0ZSBpYyB3aXRoXG4gIHwgbiAtPiBTb21lIG5cbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfbGluZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBzIC0+IFNvbWUgc1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dCA9IFN0ZGxpYi5pbnB1dFxuXG5leHRlcm5hbCB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgOlxuICB0IC0+IF8gQmlnYXJyYXkuQXJyYXkxLnQgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgPSBcImNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcIlxuXG5sZXQgaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW5cblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVjIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuIFNvbWUgKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuIGluXG4gICAgaWYgciA9IDBcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcInJlYWxseV9pbnB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBbQHRhaWxfbW9kX2NvbnNdIHJlYyBpbnB1dF9saW5lcyBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGxpbmUgOjogaW5wdXRfbGluZXMgaWNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gW11cblxubGV0IHJlYyBmb2xkX2xpbmVzIGYgYWNjdSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9saW5lIGljIHdpdGhcbiAgfCBsaW5lIC0+IGZvbGRfbGluZXMgZiAoZiBhY2N1IGxpbmUpIGljXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IGFjY3VcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfaW5cblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBpbl9jaGFubmVsIC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYmluYXJ5X21vZGVcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9iaWdhcnJheSA6XG4gIHQgLT4gXyBCaWdhcnJheS5BcnJheTEudCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgPSBcImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XCJcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYmlnYXJyYXkgb2MgYnVmIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQmlnYXJyYXkuQXJyYXkxLmRpbSBidWYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dF9iaWdhcnJheVwiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9iaWdhcnJheSBvYyBidWYgb2ZzIGxlblxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcblxuZXh0ZXJuYWwgaXNfYmluYXJ5X21vZGUgOiBvdXRfY2hhbm5lbCAtPiBib29sID0gXCJjYW1sX21sX2lzX2JpbmFyeV9tb2RlXCJcblxuZXh0ZXJuYWwgc2V0X2J1ZmZlcmVkIDogdCAtPiBib29sIC0+IHVuaXQgPSBcImNhbWxfbWxfc2V0X2J1ZmZlcmVkXCJcblxuZXh0ZXJuYWwgaXNfYnVmZmVyZWQgOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc2F0dHkgOiB0IC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzYXR0eVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFV0aWxpdHkgZnVuY3Rpb25zICopXG5cbmxldCBoZXhfb2Zfc3RyaW5nIGQgPVxuICBsZXQgY2hhcl9oZXggbiA9XG4gICAgQ2hhci5jaHIgKGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgKyBuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENoYXIuY29kZSAnYScgKyBuIC0gMTApIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGQgaW5cbiAgbGV0IHJlc3VsdCA9IEJ5dGVzLmNyZWF0ZSAobGVuICogMikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgeCA9IENoYXIuY29kZSBkLltpXSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIpIChjaGFyX2hleCAoeCBsc3IgNCkpO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzdWx0IChpKjIrMSkgKGNoYXJfaGV4ICh4IGxhbmQgMHgwZikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuXG5sZXQgc3RyaW5nX29mX2hleCBzID1cbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gaW52YWxpZF9hcmcgXCJEaWdlc3Qub2ZfaGV4XCIgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBTdHJpbmcuaW5pdCAoU3RyaW5nLmxlbmd0aCBzIC8gMikgKGZ1biBpIC0+IENoYXIuY2hyIChieXRlICgyICogaSkpKVxuXG4oKiBHZW5lcmljIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdCA9IHN0cmluZ1xuICB2YWwgaGFzaF9sZW5ndGggOiBpbnRcbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgYnl0ZXMgOiBieXRlcyAtPiB0XG4gIHZhbCBzdWJzdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gIHZhbCBzdWJieXRlcyA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdFxuICB2YWwgY2hhbm5lbCA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHRcbiAgdmFsIGZpbGUgOiBzdHJpbmcgLT4gdFxuICB2YWwgb3V0cHV0IDogb3V0X2NoYW5uZWwgLT4gdCAtPiB1bml0XG4gIHZhbCBpbnB1dCA6IGluX2NoYW5uZWwgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX2hleCA6IHN0cmluZyAtPiB0XG5lbmRcblxuKCogQkxBS0UyIGhhc2hpbmcsIHBhcmFtZXRlcml6ZWQgYnkgaGFzaCBzaXplICopXG5cbm1vZHVsZSBCTEFLRTIgKFg6IHNpZyB2YWwgaGFzaF9sZW5ndGggOiBpbnQgZW5kKSA6IFMgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBzdHJpbmdcblxuICBsZXQgaGFzaF9sZW5ndGggPVxuICAgIGlmIFguaGFzaF9sZW5ndGggPCAxIHx8IFguaGFzaF9sZW5ndGggPiA2NFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuQkxBS0UyOiB3cm9uZyBoYXNoIHNpemVcIjtcbiAgICBYLmhhc2hfbGVuZ3RoXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICB0eXBlIHN0YXRlXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2dlbjogaW50IC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiY2FtbF9ibGFrZTJfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgdXBkYXRlOiBzdGF0ZSAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2JsYWtlMl91cGRhdGVcIlxuICBleHRlcm5hbCBmaW5hbDogc3RhdGUgLT4gaW50IC0+IHQgPSBcImNhbWxfYmxha2UyX2ZpbmFsXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogaW50IC0+IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGFrZTJfc3RyaW5nXCJcblxuICBsZXQgY3JlYXRlICgpID0gY3JlYXRlX2dlbiBoYXNoX2xlbmd0aCBcIlwiXG5cbiAgbGV0IHN0cmluZyBzdHIgPVxuICAgIHVuc2FmZV9zdHJpbmcgaGFzaF9sZW5ndGggXCJcIiBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPVxuICAgIHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG4gIGxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCI7XG4gICAgdW5zYWZlX3N0cmluZyBoYXNoX2xlbmd0aCBcIlwiIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9XG4gICAgc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxuICBsZXQgY2hhbm5lbCBpYyB0b3JlYWQgPVxuICAgIGxldCBidWZfc2l6ZSA9IDQwOTYgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0IGN0eCA9IGNyZWF0ZSAoKSBpblxuICAgIGlmIHRvcmVhZCA8IDAgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBkb19yZWFkICgpID1cbiAgICAgICAgbGV0IG4gPSBJbl9jaGFubmVsLmlucHV0IGljIGJ1ZiAwIGJ1Zl9zaXplIGluXG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoXG4gICAgICAgIGVsc2UgKHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47IGRvX3JlYWQgKCkpXG4gICAgICBpbiBkb19yZWFkICgpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgZG9fcmVhZCB0b3JlYWQgPVxuICAgICAgICBpZiB0b3JlYWQgPSAwIHRoZW4gZmluYWwgY3R4IGhhc2hfbGVuZ3RoIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgKEludC5taW4gYnVmX3NpemUgdG9yZWFkKSBpblxuICAgICAgICAgIGlmIG4gPSAwXG4gICAgICAgICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIHVwZGF0ZSBjdHggKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSAwIG47XG4gICAgICAgICAgICBkb19yZWFkICh0b3JlYWQgLSBuKVxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGluIGRvX3JlYWQgdG9yZWFkXG4gICAgZW5kXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIGhhc2hfbGVuZ3RoXG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gaGFzaF9sZW5ndGggdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiBoYXNoX2xlbmd0aCAqIDIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5vZl9oZXhcIjtcbiAgICBzdHJpbmdfb2ZfaGV4IHNcblxuZW5kXG5cbm1vZHVsZSBCTEFLRTEyOCA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gMTYgZW5kKVxubW9kdWxlIEJMQUtFMjU2ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAzMiBlbmQpXG5tb2R1bGUgQkxBS0U1MTIgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDY0IGVuZClcblxuKCogTUQ1IGhhc2hpbmcgKilcblxubW9kdWxlIE1ENSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHN0cmluZ1xuXG4gIGxldCBoYXNoX2xlbmd0aCA9IDE2XG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuICBleHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9zdHJpbmdcIlxuICBleHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxuICBsZXQgc3RyaW5nIHN0ciA9XG4gICAgdW5zYWZlX3N0cmluZyBzdHIgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbiAgbGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxuICBsZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gU3RyaW5nLmxlbmd0aCBzdHIgLSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gICAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbiAgbGV0IHN1YmJ5dGVzIGIgb2ZzIGxlbiA9IHN1YnN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKSBvZnMgbGVuXG5cbiAgbGV0IGZpbGUgZmlsZW5hbWUgPVxuICAgIEluX2NoYW5uZWwud2l0aF9vcGVuX2JpbiBmaWxlbmFtZSAoZnVuIGljIC0+IGNoYW5uZWwgaWMgKC0xKSlcblxuICBsZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID0gb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG4gIGxldCBpbnB1dCBjaGFuID0gcmVhbGx5X2lucHV0X3N0cmluZyBjaGFuIDE2XG5cbiAgbGV0IHRvX2hleCBkID1cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGQgPD4gMTYgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC50b19oZXhcIjtcbiAgICBoZXhfb2Zfc3RyaW5nIGRcblxuICBsZXQgb2ZfaGV4IHMgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiAzMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LmZyb21faGV4XCI7XG4gICAgc3RyaW5nX29mX2hleCBzXG5cbmVuZFxuXG4oKiBEZWZhdWx0IGV4cG9ydGVkIGltcGxlbWVudGF0aW9uIGlzIE1ENSAqKVxuXG5pbmNsdWRlIE1ENVxuXG5sZXQgZnJvbV9oZXggPSBvZl9oZXhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQxNl9lbHQgPSBGbG9hdDE2X2VsdFxudHlwZSBmbG9hdDMyX2VsdCA9IEZsb2F0MzJfZWx0XG50eXBlIGZsb2F0NjRfZWx0ID0gRmxvYXQ2NF9lbHRcbnR5cGUgaW50OF9zaWduZWRfZWx0ID0gSW50OF9zaWduZWRfZWx0XG50eXBlIGludDhfdW5zaWduZWRfZWx0ID0gSW50OF91bnNpZ25lZF9lbHRcbnR5cGUgaW50MTZfc2lnbmVkX2VsdCA9IEludDE2X3NpZ25lZF9lbHRcbnR5cGUgaW50MTZfdW5zaWduZWRfZWx0ID0gSW50MTZfdW5zaWduZWRfZWx0XG50eXBlIGludDMyX2VsdCA9IEludDMyX2VsdFxudHlwZSBpbnQ2NF9lbHQgPSBJbnQ2NF9lbHRcbnR5cGUgaW50X2VsdCA9IEludF9lbHRcbnR5cGUgbmF0aXZlaW50X2VsdCA9IE5hdGl2ZWludF9lbHRcbnR5cGUgY29tcGxleDMyX2VsdCA9IENvbXBsZXgzMl9lbHRcbnR5cGUgY29tcGxleDY0X2VsdCA9IENvbXBsZXg2NF9lbHRcblxuKCogS2VlcCB0aGUgb3JkZXIgb2YgdGhlc2UgY29uc3RydWN0b3JzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kXG4gICBlbnVtZXJhdGlvbiBpbiBiaWdhcnJheS5oICopXG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gIHwgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEZsb2F0MTYgOiAoZmxvYXQsIGZsb2F0MTZfZWx0KSBraW5kXG5cbnR5cGUgY19sYXlvdXQgPSBDX2xheW91dF90eXBcbnR5cGUgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dF90eXAgKCoqKVxuXG50eXBlICdhIGxheW91dCA9XG4gICAgQ19sYXlvdXQ6IGNfbGF5b3V0IGxheW91dFxuICB8IEZvcnRyYW5fbGF5b3V0OiBmb3J0cmFuX2xheW91dCBsYXlvdXRcblxubGV0IGZsb2F0MTYgPSBGbG9hdDE2XG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDE2IC0+IDJcbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXggPVxuICAgIFwibHhtMTpcIlxuICAgICgqIFwibHhtXCIgZGVub3RlcyB0aGUgYWxnb3JpdGhtIGN1cnJlbnRseSBpbiB1c2UsIGFuZCAnMScgaXNcbiAgICAgICBhIHZlcnNpb24gbnVtYmVyLiBXZSBzaG91bGQgdXBkYXRlIHRoaXMgcHJlZml4IGlmIHdlIGNoYW5nZVxuICAgICAgIHRoZSBSYW5kb20gYWxnb3JpdGhtIG9yIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc28gdGhhdCB1c2Vyc1xuICAgICAgIGdldCBhIGNsZWFuIGVycm9yIGluc3RlYWQgb2YgYmVsaWV2aW5nIHRoYXQgdGhleSBmYWl0aGZ1bGx5XG4gICAgICAgcmVwcm9kdWNlIHRoZWlyIHByZXZpb3VzIHN0YXRlIGFuZCBpbiBmYWN0IGdldCBhIGRpZmZlcmVudFxuICAgICAgIHN0cmVhbS5cblxuICAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBjb25zdHJhaW50IHRvIGtlZXAgdGhlIHNhbWVcbiAgICAgICBcIjxuYW1lPjx2ZXI+OjxkYXRhPlwiIGZvcm1hdCBvciBtZXNzYWdlIHNpemUgaW4gZnV0dXJlIHZlcnNpb25zLFxuICAgICAgIHdlIGNvdWxkIGNoYW5nZSB0aGUgZm9ybWF0IGNvbXBsZXRlbHkgaWYgd2Ugd2FudGVkIGFzIGxvbmdcbiAgICAgICBhcyB0aGVyZSBpcyBubyBjb25mdXNpb24gcG9zc2libGUgd2l0aCB0aGUgcHJldmlvdXMgZm9ybWF0cy4gKilcblxuICBsZXQgc2VyaWFsaXphdGlvbl9wcmVmaXhfbGVuID1cbiAgICBTdHJpbmcubGVuZ3RoIHNlcmlhbGl6YXRpb25fcHJlZml4XG5cbiAgbGV0IHRvX2JpbmFyeV9zdHJpbmcgcyA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChwcmVmbGVuICsgNCAqIDgpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcHJlZml4IDAgYnVmIDAgcHJlZmxlbjtcbiAgICBmb3IgaSA9IDAgdG8gMyBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIGkgKiA4KSAoQXJyYXkxLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZlxuXG4gIGxldCBvZl9iaW5hcnlfc3RyaW5nIGJ1ZiA9XG4gICAgbGV0IHByZWZpeCA9IHNlcmlhbGl6YXRpb25fcHJlZml4IGluXG4gICAgbGV0IHByZWZsZW4gPSBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIGJ1ZiA8PiBwcmVmbGVuICsgNCAqIDhcbiAgICAgICB8fCBub3QgKFN0cmluZy5zdGFydHNfd2l0aCB+cHJlZml4IGJ1ZilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJSYW5kb20uU3RhdGUub2ZfYmluYXJ5X3N0cmluZzogZXhwZWN0ZWQgYSBmb3JtYXQgXFxcbiAgICAgICAgICBjb21wYXRpYmxlIHdpdGggT0NhbWwgXCIgXiBTeXMub2NhbWxfdmVyc2lvbik7XG4gICAgbGV0IGkxID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAwICogOCkgaW5cbiAgICBsZXQgaTIgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDEgKiA4KSBpblxuICAgIGxldCBpMyA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMiAqIDgpIGluXG4gICAgbGV0IGk0ID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAzICogOCkgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuXG4gIGxldCBhc3NpZ24gKGRzdDogdCkgKHNyYzogdCkgPVxuICAgIEFycmF5MS5ibGl0IHNyYyBkc3RcblxuICBsZXQgY29weSBzID1cbiAgICBsZXQgcycgPSBjcmVhdGUoKSBpbiBhc3NpZ24gcycgczsgcydcblxuICAoKiBUaGUgc2VlZCBpcyBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0IGNhbiBiZSBqdXN0IG9uZSBpbnRlZ2VyLFxuICAgICBidXQgaXQgY2FuIGFsc28gYmUgMTIgb3IgbW9yZSBieXRlcy4gIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2UsXG4gICAgIHdlIHNlcmlhbGl6ZSB0aGUgYXJyYXkgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywgdGhlbiBoYXNoIHRoZVxuICAgICBzZXF1ZW5jZSB3aXRoIE1ENSAoRGlnZXN0LmJ5dGVzKS4gIE1ENSBnaXZlcyBvbmx5IDEyOCBiaXRzIHdoaWxlXG4gICAgIHdlIG5lZWQgMjU2IGJpdHMsIHNvIHdlIGhhc2ggdHdpY2Ugd2l0aCBkaWZmZXJlbnQgc3VmZml4ZXMuICopXG4gIGxldCByZWluaXQgcyBzZWVkID1cbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBzZWVkIGluXG4gICAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgKG4gKiA4ICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYiAoaSAqIDgpIChJbnQ2NC5vZl9pbnQgc2VlZC4oaSkpXG4gICAgZG9uZTtcbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMSc7XG4gICAgbGV0IGQxID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBCeXRlcy5zZXQgYiAobiAqIDgpICdcXHgwMic7XG4gICAgbGV0IGQyID0gRGlnZXN0LmJ5dGVzIGIgaW5cbiAgICBzZXQgcyAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDgpXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiA4KVxuXG4gIGxldCBtYWtlIHNlZWQgPVxuICAgIGxldCBzID0gY3JlYXRlKCkgaW4gcmVpbml0IHMgc2VlZDsgc1xuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCAoKSA9XG4gICAgbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IG1pbl9pbnQzMSA9IC0weDQwMDBfMDAwMFxuICAgICAgKCogPSAtMnteMzB9LCB3aGljaCBpcyBbbWluX2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICBsZXQgbWF4X2ludDMxID0gMHgzRkZGX0ZGRkZcbiAgICAgICgqID0gIDJ7XjMwfS0xLCB3aGljaCBpcyBbbWF4X2ludF0gZm9yIDMxLWJpdCBpbnRlZ2VycyAqKVxuICAoKiBhdm9pZCBpbnRlZ2VyIGxpdGVyYWxzIGZvciB0aGVzZSwgMzItYml0IE9DYW1sIHdvdWxkIHJlamVjdCB0aGVtOiAqKVxuICBsZXQgbWluX2ludDMyID0gLSgxIGxzbCAzMSlcbiAgICAgICgqID0gLTB4ODAwMF8wMDAwIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuICBsZXQgbWF4X2ludDMyID0gKDEgbHNsIDMxKSAtIDFcbiAgICAgICgqID0gIDB4N0ZGRl9GRkZGIG9uIHBsYXRmb3JtcyB3aGVyZSBbU3lzLmludF9zaXplID49IDMyXSAqKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDJeMzAgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtuXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICBbbWFza10gbXVzdCBiZSBvZiB0aGUgZm9ybSBbMnteaX0tMV1cbiAgICAgYW5kIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW25dLiAgTGFyZ2VyIHZhbHVlcyBvZiBbbWFza10gbWFrZSB0aGUgZnVuY3Rpb25cbiAgICAgcnVuIGZhc3RlciAoZmV3ZXIgc2FtcGxlcyBhcmUgcmVqZWN0ZWQpLiAgU21hbGxlciB2YWx1ZXMgb2YgW21hc2tdXG4gICAgIGFyZSB1c2FibGUgb24gYSB3aWRlciByYW5nZSBvZiBPQ2FtbCBpbXBsZW1lbnRhdGlvbnMuICAqKVxuICBsZXQgcmVjIGludF9hdXggcyBuIG1hc2sgPVxuICAgICgqIFdlIHN0YXJ0IGJ5IGRyYXdpbmcgYSBub24tbmVnYXRpdmUgaW50ZWdlciBpbiB0aGUgWyBbMCwgbWFza10gXSByYW5nZSAqKVxuICAgIGxldCByID0gSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgbWFzayBpblxuICAgIGxldCB2ID0gciBtb2QgbiBpblxuICAgICgqIEZvciB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvZiB0aGUgcmVzdWx0IGJldHdlZW4gMCBpbmNsdWRlZCBhbmQgW25dXG4gICAgICogZXhjbHVkZWQsIHRoZSByYW5kb20gbnVtYmVyIFtyXSBtdXN0IGhhdmUgYmVlbiBkcmF3biB1bmlmb3JtbHkgaW5cbiAgICAgKiBhbiBpbnRlcnZhbCB3aG9zZSBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiBbbl0uIFRvIGFjaGlldmUgdGhpcyxcbiAgICAgKiB3ZSB1c2UgcmVqZWN0aW9uIHNhbXBsaW5nIG9uIHRoZSBncmVhdGVzdCBpbnRlcnZhbCBbIFswLCBrKm4tMV0gXVxuICAgICAqIHRoYXQgZml0cyBpbiBbIFswLCBtYXNrXSBdLiAgVGhhdCBpcywgd2UgcmVqZWN0IHRoZVxuICAgICAqIHNhbXBsZSBpZiBpdCBmYWxscyBvdXRzaWRlIG9mIHRoaXMgaW50ZXJ2YWwsIGFuZCBkcmF3IGFnYWluLlxuICAgICAqIFRoaXMgaXMgd2hhdCB0aGUgdGVzdCBiZWxvdyBkb2VzLCB3aGlsZSBjYXJlZnVseSBhdm9pZGluZ1xuICAgICAqIG92ZXJmbG93cyBhbmQgc3BhcmluZyBhIGRpdmlzaW9uIFttYXNrIC8gbl0uICopXG4gICAgaWYgciAtIHYgPiBtYXNrIC0gbiArIDEgdGhlbiBpbnRfYXV4IHMgbiBtYXNrIGVsc2UgdlxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuXG4gICAgIFRoZSBib3VuZCBtdXN0IGZpdCBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLlxuICAgICBUaGlzIGZ1bmN0aW9uIHlpZWxkcyB0aGUgc2FtZSBvdXRwdXQgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZWdlciBzaXplLiAqKVxuICBsZXQgaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kID4gbWF4X2ludDMxIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRfYXV4IHMgYm91bmQgbWF4X2ludDMxXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgKCogV2hlbiB0aGUgYm91bmQgZml0cyBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgdGhlIHNhbWUgbWFza1xuICAgICAgIGFzIGluIGZ1bmN0aW9uIFtpbnRdIHNvIGFzIHRvIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zXG4gICAgICAgc3VwcG9ydGVkIGJ5IE9DYW1sICgzMi1iaXQgT0NhbWwsIDY0LWJpdCBPQ2FtbCwgYW5kIEphdmFTY3JpcHQpLlxuICAgICAgIFdoZW4gdGhlIGJvdW5kIGZpdHMgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIFttYXhfaW50MzJdXG4gICAgICAgYXMgdGhlIG1hc2sgc28gYXMgdG8geWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXMgd2hlcmVcbiAgICAgICBbU3lzLmludF9zaXplID49IDMyXSAoaS5lLiBKYXZhU2NyaXB0IGFuZCA2NC1iaXQgT0NhbWwpLiAqKVxuICAgIGVsc2VcbiAgICAgIGludF9hdXggcyBib3VuZFxuICAgICAgICAoaWYgYm91bmQgPD0gbWF4X2ludDMxIHRoZW4gbWF4X2ludDMxXG4gICAgICAgICBlbHNlIGlmIGJvdW5kIDw9IG1heF9pbnQzMiB0aGVuIG1heF9pbnQzMlxuICAgICAgICAgZWxzZSBtYXhfaW50KVxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgVGhlIFtuYml0c10gcGFyYW1ldGVyIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIHNpZ25lZCBpbnRlZ2Vyc1xuICAgICB3ZSBkcmF3IGZyb20gW3NdLlxuICAgICBXZSBtdXN0IGhhdmUgWy0ye15uYml0cyAtIDF9IDw9IG1pbiA8PSBtYXggPCAye15uYml0cyAtIDF9XS5cbiAgICAgTW9yZW92ZXIsIGZvciB0aGUgaXRlcmF0aW9uIHRvIGNvbnZlcmdlIHF1aWNrbHksIHRoZSBpbnRlcnZhbFxuICAgICBbW21pbiwgbWF4XV0gc2hvdWxkIGhhdmUgd2lkdGggYXQgbGVhc3QgWzJ7Xm5iaXRzIC0gMX1dLlxuICAgICBBcyB0aGUgd2lkdGggYXBwcm9hY2hlcyB0aGlzIGxvd2VyIGxpbWl0LCB0aGUgYXZlcmFnZSBudW1iZXIgb2ZcbiAgICAgZHJhd3MgYXBwcm9hY2hlcyAyLCB3aXRoIGEgcXVpdGUgaGlnaCBzdGFuZGFyZCBkZXZpYXRpb24gKDIgKyBlcHNpbG9uKS4gKilcbiAgbGV0IHJlYyBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzID1cbiAgICBsZXQgZHJvcCA9IFN5cy5pbnRfc2l6ZSAtIG5iaXRzIGluXG4gICAgKCogVGhlIGJpdHNoaWZ0cyByZXBsaWNhdGUgdGhlIFtuYml0c10tdGggYml0IChzaWduIGJpdCkgdG8gaGlnaGVyIGJpdHM6ICopXG4gICAgbGV0IHIgPSAoKEludDY0LnRvX2ludCAobmV4dCBzKSkgbHNsIGRyb3ApIGFzciBkcm9wIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50X2luX2xhcmdlX3JhbmdlIHMgfm1pbiB+bWF4IH5uYml0cyBlbHNlIHJcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFttYXNrXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfYXV4XS5cbiAgICAgW25iaXRzXSBpcyBhcyBkZXNjcmliZWQgZm9yIFtpbnRfaW5fbGFyZ2VfcmFuZ2VdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCB+bWFzayB+bmJpdHMgPVxuICAgIGxldCBzcGFuID0gbWF4IC0gbWluICsgMSBpblxuICAgIGlmIHNwYW4gPD0gbWFzayAoKiBbc3Bhbl0gaXMgc21hbGwgZW5vdWdoICopXG4gICAgJiYgc3BhbiA+IDAgICAgICgqIG5vIG92ZXJmbG93IG9jY3VycmVkIHdoZW4gY29tcHV0aW5nIFtzcGFuXSAqKVxuICAgIHRoZW5cbiAgICAgICgqIEp1c3QgZHJhdyBhIG51bWJlciBpbiBbWzAsIHNwYW4pXSBhbmQgc2hpZnQgaXQgYnkgW21pbl0uICopXG4gICAgICBtaW4gKyBpbnRfYXV4IHMgc3BhbiBtYXNrXG4gICAgZWxzZVxuICAgICAgKCogU3BhbiB0b28gbGFyZ2UsIHVzZSB0aGUgYWx0ZXJuYXRpdmUgZHJhd2luZyBtZXRob2QuICopXG4gICAgICBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBXZSBtdXN0IGhhdmUgW21pbiA8PSBtYXhdLiAqKVxuICBsZXQgaW50X2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50X2luX3JhbmdlXCI7XG4gICAgKCogV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzEtYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMxLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3JtcyBzdXBwb3J0ZWQgYnkgT0NhbWwuXG4gICAgICAgV2hlbiBib3RoIGJvdW5kcyBmaXQgaW4gMzItYml0IHNpZ25lZCBpbnRlZ2Vycywgd2UgdXNlIHBhcmFtZXRlcnNcbiAgICAgICBbbWFza10gYW5kIFtuYml0c10gYXBwcm9wcmlhdGUgZm9yIDMyLWJpdCBpbnRlZ2Vycywgc28gYXMgdG9cbiAgICAgICB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gSmF2YVNjcmlwdCBhbmQgb24gNjQtYml0IE9DYW1sLiAqKVxuICAgIGlmIG1pbiA+PSBtaW5faW50MzEgJiYgbWF4IDw9IG1heF9pbnQzMSB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMSB+bmJpdHM6MzFcbiAgICBlbHNlIGlmIG1pbiA+PSBtaW5faW50MzIgJiYgbWF4IDw9IG1heF9pbnQzMiB0aGVuXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQzMiB+bmJpdHM6MzJcbiAgICBlbHNlXG4gICAgICBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrOm1heF9pbnQgfm5iaXRzOlN5cy5pbnRfc2l6ZVxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50MzJdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gSW50NjQudG9faW50MzIgKG5leHQgcykgaW5cbiAgICBpZiByIDwgbWluIHx8IHIgPiBtYXggdGhlbiBpbnQzMl9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggZWxzZSByXG5cbiAgbGV0IGludDMyX2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJfaW5fcmFuZ2VcIlxuICAgIGVsc2VcbiAgICAgIGxldCBzcGFuID0gSW50MzIuc3VjYyAoSW50MzIuc3ViIG1heCBtaW4pIGluXG4gICAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfaW5fcmFuZ2VfYXV4XS4gKilcbiAgICAgIGlmIHNwYW4gPD0gSW50MzIuemVybyB0aGVuXG4gICAgICAgIGludDMyX2luX3JhbmdlX2F1eCBzIH5taW4gfm1heFxuICAgICAgZWxzZVxuICAgICAgICBJbnQzMi5hZGQgbWluIChpbnQzMmF1eCBzIHNwYW4pXG5cbiAgKCogUmV0dXJuIDY0IHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQ2NF0gKilcbiAgbGV0IGJpdHM2NCBzID1cbiAgICBuZXh0IHNcblxuICAoKiBSZXR1cm4gYW4gW2ludDY0XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDY0YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzNjQgcykgMSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9hdXhdLiAqKVxuICAgIGlmIEludDY0LihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxTClcbiAgICB0aGVuIGludDY0YXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQ2NCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwTFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRcIlxuICAgIGVsc2UgaW50NjRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgV2UgbXVzdCBoYXZlIFttaW4gPD0gbWF4XS4gKilcbiAgbGV0IHJlYyBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggPVxuICAgIGxldCByID0gbmV4dCBzIGluXG4gICAgaWYgciA8IG1pbiB8fCByID4gbWF4IHRoZW4gaW50NjRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IGVsc2UgclxuXG4gIGxldCBpbnQ2NF9pbl9yYW5nZSBzIH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4IHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0X2luX3JhbmdlXCJcbiAgICBlbHNlXG4gICAgICBsZXQgc3BhbiA9IEludDY0LnN1Y2MgKEludDY0LnN1YiBtYXggbWluKSBpblxuICAgICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2luX3JhbmdlX2F1eF0uICopXG4gICAgICBpZiBzcGFuIDw9IEludDY0Lnplcm8gdGhlblxuICAgICAgICBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXhcbiAgICAgIGVsc2VcbiAgICAgICAgSW50NjQuYWRkIG1pbiAoaW50NjRhdXggcyBzcGFuKVxuXG4gICgqIFJldHVybiAzMiBvciA2NCByYW5kb20gYml0cyBhcyBhIFtuYXRpdmVpbnRdICopXG4gIGxldCBuYXRpdmViaXRzID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGJpdHMzMiBzKVxuICAgIGVsc2UgZnVuIHMgLT4gSW50NjQudG9fbmF0aXZlaW50IChiaXRzNjQgcylcblxuICAoKiBSZXR1cm4gYSBbbmF0aXZlaW50XSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50ID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyBib3VuZCAtPiBOYXRpdmVpbnQub2ZfaW50MzIgKGludDMyIHMgKE5hdGl2ZWludC50b19pbnQzMiBib3VuZCkpXG4gICAgZWxzZSBmdW4gcyBib3VuZCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0IHMgKEludDY0Lm9mX25hdGl2ZWludCBib3VuZCkpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLiAqKVxuICBsZXQgbmF0aXZlaW50X2luX3JhbmdlID1cbiAgICBpZiBOYXRpdmVpbnQuc2l6ZSA9IDMyXG4gICAgdGhlbiBmdW4gcyB+bWluIH5tYXggLT5cbiAgICAgIE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzJfaW5fcmFuZ2Ugc1xuICAgICAgICB+bWluOihOYXRpdmVpbnQudG9faW50MzIgbWluKSB+bWF4OihOYXRpdmVpbnQudG9faW50MzIgbWF4KSlcbiAgICBlbHNlIGZ1biBzIH5taW4gfm1heCAtPlxuICAgICAgSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NF9pbl9yYW5nZSBzXG4gICAgICAgIH5taW46KEludDY0Lm9mX25hdGl2ZWludCBtaW4pIH5tYXg6KEludDY0Lm9mX25hdGl2ZWludCBtYXgpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50X2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDMyX2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludDMyX2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBuYXRpdmVpbnQgYm91bmQgPSBTdGF0ZS5uYXRpdmVpbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgbmF0aXZlaW50X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLm5hdGl2ZWludF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgaW50NjQgYm91bmQgPSBTdGF0ZS5pbnQ2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnQ2NF9pbl9yYW5nZSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgfm1pbiB+bWF4XG5sZXQgZmxvYXQgc2NhbGUgPSBTdGF0ZS5mbG9hdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzMzIgKCkgPSBTdGF0ZS5iaXRzMzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czY0ICgpID0gU3RhdGUuYml0czY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IG5hdGl2ZWJpdHMgKCkgPSBTdGF0ZS5uYXRpdmViaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5yZWluaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQoKSlcblxuKCogU3BsaXR0aW5nICopXG5cbmxldCBzcGxpdCAoKSA9IFN0YXRlLnNwbGl0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gdGhlIGxvYWQgZmFjdG9yIGJlY29tZXMgdG9vIGhpZ2guICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IEF0b21pYy5tYWtlIHJhbmRvbWl6ZWRfZGVmYXVsdFxuXG5sZXQgcmFuZG9taXplICgpID0gQXRvbWljLnNldCByYW5kb21pemVkIHRydWVcbmxldCBpc19yYW5kb21pemVkICgpID0gQXRvbWljLmdldCByYW5kb21pemVkXG5cbmxldCBwcm5nX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXRcblxuKCogRnVuY3Rpb25zIHdoaWNoIGFwcGVhciBiZWZvcmUgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIG11c3QgZWl0aGVyIGJlXG4gICBpbmRlcGVuZGVudCBvZiB0aGUgaGFzaCBmdW5jdGlvbiBvciB0YWtlIGl0IGFzIGEgcGFyYW1ldGVyIChzZWUgIzIyMDIgYW5kXG4gICBjb2RlIGJlbG93IHRoZSBmdW5jdG9yIGRlZmluaXRpb25zLiAqKVxuXG4oKiBDcmVhdGluZyBhIGZyZXNoLCBlbXB0eSB0YWJsZSAqKVxuXG5sZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgaWYgeCA+PSBuIHRoZW4geFxuICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxubGV0IGNyZWF0ZSA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaW5pdGlhbF9zaXplID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KSBlbHNlIDBcbiAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlOiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5OiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZTogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZSA6ID9yYW5kb206Ym9vbCAtPiBpbnQgLT4gJ2EgdFxuICAgIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCByZXNldCA6ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiBrZXkgLT4gdW5pdFxuICAgIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyIDogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlOiAoa2V5IC0+ICdhIC0+ICdhIG9wdGlvbikgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZvbGQgOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlU2VlZGVkKEg6IFNlZWRlZEhhc2hlZFR5cGUpOiAoU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIHR5cGUga2V5ID0gSC50XG4gICAgdHlwZSAnYSBoYXNodGJsID0gKGtleSwgJ2EpIHRcbiAgICB0eXBlICdhIHQgPSAnYSBoYXNodGJsXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZVxuICAgIGxldCBjbGVhciA9IGNsZWFyXG4gICAgbGV0IHJlc2V0ID0gcmVzZXRcbiAgICBsZXQgY29weSA9IGNvcHlcblxuICAgIGxldCBrZXlfaW5kZXggaCBrZXkgPVxuICAgICAgKEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgYWRkIGgga2V5IGRhdGEgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIGxldCBidWNrZXQgPSBDb25ze2tleTsgZGF0YTsgbmV4dD1oLmRhdGEuKGkpfSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcblxuICAgIGxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICgpXG4gICAgICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBiZWdpblxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gbmV4dFxuICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxuICAgIGxldCByZWMgZmluZF9yZWMga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gZGF0YSBlbHNlIGZpbmRfcmVjIGtleSBuZXh0XG5cbiAgICBsZXQgZmluZCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gU29tZSBkMSBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gU29tZSBkMiBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIFNvbWUgZDMgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHQzXG5cbiAgICBsZXQgZmluZF9hbGwgaCBrZXkgPVxuICAgICAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgICAgICBILmVxdWFsIGsga2V5IHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbWVtX2luX2J1Y2tldCBrZXkgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0W0B0YWlsX21vZF9jb25zXSByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBbXVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBkYXRhIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICBmaW5kX2luX2J1Y2tldCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICBlbHNlIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIG5leHRcblxubGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gIGxldCBsID0gaC5kYXRhLihpKSBpblxuICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgZW5kXG5cbmxldCByZWMgbWVtX2luX2J1Y2tldCBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBmYWxzZVxuICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICBjb21wYXJlIGsga2V5ID0gMCB8fCBtZW1faW5fYnVja2V0IGtleSBuZXh0XG5cbmxldCBtZW0gaCBrZXkgPVxuICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxubGV0IGFkZF9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbmxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gcmVwbGFjZSB0YmwgayB2KSBpXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gIHRibFxuXG5sZXQgcmVidWlsZCA/KHJhbmRvbSA9IEF0b21pYy5nZXQgcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSlcbiAgICBlbHNlIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5zZWVkXG4gICAgZWxzZSAwIGluXG4gIGxldCBoJyA9IHtcbiAgICBzaXplID0gaC5zaXplO1xuICAgIGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHk7XG4gICAgc2VlZCA9IHNlZWQ7XG4gICAgaW5pdGlhbF9zaXplID0gaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLmluaXRpYWxfc2l6ZSBlbHNlIHNcbiAgfSBpblxuICBpbnNlcnRfYWxsX2J1Y2tldHMgKGtleV9pbmRleCBoJykgZmFsc2UgaC5kYXRhIGgnLmRhdGE7XG4gIGgnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBXZWFrIGFycmF5IG9wZXJhdGlvbnMgKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdCA9IFwiY2FtbF93ZWFrX2NyZWF0ZVwiXG5cbigqKiBudW1iZXIgb2YgYWRkaXRpb25hbCB2YWx1ZXMgaW4gYSB3ZWFrIHBvaW50ZXJcbiAqICAgIC0gTGlua1xuICogICAgLSBEYXRhICopXG5sZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyICgqIENBTUxfRVBIRV9GSVJTVF9LRVkgaW4gd2Vhay5oICopXG5cbmxldCBjcmVhdGUgbCA9XG4gIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gT2JqLkVwaGVtZXJvbi5tYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhcIldlYWsuY3JlYXRlXCIpO1xuICBjcmVhdGUgbFxuXG5cbmxldCBsZW5ndGggeCA9IE9iai5zaXplKE9iai5yZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxubGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICBpbnZhbGlkX2FyZyhtc2cpXG5cbmV4dGVybmFsIHNldCcgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG5leHRlcm5hbCB1bnNldCA6ICdhIHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxubGV0IHNldCBlIG8geCA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuc2V0XCI7XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gdW5zZXQgZSBvXG4gIHwgU29tZSB4IC0+IHNldCcgZSBvIHhcblxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0XCJcbmxldCBnZXQgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRcIjtcbiAgZ2V0IGUgb1xuXG5leHRlcm5hbCBnZXRfY29weSA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldF9jb3B5XCJcbmxldCBnZXRfY29weSBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldF9jb3B5XCI7XG4gIGdldF9jb3B5IGUgb1xuXG5leHRlcm5hbCBjaGVjayA6ICdhIHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfd2Vha19jaGVja1wiXG5sZXQgY2hlY2sgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5jaGVja1wiO1xuICBjaGVjayBlIG9cblxuZXh0ZXJuYWwgYmxpdCA6ICdhIHQgLT4gaW50IC0+ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX3dlYWtfYmxpdFwiXG5cbigqIGJsaXQ6IHNyYyBzcmNvZmYgZHN0IGRzdG9mZiBsZW4gKilcbmxldCBibGl0IGUxIG8xIGUyIG8yIGwgPVxuICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldlYWsuYmxpdFwiXG4gIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdCBlMSBvMSBlMiBvMiBsXG5cbmxldCBmaWxsIGFyIG9mcyBsZW4geCA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYXIgLSBsZW5cbiAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIldlYWsuZmlsbFwiKVxuICBlbHNlIGJlZ2luXG4gICAgZm9yIGkgPSBvZnMgdG8gKG9mcyArIGxlbiAtIDEpIGRvXG4gICAgICBzZXQgYXIgaSB4XG4gICAgZG9uZVxuICBlbmRcblxuXG4oKiogV2VhayBoYXNoIHRhYmxlcyAqKVxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgZGF0YVxuICB0eXBlIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiB0XG4gIHZhbCBjbGVhciA6IHQgLT4gdW5pdFxuICB2YWwgbWVyZ2UgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgYWRkIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCBmaW5kIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGZpbmRfb3B0IDogdCAtPiBkYXRhIC0+IGRhdGEgb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6IHQgLT4gZGF0YSAtPiBkYXRhIGxpc3RcbiAgdmFsIG1lbSA6IHQgLT4gZGF0YSAtPiBib29sXG4gIHZhbCBpdGVyIDogKGRhdGEgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gIHZhbCBmb2xkIDogKGRhdGEgLT4gJ2FjYyAtPiAnYWNjKSAtPiB0IC0+ICdhY2MgLT4gJ2FjY1xuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuICAoKiBHZW5lcmFsIGF1eGlsaWFyeSBmdW5jdGlvbiBmb3Igc2VhcmNoaW5nIGZvciBhIHBhcnRpY3VsYXIgdmFsdWVcbiAgICogaW4gYSBoYXNoLXNldCwgYW5kIGFjdGluZyBhY2NvcmRpbmcgdG8gd2hldGhlciBvciBub3QgaXQncyBmb3VuZCAqKVxuXG4gIGxldCBmaW5kX2F1eCB0IGQgZm91bmQgbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgYXMgb3B0IHdoZW4gSC5lcXVhbCB2IGQgLT4gZm91bmQgYnVja2V0IGkgb3B0IHZcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICBsZXQgZmluZF9vcHQgdCBkID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgIG8gX3YgLT4gbylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IE5vbmUpXG5cbiAgbGV0IG1lcmdlIHQgZCAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vICB2IC0+IHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAgaCAgaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpOyBkKVxuXG4gIGxldCBmaW5kIHQgZCAgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyAgdiAtPiB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gcmFpc2UgTm90X2ZvdW5kKVxuXG4gIGxldCByZW1vdmUgdCBkICAgPSBmaW5kX2F1eCB0IGQgKGZ1biAgYiAgaSBfbyBfdiAtPiBzZXQgYiBpIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiAoKSlcblxuICBsZXQgbWVtIHQgZCAgICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gX3YgLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+IGZhbHNlKVxuXG4gIGxldCBmaW5kX2FsbCB0IGQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpIGFjY3UgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGFjY3VcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkIC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuICBsZXQgc3RhdHMgdCA9XG4gICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gICAgbGV0IGxlbnMgPSBBcnJheS5tYXAgbGVuZ3RoIHQudGFibGUgaW5cbiAgICBBcnJheS5zb3J0IGNvbXBhcmUgbGVucztcbiAgICBsZXQgdG90bGVuID0gQXJyYXkuZm9sZF9sZWZ0ICggKyApIDAgbGVucyBpblxuICAgIChsZW4sIGNvdW50IHQsIHRvdGxlbiwgbGVucy4oMCksIGxlbnMuKGxlbi8yKSwgbGVucy4obGVuLTEpKVxuXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHByZXR0eS1wcmludGluZyBmYWNpbGl0eSBhbmQgZGVmaW5pdGlvbiBvZiBmb3JtYXR0ZXJzIGZvciAncGFyYWxsZWwnXG4gICAoaS5lLiB1bnJlbGF0ZWQgb3IgaW5kZXBlbmRlbnQpIHByZXR0eS1wcmludGluZyBvbiBtdWx0aXBsZSBvdXQgY2hhbm5lbHMuICopXG5cbigqXG4gICBUaGUgcHJldHR5LXByaW50aW5nIGVuZ2luZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuXG4qKVxuXG5sZXQgaWQgeCA9IHhcblxuKCogQSBkZXZvdGVkIHR5cGUgZm9yIHNpemVzIHRvIGF2b2lkIGNvbmZ1c2lvblxuICAgYmV0d2VlbiBzaXplcyBhbmQgbWVyZSBpbnRlZ2Vycy4gKilcbm1vZHVsZSBTaXplIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCB1bmtub3duIDogdFxuICB2YWwgaXNfa25vd24gOiB0IC0+IGJvb2xcbmVuZCAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IHRvX2ludCA9IGlkXG4gIGxldCBvZl9pbnQgPSBpZFxuICBsZXQgemVybyA9IDBcbiAgbGV0IHVua25vd24gPSAtMVxuICBsZXQgaXNfa25vd24gbiA9IG4gPj0gMFxuZW5kXG5cblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIGJveGVzIGRlZmluaXRpb246XG4gICBhIHByZXR0eS1wcmludGluZyBib3ggaXMgZWl0aGVyXG4gICAtIGhib3g6IGhvcml6b250YWwgYm94IChubyBsaW5lIHNwbGl0dGluZylcbiAgIC0gdmJveDogdmVydGljYWwgYm94IChldmVyeSBicmVhayBoaW50IHNwbGl0cyB0aGUgbGluZSlcbiAgIC0gaHZib3g6IGhvcml6b250YWwvdmVydGljYWwgYm94XG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBib3ggaWYgaXQgZml0cyBvblxuICAgICAgdGhlIGN1cnJlbnQgbGluZSwgb3RoZXJ3aXNlIHRoZSBib3ggYmVoYXZlcyBhcyBhIHZlcnRpY2FsIGJveClcbiAgIC0gaG92Ym94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94XG4gICAgICh0aGUgYm94IGlzIGNvbXBhY3RpbmcgbWF0ZXJpYWwsIHByaW50aW5nIGFzIG11Y2ggbWF0ZXJpYWwgYXMgcG9zc2libGVcbiAgICAgIG9uIGV2ZXJ5IGxpbmVzKVxuICAgLSBib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3ggd2l0aCBlbmhhbmNlZCBib3ggc3RydWN0dXJlXG4gICAgICh0aGUgYm94IGJlaGF2ZXMgYXMgYW4gaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBib3ggYnV0IGJyZWFrIGhpbnRzIHNwbGl0XG4gICAgICB0aGUgbGluZSBpZiBzcGxpdHRpbmcgd291bGQgbW92ZSB0byB0aGUgbGVmdClcbiopXG50eXBlIGJveF90eXBlID0gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmJsb2NrX3R5cGUgPVxuICB8IFBwX2hib3ggfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyB0b2tlbnMgZGVmaW5pdGlvbjpcbiAgIGFyZSBlaXRoZXIgdGV4dCB0byBwcmludCBvciBwcmV0dHkgcHJpbnRpbmdcbiAgIGVsZW1lbnRzIHRoYXQgZHJpdmUgaW5kZW50YXRpb24gYW5kIGxpbmUgc3BsaXR0aW5nLiAqKVxudHlwZSBwcF90b2tlbiA9XG4gIHwgUHBfdGV4dCBvZiBzdHJpbmcgICAgICAgICAgKCogbm9ybWFsIHRleHQgKilcbiAgfCBQcF9icmVhayBvZiB7ICAgICAgICAgICAgICAoKiBjb21wbGV0ZSBicmVhayAqKVxuICAgICAgZml0czogc3RyaW5nICogaW50ICogc3RyaW5nOyAgICgqIGxpbmUgaXMgbm90IHNwbGl0ICopXG4gICAgICBicmVha3M6IHN0cmluZyAqIGludCAqIHN0cmluZzsgKCogbGluZSBpcyBzcGxpdCAqKVxuICAgIH1cbiAgfCBQcF90YnJlYWsgb2YgaW50ICogaW50ICAgICAoKiBnbyB0byBuZXh0IHRhYnVsYXRpb24gKilcbiAgfCBQcF9zdGFiICAgICAgICAgICAgICAgICAgICAoKiBzZXQgYSB0YWJ1bGF0aW9uICopXG4gIHwgUHBfYmVnaW4gb2YgaW50ICogYm94X3R5cGUgKCogYmVnaW5uaW5nIG9mIGEgYm94ICopXG4gIHwgUHBfZW5kICAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgYm94ICopXG4gIHwgUHBfdGJlZ2luIG9mIHRib3ggICAgICAgICAgKCogYmVnaW5uaW5nIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF90ZW5kICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX25ld2xpbmUgICAgICAgICAgICAgICAgICgqIHRvIGZvcmNlIGEgbmV3bGluZSBpbnNpZGUgYSBib3ggKilcbiAgfCBQcF9pZl9uZXdsaW5lICAgICAgICAgICAgICAoKiB0byBkbyBzb21ldGhpbmcgb25seSBpZiB0aGlzIHZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGhhcyBiZWVuIGJyb2tlbiAqKVxuICB8IFBwX29wZW5fdGFnIG9mIHN0YWcgICAgICAgICAoKiBvcGVuaW5nIGEgdGFnIG5hbWUgKilcbiAgfCBQcF9jbG9zZV90YWcgICAgICAgICAgICAgICAoKiBjbG9zaW5nIHRoZSBtb3N0IHJlY2VudGx5IG9wZW4gdGFnICopXG5cbmFuZCBzdGFnID0gLi5cblxuYW5kIHRib3ggPSBQcF90Ym94IG9mIGludCBsaXN0IHJlZiAgKCogVGFidWxhdGlvbiBib3ggKilcblxudHlwZSB0YWcgPSBzdHJpbmdcbnR5cGUgc3RhZyArPSBTdHJpbmdfdGFnIG9mIHRhZ1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZTpcbiAgIHByZXR0eS1wcmludGluZyBtYXRlcmlhbCBpcyBub3Qgd3JpdHRlbiBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgZW1pdHRlZDtcbiAgIGluc3RlYWQsIHRoZSBtYXRlcmlhbCBpcyBzaW1wbHkgcmVjb3JkZWQgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLFxuICAgdW50aWwgdGhlIGVuY2xvc2luZyBib3ggaGFzIGEga25vd24gY29tcHV0ZWQgc2l6ZSBhbmQgcHJvcGVyIHNwbGl0dGluZ1xuICAgZGVjaXNpb25zIGNhbiBiZSBtYWRlLlxuXG4gICBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgY29udGFpbnMgZm9ybWF0dGluZyBlbGVtZW50cyB0byBiZSBwcmludGVkLlxuICAgRWFjaCBmb3JtYXR0aW5nIGVsZW1lbnQgaXMgYSB0dXBsZSAoc2l6ZSwgdG9rZW4sIGxlbmd0aCksIHdoZXJlXG4gICAtIGxlbmd0aCBpcyB0aGUgZGVjbGFyZWQgbGVuZ3RoIG9mIHRoZSB0b2tlbixcbiAgIC0gc2l6ZSBpcyBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUgdG9rZW4gd2hlbiBpdCBpcyBwcmludGVkXG4gICAgIChzaXplIGlzIHNldCB3aGVuIHRoZSBzaXplIG9mIHRoZSBib3ggaXMga25vd24sIHNvIHRoYXQgc2l6ZSBvZiBicmVha1xuICAgICAgaGludHMgYXJlIGRlZmluaXRpdmUpLiAqKVxudHlwZSBwcF9xdWV1ZV9lbGVtID0ge1xuICBtdXRhYmxlIHNpemUgOiBTaXplLnQ7XG4gIHRva2VuIDogcHBfdG9rZW47XG4gIGxlbmd0aCA6IGludDtcbn1cblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfcXVldWUgPSBwcF9xdWV1ZV9lbGVtIFF1ZXVlLnRcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2s6IHNjYW5uaW5nIGVsZW1lbnQgZGVmaW5pdGlvbi4gKilcbnR5cGUgcHBfc2Nhbl9lbGVtID0ge1xuICBsZWZ0X3RvdGFsIDogaW50OyAoKiBWYWx1ZSBvZiBwcF9sZWZ0X3RvdGFsIHdoZW4gdGhlIGVsZW1lbnQgd2FzIGVucXVldWVkLiAqKVxuICBxdWV1ZV9lbGVtIDogcHBfcXVldWVfZWxlbVxufVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazpcbiAgIHRoZSBmb3JtYXR0aW5nIHN0YWNrIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRseSBhY3RpdmVcbiAgIGJveGVzOyB0aGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjayBpcyB1c2VkIHRvIHNwbGl0IHRoZSBsaW5lc1xuICAgd2hpbGUgcHJpbnRpbmcgdG9rZW5zLiAqKVxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjazogZm9ybWF0dGluZyBzdGFjayBlbGVtZW50IGRlZmluaXRpb24uXG4gICBFYWNoIHN0YWNrIGVsZW1lbnQgZGVzY3JpYmVzIGEgcHJldHR5LXByaW50aW5nIGJveC4gKilcbnR5cGUgcHBfZm9ybWF0X2VsZW0gPSB7IGJveF90eXBlIDogYm94X3R5cGU7IHdpZHRoIDogaW50IH1cblxuKCogVGhlIGZvcm1hdHRlciBkZWZpbml0aW9uLlxuICAgRWFjaCBmb3JtYXR0ZXIgdmFsdWUgaXMgYSBwcmV0dHktcHJpbnRlciBpbnN0YW5jZSB3aXRoIGFsbCBpdHNcbiAgIG1hY2hpbmVyeS4gKilcbnR5cGUgZm9ybWF0dGVyID0ge1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG4gIHBwX3NjYW5fc3RhY2sgOiBwcF9zY2FuX2VsZW0gU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2suICopXG4gIHBwX2Zvcm1hdF9zdGFjayA6IHBwX2Zvcm1hdF9lbGVtIFN0YWNrLnQ7XG4gIHBwX3Rib3hfc3RhY2sgOiB0Ym94IFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzZW1hbnRpY3MgdGFnIHN0YWNrLiAqKVxuICBwcF90YWdfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gIHBwX21hcmtfc3RhY2sgOiBzdGFnIFN0YWNrLnQ7XG4gICgqIFZhbHVlIG9mIHJpZ2h0IG1hcmdpbi4gKilcbiAgbXV0YWJsZSBwcF9tYXJnaW4gOiBpbnQ7XG4gICgqIE1pbmltYWwgc3BhY2UgbGVmdCBiZWZvcmUgbWFyZ2luLCB3aGVuIG9wZW5pbmcgYSBib3guICopXG4gIG11dGFibGUgcHBfbWluX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIE1heGltdW0gdmFsdWUgb2YgaW5kZW50YXRpb246XG4gICAgIG5vIGJveCBjYW4gYmUgb3BlbmVkIGZ1cnRoZXIuICopXG4gIG11dGFibGUgcHBfbWF4X2luZGVudCA6IGludDtcbiAgKCogU3BhY2UgcmVtYWluaW5nIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG11dGFibGUgcHBfc3BhY2VfbGVmdCA6IGludDtcbiAgKCogQ3VycmVudCB2YWx1ZSBvZiBpbmRlbnRhdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9jdXJyZW50X2luZGVudCA6IGludDtcbiAgKCogVHJ1ZSB3aGVuIHRoZSBsaW5lIGhhcyBiZWVuIGJyb2tlbiBieSB0aGUgcHJldHR5LXByaW50ZXIuICopXG4gIG11dGFibGUgcHBfaXNfbmV3X2xpbmUgOiBib29sO1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgYWxyZWFkeSBwcmludGVkLiAqKVxuICBtdXRhYmxlIHBwX2xlZnRfdG90YWwgOiBpbnQ7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBldmVyIHB1dCBpbiBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwcF9yaWdodF90b3RhbCA6IGludDtcbiAgKCogQ3VycmVudCBudW1iZXIgb2Ygb3BlbiBib3hlcy4gKilcbiAgbXV0YWJsZSBwcF9jdXJyX2RlcHRoIDogaW50O1xuICAoKiBNYXhpbXVtIG51bWJlciBvZiBib3hlcyB3aGljaCBjYW4gYmUgc2ltdWx0YW5lb3VzbHkgb3Blbi4gKilcbiAgbXV0YWJsZSBwcF9tYXhfYm94ZXMgOiBpbnQ7XG4gICgqIEVsbGlwc2lzIHN0cmluZy4gKilcbiAgbXV0YWJsZSBwcF9lbGxpcHNpcyA6IHN0cmluZztcbiAgKCogT3V0cHV0IGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICAoKiBGbHVzaGluZyBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBicmVhayBoaW50cyBzcGFjZXMuICopXG4gIG11dGFibGUgcHBfb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbiAgKCogQXJlIHRhZ3MgcHJpbnRlZCA/ICopXG4gIG11dGFibGUgcHBfcHJpbnRfdGFncyA6IGJvb2w7XG4gICgqIEFyZSB0YWdzIG1hcmtlZCA/ICopXG4gIG11dGFibGUgcHBfbWFya190YWdzIDogYm9vbDtcbiAgKCogRmluZCBvcGVuaW5nIGFuZCBjbG9zaW5nIG1hcmtlcnMgb2YgdGFncy4gKilcbiAgbXV0YWJsZSBwcF9tYXJrX29wZW5fdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfbWFya19jbG9zZV90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9wcmludF9vcGVuX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgbXV0YWJsZSBwcF9wcmludF9jbG9zZV90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbiAgcHBfcXVldWUgOiBwcF9xdWV1ZTtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIHNwZWNpZmljIHRhZyBoYW5kbGluZyBmdW5jdGlvbnMuICopXG50eXBlIGZvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbWFya19jbG9zZV9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIHByaW50X29wZW5fc3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gdW5pdDtcbn1cblxuXG4oKiBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9ucyB0byBvdXRwdXQgbWF0ZXJpYWwuICopXG50eXBlIGZvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID0ge1xuICBvdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICBvdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X3NwYWNlcyA6IGludCAtPiB1bml0O1xuICBvdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG59XG5cblxuKCpcblxuICBBdXhpbGlhcmllcyBhbmQgYmFzaWMgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBFbnRlciBhIHRva2VuIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuID1cbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gc3RhdGUucHBfcmlnaHRfdG90YWwgKyB0b2tlbi5sZW5ndGg7XG4gIFF1ZXVlLmFkZCB0b2tlbiBzdGF0ZS5wcF9xdWV1ZVxuXG5cbmxldCBwcF9jbGVhcl9xdWV1ZSBzdGF0ZSA9XG4gIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gMTsgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gMTtcbiAgUXVldWUuY2xlYXIgc3RhdGUucHBfcXVldWVcblxuXG4oKiBQcF9pbmZpbml0eTogbGFyZ2UgdmFsdWUgZm9yIGRlZmF1bHQgdG9rZW5zIHNpemUuXG5cbiAgIFBwX2luZmluaXR5IGlzIGRvY3VtZW50ZWQgYXMgYmVpbmcgZ3JlYXRlciB0aGFuIDFlMTA7IHRvIGF2b2lkXG4gICBjb25mdXNpb24gYWJvdXQgdGhlIHdvcmQgJ2dyZWF0ZXInLCB3ZSBjaG9vc2UgcHBfaW5maW5pdHkgZ3JlYXRlclxuICAgdGhhbiAxZTEwICsgMTsgZm9yIGNvcnJlY3QgaGFuZGxpbmcgb2YgdGVzdHMgaW4gdGhlIGFsZ29yaXRobSxcbiAgIHBwX2luZmluaXR5IG11c3QgYmUgZXZlbiBvbmUgbW9yZSB0aGFuIDFlMTAgKyAxOyBsZXQncyBzdGFuZCBvbiB0aGVcbiAgIHNhZmUgc2lkZSBieSBjaG9vc2luZyAxLmUxMCsxMC5cblxuICAgUHBfaW5maW5pdHkgY291bGQgcHJvYmFibHkgYmUgMTA3Mzc0MTgyMyB0aGF0IGlzIDJeMzAgLSAxLCB0aGF0IGlzXG4gICB0aGUgbWluaW1hbCB1cHBlciBib3VuZCBmb3IgaW50ZWdlcnM7IG5vdyB0aGF0IG1heF9pbnQgaXMgZGVmaW5lZCxcbiAgIHRoaXMgbGltaXQgY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzIG1heF9pbnQgLSAxLlxuXG4gICBIb3dldmVyLCBiZWZvcmUgc2V0dGluZyBwcF9pbmZpbml0eSB0byBzb21ldGhpbmcgYXJvdW5kIG1heF9pbnQsIHdlXG4gICBtdXN0IGNhcmVmdWxseSBkb3VibGUtY2hlY2sgYWxsIHRoZSBpbnRlZ2VyIGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuICAgdGhhdCBpbnZvbHZlIHBwX2luZmluaXR5LCBzaW5jZSBhbnkgb3ZlcmZsb3cgd291bGQgd3JlY2sgaGF2b2MgdGhlXG4gICBwcmV0dHktcHJpbnRpbmcgYWxnb3JpdGhtJ3MgaW52YXJpYW50cy4gR2l2ZW4gdGhhdCB0aGlzIGFyaXRobWV0aWNcbiAgIGNvcnJlY3RuZXNzIGNoZWNrIGlzIGRpZmZpY3VsdCBhbmQgZXJyb3IgcHJvbmUgYW5kIGdpdmVuIHRoYXQgMWUxMFxuICAgKyAxIGlzIGluIHByYWN0aWNlIGxhcmdlIGVub3VnaCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhdHRlbXB0IHRvIHNldFxuICAgcHBfaW5maW5pdHkgdG8gdGhlIHRoZW9yZXRpY2FsbHkgbWF4aW11bSBsaW1pdC4gSXQgaXMgbm90IHdvcnRoIHRoZVxuICAgYnVyZGVuICEgKilcbmxldCBwcF9pbmZpbml0eSA9IDEwMDAwMDAwMTBcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBmb3IgdGhlIGZvcm1hdHRlci4gKilcbmxldCBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHMgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuYW5kIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlID0gc3RhdGUucHBfb3V0X25ld2xpbmUgKClcbmFuZCBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfc3BhY2VzIG5cbmFuZCBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIG4gPSBzdGF0ZS5wcF9vdXRfaW5kZW50IG5cblxuKCogRm9ybWF0IGEgdGV4dHVhbCB0b2tlbiAqKVxubGV0IGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgdGV4dCA9XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHNpemU7XG4gIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgdGV4dDtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gZmFsc2VcblxuKCogRm9ybWF0IGEgc3RyaW5nIGJ5IGl0cyBsZW5ndGgsIGlmIG5vdCBlbXB0eSAqKVxubGV0IGZvcm1hdF9zdHJpbmcgc3RhdGUgcyA9XG4gIGlmIHMgPD4gXCJcIiB0aGVuIGZvcm1hdF9wcF90ZXh0IHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxuKCogVG8gZm9ybWF0IGEgYnJlYWssIGluZGVudGluZyBhIG5ldyBsaW5lLiAqKVxubGV0IGJyZWFrX25ld19saW5lIHN0YXRlIChiZWZvcmUsIG9mZnNldCwgYWZ0ZXIpIHdpZHRoID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSB0cnVlO1xuICBsZXQgaW5kZW50ID0gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZzZXQgaW5cbiAgKCogRG9uJ3QgaW5kZW50IG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LiAqKVxuICBsZXQgcmVhbF9pbmRlbnQgPSBJbnQubWluIHN0YXRlLnBwX21heF9pbmRlbnQgaW5kZW50IGluXG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIHJlYWxfaW5kZW50O1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBwcF9vdXRwdXRfaW5kZW50IHN0YXRlIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50O1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gZm9yY2UgYSBsaW5lIGJyZWFrIGluc2lkZSBhIGJveDogbm8gb2Zmc2V0IGlzIGFkZGVkLiAqKVxubGV0IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGggPSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgMCwgXCJcIikgd2lkdGhcblxuKCogVG8gZm9ybWF0IGEgYnJlYWsgdGhhdCBmaXRzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgYnJlYWtfc2FtZV9saW5lIHN0YXRlIChiZWZvcmUsIHdpZHRoLCBhZnRlcikgPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gd2lkdGg7XG4gIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgd2lkdGg7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBpbmRlbnQgbm8gbW9yZSB0aGFuIHBwX21heF9pbmRlbnQsIGlmIG9uZSB0cmllcyB0byBvcGVuIGEgYm94XG4gICBiZXlvbmQgcHBfbWF4X2luZGVudCwgdGhlbiB0aGUgYm94IGlzIHJlamVjdGVkIG9uIHRoZSBsZWZ0XG4gICBieSBzaW11bGF0aW5nIGEgYnJlYWsuICopXG5sZXQgcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlXG4gIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgaWYgd2lkdGggPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW5cbiAgICAgIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfZml0cyB8IFBwX2hib3ggLT4gKClcbiAgICAgIHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcblxuXG4oKiBUbyBza2lwIGEgdG9rZW4sIGlmIHRoZSBwcmV2aW91cyBsaW5lIGhhcyBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9za2lwX3Rva2VuIHN0YXRlID1cbiAgbWF0Y2ggUXVldWUudGFrZV9vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogcHJpbnRfaWZfbmV3bGluZSBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBwcmludGluZyBjb21tYW5kICopXG4gIHwgU29tZSB7IHNpemU7IGxlbmd0aDsgXyB9IC0+XG4gICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIC0gbGVuZ3RoO1xuICAgIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCArIFNpemUudG9faW50IHNpemVcblxuXG4oKlxuXG4gIFRoZSBtYWluIHByZXR0eSBwcmludGluZyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEZvcm1hdHRpbmcgYSB0b2tlbiB3aXRoIGEgZ2l2ZW4gc2l6ZS4gKilcbmxldCBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSA9IGZ1bmN0aW9uXG5cbiAgfCBQcF90ZXh0IHMgLT5cbiAgICBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHNcblxuICB8IFBwX2JlZ2luIChvZmYsIHR5KSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgaWYgaW5zZXJ0aW9uX3BvaW50ID4gc3RhdGUucHBfbWF4X2luZGVudCB0aGVuXG4gICAgICAoKiBjYW4gbm90IG9wZW4gYSBib3ggcmlnaHQgdGhlcmUuICopXG4gICAgICBiZWdpbiBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlIGVuZDtcbiAgICBsZXQgd2lkdGggPSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gb2ZmIGluXG4gICAgbGV0IGJveF90eXBlID1cbiAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgIHwgUHBfdmJveCAtPiBQcF92Ym94XG4gICAgICB8IFBwX2hib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHMgLT5cbiAgICAgICAgaWYgc2l6ZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiB0eSBlbHNlIFBwX2ZpdHMgaW5cbiAgICBTdGFjay5wdXNoIHsgYm94X3R5cGU7IHdpZHRoIH0gc3RhdGUucHBfZm9ybWF0X3N0YWNrXG5cbiAgfCBQcF9lbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3RiZWdpbiAoUHBfdGJveCBfIGFzIHRib3gpIC0+XG4gICAgU3RhY2sucHVzaCB0Ym94IHN0YXRlLnBwX3Rib3hfc3RhY2tcblxuICB8IFBwX3RlbmQgLT5cbiAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF9zdGFiIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCByZWMgYWRkX3RhYiBuID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbbl1cbiAgICAgICAgfCB4IDo6IGwgYXMgbHMgLT4gaWYgbiA8IHggdGhlbiBuIDo6IGxzIGVsc2UgeCA6OiBhZGRfdGFiIG4gbCBpblxuICAgICAgdGFicyA6PSBhZGRfdGFiIChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0KSAhdGFic1xuICAgIGVuZFxuXG4gIHwgUHBfdGJyZWFrIChuLCBvZmYpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHRhYiA9XG4gICAgICAgIG1hdGNoICF0YWJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnNlcnRpb25fcG9pbnRcbiAgICAgICAgfCBmaXJzdCA6OiBfIC0+XG4gICAgICAgICAgbGV0IHJlYyBmaW5kID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGlmIGhlYWQgPj0gaW5zZXJ0aW9uX3BvaW50IHRoZW4gaGVhZCBlbHNlIGZpbmQgdGFpbFxuICAgICAgICAgICAgfCBbXSAtPiBmaXJzdCBpblxuICAgICAgICAgIGZpbmQgIXRhYnMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSB0YWIgLSBpbnNlcnRpb25fcG9pbnQgaW5cbiAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoXCJcIiwgb2Zmc2V0ICsgbiwgXCJcIilcbiAgICAgIGVsc2UgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIHRhYiArIG9mZiwgXCJcIikgc3RhdGUucHBfbWFyZ2luXG4gICAgZW5kXG5cbiAgfCBQcF9uZXdsaW5lIC0+XG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyB3aWR0aDsgX30gLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuICAgIGVuZFxuXG4gIHwgUHBfaWZfbmV3bGluZSAtPlxuICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ICE9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICB0aGVuIHBwX3NraXBfdG9rZW4gc3RhdGVcblxuICB8IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gLT5cbiAgICBsZXQgYmVmb3JlLCBvZmYsIF8gPSBicmVha3MgaW5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IGJveF90eXBlOyB3aWR0aCB9IC0+XG4gICAgICBiZWdpbiBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2hvdmJveCAtPlxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfYm94IC0+XG4gICAgICAgICgqIEhhdmUgdGhlIGxpbmUganVzdCBiZWVuIGJyb2tlbiBoZXJlID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfaXNfbmV3X2xpbmUgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0cyBlbHNlXG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aCBlbHNlXG4gICAgICAgICgqIGJyZWFrIHRoZSBsaW5lIGhlcmUgbGVhZHMgdG8gbmV3IGluZGVudGF0aW9uID8gKilcbiAgICAgICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPiBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZlxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2h2Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9maXRzIC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX3Zib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2hib3ggLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICB8IFBwX29wZW5fdGFnIHRhZ19uYW1lIC0+XG4gICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyO1xuICAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX21hcmtfc3RhY2tcblxuICAgfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgYmVnaW4gbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9tYXJrX3N0YWNrIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19jbG9zZV90YWcgdGFnX25hbWUgaW5cbiAgICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlclxuICAgICBlbmRcblxuXG4oKiBQcmludCBpZiB0b2tlbiBzaXplIGlzIGtub3duIGVsc2UgcHJpbnRpbmcgaXMgZGVsYXllZC5cbiAgIFByaW50aW5nIGlzIGRlbGF5ZWQgd2hlbiB0aGUgdGV4dCB3YWl0aW5nIGluIHRoZSBxdWV1ZSByZXF1aXJlc1xuICAgbW9yZSByb29tIHRvIGZvcm1hdCB0aGFuIGV4aXN0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IHJlYyBhZHZhbmNlX2xlZnQgc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS5wZWVrX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBObyB0b2tlbnMgdG8gcHJpbnQgKilcbiAgfCBTb21lIHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IC0+XG4gICAgbGV0IHBlbmRpbmdfY291bnQgPSBzdGF0ZS5wcF9yaWdodF90b3RhbCAtIHN0YXRlLnBwX2xlZnRfdG90YWwgaW5cbiAgICBpZiBTaXplLmlzX2tub3duIHNpemUgfHwgcGVuZGluZ19jb3VudCA+PSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gYmVnaW5cbiAgICAgIFF1ZXVlLnRha2Ugc3RhdGUucHBfcXVldWUgfD4gaWdub3JlOyAoKiBOb3QgZW1wdHk6IHdlIHBlZWsgaW50byBpdCAqKVxuICAgICAgbGV0IHNpemUgPSBpZiBTaXplLmlzX2tub3duIHNpemUgdGhlbiBTaXplLnRvX2ludCBzaXplIGVsc2UgcHBfaW5maW5pdHkgaW5cbiAgICAgIGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplIHRva2VuO1xuICAgICAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSBsZW5ndGggKyBzdGF0ZS5wcF9sZWZ0X3RvdGFsO1xuICAgICAgKGFkdmFuY2VfbGVmdCBbQHRhaWxjYWxsXSkgc3RhdGVcbiAgICBlbmRcblxuXG4oKiBUbyBlbnF1ZXVlIGEgdG9rZW4gOiB0cnkgdG8gYWR2YW5jZS4gKilcbmxldCBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgdG9rID0gcHBfZW5xdWV1ZSBzdGF0ZSB0b2s7IGFkdmFuY2VfbGVmdCBzdGF0ZVxuXG5cbigqIFRvIGVucXVldWUgc3RyaW5ncy4gKilcbmxldCBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHMgPVxuICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplOyB0b2tlbiA9IFBwX3RleHQgczsgbGVuZ3RoID0gU2l6ZS50b19pbnQgc2l6ZSB9XG5cblxubGV0IGVucXVldWVfc3RyaW5nIHN0YXRlIHMgPVxuICBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSAoU2l6ZS5vZl9pbnQgKFN0cmluZy5sZW5ndGggcykpIHNcblxuXG4oKiBSb3V0aW5lcyBmb3Igc2NhbiBzdGFja1xuICAgZGV0ZXJtaW5lIHNpemUgb2YgYm94ZXMuICopXG5cbigqIFRoZSBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxubGV0IGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGFjayA9XG4gIFN0YWNrLmNsZWFyIHN0YWNrO1xuICBsZXQgcXVldWVfZWxlbSA9IHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF90ZXh0IFwiXCI7IGxlbmd0aCA9IDAgfSBpblxuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IC0xOyBxdWV1ZV9lbGVtIH0gc3RhY2tcblxuKCogU2V0dGluZyB0aGUgc2l6ZSBvZiBib3hlcyBvbiBzY2FuIHN0YWNrOlxuICAgaWYgdHkgPSB0cnVlIHRoZW4gc2l6ZSBvZiBicmVhayBpcyBzZXQgZWxzZSBzaXplIG9mIGJveCBpcyBzZXQ7XG4gICBpbiBlYWNoIGNhc2UgcHBfc2Nhbl9zdGFjayBpcyBwb3BwZWQuXG5cbiAgIE5vdGU6XG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHNjYW4gc3RhY2sgaXMgZXhoYXVzdGl2ZSwgc2luY2Ugc2Nhbl9zdGFjayBpcyBuZXZlclxuICAgZW1wdHkuXG4gICBQYXR0ZXJuIG1hdGNoaW5nIG9uIHRva2VuIGluIHNjYW4gc3RhY2sgaXMgYWxzbyBleGhhdXN0aXZlLFxuICAgc2luY2Ugc2Nhbl9wdXNoIGlzIHVzZWQgb24gYnJlYWtzIGFuZCBvcGVuaW5nIG9mIGJveGVzLiAqKVxubGV0IHNldF9zaXplIHN0YXRlIHR5ID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG4gIHwgU29tZSB7IGxlZnRfdG90YWw7IHF1ZXVlX2VsZW0gfSAtPlxuICAgIGxldCBzaXplID0gU2l6ZS50b19pbnQgcXVldWVfZWxlbS5zaXplIGluXG4gICAgKCogdGVzdCBpZiBzY2FuIHN0YWNrIGNvbnRhaW5zIGFueSBkYXRhIHRoYXQgaXMgbm90IG9ic29sZXRlLiAqKVxuICAgIGlmIGxlZnRfdG90YWwgPCBzdGF0ZS5wcF9sZWZ0X3RvdGFsIHRoZW5cbiAgICAgIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzdGF0ZS5wcF9zY2FuX3N0YWNrXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcXVldWVfZWxlbS50b2tlbiB3aXRoXG4gICAgICB8IFBwX2JyZWFrIF8gfCBQcF90YnJlYWsgKF8sIF8pIC0+XG4gICAgICAgIGlmIHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfYmVnaW4gKF8sIF8pIC0+XG4gICAgICAgIGlmIG5vdCB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX3RleHQgXyB8IFBwX3N0YWIgfCBQcF90YmVnaW4gXyB8IFBwX3RlbmQgfCBQcF9lbmRcbiAgICAgIHwgUHBfbmV3bGluZSB8IFBwX2lmX25ld2xpbmUgfCBQcF9vcGVuX3RhZyBfIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgICAgICgpICgqIHNjYW5fcHVzaCBpcyBvbmx5IHVzZWQgZm9yIGJyZWFrcyBhbmQgYm94ZXMuICopXG5cblxuKCogUHVzaCBhIHRva2VuIG9uIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLlxuICAgSWYgYiBpcyB0cnVlIHNldF9zaXplIGlzIGNhbGxlZC4gKilcbmxldCBzY2FuX3B1c2ggc3RhdGUgYiB0b2tlbiA9XG4gIHBwX2VucXVldWUgc3RhdGUgdG9rZW47XG4gIGlmIGIgdGhlbiBzZXRfc2l6ZSBzdGF0ZSB0cnVlO1xuICBsZXQgZWxlbSA9IHsgbGVmdF90b3RhbCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsOyBxdWV1ZV9lbGVtID0gdG9rZW4gfSBpblxuICBTdGFjay5wdXNoIGVsZW0gc3RhdGUucHBfc2Nhbl9zdGFja1xuXG5cbigqIFRvIG9wZW4gYSBuZXcgYm94IDpcbiAgIHRoZSB1c2VyIG1heSBzZXQgdGhlIGRlcHRoIGJvdW5kIHBwX21heF9ib3hlc1xuICAgYW55IHRleHQgbmVzdGVkIGRlZXBlciBpcyBwcmludGVkIGFzIHRoZSBlbGxpcHNpcyBzdHJpbmcuICopXG5sZXQgcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBicl90eSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfYmVnaW4gKGluZGVudCwgYnJfdHkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgZmFsc2UgZWxlbSBlbHNlXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRoZSBib3ggd2hpY2ggaXMgYWx3YXlzIG9wZW4uICopXG5sZXQgcHBfb3Blbl9zeXNfYm94IHN0YXRlID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaG92Ym94XG5cbigqIENsb3NlIGEgYm94LCBzZXR0aW5nIHNpemVzIG9mIGl0cyBzdWIgYm94ZXMuICopXG5sZXQgcHBfY2xvc2VfYm94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGJlZ2luXG4gICAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9lbmQ7IGxlbmd0aCA9IDAgfTtcbiAgICAgIHNldF9zaXplIHN0YXRlIHRydWU7IHNldF9zaXplIHN0YXRlIGZhbHNlXG4gICAgZW5kO1xuICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDE7XG4gIGVuZFxuXG5cbigqIE9wZW4gYSB0YWcsIHB1c2hpbmcgaXQgb24gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9vcGVuX3N0YWcgc3RhdGUgdGFnX25hbWUgPVxuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgYmVnaW5cbiAgICBTdGFjay5wdXNoIHRhZ19uYW1lIHN0YXRlLnBwX3RhZ19zdGFjaztcbiAgICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyB0YWdfbmFtZVxuICBlbmQ7XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgbGV0IHRva2VuID0gUHBfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW47IGxlbmd0aCA9IDAgfVxuXG5cbigqIENsb3NlIGEgdGFnLCBwb3BwaW5nIGl0IGZyb20gdGhlIHRhZyBzdGFjay4gKilcbmxldCBwcF9jbG9zZV9zdGFnIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBwcF9lbnF1ZXVlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9jbG9zZV90YWc7IGxlbmd0aCA9IDAgfTtcbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gICAgbWF0Y2ggU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90YWdfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICB8IFNvbWUgdGFnX25hbWUgLT5cbiAgICAgIHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZyB0YWdfbmFtZVxuXG5sZXQgcHBfc2V0X3ByaW50X3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX3ByaW50X3RhZ3MgPC0gYlxubGV0IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYiA9IHN0YXRlLnBwX21hcmtfdGFncyA8LSBiXG5sZXQgcHBfZ2V0X3ByaW50X3RhZ3Mgc3RhdGUgKCkgPSBzdGF0ZS5wcF9wcmludF90YWdzXG5sZXQgcHBfZ2V0X21hcmtfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmtfdGFnc1xubGV0IHBwX3NldF90YWdzIHN0YXRlIGIgPVxuICBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiOyBwcF9zZXRfbWFya190YWdzIHN0YXRlIGJcblxuXG4oKiBIYW5kbGluZyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zOiBnZXQvc2V0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBtYXJrX29wZW5fc3RhZyA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnO1xuICBwcmludF9vcGVuX3N0YWcgPSBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZztcbiAgcHJpbnRfY2xvc2Vfc3RhZyA9IHN0YXRlLnBwX3ByaW50X2Nsb3NlX3RhZztcbn1cblxuXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl9zdGFnID0gbW90O1xuICAgICBtYXJrX2Nsb3NlX3N0YWcgPSBtY3Q7XG4gICAgIHByaW50X29wZW5fc3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2Vfc3RhZyA9IHBjdDtcbiAgfSA9XG4gIHN0YXRlLnBwX21hcmtfb3Blbl90YWcgPC0gbW90O1xuICBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyA8LSBtY3Q7XG4gIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIDwtIHBvdDtcbiAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIDwtIHBjdFxuXG5cbigqIEluaXRpYWxpemUgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfcmluaXQgc3RhdGUgPVxuICBwcF9jbGVhcl9xdWV1ZSBzdGF0ZTtcbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX2Zvcm1hdF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGJveF9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfdGFnX3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF9tYXJrX3N0YWNrO1xuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSAwO1xuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIDA7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luO1xuICBwcF9vcGVuX3N5c19ib3ggc3RhdGVcblxubGV0IGNsZWFyX3RhZ19zdGFjayBzdGF0ZSA9XG4gIFN0YWNrLml0ZXIgKGZ1biBfIC0+IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkpIHN0YXRlLnBwX3RhZ19zdGFja1xuXG5cbigqIEZsdXNoaW5nIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBlbmRfd2l0aF9uZXdsaW5lIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5sZXQgcHBfcHJpbnRfbm90aGluZyBfc3RhdGUgKCkgPSAoKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB+ZW5kX3dpdGhfbmV3bGluZTp0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgaWYgbWFyZ2luID49IHBwX2luZmluaXR5IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA+PSBwcF9pbmZpbml0eVwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cbigqIEluaXRpYWxpc2UgZG9tYWluIGxvY2FsIHN0YXRlICopXG5tb2R1bGUgRExTID0gRG9tYWluLkRMU1xuXG5sZXQgc3RkYnVmX2tleSA9IERMUy5uZXdfa2V5IHBwX21ha2VfYnVmZmVyXG5sZXQgXyA9IERMUy5zZXQgc3RkYnVmX2tleSBzdGRidWZcblxubGV0IHN0cl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBmb3JtYXR0ZXJfb2ZfYnVmZmVyIChETFMuZ2V0IHN0ZGJ1Zl9rZXkpKVxubGV0IF8gPSBETFMuc2V0IHN0cl9mb3JtYXR0ZXJfa2V5IHN0cl9mb3JtYXR0ZXJcblxubGV0IGJ1ZmZlcmVkX291dF9zdHJpbmcga2V5IHN0ciBvZnMgbGVuID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgKERvbWFpbi5ETFMuZ2V0IGtleSkgc3RyIG9mcyBsZW5cblxubGV0IGJ1ZmZlcmVkX291dF9mbHVzaCBvYyBrZXkgKCkgPVxuICBsZXQgYnVmID0gRG9tYWluLkRMUy5nZXQga2V5IGluXG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBvdXRwdXRfc3Vic3RyaW5nIG9jIHN0ciAwIGxlbiA7XG4gIFN0ZGxpYi5mbHVzaCBvYztcbiAgQnVmZmVyLmNsZWFyIGJ1ZlxuXG5sZXQgc3RkX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxubGV0IGVycl9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcblxubGV0IHN0ZF9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBzdGRfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZG91dCBzdGRfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IHN0ZF9mb3JtYXR0ZXJfa2V5IHN0ZF9mb3JtYXR0ZXJcblxubGV0IGVycl9mb3JtYXR0ZXJfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICBsZXQgcHBmID1cbiAgICBwcF9tYWtlX2Zvcm1hdHRlciAoYnVmZmVyZWRfb3V0X3N0cmluZyBlcnJfYnVmX2tleSlcbiAgICAgIChidWZmZXJlZF9vdXRfZmx1c2ggU3RkbGliLnN0ZGVyciBlcnJfYnVmX2tleSkgaWdub3JlIGlnbm9yZSBpZ25vcmVcbiAgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBEb21haW4uYXRfZXhpdCAocHBfcHJpbnRfZmx1c2ggcHBmKTtcbiAgcHBmKVxubGV0IF8gPSBETFMuc2V0IGVycl9mb3JtYXR0ZXJfa2V5IGVycl9mb3JtYXR0ZXJcblxubGV0IGdldF9zdGRfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleVxubGV0IGdldF9lcnJfZm9ybWF0dGVyICgpID0gRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdHJfZm9ybWF0dGVyICgpID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleVxubGV0IGdldF9zdGRidWYgKCkgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXlcblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiB+ZW5kX3dpdGhfbmV3bGluZTpmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuKCogRmx1c2ggW3N0cl9mb3JtYXR0ZXJdIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIFtzdGRidWZdLiAqKVxubGV0IGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkgPVxuICBsZXQgc3RkYnVmID0gRExTLmdldCBzdGRidWZfa2V5IGluXG4gIGxldCBzdHJfZm9ybWF0dGVyID0gRExTLmdldCBzdHJfZm9ybWF0dGVyX2tleSBpblxuICBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIHN0ZGJ1ZiBzdHJfZm9ybWF0dGVyXG5cbmxldCBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgRExTLm5ld19rZXkgKGZ1biAoKSAtPlxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IG91dHB1dCcgPSBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgaW5cbiAgICBsZXQgZmx1c2gnICgpID1cbiAgICAgIG91dHB1dCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgMCAoQnVmZmVyLmxlbmd0aCBidWYpO1xuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGZsdXNoICgpXG4gICAgaW5cbiAgICBtYWtlX2Zvcm1hdHRlciBvdXRwdXQnIGZsdXNoJylcblxubGV0IHN5bmNocm9uaXplZF9mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZ1xuKilcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nIGlzIHByZXR0eS1wcmludGluZyB3aXRoIG5vIGxvdyBsZXZlbCBvdXRwdXQuXG5cbiAgV2hlbiB1c2luZyBhIHN5bWJvbGljIGZvcm1hdHRlciwgYWxsIHJlZ3VsYXIgcHJldHR5LXByaW50aW5nIGFjdGl2aXRpZXNcbiAgb2NjdXIgYnV0IG91dHB1dCBtYXRlcmlhbCBpcyBzeW1ib2xpYyBhbmQgc3RvcmVkIGluIGEgYnVmZmVyIG9mIG91dHB1dFxuICBpdGVtcy4gQXQgdGhlIGVuZCBvZiBwcmV0dHktcHJpbnRpbmcsIGZsdXNoaW5nIHRoZSBvdXRwdXQgYnVmZmVyIGFsbG93c1xuICBwb3N0LXByb2Nlc3Npbmcgb2Ygc3ltYm9saWMgb3V0cHV0IGJlZm9yZSBsb3cgbGV2ZWwgb3V0cHV0IG9wZXJhdGlvbnMuXG4qKVxuXG50eXBlIHN5bWJvbGljX291dHB1dF9pdGVtID1cbiAgfCBPdXRwdXRfZmx1c2hcbiAgfCBPdXRwdXRfbmV3bGluZVxuICB8IE91dHB1dF9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgT3V0cHV0X3NwYWNlcyBvZiBpbnRcbiAgfCBPdXRwdXRfaW5kZW50IG9mIGludFxuXG50eXBlIHN5bWJvbGljX291dHB1dF9idWZmZXIgPSB7XG4gIG11dGFibGUgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDogc3ltYm9saWNfb3V0cHV0X2l0ZW0gbGlzdDtcbn1cblxubGV0IG1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciAoKSA9XG4gIHsgc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzID0gW10gfVxuXG5sZXQgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIFtdXG5cbmxldCBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBMaXN0LnJldiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBpdGVtcyA9IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiBpblxuICBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYjtcbiAgaXRlbXNcblxubGV0IGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgaXRlbSA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gaXRlbSA6OiBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzXG5cbmxldCBmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgc3ltYm9saWNfZmx1c2ggc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9mbHVzaFxuICBhbmQgc3ltYm9saWNfbmV3bGluZSBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X25ld2xpbmVcbiAgYW5kIHN5bWJvbGljX3N0cmluZyBzb2IgcyBpIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zdHJpbmcgKFN0cmluZy5zdWIgcyBpIG4pKVxuICBhbmQgc3ltYm9saWNfc3BhY2VzIHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3BhY2VzIG4pXG4gIGFuZCBzeW1ib2xpY19pbmRlbnQgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9pbmRlbnQgbikgaW5cblxuICBsZXQgZiA9IHN5bWJvbGljX3N0cmluZyBzb2JcbiAgYW5kIGcgPSBzeW1ib2xpY19mbHVzaCBzb2JcbiAgYW5kIGggPSBzeW1ib2xpY19uZXdsaW5lIHNvYlxuICBhbmQgaSA9IHN5bWJvbGljX3NwYWNlcyBzb2JcbiAgYW5kIGogPSBzeW1ib2xpY19pbmRlbnQgc29iIGluXG4gIHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgalxuXG4oKlxuXG4gIEJhc2ljIGZ1bmN0aW9ucyBvbiB0aGUgJ3N0YW5kYXJkJyBmb3JtYXR0ZXJcbiAgKHRoZSBmb3JtYXR0ZXIgdGhhdCBwcmludHMgdG8gW1N0ZGxpYi5zdGRvdXRdKS5cblxuKilcblxubGV0IG9wZW5faGJveCB2ID0gcHBfb3Blbl9oYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl92Ym94IHYgPSBwcF9vcGVuX3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2h2Ym94IHYgPSBwcF9vcGVuX2h2Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ob3Zib3ggdiA9IHBwX29wZW5faG92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9ib3ggdiA9IHBwX29wZW5fYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfYm94IHYgPSBwcF9jbG9zZV9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3N0YWcgdiA9IHBwX29wZW5fc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3N0YWcgdiA9IHBwX2Nsb3NlX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9hcyB2IHcgPSBwcF9wcmludF9hcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfc3RyaW5nIHYgPSBwcF9wcmludF9zdHJpbmcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ieXRlcyB2ID0gcHBfcHJpbnRfYnl0ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pbnQgdiA9IHBwX3ByaW50X2ludCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Zsb2F0IHYgPSBwcF9wcmludF9mbG9hdCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2NoYXIgdiA9IHBwX3ByaW50X2NoYXIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9ib29sIHYgPSBwcF9wcmludF9ib29sIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnJlYWsgdiB3ID0gcHBfcHJpbnRfYnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X2N1dCB2ID0gcHBfcHJpbnRfY3V0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfc3BhY2UgdiA9IHBwX3ByaW50X3NwYWNlIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZm9yY2VfbmV3bGluZSB2ID0gcHBfZm9yY2VfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ZsdXNoIHYgPSBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X25ld2xpbmUgdiA9IHBwX3ByaW50X25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9pZl9uZXdsaW5lIHYgPSBwcF9wcmludF9pZl9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBvcGVuX3Rib3ggdiA9IHBwX29wZW5fdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX3Rib3ggdiA9IHBwX2Nsb3NlX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YnJlYWsgdiB3ID0gcHBfcHJpbnRfdGJyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcblxuYW5kIHNldF90YWIgdiA9IHBwX3NldF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF90YWIgdiA9IHBwX3ByaW50X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21hcmdpbiB2ID0gcHBfc2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJnaW4gdiA9IHBwX2dldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfaW5kZW50IHYgPSBwcF9zZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfaW5kZW50IHYgPSBwcF9nZXRfbWF4X2luZGVudCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBzYWZlX3NldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIH5tYXhfaW5kZW50IH5tYXJnaW5cbmFuZCBnZXRfZ2VvbWV0cnkgdiA9IHBwX2dldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHVwZGF0ZV9nZW9tZXRyeSB2ID0gcHBfdXBkYXRlX2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2JveGVzIHYgPSBwcF9zZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9ib3hlcyB2ID0gcHBfZ2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG92ZXJfbWF4X2JveGVzIHYgPSBwcF9vdmVyX21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX3NldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2VsbGlwc2lzX3RleHQgdiA9IHBwX2dldF9lbGxpcHNpc190ZXh0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiB3ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfc2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfcHJpbnRfdGFncyB2ID1cbiAgcHBfZ2V0X3ByaW50X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfbWFya190YWdzIHYgPVxuICBwcF9zZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmtfdGFncyB2ID1cbiAgcHBfZ2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF90YWdzIHYgPVxuICBwcF9zZXRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG5sZXQgcHBfcHJpbnRfaXRlciA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgaXRlciBwcF92IHBwZiB2ID1cbiAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgbGV0IHBwX3YgdiA9XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW4gaXNfZmlyc3QgOj0gZmFsc2UgZWxzZSBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHZcbiAgaW5cbiAgaXRlciBwcF92IHZcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgTGlzdC5pdGVyIHBwX3YgcHBmIHZcblxuKCogVG8gZm9ybWF0IGFuIGFycmF5ICopXG5sZXQgcHBfcHJpbnRfYXJyYXkgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHYgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgQXJyYXkuaXRlciBwcF92IHBwZiB2XG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBwcF9wcmludF9pdGVyIH5wcF9zZXAgU2VxLml0ZXIgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChPYmoubWFnaWMgKCkgOiBpdGVtKVxuXG4oKioqKiBUeXBlcyAqKioqKVxuXG50eXBlIHRhZ1xudHlwZSBsYWJlbCA9IGludFxudHlwZSBjbG9zdXJlID0gaXRlbVxudHlwZSB0ID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG50eXBlIG9iaiA9IHQgYXJyYXlcbmV4dGVybmFsIHJldCA6IChvYmogLT4gJ2EpIC0+IGNsb3N1cmUgPSBcIiVpZGVudGl0eVwiXG5cbigqKioqIExhYmVscyAqKioqKVxuXG5sZXQgcHVibGljX21ldGhvZF9sYWJlbCBzIDogdGFnID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGxldCB0YWcgPSBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdSBpblxuICAoKiBQcmludGYuZXByaW50ZiBcIiVzID0gJWRcXG5cIiBzIHRhZzsgZmx1c2ggc3RkZXJyOyAqKVxuICBPYmoubWFnaWMgdGFnXG5cbigqKioqIFNwYXJzZSBhcnJheSAqKioqKVxuXG5tb2R1bGUgVmFycyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgdmFycyA9IGludCBWYXJzLnRcblxubW9kdWxlIE1ldGhzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBtZXRocyA9IGxhYmVsIE1ldGhzLnRcbm1vZHVsZSBMYWJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IGxhYmVsIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIGxhYnMgPSBib29sIExhYnMudFxuXG4oKiBUaGUgY29tcGlsZXIgYXNzdW1lcyB0aGF0IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGlzIHN0cnVjdHVyZSBpcyBbc2l6ZV0uICopXG50eXBlIHRhYmxlID1cbiB7IG11dGFibGUgc2l6ZTogaW50O1xuICAgbXV0YWJsZSBtZXRob2RzOiBjbG9zdXJlIGFycmF5O1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X25hbWU6IG1ldGhzO1xuICAgbXV0YWJsZSBtZXRob2RzX2J5X2xhYmVsOiBsYWJzO1xuICAgbXV0YWJsZSBwcmV2aW91c19zdGF0ZXM6XG4gICAgIChtZXRocyAqIGxhYnMgKiAobGFiZWwgKiBpdGVtKSBsaXN0ICogdmFycyAqXG4gICAgICBsYWJlbCBsaXN0ICogc3RyaW5nIGxpc3QpIGxpc3Q7XG4gICBtdXRhYmxlIGhpZGRlbl9tZXRoczogKGxhYmVsICogaXRlbSkgbGlzdDtcbiAgIG11dGFibGUgdmFyczogdmFycztcbiAgIG11dGFibGUgaW5pdGlhbGl6ZXJzOiAob2JqIC0+IHVuaXQpIGxpc3QgfVxuXG5sZXQgZHVtbXlfdGFibGUgPVxuICB7IG1ldGhvZHMgPSBbfCBkdW1teV9pdGVtIHxdO1xuICAgIG1ldGhvZHNfYnlfbmFtZSA9IE1ldGhzLmVtcHR5O1xuICAgIG1ldGhvZHNfYnlfbGFiZWwgPSBMYWJzLmVtcHR5O1xuICAgIHByZXZpb3VzX3N0YXRlcyA9IFtdO1xuICAgIGhpZGRlbl9tZXRocyA9IFtdO1xuICAgIHZhcnMgPSBWYXJzLmVtcHR5O1xuICAgIGluaXRpYWxpemVycyA9IFtdO1xuICAgIHNpemUgPSAwIH1cblxubGV0IHRhYmxlX2NvdW50ID0gcmVmIDBcblxuKCogZHVtbXlfbWV0IHNob3VsZCBiZSBhIHBvaW50ZXIsIHNvIHVzZSBhbiBhdG9tICopXG5sZXQgZHVtbXlfbWV0IDogaXRlbSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gT2JqLm1hZ2ljIGxlbjtcbiAgbWV0aG9kcy4oMSkgPC0gT2JqLm1hZ2ljIChmaXRfc2l6ZSBsZW4gKiBTeXMud29yZF9zaXplIC8gOCAtIDEpO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbyBtZXRob2RzLihpKjIrMykgPC0gT2JqLm1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IE9iai5tYWdpYyAwIHRoZW4gW10gZWxzZSBBcnJheS50b19saXN0IGFyclxuXG5sZXQgbmFycm93IHRhYmxlIHZhcnMgdmlydF9tZXRocyBjb25jcl9tZXRocyA9XG4gIGxldCB2YXJzID0gdG9fbGlzdCB2YXJzXG4gIGFuZCB2aXJ0X21ldGhzID0gdG9fbGlzdCB2aXJ0X21ldGhzXG4gIGFuZCBjb25jcl9tZXRocyA9IHRvX2xpc3QgY29uY3JfbWV0aHMgaW5cbiAgbGV0IHZpcnRfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIHZpcnRfbWV0aHMgaW5cbiAgbGV0IGNvbmNyX21ldGhfbGFicyA9IExpc3QubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBjb25jcl9tZXRocyBpblxuICB0YWJsZS5wcmV2aW91c19zdGF0ZXMgPC1cbiAgICAgKHRhYmxlLm1ldGhvZHNfYnlfbmFtZSwgdGFibGUubWV0aG9kc19ieV9sYWJlbCwgdGFibGUuaGlkZGVuX21ldGhzLFxuICAgICAgdGFibGUudmFycywgdmlydF9tZXRoX2xhYnMsIHZhcnMpXG4gICAgIDo6IHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgIFZhcnMuZm9sZFxuICAgICAgKGZ1biBsYWIgaW5mbyB0dmFycyAtPlxuICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmFycyB0aGVuIFZhcnMuYWRkIGxhYiBpbmZvIHR2YXJzIGVsc2UgdHZhcnMpXG4gICAgICB0YWJsZS52YXJzIFZhcnMuZW1wdHk7XG4gIGxldCBieV9uYW1lID0gcmVmIE1ldGhzLmVtcHR5IGluXG4gIGxldCBieV9sYWJlbCA9IHJlZiBMYWJzLmVtcHR5IGluXG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PVxuICAgICAgICAgIExhYnMuYWRkIGxhYmVsXG4gICAgICAgICAgICAodHJ5IExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHdpdGggTm90X2ZvdW5kIC0+IHRydWUpXG4gICAgICAgICAgICAhYnlfbGFiZWwpXG4gICAgY29uY3JfbWV0aHMgY29uY3JfbWV0aF9sYWJzO1xuICBMaXN0Lml0ZXIyXG4gICAgKGZ1biBtZXQgbGFiZWwgLT5cbiAgICAgICBieV9uYW1lIDo9IE1ldGhzLmFkZCBtZXQgbGFiZWwgIWJ5X25hbWU7XG4gICAgICAgYnlfbGFiZWwgOj0gTGFicy5hZGQgbGFiZWwgZmFsc2UgIWJ5X2xhYmVsKVxuICAgIHZpcnRfbWV0aHMgdmlydF9tZXRoX2xhYnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSAhYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSAhYnlfbGFiZWw7XG4gIHRhYmxlLmhpZGRlbl9tZXRocyA8LVxuICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAoZnVuICgobGFiLCBfKSBhcyBtZXQpIGhtIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gbGFiIHZpcnRfbWV0aF9sYWJzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIFtdXG5cbmxldCB3aWRlbiB0YWJsZSA9XG4gIGxldCAoYnlfbmFtZSwgYnlfbGFiZWwsIHNhdmVkX2hpZGRlbl9tZXRocywgc2F2ZWRfdmFycywgdmlydF9tZXRocywgdmFycykgPVxuICAgIExpc3QuaGQgdGFibGUucHJldmlvdXNfc3RhdGVzXG4gIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LSBMaXN0LnRsIHRhYmxlLnByZXZpb3VzX3N0YXRlcztcbiAgdGFibGUudmFycyA8LVxuICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gcyB2IC0+IFZhcnMuYWRkIHYgKFZhcnMuZmluZCB2IHRhYmxlLnZhcnMpIHMpXG4gICAgICAgc2F2ZWRfdmFycyB2YXJzO1xuICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gYnlfbmFtZTtcbiAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRocyB0aGVuIGhtIGVsc2UgbWV0OjpobSlcbiAgICAgICB0YWJsZS5oaWRkZW5fbWV0aHNcbiAgICAgICBzYXZlZF9oaWRkZW5fbWV0aHNcblxubGV0IG5ld19zbG90IHRhYmxlID1cbiAgbGV0IGluZGV4ID0gdGFibGUuc2l6ZSBpblxuICB0YWJsZS5zaXplIDwtIGluZGV4ICsgMTtcbiAgaW5kZXhcblxubGV0IG5ld192YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnNcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgaW5kZXggPSBuZXdfc2xvdCB0YWJsZSBpblxuICAgIGlmIG5hbWUgPD4gXCJcIiB0aGVuIHRhYmxlLnZhcnMgPC0gVmFycy5hZGQgbmFtZSBpbmRleCB0YWJsZS52YXJzO1xuICAgIGluZGV4XG5cbmxldCB0b19hcnJheSBhcnIgPVxuICBpZiBhcnIgPSBPYmoubWFnaWMgMCB0aGVuIFt8fF0gZWxzZSBhcnJcblxubGV0IG5ld19tZXRob2RzX3ZhcmlhYmxlcyB0YWJsZSBtZXRocyB2YWxzID1cbiAgbGV0IG1ldGhzID0gdG9fYXJyYXkgbWV0aHMgaW5cbiAgbGV0IG5tZXRocyA9IEFycmF5Lmxlbmd0aCBtZXRocyBhbmQgbnZhbHMgPSBBcnJheS5sZW5ndGggdmFscyBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobm1ldGhzICsgbnZhbHMpIDAgaW5cbiAgZm9yIGkgPSAwIHRvIG5tZXRocyAtIDEgZG9cbiAgICByZXMuKGkpIDwtIGdldF9tZXRob2RfbGFiZWwgdGFibGUgbWV0aHMuKGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudmFscyAtIDEgZG9cbiAgICByZXMuKGkrbm1ldGhzKSA8LSBuZXdfdmFyaWFibGUgdGFibGUgdmFscy4oaSlcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBnZXRfdmFyaWFibGUgdGFibGUgbmFtZSA9XG4gIHRyeSBWYXJzLmZpbmQgbmFtZSB0YWJsZS52YXJzIHdpdGggTm90X2ZvdW5kIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlcyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIHRhYmxlKSBuYW1lc1xuXG5sZXQgYWRkX2luaXRpYWxpemVyIHRhYmxlIGYgPVxuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gZjo6dGFibGUuaW5pdGlhbGl6ZXJzXG5cbigqXG5tb2R1bGUgS2V5cyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSB0YWcgYXJyYXkgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbmxldCBrZXlfbWFwID0gcmVmIEtleXMuZW1wdHlcbmxldCBnZXRfa2V5IHRhZ3MgOiBpdGVtID1cbiAgdHJ5IG1hZ2ljIChLZXlzLmZpbmQgdGFncyAha2V5X21hcCA6IHRhZyBhcnJheSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBrZXlfbWFwIDo9IEtleXMuYWRkIHRhZ3MgdGFncyAha2V5X21hcDtcbiAgICBtYWdpYyB0YWdzXG4qKVxuXG5sZXQgY3JlYXRlX3RhYmxlIHB1YmxpY19tZXRob2RzID1cbiAgaWYgcHVibGljX21ldGhvZHMgPT0gT2JqLm1hZ2ljIDAgdGhlbiBuZXdfdGFibGUgW3x8XSBlbHNlXG4gICgqIFtwdWJsaWNfbWV0aG9kc10gbXVzdCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIgZm9yIGJ5dGVjb2RlICopXG4gIGxldCB0YWdzID0gQXJyYXkubWFwIHB1YmxpY19tZXRob2RfbGFiZWwgcHVibGljX21ldGhvZHMgaW5cbiAgbGV0IHRhYmxlID0gbmV3X3RhYmxlIHRhZ3MgaW5cbiAgQXJyYXkuaXRlcmlcbiAgICAoZnVuIGkgbWV0IC0+XG4gICAgICBsZXQgbGFiID0gaSoyKzIgaW5cbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSAgPC0gTWV0aHMuYWRkIG1ldCBsYWIgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWIgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsKVxuICAgIHB1YmxpY19tZXRob2RzO1xuICB0YWJsZVxuXG5sZXQgaW5pdF9jbGFzcyB0YWJsZSA9XG4gIGluc3RfdmFyX2NvdW50IDo9ICFpbnN0X3Zhcl9jb3VudCArIHRhYmxlLnNpemUgLSAxO1xuICB0YWJsZS5pbml0aWFsaXplcnMgPC0gTGlzdC5yZXYgdGFibGUuaW5pdGlhbGl6ZXJzO1xuICByZXNpemUgdGFibGUgKDMgKyBPYmoubWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCBPYmoucmVwciBpbml0IHxdO1xuICAgICBPYmoubWFnaWMgKEFycmF5Lm1hcCAoZ2V0X3ZhcmlhYmxlIGNsYSkgKHRvX2FycmF5IHZhbHMpIDogaW50IGFycmF5KTtcbiAgICAgQXJyYXkubWFwXG4gICAgICAgKGZ1biBubSAtPiBPYmoucmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIE9iai5tYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZVxuICAgIHRoZW4gbiBlbHNlIG5ld19tZXRob2QgdGFibGVcbiAgaW5cbiAgdGFibGUubWV0aG9kcy4obikgPC0gT2JqLm1hZ2ljIDA7XG4gIG5cblxudHlwZSBpbXBsID1cbiAgICBHZXRDb25zdFxuICB8IEdldFZhclxuICB8IEdldEVudlxuICB8IEdldE1ldGhcbiAgfCBTZXRWYXJcbiAgfCBBcHBDb25zdFxuICB8IEFwcFZhclxuICB8IEFwcEVudlxuICB8IEFwcE1ldGhcbiAgfCBBcHBDb25zdENvbnN0XG4gIHwgQXBwQ29uc3RWYXJcbiAgfCBBcHBDb25zdEVudlxuICB8IEFwcENvbnN0TWV0aFxuICB8IEFwcFZhckNvbnN0XG4gIHwgQXBwRW52Q29uc3RcbiAgfCBBcHBNZXRoQ29uc3RcbiAgfCBNZXRoQXBwQ29uc3RcbiAgfCBNZXRoQXBwVmFyXG4gIHwgTWV0aEFwcEVudlxuICB8IE1ldGhBcHBNZXRoXG4gIHwgU2VuZENvbnN0XG4gIHwgU2VuZFZhclxuICB8IFNlbmRFbnZcbiAgfCBTZW5kTWV0aFxuICB8IENsb3N1cmUgb2YgY2xvc3VyZVxuXG5sZXQgbWV0aG9kX2ltcGwgdGFibGUgaSBhcnIgPVxuICBsZXQgbmV4dCAoKSA9IGluY3IgaTsgT2JqLm1hZ2ljIGFyci4oIWkpIGluXG4gIG1hdGNoIG5leHQoKSB3aXRoXG4gICAgR2V0Q29uc3QgLT4gbGV0IHggOiB0ID0gbmV4dCgpIGluIGdldF9jb25zdCB4XG4gIHwgR2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X3ZhciBuXG4gIHwgR2V0RW52ICAgLT4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X2VudiBlIG5cbiAgfCBHZXRNZXRoICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfbWV0aCBuXG4gIHwgU2V0VmFyICAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gc2V0X3ZhciBuXG4gIHwgQXBwQ29uc3QgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gYXBwX2NvbnN0IGYgeFxuICB8IEFwcFZhciAgIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfdmFyIGYgblxuICB8IEFwcEVudiAgIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiAgbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnYgZiBlIG5cbiAgfCBBcHBNZXRoICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX21ldGggZiBuXG4gIHwgQXBwQ29uc3RDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IHkgPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9jb25zdCBmIHggeVxuICB8IEFwcENvbnN0VmFyIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X3ZhciBmIHggblxuICB8IEFwcENvbnN0RW52IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9lbnYgZiB4IGUgblxuICB8IEFwcENvbnN0TWV0aCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF9tZXRoIGYgeCBuXG4gIHwgQXBwVmFyQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfdmFyX2NvbnN0IGYgbiB4XG4gIHwgQXBwRW52Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX2Vudl9jb25zdCBmIGUgbiB4XG4gIHwgQXBwTWV0aENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX21ldGhfY29uc3QgZiBuIHhcbiAgfCBNZXRoQXBwQ29uc3QgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIG1ldGhfYXBwX2NvbnN0IG4geFxuICB8IE1ldGhBcHBWYXIgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX3ZhciBuIG1cbiAgfCBNZXRoQXBwRW52IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpblxuICAgICAgbWV0aF9hcHBfZW52IG4gZSBtXG4gIHwgTWV0aEFwcE1ldGggLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluIG1ldGhfYXBwX21ldGggbiBtXG4gIHwgU2VuZENvbnN0IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBzZW5kX2NvbnN0IG0geCAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRWYXIgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX3ZhciBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kRW52IC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgc2VuZF9lbnYgbSBlIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kTWV0aCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfbWV0aCBtIG4gKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBDbG9zdXJlIF8gYXMgY2xvIC0+IE9iai5tYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuZXhpc3RzIChmdW5jdGlvbiAnXFxcIicgfCAnJScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGYgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtcIlxcXCJcIjsgZjsgXCJcXFwiXCJdXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDIwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgb3Blbl90ZW1wX2ZpbGUgPyhtb2RlID0gW09wZW5fdGV4dF0pID8ocGVybXMgPSAwbzYwMClcbiAgICA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKVxuICAgIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgKG5hbWUsXG4gICAgICAgb3Blbl9vdXRfZ2VuIChPcGVuX3dyb25seTo6T3Blbl9jcmVhdDo6T3Blbl9leGNsOjptb2RlKSBwZXJtcyBuYW1lKVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcblxubGV0IHRlbXBfZGlyID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgPyhwZXJtcyA9IDBvNzAwKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIFN5cy5ta2RpciBuYW1lIHBlcm1zO1xuICAgICAgbmFtZVxuICAgIHdpdGggU3lzX2Vycm9yIF8gYXMgZSAtPlxuICAgICAgaWYgY291bnRlciA+PSAyMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPSBGbG9hdC5oeXBvdCB4LnJlIHguaW1cblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gLi5cbmV4dGVybmFsIHBlcmZvcm0gOiAnYSB0IC0+ICdhID0gXCIlcGVyZm9ybVwiXG5cbnR5cGUgZXhuICs9IFVuaGFuZGxlZDogJ2EgdCAtPiBleG5cbmV4Y2VwdGlvbiBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbmxldCAoKSA9XG4gIGxldCBwcmludGVyID0gZnVuY3Rpb25cbiAgICB8IFVuaGFuZGxlZCB4IC0+XG4gICAgICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIlN0ZGxpYi5FZmZlY3QuVW5oYW5kbGVkKCVzKVwiXG4gICAgICAgICAgICAoUHJpbnRleGMuc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBAQCBPYmoucmVwciB4KVxuICAgICAgICBpblxuICAgICAgICBTb21lIG1zZ1xuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgcHJpbnRlclxuXG4oKiBSZWdpc3RlciB0aGUgZXhjZXB0aW9ucyBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiBhY2Nlc3MgaXQgKilcbnR5cGUgXyB0ICs9IFNob3VsZF9ub3Rfc2VlX3RoaXNfXyA6IHVuaXQgdFxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuVW5oYW5kbGVkXCJcbiAgICAgICAgICAoVW5oYW5kbGVkIFNob3VsZF9ub3Rfc2VlX3RoaXNfXylcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIlxuICAgICAgICAgIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxudHlwZSAoJ2EsICdiKSBzdGFjayBbQEBpbW1lZGlhdGVdXG50eXBlIGxhc3RfZmliZXIgW0BAaW1tZWRpYXRlXVxuXG5leHRlcm5hbCByZXN1bWUgOlxuICAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXN1bWVcIlxuZXh0ZXJuYWwgcnVuc3RhY2sgOiAoJ2EsICdiKSBzdGFjayAtPiAoJ2MgLT4gJ2EpIC0+ICdjIC0+ICdiID0gXCIlcnVuc3RhY2tcIlxuXG5tb2R1bGUgRGVlcCA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcbiAgZXh0ZXJuYWwgY29udF9sYXN0X2ZpYmVyIDogKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgPSBcIiVmaWVsZDFcIlxuICBleHRlcm5hbCBjb250X3NldF9sYXN0X2ZpYmVyIDpcbiAgICAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiB1bml0ID0gXCIlc2V0ZmllbGQxXCJcblxuICBsZXQgY29udGludWUgayB2ID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIHggLT4geCkgdiAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgbGV0IGRpc2NvbnRpbnVlIGsgZSA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGUgKGNvbnRfbGFzdF9maWJlciBrKVxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIGUgYnQgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KVxuICAgICAgZSAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBtYXRjaF93aXRoIGNvbXAgYXJnIGhhbmRsZXIgPVxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICB0eXBlICdhIGVmZmVjdF9oYW5kbGVyID1cbiAgICB7IGVmZmM6ICdiLiAnYiB0IC0+ICgoJ2IsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYSkgb3B0aW9uIH1cblxuICBsZXQgdHJ5X3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMnIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggaGFuZGxlci5lZmZjIGVmZiB3aXRoXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgIGNvbnRfc2V0X2xhc3RfZmliZXIgayBsYXN0X2ZpYmVyO1xuICAgICAgICAgIGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG5cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBleHRlcm5hbCBjb250X2xhc3RfZmliZXIgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciA9IFwiJWZpZWxkMVwiXG4gIGV4dGVybmFsIGNvbnRfc2V0X2xhc3RfZmliZXIgOlxuICAgICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDFcIlxuXG4gIGxldCBmaWJlciA6IHR5cGUgYSBiLiAoYSAtPiBiKSAtPiAoYSwgYikgY29udGludWF0aW9uID0gZnVuIGYgLT5cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3QgdHlwZSBfIHQgKz0gSW5pdGlhbF9zZXR1cF9fIDogYSB0IGVuZCBpblxuICAgIGxldCBleGNlcHRpb24gRSBvZiAoYSxiKSBjb250aW51YXRpb24gaW5cbiAgICBsZXQgZicgKCkgPSBmIChwZXJmb3JtIE0uSW5pdGlhbF9zZXR1cF9fKSBpblxuICAgIGxldCBlcnJvciBfID0gZmFpbHdpdGggXCJpbXBvc3NpYmxlXCIgaW5cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGVmZiB3aXRoXG4gICAgICB8IE0uSW5pdGlhbF9zZXR1cF9fIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBsYXN0X2ZpYmVyID0gY29udF9sYXN0X2ZpYmVyIGsgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHYgbGFzdF9maWJlclxuXG4gIGxldCBjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIHggLT4geCkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiByYWlzZSBlKSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayB2IGJ0IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4gZSAtPiBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJ0KSB2IGhhbmRsZXJcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuIiwiW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiBibGl0X3N0cmluZyBkb2Vzbid0IGV4aXN0IGluIFtTdGRMYWJlbHMuQnl0ZXNdLi4uICAqKVxubGV0IGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgQnl0ZXMuYmxpdF9zdHJpbmcgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG47O1xuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBGb3JtYXRcblxuKCoqIFR5cGUgb2YgUy1leHByZXNzaW9ucyAqKVxudHlwZSB0ID1cbiAgfCBBdG9tIG9mIHN0cmluZ1xuICB8IExpc3Qgb2YgdCBsaXN0XG5cbmxldCBzZXhwX29mX3QgdCA9IHRcbmxldCB0X29mX3NleHAgdCA9IHRcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IHJlcyA9IGNvbXBhcmUgeCB5IGluXG4gICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBjb21wYXJlX2xpc3QgeHMgeXNcblxuYW5kIGNvbXBhcmUgYSBiID1cbiAgaWYgYSA9PSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IEF0b20gYSwgQXRvbSBiIC0+IFN0cmluZy5jb21wYXJlIGEgYlxuICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgIHwgTGlzdCBhLCBMaXN0IGIgLT4gY29tcGFyZV9saXN0IGEgYilcbjs7XG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zIG9mIHRcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIHRcblxubW9kdWxlIFByaW50aW5nID0gc3RydWN0XG4gICgqIERlZmF1bHQgaW5kZW50YXRpb24gbGV2ZWwgZm9yIGh1bWFuLXJlYWRhYmxlIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IGRlZmF1bHRfaW5kZW50ID0gcmVmIDFcblxuICAoKiBFc2NhcGluZyBvZiBzdHJpbmdzIHVzZWQgYXMgYXRvbXMgaW4gUy1leHByZXNzaW9ucyAqKVxuXG4gIGxldCBtdXN0X2VzY2FwZSBzdHIgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxlbiA9IDBcbiAgICB8fFxuICAgIGxldCByZWMgbG9vcCBzdHIgaXggPVxuICAgICAgbWF0Y2ggc3RyLltpeF0gd2l0aFxuICAgICAgfCAnXCInIHwgJygnIHwgJyknIHwgJzsnIHwgJ1xcXFwnIC0+IHRydWVcbiAgICAgIHwgJ3wnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJyMnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJyMnIC0+XG4gICAgICAgIGl4ID4gMFxuICAgICAgICAmJlxuICAgICAgICBsZXQgbmV4dCA9IGl4IC0gMSBpblxuICAgICAgICBDaGFyLmVxdWFsIHN0ci5bbmV4dF0gJ3wnIHx8IGxvb3Agc3RyIG5leHRcbiAgICAgIHwgJ1xcMDAwJyAuLiAnXFwwMzInIHwgJ1xcMTI3JyAuLiAnXFwyNTUnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBpeCA+IDAgJiYgbG9vcCBzdHIgKGl4IC0gMSlcbiAgICBpblxuICAgIGxvb3Agc3RyIChsZW4gLSAxKVxuICA7O1xuXG4gIGxldCBlc2NhcGVkIHMgPVxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgblxuICAgICAgOj0gIW5cbiAgICAgICAgICtcbiAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgICB8IF8gLT4gNFxuICAgIGRvbmU7XG4gICAgaWYgIW4gPSBTdHJpbmcubGVuZ3RoIHNcbiAgICB0aGVuIHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBzJyA9IEJ5dGVzLmNyZWF0ZSAhbiBpblxuICAgICAgbiA6PSAwO1xuICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ3InXG4gICAgICAgICB8ICdcXGInIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICAgICB8ICcgJyAuLiAnficgYXMgYyAtPiBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICBsZXQgYSA9IENoYXIuY29kZSBjIGluXG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIC8gMTAgbW9kIDEwKSkpO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gKENoYXIuY2hyICg0OCArIChhIG1vZCAxMCkpKSk7XG4gICAgICAgIGluY3IgblxuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcycpXG4gIDs7XG5cbiAgbGV0IGVzY19zdHIgc3RyID1cbiAgICBsZXQgZXN0ciA9IGVzY2FwZWQgc3RyIGluXG4gICAgbGV0IGVsZW4gPSBTdHJpbmcubGVuZ3RoIGVzdHIgaW5cbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChlbGVuICsgMikgaW5cbiAgICBieXRlc19ibGl0X3N0cmluZyB+c3JjOmVzdHIgfnNyY19wb3M6MCB+ZHN0OnJlcyB+ZHN0X3BvczoxIH5sZW46ZWxlbjtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAwICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgKGVsZW4gKyAxKSAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIDs7XG5cbiAgbGV0IGluZGV4X29mX25ld2xpbmUgc3RyIHN0YXJ0ID0gU3RyaW5nLmluZGV4X2Zyb21fb3B0IHN0ciBzdGFydCAnXFxuJ1xuXG4gIGxldCBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBlbmRfcG9zX29wdCA9XG4gICAgbGV0IGVuZF9wb3MgPVxuICAgICAgbWF0Y2ggZW5kX3Bvc19vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICB8IFNvbWUgZW5kX3BvcyAtPiBlbmRfcG9zXG4gICAgaW5cbiAgICBTdHJpbmcuc3ViIHN0ciB+cG9zOmluZGV4IH5sZW46KGVuZF9wb3MgLSBpbmRleClcbiAgOztcblxuICBsZXQgaXNfb25lX2xpbmUgc3RyID1cbiAgICBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBpbmRleCAtPiBpbmRleCArIDEgPSBTdHJpbmcubGVuZ3RoIHN0clxuICA7O1xuXG4gIGxldCBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyID1cbiAgICBpZiBub3QgKG11c3RfZXNjYXBlIHN0cilcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyXG4gICAgZWxzZSBpZiBpc19vbmVfbGluZSBzdHJcbiAgICB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY19zdHIgc3RyKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGluZGV4ID1cbiAgICAgICAgbGV0IG5leHRfbmV3bGluZSA9IGluZGV4X29mX25ld2xpbmUgc3RyIGluZGV4IGluXG4gICAgICAgIGxldCBuZXh0X2xpbmUgPSBnZXRfc3Vic3RyaW5nIHN0ciBpbmRleCBuZXh0X25ld2xpbmUgaW5cbiAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjYXBlZCBuZXh0X2xpbmUpO1xuICAgICAgICBtYXRjaCBuZXh0X25ld2xpbmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG5ld2xpbmVfaW5kZXggLT5cbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXFwiO1xuICAgICAgICAgIHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpO1xuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcblwiO1xuICAgICAgICAgIGxvb3AgKG5ld2xpbmVfaW5kZXggKyAxKVxuICAgICAgaW5cbiAgICAgIHBwX29wZW5fYm94IHBwZiAwO1xuICAgICAgKCogdGhlIGxlYWRpbmcgc3BhY2UgaXMgdG8gbGluZSB1cCB0aGUgbGluZXMgKilcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXFxcIlwiO1xuICAgICAgbG9vcCAwO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXCJcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKCkpXG4gIDs7XG5cbiAgbGV0IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgPSBpZiBtdXN0X2VzY2FwZSBzdHIgdGhlbiBlc2Nfc3RyIHN0ciBlbHNlIHN0clxuXG4gICgqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZvcm1hdHRlcnMgKilcblxuICBsZXQgcmVjIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBwcF9odW1fbWF5YmVfZXNjX3N0ciBwcGYgc3RyXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9vcGVuX2JveCBwcGYgaW5kZW50O1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBMaXN0IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiXG5cbiAgYW5kIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBwcF9wcmludF9zcGFjZSBwcGYgKCk7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIDs7XG5cbiAgbGV0IHJlYyBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPlxuICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIHBwX3ByaW50X3N0cmluZyBwcGYgXCIgXCI7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIHN0cic7XG4gICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHQ7XG4gICAgICBmYWxzZVxuICAgIHwgTGlzdCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCI7XG4gICAgICBmYWxzZVxuXG4gIGFuZCBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0XG4gICAgfCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiXG4gIDs7XG5cbiAgbGV0IHBwX2h1bSBwcGYgc2V4cCA9IHBwX2h1bV9pbmRlbnQgIWRlZmF1bHRfaW5kZW50IHBwZiBzZXhwXG4gIGxldCBwcF9tYWNoIHBwZiBzZXhwID0gaWdub3JlIChwcF9tYWNoX2ludGVybmFsIGZhbHNlIHBwZiBzZXhwKVxuICBsZXQgcHAgPSBwcF9tYWNoXG5cbiAgKCogU2V4cCBzaXplICopXG5cbiAgbGV0IHJlYyBzaXplX2xvb3AgKCh2LCBjKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHYgKyAxLCBjICsgU3RyaW5nLmxlbmd0aCBzdHJcbiAgICB8IExpc3QgbHN0IC0+IExpc3QuZm9sZF9sZWZ0IGxzdCB+aW5pdDphY2MgfmY6c2l6ZV9sb29wXG4gIDs7XG5cbiAgbGV0IHNpemUgc2V4cCA9IHNpemVfbG9vcCAoMCwgMCkgc2V4cFxuXG4gICgqIEJ1ZmZlciBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19idWZmZXJfaHVtIH5idWYgPyhpbmRlbnQgPSAhZGVmYXVsdF9pbmRlbnQpIHNleHAgPVxuICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIlYUA/XCIgKHBwX2h1bV9pbmRlbnQgaW5kZW50KSBzZXhwXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlcl9tYWNoIH5idWYgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgbGV0IHRvX2J1ZmZlciA9IHRvX2J1ZmZlcl9tYWNoXG5cbiAgbGV0IHRvX2J1ZmZlcl9nZW4gfmJ1ZiB+YWRkX2NoYXIgfmFkZF9zdHJpbmcgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgICAgbGV0IHN0cicgPSBtYWNoX21heWJlX2VzY19zdHIgc3RyIGluXG4gICAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBhZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJygnO1xuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIGZhbHNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHQ7XG4gICAgICAgIGZhbHNlXG4gICAgICB8IExpc3QgW10gLT5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IGFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gICgqIFRoZSBtYXhpbXVtIHNpemUgb2YgYSB0aGluZyBvbiB0aGUgbWlub3IgaGVhcCBpcyAyNTYgd29yZHMuXG4gICAgIFByZXZpb3VzbHksIHRoaXMgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYnVmZmVyIGhlcmUgd2FzIDQwOTYgYnl0ZXMsIHdoaWNoXG4gICAgIGNhdXNlZCB0aGUgQnVmZmVyIHRvIGJlIGFsbG9jYXRlZCBvbiB0aGUgKm1ham9yKiBoZWFwIGV2ZXJ5IHRpbWUuXG5cbiAgICAgQWNjb3JkaW5nIHRvIGEgc2ltcGxlIGJlbmNobWFyayBieSBSb24sIHdlIGNhbiBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvclxuICAgICBzbWFsbCBzLWV4cHJlc3Npb25zIGJ5IGEgZmFjdG9yIG9mIH40IGlmIHdlIG9ubHkgYWxsb2NhdGUgMTAyNCBieXRlc1xuICAgICAoMTI4IHdvcmRzICsgc29tZSBzbWFsbCBvdmVyaGVhZCkgd29ydGggb2YgYnVmZmVyIGluaXRpYWxseS4gIEFuZCBvbmVcbiAgICAgY2FuIGFyZ3VlIHRoYXQgaWYgaXQncyBmcmVlIHRvIGFsbG9jYXRlIHN0cmluZ3Mgc21hbGxlciB0aGFuIDI1NiB3b3JkcyxcbiAgICAgbGFyZ2Ugcy1leHByZXNzaW9ucyByZXF1aXJpbmcgbGFyZ2VyIGV4cGVuc2l2ZSBidWZmZXJzIHdvbid0IG5vdGljZVxuICAgICB0aGUgZXh0cmEgdHdvIGRvdWJsaW5ncyBmcm9tIDEwMjQgYnl0ZXMgdG8gMjA0OCBhbmQgNDA5Ni4gQW5kIGVzcGVjaWFsbHlcbiAgICAgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFwcGxpY2F0aW9ucyB0byBhbHdheXMgcGFzcyBpbiBhIGxhcmdlciBidWZmZXIgdG9cbiAgICAgdXNlLiAqKVxuICBsZXQgYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSAxMDI0XG5cbiAgKCogU3RyaW5nIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX3N0cmluZ19odW0gP2luZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0clxuICAgICAgd2hlbiBtYXRjaCBpbmRleF9vZl9uZXdsaW5lIHN0ciAwIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIF8gLT4gZmFsc2UgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX2h1bSA/aW5kZW50IHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX21hY2ggPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gbWFjaF9tYXliZV9lc2Nfc3RyIHN0clxuICAgIHwgc2V4cCAtPlxuICAgICAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICAgICAgdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfbWFjaFxuZW5kXG5cbmluY2x1ZGUgUHJpbnRpbmdcblxubGV0IG9mX2Zsb2F0X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5sZXQgb2ZfaW50X3N0eWxlIDogWyBgVW5kZXJzY29yZXMgfCBgTm9fdW5kZXJzY29yZXMgXSByZWYgPSByZWYgYE5vX3VuZGVyc2NvcmVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUHJpbnRpbmdcbmVuZFxuXG5sZXQgbWVzc2FnZSBuYW1lIGZpZWxkcyA9XG4gIGxldCByZWMgY29udl9maWVsZHMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IChmbmFtZSwgZnNleHApIDo6IHJlc3QgLT5cbiAgICAgIChtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgfCBcIlwiIC0+IGZzZXhwIDo6IGNvbnZfZmllbGRzIHJlc3RcbiAgICAgICB8IF8gLT4gTGlzdCBbIEF0b20gZm5hbWU7IGZzZXhwIF0gOjogY29udl9maWVsZHMgcmVzdClcbiAgaW5cbiAgTGlzdCAoQXRvbSBuYW1lIDo6IGNvbnZfZmllbGRzIGZpZWxkcylcbjs7XG4iLCIoKiogUmVwcmVzZW50YXRpb24gb2YgUy1leHByZXNzaW9uIGdyYW1tYXJzICopXG5cbigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgcmVwcmVzZW50YXRpb24gZm9yIHMtZXhwcmVzc2lvbiBncmFtbWFycy4gVXNpbmcgcHB4X3NleHBfY29udlxuICAgIGFuZCBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gcHJvZHVjZXMgYSBncmFtbWFyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXJpdmVkXG4gICAgW29mX3NleHBdIGZvciBhIGdpdmVuIHR5cGUuXG5cbiAgICBBcyB3aXRoIG90aGVyIGRlcml2ZWQgZGVmaW5pdGlvbnMsIHBvbHltb3JwaGljIHR5cGVzIGRlcml2ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYVxuICAgIGdyYW1tYXIgZm9yIGVhY2ggdHlwZSBhcmd1bWVudCBhbmQgcHJvZHVjZXMgYSBncmFtbWFyIGZvciB0aGUgbW9ub21vcnBoaXplZCB0eXBlLlxuXG4gICAgTW9ub21vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZ3JhbW1hciBkaXJlY3RseS4gVG8gYXZvaWQgdG9wLWxldmVsIHNpZGUgZWZmZWN0cyxcbiAgICBbW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXV0gd3JhcHMgZ3JhbW1hcnMgaW4gdGhlIFtMYXp5XSBjb25zdHJ1Y3RvciBhcyBuZWVkZWQuXG5cbiAgICBUaGlzIHR5cGUgbWF5IGNoYW5nZSBvdmVyIHRpbWUgYXMgb3VyIG5lZWRzIGZvciBleHByZXNzaXZlIGdyYW1tYXJzIGNoYW5nZS4gV2Ugd2lsbFxuICAgIGF0dGVtcHQgdG8gbWFrZSBjaGFuZ2VzIGJhY2t3YXJkLWNvbXBhdGlibGUsIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSByZWFzb25hYmxlIHVwZ3JhZGVcbiAgICBwYXRoLiAqKVxuXG5bQEBAd2FybmluZyBcIi0zMFwiXSAoKiBhbGxvdyBkdXBsaWNhdGUgZmllbGQgbmFtZXMgKilcblxuKCoqIEdyYW1tYXIgb2YgYSBzZXhwLiAqKVxudHlwZSBncmFtbWFyID1cbiAgfCBBbnkgb2Ygc3RyaW5nICgqKiBhY2NlcHRzIGFueSBzZXhwOyBzdHJpbmcgaXMgYSB0eXBlIG5hbWUgZm9yIGh1bWFuIHJlYWRhYmlsaXR5ICopXG4gIHwgQm9vbCAoKiogYWNjZXB0cyB0aGUgYXRvbXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiLCBtb2R1bG8gY2FwaXRhbGl6YXRpb24gKilcbiAgfCBDaGFyICgqKiBhY2NlcHRzIGFueSBzaW5nbGUtY2hhcmFjdGVyIGF0b20gKilcbiAgfCBJbnRlZ2VyICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGludGVnZXIgc3ludGF4LCByZWdhcmRsZXNzIG9mIGJpdCB3aWR0aCAqKVxuICB8IEZsb2F0ICgqKiBhY2NlcHRzIGFueSBhdG9tIG1hdGNoaW5nIG9jYW1sIGZsb2F0IHN5bnRheCAqKVxuICB8IFN0cmluZyAoKiogYWNjZXB0cyBhbnkgYXRvbSAqKVxuICB8IE9wdGlvbiBvZiBncmFtbWFyICgqKiBhY2NlcHRzIGFuIG9wdGlvbiwgYm90aCBbTm9uZV0gdnMgW1NvbWUgX10gYW5kIFsoKV0gdnMgWyhfKV0uICopXG4gIHwgTGlzdCBvZiBsaXN0X2dyYW1tYXIgKCoqIGFjY2VwdHMgYSBsaXN0ICopXG4gIHwgVmFyaWFudCBvZiB2YXJpYW50ICgqKiBhY2NlcHRzIGNsYXVzZXMga2V5ZWQgYnkgYSBsZWFkaW5nIG9yIHNvbGUgYXRvbSAqKVxuICB8IFVuaW9uIG9mIGdyYW1tYXIgbGlzdCAoKiogYWNjZXB0cyBhIHNleHAgaWYgYW55IG9mIHRoZSBsaXN0ZWQgZ3JhbW1hcnMgYWNjZXB0cyBpdCAqKVxuICB8IFRhZ2dlZCBvZiBncmFtbWFyIHdpdGhfdGFnXG4gICgqKiBhbm5vdGF0ZXMgYSBncmFtbWFyIHdpdGggYSBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIgKilcbiAgfCBUeXZhciBvZiBzdHJpbmdcbiAgKCoqIE5hbWUgb2YgYSB0eXBlIHZhcmlhYmxlLCBlLmcuIFtUeXZhciBcImFcIl0gZm9yIFsnYV0uIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHRoZSBib2R5IG9mXG4gICAgICB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbZGVmbl0gZGVmaW5lcyBhIGNvcnJlc3BvbmRpbmcgdHlwZSB2YXJpYWJsZS4gKilcbiAgfCBUeWNvbiBvZiBzdHJpbmcgKiBncmFtbWFyIGxpc3QgKiBkZWZuIGxpc3RcbiAgKCoqIFR5cGUgY29uc3RydWN0b3IgYXBwbGllZCB0byBhcmd1bWVudHMsIGFuZCBpdHMgZGVmaW5pdGlvbi5cblxuICAgICAgRm9yIGV4YW1wbGUsIHdyaXRpbmcgW1R5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0sIGRlZm5zKV0gcmVwcmVzZW50cyBbaW50IHRyZWVdLCBmb3JcbiAgICAgIHdoYXRldmVyIFt0cmVlXSBpcyBkZWZpbmVkIGFzIGluIFtkZWZuc10uIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBbdHJlZV0gYXMgYSBiaW5hcnlcbiAgICAgIHRyZWUgd2l0aCB0aGUgcGFyYW1ldGVyIHR5cGUgc3RvcmVkIGF0IHRoZSBsZWF2ZXMuXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBkZWZucyA9XG4gICAgICAgICAgWyB7IHR5Y29uID0gXCJ0cmVlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFJlY3Vyc2l2ZSAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiTGVhZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChSZWN1cnNpdmUgKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibm9kZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IExpc3QgKE1hbnkgKFJlY3Vyc2l2ZSBcInRyZWVcIiwgW1R5dmFyIFwiYVwiXSkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJsZWFmXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gW1R5dmFyIFwiYVwiXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgOztcbiAgICAgIF19XG5cbiAgICAgIFRvIGlsbHVzdHJhdGUgdGhlIG1lYW5pbmcgb2YgW1R5Y29uXSB3aXRoIHJlc3BlY3QgdG8gW2RlZm5zXSwgYW5kIHRvIGRlbW9uc3RyYXRlIG9uZVxuICAgICAgd2F5IHRvIGFjY2VzcyB0aGVtLCBpdCBpcyBlcXVpdmFsZW50IHRvIGV4cGFuZCB0aGUgZGVmaW5pdGlvbiBvZiBcInRyZWVcIiBvbmUgbGV2ZWxcbiAgICAgIGFuZCBtb3ZlIHRoZSBbZGVmbnNdIHRvIGVuY2xvc2VkIHJlY3Vyc2l2ZSByZWZlcmVuY2VzOlxuXG4gICAgICB7W1xuICAgICAgICBUeWNvbiAoXCJ0cmVlXCIsIFsgSW50ZWdlciBdLCBkZWZucylcbiAgICAgICAgLS0+XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IG5hbWVfa2luZCA9IENhcGl0YWxpemVkXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSwgZGVmbnMpLCBFbXB0eSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJMZWFmXCJcbiAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0sIGRlZm5zKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgXX1cblxuICAgICAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBleHBvc2VzIHRoZSBzdHJ1Y3R1cmUgb2YgYSBncmFtbWFyIHdpdGggcmVjdXJzaXZlIHJlZmVyZW5jZXMsXG4gICAgICB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBtZWFuaW5nIG9mIHJlY3Vyc2l2ZWx5LWRlZmluZWQgZWxlbWVudHMuICopXG4gIHwgUmVjdXJzaXZlIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cy4gVXNlZCB0byBkZW5vdGUgcmVjdXJzaXZlIHR5cGUgcmVmZXJlbmNlcy5cbiAgICAgIE9ubHkgbWVhbmluZ2Z1bCB3aGVuIHVzZWQgaW5zaWRlIHRoZSBbZGVmbl1zIG9mIGEgW1R5Y29uXSBncmFtbWFyLCB0byByZWZlciB0byBhXG4gICAgICB0eXBlIGNvbnN0cnVjdG9yIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBbZGVmbl0gbGlzdC4gKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG5sZXQgdGFnICh0eXBlIGEpICh7IHVudHlwZWQgPSBncmFtbWFyIH0gOiBhIHQpIH5rZXkgfnZhbHVlIDogYSB0ID1cbiAgeyB1bnR5cGVkID0gVGFnZ2VkIHsga2V5OyB2YWx1ZTsgZ3JhbW1hciB9IH1cbjs7XG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpcyB1c2VkIGZvciBhbGwgdGFncyBnZW5lcmF0ZWQgZnJvbSBkb2MgY29tbWVudHMuICopXG5sZXQgZG9jX2NvbW1lbnRfdGFnID0gXCJzZXhwX2dyYW1tYXIuZG9jX2NvbW1lbnRcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgY2FuIGJlIHVzZWQgdG8gYXNzb2NpYXRlIGEgdHlwZSBuYW1lIHdpdGggYSBncmFtbWFyLiAqKVxubGV0IHR5cGVfbmFtZV90YWcgPSBcInNleHBfZ3JhbW1hci50eXBlX25hbWVcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIHJlcHJlc2VudHMgYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZSB0YWcnc1xuICAgIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2NcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEga2V5IGluIGEga2V5L3ZhbHVlIGFzc29jaWF0aW9uLiBUaGUgdGFnJ3NcbiAgICB2YWx1ZSBpcyBpZ25vcmVkLiAqKVxubGV0IGFzc29jX2tleV90YWcgPSBcInNleHBfZ3JhbW1hci5hc3NvYy5rZXlcIlxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaW5kaWNhdGVzIHRoYXQgYSBzZXhwIGlzIGEgdmFsdWUgaW4gYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZVxuICAgIHRhZydzIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2NfdmFsdWVfdGFnID0gXCJzZXhwX2dyYW1tYXIuYXNzb2MudmFsdWVcIlxuXG4oKiogV2hlbiB0aGUga2V5IGlzIHNldCB0byBbQXRvbSBcImZhbHNlXCJdIGZvciBhIHZhcmlhbnQgY2xhdXNlLCB0aGF0IGNsYXVzZSBzaG91bGQgbm90IGJlXG4gICAgc3VnZ2VzdGVkIGluIGF1dG8tY29tcGxldGlvbiBiYXNlZCBvbiB0aGUgc2V4cCBncmFtbWFyLiAqKVxubGV0IGNvbXBsZXRpb25fc3VnZ2VzdGVkID0gXCJzZXhwX2dyYW1tYXIuY29tcGxldGlvbi1zdWdnZXN0ZWRcIlxuIiwib3BlbiBTdGRMYWJlbHNcblxubGV0IHNleHBfZ3JhbW1hcl93aXRoX3RhZ3MgZ3JhbW1hciB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OmdyYW1tYXIgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWdnZWQgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgc2V4cF9ncmFtbWFyX3dpdGhfdGFnX2xpc3QgeCB+dGFncyA9XG4gIExpc3QuZm9sZF9yaWdodCB0YWdzIH5pbml0OnggfmY6KGZ1biAoa2V5LCB2YWx1ZSkgZ3JhbW1hciAtPlxuICAgIFNleHBfZ3JhbW1hci5UYWcgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0pXG47O1xuXG5sZXQgdW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCBFbXB0eSB9XG5sZXQgYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQm9vbCB9XG5sZXQgc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBTdHJpbmcgfVxubGV0IGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IENoYXIgfVxubGV0IGludF9zZXhwX2dyYW1tYXIgOiBpbnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBmbG9hdF9zZXhwX2dyYW1tYXIgOiBmbG9hdCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEZsb2F0IH1cbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgOiBpbnQzMiBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgbmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IHNleHBfdF9zZXhwX2dyYW1tYXIgOiBTZXhwLnQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBBbnkgXCJTZXhwLnRcIiB9XG5sZXQgcmVmX3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cF9ncmFtbWFyLmNvZXJjZSBncmFtbWFyXG5cbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyICh7IHVudHlwZWQgfSA6IF8gU2V4cF9ncmFtbWFyLnQpIDogXyBvcHRpb24gU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBPcHRpb24gdW50eXBlZCB9XG47O1xuXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGxpc3QgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIGFycmF5IFNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoTWFueSB1bnR5cGVkKSB9XG47O1xuXG5sZXQgZW1wdHlfc2V4cF9ncmFtbWFyIDogXyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbmxldCBvcGFxdWVfc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG5sZXQgZnVuX3NleHBfZ3JhbW1hciA9IGVtcHR5X3NleHBfZ3JhbW1hclxuIiwiKCogVXRpbGl0eSBNb2R1bGUgZm9yIFMtZXhwcmVzc2lvbiBDb252ZXJzaW9ucyAqKVxuXG5vcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwXG5cbigqIENvbnZlcnNpb24gb2YgT0NhbWwtdmFsdWVzIHRvIFMtZXhwcmVzc2lvbnMgKilcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxuKCogJyUuMTdnJyBpcyBndWFyYW50ZWVkIHRvIGJlIHJvdW5kLXRyaXBwYWJsZS5cblxuICAgJyUuMTVnJyB3aWxsIGJlIHJvdW5kLXRyaXBwYWJsZSBhbmQgbm90IGhhdmUgbm9pc2UgYXQgdGhlIGxhc3QgZGlnaXQgb3IgdHdvIGZvciBhIGZsb2F0XG4gICB3aGljaCB3YXMgY29udmVydGVkIGZyb20gYSBkZWNpbWFsIChzdHJpbmcpIHdpdGggPD0gMTUgc2lnbmlmaWNhbnQgZGlnaXRzLiAgU28gaXQnc1xuICAgd29ydGggdHJ5aW5nIGZpcnN0IHRvIGF2b2lkIHRoaW5ncyBsaWtlIFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIuXG5cbiAgIFNlZSBjb21tZW50IGFib3ZlIFt0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlXSBpbiB7IUNvcmUuRmxvYXR9IGZvclxuICAgZGV0YWlsZWQgZXhwbGFuYXRpb24gYW5kIGV4YW1wbGVzLiAqKVxubGV0IGRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0ID1cbiAgcmVmIChmdW4geCAtPlxuICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeClcbjs7XG5cbmxldCByZWFkX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCB3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCA9IHJlZiB0cnVlXG5sZXQgbGlzdF9tYXAgZiBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBsIH5mKVxubGV0IHNleHBfb2ZfdW5pdCAoKSA9IExpc3QgW11cbmxldCBzZXhwX29mX2Jvb2wgYiA9IEF0b20gKHN0cmluZ19vZl9ib29sIGIpXG5sZXQgc2V4cF9vZl9zdHJpbmcgc3RyID0gQXRvbSBzdHJcbmxldCBzZXhwX29mX2J5dGVzIGJ5dGVzID0gQXRvbSAoQnl0ZXMudG9fc3RyaW5nIGJ5dGVzKVxubGV0IHNleHBfb2ZfY2hhciBjID0gQXRvbSAoU3RyaW5nLm1ha2UgMSBjKVxubGV0IHNleHBfb2ZfaW50IG4gPSBBdG9tIChzdHJpbmdfb2ZfaW50IG4pXG5sZXQgc2V4cF9vZl9mbG9hdCBuID0gQXRvbSAoIWRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IG4pXG5sZXQgc2V4cF9vZl9pbnQzMiBuID0gQXRvbSAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9pbnQ2NCBuID0gQXRvbSAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgc2V4cF9vZl9uYXRpdmVpbnQgbiA9IEF0b20gKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX3JlZiBzZXhwX29mX19hIHJmID0gc2V4cF9vZl9fYSAhcmZcbmxldCBzZXhwX29mX2xhenlfdCBzZXhwX29mX19hIGx2ID0gc2V4cF9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFsgc2V4cF9vZl9fYSB4IF1cbiAgfCBTb21lIHggLT4gTGlzdCBbIEF0b20gXCJzb21lXCI7IHNleHBfb2ZfX2EgeCBdXG4gIHwgTm9uZSB3aGVuICF3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCAtPiBMaXN0IFtdXG4gIHwgTm9uZSAtPiBBdG9tIFwibm9uZVwiXG47O1xuXG5sZXQgc2V4cF9vZl9wYWlyIHNleHBfb2ZfX2Egc2V4cF9vZl9fYiAoYSwgYikgPSBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGIgXVxuXG5sZXQgc2V4cF9vZl90cmlwbGUgc2V4cF9vZl9fYSBzZXhwX29mX19iIHNleHBfb2ZfX2MgKGEsIGIsIGMpID1cbiAgTGlzdCBbIHNleHBfb2ZfX2EgYTsgc2V4cF9vZl9fYiBiOyBzZXhwX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHNleHBfb2ZfbGlzdCBzZXhwX29mX19hIGxzdCA9IExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgbHN0IH5mOnNleHBfb2ZfX2EpKVxuXG5sZXQgc2V4cF9vZl9hcnJheSBzZXhwX29mX19hIGFyID1cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBBcnJheS5sZW5ndGggYXIgLSAxIGRvd250byAwIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9oYXNodGJsIHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsIGh0YmwgPVxuICBsZXQgY29sbCB+a2V5OmsgfmRhdGE6diBhY2MgPSBMaXN0IFsgc2V4cF9vZl9rZXkgazsgc2V4cF9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBMaXN0IChIYXNodGJsLmZvbGQgaHRibCB+aW5pdDpbXSB+Zjpjb2xsKVxuOztcblxubGV0IHNleHBfb2Zfb3BhcXVlIF8gPSBBdG9tIFwiPG9wYXF1ZT5cIlxubGV0IHNleHBfb2ZfZnVuIF8gPSBBdG9tIFwiPGZ1bj5cIlxuXG4oKiBFeGNlcHRpb24gY29udmVydGVyIHJlZ2lzdHJhdGlvbiBhbmQgbG9va3VwICopXG5cbm1vZHVsZSBFeG5fY29udmVydGVyID0gc3RydWN0XG4gICgqIFRoZXNlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IGNvbnRleHQtc3dpdGNoZXNcbiAgICAgY2Fubm90IGhhcHBlbiB1bmxlc3MgdGhlcmUgaXMgYW4gYWxsb2NhdGlvbi4gIEl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0XG4gICAgIHRoYXQgdGhpcyB3aWxsIHJlbWFpbiB0cnVlIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLiAgVGhhdCB3YXkgd2VcbiAgICAgYXZvaWQgdXNpbmcgbXV0ZXhlcyBhbmQgdGh1cyBhIGRlcGVuZGVuY3kgb24gdGhlIHRocmVhZHMgbGlicmFyeS4gKilcblxuICAoKiBGYXN0IGFuZCBhdXRvbWF0aWMgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiAqKVxuXG4gIG1vZHVsZSBSZWdpc3RyYXRpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzZXhwX29mX2V4biA6IGV4biAtPiBTZXhwLnRcbiAgICAgIDsgKCogSWYgW3ByaW50ZXhjID0gdHJ1ZV0gdGhlbiB0aGlzIHNleHAgY29udmVydGVyIGlzIHVzZWQgZm9yIFByaW50ZXhjLnRvX3N0cmluZyAqKVxuICAgICAgICBwcmludGV4YyA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEV4bl90YWJsZSA9IEVwaGVtZXJvbi5LMS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuXG4gICAgICBsZXQgZXF1YWwgPSAoID09IClcbiAgICAgIGxldCBoYXNoID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgIGVuZClcblxuICBsZXQgdGhlX2V4bl90YWJsZSA6IFJlZ2lzdHJhdGlvbi50IEV4bl90YWJsZS50ID0gRXhuX3RhYmxlLmNyZWF0ZSAxN1xuXG4gICgqIEVwaGVtZXJvbnMgYXJlIHVzZWQgc28gdGhhdCBbc2V4cF9vZl9leG5dIGNsb3N1cmUgZG9uJ3Qga2VlcCB0aGVcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpdmUuICopXG4gIGxldCBhZGQgPyhwcmludGV4YyA9IHRydWUpID9maW5hbGlzZTpfIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBzZXhwX29mX2V4biA9XG4gICAgRXhuX3RhYmxlLmFkZCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9XG4gIDs7XG5cbiAgbGV0IGZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjIGV4biA9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4biBpblxuICAgIG1hdGNoIEV4bl90YWJsZS5maW5kX29wdCB0aGVfZXhuX3RhYmxlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeyBzZXhwX29mX2V4bjsgcHJpbnRleGMgfSAtPlxuICAgICAgKG1hdGNoIGZvcl9wcmludGV4YywgcHJpbnRleGMgd2l0aFxuICAgICAgIHwgZmFsc2UsIF8gfCBfLCB0cnVlIC0+IFNvbWUgKHNleHBfb2ZfZXhuIGV4bilcbiAgICAgICB8IHRydWUsIGZhbHNlIC0+IE5vbmUpXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl91bml0X3Rlc3RzX29ubHkgPSBzdHJ1Y3RcbiAgICBsZXQgc2l6ZSAoKSA9IChFeG5fdGFibGUuc3RhdHNfYWxpdmUgdGhlX2V4bl90YWJsZSkubnVtX2JpbmRpbmdzXG4gIGVuZFxuZW5kXG5cbmxldCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biA9IEV4bl9jb252ZXJ0ZXIuZmluZF9hdXRvIH5mb3JfcHJpbnRleGM6dHJ1ZSBleG5cbmxldCBzZXhwX29mX2V4bl9vcHQgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4YzpmYWxzZSBleG5cblxubGV0IHNleHBfb2ZfZXhuIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gTGlzdCBbIEF0b20gKFByaW50ZXhjLnRvX3N0cmluZyBleG4pIF1cbiAgfCBTb21lIHNleHAgLT4gc2V4cFxuOztcblxubGV0IGV4bl90b19zdHJpbmcgZSA9IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSlcblxuKCoge1tleGNlcHRpb24gQmxhaCBbQEBkZXJpdmluZyBzZXhwXV19IGdlbmVyYXRlcyBhIGNhbGwgdG8gdGhlIGZ1bmN0aW9uXG4gICBbRXhuX2NvbnZlcnRlci5hZGRdIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAgU28gd2UgYXJlIGd1YXJhbnRlZCB0aGF0IGFzIHNvb24gYXMgd2VcbiAgIG1hcmsgYW4gZXhjZXB0aW9uIGFzIHNleHBhYmxlLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxpbmtlZCBpbiBhbmQgdGhpcyBwcmludGVyIHdpbGwgYmVcbiAgIHJlZ2lzdGVyZWQsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4gKilcbmxldCAoKSA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBleG4gLT5cbiAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHRfZm9yX3ByaW50ZXhjIGV4biB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgc2V4cCAtPiBTb21lIChTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHApKVxuOztcblxubGV0IHByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biA9XG4gIG1hdGNoIHNleHBfb2ZfZXhuX29wdCBleG4gd2l0aFxuICB8IE5vbmUgLT4gUHJpbnRleGMudG9fc3RyaW5nIGV4blxuICB8IFNvbWUgc2V4cCAtPiBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIHNleHBcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgUy1leHByZXNzaW9ucyB0byBPQ2FtbC12YWx1ZXMgKilcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBTZXhwLk9mX3NleHBfZXJyb3JcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4YyBzZXhwID0gcmFpc2UgKE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkpXG5sZXQgb2Zfc2V4cF9lcnJvciB3aGF0IHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcblxubGV0IHVuaXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbXSAtPiAoKVxuICB8IEF0b20gXyB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwidW5pdF9vZl9zZXhwOiBlbXB0eSBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBib29sX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gKFwidHJ1ZVwiIHwgXCJUcnVlXCIpIC0+IHRydWVcbiAgfCBBdG9tIChcImZhbHNlXCIgfCBcIkZhbHNlXCIpIC0+IGZhbHNlXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IHVua25vd24gc3RyaW5nXCIgc2V4cFxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYm9vbF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYnl0ZXNfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT4gQnl0ZXMub2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYnl0ZXNfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY2hhcl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGlmIFN0cmluZy5sZW5ndGggc3RyIDw+IDFcbiAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJjaGFyX29mX3NleHA6IGF0b20gc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiBzZXhwO1xuICAgIHN0ci5bMF1cbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBpbnRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGZsb2F0X29mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImZsb2F0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnQzMl9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgSW50MzIub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiaW50MzJfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludDMyX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDY0X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQ2NC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQ2NF9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50NjRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBOYXRpdmVpbnQub2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwibmF0aXZlaW50X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJuYXRpdmVpbnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgcmVmX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gcmVmIChhX19vZl9zZXhwIHNleHApXG5sZXQgbGF6eV90X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2Zfc2V4cCBzZXhwKVxuXG5sZXQgb3B0aW9uX29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgaWYgIXJlYWRfb2xkX29wdGlvbl9mb3JtYXRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFtdIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIGVsIF0gfCBMaXN0IFsgQXRvbSAoXCJzb21lXCIgfCBcIlNvbWVcIik7IGVsIF0gLT4gU29tZSAoYV9fb2Zfc2V4cCBlbClcbiAgICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IGxpc3QgbXVzdCByZXByZXNlbnQgb3B0aW9uYWwgdmFsdWVcIiBzZXhwXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwKVxuICBlbHNlIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEF0b20gKFwibm9uZVwiIHwgXCJOb25lXCIpIC0+IE5vbmVcbiAgICB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogb25seSBub25lIGNhbiBiZSBhdG9tXCIgc2V4cFxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IGJlIChzb21lIGVsKVwiIHNleHApXG47O1xuXG5sZXQgcGFpcl9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3NleHAgYV9zZXhwIGluXG4gICAgbGV0IGIgPSBiX19vZl9zZXhwIGJfc2V4cCBpblxuICAgIGEsIGJcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG11c3QgY29udGFpbiBleGFjdGx5IHR3byBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwicGFpcl9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCB0cmlwbGVfb2Zfc2V4cCBhX19vZl9zZXhwIGJfX29mX3NleHAgY19fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBbIGFfc2V4cDsgYl9zZXhwOyBjX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgbGV0IGMgPSBjX19vZl9zZXhwIGNfc2V4cCBpblxuICAgIGEsIGIsIGNcbiAgfCBMaXN0IF8gLT5cbiAgICBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMgb25seVwiIHNleHBcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcInRyaXBsZV9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBsaXN0X29mX3NleHAgYV9fb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgcmV2X2xzdCA9IExpc3QucmV2X21hcCBsc3QgfmY6YV9fb2Zfc2V4cCBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImxpc3Rfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgYXJyYXlfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IFt8fF1cbiAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl9zZXhwIGgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy4oaSkgPC0gYV9fb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImFycmF5X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGhhc2h0Ymxfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWxfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgTGlzdCBbIGtfc2V4cDsgdl9zZXhwIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2Zfc2V4cCBrX3NleHApIH5kYXRhOih2YWxfb2Zfc2V4cCB2X3NleHApXG4gICAgICB8IExpc3QgXyB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHNleHBcbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImhhc2h0Ymxfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgb3BhcXVlX29mX3NleHAgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgXCJvcGFxdWVfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHNleHBcbjs7XG5cbmxldCBmdW5fb2Zfc2V4cCBzZXhwID0gb2Zfc2V4cF9lcnJvciBcImZ1bl9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiBzZXhwXG5cbigqIFNleHAgR3JhbW1hcnMgKilcblxuaW5jbHVkZSBTZXhwX2NvbnZfZ3JhbW1hclxuXG4oKiBSZWdpc3RlcmluZyBkZWZhdWx0IGV4Y2VwdGlvbiBwcmludGVycyAqKVxuXG5sZXQgZ2V0X2ZsY19lcnJvciBuYW1lIChmaWxlLCBsaW5lLCBjaHIpID0gQXRvbSAoc3ByaW50ZiBcIiVzICVzOiVkOiVkXCIgbmFtZSBmaWxlIGxpbmUgY2hyKVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXJcbiAgICB+ZjooZnVuIChleHRlbnNpb25fY29uc3RydWN0b3IsIGhhbmRsZXIpIC0+XG4gICAgICBFeG5fY29udmVydGVyLmFkZCB+cHJpbnRleGM6ZmFsc2UgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBc3NlcnRfZmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBc3NlcnRfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIkFzc2VydF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeGl0XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEV4aXQgLT4gQXRvbSBcIkV4aXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRW5kX29mX2ZpbGVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRW5kX29mX2ZpbGUgLT4gQXRvbSBcIkVuZF9vZl9maWxlXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJGYWlsdXJlXCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmQgLT4gQXRvbSBcIk5vdF9mb3VuZFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBJbnZhbGlkX2FyZ3VtZW50XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYXJnIC0+IExpc3QgWyBBdG9tIFwiSW52YWxpZF9hcmd1bWVudFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXRjaF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE1hdGNoX2ZhaWx1cmUgYXJnIC0+IGdldF9mbGNfZXJyb3IgXCJNYXRjaF9mYWlsdXJlXCIgYXJnXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBOb3RfZm91bmRfc11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBOb3RfZm91bmRfcyBhcmcgLT4gTGlzdCBbIEF0b20gXCJOb3RfZm91bmRfc1wiOyBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5c19lcnJvciBhcmcgLT4gTGlzdCBbIEF0b20gXCJTeXNfZXJyb3JcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkhlbHBdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgQXJnLkhlbHAgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkhlbHBcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgQXJnLkJhZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuQmFkIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkFyZy5CYWRcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTGF6eS5VbmRlZmluZWRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTGF6eS5VbmRlZmluZWQgLT4gQXRvbSBcIkxhenkuVW5kZWZpbmVkXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNpbmcuUGFyc2VfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgUGFyc2luZy5QYXJzZV9lcnJvciAtPiBBdG9tIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBRdWV1ZS5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBRdWV1ZS5FbXB0eSAtPiBBdG9tIFwiUXVldWUuRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2NhbmYuU2Nhbl9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFNjYW5mLlNjYW5fZmFpbHVyZSBhcmcgLT4gTGlzdCBbIEF0b20gXCJTY2FuZi5TY2FuX2ZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3RhY2suRW1wdHldXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3RhY2suRW1wdHkgLT4gQXRvbSBcIlN0YWNrLkVtcHR5XCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFN5cy5CcmVha11cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTeXMuQnJlYWsgLT4gQXRvbSBcIlN5cy5CcmVha1wiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4Yzp0cnVlIH5maW5hbGlzZTpmYWxzZSBleHRlbnNpb25fY29uc3RydWN0b3IgaGFuZGxlcilcbiAgICBbICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHNleHApIC0+XG4gICAgICAgICAgTGlzdCBbIEF0b20gXCJTZXhwbGliLkNvbnYuT2Zfc2V4cF9lcnJvclwiOyBzZXhwX29mX2V4biBleGM7IHNleHAgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICBdXG47O1xuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBTLWV4cHJlc3Npb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIFByaW50Zlxub3BlbiBTZXhwX2NvbnZcblxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IHN0YWdfaW5jb3JyZWN0X25fYXJncyBsb2MgdGFnIHNleHAgPVxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6IHN1bSB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCIgbG9jIHRhZyBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhIG5lc3RlZCBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHNleHBcbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcmVjb3JkcyAqKVxuXG5sZXQgcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2MgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogYSBbc2V4cC5ib29sXSBmaWVsZCB3YXMgZ2l2ZW4gYSBwYXlsb2FkLlwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogcmVjb3JkIGNvbnZlcnNpb246IG9ubHkgcGFpcnMgZXhwZWN0ZWQsIHRoZWlyIGZpcnN0IGVsZW1lbnQgbXVzdCBiZSBhbiBcXFxuICAgICAgIGF0b21cIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdCB+bG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3NleHA6ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2V4dHJhX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyBzZXhwIGxzdCA9XG4gIGxldCB1bmRlZmluZWQgPSByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIFtdIGxzdCBpblxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3NleHA6IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IHZhbHVlcyBvZiB0eXBlcyByZXN1bHRpbmcgZnJvbSBwb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX3ZhcmlhbnRfbWF0Y2ggKCkgPSByYWlzZSBOb192YXJpYW50X21hdGNoXG5cbmxldCBub19tYXRjaGluZ192YXJpYW50X2ZvdW5kIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogbm8gbWF0Y2hpbmcgdmFyaWFudCBmb3VuZFwiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZlxuICAgICAgXCIlc19vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcHRhZ190YWtlc19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgdGFrZXMgYW4gYXJndW1lbnRcIikgc2V4cFxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKSBzZXhwXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSBzZXhwXG47O1xuIiwib3BlbiEgU3RkTGFiZWxzXG5vcGVuISBTZXhwX2NvbnZcbm9wZW4hIFNleHBfY29udl9lcnJvclxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IERlZmF1bHQgOiAodW5pdCAtPiAnYSkgLT4gKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IE9taXRfbmlsIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFJlcXVpcmVkIDogKCdhLCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfYXJyYXkgOiAoJ2EgYXJyYXksIFNleHAudCAtPiAnYSkgdFxuICAgIHwgU2V4cF9ib29sIDogKGJvb2wsIHVuaXQpIHRcbiAgICB8IFNleHBfbGlzdCA6ICgnYSBsaXN0LCBTZXhwLnQgLT4gJ2EpIHRcbiAgICB8IFNleHBfb3B0aW9uIDogKCdhIG9wdGlvbiwgU2V4cC50IC0+ICdhKSB0XG5lbmRcblxubW9kdWxlIEZpZWxkcyA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBFbXB0eSA6IHVuaXQgdFxuICAgIHwgRmllbGQgOlxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBraW5kIDogKCdhLCAnY29udikgS2luZC50XG4gICAgICAgIDsgY29udiA6ICdjb252XG4gICAgICAgIDsgcmVzdCA6ICdiIHRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgKiAnYikgdFxuXG4gIGxldCBsZW5ndGggPVxuICAgIGxldCByZWMgbGVuZ3RoX2xvb3AgOiB0eXBlIGEuIGEgdCAtPiBpbnQgLT4gaW50ID1cbiAgICAgIGZ1biB0IGFjYyAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaWVsZCB7IHJlc3Q7IF8gfSAtPiBsZW5ndGhfbG9vcCByZXN0IChhY2MgKyAxKVxuICAgICAgICB8IEVtcHR5IC0+IGFjY1xuICAgIGluXG4gICAgZnVuIHQgLT4gbGVuZ3RoX2xvb3AgdCAwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hbGZvcm1lZCA9IHN0cnVjdFxuICAoKiBSZXByZXNlbnRzIGVycm9ycyB0aGF0IGNhbiBvY2N1ciBkdWUgdG8gbWFsZm9ybWVkIHJlY29yZCBzZXhwcy4gQWNjdW11bGF0ZWQgYXMgYVxuICAgICB2YWx1ZSBzbyB3ZSBjYW4gcmVwb3J0IG11bHRpcGxlIG5hbWVzIGF0IG9uY2UgZm9yIGV4dHJhIGZpZWxkcywgZHVwbGljYXRlIGZpZWxkcywgb3JcbiAgICAgbWlzc2luZyBmaWVsZHMuICopXG4gIHR5cGUgdCA9XG4gICAgfCBCb29sX3BheWxvYWRcbiAgICB8IEV4dHJhcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgRHVwcyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTWlzc2luZyBvZiBzdHJpbmcgbGlzdFxuICAgIHwgTm9uX3BhaXIgb2YgU2V4cC50IG9wdGlvblxuXG4gIGxldCBjb21iaW5lIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgKCogY2hvb3NlIHRoZSBmaXJzdCBib29sLXBheWxvYWQgb3Igbm9uLXBhaXIgZXJyb3IgdGhhdCBvY2N1cnMgKilcbiAgICB8ICgoQm9vbF9wYXlsb2FkIHwgTm9uX3BhaXIgXykgYXMgdCksIF8gLT4gdFxuICAgIHwgXywgKChCb29sX3BheWxvYWQgfCBOb25fcGFpciBfKSBhcyB0KSAtPiB0XG4gICAgKCogY29tYmluZSBsaXN0cyBvZiBzaW1pbGFyIGVycm9ycyAqKVxuICAgIHwgRXh0cmFzIGEsIEV4dHJhcyBiIC0+IEV4dHJhcyAoYSBAIGIpXG4gICAgfCBEdXBzIGEsIER1cHMgYiAtPiBEdXBzIChhIEAgYilcbiAgICB8IE1pc3NpbmcgYSwgTWlzc2luZyBiIC0+IE1pc3NpbmcgKGEgQCBiKVxuICAgICgqIG90aGVyd2lzZSwgZHVwcyA+IGV4dHJhcyA+IG1pc3NpbmcgKilcbiAgICB8IChEdXBzIF8gYXMgdCksIF8gfCBfLCAoRHVwcyBfIGFzIHQpIC0+IHRcbiAgICB8IChFeHRyYXMgXyBhcyB0KSwgXyB8IF8sIChFeHRyYXMgXyBhcyB0KSAtPiB0XG4gIDs7XG5cbiAgbGV0IHJhaXNlIHQgfmNhbGxlciB+Y29udGV4dCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCb29sX3BheWxvYWQgLT4gcmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQgY2FsbGVyIGNvbnRleHRcbiAgICB8IEV4dHJhcyBuYW1lcyAtPiByZWNvcmRfZXh0cmFfZmllbGRzIGNhbGxlciAoTGlzdC5yZXYgbmFtZXMpIGNvbnRleHRcbiAgICB8IER1cHMgbmFtZXMgLT4gcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgY2FsbGVyIChMaXN0LnJldiBuYW1lcykgY29udGV4dFxuICAgIHwgTWlzc2luZyBuYW1lcyAtPlxuICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+IHRydWUsIG5hbWUpXG4gICAgICB8PiByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGNhbGxlciBjb250ZXh0XG4gICAgfCBOb25fcGFpciBtYXliZV9jb250ZXh0IC0+XG4gICAgICBsZXQgY29udGV4dCA9IE9wdGlvbi52YWx1ZSBtYXliZV9jb250ZXh0IH5kZWZhdWx0OmNvbnRleHQgaW5cbiAgICAgIHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGNhbGxlciBjb250ZXh0XG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1hbGZvcm1lZCBvZiBNYWxmb3JtZWQudFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogU3RvcmVzIHNleHBzIGNvcnJlc3BvbmRpbmcgdG8gcmVjb3JkIGZpZWxkcywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgd2VyZSBkZWNsYXJlZC5cbiAgICAgRXhjbHVkZXMgZmllbGRzIGFscmVhZHkgcGFyc2VkIGluIHRoZSBmYXN0IHBhdGguXG5cbiAgICAgTGlzdCBzZXhwcyByZXByZXNlbnQgYSBmaWVsZCB0aGF0IGlzIHByZXNlbnQsIHN1Y2ggYXMgKHggMSkgZm9yIGEgZmllbGQgbmFtZWQgXCJ4XCIuXG4gICAgIEF0b20gc2V4cHMgcmVwcmVzZW50IGEgZmllbGQgdGhhdCBpcyBhYnNlbnQsIG9yIGF0IGxlYXN0IG5vdCB5ZXQgc2Vlbi4gKilcbiAgdHlwZSB0ID0geyBzdGF0ZSA6IFNleHAudCBhcnJheSB9IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwb3MgPSBBcnJheS51bnNhZmVfZ2V0IHQuc3RhdGUgcG9zXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9zIHNleHAgPSBBcnJheS51bnNhZmVfc2V0IHQuc3RhdGUgcG9zIHNleHBcbiAgbGV0IGFic2VudCA9IFNleHAuQXRvbSBcIlwiXG4gIGxldCBjcmVhdGUgbGVuID0geyBzdGF0ZSA9IEFycmF5Lm1ha2UgbGVuIGFic2VudCB9XG5lbmRcblxuKCogUGFyc2luZyBmaWVsZCB2YWx1ZXMgZnJvbSBzdGF0ZS4gKilcblxubGV0IHJlYyBwYXJzZV92YWx1ZV9tYWxmb3JtZWRcbiAgOiB0eXBlIGEgYi4gTWFsZm9ybWVkLnQgLT4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGFcbiAgPVxuICBmdW4gbWFsZm9ybWVkIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCBmaWVsZCkgPSBmaWVsZHMgaW5cbiAgbGV0IG1hbGZvcm1lZCA9XG4gICAgbWF0Y2ggcGFyc2VfdmFsdWVzIH5maWVsZHM6ZmllbGQucmVzdCB+c3RhdGUgfnBvczoocG9zICsgMSkgd2l0aFxuICAgIHwgKF8gOiBiKSAtPiBtYWxmb3JtZWRcbiAgICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgb3RoZXIgLT4gTWFsZm9ybWVkLmNvbWJpbmUgbWFsZm9ybWVkIG90aGVyXG4gIGluXG4gIHJhaXNlIChNYWxmb3JtZWQgbWFsZm9ybWVkKVxuXG5hbmQgcGFyc2VfdmFsdWUgOiB0eXBlIGEgYi4gZmllbGRzOihhICogYikgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGEgKiBiID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbGV0IChGaWVsZCB7IG5hbWU7IGtpbmQ7IGNvbnY7IHJlc3QgfSkgPSBmaWVsZHMgaW5cbiAgbGV0IHZhbHVlIDogYSA9XG4gICAgbWF0Y2gga2luZCwgU3RhdGUudW5zYWZlX2dldCBzdGF0ZSBwb3Mgd2l0aFxuICAgICgqIHdlbGwtZm9ybWVkICopXG4gICAgfCBSZXF1aXJlZCwgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IERlZmF1bHQgXywgTGlzdCBbIF87IHNleHAgXSAtPiBjb252IHNleHBcbiAgICB8IE9taXRfbmlsLCBMaXN0IFsgXzsgc2V4cCBdIC0+IGNvbnYgc2V4cFxuICAgIHwgU2V4cF9vcHRpb24sIExpc3QgWyBfOyBzZXhwIF0gLT4gU29tZSAoY29udiBzZXhwKVxuICAgIHwgU2V4cF9saXN0LCBMaXN0IFsgXzsgc2V4cCBdIC0+IGxpc3Rfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYXJyYXksIExpc3QgWyBfOyBzZXhwIF0gLT4gYXJyYXlfb2Zfc2V4cCBjb252IHNleHBcbiAgICB8IFNleHBfYm9vbCwgTGlzdCBbIF8gXSAtPiB0cnVlXG4gICAgKCogaWxsLWZvcm1lZCAqKVxuICAgIHwgKCAoUmVxdWlyZWQgfCBEZWZhdWx0IF8gfCBPbWl0X25pbCB8IFNleHBfb3B0aW9uIHwgU2V4cF9saXN0IHwgU2V4cF9hcnJheSlcbiAgICAgICwgKExpc3QgKF8gOjogXyA6OiBfIDo6IF8pIGFzIHNleHApICkgLT5cbiAgICAgIHBhcnNlX3ZhbHVlX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICB8ICggKFJlcXVpcmVkIHwgRGVmYXVsdCBfIHwgT21pdF9uaWwgfCBTZXhwX29wdGlvbiB8IFNleHBfbGlzdCB8IFNleHBfYXJyYXkpXG4gICAgICAsIExpc3QgKFtdIHwgWyBfIF0pICkgLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChOb25fcGFpciBOb25lKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBTZXhwX2Jvb2wsIExpc3QgKFtdIHwgXyA6OiBfIDo6IF8pIC0+XG4gICAgICBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgQm9vbF9wYXlsb2FkIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICAoKiBhYnNlbnQgKilcbiAgICB8IFJlcXVpcmVkLCBBdG9tIF8gLT4gcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChNaXNzaW5nIFsgbmFtZSBdKSB+ZmllbGRzIH5zdGF0ZSB+cG9zXG4gICAgfCBEZWZhdWx0IGRlZmF1bHQsIEF0b20gXyAtPiBkZWZhdWx0ICgpXG4gICAgfCBPbWl0X25pbCwgQXRvbSBfIC0+IGNvbnYgKExpc3QgW10pXG4gICAgfCBTZXhwX29wdGlvbiwgQXRvbSBfIC0+IE5vbmVcbiAgICB8IFNleHBfbGlzdCwgQXRvbSBfIC0+IFtdXG4gICAgfCBTZXhwX2FycmF5LCBBdG9tIF8gLT4gW3x8XVxuICAgIHwgU2V4cF9ib29sLCBBdG9tIF8gLT4gZmFsc2VcbiAgaW5cbiAgdmFsdWUsIHBhcnNlX3ZhbHVlcyB+ZmllbGRzOnJlc3QgfnN0YXRlIH5wb3M6KHBvcyArIDEpXG5cbmFuZCBwYXJzZV92YWx1ZXMgOiB0eXBlIGEuIGZpZWxkczphIEZpZWxkcy50IC0+IHN0YXRlOlN0YXRlLnQgLT4gcG9zOmludCAtPiBhID1cbiAgZnVuIH5maWVsZHMgfnN0YXRlIH5wb3MgLT5cbiAgbWF0Y2ggZmllbGRzIHdpdGhcbiAgfCBGaWVsZCBfIC0+IHBhcnNlX3ZhbHVlIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgfCBFbXB0eSAtPiAoKVxuOztcblxuKCogUG9wdWxhdGluZyBzdGF0ZS4gSGFuZGxlcyBzbG93IHBhdGggY2FzZXMgd2hlcmUgdGhlcmUgbWF5IGJlIHJlb3JkZXJlZCwgZHVwbGljYXRlZCxcbiAgIG1pc3NpbmcsIG9yIGV4dHJhIGZpZWxkcy4gKilcblxubGV0IHJlYyBwYXJzZV9zcGluZV9tYWxmb3JtZWQgbWFsZm9ybWVkIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgPVxuICBsZXQgbWFsZm9ybWVkID1cbiAgICBtYXRjaCBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMgd2l0aFxuICAgIHwgKCkgLT4gbWFsZm9ybWVkXG4gICAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG90aGVyIC0+IE1hbGZvcm1lZC5jb21iaW5lIG1hbGZvcm1lZCBvdGhlclxuICBpblxuICByYWlzZSAoTWFsZm9ybWVkIG1hbGZvcm1lZClcblxuYW5kIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcyA9XG4gIG1hdGNoIChzZXhwcyA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoTGlzdCAoQXRvbSBuYW1lIDo6IF8pIGFzIGZpZWxkKSA6OiBzZXhwcyAtPlxuICAgIGxldCBpID0gaW5kZXggbmFtZSBpblxuICAgIChtYXRjaCBzZWVuIDw9IGkgJiYgaSA8IGxlbiB3aXRoXG4gICAgIHwgdHJ1ZSAtPlxuICAgICAgICgqIHZhbGlkIGZpZWxkIGZvciBzbG93LXBhdGggcGFyc2luZyAqKVxuICAgICAgIGxldCBwb3MgPSBpIC0gc2VlbiBpblxuICAgICAgIChtYXRjaCBTdGF0ZS51bnNhZmVfZ2V0IHN0YXRlIHBvcyB3aXRoXG4gICAgICAgIHwgQXRvbSBfIC0+XG4gICAgICAgICAgKCogZmllbGQgbm90IHNlZW4geWV0ICopXG4gICAgICAgICAgU3RhdGUudW5zYWZlX3NldCBzdGF0ZSBwb3MgZmllbGQ7XG4gICAgICAgICAgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgTGlzdCBfIC0+XG4gICAgICAgICAgKCogZmllbGQgYWxyZWFkeSBzZWVuICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKVxuICAgICB8IGZhbHNlIC0+XG4gICAgICAgKG1hdGNoIDAgPD0gaSAmJiBpIDwgc2VlbiB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICgqIGZpZWxkIHNlZW4gaW4gZmFzdCBwYXRoICopXG4gICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChEdXBzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiBleHRyYSBmaWVsZCAqKVxuICAgICAgICAgIChtYXRjaCBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgdHJ1ZSAtPiBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbiAgICAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoRXh0cmFzIFsgbmFtZSBdKSB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzKSkpXG4gIHwgc2V4cCA6OiBzZXhwcyAtPlxuICAgIHBhcnNlX3NwaW5lX21hbGZvcm1lZCAoTm9uX3BhaXIgKFNvbWUgc2V4cCkpIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbjs7XG5cbigqIFNsb3cgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIFVzZXMgc3RhdGUgdG8gc3RvcmUgZmllbGRzIGFzIHRoZXkgYXJlIGRpc2NvdmVyZWQuICopXG5cbmxldCBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgPVxuICBsZXQgdW5zZWVuID0gRmllbGRzLmxlbmd0aCBmaWVsZHMgaW5cbiAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlIHVuc2VlbiBpblxuICBsZXQgbGVuID0gc2VlbiArIHVuc2VlbiBpblxuICAoKiBwb3B1bGF0ZSBzdGF0ZSAqKVxuICBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHM7XG4gICgqIHBhcnNlIHZhbHVlcyBmcm9tIHN0YXRlICopXG4gIHBhcnNlX3ZhbHVlcyB+ZmllbGRzIH5zdGF0ZSB+cG9zOjBcbjs7XG5cbigqIEZhc3QgcGF0aCBmb3IgcmVjb3JkIHBhcnNpbmcuIERpcmVjdGx5IHBhcnNlcyBhbmQgcmV0dXJucyBmaWVsZHMgaW4gdGhlIG9yZGVyIHRoZXkgYXJlXG4gICBkZWNsYXJlZC4gRmFsbHMgYmFjayBvbiBzbG93IHBhdGggaWYgYW55IGZpZWxkcyBhcmUgYWJzZW50LCByZW9yZGVyZWQsIG9yIG1hbGZvcm1lZC4gKilcblxubGV0IHJlYyBwYXJzZV9maWVsZF9mYXN0XG4gIDogdHlwZSBhIGIuXG4gICAgZmllbGRzOihhICogYikgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGEgKiBiXG4gID1cbiAgZnVuIH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyAtPlxuICBsZXQgKEZpZWxkIHsgbmFtZTsga2luZDsgY29udjsgcmVzdCB9KSA9IGZpZWxkcyBpblxuICBtYXRjaCBzZXhwcyB3aXRoXG4gIHwgTGlzdCAoQXRvbSBhdG9tIDo6IGFyZ3MpIDo6IG90aGVycyB3aGVuIFN0cmluZy5lcXVhbCBhdG9tIG5hbWUgLT5cbiAgICAobWF0Y2gga2luZCwgYXJncyB3aXRoXG4gICAgIHwgUmVxdWlyZWQsIFsgc2V4cCBdIC0+XG4gICAgICAgY29udiBzZXhwLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgIHwgRGVmYXVsdCBfLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IE9taXRfbmlsLCBbIHNleHAgXSAtPlxuICAgICAgIGNvbnYgc2V4cCwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICB8IFNleHBfb3B0aW9uLCBbIHNleHAgXSAtPlxuICAgICAgICggU29tZSAoY29udiBzZXhwKVxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9saXN0LCBbIHNleHAgXSAtPlxuICAgICAgICggbGlzdF9vZl9zZXhwIGNvbnYgc2V4cFxuICAgICAgICwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVycyApXG4gICAgIHwgU2V4cF9hcnJheSwgWyBzZXhwIF0gLT5cbiAgICAgICAoIGFycmF5X29mX3NleHAgY29udiBzZXhwXG4gICAgICAgLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzIClcbiAgICAgfCBTZXhwX2Jvb2wsIFtdIC0+XG4gICAgICAgdHJ1ZSwgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzOnJlc3QgfmluZGV4IH5leHRyYSB+c2Vlbjooc2VlbiArIDEpIG90aGVyc1xuICAgICAoKiBtYWxmb3JtZWQgZmllbGQgb2Ygc29tZSBraW5kLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgfCBfLCBfIC0+IHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcylcbiAgKCogbWFsZm9ybWVkIG9yIG91dC1vZi1vcmRlciBmaWVsZCwgZGlzcGF0Y2ggdG8gc2xvdyBwYXRoICopXG4gIHwgXyAtPiBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHNcblxuYW5kIHBhcnNlX3NwaW5lX2Zhc3RcbiAgOiB0eXBlIGEuXG4gICAgZmllbGRzOmEgRmllbGRzLnRcbiAgICAtPiBpbmRleDooc3RyaW5nIC0+IGludClcbiAgICAtPiBleHRyYTpib29sXG4gICAgLT4gc2VlbjppbnRcbiAgICAtPiBTZXhwLnQgbGlzdFxuICAgIC0+IGFcbiAgPVxuICBmdW4gfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzIC0+XG4gIG1hdGNoIGZpZWxkcyB3aXRoXG4gIHwgRmllbGQgXyAtPiBwYXJzZV9maWVsZF9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwc1xuICB8IEVtcHR5IC0+XG4gICAgKG1hdGNoIHNleHBzIHdpdGhcbiAgICAgfCBbXSAtPiAoKVxuICAgICB8IF8gOjogXyAtPlxuICAgICAgICgqIGV4dHJhIHNleHBzLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgICAgICBwYXJzZV9yZWNvcmRfc2xvdyB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMpXG47O1xuXG5sZXQgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIHNleHBzID1cbiAgcGFyc2Vfc3BpbmVfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW46MCBzZXhwc1xuOztcblxuKCogRW50cnkgcG9pbnRzLiAqKVxuXG5sZXQgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuICA9XG4gIGxldCBhbGxvd19leHRyYV9maWVsZHMgPVxuICAgIGFsbG93X2V4dHJhX2ZpZWxkcyB8fCBub3QgIVNleHBfY29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzXG4gIGluXG4gIG1hdGNoXG4gICAgcGFyc2VfcmVjb3JkX2Zhc3QgfmZpZWxkcyB+aW5kZXg6aW5kZXhfb2ZfZmllbGQgfmV4dHJhOmFsbG93X2V4dHJhX2ZpZWxkcyBzZXhwc1xuICB3aXRoXG4gIHwgdmFsdWUgLT4gY3JlYXRlIHZhbHVlXG4gIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBtYWxmb3JtZWQgLT4gTWFsZm9ybWVkLnJhaXNlIG1hbGZvcm1lZCB+Y2FsbGVyIH5jb250ZXh0XG47O1xuXG5sZXQgcmVjb3JkX29mX3NleHAgfmNhbGxlciB+ZmllbGRzIH5pbmRleF9vZl9maWVsZCB+YWxsb3dfZXh0cmFfZmllbGRzIH5jcmVhdGUgc2V4cCA9XG4gIG1hdGNoIChzZXhwIDogU2V4cC50KSB3aXRoXG4gIHwgQXRvbSBfIGFzIGNvbnRleHQgLT4gcmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGNhbGxlciBjb250ZXh0XG4gIHwgTGlzdCBzZXhwcyBhcyBjb250ZXh0IC0+XG4gICAgcmVjb3JkX29mX3NleHBzXG4gICAgICB+Y2FsbGVyXG4gICAgICB+Y29udGV4dFxuICAgICAgfmZpZWxkc1xuICAgICAgfmluZGV4X29mX2ZpZWxkXG4gICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICB+Y3JlYXRlXG4gICAgICBzZXhwc1xuOztcbiIsIigqIFRoZSBbZ2xvYmFsaXplX3tib29sLGNoYXIsdW5pdH1dIGZ1bmN0aW9ucyBhcmUgd3JpdHRlbiBhcyBtYXRjaGVzIHBsdXMgdGhlIGlkZW50aXR5XG4gICBmdW5jdGlvbiBzbyB0aGF0IHRoZSB0eXBlIGNoZWNrZXIgY2FuIGdpdmUgdGhlbSB0aGUgZGVzaXJlZCB0eXBlLCB3aXRob3V0IGhhdmluZyB0byBkb1xuICAgYW55dGhpbmcgc3BlY2lhbC4gIEhvd2V2ZXIsIFtnbG9iYWxpemVfaW50XSBjYW5ub3QgYmUgd3JpdHRlbiB0aGlzIHdheSwgc28gd2UgcmVzb3J0IHRvXG4gICB1c2luZyBhbiBbZXh0ZXJuYWxdLiAqKVxuXG5sZXQgZ2xvYmFsaXplX2Jvb2wgPSBmdW5jdGlvblxuICB8ICh0cnVlIHwgZmFsc2UpIGFzIGIgLT4gYlxuOztcblxubGV0IGdsb2JhbGl6ZV9jaGFyID0gZnVuY3Rpb25cbiAgfCAnXFx4MDAnIC4uICdcXHhGRicgYXMgYyAtPiBjXG47O1xuXG5leHRlcm5hbCBnbG9iYWxpemVfZmxvYXQgOiAoZmxvYXRbQGxvY2FsXSkgLT4gZmxvYXQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50IDogKGludFtAbG9jYWxdKSAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50MzIgOiAoaW50MzJbQGxvY2FsXSkgLT4gaW50MzIgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50NjQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAbG9jYWxdKSAtPiBuYXRpdmVpbnQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQGxvY2FsXSkgLT4gYnl0ZXMgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBnbG9iYWxpemVfc3RyaW5nIDogKHN0cmluZ1tAbG9jYWxdKSAtPiBzdHJpbmcgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfdW5pdCAoKCkgYXMgdSkgPSB1XG5cbmV4dGVybmFsIGdsb2JhbGl6ZV9hcnJheScgOiAoJ2EgYXJyYXlbQGxvY2FsXSkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfb2JqX2R1cFwiXG5cbmxldCBnbG9iYWxpemVfYXJyYXkgXyBhID0gZ2xvYmFsaXplX2FycmF5JyBhXG5cbmxldCByZWMgZ2xvYmFsaXplX2xpc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IGYgeCA6OiBnbG9iYWxpemVfbGlzdCBmIHhzXG47O1xuXG5sZXQgZ2xvYmFsaXplX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuOztcblxubGV0IGdsb2JhbGl6ZV9yZXN1bHQgZ2xvYmFsaXplX2EgZ2xvYmFsaXplX2IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gT2sgKGdsb2JhbGl6ZV9hIGEpXG4gIHwgRXJyb3IgYiAtPiBFcnJvciAoZ2xvYmFsaXplX2IgYilcbjs7XG5cbmxldCBnbG9iYWxpemVfcmVmJyByID0gcmVmICFyXG5sZXQgZ2xvYmFsaXplX3JlZiBfIHIgPSBnbG9iYWxpemVfcmVmJyByXG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPiApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoID49ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBjb21wYXJlIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuZXh0ZXJuYWwgZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggeCB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxubGV0IG1pbiB4IHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIFN0ZGxpYi5yZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5cbigqIFJlc2h1ZmZsZSBbU3RkbGliXSBzbyB0aGF0IHdlIGNob29zZSB0aGUgbW9kdWxlcyB1c2luZyBsYWJlbHMgd2hlbiBhdmFpbGFibGUuICopXG5tb2R1bGUgU3RkbGliID0gc3RydWN0XG4gIGluY2x1ZGUgU3RkbGliXG4gIGluY2x1ZGUgU3RkbGliLlN0ZExhYmVsc1xuICBpbmNsdWRlIFN0ZGxpYi5Nb3JlTGFiZWxzXG5lbmRcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIHx8ICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuKCogV2UgdXNlIFtPYmoubWFnaWNdIGhlcmUgYXMgb3RoZXIgaW1wbGVtZW50YXRpb25zIGdlbmVyYXRlIGEgY29uZGl0aW9uYWwganVtcCBhbmQgdGhlXG4gICBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGlzIG5vdGljZWFibGUuICopXG5sZXQgYm9vbF90b19pbnQgKHggOiBib29sKSA6IGludCA9IFN0ZGxpYi5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gU3RkbGliLiggIT0gKVxubGV0ICggKiApID0gU3RkbGliLiggKiApXG5sZXQgKCAqKiApID0gU3RkbGliLiggKiogKVxubGV0ICggKi4gKSA9IFN0ZGxpYi4oICouIClcbmxldCAoICsgKSA9IFN0ZGxpYi4oICsgKVxubGV0ICggKy4gKSA9IFN0ZGxpYi4oICsuIClcbmxldCAoIC0gKSA9IFN0ZGxpYi4oIC0gKVxubGV0ICggLS4gKSA9IFN0ZGxpYi4oIC0uIClcbmxldCAoIC8gKSA9IFN0ZGxpYi4oIC8gKVxubGV0ICggLy4gKSA9IFN0ZGxpYi4oIC8uIClcblxubW9kdWxlIFBvbHkgPSBQb2x5MCAoKiogQGNhbm9uaWNhbCBCYXNlLlBvbHkgKilcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbiAgZXh0ZXJuYWwgY29tcGFyZSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB5IHhcbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLkludDMyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPCApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmVcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludFxuICAgID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBib29sKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBib29sKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYm9vbCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBib29sKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBib29sKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJvb2wpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogY2hhcikgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogY2hhcikgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBjaGFyKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogY2hhcikgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBTdGRsaWIuVWNoYXIudG9faW50IHhcbiAgbGV0ICggPCApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIChpIHgpIChpIHkpXG4gIGxldCAoIDw9ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PiApIChpIHgpIChpIHkpXG4gIGxldCAoID0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgKGkgeCkgKGkgeSlcblxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPVxuICAgIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuYXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSAoaSB4KSAoaSB5KVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgKGkgeCkgKGkgeSlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBmbG9hdCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogc3RyaW5nKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHN0cmluZykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJ5dGVzKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBieXRlcykgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBieXRlcykgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGJ5dGVzKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuKCogVGhlc2UgbmVlZCB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgd29uJ3QgdW5ib3hcbiAgIHJlZmVyZW5jZXMgKilcbmV4dGVybmFsICggISApIDogKCdhIHJlZltAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gKCdhIHJlZltAbG9jYWxfb3B0XSkgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IFN0ZGxpYi4oIEAgKVxubGV0ICggXiApID0gU3RkbGliLiggXiApXG5sZXQgKCB+LSApID0gU3RkbGliLiggfi0gKVxubGV0ICggfi0uICkgPSBTdGRsaWIuKCB+LS4gKVxubGV0ICggYXNyICkgPSBTdGRsaWIuKCBhc3IgKVxubGV0ICggbGFuZCApID0gU3RkbGliLiggbGFuZCApXG5sZXQgbG5vdCA9IFN0ZGxpYi5sbm90XG5sZXQgKCBsb3IgKSA9IFN0ZGxpYi4oIGxvciApXG5sZXQgKCBsc2wgKSA9IFN0ZGxpYi4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IFN0ZGxpYi4oIGxzciApXG5sZXQgKCBseG9yICkgPSBTdGRsaWIuKCBseG9yIClcbmxldCAoIG1vZCApID0gU3RkbGliLiggbW9kIClcbmxldCBhYnMgPSBTdGRsaWIuYWJzXG5sZXQgZmFpbHdpdGggPSBTdGRsaWIuZmFpbHdpdGhcbmxldCBmc3QgPSBTdGRsaWIuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBTdGRsaWIuaW52YWxpZF9hcmdcbmxldCBzbmQgPSBTdGRsaWIuc25kXG5cbigqIFtyYWlzZV0gbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBhcyB0aGUgY29tcGlsZXIgYXV0b21hdGljYWxseSByZXBsYWNlc1xuICAgJyVyYWlzZScgYnkgJyVyZXJhaXNlJyB3aGVuIGFwcHJvcHJpYXRlLiAqKVxuZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxubGV0IHBoeXNfZXF1YWwgPSBTdGRsaWIuKCA9PSApXG5cbmV4dGVybmFsIGRlY3IgOiAoaW50IHJlZltAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWRlY3JcIlxuZXh0ZXJuYWwgaW5jciA6IChpbnQgcmVmW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaW5jclwiXG5cbigqIHVzZWQgYnkgc2V4cF9jb252LCB3aGljaCBmbG9hdDAgZGVwZW5kcyBvbiB0aHJvdWdoIG9wdGlvbiAqKVxubGV0IGZsb2F0X29mX3N0cmluZyA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbU3RkbGliXS4gW0ludDBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGVcbiAgIHBhcnQgb2YgW1N0ZGxpYl0gdGhhdCBbQmFzZV0gdXNlcyBmb3IgaW50ZWdlcnMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGludDAubWwgc2hvdWxkIHVzZSB0aGVzZSBmdW5jdGlvbnMgZGlyZWN0bHkgdGhyb3VnaCBbU3RkbGliXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9pbnRcbmxldCBvZl9zdHJpbmcgPSBTdGRsaWIuaW50X29mX3N0cmluZ1xubGV0IG9mX3N0cmluZ19vcHQgPSBTdGRsaWIuaW50X29mX3N0cmluZ19vcHRcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdCA9IFN0ZGxpYi5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgc3VjYyA9IFN0ZGxpYi5zdWNjXG5sZXQgcHJlZCA9IFN0ZGxpYi5wcmVkXG4iLCJvcGVuISBJbXBvcnQwXG5pbmNsdWRlIFN0ZGxpYi5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW1N0ZGxpYi5TeXNdLiAgW1N5czBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW1N0ZGxpYi5TeXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3lzLm1sXG4gICBzaG91bGQgdXNlIFtTdGRsaWIuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBTdGRsaWIuU3lzLmJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcblxubGV0IGJhY2tlbmRfdHlwZSA9IFN0ZGxpYi5TeXMuYmFja2VuZF90eXBlXG5sZXQgaW50ZXJhY3RpdmUgPSBTdGRsaWIuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IFN0ZGxpYi5TeXMub3NfdHlwZVxubGV0IHVuaXggPSBTdGRsaWIuU3lzLnVuaXhcbmxldCB3aW4zMiA9IFN0ZGxpYi5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBTdGRsaWIuU3lzLmN5Z3dpblxubGV0IHdvcmRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy53b3JkX3NpemVcbmxldCBpbnRfc2l6ZV9pbl9iaXRzID0gU3RkbGliLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBTdGRsaWIuU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IFN0ZGxpYi5TeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBtYXhfYXJyYXlfbGVuZ3RoID0gU3RkbGliLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gU3RkbGliLlN5cy5ydW50aW1lX3ZhcmlhbnRcbmxldCBydW50aW1lX3BhcmFtZXRlcnMgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfcGFyYW1ldGVyc1xubGV0IGFyZ3YgPSBTdGRsaWIuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IFN0ZGxpYi5TeXMuYXJndlxubGV0IG9jYW1sX3ZlcnNpb24gPSBTdGRsaWIuU3lzLm9jYW1sX3ZlcnNpb25cbmxldCBlbmFibGVfcnVudGltZV93YXJuaW5ncyA9IFN0ZGxpYi5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZFxuXG5sZXQgZ2V0ZW52X2V4biB2YXIgPVxuICB0cnkgU3RkbGliLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCBTdGRsaWIuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0ZW52IHZhciB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVvcGFxdWVcIlxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5X2dsb2JhbCA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuIiwiKCogW0FycmF5MF0gZGVmaW5lcyBhcnJheSBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXNcbiAgIG9mIFtTdGRsaWIuQXJyYXldLiAgW0FycmF5MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQXJyYXldLlxuICAgW0FycmF5MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgYXJyYXlzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5BcnJheV0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkXG4gICBkbyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXS4gIFRoaXMgaW5jbHVkZXMgdXNlcyBvZiBzdWJzY3JpcHQgc3ludGF4IChbeC4oaSldLCBbeC4oaSkgPC1cbiAgIGVdKSwgd2hpY2ggdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvIFtBcnJheS5nZXRdIGFuZCBbQXJyYXkuc2V0XS5cbiAgIERlZmluaW5nIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHMgb2NhbWxkZXAgZnJvbVxuICAgbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQXJyYXldLiAqKVxuXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlX2xvY2FsIDogaW50IC0+ICdhIC0+ICgnYSBhcnJheVtAbG9jYWxdKSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgnYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgIDogIHNyYzooJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6KCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmVuZFxuXG5pbmNsdWRlIEFycmF5XG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICB0cnkgY3JlYXRlIGxlbiB4IHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgY3JlYXRlX2xvY2FsIH5sZW4geCA9XG4gIFxuICAgICh0cnkgY3JlYXRlX2xvY2FsIGxlbiB4IHdpdGhcbiAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfbG9jYWwgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKCkpXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbiA9XG4gIHRyeSBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCBsZW4gd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgIGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW46JWQ6IGludmFsaWQgbGVuZ3RoXCIgbGVuICgpXG47O1xuXG5sZXQgYXBwZW5kID0gU3RkbGliLkFycmF5LmFwcGVuZFxubGV0IGJsaXQgPSBTdGRsaWIuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IFN0ZGxpYi5BcnJheS5jb25jYXRcbmxldCBjb3B5ID0gU3RkbGliLkFycmF5LmNvcHlcbmxldCBmaWxsID0gU3RkbGliLkFycmF5LmZpbGxcblxubGV0IGluaXQgbGVuIH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5pbml0XCJcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IGNyZWF0ZSB+bGVuIChmIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIEludDAucHJlZCBsZW4gZG9cbiAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHJlcylcbjs7XG5cbmxldCBtYWtlX21hdHJpeCA9IFN0ZGxpYi5BcnJheS5tYWtlX21hdHJpeFxubGV0IG9mX2xpc3QgPSBTdGRsaWIuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IFN0ZGxpYi5BcnJheS5zdWJcbmxldCB0b19saXN0ID0gU3RkbGliLkFycmF5LnRvX2xpc3RcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSBsZW5ndGggdCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgdCBpKSAhclxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgfmxlbiAoZiAodW5zYWZlX2dldCB0IDApKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSB+bGVuIChmIDAgKHVuc2FmZV9nZXQgdCAwKSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBzdGFibGVfc29ydCB0IH5jb21wYXJlID0gU3RkbGliLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbU3RkbGliLkNoYXJdLiAgW0NoYXIwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW1N0ZGxpYi5DaGFyXSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBjaGFyMC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5DaGFyLmVzY2FwZWRcbmxldCBsb3dlcmNhc2UgPSBTdGRsaWIuQ2hhci5sb3dlcmNhc2VfYXNjaWlcbmxldCB0b19pbnQgPSBTdGRsaWIuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IFN0ZGxpYi5DaGFyLnVuc2FmZV9jaHJcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuQ2hhci51cHBlcmNhc2VfYXNjaWlcblxuKCogV2UgdXNlIG91ciBvd24gcmFuZ2UgdGVzdCB3aGVuIGNvbnZlcnRpbmcgaW50ZWdlcnMgdG8gY2hhcnMgcmF0aGVyIHRoYW5cbiAgIGNhbGxpbmcgW1N0ZGxpYi5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtMaXN0MF0gZGVmaW5lcyBsaXN0IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgW1N0ZGxpYi5MaXN0XS4gIFtMaXN0MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtTdGRsaWIuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkxpc3RdLlxuICAgW0xpc3QwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBsaXN0cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuTGlzdF0gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIExpc3QgPSBMaXN0MF0uICBEZWZpbmluZyBbbW9kdWxlIExpc3QgPSBMaXN0MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdFxuICAgcHJldmVudHMgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5MaXN0XS4gKilcblxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBoZF9leG4gPSBTdGRsaWIuTGlzdC5oZFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MaXN0Lmxlbmd0aFxubGV0IHJldl9hcHBlbmQgPSBTdGRsaWIuTGlzdC5yZXZfYXBwZW5kXG5sZXQgdGxfZXhuID0gU3RkbGliLkxpc3QudGxcbmxldCB1bnppcCA9IFN0ZGxpYi5MaXN0LnNwbGl0XG5cbigqIFNvbWUgb2YgdGhlc2UgYXJlIGV0YSBleHBhbmRlZCBpbiBvcmRlciB0byBwZXJtdXRlIHBhcmFtZXRlciBvcmRlciB0byBmb2xsb3cgQmFzZVxuICAgY29udmVudGlvbnMuICopXG5cbmxldCByZWMgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCB4IDo6IHhzIC0+IGlmIGYgeCB0aGVuIHRydWUgZWxzZSBleGlzdHMgeHMgfmZcbjs7XG5cbmxldCByZWMgZXhpc3RzMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gZmFsc2VcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiB8fCBleGlzdHMyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gaW5pdFxuICB8IGEgOjogbCAtPiBmb2xkIGwgfmluaXQ6KGYgaW5pdCBhKSB+ZlxuOztcblxubGV0IHJlYyBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBpbml0XG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IGZvbGQyX29rIGwxIGwyIH5mIH5pbml0OihmIGluaXQgYTEgYTIpXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9sZWZ0MlwiXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mOihmIFtAbG9jYWxdKSA9IG5vdCAoZXhpc3RzIHQgfmY6KGZ1biB4IC0+IG5vdCAoZiB4KSkpXG5cbmxldCByZWMgZm9yX2FsbDJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZiBhMSBhMiAmJiBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0LmZvcl9hbGwyXCJcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBhIDo6IGwgLT5cbiAgICBmIGE7XG4gICAgaXRlciBsIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiB1bml0KSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAoKVxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPlxuICAgIGYgYTEgYTI7XG4gICAgaXRlcjJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG47O1xuXG5sZXQgcmVjIG5vbnRhaWxfbWFwIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IHkgPSBmIHggaW5cbiAgICB5IDo6IG5vbnRhaWxfbWFwIHhzIH5mXG47O1xuXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBTdGRsaWIuTGlzdC5tYXBpIHQgfmZcbmxldCBwYXJ0aXRpb24gdCB+ZiA9IFN0ZGxpYi5MaXN0LnBhcnRpdGlvbiB0IH5mXG5cbmxldCByZXZfbWFwID1cbiAgbGV0IHJlYyBybWFwX2YgZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IGEgOjogbCAtPiBybWFwX2YgZiAoZiBhIDo6IGFjY3UpIGxcbiAgaW5cbiAgZnVuIGwgfmY6KGYgW0Bsb2NhbF0pIC0+IHJtYXBfZiBmIFtdIGxcbjs7XG5cbmxldCByZXZfbWFwMl9vayA9XG4gIGxldCByZWMgcm1hcDJfZiBmIGFjY3UgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gYWNjdVxuICAgIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+IHJtYXAyX2YgZiAoZiBhMSBhMiA6OiBhY2N1KSBsMSBsMlxuICAgIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBmdW4gbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSAtPiBybWFwMl9mIGYgW10gbDEgbDJcbjs7XG5cbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBTdGRsaWIuTGlzdC5zb3J0IGwgfmNtcDpjb21wYXJlXG5sZXQgc3RhYmxlX3NvcnQgbCB+Y29tcGFyZSA9IFN0ZGxpYi5MaXN0LnN0YWJsZV9zb3J0IGwgfmNtcDpjb21wYXJlXG5cbmxldCByZXYgPSBmdW5jdGlvblxuICB8IChbXSB8IFsgXyBdKSBhcyByZXMgLT4gcmVzXG4gIHwgeCA6OiB5IDo6IHJlc3QgLT4gcmV2X2FwcGVuZCByZXN0IFsgeTsgeCBdXG47O1xuXG5sZXQgZm9sZF9yaWdodCBsIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGluaXQgKCogYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgW35mXSBiZWxvdyAqKVxuICB8IF8sIF8gLT4gZm9sZDJfb2sgfmY6KGZ1biBhIGIgYyAtPiBmIGIgYyBhKSB+aW5pdCAocmV2IGwxKSAocmV2IGwyKSBbQG5vbnRhaWxdXG47O1xuIiwiKCpcbiAgIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byB0aGUgcnVudGltZSBzdXBwb3J0IGZvciBbcHB4X2hhc2hdLlxuXG4gICBUaGUgW3BweF9oYXNoXSBzeW50YXggZXh0ZW5zaW9uIHN1cHBvcnRzOiBbQEBkZXJpdmluZyBoYXNoXSBhbmQgWyVoYXNoX2ZvbGQ6IFRZUEVdIGFuZFxuICAgWyVoYXNoOiBUWVBFXVxuXG4gICBGb3IgdHlwZSBbdF0gYSBmdW5jdGlvbiBbaGFzaF9mb2xkX3RdIG9mIHR5cGUgW0hhc2guc3RhdGUgLT4gdCAtPiBIYXNoLnN0YXRlXSBpc1xuICAgZ2VuZXJhdGVkLlxuXG4gICBUaGUgZ2VuZXJhdGVkIFtoYXNoX2ZvbGRfPFQ+XSBmdW5jdGlvbiBpcyBjb21wb3NpdGlvbmFsLCBmb2xsb3dpbmcgdGhlIHN0cnVjdHVyZSBvZiB0aGVcbiAgIHR5cGU7IGFsbG93aW5nIHVzZXIgb3ZlcnJpZGVzIGF0IGV2ZXJ5IGxldmVsLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIG9jYW1sJ3MgYnVpbHRpblxuICAgcG9seW1vcnBoaWMgaGFzaGluZyBbSGFzaHRibC5oYXNoXSB3aGljaCBpZ25vcmVzIHVzZXIgb3ZlcnJpZGVzLlxuXG4gICBUaGUgZ2VuZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBkaXJlY3QgaGFzaC1mdW5jdGlvbiBbaGFzaF0gKG5hbWVkIFtoYXNoXzxUPl0gd2hlbiA8VD4gIT1cbiAgIFwidFwiKSBvZiB0eXBlOiBbdCAtPiBIYXNoLmhhc2hfdmFsdWVdLlxuXG4gICBUaGUgZm9sZGluZyBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2hfZm9sZDogVFlQRV1cbiAgIFRoZSBkaXJlY3QgaGFzaCBmdW5jdGlvbiBjYW4gYmUgYWNjZXNzZWQgYXMgWyVoYXNoOiBUWVBFXVxuKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBIYXNoX2ludGZcblxuKCoqIEJ1aWx0aW4gZm9sZGluZy1zdHlsZSBoYXNoIGZ1bmN0aW9ucywgYWJzdHJhY3RlZCBvdmVyIFtIYXNoX2ludGYuU10gKilcbm1vZHVsZSBGb2xkaW5nIChIYXNoIDogSGFzaF9pbnRmLlMpIDpcbiAgSGFzaF9pbnRmLkJ1aWx0aW5faW50ZlxuICB3aXRoIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlID0gc3RydWN0XG4gIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICB0eXBlICdhIGZvbGRlciA9IHN0YXRlIC0+ICdhIC0+IHN0YXRlXG5cbiAgbGV0IGhhc2hfZm9sZF91bml0IHMgKCkgPSBzXG4gIGxldCBoYXNoX2ZvbGRfaW50ID0gSGFzaC5mb2xkX2ludFxuICBsZXQgaGFzaF9mb2xkX2ludDY0ID0gSGFzaC5mb2xkX2ludDY0XG4gIGxldCBoYXNoX2ZvbGRfZmxvYXQgPSBIYXNoLmZvbGRfZmxvYXRcbiAgbGV0IGhhc2hfZm9sZF9zdHJpbmcgPSBIYXNoLmZvbGRfc3RyaW5nXG4gIGxldCBhc19pbnQgZiBzIHggPSBoYXNoX2ZvbGRfaW50IHMgKGYgeClcblxuICAoKiBUaGlzIGlnbm9yZXMgdGhlIHNpZ24gYml0IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyB1bmxpa2VseSB0byBsZWFkIHRvXG4gICAgIGZyZXF1ZW50IGNvbGxpc2lvbnMgKG1pbl92YWx1ZSBjb2xsaWRpbmcgd2l0aCAwIGlzIHRoZSBtb3N0IGxpa2VseSBvbmUpLiAgKilcbiAgbGV0IGhhc2hfZm9sZF9pbnQzMiA9IGFzX2ludCBTdGRsaWIuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoU3RkbGliLkludDY0Lm9mX25hdGl2ZWludCB4KVxuXG4gIGxldCBoYXNoX2ZvbGRfb3B0aW9uIGhhc2hfZm9sZF9lbGVtIHMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBoYXNoX2ZvbGRfaW50IHMgMFxuICAgIHwgU29tZSB4IC0+IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfaW50IHMgMSkgeFxuICA7O1xuXG4gIGxldCByZWMgaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gc1xuICAgIHwgeCA6OiB4cyAtPiBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIHgpIHhzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgKCogVGhlIFtsZW5ndGhdIG9mIHRoZSBsaXN0IG11c3QgYmUgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGhhc2gtc3RhdGUgc28gdmFsdWVzIG9mXG4gICAgICAgdHlwZXMgc3VjaCBhcyBbdW5pdCBsaXN0XSAtIChbXSwgWygpXSwgWygpOygpXSwuLikgYXJlIGhhc2hlZCBkaWZmZXJlbnRseS4gKilcbiAgICAoKiBUaGUgW2xlbmd0aF0gbXVzdCBjb21lIGJlZm9yZSB0aGUgZWxlbWVudHMgdG8gYXZvaWQgYSB2aW9sYXRpb24gb2YgdGhlIHJ1bGVcbiAgICAgICBlbmZvcmNlZCBieSBQZXJmZWN0X2hhc2guICopXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfaW50IHMgKExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgbGV0IHMgPSBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCBpblxuICAgIHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xhenlfdCBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzIChTdGRsaWIuTGF6eS5mb3JjZSB4KVxuICBsZXQgaGFzaF9mb2xkX3JlZl9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAheFxuXG4gIGxldCByZWMgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBhcnJheVxuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IGUgPSBBcnJheS51bnNhZmVfZ2V0IGFycmF5IGkgaW5cbiAgICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyBlKSBhcnJheSAoaSArIDEpKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuIGhhc2hfZm9sZF9lbGVtIHMgYXJyYXkgPVxuICAgIGhhc2hfZm9sZF9hcnJheV9mcm96ZW5faVxuICAgICAgKCogW2xlbmd0aF0gbXVzdCBiZSBpbmNvcnBvcmF0ZWQgZm9yIGFycmF5cywgYXMgaXQgaXMgZm9yIGxpc3RzLiBTZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgaGFzaF9mb2xkX2VsZW1cbiAgICAgIChoYXNoX2ZvbGRfaW50IHMgKEFycmF5Lmxlbmd0aCBhcnJheSkpXG4gICAgICBhcnJheVxuICAgICAgMFxuICA7O1xuXG4gICgqIHRoZSBkdXBsaWNhdGlvbiBoZXJlIGlzIGJlY2F1c2Ugd2UgdGhpbmtcbiAgICAgb2NhbWwgY2FuJ3QgZWxpbWluYXRlIGluZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIG90aGVyd2lzZS4gKilcbiAgbGV0IGhhc2hfbmF0aXZlaW50IHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9uYXRpdmVpbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2ludDY0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50NjQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQzMiB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludDMyIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbiAgbGV0IGhhc2hfY2hhciB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2NoYXIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9pbnQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9ib29sIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfYm9vbCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5cbiAgbGV0IGhhc2hfc3RyaW5nIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9zdHJpbmcgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICA7O1xuXG4gIGxldCBoYXNoX2Zsb2F0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfZmxvYXQgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF91bml0IHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdW5pdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG5lbmRcblxubW9kdWxlIEYgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuRnVsbFxuICB3aXRoIHR5cGUgaGFzaF92YWx1ZSA9IEhhc2guaGFzaF92YWx1ZVxuICAgYW5kIHR5cGUgc3RhdGUgPSBIYXNoLnN0YXRlXG4gICBhbmQgdHlwZSBzZWVkID0gSGFzaC5zZWVkID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBGb2xkaW5nIChIYXNoKVxuXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPVxuICAgIEhhc2guZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAoSGFzaC5yZXNldCA/c2VlZCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludGVybmFsaGFzaCA6IHNpZ1xuICBpbmNsdWRlXG4gICAgSGFzaF9pbnRmLlNcbiAgICB3aXRoIHR5cGUgc3RhdGUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zdGF0ZVxuICAgICAoKiBXZSBnaXZlIGEgY29uY3JldGUgdHlwZSBmb3IgW3N0YXRlXSwgYWxiZWl0IG9ubHkgcGFydGlhbGx5IGV4cG9zZWQgKHNlZVxuICAgICAgICBCYXNlX2ludGVybmFsaGFzaF90eXBlcyksIHNvIHRoYXQgaXQgdW5pZmllcyB3aXRoIHRoZSBzYW1lIHR5cGUgaW4gW0Jhc2VfYm9vdF0sXG4gICAgICAgIGFuZCB0byBhbGxvdyBvcHRpbWl6YXRpb25zIGZvciB0aGUgaW1tZWRpYXRlIHR5cGUuICopXG4gICAgIGFuZCB0eXBlIHNlZWQgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5zZWVkXG4gICAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBCYXNlX2ludGVybmFsaGFzaF90eXBlcy5oYXNoX3ZhbHVlXG5cbiAgZXh0ZXJuYWwgZm9sZF9pbnQ2NCA6IHN0YXRlIC0+IGludDY0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX2ludCA6IHN0YXRlIC0+IGludCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnRcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfZmxvYXQgOiBzdGF0ZSAtPiBmbG9hdCAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9zdHJpbmcgOiBzdGF0ZSAtPiBzdHJpbmcgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBnZXRfaGFzaF92YWx1ZSA6IHN0YXRlIC0+IGhhc2hfdmFsdWUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXCJcbiAgW0BAbm9hbGxvY11cbmVuZCA9IHN0cnVjdFxuICBsZXQgZGVzY3JpcHRpb24gPSBcImludGVybmFsaGFzaFwiXG5cbiAgaW5jbHVkZSBCYXNlX2ludGVybmFsaGFzaF90eXBlc1xuXG4gIGxldCBhbGxvYyAoKSA9IGNyZWF0ZV9zZWVkZWQgMFxuICBsZXQgcmVzZXQgPyhzZWVkID0gMCkgX3QgPSBjcmVhdGVfc2VlZGVkIHNlZWRcblxuICBtb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gICAgbGV0IGNvbXBhcmVfc3RhdGUgKGEgOiBzdGF0ZSkgKGIgOiBzdGF0ZSkgPSBjb21wYXJlIChhIDo+IGludCkgKGIgOj4gaW50KVxuICAgIGxldCBzdGF0ZV90b19zdHJpbmcgKHN0YXRlIDogc3RhdGUpID0gSW50LnRvX3N0cmluZyAoc3RhdGUgOj4gaW50KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEludGVybmFsaGFzaFxuXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgY3JlYXRlID9zZWVkICgpID0gcmVzZXQgP3NlZWQgKGFsbG9jICgpKVxuICBsZXQgcnVuID9zZWVkIGZvbGRlciB4ID0gZ2V0X2hhc2hfdmFsdWUgKGZvbGRlciAocmVzZXQgP3NlZWQgKGFsbG9jICgpKSkgeClcbiAgbGV0IG9mX2ZvbGQgaGFzaF9mb2xkX3QgdCA9IGdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfdCAoY3JlYXRlICgpKSB0KVxuXG4gIG1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gICAgbW9kdWxlIEZvbGRpbmcgPSBGb2xkaW5nIChJbnRlcm5hbGhhc2gpXG4gICAgaW5jbHVkZSBGb2xkaW5nXG5cbiAgICAoKiBbRm9sZGluZ10gcHJvdmlkZXMgc29tZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIFtoYXNoXypdIGZ1bmN0aW9ucyBiZWxvdyxcbiAgICAgICBidXQgdGhleSBhcmUgaW5lZmZpY2llbnQgZm9yIHNvbWUgdXNlLWNhc2VzIGJlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgW2hhc2hfZm9sZF1cbiAgICAgICBmdW5jdGlvbnMuIEF0IHRoaXMgcG9pbnQsIHRoZSBbaGFzaF92YWx1ZV0gdHlwZSBoYXMgYmVlbiBmaXhlZCB0byBbaW50XSwgc28gdGhpc1xuICAgICAgIG1vZHVsZSBjYW4gcHJvdmlkZSBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMuICopXG5cbiAgICBsZXQgaGFzaF9jaGFyID0gQ2hhcjAudG9faW50XG5cbiAgICAoKiBUaGlzIGhhc2ggd2FzIGNob3NlbiBmcm9tIGhlcmU6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2JhZGJveS82MjY3NzQzXG5cbiAgICAgICBJdCBhdHRlbXB0cyB0byBmdWxmaWxsIHRoZSBwcmltYXJ5IGdvYWxzIG9mIGEgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbjpcblxuICAgICAgIC0gYSBiaXQgY2hhbmdlIGluIHRoZSBpbnB1dCBzaG91bGQgY2hhbmdlIH4xLzIgb2YgdGhlIG91dHB1dCBiaXRzXG4gICAgICAgLSB0aGUgb3V0cHV0IHNob3VsZCBiZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBvdXRwdXQgcmFuZ2VcbiAgICAgICAtIGlucHV0cyB0aGF0IGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIHNob3VsZG4ndCBsZWFkIHRvIG91dHB1dHMgdGhhdCBhcmUgY2xvc2UgdG9cbiAgICAgICAgIGVhY2ggb3RoZXIuXG4gICAgICAgLSBhbGwgYml0cyBvZiB0aGUgaW5wdXQgYXJlIHVzZWQgaW4gZ2VuZXJhdGluZyB0aGUgb3V0cHV0XG5cbiAgICAgICBJbiBvdXIgY2FzZSB3ZSBhbHNvIHdhbnQgaXQgdG8gYmUgZmFzdCwgbm9uLWFsbG9jYXRpbmcsIGFuZCBpbmxpbmFibGUuICAqKVxuICAgIGxldFtAaW5saW5lIGFsd2F5c10gaGFzaF9pbnQgKHQgOiBpbnQpID1cbiAgICAgIGxldCB0ID0gbG5vdCB0ICsgKHQgbHNsIDIxKSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI0KSBpblxuICAgICAgbGV0IHQgPSB0ICsgKHQgbHNsIDMpICsgKHQgbHNsIDgpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMTQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMikgKyAodCBsc2wgNCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAyOCkgaW5cbiAgICAgIHQgKyAodCBsc2wgMzEpXG4gICAgOztcblxuICAgIGxldCBoYXNoX2Jvb2wgeCA9IGlmIHggdGhlbiAxIGVsc2UgMFxuXG4gICAgZXh0ZXJuYWwgaGFzaF9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiQmFzZV9oYXNoX2RvdWJsZVwiIFtAQG5vYWxsb2NdXG5cbiAgICBsZXQgaGFzaF91bml0ICgpID0gMFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcbiIsIm9wZW4gSW1wb3J0MFxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICAgICB0aGVuIDBcbiAgICAgZWxzZSAoXG4gICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICAgfCBBdG9tIF9hX18wMDNfLCBBdG9tIF9iX18wMDRfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDNfIF9iX18wMDRfXG4gICAgICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgICAgfCBMaXN0IF9hX18wMDVfLCBMaXN0IF9iX18wMDZfIC0+IGNvbXBhcmVfbGlzdCBjb21wYXJlIF9hX18wMDVfIF9iX18wMDZfKVxuICAgICAgIDogdCAtPiB0IC0+IGludClcbjs7XG5cbmxldCByZWMgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEF0b20gX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBfYTBcbiAgICAgfCBMaXN0IF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX3QgaHN2IF9hMFxuICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuXG5hbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfY29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5sZXQgb2Zfc3RyaW5nID0gKClcbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9XG4gIHwgVzMyXG4gIHwgVzY0XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgVzMyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlczMlwiXG4gICAgfCBXNjQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzY0XCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IG51bV9iaXRzID0gZnVuY3Rpb25cbiAgfCBXMzIgLT4gMzJcbiAgfCBXNjQgLT4gNjRcbjs7XG5cbmxldCB3b3JkX3NpemUgPVxuICBtYXRjaCBTeXMud29yZF9zaXplX2luX2JpdHMgd2l0aFxuICB8IDMyIC0+IFczMlxuICB8IDY0IC0+IFc2NFxuICB8IF8gLT4gZmFpbHdpdGggXCJ1bmtub3duIHdvcmQgc2l6ZVwiXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByID0gcmVmIFsgXCJCYXNlLlNleHAucHBfaHVtXCIgXVxubGV0IGFsbCAoKSA9ICFyXG5sZXQgcmVnaXN0ZXIgcCA9IHIgOj0gcCA6OiAhclxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBwcCA6IEZvcm1hdHRlci50IC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9wcCAoTSA6IHNpZ1xuICAgIGluY2x1ZGUgU1xuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIGxldCAoKSA9IHJlZ2lzdGVyIChNLm1vZHVsZV9uYW1lIF4gXCIucHBcIilcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXIgKE0gOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbiAgUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgbGV0IHBwIGZvcm1hdHRlciB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm9ybWF0dGVyIChNLnRvX3N0cmluZyB0KVxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZXhuIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbltAQEBlbmRdXG5cbmxldCBleGl0ID0gU3RkbGliLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgU3RkbGliLlByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHQgYmFja3RyYWNlXG47O1xuXG5leHRlcm5hbCBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IDogdCAtPiBib29sID0gXCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4blwiXG5cbmxldCByZXJhaXNlIGV4biBzdHIgPVxuICBsZXQgZXhuJyA9IFJlcmFpc2VkIChzdHIsIGV4bikgaW5cbiAgaWYgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG5cbiAgdGhlbiAoXG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuJyBidClcbiAgZWxzZSByYWlzZSBleG4nXG47O1xuXG5sZXQgcmVyYWlzZWYgZXhjIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0ciAoKSAtPiByZXJhaXNlIGV4YyBzdHIpIGZvcm1hdFxubGV0IHRvX3N0cmluZyBleGMgPSBTZXhwLnRvX3N0cmluZ19odW0gfmluZGVudDoyIChzZXhwX29mX2V4biBleGMpXG5sZXQgdG9fc3RyaW5nX21hY2ggZXhjID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl9leG4gZXhjKVxubGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfZXhuXG5cbmxldCBwcm90ZWN0eCB+ZiB4IH4oZmluYWxseSA6IF8gLT4gdW5pdCkgPVxuICBtYXRjaCBmIHggd2l0aFxuICB8IHJlcyAtPlxuICAgIGZpbmFsbHkgeDtcbiAgICByZXNcbiAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgbGV0IGJ0ID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAoU3RkbGliLlByaW50ZXhjLnRvX3N0cmluZyB0KVxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXhuXCJcbiAgZW5kKVxuXG5sZXQgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2UgPVxuICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1cyAoKVxuICB0aGVuIFN0ZGxpYi5QcmludGV4Yy5wcmludF9yYXdfYmFja3RyYWNlIFN0ZGxpYi5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKCogT25lIHJlYXNvbiB0byBydW4gW2RvX2F0X2V4aXRdIGhhbmRsZXJzIGJlZm9yZSBwcmludGluZyBvdXQgdGhlIGVycm9yIG1lc3NhZ2UgaXNcbiAgICAgICB0aGF0IGl0IGhlbHBzIGN1cnNlcyBhcHBsaWNhdGlvbnMgYnJpbmcgdGhlIHRlcm1pbmFsIGluIGEgZ29vZCBzdGF0ZSwgb3RoZXJ3aXNlIHRoZVxuICAgICAgIGVycm9yIG1lc3NhZ2UgbWlnaHQgZ2V0IGNvcnJ1cHRlZC4gIEFsc28sIHRoZSBPQ2FtbCB0b3AtbGV2ZWwgdW5jYXVnaHQgZXhjZXB0aW9uXG4gICAgICAgaGFuZGxlciBkb2VzIHRoZSBzYW1lLiAqKVxuICAgIGlmIGRvX2F0X2V4aXRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICh0cnkgcHJpbnRfd2l0aF9iYWNrdHJhY2UgZXhjIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5XG4gICAgICAgICAgU3RkbGliLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoUmVyYWlzZWQgKHN0ciwgZXhuKSkgYnRcbjs7XG5cbmV4dGVybmFsIGNsZWFyX2JhY2t0cmFjZSA6IHVuaXQgLT4gdW5pdCA9IFwiQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3NcIiBbQEBub2FsbG9jXVxuXG5sZXQgcmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgZSA9XG4gICgqIFdlIGNsZWFyIHRoZSBiYWNrdHJhY2UgdG8gcmVkdWNlIGNvbmZ1c2lvbiwgc28gdGhhdCBwZW9wbGUgZG9uJ3QgdGhpbmsgd2hhdGV2ZXJcbiAgICAgaXMgc3RvcmVkIGNvcnJlc3BvbmRzIHRvIHRoaXMgcmFpc2UuICopXG4gIGNsZWFyX2JhY2t0cmFjZSAoKTtcbiAgU3RkbGliLnJhaXNlX25vdHJhY2UgZVxuOztcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyICgpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBjbGVhcl9iYWNrdHJhY2UgPSBjbGVhcl9iYWNrdHJhY2VcbmVuZFxuIiwiKCogYmVsb25ncyBpbiBDb21tb24sIGJ1dCBtb3ZlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSByZXR1cm4gPSB7IHJldHVybiA6ICdiLiAnYSAtPiAnYiB9IFtAQHVuYm94ZWRdXG5cbmxldCB3aXRoX3JldHVybiAodHlwZSBhKSBmID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgKCogUmFpc2VkIHRvIGluZGljYXRlIH5yZXR1cm4gd2FzIGNhbGxlZC4gIExvY2FsIHNvIHRoYXQgdGhlIGV4Y2VwdGlvbiBpcyB0aWVkIHRvIGFcbiAgICAgICBwYXJ0aWN1bGFyIGNhbGwgb2YgW3dpdGhfcmV0dXJuXS4gKilcbiAgICBleGNlcHRpb24gUmV0dXJuIG9mIGFcbiAgZW5kXG4gIGluXG4gIGxldCBpc19hbGl2ZSA9IHJlZiB0cnVlIGluXG4gIGxldCByZXR1cm4gYSA9XG4gICAgaWYgbm90ICFpc19hbGl2ZVxuICAgIHRoZW4gZmFpbHdpdGggXCJ1c2Ugb2YgW3JldHVybl0gZnJvbSBhIFt3aXRoX3JldHVybl0gdGhhdCBhbHJlYWR5IHJldHVybmVkXCI7XG4gICAgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIChNLlJldHVybiBhKVxuICBpblxuICB0cnlcbiAgICBsZXQgYSA9IGYgeyByZXR1cm4gfSBpblxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIGFcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIGlzX2FsaXZlIDo9IGZhbHNlO1xuICAgIChtYXRjaCBleG4gd2l0aFxuICAgICB8IE0uUmV0dXJuIGEgLT4gYVxuICAgICB8IF8gLT4gcmFpc2UgZXhuKVxuOztcblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiBmID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICBmIHsgcmV0dXJuID0gKGZ1biBhIC0+IHJldHVybi5yZXR1cm4gKFNvbWUgYSkpIH07XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IChfW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuKCogdGhpcyBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgW1N0ZGxpYi5pZ25vcmVdICopXG5cbmxldCBub24gZiB4ID0gbm90IChmIHgpXG5cbmxldCBmb3JldmVyIGYgPVxuICBsZXQgcmVjIGZvcmV2ZXIgKCkgPVxuICAgIGYgKCk7XG4gICAgZm9yZXZlciAoKVxuICBpblxuICB0cnkgZm9yZXZlciAoKSB3aXRoXG4gIHwgZSAtPiBlXG47O1xuXG5leHRlcm5hbCBpZCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuKCogVGhlIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoZXNlIGZ1bmN0aW9ucyBpcyB0byBwYXNzIGluIGZ1bmN0aW9uYWwgYXJndW1lbnRzIGFuZCBnZXRcbiAgIGZ1bmN0aW9ucyBhcyBhIHJlc3VsdC4gKilcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IHJlYyBhcHBseV9uX3RpbWVzIH5uIGYgeCA9IGlmIG4gPD0gMCB0aGVuIHggZWxzZSBhcHBseV9uX3RpbWVzIH5uOihuIC0gMSkgZiAoZiB4KVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBUaGUgZm9sbG93aW5nIGlkZW50aXRpZXMgb3VnaHQgdG8gaG9sZCAoZm9yIHNvbWUgdmFsdWUgb2YgPSk6XG5cbiAgICAgIC0gW3JldHVybiB4ID4+PSBmID0gZiB4XVxuICAgICAgLSBbdCA+Pj0gZnVuIHggLT4gcmV0dXJuIHggPSB0XVxuICAgICAgLSBbKHQgPj49IGYpID4+PSBnID0gdCA+Pj0gZnVuIHggLT4gKGYgeCA+Pj0gZyldXG5cbiAgICAgIE5vdGU6IFs+Pj1dIGlzIHRoZSBpbmZpeCBub3RhdGlvbiBmb3IgW2JpbmRdKSAqKVxuXG4gICgqKiBUaGUgW21hcF0gYXJndW1lbnQgdG8gW01vbmFkLk1ha2VdIHNheXMgaG93IHRvIGltcGxlbWVudCB0aGUgbW9uYWQncyBbbWFwXSBmdW5jdGlvbi5cbiAgICAgIFtgRGVmaW5lX3VzaW5nX2JpbmRdIG1lYW5zIHRvIGRlZmluZSBbbWFwIHQgfmYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSldLlxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuXG5cbiAgICAgIFNvbWUgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtNb25hZC5NYWtlXSBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbbWFwXSwgc29cbiAgICAgIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbWFwXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmX2xhYmVsZWRfZm4gXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpY19sb2NhbCA9XG4gIEJhc2ljX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEluZml4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuXG4gICgqKiBbdCA+Pj0gZl0gcmV0dXJucyBhIGNvbXB1dGF0aW9uIHRoYXQgc2VxdWVuY2VzIHRoZSBjb21wdXRhdGlvbnMgcmVwcmVzZW50ZWQgYnkgdHdvXG4gICAgICBtb25hZCBlbGVtZW50cy4gIFRoZSByZXN1bHRpbmcgY29tcHV0YXRpb24gZmlyc3QgZG9lcyBbdF0gdG8geWllbGQgYSB2YWx1ZSBbdl0sIGFuZFxuICAgICAgdGhlbiBydW5zIHRoZSBjb21wdXRhdGlvbiByZXR1cm5lZCBieSBbZiB2XS4gKilcbiAgdmFsICggPj49ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmblxuXG4gICgqKiBbdCA+PnwgZl0gaXMgW3QgPj49IChmdW4gYSAtPiByZXR1cm4gKGYgYSkpXS4gKilcbiAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZm5cbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4X2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2Jcbm1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4X2dlbiA9IHNpZ1xuICAoKiogT3BlbmluZyBhIG1vZHVsZSBvZiB0aGlzIHR5cGUgYWxsb3dzIG9uZSB0byB1c2UgdGhlIFslYmluZF0gYW5kIFslbWFwXSBzeW50YXhcbiAgICAgIGV4dGVuc2lvbnMgZGVmaW5lZCBieSBwcHhfbGV0LCBhbmQgYnJpbmdzIFtyZXR1cm5dIGludG8gc2NvcGUuICopXG5cbiAgdHlwZSAnYSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICgqKiBUaGVzZSBhcmUgY29udmVuaWVudCB0byBoYXZlIGluIHNjb3BlIHdoZW4gcHJvZ3JhbW1pbmcgd2l0aCBhIG1vbmFkOiAqKVxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheCA9XG4gIFN5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXhfbG9jYWwgPVxuICBTeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGUgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4X2dlbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYiwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW1N0ZGxpYi5pZ25vcmVdLiAgU29tZSBtb25hZHMgc3RpbGwgZG8gW2xldCBpZ25vcmUgPSBpZ25vcmVfbV0gZm9yIGhpc3RvcmljYWxcbiAgICAgIHJlYXNvbnMuICopXG4gIHZhbCBpZ25vcmVfbSA6ICdhIHQgLT4gdW5pdCB0XG5cbiAgdmFsIGFsbCA6ICdhIHQgbGlzdCAtPiAnYSBsaXN0IHRcblxuICAoKiogTGlrZSBbYWxsXSwgYnV0IGVuc3VyZXMgdGhhdCBldmVyeSBtb25hZGljIHZhbHVlIGluIHRoZSBsaXN0IHByb2R1Y2VzIGEgdW5pdCB2YWx1ZSxcbiAgICAgIGFsbCBvZiB3aGljaCBhcmUgZGlzY2FyZGVkIHJhdGhlciB0aGFuIGJlaW5nIGNvbGxlY3RlZCBpbnRvIGEgbGlzdC4gKilcbiAgdmFsIGFsbF91bml0IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N5bnRheF9sb2NhbCA9XG4gIFNfd2l0aG91dF9zeW50YXhfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2xvY2FsID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N5bnRheF9sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU3ludGF4X2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpYzJfZ2VuID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGdldHMgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZSBjb21wdXRhdGlvbi5cbiAgICAgIFRoaXMgaXMgdXNlZCB0byBlbmNvZGUgbW9uYWRzIHdvcmtpbmcgb24gYSBtdWx0aSBwYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgbGlrZVxuICAgICAgKFsoJ2EsJ2IpIHJlc3VsdF0pLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljMl9sb2NhbCA9XG4gIEJhc2ljMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBJbmZpeDJfZ2VuID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmblxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmblxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG5tb2R1bGUgdHlwZSBJbmZpeDJfbG9jYWwgPSBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9nZW4gPSBzaWdcbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cbiAgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdlKSB0IC0+ICgnYiwgJ2UpIHQgLT4gKCdhICogJ2IsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgU3ludGF4Ml9sb2NhbCA9XG4gIFN5bnRheDJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9nZW4gPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0d28gYXJndW1lbnRzLiBUaGUgc2Vjb25kIGlzIGFsd2F5cyBqdXN0XG4gICAgICBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIGluY2x1ZGVcbiAgICBJbmZpeDJfZ2VuIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICBpbmNsdWRlXG4gICAgU3ludGF4Ml9nZW5cbiAgICB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0XG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG4gICAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSAoJ2EsICdiKSBmX2xhYmVsZWRfZm5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggOlxuICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID1cbiAgUzJfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYiBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTMl9sb2NhbCA9XG4gIFMyX2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWMzID0gc2lnXG4gICgqKiBNdWx0aSBwYXJhbWV0ZXIgbW9uYWQuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgZ2V0IHVuaWZpZWQgYWNyb3NzIGFsbCB0aGVcbiAgICAgIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeDMgPSBzaWdcbiAgKCoqIFNhbWUgYXMgSW5maXgsIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBhcmVcbiAgICAgIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MyA9IHNpZ1xuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5cbiAgICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2IsICdkLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2QsICdlKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmRcbiAgICAgIGFuZCB0aGlyZCBhcmUgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZCwgJ2UpIHQsICdkLCAnZSkgdCAtPiAoJ2EsICdkLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2QsICdlKSB0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2QsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdkLCAnZSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2QsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBzaWdcbiAgKCoqIEluZGV4ZWQgbW9uYWQsIGluIHRoZSBzdHlsZSBvZiBBdGtleS4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhcmUgY29tcG9zZWRcbiAgICAgIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uIFRvIHNlZSB0aGlzIG1vcmUgY2xlYXJseSwgeW91IGNhbiBsb29rIGF0IHRoZSB0eXBlIG9mIGJpbmQ6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICBdfVxuXG4gICAgICBhbmQgaXNvbGF0ZSBzb21lIG9mIHRoZSB0eXBlIHZhcmlhYmxlcyB0byBzZWUgdGhlaXIgaW5kaXZpZHVhbCBiZWhhdmlvcnM6XG5cbiAgICAgIHtbXG4gICAgICAgIHZhbCBiaW5kIDogJ2EgICAgICAgICAgICAgLT4gZjooJ2EgLT4gICdiICAgICAgICAgICApIC0+ICAnYlxuICAgICAgICB2YWwgYmluZCA6ICAgICAgJ2ksICdqICAgIC0+ICAgICAgICAgICAgICAgJ2osICdrICAgICAtPiAgICAgJ2ksICdrXG4gICAgICBdfVxuXG4gICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBBdGtleS1zdHlsZSBpbmRleGVkIG1vbmFkcywgc2VlOlxuXG4gICAgICB7dlxuICAgICAgICBQYXJhbWV0ZXJpc2VkIE5vdGlvbnMgb2YgQ29tcHV0YXRpb25cbiAgICAgICAgUm9iZXJ0IEF0a2V5XG4gICAgICAgIGh0dHA6Ly9iZW50bmliLm9yZy9wYXJhbW5vdGlvbnMtamZwLnBkZlxuICAgICAgdn0gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsICggPj58ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5cbiAgICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICAgICAgdmFsIGJvdGggOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2IsICdqLCAnaykgdCAtPiAoJ2EgKiAnYiwgJ2ksICdrKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19pbmRleGVkID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgaW5jbHVkZSBTeW50YXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdqLCAnaykgdCwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdrKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnaSwgJ2opIHQgLT4gKHVuaXQsICdpLCAnaikgdFxuICB2YWwgYWxsIDogKCdhLCAnaSwgJ2kpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2ksICdpKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnaSwgJ2kpIHQgbGlzdCAtPiAodW5pdCwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFNfdG9fU19pbmRleGVkIChYIDogUykgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTX2luZGV4ZWRfdG9fUzIgKFggOiBTX2luZGV4ZWQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCAnZSkgWC50XG5lbmRcblxubW9kdWxlIHR5cGUgTW9uYWQgPSBzaWdcbiAgKCoqIEEgbW9uYWQgaXMgYW4gYWJzdHJhY3Rpb24gb2YgdGhlIGNvbmNlcHQgb2Ygc2VxdWVuY2luZyBvZiBjb21wdXRhdGlvbnMuICBBIHZhbHVlIG9mXG4gICAgICB0eXBlIFsnYSBtb25hZF0gcmVwcmVzZW50cyBhIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyBhIHZhbHVlIG9mIHR5cGUgWydhXS4gKilcblxuICBtb2R1bGUgdHlwZSBCYXNpYyA9IEJhc2ljXG4gIG1vZHVsZSB0eXBlIEJhc2ljMiA9IEJhc2ljMlxuICBtb2R1bGUgdHlwZSBCYXNpYzMgPSBCYXNpYzNcbiAgbW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IEJhc2ljX2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgQmFzaWNfbG9jYWwgPSBCYXNpY19sb2NhbFxuICBtb2R1bGUgdHlwZSBCYXNpYzJfbG9jYWwgPSBCYXNpYzJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXggPSBJbmZpeFxuICBtb2R1bGUgdHlwZSBJbmZpeDIgPSBJbmZpeDJcbiAgbW9kdWxlIHR5cGUgSW5maXgzID0gSW5maXgzXG4gIG1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBJbmZpeF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4X2xvY2FsID0gSW5maXhfbG9jYWxcbiAgbW9kdWxlIHR5cGUgSW5maXgyX2xvY2FsID0gSW5maXgyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFN5bnRheCA9IFN5bnRheFxuICBtb2R1bGUgdHlwZSBTeW50YXgyID0gU3ludGF4MlxuICBtb2R1bGUgdHlwZSBTeW50YXgzID0gU3ludGF4M1xuICBtb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IFN5bnRheF9pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9sb2NhbCA9IFN5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTeW50YXgyX2xvY2FsID0gU3ludGF4Ml9sb2NhbFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsID0gU193aXRob3V0X3N5bnRheF9sb2NhbFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIFNfbG9jYWwgPSBTX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFMyX2xvY2FsID0gUzJfbG9jYWxcblxuICBtb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMiAoWCA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcbiAgbW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgbW9kdWxlIE1ha2VfaW5kZXhlZCAoWCA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9sb2NhbCAoWCA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50XG4gIG1vZHVsZSBNYWtlMl9sb2NhbCAoWCA6IEJhc2ljMl9sb2NhbCkgOiBTMl9sb2NhbCB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBYLnRcblxuICAoKiogRGVmaW5lIGEgbW9uYWQgdGhyb3VnaCBhbiBpc29tb3JwaGlzbSB3aXRoIGFuIGV4aXN0aW5nIG1vbmFkLiBGb3IgZXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSAnYSB0ID0geyB2YWx1ZSA6ICdhIH1cblxuICAgICAgICBpbmNsdWRlIE1vbmFkLk9mX21vbmFkIChNb25hZC5JZGVudCkgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICAgICAgbGV0IHRvX21vbmFkIHsgdmFsdWUgfSA9IHZhbHVlXG4gICAgICAgICAgICBsZXQgb2ZfbW9uYWQgdmFsdWUgPSB7IHZhbHVlIH1cbiAgICAgICAgICBlbmQpXG4gICAgICBdfSAqKVxuICBtb2R1bGUgT2ZfbW9uYWRcbiAgICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQyXG4gICAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkM1xuICAgICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnRcblxuICAoKiogQW4gZWFnZXIgaWRlbnRpdHkgbW9uYWQgd2l0aCBmdW5jdGlvbnMgaGVhdmlseSBhbm5vdGF0ZWQgd2l0aFxuICAgICAgW0BpbmxpbmVkXSBvciBbQGlubGluZSBoaW50XS5cblxuICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIG1hbnVhbGx5IHdyaXR0ZW4sIHJhdGhlciB0aGFuIGJlaW5nXG4gICAgICBjb25zdHJ1Y3RlZCBieSBbTW9uYWQuTWFrZV0uIFRoaXMgZ2l2ZXMgYmV0dGVyIGlubGluaW5nXG4gICAgICBndWFyYW50ZWVzLlxuICAqKVxuICBtb2R1bGUgSWRlbnQgOiBTX2xvY2FsIHdpdGggdHlwZSAnYSB0ID0gJ2FcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1vbmFkX2ludGZcblxubW9kdWxlIHR5cGUgQmFzaWNfZ2VuZXJhbCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICB2YWwgYmluZFxuICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbmVyYWwgKE0gOiBCYXNpY19nZW5lcmFsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgbGV0IG1hcF92aWFfYmluZCBtYSB+ZiA9IE0uYmluZCBtYSB+ZjooZnVuIGEgLT4gTS5yZXR1cm4gKGYgYSkpXG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggTS5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19iaW5kIC0+IG1hcF92aWFfYmluZFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCBhIGIgPSBhID4+PSBmdW4gYSAtPiBiID4+fCBmdW4gYiAtPiBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IGZ1biB0JyAtPiB0J1xuICBsZXQgaWdub3JlX20gdCA9IG1hcCB0IH5mOihmdW4gXyAtPiAoKSlcblxuICBsZXQgYWxsID1cbiAgICBsZXQgcmVjIGxvb3AgdnMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IHZzKVxuICAgICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biB2IC0+IGxvb3AgKHYgOjogdnMpIHRzXG4gICAgaW5cbiAgICBmdW4gdHMgLT4gbG9vcCBbXSB0c1xuICA7O1xuXG4gIGxldCByZWMgYWxsX3VuaXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biAoKSAtPiBhbGxfdW5pdCB0c1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2luZGV4ZWQgKE0gOiBCYXNpY19pbmRleGVkKSA6XG4gIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UzIChNIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgTS50ID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTIgKE0gOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgOj0gKCdhLCAnZCkgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChNIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyX2xvY2FsIChNIDogQmFzaWMyX2xvY2FsKSA9IHN0cnVjdFxuICBsZXQgYmluZCA9IE0uYmluZFxuICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID1cbiAgICBsZXQgcmVzID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSkgaW5cbiAgICByZXNcbiAgOztcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcblxuICAgICAgbGV0IGJvdGggYSBiID1cbiAgICAgICAgbGV0IHJlcyA9XG4gICAgICAgICAgYmluZCBhIH5mOihmdW4gYSAtPlxuICAgICAgICAgICAgbGV0IHJlcyA9IG1hcCBiIH5mOihmdW4gYiAtPiBhLCBiKSBpblxuICAgICAgICAgICAgcmVzKVxuICAgICAgICBpblxuICAgICAgICByZXNcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGpvaW4gdCA9IHQgPj49IEZuLmlkXG5cbiAgbGV0IGlnbm9yZV9tIHQgPVxuICAgIGxldCByZXMgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9sb2NhbCAoTSA6IEJhc2ljX2xvY2FsKSA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID1cbiAgTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgTS50XG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2dlbmVyYWwgKE1vbmFkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICB2YWwgYmluZFxuICAgICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAgIC0+ICgnYiwgJ2ksICdrLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbiAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50XG4gICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudCAtPiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAgIGVuZCkgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiBhID0gTS5vZl9tb25hZCAoTW9uYWQucmV0dXJuIGEpXG4gICAgbGV0IGJpbmQgdCB+ZiA9IE0ub2ZfbW9uYWQgKE1vbmFkLmJpbmQgKE0udG9fbW9uYWQgdCkgfmY6KGZ1biBhIC0+IE0udG9fbW9uYWQgKGYgYSkpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gdCB+ZiAtPiBNLm9mX21vbmFkIChNb25hZC5tYXAgKE0udG9fbW9uYWQgdCkgfmYpKVxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgKE1vbmFkIDogU19pbmRleGVkKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnaSwgJ2opIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2opIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDNcbiAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDJcbiAgICAoTW9uYWQgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IpIE1vbmFkLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkXG4gICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXRbQGlubGluZV0gYmluZCBhIH5mID0gKGYgW0BpbmxpbmVkIGhpbnRdKSBhXG4gIGxldFtAaW5saW5lXSBtYXAgYSB+ZiA9IChmIFtAaW5saW5lZCBoaW50XSkgYVxuXG4gIGV4dGVybmFsIHJldHVybiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXRbQGlubGluZV0gKCA+PnwgKSBhIGYgPSBtYXAgYSB+ZlxuICAgIGxldFtAaW5saW5lXSAoID4+PSApIGEgZiA9IGJpbmQgYSB+ZlxuICBlbmRcblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXRbQGlubGluZV0gYm90aCBhIGIgPSBhLCBiXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kXG5cbiAgZXh0ZXJuYWwgam9pbiA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgaWdub3JlX20gOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbF91bml0IDogKHVuaXQgbGlzdFtAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG4gIGV4dGVybmFsIGFsbCA6ICgnYSBsaXN0W0Bsb2NhbF9vcHRdKSAtPiAoJ2EgbGlzdFtAbG9jYWxfb3B0XSkgPSBcIiVpZGVudGl0eVwiXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbigqKiBUaGlzIG1vZHVsZSBzZXJ2ZXMgbW9zdGx5IGFzIGEgcGFydGlhbCBjaGVjayB0aGF0IFtTMl0gYW5kIFtTXSBhcmUgaW4gc3luYywgYnV0XG4gICAgYWN0dWFsbHkgY2FsbGluZyBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsLiAqKVxubW9kdWxlIFNfdG9fUzIgKFggOiBTKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChUIDogVC5UKSAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgVC50KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTM190b19TMiAoVCA6IFQuVCkgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCkgdCA9ICgnYSwgJ2QsIFQudCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MgKFQxIDogVC5UKSAoVDIgOiBULlQpIChYIDogUzMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgVDEudCwgVDIudCkgWC50ID1cbnN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIFQxLnQsIFQyLnQpIFgudFxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2FwcGx5IC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGxldCBtYXAyIHRhIHRiIH5mID0gbWFwIH5mIHRhIDwqPiB0YlxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9IG1hcCB+ZiB0YSA8Kj4gdGIgPCo+IHRjXG4gIGxldCBhbGwgdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KG1hcDIgfmY6KGZ1biB4IHhzIC0+IHggOjogeHMpKVxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0ICggKj4gKSB1IHYgPSByZXR1cm4gKGZ1biAoKSB5IC0+IHkpIDwqPiB1IDwqPiB2XG4gIGxldCAoIDwqICkgdSB2ID0gcmV0dXJuIChmdW4geCAoKSAtPiB4KSA8Kj4gdSA8Kj4gdlxuICBsZXQgYWxsX3VuaXQgdHMgPSBMaXN0LmZvbGQgdHMgfmluaXQ6KHJldHVybiAoKSkgfmY6KCAqPiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPCo+ICkgPSAoIDwqPiApXG4gICAgbGV0ICggKj4gKSA9ICggKj4gKVxuICAgIGxldCAoIDwqICkgPSAoIDwqIClcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoWCA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MykgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFhcbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEltcGxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4MikgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHR5cGUgU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDNcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsICdkLCBfKSB0ID0gKCdhLCAnZCkgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4XG4gICAgKFggOiBGb3JfbGV0X3N5bnRheCkgKEludGYgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZClcbiAgICAoSW1wbCA6IEludGYuUykgPVxuICBNYWtlX2xldF9zeW50YXgyXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBYXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgWC50XG4gICAgZW5kKVxuICAgIChJbnRmKVxuICAgIChJbXBsKVxuXG4oKiogVGhpcyBmdW5jdG9yIGNsb3NlbHkgcmVzZW1ibGVzIFtNYWtlM10sIGFuZCBpbmRlZWQgaXQgY291bGQgYmUgaW1wbGVtZW50ZWRcbiAgICBtdWNoIHNob3J0ZXIgaW4gdGVybXMgb2YgW01ha2UzXS4gSG93ZXZlciwgd2UgaW1wbGVtZW50IGl0IGJ5IGhhbmQgc28gdGhhdFxuICAgIHRoZSByZXN1bHRpbmcgZnVuY3Rpb25zIGFyZSBtb3JlIGVmZmljaWVudCwgZS5nLiB1c2luZyBbbWFwMl0gZGlyZWN0bHkgaW5zdGVhZCBvZlxuICAgIGRlZmluaW5nIFthcHBseV0gaW4gdGVybXMgb2YgaXQgYW5kIHRoZW4gW21hcDJdIGluIHRlcm1zIG9mIHRoYXQuIEZvciBtb3N0XG4gICAgYXBwbGljYXRpdmVzIHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgZm9yIHNvbWUgKHN1Y2ggYXMgQm9uc2FpLlZhbHVlLnQpLCBpdCBoYXMgYVxuICAgIGxhcmdlciBpbXBhY3QuICopXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMiAoWCA6IEJhc2ljM191c2luZ19tYXAyKSA6XG4gIFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gcmV0dXJuIGYgPCo+IHRcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBYLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX21hcDIgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwMiAobWFwMiB0YSB0YiB+ZikgdGMgfmY6KGZ1biBmYWIgYyAtPiBmYWIgYylcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMiAoWCA6IEJhc2ljMl91c2luZ19tYXAyKSA6XG4gIFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDIgKFggOiBCYXNpY191c2luZ19tYXAyKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID1cbiAgTWFrZTJfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTNfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljM191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMzX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCBhcHBseSB0ZiB0YSA9IG1hcDIgdGYgdGEgfmY6KGZ1biBmIGEgLT4gZiBhKVxuICBsZXQgKCA8Kj4gKSA9IGFwcGx5XG4gIGxldCBkZXJpdmVkX21hcCB0IH5mID0gbWFwMiB+ZjooZnVuICgpIC0+IGYpIChyZXR1cm4gKCkpIHQgW0Bub250YWlsXVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSBtYXAgLT4gbWFwXG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGJvdGggdGEgdGIgPSBtYXAyIHRhIHRiIH5mOihmdW4gYSBiIC0+IGEsIGIpXG5cbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPVxuICAgIGxldCByZXMgPSBtYXAyIChib3RoIHRhIHRiKSB0YyB+ZjooZnVuIChhLCBiKSBjIC0+IGYgYSBiIGMpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCAoICo+ICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biAoKSB5IC0+IHkpXG4gIGxldCAoIDwqICkgdSB2ID0gbWFwMiB1IHYgfmY6KGZ1biB4ICgpIC0+IHgpXG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljMl91c2luZ19tYXAyX2xvY2FsKSA6XG4gIFMyX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudCA9IE1ha2UzX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX21hcDJfbG9jYWwgKFggOiBCYXNpY191c2luZ19tYXAyX2xvY2FsKSA6XG4gIFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgWC50ID0gTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyIChNIDogTW9uYWQuUzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgTS50ID0gTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIE0udFxuXG4gICAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gICAgbGV0IGFwcGx5IG1mIG14ID0gTS5iaW5kIG1mIH5mOihmdW4gZiAtPiBNLm1hcCBteCB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBNLm1hcFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZCAoTSA6IE1vbmFkLlMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBPZl9tb25hZDIgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgQ29tcG9zZSAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50IEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgRy50XG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IEcucmV0dXJuIChGLnJldHVybiBhKVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRy5hcHBseSAoRy5tYXAgfmY6Ri5hcHBseSB0ZikgdHhcbiAgICAgIGxldCBjdXN0b21fbWFwIHQgfmYgPSBHLm1hcCB+ZjooRi5tYXAgfmYpIHRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFBhaXIgKEYgOiBTKSAoRyA6IFMpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBGLnQgKiAnYSBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRi5yZXR1cm4gYSwgRy5yZXR1cm4gYVxuICAgICAgbGV0IGFwcGx5IHRmIHR4ID0gRi5hcHBseSAoZnN0IHRmKSAoZnN0IHR4KSwgRy5hcHBseSAoc25kIHRmKSAoc25kIHR4KVxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEYubWFwIH5mIChmc3QgdCksIEcubWFwIH5mIChzbmQgdClcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIGN1c3RvbV9tYXBcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICEnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSBjb21wYXJhdG9yIC0+ICgnYSB0LCAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkIChNIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgISdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYikgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDIgKE0gOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdhLCAnYikgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQyX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcF9hKSBjb21wYXJhdG9yXG4gICAgLT4gKCdiLCAnY21wX2IpIGNvbXBhcmF0b3JcbiAgICAtPiAoKCdhLCAnYiwgXykgdCwgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZDJfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2EgLT4gJ2EgLT4gaW50KVxuICAgICAgLT4gKCdiIC0+ICdiIC0+IGludClcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYiwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoISdjbXBfYSwgISdjbXBfYikgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSBiID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgIDsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgYi5zZXhwX29mX3RcbiAgICB9XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnZiwgJ3MpIHQgPVxuICB8IEZpcnN0IG9mICdmXG4gIHwgU2Vjb25kIG9mICdzXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6XG4gICdmICdzLiAoJ2YgLT4gJ2YgLT4gaW50KSAtPiAoJ3MgLT4gJ3MgLT4gaW50KSAtPiAoJ2YsICdzKSB0IC0+ICgnZiwgJ3MpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2YgX2NtcF9fcyBhX18wMDFfIGJfXzAwMl8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgIHwgRmlyc3QgX2FfXzAwM18sIEZpcnN0IF9iX18wMDRfIC0+IF9jbXBfX2YgX2FfXzAwM18gX2JfXzAwNF9cbiAgICB8IEZpcnN0IF8sIF8gLT4gLTFcbiAgICB8IF8sIEZpcnN0IF8gLT4gMVxuICAgIHwgU2Vjb25kIF9hX18wMDVfLCBTZWNvbmQgX2JfXzAwNl8gLT4gX2NtcF9fcyBfYV9fMDA1XyBfYl9fMDA2Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgZiBzLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoZiwgcykgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2YgX2hhc2hfZm9sZF9zIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBGaXJzdCBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfZiBoc3YgX2EwXG4gIHwgU2Vjb25kIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9zIGhzdiBfYTBcbjs7XG5cbmxldCB0X29mX3NleHAgOlxuICAnZiAncy5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnZikgLT4gKFNleHBsaWIwLlNleHAudCAtPiAncykgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnZiwgJ3MpIHRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDIzXyBzX18wMjRfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gZl9fMDIzXykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBzX18wMjRfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoZl9fMDIzXywgc19fMDI0XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMTFfID0gXCJlaXRoZXIwLm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfZl9fMDA3XyBfb2Zfc19fMDA4XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJmaXJzdFwiIHwgXCJGaXJzdFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9mX18wMDdfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgICAgRmlyc3QgcmVzMF9fMDE3X1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAxMV9cbiAgICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInNlY29uZFwiIHwgXCJTZWNvbmRcIikgYXMgX3RhZ19fMDE5XykgOjogc2V4cF9hcmdzX18wMjBfKSBhc1xuICAgICAgICBfc2V4cF9fMDE4XyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMjBfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMjFfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2Zfc19fMDA4XyBhcmcwX18wMjFfIGluXG4gICAgICAgICAgIFNlY29uZCByZXMwX18wMjJfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxOV9cbiAgICAgICAgICAgICBfc2V4cF9fMDE4XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBzZXhwX18wMTJfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDEwXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuICAgICAgfCBzZXhwX18wMTBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMTFfIHNleHBfXzAxMF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnZiAncy5cbiAgKCdmIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdmLCAncykgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgZl9fMDMxXyBzX18wMzJfKVxuICAgICAgOiAgKChmX18wMzFfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAzMl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChmX18wMzFfLCBzX18wMzJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2ZfXzAyNV8gX29mX3NfXzAyNl8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgYXJnMF9fMDI3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI4XyA9IF9vZl9mX18wMjVfIGFyZzBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmlyc3RcIjsgcmVzMF9fMDI4XyBdXG4gICAgICB8IFNlY29uZCBhcmcwX18wMjlfIC0+XG4gICAgICAgIGxldCByZXMwX18wMzBfID0gX29mX3NfXzAyNl8gYXJnMF9fMDI5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZWNvbmRcIjsgcmVzMF9fMDMwXyBdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAnZiAncy5cbiAgJ2YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gJ3MgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgLT4gKCdmLCAncykgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIGZ1biBfJ2Zfc2V4cF9ncmFtbWFyIF8nc19zZXhwX2dyYW1tYXIgLT5cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkZpcnN0XCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydmX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJTZWNvbmRcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ3Nfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG4iLCIoKiBUaGUgdHlwZSBbdF0gc2hvdWxkIGJlIGFic3RyYWN0IHRvIG1ha2UgdGhlIGZzZXQgYW5kIHNldCBmdW5jdGlvbnMgdW5hdmFpbGFibGVcbiAgIGZvciBwcml2YXRlIHR5cGVzIGF0IHRoZSBsZXZlbCBvZiB0eXBlcyAoYW5kIG5vdCBieSBwdXR0aW5nIE5vbmUgaW4gdGhlIGZpZWxkKS5cbiAgIFVuZm9ydHVuYXRlbHksIG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCBtZWFucyB0aGF0IHdoZW4gY3JlYXRpbmcgZmllbGRzICh0aHJvdWdoXG4gICBhIFtjcmVhdGVdIGZ1bmN0aW9uKSB2YWx1ZSByZXN0cmljdGlvbiBraWNrcyBpbi4gVGhpcyBpcyB3b3JrZWQgYXJvdW5kIGJ5IGluc3RlYWRcbiAgIG5vdCBtYWtpbmcgdGhlIHR5cGUgYWJzdHJhY3QsIGJ1dCBmb3JjaW5nIGFueW9uZSBicmVha2luZyB0aGUgYWJzdHJhY3Rpb24gdG8gdXNlXG4gICB0aGUgW0Zvcl9nZW5lcmF0ZWRfY29kZV0gbW9kdWxlLCBtYWtpbmcgaXQgb2J2aW91cyB0byBhbnkgcmVhZGVyIHRoYXQgc29tZXRoaW5nIHVnbHlcbiAgIGlzIGdvaW5nIG9uLlxuICAgdF93aXRoX3Blcm0gKGFuZCBkZXJpdmF0aXZlcykgaXMgdGhlIHR5cGUgdGhhdCB1c2VycyByZWFsbHkgdXNlLiBJdCBpcyBhIGNvbnN0cnVjdG9yXG4gICBiZWNhdXNlOlxuICAgMS4gaXQgbWFrZXMgdHlwZSBlcnJvcnMgbW9yZSByZWFkYWJsZSAobGVzcyBhbGlhc2luZylcbiAgIDIuIHRoZSB0eXBlciBpbiBvY2FtbCA0LjAxIGFsbG93cyB0aGlzOlxuXG4gICB7W1xuICAgICBtb2R1bGUgQSA9IHN0cnVjdFxuICAgICAgIHR5cGUgdCA9IHthIDogaW50fVxuICAgICBlbmRcbiAgICAgdHlwZSB0ID0gQS50XG4gICAgIGxldCBmICh4IDogdCkgPSB4LmFcbiAgIF19XG5cbiAgIChhbHRob3VnaCB3aXRoIFdhcm5pbmcgNDA6IGEgaXMgdXNlZCBvdXQgb2Ygc2NvcGUpXG4gICB3aGljaCBtZWFucyB0aGF0IGlmIFt0X3dpdGhfcGVybV0gd2FzIHJlYWxseSBhbiBhbGlhcyBvbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdLFxuICAgcGVvcGxlIGNvdWxkIHNheSBbdC5zZXR0ZXJdIGFuZCBicmVhayB0aGUgYWJzdHJhY3Rpb24gd2l0aCBubyBpbmRpY2F0aW9uIHRoYXRcbiAgIHNvbWV0aGluZyB1Z2x5IGlzIGdvaW5nIG9uIGluIHRoZSBzb3VyY2UgY29kZS5cbiAgIFRoZSB3YXJuaW5nIGlzIChJIHRoaW5rKSBmb3IgcGVvcGxlIHdobyB3YW50IHRvIG1ha2UgdGhlaXIgY29kZSBjb21wYXRpYmxlIHdpdGhcbiAgIHByZXZpb3VzIHZlcnNpb25zIG9mIG9jYW1sLCBzbyB3ZSBtYXkgdmVyeSB3ZWxsIHR1cm4gaXQgb2ZmLlxuXG4gICBUaGUgdHlwZSB0X3dpdGhfcGVybSBjb3VsZCBhbHNvIGhhdmUgYmVlbiBhIFt1bml0IC0+IEZvcl9nZW5lcmF0ZWRfY29kZS50XSB0byB3b3JrXG4gICBhcm91bmQgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHRoZW4gW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSB3b3VsZCBoYXZlIGJlZW4gYSBwcm9wZXJcbiAgIGFic3RyYWN0IHR5cGUsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGNvdWxkIGltcGFjdCBwZXJmb3JtYW5jZSAoZm9yIGV4YW1wbGUsIGEgZm9sZCBvbiBhXG4gICByZWNvcmQgdHlwZSB3aXRoIDQwIGZpZWxkcyB3b3VsZCBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgNDAgW0Zvcl9nZW5lcmF0ZWRfY29kZS50XSdzIGF0XG4gICBldmVyeSBzaW5nbGUgZm9sZC4pICopXG5cbm1vZHVsZSBGb3JfZ2VuZXJhdGVkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdCA9XG4gICAgeyBmb3JjZV92YXJpYW5jZSA6ICdwZXJtIC0+IHVuaXRcbiAgICA7ICgqIGZvcmNlIFt0XSB0byBiZSBjb250cmF2YXJpYW50IGluIFsncGVybV0sIGJlY2F1c2UgcGhhbnRvbSB0eXBlIHZhcmlhYmxlcyBvblxuICAgICAgICAgY29uY3JldGUgdHlwZXMgZG9uJ3Qgd29yayB0aGF0IHdlbGwgb3RoZXJ3aXNlICh1c2luZyA6PiBjYW4gcmVtb3ZlIHRoZW0gZWFzaWx5KSAqKVxuICAgICAgbmFtZSA6IHN0cmluZ1xuICAgIDsgc2V0dGVyIDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvblxuICAgIDsgZ2V0dGVyIDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICA7IGZzZXQgOiAncmVjb3JkIC0+ICdmaWVsZCAtPiAncmVjb3JkXG4gICAgfVxuXG4gIGxldCBvcGFxdWVfaWRlbnRpdHkgPSBTeXMwLm9wYXF1ZV9pZGVudGl0eVxuZW5kXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtID1cbiAgfCBGaWVsZCBvZiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgRm9yX2dlbmVyYXRlZF9jb2RlLnRcbltAQHVuYm94ZWRdXG5cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgdCA9IChbIGBSZWFkIHwgYFNldF9hbmRfY3JlYXRlIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cbnR5cGUgKCdyZWNvcmQsICdmaWVsZCkgcmVhZG9ubHlfdCA9IChbIGBSZWFkIF0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm1cblxubGV0IG5hbWUgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLm5hbWVcbmxldCBnZXQgKEZpZWxkIGZpZWxkKSByID0gZmllbGQuZ2V0dGVyIHJcbmxldCBmc2V0IChGaWVsZCBmaWVsZCkgciB2ID0gZmllbGQuZnNldCByIHZcbmxldCBzZXR0ZXIgKEZpZWxkIGZpZWxkKSA9IGZpZWxkLnNldHRlclxuXG50eXBlICgncGVybSwgJ3JlY29yZCwgJ3Jlc3VsdCkgdXNlciA9XG4gIHsgZiA6ICdmaWVsZC4gKCdwZXJtLCAncmVjb3JkLCAnZmllbGQpIHRfd2l0aF9wZXJtIC0+ICdyZXN1bHQgfVxuXG5sZXQgbWFwIChGaWVsZCBmaWVsZCkgciB+ZiA9IGZpZWxkLmZzZXQgciAoZiAoZmllbGQuZ2V0dGVyIHIpKVxuXG5sZXQgdXBkYXRlciAoRmllbGQgZmllbGQpID1cbiAgbWF0Y2ggZmllbGQuc2V0dGVyIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHNldHRlciAtPiBTb21lIChmdW4gciB+ZiAtPiBzZXR0ZXIgciAoZiAoZmllbGQuZ2V0dGVyIHIpKSlcbjs7XG4iLCIoKiBbU3RyaW5nMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbU3RkbGliLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtTdGRsaWIuU3RyaW5nXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIHN0cmluZzAubWwgc2hvdWxkXG4gICB1c2UgW1N0ZGxpYi5TdHJpbmddLiAgW1N0cmluZzBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2Unc1xuICAgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncywgaW5jbHVkaW5nIHRoZSBzdWJzY3JpcHQgc3ludGF4IFt4LltpXV0gd2hpY2hcbiAgIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbU3RyaW5nXSwgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN0cmluZ10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgZ2V0IDogKHN0cmluZ1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChzdHJpbmdbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbmxldCBjb21wYXJlID0gU3RkbGliLlN0cmluZy5jb21wYXJlXG5sZXQgZXNjYXBlZCA9IFN0ZGxpYi5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG5sZXQgbWFrZSA9IFN0ZGxpYi5TdHJpbmcubWFrZVxubGV0IHN1YiA9IFN0ZGxpYi5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbmxldCB1bnNhZmVfYmxpdCA9IFN0ZGxpYi5TdHJpbmcudW5zYWZlX2JsaXRcbmxldCB1cHBlcmNhc2UgPSBTdGRsaWIuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxubGV0IHNwbGl0X29uX2NoYXIgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXJcblxubGV0IGNvbmNhdCA/KHNlcCA9IFwiXCIpIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBcIlwiXG4gICgqIFRoZSBzdGRsaWIgZG9lcyBub3Qgc3BlY2lhbGl6ZSB0aGlzIGNhc2UgYmVjYXVzZSBpdCBjb3VsZCBicmVhayBleGlzdGluZyBwcm9qZWN0cy4gKilcbiAgfCBbIHggXSAtPiB4XG4gIHwgbCAtPiBTdGRsaWIuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbmxldCBpdGVyIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RkbGliLkxleGluZy5wb3NpdGlvbiA9XG4gICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICA7IHBvc19sbnVtIDogaW50XG4gICAgOyBwb3NfYm9sIDogaW50XG4gICAgOyBwb3NfY251bSA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICAgICB0aGVuIDBcbiAgICAgICBlbHNlIChcbiAgICAgICAgIG1hdGNoIGNvbXBhcmVfc3RyaW5nIGFfXzAwMV8ucG9zX2ZuYW1lIGJfXzAwMl8ucG9zX2ZuYW1lIHdpdGhcbiAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfbG51bSBiX18wMDJfLnBvc19sbnVtIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfYm9sIGJfXzAwMl8ucG9zX2JvbCB3aXRoXG4gICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDAxXy5wb3NfY251bSBiX18wMDJfLnBvc19jbnVtXG4gICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGZ1biBoc3YgYXJnIC0+XG4gICAgICBsZXQgaHN2ID1cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgICAgICBoYXNoX2ZvbGRfc3RyaW5nIGhzdiBhcmcucG9zX2ZuYW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2xudW1cbiAgICAgICAgaW5cbiAgICAgICAgaGFzaF9mb2xkX2ludCBoc3YgYXJnLnBvc19ib2xcbiAgICAgIGluXG4gICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2NudW1cbiAgOztcblxuICBsZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgYXJnID1cbiAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gICAgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuIHsgcG9zX2ZuYW1lID0gcG9zX2ZuYW1lX18wMDRfXG4gICAgICAgICA7IHBvc19sbnVtID0gcG9zX2xudW1fXzAwNl9cbiAgICAgICAgIDsgcG9zX2JvbCA9IHBvc19ib2xfXzAwOF9cbiAgICAgICAgIDsgcG9zX2NudW0gPSBwb3NfY251bV9fMDEwX1xuICAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwM18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2NudW1cIjsgYXJnX18wMTFfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2JvbFwiOyBhcmdfXzAwOV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicG9zX2xudW1cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfZm5hbWVcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAzX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBTdGRsaWIuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sIH0gPVxuICBtYWtlX2xvY2F0aW9uX3N0cmluZyB+cG9zX2ZuYW1lIH5wb3NfbG51bSB+cG9zX2NudW0gfnBvc19ib2xcbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlzdDBcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtAbm9udGFpbF1cbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPVxuICB8IE9rIG9mICdhXG4gIHwgRXJyb3Igb2YgJ2JcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuXG5sZXQgdF9vZl9zZXhwIDpcbiAgJ2EgJ2IuXG4gIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpIC0+IFNleHBsaWIwLlNleHAudCAtPiAoJ2EsICdiKSB0XG4gID1cbiAgZnVuICh0eXBlIGFfXzAxN18gYl9fMDE4XylcbiAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxN18pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgLT4gKGFfXzAxN18sIGJfXzAxOF8pIHQpIC0+XG4gICAgbGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwicmVzdWx0Lm1sLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJva1wiIHwgXCJPa1wiKSBhcyBfdGFnX18wMDhfKSA6OiBzZXhwX2FyZ3NfXzAwOV8pIGFzXG4gICAgICAgIF9zZXhwX18wMDdfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAwOV8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAxMF8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDExXyA9IF9vZl9hX18wMDFfIGFyZzBfXzAxMF8gaW5cbiAgICAgICAgICAgT2sgcmVzMF9fMDExX1xuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNV9cbiAgICAgICAgICAgICBfdGFnX18wMDhfXG4gICAgICAgICAgICAgX3NleHBfXzAwN18pXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImVycm9yXCIgfCBcIkVycm9yXCIpIGFzIF90YWdfXzAxM18pIDo6IHNleHBfYXJnc19fMDE0XykgYXNcbiAgICAgICAgX3NleHBfXzAxMl8gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE0XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE1XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTZfID0gX29mX2JfXzAwMl8gYXJnMF9fMDE1XyBpblxuICAgICAgICAgICBFcnJvciByZXMwX18wMTZfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAxM19cbiAgICAgICAgICAgICBfc2V4cF9fMDEyXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm9rXCIgfCBcIk9rXCIpIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG47O1xuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAyNV8gYl9fMDI2XylcbiAgICAgIDogICgoYV9fMDI1XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMjZfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDI1XywgYl9fMDI2XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTlfIF9vZl9iX18wMjBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAyMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyMl8gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAyMl8gXVxuICAgICAgfCBFcnJvciBhcmcwX18wMjNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjRfID0gX29mX2JfXzAyMF8gYXJnMF9fMDIzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFcnJvclwiOyByZXMwX18wMjRfIF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6XG4gICdhICdiLlxuICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiT2tcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkVycm9yXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDMzXyBiX18wMzRfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBtYXRjaCBhX18wMzNfLCBiX18wMzRfIHdpdGhcbiAgICB8IE9rIF9hX18wMzVfLCBPayBfYl9fMDM2XyAtPiBfY21wX19hIF9hX18wMzVfIF9iX18wMzZfXG4gICAgfCBPayBfLCBfIC0+IGZhbHNlXG4gICAgfCBfLCBPayBfIC0+IGZhbHNlXG4gICAgfCBFcnJvciBfYV9fMDM3XywgRXJyb3IgX2JfXzAzOF8gLT4gX2NtcF9fYiBfYV9fMDM3XyBfYl9fMDM4Xylcbjs7XG5cbmxldCBoYXNoX2ZvbGRfdFxuICA6IHR5cGUgYSBiLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBiIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAoYSwgYikgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBPayBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gIHwgRXJyb3IgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMFxuOztcblxuW0BAQGVuZF1cblxubGV0IGdsb2JhbGl6ZSA9IGdsb2JhbGl6ZV9yZXN1bHRcblxuaW5jbHVkZSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgOztcblxuICAgIGxldCBtYXAgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBPayAoZiB4KVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgcmV0dXJuIHggPSBPayB4XG4gIGVuZClcblxubGV0IGludmFyaWFudCBjaGVja19vayBjaGVja19lcnJvciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgb2sgLT4gY2hlY2tfb2sgb2tcbiAgfCBFcnJvciBlcnJvciAtPiBjaGVja19lcnJvciBlcnJvclxuOztcblxubGV0IGZhaWwgeCA9IEVycm9yIHhcbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcblxubGV0IG1hcF9lcnJvciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgXyBhcyB4IC0+IHhcbiAgfCBFcnJvciB4IC0+IEVycm9yIChmIHgpXG47O1xuXG5tb2R1bGUgRXJyb3IgPSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCBiaW5kIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9rIF8gYXMgb2sgLT4gb2tcbiAgICAgIHwgRXJyb3IgZSAtPiBmIGVcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwX2Vycm9yXG4gICAgbGV0IHJldHVybiBlID0gRXJyb3IgZVxuICBlbmQpXG5cbmxldCBpc19vayA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IGZhbHNlXG4gIHwgRXJyb3IgXyAtPiB0cnVlXG47O1xuXG5sZXQgb2sgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gU29tZSB4XG4gIHwgRXJyb3IgXyAtPiBOb25lXG47O1xuXG5sZXQgZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gTm9uZVxuICB8IEVycm9yIHggLT4gU29tZSB4XG47O1xuXG5sZXQgb2Zfb3B0aW9uIG9wdCB+ZXJyb3IgPVxuICBtYXRjaCBvcHQgd2l0aFxuICB8IFNvbWUgeCAtPiBPayB4XG4gIHwgTm9uZSAtPiBFcnJvciBlcnJvclxuOztcblxubGV0IGl0ZXIgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIHggLT4gZiB4XG4gIHwgRXJyb3IgXyAtPiAoKVxuOztcblxubGV0IGl0ZXJfZXJyb3IgdiB+ZiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE9rIF8gLT4gKClcbiAgfCBFcnJvciB4IC0+IGYgeFxuOztcblxubGV0IHRvX2VpdGhlciA6IF8gdCAtPiBfIEVpdGhlci50ID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IEZpcnN0IHhcbiAgfCBFcnJvciB4IC0+IFNlY29uZCB4XG47O1xuXG5sZXQgb2ZfZWl0aGVyIDogXyBFaXRoZXIudCAtPiBfIHQgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gT2sgeFxuICB8IFNlY29uZCB4IC0+IEVycm9yIHhcbjs7XG5cbmxldCBva19pZl90cnVlIGJvb2wgfmVycm9yID0gaWYgYm9vbCB0aGVuIE9rICgpIGVsc2UgRXJyb3IgZXJyb3JcblxubGV0IHRyeV93aXRoIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgZXhuXG47O1xuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgb2tfb3JfZmFpbHdpdGggPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIHN0ciAtPiBmYWlsd2l0aCBzdHJcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ29rLCAnZXJyKSBfcmVzdWx0ID0gKCdvaywgJ2VycikgdCA9XG4gICAgfCBPayBvZiAnb2tcbiAgICB8IEVycm9yIG9mICdlcnJcblxuICBsZXQgaXNfZXJyb3IgPSBpc19lcnJvclxuICBsZXQgaXNfb2sgPSBpc19va1xuZW5kXG5cbmxldCBjb21iaW5lIHQxIHQyIH5vayB+ZXJyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBPayBfLCBFcnJvciBlIHwgRXJyb3IgZSwgT2sgXyAtPiBFcnJvciBlXG4gIHwgT2sgb2sxLCBPayBvazIgLT4gT2sgKG9rIG9rMSBvazIpXG4gIHwgRXJyb3IgZXJyMSwgRXJyb3IgZXJyMiAtPiBFcnJvciAoZXJyIGVycjEgZXJyMilcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdDEucGFydGl0aW9uX21hcCBsIH5mOnRvX2VpdGhlciBpblxuICBtYXRjaCBlcnJzIHdpdGhcbiAgfCBbXSAtPiBPayBva1xuICB8IF8gOjogXyAtPiBFcnJvciBlcnJzXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gbWFwIChjb21iaW5lX2Vycm9ycyBsKSB+ZjooZnVuIChfIDogdW5pdCBsaXN0KSAtPiAoKSlcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5nIGZvciBleHBvcnQgb25seSAqKVxubGV0IG9rX2ZzdCA9IHRvX2VpdGhlclxuIiwiKCoqIFByb3ZpZGVzIGdlbmVyaWMgc2lnbmF0dXJlcyBmb3IgY29udGFpbmVyIGRhdGEgc3RydWN0dXJlcy5cblxuICAgIFRoZXNlIHNpZ25hdHVyZXMgaW5jbHVkZSBmdW5jdGlvbnMgKFtpdGVyXSwgW2ZvbGRdLCBbZXhpc3RzXSwgW2Zvcl9hbGxdLCAuLi4pIHRoYXRcbiAgICB5b3Ugd291bGQgZXhwZWN0IHRvIGZpbmQgaW4gYW55IGNvbnRhaW5lci4gVXNlZCBieSBpbmNsdWRpbmcgW0NvbnRhaW5lci5TMF0gb3JcbiAgICBbQ29udGFpbmVyLlMxXSBpbiB0aGUgc2lnbmF0dXJlIGZvciBldmVyeSBjb250YWluZXItbGlrZSBkYXRhIHN0cnVjdHVyZSAoW0FycmF5XSxcbiAgICBbTGlzdF0sIFtTdHJpbmddLCAuLi4pIHRvIGVuc3VyZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiogW0NvbnRpbnVlX29yX3N0b3AudF0gaXMgdXNlZCBieSB0aGUgW2ZdIGFyZ3VtZW50IHRvIFtmb2xkX3VudGlsXSBpbiBvcmRlciB0b1xuICAgICAgaW5kaWNhdGUgd2hldGhlciBmb2xkaW5nIHNob3VsZCBjb250aW51ZSwgb3Igc3RvcCBlYXJseS5cblxuICAgICAgQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG4gICopXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAgIHwgQ29udGludWUgb2YgJ2FcbiAgICAgIHwgU3RvcCBvZiAnYlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkNvbnRhaW5lci5TdW1tYWJsZSAqKVxubW9kdWxlIHR5cGUgU3VtbWFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCoqIFRoZSByZXN1bHQgb2Ygc3VtbWluZyBubyB2YWx1ZXMuICopXG4gIHZhbCB6ZXJvIDogdFxuXG4gICgqKiBBbiBvcGVyYXRpb24gdGhhdCBjb21iaW5lcyB0d28gW3RdJ3MgYW5kIGhhbmRsZXMgW3plcm8gKyB4XSBieSBqdXN0IHJldHVybmluZyBbeF0sXG4gICAgICBhcyB3ZWxsIGFzIGluIHRoZSBzeW1tZXRyaWMgY2FzZS4gKilcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBtb25vbW9ycGhpYyBjb250YWluZXIgLSBhIGNvbnRhaW5lciBmb3IgYSBzcGVjaWZpYyBlbGVtZW50IHR5cGUsIGUuZy4sXG4gICAgc3RyaW5nLCB3aGljaCBpcyBhIGNvbnRhaW5lciBvZiBjaGFyYWN0ZXJzIChbdHlwZSBlbHQgPSBjaGFyXSkgYW5kIG5ldmVyIG9mIGFueXRoaW5nXG4gICAgZWxzZS4gKilcbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGVsdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgZXF1YWxpdHkgb24gW2VsdF1zLiAqKVxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICAoKiogW2l0ZXJdIG11c3QgYWxsb3cgZXhjZXB0aW9ucyByYWlzZWQgaW4gW2ZdIHRvIGVzY2FwZSwgdGVybWluYXRpbmcgdGhlIGl0ZXJhdGlvblxuICAgICAgY2xlYW5seS4gIFRoZSBzYW1lIGhvbGRzIGZvciBhbGwgZnVuY3Rpb25zIGJlbG93IHRha2luZyBhbiBbZl0uICopXG4gIHZhbCBpdGVyIDogdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiB0IC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSkgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcC4gbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lXG4gICAgICBjb21wbGV4aXR5IGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6IHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOigoZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogXyB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlXG4gICAgICBlbGVtZW50cyB3aWxsIGJlIHN1bW1lZCBpcyB1bnNwZWNpZmllZC4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+IF8gdFxuICAgIC0+IGY6KChlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogXyB0IC0+IGY6KChlbHQgLT4gJ2Egb3B0aW9uKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6IF8gdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiBfIHQgLT4gZWx0IGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24sIG9yIFtOb25lXSBpZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiAqKVxuICB2YWwgbWluX2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cbmVuZFxuXG4oKiogU2lnbmF0dXJlIGZvciBwb2x5bW9ycGhpYyBjb250YWluZXIsIGUuZy4sIFsnYSBsaXN0XSBvciBbJ2EgYXJyYXldLiAqKVxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW5pbXVtIChyZXNwIG1heGltdW0pIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWRcbiAgICAgIFtjb21wYXJlXSBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3RcbiAgICAgIGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uXG4gICAgICB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eSBhcyBbZm9sZF0uICopXG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIFJldHVybnMgYSBtaW4gKHJlc3AgbWF4KSBlbGVtZW50IGZyb20gdGhlIGNvbGxlY3Rpb24gdXNpbmcgdGhlIHByb3ZpZGVkIFtjb21wYXJlXVxuICAgICAgZnVuY3Rpb24uIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdCBlbGVtZW50IGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlXG4gICAgICBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBbZm9sZF0gc28gaXQgaGFzIHRoZSBzYW1lIGNvbXBsZXhpdHlcbiAgICAgIGFzIFtmb2xkXS4gUmV0dXJucyBbTm9uZV0gaWZmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGVsdCAtPiBlcXVhbDooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhY2MsICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2EgZWx0IC0+IGludClbQGxvY2FsXSkgLT4gJ2EgZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgaW5jbHVkZSBTMFxuXG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2ZfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFthOyBiXSkgKG9mX2xpc3QgW2M7IGQ7IGVdKV0gaXMgW29mX2xpc3QgW2E7IGI7IGM7IGQ7IGVdXSAqKVxuICB2YWwgYXBwZW5kIDogdCAtPiB0IC0+IHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiB0IC0+IGY6KChlbHQgLT4gZWx0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIG9mIFt0XSB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0uICopXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogdCAtPiBmOigoZWx0IC0+IGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2NvbmNhdF9tYXAgdCB+Zl0gaXMgZXF1aXZhbGVudCB0byBbY29uY2F0IChtYXAgdCB+ZildLiAqKVxuICB2YWwgY29uY2F0X21hcCA6IHQgLT4gZjooKGVsdCAtPiB0KVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gdCAqIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+Zl0gcGFydGl0aW9ucyBbdF0gYWNjb3JkaW5nIHRvIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXAgOiB0IC0+IGY6KChlbHQgLT4gKGVsdCwgZWx0KSBFaXRoZXIwLnQpW0Bsb2NhbF0pIC0+IHQgKiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzFfd2l0aF9jcmVhdG9ycyA9IHNpZ1xuICBpbmNsdWRlIFMxXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuXG4gICgqKiBFLmcuLCBbYXBwZW5kIChvZl9saXN0IFsxOyAyXSkgKG9mX2xpc3QgWzM7IDQ7IDVdKV0gaXMgW29mX2xpc3QgWzE7IDI7IDM7IDQ7IDVdXSAqKVxuICB2YWwgYXBwZW5kIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcblxuICAoKiogQ29uY2F0ZW5hdGVzIGEgbmVzdGVkIGNvbnRhaW5lci4gVGhlIGVsZW1lbnRzIG9mIHRoZSBpbm5lciBjb250YWluZXJzIGFyZVxuICAgICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdpdmUgdGhlIHJlc3VsdC4gKilcbiAgdmFsIGNvbmNhdCA6ICdhIHQgdCAtPiAnYSB0XG5cbiAgKCoqIFttYXAgZiAob2ZfbGlzdCBbYTE7IC4uLjsgYW5dKV0gYXBwbGllcyBbZl0gdG8gW2ExXSwgW2EyXSwgLi4uLCBbYW5dLCBpbiBvcmRlciwgYW5kXG4gICAgICBidWlsZHMgYSByZXN1bHQgZXF1aXZhbGVudCB0byBbb2ZfbGlzdCBbZiBhMTsgLi4uOyBmIGFuXV0uICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gICgqKiBbZmlsdGVyIHQgfmZdIHJldHVybnMgYWxsIHRoZSBlbGVtZW50cyBvZiBbdF0gdGhhdCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLiAqKVxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuXG4gICgqKiBbZmlsdGVyX21hcCB0IH5mXSBhcHBsaWVzIFtmXSB0byBldmVyeSBbeF0gaW4gW3RdLiBUaGUgcmVzdWx0IGNvbnRhaW5zIGV2ZXJ5IFt5XSBmb3JcbiAgICAgIHdoaWNoIFtmIHhdIHJldHVybnMgW1NvbWUgeV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtjb25jYXRfbWFwIHQgfmZdIGlzIGVxdWl2YWxlbnQgdG8gW2NvbmNhdCAobWFwIHQgfmYpXS4gKilcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiB0KVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fdGYgdCB+Zl0gcmV0dXJucyBhIHBhaXIgW3QxLCB0Ml0sIHdoZXJlIFt0MV0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0XG4gICAgICBzYXRpc2Z5IFtmXSwgYW5kIFt0Ml0gaXMgYWxsIGVsZW1lbnRzIG9mIFt0XSB0aGF0IGRvIG5vdCBzYXRpc2Z5IFtmXS4gVGhlIFwidGZcIlxuICAgICAgc3VmZml4IGlzIG1uZW1vbmljIHRvIHJlbWluZCByZWFkZXJzIHRoYXQgdGhlIHJlc3VsdCBpcyAodHJ1ZXMsIGZhbHNlcykuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0ICogJ2EgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mXSBwYXJ0aXRpb25zIFt0XSBhY2NvcmRpbmcgdG8gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICgnYiwgJ2MpIEVpdGhlcjAudClbQGxvY2FsXSkgLT4gJ2IgdCAqICdjIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3dpdGhfY3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoXywgXykgY29uY2F0XG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgdmFsIG9mX2xpc3QgOiAnYSBlbHQgbGlzdCAtPiAoJ2EsIF8pIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgZWx0IGFycmF5IC0+ICgnYSwgXykgdFxuICB2YWwgYXBwZW5kIDogKCdhLCAncCkgdCAtPiAoJ2EsICdwKSB0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIGNvbmNhdCA6ICgoJ2EsICdwKSB0LCAncCkgY29uY2F0IC0+ICgnYSwgJ3ApIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdwKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYiwgJ3ApIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gKCdiLCAncCkgdClbQGxvY2FsXSkgLT4gKCdiLCAncCkgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ3ApIHQgKiAoJ2EsICdwKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2EsICdwKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiAoJ2IgZWx0LCAnYyBlbHQpIEVpdGhlcjAudClbQGxvY2FsXSlcbiAgICAtPiAoJ2IsICdwKSB0ICogKCdjLCAncCkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2VfZ2VuX2FyZyA9IHNpZ1xuICB0eXBlICgnYSwgJ3BoYW50b20pIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgZm9sZCA6ICgnYSwgJ3BoYW50b20pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFRoZSBbaXRlcl0gYXJndW1lbnQgdG8gW0NvbnRhaW5lci5NYWtlXSBzcGVjaWZpZXMgaG93IHRvIGltcGxlbWVudCB0aGVcbiAgICAgIGNvbnRhaW5lcidzIFtpdGVyXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZSBbaXRlcl1cbiAgICAgIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgaXRlciB0IH5mID0gQ29udGFpbmVyLml0ZXIgfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbaXRlcl0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbaXRlcl0gd2lsbCBpbXByb3ZlIHRoZWlyIGVmZmljaWVuY3lcbiAgICAgIGFzIHdlbGwuICopXG4gIHZhbCBpdGVyXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ3BoYW50b20pIHQgLT4gZjooKCdhIGVsdCAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gICAgICBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EsICdwaGFudG9tKSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0IGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9IHQgYW5kIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2dlbl9hcmdcblxuICB0eXBlIChfLCBfKSBjb25jYXRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGVsdCBsaXN0IC0+ICgnYSwgXykgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBlbHQgYXJyYXkgLT4gKCdhLCBfKSB0XG4gIHZhbCBjb25jYXQgOiAoKCdhLCBfKSB0LCBfKSBjb25jYXQgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgaW5jbHVkZSBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZ1xuXG4gIHZhbCBjb25jYXRfb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAoJ2EsIF8pIGNvbmNhdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSAnYSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgdHlwZSB0XG5cbiAgaW5jbHVkZVxuICAgIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG4gICAgd2l0aCB0eXBlICgnYSwgXykgdCA6PSB0XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgICBhbmQgdHlwZSAoJ2EsIF8pIGNvbmNhdCA6PSAnYSBsaXN0XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZCA9IHNpZ1xuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbZm9sZF0uXG5cbiAgICAgIEUuZy46IFtpdGVyIH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSldLiAqKVxuXG4gIHR5cGUgKCd0LCAnYSwgJ2FjYykgZm9sZCA9ICd0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG4gIHR5cGUgKCd0LCAnYSkgaXRlciA9ICd0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIG1pbl9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2FjYykgZm9sZFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnQpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhY2MpIGZvbGRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuXG4gIHZhbCBpc19lbXB0eSA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBib29sXG4gIHZhbCBtZW0gOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZpbmQgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19hcnJheSA6IGxlbmd0aDondCBsZW5ndGggLT4gaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+ICdhIGFycmF5XG5lbmRcblxubW9kdWxlIHR5cGUgQ29udGFpbmVyID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzAgPSBTMFxuICBtb2R1bGUgdHlwZSBTMF9waGFudG9tID0gUzBfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTMF93aXRoX2NyZWF0b3JzID0gUzBfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMxX3dpdGhfY3JlYXRvcnMgPSBTMV93aXRoX2NyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIERlcml2ZWQgPSBEZXJpdmVkXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfd2l0aF9jcmVhdG9ycyA9IEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgaW5jbHVkZSBEZXJpdmVkXG5cbiAgKCoqIFRoZSBpZGlvbSBmb3IgdXNpbmcgW0NvbnRhaW5lci5NYWtlXSBpcyB0byBiaW5kIHRoZSByZXN1bHRpbmcgbW9kdWxlIGFuZCB0b1xuICAgICAgZXhwbGljaXRseSBpbXBvcnQgZWFjaCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgb25lIHdhbnRzOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3QgLi4uIGVuZClcbiAgICAgICAgbGV0IGNvdW50ICAgID0gQy5jb3VudFxuICAgICAgICBsZXQgZXhpc3RzICAgPSBDLmV4aXN0c1xuICAgICAgICBsZXQgZmluZCAgICAgPSBDLmZpbmRcbiAgICAgICAgKCogLi4uICopXG4gICAgICBdfVxuXG4gICAgICBUaGlzIGlzIHByZWZlcmFibGUgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIGluY2x1ZGUgQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgXX1cblxuICAgICAgYmVjYXVzZSB0aGUgW2luY2x1ZGVdIG1ha2VzIGl0IHRvbyBlYXN5IHRvIHNoYWRvdyBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgIGNvbnRhaW5lciBmdW5jdGlvbnMgKFtsZW5ndGhdIGJlaW5nIGEgY29tbW9uIG9uZSkuXG5cbiAgICAgIFtDb250YWluZXIuTWFrZTBdIGlzIGxpa2UgW0NvbnRhaW5lci5NYWtlXSwgYnV0IGZvciBtb25vbW9ycGhpYyBjb250YWluZXJzIGxpa2VcbiAgICAgIFtzdHJpbmddLiAqKVxuICBtb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudFxuXG4gIG1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgOiBTMCB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcblxuICBtb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMxX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIFMwX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGVsdCA6PSBULkVsdC50XG5cbiAgbW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICAgIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICAgIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9XG4gICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCgnYWNjdW0gLT4gJ2EgLT4gJ2FjY3VtKVtAbG9jYWxdKSAtPiAnYWNjdW1cblxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbnR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbmxldCBpdGVyIH4oZm9sZCA6IChfLCBfLCBfKSBmb2xkKSB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpIFtAbm9udGFpbF1cbmxldCBjb3VudCB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIGEgLT4gaWYgZiBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0ID1cbiAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgUmVzdWx0Lk9rXG4gICAgICAoZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGl0ZW0gLT5cbiAgICAgICAgIG1hdGNoIGYgYWNjIGl0ZW0gd2l0aFxuICAgICAgICAgfCBSZXN1bHQuT2sgeCAtPiB4XG4gICAgICAgICB8IEVycm9yIF8gYXMgZSAtPiByZXR1cm4gZSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBmaW5pc2hcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IENvbnRpbnVlX29yX3N0b3AuQ29udGludWUgeCAtPiB4XG4gICAgICAgICB8IFN0b3AgeCAtPiByZXR1cm4geCkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZSA9XG4gIGZvbGQgdCB+aW5pdDpOb25lIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgZWx0XG4gICAgfCBTb21lIG1heCAtPiBpZiBjb21wYXJlIG1heCBlbHQgPCAwIHRoZW4gU29tZSBlbHQgZWxzZSBhY2MpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggfmZvbGQgYyA9IGZvbGQgYyB+aW5pdDowIH5mOihmdW4gYWNjIF8gLT4gYWNjICsgMSlcblxubGV0IGlzX2VtcHR5IH5pdGVyIGMgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biBfIC0+IHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKVxuOztcblxubGV0IG1lbSB+aXRlciBjIHggfmVxdWFsID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geSAtPiBpZiBlcXVhbCB4IHkgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0cyB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcCB+aXRlciB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciB0IH5mOihmdW4geCAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gYXMgcmVzIC0+IHIucmV0dXJuIHJlcyk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gci5yZXR1cm4gKFNvbWUgeCkpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBsZXQgZm9sZCA9IFQuZm9sZFxuXG4gIGxldCBpdGVyID1cbiAgICBtYXRjaCBULml0ZXIgd2l0aFxuICAgIHwgYEN1c3RvbSBpdGVyIC0+IGl0ZXJcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyIH5mb2xkIHQgfmZcbiAgOztcblxuICBsZXQgbGVuZ3RoID1cbiAgICBtYXRjaCBULmxlbmd0aCB3aXRoXG4gICAgfCBgQ3VzdG9tIGxlbmd0aCAtPiBsZW5ndGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCAtPiBsZW5ndGggfmZvbGQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gaXNfZW1wdHkgfml0ZXIgdFxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBtZW0gfml0ZXIgdCB4IH5lcXVhbFxuICBsZXQgc3VtIG0gdCA9IHN1bSB+Zm9sZCBtIHRcbiAgbGV0IGNvdW50IHQgfmYgPSBjb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0cyB+aXRlciB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcCB+aXRlciB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kIH5pdGVyIHQgfmZcbiAgbGV0IHRvX2xpc3QgdCA9IHRvX2xpc3QgfmZvbGQgdFxuICBsZXQgdG9fYXJyYXkgdCA9IHRvX2FycmF5IH5sZW5ndGggfml0ZXIgdFxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBmb2xkX3Jlc3VsdCB0IH5mb2xkIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IGZvbGRfdW50aWwgdCB+Zm9sZCB+aW5pdCB+ZiB+ZmluaXNoXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKFQpXG5cbiAgbGV0IG9mX2xpc3QgPSBULm9mX2xpc3RcbiAgbGV0IG9mX2FycmF5ID0gVC5vZl9hcnJheVxuICBsZXQgY29uY2F0ID0gVC5jb25jYXRcbiAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IFQuY29uY2F0X29mX2FycmF5XG4gIGxldCBhcHBlbmQgYSBiID0gY29uY2F0IChjb25jYXRfb2ZfYXJyYXkgW3wgYTsgYiB8XSlcbiAgbGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAoY29uY2F0X29mX2FycmF5IChBcnJheS5tYXAgKHRvX2FycmF5IHQpIH5mKSlcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgICBjb25jYXRfbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IFNvbWUgKGYgeCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkubWFwICh0b19hcnJheSB0KSB+ZiBpblxuICAgIGxldCB4cyA9XG4gICAgICBBcnJheS5mb2xkX3JpZ2h0IGFycmF5IH5pbml0OltdIH5mOihmdW4gZWl0aGVyIGFjYyAtPlxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT4geCA6OiBhY2NcbiAgICAgICAgfCBTZWNvbmQgXyAtPiBhY2MpXG4gICAgaW5cbiAgICBsZXQgeXMgPVxuICAgICAgQXJyYXkuZm9sZF9yaWdodCBhcnJheSB+aW5pdDpbXSB+ZjooZnVuIGVpdGhlciBhY2MgLT5cbiAgICAgICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBfIC0+IGFjY1xuICAgICAgICB8IFNlY29uZCB4IC0+IHggOjogYWNjKVxuICAgIGluXG4gICAgb2ZfbGlzdCB4cywgb2ZfbGlzdCB5c1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgcGFydGl0aW9uX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHgpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NyZWF0b3JzIChUIDogTWFrZV93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIFQudFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyX2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGl0ZXJpIH5mb2xkIHQgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIHYgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgdiBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvcl9hbGxpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBub3QgKGYgaSB4KSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICB0cnVlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpIH5pdGVyaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxuKCogQWxsb3dzIFtNYWtlX2dlbl0gdG8gc2hhcmUgYSBbQ29udGFpbmVyLkdlbmVyaWNdIGltcGxlbWVudGF0aW9uIHdpdGgsIGUuZy4sXG4gICBbQ29udGFpbmVyLk1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNdLiAqKVxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyXG4gICAgKFQgOiBNYWtlX2dlbl9hcmcpXG4gICAgKEMgOiBDb250YWluZXIuR2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCkgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIGluY2x1ZGUgQ1xuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogTWFrZV9nZW5fYXJnKSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZV9nZW4gKFQpXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyIChUKSAoQylcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZykgOlxuICBHZW5lcmljX3dpdGhfY3JlYXRvcnNcbiAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHRcbiAgIGFuZCB0eXBlICgnYSwgJ3BoYW50b20pIGNvbmNhdCA6PSAoJ2EsICdwaGFudG9tKSBULmNvbmNhdCA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUKVxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBNYWtlX2dlbl93aXRoX2NvbnRhaW5lciAoVCkgKEMpXG5cbiAgbGV0IGRlcml2ZWRfaW5pdCBuIH5mID0gb2ZfYXJyYXkgKEFycmF5LmluaXQgbiB+ZilcblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggVC5pbml0IHdpdGhcbiAgICB8IGBDdXN0b20gaW5pdCAtPiBpbml0XG4gICAgfCBgRGVmaW5lX3VzaW5nX29mX2FycmF5IC0+IGRlcml2ZWRfaW5pdFxuICA7O1xuXG4gIGxldCBkZXJpdmVkX2NvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKFQuY29uY2F0X29mX2FycmF5IChBcnJheS5tYXBpICh0b19hcnJheSB0KSB+ZikpXG5cbiAgbGV0IGNvbmNhdF9tYXBpID1cbiAgICBtYXRjaCBULmNvbmNhdF9tYXBpIHdpdGhcbiAgICB8IGBDdXN0b20gY29uY2F0X21hcGkgLT4gY29uY2F0X21hcGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfY29uY2F0IC0+IGRlcml2ZWRfY29uY2F0X21hcGlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgY29uY2F0X21hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgfCBOb25lIC0+IG9mX2FycmF5IFt8fF1cbiAgICAgIHwgU29tZSB5IC0+IG9mX2FycmF5IFt8IHkgfF0pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWFwaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBTb21lIChmIGkgeCkpIFtAbm9udGFpbF1cblxuICBsZXQgZmlsdGVyaSB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTBfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKF8sIF8pIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgICAgdHlwZSAoJ2EsIF8pIGNvbmNhdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RkbGliLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGF6eV90X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5leHRlcm5hbCBmb3JjZSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgbWFwIHQgfmYgPSBsYXp5IChmIChmb3JjZSB0KSlcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIDAgZWxzZSBjb21wYXJlX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9IGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiB0cnVlIGVsc2UgZXF1YWxfYSAoZm9yY2UgdDEpIChmb3JjZSB0MilcbmxldCBoYXNoX2ZvbGRfdCA9IEhhc2guQnVpbHRpbi5oYXNoX2ZvbGRfbGF6eV90XG5sZXQgcGVlayB0ID0gaWYgaXNfdmFsIHQgdGhlbiBTb21lIChmb3JjZSB0KSBlbHNlIE5vbmVcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiB4ID0gZnJvbV92YWwgeFxuICAgIGxldCBiaW5kIHQgfmYgPSBsYXp5IChmb3JjZSAoZiAoZm9yY2UgdCkpKVxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgVF91bmZvcmNpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBpc192YWwgdCB0aGVuIHNleHBfb2ZfYSAoZm9yY2UgdCkgZWxzZSBzZXhwX29mX3N0cmluZyBcIjx1bmZvcmNlZCBsYXp5PlwiXG4gIDs7XG5lbmRcbiIsIigqIFNwbGl0IG9mZiB0byBhdm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5IHdpdGggW09yX2Vycm9yXS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbmxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIHBvc2l0aW9uOiAlZFwiIHBvcyAoKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIk5lZ2F0aXZlIGxlbmd0aDogJWRcIiBsZW4gKCk7XG4gICgqIFdlIHVzZSBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gdG90YWxfbGVuZ3RoXSB0byBhdm9pZCB0aGVcbiAgICAgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cuICopXG4gIGlmIHBvcyA+IHRvdGFsX2xlbmd0aCAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnZiBcInBvcyArIGxlbiBwYXN0IGVuZDogJWQgKyAlZCA+ICVkXCIgcG9zIGxlbiB0b3RhbF9sZW5ndGggKClcbltAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG47O1xuXG5sZXQgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICAoKiBUaGlzIGlzIGJldHRlciB0aGFuIFtzbG93X2NoZWNrX3Bvc19sZW5fZXhuXSBmb3IgdHdvIHJlYXNvbnM6XG5cbiAgICAgLSBtdWNoIGxlc3MgaW5saW5lZCBjb2RlXG4gICAgIC0gb25seSBvbmUgY29uZGl0aW9uYWwganVtcFxuXG4gICAgIFRoZSByZWFzb24gaXQgd29ya3MgaXMgdGhhdCBjaGVja2luZyBbPCAwXSBpcyB0ZXN0aW5nIHRoZSBoaWdoZXN0IG9yZGVyIGJpdCwgc29cbiAgICAgW2EgPCAwIHx8IGIgPCAwXSBpcyB0aGUgc2FtZSBhcyBbYSBsb3IgYiA8IDBdLlxuXG4gICAgIFtwb3MgKyBsZW5dIGNhbiBvdmVyZmxvdywgc28gW3BvcyA+IHRvdGFsX2xlbmd0aCAtIGxlbl0gaXMgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAgW3RvdGFsX2xlbmd0aCAtIGxlbiAtIHBvcyA8IDBdLCB3ZSBuZWVkIHRvIHRlc3QgZm9yIFtwb3MgKyBsZW5dIG92ZXJmbG93IGFzXG4gICAgIHdlbGwuICopXG4gIGxldCBzdG9wID0gcG9zICsgbGVuIGluXG4gIGlmIHBvcyBsb3IgbGVuIGxvciBzdG9wIGxvciAodG90YWxfbGVuZ3RoIC0gc3RvcCkgPCAwXG4gIHRoZW4gc2xvd19jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBnZXRfcG9zX2xlbl9leG4gPyhwb3MgPSAwKSA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBpIC0+IGlcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIGNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBwb3MsIGxlblxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gPSBzbG93X2NoZWNrX3Bvc19sZW5fZXhuXG5lbmRcbiIsIlxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuQmlnYXJyYXlcblxuICB0eXBlIHQgPSAoaW50NjQsIGludDY0X2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbiAgbGV0IG9mX3N0YXRlIDogU3RkbGliLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5lbmRcblxubGV0IGFzc2lnbiBkc3Qgc3JjID1cbiAgbGV0IGRzdCA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2UgZHN0KSBpblxuICBsZXQgc3JjID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBzcmMpIGluXG4gIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEuYmxpdCBzcmMgZHN0XG5cbmxldCBtYWtlX2RlZmF1bHQgZGVmYXVsdCA9XG4gIGxldCBzcGxpdF9mcm9tX3BhcmVudCB2ID1cbiAgICBTdGRsaWIuTGF6eS5tYXBfdmFsIFN0ZGxpYi5SYW5kb20uU3RhdGUuc3BsaXQgdlxuICBpblxuICBTdGRsaWIuRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudCAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBnZXRfc3RhdGUgcmFuZG9tX2tleSA9IFN0ZGxpYi5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbU3RkbGliLlJhbmRvbS5TdGF0ZS5kZWZhdWx0XSwgd2UgaGF2ZSB0byBjb25zdHJ1Y3Qgb3VyIG93bi4gIFdlIHRoZW4gYnVpbGQgdGhlXG4gICBbU3RkbGliLlJhbmRvbS5pbnRdLCBbU3RkbGliLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtTdGRsaWIuUmFuZG9tLlN0YXRlLmFzc2lnbl1cbiAgIGZ1bmN0aW9uLCB3aGljaCBhY2Nlc3NlcyB0aGUgdW5leHBvc2VkIHN0YXRlIHJlcHJlc2VudGF0aW9uLiAgU28sIHdlIGNvcHkgdGhlXG4gICBbU3RhdGUucmVwcl0gdHlwZSBkZWZpbml0aW9uIGFuZCBbYXNzaWduXSBmdW5jdGlvbiB0byBoZXJlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksXG4gICBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24uICopXG5cbigqIFJlZ3Jlc3Npb24gdGVzdHMgb3VnaHQgdG8gYmUgZGV0ZXJtaW5pc3RpYyBiZWNhdXNlIHRoYXQgd2F5IGFueW9uZSB3aG8gYnJlYWtzIHRoZSB0ZXN0XG4gICBrbm93cyB0aGF0IGl0J3MgdGhlaXIgY29kZSB0aGF0IGJyb2tlIHRoZSB0ZXN0LiAgSWYgdGVzdHMgYXJlIG5vbmRldGVybWluaXN0aWMsIGEgdGVzdFxuICAgZmFpbHVyZSBtYXkgaW5zdGVhZCBoYXBwZW4gYmVjYXVzZSB0aGUgdGVzdCBydW5uZXIgZ290IHVubHVja3kgYW5kIHVuY292ZXJlZCBhblxuICAgZXhpc3RpbmcgYnVnIGluIHRoZSBjb2RlIHN1cHBvc2VkbHkgYmVpbmcgXCJwcm90ZWN0ZWRcIiBieSB0aGUgdGVzdCBpbiBxdWVzdGlvbi4gKilcbmxldCBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzID1cbiAgaWYgYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBhbGxvd19pbl90ZXN0cyB3aXRoXG4gICAgfCBTb21lIHRydWUgLT4gKClcbiAgICB8IE5vbmUgfCBTb21lIGZhbHNlIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICBcImluaXRpYWxpemluZyBSYW5kb20gd2l0aCBhIG5vbmRldGVybWluaXN0aWMgc2VlZCBpcyBmb3JiaWRkZW4gaW4gaW5saW5lIHRlc3RzXCIpXG47O1xuXG5leHRlcm5hbCByYW5kb21fc2VlZCA6IHVuaXQgLT4gaW50IGFycmF5ID0gXCJjYW1sX3N5c19yYW5kb21fc2VlZFwiXG5cbmxldCByYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICByYW5kb21fc2VlZCAoKVxuOztcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICgqIFdlIGFsbG93IGxhemluZXNzIG9ubHkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIFtkZWZhdWx0XSwgYmVsb3csIHdoaWNoIG1heSBsYXppbHkgY2FsbFxuICAgICBbbWFrZV9zZWxmX2luaXRdLiBGb3IgYWxsIG90aGVyIHB1cnBvc2VzLCB3ZSBjcmVhdGUgYW5kIHVzZSBbdF0gZWFnZXJseS4gKilcbiAgdHlwZSB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS50IExhenkudFxuXG4gIGxldCBiaXRzIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuYm9vbCAoTGF6eS5mb3JjZSB0KVxuICBsZXQgaW50IHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IGludDMyIHQgeCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5pbnQ2NCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBuYXRpdmVpbnQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5uYXRpdmVpbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbWFrZSBzZWVkID0gTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChTdGRsaWIuUmFuZG9tLlN0YXRlLmNvcHkgKExhenkuZm9yY2UgdCkpXG4gIGxldCBjaGFyIHQgPSBpbnQgdCAyNTYgfD4gQ2hhci51bnNhZmVfb2ZfaW50XG4gIGxldCBhc2NpaSB0ID0gaW50IHQgMTI4IHw+IENoYXIudW5zYWZlX29mX2ludFxuXG4gIGxldCBtYWtlX3NlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPVxuICAgIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gICAgTGF6eS5mcm9tX3ZhbCAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcbiAgOztcblxuICBsZXQgYXNzaWduID0gUmFuZG9tX3JlcHIuYXNzaWduXG4gIGxldCBmdWxsX2luaXQgdCBzZWVkID0gYXNzaWduIHQgKG1ha2Ugc2VlZClcblxuICBsZXQgZGVmYXVsdCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogV2UgZGVmaW5lIEJhc2UncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZSBhcyBhIGNvcHkgb2YgT0NhbWwncyBkZWZhdWx0IHJhbmRvbSBzdGF0ZS5cbiAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBwcm9ncmFtcyB0aGF0IHVzZSBCYXNlLlJhbmRvbSB3aWxsIHNlZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZlxuICAgICAgICAgcmFuZG9tIGJpdHMgYXMgaWYgdGhleSBoYWQgdXNlZCBTdGRsaWIuUmFuZG9tLiBIb3dldmVyLCBiZWNhdXNlIFtnZXRfc3RhdGVdIHJldHVybnNcbiAgICAgICAgIGEgY29weSwgQmFzZS5SYW5kb20gYW5kIE9DYW1sLlJhbmRvbSBhcmUgbm90IHVzaW5nIHRoZSBzYW1lIHN0YXRlLiBJZiBhIHByb2dyYW1cbiAgICAgICAgIHVzZWQgYm90aCwgZWFjaCBvZiB0aGVtIHdvdWxkIGdvIHRocm91Z2ggdGhlIHNhbWUgc2VxdWVuY2Ugb2YgcmFuZG9tIGJpdHMuIFRvXG4gICAgICAgICBhdm9pZCB0aGF0LCB3ZSByZXNldCBPQ2FtbCdzIHJhbmRvbSBzdGF0ZSB0byBhIGRpZmZlcmVudCBzZWVkLCBnaXZpbmcgaXQgYVxuICAgICAgICAgZGlmZmVyZW50IHNlcXVlbmNlLiAqKVxuICAgICAgbGV0IHQgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgU3RkbGliLlJhbmRvbS5pbml0IDEzNztcbiAgICAgIExhenkuZnJvbV92YWwgdClcbiAgICBlbHNlXG4gICAgICBsYXp5XG4gICAgICAgICgqIE91dHNpZGUgb2YgdGVzdHMsIHdlIGluaXRpYWxpemUgcmFuZG9tIHN0YXRlIG5vbmRldGVybWluaXN0aWNhbGx5IGFuZCBsYXppbHkuXG4gICAgICAgICAgIFdlIGZvcmNlIHRoZSByYW5kb20gaW5pdGlhbGl6YXRpb24gdG8gYmUgbGF6eSBzbyB0aGF0IHdlIGRvIG5vdCBwYXkgYW55IGNvc3RcbiAgICAgICAgICAgZm9yIGl0IGluIHByb2dyYW1zIHRoYXQgZG8gbm90IHVzZSByYW5kb21uZXNzLiAqKVxuICAgICAgICAoTGF6eS5mb3JjZSAobWFrZV9zZWxmX2luaXQgKCkpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fNjRiaXRzIHQgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50NjQudG9faW50IChpbnQ2NCB0IChTdGRsaWIuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBTdGRsaWIuSW50MzIudG9faW50IChpbnQzMiB0IChTdGRsaWIuSW50MzIub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBpbnRfb25fNjRiaXRzXG4gICAgfCBXMzIgLT4gaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludDY0ID1cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQzMiBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPiBsb2d4b3IgKGJpdHMgc3RhdGUpIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMClcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIHN0YXRlID0gU3RkbGliLkludDY0LnRvX2ludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0cyBzdGF0ZSA9IFN0ZGxpYi5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBTdGRsaWIuSW50NjQudG9fbmF0aXZlaW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMgc3RhdGUgPVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzIgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgcmFpc2VfY3Jvc3NlZF9ib3VuZHMgbmFtZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCBzdHJpbmdfb2ZfYm91bmQgPVxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiUmFuZG9tLiVzOiBjcm9zc2VkIGJvdW5kcyBbJXMgPiAlc11cIlxuICAgICAgbmFtZVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCBsb3dlcl9ib3VuZClcbiAgICAgIChzdHJpbmdfb2ZfYm91bmQgdXBwZXJfYm91bmQpXG4gICAgICAoKVxuICBbQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuICA7O1xuXG4gIGxldCBpbnRfaW5jbCA9XG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJpbnRcIiBsbyBoaSBJbnQudG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgICBpZiBkaWZmID0gSW50Lm1heF92YWx1ZVxuICAgICAgdGhlbiBsbyArIChmdWxsX3JhbmdlX2ludCBzdGF0ZSBsYW5kIEludC5tYXhfdmFsdWUpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMFxuICAgICAgdGhlbiBsbyArIGludCBzdGF0ZSAoSW50LnN1Y2MgZGlmZilcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50MzJfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gU3RkbGliLk5hdGl2ZWludCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwibmF0aXZlaW50XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSkgbWF4X2ludClcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwblxuICAgICAgdGhlbiBhZGQgbG8gKG5hdGl2ZWludCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgaW50NjRfaW5jbCA9XG4gICAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuSW50NjQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDY0XCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBMXG4gICAgICB0aGVuIGFkZCBsbyAoaW50NjQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgKCogUmV0dXJuIGEgdW5pZm9ybWx5IHJhbmRvbSBmbG9hdCBpbiBbMCwgMSkuICopXG4gIGxldCByZWMgcmF3ZmxvYXQgc3RhdGUgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBzY2FsZSA9IDB4MXAtMzAgaW5cbiAgICAoKiAyXi0zMCAqKVxuICAgIGxldCByMSA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gU3RkbGliLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcmVzdWx0ID0gKChyMSAqLiBzY2FsZSkgKy4gcjIpICouIHNjYWxlIGluXG4gICAgKCogV2l0aCB2ZXJ5IHNtYWxsIHByb2JhYmlsaXR5LCByZXN1bHQgY2FuIHJvdW5kIHVwIHRvIDEuMCwgc28gaW4gdGhhdCBjYXNlLCB3ZSBqdXN0XG4gICAgICAgdHJ5IGFnYWluLiAqKVxuICAgIGlmIHJlc3VsdCA8IDEuMCB0aGVuIHJlc3VsdCBlbHNlIHJhd2Zsb2F0IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGZsb2F0IHN0YXRlIGhpID0gcmF3ZmxvYXQgc3RhdGUgKi4gaGlcblxuICBsZXQgZmxvYXRfcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImZsb2F0XCIgbG8gaGkgU3RkbGliLnN0cmluZ19vZl9mbG9hdDtcbiAgICBsbyArLiBmbG9hdCBzdGF0ZSAoaGkgLS4gbG8pXG4gIDs7XG5lbmRcblxubGV0IGRlZmF1bHQgPSBSYW5kb21fcmVwci5tYWtlX2RlZmF1bHQgU3RhdGUuZGVmYXVsdFxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBpbnQgeCA9IFN0YXRlLmludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQzMiB4ID0gU3RhdGUuaW50MzIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgbmF0aXZlaW50IHggPSBTdGF0ZS5uYXRpdmVpbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50NjQgeCA9IFN0YXRlLmludDY0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGZsb2F0IHggPSBTdGF0ZS5mbG9hdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnRfaW5jbCB4IHkgPSBTdGF0ZS5pbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDMyX2luY2wgeCB5ID0gU3RhdGUuaW50MzJfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IG5hdGl2ZWludF9pbmNsIHggeSA9IFN0YXRlLm5hdGl2ZWludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50NjRfaW5jbCB4IHkgPSBTdGF0ZS5pbnQ2NF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgZmxvYXRfcmFuZ2UgeCB5ID0gU3RhdGUuZmxvYXRfcmFuZ2UgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgY2hhciAoKSA9IFN0YXRlLmNoYXIgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGFzY2lpICgpID0gU3RhdGUuYXNjaWkgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUuZnVsbF9pbml0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9IGZ1bGxfaW5pdCAocmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpKVxubGV0IHNldF9zdGF0ZSBzID0gU3RhdGUuYXNzaWduIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgc1xuIiwiKCoqIEFuIGludGVybmFsLW9ubHkgbW9kdWxlIGZhY3RvcmVkIG91dCBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29yZV9hcnJheVxuICAgIGFuZCBjb3JlX2xpc3QuICBDb250YWlucyBjb2RlIGZvciBwZXJtdXRpbmcgYW4gYXJyYXkuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBcnJheTBcblxubGV0IHBlcm11dGUgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgPyhwb3MgPSAwKSA/bGVuIHQgPVxuICAoKiBDb3BpZWQgZnJvbSBbT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBdIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNvbXBpbGluZ1xuICAgICB3aXRob3V0IGZsYW1iZGEuICopXG4gIGxldCB0b3RhbF9sZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgU29tZSBsIC0+IGxcbiAgICB8IE5vbmUgLT4gdG90YWxfbGVuZ3RoIC0gcG9zXG4gIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBsZXQgbnVtX3N3YXBzID0gbGVuIC0gMSBpblxuICBmb3IgaSA9IG51bV9zd2FwcyBkb3dudG8gMSBkb1xuICAgIGxldCB0aGlzX2kgPSBwb3MgKyBpIGluXG4gICAgKCogW3JhbmRvbV9pXSBpcyBkcmF3biBmcm9tIFtwb3MsdGhpc19pXSAqKVxuICAgIGxldCByYW5kb21faSA9IHBvcyArIFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChpICsgMSkgaW5cbiAgICBzd2FwIHQgdGhpc19pIHJhbmRvbV9pXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwMV8pXG4gICAgICAgIDogKCgoYV9fMDAxX1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDFfKSAtPiAoYV9fMDAxXyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwMV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9saXN0XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxpc3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9saXN0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEwXyBiX18wMTFfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTBfIGJfXzAxMV9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxMF8sIGJfXzAxMV8gd2l0aFxuICAgICAgfCBPayBfYV9fMDEyXywgT2sgX2JfXzAxM18gLT4gX2NtcF9fYSBfYV9fMDEyXyBfYl9fMDEzX1xuICAgICAgfCBPayBfLCBfIC0+IC0xXG4gICAgICB8IF8sIE9rIF8gLT4gMVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMsIFVuZXF1YWxfbGVuZ3RocyAtPiAwKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMTdfKSA6ICgoYV9fMDE3XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAxN18gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMTRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IE9rIGFyZzBfXzAxNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIk9rXCI7IHJlczBfXzAxNl8gXVxuICAgICAgfCBVbmVxdWFsX2xlbmd0aHMgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbF9sZW5ndGhzXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxubGV0IG9mX2xpc3QgdCA9IHRcblxubGV0IHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGxldCBuZXh0X2kgPSBzdHJpZGUgc3RhcnRfaSBpblxuICBsZXQgb3JkZXIgeCB5ID0gT3JkZXJpbmcub2ZfaW50IChjb21wYXJlIHggeSkgaW5cbiAgbGV0IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKCkgPVxuICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlXCJcbiAgaW5cbiAgbGV0IGluaXRpYWxfc3RyaWRlX29yZGVyID1cbiAgICBtYXRjaCBvcmRlciBzdGFydF9pIG5leHRfaSB3aXRoXG4gICAgfCBFcXVhbCAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgfCBMZXNzIC0+IGBMZXNzXG4gICAgfCBHcmVhdGVyIC0+IGBHcmVhdGVyXG4gIGluXG4gIGxldCByZWMgbG9vcCBpIGFjY3VtID1cbiAgICBsZXQgaV90b19zdG9wX29yZGVyID0gb3JkZXIgaSBzdG9wX2kgaW5cbiAgICBtYXRjaCBpX3RvX3N0b3Bfb3JkZXIsIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT5cbiAgICAgICgqIGhhdmVuJ3QgeWV0IHJlYWNoZWQgW3N0b3BfaV0uIENvbnRpbnVlLiAqKVxuICAgICAgbGV0IG5leHRfaSA9IHN0cmlkZSBpIGluXG4gICAgICAobWF0Y2ggb3JkZXIgaSBuZXh0X2ksIGluaXRpYWxfc3RyaWRlX29yZGVyIHdpdGhcbiAgICAgICB8IEVxdWFsLCBfIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICAgIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZSc6IHN0cmlkZSBmdW5jdGlvbiBjYW5ub3QgY2hhbmdlIGRpcmVjdGlvblwiXG4gICAgICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+IGxvb3AgbmV4dF9pIChpIDo6IGFjY3VtKSlcbiAgICB8IExlc3MsIGBHcmVhdGVyIHwgR3JlYXRlciwgYExlc3MgLT5cbiAgICAgICgqIHN0ZXBwZWQgcGFzdCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgYWNjdW1cbiAgICB8IEVxdWFsLCBfIC0+XG4gICAgICAoKiByZWFjaGVkIFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICAobWF0Y2ggc3RvcCB3aXRoXG4gICAgICAgfCBgaW5jbHVzaXZlIC0+IGkgOjogYWNjdW1cbiAgICAgICB8IGBleGNsdXNpdmUgLT4gYWNjdW0pXG4gIGluXG4gIGxldCBzdGFydF9pID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIC0+IHN0YXJ0X2lcbiAgICB8IGBleGNsdXNpdmUgLT4gbmV4dF9pXG4gIGluXG4gIHJldiAobG9vcCBzdGFydF9pIFtdKVxuOztcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgaWYgc3RyaWRlID0gMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5yYW5nZTogc3RyaWRlIG11c3QgYmUgbm9uLXplcm9cIjtcbiAgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGU6KGZ1biB4IC0+IHggKyBzdHJpZGUpIH5zdGFydCB+c3RvcCBzdGFydF9pIHN0b3BfaVxuOztcblxubGV0IGhkIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBfIC0+IFNvbWUgeFxuOztcblxubGV0IHRsIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiB0JyAtPiBTb21lIHQnXG47O1xuXG5sZXQgbnRoIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIG50aF9hdXggdCBuID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEgOjogdCAtPiBpZiBuID0gMCB0aGVuIFNvbWUgYSBlbHNlIG50aF9hdXggdCAobiAtIDEpXG4gICAgaW5cbiAgICBudGhfYXV4IHQgbilcbjs7XG5cbmxldCBudGhfZXhuIHQgbiA9XG4gIG1hdGNoIG50aCB0IG4gd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiTGlzdC5udGhfZXhuICVkIGNhbGxlZCBvbiBsaXN0IG9mIGxlbmd0aCAlZFwiIG4gKGxlbmd0aCB0KSAoKVxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdW5vcmRlcmVkX2FwcGVuZCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIGwgfCBsLCBbXSAtPiBsXG4gIHwgXyAtPiByZXZfYXBwZW5kIGwxIGwyXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIgLT4gbG9vcCBhIGIgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXyB8IF8sIFtdIC0+IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGIgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgbDEgbDIgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2IgfSAtPlxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCJcbiAgICAgIG5hbWVcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSlcbiAgICAgIChzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYilcbiAgICAgICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYyA6ICdjIGxpc3RcbiAgICAgICAgfVxuXG4gICgqIEluIHRoZSBbVW5lcXVhbF9sZW5ndGhzXSBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIHRhaWxzIHdpbGwgYmUgbm9uLWVtcHR5LiAqKVxuICBsZXQgb2ZfbGlzdHMgbDEgbDIgbDMgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgYyBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIsIGMgd2l0aFxuICAgICAgfCBbXSwgW10sIFtdIC0+IFNhbWVfbGVuZ3RoIHNoYXJlZF9sZW5ndGhcbiAgICAgIHwgXyA6OiBhLCBfIDo6IGIsIF8gOjogYyAtPiBsb29wIGEgYiBjIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBbXSwgXyB8IF8sIF8sIFtdIC0+XG4gICAgICAgIFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYSA9IGE7IHRhaWxfb2ZfYiA9IGI7IHRhaWxfb2ZfYyA9IGMgfVxuICAgIGluXG4gICAgbG9vcCBsMSBsMiBsMyAwXG4gIDs7XG5lbmRcblxubGV0IGNoZWNrX2xlbmd0aDNfZXhuIG5hbWUgbDEgbDIgbDMgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+ICgpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hOyB0YWlsX29mX2I7IHRhaWxfb2ZfYyB9IC0+XG4gICAgbGV0IG4xID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EgaW5cbiAgICBsZXQgbjIgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYiBpblxuICAgIGxldCBuMyA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9jIGluXG4gICAgaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZCB8fCAlZCA8PiAlZFwiIG5hbWUgbjEgbjIgbjIgbjMgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIgbDMpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5sZXQgaXRlcjIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihpdGVyMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgaXRlcjJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJpdGVyMl9leG5cIiBsMSBsMjtcbiAgaXRlcjJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KHJldl9tYXAyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpIFtAbm9udGFpbF1cblxubGV0IGZvbGQyX2V4biBsMSBsMiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZDJfZXhuXCIgbDEgbDI7XG4gIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mXG47O1xuXG5sZXQgZm9sZF9yaWdodDIgbDEgbDIgfmYgfmluaXQgPVxuICBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkX3JpZ2h0Ml9vayB+ZiB+aW5pdCkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmlnaHQyX2V4biBsMSBsMiB+ZiB+aW5pdCA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZm9sZF9yaWdodDJfZXhuXCIgbDEgbDI7XG4gIGZvbGRfcmlnaHQyX29rIGwxIGwyIH5mIH5pbml0XG47O1xuXG5sZXQgZm9yX2FsbDIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb3JfYWxsMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb3JfYWxsMl9leG5cIiBsMSBsMjtcbiAgZm9yX2FsbDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBleGlzdHMyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZXhpc3RzMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgbG9vcCBsXG4gIGluXG4gIGxvb3AgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJlYyBmaW5kX2V4biB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgeCA6OiB0IC0+IGlmIGYgeCB0aGVuIHggZWxzZSBmaW5kX2V4biB0IH5mXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT4gaWYgZiBpIHggdGhlbiBTb21lIChpLCB4KSBlbHNlIGxvb3AgKGkgKyAxKSBsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgJiYgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBoZCA6OiB0bCAtPiBmIGkgaGQgfHwgbG9vcCAoaSArIDEpIHRsXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIHJpc2UgeXMgPSBmdW5jdGlvblxuICAgIHwgW10gLT4geXNcbiAgICB8ICh5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCB5NiwgeTcsIHk4KSA6OiBicyAtPlxuICAgICAgcmlzZSAoeTAgOjogeTEgOjogeTIgOjogeTMgOjogeTQgOjogeTUgOjogeTYgOjogeTcgOjogeTggOjogeXMpIGJzXG4gIGluXG4gIGxldCByZWMgZGl2ZSBicyA9IGZ1bmN0aW9uXG4gICAgfCB4MCA6OiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB4NiA6OiB4NyA6OiB4OCA6OiB4cyAtPlxuICAgICAgbGV0IHkwID0gZiB4MCBpblxuICAgICAgbGV0IHkxID0gZiB4MSBpblxuICAgICAgbGV0IHkyID0gZiB4MiBpblxuICAgICAgbGV0IHkzID0gZiB4MyBpblxuICAgICAgbGV0IHk0ID0gZiB4NCBpblxuICAgICAgbGV0IHk1ID0gZiB4NSBpblxuICAgICAgbGV0IHk2ID0gZiB4NiBpblxuICAgICAgbGV0IHk3ID0gZiB4NyBpblxuICAgICAgbGV0IHk4ID0gZiB4OCBpblxuICAgICAgZGl2ZSAoKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzKSB4c1xuICAgIHwgeHMgLT4gcmlzZSAobm9udGFpbF9tYXAgfmYgeHMpIGJzXG4gIGluXG4gIGxldCByZXMgPSBkaXZlIFtdIHhzIGluXG4gIHJlc1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmY6KGYgW0Bsb2NhbF0pIGwgY3RyID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBbIHgxIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgWyBmMSBdXG4gIHwgWyB4MTsgeDIgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgWyBmMTsgZjIgXVxuICB8IFsgeDE7IHgyOyB4MyBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBsZXQgZjMgPSBmIHgzIGluXG4gICAgWyBmMTsgZjI7IGYzIF1cbiAgfCBbIHgxOyB4MjsgeDM7IHg0IF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgWyBmMTsgZjI7IGYzOyBmNCBdXG4gIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBsZXQgZjQgPSBmIHg0IGluXG4gICAgbGV0IGY1ID0gZiB4NSBpblxuICAgIGYxXG4gICAgOjogZjJcbiAgICA6OiBmM1xuICAgIDo6IGY0XG4gICAgOjogZjVcbiAgICA6OiAoaWYgY3RyID4gbWF4X25vbl90YWlsY2FsbCB0aGVuIHRhaWxfbWFwIH5mIHRsIGVsc2UgY291bnRfbWFwIH5mIHRsIChjdHIgKyAxKSlcbjs7XG5cbmxldCBtYXAgbCB+ZiA9IGNvdW50X21hcCB+ZiBsIDBcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IG1hcDJfZXhuIGwxIGwyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJtYXAyX2V4blwiIGwxIGwyO1xuICBtYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmYgPVxuICBsZXQgcmVjIGxvb3AgbDEgbDIgbDMgYWMgPVxuICAgIG1hdGNoIGwxLCBsMiwgbDMgd2l0aFxuICAgIHwgW10sIFtdLCBbXSAtPiBhY1xuICAgIHwgeDEgOjogbDEsIHgyIDo6IGwyLCB4MyA6OiBsMyAtPiBsb29wIGwxIGwyIGwzIChmIHgxIHgyIHgzIDo6IGFjKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgbG9vcCBsMSBsMiBsMyBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X21hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihyZXZfbWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcIm1hcDNfZXhuXCIgbDEgbDIgbDM7XG4gIG1hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCByZWMgcmV2X21hcF9hcHBlbmQgbDEgbDIgfmYgPVxuICBtYXRjaCBsMSB3aXRoXG4gIHwgW10gLT4gbDJcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgfmYgdCAoZiBoIDo6IGwyKVxuOztcblxubGV0IHVuemlwIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDJcbiAgICB8ICh4LCB5KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMilcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdXG47O1xuXG5sZXQgdW56aXAzIGxpc3QgPVxuICBsZXQgcmVjIGxvb3AgbGlzdCBsMSBsMiBsMyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBsMSwgbDIsIGwzXG4gICAgfCAoeCwgeSwgeikgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpICh6IDo6IGwzKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW10gW11cbjs7XG5cbmxldCB6aXBfZXhuIGwxIGwyID1cbiAgdHJ5IG1hcDJfb2sgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDIgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwibGVuZ3RoIG1pc21hdGNoIGluIHppcF9leG46ICVkIDw+ICVkXCIgKGxlbmd0aCBsMSkgKGxlbmd0aCBsMikgKClcbjs7XG5cbmxldCB6aXAgbDEgbDIgPSBtYXAyIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyXG5cbigqKiBBZGRpdGlvbmFsIGxpc3Qgb3BlcmF0aW9ucyAqKVxuXG5sZXQgcmV2X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGggOjogdCAtPiBsb29wIChpICsgMSkgKGYgaSBoIDo6IGFjYykgdFxuICBpblxuICBsb29wIDAgW10gbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwaSBsIH5mID0gcmV2IChyZXZfbWFwaSBsIH5mKVxuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpIFtAbm9udGFpbF1cblxubGV0IHNvcnRfYW5kX2dyb3VwIGwgfmNvbXBhcmUgPVxuICBsIHw+IHN0YWJsZV9zb3J0IH5jb21wYXJlIHw+IGdyb3VwIH5icmVhazooZnVuIHggeSAtPiBjb21wYXJlIHggeSA8PiAwKVxuOztcblxubGV0IGNvbmNhdF9tYXAgbCB+ZjooZiBbQGxvY2FsXSkgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGxldCByZXMgPSBhdXggW10gbCBpblxuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBhdXggY29udCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChjb250ICsgMSkgKHJldl9hcHBlbmQgKGYgY29udCBoZCkgYWNjKSB0bFxuICBpblxuICBhdXggMCBbXSBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtZXJnZSBsMSBsMiB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBhY2MgbDJcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGFjYyBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBpZiBjb21wYXJlIGgxIGgyIDw9IDAgdGhlbiBsb29wIChoMSA6OiBhY2MpIHQxIGwyIGVsc2UgbG9vcCAoaDIgOjogYWNjKSBsMSB0MlxuICBpblxuICBsb29wIFtdIGwxIGwyIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCAoZiBbQGxvY2FsXSkgPSBiaW5kIHQgfmZcblxuICBvcGVuIHN0cnVjdFxuICAgIG1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICAgIGVuZClcblxuICAgIG1vZHVsZSBNb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGxldCBhbGwgPSBNb25hZC5hbGxcbiAgbGV0IGFsbF91bml0ID0gTW9uYWQuYWxsX3VuaXRcbiAgbGV0IGlnbm9yZV9tID0gTW9uYWQuaWdub3JlX21cbiAgbGV0IGpvaW4gPSBNb25hZC5qb2luXG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG4gIGVuZFxuXG4gIGxldCBhcHBseSA9IEFwcGxpY2F0aXZlLmFwcGx5XG4gIGxldCBib3RoID0gQXBwbGljYXRpdmUuYm90aFxuICBsZXQgbWFwMyA9IEFwcGxpY2F0aXZlLm1hcDNcbiAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSBBcHBsaWNhdGl2ZS4oICo+IClcbiAgICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG4gIGVuZFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSAoQ2FydGVzaWFuX3Byb2R1Y3QgOiBNb25hZC5TX2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbigqKiByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0X2V4biBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogdGwgLT4gbGFzdF9leG4gdGxcbiAgfCBbXSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QubGFzdFwiXG47O1xuXG4oKiogb3B0aW9uYWxseSByZXR1cm5zIGZpbmFsIGVsZW1lbnQgb2YgbGlzdCAqKVxubGV0IHJlYyBsYXN0IGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiBTb21lIHhcbiAgfCBfIDo6IHRsIC0+IGxhc3QgdGxcbiAgfCBbXSAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGlzX3ByZWZpeCBsaXN0IH5wcmVmaXggfmVxdWFsID1cbiAgbWF0Y2ggcHJlZml4IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgaGQgOjogdGwgLT5cbiAgICAobWF0Y2ggbGlzdCB3aXRoXG4gICAgIHwgW10gLT4gZmFsc2VcbiAgICAgfCBoZCcgOjogdGwnIC0+IGVxdWFsIGhkIGhkJyAmJiBpc19wcmVmaXggdGwnIH5wcmVmaXg6dGwgfmVxdWFsKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGExIDo6IHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgYTEgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhMiA6OiB0IC0+IGlmIGVxdWFsIGExIGEyIHRoZW4gU29tZSAoYTEsIGEyKSBlbHNlIGxvb3AgYTIgdFxuICAgIGluXG4gICAgbG9vcCBhMSB0IFtAbm9udGFpbF1cbjs7XG5cbigqIHJldHVybnMgbGlzdCB3aXRob3V0IGFkamFjZW50IGR1cGxpY2F0ZXMgKilcbmxldCByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyA/KHdoaWNoX3RvX2tlZXAgPSBgTGFzdCkgbGlzdCB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgdG9fa2VlcCBhY2N1bSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0b19rZWVwIDo6IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgaWYgZXF1YWwgaGQgdG9fa2VlcFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0b19rZWVwID1cbiAgICAgICAgICBtYXRjaCB3aGljaF90b19rZWVwIHdpdGhcbiAgICAgICAgICB8IGBGaXJzdCAtPiB0b19rZWVwXG4gICAgICAgICAgfCBgTGFzdCAtPiBoZFxuICAgICAgICBpblxuICAgICAgICBsb29wIHRvX2tlZXAgYWNjdW0gdGwpXG4gICAgICBlbHNlIGxvb3AgaGQgKHRvX2tlZXAgOjogYWNjdW0pIHRsXG4gIGluXG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaGQgOjogdGwgLT4gcmV2IChsb29wIGhkIFtdIHRsKVxuOztcblxuKCoqIHJldHVybnMgc29ydGVkIHZlcnNpb24gb2YgbGlzdCB3aXRoIGR1cGxpY2F0ZXMgcmVtb3ZlZCAqKVxubGV0IGRlZHVwX2FuZF9zb3J0IGxpc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3QgKCogcGVyZm9ybWFuY2UgaGFjayAqKVxuICB8IF8gLT5cbiAgICBsZXQgZXF1YWwgeCB4JyA9IGNvbXBhcmUgeCB4JyA9IDAgaW5cbiAgICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsaXN0IGluXG4gICAgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgfmVxdWFsIHNvcnRlZCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWQgW0Bub250YWlsXVxuOztcblxubGV0IGNvbnRhaW5zX2R1cCBsc3QgfmNvbXBhcmUgPVxuICBtYXRjaCBmaW5kX2FfZHVwIGxzdCB+Y29tcGFyZSB3aXRoXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZmluZF9hbGxfZHVwcyBsIH5jb21wYXJlID1cbiAgKCogV2UgYWRkIHRoaXMgcmV2ZXJzYWwsIHNvIHdlIGNhbiBza2lwIGEgW3Jldl0gYXQgdGhlIGVuZC4gV2UgY291bGQgc2tpcFxuICAgICBbcmV2XSBhbnl3YXkgc2luY2Ugd2UgZG9uIG5vdCBnaXZlIGFueSBvcmRlcmluZyBndWFyYW50ZWVzLCBidXQgaXQgaXNcbiAgICAgbmljZSB0byBnZXQgcmVzdWx0cyBpbiBuYXR1cmFsIG9yZGVyLiAqKVxuICBsZXQgY29tcGFyZSBhIGIgPSBjb21wYXJlIGIgYSBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgYWxsX2VxdWFsX3RvIHQgdiB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgeCA6OiB4cyAtPiBlcXVhbCB4IHYgJiYgYWxsX2VxdWFsX3RvIHhzIHYgfmVxdWFsXG47O1xuXG5sZXQgYWxsX2VxdWFsIHQgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gaWYgYWxsX2VxdWFsX3RvIHhzIHggfmVxdWFsIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGFzc2VydCAoaSA+PSAwKTtcbiAgICBpZiBpID0gMCB0aGVuIGFjY3VtIGVsc2UgbG9vcCAoaSAtIDEpIChmIChpIC0gMSkgOjogYWNjdW0pXG4gIGluXG4gIGxvb3AgbiBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcCBsIH5mKVxuXG5sZXQgcmV2X2ZpbHRlcl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaSBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCAoaSArIDEpIHRsICh4IDo6IGFjY3VtKVxuICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSkgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgMCBsIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSBsIH5mID0gcmV2IChyZXZfZmlsdGVyX21hcGkgbCB+ZilcbmxldCBmaWx0ZXJfb3B0IGwgPSBmaWx0ZXJfbWFwIGwgfmY6Rm4uaWRcblxubGV0IHBhcnRpdGlvbjNfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kIHRyZCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXYgZnN0LCByZXYgc25kLCByZXYgdHJkXG4gICAgfCB4IDo6IHQgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgYEZzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZCB0cmRcbiAgICAgICB8IGBTbmQgeSAtPiBsb29wIHQgZnN0ICh5IDo6IHNuZCkgdHJkXG4gICAgICAgfCBgVHJkIHkgLT4gbG9vcCB0IGZzdCBzbmQgKHkgOjogdHJkKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZiBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3Jlc3VsdCB0ID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXJcblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIHR5cGUgJ2Ega2V5ID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX2tleV90YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQga2V5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGtleSA9XG4gICAgZnVuIF9vZl9hX18wMThfIC0+IF9vZl9hX18wMThfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfa2V5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGtleSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDIwXyAtPiBfb2ZfYV9fMDIwX1xuICA7O1xuXG4gIGxldCBrZXlfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGtleSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIHZhbHVlID0gKCdhW0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3ZhbHVlX3RhZyA9IExpc3QgW11dKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB2YWx1ZV9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB2YWx1ZSA9XG4gICAgZnVuIF9vZl9hX18wMjFfIC0+IF9vZl9hX18wMjFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdmFsdWUgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdmFsdWUgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAyM18gLT4gX29mX2FfXzAyM19cbiAgOztcblxuICBsZXQgdmFsdWVfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdmFsdWUgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVGFnZ2VkXG4gICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgKCgnYSBrZXkgKiAnYiB2YWx1ZSkgbGlzdFtAdGFnIFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWcgPSBMaXN0IFtdXSlcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnYSAnYi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdhLCAnYikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMzJfID0gXCJsaXN0Lm1sLkFzc29jLnRcIiBpblxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzNfIC0+XG4gICAgICBsaXN0X29mX3NleHBcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wMjdfOyBhcmcxX18wMjhfIF0gLT5cbiAgICAgICAgICAgIGxldCByZXMwX18wMjlfID0ga2V5X29mX3NleHAgX29mX2FfXzAyNF8gYXJnMF9fMDI3X1xuICAgICAgICAgICAgYW5kIHJlczFfXzAzMF8gPSB2YWx1ZV9vZl9zZXhwIF9vZl9iX18wMjVfIGFyZzFfXzAyOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAyOV8sIHJlczFfXzAzMF9cbiAgICAgICAgICB8IHNleHBfXzAzMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMzJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDMxXylcbiAgICAgICAgeF9fMDMzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDM0XyBfb2ZfYl9fMDM1XyB4X18wNDBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDM2XywgYXJnMV9fMDM3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBzZXhwX29mX2tleSBfb2ZfYV9fMDM0XyBhcmcwX18wMzZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMzlfID0gc2V4cF9vZl92YWx1ZSBfb2ZfYl9fMDM1XyBhcmcxX18wMzdfIGluXG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzAzOF87IHJlczFfXzAzOV8gXSlcbiAgICAgICAgeF9fMDQwX1xuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EgJ2IuXG4gICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBUYWdnZWRcbiAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgKGxpc3Rfc2V4cF9ncmFtbWFyXG4gICAgICAgICAgICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoa2V5X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKS51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zICgodmFsdWVfc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIpLnVudHlwZWQsIEVtcHR5KSApKVxuICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKSBbQG5vbnRhaWxdXG5cbiAgbGV0IGFkZCB0IH5lcXVhbCBrZXkgdmFsdWUgPVxuICAgICgqIHRoZSByZW1vdmUgZG9lc24ndCBjaGFuZ2UgdGhlIG1hcCBzZW1hbnRpY3MsIGJ1dCBrZWVwcyB0aGUgbGlzdCBzbWFsbCAqKVxuICAgIChrZXksIHZhbHVlKSA6OiByZW1vdmUgdCB+ZXF1YWwga2V5XG4gIDs7XG5cbiAgbGV0IGludmVyc2UgdCA9IG1hcCB0IH5mOihmdW4gKHgsIHkpIC0+IHksIHgpXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mOihmdW4gKGtleSwgdmFsdWUpIC0+IGtleSwgZiB2YWx1ZSkgW0Bub250YWlsXVxuZW5kXG5cbmxldCBzdWIgbCB+cG9zIH5sZW4gPVxuICAoKiBXZSB1c2UgW3BvcyA+IGxlbmd0aCBsIC0gbGVuXSByYXRoZXIgdGhhbiBbcG9zICsgbGVuID4gbGVuZ3RoIGxdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IGxlbmd0aCBsIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnN1YlwiO1xuICByZXZcbiAgICAoZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGVsIC0+XG4gICAgICAgaWYgaSA+PSBwb3MgJiYgaSA8IHBvcyArIGxlbiB0aGVuIGVsIDo6IGFjYyBlbHNlIGFjYykpXG47O1xuXG5sZXQgc3BsaXRfbiB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdLCB0X29yaWdcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIG4gdCBhY2N1bSA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiByZXYgYWNjdW0sIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiB0X29yaWcsIFtdICgqIGluIHRoaXMgY2FzZSwgdF9vcmlnID0gcmV2IGFjY3VtICopXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X25dIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSAqKVxubGV0IHRha2UgdF9vcmlnIG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZ1xuICAgICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKG4gLSAxKSB0bCAoaGQgOjogYWNjdW0pKVxuICAgIGluXG4gICAgbG9vcCBuIHRfb3JpZyBbXSlcbjs7XG5cbmxldCByZWMgZHJvcCB0IG4gPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBfIDo6IHRsIHdoZW4gbiA+IDAgLT4gZHJvcCB0bCAobiAtIDEpXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY2h1bmtzX29mIGwgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8PSAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTGlzdC5jaHVua3Nfb2Y6IEV4cGVjdGVkIGxlbmd0aCA+IDAsIGdvdCAlZFwiIGxlbmd0aCAoKTtcbiAgbGV0IHJlYyBhdXggb2ZfbGVuZ3RoIGFjYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IHN1Ymxpc3QsIGwgPSBzcGxpdF9uIGwgbGVuZ3RoIGluXG4gICAgICBhdXggb2ZfbGVuZ3RoIChzdWJsaXN0IDo6IGFjYykgbFxuICBpblxuICBhdXggbGVuZ3RoIFtdIGxcbjs7XG5cbmxldCBzcGxpdF93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IHQgLT4gcmV2IGFjYywgdFxuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZWMgZHJvcF93aGlsZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGRyb3Bfd2hpbGUgdGwgfmZcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBkcm9wX2xhc3QgdCA9XG4gIG1hdGNoIHJldiB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgXyA6OiBsc3QgLT4gU29tZSAocmV2IGxzdClcbjs7XG5cbmxldCBkcm9wX2xhc3RfZXhuIHQgPVxuICBtYXRjaCBkcm9wX2xhc3QgdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkxpc3QuZHJvcF9sYXN0X2V4bjogZW1wdHkgbGlzdFwiXG4gIHwgU29tZSBsc3QgLT4gbHN0XG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgbGlzdDEgbGlzdDIgPVxuICBpZiBpc19lbXB0eSBsaXN0MlxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBsMSBsMiBhY2N1bSA9XG4gICAgICBtYXRjaCBsMSB3aXRoXG4gICAgICB8IFtdIC0+IGFjY3VtXG4gICAgICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgbDIgKHJldl9hcHBlbmQgKG1hcCB+ZjooZnVuIHggLT4gaGQsIHgpIGwyKSBhY2N1bSlcbiAgICBpblxuICAgIHJldiAobG9vcCBsaXN0MSBsaXN0MiBbXSkpXG47O1xuXG5sZXQgY29uY2F0IGwgPSBmb2xkX3JpZ2h0IGwgfmluaXQ6W10gfmY6YXBwZW5kXG5sZXQgY29uY2F0X25vX29yZGVyIGwgPSBmb2xkIGwgfmluaXQ6W10gfmY6KGZ1biBhY2MgbCAtPiByZXZfYXBwZW5kIGwgYWNjKVxubGV0IGNvbnMgeCBsID0geCA6OiBsXG5cbmxldCBpc19zb3J0ZWQgbCB+Y29tcGFyZSA9XG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gdHJ1ZVxuICAgIHwgeDEgOjogKHgyIDo6IF8gYXMgcmVzdCkgLT4gY29tcGFyZSB4MSB4MiA8PSAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGwgW0Bub250YWlsXVxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDwgMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsIFtAbm9udGFpbF1cbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbF9sb2NhbCAoKGVxdWFsIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIGYgeCB5IC0+IGVxdWFsX2xvY2FsIGYgeCB5XG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzA0MV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDQxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wNDJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxubGV0IGlzX3N1ZmZpeCBsaXN0IH5zdWZmaXggfmVxdWFsOigoZXF1YWxfZWx0IDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsaXN0X2xlbiA9IGxlbmd0aCBsaXN0IGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsaXN0X2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGVxdWFsX2xvY2FsIGVxdWFsX2VsdCAoZHJvcCBsaXN0IChsaXN0X2xlbiAtIHN1ZmZpeF9sZW4pKSBzdWZmaXhcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB0cnlpbmcgdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzIG9uIG1vZHVsZXMgaW4gQ29yZSwgc28gYXMgdG8gYWxsb3dcbiAgIFtJbmZvXSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0gdG8gYmUgdXNlZCBpbiBhcyBtYW55IHBsYWNlcyBhcyBwb3NzaWJsZS4gUGxlYXNlIGF2b2lkXG4gICBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9faW50ZlxubW9kdWxlIENoYXIgPSBDaGFyMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBFeG4gb2YgZXhuXG4gICAgfCBTZXhwIG9mIFNleHAudFxuICAgIHwgVGFnX3NleHAgb2Ygc3RyaW5nICogU2V4cC50ICogU291cmNlX2NvZGVfcG9zaXRpb24wLnQgb3B0aW9uXG4gICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHJlYyBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IGFyZzBfXzAwMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwMl8gPSBTZXhwLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkNvdWxkX25vdF9jb25zdHJ1Y3RcIjsgcmVzMF9fMDAyXyBdXG4gICAgICB8IFN0cmluZyBhcmcwX18wMDNfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDRfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAzXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTdHJpbmdcIjsgcmVzMF9fMDA0XyBdXG4gICAgICB8IEV4biBhcmcwX18wMDVfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDZfID0gc2V4cF9vZl9leG4gYXJnMF9fMDA1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeG5cIjsgcmVzMF9fMDA2XyBdXG4gICAgICB8IFNleHAgYXJnMF9fMDA3XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA4XyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMDhfIF1cbiAgICAgIHwgVGFnX3NleHAgKGFyZzBfXzAwOV8sIGFyZzFfXzAxMF8sIGFyZzJfXzAxMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA5X1xuICAgICAgICBhbmQgcmVzMV9fMDEzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAxMF9cbiAgICAgICAgYW5kIHJlczJfXzAxNF8gPSBzZXhwX29mX29wdGlvbiBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGFyZzJfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfc2V4cFwiOyByZXMwX18wMTJfOyByZXMxX18wMTNfOyByZXMyX18wMTRfIF1cbiAgICAgIHwgVGFnX3QgKGFyZzBfXzAxNV8sIGFyZzFfXzAxNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMTdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE1X1xuICAgICAgICBhbmQgcmVzMV9fMDE4XyA9IHNleHBfb2ZfdCBhcmcxX18wMTZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ190XCI7IHJlczBfXzAxN187IHJlczFfXzAxOF8gXVxuICAgICAgfCBUYWdfYXJnIChhcmcwX18wMTlfLCBhcmcxX18wMjBfLCBhcmcyX18wMjFfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAxOV9cbiAgICAgICAgYW5kIHJlczFfXzAyM18gPSBTZXhwLnNleHBfb2ZfdCBhcmcxX18wMjBfXG4gICAgICAgIGFuZCByZXMyX18wMjRfID0gc2V4cF9vZl90IGFyZzJfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJUYWdfYXJnXCI7IHJlczBfXzAyMl87IHJlczFfXzAyM187IHJlczJfXzAyNF8gXVxuICAgICAgfCBPZl9saXN0IChhcmcwX18wMjVfLCBhcmcxX18wMjZfKSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDI3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2ZfaW50IGFyZzBfXzAyNV9cbiAgICAgICAgYW5kIHJlczFfXzAyOF8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90IGFyZzFfXzAyNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2ZfbGlzdFwiOyByZXMwX18wMjdfOyByZXMxX18wMjhfIF1cbiAgICAgIHwgV2l0aF9iYWNrdHJhY2UgKGFyZzBfXzAyOV8sIGFyZzFfXzAzMF8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMzFfID0gc2V4cF9vZl90IGFyZzBfXzAyOV9cbiAgICAgICAgYW5kIHJlczFfXzAzMl8gPSBzZXhwX29mX3N0cmluZyBhcmcxX18wMzBfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIldpdGhfYmFja3RyYWNlXCI7IHJlczBfXzAzMV87IHJlczFfXzAzMl8gXVxuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHJlYyB0b19zdHJpbmdzX2h1bSB0IGFjID1cbiAgICAoKiBXZSB1c2UgW1NleHAudG9fc3RyaW5nX21hY2hdLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGltcGxlbWVudGluZ1xuICAgICAgIFt0b19zdHJpbmdzX2h1bV0sIGJlY2F1c2Ugd2Ugd2FudCB0aGUgaW5mbyB0byBmaXQgb24gYSBzaW5nbGUgbGluZSwgYW5kIG9uY2Ugd2UndmVcbiAgICAgICBoYWQgdG8gcmVzb3J0IHRvIHNleHBzLCB0aGUgbWVzc2FnZSBpcyBnb2luZyB0byBzdGFydCBub3QgbG9va2luZyBzbyBwcmV0dHlcbiAgICAgICBhbnl3YXkuICopXG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IHNleHAgLT5cbiAgICAgIFwiY291bGQgbm90IGNvbnN0cnVjdCBpbmZvOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gc3RyaW5nIDo6IGFjXG4gICAgfCBFeG4gZXhuIC0+IFNleHAudG9fc3RyaW5nX21hY2ggKEV4bi5zZXhwX29mX3QgZXhuKSA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3NleHAgKHRhZywgc2V4cCwgXykgLT4gdGFnIDo6IFwiOiBcIiA6OiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogYWNcbiAgICB8IFRhZ190ICh0YWcsIHQpIC0+IHRhZyA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhY1xuICAgIHwgVGFnX2FyZyAodGFnLCBzZXhwLCB0KSAtPlxuICAgICAgbGV0IGJvZHkgPSBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHAgOjogXCI6IFwiIDo6IHRvX3N0cmluZ3NfaHVtIHQgYWMgaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIGJvZHkgZWxzZSB0YWcgOjogXCI6IFwiIDo6IGJvZHlcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICB0b19zdHJpbmdzX2h1bSB0IChcIlxcbkJhY2t0cmFjZTpcXG5cIiA6OiBiYWNrdHJhY2UgOjogYWMpXG4gICAgfCBPZl9saXN0ICh0cnVuY19hZnRlciwgdHMpIC0+XG4gICAgICBsZXQgdHMgPVxuICAgICAgICBtYXRjaCB0cnVuY19hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0c1xuICAgICAgICB8IFNvbWUgbWF4IC0+XG4gICAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCB0cyBpblxuICAgICAgICAgIGlmIG4gPD0gbWF4XG4gICAgICAgICAgdGhlbiB0c1xuICAgICAgICAgIGVsc2UgTGlzdC50YWtlIHRzIG1heCBAIFsgU3RyaW5nIChQcmludGYuc3ByaW50ZiBcImFuZCAlZCBtb3JlIGluZm9cIiAobiAtIG1heCkpIF1cbiAgICAgIGluXG4gICAgICBMaXN0LmZvbGQgKExpc3QucmV2IHRzKSB+aW5pdDphYyB+ZjooZnVuIGFjIHQgLT5cbiAgICAgICAgdG9fc3RyaW5nc19odW0gdCAoaWYgTGlzdC5pc19lbXB0eSBhYyB0aGVuIGFjIGVsc2UgXCI7IFwiIDo6IGFjKSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIHQgPSBTdHJpbmcuY29uY2F0ICh0b19zdHJpbmdzX2h1bSB0IFtdKVxuXG4gICgqIExpa2UgW1N0cmluZy5zcGxpdF9saW5lc10sIGJ1dCBsZXNzIG9wdGltaXplZCBhbmQgZG9lc24ndCBoYW5kbGUgW1xcclxcbl0uIEF2b2lkcyBhXG4gICAgIGRlcGVuZGVuY3kgY3ljbGUuIEltcHJvdmVzIG9uIG5haXZlIFtTdHJpbmcuc3BsaXRfb25fY2hhcl0gYnkgcmVtb3ZpbmcgZW1wdHkgZmluYWxcbiAgICAgbGluZS4gKilcbiAgbGV0IHNwbGl0X2xpbmVzIHN0cmluZyA9XG4gICAgbGV0IHN0cmluZyA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnXFxuJyAoU3RyaW5nLmdldCBzdHJpbmcgKGxlbiAtIDEpKVxuICAgICAgdGhlbiBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICAgIGVsc2Ugc3RyaW5nXG4gICAgaW5cbiAgICBTdHJpbmcuc3BsaXRfb25fY2hhciBzdHJpbmcgfnNlcDonXFxuJ1xuICA7O1xuXG4gIGxldCByZWMgdG9fc2V4cHNfaHVtIHQgYWMgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBfIGFzIHQgLT4gc2V4cF9vZl90IHQgOjogYWNcbiAgICB8IFN0cmluZyBzdHJpbmcgLT4gQXRvbSBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gRXhuLnNleHBfb2ZfdCBleG4gOjogYWNcbiAgICB8IFNleHAgc2V4cCAtPiBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBoZXJlKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoQXRvbSB0YWdcbiAgICAgICAgIDo6IHNleHBcbiAgICAgICAgIDo6XG4gICAgICAgICAobWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGhlcmUgLT4gWyBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmUgXSkpXG4gICAgICA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gTGlzdCAoQXRvbSB0YWcgOjogdG9fc2V4cHNfaHVtIHQgW10pIDo6IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IHNleHAgOjogdG9fc2V4cHNfaHVtIHQgW10gaW5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdGFnID0gMCB0aGVuIExpc3QgYm9keSA6OiBhYyBlbHNlIExpc3QgKEF0b20gdGFnIDo6IGJvZHkpIDo6IGFjXG4gICAgfCBXaXRoX2JhY2t0cmFjZSAodCwgYmFja3RyYWNlKSAtPlxuICAgICAgU2V4cC5MaXN0IFsgdG9fc2V4cF9odW0gdDsgc2V4cF9vZl9saXN0IHNleHBfb2Zfc3RyaW5nIChzcGxpdF9saW5lcyBiYWNrdHJhY2UpIF1cbiAgICAgIDo6IGFjXG4gICAgfCBPZl9saXN0IChfLCB0cykgLT5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPiB0b19zZXhwc19odW0gdCBhYylcblxuICBhbmQgdG9fc2V4cF9odW0gdCA9XG4gICAgbWF0Y2ggdG9fc2V4cHNfaHVtIHQgW10gd2l0aFxuICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgIHwgc2V4cHMgLT4gU2V4cC5MaXN0IHNleHBzXG4gIDs7XG5cbiAgKCogV2UgdXNlIFtwcm90ZWN0XSB0byBndWFyZCBhZ2FpbnN0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHVzZXItc3VwcGxpZWQgZnVuY3Rpb25zLCBzb1xuICAgICB0aGF0IGZhaWx1cmUgdG8gcHJvZHVjZSBvbmUgcGFydCBvZiBhbiBpbmZvIGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgcGFydHMuICopXG4gIGxldCBwcm90ZWN0IGYgPVxuICAgIHRyeSBmICgpIHdpdGhcbiAgICB8IGV4biAtPiBDb3VsZF9ub3RfY29uc3RydWN0IChFeG4uc2V4cF9vZl90IGV4bilcbiAgOztcblxuICBsZXQgb2ZfaW5mbyBpbmZvID0gcHJvdGVjdCAoZnVuICgpIC0+IExhenkuZm9yY2UgaW5mbylcbiAgbGV0IHRvX2luZm8gdCA9IGxhenkgdFxuZW5kXG5cbm9wZW4gTWVzc2FnZVxuXG50eXBlIHQgPSBNZXNzYWdlLnQgTGF6eS50XG5cbmxldCBpbnZhcmlhbnQgXyA9ICgpXG5sZXQgdG9fbWVzc2FnZSA9IE1lc3NhZ2Uub2ZfaW5mb1xubGV0IG9mX21lc3NhZ2UgPSBNZXNzYWdlLnRvX2luZm9cblxuKCogSXQgaXMgT0sgdG8gdXNlIFtNZXNzYWdlLnRvX3NleHBfaHVtXSwgd2hpY2ggaXMgbm90IHN0YWJsZSwgYmVjYXVzZSBbdF9vZl9zZXhwXSBiZWxvd1xuICAgY2FuIGhhbmRsZSBhbnkgc2V4cC4gKilcbmxldCBzZXhwX29mX3QgdCA9IE1lc3NhZ2UudG9fc2V4cF9odW0gKHRvX21lc3NhZ2UgdClcbmxldCB0X29mX3NleHAgc2V4cCA9IGxhenkgKE1lc3NhZ2UuU2V4cCBzZXhwKVxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0geyB1bnR5cGVkID0gQW55IFwiSW5mby50XCIgfVxubGV0IGNvbXBhcmUgdDEgdDIgPSBTZXhwLmNvbXBhcmUgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBlcXVhbCB0MSB0MiA9IFNleHAuZXF1YWwgKHNleHBfb2ZfdCB0MSkgKHNleHBfb2ZfdCB0MilcbmxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gU2V4cC5oYXNoX2ZvbGRfdCBzdGF0ZSAoc2V4cF9vZl90IHQpXG5sZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuXG5sZXQgdG9fc3RyaW5nX2h1bSB0ID1cbiAgbWF0Y2ggdG9fbWVzc2FnZSB0IHdpdGhcbiAgfCBTdHJpbmcgcyAtPiBzXG4gIHwgbWVzc2FnZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gKE1lc3NhZ2UudG9fc2V4cF9odW0gbWVzc2FnZSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IE1lc3NhZ2UudG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkICh0b19tZXNzYWdlIHQpXG5sZXQgdG9fc3RyaW5nX21hY2ggdCA9IFNleHAudG9fc3RyaW5nX21hY2ggKHNleHBfb2ZfdCB0KVxubGV0IG9mX2xhenkgbCA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfc2V4cCBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFNleHAgKExhenkuZm9yY2UgbCkpKVxubGV0IG9mX2xhenlfdCBsYXp5X3QgPSBMYXp5LmpvaW4gbGF6eV90XG5sZXQgb2Zfc3RyaW5nIG1lc3NhZ2UgPSBMYXp5LmZyb21fdmFsIChTdHJpbmcgbWVzc2FnZSlcbmxldCBjcmVhdGVmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBvZl9zdHJpbmcgZm9ybWF0XG5sZXQgb2ZfdGh1bmsgZiA9IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBTdHJpbmcgKGYgKCkpKSlcblxubGV0IGNyZWF0ZSA/aGVyZSA/c3RyaWN0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIG1hdGNoIHN0cmljdCB3aXRoXG4gIHwgTm9uZSAtPiBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKSlcbiAgfCBTb21lICgpIC0+IG9mX21lc3NhZ2UgKFRhZ19zZXhwICh0YWcsIHNleHBfb2ZfeCB4LCBoZXJlKSlcbjs7XG5cbmxldCBjcmVhdGVfcyBzZXhwID0gTGF6eS5mcm9tX3ZhbCAoU2V4cCBzZXhwKVxubGV0IHRhZyB0IH50YWcgPSBsYXp5IChUYWdfdCAodGFnLCB0b19tZXNzYWdlIHQpKVxuXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAoXCJcIiwgTGF6eS5mb3JjZSB0YWcsIHRvX21lc3NhZ2UgdCkpKVxuOztcblxubGV0IHRhZ19zIHQgfnRhZyA9IHRhZ19zX2xhenkgdCB+dGFnOihMYXp5LmZyb21fdmFsIHRhZylcblxubGV0IHRhZ19hcmcgdCB0YWcgeCBzZXhwX29mX3ggPVxuICBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gVGFnX2FyZyAodGFnLCBzZXhwX29mX3ggeCwgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgb2ZfbGlzdCA/dHJ1bmNfYWZ0ZXIgdHMgPSBsYXp5IChPZl9saXN0ICh0cnVuY19hZnRlciwgTGlzdC5tYXAgdHMgfmY6dG9fbWVzc2FnZSkpXG5cbmV4Y2VwdGlvbiBFeG4gb2YgdFxuXG5sZXQgKCkgPVxuICAoKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlXG4gICAgIFtleGNlcHRpb24gRXhuIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdIC4uLiBbQEBAZW5kXV0gdG8gZWxpbWluYXRlIHRoZSBleHRyYVxuICAgICB3cmFwcGluZyBvZiBcIihFeG4gLi4uKVwiLiAqKVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRXhuXSAoZnVuY3Rpb25cbiAgICB8IEV4biB0IC0+IHNleHBfb2ZfdCB0XG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB0b19leG4gdCA9XG4gIGlmIG5vdCAoTGF6eS5pc192YWwgdClcbiAgdGhlbiBFeG4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBMYXp5LmZvcmNlIHQgd2l0aFxuICAgIHwgTWVzc2FnZS5FeG4gZXhuIC0+IGV4blxuICAgIHwgXyAtPiBFeG4gdClcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPVxuICBsZXQgYmFja3RyYWNlID1cbiAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGBHZXQgLT5cbiAgICAgIFNvbWUgKFN0ZGxpYi5QcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICAgIHwgU29tZSAoYFRoaXMgcykgLT4gU29tZSBzXG4gIGluXG4gIG1hdGNoIGV4biwgYmFja3RyYWNlIHdpdGhcbiAgfCBFeG4gdCwgTm9uZSAtPiB0XG4gIHwgRXhuIHQsIFNvbWUgYmFja3RyYWNlIC0+IGxhenkgKFdpdGhfYmFja3RyYWNlICh0b19tZXNzYWdlIHQsIGJhY2t0cmFjZSkpXG4gIHwgXywgTm9uZSAtPiBMYXp5LmZyb21fdmFsIChNZXNzYWdlLkV4biBleG4pXG4gIHwgXywgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKFNleHAgKEV4bi5zZXhwX29mX3QgZXhuKSwgYmFja3RyYWNlKSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW5mb1wiXG4gICAgbGV0IHBwIHBwZiB0ID0gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVzdWx0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIgRXJyb3IudF9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmxldCAoID4+PSApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fCApID0gUmVzdWx0LiggPj58IClcbmxldCBiaW5kID0gUmVzdWx0LmJpbmRcbmxldCBpZ25vcmVfbSA9IFJlc3VsdC5pZ25vcmVfbVxubGV0IGpvaW4gPSBSZXN1bHQuam9pblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCByZXR1cm4gPSBSZXN1bHQucmV0dXJuXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IFJlc3VsdC5Nb25hZF9pbmZpeFxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmxldCBtYXAyIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE9rIHgsIE9rIHkgLT4gT2sgKGYgeCB5KVxuICB8IE9rIF8sIChFcnJvciBfIGFzIGUpIHwgKEVycm9yIF8gYXMgZSksIE9rIF8gLT4gZVxuICB8IEVycm9yIGUxLCBFcnJvciBlMiAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgZW5kKVxuXG5sZXQgKCAqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggKj4gKVxubGV0ICggPCogKSA9IEZvcl9hcHBsaWNhdGl2ZS4oIDwqIClcbmxldCAoIDwqPiApID0gRm9yX2FwcGxpY2F0aXZlLiggPCo+IClcbmxldCBhcHBseSA9IEZvcl9hcHBsaWNhdGl2ZS5hcHBseVxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBvayA9IFJlc3VsdC5va1xubGV0IGlzX29rID0gUmVzdWx0LmlzX29rXG5sZXQgaXNfZXJyb3IgPSBSZXN1bHQuaXNfZXJyb3JcblxubGV0IHRyeV93aXRoID8oYmFja3RyYWNlID0gZmFsc2UpIGYgPVxuICB0cnkgT2sgKGYgKCkpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4gP2JhY2t0cmFjZTooaWYgYmFja3RyYWNlIHRoZW4gU29tZSBgR2V0IGVsc2UgTm9uZSkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/YmFja3RyYWNlIGYgPSBqb2luICh0cnlfd2l0aCA/YmFja3RyYWNlIGYpXG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGVyciAtPiBFcnJvci5yYWlzZSBlcnJcbjs7XG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBFcnJvciAoRXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxuXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlID0gZnVuY3Rpb25cbiAgfCBPayBfIGFzIHogLT4gelxuICB8IEVycm9yIGV4biAtPiBvZl9leG4gP2JhY2t0cmFjZSBleG5cbjs7XG5cbmxldCBlcnJvciA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBFcnJvciAoRXJyb3IuY3JlYXRlID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBlcnJvcl9zIHNleHAgPSBFcnJvciAoRXJyb3IuY3JlYXRlX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbWVzc2FnZSA9IEVycm9yIChFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSlcbmxldCBlcnJvcmYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihmdW4gZSAtPiBFcnJvci50YWdfYXJnIGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIHMgPSBlcnJvciBcInVuaW1wbGVtZW50ZWRcIiBzIHNleHBfb2Zfc3RyaW5nXG5cblxubGV0IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2sgfm9uX2Vycm9yID1cbiAgbWF0Y2ggUmVzdWx0LmNvbWJpbmVfZXJyb3JzIGxpc3Qgd2l0aFxuICB8IE9rIHggLT4gT2sgKG9uX29rIHgpXG4gIHwgRXJyb3IgZXJycyAtPiBFcnJvciAob25fZXJyb3IgZXJycylcbjs7XG5cbmxldCBpZ25vcmVfdW5pdF9saXN0IChfIDogdW5pdCBsaXN0KSA9ICgpXG5cbmxldCBlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgWyBlIF0gLT4gZVxuICB8IGxpc3QgLT4gRXJyb3Iub2ZfbGlzdCBsaXN0XG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOkZuLmlkIH5vbl9lcnJvcjplcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6aWdub3JlX3VuaXRfbGlzdCB+b25fZXJyb3I6ZXJyb3Jfb2ZfbGlzdF9pZl9uZWNlc3Nhcnlcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazpGbi5pZCB+b25fZXJyb3I6RXJyb3Iub2ZfbGlzdFxuXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsaXN0ID1cbiAgY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazppZ25vcmVfdW5pdF9saXN0IH5vbl9lcnJvcjpFcnJvci5vZl9saXN0XG47O1xuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IGl0ZXIgPSBSZXN1bHQuaXRlclxubGV0IGl0ZXJfZXJyb3IgPSBSZXN1bHQuaXRlcl9lcnJvclxuIiwiKCogVGhpcyBpcyBicm9rZW4gb2ZmIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBTaWduIGFuZCBDb21wYXJhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOZWdcbiAgfCBaZXJvXG4gIHwgUG9zXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGVdXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbjAubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgIHwgc2V4cF9fMDAyXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICB8IFBvcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQb3NcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiUG9zXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgWmVybyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTmVnOyBaZXJvOyBQb3MgXSA6IHQgbGlzdClcblxuW0BAQGVuZF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiB0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IHQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbmxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IC0xXG4gIHwgWmVybyAtPiAwXG4gIHwgUG9zIC0+IDFcbjs7XG5cbmxldCBfID0gaGFzaFxuXG4oKiBJZ25vcmUgdGhlIGhhc2ggZnVuY3Rpb24gcHJvZHVjZWQgYnkgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2hdICopXG5sZXQgaGFzaCA9IHRvX2ludFxubGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25cIlxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBOZWcgZWxzZSBpZiBuID0gMCB0aGVuIFplcm8gZWxzZSBQb3NcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb21wYXJhYmxlX2ludGZcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gVFxuXG4gIGxldCBpc19wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPiAwXG4gIGxldCBpc19ub25fbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID49IDBcbiAgbGV0IGlzX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8IDBcbiAgbGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPD0gMFxuICBsZXQgc2lnbiB0ID0gU2lnbjAub2ZfaW50IChjb21wYXJlIHQgemVybylcbmVuZFxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIFBvbHlcbiAgZW5kXG5cbiAgaW5jbHVkZSBQb2x5XG5cbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlKVxuICBlbmRcblxuICBpbmNsdWRlIENcbmVuZFxuXG5sZXQgZ3QgY21wIGEgYiA9IGNtcCBhIGIgPiAwXG5sZXQgbHQgY21wIGEgYiA9IGNtcCBhIGIgPCAwXG5sZXQgZ2VxIGNtcCBhIGIgPSBjbXAgYSBiID49IDBcbmxldCBsZXEgY21wIGEgYiA9IGNtcCBhIGIgPD0gMFxubGV0IGVxdWFsIGNtcCBhIGIgPSBjbXAgYSBiID0gMFxubGV0IG5vdF9lcXVhbCBjbXAgYSBiID0gY21wIGEgYiA8PiAwXG5sZXQgbWluIGNtcCB0IHQnID0gaWYgbGVxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5sZXQgbWF4IGNtcCB0IHQnID0gaWYgZ2VxIGNtcCB0IHQnIHRoZW4gdCBlbHNlIHQnXG5cbm1vZHVsZSBJbmZpeCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogSW5maXggd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGxldCAoID4gKSBhIGIgPSBndCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDwgKSBhIGIgPSBsdCBULmNvbXBhcmUgYSBiXG4gIGxldCAoID49ICkgYSBiID0gZ2VxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD0gKSBhIGIgPSBsZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA9ICkgYSBiID0gZXF1YWwgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PiApIGEgYiA9IG5vdF9lcXVhbCBULmNvbXBhcmUgYSBiXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBDb21wYXJpc29ucyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXggKFQpXG5cbiAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0IG1pbiB0IHQnID0gbWluIGNvbXBhcmUgdCB0J1xuICBsZXQgbWF4IHQgdCcgPSBtYXggY29tcGFyZSB0IHQnXG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBDb21wYXJpc29ucyAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB0IHQnID0gY29tcGFyZSB0JyB0XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG4gIE1ha2VfdXNpbmdfY29tcGFyYXRvciBbQGlubGluZWQgaGludF0gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgICAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgICAgIFtAQEBlbmRdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIGxldCBzZXhwX29mX3QgPSAoVC5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuKCogY29tcGFyZSBbeF0gYW5kIFt5XSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBmdW5jdGlvbnMgaW4gdGhlIGxpc3QgW2NtcHNdICopXG5sZXQgbGV4aWNvZ3JhcGhpYyBjbXBzIHggeSA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBjbXAgOjogY21wcyAtPlxuICAgICAgbGV0IHJlcyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIHJlcyA9IDAgdGhlbiBsb29wIGNtcHMgZWxzZSByZXNcbiAgICB8IFtdIC0+IDBcbiAgaW5cbiAgbG9vcCBjbXBzXG47O1xuXG5sZXQgbGlmdCBjbXAgfmYgeCB5ID0gY21wIChmIHgpIChmIHkpXG5sZXQgcmV2ZXJzZSBjbXAgeCB5ID0gY21wIHkgeFxuXG50eXBlICdhIHJldmVyc2VkID0gJ2FcblxubGV0IGNvbXBhcmVfcmV2ZXJzZWQgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBTdGRsaWIuSGFzaHRibC5oYXNoX3BhcmFtXG4gIGxldCBoYXNoID0gU3RkbGliLkhhc2h0YmwuaGFzaFxuICBsZXQgcG9seSA9IHsgaGFzaDsgY29tcGFyZSA9IFBvbHkuY29tcGFyZTsgc2V4cF9vZl90ID0gKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgfVxuXG4gIGxldCBvZl9rZXkgKHR5cGUgYSkgKG1vZHVsZSBLZXkgOiBLZXkgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgeyBoYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gIDs7XG5cbiAgbGV0IHRvX2tleSAodHlwZSBhKSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZCA6IEtleVxuICAgICAgd2l0aCB0eXBlIHQgPSBhKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgSGFzaGFibGVcblxubW9kdWxlIHR5cGUgSGFzaGFibGUgPSBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgSGFzaGFibGUudCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHBvbHkgOiAnYSB0XG4gIHZhbCBvZl9rZXkgOiAobW9kdWxlIEtleSB3aXRoIHR5cGUgdCA9ICdhKSAtPiAnYSB0XG4gIHZhbCB0b19rZXkgOiAnYSB0IC0+IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpXG4gIHZhbCBoYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiAnYSAtPiBpbnRcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUIDogQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBBcmdfd2l0aF9jb21wYXJhdG9yKSA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV91bml0IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX3VuaXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3VuaXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHVuaXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdW5pdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB1bml0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGNvbXBhcmUgXyBfID0gMFxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCIoKVwiIC0+ICgpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQmFzZS5Vbml0Lm9mX3N0cmluZzogKCkgZXhwZWN0ZWRcIlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVuaXRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoVClcblxubGV0IGludmFyaWFudCAoKSA9ICgpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjBcblxubGV0IGdldF9wb3NfbGVuID9wb3MgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgdHJ5IFJlc3VsdC5PayAoZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBzIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgYSBzZWFyY2ggZm9yIHRoZSBmaXJzdCAocmVzcC4gbGFzdCkgZWxlbWVudFxuICAgc2F0aXNmeWluZyBhIHByZWRpY2F0ZSwgYXNzdW1pbmcgdGhhdCB0aGUgcHJlZGljYXRlIGlzIGluY3JlYXNpbmcgb25cbiAgIHRoZSBjb250YWluZXIsIG1lYW5pbmcgdGhhdCwgaWYgdGhlIGNvbnRhaW5lciBpcyBbdTEuLi51bl0sIHRoZXJlIGV4aXN0cyBhXG4gICBrIHN1Y2ggdGhhdCBwKHUxKT0uLi4uPXAodWspID0gZmFsc2UgYW5kIHAodWsrMSk9Li4uLj1wKHVuKT0gdHJ1ZS5cbiAgIElmIHRoaXMgayA9IDEgKHJlc3AgbiksIGZpbmRfbGFzdF9ub3Rfc2F0aXNmeWluZyAocmVzcCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcpXG4gICB3aWxsIHJldHVybiBOb25lLiAqKVxuXG5sZXQgcmVjIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gIGlmIGxvID4gaGlcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgcHJlZCAoZ2V0IHQgbG8pXG4gIHRoZW4gU29tZSBsb1xuICBlbHNlIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihsbyArIDEpIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYSBjb250YWluZXIgW3RdLCBhIHByZWRpY2F0ZSBbcHJlZF0gYW5kIHR3byBpbmRpY2VzIFtsbyA8IGhpXSwgc3VjaCB0aGF0XG4gICBbcHJlZF0gaXMgaW5jcmVhc2luZyBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLlxuXG4gICByZXR1cm4gYSByYW5nZSAobG8sIGhpKSB3aGVyZTpcbiAgIC0gbG8gYW5kIGhpIGFyZSBjbG9zZSBlbm91Z2ggdG9nZXRoZXIgZm9yIGEgbGluZWFyIHNlYXJjaFxuICAgLSBJZiBbcHJlZF0gaXMgbm90IGNvbnN0YW50bHkgW2ZhbHNlXSBvbiBbdF0gYmV0d2VlbiBbbG9dIGFuZCBbaGldLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICBvbiB3aGljaCBbcHJlZF0gaXMgW3RydWVdIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXS4gKilcbigqIEludmFyaWFudDogdGhlIGZpcnN0IGVsZW1lbnQgc2F0aXNmeWluZyBbcHJlZF0sIGlmIGl0IGV4aXN0cyBpcyBiZXR3ZWVuIFtsb10gYW5kIFtoaV0gKilcbmxldCByZWMgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgPVxuICAoKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHRlcm1pbmF0ZSBpZiB0aGUgY29uc3RhbnQgKGN1cnJlbnRseSA4KSBpc1xuICAgICBzZXQgPD0gMSAqKVxuICBpZiBoaSAtIGxvIDw9IDhcbiAgdGhlbiBsbywgaGlcbiAgZWxzZSAoXG4gICAgbGV0IG1pZCA9IGxvICsgKChoaSAtIGxvKSAvIDIpIGluXG4gICAgaWYgcHJlZCAoZ2V0IHQgbWlkKVxuICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCBpcyBiZXR3ZWVuIFtsb10gYW5kIFttaWRdICopXG4gICAgdGhlblxuICAgICAgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGk6bWlkIH5wcmVkXG4gICAgICAoKiBJTlZBUklBTlQgY2hlY2s6IGl0IG1lYW5zIHRoZSBmaXJzdCBzYXRpc2Z5aW5nIGVsZW1lbnQsIGlmIGl0IGV4aXN0cyxcbiAgICAgICAgIGlzIGJldHdlZW4gW21pZCsxXSBhbmQgW2hpXSAqKVxuICAgIGVsc2UgZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbzoobWlkICsgMSkgfmhpIH5wcmVkKVxuOztcblxubGV0IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgbGV0IGxvID0gcG9zIGluXG4gIGxldCBoaSA9IHBvcyArIGxlbiAtIDEgaW5cbiAgbGV0IGxvLCBoaSA9IGZpbmRfcmFuZ2VfbmVhcl9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkIGluXG4gIGxpbmVhcl9zZWFyY2hfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZFxuOztcblxuKCogVGFrZXMgYW4gYXJyYXkgd2l0aCBzaGFwZSBbdHJ1ZSwuLi50cnVlLGZhbHNlLC4uLmZhbHNlXSAoaS5lLiwgdGhlIF9yZXZlcnNlXyBvZiB3aGF0XG4gICBpcyBkZXNjcmliZWQgYWJvdmUpIGFuZCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cnVlIG9yIE5vbmUgaWYgdGhlcmUgYXJlIG5vXG4gICB0cnVlKilcbmxldCBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+cHJlZCB+Z2V0IH5sZW5ndGggPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdClcbiAgaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgKCogVGhlIGxhc3Qgc2F0aXNmeWluZyBpcyB0aGUgb25lIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBub3Qgc2F0aXNmeWluZyAqKVxuICAgIG1hdGNoXG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgfnBvcyB+bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBub3QgKHByZWQgeCkpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICgqIFRoaXMgbWVhbnMgdGhhdCBhbGwgZWxlbWVudHMgc2F0aXNmeSBwcmVkLlxuICAgICAgIFRoZXJlIGlzIGF0IGxlYXN0IGFuIGVsZW1lbnQgYXMgKGxlbiA+IDApICopXG4gICAgfCBTb21lIGkgd2hlbiBpID0gcG9zIC0+IE5vbmUgKCogbm8gZWxlbWVudCBzYXRpc2ZpZXMgcHJlZCAqKVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKGkgLSAxKSlcbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoXG4gICAgICA/cG9zXG4gICAgICA/bGVuXG4gICAgICB0XG4gICAgICB+bGVuZ3RoOigobGVuZ3RoIDogXyAtPiBfKSBbQGxvY2FsXSlcbiAgICAgIH5nZXQ6KChnZXQgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pXG4gICAgICBob3dcbiAgICAgIHZcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgIChtYXRjaFxuICAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgICAgd2l0aFxuICAgICB8IFNvbWUgeCB3aGVuIGNvbXBhcmUgKGdldCB0IHgpIHYgPSAwIC0+IFNvbWUgeFxuICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXG4gICAgXVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApIFtAbm9udGFpbFxuICAgIF1cbjs7XG5cbmxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IGlzX2xlZnQgeCA9XG4gICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICB8IGBSaWdodCAtPiBmYWxzZVxuICBpblxuICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X29uX2xlZnQgLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfbGVmdCBbQG5vbnRhaWxdXG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+XG4gICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19yaWdodCBbQG5vbnRhaWxdXG47O1xuIiwiKCoqIE1vZHVsZSB0eXBlcyBmb3IgYSBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb24gZm9yIGEgc2VxdWVuY2UsIGFuZCBmdW5jdG9ycyBmb3IgYnVpbGRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuKCoqIEFuIFtJbmRleGFibGVdIHR5cGUgaXMgYSBmaW5pdGUgc2VxdWVuY2Ugb2YgZWxlbWVudHMgaW5kZXhlZCBieSBjb25zZWN1dGl2ZSBpbnRlZ2Vyc1xuICAgIFswXSAuLi4gW2xlbmd0aCB0IC0gMV0uICBbZ2V0XSBhbmQgW2xlbmd0aF0gbXVzdCBiZSBPKDEpIGZvciB0aGUgcmVzdWx0aW5nXG4gICAgW2JpbmFyeV9zZWFyY2hdIHRvIGJlIGxnKG4pLiAqKVxubW9kdWxlIHR5cGUgSW5kZXhhYmxlID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuXG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBlbHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID1cbiAgICAoWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgOyBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgTGFzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgOyBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuXG4gICAgIF1cbiAgICAgOiB0IGxpc3QpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBMYXN0X29uX2xlZnRcbiAgICB8IGBGaXJzdF9vbl9yaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZV1cblxuICBsZXQgYWxsID0gKFsgYExhc3Rfb25fbGVmdDsgYEZpcnN0X29uX3JpZ2h0IF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG50eXBlICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IGNvbXBhcmU6KCgnZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgLT4gJ2tleVxuICAtPiBpbnQgb3B0aW9uXG5cbnR5cGUgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9XG4gID9wb3M6aW50XG4gIC0+ID9sZW46aW50XG4gIC0+ICd0XG4gIC0+IHNlZ21lbnRfb2Y6KCgnZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIigqIFtCeXRlczBdIGRlZmluZXMgc3RyaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHlcbiAgIGRlZmluZWQgaW4gdGVybXMgb2YgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW1N0ZGxpYi5CeXRlc10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gYnl0ZXMwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5CeXRlc10uIFtCeXRlczBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmRcbiAgIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2Ugc3RyaW5ncyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQnl0ZXNdIGluXG4gICBidWlsZCBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBCeXRlcyAgPSBCeXRlczBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgQnl0ZXMgPSBCeXRlczBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQnl0ZXNdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgU3lzID0gU3lzMFxuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiAoYnl0ZXNbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6IChieXRlc1tAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gY2hhclxuICAgID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGNoYXJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoY2hhcltAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcblxuICAoKiBbdW5zYWZlX2JsaXRfc3RyaW5nXSBpcyBub3QgZXhwb3J0ZWQgaW4gdGhlIFtzdGRsaWJdIHNvIHdlIGV4cG9ydCBpdCBoZXJlICopXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIDogIHNyYzooc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHNyY19wb3M6aW50XG4gICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQ2NFxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50NjRbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnQzMlxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50MzJcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50MzJbQGxvY2FsX29wdF0pXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50MTZcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2XG4gICAgOiAgKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5lbmRcblxuaW5jbHVkZSBQcmltaXRpdmVzXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgYmxpdCA9IFN0ZGxpYi5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBTdGRsaWIuQnl0ZXMuYmxpdF9zdHJpbmdcbmxldCBjb21wYXJlID0gU3RkbGliLkJ5dGVzLmNvbXBhcmVcbmxldCBjb3B5ID0gU3RkbGliLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBTdGRsaWIuQnl0ZXMuY3JlYXRlXG5cbmV4dGVybmFsIHVuc2FmZV9jcmVhdGVfbG9jYWwgOiBpbnQgLT4gKGJ5dGVzW0Bsb2NhbF0pID0gXCJCYXNlX3Vuc2FmZV9jcmVhdGVfbG9jYWxfYnl0ZXNcIlxuW0BAbm9hbGxvY11cblxubGV0IGNyZWF0ZV9sb2NhbCBsZW4gPVxuICBcbiAgICAoaWYgbGVuID4gU3lzMC5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuY3JlYXRlX2xvY2FsXCI7XG4gICAgIHVuc2FmZV9jcmVhdGVfbG9jYWwgbGVuKVxuOztcblxubGV0IGZpbGwgPSBTdGRsaWIuQnl0ZXMuZmlsbFxubGV0IG1ha2UgPSBTdGRsaWIuQnl0ZXMubWFrZVxuXG5sZXQgbWFwIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGlmIGwgPSAwXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBtYXBpIHQgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgaWYgbCA9IDBcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgdCBpKSlcbiAgICBkb25lO1xuICAgIHIpXG47O1xuXG5sZXQgc3ViID0gU3RkbGliLkJ5dGVzLnN1YlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImNhbWxfYmxpdF9ieXRlc1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0ZGxpYi5CeXRlcy5vZl9zdHJpbmdcblxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZ1xuICA6ICBub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgLT4gKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgPSBcIiVieXRlc190b19zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb25cbiAgOiAgKHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgLT4gKGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNlcXVlbmNlX2dlbiA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5cbiAgICAoU3JjIDogU2VxdWVuY2VfZ2VuKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgU3JjLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSBTcmMudCwgJ2EgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdW5zYWZlX2JsaXQgPSBEc3QudW5zYWZlX2JsaXRcblxuICBsZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpzcmNfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgfnBvczpkc3RfcG9zXG4gICAgICB+bGVuXG4gICAgICB+dG90YWxfbGVuZ3RoOihEc3QubGVuZ3RoIGRzdCk7XG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IGJsaXRvXG4gICAgICAgIH5zcmNcbiAgICAgICAgPyhzcmNfcG9zID0gMClcbiAgICAgICAgPyhzcmNfbGVuID0gU3JjLmxlbmd0aCBzcmMgLSBzcmNfcG9zKVxuICAgICAgICB+ZHN0XG4gICAgICAgID8oZHN0X3BvcyA9IDApXG4gICAgICAgICgpXG4gICAgPVxuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuOnNyY19sZW4gfmRzdCB+ZHN0X3Bvc1xuICA7O1xuXG4gICgqIFtzdWJdIGFuZCBbc3Vib10gZW5zdXJlIHRoYXQgZXZlcnkgcG9zaXRpb24gb2YgdGhlIGNyZWF0ZWQgc2VxdWVuY2UgaXMgcG9wdWxhdGVkIGJ5XG4gICAgIGFuIGVsZW1lbnQgb2YgdGhlIHNvdXJjZSBhcnJheS4gIFRodXMgZXZlcnkgZWxlbWVudCBvZiBbZHN0XSBiZWxvdyBpcyB3ZWxsXG4gICAgIGRlZmluZWQuICopXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIGxldCBkc3QgPSBEc3QuY3JlYXRlX2xpa2UgfmxlbiBzcmMgaW5cbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gICAgc3ViXG4gICAgICBzcmNcbiAgICAgIH5wb3NcbiAgICAgIH5sZW46XG4gICAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgfCBOb25lIC0+IFNyYy5sZW5ndGggc3JjIC0gcG9zKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgYmxpdFxuICBlbmQpID1cbiAgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSA6IFNlcXVlbmNlMSkgPSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IFNlcXVlbmNlLnRcblxuICAgIG9wZW4gU2VxdWVuY2VcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmRcblxuICBpbmNsdWRlIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Rpc3RpbmN0XG4gICAgKFNyYyA6IFNlcXVlbmNlKSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBNYWtlX2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFNyYy50XG5cbiAgICAgIG9wZW4gU3JjXG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gRHN0LnRcblxuICAgICAgb3BlbiBEc3RcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICAgIGVuZClcblxubW9kdWxlIE1ha2VfdG9fc3RyaW5nIChUIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZClcbiAgICAoVG9fYnl0ZXMgOiBTX2Rpc3RpbmN0IHdpdGggdHlwZSBzcmMgOj0gVC50IHdpdGggdHlwZSBkc3QgOj0gYnl0ZXMpID1cbnN0cnVjdFxuICBvcGVuIFRvX2J5dGVzXG5cbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3ViIHNyYyB+cG9zIH5sZW4pXG4gIDs7XG5cbiAgbGV0IHN1Ym8gP3BvcyA/bGVuIHNyYyA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1Ym8gP3BvcyA/bGVuIHNyYylcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBGb2N1cyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRm9jdXMgb2YgeyB2YWx1ZSA6ICdhIFtAZ2xvYmFsXSB9XG4gICAgfCBPdGhlciBvZiB7IHZhbHVlIDogJ2IgW0BnbG9iYWxdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9mb2N1c2VkIChNIDogc2lnXG4gICAgdHlwZSAoKydhLCArJ2IpIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgICB2YWwgb3RoZXIgOiAnYiAtPiAoXywgJ2IpIHRcbiAgICB2YWwgZm9jdXMgOiAoJ2EsICdiKSB0IC0+ICgoJ2EsICdiKSBGb2N1cy50W0Bsb2NhbF0pXG5cbiAgICB2YWwgY29tYmluZVxuICAgICAgOiAgKCdhLCAnZCkgdFxuICAgICAgLT4gKCdiLCAnZCkgdFxuICAgICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgICAgLT4gb3RoZXI6KCgnZCAtPiAnZCAtPiAnZClbQGxvY2FsXSlcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOigoJ2EgLT4gKCdjLCAnYikgdClbQGxvY2FsXSkgLT4gKCdjLCAnYikgdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cbiAgb3BlbiBXaXRoX3JldHVyblxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgbGV0IHJlcyA9IGJpbmQgdCB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGluY2x1ZGUgTW9uYWQuTWFrZTJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFwcCA9IEFwcGxpY2F0aXZlLk1ha2UyX3VzaW5nX21hcDJfbG9jYWwgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgICAgIGxldCBtYXAyIDogKCdhLCAneCkgdCAtPiAoJ2IsICd4KSB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdjLCAneCkgdCA9XG4gICAgICAgIGZ1biB0MSB0MiB+ZiAtPlxuICAgICAgICBiaW5kIHQxIH5mOihmdW4geCAtPiBiaW5kIHQyIH5mOihmdW4geSAtPiByZXR1cm4gKGYgeCB5KSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBcHBcblxuICBsZXQgY29tYmluZV9hbGwgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvLnZhbHVlKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHggLT4gcmV0dXJuX2xvb3AgZiAoeC52YWx1ZSA6OiBhY2MpIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIG8udmFsdWUgdHMpXG4gICAgaW5cbiAgICBmdW4gdHMgfmYgLT4gcmV0dXJuX2xvb3AgZiBbXSB0c1xuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbF91bml0ID1cbiAgICBsZXQgcmVjIG90aGVyX2xvb3AgZiBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBvdGhlciBhY2NcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIF8gLT4gb3RoZXJfbG9vcCBmIGFjYyB0c1xuICAgICAgICAgfCBPdGhlciBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2Mgby52YWx1ZSkgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICAobWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgICAgICB8IEZvY3VzIHsgdmFsdWUgPSAoKSB9IC0+IHJldHVybl9sb29wIGYgdHNcbiAgICAgICAgIHwgT3RoZXIgeyB2YWx1ZSA9IG8gfSAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID1cbiAgICBtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICB8IEZvY3VzIHggLT4gU29tZSB4LnZhbHVlXG4gICAgfCBPdGhlciBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZm9jdXMgdCB3aXRoXG4gICAgfCBGb2N1cyB4IC0+IHgudmFsdWVcbiAgICB8IE90aGVyIF8gLT4gZGVmYXVsdFxuICA7O1xuXG4gIGxldCB3aXRoX3JldHVybiBmID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHJldCAtPiBvdGhlciAoZiAoV2l0aF9yZXR1cm4ucHJlcGVuZCByZXQgfmY6cmV0dXJuKSkpIFtAbm9udGFpbF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBmb2N1cyB0IDogXyBGb2N1cy50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgU2Vjb25kIHkgLT4gT3RoZXIgeyB2YWx1ZSA9IHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAoZiB4IHkpXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKG90aGVyIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIF8gfCBfLCBTZWNvbmQgeCAtPiBTZWNvbmQgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBGaXJzdCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24uICopXG4gICAgICB8IFNlY29uZCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIFNlY29uZCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYiwgJ2EpIHRcblxuICAgIGxldCByZXR1cm4gPSBzZWNvbmRcbiAgICBsZXQgb3RoZXIgPSBmaXJzdFxuXG4gICAgbGV0IGZvY3VzIHQgOiBfIEZvY3VzLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IEZvY3VzIHsgdmFsdWUgPSB4IH1cbiAgICAgIHwgRmlyc3QgeSAtPiBPdGhlciB7IHZhbHVlID0geSB9XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gU2Vjb25kIChmIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBGaXJzdCAob3RoZXIgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBfIHwgXywgRmlyc3QgeCAtPiBGaXJzdCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB4IC0+IGYgeFxuICAgICAgKCogUmV1c2UgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpb24sIGxpa2UgW0ZpcnN0LmJpbmRdIGFib3ZlLiAqKVxuICAgICAgfCBGaXJzdCBfIGFzIHkgLT4geVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnZiwgJ3MpIF9laXRoZXIgPSAoJ2YsICdzKSB0ID1cbiAgICB8IEZpcnN0IG9mICdmXG4gICAgfCBTZWNvbmQgb2YgJ3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfb3B0aW9uXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA1XylcbiAgICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX29wdGlvblxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdCA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2EgdFxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBoYXNoX2ZvbGRfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gICAgb3B0aW9uX29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBzZXhwX29mX29wdGlvblxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBvcHRpb25fc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgfCBOb25lXG4gIHwgU29tZSBvZiAnYVxuXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3NvbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHZhbHVlX21hcCBvIH5kZWZhdWx0IH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gZGVmYXVsdFxuOztcblxubGV0IGl0ZXIgbyB+ZiA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgaW52YXJpYW50IGYgdCA9IGl0ZXIgdCB+ZlxuXG5sZXQgY2FsbCB4IH5mID1cbiAgbWF0Y2ggZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmIHhcbjs7XG5cbmxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBkZWZhdWx0XG4gIHwgU29tZSB4IC0+IHhcbjs7XG5cbmxldCB2YWx1ZV9leG4gP2hlcmUgP2Vycm9yID9tZXNzYWdlIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggaGVyZSwgZXJyb3IsIG1lc3NhZ2Ugd2l0aFxuICAgICAgfCBOb25lLCBOb25lLCBOb25lIC0+IEVycm9yLm9mX3N0cmluZyBcIk9wdGlvbi52YWx1ZV9leG4gTm9uZVwiXG4gICAgICB8IE5vbmUsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5vZl9zdHJpbmcgbVxuICAgICAgfCBOb25lLCBTb21lIGUsIE5vbmUgLT4gZVxuICAgICAgfCBOb25lLCBTb21lIGUsIFNvbWUgbSAtPiBFcnJvci50YWcgZSB+dGFnOm1cbiAgICAgIHwgU29tZSBwLCBOb25lLCBOb25lIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSBcIk9wdGlvbi52YWx1ZV9leG5cIiBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBOb25lLCBTb21lIG0gLT4gRXJyb3IuY3JlYXRlIG0gcCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90XG4gICAgICB8IFNvbWUgcCwgU29tZSBlLCBfIC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICh2YWx1ZSBtZXNzYWdlIH5kZWZhdWx0OlwiXCIpXG4gICAgICAgICAgKGUsIHApXG4gICAgICAgICAgKHNleHBfb2ZfcGFpciBFcnJvci5zZXhwX29mX3QgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdClcbiAgICBpblxuICAgIEVycm9yLnJhaXNlIGVycm9yXG47O1xuXG5sZXQgdmFsdWVfb3JfdGh1bmsgbyB+ZGVmYXVsdCA9XG4gIG1hdGNoIG8gd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0ICgpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgeCAtPiBbfCB4IHxdXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbXVxuICB8IFNvbWUgeCAtPiBbIHggXVxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZTpfID0gdFxubGV0IG1heF9lbHQgdCB+Y29tcGFyZTpfID0gdFxuXG5sZXQgc3VtICh0eXBlIGEpIChtb2R1bGUgTSA6IENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICB2YWx1ZV9tYXAgdCB+ZGVmYXVsdDpNLnplcm8gfmZcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSB4IC0+IGYgeFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgYScgLT4gZXF1YWwgYSBhJ1xuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBfIC0+IDFcbjs7XG5cbmxldCBpc19lbXB0eSA9IGlzX25vbmVcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgeCAtPiBmIGluaXQgeFxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIGEgLT4gaWYgZiBhIHRoZW4gMSBlbHNlIDBcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHggLT4gaWYgZiB4IHRoZW4gdCBlbHNlIE5vbmVcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IGYgYVxuOztcblxubGV0IGVxdWFsIGYgdCB0JyA9XG4gIG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeCcgLT4gZiB4IHgnXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNvbWUgeCA9IFNvbWUgeFxuXG5sZXQgZmlyc3Rfc29tZSB4IHkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIF8gLT4geFxuICB8IE5vbmUgLT4geVxuOztcblxubGV0IHNvbWVfaWYgY29uZCB4ID0gaWYgY29uZCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcblxubGV0IG1lcmdlIGEgYiB+ZiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IE5vbmUsIHggfCB4LCBOb25lIC0+IHhcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBTb21lIChmIGEgYilcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgdiBhcyBvIHdoZW4gZiB2IC0+IG9cbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiBmID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPiB4XG4gIHwgZXhjZXB0aW9uIF8gLT4gTm9uZVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBhIC0+IFNvbWUgKGYgYSlcbjs7XG5cbm1vZHVsZSBNb25hZF9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBiaW5kIG8gfmYgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBNb25hZC5NYWtlX2xvY2FsIChNb25hZF9hcmcpXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9hcmcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgbGV0IHJldHVybiB4ID0gU29tZSB4XG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuXG4gIGxldCBtYXAyIHggeSB+ZiA9XG4gICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHgsIFNvbWUgeSAtPiBTb21lIChmIHggeSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoQXBwbGljYXRpdmVfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCb29sMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBib29sXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ib29sIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2Jvb2xcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Jvb2wgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGJvb2xfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYm9vbCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBib29sX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBvZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gICAgfCBzIC0+IGludmFsaWRfYXJnZiBcIkJvb2wub2Zfc3RyaW5nOiBleHBlY3RlZCB0cnVlIG9yIGZhbHNlIGJ1dCBnb3QgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCAoIHx8ICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbG9yIHRvX2ludCBiKVxuICBsZXQgKCAmJiApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxhbmQgdG9faW50IGIpXG5lbmRcblxuKCogV2UgZG8gdGhpcyBhcyBhIGRpcmVjdCBhc3NlcnQgb24gdGhlIHRoZW9yeSB0aGF0IGl0J3MgYSBjaGVhcCB0aGluZyB0byB0ZXN0IGFuZCBhXG4gICByZWFsbHkgY29yZSBpbnZhcmlhbnQgdGhhdCB3ZSBuZXZlciBleHBlY3QgdG8gYnJlYWssIGFuZCB3ZSBzaG91bGQgYmUgaGFwcHkgZm9yIGFcbiAgIHByb2dyYW0gdG8gZmFpbCBpbW1lZGlhdGVseSBpZiB0aGlzIGlzIHZpb2xhdGVkLiAqKVxubGV0ICgpID0gYXNzZXJ0IChQb2x5LiggPSApICh0b19pbnQgdHJ1ZSkgMSAmJiBQb2x5LiggPSApICh0b19pbnQgZmFsc2UpIDApXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCb29sX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgeyBzdGF0ZSA6ICdzIH1cbiAgICB8IFlpZWxkIG9mXG4gICAgICAgIHsgdmFsdWUgOiAnYVxuICAgICAgICA7IHN0YXRlIDogJ3NcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnYSAncy5cbiAgICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdhLCAncykgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gKHR5cGUgYV9fMDExXyBzX18wMTJfKVxuICAgICAgICA6ICAoKGFfXzAxMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDEyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgICAtPiAoYV9fMDExXywgc19fMDEyXykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgICBmdW4gX29mX2FfXzAwMV8gX29mX3NfXzAwMl8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkRvbmVcIlxuICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHN0YXRlX18wMDRfIH0gLT5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgICAgICBsZXQgYXJnX18wMDVfID0gX29mX3NfXzAwMl8gc3RhdGVfXzAwNF8gaW5cbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGF0ZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlNraXBcIiA6OiBibmRzX18wMDNfKVxuICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB2YWx1ZV9fMDA3Xzsgc3RhdGUgPSBzdGF0ZV9fMDA5XyB9IC0+XG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IF9vZl9zX18wMDJfIHN0YXRlX18wMDlfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhdGVcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IF9vZl9hX18wMDFfIHZhbHVlX18wMDdfIGluXG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidmFsdWVcIjsgYXJnX18wMDhfIF0gOjogYm5kc19fMDA2X1xuICAgICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJZaWVsZFwiIDo6IGJuZHNfXzAwNl8pXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5vcGVuIFN0ZXBcblxuKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgc2VxdWVuY2UgKilcbnR5cGUgK18gdCA9XG4gIHwgU2VxdWVuY2UgOlxuICAgICAgeyBzdGF0ZSA6ICdzXG4gICAgICA7IG5leHQgOiAncyAtPiAoJ2EsICdzKSBTdGVwLnRcbiAgICAgIH1cbiAgICAgIC0+ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSkgPVxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IH1cbiAgOztcblxuICBsZXQgZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGxvb3AgcyBuZXh0IGZpbmlzaCBmIGFjYyA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGYgYWNjIE5vbmUgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gZiBhY2MgKFNvbWUgYSkgfms6KGxvb3AgcyBuZXh0IGZpbmlzaCBmKVxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gaW5pdDsgbmV4dCA9IGYgfVxuXG5sZXQgdW5mb2xkIH5pbml0IH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6KGZ1biBzIC0+XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RlcC5Eb25lXG4gICAgfCBTb21lIChhLCBzKSAtPiBTdGVwLllpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSlcbjs7XG5cbmxldCB1bmZvbGRfd2l0aCBzIH5pbml0IH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gaW5pdCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChzZWVkLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzZWVkLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VlZCB9IC0+IFNraXAgeyBzdGF0ZSA9IHNlZWQsIHMgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gc2VlZCB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHNlZWQsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdW5mb2xkX3dpdGhfYW5kX2ZpbmlzaCBzIH5pbml0IH5ydW5uaW5nX3N0ZXAgfmlubmVyX2ZpbmlzaGVkIH5maW5pc2hpbmdfc3RlcCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChpbml0LCBzKVxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHN0YXRlIC0+XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBuZXh0IGlubmVyX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIChpbm5lcl9maW5pc2hlZCBzdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gaW5uZXJfc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHJ1bm5pbmdfc3RlcCBzdGF0ZSB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gU2tpcCB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfVxuICAgICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpIH0pKVxuICAgICAgICAgICAgIHwgYElubmVyX2ZpbmlzaGVkIHN0YXRlIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgc3RhdGUgfVxuICAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlIH0gLT5cbiAgICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSB5OyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGwgfSlcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCB2IG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gdlxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyB2IG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoZiB2IGEpIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBpbml0IG5leHQgZlxuOztcblxubGV0IHRvX2xpc3RfcmV2IHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKVxuXG5cbmxldCB0b19saXN0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IFtdXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiB0b19saXN0IHMgbmV4dCBpXG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBhIDo6IHRvX2xpc3QgcyBuZXh0IChpIC0gMSkpXG4gIGluXG4gIHRvX2xpc3QgcyBuZXh0IDUwMFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHJhbmdlID8oc3RyaWRlID0gMSkgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X3Ygc3RvcF92ID1cbiAgbGV0IHN0ZXAgPVxuICAgIG1hdGNoIHN0b3Agd2l0aFxuICAgIHwgYGluY2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID4gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGluY2x1c2l2ZSAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA8IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBleGNsdXNpdmUgd2hlbiBzdHJpZGUgPj0gMCAtPlxuICAgICAgZnVuIGkgLT4gaWYgaSA+PSBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgZXhjbHVzaXZlIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPSBMYXp5LmZvcmNlIHRfbGF6eSBpblxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgU2tpcFxuICAgICAgICB7IHN0YXRlID1cbiAgICAgICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gaW5cbiAgICAgICAgICAgICBsYXp5IHYpXG4gICAgICAgIH1cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgWWllbGRcbiAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgOyBzdGF0ZSA9XG4gICAgICAgICAgICAobGV0IHYgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IGluXG4gICAgICAgICAgICAgbGF6eSB2KVxuICAgICAgICB9KVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc2VlZFxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHNlZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGYgYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gZiBpIGE7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBhY2MgfSlcbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF93aXRoIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgeCAtPlxuICAgIGxldCBhY2MsIHggPSBmIGkgYWNjIHggaW5cbiAgICBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBpICsgMSwgYWNjIH0pXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzZWVkXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gc2VlZCAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6KFtdLCAwKSB+ZjooZnVuIChsLCBpKSB4IC0+IHggOjogbCwgaSArIDEpXG5cbmxldCB0b19hcnJheSB0ID1cbiAgbGV0IGwsIGxlbiA9IHRvX2xpc3RfcmV2X3dpdGhfbGVuZ3RoIHQgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IHggOjogbCAtPlxuICAgIGxldCBhID0gQXJyYXkuY3JlYXRlIH5sZW4geCBpblxuICAgIGxldCByZWMgbG9vcCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IC0xKVxuICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgYS4oaSkgPC0geDtcbiAgICAgICAgbG9vcCAoaSAtIDEpIGxcbiAgICBpblxuICAgIGxvb3AgKGxlbiAtIDIpIGw7XG4gICAgYVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBhIC0+IFNvbWUgYVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBzIG5leHQgZlxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBub3QgKGYgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gbm90IChmIGkgYSkgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcmVjIGxvb3Agc2VlZCBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgfCBEb25lIC0+ICgpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICBmIGE7XG4gICAgICBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dFxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBhID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gXyB9IHdoZW4gZXF1YWwgYSBiIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBhXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgYSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZW1wdHkgPSBTZXF1ZW5jZSB7IHN0YXRlID0gKCk7IG5leHQgPSAoZnVuICgpIC0+IERvbmUpIH1cblxubGV0IGJpbmQgdCB+ZiA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0sIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGVtcHR5LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IGYgYSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSB9KSlcbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0sIHJlc3QgfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSwgcmVzdCB9KSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IE5vbmUgfSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIG4gcyBuZXh0KVxuOztcblxubGV0IG50aF9leG4gcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLm50aFwiXG4gIGVsc2UgKFxuICAgIG1hdGNoIG50aCBzIG4gd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLm50aFwiXG4gICAgfCBTb21lIHggLT4geClcbjs7XG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnYSAnYi4gKCdhIC0+ICdhIC0+IGludCkgLT4gKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAxM18gYl9fMDE0XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDEzXyBiX18wMTRfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTNfLCBiX18wMTRfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDE1XywgTGVmdCBfYl9fMDE2XyAtPiBfY21wX19hIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE3XywgUmlnaHQgX2JfXzAxOF8gLT4gX2NtcF9fYiBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE5XywgX2FfXzAyMV8pLCBCb3RoIChfYl9fMDIwXywgX2JfXzAyMl8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTlfIF9iX18wMjBfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMjFfIF9iX18wMjJfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDZfIGJfXzA0N18pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0Nl8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ3XykgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgICAgICAgICAtPiAoYV9fMDQ2XywgYl9fMDQ3XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjNfIF9vZl9iX18wMjRfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDMwXykgOjogc2V4cF9hcmdzX18wMzFfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjlfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDMxXyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzJfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMzXyA9IF9vZl9hX18wMjNfIGFyZzBfXzAzMl8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzM19cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wMzBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzNV8pIDo6IHNleHBfYXJnc19fMDM2XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM0XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNl8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM3XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzOF8gPSBfb2ZfYl9fMDI0XyBhcmcwX18wMzdfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM4X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyN19cbiAgICAgICAgICAgICAgIF90YWdfXzAzNV9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzRfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzA0MF8pIDo6IHNleHBfYXJnc19fMDQxXykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM5XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA0MV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQyXzsgYXJnMV9fMDQzXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0NF8gPSBfb2ZfYV9fMDIzXyBhcmcwX18wNDJfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0NV8gPSBfb2ZfYl9fMDI0XyBhcmcxX18wNDNfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQ0XywgcmVzMV9fMDQ1XylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjdfXG4gICAgICAgICAgICAgICBfdGFnX18wNDBfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM5XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjhfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgICAgICAgfCBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNThfIGJfXzA1OV8pXG4gICAgICAgIDogICgoYV9fMDU4XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTlfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNThfLCBiX18wNTlfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ4XyBfb2ZfYl9fMDQ5XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2FfXzA0OF8gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDUxXyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUyXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTNfID0gX29mX2JfXzA0OV8gYXJnMF9fMDUyXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1M18gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1NF8sIGFyZzFfXzA1NV8pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1Nl8gPSBfb2ZfYV9fMDQ4XyBhcmcwX18wNTRfXG4gICAgICAgICAgYW5kIHJlczFfXzA1N18gPSBfb2ZfYl9fMDQ5XyBhcmcxX18wNTVfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTZfOyByZXMxX18wNTdfIF1cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhICdiLlxuICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIF8nYl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiUmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiQm90aFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9KVxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pXG4gICAgICB+Y29tcGFyZVxuICA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgKFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxJyB9IGFzIHMxKSwgKFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyJyB9IGFzIHMyKVxuICAgICAgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgczIgfVxuICAgICAgZWxzZSBpZiBjb21wYXJpc29uID0gMFxuICAgICAgdGhlblxuICAgICAgICBZaWVsZCB7IHZhbHVlID0gQm90aCAoYSwgYik7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IFJpZ2h0IGI7IHN0YXRlID0gczEsIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IExlZnQgYTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBEb25lIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBSaWdodCBiOyBzdGF0ZSA9IERvbmUsIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICBpblxuICBTZXF1ZW5jZSB7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfTsgbmV4dCB9XG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgICAgIH5jb21wYXJlXG4gID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCAoWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEnIH0gYXMgczEpLCAoWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczInIH0gYXMgczIpXG4gICAgICAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSBjb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8PSAwXG4gICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBzMiB9XG4gICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMxLCBTa2lwIHsgc3RhdGUgPSBzMicgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIERvbmUgfVxuICAgIHwgRG9uZSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gRG9uZSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBoZCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gYSB9IC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgKG1hdGNoIGxvb3AgcyBuZXh0IHdpdGhcbiAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfCBTb21lIHMgLT4gU29tZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkpXG47O1xuXG5sZXQgdGxfZWFnZXJseV9leG4gcyA9XG4gIG1hdGNoIHRsIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS50bF9leG5cIlxuICB8IFNvbWUgcyAtPiBzXG47O1xuXG5sZXQgbGlmdF9pZGVudGl0eSBuZXh0IHMgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IERvbmUgLT4gRG9uZVxuICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9XG4gIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBJZGVudGl0eSBzIH1cbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBTb21lIChhLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuZXh0XG47O1xuXG5sZXQgZmlsdGVyX29wdCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gTm9uZTsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gU29tZSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBMaXN0LnJldiBhY2N1bSwgZW1wdHlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBpIGFjY3VtIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyAoaSAtIDEpIChhIDo6IGFjY3VtKSBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgcyBuIFtdIG5leHRcbjs7XG5cbmxldCBjaHVua3NfZXhuIHQgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY2h1bmtzX2V4blwiXG4gIGVsc2VcbiAgICB1bmZvbGRfc3RlcCB+aW5pdDp0IH5mOihmdW4gdCAtPlxuICAgICAgbWF0Y2ggc3BsaXRfbiB0IG4gd2l0aFxuICAgICAgfCBbXSwgX2VtcHR5IC0+IERvbmVcbiAgICAgIHwgKF8gOjogXyBhcyB4cyksIHQgLT4gWWllbGQgeyB2YWx1ZSA9IHhzOyBzdGF0ZSA9IHQgfSlcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBpIGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIGYgaSBhIC0+IFNvbWUgKGksIGEpXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgKGkgKyAxKSBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgMCBmXG47O1xuXG5sZXQgZmluZF9leG4gcyB+ZiA9XG4gIG1hdGNoIGZpbmQgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLmZpbmRfZXhuXCJcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIG1hdGNoIHMxLCBzMiB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSwgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEZpcnN0X2xpc3QgczFcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MSBzMSB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH1cbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRmlyc3RfbGlzdCBzMSB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYEZpcnN0X2xpc3QgczEgfSlcbiAgICAgICAgICAgIHwgYFNlY29uZF9saXN0IHMyIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0MiBzMiB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IGBTZWNvbmRfbGlzdCBzMiB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH0pKVxuICAgICAgfVxuOztcblxubGV0IGNvbmNhdF9tYXAgcyB+ZiA9IGJpbmQgcyB+ZlxubGV0IGNvbmNhdCBzID0gY29uY2F0X21hcCBzIH5mOkZuLmlkXG5sZXQgY29uY2F0X21hcGkgcyB+ZiA9IGNvbmNhdF9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCB6aXAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBhLCBiOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCB6aXBfZnVsbFxuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYEJvdGggKGEsIGIpOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IERvbmUsIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBgUmlnaHQgYjsgc3RhdGUgPSBEb25lLCBuZXh0MiBzMiB9XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYExlZnQgYTsgc3RhdGUgPSBuZXh0MSBzMSwgRG9uZSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBib3VuZGVkX2xlbmd0aCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzZWVkIH0gLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgICBsZXQgcmVjIGxvb3AgcyBhY2MgPVxuICAgICAgaWYgYWNjID49IG1pblxuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBhY2NcbiAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIChhY2MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgcyAwXG4gIGluXG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBsZW5ndGhfaXNfYXRfbGVhc3QgdFxuICB8IFNvbWUgbWF4IC0+XG4gICAgKG1hdGNoIGJvdW5kZWRfbGVuZ3RoIHQgfmF0X21vc3Q6bWF4IHdpdGhcbiAgICAgfCBgSXMgbGVuIHdoZW4gbGVuID49IG1pbiAtPiB0cnVlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCBpdGVyaSBzIH5mID0gaXRlciAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcykgW0Bub250YWlsXVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2MgcykgW0Bub250YWlsXVxuOztcblxubGV0IHJlZHVjZSBzIH5mID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChhLCBzKSAtPiBTb21lIChmb2xkIHMgfmluaXQ6YSB+Zilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHMgfmYgPVxuICBtYXRjaCByZWR1Y2UgcyB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnJlZHVjZV9leG5cIlxuICB8IFNvbWUgcmVzIC0+IHJlc1xuOztcblxubGV0IGdyb3VwIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIChhY2MsIHMpIH1cbiAgICAgICAgIHwgW10sIERvbmUgLT4gRG9uZVxuICAgICAgICAgfCBhY2MsIERvbmUgLT4gWWllbGQgeyB2YWx1ZSA9IExpc3QucmV2IGFjYzsgc3RhdGUgPSBOb25lIH1cbiAgICAgICAgIHwgW10sIFlpZWxkIHsgdmFsdWUgPSBjdXI7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgKFsgY3VyIF0sIHMpIH1cbiAgICAgICAgIHwgKHByZXYgOjogXyBhcyBhY2MpLCBZaWVsZCB7IHZhbHVlID0gY3VyOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICBpZiBicmVhayBwcmV2IGN1clxuICAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBMaXN0LnJldiBhY2M7IHN0YXRlID0gU29tZSAoWyBjdXIgXSwgcykgfVxuICAgICAgICAgICBlbHNlIFNraXAgeyBzdGF0ZSA9IFNvbWUgKGN1ciA6OiBhY2MsIHMpIH0pKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgbGFzdF9lbHQgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgbGFzdF9lbHQgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggbGFzdF9lbHQgd2l0aFxuICAgICAgIHwgU29tZSBiIHdoZW4gZXF1YWwgYSBiIC0+IFNvbWUgKGIsIGEpXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IGxvb3AgKFNvbWUgYSkgcylcbiAgaW5cbiAgbG9vcCBOb25lIHMgW0Bub250YWlsXVxuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCB7IHN0YXRlID0gU29tZSBhIH1cbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU29tZSBhIH0pXG47O1xuXG5sZXQgY291bnQgcyB+ZiA9IGZvbGQgcyB+aW5pdDowIH5mOihmdW4gYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBlbHQpKSBbQG5vbnRhaWxdXG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgYWNjIGVsdCAtPiBhY2MgKyBCb29sLnRvX2ludCAoZiBpIGVsdCkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGYgaTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IDAsIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biAoaSwgcykgLT5cbiAgICAgICAgICAgICBpZiBpIC0gcG9zID49IGxlblxuICAgICAgICAgICAgIHRoZW4gRG9uZVxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gaSA+PSBwb3MgLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgdGFrZSBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRha2VcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgICAgICAgdGhlbiBEb25lXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gaSArIDEsIHMgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgZHJvcCBzIGxlbiA9XG4gIGlmIGxlbiA8IDAgdGhlbiBmYWlsd2l0aCBcIlNlcXVlbmNlLmRyb3BcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGkgPj0gbGVuIC0+XG4gICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBpICsgMSwgcyB9XG4gICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSArIDEsIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCB0YWtlX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IF8gfSAtPiBEb25lKVxuICAgICAgfVxuOztcblxubGV0IGRyb3Bfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBEcm9wcGluZyBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgRHJvcHBpbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSB3aGVuIGYgYSAtPiBTa2lwIHsgc3RhdGUgPSBgRHJvcHBpbmcgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgSWRlbnRpdHkgcyB9KVxuICAgICAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcylcbiAgICAgIH1cbjs7XG5cbmxldCBzaGlmdF9yaWdodCBzIHggPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgQ29uc2luZyAoc2VlZCwgeClcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDb25zaW5nIChzZWVkLCB4KSAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBgSWRlbnRpdHkgc2VlZCB9XG4gICAgICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzKVxuICAgICAgfVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0X3dpdGhfbGlzdCBzIGwgPSBhcHBlbmQgKG9mX2xpc3QgbCkgc1xubGV0IHNoaWZ0X2xlZnQgPSBkcm9wXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgaW50ZXJzcGVyc2UgcyB+c2VwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYEluaXQgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5pdCBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBSdW5uaW5nIHMgfSlcbiAgICAgICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBgUnVubmluZyBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBzZXA7IHN0YXRlID0gYFB1dHRpbmcgKGEsIHMpIH0pXG4gICAgICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgUnVubmluZyBzIH0pXG4gICAgICB9XG47O1xuXG5sZXQgcmVwZWF0IHggPSB1bmZvbGRfc3RlcCB+aW5pdDp4IH5mOihmdW4geCAtPiBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSB4IH0pXG5cbmxldCBjeWNsZV9saXN0X2V4biB4cyA9XG4gIGlmIExpc3QuaXNfZW1wdHkgeHMgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuXCI7XG4gIGxldCBzID0gb2ZfbGlzdCB4cyBpblxuICBjb25jYXRfbWFwIH5mOihmdW4gKCkgLT4gcykgKHJlcGVhdCAoKSlcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBzYSBzYiA9IGNvbmNhdF9tYXAgc2EgfmY6KGZ1biBhIC0+IHppcCAocmVwZWF0IGEpIHNiKVxubGV0IHNpbmdsZXRvbiB4ID0gcmV0dXJuIHhcblxubGV0IGRlbGF5ZWRfZm9sZCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXAgcyB+aW5pdCB+ZmluaXNoIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IGsgYWNjXG4gICAgfCBTb21lIGEgLT4gZiBhY2MgYSB+aylcbjs7XG5cbmxldCBmb2xkX20gfmJpbmQgfnJldHVybiB0IH5pbml0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0XG4gICAgfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiBhY2MpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYWNjIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBpdGVyX20gfmJpbmQgfnJldHVybiB0IH5mID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwXG4gICAgdFxuICAgIH5pbml0OigpXG4gICAgfmY6KGZ1biAoKSBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuICgpKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGEpIH5mOmspXG4gICAgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBmb2xkX3VudGlsIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZpbmlzaCBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoJ2EsICdiKSBDb250aW51ZV9vcl9zdG9wLnQpIHdpdGhcbiAgICAgICB8IFN0b3AgeCAtPiB4XG4gICAgICAgfCBDb250aW51ZSBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCBzIH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gUmVzdWx0LnJldHVybiBhY2NcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGFjY1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAobWF0Y2ggKGYgYWNjIGEgOiAoXywgXykgUmVzdWx0LnQpIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgICAgfCBPayBhY2MgLT4gbG9vcCBzIG5leHQgZiBhY2MpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIG9mIChhLCB0KSBTdGVwLnQgTGF6eS50XG4gIGVuZFxuICBpblxuICBsZXQgcmVjIG1lbW9pemUgcyA9IE0uVCAobGF6eSAoZmluZF9zdGVwIHMpKVxuICBhbmQgZmluZF9zdGVwIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBmaW5kX3N0ZXAgc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IG1lbW9pemUgcyB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBtZW1vaXplIHM7IG5leHQgPSAoZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKSB9XG47O1xuXG5sZXQgZHJvcF9lYWdlcmx5IHMgbGVuID1cbiAgbGV0IHJlYyBsb29wIGkgfmxlbiBzIG5leHQgPVxuICAgIGlmIGkgPj0gbGVuXG4gICAgdGhlbiBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIDAgfmxlbiBzIG5leHRcbjs7XG5cbmxldCBkcm9wX3doaWxlX29wdGlvbiAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3Agc1xuICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gcyB9IC0+XG4gICAgICBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KVxuICBpblxuICBsb29wIHMgW0Bub250YWlsXVxuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZiBzIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgWWllbGRcbiAgICAgICAgICAgeyB2YWx1ZSA9IHhcbiAgICAgICAgICAgOyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IDo6IGRvbmVfc3RhY2tcbiAgICAgICAgICAgfVxuICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCA9IGYgfSA6OiB0b2RvX3N0YWNrLCBkb25lX3N0YWNrIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjayB9KVxuICAgIHwgW10gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgZG9uZV9zdGFjayB0aGVuIERvbmUgZWxzZSBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSB9XG4gIGluXG4gIGxldCBzdGF0ZSA9IGxpc3QsIFtdIGluXG4gIFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfVxuOztcblxubGV0IGludGVybGVhdmUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IGYxIH0pID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmMiBzMiB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBZaWVsZFxuICAgICAgICAgICB7IHZhbHVlID0geFxuICAgICAgICAgICA7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gZjIgfSA6OiBkb25lX3N0YWNrLCBzMVxuICAgICAgICAgICB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IGRvbmVfc3RhY2ssIHMxIH1cbiAgICAgICB8IERvbmUgLT4gU2tpcCB7IHN0YXRlID0gdG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEgfSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHQ7IHN0YXRlID0gczEgfSwgXyAtPlxuICAgICAgICAgU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgKHQgOjogZG9uZV9zdGFjayksIFtdLCBzMSB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBfIC0+IFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdLCBzMSB9XG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxIH1cbiAgICAgICB8IERvbmUsIFtdIC0+IERvbmUpXG4gIGluXG4gIGxldCBzdGF0ZSA9IFtdLCBbXSwgczEgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9XG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIFN0ZGxpYi5TZXEudCkgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpzZXEgfmY6KGZ1biBzZXEgLT5cbiAgICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IERvbmVcbiAgICB8IENvbnMgKGhkLCB0bCkgLT4gWWllbGQgeyB2YWx1ZSA9IGhkOyBzdGF0ZSA9IHRsIH0pXG47O1xuXG5sZXQgdG9fc2VxIChTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH0pID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBuZXh0IHN0YXRlIHdpdGhcbiAgICB8IERvbmUgLT4gU3RkbGliLlNlcS5OaWxcbiAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IGxvb3Agc3RhdGVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBoZDsgc3RhdGUgfSAtPiBTdGRsaWIuU2VxLkNvbnMgKGhkLCBmdW4gKCkgLT4gbG9vcCBzdGF0ZSlcbiAgaW5cbiAgZnVuICgpIC0+IGxvb3Agc3RhdGVcbjs7XG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAnZWx0IHN0ZXBzID0gV3JhcCBvZiAoJ2VsdCwgdW5pdCAtPiAnZWx0IHN0ZXBzKSBTdGVwLnRcblxuICBsZXQgdW53cmFwIChXcmFwIHN0ZXApID0gc3RlcFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlbHQpIHQgPSAoJ2EgLT4gJ2VsdCBzdGVwcykgLT4gJ2VsdCBzdGVwc1xuXG4gICAgbGV0IHJldHVybiB4IGsgPSBrIHhcblxuICAgIGxldCBiaW5kIG0gfmYgayA9XG4gICAgICBtIChmdW4gYSAtPlxuICAgICAgICBsZXQgbScgPSBmIGEgaW5cbiAgICAgICAgbScgaylcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBtIH5mIGsgPSBtIChmdW4gYSAtPiBrIChmIGEpKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoVClcblxuICBsZXQgeWllbGQgZSBrID0gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IGU7IHN0YXRlID0gayB9KVxuICBsZXQgdG9fc3RlcHMgdCA9IHQgKGZ1biAoKSAtPiBXcmFwIERvbmUpXG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlID1cbiAgICBkZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIGYgLT4gV3JhcCAoWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gKGZ1biAoKSAtPiBrICgpIGYpIH0pKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGVcblxubW9kdWxlIE9mX3NleHBhYmxlXG4gICAgKFNleHBhYmxlIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6IFNleHBhYmxlLnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUxXG4gICAgKFNleHBhYmxlIDogUzEpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAnYSBTZXhwYWJsZS50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMlxuICAgIChTZXhwYWJsZSA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYikgU2V4cGFibGUudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTNcbiAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9zdHJpbmdhYmxlIChNIDogU3RyaW5nYWJsZS5TKSA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG53aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJTZXhwYWJsZS5PZl9zdHJpbmdhYmxlLnRfb2Zfc2V4cCBleHBlY3RlZCBhbiBhdG9tLCBidXQgZ290IGEgbGlzdFwiXG4gICAgICAgIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogTS50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIHN0cmluZ19zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5cbmxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMDVfKVxuICAgICAgOiAoKChhX18wMDVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwNV8pIC0+IChhX18wMDVfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XyB0KSAtPlxuICAgIGdsb2JhbGl6ZV9hcnJheVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGFycmF5X29mX3NleHBcbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2FycmF5XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnRlciAoUyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gICAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IHN3YXAgYXJyIGkgaiA9XG4gICAgbGV0IHRtcCA9IGdldCBhcnIgaSBpblxuICAgIHNldCBhcnIgaSAoZ2V0IGFyciBqKTtcbiAgICBzZXQgYXJyIGogdG1wXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgU29ydCA9IHNpZ1xuICAgIHZhbCBzb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gbGVmdDppbnQgKCogbGVmdG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHJpZ2h0OmludCAoKiByaWdodG1vc3QgaW5kZXggb2Ygc3ViLWFycmF5IHRvIHNvcnQgKilcbiAgICAgIC0+IHVuaXRcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbnNlcnRpb25fc29ydCAqKVxuICBtb2R1bGUgSW5zZXJ0aW9uX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAyLiAgdGhlIHN1YmFycmF5IGFycltpKzEgLi4gcG9zXSBpcyBzb3J0ZWQgYW5kIGNvbnRhaW5zIG9ubHkgZWxlbWVudHMgPiB2XG4gICAgICAgMy4gIGFycltpXSBtYXkgYmUgdGhvdWdodCBvZiBhcyBjb250YWluaW5nIHZcbiAgICAqKVxuICAgIGxldCByZWMgaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIGkgdiA9XG4gICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgIGlmIGlfbmV4dCA+PSBsZWZ0ICYmIGNvbXBhcmUgKGdldCBhcnIgaV9uZXh0KSB2ID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICBlbHNlIGlcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICAoKiBsb29wIGludmFyaWFudDpcbiAgICAgICAgIFthcnJdIGlzIHNvcnRlZCBmcm9tIFtsZWZ0XSB0byBbcG9zIC0gMV0sIGluY2x1c2l2ZSAqKVxuICAgICAgZm9yIHBvcyA9IGxlZnQgKyAxIHRvIHJpZ2h0IGRvXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBwb3MgdiBpblxuICAgICAgICBzZXQgYXJyIGZpbmFsX3BvcyB2XG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kXG5cbiAgKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IZWFwc29ydCAqKVxuICBtb2R1bGUgSGVhcF9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgIHJvb3QncyBjaGlsZHJlbiBhcmUgYm90aCBlaXRoZXIgcm9vdHMgb2YgbWF4LWhlYXBzIG9yID4gcmlnaHQgKilcbiAgICBsZXQgcmVjIGhlYXBpZnkgYXJyIH5jb21wYXJlIHJvb3QgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCByZWxhdGl2ZV9yb290ID0gcm9vdCAtIGxlZnQgaW5cbiAgICAgIGxldCBsZWZ0X2NoaWxkID0gKDIgKiByZWxhdGl2ZV9yb290KSArIGxlZnQgKyAxIGluXG4gICAgICBsZXQgcmlnaHRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDIgaW5cbiAgICAgIGxldCBsYXJnZXN0ID1cbiAgICAgICAgaWYgbGVmdF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIGxlZnRfY2hpbGQpIChnZXQgYXJyIHJvb3QpID4gMFxuICAgICAgICB0aGVuIGxlZnRfY2hpbGRcbiAgICAgICAgZWxzZSByb290XG4gICAgICBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiByaWdodF9jaGlsZCA8PSByaWdodCAmJiBjb21wYXJlIChnZXQgYXJyIHJpZ2h0X2NoaWxkKSAoZ2V0IGFyciBsYXJnZXN0KSA+IDBcbiAgICAgICAgdGhlbiByaWdodF9jaGlsZFxuICAgICAgICBlbHNlIGxhcmdlc3RcbiAgICAgIGluXG4gICAgICBpZiBsYXJnZXN0IDw+IHJvb3RcbiAgICAgIHRoZW4gKFxuICAgICAgICBzd2FwIGFyciByb290IGxhcmdlc3Q7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxhcmdlc3QgfmxlZnQgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgYnVpbGRfaGVhcCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIEVsZW1lbnRzIGluIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYXJyYXkgYXJlIGFscmVhZHkgaGVhcHMgb2Ygc2l6ZSAxLiAgV2UgbW92ZVxuICAgICAgICAgdGhyb3VnaCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgYXJyYXkgZnJvbSBiYWNrIHRvIGZyb250IGV4YW1pbmluZyB0aGUgZWxlbWVudCBhdFxuICAgICAgICAgaGFuZCwgYW5kIHRoZSBsZWZ0IGFuZCByaWdodCBjaGlsZHJlbiwgZml4aW5nIHRoZSBoZWFwIHByb3BlcnR5IGFzIHdlIGdvLiAqKVxuICAgICAgZm9yIGkgPSAobGVmdCArIHJpZ2h0KSAvIDIgZG93bnRvIGxlZnQgZG9cbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgaSB+bGVmdCB+cmlnaHRcbiAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IHNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCA9XG4gICAgICBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ7XG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgdGhlIHN1YmFycmF5IGFycltsZWZ0IC4uLiBpXSBpcyBhIG1heC1oZWFwIEhcbiAgICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLi4gcmlnaHRdIGlzIHNvcnRlZCAoY2FsbCBpdCBTKVxuICAgICAgICAgMy4gIGV2ZXJ5IGVsZW1lbnQgb2YgSCBpcyBsZXNzIHRoYW4gZXZlcnkgZWxlbWVudCBvZiBTICopXG4gICAgICBmb3IgaSA9IHJpZ2h0IGRvd250byBsZWZ0ICsgMSBkb1xuICAgICAgICBzd2FwIGFyciBsZWZ0IGk7XG4gICAgICAgIGhlYXBpZnkgYXJyIH5jb21wYXJlIGxlZnQgfmxlZnQgfnJpZ2h0OihpIC0gMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludHJvc29ydCAqKVxuICBtb2R1bGUgSW50cm9fc29ydCA6IHNpZ1xuICAgIGluY2x1ZGUgU29ydFxuXG4gICAgdmFsIGZpdmVfZWxlbWVudF9zb3J0XG4gICAgICA6ICAnYSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIG0xIG0yIG0zIG00IG01ID1cbiAgICAgIGxldCBjb21wYXJlX2FuZF9zd2FwIGkgaiA9XG4gICAgICAgIGlmIGNvbXBhcmUgKGdldCBhcnIgaSkgKGdldCBhcnIgaikgPiAwIHRoZW4gc3dhcCBhcnIgaSBqXG4gICAgICBpblxuICAgICAgKCogT3B0aW1hbCA1LWVsZW1lbnQgc29ydGluZyBuZXR3b3JrOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgMS0tby0tLS0tby0tLS0tby0tLS0tLS0tLS0tLS0tMVxuICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfFxuICAgICAgICAgICAgMi0tby0tLS0tfC0tby0tfC0tLS0tby0tby0tLS0tMlxuICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgICAgfCAgfFxuICAgICAgICAgICAgMy0tLS0tLS0tby0tby0tfC0tby0tfC0tby0tLS0tM1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfFxuICAgICAgICAgICAgNC0tLS0tby0tLS0tLS0tby0tby0tfC0tLS0tby0tNFxuICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfFxuICAgICAgICAgICAgNS0tLS0tby0tLS0tLS0tLS0tLS0tby0tLS0tby0tNVxuICAgICAgICAgIHZ9ICopXG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG0yO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNTtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTMgbTQ7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMiBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTQgbTUgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmU6KChjb21wYXJlIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHNpeHRoID0gKHJpZ2h0IC0gbGVmdCkgLyA2IGluXG4gICAgICBsZXQgbTEgPSBsZWZ0ICsgc2l4dGggaW5cbiAgICAgIGxldCBtMiA9IG0xICsgc2l4dGggaW5cbiAgICAgIGxldCBtMyA9IG0yICsgc2l4dGggaW5cbiAgICAgIGxldCBtNCA9IG0zICsgc2l4dGggaW5cbiAgICAgIGxldCBtNSA9IG00ICsgc2l4dGggaW5cbiAgICAgIGZpdmVfZWxlbWVudF9zb3J0IGFyciB+Y29tcGFyZSBtMSBtMiBtMyBtNCBtNTtcbiAgICAgIGxldCBtMl92YWwgPSBnZXQgYXJyIG0yIGluXG4gICAgICBsZXQgbTNfdmFsID0gZ2V0IGFyciBtMyBpblxuICAgICAgbGV0IG00X3ZhbCA9IGdldCBhcnIgbTQgaW5cbiAgICAgIGlmIGNvbXBhcmUgbTJfdmFsIG0zX3ZhbCA9IDBcbiAgICAgIHRoZW4gbTJfdmFsLCBtM192YWwsIHRydWVcbiAgICAgIGVsc2UgaWYgY29tcGFyZSBtM192YWwgbTRfdmFsID0gMFxuICAgICAgdGhlbiBtM192YWwsIG00X3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBtMl92YWwsIG00X3ZhbCwgZmFsc2VcbiAgICA7O1xuXG4gICAgbGV0IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgcGl2b3QxLCBwaXZvdDIsIHBpdm90c19lcXVhbCA9IGNob29zZV9waXZvdHMgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodCBpblxuICAgICAgKCogbG9vcCBpbnZhcmlhbnRzOlxuICAgICAgICAgMS4gIGxlZnQgPD0gbCA8IHIgPD0gcmlnaHRcbiAgICAgICAgIDIuICBsIDw9IHAgPD0gclxuICAgICAgICAgMy4gIGwgPD0geCA8IHAgICAgIGltcGxpZXMgYXJyW3hdID49IHBpdm90MVxuICAgICAgICAgYW5kIGFyclt4XSA8PSBwaXZvdDJcbiAgICAgICAgIDQuICBsZWZ0IDw9IHggPCBsICBpbXBsaWVzIGFyclt4XSA8IHBpdm90MVxuICAgICAgICAgNS4gIHIgPCB4IDw9IHJpZ2h0IGltcGxpZXMgYXJyW3hdID4gcGl2b3QyICopXG4gICAgICBsZXQgcmVjIGxvb3AgbCBwIHIgPVxuICAgICAgICBsZXQgcHYgPSBnZXQgYXJyIHAgaW5cbiAgICAgICAgaWYgY29tcGFyZSBwdiBwaXZvdDEgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHN3YXAgYXJyIHAgbDtcbiAgICAgICAgICBjb250IChsICsgMSkgKHAgKyAxKSByKVxuICAgICAgICBlbHNlIGlmIGNvbXBhcmUgcHYgcGl2b3QyID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBsb29wIGludmFyaWFudHM6ICBzYW1lIGFzIHRob3NlIG9mIHRoZSBvdXRlciBsb29wICopXG4gICAgICAgICAgbGV0IHJlYyBzY2FuX2JhY2t3YXJkcyByID1cbiAgICAgICAgICAgIGlmIHIgPiBwICYmIGNvbXBhcmUgKGdldCBhcnIgcikgcGl2b3QyID4gMCB0aGVuIHNjYW5fYmFja3dhcmRzIChyIC0gMSkgZWxzZSByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgciA9IHNjYW5fYmFja3dhcmRzIHIgaW5cbiAgICAgICAgICBzd2FwIGFyciByIHA7XG4gICAgICAgICAgY29udCBsIHAgKHIgLSAxKSlcbiAgICAgICAgZWxzZSBjb250IGwgKHAgKyAxKSByXG4gICAgICBhbmQgY29udCBsIHAgciA9IGlmIHAgPiByIHRoZW4gbCwgciBlbHNlIGxvb3AgbCBwIHIgaW5cbiAgICAgIGxldCBsLCByID0gY29udCBsZWZ0IGxlZnQgcmlnaHQgaW5cbiAgICAgIGwsIHIsIHBpdm90c19lcXVhbFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBsZW4gPSByaWdodCAtIGxlZnQgKyAxIGluXG4gICAgICAoKiBUaGlzIHRha2VzIGNhcmUgb2Ygc29tZSBlZGdlIGNhc2VzLCBzdWNoIGFzIGxlZnQgPiByaWdodCBvciB2ZXJ5IHNob3J0IGFycmF5cyxcbiAgICAgICAgIHNpbmNlIEluc2VydGlvbl9zb3J0LnNvcnQgaGFuZGxlcyB0aGVzZSBjYXNlcyBwcm9wZXJseS4gIFRodXMgd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgbWFrZSBzdXJlIHRoYXQgbGVmdCBhbmQgcmlnaHQgYXJlIHZhbGlkIGluIHJlY3Vyc2l2ZSBjYWxscy4gKilcbiAgICAgIGlmIGxlbiA8PSAzMlxuICAgICAgdGhlbiBJbnNlcnRpb25fc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgaWYgbWF4X2RlcHRoIDwgMFxuICAgICAgdGhlbiBIZWFwX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG1heF9kZXB0aCA9IG1heF9kZXB0aCAtIDEgaW5cbiAgICAgICAgbGV0IGwsIHIsIG1pZGRsZV9zb3J0ZWQgPSBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0OihsIC0gMSk7XG4gICAgICAgIGlmIG5vdCBtaWRkbGVfc29ydGVkIHRoZW4gaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdDpsIH5yaWdodDpyO1xuICAgICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OihyICsgMSkgfnJpZ2h0KVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBoZWFwX3NvcnRfc3dpdGNoX2RlcHRoID1cbiAgICAgICAgKCogV2UgYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0IGEgcmVjdXJzaW9uIGRlcHRoIG9mIDMyLiBHTlUgaW50cm9zb3J0IHVzZXMgMmxnKG4pLlxuICAgICAgICAgICBUaGUgZXhwZWN0ZWQgcmVjdXJzaW9uIGRlcHRoIGZvciBwZXJmZWN0IDMtd2F5IHNwbGl0cyBpcyBsb2dfMyhuKS5cblxuICAgICAgICAgICBVc2luZyAzMiBtZWFucyBhIGJhbGFuY2VkIDMtd2F5IHNwbGl0IHdvdWxkIHdvcmsgdXAgdG8gM14zMiBlbGVtZW50cyAocm91Z2hseVxuICAgICAgICAgICAyXjUwIG9yIDEwXjE1KS4gR05VIHJlYWNoZXMgYSBkZXB0aCBvZiAzMiBhdCA2NTUzNiBlbGVtZW50cy5cblxuICAgICAgICAgICBGb3Igc21hbGwgYXJyYXlzLCB0aGlzIG1ha2VzIHVzIGxlc3MgbGlrZWx5IHRvIGJhaWwgb3V0IHRvIGhlYXAgc29ydCwgYnV0IHRoZVxuICAgICAgICAgICAzMipOIGNvc3QgYmVmb3JlIHdlIGRvIGlzIG5vdCB0aGF0IG11Y2guXG5cbiAgICAgICAgICAgRm9yIGxhcmdlIGFycmF5cywgdGhpcyBtZWFucyB3ZSBhcmUgbW9yZSBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0IGF0XG4gICAgICAgICAgIHNvbWUgcG9pbnQgaWYgd2UgZ2V0IHNvbWUgYmFkIHNwbGl0cyBvciBpZiB0aGUgYXJyYXkgaXMgaHVnZS4gQnV0IHRoYXQncyBvbmx5IGFcbiAgICAgICAgICAgY29uc3RhbnQgZmFjdG9yIGNvc3QgaW4gdGhlIGZpbmFsIHN0YWdlcyBvZiByZWN1cnNpb24uXG5cbiAgICAgICAgICAgQWxsIGluIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBhIHNtYWxsIHRyYWRlb2ZmIGFuZCBhdm9pZHMgcGF5aW5nIGEgY29zdCB0b1xuICAgICAgICAgICBjb21wdXRlIGEgbG9nYXJpdGhtIGF0IHRoZSBzdGFydC4gKilcbiAgICAgICAgMzJcbiAgICAgIGluXG4gICAgICBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoOmhlYXBfc29ydF9zd2l0Y2hfZGVwdGggfmNvbXBhcmUgfmxlZnQgfnJpZ2h0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNvcnQgP3BvcyA/bGVuIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBhcnIpXG4gICAgaW5cbiAgICBJbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG4gIDs7XG5lbmRcbltAQGlubGluZV1cblxubW9kdWxlIFNvcnQgPSBTb3J0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldFxuICAgIGxldCBzZXQgPSB1bnNhZmVfc2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmxldCBzb3J0ID0gU29ydC5zb3J0XG5sZXQgb2ZfYXJyYXkgdCA9IHRcbmxldCB0b19hcnJheSB0ID0gdFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGlzX3NvcnRlZCB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPiAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+PSAwIHRoZW4gcmVzdWx0IDo9IGZhbHNlO1xuICAgIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVyZ2UgYTEgYTIgfmNvbXBhcmUgPVxuICBsZXQgbDEgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgbGV0IGwyID0gQXJyYXkubGVuZ3RoIGEyIGluXG4gIGlmIGwxID0gMFxuICB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsMiA9IDBcbiAgdGhlbiBjb3B5IGExXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMiAwKSAodW5zYWZlX2dldCBhMSAobDEgLSAxKSkgPj0gMFxuICB0aGVuIGFwcGVuZCBhMSBhMlxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgMCkgKHVuc2FmZV9nZXQgYTIgKGwyIC0gMSkpID4gMFxuICB0aGVuIGFwcGVuZCBhMiBhMVxuICBlbHNlIChcbiAgICBsZXQgbGVuID0gbDEgKyBsMiBpblxuICAgIGxldCBtZXJnZWQgPSBjcmVhdGUgfmxlbiAodW5zYWZlX2dldCBhMSAwKSBpblxuICAgIGxldCBhMV9pbmRleCA9IHJlZiAwIGluXG4gICAgbGV0IGEyX2luZGV4ID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IHVzZV9hMSA9XG4gICAgICAgIGlmIGwxID0gIWExX2luZGV4XG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBpZiBsMiA9ICFhMl9pbmRleFxuICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgZWxzZSBjb21wYXJlICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KSA8PSAwXG4gICAgICBpblxuICAgICAgaWYgdXNlX2ExXG4gICAgICB0aGVuIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpO1xuICAgICAgICBhMV9pbmRleCA6PSAhYTFfaW5kZXggKyAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTIgIWEyX2luZGV4KTtcbiAgICAgICAgYTJfaW5kZXggOj0gIWEyX2luZGV4ICsgMSlcbiAgICBkb25lO1xuICAgIG1lcmdlZClcbjs7XG5cbmxldCBjb3B5X21hdHJpeCA9IG1hcCB+Zjpjb3B5XG5cbmxldCBmb2xkaW5nX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcCB0IH5mOihmdW4geCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgYWNjIDo9IGYgaSAhYWNjICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBsZXQgcmVzdWx0ID1cbiAgICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCBuZXdfYWNjLCB5ID0gZiBpICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBjb3VudGkgdCB+ZiA9XG4gIGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGlkeCBjb3VudCBhIC0+IGlmIGYgaWR4IGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudCkgW0Bub250YWlsXVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgb2ZfbGlzdF9tYXBpIHhzIH5mID1cbiAgbWF0Y2ggeHMgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBoZCA6OiB0bCAtPlxuICAgIGxldCBhID0gY3JlYXRlIH5sZW46KDEgKyBMaXN0Lmxlbmd0aCB0bCkgKGYgMCBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgYSBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBpIGhkKTtcbiAgICAgICAgZmlsbCBhIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgYSAxIHRsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXAgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwIHhzIH5mIGluXG4gIHJldl9pbnBsYWNlIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9saXN0X3Jldl9tYXBpIHhzIH5mID1cbiAgbGV0IHQgPSBvZl9saXN0X21hcGkgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgciA9IHJlZiBbfHxdIGluXG4gIGxldCBrID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCB0IGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgaWYgIWsgPSAwIHRoZW4gciA6PSBjcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGE7XG4gICAgICB1bnNhZmVfc2V0ICFyICFrIGE7XG4gICAgICBpbmNyIGtcbiAgZG9uZTtcbiAgaWYgIWsgPSBsZW5ndGggdCB0aGVuICFyIGVsc2UgaWYgIWsgPiAwIHRoZW4gc3ViIH5wb3M6MCB+bGVuOiFrICFyIGVsc2UgW3x8XVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfaSBhIC0+IGYgYSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXAyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkubWFwMl9leG5cIiB0MSB0MjtcbiAgaW5pdCAobGVuZ3RoIHQxKSB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGQyX2V4biB0MSB0MiB+aW5pdCB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9sZDJfZXhuXCIgdDEgdDI7XG4gIGZvbGRpIHQxIH5pbml0IH5mOihmdW4gaSBhYyB4IC0+IGYgYWMgeCAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyaSB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cblxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIGZhbHNlIGluXG4gIHdoaWxlICFpID49IDAgJiYgbm90ICFyZXN1bHQgZG9cbiAgICBpZiBmICh1bnNhZmVfZ2V0IHQgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPSBleGlzdHMgdCB+ZjooZXF1YWwgYSkgW0Bub250YWlsXVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbiAgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgdCB+ZiA9IE9wdGlvbi5tYXAgKGZpbmRpIHQgfmY6KGZ1biBfaSB4IC0+IGYgeCkpIH5mOihmdW4gKF9pLCB4KSAtPiB4KVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmIE5vbmUgaW5cbiAgICB3aGlsZSBPcHRpb24uaXNfbm9uZSAhdmFsdWVfZm91bmQgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgdmFsdWVfZm91bmQgOj0gZiAhaSB2YWx1ZTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgIXZhbHVlX2ZvdW5kKVxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIHQgfmVxdWFsID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuIDw9IDFcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgIGxldCBpID0gcmVmIDEgaW5cbiAgICBsZXQgcHJldiA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgY3VyID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICBpZiBlcXVhbCBjdXIgIXByZXZcbiAgICAgIHRoZW4gKFxuICAgICAgICByZXN1bHQgOj0gU29tZSAoIXByZXYsIGN1cik7XG4gICAgICAgIGkgOj0gbilcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmV2IDo9IGN1cjtcbiAgICAgICAgaW5jciBpKVxuICAgIGRvbmU7XG4gICAgIXJlc3VsdClcbjs7XG5cbmxldCByZWR1Y2UgdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIGZvciBpID0gMSB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpXG4gICAgZG9uZTtcbiAgICBTb21lICFyKVxuOztcblxubGV0IHJlZHVjZV9leG4gdCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSB0IH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBwZXJtdXRlID0gQXJyYXlfcGVybXV0ZS5wZXJtdXRlXG5cbmxldCByYW5kb21fZWxlbWVudF9leG4gPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgYXJyYXlcIlxuICBlbHNlIHQuKFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChsZW5ndGggdCkpXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnQgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIHRyeSBTb21lIChyYW5kb21fZWxlbWVudF9leG4gfnJhbmRvbV9zdGF0ZSB0KSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgemlwIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MiB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MikpXG47O1xuXG5sZXQgemlwX2V4biB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDJcbiAgdGhlbiBmYWlsd2l0aCBcIkFycmF5LnppcF9leG5cIlxuICBlbHNlIG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKVxuOztcblxubGV0IHVuemlwIHQgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgeCwgeSA9IHQuKDApIGluXG4gICAgbGV0IHJlczEgPSBjcmVhdGUgfmxlbjpuIHggaW5cbiAgICBsZXQgcmVzMiA9IGNyZWF0ZSB+bGVuOm4geSBpblxuICAgIGZvciBpID0gMSB0byBuIC0gMSBkb1xuICAgICAgbGV0IHgsIHkgPSB0LihpKSBpblxuICAgICAgcmVzMS4oaSkgPC0geDtcbiAgICAgIHJlczIuKGkpIDwtIHlcbiAgICBkb25lO1xuICAgIHJlczEsIHJlczIpXG47O1xuXG5sZXQgc29ydGVkX2NvcHkgdCB+Y29tcGFyZSA9XG4gIGxldCB0MSA9IGNvcHkgdCBpblxuICBzb3J0IHQxIH5jb21wYXJlO1xuICB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgKGJvdGggOiBfIEVpdGhlci50IHQpID0gbWFwaSB0IH5mIGluXG4gIGxldCBmaXJzdHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IHNlY29uZHMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgXyAtPiBOb25lXG4gICAgICB8IFNlY29uZCB4IC0+IFNvbWUgeClcbiAgaW5cbiAgZmlyc3RzLCBzZWNvbmRzXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCkgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5sZXQgbGFzdCB0ID0gdC4obGVuZ3RoIHQgLSAxKVxuXG4oKiBDb252ZXJ0IHRvIGEgc2VxdWVuY2UgYnV0IGRvZXMgbm90IGF0dGVtcHQgdG8gcHJvdGVjdCBhZ2FpbnN0IG1vZGlmaWNhdGlvblxuICAgaW4gdGhlIGFycmF5LiAqKVxubGV0IHRvX3NlcXVlbmNlX211dGFibGUgdCA9XG4gIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBpIC0+XG4gICAgaWYgaSA+PSBsZW5ndGggdFxuICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSB0LihpKTsgc3RhdGUgPSBpICsgMSB9KVxuOztcblxubGV0IHRvX3NlcXVlbmNlIHQgPSB0b19zZXF1ZW5jZV9tdXRhYmxlIChjb3B5IHQpXG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCB0MSB0MiA9XG4gIGlmIGlzX2VtcHR5IHQxIHx8IGlzX2VtcHR5IHQyXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuOihuMSAqIG4yKSAodDEuKDApLCB0Mi4oMCkpIGluXG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIGZvciBpMSA9IDAgdG8gbjEgLSAxIGRvXG4gICAgICBmb3IgaTIgPSAwIHRvIG4yIC0gMSBkb1xuICAgICAgICB0LighcikgPC0gdDEuKGkxKSwgdDIuKGkyKTtcbiAgICAgICAgaW5jciByXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHRyYW5zcG9zZSB0dCA9XG4gIGlmIGxlbmd0aCB0dCA9IDBcbiAgdGhlbiBTb21lIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHdpZHRoID0gbGVuZ3RoIHR0IGluXG4gICAgbGV0IGRlcHRoID0gbGVuZ3RoIHR0LigwKSBpblxuICAgIGlmIGV4aXN0cyB0dCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQgPD4gZGVwdGgpXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBTb21lIChpbml0IGRlcHRoIH5mOihmdW4gZCAtPiBpbml0IHdpZHRoIH5mOihmdW4gdyAtPiB0dC4odykuKGQpKSkpKVxuOztcblxubGV0IHRyYW5zcG9zZV9leG4gdHQgPVxuICBtYXRjaCB0cmFuc3Bvc2UgdHQgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS50cmFuc3Bvc2VfZXhuXCJcbiAgfCBTb21lIHR0JyAtPiB0dCdcbjs7XG5cbmluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBbfHxdXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChsZW5ndGggdCA+IDApO1xuICAgICAgICBjcmVhdGUgfmxlbiB0LigwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnQgPSBTb3J0XG4gIG1vZHVsZSBTb3J0ZXIgPSBTb3J0ZXJcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdCBhbGwgdmFsdWVzIG9mIHR5cGUgW3RdIGRvIG5vdCBoYXZlIHRoZSB0YWdcbiAgIFtkb3VibGVfYXJyYXlfdGFnXS4gIFNvbWUgZnVuY3Rpb25zIGJlbG93IGFzc3VtZSB0aGlzIGluIG9yZGVyIHRvIGF2b2lkIHRlc3RpbmcgdGhlXG4gICB0YWcsIGFuZCB3aWxsIHNlZ2ZhdWx0IGlmIHRoaXMgcHJvcGVydHkgZG9lc24ndCBob2xkLiAqKVxudHlwZSB0ID0gU3RkbGliLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAoU3RkbGliLk9iai50YWcgKFN0ZGxpYi5PYmoucmVwciB0KSA8PiBTdGRsaWIuT2JqLmRvdWJsZV9hcnJheV90YWcpXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBTdGRsaWIuT2JqLnJlcHIgKDAgOiBpbnQpXG5cbigqIFdlIGNhbGwgW0FycmF5LmNyZWF0ZV0gd2l0aCBhIHZhbHVlIHRoYXQgaXMgbm90IGEgZmxvYXQgc28gdGhhdCB0aGUgYXJyYXkgZG9lc24ndCBnZXRcbiAgIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gKilcbmxldCBjcmVhdGVfemVybyB+bGVuID0gQXJyYXkuY3JlYXRlIH5sZW4gemVyb19vYmpcbmxldCBlbXB0eSA9IFt8fF1cblxudHlwZSBub3RfYV9mbG9hdCA9XG4gIHwgTm90X2FfZmxvYXRfMFxuICB8IE5vdF9hX2Zsb2F0XzEgb2YgaW50XG5cbmxldCBfbm90X2FfZmxvYXRfMCA9IE5vdF9hX2Zsb2F0XzBcbmxldCBfbm90X2FfZmxvYXRfMSA9IE5vdF9hX2Zsb2F0XzEgNDJcblxubGV0IGdldCB0IGkgPVxuICAoKiBNYWtlIHRoZSBjb21waWxlciBiZWxpZXZlIFt0XSBpcyBhbiBhcnJheSBub3QgY29udGFpbmluZyBmbG9hdHMgc28gaXQgZG9lcyBub3QgY2hlY2tcbiAgICAgaWYgW3RdIGlzIHRhZ2dlZCB3aXRoIFtEb3VibGVfYXJyYXlfdGFnXS4gIEl0IGlzIE5PVCBvayB0byB1c2UgW2ludCBhcnJheV0gc2luY2UgKGlmXG4gICAgIHRoaXMgZnVuY3Rpb24gaXMgaW5saW5lZCBhbmQgdGhlIGFycmF5IGNvbnRhaW5zIGluLWhlYXAgYm94ZWQgdmFsdWVzKSB3cm9uZyByZWdpc3RlclxuICAgICB0eXBpbmcgbWF5IHJlc3VsdCwgbGVhZGluZyB0byBhIGZhaWx1cmUgdG8gcmVnaXN0ZXIgbmVjZXNzYXJ5IEdDIHJvb3RzLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoKiBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gaXMgcmVxdWlyZWQgb24gdGhlIGFycmF5IGJlY2F1c2UgdGhpcyBjb2RlIGJyZWFrcyB0aGUgdXN1YWxcbiAgICAgICBhc3N1bXB0aW9ucyBhYm91dCBhcnJheSBraW5kcyB0aGF0IHRoZSBGbGFtYmRhIDIgb3B0aW1pc2VyIGNhbiBzZWUuICopXG4gICAgKChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICAgICA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxuICBTdGRsaWIuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICAgICBpXG4gICAgIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSlcbiAgICBpXG4gICAgKFN0ZGxpYi5PYmoub2JqIChTeXMub3BhcXVlX2lkZW50aXR5IG9iaikgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9iaiA9XG4gICgqIHNhbWUgYXMgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IGJ1dCBzYWZlICopXG4gIChTeXMub3BhcXVlX2lkZW50aXR5IChTdGRsaWIuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkpLihpKVxuICA8LSAoU3RkbGliLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXRcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqX2xvY2FsLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpKVxuICAgIGlcbiAgICAoU3lzLm9wYXF1ZV9pZGVudGl0eSBpbnQpXG47O1xuXG4oKiBGb3IgW3NldF0gYW5kIFt1bnNhZmVfc2V0XSwgaWYgYSBwb2ludGVyIGlzIGludm9sdmVkLCB3ZSBmaXJzdCBkbyBhIHBoeXNpY2FsLWVxdWFsaXR5XG4gICB0ZXN0IHRvIHNlZSBpZiB0aGUgcG9pbnRlciBpcyBjaGFuZ2luZy4gIElmIG5vdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyB0aGUgW3NldF0sIHdoaWNoXG4gICBzYXZlcyBhIGNhbGwgdG8gW2NhbWxfbW9kaWZ5XS4gIFdlIHRoaW5rIHRoaXMgcGh5c2ljYWwtZXF1YWxpdHkgdGVzdCBpcyB3b3J0aCBpdFxuICAgYmVjYXVzZSBpdCBpcyB2ZXJ5IGNoZWFwIChib3RoIHZhbHVlcyBhcmUgYWxyZWFkeSBhdmFpbGFibGUgZnJvbSB0aGUgW2lzX2ludF0gdGVzdClcbiAgIGFuZCBiZWNhdXNlIFtjYW1sX21vZGlmeV0gaXMgZXhwZW5zaXZlLiAqKVxuXG5sZXQgc2V0IHQgaSBvYmogPVxuICAoKiBXZSB1c2UgW2dldF0gZmlyc3QgYnV0IHRoZW4gd2UgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBzaW5jZSB3ZSBrbm93IHRoYXQgW2ldIGlzXG4gICAgIHZhbGlkLiAqKVxuICBsZXQgb2xkX29iaiA9IGdldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0IHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmogJiYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgc3dhcCB0IGkgaiA9XG4gIGxldCBhID0gZ2V0IHQgaSBpblxuICBsZXQgYiA9IGdldCB0IGogaW5cbiAgdW5zYWZlX3NldCB0IGkgYjtcbiAgdW5zYWZlX3NldCB0IGogYVxuOztcblxubGV0IGNyZWF0ZSB+bGVuIHggPVxuICAoKiBJZiB3ZSBjYW4sIHVzZSBbQXJyYXkuY3JlYXRlXSBkaXJlY3RseS4gRXZlbiB0aG91Z2ggW2lzX2ludF0gY2hlY2sgaXMgc3Vic3VtZWQgYnlcbiAgICAgdGhlIHRhZyBjaGVjaywgY2hlY2tpbmcgaXQgaXMgbXVjaCBmYXN0ZXIsIHNpbmNlIGl0IGF2b2lkcyBhIEMgZnVuY3Rpb24gY2FsbC4gICopXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IHggfHwgU3RkbGliLk9iai50YWcgeCA8PiBTdGRsaWIuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2VcbiAgICAoKiBbdC4oaSldIGlzIGFuIGludGVnZXIgYW5kIFtvYmpdIGlzIG5vdCwgc28gd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgdGhleSBhcmVcbiAgICAgICBlcXVhbC4gKilcbiAgICB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50IHQgaSBpbnQgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgaW50KVxuOztcblxubGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgaSA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgbm90IChTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIEJsaXQuYmxpdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgOiBfIHQgLT4gaW50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBPYmpfYXJyYXkudFxuXG4gIGxldCBlbXB0eSA9IE9ial9hcnJheS5lbXB0eVxuICBsZXQgdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlX29ial9hcnJheSB+bGVuID0gT2JqX2FycmF5LmNyZWF0ZV96ZXJvIH5sZW5cbiAgbGV0IGNyZWF0ZSB+bGVuIHggPSBPYmpfYXJyYXkuY3JlYXRlIH5sZW4gKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHN3YXAgdCBpIGogPSBPYmpfYXJyYXkuc3dhcCB0IGkgalxuICBsZXQgZ2V0IGFyciBpID0gU3RkbGliLk9iai5vYmogKE9ial9hcnJheS5nZXQgYXJyIGkpXG4gIGxldCBzZXQgYXJyIGkgeCA9IE9ial9hcnJheS5zZXQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IFN0ZGxpYi5PYmoub2JqIChPYmpfYXJyYXkudW5zYWZlX2dldCBhcnIgaSlcbiAgbGV0IHVuc2FmZV9zZXQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0IGFyciBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9zZXRfaW50IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldF9pbnQgYXJyIGkgeFxuXG4gIGxldCB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHhcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IGFyciBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4ID0gT2JqX2FycmF5LnNldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKFN0ZGxpYi5PYmoudGFnIChTdGRsaWIuT2JqLnJlcHIgdCkgPD4gU3RkbGliLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuOztcblxubGV0IGluaXQgbCB+ZiA9XG4gIGlmIGwgPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJVbmlmb3JtX2FycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46bCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG9mX2FycmF5IGFyciA9IGluaXQgfmY6KEFycmF5LnVuc2FmZV9nZXQgYXJyKSAoQXJyYXkubGVuZ3RoIGFycikgW0Bub250YWlsXVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpIFtAbm9udGFpbF1cbmxldCBtYXBpIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmIGkgKHVuc2FmZV9nZXQgYSBpKSkgKGxlbmd0aCBhKSBbQG5vbnRhaWxdXG5cbmxldCBpdGVyIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBhIH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmVcbjs7XG5cbmxldCBmb2xkaSBhIH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IH5mOihnZXQgdCkgKGxlbmd0aCB0KVxuXG5sZXQgb2ZfbGlzdCBsID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgbGV0IHJlcyA9IHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgeCAtPiBzZXQgcmVzIGkgeCk7XG4gIHJlc1xuOztcblxuKCogSXQgaXMgbm90IHNhZmUgZm9yIFt0b19hcnJheV0gdG8gYmUgdGhlIGlkZW50aXR5IGZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBjb2RlIHRoYXRcbiAgIHJlbGllcyBvbiBbZmxvYXQgYXJyYXldcyBiZWluZyB1bmJveGVkLCBmb3IgZXhhbXBsZSBpbiBbYmluX3dyaXRlX2FycmF5XS4gKilcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiBmYWxzZSBlbHNlIGYgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgfmYgKGkgLSAxKVxuICBpblxuICBsb29wIHQgfmYgKGxlbmd0aCB0IC0gMSlcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID0gaWYgaSA8IDAgdGhlbiB0cnVlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpICYmIGxvb3AgdCB+ZiAoaSAtIDEpIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0MSBpblxuICBpZiBsZW5ndGggdDIgPD4gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyX2V4blwiO1xuICBpbml0IGxlbiB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCB0MSBpKSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuXG5tb2R1bGUgU29ydCA9IEFycmF5LlByaXZhdGUuU29ydGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0XG4gICAgbGV0IHNldCA9IHVuc2FmZV9zZXRcbiAgZW5kKVxuXG5sZXQgc29ydCA9IFNvcnQuc29ydFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IFN0ZGxpYi5jZWlsXG5sZXQgZmxvb3IgPSBTdGRsaWIuZmxvb3JcbmxldCBtb2RfZmxvYXQgPSBTdGRsaWIubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IFN0ZGxpYi5tb2RmXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ1xubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nX29wdFxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBtYXhfZmluaXRlX3ZhbHVlID0gU3RkbGliLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBTdGRsaWIuZXBzaWxvbl9mbG9hdFxubGV0IGNsYXNzaWZ5X2Zsb2F0ID0gU3RkbGliLmNsYXNzaWZ5X2Zsb2F0XG5sZXQgYWJzX2Zsb2F0ID0gU3RkbGliLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBTdGRsaWIuRmxvYXQuaXNfaW50ZWdlclxubGV0ICggKiogKSA9IFN0ZGxpYi4oICoqIClcblxubGV0ICggJS4gKSBhIGIgPVxuICAoKiBSYWlzZSBpbiBjYXNlIG9mIGEgbmVnYXRpdmUgbW9kdWx1cywgYXMgZG9lcyBJbnQuKCAlICkuICopXG4gIGlmIGIgPCAwLlxuICB0aGVuIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCIlZiAlJSAlZiBpbiBmbG9hdDAubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCIgYSBiICgpO1xuICBsZXQgbSA9IFN0ZGxpYi5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIFN0ZGxpYiA6XG4gIHNpZ1xuICAgIGV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuXG4gICAgZXh0ZXJuYWwgbGRleHBcbiAgICAgIDogIChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgICAtPiAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgPSBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiXG4gICAgW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGV4cG0xIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwbTFfZmxvYXRcIiBcImNhbWxfZXhwbTFcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGFzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbmhfZmxvYXRcIiBcImNhbWxfYXNpbmhcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBsb2cgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2dfZmxvYXRcIiBcImxvZ1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gIGVuZClcblxuKCogV2UgbmVlZCB0aGlzIGluZGlyZWN0aW9uIGJlY2F1c2UgdGhlc2UgYXJlIGV4cG9zZWQgYXMgXCJ2YWxcIiBpbnN0ZWFkIG9mIFwiZXh0ZXJuYWxcIiAqKVxubGV0IGZyZXhwID0gZnJleHBcbmxldCBsZGV4cCA9IGxkZXhwXG5sZXQgaXNfbmFuIHggPSAoeCA6IGZsb2F0KSA8PiB4XG5cbigqIEFuIG9yZGVyLXByZXNlcnZpbmcgYmlqZWN0aW9uIGJldHdlZW4gYWxsIGZsb2F0cyBleGNlcHQgZm9yIE5hTnMsIGFuZCA5OS45NSUgb2ZcbiAgIGludDY0cy5cblxuICAgTm90ZSB3ZSBkb24ndCBkaXN0aW5ndWlzaCAwLiBhbmQgLTAuIGFzIHNlcGFyYXRlIHZhbHVlcyBoZXJlLCB0aGV5IGJvdGggbWFwIHRvIDBMLCB3aGljaFxuICAgbWFwcyBiYWNrIHRvIDAuXG5cbiAgIFRoaXMgc2hvdWxkIHdvcmsgYm90aCBvbiBsaXR0bGUtZW5kaWFuIGFuZCBoaWdoLWVuZGlhbiBDUFVzLiAgV2lraXBlZGlhIHNheXM6IFwib25cbiAgIG1vZGVybiBzdGFuZGFyZCBjb21wdXRlcnMgKGkuZS4sIGltcGxlbWVudGluZyBJRUVFIDc1NCksIG9uZSBtYXkgaW4gcHJhY3RpY2Ugc2FmZWx5XG4gICBhc3N1bWUgdGhhdCB0aGUgZW5kaWFubmVzcyBpcyB0aGUgc2FtZSBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBmb3IgaW50ZWdlcnNcIlxuICAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW5kaWFubmVzcyNGbG9hdGluZy1wb2ludF9hbmRfZW5kaWFubmVzcykuXG4qKVxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgPVxuICBpZiBpc19uYW4gdFxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiAoKiBhbHNvIGluY2x1ZGVzIC0wLiAqKVxuICAgIFNvbWUgMExcbiAgZWxzZSBpZiB0ID4gMC5cbiAgdGhlbiBTb21lIChTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0KVxuICBlbHNlIFNvbWUgKFN0ZGxpYi5JbnQ2NC5uZWcgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0ICgtLnQpKSlcbjs7XG5cbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4geCA9IE9wdGlvbi52YWx1ZV9leG4gKHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHgpXG5cbmxldCBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4ID1cbiAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSB4IDBMXG4gIHRoZW4gU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgeFxuICBlbHNlIH4tLihTdGRsaWIuSW50NjQuZmxvYXRfb2ZfYml0cyAoU3RkbGliLkludDY0Lm5lZyB4KSlcbjs7XG5cbmxldCBvbmVfdWxwIGRpciB0ID1cbiAgbWF0Y2ggdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCB3aXRoXG4gIHwgTm9uZSAtPiBTdGRsaWIubmFuXG4gIHwgU29tZSB4IC0+XG4gICAgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXJcbiAgICAgIChTdGRsaWIuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgb25lX3VscCBgRG93biAoMi4gKiogZXhwKVxuOztcblxubGV0IGlzX3hfbWludXNfb25lX2V4YWN0IHggPVxuICAoKiBbeCA9IHggLS4gMS5dIGRvZXMgbm90IHdvcmsgd2l0aCB4ODcgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBiYWNrZW5kICh3aGljaCBpcyB1c2VkXG4gICAgIG9uIDMyLWJpdCBvY2FtbCkgYmVjYXVzZSBvZiA4MC1iaXQgcmVnaXN0ZXIgcHJlY2lzaW9uIG9mIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMuXG5cbiAgICAgQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGNvbXB1dGluZyB0aGlzOiBbeCAtLiBvbmVfdWxwIGBEb3duIHggPD0gMS5dIGlzIGFsc28gcHJvbmUgdG9cbiAgICAgdGhlIHNhbWUgcHJlY2lzaW9uIGlzc3VlczogeW91IG5lZWQgdG8gbWFrZSBzdXJlIFt4XSBpcyA2NC1iaXQuXG4gICopXG4gIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBub3QgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIGxldCBtaW5faW50X2FzX2Zsb2F0ID0gfi0uKDIuICoqIGV4cCkgaW5cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBudW1fYml0cyAtIDEgPCA1MyAoKiA1MyA9ICNiaXRzIGluIHRoZSBmbG9hdCdzIG1hbnRpc3NhIHdpdGggc2lnbiBpbmNsdWRlZCAqKVxuICB0aGVuIChcbiAgICAoKiBUaGUgc21hbGxlc3QgZmxvYXQgdGhhdCByb3VuZHMgdG93YXJkcyB6ZXJvIHRvIFttaW5faW50XSBpc1xuICAgICAgIFttaW5faW50IC0gMSArIGVwc2lsb25dICopXG4gICAgYXNzZXJ0IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KTtcbiAgICBvbmVfdWxwIGBVcCAobWluX2ludF9hc19mbG9hdCAtLiAxLikpXG4gIGVsc2UgKFxuICAgICgqIFttaW5faW50X2FzX2Zsb2F0XSBpcyBhbHJlYWR5IHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXS4gKilcbiAgICBhc3NlcnQgKG5vdCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCkpO1xuICAgIG1pbl9pbnRfYXNfZmxvYXQpXG47O1xuXG4oKiBGbG9hdCBjbGFtcGluZyBpcyBzdHJ1Y3R1cmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IHRoYW4gY2xhbXBpbmcgZm9yIG90aGVyIHR5cGVzLCBzb1xuICAgdGhhdCB3ZSBnZXQgdGhlIGJlaGF2aW9yIG9mIFtjbGFtcF91bmNoZWNrZWQgbmFuIH5taW4gfm1heCA9IG5hbl0gKGZvciBhbnkgW21pbl0gYW5kXG4gICBbbWF4XSkgZm9yIGZyZWUuXG4qKVxubGV0IGNsYW1wX3VuY2hlY2tlZCAodCA6IGZsb2F0KSB+bWluIH5tYXggPVxuICBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgbWF4IDwgdCB0aGVuIG1heCBlbHNlIHRcbjs7XG5cbmxldCBib3ggPVxuICAoKiBQcmV2ZW50IHBvdGVudGlhbCBjb25zdGFudCBmb2xkaW5nIG9mIFsrLiAwLl0gaW4gdGhlIG5lYXIgb2NhbWxvcHQgZnV0dXJlLiAqKVxuICBsZXQgeCA9IFN5czAub3BhcXVlX2lkZW50aXR5IDAuIGluXG4gIGZ1biBmIC0+IGYgKy4geFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5pbmNsdWRlIENoYXIwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfY2hhciA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9jaGFyXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9jaGFyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfY2hhciA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoY2hhcl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubWFrZSAxIHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggcyB3aXRoXG4gICAgfCAxIC0+IHMuWzBdXG4gICAgfCBfIC0+IGZhaWx3aXRoZiBcIkNoYXIub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQ2hhclwiXG4gIGVuZClcblxubGV0IHBwIGZtdCBjID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVDXCIgY1xuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGFsbCA9IEFycmF5LmluaXQgMjU2IH5mOnVuc2FmZV9vZl9pbnQgfD4gQXJyYXkudG9fbGlzdFxuXG5sZXQgaXNfbG93ZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfdXBwZXJjYXNlID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfcHJpbnQgPSBmdW5jdGlvblxuICB8ICcgJyAuLiAnficgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnXFx0JyB8ICdcXG4nIHwgJ1xcMDExJyAoKiB2ZXJ0aWNhbCB0YWIgKikgfCAnXFwwMTInICgqIGZvcm0gZmVlZCAqKSB8ICdcXHInIHwgJyAnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19hbHBoYSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbigqIFdyaXRpbmcgdGhlc2Ugb3V0LCBpbnN0ZWFkIG9mIGNhbGxpbmcgW2lzX2FscGhhXSBhbmQgW2lzX2RpZ2l0XSwgcmVkdWNlc1xuICAgcnVudGltZSBieSBhcHByb3guIDMwJSAqKVxubGV0IGlzX2FscGhhbnVtID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfZGlnaXRfdW5zYWZlIHQgPSB0b19pbnQgdCAtIHRvX2ludCAnMCdcblxubGV0IGdldF9kaWdpdF9leG4gdCA9XG4gIGlmIGlzX2RpZ2l0IHRcbiAgdGhlbiBnZXRfZGlnaXRfdW5zYWZlIHRcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLmdldF9kaWdpdF9leG4gJUM6IG5vdCBhIGRpZ2l0XCIgdCAoKVxuOztcblxubGV0IGdldF9kaWdpdCB0ID0gaWYgaXNfZGlnaXQgdCB0aGVuIFNvbWUgKGdldF9kaWdpdF91bnNhZmUgdCkgZWxzZSBOb25lXG5cbmxldCBpc19oZXhfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF9sb3dlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19oZXhfZGlnaXRfdXBwZXIgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdF9leG4gPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnMCdcbiAgfCAnYScgLi4gJ2YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ2EnICsgMTBcbiAgfCAnQScgLi4gJ0YnIGFzIHQgLT4gdG9faW50IHQgLSB0b19pbnQgJ0EnICsgMTBcbiAgfCB0IC0+XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJDaGFyLmdldF9oZXhfZGlnaXRfZXhuOiBub3QgYSBoZXhhZGVjaW1hbCBkaWdpdFwiXG4gICAgICAgICBbIFwiY2hhclwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IGdldF9oZXhfZGlnaXQgdCA9IGlmIGlzX2hleF9kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2hleF9kaWdpdF9leG4gdCkgZWxzZSBOb25lXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0ICggPD0gKSA9ICggPD0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGNoYXJfc2V4cF9ncmFtbWFyXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgYzEgYzIgPSBjb21wYXJlIChsb3dlcmNhc2UgYzEpIChsb3dlcmNhc2UgYzIpXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfY2hhciBzdGF0ZSAobG93ZXJjYXNlIHQpXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBDaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0MC5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG5cbigqIENvbnN0cnVjdCBhIGJ5dGUgc3RyaW5nIG9mIGxlbmd0aCAyNTYsIG1hcHBpbmcgZXZlcnkgaW5wdXQgY2hhcmFjdGVyIGNvZGUgdG9cbiAgIGl0cyBjb3JyZXNwb25kaW5nIG91dHB1dCBjaGFyYWN0ZXIuXG5cbiAgIEJlbmNobWFya3MgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIGZhc3RlciB0aGFuIHRoZSBsYW1iZGEgKGluY2x1ZGluZyBjb3N0IG9mXG4gICB0aGlzIGZ1bmN0aW9uKSwgZXZlbiBpZiB0YXJnZXQvcmVwbGFjZW1lbnQgYXJlIGp1c3QgMiBjaGFyYWN0ZXJzIGVhY2guXG5cbiAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFuc2xhdGlvbiBtYXAgaXMgZXF1aXZhbGVudCB0byBqdXN0IHRoZSBpZGVudGl0eS4gKilcbmxldCB0cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgbGV0IHRyX21hcCA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGkgKENoYXIub2ZfaW50X2V4biBpKVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbWluIChTdHJpbmcubGVuZ3RoIHRhcmdldCkgKFN0cmluZy5sZW5ndGggcmVwbGFjZW1lbnQpIC0gMSBkb1xuICAgIGxldCBpbmRleCA9IENoYXIudG9faW50IChTdHJpbmcudW5zYWZlX2dldCB0YXJnZXQgaSkgaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHRyX21hcCBpbmRleCAoU3RyaW5nLnVuc2FmZV9nZXQgcmVwbGFjZW1lbnQgaSlcbiAgZG9uZTtcbiAgbGV0IGxhc3RfcmVwbGFjZW1lbnQgPSBTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCAtIDEpIGluXG4gIGZvclxuICAgIGkgPSBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgdG8gU3RyaW5nLmxlbmd0aCB0YXJnZXQgLSAxXG4gIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IGxhc3RfcmVwbGFjZW1lbnRcbiAgZG9uZTtcbiAgbGV0IHJlYyBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIGkgPVxuICAgIGlmIGkgPSAyNTZcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBDaGFyLiggPD4gKSAoQnl0ZXMwLnVuc2FmZV9nZXQgdHJfbWFwIGkpIChDaGFyLm9mX2ludF9leG4gaSlcbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgKGkgKyAxKVxuICBpblxuICAoKiBxdWljayBjaGVjayBvbiB0aGUgZmlyc3QgdGFyZ2V0IGNoYXJhY3RlciB3aGljaCB3aWxsIDk5JSBiZSB0cnVlICopXG4gIGxldCBmaXJzdF90YXJnZXQgPSB0YXJnZXQuWzBdIGluXG4gIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGZpcnN0X3RhcmdldCkpIGZpcnN0X3RhcmdldFxuICB8fCBoYXZlX2FueV9kaWZmZXJlbnQgdHJfbWFwIDBcbiAgdGhlbiBTb21lIChCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0cl9tYXApXG4gIGVsc2UgTm9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYVxuXG5sZXQgc3RhZ2UgPSBGbi5pZFxubGV0IHVuc3RhZ2UgPSBGbi5pZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIEludCA9IEludDBcbmluY2x1ZGUgU3RyaW5nMFxuXG5sZXQgaW52YWxpZF9hcmdmID0gUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9zdHJpbmcgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHVuc2FmZV9zdWIgc3JjIH5wb3MgfmxlbiA9XG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBcIlwiXG4gIGVsc2UgKFxuICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuOztcblxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICB1bnNhZmVfc3ViIHNyYyB+cG9zIH5sZW4pXG47O1xuXG5sZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgc3ViXG4gICAgc3JjXG4gICAgfnBvc1xuICAgIH5sZW46XG4gICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgfCBOb25lIC0+IGxlbmd0aCBzcmMgLSBwb3MpXG47O1xuXG5sZXQgcmVjIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF8gY2hhciA9XG4gIHBvcyA8IGVuZF9cbiAgJiYgKENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgdCBwb3MpIGNoYXIgfHwgY29udGFpbnNfdW5zYWZlIHQgfnBvczoocG9zICsgMSkgfmVuZF8gY2hhcilcbjs7XG5cbmxldCBjb250YWlucyA/KHBvcyA9IDApID9sZW4gdCBjaGFyID1cbiAgbGV0IHRvdGFsX2xlbmd0aCA9IFN0cmluZy5sZW5ndGggdCBpblxuICBsZXQgbGVuID0gT3B0aW9uLnZhbHVlIGxlbiB+ZGVmYXVsdDoodG90YWxfbGVuZ3RoIC0gcG9zKSBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoO1xuICBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfOihwb3MgKyBsZW4pIGNoYXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCByZWMgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPj0gbGVuXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyArIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZXhuIHQgY2hhciA9IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2V4blxuOztcblxubGV0IGluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9mcm9tX2V4blxuOztcblxubGV0IHJlYyByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXIgPVxuICBpZiBwb3MgPCAwXG4gIHRoZW4gcmFpc2Ugbm90X2ZvdW5kXG4gIGVsc2UgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzdHJpbmcgcG9zKSBjaGFyXG4gIHRoZW4gcG9zXG4gIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczoobGVuIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2V4biB0IGNoYXIgPSByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2V4blxuOztcblxubGV0IHJpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmIHBvcyA8IC0xIHx8IHBvcyA+PSBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4blwiXG4gICAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcmluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKGluZGV4X2V4biB0IGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXhfZnJvbSB0IHBvcyBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuMCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGF0dGVybiA6IHN0cmluZ1xuICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgPSBfIH0gOiBTZXhwLnQgPVxuICAgIExpc3RcbiAgICAgIFsgTGlzdCBbIEF0b20gXCJwYXR0ZXJuXCI7IHNleHBfb2Zfc3RyaW5nIHBhdHRlcm4gXVxuICAgICAgOyBMaXN0IFsgQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IHNleHBfb2ZfYm9vbCBjYXNlX3NlbnNpdGl2ZSBdXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHBhdHRlcm4gdCA9IHQucGF0dGVyblxuICBsZXQgY2FzZV9zZW5zaXRpdmUgdCA9IHQuY2FzZV9zZW5zaXRpdmVcblxuICAoKiBGaW5kIG1heCBudW1iZXIgb2YgbWF0Y2hlZCBjaGFyYWN0ZXJzIGF0IFtuZXh0X3RleHRfY2hhcl0sIGdpdmVuIHRoZSBjdXJyZW50XG4gICAgIFttYXRjaGVkX2NoYXJzXS4gVHJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCBtYXRjaCwgaWYgY2hhcnMgZG9uJ3QgbWF0Y2gsIHRyeSB0byBtYXRjaFxuICAgICBmZXdlciBjaGFycy4gSWYgY2hhcnMgbWF0Y2ggdGhlbiBleHRlbmQgdGhlIG1hdGNoLiAqKVxuICBsZXQga21wX2ludGVybmFsX2xvb3Agfm1hdGNoZWRfY2hhcnMgfm5leHRfdGV4dF9jaGFyIH5wYXR0ZXJuIH5rbXBfYXJyYXkgfmNoYXJfZXF1YWwgPVxuICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIG1hdGNoZWRfY2hhcnMgaW5cbiAgICB3aGlsZVxuICAgICAgIW1hdGNoZWRfY2hhcnMgPiAwXG4gICAgICAmJiBub3QgKGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycykpXG4gICAgZG9cbiAgICAgIG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKCFtYXRjaGVkX2NoYXJzIC0gMSlcbiAgICBkb25lO1xuICAgIGlmIGNoYXJfZXF1YWwgbmV4dF90ZXh0X2NoYXIgKHVuc2FmZV9nZXQgcGF0dGVybiAhbWF0Y2hlZF9jaGFycylcbiAgICB0aGVuIG1hdGNoZWRfY2hhcnMgOj0gIW1hdGNoZWRfY2hhcnMgKyAxO1xuICAgICFtYXRjaGVkX2NoYXJzXG4gIDs7XG5cbiAgbGV0IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSA9XG4gICAgbWF0Y2ggY2FzZV9zZW5zaXRpdmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiBDaGFyLmVxdWFsXG4gICAgfCBmYWxzZSAtPiBDaGFyLkNhc2VsZXNzLmVxdWFsXG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVAgcHJlLXByb2Nlc3Npbmcgb2YgdGhlIHBhdHRlcm46IGJ1aWxkIHRoZSBpbnQgYXJyYXksIHdoaWNoLCBmb3IgZWFjaCBpLFxuICAgICBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IG5vbi10cml2aWFsIHByZWZpeCBvZiBzIHdoaWNoIGlzIGVxdWFsIHRvIGEgc3VmZml4XG4gICAgIGVuZGluZyBhdCBzLltpXSAqKVxuICBsZXQgY3JlYXRlIHBhdHRlcm4gfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBsZXQgbiA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgbGV0IGttcF9hcnJheSA9IEFycmF5LmNyZWF0ZSB+bGVuOm4gKC0xKSBpblxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgMCAwO1xuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhcjoodW5zYWZlX2dldCBwYXR0ZXJuIGkpXG4gICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgfmNoYXJfZXF1YWw7XG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQga21wX2FycmF5IGkgIW1hdGNoZWRfY2hhcnNcbiAgICAgIGRvbmUpO1xuICAgIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9XG4gIDs7XG5cbiAgKCogQ2xhc3NpYyBLTVA6IHVzZSB0aGUgcHJlLXByb2Nlc3NlZCBwYXR0ZXJuIHRvIG9wdGltaXplIGxvb2stYmVoaW5kcyBvbiBub24tbWF0Y2hlcy5cbiAgICAgV2UgcmV0dXJuIGludCB0byBhdm9pZCBhbGxvY2F0aW9uIGluIFtpbmRleF9leG5dLiAtMSBtZWFucyBubyBtYXRjaC4gKilcbiAgbGV0IGluZGV4X2ludGVybmFsID8ocG9zID0gMCkgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfmluXzp0ZXh0ID1cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlbmd0aCB0ZXh0IC0gbGVuZ3RoIHBhdHRlcm5cbiAgICB0aGVuIC0xXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IGogPSByZWYgcG9zIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICB3aGlsZSAhaiA8IG4gJiYgIW1hdGNoZWRfY2hhcnMgPCBrIGRvXG4gICAgICAgIGxldCBuZXh0X3RleHRfY2hhciA9IHVuc2FmZV9nZXQgdGV4dCAhaiBpblxuICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgIDo9IGttcF9pbnRlcm5hbF9sb29wXG4gICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgaiA6PSAhaiArIDFcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGsgdGhlbiAhaiAtIGsgZWxzZSAtMSlcbiAgOztcblxuICBsZXQgbWF0Y2hlcyB0IHN0ciA9IGluZGV4X2ludGVybmFsIHQgfmluXzpzdHIgPj0gMFxuXG4gIGxldCBpbmRleCA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcFxuICA7O1xuXG4gIGxldCBpbmRleF9leG4gP3BvcyB0IH5pbl8gPVxuICAgIGxldCBwID0gaW5kZXhfaW50ZXJuYWwgP3BvcyB0IH5pbl8gaW5cbiAgICBpZiBwID49IDBcbiAgICB0aGVuIHBcbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJTdWJzdHJpbmcgbm90IGZvdW5kXCIgWyBcInN1YnN0cmluZ1wiLCBzZXhwX29mX3N0cmluZyB0LnBhdHRlcm4gXSlcbiAgOztcblxuICBsZXQgaW5kZXhfYWxsIHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSB9IH5tYXlfb3ZlcmxhcCB+aW5fOnRleHQgPVxuICAgIGlmIGxlbmd0aCBwYXR0ZXJuID0gMFxuICAgIHRoZW4gTGlzdC5pbml0ICgxICsgbGVuZ3RoIHRleHQpIH5mOkZuLmlkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2hhcl9lcXVhbCA9IGdldF9jaGFyX2VxdWFsIH5jYXNlX3NlbnNpdGl2ZSBpblxuICAgICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgMCBpblxuICAgICAgbGV0IGsgPSBsZW5ndGggcGF0dGVybiBpblxuICAgICAgbGV0IG4gPSBsZW5ndGggdGV4dCBpblxuICAgICAgbGV0IGZvdW5kID0gcmVmIFtdIGluXG4gICAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgICBpZiAhbWF0Y2hlZF9jaGFycyA9IGtcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgZm91bmQgOj0gKGogLSBrKSA6OiAhZm91bmQ7XG4gICAgICAgICAgKCogd2UganVzdCBmb3VuZCBhIG1hdGNoIGluIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gKilcbiAgICAgICAgICBtYXRjaCBtYXlfb3ZlcmxhcCB3aXRoXG4gICAgICAgICAgfCB0cnVlIC0+IG1hdGNoZWRfY2hhcnMgOj0gQXJyYXkudW5zYWZlX2dldCBrbXBfYXJyYXkgKGsgLSAxKVxuICAgICAgICAgIHwgZmFsc2UgLT4gbWF0Y2hlZF9jaGFycyA6PSAwKTtcbiAgICAgICAgaWYgaiA8IG5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0IGogaW5cbiAgICAgICAgICBtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgICB+bmV4dF90ZXh0X2NoYXJcbiAgICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgICB+a21wX2FycmF5XG4gICAgICAgICAgICAgICB+Y2hhcl9lcXVhbClcbiAgICAgIGRvbmU7XG4gICAgICBMaXN0LnJldiAhZm91bmQpXG4gIDs7XG5cbiAgbGV0IHJlcGxhY2VfZmlyc3QgP3BvcyB0IH5pbl86cyB+d2l0aF8gPVxuICAgIG1hdGNoIGluZGV4ID9wb3MgdCB+aW5fOnMgd2l0aFxuICAgIHwgTm9uZSAtPiBzXG4gICAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgbGVuX3dpdGggLSBsZW5fdCkgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOndpdGhfIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczppIH5sZW46bGVuX3dpdGg7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6KGkgKyBsZW5fdClcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczooaSArIGxlbl93aXRoKVxuICAgICAgICB+bGVuOihsZW5fcyAtIGkgLSBsZW5fdCk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG5cbiAgbGV0IHJlcGxhY2VfYWxsIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCBsZW5fcyA9IGxlbmd0aCBzIGluXG4gICAgICBsZXQgbGVuX3QgPSBsZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgICBsZXQgbGVuX3dpdGggPSBsZW5ndGggd2l0aF8gaW5cbiAgICAgIGxldCBudW1fbWF0Y2hlcyA9IExpc3QubGVuZ3RoIG1hdGNoZXMgaW5cbiAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbl9zICsgKChsZW5fd2l0aCAtIGxlbl90KSAqIG51bV9tYXRjaGVzKSkgaW5cbiAgICAgIGxldCBuZXh0X2RzdF9wb3MgPSByZWYgMCBpblxuICAgICAgbGV0IG5leHRfc3JjX3BvcyA9IHJlZiAwIGluXG4gICAgICBMaXN0Lml0ZXIgbWF0Y2hlcyB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGxlbiA9IGkgLSAhbmV4dF9zcmNfcG9zIGluXG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+c3JjX3BvczohbmV4dF9zcmNfcG9zIH5kc3QgfmRzdF9wb3M6IW5leHRfZHN0X3BvcyB+bGVuO1xuICAgICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICAgIH5zcmM6d2l0aF9cbiAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgfmRzdFxuICAgICAgICAgIH5kc3RfcG9zOighbmV4dF9kc3RfcG9zICsgbGVuKVxuICAgICAgICAgIH5sZW46bGVuX3dpdGg7XG4gICAgICAgIG5leHRfZHN0X3BvcyA6PSAhbmV4dF9kc3RfcG9zICsgbGVuICsgbGVuX3dpdGg7XG4gICAgICAgIG5leHRfc3JjX3BvcyA6PSAhbmV4dF9zcmNfcG9zICsgbGVuICsgbGVuX3QpO1xuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpzXG4gICAgICAgIH5zcmNfcG9zOiFuZXh0X3NyY19wb3NcbiAgICAgICAgfmRzdFxuICAgICAgICB+ZHN0X3BvczohbmV4dF9kc3RfcG9zXG4gICAgICAgIH5sZW46KGxlbl9zIC0gIW5leHRfc3JjX3Bvcyk7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdFxuICA7O1xuXG4gIGxldCBzcGxpdF9vbiB0IHMgPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggdC5wYXR0ZXJuIGluXG4gICAgbGV0IG1hdGNoZXMgPSBpbmRleF9hbGwgdCB+bWF5X292ZXJsYXA6ZmFsc2UgfmluXzpzIGluXG4gICAgTGlzdC5tYXAyX2V4blxuICAgICAgKC1wYXR0ZXJuX2xlbiA6OiBtYXRjaGVzKVxuICAgICAgKG1hdGNoZXMgQCBbIFN0cmluZy5sZW5ndGggcyBdKVxuICAgICAgfmY6KGZ1biBpIGogLT4gc3ViIHMgfnBvczooaSArIHBhdHRlcm5fbGVuKSB+bGVuOihqIC0gaSAtIHBhdHRlcm5fbGVuKSlcbiAgOztcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgcHVibGljID0gdFxuXG4gICAgdHlwZSBub25yZWMgdCA9IHQgPVxuICAgICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgICA7IGNhc2Vfc2Vuc2l0aXZlIDogYm9vbFxuICAgICAgOyBrbXBfYXJyYXkgOiBpbnQgYXJyYXlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgPVxuICAgICAgKGZ1biBhX18wMDNfIGJfXzAwNF8gLT5cbiAgICAgICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAzXyBiX18wMDRfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAzXy5wYXR0ZXJuIGJfXzAwNF8ucGF0dGVybilcbiAgICAgICAgICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwM18uY2FzZV9zZW5zaXRpdmUgYl9fMDA0Xy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwM18ua21wX2FycmF5IGJfXzAwNF8ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwOF9cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMTBfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTJfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTNfID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX2ludCBrbXBfYXJyYXlfXzAxMl8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEzXyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTFfID0gc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlX18wMTBfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNhc2Vfc2Vuc2l0aXZlXCI7IGFyZ19fMDExXyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDdfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9zdHJpbmcgcGF0dGVybl9fMDA4XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwYXR0ZXJuXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwN19cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDdfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAocnNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGNoYXJfbGlzdF9tZW0gbCAoYyA6IGNoYXIpID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBoZCA6OiB0bCAtPiBDaGFyLmVxdWFsIGhkIGMgfHwgY2hhcl9saXN0X21lbSB0bCBjXG47O1xuXG5sZXQgc3BsaXRfZ2VuIHN0ciB+b24gPVxuICBsZXQgaXNfZGVsaW0gPVxuICAgIG1hdGNoIG9uIHdpdGhcbiAgICB8IGBjaGFyIGMnIC0+IGZ1biBjIC0+IENoYXIuZXF1YWwgYyBjJ1xuICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggc3RyIGluXG4gIGxldCByZWMgbG9vcCBhY2MgbGFzdF9wb3MgcG9zID1cbiAgICBpZiBwb3MgPSAtMVxuICAgIHRoZW4gc3ViIHN0ciB+cG9zOjAgfmxlbjpsYXN0X3BvcyA6OiBhY2NcbiAgICBlbHNlIGlmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBvczEgPSBwb3MgKyAxIGluXG4gICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpwb3MxIH5sZW46KGxhc3RfcG9zIC0gcG9zMSkgaW5cbiAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBwb3MgKHBvcyAtIDEpKVxuICAgIGVsc2UgbG9vcCBhY2MgbGFzdF9wb3MgKHBvcyAtIDEpXG4gIGluXG4gIGxvb3AgW10gbGVuIChsZW4gLSAxKVxuOztcblxubGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG5sZXQgc3BsaXRfb25fY2hhcnMgc3RyIH5vbjpjaGFycyA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhcl9saXN0IGNoYXJzKVxuXG5sZXQgc3BsaXRfbGluZXMgPVxuICBsZXQgYmFja191cF9hdF9uZXdsaW5lIH50IH5wb3MgfmVvbCA9XG4gICAgcG9zIDo9ICFwb3MgLSBpZiAhcG9zID4gMCAmJiBDaGFyLmVxdWFsIHQuWyFwb3MgLSAxXSAnXFxyJyB0aGVuIDIgZWxzZSAxO1xuICAgIGVvbCA6PSAhcG9zICsgMVxuICBpblxuICBmdW4gdCAtPlxuICAgIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgICgqIEludmFyaWFudDogWy0xIDw9IHBvcyA8IGVvbF0uICopXG4gICAgICBsZXQgcG9zID0gcmVmIChuIC0gMSkgaW5cbiAgICAgIGxldCBlb2wgPSByZWYgbiBpblxuICAgICAgbGV0IGFjID0gcmVmIFtdIGluXG4gICAgICAoKiBXZSB0cmVhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3BlY2lhbGx5LCBiZWNhdXNlIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFcbiAgICAgICAgIG5ld2xpbmUsIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgZW1wdHkgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dC4gKilcbiAgICAgIGlmIENoYXIuZXF1YWwgdC5bIXBvc10gJ1xcbicgdGhlbiBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sO1xuICAgICAgd2hpbGUgIXBvcyA+PSAwIGRvXG4gICAgICAgIGlmIENoYXIuKCA8PiApIHQuWyFwb3NdICdcXG4nXG4gICAgICAgIHRoZW4gZGVjciBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogQmVjYXVzZSBbcG9zIDwgZW9sXSwgd2Uga25vdyB0aGF0IFtzdGFydCA8PSBlb2xdLiAqKVxuICAgICAgICAgIGxldCBzdGFydCA9ICFwb3MgKyAxIGluXG4gICAgICAgICAgYWMgOj0gc3ViIHQgfnBvczpzdGFydCB+bGVuOighZW9sIC0gc3RhcnQpIDo6ICFhYztcbiAgICAgICAgICBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sKVxuICAgICAgZG9uZTtcbiAgICAgIHN1YiB0IH5wb3M6MCB+bGVuOiFlb2wgOjogIWFjKVxuOztcblxubGV0IGlzX3N1ZmZpeCBzIH5zdWZmaXggPSBpc19zdWZmaXhfZ2VuIHMgfnN1ZmZpeCB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG5sZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcblxubGV0IGlzX3N1YnN0cmluZ19hdCBzIH5wb3MgfnN1YnN0cmluZyA9XG4gIGlzX3N1YnN0cmluZ19hdF9nZW4gcyB+cG9zIH5zdWJzdHJpbmcgfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuOztcblxubGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIChuYW1lIF4gXCIgZXhwZWN0aW5nIG5vbm5lZ2F0aXZlIGFyZ3VtZW50XCIpXG4gIGVsc2UgKFxuICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgIHwgXyAtPiBvbl9lcnJvcilcbjs7XG5cbmxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9wcmVmaXhcIiB0IG4gfnBvczpuIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBkcm9wX3N1ZmZpeCB0IG4gPVxuICB3cmFwX3N1Yl9uIH5uYW1lOlwiZHJvcF9zdWZmaXhcIiB0IG4gfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbikgfm9uX2Vycm9yOlwiXCJcbjs7XG5cbmxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG5sZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxubGV0IGxmaW5kaSA/KHBvcyA9IDApIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA9IG4gdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gIGxvb3AgcG9zIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDAgW0Bub250YWlsXVxuOztcblxubGV0IHJmaW5kaSA/cG9zIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlIGlmIGYgaSB0LltpXSB0aGVuIFNvbWUgaSBlbHNlIGxvb3AgKGkgLSAxKSBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gICAgfCBOb25lIC0+IGxlbmd0aCB0IC0gMVxuICBpblxuICBsb29wIHBvcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbGFzdF9ub25fZHJvcCB+ZHJvcCB0ID0gcmZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKSBbQG5vbnRhaWxdXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSkgW0Bub250YWlsXVxuXG5sZXQgbHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgMCAtPiB0XG4gIHwgU29tZSBuIC0+IGRyb3BfcHJlZml4IHQgblxuOztcblxuKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgIGJlbG93IHNhdmVzIChhdCBsZWFzdCkgYSBmYWN0b3Igb2YgdHdvIGFsbG9jYXRpb24sIGJ5IG9ubHkgYWxsb2NhdGluZyB0aGVcbiAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxubGV0IHN0cmlwID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IFNvbWUgbGFzdCAtPiBzdWIgdCB+cG9zOmZpcnN0IH5sZW46KGxhc3QgLSBmaXJzdCArIDEpKSlcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiBpIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IG1hcCB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAobGVuZ3RoIHMpIH5mOihmdW4gaSAtPiBzLltpXSlcblxubGV0IGV4aXN0cyA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPCBsZW4gJiYgKGYgcy5baV0gfHwgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9yX2FsbCA9XG4gIGxldCByZWMgbG9vcCBzIGkgfmxlbiB+ZiA9IGkgPSBsZW4gfHwgKGYgcy5baV0gJiYgbG9vcCBzIChpICsgMSkgfmxlbiB+ZikgaW5cbiAgZnVuIHMgfmYgLT4gbG9vcCBzIDAgfmxlbjoobGVuZ3RoIHMpIH5mXG47O1xuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWMgfmYgfmxlbiA9XG4gICAgaWYgaSA9IGxlbiB0aGVuIGFjIGVsc2UgbG9vcCB0IChpICsgMSkgKGYgaSBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZVxuOztcblxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHRcbmxldCBtYXhfZWx0IHQgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0XG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5sZXQgY29uY2F0X21hcGkgP3NlcCB0IH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcGkgKHRvX2FycmF5IHQpIH5mKVxuXG5sZXQgY29uY2F0X2xpbmVzID1cbiAgbGV0IHJlYyBsaW5lX2xlbmd0aHMgfmxpbmVzIH5uZXdsaW5lX2xlbiB+c3VtID1cbiAgICBtYXRjaCBsaW5lcyB3aXRoXG4gICAgfCBbXSAtPiBzdW1cbiAgICB8IGxpbmUgOjogbGluZXMgLT5cbiAgICAgIGxldCBzdW0gPSBzdW0gKyBTdHJpbmcubGVuZ3RoIGxpbmUgKyBuZXdsaW5lX2xlbiBpblxuICAgICAgbGluZV9sZW5ndGhzIH5saW5lcyB+bmV3bGluZV9sZW4gfnN1bVxuICBpblxuICBsZXQgcmVjIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3MgPVxuICAgIG1hdGNoIGxpbmVzIHdpdGhcbiAgICB8IFtdIC0+IHBvc1xuICAgIHwgbGluZSA6OiBsaW5lcyAtPlxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6bGluZVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6YnVmXG4gICAgICAgIH5kc3RfcG9zOnBvc1xuICAgICAgICB+bGVuOihTdHJpbmcubGVuZ3RoIGxpbmUpO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIGlmIGNybGZcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXHInO1xuICAgICAgICAgIHBvcyArIDEpXG4gICAgICAgIGVsc2UgcG9zXG4gICAgICBpblxuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zICdcXG4nO1xuICAgICAgbGV0IHBvcyA9IHBvcyArIDEgaW5cbiAgICAgIHdyaXRlX2xpbmVzIH5idWYgfmxpbmVzIH5jcmxmIH5wb3NcbiAgaW5cbiAgZnVuID8oY3JsZiA9IGZhbHNlKSBsaW5lcyAtPlxuICAgIGxldCBuZXdsaW5lX2xlbiA9IGlmIGNybGYgdGhlbiAyIGVsc2UgMSBpblxuICAgIGxldCBsZW4gPSBsaW5lX2xlbmd0aHMgfm5ld2xpbmVfbGVuIH5saW5lcyB+c3VtOjAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCB3cml0dGVuID0gd3JpdGVfbGluZXMgfmJ1ZiB+bGluZXMgfmNybGYgfnBvczowIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gbGVuKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuOztcblxuKCogW2ZpbHRlciB0IGZdIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLlxuXG4gICBMZXQgW24gPSBsZW5ndGggdF0uXG5cbiAgIDEuIEZpbmQgdGhlIGxvd2VzdCBbaV0gc3VjaCB0aGF0IFtub3QgKGYgdC5baV0pXS5cblxuICAgMi4gSWYgdGhlcmUgaXMgbm8gc3VjaCBbaV0sIHRoZW4gcmV0dXJuIFt0XS5cblxuICAgMy4gSWYgdGhlcmUgaXMgc3VjaCBhbiBbaV0sIGFsbG9jYXRlIGEgc3RyaW5nLCBbb3V0XSwgdG8gaG9sZCB0aGUgcmVzdWx0LiAgW291dF0gaGFzXG4gICBsZW5ndGggW24gLSAxXSwgd2hpY2ggaXMgdGhlIG1heGltdW0gcG9zc2libGUgb3V0cHV0IHNpemUgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBhdCBsZWFzdFxuICAgb25lIGNoYXJhY3RlciBub3Qgc2F0aXNmeWluZyBbZl0uXG5cbiAgIDQuIENvcHkgY2hhcmFjdGVycyBhdCBpbmRpY2VzIDAgLi4uIFtpIC0gMV0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDUuIFdhbGsgdGhyb3VnaCBjaGFyYWN0ZXJzIGF0IGluZGljZXMgW2krMV0gLi4uIFtuLTFdIG9mIFt0XSwgY29weWluZyB0aG9zZSB0aGF0XG4gICBzYXRpc2Z5IFtmXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNi4gSWYgd2UgY29tcGxldGVseSBmaWxsZWQgW291dF0sIHRoZW4gcmV0dXJuIGl0LiAgSWYgbm90LCByZXR1cm4gdGhlIHByZWZpeCBvZiBbb3V0XVxuICAgdGhhdCB3ZSBkaWQgZmlsbCBpbi5cblxuICAgVGhpcyBhbGdvcml0aG0gaGFzIHRoZSBwcm9wZXJ0eSB0aGF0IGl0IGRvZXNuJ3QgYWxsb2NhdGUgYSBuZXcgc3RyaW5nIGlmIHRoZXJlJ3NcbiAgIG5vdGhpbmcgdG8gZmlsdGVyLCB3aGljaCBpcyBhIGNvbW1vbiBjYXNlLiAqKVxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgIWkgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgIWkgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIFNvbWUgKGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9pZl9leGlzdHMgcyB+cHJlZml4ID1cbiAgaWYgaXNfcHJlZml4IHMgfnByZWZpeCB0aGVuIGRyb3BfcHJlZml4IHMgKGxlbmd0aCBwcmVmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3BfcHJlZml4X2V4biBzIH5wcmVmaXggPVxuICBtYXRjaCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3BfcHJlZml4X2V4biAlUyAlU1wiIHMgcHJlZml4ICgpXG47O1xuXG5sZXQgY2hvcF9zdWZmaXggcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIFNvbWUgKGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9pZl9leGlzdHMgcyB+c3VmZml4ID1cbiAgaWYgaXNfc3VmZml4IHMgfnN1ZmZpeCB0aGVuIGRyb3Bfc3VmZml4IHMgKGxlbmd0aCBzdWZmaXgpIGVsc2Ugc1xuOztcblxubGV0IGNob3Bfc3VmZml4X2V4biBzIH5zdWZmaXggPVxuICBtYXRjaCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggd2l0aFxuICB8IFNvbWUgc3RyIC0+IHN0clxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmNob3Bfc3VmZml4X2V4biAlUyAlU1wiIHMgc3VmZml4ICgpXG47O1xuXG5tb2R1bGUgRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeCA9IHN0cnVjdFxuICAoKiBXaGVuIHRha2luZyBhIHN0cmluZyBwcmVmaXggb3Igc3VmZml4LCB3ZSBleHRyYWN0IGZyb20gdGhlIHNob3J0ZXN0IGlucHV0IGF2YWlsYWJsZVxuICAgICBpbiBjYXNlIHdlIGNhbiBqdXN0IHJldHVybiBvbmUgb2Ygb3VyIGlucHV0cyB3aXRob3V0IGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nLiAqKVxuXG4gIGxldCBzaG9ydGVyIGEgYiA9IGlmIGxlbmd0aCBhIDw9IGxlbmd0aCBiIHRoZW4gYSBlbHNlIGJcblxuICBsZXQgc2hvcnRlc3QgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OmZpcnN0IH5mOnNob3J0ZXJcbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgZm9yIGNvbW1vbiBwcmVmaXgvc3VmZml4IGFic3RyYWN0IG92ZXIgW2dldF9wb3NdLCB3aGljaCBpc1xuICAgICBlaXRoZXIgW3Bvc19mcm9tX2xlZnRdIG9yIFtwb3NfZnJvbV9yaWdodF0uICopXG5cbiAgbGV0IHBvc19mcm9tX2xlZnQgKF8gOiB0KSAoaSA6IGludCkgPSBpXG4gIGxldCBwb3NfZnJvbV9yaWdodCB0IGkgPSBsZW5ndGggdCAtIGkgLSAxXG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyID1cbiAgICBpZiBsZW5fc29fZmFyID49IG1heF9sZW5cbiAgICB0aGVuIG1heF9sZW5cbiAgICBlbHNlIGlmIENoYXIuZXF1YWxcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYSAoZ2V0X3BvcyBhIGxlbl9zb19mYXIpKVxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBiIChnZXRfcG9zIGIgbGVuX3NvX2ZhcikpXG4gICAgdGhlbiBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOihsZW5fc29fZmFyICsgMSlcbiAgICBlbHNlIGxlbl9zb19mYXJcbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgPVxuICAgIGxldCBtYXhfbGVuID0gbWluIChsZW5ndGggYSkgKGxlbmd0aCBiKSBpblxuICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICA7O1xuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgbGlzdCB+Z2V0X3BvcyB+bWF4X2xlbiA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBtYXhfbGVuXG4gICAgfCBzZWNvbmQgOjogcmVzdCAtPlxuICAgICAgbGV0IG1heF9sZW4gPVxuICAgICAgICAoKiBXZSBjYWxsIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuIFtjb21tb25fZ2VuZXJpYzJfbGVuZ3RoXSBzb1xuICAgICAgICAgICB0aGF0IFttYXhfbGVuXSBsaW1pdHMgb3VyIHRyYXZlcnNhbCBvZiBbZmlyc3RdIGFuZCBbc2Vjb25kXS4gKilcbiAgICAgICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGZpcnN0IHNlY29uZCB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gICAgICBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3Agc2Vjb25kIHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3MgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gMFxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogUHJlY29tcHV0aW5nIFttYXhfbGVuXSBiYXNlZCBvbiBbc2hvcnRlc3QgbGlzdF0gc2F2ZXMgdXMgd29yayBpbiBsb25nZXIgc3RyaW5ncyxcbiAgICAgICAgIGF0IHRoZSBjb3N0IG9mIGFuIGV4dHJhIHBhc3Mgb3ZlciB0aGUgc3BpbmUgb2YgW2xpc3RdLlxuXG4gICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsb25nZXN0IHByZWZpeCBvZiB0aGUgc3RyaW5nczpcblxuICAgICAgICAge3ZcbiAgICAgICAgICAgIGxldCBsb25nX2EgPSBMaXN0LmluaXQgMTAwMCB+ZjooRm4uY29uc3QgJ2EnKVxuICAgICAgICAgICAgWyBsb25nX2E7IGxvbmdfYTsgJ2FhJyBdXG4gICAgICAgICB2fVxuXG4gICAgICAgICB0aGUgYXBwcm9hY2ggYmVsb3cgd2lsbCBqdXN0IGNoZWNrIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhbGwgdGhlIHN0cmluZ3MuXG4gICAgICAqKVxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggKHNob3J0ZXN0IGxpc3QpIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIHRoYXQgcHJvZHVjZSBhIHN0cmluZyBhYnN0cmFjdCBvdmVyIFt0YWtlXSwgd2hpY2ggaXMgZWl0aGVyXG4gICAgIFtwcmVmaXhdIG9yIFtzdWZmaXhdLiAqKVxuXG4gIGxldCBjb21tb25fZ2VuZXJpYzIgYSBiIH5nZXRfcG9zIH50YWtlID1cbiAgICBsZXQgbGVuID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3MgaW5cbiAgICAoKiBVc2UgdGhlIHNob3J0ZXIgb2YgdGhlIHR3byBzdHJpbmdzLCBzbyB0aGF0IGlmIHRoZSBzaG9ydGVyIG9uZSBpcyB0aGUgc2hhcmVkXG4gICAgICAgcHJlZml4LCBbdGFrZV0gd29uJ3QgYWxsb2NhdGUgYW5vdGhlciBzdHJpbmcuICopXG4gICAgdGFrZSAoc2hvcnRlciBhIGIpIGxlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYyBsaXN0IH5nZXRfcG9zIH50YWtlID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIEFzIHdpdGggW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0sIHdlIGJhc2UgW21heF9sZW5dIG9uIFtzaG9ydGVzdCBsaXN0XS4gV2UgYWxzb1xuICAgICAgICAgdXNlIHRoaXMgcmVzdWx0IGZvciBbdGFrZV0sIGJlbG93LCB0byBwb3RlbnRpYWxseSBhdm9pZCBhbGxvY2F0aW5nIGEgc3RyaW5nLiAqKVxuICAgICAgbGV0IHMgPSBzaG9ydGVzdCBsaXN0IGluXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCBzIGluXG4gICAgICBpZiBtYXhfbGVuID0gMFxuICAgICAgdGhlbiBcIlwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgKCogV2UgY2FsbCBkaXJlY3RseSBpbnRvIFtjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSB0byBhdm9pZCByZWNvbXB1dGluZyBbc2hvcnRlc3QgbGlzdF0uICopXG4gICAgICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICAgICAgICBpblxuICAgICAgICB0YWtlIHMgbGVuKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gRm9yX2NvbW1vbl9wcmVmaXhfYW5kX3N1ZmZpeFxuXG4gIGxldCBjb21tb25fcHJlZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4IGxpc3QgPSBjb21tb25fZ2VuZXJpYyBsaXN0IH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDIgYSBiID0gY29tbW9uX2dlbmVyaWMyIGEgYiB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbmVuZFxuXG4oKiBUaGVyZSB1c2VkIHRvIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIHRoYXQgd2FzIGZhc3RlciBmb3IgdmVyeSBzaG9ydCBzdHJpbmdzXG4gICAocGVha2luZyBhdCA0MCUgZmFzdGVyIGZvciA0LTYgY2hhciBsb25nIHN0cmluZ3MpLlxuICAgVGhpcyBuZXcgZnVuY3Rpb24gaXMgYXJvdW5kIDIwJSBmYXN0ZXIgdGhhbiB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uLCBidXQgc2xvd2VyXG4gICB0aGFuIHRoZSBwcmV2aW91cyBjdXN0b20gaW1wbGVtZW50YXRpb24uIEhvd2V2ZXIsIHRoZSBuZXcgT0NhbWwgZnVuY3Rpb24gaXMgd2VsbFxuICAgYmVoYXZlZCwgYW5kIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbGVzcyBsaWtlbHkgdG8gZGl2ZXJnZSBmcm9tIHRoZSBkZWZhdWx0IE9DYW1sXG4gICBpbXBsZW1lbnRhdGlvbiBkb2VzLCB3aGljaCBpcyBhIGRlc2lyYWJsZSBwcm9wZXJ0eS4gKFRoZSBvbmx5IHdheSB0byBhdm9pZCB0aGVcbiAgIGRpdmVyZ2VuY2UgaXMgdG8gZXhwb3NlIHRoZSBtYWNybyByZWRlZmluZWQgaW4gaGFzaF9zdHVicy5jIGluIHRoZSBoYXNoLmggaGVhZGVyIG9mXG4gICB0aGUgT0NhbWwgY29tcGlsZXIuKSAqKVxubW9kdWxlIEhhc2ggPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgaGFzaCA6IHN0cmluZyAtPiBpbnQgPSBcIkJhc2VfaGFzaF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZW5kXG5cbigqIFtpbmNsdWRlIEhhc2hdIHRvIG1ha2UgdGhlIFtleHRlcm5hbF0gdmVyc2lvbiBvdmVycmlkZSB0aGUgW2hhc2hdIGZyb21cbiAgIFtIYXNoYWJsZS5NYWtlX2JpbmFibGVdLCBzbyB0aGF0IHdlIGdldCBhIGxpdHRsZSBiaXQgb2YgYSBzcGVlZHVwIGJ5IGV4cG9zaW5nIGl0IGFzXG4gICBleHRlcm5hbCBpbiB0aGUgbWxpLiAqKVxubGV0IF8gPSBoYXNoXG5cbmluY2x1ZGUgSGFzaFxuXG4oKiBmb3IgaW50ZXJhY3RpdmUgdG9wLWxldmVscyAtLSBtb2R1bGVzIGRlcml2aW5nIGZyb20gU3RyaW5nIHNob3VsZCBoYXZlIFN0cmluZydzIHByZXR0eVxuICAgcHJpbnRlci4gKilcbmxldCBwcCBwcGYgc3RyaW5nID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiVTXCIgc3RyaW5nXG5sZXQgb2ZfY2hhciBjID0gbWFrZSAxIGNcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBCeXRlcy5zZXQgdCBpIGMpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRcbjs7XG5cbmxldCBvZl9saXN0ID0gb2ZfY2hhcl9saXN0XG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkuZ2V0IGEpXG5sZXQgYXBwZW5kID0gKCBeIClcblxubGV0IHBhZF9yaWdodCA/KGNoYXIgPSAnICcpIHMgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHMgaW5cbiAgaWYgc3JjX2xlbiA+PSBsZW5cbiAgdGhlbiBzXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5kc3Q6cmVzIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOnNyY19sZW4gfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG5sZXQgcGFkX2xlZnQgPyhjaGFyID0gJyAnKSBzIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzIGluXG4gIGlmIHNyY19sZW4gPj0gbGVuXG4gIHRoZW4gc1xuICBlbHNlIChcbiAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cyB+ZHN0OnJlcyB+c3JjX3BvczowIH5kc3RfcG9zOihsZW4gLSBzcmNfbGVuKSB+bGVuOnNyY19sZW47XG4gICAgQnl0ZXMuZmlsbCB+cG9zOjAgfmxlbjoobGVuIC0gc3JjX2xlbikgcmVzIGNoYXI7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG4oKiBDYWxsZWQgdXBvbiBmaXJzdCBkaWZmZXJlbmNlIGdlbmVyYXRlZCBieSBmaWx0ZXJpbmcuIEFsbG9jYXRlcyBbYnVmZmVyX2xlbl0gYnl0ZXNcbiAgIGZvciBuZXcgcmVzdWx0LCBhbmQgY29waWVzIFtwcmVmaXhfbGVuXSB1bmNoYW5nZWQgY2hhcmFjdGVycyBmcm9tIFtzcmNdLlxuICAgQWx3YXlzIHJldHVybnMgYSBsb2NhbCBidWZmZXIuICopXG5sZXQgbG9jYWxfY29weV9wcmVmaXggKHNyYyBbQGxvY2FsXSkgfnByZWZpeF9sZW4gfmJ1ZmZlcl9sZW4gPVxuICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGJ1ZmZlcl9sZW4gaW5cbiAgQnl0ZXMuUHJpbWl0aXZlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+ZHN0IH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnByZWZpeF9sZW47XG4gICBkc3Rcbjs7XG5cbigqIENvcGllcyBhIHBlcmhhcHMtbG9jYWwgYnVmZmVyIGludG8gYSBkZWZpbml0ZWx5LWdsb2JhbCBzdHJpbmcuICopXG5sZXQgbG9jYWxfY29weV90b19zdHJpbmcgKGJ1ZiBbQGxvY2FsXSkgfnBvcyA9XG4gIGxldCBzdHIgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZiBpblxuICB1bnNhZmVfc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MgW0Bub250YWlsXVxuOztcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBmaWx0ZXJfbWFwIGhlbHBlcnMgKilcblxuICAgICgqIEZpbHRlcnMgZnJvbSBzdHJpbmcgW3NyY10gaW50byBhbiBhbGxvY2F0ZWQgYnVmZmVyIFtkc3RdO1xuICAgICAgIGNvcGllcyB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB0byBhIGhlYXAtYWxsb2NhdGVkIHJlc3VsdCBzdHJpbmcuXG5cbiAgICAgICBQcmUtY29uZGl0aW9uczpcbiAgICAgICBbc3JjX2xlbiA9IGxlbmd0aCBzcmNdXG4gICAgICAgW3NyYyAhPSBkc3RdXG4gICAgICAgWzAgPD0gc3JjX3BvcyA8IHNyY19sZW5dXG4gICAgICAgWzAgPD0gZHN0X3BvcyA8IGxlbmd0aCBkc3RdXG4gICAgKilcbiAgICBsZXQgZmlsdGVyX21hcGlfaW50byBzcmMgKGRzdCBbQGxvY2FsXSkgfmYgfnNyY19wb3MgfmRzdF9wb3MgfnNyY19sZW4gPVxuICAgICAgbGV0IGRzdF9wb3MgPSAgKHJlZiBkc3RfcG9zKSBpblxuICAgICAgZm9yIHNyY19wb3MgPSBzcmNfcG9zIHRvIHNyY19sZW4gLSAxIGRvXG4gICAgICAgIG1hdGNoIGYgc3JjX3BvcyAodW5zYWZlX2dldCBzcmMgc3JjX3Bvcykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGRzdCAhZHN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZHN0X3Bvc1xuICAgICAgZG9uZTtcbiAgICAgIGxvY2FsX2NvcHlfdG9fc3RyaW5nIGRzdCB+cG9zOiFkc3RfcG9zXG4gICAgOztcblxuICAgICgqIEZpbHRlcnMgW3RdLiBJZiB0aGUgcmVzdWx0IHR1cm5zIG91dCB0byBiZSBpZGVudGljYWwgdG8gdGhlIGlucHV0LCByZXR1cm5zIFt0XVxuICAgICAgIGRpcmVjdGx5IHdpdGhvdXQgbmVlZGluZyB0byBhbGxvY2F0ZSBhIGJ1ZmZlciBhbmQgdHJhdmVyc2UgdGhlIHN0cmluZyB0d2ljZS5cblxuICAgICAgIFByZS1jb25kaXRpb246IFtsZW4gPT0gbGVuZ3RoIHRdXG4gICAgICAgUHJlLWNvbmRpdGlvbjogWzAgPD0gcG9zIDw9IGxlbl0gKilcbiAgICBsZXQgcmVjIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCB0IHBvcyBpblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjIHBvcyBpblxuICAgICAgICBtYXRjaCBmIHBvcyBjMSB3aXRoXG4gICAgICAgIHwgU29tZSBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICAoKiBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCBjb250aW51ZSAqKVxuICAgICAgICAgIGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvczpuZXh0IH5sZW5cbiAgICAgICAgfCBvcHRpb24gLT5cbiAgICAgICAgICAoKiBJZiBhIGNoYXJhY3RlciBoYXMgYmVlbiBjaGFuZ2VkIG9yIGRyb3BwZWQsIGJlZ2luIGFuIG91dHB1dCBidWZmZXIgdXAgdG9cbiAgICAgICAgICAgICBbcG9zXSwgYW5kIHdyaXRlIHRoZSBuZXcgY2hhcmFjdGVyIGludG8gaXQuICopXG4gICAgICAgICAgbGV0IGNvcHkgPSBsb2NhbF9jb3B5X3ByZWZpeCB0IH5wcmVmaXhfbGVuOnBvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgICAgICBsZXQgZHN0X3BvcyA9XG4gICAgICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBjb3B5IHBvcyBjO1xuICAgICAgICAgICAgICBuZXh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBmaWx0ZXJfbWFwaV9pbnRvIHQgY29weSB+ZiB+c3JjX3BvczpuZXh0IH5kc3RfcG9zIH5zcmNfbGVuOmxlbiBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGZpbHRlcl9tYXAgZnVuY3Rpb25zICopXG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBmaWx0ZXJfbWFwaV9tYXliZV9pZCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBfIGMgLT4gZiBjKSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBzdHJ1Y3RcbiAgICAoKiBwYXJ0aXRpb24gaGVscGVycyAqKVxuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfaW50byBzcmMgfmZzdHMgfnNuZHMgfmYgfmxlbiB+c3JjX3BvcyB+ZnN0X3BvcyB+c25kX3BvcyA9XG4gICAgICBsZXQgZnN0X3BvcyA9ICAocmVmIGZzdF9wb3MpIGluXG4gICAgICBsZXQgc25kX3BvcyA9ICAocmVmIHNuZF9wb3MpIGluXG4gICAgICBmb3Igc3JjX3BvcyA9IHNyY19wb3MgdG8gbGVuIC0gMSBkb1xuICAgICAgICBtYXRjaCAgKGYgKHVuc2FmZV9nZXQgc3JjIHNyY19wb3MpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyAhZnN0X3BvcyBjO1xuICAgICAgICAgIGluY3IgZnN0X3Bvc1xuICAgICAgICB8IFNlY29uZCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzbmRzICFzbmRfcG9zIGM7XG4gICAgICAgICAgaW5jciBzbmRfcG9zXG4gICAgICBkb25lO1xuICAgICAgbG9jYWxfY29weV90b19zdHJpbmcgZnN0cyB+cG9zOiFmc3RfcG9zLCBsb2NhbF9jb3B5X3RvX3N0cmluZyBzbmRzIH5wb3M6IXNuZF9wb3NcbiAgICA7O1xuXG4gICAgbGV0IHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSBzcmMgfmYgfmxlbiB+cG9zOnNyY19wb3MgfmZzdF9wb3MgfnNuZF9wb3MgZWl0aGVyID1cbiAgICAgIGxldCBmc3RzID0gbG9jYWxfY29weV9wcmVmaXggc3JjIH5wcmVmaXhfbGVuOmZzdF9wb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICBsZXQgc25kcyA9IGxvY2FsX2NvcHlfcHJlZml4IHNyYyB+cHJlZml4X2xlbjpzbmRfcG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgbGV0IGZzdF9wb3MsIHNuZF9wb3MgPVxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZnN0cyBmc3RfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zICsgMSwgc25kX3BvcylcbiAgICAgICAgfCBTZWNvbmQgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgc25kcyBzbmRfcG9zIGM7XG4gICAgICAgICAgIChmc3RfcG9zLCBzbmRfcG9zICsgMSlcbiAgICAgIGluXG4gICAgICBwYXJ0aXRpb25fbWFwX2ludG9cbiAgICAgICAgc3JjXG4gICAgICAgIH5mc3RzXG4gICAgICAgIH5zbmRzXG4gICAgICAgIH5mXG4gICAgICAgIH5sZW5cbiAgICAgICAgfnNyY19wb3M6KHNyY19wb3MgKyAxKVxuICAgICAgICB+ZnN0X3Bvc1xuICAgICAgICB+c25kX3BvcyBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCByZWMgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBzcmMsIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9maXJzdF9tYXliZV9pZCBzcmMgfmYgfmxlbiB+cG9zOihwb3MgKyAxKVxuICAgICAgICB8IGVpdGhlciAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZVxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgfmZzdF9wb3M6cG9zXG4gICAgICAgICAgICB+c25kX3BvczowXG4gICAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb25fbWFwX3NlY29uZF9tYXliZV9pZCBzcmMgfmYgfnBvcyB+bGVuID1cbiAgICAgIGlmIHBvcyA9IGxlblxuICAgICAgdGhlbiBcIlwiLCBzcmNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyBwb3MgaW5cbiAgICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgU2Vjb25kIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpXG4gICAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgICBzcmNcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICB+ZnN0X3BvczowXG4gICAgICAgICAgICB+c25kX3Bvczpwb3NcbiAgICAgICAgICAgIGVpdGhlciBbQG5vbnRhaWxdKVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIHBhcnRpdGlvbiBmdW5jdGlvbnMgKilcblxuICBsZXQgcGFydGl0aW9uX21hcCBzcmMgfmYgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggc3JjIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gXCJcIiwgXCJcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMxID0gdW5zYWZlX2dldCBzcmMgMCBpblxuICAgICAgbWF0Y2ggIChmIGMxIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICB8IEZpcnN0IGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPiBwYXJ0aXRpb25fbWFwX2ZpcnN0X21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBTZWNvbmQgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6MVxuICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgc3JjXG4gICAgICAgICAgfmZcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfmZzdF9wb3M6MFxuICAgICAgICAgIH5zbmRfcG9zOjBcbiAgICAgICAgICBlaXRoZXIgW0Bub250YWlsXSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIHBhcnRpdGlvbl9tYXAgdCB+ZjooZnVuIGMgLT4gaWYgZiBjIHRoZW4gIChGaXJzdCBjKSBlbHNlICAoU2Vjb25kIGMpKSBbQG5vbnRhaWxcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB+ZHJvcCB+ZXNjYXBlX2NoYXIgdCA9XG4gICAgbGZpbmRpIHQgfmY6KGZ1biBpIGMgLT5cbiAgICAgIChub3QgKGRyb3AgYykpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwaW5nIHQgfmVzY2FwZV9jaGFyIGlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBlZCB0IH5lc2NhcGVfY2hhciBpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJzdHJpcF9saXRlcmFsID8oZHJvcCA9IENoYXIuaXNfd2hpdGVzcGFjZSkgdCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGxhc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbiAgOztcblxuICBsZXQgbHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgfCBOb25lIC0+IFwiXCJcbiAgICB8IFNvbWUgMCAtPiB0XG4gICAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG4gIDs7XG5cbiAgKCogW3N0cmlwIHRdIGNvdWxkIGJlIGltcGxlbWVudGVkIGFzIFtsc3RyaXAgKHJzdHJpcCB0KV0uICBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbiAgbGV0IHN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gICAgKCogcGVyZm9ybWFuY2UgaGFjazogYXZvaWQgY29weWluZyBbdF0gaW4gY29tbW9uIGNhc2VzICopXG4gICAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuICA7O1xuZW5kXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFN0cmluZ19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuKCogT3ZlcnJpZGUgW1NlYXJjaF9wYXR0ZXJuXSB3aXRoIGRlZmF1bHQgY2FzZS1zZW5zaXRpdml0eSBhcmd1bWVudCBhdCB0aGUgZW5kIG9mIHRoZVxuICAgZmlsZSwgc28gdGhhdCBjYWxsIHNpdGVzIGFib3ZlIGFyZSBmb3JjZWQgdG8gc3VwcGx5IGNhc2Utc2Vuc2l0aXZpdHkgZXhwbGljaXRseS4gKilcbm1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IHN0cnVjdFxuICBpbmNsdWRlIFNlYXJjaF9wYXR0ZXJuMFxuXG4gIGxldCBjcmVhdGUgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpIHBhdHRlcm4gPSBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmVcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9ieXRlcyA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoYnl0ZXNfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfYnl0ZXMgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gYnl0ZXNfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEJ5dGVzMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5CeXRlc1wiXG4gIGxldCBwcCBmbXQgdCA9IFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiICh0b19zdHJpbmcgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFRvX2J5dGVzID0gQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFQpIChUb19ieXRlcylcblxubW9kdWxlIEZyb21fc3RyaW5nID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0X3N0cmluZ1xuICAgIGVuZClcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgbiAwXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIkJ5dGVzLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBvZl9jaGFyX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICBMaXN0Lml0ZXJpIGwgfmY6KGZ1biBpIGMgLT4gc2V0IHQgaSBjKTtcbiAgdFxuOztcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCByZWMgbG9vcCB0IGkgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgKGkgLSAxKSAodW5zYWZlX2dldCB0IGkgOjogYWNjKVxuICBpblxuICBsb29wIHQgKGxlbmd0aCB0IC0gMSkgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcbmxldCBtYXAgdCB+ZiA9IG1hcCB0IH5mXG5sZXQgbWFwaSB0IH5mID0gbWFwaSB0IH5mXG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIGFjYyAodW5zYWZlX2dldCB0IHBvcykpXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCB+ZiB+bGVuOihsZW5ndGggdCkgfnBvczowIGluaXRcbjs7XG5cbmxldCBmb2xkaSA9XG4gIGxldCByZWMgbG9vcCB0IH5mIH5sZW4gfnBvcyBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuZXF1YWwgcG9zIGxlblxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSBsb29wIHQgfmYgfmxlbiB+cG9zOihwb3MgKyAxKSAoZiBwb3MgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgaWYgQ2hhci5lcXVhbCAodW5zYWZlX2dldCBzIGkpIHRhcmdldCB0aGVuIHVuc2FmZV9zZXQgcyBpIHJlcGxhY2VtZW50XG4gIGRvbmVcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA9ICkgKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAwXG4gIHRoZW4gc3RhZ2UgaWdub3JlXG4gIGVsc2UgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgMFxuICB0aGVuIGludmFsaWRfYXJnIFwidHJfbXVsdGk6IHJlcGxhY2VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgaWdub3JlXG4gICAgfCBTb21lIHRyX21hcCAtPlxuICAgICAgc3RhZ2UgKGZ1biBzIC0+XG4gICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IHMgaSAoU3RyaW5nLnVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCAodW5zYWZlX2dldCBzIGkpKSlcbiAgICAgICAgZG9uZSkpXG47O1xuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgY29udGFpbnMgP3BvcyA/bGVuIHQgY2hhciA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbGFzdCA9IHBvcyArIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBpIGxhc3RcbiAgICAmJiAoQ2hhci5lcXVhbCAoZ2V0IHQgaSkgY2hhciB8fCBsb29wIChpICsgMSkpXG4gIGluXG4gIGxvb3AgcG9zXG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIjIDEgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gXG50eXBlIHJlc3VsdCA9XG58IE5lZyBvZiBzdHJpbmdcbnwgUG9zIG9mIHN0cmluZ1xuXG4jIDggXCJzcmMvaGV4X2xleGVyLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjdcXDAwMFxcMDgyXFwwMDBcXDEwNVxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBwYXJzZV9oZXggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9wYXJzZV9oZXhfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyA4IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keVxuIyAxMzUgXCJzcmMvaGV4X2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOZWcgYm9keSApXG4jIDEzOSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDE0NSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE1IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIFBvcyBib2R5IClcbiMgMTQ5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbmxldCBjb252ZXJ0X2ZhaWx1cmUgeCBhIGIgdG9fc3RyaW5nID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiY29udmVyc2lvbiBmcm9tICVzIHRvICVzIGZhaWxlZDogJXMgaXMgb3V0IG9mIHJhbmdlXCJcbiAgICBhXG4gICAgYlxuICAgICh0b19zdHJpbmcgeClcbiAgICAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBudW1fYml0c19pbnQgPSBTeXMuaW50X3NpemVfaW5fYml0c1xubGV0IG51bV9iaXRzX2ludDMyID0gMzJcbmxldCBudW1fYml0c19pbnQ2NCA9IDY0XG5sZXQgbnVtX2JpdHNfbmF0aXZlaW50ID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50ID0gNjMgfHwgbnVtX2JpdHNfaW50ID0gMzEgfHwgbnVtX2JpdHNfaW50ID0gMzIpXG5sZXQgbWluX2ludDMyID0gU3RkbGliLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBTdGRsaWIuSW50MzIubWF4X2ludFxubGV0IG1pbl9pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5taW5faW50XG5sZXQgbWF4X2ludDY0ID0gU3RkbGliLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5taW5faW50XG5sZXQgbWF4X25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQubWF4X2ludFxubGV0IGludF90b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IFN0ZGxpYi5JbnQzMi50b19zdHJpbmdcbmxldCBpbnQ2NF90b19zdHJpbmcgPSBTdGRsaWIuSW50NjQudG9fc3RyaW5nXG5sZXQgbmF0aXZlaW50X3RvX3N0cmluZyA9IFN0ZGxpYi5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IFN0ZGxpYi5JbnQzMi50b19pbnRcbmxldCBpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuSW50MzIub2ZfaW50XG5cbmxldCBpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX2ludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX2ludF90cnVuYyBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9faW50X3RydW5jIG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGlmIG51bV9iaXRzX2ludDMyIDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19pbnQzMl90cnVuYyBJbnQubWF4X3ZhbHVlIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQzMiBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50MzIgeCBtYXggPD0gMClcbjs7XG5cbmxldCBpbnRfdG9faW50MzIgeCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBTb21lIChpbnRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50MzJfdG9faW50IHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50MzJfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF90b19pbnQzMl9leG4geCA9XG4gIGlmIGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHggdGhlbiBpbnRfdG9faW50MzJfdHJ1bmMgeCBlbHNlIGludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbmxldCBpbnQzMl90b19pbnRfZXhuIHggPVxuICBpZiBpbnQzMl9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50MzJfdG9faW50X3RydW5jIHggZWxzZSBpbnQzMl90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IGludDY0ICopXG5cbmxldCBpbnQ2NF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8IG51bV9iaXRzX2ludDY0KVxubGV0IGludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9faW50XG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCA9XG4gIGxldCBtaW4gPSBpbnRfdG9faW50NjQgSW50Lm1pbl92YWx1ZSBpblxuICBsZXQgbWF4ID0gaW50X3RvX2ludDY0IEludC5tYXhfdmFsdWUgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X3RvX2ludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludF90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19pbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gaW50NjRfdG9faW50X3RydW5jIHggZWxzZSBpbnQ2NF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcIm5hdGl2ZWludFwiIFwiaW50XCIgbmF0aXZlaW50X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludF90b19uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm9mX2ludFxubGV0IG5hdGl2ZWludF90b19pbnRfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfaW50MzJcbmxldCBpbnQ2NF90b19pbnQzMl90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19pbnQzMlxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGxldCBtaW4gPSBpbnQzMl90b19pbnQ2NCBtaW5faW50MzIgaW5cbiAgbGV0IG1heCA9IGludDMyX3RvX2ludDY0IG1heF9pbnQzMiBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzIgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludDY0X3RvX2ludDMyX3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gaW50NjRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50MzIgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9XG4gIGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnQzMlwiIG5hdGl2ZWludF90b19zdHJpbmdcbjs7XG5cbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDMyX3RvX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyXG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiA9XG4gIGlmIG51bV9iaXRzX25hdGl2ZWludCA8PSBudW1fYml0c19pbnQzMlxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludDMyX3RvX25hdGl2ZWludCBtaW5faW50MzIgaW5cbiAgICBsZXQgbWF4ID0gaW50MzJfdG9fbmF0aXZlaW50IG1heF9pbnQzMiBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzIgeCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxuKCogaW50NjQgPC0+IG5hdGl2ZWludCAqKVxuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcIm5hdGl2ZWludFwiIGludDY0X3RvX3N0cmluZ1xubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQ2NCA+PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50X3RydW5jID0gU3RkbGliLkludDY0LnRvX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBtaW5faW50NjQgMSBpblxuICBsZXQgbWF4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IG1heF9pbnQ2NCAxIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF9maXRfb25faW50NjNfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiAoKSBlbHNlIGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeFxuOztcblxuKCogc3RyaW5nIGNvbnZlcnNpb25zICopXG5cbmxldCBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IGlucHV0IH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXIgPVxuICBsZXQgaW5wdXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBpZiBpbnB1dF9sZW5ndGggPD0gY2hhcnNfcGVyX2RlbGltaXRlclxuICB0aGVuIGlucHV0XG4gIGVsc2UgKFxuICAgIGxldCBoYXNfc2lnbiA9XG4gICAgICBtYXRjaCBpbnB1dC5bMF0gd2l0aFxuICAgICAgfCAnKycgfCAnLScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgbnVtX2RpZ2l0cyA9IGlmIGhhc19zaWduIHRoZW4gaW5wdXRfbGVuZ3RoIC0gMSBlbHNlIGlucHV0X2xlbmd0aCBpblxuICAgIGxldCBudW1fZGVsaW1pdGVycyA9IChudW1fZGlnaXRzIC0gMSkgLyBjaGFyc19wZXJfZGVsaW1pdGVyIGluXG4gICAgbGV0IG91dHB1dF9sZW5ndGggPSBpbnB1dF9sZW5ndGggKyBudW1fZGVsaW1pdGVycyBpblxuICAgIGxldCBvdXRwdXQgPSBCeXRlcy5jcmVhdGUgb3V0cHV0X2xlbmd0aCBpblxuICAgIGxldCBpbnB1dF9wb3MgPSByZWYgKGlucHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG91dHB1dF9wb3MgPSByZWYgKG91dHB1dF9sZW5ndGggLSAxKSBpblxuICAgIGxldCBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gcmVmIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgZmlyc3RfZGlnaXRfcG9zID0gaWYgaGFzX3NpZ24gdGhlbiAxIGVsc2UgMCBpblxuICAgIHdoaWxlICFpbnB1dF9wb3MgPj0gZmlyc3RfZGlnaXRfcG9zIGRvXG4gICAgICBpZiAhbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGRlbGltaXRlcjtcbiAgICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgICBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIDo9IGNoYXJzX3Blcl9kZWxpbWl0ZXIpO1xuICAgICAgQnl0ZXMuc2V0IG91dHB1dCAhb3V0cHV0X3BvcyBpbnB1dC5bIWlucHV0X3Bvc107XG4gICAgICBkZWNyIGlucHV0X3BvcztcbiAgICAgIGRlY3Igb3V0cHV0X3BvcztcbiAgICAgIGRlY3IgbnVtX2NoYXJzX3VudGlsX2RlbGltaXRlclxuICAgIGRvbmU7XG4gICAgaWYgaGFzX3NpZ24gdGhlbiBCeXRlcy5zZXQgb3V0cHV0IDAgaW5wdXQuWzBdO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0cHV0KVxuOztcblxubGV0IGluc2VydF9kZWxpbWl0ZXIgaW5wdXQgfmRlbGltaXRlciA9XG4gIGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlcjozXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzIGlucHV0ID0gaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyOidfJ1xubGV0IHNleHBfb2ZfaW50X3N0eWxlID0gU2V4cC5vZl9pbnRfc3R5bGVcblxubW9kdWxlIE1ha2UgKEkgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIElcblxuICBsZXQgY2hhcnNfcGVyX2RlbGltaXRlciA9IDNcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9XG4gICAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAodG9fc3RyaW5nIHQpIH5kZWxpbWl0ZXIgfmNoYXJzX3Blcl9kZWxpbWl0ZXJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHQgaW5cbiAgICBTZXhwLkF0b21cbiAgICAgIChtYXRjaCAhc2V4cF9vZl9pbnRfc3R5bGUgd2l0aFxuICAgICAgIHwgYFVuZGVyc2NvcmVzIC0+IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgcyB+Y2hhcnNfcGVyX2RlbGltaXRlciB+ZGVsaW1pdGVyOidfJ1xuICAgICAgIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaGV4IChJIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgKCA8ICkgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRfaGV4ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoSS5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIEkuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gSS5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gNFxuXG4gICAgbGV0IHRvX3N0cmluZycgP2RlbGltaXRlciB0ID1cbiAgICAgIGxldCBtYWtlX3N1ZmZpeCA9XG4gICAgICAgIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBJLnRvX3N0cmluZ1xuICAgICAgICB8IFNvbWUgZGVsaW1pdGVyIC0+XG4gICAgICAgICAgZnVuIHQgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSAoSS50b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICAgICAgaW5cbiAgICAgIGlmIEkuKCA8ICkgdCBJLnplcm8gdGhlbiBcIi0weFwiIF4gbWFrZV9zdWZmaXggKEkubmVnIHQpIGVsc2UgXCIweFwiIF4gbWFrZV9zdWZmaXggdFxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmcnIHQgP2RlbGltaXRlcjpOb25lXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPyhkZWxpbWl0ZXIgPSAnXycpIHQgPSB0b19zdHJpbmcnIHQgfmRlbGltaXRlclxuXG4gICAgbGV0IGludmFsaWQgc3RyID1cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCIlcy5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiBJLm1vZHVsZV9uYW1lIHN0ciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIHN0ciA9XG4gICAgICBJLm9mX3N0cmluZyAoU3RyaW5nLmZpbHRlciBzdHIgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgJ18nKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgICAgbGV0IG1vZHVsZSBMID0gSGV4X2xleGVyIGluXG4gICAgICBsZXQgbGV4ID0gU3RkbGliLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhleCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVF9oZXhcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKFRfaGV4KVxuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBmaWxlIHdhcyBhdXRvZ2VuZXJhdGVkIGJ5IC4uL2dlbmVyYXRlL2dlbmVyYXRlX3Bvd19vdmVyZmxvd19ib3VuZHMuZXhlICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcblxuKCogV2UgaGF2ZSB0byB1c2UgSW50NjQudG9faW50X2V4biBpbnN0ZWFkIG9mIGludCBjb25zdGFudHMgdG8gbWFrZVxuICAgc3VyZSB0aGF0IGZpbGUgY2FuIGJlIHByZXByb2Nlc3NlZCBvbiAzMi1iaXQgbWFjaGluZXMuICopXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUgOiBpbnQzMiA9XG4gIDIxNDc0ODM2NDdsXG5cbmxldCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQzMiBhcnJheSA9XG4gIFt8IDIxNDc0ODM2NDdsXG4gIDsgIDIxNDc0ODM2NDdsXG4gIDsgIDQ2MzQwbFxuICA7ICAxMjkwbFxuICA7ICAyMTVsXG4gIDsgIDczbFxuICA7ICAzNWxcbiAgOyAgMjFsXG4gIDsgIDE0bFxuICA7ICAxMGxcbiAgOyAgOGxcbiAgOyAgN2xcbiAgOyAgNWxcbiAgOyAgNWxcbiAgOyAgNGxcbiAgOyAgNGxcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgM2xcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMmxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgOyAgMWxcbiAgfF1cblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUgOiBpbnQgPVxuICAoLTEpIGxzciAxXG5cbmxldCBpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50IGFycmF5ID1cbiAgbWF0Y2ggSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludCB3aXRoXG4gIHwgMzIgLT4gQXJyYXkubWFwIGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyB+ZjpTdGRsaWIuSW50MzIudG9faW50XG4gIHwgNjMgLT5cbiAgICBbfCBTdGRsaWIuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgU3RkbGliLkludDY0LnRvX2ludCA0NjExNjg2MDE4NDI3Mzg3OTAzTFxuICAgIDsgIFN0ZGxpYi5JbnQ2NC50b19pbnQgMjE0NzQ4MzY0N0xcbiAgICA7ICAxNjY0NTEwXG4gICAgOyAgNDYzNDBcbiAgICA7ICA1NDA0XG4gICAgOyAgMTI5MFxuICAgIDsgIDQ2M1xuICAgIDsgIDIxNVxuICAgIDsgIDExOFxuICAgIDsgIDczXG4gICAgOyAgNDlcbiAgICA7ICAzNVxuICAgIDsgIDI3XG4gICAgOyAgMjFcbiAgICA7ICAxN1xuICAgIDsgIDE0XG4gICAgOyAgMTJcbiAgICA7ICAxMFxuICAgIDsgIDlcbiAgICA7ICA4XG4gICAgOyAgN1xuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA1XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgMzEgLT5cbiAgICBbfCAxMDczNzQxODIzXG4gICAgOyAgMTA3Mzc0MTgyM1xuICAgIDsgIDMyNzY3XG4gICAgOyAgMTAyM1xuICAgIDsgIDE4MVxuICAgIDsgIDYzXG4gICAgOyAgMzFcbiAgICA7ICAxOVxuICAgIDsgIDEzXG4gICAgOyAgMTBcbiAgICA7ICA3XG4gICAgOyAgNlxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICB8XVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDQ2MTE2ODYwMTg0MjczODc5MDNMXG5cbmxldCBpbnQ2M19vbl9pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gIDsgIDIxNDc0ODM2NDdMXG4gIDsgIDE2NjQ1MTBMXG4gIDsgIDQ2MzQwTFxuICA7ICA1NDA0TFxuICA7ICAxMjkwTFxuICA7ICA0NjNMXG4gIDsgIDIxNUxcbiAgOyAgMTE4TFxuICA7ICA3M0xcbiAgOyAgNDlMXG4gIDsgIDM1TFxuICA7ICAyN0xcbiAgOyAgMjFMXG4gIDsgIDE3TFxuICA7ICAxNExcbiAgOyAgMTJMXG4gIDsgIDEwTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDY0X3ZhbHVlIDogaW50NjQgPVxuICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuXG5sZXQgaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAzMDM3MDAwNDk5TFxuICA7ICAyMDk3MTUxTFxuICA7ICA1NTEwOExcbiAgOyAgNjIwOExcbiAgOyAgMTQ0OExcbiAgOyAgNTExTFxuICA7ICAyMzRMXG4gIDsgIDEyN0xcbiAgOyAgNzhMXG4gIDsgIDUyTFxuICA7ICAzOExcbiAgOyAgMjhMXG4gIDsgIDIyTFxuICA7ICAxOExcbiAgOyAgMTVMXG4gIDsgIDEzTFxuICA7ICAxMUxcbiAgOyAgOUxcbiAgOyAgOExcbiAgOyAgN0xcbiAgOyAgN0xcbiAgOyAgNkxcbiAgOyAgNkxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNUxcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgNExcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgM0xcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMkxcbiAgOyAgMUxcbiAgfF1cblxubGV0IGludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC05MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICA7ICAtMzAzNzAwMDQ5OUxcbiAgOyAgLTIwOTcxNTFMXG4gIDsgIC01NTEwOExcbiAgOyAgLTYyMDhMXG4gIDsgIC0xNDQ4TFxuICA7ICAtNTExTFxuICA7ICAtMjM0TFxuICA7ICAtMTI3TFxuICA7ICAtNzhMXG4gIDsgIC01MkxcbiAgOyAgLTM4TFxuICA7ICAtMjhMXG4gIDsgIC0yMkxcbiAgOyAgLTE4TFxuICA7ICAtMTVMXG4gIDsgIC0xM0xcbiAgOyAgLTExTFxuICA7ICAtOUxcbiAgOyAgLThMXG4gIDsgIC03TFxuICA7ICAtN0xcbiAgOyAgLTZMXG4gIDsgIC02TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC01TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0xTFxuICB8XVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgbmVnYXRpdmVfZXhwb25lbnQgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiZXhwb25lbnQgY2FuIG5vdCBiZSBuZWdhdGl2ZVwiICgpXG5sZXQgb3ZlcmZsb3cgKCkgPSBQcmludGYuaW52YWxpZF9hcmdmIFwiaW50ZWdlciBvdmVyZmxvdyBpbiBwb3dcIiAoKVxuXG4oKiBUbyBpbXBsZW1lbnQgW2ludDY0X3Bvd10sIHdlIHVzZSBDIGNvZGUgcmF0aGVyIHRoYW4gT0NhbWwgdG8gZWxpbWluYXRlIGFsbG9jYXRpb24uICopXG5leHRlcm5hbCBpbnRfbWF0aF9pbnRfcG93IDogaW50IC0+IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3Bvd19zdHViXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGludF9tYXRoX2ludDY0X3BvdyA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViXCJcblxubGV0IGludF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGlmIGV4cG9uZW50IDwgMCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiBhYnMgYmFzZSA+IDFcbiAgJiYgKGV4cG9uZW50ID4gNjNcbiAgICAgIHx8IGFicyBiYXNlID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLihleHBvbmVudCkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubW9kdWxlIEludDY0X3dpdGhfY29tcGFyaXNvbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuICBleHRlcm5hbCAoID4gKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuICBleHRlcm5hbCAoID49ICkgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgID4gUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZVxuICAgICAgICAgICAgIDwgUG93X292ZXJmbG93X2JvdW5kcy5pbnQ2NF9uZWdhdGl2ZV9vdmVyZmxvd19ib3VuZHMuKHRvX2ludCBleHBvbmVudCkpKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgaSB+dG9fbXVsdGlwbGVfb2YgPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgRG93biAtPiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgfCBgVXAgLT4gcm91bmRfdXAgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpbnRfcG93ID0gaW50X3Bvd1xuICBsZXQgaW50NjRfcG93ID0gaW50NjRfcG93XG4gIGxldCBpbnQ2M19wb3dfb25faW50NjQgPSBpbnQ2M19wb3dfb25faW50NjRcblxuICBtb2R1bGUgUG93X292ZXJmbG93X2JvdW5kcyA9IFBvd19vdmVyZmxvd19ib3VuZHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqIEMgc3R1YiBmb3IgaW50IHBvcGNvdW50IHRvIHVzZSB0aGUgUE9QQ05UIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG5leHRlcm5hbCBpbnRfcG9wY291bnQgOiBpbnQgLT4gaW50ID0gXCJCYXNlX2ludF9tYXRoX2ludF9wb3Bjb3VudFwiIFtAQG5vYWxsb2NdXG5cbigqIFRvIG1haW50YWluIGphdmFzY3JpcHQgY29tcGF0aWJpbGl0eSBhbmQgZW5hYmxlIHVuYm94aW5nLCB3ZSBpbXBsZW1lbnQgcG9wY291bnQgaW5cbiAgIE9DYW1sIHJhdGhlciB0aGFuIHVzZSBDIHN0dWJzLiBJbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZyb206XG4gICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYW1taW5nX3dlaWdodCNFZmZpY2llbnRfaW1wbGVtZW50YXRpb24gKilcbmxldCBpbnQ2NF9wb3Bjb3VudCA9XG4gIGxldCBvcGVuIFN0ZGxpYi5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKFN0ZGxpYi5JbnQ2NC5sb2dhbmQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrKVxuOztcblxubGV0IG5hdGl2ZWludF9wb3Bjb3VudCA9XG4gIG1hdGNoIFN0ZGxpYi5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChTdGRsaWIuTmF0aXZlaW50LnRvX2ludDMyIHgpXG4gIHwgNjQgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDY0X3BvcGNvdW50IChTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50IHgpXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU2lnbjBcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFNpZ24wKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3N0cmluZ19odW0gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBcIm5lZ2F0aXZlXCJcbiAgfCBaZXJvIC0+IFwiemVyb1wiXG4gIHwgUG9zIC0+IFwicG9zaXRpdmVcIlxuOztcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTEuXG4gIHwgWmVybyAtPiAwLlxuICB8IFBvcyAtPiAxLlxuOztcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG47O1xuXG5sZXQgKCAqICkgdCB0JyA9IG9mX2ludCAodG9faW50IHQgKiB0b19pbnQgdCcpXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGF0IHRoZSBlbmQsIGFmdGVyIGFueVxuICAgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc29cbiAgIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpc1xuICAgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRfaW50ZlxuaW5jbHVkZSBJbnQwXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50IDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2ludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgeCB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIHggeVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICB8IF8gLT4gUHJpbnRmLmZhaWx3aXRoZiBcIkludC5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbmVuZFxuXG5sZXQgbnVtX2JpdHMgPSBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCB0b19mbG9hdCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBTdGRsaWIuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIFN0ZGxpYi5pbnRfb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIleFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIleFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc29cbiAgIHRoZXkgZG8gbm90IHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAodFtAbG9jYWxfb3B0XSkgLT4gKGludDMyW0Bsb2NhbF9vcHRdKSA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMl90cnVuYyA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9pbnQ2NF90cnVuYyA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiAobmF0aXZlaW50W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5cbmxldCBwcmVkIGkgPSBpIC0gMVxubGV0IHN1Y2MgaSA9IGkgKyAxXG5sZXQgdG9faW50IGkgPSBpXG5sZXQgdG9faW50X2V4biA9IHRvX2ludFxubGV0IG9mX2ludCBpID0gaVxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxubGV0IG1pbl92YWx1ZSA9IFN0ZGxpYi5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IFN0ZGxpYi5pbmNyXG5sZXQgZGVjciA9IFN0ZGxpYi5kZWNyXG5sZXQgc2hpZnRfcmlnaHQgYSBiID0gYSBhc3IgYlxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYSBiID0gYSBsc3IgYlxubGV0IHNoaWZ0X2xlZnQgYSBiID0gYSBsc2wgYlxubGV0IGJpdF9ub3QgYSA9IGxub3QgYVxubGV0IGJpdF9vciBhIGIgPSBhIGxvciBiXG5sZXQgYml0X2FuZCBhIGIgPSBhIGxhbmQgYlxubGV0IGJpdF94b3IgYSBiID0gYSBseG9yIGJcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludF9wb3dcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCAtIDEgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggKyAxXG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICAoKiBUaGUgbmV4dCBsaW5lIGlzIHN1cGVyZmx1b3VzIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLCBidXQgaXQncyBmYXN0ZXIgdG8gZG8gaXRcbiAgICAgICBhbnl3YXkgdGhhbiB0byBicmFuY2ggKilcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICB4IC0gKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCAoeCAtIDEpID0gMFxuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoKiBOb3RlIHRoYXQgd2UgcGFzcyB0aGUgdGFnZ2VkIGludCBoZXJlLiBTZWUgaW50X21hdGhfc3R1YnMuYyBmb3IgZGV0YWlscyBvbiB3aHlcbiAgICAgICAgICB0aGlzIGlzIGNvcnJlY3QuICopXG4gICAgaW50XG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2Nsel91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludFtAdW50YWdnZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludF9jdHpfdW50YWdnZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQgaSBdKTtcbiAgICBpZiBpID0gMSB0aGVuIDAgZWxzZSBudW1fYml0cyAtIGNseiAoaSAtIDEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBzaWduID0gU2lnbi5vZl9pbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludF9wb3Bjb3VudFxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVhZGRpbnRcIlxuICBleHRlcm5hbCAoIC0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbXVsaW50XCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVkaXZpbnRcIlxuICBleHRlcm5hbCAoIH4tICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBtb2R1bGUgRiA9IEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgRlxuXG4gIGV4dGVybmFsIGJzd2FwMTYgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVic3dhcDE2XCJcblxuICAoKiBUaGVzZSBpbmxpbmVkIHZlcnNpb25zIG9mICglKSwgKC8lKSwgYW5kICgvLykgcGVyZm9ybSBiZXR0ZXIgdGhhbiB0aGVpciBmdW5jdG9yaXplZFxuICAgICBjb3VudGVycGFydHMgaW4gW0ZdIChzZWUgYmVuY2htYXJrcyBiZWxvdykuXG5cbiAgICAgVGhlIHJlYXNvbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZWQgaW4gW0ludF0gYnV0IG5vdCBpbiBhbnkgb2YgdGhlIG90aGVyIGludGVnZXJcbiAgICAgbW9kdWxlcyBpcyB0aGF0IHRoZXkgZXhpc3RlZCBpbiBbSW50XSBhbmQgW0ludF0gYWxvbmUgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZlxuICAgICB0aGUgW0ludF9tYXRoLk1ha2VdIGZ1bmN0b3IsIGFuZCB3ZSBkaWRuJ3Qgd2FudCB0byBkZWdyYWRlIHRoZWlyIHBlcmZvcm1hbmNlLlxuXG4gICAgIFdlIHdvbid0IHByZS1lbXB0aXZlbHkgZG8gdGhlIHNhbWUgZm9yIG5ldyBmdW5jdGlvbnMsIHVubGVzcyBzb21lb25lIGNhcmVzLCBvbiBhIGNhc2VcbiAgICAgYnkgY2FzZSBmYXNoaW9uLiAgKilcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gcmVtIHggeSBpblxuICAgIGlmIHJ2YWwgPCB6ZXJvIHRoZW4gcnZhbCArIHkgZWxzZSBydmFsXG4gIDs7XG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAvJSUgJXMgaW4gY29yZV9pbnQubWw6IGRpdmlzb3Igc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGlmIHggPCB6ZXJvIHRoZW4gKCh4ICsgb25lKSAvIHkpIC0gb25lIGVsc2UgeCAvIHlcbiAgOztcblxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYW5kaW50XCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG4gIGxldCBsbm90ID0gbG5vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuICBleHRlcm5hbCAoIGxzciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWFzcmludFwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnRdIGFuZCBbSW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9fRiA9IE8uRlxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBpbmNsdWRpbmcgZnVuY3RvclxuICAgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFVjaGFyMFxuXG4gIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5VY2hhclwiXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gSGFzaC5mb2xkX2ludCBzdGF0ZSAodG9faW50IHQpXG4gIGxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG4gIGxldCB0b19zdHJpbmcgdCA9IFByaW50Zi5zcHJpbnRmIFwiVSslMDRYXCIgKHRvX2ludCB0KVxuXG4gICgqIERvIG5vdCBhY3R1YWxseSBleHBvcnQgdGhpcy4gU2VlIGRpc2N1c3Npb24gaW4gdGhlIC5tbGkgKilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVWNoYXIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWRcbiAgICAgICAgICAgICAoU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgTS5LZXkpXG4gICAgOztcblxuICAgICgqIFdlIHdhbnQgYSBjb25zdGFudCBhbGxvY2F0ZWQgb25jZSB0aGF0IFtzYW1lXSBjYW4gcmV0dXJuIHdoZW5ldmVyIGl0IGdldHMgdGhlIHNhbWVcbiAgICAgICB3aXRuZXNzZXMuICBJZiB3ZSB3cml0ZSB0aGUgY29uc3RhbnQgaW5zaWRlIHRoZSBib2R5IG9mIFtzYW1lXSwgdGhlIG5hdGl2ZS1jb2RlXG4gICAgICAgY29tcGlsZXIgd2lsbCBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kIGxpZnQgaXQgb3V0LiAgQnV0IGZvciBjbGFyaXR5IGFuZCByb2J1c3RuZXNzLFxuICAgICAgIHdlIGRvIGl0IG91cnNlbHZlcy4gKilcbiAgICBsZXQgc29tZV90ID0gU29tZSBUXG5cbiAgICBsZXQgc2FtZSAodHlwZSBhIGIpIChhIDogYSB0KSAoYiA6IGIgdCkgOiAoYSwgYikgZXF1YWwgb3B0aW9uID1cbiAgICAgIGxldCBtb2R1bGUgQSA9ICh2YWwgYSA6IFMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBCID0gKHZhbCBiIDogUyB3aXRoIHR5cGUgdCA9IGIpIGluXG4gICAgICBtYXRjaCBBLktleSB3aXRoXG4gICAgICB8IEIuS2V5IC0+IHNvbWVfdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuICBlbmRcblxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3aXRuZXNzIDogJ2EgV2l0bmVzcy50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyB0b19zZXhwIDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgXyB7IHdpdG5lc3M7IG5hbWU7IHRvX3NleHAgfSA6IFNleHAudCA9XG4gICAgaWYgYW1fdGVzdGluZ1xuICAgIHRoZW4gQXRvbSBuYW1lXG4gICAgZWxzZVxuICAgICAgTGlzdFxuICAgICAgICBbIExpc3QgWyBBdG9tIFwibmFtZVwiOyBBdG9tIG5hbWUgXVxuICAgICAgICA7IExpc3QgWyBBdG9tIFwid2l0bmVzc1wiOyB3aXRuZXNzIHw+IFdpdG5lc3Muc2V4cF9vZl90IHRvX3NleHAgXVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3NleHAgdCA9IHQudG9fc2V4cFxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBjcmVhdGUgfm5hbWUgdG9fc2V4cCA9IHsgd2l0bmVzcyA9IFdpdG5lc3MuY3JlYXRlICgpOyBuYW1lOyB0b19zZXhwIH1cbiAgbGV0IHVpZCB0ID0gV2l0bmVzcy51aWQgdC53aXRuZXNzXG4gIGxldCBoYXNoIHQgPSB1aWQgdFxuICBsZXQgaGFzaF9mb2xkX3QgcyB0ID0gaGFzaF9mb2xkX2ludCBzICh1aWQgdClcbiAgbGV0IHNhbWVfd2l0bmVzcyB0MSB0MiA9IFdpdG5lc3Muc2FtZSB0MS53aXRuZXNzIHQyLndpdG5lc3NcbiAgbGV0IHNhbWUgdDEgdDIgPSBPcHRpb24uaXNfc29tZSAoc2FtZV93aXRuZXNzIHQxIHQyKVxuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuIHQxIHQyID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgdDEgdDIgd2l0aFxuICAgIHwgU29tZSB3IC0+IHdcbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIlR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBnb3QgZGlmZmVyZW50IGlkc1wiXG4gICAgICAgICAgIFsgKCBcIlwiXG4gICAgICAgICAgICAgLCBzZXhwX29mX3BhaXIgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHNleHBfb2ZfdCBzZXhwX29mX29wYXF1ZSkgKHQxLCB0MilcbiAgICAgICAgICAgICApXG4gICAgICAgICAgIF0pXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogWydhIENoZWFwX29wdGlvbi50XSBpcyBsaWtlIFsnYSBvcHRpb25dLCBidXQgaXQgZG9lc24ndCBib3ggW3NvbWUgX10gdmFsdWVzLlxuXG4gICAgVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHRoYXQgYXJlIHVuc2FmZSBhYm91dCBpdDpcblxuICAgIC0gW2Zsb2F0IHQgYXJyYXldIChvciBhbnkgYXJyYXktYmFja2VkIGNvbnRhaW5lcikgaXMgbm90IG1lbW9yeS1zYWZlXG4gICAgICBiZWNhdXNlIGZsb2F0IGFycmF5IG9wdGltaXphdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB1bmJveGVkIG9wdGlvblxuICAgICAgb3B0aW1pemF0aW9uLiBZb3UgaGF2ZSB0byB1c2UgW1VuaWZvcm1fYXJyYXkudF0gaW5zdGVhZCBvZiBbYXJyYXldLlxuXG4gICAgLSBOZXN0ZWQgb3B0aW9ucyAoWydhIHQgdF0pIGRvbid0IHdvcmsuIFRoZXkgYXJlIGJlbGlldmVkIHRvIGJlXG4gICAgICBtZW1vcnktc2FmZSwgYnV0IG5vdCBwYXJhbWV0cmljLlxuXG4gICAgLSBBIHJlY29yZCB3aXRoIFtmbG9hdCB0XXMgaW4gaXQgc2hvdWxkIGJlIHNhZmUsIGJ1dCBpdCdzIG9ubHkgW3RdIGJlaW5nXG4gICAgICBhYnN0cmFjdCB0aGF0IGdpdmVzIHlvdSBzYWZldHkuIElmIHRoZSBjb21waWxlciB3YXMgc21hcnQgZW5vdWdoIHRvIHBlZWtcbiAgICAgIHRocm91Z2ggdGhlIG1vZHVsZSBzaWduYXR1cmUgdGhlbiBpdCBjb3VsZCBkZWNpZGUgdG8gY29uc3RydWN0IGEgZmxvYXRcbiAgICAgIGFycmF5IGluc3RlYWQuICopXG5tb2R1bGUgQ2hlYXBfb3B0aW9uID0gc3RydWN0XG4gICgqIFRoaXMgaXMgdGFrZW4gZnJvbSBjb3JlLiBSYXRoZXIgdGhhbiBleHBvc2UgaXQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgYmFzZSwganVzdFxuICAgICBrZWVwIGEgY29weSBhcm91bmQgaGVyZS4gKilcbiAgbGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoU3RkbGliLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSArJ2EgdFxuXG4gICAgKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgICAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICAgICAgSXQgd291bGQgYmUgc2ltcGxlciB0byB1c2UgdGhpcyB2YWx1ZSBhcyBbbm9uZV0sIGJ1dCB3ZSB1c2UgYW4gaW1tZWRpYXRlIGluc3RlYWRcbiAgICAgICBiZWNhdXNlIGl0IGxldHMgdXMgYXZvaWQgY2FtbF9tb2RpZnkgd2hlbiBzZXR0aW5nIHRvIFtub25lXSwgbWFraW5nIGNlcnRhaW5cbiAgICAgICBiZW5jaG1hcmtzIHNpZ25pZmljYW50bHkgZmFzdGVyIChlLmcuIC4uL2JlbmNoL2FycmF5X3F1ZXVlLmV4ZSkuXG5cbiAgICAgICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBNb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlciBwbGFjZSB3aGVyZSB3ZSB3YW50XG4gICAgICAgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbiAgICBsZXQgbm9uZV9zdWJzdGl0dXRlIDogXyB0ID1cbiAgICAgIFN0ZGxpYi5PYmoub2JqIChTdGRsaWIuT2JqLm5ld19ibG9jayBTdGRsaWIuT2JqLmFic3RyYWN0X3RhZyAxKVxuICAgIDs7XG5cbiAgICBsZXQgbm9uZSA6IF8gdCA9XG4gICAgICAoKiBUaGUgbnVtYmVyIHdhcyBwcm9kdWNlZCBieVxuICAgICAgICAgWzwgL2Rldi91cmFuZG9tIHRyIC1jIC1kICcxMjM0NTY3ODkwYWJjZGVmJyB8IGhlYWQgLWMgMTZdLlxuXG4gICAgICAgICBUaGUgaWRlYSBpcyB0aGF0IGEgcmFuZG9tIG51bWJlciB3aWxsIGhhdmUgbG93ZXIgcHJvYmFiaWxpdHkgdG8gY29sbGlkZSB3aXRoXG4gICAgICAgICBhbnl0aGluZyB0aGFuIGFueSBudW1iZXIgd2UgY2FuIGNob29zZSBvdXJzZWx2ZXMuXG5cbiAgICAgICAgIFdlIGFyZSB1c2luZyBhIHBvbHltb3JwaGljIHZhcmlhbnQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50IGJlY2F1c2UgdGhlcmVcbiAgICAgICAgIGlzIGEgY29tcGlsZXIgYnVnIHdoZXJlIGl0IHdyb25nbHkgYXNzdW1lcyB0aGF0IHRoZSByZXN1bHQgb2YgW2lmIF8gdGhlbiBjIGVsc2VcbiAgICAgICAgIHldIGlzIG5vdCBhIHBvaW50ZXIgaWYgW2NdIGlzIGFuIGludGVnZXIgY29tcGlsZS10aW1lIGNvbnN0YW50LiAgVGhpcyBpcyBiZWluZ1xuICAgICAgICAgZml4ZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL3B1bGwvNTU1LiAgVGhlIFwibWVtb3J5IGNvcnJ1cHRpb25cIiB0ZXN0XG4gICAgICAgICBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGlzc3VlLiAgKilcbiAgICAgIFN0ZGxpYi5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV91bnNhZmUgKHR5cGUgYSkgKHggOiBhIHQpIDogYSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHggbm9uZV9zdWJzdGl0dXRlIHRoZW4gU3RkbGliLk9iai5tYWdpYyBub25lIGVsc2UgU3RkbGliLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9zZXhwX2dyYW1tYXIgKENoZWFwX29wdGlvbi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyKVxuOztcblxuW0BAQGVuZF1cblxubGV0IGVtcHR5ID0gVW5pZm9ybV9hcnJheS5lbXB0eVxubGV0IGNyZWF0ZSB+bGVuID0gVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbiBDaGVhcF9vcHRpb24ubm9uZVxubGV0IGluaXQgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIChmIGkpKSBbQG5vbnRhaWxdXG5sZXQgaW5pdF9zb21lIG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLnNvbWUgKGYgaSkpIFtAbm9udGFpbF1cbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkaSBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiBhY2MgOj0gZiBpICFhY2MgZWxlbSk7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkIGlucHV0IH5pbml0IH5mID0gZm9sZGkgaW5wdXQgfmluaXQgfmY6KGZ1biAoXyA6IGludCkgYWNjIHggLT4gZiBhY2MgeCkgW0Bub250YWlsXVxuXG5pbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLk1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsIF8pIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbGVuZ3RoID0gVW5pZm9ybV9hcnJheS5sZW5ndGhcblxubGV0IG1hcGkgaW5wdXQgfmYgPVxuICBsZXQgb3V0cHV0ID0gY3JlYXRlIH5sZW46KGxlbmd0aCBpbnB1dCkgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gdW5zYWZlX3NldCBvdXRwdXQgaSAoZiBpIGVsZW0pKTtcbiAgb3V0cHV0XG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwaSBpbnB1dCB+ZjooZnVuIChfIDogaW50KSBlbGVtIC0+IGYgZWxlbSkgW0Bub250YWlsXVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gIGxldCBibmRzX18wMDJfID1cbiAgICBsZXQgYXJnX18wMDZfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMDVfIGluXG4gICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwM18gaW5cbiAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW1N0ZGxpYi5TdGFja10gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICFyIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfbGlzdCAodHlwZSBhKSAobCA6IGEgbGlzdCkgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxcbiAgdGhlbiBjcmVhdGUgKClcbiAgZWxzZSAoXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjooMiAqIGxlbmd0aCkgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgZm9yIGkgPSBsZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgT3B0aW9uX2FycmF5LnNldF9zb21lIGVsdHMgaSBhO1xuICAgICAgICByIDo9IGxcbiAgICBkb25lO1xuICAgIHsgbGVuZ3RoOyBlbHRzIH0pXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHJlc2l6ZSB0IHNpemUgPVxuICBsZXQgYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOnNpemUgaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzp0LmVsdHMgfmRzdDphcnIgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46dC5sZW5ndGg7XG4gIHQuZWx0cyA8LSBhcnJcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgbmV3X2NhcGFjaXR5ID0gbWF4IG5ld19jYXBhY2l0eSAobGVuZ3RoIHQpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gcmVzaXplIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgcHVzaCB0IGEgPVxuICBpZiB0Lmxlbmd0aCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzIHRoZW4gcmVzaXplIHQgKDIgKiAodC5sZW5ndGggKyAxKSk7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmVsdHMgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IHQubGVuZ3RoIC0gMSBpblxuICBsZXQgcmVzdWx0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGk7XG4gIHQubGVuZ3RoIDwtIGk7XG4gIHJlc3VsdFxuOztcblxubGV0IHBvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnBvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgcG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9ub25lbXB0eSB0KVxubGV0IHBvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSBwb3BfZXJyb3IgZWxzZSBwb3Bfbm9uZW1wdHkgdFxubGV0IHRvcF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgKHQubGVuZ3RoIC0gMSlcbmxldCB0b3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay50b3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHRvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3Bfbm9uZW1wdHkgdClcbmxldCB0b3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgdG9wX2Vycm9yIGVsc2UgdG9wX25vbmVtcHR5IHRcbmxldCBjb3B5IHsgbGVuZ3RoOyBlbHRzIH0gPSB7IGxlbmd0aDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jb3B5IGVsdHMgfVxuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5lbHRzIGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDApXG47O1xuXG5sZXQgdW50aWxfZW1wdHkgdCBmID1cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGYgKHBvcF9ub25lbXB0eSB0KTtcbiAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgbWF0Y2ggZiAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IHB1c2ggdF9yZXN1bHQgeFxuICBkb25lO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgeCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgICBpZiBmIHggdGhlbiBwdXNoIHRfcmVzdWx0IHhcbiAgZG9uZTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHdyaXRlX2luZGV4ID0gcmVmIDAgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICBmb3IgcmVhZF9pbmRleCA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgIGxldCB4ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIHQuZWx0cyByZWFkX2luZGV4IGluXG4gICAgICAgIGlmIGYgeFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpZiAhd3JpdGVfaW5kZXggPCByZWFkX2luZGV4XG4gICAgICAgICAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAhd3JpdGVfaW5kZXggeDtcbiAgICAgICAgICBpbmNyIHdyaXRlX2luZGV4KVxuICAgICAgZG9uZSlcbiAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICBmb3IgaSA9ICF3cml0ZV9pbmRleCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgaVxuICAgICAgZG9uZTtcbiAgICAgIHQubGVuZ3RoIDwtICF3cml0ZV9pbmRleCkgW0Bub250YWlsXVxuOztcblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgcHVzaCB0IHg7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhpcyBpcyBsaWZ0ZWQgb3V0IG9mIFtNXSBiZWNhdXNlIFtTb3VyY2VfY29kZV9wb3NpdGlvbjBdIGV4cG9ydHMgW1N0cmluZzBdXG4gICBhcyBbU3RyaW5nXSwgd2hpY2ggZG9lcyBub3QgZXhwb3J0IGEgaGFzaCBmdW5jdGlvbi4gKilcbmxldCBoYXNoX292ZXJyaWRlIHsgU3RkbGliLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFwibmVnYXRpdmVcIlxuICB8IFplcm8gLT4gXCJ6ZXJvXCJcbiAgfCBQb3MgLT4gXCJwb3NpdGl2ZVwiXG4gIHwgTmFuIC0+IFwibm90LWEtbnVtYmVyXCJcbjs7XG5cbigqIEluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXIgYW55IGZ1bmN0b3IgYXBwbGljYXRpb25zIHRoYXRcbiAgIGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgYWxsIDogJ2EuICdhIGxpc3QgLT4gJ2EgdCBsaXN0ID1cbiAgZnVuIF9hbGxfb2ZfYSAtPlxuICBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICB8IGVudW1lcmF0ZV9fMDAxXyA6OiBsIC0+IG1hcCBsIChJbmNsIGVudW1lcmF0ZV9fMDAxXyA6OiBhY2MpXG4gICAgIGluXG4gICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgKFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgICAgIHwgZW51bWVyYXRlX18wMDJfIDo6IGwgLT4gbWFwIGwgKEV4Y2wgZW51bWVyYXRlX18wMDJfIDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAgICBbIFVuYm91bmRlZCBdKVxuOztcblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biAodHlwZSBhX18wMThfKSA6ICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8pIC0+IFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfIHQpIC0+XG4gIGxldCBlcnJvcl9zb3VyY2VfXzAwNl8gPSBcIm1heWJlX2JvdW5kLm1sLnRcIiBpblxuICBmdW4gX29mX2FfXzAwM18gLT4gZnVuY3Rpb25cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgX3RhZ19fMDA5XykgOjogc2V4cF9hcmdzX18wMTBfKSBhc1xuICAgICAgX3NleHBfXzAwOF8gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxMF8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTFfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAwM18gYXJnMF9fMDExXyBpblxuICAgICAgICAgSW5jbCByZXMwX18wMTJfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMDlfXG4gICAgICAgICAgIF9zZXhwX18wMDhfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBfdGFnX18wMTRfKSA6OiBzZXhwX2FyZ3NfXzAxNV8pIGFzXG4gICAgICBfc2V4cF9fMDEzXyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxNl8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxN18gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTZfIGluXG4gICAgICAgICBFeGNsIHJlczBfXzAxN19cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgX3NleHBfXzAxM18pXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSAtPiBVbmJvdW5kZWRcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmNsXCIgfCBcIkluY2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImV4Y2xcIiB8IFwiRXhjbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIDo6IF8pIGFzXG4gICAgICBzZXhwX18wMDdfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IHNleHBfXzAwNV8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biAodHlwZSBhX18wMjRfKSA6ICgoYV9fMDI0XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAyNF8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gIGZ1biBfb2ZfYV9fMDE5XyAtPiBmdW5jdGlvblxuICAgIHwgSW5jbCBhcmcwX18wMjBfIC0+XG4gICAgICBsZXQgcmVzMF9fMDIxXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkluY2xcIjsgcmVzMF9fMDIxXyBdXG4gICAgfCBFeGNsIGFyZzBfXzAyMl8gLT5cbiAgICAgIGxldCByZXMwX18wMjNfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIyXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhjbFwiOyByZXMwX18wMjNfIF1cbiAgICB8IFVuYm91bmRlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmJvdW5kZWRcIlxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoU3RkbGliLmNvbXBhcmUgOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50KVxuOztcblxubGV0IChoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiA6XG4gICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEluX3JhbmdlIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoX2ludGVydmFsX2NvbXBhcmlzb24gOiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBJbmNsIChmIGluY2wpXG4gIHwgRXhjbCBleGNsIC0+IEV4Y2wgKGYgZXhjbClcbiAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG47O1xuXG5sZXQgaXNfbG93ZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBpbmNsIGEgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGV4Y2wgYSA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX3VwcGVyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgYSBpbmNsIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBhIGV4Y2wgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgbWF0Y2ggbG93ZXIgd2l0aFxuICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICB8IEluY2wgbG93ZXIgfCBFeGNsIGxvd2VyIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgfCBJbmNsIHVwcGVyIHwgRXhjbCB1cHBlciAtPiBjb21wYXJlIGxvd2VyIHVwcGVyID4gMClcbjs7XG5cbmxldCBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIGlmIGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmVcbiAgdGhlbiBmYWlsd2l0aCBcIk1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuOiBsb3dlciBib3VuZCA+IHVwcGVyIGJvdW5kXCJcbjs7XG5cbmxldCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBjaGVja19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZTtcbiAgaWYgbm90IChpc19sb3dlcl9ib3VuZCBsb3dlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQmVsb3dfbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBub3QgKGlzX3VwcGVyX2JvdW5kIHVwcGVyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBBYm92ZV91cHBlcl9ib3VuZFxuICBlbHNlIEluX3JhbmdlXG47O1xuXG5sZXQgaW50ZXJ2YWxfY29udGFpbnNfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIG1hdGNoIGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gdHJ1ZVxuICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gZmFsc2Vcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRHVwbGljYXRlXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDFfIGJfXzAwMl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgfCBgT2sgX2xlZnRfXzAwM18sIGBPayBfcmlnaHRfXzAwNF8gLT4gX2NtcF9fYSBfbGVmdF9fMDAzXyBfcmlnaHRfXzAwNF9cbiAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiAwXG4gICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwNV8gYl9fMDA2XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBTdGRsaWIuKCA9PSApIHRfXzAxNF8gdF9fMDE2X1xuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdF9fMDE0XywgdF9fMDE2XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzAxN18sIGBMZWZ0IF9yaWdodF9fMDE4XyAtPiBfY21wX192IF9sZWZ0X18wMTdfIF9yaWdodF9fMDE4X1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMDE5XywgYFJpZ2h0IF9yaWdodF9fMDIwXyAtPiBfY21wX192IF9sZWZ0X18wMTlfIF9yaWdodF9fMDIwX1xuICAgICAgICB8IGBVbmVxdWFsIF9sZWZ0X18wMjFfLCBgVW5lcXVhbCBfcmlnaHRfXzAyMl8gLT5cbiAgICAgICAgICBsZXQgdF9fMDIzXywgdF9fMDI0XyA9IF9sZWZ0X18wMjFfIGluXG4gICAgICAgICAgbGV0IHRfXzAyNV8sIHRfXzAyNl8gPSBfcmlnaHRfXzAyMl8gaW5cbiAgICAgICAgICAobWF0Y2ggX2NtcF9fdiB0X18wMjNfIHRfXzAyNV8gd2l0aFxuICAgICAgICAgICB8IDAgLT4gX2NtcF9fdiB0X18wMjRfIHRfXzAyNl9cbiAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gICAgfCBuIC0+IG5cbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdrICd2LlxuICAgICgnayAtPiAnayAtPiBib29sKSAtPiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMjdfIGJfXzAyOF8gLT5cbiAgICAgIGxldCB0X18wMjlfLCB0X18wMzBfID0gYV9fMDI3XyBpblxuICAgICAgbGV0IHRfXzAzMV8sIHRfXzAzMl8gPSBiX18wMjhfIGluXG4gICAgICBTdGRsaWIuKCAmJiApXG4gICAgICAgIChfY21wX19rIHRfXzAyOV8gdF9fMDMxXylcbiAgICAgICAgKGlmIFN0ZGxpYi4oID09ICkgdF9fMDMwXyB0X18wMzJfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBtYXRjaCB0X18wMzBfLCB0X18wMzJfIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDMzXywgYExlZnQgX3JpZ2h0X18wMzRfIC0+IF9jbXBfX3YgX2xlZnRfXzAzM18gX3JpZ2h0X18wMzRfXG4gICAgICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMzVfLCBgUmlnaHQgX3JpZ2h0X18wMzZfIC0+IF9jbXBfX3YgX2xlZnRfXzAzNV8gX3JpZ2h0X18wMzZfXG4gICAgICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAzN18sIGBVbmVxdWFsIF9yaWdodF9fMDM4XyAtPlxuICAgICAgICAgICAgIGxldCB0X18wMzlfLCB0X18wNDBfID0gX2xlZnRfXzAzN18gaW5cbiAgICAgICAgICAgICBsZXQgdF9fMDQxXywgdF9fMDQyXyA9IF9yaWdodF9fMDM4XyBpblxuICAgICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX3YgdF9fMDM5XyB0X18wNDFfKSAoX2NtcF9fdiB0X18wNDBfIHRfXzA0Ml8pXG4gICAgICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuKCA9ICkgeCB5KSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDpcbiAgICAnayAndi5cbiAgICAoU2V4cGxpYjAuU2V4cC50IC0+ICdrKVxuICAgIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuICAgID1cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wNTdfID0gXCJtYXBfaW50Zi5tbC5TeW1tZXRyaWNfZGlmZl9lbGVtZW50LnRcIiBpblxuICAgIGZ1biBfb2Zfa19fMDQzXyBfb2Zfdl9fMDQ0XyAtPiBmdW5jdGlvblxuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNjdfOyBhcmcxX18wNjhfIF0gLT5cbiAgICAgICAgbGV0IHJlczBfXzA2OV8gPSBfb2Zfa19fMDQzXyBhcmcwX18wNjdfXG4gICAgICAgIGFuZCByZXMxX18wNzBfID1cbiAgICAgICAgICBsZXQgc2V4cF9fMDY2XyA9IGFyZzFfXzA2OF8gaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIG1hdGNoIHNleHBfXzA2Nl8gd2l0aFxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gYXRvbV9fMDQ3XyBhcyBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiAtPlxuICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDU3XyBfc2V4cF9fMDQ5X1xuICAgICAgICAgICAgICAgfCBfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpKVxuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIDo6IHNleHBfYXJnc19fMDUwXykgYXNcbiAgICAgICAgICAgICAgX3NleHBfXzA0OV8gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGF0b21fXzA0N18gd2l0aFxuICAgICAgICAgICAgICAgfCBcIkxlZnRcIiBhcyBfdGFnX18wNjNfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2NF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDY1XyA9IF9vZl92X18wNDRfIGFyZzBfXzA2NF8gaW5cbiAgICAgICAgICAgICAgICAgICAgYExlZnQgcmVzMF9fMDY1X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjNfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiUmlnaHRcIiBhcyBfdGFnX18wNjBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA2MV8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDYyXyA9IF9vZl92X18wNDRfIGFyZzBfXzA2MV8gaW5cbiAgICAgICAgICAgICAgICAgICAgYFJpZ2h0IHJlczBfXzA2Ml9cbiAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgX3RhZ19fMDYwX1xuICAgICAgICAgICAgICAgICAgICAgIF9zZXhwX18wNDlfKVxuICAgICAgICAgICAgICAgfCBcIlVuZXF1YWxcIiBhcyBfdGFnX18wNTFfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzA1MF8gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbIGFyZzBfXzA1OF8gXSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzMF9fMDU5XyA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYXJnMF9fMDU4XyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgWyBhcmcwX18wNTJfOyBhcmcxX18wNTNfIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTRfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDUyX1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2Zfdl9fMDQ0XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMwX18wNTRfLCByZXMxX18wNTVfXG4gICAgICAgICAgICAgICAgICAgICAgfCBzZXhwX18wNTZfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNleHBfXzA1Nl9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgYFVuZXF1YWwgcmVzMF9fMDU5X1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNTFfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzA0OF8gLT5cbiAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgIHNleHBfXzA0OF9cbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaCAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgIHNleHBfXzA2Nl9cbiAgICAgICAgaW5cbiAgICAgICAgcmVzMF9fMDY5XywgcmVzMV9fMDcwX1xuICAgICAgfCBzZXhwX18wNzFfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgZXJyb3Jfc291cmNlX18wNTdfIDIgc2V4cF9fMDcxX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdrICd2LlxuICAgICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2Zfa19fMDcyXyBfb2Zfdl9fMDczXyAoYXJnMF9fMDgxXywgYXJnMV9fMDgyXykgLT5cbiAgICAgIGxldCByZXMwX18wODNfID0gX29mX2tfXzA3Ml8gYXJnMF9fMDgxX1xuICAgICAgYW5kIHJlczFfXzA4NF8gPVxuICAgICAgICBtYXRjaCBhcmcxX18wODJfIHdpdGhcbiAgICAgICAgfCBgTGVmdCB2X18wNzRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2Zfdl9fMDczXyB2X18wNzRfIF1cbiAgICAgICAgfCBgUmlnaHQgdl9fMDc1XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IF9vZl92X18wNzNfIHZfXzA3NV8gXVxuICAgICAgICB8IGBVbmVxdWFsIHZfXzA3Nl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5lcXVhbFwiXG4gICAgICAgICAgICA7IChsZXQgYXJnMF9fMDc3XywgYXJnMV9fMDc4XyA9IHZfXzA3Nl8gaW5cbiAgICAgICAgICAgICAgIGxldCByZXMwX18wNzlfID0gX29mX3ZfXzA3M18gYXJnMF9fMDc3X1xuICAgICAgICAgICAgICAgYW5kIHJlczFfXzA4MF8gPSBfb2Zfdl9fMDczXyBhcmcxX18wNzhfIGluXG4gICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wNzlfOyByZXMxX18wODBfIF0pXG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDgzXzsgcmVzMV9fMDg0XyBdXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnayAndi5cbiAgICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzA4NV8gYl9fMDg2X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDg1XywgYl9fMDg2XyB3aXRoXG4gICAgICB8IGBMZWZ0IF9sZWZ0X18wODdfLCBgTGVmdCBfcmlnaHRfXzA4OF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDg3XyBfcmlnaHRfXzA4OF9cbiAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wODlfLCBgUmlnaHQgX3JpZ2h0X18wOTBfIC0+IF9jbXBfX3JpZ2h0IF9sZWZ0X18wODlfIF9yaWdodF9fMDkwX1xuICAgICAgfCBgQm90aCBfbGVmdF9fMDkxXywgYEJvdGggX3JpZ2h0X18wOTJfIC0+XG4gICAgICAgIGxldCB0X18wOTNfLCB0X18wOTRfID0gX2xlZnRfXzA5MV8gaW5cbiAgICAgICAgbGV0IHRfXzA5NV8sIHRfXzA5Nl8gPSBfcmlnaHRfXzA5Ml8gaW5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2xlZnQgdF9fMDkzXyB0X18wOTVfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19yaWdodCB0X18wOTRfIHRfXzA5Nl9cbiAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgOztcblxuICBsZXQgZXF1YWwgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA5N18gYl9fMDk4XyAtPlxuICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wOTdfIGJfXzA5OF9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzA5N18sIGJfXzA5OF8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wOTlfLCBgTGVmdCBfcmlnaHRfXzEwMF8gLT4gX2NtcF9fbGVmdCBfbGVmdF9fMDk5XyBfcmlnaHRfXzEwMF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzEwMV8sIGBSaWdodCBfcmlnaHRfXzEwMl8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzEwMV8gX3JpZ2h0X18xMDJfXG4gICAgICAgIHwgYEJvdGggX2xlZnRfXzEwM18sIGBCb3RoIF9yaWdodF9fMTA0XyAtPlxuICAgICAgICAgIGxldCB0X18xMDVfLCB0X18xMDZfID0gX2xlZnRfXzEwM18gaW5cbiAgICAgICAgICBsZXQgdF9fMTA3XywgdF9fMTA4XyA9IF9yaWdodF9fMTA0XyBpblxuICAgICAgICAgIFN0ZGxpYi4oICYmICkgKF9jbXBfX2xlZnQgdF9fMTA1XyB0X18xMDdfKSAoX2NtcF9fcmlnaHQgdF9fMTA2XyB0X18xMDhfKVxuICAgICAgICB8IHgsIHkgLT4gU3RkbGliLiggPSApIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgID1cbiAgICBmdW4gX29mX2xlZnRfXzEwOV8gX29mX3JpZ2h0X18xMTBfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IHZfXzExMV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyBfb2ZfbGVmdF9fMTA5XyB2X18xMTFfIF1cbiAgICAgIHwgYFJpZ2h0IHZfXzExMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3JpZ2h0X18xMTBfIHZfXzExMl8gXVxuICAgICAgfCBgQm90aCB2X18xMTNfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiXG4gICAgICAgICAgOyAobGV0IGFyZzBfXzExNF8sIGFyZzFfXzExNV8gPSB2X18xMTNfIGluXG4gICAgICAgICAgICAgbGV0IHJlczBfXzExNl8gPSBfb2ZfbGVmdF9fMTA5XyBhcmcwX18xMTRfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzExN18gPSBfb2ZfcmlnaHRfXzExMF8gYXJnMV9fMTE1XyBpblxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzExNl87IHJlczFfXzExN18gXSlcbiAgICAgICAgICBdXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wICopXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29udGludWVcbiAgICB8IFN0b3BcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgQ29udGludWU7IFN0b3AgXSA6IHQgbGlzdClcbiAgbGV0IGVxdWFsID0gKFN0ZGxpYi4oID0gKSA6IHQgLT4gdCAtPiBib29sKVxuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBDb250aW51ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJDb250aW51ZVwiXG4gICAgICB8IFN0b3AgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3RvcFwiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWQgKilcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBGaW5pc2hlZFxuICAgIHwgVW5maW5pc2hlZFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBGaW5pc2hlZDsgVW5maW5pc2hlZCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoU3RkbGliLiggPSApIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkZpbmlzaGVkXCJcbiAgICAgIHwgVW5maW5pc2hlZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmZpbmlzaGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdjbXAgY21wXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgaW52YXJpYW50cyA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc2V0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmVtb3ZlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kX211bHRpIDogKCdrLCAnY21wLCAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IGxpc3QpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gZjooKCd2IG9wdGlvbiAtPiAndiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgdXBkYXRlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gZjooKCd2IG9wdGlvbiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaW5kIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBtZW0gOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sga2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXJpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooKCd2MSAtPiAndjIpW0Bsb2NhbF0pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIG1hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOlxuICAgICAgICAgKChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0XG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZDJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayBrZXkgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9yc1xuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBlcXVhbFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sga2V5IGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ3YsIF8pIHQgLT4gJ3YgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gKCdrIGtleSAqICd2KSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21iaW5lOigoa2V5OidrIGtleSAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooKCd2IC0+ICd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgICAtPiBpbml0OidhY2NcbiAgICAgIC0+IGY6KCgnYWNjIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAgIC0+ICdhY2MgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBsb3dlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2sga2V5IE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IG1pbjonayBrZXlcbiAgICAgIC0+IG1heDonayBrZXlcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgICAtPiAnYWNjIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBudGggOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICdrIGtleSAqICd2XG4gIHZhbCByYW5rIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGludCBvcHRpb24pIGFjY2Vzc19vcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA6IHNpZ1xuICAgIHZhbCBtYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24gQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdrLCAnY21wLCAnayBrZXkgLT4gJ3YgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgbWFwX2tleXNcbiAgICA6ICggJ2syXG4gICAgICAsICdjbXAyXG4gICAgICAsICgnazEsICd2LCAnY21wMSkgdFxuICAgICAgLT4gZjooKCdrMSBrZXkgLT4gJ2syIGtleSlbQGxvY2FsXSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzX2V4blxuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0IC0+IGY6KCgnazEga2V5IC0+ICdrMiBrZXkpW0Bsb2NhbF0pIC0+ICgnazIsICd2LCAnY21wMikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIHRyYW5zcG9zZV9rZXlzXG4gICAgOiAoICdrMVxuICAgICAgLCAnY21wMVxuICAgICAgLCAoICdrMlxuICAgICAgICAsICdjbXAyXG4gICAgICAgICwgKCdrMSwgKCdrMiwgJ2EsICdjbXAyKSB0LCAnY21wMSkgdCAtPiAoJ2syLCAoJ2sxLCAnYSwgJ2NtcDEpIHQsICdjbXAyKSB0IClcbiAgICAgICAgICBjcmVhdGVfb3B0aW9ucyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbGVuOmludCAtPiBmOigoaW50IC0+ICdrIGtleSAqICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3RcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigoJ3YyIC0+ICd2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBmOigoJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXVxuICAgICAgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YxKSBTZXF1ZW5jZS50XG4gICAgICAtPiBpbml0Oid2MlxuICAgICAgLT4gZjooKCd2MiAtPiAndjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9yZWR1Y2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gZjooKCd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3RcbiAgICAgIC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgaXRlcmk6KChmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pdGVyaV9leG5cbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooKGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZSAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWVcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAnYSBjbXBcbiAgdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdFxuICAgIDogIChtb2R1bGUgQ29tcGFyZV9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBpbnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKEhhc2guc3RhdGUgLT4gJ3YgLT4gSGFzaC5zdGF0ZSlcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXAgPSBzaWdcbiAgKCoqIFtNYXBdIGlzIGEgZnVuY3Rpb25hbCBkYXRhIHN0cnVjdHVyZSAoYmFsYW5jZWQgYmluYXJ5IHRyZWUpIGltcGxlbWVudGluZyBmaW5pdGUgbWFwc1xuICAgICAgb3ZlciBhIHRvdGFsbHktb3JkZXJlZCBkb21haW4sIGNhbGxlZCBhIFwia2V5XCIuICopXG5cbiAgdHlwZSAoISdrZXksICshJ3ZhbHVlLCAhJ2NtcCkgdFxuXG4gIG1vZHVsZSBPcl9kdXBsaWNhdGUgPSBPcl9kdXBsaWNhdGVcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbiAgbW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBVbmZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2VudW1lcmF0ZV9saWIuRW51bWVyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgICgqKiBNYXBzIFtDb250aW51ZV0gdG8gW0ZpbmlzaGVkXSBhbmQgW1N0b3BdIHRvIFtVbmZpbmlzaGVkXS4gKilcbiAgICB2YWwgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0XG5cbiAgICAoKiogTWFwcyBbRmluaXNoZWRdIHRvIFtDb250aW51ZV0gYW5kIFtVbmZpbmlzaGVkXSB0byBbU3RvcF0uICopXG4gICAgdmFsIHRvX2NvbnRpbnVlX29yX3N0b3AgOiB0IC0+IENvbnRpbnVlX29yX3N0b3AudFxuICBlbmRcblxuICBtb2R1bGUgTWVyZ2VfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgICAgWyBgTGVmdCBvZiAnbGVmdFxuICAgICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBpbnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGludFxuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gYm9vbClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGJvb2xcblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnbGVmdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3JpZ2h0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgbGVmdCA6ICgnbGVmdCwgXykgdCAtPiAnbGVmdCBvcHRpb25cbiAgICB2YWwgcmlnaHQgOiAoXywgJ3JpZ2h0KSB0IC0+ICdyaWdodCBvcHRpb25cbiAgICB2YWwgbGVmdF92YWx1ZSA6ICgnbGVmdCwgXykgdCAtPiBkZWZhdWx0OidsZWZ0IC0+ICdsZWZ0XG4gICAgdmFsIHJpZ2h0X3ZhbHVlIDogKF8sICdyaWdodCkgdCAtPiBkZWZhdWx0OidyaWdodCAtPiAncmlnaHRcblxuICAgIHZhbCB2YWx1ZXNcbiAgICAgIDogICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBsZWZ0X2RlZmF1bHQ6J2xlZnRcbiAgICAgIC0+IHJpZ2h0X2RlZmF1bHQ6J3JpZ2h0XG4gICAgICAtPiAnbGVmdCAqICdyaWdodFxuICBlbmRcblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0IGlmIHRoZSBpbnZhcmlhbnRzIG9mIHRoZSBpbnRlcm5hbCBBVkwgc2VhcmNoIHRyZWUgaG9sZC4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Yy5cbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsIF8sICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogVGhlIGVtcHR5IG1hcC4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQSBtYXAgd2l0aCBvbmUgKGtleSwgZGF0YSkgcGFpci4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmV0dXJuaW5nIGFuIGVycm9yIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LiAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiBUaGUgYWNjdW11bGF0b3IgaXMgcGVyLWtleS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgIyBsZXQgbWFwID0gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImFcIiwgMTsgXCJhXCIsIDEwOyBcImJcIiwgMjsgXCJiXCIsIDIwOyBcImJcIiwgMjAwIF1cbiAgICAgICAgICAgICAgICAgICAgICB+aW5pdDpJbnQuU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgfmY6U2V0LmFkZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHJpbnRfcyBbJXNleHAgKG1hcCA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTs7XG4gICAgICAgICgoYSAoMSAxMCkpIChiICgyIDIwIDIwMCkpKVxuICAgICAgICAtIDogdW5pdCA9ICgpXG4gICAgICBdfVxuICAqKVxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCgnYyAtPiAnYiAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaXRlcmkgfml0ZXJpXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0XSwgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiB0YWtpbmcgYSBjb25jcmV0ZVxuICAgICAgZGF0YSBzdHJ1Y3R1cmUsIGl0IHRha2VzIGFuIGl0ZXJhdGlvbiBmdW5jdGlvbi4gIEZvciBpbnN0YW5jZSwgdG8gY29udmVydCBhIHN0cmluZyB0YWJsZVxuICAgICAgaW50byBhIG1hcDogW29mX2l0ZXJpIChtb2R1bGUgU3RyaW5nKSB+ZjooSGFzaHRibC5pdGVyaSB0YWJsZSldLiAgSXQgaXMgZmFzdGVyIHRoYW5cbiAgICAgIGFkZGluZyB0aGUgZWxlbWVudHMgb25lIGJ5IG9uZS4gKilcbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KChmOigoa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOigoZjooKGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYSBzb3J0ZWQgYXJyYXkgb2Yga2V5LWRhdGEgcGFpcnMuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlIHNvcnRlZFxuICAgICAgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3IgZGVzY2VuZGluZyBvcmRlciksIGFzIGdpdmVuIGJ5IHRoZSByZWxldmFudCBjb21wYXJhdG9yLCBhbmRcbiAgICAgIG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlIGtleXMuIElmIGVpdGhlciBvZiB0aGVzZSBjb25kaXRpb25zIGRvZXMgbm90IGhvbGQsXG4gICAgICBhbiBlcnJvciBpcyByZXR1cm5lZC4gICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2Zfc29ydGVkX2FycmF5XSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgbWFwIHdpdGggYnJva2VuIGludmFyaWFudHMgd2hlbiBhblxuICAgICAgW0Vycm9yXSB3b3VsZCBoYXZlIGJlZW4gcmV0dXJuZWQuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooKCdjIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfcmVkdWNlIGMgc2VxIH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X3JlZHVjZSBjIChTZXF1ZW5jZS50b19saXN0IHNlcSkgfmZdXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gZjooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ29uc3RydWN0cyBhIG1hcCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIHdoZXJlIFtnZXRfa2V5XSBleHRyYWN0cyBhIGtleSBmcm9tIGEgdmFsdWUuXG4gICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5XG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sgXVxuXG4gICgqKiBMaWtlIFtvZl9saXN0X3dpdGhfa2V5XTsgcmV0dXJucyBbRXJyb3JdIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9leG5cbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogTGlrZSBbb2ZfbGlzdF93aXRoX2tleV07IHByb2R1Y2VzIGxpc3RzIG9mIGFsbCB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2gga2V5LiAqKVxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+IGY6KCgndiBvcHRpb24gLT4gJ3Ygb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cblxuICAoKiogUmV0dXJucyBbU29tZSB2YWx1ZV0gYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgW05vbmVdIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIHZhbHVlIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIHJhaXNpbmcgW1N0ZGxpYi5Ob3RfZm91bmRdIG9yIFtOb3RfZm91bmRfc11cbiAgICAgIGlmIG5vbmUgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYW55IGJpbmRpbmcgZm9yIHRoZSBrZXkgaW4gcXVlc3Rpb24gcmVtb3ZlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbbWVtIG1hcCBrZXldIHRlc3RzIHdoZXRoZXIgW21hcF0gY29udGFpbnMgYSBiaW5kaW5nIGZvciBba2V5XS4gKilcbiAgdmFsIG1lbSA6ICgnaywgXywgJ2NtcCkgdCAtPiAnayAtPiBib29sXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOigoJ2sgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIHVudGlsIHRoZSBmaXJzdCB0aW1lIFtmXSByZXR1cm5zIFtTdG9wXS4gSWYgW2ZdIHJldHVybnMgW1N0b3BdLCB0aGUgZmluYWxcbiAgICAgIHJlc3VsdCBpcyBbVW5maW5pc2hlZF0uIE90aGVyd2lzZSwgdGhlIGZpbmFsIHJlc3VsdCBpcyBbRmluaXNoZWRdLiAqKVxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICAoKiogSXRlcmF0ZXMgdHdvIG1hcHMgc2lkZSBieSBzaWRlLiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIE8oTSArIE4pLiAgSWYgdHdvXG4gICAgICBpbnB1dHMgYXJlIFtbKDAsIGEpOyAoMSwgYSldXSBhbmQgW1soMSwgYik7ICgyLCBiKV1dLCBbZl0gd2lsbCBiZSBjYWxsZWQgd2l0aCBbWygwLFxuICAgICAgYExlZnQgYSk7ICgxLCBgQm90aCAoYSwgYikpOyAoMiwgYFJpZ2h0IGIpXV0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCgndjEgLT4gJ3YyKVtAbG9jYWxdKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFttYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCgnazEgLT4gJ2syKVtAbG9jYWxdKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBdXG5cbiAgKCoqIExpa2UgW21hcF9rZXlzXSwgYnV0IHJhaXNlcyBvbiBkdXBsaWNhdGUga2V5LiAqKVxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAgKCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOigoJ2sxIC0+ICdrMilbQGxvY2FsXSlcbiAgICAtPiAoJ2syLCAndiwgJ2NtcDIpIHRcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XS4gKilcbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0sIHVudGlsIHRoZSBmaXJzdFxuICAgICAgdGltZSB0aGF0IFtmXSByZXR1cm5zIFtTdG9wIF9dLiBJZiBbZl0gcmV0dXJucyBbU3RvcCBmaW5hbF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJuc1xuICAgICAgaW1tZWRpYXRlbHkgd2l0aCB0aGUgdmFsdWUgW2ZpbmFsXS4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIGFuZCB0aGUgZmluYWxcbiAgICAgIGNhbGwgdG8gW2ZdIHJldHVybnMgW0NvbnRpbnVlIGxhc3RdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgW2ZpbmlzaCBsYXN0XS4gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4pXG4gICAgICB0aW1lLlxuXG4gICAgICBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbcGFydGl0aW9uX3RmXSBhbmQgW3BhcnRpdGlvbmlfdGZdIGtlZXAgYSBsb3RcbiAgICAgIG9mIHNoYXJpbmcgYmV0d2VlbiB0aGVpciByZXN1bHQgYW5kIHRoZSBvcmlnaW5hbCBtYXAuICBEcm9wcGluZyBvciBrZWVwaW5nIGEgcnVuIG9mXG4gICAgICBba10gY29uc2VjdXRpdmUgZWxlbWVudHMgY29zdHMgW08obG9nKGspKV0gZXh0cmEgbWVtb3J5LiBLZWVwaW5nIHRoZSBlbnRpcmUgbWFwXG4gICAgICBjb3N0cyBubyBleHRyYSBtZW1vcnkgYXQgYWxsOiBbZmlsdGVyIH5mOihmdW4gXyAtPiB0cnVlKV0gcmV0dXJucyB0aGUgb3JpZ2luYWwgbWFwLlxuICAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgnayAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlciA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoJ3YxIC0+ICd2MiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogTGlrZSBbZmlsdGVyX21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhc1xuICAgICAgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqXG4gICAgIHtbXG4gICAgICAgcGFydGl0aW9uaV90ZiB0IH5mXG4gICAgICAgPVxuICAgICAgIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICBpZiBmIH5rZXkgfmRhdGFcbiAgICAgICAgIHRoZW4gRmlyc3QgZGF0YVxuICAgICAgICAgZWxzZSBTZWNvbmQgZGF0YSlcbiAgICAgXX0gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUHJvZHVjZXMgW09rXSBvZiBhIG1hcCBpbmNsdWRpbmcgYWxsIGtleXMgaWYgYWxsIGRhdGEgaXMgW09rXSwgb3IgYW4gW0Vycm9yXVxuICAgICAgaW5jbHVkaW5nIGFsbCBlcnJvcnMgb3RoZXJ3aXNlLiAqKVxuICB2YWwgY29tYmluZV9lcnJvcnMgOiAoJ2ssICd2IE9yX2Vycm9yLnQsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFJldHVybnMgYSB0b3RhbCBvcmRlcmluZyBiZXR3ZWVuIG1hcHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHRvdGFsIG9yZGVyaW5nIHVzZWRcbiAgICAgIHRvIGNvbXBhcmUgZGF0YSBhc3NvY2lhdGVkIHdpdGggZXF1YWwga2V5cyBpbiB0aGUgdHdvIG1hcHMuICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIG1hcHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgbSkuY29tcGFyZV0gb2YgdGhlIG1hcCBbbV0gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnayBIYXNoLmZvbGRlciAtPiAndiBIYXNoLmZvbGRlciAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCBjbXAgbTEgbTJdIHRlc3RzIHdoZXRoZXIgdGhlIG1hcHMgW20xXSBhbmQgW20yXSBhcmUgZXF1YWwsIHRoYXQgaXMsIGNvbnRhaW5cbiAgICAgIHRoZSBzYW1lIGtleXMgYW5kIGFzc29jaWF0ZSBlYWNoIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlLiAgW2NtcF0gaXMgdGhlIGVxdWFsaXR5XG4gICAgICBwcmVkaWNhdGUgdXNlZCB0byBjb21wYXJlIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzLiAqKVxuICB2YWwgZXF1YWwgOiAoJ3YgLT4gJ3YgLT4gYm9vbCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGtleXMgaW4gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIGtleXMgOiAoJ2ssIF8sIF8pIHQgLT4gJ2sgbGlzdFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZGF0YSBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgKCoqIENyZWF0ZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBmcm9tIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF0gKCoqIGRlZmF1bHQgaXMgW2BJbmNyZWFzaW5nXSAqKVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sgKiAndikgbGlzdFxuXG4gICgqKiB7MiBBZGRpdGlvbmFsIG9wZXJhdGlvbnMgb24gbWFwc30gKilcblxuICAoKiogTWVyZ2VzIHR3byBtYXBzLiBUaGUgcnVudGltZSBpcyBPKGxlbmd0aCh0MSkgKyBsZW5ndGgodDIpKS4gWW91IHNob3VsZG4ndCB1c2UgdGhpc1xuICAgICAgZnVuY3Rpb24gdG8gbWVyZ2UgYSBsaXN0IG9mIG1hcHM7IGNvbnNpZGVyIHVzaW5nIFttZXJnZV9za2V3ZWRdIGluc3RlYWQuICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIHRcblxuICAoKiogQSBzcGVjaWFsIGNhc2Ugb2YgW21lcmdlXSwgW21lcmdlX3NrZXdlZCB0MSB0Ml0gaXMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlXG4gICAgICBiaW5kaW5ncyBvZiBbdDFdIGFuZCBbdDJdLiBCaW5kaW5ncyB0aGF0IGFwcGVhciBpbiBib3RoIFt0MV0gYW5kIFt0Ml0gYXJlXG4gICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIHRoZSBbY29tYmluZV0gZnVuY3Rpb24uIEluIGEgY2FsbFxuICAgICAgW2NvbWJpbmUgfmtleSB2MSB2Ml0sIHRoZSB2YWx1ZSBbdjFdIGNvbWVzIGZyb20gW3QxXSBhbmQgW3YyXSBmcm9tIFt0Ml0uXG5cbiAgICAgIFRoZSBydW50aW1lIG9mIFttZXJnZV9za2V3ZWRdIGlzIFtPKG1pbihsMSwgbDIpICogbG9nKG1heChsMSwgbDIpKSldLCB3aGVyZSBbbDFdIGlzXG4gICAgICB0aGUgbGVuZ3RoIG9mIFt0MV0gYW5kIFtsMl0gdGhlIGxlbmd0aCBvZiBbdDJdLiBUaGlzIGlzIGxpa2VseSB0byBiZSBmYXN0ZXIgdGhhblxuICAgICAgW21lcmdlXSB3aGVuIG9uZSBvZiB0aGUgbWFwcyBpcyBhIGxvdCBzbWFsbGVyLCBvciB3aGVuIHlvdSBtZXJnZSBhIGxpc3Qgb2YgbWFwcy4gKilcbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tYmluZTooKGtleTonayAtPiAndiAtPiAndiAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigoJ3YgLT4gJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIFttaW5fZWx0IG1hcF0gcmV0dXJucyBbU29tZSAoa2V5LCBkYXRhKV0gcGFpciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW5pbXVtIGtleSBpblxuICAgICAgW21hcF0sIG9yIFtOb25lXSBpZiBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrICogJ3ZcblxuICAoKiogW21heF9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1heGltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIFttYXBdIGlzIGVtcHR5LiAqKVxuICB2YWwgbWF4X2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBTd2FwIHRoZSBpbm5lciBhbmQgb3V0ZXIga2V5cyBvZiBuZXN0ZWQgbWFwcy4gSWYgW3RyYW5zcG9zZV9rZXlzIG0gYSA9IGJdLCB0aGVuXG4gICAgICBbZmluZF9leG4gKGZpbmRfZXhuIGEgaSkgaiA9IGZpbmRfZXhuIChmaW5kX2V4biBiIGopIGldLiAqKVxuICB2YWwgdHJhbnNwb3NlX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnY21wMikgdCwgJ2NtcDEpIHRcbiAgICAtPiAoJ2syLCAoJ2sxLCAndiwgJ2NtcDEpIHQsICdjbXAyKSB0XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuICB2YWwgY291bnRpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgdGhhdCBhcmUgbGVzcyBvciBlcXVhbCB0byBba2V5XSBhbmQgYVxuICAgICAgbWFwIG9mIGtleXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFtrZXldLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG91dHB1dCBtYXBzLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlXG4gICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgbWFwcy4gKilcbiAgdmFsIHNwbGl0X2xlX2d0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbHRfZ2UgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0gYW5kIGEgbWFwIG9mXG4gICAgICBrZXlzIHRoYXQgYXJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRfbHRfZ2UgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFthcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnRdIHJldHVybnMgW2BPayBtYXBdIHdoZXJlIFttYXBdIGNvbnRhaW5zIGFsbCB0aGVcbiAgICAgIFsoa2V5LCB2YWx1ZSldIHBhaXJzIGZyb20gdGhlIHR3byBpbnB1dCBtYXBzIGlmIGFsbCB0aGUga2V5cyBmcm9tIFtsb3dlcl9wYXJ0XSBhcmVcbiAgICAgIGxlc3MgdGhhbiBhbGwgdGhlIGtleXMgZnJvbSBbdXBwZXJfcGFydF0uICBPdGhlcndpc2UgaXQgcmV0dXJuc1xuICAgICAgW2BPdmVybGFwcGluZ19rZXlfcmFuZ2VzXS5cblxuICAgICAgUnVudGltZSBpcyBPKGxvZyBuKSB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBsYXJnZXIgaW5wdXQgbWFwLiAgVGhpcyBjYW4gYmVcbiAgICAgIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gW01hcC5tZXJnZV0gb3IgcmVwZWF0ZWQgW01hcC5hZGRdLlxuXG4gICAgICB7W1xuICAgICAgICBhc3NlcnQgKG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgIHwgYE9rIHdob2xlX21hcCAtPlxuICAgICAgICAgICAgTWFwLnRvX2FsaXN0IHdob2xlX21hcFxuICAgICAgICAgICAgPSBMaXN0LmFwcGVuZCAodG9fYWxpc3QgbG93ZXJfcGFydCkgKHRvX2FsaXN0IHVwcGVyX3BhcnQpXG4gICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiB0cnVlKTtcbiAgICAgIF19ICopXG4gIHZhbCBhcHBlbmRcbiAgICA6ICBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gICgqKiBbc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXSByZXR1cm5zIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSBlbnRyaWVzIGZyb21cbiAgICAgIFt0XSB3aG9zZSBrZXlzIGxpZSBpbnNpZGUgdGhlIGludGVydmFsIGluZGljYXRlZCBieSBbfmxvd2VyX2JvdW5kXSBhbmRcbiAgICAgIFt+dXBwZXJfYm91bmRdLiAgSWYgdGhpcyBpbnRlcnZhbCBpcyBlbXB0eSwgYW4gZW1wdHkgbWFwIGlzIHJldHVybmVkLlxuXG4gICAgICBSdW50aW1lIGlzIE8obSArIGxvZyBuKSwgd2hlcmUgbiBpcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgbWFwIGFuZCBtIGlzIHRoZSBzaXplIG9mXG4gICAgICB0aGUgb3V0cHV0IG1hcC4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZVxuICAgICAgb3V0cHV0IG1hcC4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmZdIGZvbGRzIFtmXSAod2l0aCBpbml0aWFsIHZhbHVlIFt+aW5pdF0pXG4gICAgICBvdmVyIGFsbCBrZXlzIChhbmQgdGhlaXIgYXNzb2NpYXRlZCB2YWx1ZXMpIHRoYXQgYXJlIGluIHRoZSByYW5nZSBbW21pbiwgbWF4XV1cbiAgICAgIChpbmNsdXNpdmUpLiAgKilcbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IG1pbjona1xuICAgIC0+IG1heDona1xuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBbcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXhdIHJldHVybnMgYW4gYXNzb2NpYXRpdmUgbGlzdCBvZiB0aGUgZWxlbWVudHMgd2hvc2Uga2V5c1xuICAgICAgbGllIGluIFtbbWluLCBtYXhdXSAoaW5jbHVzaXZlKSwgd2l0aCB0aGUgc21hbGxlc3Qga2V5IGJlaW5nIGF0IHRoZSBoZWFkIG9mIHRoZVxuICAgICAgbGlzdC4gKilcbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogKCdrLCAndiwgJ2NtcCkgdCAtPiBtaW46J2sgLT4gbWF4OidrIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIFtjbG9zZXN0X2tleSB0IGRpciBrXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XSB3aXRoIFtrZXldIGNsb3Nlc3QgdG9cbiAgICAgIFtrXSB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4gaW5lcXVhbGl0eSBib3VuZC5cblxuICAgICAgRm9yIGV4YW1wbGUsIFtjbG9zZXN0X2tleSB0IGBMZXNzX3RoYW4ga10gd291bGQgYmUgdGhlIHBhaXIgd2l0aCB0aGUgY2xvc2VzdCBrZXkgdG9cbiAgICAgIFtrXSB3aGVyZSBba2V5IDwga10uXG5cbiAgICAgIFt0b19zZXF1ZW5jZV0gY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBzYW1lIHJlc3VsdHMgYXMgW2Nsb3Nlc3Rfa2V5XS4gIEl0IGlzIGxlc3NcbiAgICAgIGVmZmljaWVudCBmb3IgaW5kaXZpZHVhbCBsb29rdXBzIGJ1dCBtb3JlIGVmZmljaWVudCBmb3IgZmluZGluZyBtYW55IGVsZW1lbnRzIHN0YXJ0aW5nXG4gICAgICBhdCBzb21lIHZhbHVlLiAqKVxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdrXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbbnRoIHQgbl0gZmluZHMgdGhlIChrZXksIHZhbHVlKSBwYWlyIG9mIHJhbmsgbiAoaS5lLiwgc3VjaCB0aGF0IHRoZXJlIGFyZSBleGFjdGx5IG5cbiAgICAgIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBmb3VuZCBrZXkpLCBpZiBvbmUgZXhpc3RzLiAgTyhsb2cobGVuZ3RoIHQpICsgbikgdGltZS4gKilcbiAgdmFsIG50aCA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgbnRoX2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gaW50IC0+ICdrICogJ3ZcblxuICAoKiogW3JhbmsgdCBrXSBJZiBba10gaXMgaW4gW3RdLCByZXR1cm5zIHRoZSBudW1iZXIgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tdIGluXG4gICAgICBbdF0sIGFuZCBbTm9uZV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgcmFuayA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gaW50IG9wdGlvblxuXG5cblxuICAoKiogW3RvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdF1cbiAgICAgIGdpdmVzIGEgc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGJldHdlZW4gW2tleXNfbGVzc19vcl9lcXVhbF90b10gYW5kXG4gICAgICBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBpbmNsdXNpdmUsIHByZXNlbnRlZCBpbiBbb3JkZXJdLiAgSWZcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dLCB0aGUgc2VxdWVuY2UgaXNcbiAgICAgIGVtcHR5LlxuXG4gICAgICBXaGVuIG5laXRoZXIgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b10gbm9yIFtrZXlzX2xlc3Nfb3JfZXF1YWxfdG9dIGFyZVxuICAgICAgcHJvdmlkZWQsIHRoZSBjb3N0IGlzIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSB0byBwcm9kdWNlXG4gICAgICBlYWNoIGVsZW1lbnQuIElmIGVpdGhlciBpcyBwcm92aWRlZCAoYW5kIGlzIHVzZWQgYnkgdGhlIG9yZGVyIHBhcmFtZXRlclxuICAgICAgcHJvdmlkZWQpLCB0aGVuIHRoZSB0aGUgY29zdCBpcyBPKG4pIHVwIGZyb250LCBhbmQgYW1vcnRpemVkIE8oMSkgdG9cbiAgICAgIHByb2R1Y2UgZWFjaCBlbGVtZW50LiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2tcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgd2hpY2ggZWx0XSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIGluIFt0XVxuICAgICAgc3BlY2lmaWVkIGJ5IFtjb21wYXJlXSBhbmQgW3doaWNoXSwgaWYgb25lIGV4aXN0cy5cblxuICAgICAgW3RdIG11c3QgYmUgc29ydGVkIGluIGluY3JlYXNpbmcgb3JkZXIgYWNjb3JkaW5nIHRvIFtjb21wYXJlXSwgd2hlcmUgW2NvbXBhcmVdIGFuZFxuICAgICAgW2VsdF0gZGl2aWRlIFt0XSBpbnRvIHRocmVlIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgIDwgZWx0ICB8ICA9IGVsdCAgfCAgPiBlbHQgIHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSByZXR1cm5zIGFuIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieVxuICAgICAgW3doaWNoXS4gIFNlZSB0aGUgZGlhZ3JhbSBiZWxvdyBuZXh0IHRvIHRoZSBbd2hpY2hdIHZhcmlhbnRzLlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbY29tcGFyZV0gb3JkZXJzIFt0XSwgYW5kIGJlaGF2aW9yIGlzXG4gICAgICB1bnNwZWNpZmllZCBpZiBbY29tcGFyZV0gZG9lc24ndCBvcmRlciBbdF0uICBCZWhhdmlvciBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmXG4gICAgICBbY29tcGFyZV0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgWyhrZXksIHZhbHVlKV0gcGFpciBvbiB0aGUgYm91bmRhcnkgb2YgdGhlXG4gICAgICBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZVxuICAgICAgbGVmdCBzZWdtZW50LCB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuXG4gICAgICBJdCByZXR1cm5zIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYm91bmQgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgdHJhdmVyc2FscyB0byByZWNvbnN0cnVjdCBhIG1hcCB3aXRoaW4gYW4gYXBwbGljYXRpdmUuIFVzZXNcbiAgICAgIFtMYXp5X2FwcGxpY2F0aXZlXSBzbyB0aGF0IHRoZSBtYXAgY2FuIGJlIHRyYXZlcnNlZCB3aXRoaW4gdGhlIGFwcGxpY2F0aXZlLCByYXRoZXJcbiAgICAgIHRoYW4gbmVlZGluZyB0byBiZSB0cmF2ZXJzZWQgYWxsIGF0IG9uY2UsIG91dHNpZGUgdGhlIGFwcGxpY2F0aXZlLiAqKVxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgOiBzaWdcbiAgICB2YWwgbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgQS50KVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgQS50XG5cbiAgICB2YWwgZmlsdGVyX21hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcbiAgZW5kXG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IGludCBNYXAuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF9tYXAgPSAoU3RyaW5nLnQsIGludCwgU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgTWFwLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFtTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3NdXG4gICAgICAtLSBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLlxuXG4gICAgICBJbiBhZGRpdGlvbiwgd2hlbiB1c2luZyBbQEBkZXJpdmluZ10sIHRoZSByZXF1aXJlbWVudHMgb24gdGhlIGtleSBtb2R1bGUgYXJlIG9ubHlcbiAgICAgIHRob3NlIG5lZWRlZCB0byBzYXRpc2Z5IHdoYXQgeW91IGFyZSB0cnlpbmcgdG8gZGVyaXZlIG9uIHRoZSBtYXAgaXRzZWxmLiBTYXkgeW91XG4gICAgICB3cml0ZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSB0ID0gaW50IE1hcC5NKFgpLnQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIF19XG5cbiAgICAgIHRoZW4gdGhpcyB3aWxsIGJlIHdlbGwgdHlwZWQgZXhhY3RseSBpZiBbWF0gY29udGFpbnMgYXQgbGVhc3Q6XG4gICAgICAtIGEgdHlwZSBbdF0gd2l0aCBubyBwYXJhbWV0ZXJzXG4gICAgICAtIGEgY29tcGFyYXRvciB3aXRuZXNzXG4gICAgICAtIGEgW2hhc2hfZm9sZF90XSBmdW5jdGlvbiB3aXRoIHRoZSByaWdodCB0eXBlICopXG4gIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgna2V5LCAndmFsdWUsICdjbXApIHQgOj0gKCdrZXksICd2YWx1ZSwgJ2NtcCkgdFxuXG4gICgqKiBbVXNpbmdfY29tcGFyYXRvcl0gaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW01hcF0sIGV4Y2VwdCB0aGVcbiAgICAgIGZ1bmN0aW9ucyB0YWtlIGEgW35jb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XSwgd2hlcmVhcyB0aGUgZnVuY3Rpb25zIGF0IHRoZVxuICAgICAgdG9wbGV2ZWwgb2YgW01hcF0gdGFrZSBhIFsoJ2ssICdjbXApIGNvbXBhcmF0b3JdLiAqKVxuICBtb2R1bGUgVXNpbmdfY29tcGFyYXRvciA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnaywgKyd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnayAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgICAgLT4gU2V4cC50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgdHlwZSAoKydrLCArJ3YsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIHZhbCBzZXhwX29mX3RcbiAgICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCd2IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2spXG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAgIC0+IFNleHAudFxuICAgICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8sIF8pIHRcblxuICAgICAgKCoqIFtCdWlsZF9pbmNyZWFzaW5nXSBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBtYXAgaW5jcmVtZW50YWxseSBmcm9tIGFcbiAgICAgICAgICBzZXF1ZW5jZSB0aGF0IGlzIGtub3duIHRvIGJlIGluY3JlYXNpbmcuXG5cbiAgICAgICAgICBUaGUgdG90YWwgdGltZSBjb21wbGV4aXR5IG9mIGNvbnN0cnVjdGluZyBhIG1hcCB0aGlzIHdheSBpcyBPKG4pLCB3aGljaCBpcyBtb3JlXG4gICAgICAgICAgZWZmaWNpZW50IHRoYW4gdXNpbmcgW01hcC5hZGRdIGJ5IGEgbG9nYXJpdGhtaWMgZmFjdG9yLlxuXG4gICAgICAgICAgVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBkdWFsIG9mIFt0b19zZXF1ZW5jZV0sIGJ1dCB3ZSBkb24ndCBoYXZlXG4gICAgICAgICAgYW4gZXF1YWxseSBuZWF0IGlkaW9tIGZvciB0aGUgZHVhbHMgb2Ygc2VxdWVuY2VzIChbb2Zfc2VxdWVuY2VdIGlzIG11Y2ggbGVzc1xuICAgICAgICAgIGdlbmVyYWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgc2VxdWVuY2UgdG8gYmUgcHJvZHVjZWQgYXN5bmNocm9ub3VzbHkpLiAqKVxuICAgICAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB0eXBlICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgdmFsIGVtcHR5IDogKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IG9mIFthZGRfZXhuXSBpcyBhbW9ydGl6ZWQgY29uc3RhbnQtdGltZSAoaWYgW3RdIGlzIHVzZWRcbiAgICAgICAgICAgIGxpbmVhcmx5KSwgd2l0aCBhIHdvcnN0LWNhc2UgTyhsb2cobikpIHRpbWUuICopXG4gICAgICAgIHZhbCBhZGRfZXhuXG4gICAgICAgICAgOiAgKCdrLCAndiwgJ3cpIHRcbiAgICAgICAgICAtPiBjb21wYXJhdG9yOignaywgJ3cpIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+IGtleTona1xuICAgICAgICAgIC0+IGRhdGE6J3ZcbiAgICAgICAgICAtPiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgaXMgTyhsb2cobikpLiAqKVxuICAgICAgICB2YWwgdG9fdHJlZSA6ICgnaywgJ3YsICd3KSB0IC0+ICgnaywgJ3YsICd3KSB0cmVlXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIE5hbWVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzZXQgOiAnYVxuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5HZW5lcmljXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFthY2Nlc3Nfb3B0aW9uc10gdHlwZSBpcyB1c2VkIHRvIG1ha2UgW0FjY2Vzc29yc19nZW5lcmljXSBmbGV4aWJsZSBhcyB0byB3aGV0aGVyXG4gICAgICBhIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgcGFzc2VkIHRvIGNlcnRhaW4gZnVuY3Rpb25zLiAqKVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGFjY2Vzc19vcHRpb25zXG5cbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldFxuICAgICAgOiAoICdhXG4gICAgICAgICwgJ2NtcFxuICAgICAgICAsICgnYSwgJ2NtcCkgdCBOYW1lZC50IC0+IG9mXzooJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogKCAnYVxuICAgICAgICAsICdjbXBcbiAgICAgICAgLCAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiAoJ2EsICdjbXApIHQgTmFtZWQudCAtPiB1bml0IE9yX2Vycm9yLnQgKVxuICAgICAgICAgIGFjY2Vzc19vcHRpb25zXG4gIGVuZFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYSBlbHQgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6XG4gICAgICAgICAgICgoWyBgTGVmdCBvZiAnYSBlbHQgfCBgUmlnaHQgb2YgJ2EgZWx0IHwgYEJvdGggb2YgJ2EgZWx0ICogJ2EgZWx0IF0gLT4gdW5pdClcbiAgICAgICAgICAgIFtAbG9jYWxdKVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG5cbiAgdmFsIGVsZW1lbnRzIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogJ2EgZWx0IG9wdGlvbiAqICgnYSwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2xlX2d0XG4gICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzcGxpdF9sdF9nZVxuICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBlcXVpdjooKCdhIGVsdCAtPiAnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIGVsdFxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgICAtPiAna2V5XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCgnYSBlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSBlbHQsICdhIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCwgJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXAsICdhIGVsdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NlcXVlbmNlIDogKCdhLCAnY21wLCAnYSBlbHQgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOigoaW50IC0+ICdhIGVsdClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXywgJ2EgZWx0IGxpc3QgLT4gJ2EgZWx0IGxpc3QpIGNyZWF0ZV9vcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQpW0Bsb2NhbF0pIC0+ICgnYiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogKCAnYlxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgXykgc2V0IC0+IGY6KCgnYSAtPiAnYiBlbHQgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2IsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wIGNtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgJ2VsdCB0XG4gIHR5cGUgJ2VsdCB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdCA6PSAnZWx0IHRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHRyZWUgOj0gJ2VsdCB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3QgOiAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCAnY21wKSB0IC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2VsdCwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+ICgnZWx0LCAnY21wKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGNvbXBhcmVfbV9fdCA6IChtb2R1bGUgQ29tcGFyZV9tKSAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiAoJ2VsdCwgJ2NtcCkgdCAtPiBpbnRcbiAgdmFsIGVxdWFsX21fX3QgOiAobW9kdWxlIEVxdWFsX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGJvb2xcblxuICB2YWwgaGFzaF9mb2xkX21fX3RcbiAgICA6ICAobW9kdWxlIEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gJ2VsdClcbiAgICAtPiBIYXNoLnN0YXRlXG4gICAgLT4gKCdlbHQsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5cbiAgdmFsIGhhc2hfbV9fdCA6IChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KSAtPiAoJ2VsdCwgXykgdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgKCoqIFNldHMgYmFzZWQgb24geyFDb21wYXJhdG9yLlN9LlxuXG4gICAgICBDcmVhdG9ycyByZXF1aXJlIGEgY29tcGFyYXRvciBhcmd1bWVudCB0byBiZSBwYXNzZWQgaW4sIHdoZXJlYXMgYWNjZXNzb3JzIHVzZSB0aGVcbiAgICAgIGNvbXBhcmF0b3IgcHJvdmlkZWQgYnkgdGhlIGlucHV0IHNldC4gKilcblxuICAoKiogVGhlIHR5cGUgb2YgYSBzZXQuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCwgYW5kXG4gICAgICB0aGUgc2Vjb25kIGlkZW50aWZpZXMgdGhlIGNvbXBhcmF0b3IsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdGhhdFxuICAgICAgaXMgdXNlZCBmb3Igb3JkZXJpbmcgZWxlbWVudHMgaW4gdGhpcyBzZXQuICBNYW55IG9wZXJhdGlvbnMgKGUuZy4sIHshdW5pb259KSxcbiAgICAgIHJlcXVpcmUgdGhhdCB0aGV5IGJlIHBhc3NlZCBzZXRzIHdpdGggdGhlIHNhbWUgZWxlbWVudCB0eXBlIGFuZCB0aGUgc2FtZSBjb21wYXJhdG9yXG4gICAgICB0eXBlLiAqKVxuICB0eXBlICghJ2VsdCwgISdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCEnZWx0LCAhJ2NtcCkgdCA6PSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdHMgaW50ZXJuYWwgaW52YXJpYW50cyBvZiB0aGUgc2V0IGRhdGEgc3RydWN0dXJlLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGNcbiAgICAgIHdpdGggdGhlIHNhbWUgbm90aW9uIG9mIGNvbXBhcmlzb24uICopXG4gIHZhbCBjb21wYXJhdG9yX3MgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcblxuICAoKiogQ3JlYXRlcyBhbiBlbXB0eSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvciB0aGF0IGNvbnRhaW5zIG9ubHkgdGhlIHByb3ZpZGVkXG4gICAgICBlbGVtZW50LiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBjYXJkaW5hbGl0eSBvZiB0aGUgc2V0LiBbTygxKV0uICopXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcblxuICAoKiogW2lzX2VtcHR5IHRdIGlzIFt0cnVlXSBpZmYgW3RdIGlzIGVtcHR5LiAgW08oMSldLiAqKVxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFttZW0gdCBhXSByZXR1cm5zIFt0cnVlXSBpZmYgW2FdIGlzIGluIFt0XS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuXG4gICgqKiBbYWRkIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gYWRkZWQgdG8gW3RdLCBvciByZXR1cm5zIFt0XSBpZiBbbWVtIHQgYV0uXG4gICAgICBbTyhsb2cgbildLiAqKVxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbcmVtb3ZlIHQgYV0gcmV0dXJucyBhIG5ldyBzZXQgd2l0aCBbYV0gcmVtb3ZlZCBmcm9tIFt0XSBpZiBbbWVtIHQgYV0sIG9yIHJldHVybnMgW3RdXG4gICAgICBvdGhlcndpc2UuICBbTyhsb2cgbildLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gdDEgdDJdIHJldHVybnMgdGhlIHVuaW9uIG9mIHRoZSB0d28gc2V0cy4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdW5pb24gYyBsaXN0XSByZXR1cm5zIHRoZSB1bmlvbiBvZiBhbGwgdGhlIHNldHMgaW4gW2xpc3RdLiAgVGhlXG4gICAgICBbY29tcGFyYXRvcl0gYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIFtsaXN0XSBpcyBlbXB0eS5cbiAgICAgIFtPKG1heChMaXN0Lmxlbmd0aCBsaXN0LCBuIGxvZyBuKSldLCB3aGVyZSBbbl0gaXMgdGhlIHN1bSBvZiBzaXplcyBvZiB0aGUgaW5wdXQgc2V0cy4gKilcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpbnRlciB0MSB0Ml0gY29tcHV0ZXMgdGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIFt0MV0gYW5kIFt0Ml0uICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtkaWZmIHQxIHQyXSBjb21wdXRlcyB0aGUgc2V0IGRpZmZlcmVuY2UgW3QxIC0gdDJdLCBpLmUuLCB0aGUgc2V0IGNvbnRhaW5pbmcgYWxsXG4gICAgICBlbGVtZW50cyBpbiBbdDFdIHRoYXQgYXJlIG5vdCBpbiBbdDJdLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyXSByZXR1cm5zIGEgc2VxdWVuY2Ugb2YgY2hhbmdlcyBiZXR3ZWVuIFt0MV0gYW5kIFt0Ml0uIEl0IGlzXG4gICAgICBpbnRlbmRlZCB0byBiZSBlZmZpY2llbnQgaW4gdGhlIGNhc2Ugd2hlcmUgW3QxXSBhbmQgW3QyXSBzaGFyZSBhIGxhcmdlIGFtb3VudCBvZlxuICAgICAgc3RydWN0dXJlLiAqKVxuICB2YWwgc3ltbWV0cmljX2RpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2EpIEVpdGhlci50IFNlcXVlbmNlLnRcblxuICAoKiogW2NvbXBhcmVfZGlyZWN0IHQxIHQyXSBjb21wYXJlcyB0aGUgc2V0cyBbdDFdIGFuZCBbdDJdLiAgSXQgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRcbiAgICAgIGFzIFtjb21wYXJlXSwgYnV0IHVubGlrZSBjb21wYXJlLCBkb2Vzbid0IHJlcXVpcmUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCBpbiBmb3IgdGhlXG4gICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgdGhlIHNldC4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgc2V0cyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBzKS5jb21wYXJlXSBvZiB0aGUgc2V0IFtzXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdhIEhhc2guZm9sZGVyIC0+ICgnYSwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiB0aGUgdHdvIHNldHMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cy4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXSAqKVxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW2V4aXN0cyB0IH5mXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlcmUgZXhpc3RzIGFuIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGFdLiAgW08obildLFxuICAgICAgYnV0IHJldHVybnMgYXMgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtmIGFdLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBbY291bnQgdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW3RydWVdLlxuICAgICAgW08obildLiAqKVxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBbc3VtIHRdIHJldHVybnMgdGhlIHN1bSBvZiBbZiB0XSBmb3IgZWFjaCBbdF0gaW4gdGhlIHNldC5cbiAgICAgIFtPKG4pXS4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSlcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbZmluZF9tYXAgdCBmXSByZXR1cm5zIFtiXSBmb3Igc29tZSBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhID0gU29tZSBiXS4gIElmIG5vIHN1Y2hcbiAgICAgIFthXSBleGlzdHMsIHRoZW4gW2ZpbmRdIHJldHVybnMgW05vbmVdLiAgW08obildLCBidXQgcmV0dXJucyBhcyBzb29uIGFzIGEgc3VpdGFibGVcbiAgICAgIGVsZW1lbnQgaXMgZm91bmQuICopXG4gIHZhbCBmaW5kX21hcCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cblxuICAoKiogTGlrZSBbZmluZF0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgICB2fVxuXG4gICAgICBzbyBbbmFtZV0gc2hvdWxkIGJlIGEgbm91biBwaHJhc2UgdGhhdCBkb2Vzbid0IHNvdW5kIGF3a3dhcmQgaW4gdGhlIGFib3ZlIGVycm9yXG4gICAgICBtZXNzYWdlLiAgRXZlbiB0aG91Z2ggaXQgYWRkcyB2ZXJib3NpdHksIGNob29zaW5nIFtuYW1lXXMgdGhhdCBzdGFydCB3aXRoIHRoZSBwaHJhc2VcbiAgICAgIFwidGhlIHNldCBvZlwiIG9mdGVuIG1ha2VzIHRoZSBlcnJvciBtZXNzYWdlIHNvdW5kIG1vcmUgbmF0dXJhbC5cbiAgKilcbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdHlwZSAoJ2EsICdjbXApIHNldCA6PSAoJ2EsICdjbXApIHRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIE5hbWVkLnQgPVxuICAgICAgeyBzZXQgOiAnYVxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgc2V0IHQgLT4gb2ZfOignYSwgJ2NtcCkgc2V0IHQgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBlcXVhbCB0byBbdDJdIGFuZCBhIGh1bWFuLXJlYWRhYmxlXG4gICAgICAgIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSBzZXQgdCAtPiAoJ2EsICdjbXApIHNldCB0IC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICAoKiogVGhlIGxpc3Qgb3IgYXJyYXkgZ2l2ZW4gdG8gW29mX2xpc3RdIGFuZCBbb2ZfYXJyYXldIG5lZWQgbm90IGJlIHNvcnRlZC4gKilcbiAgdmFsIG9mX2xpc3QgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgU2VxdWVuY2UudCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbdG9fbGlzdF0gYW5kIFt0b19hcnJheV0gcHJvZHVjZSBzZXF1ZW5jZXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gdGhlXG4gICAgICBjb21wYXJhdG9yLiAqKVxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGFycmF5XG5cbiAgKCoqIENyZWF0ZSBzZXQgZnJvbSBzb3J0ZWQgYXJyYXkuICBUaGUgaW5wdXQgbXVzdCBiZSBzb3J0ZWQgKGVpdGhlciBpbiBhc2NlbmRpbmcgb3JcbiAgICAgIGRlc2NlbmRpbmcgb3JkZXIgYXMgZ2l2ZW4gYnkgdGhlIGNvbXBhcmF0b3IpIGFuZCBjb250YWluIG5vIGR1cGxpY2F0ZXMsIG90aGVyd2lzZSB0aGVcbiAgICAgIHJlc3VsdCBpcyBhbiBlcnJvci4gIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgW08obildLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBTaW1pbGFyIHRvIFtvZl9zb3J0ZWRfYXJyYXldLCBidXQgd2l0aG91dCBjaGVja2luZyB0aGUgaW5wdXQgYXJyYXkuICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3RhYmxlX2RlZHVwX2xpc3RdIGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdGhlIFtMaXN0XSBtb2R1bGUgYmVjYXVzZSB0aGVcbiAgICAgIGltcGxlbWVudGF0aW9uIHJlbGllcyBjcnVjaWFsbHkgb24gc2V0cywgYW5kIGJlY2F1c2UgZG9pbmcgc28gYWxsb3dzIG9uZSB0byBhdm9pZCB1c2VzXG4gICAgICBvZiBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGZ1bmN0b3IgYXQgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25cbiAgICAgIG9mIFtDb21wYXJhdG9yXSBhbmQgdXNpbmcgdGhlIHJlc3VsdGluZyBbc3RhYmxlX2RlZHVwX2xpc3RdLiAqKVxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFttYXAgYyB0IH5mXSByZXR1cm5zIGEgbmV3IHNldCBjcmVhdGVkIGJ5IGFwcGx5aW5nIFtmXSB0byBldmVyeSBlbGVtZW50IGluXG4gICAgICBbdF0uICBUaGUgcmV0dXJuZWQgc2V0IGlzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBbY29tcGFyYXRvcl0uICBbTyhuIGxvZyBuKV0uICopXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2IsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsIF8pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyB0aGUgc3Vic2V0IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAgW08obiBsb2dcbiAgICAgIG4pXS4gKilcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0byBsYXJnZXN0LiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgfmluaXQgfmZdIGZvbGRzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXQgZnJvbSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdCwgc2hvcnQgY2lyY3VpdGluZyB0aGUgZm9sZCBpZiBbZiBhY2N1bSB4XSBpcyBhbiBbRXJyb3IgX10gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2EgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtpdGVyIHQgfmZdIGNhbGxzIFtmXSBvbiBldmVyeSBlbGVtZW50IG9mIFt0XSwgZ29pbmcgaW4gb3JkZXIgZnJvbSB0aGUgc21hbGxlc3QgdG9cbiAgICAgIGxhcmdlc3QuICAqKVxuICB2YWwgaXRlciA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KChbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gICgqKiBpZiBbYSwgYiA9IHBhcnRpdGlvbl90ZiBzZXQgfmZdIHRoZW4gW2FdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZWQgW3RydWVdLFxuICAgICAgYW5kIFtiXSBpcyB0aGUgZWxlbWVudHMgb24gd2hpY2ggW2ZdIHByb2R1Y2VzIFtmYWxzZV0uICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW21heWJlX3hdIGlzIHRoZSBtZW1iZXIgKGlmIGFueSkgb2YgW3RdIHdoaWNoIGNvbXBhcmVzIGVxdWFsIHRvIFt4XSxcbiAgICAgIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2xlX2d0IHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdF9sZV9ndCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogW3NwbGl0X2x0X2dlIHQgeF0gcHJvZHVjZXMgYSBwYWlyIFsodDEsIHQyKV0uXG5cbiAgICAgIFt0MV0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBbeF0uICopXG4gIHZhbCBzcGxpdF9sdF9nZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICAoKiogW3RvX3NlcXVlbmNlIHRdIGNvbnZlcnRzIHRoZSBzZXQgW3RdIHRvIGEgc2VxdWVuY2Ugb2YgdGhlIGVsZW1lbnRzIGJldHdlZW5cbiAgICAgIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmQgW2xlc3Nfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSBpbiB0aGUgb3JkZXIgaW5kaWNhdGVkIGJ5XG4gICAgICBbb3JkZXJdLiAgSWYgW2dyZWF0ZXJfb3JfZXF1YWxfdG8gPiBsZXNzX29yX2VxdWFsX3RvXSB0aGUgc2VxdWVuY2UgaXMgZW1wdHkuICBDb3N0IGlzXG4gICAgICBPKGxvZyBuKSB1cCBmcm9udCBhbmQgYW1vcnRpemVkIE8oMSkgZm9yIGVhY2ggZWxlbWVudCBwcm9kdWNlZC4gKilcbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gW3RdIHNwZWNpZmllZCBieVxuICAgICAgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2Ygd2hpY2hdIHRha2VzIGEgW3NlZ21lbnRfb2ZdIGZ1bmN0aW9uIHRoYXRcbiAgICAgIGRpdmlkZXMgW3RdIGludG8gdHdvIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHM6XG5cbiAgICAgIHt2XG4gICAgICAgIHwgc2VnbWVudF9vZiBlbHQgPSBgTGVmdCB8IHNlZ21lbnRfb2YgZWx0ID0gYFJpZ2h0IHxcbiAgICAgIHZ9XG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gcmV0dXJucyB0aGUgZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHNlZ21lbnRzIGFzXG4gICAgICBzcGVjaWZpZWQgYnkgW3doaWNoXTogW2BMYXN0X29uX2xlZnRdIHlpZWxkcyB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBsZWZ0IHNlZ21lbnQsXG4gICAgICB3aGlsZSBbYEZpcnN0X29uX3JpZ2h0XSB5aWVsZHMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHJpZ2h0IHNlZ21lbnQuICBJdCByZXR1cm5zXG4gICAgICBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOigoJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICAgIHZhbCBlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIDogKF8sIF8pIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2FcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRoX2NvbXBhcmF0b3IudFxuXG4gICAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2VsdCBIYXNoLmZvbGRlciAtPiAoJ2VsdCwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gICAgICB2YWwgZW1wdHkgOiAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBBY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNldF9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFbXB0eVxuICAgICgqIChMZWFmIHgpIGlzIHRoZSBzYW1lIGFzIChOb2RlIChFbXB0eSwgeCwgRW1wdHksIDEsIDEpKSBidXQgdXNlcyBsZXNzIHNwYWNlLiAqKVxuICAgIHwgTGVhZiBvZiAnYVxuICAgICgqIGZpcnN0IGludCBpcyBoZWlnaHQsIHNlY29uZCBpcyBzdWItdHJlZSBzaXplICopXG4gICAgfCBOb2RlIG9mICdhIHQgKiAnYSAqICdhIHQgKiBpbnQgKiBpbnRcblxuICB0eXBlICdhIHRyZWUgPSAnYSB0XG5cbiAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGUgY2hpbGRyZW4gZGlmZmVyIGJ5XG4gICAgIGF0IG1vc3QgMi4gKilcbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHYgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2VsdCBsb3dlciB2IDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfZWx0IHYgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIHYgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBoLCBuKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgbiA9IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfZWx0IHZcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSB2KSBjb21wYXJlX2VsdCBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgdikgdXBwZXIgY29tcGFyZV9lbHQgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfZWx0IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfZWx0IHRcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG4gIDs7XG5cbiAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgIFdlIG11c3QgaGF2ZSBhbGwgZWxlbWVudHMgb2YgbCA8IHYgPCBhbGwgZWxlbWVudHMgb2Ygci5cbiAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gIGxldCBjcmVhdGUgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgIGlmIGggPSAxXG4gICAgdGhlbiBMZWFmIHZcbiAgICBlbHNlIChcbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLlNldCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgayA9IGYgaSBpblxuICAgICAgICBMZWFmIGtcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIChMZWFmIGtsKSBrIEVtcHR5XG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsID0gZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgKExlYWYga3IpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICAoKiBXZSBkb24ndCBjaGVjayBpZiB0aGUgYXJyYXkgaXMgc29ydGVkIG9yIGtleXMgYXJlIGR1cGxpY2F0ZWQsIGJlY2F1c2UgdGhhdFxuICAgICAgICAgY2hlY2tpbmcgaXMgc2xvd2VyIHRoYW4gdGhlIHdob2xlIFtvZl9zb3J0ZWRfYXJyYXldIGZ1bmN0aW9uICopXG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyIHx8IGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuOmFycmF5X2xlbmd0aCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfZWx0IGFycmF5LigwKSBhcnJheS4oMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKGkpIGFycmF5LihpICsgMSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZWxlbWVudHMgYXJlIG5vdCBvcmRlcmVkXCIpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQpKVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgY3JlYXRlIGZvciBiZXR0ZXIgc3BlZWQgaW4gdGhlIG1vc3QgZnJlcXVlbnQgY2FzZVxuICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICBsZXQgYmFsIGwgdiByID1cbiAgICBsZXQgaGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgbGV0IGhyID1cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKGwpPmgocikrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgKGNyZWF0ZSBsciB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBscnYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgbGwpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgRW1wdHkpIGxydiAoY3JlYXRlIEVtcHR5IHYgcilcbiAgICAgICAgICB8IE5vZGUgKGxybCwgbHJ2LCBscnIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcikpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgocik+aChsKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgdiBybCkgcnYgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIHJsdiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBycik7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgRW1wdHkpIHJsdiAoY3JlYXRlIEVtcHR5IHJ2IHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbCB2IHJsbCkgcmx2IChjcmVhdGUgcmxyIHJ2IHJyKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgICBsZXQgc2wgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgbGV0IHNyID1cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGlmIGggPSAxIHRoZW4gTGVhZiB2IGVsc2UgTm9kZSAobCwgdiwgciwgaCwgc2wgKyBzciArIDEpKVxuICA7O1xuXG4gICgqIEluc2VydGlvbiBvZiBvbmUgZWxlbWVudCAqKVxuXG4gIGV4Y2VwdGlvbiBTYW1lXG5cbiAgbGV0IGFkZCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbYWRkXSB0aGF0IGFzc3VtZXMgdGhhdCBbeF0gaXMgbGVzcyB0aGFuIGFsbCBleGlzdGluZyBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGFkZF9taW4geCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgIHwgTGVhZiBfIC0+IE5vZGUgKEVtcHR5LCB4LCB0LCAyLCAyKVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChhZGRfbWluIHggbCkgdiByXG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW2FkZF0gdGhhdCBhc3N1bWVzIHRoYXQgW3hdIGlzIGdyZWF0ZXIgdGhhbiBhbGwgZXhpc3RpbmcgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBhZGRfbWF4IHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICB8IExlYWYgXyAtPiBOb2RlICh0LCB4LCBFbXB0eSwgMiwgMilcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGJhbCBsIHYgKGFkZF9tYXggciB4KVxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgIG1hdGNoIGwsIHIgd2l0aFxuICAgIHwgRW1wdHksIF8gLT4gYWRkX21pbiB2IHJcbiAgICB8IF8sIEVtcHR5IC0+IGFkZF9tYXggbCB2XG4gICAgfCBMZWFmIGx2LCBfIC0+IGFkZF9taW4gbHYgKGFkZF9taW4gdiByKVxuICAgIHwgXywgTGVhZiBydiAtPiBhZGRfbWF4IChhZGRfbWF4IGwgdikgcnZcbiAgICB8IE5vZGUgKGxsLCBsdiwgbHIsIGxoLCBfKSwgTm9kZSAocmwsIHJ2LCByciwgcmgsIF8pIC0+XG4gICAgICBpZiBsaCA+IHJoICsgMlxuICAgICAgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgMlxuICAgICAgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZSBbQG5vbnRhaWxdXG4gICAgICB8IE5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgKG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIGxlZnQgYWNjIHdpdGhcbiAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgIHwgQ29udGludWUgYWNjIC0+XG4gICAgICAgICAgIChtYXRjaCBmIGFjYyB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICAgICB8IENvbnRpbnVlIGEgLT4gZm9sZF91bnRpbF9oZWxwZXIgfmYgcmlnaHQgYSkpXG4gICAgaW5cbiAgICBtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiB0IGluaXQgd2l0aFxuICAgIHwgQ29udGludWUgeCAtPiBmaW5pc2ggeCBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHggLT4geFxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChfLCB2LCBFbXB0eSwgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChfLCBfLCByLCBfLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICAoKiBSZW1vdmUgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIGdpdmVuIHNldCAqKVxuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgciwgXywgXykgLT4gclxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB2IHJcbiAgOztcblxuICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS4gIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gYmFsIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG4gIGxldCBjb25jYXQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBzcGxpdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRW1wdHksIFNvbWUgdiwgRW1wdHlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIEVtcHR5LCBOb25lLCBMZWFmIHZcbiAgICAgICAgZWxzZSBMZWFmIHYsIE5vbmUsIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbCwgU29tZSB2LCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxsLCBtYXliZV9lbHQsIHJsID0gc3BsaXQgbCBpblxuICAgICAgICAgIGxsLCBtYXliZV9lbHQsIGpvaW4gcmwgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbHIsIG1heWJlX2VsdCwgcnIgPSBzcGxpdCByIGluXG4gICAgICAgICAgam9pbiBsIHYgbHIsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdF9sZV9ndCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA+PSAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gYWRkX21heCBsIHYsIHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbGVfZ3QgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2xlX2d0IHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gIGxldCByZWMgc3BsaXRfbHRfZ2UgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPiAwIHRoZW4gTGVhZiB2LCBFbXB0eSBlbHNlIEVtcHR5LCBMZWFmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gbCwgYWRkX21pbiB2IHJcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIHJsID0gc3BsaXRfbHRfZ2UgbCB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBsbCwgam9pbiBybCB2IHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxyLCByciA9IHNwbGl0X2x0X2dlIHIgeCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgam9pbiBsIHYgbHIsIHJyKVxuICA7O1xuXG4gICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IHJlYyBtZW0gdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBmYWxzZVxuICAgIHwgTGVhZiB2IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDBcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgYyA9IDAgfHwgbWVtIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2VsdFxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24geCA9IExlYWYgeFxuXG4gIGxldCByZW1vdmUgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBMZWFmIF8gLT4gaWYgaSA9IDAgdGhlbiBFbXB0eSBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIG1lcmdlIGwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gYmFsIChhdXggbCBpKSB2IHJcbiAgICAgICAgZWxzZSBiYWwgbCB2IChhdXggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IGkgd2l0aFxuICAgIHwgU2FtZSAtPiB0XG4gIDs7XG5cbiAgbGV0IHVuaW9uIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICAgICAgfCBMZWFmIHYxLCBfIC0+IHVuaW9uIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgczJcbiAgICAgICAgfCBfLCBMZWFmIHYyIC0+IHVuaW9uIHMxIChOb2RlIChFbXB0eSwgdjIsIEVtcHR5LCAxLCAxKSlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBoMSwgXyksIE5vZGUgKGwyLCB2MiwgcjIsIGgyLCBfKSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxXG4gICAgICAgICAgICB0aGVuIGFkZCBzMSB2MiB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbDIsIF8sIHIyID0gc3BsaXQgczIgdjEgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpKVxuICAgICAgICAgIGVsc2UgaWYgaDEgPSAxXG4gICAgICAgICAgdGhlbiBhZGQgczIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbDEsIF8sIHIxID0gc3BsaXQgczEgdjIgfmNvbXBhcmVfZWx0IGluXG4gICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKSkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIHYxLCByMiAtPiBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKSkpXG4gICAgaW5cbiAgICBpbnRlciBzMSBzMlxuICA7O1xuXG4gIGxldCBkaWZmIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gRW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCBfIC0+IEVtcHR5XG4gICAgICAgIHwgdDEsIEVtcHR5IC0+IHQxXG4gICAgICAgIHwgTGVhZiB2MSwgdDIgLT4gZGlmZiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHQyXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICAgICAgKG1hdGNoIHNwbGl0IHQyIHYxIH5jb21wYXJlX2VsdCB3aXRoXG4gICAgICAgICAgIHwgbDIsIE5vbmUsIHIyIC0+IGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpKSlcbiAgICBpblxuICAgIGRpZmYgczEgczJcbiAgOztcblxuICBtb2R1bGUgRW51bSA9IHN0cnVjdFxuICAgIHR5cGUgaW5jcmVhc2luZ1xuICAgIHR5cGUgZGVjcmVhc2luZ1xuXG4gICAgdHlwZSAoJ2EsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnYSAqICdhIHRyZWUgKiAoJ2EsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyBzIChlIDogKF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbnNfcmlnaHQgcyAoZSA6IChfLCBkZWNyZWFzaW5nKSB0KSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NldCBzIDogKF8sIGluY3JlYXNpbmcpIHQgPSBjb25zIHMgRW5kXG4gICAgbGV0IG9mX3NldF9yaWdodCBzIDogKF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHMgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKF8sIHYsIHIsIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA8IDAgLT4gbG9vcCByIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIGwgKE1vcmUgKHYsIHIsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBkZWNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCByIChNb3JlICh2LCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGUxIGUyID1cbiAgICAgIGxldCByZWMgbG9vcCBlMSBlMiA9XG4gICAgICAgIG1hdGNoIGUxLCBlMiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIHIxLCBlMSksIE1vcmUgKHYyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgaWYgcGh5c19lcXVhbCByMSByMlxuICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyByMSBlMSkgKGNvbnMgcjIgZTIpXG4gICAgICBpblxuICAgICAgbG9vcCBlMSBlMlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGl0ZXIgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gKClcbiAgICAgIHwgTW9yZSAoYSwgdHJlZSwgZW51bSkgLT5cbiAgICAgICAgZiBhO1xuICAgICAgICBpdGVyIChjb25zIHRyZWUgZW51bSkgfmZcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIyIGNvbXBhcmVfZWx0IHQxIHQyIH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gKClcbiAgICAgICAgfCBFbmQsIF8gLT4gaXRlciB0MiB+ZjooZnVuIGEgLT4gZiAoYFJpZ2h0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgXywgRW5kIC0+IGl0ZXIgdDEgfmY6KGZ1biBhIC0+IGYgKGBMZWZ0IGEpKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MiBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgOiAoKF8sIF8pIEVpdGhlci50LCBfKSBTZXF1ZW5jZS5TdGVwLnQgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBTZWNvbmQgZWx0OyBzdGF0ZSA9IEVuZCwgY29ucyB0cmVlIGVudW0gfVxuICAgICAgICB8IE1vcmUgKGVsdCwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBlbHQ7IHN0YXRlID0gY29ucyB0cmVlIGVudW0sIEVuZCB9XG4gICAgICAgIHwgKE1vcmUgKGExLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID1cbiAgICAgICAgICAgICAgaWYgcGh5c19lcXVhbCB0cmVlMSB0cmVlMlxuICAgICAgICAgICAgICB0aGVuIGVudW0xLCBlbnVtMlxuICAgICAgICAgICAgICBlbHNlIGNvbnMgdHJlZTEgZW51bTEsIGNvbnMgdHJlZTIgZW51bTJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBuZXh0X3N0YXRlIH0pXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIFlpZWxkIHsgdmFsdWUgPSBGaXJzdCBhMTsgc3RhdGUgPSBjb25zIHRyZWUxIGVudW0xLCByaWdodCB9XG4gICAgICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gU2Vjb25kIGEyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl9zZXQgdDEsIG9mX3NldCB0MikgfmY6c3RlcFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGs7IHN0YXRlID0gRW51bS5jb25zIHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdCB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrOyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9lbHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2Zfc2V0X3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nKVxuICAgICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2VsdCBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlbHQgLT4gYWRkIHQgZWx0IH5jb21wYXJlX2VsdFxuICAgIGluXG4gICAgbWF0Y2ggb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgbGVzc19vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgZnN0KSBpblxuICAgICAgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nIC0+XG4gICAgICBsZXQgdCA9IE9wdGlvbi5mb2xkIGdyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQ6bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBmIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgaWYgZiB2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHIgfmZcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyByIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgdlxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApIFtAbm9udGFpbF1cbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgeCBhcyBlbHQgd2hlbiBjb21wYXJlIHggdiA9IDAgLT4gZWx0XG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgeCA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnQgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0IH5mID1cbiAgICBFbnVtLml0ZXIyIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKSB+ZlxuICA7O1xuXG4gIGxldCBlcXVhbCBzMSBzMiB+Y29tcGFyZV9lbHQgPSBjb21wYXJlIGNvbXBhcmVfZWx0IHMxIHMyID0gMFxuXG4gIGxldCBpc19zdWJzZXQgczEgfm9mXzpzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaXNfc3Vic2V0IHMxIH5vZl86czIgPVxuICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgIHwgRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBMZWFmIHYxLCB0MiAtPiBtZW0gdDIgdjEgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCBMZWFmIHYyIC0+XG4gICAgICAgIChtYXRjaCBsMSwgcjEgd2l0aFxuICAgICAgICAgfCBFbXB0eSwgRW1wdHkgLT5cbiAgICAgICAgICAgKCogVGhpcyBjYXNlIHNob3VsZG4ndCBvY2N1ciBpbiBwcmFjdGljZSBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGNvbnN0cnVjdGVkXG4gICAgICAgICAgICAgIGEgTGVhZiByYXRoZXIgdGhhbiBhIE5vZGUgd2l0aCB0d28gRW1wdHkgc3VidHJlZXMgKilcbiAgICAgICAgICAgY29tcGFyZV9lbHQgdjEgdjIgPSAwXG4gICAgICAgICB8IF8sIF8gLT4gZmFsc2UpXG4gICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCAoTm9kZSAobDIsIHYyLCByMiwgXywgXykgYXMgdDIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIHBoeXNfZXF1YWwgczEgczIgfHwgKGlzX3N1YnNldCBsMSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnIyKVxuICAgICAgICAgICgqIE5vdGUgdGhhdCBoZWlnaHQgYW5kIHNpemUgZG9uJ3QgbWF0dGVyIGhlcmUuICopXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBpc19zdWJzZXQgKE5vZGUgKGwxLCB2MSwgRW1wdHksIDAsIDApKSB+b2ZfOmwyICYmIGlzX3N1YnNldCByMSB+b2ZfOnQyXG4gICAgICAgIGVsc2UgaXNfc3Vic2V0IChOb2RlIChFbXB0eSwgdjEsIHIxLCAwLCAwKSkgfm9mXzpyMiAmJiBpc19zdWJzZXQgbDEgfm9mXzp0MlxuICAgIGluXG4gICAgaXNfc3Vic2V0IHMxIH5vZl86czJcbiAgOztcblxuICBsZXQgcmVjIGFyZV9kaXNqb2ludCBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IHRydWVcbiAgICB8IExlYWYgZWx0LCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIExlYWYgZWx0IC0+IG5vdCAobWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0KVxuICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIHQyIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIGZhbHNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT5cbiAgICAgICAgICBhcmVfZGlzam9pbnQgbDEgbDIgfmNvbXBhcmVfZWx0ICYmIGFyZV9kaXNqb2ludCByMSByMiB+Y29tcGFyZV9lbHRcbiAgICAgICAgfCBfLCBTb21lIF8sIF8gLT4gZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgbGV0IHJlYyBpdGVyID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBpdGVyIGw7XG4gICAgICAgIGYgdjtcbiAgICAgICAgaXRlciByXG4gICAgaW5cbiAgICBpdGVyIHQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgPVxuICAgIGxldCByZWMgZmlsdCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQgZWxzZSBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBsJyA9IGZpbHQgbCBpblxuICAgICAgICBsZXQga2VlcF92ID0gcCB2IGluXG4gICAgICAgIGxldCByJyA9IGZpbHQgciBpblxuICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSBpZiBrZWVwX3ZcbiAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcbiAgICBpblxuICAgIGZpbHQgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBmaWx0IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgZmlsdFxuICAgICAgICAgIChmaWx0XG4gICAgICAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgclxuICAgIGluXG4gICAgZmlsdCBFbXB0eSBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHMgfmY6cCA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgICB8IExlYWYgdiBhcyB0IC0+IGlmIHAgdiB0aGVuIHQsIEVtcHR5IGVsc2UgRW1wdHksIHRcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgaW5cbiAgICAgICAgbGV0IGtlZXBfdl90ID0gcCB2IGluXG4gICAgICAgIGxldCByJ3QsIHInZiA9IGxvb3AgciBpblxuICAgICAgICBsZXQgbWsga2VlcF92IGwnIHInID1cbiAgICAgICAgICBpZiBrZWVwX3YgJiYgcGh5c19lcXVhbCBsIGwnICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgaWYga2VlcF92XG4gICAgICAgICAgdGhlbiBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuICAgICAgICBpblxuICAgICAgICBtayBrZWVwX3ZfdCBsJ3Qgcid0LCBtayAobm90IGtlZXBfdl90KSBsJ2YgcidmXG4gICAgaW5cbiAgICBsb29wIHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9XG4gICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IChmIHgpIH5jb21wYXJlX2VsdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBncm91cF9ieSBzZXQgfmVxdWl2ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KVxuICAgICAgICBpblxuICAgICAgICBsb29wIG5vdF9lcXVpdl94IChlcXVpdl94IDo6IGVxdWl2X2NsYXNzZXMpKVxuICAgIGluXG4gICAgbG9vcCBzZXQgW10gW0Bub250YWlsXVxuICA7O1xuXG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbGV0IGlzX3N1YnNldFxuICAgICAgICAgIChzdWJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfm9mXzooc3VwZXJzZXQgOiBfIE5hbWVkLnQpXG4gICAgICAgICAgfnNleHBfb2ZfZWx0XG4gICAgICAgICAgfmNvbXBhcmVfZWx0XG4gICAgICA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnNldCBzdXBlcnNldC5zZXQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBpZiBpc19lbXB0eSBpbnZhbGlkX2VsZW1lbnRzXG4gICAgICB0aGVuIE9rICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGludmFsaWRfZWxlbWVudHNfc2V4cCA9IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBpbnZhbGlkX2VsZW1lbnRzIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgKHN1YnNldC5uYW1lIF4gXCIgaXMgbm90IGEgc3Vic2V0IG9mIFwiIF4gc3VwZXJzZXQubmFtZSlcbiAgICAgICAgICAgICBbIFwiaW52YWxpZF9lbGVtZW50c1wiLCBpbnZhbGlkX2VsZW1lbnRzX3NleHAgXSkpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBzMSBzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0ID1cbiAgICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgICAgWyBpc19zdWJzZXQgczEgfm9mXzpzMiB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIDsgaXNfc3Vic2V0IHMyIH5vZl86czEgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdFxuICAgICAgICBdXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2EsICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogJ2EgVHJlZTAudFxuICB9XG5cbnR5cGUgKCdhLCAnY29tcGFyYXRvcikgdHJlZSA9ICdhIFRyZWUwLnRcblxubGV0IGxpa2UgeyB0cmVlID0gXzsgY29tcGFyYXRvciB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxuXG5sZXQgbGlrZV9tYXliZV9ub19vcCAoeyB0cmVlID0gb2xkX3RyZWU7IGNvbXBhcmF0b3IgfSBhcyBvbGRfdCkgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBjb21wYXJlX2VsdCB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcblxuICBsZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gICAgZW5kKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mIH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdC50cmVlIH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlMC5pdGVyMiBhLnRyZWUgYi50cmVlIH5mIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0LnRyZWUgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdC50cmVlIH5mXG4gIGxldCBmaW5kX2V4biB0IH5mID0gVHJlZTAuZmluZF9leG4gdC50cmVlIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdC50cmVlIH5mXG4gIGxldCBtZW0gdCBhID0gVHJlZTAubWVtIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGZpbHRlciB0IH5mID0gbGlrZV9tYXliZV9ub19vcCB0IChUcmVlMC5maWx0ZXIgdC50cmVlIH5mKVxuICBsZXQgYWRkIHQgYSA9IGxpa2UgdCAoVHJlZTAuYWRkIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCByZW1vdmUgdCBhID0gbGlrZSB0IChUcmVlMC5yZW1vdmUgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAudW5pb24gdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgaW50ZXIgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5pbnRlciB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBkaWZmIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlMC5jb21wYXJlIChjb21wYXJlX2VsdCB0MSkgdDEudHJlZSB0Mi50cmVlXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICBsZXQgaXNfc3Vic2V0IHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0LnRyZWUgfm9mXzpvZl8udHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG5cbiAgbGV0IGFyZV9kaXNqb2ludCB0MSB0MiA9XG4gICAgVHJlZTAuYXJlX2Rpc2pvaW50IHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCB0b19uYW1lZF90cmVlIChuYW1lZCA6IChfLCBfKSB0IE5hbWVkLnQpID0geyBuYW1lZCB3aXRoIHNldCA9IG5hbWVkLnNldC50cmVlIH1cblxuICAgIGxldCBpc19zdWJzZXQgc3Vic2V0IH5vZl86c3VwZXJzZXQgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgICh0b19uYW1lZF90cmVlIHN1YnNldClcbiAgICAgICAgfm9mXzoodG9fbmFtZWRfdHJlZSBzdXBlcnNldClcbiAgICAgICAgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBzdWJzZXQuc2V0KVxuICAgICAgICB+c2V4cF9vZl9lbHQ6c3Vic2V0LnNldC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgdDEgdDIgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdCBbIGlzX3N1YnNldCB0MSB+b2ZfOnQyOyBpc19zdWJzZXQgdDIgfm9mXzp0MSBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgTmFtZWRcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBsZXQgdHJlZV90LCB0cmVlX2YgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdC50cmVlIH5mIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfdCwgbGlrZV9tYXliZV9ub19vcCB0IHRyZWVfZlxuICA7O1xuXG4gIGxldCBzcGxpdCB0IGEgPVxuICAgIGxldCB0cmVlMSwgYiwgdHJlZTIgPSBUcmVlMC5zcGxpdCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBiLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBhID1cbiAgICBsZXQgdHJlZTEsIHRyZWUyID0gVHJlZTAuc3BsaXRfbGVfZ3QgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIHQgYSA9XG4gICAgbGV0IHRyZWUxLCB0cmVlMiA9IFRyZWUwLnNwbGl0X2x0X2dlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IExpc3QubWFwIChUcmVlMC5ncm91cF9ieSB0LnRyZWUgfmVxdWl2KSB+ZjoobGlrZSB0KVxuICBsZXQgbnRoIHQgaSA9IFRyZWUwLm50aCB0LnRyZWUgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlX2luZGV4IHQudHJlZSBpIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSB0LmNvbXBhcmF0b3IgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQudHJlZSB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmVlIH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/Z3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgIHQudHJlZVxuICAgICAgdCcudHJlZVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXkgc3RhdGUgdCA9XG4gICAgVHJlZTAuaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgc3RhdGUgdC50cmVlXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0ID0gKCdhLCAnY29tcGFyYXRvcikgdHJlZVxuXG4gIGxldCBjZSBjb21wYXJhdG9yID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpIGFfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvcjpfIGUgPSBUcmVlMC5zaW5nbGV0b24gZVxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID0gVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBlbGVtZW50cyB0ID0gVHJlZTAuZWxlbWVudHMgdFxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdFxuICBsZXQgY2hvb3NlX2V4biB0ID0gVHJlZTAuY2hvb3NlX2V4biB0XG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0XG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBUcmVlMC5zdW0gbSB0IH5mXG4gIGxldCBmaW5kIHQgfmYgPSBUcmVlMC5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0IH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gVHJlZTAuZmluZF9tYXAgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAubWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZlxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmZcbiAgbGV0IGl0ZXIyIH5jb21wYXJhdG9yIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEgYiB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAubWVtIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuYWRkIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAucmVtb3ZlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCB1bmlvbiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLnVuaW9uIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGludGVyIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuaW50ZXIgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmRpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNlIGNvbXBhcmF0b3IpIHQxIHQyXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9IFRyZWUwLmVxdWFsIHQxIHQyIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGlzX3N1YnNldCB+Y29tcGFyYXRvciB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcblxuICBsZXQgYXJlX2Rpc2pvaW50IH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPSBUcmVlMC5vZl9saXN0IGwgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgcyA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGEgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl8gfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYSA9IFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLnVuaW9uX2xpc3QgbCB+dG9fdHJlZTpGbi5pZCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBncm91cF9ieSB0IH5lcXVpdiA9IFRyZWUwLmdyb3VwX2J5IHQgfmVxdWl2XG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXRfbGVfZ3QgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXRfbGVfZ3QgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0X2x0X2dlIHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IH5jb21wYXJhdG9yIHQgaSA9IFRyZWUwLnJlbW92ZV9pbmRleCB0IGkgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBUcmVlMC5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yOl8gdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvcjpfIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZTAubWVyZ2VfdG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWUwLk5hbWVkXG5cbiAgICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQxIH5vZl86dDIgPVxuICAgICAgVHJlZTAuTmFtZWQuaXNfc3Vic2V0XG4gICAgICAgIHQxXG4gICAgICAgIH5vZl86dDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgICAgVHJlZTAuTmFtZWQuZXF1YWxcbiAgICAgICAgdDFcbiAgICAgICAgdDJcbiAgICAgICAgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICAgICAgICB+c2V4cF9vZl9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSB0ID0gKCdlbHQsICdjbXApIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgY29tcGFyYXRvcjsgdHJlZSB9XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3IgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5jb21wYXJlIGFfb2Zfc2V4cCBzZXhwKVxuICA7O1xuXG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvciA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLmVtcHR5IH1cbiAgZW5kXG5cbiAgbGV0IHNpbmdsZXRvbiB+Y29tcGFyYXRvciBlID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGUgfVxuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgbClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgbGV0IHRyZWUgPVxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgT3JfZXJyb3IuTW9uYWRfaW5maXguKFxuICAgICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgPj58IGZ1biB0cmVlIC0+IHsgY29tcGFyYXRvcjsgdHJlZSB9KVxuICA7O1xuXG4gIGxldCBvZl9saXN0IH5jb21wYXJhdG9yIGwgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5vZl9zZXF1ZW5jZSBzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX2FycmF5IH5jb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX2FycmF5IGEgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHMgPVxuICAgIFRyZWUwLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAubWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIHsgY29tcGFyYXRvclxuICAgIDsgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIH1cbiAgOztcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG50eXBlICgnZWx0LCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGVsdCBjbXApICgobW9kdWxlIE0pIDogKGVsdCwgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCB1bmlvbl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3IudW5pb25fbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB+bGVuIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9saXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2Zfc2VxdWVuY2UgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBzdGFibGVfZGVkdXBfbGlzdCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLnN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBtYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IGZpbHRlcl9tYXAgbSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5maWx0ZXJfbWFwIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbmxldCB0b190cmVlID0gVXNpbmdfY29tcGFyYXRvci50b190cmVlXG5sZXQgb2ZfdHJlZSBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfcmVmXG4gIGxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPSBlcXVhbF9yZWZcblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICgoKGFfXzAwOV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XykgLT4gKGFfXzAwOV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfcmVmXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IHJlZl9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX3JlZlxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiByZWZfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBnbG9iYWxpemUgOiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0XG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmQpXG5cbigqIEluIHRoZSBkZWZpbml0aW9uIG9mIFt0XSwgd2UgZG8gbm90IGhhdmUgW1tAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXSBiZWNhdXNlXG4gICBpbiBnZW5lcmFsLCBzeW50YXggZXh0ZW5zaW9ucyB0ZW5kIHRvIHVzZSB0aGUgaW1wbGVtZW50YXRpb24gd2hlbiBhdmFpbGFibGUgcmF0aGVyIHRoYW5cbiAgIHVzaW5nIHRoZSBhbGlhcy4gIEhlcmUgdGhhdCB3b3VsZCBsZWFkIHRvIHVzZSB0aGUgcmVjb3JkIHJlcHJlc2VudGF0aW9uIFsgeyBtdXRhYmxlXG4gICBjb250ZW50cyA6ICdhIH0gXSB3aGljaCB3b3VsZCByZXN1bHQgaW4gZGlmZmVyZW50IChhbmQgdW53YW50ZWQpIGJlaGF2aW9yLiAgKilcbnR5cGUgJ2EgdCA9ICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuZXh0ZXJuYWwgY3JlYXRlIDogJ2EgLT4gKCdhIHRbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG5sZXQgc3dhcCB0MSB0MiA9XG4gIGxldCB0bXAgPSAhdDEgaW5cbiAgdDEgOj0gIXQyO1xuICB0MiA6PSB0bXBcbjs7XG5cbmxldCByZXBsYWNlIHQgZiA9IHQgOj0gZiAhdFxuXG5sZXQgc2V0X3RlbXBvcmFyaWx5IHQgYSB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gIXQgaW5cbiAgdCA6PSBhO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQgOj0gcmVzdG9yZV90bylcbjs7XG5cbm1vZHVsZSBBbmRfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVCA6ICdhIHJlZiAqICdhIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V0IChUIChyLCBhKSkgPSByIDo9IGFcbiAgbGV0IHNldHMgdHMgPSBMaXN0Lml0ZXIgdHMgfmY6c2V0XG4gIGxldCBzbmFwc2hvdCAoVCAociwgXykpID0gVCAociwgIXIpXG4gIGxldCBzbmFwc2hvdHMgdHMgPSBMaXN0Lm1hcCB0cyB+ZjpzbmFwc2hvdFxuZW5kXG5cbmxldCBzZXRzX3RlbXBvcmFyaWx5IGFuZF92YWx1ZXMgfmYgPVxuICBsZXQgcmVzdG9yZV90byA9IEFuZF92YWx1ZS5zbmFwc2hvdHMgYW5kX3ZhbHVlcyBpblxuICBBbmRfdmFsdWUuc2V0cyBhbmRfdmFsdWVzO1xuICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IEFuZF92YWx1ZS5zZXRzIHJlc3RvcmVfdG8pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cblxuKCogW3RdIHN0b3JlcyB0aGUgW3QubGVuZ3RoXSBxdWV1ZSBlbGVtZW50cyBhdCBjb25zZWN1dGl2ZSBpbmNyZWFzaW5nIGluZGljZXMgb2YgW3QuZWx0c10sXG4gICBtb2QgdGhlIGNhcGFjaXR5IG9mIFt0XSwgd2hpY2ggaXMgW09wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gIFRoZSBjYXBhY2l0eSBpc1xuICAgcmVxdWlyZWQgdG8gYmUgYSBwb3dlciBvZiB0d28gKHVzZXItcmVxdWVzdGVkIGNhcGFjaXRpZXMgYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgIHBvd2VyKSwgc28gdGhhdCBtb2QgY2FuIHF1aWNrbHkgYmUgY29tcHV0ZWQgdXNpbmcgW2xhbmQgdC5tYXNrXSwgd2hlcmUgW3QubWFzayA9XG4gICBjYXBhY2l0eSB0IC0gMV0uICBTbywgcXVldWUgZWxlbWVudCBbaV0gaXMgYXQgW3QuZWx0cy4oICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKV0uXG5cbiAgIFtudW1fbXV0YXRpb25zXSBpcyB1c2VkIHRvIGRldGVjdCBtb2RpZmljYXRpb24gZHVyaW5nIGl0ZXJhdGlvbi4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBudW1fbXV0YXRpb25zIDogaW50XG4gIDsgbXV0YWJsZSBmcm9udCA6IGludFxuICA7IG11dGFibGUgbWFzayA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV9cbiAgICB7IG51bV9tdXRhdGlvbnMgPSBudW1fbXV0YXRpb25zX18wMDNfXG4gICAgOyBmcm9udCA9IGZyb250X18wMDVfXG4gICAgOyBtYXNrID0gbWFza19fMDA3X1xuICAgIDsgbGVuZ3RoID0gbGVuZ3RoX18wMDlfXG4gICAgOyBlbHRzID0gZWx0c19fMDExX1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDAyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9pbnQgbGVuZ3RoX18wMDlfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGVuZ3RoXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBtYXNrX18wMDdfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJmcm9udFwiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDRfID0gc2V4cF9vZl9pbnQgbnVtX211dGF0aW9uc19fMDAzXyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm51bV9tdXRhdGlvbnNcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSB0eXBlIFMgPSBRdWV1ZV9pbnRmLlNcblxubGV0IGluY19udW1fbXV0YXRpb25zIHQgPSB0Lm51bV9tdXRhdGlvbnMgPC0gdC5udW1fbXV0YXRpb25zICsgMVxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5sZXQgZWx0c19pbmRleCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrXG5sZXQgdW5zYWZlX2dldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9pc19zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9pc19zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX3NldCB0IGkgYSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSkgYVxubGV0IHVuc2FmZV91bnNldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5cbmxldCBjaGVja19pbmRleF9leG4gdCBpID1cbiAgaWYgaSA8IDAgfHwgaSA+PSB0Lmxlbmd0aFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJRdWV1ZSBpbmRleCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIFsgXCJpbmRleFwiLCBpIHw+IEludC5zZXhwX29mX3Q7IFwibGVuZ3RoXCIsIHQubGVuZ3RoIHw+IEludC5zZXhwX29mX3QgXSlcbjs7XG5cbmxldCBnZXQgdCBpID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgdW5zYWZlX2dldCB0IGlcbjs7XG5cbmxldCBzZXQgdCBpIGEgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICB1bnNhZmVfc2V0IHQgaSBhXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IHQubGVuZ3RoID0gMFxubGV0IGxlbmd0aCB7IGxlbmd0aDsgXyB9ID0gbGVuZ3RoXG5cbmxldCBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zID1cbiAgaWYgdC5udW1fbXV0YXRpb25zIDw+IG51bV9tdXRhdGlvbnNcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwibXV0YXRpb24gb2YgcXVldWUgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICAgICBbIFwiXCIsIHQgfD4gc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIF0pXG47O1xuXG5sZXQgY29tcGFyZSA9XG4gIGxldCByZWMgdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCBwb3MgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MiA9XG4gICAgbWF0Y2ggcG9zID0gbGVuMSwgcG9zID0gbGVuMiB3aXRoXG4gICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgIGxldCB4ID0gY29tcGFyZV9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgMCAtPiB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyXG4gICAgICAgfCBuIC0+IG4pXG4gIGluXG4gIGZ1biBjb21wYXJlX2VsdCB0MSB0MiAtPlxuICAgIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB0aGVuIDBcbiAgICBlbHNlXG4gICAgICB1bnNhZmVfY29tcGFyZV9mcm9tXG4gICAgICAgIGNvbXBhcmVfZWx0XG4gICAgICAgIDBcbiAgICAgICAgfnQxXG4gICAgICAgIH50MlxuICAgICAgICB+bGVuMTp0MS5sZW5ndGhcbiAgICAgICAgfmxlbjI6dDIubGVuZ3RoXG4gICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGVxdWFsID1cbiAgbGV0IHJlYyB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgcG9zIH50MSB+dDIgfm11dDEgfm11dDIgfmxlbiA9XG4gICAgcG9zID0gbGVuXG4gICAgfHxcbiAgICBsZXQgYiA9IGVxdWFsX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDEgbXV0MTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICBiICYmIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuXG4gIGluXG4gIGZ1biBlcXVhbF9lbHQgdDEgdDIgLT5cbiAgICBwaHlzX2VxdWFsIHQxIHQyXG4gICAgfHxcbiAgICBsZXQgbGVuMSA9IHQxLmxlbmd0aCBpblxuICAgIGxldCBsZW4yID0gdDIubGVuZ3RoIGluXG4gICAgbGVuMSA9IGxlbjJcbiAgICAmJiB1bnNhZmVfZXF1YWxfZnJvbVxuICAgICAgICAgZXF1YWxfZWx0XG4gICAgICAgICAwXG4gICAgICAgICB+dDFcbiAgICAgICAgIH50MlxuICAgICAgICAgfmxlbjpsZW4xXG4gICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgeyBudW1fbXV0YXRpb25zOyBtYXNrID0gXzsgZWx0czsgZnJvbnQ7IGxlbmd0aCB9ID0gdCBpblxuICBhc3NlcnQgKGZyb250ID49IDApO1xuICBhc3NlcnQgKGZyb250IDwgY2FwYWNpdHkgdCk7XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgYXNzZXJ0IChjYXBhY2l0eSA9IE9wdGlvbl9hcnJheS5sZW5ndGggZWx0cyk7XG4gIGFzc2VydCAoY2FwYWNpdHkgPj0gMSk7XG4gIGFzc2VydCAoSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkpO1xuICBmb3IgaSA9IDAgdG8gY2FwYWNpdHkgLSAxIGRvXG4gICAgaWYgaSA8IHQubGVuZ3RoXG4gICAgdGhlbiAoXG4gICAgICBpbnZhcmlhbnRfYSAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucylcbiAgICBlbHNlIGFzc2VydCAobm90ICh1bnNhZmVfaXNfc2V0IHQgaSkpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgP2NhcGFjaXR5ICgpIDogYSB0ID1cbiAgbGV0IGNhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiY2Fubm90IGhhdmUgcXVldWUgd2l0aCBuZWdhdGl2ZSBjYXBhY2l0eVwiXG4gICAgICAgICAgICAgWyBcImNhcGFjaXR5XCIsIGNhcGFjaXR5IHw+IEludC5zZXhwX29mX3QgXSlcbiAgICAgIGVsc2UgaWYgY2FwYWNpdHkgPSAwXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgSW50LmNlaWxfcG93MiBjYXBhY2l0eVxuICBpblxuICB7IG51bV9tdXRhdGlvbnMgPSAwXG4gIDsgZnJvbnQgPSAwXG4gIDsgbWFzayA9IGNhcGFjaXR5IC0gMVxuICA7IGxlbmd0aCA9IDBcbiAgOyBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOmNhcGFjaXR5XG4gIH1cbjs7XG5cbmxldCBibGl0X3RvX2FycmF5IH5zcmMgZHN0ID1cbiAgYXNzZXJ0IChzcmMubGVuZ3RoIDw9IE9wdGlvbl9hcnJheS5sZW5ndGggZHN0KTtcbiAgbGV0IGZyb250X2xlbiA9IEludC5taW4gc3JjLmxlbmd0aCAoY2FwYWNpdHkgc3JjIC0gc3JjLmZyb250KSBpblxuICBsZXQgcmVzdF9sZW4gPSBzcmMubGVuZ3RoIC0gZnJvbnRfbGVuIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46ZnJvbnRfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6c3JjLmZyb250IH5kc3QgfmRzdF9wb3M6MDtcbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpyZXN0X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3Bvczpmcm9udF9sZW5cbjs7XG5cbmxldCBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCBuZXdfY2FwYWNpdHkgPVxuICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICBibGl0X3RvX2FycmF5IH5zcmM6dCBkc3Q7XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gIHQuZWx0cyA8LSBkc3Rcbjs7XG5cbmxldCBzZXRfY2FwYWNpdHkgdCBkZXNpcmVkX2NhcGFjaXR5ID1cbiAgKCogV2UgYWxsb3cgYXJndW1lbnRzIGxlc3MgdGhhbiAxIHRvIFtzZXRfY2FwYWNpdHldLCBidXQgdHJhbnNsYXRlIHRoZW0gdG8gMSB0byBzaW1wbGlmeVxuICAgICB0aGUgY29kZSB0aGF0IHJlbGllcyBvbiB0aGUgYXJyYXkgbGVuZ3RoIGJlaW5nIGEgcG93ZXIgb2YgMi4gKilcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5jZWlsX3BvdzIgKG1heCAxIChtYXggZGVzaXJlZF9jYXBhY2l0eSB0Lmxlbmd0aCkpIGluXG4gIGlmIG5ld19jYXBhY2l0eSA8PiBjYXBhY2l0eSB0IHRoZW4gc2V0X2NhcGFjaXR5X2ludGVybmFsIHQgbmV3X2NhcGFjaXR5XG47O1xuXG5sZXQgZW5xdWV1ZSB0IGEgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCAoMiAqIHQubGVuZ3RoKTtcbiAgdW5zYWZlX3NldCB0IHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGRlcXVldWVfbm9uZW1wdHkgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBlbHRzID0gdC5lbHRzIGluXG4gIGxldCBmcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBmcm9udCBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgZWx0cyBmcm9udDtcbiAgdC5mcm9udCA8LSBlbHRzX2luZGV4IHQgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIFN0ZGxpYi5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGRlcXVldWVfYW5kX2lnbm9yZV9leG4gKHR5cGUgZWx0KSAodCA6IGVsdCB0KSA9IGlnbm9yZSAoZGVxdWV1ZV9leG4gdCA6IGVsdClcbmxldCBmcm9udF9ub25lbXB0eSB0ID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIHQuZnJvbnRcbmxldCBsYXN0X25vbmVtcHR5IHQgPSB1bnNhZmVfZ2V0IHQgKHQubGVuZ3RoIC0gMSlcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGZyb250X25vbmVtcHR5IHQpXG5sZXQgcGVla19leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBTdGRsaWIuUXVldWUuRW1wdHkgZWxzZSBsYXN0X25vbmVtcHR5IHRcblxubGV0IGNsZWFyIHQgPVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgdW5zYWZlX3Vuc2V0IHQgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMDtcbiAgICB0LmZyb250IDwtIDApXG47O1xuXG5sZXQgYmxpdF90cmFuc2ZlciB+c3JjIH5kc3QgP2xlbiAoKSA9XG4gIGluY19udW1fbXV0YXRpb25zIHNyYztcbiAgaW5jX251bV9tdXRhdGlvbnMgZHN0O1xuICBsZXQgbGVuID1cbiAgICBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBzcmMubGVuZ3RoXG4gICAgfCBTb21lIGxlbiAtPlxuICAgICAgaWYgbGVuIDwgMFxuICAgICAgdGhlblxuICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgIFwiUXVldWUuYmxpdF90cmFuc2ZlcjogbmVnYXRpdmUgbGVuZ3RoXCJcbiAgICAgICAgICAgICBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICAgICAgbWluIGxlbiBzcmMubGVuZ3RoXG4gIGluXG4gIGlmIGxlbiA+IDBcbiAgdGhlbiAoXG4gICAgc2V0X2NhcGFjaXR5IGRzdCAobWF4IChjYXBhY2l0eSBkc3QpIChkc3QubGVuZ3RoICsgbGVuKSk7XG4gICAgbGV0IGRzdF9zdGFydCA9IGRzdC5mcm9udCArIGRzdC5sZW5ndGggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgKCogVGhpcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHNpbXBseSBbZW5xdWV1ZSBkc3QgKGRlcXVldWVfbm9uZW1wdHkgc3JjKV0gKilcbiAgICAgIGxldCBzcmNfaSA9IChzcmMuZnJvbnQgKyBpKSBsYW5kIHNyYy5tYXNrIGluXG4gICAgICBsZXQgZHN0X2kgPSAoZHN0X3N0YXJ0ICsgaSkgbGFuZCBkc3QubWFzayBpblxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZVxuICAgICAgICBkc3QuZWx0c1xuICAgICAgICBkc3RfaVxuICAgICAgICAoT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gc3JjLmVsdHMgc3JjX2kpO1xuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBzcmMuZWx0cyBzcmNfaVxuICAgIGRvbmU7XG4gICAgZHN0Lmxlbmd0aCA8LSBkc3QubGVuZ3RoICsgbGVuO1xuICAgIHNyYy5mcm9udCA8LSAoc3JjLmZyb250ICsgbGVuKSBsYW5kIHNyYy5tYXNrO1xuICAgIHNyYy5sZW5ndGggPC0gc3JjLmxlbmd0aCAtIGxlbilcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgc2V0X2NhcGFjaXR5IHQgKEludC5tYXggKGNhcGFjaXR5IHQpICh0Lmxlbmd0aCArIExpc3QubGVuZ3RoIGwpKTtcbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG51bV9tdXRhdGlvbnMgPSB0Lm51bV9tdXRhdGlvbnMgaW5cbiAgICBsZXQgciA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gICAgZG9uZTtcbiAgICAhcilcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgYSAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5cbigqIFtpdGVyXSBpcyBpbXBsZW1lbnRlZCBkaXJlY3RseSBiZWNhdXNlIGltcGxlbWVudGluZyBpdCBpbiB0ZXJtcyBvZiBbZm9sZF0gaXNcbiAgIHNsb3dlci4gKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHJlc3VsdCA6PSB1bnNhZmVfZ2V0IHQgaSA6OiAhcmVzdWx0XG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuXG5cbigqIEZvciBbY29uY2F0X21hcF0sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJdLCB3ZSBkb24ndCBjcmVhdGUgW3RfcmVzdWx0XSB3aXRoIFt0XSdzXG4gICBjYXBhY2l0eSBiZWNhdXNlIHdlIGhhdmUgbm8gaWRlYSBob3cgbWFueSBlbGVtZW50cyBbdF9yZXN1bHRdIHdpbGwgdWx0aW1hdGVseSBob2xkLiAqKVxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSB0X3Jlc3VsdCBiKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHRfcmVzdWx0IGEpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXIgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdDIgPSBmaWx0ZXJpIHQgfmYgaW5cbiAgY2xlYXIgdDtcbiAgYmxpdF90cmFuc2ZlciB+c3JjOnQyIH5kc3Q6dCAoKVxuOztcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6c3JjLmxlbmd0aCAoKSBpblxuICBibGl0X3RvX2FycmF5IH5zcmMgZHN0LmVsdHM7XG4gIGRzdC5sZW5ndGggPC0gc3JjLmxlbmd0aDtcbiAgZHN0XG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTooTGlzdC5sZW5ndGggbCkgKCkgaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxuKCogVGhlIHF1ZXVlIFt0XSByZXR1cm5lZCBieSBbY3JlYXRlXSB3aWxsIGhhdmUgW3QubGVuZ3RoID0gMF0sIFt0LmZyb250ID0gMF0sIGFuZFxuICAgW2NhcGFjaXR5IHQgPSBJbnQuY2VpbF9wb3cyIGxlbl0uICBTbywgd2Ugb25seSBoYXZlIHRvIHNldCBbdC5sZW5ndGhdIHRvIFtsZW5dIGFmdGVyXG4gICB0aGUgYmxpdCB0byBtYWludGFpbiBhbGwgdGhlIGludmFyaWFudHM6IFt0Lmxlbmd0aF0gaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50c1xuICAgaW4gdGhlIHF1ZXVlLCBbdC5mcm9udF0gaXMgdGhlIGFycmF5IGluZGV4IG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXS4gKilcbmxldCBpbml0IGxlbiB+ZiA9XG4gIGlmIGxlbiA8IDBcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2UgXCJRdWV1ZS5pbml0OiBuZWdhdGl2ZSBsZW5ndGhcIiBbIFwibGVuZ3RoXCIsIGxlbiB8PiBJbnQuc2V4cF9vZl90IF0pO1xuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6bGVuICgpIGluXG4gIGFzc2VydCAoT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgPj0gbGVuKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyBpIChmIGkpXG4gIGRvbmU7XG4gIHQubGVuZ3RoIDwtIGxlbjtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGEgPSBpbml0IChBcnJheS5sZW5ndGggYSkgfmY6KEFycmF5LnVuc2FmZV9nZXQgYSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCB0Lmxlbmd0aCB+ZjooZnVuIGkgLT4gdW5zYWZlX2dldCB0IGkpXG5cbmxldCBtYXAgdGEgfmYgPVxuICBsZXQgbnVtX211dGF0aW9ucyA9IHRhLm51bV9tdXRhdGlvbnMgaW5cbiAgbGV0IHRiID0gY3JlYXRlIH5jYXBhY2l0eTp0YS5sZW5ndGggKCkgaW5cbiAgdGIubGVuZ3RoIDwtIHRhLmxlbmd0aDtcbiAgZm9yIGkgPSAwIHRvIHRhLmxlbmd0aCAtIDEgZG9cbiAgICBsZXQgYiA9IGYgKHVuc2FmZV9nZXQgdGEgaSkgaW5cbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdGEgbnVtX211dGF0aW9ucztcbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHRiLmVsdHMgaSBiXG4gIGRvbmU7XG4gIHRiXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBtYXAgdCB+ZjooZnVuIGEgLT5cbiAgICBsZXQgcmVzdWx0ID0gZiAhaSBhIGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgcmVzdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSB+Y2FwYWNpdHk6MSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkbGliLk5hdGl2ZWludFxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9XG4gICAgKGdsb2JhbGl6ZV9uYXRpdmVpbnQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKG5hdGl2ZWludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9uYXRpdmVpbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gbmF0aXZlaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVueFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLk5hdGl2ZWludFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bV9iaXRzID0gV29yZF9zaXplLm51bV9iaXRzIFdvcmRfc2l6ZS53b3JkX3NpemVcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIk5hdGl2ZWludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5OYXRpdmVpbnQubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLk5hdGl2ZWludC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgKHggOiBuYXRpdmVpbnQpID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLk5hdGl2ZWludC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLk5hdGl2ZWludC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuTmF0aXZlaW50LnByZWQgeCA9IDBuXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgbmF0aXZlaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChuYXRpdmVpbnRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgU3RkbGliLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5OYXRpdmVpbnQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIltOYXRpdmVpbnQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBpZiBTdGRsaWIuTmF0aXZlaW50LmVxdWFsIGkgU3RkbGliLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuTmF0aXZlaW50LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9uYXRpdmVpbnQgdCA9IHRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50IHQgPSB0XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQubmF0aXZlaW50X3BvcGNvdW50XG5sZXQgb2ZfaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX25hdGl2ZWludFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IHRvX2ludDMyX3RydW5jID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBwb3cgYiBlID0gb2ZfaW50X2V4biAoSW50X21hdGguUHJpdmF0ZS5pbnRfcG93ICh0b19pbnRfZXhuIGIpICh0b19pbnRfZXhuIGUpKVxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtOYXRpdmVpbnRdIGFuZCBbTmF0aXZlaW50Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuZXh0ZXJuYWwgYnN3YXAgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtTdGRsaWIuT2JqLm1hZ2ljXSBpcyBjb3JyZWN0IGFuZCBzYWZlLiAqKVxuICBsZXQgb2ZfY29udGludWVfb3Jfc3RvcCA6IENvbnRpbnVlX29yX3N0b3AudCAtPiB0ID0gU3RkbGliLk9iai5tYWdpY1xuICBsZXQgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50ID0gU3RkbGliLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbigqIFtXaXRoX2xlbmd0aC50XSBhbGxvd3MgdXMgdG8gc3RvcmUgbGVuZ3RoIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFjayB3aGlsZVxuICAga2VlcGluZyB0aGUgdHJlZSBnbG9iYWwuIFRoaXMgc2F2ZXMgdXAgdG8gTyhsb2cgbikgYmxvY2tzIG9mIGhlYXAgYWxsb2NhdGlvbi4gKilcbm1vZHVsZSBXaXRoX2xlbmd0aCA6IHNpZ1xuICB0eXBlICdhIHQgPSBwcml2YXRlXG4gICAgeyB0cmVlIDogJ2FcbiAgICAgICAgICAgICBbQGdsb2JhbF1cbiAgICA7IGxlbmd0aCA6IGludCBbQGdsb2JhbF1cbiAgICB9XG5cbiAgdmFsIHdpdGhfbGVuZ3RoIDogJ2EgLT4gaW50IC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCB3aXRoX2xlbmd0aF9nbG9iYWwgOiAnYSAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgZ2xvYmFsaXplIDogKCdhIHRbQGxvY2FsXSkgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0cmVlIDogJ2EgW0BnbG9iYWxdXG4gICAgOyBsZW5ndGggOiBpbnQgW0BnbG9iYWxdXG4gICAgfVxuXG4gIGxldCB3aXRoX2xlbmd0aCB0cmVlIGxlbmd0aCA9ICB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCB3aXRoX2xlbmd0aF9nbG9iYWwgdHJlZSBsZW5ndGggPSB7IHRyZWU7IGxlbmd0aCB9XG4gIGxldCBnbG9iYWxpemUgKHsgdHJlZTsgbGVuZ3RoIH0gW0Bsb2NhbF0pID0geyB0cmVlOyBsZW5ndGggfVxuZW5kXG5cbm9wZW4gV2l0aF9sZW5ndGhcblxubW9kdWxlIFRyZWUwID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgTGVhZiBvZiAnayAqICd2XG4gICAgfCBOb2RlIG9mICgnaywgJ3YpIHQgKiAnayAqICd2ICogKCdrLCAndikgdCAqIGludFxuXG4gIHR5cGUgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIHRcblxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBfLCBoKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgPVxuICAgIGxldCBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrID1cbiAgICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICB8IFNvbWUgbG93ZXIgLT4gY29tcGFyZV9rZXkgbG93ZXIgayA8IDApXG4gICAgICAmJlxuICAgICAgbWF0Y2ggdXBwZXIgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSB1cHBlciAtPiBjb21wYXJlX2tleSBrIHVwcGVyIDwgMFxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTGVhZiAoaywgXykgLT4gaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgfCBOb2RlIChsLCBrLCBfLCByLCBoKSAtPlxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgICAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgICBhYnMgKGhsIC0gaHIpIDw9IDJcbiAgICAgICAgJiYgaCA9IG1heCBobCBociArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkga1xuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIGspIGNvbXBhcmVfa2V5IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSBrKSB1cHBlciBjb21wYXJlX2tleSByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9rZXkgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9rZXkgdFxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMiAqKVxuICBsZXQgY3JlYXRlIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA9IDAgJiYgaHIgPSAwXG4gICAgdGhlbiBMZWFmICh4LCBkKVxuICAgIGVsc2UgTm9kZSAobCwgeCwgZCwgciwgaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpXG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IExlYWYgKGtleSwgZGF0YSlcblxuICAoKiBXZSBtdXN0IGNhbGwgW2ZdIHdpdGggaW5jcmVhc2luZyBpbmRleGVzLCBiZWNhdXNlIHRoZSBiaW5fcHJvdCByZWFkZXIgaW5cbiAgICAgQ29yZS5NYXAgbmVlZHMgaXQuICopXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgbiB+ZiBpIDogKF8sIF8pIHQgPVxuICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICB8IDAgLT4gRW1wdHlcbiAgICAgIHwgMSAtPlxuICAgICAgICBsZXQgaywgdiA9IGYgaSBpblxuICAgICAgICBMZWFmIChrLCB2KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgRW1wdHksIDIpXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBsZXQga3IsIHZyID0gZiAoaSArIDIpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIExlYWYgKGtyLCB2ciksIDIpXG4gICAgICB8IG4gLT5cbiAgICAgICAgbGV0IGxlZnRfbGVuZ3RoID0gbiBsc3IgMSBpblxuICAgICAgICBsZXQgcmlnaHRfbGVuZ3RoID0gbiAtIGxlZnRfbGVuZ3RoIC0gMSBpblxuICAgICAgICBsZXQgbGVmdCA9IGxvb3AgbGVmdF9sZW5ndGggfmYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyBsZWZ0X2xlbmd0aCkgaW5cbiAgICAgICAgbGV0IHJpZ2h0ID0gbG9vcCByaWdodF9sZW5ndGggfmYgKGkgKyBsZWZ0X2xlbmd0aCArIDEpIGluXG4gICAgICAgIGNyZWF0ZSBsZWZ0IGsgdiByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDJcbiAgICAgICAgIHx8XG4gICAgICAgICBsZXQgazAsIF8gPSBhcnJheS4oMCkgaW5cbiAgICAgICAgIGxldCBrMSwgXyA9IGFycmF5LigxKSBpblxuICAgICAgICAgY29tcGFyZV9rZXkgazAgazEgPCAwXG4gICAgICB0aGVuIGZ1biBpIC0+IGFycmF5LihpKVxuICAgICAgZWxzZSBmdW4gaSAtPiBhcnJheS4oYXJyYXlfbGVuZ3RoIC0gMSAtIGkpXG4gICAgaW5cbiAgICBcbiAgICAgICh3aXRoX2xlbmd0aFxuICAgICAgICAgKG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHQpXG4gICAgICAgICBhcnJheV9sZW5ndGgpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+XG4gICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSlcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oMCkpIChmc3QgYXJyYXkuKDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LihpKSkgKGZzdCBhcnJheS4oaSArIDEpKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpKVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsKSAtIGhlaWdodChyKXwgPD0gMyAqKVxuICBsZXQgYmFsIGwgeCBkIHIgPVxuICAgIGxldCBobCA9IGhlaWdodCBsIGluXG4gICAgbGV0IGhyID0gaGVpZ2h0IHIgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBociArIDIgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsZCwgbHIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHJcbiAgICAgICAgdGhlbiBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKGxydiwgbHJkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBFbXB0eSkgbHJ2IGxyZCAoY3JlYXRlIEVtcHR5IHggZCByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyZCwgbHJyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogaGVpZ2h0KExlYWYpID0gMSAmJiAxIGlzIG5vdCBsYXJnZXIgdGhhbiBobCArIDIgKilcbiAgICAgIHwgTm9kZSAocmwsIHJ2LCByZCwgcnIsIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybCkgcnYgcmQgcnJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcmwgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICB8IExlYWYgKHJsdiwgcmxkKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHggZCBFbXB0eSkgcmx2IHJsZCAoY3JlYXRlIEVtcHR5IHJ2IHJkIHJyKVxuICAgICAgICAgIHwgTm9kZSAocmxsLCBybHYsIHJsZCwgcmxyLCBfKSAtPlxuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKSkpXG4gICAgZWxzZSBjcmVhdGUgbCB4IGQgclxuICA7O1xuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgcmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5IH5zZXhwX29mX2tleSA9XG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIltNYXAuYWRkX2V4bl0gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIG1vZHVsZSBBZGRfb3Jfc2V0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbFxuICAgICAgfCBBZGRfZXhuXG4gICAgICB8IFNldFxuICBlbmRcblxuICBsZXQgcmVjIGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgICAgIH5rZXk6eFxuICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICAgICB+KGFkZF9vcl9zZXQgOiBBZGRfb3Jfc2V0LnQpXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAoeCwgZGF0YSkpIChsZW5ndGggKyAxKSlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZSlcbiAgICAgICAgfCBBZGRfZXhuIC0+ICAocmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5KVxuICAgICAgICB8IFNldCAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmICh4LCBkYXRhKSkgbGVuZ3RoKSlcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCAoTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSkgKGxlbmd0aCArIDEpKVxuICAgICAgZWxzZSAgKHdpdGhfbGVuZ3RoIChOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpKSAobGVuZ3RoICsgMSkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBEdXBsaWNhdGUpXG4gICAgICAgIHwgQWRkX2V4biAtPiAgKHJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQgfmtleTp4IH5zZXhwX29mX2tleSlcbiAgICAgICAgfCBTZXQgLT4gICh3aXRoX2xlbmd0aCAoTm9kZSAobCwgeCwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBsZXNzIHRoYW4gYWxsIHRoZSBleGlzdGluZyBrZXlzICopXG4gIGxldCByZWMgc2V0X21pbiBrZXkgZGF0YSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKGtleSwgZGF0YSlcbiAgICB8IExlYWYgKHYsIGQpIC0+IE5vZGUgKExlYWYgKGtleSwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsID0gc2V0X21pbiBrZXkgZGF0YSBsIGluXG4gICAgICBiYWwgbCB2IGQgclxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFtzZXQnXSBmb3IgdGhlIGNhc2Ugd2hlbiBba2V5XSBpcyBncmVhdGVyIHRoYW4gYWxsIHRoZVxuICAgICBleGlzdGluZyBrZXlzICAqKVxuICBsZXQgcmVjIHNldF9tYXggdCBrZXkgZGF0YSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrZXksIGRhdGEpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoa2V5LCBkYXRhKSwgMilcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgciA9IHNldF9tYXggciBrZXkgZGF0YSBpblxuICAgICAgYmFsIGwgdiBkIHJcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG4pXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgXG4gICAgICAoZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgdFxuICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleVxuICAgICAgICAgfnNleHBfb2Zfa2V5XG4gICAgICAgICB+YWRkX29yX3NldDpBZGRfZXhuX2ludGVybmFsKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXk6KGZ1biBfIC0+IExpc3QgW10pXG4gICAgICAgICB+YWRkX29yX3NldDpTZXQpXG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSAoc2V0IHQgfmxlbmd0aDowIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KS50cmVlXG5cbiAgbW9kdWxlIEJ1aWxkX2luY3JlYXNpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRnJhZ21lbnQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnaywgJ3YpIHQgPVxuICAgICAgICB7IGxlZnRfc3VidHJlZSA6ICgnaywgJ3YpIHRcbiAgICAgICAgOyBrZXkgOiAna1xuICAgICAgICA7IGRhdGEgOiAndlxuICAgICAgICB9XG5cbiAgICAgIGxldCBzaW5nbGV0b25fdG9fdHJlZV9leG4gPSBmdW5jdGlvblxuICAgICAgICB8IHsgbGVmdF9zdWJ0cmVlID0gRW1wdHk7IGtleTsgZGF0YSB9IC0+IHNpbmdsZXRvbiBrZXkgZGF0YVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJNYXAuc2luZ2xldG9uX3RvX3RyZWVfZXhuOiBub3QgYSBzaW5nbGV0b25cIlxuICAgICAgOztcblxuICAgICAgbGV0IHNpbmdsZXRvbiB+a2V5IH5kYXRhID0geyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH1cblxuICAgICAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwubGVmdF9zdWJ0cmVlKSAtIGhlaWdodChyKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGNvbGxhcHNlIGwgciA9IGNyZWF0ZSBsLmxlZnRfc3VidHJlZSBsLmtleSBsLmRhdGEgclxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIubGVmdF9zdWJ0cmVlKXwgPD0gMixcbiAgICAgICAgIG1heF9rZXkobCkgPCBtaW5fa2V5KHIpXG4gICAgICAqKVxuICAgICAgbGV0IGpvaW4gbCByID0geyByIHdpdGggbGVmdF9zdWJ0cmVlID0gY29sbGFwc2UgbCByLmxlZnRfc3VidHJlZSB9XG4gICAgICBsZXQgbWF4X2tleSB0ID0gdC5rZXlcbiAgICBlbmRcblxuICAgICgqKiBCdWlsZCB0cmVlcyBmcm9tIHNpbmdsZXRvbnMgaW4gYSBiYWxhbmNlZCB3YXkgYnkgdXNpbmcgc2tldyBiaW5hcnkgZW5jb2RpbmcuXG4gICAgICAgIEVhY2ggbGV2ZWwgY29udGFpbnMgdHJlZXMgb2YgdGhlIHNhbWUgaGVpZ2h0LCBjb25zZWN1dGl2ZSBsZXZlbHMgaGF2ZSBjb25zZWN1dGl2ZVxuICAgICAgICBoZWlnaHRzLiBUaGVyZSBhcmUgbm8gZ2Fwcy4gVGhlIGZpcnN0IGxldmVsIGFyZSBzaW5nbGUga2V5cy5cbiAgICAqKVxuICAgIHR5cGUgKCdrLCAndikgdCA9XG4gICAgICB8IFplcm8gb2YgdW5pdFxuICAgICAgKCogW3VuaXRdIHRvIG1ha2UgcGF0dGVybiBtYXRjaGluZyBmYXN0ZXIgKilcbiAgICAgIHwgT25lIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50XG4gICAgICB8IFR3byBvZiAoJ2ssICd2KSB0ICogKCdrLCAndikgRnJhZ21lbnQudCAqICgnaywgJ3YpIEZyYWdtZW50LnRcblxuICAgIGxldCBlbXB0eSA9IFplcm8gKClcblxuICAgIGxldCBhZGRfdW5jaGVja2VkID1cbiAgICAgIGxldCByZWMgZ28gdCB4ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgWmVybyAoKSAtPiBPbmUgKHQsIHgpXG4gICAgICAgIHwgT25lICh0LCB5KSAtPiBUd28gKHQsIHksIHgpXG4gICAgICAgIHwgVHdvICh0LCB6LCB5KSAtPiBPbmUgKGdvIHQgKEZyYWdtZW50LmpvaW4geiB5KSwgeClcbiAgICAgIGluXG4gICAgICBmdW4gdCB+a2V5IH5kYXRhIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbiB+a2V5IH5kYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZV91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHIgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IHJcbiAgICAgICAgfCBPbmUgKHQsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIGwgcilcbiAgICAgICAgfCBUd28gKHQsIGxsLCBsKSAtPiBnbyB0IChGcmFnbWVudC5jb2xsYXBzZSAoRnJhZ21lbnQuam9pbiBsbCBsKSByKVxuICAgICAgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gRW1wdHlcbiAgICAgIHwgT25lICh0LCByKSAtPiBnbyB0IChGcmFnbWVudC5zaW5nbGV0b25fdG9fdHJlZV9leG4gcilcbiAgICAgIHwgVHdvICh0LCBsLCByKSAtPiBnbyAoT25lICh0LCBsKSkgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgIDs7XG5cbiAgICBsZXQgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gKCkgLT4gTm9uZVxuICAgICAgfCBPbmUgKF8sIHIpIHwgVHdvIChfLCBfLCByKSAtPiBTb21lIChGcmFnbWVudC5tYXhfa2V5IHIpXG4gICAgOztcbiAgZW5kXG5cblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCB7IHRyZWUgPSBidWlsZGVyOyBsZW5ndGggfSA9XG4gICAgICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgICAgICBzZXFcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIEJ1aWxkX2luY3JlYXNpbmcuZW1wdHkgMClcbiAgICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGJ1aWxkZXI7IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICBtYXRjaCBCdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgYnVpbGRlciB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJlX2tleSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICAgICAgICByZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbFxuICAgICAgICAgICAgICAgIChCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgYnVpbGRlciB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgIChsZW5ndGggKyAxKSlcbiAgICAgIGluXG4gICAgICBPayAod2l0aF9sZW5ndGhfZ2xvYmFsIChCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIGJ1aWxkZXIpIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogTGlrZSBbYmFsXSBidXQgYWxsb3dzIGFueSBkaWZmZXJlbmNlIGluIGhlaWdodCBiZXR3ZWVuIFtsXSBhbmQgW3JdLlxuXG4gICAgIE8ofGhlaWdodCBsIC0gaGVpZ2h0IHJ8KSAqKVxuICBsZXQgcmVjIGpvaW4gbCBrIGQgciA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXRfbWluIGsgZCByXG4gICAgfCBfLCBFbXB0eSAtPiBzZXRfbWF4IGwgayBkXG4gICAgfCBMZWFmIChsaywgbGQpLCBfIC0+IHNldF9taW4gbGsgbGQgKHNldF9taW4gayBkIHIpXG4gICAgfCBfLCBMZWFmIChyaywgcmQpIC0+IHNldF9tYXggKHNldF9tYXggbCBrIGQpIHJrIHJkXG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByKVxuICAgICAgZWxzZSBpZiByaCA+IGxoICsgM1xuICAgICAgdGhlbiBiYWwgKGpvaW4gbCBrIGQgcmwpIHJrIHJkIHJyXG4gICAgICBlbHNlIGJhbCBsIGsgZCByXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmVdIHJlYyBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eSwgTm9uZSwgRW1wdHlcbiAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBsLCBTb21lIChrLCBkKSwgclxuICAgICAgZWxzZSBpZiBjbXAgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGxsLCBtYXliZSwgbHIgPSBzcGxpdF9nZW4gbCB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBsbCwgbWF5YmUsIGpvaW4gbHIgayBkIHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJsLCBtYXliZSwgcnIgPSBzcGxpdF9nZW4gciB4IH5jb21wYXJlX2tleSBpblxuICAgICAgICBqb2luIGwgayBkIHJsLCBtYXliZSwgcnIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPSBzcGxpdF9nZW4gdCB4IH5jb21wYXJlX2tleTooZnVuIHkgLT4gY29tcGFyZV9rZXkgeCB5KVxuXG4gICgqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVhbGx5IHJlaW5zZXJ0IFt4XSwgYnV0IGp1c3QgYXJyYW5nZXMgc28gdGhhdCBbc3BsaXRdXG4gICAgIHByb2R1Y2VzIHRoZSBlcXVpdmFsZW50IHRyZWUgaW4gdGhlIGZpcnN0IHBsYWNlLiAqKVxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID1cbiAgICAgIHNwbGl0X2dlblxuICAgICAgICB0XG4gICAgICAgIHhcbiAgICAgICAgfmNvbXBhcmVfa2V5OlxuICAgICAgICAgIChtYXRjaCBpbnRvIHdpdGhcbiAgICAgICAgICAgfCBgTGVmdCAtPlxuICAgICAgICAgICAgIGZ1biB5IC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgeCB5IHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gMVxuICAgICAgICAgICAgICAgIHwgcmVzIC0+IHJlcylcbiAgICAgICAgICAgfCBgUmlnaHQgLT5cbiAgICAgICAgICAgICBmdW4geSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IHggeSB3aXRoXG4gICAgICAgICAgICAgICAgfCAwIC0+IC0xXG4gICAgICAgICAgICAgICAgfCByZXMgLT4gcmVzKSlcbiAgICBpblxuICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgYm91bmRhcnlfb3B0KTtcbiAgICBsZWZ0LCByaWdodFxuICA7O1xuXG4gIGxldCBzcGxpdF9yYW5nZVxuICAgICAgICB0XG4gICAgICAgIH4obG93ZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+KHVwcGVyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgPVxuICAgIGlmIE1heWJlX2JvdW5kLmJvdW5kc19jcm9zc2VkXG4gICAgICAgICB+Y29tcGFyZTpjb21wYXJlX2tleVxuICAgICAgICAgfmxvd2VyOmxvd2VyX2JvdW5kXG4gICAgICAgICB+dXBwZXI6dXBwZXJfYm91bmRcbiAgICB0aGVuIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZWZ0LCBtaWRfYW5kX3JpZ2h0ID1cbiAgICAgICAgbWF0Y2ggbG93ZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBlbXB0eSwgdFxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGV0IG1pZCwgcmlnaHQgPVxuICAgICAgICBtYXRjaCB1cHBlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IG1pZF9hbmRfcmlnaHQsIGVtcHR5XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+XG4gICAgICAgICAgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBSaWdodCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxlZnQsIG1pZCwgcmlnaHQpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIFNvbWUgZCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGQgZWxzZSBmaW5kIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZGF0YSA9IGRhdGEgOjogT3B0aW9uLnZhbHVlIChmaW5kIHQga2V5IH5jb21wYXJlX2tleSkgfmRlZmF1bHQ6W10gaW5cbiAgICAgKHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggZmluZCB0IHggfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgbCAtPiBsXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuID1cbiAgICBsZXQgaWZfbm90X2ZvdW5kIGtleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgcmFpc2UgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIk1hcC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHNleHBfb2Zfa2V5IGtleSBdKSlcbiAgICBpblxuICAgIGxldCByZWMgZmluZF9leG4gdCB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gZCBlbHNlIGlmX25vdF9mb3VuZCB4IH5zZXhwX29mX2tleVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIGQgZWxzZSBmaW5kX2V4biAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgeCB+Y29tcGFyZV9rZXkgPSBPcHRpb24uaXNfc29tZSAoZmluZCB0IHggfmNvbXBhcmVfa2V5KVxuXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoRW1wdHksIGssIGQsIF8sIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuVHJlZTAuTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIGssIGQsIEVtcHR5LCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgXywgXywgciwgXykgLT4gbWF4X2VsdCByXG4gIDs7XG5cbiAgbGV0IG1heF9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1heF9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICB8IExlYWYgXyAtPiBFbXB0eVxuICAgIHwgTm9kZSAoRW1wdHksIF8sIF8sIHIsIF8pIC0+IHJcbiAgICB8IE5vZGUgKGwsIHgsIGQsIHIsIF8pIC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgeCBkIHJcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbWF4X2VsdCBsb3dlcl9wYXJ0LCBtaW5fZWx0IHVwcGVyX3BhcnQgd2l0aFxuICAgIHwgTm9uZSwgXyAtPiBgT2sgdXBwZXJfcGFydFxuICAgIHwgXywgTm9uZSAtPiBgT2sgbG93ZXJfcGFydFxuICAgIHwgU29tZSAobWF4X2xvd2VyLCBfKSwgU29tZSAobWluX3VwcGVyLCB2KSB3aGVuIGNvbXBhcmVfa2V5IG1heF9sb3dlciBtaW5fdXBwZXIgPCAwIC0+XG4gICAgICBsZXQgdXBwZXJfcGFydF93aXRob3V0X21pbiA9IHJlbW92ZV9taW5fZWx0IHVwcGVyX3BhcnQgaW5cbiAgICAgIGBPayAoam9pbiBsb3dlcl9wYXJ0IG1pbl91cHBlciB2IHVwcGVyX3BhcnRfd2l0aG91dF9taW4pXG4gICAgfCBfIC0+IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlID1cbiAgICAoKiBUaGlzIGFzc3VtZXMgdGhhdCBtaW4gPD0gbWF4LCB3aGljaCBpcyBjaGVja2VkIGJ5IHRoZSBvdXRlciBmdW5jdGlvbi4gKilcbiAgICBsZXQgcmVjIGdvIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW5pdFxuICAgICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIG1pbiA8IDAgfHwgY29tcGFyZV9rZXkgayBtYXggPiAwXG4gICAgICAgIHRoZW4gKCogayA8IG1pbiB8fCBrID4gbWF4ICopXG4gICAgICAgICAgaW5pdFxuICAgICAgICBlbHNlIGYgfmtleTprIH5kYXRhOmQgaW5pdFxuICAgICAgfCBOb2RlIChsLCBrLCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgY19taW4gPSBjb21wYXJlX2tleSBrIG1pbiBpblxuICAgICAgICBpZiBjX21pbiA8IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPCBtaW4sIHRoZW4gdGhpcyBub2RlIGFuZCBpdHMgbGVmdCBicmFuY2ggYXJlIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgaWYgY19taW4gPSAwXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBpZiBrID0gbWluLCB0aGVuIHRoaXMgbm9kZSdzIGxlZnQgYnJhbmNoIGlzIG91dHNpZGUgb3VyIHJhbmdlICopXG4gICAgICAgICAgZ28gciB+bWluIH5tYXggfmluaXQ6KGYgfmtleTprIH5kYXRhOmQgaW5pdCkgfmYgfmNvbXBhcmVfa2V5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGsgPiBtaW4gKilcbiAgICAgICAgICBsZXQgeiA9IGdvIGwgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgIGxldCBjX21heCA9IGNvbXBhcmVfa2V5IGsgbWF4IGluXG4gICAgICAgICAgKCogaWYgayA+IG1heCwgd2UncmUgZG9uZSAqKVxuICAgICAgICAgIGlmIGNfbWF4ID4gMFxuICAgICAgICAgIHRoZW4gelxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IHogPSBmIH5rZXk6ayB+ZGF0YTpkIHogaW5cbiAgICAgICAgICAgICgqIGlmIGsgPSBtYXgsIHRoZW4gd2UgZm9sZCBpbiB0aGlzIG9uZSBsYXN0IHZhbHVlIGFuZCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgICBpZiBjX21heCA9IDAgdGhlbiB6IGVsc2UgZ28gciB+bWluIH5tYXggfmluaXQ6eiB+ZiB+Y29tcGFyZV9rZXkpKVxuICAgIGluXG4gICAgZnVuIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgY29tcGFyZV9rZXkgbWluIG1heCA8PSAwIHRoZW4gZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGVsc2UgaW5pdFxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXkgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgICAgIHRcbiAgICAgICAgIH5taW5cbiAgICAgICAgIH5tYXhcbiAgICAgICAgIH5pbml0OltdXG4gICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgbCAtPiAoa2V5LCBkYXRhKSA6OiBsKVxuICAgICAgICAgfmNvbXBhcmVfa2V5KVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbnM6XG4gICAgIC0gYWxsIGVsZW1lbnRzIGluIHQxIGFyZSBsZXNzIHRoYW4gZWxlbWVudHMgaW4gdDJcbiAgICAgLSB8aGVpZ2h0KHQxKSAtIGhlaWdodCh0Mil8IDw9IDIgKilcbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICAoKiBzaW1pbGFyIHRvIFtjb25jYXRfdW5jaGVja2VkXSwgYW5kIGJhbGFuY2VzIHRyZWVzIG9mIGFyYml0cmFyeSBoZWlnaHQgZGlmZmVyZW5jZXMgKilcbiAgbGV0IGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFJlbW92ZV9ub19vcFxuXG4gIGxldCByZW1vdmUgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHJlbW92ZV9sb29wIHQgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBMZWFmICh2LCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSB4IHYgPSAwXG4gICAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCBFbXB0eSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuICAod2l0aF9sZW5ndGggKGNvbmNhdF91bmNoZWNrZWQgbCByKSAobGVuZ3RoIC0gMSkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gcmVtb3ZlX2xvb3AgbCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHJlbW92ZV9sb29wIHIgeCB+bGVuZ3RoIH5jb21wYXJlX2tleSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAocmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5KSB3aXRoXG4gICAgfCBSZW1vdmVfbm9fb3AgLT4gICh3aXRoX2xlbmd0aCB0IGxlbmd0aClcbiAgOztcblxuICAoKiBVc2UgZXhjZXB0aW9uIHRvIGF2b2lkIHRyZWUtcmVidWlsZCBpbiBuby1vcCBjYXNlICopXG4gIGV4Y2VwdGlvbiBDaGFuZ2Vfbm9fb3BcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIGNoYW5nZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgICAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBDaGFuZ2Vfbm9fb3ApXG4gICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpKVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAgKHdpdGhfbGVuZ3RoIEVtcHR5IChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gICh3aXRoX2xlbmd0aCAoTGVhZiAodiwgZCcpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIEVtcHR5KSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBFbXB0eSB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gICh3aXRoX2xlbmd0aCAoY29uY2F0X3VuY2hlY2tlZCBsIHIpIChsZW5ndGggLSAxKSlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiAgKHdpdGhfbGVuZ3RoIChOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgdHJ5ICAoY2hhbmdlX2NvcmUgdCBrZXkgZikgd2l0aFxuICAgIHwgQ2hhbmdlX25vX29wIC0+ICAod2l0aF9sZW5ndGggdCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiB+bGVuZ3RoIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IHJlYyB1cGRhdGVfY29yZSB0IGtleSBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICBsZXQgZGF0YSA9IGYgTm9uZSBpblxuICAgICAgICAgKHdpdGhfbGVuZ3RoIChMZWFmIChrZXksIGRhdGEpKSAobGVuZ3RoICsgMSkpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGQnID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKExlYWYgKHYsIGQnKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCBFbXB0eSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgRW1wdHkgdiBkIHIpIGxlbmd0aCkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRhdGEgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoTm9kZSAobCwga2V5LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBsIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIHIga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICBpblxuICAgICAodXBkYXRlX2NvcmUgdCBrZXkgZilcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBcbiAgICAgIChjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpKVxuICA7O1xuXG4gIGxldCByZWMgaXRlcl9rZXlzIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIF8pIC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgXywgciwgXykgLT5cbiAgICAgIGl0ZXJfa2V5cyB+ZiBsO1xuICAgICAgZiB2O1xuICAgICAgaXRlcl9rZXlzIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAoXywgZCkgLT4gZiBkXG4gICAgfCBOb2RlIChsLCBfLCBkLCByLCBfKSAtPlxuICAgICAgaXRlciB+ZiBsO1xuICAgICAgZiBkO1xuICAgICAgaXRlciB+ZiByXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyaSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgaXRlcmkgfmYgbDtcbiAgICAgIGYgfmtleTp2IH5kYXRhOmQ7XG4gICAgICBpdGVyaSB+ZiByXG4gIDs7XG5cbiAgbGV0IGl0ZXJpX3VudGlsID1cbiAgICBsZXQgcmVjIGl0ZXJpX3VudGlsX2xvb3AgdCB+ZiA6IENvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZFxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggaXRlcmlfdW50aWxfbG9vcCB+ZiBsIHdpdGhcbiAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICB8IENvbnRpbnVlIC0+XG4gICAgICAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCAtPiBTdG9wXG4gICAgICAgICAgICB8IENvbnRpbnVlIC0+IGl0ZXJpX3VudGlsX2xvb3AgfmYgcikpXG4gICAgaW5cbiAgICBmdW4gdCB+ZiAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLm9mX2NvbnRpbnVlX29yX3N0b3AgKGl0ZXJpX3VudGlsX2xvb3AgdCB+ZilcbiAgOztcblxuICBsZXQgcmVjIG1hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPiBMZWFmICh2LCBmIGQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgbGV0IHInID0gbWFwIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBtYXBpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgfmtleTp2IH5kYXRhOmQpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGwnID0gbWFwaSB+ZiBsIGluXG4gICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBtYXBpIH5mIHIgaW5cbiAgICAgIE5vZGUgKGwnLCB2LCBkJywgcicsIGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkIHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGZvbGQgfmYgciB+aW5pdDooZiB+a2V5OnYgfmRhdGE6ZCAoZm9sZCB+ZiBsIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBmb2xkX3VudGlsX2xvb3AgdCB+YWNjIH5mIDogKF8sIF8pIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY1xuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9sb29wIGwgfmFjYyB+ZiB3aXRoXG4gICAgICAgICB8IFN0b3AgZmluYWwgLT4gU3RvcCBmaW5hbFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgYWNjIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBmb2xkX3VudGlsX2xvb3AgciB+YWNjIH5mKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfbG9vcCB0IH5hY2M6aW5pdCB+ZiB3aXRoXG4gICAgfCBDb250aW51ZSBhY2MgLT4gZmluaXNoIGFjYyBbQG5vbnRhaWxdXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJfbWFwaSB0IH5mIH5sZW4gPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgfCBTb21lIG5ld19kYXRhIC0+IExlYWYgKHYsIG5ld19kYXRhKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBFbXB0eSlcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBuZXdfZGF0YSA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IGZpbHRlcl9tYXBpIHIgfmYgfmxlbiBpblxuICAgICAgKG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT4gam9pbiBsJyB2IG5ld19kYXRhIHInXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaWx0ZXJpIHQgfmYgfmxlbiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICB8IHRydWUgLT4gdFxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgRW1wdHkpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwnID0gZmlsdGVyaSBsIH5mIH5sZW4gaW5cbiAgICAgIGxldCBrZWVwX2RhdGEgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICBsZXQgcicgPSBmaWx0ZXJpIHIgfmYgfmxlbiBpblxuICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgIHRoZW4gdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBqb2luIGwnIHYgZCByJ1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICAgY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgfmxlbiA9IGZpbHRlcmkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiB+bGVuID0gZmlsdGVyaSB0IH5sZW4gfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiB+bGVuID0gZmlsdGVyX21hcGkgdCB+bGVuIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgICBsZXQgdDEsIHQyID1cbiAgICAgIGZvbGRcbiAgICAgICAgdFxuICAgICAgICB+aW5pdDooQnVpbGRfaW5jcmVhc2luZy5lbXB0eSwgQnVpbGRfaW5jcmVhc2luZy5lbXB0eSlcbiAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICh0MSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHggLT4gQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQxIH5rZXkgfmRhdGE6eCwgdDJcbiAgICAgICAgICB8IFNlY29uZCB5IC0+IHQxLCBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdDIgfmtleSB+ZGF0YTp5KVxuICAgIGluXG4gICAgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MSwgQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0MlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICAgIGxldCByZWMgbG9vcCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgfCB0cnVlIC0+IHQsIEVtcHR5XG4gICAgICAgICB8IGZhbHNlIC0+IEVtcHR5LCB0KVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICBsZXQgbCd0LCBsJ2YgPSBsb29wIGwgfmYgaW5cbiAgICAgICAgbGV0IGtlZXBfZGF0YV90ID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgICBsZXQgcid0LCByJ2YgPSBsb29wIHIgfmYgaW5cbiAgICAgICAgbGV0IG1rIGwnIGtlZXBfZGF0YSByJyA9XG4gICAgICAgICAgaWYgcGh5c19lcXVhbCBsIGwnICYmIGtlZXBfZGF0YSAmJiBwaHlzX2VxdWFsIHIgcidcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGtlZXBfZGF0YSB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT4gam9pbiBsJyB2IGQgcidcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgICAgICAgaW5cbiAgICAgICAgbWsgbCd0IGtlZXBfZGF0YV90IHIndCwgbWsgbCdmIChub3Qga2VlcF9kYXRhX3QpIHInZlxuICAgIGluXG4gICAgbG9vcCB0IH5mXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnaywgJ3YsICdkaXJlY3Rpb24pIHQgPVxuICAgICAgfCBFbmRcbiAgICAgIHwgTW9yZSBvZiAnayAqICd2ICogKCdrLCAndikgdHJlZSAqICgnaywgJ3YsICdkaXJlY3Rpb24pIHRcblxuICAgIGxldCByZWMgY29ucyB0IChlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQpIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCB0IChlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gTW9yZSAodiwgZCwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl90cmVlIHRyZWUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9IGNvbnMgdHJlZSBFbmRcbiAgICBsZXQgb2ZfdHJlZV9yaWdodCB0cmVlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPSBjb25zX3JpZ2h0IHRyZWUgRW5kXG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGluY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgXywgciwgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgZCwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmICh2LCBkKSAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgZCwgRW1wdHksIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgZCwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RlcF9kZWVwZXJfZXhuIHRyZWUgZSA9XG4gICAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IEVtcHR5LCBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbCwgTW9yZSAodiwgZCwgciwgZSlcbiAgICA7O1xuXG4gICAgKCogW2Ryb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyXSBkcm9wcyB0aGUgbGFyZ2VzdCBwaHlzaWNhbGx5LWVxdWFsXG4gICAgICAgcHJlZml4IG9mIHRyZWUxIGFuZCB0cmVlMiB0aGF0IHRoZXkgc2hhcmUsIGFuZCB0aGVuIHByZXBlbmRzIHRoZSByZW1haW5pbmcgZGF0YVxuICAgICAgIGludG8gYWNjMSBhbmQgYWNjMiwgcmVzcGVjdGl2ZWx5LlxuICAgICAgIFRoaXMgY2FuIGJlIGFzeW1wdG90aWNhbGx5IGZhc3RlciB0aGFuIFtjb25zXSBldmVuIGlmIGl0IHNraXBzIGEgc21hbGwgcHJvcG9ydGlvblxuICAgICAgIG9mIHRoZSB0cmVlIGJlY2F1c2UgW2NvbnNdIGlzIGFsd2F5cyBPKGxvZyhuKSkgaW4gdGhlIHNpemUgb2YgdGhlIHRyZWUsIHdoaWxlXG4gICAgICAgdGhpcyBmdW5jdGlvbiBpcyBPKGxvZyhuL20pKSB3aGVyZSBbbV0gaXMgdGhlIHNpemUgb2YgdGhlIHBhcnQgb2YgdGhlIHRyZWUgdGhhdFxuICAgICAgIGlzIHNraXBwZWQuICopXG4gICAgbGV0IHJlYyBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICB0aGVuIGFjYzEsIGFjYzJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaDIgPSBoZWlnaHQgdHJlZTIgaW5cbiAgICAgICAgbGV0IGgxID0gaGVpZ2h0IHRyZWUxIGluXG4gICAgICAgIGlmIGgyID0gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBsZXQgdHJlZTIsIGFjYzIgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTIgYWNjMiBpblxuICAgICAgICAgIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyKVxuICAgICAgICBlbHNlIGlmIGgyID4gaDFcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHRyZWUyLCBhY2MyID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUyIGFjYzIgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRyZWUxLCBhY2MxID0gc3RlcF9kZWVwZXJfZXhuIHRyZWUxIGFjYzEgaW5cbiAgICAgICAgICBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGFjYzEgdHJlZTIgYWNjMikpXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGUxLCBlMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggcjEgZTEgcjIgZTIgaW5cbiAgICAgICAgICAgICAgbG9vcCBlMSBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJlxuICAgICAgICAgIGxldCBlMSwgZTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHIxIGUxIHIyIGUyIGluXG4gICAgICAgICAgbG9vcCBlMSBlMlxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYykgW0Bub250YWlsXG4gICAgICAgICAgXVxuICAgICAgICB8IF8sIEVuZCAtPlxuICAgICAgICAgIGZvbGQgdDEgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYExlZnQgZGF0YSkgYWNjKSBbQG5vbnRhaWxcbiAgICAgICAgICBdXG4gICAgICAgIHwgTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpLCBNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBCb3RoICh2MSwgdjIpKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azEgfmRhdGE6KGBMZWZ0IHYxKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MiBuZXh0KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQgPSBmIH5rZXk6azIgfmRhdGE6KGBSaWdodCB2MikgY3VyciBpblxuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikgbmV4dClcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIGluaXQgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGtleSwgYFJpZ2h0IGRhdGE7IHN0YXRlID0gRW5kLCBjb25zIHRyZWUgZW51bSB9XG4gICAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0ga2V5LCBgTGVmdCBkYXRhOyBzdGF0ZSA9IGNvbnMgdHJlZSBlbnVtLCBFbmQgfVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuZXh0X3N0YXRlID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgaWYgZGF0YV9lcXVhbCB2MSB2MlxuICAgICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLlNraXAgeyBzdGF0ZSA9IG5leHRfc3RhdGUgfVxuICAgICAgICAgICAgZWxzZSBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMSwgYFVuZXF1YWwgKHYxLCB2Mik7IHN0YXRlID0gbmV4dF9zdGF0ZSB9KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazEsIGBMZWZ0IHYxOyBzdGF0ZSA9IGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0IH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMiwgYFJpZ2h0IHYyOyBzdGF0ZSA9IGxlZnQsIGNvbnMgdHJlZTIgZW51bTIgfVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0Oihkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQpIH5mOnN0ZXBcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICAgIGxldCByZW1vdmUgYWNjIGsgdiA9IGYgYWNjIChrLCBgTGVmdCB2KSBpblxuICAgICAgbGV0IHJlYyBsb29wIGxlZnQgcmlnaHQgYWNjID1cbiAgICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgICB8IEVuZCwgZW51bSAtPlxuICAgICAgICAgIGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBhZGQgYWNjIGtleSBkYXRhKSBbQG5vbnRhaWxdXG4gICAgICAgIHwgZW51bSwgRW5kIC0+XG4gICAgICAgICAgZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCAoTW9yZSAoazEsIHYxLCB0cmVlMSwgZW51bTEpIGFzIGxlZnQpLCAoTW9yZSAoazIsIHYyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWNjID0gaWYgZGF0YV9lcXVhbCB2MSB2MiB0aGVuIGFjYyBlbHNlIGYgYWNjIChrMSwgYFVuZXF1YWwgKHYxLCB2MikpIGluXG4gICAgICAgICAgICBsZXQgZW51bTEsIGVudW0yID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBlbnVtMSB0cmVlMiBlbnVtMiBpblxuICAgICAgICAgICAgbG9vcCBlbnVtMSBlbnVtMiBhY2MpXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsxIHYxIGluXG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSByaWdodCBhY2MpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrMiB2MiBpblxuICAgICAgICAgICAgbG9vcCBsZWZ0IChjb25zIHRyZWUyIGVudW0yKSBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IGxlZnQsIHJpZ2h0ID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgICBsb29wIGxlZnQgcmlnaHQgaW5pdCBbQG5vbnRhaWxdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXkgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdiwgdCwgZSkgLT5cbiAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gaywgdjsgc3RhdGUgPSBFbnVtLmNvbnMgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrLCB2OyBzdGF0ZSA9IEVudW0uY29uc19yaWdodCB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZV9yaWdodCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZ19rZXkpXG4gICAgICAgID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBpbmNsdXNpdmVfYm91bmQgc2lkZSB0IGJvdW5kID1cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgbCwgbWF5YmUsIHIgPSBzcGxpdCB0IGJvdW5kIH5jb21wYXJlX2tleSBpblxuICAgICAgbGV0IHQgPSBzaWRlIChsLCByKSBpblxuICAgICAgbWF0Y2ggbWF5YmUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSAtPiBzZXQnIHQga2V5IGRhdGEgfmNvbXBhcmVfa2V5XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19sZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byB0XG4gICAgfCBgRGVjcmVhc2luZ19rZXkgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQga2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBzbmQpIGluXG4gICAgICB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5OmtleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBsZXQgZTEsIGUyID0gRW51bS5kcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQgaW5cbiAgICBFbnVtLmNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIGUxIGUyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgbGV0IGUxLCBlMiA9IEVudW0uZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0MSBFbmQgdDIgRW5kIGluXG4gICAgRW51bS5lcXVhbCBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgZTEgZTJcbiAgOztcblxuICBsZXQgaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBFbnVtLmZvbGQyXG4gICAgICBjb21wYXJlX2tleVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MSlcbiAgICAgIChFbnVtLm9mX3RyZWUgdDIpXG4gICAgICB+aW5pdDooKVxuICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhICgpIC0+IGYgfmtleSB+ZGF0YSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBvbGRfdmFscywgRW1wdHkgLT5cbiAgICAgICAgICBmb2xkIG9sZF92YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IHJlbW92ZSBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBMZWFmIChrLCB2KSwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSBrIGsnIHdpdGhcbiAgICAgICAgICAgfCB4IHdoZW4geCA9IDAgLT4gZGVsdGEgYWNjIGsgdiB2J1xuICAgICAgICAgICB8IHggd2hlbiB4IDwgMCAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSByZW1vdmUgYWNjIGsgdiBpblxuICAgICAgICAgICAgIGFkZCBhY2MgaycgdidcbiAgICAgICAgICAgfCBfICgqIHdoZW4geCA+IDAgKikgLT5cbiAgICAgICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBrJyB2JyBpblxuICAgICAgICAgICAgIHJlbW92ZSBhY2MgayB2KVxuICAgICAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pLCBOb2RlIChsJywgaycsIHYnLCByJywgXykgd2hlbiBjb21wYXJlX2tleSBrIGsnID0gMCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBsb29wIGwgbCcgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IGRlbHRhIGFjYyBrIHYgdicgaW5cbiAgICAgICAgICBsb29wIHIgcicgYWNjXG4gICAgICAgICgqIE91ciByb290cyBhcmVuJ3QgdGhlIHNhbWUga2V5LiBGYWxsYmFjayB0byB0aGUgc2xvdyBtb2RlLiBUcmVlcyB3aXRoIHNtYWxsXG4gICAgICAgICAgIGRpZmZzIHdpbGwgb25seSBkbyB0aGlzIG9uIHZlcnkgc21hbGwgcGFydHMgb2YgdGhlIHRyZWUgKGhvcGVmdWxseSAtIGlmIHRoZVxuICAgICAgICAgICBvdmVyYWxsIHJvb3QgaXMgcmViYWxhbmNlZCwgd2UnbGwgZWF0IHRoZSB3aG9sZSBjb3N0LCB1bmZvcnR1bmF0ZWx5LikgKilcbiAgICAgICAgfCBOb2RlIF8sIE5vZGUgXyB8IE5vZGUgXywgTGVhZiBfIHwgTGVhZiBfLCBOb2RlIF8gLT4gc2xvdyB0IHQnIH5pbml0OmFjYylcbiAgICBpblxuICAgIGxvb3AgdDEgdDIgaW5pdCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuICBlbmRcblxuICBsZXRbQGlubGluZSBhbHdheXNdIG9mX2ZvbGRhYmxlJyB+Zm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIChmb2xkIFtAaW5saW5lZCBoaW50XSlcbiAgICAgIGZvbGRhYmxlXG4gICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgcHJldl9kYXRhID1cbiAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbml0XG4gICAgICAgICAgfCBTb21lIHByZXYgLT4gcHJldlxuICAgICAgICBpblxuICAgICAgICBsZXQgZGF0YSA9IGYgcHJldl9kYXRhIGRhdGEgaW5cbiAgICAgICAgKHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIG1vZHVsZSBPZl9mb2xkYWJsZSAoTSA6IEZvbGRhYmxlKSA9IHN0cnVjdFxuICAgIGxldCBvZl9mb2xkYWJsZV9mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBvZl9mb2xkYWJsZScgfmZvbGQ6TS5mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGRcbiAgICAgICAgZm9sZGFibGVcbiAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IGFjY3VtOyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIGxldCBuZXdfZGF0YSA9XG4gICAgICAgICAgICBtYXRjaCBmaW5kIGFjY3VtIGtleSB+Y29tcGFyZV9rZXkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICAgIHwgU29tZSBwcmV2IC0+IGYgcHJldiBkYXRhXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YTpuZXdfZGF0YSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxcbiAgICAgIF1cbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkXG4gICAgICAgICAgICBmb2xkYWJsZVxuICAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCdcbiAgICAgICAgICAgICAgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KVxuICAgICAgICAgICAgICBlbHNlIGdsb2JhbGl6ZSBhY2MgW0Bub250YWlsXSlcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG5cbiAgICAoKiBSZXZlcnNlIHRoZSBpbnB1dCwgdGhlbiBmb2xkIGZyb20gbGVmdCB0byByaWdodC4gVGhlIHJlc3VsdGluZyBtYXAgdXNlcyB0aGUgZmlyc3RcbiAgICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICAgIG91dHB1dCBsaXN0IGlzIHRoZSBzYW1lIGFzIGluIHRoZSBpbnB1dCBsaXN0LiAqKVxuICAgIGxldCBvZl9mb2xkYWJsZV9tdWx0aSBmb2xkYWJsZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgbGV0IGFsaXN0ID0gTS5mb2xkIGZvbGRhYmxlIH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbCkgaW5cbiAgICAgIG9mX2ZvbGRhYmxlJyBhbGlzdCB+Zm9sZDpMaXN0LmZvbGQgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSB+Y29tcGFyZV9rZXlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgT2ZfYWxpc3QgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiYWxpc3RcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBmb2xkID0gTGlzdC5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9hbGlzdF9mb2xkID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9hbGlzdCA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9hbGlzdF9leG4gPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9leG5cbiAgbGV0IG9mX2FsaXN0X211bHRpID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfbXVsdGlcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX211bHRpXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgbGV0IG1hcCA9XG4gICAgICAgIExpc3QuZm9sZFxuICAgICAgICAgIGxpc3RcbiAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgICAgfmY6KGZ1biB7IHRyZWUgPSB0OyBsZW5ndGggfSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQga2V5ID0gZ2V0X2tleSBkYXRhIGluXG4gICAgICAgICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IG5ld19sZW5ndGggfSBhcyBhY2MpID1cbiAgICAgICAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IG5ld19sZW5ndGhcbiAgICAgICAgICAgIHRoZW4gci5yZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSlcbiAgICAgICAgICAgIGVsc2UgZ2xvYmFsaXplIGFjYyBbQG5vbnRhaWxdKVxuICAgICAgaW5cbiAgICAgIGBPayBtYXApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgIFwiTWFwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBrZXlcbiAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeCAtPiB4XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmNyZWF0ZSBcIk1hcC5vZl9saXN0X3dpdGhfa2V5X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldiBsaXN0IGluXG4gICAgTGlzdC5mb2xkIGxpc3QgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKSB+ZjooZnVuIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IGRhdGEgLT5cbiAgICAgIGxldCBrZXkgPSBnZXRfa2V5IGRhdGEgaW5cbiAgICAgICh1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1biBvcHRpb24gLT5cbiAgICAgICAgIGxldCBsaXN0ID0gT3B0aW9uLnZhbHVlIG9wdGlvbiB+ZGVmYXVsdDpbXSBpblxuICAgICAgICAgZGF0YSA6OiBsaXN0KVxuICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlciB0IH5mOihmdW4gZGF0YSAtPiBpZiBub3QgKGYgZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgbm90IChmIH5rZXkgfmRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+IGlmIGYgZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXG4gICAgXVxuICA7O1xuXG4gIGxldCB0b19hbGlzdCA/KGtleV9vcmRlciA9IGBJbmNyZWFzaW5nKSB0ID1cbiAgICBtYXRjaCBrZXlfb3JkZXIgd2l0aFxuICAgIHwgYEluY3JlYXNpbmcgLT4gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gICAgfCBgRGVjcmVhc2luZyAtPiBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgOztcblxuICBsZXQgbWVyZ2UgdDEgdDIgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgZWx0cyA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW46KGxlbmd0aCB0MSArIGxlbmd0aCB0MikgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlcjIgdDEgdDIgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YTp2YWx1ZXMgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB2YWx1ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgIFVuaWZvcm1fYXJyYXkuc2V0IGVsdHMgIWkgKGtleSwgdmFsdWUpO1xuICAgICAgICBpbmNyIGlcbiAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgbGV0IGxlbiA9ICFpIGluXG4gICAgbGV0IGdldCBpID0gVW5pZm9ybV9hcnJheS5nZXQgZWx0cyBpIGluXG4gICAgbGV0IHRyZWUgPSBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mOmdldCBpblxuICAgICAod2l0aF9sZW5ndGggdHJlZSBsZW4pXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCA9XG4gICAgbGV0IG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aF9sYXJnZSB0X2xhcmdlIHRfc21hbGwgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIGZvbGRcbiAgICAgICAgdF9zbWFsbFxuICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIHRfbGFyZ2UgbGVuZ3RoX2xhcmdlKVxuICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGE6ZGF0YScgeyB0cmVlID0gdDsgbGVuZ3RoIH0gLT5cbiAgICAgICAgICAodXBkYXRlIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhJ1xuICAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IGNhbGwgY29tYmluZSB+a2V5IGRhdGEgZGF0YScpXG4gICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIGluXG4gICAgbGV0IGNhbGwgZiB+a2V5IHggeSA9IGYgfmtleSB4IHkgaW5cbiAgICBsZXQgc3dhcCBmIH5rZXkgeCB5ID0gZiB+a2V5IHkgeCBpblxuICAgIGZ1biB0MSB0MiB+bGVuZ3RoMSB+bGVuZ3RoMiB+Y29tYmluZSB+Y29tcGFyZV9rZXkgLT5cbiAgICAgIGlmIGxlbmd0aDIgPD0gbGVuZ3RoMVxuICAgICAgdGhlbiBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgxIHQxIHQyIH5jYWxsIH5jb21iaW5lIH5jb21wYXJlX2tleVxuICAgICAgZWxzZSBtZXJnZV9sYXJnZV9maXJzdCBsZW5ndGgyIHQyIHQxIH5jYWxsOnN3YXAgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIENsb3Nlc3Rfa2V5X2ltcGwgPSBzdHJ1Y3RcbiAgICAoKiBbbWFya2VyXSBhbmQgW3JlcGFja2FnZV0gYWxsb3cgdXMgdG8gY3JlYXRlIFwibG9naWNhbFwiIG9wdGlvbnMgd2l0aG91dCBhY3R1YWxseVxuICAgICAgIGFsbG9jYXRpbmcgYW55IG9wdGlvbnMuIFBhc3NpbmcgW0ZvdW5kIGtleSB2YWx1ZV0gdG8gYSBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgcGFzc2luZyBbU29tZSAoa2V5LCB2YWx1ZSldOyBwYXNzaW5nIFtNaXNzaW5nICgpICgpXSBpcyBlcXVpdmFsZW50IHRvIHBhc3NpbmdcbiAgICAgICBbTm9uZV0uICopXG4gICAgdHlwZSAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyID1cbiAgICAgIHwgTWlzc2luZyA6ICgnaywgJ3YsIHVuaXQsIHVuaXQpIG1hcmtlclxuICAgICAgfCBGb3VuZCA6ICgnaywgJ3YsICdrLCAndikgbWFya2VyXG5cbiAgICBsZXQgcmVwYWNrYWdlXG4gICAgICAgICAgKHR5cGUgayB2IGtfb3B0IHZfb3B0KVxuICAgICAgICAgIChtYXJrZXIgOiAoaywgdiwga19vcHQsIHZfb3B0KSBtYXJrZXIpXG4gICAgICAgICAgKGsgOiBrX29wdClcbiAgICAgICAgICAodiA6IHZfb3B0KVxuICAgICAgOiAoayAqIHYpIG9wdGlvblxuICAgICAgPVxuICAgICAgbWF0Y2ggbWFya2VyIHdpdGhcbiAgICAgIHwgTWlzc2luZyAtPiBOb25lXG4gICAgICB8IEZvdW5kIC0+IFNvbWUgKGssIHYpXG4gICAgOztcblxuICAgICgqIFRoZSB0eXBlIHNpZ25hdHVyZSBpcyBleHBsaWNpdCBoZXJlIHRvIGFsbG93IHBvbHltb3JwaGljIHJlY3Vyc2lvbi4gKilcbiAgICBsZXQgcmVjIGxvb3AgOlxuICAgICAgJ2sgJ3YgJ2tfb3B0ICd2X29wdC5cbiAgICAgICgnaywgJ3YpIHRyZWVcbiAgICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAgIC0+ICdrXG4gICAgICAtPiBjb21wYXJlX2tleTooJ2sgLT4gJ2sgLT4gaW50KVxuICAgICAgLT4gKCdrLCAndiwgJ2tfb3B0LCAndl9vcHQpIG1hcmtlclxuICAgICAgLT4gJ2tfb3B0XG4gICAgICAtPiAndl9vcHRcbiAgICAgIC0+ICgnayAqICd2KSBvcHRpb25cbiAgICAgID1cbiAgICAgIGZ1biB0IGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTGVhZiAoaycsIHYnKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIG1hdGNoIGRpciB3aXRoXG4gICAgICAgICAgICB8IGBHcmVhdGVyX29yX2VxdWFsX3RvIC0+IGMgPj0gMFxuICAgICAgICAgICAgfCBgR3JlYXRlcl90aGFuIC0+IGMgPiAwXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IGMgPD0gMFxuICAgICAgICAgICAgfCBgTGVzc190aGFuIC0+IGMgPCAwXG4gICAgICAgICAgdGhlbiBTb21lIChrJywgdicpXG4gICAgICAgICAgZWxzZSByZXBhY2thZ2UgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICB8IE5vZGUgKGwsIGsnLCB2JywgciwgXykgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgICAgICBpZiBjID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJhc2UgY2FzZSAobm8gcmVjdXJzaXZlIGNhbGwpLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgTGVzc19vcl9lcXVhbF90byAtPiBTb21lIChrJywgdicpXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgciB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWluX2VsdCByXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZW1wdHkgbCB0aGVuIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlIGVsc2UgbWF4X2VsdCBsKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogV2UgYXJlIGd1YXJhbnRlZWQgaGVyZSB0aGF0IGsnIDw+IGsuICopXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHRoZSBvbmx5IHJlY3Vyc2l2ZSBjYXNlLiAqKVxuICAgICAgICAgICAgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIC0+XG4gICAgICAgICAgICAgIGlmIGMgPiAwXG4gICAgICAgICAgICAgIHRoZW4gbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBGb3VuZCBrJyB2J1xuICAgICAgICAgICAgICBlbHNlIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgZm91bmRfbWFya2VyIGZvdW5kX2tleSBmb3VuZF92YWx1ZVxuICAgICAgICAgICAgfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIHIgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCBsIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIgayB+Y29tcGFyZV9rZXkgPSBsb29wIHQgZGlyIGsgfmNvbXBhcmVfa2V5IE1pc3NpbmcgKCkgKClcbiAgZW5kXG5cbiAgbGV0IGNsb3Nlc3Rfa2V5ID0gQ2xvc2VzdF9rZXlfaW1wbC5jbG9zZXN0X2tleVxuXG4gIGxldCByZWMgcmFuayB0IGsgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGsnLCBfKSAtPiBpZiBjb21wYXJlX2tleSBrJyBrID0gMCB0aGVuIFNvbWUgMCBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGsnLCBfLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBTb21lIChsZW5ndGggbClcbiAgICAgIGVsc2UgaWYgYyA+IDBcbiAgICAgIHRoZW4gcmFuayBsIGsgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIE9wdGlvbi5tYXAgKHJhbmsgciBrIH5jb21wYXJlX2tleSkgfmY6KGZ1biByYW5rIC0+IHJhbmsgKyAxICsgbGVuZ3RoIGwpXG4gIDs7XG5cbiAgKCogdGhpcyBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbU2VxdWVuY2VdIGludGVyZmFjZSBidXQgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvblxuICAgICBhbGxvY2F0ZXMgb25seSAyIHdvcmRzIGFuZCBkb2Vzbid0IHJlcXVpcmUgd3JpdGUtYmFycmllciAqKVxuICBsZXQgcmVjIG50aCcgbnVtX3RvX3NlYXJjaCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPlxuICAgICAgaWYgIW51bV90b19zZWFyY2ggPSAwXG4gICAgICB0aGVuIFNvbWUgKGssIHYpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVjciBudW1fdG9fc2VhcmNoO1xuICAgICAgICBOb25lKVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIChtYXRjaCBudGgnIG51bV90b19zZWFyY2ggbCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiBzb21lXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgICAgIG50aCcgbnVtX3RvX3NlYXJjaCByKSlcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IG50aCcgKHJlZiBuKSB0XG5cblxuICBsZXQgcmVjIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCB2KSAtPiBpZiBmIH5rZXk6ayB+ZGF0YTp2IHRoZW4gU29tZSAoaywgdikgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgaWYgZiB+a2V5OmsgfmRhdGE6dlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSAoaywgdilcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2xhc3Rfc2F0aXNmeWluZyBsIH5mXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPCAwKSBbQG5vbnRhaWxdXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8PSAwKSB3aXRoXG4gICAgICAgfCBTb21lIChrZXksIGRhdGEpIGFzIHBhaXIgd2hlbiBjb21wYXJlIH5rZXkgfmRhdGEgdiA9IDAgLT4gcGFpclxuICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0IFtAbm9udGFpbF1cbiAgICB8IGBGaXJzdF9vbl9yaWdodCAtPiBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Zjppc19yaWdodCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXSBmaW5kcyB0aGUga2V5IGluIFt0XSB3aGljaCBzYXRpc2ZpZXMgW21heWJlX2JvdW5kXVxuICAgICBhbmQgdGhlIHJlbGV2YW50IG9uZSBvZiBbaWZfZXhjbHVzaXZlXSBvciBbaWZfaW5jbHVzaXZlXSwgYXMganVkZ2VkIGJ5IFtjb21wYXJlXS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgfmlmX2V4Y2x1c2l2ZSB+aWZfaW5jbHVzaXZlID1cbiAgICBsZXQgZmluZF9ib3VuZCB0IGhvdyBib3VuZCB+Y29tcGFyZSA6IF8gTWF5YmVfYm91bmQudCBvcHRpb24gPVxuICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCB0IGhvdyBib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICB8IFNvbWUgKGJvdW5kLCBfKSAtPiBTb21lIChJbmNsIGJvdW5kKVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICBpblxuICAgIG1hdGNoIChtYXliZV9ib3VuZCA6IF8gTWF5YmVfYm91bmQudCkgd2l0aFxuICAgIHwgRXhjbCBib3VuZCAtPiBmaW5kX2JvdW5kIHQgaWZfZXhjbHVzaXZlIGJvdW5kIH5jb21wYXJlXG4gICAgfCBJbmNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9pbmNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IFVuYm91bmRlZCAtPiBTb21lIFVuYm91bmRlZFxuICA7O1xuXG4gICgqIFtiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHNdIGZpbmRzIHRoZSAobm90IG5lY2Vzc2FyaWx5IGRpc3RpbmN0KSBrZXlzIGluIFt0XVxuICAgICB3aGljaCBtb3N0IGNsb3NlbHkgYXBwcm9hY2ggKGJ1dCBkbyBub3QgY3Jvc3MpIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF0sIGFzXG4gICAgIGp1ZGdlZCBieSBbY29tcGFyZV0uIEl0IHJldHVybnMgW05vbmVdIGlmIG5vIGtleXMgaW4gW3RdIGFyZSB3aXRoaW4gdGhhdCByYW5nZS4gKilcbiAgbGV0IGJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBmaW5kX2xvd2VyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgaW5cbiAgICBsZXQgZmluZF91cHBlcl9ib3VuZCB0IG1heWJlX2JvdW5kIH5jb21wYXJlID1cbiAgICAgIGJpbmFyeV9zZWFyY2hfb25lX3NpZGVkX2JvdW5kXG4gICAgICAgIHRcbiAgICAgICAgbWF5YmVfYm91bmRcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgfmlmX2V4Y2x1c2l2ZTpgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW5cbiAgICAgICAgfmlmX2luY2x1c2l2ZTpgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIG1hdGNoIGZpbmRfbG93ZXJfYm91bmQgdCBsb3dlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbG93ZXJfYm91bmQgLT5cbiAgICAgIChtYXRjaCBmaW5kX3VwcGVyX2JvdW5kIHQgdXBwZXJfYm91bmQgfmNvbXBhcmUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgfCBTb21lIHVwcGVyX2JvdW5kIC0+IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkpXG4gIDs7XG5cblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgV2l0aF9sZW5ndGgudFxuICAgIH1cblxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFjYyA9IHsgYmFkX2tleSA9IE5vbmU7IG1hcF9sZW5ndGggPSB3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMCB9IGluXG4gICAgaXRlcmkgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBsZXQgeyB0cmVlID0gbWFwOyBsZW5ndGggfSA9IGFjYy5tYXBfbGVuZ3RoIGluXG4gICAgICBsZXQgKHsgdHJlZSA9IF87IGxlbmd0aCA9IGxlbmd0aCcgfSBhcyBwYWlyKSA9XG4gICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgbWFwIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgJiYgT3B0aW9uLmlzX25vbmUgYWNjLmJhZF9rZXlcbiAgICAgIHRoZW4gYWNjLmJhZF9rZXkgPC0gU29tZSBrZXlcbiAgICAgIGVsc2UgYWNjLm1hcF9sZW5ndGggPC0gZ2xvYmFsaXplIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+c2V4cF9vZl9rZXkgPVxuICAgIGxldCBva3MsIGVycm9ycyA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gICAgaWYgaXNfZW1wdHkgZXJyb3JzXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JzKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c1xuICAgICAgICB0MVxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcjooeyBjb21wYXJlID0gY29tcGFyZV9rZXk7IHNleHBfb2ZfdCA9IHNleHBfb2Zfa2V5IH0gOiBfIENvbXBhcmF0b3IudClcbiAgICA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICBgT2tcbiAgICAgICAgKGZvbGRcbiAgICAgICAgICAgdDFcbiAgICAgICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgeyB0cmVlID0gdDI7IGxlbmd0aCB9IC0+XG4gICAgICAgICAgICAgbGV0IGtleSA9IGYga2V5IGluXG4gICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICBhZGRfZXhuX2ludGVybmFsIHQyIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IHw+IGdsb2JhbGl6ZVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvciA9XG4gICAgbWF0Y2ggbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgcmVzdWx0IC0+IHJlc3VsdFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJNYXAubWFwX2tleXNfZXhuOiBkdXBsaWNhdGUga2V5XCIgWyBcImtleVwiLCBrZXkgfD4gc2V4cF9vZl9rZXkgXSlcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlX2tleXMgfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3Igb3V0ZXJfdCA9XG4gICAgZm9sZFxuICAgICAgb3V0ZXJfdFxuICAgICAgfmluaXQ6KHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwKVxuICAgICAgfmY6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl90IGFjYyAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgaW5uZXJfdFxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgeyB0cmVlID0gYWNjOyBsZW5ndGggPSBhY2NfbGVuIH0gLT5cbiAgICAgICAgICAgICh1cGRhdGVcbiAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICB+bGVuZ3RoOmFjY19sZW5cbiAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTppbm5lcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgKHNpbmdsZXRvbiBvdXRlcl9rZXkgZGF0YSkgMVxuICAgICAgICAgICAgICAgICB8IFNvbWUgeyB0cmVlID0gZWx0OyBsZW5ndGggPSBlbHRfbGVuIH0gLT5cbiAgICAgICAgICAgICAgICAgICAoc2V0XG4gICAgICAgICAgICAgICAgICAgICAgZWx0XG4gICAgICAgICAgICAgICAgICAgICAgfmtleTpvdXRlcl9rZXlcbiAgICAgICAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgICAgICAgICAgIH5sZW5ndGg6ZWx0X2xlblxuICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlX2tleTpvdXRlcl9jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pXG4gICAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSlcbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gRW1wdHlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW4gbmV3X2RhdGEgLT4gTGVhZiAodiwgbmV3X2RhdGEpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgbCcgPSBBLm9mX3RodW5rIChmdW4gKCkgLT4gbWFwaSB+ZiBsKSBpblxuICAgICAgICBsZXQgZCcgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICAgIGxldCByJyA9IEEub2ZfdGh1bmsgKGZ1biAoKSAtPiBtYXBpIH5mIHIpIGluXG4gICAgICAgIEEubWFwMyBsJyBkJyByJyB+ZjooZnVuIGwnIGQnIHInIC0+IE5vZGUgKGwnLCB2LCBkJywgcicsIGgpKVxuICAgIDs7XG5cbiAgICAoKiBJbiB0aGVvcnkgdGhlIGNvbXB1dGF0aW9uIG9mIGxlbmd0aCBvbi10aGUtZmx5IGlzIG5vdCBuZWNlc3NhcnkgaGVyZSBiZWNhdXNlIGl0IGNhblxuICAgICAgIGJlIGRvbmUgYnkgd3JhcHBpbmcgdGhlIGFwcGxpY2F0aXZlIFtBXSB3aXRoIGxlbmd0aC1jb21wdXRpbmcgbG9naWMuIEhvd2V2ZXIsXG4gICAgICAgaW50cm9kdWNpbmcgYW4gYXBwbGljYXRpdmUgdHJhbnNmb3JtZXIgbGlrZSB0aGF0IG1ha2VzIHRoZSBtYXAgYmVuY2htYXJrcyBpblxuICAgICAgIGFzeW5jX2tlcm5lbC9iZW5jaC9zcmMvYmVuY2hfZGVmZXJyZWRfbWFwLm1sIG5vdGljZWFibHkgc2xvd2VyLiAqKVxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIGxldCByZWMgdHJlZV9maWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gQS5yZXR1cm4gKHdpdGhfbGVuZ3RoX2dsb2JhbCBFbXB0eSAwKVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgICAgQS5tYXAgKGYgfmtleTp2IH5kYXRhOmQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBTb21lIG5ld19kYXRhIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCAoTGVhZiAodiwgbmV3X2RhdGEpKSAxXG4gICAgICAgICAgICB8IE5vbmUgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIEVtcHR5IDApXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgICBBLm1hcDNcbiAgICAgICAgICAgIChBLm9mX3RodW5rIChmdW4gKCkgLT4gdHJlZV9maWx0ZXJfbWFwaSBsIH5mKSlcbiAgICAgICAgICAgIChmIH5rZXk6diB+ZGF0YTpkKVxuICAgICAgICAgICAgKEEub2ZfdGh1bmsgKGZ1biAoKSAtPiB0cmVlX2ZpbHRlcl9tYXBpIHIgfmYpKVxuICAgICAgICAgICAgfmY6XG4gICAgICAgICAgICAgIChmdW5cbiAgICAgICAgICAgICAgICB7IHRyZWUgPSBsJzsgbGVuZ3RoID0gbF9sZW4gfSBuZXdfZGF0YSB7IHRyZWUgPSByJzsgbGVuZ3RoID0gcl9sZW4gfSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIG5ld19kYXRhIHdpdGhcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT5cbiAgICAgICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbCAoam9pbiBsJyB2IG5ld19kYXRhIHInKSAobF9sZW4gKyByX2xlbiArIDEpXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3aXRoX2xlbmd0aF9nbG9iYWwgKGNvbmNhdF9hbmRfYmFsYW5jZV91bmNoZWNrZWQgbCcgcicpIChsX2xlbiArIHJfbGVuKSlcbiAgICAgIGluXG4gICAgICB0cmVlX2ZpbHRlcl9tYXBpIHQgfmZcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID1cbiAgeyAoKiBbY29tcGFyYXRvcl0gaXMgdGhlIGZpcnN0IGZpZWxkIHNvIHRoYXQgcG9seW1vcnBoaWMgZXF1YWxpdHkgZmFpbHMgb24gYSBtYXAgZHVlXG4gICAgICAgdG8gdGhlIGZ1bmN0aW9uYWwgdmFsdWUgaW4gdGhlIGNvbXBhcmF0b3IuXG4gICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHBvbHltb3JwaGljIFtjb21wYXJlXTogdGhhdCBzdGlsbCBwcm9kdWNlc1xuICAgICAgIG5vbnNlbnNlLiAqKVxuICAgIGNvbXBhcmF0b3IgOiAoJ2ssICdjb21wYXJhdG9yKSBDb21wYXJhdG9yLnRcbiAgOyB0cmVlIDogKCdrLCAndikgVHJlZTAudFxuICA7IGxlbmd0aCA6IGludFxuICB9XG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWUgPSAoJ2ssICd2KSBUcmVlMC50XG5cbmxldCBjb21wYXJlX2tleSB0ID0gdC5jb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG5cbmxldCBsaWtlIHsgdHJlZSA9IF87IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpXG4gICAgICAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudClcbiAgPVxuICBpZiBwaHlzX2VxdWFsIG9sZF90cmVlIHRyZWUgdGhlbiBvbGRfdCBlbHNlIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCB3aXRoX3NhbWVfbGVuZ3RoIHsgdHJlZSA9IF87IGNvbXBhcmF0b3I7IGxlbmd0aCB9IHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5sZXQgb2ZfbGlrZV90cmVlIHQgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG5sZXQgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdHJlZSA9XG4gIGlmIHBoeXNfZXF1YWwgdC50cmVlIHRyZWVcbiAgdGhlbiB0XG4gIGVsc2UgeyB0cmVlOyBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG47O1xuXG5sZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbigqIEV4cG9zaW5nIHRoaXMgZnVuY3Rpb24gd291bGQgbWFrZSBpdCB2ZXJ5IGVhc3kgZm9yIHRoZSBpbnZhcmlhbnRzXG4gICBvZiB0aGlzIG1vZHVsZSB0byBiZSBicm9rZW4uICopXG5sZXQgb2ZfdHJlZV91bnNhZmUgfmNvbXBhcmF0b3Igfmxlbmd0aCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yIHQgPSB0LmNvbXBhcmF0b3JcbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuXG4gIGxldCBpbnZhcmlhbnRzIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgJiYgVHJlZTAubGVuZ3RoIHQudHJlZSA9IHQubGVuZ3RoXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnNldCB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHQudHJlZVxuICAgICAgICAgfmxlbmd0aDp0Lmxlbmd0aFxuICAgICAgICAgfmtleVxuICAgICAgICAgfmRhdGFcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgdCBrZXkgPSBUcmVlMC5maW5kX211bHRpIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCB1cGRhdGUgdCBrZXkgfmYgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHQudHJlZVxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIHQga2V5ID0gVHJlZTAuZmluZCB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcblxuICBsZXQgcmVtb3ZlIHQga2V5ID1cbiAgICBsaWtlX21heWJlX25vX29wXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlIHQudHJlZSBrZXkgfmxlbmd0aDp0Lmxlbmd0aCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZiB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQudHJlZSB+ZiB+aW5pdFxuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZDIgdDEudHJlZSB0Mi50cmVlIH5pbml0IH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9rZXlzIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyaSB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmxlbiBpblxuICAgIGxpa2UgdCAod2l0aF9sZW5ndGggdHJlZSAhbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgIGxldCBsZW4gPSAgKHJlZiB0Lmxlbmd0aCkgaW5cbiAgICBsZXQgdHJlZSA9IFRyZWUwLmZpbHRlcl9tYXBpIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZSB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfbGlrZV90cmVlMiB0ICh0MSwgdDIpID0gb2ZfbGlrZV90cmVlIHQgdDEsIG9mX2xpa2VfdHJlZSB0IHQyXG5cbiAgbGV0IG9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AgdCAodDEsIHQyKSA9XG4gICAgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdDEsIG9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCB0IHQyXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPSBvZl9saWtlX3RyZWUyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IG9mX2xpa2VfdHJlZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcCB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbmlfdGYgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBvZl9saWtlX3RyZWUyX21heWJlX25vX29wIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KG9mX2xpa2VfdHJlZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQudHJlZSB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICA7O1xuXG4gIGxldCBlcXVhbCBjb21wYXJlX2RhdGEgdDEgdDIgPSBUcmVlMC5lcXVhbCAoY29tcGFyZV9rZXkgdDEpIGNvbXBhcmVfZGF0YSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdC50cmVlXG4gIGxldCBkYXRhIHQgPSBUcmVlMC5kYXRhIHQudHJlZVxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0LnRyZWVcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MS50cmVlXG4gICAgICB0Mi50cmVlXG4gICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiA9XG4gICAgbGlrZSB0MSAoVHJlZTAubWVyZ2UgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byBrID1cbiAgICBsZXQgbCwgciA9XG4gICAgICBUcmVlMC5zcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdC50cmVlIH5pbnRvIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgIGluXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDoodC5sZW5ndGggLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOih0Lmxlbmd0aCAtIGxlbmd0aCByKSwgcilcbiAgOztcblxuICBsZXQgc3BsaXRfbGVfZ3QgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YExlZnQga1xuICBsZXQgc3BsaXRfbHRfZ2UgdCBrID0gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG86YFJpZ2h0IGtcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgbGVmdCwgbWlkLCByaWdodCA9XG4gICAgICBUcmVlMC5zcGxpdF9yYW5nZSB0LnRyZWUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICAoKiBUcnkgdG8gdHJhdmVyc2UgdGhlIGxlYXN0IGFtb3VudCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIGxlbmd0aCxcbiAgICAgICB1c2luZyBoZWlnaHQgYXMgYSBoZXVyaXN0aWMuICopXG4gICAgbGV0IG91dGVyX2pvaW5lZF9oZWlnaHQgPVxuICAgICAgbGV0IGhfbCA9IFRyZWUwLmhlaWdodCBsZWZ0XG4gICAgICBhbmQgaF9yID0gVHJlZTAuaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpZiBoX2wgPSBoX3IgdGhlbiBoX2wgKyAxIGVsc2UgbWF4IGhfbCBoX3JcbiAgICBpblxuICAgIGlmIG91dGVyX2pvaW5lZF9oZWlnaHQgPCBUcmVlMC5oZWlnaHQgbWlkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWlkX2xlbmd0aCA9IHQubGVuZ3RoIC0gKFRyZWUwLmxlbmd0aCBsZWZ0ICsgVHJlZTAubGVuZ3RoIHJpZ2h0KSBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpIH5sZW5ndGg6bWlkX2xlbmd0aClcbiAgICBlbHNlIG9mX3RyZWUgbWlkIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIHQpXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmFwcGVuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IGxvd2VyX3BhcnQpXG4gICAgICAgIH5sb3dlcl9wYXJ0Omxvd2VyX3BhcnQudHJlZVxuICAgICAgICB+dXBwZXJfcGFydDp1cHBlcl9wYXJ0LnRyZWVcbiAgICB3aXRoXG4gICAgfCBgT2sgdHJlZSAtPlxuICAgICAgYE9rXG4gICAgICAgIChvZl90cmVlX3Vuc2FmZVxuICAgICAgICAgICB0cmVlXG4gICAgICAgICAgIH5jb21wYXJhdG9yOihjb21wYXJhdG9yIGxvd2VyX3BhcnQpXG4gICAgICAgICAgIH5sZW5ndGg6KGxvd2VyX3BhcnQubGVuZ3RoICsgdXBwZXJfcGFydC5sZW5ndGgpKVxuICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQudHJlZSB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9XG4gICAgVHJlZTAucmFuZ2VfdG9fYWxpc3QgdC50cmVlIH5taW4gfm1heCB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IGNsb3Nlc3Rfa2V5IHQgZGlyIGtleSA9XG4gICAgVHJlZTAuY2xvc2VzdF9rZXkgdC50cmVlIGRpciBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gVHJlZTAubnRoIHQudHJlZSBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIHQga2V5ID0gVHJlZTAucmFuayB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQudHJlZVxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlXG4gICAgICB0LmNvbXBhcmF0b3JcbiAgICAgID9vcmRlclxuICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgP2tleXNfbGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdC50cmVlIH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB3aXRoXG4gICAgfCBTb21lIChsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQpIC0+IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHwgTm9uZSAtPiBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIFRyZWUwLkVtcHR5IDApIFtAbm9udGFpbF1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHJlZV90cmF2ZXJzYWxzID0gVHJlZTAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBKVxuXG4gICAgbGV0IG1hcGkgdCB+ZiA9XG4gICAgICBBLm1hcCAoVHJlZV90cmF2ZXJzYWxzLm1hcGkgdC50cmVlIH5mKSB+ZjooZnVuIG5ld190cmVlIC0+XG4gICAgICAgIHdpdGhfc2FtZV9sZW5ndGggdCBuZXdfdHJlZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgQS5tYXAgKFRyZWVfdHJhdmVyc2Fscy5maWx0ZXJfbWFwaSB0LnRyZWUgfmYpIH5mOihmdW4gbmV3X3RyZWVfd2l0aF9sZW5ndGggLT5cbiAgICAgICAgbGlrZSB0IG5ld190cmVlX3dpdGhfbGVuZ3RoKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbigqIFswXSBpcyB1c2VkIGFzIHRoZSBbbGVuZ3RoXSBhcmd1bWVudCBldmVyeXdoZXJlIGluIHRoaXMgbW9kdWxlLCBzaW5jZSB0cmVlcyBkbyBub3RcbiAgIGhhdmUgdGhlaXIgbGVuZ3RocyBzdG9yZWQgYXQgdGhlIHJvb3QsIHVubGlrZSBtYXBzLiBUaGUgdmFsdWVzIGFyZSBkaXNjYXJkZWQgYWx3YXlzLiAqKVxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9ICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBUcmVlMC5lbXB0eVxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3I6XyA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3I6XyB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gayB2ID0gVHJlZTAuc2luZ2xldG9uIGsgdlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvclxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IChUcmVlMC5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yKS50cmVlXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOl9yZXF1aXJlZF9ieV9pbnRmIH5sZW4gfmYgPVxuICAgIFRyZWUwLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gKFRyZWUwLm9mX3NlcXVlbmNlX2V4biBzZXEgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgKFRyZWUwLm9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgICAgbGlzdFxuICAgICAgIH5nZXRfa2V5XG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgdCA9IHRcblxuICBsZXQgaW52YXJpYW50cyB+Y29tcGFyYXRvciB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0XG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG5cbiAgbGV0IHNldCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5zZXQgdCB+a2V5IH5kYXRhIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgdFxuICAgICAgIH5rZXlcbiAgICAgICB+ZGF0YVxuICAgICAgIH5sZW5ndGg6MFxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBhZGRfZXhuX2ludGVybmFsIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9leG5faW50ZXJuYWxcbiAgICAgICB0XG4gICAgICAgfmtleVxuICAgICAgIH5kYXRhXG4gICAgICAgfmxlbmd0aDowXG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIHRyeSBgT2sgKGFkZF9leG5faW50ZXJuYWwgdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhKSB3aXRoXG4gICAgfCBfIC0+IGBEdXBsaWNhdGVcbiAgOztcblxuICBsZXQgYWRkX211bHRpIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIChUcmVlMC5yZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIChUcmVlMC5jaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICAoVHJlZTAucmVtb3ZlIHQga2V5IH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVtIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAubWVtIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0IH5mXG4gIGxldCBpdGVyaSB0IH5mID0gVHJlZTAuaXRlcmkgdCB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQgfmZcblxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIFRyZWUwLml0ZXIyIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mXG4gIGxldCBtYXBpIHQgfmYgPSBUcmVlMC5tYXBpIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdCB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBUcmVlMC5mb2xkX3VudGlsIHQgfmYgfmluaXQgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIH5jb21wYXJhdG9yIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcmkgdCB+ZiA9IFRyZWUwLmZpbHRlcmkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID0gVHJlZTAuZmlsdGVyX21hcGkgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmNvbWJpbmVfZXJyb3JzIHQgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgY29tcGFyZV9kaXJlY3QgfmNvbXBhcmF0b3IgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBUcmVlMC5jb21wYXJlIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBlcXVhbCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmVxdWFsIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGNvbXBhcmVfZGF0YSB0MSB0MlxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBUcmVlMC5rZXlzIHRcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdFxuICBsZXQgdG9fYWxpc3QgP2tleV9vcmRlciB0ID0gVHJlZTAudG9fYWxpc3QgP2tleV9vcmRlciB0XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfmRhdGFfZXF1YWxcbiAgOztcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB+Y29tcGFyYXRvciB0MSB0MiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgdDFcbiAgICAgIHQyXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgOztcblxuICBsZXQgbWVyZ2UgfmNvbXBhcmF0b3IgdDEgdDIgfmYgPVxuICAgIChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIH5jb21wYXJhdG9yIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBMZW5ndGggY29tcHV0YXRpb24gbWFrZXMgdGhpcyBzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIFttZXJnZV9za2V3ZWRdIG9uIGEgbWFwXG4gICAgICAgd2l0aCBhIFtsZW5ndGhdIGZpZWxkLCBidXQgZG9lcyBwcmVzZXJ2ZSBhbW91bnQgb2YgYWxsb2NhdGlvbi4gKilcbiAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgdDFcbiAgICAgICB0MlxuICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgfmxlbmd0aDI6KGxlbmd0aCB0MilcbiAgICAgICB+Y29tYmluZVxuICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IFRyZWUwLmV4aXN0cyB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0IH5mXG4gIGxldCBjb3VudGkgdCB+ZiA9IFRyZWUwLmNvdW50aSB0IH5mXG4gIGxldCBzcGxpdCB+Y29tcGFyYXRvciB0IGsgPSBUcmVlMC5zcGxpdCB0IGsgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbiAgbGV0IHNwbGl0X2xlX2d0IH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgTGVmdFxuICAgICAga1xuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2x0X2dlIH5jb21wYXJhdG9yIHQgayA9XG4gICAgVHJlZTAuc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5XG4gICAgICB0XG4gICAgICB+aW50bzpgUmlnaHRcbiAgICAgIGtcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcikudHJlZVxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIGNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBtYXRjaCBUcmVlMC5iaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IEVtcHR5XG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyZWUwX3RyYXZlcnNhbHMgPSBUcmVlMC5NYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSB0IH5mID0gVHJlZTBfdHJhdmVyc2Fscy5tYXBpIHQgfmZcblxuICAgIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICAgIEEubWFwXG4gICAgICAgIChUcmVlMF90cmF2ZXJzYWxzLmZpbHRlcl9tYXBpIHQgfmYpXG4gICAgICAgIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgeyB0cmVlID0gdDsgbGVuZ3RoID0gXyB9IC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSAoVHJlZTAubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYpLnRyZWVcblxuICAoKiBUaGlzIGNhbGxpbmcgY29udmVudGlvbiBvZiBbfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3JdIGlzIGNvbmZ1c2luZy4gSXQgaXMgcmVxdWlyZWRcbiAgICAgYmVjYXVzZSBbYWNjZXNzX29wdGlvbnNdIGFuZCBbY3JlYXRlX29wdGlvbnNdIGJvdGggZGVtYW5kIGEgW35jb21wYXJhdG9yXSBhcmd1bWVudCBpblxuICAgICBbTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZV0uXG5cbiAgICAgTWFraW5nIGl0IGxlc3MgY29uZnVzaW5nIHdvdWxkIHJlcXVpcmUgc29tZSB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5IGluIHNpZ25hdHVyZXMuXG4gICAgIEJldHRlciB0byBqdXN0IGxpdmUgd2l0aCBhbiB1bmRlc2lyYWJsZSBpbnRlcmZhY2UgaW4gYSBmdW5jdGlvbiB0aGF0IHdpbGwgcHJvYmFibHlcbiAgICAgbmV2ZXIgYmUgY2FsbGVkIGRpcmVjdGx5LiAqKVxuICBsZXQgdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yIHQgPVxuICAgIChUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciB0KS50cmVlXG4gICAgfD4gbWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ3cpIHQgPSAoJ2ssICd2KSBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLnRcblxuICAgIGxldCBlbXB0eSA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcblxuICAgIGxldCBhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBUcmVlMC5CdWlsZF9pbmNyZWFzaW5nLm1heF9rZXkgdCB3aXRoXG4gICAgICB8IFNvbWUgcHJldl9rZXkgd2hlbiBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBrZXkgPj0gMCAtPlxuICAgICAgICBFcnJvci5yYWlzZV9zIChTZXhwLkF0b20gXCJNYXAuQnVpbGRfaW5jcmVhc2luZy5hZGQ6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgfCBfIC0+IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0IH5rZXkgfmRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RyZWUgdCA9IFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGsgdiA9IHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLnNpbmdsZXRvbiBrIHY7IGxlbmd0aCA9IDEgfVxuXG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAoeyB0cmVlOyBsZW5ndGggfSA6IF8gV2l0aF9sZW5ndGgudCkgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgOztcblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAod2l0aF9sZW5ndGggdHJlZSAoVHJlZTAubGVuZ3RoIHRyZWUpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgICAgfmY6KGZ1biB0cmVlIC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBtYXRjaCBUcmVlMC5vZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoIH0gLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICh3aXRoX2xlbmd0aCAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZikgbGVuKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOihmdW4geCAtPiBvZl90cmVlMCB+Y29tcGFyYXRvciB4KVxuICAgICAgKFRyZWUwLm9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBtYXRjaCBUcmVlMC5vZl9zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAub2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHdpdGhcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCB9IC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5ID1cbiAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfD4gb2ZfdHJlZTAgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3IgdCA9XG4gICAgbGV0IG91dGVyX2NvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3IgaW5cbiAgICBUcmVlMC50cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciAoVHJlZTAubWFwIHQudHJlZSB+Zjp0b190cmVlKVxuICAgIHw+IG9mX3RyZWUwIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3JcbiAgICB8PiBtYXAgfmY6KGZ1biB4IC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgeClcbiAgOztcblxuICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoSyA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gICAgbGV0IGVtcHR5ID0geyB0cmVlID0gVHJlZTAuZW1wdHk7IGNvbXBhcmF0b3IgPSBLLmNvbXBhcmF0b3I7IGxlbmd0aCA9IDAgfVxuICBlbmRcblxuICBtb2R1bGUgVHJlZSA9IFRyZWVcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX3RyZWUgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgY29tcGFyYXRvcikgdHJlZSA9XG4gIG9mX3RyZWUgfmNvbXBhcmF0b3I6TS5jb21wYXJhdG9yIHRyZWVcbjs7XG5cbmxldCBlbXB0eSBtID0gVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxubGV0IHNpbmdsZXRvbiBtIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0X211bHRpIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3RfZm9sZCBtIGEgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+aW5pdCB+ZlxuOztcblxubGV0IG9mX2FsaXN0X3JlZHVjZSBtIGEgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBtIGEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfaXRlcmkgbSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuXG5sZXQgb2ZfaXRlcmlfZXhuIG0gfml0ZXJpID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgbSB+bGVuIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG47O1xuXG5sZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBtIHNlcSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzZXFcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2V4biBtIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9tdWx0aSBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9mb2xkIG0gcyB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5pbml0IH5mXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIG0gcyB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmZcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5IG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBtYXBfa2V5cyBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcbmxldCBtYXBfa2V5c19leG4gbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IHRyYW5zcG9zZV9rZXlzIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgTSAoSyA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwXG4gICAgICAodHlwZSBrIGNtcClcbiAgICAgIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgdl9vZl9zZXhwXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOksuY29tcGFyYXRvciBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgICAodHlwZSBrKVxuICAgICAgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKVxuICAgICAgKHZfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBUYWdnZWRcbiAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnXG4gICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgIChNYW55XG4gICAgICAgICAgICAgICAgIChMaXN0XG4gICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICggVGFnZ2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY19rZXlfdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBncmFtbWFyID0gSy50X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICwgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUYWdnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY192YWx1ZV90YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgZ3JhbW1hciA9IHZfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpKSlcbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGwgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBTdGRsaWIuUXVldWUudFxuXG5sZXQgY3JlYXRlID0gU3RkbGliLlF1ZXVlLmNyZWF0ZVxubGV0IGNsZWFyID0gU3RkbGliLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IFN0ZGxpYi5RdWV1ZS5jb3B5XG5sZXQgaXNfZW1wdHkgPSBTdGRsaWIuUXVldWUuaXNfZW1wdHlcbmxldCBsZW5ndGggPSBTdGRsaWIuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IFN0ZGxpYi5RdWV1ZS5wZWVrXG5sZXQgcG9wID0gU3RkbGliLlF1ZXVlLnBvcFxubGV0IHB1c2ggPSBTdGRsaWIuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gU3RkbGliLlF1ZXVlLnRyYW5zZmVyXG5cbmxldCBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgY2FtbF9pdGVyIDogKCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiAnYSB0IC0+IHVuaXQgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5pdGVyIDogKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdClcbiAgaW5cbiAgY2FtbF9pdGVyIGYgdFxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbWxfZm9sZCA6ICgoJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIC0+ICdhIHQgLT4gJ2IgPVxuICAgIFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5RdWV1ZS5mb2xkIDogKCdiIC0+ICdhIC0+ICdiKSAtPiAnYiAtPiAnYSB0IC0+ICdiKVxuICBpblxuICBjYW1sX2ZvbGQgZiBpbml0IHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgTGlua2VkX3F1ZXVlMFxuXG5sZXQgZW5xdWV1ZSB0IHggPSBMaW5rZWRfcXVldWUwLnB1c2ggeCB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBvcCB0KVxubGV0IGRlcXVldWVfZXhuID0gTGlua2VkX3F1ZXVlMC5wb3BcbmxldCBkZXF1ZXVlX2FuZF9pZ25vcmVfZXhuICh0eXBlIGVsdCkgKHQgOiBlbHQgdCkgPSBpZ25vcmUgKGRlcXVldWVfZXhuIHQgOiBlbHQpXG5sZXQgcGVlayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChMaW5rZWRfcXVldWUwLnBlZWsgdClcbmxldCBwZWVrX2V4biA9IExpbmtlZF9xdWV1ZTAucGVla1xuXG5tb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICAgIGxldCBmb2xkaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBpdGVyaSA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBjb3VudGkgPSBDLmNvdW50aVxubGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbmxldCBmaW5kX21hcGkgPSBDLmZpbmRfbWFwaVxubGV0IGZpbmRpID0gQy5maW5kaVxubGV0IGZvbGRpID0gQy5mb2xkaVxubGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxubGV0IGl0ZXJpID0gQy5pdGVyaVxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9IExpbmtlZF9xdWV1ZTAudHJhbnNmZXIgc3JjIGRzdFxuXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IExpc3QuaXRlciAoZiBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IExpc3QuaXRlciAoZiBpIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPlxuICAgIG1hdGNoIGYgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCBmIGkgYSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGIgLT4gZW5xdWV1ZSByZXMgYik7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gaWYgZiBpIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gZW5xdWV1ZSByZXMgKGYgYSkpO1xuICByZXNcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gZW5xdWV1ZSByZXMgKGYgaSBhKSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXIgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyaSBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsaXN0ID0gTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnJheSB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgaW5pdCBsZW4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGVucXVldWUgdCAoZiBpKVxuICBkb25lO1xuICB0XG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIGxlbmd0aCB0IHdpdGhcbiAgfCAwIC0+IFt8fF1cbiAgfCBsZW4gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW4gKHBlZWtfZXhuIHQpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIHYgLT5cbiAgICAgIGFyci4oIWkpIDwtIHY7XG4gICAgICBpbmNyIGkpO1xuICAgIGFyclxuOztcblxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKGxpc3Rfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxubGV0IHNpbmdsZXRvbiBhID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZW5xdWV1ZSB0IGE7XG4gIHRcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQ2NFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50NjRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQ2NF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cblxuICBsZXQgY29tcGFyZSA9IEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5sZXQgbnVtX2JpdHMgPSA2NFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfb2ZfYml0cyA9IGZsb2F0X29mX2JpdHNcbmxldCBiaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdFxubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGxvZ25vdFxubGV0IGJpdF94b3IgPSBsb2d4b3JcbmxldCBiaXRfb3IgPSBsb2dvclxubGV0IGJpdF9hbmQgPSBsb2dhbmRcbmxldCBtaW5fdmFsdWUgPSBtaW5faW50XG5sZXQgbWF4X3ZhbHVlID0gbWF4X2ludFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBJbnRfbWF0aC5Qcml2YXRlLmludDY0X3Bvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBTdGRsaWIuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwMTYgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAzMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDQ4IHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXA2NCB4KSAxNlxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgaW5jciByID0gciA6PSBhZGQgIXIgb25lXG5sZXQgZGVjciByID0gciA6PSBzdWIgIXIgb25lXG5cbmV4dGVybmFsIG9mX2ludDY0IDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0XG5sZXQgdG9faW50NjQgdCA9IHRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmV4dGVybmFsIHRvX2ludF90cnVuYyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgdG9faW50MzJfdHJ1bmMgOiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IChpbnQzMltAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludF90cnVuY1xuICA6ICAoaW50NjRbQGxvY2FsX29wdF0pXG4gIC0+IChuYXRpdmVpbnRbQGxvY2FsX29wdF0pXG4gID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgb2ZfaW50IDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IChpbnQzMltAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29mX2ludDMyXCJcblxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252LmludDY0X3RvX2ludFxubGV0IHRvX2ludF9leG4gPSBDb252LmludDY0X3RvX2ludF9leG5cbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5pbnQ2NF90b19pbnQzMlxubGV0IHRvX2ludDMyX2V4biA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuXG5sZXQgb2ZfbmF0aXZlaW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gb2ZfbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5JbnQ2NC5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuSW50NjQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLkludDY0LnByZWQgeCA9IFN0ZGxpYi5JbnQ2NC56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIFN0ZGxpYi5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBTdGRsaWIuSW50NjQuZXF1YWwgaSBTdGRsaWIuSW50NjQub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLkludDY0LnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gbmVnXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVMeFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfbmVnXCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X2FuZFwiXG4gIGV4dGVybmFsICggbG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X29yXCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X3hvclwiXG5cbiAgbGV0IGxub3QgPSBiaXRfbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9sc2xcIlxuXG4gIGV4dGVybmFsICggYXNyIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfYXNyXCJcblxuICBleHRlcm5hbCAoIGxzciApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQ2NCA6IHQgLT4gdCAtPiBpbnQpXG4gICAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50NjQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIHdyYXBfbW9kdWxvIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgdW53cmFwIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBTdGRsaWIuSW50NjQudFxuXG4gIHZhbCBpbnZhcmlhbnQgOiB0IC0+IHVuaXRcbiAgdmFsIGFkZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdWIgOiB0IC0+IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIHN1Y2MgOiB0IC0+IHRcbiAgdmFsIHByZWQgOiB0IC0+IHRcbiAgdmFsIG11bCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGl2IDogdCAtPiB0IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3Bjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBiaXRfbm90IDogdCAtPiB0XG4gIHZhbCBiaXRfeG9yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9vciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfYW5kIDogdCAtPiB0IC0+IHRcbiAgdmFsIHNoaWZ0X2xlZnQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQ2NCA6IHQgLT4gU3RkbGliLkludDY0LnRcbiAgdmFsIG9mX2ludDY0IDogU3RkbGliLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IFN0ZGxpYi5JbnQ2NC50IC0+IHRcbiAgdmFsIG9mX2ludDY0X3RydW5jIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGNlaWxfcG93MiA6IHQgLT4gdFxuICB2YWwgZmxvb3JfcG93MiA6IHQgLT4gdFxuICB2YWwgY2VpbF9sb2cyIDogdCAtPiBpbnRcbiAgdmFsIGZsb29yX2xvZzIgOiB0IC0+IGludFxuICB2YWwgaXNfcG93MiA6IHQgLT4gYm9vbFxuICB2YWwgY2x6IDogdCAtPiBpbnRcbiAgdmFsIGN0eiA6IHQgLT4gaW50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUMFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgbGV0IHdyYXBfZXhuIHggPVxuICAgICgqIFJhaXNlcyBpZiB0aGUgaW50NjQgdmFsdWUgZG9lcyBub3QgZml0IG9uIGludDYzLiAqKVxuICAgIENvbnYuaW50NjRfZml0X29uX2ludDYzX2V4biB4O1xuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoU3RkbGliLkludDY0Lm11bCB4IDJMKSBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgd3JhcF9tb2R1bG8geCA9IFN0ZGxpYi5JbnQ2NC5tdWwgeCAyTFxuICBsZXQgdW53cmFwIHggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggMVxuXG4gICgqIFRoaXMgZG9lcyBub3QgdXNlIHdyYXAgb3IgdW53cmFwIHRvIGF2b2lkIGdlbmVyYXRpbmcgZXhjZXB0aW9ucyBpbiB0aGUgY2FzZSBvZlxuICAgICBvdmVyZmxvd3MuIFRoaXMgaXMgdG8gcHJlc2VydmUgdGhlIHNlbWFudGljcyBvZiBpbnQgdHlwZSBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlLiAqKVxuICBsZXQgZjIgZiBhIGIgPVxuICAgIFN0ZGxpYi5JbnQ2NC5tdWwgKGYgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYiAxKSkgMkxcbiAgOztcblxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZUxcbiAgbGV0IG0geCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmQgeCBtYXNrXG4gIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAobSB0ID0gdClcbiAgbGV0IGFkZCB4IHkgPSBTdGRsaWIuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IFN0ZGxpYi5JbnQ2NC5zdWIgeCB5XG4gIGxldCBuZWcgeCA9IFN0ZGxpYi5JbnQ2NC5uZWcgeFxuICBsZXQgYWJzIHggPSBTdGRsaWIuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWluX2ludFxuICBsZXQgbWF4X3ZhbHVlID0gbSBTdGRsaWIuSW50NjQubWF4X2ludFxuICBsZXQgYml0X25vdCB4ID0gbSAoU3RkbGliLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IFN0ZGxpYi5JbnQ2NC5sb2dhbmRcbiAgbGV0IGJpdF94b3IgPSBTdGRsaWIuSW50NjQubG9neG9yXG4gIGxldCBiaXRfb3IgPSBTdGRsaWIuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gU3RkbGliLkludDY0LnNoaWZ0X2xlZnQgeCBpXG4gIGxldCBzaGlmdF9yaWdodCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgeCBpKVxuICBsZXQgc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkgPSBtIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IFN0ZGxpYi5JbnQ2NC5tdWwgYSAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSlcbiAgbGV0IGRpdiBhIGIgPSB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gU3RkbGliLkludDY0LnJlbSBhIGJcbiAgbGV0IHBvcGNvdW50IHggPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudCB4XG4gIGxldCB0b19pbnQ2NCB0ID0gdW53cmFwIHRcbiAgbGV0IG9mX2ludDY0IHQgPSB3cmFwIHRcbiAgbGV0IG9mX2ludDY0X2V4biB0ID0gd3JhcF9leG4gdFxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgdCA9IHdyYXBfbW9kdWxvIHRcbiAgbGV0IHRfb2Zfc2V4cCB4ID0gd3JhcF9leG4gKGludDY0X29mX3NleHAgeClcbiAgbGV0IHNleHBfb2ZfdCB4ID0gc2V4cF9vZl9pbnQ2NCAodW53cmFwIHgpXG4gIGxldCBjb21wYXJlICh4IDogdCkgeSA9IGNvbXBhcmUgeCB5XG4gIGxldCBpc19wb3cyIHggPSBJbnQ2NC5pc19wb3cyICh1bndyYXAgeClcblxuICBsZXQgY2x6IHggPVxuICAgICgqIFdlIHJ1biBJbnQ2NC5jbHogZGlyZWN0bHkgb24gdGhlIHdyYXBwZWQgaW50NjMgdmFsdWUuIFRoaXMgaXMgY29ycmVjdCBiZWNhdXNlIHRoZVxuICAgICAgIGJpdHMgb2YgdGhlIGludDYzX2VtdWwgYXJlIGxlZnQtYWxpZ25lZCBpbiB0aGUgSW50NjQuICopXG4gICAgSW50NjQuY2x6IHhcbiAgOztcblxuICBsZXQgY3R6IHggPSBJbnQ2NC5jdHogKHVud3JhcCB4KVxuICBsZXQgZmxvb3JfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBjZWlsX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgZmxvb3JfbG9nMiB4ID0gSW50NjQuZmxvb3JfbG9nMiAodW53cmFwIHgpXG4gIGxldCBjZWlsX2xvZzIgeCA9IEludDY0LmNlaWxfbG9nMiAodW53cmFwIHgpXG5lbmRcblxub3BlbiBXXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IFcudCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChXLmdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIFcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBXLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKFcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoVy5zZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gVy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBXLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVy5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVy5jb21wYXJlXG4gIGxldCBpbnZhcmlhbnQgPSBXLmludmFyaWFudFxuXG4gICgqIFdlIGRvbid0IGV4cGVjdCBbaGFzaF0gdG8gZm9sbG93IHRoZSBiZWhhdmlvciBvZiBpbnQgaW4gNjRiaXQgYXJjaGl0ZWN0dXJlICopXG4gIGxldCBfID0gaGFzaFxuICBsZXQgaGFzaCAoeCA6IHQpID0gU3RkbGliLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RkbGliLkludDY0LnRvX3N0cmluZyAodW53cmFwIHgpXG5cbiAgbGV0IG9mX3N0cmluZ19yYXcgc3RyID1cbiAgICBsZXQgc2lnbiwgc2lnbmVkbmVzcyA9IHNpZ25fYW5kX3NpZ25lZG5lc3Mgc3RyIGluXG4gICAgaWYgc2lnbmVkbmVzc1xuICAgIHRoZW4gb2ZfaW50NjRfZXhuIChTdGRsaWIuSW50NjQub2Zfc3RyaW5nIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb3Nfc3RyID1cbiAgICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICB8IGBQb3MgLT4gc3RyXG4gICAgICBpblxuICAgICAgbGV0IGludDY0ID0gU3RkbGliLkludDY0Lm9mX3N0cmluZyBwb3Nfc3RyIGluXG4gICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgaWYgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGludDY0IDBMIHRoZW4gaW52YWxpZF9zdHIgc3RyO1xuICAgICAgbGV0IGludDYzID0gd3JhcF9tb2R1bG8gaW50NjQgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBgTmVnIC0+IG5lZyBpbnQ2M1xuICAgICAgfCBgUG9zIC0+IGludDYzKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnkgb2Zfc3RyaW5nX3JhdyBzdHIgd2l0aFxuICAgIHwgXyAtPiBpbnZhbGlkX3N0ciBzdHJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX29wdCBzdHIgPVxuICAgIG1hdGNoIG9mX3N0cmluZ19yYXcgc3RyIHdpdGhcbiAgICB8IHQgLT4gU29tZSB0XG4gICAgfCBleGNlcHRpb24gXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGJzd2FwMTYgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDE2ICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDMyIHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAzMiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXA0OCB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwNDggKHVud3JhcCB0KSlcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG51bV9iaXRzID0gNjNcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5sZXQgc2hpZnRfcmlnaHQgPSBzaGlmdF9yaWdodFxubGV0IHNoaWZ0X2xlZnQgPSBzaGlmdF9sZWZ0XG5sZXQgYml0X25vdCA9IGJpdF9ub3RcbmxldCBiaXRfeG9yID0gYml0X3hvclxubGV0IGJpdF9vciA9IGJpdF9vclxubGV0IGJpdF9hbmQgPSBiaXRfYW5kXG5sZXQgcG9wY291bnQgPSBwb3Bjb3VudFxubGV0IGFicyA9IGFic1xubGV0IHByZWQgPSBwcmVkXG5sZXQgc3VjYyA9IHN1Y2NcbmxldCBwb3cgPSBwb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVcbmxldCBtaW51c19vbmUgPSB3cmFwX2V4biBTdGRsaWIuSW50NjQubWludXNfb25lXG5sZXQgb25lID0gd3JhcF9leG4gU3RkbGliLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBTdGRsaWIuSW50NjQuemVyb1xubGV0IGlzX3BvdzIgPSBpc19wb3cyXG5sZXQgZmxvb3JfcG93MiA9IGZsb29yX3BvdzJcbmxldCBjZWlsX3BvdzIgPSBjZWlsX3BvdzJcbmxldCBmbG9vcl9sb2cyID0gZmxvb3JfbG9nMlxubGV0IGNlaWxfbG9nMiA9IGNlaWxfbG9nMlxubGV0IGNseiA9IGNselxubGV0IGN0eiA9IGN0elxubGV0IHRvX2Zsb2F0IHggPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgKHVud3JhcCB4KVxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCB4ID0gd3JhcF9tb2R1bG8gKFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0Lm9mX2Zsb2F0IHQpXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDYzLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgb2ZfaW50NjQgPSBvZl9pbnQ2NFxubGV0IG9mX2ludDY0X2V4biA9IG9mX2ludDY0X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gb2ZfaW50NjRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IHRvX2ludDY0XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5sZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG5sZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICBpZiBtaW4gPiBtYXhcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuOztcblxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxuXG4oKiBXZSBjYW4gcmV1c2UgY29udmVyc2lvbiBmdW5jdGlvbiBmcm9tL3RvIGludDY0IGhlcmUuICopXG5sZXQgb2ZfaW50IHggPSB3cmFwX2V4biAoQ29udi5pbnRfdG9faW50NjQgeClcbmxldCBvZl9pbnRfZXhuIHggPSBvZl9pbnQgeFxubGV0IHRvX2ludCB4ID0gQ29udi5pbnQ2NF90b19pbnQgKHVud3JhcCB4KVxubGV0IHRvX2ludF9leG4geCA9IENvbnYuaW50NjRfdG9faW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50X3RydW5jIHggPSBDb252LmludDY0X3RvX2ludF90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfaW50MzIgeCA9IHdyYXBfZXhuIChDb252LmludDMyX3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50MzJfZXhuIHggPSBvZl9pbnQzMiB4XG5sZXQgdG9faW50MzIgeCA9IENvbnYuaW50NjRfdG9faW50MzIgKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludDMyX3RydW5jIHggPSBDb252LmludDY0X3RvX2ludDMyX3RydW5jICh1bndyYXAgeClcbmxldCBvZl9uYXRpdmVpbnQgeCA9IG9mX2ludDY0IChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF9leG4geCA9IHdyYXBfZXhuIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IG9mX25hdGl2ZWludF90cnVuYyB4ID0gb2ZfaW50NjRfdHJ1bmMgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgdG9fbmF0aXZlaW50IHggPSBDb252LmludDY0X3RvX25hdGl2ZWludCAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jICh1bndyYXAgeClcblxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoVC5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIFQuaGFzaF9mb2xkX3RcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gVC5oYXNoIGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuXG4gICAgbGV0IHRvX3N0cmluZyBpID1cbiAgICAgICgqIHRoZSB1c2Ugb2YgW3Vud3JhcF91bnNpZ25lZF0gaGVyZSBpcyBpbXBvcnRhbnQgZm9yIHRoZSBjYXNlIG9mIFttaW5fdmFsdWVdICopXG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVMeFwiICh1bndyYXBfdW5zaWduZWQgaSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzID0gb2Zfc3RyaW5nIChcIjB4XCIgXiBzKVxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2My5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPSB0b19zdHJpbmcgeFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2M1wiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50NjNdIGFuZCBbSW50NjMuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICB0eXBlIGVtdWxhdGVkID0gdFxuXG4gIHR5cGUgKCd1bmRlcmx5aW5nX3R5cGUsICdpbnRlcm1lZGlhdGVfdHlwZSkgdCA9XG4gICAgfCBJbnQgOiAoaW50LCBpbnQpIHRcbiAgICB8IEludDY0IDogKGludDY0LCBlbXVsYXRlZCkgdFxuZW5kXG5cbmxldCByZXByID0gUmVwci5JbnQ2NFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZGxpYi5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfaW50MzIgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDMyXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQzMi5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgSW5maXhfY29tcGFyZSA9IHN0cnVjdFxuICBvcGVuIFBvbHlcblxuICBsZXQgKCA+PSApICh4IDogdCkgeSA9IHggPj0geVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IHggPD0geVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0geCA9IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IHggPiB5XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSB4IDwgeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IHggPD4geVxuZW5kXG5cbm1vZHVsZSBDb21wYXJlID0gc3RydWN0XG4gIGluY2x1ZGUgSW5maXhfY29tcGFyZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgYXNjZW5kaW5nID0gY29tcGFyZVxuICBsZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfaW50MzIgdCA9IHRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyIHQgPSB0XG5sZXQgdG9faW50MzJfZXhuID0gdG9faW50MzJcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50LmludDMyX3BvcGNvdW50XG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbmxldCBvZl9pbnQgPSBDb252LmludF90b19pbnQzMlxubGV0IG9mX2ludF9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnRfdHJ1bmMgPSBDb252LmludF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludCA9IENvbnYuaW50MzJfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYuaW50MzJfdG9faW50X3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYuaW50MzJfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMlxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXAzMiA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVic3dhcF9pbnQzMlwiXG5cbmxldCBic3dhcDE2IHggPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCAoYnN3YXAzMiB4KSAxNlxuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBTdGRsaWIuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBTdGRsaWIuSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuSW50MzIubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuSW50MzIucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBTdGRsaWIuSW50MzIuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgU3RkbGliLkludDMyLnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5JbnQzMi5wcmVkIHggPSBTdGRsaWIuSW50MzIuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludDMyIGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY3R6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0el91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICAoKiogSGFja2VyJ3MgRGVsaWdodCBTZWNvbmQgRWRpdGlvbiBwMTA2ICopXG4gIGxldCBmbG9vcl9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBpIDw9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgU3RkbGliLkludDMyLmVxdWFsIGkgU3RkbGliLkludDMyLm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5JbnQzMi5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50MzIgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDMyXG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbHhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBleHRlcm5hbCB0cmFuc3BhcmVudF9tYWdpYyA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdiW0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGxldCByZXByID1cbiAgICAgICgqIFtPYmoubWFnaWNdIGludm9sdmVzIG9wYXF1ZW5lc3MgdW5kZXIgRmxhbWJkYSAyIHdoaWNoIHdpbGwgaW5oaWJpdFxuICAgICAgICAgYXZhaWxhYmlsaXR5IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGZvciBsYXRlciBpbmxpbmluZ1xuICAgICAgICAgKGUuZy4gaW50byBmbG9hdC5tbCkuIEFzIHN1Y2ggd2UgZXhwbGljaXRseSB1c2UgJWlkZW50aXR5IGhlcmUuICopXG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+ICh0cmFuc3BhcmVudF9tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAodHJhbnNwYXJlbnRfbWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbiAgW0BAaW5saW5lIGFsd2F5c11cbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOigoJ2Ega2V5IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgb3ZlciBib3RoIGtleXMgYW5kIHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuaXRlcmkgaCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgcHJpbnRfZW5kbGluZSAoUHJpbnRmLnNwcmludGYgXCIlZC0lZFwiIGtleSBkYXRhKSk7O1xuICAgICAgMS00XG4gICAgICA1LTZcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9ICopXG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBjb3VudCA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogQ2hvb3NlIGFuIGFyYml0cmFyeSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkZXRlcm1pbmlzdGljLiBDYWxsaW5nIFtjaG9vc2VdIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHRhYmxlXG4gICAgICByZXR1cm5zIHRoZSBzYW1lIGtleS92YWx1ZSBwYWlyLCBzbyBsb25nIGFzIHRoZSB0YWJsZSBpcyBub3QgbXV0YXRlZCBpbiBiZXR3ZWVuLlxuICAgICAgQmV5b25kIGRldGVybWluaXNtLCBubyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IGhvdyB0aGUgY2hvaWNlIGlzIG1hZGUuIEV4cGVjdFxuICAgICAgYmlhcyB0b3dhcmQgY2VydGFpbiBoYXNoIHZhbHVlcy5cblxuICAgICAgVGhpcyBoYXNoIGJpYXMgY2FuIGxlYWQgdG8gZGVnZW5lcmF0ZSBwZXJmb3JtYW5jZSBpbiBzb21lIGNhc2VzLCBzdWNoIGFzIGNsZWFyaW5nXG4gICAgICBhIGhhc2ggdGFibGUgdXNpbmcgcmVwZWF0ZWQgW2Nob29zZV0gYW5kIFtyZW1vdmVdLiBBdCBlYWNoIGl0ZXJhdGlvbiwgZmluZGluZyB0aGVcbiAgICAgIG5leHQgZWxlbWVudCBtYXkgaGF2ZSB0byBzY2FuIGZhcnRoZXIgZnJvbSBpdHMgaW5pdGlhbCBoYXNoIHZhbHVlLiAqKVxuICB2YWwgY2hvb3NlIDogKCdhLCAnYikgdCAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VdLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogQ2hvb3NlcyBhIHJhbmRvbSBrZXkvdmFsdWUgcGFpciBvZiBhIGhhc2ggdGFibGUuIFJldHVybnMgW05vbmVdIGlmIFt0XSBpcyBlbXB0eS5cblxuICAgICAgVGhlIGNob2ljZSBpcyBkaXN0cmlidXRlZCB1bmlmb3JtbHkgYWNyb3NzIGhhc2ggdmFsdWVzLCByYXRoZXIgdGhhbiBhY3Jvc3Mga2V5c1xuICAgICAgdGhlbXNlbHZlcy4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGNsb3NlciB0aGUga2V5cyBhcmUgdG8gZXZlbmx5IHNwYWNlZCBvdXQgaW4gdGhlXG4gICAgICB0YWJsZSwgdGhlIGNsb3NlciB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgdG8gYSB1bmlmb3JtIGNob2ljZSBvZiBrZXlzLlxuXG4gICAgICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBwcmVmZXJhYmxlIHRvIFtjaG9vc2VdIHdoZW4gbm9uZGV0ZXJtaW5pc3RpYyBjaG9pY2UgaXNcbiAgICAgIGFjY2VwdGFibGUsIGFuZCBiaWFzIHRvd2FyZCBjZXJ0YWluIGhhc2ggdmFsdWVzIGlzIHVuZGVzaXJhYmxlLiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5XG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAoKiogZGVmYXVsdDogW1JhbmRvbS5TdGF0ZS5kZWZhdWx0XSAqKVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2Ega2V5ICogJ2IpIG9wdGlvblxuXG4gICgqKiBMaWtlIFtjaG9vc2VfcmFuZG9tbHldLiBSYWlzZXMgaWYgW3RdIGlzIGVtcHR5LiAqKVxuICB2YWwgY2hvb3NlX3JhbmRvbWx5X2V4blxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgKCoqIGRlZmF1bHQ6IFtSYW5kb20uU3RhdGUuZGVmYXVsdF0gKilcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5ICogJ2JcblxuICAoKiogU2V0cyB0aGUgZ2l2ZW4gW2tleV0gdG8gW2RhdGFdLiAqKVxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbYWRkXSBhbmQgW2FkZF9leG5dIGxlYXZlIHRoZSB0YWJsZSB1bmNoYW5nZWQgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBwcmVzZW50LiAqKVxuICB2YWwgYWRkIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gWyBgT2sgfCBgRHVwbGljYXRlIF1cblxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2NoYW5nZSB0IGtleSB+Zl0gY2hhbmdlcyBbdF0ncyB2YWx1ZSBmb3IgW2tleV0gdG8gYmUgW2YgKGZpbmQgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCgnYiBvcHRpb24gLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZV9hbmRfcmV0dXJuIHQga2V5IH5mXSBpcyBbdXBkYXRlXSwgYnV0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBbZiBvXS4gKilcbiAgdmFsIHVwZGF0ZV9hbmRfcmV0dXJuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooKCdiIG9wdGlvbiAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW21hcCB0IGZdIHJldHVybnMgYSBuZXcgdGFibGUgd2l0aCB2YWx1ZXMgcmVwbGFjZWQgYnkgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBbZl1cbiAgICAgIHRvIHRoZSBjdXJyZW50IHZhbHVlcy5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIGxldCBoJyA9IEhhc2h0YmwubWFwIGggfmY6KChmdW4geCAtPiB4ICogMilbQGxvY2FsXSkgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIG1hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyB0YWJsZSBieSBmaWx0ZXJpbmcgdGhlIGdpdmVuIHRhYmxlJ3MgdmFsdWVzIGJ5IFtmXTogdGhlIGtleXMgZm9yIHdoaWNoXG4gICAgICBbZl0gYXBwbGllZCB0byB0aGUgY3VycmVudCB2YWx1ZSByZXR1cm5zIFtTb21lXSBhcmUga2VwdCwgYW5kIHRob3NlIGZvciB3aGljaCBpdFxuICAgICAgcmV0dXJucyBbTm9uZV0gYXJlIGRpc2NhcmRlZC5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNCk7ICg1LCA2KV0gaW5cbiAgICAgIEhhc2h0YmwuZmlsdGVyX21hcCBoIH5mOigoZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVtAbG9jYWxdKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+ICdjIG9wdGlvbilbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogTGlrZSBbcGFydGl0aW9uX21hcF0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fdGZdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiKSB0ICogKCdhLCAnYikgdFxuXG4gICgqKiBbZmluZF9vcl9hZGQgdCBrIH5kZWZhdWx0XSByZXR1cm5zIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBrZXkgW2tdIGlmIGl0IGlzIGluIHRoZVxuICAgICAgdGFibGUgW3RdLCBhbmQgb3RoZXJ3aXNlIGFzc2lnbnMgW2tdIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBbZGVmYXVsdCAoKV0uICopXG4gIHZhbCBmaW5kX29yX2FkZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGRlZmF1bHQ6KCh1bml0IC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooKCdhIGtleSAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICAoKiogW2ZpbmQgdCBrXSByZXR1cm5zIFtTb21lXSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgW2tdIGluIFt0XSwgb3IgW05vbmVdIGlmIG5vIHN1Y2hcbiAgICAgIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiIG9wdGlvblxuXG4gICgqKiBbZmluZF9leG4gdCBrXSByZXR1cm5zIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgW2tdIGluIFt0XSwgb3IgcmFpc2VzIFtTdGRsaWIuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gICgqKiBKdXN0IGxpa2UgW2ZpbmRfYW5kX2NhbGxdLCBidXQgdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgcGFzc2VkIHRvIFtpZl9mb3VuZF1cbiAgICAgIGFuZCBbaWZfbm90X2ZvdW5kXSwgc28gdGhhdCB0aGUgY2xpZW50IGNvZGUgY2FuIGF2b2lkIGFsbG9jYXRpbmcgY2xvc3VyZXMgb3IgdXNpbmdcbiAgICAgIHJlZnMgdG8gcGFzcyB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGluIGNvZGVcbiAgICAgIHdoaWNoIHRyaWVzIHRvIG1pbmltaXplIGhlYXAgYWxsb2NhdGlvbi4gKilcbiAgdmFsIGZpbmRfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooKCdiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOigoJ2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCBmaW5kaV9hbmRfY2FsbDJcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGI6J2VcbiAgICAtPiBpZl9mb3VuZDooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjpcbiAgICAgICAgICgoa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAgICAgICBbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiAnYSAtPiAnYiBvcHRpb24gLT4gJ2IgTWVyZ2VfaW50b19hY3Rpb24udClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIGtleXMgZm9yIGdpdmVuIGhhc2h0YWJsZS4gKilcbiAgdmFsIGtleXMgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IGxpc3RcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgZGF0YSBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgZGF0YSA6IChfLCAnYikgdCAtPiAnYiBsaXN0XG5cbiAgKCoqIFtmaWx0ZXJfaW5wbGFjZSB0IH5mXSByZW1vdmVzIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBbdF0gdGhhdCBkb24ndCBzYXRpc2Z5IFtmXS4gKilcbiAgdmFsIGZpbHRlcl9rZXlzX2lucGxhY2UgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIGZpbHRlcl9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbbWFwX2lucGxhY2UgdCB+Zl0gYXBwbGllcyBbZl0gdG8gYWxsIGVsZW1lbnRzIGluIFt0XSwgdHJhbnNmb3JtaW5nIHRoZW0gaW5cbiAgICAgIHBsYWNlLiAqKVxuICB2YWwgbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgdmFsIG1hcGlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX21hcGlfaW5wbGFjZVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKVxuICAgICAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pIC0+ICdyIGxpc3QgLT4gKCdhLCAncikgdCBPcl9lcnJvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gIHZhbCBncm91cFxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ2JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAgICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+ICgnYSwgJ2IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiB7MiBDcmVhdG9yc30gKilcblxuICAoKiogVGhlIG1vZHVsZSB5b3UgcGFzcyB0byBbY3JlYXRlXSBtdXN0IGhhdmUgYSB0eXBlIHRoYXQgaXMgaGFzaGFibGUsIHNleHBhYmxlLCBhbmRcbiAgICAgIGNvbXBhcmFibGUuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KTs7XG4gICAgICAgIC0gOiAoaW50LCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj47O1xuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMywgXCJzb21ldGhpbmdcIik7ICgyLCBcIndoYXRldmVyXCIpXVxuICAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBXaGVyZWFzIFtvZl9hbGlzdF0gd2lsbCByZXBvcnQgW0R1cGxpY2F0ZV9rZXldIG5vIG1hdHRlciBob3cgbWFueSBkdXBzIHRoZXJlIGFyZSBpblxuICAgICAgeW91ciBsaXN0LCBbb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXSB3aWxsIHJlcG9ydCBlYWNoIGFuZCBldmVyeSBkdXBsaWNhdGUgZW50cnkuXG5cbiAgICAgIEZvciBleGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXkgMVxuXG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIChtb2R1bGUgSW50KSBbKDEsIFwiZm9vXCIpOyAoMSwgXCJiYXJcIik7ICgyLCBcImZvb1wiKTsgKDIsIFwiYmFyXCIpXTs7XG4gICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5cyBvZiBpbnQgbGlzdCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYER1cGxpY2F0ZV9rZXlzIFsxOyAyXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc1xuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogQ3JlYXRlcyBhIHt7IU11bHRpfSBcIm11bHRpXCJ9IGhhc2h0YWJsZSwgaS5lLiwgYSBoYXNodGFibGUgd2hlcmUgZWFjaCBrZXkgcG9pbnRzIHRvIGFcbiAgICAgIGxpc3QgcG90ZW50aWFsbHkgY29udGFpbmluZyBtdWx0aXBsZSB2YWx1ZXMuIFNvIGluc3RlYWQgb2Ygc2hvcnQtY2lyY3VpdGluZyB3aXRoIGFcbiAgICAgIFtgRHVwbGljYXRlX2tleV0gdmFyaWFudCBvbiBkdXBsaWNhdGVzLCBhcyBpbiBbb2ZfYWxpc3RdLCBbb2ZfYWxpc3RfbXVsdGldIGZvbGRzXG4gICAgICB0aG9zZSB2YWx1ZXMgaW50byBhIGxpc3QgZm9yIHRoZSBnaXZlbiBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfbXVsdGkgKG1vZHVsZSBJbnQpIFsoMSwgXCJhXCIpOyAoMSwgXCJiXCIpOyAoMiwgXCJjXCIpOyAoMiwgXCJkXCIpXTs7XG4gICAgICB2YWwgaCA6IChpbnQsIHN0cmluZyBsaXN0KSBIYXNodGJsLnQgPSA8YWJzdHI+XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCAxOztcbiAgICAgIC0gOiBzdHJpbmcgbGlzdCA9IFtcImJcIjsgXCJhXCJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IgbGlzdCkgdFxuXG4gICgqKiBBcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3IgbGlzdF0gdG8gY3JlYXRlIHRoZVxuICAgICAgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlLlxuXG4gICAgICB7WyBjcmVhdGVfbWFwcGVkIGdldF9rZXkgZ2V0X2RhdGEgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIGdldF9kYXRhIHgxOyAuLi47IGdldF9rZXkgeG4sIGdldF9kYXRhIHhuXVxuICAgICAgXX1cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIEhhc2h0YmwuY3JlYXRlX21hcHBlZCAobW9kdWxlIEludClcbiAgICAgICAgICAgIH5nZXRfa2V5OigoZnVuIHggLT4geClbQGxvY2FsXSlcbiAgICAgICAgICAgIH5nZXRfZGF0YTooKGZ1biB4IC0+IHggKyAxKVtAbG9jYWxdKVxuICAgICAgICAgICBbMTsgMjsgM107O1xuICAgICAgICB2YWwgaCA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIGludCkgSGFzaHRibC50IF0gPSBgT2sgPGFic3RyPlxuXG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBtYXRjaCBoIHdpdGhcbiAgICAgICAgICB8IGBPayB4IC0+IHhcbiAgICAgICAgICB8IGBEdXBsaWNhdGVfa2V5cyBfIC0+IGZhaWx3aXRoIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgICAtIDogaW50ID0gMlxuICAgICAgdn0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAncikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlX3dpdGhfa2V5X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooKGZ1biB4IC0+IHggLyAyKVtAbG9jYWxdKVxuICAgICAgICAgICB+Z2V0X2RhdGE6KChmdW4geCAtPiB4KVtAbG9jYWxdKVxuICAgICAgICAgICB+Y29tYmluZTooKGZ1biB4IHkgLT4geCAqIHkpW0Bsb2NhbF0pXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gY29tYmluZTooKCdiIC0+ICdiIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCEnYSwgISdiKSB0XG5cbiAgKCoqIFdlIHByb3ZpZGUgYSBbc2V4cF9vZl90XSBidXQgbm90IGEgW3Rfb2Zfc2V4cF0gZm9yIHRoaXMgdHlwZSBiZWNhdXNlIG9uZSBuZWVkcyB0byBiZVxuICAgICAgZXhwbGljaXQgYWJvdXQgdGhlIGhhc2ggYW5kIGNvbXBhcmlzb24gZnVuY3Rpb25zIHVzZWQgd2hlbiBjcmVhdGluZyBhIGhhc2h0YWJsZS5cbiAgICAgIE5vdGUgdGhhdCBbSGFzaHRibC5Qb2x5LnRdIGRvZXMgaGF2ZSBbW0BAZGVyaXZpbmcgc2V4cF1dLCBhbmQgdXNlcyBPQ2FtbCdzIGJ1aWx0LWluXG4gICAgICBwb2x5bW9ycGhpYyBjb21wYXJpc29uIGFuZCBhbmQgcG9seW1vcnBoaWMgaGFzaGluZy4gKilcbiAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYiAtPiBTZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cC50XG5cbiAgaW5jbHVkZSBDcmVhdG9ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ICgqKiBAaW5saW5lICopXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgKCoqIEBpbmxpbmUgKilcblxuXG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAoKiogQGlubGluZSAqKVxuXG4gIHZhbCBoYXNoYWJsZV9zIDogKCdrZXksIF8pIHQgLT4gJ2tleSBLZXkudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgOiAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIHZhbCBoYXNoYWJsZSA6ICdhIEhhc2hhYmxlLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdrLCAndikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndikgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgZXF1YWxfbV9fdFxuICAgIDogIChtb2R1bGUgRXF1YWxfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNodGJsID0gc2lnXG4gICgqKiBBIGhhc2ggdGFibGUgaXMgYSBtdXRhYmxlIGRhdGEgc3RydWN0dXJlIGltcGxlbWVudGluZyBhIG1hcCBiZXR3ZWVuIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgIEl0IHN1cHBvcnRzIGNvbnN0YW50LXRpbWUgbG9va3VwIGFuZCBpbi1wbGFjZSBtb2RpZmljYXRpb24uXG5cbiAgICAgIHsxIFVzYWdlfVxuXG4gICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCB3ZSdsbCBjcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggc3RyaW5nIGtleXMgdXNpbmcgdGhlXG4gICAgICB7eyFjcmVhdGV9W2NyZWF0ZV19IGNvbnN0cnVjdG9yLCB3aGljaCBleHBlY3RzIGEgbW9kdWxlIGRlZmluaW5nIHRoZSBrZXkncyB0eXBlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgU3RyaW5nKTs7XG4gICAgICAgIHZhbCBoIDogKHN0cmluZywgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+XG4gICAgICBdfVxuXG4gICAgICBXZSBjYW4gc2V0IHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBrZXlzIHdpdGgge3shc2V0fVtzZXRdfS4gSWYgdGhlIGtleSBhbHJlYWR5IGhhc1xuICAgICAgYSB2YWx1ZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbi5cblxuICAgICAge3ZcbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjU7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiYmFyXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fVxuXG4gICAgICBXZSBjYW4gYWNjZXNzIHZhbHVlcyBieSBrZXksIG9yIGR1bXAgYWxsIG9mIHRoZSBoYXNoIHRhYmxlJ3MgZGF0YTpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuZmluZCBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCBvcHRpb24gPSBTb21lIDZcblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIFwiZm9vXCI7O1xuICAgICAgLSA6IGludCA9IDZcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCA2KTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuICAgICAge3shY2hhbmdlfVtjaGFuZ2VdfSBsZXRzIHVzIGNoYW5nZSBhIGtleSdzIHZhbHVlIGJ5IGFwcGx5aW5nIHRoZSBnaXZlbiBmdW5jdGlvbjpcblxuICAgICAge3ZcbiAgICAgIEhhc2h0YmwuY2hhbmdlIGggXCJmb29cIiAoZnVuIHggLT5cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBTb21lICh4ICogMilcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgKTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgMTIpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG5cbiAgICAgIFdlIGNhbiB1c2Uge3shbWVyZ2V9W21lcmdlXX0gdG8gbWVyZ2UgdHdvIGhhc2h0YWJsZXMgd2l0aCBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyXG4gICAgICBob3cgd2UgY2hvb3NlIHZhbHVlcyB3aGVuIGEga2V5IGlzIHByZXNlbnQgaW4gdGhlIGZpcnN0IChcImxlZnRcIikgaGFzaHRhYmxlLCB0aGVcbiAgICAgIHNlY29uZCAoXCJyaWdodFwiKSwgb3IgYm90aC4gSGVyZSwgd2UnbGwgY29ucyB0aGUgdmFsdWVzIHdoZW4gYm90aCBoYXNodGFibGVzIGhhdmUgYVxuICAgICAga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn1cblxuICAgICAgezEgSW50ZXJmYWNlfSAqKVxuXG4gIGluY2x1ZGUgU193aXRob3V0X3N1Ym1vZHVsZXMgKCoqIEBpbmxpbmUgKilcblxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBBY2Nlc3NvcnNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBDcmVhdG9yc1xuICBtb2R1bGUgdHlwZSBNdWx0aSA9IE11bHRpXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IFNfd2l0aG91dF9zdWJtb2R1bGVzXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG4gIG1vZHVsZSBLZXkgPSBLZXlcbiAgbW9kdWxlIE1lcmdlX2ludG9fYWN0aW9uID0gTWVyZ2VfaW50b19hY3Rpb25cblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA9ICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgbW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XyA9ICgnYSBLZXkudCwgJ2IpIHRcblxuICAgIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbiAgZW5kXG5cbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gaW50IEhhc2h0YmwuTShTdHJpbmcpLnRcbiAgICAgIF19XG5cbiAgICAgIHdoaWNoIHN0YW5kcyBmb3I6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IChTdHJpbmcudCwgaW50KSBIYXNodGJsLnRcbiAgICAgIF19XG5cbiAgICAgIFRoZSBwb2ludCBpcyB0aGF0IFtpbnQgSGFzaHRibC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZFxuICAgICAgc3ludGF4IGRvZXNuJ3QgKGJlY2F1c2UgW3Rfb2Zfc2V4cF0gZG9lc24ndCBrbm93IHdoYXQgY29tcGFyaXNvbi9oYXNoIGZ1bmN0aW9uIHRvXG4gICAgICB1c2UpLiAqKVxuICBtb2R1bGUgTSAoSyA6IFQuVCkgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKi8qKilcblxuICAoKl8gU2VlIHRoZSBKYW5lIFN0cmVldCBTdHlsZSBHdWlkZSBmb3IgYW4gZXhwbGFuYXRpb24gb2YgW1ByaXZhdGVdIHN1Ym1vZHVsZXM6XG5cbiAgICBodHRwczovL29wZW5zb3VyY2UuamFuZXN0cmVldC5jb20vc3RhbmRhcmRzLyNwcml2YXRlLXN1Ym1vZHVsZXMgKilcbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gICAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICAgIHZhbCBoYXNoYWJsZSA6ICgna2V5LCBfKSB0IC0+ICdrZXkgSGFzaGFibGUudFxuICBlbmRcbmVuZFxuIiwiKCogQSBmZXcgc21hbGwgdGhpbmdzIGNvcGllZCBmcm9tIG90aGVyIHBhcnRzIG9mIEJhc2UgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiB1cywgc28gd2VcbiAgIGNhbid0IHVzZSB0aGVtLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuKCogSXRzIGltcG9ydGFudCB0aGF0IEVtcHR5IGhhdmUgbm8gYXJncy4gSXQncyB0ZW1wdGluZyB0byBtYWtlIHRoaXMgdHlwZSBhIHJlY29yZFxuICAgKGUuZy4gdG8gaG9sZCB0aGUgY29tcGFyZSBmdW5jdGlvbiksIGJ1dCBhIGxvdCBvZiBtZW1vcnkgaXMgc2F2ZWQgYnkgRW1wdHkgYmVpbmcgYW5cbiAgIGltbWVkaWF0ZSwgc2luY2UgYWxsIHVudXNlZCBidWNrZXRzIGluIHRoZSBoYXNodGJsIGRvbid0IHVzZSBhbnkgbWVtb3J5IChiZXNpZGVzIHRoZVxuICAgYXJyYXkgY2VsbCkgKilcbnR5cGUgKCdrLCAndikgdCA9XG4gIHwgRW1wdHlcbiAgfCBOb2RlIG9mXG4gICAgICB7IG11dGFibGUgbGVmdCA6ICgnaywgJ3YpIHRcbiAgICAgIDsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICA7IG11dGFibGUgaGVpZ2h0IDogaW50XG4gICAgICA7IG11dGFibGUgcmlnaHQgOiAoJ2ssICd2KSB0XG4gICAgICB9XG4gIHwgTGVhZiBvZlxuICAgICAgeyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIH1cblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiB0cnVlXG4gIHwgTGVhZiBfIHwgTm9kZSBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAwXG4gIHwgTGVhZiBfIC0+IDFcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0OyByaWdodCA9IF8gfSAtPiBoZWlnaHRcbjs7XG5cbmxldCBpbnZhcmlhbnQgY29tcGFyZSA9XG4gIGxldCBsZWdhbF9sZWZ0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSBsZWZ0X2tleSBrZXkgPCAwKVxuICBpblxuICBsZXQgbGVnYWxfcmlnaHRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfIH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgcmlnaHRfa2V5IGtleSA+IDApXG4gIGluXG4gIGxldCByZWMgaW52ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IHwgTGVhZiBfIC0+ICgpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gazsgdmFsdWUgPSBfOyBoZWlnaHQgPSBoOyByaWdodCB9IC0+XG4gICAgICBsZXQgaGwsIGhyID0gaGVpZ2h0IGxlZnQsIGhlaWdodCByaWdodCBpblxuICAgICAgaW52IGxlZnQ7XG4gICAgICBpbnYgcmlnaHQ7XG4gICAgICBsZWdhbF9sZWZ0X2tleSBrIGxlZnQ7XG4gICAgICBsZWdhbF9yaWdodF9rZXkgayByaWdodDtcbiAgICAgIGFzc2VydCAoaCA9IEludC5tYXggaGwgaHIgKyAxKTtcbiAgICAgIGFzc2VydCAoYWJzIChobCAtIGhyKSA8PSAyKVxuICBpblxuICBpbnZcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCB+Y29tcGFyZSA9IGludmFyaWFudCBjb21wYXJlIHRcblxuKCogSW4gdGhlIGZvbGxvd2luZyBjb21tZW50cyxcbiAgICd0IGlzIGJhbGFuY2VkJyBtZWFucyB0aGF0ICdpbnZhcmlhbnQgdCcgZG9lcyBub3RcbiAgIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoaXMgaW1wbGllcyBvZiBjb3Vyc2UgdGhhdCBlYWNoIG5vZGUncyBoZWlnaHQgZmllbGQgaXNcbiAgIGNvcnJlY3QuXG4gICAndCBpcyBiYWxhbmNlYWJsZScgbWVhbnMgdGhhdCBoZWlnaHQgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIG9mIHRcbiAgIGRpZmZlciBieSBhdCBtb3N0IDMuICopXG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGhhdmUgY29ycmVjdCBoZWlnaHRzXG4gICBAcG9zdDogb3V0cHV0IGhhcyB0aGUgY29ycmVjdCBoZWlnaHQgKilcbmxldCB1cGRhdGVfaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gb2xkX2hlaWdodDsgcmlnaHQgfSBhcyB4KSAtPlxuICAgIGxldCBuZXdfaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IGxlZnQpIChoZWlnaHQgcmlnaHQpICsgMSBpblxuICAgIGlmIG5ld19oZWlnaHQgPD4gb2xkX2hlaWdodCB0aGVuIHguaGVpZ2h0IDwtIG5ld19oZWlnaHRcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzIGFyZSBiYWxhbmNlZFxuICAgQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHBvc3Q6IG91dHB1dCBpcyBiYWxhbmNlZCAoaW4gcGFydGljdWxhciwgaGVpZ2h0IGlzIGNvcnJlY3QpICopXG5sZXQgYmFsYW5jZSB0cmVlID1cbiAgbWF0Y2ggdHJlZSB3aXRoXG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gdHJlZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHJvb3Rfbm9kZSkgLT5cbiAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdFxuICAgIGFuZCBociA9IGhlaWdodCByaWdodCBpblxuICAgICgqICsgMiBpcyBjcml0aWNhbGx5IGltcG9ydGFudCwgbG93ZXJpbmcgaXQgdG8gMSB3aWxsIGJyZWFrIHRoZSBMZWFmXG4gICAgICAgYXNzdW1wdGlvbnMgaW4gdGhlIGNvZGUgYmVsb3csIGFuZCB3aWxsIGZvcmNlIHVzIHRvIHByb21vdGUgbGVhZiBub2RlcyBpblxuICAgICAgIHRoZSBiYWxhbmNlIHJvdXRpbmUuIEl0J3MgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IHdpbGwgYmFsYW5jZSBsZXNzIG9mdGVuLlxuICAgICAgIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgaXMgZGVsaWNhdGUuICBUaGUgdXBkYXRlX2hlaWdodCBjYWxscyBtdXN0XG4gICAgICAgb2NjdXIgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHNpbmNlIHVwZGF0ZV9oZWlnaHQgYXNzdW1lcyBpdHMgY2hpbGRyZW4gaGF2ZVxuICAgICAgIHRoZSBjb3JyZWN0IGhlaWdodHMuICAqKVxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICgqIEl0IGNhbm5vdCBiZSBhIGxlYWYsIGJlY2F1c2UgZXZlbiBpZiByaWdodCBpcyBlbXB0eSwgYSBsZWFmXG4gICAgICAgICBpcyBvbmx5IGhlaWdodCAxICopXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IGxlZnRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIGxlZnRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxlZnRfbm9kZV9sZWZ0ID49IGhlaWdodCBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgbGVmdClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogaWYgcmlnaHQgaXMgYSBsZWFmLCB0aGVuIGxlZnQgbXVzdCBiZSBlbXB0eS4gVGhhdCBtZWFuc1xuICAgICAgICAgICAgIGhlaWdodCBpcyAyLiBFdmVuIGlmIGhyIGlzIGVtcHR5IHdlIHN0aWxsIGNhbid0IGdldCBoZXJlLiAqKVxuICAgICAgICAgIG1hdGNoIGxlZnRfbm9kZV9yaWdodCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IGxyX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBscl9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBscl9ub2RlKSAtPlxuICAgICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIGxyX2xlZnQ7XG4gICAgICAgICAgICByb290X25vZGUubGVmdCA8LSBscl9yaWdodDtcbiAgICAgICAgICAgIGxyX25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICAgIGxyX25vZGUubGVmdCA8LSBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgICBsZWZ0X25vZGVfcmlnaHQpKVxuICAgIGVsc2UgaWYgaHIgPiBobCArIDJcbiAgICB0aGVuIChcbiAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHJpZ2h0IGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgICAgIDsga2V5ID0gX1xuICAgICAgICAgICA7IHZhbHVlID0gX1xuICAgICAgICAgICA7IGhlaWdodCA9IF9cbiAgICAgICAgICAgOyByaWdodCA9IHJpZ2h0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyByaWdodF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcmlnaHRfbm9kZV9yaWdodCA+PSBoZWlnaHQgcmlnaHRfbm9kZV9sZWZ0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgcmlnaHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHNlZSBhYm92ZSBmb3IgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHRoaXMgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgICAgIG1hdGNoIHJpZ2h0X25vZGVfbGVmdCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IE5vZGVcbiAgICAgICAgICAgICAgKHsgbGVmdCA9IHJsX2xlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBybF9yaWdodCB9IGFzXG4gICAgICAgICAgICAgICBybF9ub2RlKSAtPlxuICAgICAgICAgICAgcmlnaHRfbm9kZS5sZWZ0IDwtIHJsX3JpZ2h0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJsX2xlZnQ7XG4gICAgICAgICAgICBybF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICAgIHJsX25vZGUucmlnaHQgPC0gcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodF9ub2RlX2xlZnQ7XG4gICAgICAgICAgICByaWdodF9ub2RlX2xlZnQpKVxuICAgIGVsc2UgKFxuICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgdHJlZSlcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfbGVmdCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIGxlZnQgdHJlZSB0aGVuICgpIGVsc2Ugci5sZWZ0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChsZWZ0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X3JpZ2h0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgcmlnaHQgdHJlZSB0aGVuICgpIGVsc2Ugci5yaWdodCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0IGlzIGJhbGFuY2VkLlxuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlZCwgd2l0aCBuZXcgbm9kZSBpbnNlcnRlZFxuICAgQHBvc3Q6ICFhZGRlZCA9IHRydWUgaWZmIHRoZSBzaGFwZSBvZiB0aGUgaW5wdXQgdHJlZSBjaGFuZ2VkLiAgKilcbmxldCBhZGQgPVxuICBsZXQgcmVjIGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IExlYWYgKHsga2V5ID0gayc7IHZhbHVlID0gXyB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaycgayBpblxuICAgICAgKCogVGhpcyBjb21wYXJlIGlzIHJldmVyc2VkIG9uIHB1cnBvc2UsIHdlIGFyZSBwcmV0ZW5kaW5nXG4gICAgICAgICB0aGF0IHRoZSBsZWFmIHdhcyBqdXN0IGluc2VydGVkIGluc3RlYWQgb2YgdGhlIG90aGVyIHdheVxuICAgICAgICAgcm91bmQsIHRoYXQgd2F5IHdlIG9ubHkgYWxsb2NhdGUgb25lIG5vZGUuICopXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2O1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkZGVkIDo9IHRydWU7XG4gICAgICAgIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gTm9kZSB7IGxlZnQgPSB0OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gRW1wdHkgfVxuICAgICAgICBlbHNlIE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSB0IH0pXG4gICAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZGVkIDo9IGZhbHNlO1xuICAgICAgICBpZiByZXBsYWNlIHRoZW4gci52YWx1ZSA8LSB2KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiBzZXRfbGVmdCB0IChhZGQgbGVmdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KVxuICAgICAgZWxzZSBzZXRfcmlnaHQgdCAoYWRkIHJpZ2h0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpO1xuICAgICAgdFxuICBpblxuICBmdW4gdCB+cmVwbGFjZSB+Y29tcGFyZSB+YWRkZWQgfmtleSB+ZGF0YSAtPlxuICAgIGxldCB0ID0gYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGtleSBkYXRhIGluXG4gICAgaWYgIWFkZGVkIHRoZW4gYmFsYW5jZSB0IGVsc2UgdFxuOztcblxubGV0IHJlYyBmaXJzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IGw7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gZmlyc3QgbFxuOztcblxubGV0IHJlYyBsYXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHIgfSAtPiBsYXN0IHJcbjs7XG5cblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWMgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX25vdF9mb3VuZFxuICA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2UgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTprJyB+ZGF0YTp2IGFyZzEgYXJnMlxuICAgIGVsc2VcbiAgICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgKGlmIGMgPCAwIHRoZW4gbGVmdCBlbHNlIHJpZ2h0KVxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICBrXG4gICAgICAgIGFyZzFcbiAgICAgICAgYXJnMlxuICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIGRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSAoKSAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5ICgpICgpID0gaWZfbm90X2ZvdW5kIGtleSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgICgpXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIGRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIGRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgPSBpZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgIGJcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmQgPVxuICBsZXQgaWZfZm91bmQgdiA9IFNvbWUgdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBOb25lIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gPVxuICBsZXQgaWZfZm91bmQgXyA9IHRydWUgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gZmFsc2UgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IHJlbW92ZSA9XG4gIGxldCByZWMgbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIF8gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBtaW5fZWx0IGxlZnRcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCB0cmVlID1cbiAgICBtYXRjaCB0cmVlIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgIHwgTGVhZiBfIC0+IEVtcHR5ICgqIFRoaXMgbXVzdCBiZSB0aGUgcm9vdCAqKVxuICAgIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+IHJpZ2h0XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT5cbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSBFbXB0eTtcbiAgICAgIHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgKHJlbW92ZV9taW5fZWx0IGxlZnQpO1xuICAgICAgdHJlZVxuICBpblxuICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgdHJlZSA9IG1pbl9lbHQgdDIgaW5cbiAgICAgIChtYXRjaCB0cmVlIHdpdGhcbiAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgICAgICBsZXQgdDIgPSBiYWxhbmNlIChyZW1vdmVfbWluX2VsdCB0MikgaW5cbiAgICAgICAgIE5vZGVcbiAgICAgICAgICAgeyBsZWZ0ID0gdDFcbiAgICAgICAgICAgOyBrZXkgPSBrXG4gICAgICAgICAgIDsgdmFsdWUgPSB2XG4gICAgICAgICAgIDsgaGVpZ2h0ID0gSW50Lm1heCAoaGVpZ2h0IHQxKSAoaGVpZ2h0IHQyKSArIDFcbiAgICAgICAgICAgOyByaWdodCA9IHQyXG4gICAgICAgICAgIH1cbiAgICAgICB8IE5vZGUgXyBhcyBub2RlIC0+XG4gICAgICAgICBzZXRfcmlnaHQgbm9kZSAocmVtb3ZlX21pbl9lbHQgdDIpO1xuICAgICAgICAgc2V0X2xlZnQgbm9kZSB0MTtcbiAgICAgICAgIG5vZGUpXG4gIGluXG4gIGxldCByZWMgcmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGsgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICBFbXB0eVxuICAgIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGsnID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgRW1wdHkpXG4gICAgICBlbHNlIChcbiAgICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgICAgdClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIG1lcmdlIGxlZnQgcmlnaHQpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0X2xlZnQgdCAocmVtb3ZlIGxlZnQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHNldF9yaWdodCB0IChyZW1vdmUgcmlnaHQgcmVtb3ZlZCBjb21wYXJlIGspO1xuICAgICAgICB0KVxuICBpblxuICBmdW4gdCB+cmVtb3ZlZCB+Y29tcGFyZSBrIC0+IGJhbGFuY2UgKHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrKVxuOztcblxubGV0IHJlYyBmb2xkIHQgfmluaXQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBpbml0XG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhIGluaXRcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBFbXB0eVxuICAgICAgfSAtPiBmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gRW1wdHlcbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIGluaXQpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9IH1cbiAgICAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH07IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9XG4gICAgLT4gZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSkgfmZcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpIH5mXG47O1xuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgaXRlciBsZWZ0IH5mO1xuICAgIGYgfmtleSB+ZGF0YTtcbiAgICBpdGVyIHJpZ2h0IH5mXG47O1xuXG5sZXQgcmVjIG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmICh7IGtleTsgdmFsdWUgfSBhcyB0KSAtPiB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZVxuICB8IE5vZGUgKHsgbGVmdDsga2V5OyB2YWx1ZTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyB0KSAtPlxuICAgIG1hcGlfaW5wbGFjZSB+ZiBsZWZ0O1xuICAgIHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlO1xuICAgIG1hcGlfaW5wbGFjZSB+ZiByaWdodFxuOztcblxubGV0IGNob29zZV9leG4gPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltBdmx0cmVlLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSlcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZTsgXyB9IHwgTm9kZSB7IGtleTsgdmFsdWU7IF8gfSAtPiBrZXksIHZhbHVlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2h0YmxfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXkuU1xuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IGhhc2hfcGFyYW0gPSBIYXNoYWJsZS5oYXNoX3BhcmFtXG5sZXQgaGFzaCA9IEhhc2hhYmxlLmhhc2hcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG50eXBlICgnaywgJ3YpIHQgPVxuICB7IG11dGFibGUgdGFibGUgOiAoJ2ssICd2KSBBdmx0cmVlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IGdyb3d0aF9hbGxvd2VkIDogYm9vbFxuICA7IGhhc2hhYmxlIDogJ2sgSGFzaGFibGUudFxuICA7IG11dGFibGUgbXV0YXRpb25fYWxsb3dlZCA6IGJvb2wgKCogU2V0IGR1cmluZyBhbGwgaXRlcmF0aW9uIG9wZXJhdGlvbnMgKilcbiAgfVxuXG50eXBlICdhIGtleSA9ICdhXG5cbmxldCBzZXhwX29mX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5zZXhwX29mX3RcbmxldCBjb21wYXJlX2tleSB0ID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5jb21wYXJlXG5cbmxldCBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0ID1cbiAgaWYgbm90IHQubXV0YXRpb25fYWxsb3dlZCB0aGVuIGZhaWx3aXRoIFwiSGFzaHRibDogbXV0YXRpb24gbm90IGFsbG93ZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG47O1xuXG5sZXQgd2l0aG91dF9tdXRhdGluZyB0IGYgPVxuICBpZiB0Lm11dGF0aW9uX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIGZhbHNlO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIHRydWU7XG4gICAgICB4XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHJhaXNlIGV4bilcbiAgZWxzZSBmICgpXG47O1xuXG4oKiogSW50ZXJuYWxseSB1c2UgYSBtYXhpbXVtIHNpemUgdGhhdCBpcyBhIHBvd2VyIG9mIDIuIFJldmVyc2VzIHRoZSBhYm92ZSB0byBmaW5kIHRoZVxuICAgIGZsb29yIHBvd2VyIG9mIDIgYmVsb3cgdGhlIHN5c3RlbSBtYXggYXJyYXkgbGVuZ3RoICopXG5sZXQgbWF4X3RhYmxlX2xlbmd0aCA9IEludC5mbG9vcl9wb3cyIEFycmF5Lm1heF9sZW5ndGhcblxuKCogVGhlIGRlZmF1bHQgc2l6ZSBpcyBjaG9zZW4gdG8gYmUgMCAoYXMgb3Bwb3NlZCB0byAxMjggYXMgaXQgd2FzIGJlZm9yZSkgYmVjYXVzZTpcbiAgIC0gMTI4IGNhbiBjcmVhdGUgc3Vic3RhbnRpYWwgbWVtb3J5IG92ZXJoZWFkICh4MTApIHdoZW4gY3JlYXRpbmcgbWFueSB0YWJsZXMsIG1vc3RcbiAgICAgb2Ygd2hpY2ggYXJlIG5vdCBiaWcgKHNheSwgaWYgeW91IGhhdmUgYSBoYXNodGJsIG9mIGhhc2h0YmwpLiBBbmQgbWVtb3J5IG92ZXJoZWFkIGlzXG4gICAgIG5vdCB0aGF0IGVhc3kgdG8gcHJvZmlsZS5cbiAgIC0gaWYgYSBoYXNodGJsIGlzIGdvaW5nIHRvIGdyb3csIGl0J3Mgbm90IGNsZWFyIHdoeSAxMjggaXMgbWFya2VkbHkgYmV0dGVyIHRoYW4gb3RoZXJcbiAgICAgc2l6ZXMgKGlmIHlvdSBnb2luZyB0byBzdGljayAxMDAwIGVsZW1lbnRzLCB5b3UncmUgZ29pbmcgdG8gZ3JvdyB0aGUgaGFzaHRhYmxlIG9uY2VcbiAgICAgb3IgdHdpY2UgYW55d2F5KVxuICAgLSBpbiBvdGhlciBsYW5ndWFnZXMgKGxpa2UgcnVzdCwgcHl0aG9uLCBhbmQgYXBwYXJlbnRseSBnbyksIHRoZSBkZWZhdWx0IGlzIGFsc28gYVxuICAgICBzbWFsbCBzaXplLiAqKVxubGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMCkgfmhhc2hhYmxlICgpID1cbiAgbGV0IHNpemUgPSBJbnQubWluIChJbnQubWF4IDEgc2l6ZSkgbWF4X3RhYmxlX2xlbmd0aCBpblxuICBsZXQgc2l6ZSA9IEludC5jZWlsX3BvdzIgc2l6ZSBpblxuICB7IHRhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBBdmx0cmVlLmVtcHR5XG4gIDsgbGVuZ3RoID0gMFxuICA7IGdyb3d0aF9hbGxvd2VkXG4gIDsgaGFzaGFibGVcbiAgOyBtdXRhdGlvbl9hbGxvd2VkID0gdHJ1ZVxuICB9XG47O1xuXG4oKiogU3VwcGxlbWVudGFsIGhhc2guIFRoaXMgbWF5IG5vdCBiZSBuZWNlc3NhcnksIGl0IGlzIGludGVuZGVkIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvb3JcbiAgICBoYXNoIGZ1bmN0aW9ucywgZm9yIHdoaWNoIHRoZSBwb3dlciBvZiAyIHNpemVkIHRhYmxlIHdpbGwgYmUgZXNwZWNpYWxseSBzZW5zaXRpdmUuXG4gICAgV2l0aCBzb21lIHRlc3Rpbmcgd2UgbWF5IGNob29zZSB0byBhZGQgaXQsIGJ1dCB0aGlzIHRhYmxlIGlzIGRlc2lnbmVkIHRvIGJlIHJvYnVzdCB0b1xuICAgIGNvbGxpc2lvbnMsIGFuZCBpbiBtb3N0IG9mIG15IHRlc3RpbmcgdGhpcyBkZWdyYWRlcyBwZXJmb3JtYW5jZS4gKilcbmxldCBfc3VwcGxlbWVudGFsX2hhc2ggaCA9XG4gIGxldCBoID0gaCBseG9yICgoaCBsc3IgMjApIGx4b3IgKGggbHNyIDEyKSkgaW5cbiAgaCBseG9yIChoIGxzciA3KSBseG9yIChoIGxzciA0KVxuOztcblxubGV0IHNsb3QgdCBrZXkgPVxuICBsZXQgaGFzaCA9IHQuaGFzaGFibGUuSGFzaGFibGUuaGFzaCBrZXkgaW5cbiAgKCogdGhpcyBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlIGJlY2F1c2Ugd2UgZG8gW2xhbmRdIHdpdGggbm9uLW5lZ2F0aXZlIG51bWJlciAqKVxuICBoYXNoIGxhbmQgKEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSlcbjs7XG5cbmxldCBhZGRfd29ya2VyIHQgfnJlcGxhY2UgfmtleSB+ZGF0YSA9XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdDtcbiAgIWFkZGVkXG47O1xuXG5sZXQgbWF5YmVfcmVzaXplX3RhYmxlIHQgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgbGV0IHNob3VsZF9ncm93ID0gdC5sZW5ndGggPiBsZW4gaW5cbiAgaWYgc2hvdWxkX2dyb3cgJiYgdC5ncm93dGhfYWxsb3dlZFxuICB0aGVuIChcbiAgICBsZXQgbmV3X2FycmF5X2xlbmd0aCA9IEludC5taW4gKGxlbiAqIDIpIG1heF90YWJsZV9sZW5ndGggaW5cbiAgICBpZiBuZXdfYXJyYXlfbGVuZ3RoID4gbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X3RhYmxlID0gQXJyYXkuY3JlYXRlIH5sZW46bmV3X2FycmF5X2xlbmd0aCBBdmx0cmVlLmVtcHR5IGluXG4gICAgICBsZXQgb2xkX3RhYmxlID0gdC50YWJsZSBpblxuICAgICAgdC50YWJsZSA8LSBuZXdfdGFibGU7XG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IGYgfmtleSB+ZGF0YSA9IGlnbm9yZSAoYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSA6IGJvb2wpIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBpZ25vcmUgKGFkZF93b3JrZXIgfnJlcGxhY2U6dHJ1ZSB0IH5rZXkgfmRhdGEgOiBib29sKTtcbiAgbWF5YmVfcmVzaXplX3RhYmxlIHRcbjs7XG5cbmxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgbGV0IGFkZGVkID0gYWRkX3dvcmtlciB+cmVwbGFjZTpmYWxzZSB0IH5rZXkgfmRhdGEgaW5cbiAgaWYgYWRkZWRcbiAgdGhlbiAoXG4gICAgbWF5YmVfcmVzaXplX3RhYmxlIHQ7XG4gICAgYE9rKVxuICBlbHNlIGBEdXBsaWNhdGVcbjs7XG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aFxuICB8IGBPayAtPiAoKVxuICB8IGBEdXBsaWNhdGUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleSB0IGluXG4gICAgbGV0IGVycm9yID0gRXJyb3IuY3JlYXRlIFwiSGFzaHRibC5hZGRfZXhuIGdvdCBrZXkgYWxyZWFkeSBwcmVzZW50XCIga2V5IHNleHBfb2Zfa2V5IGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIHQudGFibGUuKGkpIDwtIEF2bHRyZWUuZW1wdHlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gMFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRfYW5kX2NhbGwgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgdiBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDEgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbDIgdHJlZSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5IH5hIH5iIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICAoKiB3aXRoIGEgZ29vZCBoYXNoIGZ1bmN0aW9uIHRoZXNlIGZpcnN0IHR3byBjYXNlcyB3aWxsIGJlIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHksXG4gICAgIGFuZCBBdmx0cmVlLmZpbmQgaXMgcmVjdXJzaXZlLCBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkLCBzbyBkb2luZyB0aGlzIGF2b2lkcyBhXG4gICAgIGZ1bmN0aW9uIGNhbGwgaW4gbW9zdCBjYXNlcy4gKilcbiAgbWF0Y2ggdC50YWJsZS4oc2xvdCB0IGtleSkgd2l0aFxuICB8IEF2bHRyZWUuRW1wdHkgLT4gaWZfbm90X2ZvdW5kIGtleVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBlbHNlIGlmX25vdF9mb3VuZCBrZXlcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kaV9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDEgdCBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCBBdmx0cmVlLkxlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwIHRoZW4gaWZfZm91bmQgfmtleTprIH5kYXRhOnYgYSBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgdCBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGIgZWxzZSBpZl9ub3RfZm91bmQga2V5IGEgYlxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsMlxuICAgICAgdHJlZVxuICAgICAgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gICAgICBrZXlcbiAgICAgIH5hXG4gICAgICB+YlxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQga2V5IC0+IGZpbmRfYW5kX2NhbGwgdCBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBmYWxzZVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gXyB9IC0+IGNvbXBhcmVfa2V5IHQgayBrZXkgPSAwXG4gIHwgdHJlZSAtPiBBdmx0cmVlLm1lbSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWRfb3JfcmVtb3ZlZCA9ICAocmVmIGZhbHNlKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgaXRlcl9rZXlzIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCByZWMgY2hvb3NlX25vbmVtcHR5IHRhYmxlIGkgPVxuICBsZXQgYXZsdHJlZSA9IEFycmF5LnVuc2FmZV9nZXQgdGFibGUgaSBpblxuICBpZiBBdmx0cmVlLmlzX2VtcHR5IGF2bHRyZWVcbiAgdGhlbiBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgKChpICsgMSkgbGFuZCAoQXJyYXkubGVuZ3RoIHRhYmxlIC0gMSkpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0ID1cbiAgbGV0IHN0YXJ0X2lkeCA9IFJhbmRvbS5TdGF0ZS5pbnQgcmFuZG9tX3N0YXRlIChBcnJheS5sZW5ndGggdC50YWJsZSkgaW5cbiAgY2hvb3NlX25vbmVtcHR5IHQudGFibGUgc3RhcnRfaWR4XG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHQpXG47O1xuXG5sZXQgY2hvb3NlX3JhbmRvbWx5X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0hhc2h0YmwuY2hvb3NlX3JhbmRvbWx5X2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKTtcbiAgY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdFxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IGludmFyaWFudF9kYXRhIHQgPVxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgQXZsdHJlZS5pbnZhcmlhbnQgdC50YWJsZS4oaSkgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpXG4gIGRvbmU7XG4gIGxldCByZWFsX2xlbiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGkgLT5cbiAgICAgIGludmFyaWFudF9rZXkga2V5O1xuICAgICAgaW52YXJpYW50X2RhdGEgZGF0YTtcbiAgICAgIGkgKyAxKVxuICBpblxuICBhc3NlcnQgKHJlYWxfbGVuID0gdC5sZW5ndGgpXG47O1xuXG5sZXQgZmluZF9leG4gPVxuICBsZXQgaWZfZm91bmQgdiBfID0gdiBpblxuICBsZXQgaWZfbm90X2ZvdW5kIGsgdCA9XG4gICAgcmFpc2VcbiAgICAgIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJIYXNodGJsLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgdC5oYXNoYWJsZS5zZXhwX29mX3QgayBdKSlcbiAgaW5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID0gZmluZF9hbmRfY2FsbDEgdCBrZXkgfmE6dCB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfZXhuXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgZmFsc2UpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IHNldCBuZXdfdCB+a2V5IH5kYXRhOihmIH5rZXkgfmRhdGEpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBjb3B5IHQgPSBtYXAgdCB+ZjpGbi5pZFxuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IFNvbWUgbmV3X2RhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IE5vbmUgLT4gKCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKSBcbiAgW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0OihkZWZhdWx0IFtAbG9jYWxdKSA9XG4gIGZpbmRfYW5kX2NhbGxcbiAgICB0XG4gICAgaWRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0ICgpIGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZGlfb3JfYWRkIHQgaWQgfmRlZmF1bHQgPVxuICBmaW5kX2FuZF9jYWxsXG4gICAgdFxuICAgIGlkXG4gICAgfmlmX2ZvdW5kOihmdW4gZGF0YSAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCBrZXkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpIFtAbm9udGFpbF1cbjs7XG5cbigqIFNvbWUgaGFzaHRibCBpbXBsZW1lbnRhdGlvbnMgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgdGhhbiB0d29cbiAgIHNlcGFyYXRlIGxvb2t1cHMgKilcbmxldCBmaW5kX2FuZF9yZW1vdmUgdCBpZCA9XG4gIGxldCByZXN1bHQgPSBmaW5kIHQgaWQgaW5cbiAgaWYgT3B0aW9uLmlzX3NvbWUgcmVzdWx0IHRoZW4gcmVtb3ZlIHQgaWQ7XG4gIHJlc3VsdFxuOztcblxuXG5sZXQgY2hhbmdlIHQgaWQgfmYgPVxuICBtYXRjaCBmIChmaW5kIHQgaWQpIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB0IGlkXG4gIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXk6aWQgfmRhdGFcbjs7XG5cbmxldCB1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mID1cbiAgbGV0IGRhdGEgPSBmIChmaW5kIHQgaWQpIGluXG4gIHNldCB0IH5rZXk6aWQgfmRhdGE7XG4gIGRhdGFcbjs7XG5cbmxldCB1cGRhdGUgdCBpZCB+ZiA9IGlnbm9yZSAodXBkYXRlX2FuZF9yZXR1cm4gdCBpZCB+ZiA6IF8pXG5cbmxldCBpbmNyX2J5IH5yZW1vdmVfaWZfemVybyB0IGtleSBieSA9XG4gIGlmIHJlbW92ZV9pZl96ZXJvXG4gIHRoZW5cbiAgICBjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvcHQgLT5cbiAgICAgIG1hdGNoIGJ5ICsgT3B0aW9uLnZhbHVlIG9wdCB+ZGVmYXVsdDowIHdpdGhcbiAgICAgIHwgMCAtPiBOb25lXG4gICAgICB8IG4gLT4gU29tZSBuKVxuICBlbHNlXG4gICAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGJ5XG4gICAgICB8IFNvbWUgaSAtPiBieSArIGkpXG47O1xuXG5sZXQgaW5jciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5XG5sZXQgZGVjciA/KGJ5ID0gMSkgPyhyZW1vdmVfaWZfemVybyA9IGZhbHNlKSB0IGtleSA9IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5ICgtYnkpXG5cbmxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgdXBkYXRlIHQga2V5IH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBbIGRhdGEgXVxuICAgIHwgU29tZSBsIC0+IGRhdGEgOjogbClcbjs7XG5cbmxldCByZW1vdmVfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBbXSB8IFNvbWUgWyBfIF0gLT4gcmVtb3ZlIHQga2V5XG4gIHwgU29tZSAoXyA6OiB0bCkgLT4gc2V0IHQgfmtleSB+ZGF0YTp0bFxuOztcblxubGV0IGZpbmRfbXVsdGkgdCBrZXkgPVxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSBsIC0+IGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSB+c2l6ZSAoKSBpblxuICBsZXQgZHVwZXMgPSByZWYgW10gaW5cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByIC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgciBpblxuICAgIGxldCBkYXRhID0gZ2V0X2RhdGEgciBpblxuICAgIGlmIG1lbSByZXMga2V5IHRoZW4gZHVwZXMgOj0ga2V5IDo6ICFkdXBlcyBlbHNlIHNldCByZXMgfmtleSB+ZGF0YSk7XG4gIG1hdGNoICFkdXBlcyB3aXRoXG4gIHwgW10gLT4gYE9rIHJlc1xuICB8IGtleXMgLT4gYER1cGxpY2F0ZV9rZXlzIChMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmUga2V5cylcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkX211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhIHJvd3MgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gc1xuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCByb3dzXG4gIGluXG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIH5oYXNoYWJsZSAoKSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgYWRkX211bHRpIHJlcyB+a2V5IH5kYXRhKTtcbiAgcmVzXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXk6ZnN0IH5nZXRfZGF0YTpzbmQgbHN0IHdpdGhcbiAgfCBgT2sgdCAtPiBgT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrIC0+IGBEdXBsaWNhdGVfa2V5IChMaXN0LmhkX2V4biBrKVxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBgT2sgdiAtPiBSZXN1bHQuT2sgdlxuICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yIFwiSGFzaHRibC5vZl9hbGlzdF9leG46IGR1cGxpY2F0ZSBrZXlcIiBrZXkgc2V4cF9vZl9rZXlcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3QgPVxuICBtYXRjaCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCB3aXRoXG4gIHwgUmVzdWx0Lk9rIHYgLT4gdlxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEVycm9yLnJhaXNlIGVcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Rcbjs7XG5cbmxldCB0b19hbGlzdCB0ID0gZm9sZCB+ZjooZnVuIH5rZXkgfmRhdGEgbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBsaXN0KSB+aW5pdDpbXSB0XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICB0XG4gIHw+IHRvX2FsaXN0XG4gIHw+IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChrMSwgXykgKGsyLCBfKSAtPiB0Lmhhc2hhYmxlLmNvbXBhcmUgazEgazIpXG4gIHw+IHNleHBfb2ZfbGlzdCAoc2V4cF9vZl9wYWlyIHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSlcbjs7XG5cbmxldCB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cCA9XG4gIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtfb2Zfc2V4cCBkX29mX3NleHApIHNleHAgaW5cbiAgbWF0Y2ggb2ZfYWxpc3Qgfmhhc2hhYmxlIGFsaXN0IH5zaXplOihMaXN0Lmxlbmd0aCBhbGlzdCkgd2l0aFxuICB8IGBPayB2IC0+IHZcbiAgfCBgRHVwbGljYXRlX2tleSBrIC0+XG4gICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgIGxldCBhbGlzdF9zZXhwcyA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIEZuLmlkIEZuLmlkKSBzZXhwIGluXG4gICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICBMaXN0Lml0ZXIyX2V4biBhbGlzdCBhbGlzdF9zZXhwcyB+ZjooZnVuIChrMiwgXykgKGsyX3NleHAsIF8pIC0+XG4gICAgICBpZiBoYXNoYWJsZS5jb21wYXJlIGsgazIgPSAwXG4gICAgICB0aGVuXG4gICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIkhhc2h0YmwudF9vZl9zZXhwOiBkdXBsaWNhdGUga2V5XCIgazJfc2V4cFxuICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGsgdilcbiAgICAgIChrX2dyYW1tYXIgOiBrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgICAgKHZfZ3JhbW1hciA6IHYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogKGssIHYpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG47O1xuXG5sZXQga2V5cyB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YTpfIGFjYyAtPiBrZXkgOjogYWNjKVxubGV0IGRhdGEgdCA9IGZvbGQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IGFkZF90b19ncm91cHMgZ3JvdXBzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cyA9XG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gcm93IC0+XG4gICAgbGV0IGtleSA9IGdldF9rZXkgcm93IGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByb3cgaW5cbiAgICBsZXQgZGF0YSA9XG4gICAgICBtYXRjaCBmaW5kIGdyb3VwcyBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgIHwgU29tZSBvbGQgLT4gY29tYmluZSBvbGQgZGF0YVxuICAgIGluXG4gICAgc2V0IGdyb3VwcyB+a2V5IH5kYXRhKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdKTtcbiAgICBuZXdfdFxuOztcblxubGV0IG1lcmdlX2ludG8gfnNyYyB+ZHN0IH5mID1cbiAgaXRlcmkgc3JjIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCBkc3RfZGF0YSA9IGZpbmQgZHN0IGtleSBpblxuICAgIGxldCBhY3Rpb24gPSB3aXRob3V0X211dGF0aW5nIGRzdCAoZnVuICgpIC0+IGYgfmtleSBkYXRhIGRzdF9kYXRhKSBpblxuICAgIG1hdGNoIChhY3Rpb24gOiBfIE1lcmdlX2ludG9fYWN0aW9uLnQpIHdpdGhcbiAgICB8IFJlbW92ZSAtPiByZW1vdmUgZHN0IGtleVxuICAgIHwgU2V0X3RvIGRhdGEgLT5cbiAgICAgIChtYXRjaCBkc3RfZGF0YSB3aXRoXG4gICAgICAgfCBOb25lIC0+IHNldCBkc3QgfmtleSB+ZGF0YVxuICAgICAgIHwgU29tZSBkc3RfZGF0YSAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZHN0X2RhdGEgZGF0YSkgdGhlbiBzZXQgZHN0IH5rZXkgfmRhdGEpKSBbQG5vbnRhaWxcbiAgXVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhYyBlbHNlIGtleSA6OiBhYylcbiAgaW5cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGtleSAtPiByZW1vdmUgdCBrZXkpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgbWFwX3Jlc3VsdHMgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IChrZXksIGYgfmtleSB+ZGF0YSkgOjogYWMpIGluXG4gIExpc3QuaXRlciBtYXBfcmVzdWx0cyB+ZjooZnVuIChrZXksIHJlc3VsdCkgLT5cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1vdmUgdCBrZXlcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhKVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID1cbiAgZW5zdXJlX211dGF0aW9uX2FsbG93ZWQgdDtcbiAgd2l0aG91dF9tdXRhdGluZyB0IChmdW4gKCkgLT5cbiAgICBBcnJheS5pdGVyIHQudGFibGUgfmY6KEF2bHRyZWUubWFwaV9pbnBsYWNlIH5mKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IG1hcGlfaW5wbGFjZSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG5sZXQgZXF1YWwgZXF1YWwgdCB0JyA9XG4gIGxlbmd0aCB0ID0gbGVuZ3RoIHQnXG4gICYmICh3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICB3aXRob3V0X211dGF0aW5nIHQnIChmdW4gKCkgLT5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIG1hdGNoIGZpbmQgdCcga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHIucmV0dXJuIGZhbHNlXG4gICAgICAgIHwgU29tZSBkYXRhJyAtPiBpZiBub3QgKGVxdWFsIGRhdGEgZGF0YScpIHRoZW4gci5yZXR1cm4gZmFsc2UpIFtAbm9udGFpbF0pO1xuICAgIHRydWUpIFtAbm9udGFpbF0pXG47O1xuXG5sZXQgc2ltaWxhciA9IGVxdWFsXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgY2hvb3NlID0gY2hvb3NlXG4gIGxldCBjaG9vc2VfZXhuID0gY2hvb3NlX2V4blxuICBsZXQgY2hvb3NlX3JhbmRvbWx5ID0gY2hvb3NlX3JhbmRvbWx5XG4gIGxldCBjaG9vc2VfcmFuZG9tbHlfZXhuID0gY2hvb3NlX3JhbmRvbWx5X2V4blxuICBsZXQgY2xlYXIgPSBjbGVhclxuICBsZXQgY29weSA9IGNvcHlcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZVxuICBsZXQgc2V0ID0gc2V0XG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGFkZF9leG4gPSBhZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBjaGFuZ2VcbiAgbGV0IHVwZGF0ZSA9IHVwZGF0ZVxuICBsZXQgdXBkYXRlX2FuZF9yZXR1cm4gPSB1cGRhdGVfYW5kX3JldHVyblxuICBsZXQgYWRkX211bHRpID0gYWRkX211bHRpXG4gIGxldCByZW1vdmVfbXVsdGkgPSByZW1vdmVfbXVsdGlcbiAgbGV0IGZpbmRfbXVsdGkgPSBmaW5kX211bHRpXG4gIGxldCBtZW0gPSBtZW1cbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGZvcl9hbGwgPSBmb3JfYWxsXG4gIGxldCBmb3JfYWxsaSA9IGZvcl9hbGxpXG4gIGxldCBjb3VudCA9IGNvdW50XG4gIGxldCBjb3VudGkgPSBjb3VudGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZpbHRlcl9tYXAgPSBmaWx0ZXJfbWFwXG4gIGxldCBmaWx0ZXJfbWFwaSA9IGZpbHRlcl9tYXBpXG4gIGxldCBmaWx0ZXJfa2V5cyA9IGZpbHRlcl9rZXlzXG4gIGxldCBmaWx0ZXIgPSBmaWx0ZXJcbiAgbGV0IGZpbHRlcmkgPSBmaWx0ZXJpXG4gIGxldCBwYXJ0aXRpb25fbWFwID0gcGFydGl0aW9uX21hcFxuICBsZXQgcGFydGl0aW9uX21hcGkgPSBwYXJ0aXRpb25fbWFwaVxuICBsZXQgcGFydGl0aW9uX3RmID0gcGFydGl0aW9uX3RmXG4gIGxldCBwYXJ0aXRpb25pX3RmID0gcGFydGl0aW9uaV90ZlxuICBsZXQgZmluZF9vcl9hZGQgPSBmaW5kX29yX2FkZFxuICBsZXQgZmluZGlfb3JfYWRkID0gZmluZGlfb3JfYWRkXG4gIGxldCBmaW5kID0gZmluZFxuICBsZXQgZmluZF9leG4gPSBmaW5kX2V4blxuICBsZXQgZmluZF9hbmRfY2FsbCA9IGZpbmRfYW5kX2NhbGxcbiAgbGV0IGZpbmRfYW5kX2NhbGwxID0gZmluZF9hbmRfY2FsbDFcbiAgbGV0IGZpbmRfYW5kX2NhbGwyID0gZmluZF9hbmRfY2FsbDJcbiAgbGV0IGZpbmRpX2FuZF9jYWxsID0gZmluZGlfYW5kX2NhbGxcbiAgbGV0IGZpbmRpX2FuZF9jYWxsMSA9IGZpbmRpX2FuZF9jYWxsMVxuICBsZXQgZmluZGlfYW5kX2NhbGwyID0gZmluZGlfYW5kX2NhbGwyXG4gIGxldCBmaW5kX2FuZF9yZW1vdmUgPSBmaW5kX2FuZF9yZW1vdmVcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IG1lcmdlID0gbWVyZ2VcbiAgbGV0IG1lcmdlX2ludG8gPSBtZXJnZV9pbnRvXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgPSBmaWx0ZXJfa2V5c19pbnBsYWNlXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSA9IGZpbHRlcl9pbnBsYWNlXG4gIGxldCBmaWx0ZXJpX2lucGxhY2UgPSBmaWx0ZXJpX2lucGxhY2VcbiAgbGV0IG1hcF9pbnBsYWNlID0gbWFwX2lucGxhY2VcbiAgbGV0IG1hcGlfaW5wbGFjZSA9IG1hcGlfaW5wbGFjZVxuICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlID0gZmlsdGVyX21hcGlfaW5wbGFjZVxuICBsZXQgZXF1YWwgPSBlcXVhbFxuICBsZXQgc2ltaWxhciA9IHNpbWlsYXJcbiAgbGV0IGluY3IgPSBpbmNyXG4gIGxldCBkZWNyID0gZGVjclxuICBsZXQgc2V4cF9vZl9rZXkgPSBzZXhwX29mX2tleVxuZW5kXG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEtleS50KSAtPiAoU2V4cC50IC0+ICdiKSAtPiBTZXhwLnQgLT4gKCdhLCAnYikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAnYSkgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBLZXkuaGFzaGFibGVcblxuICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKClcbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID0gb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIH5oYXNoYWJsZSBrX29mX3NleHAgZF9vZl9zZXhwIHNleHBcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG4gIDs7XG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXkgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IEhhc2hhYmxlLnBvbHlcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIEhhc2hhYmxlID0gSGFzaGFibGUuSGFzaGFibGVcblxuICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBsZXQgaGFzaGFibGUgdCA9IHQuaGFzaGFibGVcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgY3JlYXRlIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKVxuOztcblxubGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9leG4gfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3RfbXVsdGkgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgY3JlYXRlX21hcHBlZCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgbCA9XG4gIGNyZWF0ZV93aXRoX2tleSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbFxuOztcblxubGV0IGdyb3VwID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgZ3JvdXAgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsXG47O1xuXG5sZXQgaGFzaGFibGVfcyB0ID0gSGFzaGFibGUudG9fa2V5IHQuaGFzaGFibGVcblxubW9kdWxlIE0gKEsgOiBULlQpID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBLZXkuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cCAodHlwZSBrKSAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrKSB2X29mX3NleHAgc2V4cCA9XG4gIHRfb2Zfc2V4cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEspKSBLLnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGspIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaykgdl9ncmFtbWFyID1cbiAgdF9zZXhwX2dyYW1tYXIgSy50X3NleHBfZ3JhbW1hciB2X2dyYW1tYXJcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaF9zZXRfaW50ZlxuXG5sZXQgaGFzaGFibGVfcyA9IEhhc2h0YmwuaGFzaGFibGVfc1xubGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5sZXQgcG9seV9oYXNoYWJsZSA9IEhhc2h0YmwuUG9seS5oYXNoYWJsZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxudHlwZSAnYSB0ID0gKCdhLCB1bml0KSBIYXNodGJsLnRcbnR5cGUgJ2EgaGFzaF9zZXQgPSAnYSB0XG50eXBlICdhIGVsdCA9ICdhXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgbGV0IGNsZWFyID0gSGFzaHRibC5jbGVhclxuICBsZXQgbGVuZ3RoID0gSGFzaHRibC5sZW5ndGhcbiAgbGV0IG1lbSA9IEhhc2h0YmwubWVtXG4gIGxldCBpc19lbXB0eSB0ID0gSGFzaHRibC5pc19lbXB0eSB0XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgSGFzaHRibC5pdGVyX2tleXMgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgXyBhcyBvIC0+IHIucmV0dXJuIG8pO1xuICAgICAgTm9uZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKSBbQG5vbnRhaWxdXG4gIGxldCBhZGQgdCBrID0gSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KClcblxuICBsZXQgc3RyaWN0X2FkZCB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImVsZW1lbnQgYWxyZWFkeSBleGlzdHNcIlxuICAgIGVsc2UgKFxuICAgICAgSGFzaHRibC5zZXQgdCB+a2V5OmsgfmRhdGE6KCk7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9hZGRfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X2FkZCB0IGspXG4gIGxldCByZW1vdmUgPSBIYXNodGJsLnJlbW92ZVxuXG4gIGxldCBzdHJpY3RfcmVtb3ZlIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlIHQgaztcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yIFwiZWxlbWVudCBub3QgaW4gc2V0XCIgayAoSGFzaHRibC5zZXhwX29mX2tleSB0KVxuICA7O1xuXG4gIGxldCBzdHJpY3RfcmVtb3ZlX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9yZW1vdmUgdCBrKVxuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9IEhhc2h0YmwuaXRlcl9rZXlzIHQgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG4gIGxldCB0b19saXN0ID0gSGFzaHRibC5rZXlzXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2UgdCA9XG4gICAgc2V4cF9vZl9saXN0IHNleHBfb2ZfZSAodG9fbGlzdCB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTooaGFzaGFibGUgdCkuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IGluZGV4ID0gcmVmIChsZW4gLSAxKSBpblxuICAgIGZvbGQgdCB+aW5pdDpbfHxdIH5mOihmdW4gYWNjIGtleSAtPlxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGFjYyA9IDBcbiAgICAgIHRoZW4gQXJyYXkuY3JlYXRlIH5sZW4ga2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgaW5kZXggOj0gIWluZGV4IC0gMTtcbiAgICAgICAgYWNjLighaW5kZXgpIDwtIGtleTtcbiAgICAgICAgYWNjKSlcbiAgOztcblxuICBsZXQgZXhpc3RzIHQgfmY6KGYgW0Bsb2NhbF0pID1cbiAgICBIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuICBsZXQgdW5pb24gdDEgdDIgPSBIYXNodGJsLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIF8gLT4gU29tZSAoKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBmaWx0ZXIgdDEgfmY6KGZ1biBrZXkgLT4gbm90IChIYXNodGJsLm1lbSB0MiBrZXkpKVxuXG4gIGxldCBpbnRlciB0MSB0MiA9XG4gICAgbGV0IHNtYWxsZXIsIGxhcmdlciA9IGlmIGxlbmd0aCB0MSA+IGxlbmd0aCB0MiB0aGVuIHQyLCB0MSBlbHNlIHQxLCB0MiBpblxuICAgIEhhc2h0YmwuZmlsdGVyaSBzbWFsbGVyIH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBIYXNodGJsLm1lbSBsYXJnZXIga2V5KVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgICBsZXQgdG9fcmVtb3ZlID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWMgeCAtPiBpZiBmIHggdGhlbiBhYyBlbHNlIHggOjogYWMpIGluXG4gICAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIHggLT4gcmVtb3ZlIHQgeClcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgPSBIYXNodGJsLm1hcCBoYXNodGJsIH5mOmlnbm9yZVxuICBsZXQgdG9faGFzaHRibCB0IH5mID0gSGFzaHRibC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBsZXQgc2l6ZSA9XG4gICAgbWF0Y2ggc2l6ZSB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBMaXN0Lmxlbmd0aCBsXG4gIGluXG4gIGxldCB0ID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkIH5zaXplIG0gaW5cbiAgTGlzdC5pdGVyIGwgfmY6KGZ1biBrIC0+IGFkZCB0IGspO1xuICB0XG47O1xuXG5sZXQgdF9vZl9zZXhwIG0gZV9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBTZXhwLkF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIHJlcXVpcmVzIGEgbGlzdFwiIHNleHBcbiAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgIGxldCB0ID0gY3JlYXRlIG0gfnNpemU6KExpc3QubGVuZ3RoIGxpc3QpIGluXG4gICAgTGlzdC5pdGVyIGxpc3QgfmY6KGZ1biBzZXhwIC0+XG4gICAgICBsZXQgZSA9IGVfb2Zfc2V4cCBzZXhwIGluXG4gICAgICBtYXRjaCBzdHJpY3RfYWRkIHQgZSB3aXRoXG4gICAgICB8IE9rICgpIC0+ICgpXG4gICAgICB8IEVycm9yIF8gLT4gb2Zfc2V4cF9lcnJvciBcIkhhc2hfc2V0LnRfb2Zfc2V4cCBnb3QgYSBkdXBsaWNhdGUgZWxlbWVudFwiIHNleHApO1xuICAgIHRcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaGFibGUgOiAnYSB0IEhhc2hhYmxlLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBFbHQudCkgLT4gU2V4cC50IC0+ICdhIEVsdC50IHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIEVsdC50IHRcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgd2l0aCB0eXBlICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnZWx0LCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcbmVuZCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGVfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKSBlX29mX3NleHAgc2V4cFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGhhc2hfc2V0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgaGFzaGFibGUgPSBwb2x5X2hhc2hhYmxlXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG5lbmRcblxubW9kdWxlIE0gKEVsdCA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IEVsdC50IHRcbmVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBlbHQpIHQgPVxuICBzZXhwX29mX3QgRWx0LnNleHBfb2ZfdCB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBlbHQpIHNleHAgPVxuICB0X29mX3NleHAgKG1vZHVsZSBFbHQpIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdCkgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSB0MSB0MiA9IGVxdWFsIHQxIHQyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFByaW50ZlxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5pbmNsdWRlIEZsb2F0MFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IChnbG9iYWxpemUgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KSA9IChnbG9iYWxpemVfZmxvYXQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuICBsZXQgdF9vZl9zZXhwID0gKGZsb2F0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2Zsb2F0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGZsb2F0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCB0b19mbG9hdCB4ID0geFxubGV0IG9mX2Zsb2F0IHggPSB4XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIHRyeSBmbG9hdF9vZl9zdHJpbmcgcyB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5vZl9zdHJpbmcgJXNcIiBzICgpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX29wdCA9IGZsb2F0X29mX3N0cmluZ19vcHRcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBTdGRsaWIuSW50NjQudG9fZmxvYXQgaVxubGV0IHRvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2Zsb2F0XG5sZXQgaXJvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5sZXQgaXJvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50Lm51bV9iaXRzXG5cbigqIFRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgXCJleG5cIiByb3VuZGluZyBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBzbyB0aGV5IGFyZSB3cml0dGVuXG4gICBvdXQgc2VwYXJhdGVseSwgYW5kIHR1bmVkIGluZGl2aWR1YWxseS4gIChXZSBjb3VsZCBoYXZlIHRoZSBvcHRpb24gdmVyc2lvbnMgY2FsbFxuICAgdGhlIFwiZXhuXCIgdmVyc2lvbnMsIGJ1dCB0aGF0IGltcG9zZXMgYXJndWFibHkgZ3JhdHVpdG91cyBvdmVyaGVhZC0tLWVzcGVjaWFsbHlcbiAgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBjYXB0dXJlIG9mIGJhY2t0cmFjZXMgaXMgZW5hYmxlZCB1cG9uIFwid2l0aFwiLS0tYW5kIHRoYXQgc2VlbXNcbiAgIG5vdCB3b3J0aCBpdCB3aGVuIGNvbXBhcmVkIHRvIHRoZSByZWxhdGl2ZWx5IHNtYWxsIGFtb3VudCBvZiBjb2RlIGR1cGxpY2F0aW9uLikgKilcblxuKCogRXJyb3IgcmVwb3J0aW5nIGJlbG93IGlzIHZlcnkgY2FyZWZ1bGx5IGFycmFuZ2VkIHNvIHRoYXQsIGUuZy4sIFtpcm91bmRfbmVhcmVzdF9leG5dXG4gICBpdHNlbGYgY2FuIGJlIGlubGluZWQgaW50byBjYWxsZXJzIHN1Y2ggdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYWxsb2NhdGUgYSBib3ggZm9yIHRoZVxuICAgW2Zsb2F0XSBhcmd1bWVudC4gIFRoaXMgaXMgZG9uZSB3aXRoIGEgYm94IFtib3hdIGZ1bmN0aW9uIGNhcmVmdWxseSBjaG9zZW4gdG8gYWxsb3cgdGhlXG4gICBjb21waWxlciB0byBjcmVhdGUgYSBzZXBhcmF0ZSBib3ggZm9yIHRoZSBmbG9hdCBvbmx5IGluIGVycm9yIGNhc2VzLiAgU2VlLCBlLmcuLFxuICAgWy4uLy4uL3plcm8vdGVzdC9wcmljZV90ZXN0Lm1sXSBmb3IgYSBtZWNoYW5pY2FsIHRlc3Qgb2YgdGhpcyBwcm9wZXJ0eSB3aGVuIGJ1aWxkaW5nXG4gICB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9dHJ1ZV0uICopXG5cbmxldCBpcm91bmRfdXAgdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdXBfZXhuIHQgPVxuICBpZiB0ID4gMC4wXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGNlaWwgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX2Rvd24gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW4gaWYgdCA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KSBlbHNlIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9kb3duX2V4biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlblxuICAgIGlmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCIgKGJveCB0KSAoKSlcbjs7XG5cbmxldCBpcm91bmRfdG93YXJkc196ZXJvIHQgPVxuICBpZiB0ID49IGlyb3VuZF9sYm91bmQgJiYgdCA8PSBpcm91bmRfdWJvdW5kXG4gIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pcm91bmRfdG93YXJkc196ZXJvX2V4bjogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChib3ggdClcbiAgICAgICgpXG47O1xuXG4oKiBPdXRzaWRlIG9mIHRoZSByYW5nZSAocm91bmRfbmVhcmVzdF9sYi4ucm91bmRfbmVhcmVzdF91YiksIGFsbCByZXByZXNlbnRhYmxlIGRvdWJsZXNcbiAgIGFyZSBpbnRlZ2VycyBpbiB0aGUgbWF0aGVtYXRpY2FsIHNlbnNlLCBhbmQgW3JvdW5kX25lYXJlc3RdIHNob3VsZCBiZSBpZGVudGl0eS5cblxuICAgSG93ZXZlciwgZm9yIG9kZCBudW1iZXJzIHdpdGggdGhlIGFic29sdXRlIHZhbHVlIGJldHdlZW4gMioqNTIgYW5kIDIqKjUzLCB0aGUgZm9ybXVsYVxuICAgW3JvdW5kX25lYXJlc3QgeCA9IGZsb29yICh4ICsgMC41KV0gZG9lcyBub3QgaG9sZDpcblxuICAge3ZcbiAgICAgIyBsZXQgbmFpdmVfcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKy4gMC41KTs7XG4gICAgICMgbGV0IHggPSAyLiAqKiA1Mi4gKy4gMS47O1xuICAgICB2YWwgeCA6IGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5Ny5cbiAgICAgIyBuYWl2ZV9yb3VuZF9uZWFyZXN0IHg7O1xuICAgICAtIDogICAgIGZsb2F0ID0gNDUwMzU5OTYyNzM3MDQ5OC5cbiAgIHZ9XG4qKVxuXG5sZXQgcm91bmRfbmVhcmVzdF9sYiA9IC0uKDIuICoqIDUyLilcbmxldCByb3VuZF9uZWFyZXN0X3ViID0gMi4gKiogNTIuXG5cbigqIEZvciBbeCA9IG9uZV91bHAgYERvd24gMC41XSwgdGhlIGZvcm11bGEgW2Zsb29yICh4ICsuIDAuNSldIGZvciByb3VuZGluZyB0byBuZWFyZXN0XG4gICBkb2VzIG5vdCB3b3JrLCBiZWNhdXNlIHRoZSBleGFjdCByZXN1bHQgaXMgaGFsZndheSBiZXR3ZWVuIFtvbmVfdWxwIGBEb3duIDEuXSBhbmQgWzEuXSxcbiAgIGFuZCBpdCBnZXRzIHJvdW5kZWQgdXAgdG8gWzEuXSBkdWUgdG8gdGhlIHJvdW5kLXRpZXMtdG8tZXZlbiBydWxlLiAqKVxubGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwIGBEb3duIDAuNVxuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgPVxuICB0XG4gICsuXG4gIGlmIHQgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIHRoZW4gb25lX3VscF9sZXNzX3RoYW5faGFsZiAoKiBzaW5jZSB0IDwgMC41LCBtYWtlIHN1cmUgdGhlIHJlc3VsdCBpcyA8IDEuMCAqKVxuICBlbHNlIDAuNVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpKVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gICAgZWxzZSBOb25lXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKSlcbiAgZWxzZSBpZiB0ID49IGlyb3VuZF9sYm91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0ID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0XzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0XzMyXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuXzMyIHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW4gKFxuICAgIGxldCB0JyA9IGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZSBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCIgKGJveCB0KSAoKSlcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgKHQgKy4gMC41KSBpblxuICAgIGlmIHQnID49IGlyb3VuZF9sYm91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGxcIiAoYm94IHQpICgpKVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfbmVhcmVzdF9leG5fNjQgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlblxuICAgIGlmIHQgPCByb3VuZF9uZWFyZXN0X3ViXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICAgIGVsc2UgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGJcbiAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIChmbG9vciAodCArLiAwLjUpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGlyb3VuZF9uZWFyZXN0X2V4bl82NFxuICB8IFczMiAtPiBpcm91bmRfbmVhcmVzdF9leG5fMzJcbjs7XG5cbigqIFRoZSBmb2xsb3dpbmcgW2lyb3VuZF9leG5dIGFuZCBbaXJvdW5kXSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIHRoZSBvbmVzIGFib3ZlLlxuICAgVGhlaXIgZXF1aXZhbGVuY2UgdG8gdGhvc2UgZnVuY3Rpb25zIGlzIHRlc3RlZCBpbiB0aGUgdW5pdCB0ZXN0cyBiZWxvdy4gKilcblxubGV0W0BpbmxpbmVdIGlyb3VuZF9leG4gPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYFplcm8gLT4gaXJvdW5kX3Rvd2FyZHNfemVyb19leG4gdFxuICB8IGBOZWFyZXN0IC0+IGlyb3VuZF9uZWFyZXN0X2V4biB0XG4gIHwgYFVwIC0+IGlyb3VuZF91cF9leG4gdFxuICB8IGBEb3duIC0+IGlyb3VuZF9kb3duX2V4biB0XG47O1xuXG5sZXQgaXJvdW5kID8oZGlyID0gYE5lYXJlc3QpIHQgPVxuICB0cnkgU29tZSAoaXJvdW5kX2V4biB+ZGlyIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc19pbmYgdCA9IDEuIC8uIHQgPSAwLlxubGV0IGlzX2Zpbml0ZSB0ID0gdCAtLiB0ID0gMC5cblxubGV0IG1pbl9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBtYXhfaW5hbiAoeCA6IHQpIHkgPVxuICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSBpZiB4ID4geSB0aGVuIHggZWxzZSB5XG47O1xuXG5sZXQgYWRkID0gKCArLiApXG5sZXQgc3ViID0gKCAtLiApXG5sZXQgbmVnID0gKCB+LS4gKVxubGV0IGFicyA9IGFic19mbG9hdFxubGV0IHNjYWxlID0gKCAqLiApXG5sZXQgc3F1YXJlIHggPSB4ICouIHhcblxubW9kdWxlIFBhcnRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBmcmFjdGlvbmFsIDogdCAtPiBmbG9hdFxuICB2YWwgaW50ZWdyYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBtb2RmIDogZmxvYXQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0ICogZmxvYXRcblxuICBsZXQgZnJhY3Rpb25hbCB0ID0gZnN0IHRcbiAgbGV0IGludGVncmFsIHQgPSBzbmQgdFxuICBsZXQgbW9kZiA9IG1vZGZcbmVuZFxuXG5sZXQgbW9kZiA9IFBhcnRzLm1vZGZcbmxldCByb3VuZF9kb3duID0gZmxvb3JcbmxldCByb3VuZF91cCA9IGNlaWxcbmxldCByb3VuZF90b3dhcmRzX3plcm8gdCA9IGlmIHQgPj0gMC4gdGhlbiByb3VuZF9kb3duIHQgZWxzZSByb3VuZF91cCB0XG5cbigqIHNlZSB0aGUgY29tbWVudCBhYm92ZSBbcm91bmRfbmVhcmVzdF9sYl0gYW5kIFtyb3VuZF9uZWFyZXN0X3ViXSBmb3IgYW4gZXhwbGFuYXRpb24gKilcbmxldFtAb2NhbWwuaW5saW5lXSByb3VuZF9uZWFyZXN0X2lubGluZSB0ID1cbiAgaWYgdCA+IHJvdW5kX25lYXJlc3RfbGIgJiYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgdGhlbiBmbG9vciAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdClcbiAgZWxzZSB0ICsuIDAuXG47O1xuXG5sZXQgcm91bmRfbmVhcmVzdCB0ID0gKHJvdW5kX25lYXJlc3RfaW5saW5lIFtAb2NhbWwuaW5saW5lZCBhbHdheXNdKSB0XG5cbmxldCByb3VuZF9uZWFyZXN0X2hhbGZfdG9fZXZlbiB0ID1cbiAgaWYgdCA8PSByb3VuZF9uZWFyZXN0X2xiIHx8IHQgPj0gcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIHQgKy4gMC5cbiAgZWxzZSAoXG4gICAgbGV0IGZsb29yID0gZmxvb3IgdCBpblxuICAgICgqIFtjZWlsX29yX3N1Y2MgPSBpZiB0IGlzIGFuIGludGVnZXIgdGhlbiB0ICsuIDEuIGVsc2UgY2VpbCB0XS4gIEZhc3RlciB0aGFuIFtjZWlsXS4gKilcbiAgICBsZXQgY2VpbF9vcl9zdWNjID0gZmxvb3IgKy4gMS4gaW5cbiAgICBsZXQgZGlmZl9mbG9vciA9IHQgLS4gZmxvb3IgaW5cbiAgICBsZXQgZGlmZl9jZWlsID0gY2VpbF9vcl9zdWNjIC0uIHQgaW5cbiAgICBpZiBkaWZmX2Zsb29yIDwgZGlmZl9jZWlsXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgaWYgZGlmZl9mbG9vciA+IGRpZmZfY2VpbFxuICAgIHRoZW4gY2VpbF9vcl9zdWNjXG4gICAgZWxzZSBpZiAoKiBleGFjdCB0aWUsIHBpY2sgdGhlIGV2ZW4gKilcbiAgICAgIG1vZF9mbG9hdCBmbG9vciAyLiA9IDAuXG4gICAgdGhlbiBmbG9vclxuICAgIGVsc2UgY2VpbF9vcl9zdWNjKVxuOztcblxubGV0IGludDYzX3JvdW5kX2xib3VuZCA9IGxvd2VyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcbmxldCBpbnQ2M19yb3VuZF91Ym91bmQgPSB1cHBlcl9ib3VuZF9mb3JfaW50IEludDYzLm51bV9iaXRzXG5cbmxldCBpbnQ2M19yb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaW50NjNfcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG4gIGVsc2UgaWYgdCA+PSBpbnQ2M19yb3VuZF9sYm91bmRcbiAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0IHQnID0gZmxvb3IgdCBpblxuICAgIGlmIHQnID49IGludDYzX3JvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAgICgpKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuIHQwID1cbiAgbGV0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHQwIGluXG4gIGlmIHQgPiAwLlxuICB0aGVuXG4gICAgaWYgdCA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIGxhcmdlXCJcbiAgICAgICAgKGJveCB0MClcbiAgICAgICAgKClcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiXG4gICAgICAoYm94IHQwKVxuICAgICAgKClcbjs7XG5cbmxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biBmID0gSW50NjMub2ZfaW50IChpcm91bmRfbmVhcmVzdF9leG4gZilcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfZXhuID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIHwgVzMyIC0+IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG47O1xuXG5sZXQgcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIG1hdGNoIGRpciB3aXRoXG4gIHwgYE5lYXJlc3QgLT4gcm91bmRfbmVhcmVzdCB0XG4gIHwgYERvd24gLT4gcm91bmRfZG93biB0XG4gIHwgYFVwIC0+IHJvdW5kX3VwIHRcbiAgfCBgWmVybyAtPiByb3VuZF90b3dhcmRzX3plcm8gdFxuOztcblxubW9kdWxlIENsYXNzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbmZpbml0ZVxuICAgIHwgTmFuXG4gICAgfCBOb3JtYWxcbiAgICB8IFN1Ym5vcm1hbFxuICAgIHwgWmVyb1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgYWxsID0gKFsgSW5maW5pdGU7IE5hbjsgTm9ybWFsOyBTdWJub3JtYWw7IFplcm8gXSA6IHQgbGlzdClcblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDA3XyA9IFwiZmxvYXQubWwuQ2xhc3MudFwiIGluXG4gICAgIGZ1bmN0aW9uXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluZmluaXRlXCIgfCBcIkluZmluaXRlXCIpIC0+IEluZmluaXRlXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgLT4gTmFuXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5vcm1hbFwiIHwgXCJOb3JtYWxcIikgLT4gTm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgLT4gU3Vibm9ybWFsXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSAtPiBaZXJvXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInN1Ym5vcm1hbFwiIHwgXCJTdWJub3JtYWxcIikgOjogXykgYXNcbiAgICAgICBzZXhwX18wMDhfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDZfXG4gICAgIHwgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBJbmZpbml0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbmZpbml0ZVwiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgfCBOb3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTm9ybWFsXCJcbiAgICAgIHwgU3Vibm9ybWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlN1Ym5vcm1hbFwiXG4gICAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJJbmZpbml0ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlN1Ym5vcm1hbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxuZW5kXG5cbmxldCBjbGFzc2lmeSB0ID1cbiAgbGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gIHwgRlBfbm9ybWFsIC0+IEMuTm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsIC0+IEMuU3Vibm9ybWFsXG4gIHwgRlBfemVybyAtPiBDLlplcm9cbiAgfCBGUF9pbmZpbml0ZSAtPiBDLkluZmluaXRlXG4gIHwgRlBfbmFuIC0+IEMuTmFuXG47O1xuXG5sZXQgaW5zZXJ0X3VuZGVyc2NvcmVzID8oZGVsaW1pdGVyID0gJ18nKSA/KHN0cmlwX3plcm8gPSBmYWxzZSkgc3RyaW5nID1cbiAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyaW5nIH5vbjonLicgd2l0aFxuICB8IE5vbmUgLT4gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgc3RyaW5nIH5kZWxpbWl0ZXJcbiAgfCBTb21lIChsZWZ0LCByaWdodCkgLT5cbiAgICBsZXQgbGVmdCA9IEludF9jb252ZXJzaW9ucy5pbnNlcnRfZGVsaW1pdGVyIGxlZnQgfmRlbGltaXRlciBpblxuICAgIGxldCByaWdodCA9XG4gICAgICBpZiBzdHJpcF96ZXJvIHRoZW4gU3RyaW5nLnJzdHJpcCByaWdodCB+ZHJvcDooZnVuIGMgLT4gQ2hhci4oID0gKSBjICcwJykgZWxzZSByaWdodFxuICAgIGluXG4gICAgKG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgfCBcIlwiIC0+IGxlZnRcbiAgICAgfCBfIC0+IGxlZnQgXiBcIi5cIiBeIHJpZ2h0KVxuOztcblxubGV0IHRvX3N0cmluZ19odW0gP2RlbGltaXRlciA/KGRlY2ltYWxzID0gMykgP3N0cmlwX3plcm8gPyhleHBsaWNpdF9wbHVzID0gZmFsc2UpIGYgPVxuICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGRlY2ltYWxzIDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJ0b19zdHJpbmdfaHVtOiBpbnZhbGlkIGFyZ3VtZW50IH5kZWNpbWFscz0lZFwiIGRlY2ltYWxzICgpO1xuICBtYXRjaCBjbGFzc2lmeSBmIHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiBmID4gMC4gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW5cIlxuICB8IENsYXNzLk5vcm1hbCB8IENsYXNzLlN1Ym5vcm1hbCB8IENsYXNzLlplcm8gLT5cbiAgICBsZXQgcyA9XG4gICAgICBpZiBleHBsaWNpdF9wbHVzIHRoZW4gc3ByaW50ZiBcIiUrLipmXCIgZGVjaW1hbHMgZiBlbHNlIHNwcmludGYgXCIlLipmXCIgZGVjaW1hbHMgZlxuICAgIGluXG4gICAgaW5zZXJ0X3VuZGVyc2NvcmVzIHMgP2RlbGltaXRlciA/c3RyaXBfemVyb1xuOztcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgbGV0IHNleHAgPSBzZXhwX29mX3QgdCBpblxuICBtYXRjaCAhU2V4cC5vZl9mbG9hdF9zdHlsZSB3aXRoXG4gIHwgYE5vX3VuZGVyc2NvcmVzIC0+IHNleHBcbiAgfCBgVW5kZXJzY29yZXMgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgTGlzdCBfIC0+XG4gICAgICAgcmFpc2Vfc1xuICAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICAgXCJbc2V4cF9vZl9mbG9hdF0gcHJvZHVjZWQgc3RyYW5nZSBzZXhwXCJcbiAgICAgICAgICAgIFsgXCJzZXhwXCIsIFNleHAuc2V4cF9vZl90IHNleHAgXSlcbiAgICAgfCBBdG9tIHN0cmluZyAtPlxuICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzdHJpbmcgJ0UnIHRoZW4gc2V4cCBlbHNlIEF0b20gKGluc2VydF91bmRlcnNjb3JlcyBzdHJpbmcpKVxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0b20gdCA/KHByZWZpeCA9IFwiXCIpIH5raWxvIH5tZWdhIH5naWdhIH50ZXJhID9wZXRhICgpID1cbiAgKCogUm91bmQgYSByYXRpbyB0b3dhcmQgdGhlIG5lYXJlc3QgaW50ZWdlciwgcmVzb2x2aW5nIHRpZXMgdG93YXJkIHRoZSBuZWFyZXN0IGV2ZW5cbiAgICAgbnVtYmVyLiAgRm9yIHNhbmUgaW5wdXRzIChpbiBwYXJ0aWN1bGFyLCB3aGVuIFtkZW5vbWluYXRvcl0gaXMgYW4gaW50ZWdlciBhbmRcbiAgICAgW2FicyBudW1lcmF0b3IgPCAyZTUyXSkgdGhpcyBzaG91bGQgYmUgYWNjdXJhdGUuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgbWlnaHQgYmUgYVxuICAgICBsaXR0bGUgYml0IG9mZiwgYnV0IHdlIGRvbid0IHJlYWxseSB1c2UgdGhhdCBjYXNlLiAqKVxuICBsZXQgaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IGsgPSBmbG9vciAobnVtZXJhdG9yIC8uIGRlbm9taW5hdG9yKSBpblxuICAgICgqIGlmIFthYnMgayA8IDJlNTNdLCB0aGVuIGJvdGggW2tdIGFuZCBbayArLiAxLl0gYXJlIGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQsIGFuZCBpblxuICAgICAgIHBhcnRpY3VsYXIgW2sgKy4gMS4gPiBrXS4gIElmIFtkZW5vbWluYXRvcl0gaXMgYWxzbyBhbiBpbnRlZ2VyLCBhbmRcbiAgICAgICBbYWJzIChkZW5vbWluYXRvciAqLiAoayArLiAxKSkgPCAyZTUzXSAoYW5kIGluIHNvbWUgb3RoZXIgY2FzZXMsIHRvbyksIHRoZW4gW2xvd2VyXVxuICAgICAgIGFuZCBbaGlnaGVyXSBhcmUgYWN0dWFsbHkgYm90aCBhY2N1cmF0ZS4gIFNpbmNlIChyb3VnaGx5KVxuICAgICAgIFtudW1lcmF0b3IgPSBkZW5vbWluYXRvciAqLiBrXSB0aGVuIGZvciBbYWJzIG51bWVyYXRvciA8IDJlNTJdIHdlIHNob3VsZCBiZVxuICAgICAgIGZpbmUuICopXG4gICAgbGV0IGxvd2VyID0gZGVub21pbmF0b3IgKi4gayBpblxuICAgIGxldCBoaWdoZXIgPSBkZW5vbWluYXRvciAqLiAoayArLiAxLikgaW5cbiAgICAoKiBTdWJ0cmFjdGluZyBudW1iZXJzIHdpdGhpbiBhIGZhY3RvciBvZiB0d28gZnJvbSBlYWNoIG90aGVyIGlzIGFjY3VyYXRlLlxuICAgICAgIFNvIGVpdGhlciB0aGUgdHdvIHN1YnRyYWN0aW9ucyBiZWxvdyBhcmUgYWNjdXJhdGUsIG9yIGsgPSAwLCBvciBrID0gLTEuXG4gICAgICAgSW4gY2FzZSBvZiBhIHRpZSwgcm91bmQgdG8gZXZlbi4gKilcbiAgICBsZXQgZGlmZl9yaWdodCA9IGhpZ2hlciAtLiBudW1lcmF0b3IgaW5cbiAgICBsZXQgZGlmZl9sZWZ0ID0gbnVtZXJhdG9yIC0uIGxvd2VyIGluXG4gICAgbGV0IGsgPSBpcm91bmRfbmVhcmVzdF9leG4gayBpblxuICAgIGlmIGRpZmZfcmlnaHQgPCBkaWZmX2xlZnRcbiAgICB0aGVuIGsgKyAxXG4gICAgZWxzZSBpZiBkaWZmX3JpZ2h0ID4gZGlmZl9sZWZ0XG4gICAgdGhlbiBrXG4gICAgZWxzZSBpZiAoKiBhIHRpZSAqKVxuICAgICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoayBtb2QgMikgMFxuICAgIHRoZW4ga1xuICAgIGVsc2UgayArIDFcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gIHwgQ2xhc3MuSW5maW5pdGUgLT4gaWYgdCA8IDAuMCB0aGVuIFwiLWluZiAgXCIgZWxzZSBcImluZiAgXCJcbiAgfCBDbGFzcy5OYW4gLT4gXCJuYW4gIFwiXG4gIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBnbyB0ID1cbiAgICAgIGxldCBjb252X29uZSB0ID1cbiAgICAgICAgYXNzZXJ0ICgwLiA8PSB0ICYmIHQgPCA5OTkuOTUpO1xuICAgICAgICBsZXQgeCA9IHByZWZpeCBeIGZvcm1hdF9mbG9hdCBcIiUuMWZcIiB0IGluXG4gICAgICAgICgqIEZpeCB0aGUgXCIuMFwiIHN1ZmZpeCAqKVxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHggfnN1ZmZpeDpcIi4wXCJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHggPSBCeXRlcy5vZl9zdHJpbmcgeCBpblxuICAgICAgICAgIGxldCBuID0gQnl0ZXMubGVuZ3RoIHggaW5cbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDEpICcgJztcbiAgICAgICAgICBCeXRlcy5zZXQgeCAobiAtIDIpICcgJztcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOngpXG4gICAgICAgIGVsc2UgeFxuICAgICAgaW5cbiAgICAgIGxldCBjb252IG1hZyB0IGRlbm9taW5hdG9yID1cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAoZGVub21pbmF0b3IgPSAxMDAuICYmIHQgPj0gOTk5Ljk1KVxuICAgICAgICAgIHx8IChkZW5vbWluYXRvciA+PSAxMDBfMDAwLiAmJiB0ID49IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDkuOTk5XzUpKSk7XG4gICAgICAgIGFzc2VydCAodCA8IHJvdW5kX25lYXJlc3QgKGRlbm9taW5hdG9yICouIDlfOTk5LjUpKTtcbiAgICAgICAgbGV0IGksIGQgPVxuICAgICAgICAgIGxldCBrID0gaXJvdW5kX3JhdGlvX2V4biB+bnVtZXJhdG9yOnQgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICAgKCogW21vZF0gaXMgb2theSBoZXJlIGJlY2F1c2Ugd2Uga25vdyBpID49IDAuICopXG4gICAgICAgICAgayAvIDEwLCBrIG1vZCAxMFxuICAgICAgICBpblxuICAgICAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgICAgIGFzc2VydCAoMCA8PSBpICYmIGkgPCAxMDAwKTtcbiAgICAgICAgYXNzZXJ0ICgwIDw9IGQgJiYgZCA8IDEwKTtcbiAgICAgICAgaWYgZCA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiJXMlZCVzIFwiIHByZWZpeCBpIG1hZ1xuICAgICAgICBlbHNlIHNwcmludGYgXCIlcyVkJXMlZFwiIHByZWZpeCBpIG1hZyBkXG4gICAgICBpblxuICAgICAgKCogV2hpbGUgdGhlIHN0YW5kYXJkIG1ldHJpYyBwcmVmaXhlcyAoZS5nLiBjYXBpdGFsIFwiTVwiIHJhdGhlciB0aGFuIFwibVwiLCBbMV0pIGFyZVxuICAgICAgICAgbm9taW5hbGx5IG1vcmUgY29ycmVjdCwgdGhpcyBoaW5kZXJzIHJlYWRhYmlsaXR5IGluIG91ciBjYXNlLiAgRS5nLiwgMTBHNiBhbmRcbiAgICAgICAgIDEwNjYgbG9vayB0b28gc2ltaWxhci4gIFRoYXQncyBhbiBleHRyZW1lIGV4YW1wbGUsIGJ1dCBpbiBnZW5lcmFsIGssbSxnLHQscFxuICAgICAgICAgcHJvYmFibHkgc3RhbmQgb3V0IGJldHRlciB0aGFuIEssTSxHLFQsUCB3aGVuIGludGVyc3BlcnNlZCB3aXRoIGRpZ2l0cy5cblxuICAgICAgICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWV0cmljX3ByZWZpeCAqKVxuICAgICAgKCogVGhlIHRyaWNrIGhlcmUgaXMgdGhhdDpcbiAgICAgICAgIC0gdGhlIGZpcnN0IGJvdW5kYXJ5ICg5OTkuOTUpIGFzIGEgZmxvYXQgaXMgc2xpZ2h0bHkgb3Zlci1yZXByZXNlbnRlZCAoc28gaXQgaXNcbiAgICAgICAgICAgYmV0dGVyIGFwcHJveGltYXRlZCBhcyBcIjFrXCIgdGhhbiBhcyBcIjk5OS45XCIpLFxuICAgICAgICAgLSB0aGUgb3RoZXIgYm91bmRhcmllcyBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYmVjYXVzZSB0aGV5IGFyZSBpbnRlZ2Vycy5cbiAgICAgICAgICAgVGhhdCdzIHdoeSB0aGUgc3RyaWN0IGVxdWFsaXRpZXMgYmVsb3cgZG8gZXhhY3RseSB3aGF0IHdlIHdhbnQuICopXG4gICAgICBpZiB0IDwgOTk5Ljk1RTBcbiAgICAgIHRoZW4gY29udl9vbmUgdFxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTNcbiAgICAgIHRoZW4gY29udiBraWxvIHQgMTAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTZcbiAgICAgIHRoZW4gY29udiBtZWdhIHQgMTAwXzAwMC5cbiAgICAgIGVsc2UgaWYgdCA8IDk5OS45NUU5XG4gICAgICB0aGVuIGNvbnYgZ2lnYSB0IDEwMF8wMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTEyXG4gICAgICB0aGVuIGNvbnYgdGVyYSB0IDEwMF8wMDBfMDAwXzAwMC5cbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBwZXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdFxuICAgICAgICB8IFNvbWUgcGV0YSAtPlxuICAgICAgICAgIGlmIHQgPCA5OTkuOTVFMTVcbiAgICAgICAgICB0aGVuIGNvbnYgcGV0YSB0IDEwMF8wMDBfMDAwXzAwMF8wMDAuXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiJXMlLjFlXCIgcHJlZml4IHQpXG4gICAgaW5cbiAgICBpZiB0ID49IDAuIHRoZW4gZ28gdCBlbHNlIFwiLVwiIF4gZ28gfi0udFxuOztcblxubGV0IHRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyB0ID1cbiAgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0IH5raWxvOlwia1wiIH5tZWdhOlwibVwiIH5naWdhOlwiZ1wiIH50ZXJhOlwidFwiIH5wZXRhOlwicFwiICgpXG47O1xuXG4oKiBQZXJmb3JtYW5jZSBub3RlOiBJbml0aWFsaXppbmcgdGhlIGFjY3VtdWxhdG9yIHRvIDEgcmVzdWx0cyBpbiBvbmUgZXh0cmFcbiAgIG11bHRpcGx5OyBlLmcuLCB0byBjb21wdXRlIHggKiogNCwgd2UgaW4gcHJpbmNpcGxlIG9ubHkgbmVlZCAyIG11bHRpcGxpZXMsXG4gICBidXQgdGhpcyBmdW5jdGlvbiB3aWxsIGhhdmUgMyBtdWx0aXBsaWVzLiAgSG93ZXZlciwgYXR0ZW1wdHMgdG8gYXZvaWQgdGhpc1xuICAgKGxpa2UgZGVjcmVtZW50aW5nIG4gYW5kIGluaXRpYWxpemluZyBhY2N1bSB0byBiZSB4LCBvciBoYW5kbGluZyBzbWFsbFxuICAgZXhwb25lbnRzIGFzIGEgc3BlY2lhbCBjYXNlKSBoYXZlIG5vdCB5aWVsZGVkIGFueXRoaW5nIHRoYXQgaXMgYSBuZXRcbiAgIGltcHJvdmVtZW50LlxuKilcbmxldCBpbnRfcG93IHggbiA9XG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAxLlxuICBlbHNlIChcbiAgICAoKiBVc2luZyBbeCArLiAoLTAuKV0gb24gdGhlIGZvbGxvd2luZyBsaW5lIGNvbnZpbmNlcyB0aGUgY29tcGlsZXIgdG8gYXZvaWQgYSBjZXJ0YWluXG4gICAgICAgYm94aW5nICh0aGF0IHdvdWxkIHJlc3VsdCBpbiBhbGxvY2F0aW9uIGluIGVhY2ggaXRlcmF0aW9uKS4gIFNvb24sIHRoZSBjb21waWxlclxuICAgICAgIHNob3VsZG4ndCBuZWVkIHRoaXMgXCJoaW50XCIgdG8gYXZvaWQgdGhlIGJveGluZy4gIFRoZSByZWFzb24gd2UgYWRkIC0wIHJhdGhlciB0aGFuIDBcbiAgICAgICBpcyB0aGF0IFt4ICsuICgtMC4pXSBpcyBhcHBhcmVudGx5IGFsd2F5cyB0aGUgc2FtZSBhcyBbeF0sIHdoZXJlYXMgW3ggKy4gMC5dIGlzXG4gICAgICAgbm90LCBpbiB0aGF0IGl0IHNlbmRzIFstMC5dIHRvIFswLl0uICBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBiZWNhdXNlIHdlIHdhbnRcbiAgICAgICBbaW50X3BvdyAoLTAuKSAoLTEpXSB0byByZXR1cm4gbmVnX2luZmluaXR5IGp1c3QgbGlrZSBbLTAuICoqIC0xLl0gd291bGQuICAqKVxuICAgIGxldCB4ID0gcmVmICh4ICsuIC0wLikgaW5cbiAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgbGV0IGFjY3VtID0gcmVmIDEuIGluXG4gICAgaWYgIW4gPCAwXG4gICAgdGhlbiAoXG4gICAgICAoKiB4ICoqIG4gPSAoMS94KSAqKiAtbiAqKVxuICAgICAgeCA6PSAxLiAvLiAheDtcbiAgICAgIG4gOj0gfi0gKCFuKTtcbiAgICAgIGlmICFuIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIG4gbXVzdCBoYXZlIGJlZW4gbWluX2ludCwgc28gaXQgaXMgbm93IHNvIGJpZyB0aGF0IGl0IGhhcyB3cmFwcGVkIGFyb3VuZC5cbiAgICAgICAgICAgV2UgZGVjcmVtZW50IGl0IHNvIHRoYXQgaXQgbG9va3MgcG9zaXRpdmUgYWdhaW4sIGJ1dCBhY2NvcmRpbmdseSBoYXZlXG4gICAgICAgICAgIHRvIHB1dCBhbiBleHRyYSBmYWN0b3Igb2YgeCBpbiB0aGUgYWNjdW11bGF0b3IuXG4gICAgICAgICopXG4gICAgICAgIGFjY3VtIDo9ICF4O1xuICAgICAgICBkZWNyIG4pKTtcbiAgICAoKiBMZXR0aW5nIFthXSBkZW5vdGUgKHRoZSBvcmlnaW5hbCB2YWx1ZSBvZikgW3ggKiogbl0sIHdlIG1haW50YWluXG4gICAgICAgdGhlIGludmFyaWFudCB0aGF0IFsoeCAqKiBuKSAqLiBhY2N1bSA9IGFdLiAqKVxuICAgIHdoaWxlICFuID4gMSBkb1xuICAgICAgaWYgIW4gbGFuZCAxIDw+IDAgdGhlbiBhY2N1bSA6PSAheCAqLiAhYWNjdW07XG4gICAgICB4IDo9ICF4ICouICF4O1xuICAgICAgbiA6PSAhbiBsc3IgMVxuICAgIGRvbmU7XG4gICAgKCogbiBpcyBuZWNlc3NhcmlseSAxIGF0IHRoaXMgcG9pbnQsIHNvIHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsXG4gICAgICAgbXVsdGlwbGljYXRpb24gYnkgeC4gKilcbiAgICAheCAqLiAhYWNjdW0pXG47O1xuXG5sZXQgcm91bmRfZ2VuIHggfmhvdyA9XG4gIGlmIHggPSAwLlxuICB0aGVuIDAuXG4gIGVsc2UgaWYgbm90IChpc19maW5pdGUgeClcbiAgdGhlbiB4XG4gIGVsc2UgKFxuICAgICgqIFNpZ25pZmljYW50IGRpZ2l0cyBhbmQgZGVjaW1hbCBkaWdpdHMuICopXG4gICAgbGV0IHNkLCBkZCA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgc2lnbmlmaWNhbnRfZGlnaXRzIHNkIC0+XG4gICAgICAgIGxldCBkZCA9IHNkIC0gdG9faW50IChyb3VuZF91cCAobG9nMTAgKGFicyB4KSkpIGluXG4gICAgICAgIHNkLCBkZFxuICAgICAgfCBgZGVjaW1hbF9kaWdpdHMgZGQgLT5cbiAgICAgICAgbGV0IHNkID0gZGQgKyB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgaW5cbiAgICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgc2QgPCAwXG4gICAgdGhlbiAwLlxuICAgIGVsc2UgaWYgc2QgPj0gMTdcbiAgICB0aGVuIHhcbiAgICBlbHNlIChcbiAgICAgICgqIENob29zZSB0aGUgb3JkZXIgdGhhdCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUgYXMgYSBmbG9hdC4gU21hbGwgcG9zaXRpdmVcbiAgICAgICAgIGludGVnZXJzIGFyZSwgYnV0IHRoZWlyIGludmVyc2VzIGluIG1vc3QgY2FzZXMgYXJlIG5vdC4gKilcbiAgICAgIGxldCBhYnNfZGQgPSBJbnQuYWJzIGRkIGluXG4gICAgICBpZiBhYnNfZGQgPiAyMiB8fCBzZCA+PSAxNlxuICAgICAgKCogMTAqKjIyIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBidXQgMTAqKjIzIGlzIG5vdCwgc28gdXNlIHRoZSBzbG93XG4gICAgICAgICBwYXRoLiAgU2ltaWxhcmx5LCBpZiB3ZSBuZWVkIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpbiB0aGUgcmVzdWx0LCB0aGVuIHRoZSBpbnRlZ2VyXG4gICAgICAgICBbcm91bmRfbmVhcmVzdCAoeCA8b3A+IG9yZGVyKV0gbWlnaHQgbm90IGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LCBzaW5jZVxuICAgICAgICAgZm9yIHNvbWUgcmFuZ2VzIHdlIG9ubHkgaGF2ZSAxNSBkaWdpdHMgb2YgcHJlY2lzaW9uIGd1YXJhbnRlZWQuXG5cbiAgICAgICAgIFRoYXQgc2FpZCwgd2UgYXJlIHN0aWxsIHJvdW5kaW5nIHR3aWNlIGhlcmU6XG5cbiAgICAgICAgIDEpIGZpcnN0IHRpbWUgd2hlbiByb3VuZGluZyBbeCAqLiBvcmRlcl0gb3IgW3ggLy4gb3JkZXJdIHRvIHRoZSBuZWFyZXN0IGZsb2F0XG4gICAgICAgICAoanVzdCB0aGUgbm9ybWFsIHdheSBmbG9hdGluZy1wb2ludCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiB3b3JrcyksXG5cbiAgICAgICAgIDIpIHNlY29uZCB0aW1lIHdoZW4gYXBwbHlpbmcgW3JvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuXSB0byB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgYWJvdmUgb3BlcmF0aW9uXG5cbiAgICAgICAgIFNvIGZvciBhcmd1bWVudHMgd2l0aGluIGFuIHVscCBmcm9tIGEgdGllIHdlIG1pZ2h0IHN0aWxsIHByb2R1Y2UgYW4gb2ZmLWJ5LW9uZVxuICAgICAgICAgcmVzdWx0LiAqKVxuICAgICAgdGhlbiBvZl9zdHJpbmcgKHNwcmludGYgXCIlLipnXCIgc2QgeClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgb3JkZXIgPSBpbnRfcG93IDEwLiBhYnNfZGQgaW5cbiAgICAgICAgaWYgZGQgPj0gMFxuICAgICAgICB0aGVuIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4ICouIG9yZGVyKSAvLiBvcmRlclxuICAgICAgICBlbHNlIHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuICh4IC8uIG9yZGVyKSAqLiBvcmRlcikpKVxuOztcblxubGV0IHJvdW5kX3NpZ25pZmljYW50IHggfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIHNpZ25pZmljYW50X2RpZ2l0cyAwXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQucm91bmRfc2lnbmlmaWNhbnQ6IGludmFsaWQgYXJndW1lbnQgc2lnbmlmaWNhbnRfZGlnaXRzOiVkXCJcbiAgICAgIHNpZ25pZmljYW50X2RpZ2l0c1xuICAgICAgKClcbiAgZWxzZSByb3VuZF9nZW4geCB+aG93Oihgc2lnbmlmaWNhbnRfZGlnaXRzIHNpZ25pZmljYW50X2RpZ2l0cylcbjs7XG5cbmxldCByb3VuZF9kZWNpbWFsIHggfmRlY2ltYWxfZGlnaXRzID0gcm91bmRfZ2VuIHggfmhvdzooYGRlY2ltYWxfZGlnaXRzIGRlY2ltYWxfZGlnaXRzKVxubGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAoKiBjbGFtcF91bmNoZWNrZWQgaXMgaW4gZmxvYXQwLm1sICopXG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgKCogQWxzbyBmYWlscyBpZiBbbWluXSBvciBbbWF4XSBpcyBuYW4gKilcbiAgaWYgbWluIDw9IG1heFxuICB0aGVuIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG47O1xuXG5sZXQgKCArICkgPSAoICsuIClcbmxldCAoIC0gKSA9ICggLS4gKVxubGV0ICggKiApID0gKCAqLiApXG5sZXQgKCAqKiApID0gKCAqKiApXG5sZXQgKCAvICkgPSAoIC8uIClcbmxldCAoICUgKSA9ICggJS4gKVxubGV0ICggfi0gKSA9ICggfi0uIClcblxubGV0IHNpZ25fZXhuIHQgOiBTaWduLnQgPVxuICBpZiB0ID4gMC5cbiAgdGhlbiBQb3NcbiAgZWxzZSBpZiB0IDwgMC5cbiAgdGhlbiBOZWdcbiAgZWxzZSBpZiB0ID0gMC5cbiAgdGhlbiBaZXJvXG4gIGVsc2UgRXJyb3IucmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiRmxvYXQuc2lnbl9leG4gb2YgTkFOXCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKVxuOztcblxubGV0IHNpZ25fb3JfbmFuIHQgOiBTaWduX29yX25hbi50ID1cbiAgaWYgdCA+IDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8IDAuIHRoZW4gTmVnIGVsc2UgaWYgdCA9IDAuIHRoZW4gWmVybyBlbHNlIE5hblxuOztcblxubGV0IGllZWVfbmVnYXRpdmUgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgU3RkbGliLkludDY0Lnplcm8pXG47O1xuXG5sZXQgZXhwb25lbnRfYml0cyA9IDExXG5sZXQgbWFudGlzc2FfYml0cyA9IDUyXG5sZXQgZXhwb25lbnRfbWFzazY0ID0gSW50NjQuKHNoaWZ0X2xlZnQgb25lIGV4cG9uZW50X2JpdHMgLSBvbmUpXG5sZXQgZXhwb25lbnRfbWFzayA9IEludDY0LnRvX2ludF9leG4gZXhwb25lbnRfbWFzazY0XG5sZXQgbWFudGlzc2FfbWFzayA9IEludDYzLihzaGlmdF9sZWZ0IG9uZSBtYW50aXNzYV9iaXRzIC0gb25lKVxubGV0IG1hbnRpc3NhX21hc2s2NCA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhX21hc2tcblxubGV0IGllZWVfZXhwb25lbnQgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBJbnQ2NC4oYml0X2FuZCAoc2hpZnRfcmlnaHRfbG9naWNhbCBiaXRzIG1hbnRpc3NhX2JpdHMpIGV4cG9uZW50X21hc2s2NClcbiAgfD4gU3RkbGliLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICAoKiBUaGlzIGlzIHNhZmUgYmVjYXVzZSBtYW50aXNzYV9tYXNrNjQgPCBJbnQ2My5tYXhfdmFsdWUgKilcbiAgKEludDYzLm9mX2ludDY0X3RydW5jKSBTdGRsaWIuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBTdGRsaWIuSW50NjQubWluX2ludCBlbHNlIFN0ZGxpYi5JbnQ2NC56ZXJvIGluXG4gICAgbGV0IGV4cHRfYml0cyA9XG4gICAgICBTdGRsaWIuSW50NjQuc2hpZnRfbGVmdCAoU3RkbGliLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0c1xuICAgIGluXG4gICAgbGV0IG1hbnRfYml0cyA9IEludDYzLnRvX2ludDY0IG1hbnRpc3NhIGluXG4gICAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuKGxvZ29yIHNpZ25fYml0cyAobG9nb3IgZXhwdF9iaXRzIG1hbnRfYml0cykpIGluXG4gICAgU3RkbGliLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBTdGRsaWIuQnVmZmVyXG5cbmxldCBjb250ZW50c19ieXRlcyA9IHRvX2J5dGVzXG5sZXQgYWRkX3N1YnN0cmluZyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YnN0cmluZyB0IHMgcG9zIGxlblxubGV0IGFkZF9zdWJieXRlcyB0IHMgfnBvcyB+bGVuID0gYWRkX3N1YmJ5dGVzIHQgcyBwb3MgbGVuXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3N0cmluZyAoY29udGVudHMgdClcblxubGV0IGNhbWxfYnVmZmVyX2xlbmd0aCA9XG4gIChTdGRsaWIuT2JqLm1hZ2ljIChTdGRsaWIuQnVmZmVyLmxlbmd0aCA6IHQgLT4gaW50KSA6ICh0W0Bsb2NhbF0pIC0+IGludClcbjs7XG5cbmxldCBjYW1sX2J1ZmZlcl9ibGl0ID1cbiAgKFN0ZGxpYi5PYmoubWFnaWNcbiAgICAgKFN0ZGxpYi5CdWZmZXIuYmxpdCA6IFN0ZGxpYi5CdWZmZXIudCAtPiBpbnQgLT4gQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQpXG4gICA6IChTdGRsaWIuQnVmZmVyLnRbQGxvY2FsXSkgLT4gaW50IC0+IChCeXRlcy50W0Bsb2NhbF0pIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbjs7XG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBjYW1sX2J1ZmZlcl9sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIGNhbWxfYnVmZmVyX2JsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKFN0ZGxpYi5CdWZmZXIpIChUb19ieXRlcylcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID0gU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VcblxubGV0IGVsaWRlID0gcmVmIGZhbHNlXG5sZXQgZWxpZGVkX21lc3NhZ2UgPSBcIjxiYWNrdHJhY2UgZWxpZGVkIGluIHRlc3Q+XCJcblxubGV0IGdldCA/KGF0X21vc3RfbnVtX2ZyYW1lcyA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgU3RkbGliLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyB0XG47O1xuXG5sZXQgdG9fc3RyaW5nX2xpc3QgdCA9IFN0cmluZy5zcGxpdF9saW5lcyAodG9fc3RyaW5nIHQpXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkxpc3QgKExpc3QubWFwICh0b19zdHJpbmdfbGlzdCB0KSB+ZjooZnVuIHggLT4gU2V4cC5BdG9tIHgpKVxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBzZXRfcmVjb3JkaW5nID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbiAgbGV0IGFtX3JlY29yZGluZyA9IFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKVxuXG4gIGxldCBtb3N0X3JlY2VudF9mb3JfZXhuIGV4biA9XG4gICAgaWYgRXhuLmlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuIHRoZW4gU29tZSAobW9zdF9yZWNlbnQgKCkpIGVsc2UgTm9uZVxuICA7O1xuXG4gICgqIFdlIHR1cm4gb24gYmFja3RyYWNlcyBieSBkZWZhdWx0IGlmIE9DQU1MUlVOUEFSQU0gZG9lc24ndCBleHBsaWNpdGx5IG1lbnRpb24gdGhlbS4gKilcbiAgbGV0IG1heWJlX3NldF9yZWNvcmRpbmcgKCkgPVxuICAgIGxldCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgPVxuICAgICAgbWF0Y2ggU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSB4IC0+IExpc3QuZXhpc3RzIChTdHJpbmcuc3BsaXQgeCB+b246JywnKSB+ZjooU3RyaW5nLmlzX3ByZWZpeCB+cHJlZml4OlwiYlwiKVxuICAgIGluXG4gICAgaWYgbm90IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyB0aGVuIHNldF9yZWNvcmRpbmcgdHJ1ZVxuICA7O1xuXG4gICgqIHRoZSBjYWxsZXIgc2V0IHNvbWV0aGluZywgdGhleSBhcmUgcmVzcG9uc2libGUgKilcblxuICBsZXQgd2l0aF9yZWNvcmRpbmcgYiB+ZiA9XG4gICAgbGV0IHNhdmVkID0gYW1fcmVjb3JkaW5nICgpIGluXG4gICAgc2V0X3JlY29yZGluZyBiO1xuICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gc2V0X3JlY29yZGluZyBzYXZlZClcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBFeG4ubWF5YmVfc2V0X3JlY29yZGluZyAoKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIHRoZSB0b3BsZXZlbCBvZiB0aGUgQmFzZSBsaWJyYXJ5OyBpdCdzIHdoYXQgeW91IGdldCB3aGVuIHlvdSB3cml0ZVxuICAgIFtvcGVuIEJhc2VdLlxuXG4gICAgVGhlIGdvYWwgb2YgQmFzZSBpcyBib3RoIHRvIGJlIGEgbW9yZSBjb21wbGV0ZSBzdGFuZGFyZCBsaWJyYXJ5LCB3aXRoIHJpY2hlciBBUElzLFxuICAgIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgaW4gaXRzIGRlc2lnbi4gRm9yIGluc3RhbmNlLCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeVxuICAgIHNvbWUgdGhpbmdzIGhhdmUgbW9kdWxlcyBhbmQgb3RoZXJzIGRvbid0OyBpbiBCYXNlLCBldmVyeXRoaW5nIGlzIGEgbW9kdWxlLlxuXG4gICAgQmFzZSBleHRlbmRzIHNvbWUgbW9kdWxlcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIGxpa2UgW0FycmF5XSxcbiAgICBbQnVmZmVyXSwgW0J5dGVzXSwgW0NoYXJdLCBbSGFzaHRibF0sIFtJbnQzMl0sIFtJbnQ2NF0sIFtMYXp5XSwgW0xpc3RdLCBbTWFwXSxcbiAgICBbTmF0aXZlaW50XSwgW1ByaW50Zl0sIFtSYW5kb21dLCBbU2V0XSwgW1N0cmluZ10sIFtTeXNdLCBhbmQgW1VjaGFyXS4gT25lIGtleVxuICAgIGRpZmZlcmVuY2UgaXMgdGhhdCBCYXNlIGRvZXNuJ3QgdXNlIGV4Y2VwdGlvbnMgYXMgbXVjaCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmRcbiAgICBpbnN0ZWFkIG1ha2VzIGhlYXZ5IHVzZSBvZiB0aGUgW1Jlc3VsdF0gdHlwZSwgYXMgaW46XG5cbiAgICB7WyB0eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYiBdfVxuXG4gICAgQmFzZSBhbHNvIGFkZHMgZW50aXJlbHkgbmV3IG1vZHVsZXMsIG1vc3Qgbm90YWJseTpcblxuICAgIC0gW0NvbXBhcmFibGVdLCBbQ29tcGFyYXRvcl0sIGFuZCBbQ29tcGFyaXNvbnNdIGluIGxpZXUgb2YgcG9seW1vcnBoaWMgY29tcGFyZS5cbiAgICAtIFtDb250YWluZXJdLCB3aGljaCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGFjcm9zcyBjb250YWluZXItbGlrZSBkYXRhXG4gICAgICBzdHJ1Y3R1cmVzIChhcnJheXMsIGxpc3RzLCBzdHJpbmdzKS5cbiAgICAtIFtSZXN1bHRdLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSwgc3VwcG9ydGluZyB0aGUgb3ItZXJyb3IgcGF0dGVybi5cbiopXG5cbigqXyBXZSBoaWRlIHRoaXMgZnJvbSB0aGUgd2ViIGRvY3MgYmVjYXVzZSB0aGUgbGluZSB3cmFwcGluZyBpcyBiYWQsIG1ha2luZyBpdFxuICBwcmV0dHkgbXVjaCBpbnNjcnV0YWJsZS4gKilcbigqKi8qKilcblxuKCogVGhlIGludGVudCBpcyB0byBzaGFkb3cgYWxsIG9mIElOUklBJ3Mgc3RhbmRhcmQgbGlicmFyeS4gIE1vZHVsZXMgYmVsb3cgd291bGQgY2F1c2VcbiAgIGNvbXBpbGF0aW9uIGVycm9ycyB3aXRob3V0IGJlaW5nIHJlbW92ZWQgZnJvbSBbU2hhZG93X3N0ZGxpYl0gYmVmb3JlIGluY2x1c2lvbi4gKilcblxuaW5jbHVkZSAoXG4gIFNoYWRvd19zdGRsaWIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhZG93X3N0ZGxpYlxuICBlbmRcbiAgKCogTW9kdWxlcyBkZWZpbmVkIGluIEJhc2UgKilcbiAgd2l0aCBtb2R1bGUgQXJyYXkgOj0gU2hhZG93X3N0ZGxpYi5BcnJheVxuICB3aXRoIG1vZHVsZSBBdG9taWMgOj0gU2hhZG93X3N0ZGxpYi5BdG9taWNcbiAgd2l0aCBtb2R1bGUgQm9vbCA6PSBTaGFkb3dfc3RkbGliLkJvb2xcbiAgd2l0aCBtb2R1bGUgQnVmZmVyIDo9IFNoYWRvd19zdGRsaWIuQnVmZmVyXG4gIHdpdGggbW9kdWxlIEJ5dGVzIDo9IFNoYWRvd19zdGRsaWIuQnl0ZXNcbiAgd2l0aCBtb2R1bGUgQ2hhciA6PSBTaGFkb3dfc3RkbGliLkNoYXJcbiAgd2l0aCBtb2R1bGUgRWl0aGVyIDo9IFNoYWRvd19zdGRsaWIuRWl0aGVyXG4gIHdpdGggbW9kdWxlIEZsb2F0IDo9IFNoYWRvd19zdGRsaWIuRmxvYXRcbiAgd2l0aCBtb2R1bGUgSGFzaHRibCA6PSBTaGFkb3dfc3RkbGliLkhhc2h0YmxcbiAgd2l0aCBtb2R1bGUgSW5fY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLkluX2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgSW50IDo9IFNoYWRvd19zdGRsaWIuSW50XG4gIHdpdGggbW9kdWxlIEludDMyIDo9IFNoYWRvd19zdGRsaWIuSW50MzJcbiAgd2l0aCBtb2R1bGUgSW50NjQgOj0gU2hhZG93X3N0ZGxpYi5JbnQ2NFxuICB3aXRoIG1vZHVsZSBMYXp5IDo9IFNoYWRvd19zdGRsaWIuTGF6eVxuICB3aXRoIG1vZHVsZSBMaXN0IDo9IFNoYWRvd19zdGRsaWIuTGlzdFxuICB3aXRoIG1vZHVsZSBNYXAgOj0gU2hhZG93X3N0ZGxpYi5NYXBcbiAgd2l0aCBtb2R1bGUgTmF0aXZlaW50IDo9IFNoYWRvd19zdGRsaWIuTmF0aXZlaW50XG4gIHdpdGggbW9kdWxlIE9wdGlvbiA6PSBTaGFkb3dfc3RkbGliLk9wdGlvblxuICB3aXRoIG1vZHVsZSBPdXRfY2hhbm5lbCA6PSBTaGFkb3dfc3RkbGliLk91dF9jaGFubmVsXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0XG4gICgqIFN1cHBvcnQgZm9yIGdlbmVyYXRlZCBsZXhlcnMgKilcbiAgd2l0aCBtb2R1bGUgTGV4aW5nIDo9IFNoYWRvd19zdGRsaWIuTGV4aW5nXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmKVxuICBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4oKiovKiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmVcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5tb2R1bGUgQXZsdHJlZSA9IEF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGl0ID0gQmxpdFxubW9kdWxlIEJvb2wgPSBCb29sXG5tb2R1bGUgQnVmZmVyID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgPSBCeXRlc1xubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEV4blxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBIYXNoXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNoZXIgPSBIYXNoZXJcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gSW5kZXhlZF9jb250YWluZXJcbm1vZHVsZSBJbmZvID0gSW5mb1xubW9kdWxlIEludCA9IEludFxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEludF9jb252ZXJzaW9uc1xubW9kdWxlIEludDMyID0gSW50MzJcbm1vZHVsZSBJbnQ2MyA9IEludDYzXG5tb2R1bGUgSW50NjQgPSBJbnQ2NFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEludmFyaWFudFxubW9kdWxlIExhenkgPSBMYXp5XG5tb2R1bGUgTGlzdCA9IExpc3Rcbm1vZHVsZSBNYXAgPSBNYXBcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTW9uYWQgPSBNb25hZFxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIFBvbHkgPSBQb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBHbG9iYWxpemUgPSBHbG9iYWxpemVcbiAgbW9kdWxlIE9ial9sb2NhbCA9IE9ial9sb2NhbFxuICBtb2R1bGUgUHB4X2NvbXBhcmVfbGliID0gUHB4X2NvbXBhcmVfbGliXG4gIG1vZHVsZSBQcHhfZW51bWVyYXRlX2xpYiA9IFBweF9lbnVtZXJhdGVfbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcblxuICBsZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmdcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0gYW5kIFtyZWZdIHNpbmNlIHRoZXNlIHR5cGVzIGFyZSBtdXRhYmxlLiAqKVxuICB0eXBlICdhIGFycmF5ID0gJ2EgQXJyYXkudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2FycmF5IDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIGFycmF5W0BvY2FtbC5sb2NhbF0pIC0+ICdhIGFycmF5XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMDlfKVxuICAgICAgICA6ICAoKChhX18wMDlfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8pIC0+IChhX18wMDlfIGFycmF5W0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wMDlfIGFycmF5KSAtPlxuICAgICAgQXJyYXkuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGFycmF5X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGFycmF5ID1cbiAgICBBcnJheS50X29mX3NleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl9hcnJheSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBhcnJheSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIEFycmF5LnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBhcnJheSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBBcnJheS50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9ib29sIDogKGJvb2xbQG9jYW1sLmxvY2FsXSkgLT4gYm9vbCkgPVxuICAgIChCb29sLmdsb2JhbGl6ZSA6IChib29sW0BvY2FtbC5sb2NhbF0pIC0+IGJvb2wpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfYm9vbCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEJvb2wuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfYm9vbCA6IGJvb2wgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEJvb2wuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBib29sX29mX3NleHAgPSAoQm9vbC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gYm9vbClcbiAgbGV0IHNleHBfb2ZfYm9vbCA9IChCb29sLnNleHBfb2ZfdCA6IGJvb2wgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJvb2xfc2V4cF9ncmFtbWFyIDogYm9vbCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBCb29sLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9jaGFyIDogKGNoYXJbQG9jYW1sLmxvY2FsXSkgLT4gY2hhcikgPVxuICAgIChDaGFyLmdsb2JhbGl6ZSA6IChjaGFyW0BvY2FtbC5sb2NhbF0pIC0+IGNoYXIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfY2hhciA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIENoYXIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfY2hhciA6IGNoYXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IENoYXIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBjaGFyX29mX3NleHAgPSAoQ2hhci50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gY2hhcilcbiAgbGV0IHNleHBfb2ZfY2hhciA9IChDaGFyLnNleHBfb2ZfdCA6IGNoYXIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGNoYXJfc2V4cF9ncmFtbWFyIDogY2hhciBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBDaGFyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGV4biA9IEV4bi50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX2V4biA9IChFeG4uc2V4cF9vZl90IDogZXhuIC0+IFNleHBsaWIwLlNleHAudClcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZmxvYXQgPSBGbG9hdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9mbG9hdCA6IChmbG9hdFtAb2NhbWwubG9jYWxdKSAtPiBmbG9hdCkgPVxuICAgIChGbG9hdC5nbG9iYWxpemUgOiAoZmxvYXRbQG9jYW1sLmxvY2FsXSkgLT4gZmxvYXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfZmxvYXQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgRmxvYXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfZmxvYXQgOiBmbG9hdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gRmxvYXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBmbG9hdF9vZl9zZXhwID0gKEZsb2F0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBmbG9hdClcbiAgbGV0IHNleHBfb2ZfZmxvYXQgPSAoRmxvYXQuc2V4cF9vZl90IDogZmxvYXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEZsb2F0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludCA9IEludC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludCA6IChpbnRbQG9jYW1sLmxvY2FsXSkgLT4gaW50KSA9XG4gICAgKEludC5nbG9iYWxpemUgOiAoaW50W0BvY2FtbC5sb2NhbF0pIC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIEludC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQgOiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludF9vZl9zZXhwID0gKEludC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50KVxuICBsZXQgc2V4cF9vZl9pbnQgPSAoSW50LnNleHBfb2ZfdCA6IGludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQzMiA6IChpbnQzMltAb2NhbWwubG9jYWxdKSAtPiBpbnQzMikgPVxuICAgIChJbnQzMi5nbG9iYWxpemUgOiAoaW50MzJbQG9jYW1sLmxvY2FsXSkgLT4gaW50MzIpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50MzIgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50MzIuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50MzIgOiBpbnQzMiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50MzIuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQzMl9vZl9zZXhwID0gKEludDMyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQzMilcbiAgbGV0IHNleHBfb2ZfaW50MzIgPSAoSW50MzIuc2V4cF9vZl90IDogaW50MzIgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDMyLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50NjQgOiAoaW50NjRbQG9jYW1sLmxvY2FsXSkgLT4gaW50NjQpID1cbiAgICAoSW50NjQuZ2xvYmFsaXplIDogKGludDY0W0BvY2FtbC5sb2NhbF0pIC0+IGludDY0KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludDY0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIEludDY0Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludDY0IDogaW50NjQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IEludDY0Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50NjRfb2Zfc2V4cCA9IChJbnQ2NC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50NjQpXG4gIGxldCBzZXhwX29mX2ludDY0ID0gKEludDY0LnNleHBfb2ZfdCA6IGludDY0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnQ2NF9zZXhwX2dyYW1tYXIgOiBpbnQ2NCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBJbnQ2NC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX2xpc3QgOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgbGlzdFtAb2NhbWwubG9jYWxdKSAtPiAnYSBsaXN0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNjJfKVxuICAgICAgICA6ICAoKChhX18wNjJfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA2Ml8pIC0+IChhX18wNjJfIGxpc3RbQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzA2Ml8gbGlzdCkgLT5cbiAgICAgIExpc3QuZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9saXN0IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSBsaXN0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIExpc3QuaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgbGlzdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSBsaXN0ID1cbiAgICBMaXN0LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2xpc3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgbGlzdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIExpc3Quc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGxpc3Rfc2V4cF9ncmFtbWFyIDpcbiAgICAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBMaXN0LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgbmF0aXZlaW50ID0gTmF0aXZlaW50LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfbmF0aXZlaW50IDogKG5hdGl2ZWludFtAb2NhbWwubG9jYWxdKSAtPiBuYXRpdmVpbnQpID1cbiAgICAoTmF0aXZlaW50Lmdsb2JhbGl6ZSA6IChuYXRpdmVpbnRbQG9jYW1sLmxvY2FsXSkgLT4gbmF0aXZlaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX25hdGl2ZWludCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gTmF0aXZlaW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X29mX3NleHAgPSAoTmF0aXZlaW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBuYXRpdmVpbnQpXG4gIGxldCBzZXhwX29mX25hdGl2ZWludCA9IChOYXRpdmVpbnQuc2V4cF9vZl90IDogbmF0aXZlaW50IC0+IFNleHBsaWIwLlNleHAudClcblxuICBsZXQgKG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgOiBuYXRpdmVpbnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgICBOYXRpdmVpbnQudF9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgZ2xvYmFsaXplX29wdGlvbiA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBvcHRpb25bQG9jYW1sLmxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wODVfKVxuICAgICAgICA6ICAoKChhX18wODVfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzA4NV8pIC0+IChhX18wODVfIG9wdGlvbltAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDg1XyBvcHRpb24pIC0+XG4gICAgICBPcHRpb24uZ2xvYmFsaXplXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIG9wdGlvblxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgID1cbiAgICBPcHRpb24uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIG9wdGlvbiA9XG4gICAgT3B0aW9uLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX29wdGlvbiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBvcHRpb24gLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBPcHRpb24uc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBvcHRpb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gT3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgcmVmID0gJ2EgUmVmLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgZ2xvYmFsaXplX3JlZiA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgcmVmW0BvY2FtbC5sb2NhbF0pIC0+ICdhIHJlZiA9XG4gICAgZnVuICh0eXBlIGFfXzEwMl8pXG4gICAgICAgIDogICgoKGFfXzEwMl9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMTAyXykgLT4gKGFfXzEwMl8gcmVmW0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18xMDJfIHJlZikgLT5cbiAgICAgIFJlZi5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHJlZl9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZWYudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3N0cmluZyA9IChTdHJpbmcuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICBsZXQgZXF1YWxfc3RyaW5nID0gKFN0cmluZy5lcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9zdHJpbmcgOiAoc3RyaW5nW0BvY2FtbC5sb2NhbF0pIC0+IHN0cmluZykgPVxuICAgIChTdHJpbmcuZ2xvYmFsaXplIDogKHN0cmluZ1tAb2NhbWwubG9jYWxdKSAtPiBzdHJpbmcpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfc3RyaW5nIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBTdHJpbmcuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfc3RyaW5nIDogc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBTdHJpbmcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzdHJpbmdfb2Zfc2V4cCA9IChTdHJpbmcudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHN0cmluZylcbiAgbGV0IHNleHBfb2Zfc3RyaW5nID0gKFN0cmluZy5zZXhwX29mX3QgOiBzdHJpbmcgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHN0cmluZ19zZXhwX2dyYW1tYXIgOiBzdHJpbmcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2J5dGVzID0gKEJ5dGVzLmNvbXBhcmUgOiBieXRlcyAtPiBieXRlcyAtPiBpbnQpXG4gIGxldCBlcXVhbF9ieXRlcyA9IChCeXRlcy5lcXVhbCA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfYnl0ZXMgOiAoYnl0ZXNbQG9jYW1sLmxvY2FsXSkgLT4gYnl0ZXMpID1cbiAgICAoQnl0ZXMuZ2xvYmFsaXplIDogKGJ5dGVzW0BvY2FtbC5sb2NhbF0pIC0+IGJ5dGVzKVxuICA7O1xuXG4gIGxldCBieXRlc19vZl9zZXhwID0gKEJ5dGVzLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBieXRlcylcbiAgbGV0IHNleHBfb2ZfYnl0ZXMgPSAoQnl0ZXMuc2V4cF9vZl90IDogYnl0ZXMgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGJ5dGVzX3NleHBfZ3JhbW1hciA6IGJ5dGVzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJ5dGVzLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV91bml0IDogKHVuaXRbQG9jYW1sLmxvY2FsXSkgLT4gdW5pdCkgPVxuICAgIChVbml0Lmdsb2JhbGl6ZSA6ICh1bml0W0BvY2FtbC5sb2NhbF0pIC0+IHVuaXQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdW5pdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFVuaXQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfdW5pdCA6IHVuaXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFVuaXQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB1bml0X29mX3NleHAgPSAoVW5pdC50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdW5pdClcbiAgbGV0IHNleHBfb2ZfdW5pdCA9IChVbml0LnNleHBfb2ZfdCA6IHVuaXQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHVuaXRfc2V4cF9ncmFtbWFyIDogdW5pdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBVbml0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICAoKiogRm9ybWF0IHN0dWZmICopXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcblxuICAoKiogTGlzdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIExpc3QuSW5maXhcblxuICAoKiogSW50IG9wZXJhdG9ycyBhbmQgY29tcGFyaXNvbnMgKilcblxuICBpbmNsdWRlIEludC5PXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICgqKiBGbG9hdCBvcGVyYXRvcnMgKilcblxuICBpbmNsdWRlIEZsb2F0Lk9fZG90XG5cbiAgKCogVGhpcyBpcyBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBiZSBvcHRpbWl6ZWQgYXdheSBpbiBtb3JlIGNvbnRleHRzLiAqKVxuXG4gICgqKiBSZXZlcnNlIGFwcGxpY2F0aW9uIG9wZXJhdG9yLiBbeCB8PiBnIHw+IGZdIGlzIGVxdWl2YWxlbnQgdG8gW2YgKGcgKHgpKV0uICopXG4gIGV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgoJ2EgLT4gJ2IpW0Bsb2NhbF9vcHRdKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4gICgqKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuICAoKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuICBleHRlcm5hbCAoICYmICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IChib29sW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlc2VxdW9yXCJcbiAgZXh0ZXJuYWwgbm90IDogKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiAoX1tAbG9jYWxfb3B0XSkgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbiAgKCoqIENvbW1vbiBzdHJpbmcgb3BlcmF0aW9ucyAqKVxuICBsZXQgKCBeICkgPSBTdHJpbmcuKCBeIClcblxuICAoKiogUmVmZXJlbmNlIG9wZXJhdGlvbnMgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUgYW5kXG4gICAgIHRvIGtlZXAgcmVmZXJlbmNlIHVuYm94aW5nIHdvcmtpbmcgKilcbiAgZXh0ZXJuYWwgKCAhICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIHJlZiA6ICdhIC0+ICgnYSByZWZbQGxvY2FsX29wdF0pID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcblxuICAoKiogUGFpciBvcGVyYXRpb25zICopXG5cbiAgbGV0IGZzdCA9IGZzdFxuICBsZXQgc25kID0gc25kXG5cbiAgKCoqIEV4Y2VwdGlvbnMgc3R1ZmYgKilcblxuICAoKiBEZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBtYXkgcmV3cml0ZSAnJXJhaXNlJyBhcyAnJXJlcmFpc2UnLiAqKVxuICBleHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG4gIGxldCBmYWlsd2l0aCA9IGZhaWx3aXRoXG4gIGxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gICgqKiBNaXNjICopXG5cbiAgZXh0ZXJuYWwgcGh5c19lcXVhbCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXFcIlxuICBleHRlcm5hbCBmb3JjZSA6ICgnYSBMYXp5LnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxubGV0IHNldF9pbnB1dF9sZXhidWYgbGV4YnVmX29wdCA9IGlucHV0X2xleGJ1ZiA6PSBsZXhidWZfb3B0XG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zN1wiXVxuXG4gIHR5cGUgb2xkX3QgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopID0ge1xuICAgIGxvYzogdDtcbiAgICBtc2c6IHN0cmluZztcbiAgICBzdWI6IG9sZF90IGxpc3Q7XG4gICAgaWZfaGlnaGxpZ2h0OiBzdHJpbmc7XG4gIH1cblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydF9raW5kICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydF9raW5kICopID1cbiAgfCBSZXBvcnRfZXJyb3JcbiAgfCBSZXBvcnRfd2FybmluZyBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfd2FybmluZ19hc19lcnJvciBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnQgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0X2FzX2Vycm9yIG9mIHN0cmluZ1xuXG4gIHR5cGUgbG9jYXRpb25fbXNnID0gKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkgbG9jXG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0ICopID0ge1xuICAgIGtpbmQgOiBsb2NhdGlvbl9yZXBvcnRfa2luZDtcbiAgICBtYWluIDogbG9jYXRpb25fbXNnO1xuICAgIHN1YiA6IGxvY2F0aW9uX21zZyBsaXN0O1xuICB9XG5cbiAgdHlwZSB0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLmVycm9yICopICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IG9sZF90ICopXG4gICgqKiBPbiBvY2FtbCA+PSA0LjA4OiBbdF0gaXMgYSBbbG9jYXRpb25fcmVwb3J0XSBmb3Igd2hpY2ggW2xvY2F0aW9uX3JlcG9ydF9raW5kXSBtdXN0IGJlIFtSZXBvcnRfZXJyb3JdLiAqKVxuXG4gIHR5cGUgdmVyc2lvbl9zcGVjaWZpY190ID0gW2BOZXdfZXJyb3Igb2YgbG9jYXRpb25fcmVwb3J0IHwgYE9sZF9lcnJvciBvZiBvbGRfdF1cblxuICBsZXQgdmVyc2lvbl9zcGVjaWZpY190X29mX3QgOiB0IC0+IHZlcnNpb25fc3BlY2lmaWNfdCA9IGZ1biB4IC0+XG4gICAgKCpJRl9BVF9MRUFTVCA0MDggYE5ld19lcnJvciB4ICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IGBPbGRfZXJyb3IgeCAqKVxuXG4gIGxldCBpc193ZWxsX2Zvcm1lZCBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IGtpbmQgPSBSZXBvcnRfZXJyb3I7IF8gfSAtPiB0cnVlXG4gICAgfCBgTmV3X2Vycm9yIF8gLT4gZmFsc2VcbiAgICB8IGBPbGRfZXJyb3IgXyAtPiB0cnVlXG5cbiAgbGV0IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgKG1zZyA6IGxvY2F0aW9uX21zZykgPSBGb3JtYXQuYXNwcmludGYgXCIldFwiIG1zZy50eHRcblxuICBsZXQgbWFpbl9tc2cgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgeyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIG1haW47IGxvYyA9IG1haW4ubG9jIH1cbiAgICB8IGBPbGRfZXJyb3IgeyBtc2c7IGxvYzsgXyB9IC0+IHsgdHh0ID0gbXNnOyBsb2MgfVxuXG4gIGxldCBzdWJfbXNncyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBlcnIgLT4geyB0eHQgPSBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIGVycjsgbG9jID0gZXJyLmxvYyB9KVxuICAgICAgICAgIHN1YlxuICAgIHwgYE9sZF9lcnJvciB7IHN1YjsgXyB9IC0+XG4gICAgICAgIGxldCByZWMgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgfCB7IGxvYzsgbXNnOyBzdWI7IF8gfSA6OiB0YWlsIC0+XG4gICAgICAgICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgKHsgdHh0ID0gbXNnOyBsb2MgfSA6OiBhY2MpIChzdWIgQCB0YWlsKVxuICAgICAgICBpblxuICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIFtdIHN1YlxuXG4gIGxldCBvZl9leG4gZXhuID1cbiAgICAoKklGX0FUX0xFQVNUIDQwNiBtYXRjaCBlcnJvcl9vZl9leG4gZXhuIHdpdGggfCBTb21lIChgT2sgZSkgLT4gU29tZSBlIHwgTm9uZSB8IFNvbWUgYEFscmVhZHlfZGlzcGxheWVkIC0+IE5vbmUgKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDYgZXJyb3Jfb2ZfZXhuIGV4biopXG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyA9IHsgZXJyb3Igd2l0aCBtc2cgfVxuXG4gIGxldCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cgPVxuICAgIGxldCB0eHQgcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgbXNnIGluXG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCB0eHQgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbXNnIGVycm9yIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfb2xkIGVycm9yIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnKilcblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBzdWIgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB7IGxvYzsgdHh0IH0gLT4geyBsb2M7IG1zZyA9IHR4dDsgc3ViID0gW107IGlmX2hpZ2hsaWdodCA9IHR4dCB9KVxuICAgICAgICBzdWJcbiAgICBpblxuICAgIHsgbG9jOyBtc2cgPSB0eHQ7IHN1YjsgaWZfaGlnaGxpZ2h0ID0gdHh0IH1cblxuICBsZXQgX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiB7IGxvYzsgdHh0IH0gPVxuICAgIGxldCBta190eHQgeCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiB4IGluXG4gICAgbGV0IG1rIGxvYyB4ID0geyBsb2M7IHR4dCA9IG1rX3R4dCB4IH0gaW5cbiAgICB7XG4gICAgICBraW5kID0gUmVwb3J0X2Vycm9yO1xuICAgICAgbWFpbiA9IG1rIGxvYyB0eHQ7XG4gICAgICBzdWIgPSBMaXN0Lm1hcCAoZnVuIHsgbG9jOyB0eHQgfSAtPiBtayBsb2MgdHh0KSBzdWI7XG4gICAgfVxuXG4gIGxldCBtYWtlIH5zdWIgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9vbGQgfnN1YiBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgbXNnKilcblxuICBsZXQgX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jID0geyBlcnJvciB3aXRoIGxvYyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyA9XG4gICAgbGV0IG1haW4gPSB7IGVycm9yLm1haW4gd2l0aCBsb2MgfSBpblxuICAgIHsgZXJyb3Igd2l0aCBtYWluIH1cblxuICBsZXQgc2V0X21haW5fbG9jIGVycm9yIGxvYyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jKilcbmVuZFxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgbXNnID0gcmFpc2VfZXJyb3JmID9sb2MgbXNnXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcblxubGV0IHBhcnNlIHMgPVxuICAoKklGX05PVF9BVF9MRUFTVCA0MTEgcGFyc2UgcyAqKVxuICAoKklGX0FUX0xFQVNUIDQxMSBPY2FtbF9jb21tb24uUGFyc2UubG9uZ2lkZW50IEBAIExleGluZy5mcm9tX3N0cmluZyBAQCBzICopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBOb1ZhcmlhbmNlXG5cbiAgdHlwZSBpbmplY3Rpdml0eSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSAqKSA9XG4gICAgfCBJbmplY3RpdmVcbiAgICB8IE5vSW5qZWN0aXZpdHlcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tcXEBpZCBBUkddXSBhbmQgW1tcXEBcXEBpZCBBUkddXS5cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFs/IFBdICBvciAgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QxIC0+IFQyXSAgICB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19LFxuICAgICAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGUgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS5cbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUIHRjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSAgICAgd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsjdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCAjdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdCAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZ1xuICAgICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVtQZXhwX2Z1bl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0gICAobm9uIGxhYmVsZWQgYXJndW1lbnQpLFxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzFcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzFcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICBUaG9tYXMgR2F6YWduYWlyZSwgT0NhbWxQcm8gICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICBGYWJyaWNlIExlIEZlc3NhbnQsIElOUklBIFNhY2xheSAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIEhvbmdibyBaaGFuZywgVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDA3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9yaWdpbmFsIENvZGUgZnJvbSBCZXItbWV0YW9jYW1sLCBtb2RpZmllZCBmb3IgMy4xMi4wIGFuZCBmaXhlZCAqKVxuKCogUHJpbnRpbmcgY29kZSBleHByZXNzaW9ucyAqKVxuKCogQXV0aG9yczogIEVkIFBpenppLCBGYWJyaWNlIExlIEZlc3NhbnQgKilcbigqIEV4dGVuc2l2ZSBSZXdyaXRlOiBIb25nYm8gWmhhbmc6IFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICopXG4oKiBUT0RPIG1vcmUgZmluZS1ncmFpbmVkIHByZWNlZGVuY2UgcHJldHR5LXByaW50aW5nICopXG5cbm9wZW4gQXN0XzQxNFxub3BlbiBBc3R0eXBlc1xub3BlbiBGb3JtYXRcbm9wZW4gTG9jYXRpb25cbm9wZW4gTG9uZ2lkZW50XG5vcGVuIFBhcnNldHJlZVxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG5lbmRcblxubGV0IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gIGxldCBjaGVja192YXJpYWJsZSB2bCBsb2MgdiA9XG4gICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gIGluXG4gIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgfCBQdHlwX3ZhciB4IC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXNcbiAgICAgICAgLT5cbiAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgIHwgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBsc3QpIC0+IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfYWxpYXMgKGNvcmVfdHlwZSwgc3RyaW5nKSAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgc3RyaW5nX2xzdDtcbiAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICBpblxuICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgIGluXG4gICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgaW5cbiAgbG9vcCB0XG5cbmxldCBwcmVmaXhfc3ltYm9scyA9IFsgJyEnOyAnPyc7ICd+JyBdXG5cbmxldCBpbmZpeF9zeW1ib2xzID1cbiAgWyAnPSc7ICc8JzsgJz4nOyAnQCc7ICdeJzsgJ3wnOyAnJic7ICcrJzsgJy0nOyAnKic7ICcvJzsgJyQnOyAnJSc7ICcjJyBdXG5cbigqIHR5cGUgZml4aXR5ID0gSW5maXh8IFByZWZpeCAgKilcbmxldCBzcGVjaWFsX2luZml4X3N0cmluZ3MgPVxuICBbIFwiYXNyXCI7IFwibGFuZFwiOyBcImxvclwiOyBcImxzbFwiOyBcImxzclwiOyBcImx4b3JcIjsgXCJtb2RcIjsgXCJvclwiOyBcIjo9XCI7IFwiIT1cIjsgXCI6OlwiIF1cblxubGV0IGxldG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2wnXG4gICYmIHMuWzFdID0gJ2UnXG4gICYmIHMuWzJdID0gJ3QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxubGV0IGFuZG9wIHMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAzXG4gICYmIHMuWzBdID0gJ2EnXG4gICYmIHMuWzFdID0gJ24nXG4gICYmIHMuWzJdID0gJ2QnXG4gICYmIExpc3QubWVtIHMuWzNdIGluZml4X3N5bWJvbHNcblxuKCogZGV0ZXJtaW5lcyBpZiB0aGUgc3RyaW5nIGlzIGFuIGluZml4IHN0cmluZy5cbiAgIGNoZWNrcyBiYWNrd2FyZHMsIGZpcnN0IGFsbG93aW5nIGEgcmVuYW1pbmcgcG9zdGZpeCAoXCJfMTAyXCIpIHdoaWNoXG4gICBtYXkgaGF2ZSByZXN1bHRlZCBmcm9tIFBleHAgLT4gVGV4cCAtPiBQZXhwIHRyYW5zbGF0aW9uLCB0aGVuIGNoZWNraW5nXG4gICBpZiBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSB2YWxpZCBpbmZpeFxuICAgY2hhcmFjdGVycy4gKilcbmxldCBmaXhpdHlfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcIlwiIC0+IGBOb3JtYWxcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcyBzcGVjaWFsX2luZml4X3N0cmluZ3MgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gaW5maXhfc3ltYm9scyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBwcmVmaXhfc3ltYm9scyAtPiBgUHJlZml4IHNcbiAgfCBzIHdoZW4gcy5bMF0gPSAnLicgLT4gYE1peGZpeCBzXG4gIHwgcyB3aGVuIGxldG9wIHMgLT4gYExldG9wIHNcbiAgfCBzIHdoZW4gYW5kb3AgcyAtPiBgQW5kb3Agc1xuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgdmlld19maXhpdHlfb2ZfZXhwID0gZnVuY3Rpb25cbiAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICBmaXhpdHlfb2Zfc3RyaW5nIGxcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IGlzX2luZml4ID0gZnVuY3Rpb24gYEluZml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19taXhmaXggPSBmdW5jdGlvbiBgTWl4Zml4IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBpc19rd2RvcCA9IGZ1bmN0aW9uIGBMZXRvcCBfIHwgYEFuZG9wIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcbmxldCBmaXJzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bMF0gPSBjXG5sZXQgbGFzdF9pcyBjIHN0ciA9IHN0ciA8PiBcIlwiICYmIHN0ci5bU3RyaW5nLmxlbmd0aCBzdHIgLSAxXSA9IGNcbmxldCBmaXJzdF9pc19pbiBjcyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBMaXN0Lm1lbSBzdHIuWzBdIGNzXG5cbigqIHdoaWNoIGlkZW50aWZpZXJzIGFyZSBpbiBmYWN0IG9wZXJhdG9ycyBuZWVkaW5nIHBhcmVudGhlc2VzICopXG5sZXQgbmVlZHNfcGFyZW5zIHR4dCA9XG4gIGxldCBmaXggPSBmaXhpdHlfb2Zfc3RyaW5nIHR4dCBpblxuICBpc19pbmZpeCBmaXggfHwgaXNfbWl4Zml4IGZpeCB8fCBpc19rd2RvcCBmaXhcbiAgfHwgZmlyc3RfaXNfaW4gcHJlZml4X3N5bWJvbHMgdHh0XG5cbigqIHNvbWUgaW5maXhlcyBuZWVkIHNwYWNlcyBhcm91bmQgcGFyZW5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCBjb21tZW50XG4gICBzeW50YXggKilcbmxldCBuZWVkc19zcGFjZXMgdHh0ID0gZmlyc3RfaXMgJyonIHR4dCB8fCBsYXN0X2lzICcqJyB0eHRcbmxldCBzdHJpbmdfbG9jIHBwZiB4ID0gZnByaW50ZiBwcGYgXCIlc1wiIHgudHh0XG5cbigqIGFkZCBwYXJlbnRoZXNlcyB0byBiaW5kZXJzIHdoZW4gdGhleSBhcmUgaW4gZmFjdCBpbmZpeCBvciBwcmVmaXggb3BlcmF0b3JzICopXG5sZXQgcHJvdGVjdF9pZGVudCBwcGYgdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIihAOyVzQDspXCJcbiAgICBlbHNlIFwiKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCB0eHRcblxubGV0IHByb3RlY3RfbG9uZ2lkZW50IHBwZiBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJWEuJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiJWEuKEA7JXNAOylcIlxuICAgIGVsc2UgXCIlYS4oJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dFxuXG50eXBlIHNwYWNlX2Zvcm1hdHRlciA9ICh1bml0LCBGb3JtYXQuZm9ybWF0dGVyLCB1bml0KSBmb3JtYXRcblxubGV0IG92ZXJyaWRlID0gZnVuY3Rpb24gT3ZlcnJpZGUgLT4gXCIhXCIgfCBGcmVzaCAtPiBcIlwiXG5cbigqIHZhcmlhbmNlIGVuY29kaW5nOiBuZWVkIHRvIHN5bmMgdXAgd2l0aCB0aGUgW3BhcnNlci5tbHldICopXG5sZXQgdHlwZV92YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgTm9WYXJpYW5jZSAtPiBcIlwiXG4gIHwgQ292YXJpYW50IC0+IFwiK1wiXG4gIHwgQ29udHJhdmFyaWFudCAtPiBcIi1cIlxuXG5sZXQgdHlwZV9pbmplY3Rpdml0eSA9IGZ1bmN0aW9uIE5vSW5qZWN0aXZpdHkgLT4gXCJcIiB8IEluamVjdGl2ZSAtPiBcIiFcIlxuXG50eXBlIGNvbnN0cnVjdCA9XG4gIFsgYGNvbnMgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYGxpc3Qgb2YgZXhwcmVzc2lvbiBsaXN0XG4gIHwgYG5pbFxuICB8IGBub3JtYWxcbiAgfCBgc2ltcGxlIG9mIExvbmdpZGVudC50XG4gIHwgYHR1cGxlIF1cblxubGV0IHZpZXdfZXhwciB4ID1cbiAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIigpXCI7IF8gfSwgXykgLT4gYHR1cGxlXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKSAtPiBgbmlsXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LCBTb21lIF8pIC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZXhwIGFjYyA9XG4gICAgICAgIG1hdGNoIGV4cCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBfKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgIFNvbWUgeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgZTE7IGUyIF07IHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgICAgICApO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGxvb3AgZTIgKGUxIDo6IGFjYylcbiAgICAgICAgfCBlIC0+IChMaXN0LnJldiAoZSA6OiBhY2MpLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgbHMsIGIgPSBsb29wIHggW10gaW5cbiAgICAgIGlmIGIgdGhlbiBgbGlzdCBscyBlbHNlIGBjb25zIGxzXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHgsIE5vbmUpIC0+IGBzaW1wbGUgeC50eHRcbiAgfCBfIC0+IGBub3JtYWxcblxubGV0IGlzX3NpbXBsZV9jb25zdHJ1Y3QgOiBjb25zdHJ1Y3QgLT4gYm9vbCA9IGZ1bmN0aW9uXG4gIHwgYG5pbCB8IGB0dXBsZSB8IGBsaXN0IF8gfCBgc2ltcGxlIF8gLT4gdHJ1ZVxuICB8IGBjb25zIF8gfCBgbm9ybWFsIC0+IGZhbHNlXG5cbmxldCBwcCA9IGZwcmludGZcblxudHlwZSBjdHh0ID0geyBwaXBlIDogYm9vbDsgc2VtaSA6IGJvb2w7IGlmdGhlbmVsc2UgOiBib29sIH1cblxubGV0IHJlc2V0X2N0eHQgPSB7IHBpcGUgPSBmYWxzZTsgc2VtaSA9IGZhbHNlOyBpZnRoZW5lbHNlID0gZmFsc2UgfVxubGV0IHVuZGVyX3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGUgPSB0cnVlIH1cbmxldCB1bmRlcl9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pID0gdHJ1ZSB9XG5sZXQgdW5kZXJfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZSA9IHRydWUgfVxuKCpcbmxldCByZXNldF9zZW1pIGN0eHQgPSB7IGN0eHQgd2l0aCBzZW1pPWZhbHNlIH1cbmxldCByZXNldF9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlPWZhbHNlIH1cbmxldCByZXNldF9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlPWZhbHNlIH1cbiopXG5cbmxldCBsaXN0IDpcbiAgICAgICdhLlxuICAgICAgP3NlcDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIGxpc3QgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/c2VwID9maXJzdCA/bGFzdCBmdSBmIHhzIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBzZXAgPSBtYXRjaCBzZXAgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiQCBcIiA6IF8gZm9ybWF0NikgaW5cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICB8IHhzIC0+XG4gICAgICAgIGxldCByZWMgbG9vcCBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgICAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgICAgICBmdSBmIHg7XG4gICAgICAgICAgICAgIHBwIGYgc2VwO1xuICAgICAgICAgICAgICBsb29wIGYgeHNcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICAgIGxvb3AgZiB4cztcbiAgICAgICAgcHAgZiBsYXN0XG4gIGluXG4gIGF1eCBmIHhzXG5cbmxldCBvcHRpb24gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBvcHRpb24gLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/Zmlyc3QgP2xhc3QgZnUgZiBhIC0+XG4gIGxldCBmaXJzdCA9IG1hdGNoIGZpcnN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgbGFzdCA9IG1hdGNoIGxhc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpIGluXG4gIG1hdGNoIGEgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICAgIHBwIGYgZmlyc3Q7XG4gICAgICBmdSBmIHg7XG4gICAgICBwcCBmIGxhc3RcblxubGV0IHBhcmVuIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICBib29sIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgLT5cbiAgICAgIHVuaXQgPVxuIGZ1biA/KGZpcnN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSA/KGxhc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpIGIgZnUgZiB4IC0+XG4gIGlmIGIgdGhlbiAoXG4gICAgcHAgZiBcIihcIjtcbiAgICBwcCBmIGZpcnN0O1xuICAgIGZ1IGYgeDtcbiAgICBwcCBmIGxhc3Q7XG4gICAgcHAgZiBcIilcIilcbiAgZWxzZSBmdSBmIHhcblxubGV0IHJlYyBsb25naWRlbnQgZiA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcHJvdGVjdF9pZGVudCBmIHNcbiAgfCBMZG90ICh5LCBzKSAtPiBwcm90ZWN0X2xvbmdpZGVudCBmIGxvbmdpZGVudCB5IHNcbiAgfCBMYXBwbHkgKHksIHMpIC0+IHBwIGYgXCIlYSglYSlcIiBsb25naWRlbnQgeSBsb25naWRlbnQgc1xuXG5sZXQgbG9uZ2lkZW50X2xvYyBmIHggPSBwcCBmIFwiJWFcIiBsb25naWRlbnQgeC50eHRcblxubGV0IGNvbnN0YW50IGYgPSBmdW5jdGlvblxuICB8IFBjb25zdF9jaGFyIGkgLT4gcHAgZiBcIiVDXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIE5vbmUpIC0+IHBwIGYgXCIlU1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBTb21lIGRlbGltKSAtPiBwcCBmIFwieyVzfCVzfCVzfVwiIGRlbGltIGkgZGVsaW1cbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2Zsb2F0IChpLCBTb21lIG0pIC0+XG4gICAgICBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAoaSwgbSkgLT4gcHAgZiBcIiVzJWNcIiBpIG0pIGYgKGksIG0pXG5cbigqIHRyYWlsaW5nIHNwYWNlKilcbmxldCBtdXRhYmxlX2ZsYWcgZiA9IGZ1bmN0aW9uIEltbXV0YWJsZSAtPiAoKSB8IE11dGFibGUgLT4gcHAgZiBcIm11dGFibGVAO1wiXG5sZXQgdmlydHVhbF9mbGFnIGYgPSBmdW5jdGlvbiBDb25jcmV0ZSAtPiAoKSB8IFZpcnR1YWwgLT4gcHAgZiBcInZpcnR1YWxAO1wiXG5cbigqIHRyYWlsaW5nIHNwYWNlIGFkZGVkICopXG5sZXQgcmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+ICgpIHwgUmVjdXJzaXZlIC0+IHBwIGYgXCJyZWMgXCJcblxubGV0IG5vbnJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiBwcCBmIFwibm9ucmVjIFwiIHwgUmVjdXJzaXZlIC0+ICgpXG5cbmxldCBkaXJlY3Rpb25fZmxhZyBmID0gZnVuY3Rpb25cbiAgfCBVcHRvIC0+IHBwIGYgXCJ0b0AgXCJcbiAgfCBEb3dudG8gLT4gcHAgZiBcImRvd250b0AgXCJcblxubGV0IHByaXZhdGVfZmxhZyBmID0gZnVuY3Rpb24gUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwicHJpdmF0ZUAgXCJcbmxldCBpdGVyX2xvYyBmIGN0eHQgeyB0eHQ7IGxvYyA9IF8gfSA9IGYgY3R4dCB0eHRcbmxldCBjb25zdGFudF9zdHJpbmcgZiBzID0gcHAgZiBcIiVTXCIgc1xuXG5sZXQgdHl2YXIgcHBmIHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBzLlsxXSA9ICdcXCcnIHRoZW5cbiAgICAoKiB3aXRob3V0IHRoZSBzcGFjZSwgdGhpcyB3b3VsZCBiZSBwYXJzZWQgYXNcbiAgICAgICBhIGNoYXJhY3RlciBsaXRlcmFsICopXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJyAlc1wiIHNcbiAgZWxzZSBGb3JtYXQuZnByaW50ZiBwcGYgXCInJXNcIiBzXG5cbmxldCB0eXZhcl9sb2MgZiBzdHIgPSB0eXZhciBmIHN0ci50eHRcbmxldCBzdHJpbmdfcXVvdCBmIHggPSBwcCBmIFwiYCVzXCIgeFxuXG4oKiBjIFsnYSwnYl0gKilcbmxldCByZWMgY2xhc3NfcGFyYW1zX2RlZiBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiWyVhXSBcIiAoKiBzcGFjZSAqKSAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+c2VwOlwiLFwiKSBsXG5cbmFuZCB0eXBlX3dpdGhfbGFiZWwgY3R4dCBmIChsYWJlbCwgYykgPVxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBjb3JlX3R5cGUxIGN0eHQgZiBjICgqIG90aGVyd2lzZSBwYXJlbnRoZXNpemUgKilcbiAgfCBMYWJlbGxlZCBzIC0+IHBwIGYgXCIlczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuICB8IE9wdGlvbmFsIHMgLT4gcHAgZiBcIj8lczolYVwiIHMgKGNvcmVfdHlwZTEgY3R4dCkgY1xuXG5hbmQgY29yZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjb3JlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHR5cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2Fycm93IChsLCBjdDEsIGN0MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGN0MSkgKGNvcmVfdHlwZSBjdHh0KSBjdDJcbiAgICB8IFB0eXBfYWxpYXMgKGN0LCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSBjdCB0eXZhciBzXG4gICAgfCBQdHlwX3BvbHkgKFtdLCBjdCkgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgIHwgUHR5cF9wb2x5IChzbCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYVwiXG4gICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgbClcbiAgICAgICAgICAgICAgbClcbiAgICAgICAgICBzbCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQF1cIiAoY29yZV90eXBlMSBjdHh0KSB4XG5cbmFuZCBjb3JlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wdHlwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFB0eXBfdmFyIHMgLT4gdHl2YXIgZiBzXG4gICAgfCBQdHlwX3R1cGxlIGwgLT4gcHAgZiBcIiglYSlcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgIHwgUHR5cF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmICgqIFwiJWElYUA7XCIgKikgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IFsgeCBdIC0+IHBwIGYgXCIlYUA7XCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+IGxpc3QgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKUA7XCIgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLEA7XCIgZiBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF92YXJpYW50IChsLCBjbG9zZWQsIGxvdykgLT5cbiAgICAgICAgbGV0IGZpcnN0X2lzX2luaGVyaXQgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgeyBQYXJzZXRyZWUucHJmX2Rlc2MgPSBSaW5oZXJpdCBfIH0gOjogXyAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBlX3ZhcmlhbnRfaGVscGVyIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBSdGFnIChsLCBfLCBjdGwpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhJWFAOyVhQF1cIiAoaXRlcl9sb2Mgc3RyaW5nX3F1b3QpIGxcbiAgICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiJlwiKSBjdGwpXG4gICAgICAgICAgICAgICAgY3RsIChhdHRyaWJ1dGVzIGN0eHQpIHgucHJmX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IFJpbmhlcml0IGN0IC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+WyVhJWFdQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCAobCwgY2xvc2VkKSB3aXRoXG4gICAgICAgICAgICB8IFtdLCBDbG9zZWQgLT4gKClcbiAgICAgICAgICAgIHwgW10sIE9wZW4gLT4gcHAgZiBcIj5cIiAoKiBDZiAjNzIwMDogcHJpbnQgWz5dIGNvcnJlY3RseSAqKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVzQDslYVwiXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggKGNsb3NlZCwgbG93KSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgTm9uZSAtPiBpZiBmaXJzdF9pc19pbmhlcml0IHRoZW4gXCIgfFwiIGVsc2UgXCJcIlxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIFNvbWUgXyAtPiBcIjxcIiAoKiBGSVhNRSBkZXN1Z2FyIHRoZSBzeW50YXggc3VnYXIqKVxuICAgICAgICAgICAgICAgICAgfCBPcGVuLCBfIC0+IFwiPlwiKVxuICAgICAgICAgICAgICAgICAgKGxpc3QgdHlwZV92YXJpYW50X2hlbHBlciB+c2VwOlwiQDs8MSAtMj58IFwiKVxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICBsXG4gICAgICAgICAgKGZ1biBmIGxvdyAtPlxuICAgICAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBbXSB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSB4cyAtPiBwcCBmIFwiPkAgJWFcIiAobGlzdCBzdHJpbmdfcXVvdCkgeHMpXG4gICAgICAgICAgbG93XG4gICAgfCBQdHlwX29iamVjdCAobCwgbykgLT5cbiAgICAgICAgbGV0IGNvcmVfZmllbGRfdHlwZSBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgT3RhZyAobCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIENmICM3MjAwICopXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzOiAlYUAgJWFAIEBdXCIgbC50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgICAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG9mX2F0dHJpYnV0ZXNcbiAgICAgICAgICB8IE9pbmhlcml0IGN0IC0+IHBwIGYgXCJAWzxob3YyPiVhQCBAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpZWxkX3ZhciBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEFzdHR5cGVzLkNsb3NlZCAtPiAoKVxuICAgICAgICAgIHwgQXN0dHlwZXMuT3BlbiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBwcCBmIFwiLi5cIiB8IF8gLT4gcHAgZiBcIiA7Li5cIilcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+PEAgJWElYUAgPiBAXVwiXG4gICAgICAgICAgKGxpc3QgY29yZV9maWVsZF90eXBlIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbCBmaWVsZF92YXIgb1xuICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgIHwgUHR5cF9jbGFzcyAobGksIGwpIC0+XG4gICAgICAgICgqRklYTUUqKVxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYSMlYUBdXCJcbiAgICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHR5cF9wYWNrYWdlIChsaWQsIGNzdHJzKSAtPiAoXG4gICAgICAgIGxldCBhdXggZiAocywgY3QpID1cbiAgICAgICAgICBwcCBmIFwidHlwZSAlYUAgPUAgJWFcIiBsb25naWRlbnRfbG9jIHMgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjc3RycyB3aXRoXG4gICAgICAgIHwgW10gLT4gcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhQCB3aXRoQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgICAgIChsaXN0IGF1eCB+c2VwOlwiQCBhbmRAIFwiKSBjc3RycylcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGNvcmVfdHlwZSBjdHh0KSBmIHhcblxuKCoqKioqKioqKioqKioqKioqKioqcGF0dGVybioqKioqKioqKioqKioqKioqKioqKVxuKCogYmUgY2F1dGlvdXMgd2hlbiB1c2UgW3BhdHRlcm5dLCBbcGF0dGVybjFdIGlzIHByZWZlcnJlZCAqKVxuYW5kIHBhdHRlcm4gY3R4dCBmIHggPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKHBhdHRlcm4gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucHBhdF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2FsaWFzIChwLCBzKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7YXNAOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwIHByb3RlY3RfaWRlbnQgcy50eHRcbiAgICB8IF8gLT4gcGF0dGVybl9vciBjdHh0IGYgeFxuXG5hbmQgcGF0dGVybl9vciBjdHh0IGYgeCA9XG4gIGxldCByZWMgbGVmdF9hc3NvY2lhdGl2ZSB4IGFjYyA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfb3IgKHAxLCBwMik7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgbGVmdF9hc3NvY2lhdGl2ZSBwMSAocDIgOjogYWNjKVxuICAgIHwgeCAtPiB4IDo6IGFjY1xuICBpblxuICBtYXRjaCBsZWZ0X2Fzc29jaWF0aXZlIHggW10gd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHBhdHRlcm4xIGN0eHQgZiB4XG4gIHwgb3JwYXRzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCB+c2VwOlwiQCB8IFwiIChwYXR0ZXJuMSBjdHh0KSkgb3JwYXRzXG5cbmFuZCBwYXR0ZXJuMSBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBsZXQgcmVjIHBhdHRlcm5fbGlzdF9oZWxwZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCB7XG4gICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgIFNvbWUgKFtdLCB7IHBwYXRfZGVzYyA9IFBwYXRfdHVwbGUgWyBwYXQxOyBwYXQyIF07IF8gfSkgKTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYTo6JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0MSBwYXR0ZXJuX2xpc3RfaGVscGVyIHBhdDIgKCpSQSopXG4gICAgfCBwIC0+IHBhdHRlcm4xIGN0eHQgZiBwXG4gIGluXG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF92YXJpYW50IChsLCBTb21lIHApIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBfKSAtPlxuICAgICAgICBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKCh7IHR4dDsgXyB9IGFzIGxpKSwgcG8pIC0+IChcbiAgICAgICAgaWYgKCogRklYTUUgVGhlIHRoaXJkIGZpZWxkIGFsd2F5cyBmYWxzZSAqKVxuICAgICAgICAgICB0eHQgPSBMaWRlbnQgXCI6OlwiIHRoZW4gcHAgZiBcIiVhXCIgcGF0dGVybl9saXN0X2hlbHBlciB4XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBwbyB3aXRoXG4gICAgICAgICAgfCBTb21lIChbXSwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDslYVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IFNvbWUgKHZsLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAICh0eXBlICVhKUA7JWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAgXCIgc3RyaW5nX2xvYylcbiAgICAgICAgICAgICAgICB2bCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpKVxuICAgIHwgXyAtPiBzaW1wbGVfcGF0dGVybiBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX3BhdHRlcm4gY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKChcIigpXCIgfCBcIltdXCIpIGFzIHgpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgIHBwIGYgXCIlc1wiIHhcbiAgICB8IFBwYXRfYW55IC0+IHBwIGYgXCJfXCJcbiAgICB8IFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gcHJvdGVjdF9pZGVudCBmIHR4dFxuICAgIHwgUHBhdF9hcnJheSBsIC0+IHBwIGYgXCJAWzwyPlt8JWF8XUBdXCIgKGxpc3QgKHBhdHRlcm4xIGN0eHQpIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gTm9uZSB9IC0+IHBwIGYgXCIobW9kdWxlQCBfKUAgXCJcbiAgICB8IFBwYXRfdW5wYWNrIHsgdHh0ID0gU29tZSBzIH0gLT4gcHAgZiBcIihtb2R1bGVAICVzKUAgXCIgc1xuICAgIHwgUHBhdF90eXBlIGxpIC0+IHBwIGYgXCIjJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQcGF0X3JlY29yZCAobCwgY2xvc2VkKSAtPiAoXG4gICAgICAgIGxldCBsb25naWRlbnRfeF9wYXR0ZXJuIGYgKGxpLCBwKSA9XG4gICAgICAgICAgbWF0Y2ggKGxpLCBwKSB3aXRoXG4gICAgICAgICAgfCAoIHsgdHh0ID0gTGlkZW50IHM7IF8gfSxcbiAgICAgICAgICAgICAgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9IClcbiAgICAgICAgICAgIHdoZW4gcyA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY2xvc2VkIHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzwyPntAOyVhQDt9QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbFxuICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+e0A7JWE7X31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsKVxuICAgIHwgUHBhdF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwxPiglYSlAXVwiIChsaXN0IH5zZXA6XCIsQDtcIiAocGF0dGVybjEgY3R4dCkpIGwgKCogbGV2ZWwxKilcbiAgICB8IFBwYXRfY29uc3RhbnQgYyAtPiBwcCBmIFwiJWFcIiBjb25zdGFudCBjXG4gICAgfCBQcGF0X2ludGVydmFsIChjMSwgYzIpIC0+IHBwIGYgXCIlYS4uJWFcIiBjb25zdGFudCBjMSBjb25zdGFudCBjMlxuICAgIHwgUHBhdF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUHBhdF9jb25zdHJhaW50IChwLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+KCVhQDs6QDslYSlAXVwiIChwYXR0ZXJuMSBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBwYXRfbGF6eSBwIC0+IHBwIGYgXCJAWzwyPihsYXp5QDslYSlAXVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBwIC0+IHBwIGYgXCJAWzwyPmV4Y2VwdGlvbkA7JWFAXVwiIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUHBhdF9vcGVuIChsaWQsIHApIC0+XG4gICAgICAgIGxldCB3aXRoX3BhcmVuID1cbiAgICAgICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQcGF0X2FycmF5IF8gfCBQcGF0X3JlY29yZCBfXG4gICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYSBAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgICAgKHBhcmVuIHdpdGhfcGFyZW4gQEAgcGF0dGVybjEgY3R4dClcbiAgICAgICAgICBwXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKHBhdHRlcm4gY3R4dCkgZiB4XG5cbmFuZCBsYWJlbF9leHAgY3R4dCBmIChsLCBvcHQsIHApID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPlxuICAgICAgKCogc2luZ2xlIGNhc2UgcGF0dGVybiBwYXJlbnMgbmVlZGVkIGhlcmUgKilcbiAgICAgIHBwIGYgXCIlYUAgXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgfCBPcHRpb25hbCByZXN0IC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgICAgd2hlbiB0eHQgPSByZXN0IC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+IHBwIGYgXCI/KCVzPUA7JWEpQDtcIiByZXN0IChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lc0AgXCIgcmVzdClcbiAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiPyVzOiglYT1AOyVhKUA7XCIgcmVzdCAocGF0dGVybjEgY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXM6JWFAO1wiIHJlc3QgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApKVxuICB8IExhYmVsbGVkIGwgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSB3aGVuIHR4dCA9IGxcbiAgICAgICAgLT5cbiAgICAgICAgICBwcCBmIFwifiVzQDtcIiBsXG4gICAgICB8IF8gLT4gcHAgZiBcIn4lczolYUA7XCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcClcblxuYW5kIHN1Z2FyX2V4cHIgY3R4dCBmIGUgPVxuICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGZhbHNlXG4gIGVsc2VcbiAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2FwcGx5XG4gICAgICAgICggeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gaWQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgICAgICBhcmdzIClcbiAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4gKGxhYiwgXykgLT4gbGFiID0gTm9sYWJlbCkgYXJncyAtPiAoXG4gICAgICAgIGxldCBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgc2VwIHJpZ2h0IHByaW50X2luZGV4XG4gICAgICAgICAgICBpbmRpY2VzIHJlbV9hcmdzID1cbiAgICAgICAgICBsZXQgcHJpbnRfcGF0aCBwcGYgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbSAtPiBwcCBwcGYgXCIuJWFcIiBsb25naWRlbnQgbVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggKGFzc2lnbiwgcmVtX2FyZ3MpIHdpdGhcbiAgICAgICAgICB8IGZhbHNlLCBbXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoIHBhdGhfcHJlZml4XG4gICAgICAgICAgICAgICAgbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCB0cnVlLCBbIHYgXSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFslYSVhJXMlYSVzQCA8LUA7PDEgMj4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aFxuICAgICAgICAgICAgICAgIHBhdGhfcHJlZml4IGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodFxuICAgICAgICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSB2O1xuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChpZCwgTGlzdC5tYXAgc25kIGFyZ3MpIHdpdGhcbiAgICAgICAgfCBMaWRlbnQgXCIhXCIsIFsgZSBdIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92PiElYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGU7XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIHwgTGRvdCAocGF0aCwgKChcImdldFwiIHwgXCJzZXRcIikgYXMgZnVuYykpLCBhIDo6IG90aGVyX2FyZ3MgLT4gKFxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGZ1bmMgPSBcInNldFwiIGluXG4gICAgICAgICAgICBsZXQgcHJpbnQgPSBwcmludF9pbmRleG9wIGEgTm9uZSBhc3NpZ24gaW5cbiAgICAgICAgICAgIG1hdGNoIChwYXRoLCBvdGhlcl9hcmdzKSB3aXRoXG4gICAgICAgICAgICB8IExpZGVudCBcIkFycmF5XCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLihcIiBcIlwiIFwiKVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGlkZW50IFwiU3RyaW5nXCIsIGkgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLltcIiBcIlwiIFwiXVwiIChleHByZXNzaW9uIGN0eHQpIFsgaSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTFcIiksIGkxIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTEgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkyXCIpLCBpMSA6OiBpMiA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMiBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTNcIiksIGkxIDo6IGkyIDo6IGkzIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyOyBpMyBdIHJlc3RcbiAgICAgICAgICAgIHwgKCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkdlbmFycmF5XCIpLFxuICAgICAgICAgICAgICAgIHsgcGV4cF9kZXNjID0gUGV4cF9hcnJheSBpbmRleGVzOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IDo6IHJlc3RcbiAgICAgICAgICAgICAgKSAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgaW5kZXhlcyByZXN0XG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIHwgKExpZGVudCBzIHwgTGRvdCAoXywgcykpLCBhIDo6IGkgOjogcmVzdCB3aGVuIGZpcnN0X2lzICcuJyBzIC0+XG4gICAgICAgICAgICAoKiBleHRyYWN0IG9wZXJhdG9yOlxuICAgICAgICAgICAgICAgYXNzaWdubWVudCBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXQgXiBcIjwtXCJdLFxuICAgICAgICAgICAgICAgYWNjZXNzIG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldF0gZGlyZWN0bHlcbiAgICAgICAgICAgICopXG4gICAgICAgICAgICBsZXQgbXVsdGlfaW5kaWNlcyA9IFN0cmluZy5jb250YWlucyBzICc7JyBpblxuICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICBtYXRjaCBpLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9hcnJheSBsIHdoZW4gbXVsdGlfaW5kaWNlcyAtPiBsXG4gICAgICAgICAgICAgIHwgXyAtPiBbIGkgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBsYXN0X2lzICctJyBzIGluXG4gICAgICAgICAgICBsZXQga2luZCA9XG4gICAgICAgICAgICAgICgqIGV4dHJhY3QgdGhlIHJpZ2h0IGVuZCBicmFja2V0ICopXG4gICAgICAgICAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGFzc2lnbiB0aGVuIHMuW24gLSAzXSBlbHNlIHMuW24gLSAxXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0LCByaWdodCA9XG4gICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgICB8ICcpJyAtPiAoJygnLCBcIilcIilcbiAgICAgICAgICAgICAgfCAnXScgLT4gKCdbJywgXCJdXCIpXG4gICAgICAgICAgICAgIHwgJ30nIC0+ICgneycsIFwifVwiKVxuICAgICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBhdGhfcHJlZml4ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaWQgd2l0aCBMZG90IChtLCBfKSAtPiBTb21lIG0gfCBfIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCA9IFN0cmluZy5zdWIgcyAwICgxICsgU3RyaW5nLmluZGV4IHMgbGVmdCkgaW5cbiAgICAgICAgICAgIHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBcIjtcIiByaWdodFxuICAgICAgICAgICAgICAoaWYgbXVsdGlfaW5kaWNlcyB0aGVuIGV4cHJlc3Npb24gY3R4dCBlbHNlIHNpbXBsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgIGkgcmVzdFxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmFuZCBleHByZXNzaW9uIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKUAsJWEpXCIgKGV4cHJlc3Npb24gY3R4dClcbiAgICAgIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGV4cF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2Z1bmN0aW9uIF8gfCBQZXhwX2Z1biBfIHwgUGV4cF9tYXRjaCBfIHwgUGV4cF90cnkgXyB8IFBleHBfc2VxdWVuY2UgX1xuICAgIHwgUGV4cF9uZXd0eXBlIF9cbiAgICAgIHdoZW4gY3R4dC5waXBlIHx8IGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgKFBleHBfaWZ0aGVuZWxzZSBfIHwgUGV4cF9zZXF1ZW5jZSBfKSB3aGVuIGN0eHQuaWZ0aGVuZWxzZSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9sZXQgXyB8IFBleHBfbGV0bW9kdWxlIF8gfCBQZXhwX29wZW4gXyB8IFBleHBfbGV0ZXhjZXB0aW9uIF9cbiAgICB8IFBleHBfbGV0b3AgX1xuICAgICAgd2hlbiBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfZnVuIChsLCBlMCwgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDslYS0+QDslYUBdXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZTAsIHApXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9uZXd0eXBlIChsaWQsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7KHR5cGVAOyVzKUA7LT5AOyVhQF1cIiBsaWQudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfZnVuY3Rpb24gbCAtPiBwcCBmIFwiQFs8aHY+ZnVuY3Rpb24lYUBdXCIgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX21hdGNoIChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2MD5AWzwyPm1hdGNoICVhQF1AIHdpdGhAXSVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX3RyeSAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8aHYyPnRyeUAgJWFAXUAgQFs8MD53aXRoJWFAXUBdXCJcbiAgICAgICAgICAoKiBcInRyeUA7QFs8Mj4lYUBdQFxcbndpdGhAXFxuJWFcIiopXG4gICAgICAgICAgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9sZXQgKHJmLCBsLCBlKSAtPlxuICAgICAgICAoKiBwcCBmIFwiQFs8Mj5sZXQgJWElYSBpbkA7PDEgLTI+JWFAXVwiXG4gICAgICAgICAgICgqbm8gaW5kZW50YXRpb24gaGVyZSwgYSBuZXcgbGluZSopICopXG4gICAgICAgICgqICAgcmVjX2ZsYWcgcmYgKilcbiAgICAgICAgcHAgZiBcIkBbPDI+JWEgaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ3MgcmVzZXRfY3R4dCkgKHJmLCBsKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXBwbHkgKGUsIGwpIC0+IChcbiAgICAgICAgaWYgbm90IChzdWdhcl9leHByIGN0eHQgZiB4KSB0aGVuXG4gICAgICAgICAgbWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIGUgd2l0aFxuICAgICAgICAgIHwgYEluZml4IHMgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbICgoTm9sYWJlbCwgXykgYXMgYXJnMSk7ICgoTm9sYWJlbCwgXykgYXMgYXJnMikgXSAtPlxuICAgICAgICAgICAgICAgICAgKCogRklYTUUgYXNzb2NpYXRpdml0eSBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gKilcbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQDslc0A7JWFAXVwiXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMSBzXG4gICAgICAgICAgICAgICAgICAgIChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dClcbiAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgYFByZWZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBMaXN0Lm1lbSBzIFsgXCJ+K1wiOyBcIn4tXCI7IFwifisuXCI7IFwifi0uXCIgXVxuICAgICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgKCogU2VlICM3MjAwOiBhdm9pZCB0dXJuaW5nICh+LSAxKSBpbnRvICgtIDEpIHdoaWNoIGlzXG4gICAgICAgICAgICAgICAgICAgICBwYXJzZWQgYXMgYW4gaW50IGxpdGVyYWwgKilcbiAgICAgICAgICAgICAgICAgIHwgWyAoXywgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0YW50IF8gfSkgXSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgICAgICAgICAgICAgIGVsc2Ugc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIChOb2xhYmVsLCB4KSBdIC0+IHBwIGYgXCJAWzwyPiVzQDslYUBdXCIgcyAoc2ltcGxlX2V4cHIgY3R4dCkgeFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCJcbiAgICAgICAgICAgICAgICAoZnVuIGYgKGUsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGV4cHJlc3Npb24yIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgKCogcmVzZXQgaGVyZSBvbmx5IGJlY2F1c2UgW2Z1bmN0aW9uLG1hdGNoLHRyeSxzZXF1ZW5jZV1cbiAgICAgICAgICAgICAgICAgICAgIGFyZSBsb3dlciBwcmlvcml0eSAqKSlcbiAgICAgICAgICAgICAgICAoZSwgbCkpXG4gICAgfCBQZXhwX2NvbnN0cnVjdCAobGksIFNvbWUgZW8pIHdoZW4gbm90IChpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkpXG4gICAgICAtPiAoXG4gICAgICAgICgqIE5vdCBlZmZpY2llbnQgRklYTUUqKVxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYGNvbnMgbHMgLT4gbGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgZiBscyB+c2VwOlwiQDs6OkA7XCJcbiAgICAgICAgfCBgbm9ybWFsIC0+IHBwIGYgXCJAWzwyPiVhQDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfc2V0ZmllbGQgKGUxLCBsaSwgZTIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhQCA8LUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlMSBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIGUyXG4gICAgfCBQZXhwX2lmdGhlbmVsc2UgKGUxLCBlMiwgZW8pIC0+XG4gICAgICAgICgqIEA7QFs8Mj5lbHNlQCAlYUBdQF0gKilcbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPDI+aWZAICVhQF1AO0BbPDI+dGhlbkAgJWFAXSVhQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlID0gZXhwcmVzc2lvbiAodW5kZXJfaWZ0aGVuZWxzZSBjdHh0KSBpblxuICAgICAgICBwcCBmIGZtdCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTEgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUyXG4gICAgICAgICAgKGZ1biBmIGVvIC0+XG4gICAgICAgICAgICBtYXRjaCBlbyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCJAO0BbPDI+ZWxzZUA7JWFAXVwiIChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICgqIHBwIGYgXCIoKVwiICopKVxuICAgICAgICAgIGVvXG4gICAgfCBQZXhwX3NlcXVlbmNlIF8gLT5cbiAgICAgICAgbGV0IHJlYyBzZXF1ZW5jZV9oZWxwZXIgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9zZXF1ZW5jZSAoZTEsIGUyKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBzZXF1ZW5jZV9oZWxwZXIgKGUxIDo6IGFjYykgZTJcbiAgICAgICAgICB8IHYgLT4gTGlzdC5yZXYgKHYgOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbHN0ID0gc2VxdWVuY2VfaGVscGVyIFtdIHggaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2PiVhQF1cIiAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKSBsc3RcbiAgICB8IFBleHBfbmV3IGxpIC0+IHBwIGYgXCJAWzxob3YyPm5ld0AgJWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2V0aW5zdHZhciAocywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAIDwtQCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9vdmVycmlkZSBsIC0+XG4gICAgICAgICgqIEZJWE1FICopXG4gICAgICAgIGxldCBzdHJpbmdfeF9leHByZXNzaW9uIGYgKHMsIGUpID1cbiAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ezwlYT59QF1cIiAobGlzdCBzdHJpbmdfeF9leHByZXNzaW9uIH5zZXA6XCI7XCIpIGxcbiAgICB8IFBleHBfbGV0bW9kdWxlIChzLCBtZSwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBtb2R1bGVAICVzQCA9QCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV9leHByIHJlc2V0X2N0eHQpIG1lIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChjZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bGV0QCBleGNlcHRpb25AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgICAgICAgIGNkIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfYXNzZXJ0IGUgLT4gcHAgZiBcIkBbPGhvdjI+YXNzZXJ0QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfbGF6eSBlIC0+IHBwIGYgXCJAWzxob3YyPmxhenlAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICgqIFBleHBfcG9seTogaW1wb3NzaWJsZSBidXQgd2Ugc2hvdWxkIHByaW50IGl0IGFueXdheSwgcmF0aGVyIHRoYW5cbiAgICAgICBhc3NlcnQgZmFsc2UgKilcbiAgICB8IFBleHBfcG9seSAoZSwgTm9uZSkgLT4gcHAgZiBcIkBbPGhvdjI+IXBvbHkhQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICB8IFBleHBfcG9seSAoZSwgU29tZSBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCFwb2x5IUAgJWFAIDogJWEpQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG8ucG9wZW5fZXhwciAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIFNvbWUgZW8pIC0+IHBwIGYgXCJAWzwyPmAlc0A7JWFAXVwiIGwgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgfCBQZXhwX2xldG9wIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPkBbPHY+JWFALCVhQF0gaW5AOzwxIC0yPiVhQF1cIiAoYmluZGluZ19vcCBjdHh0KSBsZXRfXG4gICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmdfb3AgY3R4dCkpXG4gICAgICAgICAgYW5kcyAoZXhwcmVzc2lvbiBjdHh0KSBib2R5XG4gICAgfCBQZXhwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBwcCBmIFwiLlwiXG4gICAgfCBfIC0+IGV4cHJlc3Npb24xIGN0eHQgZiB4XG5cbmFuZCBleHByZXNzaW9uMSBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9vYmplY3QgY3MgLT4gcHAgZiBcIiVhXCIgKGNsYXNzX3N0cnVjdHVyZSBjdHh0KSBjc1xuICAgIHwgXyAtPiBleHByZXNzaW9uMiBjdHh0IGYgeFxuKCogdXNlZCBpbiBbUGV4cF9hcHBseV0gKilcblxuYW5kIGV4cHJlc3Npb24yIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2ZpZWxkIChlLCBsaSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEuJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBleHBfc2VuZCAoZSwgcykgLT4gcHAgZiBcIkBbPGhvdjI+JWEjJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlIHMudHh0XG4gICAgfCBfIC0+IHNpbXBsZV9leHByIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgXyB3aGVuIGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSAtPiAoXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgbmlsIC0+IHBwIGYgXCJbXVwiXG4gICAgICAgIHwgYHR1cGxlIC0+IHBwIGYgXCIoKVwiXG4gICAgICAgIHwgYGxpc3QgeHMgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxodjA+WyVhXUBdXCJcbiAgICAgICAgICAgICAgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICAgICAgeHNcbiAgICAgICAgfCBgc2ltcGxlIHggLT4gbG9uZ2lkZW50IGYgeFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9pZGVudCBsaSAtPiBsb25naWRlbnRfbG9jIGYgbGlcbiAgICAoKiAobWF0Y2ggdmlld19maXhpdHlfb2ZfZXhwIHggd2l0aCAqKVxuICAgICgqIHxgTm9ybWFsIC0+IGxvbmdpZGVudF9sb2MgZiBsaSAqKVxuICAgICgqIHwgYFByZWZpeCBfIHwgYEluZml4IF8gLT4gcHAgZiBcIiggJWEgKVwiIGxvbmdpZGVudF9sb2MgbGkpICopXG4gICAgfCBQZXhwX2NvbnN0YW50IGMgLT4gY29uc3RhbnQgZiBjXG4gICAgfCBQZXhwX3BhY2sgbWUgLT4gcHAgZiBcIihtb2R1bGVAOyVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUGV4cF90dXBsZSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYSlAXVwiIChsaXN0IChzaW1wbGVfZXhwciBjdHh0KSB+c2VwOlwiLEA7XCIpIGxcbiAgICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEgOiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBleHBfY29lcmNlIChlLCBjdG8xLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSVhIDo+ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICAob3B0aW9uIChjb3JlX3R5cGUgY3R4dCkgfmZpcnN0OlwiIDogXCIgfmxhc3Q6XCIgXCIpXG4gICAgICAgICAgY3RvMVxuICAgICAgICAgICgqIG5vIHNlcCBoaW50KikgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgIGN0XG4gICAgfCBQZXhwX3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQZXhwX3JlY29yZCAobCwgZW8pIC0+XG4gICAgICAgIGxldCBsb25naWRlbnRfeF9leHByZXNzaW9uIGYgKGxpLCBlKSA9XG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQ7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfVxuICAgICAgICAgICAgd2hlbiBsaS50eHQgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPntAOyVhJWFAXUA7fUBdXCIgKCogXCJAWzxob3YyPnslYSVhfUBdXCIgKilcbiAgICAgICAgICAob3B0aW9uIH5sYXN0OlwiIHdpdGhAO1wiIChzaW1wbGVfZXhwciBjdHh0KSlcbiAgICAgICAgICBlb1xuICAgICAgICAgIChsaXN0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gfnNlcDpcIjtAO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfYXJyYXkgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzwyPlt8JWF8XUBdQF1cIlxuICAgICAgICAgIChsaXN0IChzaW1wbGVfZXhwciAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX3doaWxlIChlMSwgZTIpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID0gXCJAWzwyPndoaWxlQDslYUA7ZG9AOyVhQDtkb25lQF1cIiBpblxuICAgICAgICBwcCBmIGZtdCAoZXhwcmVzc2lvbiBjdHh0KSBlMSAoZXhwcmVzc2lvbiBjdHh0KSBlMlxuICAgIHwgUGV4cF9mb3IgKHMsIGUxLCBlMiwgZGYsIGUzKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8aHYyPkBbPDI+Zm9yICVhID1AOyVhQDslYSVhQDtkb0BdQDslYUBdQDtkb25lQF1cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb24gY3R4dCBpblxuICAgICAgICBwcCBmIGZtdCAocGF0dGVybiBjdHh0KSBzIGV4cHJlc3Npb24gZTEgZGlyZWN0aW9uX2ZsYWcgZGYgZXhwcmVzc2lvbiBlMlxuICAgICAgICAgIGV4cHJlc3Npb24gZTNcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiBjdHh0KSBmIHhcblxuYW5kIGF0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGF0dHJpYnV0ZSBjdHh0IGYpIGxcbmFuZCBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGwgPSBMaXN0Lml0ZXIgKGl0ZW1fYXR0cmlidXRlIGN0eHQgZikgbFxuXG5hbmQgYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBpdGVtX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQEBAJXNAICVhXUBdXCIgYS5hdHRyX25hbWUudHh0IChwYXlsb2FkIGN0eHQpIGEuYXR0cl9wYXlsb2FkXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IGYgeCA9XG4gICgqIG5vdGU6IHZhbHVlX2Rlc2NyaXB0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgICAgICAgIGJ1dCB0aGV5J3JlIGFscmVhZHkgcHJpbnRlZCBieSB0aGUgY2FsbGVycyB0aGlzIG1ldGhvZCAqKVxuICBwcCBmIFwiQFs8aG92Mj4lYSVhQF1cIiAoY29yZV90eXBlIGN0eHQpIHgucHZhbF90eXBlXG4gICAgKGZ1biBmIHggLT5cbiAgICAgIGlmIHgucHZhbF9wcmltIDw+IFtdIHRoZW5cbiAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobGlzdCBjb25zdGFudF9zdHJpbmcpIHgucHZhbF9wcmltKVxuICAgIHhcblxuYW5kIGV4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID0gcHAgZiBcIkBbPDI+WyUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgaXRlbV9leHRlbnNpb24gY3R4dCBmIChzLCBlKSA9XG4gIHBwIGYgXCJAWzwyPlslJSUlJXNAICVhXUBdXCIgcy50eHQgKHBheWxvYWQgY3R4dCkgZVxuXG5hbmQgZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgcHAgZiBcIkBbPGhvdjI+ZXhjZXB0aW9uQCAlYUBdJWFcIlxuICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICB4LnB0eWV4bl9jb25zdHJ1Y3RvciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXhuX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdGZfZGVzYyB3aXRoXG4gIHwgUGN0Zl9pbmhlcml0IGN0IC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlYUBdJWFcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl92YWwgKHMsIG1mLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgQCAlYSVhJXNAIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9tZXRob2QgKHMsIHBmLCB2ZiwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgJWEgJWElcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50QCAlYUAgPUAgJWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGN0Zl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGN0Zl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgY3R4dCBmIHsgcGNzaWdfc2VsZiA9IGN0OyBwY3NpZ19maWVsZHMgPSBsOyBfIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3RAWzwxPiVhQF1AICVhQF1AIGVuZEBdXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FueTsgcHR5cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPiAoKVxuICAgICAgfCBjdCAtPiBwcCBmIFwiICglYSlcIiAoY29yZV90eXBlIGN0eHQpIGN0KVxuICAgIGN0XG4gICAgKGxpc3QgKGNsYXNzX3R5cGVfZmllbGQgY3R4dCkgfnNlcDpcIkA7XCIpXG4gICAgbFxuXG4oKiBjYWxsIFtjbGFzc19zaWduYXR1cmVdIGNhbGxlZCBieSBbY2xhc3Nfc2lnbmF0dXJlXSAqKVxuYW5kIGNsYXNzX3R5cGUgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjdHlfZGVzYyB3aXRoXG4gIHwgUGN0eV9zaWduYXR1cmUgY3MgLT5cbiAgICAgIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgY3M7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgIHBwIGYgXCIlYSVhJWFcIlxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9hcnJvdyAobCwgY28sIGNsKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAOy0+QDslYUBdXCIgKCogRklYTUUgcmVtb3ZlIHBhcmVucyBsYXRlciAqKVxuICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjbykgKGNsYXNzX3R5cGUgY3R4dCkgY2xcbiAgfCBQY3R5X2V4dGVuc2lvbiBlIC0+XG4gICAgICBleHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBhdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfb3BlbiAobywgZSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX3R5cGUgY3R4dCkgZVxuXG4oKiBbY2xhc3MgdHlwZSBhID0gb2JqZWN0IGVuZF0gKilcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGwgPVxuICBsZXQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBrd2QgZiB4ID1cbiAgICBsZXQgeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9ID0geCBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0AgPUAgJWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiKVxuICAgICAgICB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICB4c1xuXG5hbmQgY2xhc3NfZmllbGQgY3R4dCBmIHggPVxuICBtYXRjaCB4LnBjZl9kZXNjIHdpdGhcbiAgfCBQY2ZfaW5oZXJpdCAob3ZmLCBjZSwgc28pIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbmhlcml0QCAlc0AgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgICAgICAoZnVuIGYgc28gLT5cbiAgICAgICAgICBtYXRjaCBzbyB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHMgLT4gcHAgZiBcIkAgYXMgJXNcIiBzLnR4dClcbiAgICAgICAgc28gKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCVzICVhJXMgPUA7JWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kIHZpcnR1YWwgJWEgJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX3ZhbCAocywgbWYsIENma192aXJ0dWFsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIHZpcnR1YWwgJWElcyA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgbGV0IGJpbmQgZSA9XG4gICAgICAgIGJpbmRpbmcgY3R4dCBmXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBzO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBlO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QlcyAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIHByaXZhdGVfZmxhZyBwZlxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBTb21lIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJXMgOkA7JWE9QDslYVwiIHMudHh0IChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIE5vbmUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIGJpbmQgZVxuICAgICAgICAgIHwgXyAtPiBiaW5kIGUpXG4gICAgICAgIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludCAlYSA9QDslYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgZSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5pdGlhbGl6ZXJAICVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjZl9leHRlbnNpb24gZSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIHgucGNmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgeyBwY3N0cl9zZWxmID0gcDsgcGNzdHJfZmllbGRzID0gbCB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0JWFAOyVhQF1AO2VuZEBdXCJcbiAgICAoZnVuIGYgcCAtPlxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgXyAtPiBwcCBmIFwiICVhXCIgKHBhdHRlcm4gY3R4dCkgcFxuICAgICAgfCBfIC0+IHBwIGYgXCIgKCVhKVwiIChwYXR0ZXJuIGN0eHQpIHApXG4gICAgcFxuICAgIChsaXN0IChjbGFzc19maWVsZCBjdHh0KSlcbiAgICBsXG5cbmFuZCBjbGFzc19leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wY2xfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY2xfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wY2xfZGVzYyB3aXRoXG4gICAgfCBQY2xfc3RydWN0dXJlIGNzIC0+IGNsYXNzX3N0cnVjdHVyZSBjdHh0IGYgY3NcbiAgICB8IFBjbF9mdW4gKGwsIGVvLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiZnVuQCAlYUAgLT5AICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobCwgZW8sIHApIChjbGFzc19leHByIGN0eHQpIGVcbiAgICB8IFBjbF9sZXQgKHJmLCBsLCBjZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQCBpbkAgJWFcIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKSAoY2xhc3NfZXhwciBjdHh0KSBjZVxuICAgIHwgUGNsX2FwcGx5IChjZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIigoJWEpQCAlYSlcIlxuICAgICAgICAgICgqIENmOiAjNzIwMCAqKSAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgICAgIGNlXG4gICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICBsXG4gICAgfCBQY2xfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBpZiBsIDw+IFtdIHRoZW4gcHAgZiBcIlslYV1AIFwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIikgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBjbF9jb25zdHJhaW50IChjZSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWFAIDpAICVhKVwiIChjbGFzc19leHByIGN0eHQpIGNlIChjbGFzc190eXBlIGN0eHQpIGN0XG4gICAgfCBQY2xfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQY2xfb3BlbiAobywgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgICAgbG9uZ2lkZW50X2xvYyBvLnBvcGVuX2V4cHIgKGNsYXNzX2V4cHIgY3R4dCkgZVxuXG5hbmQgbW9kdWxlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtdHlfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9mdW5jdG9yIChVbml0LCBtdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3IgKCkgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChzLCBtdDEpLCBtdDIpIC0+IChcbiAgICAgICAgbWF0Y2ggcy50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXQxXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPmZ1bmN0b3JAICglc0AgOkAgJWEpQCAtPkAgJWFAXVwiIG5hbWVcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MSAobW9kdWxlX3R5cGUgY3R4dCkgbXQyKVxuICAgIHwgUG10eV93aXRoIChtdCwgW10pIC0+IG1vZHVsZV90eXBlIGN0eHQgZiBtdFxuICAgIHwgUG10eV93aXRoIChtdCwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIHdpdGhAICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10XG4gICAgICAgICAgKGxpc3QgKHdpdGhfY29uc3RyYWludCBjdHh0KSB+c2VwOlwiQCBhbmRAIFwiKVxuICAgICAgICAgIGxcbiAgICB8IF8gLT4gbW9kdWxlX3R5cGUxIGN0eHQgZiB4XG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQd2l0aF90eXBlIChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2R1bGUgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGUgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcbiAgfCBQd2l0aF90eXBlc3Vic3QgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhIDo9QCAlYVwiXG4gICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgIGxzIGxvbmdpZGVudF9sb2MgbGkgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgdGRcbiAgfCBQd2l0aF9tb2RzdWJzdCAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSBsb25naWRlbnRfbG9jIGxpMlxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIChtb2R1bGVfdHlwZSBjdHh0KSBtdHlcblxuYW5kIG1vZHVsZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gbW9kdWxlX3R5cGUgY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9hbGlhcyBsaSAtPiBwcCBmIFwiKG1vZHVsZSAlYSlcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYyPnNpZ0AgJWFAXUAgZW5kQF1cIiAoKiBcIkBbPGhvdj5zaWdAICVhQCBlbmRAXVwiICopXG4gICAgICAgICAgKGxpc3QgKHNpZ25hdHVyZV9pdGVtIGN0eHQpKVxuICAgICAgICAgIHNcbiAgICAgICAgKCogRklYTUUgd3JvbmcgaW5kZW50YXRpb24qKVxuICAgIHwgUG10eV90eXBlb2YgbWUgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCBvZkAgJWFAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG10eV9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAobW9kdWxlX3R5cGUgY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHNpZ25hdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gY3R4dCBmIHggOiB1bml0ID1cbiAgbWF0Y2ggeC5wc2lnX2Rlc2Mgd2l0aFxuICB8IFBzaWdfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc2lnX3R5cGVzdWJzdCBsIC0+XG4gICAgICAoKiBQc2lnX3R5cGVzdWJzdCBpcyBuZXZlciByZWN1cnNpdmUsIGJ1dCB3ZSBzcGVjaWZ5IFtSZWN1cnNpdmVdIGhlcmUgdG9cbiAgICAgICAgIGF2b2lkIHByaW50aW5nIGEgW25vbnJlY10gZmxhZywgd2hpY2ggd291bGQgYmUgcmVqZWN0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICopXG4gICAgICB0eXBlX2RlZl9saXN0IGN0eHQgZiAoUmVjdXJzaXZlLCBmYWxzZSwgbClcbiAgfCBQc2lnX3ZhbHVlIHZkIC0+XG4gICAgICBsZXQgaW50cm8gPSBpZiB2ZC5wdmFsX3ByaW0gPSBbXSB0aGVuIFwidmFsXCIgZWxzZSBcImV4dGVybmFsXCIgaW5cbiAgICAgIHBwIGYgXCJAWzwyPiVzQCAlYUAgOkAgJWFAXSVhXCIgaW50cm8gcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzaWdfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzaWdfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc2lnX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGNsYXNzX2Rlc2NyaXB0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElc0A7OkA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZXNjcmlwdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzaWdfbW9kdWxlXG4gICAgICAoe1xuICAgICAgICAgcG1kX3R5cGUgPSB7IHBtdHlfZGVzYyA9IFBtdHlfYWxpYXMgYWxpYXM7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcG1kKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIGxvbmdpZGVudF9sb2MgYWxpYXMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHVsZSBwbWQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOkAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2RzdWJzdCBwbXMgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgOj1AICVhQF0lYVwiIHBtcy5wbXNfbmFtZS50eHQgbG9uZ2lkZW50X2xvY1xuICAgICAgICBwbXMucG1zX21hbmlmZXN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1zLnBtc19hdHRyaWJ1dGVzXG4gIHwgUHNpZ19vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5vcGVuJXNAICVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzaWdfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgLT5cbiAgICAgIGxldCBtZCA9XG4gICAgICAgIG1hdGNoIG1kIHdpdGggTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogYXN0IGludmFyaWFudCAqKSB8IFNvbWUgbXQgLT4gbXRcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzQCA6PUAgJWFAXSVhXCIgcy50eHQgKG1vZHVsZV90eXBlIGN0eHQpIG1kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc2lnX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc2lnX3JlY21vZHVsZSBkZWNscyAtPlxuICAgICAgbGV0IHJlYyBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgPyhmaXJzdCA9IHRydWUpIGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IHBtZCA6OiB0bCAtPlxuICAgICAgICAgICAgaWYgbm90IGZpcnN0IHRoZW5cbiAgICAgICAgICAgICAgcHAgZiBcIkAgQFs8aG92Mj5hbmRAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIH5maXJzdDpmYWxzZSB0bFxuICAgICAgaW5cbiAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiBkZWNsc1xuICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHNpZ19leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgbW9kdWxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBtb2RfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBtb2RfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wbW9kX2Rlc2Mgd2l0aFxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYyPnN0cnVjdEA7QFs8MD4lYUBdQDs8MSAtMj5lbmRAXVwiXG4gICAgICAgICAgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIH5zZXA6XCJAXFxuXCIpXG4gICAgICAgICAgc1xuICAgIHwgUG1vZF9jb25zdHJhaW50IChtZSwgbXQpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiglYUAgOkAgJWEpQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUgKG1vZHVsZV90eXBlIGN0eHQpIG10XG4gICAgfCBQbW9kX2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgbWUpIC0+IHBwIGYgXCJmdW5jdG9yICgpQDstPkA7JWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfZnVuY3RvciAoTmFtZWQgKHMsIG10KSwgbWUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5jdG9yQCAoJXNAIDpAICVhKUA7LT5AOyVhXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtb2RfYXBwbHkgKG1lMSwgbWUyKSAtPlxuICAgICAgICBwcCBmIFwiKCVhKSglYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUxIChtb2R1bGVfZXhwciBjdHh0KSBtZTJcbiAgICAgICAgKCogQ2Y6ICM3MjAwICopXG4gICAgfCBQbW9kX3VucGFjayBlIC0+IHBwIGYgXCIodmFsQCAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuXG5hbmQgc3RydWN0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHBheWxvYWQgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGUsIGF0dHJzKSB9IF0gLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBTdHIgeCAtPiBzdHJ1Y3R1cmUgY3R4dCBmIHhcbiAgfCBQVHlwIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIGNvcmVfdHlwZSBjdHh0IGYgeFxuICB8IFBTaWcgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgc2lnbmF0dXJlIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgTm9uZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4O1xuICAgICAgcHAgZiBcIiB3aGVuIFwiO1xuICAgICAgZXhwcmVzc2lvbiBjdHh0IGYgZVxuXG4oKiB0cmFuc2Zvcm0gW2YgPSBmdW4gZyBoIC0+IC4uXSB0byBbZiBnIGggPSAuLi4gXSBjb3VsZCBiZSBpbXByb3ZlZCAqKVxuYW5kIGJpbmRpbmcgY3R4dCBmIHsgcHZiX3BhdCA9IHA7IHB2Yl9leHByID0geDsgXyB9ID1cbiAgKCogLnB2Yl9hdHRyaWJ1dGVzIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciwgI2JpbmRpbmdzICopXG4gIGxldCByZWMgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBmIHggPVxuICAgIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9mdW4gKGxhYmVsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgICBpZiBsYWJlbCA9IE5vbGFiZWwgdGhlblxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsYWJlbCwgZW8sIHApIHBwX3ByaW50X3BleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgZVxuICAgICAgfCBQZXhwX25ld3R5cGUgKHN0ciwgZSkgLT5cbiAgICAgICAgICBwcCBmIFwiKHR5cGVAICVzKUAgJWFcIiBzdHIudHh0IHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZVxuICAgICAgfCBfIC0+IHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgaW5cbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB0eXZhcnMgaW5cbiAgbGV0IGlzX2Rlc3VnYXJlZF9nYWR0IHAgZSA9XG4gICAgbGV0IGdhZHRfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoYXJnc190eXZhcnMsIHJ0KSB9ICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgU29tZSAocGF0LCBhcmdzX3R5dmFycywgcnQpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyBnYWR0X2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIGdhZHRfZXhwICh0eXZhciA6OiB0eXZhcnMpIGVcbiAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgIFNvbWUgKExpc3QucmV2IHR5dmFycywgZSwgY3QpXG4gICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgbGV0IGdhZHRfZXhwID0gZ2FkdF9leHAgW10gZSBpblxuICAgIG1hdGNoIChnYWR0X3BhdHRlcm4sIGdhZHRfZXhwKSB3aXRoXG4gICAgfCBTb21lIChwLCBwdF90eXZhcnMsIHB0X2N0KSwgU29tZSAoZV90eXZhcnMsIGUsIGVfY3QpXG4gICAgICB3aGVuIHR5dmFyc19zdHIgcHRfdHl2YXJzID0gdHl2YXJzX3N0ciBlX3R5dmFycyAtPlxuICAgICAgICBsZXQgZXR5ID0gdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlbiBTb21lIChwLCBwdF90eXZhcnMsIGVfY3QsIGUpIGVsc2UgTm9uZVxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBtYXRjaCBwIHdpdGhcbiAgICB8IHtcbiAgICAgcHBhdF9kZXNjID1cbiAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICh7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwKSApO1xuICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgXztcbiAgICB9IC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcGF0IChjb3JlX3R5cGUgY3R4dCkgdHlwXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGVsc2VcbiAgICBtYXRjaCBpc19kZXN1Z2FyZWRfZ2FkdCBwIHggd2l0aFxuICAgIHwgU29tZSAocCwgW10sIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFNvbWUgKHAsIHR5dmFycywgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiB0eXBlQDslYS5AOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgKGxpc3QgcHBfcHJpbnRfc3RyaW5nIH5zZXA6XCJAO1wiKVxuICAgICAgICAgICh0eXZhcnNfc3RyIHR5dmFycykgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cmFpbnQgKHAsIHR5KTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPiAoXG4gICAgICAgICAgICAoKiBzcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCopXG4gICAgICAgICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICAgICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJWFAOzpAOyVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICAgICAgICAgIHR5IChleHByZXNzaW9uIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJWFAOzpAOyVhKUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIHBwX3ByaW50X3BleHBfZnVuY3Rpb24geFxuICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeClcblxuKCogW2luXSBpcyBub3QgcHJpbnRlZCAqKVxuYW5kIGJpbmRpbmdzIGN0eHQgZiAocmYsIGwpID1cbiAgbGV0IGJpbmRpbmcga3dkIHJmIGYgeCA9XG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYUBdJWFcIiBrd2QgcmVjX2ZsYWcgcmYgKGJpbmRpbmcgY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB2Yl9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgWyB4IF0gLT4gYmluZGluZyBcImxldFwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKGJpbmRpbmcgXCJsZXRcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZyBcImFuZFwiIE5vbnJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCBiaW5kaW5nX29wIGN0eHQgZiB4ID1cbiAgbWF0Y2ggKHgucGJvcF9wYXQsIHgucGJvcF9leHApIHdpdGhcbiAgfCAoIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBwdmFyOyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICB7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgZXZhcjsgXyB9O1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgXztcbiAgICAgIH0gKVxuICAgIHdoZW4gcHZhciA9IGV2YXIgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVzQF1cIiB4LnBib3Bfb3AudHh0IGV2YXJcbiAgfCBwYXQsIGV4cCAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJWFAOz1AOyVhQF1cIiB4LnBib3Bfb3AudHh0IChwYXR0ZXJuIGN0eHQpIHBhdFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBleHBcblxuYW5kIHN0cnVjdHVyZV9pdGVtIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wc3RyX2Rlc2Mgd2l0aFxuICB8IFBzdHJfZXZhbCAoZSwgYXR0cnMpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj47OyVhQF0lYVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfdHlwZSAoXywgW10pIC0+IGFzc2VydCBmYWxzZVxuICB8IFBzdHJfdHlwZSAocmYsIGwpIC0+IHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgdHJ1ZSwgbClcbiAgfCBQc3RyX3ZhbHVlIChyZiwgbCkgLT5cbiAgICAgICgqIHBwIGYgXCJAWzxob3YyPmxldCAlYSVhQF1cIiAgcmVjX2ZsYWcgcmYgYmluZGluZ3MgbCAqKVxuICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpXG4gIHwgUHN0cl90eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHN0cl9leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzdHJfbW9kdWxlIHggLT5cbiAgICAgIGxldCByZWMgbW9kdWxlX2hlbHBlciA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKGFyZ19vcHQsIG1lJyk7IHBtb2RfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIChtYXRjaCBhcmdfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgVW5pdCAtPiBwcCBmIFwiKClcIlxuICAgICAgICAgICAgfCBOYW1lZCAocywgbXQpIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglczolYSlcIlxuICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdCk7XG4gICAgICAgICAgICBtb2R1bGVfaGVscGVyIG1lJ1xuICAgICAgICB8IG1lIC0+IG1lXG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlICVzJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSB4LnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKGZ1biBmIG1lIC0+XG4gICAgICAgICAgbGV0IG1lID0gbW9kdWxlX2hlbHBlciBtZSBpblxuICAgICAgICAgIG1hdGNoIG1lIHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcG1vZF9kZXNjID1cbiAgICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgIChtZScsICh7IHBtdHlfZGVzYyA9IFBtdHlfaWRlbnQgXyB8IFBtdHlfc2lnbmF0dXJlIF87IF8gfSBhcyBtdCkpO1xuICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIgOkA7JWFAOz1AOyVhQDtcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpXG4gICAgICAgICAgICAgICAgbWUnXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCIgPUAgJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWUpXG4gICAgICAgIHgucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBtYl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9vcGVuIG9kIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5vcGVuJXNAOyVhQF0lYVwiXG4gICAgICAgIChvdmVycmlkZSBvZC5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl9jbGFzcyBsIC0+IChcbiAgICAgIGxldCBleHRyYWN0X2NsYXNzX2FyZ3MgY2wgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfZnVuIChsLCBlbywgcCwgY2wnKTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIGxvb3AgKChsLCBlbywgcCkgOjogYWNjKSBjbCdcbiAgICAgICAgICB8IGNsIC0+IChMaXN0LnJldiBhY2MsIGNsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXJncywgY2wgPSBsb29wIFtdIGNsIGluXG4gICAgICAgIGxldCBjb25zdHIsIGNsID1cbiAgICAgICAgICBtYXRjaCBjbCB3aXRoXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2NvbnN0cmFpbnQgKGNsJywgY3QpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgKFNvbWUgY3QsIGNsJylcbiAgICAgICAgICB8IF8gLT4gKE5vbmUsIGNsKVxuICAgICAgICBpblxuICAgICAgICAoYXJncywgY29uc3RyLCBjbClcbiAgICAgIGluXG4gICAgICBsZXQgY2xhc3NfY29uc3RyYWludCBmIGN0ID0gcHAgZiBcIjogQFslYUBdIFwiIChjbGFzc190eXBlIGN0eHQpIGN0IGluXG4gICAgICBsZXQgY2xhc3NfZGVjbGFyYXRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgbGV0IGFyZ3MsIGNvbnN0ciwgY2wgPSBleHRyYWN0X2NsYXNzX2FyZ3MgeC5wY2lfZXhwciBpblxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMgJWElYT1AOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dFxuICAgICAgICAgIChsaXN0IChsYWJlbF9leHAgY3R4dCkpXG4gICAgICAgICAgYXJncyAob3B0aW9uIGNsYXNzX2NvbnN0cmFpbnQpIGNvbnN0ciAoY2xhc3NfZXhwciBjdHh0KSBjbFxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2RlY2xhcmF0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHN0cl9jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHN0cl9wcmltaXRpdmUgdmQgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmV4dGVybmFsQCAlYUAgOkAgJWFAXSVhXCIgcHJvdGVjdF9pZGVudCB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0KSB2ZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHZkLnB2YWxfYXR0cmlidXRlc1xuICB8IFBzdHJfaW5jbHVkZSBpbmNsIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5pbmNsdWRlQCAlYUBdJWFcIiAobW9kdWxlX2V4cHIgY3R4dCkgaW5jbC5waW5jbF9tb2RcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBpbmNsLnBpbmNsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX3JlY21vZHVsZSBkZWNscyAtPiAoXG4gICAgICAoKiAzLjA3ICopXG4gICAgICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXM6JWFAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICB8IHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBkZWNscyB3aXRoXG4gICAgICB8ICh7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYilcbiAgICAgICAgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXM6JWFAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgcG1iIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUHN0cl9leHRlbnNpb24gKGUsIGEpIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgYVxuXG5hbmQgdHlwZV9wYXJhbSBjdHh0IGYgKGN0LCAoYSwgYikpID1cbiAgcHAgZiBcIiVzJXMlYVwiICh0eXBlX3ZhcmlhbmNlIGEpICh0eXBlX2luamVjdGl2aXR5IGIpIChjb3JlX3R5cGUgY3R4dCkgY3RcblxuYW5kIHR5cGVfcGFyYW1zIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCIlYSBcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixAO1wiKSBsXG5cbmFuZCB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIGV4cG9ydGVkLCBsKSA9XG4gIGxldCB0eXBlX2RlY2wga3dkIHJmIGYgeCA9XG4gICAgbGV0IGVxID1cbiAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0ICYmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gXCJcIlxuICAgICAgZWxzZSBpZiBleHBvcnRlZCB0aGVuIFwiID1cIlxuICAgICAgZWxzZSBcIiA6PVwiXG4gICAgaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXMlcyVhQF0lYVwiIGt3ZCBub25yZWNfZmxhZyByZiAodHlwZV9wYXJhbXMgY3R4dClcbiAgICAgIHgucHR5cGVfcGFyYW1zIHgucHR5cGVfbmFtZS50eHQgZXEgKHR5cGVfZGVjbGFyYXRpb24gY3R4dCkgeFxuICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gdHlwZV9kZWNsIFwidHlwZVwiIHJmIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCIgKHR5cGVfZGVjbCBcInR5cGVcIiByZikgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAodHlwZV9kZWNsIFwiYW5kXCIgUmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0IGYgbGJscyA9XG4gIGxldCB0eXBlX3JlY29yZF9maWVsZCBmIHBsZCA9XG4gICAgcHAgZiBcIkBbPDI+JWElczpAOyVhQDslYUBdXCIgbXV0YWJsZV9mbGFnIHBsZC5wbGRfbXV0YWJsZSBwbGQucGxkX25hbWUudHh0XG4gICAgICAoY29yZV90eXBlIGN0eHQpIHBsZC5wbGRfdHlwZSAoYXR0cmlidXRlcyBjdHh0KSBwbGQucGxkX2F0dHJpYnV0ZXNcbiAgaW5cbiAgcHAgZiBcIntAXFxuJWF9XCIgKGxpc3QgdHlwZV9yZWNvcmRfZmllbGQgfnNlcDpcIjtAXFxuXCIpIGxibHNcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICAoKiB0eXBlX2RlY2xhcmF0aW9uIGhhcyBhbiBhdHRyaWJ1dGUgZmllbGQsXG4gICAgIGJ1dCBpdCdzIGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kICopXG4gIGxldCBwcml2IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfcHJpdmF0ZSB3aXRoIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcIkA7cHJpdmF0ZVwiXG4gIGluXG4gIGxldCBtYW5pZmVzdCBmID1cbiAgICBtYXRjaCB4LnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPlxuICAgICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCB0aGVuXG4gICAgICAgICAgcHAgZiBcIiV0QDslYVwiIHByaXYgKGNvcmVfdHlwZSBjdHh0KSB5XG4gICAgICAgIGVsc2UgcHAgZiBcIkA7JWFcIiAoY29yZV90eXBlIGN0eHQpIHlcbiAgaW5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGYgcGNkID1cbiAgICBwcCBmIFwifEA7XCI7XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAoIHBjZC5wY2RfbmFtZS50eHQsXG4gICAgICAgIHBjZC5wY2RfdmFycyxcbiAgICAgICAgcGNkLnBjZF9hcmdzLFxuICAgICAgICBwY2QucGNkX3JlcyxcbiAgICAgICAgcGNkLnBjZF9hdHRyaWJ1dGVzIClcbiAgaW5cbiAgbGV0IHJlcHIgZiA9XG4gICAgbGV0IGludHJvIGYgPSBpZiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuICgpIGVsc2UgcHAgZiBcIkA7PVwiIGluXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgeHMgLT5cbiAgICAgICAgbGV0IHZhcmlhbnRzIGZtdCB4cyA9XG4gICAgICAgICAgaWYgeHMgPSBbXSB0aGVuIHBwIGZtdCBcIiB8XCJcbiAgICAgICAgICBlbHNlIHBwIGZtdCBcIkBcXG4lYVwiIChsaXN0IH5zZXA6XCJAXFxuXCIgY29uc3RydWN0b3JfZGVjbGFyYXRpb24pIHhzXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCIldCV0JWFcIiBpbnRybyBwcml2IHZhcmlhbnRzIHhzXG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgIHwgUHR5cGVfcmVjb3JkIGwgLT4gcHAgZiBcIiV0JXRAOyVhXCIgaW50cm8gcHJpdiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGxcbiAgICB8IFB0eXBlX29wZW4gLT4gcHAgZiBcIiV0JXRAOy4uXCIgaW50cm8gcHJpdlxuICBpblxuICBsZXQgY29uc3RyYWludHMgZiA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChjdDEsIGN0MiwgXykgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBjb25zdHJhaW50QCAlYUAgPUAgJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdDIpXG4gICAgICB4LnB0eXBlX2NzdHJzXG4gIGluXG4gIHBwIGYgXCIldCV0JXRcIiBtYW5pZmVzdCByZXByIGNvbnN0cmFpbnRzXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgeCA9XG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgZiB4ID1cbiAgICBwcCBmIFwiQFxcbnxAOyVhXCIgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KSB4XG4gIGluXG4gIHBwIGYgXCJAWzwyPnR5cGUgJWElYSArPSAlYUAgJWFAXSVhXCJcbiAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIHBwIGYgXCIlYUA7XCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsXCIpIGwpXG4gICAgeC5wdHlleHRfcGFyYW1zIGxvbmdpZGVudF9sb2MgeC5wdHlleHRfcGF0aCBwcml2YXRlX2ZsYWdcbiAgICB4LnB0eWV4dF9wcml2YXRlICgqIENmOiAjNzIwMCAqKVxuICAgIChsaXN0IH5zZXA6XCJcIiBleHRlbnNpb25fY29uc3RydWN0b3IpXG4gICAgeC5wdHlleHRfY29uc3RydWN0b3JzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleHRfYXR0cmlidXRlc1xuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmIChuYW1lLCB2YXJzLCBhcmdzLCByZXMsIGF0dHJzKSA9XG4gIGxldCBuYW1lID0gbWF0Y2ggbmFtZSB3aXRoIFwiOjpcIiAtPiBcIig6OilcIiB8IHMgLT4gcyBpblxuICBsZXQgcHBfdmFycyBmIHZzID1cbiAgICBtYXRjaCB2cyB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgdnMgLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIHZzXG4gIGluXG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcHAgZiBcIiVzJWFAOyVhXCIgbmFtZVxuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+ICgpXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPiBwcCBmIFwiQDtvZkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBTb21lIHIgLT5cbiAgICAgIHBwIGYgXCIlczpAOyVhJWFAOyVhXCIgbmFtZSBwcF92YXJzIHZhcnNcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiBjb3JlX3R5cGUxIGN0eHQgZiByXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCJcbiAgICAgICAgICAgICAgICAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIilcbiAgICAgICAgICAgICAgICBsIChjb3JlX3R5cGUxIGN0eHQpIHJcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7LT5AOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsIChjb3JlX3R5cGUxIGN0eHQpIHIpXG4gICAgICAgIGFyZ3MgKGF0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0IGYgeCA9XG4gICgqIENmOiAjNzIwMCAqKVxuICBtYXRjaCB4LnBleHRfa2luZCB3aXRoXG4gIHwgUGV4dF9kZWNsICh2LCBsLCByKSAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4dCBmXG4gICAgICAgICh4LnBleHRfbmFtZS50eHQsIHYsIGwsIHIsIHgucGV4dF9hdHRyaWJ1dGVzKVxuICB8IFBleHRfcmViaW5kIGxpIC0+XG4gICAgICBwcCBmIFwiJXNAOz1AOyVhJWFcIiB4LnBleHRfbmFtZS50eHQgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBleHRfYXR0cmlidXRlc1xuXG5hbmQgY2FzZV9saXN0IGN0eHQgZiBsIDogdW5pdCA9XG4gIGxldCBhdXggZiB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9ID1cbiAgICBwcCBmIFwiQDt8IEBbPDI+JWElYUA7LT5AOyVhQF1cIiAocGF0dGVybiBjdHh0KSBwY19saHNcbiAgICAgIChvcHRpb24gKGV4cHJlc3Npb24gY3R4dCkgfmZpcnN0OlwiQDt3aGVuQDtcIilcbiAgICAgIHBjX2d1YXJkXG4gICAgICAoZXhwcmVzc2lvbiAodW5kZXJfcGlwZSBjdHh0KSlcbiAgICAgIHBjX3Joc1xuICBpblxuICBsaXN0IGF1eCBmIGwgfnNlcDpcIlwiXG5cbmFuZCBsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCBmIChsLCBlKSA9XG4gIGxldCBzaW1wbGVfbmFtZSA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIFNvbWUgbFxuICAgIHwgXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT4gZXhwcmVzc2lvbjIgY3R4dCBmIGUgKCogbGV2ZWwgMiopXG4gIHwgT3B0aW9uYWwgc3RyIC0+XG4gICAgICBpZiBTb21lIHN0ciA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIj8lc1wiIHN0clxuICAgICAgZWxzZSBwcCBmIFwiPyVzOiVhXCIgc3RyIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gIHwgTGFiZWxsZWQgbGJsIC0+XG4gICAgICBpZiBTb21lIGxibCA9IHNpbXBsZV9uYW1lIHRoZW4gcHAgZiBcIn4lc1wiIGxibFxuICAgICAgZWxzZSBwcCBmIFwifiVzOiVhXCIgbGJsIChzaW1wbGVfZXhwciBjdHh0KSBlXG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgZiB4ID1cbiAgbWF0Y2ggeC5wZGlyYV9kZXNjIHdpdGhcbiAgfCBQZGlyX3N0cmluZyBzIC0+IHBwIGYgXCJAICVTXCIgc1xuICB8IFBkaXJfaW50IChuLCBOb25lKSAtPiBwcCBmIFwiQCAlc1wiIG5cbiAgfCBQZGlyX2ludCAobiwgU29tZSBtKSAtPiBwcCBmIFwiQCAlcyVjXCIgbiBtXG4gIHwgUGRpcl9pZGVudCBsaSAtPiBwcCBmIFwiQCAlYVwiIGxvbmdpZGVudCBsaVxuICB8IFBkaXJfYm9vbCBiIC0+IHBwIGYgXCJAICVzXCIgKHN0cmluZ19vZl9ib29sIGIpXG5cbmxldCB0b3BsZXZlbF9waHJhc2UgZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUHRvcF9kZWYgcyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgKHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHQpKSBzXG4gICgqIHBwX29wZW5faHZib3ggZiAwOyAqKVxuICAoKiBwcF9wcmludF9saXN0IHN0cnVjdHVyZV9pdGVtIGYgcyA7ICopXG4gICgqIHBwX2Nsb3NlX2JveCBmICgpOyAqKVxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IE5vbmU7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQF1cIiBwZGlyX25hbWUudHh0XG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gU29tZSBwZGlyX2FyZzsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAICVhQF1cIiBwZGlyX25hbWUudHh0IGRpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZ1xuXG5sZXQgZXhwcmVzc2lvbiBmIHggPSBwcCBmIFwiQFslYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgeFxuXG5sZXQgc3RyaW5nX29mX2V4cHJlc3Npb24geCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBleHByZXNzaW9uIGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgc3RyaW5nX29mX3N0cnVjdHVyZSB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIHN0cnVjdHVyZSByZXNldF9jdHh0IGYgeDtcbiAgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKVxuXG5sZXQgdG9wX3BocmFzZSBmIHggPVxuICBwcF9wcmludF9uZXdsaW5lIGYgKCk7XG4gIHRvcGxldmVsX3BocmFzZSBmIHg7XG4gIHBwIGYgXCI7O1wiO1xuICBwcF9wcmludF9uZXdsaW5lIGYgKClcblxubGV0IGNvcmVfdHlwZSA9IGNvcmVfdHlwZSByZXNldF9jdHh0XG5sZXQgcGF0dGVybiA9IHBhdHRlcm4gcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlID0gc3RydWN0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19leHByID0gY2xhc3NfZXhwciByZXNldF9jdHh0XG5sZXQgY2xhc3NfZmllbGQgPSBjbGFzc19maWVsZCByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZSA9IGNsYXNzX3R5cGUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3NpZ25hdHVyZSA9IGNsYXNzX3NpZ25hdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfdHlwZV9maWVsZCA9IGNsYXNzX3R5cGVfZmllbGQgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV9leHByID0gbW9kdWxlX2V4cHIgcmVzZXRfY3R4dFxubGV0IG1vZHVsZV90eXBlID0gbW9kdWxlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHNpZ25hdHVyZV9pdGVtID0gc2lnbmF0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZV9pdGVtID0gc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dFxubGV0IHR5cGVfZGVjbGFyYXRpb24gPSB0eXBlX2RlY2xhcmF0aW9uIHJlc2V0X2N0eHRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzM1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzM1wiXG5lbmRcbiIsIm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nIGxvYyAgKCoqIFtUIGFzICdhXS4gKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbWyBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s+IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAgICB7W2xldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLl19XG4gICAgICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAgIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1bUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9W3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fVtQdHlwX29iamVjdF19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX1bcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgICB8IFB0eXBfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgKCoqIFtNLihUKV0gKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG4gICAgICAgICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgICAgICAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV1cbiAgICAgICAgICAgIHJlcHJlc2VudHMgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtgQV0gICAgICAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVF0gICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdICBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiogezIgUGF0dGVybnN9ICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtDIFBdICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19XG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59W09wZW5dfVxuXG4gICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sXG4gICAgICAgICAgICAgIFsxTF0sIFsxbl0gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdXG4gICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mXG4gICAgICAgIGZ1bmN0aW9uX3BhcmFtIGxpc3QgKiB0eXBlX2NvbnN0cmFpbnQgb3B0aW9uICogZnVuY3Rpb25fYm9keVxuICAgICgqKiBbUGV4cF9mdW5jdGlvbiAoW1AxOyAuLi47IFBuXSwgQywgYm9keSldIHJlcHJlc2VudHMgYW55IGNvbnN0cnVjdFxuICAgICAgICBpbnZvbHZpbmcgW2Z1bl0gb3IgW2Z1bmN0aW9uXSwgaW5jbHVkaW5nOlxuICAgICAgICAtIFtmdW4gUDEgLi4uIFBuIC0+IEVdXG4gICAgICAgICAgd2hlbiBbYm9keSA9IFBmdW5jdGlvbl9ib2R5IEVdXG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gZnVuY3Rpb24gcDEgLT4gZTEgfCAuLi4gfCBwbSAtPiBlbV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2Nhc2VzIFsgcDEgLT4gZTE7IC4uLjsgcG0gLT4gZW0gXV1cbiAgICAgICAgW0NdIHJlcHJlc2VudHMgYSB0eXBlIGNvbnN0cmFpbnQgb3IgY29lcmNpb24gcGxhY2VkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGVcbiAgICAgICAgYXJyb3csIGUuZy4gW2Z1biBQMSAuLi4gUG4gOiB0eSAtPiAuLi5dIHdoZW4gW0MgPSBTb21lIChQY29uc3RyYWludCB0eSldLlxuICAgICAgICBBIGZ1bmN0aW9uIG11c3QgaGF2ZSBwYXJhbWV0ZXJzLiBbUGV4cF9mdW5jdGlvbiAocGFyYW1zLCBfLCBib2R5KV0gbXVzdFxuICAgICAgICBoYXZlIG5vbi1lbXB0eSBbcGFyYW1zXSBvciBhIFtQZnVuY3Rpb25fY2FzZXMgX10gYm9keS5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgICBbbGldIGNhbiBiZVxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBmdW5jdGlvbl9wYXJhbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbV9kZXNjICopID1cbiAgICB8IFBwYXJhbV92YWwgb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuXG4gICAgKCoqIFtQcGFyYW1fdmFsIChsYmwsIGV4cDAsIFApXSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXI6XG4gICAgICAgIC0gW1BdXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbfmw6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6UF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgLSBbP2w6KFAgPSBFMCldXG4gICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgTm90ZTogSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAqKVxuICAgIHwgUHBhcmFtX25ld3R5cGUgb2Ygc3RyaW5nIGxvY1xuICAgICgqKiBbUHBhcmFtX25ld3R5cGUgeF0gcmVwcmVzZW50cyB0aGUgcGFyYW1ldGVyIFsodHlwZSB4KV0uXG4gICAgICAgIFt4XSBjYXJyaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgaWRlbnRpZmllciwgd2hlcmVhcyB0aGUgW3BwYXJhbV9sb2NdXG4gICAgICAgIG9uIHRoZSBlbmNsb3NpbmcgW2Z1bmN0aW9uX3BhcmFtXSBub2RlIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgWyh0eXBlIHgpXVxuICAgICAgICBhcyBhIHdob2xlLlxuXG4gICAgICAgIE11bHRpcGxlIHBhcmFtZXRlcnMgWyh0eXBlIGEgYiBjKV0gYXJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlXG4gICAgICAgIFtQcGFyYW1fbmV3dHlwZV0gbm9kZXMsIGxldCdzIHNheTpcblxuICAgICAgICB7WyBbIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBhOyBwcGFyYW1fbG9jID0gbG9jMSB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBiOyBwcGFyYW1fbG9jID0gbG9jMiB9O1xuICAgICAgICAgICAgIHsgcHBhcmFtX2tpbmQgPSBQcGFyYW1fbmV3dHlwZSBjOyBwcGFyYW1fbG9jID0gbG9jMyB9O1xuICAgICAgICAgICBdXG4gICAgICAgIF19XG5cbiAgICAgICAgSGVyZSwgdGhlIGZpcnN0IGxvYyBbbG9jMV0gaXMgdGhlIGxvY2F0aW9uIG9mIFsodHlwZSBhIGIgYyldLCBhbmQgdGhlXG4gICAgICAgIHN1YnNlcXVlbnQgbG9jcyBbbG9jMl0gYW5kIFtsb2MzXSBhcmUgdGhlIHNhbWUgYXMgW2xvYzFdLCBleGNlcHQgbWFya2VkIGFzXG4gICAgICAgIGdob3N0IGxvY2F0aW9ucy4gVGhlIGxvY2F0aW9ucyBvbiBbYV0sIFtiXSwgW2NdLCBjb3JyZXNwb25kIHRvIHRoZVxuICAgICAgICB2YXJpYWJsZXMgW2FdLCBbYl0sIGFuZCBbY10gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgICopXG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdGlvbl9wYXJhbSAqKSA9XG4gICAgeyBwcGFyYW1fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBwYXJhbV9kZXNjIDogZnVuY3Rpb25fcGFyYW1fZGVzYztcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX2JvZHkgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX2JvZHkgKikgPVxuICAgIHwgUGZ1bmN0aW9uX2JvZHkgb2YgZXhwcmVzc2lvblxuICAgIHwgUGZ1bmN0aW9uX2Nhc2VzIG9mIGNhc2UgbGlzdCAqIExvY2F0aW9uLnQgKiBhdHRyaWJ1dGVzXG4gICAgKCoqIEluIFtQZnVuY3Rpb25fY2FzZXMgKF8sIGxvYywgYXR0cnMpXSwgdGhlIGxvY2F0aW9uIGV4dGVuZHMgZnJvbSB0aGVcbiAgICAgICAgc3RhcnQgb2YgdGhlIFtmdW5jdGlvbl0ga2V5d29yZCB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGNhc2UuIFRoZSBjb21waWxlclxuICAgICAgICB3aWxsIG9ubHkgdXNlIHR5cGVjaGVja2luZy1yZWxhdGVkIGF0dHJpYnV0ZXMgZnJvbSBbYXR0cnNdLCBlLmcuIGVuYWJsaW5nXG4gICAgICAgIG9yIGRpc2FibGluZyBhIHdhcm5pbmcuXG4gICAgKilcbiAgKCoqIFNlZSB0aGUgY29tbWVudCBvbiB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW5jdGlvbn1bUGV4cF9mdW5jdGlvbl19LiAqKVxuXG4gIGFuZCB0eXBlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQY29uc3RyYWludCBvZiBjb3JlX3R5cGVcbiAgICB8IFBjb2VyY2Ugb2YgY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG4gICAgICAtIFt2YWwgeDogVF0sXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICAgIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXVxuICAqKVxuXG4gICgqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKlxuICAgICBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sXG4gICAgIGZvciB2YXJpb3VzIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH1bcHR5cGVfa2luZF19XG4gICAgICAgICAgICAgYW5kIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9W3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuICAgLSBbdHlwZSB0XSAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDBdXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1bUHR5cGVfdmFyaWFudF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSAuLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufVtQdHlwZV9vcGVuXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19LFxuICAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1bcGxkX211dGFibGVdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX0uXG5cbiAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfdmFyczogc3RyaW5nIGxvYyBsaXN0O1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufVxuICAgICAgcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzIG9mOlxuICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQzogVDBdICAgICAgICAgICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0Mgb2Ygey4uLn1dICAgICAgICAgICAgIHdoZW4gW3JlcyA9IE5vbmVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgIC0gW0M6IHsuLi59IC0+IFQwXSAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLlxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXSAqKVxuICAgIH1cbiAgKCoqXG4gICAgIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgICAoW3R5cGUgdCArPSAuLi5dKS5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV1cbiAgICAgICAgICAgIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb24gY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcbiAgICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbjpcbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW05vbmVdLn19XG4gICAgICAgICAgICAtIFtDOiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiAtIFtjXVxuICAgICAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1QgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn1bcGNzaWdfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX1bUHR5cF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmdW4gUCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdLlxuICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLlxuICAgICAgICAgICAgICBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggWz9dXG4gICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn1bcGNzdHJfc2VsZl19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9W1BwYXRfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFXVxuICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRV1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF1cbiAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtTb21lIHhdXG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt2YWwgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsKFQpXX1cbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfSlcbiAgICAgICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgIC0gW1MgPSBNVF0sXG4gICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbixcbiAgICAgICB3aGVuIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX1bcG10ZF90eXBlXX0gaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAoc2lsZW5jZXMgdGhlIFwidXNlZCBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT10gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiBNLk5dXG4gICAgICAtIFtvcGVuIE0oTikuT11cbiAgICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtYXSAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICAgIHwgUG1vZF9hcHBseV91bml0IG9mIG1vZHVsZV9leHByICgqKiBbTUUxKCldICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHZjX2NvbnN0cmFpbnQgb2Yge1xuICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOnN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHR5cDpjb3JlX3R5cGU7XG4gICAgICB9XG4gICAgfCBQdmNfY29lcmNpb24gb2Yge2dyb3VuZDpjb3JlX3R5cGUgb3B0aW9uOyBjb2VyY2lvbjpjb3JlX3R5cGUgfVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfY29uc3RyYWludDogdmFsdWVfY29uc3RyYWludCBvcHRpb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZzogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2M6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMzRcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMzRcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMlxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA1LjAyXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCBta19naG9zdF9hdHRyIG5hbWUgPVxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyBMb2NhdGlvbi50eHQgPSBuYW1lOyBsb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbXTtcbiAgICBhdHRyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gIH1cblxubGV0IHJlYyBjb25jYXRfbGlzdF9saXQgbGVmdCByaWdodCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBvcGVuIEFzdF81MDIuQXN0dHlwZXMgaW5cbiAgbWF0Y2ggKGxlZnQucGV4cF9kZXNjLCByaWdodC5wZXhwX2Rlc2MpIHdpdGhcbiAgfCBfLCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGxlZnRcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pLCBfIC0+IHJpZ2h0XG4gIHwgKCBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgU29tZSAoeyBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IHRsIF07IF8gfSBhcyBhcmdfZXhwcikgKSxcbiAgICAgIF8gKSAtPlxuICAgICAge1xuICAgICAgICBsZWZ0IHdpdGhcbiAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IGxvYyB9LFxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgYXJnX2V4cHIgd2l0aFxuICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGhkOyBjb25jYXRfbGlzdF9saXQgdGwgcmlnaHQgXTtcbiAgICAgICAgICAgICAgICB9ICk7XG4gICAgICB9XG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgb2NhbWwucHB4LmNvbnRleHQncyBsb2FkX3BhdGhcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX3R1cGxlIFsgdmlzaWJsZTsgaGlkZGVuIF0gLT5cbiAgICAgIGxldCBtaWdyYXRpb25fYXR0ciA9XG4gICAgICAgIHtcbiAgICAgICAgICBhdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIjsgbG9jIH07XG4gICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgYXR0cl9wYXlsb2FkID1cbiAgICAgICAgICAgIFBTdHIgWyB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKSB9IF07XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwcicgPSBjb25jYXRfbGlzdF9saXQgdmlzaWJsZSBoaWRkZW4gaW5cbiAgICAgIHsgZXhwcicgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBtaWdyYXRpb25fYXR0ciA6OiBleHByLnBleHBfYXR0cmlidXRlcyB9XG4gIHwgXyAtPiBleHByXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDIuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAyLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChwYXJhbXMsIHRjb25zdHJhaW50LCBib2R5KSAtPlxuICAgICAgbGV0IGV4cHIgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBQZnVuY3Rpb25fYm9keSBleHByIC0+IChcbiAgICAgICAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUGV4cF9mdW5jdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgKCogV2UgZG9uJ3Qgd2FudCB0aGlzIFtmdW5dIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgZHVyaW5nXG4gICAgICAgICAgICAgICAgICAgdGhlIHJvdW5kLXRyaXAuIFRoaXMgYXR0cmlidXRlIHNpZ25hbHMgdGhhdCB0aGlzIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICByZWFsbHkgaXMgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiAqKVxuICAgICAgICAgICAgICAgIGxldCBhdHRyID0gbWtfZ2hvc3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBpblxuICAgICAgICAgICAgICAgIGxldCBleHByID0gY29weV9leHByZXNzaW9uIGV4cHIgaW5cbiAgICAgICAgICAgICAgICB7IGV4cHIgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICAgIHwgXyAtPiBjb3B5X2V4cHJlc3Npb24gZXhwcilcbiAgICAgICAgfCBQZnVuY3Rpb25fY2FzZXMgKGNhc2VzLCBsb2MsIGF0dHJzKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSBjYXNlcyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBsb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdHRycztcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIHRjb25zdHJhaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGV4cHJcbiAgICAgICAgfCBTb21lIChQY29uc3RyYWludCBjKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoZXhwciwgY29weV9jb3JlX3R5cGUgYyk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0gZXhwci5wZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIHwgU29tZSAoUGNvZXJjZSAoYzEsIGMyKSkgLT5cbiAgICAgICAgICAgIGxldCBjMSA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgYzEgaW5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwciwgYzEsIGNvcHlfY29yZV90eXBlIGMyKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgIChmdW4gcGFyYW0gZXhwciAtPlxuICAgICAgICAgICAgbWF0Y2ggcGFyYW0gd2l0aFxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2Rlc2MgPSBQcGFyYW1fdmFsIChsYmwsIGV4cDAsIHApO1xuICAgICAgICAgICAgIHBwYXJhbV9sb2M7XG4gICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGxibCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBleHAwLFxuICAgICAgICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwLFxuICAgICAgICAgICAgICAgICAgICAgIGV4cHIgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHwgeyBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHg7IHBwYXJhbV9sb2MgfSAtPlxuICAgICAgICAgICAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeCwgZXhwcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gcHBhcmFtX2xvYztcbiAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIHBhcmFtcyBleHByXG4gICAgICBpblxuICAgICAgZXhwci5wZXhwX2Rlc2NcbiAgICAgICgqIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MCkgKilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLmxldF87IEFzdF81MDIuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50ID1cbiAgICAgIE9wdGlvbi5tYXAgY29weV92YWx1ZV9jb25zdHJhaW50IHB2Yl9jb25zdHJhaW50O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV92YWx1ZV9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnRcbiAgICAgICAge1xuICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7XG4gICAgICAgICAgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwO1xuICAgICAgICB9XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb25cbiAgICAgICAge1xuICAgICAgICAgIGdyb3VuZCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgZ3JvdW5kO1xuICAgICAgICAgIGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNpb247XG4gICAgICAgIH1cblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9sb2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyBsb2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MS50eHQpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwibW9kdWxlIG9wZW4gaW4gdHlwZXNcIlxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMi5Bc3R0eXBlcy50eHQ7IEFzdF81MDIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDJcblxuKCoqIExvb2sgZm9yIGEgcGFydGljdWxhciBhdHRyaWJ1dGUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBsaXN0LiBBdHRyaWJ1dGVzIGFyZVxuICAgIHVzZWQgdG8gbWFrZSBjZXJ0YWluIG1pZ3JhdGlvbnMgcm91bmQtdHJpcC4gUmV0dXJucyBbTm9uZV0gaWYgdGhlIHNwZWNpZmllZFxuICAgIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuICopXG5sZXQgZXh0cmFjdF9hdHRyIG5hbWUgKGF0dHJzIDogQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcykgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IChOb25lLCBMaXN0LnJldiBhY2MpXG4gICAgfCB7IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IHsgdHh0OyBfIH07IGF0dHJfcGF5bG9hZDsgXyB9IDo6IHFcbiAgICAgIHdoZW4gdHh0ID0gbmFtZSAtPlxuICAgICAgICAoU29tZSBhdHRyX3BheWxvYWQsIExpc3QucmV2X2FwcGVuZCBhY2MgcSlcbiAgICB8IGhkIDo6IHRsIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgaW5cbiAgbG9vcCBbXSBhdHRyc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwciA9XG4gIGxldCBvcGVuIEFzdF81MDEuUGFyc2V0cmVlIGluXG4gIGxldCBwYXlsb2FkLCBvdGhlcl9hdHRycyA9XG4gICAgZXh0cmFjdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGhcIiBleHByLnBleHBfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgbG9jID0gZXhwci5wZXhwX2xvYyB9LCBOb25lKVxuICAgICAgaW5cbiAgICAgIGxldCBoaWRkZW4gPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2M7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgIGxldCB2aXNpYmxlID0gZXhwciBpblxuICAgICAge1xuICAgICAgICBleHByIHdpdGhcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gb3RoZXJfYXR0cnM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXTtcbiAgICAgIH1cbiAgfCBTb21lIChQU3RyIFsgeyBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGV4cHIsIFtdKTsgXyB9IF0pIC0+IGV4cHJcbiAgfCBTb21lIF8gLT4gaW52YWxpZF9hcmcgXCJJbnZhbGlkIHBweGxpYi5taWdyYXRpb24ubG9hZF9wYXRoIHBheWxvYWRcIlxuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChsaWRlbnRfbG9jLCBleHByKSAtPlxuICAgICAgbWF0Y2ggbGlkZW50X2xvYy5Bc3RfNTAxLkFzdHR5cGVzLnR4dCB3aXRoXG4gICAgICB8IExvbmdpZGVudC5MaWRlbnQgXCJsb2FkX3BhdGhcIiAtPlxuICAgICAgICAgIChsaWRlbnRfbG9jLCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByKVxuICAgICAgfCBfIC0+IChsaWRlbnRfbG9jLCBleHByKSlcbiAgICBmaWVsZHNcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBwYXlsb2FkID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0clxuICAgICAgW1xuICAgICAgICAoe1xuICAgICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICAgIFBzdHJfZXZhbFxuICAgICAgICAgICAgICAgKCh7IHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIH0gYXMgZXhwciksIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgfSBhcyBzdHJpKTtcbiAgICAgIF0gLT5cbiAgICAgIGxldCBuZXdfZmllbGRzID0gbWlncmF0ZV9wcHhfY29udGV4dF9maWVsZHMgZmllbGRzIGluXG4gICAgICBsZXQgbmV3X2V4cHIgPSB7IGV4cHIgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAobmV3X2ZpZWxkcywgTm9uZSkgfSBpblxuICAgICAgUFN0ciBbIHsgc3RyaSB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAobmV3X2V4cHIsIGF0dHJpYnV0ZXMpIH0gXVxuICB8IF8gLT4gcGF5bG9hZFxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbGV0IHBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uXG4gICAgICAgICggW10sXG4gICAgICAgICAgTm9uZSxcbiAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fY2FzZXMgKExpc3QubWFwIGNvcHlfY2FzZSB4MCwgbG9jLCBbXSkgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICBsZXQgdGFrZV9ib2R5IChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiBjYXNlX2xpc3QgLT5cbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlc1xuICAgICAgICAgICAgICAoIExpc3QubWFwIGNvcHlfY2FzZSBjYXNlX2xpc3QsXG4gICAgICAgICAgICAgICAgZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXMgKVxuICAgICAgICB8IF8gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHkgKGNvcHlfZXhwcmVzc2lvbiBlKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgdGFrZV9hcmd1bWVudHMgYWNjIChlIDogQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbikgPVxuICAgICAgICBpZiBlLnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgICAgICAgKCogVGhlIGF0dHJpYnV0ZSBsaXN0IGlzIG5vdCBlbXB0eSwgbm9uZSBvZiB0aGVzZSBub2RlcyBjb3VsZCBoYXZlXG4gICAgICAgICAgICAgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkb3dud2FyZCBtaWdyYXRpb24uIEV4Y2VwdCBmb3IgW1BleHBfZnVuXSwgZm9yXG4gICAgICAgICAgICAgd2hpY2ggd2UgYWRkIGEgZ2hvc3QgYXR0cmlidXRlIHRvIGhlbHAgdXMgcm91bmR0cmlwLiAqKVxuICAgICAgICAgIGxldCBfLCBhdHRycyA9XG4gICAgICAgICAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXCIgZS5wZXhwX2F0dHJpYnV0ZXNcbiAgICAgICAgICBpblxuICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9ib2R5XG4gICAgICAgICAgICAgIChjb3B5X2V4cHJlc3Npb24geyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfSkgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgYXJlIGxpa2VseSB0byBoYXZlIGJlZW4gc3ludGhldGl6ZWQgZHVyaW5nIHRoZVxuICAgICAgICAgICAgIGRvd253YXJkIG1pZ3JhdGlvbi4gKilcbiAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoYXJnX2xhYmVsLCBvcHRfZGVmYXVsdCwgcGF0LCBleHByKSAtPlxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh0LCBleHByKSAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gdC5sb2M7XG4gICAgICAgICAgICAgICAgICBwcGFyYW1fZGVzYyA9IFBwYXJhbV9uZXd0eXBlIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgICAgIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHAsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBUaGVzZSB0d28gZXhwcmVzc2lvbiBhcmUgcmVwcmVzZW50ZWQgdGhlIHNhbWUgb24gNS4xIGJ1dFxuICAgICAgICAgICAgICAgICBkaWZmZXJlbnRseSBvbiA1LjI6XG4gICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCA6IChfIC0+IGludCkgLT4gZnVuIHkgLT4geCt5XG4gICAgICAgICAgICAgICAgICAgbGV0IF8gPSBmdW4geCAtPiAoKGZ1biB5IC0+IHgreSkgOiBfIC0+IGludClcbiAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAgV2Ugbm9ybWFsaXplIHRoZSBzZWNvbmQgaW50byB0aGUgZmlyc3Qgd2hlbiBtaWdyYXRpbmcgdG8gNS4yLFxuICAgICAgICAgICAgICAgICBtYWtpbmcgdGhlIG1pZ3JhdGlvbiA1LjItPjUuMS0+NS4yIG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseVxuICAgICAgICAgICAgICAgICB3aXRob3V0IGNoYW5nZSBpbiBzZW1hbnRpY3MuICopXG4gICAgICAgICAgICAgIGxldCBjdCA9XG4gICAgICAgICAgICAgICAgU29tZSAoQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0cmFpbnQgKGNvcHlfY29yZV90eXBlIGN0KSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGFjYywgY3QsIHRha2VfYm9keSBleHApXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoZXhwLCBjMSwgYzIpIC0+XG4gICAgICAgICAgICAgICgqIFNhbWUgYXMgYWJvdmUsIG1pZ2h0IG5vdCByb3VuZHRyaXAgYnV0IGhvcGVmdWxseSBPSy4gKilcbiAgICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMVxuICAgICAgICAgICAgICBhbmQgYzIgPSBjb3B5X2NvcmVfdHlwZSBjMiBpblxuICAgICAgICAgICAgICAoYWNjLCBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29lcmNlIChjMSwgYzIpKSwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IF8gLT4gKGFjYywgTm9uZSwgdGFrZV9ib2R5IGUpXG4gICAgICBhbmQgdGFrZV9hcmd1bWVudHNfZnVuIGFjYyBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHIgPVxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBsZXQgcHBhcmFtX2Rlc2MgPVxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhcmFtX3ZhbFxuICAgICAgICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIGFyZ19sYWJlbCxcbiAgICAgICAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBvcHRfZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4gcGF0IClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIEJlc3QtZWZmb3J0IGxvY2F0aW9uLiAqKVxuICAgICAgICAgIHsgQXN0XzUwMi5QYXJzZXRyZWUucHBhcmFtX2xvYyA9IHBhdC5wcGF0X2xvYzsgcHBhcmFtX2Rlc2MgfSA6OiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgdGFrZV9hcmd1bWVudHMgYWNjIGV4cHJcbiAgICAgIGluXG4gICAgICAoKiBUaGUgYXJndW1lbnQgbGlzdCByZXR1cm5lZCBieSBbdGFrZV9hcmd1bWVudHNdIGlzIHJldmVyc2VkICopXG4gICAgICBsZXQgYXJnX2xpc3QsIHR5cGVfY29uc3RyYWludCwgYm9keSA9XG4gICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBbXSBhcmdfbGFiZWwgb3B0X2RlZmF1bHQgcGF0IGV4cHJcbiAgICAgIGluXG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0LnJldiBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FsaWFzXG4gICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IHgxOyBsb2MgPSB4MC5wdHlwX2xvYyB9KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPVxuICAgICAgKG1hdGNoIGF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLnBweC5jb250ZXh0XCIgLT5cbiAgICAgICAgICBjb3B5X3BheWxvYWQgKG1pZ3JhdGVfcHB4X2NvbnRleHRfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG4gICAgICB8IF8gLT4gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZCk7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDIuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCogVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIDQuMTQgYW5kIDUuMCBmcm9tIGEgUGFyc2V0cmVlIHBvaW50IG9mIHZpZXcgYXJlIHRoZSBtYWdpYyBudW1iZXJzICopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF80MTQuQXN0dHlwZXNcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5QYXJzZXRyZWVcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMlwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAxXG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLmxldF87IEFzdF81MDEuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICBsZXQgbWVyZ2VfbG9jIGxlZnQgcmlnaHQgPVxuICAgIExvY2F0aW9uLlxuICAgICAgeyBsb2Nfc3RhcnQgPSBsZWZ0LmxvY19zdGFydDsgbG9jX2VuZCA9IHJpZ2h0LmxvY19lbmQ7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgaW5cbiAgbGV0IGdob3N0X2xvYyBsb2MgPSB7IGxvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwID1cbiAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgZ2hvc3RfbG9jXG4gICAgICAgIChtZXJnZV9sb2MgcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICBpblxuICAgIHtcbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHBhdCwgdHlwKTtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgfVxuICBpblxuICBsZXQgcHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0IGFuZCBwdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICBsZXQgY29uc3RyYWluX3BhdCBwYXQgdHlwIGV4cHIgPVxuICAgIGxldCB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXAgaW5cbiAgICBsZXQgcHZiX3BhdCA9IGdob3N0X2NvbnN0cmFpbnQgcGF0IHR5cCBpblxuICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByID1cbiAgICBtYXRjaCAocHZiX2NvbnN0cmFpbnQsIHB2Yl9wYXQpIHdpdGhcbiAgICB8ICggU29tZVxuICAgICAgICAgIChQdmNfY29uc3RyYWludFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSBbXTtcbiAgICAgICAgICAgICAgdHlwID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiB0aGUgc3VnYXJpbmcgb2YgW2xldCB4OiB1bml2YXJzIC4gdHlwID0gZXhwIF0gd2FzIGRlc3VnYXJlZCB0b1xuICAgICAgICAgICBbbGV0ICh4OnVuaXZhcnMgLiB0eXApID0gZXhwXSBpbiA1LjAgd2hpY2ggZG9lc24ndCBmaXQgdGhlIGNhc2UgYmVsb3cgKilcbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgKCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0pLFxuICAgICAgICB7IEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gKSAtPlxuICAgICAgICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICAgICAgICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgICAgICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgICAgICAgbGV0IGRlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgICAgICAgICggTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgZmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICBsYmxfbHN0X29wdGlvbiApXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+XG4gICAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgICAgICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgICAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgdCAtPiBPaW5oZXJpdCAobG9vcCB0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPVxuICAgICAgICAgIG1hdGNoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBnaG9zdF9sb2MgdHlwLnB0eXBfbG9jXG4gICAgICAgICAgfCBfIDo6IF8gLT4gZ2hvc3RfbG9jIHBleHBfbG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eXBfcG9seSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwIHdpdGhcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgICAgICAgICAoIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyxcbiAgICAgICAgICAgICAgICAgIHZhcmlmeV9jb25zdHJ1Y3RvcnMgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHR5cCApO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgcHBhdF9sb2MgPVxuICAgICAgICAgIGdob3N0X2xvY1xuICAgICAgICAgICAgKG1lcmdlX2xvYyBwdmJfcGF0LkFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jXG4gICAgICAgICAgICAgICB0eXAuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0geyAoZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cF9wb2x5KSB3aXRoIHBwYXRfbG9jIH1cbiAgICAgICAgYW5kIHB2Yl9leHByID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBleHByIHZhciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAodmFyLCBleHByKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHZiX2V4cHIgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAocHZiX2V4cHIsIHR5cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAoTGlzdC5yZXYgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzKVxuICAgICAgICBpblxuICAgICAgICAocHZiX3BhdCwgcHZiX2V4cHIpXG4gICAgfCBTb21lIChQdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdOyB0eXAgfSksIF8gLT5cbiAgICAgICAgY29uc3RyYWluX3BhdCBwdmJfcGF0IHR5cCBwdmJfZXhwclxuICAgIHwgU29tZSAoUHZjX2NvZXJjaW9uIHsgZ3JvdW5kOyBjb2VyY2lvbiB9KSwgXyAtPlxuICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbiBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBnaG9zdF9sb2MgY29lcmNpb24ucHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHR5cCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29lcmNpb24gd2l0aFxuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoW10sIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwdmJfcGF0IHR5cCBpblxuICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gbWVyZ2VfbG9jIHB2Yl9wYXQucHBhdF9sb2MgcHZiX2V4cHIucGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHB2Yl9leHByLCBncm91bmQsIGNvZXJjaW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IF8gLT4gKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYyBpblxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBsb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxID0gY29weV9tb2R1bGVfZXhwciB4MSBpblxuICAgICAgbGV0IHgxID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IGxvYyA9IHsgeDEucG1vZF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lID1cbiAgICAgICAgICAgICAgICAgIHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IGxvYyB9O1xuICAgICAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IEFzdF81MDAuUGFyc2V0cmVlLlBTdHIgW107XG4gICAgICAgICAgICAgICAgYXR0cl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogeDEucG1vZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9XG4gICAgICAgIHwgXyAtPiB4MVxuICAgICAgaW5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCB4MCAtPlxuICAgICAgbGV0IGVtcHR5X3N0cnVjdCA9XG4gICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgZW1wdHlfc3RydWN0KVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDAuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDEuQXN0dHlwZXMudHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzUwMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAwLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAxLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAxLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAgKCogQ29waWVkIGFuZCBhZGFwdGVkIGZyb20gT0NhbWwgNS4wIEFzdF9oZWxwZXIgKilcbiAgbGV0IHZhcmlmeV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi5Mb2NhdGlvbi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+IFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgaW5cbiAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuICBpblxuICAoKiBNYXRjaCB0aGUgZm9ybSBvZiB0aGUgZXhwciBhbmQgcGF0dGVybiB0byBkZWNpZGUgdGhlIHZhbHVlIG9mXG4gICAgIFtwdmJfY29uc3RyYWludF0uIEFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgUFByaW50ZXIuICopXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdHl2YXJzIGluXG4gIGxldCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHAgZSA9XG4gICAgbGV0IHZhbHVlX3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gYXMgdHlfZXh0KSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIGFzc2VydCAobWF0Y2ggcnQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gZmFsc2UgfCBfIC0+IHRydWUpO1xuICAgICAgICAgIGxldCB0eSA9IG1hdGNoIGFyZ3NfdHl2YXJzIHdpdGggW10gLT4gcnQgfCBfIC0+IHR5X2V4dCBpblxuICAgICAgICAgIGBWYXIgKHBhdCwgYXJnc190eXZhcnMsIHJ0LCB0eSlcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocGF0LCBydCk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYE5vblZhciAocGF0LCBydClcbiAgICAgIHwgXyAtPiBgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYyB2YWx1ZV9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKHR5dmFyLCBlKTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICB2YWx1ZV9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgdmFsdWVfZXhwID0gdmFsdWVfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAodmFsdWVfcGF0dGVybiwgdmFsdWVfZXhwKSB3aXRoXG4gICAgfCBgVmFyIChwLCBwdF90eXZhcnMsIHB0X2N0LCBleHRlcm5fY3QpLCBTb21lIChlX3R5dmFycywgaW5uZXJfZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfY29uc3RydWN0b3JzIGVfdHl2YXJzIGVfY3QgaW5cbiAgICAgICAgaWYgZXR5ID0gcHRfY3QgdGhlblxuICAgICAgICAgIGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgcHRfdHl2YXJzLCBlX2N0LCBpbm5lcl9lKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogdGhlIGV4cHJlc3Npb24gY29uc3RyYWludCBhbmQgdGhlIHBhdHRlcm4gY29uc3RyYWludCxcbiAgICAgICAgICAgICBkb24ndCBtYXRjaCwgYnV0IHdlIHN0aWxsIGhhdmUgYSBQdHlwX3BvbHkgcGF0dGVybiBjb25zdHJhaW50IHRoYXRcbiAgICAgICAgICAgICBzaG91bGQgYmUgcmVzdWdhcmVkIHRvIGEgdmFsdWUgYmluZGluZyAqKVxuICAgICAgICAgIGBVbml2YXJzIChwLCBwdF90eXZhcnMsIGV4dGVybl9jdCwgZSlcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIF8gLT5cbiAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYE5vblZhciAocGF0LCBjdCksIF8gLT4gYE5vblZhciAocGF0LCBjdCwgZSlcbiAgICB8IF8gLT4gYE5vbmVcbiAgaW5cbiAgbGV0IHdpdGhfY29uc3RyYWludCB0eV92YXJzIHR5cCA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIFNvbWVcbiAgICAgIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICAgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPSB0eV92YXJzOyB0eXAgfSlcbiAgaW5cbiAgbGV0IHB2Yl9wYXQsIHB2Yl9leHByLCBwdmJfY29uc3RyYWludCA9XG4gICAgbWF0Y2ggcmVzdWdhcmFibGVfdmFsdWVfYmluZGluZyBwdmJfcGF0IHB2Yl9leHByIHdpdGhcbiAgICB8IGBEZXN1Z2FyZWRfbG9jYWxseV9hYnN0cmFjdCAocCwgdHlfdmFycywgdHlwLCBlKSAtPlxuICAgICAgICAocCwgZSwgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgW10sIGN0LCBleHByKSAtPiAoXG4gICAgICAgICgqIGNoZWNrIGlmIHdlIGFyZSBpbiB0aGUgW2xldCB4IDogdHk/IDo+IGNvZXIgPSBleHByIF0gY2FzZSAqKVxuICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29lcmNlIChleHByLCBnciwgY29lcmNlKTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBnciBpblxuICAgICAgICAgICAgbGV0IGNvZXJjaW9uID0gY29weV9jb3JlX3R5cGUgY29lcmNlIGluXG4gICAgICAgICAgICBsZXQgcHZiX2NvbnN0cmFpbnQgPVxuICAgICAgICAgICAgICBTb21lIChBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKHBhdCwgZXhwciwgcHZiX2NvbnN0cmFpbnQpXG4gICAgICAgIHwgXyAtPiAocGF0LCBleHByLCB3aXRoX2NvbnN0cmFpbnQgW10gY3QpKVxuICAgIHwgYFVuaXZhcnMgKHBhdCwgXywgY3QsIGV4cHIpIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdClcbiAgICB8IGBOb25WYXIgKHAsIHR5cCwgZSkgLT4gKHAsIGUsIHdpdGhfY29uc3RyYWludCBbXSB0eXApXG4gICAgfCBgTm9uZSAtPiAocHZiX3BhdCwgcHZiX2V4cHIsIE5vbmUpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgxLCBpc191bml0ID1cbiAgICAgICAgbWF0Y2ggeDEucG1vZF9kZXNjIHdpdGhcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBbXSAtPlxuICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHIgYWNjIDogQXN0XzUwMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBfID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCB0cnVlKVxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmtlZXBfc3RydWN0dXJlXCI7IF8gfTtcbiAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IHEgLT5cbiAgICAgICAgICAgICAgICAgIChMaXN0LnJldl9hcHBlbmQgYWNjIHEsIGZhbHNlKVxuICAgICAgICAgICAgICB8IGhkIDo6IHRsIC0+IGV4dHJhY3RfYXR0ciAoaGQgOjogYWNjKSB0bFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGIgPSBleHRyYWN0X2F0dHIgW10geDEucG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICAgICAoeyB4MSB3aXRoIHBtb2RfYXR0cmlidXRlcyB9LCBiKVxuICAgICAgICB8IF8gLT4gKHgxLCBmYWxzZSlcbiAgICAgIGluXG4gICAgICBpZiBpc191bml0IHRoZW4gQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IChjb3B5X21vZHVsZV9leHByIHgwKVxuICAgICAgZWxzZVxuICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNTAxLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNTAxLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3ZhcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHBjZF92YXJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF81MDAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzUwMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzUwMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF81MDAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF81MDAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1bmN0aW9uXG4gIHwgTG9uZ2lkZW50LkxpZGVudCB4MCAtPiBMb25naWRlbnQuTGlkZW50IHgwXG4gIHwgTG9uZ2lkZW50Lkxkb3QgKHgwLCB4MSkgLT4gTG9uZ2lkZW50Lkxkb3QgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIHgxKVxuICB8IExvbmdpZGVudC5MYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIExvbmdpZGVudC5MYXBwbHkgKGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF81MDAuQXN0dHlwZXMudHh0OyBBc3RfNTAwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9XG4gZnVuIHsgTG9jYXRpb24ubG9jX3N0YXJ0OyBMb2NhdGlvbi5sb2NfZW5kOyBMb2NhdGlvbi5sb2NfZ2hvc3QgfSAtPlxuICB7XG4gICAgTG9jYXRpb24ubG9jX3N0YXJ0ID0gY29weV9wb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgTG9jYXRpb24ubG9jX2VuZCA9IGNvcHlfcG9zaXRpb24gbG9jX2VuZDtcbiAgICBMb2NhdGlvbi5sb2NfZ2hvc3Q7XG4gIH1cblxuYW5kIGNvcHlfcG9zaXRpb24gOiBMZXhpbmcucG9zaXRpb24gLT4gTGV4aW5nLnBvc2l0aW9uID1cbiBmdW4geyBMZXhpbmcucG9zX2ZuYW1lOyBMZXhpbmcucG9zX2xudW07IExleGluZy5wb3NfYm9sOyBMZXhpbmcucG9zX2NudW0gfSAtPlxuICB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9XG4iLCJtb2R1bGUgRnJvbSA9IEFzdF81MDBcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxuKCokIG9wZW4gQXN0bGliX2NpbmFwc19oZWxwZXJzICQqKVxuXG4oKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBQcmludGYucHJpbnRmXG4gICAgICAgIFwibGV0IGNvcHlfJXNcXG5cXFxuICAgICAgICBcXCAgOiBBc3RfNTAwLlBhcnNldHJlZS4lcyAtPiBBc3RfNDE0LlBhcnNldHJlZS4lc1xcblxcXG4gICAgICAgIFxcICA9IGZ1biB4IC0+IHhcXG5cXG5cIlxuICAgICAgICBzIHMgc1xuICApXG4qKVxubGV0IGNvcHlfc3RydWN0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY29yZV90eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwcmVzc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfcGF0dGVyblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVyblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2FzZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfZmllbGRcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX2V4cHJcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfbW9kdWxlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfc3RydWN0dXJlX2l0ZW1cbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuICA9IGZ1biB4IC0+IHhcblxuKCokKilcbiIsIm1vZHVsZSBGcm9tID0gQXN0XzQxNFxubW9kdWxlIFRvID0gQXN0XzUwMFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF80MTQuUGFyc2V0cmVlLiVzIC0+IEFzdF81MDAuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgKFtdLCBQKVxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICBDICh0eXBlIGEgYikgUCAgIFNvbWUgKFthOyBiXSwgUClcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgOj0gIC4uLiAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIHdpdGggbW9kdWxlIHR5cGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZCAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxNC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxNC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTQuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTQuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+IChcbiAgICAgIG1hdGNoIHgwIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MSwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgICAgIHwgaGQgOjogXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJ0eXBlIHBhcmFtZXRlcnMgaW4gZXh0ZW5zaW9uIGNvbnN0cnVjdG9yc1wiKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcGNkX3ZhcnMgd2l0aFxuICB8IFtdIC0+XG4gICAgICB7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgICAgIH1cbiAgfCBoZCA6OiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBoZC5sb2MgXCJwY2RfdmFycyBpbiBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbnNcIlxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTMuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDE0LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTQuQXN0dHlwZXMudHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDE0XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxNC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTQuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTQuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDE0LlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDE0LlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDE0LlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxNC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKFtdLCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDE0LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfdmFycyA9IFtdO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTQuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTQuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxNC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDE0LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxNC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG5cbiAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjlcIlxuZW5kXG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxM1xubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjEzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLmxldF87IEFzdF80MTMuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTIuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChtYXRjaCB4MCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgfCB0eSA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgdHkuQXN0XzQxMy5Bc3R0eXBlcy5sb2NcbiAgICAgICAgICAgICAgICAgICAgXCJleGlzdGVudGlhbHMgaW4gcGF0dGVybi1tYXRjaGluZ1wiKTtcbiAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHgxKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKF94MCwgeDEpIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDEuQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgXCJtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdCAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvY1xuICAgICAgICBcImRlc3RydWN0aXZlIG1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jXG4gICAgICAgIFwibG9jYWwgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEzLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTMuQXN0dHlwZXMudHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDEzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTMuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTMuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gKFtdLCBjb3B5X3BhdHRlcm4geCkpIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEzLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEyLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEzLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTMuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTMuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEyXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMi5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLmxldF87IEFzdF80MTIuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTIuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgXyA9IHgxIGluXG4gICAgICAgICAgICBjb3B5X3ZhcmlhbmNlIHgwICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDExLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTIuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTJcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIChjb3B5X3ZhcmlhbmNlIHgxLCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkpKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTEuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICgqIChtb2R1bGUgUCkgICAgICAgIFNvbWUgXCJQXCJcbiAgICAgICAobW9kdWxlIF8pICAgICAgICBOb25lXG5cbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICB0eXBlIHQgKz0gLi4uXG4qKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICAgIHwgQyA9IERcbiAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBmdW5jdG9yX3BhcmFtZXRlciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgKikgPVxuICAgIHwgVW5pdFxuICAgICgqICgpICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogKFggOiBNVCkgICAgICAgICAgU29tZSBYLCBNVFxuICAgICAgIChfIDogTVQpICAgICAgICAgIE5vbmUsIE1UICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyN1wiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyN1wiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDExXG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLmxldF87IEFzdF80MTEuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDExLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBfLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMFxubW9kdWxlIFRvID0gQXN0XzQxMVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwciB4ID0gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTAuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5sZXRfOyBBc3RfNDEwLlBhcnNldHJlZS5hbmRzOyBBc3RfNDEwLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDExLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDExLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdCB4ID0gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXAgeCA9IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDExLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgTG9jYXRpb24ubm9uZSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDExLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDExLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI2XCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTBcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2NcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFub255bW91cyBsZXQgbW9kdWxlXCJcbiAgICAgICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MDkuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvY1xuICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHgwLmxvYyBcImFueW55bW91cyB1bnBhY2tcIiB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBMb2NhdGlvbi50IGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICB8IE5vbmUgLT4gbWlncmF0aW9uX2Vycm9yIHBtYl9uYW1lLmxvYyBcImFub255bW91cyBtb2R1bGUgYmluZGluZ1wiKVxuICAgICAgICBwbWJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+XG4gICAgc3RyaW5nIEFzdF80MDkuQXN0dHlwZXMubG9jICogQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgb3B0aW9uID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Vbml0IC0+ICh7IGxvYyA9IExvY2F0aW9uLm5vbmU7IHR4dCA9IFwiKlwiIH0sIE5vbmUpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgICggY29weV9sb2MgKGZ1bmN0aW9uIE5vbmUgLT4gXCJfXCIgfCBTb21lIHggLT4geCkgeDAsXG4gICAgICAgIFNvbWUgKGNvcHlfbW9kdWxlX3R5cGUgeDEpIClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeCwgeSA9IGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAgaW5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeCwgeSwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1kX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgfCBTb21lIHggLT4geClcbiAgICAgICAgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDEwLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTAuQXN0dHlwZXMudHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDEwXG5cbmxldCBtYXBfb3B0aW9uIGYgeCA9IG1hdGNoIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2FyZyA9IG1hcF9vcHRpb24gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQwOS5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLmxldF87IEFzdF80MDkuUGFyc2V0cmVlLmFuZHM7IEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTAuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MDkuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2VzIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBtYXBfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIG1hcF9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIChtYXRjaCAoeDAudHh0LCB4MSkgd2l0aFxuICAgICAgICAgIHwgXCIqXCIsIE5vbmUgLT4gVW5pdFxuICAgICAgICAgIHwgXCJfXCIsIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4gXyAtPiBOb25lKSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8sIFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgTmFtZWQgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gbWFwX29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcyA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTAuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTAuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTAuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEwLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gVGh1IE1hciAyMSAwOTo1MDo0MiBHTVQgMjAxOVxuICAgT0NhbWwgd2FzOlxuICAgY29tbWl0IDU1YzliYTQ2NjM2MmYzMDNlYjRkNWVkNTExZjZmZGExNDI4NzkxMzcgKEhFQUQgLT4gNC4wOCwgb3JpZ2luLzQuMDgpXG4gICAgIEF1dGhvcjogTmljb2zDoXMgT2plZGEgQsOkciA8bi5vamUuYmFyQGdtYWlsLmNvbT5cbiAgICAgRGF0ZTogICBUdWUgTWFyIDE5IDA4OjExOjAyIDIwMTkgKzAxMDBcblxuICAgICAgICAgTWVyZ2UgcHVsbCByZXF1ZXN0ICM4NTIxIGZyb20gbm9qYi9maXhfdW5peF90ZXN0c180MDhcblxuICAgICAgICAgQWN0dWFsbHkgcnVuIGFsbCBsaWItdW5peCB0ZXN0cyBbNC4wOF1cbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcblxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCB0eXAgPSBjb3JlX3R5cGVcblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgPSBlIC4uLlxuXG4gICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICgqXG4gICAgIChtb2R1bGUgUylcbiAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPSB7XG4gICAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgICBwb2ZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdCA9IHBhdHRlcm5cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICgqICdhJy4uJ3onXG5cbiAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgKCogKG1vZHVsZSBQKVxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4cHIgPSBleHByZXNzaW9uXG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogeFxuICAgICAgIE0ueFxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzXG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGNhc2VzID0gY2FzZSBsaXN0XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgfCBDID0gRFxuICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgdmFsIHg6IFRcbiAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLiAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIFggPSBNXG4gICAgICAgbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgKCogbW9kdWxlIFggOj0gTSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgICAgIHBkaXJfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICopID1cbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyNVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyNVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA5XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA5LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA5LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA4LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDguQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA5XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV90eXAgOiBBc3RfNDA4LlBhcnNldHJlZS50eXAgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwID1cbiBmdW4geCAtPiBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X3BhdCA6IEFzdF80MDguUGFyc2V0cmVlLnBhdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXQgPVxuIGZ1biB4IC0+IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X2V4cHIgOiBBc3RfNDA4LlBhcnNldHJlZS5leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgPVxuIGZ1biB4IC0+IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKGNvcHlfY2FzZXMgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jYXNlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA4LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOC5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQwOC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MDguQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA4LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDguQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDguQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDguQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA4LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDguQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDguQXN0dHlwZXMudHh0OyBBc3RfNDA4LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gV2VkIEFwciAxOCAxMDozMzoyOSBCU1QgMjAxOFxuICAgT0NhbWwgdHJ1bmsgd2FzOlxuICAgICBjb21taXQgYzBiZDZhMjdlMTM4OTExNTYwZjQzZGM3NWQ1ZmRlMmFkZTRkNmNmZSAoSEVBRCwgdGFnOiA0LjA3LjArYmV0YTIpXG4gICAgIEF1dGhvcjogRGFtaWVuIERvbGlnZXogPGRhbWllbi5kb2xpZ2V6QGlucmlhLmZyPlxuICAgICBEYXRlOiAgIFR1ZSBBcHIgMTAgMTQ6NTA6NDggMjAxOCArMDIwMFxuXG4gICAgICAgICBjaGFuZ2UgVkVSU0lPTiBmb3IgNC4wNy4wK2JldGEyXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIzXCJcbmVuZFxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA4XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDhcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgIHtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucGRpcl9sb2MgPSBfO1xuICAgICAgfSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyXG4gICAgICAgICggcGRpcl9uYW1lLkxvY2F0aW9uLnR4dCxcbiAgICAgICAgICBtYXRjaCBwZGlyX2FyZyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IGFyZyApXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IF9wZGlyYV9sb2MgfSAtPlxuICBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2NcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxpZCxcbiAgICAgICAgICAgICAgY29weV9leHByZXNzaW9uIHgxIClcbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB7IGxldF87IGFuZHMgPSBfOyBib2R5ID0gXyB9IC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbGV0Xy5wYm9wX29wLmxvYyBcImxldCBvcGVyYXRvcnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2xvYyA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAgbWF0Y2ggcHJmX2Rlc2Mgd2l0aFxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MSxcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwb2ZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX2xvYyA9IF87XG4gICAgIH0gLT5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWUsIGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPiAoXG4gICAgICBtYXRjaCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLkZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYyB3aXRoXG4gICAgICB8IFBtb2RfaWRlbnQgbGlkIC0+XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPVxuICAgICAgICAgICAgICAgIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24geDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICB9XG4gICAgICB8IFBtb2Rfc3RydWN0dXJlIF8gfCBQbW9kX2Z1bmN0b3IgXyB8IFBtb2RfYXBwbHkgXyB8IFBtb2RfY29uc3RyYWludCBfXG4gICAgICB8IFBtb2RfdW5wYWNrIF8gfCBQbW9kX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYyBcImNvbXBsZXggb3BlblwiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBsZXQgeDBfbG9jID1cbiAgICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgICB8IFtdIC0+IExvY2F0aW9uLm5vbmVcbiAgICAgICAgfCB7IEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYzsgXyB9IDo6IF8gLT4gcHR5cGVfbG9jXG4gICAgICBpblxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgwX2xvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluIHNpZ25hdHVyZXNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICAobGV0IGUgPVxuICAgICAgICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MC5Gcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgIGluXG4gICAgICAgICB7XG4gICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPVxuICAgICAgICAgICAgIGUucGV4dF9hdHRyaWJ1dGVzIEAgY29weV9hdHRyaWJ1dGVzIHgwLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgfSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAucG1zX2xvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcixcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDEgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiBoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG4oKiBhbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICBGcm9tLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuICAgZnVuXG4gICAgIHsgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBwdHlleG5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuICAgICAgLT5cbiAgICAge1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSAoY29weV9sb2NhdGlvbiBwdHlleG5fbG9jKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPVxuICAgICAgICAgKGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcylcbiAgICAgfSopXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDA3XG5tb2R1bGUgVG8gPSBBc3RfNDA4XG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX25hbWUgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi50eHQgPSB4MDsgTG9jYXRpb24ubG9jID0gTG9jYXRpb24ubm9uZSB9O1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2FyZyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wZGlyX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb25cbiAgICA9XG4gIGxldCB3cmFwIHBkaXJhX2Rlc2MgPVxuICAgIFNvbWUgeyBUby5QYXJzZXRyZWUucGRpcmFfZGVzYzsgVG8uUGFyc2V0cmVlLnBkaXJhX2xvYyA9IExvY2F0aW9uLm5vbmUgfVxuICBpblxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBOb25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKSB8PiB3cmFwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MCkgfD4gd3JhcFxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9ib29sIHgyLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4Myk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9kZXNjID0gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPVxuICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4Mik7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuTG9jYXRpb24ubG9jO1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgeDE7XG4gICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIHtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9kZXNjID0gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MCk7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDA7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCB4MTtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgbGV0IGF0YXQsIGF0ID1cbiAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgeyBMb2NhdGlvbi50eHQgPSBcIm9jYW1sLmRlcHJlY2F0ZWRcIiB8IFwiZGVwcmVjYXRlZFwiOyBfIH0sIF8gLT5cbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICAgICAgeDAucGV4dF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbGV0IHgwID0geyB4MCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0IH0gaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlblxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPVxuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQpO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBwb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID0gY29weV9sb2MgY29weV9sb25naWRlbnQgeDE7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgeDA7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MiApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIGxldCBmaWVsZHMgPVxuICAgIExpc3Quc29ydFxuICAgICAgKGZ1biAoYSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGNmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSlcbiAgICAgIHBjc3RyX2ZpZWxkc1xuICBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBmaWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb25cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MDtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHgwLkZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBhdGF0O1xuICAgICAgICB9XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZClcbiAgICAgICAgICAgKGIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKSAtPlxuICAgICAgICBjb21wYXJlIGEucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtIGIucGN0Zl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzaWdfZmllbGRzXG4gIGluXG5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIGxldCB4MSA9XG4gICAgbWF0Y2ggeDAudHh0IHdpdGhcbiAgICB8IFwib2NhbWwuZXJyb3JcIiB8IFwiZXJyb3JcIiAtPiAoXG4gICAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgICAgfCBQU3RyIChoZCA6OiBfIDo6IHRsKSAtPiBGcm9tLlBhcnNldHJlZS5QU3RyIChoZCA6OiB0bClcbiAgICAgICAgfCBfIC0+IHgxKVxuICAgIHwgXyAtPiB4MVxuICBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IHB0eWV4dF9wYXRoLkxvY2F0aW9uLmxvYztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBc3QgcG9ydGVkIG9uIE1vbiBPY3QgIDIgMTE6MjU6NTcgQ0VTVCAyMDE3XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCA2NTk0MGEyYzZiZTQzYzQyZjc1YzZjNmIyNTU5NzRmN2U2ZGUwM2NhIChIRUFEIC0+IDQuMDYsIG9yaWdpbi80LjA2KVxuICAgICBBdXRob3I6IENocmlzdG9waGUgUmFmZmFsbGkgPGNocmlzdG9waGVAcmFmZmFsbGkuZXU+XG4gICAgIERhdGU6ICAgU3VuIE9jdCAxIDE4OjI3OjA3IDIwMTcgKzAyMDBcblxuICAgICAgICAgZml4ZWQgcG9zaXRpb24gb2YgbGFzdCBvcHRpb25hbCBsYXN0IHNlbWljb2x1bW4gaW4gc2VxdWVuY2UgKCMxMzg3KVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzLjQgMmU1IDEuNGUtNFxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAgICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvY1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAgICAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICAgICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqXG4gICAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyMlwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5vYmplY3RfZmllbGRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuT2luaGVyaXQgeCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgpXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChvdmYsIGxvYywgY2UpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYywgY29weV9jbGFzc19leHByIGNlKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9vcGVuIChvdmYsIGxvYywgY3R5KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyBvdmYsXG4gICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSBjdHkgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwN1xuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZSkgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDZcbm1vZHVsZSBUbyA9IEFzdF80MDVcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNlwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRnJvbS5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCBfIC0+XG4gICAgICAgICAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgTG9jYXRpb24ubm9uZSBcImluaGVyaXRhbmNlIGluIG9iamVjdCB0eXBlXCIpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAudHh0LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuIChfLCBsb2MsIF8pIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jLkxvY2F0aW9uLmxvYyBcIm1vZHVsZSBvcGVuIGluIGNsYXNzIGV4cHJlc3Npb25cIlxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBfOyBfIH0sIHgwKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgeDA7IGxvYyB9LCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyB0eHQgPSB4MDsgbG9jIH0sIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyBsb2M7IF8gfSwgX3gwKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInR5cGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgbG9jOyBfIH0sIF94MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgc3Vic3RpdHV0aW9uIGluc2lkZSBhIHN1Ym1vZHVsZVwiXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgdHlwZVwiXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA2XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5PdGFnXG4gICAgICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIHsgdHh0ID0gY29weV9sYWJlbCB4MDsgbG9jID0gTG9jYXRpb24ubm9uZSB9LFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QU2lnIHgwIC0+IFRvLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lLFxuICAgICAgICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZ1xuICAgICAgICAgICgqICBFICMgbSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogbmV3IE0uYyAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChzdHJpbmcgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjBcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA1XG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MS5Gcm9tLkFzdHR5cGVzLnR4dClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLkZyb20uQXN0dHlwZXMudHh0LCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4geC5Gcm9tLkFzdHR5cGVzLnR4dCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggeDAuRnJvbS5Bc3R0eXBlcy50eHQsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNFxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbm9sb2MgeCA9IHsgTG9jYXRpb24udHh0ID0geDsgbG9jID0gTG9jYXRpb24ubm9uZSB9XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBub2xvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKG5vbG9jIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAobm9sb2MgeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiBub2xvYyB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gbm9sb2MgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggbm9sb2MgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEZyb20uQXN0dHlwZXMuYXJnX2xhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IFRvLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBGcm9tLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IFRvLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBUby5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLlBhcnNldHJlZS5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9vcHRpb24gOiAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIG9wdGlvbiAtPiAnZzAgb3B0aW9uID1cbiBmdW4gZjAgLT4gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHwgU29tZSB4MCAtPiBTb21lIChmMCB4MClcblxuYW5kIGNvcHlfbG9uZ2lkZW50IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLiAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEZyb20uQXN0dHlwZXMubG9jIC0+ICdnMCBUby5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEZyb20uQXN0dHlwZXMudHh0OyBGcm9tLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgVG8uQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBUby5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuYW5kIGNvcHlfYm9vbCA6IGJvb2wgLT4gYm9vbCA9IGZ1bmN0aW9uIGZhbHNlIC0+IGZhbHNlIHwgdHJ1ZSAtPiB0cnVlXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gICgqIEF1eGlsaWFyeSBhLnMudC4gdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE90aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCBbQGlkMV0gW0BpZDJdIDogVCAqKVxuICAgICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAoW10sIFNvbWUgVDApXG4gICAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDID0gRFxuICAgICAgICAgKilcblxuICAoKiogezIgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAoc3RyaW5nICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogIHZhbCB4OiBUXG4gICAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICB8IFBkaXJfaWRlbnQgb2YgTG9uZ2lkZW50LnRcbiAgICB8IFBkaXJfYm9vbCBvZiBib29sXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMTlcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMThcIlxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDAzXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDRcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJsb2NhbCBleGNlcHRpb25zXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDAzXG5tb2R1bGUgVG8gPSBBc3RfNDA0XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICh4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfdmlydHVhbF9mbGFnIHgyLCBjb3B5X2NvcmVfdHlwZSB4MykpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MiBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgICAge1xuICAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAgICAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgICAgICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwibFwiKVxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIChzdHJpbmcgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAgICAgICAgKilcblxuICAgIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZVxuICAgICAgICAgICgqIChtb2R1bGUgUykgKilcbiAgICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHBhY2thZ2VfdHlwZSA9IExvbmdpZGVudC50IGxvYyAqIChMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUpIGxpc3RcbiAgICAgICAgKCpcbiAgICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgICAgKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXG4gICAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIlwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJsXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChsYWIgPSBcIj9sXCIsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBsYWIgbXVzdCBzdGFydCB3aXRoICc/Jy5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcblxuICAgIE5vdGU6IHdoZW4gdXNlZCB1bmRlciBQc3RyX3ByaW1pdGl2ZSwgcHJpbSBjYW5ub3QgYmUgZW1wdHlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb3JlX3R5cGUgbGlzdDtcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUpXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChhcmdzID0gW10sIHJlcyA9IFNvbWUgVDApXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwKVxuICAqKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKlxuICAgIHR5cGUgdCArPSAuLi5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgICAge1xuICAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29yZV90eXBlIGxpc3QgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICAobGFiZWwgPSBcIlwiKVxuICAgICAgICAgICAgIH5sOlQgLT4gQ1QgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICAobGFiZWwgPSBcIj9sXCIpXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGxhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIG9wdGlvblxuICAgICAgICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICAgICAgICBpbmhlcml0ISBDRVxuICAgICAgICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl92YWwgb2YgKHN0cmluZyBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG9wZW5fbGlkOiBMb25naWRlbnQudCBsb2M7XG4gICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogd2l0aCB0eXBlIHQgOj0gLi4uICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBzdHJpbmcgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWCA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezIgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIGludFxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxNlwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxNVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDJcblxubGV0IGluamVjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIGQgPVxuICBsZXQgb3BlbiBUbyBpblxuICBsZXQgb3BlbiBQYXJzZXRyZWUgaW5cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgXyAtPlxuICAgICAgbGV0IGxvYyA9IHsgZC5wdHlwX2xvYyB3aXRoIExvY2F0aW9uLmxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHR4dCA9IExvbmdpZGVudC5MZG90IChMb25naWRlbnQuTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIikgaW5cbiAgICAgIGxldCBpZGVudCA9IHsgTG9jYXRpb24udHh0OyBsb2MgfSBpblxuICAgICAge1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWRlbnQsIFsgZCBdKTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfVxuICB8IF8gLT4gZFxuXG5sZXQgZnJvbV9sb2MgeyBMb2NhdGlvbi50eHQgPSBfOyBsb2MgfSA9IGxvY1xuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjAzXCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9sb2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJ1bnJlYWNoYWJsZSBwYXR0ZXJuc1wiXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2xvYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCBsb2MgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgbG9jIHgwLCBjb3B5X2NvbnN0YW50IGxvYyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBpbmplY3RfcHJlZGVmX29wdGlvbiB4MCAoY29weV9jb3JlX3R5cGUgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIGxvYyA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJzaWduYXR1cmVzIGluIGF0dHJpYnV0ZVwiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlICh0eXBlX2RlY2xhcmF0aW9ucyB4MCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgKGZyb21fbG9jIHgwKSB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoZnJvbV9sb2MgcGV4dF9uYW1lKSBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6IEZyb20uQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IFRvLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Qcml2YXRlIC0+IFRvLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBGcm9tLkFzdHR5cGVzLlB1YmxpYyAtPiBUby5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogRnJvbS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IFRvLlBhcnNldHJlZS50eXBlX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IFRvLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IFRvLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNkX2FyZ3MgPVxuICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKGZyb21fbG9jIHBjZF9uYW1lKSBwY2RfYXJncztcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlIGxpc3QgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+IExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIF94MCAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiaW5saW5lIHJlY29yZHNcIlxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gXCJcIlxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4geDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFwiP1wiIF4geDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IGxvYyA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLkFzdHR5cGVzLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdsJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQzMiAoSW50MzIub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICdMJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQ2NCAoSW50NjQub2Zfc3RyaW5nIHgwKVxuICAgICAgfCBTb21lICduJyAtPiBUby5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgKE5hdGl2ZWludC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGludGVnZXIgbGl0ZXJhbHNcIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPiBUby5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT4gKFxuICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgfCBOb25lIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwXG4gICAgICB8IFNvbWUgXyAtPiBtaWdyYXRpb25fZXJyb3IgbG9jIFwiY3VzdG9tIGZsb2F0IGxpdGVyYWxzXCIpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHJlY2ZsYWcgdHlwZXMgPVxuICBtYXRjaCAocmVjZmxhZywgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzKSB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzIC0+IHR5cGVzXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIFtdIC0+IFtdXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUsIHggOjogeHMgLT5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiX25vbmVfXCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gLTE7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICAoeyBUby5Bc3R0eXBlcy50eHQgPSBcIm5vbnJlY1wiOyBsb2MgfSwgVG8uUGFyc2V0cmVlLlBTdHIgW10pXG4gICAgICAgIDo6IHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPiBUby5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCB4MSlcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IFRvLlBhcnNldHJlZS5QZGlyX25vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIF94MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoaW50X29mX3N0cmluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDJcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB0eXAgPVxuICBsZXQgb3BlbiBGcm9tIGluXG4gIGxldCBvcGVuIExvbmdpZGVudCBpblxuICBtYXRjaCAobGFiZWwsIHR5cC5QYXJzZXRyZWUucHR5cF9kZXNjKSB3aXRoXG4gIHwgKCBUby5Bc3R0eXBlcy5PcHRpb25hbCBfLFxuICAgICAgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKHsgTG9jYXRpb24udHh0ID0gTGRvdCAoTGlkZW50IFwiKnByZWRlZipcIiwgXCJvcHRpb25cIik7IF8gfSwgWyBkIF0pICkgLT5cbiAgICAgIGRcbiAgfCBfIC0+IHR5cFxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgKHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5IChMaXN0Lm1hcCAoZnVuIHggLT4geCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgOiBGcm9tLlBhcnNldHJlZS5wYXlsb2FkIC0+IFRvLlBhcnNldHJlZS5wYXlsb2FkID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QU3RyIHgwIC0+IFRvLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSB4MCAtPlxuICAgICAgbGV0IHJlY2ZsYWcsIHR5cGVzID0gdHlwZV9kZWNsYXJhdGlvbnMgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHJlY2ZsYWcsIHR5cGVzKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgbGV0IGxhYmVsID0gY29weV9hcmdfbGFiZWwgeDAgaW5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggbGFiZWwsXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgKGV4dHJhY3RfcHJlZGVmX29wdGlvbiBsYWJlbCB4MSksXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6IEZyb20uQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gVG8uQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgRnJvbS5Bc3R0eXBlcy5NdXRhYmxlIC0+IFRvLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHBjZF9hcmdzKTtcbiAgICBUby5QYXJzZXRyZWUucGNkX3JlcyA9IGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuIGZ1biB4IC0+XG4gIGlmIHggPD4gXCJcIiB0aGVuXG4gICAgaWYgeC5bMF0gPSAnPycgdGhlblxuICAgICAgVG8uQXN0dHlwZXMuT3B0aW9uYWwgKFN0cmluZy5zdWIgeCAxIChTdHJpbmcubGVuZ3RoIHggLSAxKSlcbiAgICBlbHNlIFRvLkFzdHR5cGVzLkxhYmVsbGVkIHhcbiAgZWxzZSBUby5Bc3R0eXBlcy5Ob2xhYmVsXG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5Bc3R0eXBlcy5jb25zdGFudCAtPiBUby5QYXJzZXRyZWUuY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHN0cmluZ19vZl9pbnQgeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2Zsb2F0IHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBOb25lKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50MzIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHgwLCBTb21lICdsJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2ludDY0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB4MCwgU29tZSAnTCcpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9uYXRpdmVpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB4MCwgU29tZSAnbicpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxuYW5kIHR5cGVfZGVjbGFyYXRpb25zIHR5cGVzID1cbiAgbGV0IGlzX25vbnJlYyAoYXR0ciwgXykgPSBhdHRyLkxvY2F0aW9uLnR4dCA9IFwibm9ucmVjXCIgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHR5cGVzIHdpdGhcbiAgfCB4IDo6IHhzIHdoZW4gTGlzdC5leGlzdHMgaXNfbm9ucmVjIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgLT5cbiAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID1cbiAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biB4IC0+IG5vdCAoaXNfbm9ucmVjIHgpKSB4LlRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeyB4IHdpdGggVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgfSA6OiB4cylcbiAgfCB0eXBlcyAtPiAoVG8uQXN0dHlwZXMuUmVjdXJzaXZlLCB0eXBlcylcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2ludCAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsImxldCBpc19rZXl3b3JkID0gZnVuY3Rpb25cbiAgfCBcImFuZFwiIC0+IHRydWVcbiAgfCBcImFzXCIgLT4gdHJ1ZVxuICB8IFwiYXNzZXJ0XCIgLT4gdHJ1ZVxuICB8IFwiYmVnaW5cIiAtPiB0cnVlXG4gIHwgXCJjbGFzc1wiIC0+IHRydWVcbiAgfCBcImNvbnN0cmFpbnRcIiAtPiB0cnVlXG4gIHwgXCJkb1wiIC0+IHRydWVcbiAgfCBcImRvbmVcIiAtPiB0cnVlXG4gIHwgXCJkb3dudG9cIiAtPiB0cnVlXG4gIHwgXCJlbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZW5kXCIgLT4gdHJ1ZVxuICB8IFwiZXhjZXB0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZXh0ZXJuYWxcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IHRydWVcbiAgfCBcImZvclwiIC0+IHRydWVcbiAgfCBcImZ1blwiIC0+IHRydWVcbiAgfCBcImZ1bmN0aW9uXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3RvclwiIC0+IHRydWVcbiAgfCBcImlmXCIgLT4gdHJ1ZVxuICB8IFwiaW5cIiAtPiB0cnVlXG4gIHwgXCJpbmNsdWRlXCIgLT4gdHJ1ZVxuICB8IFwiaW5oZXJpdFwiIC0+IHRydWVcbiAgfCBcImluaXRpYWxpemVyXCIgLT4gdHJ1ZVxuICB8IFwibGF6eVwiIC0+IHRydWVcbiAgfCBcImxldFwiIC0+IHRydWVcbiAgfCBcIm1hdGNoXCIgLT4gdHJ1ZVxuICB8IFwibWV0aG9kXCIgLT4gdHJ1ZVxuICB8IFwibW9kdWxlXCIgLT4gdHJ1ZVxuICB8IFwibXV0YWJsZVwiIC0+IHRydWVcbiAgfCBcIm5ld1wiIC0+IHRydWVcbiAgfCBcIm5vbnJlY1wiIC0+IHRydWVcbiAgfCBcIm9iamVjdFwiIC0+IHRydWVcbiAgfCBcIm9mXCIgLT4gdHJ1ZVxuICB8IFwib3BlblwiIC0+IHRydWVcbiAgfCBcIm9yXCIgLT4gdHJ1ZVxuICAoKiB8IFwicGFyc2VyXCIgLT4gdHJ1ZSAqKVxuICB8IFwicHJpdmF0ZVwiIC0+IHRydWVcbiAgfCBcInJlY1wiIC0+IHRydWVcbiAgfCBcInNpZ1wiIC0+IHRydWVcbiAgfCBcInN0cnVjdFwiIC0+IHRydWVcbiAgfCBcInRoZW5cIiAtPiB0cnVlXG4gIHwgXCJ0b1wiIC0+IHRydWVcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJ0cnlcIiAtPiB0cnVlXG4gIHwgXCJ0eXBlXCIgLT4gdHJ1ZVxuICB8IFwidmFsXCIgLT4gdHJ1ZVxuICB8IFwidmlydHVhbFwiIC0+IHRydWVcbiAgfCBcIndoZW5cIiAtPiB0cnVlXG4gIHwgXCJ3aGlsZVwiIC0+IHRydWVcbiAgfCBcIndpdGhcIiAtPiB0cnVlXG4gIHwgXCJsb3JcIiAtPiB0cnVlXG4gIHwgXCJseG9yXCIgLT4gdHJ1ZVxuICB8IFwibW9kXCIgLT4gdHJ1ZVxuICB8IFwibGFuZFwiIC0+IHRydWVcbiAgfCBcImxzbFwiIC0+IHRydWVcbiAgfCBcImxzclwiIC0+IHRydWVcbiAgfCBcImFzclwiIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnNcbiAgICBvcGVuIFByaW50ZiAkKilcblxuKCogQ29weSBvZiBPQ2FtbCBwYXJzZXRyZWVzICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uIChmdW4gc3VmZml4IF8gLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBBc3RfJXMgPSBBc3RfJXNcXG5cIiBzdWZmaXggc3VmZml4KVxuKilcbm1vZHVsZSBBc3RfNDAyID0gQXN0XzQwMlxubW9kdWxlIEFzdF80MDMgPSBBc3RfNDAzXG5tb2R1bGUgQXN0XzQwNCA9IEFzdF80MDRcbm1vZHVsZSBBc3RfNDA1ID0gQXN0XzQwNVxubW9kdWxlIEFzdF80MDYgPSBBc3RfNDA2XG5tb2R1bGUgQXN0XzQwNyA9IEFzdF80MDdcbm1vZHVsZSBBc3RfNDA4ID0gQXN0XzQwOFxubW9kdWxlIEFzdF80MDkgPSBBc3RfNDA5XG5tb2R1bGUgQXN0XzQxMCA9IEFzdF80MTBcbm1vZHVsZSBBc3RfNDExID0gQXN0XzQxMVxubW9kdWxlIEFzdF80MTIgPSBBc3RfNDEyXG5tb2R1bGUgQXN0XzQxMyA9IEFzdF80MTNcbm1vZHVsZSBBc3RfNDE0ID0gQXN0XzQxNFxubW9kdWxlIEFzdF81MDAgPSBBc3RfNTAwXG5tb2R1bGUgQXN0XzUwMSA9IEFzdF81MDFcbm1vZHVsZSBBc3RfNTAyID0gQXN0XzUwMlxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDIgPSBNaWdyYXRlXzUwMV81MDJcbm1vZHVsZSBNaWdyYXRlXzUwMl81MDEgPSBNaWdyYXRlXzUwMl81MDFcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxubW9kdWxlIE9DYW1sXzUwMiA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDJcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDIpXG4gIGxldCB2ZXJzaW9uID0gNTAyXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4yXCJcbmVuZFxubGV0IG9jYW1sXzUwMiA6IE9DYW1sXzUwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDIpXG4oKiQqKVxuXG5sZXQgYWxsX3ZlcnNpb25zIDogKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSBsaXN0ID0gW1xuICAoKiRmb3JlYWNoX3ZlcnNpb24gKGZ1biBuIF8gLT5cbiAgICAgIHByaW50ZiBcIihtb2R1bGUgT0NhbWxfJWQgOiBPQ2FtbF92ZXJzaW9uKTtcXG5cIiBuKSopXG4obW9kdWxlIE9DYW1sXzQwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDYgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA3IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDkgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAxIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMiA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDEpKE9DYW1sXzUwMilcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMikoQXN0bGliLk1pZ3JhdGVfNTAyXzUwMSlcbigqJCopXG5cbm1vZHVsZSBPQ2FtbF9jdXJyZW50ID0gT0NhbWxfT0NBTUxfVkVSU0lPTlxuXG5tb2R1bGUgRmluZF92ZXJzaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IEltcGwgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IEludGYgb2YgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKSB8IFVua25vd25cblxuICBsZXQgZnJvbV9tYWdpYyBtYWdpYyA9XG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gVW5rbm93blxuICAgICAgfCAobW9kdWxlIFZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSA6OiB0YWlsIC0+XG4gICAgICAgICAgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEltcGwgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2UgaWYgVmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciA9IG1hZ2ljIHRoZW5cbiAgICAgICAgICAgIEludGYgKG1vZHVsZSBWZXJzaW9uKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb3AgdGFpbFxuICAgIGluXG4gICAgKCogVHJhdmVyc2UgdGhlIHZlcnNpb25zIGZyb20gbGFzdCB0byBmaXJzdDpcbiAgICAgICBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmVuJ3QgdW5pcXVlIGFtb25nIHZlcnNpb25zLFxuICAgICAgIHdlIHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIHdpdGggYSBtYWdpYyBudW1iZXIgbWF0Y2guXG4gICAgICAgVGhlIHNpdHVhdGlvbiBpbiBtaW5kIGlzIHRydW5rIHN1cHBvcnQuICopXG4gICAgICBsZXQgYWxsX3ZlcnNpb25zX3RvcF9kb3duID0gTGlzdC5yZXYgYWxsX3ZlcnNpb25zIGluXG4gICAgICBsb29wIGFsbF92ZXJzaW9uc190b3BfZG93blxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgdXNlZCB0byBjb250cm9sIHdoYXQgd2UgdXNlIGZyb20gdGhlIGN1cnJlbnQgY29tcGlsZXIgYW5kIHdoYXQgaXMgZW1iZWQgaW5cbiAgIHRoaXMgbGlicmFyeS5cblxuICAgSXQgbXVzdCBiZSBvcGVuZWQgaW4gYWxsIG1vZHVsZXMsIGVzcGVjaWFsbHkgdGhlIG9uZXMgY29taW5nIGZyb20gdGhlIGNvbXBpbGVyLlxuKilcblxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG5tb2R1bGUgSnMgPSBWZXJzaW9ucy5PQ2FtbF81MDBcbm1vZHVsZSBPY2FtbCA9IFZlcnNpb25zLk9DYW1sX2N1cnJlbnRcblxubW9kdWxlIFNlbGVjdF9hc3QgKE9jYW1sIDogVmVyc2lvbnMuT0NhbWxfdmVyc2lvbikgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc1xuXG4gIG1vZHVsZSBUeXBlID0gc3RydWN0XG4gICAgdHlwZSAoJ2pzLCAnb2NhbWwpIHQgPVxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlc1xcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLiVzLFxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLiVzIClcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgIHRcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFRvcGxldmVsX3BocmFzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDb3JlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXhwcmVzc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFBhdHRlcm5cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5wYXR0ZXJuLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2FzZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfZXhwclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbigqJCopXG4gICAgICB8IExpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBsaXN0LCAnYiBsaXN0KSB0XG4gICAgICB8IFBhaXIgOiAoJ2EsICdiKSB0ICogKCdjLCAnZCkgdCAtPiAoJ2EgKiAnYywgJ2IgKiAnZCkgdFxuICBlbmRcblxuICBvcGVuIFR5cGVcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcbiAgbW9kdWxlIFRvX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoSnMpIChPY2FtbClcblxuICBsZXQgcmVjIG9mX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IG9jYW1sIC0+IGpzID1cbiAgICBsZXQgb3BlbiBPZl9vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwIChvZl9vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gb2Zfb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gb2Zfb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCByZWMgdG9fb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4ganMgLT4gb2NhbWwgPVxuICAgIGxldCBvcGVuIFRvX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKHRvX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSB0b19vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSB0b19vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IG9mX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gdG9fb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiBvZl9vY2FtbCBpdGVtXG4gIGxldCB0b19vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IG9mX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gdG9fb2NhbWwgaXRlbVxuZW5kXG5cbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBTZWxlY3RfYXN0IChPY2FtbClcbm1vZHVsZSBBc3RfaGVscGVyID0gQXN0X2hlbHBlcl9saXRlXG5cbigqIE1vZHVsZXMgZnJvbSBBc3RfPG4+IG9mIEFzdGxpYiwgd2hlcmUgPG4+IGlzIHRoZSBjb21waWxlciB2ZXJzaW9uIHRoZSBwcHhsaWIgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggKilcbm1vZHVsZSBQYXJzZXRyZWUgPSBTZWxlY3RlZF9hc3QuQXN0LlBhcnNldHJlZVxubW9kdWxlIEFzdHR5cGVzID0gU2VsZWN0ZWRfYXN0LkFzdC5Bc3R0eXBlc1xuXG4oKiBPdGhlciBBc3RsaWIgbW9kdWxlcyAqKVxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxuXG5tb2R1bGUgUGFyc2UgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RsaWIuUGFyc2VcbiAgbW9kdWxlIE9mX29jYW1sID0gVmVyc2lvbnMuQ29udmVydCAoT2NhbWwpIChKcylcblxuICBsZXQgaW1wbGVtZW50YXRpb24gbGV4YnVmID0gaW1wbGVtZW50YXRpb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc3RydWN0dXJlXG4gIGxldCBpbnRlcmZhY2UgbGV4YnVmID0gaW50ZXJmYWNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3NpZ25hdHVyZVxuXG4gIGxldCB0b3BsZXZlbF9waHJhc2UgbGV4YnVmID1cbiAgICB0b3BsZXZlbF9waHJhc2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IHVzZV9maWxlIGxleGJ1ZiA9XG4gICAgdXNlX2ZpbGUgbGV4YnVmIHw+IExpc3QubWFwIE9mX29jYW1sLmNvcHlfdG9wbGV2ZWxfcGhyYXNlXG5cbiAgbGV0IGNvcmVfdHlwZSBsZXhidWYgPSBjb3JlX3R5cGUgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfY29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uIGxleGJ1ZiA9IGV4cHJlc3Npb24gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfZXhwcmVzc2lvblxuICBsZXQgcGF0dGVybiBsZXhidWYgPSBwYXR0ZXJuIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3BhdHRlcm5cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBkZWZhdWx0X3ByaW50X3dhcm5pbmcgX2xvYyA9ICgpXG5sZXQgYWJvdXRfaXRlX2JyYW5jaF9yZWYgPSByZWYgZGVmYXVsdF9wcmludF93YXJuaW5nXG5sZXQgY2FyZV9hYm91dF9pdGVfYnJhbmNoID0gcmVmIGZhbHNlXG5sZXQgYWJvdXRfaXRlX2JyYW5jaCBsb2MgPSAhYWJvdXRfaXRlX2JyYW5jaF9yZWYgbG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBEZWZpbml0aW9uIG9mIHRoZSBPQ2FtbCBBU1QgKilcblxub3BlbiBJbXBvcnRcblxuKCogVGhpcyBmaWxlIGlzIG9idGFpbmVkIGJ5OlxuXG4gICAtIGNvcHlpbmcgYSBzdWJzZXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXN0X3h4eC5tbCBmaWxlIGZyb20gQXN0bGliXG4gICAoc3ViLW1vZHVsZXMgQXN0dHlwZXMgYW5kIFBhcnNldHJlZSlcbiAgIC0gYWRkaW5nIHRoZSB0eXBlIGRlZmluaXRpb25zIGZvciBwb3NpdGlvbiwgbG9jYXRpb24sIGxvYyBhbmQgbG9uZ2lkZW50XG4gICAtIGZsYXR0ZW5pbmcgYWxsIHRoZSBtb2R1bGVzXG4gICAtIHJlbW92aW5nIEFzdHR5cGVzLmNvbnN0YW50ICh1bnVzZWQgYW5kIGNvbmZsaWN0cyB3aXRoIFBhcnNldHJlZS5jb25zdGFudClcbiAgIC0gcmVuYW1pbmcgYSBmZXcgdHlwZXM6XG4gICAtIC0gTG9jYXRpb24udCAtPiBsb2NhdGlvblxuICAgLSAtIExvbmdpZGVudC50IC0+IGxvbmdpZGVudFxuICAgLSBhZGRpbmcgYSB0eXBlIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jIGFuZCByZXBsYWNpbmcgYWxsIHRoZSBvY2N1cnJlbmNlcyBvZiB0aGVcbiAgIGxhdHRlciBieSB0aGUgZm9ybWVyLiBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlIGl0ZXJhdGlvbiBhbiB0aGUgbGV2ZWwgb2YgYVxuICAgbG9uZ2lkZW50IGxvY1xuICAgLSBhZGRpbmcgYSB0eXBlIGNhc2VzID0gY2FzZSBsaXN0XG4gICAtIHJlcGxhY2luZyBhbGwgb2NjdXJlbmNlcyBvZiBcImNhc2UgbGlzdFwiIGJ5IFwiY2FzZXNcIlxuICAgLSByZXBsYWNpbmcgYWxsIHRoZSAoKklGX0NVUlJFTlQgPSBGb28uYmFyKikgYnk6ID0gRm9vLmJhclxuICAgLSByZW1vdmluZyB0aGUgZXh0cmEgdmFsdWVzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGVcbiAgIC0gcmVwbGFjaW5nIGFwcCBbdHlwZSAuLi5dIGJ5IFthbmQgLi4uXSB0byBtYWtlIGV2ZXJ5dGhpbmcgb25lIHJlY3Vyc2l2ZSBibG9ja1xuICAgLSBhZGRpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVtAQEBlbmRdIGF0IHRoZSBlbmRcblxuICAgVG8gdXBkYXRlIGl0IHRvIGEgbmV3ZXIgT0NhbWwgdmVyc2lvbiwgY3JlYXRlIGEgbmV3IG1vZHVsZSB3aXRoIHRoZSBhYm92ZSBmcm9tIHRoZVxuICAgbGF0ZXN0IGNvbXBpbGVyIGFuZCBhZGQgdGhlIGZvbGxvd2luZyBtb2R1bGUgZGVmaW5pdGlvbnMgYW5kIG9wZW5zIHRvIGdldCBpdCB0b1xuICAgY29tcGlsZTpcbiAgIFt7XG4gICAgbW9kdWxlIEFzdCA9IFZlcnNpb25zLk9DYW1sXzR4eFxuICAgIG9wZW4gQXN0LkFzdFxuICAgIG1vZHVsZSBMb2NhdGlvbiAgID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uXG4gICAgbW9kdWxlIExvbmdpZGVudCA9IE9jYW1sX2NvbW1vbi5Mb25naWRlbnRcbiAgIH1dXG5cbiAgIE9uY2UgeW91IGhhdmUgZ2VuZXJhdGVkIHRoZSBpbmxpbmVkIGRlcml2ZWQgdHJhdmVyc2FsIGNsYXNzZXMgYnkgcnVubmluZ1xuICAgW3sgZHVuZSBidWlsZCBAbGludCB9XSB5b3UgY2FuIHJlcGxhY2UgdGhlIGFib3ZlIG1lbnRpb25lZCBtb2R1bGUgZGVmaW5pdGlvbnMgYnkgYVxuICAgW29wZW4gSW1wb3J0XSBhbmQgdXBkYXRlIFtJbXBvcnRdIHNvIHRoYXQgdGhlIFtKc10gbW9kdWxlIHBvaW50cyB0b1xuICAgW1ZlcnNpb25zLk9DYW1sXzR4eF0uXG4qKVxuXG4oKiBTb3VyY2UgY29kZSBsb2NhdGlvbnMgKHJhbmdlcyBvZiBwb3NpdGlvbnMpLCB1c2VkIGluIHBhcnNldHJlZS4gKilcblxudHlwZSBwb3NpdGlvbiA9IExleGluZy5wb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmFuZCBsb2NhdGlvbiA9IExvY2F0aW9uLnQgPSB7XG4gIGxvY19zdGFydCA6IHBvc2l0aW9uO1xuICBsb2NfZW5kIDogcG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmFuZCBsb2NhdGlvbl9zdGFjayA9IGxvY2F0aW9uIGxpc3RcblxuKCogTm90ZSBvbiB0aGUgdXNlIG9mIExleGluZy5wb3NpdGlvbiBpbiB0aGlzIG1vZHVsZS5cbiAgIElmIFtwb3NfZm5hbWUgPSBcIlwiXSwgdGhlbiB1c2UgWyFpbnB1dF9uYW1lXSBpbnN0ZWFkLlxuICAgSWYgW3Bvc19sbnVtID0gLTFdLCB0aGVuIFtwb3NfYm9sID0gMF0uIFVzZSBbcG9zX2NudW1dIGFuZFxuICAgcmUtcGFyc2UgdGhlIGZpbGUgdG8gZ2V0IHRoZSBsaW5lIGFuZCBjaGFyYWN0ZXIgbnVtYmVycy5cbiAgIEVsc2UgYWxsIGZpZWxkcyBhcmUgY29ycmVjdC5cbiopXG5hbmQgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0geyB0eHQgOiAnYTsgbG9jIDogbG9jYXRpb24gfVxuXG4oKiBMb25nIGlkZW50aWZpZXJzLCB1c2VkIGluIHBhcnNldHJlZS4gKilcbmFuZCBsb25naWRlbnQgPSBMb25naWRlbnQudCA9XG4gIHwgTGlkZW50IG9mIHN0cmluZ1xuICB8IExkb3Qgb2YgbG9uZ2lkZW50ICogc3RyaW5nXG4gIHwgTGFwcGx5IG9mIGxvbmdpZGVudCAqIGxvbmdpZGVudFxuXG5hbmQgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2NcblxuKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuYW5kIHJlY19mbGFnID0gQXN0dHlwZXMucmVjX2ZsYWcgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuYW5kIGRpcmVjdGlvbl9mbGFnID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBVcHRvIHwgRG93bnRvXG5cbigqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuYW5kIHByaXZhdGVfZmxhZyA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IFByaXZhdGUgfCBQdWJsaWNcbmFuZCBtdXRhYmxlX2ZsYWcgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5hbmQgdmlydHVhbF9mbGFnID0gQXN0dHlwZXMudmlydHVhbF9mbGFnID0gVmlydHVhbCB8IENvbmNyZXRlXG5hbmQgb3ZlcnJpZGVfZmxhZyA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBPdmVycmlkZSB8IEZyZXNoXG5hbmQgY2xvc2VkX2ZsYWcgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyA9IENsb3NlZCB8IE9wZW5cbmFuZCBsYWJlbCA9IHN0cmluZ1xuXG5hbmQgYXJnX2xhYmVsID0gQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgfCBOb2xhYmVsXG4gIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICB8IE9wdGlvbmFsIG9mIHN0cmluZyAgKCoqIFs/bGFiZWw6VCAtPiAuLi5dICopXG5cbmFuZCB2YXJpYW5jZSA9IEFzdHR5cGVzLnZhcmlhbmNlID0gQ292YXJpYW50IHwgQ29udHJhdmFyaWFudCB8IE5vVmFyaWFuY2VcbmFuZCBpbmplY3Rpdml0eSA9IEFzdHR5cGVzLmluamVjdGl2aXR5ID0gSW5qZWN0aXZlIHwgTm9JbmplY3Rpdml0eVxuXG4oKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG5hbmQgY29uc3RhbnQgPSBQYXJzZXRyZWUuY29uc3RhbnQgPVxuICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogSW50ZWdlciBjb25zdGFudHMgc3VjaCBhcyBbM10gWzNsXSBbM0xdIFszbl0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGV4Y2VwdFxuICAgICAgICAgIFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlciAqKVxuICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIGxvY2F0aW9uICogc3RyaW5nIG9wdGlvblxuICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy4gKilcbiAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBGbG9hdCBjb25zdGFudCBzdWNoIGFzIFszLjRdLCBbMmU1XSBvciBbMS40ZS00XS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuIFN1ZmZpeGVzIGFyZSByZWplY3RlZFxuICAgICAgICAgIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbmFuZCBhdHRyaWJ1dGUgPSBQYXJzZXRyZWUuYXR0cmlidXRlID0ge1xuICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICBhdHRyX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW0BpZCBBUkddXSBhbmQgW1tAQGlkIEFSR11dLlxuXG4gICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULiBUaGUgY29tcGlsZXIgaWdub3Jlc1xuICAgIHVua25vd24gYXR0cmlidXRlcy4gKilcblxuYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4oKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci4gKilcblxuYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5hbmQgcGF5bG9hZCA9IFBhcnNldHJlZS5wYXlsb2FkID1cbiAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbPyBQXSBvciBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuYW5kIGNvcmVfdHlwZSA9IFBhcnNldHJlZS5jb3JlX3R5cGUgPSB7XG4gIHB0eXBfZGVzYyA6IGNvcmVfdHlwZV9kZXNjO1xuICBwdHlwX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwdHlwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvcmVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICB8IFB0eXBfdmFyIG9mIHN0cmluZyAgKCoqIEEgdHlwZSB2YXJpYWJsZSBzdWNoIGFzIFsnYV0gKilcbiAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZF19LFxuICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19LiAqKVxuICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXSByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlXG4gICAgICAgICAgW1QxICogLi4uICogVG5dLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXS4gKilcbiAgfCBQdHlwX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHR5cF9vYmplY3QoWyBsMTpUMTsgLi4uOyBsbjpUbiBdLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19LFxuICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LiAqKVxuICB8IFB0eXBfY2xhc3Mgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsjdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCAjdGNvbnN0cl0gd2hlbiBbbD1bVF1dLFxuICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZyAgKCoqIFtUIGFzICdhXS4gKilcbiAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbWyBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWz4gYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfSxcbiAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgIC0gW1s8IGBBfGBCID4gYFggYFkgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW1wiWFwiO1wiWVwiXV0uICopXG4gIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9jb25zdHJhaW50fVxuICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZyB0byBhIGNvbnN0cmFpbnQgb24gYVxuICAgICAgICAgICAgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXG4gICAgICAgICAgXX1cbiAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbF19IGZvciBtZXRob2RzXG4gICAgICAgICAgICAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9XG4gICAgICAgICAgICBbUGN0Zl9tZXRob2RdfSBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX0gW1BleHBfcG9seV19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX3R5cGV9IFtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshbGFiZWxfZGVjbGFyYXRpb259LlxuXG4gICAgICAgICAgLSBBcyBhIHshY29yZV90eXBlfSBvZiBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfb2JqZWN0fSBbUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfdHlwZX0gW3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgIHshdmFsdWVfZGVzY3JpcHRpb259LiAqKVxuICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuYW5kIHBhY2thZ2VfdHlwZSA9IGxvbmdpZGVudF9sb2MgKiAobG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSkgbGlzdFxuKCoqIEFzIHshcGFja2FnZV90eXBlfSB0eXBlZCB2YWx1ZXM6XG5cbiAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAtIFsoUywgWyh0MSwgVDEpIDsgLi4uIDsgKHRuLCBUbildKV0gcmVwcmVzZW50c1xuICAgICAgWyhtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKV0uICopXG5cbmFuZCByb3dfZmllbGQgPSBQYXJzZXRyZWUucm93X2ZpZWxkID0ge1xuICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICBwcmZfbG9jIDogbG9jYXRpb247XG4gIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIHJvd19maWVsZF9kZXNjID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtSdGFnKGBBLCBiLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgIC0gW2BBIG9mIFRdIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1RdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXS5cblxuICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYSBjb25zdGFudCAoZW1wdHkpXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAtIFsmXSBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvciAoc2VlXG4gICAgICAgICAgICA0LjIgaW4gdGhlIG1hbnVhbCkgKilcbiAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGUgICgqKiBbWyB8IHQgXV0gKilcblxuYW5kIG9iamVjdF9maWVsZCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgPSB7XG4gIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gIHBvZl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgb2JqZWN0X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICB8IE90YWcgb2YgbGFiZWwgbG9jICogY29yZV90eXBlXG4gIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbigqKiB7MiBQYXR0ZXJuc30gKilcblxuYW5kIHBhdHRlcm4gPSBQYXJzZXRyZWUucGF0dGVybiA9IHtcbiAgcHBhdF9kZXNjIDogcGF0dGVybl9kZXNjO1xuICBwcGF0X2xvYyA6IGxvY2F0aW9uO1xuICBwcGF0X2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwcGF0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHBhdHRlcm5fZGVzYyA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPVxuICB8IFBwYXRfYW55ICAoKiogVGhlIHBhdHRlcm4gW19dLiAqKVxuICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAoKiogQW4gYWxpYXMgcGF0dGVybiBzdWNoIGFzIFtQIGFzICdhXSAqKVxuICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlciBidXQgcmVqZWN0ZWQgYnlcbiAgICAgICAgICB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAoKiogUGF0dGVybnMgWyhQMSwgLi4uLCBQbildLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBwYXRfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiAoc3RyaW5nIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uXG4gICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbYXJnc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgLSBbQyAodHlwZSBhIGIpIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXSAqKVxuICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtwYXRdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdICopXG4gIHwgUHBhdF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH0gW0Nsb3NlZF19XG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19XG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtQMSB8IFAyXSAqKVxuICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgfCBQcGF0X3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFBhdHRlcm4gWyN0Y29uc3RdICopXG4gIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICgqKiBbUHBhdF91bnBhY2socyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAtIFsobW9kdWxlIF8pXSB3aGVuIFtzXSBpcyBbTm9uZV1cblxuICAgICAgICAgIE5vdGU6IFsobW9kdWxlIFAgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrKFNvbWUgXCJQXCIpLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICB8IFBwYXRfb3BlbiBvZiBsb25naWRlbnRfbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBleHByZXNzaW9uID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gPSB7XG4gIHBleHBfZGVzYyA6IGV4cHJlc3Npb25fZGVzYztcbiAgcGV4cF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcGV4cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBleHByZXNzaW9uX2Rlc2MgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgfCBQZXhwX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBJZGVudGlmaWVycyBzdWNoIGFzIFt4XSBhbmQgW00ueF0gKilcbiAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSxcbiAgICAgICAgICBbMW5dICopXG4gIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfbGV0KGZsYWcsIFsoUDEsRTEpIDsgLi4uIDsgKFBuLEVuKV0sIEUpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXMgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZnVuKGxibCwgZXhwMCwgUCwgRTEpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF1cblxuICAgICAgICAgIE5vdGVzOlxuXG4gICAgICAgICAgLSBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5IHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn0gW1BleHBfZnVuXX0uXG4gICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1cbiAgICAgICAgICAgIFtQZXhwX2Z1bl19LiAqKVxuICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICBbbGldIGNhbiBiZSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSAobm9uIGxhYmVsZWRcbiAgICAgICAgICBhcmd1bWVudCksIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH0gW0xhYmVsbGVkXX0gKGxhYmVsbGVkXG4gICAgICAgICAgYXJndW1lbnRzKSBvciB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbF19IChvcHRpb25hbFxuICAgICAgICAgIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXSAqKVxuICB8IFBleHBfY29uc3RydWN0IG9mIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbQ10gd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV0gKilcbiAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW2BBXSB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0gKilcbiAgfCBQZXhwX3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICAoKiogW0UubF0gKilcbiAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99IFtVcHRvXX1cbiAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99IFtEb3dudG9dfSAqKVxuICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gWyhFIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLiAqKVxuICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICB8IFBleHBfbmV3IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbbmV3IE0uY10gKilcbiAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9IFtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgdmFsdWVzKS4gKilcbiAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG5hbmQgY2FzZSA9IFBhcnNldHJlZS5jYXNlID0ge1xuICBwY19saHMgOiBwYXR0ZXJuO1xuICBwY19ndWFyZCA6IGV4cHJlc3Npb24gb3B0aW9uO1xuICBwY19yaHMgOiBleHByZXNzaW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG5hbmQgbGV0b3AgPSBQYXJzZXRyZWUubGV0b3AgPSB7XG4gIGxldF8gOiBiaW5kaW5nX29wO1xuICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICBib2R5IDogZXhwcmVzc2lvbjtcbn1cblxuYW5kIGJpbmRpbmdfb3AgPSBQYXJzZXRyZWUuYmluZGluZ19vcCA9IHtcbiAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gIHBib3BfcGF0IDogcGF0dGVybjtcbiAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICBwYm9wX2xvYyA6IGxvY2F0aW9uO1xufVxuXG4oKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPSB7XG4gIHB2YWxfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB2YWxfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcHZhbF9wcmltIDogc3RyaW5nIGxpc3Q7XG4gIHB2YWxfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB2YWxfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcblxuICAgIC0gW3ZhbCB4OiBUXSwgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19IFtwdmFsX3ByaW1dfSBpcyBbW11dXG4gICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1cbiAgICAgIFtwdmFsX3ByaW1dfSBpcyBbW1wiczFcIjsuLi5cInNuXCJdXSAqKVxuXG4oKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHB0eXBlX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdHlwZV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgcHR5cGVfY3N0cnMgOiAoY29yZV90eXBlICogY29yZV90eXBlICogbG9jYXRpb24pIGxpc3Q7XG4gICAgICAoKiogWy4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nXSAqKVxuICBwdHlwZV9raW5kIDogdHlwZV9raW5kO1xuICBwdHlwZV9wcml2YXRlIDogcHJpdmF0ZV9mbGFnOyAgKCoqIGZvciBbPSBwcml2YXRlIC4uLl0gKilcbiAgcHR5cGVfbWFuaWZlc3QgOiBjb3JlX3R5cGUgb3B0aW9uOyAgKCoqIHJlcHJlc2VudHMgWz0gVF0gKilcbiAgcHR5cGVfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHB0eXBlX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbiwgZm9yIHZhcmlvdXNcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9IFtwdHlwZV9raW5kXX0gYW5kXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH0gW3B0eXBlX21hbmlmZXN0XX0gdmFsdWVzOlxuXG4gICAgLSBbdHlwZSB0XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDBdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9XG4gICAgICBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi5dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fSBbUHR5cGVfdmFyaWFudF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0ge2w6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1cbiAgICAgIFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfSBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSAuLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn0gW1B0eXBlX29wZW5dfSxcbiAgICAgIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXS4gKilcblxuYW5kIHR5cGVfa2luZCA9IFBhcnNldHJlZS50eXBlX2tpbmQgPVxuICB8IFB0eXBlX2Fic3RyYWN0XG4gIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gIHwgUHR5cGVfb3BlblxuXG5hbmQgbGFiZWxfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPSB7XG4gIHBsZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGxkX211dGFibGUgOiBtdXRhYmxlX2ZsYWc7XG4gIHBsZF90eXBlIDogY29yZV90eXBlO1xuICBwbGRfbG9jIDogbG9jYXRpb247XG4gIHBsZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW0BpZDFdIFtAaWQyXV0gKilcbn1cbigqKiAtIFt7IC4uLjsgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9IFtwbGRfbXV0YWJsZV19XG4gICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0sXG4gICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9XG4gICAgICBbcGxkX211dGFibGVdfSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfS5cblxuICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0ge1xuICBwY2RfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjZF92YXJzIDogc3RyaW5nIGxvYyBsaXN0O1xuICBwY2RfYXJncyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgcGNkX3JlcyA6IGNvcmVfdHlwZSBvcHRpb247XG4gIHBjZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29uc3RydWN0b3JfYXJndW1lbnRzID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259IHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yXG4gICAgICAgICAgYXJndW1lbnRzIG9mOlxuXG4gICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDOiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtdXSxcbiAgICAgICAgICAtIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAtIFtDIG9mIHsuLi59XSB3aGVuIFtyZXMgPSBOb25lXSwgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAgICAgICAtIFtDOiB7Li4ufSAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLiAqKVxuXG5hbmQgdHlwZV9leHRlbnNpb24gPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPSB7XG4gIHB0eWV4dF9wYXRoIDogbG9uZ2lkZW50X2xvYztcbiAgcHR5ZXh0X3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHB0eWV4dF9jb25zdHJ1Y3RvcnMgOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgcHR5ZXh0X3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7XG4gIHB0eWV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAoW3R5cGUgdCArPSAuLi5dKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSB7XG4gIHBleHRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICBwZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwZXh0X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgdHlwZV9leGNlcHRpb24gPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPSB7XG4gIHB0eWV4bl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgcHR5ZXhuX2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBhIG5ldyBleGNlcHRpb24gKFtleGNlcHRpb24gRV0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXSBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uXG4gICAgICAgICAgY29uc3RydWN0b3IuIEl0IGNhbiBiZTpcblxuICAgICAgICAgIHt1bFxuICAgICAgICAgICB7LSBbQyBvZiBUMSAqIC4uLiAqIFRuXVxuICAgICAgICAgICAgICB3aGVuOlxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbTm9uZV0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgIH0gKilcbiAgfCBQZXh0X3JlYmluZCBvZiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW1BleHRfcmViaW5kKEQpXSByZS1leHBvcnQgdGhlIGNvbnN0cnVjdG9yIFtEXSB3aXRoIHRoZSBuZXcgbmFtZSBbQ10gKilcblxuKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX3R5cGUgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSA9IHtcbiAgcGN0eV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjO1xuICBwY3R5X2xvYyA6IGxvY2F0aW9uO1xuICBwY3R5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICB8IFBjdHlfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgLSBbP2w6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19LiAqKVxuICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFslaWRdICopXG4gIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbmFuZCBjbGFzc19zaWduYXR1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0ge1xuICBwY3NpZ19zZWxmIDogY29yZV90eXBlO1xuICBwY3NpZ19maWVsZHMgOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zaWduYXR1cmUucGNzaWdfc2VsZn0gW3Bjc2lnX3NlbGZdfSBpc1xuICAgICAge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9IFtQdHlwX2FueV19ICopXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSB7XG4gIHBjdGZfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgcGN0Zl9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0Zl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICgqKiBbbWV0aG9kIHg6IFRdXG5cbiAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG4gIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgJ2EgY2xhc3NfaW5mb3MgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgPSB7XG4gIHBjaV92aXJ0IDogdmlydHVhbF9mbGFnO1xuICBwY2lfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcGNpX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2lfZXhwciA6ICdhO1xuICBwY2lfbG9jIDogbG9jYXRpb247XG4gIHBjaV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgIC0gW2NsYXNzIHZpcnR1YWwgYyA9IC4uLl1cblxuICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uICopXG5cbmFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcbmFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuYW5kIGNsYXNzX2V4cHIgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciA9IHtcbiAgcGNsX2Rlc2MgOiBjbGFzc19leHByX2Rlc2M7XG4gIHBjbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICB8IFBjbF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBDRV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXS4gKilcbiAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldIHJlcHJlc2VudHNcbiAgICAgICAgICBbQ0UgfmwxOkUxIC4uLiB+bG46RW5dLiBbbGldIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yXG4gICAgICAgICAgc3RhcnQgd2l0aCBbP10gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG5hbmQgY2xhc3Nfc3RydWN0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9IHtcbiAgcGNzdHJfc2VsZiA6IHBhdHRlcm47XG4gIHBjc3RyX2ZpZWxkcyA6IGNsYXNzX2ZpZWxkIGxpc3Q7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAtIFtvYmplY3QgLi4uIGVuZF0gd2hlbiB7eyFjbGFzc19zdHJ1Y3R1cmUucGNzdHJfc2VsZn0gW3Bjc3RyX3NlbGZdfSBpc1xuICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fSBbUHBhdF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgPSB7XG4gIHBjZl9kZXNjIDogY2xhc3NfZmllbGRfZGVzYztcbiAgcGNmX2xvYyA6IGxvY2F0aW9uO1xuICBwY2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICgqKiBbUGNmX2luaGVyaXQoZmxhZywgQ0UsIHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1cbiAgICAgICAgICAgIFtGcmVzaF19IGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9XG4gICAgICAgICAgICBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbU29tZSB4XSAqKVxuICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW3ZhbCB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1cbiAgICAgICAgICAgIFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfSBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9XG4gICAgICAgICAgICBbTXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpc1xuICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsKFQpXX0gKilcbiAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIC0gW21ldGhvZCB4ID0gRV0gKFtFXSBjYW4gYmUgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVxuICAgICAgICAgICAgW1BleHBfcG9seV19KVxuICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVxuICAgICAgICAgICAgW1B0eXBfcG9seV19KSAqKVxuICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvbiAgKCoqIFtpbml0aWFsaXplciBFXSAqKVxuICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgY2xhc3NfZmllbGRfa2luZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4oKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfdHlwZSA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSA9IHtcbiAgcG10eV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYztcbiAgcG10eV9sb2MgOiBsb2NhdGlvbjtcbiAgcG10eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfdHlwZV9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICB8IFBtdHlfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtQbXR5X2lkZW50KFMpXSByZXByZXNlbnRzIFtTXSAqKVxuICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1UMl0gKilcbiAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUG10eV9hbGlhcyBvZiBsb25naWRlbnRfbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbmFuZCBmdW5jdG9yX3BhcmFtZXRlciA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIHwgVW5pdCAgKCoqIFsoKV0gKilcbiAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhYIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbU29tZSBYXSxcbiAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbmFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbmFuZCBzaWduYXR1cmVfaXRlbSA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9IHtcbiAgcHNpZ19kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgcHNpZ19sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gKilcbiAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgOj0gLi4uIGFuZCAuLi4gYW5kIHRuIDo9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb24gICgqKiBbbW9kdWxlIFggOj0gTV0gKilcbiAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTIDo9ICAuLi5dICopXG4gIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uXSAqKVxuICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgbW9kdWxlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG1kX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1kX3R5cGUgOiBtb2R1bGVfdHlwZTtcbiAgcG1kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbWRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG5hbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID0ge1xuICBwbXNfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtc19tYW5pZmVzdCA6IGxvbmdpZGVudF9sb2M7XG4gIHBtc19hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1zX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbmFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcG10ZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcG10ZF90eXBlIDogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICBwbXRkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXRkX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW1MgPSBNVF0sXG4gICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCB3aGVuXG4gICAgICB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9IFtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uICopXG5cbmFuZCAnYSBvcGVuX2luZm9zID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgPSB7XG4gIHBvcGVuX2V4cHIgOiAnYTtcbiAgcG9wZW5fb3ZlcnJpZGUgOiBvdmVycmlkZV9mbGFnO1xuICBwb3Blbl9sb2MgOiBsb2NhdGlvbjtcbiAgcG9wZW5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSAoc2lsZW5jZXMgdGhlIFwidXNlZFxuICAgICAgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9IFtGcmVzaF19ICopXG5cbmFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gbG9uZ2lkZW50X2xvYyBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT10gKilcblxuYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvcGVuIE0uTl1cbiAgICAtIFtvcGVuIE0oTikuT11cbiAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG5hbmQgJ2EgaW5jbHVkZV9pbmZvcyA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zID0ge1xuICBwaW5jbF9tb2QgOiAnYTtcbiAgcGluY2xfbG9jIDogbG9jYXRpb247XG4gIHBpbmNsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTUVdICopXG5cbmFuZCB3aXRoX2NvbnN0cmFpbnQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgfCBQd2l0aF90eXBlIG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgPSAuLi5dXG5cbiAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIHRoZVxuICAgICAgICAgIHR5cGVfZGVjbGFyYXRpb24uICopXG4gIHwgUHdpdGhfbW9kdWxlIG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jICAoKiogW3dpdGggbW9kdWxlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZSBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgdHlwZSBYLlkgOj0gc2lnIGVuZF0gKilcbiAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXV0gKilcbiAgfCBQd2l0aF9tb2RzdWJzdCBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX2V4cHIgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgPSB7XG4gIHBtb2RfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2M7XG4gIHBtb2RfbG9jIDogbG9jYXRpb247XG4gIHBtb2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX2V4cHJfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgfCBQbW9kX2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbWF0gKilcbiAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbmFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9IHtcbiAgcHN0cl9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgcHN0cl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG5hbmQgdmFsdWVfYmluZGluZyA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID0ge1xuICBwdmJfcGF0IDogcGF0dGVybjtcbiAgcHZiX2V4cHIgOiBleHByZXNzaW9uO1xuICBwdmJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHB2Yl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIG1vZHVsZV9iaW5kaW5nID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID0ge1xuICBwbWJfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWJfZXhwciA6IG1vZHVsZV9leHByO1xuICBwbWJfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIHBtYl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2JpbmRpbmddIHJlcHJlc2VudHMgW21vZHVsZSBYID0gTUVdICopXG5cbigqKiB7MSBUb3BsZXZlbH0gKilcbigqKiB7MiBUb3BsZXZlbCBwaHJhc2VzfSAqKVxuXG5hbmQgdG9wbGV2ZWxfcGhyYXNlID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG5hbmQgdG9wbGV2ZWxfZGlyZWN0aXZlID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSA9IHtcbiAgcGRpcl9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICBwZGlyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50ID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9IHtcbiAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICBwZGlyYV9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICB8IFBkaXJfaWRlbnQgb2YgbG9uZ2lkZW50XG4gIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuYW5kIGNhc2VzID0gY2FzZSBsaXN0IFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1cblxuY2xhc3MgdmlydHVhbCBtYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBpdGVyID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsaXN0IC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wdGlvbiAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHVuaXRcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBzZWxmI3N0cmluZyBwb3NfZm5hbWU7XG4gICAgICAgIHNlbGYjaW50IHBvc19sbnVtO1xuICAgICAgICBzZWxmI2ludCBwb3NfYm9sO1xuICAgICAgICBzZWxmI2ludCBwb3NfY251bVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0O1xuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19lbmQ7XG4gICAgICAgIHNlbGYjYm9vbCBsb2NfZ2hvc3RcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbG9jIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBfYSB0eHQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gbG9jXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBiXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gdW5pdCA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IHVuaXQgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKClcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGNcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWU7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gYXR0cl9sb2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgIHNlbGYjcGF5bG9hZCBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKClcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGNcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgIGJcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHByZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNib29sIGI7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9mX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0YW50IGJcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYlxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBkXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjO1xuICAgICAgICAgICAgc2VsZiNkaXJlY3Rpb25fZmxhZyBkO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGVcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYlxuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+ICgpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNfbGhzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwY19yaHNcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIHNlbGYjYmluZGluZ19vcCBsZXRfO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHM7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBib2R5XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcDtcbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBib3BfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGJvcF9sb2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBjKVxuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+ICgpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWU7XG4gICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbGRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnM7XG4gICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGg7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lO1xuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIGM7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGQpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBjbGFzc19pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwY2lfcGFyYW1zO1xuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZTtcbiAgICAgICAgX2EgcGNpX2V4cHI7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNpX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYztcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBkXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGJcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYylcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXR5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGJcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+ICgpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtZF9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWU7XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXNfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbXRkX2xvY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIG9wZW5faW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcG9wZW5fZXhwcjtcbiAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgX2EgcGluY2xfbW9kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHN0cl9sb2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB2Yl9sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWJfbG9jXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBhY2NcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT4gc2VsZiNjaGFyIGEgYWNjXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQU2lnIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IGFjY1xuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IGFjY1xuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGEgYWNjXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbmV3IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYSBhY2NcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBhY2NcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IGFjY1xuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBhY2NcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT4gc2VsZiNjbGFzc190eXBlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPiBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYSBhY2NcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYSBhY2NcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGRfbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdhY2MgLT4gYm9vbCAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+IGNoYXIgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gaW50ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxpc3QgLT4gJ2FjYyAtPiAnYSBsaXN0ICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2Egb3B0aW9uIC0+ICdhY2MgLT4gJ2Egb3B0aW9uICogJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdhY2MgLT4gc3RyaW5nICogJ2FjY1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ2FjYyAtPiBwb3NpdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSwgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2xudW0sIGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2JvbCwgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfY251bSBhY2MgaW5cbiAgICAgICAgKHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiBsb2NhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZW5kLCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QsIGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgICh7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gbG9jYXRpb25fc3RhY2sgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbG9jIC0+ICdhY2MgLT4gJ2EgbG9jICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgdHh0LCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBsb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICAoeyB0eHQ7IGxvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gbG9uZ2lkZW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExpZGVudCBhLCBhY2MpXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoTGRvdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBiIGFjYyBpblxuICAgICAgICAgICAgKExhcHBseSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+IGxvbmdpZGVudF9sb2MgKiAnYWNjID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAnYWNjIC0+IHJlY19mbGFnICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ2FjYyAtPiBkaXJlY3Rpb25fZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gcHJpdmF0ZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ2FjYyAtPiBtdXRhYmxlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+IHZpcnR1YWxfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiBvdmVycmlkZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gY2xvc2VkX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiBsYWJlbCAqICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+IGFyZ19sYWJlbCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIGFjYylcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMYWJlbGxlZCBhLCBhY2MpXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoT3B0aW9uYWwgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ2FjYyAtPiB2YXJpYW5jZSAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdhY2MgLT4gaW5qZWN0aXZpdHkgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiBjb25zdGFudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2ludGVnZXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2hhciBhIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9jaGFyIGEsIGFjYylcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X3N0cmluZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfZmxvYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gYXR0cmlidXRlICogJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkLCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYXR0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ2FjYyAtPiBhdHRyaWJ1dGVzICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+IHBheWxvYWQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTdHIgYSwgYWNjKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFNpZyBhLCBhY2MpXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQVHlwIGEsIGFjYylcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBQYXQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdhY2MgLT4gY29yZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MsIGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXIgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9vYmplY3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2NsYXNzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF92YXJpYW50IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BhY2thZ2UgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiBwYWNrYWdlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIGIgYWNjXG4gICAgICAgIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiByb3dfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MsIGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiByb3dfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFJ0YWcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUmluaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+IG9iamVjdF9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYywgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChPdGFnIChhLCBiKSwgYWNjKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKE9pbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+IHBhdHRlcm4gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYywgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gcGF0dGVybl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXIgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9pbnRlcnZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF90eXBlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+IGV4cHJlc3Npb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYywgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjaywgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdhY2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjYXNlcyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuY3Rpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbWF0Y2ggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjYXNlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHJ5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cnVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdmFyaWFudCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZpZWxkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VxdWVuY2UgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3doaWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBhY2MgaW5cbiAgICAgICAgICAgIGxldCBlLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29lcmNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZW5kIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ldyBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGluc3R2YXIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX292ZXJyaWRlIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXNzZXJ0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGF6eSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wb2x5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb2JqZWN0IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX25ld3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vcGVuIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGV0b3AgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG9wIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoUGV4cF91bnJlYWNoYWJsZSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gY2FzZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY19saHMsIGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBwY19ndWFyZCwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGFjYyBpblxuICAgICAgICBsZXQgcGNfcmhzLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICAoeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiBsZXRvcCAqICdhY2MgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IGFjYyAtPlxuICAgICAgICBsZXQgbGV0XywgYWNjID0gc2VsZiNiaW5kaW5nX29wIGxldF8gYWNjIGluXG4gICAgICAgIGxldCBhbmRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgYWNjIGluXG4gICAgICAgIGxldCBib2R5LCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBhY2MgaW5cbiAgICAgICAgKHsgbGV0XzsgYW5kczsgYm9keSB9LCBhY2MpXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ2FjYyAtPiBiaW5kaW5nX29wICogJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwYm9wX29wLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9wcmltLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGMgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQsIGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QsIGFjYyA9XG4gICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAnYWNjIC0+IHR5cGVfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgYWNjKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfdmFyaWFudCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3JlY29yZCBhLCBhY2MpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3BlbiwgYWNjKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2RfdmFycywgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXJncywgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfcmVzLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3JlY29yZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+IHR5cGVfZXh0ZW5zaW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdhY2MgLT4gdHlwZV9leGNlcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciwgYWNjID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3IgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfZGVjbCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9yZWJpbmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdhY2MgLT4gY2xhc3NfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGFjY1xuICAgICAgICBpblxuICAgICAgICAoeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc190eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9pbmhlcml0IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIGQpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0LCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwY2lfZXhwciwgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwY2lfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiBjbGFzc19leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9mdW4gKGEsIGIsIGMsIGQpLCBhY2MpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjbF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAnYWNjIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICAoeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaGVyaXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl9jb25zdHJhaW50IGEsIGFjYylcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbml0aWFsaXplciBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKENma192aXJ0dWFsIGEsIGFjYylcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX2NvbmNyZXRlIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfd2l0aCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfdHlwZW9mIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9hbGlhcyBhLCBhY2MpXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAnYWNjIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgYWNjKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoTmFtZWQgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjLCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgICh7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3ZhbHVlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1kX3R5cGUsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1zX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciwgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCwgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ2FjYyAtPiB3aXRoX2NvbnN0cmFpbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHVsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kc3Vic3QgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+IG1vZHVsZV9leHByICogJ2FjYyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2Rfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3VucGFjayBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+IHN0cnVjdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYywgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9ldmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ZhbHVlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9wcmltaXRpdmUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3JlY21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R0eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfb3BlbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhdHRyaWJ1dGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4dGVuc2lvbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+IHZhbHVlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZiX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwdmJfZXhwciwgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gbW9kdWxlX2JpbmRpbmcgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2V4cHIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ2FjYyAtPiB0b3BsZXZlbF9waHJhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RlZiBhLCBhY2MpXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kaXIgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAnYWNjIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9hcmcsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGFjYyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYywgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX3N0cmluZyBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2ludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNib29sIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9ib29sIGEsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdhY2MgLT4gY2FzZXMgKiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXJcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb25cblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExpZGVudCBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9XG4gICAgICBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBPcHRpb25hbCBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSA9IGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBUeXAgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfb2JqZWN0IChhLCBiKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBQcGF0X2FueVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF91bnBhY2sgYVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9pZGVudCBhXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICBQZXhwX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdHJ5IChhLCBiKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfZmllbGQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlcXVlbmNlIChhLCBiKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfY29lcmNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9uZXcgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX292ZXJyaWRlIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfYXNzZXJ0IGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbmV3dHlwZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9vcGVuIChhLCBiKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9XG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV9yZWNvcmQgYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gUHR5cGVfb3BlblxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl90dXBsZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2EgY2xhc3NfaW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICBQY2xfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgUGNmX2luaGVyaXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2luaXRpYWxpemVyIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBDZmtfdmlydHVhbCBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBOYW1lZCAoYSwgYilcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3ZhbHVlIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19pbmNsdWRlIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYSBvcGVuX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zXG4gICAgICAgID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kc3Vic3QgKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3VucGFjayBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdHlwZSBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9ib29sIGFcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3B0aW9uIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IHBvc19jbnVtIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBwb3NfbG51bSk7XG4gICAgICAgICAgICAoXCJwb3NfYm9sXCIsIHBvc19ib2wpO1xuICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgcG9zX2NudW0pO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgIChcImxvY19lbmRcIiwgbG9jX2VuZCk7XG4gICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgbG9jX2dob3N0KTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGxvYyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJ0eHRcIiwgdHh0KTsgKFwibG9jXCIsIGxvYykgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGlkZW50XCIgWyBhIF1cbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGRvdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFwcGx5XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAncmVzID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiTm9ucmVjdXJzaXZlXCIgW11cbiAgICAgICAgfCBSZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJSZWN1cnNpdmVcIiBbXVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogZGlyZWN0aW9uX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVcHRvIC0+IHNlbGYjY29uc3RyIFwiVXB0b1wiIFtdXG4gICAgICAgIHwgRG93bnRvIC0+IHNlbGYjY29uc3RyIFwiRG93bnRvXCIgW11cblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcml2YXRlIC0+IHNlbGYjY29uc3RyIFwiUHJpdmF0ZVwiIFtdXG4gICAgICAgIHwgUHVibGljIC0+IHNlbGYjY29uc3RyIFwiUHVibGljXCIgW11cblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbW11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJJbW11dGFibGVcIiBbXVxuICAgICAgICB8IE11dGFibGUgLT4gc2VsZiNjb25zdHIgXCJNdXRhYmxlXCIgW11cblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBWaXJ0dWFsIC0+IHNlbGYjY29uc3RyIFwiVmlydHVhbFwiIFtdXG4gICAgICAgIHwgQ29uY3JldGUgLT4gc2VsZiNjb25zdHIgXCJDb25jcmV0ZVwiIFtdXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdmVycmlkZSAtPiBzZWxmI2NvbnN0ciBcIk92ZXJyaWRlXCIgW11cbiAgICAgICAgfCBGcmVzaCAtPiBzZWxmI2NvbnN0ciBcIkZyZXNoXCIgW11cblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+IHNlbGYjY29uc3RyIFwiQ2xvc2VkXCIgW11cbiAgICAgICAgfCBPcGVuIC0+IHNlbGYjY29uc3RyIFwiT3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IHNlbGYjY29uc3RyIFwiTm9sYWJlbFwiIFtdXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhYmVsbGVkXCIgWyBhIF1cbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3B0aW9uYWxcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDb3ZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb3ZhcmlhbnRcIiBbXVxuICAgICAgICB8IENvbnRyYXZhcmlhbnQgLT4gc2VsZiNjb25zdHIgXCJDb250cmF2YXJpYW50XCIgW11cbiAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IHNlbGYjY29uc3RyIFwiTm9WYXJpYW5jZVwiIFtdXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEluamVjdGl2ZSAtPiBzZWxmI2NvbnN0ciBcIkluamVjdGl2ZVwiIFtdXG4gICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiBzZWxmI2NvbnN0ciBcIk5vSW5qZWN0aXZpdHlcIiBbXVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfaW50ZWdlclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfY2hhclwiIFsgYSBdXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3Rfc3RyaW5nXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2Zsb2F0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgYXR0cl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBiIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU3RyXCIgWyBhIF1cbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQU2lnXCIgWyBhIF1cbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQVHlwXCIgWyBhIF1cbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQUGF0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgcHR5cF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBzZWxmI2NvbnN0ciBcIlB0eXBfYW55XCIgW11cbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9vYmplY3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY2xhc3NcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF92YXJpYW50XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wYWNrYWdlXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgYlxuICAgICAgICBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcmZfbG9jXCIsIHByZl9sb2MpO1xuICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJ0YWdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIHBvZl9sb2MpO1xuICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT3RhZ1wiIFsgYTsgYiBdXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9pbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgcHBhdF9sb2MpO1xuICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IHNlbGYjY29uc3RyIFwiUHBhdF9hbnlcIiBbXVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FsaWFzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9pbnRlcnZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgcGV4cF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RhbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuY3Rpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX21hdGNoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHJ5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9yZWNvcmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZmllbGRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0ZmllbGRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcnJheVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2lmdGhlbmVsc2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VxdWVuY2VcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfd2hpbGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGUgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mb3JcIiBbIGE7IGI7IGM7IGQ7IGUgXVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb2VyY2VcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2VuZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3ZlcnJpZGVcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0bW9kdWxlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Fzc2VydFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vYmplY3RcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX25ld3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BhY2tcIiBbIGEgXVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vcGVuXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0b3BcIiBbIGEgXVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBzZWxmI2NvbnN0ciBcIlBleHBfdW5yZWFjaGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY19saHNcIiwgcGNfbGhzKTsgKFwicGNfZ3VhcmRcIiwgcGNfZ3VhcmQpOyAoXCJwY19yaHNcIiwgcGNfcmhzKSBdXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGJvZHkgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJsZXRfXCIsIGxldF8pOyAoXCJhbmRzXCIsIGFuZHMpOyAoXCJib2R5XCIsIGJvZHkpIF1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBwYm9wX29wKTtcbiAgICAgICAgICAgIChcInBib3BfcGF0XCIsIHBib3BfcGF0KTtcbiAgICAgICAgICAgIChcInBib3BfZXhwXCIsIHBib3BfZXhwKTtcbiAgICAgICAgICAgIChcInBib3BfbG9jXCIsIHBib3BfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgcHZhbF9wcmltKTtcbiAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgcHZhbF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBwdHlwZV9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX2Fic3RyYWN0XCIgW11cbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV92YXJpYW50XCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3JlY29yZFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBzZWxmI2NvbnN0ciBcIlB0eXBlX29wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIHBsZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgIChcInBsZF90eXBlXCIsIHBsZF90eXBlKTtcbiAgICAgICAgICAgIChcInBsZF9sb2NcIiwgcGxkX2xvYyk7XG4gICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBwY2RfdmFycyk7XG4gICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBwY2RfYXJncyk7XG4gICAgICAgICAgICAoXCJwY2RfcmVzXCIsIHBjZF9yZXMpO1xuICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBwY2RfbG9jKTtcbiAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3N0cl9yZWNvcmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgcGV4dF9raW5kKTtcbiAgICAgICAgICAgIChcInBleHRfbG9jXCIsIHBleHRfbG9jKTtcbiAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfZGVjbFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X3JlYmluZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIHBjdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfYXJyb3dcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc2lnX3NlbGZcIiwgcGNzaWdfc2VsZik7IChcInBjc2lnX2ZpZWxkc1wiLCBwY3NpZ19maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfaW5oZXJpdFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGM7IGQgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIHBjaV92aXJ0KTtcbiAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBwY2lfZXhwcik7XG4gICAgICAgICAgICAoXCJwY2lfbG9jXCIsIHBjaV9sb2MpO1xuICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2xfbG9jXCIsIHBjbF9sb2MpO1xuICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBkIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzdHJfc2VsZlwiLCBwY3N0cl9zZWxmKTsgKFwicGNzdHJfZmllbGRzXCIsIHBjc3RyX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBwY2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbmhlcml0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX21ldGhvZFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9pbml0aWFsaXplclwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX3ZpcnR1YWxcIiBbIGEgXVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiQ2ZrX2NvbmNyZXRlXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgcG10eV9sb2MpO1xuICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3NpZ25hdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV93aXRoXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3R5cGVvZlwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9hbGlhc1wiIFsgYSBdXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gc2VsZiNjb25zdHIgXCJVbml0XCIgW11cbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJOYW1lZFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzaWdfZGVzY1wiLCBwc2lnX2Rlc2MpOyAoXCJwc2lnX2xvY1wiLCBwc2lnX2xvYykgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3ZhbHVlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgcG1kX25hbWUpO1xuICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgcG1kX3R5cGUpO1xuICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBwbWRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtc19uYW1lXCIsIHBtc19uYW1lKTtcbiAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBwbXNfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIHBtdGRfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgcGluY2xfbW9kKTtcbiAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHVsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHR5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF90eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2RzdWJzdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIHBtb2RfbG9jKTtcbiAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHN0cl9kZXNjXCIsIHBzdHJfZGVzYyk7IChcInBzdHJfbG9jXCIsIHBzdHJfbG9jKSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXZhbFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ZhbHVlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3ByaW1pdGl2ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBleHRcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXhjZXB0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcmVjbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R0eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzX3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHB2Yl9wYXQpO1xuICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgcHZiX2V4cHIpO1xuICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBwdmJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgcG1iX25hbWUpO1xuICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgcG1iX2V4cHIpO1xuICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBwbWJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGVmXCIgWyBhIF1cbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kaXJcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBwZGlyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBkaXJhX2Rlc2NcIiwgcGRpcmFfZGVzYyk7IChcInBkaXJhX2xvY1wiLCBwZGlyYV9sb2MpIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfc3RyaW5nXCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2ludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9ib29sXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjYXNlcyA6IGNhc2VzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogJ2N0eCAtPiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogJ2N0eCAtPiBib29sIC0+IGJvb2wgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAqICdyZXNcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICdjdHggLT4gc3RyaW5nIC0+IHN0cmluZyAqICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvc19mbmFtZSA9IFN0ZGxpYi5mc3QgcG9zX2ZuYW1lO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBTdGRsaWIuZnN0IHBvc19sbnVtO1xuICAgICAgICAgICAgcG9zX2JvbCA9IFN0ZGxpYi5mc3QgcG9zX2JvbDtcbiAgICAgICAgICAgIHBvc19jbnVtID0gU3RkbGliLmZzdCBwb3NfY251bTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgU3RkbGliLnNuZCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgICAoXCJwb3NfbG51bVwiLCBTdGRsaWIuc25kIHBvc19sbnVtKTtcbiAgICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBTdGRsaWIuc25kIHBvc19ib2wpO1xuICAgICAgICAgICAgICAoXCJwb3NfY251bVwiLCBTdGRsaWIuc25kIHBvc19jbnVtKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbG9jX3N0YXJ0ID0gU3RkbGliLmZzdCBsb2Nfc3RhcnQ7XG4gICAgICAgICAgICBsb2NfZW5kID0gU3RkbGliLmZzdCBsb2NfZW5kO1xuICAgICAgICAgICAgbG9jX2dob3N0ID0gU3RkbGliLmZzdCBsb2NfZ2hvc3Q7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIFN0ZGxpYi5zbmQgbG9jX3N0YXJ0KTtcbiAgICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBTdGRsaWIuc25kIGxvY19lbmQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZ2hvc3RcIiwgU3RkbGliLnNuZCBsb2NfZ2hvc3QpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbG9jIC0+ICdhIGxvYyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICAoIHsgdHh0ID0gU3RkbGliLmZzdCB0eHQ7IGxvYyA9IFN0ZGxpYi5mc3QgbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4IFsgKFwidHh0XCIsIFN0ZGxpYi5zbmQgdHh0KTsgKFwibG9jXCIsIFN0ZGxpYi5zbmQgbG9jKSBdXG4gICAgICAgIClcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKExpZGVudCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiTGlkZW50XCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBMZG90IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxkb3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGFwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jICogJ3JlcyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogJ2N0eCAtPiByZWNfZmxhZyAtPiByZWNfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGRpcmVjdGlvbl9mbGFnIDogJ2N0eCAtPiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6ICdjdHggLT4gdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiAnY3R4IC0+IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCAqICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gKE5vbGFiZWwsIHNlbGYjY29uc3RyIGN0eCBcIk5vbGFiZWxcIiBbXSlcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIExhYmVsbGVkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYWJlbGxlZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggT3B0aW9uYWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9wdGlvbmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiAnY3R4IC0+IHZhcmlhbmNlIC0+IHZhcmlhbmNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfaW50ZWdlciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfaW50ZWdlclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2NoYXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9jaGFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgKCBQY29uc3Rfc3RyaW5nIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X3N0cmluZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9mbG9hdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfZmxvYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGF0dHJfbmFtZSA9IFN0ZGxpYi5mc3QgYXR0cl9uYW1lO1xuICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gU3RkbGliLmZzdCBhdHRyX3BheWxvYWQ7XG4gICAgICAgICAgICBhdHRyX2xvYyA9IFN0ZGxpYi5mc3QgYXR0cl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIFN0ZGxpYi5zbmQgYXR0cl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIFN0ZGxpYi5zbmQgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgICAgKFwiYXR0cl9sb2NcIiwgU3RkbGliLnNuZCBhdHRyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogJ2N0eCAtPiBwYXlsb2FkIC0+IHBheWxvYWQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU3RyIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU3RyXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQU2lnIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQU2lnXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIChQVHlwIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQVHlwXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBQYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUFBhdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogJ2N0eCAtPiBjb3JlX3R5cGUgLT4gY29yZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gU3RkbGliLmZzdCBwdHlwX2Rlc2M7XG4gICAgICAgICAgICBwdHlwX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgU3RkbGliLnNuZCBwdHlwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6ICdjdHggLT4gY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYW55XCIgW10pXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jbGFzcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NsYXNzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQdHlwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhcmlhbnRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGFja2FnZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfcGFja2FnZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wYWNrYWdlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiAnY3R4IC0+IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHJmX2Rlc2MgPSBTdGRsaWIuZnN0IHByZl9kZXNjO1xuICAgICAgICAgICAgcHJmX2xvYyA9IFN0ZGxpYi5mc3QgcHJmX2xvYztcbiAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcmZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcmZfZGVzY1wiLCBTdGRsaWIuc25kIHByZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBTdGRsaWIuc25kIHByZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBSdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUnRhZ1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUmluaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJpbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBjdHggcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcG9mX2Rlc2M7XG4gICAgICAgICAgICBwb2ZfbG9jID0gU3RkbGliLmZzdCBwb2ZfbG9jO1xuICAgICAgICAgICAgcG9mX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcG9mX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9mX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBPdGFnIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk90YWdcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggT2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybiA6ICdjdHggLT4gcGF0dGVybiAtPiBwYXR0ZXJuICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IFN0ZGxpYi5mc3QgcHBhdF9kZXNjO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBTdGRsaWIuZnN0IHBwYXRfbG9jO1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBwYXRfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2NcIiwgU3RkbGliLnNuZCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogJ2N0eCAtPiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gKFBwYXRfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FueVwiIFtdKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2ludGVydmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfaW50ZXJ2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHggcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IFN0ZGxpYi5mc3QgcGV4cF9kZXNjO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBTdGRsaWIuZnN0IHBleHBfbG9jO1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHBleHBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2NcIiwgU3RkbGliLnNuZCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdGFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdGFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1bmN0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1bmN0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9tYXRjaCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX21hdGNoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF90cnkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90cnlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2ZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZmllbGRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0ZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGZpZWxkXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9pZnRoZW5lbHNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZnRoZW5lbHNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlcXVlbmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VxdWVuY2VcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF93aGlsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3doaWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgICggUGV4cF9mb3JcbiAgICAgICAgICAgICAgICAoIFN0ZGxpYi5mc3QgYSxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYixcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgYyxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZCxcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5mc3QgZSApLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZvclwiXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBhO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBiO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBjO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBkO1xuICAgICAgICAgICAgICAgICAgU3RkbGliLnNuZCBlO1xuICAgICAgICAgICAgICAgIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfY29lcmNlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb2VyY2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VuZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlbmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRpbnN0dmFyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0aW5zdHZhclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBleHBfb3ZlcnJpZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3ZlcnJpZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG1vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0bW9kdWxlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2xldGV4Y2VwdGlvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldGV4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXNzZXJ0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2Fzc2VydFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcG9seSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BvbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9vYmplY3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXd0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3dHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3BhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2xldG9wIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG9wXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAoUGV4cF91bnJlYWNoYWJsZSwgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdKVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjX2xocyA9IFN0ZGxpYi5mc3QgcGNfbGhzO1xuICAgICAgICAgICAgcGNfZ3VhcmQgPSBTdGRsaWIuZnN0IHBjX2d1YXJkO1xuICAgICAgICAgICAgcGNfcmhzID0gU3RkbGliLmZzdCBwY19yaHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNfbGhzXCIsIFN0ZGxpYi5zbmQgcGNfbGhzKTtcbiAgICAgICAgICAgICAgKFwicGNfZ3VhcmRcIiwgU3RkbGliLnNuZCBwY19ndWFyZCk7XG4gICAgICAgICAgICAgIChcInBjX3Joc1wiLCBTdGRsaWIuc25kIHBjX3Jocyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgbGV0XyA9IFN0ZGxpYi5mc3QgbGV0XztcbiAgICAgICAgICAgIGFuZHMgPSBTdGRsaWIuZnN0IGFuZHM7XG4gICAgICAgICAgICBib2R5ID0gU3RkbGliLmZzdCBib2R5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxldF9cIiwgU3RkbGliLnNuZCBsZXRfKTtcbiAgICAgICAgICAgICAgKFwiYW5kc1wiLCBTdGRsaWIuc25kIGFuZHMpO1xuICAgICAgICAgICAgICAoXCJib2R5XCIsIFN0ZGxpYi5zbmQgYm9keSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwYm9wX29wID0gU3RkbGliLmZzdCBwYm9wX29wO1xuICAgICAgICAgICAgcGJvcF9wYXQgPSBTdGRsaWIuZnN0IHBib3BfcGF0O1xuICAgICAgICAgICAgcGJvcF9leHAgPSBTdGRsaWIuZnN0IHBib3BfZXhwO1xuICAgICAgICAgICAgcGJvcF9sb2MgPSBTdGRsaWIuZnN0IHBib3BfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBib3Bfb3BcIiwgU3RkbGliLnNuZCBwYm9wX29wKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgU3RkbGliLnNuZCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAgIChcInBib3BfZXhwXCIsIFN0ZGxpYi5zbmQgcGJvcF9leHApO1xuICAgICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBTdGRsaWIuc25kIHBib3BfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZhbF9uYW1lID0gU3RkbGliLmZzdCBwdmFsX25hbWU7XG4gICAgICAgICAgICBwdmFsX3R5cGUgPSBTdGRsaWIuZnN0IHB2YWxfdHlwZTtcbiAgICAgICAgICAgIHB2YWxfcHJpbSA9IFN0ZGxpYi5mc3QgcHZhbF9wcmltO1xuICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmFsX2xvYyA9IFN0ZGxpYi5mc3QgcHZhbF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIFN0ZGxpYi5zbmQgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHZhbF90eXBlXCIsIFN0ZGxpYi5zbmQgcHZhbF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIFN0ZGxpYi5zbmQgcHZhbF9wcmltKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZhbF9sb2NcIiwgU3RkbGliLnNuZCBwdmFsX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGN0eCBjIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5cGVfbmFtZSA9IFN0ZGxpYi5mc3QgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBTdGRsaWIuZnN0IHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZCA9IFN0ZGxpYi5mc3QgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jID0gU3RkbGliLmZzdCBwdHlwZV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBTdGRsaWIuc25kIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBTdGRsaWIuc25kIHB0eXBlX2NzdHJzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBTdGRsaWIuc25kIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcHR5cGVfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2xvY1wiLCBTdGRsaWIuc25kIHB0eXBlX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX2Fic3RyYWN0XCIgW10pXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBlX29wZW5cIiBbXSlcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGxkX25hbWUgPSBTdGRsaWIuZnN0IHBsZF9uYW1lO1xuICAgICAgICAgICAgcGxkX211dGFibGUgPSBTdGRsaWIuZnN0IHBsZF9tdXRhYmxlO1xuICAgICAgICAgICAgcGxkX3R5cGUgPSBTdGRsaWIuZnN0IHBsZF90eXBlO1xuICAgICAgICAgICAgcGxkX2xvYyA9IFN0ZGxpYi5mc3QgcGxkX2xvYztcbiAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbGRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBTdGRsaWIuc25kIHBsZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgU3RkbGliLnNuZCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAgIChcInBsZF90eXBlXCIsIFN0ZGxpYi5zbmQgcGxkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbG9jXCIsIFN0ZGxpYi5zbmQgcGxkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNkX25hbWUgPSBTdGRsaWIuZnN0IHBjZF9uYW1lO1xuICAgICAgICAgICAgcGNkX3ZhcnMgPSBTdGRsaWIuZnN0IHBjZF92YXJzO1xuICAgICAgICAgICAgcGNkX2FyZ3MgPSBTdGRsaWIuZnN0IHBjZF9hcmdzO1xuICAgICAgICAgICAgcGNkX3JlcyA9IFN0ZGxpYi5mc3QgcGNkX3JlcztcbiAgICAgICAgICAgIHBjZF9sb2MgPSBTdGRsaWIuZnN0IHBjZF9sb2M7XG4gICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgU3RkbGliLnNuZCBwY2RfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjZF92YXJzXCIsIFN0ZGxpYi5zbmQgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXJnc1wiLCBTdGRsaWIuc25kIHBjZF9hcmdzKTtcbiAgICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBTdGRsaWIuc25kIHBjZF9yZXMpO1xuICAgICAgICAgICAgICAoXCJwY2RfbG9jXCIsIFN0ZGxpYi5zbmQgcGNkX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNzdHJfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aCA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgU3RkbGliLnNuZCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXJhbXNcIiwgU3RkbGliLnNuZCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9jb25zdHJ1Y3RvcnMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgY3R4IHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBTdGRsaWIuZnN0IHBleHRfbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IFN0ZGxpYi5mc3QgcGV4dF9raW5kO1xuICAgICAgICAgICAgcGV4dF9sb2MgPSBTdGRsaWIuZnN0IHBleHRfbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGV4dF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIFN0ZGxpYi5zbmQgcGV4dF9raW5kKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgU3RkbGliLnNuZCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInBleHRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgICAgICAgcHR5ZXhuX2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2xvYztcbiAgICAgICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleG5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleG5fY29uc3RydWN0b3JcIiwgU3RkbGliLnNuZCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4dF9kZWNsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9kZWNsXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4dF9yZWJpbmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfcmViaW5kXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6ICdjdHggLT4gY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gU3RkbGliLmZzdCBwY3R5X2Rlc2M7XG4gICAgICAgICAgICBwY3R5X2xvYyA9IFN0ZGxpYi5mc3QgcGN0eV9sb2M7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3R5X2Rlc2NcIiwgU3RkbGliLnNuZCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBTdGRsaWIuc25kIHBjdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY3R5X2Fycm93IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9hcnJvd1wiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjdHlfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6ICdjdHggLT4gY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc2lnX3NlbGYgPSBTdGRsaWIuZnN0IHBjc2lnX3NlbGY7XG4gICAgICAgICAgICBwY3NpZ19maWVsZHMgPSBTdGRsaWIuZnN0IHBjc2lnX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3NpZ19zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzaWdfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc2lnX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc2lnX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjdGZfZGVzYztcbiAgICAgICAgICAgIHBjdGZfbG9jID0gU3RkbGliLmZzdCBwY3RmX2xvYztcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdGZfZGVzY1wiLCBTdGRsaWIuc25kIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0Zl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9pbmhlcml0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfdmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eFxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNpX3ZpcnQgPSBTdGRsaWIuZnN0IHBjaV92aXJ0O1xuICAgICAgICAgICAgcGNpX3BhcmFtcyA9IFN0ZGxpYi5mc3QgcGNpX3BhcmFtcztcbiAgICAgICAgICAgIHBjaV9uYW1lID0gU3RkbGliLmZzdCBwY2lfbmFtZTtcbiAgICAgICAgICAgIHBjaV9leHByID0gU3RkbGliLmZzdCBwY2lfZXhwcjtcbiAgICAgICAgICAgIHBjaV9sb2MgPSBTdGRsaWIuZnN0IHBjaV9sb2M7XG4gICAgICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgU3RkbGliLnNuZCBwY2lfdmlydCk7XG4gICAgICAgICAgICAgIChcInBjaV9wYXJhbXNcIiwgU3RkbGliLnNuZCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgU3RkbGliLnNuZCBwY2lfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBjaV9leHByXCIsIFN0ZGxpYi5zbmQgcGNpX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwY2lfbG9jXCIsIFN0ZGxpYi5zbmQgcGNpX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNpX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBjdHggcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IFN0ZGxpYi5mc3QgcGNsX2Rlc2M7XG4gICAgICAgICAgICBwY2xfbG9jID0gU3RkbGliLmZzdCBwY2xfbG9jO1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgICggUGNsX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2Z1blwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXSApXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNsX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2xfbGV0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiAnY3R4IC0+IGNsYXNzX3N0cnVjdHVyZSAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjc3RyX3NlbGYgPSBTdGRsaWIuZnN0IHBjc3RyX3NlbGY7XG4gICAgICAgICAgICBwY3N0cl9maWVsZHMgPSBTdGRsaWIuZnN0IHBjc3RyX2ZpZWxkcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3N0cl9zZWxmXCIsIFN0ZGxpYi5zbmQgcGNzdHJfc2VsZik7XG4gICAgICAgICAgICAgIChcInBjc3RyX2ZpZWxkc1wiLCBTdGRsaWIuc25kIHBjc3RyX2ZpZWxkcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6ICdjdHggLT4gY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNmX2Rlc2MgPSBTdGRsaWIuZnN0IHBjZl9kZXNjO1xuICAgICAgICAgICAgcGNmX2xvYyA9IFN0ZGxpYi5mc3QgcGNmX2xvYztcbiAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBjZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNmX2xvY1wiLCBTdGRsaWIuc25kIHBjZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUGNmX3ZhbFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX21ldGhvZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGNmX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9pbml0aWFsaXplciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaXRpYWxpemVyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggQ2ZrX3ZpcnR1YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma192aXJ0dWFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIENma19jb25jcmV0ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfY29uY3JldGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIGN0eCBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10eV9kZXNjID0gU3RkbGliLmZzdCBwbXR5X2Rlc2M7XG4gICAgICAgICAgICBwbXR5X2xvYyA9IFN0ZGxpYi5mc3QgcG10eV9sb2M7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgU3RkbGliLnNuZCBwbXR5X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBTdGRsaWIuc25kIHBtdHlfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG10eV9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X3dpdGggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV93aXRoXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV90eXBlb2YgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfdHlwZW9mXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfYWxpYXMgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBzZWxmI2NvbnN0ciBjdHggXCJVbml0XCIgW10pXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBOYW1lZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJOYW1lZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIGN0eCBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHNpZ19sb2MgaW5cbiAgICAgICAgKCB7IHBzaWdfZGVzYyA9IFN0ZGxpYi5mc3QgcHNpZ19kZXNjOyBwc2lnX2xvYyA9IFN0ZGxpYi5mc3QgcHNpZ19sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHNpZ19kZXNjXCIsIFN0ZGxpYi5zbmQgcHNpZ19kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHNpZ19sb2NcIiwgU3RkbGliLnNuZCBwc2lnX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3ZhbHVlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtZF9uYW1lIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBTdGRsaWIuZnN0IHBtZF9uYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSBTdGRsaWIuZnN0IHBtZF90eXBlO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1kX2xvYyA9IFN0ZGxpYi5mc3QgcG1kX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBTdGRsaWIuc25kIHBtZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1kX3R5cGVcIiwgU3RkbGliLnNuZCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWRfbG9jXCIsIFN0ZGxpYi5zbmQgcG1kX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXNfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXNfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1zX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtc19sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IFN0ZGxpYi5mc3QgcG1zX25hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHBtc19tYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXNfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtc19sb2MgPSBTdGRsaWIuZnN0IHBtc19sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgU3RkbGliLnNuZCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtc19tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1zX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXNfbG9jXCIsIFN0ZGxpYi5zbmQgcG1zX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIGN0eCBwbXRkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdGRfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG10ZF9uYW1lID0gU3RkbGliLmZzdCBwbXRkX25hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSBTdGRsaWIuZnN0IHBtdGRfdHlwZTtcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBTdGRsaWIuZnN0IHBtdGRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdGRfbmFtZVwiLCBTdGRsaWIuc25kIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBTdGRsaWIuc25kIHBtdGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtdGRfbG9jXCIsIFN0ZGxpYi5zbmQgcG10ZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBjdHggcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IHBvcGVuX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBwb3Blbl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gU3RkbGliLmZzdCBwb3Blbl9leHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBTdGRsaWIuZnN0IHBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgcG9wZW5fbG9jID0gU3RkbGliLmZzdCBwb3Blbl9sb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgU3RkbGliLnNuZCBwb3Blbl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgU3RkbGliLnNuZCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2xvY1wiLCBTdGRsaWIuc25kIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb3Blbl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG9wZW5fZGVjbGFyYXRpb24gLT4gb3Blbl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBpbmNsX21vZCA9IFN0ZGxpYi5mc3QgcGluY2xfbW9kO1xuICAgICAgICAgICAgcGluY2xfbG9jID0gU3RkbGliLmZzdCBwaW5jbF9sb2M7XG4gICAgICAgICAgICBwaW5jbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwaW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBTdGRsaWIuc25kIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2xvY1wiLCBTdGRsaWIuc25kIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwaW5jbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogJ2N0eCAtPiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHR5cGVzdWJzdFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZXN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHN1YnN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIGN0eCBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gU3RkbGliLmZzdCBwbW9kX2Rlc2M7XG4gICAgICAgICAgICBwbW9kX2xvYyA9IFN0ZGxpYi5mc3QgcG1vZF9sb2M7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbW9kX2Rlc2NcIiwgU3RkbGliLnNuZCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBTdGRsaWIuc25kIHBtb2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2Rfc3RydWN0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9mdW5jdG9yIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZnVuY3RvclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9hcHBseVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbSAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgKCB7IHBzdHJfZGVzYyA9IFN0ZGxpYi5mc3QgcHN0cl9kZXNjOyBwc3RyX2xvYyA9IFN0ZGxpYi5mc3QgcHN0cl9sb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHN0cl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHN0cl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHN0cl9sb2NcIiwgU3RkbGliLnNuZCBwc3RyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9ldmFsIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdmFsdWUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl92YWx1ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcHJpbWl0aXZlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ByaW1pdGl2ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGV4dCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBleHRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9leGNlcHRpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX29wZW4gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfb3BlblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2NsYXNzX3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2luY2x1ZGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfaW5jbHVkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9hdHRyaWJ1dGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIGN0eCBwdmJfZXhwciBpblxuICAgICAgICBsZXQgcHZiX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZiX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBTdGRsaWIuZnN0IHB2Yl9wYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IFN0ZGxpYi5mc3QgcHZiX2V4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdmJfbG9jID0gU3RkbGliLmZzdCBwdmJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgU3RkbGliLnNuZCBwdmJfcGF0KTtcbiAgICAgICAgICAgICAgKFwicHZiX2V4cHJcIiwgU3RkbGliLnNuZCBwdmJfZXhwcik7XG4gICAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHZiX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmJfbG9jXCIsIFN0ZGxpYi5zbmQgcHZiX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBjdHggcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtYl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IFN0ZGxpYi5mc3QgcG1iX25hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IFN0ZGxpYi5mc3QgcG1iX2V4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWJfbG9jID0gU3RkbGliLmZzdCBwbWJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1iX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBTdGRsaWIuc25kIHBtYl9leHByKTtcbiAgICAgICAgICAgICAgKFwicG1iX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtYl9sb2NcIiwgU3RkbGliLnNuZCBwbWJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kZWYgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGVmXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RpciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kaXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IGN0eCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJfbmFtZSA9IFN0ZGxpYi5mc3QgcGRpcl9uYW1lO1xuICAgICAgICAgICAgcGRpcl9hcmcgPSBTdGRsaWIuZnN0IHBkaXJfYXJnO1xuICAgICAgICAgICAgcGRpcl9sb2MgPSBTdGRsaWIuZnN0IHBkaXJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBTdGRsaWIuc25kIHBkaXJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIFN0ZGxpYi5zbmQgcGRpcl9hcmcpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBjdHggcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcmFfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcmFfZGVzYyA9IFN0ZGxpYi5mc3QgcGRpcmFfZGVzYztcbiAgICAgICAgICAgIHBkaXJhX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcmFfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBkaXJhX2Rlc2NcIiwgU3RkbGliLnNuZCBwZGlyYV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGRpcmFfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcmFfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9zdHJpbmcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfc3RyaW5nXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQZGlyX2ludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2ludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9ib29sIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2Jvb2xcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjYXNlcyA6ICdjdHggLT4gY2FzZXMgLT4gY2FzZXMgKiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuW0BAQGVuZF1cbltAQEBlbmRdXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IudFxuXG5sZXQgdG9fZXh0ZW5zaW9uIChlcnJvciA6IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50KSA9XG4gIGxldCBvcGVuIEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBpblxuICBsZXQgb3BlbiBBc3RfaGVscGVyIGluXG4gIGlmIG5vdCAoaXNfd2VsbF9mb3JtZWQgZXJyb3IpIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcInRvX2V4dGVuc2lvbjogZXhwZWN0ZWQga2luZCBSZXBvcnRfZXJyb3JcIik7XG4gIGxldCBzdWJfbXNncyA9IHN1Yl9tc2dzIGVycm9yIGluXG4gIGxldCBtYWluX21zZyA9IG1haW5fbXNnIGVycm9yIGluXG4gIGxldCBlcnJfZXh0ZW5zaW9uX25hbWUgbG9jID0geyBMb2NhdGlvbi5sb2M7IHR4dCA9IFwib2NhbWwuZXJyb3JcIiB9IGluXG4gIGxldCBta19zdHJpbmdfY29uc3RhbnQgeCA9IFN0ci5ldmFsIChFeHAuY29uc3RhbnQgKENvbnN0LnN0cmluZyB4KSkgaW5cbiAgbGV0IGV4dGVuc2lvbl9vZl9zdWJfbXNnIChzdWJfbXNnIDogc3RyaW5nIExvY2F0aW9uLmxvYykgPVxuICAgIFN0ci5leHRlbnNpb25cbiAgICAgIChlcnJfZXh0ZW5zaW9uX25hbWUgc3ViX21zZy5sb2MsIFBTdHIgWyBta19zdHJpbmdfY29uc3RhbnQgc3ViX21zZy50eHQgXSlcbiAgaW5cbiAgKCBlcnJfZXh0ZW5zaW9uX25hbWUgbWFpbl9tc2cubG9jLFxuICAgIFBhcnNldHJlZS5QU3RyXG4gICAgICAobWtfc3RyaW5nX2NvbnN0YW50IG1haW5fbXNnLnR4dCA6OiBMaXN0Lm1hcCBleHRlbnNpb25fb2Zfc3ViX21zZyBzdWJfbXNncylcbiAgKVxuXG5sZXQgcmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLnJlZ2lzdGVyX2Vycm9yX29mX2V4blxuXG5sZXQgbWVzc2FnZSBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi50eHQ7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICB0eHRcblxubGV0IHNldF9tZXNzYWdlID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX21zZ1xuXG5sZXQgbWFrZSB+bG9jIHR4dCB+c3ViID1cbiAgbGV0IHN1YiA9IExpc3QubWFwIChmdW4gKGxvYywgdHh0KSAtPiB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IHR4dCB9KSBzdWIgaW5cbiAgQXN0bGliLkxvY2F0aW9uLkVycm9yLm1ha2UgfnN1YiB7IGxvYzsgdHh0IH1cblxubGV0IHVwZGF0ZV9sb2MgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbG9jXG5cbmxldCBnZXRfbG9jYXRpb24gZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24ubG9jOyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgbG9jXG5cbmxldCBvZl9leG4gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iub2ZfZXhuXG5sZXQgcmFpc2UgZXJyb3IgPSByYWlzZSAoQXN0bGliLkxvY2F0aW9uLkVycm9yIGVycm9yKVxuIiwibW9kdWxlIERvX25vdF91c2VfZGlyZWN0bHkgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgQWZsX2luc3RydW1lbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWZsX2luc3RydW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIEFsaWFzX2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsaWFzX2FuYWx5c2lzIGluc3RlYWRcIl1cbm1vZHVsZSBBbGxvY2F0ZWRfY29uc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxsb2NhdGVkX2NvbnN0IGluc3RlYWRcIl1cbm1vZHVsZSBBbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXJjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BcmNoIGluc3RlYWRcIl1cbm1vZHVsZSBBcmdfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXJnX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpYnJhcmlhbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saW5rIGluc3RlYWRcIl1cbm1vZHVsZSBBc21wYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21wYWNrYWdlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pdGVyYXRvciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdHR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBdHRyX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkF0dHJfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBCYWNrZW5kX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEJhY2tlbmRfdmFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJhY2tlbmRfdmFyIGluc3RlYWRcIl1cbm1vZHVsZSBCaW51dGlscyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJpbnV0aWxzIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CcmFuY2hfcmVsYXhhdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcHJlc3Npb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wcmVzc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlZl90b192YXJpYWJsZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVmX3RvX3ZhcmlhYmxlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlZyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZCBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVsb2FkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbG9hZGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV9mcmVlX3ZhcnNfZXF1YWxfdG9fYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9hcmd1bWVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfY2xvc3VyZV92YXJzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX3Byb2dyYW1fY29uc3RydWN0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUnVudGltZWRlZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJ1bnRpbWVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTY2hlZHVsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNjaGVkdWxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3RnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNlbGVjdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZWxlY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFNlbWFudGljc19vZl9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbWFudGljc19vZl9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBTZXRfb2ZfY2xvc3VyZXNfb3JpZ2luID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNldF9vZl9jbG9zdXJlc19vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGUgaW5zdGVhZFwiXVxubW9kdWxlIFNoYXBlX3JlZHVjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNoYXBlX3JlZHVjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YWNrZnJhbWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhY2tmcmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhY2tmcmFtZWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGFja2ZyYW1lZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBTdGF0aWNfZXhjZXB0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YXRpY19leGNlcHRpb24gaW5zdGVhZFwiXVxubW9kdWxlIFN0cm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0cm1hdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTdHJvbmdseV9jb25uZWN0ZWRfY29tcG9uZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFN1YnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Vic3QgaW5zdGVhZFwiXVxubW9kdWxlIFN3aXRjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN3aXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ltdGFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW10YWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU3ludGF4ZXJyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3ludGF4ZXJyIGluc3RlYWRcIl1cbm1vZHVsZSBUYWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGFnIGluc3RlYWRcIl1cbm1vZHVsZSBUYXJnZXRpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXJnZXRpbnQgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UYXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBUYXN0X21hcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBUZXJtaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRlcm1pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBUaHJlYWRfc2FuaXRpemVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRocmVhZF9zYW5pdGl6ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BwcmludGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wcHJpbnRlcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcHN0YXJ0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUcmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGF0dHJpYnV0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGF0dHJpYnV0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsb2JqID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsb2JqIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xwcmltID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNscHJpbSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVHJhdmVyc2VfZm9yX2V4cG9ydGVkX3N5bWJvbHMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZV9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfaW1tZWRpYWN5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9wcm9wZXJ0aWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfcHJvcGVydGllcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfc2VwYXJhYmlsaXR5ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfc2VwYXJhYmlsaXR5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF91bmJveGVkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdW5ib3hlZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdmFyaWFuY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF92YXJpYW5jZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWR0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWR0cmVlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW9wdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVvcHQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGV0ZXhwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZXRleHAgaW5zdGVhZFwiXVxubW9kdWxlIFVuX2FuZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Vbl9hbmYgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIFVuaXRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlVuaXRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW50eXBlYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW50eXBlYXN0IGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfY2hlY2sgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5WYWx1ZV9yZWNfY2hlY2sgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY19jb21waWxlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlZhbHVlX3JlY19jb21waWxlciBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBWYXJfd2l0aGluX2Nsb3N1cmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVmFyX3dpdGhpbl9jbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBWYXJpYWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgV2FybmluZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5XYXJuaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X2FzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgWDg2X2RzbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfZHNsIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfZ2FzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9nYXMgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9tYXNtID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9tYXNtIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfcHJvYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5YODZfcHJvYyBpbnN0ZWFkXCJdXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgcGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzID1cbiAgbGV0IGFyZ3MgPVxuICAgIExpc3QuY29uY2F0XG4gICAgICBbXG4gICAgICAgIFsgXCIta2VlcC13aGl0ZXNwYWNlXCIgXTtcbiAgICAgICAgWyBcIi1sb2NhdGlvbi1zdHlsZSBvbWFrZVwiIF07XG4gICAgICAgIChpZiB1c2VfY29sb3IgdGhlbiBbXSBlbHNlIFsgXCItYXNjaWlcIiBdKTtcbiAgICAgICAgZXh0cmFfcGF0ZGlmZl9hcmdzO1xuICAgICAgXVxuICBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKFwicGF0ZGlmZlwiIDo6IGFyZ3MpXG5cbmxldCBwcmludCA/ZGlmZl9jb21tYW5kID8oZXh0cmFfcGF0ZGlmZl9hcmdzID0gW10pID8odXNlX2NvbG9yID0gZmFsc2UpIH5maWxlMVxuICAgIH5maWxlMiAoKSA9XG4gIGxldCBleGVjIGNtZCA9XG4gICAgbGV0IGNtZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIDE+JjJcIiBjbWQgKEZpbGVuYW1lLnF1b3RlIGZpbGUxKVxuICAgICAgICAoRmlsZW5hbWUucXVvdGUgZmlsZTIpXG4gICAgaW5cbiAgICBtYXRjaCBTeXMuY29tbWFuZCBjbWQgd2l0aFxuICAgIHwgMCAtPiBgU2FtZVxuICAgIHwgMSAtPiBgRGlmZmVyZW50XG4gICAgfCBuIC0+IGBFcnJvciAobiwgY21kKVxuICBpblxuICBtYXRjaCBkaWZmX2NvbW1hbmQgd2l0aFxuICB8IFNvbWUgcyAtPiBpZ25vcmUgKGV4ZWMgcyA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSlcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIGV4ZWMgKHBhdGRpZmZfY21kIH51c2VfY29sb3IgfmV4dHJhX3BhdGRpZmZfYXJncykgd2l0aFxuICAgICAgfCBgU2FtZSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgcHJvZHVjZWQgbm8gb3V0cHV0LCBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICAgICAgfCBgRGlmZmVyZW50IC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBzdWNjZXNzZnVsbHkgZm91bmQgYSBkaWZmZXJlbmNlICopXG4gICAgICAgICAgKClcbiAgICAgIHwgYEVycm9yIChlcnJfY29kZSwgY21kKSAtPlxuICAgICAgICAgICgqIHBhdGRpZmYgdGhyZXcgYW4gZXJyb3IuLi4gcGVyaGFwcyBpdCB3YXNuJ3QgaW5zdGFsbGVkPyBmYWxsYmFjayB0byBkaWZmIC11ICopXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRXJyb3I6XFxuXFxcbiAgICAgICAgICAgICA+ICVTIGV4aXRlZCB3aXRoIGNvZGUgJWRcXG5cXFxuICAgICAgICAgICAgID4gUGVyaGFwcyBwYXRkaWZmIGlzIG5vdCBpbnN0YWxsZWQ/IEhpbnQsIHRyeTogb3BhbSBpbnN0YWxsIHBhdGRpZmZcXG5cXFxuICAgICAgICAgICAgID4gRmFsbGluZyBiYWNrIHRvIGRpZmYgLXVcXG5cXG5cIlxuICAgICAgICAgICAgY21kIGVycl9jb2RlO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lIDEsIGNoYXJhY3RlcnMgMC0wOlxcbiUhXCIgZmlsZTE7XG4gICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAoZXhlYyBcImRpZmYgLXVcIiA6IFs+IGBTYW1lIHwgYERpZmZlcmVudCB8IGBFcnJvciBvZiBpbnQgKiBzdHJpbmcgXSkpXG4iLCJ0eXBlIGRlcml2ZXIgPSAuLlxuXG5sZXQgYWxsID0gSGFzaHRibC5jcmVhdGUgNDJcblxubGV0IHJlZ2lzdGVyIG5hbWUgZGVyaXZlciA9XG4gIGlmIEhhc2h0YmwubWVtIGFsbCBuYW1lIHRoZW5cbiAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgIFwiUHB4X2Rlcml2aWVycy5yZWdpc3RlcjogJVMgaXMgYWxyZWFkeSByZWdpc3RlcmVkXCIgbmFtZTtcbiAgSGFzaHRibC5hZGQgYWxsIG5hbWUgZGVyaXZlclxuXG5sZXQgbG9va3VwIG5hbWUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgYWxsIG5hbWUgd2l0aFxuICB8IGRydiAtPiBTb21lIGRydlxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZGVyaXZlcnMgKCkgPVxuICBIYXNodGJsLmZvbGQgKGZ1biBuYW1lIGRydiBhY2MgLT4gKG5hbWUsIGRydikgOjogYWNjKSBhbGwgW11cbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgbWFwID0gJ2EgLT4gJ2FcbiAgdHlwZSAnYSBpdGVyID0gJ2EgLT4gdW5pdFxuICB0eXBlICgnYSwgJ2FjYykgZm9sZCA9ICdhIC0+ICdhY2MgLT4gJ2FjY1xuICB0eXBlICgnYSwgJ2FjYykgZm9sZF9tYXAgPSAnYSAtPiAnYWNjIC0+ICdhICogJ2FjY1xuICB0eXBlICgnY3R4LCAnYSkgbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2FcbiAgdHlwZSAoJ2EsICdyZXMpIGxpZnQgPSAnYSAtPiAncmVzXG4gIHR5cGUgKCdjdHgsICdhLCAncmVzKSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPSAnY3R4IC0+ICdhIC0+ICdhICogJ3Jlc1xuZW5kXG5cbmNsYXNzIG1hcCA9XG4gIGxldCBhbnkgeCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiBzdHJpbmcgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5tYXAgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gJ2EgVC5tYXAgLT4gJ2Egb3B0aW9uIFQubWFwID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULm1hcCAtPiAnYSBsaXN0IFQubWFwID0gTGlzdC5tYXBcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5tYXAgLT4gJ2EgYXJyYXkgVC5tYXAgPSBBcnJheS5tYXBcbiAgZW5kXG5cbmNsYXNzIGl0ZXIgPVxuICBsZXQgYW55ID0gaWdub3JlIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiBpbnQgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IGJvb2wgVC5pdGVyID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiBjaGFyIFQuaXRlciA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULml0ZXIgLT4gJ2Egb3B0aW9uIFQuaXRlciA9XG4gICAgICBmdW4gZiB4IC0+IG1hdGNoIHggd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGxpc3QgVC5pdGVyID0gTGlzdC5pdGVyXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICdhIFQuaXRlciAtPiAnYSBhcnJheSBULml0ZXIgPSBBcnJheS5pdGVyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZCA9XG4gIGxldCBhbnkgXyBhY2MgPSBhY2MgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGZ1biBmIHggYWNjIC0+IG1hdGNoIHggd2l0aCBOb25lIC0+IGFjYyB8IFNvbWUgeCAtPiBmIHggYWNjXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgbGlzdCwgJ2FjYykgVC5mb2xkID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IGFjYyB8IHggOjogbCAtPiBsb29wIGYgbCAoZiB4IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wXG5cbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGQgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICByIDo9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSAhclxuICAgICAgICBkb25lO1xuICAgICAgICAhclxuICBlbmRcblxuY2xhc3MgWydhY2NdIGZvbGRfbWFwID1cbiAgbGV0IGFueSB4IGFjYyA9ICh4LCBhY2MpIGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbnQgOiAoaW50LCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6IChib29sLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG4gICAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIG9wdGlvbiwgJ2FjYykgVC5mb2xkX21hcCA9XG4gICAgICBmdW4gZiB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBhY2MpXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgKFNvbWUgeCwgYWNjKVxuXG4gICAgbWV0aG9kIGxpc3QgOiAnYS4gKCdhLCAnYWNjKSBULmZvbGRfbWFwIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGxldCByZWMgbG9vcCBmIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBhY2MpXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiB4IGFjYyBpblxuICAgICAgICAgICAgbGV0IGwsIGFjYyA9IGxvb3AgZiBsIGFjYyBpblxuICAgICAgICAgICAgKHggOjogbCwgYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGFycmF5LCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIGEgYWNjIC0+XG4gICAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gKGEsIGFjYylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkgYWNjIGluXG4gICAgICAgICAgbGV0IGEnID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIGFjYyBpblxuICAgICAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgICBsZXQgeCwgYWNjID0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyIGluXG4gICAgICAgICAgICBBcnJheS51bnNhZmVfc2V0IGEnIGkgeDtcbiAgICAgICAgICAgIHIgOj0gYWNjXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAoYScsICFyKVxuICBlbmRcblxuY2xhc3MgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBsZXQgYW55IF8geCA9IHggaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6ICgnY3R4LCBpbnQpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgYm9vbCA6ICgnY3R4LCBib29sKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6ICgnY3R4LCBjaGFyKSBULm1hcF93aXRoX2NvbnRleHQgPSBhbnlcblxuICAgIG1ldGhvZCBvcHRpb25cbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2Egb3B0aW9uKSBULm1hcF93aXRoX2NvbnRleHRcbiAgICAgICAgPVxuICAgICAgZnVuIGYgY3R4IHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIGN0eCB4KVxuXG4gICAgbWV0aG9kIGxpc3RcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgbGlzdCkgVC5tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCBsIC0+IExpc3QubWFwIChmIGN0eCkgbFxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhKSBULm1hcF93aXRoX2NvbnRleHQgLT4gKCdjdHgsICdhIGFycmF5KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGEgLT4gQXJyYXkubWFwIChmIGN0eCkgYVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IChpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IChjaGFyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKGZsb2F0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6IChuYXRpdmVpbnQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcblxuICAgIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZWxmI2NvbnN0ciBcIk5vbmVcIiBbXVxuICAgICAgICB8IFNvbWUgeCAtPiBzZWxmI2NvbnN0ciBcIlNvbWVcIiBbIGYgeCBdXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0ID1cbiAgICAgIGZ1biBmIGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2VsZiNjb25zdHIgXCJbXVwiIFtdXG4gICAgICAgIHwgeCA6OiBsIC0+IHNlbGYjY29uc3RyIFwiOjpcIiBbIGYgeDsgc2VsZiNsaXN0IGYgbCBdXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAoJ2N0eCwgc3RyaW5nLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBhcnJheVxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgICBtZXRob2QgdmlydHVhbCBmbG9hdCA6ICgnY3R4LCBmbG9hdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCBuYXRpdmVpbnQgOiAoJ2N0eCwgbmF0aXZlaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2Egb3B0aW9uLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChOb25lLCBzZWxmI2NvbnN0ciBjdHggXCJOb25lXCIgW10pXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzID0gZiBjdHggeCBpblxuICAgICAgICAgICAgKFNvbWUgeCwgc2VsZiNjb25zdHIgY3R4IFwiU29tZVwiIFsgcmVzIF0pXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAgICAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKFtdLCBzZWxmI2NvbnN0ciBjdHggXCJbXVwiIFtdKVxuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgICAgbGV0IHgsIHJlc19oZWFkID0gZiBjdHggeCBpblxuICAgICAgICAgICAgbGV0IGwsIHJlc190YWlsID0gc2VsZiNsaXN0IGYgY3R4IGwgaW5cbiAgICAgICAgICAgICh4IDo6IGwsIHNlbGYjY29uc3RyIGN0eCBcIjo6XCIgWyByZXNfaGVhZDsgcmVzX3RhaWwgXSlcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydyZXNdIHN0ZF9saWZ0ZXJzID0gb2JqZWN0XG4gIG1ldGhvZCBvdGhlciA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBzdHJpbmcgOiAoc3RyaW5nLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGJvb2wgOiAoYm9vbCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIGFycmF5LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHJlY29yZCA6IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50MzIgOiAoaW50MzIsICdyZXMpIFQubGlmdFxuICBtZXRob2QgaW50NjQgOiAoaW50NjQsICdyZXMpIFQubGlmdFxuICBtZXRob2QgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCB1bml0IDogKHVuaXQsICdyZXMpIFQubGlmdFxuICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBvcHRpb24sICdyZXMpIFQubGlmdFxuICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgbGlzdCwgJ3JlcykgVC5saWZ0XG5lbmRcblxuY2xhc3MgdHlwZSBbJ2N0eCwgJ3Jlc10gc3RkX2xpZnRfbWFwcGVyc193aXRoX2NvbnRleHQgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICBtZXRob2QgaW50IDogKCdjdHgsIGludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGFycmF5IDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIGFycmF5LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuXG4gIG1ldGhvZCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdjdHggLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgaW50MzIgOiAoJ2N0eCwgaW50MzIsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQ2NCA6ICgnY3R4LCBpbnQ2NCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCB1bml0IDogKCdjdHgsIHVuaXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIG9wdGlvbiA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIGxpc3QgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgbGlzdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbmVuZFxuIiwibW9kdWxlIENhbWwgPSBTdGRsaWIgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTA2XSB1c2UgU3RkbGliIGluc3RlYWRcIl1cbm9wZW4gU3RkbGliXG5vcGVuIFN0ZExhYmVsc1xubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIHR5cGUgQ29tcGFyaXNvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoID4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw+ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA8PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPj0gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBtaW4gOiB0IC0+IHQgLT4gdFxuICB2YWwgbWF4IDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IGVxdWFsID0gKCA9IClcbiAgbGV0ICggPSApID0gKCA9IClcbiAgbGV0ICggPCApID0gKCA8IClcbiAgbGV0ICggPiApID0gKCA+IClcbiAgbGV0ICggPD4gKSA9ICggPD4gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID49ICkgPSAoID49IClcbiAgbGV0IG1pbiA9IG1pblxuICBsZXQgbWF4ID0gbWF4XG5lbmRcblxuaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbm1vZHVsZSBBcnJheSA9IEFycmF5XG5cbm1vZHVsZSBCb29sID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfYm9vbFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBib29sKVxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIEJ5dGVzXG5cbiAgbGV0IHN1Yl9zdHJpbmcgdCB+cG9zIH5sZW4gPSBTdGRsaWIuQnl0ZXMuc3ViX3N0cmluZyB0IHBvcyBsZW5cblxuICBsZXQgYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGNoYXIpXG5lbmRcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IHkgLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICB5XG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGZpbmFsbHkgeDtcbiAgICAgICAgcmFpc2UgZXhuXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfZmxvYXRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gZmxvYXQpXG5lbmRcblxubW9kdWxlIEZuID0gc3RydWN0XG4gIGxldCBpZCB4ID0geFxuZW5kXG5cbm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICB3aGlsZSBtZW0gdCBrZXkgZG9cbiAgICAgIHJlbW92ZSB0IGtleVxuICAgIGRvbmU7XG4gICAgYWRkIHQga2V5IGRhdGFcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgaWYgbWVtIHQga2V5IHRoZW4gRXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJIYXNodGJsLmFkZF9leG5cIilcbiAgICBlbHNlIChcbiAgICAgIGFkZCB0IGtleSBkYXRhO1xuICAgICAgT2sgKCkpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGggT2sgKCkgLT4gKCkgfCBFcnJvciBleG4gLT4gcmFpc2UgZXhuXG5cbiAgbGV0IGZpbmRfb3B0IHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGggZGF0YSAtPiBTb21lIGRhdGEgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICAgIG1hdGNoIGZpbmRfb3B0IHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgICAgICBhZGRfZXhuIHQgfmtleSB+ZGF0YTtcbiAgICAgICAgZGF0YVxuXG4gIGxldCByZWMgYWRkX2FsaXN0IHQgYWxpc3QgPVxuICAgIG1hdGNoIGFsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE9rICgpXG4gICAgfCAoa2V5LCBkYXRhKSA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gYWRkX2FsaXN0IHQgdGFpbFxuICAgICAgICB8IEVycm9yIChfIDogZXhuKSAtPiBFcnJvciBrZXkpXG5cbiAgbGV0IG9mX2FsaXN0ID9zaXplIGFsaXN0ID1cbiAgICBsZXQgc2l6ZSA9XG4gICAgICBtYXRjaCBzaXplIHdpdGggU29tZSBzaXplIC0+IHNpemUgfCBOb25lIC0+IExpc3QubGVuZ3RoIGFsaXN0XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSBzaXplIGluXG4gICAgbWF0Y2ggYWRkX2FsaXN0IHQgYWxpc3Qgd2l0aCBPayAoKSAtPiBPayB0IHwgRXJyb3IgXyBhcyBlcnJvciAtPiBlcnJvclxuXG4gIGxldCBvZl9hbGlzdF9leG4gP3NpemUgYWxpc3QgPVxuICAgIG1hdGNoIG9mX2FsaXN0ID9zaXplIGFsaXN0IHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0Ymwub2ZfYWxpc3RfZXhuXCIpXG5lbmRcblxubW9kdWxlIEluX2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICAgIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICAgIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgICBvcGVuX2luX2dlbiBmbGFncyAwbzAwMCBmaWxlXG5cbiAgbGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGVuYW1lIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5IGZpbGVuYW1lIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2VfaW5cblxuICBsZXQgaW5wdXRfYWxsIHQgPVxuICAgIGxldCByZWMgcmVhZF9hbGxfaW50byB0IGJ1ZiA9XG4gICAgICBtYXRjaCBpbnB1dF9jaGFyIHQgd2l0aFxuICAgICAgfCBjaGFyIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjaGFyO1xuICAgICAgICAgIHJlYWRfYWxsX2ludG8gdCBidWZcbiAgICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHJlYWRfYWxsX2ludG8gdCBidWY7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCByZWFkX2FsbCBmaWxlbmFtZSA9IHdpdGhfZmlsZSBmaWxlbmFtZSB+ZjppbnB1dF9hbGxcbmVuZFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBtYXhfaW50ID0gbWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBpbnQpXG5lbmRcblxubW9kdWxlIEVpdGhlciA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcbmVuZFxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBpbmNsdWRlIExpc3RcblxuICBpbmNsdWRlIHN0cnVjdFxuICAgICgqIHNoYWRvdyBub24tdGFpbC1yZWN1cnNpdmUgZnVuY3Rpb25zICopXG4gICAgbGV0IG1lcmdlID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuICAgIGxldCByZW1vdmVfYXNzb2MgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NxID0gYG5vdF90YWlsX3JlY3Vyc2l2ZVxuXG4gICAgbGV0IHJldl9tYXBpIGxpc3QgfmYgPVxuICAgICAgbGV0IHJlYyByZXZfbWFwaV9hdCBsaXN0IGkgfmYgfmFjYyA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPiByZXZfbWFwaV9hdCB0YWlsIChpICsgMSkgfmYgfmFjYzooZiBpIGhlYWQgOjogYWNjKVxuICAgICAgaW5cbiAgICAgIHJldl9tYXBpX2F0IGxpc3QgMCB+ZiB+YWNjOltdXG5cbiAgICBsZXQgZm9sZF9yaWdodDIgbGlzdDEgbGlzdDIgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0MiAocmV2IGxpc3QxKSAocmV2IGxpc3QyKSB+aW5pdCB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgYWNjKVxuXG4gICAgbGV0IG1hcCBsaXN0IH5mID0gcmV2IChyZXZfbWFwIGxpc3QgfmYpXG4gICAgbGV0IG1hcGkgbGlzdCB+ZiA9IHJldiAocmV2X21hcGkgbGlzdCB+ZilcblxuICAgIGxldCBmb2xkX3JpZ2h0IGxpc3QgfmluaXQgfmYgPVxuICAgICAgZm9sZF9sZWZ0IChMaXN0LnJldiBsaXN0KSB+aW5pdCB+ZjooZnVuIGFjYyB4IC0+IGYgeCBhY2MpXG5cbiAgICBsZXQgYXBwZW5kIHggeSA9IHJldl9hcHBlbmQgKHJldiB4KSB5XG4gICAgbGV0IGNvbmNhdCBsaXN0ID0gZm9sZF9yaWdodCBsaXN0IH5pbml0OltdIH5mOmFwcGVuZFxuXG4gICAgbGV0IHJldl9jb21iaW5lIGxpc3QxIGxpc3QyID1cbiAgICAgIGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+ICh4LCB5KSA6OiBhY2MpXG5cbiAgICBsZXQgY29tYmluZSBsaXN0MSBsaXN0MiA9IHJldiAocmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIpXG5cbiAgICBsZXQgc3BsaXQgbGlzdCA9XG4gICAgICBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6KFtdLCBbXSkgfmY6KGZ1biAoeCwgeSkgKHhzLCB5cykgLT5cbiAgICAgICAgICAoeCA6OiB4cywgeSA6OiB5cykpXG5cbiAgICBsZXQgbWFwMiBsaXN0MSBsaXN0MiB+ZiA9XG4gICAgICByZXYgKGZvbGRfbGVmdDIgbGlzdDEgbGlzdDIgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCB5IC0+IGYgeCB5IDo6IGFjYykpXG4gIGVuZFxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gICAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBwIHggd2l0aFxuICAgICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbClcbiAgICBpblxuICAgIHBhcnQgW10gW10gbFxuXG4gIGxldCBpbml0IH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCB+bGVuIH5wb3MgfmYgfmFjYyA9XG4gICAgICBpZiBwb3MgPj0gbGVuIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgICBlbHNlIGxvb3AgfmxlbiB+cG9zOihwb3MgKyAxKSB+ZiB+YWNjOihmIHBvcyA6OiBhY2MpXG4gICAgaW5cbiAgICBsb29wIH5sZW4gfnBvczowIH5mIH5hY2M6W11cblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvbiBbXSAtPiB0cnVlIHwgXyA6OiBfIC0+IGZhbHNlXG5cbiAgbGV0IHJldl9maWx0ZXJfb3B0IGxpc3QgPVxuICAgIGZvbGRfbGVmdCBsaXN0IH5pbml0OltdIH5mOihmdW4gdGFpbCBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGggTm9uZSAtPiB0YWlsIHwgU29tZSBoZWFkIC0+IGhlYWQgOjogdGFpbClcblxuICBsZXQgZmlsdGVyX29wdCBsaXN0ID0gcmV2IChyZXZfZmlsdGVyX29wdCBsaXN0KVxuICBsZXQgZmlsdGVyX21hcCBsaXN0IH5mID0gcmV2X2ZpbHRlcl9vcHQgKHJldl9tYXAgbGlzdCB+ZilcbiAgbGV0IGNvbmNhdF9tYXAgbGlzdCB+ZiA9IGNvbmNhdCAobWFwIGxpc3QgfmYpXG5cbiAgbGV0IHJlYyBmaW5kX21hcCBsaXN0IH5mID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGhlYWQgOjogdGFpbCAtPiAoXG4gICAgICAgIG1hdGNoIGYgaGVhZCB3aXRoIFNvbWUgXyBhcyBzb21lIC0+IHNvbWUgfCBOb25lIC0+IGZpbmRfbWFwIHRhaWwgfmYpXG5cbiAgbGV0IGZpbmRfbWFwX2V4biBsaXN0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCBsaXN0IH5mIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG4gIGxldCByZWMgbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBbIHggXSAtPiBTb21lIHhcbiAgICB8IF8gOjogKF8gOjogXyBhcyByZXN0KSAtPiBsYXN0IHJlc3RcblxuICBsZXQgc3BsaXRfd2hpbGUgbGlzdCB+ZiA9XG4gICAgbGV0IHJlYyBzcGxpdF93aGlsZV9pbnRvIGxpc3QgfmYgfmFjYyA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gZiBoZWFkIC0+IHNwbGl0X3doaWxlX2ludG8gdGFpbCB+ZiB+YWNjOihoZWFkIDo6IGFjYylcbiAgICAgIHwgXyA6OiBfIHwgW10gLT4gKExpc3QucmV2IGFjYywgbGlzdClcbiAgICBpblxuICAgIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjOltdXG5cbiAgbGV0IGZpbmRfYV9kdXAgKHR5cGUgZWx0KSBsaXN0IH5jb21wYXJlID1cbiAgICBsZXQgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZWx0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZCBpblxuICAgIGxldCBtb2R1bGUgRWx0X3NldCA9IFNldC5NYWtlIChFbHQpIGluXG4gICAgbGV0IHJlYyBmaW5kX2FfZHVwX2luIGxpc3QgfnNldCA9XG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBFbHRfc2V0Lm1lbSBoZWFkIHNldCB0aGVuIFNvbWUgaGVhZFxuICAgICAgICAgIGVsc2UgZmluZF9hX2R1cF9pbiB0YWlsIH5zZXQ6KEVsdF9zZXQuYWRkIGhlYWQgc2V0KVxuICAgIGluXG4gICAgZmluZF9hX2R1cF9pbiBsaXN0IH5zZXQ6RWx0X3NldC5lbXB0eVxuXG4gIGxldCBhc3NvY19vcHQga2V5IGFsaXN0ID1cbiAgICBtYXRjaCBhc3NvYyBrZXkgYWxpc3Qgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gICgqIHJlb3JkZXJzIGFyZ3VtZW50cyB0byBpbXByb3ZlIHR5cGUgaW5mZXJlbmNlICopXG4gIGxldCBpdGVyIGxpc3QgfmYgPSBpdGVyIGxpc3QgfmZcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBpc19zb21lID0gZnVuY3Rpb24gTm9uZSAtPiBmYWxzZSB8IFNvbWUgXyAtPiB0cnVlXG4gIGxldCBpdGVyIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgeCAtPiBmIHhcbiAgbGV0IG1hcCB0IH5mID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gbWF0Y2ggdCB3aXRoIE5vbmUgLT4gZGVmYXVsdCB8IFNvbWUgeCAtPiB4XG4gIGxldCB0b19saXN0IHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBbXSB8IFNvbWUgeCAtPiBbIHggXVxuZW5kXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IGYgYSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgbWFwX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBPayAoZiBhKSB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IGhhbmRsZV9lcnJvciB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gYSB8IEVycm9yIGUgLT4gZiBlXG5lbmRcblxubW9kdWxlIE5vbkVtcHR5TGlzdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqICdhIGxpc3RcblxuICBsZXQgKCBAICkgKHQxLCBxMSkgKHQyLCBxMikgPSAodDEsIHExIEAgKHQyIDo6IHEyKSlcbiAgbGV0IGhkID0gZnN0XG4gIGxldCB0b19saXN0ICh0LCBxKSA9IHQgOjogcVxuICBsZXQgbWFwIH5mICh0LCBxKSA9IChmIHQsIExpc3QubWFwIH5mIHEpXG5lbmRcblxubW9kdWxlIE91dF9jaGFubmVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSA/KGFwcGVuZCA9IGZhbHNlKSA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NikgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICAgIGxldCBmbGFncyA9IChpZiBhcHBlbmQgdGhlbiBPcGVuX2FwcGVuZCBlbHNlIE9wZW5fdHJ1bmMpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gICAgbGV0IHQgPSBjcmVhdGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIGluXG4gICAgRXhuLnByb3RlY3R4IHQgfmYgfmZpbmFsbHk6Y2xvc2Vfb3V0XG5cbiAgbGV0IHdyaXRlX2FsbCBmaWxlbmFtZSB+ZGF0YSA9XG4gICAgd2l0aF9maWxlIGZpbGVuYW1lIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGlzX2VtcHR5ICh0IDogdCkgPSBsZW5ndGggdCA9IDBcbiAgbGV0IHByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6MCB+bGVuXG4gIGxldCBzdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOihsZW5ndGggdCAtIGxlbikgfmxlblxuICBsZXQgZHJvcF9wcmVmaXggdCBsZW4gPSBzdWIgdCB+cG9zOmxlbiB+bGVuOihsZW5ndGggdCAtIGxlbilcbiAgbGV0IGRyb3Bfc3VmZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuXG4gIGxldCBpc19wcmVmaXggdCB+cHJlZml4ID1cbiAgICBsZXQgcmVjIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlblxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgcG9zKSAoZ2V0IHByZWZpeCBwb3MpXG4gICAgICAgICAmJiBpc19wcmVmaXhfZnJvbSB0IH5wcmVmaXggfnBvczoocG9zICsgMSkgfmxlblxuICAgIGluXG4gICAgbGVuZ3RoIHQgPj0gbGVuZ3RoIHByZWZpeFxuICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOjAgfmxlbjoobGVuZ3RoIHByZWZpeClcblxuICBsZXQgaXNfc3VmZml4IHQgfnN1ZmZpeCA9XG4gICAgbGV0IHJlYyBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3MgfnN1ZmZpeF9vZmZzZXQgPVxuICAgICAgcG9zIDwgMFxuICAgICAgfHwgQ2hhci5lcXVhbCAoZ2V0IHQgKHN1ZmZpeF9vZmZzZXQgKyBwb3MpKSAoZ2V0IHN1ZmZpeCBwb3MpXG4gICAgICAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4IH5wb3M6KHBvcyAtIDEpIH5zdWZmaXhfb2Zmc2V0XG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggc3VmZml4XG4gICAgJiYgaXNfc3VmZml4X3VwX3RvIHQgfnN1ZmZpeFxuICAgICAgICAgfnBvczoobGVuZ3RoIHN1ZmZpeCAtIDEpXG4gICAgICAgICB+c3VmZml4X29mZnNldDoobGVuZ3RoIHQgLSBsZW5ndGggc3VmZml4KVxuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgbGV0IHJlYyBleGlzdHNfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zIDwgbGVuICYmIChmIChnZXQgdCBwb3MpIHx8IGV4aXN0c19hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBleGlzdHNfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgbGV0IHJlYyBmb3JfYWxsX2F0IHQgfmYgfnBvcyB+bGVuID1cbiAgICAgIHBvcyA+PSBsZW4gfHwgKGYgKGdldCB0IHBvcykgJiYgZm9yX2FsbF9hdCB0IH5mIH5wb3M6KHBvcyArIDEpIH5sZW4pXG4gICAgaW5cbiAgICBmb3JfYWxsX2F0IHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG4gIGxldCBpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCBpbmRleCB0IGNoYXIgd2l0aCBpIC0+IFNvbWUgaSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCByaW5kZXhfb3B0IHQgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IGluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gdCBjaGFyIHBvcyB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9mcm9tX29wdCB0IGNoYXIgcG9zID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGhcbiAgICB8IGkgLT4gU29tZSBpXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgbHNwbGl0MiB0IH5vbiA9XG4gICAgbWF0Y2ggaW5kZXhfb3B0IHQgb24gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICAgU29tZSAoc3ViIHQgfnBvczowIH5sZW46aSwgc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpKVxuXG4gIGxldCBjYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGxldCBsb3dlcmNhc2VfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxuICBsZXQgdW5jYXBpdGFsaXplX2FzY2lpID0gU3RkbGliLlN0cmluZy51bmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IHNwbGl0X29uX2NoYXIgdCB+c2VwID0gU3RkbGliLlN0cmluZy5zcGxpdF9vbl9jaGFyIHNlcCB0XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHN0cmluZylcblxuICBtb2R1bGUgTWFwID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYXAuTWFrZSAoU3RyaW5nKVxuXG4gICAgbGV0IGZpbmRfb3B0IGtleSB0ID1cbiAgICAgIG1hdGNoIGZpbmQga2V5IHQgd2l0aCB4IC0+IFNvbWUgeCB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuICBlbmRcblxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFN0cmluZylcbmVuZFxuXG5sZXQgKCBAICkgPSBMaXN0LmFwcGVuZFxubGV0IG91dHB1dCBvYyBieXRlcyB+cG9zIH5sZW4gPSBvdXRwdXQgb2MgYnl0ZXMgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIH5wb3MgfmxlbiA9IG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyaW5nIHBvcyBsZW5cbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTCA9IEFzdGxpYi5Mb2NhdGlvblxuXG50eXBlIHQgPSBsb2NhdGlvbiA9IHtcbiAgbG9jX3N0YXJ0IDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZW5kIDogTGV4aW5nLnBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5sZXQgaW5fZmlsZSBuYW1lID1cbiAgbGV0IGxvYyA9IHsgcG9zX2ZuYW1lID0gbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAtMSB9IGluXG4gIHsgbG9jX3N0YXJ0ID0gbG9jOyBsb2NfZW5kID0gbG9jOyBsb2NfZ2hvc3QgPSB0cnVlIH1cblxubGV0IHNldF9maWxlbmFtZSBsb2MgZm4gPVxuICBsZXQgbG9jX3N0YXJ0ID0geyBsb2MubG9jX3N0YXJ0IHdpdGggcG9zX2ZuYW1lID0gZm4gfSBpblxuICBsZXQgbG9jX2VuZCA9IHsgbG9jLmxvY19lbmQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIHsgbG9jIHdpdGggbG9jX3N0YXJ0OyBsb2NfZW5kIH1cblxubGV0IG5vbmUgPSBpbl9maWxlIFwiX25vbmVfXCJcblxubGV0IGluaXQgbGV4YnVmIGZuYW1lID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSAxOyBwb3NfYm9sID0gMDsgcG9zX2NudW0gPSAwIH1cblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIGZtdCA9IEwucmFpc2VfZXJyb3JmID9sb2MgZm10XG5sZXQgcmVwb3J0X2V4Y2VwdGlvbiA9IEwucmVwb3J0X2V4Y2VwdGlvblxuXG5sZXQgb2ZfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gIHtcbiAgICBsb2Nfc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3A7XG4gICAgbG9jX2VuZCA9IGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICB9XG5cbmxldCBwcmludCBwcGYgdCA9XG4gIFN0ZGxpYi5Gb3JtYXQuZnByaW50ZiBwcGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XCJcbiAgICB0LmxvY19zdGFydC5wb3NfZm5hbWUgdC5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAodC5sb2Nfc3RhcnQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuICAgICh0LmxvY19lbmQucG9zX2NudW0gLSB0LmxvY19zdGFydC5wb3NfYm9sKVxuXG50eXBlIG5vbnJlYyAnYSBsb2MgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiB0IH1cblxubGV0IGNvbXBhcmVfcG9zIHAxIHAyID1cbiAgbGV0IG9wZW4gTGV4aW5nIGluXG4gIGxldCBjb2x1bW4gcCA9XG4gICAgKCogTWFudWFsIGV4dHJhY3Q6XG4gICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3NfY251bSBhbmQgcG9zX2JvbCBpcyB0aGUgY2hhcmFjdGVyIG9mZnNldFxuICAgICAgIHdpdGhpbiB0aGUgbGluZSAoaS5lLiB0aGUgY29sdW1uIG51bWJlciwgYXNzdW1pbmcgZWFjaCBjaGFyYWN0ZXIgaXNcbiAgICAgICBvbmUgY29sdW1uIHdpZGUpLiAqKVxuICAgIHAucG9zX2NudW0gLSBwLnBvc19ib2xcbiAgaW5cbiAgbWF0Y2ggSW50LmNvbXBhcmUgcDEucG9zX2xudW0gcDIucG9zX2xudW0gd2l0aFxuICB8IDAgLT4gSW50LmNvbXBhcmUgKGNvbHVtbiBwMSkgKGNvbHVtbiBwMilcbiAgfCBuIC0+IG5cblxubGV0IG1pbl9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA8PSAwIHRoZW4gcDEgZWxzZSBwMlxubGV0IG1heF9wb3MgcDEgcDIgPSBpZiBjb21wYXJlX3BvcyBwMSBwMiA+PSAwIHRoZW4gcDEgZWxzZSBwMlxuXG5sZXQgY29tcGFyZSBsb2MxIGxvYzIgPVxuICBtYXRjaCBjb21wYXJlX3BvcyBsb2MxLmxvY19zdGFydCBsb2MyLmxvY19zdGFydCB3aXRoXG4gIHwgMCAtPiBjb21wYXJlX3BvcyBsb2MxLmxvY19lbmQgbG9jMi5sb2NfZW5kXG4gIHwgbiAtPiBuXG5cbm1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICBpbmNsdWRlIFBweGxpYl9hc3QuTG9jYXRpb25fZXJyb3JcblxuICBsZXQgY3JlYXRlZiB+bG9jIGZtdCA9IEZvcm1hdC5rYXNwcmludGYgKGZ1biBzdHIgLT4gbWFrZSB+bG9jIH5zdWI6W10gc3RyKSBmbXRcbmVuZFxuXG5sZXQgZXJyb3JfZXh0ZW5zaW9uZiB+bG9jIGZtdCA9XG4gIEZvcm1hdC5rYXNwcmludGZcbiAgICAoZnVuIHN0ciAtPiBFcnJvci50b19leHRlbnNpb24gQEAgRXJyb3IubWFrZSB+bG9jIH5zdWI6W10gc3RyKVxuICAgIGZtdFxuXG5leGNlcHRpb24gRXJyb3IgPSBMLkVycm9yXG5cbmxldCAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgIHwgRXJyb3IgZSAtPiBTb21lIChFcnJvci5tZXNzYWdlIGUpXG4gICAgfCBfIC0+IE5vbmUpXG4iLCJvcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEV4cGVjdGVkIG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxubGV0IGZhaWwgbG9jIGV4cGVjdGVkID0gcmFpc2UgKEV4cGVjdGVkIChsb2MsIGV4cGVjdGVkKSlcblxudHlwZSBjb250ZXh0ID0ge1xuICAoKiBbbWF0Y2hlZF0gY291bnRzIGhvdyBtYW55IGNvbnN0cnVjdG9ycyBoYXZlIGJlZW4gbWF0Y2hlZC4gVGhpcyBpcyB1c2VkIHRvIGZpbmQgd2hhdFxuICAgICBwYXR0ZXJuIG1hdGNoZXMgdGhlIG1vc3Qgc29tZSBwaWVjZSBvZiBhc3QgaW4gW0FzdF9wYXR0ZXJuLmFsdF0uIEluIHRoZSBjYXNlIHdoZXJlXG4gICAgIGFsbCBicmFuY2hlcyBmYWlsIHRvIG1hdGNoLCB3ZSByZXBvcnQgdGhlIGVycm9yIGZyb20gdGhlIG9uZSB0aGF0IG1hdGNoZXMgdGhlXG4gICAgIG1vc3QuXG5cbiAgICAgVGhpcyBpcyBvbmx5IGluY3JlbWVudGVkIGJ5IGNvbWJpbmF0b3JzIHRoYXQgY2FuIGZhaWwuICopXG4gIG11dGFibGUgbWF0Y2hlZCA6IGludDtcbn1cblxudHlwZSAoJ21hdGNoZWRfdmFsdWUsICdrLCAna19yZXN1bHQpIHQgPVxuICB8IFQgb2YgKGNvbnRleHQgLT4gTG9jYXRpb24udCAtPiAnbWF0Y2hlZF92YWx1ZSAtPiAnayAtPiAna19yZXN1bHQpXG4iLCJvcGVuIEltcG9ydFxubW9kdWxlIE0gPVxuICBzdHJ1Y3RcbiAgICBsZXQgYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnBheWxvYWQgLT5cbiAgICAgICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICA9XG4gICAgICAoKGZ1biB+b3AgLT5cbiAgICAgICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHAgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9vcCA9IG9wO1xuICAgICAgICAgICAgICAgICAgICBwYm9wX3BhdCA9IHBhdDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9leHAgPSBleHA7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbmhlcml0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX2luZm9zIH5sb2MgID1cbiAgICAgICgoZnVuIH52aXJ0IC0+XG4gICAgICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9hcnJvdyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfaW5oZXJpdCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl92YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfdmFsIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdGZfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfYXR0cmlidXRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnZhcnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmFyZ3MgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfYW55XG4gICAgICB9XG4gICAgbGV0IHB0eXBfdmFyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXIgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYXJyb3cgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX29iamVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2ludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2Jvb2wgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbWF0Y2ggfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90cnkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF92YXJpYW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9yZWNvcmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZm9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlbmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Fzc2VydCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xhenkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcG9seSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb2JqZWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbmV3dHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRvcCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgaW5jbHVkZV9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biBtb2RfIC0+XG4gICAgICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcGxkX211dGFibGUgPSBtdXRhYmxlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGV0b3AgfmxldF8gID1cbiAgICAgICgoZnVuIH5hbmRzIC0+ICgoZnVuIH5ib2R5IC0+IHsgbGV0XzsgYW5kczsgYm9keSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgID1cbiAgICAgICgoZnVuIH5lbmRfIC0+XG4gICAgICAgICAgKChmdW4gfmdob3N0IC0+XG4gICAgICAgICAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWJfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1iX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbWRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtZF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfYXBwbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9zaWduYXR1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV93aXRoIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfdHlwZW9mIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3RhZyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBvZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb3Blbl9pbmZvcyB+bG9jICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICgoZnVuIH5vdmVycmlkZSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gUHBhdF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhciB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbGlhcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdmFyaWFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X29yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwcmZfZGVzYyA9IChSdGFnICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ192YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2NsYXNzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9ldmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl92YWx1ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ZhbHVlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfb3BlbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9jbGFzcyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9pbmNsdWRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmFyZyAtPiB7IHBkaXJfbmFtZSA9IG5hbWU7IHBkaXJfYXJnID0gYXJnOyBwZGlyX2xvYyA9IGxvYyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNzdHJzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIGNvbnN0cnVjdG9yIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0aCAtPlxuICAgICAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNvbnN0cnVjdG9ycyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+bG9jICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICAgICAgcHZiX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAgKChmdW4gfnByaW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgID1cbiAgICAgICgoZnVuIH5wYXlsb2FkIC0+XG4gICAgICAgICAgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBhdHRyX2xvYyA9IGxvYyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGJpbmRpbmdfb3Agfm9wICA9XG4gICAgICAoKGZ1biB+cGF0IC0+XG4gICAgICAgICAgKChmdW4gfmV4cCAtPlxuICAgICAgICAgICAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjYXNlIH5saHMgID1cbiAgICAgICgoZnVuIH5ndWFyZCAtPlxuICAgICAgICAgICgoZnVuIH5yaHMgLT4geyBwY19saHMgPSBsaHM7IHBjX2d1YXJkID0gZ3VhcmQ7IHBjX3JocyA9IHJocyB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX3N0cnVjdHVyZSB4MCkgfVxuICAgIGxldCBwY2xfZnVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2xldCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNmX2Rlc2MgPSAoUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfdmFsIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX3ZhbCB4MCkgfVxuICAgIGxldCBwY2ZfbWV0aG9kIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY2ZfY29uc3RyYWludCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKSB9XG4gICAgbGV0IHBjZl9pbml0aWFsaXplciB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MCkgfVxuICAgIGxldCBwY2ZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwY2ZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBjbGFzc19pbmZvcyB+dmlydCAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgICAgICAgICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcGNpX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZiAgPVxuICAgICAgKChmdW4gfmZpZWxkcyAtPiB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfc2lnbmF0dXJlIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfYXJyb3cgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dmFycyAtPlxuICAgICAgICAgICgoZnVuIH5hcmdzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5yZXMgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgICAgICAgICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfb2JqZWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9vYmplY3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfY2xhc3MgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NsYXNzICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfcG9seSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wYWNrYWdlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZGlyX3N0cmluZyB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfc3RyaW5nIHgwKSB9XG4gICAgbGV0IHBkaXJfaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaW50ICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGRpcl9pZGVudCB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfaWRlbnQgeDApIH1cbiAgICBsZXQgcGRpcl9ib29sIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9ib29sIHgwKSB9XG4gICAgbGV0IHBleHBfaWRlbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lkZW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9tYXRjaCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHJ5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcmVjb3JkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZmllbGQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGZpZWxkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VxdWVuY2UgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlcXVlbmNlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3doaWxlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mb3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDQgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29lcmNlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZW5kIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZW5kICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX25ldyB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGluc3R2YXIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXNzZXJ0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29iamVjdCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfcGFjayB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldG9wIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3Igfm5hbWUgID1cbiAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBpbmNsdWRlX2luZm9zIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+bXV0YWJsZV8gLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICAgICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxldG9wIH5sZXRfICA9XG4gICAgICAoKGZ1biB+YW5kcyAtPiAoKGZ1biB+Ym9keSAtPiB7IGxldF87IGFuZHM7IGJvZHkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICA9XG4gICAgICAoKGZ1biB+ZW5kXyAtPlxuICAgICAgICAgICgoZnVuIH5naG9zdCAtPlxuICAgICAgICAgICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2JpbmRpbmcgfm5hbWUgID1cbiAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtYl9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1kX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1kX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbWRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2lkZW50IHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MCkgfVxuICAgIGxldCBwbW9kX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfdW5wYWNrIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF91bnBhY2sgeDApIH1cbiAgICBsZXQgcG1vZF9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV9pZGVudCB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfaWRlbnQgeDApIH1cbiAgICBsZXQgcG10eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9mdW5jdG9yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfd2l0aCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3R5cGVvZiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvdGFnIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICA9XG4gICAgICAoKGZ1biB+b3ZlcnJpZGUgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF92YXJpYW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICA9XG4gICAgICAoKGZ1biB+bG51bSAtPlxuICAgICAgICAgICgoZnVuIH5ib2wgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmNudW0gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2ZuYW1lID0gZm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBvc19sbnVtID0gbG51bTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IGJvbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2NudW0gPSBjbnVtXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJ0YWcgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcmZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCByaW5oZXJpdCB4MCA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJpbmhlcml0IHgwKSB9XG4gICAgbGV0IHBzaWdfdmFsdWUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ192YWx1ZSB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V2YWwgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXZhbCAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdmFsdWUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3R5cGV4dCB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdHlwZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9vcGVuIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfb3BlbiB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3MgeDApIH1cbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHN0cl9pbmNsdWRlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24geDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lICA9XG4gICAgICAoKGZ1biB+YXJnIC0+IHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5jc3RycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggID1cbiAgICAgICgoZnVuIH5wYXJhbXMgLT5cbiAgICAgICAgICAoKGZ1biB+Y29uc3RydWN0b3JzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICA9XG4gICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPSBwYXQ7XG4gICAgICAgICAgICBwdmJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICgoZnVuIH5wcmltIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgbG9jID0geyB0eHQgOiAnYTsgbG9jIDogTG9jYXRpb24udCB9XG5cbmxldCB0eHQgdCA9IHQudHh0XG5sZXQgbG9jIHQgPSB0LmxvY1xubGV0IG1ha2UgfmxvYyB0eHQgPSB7IGxvYzsgdHh0IH1cbmxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGxvbmdpZGVudCA9IExpZGVudCBvZiBzdHJpbmcgfCBMZG90IG9mIHQgKiBzdHJpbmcgfCBMYXBwbHkgb2YgdCAqIHRcblxuICBsZXQgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQgPSBQb2x5LmNvbXBhcmVcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50X2NoYXIgPSBmdW5jdGlvblxuICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJ18nIHwgJ1xcJycgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnQgPSBmdW5jdGlvblxuICAgIHwgXCJhc3JcIiB8IFwibGFuZFwiIHwgXCJsb3JcIiB8IFwibHNsXCIgfCBcImxzclwiIHwgXCJseG9yXCIgfCBcIm1vZFwiIHwgXCJvclwiIC0+IGZhbHNlXG4gICAgfCBzdHJpbmcgLT4gU3RyaW5nLmZvcl9hbGwgc3RyaW5nIH5mOmlzX25vcm1hbF9pZGVudF9jaGFyXG5cbiAgbGV0IHNob3J0X25hbWUgc3RyaW5nID1cbiAgICBpZiBpc19ub3JtYWxfaWRlbnQgc3RyaW5nIHRoZW4gc3RyaW5nIGVsc2UgXCIoIFwiIF4gc3RyaW5nIF4gXCIgKVwiXG5cbiAgbGV0IHJlYyBuYW1lID0gZnVuY3Rpb25cbiAgICB8IExpZGVudCBzIC0+IHNob3J0X25hbWUgc1xuICAgIHwgTGRvdCAoYSwgYikgLT4gbmFtZSBhIF4gXCIuXCIgXiBzaG9ydF9uYW1lIGJcbiAgICB8IExhcHBseSAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlcyglcylcIiAobmFtZSBhKSAobmFtZSBiKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAobmFtZSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgcmVjIGZsYXQgYWNjdSA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gcyA6OiBhY2N1XG4gIHwgTGRvdCAobGlkLCBzKSAtPiBmbGF0IChzIDo6IGFjY3UpIGxpZFxuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgZmxhdHRlbl9leG4gbGlkID0gZmxhdCBbXSBsaWRcblxubGV0IGxhc3RfZXhuID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzXG4gIHwgTGRvdCAoXywgcykgLT4gc1xuICB8IExhcHBseSAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuTG9uZ2lkZW50LmZsYXR0ZW5cIlxuXG5sZXQgdW5mbGF0dGVuIH5pbml0IGwgPSBMaXN0LmZvbGRfbGVmdCBsIH5pbml0IH5mOihmdW4gYWNjIHMgLT4gTGRvdCAoYWNjLCBzKSlcblxuKCogZm9yIGNhc2VzIHdpdGhvdXQgZG90dGVkIG9wZXJhdG9ycyAoZS5nLiBbcGFyc2UgXCJBLkIuQ1wiXSkgKilcbmxldCBwYXJzZV9zaW1wbGUgcyA9XG4gIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIHMgfnNlcDonLicgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IHMgOjogbCAtPiB1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsXG5cbigqIGhhbmRsZSBbXCJBLkIuKCsuKylcIl0gb3IgW1wiVmVjLiguJS4oKTwtKVwiXSAqKVxubGV0IHBhcnNlIHMgPVxuICBsZXQgaW52YWxpZCAoKSA9XG4gICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwiUHB4bGliLkxvbmdpZGVudC5wYXJzZTogJVNcIiBzKVxuICBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPCAxIHRoZW4gaW52YWxpZCAoKTtcbiAgbGV0IG9wZW5fcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcoJyBpblxuICBsZXQgY2xvc2VfcGFyID0gU3RyaW5nLmluZGV4X29wdCBzICcpJyBpblxuICBtYXRjaCAocy5bMF0sIG9wZW5fcGFyLCBjbG9zZV9wYXIpIHdpdGhcbiAgfCAoJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnXycpLCBOb25lLCBOb25lIC0+IHBhcnNlX3NpbXBsZSBzXG4gIHwgXywgTm9uZSwgTm9uZSAtPiBMaWRlbnQgcyAoKiBUaGlzIGlzIGEgcmF3IG9wZXJhdG9yLCBubyBtb2R1bGUgcGF0aCAqKVxuICB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IGludmFsaWQgKClcbiAgfCBfLCBTb21lIGwsIFNvbWUgciAtPiAoXG4gICAgICBpZiBJbnQuKHIgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSkgdGhlbiBpbnZhbGlkICgpO1xuICAgICAgbGV0IGdyb3VwID1cbiAgICAgICAgaWYgSW50LihyID0gbCArIDEpIHRoZW4gXCIoKVwiXG4gICAgICAgIGVsc2UgU3RyaW5nLnRyaW0gKFN0cmluZy5zdWIgcyB+cG9zOihsICsgMSkgfmxlbjoociAtIGwgLSAxKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQuKGwgPSAwKSB0aGVuIExpZGVudCBncm91cFxuICAgICAgZWxzZSBpZiBDaGFyLihzLltsIC0gMV0gPD4gJy4nKSB0aGVuIGludmFsaWQgKClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjoobCAtIDEpIGluXG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdF9vbl9jaGFyIGJlZm9yZSB+c2VwOicuJyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgcyA6OiBsIC0+IExkb3QgKHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGwsIGdyb3VwKSlcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlIChUKVxubW9kdWxlIFNldCA9IFNldC5NYWtlIChUKVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTG9jLnRcblxuICAgIGxldCBsb2MgKHggOiBfIHQpID0geC5sb2NcbiAgICBsZXQgbWsgfmxvYyB4ID0geyBsb2M7IHR4dCA9IHggfVxuICAgIGxldCBtYXAgZiB0ID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4gICAgbGV0IG1hcF9saWRlbnQgeCA9IG1hcCAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4XG4gICAgbGV0IGxpZGVudCB+bG9jIHggPSBtayB+bG9jIChMb25naWRlbnQucGFyc2UgeClcbiAgZW5kXG5cbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIC0tLS0tKilcbiAgbGV0IHBwYXRfY29uc3RydWN0IH5sb2MgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCB2YnMgLT4gWyBwc3RyX3ZhbHVlIH5sb2MgcmVjX2ZsYWcgdmJzIF1cblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYzpfIH5uYW1lOl8gfnBhcmFtczpfIH5jc3RyczpfIH5raW5kOl9cbiAgICAgIH5wcml2YXRlXzpfIH5tYW5pZmVzdDpfID1cbiAgICBmYWlsd2l0aFxuICAgICAgXCJQcHhsaWIuQXN0X2J1aWxkZXIubm9ucmVjX3R5cGVfZGVjbGFyYXRpb246IGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uXCJcblxuICBsZXQgZWludCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgZWNoYXIgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgZXN0cmluZyB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBlZmxvYXQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBlaW50MzIgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBlaW50NjQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBlbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IHBpbnQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IHBjaGFyIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IHBzdHJpbmcgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgcGZsb2F0IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgcGludDMyIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgcGludDY0IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgcG5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBlYm9vbCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IHBib29sIH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgZXZhciB+bG9jIHYgPSBwZXhwX2lkZW50IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHYpKVxuICBsZXQgcHZhciB+bG9jIHYgPSBwcGF0X3ZhciB+bG9jIChMb2NhdGVkLm1rIH5sb2MgdilcbiAgbGV0IGV1bml0IH5sb2MgPSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcHVuaXQgfmxvYyA9IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwZXhwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHB0eXBfdHVwbGUgfmxvYyBsXG5cbiAgbGV0IHBleHBfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocGV4cF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHBwYXRfdHVwbGVfb3B0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoIFtdIC0+IE5vbmUgfCBfIDo6IF8gLT4gU29tZSAocHBhdF90dXBsZSB+bG9jIGwpXG5cbiAgbGV0IHB0eXBfcG9seSB+bG9jIHZhcnMgdHkgPVxuICAgIG1hdGNoIHZhcnMgd2l0aCBbXSAtPiB0eSB8IF8gLT4gcHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuXG4gIGxldCBwZXhwX2FwcGx5IH5sb2MgZSBlbCA9XG4gICAgbWF0Y2ggKGUsIGVsKSB3aXRoXG4gICAgfCBfLCBbXSAtPiBlXG4gICAgfCB7IHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LCBfIC0+XG4gICAgICAgIHsgZSB3aXRoIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGUsIGFyZ3MgQCBlbCkgfVxuICAgIHwgXyAtPiBwZXhwX2FwcGx5IH5sb2MgZSBlbFxuXG4gIGxldCBlYXBwbHkgfmxvYyBlIGVsID1cbiAgICBwZXhwX2FwcGx5IH5sb2MgZSAoTGlzdC5tYXAgZWwgfmY6KGZ1biBlIC0+IChBc3R0eXBlcy5Ob2xhYmVsLCBlKSkpXG5cbiAgbGV0IGVhYnN0cmFjdCB+bG9jIHBzIGUgPVxuICAgIExpc3QuZm9sZF9yaWdodCBwcyB+aW5pdDplIH5mOihmdW4gcCBlIC0+XG4gICAgICAgIHBleHBfZnVuIH5sb2MgQXN0dHlwZXMuTm9sYWJlbCBOb25lIHAgZSlcblxuICBsZXQgZXNlcXVlbmNlIH5sb2MgZWwgPVxuICAgIG1hdGNoIExpc3QucmV2IGVsIHdpdGhcbiAgICB8IFtdIC0+IGV1bml0IH5sb2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHRsIH5pbml0OmhkIH5mOihmdW4gYWNjIGUgLT4gcGV4cF9zZXF1ZW5jZSB+bG9jIGUgYWNjKVxuXG4gIGxldCBwY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcHBhdF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCBlY29uc3RydWN0IGNkIGFyZyA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYzpjZC5wY2RfbG9jIChMb2NhdGVkLm1hcF9saWRlbnQgY2QucGNkX25hbWUpIGFyZ1xuXG4gIGxldCByZWMgZWxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcGV4cF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocGV4cF90dXBsZSB+bG9jIFsgeDsgZWxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCByZWMgcGxpc3QgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIltdXCIpKSBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvY1xuICAgICAgICAgIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCI6OlwiKSlcbiAgICAgICAgICAoU29tZSAocHBhdF90dXBsZSB+bG9jIFsgeDsgcGxpc3QgfmxvYyBsIF0pKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IH5sb2MgKGlkZW50IDogTG9uZ2lkZW50LnQpIH5mID1cbiAgICBtYXRjaCBpZGVudCB3aXRoXG4gICAgfCBMaWRlbnQgbiAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMaWRlbnQgKGYgbik7IGxvYyB9XG4gICAgfCBMZG90IChwYXRoLCBuKSAtPiBwZXhwX2lkZW50IH5sb2MgeyB0eHQgPSBMZG90IChwYXRoLCBmIG4pOyBsb2MgfVxuICAgIHwgTGFwcGx5IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bmV4cGVjdGVkIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZVwiXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgfmxvYzphcHBseV9sb2MgeyBMb2MubG9jOyB0eHQgPSBsb25naWRlbnQgfSB+ZiBhcmdzID1cbiAgICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCAobG9uZ2lkZW50IDogTG9uZ2lkZW50LnQpIHdpdGhcbiAgICB8IExpZGVudCBfIHwgTGRvdCAoKExpZGVudCBfIHwgTGRvdCBfKSwgXykgfCBMYXBwbHkgXyAtPiAoXG4gICAgICAgIGxldCBpZGVudCA9XG4gICAgICAgICAgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBsb25naWRlbnQgfmxvYyB+ZlxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBpZGVudFxuICAgICAgICB8IF8gOjogXyAtPiBlYXBwbHkgfmxvYzphcHBseV9sb2MgaWRlbnQgYXJncylcbiAgICB8IExkb3QgKChMYXBwbHkgXyBhcyBtb2R1bGVfcGF0aCksIG4pIC0+XG4gICAgICAgIGxldCBzdWZmaXhfbiBmdW5jdG9yXyA9IFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZnVuY3Rvcl8gXiBcIl9fXCIgXiBuIGluXG4gICAgICAgIGxldCByZWMgZ2F0aGVyX2xhcHBseSBmdW5jdG9yX2FyZ3MgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCAqIF8gPVxuICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgfCBMYXBwbHkgKHJlc3QsIGFyZykgLT4gZ2F0aGVyX2xhcHBseSAoYXJnIDo6IGZ1bmN0b3JfYXJncykgcmVzdFxuICAgICAgICAgIHwgTGlkZW50IGZ1bmN0b3JfIC0+IChMaWRlbnQgKHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICAgIHwgTGRvdCAoZnVuY3Rvcl9wYXRoLCBmdW5jdG9yXykgLT5cbiAgICAgICAgICAgICAgKExkb3QgKGZ1bmN0b3JfcGF0aCwgc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpZGVudCwgZnVuY3Rvcl9hcmdzID0gZ2F0aGVyX2xhcHBseSBbXSBtb2R1bGVfcGF0aCBpblxuICAgICAgICBlYXBwbHkgfmxvYzphcHBseV9sb2NcbiAgICAgICAgICAodW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSBpZGVudCB+bG9jIH5mKVxuICAgICAgICAgIChMaXN0Lm1hcCBmdW5jdG9yX2FyZ3MgfmY6KGZ1biBwYXRoIC0+XG4gICAgICAgICAgICAgICBwZXhwX3BhY2sgfmxvYyAocG1vZF9pZGVudCB+bG9jIHsgdHh0ID0gcGF0aDsgbG9jIH0pKVxuICAgICAgICAgIEAgYXJncylcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBsb25naWRlbnQgfmYgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgbG9uZ2lkZW50IH5sb2MgfmYgW11cblxuICBsZXQgZXRhX3JlZHVjZSA9XG4gICAgbGV0IHJlYyBnYXRoZXJfcGFyYW1zIGFjYyBleHByID1cbiAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgIFBleHBfZnVuIChsYWJlbCwgTm9uZSAoKiBubyBkZWZhdWx0IGV4cHJlc3Npb24gKiksIHN1YnBhdCwgYm9keSk7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgIH0gLT4gKFxuICAgICAgICAgIG1hdGNoIHN1YnBhdCB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgTm9uZSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBwYXRfZGVzYyA9XG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIHR5ICk7XG4gICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICgqIFdlIHJlZHVjZSBbZnVuICh4IDogdHkpIC0+IGYgeF0gYnkgcmV3cml0aW5nIGl0IFsoZiA6IHR5IC0+IF8pXS4gKilcbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBTb21lIHR5KSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcikpXG4gICAgICB8IF8gLT4gKExpc3QucmV2IGFjYywgZXhwcilcbiAgICBpblxuICAgIGxldCBhbm5vdGF0ZSB+bG9jIGV4cHIgcGFyYW1zID1cbiAgICAgIGlmIExpc3QuZXhpc3RzIHBhcmFtcyB+ZjooZnVuIChfLCBfLCB0eSkgLT4gT3B0aW9uLmlzX3NvbWUgdHkpIHRoZW5cbiAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQgcGFyYW1zIH5pbml0OihwdHlwX2FueSB+bG9jKVxuICAgICAgICAgICAgfmY6KGZ1biAocGFyYW1fbGFiZWwsIHBhcmFtLCB0eV9vcHQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgbG9jID0gcGFyYW0ubG9jIGluXG4gICAgICAgICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdHlfb3B0IHdpdGggTm9uZSAtPiBwdHlwX2FueSB+bG9jIHwgU29tZSB0eSAtPiB0eVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwdHlwX2Fycm93IH5sb2MgcGFyYW1fbGFiZWwgdHkgYWNjKVxuICAgICAgICBpblxuICAgICAgICBwZXhwX2NvbnN0cmFpbnQgfmxvYyBleHByIHR5XG4gICAgICBlbHNlIGV4cHJcbiAgICBpblxuICAgIGxldCByZWMgZ2F0aGVyX2FyZ3MgbiB4ID1cbiAgICAgIGlmIG4gPSAwIHRoZW4gU29tZSAoeCwgW10pXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGJvZHksIGFyZ3MpO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIGlmIExpc3QubGVuZ3RoIGFyZ3MgPD0gbiB0aGVuXG4gICAgICAgICAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChuIC0gTGlzdC5sZW5ndGggYXJncykgYm9keSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSAoYm9keSwgYXJncycpIC0+IFNvbWUgKGJvZHksIGFyZ3MnIEAgYXJncylcbiAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICB8IF8gLT4gTm9uZVxuICAgIGluXG4gICAgZnVuIGV4cHIgLT5cbiAgICAgIGxldCBwYXJhbXMsIGJvZHkgPSBnYXRoZXJfcGFyYW1zIFtdIGV4cHIgaW5cbiAgICAgIG1hdGNoIGdhdGhlcl9hcmdzIChMaXN0Lmxlbmd0aCBwYXJhbXMpIGJvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gYXMgZl9pZGVudCksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsMiBhcmdzIHBhcmFtc1xuICAgICAgICAgICAgICB+ZjooZnVuIChhcmdfbGFiZWwsIGFyZykgKHBhcmFtX2xhYmVsLCBwYXJhbSwgXykgLT5cbiAgICAgICAgICAgICAgICBQb2x5LiggPSApIChhcmdfbGFiZWwgOiBhcmdfbGFiZWwpIHBhcmFtX2xhYmVsXG4gICAgICAgICAgICAgICAgJiZcbiAgICAgICAgICAgICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IG5hbWUnOyBfIH07XG4gICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgIFN0cmluZy4oID0gKSBuYW1lJyBwYXJhbS50eHRcbiAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgIHwgdHJ1ZSAtPiBTb21lIChhbm5vdGF0ZSB+bG9jOmV4cHIucGV4cF9sb2MgZl9pZGVudCBwYXJhbXMpKVxuICAgICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByID0gT3B0aW9uLnZhbHVlIChldGFfcmVkdWNlIGV4cHIpIH5kZWZhdWx0OmV4cHJcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIGV4cHIgfnJlY19mbGFnID1cbiAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgfCBSZWN1cnNpdmUgLT4gZXhwclxuICAgIHwgTm9ucmVjdXJzaXZlIC0+IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwclxuZW5kXG5cbm1vZHVsZSB0eXBlIExvYyA9IEFzdF9idWlsZGVyX2ludGYuTG9jXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9pbnRmLlNcblxuICBtb2R1bGUgTGF0ZXN0IDogc2lnXG4gICAgdmFsIHBwYXRfY29uc3RydWN0IDpcbiAgICAgIGxvbmdpZGVudCBsb2MgLT4gKGxhYmVsIGxvYyBsaXN0ICogcGF0dGVybikgb3B0aW9uIC0+IHBhdHRlcm5cblxuICAgIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgICAgdmFyczpsYWJlbCBsb2MgbGlzdCAtPlxuICAgICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgICB1bml0IC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICBlbmRcblxuICB2YWwgcHBhdF9jb25zdHJ1Y3QgOiBsb25naWRlbnQgbG9jIC0+IHBhdHRlcm4gb3B0aW9uIC0+IHBhdHRlcm5cblxuICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgYXJnczpjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG5lbmRcblxubW9kdWxlIE1ha2UgKExvYyA6IHNpZ1xuICB2YWwgbG9jIDogTG9jYXRpb24udFxuZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKVxuXG4gIG1vZHVsZSBMYXRlc3QgPSBzdHJ1Y3RcbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgPSBwcGF0X2NvbnN0cnVjdFxuXG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTWFrZSAoTG9jKSAtLS0tLSopXG5cbiAgbGV0IHBwYXRfY29uc3RydWN0IGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgPSBEZWZhdWx0LnBzdHJfdmFsdWVfbGlzdFxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV8gfm1hbmlmZXN0ID1cbiAgICBEZWZhdWx0Lm5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfXG4gICAgICB+bWFuaWZlc3RcblxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmYXVsdC5Mb2NhdGVkXG5cbiAgICBsZXQgbG9jIF8gPSBMb2MubG9jXG4gICAgbGV0IG1rIHggPSBtayB+bG9jOkxvYy5sb2MgeFxuICAgIGxldCBsaWRlbnQgeCA9IGxpZGVudCB+bG9jOkxvYy5sb2MgeFxuICBlbmRcblxuICBsZXQgcGV4cF90dXBsZSBsID0gRGVmYXVsdC5wZXhwX3R1cGxlIH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZSBsID0gRGVmYXVsdC5wcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSBsID0gRGVmYXVsdC5wdHlwX3R1cGxlIH5sb2MgbFxuICBsZXQgcGV4cF90dXBsZV9vcHQgbCA9IERlZmF1bHQucGV4cF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlX29wdCBsID0gRGVmYXVsdC5wcGF0X3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHB0eXBfcG9seSB2YXJzIHR5ID0gRGVmYXVsdC5wdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG4gIGxldCBwZXhwX2FwcGx5IGUgZWwgPSBEZWZhdWx0LnBleHBfYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlaW50IHQgPSBEZWZhdWx0LmVpbnQgfmxvYyB0XG4gIGxldCBlY2hhciB0ID0gRGVmYXVsdC5lY2hhciB+bG9jIHRcbiAgbGV0IGVzdHJpbmcgdCA9IERlZmF1bHQuZXN0cmluZyB+bG9jIHRcbiAgbGV0IGVmbG9hdCB0ID0gRGVmYXVsdC5lZmxvYXQgfmxvYyB0XG4gIGxldCBlaW50MzIgdCA9IERlZmF1bHQuZWludDMyIH5sb2MgdFxuICBsZXQgZWludDY0IHQgPSBEZWZhdWx0LmVpbnQ2NCB+bG9jIHRcbiAgbGV0IGVuYXRpdmVpbnQgdCA9IERlZmF1bHQuZW5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IGVib29sIHQgPSBEZWZhdWx0LmVib29sIH5sb2MgdFxuICBsZXQgZXZhciB0ID0gRGVmYXVsdC5ldmFyIH5sb2MgdFxuICBsZXQgcGludCB0ID0gRGVmYXVsdC5waW50IH5sb2MgdFxuICBsZXQgcGNoYXIgdCA9IERlZmF1bHQucGNoYXIgfmxvYyB0XG4gIGxldCBwc3RyaW5nIHQgPSBEZWZhdWx0LnBzdHJpbmcgfmxvYyB0XG4gIGxldCBwZmxvYXQgdCA9IERlZmF1bHQucGZsb2F0IH5sb2MgdFxuICBsZXQgcGludDMyIHQgPSBEZWZhdWx0LnBpbnQzMiB+bG9jIHRcbiAgbGV0IHBpbnQ2NCB0ID0gRGVmYXVsdC5waW50NjQgfmxvYyB0XG4gIGxldCBwbmF0aXZlaW50IHQgPSBEZWZhdWx0LnBuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBwYm9vbCB0ID0gRGVmYXVsdC5wYm9vbCB+bG9jIHRcbiAgbGV0IHB2YXIgdCA9IERlZmF1bHQucHZhciB+bG9jIHRcbiAgbGV0IGV1bml0ID0gRGVmYXVsdC5ldW5pdCB+bG9jXG4gIGxldCBwdW5pdCA9IERlZmF1bHQucHVuaXQgfmxvY1xuICBsZXQgZWNvbnN0cnVjdCA9IERlZmF1bHQuZWNvbnN0cnVjdFxuICBsZXQgcGNvbnN0cnVjdCA9IERlZmF1bHQucGNvbnN0cnVjdFxuICBsZXQgZWFwcGx5IGUgZWwgPSBEZWZhdWx0LmVhcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVhYnN0cmFjdCBwcyBlID0gRGVmYXVsdC5lYWJzdHJhY3QgfmxvYyBwcyBlXG4gIGxldCBlc2VxdWVuY2UgZWwgPSBEZWZhdWx0LmVzZXF1ZW5jZSB+bG9jIGVsXG4gIGxldCBlbGlzdCBsID0gRGVmYXVsdC5lbGlzdCB+bG9jIGxcbiAgbGV0IHBsaXN0IGwgPSBEZWZhdWx0LnBsaXN0IH5sb2MgbFxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IGlkZW50IH5mIGFyZ3MgPVxuICAgIERlZmF1bHQudHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mIGFyZ3NcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgPVxuICAgIERlZmF1bHQudW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZlxuXG4gIGxldCBldGFfcmVkdWNlID0gRGVmYXVsdC5ldGFfcmVkdWNlXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlID0gRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyA9XG4gICAgRGVmYXVsdC5ldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbmVuZFxuXG5sZXQgbWFrZSBsb2MgPVxuICAobW9kdWxlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBsb2MgPSBsb2NcbiAgZW5kKSA6IFMpXG4iLCIoKiogU21hbGwgaGVscGVyIHRvIGZpbmQgb3V0IHdobyBpcyB0aGUgY2FsbGVyIG9mIGEgZnVuY3Rpb24gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgUHJpbnRleGMgPSBTdGRsaWIuUHJpbnRleGNcblxudHlwZSB0ID0gUHJpbnRleGMubG9jYXRpb24gb3B0aW9uXG5cbmxldCBnZXQgfnNraXAgPVxuICBsZXQgc2tpcCA9IF9fRklMRV9fIDo6IHNraXAgaW5cbiAgbGV0IHN0YWNrID0gUHJpbnRleGMuZ2V0X2NhbGxzdGFjayAxNiBpblxuICBsZXQgbGVuID0gUHJpbnRleGMucmF3X2JhY2t0cmFjZV9sZW5ndGggc3RhY2sgaW5cbiAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgaWYgcG9zID0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Qgc3RhY2sgcG9zXG4gICAgICAgIHw+IFByaW50ZXhjLmNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IHw+IFByaW50ZXhjLlNsb3QubG9jYXRpb25cbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgbG9jIC0+XG4gICAgICAgICAgaWYgTGlzdC5tZW0gfnNldDpza2lwIGxvYy5maWxlbmFtZSB0aGVuIGxvb3AgKHBvcyArIDEpIGVsc2UgU29tZSBsb2NcbiAgaW5cbiAgbG9vcCAwXG4iLCIoKiogSGVscGVycyB0byBwcm92aWRlIGhpbnRzIHRvIFBQWCB1c2VycyBmb3IgdHlwb3Mgb3Igc3BlbGxjaGVja3MuICopXG5cbm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gQ3V0b2ZmX21ldFxuXG4oKiBBcyBmb3VuZCBoZXJlIGh0dHA6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9MZXZlbnNodGVpbl9kaXN0YW5jZSNPQ2FtbCAqKVxubGV0IGxldmVuc2h0ZWluX2Rpc3RhbmNlIHMgdCBjdXRvZmYgPVxuICBsZXQgbSA9IFN0cmluZy5sZW5ndGggcyBhbmQgbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICBpZiBjdXRvZmYgPSAwIHx8IGFicyAobSAtIG4pID49IGN1dG9mZiB0aGVuIE5vbmVcbiAgZWxzZVxuICAgICgqIGZvciBhbGwgaSBhbmQgaiwgZC4oaSkuKGopIHdpbGwgaG9sZCB0aGUgTGV2ZW5zaHRlaW4gZGlzdGFuY2UgYmV0d2VlbiB0aGVcbiAgICAgICBmaXJzdCBpIGNoYXJhY3RlcnMgb2YgcyBhbmQgdGhlIGZpcnN0IGogY2hhcmFjdGVycyBvZiB0ICopXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlX21hdHJpeCB+ZGlteDoobSArIDEpIH5kaW15OihuICsgMSkgMCBpblxuICAgIGZvciBpID0gMCB0byBtIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IGZpcnN0IHN0cmluZyB0byBhbiBlbXB0eSBzZWNvbmQgc3RyaW5nICopXG4gICAgICBkLihpKS4oMCkgPC0gaVxuICAgIGRvbmU7XG4gICAgZm9yIGogPSAwIHRvIG4gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgc2Vjb25kIHN0cmluZyB0byBhbiBlbXB0eSBmaXJzdCBzdHJpbmcgKilcbiAgICAgIGQuKDApLihqKSA8LSBqXG4gICAgZG9uZTtcbiAgICAoKiB0aGUgbWluaW11bSBvZiBlYWNoIGxpbmUgdG9nZXRoZXIgd2l0aCB0aGUgY29sdW1uIGluZGV4IHdpbGwgYmUgdXNlZFxuICAgICAgIHRvIG5vdGljZSBjdXRvZmYgZXhjZWVkaW5nIGFuZCByZXR1cm4gZWFybHkgaW4gdGhhdCBjYXNlICopXG4gICAgbGV0IGxpbmVfbWluID0gcmVmIDAgaW5cbiAgICBsZXQgZGlzdGFuY2UgPVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMSB0byBuIGRvXG4gICAgICAgICAgaWYgIWxpbmVfbWluID49IGN1dG9mZiAtIDEgJiYgaiA+PSBjdXRvZmYgLSAxIHRoZW4gcmFpc2UgQ3V0b2ZmX21ldDtcbiAgICAgICAgICBsaW5lX21pbiA6PSBtYXggbSBuO1xuICAgICAgICAgIGZvciBpID0gMSB0byBtIGRvXG4gICAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgICBpZiBDaGFyLmVxdWFsIHMuW2kgLSAxXSB0LltqIC0gMV0gdGhlbiBkLihpIC0gMSkuKGogLSAxKVxuICAgICAgICAgICAgICAgICgqIG5vIG9wZXJhdGlvbiByZXF1aXJlZCAqKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWluXG4gICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqKSArIDEpICgqIGEgZGVsZXRpb24gKilcbiAgICAgICAgICAgICAgICAgIChtaW5cbiAgICAgICAgICAgICAgICAgICAgIChkLihpKS4oaiAtIDEpICsgMSkgKCogYW4gaW5zZXJ0aW9uICopXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSAtIDEpLihqIC0gMSkgKyAxKSAoKiBhIHN1YnN0aXR1dGlvbiAqKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBkLihpKS4oaikgPC0gdmFsdWU7XG4gICAgICAgICAgICBsaW5lX21pbiA6PSBtaW4gIWxpbmVfbWluIHZhbHVlXG4gICAgICAgICAgZG9uZVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBkLihtKS4obikgPCBjdXRvZmYgdGhlbiBTb21lIGQuKG0pLihuKSBlbHNlIE5vbmVcbiAgICAgIHdpdGggQ3V0b2ZmX21ldCAtPiBOb25lXG4gICAgaW5cbiAgICBkaXN0YW5jZVxuXG5sZXQgc3BlbGxjaGVjayBuYW1lcyBuYW1lID1cbiAgbGV0IGN1dG9mZiA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBuYW1lIHdpdGhcbiAgICB8IDEgfCAyIC0+IDBcbiAgICB8IDMgfCA0IC0+IDFcbiAgICB8IDUgfCA2IC0+IDJcbiAgICB8IF8gLT4gM1xuICBpblxuICBsZXQgXywgc3VnZ2VzdGlvbnMgPVxuICAgIExpc3QuZm9sZF9sZWZ0IG5hbWVzIH5pbml0OihJbnQubWF4X2ludCwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKChiZXN0X2Rpc3RhbmNlLCBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSBhcyBhY2MpIHJlZ2lzdGVyZWRfbmFtZSAtPlxuICAgICAgICBtYXRjaCBsZXZlbnNodGVpbl9kaXN0YW5jZSBuYW1lIHJlZ2lzdGVyZWRfbmFtZSBjdXRvZmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgICBpZiBkaXN0IDwgYmVzdF9kaXN0YW5jZSB0aGVuIChkaXN0LCBbIHJlZ2lzdGVyZWRfbmFtZSBdKVxuICAgICAgICAgICAgZWxzZSBpZiBkaXN0ID4gYmVzdF9kaXN0YW5jZSB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoZGlzdCwgcmVnaXN0ZXJlZF9uYW1lIDo6IG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpKVxuICBpblxuICBtYXRjaCBMaXN0LnJldiBzdWdnZXN0aW9ucyB8PiBMaXN0LmZpbHRlciB+ZjooU3RyaW5nLiggPD4gKSBuYW1lKSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IGxhc3QgOjogcmV2X3Jlc3QgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiSGludDogRGlkIHlvdSBtZWFuICVzJXMlcz9cIlxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiAoTGlzdC5yZXYgcmV2X3Jlc3QpKVxuICAgICAgICAgICAoaWYgTGlzdC5pc19lbXB0eSByZXZfcmVzdCB0aGVuIFwiXCIgZWxzZSBcIiBvciBcIilcbiAgICAgICAgICAgbGFzdClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mID1cbiAgbGV0IHJlYyBjb2xsYXBzZV9hZnRlcl9hdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgcGFydCkpICYmIENoYXIuZXF1YWwgcGFydC5bMF0gJ0AnIHRoZW5cbiAgICAgICAgICBbIFN0cmluZy5jb25jYXQgKFN0cmluZy5kcm9wX3ByZWZpeCBwYXJ0IDEgOjogcGFydHMpIH5zZXA6XCIuXCIgXVxuICAgICAgICBlbHNlIHBhcnQgOjogY29sbGFwc2VfYWZ0ZXJfYXQgcGFydHNcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBwYXJ0cyA9XG4gICAgbWF0Y2ggcGFydHMgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGxvb3AgKGYgKFN0cmluZy5jb25jYXQgKHBhcnQgOjogcGFydHMpIH5zZXA6XCIuXCIpIGFjYykgcGFydHNcbiAgaW5cbiAgU3RyaW5nLnNwbGl0X29uX2NoYXIgbmFtZSB+c2VwOicuJyB8PiBjb2xsYXBzZV9hZnRlcl9hdCB8PiBsb29wIGFjY1xuXG5sZXQgZG90X3N1ZmZpeGVzIG5hbWUgPVxuICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OltdIH5mOihmdW4geCBhY2MgLT4geCA6OiBhY2MpXG5cbmxldCBzcGxpdF9wYXRoID1cbiAgbGV0IHJlYyBsb29wIHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKSB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgYW5kIGFmdGVyX2RvdCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdBJyAuLiAnWicgLT4gKFN0cmluZy5wcmVmaXggcyAoaSAtIDEpLCBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggcyBpKSlcbiAgICAgIHwgJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSlcbiAgICAgIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBpblxuICBmdW4gcyAtPiBsb29wIHMgMFxuXG5tb2R1bGUgUGF0dGVybiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG5hbWUgOiBzdHJpbmc7IGRvdF9zdWZmaXhlcyA6IFN0cmluZy5TZXQudCB9XG5cbiAgbGV0IG1ha2UgbmFtZSA9XG4gICAgeyBuYW1lOyBkb3Rfc3VmZml4ZXMgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKGRvdF9zdWZmaXhlcyBuYW1lKSB9XG5cbiAgbGV0IG5hbWUgdCA9IHQubmFtZVxuICBsZXQgbWF0Y2hlcyB0IG1hdGNoZWQgPSBTdHJpbmcuU2V0Lm1lbSBtYXRjaGVkIHQuZG90X3N1ZmZpeGVzXG5lbmRcblxuKCogT24gdGhlIG5hbWVzcGFjZSBcImEuTkFNRVNQQUNFXCIsIHJldHVybiB0aGUgcGFpciAoXCJhXCIsIE5BTUVTUEFDRSkgKilcbmxldCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSA9XG4gIG1hdGNoIFN0cmluZy5pbmRleF9vcHQgbmFtZSAnLicgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgaW5cbiAgICAgIGxldCBiZWZvcmVfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6MCB+bGVuOmkgaW5cbiAgICAgIGxldCBhZnRlcl9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczooaSArIDEpIH5sZW46KG4gLSBpIC0gMSkgaW5cbiAgICAgIFNvbWUgKGJlZm9yZV9kb3QsIGFmdGVyX2RvdClcblxubW9kdWxlIEFsbG93bGlzdGVkID0gc3RydWN0XG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBhcyB3ZWxsIGFzIGFsbCB0aGVpciBkb3Qgc3VmZml4ZXMuXG5cbiAgICAgU2luY2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuXG4gICAgIFNhZGx5LCB0aGUgY29tcGlsZXIgc2lsZW50bHkgaWdub3JlcyB0aGVtIGlmIHRoZXkgYXJlIG1pc3BsYWNlZC4uLlxuICAqKVxuICBsZXQgY3JlYXRlX3NldCBmdWxseV9xdWFsaWZpZWRfbmFtZXMgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICB+ZjooZnVuIGFjYyBuYW1lIC0+XG4gICAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWNjIH5mOihmdW4geCBhY2MgLT4gU3RyaW5nLlNldC5hZGQgeCBhY2MpKVxuICAgICAgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSBmdWxseV9xdWFsaWZpZWRfbmFtZXNcblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgY3JlYXRlX3NldFxuICAgICAgW1xuICAgICAgICBcIm9jYW1sLmFsZXJ0XCI7XG4gICAgICAgIFwib2NhbWwuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZF9tdXRhYmxlXCI7XG4gICAgICAgIFwib2NhbWwuZG9jXCI7XG4gICAgICAgIFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlXCI7XG4gICAgICAgIFwib2NhbWwuaW1tZWRpYXRlNjRcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVcIjtcbiAgICAgICAgXCJvY2FtbC5pbmxpbmVkXCI7XG4gICAgICAgIFwib2NhbWwubG9jYWxcIjtcbiAgICAgICAgXCJvY2FtbC5ub2FsbG9jXCI7XG4gICAgICAgIFwib2NhbWwucHB3YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwucmVtb3ZlX2FsaWFzZXNcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZWRcIjtcbiAgICAgICAgXCJvY2FtbC50YWlsY2FsbFwiO1xuICAgICAgICBcIm9jYW1sLnRleHRcIjtcbiAgICAgICAgXCJvY2FtbC51bmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsXCI7XG4gICAgICAgIFwib2NhbWwudW5yb2xsZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnRhZ2dlZFwiO1xuICAgICAgICBcIm9jYW1sLndhcm5fb25fbGl0ZXJhbF9wYXR0ZXJuXCI7XG4gICAgICAgIFwib2NhbWwud2FybmVycm9yXCI7XG4gICAgICAgIFwib2NhbWwud2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICAgIFwidG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgIF1cblxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgZXh0ZW5zaW9ucy5cblxuICAgICBTaW5jZSB0aGVzZSBleHRlbnNpb25zIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG4gICopXG4gIGxldCBleHRlbnNpb25zID0gY3JlYXRlX3NldCBbIFwib2NhbWwuZXJyb3JcIjsgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIiBdXG5cbiAgbGV0IGlzX2FsbG93bGlzdGVkIH5raW5kIG5hbWUgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgYEF0dHJpYnV0ZSAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGF0dHJpYnV0ZXNcbiAgICB8IGBFeHRlbnNpb24gLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBleHRlbnNpb25zXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVfbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgYXR0cmlidXRlc1xuICBsZXQgZ2V0X2V4dGVuc2lvbl9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBleHRlbnNpb25zXG5lbmRcblxubW9kdWxlIFJlc2VydmVkX25hbWVzcGFjZXMgPSBzdHJ1Y3RcbiAgdHlwZSByZXNlcnZlZCA9IChzdHJpbmcsIHN1Yl9uYW1lc3BhY2VzKSBIYXNodGJsLnRcbiAgYW5kIHN1Yl9uYW1lc3BhY2VzID0gQWxsIHwgU3ViX25hbWVzcGFjZXMgb2YgcmVzZXJ2ZWRcblxuICAoKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbQWxsXSwgdGhlbiBcInhcIiBhbmQgYWxsIHBhdGhzIHRoYXRcbiAgICogc3RhcnQgd2l0aCBcInguXCIgYXJlIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsXVxuICAgKlxuICAgKiBJZiBbdGJsXSBjb250YWlucyBhIG1hcHBpbmcgZnJvbSBcInhcIiB0byBbU3ViX25hbWVzcGFjZXMgdGJsJ10sIGFuZCBQIGlzXG4gICAqIHJlc2VydmVkIHdpdGggcmVzcGVjdCB0byBbdGJsJ10sIHRoZW4gYWxsIHBhdGhzIFwieC5QXCIgYXJlIHJlc2VydmVkIHdpdGhcbiAgICogcmVzcGVjdCB0byBbdGJsXS5cbiAgICopXG4gIGxldCBjcmVhdGVfcmVzZXJ2ZWQgKCkgOiByZXNlcnZlZCA9IEhhc2h0YmwuY3JlYXRlIDE2XG5cbiAgbGV0IHJlYyByZXNlcnZlIG5zIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5zIHdpdGhcbiAgICB8IE5vbmUgLT4gSGFzaHRibC5hZGRfZXhuIHRibCB+a2V5Om5zIH5kYXRhOkFsbFxuICAgIHwgU29tZSAob3V0ZXJfbnMsIHJlc3RfbnMpIC0+IChcbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHRibCBvdXRlcl9ucyB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgICAgICAgIFN1Yl9uYW1lc3BhY2VzIChjcmVhdGVfcmVzZXJ2ZWQgKCkpKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU3ViX25hbWVzcGFjZXMgcmVzdF90YmwgLT4gcmVzZXJ2ZSByZXN0X25zIHJlc3RfdGJsXG4gICAgICAgIHwgQWxsIC0+ICgpKVxuXG4gIGxldCByZWMgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibCA9XG4gICAgbWF0Y2ggc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgd2l0aFxuICAgIHwgU29tZSAobnMsIHJlc3QpIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbnMgd2l0aFxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsKSAtPlxuICAgICAgICAgICAgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyByZXN0IHJlc3RfdGJsXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2UpXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCB0YmwgbmFtZSB3aXRoXG4gICAgICAgIHwgU29tZSBBbGwgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgKFN1Yl9uYW1lc3BhY2VzIF8pIHwgTm9uZSAtPiBmYWxzZSlcblxuICBsZXQgdGJsID0gY3JlYXRlX3Jlc2VydmVkICgpXG4gIGxldCByZXNlcnZlIG5zID0gcmVzZXJ2ZSBucyB0YmxcbiAgbGV0IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSA9IGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmxcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1lcmxpblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWFzb25cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVmbXRcIiAoKiByZWFzb24gKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm5zXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXRhb2NhbWxcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwib2NhbWxmb3JtYXRcIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicHB4bGliLm1pZ3JhdGlvblwiXG5cbiAgbGV0IGNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lID1cbiAgICBsZXQga2luZCwgbGlzdCA9XG4gICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgIHwgYEF0dHJpYnV0ZSAtPiAoXCJhdHRyaWJ1dGVcIiwgQWxsb3dsaXN0ZWQuYXR0cmlidXRlcylcbiAgICAgIHwgYEV4dGVuc2lvbiAtPiAoXCJleHRlbnNpb25cIiwgQWxsb3dsaXN0ZWQuZXh0ZW5zaW9ucylcbiAgICBpblxuICAgIGlmIFN0cmluZy5TZXQubWVtIG5hbWUgbGlzdCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXQgbWF0Y2hlcyBhbiAlcyByZXNlcnZlZCBieSB0aGUgXFxcbiAgICAgICAgIGNvbXBpbGVyXCJcbiAgICAgICAga2luZCBuYW1lIGtpbmRcbiAgICBlbHNlIGlmIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgXCJDYW5ub3QgcmVnaXN0ZXIgJXMgd2l0aCBuYW1lICclcycgYXMgaXRzIG5hbWVzcGFjZSBpcyBtYXJrZWQgYXMgXFxcbiAgICAgICAgIHJlc2VydmVkXCJcbiAgICAgICAga2luZCBuYW1lXG5lbmRcblxubGV0IGlnbm9yZV9jaGVja3MgbmFtZSA9XG4gIFJlc2VydmVkX25hbWVzcGFjZXMuaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lXG4gIHx8IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OlwiX1wiXG5cbm1vZHVsZSBSZWdpc3RyYXIgPSBzdHJ1Y3RcbiAgdHlwZSBlbGVtZW50ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA6IHN0cmluZzsgZGVjbGFyZWRfYXQgOiBDYWxsZXJfaWQudCB9XG4gIHR5cGUgYWxsX2Zvcl9jb250ZXh0ID0geyBtdXRhYmxlIGFsbCA6IGVsZW1lbnQgU3RyaW5nLk1hcC50IH1cblxuICB0eXBlICdhIHQgPSB7XG4gICAgYWxsX2J5X2NvbnRleHQgOiAoJ2EsIGFsbF9mb3JfY29udGV4dCkgSGFzaHRibC50O1xuICAgIHNraXAgOiBzdHJpbmcgbGlzdDtcbiAgICBraW5kIDogc3RyaW5nO1xuICAgIHN0cmluZ19vZl9jb250ZXh0IDogJ2EgLT4gc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfmtpbmQgfmN1cnJlbnRfZmlsZSB+c3RyaW5nX29mX2NvbnRleHQgPVxuICAgIHtcbiAgICAgIGFsbF9ieV9jb250ZXh0ID0gSGFzaHRibC5jcmVhdGUgMTY7XG4gICAgICBza2lwID0gWyBjdXJyZW50X2ZpbGU7IF9fRklMRV9fIF07XG4gICAgICBraW5kO1xuICAgICAgc3RyaW5nX29mX2NvbnRleHQ7XG4gICAgfVxuXG4gIGxldCBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCA9XG4gICAgSGFzaHRibC5maW5kX29yX2FkZCB0LmFsbF9ieV9jb250ZXh0IGNvbnRleHQgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICB7IGFsbCA9IFN0cmluZy5NYXAuZW1wdHkgfSlcblxuICBsZXQgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWUgPVxuICAgIG1hdGNoIFN0cmluZy5NYXAuZmluZF9vcHQgbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgICBsZXQgZGVjbGFyZWRfYXQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIChsb2MgOiBTdGRsaWIuUHJpbnRleGMubG9jYXRpb24pIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiIGRlY2xhcmVkIGF0ICVzOiVkXCIgbG9jLmZpbGVuYW1lIGxvYy5saW5lX251bWJlclxuICAgICAgICBpblxuICAgICAgICBsZXQgY29udGV4dCA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSBzIC0+IFwiIG9uIFwiIF4gcyBeIFwic1wiXG4gICAgICAgIGluXG4gICAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICAgIFwiU29tZSBwcHgtZXMgdHJpZWQgdG8gcmVnaXN0ZXIgY29uZmxpY3RpbmcgdHJhbnNmb3JtYXRpb25zOiAlcyBcXFxuICAgICAgICAgICAnJXMnJXMlcyBtYXRjaGVzICVzICclcyclc1wiXG4gICAgICAgICAgKFN0cmluZy5jYXBpdGFsaXplX2FzY2lpIHQua2luZClcbiAgICAgICAgICBuYW1lIGNvbnRleHQgKGRlY2xhcmVkX2F0IGNhbGxlcikgdC5raW5kIGUuZnVsbHlfcXVhbGlmaWVkX25hbWVcbiAgICAgICAgICAoZGVjbGFyZWRfYXQgZS5kZWNsYXJlZF9hdClcblxuICBsZXQgY2hlY2tfY29sbGlzaW9ucyB0IGNvbnRleHQgbmFtZSA9XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IG5hbWVcblxuICBsZXQgcmVnaXN0ZXIgfmtpbmQgdCBjb250ZXh0IG5hbWUgPVxuICAgIFJlc2VydmVkX25hbWVzcGFjZXMuY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWU7XG4gICAgbGV0IGNhbGxlciA9IENhbGxlcl9pZC5nZXQgfnNraXA6dC5za2lwIGluXG4gICAgbGV0IGFsbCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgY2hlY2tfY29sbGlzaW9uc19sb2NhbCB+Y2FsbGVyIH5hbGxfZm9yX2NvbnRleHQ6YWxsIHQgY29udGV4dCBuYW1lO1xuICAgIGxldCB0ID0geyBmdWxseV9xdWFsaWZpZWRfbmFtZSA9IG5hbWU7IGRlY2xhcmVkX2F0ID0gY2FsbGVyIH0gaW5cbiAgICBhbGwuYWxsIDwtXG4gICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFsbC5hbGwgfmY6KGZ1biBuYW1lIGFjYyAtPlxuICAgICAgICAgIFN0cmluZy5NYXAuYWRkIG5hbWUgdCBhY2MpXG5cbiAgbGV0IHNwZWxsY2hlY2sgdCBjb250ZXh0ID8oYWxsb3dsaXN0ID0gW10pIG5hbWUgPVxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGxldCBhbGwgPVxuICAgICAgU3RyaW5nLk1hcC5mb2xkIChmdW4ga2V5IF8gYWNjIC0+IGtleSA6OiBhY2MpIGFsbF9mb3JfY29udGV4dC5hbGwgW11cbiAgICBpblxuICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoYWxsIEAgYWxsb3dsaXN0KSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgXyBhcyB4IC0+IHhcbiAgICB8IE5vbmUgd2hlbiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgLT4gTm9uZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIGxldCBvdGhlcl9jb250ZXh0cyA9XG4gICAgICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgICAgICAoZnVuIGN0eCBhbGxfZnJvbV9jb250ZXh0IGFjYyAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIFBvbHkuKCA8PiApIGNvbnRleHQgY3R4XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZnJvbV9jb250ZXh0LmFsbFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjdHggd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPiAocyBeIFwic1wiKSA6OiBhY2NcbiAgICAgICAgICAgICAgZWxzZSBhY2MpXG4gICAgICAgICAgICB0LmFsbF9ieV9jb250ZXh0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcF90ZXh0ID0gRm9ybWF0LnBwX3ByaW50X3RleHQgaW5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29udGV4dCBwcGYgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBcIlwiIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgbGV0IGFfb3JfYW4gPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyB8ICd5JyAtPiBcImFuXCJcbiAgICAgICAgICAgICAgICB8IF8gLT4gXCJhXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmXG4gICAgICAgICAgICAgICAgXCJAIGJ1dEAgaXNAIHVzZWRAIGhlcmVAIGluQCB0aGVAIGNvbnRleHRAIG9mQCAlc0AgJWFcIiBhX29yX2FuXG4gICAgICAgICAgICAgICAgcHBfdGV4dCBzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5zb3J0IH5jbXA6KGZ1biB4IHkgLT4gLVN0cmluZy5jb21wYXJlIHggeSkgb3RoZXJfY29udGV4dHNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBbIGMgXSAtPlxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZSBwcF90ZXh0IGNcbiAgICAgICAgICAgICAgICAgY3VycmVudF9jb250ZXh0KVxuICAgICAgICB8IGxhc3QgOjogcmV2X290aGVycyAtPlxuICAgICAgICAgICAgbGV0IG90aGVycyA9IExpc3QucmV2IHJldl9vdGhlcnMgaW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWFAIGFuZEAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWVcbiAgICAgICAgICAgICAgICAgKEZvcm1hdC5wcF9wcmludF9saXN0IHBwX3RleHQgfnBwX3NlcDooZnVuIHBwZiAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIixAIFwiKSlcbiAgICAgICAgICAgICAgICAgb3RoZXJzIHBwX3RleHQgbGFzdCBjdXJyZW50X2NvbnRleHQpKVxuXG4gIG1vZHVsZSBFcnJvciA9IHN0cnVjdFxuICAgICgqIFRPRE86IGhpbnQgc3BlbGxpbmcgZXJyb3JzIHJlZ2FyZGluZyByZXNlcnZlZCBuYW1lc3BhY2VzIG5hbWVzIGFuZCBhbGxvd2xpc3RlZFxuICAgICAgIG5hbWVzIGluc3RlYWQgb2YgdGFraW5nIGFuIG9wdGlvbmFsIFthbGxvd2xpc3RdIHBhcmFtZXRlci4gKilcbiAgICBsZXQgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAoZnVuIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIHNwZWxsY2hlY2sgdCBjb250ZXh0IG5hbWUudHh0ID9hbGxvd2xpc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlc1wiIG1zZ1xuICAgICAgICAgIHwgU29tZSBzIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzLlxcbiVzXCIgbXNnIHMpXG4gICAgICAgIGZtdCBuYW1lLnR4dFxuXG4gICAgbGV0IHJhaXNlX2Vycm9yZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnJhaXNlIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcblxuICAgIGxldCBlcnJvcl9leHRlbnNpb25mIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIEBAIGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IG5hbWVcbiAgZW5kXG5cbiAgbGV0IHJhaXNlX2Vycm9yZiA9IEVycm9yLnJhaXNlX2Vycm9yZlxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEJ1ZmZlciA9IFN0ZGxpYi5CdWZmZXJcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBsaWRlbnQgeCA9IExvbmdpZGVudC5MaWRlbnQgeFxuXG5sZXQgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgPVxuICBsZXQgbG9jID0gdGQucHR5cGVfbmFtZS5sb2MgaW5cbiAgcHR5cF9jb25zdHIgfmxvY1xuICAgIChMb2NhdGVkLm1hcCBsaWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAoTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmZzdClcblxubGV0IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4ID1cbiAgbGV0IGNob3AgbiB+b3JfbW9yZSBzdHJpbmcgcG9zIGYgPVxuICAgIGxldCB0YXJnZXQgPSAhcG9zIC0gbiBpblxuICAgIHdoaWxlICFwb3MgPiAwICYmIChvcl9tb3JlIHx8ICFwb3MgPiB0YXJnZXQpICYmIGYgc3RyaW5nLlshcG9zIC0gMV0gZG9cbiAgICAgIHBvcyA6PSAhcG9zIC0gMVxuICAgIGRvbmU7XG4gICAgIXBvcyA8PSB0YXJnZXRcbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIGxldCBwb3MgPSByZWYgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGlmXG4gICAgICBjaG9wIDEgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgICAmJiBjaG9wIDMgfm9yX21vcmU6dHJ1ZSBzdHJpbmcgcG9zIChmdW5jdGlvblxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAmJiBjaG9wIDIgfm9yX21vcmU6ZmFsc2Ugc3RyaW5nIHBvcyAoQ2hhci5lcXVhbCAnXycpXG4gICAgdGhlbiBTdHJpbmcucHJlZml4IHN0cmluZyAhcG9zXG4gICAgZWxzZSBzdHJpbmdcblxubGV0IGdlbl9zeW1ib2wgPVxuICBsZXQgY250ID0gcmVmIDAgaW5cbiAgZnVuID8ocHJlZml4ID0gXCJfeFwiKSAoKSAtPlxuICAgIGNudCA6PSAhY250ICsgMTtcbiAgICBsZXQgcHJlZml4ID0gc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggcHJlZml4IGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlc19fJTAzaV9cIiBwcmVmaXggIWNudFxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOlxuICAgICh0eXBlX2RlY2xhcmF0aW9uLCBfKSByZXN1bHQgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IHByZWZpeF9zdHJpbmcgaSA9XG4gICAgKCogYSwgYiwgLi4uLCB5LCB6LCBhYSwgYmIsIC4uLiAqKVxuICAgIFN0cmluZy5tYWtlICgoaSAvIDI2KSArIDEpIChDaGFyLmNociAoQ2hhci5jb2RlICdhJyArIChpIG1vZCAyNikpKVxuICBpblxuICBsZXQgbmFtZV9wYXJhbSBpICh0cCwgdmFyaWFuY2UpID1cbiAgICAobWF0Y2ggdHAucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYW55IC0+IE9rIChQdHlwX3ZhciAoZ2VuX3N5bWJvbCB+cHJlZml4OihwcmVmaXhfc3RyaW5nIGkpICgpKSlcbiAgICB8IFB0eXBfdmFyIF8gYXMgdiAtPiBPayB2XG4gICAgfCBfIC0+XG4gICAgICAgIEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6dHAucHR5cF9sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiKSlcbiAgICA+PnwgZnVuIHB0eXBfZGVzYyAtPiAoeyB0cCB3aXRoIHB0eXBfZGVzYyB9LCB2YXJpYW5jZSlcbiAgaW5cbiAgbGV0IHB0eXBlX3BhcmFtcywgZXJyb3JzID1cbiAgICB0ZC5wdHlwZV9wYXJhbXMgfD4gTGlzdC5tYXBpIH5mOm5hbWVfcGFyYW1cbiAgICB8PiBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE9rIG8gLT4gRWl0aGVyLkxlZnQgb1xuICAgICAgICAgfCBFcnJvciBlIC0+IEVpdGhlci5SaWdodCBlKVxuICBpblxuICBtYXRjaCBlcnJvcnMgd2l0aCBbXSAtPiBPayB7IHRkIHdpdGggcHR5cGVfcGFyYW1zIH0gfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpXG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDogdHlwZV9kZWNsYXJhdGlvbiA9XG4gIG1hdGNoIG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzIHRkIHdpdGhcbiAgfCBPayByZXMgLT4gcmVzXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+ZiA9XG4gIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgbGV0IHJlc3VsdF90eXBlID1cbiAgICBmIH5sb2M6dGQucHR5cGVfbmFtZS5sb2MgKGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkKVxuICBpblxuICBMaXN0LmZvbGRfcmlnaHQgdGQucHR5cGVfcGFyYW1zIH5pbml0OnJlc3VsdF90eXBlXG4gICAgfmY6KGZ1biAodHAsIF92YXJpYW5jZSkgYWNjIC0+XG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIHB0eXBfYXJyb3cgfmxvYyBOb2xhYmVsIChmIH5sb2MgdHApIGFjYylcblxubGV0IHN0cmluZ19vZl9jb3JlX3R5cGUgY3QgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBQcHJpbnRhc3QuY29yZV90eXBlIHBwZiBjdDtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgKHR5LCBfKSA9XG4gIGxldCBsb2MgPSB0eS5wdHlwX2xvYyBpblxuICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICB8IFB0eXBfdmFyIG5hbWUgLT4gT2sgKExvY2F0ZWQubWsgfmxvYyBuYW1lKVxuICB8IF8gLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIsIFtdKVxuXG5sZXQgZ2V0X3R5cGVfcGFyYW1fbmFtZSB0ID1cbiAgbWF0Y2ggZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMgdCB3aXRoXG4gIHwgT2sgZSAtPiBlXG4gIHwgRXJyb3IgKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG5jbGFzcyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcbiAgICB2YWwgdHlwZV9uYW1lcyA6IHN0cmluZyBsaXN0ID0gTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT4gdGQucHR5cGVfbmFtZS50eHQpXG4gICAgbWV0aG9kIHJldHVybl90cnVlICgpID0gcmFpc2Vfbm90cmFjZSBUeXBlX2lzX3JlY3Vyc2l2ZVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hcnJvdyBfIC0+ICgpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgaWQ7IF8gfSwgXylcbiAgICAgICAgd2hlbiBMaXN0Lm1lbSB+c2V0OnR5cGVfbmFtZXMgaWQgLT5cbiAgICAgICAgICBzZWxmI3JldHVybl90cnVlICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkID1cbiAgICAgICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBjZC5wY2RfcmVzICopXG4gICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICB8IFBjc3RyX3R1cGxlIGFyZ3MgLT4gTGlzdC5pdGVyIGFyZ3MgfmY6c2VsZiNjb3JlX3R5cGVcbiAgICAgIHwgUGNzdHJfcmVjb3JkIGZpZWxkcyAtPiBMaXN0Lml0ZXIgZmllbGRzIH5mOnNlbGYjbGFiZWxfZGVjbGFyYXRpb25cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlcyBfID0gKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGF0dHJpYnV0ZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpXG5cbiAgICBtZXRob2QgZ28gKCkgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICB8IFJlY3Vyc2l2ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5pdGVyIHRkcyB+ZjpzZWxmI3R5cGVfZGVjbGFyYXRpb24gd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlIC0+IFJlY3Vyc2l2ZVxuICAgICAgICAgIHwgKCkgLT4gTm9ucmVjdXJzaXZlKVxuICBlbmRcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID0gKG5ldyB0eXBlX2lzX3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMpI2dvICgpXG5sZXQgcmVjIGxhc3QgeCBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHggfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxubGV0IGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCA9XG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHIgW10gLT4gbmFtZS5sb2NcbiAgfCBQU3RyICh4IDo6IGwpIC0+IHsgeC5wc3RyX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzdHJfbG9jLmxvY19lbmQgfVxuICB8IFBTaWcgW10gLT4gbmFtZS5sb2NcbiAgfCBQU2lnICh4IDo6IGwpIC0+IHsgeC5wc2lnX2xvYyB3aXRoIGxvY19lbmQgPSAobGFzdCB4IGwpLnBzaWdfbG9jLmxvY19lbmQgfVxuICB8IFBUeXAgdCAtPiB0LnB0eXBfbG9jXG4gIHwgUFBhdCAoeCwgTm9uZSkgLT4geC5wcGF0X2xvY1xuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT4geyB4LnBwYXRfbG9jIHdpdGggbG9jX2VuZCA9IGUucGV4cF9sb2MubG9jX2VuZCB9XG5cbmxldCBsb2Nfb2ZfcGF5bG9hZCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcblxubGV0IGxvY19vZl9hdHRyaWJ1dGUgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICAoKiBUT0RPOiBmaXggdGhpcyBpbiB0aGUgY29tcGlsZXIsIGFuZCBtb3ZlIHRoZSBsb2dpYyB0byBvbXAgd2hlbiBjb252ZXJ0aW5nXG4gICAgIGZyb20gb2xkZXIgYXN0cy4gKilcbiAgKCogXCJvY2FtbC5kb2NcIiBhdHRyaWJ1dGVzIGFyZSBnZW5lcmF0ZWQgd2l0aCBbTG9jYXRpb24ubm9uZV0sIHdoaWNoIGlzIG5vdCBoZWxwZnVsIGZvclxuICAgICBlcnJvciBtZXNzYWdlcy4gKilcbiAgaWYgUG9seS4oID0gKSBhdHRyX25hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlblxuICAgIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWRcbiAgZWxzZVxuICAgIHtcbiAgICAgIGF0dHJfbmFtZS5sb2Mgd2l0aFxuICAgICAgbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkKS5sb2NfZW5kO1xuICAgIH1cblxubGV0IGxvY19vZl9leHRlbnNpb24gKG5hbWUsIHBheWxvYWQpID1cbiAgaWYgUG9seS4oID0gKSBuYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW4gbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkXG4gIGVsc2VcbiAgICB7IG5hbWUubG9jIHdpdGggbG9jX2VuZCA9IChsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQpLmxvY19lbmQgfVxuXG5sZXQgY3VycnlfYXBwbGljYXRpb25zIGV4cHIgPVxuICBsZXQgb3BlbiBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSBpblxuICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9hcHBseSAoZiwgb3JpZ19mb3J3YXJkX2FyZ3MpIC0+XG4gICAgICBsZXQgbG9jID0gZXhwci5wZXhwX2xvYyBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBmXG4gICAgICAgIHwgbGFzdF9hcmcgOjogcmV2X2Zyb250X2FyZ3MgLT5cbiAgICAgICAgICAgIHBleHBfYXBwbHkgfmxvYyAobG9vcCByZXZfZnJvbnRfYXJncykgWyBsYXN0X2FyZyBdXG4gICAgICBpblxuICAgICAgbG9vcCAoTGlzdC5yZXYgb3JpZ19mb3J3YXJkX2FyZ3MpXG4gIHwgXyAtPiBleHByXG5cbmxldCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIExpc3QuZmlsdGVyX21hcCB+ZjooZnVuY3Rpb25cbiAgICB8IHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9sb2MgPSBfOyBhdHRyX3BheWxvYWQgPSBfIH1cbiAgICAgIHdoZW4gTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUuTG9jYXRpb24udHh0IC0+XG4gICAgICAgIE5vbmVcbiAgICB8IGF0dHIgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxvY19vZl9hdHRyaWJ1dGUgYXR0ciBpblxuICAgICAgICBTb21lIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJBdHRyaWJ1dGVzIG5vdCBhbGxvd2VkIGhlcmVcIikpXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGRcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhIGFjYyA9IGF0dHJpYnV0ZXNfZXJyb3JzIFsgYSBdIEAgYWNjXG4gIGVuZFxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXMgbCA9XG4gIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGwgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlc19pbiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSA9IGFzc2VydF9ub19hdHRyaWJ1dGVzIFsgYSBdXG4gIGVuZFxuXG5sZXQgYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMgPVxuICB7XG4gICAgYXR0cl9uYW1lID0geyBsb2M7IHR4dCA9IFwib2NhbWwucHB3YXJuaW5nXCIgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpc19wb2x5bW9ycGhpY192YXJpYW50ID1cbiAgbGV0IHJlYyBjaGVjayA9IGZ1bmN0aW9uXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCBfOyBfIH0gLT4gYERlZmluaXRlbHlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAodHlwLCBfKTsgXyB9IC0+IGNoZWNrIHR5cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciBfOyBfIH0gLT4gYE1heWJlXG4gICAgfCBfIC0+IGBTdXJlbHlfbm90XG4gICAgKCogVHlwZSB2YXJzIGdvIGhlcmUgZXZlbiB0aG91Z2ggdGhleSBjb3VsZCBiZSBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzLCBob3dldmVyIHdlIGRvbid0IGhhbmRsZSBpdCBpZiB0aGV5IGdldCBzdWJzdGl0dXRlZFxuICAgICAgIGJ5IGEgcG9seW1vcnBoaWMgdmFyaWFudCB0aGF0IGlzIHRoZW4gaW5jbHVkZWQuICopXG4gIGluXG4gIGZ1biB0ZCB+c2lnXyAtPlxuICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCBfIHwgUHR5cGVfcmVjb3JkIF8gfCBQdHlwZV9vcGVuIC0+IGBTdXJlbHlfbm90XG4gICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoXG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGlmIHNpZ18gdGhlbiBgTWF5YmUgZWxzZSBgU3VyZWx5X25vdFxuICAgICAgICB8IFNvbWUgdHlwIC0+IGNoZWNrIHR5cClcblxubGV0IG1rX25hbWVkX3NpZyB+bG9jIH5zZ19uYW1lIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgWyB0ZCBdXG4gICAgd2hlbiBTdHJpbmcuZXF1YWwgdGQucHR5cGVfbmFtZS50eHQgXCJ0XCIgJiYgTGlzdC5pc19lbXB0eSB0ZC5wdHlwZV9jc3RycyAtPlxuICAgICAgaWZcbiAgICAgICAgKG5vdCBoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudClcbiAgICAgICAgJiYgUG9seS4oID0gKSAoaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlKSBgRGVmaW5pdGVseVxuICAgICAgdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBhcml0eSA9IExpc3QubGVuZ3RoIHRkLnB0eXBlX3BhcmFtcyBpblxuICAgICAgICBpZiBhcml0eSA+PSA0IHRoZW4gTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG10eSA9XG4gICAgICAgICAgICBpZiBhcml0eSA9IDAgdGhlbiBzZ19uYW1lIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlcyVkXCIgc2dfbmFtZSBhcml0eVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgICAgICAgIGxldCBmb3Jfc3Vic3QgPVxuICAgICAgICAgICAgQXN0X2hlbHBlci5UeXBlLm1rIH5sb2MgdGQucHR5cGVfbmFtZSB+cGFyYW1zOnRkLnB0eXBlX3BhcmFtc1xuICAgICAgICAgICAgICB+bWFuaWZlc3Q6XG4gICAgICAgICAgICAgICAgKHB0eXBfY29uc3RyIH5sb2NcbiAgICAgICAgICAgICAgICAgICAoTG9jYXRlZC5tYXBfbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIH5mOmZzdCB0ZC5wdHlwZV9wYXJhbXMpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKGluY2x1ZGVfaW5mb3MgfmxvY1xuICAgICAgICAgICAgICAgKHBtdHlfd2l0aCB+bG9jXG4gICAgICAgICAgICAgICAgICAocG10eV9pZGVudCB+bG9jIChMb2NhdGVkLmxpZGVudCBtdHkgfmxvYykpXG4gICAgICAgICAgICAgICAgICBbIFB3aXRoX3R5cGVzdWJzdCAoTG9jYXRlZC5saWRlbnQgfmxvYyBcInRcIiwgZm9yX3N1YnN0KSBdKSlcbiAgfCBfIC0+IE5vbmVcblxubGV0IGV4bl90b19sb2NfZXJyb3IgZXhuID1cbiAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoIFNvbWUgZXJyb3IgLT4gZXJyb3IgfCBOb25lIC0+IHJhaXNlIGV4blxuXG5tb2R1bGUgV2l0aF9lcnJvcnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgKiBMb2NhdGlvbi5FcnJvci50IGxpc3RcblxuICBsZXQgcmV0dXJuIGUgPSAoZSwgW10pXG5cbiAgbGV0ICggPj49ICkgKHgsIGVycm9yczEpIGYgPVxuICAgIGxldCB5LCBlcnJvcnMyID0gZiB4IGluXG4gICAgKHksIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gIGxldCAoID4+fCApICh4LCBlcnJvcnMpIGYgPSAoZiB4LCBlcnJvcnMpXG5cbiAgbGV0IG9mX3Jlc3VsdCByZXN1bHQgfmRlZmF1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBPayB4IC0+ICh4LCBbXSlcbiAgICB8IEVycm9yIGVycm9ycyAtPiAoZGVmYXVsdCwgTm9uRW1wdHlMaXN0LnRvX2xpc3QgZXJyb3JzKVxuXG4gIGxldCBjb21iaW5lX2Vycm9ycyBsaXN0ID0gKExpc3QubWFwIGxpc3QgfmY6ZnN0LCBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjpzbmQpXG5lbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9wYXR0ZXJuMFxubGV0IG5vbGFiZWwgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9sYWJlbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9sYWJlbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsbGVkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMYWJlbGxlZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFiZWxsZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wdGlvbmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcHRpb25hbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3B0aW9uYWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+cGF5bG9hZDooVCBwYXlsb2FkKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbmFtZSBjdHggKHguYXR0cl9uYW1lKS5sb2MgKHguYXR0cl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBiaW5kaW5nX29wIH5vcDooVCBvcCkgID1cbiAgKChmdW4gfnBhdDooVCBwYXQpIC0+XG4gICAgICAoKGZ1biB+ZXhwOihUIGV4cCkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG9wIGN0eCAoeC5wYm9wX29wKS5sb2MgKHgucGJvcF9vcCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cCBjdHggbG9jIHgucGJvcF9leHAgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2FzZSB+bGhzOihUIGxocykgID1cbiAgKChmdW4gfmd1YXJkOihUIGd1YXJkKSAtPlxuICAgICAgKChmdW4gfnJoczooVCByaHMpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGd1YXJkIGN0eCBsb2MgeC5wY19ndWFyZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHJocyBjdHggbG9jIHgucGNfcmhzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNsX2Z1biAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNmX2luaGVyaXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2luaXRpYWxpemVyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluaXRpYWxpemVyXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY2ZrX3ZpcnR1YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENma192aXJ0dWFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2aXJ0dWFsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjZmtfY29uY3JldGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25jcmV0ZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjaV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2lfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2lfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgY2xhc3NfaW5mb3MgfnZpcnQ6KFQgdmlydCkgID1cbiAgKChmdW4gfnBhcmFtczooVCBwYXJhbXMpIC0+XG4gICAgICAoKGZ1biB+bmFtZTooVCBuYW1lKSAtPlxuICAgICAgICAgICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNpX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gdmlydCBjdHggbG9jIHgucGNpX3ZpcnQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucGNpX3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wY2lfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzaWdfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgPVxuICAoKGZ1biB+ZmllbGRzOihUIGZpZWxkcykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc3RyX3NlbGYgayBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfY29uc3RyIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3R5X29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX3ZhbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9tZXRob2QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdGZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVnZXJcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY29uc3RfY2hhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X2NoYXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNoYXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjb25zdF9mbG9hdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZsb2F0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNzdHJfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNzdHJfcmVjb3JkIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dmFyczooVCB2YXJzKSAtPlxuICAgICAgKChmdW4gfmFyZ3M6KFQgYXJncykgLT5cbiAgICAgICAgICAoKGZ1biB+cmVzOihUIHJlcykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBjZF9uYW1lKS5sb2MgKHgucGNkX25hbWUpLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX2Fycm93IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfb2JqZWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfY2xhc3MgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcG9seSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHR5cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1cHRvID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVwdG8gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVwdG9cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBkb3dudG9fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IERvd250byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRG93bnRvXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcmFfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBkaXJfc3RyaW5nIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX3N0cmluZyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZGlyX2ludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGRpcl9ib29sIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQZGlyX2Jvb2wgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImJvb2xcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHBfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBleHBfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sZXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Z1bmN0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdGlvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZnVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgKChmdW4gKFQgZjMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9tYXRjaCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWF0Y2hcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90cnkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2NvbnN0cnVjdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJ1Y3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF92YXJpYW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9maWVsZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZpZWxkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2V0ZmllbGQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0ZmllbGRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9pZnRoZW5lbHNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3NlcXVlbmNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aGlsZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2ZvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgICgoZnVuIChUIGYzKSAtPlxuICAgICAgICAgICAgICAoKGZ1biAoVCBmNCkgLT5cbiAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjQgY3R4IGxvYyB4NCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb2VyY2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2VuZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2VuZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX25ldyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJuZXdcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGluc3R2YXJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vdmVycmlkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3ZlcnJpZGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xldG1vZHVsZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0bW9kdWxlXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldGV4Y2VwdGlvblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2Fzc2VydCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFzc2VydFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9vYmplY3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfb2JqZWN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX25ld3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX29wZW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2xldG9wIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldG9wIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRvcFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF91bnJlYWNoYWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+a2luZDooVCBraW5kKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wZXh0X2tpbmQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4dF9yZWJpbmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBleHRfcmViaW5kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmViaW5kXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBuYW1lZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBOYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5hbWVkXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5waW5jbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5waW5jbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGluY2x1ZGVfaW5mb3Mgfm1vZF86KFQgbW9kXykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG1vZF8gY3R4IGxvYyB4LnBpbmNsX21vZCBrIGluIGspKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGluamVjdGl2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBJbmplY3RpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkluamVjdGl2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vaW5qZWN0aXZpdHkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9JbmplY3Rpdml0eSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9JbmplY3Rpdml0eVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBsZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfm11dGFibGVfOihUIG11dGFibGVfKSAtPlxuICAgICAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBsZF9uYW1lKS5sb2MgKHgucGxkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBsZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsZXRvcCB+bGV0XzooVCBsZXRfKSAgPVxuICAoKGZ1biB+YW5kczooVCBhbmRzKSAtPlxuICAgICAgKChmdW4gfmJvZHk6KFQgYm9keSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhbmRzIGN0eCBsb2MgeC5hbmRzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYm9keSBjdHggbG9jIHguYm9keSBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICA9XG4gICgoZnVuIH5lbmRfOihUIGVuZF8pIC0+XG4gICAgICAoKGZ1biB+Z2hvc3Q6KFQgZ2hvc3QpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBzdGFydCBjdHggbG9jIHgubG9jX3N0YXJ0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZW5kXyBjdHggbG9jIHgubG9jX2VuZCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGlkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxpZGVudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbGRvdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBMZG90ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMZG90XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbGFwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wbWJfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH50eXBlXzooVCB0eXBlXykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnBtZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX3N0cnVjdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2RfZnVuY3RvciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtc19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXNfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+bWFuaWZlc3Q6KFQgbWFuaWZlc3QpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbXNfbmFtZSkubG9jICh4LnBtc19uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggKHgucG1zX21hbmlmZXN0KS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9mdW5jdG9yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV93aXRoIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndpdGhcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV90eXBlb2YgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlb2ZcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10ZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdGRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucG10ZF9uYW1lKS5sb2MgKHgucG10ZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBpbW11dGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgSW1tdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbW11dGFibGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBtdXRhYmxlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBNdXRhYmxlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJNdXRhYmxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG9mX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG9mX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb2ZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgb3RhZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk90YWdcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgb2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBvZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICA9XG4gICgoZnVuIH5vdmVycmlkZTooVCBvdmVycmlkZSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gb3ZlcnJpZGUgY3R4IGxvYyB4LnBvcGVuX292ZXJyaWRlIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2FsaWFzIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRlcnZhbFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfY29uc3RydWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X3JlY29yZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2FycmF5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2FycmF5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJheVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9yXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF90eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5wYWNrXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU3RyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU3RyXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQVHlwIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQVHlwXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBQYXQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBQYXRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwb3NpdGlvbiB+Zm5hbWU6KFQgZm5hbWUpICA9XG4gICgoZnVuIH5sbnVtOihUIGxudW0pIC0+XG4gICAgICAoKGZ1biB+Ym9sOihUIGJvbCkgLT5cbiAgICAgICAgICAoKGZ1biB+Y251bTooVCBjbnVtKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZm5hbWUgY3R4IGxvYyB4LnBvc19mbmFtZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBsbnVtIGN0eCBsb2MgeC5wb3NfbG51bSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBib2wgY3R4IGxvYyB4LnBvc19ib2wgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gY251bSBjdHggbG9jIHgucG9zX2NudW0gayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHByaXZhdGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFByaXZhdGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlByaXZhdGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdWJsaWMgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHVibGljIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQdWJsaWNcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBub25yZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25yZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCByZWN1cnNpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUmVjdXJzaXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSZWN1cnNpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcmZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcmZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnByZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBydGFnIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHJmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHJpbmhlcml0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBSaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmluaGVyaXRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzaWdfdHlwZXN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ190eXBleHQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXh0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2RzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfaW5jbHVkZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5jbHVkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19jbGFzcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfY2xhc3MgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19leHRlbnNpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHN0cl9ldmFsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXZhbFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfdmFsdWUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFsdWVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3ByaW1pdGl2ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwcmltaXRpdmVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfbW9kdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9vcGVuIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9vcGVuIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfZXh0ZW5zaW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfmFyZzooVCBhcmcpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wZGlyX25hbWUpLmxvYyAoeC5wZGlyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gYXJnIGN0eCBsb2MgeC5wZGlyX2FyZyBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdG9wX2RlZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHRvcF9kZWYgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlZlwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cGVfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cGVfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlwZV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNzdHJzOihUIGNzdHJzKSAtPlxuICAgICAgICAgICgoZnVuIH5raW5kOihUIGtpbmQpIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5wcml2YXRlXzooVCBwcml2YXRlXykgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnB0eXBlX25hbWUpLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdHlwZV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyBjdHggbG9jIHgucHR5cGVfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBraW5kIGN0eCBsb2MgeC5wdHlwZV9raW5kIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlXyBjdHggbG9jIHgucHR5cGVfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QgY3R4IGxvYyB4LnB0eXBlX21hbmlmZXN0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICA9XG4gICgoZnVuIH5wYXJhbXM6KFQgcGFyYW1zKSAtPlxuICAgICAgKChmdW4gfmNvbnN0cnVjdG9yczooVCBjb25zdHJ1Y3RvcnMpIC0+XG4gICAgICAgICAgKChmdW4gfnByaXZhdGVfOihUIHByaXZhdGVfKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB0eWV4dF9wYXRoKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHBhcmFtcyBjdHggbG9jIHgucHR5ZXh0X3BhcmFtcyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcml2YXRlXyBjdHggbG9jIHgucHR5ZXh0X3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwZV9hYnN0cmFjdCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWJzdHJhY3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV92YXJpYW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwZV9vcGVuID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX29wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCB2YWx1ZV9iaW5kaW5nX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2Yl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmJfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfYmluZGluZyB+cGF0OihUIHBhdCkgID1cbiAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gcGF0IGN0eCBsb2MgeC5wdmJfcGF0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB2YWxfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZhbF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2YWxfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdmFsdWVfZGVzY3JpcHRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgKChmdW4gfnByaW06KFQgcHJpbSkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucHZhbF9uYW1lKS5sb2MgKHgucHZhbF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwcmltIGN0eCBsb2MgeC5wdmFsX3ByaW0gayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGNvdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb3ZhcmlhbnQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNvdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbnRyYXZhcmlhbnQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29udHJhdmFyaWFudFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vdmFyaWFuY2UgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9WYXJpYW5jZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9WYXJpYW5jZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHZpcnR1YWxfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFZpcnR1YWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlZpcnR1YWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb25jcmV0ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb25jcmV0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ29uY3JldGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwd2l0aF90eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2R0eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfbW9kdHlwZXN1YnN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2RzdWJzdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2RzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFzdF9wYXR0ZXJuMFxuXG5sZXQgc2F2ZV9jb250ZXh0IGN0eCA9IGN0eC5tYXRjaGVkXG5sZXQgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXAgPSBjdHgubWF0Y2hlZCA8LSBiYWNrdXBcbmxldCBpbmNyX21hdGNoZWQgYyA9IGMubWF0Y2hlZCA8LSBjLm1hdGNoZWQgKyAxXG5cbmxldCBwYXJzZV9yZXMgKFQgZikgbG9jID9vbl9lcnJvciB4IGsgPVxuICB0cnkgT2sgKGYgeyBtYXRjaGVkID0gMCB9IGxvYyB4IGspXG4gIHdpdGggRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpIC0+IChcbiAgICBtYXRjaCBvbl9lcnJvciB3aXRoXG4gICAgfCBOb25lIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCIlcyBleHBlY3RlZFwiIGV4cGVjdGVkLCBbXSlcbiAgICB8IFNvbWUgZiAtPiBPayAoZiAoKSkpXG5cbmxldCBwYXJzZSAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIG1hdGNoIHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayB3aXRoXG4gIHwgT2sgciAtPiByXG4gIHwgRXJyb3IgKHIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIHJcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuMC50ICogJ2IgLT4gKCdhLCAnYykgdFxuXG4gIGxldCBjcmVhdGUgdCBmID0gVCAodCwgZilcbiAgbGV0IHBhcnNlX3JlcyAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2VfcmVzIHQgbG9jIHggZlxuICBsZXQgcGFyc2UgKFQgKHQsIGYpKSBsb2MgeCA9IHBhcnNlIHQgbG9jIHggZlxuZW5kXG5cbmxldCBfXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIHggayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgeClcblxubGV0IF9fJyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB7IGxvYzsgdHh0ID0geCB9KVxuXG5sZXQgZHJvcCA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIF8gayAtPlxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGspXG5cbmxldCBhc19fIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeCAoayB4KSBpblxuICAgICAgaylcblxubGV0IGNzdCB+dG9fc3RyaW5nID8oZXF1YWwgPSBQb2x5LmVxdWFsKSB2ID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGlmIGVxdWFsIHggdiB0aGVuIChcbiAgICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgICAgaylcbiAgICAgIGVsc2UgZmFpbCBsb2MgKHRvX3N0cmluZyB2KSlcblxubGV0IGludCB2ID0gY3N0IH50b19zdHJpbmc6SW50LnRvX3N0cmluZyB2XG5sZXQgY2hhciB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJUNcIikgdlxubGV0IHN0cmluZyB2ID0gY3N0IH50b19zdHJpbmc6KFByaW50Zi5zcHJpbnRmIFwiJVNcIikgdlxubGV0IGZsb2F0IHYgPSBjc3QgfnRvX3N0cmluZzpGbG9hdC50b19zdHJpbmcgdlxubGV0IGludDMyIHYgPSBjc3QgfnRvX3N0cmluZzpJbnQzMi50b19zdHJpbmcgdlxubGV0IGludDY0IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQ2NC50b19zdHJpbmcgdlxubGV0IG5hdGl2ZWludCB2ID0gY3N0IH50b19zdHJpbmc6TmF0aXZlaW50LnRvX3N0cmluZyB2XG5sZXQgYm9vbCB2ID0gY3N0IH50b19zdHJpbmc6Qm9vbC50b19zdHJpbmcgdlxuXG5sZXQgYm9vbCcgKFQgZnVuYykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFwidHJ1ZVwiIC0+IGZ1bmMgY3R4IGxvYyB0cnVlIGtcbiAgICAgIHwgXCJmYWxzZVwiIC0+IGZ1bmMgY3R4IGxvYyBmYWxzZSBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJCb29sXCIpXG5cbmxldCBmYWxzZV8gPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZhbHNlXCIpXG5cbmxldCB0cnVlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnVlXCIpXG5cbmxldCBuaWwgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIltdXCIpXG5cbmxldCAoIF46OiApIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IHgwIDo6IHgxIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCI6OlwiKVxuXG5sZXQgbm9uZSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBrXG4gICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb25lXCIpXG5cbmxldCBzb21lIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgU29tZSB4MCAtPlxuICAgICAgICAgIGN0eC5tYXRjaGVkIDwtIGN0eC5tYXRjaGVkICsgMTtcbiAgICAgICAgICBsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlNvbWVcIilcblxubGV0IHBhaXIgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKHgxLCB4MikgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBrKVxuXG5sZXQgKCAqKiApID0gcGFpclxuXG5sZXQgdHJpcGxlIChUIGYxKSAoVCBmMikgKFQgZjMpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyLCB4MykgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgaylcblxubGV0IGFsdCAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBiYWNrdXAgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICB0cnkgZjEgY3R4IGxvYyB4IGtcbiAgICAgIHdpdGggZTEgLT4gKFxuICAgICAgICBsZXQgbTEgPSBzYXZlX2NvbnRleHQgY3R4IGluXG4gICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggYmFja3VwO1xuICAgICAgICB0cnkgZjIgY3R4IGxvYyB4IGtcbiAgICAgICAgd2l0aCBlMiAtPlxuICAgICAgICAgIGxldCBtMiA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgICBpZiBtMSA+PSBtMiB0aGVuIChcbiAgICAgICAgICAgIHJlc3RvcmVfY29udGV4dCBjdHggbTE7XG4gICAgICAgICAgICByYWlzZSBlMSlcbiAgICAgICAgICBlbHNlIHJhaXNlIGUyKSlcblxubGV0ICggfHx8ICkgPSBhbHRcbmxldCBtYXAgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGYgaykpXG5sZXQgbWFwJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBsb2MgaykpXG5sZXQgbWFwX3Jlc3VsdCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIChmdW5jIGN0eCBsb2MgeCBrKSlcbmxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG5sZXQgbWFwMCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoayBmKSlcbmxldCBtYXAxIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSAtPiBrIChmIGEpKSlcblxubGV0IG1hcDIgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBhIGIpKSlcblxubGV0IG1hcDAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIChmIGxvYykpKVxuXG5sZXQgbWFwMScgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgbG9jIGEpKSlcblxubGV0IG1hcDInIChUIGZ1bmMpIH5mID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmdW4gYSBiIC0+IGsgKGYgbG9jIGEgYikpKVxuXG5sZXQgbWFwX3ZhbHVlIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyAoZiB4KSBrKVxubGV0IG1hcF92YWx1ZScgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIGxvYyB4KSBrKVxuXG5sZXQgYWx0X29wdGlvbiBzb21lIG5vbmUgPVxuICBhbHQgKG1hcDEgc29tZSB+ZjooZnVuIHggLT4gU29tZSB4KSkgKG1hcDAgbm9uZSB+ZjpOb25lKVxuXG5sZXQgbWFueSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgbCBrIC0+XG4gICAgICBsZXQgcmVjIGF1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBrIChMaXN0LnJldiBhY2N1KVxuICAgICAgICB8IHggOjogeHMgLT4gZiBjdHggbG9jIHggKGZ1biB4IC0+IGF1eCAoeCA6OiBhY2N1KSB4cylcbiAgICAgIGluXG4gICAgICBhdXggW10gbClcblxubGV0IGxvYyAoVCBmKSA9IFQgKGZ1biBjdHggX2xvYyAoeCA6IF8gTG9jLnQpIGsgLT4gZiBjdHggeC5sb2MgeC50eHQgaylcbmxldCBwYWNrMCB0ID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgKCkpXG5sZXQgcGFjazIgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgLT4gZiAoeCwgeSkpXG5sZXQgcGFjazMgdCA9IG1hcCB0IH5mOihmdW4gZiB4IHkgeiAtPiBmICh4LCB5LCB6KSlcblxuaW5jbHVkZSBBc3RfcGF0dGVybl9nZW5lcmF0ZWRcblxubGV0IGVjaGFyIHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IGVzdHJpbmcgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgZWZsb2F0IHQgPSBwZXhwX2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IHBjaGFyIHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfY2hhciB0KVxubGV0IHBzdHJpbmcgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9zdHJpbmcgdCBkcm9wIGRyb3ApXG5sZXQgcGZsb2F0IHQgPSBwcGF0X2NvbnN0YW50IChwY29uc3RfZmxvYXQgdCBkcm9wKVxubGV0IGludCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChpbnRfb2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50MzInIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50MzIub2Zfc3RyaW5nIHgpIGspXG5sZXQgaW50NjQnIChUIGYpID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoSW50NjQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBuYXRpdmVpbnQnIChUIGYpID1cbiAgVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgY3R4IGxvYyAoTmF0aXZlaW50Lm9mX3N0cmluZyB4KSBrKVxuXG5sZXQgY29uc3RfaW50IHQgPSBwY29uc3RfaW50ZWdlciAoaW50JyB0KSBub25lXG5sZXQgY29uc3RfaW50MzIgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQzMicgdCkgKHNvbWUgKGNoYXIgJ2wnKSlcbmxldCBjb25zdF9pbnQ2NCB0ID0gcGNvbnN0X2ludGVnZXIgKGludDY0JyB0KSAoc29tZSAoY2hhciAnTCcpKVxubGV0IGNvbnN0X25hdGl2ZWludCB0ID0gcGNvbnN0X2ludGVnZXIgKG5hdGl2ZWludCcgdCkgKHNvbWUgKGNoYXIgJ24nKSlcbmxldCBlaW50IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQgdClcbmxldCBlaW50MzIgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDMyIHQpXG5sZXQgZWludDY0IHQgPSBwZXhwX2NvbnN0YW50IChjb25zdF9pbnQ2NCB0KVxubGV0IGVuYXRpdmVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X25hdGl2ZWludCB0KVxubGV0IHBpbnQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IHBpbnQzMiB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBwaW50NjQgdCA9IHBwYXRfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgcG5hdGl2ZWludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgc2luZ2xlX2V4cHJfcGF5bG9hZCB0ID0gcHN0ciAocHN0cl9ldmFsIHQgbmlsIF46OiBuaWwpXG5sZXQgbm9fbGFiZWwgdCA9IGNzdCBBc3R0eXBlcy5Ob2xhYmVsIH50b19zdHJpbmc6KGZ1biBfIC0+IFwiTm9sYWJlbFwiKSAqKiB0XG5sZXQgZWJvb2wgdCA9IHBleHBfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5sZXQgcGJvb2wgdCA9IHBwYXRfY29uc3RydWN0IChsaWRlbnQgKGJvb2wnIHQpKSBub25lXG5cbmxldCBleHRlbnNpb24gKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgKChuYW1lIDogXyBMb2MudCksIHBheWxvYWQpIGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IG5hbWUubG9jIG5hbWUudHh0IGsgaW5cbiAgICAgIGxldCBrID0gZjIgY3R4IGxvYyBwYXlsb2FkIGsgaW5cbiAgICAgIGspXG5cbmxldCByZWMgcGFyc2VfZWxpc3QgKGUgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbikgYWNjID1cbiAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIGUucGV4cF9hdHRyaWJ1dGVzO1xuICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiW11cIjsgXyB9LCBOb25lKSAtPiBMaXN0LnJldiBhY2NcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgYXJnKSAtPiAoXG4gICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXJnLnBleHBfYXR0cmlidXRlcztcbiAgICAgIG1hdGNoIGFyZy5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX3R1cGxlIFsgaGQ7IHRsIF0gLT4gcGFyc2VfZWxpc3QgdGwgKGhkIDo6IGFjYylcbiAgICAgIHwgXyAtPiBmYWlsIGFyZy5wZXhwX2xvYyBcImxpc3RcIilcbiAgfCBfIC0+IGZhaWwgZS5wZXhwX2xvYyBcImxpc3RcIlxuXG5sZXQgZWxpc3QgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCBsID0gcGFyc2VfZWxpc3QgZSBbXSBpblxuICAgICAgaW5jcl9tYXRjaGVkIGN0eDtcbiAgICAgIGsgKExpc3QubWFwIGwgfmY6KGZ1biB4IC0+IGYgY3R4IHguUGFyc2V0cmVlLnBleHBfbG9jIHggKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBlc2VxdWVuY2UgKFQgZikgPVxuICBUXG4gICAgKGZ1biBjdHggX2xvYyBlIGsgLT5cbiAgICAgIGxldCByZWMgcGFyc2Vfc2VxIGV4cHIgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGV4cHIsIG5leHQpIC0+IHBhcnNlX3NlcSBuZXh0IChleHByIDo6IGFjYylcbiAgICAgICAgfCBfIC0+IGV4cHIgOjogYWNjXG4gICAgICBpblxuICAgICAga1xuICAgICAgICAoTGlzdC5yZXZfbWFwIChwYXJzZV9zZXEgZSBbXSkgfmY6KGZ1biBleHByIC0+XG4gICAgICAgICAgICAgZiBjdHggZXhwci5wZXhwX2xvYyBleHByIChmdW4geCAtPiB4KSkpKVxuXG5sZXQgb2ZfZnVuYyBmID0gVCBmXG5sZXQgdG9fZnVuYyAoVCBmKSA9IGZcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcG9seV9lcXVhbCBhIGIgPVxuICBsZXQgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUIDogXyAtPiB0XG4gIGVuZCBpblxuICBTdGRwcHguUG9seS5lcXVhbCAoUG9seS5UIGEpIChQb2x5LlQgYilcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gdFxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBUeXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIHRcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gdFxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENsYXNzX2luZm9zIDogXyBjbGFzc19pbmZvcyB0XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIHRcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gdFxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gdFxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gdFxuICAgIHwgSW5jbHVkZV9pbmZvcyA6IF8gaW5jbHVkZV9pbmZvcyB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IFZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIHRcbiAgICB8IE1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgdFxuICAgIHwgUHN0cl9ldmFsIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHN0cl9leHRlbnNpb24gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc2lnX2V4dGVuc2lvbiA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFJ0YWcgOiByb3dfZmllbGQgdFxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgOiBvYmplY3RfZmllbGQgdFxuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbiA9IExhYmVsX2RlY2xhcmF0aW9uXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2RlY2xhcmF0aW9uID0gVHlwZV9kZWNsYXJhdGlvblxuICBsZXQgdHlwZV9leHRlbnNpb24gPSBUeXBlX2V4dGVuc2lvblxuICBsZXQgdHlwZV9leGNlcHRpb24gPSBUeXBlX2V4Y2VwdGlvblxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgdmFsdWVfZGVzY3JpcHRpb24gPSBWYWx1ZV9kZXNjcmlwdGlvblxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjbGFzc19pbmZvcyA9IENsYXNzX2luZm9zXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uID0gTW9kdWxlX2RlY2xhcmF0aW9uXG4gIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gIGxldCBvcGVuX2Rlc2NyaXB0aW9uID0gT3Blbl9kZXNjcmlwdGlvblxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IEluY2x1ZGVfaW5mb3NcbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IHZhbHVlX2JpbmRpbmcgPSBWYWx1ZV9iaW5kaW5nXG4gIGxldCBtb2R1bGVfYmluZGluZyA9IE1vZHVsZV9iaW5kaW5nXG4gIGxldCBwc3RyX2V2YWwgPSBQc3RyX2V2YWxcbiAgbGV0IHBzdHJfZXh0ZW5zaW9uID0gUHN0cl9leHRlbnNpb25cbiAgbGV0IHBzaWdfZXh0ZW5zaW9uID0gUHNpZ19leHRlbnNpb25cbiAgbGV0IHJ0YWcgPSBSdGFnXG4gIGxldCBvYmplY3RfdHlwZV9maWVsZCA9IE9iamVjdF90eXBlX2ZpZWxkXG5cbiAgbGV0IGdldF9wc3RyX2V2YWwgc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V2YWwgKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc3RyX2V2YWxcIlxuXG4gIGxldCBnZXRfcHN0cl9leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzdHJfZGVzYyB3aXRoXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X3BzaWdfZXh0ZW5zaW9uIHN0ID1cbiAgICBtYXRjaCBzdC5wc2lnX2Rlc2Mgd2l0aFxuICAgIHwgUHNpZ19leHRlbnNpb24gKGUsIGwpIC0+IChlLCBsKVxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIkF0dHJpYnV0ZS5Db250ZXh0LmdldF9wc2lnX2V4dGVuc2lvblwiXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHgucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHgucGNkX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geC5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB4LnB0eWV4dF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiB4LnB0eWV4bl9hdHRyaWJ1dGVzXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geC5wZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFBhdHRlcm4gLT4geC5wcGF0X2F0dHJpYnV0ZXNcbiAgICB8IENvcmVfdHlwZSAtPiB4LnB0eXBfYXR0cmlidXRlc1xuICAgIHwgRXhwcmVzc2lvbiAtPiB4LnBleHBfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geC5wdmFsX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGUgLT4geC5wY3R5X2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geC5wY3RmX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2luZm9zIC0+IHgucGNpX2F0dHJpYnV0ZXNcbiAgICB8IENsYXNzX2V4cHIgLT4geC5wY2xfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZmllbGQgLT4geC5wY2ZfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3R5cGUgLT4geC5wbXR5X2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9kZWNsYXJhdGlvbiAtPiB4LnBtZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB4LnBtdGRfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB4LnBtc19hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB4LnBvcGVuX2F0dHJpYnV0ZXNcbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geC5waW5jbF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfZXhwciAtPiB4LnBtb2RfYXR0cmlidXRlc1xuICAgIHwgVmFsdWVfYmluZGluZyAtPiB4LnB2Yl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB4LnBtYl9hdHRyaWJ1dGVzXG4gICAgfCBQc3RyX2V2YWwgLT4gc25kIChnZXRfcHN0cl9ldmFsIHgpXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc3RyX2V4dGVuc2lvbiB4KVxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gc25kIChnZXRfcHNpZ19leHRlbnNpb24geClcbiAgICB8IFJ0YWcgLT4geC5wcmZfYXR0cmlidXRlc1xuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geC5wb2ZfYXR0cmlidXRlc1xuXG4gIGxldCBzZXRfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBUeXBlX2V4dGVuc2lvbiAtPiB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4geyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2luZm9zIC0+IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZXhwciAtPiB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4geyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiB7IHggd2l0aCBwbXNfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE9wZW5fZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IEluY2x1ZGVfaW5mb3MgLT4geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiB7IHggd2l0aCBwbWJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFBzdHJfZXZhbCAtPlxuICAgICAgICB7IHggd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKGdldF9wc3RyX2V2YWwgeCB8PiBmc3QsIGF0dHJzKSB9XG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGdldF9wc3RyX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPlxuICAgICAgICB7XG4gICAgICAgICAgeCB3aXRoXG4gICAgICAgICAgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGdldF9wc2lnX2V4dGVuc2lvbiB4IHw+IGZzdCwgYXR0cnMpO1xuICAgICAgICB9XG4gICAgfCBSdGFnIC0+IHsgeCB3aXRoIHByZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT2JqZWN0X3R5cGVfZmllbGQgLT4geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4gXCJsYWJlbCBkZWNsYXJhdGlvblwiXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IFwidHlwZSBleHRlbnNpb25cIlxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4gXCJ0eXBlIGV4Y2VwdGlvblwiXG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gXCJleHRlbnNpb24gY29uc3RydWN0b3JcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIC0+IFwidmFsdWVcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ2xhc3NfaW5mb3MgLT4gXCJjbGFzcyBkZWNsYXJhdGlvblwiXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IFwibW9kdWxlIHR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBcIm1vZHVsZSBzdWJzdGl0dXRpb25cIlxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiBcIm9wZW5cIlxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiBcImluY2x1ZGVcIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IFwidmFsdWUgYmluZGluZ1wiXG4gICAgfCBNb2R1bGVfYmluZGluZyAtPiBcIm1vZHVsZSBiaW5kaW5nXCJcbiAgICB8IFBzdHJfZXZhbCAtPiBcInRvcGxldmVsIGV4cHJlc3Npb25cIlxuICAgIHwgUHN0cl9leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBleHRlbnNpb25cIlxuICAgIHwgUHNpZ19leHRlbnNpb24gLT4gXCJ0b3BsZXZlbCBzaWduYXR1cmUgZXh0ZW5zaW9uXCJcbiAgICB8IFJ0YWcgLT4gXCJwb2x5bW9ycGhpYyB2YXJpYW50IHRhZ1wiXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiBcIm9iamVjdCB0eXBlIGZpZWxkXCJcblxuICAoKlxuICBsZXQgcGF0dGVybiA6IHR5cGUgYSBiIGMgZC4gYSB0XG4gICAgLT4gKGF0dHJpYnV0ZXMsIGIsIGMpIEFzdF9wYXR0ZXJuLnRcbiAgICAtPiAoYSwgYywgZCkgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBiLCBkKSBBc3RfcGF0dGVybi50ID0gZnVuY3Rpb25cbiAgICB8IExhYmVsX2RlY2xhcmF0aW9uICAgICAgIC0+IEFzdF9wYXR0ZXJuLnBsZF9hdHRyaWJ1dGVzXG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBBc3RfcGF0dGVybi5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5cGVfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9leHRlbnNpb24gICAgICAgICAgLT4gQXN0X3BhdHRlcm4ucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAgIC0+IEFzdF9wYXR0ZXJuLnBleHRfYXR0cmlidXRlc1xuKilcblxuICBsZXQgZXF1YWwgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBwb2x5X2VxdWFsXG5lbmRcblxubW9kdWxlIEZsb2F0aW5nX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcblxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9pZl9pc19mbG9hdGluZ19ub2RlIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGUgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfYXR0cmlidXRlIGE7IF8gfSAtPiBTb21lIGFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgdCB4ID1cbiAgICBtYXRjaCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgdCB4IHdpdGhcbiAgICB8IFNvbWUgYSAtPiBhXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQuZ2V0X2F0dHJpYnV0ZVwiXG5cbiAgbGV0IHJlcGxhY2VfYnlfZHVtbXkgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGEgPVxuICAgIGxldCBkdW1teV9leHQgPSAoeyB0eHQgPSBcIlwiOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sIFBTdHIgW10pIGluXG4gICAgZnVuIHQgeCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IHsgeCB3aXRoIHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChkdW1teV9leHQsIFtdKSB9XG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IHsgeCB3aXRoIHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBkdW1teV9leHQgfVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IHsgeCB3aXRoIHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG50eXBlIHBhY2tlZF9jb250ZXh0ID1cbiAgfCBPbl9pdGVtIDogXyBDb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcbiAgfCBGbG9hdGluZyA6IF8gRmxvYXRpbmdfY29udGV4dC50IC0+IHBhY2tlZF9jb250ZXh0XG5cbnR5cGUgXyBwYXlsb2FkX3BhcnNlciA9XG4gIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgKHBheWxvYWQsICdhLCAnYikgQXN0X3BhdHRlcm4udFxuICAgICAgKiAoYXR0cl9sb2M6TG9jYXRpb24udCAtPiBuYW1lX2xvYzpMb2NhdGlvbi50IC0+ICdhKVxuICAgICAgLT4gJ2IgcGF5bG9hZF9wYXJzZXJcblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gIHBheWxvYWQgOiAnYiBwYXlsb2FkX3BhcnNlcjtcbn1cblxudHlwZSBwYWNrZWQgPSBUIDogKF8sIF8pIHQgLT4gcGFja2VkXG5cbmxldCBuYW1lIHQgPSBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWVcbmxldCBjb250ZXh0IHQgPSB0LmNvbnRleHRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImF0dHJpYnV0ZVwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1bmN0aW9uXG4gICAgfCBPbl9pdGVtIHQgLT4gU29tZSAoQ29udGV4dC5kZXNjIHQpXG4gICAgfCBGbG9hdGluZyB0IC0+IFNvbWUgKEZsb2F0aW5nX2NvbnRleHQuZGVzYyB0IF4gXCIgKGZsb2F0aW5nKVwiKSlcblxubGV0IGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAge1xuICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgIGNvbnRleHQ7XG4gICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgfVxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gaylcblxubGV0IGRlY2xhcmVfd2l0aF9uYW1lX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jIC0+XG4gICAgICBrIH5uYW1lX2xvYylcblxubGV0IGRlY2xhcmVfd2l0aF9hdHRyX2xvYyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmF0dHJfbG9jIH5uYW1lX2xvYzpfIC0+XG4gICAgICBrIH5hdHRyX2xvYylcblxudHlwZSAnYSBmbGFnID0gKCdhLCB1bml0KSB0XG5cbmxldCBkZWNsYXJlX2ZsYWcgbmFtZSBjb250ZXh0ID1cbiAgbGV0IHBheWxvYWRfcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgaW5cbiAgbGV0IGNvbnRpbnVhdGlvbiB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyA9ICgpIGluXG4gIGRlY2xhcmVfd2l0aF9hbGxfYXJncyBuYW1lIGNvbnRleHQgcGF5bG9hZF9wYXR0ZXJuIGNvbnRpbnVhdGlvblxuXG5tb2R1bGUgQXR0cmlidXRlX3RhYmxlID0gU3RkbGliLkhhc2h0YmwuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsb2NcblxuICBsZXQgbm9ybWFsaXplIHQgPSB7IHQgd2l0aCBsb2MgPSB7IHQubG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IH1cbiAgbGV0IGhhc2ggdCA9IEhhc2h0YmwuaGFzaCAobm9ybWFsaXplIHQpXG4gIGxldCBlcXVhbCB4IHkgPSBQb2x5LmVxdWFsIChub3JtYWxpemUgeCkgKG5vcm1hbGl6ZSB5KVxuZW5kKVxuXG5sZXQgbm90X3NlZW4gPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIDEyOFxubGV0IG1hcmtfYXNfc2VlbiB7IGF0dHJfbmFtZTsgXyB9ID0gQXR0cmlidXRlX3RhYmxlLnJlbW92ZSBub3Rfc2VlbiBhdHRyX25hbWVcbmxldCBtYXJrX2FzX2hhbmRsZWRfbWFudWFsbHkgPSBtYXJrX2FzX3NlZW5cblxubGV0IGV4cGxpY2l0bHlfZHJvcCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgPSBtYXJrX2FzX3NlZW5cbiAgZW5kXG5cbmxldCBnZXRfaW50ZXJuYWwgPVxuICBsZXQgcmVjIGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgbG9uZ2VzdF9tYXRjaCA9XG4gICAgbWF0Y2ggYXR0cmlidXRlcyB3aXRoXG4gICAgfCBbXSAtPiBPayBsb25nZXN0X21hdGNoXG4gICAgfCAoeyBhdHRyX25hbWUgPSBuYW1lOyBfIH0gYXMgYXR0cikgOjogcmVzdCAtPlxuICAgICAgICBpZiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZS50eHQgdGhlblxuICAgICAgICAgIG1hdGNoIGxvbmdlc3RfbWF0Y2ggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgfCBTb21lIHsgYXR0cl9uYW1lID0gbmFtZSc7IF8gfSAtPlxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBuYW1lLnR4dCBpblxuICAgICAgICAgICAgICBsZXQgbGVuJyA9IFN0cmluZy5sZW5ndGggbmFtZScudHh0IGluXG4gICAgICAgICAgICAgIGlmIGxlbiA+IGxlbicgdGhlbiBmaW5kX2Jlc3RfbWF0Y2ggdCByZXN0IChTb21lIGF0dHIpXG4gICAgICAgICAgICAgIGVsc2UgaWYgbGVuIDwgbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiRHVwbGljYXRlZCBhdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgbG9uZ2VzdF9tYXRjaFxuICBpblxuICBmdW4gdCBhdHRyaWJ1dGVzIC0+IGZpbmRfYmVzdF9tYXRjaCB0IGF0dHJpYnV0ZXMgTm9uZVxuXG5sZXQgY29udmVydCA/KGRvX21hcmtfYXNfc2VlbiA9IHRydWUpIHBhdHRlcm4gYXR0ciA9XG4gIGlmIGRvX21hcmtfYXNfc2VlbiB0aGVuIG1hcmtfYXNfc2VlbiBhdHRyO1xuICBsZXQgKFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKSkgPSBwYXR0ZXJuIGluXG4gIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuXG4gICAgKENvbW1vbi5sb2Nfb2ZfcGF5bG9hZCBhdHRyKVxuICAgIGF0dHIuYXR0cl9wYXlsb2FkXG4gICAgKGsgfmF0dHJfbG9jOmF0dHIuYXR0cl9sb2Mgfm5hbWVfbG9jOmF0dHIuYXR0cl9uYW1lLmxvYylcblxubGV0IGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggaW5cbiAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+IE9rIE5vbmVcbiAgfCBTb21lIGF0dHIgLT5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgP2RvX21hcmtfYXNfc2VlbiA+PnwgZnVuIHZhbHVlIC0+IFNvbWUgdmFsdWVcblxubGV0IGdldCB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBnZXRfcmVzIHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgbWF0Y2ggZ2V0X3JlcyA/bWFya19hc19zZWVuIHQgeCB3aXRoXG4gIHwgT2sgKFNvbWUgKCkpIC0+IE9rIHRydWVcbiAgfCBPayBOb25lIC0+IE9rIGZhbHNlXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcblxubGV0IGhhc19mbGFnIHQgP21hcmtfYXNfc2VlbiB4ID1cbiAgaGFzX2ZsYWdfcmVzIHQgP21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBjb25zdW1lX3JlcyB0IHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgbGV0IGF0dHJzID0gTGlzdC5maWx0ZXIgYXR0cnMgfmY6KGZ1biBhdHRyJyAtPiBub3QgKGF0dHIgPT0gYXR0cicpKSBpblxuICAgICAgbGV0IHggPSBDb250ZXh0LnNldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGF0dHJzIGluXG4gICAgICBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSAoeCwgdmFsdWUpXG5cbmxldCBjb25zdW1lIHQgeCA9XG4gIGNvbnN1bWVfcmVzIHQgeFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgcmVtb3ZlX3NlZW5fcmVzICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgeCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE9rIGFjY1xuICAgIHwgVCB0IDo6IHJlc3QgLT5cbiAgICAgICAgaWYgQ29udGV4dC5lcXVhbCB0LmNvbnRleHQgY29udGV4dCB0aGVuXG4gICAgICAgICAgZ2V0X2ludGVybmFsIHQgYXR0cnMgPj49IGZ1biByZXMgLT5cbiAgICAgICAgICBtYXRjaCByZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgfCBTb21lIGF0dHIgLT5cbiAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhdHRyLmF0dHJfbmFtZSBpblxuICAgICAgICAgICAgICBpZiBBdHRyaWJ1dGVfdGFibGUubWVtIG5vdF9zZWVuIG5hbWUgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgbG9vcCAoYXR0ciA6OiBhY2MpIHJlc3RcbiAgICAgICAgZWxzZSBsb29wIGFjYyByZXN0XG4gIGluXG4gIGxvb3AgW10gcGFja2VkcyA+PnwgZnVuIG1hdGNoZWQgLT5cbiAgbGV0IGF0dHJzID1cbiAgICBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoTGlzdC5tZW1xIH5zZXQ6bWF0Y2hlZCBhdHRyJykpXG4gIGluXG4gIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzXG5cbmxldCByZW1vdmVfc2VlbiAodHlwZSBhKSAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSkgPVxuICByZW1vdmVfc2Vlbl9yZXMgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBwYXR0ZXJuX3JlcyB0IHAgPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGYgPSBBc3RfcGF0dGVybi50b19mdW5jIHAgaW5cbiAgQXN0X3BhdHRlcm4ub2ZfZnVuYyAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBjb25zdW1lX3JlcyB0IHggPj58IGZ1biByZXMgLT5cbiAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZiBjdHggbG9jIHggKGsgTm9uZSlcbiAgICAgIHwgU29tZSAoeCwgdikgLT4gZiBjdHggbG9jIHggKGsgKFNvbWUgdikpKVxuXG5sZXQgcGF0dGVybiB0IHAgPVxuICBwYXR0ZXJuX3JlcyB0IHAgfD4gQXN0X3BhdHRlcm4udG9fZnVuY1xuICB8PiAoZnVuIGYgYSBiIGMgZCAtPlxuICAgICAgIGYgYSBiIGMgZFxuICAgICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpKVxuICB8PiBBc3RfcGF0dGVybi5vZl9mdW5jXG5cbm1vZHVsZSBGbG9hdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgQ29udGV4dCA9IEZsb2F0aW5nX2NvbnRleHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnYSBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xuICB9XG5cbiAgbGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBBdHRyaWJ1dGUgcmVnaXN0cmFyIChGbG9hdGluZyBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZnVuIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfIC0+IGspO1xuICAgIH1cblxuICBsZXQgY29udmVydF9yZXMgdHMgeCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgbWF0Y2ggdHMgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgeyBjb250ZXh0OyBfIH0gOjogXyAtPiAoXG4gICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIHRzIH5mOihmdW4gdCAtPiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0KSk7XG4gICAgICAgIGxldCBhdHRyID0gQ29udGV4dC5nZXRfYXR0cmlidXRlIGNvbnRleHQgeCBpblxuICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dClcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICAgICAgfCBbIHQgXSAtPiBjb252ZXJ0IHQucGF5bG9hZCBhdHRyID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICBcIk11bHRpcGxlIG1hdGNoIGZvciBmbG9hdGluZyBhdHRyaWJ1dGVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgICAgICBbXSApKVxuXG4gIGxldCBjb252ZXJ0IHRzIHggPVxuICAgIGNvbnZlcnRfcmVzIHRzIHhcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIGlmXG4gICAgKG5vdFxuICAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBBdHRyaWJ1dGUgbmFtZS50eHRcbiAgICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpKVxuICAgICYmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZVxuICB0aGVuXG4gICAgbGV0IGFsbG93bGlzdCA9IE5hbWUuQWxsb3dsaXN0ZWQuZ2V0X2F0dHJpYnV0ZV9saXN0ICgpIGluXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgY29udGV4dCB+YWxsb3dsaXN0XG4gICAgICAgIFwiQXR0cmlidXRlIGAlcycgd2FzIG5vdCB1c2VkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBfID1cbiAgICAgIFtcbiAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgXCJhdHRyaWJ1dGUgbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5BdHRyaWJ1dGUgbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICBdXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLlxuICAgICAgICBhIENvbnRleHQudCAtPiBhIC0+IGEgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBhdHRyc1xuICAgICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICAgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHI7XG4gICAgICAgICAgICAgICAgICBjb2xsZWN0ZWRfZXJyb3JzKVxuICAgICAgICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChDb250ZXh0LnNldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBbXSwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgY2hlY2tfZmxvYXRpbmcgOiB0eXBlIGEuXG4gICAgICAgIGEgRmxvYXRpbmcuQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgY29udGV4dCBub2RlXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChub2RlLCBbXSlcbiAgICAgICAgfCBTb21lICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgbGV0IGNvbGxlY3RlZF9lcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZCBbXVxuICAgICAgICAgICAgICBAIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgIChGbG9hdGluZy5Db250ZXh0LnJlcGxhY2VfYnlfZHVtbXkgY29udGV4dCBub2RlLCBjb2xsZWN0ZWRfZXJyb3JzKVxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTGFiZWxfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVHlwZV9leHRlbnNpb24geCBpblxuICAgICAgc3VwZXIjdHlwZV9leHRlbnNpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4Y2VwdGlvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4Y2VwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHRlbnNpb25fY29uc3RydWN0b3IgeCBpblxuICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBQYXR0ZXJuIHggaW5cbiAgICAgIHN1cGVyI3BhdHRlcm4gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ29yZV90eXBlIHggaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgRXhwcmVzc2lvbiB4IGluXG4gICAgICBzdXBlciNleHByZXNzaW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgVmFsdWVfZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZXhwciB4IGluXG4gICAgICBzdXBlciNjbGFzc19leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBvcGVuX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBPcGVuX2Rlc2NyaXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI29wZW5fZGVzY3JpcHRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHggaW5cbiAgICAgIHN1cGVyI2luY2x1ZGVfaW5mb3MgZiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9leHByIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9leHByIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI3ZhbHVlX2JpbmRpbmcgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfYmluZGluZyB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX2ZpZWxkIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMxID0gc2VsZiNjaGVja19ub2RlIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgbGV0IHgsIGVycm9yczIgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIENsYXNzX3R5cGVfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfdHlwZV9maWVsZCB4IChhY2MgQCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGggUnRhZyBfIC0+IHNlbGYjY2hlY2tfbm9kZSBSdGFnIHggfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNyb3dfZmllbGQgeCAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGZpZWxkcywgY2xvc2VkX2ZsYWcpIC0+XG4gICAgICAgICAgICBsZXQgZmllbGRzLCBlcnJvcnMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcCBmaWVsZHMgfmY6KHNlbGYjY2hlY2tfbm9kZSBPYmplY3RfdHlwZV9maWVsZClcbiAgICAgICAgICAgICAgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZyksIExpc3QuY29uY2F0IGVycm9ycylcbiAgICAgICAgfCBfIC0+ICh4LCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFN0cnVjdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc3RyX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc3RyX2V2YWwgaXRlbVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtIGFjYyA9XG4gICAgICBsZXQgaXRlbSwgZXJyb3JzID0gc2VsZiNjaGVja19mbG9hdGluZyBTaWduYXR1cmVfaXRlbSBpdGVtIGluXG4gICAgICBsZXQgaXRlbSwgZXJyb3JzMiA9XG4gICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiBfIC0+IHNlbGYjY2hlY2tfbm9kZSBQc2lnX2V4dGVuc2lvbiBpdGVtXG4gICAgICAgIHwgXyAtPiAoaXRlbSwgW10pXG4gICAgICBpblxuICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gaXRlbSAoYWNjIEAgZXJyb3JzIEAgZXJyb3JzMilcbiAgZW5kXG5cbmxldCBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIGNvbnRleHQgbmFtZSA9XG4gIG1hdGNoIGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmFpc2VfaWZfbm9uX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19ub2RlIDogdHlwZSBhLiBhIENvbnRleHQudCAtPiBhIC0+IGEgPVxuICAgICAgZnVuIGNvbnRleHQgbm9kZSAtPlxuICAgICAgICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIGNvbnRleHQgbm9kZSBpblxuICAgICAgICBtYXRjaCBhdHRycyB3aXRoXG4gICAgICAgIHwgW10gLT4gbm9kZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIExpc3QuaXRlciBhdHRyc1xuICAgICAgICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgICAgICAgICAgICBjaGVja19hdHRyaWJ1dGUgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWU7XG4gICAgICAgICAgICAgICAgKCogSWYgd2UgYWxsb3cgdGhlIGF0dHJpYnV0ZSB0byBwYXNzIHRocm91Z2gsIG1hcmsgaXQgYXMgc2VlbiAqKVxuICAgICAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyKTtcbiAgICAgICAgICAgIENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2xhYmVsX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdHlwZV9leHRlbnNpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2V4dGVuc2lvbiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4Y2VwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXhjZXB0aW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3BhdHRlcm4geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNleHByZXNzaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdmFsdWVfZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgQ2xhc3NfaW5mb3MgeClcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZSB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2Rlc2NyaXB0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBvcGVuX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjb3Blbl9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggPVxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIChzZWxmI2NoZWNrX25vZGUgSW5jbHVkZV9pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9leHByIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9iaW5kaW5nIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc19maWVsZCB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfdHlwZV9maWVsZCB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcm93X2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gaXRlbSA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzaWduYXR1cmVfaXRlbSBpdGVtIFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcbiAgZW5kXG5cbmxldCByZXNldF9jaGVja3MgKCkgPSBBdHRyaWJ1dGVfdGFibGUuY2xlYXIgbm90X3NlZW5cblxubGV0IGNvbGxlY3QgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpXG4gICAgICAgID1cbiAgICAgIGxldCBsb2MgPSBDb21tb24ubG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUuYWRkIG5vdF9zZWVuIG5hbWUgbG9jXG4gIGVuZFxuXG5sZXQgY29sbGVjdF91bnNlZW5fZXJyb3JzICgpID1cbiAgbGV0IGZhaWwgbmFtZSBsb2MgYWNjID1cbiAgICBsZXQgdHh0ID0gbmFtZS50eHQgaW5cbiAgICBpZiBub3QgKE5hbWUuaWdub3JlX2NoZWNrcyB0eHQpIHRoZW5cbiAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZSBgJXMnIHdhcyBzaWxlbnRseSBkcm9wcGVkXCIgdHh0XG4gICAgICA6OiBhY2NcbiAgICBlbHNlIGFjY1xuICBpblxuICBBdHRyaWJ1dGVfdGFibGUuZm9sZCBmYWlsIG5vdF9zZWVuIFtdXG5cbmxldCBjaGVja19hbGxfc2VlbiAoKSA9XG4gIG1hdGNoIGNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gPVxuICAgICAgc3VwZXIjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgQXR0cmlidXRlX3RhYmxlLnJlbW92ZSB0YWJsZSBuYW1lXG4gIGVuZFxuXG5sZXQgY29weV9vZl9ub3Rfc2VlbiAoKSA9XG4gIGxldCBjb3B5ID0gQXR0cmlidXRlX3RhYmxlLmNyZWF0ZSAoQXR0cmlidXRlX3RhYmxlLmxlbmd0aCBub3Rfc2VlbikgaW5cbiAgQXR0cmlidXRlX3RhYmxlLml0ZXIgKEF0dHJpYnV0ZV90YWJsZS5hZGQgY29weSkgbm90X3NlZW47XG4gIGNvcHlcblxubGV0IGRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSBzdCA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3N0cnVjdHVyZSBzdDtcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cblxubGV0IGRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSBzZyA9XG4gIGxldCB0YWJsZSA9IGNvcHlfb2Zfbm90X3NlZW4gKCkgaW5cbiAgKHJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4gdGFibGUpI3NpZ25hdHVyZSBzZztcbiAgQXR0cmlidXRlX3RhYmxlLmZvbGRcbiAgICAoZnVuIG5hbWUgbG9jIGFjYyAtPiB7IHR4dCA9IG5hbWUudHh0OyBsb2MgfSA6OiBhY2MpXG4gICAgdGFibGUgW11cbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIGZpbGVfcGF0aCA6IHN0cmluZztcbiAgbWFpbl9tb2R1bGVfbmFtZSA6IHN0cmluZztcbiAgc3VibW9kdWxlX3BhdGggOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIGVuY2xvc2luZ19tb2R1bGUgOiBzdHJpbmc7XG4gIGVuY2xvc2luZ192YWx1ZSA6IHN0cmluZyBvcHRpb247XG4gIHZhbHVlIDogc3RyaW5nIGxvYyBvcHRpb247XG4gIGluX2V4cHIgOiBib29sO1xufVxuXG5sZXQgdG9wX2xldmVsIH5maWxlX3BhdGggPVxuICBsZXQgbWFpbl9tb2R1bGVfbmFtZSA9XG4gICAgZmlsZV9wYXRoIHw+IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSB8PiBTdGRsaWIuRmlsZW5hbWUucmVtb3ZlX2V4dGVuc2lvblxuICAgIHw+IFN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG4gIGluXG4gIHtcbiAgICBmaWxlX3BhdGg7XG4gICAgbWFpbl9tb2R1bGVfbmFtZTtcbiAgICBzdWJtb2R1bGVfcGF0aCA9IFtdO1xuICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtYWluX21vZHVsZV9uYW1lO1xuICAgIGVuY2xvc2luZ192YWx1ZSA9IE5vbmU7XG4gICAgdmFsdWUgPSBOb25lO1xuICAgIGluX2V4cHIgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZmlsZV9wYXRoIHQgPSB0LmZpbGVfcGF0aFxubGV0IG1haW5fbW9kdWxlX25hbWUgdCA9IHQubWFpbl9tb2R1bGVfbmFtZVxubGV0IGVuY2xvc2luZ19tb2R1bGUgdCA9IHQuZW5jbG9zaW5nX21vZHVsZVxubGV0IGVuY2xvc2luZ192YWx1ZSB0ID0gdC5lbmNsb3NpbmdfdmFsdWVcblxubGV0IHN1Ym1vZHVsZV9wYXRoIHQgPVxuICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG5cbmxldCB2YWx1ZSB0ID0gT3B0aW9uLm1hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQudmFsdWVcblxubGV0IGZ1bGx5X3F1YWxpZmllZF9wYXRoIHQgPVxuICBsZXQgdmFsdWUgPSB2YWx1ZSB0IGluXG4gIGxldCBzdWJtb2R1bGVfcGF0aCA9XG4gICAgTGlzdC5yZXZfbWFwIH5mOihmdW4gbG9jYXRlZCAtPiBTb21lIGxvY2F0ZWQudHh0KSB0LnN1Ym1vZHVsZV9wYXRoXG4gIGluXG4gIGxldCBuYW1lcyA9IChTb21lIHQubWFpbl9tb2R1bGVfbmFtZSA6OiBzdWJtb2R1bGVfcGF0aCkgQCBbIHZhbHVlIF0gaW5cbiAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIEBAIExpc3QuZmlsdGVyX29wdCBuYW1lc1xuXG5sZXQgZW50ZXJfZXhwciB0ID0geyB0IHdpdGggaW5fZXhwciA9IHRydWUgfVxuXG5sZXQgZW50ZXJfbW9kdWxlIH5sb2MgbW9kdWxlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHN1Ym1vZHVsZV9wYXRoID0geyB0eHQgPSBtb2R1bGVfbmFtZTsgbG9jIH0gOjogdC5zdWJtb2R1bGVfcGF0aDtcbiAgICAgIGVuY2xvc2luZ19tb2R1bGUgPSBtb2R1bGVfbmFtZTtcbiAgICB9XG5cbmxldCBlbnRlcl92YWx1ZSB+bG9jIHZhbHVlX25hbWUgdCA9XG4gIGlmIHQuaW5fZXhwciB0aGVuIHsgdCB3aXRoIGVuY2xvc2luZ192YWx1ZSA9IFNvbWUgdmFsdWVfbmFtZSB9XG4gIGVsc2VcbiAgICB7XG4gICAgICB0IHdpdGhcbiAgICAgIHZhbHVlID0gU29tZSB7IHR4dCA9IHZhbHVlX25hbWU7IGxvYyB9O1xuICAgICAgZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lO1xuICAgIH1cblxubGV0IHRvX3N0cmluZ19wYXRoIHQgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgKHQuZmlsZV9wYXRoIDo6IHN1Ym1vZHVsZV9wYXRoIHQpXG5sZXQgd2l0aF9zdHJpbmdfcGF0aCBmIH5sb2MgfnBhdGggPSBmIH5sb2MgfnBhdGg6KHRvX3N0cmluZ19wYXRoIHBhdGgpOztcblxubGV0IG1vZHVsZSBNID0gc3RydWN0XG4gIGxldCBhID0gXCJsb2xcIlxuZW5kIGluXG5NLmFcbiIsIm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgdG9vbF9uYW1lIDogc3RyaW5nOyBjb2RlX3BhdGggOiBDb2RlX3BhdGgudDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgbGV0IHRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWUgPVxuICAgIGxldCBjb2RlX3BhdGggPSBDb2RlX3BhdGgudG9wX2xldmVsIH5maWxlX3BhdGggaW5cbiAgICB7IHRvb2xfbmFtZTsgY29kZV9wYXRoOyBpbnB1dF9uYW1lIH1cblxuICBsZXQgY29kZV9wYXRoIHQgPSB0LmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGxldCB0b29sX25hbWUgdCA9IHQudG9vbF9uYW1lXG4gIGxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfZXhwciB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX21vZHVsZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX21vZHVsZSB+bG9jIG5hbWUgdC5jb2RlX3BhdGggfVxuXG4gIGxldCBlbnRlcl92YWx1ZSB+bG9jIG5hbWUgdCA9XG4gICAgeyB0IHdpdGggY29kZV9wYXRoID0gQ29kZV9wYXRoLmVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGV4dGVuc2lvbl9wb2ludF9sb2MgOiBMb2NhdGlvbi50OyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYyB+YmFzZSAoKSA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYzsgYmFzZSB9XG4gIGxldCBleHRlbnNpb25fcG9pbnRfbG9jIHQgPSB0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcblxubW9kdWxlIERlcml2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBkZXJpdmVkX2l0ZW1fbG9jIDogTG9jYXRpb24udDsgaW5saW5lIDogYm9vbDsgYmFzZSA6IEJhc2UudCB9XG5cbiAgbGV0IG1ha2UgfmRlcml2ZWRfaXRlbV9sb2MgfmlubGluZSB+YmFzZSAoKSA9XG4gICAgeyBkZXJpdmVkX2l0ZW1fbG9jOyBiYXNlOyBpbmxpbmUgfVxuXG4gIGxldCBkZXJpdmVkX2l0ZW1fbG9jIHQgPSB0LmRlcml2ZWRfaXRlbV9sb2NcbiAgbGV0IGNvZGVfcGF0aCB0ID0gdC5iYXNlLmNvZGVfcGF0aFxuICBsZXQgaW5wdXRfbmFtZSB0ID0gdC5iYXNlLmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC5iYXNlLnRvb2xfbmFtZVxuICBsZXQgaW5saW5lIHQgPSB0LmlubGluZVxuXG4gIGxldCB3aXRoX2xvY19hbmRfcGF0aCBmIH5jdHh0ID1cbiAgICBmIH5sb2M6Y3R4dC5kZXJpdmVkX2l0ZW1fbG9jXG4gICAgICB+cGF0aDooQ29kZV9wYXRoLnRvX3N0cmluZ19wYXRoIGN0eHQuYmFzZS5jb2RlX3BhdGgpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb24uV2l0aF9lcnJvcnNcbmluY2x1ZGUgQXN0X3RyYXZlcnNlMFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4LCAncmVzXSBsaWZ0X21hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBQcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgaW5oZXJpdCBbJ2N0eCwgJ3Jlc10gQXN0LmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBlbmRcblxubGV0IG1vZHVsZV9uYW1lID0gZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgbmFtZSAtPiBuYW1lXG5sZXQgZW50ZXIgbmFtZSBwYXRoID0gaWYgU3RyaW5nLmlzX2VtcHR5IHBhdGggdGhlbiBuYW1lIGVsc2UgcGF0aCBeIFwiLlwiIF4gbmFtZVxubGV0IGVudGVyX29wdCBuYW1lX29wdCBwYXRoID0gZW50ZXIgKG1vZHVsZV9uYW1lIG5hbWVfb3B0KSBwYXRoXG5cbmNsYXNzIG1hcF93aXRoX3BhdGggPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmddIG1hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgICgqIFdBUzpcbiAgICAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4ID1cbiAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICB8IFBzdHJfbW9kdWxlIG1iIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgKGVudGVyIG1iLnBtYl9uYW1lLnR4dCBwYXRoKSB4XG4gICAgICAgfCBfIC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcGF0aCB4XG5cbiAgICAgICBPdmVycmlkaW5nIFttb2R1bGVfYmluZGluZ10gc2VlbXMgdG8gYmUgT0sgYmVjYXVzZSBpdCBkb2VzIG5vdCBjYXRjaFxuICAgICAgIGxvY2FsIG1vZHVsZSBiaW5kaW5ncyBiZWNhdXNlIGF0IHRoZSBtb21lbnQgdGhlIHBhcnNldHJlZSBkb2Vzbid0IG1ha2VcbiAgICAgICB1c2Ugb2YgW21vZHVsZV9iaW5kaW5nXSBmb3IgbG9jYWwgbW9kdWxlcywgYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGluIHRoZVxuICAgICAgIGZ1dHVyZSwgc28gdGhpcyBtaWdodCBiZSBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLlxuXG4gICAgICAgVGhlIGZvbGxvd2luZzpcblxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG5cbiAgICAgICBpcyBkaXNhbGxvd2VkLCBidXRcblxuICAgICAgICAgICBsZXQgXyA9IC4uIGxldCBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmQgaW4gLi5cbiAgICAgICAgICAgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuXG4gICAgICAgaXNuJ3QsIGFuZCB0aGUgXCJwYXRoXCIgY29uc3RydWN0ZWQgaGVyZSB3b3VsZCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBwYXRoIG1iID1cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIChlbnRlcl9vcHQgbWIucG1iX25hbWUudHh0IHBhdGgpIG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBwYXRoIG1kID1cbiAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiAoZW50ZXJfb3B0IG1kLnBtZF9uYW1lLnR4dCBwYXRoKSBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBwYXRoIG10ZCA9XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoZW50ZXIgbXRkLnBtdGRfbmFtZS50eHQgcGF0aCkgbXRkXG4gIGVuZFxuXG5sZXQgdmFyX25hbWVzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIGZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgcGF0dGVybiBwIGFjYyA9XG4gICAgICBsZXQgYWNjID0gc3VwZXIjcGF0dGVybiBwIGFjYyBpblxuICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHR4dCA6OiBhY2MgfCBfIC0+IGFjY1xuICBlbmRcblxubGV0IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYyBuYW1lX29wdCBjdHh0ID1cbiAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyAobW9kdWxlX25hbWUgbmFtZV9vcHQpIGN0eHRcblxubGV0IGVudGVyX3ZhbHVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfdmFsdWVcIiBFeHByZXNzaW9uXG4gICAgQXN0X3BhdHRlcm4uKHNpbmdsZV9leHByX3BheWxvYWQgKHBleHBfaWRlbnQgKGxpZGVudCBfXycpKSlcbiAgICBGbi5pZFxuXG5sZXQgZW50ZXJfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2V4cHJcbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9jb25zdHJ1Y3QgKGxpZGVudCBfXycpIG5vbmUpKVxuICAgIEZuLmlkXG5cbmxldCBkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl92YWx1ZVwiIFZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX2JpbmRpbmcgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2JpbmRpbmdcbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX21vZHVsZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxuY2xhc3MgbWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyA9XG4gIGxldCByZXR1cm4gX2N0eCB4ID0gKHgsIFtdKSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdFxuICAgICAgW0V4cGFuc2lvbl9jb250ZXh0LkJhc2UudCwgTG9jYXRpb24uRXJyb3IudCBsaXN0XSBsaWZ0X21hcF93aXRoX2NvbnRleHQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBpbnQgPSByZXR1cm5cbiAgICBtZXRob2Qgc3RyaW5nID0gcmV0dXJuXG4gICAgbWV0aG9kIGJvb2wgPSByZXR1cm5cbiAgICBtZXRob2QgY2hhciA9IHJldHVyblxuICAgIG1ldGhvZCBmbG9hdCA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQzMiA9IHJldHVyblxuICAgIG1ldGhvZCBpbnQ2NCA9IHJldHVyblxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSByZXR1cm5cbiAgICBtZXRob2QgdW5pdCA9IHJldHVyblxuXG4gICAgbWV0aG9kIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCkgLT5cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgICAgICAnYSBhcnJheSAtPlxuICAgICAgICAgICdhIGFycmF5ICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBmIGN0eCBhIC0+XG4gICAgICAgIGxldCBsaXN0LCBlcnJvcnMgPSBzZWxmI2xpc3QgZiBjdHggKEFycmF5LnRvX2xpc3QgYSkgaW5cbiAgICAgICAgKEFycmF5Lm9mX2xpc3QgbGlzdCwgZXJyb3JzKVxuXG4gICAgbWV0aG9kIG90aGVyIDogJ2EuIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiAnYSAtPiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIF8gXyAtPiBbXVxuXG4gICAgbWV0aG9kIHJlY29yZCBfY3R4IGZpZWxkcyA9IExpc3QuY29uY2F0X21hcCBmaWVsZHMgfmY6c25kXG4gICAgbWV0aG9kIGNvbnN0ciBfY3R4IF90YWcgYXJncyA9IExpc3QuY29uY2F0IGFyZ3NcbiAgICBtZXRob2QgdHVwbGUgX2N0eCBsID0gTGlzdC5jb25jYXQgbFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGN0eHRcbiAgICAgICAgKHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFzIGV4cHIpID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZW50ZXJfdmFsdWUgZXhwciB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlID4+PSBmdW4gY3R4dCAtPlxuICAgICAgbGV0IGN0eHQgPSBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX2V4cHIgY3R4dCBpblxuICAgICAgbGV0IHBleHBfZGVzYywgZGVzY19lcnJvcnMgPVxuICAgICAgICBtYXRjaCBwZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSkgLT5cbiAgICAgICAgICAgIGxldCBuYW1lLCBuYW1lX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4dCBuYW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZV9leHByLCBtb2R1bGVfZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgICBsZXQgd2l0aF9sZXRfbW9kdWxlID1cbiAgICAgICAgICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbGV0X21vZHVsZSBleHByXG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bW9kdWxlX2V4cHIucG1vZF9sb2MgbmFtZS50eHQgY3R4dFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICB3aXRoX2xldF9tb2R1bGUgPj49IGZ1biBjdHh0IC0+IHNlbGYjbW9kdWxlX2V4cHIgY3R4dCBtb2R1bGVfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBib2R5LCBib2R5X2Vycm9ycyA9IHNlbGYjZXhwcmVzc2lvbiBjdHh0IGJvZHkgaW5cbiAgICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHh0IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgbmFtZV9lcnJvcnM7IG1vZHVsZV9leHByX2Vycm9yczsgYm9keV9lcnJvcnMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAobmFtZSwgbW9kdWxlX2V4cHIsIGJvZHkpLCBlcnJvcnMpXG4gICAgICAgIHwgXyAtPiBzZWxmI2V4cHJlc3Npb25fZGVzYyBjdHh0IHBleHBfZGVzY1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvYyBpblxuICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBsb2Nfc3RhY2tfZXJyb3JzID1cbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb24gY3R4dCBwZXhwX2xvY19zdGFja1xuICAgICAgaW5cbiAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGN0eHQgcGV4cF9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgKCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSxcbiAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBkZXNjX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIGxvY19zdGFja19lcnJvcnMpO1xuICAgICAgICAgICAgKFwiYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgXSApXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIGN0eHQgbWUgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX2V4cHIgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl9tb2R1bGUgbWUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjdHh0XG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2V4cHIgPj49IGZ1biBjdHh0IC0+IHN1cGVyI21vZHVsZV9leHByIGN0eHQgbWVcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgY3R4dCBtYiA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfYmluZGluZyA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyBtYlxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+IGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptYi5wbWJfbG9jIG1iLnBtYl9uYW1lLnR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfYmluZGluZyA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgY3R4dCBtYlxuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX2RlY2xhcmF0aW9uIG1kXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1kLnBtZF9sb2MgbWQucG1kX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eHQgbWRcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGQgPVxuICAgICAgbGV0IHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBkb19ub3RfZW50ZXJfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gbXRkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2M6bXRkLnBtdGRfbG9jXG4gICAgICAgICAgICAgIG10ZC5wbXRkX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPlxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4dCBtdGRcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZCA9XG4gICAgICBsZXQgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiB2ZFxuICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBTb21lICgpIC0+IGN0eHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6dmQucHZhbF9sb2MgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAgICAgICBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF92YWx1ZV9kZXNjcmlwdGlvbiA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24gY3R4dCB2ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9iaW5kaW5nIGN0eHRcbiAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYXMgdmIpID1cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIHZiIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSAoKSAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIGN0eHQgdmJcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBpbl9iaW5kaW5nX2N0eHQgPVxuICAgICAgICAgICAgbWF0Y2ggdmFyX25hbWVzX29mI3BhdHRlcm4gcHZiX3BhdCBbXSB3aXRoXG4gICAgICAgICAgICB8IFtdIHwgXyA6OiBfIDo6IF8gLT4gY3R4dFxuICAgICAgICAgICAgfCBbIHZhcl9uYW1lIF0gLT5cbiAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2M6cHZiX2xvYyB2YXJfbmFtZSBjdHh0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX3BhdCwgcGF0X2Vycm9ycyA9IHNlbGYjcGF0dGVybiBjdHh0IHB2Yl9wYXQgaW5cbiAgICAgICAgICBsZXQgcHZiX2V4cHIsIGV4cHJfZXJyb3JzID1cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBpbl9iaW5kaW5nX2N0eHQgcHZiX2V4cHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGluX2JpbmRpbmdfY3R4dCBwdmJfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9sb2MsIGxvY19lcnJvcnMgPSBzZWxmI2xvY2F0aW9uIGN0eHQgcHZiX2xvYyBpblxuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNyZWNvcmQgY3R4dFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwYXRfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBleHByX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgYXR0cmlidXRlc19lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgbG9jX2Vycm9ycyk7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBlcnJvcnMpXG4gIGVuZFxuXG5jbGFzcyBzZXhwX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbU2V4cC50XSBBc3QubGlmdFxuICAgIG1ldGhvZCBpbnQgPSBzZXhwX29mX2ludFxuICAgIG1ldGhvZCBzdHJpbmcgPSBzZXhwX29mX3N0cmluZ1xuICAgIG1ldGhvZCBib29sID0gc2V4cF9vZl9ib29sXG4gICAgbWV0aG9kIGNoYXIgPSBzZXhwX29mX2NoYXJcbiAgICBtZXRob2QgZmxvYXQgPSBzZXhwX29mX2Zsb2F0XG4gICAgbWV0aG9kIGludDMyID0gc2V4cF9vZl9pbnQzMlxuICAgIG1ldGhvZCBpbnQ2NCA9IHNleHBfb2ZfaW50NjRcbiAgICBtZXRob2QgbmF0aXZlaW50ID0gc2V4cF9vZl9uYXRpdmVpbnRcbiAgICBtZXRob2QgdW5pdCA9IHNleHBfb2ZfdW5pdFxuICAgIG1ldGhvZCBvcHRpb24gPSBzZXhwX29mX29wdGlvblxuICAgIG1ldGhvZCBsaXN0ID0gc2V4cF9vZl9saXN0XG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSAtPiBTZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHAudCA9IHNleHBfb2ZfYXJyYXlcbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2EgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiXG5cbiAgICBtZXRob2QgcmVjb3JkIGZpZWxkcyA9XG4gICAgICBMaXN0XG4gICAgICAgIChMaXN0Lm1hcCBmaWVsZHMgfmY6KGZ1biAobGFiZWwsIHNleHApIC0+XG4gICAgICAgICAgICAgU2V4cC5MaXN0IFsgQXRvbSBsYWJlbDsgc2V4cCBdKSlcblxuICAgIG1ldGhvZCBjb25zdHIgdGFnIGFyZ3MgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoIFtdIC0+IEF0b20gdGFnIHwgXyAtPiBMaXN0IChBdG9tIHRhZyA6OiBhcmdzKVxuXG4gICAgbWV0aG9kIHR1cGxlIGwgPSBMaXN0IGxcbiAgZW5kXG5cbmxldCBzZXhwX29mID0gbmV3IHNleHBfb2ZcbiIsIiMgMSBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuIFxub3BlbiBMZXhpbmdcblxubGV0IHVwZGF0ZV9sb2MgbGV4YnVmIGxpbmVzX3RvX3NraXAgPVxuICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0geyBwb3Mgd2l0aFxuICAgIHBvc19sbnVtID0gcG9zLnBvc19sbnVtICsgbGluZXNfdG9fc2tpcDtcbiAgICBwb3NfYm9sID0gcG9zLnBvc19jbnVtO1xuICB9XG5cbiMgMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA2XFwwMDBcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgc2tpcF9oYXNoX2JhbmcgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaGFzaF9iYW5nX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE0IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDMgKVxuIyAxMTMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMSAtPlxuIyAxNiBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgKCB1cGRhdGVfbG9jIGxleGJ1ZiAxIClcbiMgMTE4IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IDIgLT5cbiMgMTcgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICAoICgpIClcbiMgMTIzIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4iLCJvcGVuIEltcG9ydFxuXG5sZXQgd2l0aF9vdXRwdXQgZm4gfmJpbmFyeSB+ZiA9XG4gIG1hdGNoIGZuIHdpdGhcbiAgfCBOb25lIHwgU29tZSBcIi1cIiAtPlxuICAgICAgKCogRmxpcHBpbmcgYmFjayBhbmQgZm9ydGggZnJvbSBiaW5hcnkgdG8gdGV4dCBpcyBub3RcbiAgICAgICAgIGEgZ29vZCBpZGVhLCBzbyB3ZSdsbCBtYWtlIHR3byBzaW1wbGlmeWluZyBhc3N1bXB0aW9uczpcbiAgICAgICAgIDEuIEFzc3VtZSB0aGF0IG5vdGhpbmcgaXMgYnVmZmVyZWQgb24gc3Rkb3V0IGJlZm9yZVxuICAgICAgICAgICAgZW50ZXJpbmcgW3dpdGhfb3V0cHV0XS4gVGhhdCBtZWFucyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICBmbHVzaCB0aGUgc3Rkb3V0IG9uIGVudHJ5LlxuICAgICAgICAgMi4gQXNzdW1lIHRoYXQgbm90aGluZyBlbHNlIGlzIHNlbnQgdG8gc3Rkb3V0IGFmdGVyXG4gICAgICAgICAgICBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIGl0IGlzIHNhZmUgdG8gbGVhdmUgc3Rkb3V0XG4gICAgICAgICAgICBjaGFubmVsIGluIGJpbmFyeSBtb2RlIChvciB0ZXh0IG1vZGUgaWYgW2JpbmFyeT10cnVlXSlcbiAgICAgICAgICAgIGFmdGVyIHRoZSBmdW5jdGlvbiBpcyBkb25lLiAqKVxuICAgICAgc2V0X2JpbmFyeV9tb2RlX291dCBzdGRvdXQgYmluYXJ5O1xuICAgICAgZiBzdGRvdXRcbiAgfCBTb21lIGZuIC0+IE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+YmluYXJ5IH5mXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IEludGYgfCBJbXBsXG5cbiAgbGV0IG9mX2ZpbGVuYW1lIGZuIDogdCBvcHRpb24gPVxuICAgIGlmIFN0ZGxpYi5GaWxlbmFtZS5jaGVja19zdWZmaXggZm4gXCIubWxcIiB0aGVuIFNvbWUgSW1wbFxuICAgIGVsc2UgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbGlcIiB0aGVuIFNvbWUgSW50ZlxuICAgIGVsc2UgTm9uZVxuXG4gIGxldCBkZXNjcmliZSA9IGZ1bmN0aW9uIEltcGwgLT4gXCJpbXBsZW1lbnRhdGlvblwiIHwgSW50ZiAtPiBcImludGVyZmFjZVwiXG4gIGxldCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gUG9seS5lcXVhbFxuZW5kXG5cbm1vZHVsZSBJbnRmX29yX2ltcGwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuXG4gIGxldCBtYXAgdCAobWFwIDogQXN0X3RyYXZlcnNlLm1hcCkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgeClcbiAgICB8IEludGYgeCAtPiBJbnRmIChtYXAjc2lnbmF0dXJlIHgpXG5cbiAgbGV0IG1hcF93aXRoX2NvbnRleHQgdCAobWFwIDogXyBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dCkgY3R4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltcGwgeCAtPiBJbXBsIChtYXAjc3RydWN0dXJlIGN0eCB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgY3R4IHgpXG5cbiAgbGV0IGtpbmQgOiBfIC0+IEtpbmQudCA9IGZ1bmN0aW9uIEludGYgXyAtPiBJbnRmIHwgSW1wbCBfIC0+IEltcGxcbmVuZFxuXG5tb2R1bGUgQXN0X2lvID0gc3RydWN0XG4gIHR5cGUgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfdmVyc2lvbilcblxuICBsZXQgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24gPSAobW9kdWxlIENvbXBpbGVyX3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKVxuICAoKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgaW5wdXQgdmVyc2lvbiBjYW4ndCBiZSBkZXRlcm1pbmVkIGR1ZSB0b1xuICAgICAgbG9hZGluZyBvciBwcmVwcm9jZXNzaW5nIGVycm9ycyAqKVxuXG4gIHR5cGUgdCA9IHtcbiAgICBpbnB1dF9uYW1lIDogc3RyaW5nO1xuICAgIGlucHV0X3ZlcnNpb24gOiBpbnB1dF92ZXJzaW9uO1xuICAgIGFzdCA6IEludGZfb3JfaW1wbC50O1xuICB9XG5cbiAgdHlwZSByZWFkX2Vycm9yID1cbiAgICB8IE5vdF9hX2JpbmFyeV9hc3RcbiAgICB8IFVua25vd25fdmVyc2lvbiBvZiBzdHJpbmcgKiBpbnB1dF92ZXJzaW9uXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3Igb2YgTG9jYXRpb24uRXJyb3IudCAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFN5c3RlbV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuXG4gIHR5cGUgaW5wdXRfc291cmNlID0gU3RkaW4gfCBGaWxlIG9mIHN0cmluZ1xuICB0eXBlIGlucHV0X2tpbmQgPSBQb3NzaWJseV9zb3VyY2Ugb2YgS2luZC50ICogc3RyaW5nIHwgTmVjZXNzYXJpbHlfYmluYXJ5XG5cbiAgbGV0IHJlYWRfZXJyb3JfdG9fc3RyaW5nIChlcnJvciA6IHJlYWRfZXJyb3IpID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb3RfYV9iaW5hcnlfYXN0IC0+IFwiRXJyb3I6IE5vdCBhIGJpbmFyeSBhc3RcIlxuICAgIHwgVW5rbm93bl92ZXJzaW9uIChzLCBfKSAtPiBcIkVycm9yOiBVbmtub3duIHZlcnNpb24gXCIgXiBzXG4gICAgfCBTb3VyY2VfcGFyc2VfZXJyb3IgKGxvYywgXykgLT5cbiAgICAgICAgXCJTb3VyY2UgcGFyc2UgZXJyb3I6XCIgXiBMb2NhdGlvbi5FcnJvci5tZXNzYWdlIGxvY1xuICAgIHwgU3lzdGVtX2Vycm9yIChsb2MsIF8pIC0+IFwiU3lzdGVtIGVycm9yOiBcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG5cbiAgbGV0IHBhcnNlX3NvdXJjZV9jb2RlIH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGljXG4gICAgICA9XG4gICAgKCogVGhlIGlucHV0IHZlcnNpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZmFjdCB0aGF0IHRoZSBpbnB1dCB3aWxsIGdldCBwYXJzZWQgYnlcbiAgICAgICB0aGUgY3VycmVudCBjb21waWxlciBQYXJzZSBtb2R1bGUgKilcbiAgICBsZXQgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIGluXG4gICAgdHJ5XG4gICAgICAoKiBUbyB0ZXN0IGlmIGEgZmlsZSBpcyBhbiBBU1QgZmlsZSwgd2UgaGF2ZSB0byByZWFkIHRoZSBmaXJzdCBmZXcgYnl0ZXMgb2YgdGhlXG4gICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICBzb3VyY2UgY29kZS5cbiAgICAgICAgIFRoZSBjb21waWxlciBqdXN0IGRvZXMgW3NlZWtfb24gMF0gaW4gdGhpcyBjYXNlLCBob3dldmVyIHRoaXMgZG9lc24ndCB3b3JrXG4gICAgICAgICB3aGVuIHRoZSBpbnB1dCBpcyBhIHBpcGUuXG4gICAgICAgICBXaGF0IHdlIGRvIGlzIHdlIGJ1aWxkIGEgc3RyaW5nIG9mIHRoZSB3aG9sZSBzb3VyY2UsIGFwcGVuZCB0aGUgcHJlZml4XG4gICAgICAgICBhbmQgYnVpbHQgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhhdC5cbiAgICAgICAgIFdlIGhhdmUgdG8gcHV0IGFsbCB0aGUgc291cmNlIGludG8gdGhlIGxleGluZyBidWZmZXIgYXQgb25jZSB0aGlzIHdheVxuICAgICAgICAgZm9yIHNvdXJjZSBxdW90YXRpb24gdG8gd29yayBpbiBlcnJvciBtZXNzYWdlcy5cbiAgICAgICAgIFNlZSBvY2FtbCMxMjIzOCBhbmQgb2NhbWwvZHJpdmVyL3BwYXJzZS5tbC4gKilcbiAgICAgIGxldCBhbGxfc291cmNlID0gcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgXiBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBhbGxfc291cmNlIGluXG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gaW5wdXRfbmFtZSB9O1xuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIFNraXBfaGFzaF9iYW5nLnNraXBfaGFzaF9iYW5nIGxleGJ1ZjtcbiAgICAgIGxldCBhc3QgOiBJbnRmX29yX2ltcGwudCA9XG4gICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICB8IEludGYgLT4gSW50ZiAoUGFyc2UuaW50ZXJmYWNlIGxleGJ1ZilcbiAgICAgICAgfCBJbXBsIC0+IEltcGwgKFBhcnNlLmltcGxlbWVudGF0aW9uIGxleGJ1ZilcbiAgICAgIGluXG4gICAgICBPayB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIGlucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgbWFnaWNfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG4gIGxldCByZWFkX21hZ2ljIGljID1cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBtYWdpY19sZW5ndGggaW5cbiAgICBsZXQgcyA9IEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIH5wb3M6MCB+bGVuIGluXG4gICAgaWYgbGVuID0gbWFnaWNfbGVuZ3RoIHRoZW4gT2sgcyBlbHNlIEVycm9yIHNcblxuICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lID1cbiAgICBsZXQgc2V0X2lucHV0X2xleGJ1ZiBpYyA9XG4gICAgICAoKiBzZXQgaW5wdXQgbGV4YnVmIGZvciBlcnJvciBtZXNzYWdlcy4gKilcbiAgICAgIGxldCBzb3VyY2UgPSBJbl9jaGFubmVsLmlucHV0X2FsbCBpYyBpblxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzb3VyY2UgaW5cbiAgICAgIEFzdGxpYi5Mb2NhdGlvbi5zZXRfaW5wdXRfbGV4YnVmIChTb21lIGxleGJ1Zik7XG4gICAgICBsZXhidWZcbiAgICBpblxuICAgIG1hdGNoIEluX2NoYW5uZWwud2l0aF9maWxlIH5iaW5hcnk6dHJ1ZSBpbnB1dF9uYW1lIH5mOnNldF9pbnB1dF9sZXhidWYgd2l0aFxuICAgIHwgKF8gOiBMZXhpbmcubGV4YnVmKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIFN5c19lcnJvciBfIC0+ICgpXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBjaCB+aW5wdXRfa2luZCA9XG4gICAgbGV0IGhhbmRsZV9ub25fYmluYXJ5IHByZWZpeF9yZWFkX2Zyb21fc291cmNlID1cbiAgICAgIG1hdGNoIGlucHV0X2tpbmQgd2l0aFxuICAgICAgfCBQb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIC0+XG4gICAgICAgICAgcGFyc2Vfc291cmNlX2NvZGUgfmtpbmQgfmlucHV0X25hbWUgfnByZWZpeF9yZWFkX2Zyb21fc291cmNlIGNoXG4gICAgICB8IE5lY2Vzc2FyaWx5X2JpbmFyeSAtPiBFcnJvciBOb3RfYV9iaW5hcnlfYXN0XG4gICAgaW5cbiAgICAoKiBNYXJzaGFsbGVkIEFTVCBtdXN0IGJlIHJlYWQgaW4gYmluYXJ5IG1vZGUuIEV2ZW4gdGhvdWdoIHdlIGRvbid0IGtub3dcbiAgICAgICBiZWZvcmUgcmVhZGluZyB0aGUgbWFnaWMgbnVtYmVyIHdoZW4gdGhlIGZpbGUgaGFzIGEgbWFyc2hhbGxlZCBBU1QsXG4gICAgICAgaXQgaXMgc2FmZSB0byByZWFkIHNvdXJjZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gKilcbiAgICBzZXRfYmluYXJ5X21vZGVfaW4gY2ggdHJ1ZTtcbiAgICBtYXRjaCByZWFkX21hZ2ljIGNoIHdpdGhcbiAgICB8IEVycm9yIHMgLT4gaGFuZGxlX25vbl9iaW5hcnkgc1xuICAgIHwgT2sgcyAtPiAoXG4gICAgICAgIG1hdGNoIEZpbmRfdmVyc2lvbi5mcm9tX21hZ2ljIHMgd2l0aFxuICAgICAgICB8IEludGYgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWU7XG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkludGYgKElucHV0X3RvX3BweGxpYi5jb3B5X3NpZ25hdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgSW1wbCAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW1wbCAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc3RydWN0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBVbmtub3duIC0+XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgfHwgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICB0aGVuIEVycm9yIChVbmtub3duX3ZlcnNpb24gKHMsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSlcbiAgICAgICAgICAgIGVsc2UgaGFuZGxlX25vbl9iaW5hcnkgcylcblxuICBsZXQgcmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggaW5wdXRfc291cmNlIHdpdGhcbiAgICAgIHwgU3RkaW4gLT5cbiAgICAgICAgICBzZXRfYmluYXJ5X21vZGVfaW4gc3RkaW4gdHJ1ZTtcbiAgICAgICAgICBmcm9tX2NoYW5uZWwgc3RkaW4gfmlucHV0X2tpbmRcbiAgICAgIHwgRmlsZSBmbiAtPiBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kKVxuICAgIHdpdGggZXhuIC0+IChcbiAgICAgIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgfCBTb21lIGVycm9yIC0+IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCB3cml0ZSBvYyB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24pOyBhc3QgfVxuICAgICAgfmFkZF9wcHhfY29udGV4dCA9XG4gICAgbGV0IG1vZHVsZSBQcHhsaWJfdG9faW5wdXQgPSBDb252ZXJ0IChKcykgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbGV0IG1vZHVsZSBPY2FtbF90b19pbnB1dCA9IENvbnZlcnQgKENvbXBpbGVyX3ZlcnNpb24pIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgfCBJbnRmIHNnIC0+XG4gICAgICAgIGxldCBzZyA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHNnXG4gICAgfCBJbXBsIHN0IC0+XG4gICAgICAgIGxldCBzdCA9XG4gICAgICAgICAgaWYgYWRkX3BweF9jb250ZXh0IHRoZW5cbiAgICAgICAgICAgIFNlbGVjdGVkX2FzdC5Ub19vY2FtbC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICAgICAgfD4gQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc3RyIH50b29sX25hbWU6XCJwcHhfZHJpdmVyXCJcbiAgICAgICAgICAgIHw+IE9jYW1sX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZSBQcHhsaWJfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgaW5cbiAgICAgICAgb3V0cHV0X3N0cmluZyBvYyBJbnB1dF92ZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2MgaW5wdXRfbmFtZTtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIHN0XG5cbiAgbW9kdWxlIFJlYWRfYmluID0gc3RydWN0XG4gICAgdHlwZSBhc3QgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG4gICAgdHlwZSB0ID0geyBhc3QgOiBhc3Q7IGlucHV0X25hbWUgOiBzdHJpbmcgfVxuXG4gICAgbGV0IHJlYWRfYmluYXJ5IGZuID1cbiAgICAgIG1hdGNoXG4gICAgICAgIEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQ6TmVjZXNzYXJpbHlfYmluYXJ5KVxuICAgICAgd2l0aFxuICAgICAgfCBPayB7IGFzdDsgaW5wdXRfbmFtZTsgXyB9IC0+XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgICAgfCBJbXBsIHN0cnVjdHVyZSAtPiBJbXBsIHN0cnVjdHVyZVxuICAgICAgICAgICAgfCBJbnRmIHNpZ25hdHVyZSAtPiBJbnRmIHNpZ25hdHVyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBhc3Q7IGlucHV0X25hbWUgfVxuICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChyZWFkX2Vycm9yX3RvX3N0cmluZyBlKVxuXG4gICAgbGV0IGdldF9hc3QgdCA9IHQuYXN0XG4gICAgbGV0IGdldF9pbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5c3RlbSA9IHN0cnVjdFxuICBsZXQgcnVuX3ByZXByb2Nlc3NvciB+cHAgfmlucHV0IH5vdXRwdXQgPVxuICAgIGxldCBjb21tYW5kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgPiAlc1wiIHBwXG4gICAgICAgIChpZiBTdHJpbmcuZXF1YWwgaW5wdXQgXCItXCIgdGhlbiBcIlwiIGVsc2UgU3RkbGliLkZpbGVuYW1lLnF1b3RlIGlucHV0KVxuICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIG91dHB1dClcbiAgICBpblxuICAgIGlmIFN0ZGxpYi5TeXMuY29tbWFuZCBjb21tYW5kID0gMCB0aGVuIE9rICgpXG4gICAgZWxzZSBFcnJvciAoY29tbWFuZCwgQXN0X2lvLmZhbGxfYmFja19pbnB1dF92ZXJzaW9uKVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5tb2R1bGUgRmlsZW5hbWUgPSBTdGRsaWIuRmlsZW5hbWVcblxuKCogVE9ETzogbWFrZSB0aGUgXCJkZXJpdmluZy5cIiBkZXBlbmQgb24gdGhlIG1hdGNoaW5nIGF0dHJpYnV0ZSBuYW1lLiAqKVxubGV0IGVuZF9tYXJrZXJfc2lnID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTaWduYXR1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZW5kX21hcmtlcl9zdHIgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFN0cnVjdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbm1vZHVsZSB0eXBlIFQxID0gc2lnXG4gIHR5cGUgJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBnZXRfbG9jIDogdCAtPiBMb2NhdGlvbi50XG4gIHZhbCBlbmRfbWFya2VyIDogKHQsIHVuaXQpIEF0dHJpYnV0ZS5GbG9hdGluZy50XG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA6IHNpZ1xuICAgIHZhbCBhcHBseSA6XG4gICAgICA8IHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gVC50XG4gICAgICA7IHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gVC50XG4gICAgICA7IC4uID4gLT5cbiAgICAgIHQgVC50XG4gIGVuZFxuXG4gIHZhbCBwYXJzZSA6IExleGluZy5sZXhidWYgLT4gdCBsaXN0XG4gIHZhbCBwcCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCB0b19zZXhwIDogdCAtPiBTZXhwLnRcbmVuZCkgPVxuc3RydWN0XG4gIGxldCBleHRyYWN0X3ByZWZpeCB+cG9zIGwgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgeyBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBwb3M7IGxvY19lbmQgPSBwb3M7IGxvY19naG9zdCA9IGZhbHNlIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcInBweGxpYjogW0BAQEBAQCVzXSBhdHRyaWJ1dGUgbWlzc2luZ1wiXG4gICAgICAgICAgICAgICAgKEF0dHJpYnV0ZS5GbG9hdGluZy5uYW1lIE0uZW5kX21hcmtlciksXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgIHwgeCA6OiBsIC0+IChcbiAgICAgICAgICBtYXRjaCBBdHRyaWJ1dGUuRmxvYXRpbmcuY29udmVydF9yZXMgWyBNLmVuZF9tYXJrZXIgXSB4IHdpdGhcbiAgICAgICAgICB8IE9rIE5vbmUgLT4gbG9vcCAoeCA6OiBhY2MpIGxcbiAgICAgICAgICB8IE9rIChTb21lICgpKSAtPiBPayAoTGlzdC5yZXYgYWNjLCAoTS5nZXRfbG9jIHgpLmxvY19zdGFydClcbiAgICAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgICAgIHwgZXhjZXB0aW9uIEZhaWx1cmUgXyAtPiBsb29wICh4IDo6IGFjYykgbClcbiAgICBpblxuICAgIGxvb3AgW10gbFxuXG4gIGxldCByZW1vdmVfbG9jID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgICAgbWV0aG9kISBsb2NhdGlvbiBfID0gTG9jYXRpb24ubm9uZVxuICAgICAgbWV0aG9kISBsb2NhdGlvbl9zdGFjayBfID0gW11cbiAgICBlbmRcblxuICBtb2R1bGUgTV9tYXAgPSBNLlRyYW5zZm9ybSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCByZW1vdmVfbG9jIHggPSBNX21hcC5hcHBseSByZW1vdmVfbG9jIHhcbiAgbGV0IHJlYyBsYXN0IHByZXYgPSBmdW5jdGlvbiBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGRpZmZfYXN0cyB+Z2VuZXJhdGVkIH5yb3VuZF90cmlwID1cbiAgICBsZXQgd2l0aF90ZW1wX2ZpbGUgZiA9XG4gICAgICBFeG4ucHJvdGVjdHhcbiAgICAgICAgKEZpbGVuYW1lLnRlbXBfZmlsZSBcInBweGxpYlwiIFwiXCIpXG4gICAgICAgIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mXG4gICAgaW5cbiAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMSAtPlxuICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIGZuMiAtPlxuICAgICAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgZHVtcCBmbiBhc3QgPVxuICAgICAgICAgICAgICAgICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgICAgICAgICAgICAgIFNleHAucHBfaHVtIHBwZiAoTS50b19zZXhwIGFzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHBwZiAoKSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGR1bXAgZm4xIGdlbmVyYXRlZDtcbiAgICAgICAgICAgICAgICBkdW1wIGZuMiByb3VuZF90cmlwO1xuICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCJwYXRkaWZmIC1hc2NpaSAtYWx0LW9sZCBnZW5lcmF0ZWQgLWFsdC1uZXcgXFxcbiAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG9rID1cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCJkaWZmIC0tbGFiZWwgZ2VuZXJhdGVkIC0tbGFiZWwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgb3V0KVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQgPSAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBvayB0aGVuIEluX2NoYW5uZWwucmVhZF9hbGwgb3V0XG4gICAgICAgICAgICAgICAgZWxzZSBcIjxubyBkaWZmZXJlbmNlcyBwcm9kdWNlZCBieSBkaWZmPlwiKSkpXG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzID1cbiAgICBtYXRjaCBNLnBhcnNlIChMZXhpbmcuZnJvbV9zdHJpbmcgcykgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgcmVjIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2UgPVxuICAgIG1hdGNoIChleHBlY3RlZCwgc291cmNlKSB3aXRoXG4gICAgfCBbXSwgW10gLT4gKClcbiAgICB8IFtdLCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyAoTS5nZXRfbG9jIHgpIHdpdGggbG9jX2VuZCA9IChNLmdldF9sb2MgKGxhc3QgeCBsKSkubG9jX2VuZCB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFtdXG4gICAgfCBfLCBbXSAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IExvY2F0aW9uLmxvY19naG9zdCA9IGZhbHNlOyBsb2Nfc3RhcnQgPSBlbmRfcG9zOyBsb2NfZW5kID0gZW5kX3BvcyB9XG4gICAgICAgIGluXG4gICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIGV4cGVjdGVkXG4gICAgfCB4IDo6IGV4cGVjdGVkLCB5IDo6IHNvdXJjZSAtPlxuICAgICAgICBsZXQgbG9jID0gTS5nZXRfbG9jIHkgaW5cbiAgICAgICAgbGV0IHggPSByZW1vdmVfbG9jIHggaW5cbiAgICAgICAgbGV0IHkgPSByZW1vdmVfbG9jIHkgaW5cbiAgICAgICAgaWYgUG9seS4oIDw+ICkgeCB5IHRoZW4gKFxuICAgICAgICAgIGxldCByb3VuZF90cmlwID1cbiAgICAgICAgICAgIHJlbW92ZV9sb2MgKHBhcnNlX3N0cmluZyAoRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIE0ucHAgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHJvdW5kX3RyaXAgdGhlblxuICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICAgICAgICAgICAgXCJwcHhsaWI6IHRoZSBjb3JyZWN0ZWQgY29kZSBkb2Vzbid0IHJvdW5kLXRyaXAuXFxuXFxcbiAgICAgICAgICAgICAgIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIE9DYW1sIHByaW50ZXI6XFxuXFxcbiAgICAgICAgICAgICAgICVzXCJcbiAgICAgICAgICAgICAgKGRpZmZfYXN0cyB+Z2VuZXJhdGVkOnggfnJvdW5kX3RyaXApO1xuICAgICAgICAgIG1pc21hdGNoX2hhbmRsZXIgbG9jIFsgeCBdKTtcbiAgICAgICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuXG4gIGxldCBkb19tYXRjaCB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBzb3VyY2UgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGV4dHJhY3RfcHJlZml4IH5wb3Mgc291cmNlID4+fCBmdW4gKHNvdXJjZSwgZW5kX3BvcykgLT5cbiAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5lbmRcblxuKCokKilcbm1vZHVsZSBTdHIgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc3RyX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc3RyXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbXBsZW1lbnRhdGlvblxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmVfaXRlbVxuZW5kKVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5tb2R1bGUgU2lnID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHNpZ25hdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHNpZ19sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3NpZ1xuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc2lnbmF0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW50ZXJmYWNlXG4gIGxldCBwcCA9IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3NpZ25hdHVyZV9pdGVtXG5lbmQpXG5cbigqJCopXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmVfcmVzID0gU3RyLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zdHJ1Y3R1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3N0cnVjdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlX3JlcyA9IFNpZy5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc2lnbmF0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zaWduYXR1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cblxudHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxubW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBQYXR0ZXJuIDogcGF0dGVybiB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IFN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gdFxuICAgIHwgUHB4X2ltcG9ydCA6IHR5cGVfZGVjbGFyYXRpb24gdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgY2xhc3NfZXhwciA9IENsYXNzX2V4cHJcbiAgbGV0IGNsYXNzX2ZpZWxkID0gQ2xhc3NfZmllbGRcbiAgbGV0IGNsYXNzX3R5cGUgPSBDbGFzc190eXBlXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuICBsZXQgY29yZV90eXBlID0gQ29yZV90eXBlXG4gIGxldCBleHByZXNzaW9uID0gRXhwcmVzc2lvblxuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgbW9kdWxlX3R5cGUgPSBNb2R1bGVfdHlwZVxuICBsZXQgcGF0dGVybiA9IFBhdHRlcm5cbiAgbGV0IHNpZ25hdHVyZV9pdGVtID0gU2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHN0cnVjdHVyZV9pdGVtID0gU3RydWN0dXJlX2l0ZW1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBDbGFzc19leHByIC0+IFwiY2xhc3MgZXhwcmVzc2lvblwiXG4gICAgfCBDbGFzc19maWVsZCAtPiBcImNsYXNzIGZpZWxkXCJcbiAgICB8IENsYXNzX3R5cGUgLT4gXCJjbGFzcyB0eXBlXCJcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gXCJjbGFzcyB0eXBlIGZpZWxkXCJcbiAgICB8IENvcmVfdHlwZSAtPiBcImNvcmUgdHlwZVwiXG4gICAgfCBFeHByZXNzaW9uIC0+IFwiZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV90eXBlIC0+IFwibW9kdWxlIHR5cGVcIlxuICAgIHwgUGF0dGVybiAtPiBcInBhdHRlcm5cIlxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gXCJzaWduYXR1cmUgaXRlbVwiXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFBweF9pbXBvcnQgLT4gXCJ0eXBlIGRlY2xhcmF0aW9uXCJcblxuICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgZnVuIGEgYiAtPlxuICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgfCBDbGFzc19leHByLCBDbGFzc19leHByIC0+IEVxXG4gICAgfCBDbGFzc19maWVsZCwgQ2xhc3NfZmllbGQgLT4gRXFcbiAgICB8IENsYXNzX3R5cGUsIENsYXNzX3R5cGUgLT4gRXFcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIENsYXNzX3R5cGVfZmllbGQgLT4gRXFcbiAgICB8IENvcmVfdHlwZSwgQ29yZV90eXBlIC0+IEVxXG4gICAgfCBFeHByZXNzaW9uLCBFeHByZXNzaW9uIC0+IEVxXG4gICAgfCBNb2R1bGVfZXhwciwgTW9kdWxlX2V4cHIgLT4gRXFcbiAgICB8IE1vZHVsZV90eXBlLCBNb2R1bGVfdHlwZSAtPiBFcVxuICAgIHwgUGF0dGVybiwgUGF0dGVybiAtPiBFcVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIFNpZ25hdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgU3RydWN0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFBweF9pbXBvcnQsIFBweF9pbXBvcnQgLT4gRXFcbiAgICB8IF8gLT5cbiAgICAgICAgYXNzZXJ0IChQb2x5LiggPD4gKSAoVCBhKSAoVCBiKSk7XG4gICAgICAgIE5lXG5cbiAgbGV0IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2wgPVxuICAgIG1hdGNoIHR5cGVfZGVjbCB3aXRoXG4gICAgfCB7IHB0eXBlX21hbmlmZXN0ID0gU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIChuYW1lLCBfKTsgXyB9OyBfIH1cbiAgICAgIC0+XG4gICAgICAgIGxldCB2aXJ0dWFsX3BheWxvYWQgPVxuICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl90eXBlIH5sb2M6dHlwZV9kZWNsLnB0eXBlX2xvYyBSZWN1cnNpdmVcbiAgICAgICAgICAgIFsgdHlwZV9kZWNsIF1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHIgPSBbXSBpblxuICAgICAgICBTb21lICgobmFtZSwgUFN0ciBbIHZpcnR1YWxfcGF5bG9hZCBdKSwgYXR0cilcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBnZXRfZXh0ZW5zaW9uIDogdHlwZSBhLiBhIHQgLT4gYSAtPiAoZXh0ZW5zaW9uICogYXR0cmlidXRlcykgb3B0aW9uID1cbiAgIGZ1biB0IHggLT5cbiAgICBtYXRjaCAodCwgeCkgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgeyBwY2xfZGVzYyA9IFBjbF9leHRlbnNpb24gZTsgcGNsX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX2ZpZWxkLCB7IHBjZl9kZXNjID0gUGNmX2V4dGVuc2lvbiBlOyBwY2ZfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZSwgeyBwY3R5X2Rlc2MgPSBQY3R5X2V4dGVuc2lvbiBlOyBwY3R5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGVfZmllbGQsIHsgcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZTsgcGN0Zl9hdHRyaWJ1dGVzID0gYTsgXyB9XG4gICAgICAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ29yZV90eXBlLCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIGU7IHB0eXBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgRXhwcmVzc2lvbiwgeyBwZXhwX2Rlc2MgPSBQZXhwX2V4dGVuc2lvbiBlOyBwZXhwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV9leHByLCB7IHBtb2RfZGVzYyA9IFBtb2RfZXh0ZW5zaW9uIGU7IHBtb2RfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX3R5cGUsIHsgcG10eV9kZXNjID0gUG10eV9leHRlbnNpb24gZTsgcG10eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBQYXR0ZXJuLCB7IHBwYXRfZGVzYyA9IFBwYXRfZXh0ZW5zaW9uIGU7IHBwYXRfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0sIHsgcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCB7IHBzdHJfZGVzYyA9IFBzdHJfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBQcHhfaW1wb3J0LCB0eXBlX2RlY2wgLT4gZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbFxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXNfcmVzIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gKGEsIExvY2F0aW9uLkVycm9yLnQgTm9uRW1wdHlMaXN0LnQpIHJlc3VsdCA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDbGFzc19leHByIC0+IE9rIHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0geC5wY2xfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX2ZpZWxkIC0+IE9rIHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0geC5wY2ZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGUgLT4gT2sgeyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0geC5wY3R5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+XG4gICAgICAgIE9rIHsgeCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IHgucGN0Zl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ29yZV90eXBlIC0+IE9rIHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IHgucHR5cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiBPayB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSB4LnBleHBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV9leHByIC0+IE9rIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IHgucG1vZF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX3R5cGUgLT4gT2sgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0geC5wbXR5X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBQYXR0ZXJuIC0+IE9rIHsgeCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IHgucHBhdF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuICAgIHwgUHB4X2ltcG9ydCAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG5cbiAgbGV0IG1lcmdlX2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgLT4gYSA9XG4gICBmdW4gdCB4IGF0dHJzIC0+XG4gICAgbWVyZ2VfYXR0cmlidXRlc19yZXMgdCB4IGF0dHJzXG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiZXh0ZW5zaW9uXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuIChDb250ZXh0LlQgY3R4KSAtPiBTb21lIChDb250ZXh0LmRlc2MgY3R4KSlcblxubW9kdWxlIE1ha2UgKENhbGxiYWNrIDogc2lnXG4gIHR5cGUgJ2EgdFxuZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSBwYXlsb2FkX3BhcnNlciA9XG4gICAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAgICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50ICogJ2IgQ2FsbGJhY2sudFxuICAgICAgICAtPiAoJ2EsICdjKSBwYXlsb2FkX3BhcnNlclxuXG4gIHR5cGUgKCdjb250ZXh0LCAncGF5bG9hZCkgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdjb250ZXh0IENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogKHBheWxvYWQsICdwYXlsb2FkKSBwYXlsb2FkX3BhcnNlcjtcbiAgICB3aXRoX2FyZyA6IGJvb2w7XG4gIH1cblxuICBsZXQgZGVjbGFyZSA6XG4gICAgICB0eXBlIGEuXG4gICAgICB3aXRoX2FyZzpib29sIC0+XG4gICAgICBzdHJpbmcgLT5cbiAgICAgIGEgQ29udGV4dC50IC0+XG4gICAgICAocGF5bG9hZCwgJ2IsICdwYXlsb2FkKSBBc3RfcGF0dGVybi50IC0+XG4gICAgICAnYiBDYWxsYmFjay50IC0+XG4gICAgICAoYSwgJ3BheWxvYWQpIHQgPVxuICAgZnVuIH53aXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrIC0+XG4gICAgKCogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBjb2xsaXNpb25zIGJldHdlZW4gcHB4X2ltcG9ydCBhbmQgY29yZV90eXBlXG4gICAgICAgZXh0ZW5zaW9ucyAqKVxuICAgIChtYXRjaCBjb250ZXh0IHdpdGhcbiAgICB8IENvbnRleHQuUHB4X2ltcG9ydCAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIENvcmVfdHlwZSkgbmFtZVxuICAgIHwgQ29udGV4dC5Db3JlX3R5cGUgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBQcHhfaW1wb3J0KSBuYW1lXG4gICAgfCBfIC0+ICgpKTtcbiAgICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgRXh0ZW5zaW9uIHJlZ2lzdHJhciAoQ29udGV4dC5UIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBrKTtcbiAgICAgIHdpdGhfYXJnO1xuICAgIH1cblxuICBsZXQgZmluZCB0cyAoZXh0IDogZXh0ZW5zaW9uKSA9XG4gICAgbGV0IHsgdHh0ID0gbmFtZTsgbG9jIH0gPSBmc3QgZXh0IGluXG4gICAgbGV0IG5hbWUsIGFyZyA9IE5hbWUuc3BsaXRfcGF0aCBuYW1lIGluXG4gICAgbWF0Y2ggTGlzdC5maWx0ZXIgdHMgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCBfIDo6IF8gOjogXyBhcyBsIC0+XG4gICAgICAgIEVycm9yXG4gICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJNdWx0aXBsZSBtYXRjaCBmb3IgZXh0ZW5zaW9uczogJXNcIlxuICAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgW10gKVxuICAgIHwgWyB0IF0gLT5cbiAgICAgICAgaWYgKG5vdCB0LndpdGhfYXJnKSAmJiBPcHRpb24uaXNfc29tZSBhcmcgdGhlblxuICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvY1xuICAgICAgICAgICAgICAgIFwiRXh0ZW5zaW9uICVzIGRvZXNuJ3QgZXhwZWN0IGEgcGF0aCBhcmd1bWVudFwiIG5hbWUsXG4gICAgICAgICAgICAgIFtdIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBhcmcgPVxuICAgICAgICAgICAgT3B0aW9uLm1hcCBhcmcgfmY6KGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNoaWZ0ID0gU3RyaW5nLmxlbmd0aCBuYW1lICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGxvYy5sb2Nfc3RhcnQgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eHQgPSBMb25naWRlbnQucGFyc2UgcztcbiAgICAgICAgICAgICAgICAgIGxvYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBsb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXJ0IHdpdGggcG9zX2NudW0gPSBzdGFydC5wb3NfY251bSArIHNoaWZ0IH07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIChTb21lICh0LCBhcmcpKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG4gIGVuZClcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGN0eCBwYXR0IGZcblxuICBsZXQgZGVjbGFyZSBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY3R4IHBhdHQgKGZ1biB+YXJnOl8gLT4gZilcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmxvYyBleHQgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGZpbmQgdHMgZXh0ID4+PSBmdW4gciAtPlxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPlxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5hcmcpID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBTb21lIHBheWxvYWRcblxuICBsZXQgY29udmVydCB0cyB+bG9jIGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmxvYyBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbm1vZHVsZSBNID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24udCAtPiBhcmc6TG9uZ2lkZW50LnQgTG9jLnQgb3B0aW9uIC0+ICdhXG5lbmQpXG5cbnR5cGUgJ2EgZXhwYW5kZXJfcmVzdWx0ID0gU2ltcGxlIG9mICdhIHwgSW5saW5lIG9mICdhIGxpc3RcblxubW9kdWxlIEZvcl9jb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgJ2EgZXhwYW5kZXJfcmVzdWx0KSBNLnRcblxuICBsZXQgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aFxuICAgICAgICB8IFNpbXBsZSB4IC0+IFNvbWUgeFxuICAgICAgICB8IElubGluZSBfIC0+IGZhaWx3aXRoIFwiRXh0ZW5zaW9uLmNvbnZlcnRcIilcblxuICBsZXQgY29udmVydCB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoIFNpbXBsZSB4IC0+IFNvbWUgWyB4IF0gfCBJbmxpbmUgbCAtPiBTb21lIGwpXG5cbiAgbGV0IGNvbnZlcnRfaW5saW5lIHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxudHlwZSB0ID0gVCA6IF8gRm9yX2NvbnRleHQudCAtPiB0XG5cbmxldCBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgOiB0eXBlIGEuIGZ1bmM6c3RyaW5nIC0+IGEgQ29udGV4dC50IC0+IHVuaXQgPVxuIGZ1biB+ZnVuYyBjdHggLT5cbiAgbWF0Y2ggY3R4IHdpdGhcbiAgfCBDb250ZXh0LkNsYXNzX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5DbGFzc190eXBlX2ZpZWxkIC0+ICgpXG4gIHwgQ29udGV4dC5TaWduYXR1cmVfaXRlbSAtPiAoKVxuICB8IENvbnRleHQuU3RydWN0dXJlX2l0ZW0gLT4gKClcbiAgfCBjb250ZXh0IC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCIlczogJXMgY2FuJ3QgYmUgaW5saW5lZFwiIGZ1bmNcbiAgICAgICAgKENvbnRleHQuZGVzYyBjb250ZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9ieV9jb250ZXh0IDpcbiAgICB0eXBlIGEuIGEgQ29udGV4dC50IC0+IHQgbGlzdCAtPiBhIEZvcl9jb250ZXh0LnQgbGlzdCA9XG4gZnVuIGNvbnRleHQgZXhwYW5kZXJzIC0+XG4gIG1hdGNoIGV4cGFuZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBUIHQgOjogcmVzdCAtPiAoXG4gICAgICBtYXRjaCBDb250ZXh0LmVxIGNvbnRleHQgdC5jb250ZXh0IHdpdGhcbiAgICAgIHwgRXEgLT4gdCA6OiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3RcbiAgICAgIHwgTmUgLT4gZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0KVxuXG5sZXQgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBjdHggKG5hbWUsIF8pID1cbiAgaWZcbiAgICBub3RcbiAgICAgIChOYW1lLkFsbG93bGlzdGVkLmlzX2FsbG93bGlzdGVkIH5raW5kOmBFeHRlbnNpb24gbmFtZS50eHRcbiAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dClcbiAgdGhlblxuICAgIFtcbiAgICAgIE5hbWUuUmVnaXN0cmFyLkVycm9yLmNyZWF0ZWYgcmVnaXN0cmFyIChDb250ZXh0LlQgY3R4KVxuICAgICAgICBcIkV4dGVuc2lvbiBgJXMnIHdhcyBub3QgdHJhbnNsYXRlZFwiIG5hbWU7XG4gICAgXVxuICBlbHNlIFtdXG5cbmxldCBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pIGFjYyA9XG4gICAgICBhY2NcbiAgICAgIEAgW1xuICAgICAgICAgIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCI7XG4gICAgICAgIF1cblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENvcmVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFBhdHRlcm4gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgRXhwcmVzc2lvbiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdGZfZXh0ZW5zaW9uIGV4dCAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZV9maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjZl9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbXR5X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTaWduYXR1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV9leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFN0cnVjdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2NcbiAgZW5kXG5cbmxldCBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNoZWNrX3VudXNlZCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLml0ZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSA9XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIlxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY29yZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNwYXR0ZXJuX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNleHByZXNzaW9uX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG4gIGVuZFxuXG5tb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0IH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICAgIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrKVxuZW5kXG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuXG4gICAgKEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBmKVxuXG5sZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSBjb250ZXh0XG4gICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gIFQgKE0uZGVjbGFyZSB+d2l0aF9hcmc6dHJ1ZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrJylcblxubGV0IF9fZGVjbGFyZV9wcHhfaW1wb3J0IG5hbWUgZXhwYW5kID1cbiAgKCogVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gdW53cmFwIHRoZSB0eXBlIGRlY2xhcmF0aW9uIGZyb20gdGhlIHBheWxvYWRcbiAgICAgYXNzZW1ibGVkIGJ5IFtDb250ZXh0LmdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbl0gKilcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl90eXBlIHJlY3Vyc2l2ZSAoX18gXjo6IG5pbCkgXjo6IG5pbCkpIGluXG4gIFYzLmRlY2xhcmUgbmFtZSBDb250ZXh0LlBweF9pbXBvcnQgcGF0dGVybiBleHBhbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgPSBkZWNsYXJlXG4gIGxldCBkZWNsYXJlX2lubGluZSA9IGRlY2xhcmVfaW5saW5lXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBFID0gRXh0ZW5zaW9uXG5tb2R1bGUgRUMgPSBFeHRlbnNpb24uQ29udGV4dFxubW9kdWxlIEEgPSBBdHRyaWJ1dGVcbm1vZHVsZSBBQyA9IEF0dHJpYnV0ZS5Db250ZXh0XG5cbm1vZHVsZSBSdWxlID0gc3RydWN0XG4gIG1vZHVsZSBBdHRyX2dyb3VwX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDpcbiAgICAgICAgY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICAgICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAgICAgJ2IgbGlzdCAtPlxuICAgICAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICAgICAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBBdHRyX2lubGluZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHVucGFja2VkID0ge1xuICAgICAgYXR0cmlidXRlIDogKCdiLCAnYykgQXR0cmlidXRlLnQ7XG4gICAgICBleHBlY3QgOiBib29sO1xuICAgICAgZXhwYW5kIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgU3BlY2lhbF9mdW5jdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBpZGVudCA6IExvbmdpZGVudC50O1xuICAgICAgZXhwYW5kIDogUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gUGFyc2V0cmVlLmV4cHJlc3Npb24gb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50X2tpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBGbG9hdCB8IEludGVnZXJcbiAgZW5kXG5cbiAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3VmZml4IDogY2hhcjtcbiAgICAgIGtpbmQgOiBDb25zdGFudF9raW5kLnQ7XG4gICAgICBleHBhbmQgOiBMb2NhdGlvbi50IC0+IHN0cmluZyAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBGaWVsZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEV4dGVuc2lvbiA6IEV4dGVuc2lvbi50IHRcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiA6IFNwZWNpYWxfZnVuY3Rpb24udCB0XG4gICAgICB8IENvbnN0YW50IDogQ29uc3RhbnQudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0IDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4dGVuc2lvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcblxuICAgIHR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbiAgICBsZXQgZXEgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgZXF1YWxpdHkgPVxuICAgICBmdW4gYSBiIC0+XG4gICAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgICAgfCBFeHRlbnNpb24sIEV4dGVuc2lvbiAtPiBFcVxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uLCBTcGVjaWFsX2Z1bmN0aW9uIC0+IEVxXG4gICAgICB8IENvbnN0YW50LCBDb25zdGFudCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2wsIEF0dHJfc3RyX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2wsIEF0dHJfc2lnX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCwgQXR0cl9zdHJfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQsIEF0dHJfc2lnX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX2V4Y2VwdGlvbiwgQXR0cl9zdHJfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiwgQXR0cl9zaWdfZXhjZXB0aW9uIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBfIC0+IE5lXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFQgOiAnYSBGaWVsZC50ICogJ2EgLT4gdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfZ3JvdXBfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgJ2IgbGlzdCAtPlxuICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIGxldCByZWMgZmlsdGVyIDogdHlwZSBhLiBhIEZpZWxkLnQgLT4gdCBsaXN0IC0+IGEgbGlzdCA9XG4gICBmdW4gZmllbGQgbCAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IFQgKGZpZWxkJywgeCkgOjogbCAtPiAoXG4gICAgICAgIG1hdGNoIEZpZWxkLmVxIGZpZWxkIGZpZWxkJyB3aXRoXG4gICAgICAgIHwgRmllbGQuRXEgLT4geCA6OiBmaWx0ZXIgZmllbGQgbFxuICAgICAgICB8IEZpZWxkLk5lIC0+IGZpbHRlciBmaWVsZCBsKVxuXG4gIGxldCBleHRlbnNpb24gZXh0ID0gVCAoRXh0ZW5zaW9uLCBleHQpXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb24gaWQgZiA9XG4gICAgVCAoU3BlY2lhbF9mdW5jdGlvbiwgeyBuYW1lID0gaWQ7IGlkZW50ID0gTG9uZ2lkZW50LnBhcnNlIGlkOyBleHBhbmQgPSBmIH0pXG5cbiAgbGV0IGNvbnN0YW50IGtpbmQgc3VmZml4IGV4cGFuZCA9IFQgKENvbnN0YW50LCB7IHN1ZmZpeDsga2luZDsgZXhwYW5kIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdGVkX2NvZGVfaG9vayA9IHN0cnVjdFxuICB0eXBlICdhIHNpbmdsZV9vcl9tYW55ID0gU2luZ2xlIG9mICdhIHwgTWFueSBvZiAnYSBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgRXh0ZW5zaW9uLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIHNpbmdsZV9vcl9tYW55IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuICBsZXQgcmVwbGFjZSB0IGNvbnRleHQgbG9jIHggPSB0LmYgY29udGV4dCBsb2MgeFxuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE1hbnkgW10gLT4gKClcbiAgICB8IF8gLT4gdC5mIGNvbnRleHQgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsb2MubG9jX2VuZCB9IHhcbmVuZFxuXG4oKiBVc2VkIHRvIGluc2VydCBlcnJvciBleHRlbnNpb25zICopXG5sZXQgd3JhcF9leHRlbnNpb24gOiB0eXBlIGEuIGxvYzpMb2NhdGlvbi50IC0+IGEgRUMudCAtPiBhIC0+IGV4dGVuc2lvbiAtPiBhID1cbiBmdW4gfmxvYyB0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uIC0+XG4gICgqIFByZWZpeGluZyBjb25zdHJ1Y3RvcnMgd2l0aCB0aGUgbW9kdWxlIHBhdGggaXMgbmVjZXNzYXJ5IGZvciBPQ2FtbCA8IDQuMDcsXG4gICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvaXNzdWVzLzY4NTIgKilcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRUMuQ2xhc3NfZXhwciAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjbF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc19maWVsZCAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBjZl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0eV9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5DbGFzc190eXBlX2ZpZWxkIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGN0Zl9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Db3JlX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wdHlwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkV4cHJlc3Npb24gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wZXhwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLk1vZHVsZV9leHByIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucG1vZF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5Nb2R1bGVfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBtdHlfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuUGF0dGVybiAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBwYXRfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuU2lnbmF0dXJlX2l0ZW0gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuICB8IEVDLlN0cnVjdHVyZV9pdGVtIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cbiAgfCBFQy5QcHhfaW1wb3J0IC0+XG4gICAgICAoKiBJbnNlcnQgdGhlIGVycm9yIGluIHRoZSB0eXBlIGRlY2wgbWFuaWZlc3QgKilcbiAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9XG4gICAgICAgIFNvbWUgKEFzdF9idWlsZGVyLkRlZmF1bHQucHR5cF9leHRlbnNpb24gfmxvYyBleHRlbnNpb24pXG4gICAgICBpblxuICAgICAgeyBvcmlnaW5hbF9ub2RlIHdpdGggcHR5cGVfbWFuaWZlc3QgfVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gPVxuICBsZXQgZXJyb3IgPSBleG5fdG9fbG9jX2Vycm9yIGV4biBpblxuICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gIGxldCBleHRlbnNpb24gPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgKGV4dGVuc2lvbiwgbG9jKVxuXG5sZXQgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXhuID1cbiAgbGV0IGV4dGVuc2lvbiwgbG9jID0gZXhuX3RvX2V4dGVuc2lvbiBleG4gaW5cbiAgd3JhcF9leHRlbnNpb24gfmxvYyBjb250ZXh0IG9yaWdpbmFsX25vZGUgZXh0ZW5zaW9uXG5cbmxldCBleG5fdG9fc3RyaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCBleG5fdG9fc2lnaSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG5cbmxldCByZWMgbWFwX25vZGVfcmVjIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBsb2MgYmFzZV9jdHh0IHggfmVtYmVkX2Vycm9ycyA9XG4gIGxldCBjdHh0ID1cbiAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvYzpsb2MgfmJhc2U6YmFzZV9jdHh0ICgpXG4gIGluXG4gIG1hdGNoIEVDLmdldF9leHRlbnNpb24gY29udGV4dCB4IHdpdGhcbiAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgfCBTb21lIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAodHJ5XG4gICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4pKSlcbiAgICAgID4+PSBmdW4gY29udmVydGVkIC0+XG4gICAgICBtYXRjaCBjb252ZXJ0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IHN1cGVyX2NhbGwgYmFzZV9jdHh0IHhcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgRUMubWVyZ2VfYXR0cmlidXRlc19yZXMgY29udGV4dCB4IGF0dHJzXG4gICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICA+Pj0gZnVuIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzKVxuXG5sZXQgbWFwX25vZGUgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+aG9vayB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4bikpKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHRcbiAgICAgICAgICAgIChFQy5tZXJnZV9hdHRyaWJ1dGVzIGNvbnRleHQgeCBhdHRycylcbiAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICA+PnwgZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBsb2MgKFNpbmdsZSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgZ2VuZXJhdGVkX2NvZGUpXG5cbmxldCByZWMgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rIH5lbWJlZF9lcnJvcnNcbiAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByZXR1cm4gW11cbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhlc2UgdHdvIGxldHMgZm9yY2UgdGhlIGV2YWx1YXRpb24gb3JkZXIsIHNvIHRoYXQgZXJyb3JzIGFyZSByZXBvcnRlZCBpbiB0aGVcbiAgICAgICAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgZmlsZS4gKilcbiAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGdldF9sb2MgeCBpblxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dFxuICAgICAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgV2l0aF9lcnJvcnMucmV0dXJuIChTb21lIFsgZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuIF0pKVxuICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4ID4+PSBmdW4geCAtPlxuICAgICAgICAgICAgICBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICA+PnwgZnVuIGwgLT4geCA6OiBsXG4gICAgICAgICAgfCBTb21lIGNvbnZlcnRlZCAtPlxuICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgY29udmVydGVkIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICAgICAgICA+Pj0gZnVuIGdlbmVyYXRlZF9jb2RlIC0+XG4gICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgY29udGV4dCBleHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAoTWFueSBnZW5lcmF0ZWRfY29kZSk7XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gY29kZSAtPiBnZW5lcmF0ZWRfY29kZSBAIGNvZGUpKVxuXG5sZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG5sZXQgdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnMgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICBtYXRjaFxuICAgIExpc3QubWFwIHNwZWNpYWxfZnVuY3Rpb25zXG4gICAgICB+ZjooZnVuIHsgUnVsZS5TcGVjaWFsX2Z1bmN0aW9uLmlkZW50OyBleHBhbmQ7IF8gfSAtPiAoaWRlbnQsIGV4cGFuZCkpXG4gICAgKCogV2UgZXhwZWN0IHRoZSBsb29rdXAgdG8gZmFpbCBtb3N0IG9mIHRoZSB0aW1lLCBieSBtYWtpbmcgdGhlIHRhYmxlIGJpZyAoYW5kXG4gICAgICAgc3BhcnNlKSwgd2UgbWFrZSBpdCBtb3JlIGxpa2VseSB0byBmYWlsIHF1aWNrbHkgKilcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0IH5zaXplOihtYXggMTAyNCAoTGlzdC5sZW5ndGggc3BlY2lhbF9mdW5jdGlvbnMgKiAyKSlcbiAgd2l0aFxuICB8IE9rIHRhYmxlIC0+IHRhYmxlXG4gIHwgRXJyb3IgaWRlbnQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkNvbnRleHRfZnJlZS5WMS5tYXBfdG9wX2Rvd246ICVzIHByZXNlbnQgdHdpY2UgaW4gbGlzdCBvZiBzcGVjaWFsIFxcXG4gICAgICAgICBmdW5jdGlvbnNcIlxuICAgICAgICAoTGlzdC5maW5kX21hcF9leG4gc3BlY2lhbF9mdW5jdGlvbnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgaWYgUG9seS5lcXVhbCByLmlkZW50IGlkZW50IHRoZW4gU29tZSByLm5hbWUgZWxzZSBOb25lKSlcblxuKCogW2dldF9ncm91cCBhdHRyIGxdIHJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZm9yIGVhY2hcbiAgIG5vZGUgaW4gW2xdLlxuICAgSWYgW2xdIGlzIGVtcHR5IG9yIGlmIG5vbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXZlIGFuIGF0dHJpYnV0ZSBhdHRhY2hlZCxcbiAgIFtnZXRfZ3JvdXBdIHJldHVybnMgW05vbmVdLlxuICAgSWYgW2xdIGlzIG5vdCBlbXB0eSBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBub2RlcyBpbiBbbF0gaGFzIGFuIGF0dHJpYnVlXG4gICBhdHRhY2hlZCwgW2dldF9ncm91cF0gcmV0dXJucyB0aGUgZXF1aXZhbGVudCBvZlxuICAgW1NvbWUgKExpc3QubWFwIH5mOihBdHRyaWJ1dGUuZ2V0IGF0dHIpIGwpXS4gKilcbmxldCByZWMgZ2V0X2dyb3VwIGF0dHIgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBOb25lXG4gIHwgeCA6OiBsIC0+IChcbiAgICAgIGdldF9ncm91cCBhdHRyIGwgPj49IGZ1biBncm91cCAtPlxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgYXR0ciB4IHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lID4+fCBmdW4gYXR0cjIgLT5cbiAgICAgIG1hdGNoIChhdHRyMiwgZ3JvdXApIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICB8IE5vbmUsIFNvbWUgdmFscyAtPiBTb21lIChOb25lIDo6IHZhbHMpXG4gICAgICB8IFNvbWUgdmFsdWUsIE5vbmUgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiBMaXN0Lm1hcCBsIH5mOihmdW4gXyAtPiBOb25lKSlcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSB2YWxzIC0+IFNvbWUgKFNvbWUgdmFsdWUgOjogdmFscykpXG5cbigqIFNhbWUgYXMgW0xpc3QucmV2XSB0aGVuIFtMaXN0LmNvbmNhdF0gYnV0IGV4cGVjdGluZyB0aGUgaW5wdXQgdG8gYmUgb2YgbGVuZ3RoIDw9IDIgKilcbmxldCByZXZfY29uY2F0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IFsgeCBdIC0+IHhcbiAgfCBbIHg7IHkgXSAtPiB5IEAgeFxuICB8IGwgLT4gTGlzdC5jb25jYXQgKExpc3QucmV2IGwpXG5cbmxldCBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgc29ydF9hdHRyX2lubGluZSBsID1cbiAgTGlzdC5zb3J0IGwgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgU3RyaW5nLmNvbXBhcmVcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGEpXG4gICAgICAgIChSdWxlLkF0dHJfaW5saW5lLmF0dHJfbmFtZSBiKSlcblxubGV0IGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgPVxuICBFcnJvclxuICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgIFwiQSBjb250ZXh0LWZyZWUgcnVsZSBkZWxldGVkIG9yIGFkZGVkIGF0dHJpYnVlcyBvZiBhIHN0ci9zaWcgaXRlbVwiLFxuICAgICAgW10gKVxuXG4oKiBSZXR1cm5zIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhdHRyaWJ1dGUgaGFuZGxlcnMuIFdlIGRvbid0IHJlbW92ZSB0aGVzZSBhdHRyaWJ1dGVzLCBhc1xuICAgYW5vdGhlciBwYXNzIG1pZ2h0IGludGVycHJldCB0aGVtIGxhdGVyLiBGb3IgaW5zdGFuY2UgYm90aCBwcHhfZGVyaXZpbmcgYW5kXG4gICBwcHhsaWJfZGVyaXZpbmcgaW50ZXJwcmV0cyBbQEBkZXJpdmluZ10gYXR0cmlidXRlcy5cblxuICAgVGhpcyBjb21wbGV4aXR5IGlzIGhvcnJpYmxlLCBidXQgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgY2FyZSBhcyBbYXR0cnNdIGlzIGFsd2F5cyBhIGxpc3RcbiAgIG9mIG9uZSBlbGVtZW50OyBpdCBvbmx5IGhhcyBbQEBkZXJpdmluZ10uXG4qKVxubGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRycyByZiB+aXRlbXMgfmV4cGFuZGVkX2l0ZW1zIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgfmNvbnZlcnRfZXhuID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSlcbiAgICB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5UIGdyb3VwKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGl0ZW1zID4+PSBmdW4gZzEgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgZXhwYW5kZWRfaXRlbXMgPj49IGZ1biBnMiAtPlxuICAgICAgbWF0Y2ggKGcxLCBnMikgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IHJldHVybiBhY2NcbiAgICAgIHwgTm9uZSwgU29tZSBfIHwgU29tZSBfLCBOb25lIC0+XG4gICAgICAgICAgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6YWNjXG4gICAgICB8IFNvbWUgdmFsdWVzLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTpncm91cC5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBncm91cC5leHBhbmQgfmN0eHQgcmYgZXhwYW5kZWRfaXRlbXMgdmFsdWVzIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5jb252ZXJ0X2V4biB+aXRlbSB+ZXhwYW5kZWRfaXRlbSB+bG9jIH5iYXNlX2N0eHRcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgTGlzdC5mb2xkX2xlZnQgYXR0cnMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9pbmxpbmUuVCBhKSAtPlxuICAgICAgYWNjID4+PSBmdW4gYWNjIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBpdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcxIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZSwgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6YS5leHBlY3QgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBleHBlY3RfaXRlbXMgPSBhLmV4cGFuZCB+Y3R4dCBleHBhbmRlZF9pdGVtIHZhbHVlIGluXG4gICAgICAgICAgICByZXR1cm4gKGV4cGVjdF9pdGVtcyA6OiBhY2MpXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvcl9pdGVtID0gWyBjb252ZXJ0X2V4biBleG4gXSBpblxuICAgICAgICAgICAgcmV0dXJuIChlcnJvcl9pdGVtIDo6IGFjYykpKVxuXG5tb2R1bGUgRXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIGYgOiAnYS4gJ2EgQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQudCAtPiBMb2NhdGlvbi50IC0+ICdhIGxpc3QgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG5lbmRcblxuY2xhc3MgbWFwX3RvcF9kb3duID8oZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3ApXG4gID8oZ2VuZXJhdGVkX2NvZGVfaG9vayA9IEdlbmVyYXRlZF9jb2RlX2hvb2subm9wKSA/KGVtYmVkX2Vycm9ycyA9IGZhbHNlKSBydWxlc1xuICA9XG4gIGxldCBob29rID0gZ2VuZXJhdGVkX2NvZGVfaG9vayBpblxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gICAgUnVsZS5maWx0ZXIgU3BlY2lhbF9mdW5jdGlvbiBydWxlcyB8PiB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9uc1xuICBpblxuICBsZXQgY29uc3RhbnRzID1cbiAgICBSdWxlLmZpbHRlciBDb25zdGFudCBydWxlc1xuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGMgOiBSdWxlLkNvbnN0YW50LnQpIC0+ICgoYy5zdWZmaXgsIGMua2luZCksIGMuZXhwYW5kKSlcbiAgICB8PiBIYXNodGJsLm9mX2FsaXN0X2V4blxuICBpblxuICBsZXQgZXh0ZW5zaW9ucyA9IFJ1bGUuZmlsdGVyIEV4dGVuc2lvbiBydWxlcyBpblxuICBsZXQgY2xhc3NfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZXhwciBleHRlbnNpb25zXG4gIGFuZCBjbGFzc19maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNvcmVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY29yZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGV4cHJlc3Npb24gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmV4cHJlc3Npb24gZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV9leHByIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBwYXR0ZXJuID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5wYXR0ZXJuIGV4dGVuc2lvbnNcbiAgYW5kIHNpZ25hdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zaWduYXR1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc3RydWN0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgcHB4X2ltcG9ydCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuUHB4X2ltcG9ydCBleHRlbnNpb25zIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbHMsIGF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbHMsIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIHw+IFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMsIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dHMsIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dHMsIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZXh0IHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbnMsIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbnMsIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19leGNlcHRpb24gcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgbWFwX25vZGUgPSBtYXBfbm9kZSB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lID0gaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2lubGluZSA9IGhhbmRsZV9hdHRyX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcF93aXRoX2V4cGFuc2lvbl9jb250ZXh0X2FuZF9lcnJvcnMgYXMgc3VwZXJcblxuICAgICgqIE5vIHBvaW50IHJlY3Vyc2luZyBpbnRvIGV2ZXJ5IGxvY2F0aW9uICopXG4gICAgbWV0aG9kISBsb2NhdGlvbiBfIHggPSByZXR1cm4geFxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY29yZV90eXBlIGNvcmVfdHlwZSBzdXBlciNjb3JlX3R5cGUgeC5wdHlwX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnBhdHRlcm4gcGF0dGVybiBzdXBlciNwYXR0ZXJuIHgucHBhdF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSA9XG4gICAgICBsZXQgd2l0aF9jb250ZXh0ID1cbiAgICAgICAgKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+Pj0gZnVuIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIGUpXG4gICAgICAgIHwgU29tZSB7IGxvYzsgdHh0IH0gLT5cbiAgICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgRXhwcmVzc2lvblxuICAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIF1cbiAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmVcbiAgICAgICAgICAgID4+fCBmdW4gZSAtPlxuICAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgYmFzZV9jdHh0LCBlKVxuICAgICAgaW5cbiAgICAgIHdpdGhfY29udGV4dCA+Pj0gZnVuIChiYXNlX2N0eHQsIGUpIC0+XG4gICAgICBsZXQgZXhwYW5kZWQgPVxuICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgICAgbWFwX25vZGUgRUMuZXhwcmVzc2lvbiBleHByZXNzaW9uXG4gICAgICAgICAgICAgIChmdW4gXyBlIC0+IHJldHVybiBlKVxuICAgICAgICAgICAgICBlLnBleHBfbG9jIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgXyAtPiByZXR1cm4gZVxuICAgICAgaW5cbiAgICAgIGV4cGFuZGVkID4+PSBmdW4gZSAtPlxuICAgICAgbGV0IGV4cGFuZF9jb25zdGFudCBraW5kIGNoYXIgdGV4dCA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgY29uc3RhbnRzIChjaGFyLCBraW5kKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgIHwgU29tZSBleHBhbmQgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCAoZXhwYW5kIGUucGV4cF9sb2MgdGV4dClcbiAgICAgIGluXG4gICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfYXBwbHkgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgaWQ7IF8gfSBhcyBmdW5jKSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmNcbiAgICAgICAgICAgICAgICAgICAgYXJnc1xuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2lkZW50IGlkIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICB8IFNvbWUgcGF0dGVybiAtPiAoXG4gICAgICAgICAgICAgIGxldCBnZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgICAgICAgICAgdHJ5IHJldHVybiAocGF0dGVybiBlKVxuICAgICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGdlbmVyYXRlZF9jb2RlID4+PSBmdW4gZXhwciAtPlxuICAgICAgICAgICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2ludGVnZXIgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEludGVnZXIgYyBzXG4gICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgIHJldHVybiAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgIHwgUGV4cF9jb25zdGFudCAoUGNvbnN0X2Zsb2F0IChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBGbG9hdCBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgcmV0dXJuIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZXhuID0gZXhuX3RvX3N0cmkgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc3RyX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHN0cl9kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHJmLCB0ZHMpLCBQc3RyX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc3RyX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgdGUsIFBzdHJfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc3RydWN0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc3QgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG4gICAgbWV0aG9kISBzaWduYXR1cmUgYmFzZV9jdHh0IHNnID1cbiAgICAgIGxldCByZWMgd2l0aF9leHRyYV9pdGVtcyBpdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zIH5yZXN0XG4gICAgICAgICAgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbG9vcCAocmV2X2NvbmNhdCBleHRyYV9pdGVtcykgfmluX2dlbmVyYXRlZF9jb2RlOnRydWVcbiAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2suaW5zZXJ0X2FmdGVyIGhvb2sgU2lnbmF0dXJlX2l0ZW0gaXRlbS5wc2lnX2xvY1xuICAgICAgICAgICAgKE1hbnkgZXh0cmFfaXRlbXMpO1xuICAgICAgICBsZXQgb3JpZ2luYWxfcmVzdCA9IHJlc3QgaW5cbiAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIGV4cGVjdF9pdGVtcyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGV4cGVjdGVkID0gcmV2X2NvbmNhdCBleHBlY3RfaXRlbXMgaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSBpdGVtLnBzaWdfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICAgIENvZGVfbWF0Y2hlci5tYXRjaF9zaWduYXR1cmVfcmVzIG9yaWdpbmFsX3Jlc3QgfnBvcyB+ZXhwZWN0ZWRcbiAgICAgICAgICAgICAgfm1pc21hdGNoX2hhbmRsZXI6KGZ1biBsb2MgcmVwbCAtPlxuICAgICAgICAgICAgICAgIGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLmYgU2lnbmF0dXJlX2l0ZW0gbG9jIHJlcGwpXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6KCkpXG4gICAgICAgID4+fCBmdW4gKCkgLT4gaXRlbSA6OiAoZXh0cmFfaXRlbXMgQCByZXN0KVxuICAgICAgYW5kIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgbWF0Y2ggc2cgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiBbXVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiAoXG4gICAgICAgICAgICBsZXQgbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gaXRlbS5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jXG4gICAgICAgICAgICAgICAgICAgIH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgc2lnbmF0dXJlX2l0ZW0gfmN0eHQgZXh0XG4gICAgICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBpdGVtIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPiBpdGVtIDo6IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgKCgpLCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycykgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBhc3NlcnRfbm9fYXR0cmlidXRlcyBhdHRyczsgKilcbiAgICAgICAgICAgICAgICAgICAgbG9vcCBpdGVtcyB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZSA+Pj0gZnVuIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5yZXBsYWNlIGhvb2sgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHNpZ19sb2MgKE1hbnkgaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+fCBmdW4gcmVzdCAtPiBpdGVtcyBAIHJlc3QpXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gZXhwYW5kZWRfaXRlbSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2V4biA9IGV4bl90b19zaWdpIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHNpZ19kZXNjLCBleHBhbmRlZF9pdGVtLnBzaWdfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlIChyZiwgdGRzKSwgUHNpZ190eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IHJmXG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW1zOnRkcyB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgbXRkLCBQc2lnX21vZHR5cGUgZXhwX210ZCAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMgfml0ZW06bXRkXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGVjLCBQc2lnX2V4Y2VwdGlvbiBleHBfZWMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnMgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokKilcbiAgZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBVdGlsc1xuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXh0ZW5zaW9uIG9mICdhIEV4dGVuc2lvbi5Db250ZXh0LnRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBvZiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50XG5cbiAgbGV0IHBhcmVuIHBwIHBwZiB4ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIiglYSlcIiBwcCB4XG5cbiAgbGV0IHByaW50ZXIgOiB0eXBlIGEuIGEgdCAtPiBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlciAtPiBhIC0+IHVuaXQgPVxuICAgIGxldCBvcGVuIEV4dGVuc2lvbi5Db250ZXh0IGluXG4gICAgbGV0IG9wZW4gQXR0cmlidXRlLkZsb2F0aW5nLkNvbnRleHQgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2V4cHIgLT4gUHByaW50YXN0LmNsYXNzX2V4cHJcbiAgICB8IEV4dGVuc2lvbiBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlIC0+IFBwcmludGFzdC5jbGFzc190eXBlXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENvcmVfdHlwZSAtPiBwYXJlbiBQcHJpbnRhc3QuY29yZV90eXBlXG4gICAgfCBFeHRlbnNpb24gRXhwcmVzc2lvbiAtPiBwYXJlbiBQcHJpbnRhc3QuZXhwcmVzc2lvblxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV9leHByIC0+IFBwcmludGFzdC5tb2R1bGVfZXhwclxuICAgIHwgRXh0ZW5zaW9uIE1vZHVsZV90eXBlIC0+IFBwcmludGFzdC5tb2R1bGVfdHlwZVxuICAgIHwgRXh0ZW5zaW9uIFBhdHRlcm4gLT4gcGFyZW4gUHByaW50YXN0LnBhdHRlcm5cbiAgICB8IEV4dGVuc2lvbiBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEV4dGVuc2lvbiBQcHhfaW1wb3J0IC0+IFBwcmludGFzdC50eXBlX2RlY2xhcmF0aW9uXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU3RydWN0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgU2lnbmF0dXJlX2l0ZW0gLT4gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfZmllbGQgLT4gUHByaW50YXN0LmNsYXNzX2ZpZWxkXG4gICAgfCBGbG9hdGluZ19hdHRyaWJ1dGUgQ2xhc3NfdHlwZV9maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfdHlwZV9maWVsZFxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlbWVudCA9IHN0cnVjdFxuICB0eXBlIGRhdGEgPVxuICAgIHwgVmFsdWVzIDpcbiAgICAgICAgJ2EgQ29udGV4dC50ICogJ2EgQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2suc2luZ2xlX29yX21hbnlcbiAgICAgICAgLT4gZGF0YVxuICAgIHwgVGV4dCBvZiBzdHJpbmdcblxuICB0eXBlIHQgPSB7IHN0YXJ0IDogTGV4aW5nLnBvc2l0aW9uOyBzdG9wIDogTGV4aW5nLnBvc2l0aW9uOyBkYXRhIDogZGF0YSB9XG5cbiAgbGV0IG1ha2UgfmNvbnRleHQgfnN0YXJ0IH5zdG9wIH5yZXBsICgpID1cbiAgICB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVmFsdWVzIChjb250ZXh0LCByZXBsKSB9XG5cbiAgbGV0IG1ha2VfdGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPSB7IHN0YXJ0OyBzdG9wOyBkYXRhID0gVGV4dCByZXBsIH1cblxuICBsZXQgdGV4dCBibG9jayA9XG4gICAgbWF0Y2ggYmxvY2suZGF0YSB3aXRoXG4gICAgfCBUZXh0IHMgLT4gc1xuICAgIHwgVmFsdWVzIChjb250ZXh0LCBnZW5lcmF0ZWQpIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgcHJpbnRlciA9IENvbnRleHQucHJpbnRlciBjb250ZXh0IGluXG4gICAgICAgICAgbWF0Y2ggZ2VuZXJhdGVkIHdpdGhcbiAgICAgICAgICB8IFNpbmdsZSB4IC0+IFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiIHByaW50ZXIgeFxuICAgICAgICAgIHwgTWFueSBsIC0+XG4gICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgKGZ1biBwcGYgbCAtPlxuICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRlciBwcGYgeDtcbiAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKSlcbiAgICAgICAgICAgICAgICBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc193cyA9IGZ1bmN0aW9uICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UgaW5cbiAgICAgICAgbGV0IHN0cmlwX3dzIHMgaSBsZW4gPVxuICAgICAgICAgIGxldCBsZW4gPSByZWYgbGVuIGluXG4gICAgICAgICAgd2hpbGUgIWxlbiA+IDAgJiYgaXNfd3Mgcy5baSArICFsZW4gLSAxXSBkb1xuICAgICAgICAgICAgbGVuIDo9ICFsZW4gLSAxXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBTdHJpbmcuc3ViIHMgfnBvczppIH5sZW46IWxlblxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGxvb3AgcyBwb3MgPVxuICAgICAgICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHMgdGhlbiBbXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBpZHggPVxuICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgcyBwb3MgJ1xcbicgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzdHJpcF93cyBzIHBvcyAoaWR4IC0gcG9zKSA6OiBcIlxcblwiIDo6IGxvb3AgcyAoaWR4ICsgMSlcbiAgICAgICAgaW5cbiAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKGxvb3AgcyAwKVxuZW5kXG5cbm9wZW4gUmVwbGFjZW1lbnRcblxubW9kdWxlIFJlcGxhY2VtZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXBsYWNlbWVudC50IGxpc3RcblxuICAoKiBNZXJnZSBsb2NhdGlvbnMgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBPdmVybGFwcGluZyBsb2NhdGlvbnMgYXJlIG1lcmdlZCBpbnRvIG9uZS4gVGhlXG4gICAgIHJlc3VsdCBpcyBzb3J0ZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBlbmQuICopXG4gIGxldCBjaGVja19hbmRfc29ydCB+aW5wdXRfZmlsZW5hbWUgfmlucHV0X25hbWUgcmVwbHMgPVxuICAgIExpc3QuaXRlciByZXBscyB+ZjooZnVuIHJlcGwgLT5cbiAgICAgICAgaWZcbiAgICAgICAgICBTdHJpbmcuKCA8PiApIHJlcGwuc3RhcnQucG9zX2ZuYW1lIGlucHV0X25hbWVcbiAgICAgICAgICB8fCBTdHJpbmcuKCA8PiApIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVuYW1lKVxuICAgICAgICAgICAgXCJwcHhsaWJfZHJpdmVyOiB0aGUgcmV3cml0aW5nIGNvbnRhaW5zIHBhcnRzIGZyb20gYW5vdGhlciBmaWxlLlxcblxcXG4gICAgICAgICAgICAgSXQgaXMgdG9vIGNvbXBsaWNhdGVkIHRvIHJlY29uY2lsZSBpdCB3aXRoIHRoZSBzb3VyY2U6ICVzIG9yICVzIFxcXG4gICAgICAgICAgICAgYW5kICVzXCJcbiAgICAgICAgICAgIHJlcGwuc3RhcnQucG9zX2ZuYW1lIHJlcGwuc3RvcC5wb3NfZm5hbWUgaW5wdXRfbmFtZTtcbiAgICAgICAgYXNzZXJ0IChyZXBsLnN0YXJ0LnBvc19jbnVtIDw9IHJlcGwuc3RvcC5wb3NfY251bSkpO1xuICAgIGxldCByZXBscyA9XG4gICAgICBMaXN0LnNvcnQgcmVwbHMgfmNtcDooZnVuIGEgYiAtPlxuICAgICAgICAgIGxldCBkID0gY29tcGFyZSBhLnN0YXJ0LnBvc19jbnVtIGIuc3RvcC5wb3NfY251bSBpblxuICAgICAgICAgIGlmIGQgPSAwIHRoZW5cbiAgICAgICAgICAgICgqIFB1dCB0aGUgbGFyZ2VzdCBmaXJzdCwgc28gdGhhdCB0aGUgZm9sbG93aW5nIFtmaWx0ZXJdIGZ1bmN0aW9ucyBhbHdheXMgcGlja3MgdXBcbiAgICAgICAgICAgICAgIHRoZSBsYXJ0ZXN0IGZpcnN0IHdoZW4gc2V2ZXJhbCBnZW5lcmF0ZWQgcmVwbHMgc3RhcnQgYXQgdGhlIHNhbWUgcG9zaXRpb24gKilcbiAgICAgICAgICAgIGNvbXBhcmUgYi5zdG9wLnBvc19jbnVtIGEuc3RvcC5wb3NfY251bVxuICAgICAgICAgIGVsc2UgZClcbiAgICBpblxuICAgIGxldCByZWMgZmlsdGVyIHByZXYgcmVwbHMgfmFjYyA9XG4gICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IChwcmV2IDo6IGFjYylcbiAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgIGlmIHByZXYuc3RvcC5wb3NfY251bSA+IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID49IHJlcGwuc3RvcC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgICgqIFtyZXBsXSBpcyBpbmNsdWRlZCBpbiBbcHJldl0gPT4gc2tpcCBbcmVwbF0gKilcbiAgICAgICAgICAgICAgZmlsdGVyIHByZXYgcmVwbHMgfmFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IGxvY2F0aW9ucyBvZiBnZW5lcmF0ZWQgY29kZSBhcmUgb3ZlcmxhcHBpbmcsIFxcXG4gICAgICAgICAgICAgICAgIGNhbm5vdCByZWNvbmNpbGVcIlxuICAgICAgICAgICAgICAgIH5sb2M6XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxvY19zdGFydCA9IHJlcGwuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgIGxvY19lbmQgPSBwcmV2LnN0b3A7XG4gICAgICAgICAgICAgICAgICAgIGxvY19naG9zdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgZmlsdGVyIHJlcGwgcmVwbHMgfmFjYzoocHJldiA6OiBhY2MpXG4gICAgaW5cbiAgICBtYXRjaCByZXBscyB3aXRoIFtdIC0+IFtdIHwgcmVwbCA6OiByZXBscyAtPiBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOltdXG5lbmRcblxubGV0IGNvdW50X25ld2xpbmVzIHMgPVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIFN0cmluZy5pdGVyIHMgfmY6KGZ1bmN0aW9uICdcXG4nIC0+IG4gOj0gIW4gKyAxIHwgXyAtPiAoKSk7XG4gICFuXG5cbmxldCBnZW5lcmF0ZWRfY29kZV9iZWdpbiA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEJFR0lOIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxubGV0IGdlbmVyYXRlZF9jb2RlX2VuZCA9XG4gIFwiKCogLS0tLS17IEdFTkVSQVRFRCBDT0RFIEVORCAgIH0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXCJcblxudHlwZSBtb2RlID0gVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzXG50eXBlIHRhcmdldCA9IE91dHB1dCBvZiBtb2RlIHwgQ29ycmVjdGVkXG5cbmxldCBza2lwX2JsYW5rX2VvbCBjb250ZW50cyAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSA9XG4gIGxldCByZWMgbG9vcCBjbnVtID1cbiAgICBpZiBjbnVtID0gU3RyaW5nLmxlbmd0aCBjb250ZW50cyB0aGVuIHsgcG9zIHdpdGggcG9zX2NudW0gPSBjbnVtIH1cbiAgICBlbHNlXG4gICAgICBtYXRjaCBjb250ZW50cy5bY251bV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXHInIC0+IGxvb3AgKGNudW0gKyAxKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcyB3aXRoXG4gICAgICAgICAgICBwb3NfY251bSA9IGNudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyAxO1xuICAgICAgICAgICAgcG9zX2JvbCA9IGNudW0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgIHwgXyAtPiBwb3NcbiAgaW5cbiAgbG9vcCBwb3MucG9zX2NudW1cblxubGV0IHdpdGhfb3V0cHV0IH5zdHlsZXIgfihraW5kIDogS2luZC50KSBmbiB+ZiA9XG4gIG1hdGNoIHN0eWxlciB3aXRoXG4gIHwgTm9uZSAtPiB3aXRoX291dHB1dCBmbiB+YmluYXJ5OmZhbHNlIH5mXG4gIHwgU29tZSBjbWQgLT5cbiAgICAgIGxldCB0bXBfZm4sIG9jID1cbiAgICAgICAgU3RkbGliLkZpbGVuYW1lLm9wZW5fdGVtcF9maWxlIFwicHB4bGliX2RyaXZlclwiXG4gICAgICAgICAgKG1hdGNoIGtpbmQgd2l0aCBJbXBsIC0+IFwiLm1sXCIgfCBJbnRmIC0+IFwiLm1saVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBjbWQgPVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzJXNcIiBjbWRcbiAgICAgICAgICAoU3RkbGliLkZpbGVuYW1lLnF1b3RlIHRtcF9mbilcbiAgICAgICAgICAobWF0Y2ggZm4gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIGZuIC0+IFwiID4gXCIgXiBTdGRsaWIuRmlsZW5hbWUucXVvdGUgZm4pXG4gICAgICBpblxuICAgICAgbGV0IG4gPVxuICAgICAgICBFeG4ucHJvdGVjdHggdG1wX2ZuIH5maW5hbGx5OlN0ZGxpYi5TeXMucmVtb3ZlIH5mOihmdW4gXyAtPlxuICAgICAgICAgICAgRXhuLnByb3RlY3R4IG9jIH5maW5hbGx5OmNsb3NlX291dCB+ZjtcbiAgICAgICAgICAgIFN0ZGxpYi5TeXMuY29tbWFuZCBjbWQpXG4gICAgICBpblxuICAgICAgaWYgbiA8PiAwIHRoZW4gKFxuICAgICAgICBQcmludGYuZXByaW50ZiBcImNvbW1hbmQgZXhpdGVkIHdpdGggY29kZSAlZDogJXNcXG5cIiBuIGNtZDtcbiAgICAgICAgU3RkbGliLmV4aXQgMSlcblxubGV0IHJlY29uY2lsZSA/c3R5bGVyIChyZXBscyA6IFJlcGxhY2VtZW50cy50KSB+a2luZCB+Y29udGVudHMgfmlucHV0X2ZpbGVuYW1lXG4gICAgfm91dHB1dCB+aW5wdXRfbmFtZSB+dGFyZ2V0ID1cbiAgbGV0IHJlcGxzID0gUmVwbGFjZW1lbnRzLmNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyBpblxuICBsZXQgb3V0cHV0X25hbWUgPSBtYXRjaCBvdXRwdXQgd2l0aCBOb25lIC0+IFwiPHN0ZG91dD5cIiB8IFNvbWUgZm4gLT4gZm4gaW5cbiAgd2l0aF9vdXRwdXQgb3V0cHV0IH5zdHlsZXIgfmtpbmQgfmY6KGZ1biBvYyAtPlxuICAgICAgbGV0IGNvcHlfaW5wdXQgcG9zIH51cF90byB+bGluZSB+bGFzdF9pc190ZXh0IH5pc190ZXh0ID1cbiAgICAgICAgbGV0IHBvcyA9IGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvcyBpblxuICAgICAgICBpZiBwb3MucG9zX2NudW0gPCB1cF90byB0aGVuIChcbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuJSpzXCIgcG9zLnBvc19sbnVtIGlucHV0X25hbWVcbiAgICAgICAgICAgICAgICAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyB8IENvcnJlY3RlZCAtPiAoKSk7XG4gICAgICAgICAgb3V0cHV0X3N1YnN0cmluZyBvYyBjb250ZW50cyB+cG9zOnBvcy5wb3NfY251bVxuICAgICAgICAgICAgfmxlbjoodXBfdG8gLSBwb3MucG9zX2NudW0pO1xuICAgICAgICAgIGxldCBsaW5lID0gcmVmIChsaW5lICsgMSkgaW5cbiAgICAgICAgICBmb3IgaSA9IHBvcy5wb3NfY251bSB0byB1cF90byAtIDEgZG9cbiAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgY29udGVudHMuW2ldICdcXG4nIHRoZW4gbGluZSA6PSAhbGluZSArIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBsaW5lID0gIWxpbmUgaW5cbiAgICAgICAgICBpZiAobm90IGlzX3RleHQpICYmIENoYXIuKCA8PiApIGNvbnRlbnRzLlt1cF90byAtIDFdICdcXG4nIHRoZW4gKFxuICAgICAgICAgICAgb3V0cHV0X2NoYXIgb2MgJ1xcbic7XG4gICAgICAgICAgICBsaW5lICsgMSlcbiAgICAgICAgICBlbHNlIGxpbmUpXG4gICAgICAgIGVsc2UgbGluZVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAoY29weV9pbnB1dCBwb3MgfnVwX3RvOihTdHJpbmcubGVuZ3RoIGNvbnRlbnRzKSB+bGluZVxuICAgICAgICAgICAgICAgICB+bGFzdF9pc190ZXh0IH5pc190ZXh0OmZhbHNlXG4gICAgICAgICAgICAgICAgOiBpbnQpXG4gICAgICAgIHwgcmVwbCA6OiByZXBscyAtPlxuICAgICAgICAgICAgbGV0IGlzX3RleHQgPVxuICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBjb3B5X2lucHV0IHBvcyB+dXBfdG86cmVwbC5zdGFydC5wb3NfY251bSB+bGluZSB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICAgICAgfmlzX3RleHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgbGV0IGxpbmUgPVxuICAgICAgICAgICAgICBtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiIyAlZCAlU1xcblwiIChsaW5lICsgMSkgb3V0cHV0X25hbWU7XG4gICAgICAgICAgICAgICAgICBsaW5lICsgMVxuICAgICAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbjtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgQ29ycmVjdGVkIC0+IGxpbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICBsZXQgbGluZSA9IGxpbmUgKyBjb3VudF9uZXdsaW5lcyBzIGluXG4gICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzIH5sYXN0X2lzX3RleHQ6aXNfdGV4dFxuICAgICAgYW5kIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSAocG9zIDogTGV4aW5nLnBvc2l0aW9uKSByZXBsc1xuICAgICAgICAgIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICBtYXRjaCByZXBscyB3aXRoXG4gICAgICAgIHwgW10gLT4gZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHRcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzJyAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgIGlmIGxhc3RfaXNfdGV4dCB0aGVuIHBvcyBlbHNlIHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIHBvc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHJlcGwuc3RhcnQucG9zX2NudW0gdGhlblxuICAgICAgICAgICAgICBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcyA9IFJlcGxhY2VtZW50LnRleHQgcmVwbCBpblxuICAgICAgICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIHM7XG4gICAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgICAgbGV0IGxhc3RfaXNfdGV4dCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVwbC5kYXRhIHdpdGggVGV4dCBfIC0+IHRydWUgfCBWYWx1ZXMgXyAtPiBmYWxzZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcmVwbC5zdG9wIHJlcGxzJyB+bGFzdF9pc190ZXh0XG4gICAgICBhbmQgZW5kX2NvbnNlY3V0aXZlX3JlcGxzIGxpbmUgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQgPVxuICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2VuZCk7XG4gICAgICAgIGxvb3AgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IGlucHV0X25hbWU7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgeyBzdGFydCA9IHsgcG9zX2NudW0gPSAwOyBfIH07IF8gfSA6OiBfIC0+XG4gICAgICAgICAgKG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgfCBPdXRwdXQgVXNpbmdfbGluZV9kaXJlY3RpdmVzIHwgQ29ycmVjdGVkIC0+ICgpXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICAgIFByaW50Zi5mcHJpbnRmIG9jIFwiJXNcXG5cIiBnZW5lcmF0ZWRfY29kZV9iZWdpbik7XG4gICAgICAgICAgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlXG4gICAgICB8IF8gLT4gbG9vcCAxIHBvcyByZXBscyB+bGFzdF9pc190ZXh0OmZhbHNlKVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIG5leHRfaWQgOiBpbnQ7XG4gIG11dGFibGUgYmluZGluZ3MgOiBQYXJzZXRyZWUudmFsdWVfYmluZGluZyBsaXN0O1xufVxuXG5sZXQgY3JlYXRlICgpID0geyBuZXh0X2lkID0gMDsgYmluZGluZ3MgPSBbXSB9XG5cbmxldCBzYW5pdGl6ZSB0IGUgPVxuICBtYXRjaCB0LmJpbmRpbmdzIHdpdGhcbiAgfCBbXSAtPiBlXG4gIHwgYmluZGluZ3MgLT5cbiAgICAgIGxldCAobW9kdWxlIEFzdCkgPSBBc3RfYnVpbGRlci5tYWtlIGUucGV4cF9sb2MgaW5cbiAgICAgIEFzdC5wZXhwX2xldCBOb25yZWN1cnNpdmUgYmluZGluZ3MgZVxuXG5sZXQgcXVvdGUgdCAoZSA6IGV4cHJlc3Npb24pID1cbiAgbGV0IGxvYyA9IGUucGV4cF9sb2MgaW5cbiAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgbG9jIGluXG4gIGxldCBuYW1lID0gXCJfX1wiIF4gSW50LnRvX3N0cmluZyB0Lm5leHRfaWQgaW5cbiAgbGV0IGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgICgqIE9wdGltaXplIGlkZW50aWZpZXIgcXVvdGluZyBieSBhdm9pZGluZyBjbG9zdXJlLlxuICAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwtcHB4L3BweF9kZXJpdmluZy9wdWxsLzI1Mi4gKilcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT4gKGUsIEFzdC5ldmFyIG5hbWUpXG4gICAgfCBfIC0+XG4gICAgICAgIGxldCBiaW5kaW5nX2V4cHIgPVxuICAgICAgICAgIEFzdC5wZXhwX2Z1biBOb2xhYmVsIE5vbmVcbiAgICAgICAgICAgIChsZXQgdW5pdCA9IEFzdF9idWlsZGVyLkRlZmF1bHQuTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIgaW5cbiAgICAgICAgICAgICBBc3QucHBhdF9jb25zdHJ1Y3QgdW5pdCBOb25lKVxuICAgICAgICAgICAgZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcXVvdGVkX2V4cHIgPSBBc3QuZWFwcGx5IChBc3QuZXZhciBuYW1lKSBbIEFzdC5ldW5pdCBdIGluXG4gICAgICAgIChiaW5kaW5nX2V4cHIsIHF1b3RlZF9leHByKVxuICBpblxuICBsZXQgYmluZGluZyA9XG4gICAgbGV0IHBhdCA9IEFzdC5wdmFyIG5hbWUgaW5cbiAgICBBc3QudmFsdWVfYmluZGluZyB+cGF0IH5leHByOmJpbmRpbmdfZXhwclxuICBpblxuICB0LmJpbmRpbmdzIDwtIGJpbmRpbmcgOjogdC5iaW5kaW5ncztcbiAgdC5uZXh0X2lkIDwtIHQubmV4dF9pZCArIDE7XG4gIHF1b3RlZF9leHByXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IG1rX2F0dHJfbm9sb2MgdHh0ID0gQXN0X2hlbHBlci5BdHRyLm1rIExvY2F0aW9uLnsgdHh0OyBsb2MgPSBub25lIH1cbmxldCBoaWRlX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uaGlkZVwiIChQU3RyIFtdKVxubGV0IGZvY3VzX2F0dHJpYnV0ZSA6IGF0dHJpYnV0ZSA9IG1rX2F0dHJfbm9sb2MgXCJtZXJsaW4uZm9jdXNcIiAoUFN0ciBbXSlcblxubGV0IGhpZGVfcGF0dGVybiAoeyBwcGF0X2F0dHJpYnV0ZXM7IF8gfSBhcyBwKSA9XG4gIHsgcCB3aXRoIHBwYXRfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBwYXRfYXR0cmlidXRlcyB9XG5cbmxldCBoaWRlX2V4cHJlc3Npb24gKHsgcGV4cF9hdHRyaWJ1dGVzOyBfIH0gYXMgZSkgPVxuICB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBoaWRlX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuXG5sZXQgZm9jdXNfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGZvY3VzX2F0dHJpYnV0ZSA6OiBwZXhwX2F0dHJpYnV0ZXMgfVxuIiwib3BlbiBJbXBvcnRcblxubW9kdWxlIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBlbXB0eSA6IHRcbiAgdmFsIGluc2VydCA6IG5vZGVfbmFtZTpzdHJpbmcgLT4gTG9jYXRpb24udCAtPiB0IC0+IHRcbiAgdmFsIHVuaW9uIDogdCAtPiB0IC0+IHRcblxuICB2YWwgY292ZXJlZF9ieSA6IHQgLT4gbG9jOkxvY2F0aW9uLnQgLT4gYm9vbFxuICAoKiogW2NvdmVyZWRfYnkgdCB+bG9jID0gdHJ1ZV0gaWZmIFt0XSBpcyBjb3ZlcmVkIGJ5IFtsb2NdICopXG5cbiAgdmFsIGZpbmRfb3V0c2lkZSA6IExvY2F0aW9uLnQgLT4gdCAtPiBzdHJpbmcgKiBMb2NhdGlvbi50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG1pbl9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIG1heF9wb3MgOiBMZXhpbmcucG9zaXRpb24gb3B0aW9uO1xuICAgIHJhbmdlcyA6IChzdHJpbmcgKiBMb2NhdGlvbi50KSBsaXN0O1xuICB9XG5cbiAgbGV0IGVtcHR5ID0geyBtaW5fcG9zID0gTm9uZTsgbWF4X3BvcyA9IE5vbmU7IHJhbmdlcyA9IFtdIH1cblxuICBsZXQgcmVjIGluc2VydCByYW5nZXMgKChub2RlX25hbWUsIG5vZGVfbG9jKSBhcyBub2RlKSA9XG4gICAgbWF0Y2ggcmFuZ2VzIHdpdGhcbiAgICB8IFtdIC0+IFsgbm9kZSBdXG4gICAgfCAoKHhfbmFtZSwgeF9sb2MpIGFzIHgpIDo6IHhzIC0+XG4gICAgICAgIGxldCBvcGVuIExvY2F0aW9uIGluXG4gICAgICAgIGlmIGNvbXBhcmVfcG9zIG5vZGVfbG9jLmxvY19zdGFydCB4X2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIG5vZGUgOjogeCA6OiB4c1xuICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcG9zIHhfbG9jLmxvY19zdGFydCBub2RlX2xvYy5sb2NfZW5kID49IDAgdGhlblxuICAgICAgICAgIHggOjogaW5zZXJ0IHhzIG5vZGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICAgICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4LCAlcyBvdmVybGFwcyB3aXRoICVzIGF0IGxvY2F0aW9uOkAuJWFcIlxuICAgICAgICAgICAgbm9kZV9uYW1lIHhfbmFtZSBMb2NhdGlvbi5wcmludCB4X2xvY1xuXG4gIGxldCBtaW5fcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWluX3BvcyBwMSBwMilcblxuICBsZXQgbWF4X3BvcyBwMSBwMiA9XG4gICAgbWF0Y2ggKHAxLCBwMikgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCAoU29tZSBfIGFzIHApLCBOb25lIHwgTm9uZSwgKFNvbWUgXyBhcyBwKSAtPiBwXG4gICAgfCBTb21lIHAxLCBTb21lIHAyIC0+IFNvbWUgKExvY2F0aW9uLm1heF9wb3MgcDEgcDIpXG5cbiAgbGV0IGxvbmdlc3RfZmlyc3QgbDEgbDIgfnN0b3BfYWZ0ZXIgPVxuICAgIGxldCByZWMgbG9vcCB4cyB5cyBuID1cbiAgICAgIG1hdGNoICh4cywgeXMsIG4pIHdpdGhcbiAgICAgIHwgW10sIF8sIF8gfCBfLCBfLCAwIC0+IChsMiwgbDEpXG4gICAgICB8IF8sIFtdLCBfIC0+IChsMSwgbDIpXG4gICAgICB8IF8gOjogeHMsIF8gOjogeXMsIG4gLT4gbG9vcCB4cyB5cyAobiAtIDEpXG4gICAgaW5cbiAgICBsb29wIGwxIGwyIHN0b3BfYWZ0ZXJcblxuICBsZXQgdW5pb24gdDEgdDIgPVxuICAgIGxldCBpbml0LCBsID0gbG9uZ2VzdF9maXJzdCB0MS5yYW5nZXMgdDIucmFuZ2VzIH5zdG9wX2FmdGVyOjQyIGluXG4gICAgbGV0IHJhbmdlcyA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6aW5zZXJ0IGluXG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgdDEubWluX3BvcyB0Mi5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgdDEubWF4X3BvcyB0Mi5tYXhfcG9zO1xuICAgICAgcmFuZ2VzO1xuICAgIH1cblxuICBsZXQgaW5zZXJ0IH5ub2RlX25hbWUgbG9jIHQgPVxuICAgIHtcbiAgICAgIG1pbl9wb3MgPSBtaW5fcG9zIChTb21lIGxvYy5sb2Nfc3RhcnQpIHQubWluX3BvcztcbiAgICAgIG1heF9wb3MgPSBtYXhfcG9zIChTb21lIGxvYy5sb2NfZW5kKSB0Lm1heF9wb3M7XG4gICAgICByYW5nZXMgPSBpbnNlcnQgdC5yYW5nZXMgKG5vZGVfbmFtZSwgbG9jKTtcbiAgICB9XG5cbiAgbGV0IGNvdmVyZWRfYnkgdCB+bG9jID1cbiAgICBtYXRjaCAodC5taW5fcG9zLCB0Lm1heF9wb3MpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBtaW5fcG9zLCBTb21lIG1heF9wb3MgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbWluX3BvcyBsb2MubG9jX3N0YXJ0ID49IDBcbiAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbWF4X3BvcyBsb2MubG9jX2VuZCA8PSAwXG4gICAgfCBfLCBfIC0+XG4gICAgICAgICgqIHRoZXJlIGFyZSBubyBvcGVuIHJhbmdlcyAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuICBsZXQgZmluZF9vdXRzaWRlIGxvYyB0ID1cbiAgICBMaXN0LmZpbmQgdC5yYW5nZXMgfmY6KGZ1biAoXywgbCkgLT5cbiAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19zdGFydCBsLmxvY19zdGFydCA+IDBcbiAgICAgICAgfHwgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgbC5sb2NfZW5kIDwgMClcbmVuZFxuXG5sZXQgcmVsb2NfcG10eV9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbXR5X2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtdHlfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG10eV9sb2MgPSB7IHJlcy5wbXR5X2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbXR5X2Rlc2MgPSBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgcmVsb2NfcG1vZF9mdW5jdG9ycyB4ID1cbiAgbGV0IG91dG1vc3RfbG9jID0geC5wbW9kX2xvYyBpblxuICBsZXQgcmVjIGF1eCB4ID1cbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIHJlcyA9PSBpbml0aWFsX3JlcyB0aGVuIHhcbiAgICAgICAgZWxzZSB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKFVuaXQsIHJlcykgfVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIGluaXRpYWxfcmVzKSAtPlxuICAgICAgICBsZXQgcmVzID0gYXV4IGluaXRpYWxfcmVzIGluXG4gICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgb3V0bW9zdF9sb2MgcmVzLnBtb2RfbG9jID0gMCB0aGVuXG4gICAgICAgICAgbGV0IGxvY19zdGFydCA9IG10eS5wbXR5X2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgbGV0IHJlcyA9IHsgcmVzIHdpdGggcG1vZF9sb2MgPSB7IHJlcy5wbW9kX2xvYyB3aXRoIGxvY19zdGFydCB9IH0gaW5cbiAgICAgICAgICB7IHggd2l0aCBwbW9kX2Rlc2MgPSBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgcmVzKSB9XG4gICAgICAgIGVsc2UgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICB8IF8gLT4geFxuICBpblxuICBhdXggeFxuXG5sZXQgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYyA9XG4gIExpc3QuZm9yX2FsbCB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxvYy5sb2NfZW5kIGF0dHIuYXR0cl9sb2MubG9jX2VuZCA+PSAwKVxuXG5sZXQgZmlsZSA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcbmxldCBzYW1lX2ZpbGVfc29fZmFyID0gcmVmIHRydWVcblxubGV0IHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGZuYW1lID1cbiAgKCogVE9ETzogcmVtb3ZlIHVzZXMgb2YgTG9jYXRpb24ubm9uZSBmcm9tIHRoZSBwcHhlcy4gKilcbiAgaWYgU3RyaW5nLmVxdWFsIGZuYW1lIFwiX25vbmVfXCIgdGhlbiB0cnVlICgqIGRvIG5vdGhpbmcgZm9yIG5vdy4gKilcbiAgZWxzZVxuICAgIG1hdGNoICFmaWxlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgZmlsZSA6PSBTb21lIGZuYW1lO1xuICAgICAgICB0cnVlXG4gICAgfCBTb21lIG9yaWdfZm5hbWUgLT5cbiAgICAgICAgU3RyaW5nLmVxdWFsIG9yaWdfZm5hbWUgZm5hbWVcbiAgICAgICAgfHxcbiAgICAgICAgKHNhbWVfZmlsZV9zb19mYXIgOj0gZmFsc2U7XG4gICAgICAgICBmYWxzZSlcblxubGV0IHNob3VsZF9pZ25vcmUgbG9jIGF0dHJzID1cbiAgKCogSWYgdGhlIGZpbGVuYW1lIGNoYW5nZWQsIHRoZW4gdGhlcmUgd2VyZSBsaW5lIGRpcmVjdGl2ZXMsIGFuZCB0aGUgbG9jYXRpb25zXG4gICAgIGFyZSBhbGwgbWVzc2VkIHVwLiAqKVxuICAobm90IChzdGF5ZWRfaW5fdGhlX3NhbWVfZmlsZSBsb2MubG9jX3N0YXJ0LnBvc19mbmFtZSkpXG4gIHx8ICgqIElnbm9yZSB0aGluZ3MgZXhwbGljaXRseSBtYXJrZWQuICopXG4gIExpc3QuZXhpc3RzXG4gICAgfmY6KGZ1biBhdHRyIC0+XG4gICAgICBTdHJpbmcuZXF1YWwgYXR0ci5hdHRyX25hbWUudHh0XG4gICAgICAgIE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlLmF0dHJfbmFtZS50eHQpXG4gICAgYXR0cnNcblxubGV0IHJlYyBleHRyYWN0X2NvbnN0cmFpbnQgZSA9XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSB8IFBleHBfY29lcmNlIChlLCBfLCBjdCkgLT4gU29tZSAoZSwgY3QpXG4gIHwgUGV4cF9uZXd0eXBlIChuYW1lLCBleHApIC0+XG4gICAgICBPcHRpb24ubWFwIChleHRyYWN0X2NvbnN0cmFpbnQgZXhwKSB+ZjooZnVuIChleHAsIGN0KSAtPlxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBlIHdpdGhcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlIChuYW1lLCBleHApO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IHsgZS5wZXhwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjdCApKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZG9fY2hlY2sgfm5vZGVfbmFtZSBub2RlX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzID1cbiAgaWYgbm90ICFzYW1lX2ZpbGVfc29fZmFyIHRoZW4gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgZWxzZSBpZiBub2RlX2xvYy5sb2NfZ2hvc3QgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnVuaW9uIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcbiAgZWxzZSBpZiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5jb3ZlcmVkX2J5IGNoaWxkcmVuc19sb2NzIH5sb2M6bm9kZV9sb2MgdGhlblxuICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmluc2VydCB+bm9kZV9uYW1lIG5vZGVfbG9jIHNpYmxpbmdzX2xvY3NcbiAgZWxzZVxuICAgIGxldCBjaGlsZF9uYW1lLCBjaGlsZF9sb2MgPVxuICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZmluZF9vdXRzaWRlIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgaW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzpub2RlX2xvY1xuICAgICAgXCJpbnZhbGlkIG91dHB1dCBmcm9tIHBweDpAIHRoaXMgJXMgaXMgYnVpbHQgZnJvbSBhJXMgd2hvc2UgbG9jYXRpb24gaXMgXFxcbiAgICAgICBvdXRzaWRlIG9mIHRoaXMgbm9kZSdzLkAuQ2hpbGQgJXMgZm91bmQgYXQ6QCAlYVwiXG4gICAgICBub2RlX25hbWVcbiAgICAgICgobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgY2hpbGRfbmFtZSAwIHdpdGhcbiAgICAgICB8ICdhJyB8ICdlJyB8ICdpJyB8ICdvJyB8ICd1JyAtPiBcIm4gXCJcbiAgICAgICB8IF8gLT4gXCIgXCIpXG4gICAgICBeIGNoaWxkX25hbWUpXG4gICAgICBjaGlsZF9uYW1lIExvY2F0aW9uLnByaW50IGNoaWxkX2xvY1xuXG5sZXQgZW5mb3JjZV9pbnZhcmlhbnRzIGZuYW1lID1cbiAgbGV0ICgpID0gZmlsZSA6PSBmbmFtZSBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICgqIFRPRE86IHdlIHNob3VsZCBnZW5lcmF0ZSBhIGNsYXNzIHdoaWNoIGVuZm9yY2VzIHRoZSBsb2NhdGlvbiBpbnZhcmlhbnQuXG4gICAgICAgQW5kIHRoZW4gd2Ugc2hvdWxkIG9ubHkgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgd2hlcmUgd2UgbmVlZCBhbiBlc2NhcGVcbiAgICAgICBoYXRjaCBiZWNhdXNlIHRoZSBwYXJzZXIgaXNuJ3QgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLlxuXG4gICAgICAgVGhhdCB3b3VsZCBlbnN1cmUgdGhhdCB3ZSBzdGF5IHVwIHRvIGRhdGUgYXMgdGhlIEFTVCBjaGFuZ2VzLiAqKVxuXG4gICAgbWV0aG9kISBsb25naWRlbnRfbG9jIHggc2libGluZ3MgPVxuICAgICAgaWYgeC5sb2MubG9jX2dob3N0IHRoZW4gc2libGluZ3NcbiAgICAgIGVsc2UgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWU6XCJpZGVudFwiIHgubG9jIHNpYmxpbmdzXG5cbiAgICBtZXRob2QhIHJvd19maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnByZl9sb2MgeC5wcmZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjcm93X2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInJvdyBmaWVsZFwiIHgucHJmX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9iamVjdF9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvZl9sb2MgeC5wb2ZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvYmplY3RfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib2JqZWN0IGZpZWxkXCIgeC5wb2ZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBiaW5kaW5nX29wIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNiaW5kaW5nX29wIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJiaW5kaW5nIG9wZXJhdG9yXCIgeC5wYm9wX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHZhbF9sb2MgeC5wdmFsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjdmFsdWVfZGVzY3JpcHRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidmFsdWUgZGVzY3JpcHRpb25cIiB4LnB2YWxfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cGVfbG9jIHgucHR5cGVfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZGVjbGFyYXRpb25cIiB4LnB0eXBlX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbGFiZWxfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbGRfbG9jIHgucGxkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbGFiZWxfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibGFiZWwgZGVjbGFyYXRpb25cIiB4LnBsZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNkX2xvYyB4LnBjZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uXCIgeC5wY2RfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB0eWV4dF9sb2MgeC5wdHlleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ0eXBlIGV4dGVuc2lvblwiIHgucHR5ZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4dF9sb2MgeC5wZXh0X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiIHgucGV4dF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3R5X2xvYyB4LnBjdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID0gc3VwZXIjY2xhc3NfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzcyB0eXBlXCIgeC5wY3R5X2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY3RmX2xvYyB4LnBjdGZfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGUgZmllbGRcIiB4LnBjdGZfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNpX2xvYyB4LnBjaV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3NcIiB4LnBjaV9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNsX2xvYyB4LnBjbF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc19leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGV4cHJlc3Npb25cIiB4LnBjbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGNmX2xvYyB4LnBjZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX2ZpZWxkIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIGZpZWxkXCIgeC5wY2ZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc2lnX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzaWduYXR1cmUgaXRlbVwiIHgucHNpZ19sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtZF9sb2MgeC5wbWRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIGRlY2xhcmF0aW9uXCIgeC5wbWRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfc3Vic3RpdHV0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1zX2xvYyB4LnBtc19hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9zdWJzdGl0dXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHN1YnN0aXR1dGlvblwiIHgucG1zX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXRkX2xvYyB4LnBtdGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiIHgucG10ZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG9wZW5faW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBvcGVuX2xvYyB4LnBvcGVuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjb3Blbl9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm9wZW5cIiB4LnBvcGVuX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGluY2x1ZGVfaW5mb3MgZiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBpbmNsX2xvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImluY2x1ZGVcIiB4LnBpbmNsX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHN0cl9sb2MgW10gdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwic3RydWN0dXJlIGl0ZW1cIiB4LnBzdHJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtYl9sb2MgeC5wbWJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNtb2R1bGVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgYmluZGluZ1wiIHgucG1iX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2UgKilcbiAgICAoKiB0aGUgdHlwZSBjb25zdHJhaW50IGlzIGR1cGxpY2F0ZWQuICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmJfbG9jIHgucHZiX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgbWF0Y2ggKHgucHZiX3BhdC5wcGF0X2Rlc2MsIGV4dHJhY3RfY29uc3RyYWludCB4LnB2Yl9leHByKSB3aXRoXG4gICAgICAgICAgKCogbGV0IHggOiB0eXBlIGEgYiBjLiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChfIDo6IF8sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAoKiBsZXQgeCA6ICBjdCA9IGVcbiAgICAgICAgICAgICBsZXQgeCA6PiBjdCA9IGUgKilcbiAgICAgICAgICB8ICggUHBhdF9jb25zdHJhaW50IChwdmJfcGF0LCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoW10sIGN0cCk7IF8gfSksXG4gICAgICAgICAgICAgIFNvbWUgKHB2Yl9leHByLCBjdGUpIClcbiAgICAgICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdHAucHR5cF9sb2MgY3RlLnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICAgICAgICBsZXQgX2FjYyA9IHNlbGYjY29yZV90eXBlIGN0cCBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjdmFsdWVfYmluZGluZyB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBiaW5kaW5nXCIgeC5wdmJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1UIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgdHlwZS4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSB0eXBlLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG10eV9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtdHlfbG9jIHgucG10eV9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHgucG10eV9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlXCIgeC5wbXR5X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIG9mOiAqKVxuICAgICgqICAgICBNRSBbQGF0dHIgcGF5bG9hZF0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgcGF5bG9hZCBpcyBvdXRzaWRlIHRoZSAgICAqKVxuICAgICgqIGxvYyBvZiB0aGUgbW9kdWxlIGV4cHIuLi4uICAgICAgICAgICAgICAgICAqKVxuICAgICgqIGFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqICAgICBmdW5jdG9yIChBIDogUykgKEIgOiBTKSAuLi4gICAgICAgICAgICAqKVxuICAgICgqIHdoZXJlIHRoZSBsb2Mgb2YgWyhCIDogUykgLi4uXSBpcyB0aGUgc2FtZSAqKVxuICAgICgqIGFzIHRoZSBsb2Mgb2YgdGhlIG91dGVybW9zdCBtb2R1bGUgZXhwci4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgeCA9IHJlbG9jX3Btb2RfZnVuY3RvcnMgeCBpblxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wbW9kX2xvYyB4LnBtb2RfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyB4LnBtb2RfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZXhwcmVzc2lvblwiIHgucG1vZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnB0eXBfbG9jIHgucHR5cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgeC5wdHlwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29yZSB0eXBlXCIgeC5wdHlwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogQW5kIGFnYWluIC4uLiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wZXhwX2xvYyB4LnBleHBfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNleHByZXNzaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uX2Rlc2MgeC5wZXhwX2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhwcmVzc2lvblwiIHgucGV4cF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuICAgICgqIC4uLiBhbmQgYWdhaW4gKilcbiAgICAoKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHBhdF9sb2MgeC5wcGF0X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjcGF0dGVybiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHgucHBhdF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInBhdHRlcm5cIiB4LnBwYXRfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgICopXG4gICAgKCogdGhlIGNvbnN0cnVjdCBlcXVhbHMgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBlX2V4Y2VwdGlvbiAqKVxuICAgICgqIChhbmQgc28gY292ZXJzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlcykuICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXhuX2xvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgaW5pdCA9IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5IGluXG4gICAgICAgIGxldCBjaGlsZHNfbG9jcyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgeC5wdHlleG5fY29uc3RydWN0b3IgaW5pdFxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0cnNfbG9jcyA9IHNlbGYjYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGluaXQgaW5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgKGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleGNlcHRpb25cIiB4LnB0eWV4bl9sb2MgYXR0cnNfbG9jcyBzaWJsaW5nc19sb2NzKTtcbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBjaGlsZHNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgKilcbiAgICAoKiBsaHMgaXMgc29tZXRpbWVzIGluY2x1ZGVkIGluIHRoZSByaHMuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgd2l0aF9jb25zdHJhaW50IHggc2libGluZ3NfbG9jID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQd2l0aF90eXBlIChfLCB0ZGVjbCkgfCBQd2l0aF90eXBlc3Vic3QgKF8sIHRkZWNsKSAtPlxuICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiB0ZGVjbCBzaWJsaW5nc19sb2NcbiAgICAgIHwgXyAtPiBzdXBlciN3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6KilcbiAgICAoKiAtIEZvby57IGJhcjsgLi4uIH0gICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gRm9vLlsgYmFyOyAuLi4gXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uKCBiYXI7IC4uLiApICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIG1ldGhvZCB4IDogdHlwZSBhLiAuLi4gPSAuLi4gICAgICAgICAqKVxuICAgICgqIC0gZm9vLkAoYmFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpIDwtIGJheiAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLntiYXJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS5bYmFyXSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdIDwtIGJheiAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGV4cF9yZWNvcmQgKGxhYmVscywgZXhwcl9vKSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGxpZCwgZSkgYWNjIC0+XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmNvbXBhcmVfcG9zIGxpZC5sb2MubG9jX3N0YXJ0IGUucGV4cF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgICA9IDBcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgZS5wZXhwX2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAoKiBwdW5uaW5nLiAqKVxuICAgICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBlLnBleHBfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZSBhY2NcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBsYWJlbHMgYWNjXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gZXhwcl9vIGFjY1xuICAgICAgfCBQZXhwX29wZW5cbiAgICAgICAgICAoKHsgcG9wZW5fZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9pZGVudCBsaWQ7IF8gfTsgXyB9IGFzIG9wbiksIGUpXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnQgPSAwXG4gICAgICAgICAgICAgJiYgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2NfZW5kIGUucGV4cF9sb2MubG9jX2VuZCA8PiAwIC0+XG4gICAgICAgICAgKCogbGV0J3MgcmVsb2NhdGUgLi4uICopXG4gICAgICAgICAgbGV0IGVfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX3N0YXJ0ID0gbGlkLmxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICBzdXBlciNleHByZXNzaW9uX2Rlc2NcbiAgICAgICAgICAgIChQZXhwX29wZW4gKG9wbiwgeyBlIHdpdGggcGV4cF9sb2MgPSBlX2xvYyB9KSlcbiAgICAgICAgICAgIGFjY1xuICAgICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8sIGN0KTsgXyB9KSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZXh0cmFjdF9jb25zdHJhaW50IGUgd2l0aFxuICAgICAgICAgIHwgU29tZSAoZSwgY3RlKSB3aGVuIExvY2F0aW9uLmNvbXBhcmUgY3RlLnB0eXBfbG9jIGN0LnB0eXBfbG9jID0gMCAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjdCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgUGV4cF9hcHBseSAoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gbGlkOyBfIH07IF8gfSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoIExvbmdpZGVudC5sYXN0X2V4biBsaWQgd2l0aFxuICAgICAgICAgIHwgaWRcbiAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCBpZCB+cHJlZml4OlwiLlwiXG4gICAgICAgICAgICAgICAgICYmIChTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCIoKVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdPC1cIlxuICAgICAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfc3VmZml4IGlkIH5zdWZmaXg6XCJ7fVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9PC1cIikgLT5cbiAgICAgICAgICAgICAgc2VsZiNsaXN0IChmdW4gKF8sIGUpIC0+IHNlbGYjZXhwcmVzc2lvbiBlKSBhcmdzIGFjY1xuICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIG9mOiAgICAgICAgICAgICAqKVxuICAgICgqIC0gcHVubmluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gcmVjb3JkIGZpZWxkIHdpdGggdHlwZSBjb25zdHJhaW50LiAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gdW5wYWNrIGxvY2F0aW9ucyBiZWluZyBpbmNvcnJlY3Qgd2hlbiBjb25zdHJhaW5lZCAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBwYXRfcmVjb3JkIChsYWJlbHMsIF8pIC0+XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChsaWQsIHBhdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgcGF0LnBwYXRfbG9jLmxvY19zdGFydFxuICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBsaWQubG9jIHBhdC5wcGF0X2xvYyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgKCogc2ltcGxlIHB1bm5pbmchICopXG4gICAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1hdGNoIHBhdC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogeyBmb28gOiBpbnQgfSBhbmQgeyBmb28gOiBpbnQgPSB4IH0gLi4uICopXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBwIGFjY1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKCogTm8gaWRlYSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuICopXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHBhdCBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgbGlkIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcGF0IGFjYyBpblxuICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50ICh7IHBwYXRfZGVzYyA9IFBwYXRfdW5wYWNrIGE7IF8gfSwgYikgLT5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSAqKVxuICAgICgqIGZha2Ugc3RydWN0dXJlIGZvciBhIGdlbmVyYXRpdmUgYXJndW1lbnQgY292ZXJzIHRoZSAgICAgKilcbiAgICAoKiBsb2NhdGlvbiBvZiB0aGUgZnVuY3Rvci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2FwcGx5IChtLCB7IHBtb2RfZGVzYyA9IFBtb2Rfc3RydWN0dXJlIFtdOyBwbW9kX2xvYzsgXyB9KVxuICAgICAgICB3aGVuIExvY2F0aW9uLmNvbXBhcmVfcG9zIG0ucG1vZF9sb2MubG9jX3N0YXJ0IHBtb2RfbG9jLmxvY19zdGFydCA9IDAgLT5cbiAgICAgICAgICBzdXBlciNtb2R1bGVfZXhwciBtIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI21vZHVsZV9leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogb3Blbl9pbmZvcyBmb3IgUGNsX29wZW4gb25seSBjb3ZlcnMgdGhlIFwib3BlblwiIGtleXdvcmQgICopXG4gICAgKCogYW5kIG5vdCB0aGUgbW9kdWxlIG9wZW5lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2xfb3BlbiAob2QsIGNlKSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgY2UgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfZXhwcl9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFNhbWUgYXMgYWJvdmUgLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3R5X29wZW4gKG9kLCBjdCkgLT5cbiAgICAgICAgICAoKiBpbmxpbmUgb2Ygb3Blbl9kZXNjcmlwdGlvbiAod2hpY2ggZWZmZWN0aXZlbHkgbWFrZXMgdGhhdCBub2RlXG4gICAgICAgICAgICAgZGlzYXBwZWFyKSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIG9kLnBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIG9kLnBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIG9kLnBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgKCogY29udGludWUgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGN0IGFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI2NsYXNzX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2UgZG9jc3RyaW5ncyBoYXZlICAgICopXG4gICAgKCogdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhlIGl0ZW0gdGhleSBnZXQgYXR0YWNoZWQgdG8uICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB4IGFjYyA9XG4gICAgICBtYXRjaCB4LmF0dHJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBcIm9jYW1sLmRvY1wiIHwgXCJvY2FtbC50ZXh0XCIgLT4gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjYXR0cmlidXRlIHggYWNjXG4gIGVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiBJbXBvcnRcbm9wZW4gVXRpbHNcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgQXJnID0gU3RkbGliLkFyZ1xuXG5sZXQgZXhlX25hbWUgPSBTdGRsaWIuRmlsZW5hbWUuYmFzZW5hbWUgU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbmxldCBhcmdzID0gcmVmIFtdXG5sZXQgYWRkX2FyZyBrZXkgc3BlYyB+ZG9jID0gYXJncyA6PSAoa2V5LCBzcGVjLCBkb2MpIDo6ICFhcmdzXG5sZXQgbG9jX2ZuYW1lID0gcmVmIE5vbmVcbmxldCBwZXJmb3JtX2NoZWNrcyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzXG5sZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyA9IHJlZiBPcHRpb25zLnBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnNcbmxldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA9IHJlZiBPcHRpb25zLnBlcmZvcm1fbG9jYXRpb25zX2NoZWNrXG5sZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AgPSByZWYgZmFsc2VcbmxldCBhcHBseV9saXN0ID0gcmVmIE5vbmVcbmxldCBwcmVwcm9jZXNzb3IgPSByZWYgTm9uZVxubGV0IG5vX21lcmdlID0gcmVmIGZhbHNlXG5sZXQgcmVxdWVzdF9wcmludF9wYXNzZXMgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyA9IHJlZiBmYWxzZVxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE9wdGlvbnMuZGlmZl9jb21tYW5kXG5sZXQgcHJldHR5ID0gcmVmIGZhbHNlXG5sZXQgc3R5bGVyID0gcmVmIE5vbmVcbmxldCBvdXRwdXRfbWV0YWRhdGFfZmlsZW5hbWUgPSByZWYgTm9uZVxubGV0IGNvcnJlY3RlZF9zdWZmaXggPSByZWYgXCIucHB4LWNvcnJlY3RlZFwiXG5cbmxldCBnaG9zdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcFxuICAgIG1ldGhvZCEgbG9jYXRpb24gbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgZW5kXG5cbmxldCBjaG9wX3ByZWZpeCB+cHJlZml4IHggPVxuICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXggeCB0aGVuXG4gICAgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHggKFN0cmluZy5sZW5ndGggcHJlZml4KSlcbiAgZWxzZSBOb25lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoIChsb2MgOiBMb2NhdGlvbi50KSA9XG4gIGxldCBmbmFtZSA9IGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lIGluXG4gIG1hdGNoIGNob3BfcHJlZml4IH5wcmVmaXg6XCIuL1wiIGZuYW1lIHdpdGhcbiAgfCBTb21lIGZuYW1lIC0+IGZuYW1lXG4gIHwgTm9uZSAtPiBmbmFtZVxuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zdHIgOiBzdHJ1Y3R1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc3RyX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubGV0IGdldF9kZWZhdWx0X3BhdGhfc2lnIDogc2lnbmF0dXJlIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gXCJcIlxuICB8IHsgcHNpZ19sb2MgPSBsb2M7IF8gfSA6OiBfIC0+IGdldF9kZWZhdWx0X3BhdGggbG9jXG5cbm1vZHVsZSBMaW50X2Vycm9yID0gc3RydWN0XG4gIHR5cGUgdCA9IExvY2F0aW9uLnQgKiBzdHJpbmdcblxuICBsZXQgb2Zfc3RyaW5nIGxvYyBzID0gKGxvYywgcylcbmVuZFxuXG5tb2R1bGUgQ29va2llcyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUXG5cbiAgbGV0IGdpdmVuX3Rocm91Z2hfY2xpID0gcmVmIFtdXG5cbiAgbGV0IGdldCBUIG5hbWUgcGF0dGVybiA9XG4gICAgT3B0aW9uLm1hcCAoQXN0bGliLkFzdF9tZXRhZGF0YS5nZXRfY29va2llIG5hbWUpIH5mOihmdW4gZSAtPlxuICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2UgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG5cbiAgbGV0IGdldF9yZXMgVCBuYW1lIHBhdHRlcm4gPVxuICAgIG1hdGNoXG4gICAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgICAgbGV0IGUgPSBTZWxlY3RlZF9hc3Qub2Zfb2NhbWwgRXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gZS5wZXhwX2xvYyBlIEZuLmlkKVxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoT2sgZSkgLT4gT2sgKFNvbWUgZSlcbiAgICB8IFNvbWUgKEVycm9yIGUpIC0+IEVycm9yIGVcblxuICBsZXQgc2V0IFQgbmFtZSBleHByID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLnNldF9jb29raWUgbmFtZSAoU2VsZWN0ZWRfYXN0LnRvX29jYW1sIEV4cHJlc3Npb24gZXhwcilcblxuICBsZXQgaGFuZGxlcnMgPSByZWYgW11cbiAgbGV0IGFkZF9oYW5kbGVyIGYgPSBoYW5kbGVycyA6PSAhaGFuZGxlcnMgQCBbIGYgXVxuXG4gIGxldCBhZGRfc2ltcGxlX2hhbmRsZXIgbmFtZSBwYXR0ZXJuIH5mID1cbiAgICBhZGRfaGFuZGxlciAoZnVuIFQgLT4gZiAoZ2V0IFQgbmFtZSBwYXR0ZXJuKSlcblxuICBsZXQgYWNrbm93bGVkZ2VfY29va2llcyBUID0gTGlzdC5pdGVyICFoYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuICBsZXQgcG9zdF9oYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX3Bvc3RfaGFuZGxlciBmID0gcG9zdF9oYW5kbGVycyA6PSAhcG9zdF9oYW5kbGVycyBAIFsgZiBdXG4gIGxldCBjYWxsX3Bvc3RfaGFuZGxlcnMgVCA9IExpc3QuaXRlciAhcG9zdF9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiBUKVxuZW5kXG5cbm1vZHVsZSBJbnN0cnVtZW50ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gQmVmb3JlIHwgQWZ0ZXJcblxuICB0eXBlIHQgPSB7XG4gICAgdHJhbnNmb3JtYXRpb24gOlxuICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQ7XG4gICAgcG9zaXRpb24gOiBwb3M7XG4gIH1cblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgICAgbGV0IHRyYW5zZm9ybWF0aW9uIGN0eCBzdCA9IHJldHVybiAodHJhbnNmb3JtYXRpb24gY3R4IHN0KSBpblxuICAgICAgeyB0cmFuc2Zvcm1hdGlvbjsgcG9zaXRpb24gfVxuICBlbmRcblxuICBsZXQgbWFrZSB0cmFuc2Zvcm1hdGlvbiB+cG9zaXRpb24gPVxuICAgIGxldCB0cmFuc2Zvcm1hdGlvbiBfIHN0ID0gdHJhbnNmb3JtYXRpb24gc3QgaW5cbiAgICBWMi5tYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvblxuZW5kXG5cbm1vZHVsZSBUcmFuc2Zvcm0gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgYWxpYXNlcyA6IHN0cmluZyBsaXN0O1xuICAgIGltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIGxpbnRfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+IFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gTGludF9lcnJvci50IGxpc3QpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBwcmVwcm9jZXNzX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSAtPlxuICAgICAgUGFyc2V0cmVlLnN0cnVjdHVyZSBXaXRoX2Vycm9ycy50KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgZW5jbG9zZV9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIExvY2F0aW9uLnQgb3B0aW9uIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlICogUGFyc2V0cmVlLnN0cnVjdHVyZSlcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgKiBQYXJzZXRyZWUuc2lnbmF0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGluc3RydW1lbnQgOiBJbnN0cnVtZW50LnQgb3B0aW9uO1xuICAgIHJ1bGVzIDogQ29udGV4dF9mcmVlLlJ1bGUudCBsaXN0O1xuICAgIHJlZ2lzdGVyZWRfYXQgOiBDYWxsZXJfaWQudDtcbiAgfVxuXG4gIGxldCBoYXNfbmFtZSB0IG5hbWUgPVxuICAgIFN0cmluZy5lcXVhbCBuYW1lIHQubmFtZSB8fCBMaXN0LmV4aXN0cyB+ZjooU3RyaW5nLmVxdWFsIG5hbWUpIHQuYWxpYXNlc1xuXG4gIGxldCBhbGwgOiB0IGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHByaW50X2NhbGxlcl9pZCBvYyAoY2FsbGVyX2lkIDogQ2FsbGVyX2lkLnQpID1cbiAgICBtYXRjaCBjYWxsZXJfaWQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRfc3RyaW5nIG9jIFwiPHVua25vd24gbG9jYXRpb24+XCJcbiAgICB8IFNvbWUgbG9jIC0+IFByaW50Zi5mcHJpbnRmIG9jIFwiJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG5cbiAgbGV0IHJlZ2lzdGVyID8oZXh0ZW5zaW9ucyA9IFtdKSA/KHJ1bGVzID0gW10pID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgICAgP2ltcGwgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZlxuICAgICAgP2luc3RydW1lbnQgPyhhbGlhc2VzID0gW10pIG5hbWUgPVxuICAgIGxldCBydWxlcyA9IExpc3QubWFwIGV4dGVuc2lvbnMgfmY6Q29udGV4dF9mcmVlLlJ1bGUuZXh0ZW5zaW9uIEAgcnVsZXMgaW5cbiAgICBsZXQgY2FsbGVyX2lkID0gQ2FsbGVyX2lkLmdldCB+c2tpcDpbIFN0ZGxpYi5fX0ZJTEVfXyBdIGluXG4gICAgKG1hdGNoIExpc3QuZmlsdGVyICFhbGwgfmY6KGZ1biBjdCAtPiBoYXNfbmFtZSBjdCBuYW1lKSB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgY3QgOjogXyAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIldhcm5pbmc6IGNvZGUgdHJhbnNmb3JtYXRpb24gJXMgcmVnaXN0ZXJlZCB0d2ljZS5cXG5cIlxuICAgICAgICAgIG5hbWU7XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiICAtIGZpcnN0IHRpbWUgd2FzIGF0ICVhXFxuXCIgcHJpbnRfY2FsbGVyX2lkXG4gICAgICAgICAgY3QucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gc2Vjb25kIHRpbWUgaXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWQgY2FsbGVyX2lkKTtcbiAgICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKSBpblxuICAgIGxldCBwcmVwcm9jZXNzX2ltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ltcGwgfmY6KGZ1biBmIGN0eCBhc3QgLT4gcmV0dXJuIChmIGN0eCBhc3QpKVxuICAgIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW50ZiA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgY3QgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBhbGlhc2VzO1xuICAgICAgICBydWxlcztcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGltcGw7XG4gICAgICAgIGludGY7XG4gICAgICAgIGxpbnRfaW1wbDtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ludGY7XG4gICAgICAgIGxpbnRfaW50ZjtcbiAgICAgICAgaW5zdHJ1bWVudDtcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IGNhbGxlcl9pZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGFsbCA6PSBjdCA6OiAhYWxsXG5cbiAgbGV0IHJlYyBsYXN0IHByZXYgbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiBwcmV2IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbiAgbGV0IGxvY19vZl9saXN0IH5nZXRfbG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBmaXJzdCA6IExvY2F0aW9uLnQgPSBnZXRfbG9jIHggaW5cbiAgICAgICAgbGV0IGxhc3QgPSBnZXRfbG9jIChsYXN0IHggbCkgaW5cbiAgICAgICAgU29tZSB7IGZpcnN0IHdpdGggbG9jX2VuZCA9IGxhc3QubG9jX2VuZCB9XG5cbiAgbGV0IG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIHQgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWUgPVxuICAgIGxldCB7IHJ1bGVzOyBlbmNsb3NlX2ltcGw7IGVuY2xvc2VfaW50ZjsgaW1wbDsgaW50ZjsgXyB9ID0gdCBpblxuICAgIGxldCBtYXAgPVxuICAgICAgbmV3IENvbnRleHRfZnJlZS5tYXBfdG9wX2Rvd25cbiAgICAgICAgcnVsZXMgfmVtYmVkX2Vycm9ycyB+Z2VuZXJhdGVkX2NvZGVfaG9vazpob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgIGluXG4gICAgbGV0IGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBjb250ZXh0IHdob2xlX2xvYyBmID1cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9IGYgd2hvbGVfbG9jIGluXG4gICAgICAobWF0Y2ggd2hvbGVfbG9jIHdpdGhcbiAgICAgIHwgU29tZSAobG9jIDogTG9jYXRpb24udCkgLT4gKFxuICAgICAgICAgIGxldCBsb2NfaGVhZGVyID0geyBsb2Mgd2l0aCBsb2NfZW5kID0gbG9jLmxvY19zdGFydCB9IGluXG4gICAgICAgICAgbGV0IGxvY19mb290ZXIgPSB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0gaW5cbiAgICAgICAgICAobWF0Y2ggaGVhZGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19oZWFkZXIgKE1hbnkgaGVhZGVyKSk7XG4gICAgICAgICAgbWF0Y2ggZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IGhvb2suZiBjb250ZXh0IGxvY19mb290ZXIgKE1hbnkgZm9vdGVyKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggaGVhZGVyIEAgZm9vdGVyIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgICAgICAgICBwb3NfY251bSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBob29rLmYgY29udGV4dCBsb2MgKE1hbnkgbCkpKTtcbiAgICAgIChoZWFkZXIsIGZvb3RlcilcbiAgICBpblxuICAgIGxldCBpbnB1dF9uYW1lID1cbiAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZSB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgIGluXG4gICAgbGV0IG1hcF9pbXBsIGN0eHQgc3Rfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHN0ID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzdF93aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ltcGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzdCB+Z2V0X2xvYzooZnVuIHN0IC0+IHN0LlBhcnNldHJlZS5wc3RyX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU3RydWN0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc3RydWN0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzdDsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHN0IC0+IG1hdGNoIGltcGwgd2l0aCBOb25lIC0+IHJldHVybiBzdCB8IFNvbWUgZiAtPiBmIGN0eHQgc3RcbiAgICBpblxuICAgIGxldCBtYXBfaW50ZiBjdHh0IHNnX3dpdGhfYXR0cnMgPVxuICAgICAgbGV0IGF0dHJzLCBzZyA9XG4gICAgICAgIExpc3Quc3BsaXRfd2hpbGUgc2dfd2l0aF9hdHRycyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IHsgcHNpZ19kZXNjID0gUHNpZ19hdHRyaWJ1dGUgXzsgXyB9IC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gICAgICBsZXQgYmFzZV9jdHh0ID1cbiAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICBpblxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID1cbiAgICAgICAgbWF0Y2ggZW5jbG9zZV9pbnRmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChbXSwgW10pXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgd2hvbGVfbG9jID1cbiAgICAgICAgICAgICAgbG9jX29mX2xpc3Qgc2cgfmdldF9sb2M6KGZ1biBzZyAtPiBzZy5QYXJzZXRyZWUucHNpZ19sb2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIFNpZ25hdHVyZV9pdGVtIHdob2xlX2xvYyAoZiBiYXNlX2N0eHQpXG4gICAgICBpblxuICAgICAgbWFwI3NpZ25hdHVyZSBiYXNlX2N0eHQgKExpc3QuY29uY2F0IFsgYXR0cnM7IGhlYWRlcjsgc2c7IGZvb3RlciBdKVxuICAgICAgPj49IGZ1biBzZyAtPiBtYXRjaCBpbnRmIHdpdGggTm9uZSAtPiByZXR1cm4gc2cgfCBTb21lIGYgLT4gZiBjdHh0IHNnXG4gICAgaW5cbiAgICB7IHQgd2l0aCBpbXBsID0gU29tZSBtYXBfaW1wbDsgaW50ZiA9IFNvbWUgbWFwX2ludGYgfVxuXG4gIGxldCBidWlsdGluX29mX2NvbnRleHRfZnJlZV9yZXdyaXRlcnMgfmhvb2sgfnJ1bGVzIH5lbmNsb3NlX2ltcGwgfmVuY2xvc2VfaW50ZlxuICAgICAgfmlucHV0X25hbWUgPVxuICAgIG1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5ob29rIH5pbnB1dF9uYW1lXG4gICAgICB7XG4gICAgICAgIG5hbWUgPSBcIjxidWlsdGluOmNvbnRleHQtZnJlZT5cIjtcbiAgICAgICAgYWxpYXNlcyA9IFtdO1xuICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgIGVuY2xvc2VfaW1wbDtcbiAgICAgICAgZW5jbG9zZV9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgcnVsZXM7XG4gICAgICAgIHJlZ2lzdGVyZWRfYXQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOltdO1xuICAgICAgfVxuXG4gIGxldCBwYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIHRzID1cbiAgICBsZXQgYmVmb3JlX2luc3RycywgYWZ0ZXJfaW5zdHJzLCByZXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IHRzIH5pbml0OihbXSwgW10sIFtdKSB+ZjooZnVuIChiZWZfaSwgYWZ0X2ksIHJlc3QpIHQgLT5cbiAgICAgICAgICBsZXQgcmVkdWNlZF90ID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdCB3aXRoXG4gICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgIHByZXByb2Nlc3NfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZiBpbnN0ciA9XG4gICAgICAgICAgICAoaW5zdHIuSW5zdHJ1bWVudC5wb3NpdGlvbiwgaW5zdHIuSW5zdHJ1bWVudC50cmFuc2Zvcm1hdGlvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIE9wdGlvbi5tYXAgdC5pbnN0cnVtZW50IH5mIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKEJlZm9yZSwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYmVmX2ksXG4gICAgICAgICAgICAgICAgYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgU29tZSAoQWZ0ZXIsIHRyYW5zZikgLT5cbiAgICAgICAgICAgICAgKCBiZWZfaSxcbiAgICAgICAgICAgICAgICB7IHJlZHVjZWRfdCB3aXRoIGltcGwgPSBTb21lIHRyYW5zZjsgcnVsZXMgPSBbXSB9IDo6IGFmdF9pLFxuICAgICAgICAgICAgICAgIHJlZHVjZWRfdCA6OiByZXN0IClcbiAgICAgICAgICB8IE5vbmUgLT4gKGJlZl9pLCBhZnRfaSwgcmVkdWNlZF90IDo6IHJlc3QpKVxuICAgIGluXG4gICAgKCBgTGludGVyc1xuICAgICAgICAoTGlzdC5maWx0ZXJfbWFwIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIHQubGludF9pbXBsIHx8IE9wdGlvbi5pc19zb21lIHQubGludF9pbnRmIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxsaW50OiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbXBsID0gdC5saW50X2ltcGw7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gdC5saW50X2ludGY7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBQcmVwcm9jZXNzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbXBsXG4gICAgICAgICAgICAgICB8fCBPcHRpb24uaXNfc29tZSB0LnByZXByb2Nlc3NfaW50ZlxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQcmludGYuc3ByaW50ZiBcIjxwcmVwcm9jZXNzOiVzPlwiIHQubmFtZTtcbiAgICAgICAgICAgICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgaW1wbCA9IHQucHJlcHJvY2Vzc19pbXBsO1xuICAgICAgICAgICAgICAgICAgIGludGYgPSB0LnByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgZW5jbG9zZV9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHByZXByb2Nlc3NfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBydWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRfYXQgPSB0LnJlZ2lzdGVyZWRfYXQ7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBlbHNlIE5vbmUpKSxcbiAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgIGBSZXN0IHJlc3QgKVxuZW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gPSBUcmFuc2Zvcm0ucmVnaXN0ZXJcblxuICBsZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuICAgICAgPVxuICAgIGxldCBpbXBsID1cbiAgICAgIE9wdGlvbi5tYXAgaW1wbCB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFN0cnVjdHVyZSlcbiAgICBpblxuICAgIGxldCBpbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgaW50ZiB+ZjooUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWxfbWFwcGVyIFNpZ25hdHVyZSlcbiAgICBpblxuICAgIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9pbXBsID9pbnRmID9hbGlhc2VzIG5hbWVcbmVuZFxuXG5sZXQgYWRkX2N0eHRfYXJnIChmIDogJ2EgLT4gJ2IpIDogRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdiID1cbiBmdW4gXyB4IC0+IGYgeFxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZiA/aW1wbFxuICAgID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBwcmVwcm9jZXNzX2ltcGwgPSBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW50ZiA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgbGludF9pbXBsID0gT3B0aW9uLm1hcCBsaW50X2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ludGYgPSBPcHRpb24ubWFwIGxpbnRfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGVuY2xvc2VfaW1wbCA9IE9wdGlvbi5tYXAgZW5jbG9zZV9pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbnRmID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uID9leHRlbnNpb25zID9ydWxlcyA/ZW5jbG9zZV9pbXBsID9lbmNsb3NlX2ludGZcbiAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG5cbmxldCByZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIH5uYW1lID8oYWxpYXNlcyA9IFtdKSB+aW1wbCB+aW50ZiA9XG4gIHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIG5hbWUgfmltcGwgfmludGYgfmFsaWFzZXNcbltAQHdhcm5pbmcgXCItMTZcIl1cbigqIFRoaXMgZnVuY3Rpb24gdHJpZ2dlcnMgYSB3YXJuaW5nIDE2IGFzIG9mIG9jYW1sIDQuMTIgKilcblxubGV0IHJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmID1cbiAgbGV0IGltcGwgPSBPcHRpb24ubWFwIGltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBpbnRmID0gT3B0aW9uLm1hcCBpbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBWMi5yZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZlxuXG5sZXQgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgbmFtZSB+b2xkX2Ryb3BwZWQgfm5ld19kcm9wcGVkID1cbiAgbGV0IHByaW50X2RpZmYgd2hhdCBhIGIgPVxuICAgIGxldCBkaWZmID1cbiAgICAgIExpc3QuZmlsdGVyIGEgfmY6KGZ1biAobmFtZSA6IF8gTG9jLnQpIC0+XG4gICAgICAgICAgbm90XG4gICAgICAgICAgICAoTGlzdC5leGlzdHMgYiB+ZjooZnVuIChuYW1lJyA6IF8gTG9jYXRpb24ubG9jKSAtPlxuICAgICAgICAgICAgICAgICBuYW1lLnR4dCA9PSBuYW1lJy50eHQpKSlcbiAgICBpblxuICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBkaWZmKSB0aGVuIChcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzICVzIGFmdGVyIGFwcGx5aW5nICVzOlxcblwiIHdoYXRcbiAgICAgICAgbmFtZTtcbiAgICAgIExpc3QuaXRlciBkaWZmIH5mOihmdW4geyBMb2NhdGlvbi50eHQ7IGxvYyB9IC0+XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiLSAlYTogJXNcXG5cIiBMb2NhdGlvbi5wcmludCBsb2MgdHh0KTtcbiAgICAgIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkAuXCIpXG4gIGluXG4gIHByaW50X2RpZmYgXCJkaXNhcHBlYXJlZFwiIG5ld19kcm9wcGVkIG9sZF9kcm9wcGVkO1xuICBwcmludF9kaWZmIFwicmVhcHBlYXJlZFwiIG9sZF9kcm9wcGVkIG5ld19kcm9wcGVkXG5cbmxldCBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgfmlucHV0X25hbWUgPVxuICBsZXQgY3RzID1cbiAgICBtYXRjaCAhYXBwbHlfbGlzdCB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QucmV2ICFUcmFuc2Zvcm0uYWxsXG4gICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgIExpc3QubWFwIG5hbWVzIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgICAgTGlzdC5maW5kICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICBpblxuICBsZXQgKCBgTGludGVycyBsaW50ZXJzLFxuICAgICAgICBgUHJlcHJvY2VzcyBwcmVwcm9jZXNzLFxuICAgICAgICBgQmVmb3JlX2luc3RycyBiZWZvcmVfaW5zdHJzLFxuICAgICAgICBgQWZ0ZXJfaW5zdHJzIGFmdGVyX2luc3RycyxcbiAgICAgICAgYFJlc3QgY3RzICkgPVxuICAgIFRyYW5zZm9ybS5wYXJ0aXRpb25fdHJhbnNmb3JtYXRpb25zIGN0c1xuICBpblxuICAoKiBBbGxvdyBvbmx5IG9uZSBwcmVwcm9jZXNzb3IgdG8gYXNzdXJlIGRldGVybWluaXN0aWMgb3JkZXIgKilcbiAgKGlmIExpc3QubGVuZ3RoIHByZXByb2Nlc3MgPiAxIHRoZW5cbiAgICAgbGV0IHBwID1cbiAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0Lm1hcCBwcmVwcm9jZXNzIH5mOihmdW4gdCAtPiB0Lm5hbWUpKVxuICAgICBpblxuICAgICBsZXQgZXJyID1cbiAgICAgICBQcmludGYuc3ByaW50ZiBcIkF0IG1vc3Qgb25lIHByZXByb2Nlc3NvciBpcyBhbGxvd2VkLCB3aGlsZSBnb3Q6ICVzXCIgcHBcbiAgICAgaW5cbiAgICAgZmFpbHdpdGggZXJyKTtcbiAgbGV0IG1ha2VfZ2VuZXJpYyB0cmFuc2Zvcm1zID1cbiAgICBpZiAhbm9fbWVyZ2UgdGhlblxuICAgICAgTGlzdC5tYXAgdHJhbnNmb3Jtc1xuICAgICAgICB+ZjpcbiAgICAgICAgICAoVHJhbnNmb3JtLm1lcmdlX2ludG9fZ2VuZXJpY19tYXBwZXJzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfnRvb2xfbmFtZVxuICAgICAgICAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSlcbiAgICBlbHNlXG4gICAgICAobGV0IGdldF9lbmNsb3NlcnMgfmYgPVxuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBmIGN0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGN0Lm5hbWUsIHgpKVxuICAgICAgICAgKCogU29ydCB0aGVtIHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyaW5nICopXG4gICAgICAgICB8PiBMaXN0LnNvcnQgfmNtcDooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKVxuICAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICAgaW5cblxuICAgICAgIGxldCBydWxlcyA9XG4gICAgICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LnJ1bGVzKVxuICAgICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICAgICBhbmQgaW1wbF9lbmNsb3NlcnMgPSBnZXRfZW5jbG9zZXJzIH5mOihmdW4gY3QgLT4gY3QuZW5jbG9zZV9pbXBsKVxuICAgICAgIGFuZCBpbnRmX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ludGYpIGluXG4gICAgICAgbWF0Y2ggKHJ1bGVzLCBpbXBsX2VuY2xvc2VycywgaW50Zl9lbmNsb3NlcnMpIHdpdGhcbiAgICAgICB8IFtdLCBbXSwgW10gLT4gdHJhbnNmb3Jtc1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgICBsZXQgbWVyZ2VfZW5jbG9zZXIgPSBmdW5jdGlvblxuICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgIHwgZW5jbG9zZXJzIC0+XG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoZnVuIGN0eHQgbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVycywgZm9vdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QubWFwIGVuY2xvc2VycyB+ZjooZnVuIGYgLT4gZiBjdHh0IGxvYykgfD4gTGlzdC5zcGxpdFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzID0gTGlzdC5jb25jYXQgaGVhZGVycyBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGZvb3RlcnMgPSBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgZm9vdGVycykgaW5cbiAgICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLCBmb290ZXJzKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgVHJhbnNmb3JtLmJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+cnVsZXMgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgIH5lbmNsb3NlX2ltcGw6KG1lcmdlX2VuY2xvc2VyIGltcGxfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH5lbmNsb3NlX2ludGY6KG1lcmdlX2VuY2xvc2VyIGludGZfZW5jbG9zZXJzKVxuICAgICAgICAgICAgIH50b29sX25hbWUgfmlucHV0X25hbWVcbiAgICAgICAgICAgOjogdHJhbnNmb3JtcylcbiAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKGN0LmltcGwsIGN0LmludGYpIHdpdGggTm9uZSwgTm9uZSAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgaW5cbiAgbGludGVycyBAIHByZXByb2Nlc3MgQCBiZWZvcmVfaW5zdHJzIEAgbWFrZV9nZW5lcmljIGN0cyBAIGFmdGVyX2luc3Ryc1xuXG5sZXQgYXBwbHlfdHJhbnNmb3JtcyB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmZpZWxkIH5saW50X2ZpZWxkIH5kcm9wcGVkX3NvX2ZhclxuICAgIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzIGFzdCA9XG4gIGxldCBjdHMgPVxuICAgIGdldF93aG9sZV9hc3RfcGFzc2VzIH50b29sX25hbWUgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgIH5pbnB1dF9uYW1lXG4gIGluXG4gIGxldCBmaW5pc2ggKGFzdCwgX2Ryb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpID1cbiAgICAoIGFzdCxcbiAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzIH5mOihmdW4gKGxvYywgcykgLT5cbiAgICAgICAgICBDb21tb24uYXR0cmlidXRlX29mX3dhcm5pbmcgbG9jIHMpLFxuICAgICAgZXJyb3JzIClcbiAgaW5cbiAgbGV0IGFjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgY3RzIH5pbml0Oihhc3QsIFtdLCBbXSwgW10pXG4gICAgICB+ZjooZnVuXG4gICAgICAgICAgKGFzdCwgZHJvcHBlZCwgKGxpbnRfZXJyb3JzIDogXyBsaXN0KSwgZXJyb3JzKSAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgICAgIG1hdGNoIGlucHV0X25hbWUgd2l0aFxuICAgICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+IGlucHV0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gXCJfbm9uZV9cIlxuICAgICAgICBpblxuICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50b3BfbGV2ZWwgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoIH5pbnB1dF9uYW1lXG4gICAgICAgIGluXG5cbiAgICAgICAgbGV0IGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgICAgICAgIG1hdGNoIGxpbnRfZmllbGQgY3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAobGludF9lcnJvcnMsIGVycm9ycylcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSAobGludF9lcnJvcnMgQCBmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKGxpbnRfZXJyb3JzLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmaWVsZCBjdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoYXN0LCBkcm9wcGVkLCBsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IChhc3QsIG1vcmVfZXJyb3JzKSwgZXJyb3JzID1cbiAgICAgICAgICAgICAgdHJ5IChmIGN0eHQgYXN0LCBlcnJvcnMpXG4gICAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgKChhc3QsIFtdKSwgZXhuX3RvX2xvY19lcnJvciBleG4gOjogZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkcm9wcGVkID1cbiAgICAgICAgICAgICAgaWYgIWRlYnVnX2F0dHJpYnV0ZV9kcm9wIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBuZXdfZHJvcHBlZCA9IGRyb3BwZWRfc29fZmFyIGFzdCBpblxuICAgICAgICAgICAgICAgIGRlYnVnX2Ryb3BwZWRfYXR0cmlidXRlIGN0Lm5hbWUgfm9sZF9kcm9wcGVkOmRyb3BwZWRcbiAgICAgICAgICAgICAgICAgIH5uZXdfZHJvcHBlZDtcbiAgICAgICAgICAgICAgICBuZXdfZHJvcHBlZClcbiAgICAgICAgICAgICAgZWxzZSBbXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMgQCBtb3JlX2Vycm9ycykpXG4gIGluXG4gIGZpbmlzaCBhY2NcblxuKCokKilcblxubGV0IGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgZXh0ID0gTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHQgW11cblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH4oa2luZCA6IEtpbmQudCkgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBJbnRmIC0+IEludGZfb3JfaW1wbC5JbnRmIFsgZXJyb3JfdG9fc2lnX2V4dGVuc2lvbiBlcnJvciBdXG4gIHwgSW1wbCAtPiBJbnRmX29yX2ltcGwuSW1wbCBbIGVycm9yX3RvX3N0cl9leHRlbnNpb24gZXJyb3IgXVxuXG5sZXQgZXhuX3RvX2V4dGVuc2lvbiBleG4gfihraW5kIDogS2luZC50KSA9XG4gIGV4bl90b19sb2NfZXJyb3IgZXhuIHw+IGVycm9yX3RvX2V4dGVuc2lvbiB+a2luZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEFjdHVhbCByZXdyaXRpbmcgb2Ygc3RydWN0dXJlL3NpZ25hdHVyZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBwcmludF9wYXNzZXMgKCkgPVxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhsaWJfZHJpdmVyXCIgaW5cbiAgbGV0IGVtYmVkX2Vycm9ycyA9IGZhbHNlIGluXG4gIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfmVtYmVkX2Vycm9ycyB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfnRvb2xfbmFtZVxuICAgICAgfmlucHV0X25hbWU6Tm9uZVxuICBpblxuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlblxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpmcmVzaGVuLWFuZC1jb2xsZWN0LWF0dHJpYnV0ZXM+XFxuXCI7XG4gIExpc3QuaXRlciBjdHMgfmY6KGZ1biBjdCAtPiBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5UcmFuc2Zvcm0ubmFtZSk7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWF0dHJpYnV0ZXM+XFxuXCI7XG4gICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmNoZWNrLXVudXNlZC1leHRlbnNpb25zPlxcblwiKVxuXG5sZXQgc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyA9XG4gIExpc3Quc29ydCBlcnJvcnMgfmNtcDooZnVuIGVycm9yIGVycm9yJyAtPlxuICAgICAgbGV0IGxvYyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvciBpblxuICAgICAgbGV0IGxvYycgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3InIGluXG4gICAgICBMb2NhdGlvbi5jb21wYXJlIGxvYyBsb2MnKVxuXG4oKiQqKVxuXG5sZXQgbWFwX3N0cnVjdHVyZV9nZW4gc3QgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3N0cnVjdHVyZSBzdCk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHN0ID1cbiAgICBsZXQgc3QgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzdFxuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc3RcbiAgICBpblxuICAgIHN0XG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc3QgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3N0cnVjdHVyZV9pdGVtKVxuICAgIEAgc3RcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHN0ID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlIHN0IFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc3RydWN0dXJlIHN0XG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzdFxuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zdHIgc3QgaW5cbiAgbGV0IHN0LCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHN0IH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmltcGwpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ltcGwpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3N0cnVjdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc3QgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3N0cnVjdHVyZSBzdCA9XG4gIG1hdGNoXG4gICAgbWFwX3N0cnVjdHVyZV9nZW4gc3RcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcblxubGV0IG1hcF9zaWduYXR1cmVfZ2VuIHNnIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lXG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIENvb2tpZXMuYWNrbm93bGVkZ2VfY29va2llcyBUO1xuICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgQXR0cmlidXRlLnJlc2V0X2NoZWNrcyAoKTtcbiAgICBBdHRyaWJ1dGUuY29sbGVjdCNzaWduYXR1cmUgc2cpO1xuICBsZXQgbGludCBsaW50X2Vycm9ycyBzZyA9XG4gICAgbGV0IHNnID1cbiAgICAgIG1hdGNoIGxpbnRfZXJyb3JzIHdpdGhcbiAgICAgIHwgW10gLT4gc2dcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIExpc3QubWFwIGxpbnRfZXJyb3JzXG4gICAgICAgICAgICB+ZjooZnVuICh7IGF0dHJfbmFtZSA9IHsgbG9jOyBfIH07IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfYXR0cmlidXRlIH5sb2MgYXR0cilcbiAgICAgICAgICBAIHNnXG4gICAgaW5cbiAgICBzZ1xuICBpblxuICBsZXQgd2l0aF9lcnJvcnMgZXJyb3JzIHNnID1cbiAgICBsZXQgc29ydGVkID0gc29ydF9lcnJvcnNfYnlfbG9jIGVycm9ycyBpblxuICAgIExpc3QubWFwIHNvcnRlZCB+ZjooZnVuIGVycm9yIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICAgICAgICB+bG9jOihMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IpXG4gICAgICAgICAgKExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvcilcbiAgICAgICAgICBbXVxuICAgICAgICB8PiBnaG9zdCNzaWduYXR1cmVfaXRlbSlcbiAgICBAIHNnXG4gIGluXG4gIGxldCBjb29raWVzX2FuZF9jaGVjayBzZyA9XG4gICAgQ29va2llcy5jYWxsX3Bvc3RfaGFuZGxlcnMgVDtcbiAgICBsZXQgZXJyb3JzID1cbiAgICAgIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHdvIHBhc3NlcyBjb3VsZCBiZSBtZXJnZWQsIHdlIG5vdyBoYXZlIG1vcmUgcGFzc2VzIGZvclxuICAgICAgICAgICBjaGVja3MgdGhhbiBmb3IgYWN0dWFsIHJld3JpdGluZy4gKilcbiAgICAgICAgbGV0IHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgQXR0cmlidXRlLmNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICAgICAgICAgIGlmICFwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIHRoZW5cbiAgICAgICAgICAgIEV4dGVuc2lvbi5jb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3NpZ25hdHVyZSBzZyBbXVxuICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vdF9zZWVuX2Vycm9ycyA9IEF0dHJpYnV0ZS5jb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgaW5cbiAgICAgICAgKGlmICFwZXJmb3JtX2xvY2F0aW9uc19jaGVjayB0aGVuXG4gICAgICAgICAgIGxldCBvcGVuIExvY2F0aW9uX2NoZWNrIGluXG4gICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICgoZW5mb3JjZV9pbnZhcmlhbnRzICFsb2NfZm5hbWUpI3NpZ25hdHVyZSBzZ1xuICAgICAgICAgICAgICAgIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICAgICA6IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLnQpKTtcbiAgICAgICAgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIEAgdW51c2VkX2V4dGVuc2lvbl9lcnJvcnMgQCBub3Rfc2Vlbl9lcnJvcnMpXG4gICAgICBlbHNlIFtdXG4gICAgaW5cbiAgICB3aXRoX2Vycm9ycyBlcnJvcnMgc2dcbiAgaW5cbiAgbGV0IGZpbGVfcGF0aCA9IGdldF9kZWZhdWx0X3BhdGhfc2lnIHNnIGluXG4gIGxldCBzZywgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgYXBwbHlfdHJhbnNmb3JtcyBzZyB+dG9vbF9uYW1lIH5maWxlX3BhdGhcbiAgICAgIH5maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5pbnRmKVxuICAgICAgfmxpbnRfZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QubGludF9pbnRmKVxuICAgICAgfmRyb3BwZWRfc29fZmFyOkF0dHJpYnV0ZS5kcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUgfmhvb2tcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZSB+ZW1iZWRfZXJyb3JzXG4gIGluXG4gIHNnIHw+IGxpbnQgbGludF9lcnJvcnMgfD4gY29va2llc19hbmRfY2hlY2sgfD4gd2l0aF9lcnJvcnMgKExpc3QucmV2IGVycm9ycylcblxubGV0IG1hcF9zaWduYXR1cmUgc2cgPVxuICBtYXRjaFxuICAgIG1hcF9zaWduYXR1cmVfZ2VuIHNnXG4gICAgICB+dG9vbF9uYW1lOihBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSlcbiAgICAgIH5ob29rOkNvbnRleHRfZnJlZS5HZW5lcmF0ZWRfY29kZV9ob29rLm5vcFxuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyOkNvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3BcbiAgICAgIH5pbnB1dF9uYW1lOk5vbmUgfmVtYmVkX2Vycm9yczpmYWxzZVxuICB3aXRoXG4gIHwgYXN0IC0+IGFzdFxuXG4oKiQqKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEVudHJ5IHBvaW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBzdHJpbmdfY29udGFpbnNfYmluYXJ5X2FzdCBzID1cbiAgbGV0IHRlc3QgbWFnaWNfbnVtYmVyID1cbiAgICBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDooU3RyaW5nLnN1YiBtYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgaW5cbiAgdGVzdCBBc3RfbWFnaWMuYXN0X2ludGZfbWFnaWNfbnVtYmVyIHx8IHRlc3QgQXN0X21hZ2ljLmFzdF9pbXBsX21hZ2ljX251bWJlclxuXG5sZXQgdmVyc2lvbmVkX2Vycm9yZiBpbnB1dF92ZXJzaW9uIGlucHV0X2ZpbGVfbmFtZSA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIG1zZyAtPlxuICAgICAgbGV0IGVyciA9XG4gICAgICAgIExvY2F0aW9uLkVycm9yLm1ha2UgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBpbnB1dF9maWxlX25hbWUpIG1zZyB+c3ViOltdXG4gICAgICBpblxuICAgICAgRXJyb3IgKGVyciwgaW5wdXRfdmVyc2lvbikpXG5cbmxldCByZW1vdmVfbm9fZXJyb3IgZm4gPSB0cnkgU3RkbGliLlN5cy5yZW1vdmUgZm4gd2l0aCBTeXNfZXJyb3IgXyAtPiAoKVxuXG5sZXQgcHJvdGVjdHggeCB+ZiB+ZmluYWxseSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgdiAtPlxuICAgICAgZmluYWxseSB4O1xuICAgICAgdlxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICByYWlzZSBlXG5cbmxldCB3aXRoX3ByZXByb2Nlc3NlZF9maWxlIGZuIH5mID1cbiAgbWF0Y2ggIXByZXByb2Nlc3NvciB3aXRoXG4gIHwgTm9uZSAtPiBmIGZuXG4gIHwgU29tZSBwcCAtPlxuICAgICAgcHJvdGVjdHggKFN0ZGxpYi5GaWxlbmFtZS50ZW1wX2ZpbGUgXCJvY2FtbHBwXCIgXCJcIikgfmZpbmFsbHk6cmVtb3ZlX25vX2Vycm9yXG4gICAgICAgIH5mOihmdW4gdG1wZmlsZSAtPlxuICAgICAgICAgIG1hdGNoIFN5c3RlbS5ydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQ6Zm4gfm91dHB1dDp0bXBmaWxlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGYgdG1wZmlsZVxuICAgICAgICAgIHwgRXJyb3IgKGZhaWxlZF9jb21tYW5kLCBmYWxsX2JhY2tfdmVyc2lvbikgLT5cbiAgICAgICAgICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICAgICAgICAgIFwiRXJyb3Igd2hpbGUgcnVubmluZyBleHRlcm5hbCBwcmVwcm9jZXNzb3JcXG5Db21tYW5kIGxpbmU6ICVzXFxuXCJcbiAgICAgICAgICAgICAgICBmYWlsZWRfY29tbWFuZClcblxubGV0IHJlbG9jYXRlX21hcHBlciA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZyAqIHN0cmluZ10gQXN0X3RyYXZlcnNlLm1hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCEgcG9zaXRpb24gKG9sZF9mbiwgbmV3X2ZuKSBwb3MgPVxuICAgICAgaWYgU3RyaW5nLmVxdWFsIHBvcy5wb3NfZm5hbWUgb2xkX2ZuIHRoZW4geyBwb3Mgd2l0aCBwb3NfZm5hbWUgPSBuZXdfZm4gfVxuICAgICAgZWxzZSBwb3NcbiAgZW5kXG5cbigqIFNldCB0aGUgaW5wdXQgbmFtZSBnbG9iYWxseS4gVGhpcyBpcyB1c2VkIGJ5IHNvbWUgcHB4IHJld3JpdGVyc1xuICAgc3VjaCBhcyBiaXNlY3RfcHB4LiAqKVxubGV0IHNldF9pbnB1dF9uYW1lID0gQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9uYW1lXG5cbmxldCBsb2FkX2lucHV0IH4oa2luZCA6IEtpbmQudCkgfmlucHV0X25hbWUgfnJlbG9jYXRlIGZuID1cbiAgc2V0X2lucHV0X25hbWUgaW5wdXRfbmFtZTtcbiAgbGV0IGlucHV0X3NvdXJjZSA9IGlmIFN0cmluZy5lcXVhbCBmbiBcIi1cIiB0aGVuIEFzdF9pby5TdGRpbiBlbHNlIEZpbGUgZm4gaW5cbiAgbGV0IGlucHV0X2tpbmQgPSBBc3RfaW8uUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSBpblxuICBtYXRjaCBBc3RfaW8ucmVhZCBpbnB1dF9zb3VyY2UgfmlucHV0X2tpbmQgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdF9raW5kID0gSW50Zl9vcl9pbXBsLmtpbmQgYXN0IGluXG4gICAgICBpZiBub3QgKEtpbmQuZXF1YWwga2luZCBhc3Rfa2luZCkgdGhlblxuICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gZm5cbiAgICAgICAgICBcIkZpbGUgY29udGFpbnMgYSBiaW5hcnkgJXMgQVNUIGJ1dCBhbiAlcyB3YXMgZXhwZWN0ZWRcIlxuICAgICAgICAgIChLaW5kLmRlc2NyaWJlIGFzdF9raW5kKSAoS2luZC5kZXNjcmliZSBraW5kKVxuICAgICAgZWxzZSBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB8fCBub3QgcmVsb2NhdGUgdGhlbiAoXG4gICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICBPayAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIE9rXG4gICAgICAgICAgKCBpbnB1dF9uYW1lLFxuICAgICAgICAgICAgaW5wdXRfdmVyc2lvbixcbiAgICAgICAgICAgIEludGZfb3JfaW1wbC5tYXBfd2l0aF9jb250ZXh0IGFzdCByZWxvY2F0ZV9tYXBwZXJcbiAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKSApXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgdmVyc2lvbmVkX2Vycm9yZiBmYWxsX2JhY2tfdmVyc2lvbiBmblxuICAgICAgICBcIkZpbGUgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKSlcbiAgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKSAtPlxuICAgICAgRXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbilcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGZuID1cbiAgKCogSWYgdGhlcmUncyBhbiBlcnJvciB3aGlsZSBsb2FkaW5nIGluIHJ1bl9hc19wcHggbW9kZSwgdGhlIGtpbmQgb2YgQVNUIChpbXBsL2ludGYpIGlzIHN0aWxsIHVua25vd24uXG4gICAgIFRoYXQncyB3aHksIGFzIG9wcG9zZWQgdG8gbG9hZF9pbnB1dCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgZXJyb3JzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgcmVzdWx0OlxuICAgICBoYW5kbGluZyBhbiBlcnJvciBieSByZXR1cm5pbmcgYW4gQVNUIHdpdGggdGhlIGVycm9yIHBhY2tlZCBhcyBleHRlbnNpb24gbm9kZSB3b3VsZG4ndCBiZSBwb3NzaWJsZS4gKilcbiAgbWF0Y2ggQXN0X2lvLnJlYWQgKEZpbGUgZm4pIH5pbnB1dF9raW5kOkFzdF9pby5OZWNlc3NhcmlseV9iaW5hcnkgd2l0aFxuICB8IE9rIHsgaW5wdXRfbmFtZSA9IGFzdF9pbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGFzdF9pbnB1dF9uYW1lO1xuICAgICAgICAgICAgYXN0XG4gICAgICAgIHwgU29tZSBpbnB1dF9uYW1lIC0+XG4gICAgICAgICAgICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgaWYgU3RyaW5nLmVxdWFsIGFzdF9pbnB1dF9uYW1lIGlucHV0X25hbWUgdGhlbiBhc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAgIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfbmFtZSlcbiAgICAgIGluXG4gICAgICAoKiBXaXRoIGAtLWFzLXBweGAsIG9jYW1sIGNhbGxzIHRoZSBzdGFuZGFsb25lIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5IHN0cnVjdHVyZS9zaWduYXR1cmUgaXRlbVxuICAgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgYXMgbWV0YWRhdGEgdGhhdCBpdCBnZXRzIGZyb20gdGhlIHByZXZpb3VzIGNhbGwuIHJlbG9jYXRlX21hcHBlciBvbmx5XG4gICAgICAgICByZWxvY2F0ZXMgcG9zaXRpb25zIHdob3NlIHBvc2l0aW9uIGZpbGVuYW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgbWV0YWRhdGEgZmlsZW5hbWUuXG4gICAgICAgICBTbyBhbHdheXMgcmV0dXJuIHRoZSBtZXRhZGF0YSBmaWxlbmFtZSBpdHNlbGYsIGV2ZW4gaWYgYC1sb2MtZmlsZW5hbWVgIGlzIHByb3ZpZGVkLiAqKVxuICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpXG4gIHwgRXJyb3IgKFVua25vd25fdmVyc2lvbiAodW5rbm93bl9tYWdpYywgXykpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJUaGUgaW5wdXQgaXMgYSBiaW5hcnkgYXN0IGZvciBhbiB1bmtub3duIHZlcnNpb24gb2YgT0NhbWwgd2l0aCBtYWdpYyBcXFxuICAgICAgICAgbnVtYmVyICclcydcIlxuICAgICAgICB1bmtub3duX21hZ2ljXG4gIHwgRXJyb3IgTm90X2FfYmluYXJ5X2FzdCAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICAgIFwiRXhwZWN0ZWQgYSBiaW5hcnkgQVNUIGFzIGlucHV0XCJcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgXykpIHwgRXJyb3IgKFNvdXJjZV9wYXJzZV9lcnJvciAoZXJyb3IsIF8pKSAtPlxuICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgIExvY2F0aW9uLnNldF9maWxlbmFtZSAoZ2V0X2xvY2F0aW9uIGVycm9yKSBmbiB8PiB1cGRhdGVfbG9jIGVycm9yIHw+IHJhaXNlXG5cbmxldCBsb2FkX3NvdXJjZV9maWxlIGZuID1cbiAgbGV0IHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZuIGluXG4gIGlmIHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgXCJwcHhsaWJfZHJpdmVyOiBjYW5ub3QgdXNlIC1yZWNvbmNpbGUgd2l0aCBiaW5hcnkgQVNUIGZpbGVzXCI7XG4gIHNcblxudHlwZSBvdXRwdXRfbW9kZSA9XG4gIHwgUHJldHR5X3ByaW50XG4gIHwgRHVtcF9hc3RcbiAgfCBEcGFyc2V0cmVlXG4gIHwgUmVjb25jaWxlIG9mIFJlY29uY2lsZS5tb2RlXG4gIHwgTnVsbFxuXG4oKiQqKVxubGV0IGV4dHJhY3RfY29va2llc19zdHIgc3QgPVxuICBsZXQgc3QgPVxuICAgIG1hdGNoIHN0IHdpdGhcbiAgICB8ICh7XG4gICAgICAgICBwc3RyX2Rlc2MgPVxuICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IHsgdHh0ID0gXCJvY2FtbC5wcHguY29udGV4dFwiOyBfIH07IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwcmVmaXgpXG4gICAgICA6OiBzdCAtPlxuICAgICAgICBsZXQgcHJlZml4ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3QudG9fb2NhbWwgU3RydWN0dXJlIFsgcHJlZml4IF0gaW5cbiAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICBMaXN0LmlzX2VtcHR5XG4gICAgICAgICAgICAoQXN0bGliLkFzdF9tZXRhZGF0YS5kcm9wX3BweF9jb250ZXh0X3N0ciB+cmVzdG9yZTp0cnVlIHByZWZpeCkpO1xuICAgICAgICBzdFxuICAgIHwgXyAtPiBzdFxuICBpblxuICAoKiBUaGUgY2xpIGNvb2tpZXMgaGF2ZSB0byBiZSBzZXQgYWZ0ZXIgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCxcbiAgICAgc2luY2UgcmVzdG9yaW5nIHRoZSBwcHggY29udGV4dCByZXNldHMgdGhlIGNvb2tpZXMgKilcbiAgTGlzdC5pdGVyICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpIH5mOihmdW4gKG5hbWUsIGV4cHIpIC0+XG4gICAgICBDb29raWVzLnNldCBUIG5hbWUgZXhwcik7XG4gIHN0XG5cbmxldCBhZGRfY29va2llc19zdHIgc3QgPVxuICBsZXQgcHJlZml4ID1cbiAgICBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweGxpYl9kcml2ZXJcIiBbXVxuICAgIHw+IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIFN0cnVjdHVyZVxuICBpblxuICBwcmVmaXggQCBzdFxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5sZXQgZXh0cmFjdF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBzZyA9XG4gICAgbWF0Y2ggc2cgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzaWdfZGVzYyA9XG4gICAgICAgICAgIFBzaWdfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHNnIC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTaWduYXR1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc2lnIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHNnXG4gICAgfCBfIC0+IHNnXG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc2dcblxubGV0IGFkZF9jb29raWVzX3NpZyBzZyA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU2lnbmF0dXJlXG4gIGluXG4gIHByZWZpeCBAIHNnXG5cbigqJCopXG5cbmxldCBleHRyYWN0X2Nvb2tpZXMgKGFzdCA6IEludGZfb3JfaW1wbC50KSA6IEludGZfb3JfaW1wbC50ID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT4gSW50ZiAoZXh0cmFjdF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChleHRyYWN0X2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBhZGRfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChhZGRfY29va2llc19zaWcgeClcbiAgfCBJbXBsIHggLT4gSW1wbCAoYWRkX2Nvb2tpZXNfc3RyIHgpXG5cbmxldCBjb3JyZWN0aW9ucyA9IHJlZiBbXVxubGV0IGFkZF90b19saXN0IHIgeCA9IHIgOj0geCA6OiAhclxuXG5sZXQgcmVnaXN0ZXJfY29ycmVjdGlvbiB+bG9jIH5yZXBsID1cbiAgYWRkX3RvX2xpc3QgY29ycmVjdGlvbnNcbiAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2VfdGV4dCAoKSB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZFxuICAgICAgIH5yZXBsKVxuXG5sZXQgcHJvY2Vzc19maWxlX2hvb2tzID0gcmVmIFtdXG5sZXQgcmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2sgZiA9IGFkZF90b19saXN0IHByb2Nlc3NfZmlsZV9ob29rcyBmXG5cbm1vZHVsZSBGaWxlX3Byb3BlcnR5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIG11dGFibGUgZGF0YSA6ICdhIG9wdGlvbjtcbiAgICBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnQ7XG4gIH1cblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGFsbCA9IHJlZiBbXVxuICBsZXQgcmVnaXN0ZXIgdCA9IGFkZF90b19saXN0IGFsbCAoVCB0KVxuICBsZXQgcmVzZXRfYWxsICgpID0gTGlzdC5pdGVyICFhbGwgfmY6KGZ1biAoVCB0KSAtPiB0LmRhdGEgPC0gTm9uZSlcblxuICBsZXQgZHVtcF9hbmRfcmVzZXRfYWxsICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QucmV2ICFhbGwpIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbWF0Y2ggdC5kYXRhIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICAgIHQuZGF0YSA8LSBOb25lO1xuICAgICAgICAgICAgU29tZSAodC5uYW1lLCB0LnNleHBfb2ZfdCB2KSlcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2ZpbGVfcHJvcGVydHlcbiAgICAoTmFtZSA6IHNpZ1xuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmQpXG4gICAgKFQgOiBTZXhwYWJsZS5TKSA9XG5zdHJ1Y3RcbiAgbGV0IHQgOiBfIEZpbGVfcHJvcGVydHkudCA9XG4gICAgeyBuYW1lID0gTmFtZS5uYW1lOyBkYXRhID0gTm9uZTsgc2V4cF9vZl90ID0gVC5zZXhwX29mX3QgfVxuXG4gIGxldCAoKSA9IEZpbGVfcHJvcGVydHkucmVnaXN0ZXIgdFxuICBsZXQgc2V0IHggPSB0LmRhdGEgPC0gU29tZSB4XG5lbmRcblxubGV0IHByb2Nlc3NfYXN0IChhc3QgOiBJbnRmX29yX2ltcGwudCkgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9va1xuICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+ZW1iZWRfZXJyb3JzID1cbiAgbWF0Y2ggYXN0IHdpdGhcbiAgfCBJbnRmIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zaWduYXR1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW50ZiBhc3RcbiAgfCBJbXBsIHggLT5cbiAgICAgIGxldCBhc3QgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1hcF9zdHJ1Y3R1cmVfZ2VuIHggfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgICAgIH5pbnB1dF9uYW1lOihTb21lIGlucHV0X25hbWUpIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGFzdCAtPiBhc3RcbiAgICAgIGluXG4gICAgICBJbnRmX29yX2ltcGwuSW1wbCBhc3RcblxubGV0IHByb2Nlc3NfZmlsZSAoa2luZCA6IEtpbmQudCkgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZVxuICAgIH5lbWJlZF9lcnJvcnMgfm91dHB1dCA9XG4gIEZpbGVfcHJvcGVydHkucmVzZXRfYWxsICgpO1xuICBMaXN0Lml0ZXIgKExpc3QucmV2ICFwcm9jZXNzX2ZpbGVfaG9va3MpIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgY29ycmVjdGlvbnMgOj0gW107XG4gIGxldCByZXBsYWNlbWVudHMgPSByZWYgW10gaW5cbiAgbGV0IHRvb2xfbmFtZSA9IFwicHB4X2RyaXZlclwiIGluXG4gIGxldCBob29rIDogQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2sudCA9XG4gICAgbWF0Y2ggb3V0cHV0X21vZGUgd2l0aFxuICAgIHwgUmVjb25jaWxlIChVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpIC0+XG4gICAgICAgIHtcbiAgICAgICAgICBmID1cbiAgICAgICAgICAgIChmdW4gY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgZ2VuZXJhdGVkIC0+XG4gICAgICAgICAgICAgIGFkZF90b19saXN0IHJlcGxhY2VtZW50c1xuICAgICAgICAgICAgICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZSAoKSB+Y29udGV4dDooRXh0ZW5zaW9uIGNvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6Z2VuZXJhdGVkKSk7XG4gICAgICAgIH1cbiAgICB8IF8gLT4gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gIGluXG4gIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA6IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci50ID1cbiAgICB7XG4gICAgICBmID1cbiAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihGbG9hdGluZ19hdHRyaWJ1dGUgY29udGV4dClcbiAgICAgICAgICAgICAgIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kIH5yZXBsOihNYW55IGdlbmVyYXRlZCkpKTtcbiAgICB9XG4gIGluXG5cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9XG4gICAgbGV0IHByZXByb2Nlc3NlZF9hbmRfbG9hZGVkID1cbiAgICAgIHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmY6KGxvYWRfaW5wdXQgfmtpbmQgfmlucHV0X25hbWUgfnJlbG9jYXRlKVxuICAgIGluXG4gICAgbWF0Y2ggcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgd2l0aFxuICAgIHwgT2sgKGlucHV0X2ZuYW1lLCBpbnB1dF92ZXJzaW9uLCBhc3QpIC0+IChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGFzdCA9XG4gICAgICAgICAgICBleHRyYWN0X2Nvb2tpZXMgYXN0XG4gICAgICAgICAgICB8PiBwcm9jZXNzX2FzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGV4bl90b19leHRlbnNpb24gZXhuIH5raW5kKSlcbiAgICB8IEVycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikgd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgKGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGVycm9yX3RvX2V4dGVuc2lvbiBlcnJvciB+a2luZClcbiAgICB8IEVycm9yIChlcnJvciwgXykgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24uRXJyb3IgaW5cbiAgICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuXG4gICAgICAgIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcbiAgaW5cbiAgT3B0aW9uLml0ZXIgIW91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSB+ZjooZnVuIGZuIC0+XG4gICAgICBsZXQgbWV0YWRhdGEgPSBGaWxlX3Byb3BlcnR5LmR1bXBfYW5kX3Jlc2V0X2FsbCAoKSBpblxuICAgICAgT3V0X2NoYW5uZWwud3JpdGVfYWxsIGZuXG4gICAgICAgIH5kYXRhOlxuICAgICAgICAgIChMaXN0Lm1hcCBtZXRhZGF0YSB+ZjooZnVuIChzLCBzZXhwKSAtPlxuICAgICAgICAgICAgICAgU2V4cC50b19zdHJpbmdfaHVtIChTZXhwLkxpc3QgWyBBdG9tIHM7IHNleHAgXSkgXiBcIlxcblwiKVxuICAgICAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiKSk7XG5cbiAgbGV0IGlucHV0X2NvbnRlbnRzID0gbGF6eSAobG9hZF9zb3VyY2VfZmlsZSBmbikgaW5cbiAgbGV0IGNvcnJlY3RlZCA9IGZuIF4gIWNvcnJlY3RlZF9zdWZmaXggaW5cbiAgbGV0IG1pc21hdGNoZXNfZm91bmQgPVxuICAgIG1hdGNoICFjb3JyZWN0aW9ucyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgICBpZiBTdGRsaWIuU3lzLmZpbGVfZXhpc3RzIGNvcnJlY3RlZCB0aGVuIFN0ZGxpYi5TeXMucmVtb3ZlIGNvcnJlY3RlZDtcbiAgICAgICAgZmFsc2VcbiAgICB8IGNvcnJlY3Rpb25zIC0+XG4gICAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgY29ycmVjdGlvbnNcbiAgICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgICAgfm91dHB1dDooU29tZSBjb3JyZWN0ZWQpIH5pbnB1dF9maWxlbmFtZTpmbiB+aW5wdXRfbmFtZVxuICAgICAgICAgIH50YXJnZXQ6Q29ycmVjdGVkID9zdHlsZXI6IXN0eWxlciB+a2luZDtcbiAgICAgICAgdHJ1ZVxuICBpblxuXG4gIChtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gIHwgTnVsbCAtPiAoKVxuICB8IFByZXR0eV9wcmludCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gUHByaW50YXN0LnNpZ25hdHVyZSBwcGYgYXN0XG4gICAgICAgICAgfCBJbXBsIGFzdCAtPiBQcHJpbnRhc3Quc3RydWN0dXJlIHBwZiBhc3QpO1xuICAgICAgICAgIGxldCBudWxsX2FzdCA9XG4gICAgICAgICAgICBtYXRjaCBhc3Qgd2l0aCBJbnRmIFtdIHwgSW1wbCBbXSAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IG51bGxfYXN0IHRoZW4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBEdW1wX2FzdCAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgQXN0X2lvLndyaXRlIG9jXG4gICAgICAgICAgICB7IGlucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9XG4gICAgICAgICAgICB+YWRkX3BweF9jb250ZXh0OnRydWUpXG4gIHwgRHBhcnNldHJlZSAtPlxuICAgICAgd2l0aF9vdXRwdXQgb3V0cHV0IH5iaW5hcnk6ZmFsc2UgfmY6KGZ1biBvYyAtPlxuICAgICAgICAgIGxldCBwcGYgPSBTdGRsaWIuRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICAgICAgICAgIGxldCBhc3QgPSBhZGRfY29va2llcyBhc3QgaW5cbiAgICAgICAgICAobWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICB8IEludGYgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlIGFzdClcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFNleHAucHBfaHVtIHBwZiAoQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlIGFzdCkpO1xuICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpXG4gIHwgUmVjb25jaWxlIG1vZGUgLT5cbiAgICAgIFJlY29uY2lsZS5yZWNvbmNpbGUgIXJlcGxhY2VtZW50c1xuICAgICAgICB+Y29udGVudHM6KExhenkuZm9yY2UgaW5wdXRfY29udGVudHMpXG4gICAgICAgIH5vdXRwdXQgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lIH50YXJnZXQ6KE91dHB1dCBtb2RlKVxuICAgICAgICA/c3R5bGVyOiFzdHlsZXIgfmtpbmQpO1xuXG4gIGlmXG4gICAgbWlzbWF0Y2hlc19mb3VuZCAmJiBtYXRjaCAhZGlmZl9jb21tYW5kIHdpdGggU29tZSBcIi1cIiAtPiBmYWxzZSB8IF8gLT4gdHJ1ZVxuICB0aGVuIChcbiAgICBQcHhsaWJfcHJpbnRfZGlmZi5wcmludCAoKSB+ZmlsZTE6Zm4gfmZpbGUyOmNvcnJlY3RlZCB+dXNlX2NvbG9yOiF1c2VfY29sb3JcbiAgICAgID9kaWZmX2NvbW1hbmQ6IWRpZmZfY29tbWFuZDtcbiAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgb3V0cHV0X21vZGUgPSByZWYgUHJldHR5X3ByaW50XG5sZXQgb3V0cHV0ID0gcmVmIE5vbmVcbmxldCBraW5kID0gcmVmIE5vbmVcbmxldCBpbnB1dCA9IHJlZiBOb25lXG5sZXQgZW1iZWRfZXJyb3JzID0gcmVmIGZhbHNlXG5cbmxldCBzZXRfaW5wdXQgZm4gPVxuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT4gaW5wdXQgOj0gU29tZSBmblxuICB8IFNvbWUgXyAtPiByYWlzZSAoQXJnLkJhZCBcInRvbyBtYW55IGlucHV0IGZpbGVzXCIpXG5cbmxldCBzZXRfa2luZCBrID1cbiAgbWF0Y2ggIWtpbmQgd2l0aFxuICB8IFNvbWUgaycgd2hlbiBub3QgKEtpbmQuZXF1YWwgayBrJykgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwibXVzdCBzcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIC1pbXBsIG9yIC1pbnRmXCIpXG4gIHwgXyAtPiBraW5kIDo9IFNvbWUga1xuXG5sZXQgc2V0X291dHB1dF9tb2RlIG1vZGUgPVxuICBtYXRjaCAoIW91dHB1dF9tb2RlLCBtb2RlKSB3aXRoXG4gIHwgUHJldHR5X3ByaW50LCBfIC0+IG91dHB1dF9tb2RlIDo9IG1vZGVcbiAgfCBfLCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRHVtcF9hc3QsIER1bXBfYXN0IHwgRHBhcnNldHJlZSwgRHBhcnNldHJlZSAtPiAoKVxuICB8IFJlY29uY2lsZSBhLCBSZWNvbmNpbGUgYiB3aGVuIFBvbHkuZXF1YWwgYSBiIC0+ICgpXG4gIHwgeCwgeSAtPlxuICAgICAgbGV0IGFyZ19vZl9vdXRwdXRfbW9kZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJldHR5X3ByaW50IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IER1bXBfYXN0IC0+IFwiLWR1bXAtYXN0XCJcbiAgICAgICAgfCBEcGFyc2V0cmVlIC0+IFwiLWRwYXJzZXRyZWVcIlxuICAgICAgICB8IFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgLT4gXCItcmVjb25jaWxlXCJcbiAgICAgICAgfCBSZWNvbmNpbGUgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+IFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCJcbiAgICAgICAgfCBOdWxsIC0+IFwiLW51bGxcIlxuICAgICAgaW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzIGFuZCAlcyBhcmUgaW5jb21wYXRpYmxlXCIgKGFyZ19vZl9vdXRwdXRfbW9kZSB4KVxuICAgICAgICAgICAgICAoYXJnX29mX291dHB1dF9tb2RlIHkpKSlcblxubGV0IHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKSA9XG4gIExpc3QuaXRlciAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIgY3QubmFtZSlcblxubGV0IHBhcnNlX2FwcGx5X2xpc3QgcyA9XG4gIGxldCBuYW1lcyA9XG4gICAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIiB0aGVuIFtdIGVsc2UgU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicsJ1xuICBpblxuICBMaXN0Lml0ZXIgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICBpZlxuICAgICAgICBub3RcbiAgICAgICAgICAoTGlzdC5leGlzdHMgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgIFRyYW5zZm9ybS5oYXNfbmFtZSBjdCBuYW1lKSlcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoU3RkbGliLkFyZy5CYWRcbiAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJjb2RlIHRyYW5zZm9ybWF0aW9uICclcycgZG9lcyBub3QgZXhpc3RcIiBuYW1lKSkpO1xuICBuYW1lc1xuXG50eXBlIG1hc2sgPSB7XG4gIG11dGFibGUgYXBwbHkgOiBzdHJpbmcgbGlzdCBvcHRpb247XG4gIG11dGFibGUgZG9udF9hcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbn1cblxubGV0IG1hc2sgPSB7IGFwcGx5ID0gTm9uZTsgZG9udF9hcHBseSA9IE5vbmUgfVxuXG5sZXQgaGFuZGxlX2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmFwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gICgqIFRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgaXQncyBtb3JlIGludHVpdGl2ZSAqKVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSAtZG9udC1hcHBseVwiKTtcbiAgbWFzay5hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBoYW5kbGVfZG9udF9hcHBseSBzID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICByYWlzZSAoQXJnLkJhZCBcIi1hcHBseSBjYWxsZWQgdG9vIG1hbnkgdGltZXNcIik7XG4gIG1hc2suZG9udF9hcHBseSA8LSBTb21lIChwYXJzZV9hcHBseV9saXN0IHMpXG5cbmxldCBpbnRlcnByZXRfbWFzayAoKSA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgfHwgT3B0aW9uLmlzX3NvbWUgbWFzay5kb250X2FwcGx5IHRoZW5cbiAgICBsZXQgc2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUgY3QgPVxuICAgICAgbGV0IGlzX2NhbmRpZGF0ZSA9XG4gICAgICAgIG1hdGNoIG1hc2suYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgbmFtZXMgLT4gTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdClcbiAgICAgIGluXG4gICAgICBsZXQgaXNfc2VsZWN0ZWQgPVxuICAgICAgICBtYXRjaCBtYXNrLmRvbnRfYXBwbHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaXNfY2FuZGlkYXRlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPlxuICAgICAgICAgICAgaXNfY2FuZGlkYXRlICYmIG5vdCAoTGlzdC5leGlzdHMgbmFtZXMgfmY6KFRyYW5zZm9ybS5oYXNfbmFtZSBjdCkpXG4gICAgICBpblxuICAgICAgaWYgaXNfc2VsZWN0ZWQgdGhlbiBTb21lIGN0Lm5hbWUgZWxzZSBOb25lXG4gICAgaW5cbiAgICBhcHBseV9saXN0IDo9XG4gICAgICBTb21lIChMaXN0LmZpbHRlcl9tYXAgIVRyYW5zZm9ybS5hbGwgfmY6c2VsZWN0ZWRfdHJhbnNmb3JtX25hbWUpXG5cbmxldCBzZXRfY29va2llIHMgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonPScgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIChBcmcuQmFkIFwiaW52YWxpZCBjb29raWUsIG11c3QgYmUgb2YgdGhlIGZvcm0gXFxcIjxuYW1lPj08ZXhwcj5cXFwiXCIpXG4gIHwgU29tZSAobmFtZSwgdmFsdWUpIC0+XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHZhbHVlIGluXG4gICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAge1xuICAgICAgICAgIExleGluZy5wb3NfZm5hbWUgPSBcIjxjb21tYW5kLWxpbmU+XCI7XG4gICAgICAgICAgcG9zX2xudW0gPSAxO1xuICAgICAgICAgIHBvc19ib2wgPSAwO1xuICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgfTtcbiAgICAgIGxldCBleHByID0gUGFyc2UuZXhwcmVzc2lvbiBsZXhidWYgaW5cbiAgICAgIENvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgOj0gKG5hbWUsIGV4cHIpIDo6ICFDb29raWVzLmdpdmVuX3Rocm91Z2hfY2xpXG5cbmxldCBzaGFyZWRfYXJncyA9XG4gIFtcbiAgICAoIFwiLWxvYy1maWxlbmFtZVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gbG9jX2ZuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIjxzdHJpbmc+IEZpbGUgbmFtZSB0byB1c2UgaW4gbG9jYXRpb25zXCIgKTtcbiAgICAoIFwiLXJlc2VydmUtbmFtZXNwYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlcy5yZXNlcnZlLFxuICAgICAgXCI8c3RyaW5nPiBNYXJrIHRoZSBnaXZlbiBuYW1lc3BhY2UgYXMgcmVzZXJ2ZWRcIiApO1xuICAgIChcIi1uby1jaGVja1wiLCBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3MsIFwiIERpc2FibGUgY2hlY2tzICh1bnNhZmUpXCIpO1xuICAgIChcIi1jaGVja1wiLCBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzLCBcIiBFbmFibGUgY2hlY2tzXCIpO1xuICAgICggXCItbm8tY2hlY2stb24tZXh0ZW5zaW9uc1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBEaXNhYmxlIGNoZWNrcyBvbiBleHRlbnNpb24gcG9pbnQgb25seVwiICk7XG4gICAgKCBcIi1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuU2V0IHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMsXG4gICAgICBcIiBFbmFibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLW5vLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLkNsZWFyIHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrLFxuICAgICAgXCIgRGlzYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1sb2NhdGlvbnMtY2hlY2tcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBFbmFibGUgbG9jYXRpb25zIGNoZWNrIG9ubHlcIiApO1xuICAgICggXCItYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2FwcGx5LFxuICAgICAgXCI8bmFtZXM+IEFwcGx5IHRoZXNlIHRyYW5zZm9ybWF0aW9ucyBpbiBvcmRlciAoY29tbWEtc2VwYXJhdGVkIGxpc3QpXCIgKTtcbiAgICAoIFwiLWRvbnQtYXBwbHlcIixcbiAgICAgIEFyZy5TdHJpbmcgaGFuZGxlX2RvbnRfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gRXhjbHVkZSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnNcIiApO1xuICAgICggXCItbm8tbWVyZ2VcIixcbiAgICAgIEFyZy5TZXQgbm9fbWVyZ2UsXG4gICAgICBcIiBEbyBub3QgbWVyZ2UgY29udGV4dCBmcmVlIHRyYW5zZm9ybWF0aW9ucyAoYmV0dGVyIGZvciBkZWJ1Z2dpbmcgXFxcbiAgICAgICByZXdyaXRlcnMpLiBBcyBhIHJlc3VsdCwgdGhlIGNvbnRleHQtZnJlZSB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5vdCBhbGwgXFxcbiAgICAgICBhcHBsaWVkIGJlZm9yZSBhbGwgaW1wbCBhbmQgaW50Zi5cIiApO1xuICAgIChcIi1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIk5BTUU9RVhQUiBTZXQgdGhlIGNvb2tpZSBOQU1FIHRvIEVYUFJcIik7XG4gICAgKFwiLS1jb29raWVcIiwgQXJnLlN0cmluZyBzZXRfY29va2llLCBcIiBTYW1lIGFzIC1jb29raWVcIik7XG4gIF1cblxubGV0ICgpID1cbiAgTGlzdC5pdGVyIHNoYXJlZF9hcmdzIH5mOihmdW4gKGtleSwgc3BlYywgZG9jKSAtPiBhZGRfYXJnIGtleSBzcGVjIH5kb2MpXG5cbmxldCBhc19wcCAoKSA9XG4gIHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdDtcbiAgZW1iZWRfZXJyb3JzIDo9IHRydWVcblxubGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gIFtcbiAgICAoIFwiLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi1hcy1wcHggbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnRcIikpLFxuICAgICAgXCIgUnVuIGFzIGEgLXBweCByZXdyaXRlciAobXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQpXCIgKTtcbiAgICAoIFwiLS1hcy1wcHhcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gcmFpc2UgKEFyZy5CYWQgXCItLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBTYW1lIGFzIC1hcy1wcHhcIiApO1xuICAgIChcIi1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2hvcnRoYW5kIGZvcjogLWR1bXAtYXN0IC1lbWJlZC1lcnJvcnNcIik7XG4gICAgKFwiLS1hcy1wcFwiLCBBcmcuVW5pdCBhc19wcCwgXCIgU2FtZSBhcyAtYXMtcHBcIik7XG4gICAgKCBcIi1vXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBvdXRwdXQgOj0gU29tZSBzKSxcbiAgICAgIFwiPGZpbGVuYW1lPiBPdXRwdXQgZmlsZSAodXNlICctJyBmb3Igc3Rkb3V0KVwiICk7XG4gICAgKFwiLVwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9pbnB1dCBcIi1cIiksIFwiIFJlYWQgaW5wdXQgZnJvbSBzdGRpblwiKTtcbiAgICAoIFwiLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBEdW1wIHRoZSBtYXJzaGFsZWQgYXN0IHRvIHRoZSBvdXRwdXQgZmlsZSBpbnN0ZWFkIG9mIHByZXR0eS1wcmludGluZyBpdFwiXG4gICAgKTtcbiAgICAoIFwiLS1kdW1wLWFzdFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHVtcF9hc3QpLFxuICAgICAgXCIgU2FtZSBhcyAtZHVtcC1hc3RcIiApO1xuICAgICggXCItZHBhcnNldHJlZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgRHBhcnNldHJlZSksXG4gICAgICBcIiBQcmludCB0aGUgcGFyc2V0cmVlIChzYW1lIGFzIG9jYW1sYyAtZHBhcnNldHJlZSlcIiApO1xuICAgICggXCItZW1iZWQtZXJyb3JzXCIsXG4gICAgICBBcmcuU2V0IGVtYmVkX2Vycm9ycyxcbiAgICAgIFwiIEVtYmVkIGVycm9ycyBpbiB0aGUgb3V0cHV0IEFTVCAoZGVmYXVsdDogdHJ1ZSB3aGVuIC1hcy1wcCwgZmFsc2UgXFxcbiAgICAgICBvdGhlcndpc2UpXCIgKTtcbiAgICAoIFwiLW51bGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIE51bGwpLFxuICAgICAgXCIgUHJvZHVjZSBubyBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXCIgKTtcbiAgICAoIFwiLWltcGxcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWwgZmlsZVwiICk7XG4gICAgKFwiLS1pbXBsXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW1wbCksIFwiPGZpbGU+IFNhbWUgYXMgLWltcGxcIik7XG4gICAgKCBcIi1pbnRmXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLFxuICAgICAgXCI8ZmlsZT4gVHJlYXQgdGhlIGlucHV0IGFzIGEgLm1saSBmaWxlXCIgKTtcbiAgICAoXCItLWludGZcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbnRmKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW50ZlwiKTtcbiAgICAoIFwiLWRlYnVnLWF0dHJpYnV0ZS1kcm9wXCIsXG4gICAgICBBcmcuU2V0IGRlYnVnX2F0dHJpYnV0ZV9kcm9wLFxuICAgICAgXCIgRGVidWcgYXR0cmlidXRlIGRyb3BwaW5nXCIgKTtcbiAgICAoIFwiLXByaW50LXRyYW5zZm9ybWF0aW9uc1wiLFxuICAgICAgQXJnLlNldCByZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyxcbiAgICAgIFwiIFByaW50IGxpbmtlZC1pbiBjb2RlIHRyYW5zZm9ybWF0aW9ucywgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIGFwcGxpZWRcIiApO1xuICAgICggXCItcHJpbnQtcGFzc2VzXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfcGFzc2VzLFxuICAgICAgXCIgUHJpbnQgdGhlIGFjdHVhbCBwYXNzZXMgb3ZlciB0aGUgd2hvbGUgQVNUIGluIHRoZSBvcmRlciB0aGV5IGFyZSBcXFxuICAgICAgIGFwcGxpZWRcIiApO1xuICAgICggXCItaXRlLWNoZWNrXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiV2FybmluZzogdGhlIC1pdGUtY2hlY2sgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gZWZmZWN0LlxcbiUhXCI7XG4gICAgICAgICAgRXh0cmFfd2FybmluZ3MuY2FyZV9hYm91dF9pdGVfYnJhbmNoIDo9IHRydWUpLFxuICAgICAgXCIgKG5vIGVmZmVjdCAtLSBrZXB0IGZvciBjb21wYXRpYmlsaXR5KVwiICk7XG4gICAgKCBcIi1wcFwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gcHJlcHJvY2Vzc29yIDo9IFNvbWUgcyksXG4gICAgICBcIjxjb21tYW5kPiAgUGlwZSBzb3VyY2VzIHRocm91Z2ggcHJlcHJvY2Vzc29yIDxjb21tYW5kPiAoaW5jb21wYXRpYmxlIFxcXG4gICAgICAgd2l0aCAtYXMtcHB4KVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIChSZWNvbmNpbGUgVXNpbmdfbGluZV9kaXJlY3RpdmVzKSksXG4gICAgICBcIiAoV0lQKSBQcmV0dHkgcHJpbnQgdGhlIG91dHB1dCB1c2luZyBhIG1peCBvZiB0aGUgaW5wdXQgc291cmNlIGFuZCB0aGUgXFxcbiAgICAgICBnZW5lcmF0ZWQgY29kZVwiICk7XG4gICAgKCBcIi1yZWNvbmNpbGUtd2l0aC1jb21tZW50c1wiLFxuICAgICAgQXJnLlVuaXRcbiAgICAgICAgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MpKSxcbiAgICAgIFwiIChXSVApIHNhbWUgYXMgLXJlY29uY2lsZSBidXQgdXNlcyBjb21tZW50cyB0byBlbmNsb3NlIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgRG9uJ3QgdXNlIGNvbG9ycyB3aGVuIHByaW50aW5nIGVycm9yc1wiKTtcbiAgICAoIFwiLWRpZmYtY21kXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgIFwiIERpZmYgY29tbWFuZCB3aGVuIHVzaW5nIGNvZGUgZXhwZWN0YXRpb25zICh1c2UgLSB0byBkaXNhYmxlIGRpZmZpbmcpXCIgKTtcbiAgICAoIFwiLXByZXR0eVwiLFxuICAgICAgQXJnLlNldCBwcmV0dHksXG4gICAgICBcIiBJbnN0cnVjdCBjb2RlIGdlbmVyYXRvcnMgdG8gaW1wcm92ZSB0aGUgcHJldHRpbmVzcyBvZiB0aGUgZ2VuZXJhdGVkIFxcXG4gICAgICAgY29kZVwiICk7XG4gICAgKFwiLXN0eWxlclwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzdHlsZXIgOj0gU29tZSBzKSwgXCIgQ29kZSBzdHlsZXJcIik7XG4gICAgKCBcIi1vdXRwdXQtbWV0YWRhdGFcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA6PSBTb21lIHMpLFxuICAgICAgXCJGSUxFIFdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgbWV0YWRhdGFcIiApO1xuICAgICggXCItY29ycmVjdGVkLXN1ZmZpeFwiLFxuICAgICAgQXJnLlNldF9zdHJpbmcgY29ycmVjdGVkX3N1ZmZpeCxcbiAgICAgIFwiU1VGRklYIFN1ZmZpeCB0byBhcHBlbmQgdG8gY29ycmVjdGVkIGZpbGVzXCIgKTtcbiAgXVxuXG5sZXQgZ2V0X2FyZ3MgPyhzdGFuZGFsb25lX2FyZ3MgPSBzdGFuZGFsb25lX2FyZ3MpICgpID1cbiAgc3RhbmRhbG9uZV9hcmdzIEAgTGlzdC5yZXYgIWFyZ3NcblxubGV0IHN0YW5kYWxvbmVfbWFpbiAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIFs8ZmlsZXM+XVwiIGV4ZV9uYW1lIGluXG4gIGxldCBhcmdzID0gZ2V0X2FyZ3MgKCkgaW5cbiAgQXJnLnBhcnNlIChBcmcuYWxpZ24gYXJncykgc2V0X2lucHV0IHVzYWdlO1xuICBpbnRlcnByZXRfbWFzayAoKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIHRoZW4gKFxuICAgIHByaW50X3RyYW5zZm9ybWF0aW9ucyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgaWYgIXJlcXVlc3RfcHJpbnRfcGFzc2VzIHRoZW4gKFxuICAgIHByaW50X3Bhc3NlcyAoKTtcbiAgICBTdGRsaWIuZXhpdCAwKTtcbiAgbWF0Y2ggIWlucHV0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzOiBubyBpbnB1dCBmaWxlIGdpdmVuXFxuJSFcIiBleGVfbmFtZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcbiAgfCBTb21lIGZuIC0+XG4gICAgICBsZXQga2luZCA9XG4gICAgICAgIG1hdGNoICFraW5kIHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT4ga1xuICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggS2luZC5vZl9maWxlbmFtZSBmbiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgXCIlczogZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJyVzJywgdXNlIC1pbXBsIG9yIC1pbnRmLlxcblwiXG4gICAgICAgICAgICAgICAgICBleGVfbmFtZSBmbjtcbiAgICAgICAgICAgICAgICBTdGRsaWIuZXhpdCAyKVxuICAgICAgaW5cbiAgICAgIGxldCBpbnB1dF9uYW1lLCByZWxvY2F0ZSA9XG4gICAgICAgIG1hdGNoICFsb2NfZm5hbWUgd2l0aCBOb25lIC0+IChmbiwgZmFsc2UpIHwgU29tZSBmbiAtPiAoZm4sIHRydWUpXG4gICAgICBpblxuICAgICAgcHJvY2Vzc19maWxlIGtpbmQgZm4gfmlucHV0X25hbWUgfnJlbG9jYXRlIH5vdXRwdXRfbW9kZTohb3V0cHV0X21vZGVcbiAgICAgICAgfm91dHB1dDohb3V0cHV0IH5lbWJlZF9lcnJvcnM6IWVtYmVkX2Vycm9yc1xuXG5sZXQgcmV3cml0ZV9iaW5hcnlfYXN0X2ZpbGUgaW5wdXRfZm4gb3V0cHV0X2ZuID1cbiAgbGV0IGlucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCA9IGxvYWRfaW5wdXRfcnVuX2FzX3BweCBpbnB1dF9mbiBpblxuICBsZXQgYXN0ID1cbiAgICB0cnlcbiAgICAgIGxldCBhc3QgPSBleHRyYWN0X2Nvb2tpZXMgYXN0IGluXG4gICAgICBsZXQgdG9vbF9uYW1lID0gQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkgaW5cbiAgICAgIGxldCBob29rID0gQ29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wIGluXG4gICAgICBsZXQgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgPSBDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wIGluXG4gICAgICBwcm9jZXNzX2FzdCBhc3QgfmlucHV0X25hbWUgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXJcbiAgICAgICAgfmVtYmVkX2Vycm9yczp0cnVlXG4gICAgd2l0aCBleG4gLT4gZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQ6KEludGZfb3JfaW1wbC5raW5kIGFzdClcbiAgaW5cbiAgd2l0aF9vdXRwdXQgKFNvbWUgb3V0cHV0X2ZuKSB+YmluYXJ5OnRydWUgfmY6KGZ1biBvYyAtPlxuICAgICAgQXN0X2lvLndyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH0gfmFkZF9wcHhfY29udGV4dDp0cnVlKVxuXG5sZXQgcGFyc2VfaW5wdXQgcGFzc2VkX2luX2FyZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2cgPVxuICB0cnlcbiAgICBBcmcucGFyc2VfYXJndiBwYXNzZWRfaW5fYXJncyAoQXJnLmFsaWduIHZhbGlkX2FyZ3MpXG4gICAgICAoZnVuIF8gLT4gcmFpc2UgKEFyZy5CYWQgXCJhbm9ueW1vdXMgYXJndW1lbnRzIG5vdCBhY2NlcHRlZFwiKSlcbiAgICAgIGluY29ycmVjdF9pbnB1dF9tc2dcbiAgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICAgIFN0ZGxpYi5leGl0IDBcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzIH51c2FnZSBpbnB1dCA9XG4gIGxldCB2YWxpZF9hcmdzID0gZ2V0X2FyZ3MgfnN0YW5kYWxvbmVfYXJncyAoKSBpblxuICBtYXRjaCBMaXN0LnJldiBAQCBBcnJheS50b19saXN0IEBAIGlucHV0IHdpdGhcbiAgfCBvdXRwdXRfZm4gOjogaW5wdXRfZm4gOjogZmxhZ3NfYW5kX3Byb2dfbmFtZVxuICAgIHdoZW4gTGlzdC5sZW5ndGggZmxhZ3NfYW5kX3Byb2dfbmFtZSA+IDAgLT5cbiAgICAgIGxldCBwcm9nX25hbWVfYW5kX2ZsYWdzID0gTGlzdC5yZXYgZmxhZ3NfYW5kX3Byb2dfbmFtZSB8PiBBcnJheS5vZl9saXN0IGluXG4gICAgICBwYXJzZV9pbnB1dCBwcm9nX25hbWVfYW5kX2ZsYWdzIH52YWxpZF9hcmdzIH5pbmNvcnJlY3RfaW5wdXRfbXNnOnVzYWdlO1xuICAgICAgaW50ZXJwcmV0X21hc2sgKCk7XG4gICAgICByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm47XG4gICAgICBTdGRsaWIuZXhpdCAwXG4gIHwgWyBoZWxwOyBfIF0gd2hlbiBTdHJpbmcuZXF1YWwgaGVscCBcIi1oZWxwXCIgfHwgU3RyaW5nLmVxdWFsIGhlbHAgXCItLWhlbHBcIiAtPlxuICAgICAgcGFyc2VfaW5wdXQgaW5wdXQgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgfCBfIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIlVzYWdlOiAlc1xcbiUhXCIgdXNhZ2U7XG4gICAgICBTdGRsaWIuZXhpdCAyXG5cbmxldCBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgbGV0IHVzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzIC1hcy1wcHggW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lXG4gIGluXG4gIGxldCBhcmd2ID0gQXJyYXkubWFrZSAobiAtIDEpIFwiXCIgaW5cbiAgYXJndi4oMCkgPC0gU3RkbGliLlN5cy5hcmd2LigwKTtcbiAgZm9yIGkgPSAxIHRvIG4gLSAyIGRvXG4gICAgYXJndi4oaSkgPC0gU3RkbGliLlN5cy5hcmd2LihpICsgMSlcbiAgZG9uZTtcbiAgbGV0IHN0YW5kYWxvbmVfYXJncyA9XG4gICAgTGlzdC5tYXAgc3RhbmRhbG9uZV9hcmdzIH5mOihmdW4gKGFyZywgc3BlYywgX2RvYykgLT5cbiAgICAgICAgKGFyZywgc3BlYywgXCIgVW51c2VkIHdpdGggLWFzLXBweFwiKSlcbiAgaW5cbiAgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGFyZ3ZcblxubGV0IHN0YW5kYWxvbmUgKCkgPVxuICBBc3RsaWIuaW5pdF9lcnJvcl9yZXBvcnRpbmdfc3R5bGVfdXNpbmdfZW52X3ZhcnMgKCk7XG4gIHRyeVxuICAgIGlmXG4gICAgICBBcnJheS5sZW5ndGggU3RkbGliLlN5cy5hcmd2ID49IDJcbiAgICAgICYmXG4gICAgICBtYXRjaCBTdGRsaWIuU3lzLmFyZ3YuKDEpIHdpdGhcbiAgICAgIHwgXCItYXMtcHB4XCIgfCBcIi0tYXMtcHB4XCIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiBzdGFuZGFsb25lX3J1bl9hc19wcHhfcmV3cml0ZXIgKClcbiAgICBlbHNlIHN0YW5kYWxvbmVfbWFpbiAoKTtcbiAgICBTdGRsaWIuZXhpdCAwXG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHJ1bl9hc19wcHhfcmV3cml0ZXIgKCkgPVxuICBsZXQgdXNhZ2UgPSBQcmludGYuc3ByaW50ZiBcIiVzIFtleHRyYV9hcmdzXSA8aW5maWxlPiA8b3V0ZmlsZT5cIiBleGVfbmFtZSBpblxuICBsZXQgaW5wdXQgPSBTdGRsaWIuU3lzLmFyZ3YgaW5cbiAgdHJ5IHJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiB+c3RhbmRhbG9uZV9hcmdzOltdIH51c2FnZSBpbnB1dFxuICB3aXRoIGV4biAtPlxuICAgIExvY2F0aW9uLnJlcG9ydF9leGNlcHRpb24gU3RkbGliLkZvcm1hdC5lcnJfZm9ybWF0dGVyIGV4bjtcbiAgICBTdGRsaWIuZXhpdCAxXG5cbmxldCBwcmV0dHkgKCkgPSAhcHJldHR5XG5cbmxldCBlbmFibGVfY2hlY2tzICgpID1cbiAgKCogV2UgZG8gbm90IGVuYWJsZSB0aGUgbG9jYXRpb25zIGNoZWNrIGhlcmUsIHdlIGN1cnJlbnRseSByZXF1aXJlIHRoYXQgb25lXG4gICAgIHRvIGJlIHNwZWNpZmljYWxseSBlbmFibGVkLiAqKVxuICBwZXJmb3JtX2NoZWNrcyA6PSB0cnVlO1xuICBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zIDo9IHRydWVcblxubGV0IGVuYWJsZV9sb2NhdGlvbl9jaGVjayAoKSA9IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIDo9IHRydWVcbmxldCBkaXNhYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gZmFsc2VcbmxldCBtYXBfc3RydWN0dXJlIHN0ID0gbWFwX3N0cnVjdHVyZSBzdFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG5sZXQgdW5kZXJzY29yZV9iaW5kaW5nIGV4cCA9XG4gIGxldCBsb2MgPSBleHAucGV4cF9sb2MgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpIH5leHByOmV4cFxuXG5sZXQgdmFyc19vZiA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvbmdpZGVudC50IExvY2F0ZWQudCBsaXN0XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdHQgYWNjID1cbiAgICAgIG1hdGNoIHBhdHQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF92YXIgdiAtPiBMb2NhdGVkLm1hcCAoZnVuIHZhciAtPiBMb25naWRlbnQuTGlkZW50IHZhcikgdiA6OiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuIHBhdHQgYWNjXG4gIGVuZFxuXG4oKiBGb3IgZXZlcnkgW2xldCB4ID0gLi4uXSBzdHJ1Y3R1cmUgaXRlbSwgYWRkIGEgW2xldCBfID0geF0gKilcbmxldCBhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZSBzdCA9XG4gICAgICBsZXQgcmVjIGxvb3Agc3QgYWNjID1cbiAgICAgICAgbWF0Y2ggc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgICB8ICh7IHBzdHJfZGVzYyA9IFBzdHJfdmFsdWUgKF8sIHZicyk7IHBzdHJfbG9jID0gbG9jIH0gYXMgaXRlbSkgOjogcmVzdFxuICAgICAgICAgIC0+XG4gICAgICAgICAgICBsZXQgdmFycyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IHZicyB+aW5pdDpbXSB+ZjooZnVuIGFjYyB2YiAtPlxuICAgICAgICAgICAgICAgICAgdmFyc19vZiNwYXR0ZXJuIHZiLnB2Yl9wYXQgYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBpZ24gPVxuICAgICAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIHZhcnMgfmY6KGZ1biB2IC0+XG4gICAgICAgICAgICAgICAgICAgICB1bmRlcnNjb3JlX2JpbmRpbmcgKHBleHBfaWRlbnQgfmxvYzp2LmxvYyB2KSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbG9vcCByZXN0IChpZ24gQCAoaXRlbSA6OiBhY2MpKVxuICAgICAgICB8IGl0ZW0gOjogcmVzdCAtPiBsb29wIHJlc3QgKGl0ZW0gOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKHN1cGVyI3N0cnVjdHVyZSBzdCkgW11cbiAgZW5kXG5cbmxldCBiaW5kc19tb2R1bGVfbmFtZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtib29sXSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBtYiBhY2MgPVxuICAgICAgbWF0Y2ggbWIucG1iX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9iaW5kaW5nIG1iIGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjID1cbiAgICAgIG1hdGNoIG1kLnBtZF9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgIHwgTm9uZSAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gbWQgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24gbXMgXyA9XG4gICAgICBtYXRjaCBtcy5wbXNfbmFtZS50eHQgd2l0aCAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuXG4gICAgbWV0aG9kISBmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgfCBOYW1lZCAobmFtZSwgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZnVuY3Rvcl9wYXJhbWV0ZXIgZnAgYWNjKVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHBhdCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfdW5wYWNrIG5hbWUgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGggU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZSB8IE5vbmUgLT4gYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGV4cHIgYWNjID1cbiAgICAgIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIF8sIF8pIC0+IChcbiAgICAgICAgICBtYXRjaCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gZXhwciBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjY1xuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcblxuKCogW2RvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGVdIC0tIElmIHRydWUsIGdlbmVyYXRlZCBjb2RlXG4gICBjb250YWlucyBjb21waWxlciBhdHRyaWJ1dGUgdG8gZGlzYWJsZSB1bnVzZWQgd2FybmluZ3MsIGluc3RlYWQgb2ZcbiAgIGluc2VydGluZyBbbGV0IF8gPSAuLi4gXS4gKilcbmxldCBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW1wbCA9IHJlZiBmYWxzZVxubGV0IGtlZXBfdzMyX2ludGYgPSByZWYgZmFsc2VcblxubGV0ICgpID1cbiAgbGV0IGtlZXBfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJpbXBsXCI7IFwiaW50ZlwiOyBcImJvdGhcIiBdLFxuICAgICAgICBmdW5jdGlvblxuICAgICAgICB8IFwiaW1wbFwiIC0+IGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZVxuICAgICAgICB8IFwiaW50ZlwiIC0+IGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IFwiYm90aFwiIC0+XG4gICAgICAgICAgICBrZWVwX3czMl9pbXBsIDo9IHRydWU7XG4gICAgICAgICAgICBrZWVwX3czMl9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIGxldCBjb252X3czMl9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiY29kZVwiOyBcImF0dHJpYnV0ZVwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJjb2RlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSBmYWxzZVxuICAgICAgICB8IFwiYXR0cmlidXRlXCIgLT4gZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgSG93IHRvIGRpc2FibGUgd2FybmluZyAzMiBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCI7XG4gIERyaXZlci5hZGRfYXJnIFwiLXR5cGUtY29udi1rZWVwLXczMlwiIGtlZXBfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmcta2VlcC13MzJcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LXczMlwiIGNvbnZfdzMyX3NwZWNcbiAgICB+ZG9jOlwiIERlcHJlY2F0ZWQsIHVzZSAtZGVyaXZpbmctZGlzYWJsZS13MzItbWV0aG9kXCJcblxubGV0IGtlZXBfdzMyX2ltcGwgKCkgPSAha2VlcF93MzJfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93MzJfaW50ZiAoKSA9ICFrZWVwX3czMl9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93NjBfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93NjBfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93NjBfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzYwX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzYwX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgRHJpdmVyLmFkZF9hcmcgXCItZGVyaXZpbmcta2VlcC13NjBcIiBrZWVwX3c2MF9zcGVjXG4gICAgfmRvYzpcIiBEbyBub3QgdHJ5IHRvIGRpc2FibGUgd2FybmluZyA2MCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXCJcblxubGV0IGtlZXBfdzYwX2ltcGwgKCkgPSAha2VlcF93NjBfaW1wbCB8fCBEcml2ZXIucHJldHR5ICgpXG5sZXQga2VlcF93NjBfaW50ZiAoKSA9ICFrZWVwX3c2MF9pbnRmIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyA9IHJlZiBPcHRpb25zLmRlZmF1bHRfYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubGV0ICgpID1cbiAgRHJpdmVyLmFkZF9hcmcgXCItdW51c2VkLWNvZGUtd2FybmluZ3NcIlxuICAgIChCb29sICgoIDo9ICkgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MpKVxuICAgIH5kb2M6XCJfIEFsbG93IHBweCBkZXJpdmVycyB0byBlbmFibGUgdW51c2VkIGNvZGUgd2FybmluZ3NcIlxuXG5sZXQgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKCkgPSAhYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3NcblxubW9kdWxlIEFyZ3MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgQXN0X3BhdHRlcm4gOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQXN0X3BhdHRlcm5cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBBc3RfcGF0dGVybi50KVxuXG4gIHR5cGUgJ2EgcGFyYW0gPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBwYXR0ZXJuIDogKGV4cHJlc3Npb24sICdhKSBBc3RfcGF0dGVybi5QYWNrZWQudDtcbiAgICBkZWZhdWx0IDogJ2E7XG4gIH1cblxuICBsZXQgYXJnIG5hbWUgcGF0dGVybiA9XG4gICAge1xuICAgICAgbmFtZTtcbiAgICAgIGRlZmF1bHQgPSBOb25lO1xuICAgICAgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiAoZnVuIHggLT4gU29tZSB4KTtcbiAgICB9XG5cbiAgbGV0IGZsYWcgbmFtZSA9XG4gICAgbGV0IHBhdHRlcm4gPSBwZXhwX2lkZW50IChsaWRlbnQgKHN0cmluZyBuYW1lKSkgaW5cbiAgICB7IG5hbWU7IGRlZmF1bHQgPSBmYWxzZTsgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLlBhY2tlZC5jcmVhdGUgcGF0dGVybiB0cnVlIH1cblxuICB0eXBlIChfLCBfKSB0ID1cbiAgICB8IE5pbCA6ICgnbSwgJ20pIHRcbiAgICB8IENvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIHQgKiAnYSBwYXJhbSAtPiAoJ20xLCAnbTIpIHRcblxuICBsZXQgZW1wdHkgPSBOaWxcbiAgbGV0ICggKz4gKSBhIGIgPSBDb25zIChhLCBiKVxuXG4gIGxldCByZWMgbmFtZXMgOiB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gc3RyaW5nIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IFtdXG4gICAgfCBDb25zICh0LCBwKSAtPiBwLm5hbWUgOjogbmFtZXMgdFxuXG4gIG1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgKF8sIF8pIGluc3RhbmNlID1cbiAgICAgIHwgSV9uaWwgOiAoJ20sICdtKSBpbnN0YW5jZVxuICAgICAgfCBJX2NvbnMgOiAoJ20xLCAnYSAtPiAnbTIpIGluc3RhbmNlICogJ2EgLT4gKCdtMSwgJ20yKSBpbnN0YW5jZVxuXG4gICAgbGV0IHJlYyBjcmVhdGUgOlxuICAgICAgICB0eXBlIGEgYi4gKGEsIGIpIHQgLT4gKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QgLT4gKGEsIGIpIGluc3RhbmNlID1cbiAgICAgZnVuIHNwZWMgYXJncyAtPlxuICAgICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgICB8IE5pbCAtPiBJX25pbFxuICAgICAgfCBDb25zICh0LCBwKSAtPlxuICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jX29wdCBwLm5hbWUgYXJncyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcC5kZWZhdWx0XG4gICAgICAgICAgICB8IFNvbWUgZXhwciAtPiBBc3RfcGF0dGVybi5QYWNrZWQucGFyc2UgcC5wYXR0ZXJuIGV4cHIucGV4cF9sb2MgZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgSV9jb25zIChjcmVhdGUgdCBhcmdzLCB2YWx1ZSlcblxuICAgIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYi4gKGEsIGIpIGluc3RhbmNlIC0+IGEgLT4gYiA9XG4gICAgIGZ1biB0IGYgLT4gbWF0Y2ggdCB3aXRoIElfbmlsIC0+IGYgfCBJX2NvbnMgKHQsIHgpIC0+IGFwcGx5IHQgZiB4XG4gIGVuZFxuXG4gIGxldCBhcHBseSB0IGFyZ3MgZiA9IEluc3RhbmNlLmFwcGx5IChJbnN0YW5jZS5jcmVhdGUgdCBhcmdzKSBmXG5lbmRcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBHZW5lcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGlnbm9yZSAoXyA6IHQpID0gKClcblxudHlwZSBwYXJzZWRfYXJncyA9XG4gIHwgQXJncyBvZiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdFxuICB8IFVua25vd25fc3ludGF4IG9mIExvY2F0aW9uLnQgKiBzdHJpbmdcblxudHlwZSAnaXRlbSBkZXJpdmVkX2NvZGUgPSB7IGl0ZW1zIDogJ2l0ZW0gbGlzdDsgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sIH1cblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlIGRlcml2ZXIgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFQgOiB7XG4gICAgICAgIHNwZWMgOiAoJ2MsICdhKSBBcmdzLnQ7XG4gICAgICAgIGdlbiA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjO1xuICAgICAgICBhcmdfbmFtZXMgOiBTdHJpbmcuU2V0LnQ7XG4gICAgICAgIGRlcHMgOiBkZXJpdmVyIGxpc3Q7XG4gICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzIDogYm9vbDtcbiAgICAgIH1cbiAgICAgICAgLT4gKCdhLCAnYikgdFxuXG4gIGxldCBkZXBzIChUIHQpID0gdC5kZXBzXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbGV0IG1ha2UgP2F0dHJpYnV0ZXM6KF8gPSBbXSkgPyhkZXBzID0gW10pID8odW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSlcbiAgICAgICAgc3BlYyBnZW4gPVxuICAgICAgbGV0IGFyZ19uYW1lcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoQXJncy5uYW1lcyBzcGVjKSBpblxuICAgICAgVCB7IHNwZWM7IGdlbjsgYXJnX25hbWVzOyBkZXBzOyB1bnVzZWRfY29kZV93YXJuaW5ncyB9XG5cbiAgICBsZXQgbWFrZV9ub2FyZyA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgZ2VuID1cbiAgICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG4gIGVuZFxuXG4gIGxldCBtYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjIGdlbiA9XG4gICAgVjIubWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3Mgc3BlY1xuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIud2l0aF9sb2NfYW5kX3BhdGggZ2VuKVxuXG4gIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgIG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIEFyZ3MuZW1wdHkgZ2VuXG5cbiAgbGV0IG1lcmdlX2FjY2VwdGVkX2FyZ3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBUIHQgOjogcmVzdCAtPiBsb29wIChTdHJpbmcuU2V0LnVuaW9uIGFjYyB0LmFyZ19uYW1lcykgcmVzdFxuICAgIGluXG4gICAgbG9vcCBTdHJpbmcuU2V0LmVtcHR5IGxcblxuICBsZXQgY2hlY2tfYXJndW1lbnRzIG5hbWUgZ2VuZXJhdG9ycyAoYXJncyA6IChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0KSA9XG4gICAgbGV0IGVtcHR5X2xhYmVsX2Vycm9yID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBsYWJlbCB0aGVuXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yIGFyZ3VtZW50cyBtdXN0IGJlIGxhYmVsbGVkXCIpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciA9XG4gICAgICBPcHRpb24ubWFwXG4gICAgICAgIChMaXN0LmZpbmRfYV9kdXAgYXJncyB+Y29tcGFyZTooZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbiAgICAgICAgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBhcmd1bWVudCBsYWJlbGxlZCAnJXMnIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2VcIlxuICAgICAgICAgICAgbGFiZWwpXG4gICAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjY2VwdGVkX2FyZ3MgPSBtZXJnZV9hY2NlcHRlZF9hcmdzIGdlbmVyYXRvcnMgaW5cbiAgICBsZXQgdW5hY2NlcHRlZF9hcmd1bWVudCA9XG4gICAgICBMaXN0LmZpbHRlcl9tYXAgYXJncyB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5TZXQubWVtIGxhYmVsIGFjY2VwdGVkX2FyZ3MpIHRoZW5cbiAgICAgICAgICAgIGxldCBzcGVsbGNoZWNrX21zZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgU3BlbGxjaGVjay5zcGVsbGNoZWNrIChTdHJpbmcuU2V0LmVsZW1lbnRzIGFjY2VwdGVkX2FyZ3MpIGxhYmVsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOmUucGV4cF9sb2NcbiAgICAgICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGdlbmVyYXRvciAnJXMnIGRvZXNuJ3QgYWNjZXB0IGFyZ3VtZW50IFxcXG4gICAgICAgICAgICAgICAgICAnJXMnJXNcIlxuICAgICAgICAgICAgICAgICBuYW1lIGxhYmVsIHNwZWxsY2hlY2tfbXNnKVxuICAgICAgICAgIGVsc2UgTm9uZSlcbiAgICBpblxuICAgIGxldCBlcnJvcnMgPVxuICAgICAgZW1wdHlfbGFiZWxfZXJyb3IgQCBkdXBsaWNhdGVfYXJndW1lbnRfZXJyb3IgQCB1bmFjY2VwdGVkX2FyZ3VtZW50XG4gICAgaW5cbiAgICBpZiBMaXN0Lmxlbmd0aCBlcnJvcnMgPSAwIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvcnNcblxuICBsZXQgYXBwbHkgKFQgdCkgfm5hbWU6XyB+Y3R4dCB4IGFyZ3MgPSBBcmdzLmFwcGx5IHQuc3BlYyBhcmdzICh0LmdlbiB+Y3R4dCB4KVxuXG4gIGxldCBhcHBseV9hbGwgfmN0eHQgZW50cnkgKG5hbWUsIGdlbmVyYXRvcnMsIGFyZ3MpID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBjaGVja19hcmd1bWVudHMgbmFtZS50eHQgZ2VuZXJhdG9ycyBhcmdzID4+fCBmdW4gKCkgLT5cbiAgICBMaXN0Lm1hcCBnZW5lcmF0b3JzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIGl0ZW1zID0gYXBwbHkgKFQgdCkgfm5hbWU6bmFtZS50eHQgfmN0eHQgZW50cnkgYXJncztcbiAgICAgICAgICB1bnVzZWRfY29kZV93YXJuaW5ncyA9IHQudW51c2VkX2NvZGVfd2FybmluZ3M7XG4gICAgICAgIH0pXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSBnZW5lcmF0b3JzIGV4dF90b19pdGVtID1cbiAgICBsZXQgbCA9IExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSkgaW5cbiAgICBsZXQgbDEsIGxlcnIgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvbiBPayBlIC0+IExlZnQgZSB8IEVycm9yIGUgLT4gUmlnaHQgZSkgbFxuICAgIGluXG4gICAgbGV0IGxlcnIgPVxuICAgICAgTGlzdC5jb25jYXQgbGVyclxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBlcnIgLT4gZXh0X3RvX2l0ZW0gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICBpblxuICAgIExpc3QuY29uY2F0IGwxIEAgWyB7IGl0ZW1zID0gbGVycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9IF1cbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICBtb2R1bGUgQWN0dWFsX2Rlcml2ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgc3RyX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlLCB0eXBlX2V4dGVuc2lvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc3RyX2V4Y2VwdGlvbiA6IChzdHJ1Y3R1cmUsIHR5cGVfZXhjZXB0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6XG4gICAgICAgIChzdHJ1Y3R1cmUsIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2V4dCA6IChzaWduYXR1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHNpZ25hdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGV4dGVuc2lvbiA6XG4gICAgICAgIChsb2M6TG9jYXRpb24udCAtPiBwYXRoOnN0cmluZyAtPiBjb3JlX3R5cGUgLT4gZXhwcmVzc2lvbikgb3B0aW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEFsaWFzID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RyX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc3RyX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgICAgc2lnX3R5cGVfZXh0IDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfZXhjZXB0aW9uIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfbW9kdWxlX3R5cGVfZGVjbCA6IHN0cmluZyBsaXN0O1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSBraW5kID0gU3RyIHwgU2lnXG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAga2luZCA6IGtpbmQ7XG4gICAgICBnZXQgOiBBY3R1YWxfZGVyaXZlci50IC0+ICgnYSwgJ2IpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIGdldF9zZXQgOiBBbGlhcy50IC0+IHN0cmluZyBsaXN0O1xuICAgIH1cblxuICAgIGxldCBzdHJfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcInR5cGUgZXh0ZW5zaW9uXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfdHlwZV9leHQpO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9leGNlcHRpb24gPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcIm1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfdHlwZV9leHQgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc2lnX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBleGNlcHRpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc2lnX2V4Y2VwdGlvbik7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfbW9kdWxlX3R5cGVfZGVjbCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSBtb2R1bGUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICAgIGdldF9zZXQgPSAoZnVuIHQgLT4gdC5zaWdfbW9kdWxlX3R5cGVfZGVjbCk7XG4gICAgICB9XG4gIGVuZFxuXG4gIHR5cGUgdCA9IEFjdHVhbF9kZXJpdmVyIG9mIEFjdHVhbF9kZXJpdmVyLnQgfCBBbGlhcyBvZiBBbGlhcy50XG4gIHR5cGUgUHB4X2Rlcml2ZXJzLmRlcml2ZXIgKz0gVCBvZiB0XG5cbiAgbGV0IGRlcml2ZXJzICgpID1cbiAgICBMaXN0LmZpbHRlcl9tYXAgKFBweF9kZXJpdmVycy5kZXJpdmVycyAoKSkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIFQgdCAtPiBTb21lIChuYW1lLCB0KVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbiAgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IHJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBsZXQgcmVjIGxvb3AgbmFtZSBjb2xsZWN0ZWQgPVxuICAgICAgaWZcbiAgICAgICAgTGlzdC5leGlzdHMgY29sbGVjdGVkIH5mOihmdW4gKGQgOiBBY3R1YWxfZGVyaXZlci50KSAtPlxuICAgICAgICAgICAgU3RyaW5nLmVxdWFsIGQubmFtZSBuYW1lKVxuICAgICAgdGhlbiBjb2xsZWN0ZWRcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIChUIChBY3R1YWxfZGVyaXZlciBkcnYpKSAtPiBkcnYgOjogY29sbGVjdGVkXG4gICAgICAgIHwgU29tZSAoVCAoQWxpYXMgYWxpYXMpKSAtPlxuICAgICAgICAgICAgbGV0IHNldCA9IGZpZWxkLmdldF9zZXQgYWxpYXMgaW5cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBzZXQgfmluaXQ6Y29sbGVjdGVkIH5mOmxvb3BcbiAgICAgICAgfCBfIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBuYW1lIFtdKVxuXG4gIGxldCByZXNvbHZlX2ludGVybmFsIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSBuYW1lID1cbiAgICBMaXN0Lm1hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgbmFtZSkgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgbWF0Y2ggZmllbGQuZ2V0IGRydiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByYWlzZSAoTm90X3N1cHBvcnRlZCBuYW1lKVxuICAgICAgICB8IFNvbWUgZyAtPiAoZHJ2Lm5hbWUsIGcpKVxuXG4gIGxldCBzdXBwb3J0ZWRfZm9yIGZpZWxkID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZGVyaXZlcnMgKCkpIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIF8pIC0+XG4gICAgICAgIG1hdGNoIHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuU2V0LmFkZCBuYW1lIGFjY1xuICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkIF8gLT4gYWNjKVxuICAgIHw+IFN0cmluZy5TZXQuZWxlbWVudHNcblxuICBsZXQgbm90X3N1cHBvcnRlZCAoZmllbGQgOiAoXywgXykgRmllbGQudCkgPyhzcGVsbGNoZWNrID0gdHJ1ZSkgbmFtZSA9XG4gICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgIGlmIHNwZWxsY2hlY2sgdGhlblxuICAgICAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKHN1cHBvcnRlZF9mb3IgZmllbGQpIG5hbWUudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIHMgLT4gXCIuXFxuXCIgXiBzXG4gICAgICBlbHNlIFwiXCJcbiAgICBpblxuICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6ICclcycgaXMgbm90IGEgc3VwcG9ydGVkICVzIGRlcml2aW5nIGdlbmVyYXRvciVzXCJcbiAgICAgIG5hbWUudHh0IGZpZWxkLm5hbWUgc3BlbGxjaGVja19tc2dcblxuICBsZXQgcmVzb2x2ZSBmaWVsZCBuYW1lID1cbiAgICB0cnkgT2sgKHJlc29sdmVfaW50ZXJuYWwgZmllbGQgbmFtZS50eHQpXG4gICAgd2l0aCBOb3Rfc3VwcG9ydGVkIG5hbWUnIC0+XG4gICAgICBFcnJvciAobm90X3N1cHBvcnRlZCBmaWVsZCB+c3BlbGxjaGVjazooU3RyaW5nLmVxdWFsIG5hbWUudHh0IG5hbWUnKSBuYW1lKVxuXG4gIGxldCByZXNvbHZlX2FsbCBmaWVsZCBkZXJpdmVycyA9XG4gICAgbGV0IGRlcml2ZXJzX2FuZF9hcmdzLCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwXG4gICAgICAgIChmdW4gKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggUHB4X2Rlcml2ZXJzLmxvb2t1cCBuYW1lLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEVpdGhlci5SaWdodCAobm90X3N1cHBvcnRlZCBmaWVsZCBuYW1lKVxuICAgICAgICAgIHwgU29tZSAoVCBfKSAtPiAoXG4gICAgICAgICAgICAgICgqIEl0J3Mgb25lIG9mIG91cnMsIHBhcnNlIHRoZSBhcmd1bWVudHMgbm93LiBXZSBjYW4ndCBkbyBpdCBiZWZvcmUgc2luY2VcbiAgICAgICAgICAgICAgICAgcHB4X2Rlcml2aW5nIHVzZXMgYSBkaWZmZXJlbnQgc3ludGF4IGZvciBhcmd1bWVudHMuICopXG4gICAgICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgICAgICB8IEFyZ3MgbCAtPiBFaXRoZXIuTGVmdCAoU29tZSAobmFtZSwgbCkpXG4gICAgICAgICAgICAgIHwgVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPlxuICAgICAgICAgICAgICAgICAgRWl0aGVyLlJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2MgXCJQcHhsaWIuRGVyaXZpbmc6ICVzXCIgbXNnKSlcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAoKiBJdCdzIG5vdCBvbmUgb2Ygb3VycywgaWdub3JlIGl0LiAqKVxuICAgICAgICAgICAgICBFaXRoZXIuTGVmdCBOb25lKVxuICAgICAgICBkZXJpdmVyc1xuICAgICAgfD4gZnVuIChsMSwgbDIpIC0+IChMaXN0LmZpbHRlcl9vcHQgbDEsIGwyKVxuICAgIGluXG4gICAgKCogU2V0IG9mIGFjdHVhbCBkZXJpdmVyIG5hbWVzICopXG4gICAgbGV0IHNlZW4gPSBIYXNodGJsLmNyZWF0ZSAxNiBpblxuICAgIGxldCByZXN1bHQsIGRlcF9lcnJvcnMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgfmluaXQ6KFtdLCBbXSkgZGVyaXZlcnNfYW5kX2FyZ3NcbiAgICAgICAgfmY6KGZ1biAocmVzdWx0LCBlcnJvcnMpIChuYW1lLCBhcmdzKSAtPlxuICAgICAgICAgIG1hdGNoIHJlc29sdmUgZmllbGQgbmFtZSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+IChyZXN1bHQsIGVycm9ycyBAIFsgZSBdKVxuICAgICAgICAgIHwgT2sgbmFtZWRfZ2VuZXJhdG9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbF9lcnIgPVxuICAgICAgICAgICAgICAgIExpc3QuY29uY2F0X21hcCBuYW1lZF9nZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgICB+ZjooZnVuIChhY3R1YWxfZGVyaXZlcl9uYW1lLCBnZW4pIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBkdXBfZXJyb3IgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zLmZhaWxfb25fZHVwbGljYXRlX2Rlcml2ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBIYXNodGJsLm1lbSBzZWVuIGFjdHVhbF9kZXJpdmVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzpuYW1lLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVyaXZlciAlcyBhcHBlYXJzIHR3aWNlXCIgYWN0dWFsX2Rlcml2ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIChHZW5lcmF0b3IuZGVwcyBnZW4pIH5mOihmdW4gZGVwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAocmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgZmllbGQgZGVwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gZHJ2IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwX25hbWUgPSBkcnYubmFtZSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChIYXNodGJsLm1lbSBzZWVuIGRlcF9uYW1lKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGlzIG5lZWRlZCBmb3IgJXMsIHlvdSBuZWVkIHRvIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBpdCBiZWZvcmUgaW4gdGhlIGxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcF9uYW1lIG5hbWUudHh0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgSGFzaHRibC5zZXQgc2VlbiB+a2V5OmFjdHVhbF9kZXJpdmVyX25hbWUgfmRhdGE6KCk7XG4gICAgICAgICAgICAgICAgICAgIGR1cF9lcnJvciBAIGxfZXJyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHJlc3VsdCBAIFsgKG5hbWUsIExpc3QubWFwIG5hbWVkX2dlbmVyYXRvcnMgfmY6c25kLCBhcmdzKSBdLFxuICAgICAgICAgICAgICAgIGVycm9ycyBAIGxfZXJyICkpXG4gICAgaW5cbiAgICAocmVzdWx0LCBkZXJpdmVyc19hbmRfYXJnc19lcnJvcnMgQCBkZXBfZXJyb3JzKVxuXG4gIGxldCBhZGQgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvbiA/c3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb24gP3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICA/ZXh0ZW5zaW9uIG5hbWUgPVxuICAgIGxldCBhY3R1YWxfZGVyaXZlciA6IEFjdHVhbF9kZXJpdmVyLnQgPVxuICAgICAge1xuICAgICAgICBuYW1lO1xuICAgICAgICBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQ7XG4gICAgICAgIHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBleHRlbnNpb247XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWN0dWFsX2Rlcml2ZXIgYWN0dWFsX2Rlcml2ZXIpKTtcbiAgICAobWF0Y2ggZXh0ZW5zaW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgZXh0ZW5zaW9uID1cbiAgICAgICAgICBFeHRlbnNpb24uZGVjbGFyZSBuYW1lIEV4cHJlc3Npb24gQXN0X3BhdHRlcm4uKHB0eXAgX18pIGZcbiAgICAgICAgaW5cbiAgICAgICAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgKFwiUHB4bGliLkRlcml2aW5nLlwiIF4gbmFtZSlcbiAgICAgICAgICB+cnVsZXM6WyBDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gZXh0ZW5zaW9uIF0pO1xuICAgIG5hbWVcblxuICBsZXQgYWRkX2FsaWFzIG5hbWUgP3N0cl90eXBlX2RlY2wgP3N0cl90eXBlX2V4dCA/c3RyX2V4Y2VwdGlvblxuICAgICAgP3N0cl9tb2R1bGVfdHlwZV9kZWNsID9zaWdfdHlwZV9kZWNsID9zaWdfdHlwZV9leHQgP3NpZ19leGNlcHRpb25cbiAgICAgID9zaWdfbW9kdWxlX3R5cGVfZGVjbCBzZXQgPVxuICAgIGxldCBhbGlhcyA6IEFsaWFzLnQgPVxuICAgICAgbGV0IGdldCA9IGZ1bmN0aW9uIE5vbmUgLT4gc2V0IHwgU29tZSBzZXQgLT4gc2V0IGluXG4gICAgICB7XG4gICAgICAgIHN0cl90eXBlX2RlY2wgPSBnZXQgc3RyX3R5cGVfZGVjbDtcbiAgICAgICAgc3RyX3R5cGVfZXh0ID0gZ2V0IHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbiA9IGdldCBzdHJfZXhjZXB0aW9uO1xuICAgICAgICBzdHJfbW9kdWxlX3R5cGVfZGVjbCA9IGdldCBzdHJfbW9kdWxlX3R5cGVfZGVjbDtcbiAgICAgICAgc2lnX3R5cGVfZGVjbCA9IGdldCBzaWdfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9leHQgPSBnZXQgc2lnX3R5cGVfZXh0O1xuICAgICAgICBzaWdfZXhjZXB0aW9uID0gZ2V0IHNpZ19leGNlcHRpb247XG4gICAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHNpZ19tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgfVxuICAgIGluXG4gICAgUHB4X2Rlcml2ZXJzLnJlZ2lzdGVyIG5hbWUgKFQgKEFsaWFzIGFsaWFzKSk7XG4gICAgbmFtZVxuZW5kXG5cbmxldCBhZGQgPSBEZXJpdmVyLmFkZFxubGV0IGFkZF9hbGlhcyA9IERlcml2ZXIuYWRkX2FsaWFzXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgW0BAZGVyaXZpbmcgXSBwYXJzaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGludmFsaWRfd2l0aCB+bG9jID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJpbnZhbGlkIFtAQGRlcml2aW5nIF0gYXR0cmlidXRlIHN5bnRheFwiXG5cbmxldCBnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQgPVxuICBtYXRjaCBMb25naWRlbnQuZmxhdHRlbl9leG4gaWQgd2l0aFxuICB8IGwgLT4geyBsb2M7IHR4dCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBsIH1cbiAgfCBleGNlcHRpb24gXyAtPiBpbnZhbGlkX3dpdGggfmxvY1xuXG5leGNlcHRpb24gVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgcGFyc2VfYXJndW1lbnRzIGwgPVxuICB0cnlcbiAgICBBcmdzXG4gICAgICAobWF0Y2ggbCB3aXRoXG4gICAgICB8IFsgKE5vbGFiZWwsIGUpIF0gLT4gKFxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBleHBfcmVjb3JkIChmaWVsZHMsIE5vbmUpIC0+XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChpZCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggaWQudHh0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBMaWRlbnQgcyAtPiBzXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXggKGlkLmxvYywgXCJzaW1wbGUgaWRlbnRpZmllciBleHBlY3RlZFwiKSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAobmFtZSwgZXhwcikpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAoIGUucGV4cF9sb2MsXG4gICAgICAgICAgICAgICAgICAgICBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBvciByZWNvcmQgZXhwZWN0ZWRcIiApKSlcbiAgICAgIHwgbCAtPlxuICAgICAgICAgIExpc3QubWFwIGwgfmY6KGZ1biAobGFiZWwsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGxhYmVsIHdpdGhcbiAgICAgICAgICAgICAgfCBMYWJlbGxlZCBzIC0+IChzLCBleHByKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlX25vdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgKFVua25vd25fc3ludGF4XG4gICAgICAgICAgICAgICAgICAgICAgIChleHByLnBleHBfbG9jLCBcIm5vbi1vcHRpb25hbCBsYWJlbGxlZCBhcmd1bWVudCBleHBlY3RlZFwiKSkpKVxuICB3aXRoIFVua25vd25fc3ludGF4IChsb2MsIG1zZykgLT4gVW5rbm93bl9zeW50YXggKGxvYywgbXNnKVxuXG5sZXQgbWtfZGVyaXZpbmdfYXR0ciBjb250ZXh0IH5wcmVmaXggfnN1ZmZpeCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgKHByZWZpeCBeIFwiZGVyaXZpbmdcIiBeIHN1ZmZpeClcbiAgICBjb250ZXh0XG4gICAgQXN0X3BhdHRlcm4uKFxuICAgICAgbGV0IGdlbmVyYXRvcl9uYW1lICgpID1cbiAgICAgICAgbWFwJyAocGV4cF9pZGVudCBfXykgfmY6KGZ1biBsb2MgZiBpZCAtPlxuICAgICAgICAgICAgZiAoZ2VuZXJhdG9yX25hbWVfb2ZfaWQgbG9jIGlkKSlcbiAgICAgIGluXG4gICAgICBsZXQgZ2VuZXJhdG9yICgpID1cbiAgICAgICAgbWFwIChnZW5lcmF0b3JfbmFtZSAoKSkgfmY6KGZ1biBmIHggLT4gZiAoeCwgQXJncyBbXSkpXG4gICAgICAgIHx8fCBwYWNrMlxuICAgICAgICAgICAgICAocGV4cF9hcHBseSAoZ2VuZXJhdG9yX25hbWUgKCkpXG4gICAgICAgICAgICAgICAgIChtYXAxIChtYW55IF9fKSB+ZjpwYXJzZV9hcmd1bWVudHMpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3JzID1cbiAgICAgICAgcGV4cF90dXBsZSAobWFueSAoZ2VuZXJhdG9yICgpKSlcbiAgICAgICAgfHx8IG1hcCAoZ2VuZXJhdG9yICgpKSB+ZjooZnVuIGYgeCAtPiBmIFsgeCBdKVxuICAgICAgaW5cbiAgICAgIHBzdHIgKHBzdHJfZXZhbCBnZW5lcmF0b3JzIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBVbnVzZWQgd2FybmluZyBzdHVmZiArIGxvY2F0aW9ucyBjaGVjayBzaWxlbmNpbmcgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICBsZXQgc3RyaW5nID1cbiAgICBMaXN0LnNvcnQgd2FybmluZ3MgfmNtcDpJbnQuY29tcGFyZVxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gd2FybmluZyAtPiBcIi1cIiBeIEludC50b19zdHJpbmcgd2FybmluZylcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIlxuICBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLndhcm5pbmdcIjsgbG9jIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2Mgc3RyaW5nKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbmxldCBpbmxpbmVfZG9jX2F0dHIgPVxuICBsZXQgbG9jID0gTG9jYXRpb24ubm9uZSBpblxuICB7XG4gICAgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLmRvY1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBcIkBpbmxpbmVcIikgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG4oKiB3cmFwIGEgc3RydWN0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtb2Rfc3RydWN0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc3RyX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc3RydWN0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc3RyXSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHN0ID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWYga2VlcF93MzJfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIChbXSwgc3QpXG4gICAgZWxzZSBpZiBub3QgIWRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgdGhlblxuICAgICAgKFtdLCBJZ25vcmVfdW51c2VkX3dhcm5pbmcuYWRkX2R1bW15X3VzZXJfZm9yX3ZhbHVlcyNzdHJ1Y3R1cmUgc3QpXG4gICAgZWxzZSAoWyAzMiBdLCBzdClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzLCBzdCA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ltcGwgKCkgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICAgIHx8IG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzdHJ1Y3R1cmUgc3QgZmFsc2UpXG4gICAgdGhlbiAod2FybmluZ3MsIHN0KVxuICAgIGVsc2UgKDYwIDo6IHdhcm5pbmdzLCBzdClcbiAgaW5cbiAgbGV0IHdyYXAsIHN0ID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHN0KVxuICAgIGVsc2UgKHRydWUsIHBzdHJfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzdClcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgZWxzZSBzdFxuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3N0cl0gYWJvdmUgKilcbmxldCB3cmFwX3N0ciB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3N0ciB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogd3JhcCBhIHNpZ25hdHVyZSBpbiBleHRyYSBhdHRyaWJ1dGVzICopXG5sZXQgd3JhcF9zaWcgfmxvYyB+aGlkZSBzdCA9XG4gIGxldCBpbmNsdWRlX2luZm9zID0gaW5jbHVkZV9pbmZvcyB+bG9jIChwbXR5X3NpZ25hdHVyZSB+bG9jIHN0KSBpblxuICBsZXQgcGluY2xfYXR0cmlidXRlcyA9XG4gICAgaWYgaGlkZSB0aGVuIFsgaW5saW5lX2RvY19hdHRyOyBNZXJsaW5faGVscGVycy5oaWRlX2F0dHJpYnV0ZSBdXG4gICAgZWxzZSBbIGlubGluZV9kb2NfYXR0ciBdXG4gIGluXG4gIFsgcHNpZ19pbmNsdWRlIH5sb2MgeyBpbmNsdWRlX2luZm9zIHdpdGggcGluY2xfYXR0cmlidXRlcyB9IF1cblxuKCogZGVjaWRlIHdoYXQgdG8gd3JhcCBhIHNpZ25hdHVyZSBpbiwgdGhlbiBjYWxsIGFib3ZlIFt3cmFwX3NpZ10gKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBzZyA9XG4gIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICBsZXQgdW51c2VkX2NvZGVfd2FybmluZ3MgPVxuICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzICYmIGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzICgpXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWYga2VlcF93MzJfaW50ZiAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5ncyB0aGVuIFtdIGVsc2UgWyAzMiBdXG4gIGluXG4gIGxldCB3YXJuaW5ncyA9XG4gICAgaWZcbiAgICAgIGtlZXBfdzYwX2ludGYgKClcbiAgICAgIHx8IChub3QgKElnbm9yZV91bnVzZWRfd2FybmluZy5iaW5kc19tb2R1bGVfbmFtZXMjc2lnbmF0dXJlIHNnIGZhbHNlKSlcbiAgICAgIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgdGhlbiB3YXJuaW5nc1xuICAgIGVsc2UgNjAgOjogd2FybmluZ3NcbiAgaW5cbiAgbGV0IHdyYXAsIHNnID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHdhcm5pbmdzIHRoZW4gKGhpZGUsIHNnKVxuICAgIGVsc2UgKHRydWUsIHBzaWdfYXR0cmlidXRlIH5sb2MgKGRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIHdhcm5pbmdzKSA6OiBzZylcbiAgaW5cbiAgaWYgd3JhcCB0aGVuIHdyYXBfc2lnIH5sb2MgfmhpZGUgc2cgZWxzZSBzZ1xuXG4oKiB3cmFwIGJsb2NrcyB0aGF0IHNoYXJlIFt1bnVzZWRfY29kZV93YXJuaW5nc10sIHVzaW5nIGFib3ZlIFt3cmFwX3NpZ10gYWJvdmUgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIGxpc3QgPVxuICBMaXN0LmNvbmNhdF9tYXAgbGlzdCB+ZjooZnVuIHsgaXRlbXM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH0gLT5cbiAgICAgIGlmIExpc3QuaXNfZW1wdHkgaXRlbXMgdGhlbiBbXVxuICAgICAgZWxzZSB3cmFwX3NpZyB+bG9jIH5oaWRlIH51bnVzZWRfY29kZV93YXJuaW5ncyBpdGVtcylcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBNYWluIGV4cGFuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgdHlwZXNfdXNlZF9ieV9kZXJpdmluZyAodGRzIDogdHlwZV9kZWNsYXJhdGlvbiBsaXN0KSA6IHN0cnVjdHVyZV9pdGVtIGxpc3QgPVxuICBpZiBrZWVwX3czMl9pbXBsICgpIHRoZW4gW11cbiAgZWxzZVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgIGxldCB0eXAgPSBDb21tb24uY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHRkLnB0eXBlX2xvYyBpblxuICAgICAgICBwc3RyX3ZhbHVlIH5sb2MgTm9ucmVjdXJzaXZlXG4gICAgICAgICAgW1xuICAgICAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHBwYXRfYW55IH5sb2MpXG4gICAgICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgICAgIChwZXhwX2Z1biB+bG9jIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgICAgICAgIChwcGF0X2NvbnN0cmFpbnQgfmxvYyAocHBhdF9hbnkgfmxvYykgdHlwKVxuICAgICAgICAgICAgICAgICAgIChldW5pdCB+bG9jKSk7XG4gICAgICAgICAgXSlcblxubGV0IG1lcmdlX2dlbmVyYXRvcnMgZmllbGQgbCA9XG4gIExpc3QuZmlsdGVyX21hcCBsIH5mOihmdW4geCAtPiB4KSB8PiBMaXN0LmNvbmNhdCB8PiBEZXJpdmVyLnJlc29sdmVfYWxsIGZpZWxkXG5cbigqIFRoaXMgZnVuY3Rpb24gbWVyZ2VzIFsnYSBkZXJpdmVkXSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXS4gVGhpc1xuICAgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGFkZCBbaW5jbHVkZSBzdHJ1Y3QgLi4uIGVuZF0gdG8gZGlzYWJsZSB3YXJuaW5ncy4gKilcbmxldCBtZXJnZV9kZXJpdmVkIGxpc3RzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGxpc3RzIH5pbml0OltdIH5mOihmdW4gZGVyaXZlZCBhY2MgLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IG90aGVyIDo6IG90aGVyc1xuICAgICAgICB3aGVuIEJvb2wuZXF1YWwgZGVyaXZlZC51bnVzZWRfY29kZV93YXJuaW5ncyBvdGhlci51bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgICAtPlxuICAgICAgICAgIHsgb3RoZXIgd2l0aCBpdGVtcyA9IGRlcml2ZWQuaXRlbXMgQCBvdGhlci5pdGVtcyB9IDo6IG90aGVyc1xuICAgICAgfCBfIC0+IGRlcml2ZWQgOjogYWNjKVxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgKCogVE9ETzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIHVudXNlZCB3YXJuaW5nIGZvciB0eXBlcyB0aGVtc2VsdmVzLCB3ZVxuICAgICBzaG91bGQgYWRkIGEgdGFnIFtAQHVudXNlZF0uICopXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSB0eXBlc191c2VkX2J5X2Rlcml2aW5nIHRkcyBAIGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfdHlwZV9kZWNscyB+Y3R4dCByZWNfZmxhZyB0ZHMgdmFsdWVzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID0gbWVyZ2VfZ2VuZXJhdG9ycyBEZXJpdmVyLkZpZWxkLnNpZ190eXBlX2RlY2wgdmFsdWVzIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCAocmVjX2ZsYWcsIHRkcykgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wgfmN0eHQgbXRkIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfbW9kdWxlX3R5cGVfZGVjbCBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBtdGQgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX2V4Y2VwdGlvbiB+Y3R4dCBlYyBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX2V4Y2VwdGlvbiBnZW5lcmF0b3JzXG4gIGluXG4gIGxldCBsX2VyciA9XG4gICAgTGlzdC5tYXBcbiAgICAgIH5mOihmdW4gZXJyIC0+XG4gICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYzpMb2NhdGlvbi5ub25lIGVyciBbXSlcbiAgICAgIGxfZXJyXG4gIGluXG4gIGxldCBnZW5lcmF0ZWQgPVxuICAgIHsgaXRlbXMgPSBsX2VycjsgdW51c2VkX2NvZGVfd2FybmluZ3MgPSBmYWxzZSB9XG4gICAgOjogR2VuZXJhdG9yLmFwcGx5X2FsbCB+Y3R4dCBlYyBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3N0cl90eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc3RyX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2V4dCB+Y3R4dCB0ZSBnZW5lcmF0b3JzID1cbiAgbGV0IGdlbmVyYXRvcnMsIGxfZXJyID1cbiAgICBEZXJpdmVyLnJlc29sdmVfYWxsIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZXh0IGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IHRlIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc2lnXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgcnVsZXMgfnR5cCB+ZXhwYW5kX3NpZyB+ZXhwYW5kX3N0ciB+cnVsZV9zdHIgfnJ1bGVfc2lnIH5ydWxlX3N0cl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0ID1cbiAgbGV0IHByZWZpeCA9IFwicHB4bGliLlwiIGluXG4gIGxldCBkZXJpdmluZ19hdHRyID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiXCIgfnByZWZpeCB0eXAgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHJfZXhwZWN0ID0gbWtfZGVyaXZpbmdfYXR0ciB+c3VmZml4OlwiX2lubGluZVwiIH5wcmVmaXggdHlwIGluXG4gIFtcbiAgICBydWxlX3NpZyBkZXJpdmluZ19hdHRyIGV4cGFuZF9zaWc7XG4gICAgcnVsZV9zdHIgZGVyaXZpbmdfYXR0ciBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc3RyX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc3RyO1xuICAgIHJ1bGVfc2lnX2V4cGVjdCBkZXJpdmluZ19hdHRyX2V4cGVjdCBleHBhbmRfc2lnO1xuICBdXG5cbmxldCBydWxlc190eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOlR5cGVfZGVjbGFyYXRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl90eXBlX2RlY2xzXG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2RlY2xzXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3RcblxubGV0IHJ1bGVzX3R5cGVfZXh0ID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4dGVuc2lvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZXh0XG4gICAgfmV4cGFuZF9zaWc6ZXhwYW5kX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ190eXBlX2V4dF9leHBlY3RcblxubGV0IHJ1bGVzX2V4Y2VwdGlvbiA9XG4gIHJ1bGVzIH50eXA6VHlwZV9leGNlcHRpb24gfmV4cGFuZF9zdHI6ZXhwYW5kX3N0cl9leGNlcHRpb25cbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX2V4Y2VwdGlvblxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25cbiAgICB+cnVsZV9zaWc6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0XG5cbmxldCBydWxlc19tb2R1bGVfdHlwZV9kZWNsID1cbiAgcnVsZXMgfnR5cDpNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3RcblxubGV0ICgpID1cbiAgbGV0IHJ1bGVzID1cbiAgICBbIHJ1bGVzX3R5cGVfZGVjbDsgcnVsZXNfdHlwZV9leHQ7IHJ1bGVzX2V4Y2VwdGlvbjsgcnVsZXNfbW9kdWxlX3R5cGVfZGVjbCBdXG4gICAgfD4gTGlzdC5jb25jYXRcbiAgaW5cbiAgRHJpdmVyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIFwiZGVyaXZpbmdcIiB+YWxpYXNlczpbIFwidHlwZV9jb252XCIgXSB+cnVsZXNcbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgYWZmaXggPVxuICB8IFByZWZpeCBvZiBzdHJpbmdcbiAgfCBTdWZmaXggb2Ygc3RyaW5nXG4gIHwgUHJlZml4U3VmZml4IG9mIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgbWFuZ2xlID8oZml4cG9pbnQgPSBcInRcIikgYWZmaXggbmFtZSA9XG4gIG1hdGNoIChTdHJpbmcuKG5hbWUgPSBmaXhwb2ludCksIGFmZml4KSB3aXRoXG4gIHwgdHJ1ZSwgKFByZWZpeCB4IHwgU3VmZml4IHgpIC0+IHhcbiAgfCB0cnVlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4U3VmZml4IChwLCBzKSAtPiBwIF4gXCJfXCIgXiBuYW1lIF4gXCJfXCIgXiBzXG4gIHwgZmFsc2UsIFByZWZpeCB4IC0+IHggXiBcIl9cIiBeIG5hbWVcbiAgfCBmYWxzZSwgU3VmZml4IHggLT4gbmFtZSBeIFwiX1wiIF4geFxuXG5sZXQgbWFuZ2xlX3R5cGVfZGVjbCA/Zml4cG9pbnQgYWZmaXggeyBwdHlwZV9uYW1lID0geyB0eHQgPSBuYW1lOyBfIH07IF8gfSA9XG4gIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggbmFtZVxuXG5sZXQgbWFuZ2xlX2xpZCA/Zml4cG9pbnQgYWZmaXggbGlkID1cbiAgbWF0Y2ggbGlkIHdpdGhcbiAgfCBMaWRlbnQgcyAtPiBMaWRlbnQgKG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMZG90IChwLCBzKSAtPiBMZG90IChwLCBtYW5nbGUgP2ZpeHBvaW50IGFmZml4IHMpXG4gIHwgTGFwcGx5IF8gLT4gaW52YWxpZF9hcmcgXCJQcHhsaWIuRXhwYW5zaW9uX2hlbHBlcnMubWFuZ2xlX2xpZDogTGFwcGx5XCJcblxubW9kdWxlIFF1b3RlciA9IFF1b3RlclxuIiwiKCoqIFN0YW5kYXJkIGxpYnJhcnkgZm9yIHBweCByZXdyaXRlcnMgKilcblxuKCoqIFtwcHhsaWJdIGlzIG1lYW50IHRvIGJlIG9wZW5lZCBnbG9iYWxseSBpbiB5b3VyIFBQWCBzb3VyY2UgZmlsZXMuXG5cbiAgICBPcGVuaW5nIGl0IGNvbWVzIHdpdGggdHdvIGFkdmFudGFnZXMuIEZpcnN0LCBpdCB3aWxsIHNoYWRvdyB0aGVcbiAgICBbY29tcGlsZXItbGlic10gbW9kdWxlcy4gVGhlIFtjb21waWxlci1saWJzXSBtb2R1bGVzIGFyZSB1bnN0YWJsZSBhbmQgYXJlbid0XG4gICAgbWVhbnQgdG8gYmUgdXNlZCwgc28gc2hhZG93aW5nIHRoZW0gaXMgYSBnb29kIHByb3RlY3Rpb24gbWVjaGFuaXNtLiBJbiBjYXNlXG4gICAgeW91IGRvbid0IHdhbnQgdG8gb3BlbiBbUHB4bGliXSwgeW91IGNhbiBvcGVuIFtPY2FtbF9zaGFkb3ddIHRvIGdldCB0aGUgc2FtZVxuICAgIHByb3RlY3Rpb24uIFNlY29uZCwgaXQgd2lsbCBicmluZyBzZXZlcmFsIG1vZHVsZXMgaW4gc2NvcGUsIHRoYXQgYXJlIHVzZWZ1bFxuICAgIHRvIGhhdmUgd2hlbiB3cml0aW5nIGEgcmV3cml0ZXI6XG5cbiAgICAtIFRoZSBtYWluIFtwcHhsaWJdIG1vZHVsZXMsIHN1Y2ggYXMgbW9kdWxlcyB0byBoZWxwIG1hbmlwdWxhdGUgdGhlIEFTVFxuICAgICAgKHshQXN0X2J1aWxkZXJ9LCB7IUFzdF9wYXR0ZXJufSksIGFuZCBhIGZldyBmdW5jdGlvbnMuXG4gICAgLSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzLCBzdWNoIGFzIHshQXN0X2hlbHBlcn0gb3IgeyFQcHJpbnRhc3R9LFxuICAgIC0gVGhlIHdob2xlIEFTVCB0eXBlcyAoYnkgW2luY2x1ZGluZ10gdGhlIHshQXN0fSBtb2R1bGUpLlxuXG4gICAgezEgVGhlIGNvcmUgW3BweGxpYl0gZW50cmllc30gKilcblxuKCoqIHsyIE1hbmlwdWxhdGluZyB0aGUgQVNUfSAqKVxuXG5tb2R1bGUgQXN0X2J1aWxkZXIgPSBBc3RfYnVpbGRlclxubW9kdWxlIEFzdF9wYXR0ZXJuID0gQXN0X3BhdHRlcm5cbm1vZHVsZSBBc3RfdHJhdmVyc2UgPSBBc3RfdHJhdmVyc2VcblxuKCoqIHsyIENvbnRleHQtZnJlZSByZXdyaXRpbmd9ICopXG5cbm1vZHVsZSBDb250ZXh0X2ZyZWUgPSBDb250ZXh0X2ZyZWVcbm1vZHVsZSBEZXJpdmluZyA9IERlcml2aW5nXG5tb2R1bGUgRXh0ZW5zaW9uID0gRXh0ZW5zaW9uXG5tb2R1bGUgRXhwYW5zaW9uX2NvbnRleHQgPSBFeHBhbnNpb25fY29udGV4dFxubW9kdWxlIENvZGVfcGF0aCA9IENvZGVfcGF0aFxuXG4oKiogezIgT3RoZXIgaGVscGVyc30gKilcblxubW9kdWxlIEV4cGFuc2lvbl9oZWxwZXJzID0gRXhwYW5zaW9uX2hlbHBlcnNcbm1vZHVsZSBNZXJsaW5faGVscGVycyA9IE1lcmxpbl9oZWxwZXJzXG5tb2R1bGUgU3BlbGxjaGVjayA9IFNwZWxsY2hlY2tcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxuXG4oKiogezIgRHJpdmVyLXJlbGF0ZWQgbW9kdWxlc30gKilcblxubW9kdWxlIERyaXZlciA9IERyaXZlclxubW9kdWxlIENhbGxlcl9pZCA9IENhbGxlcl9pZFxubW9kdWxlIEFzdF9pbyA9IFV0aWxzLkFzdF9pby5SZWFkX2JpblxuXG4oKiogezIgQ2hlY2tzfSAqKVxuXG5tb2R1bGUgQXR0cmlidXRlID0gQXR0cmlidXRlXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IE5hbWUuUmVzZXJ2ZWRfbmFtZXNwYWNlc1xuXG4oKiogezIgQ29tbW9uIGhlbHBlciBmdW5jdGlvbnN9ICopXG5cbmluY2x1ZGUgQ29tbW9uXG5cbigqKiB7MSBNb2R1bGVzIGZyb20gb3RoZXIgbGlicmFyaWVzfVxuXG4gICAgRXhwb3NlIHNvbWUgbW9kdWxlcyBmcm9tIHshUHB4bGliX2FzdH0uICopXG5cbm1vZHVsZSBBc3QgPSBQcHhsaWJfYXN0LkFzdFxubW9kdWxlIEFzdF9oZWxwZXIgPSBQcHhsaWJfYXN0LkFzdF9oZWxwZXJcbm1vZHVsZSBBc3R0eXBlcyA9IFBweGxpYl9hc3QuQXN0dHlwZXNcbm1vZHVsZSBQYXJzZSA9IFBweGxpYl9hc3QuUGFyc2Vcbm1vZHVsZSBQYXJzZXRyZWUgPSBQcHhsaWJfYXN0LlBhcnNldHJlZVxubW9kdWxlIFBwcmludGFzdCA9IFBweGxpYl9hc3QuUHByaW50YXN0XG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Rcbm1vZHVsZSBMb2NhdGlvbiA9IExvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gTG9uZ2lkZW50XG5tb2R1bGUgTG9jID0gTG9jXG5cbigqKiB7MSBUaGUgd2hvbGUgQVNUIHR5cGVzfSAqKVxuXG5pbmNsdWRlIEFzdFxuKCoqIEluY2x1ZGUgYWxsIHRoZSBBc3QgZGVmaW5pdGlvbnMgc2luY2Ugd2UgbmVlZCB0aGVtIGluIGV2ZXJ5IHNpbmdsZSBwcHhcblxuICAgIEBjbG9zZWQgKilcblxuKCoqIE1ha2Ugc3VyZSBjb2RlIHVzaW5nIFBweGxpYiBkb2Vzbid0IHJlZmVyIHRvIGNvbXBpbGVyLWxpYnMgd2l0aG91dCBiZWluZ1xuICAgIGV4cGxpY2l0IGFib3V0IGl0OlxuXG4gICAgQGNsb3NlZCAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG9wZW4gT2NhbWxfc2hhZG93XG5cbiAgaW5jbHVkZSAoXG4gICAgT2NhbWxfc2hhZG93IDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE9jYW1sX3NoYWRvd1xuICAgICAgZW5kXG4gICAgICB3aXRoIG1vZHVsZSBBc3RfaGVscGVyIDo9IEFzdF9oZWxwZXJcbiAgICAgIHdpdGggbW9kdWxlIEFzdHR5cGVzIDo9IEFzdHR5cGVzXG4gICAgICB3aXRoIG1vZHVsZSBEb2NzdHJpbmdzIDo9IERvY3N0cmluZ3NcbiAgICAgIHdpdGggbW9kdWxlIElkZW50aWZpYWJsZSA6PSBJZGVudGlmaWFibGVcbiAgICAgIHdpdGggbW9kdWxlIExleGVyIDo9IExleGVyXG4gICAgICB3aXRoIG1vZHVsZSBMb2NhdGlvbiA6PSBMb2NhdGlvblxuICAgICAgd2l0aCBtb2R1bGUgTG9uZ2lkZW50IDo9IExvbmdpZGVudFxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2UgOj0gUGFyc2VcbiAgICAgIHdpdGggbW9kdWxlIFBhcnNldHJlZSA6PSBQYXJzZXRyZWVcbiAgICAgIHdpdGggbW9kdWxlIFBwcmludGFzdCA6PSBQcHJpbnRhc3RcbiAgICAgIHdpdGggbW9kdWxlIFN5bnRheGVyciA6PSBTeW50YXhlcnIpXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBGb3IgdGVzdHMgYW5kIFBweF9jb3JlIGNvbXBhdGliaWxpdHkgbGF5ZXIgKilcbm1vZHVsZSBQcHhsaWJfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29tbW9uID0gQ29tbW9uXG4gIG1vZHVsZSBOYW1lID0gTmFtZVxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBQcHhsaWJcblxubGV0IGRlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmRlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9kZWZhdWx0XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChhbHRfb3B0aW9uIChwc3RyX2V2YWwgX18gbmlsIF46OiBuaWwpIG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgZHJvcF9kZWZhdWx0X2VxdWFsID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfY29tcGFyZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uQHlvanNvbl9kcm9wX2RlZmF1bHQuY29tcGFyZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfeW9qc29uID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25cIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgZHJvcF9pZiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ueW9qc29uX2Ryb3BfaWZcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgb3BhcXVlID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJ5b2pzb24ub3BhcXVlXCIgQXR0cmlidXRlLkNvbnRleHQuY29yZV90eXBlIEFzdF9wYXR0ZXJuLihwc3RyIG5pbCkgKClcbjs7XG5cbmxldCBvcHRpb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLm9wdGlvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBhbGxvd19leHRyYV9maWVsZHNfdGQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmFsbG93X2V4dHJhX2ZpZWxkc1wiXG4gICAgQXR0cmlidXRlLkNvbnRleHQudHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc19jZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IHlvanNvbl9rZXkgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLmtleVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQuY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIChlc3RyaW5nIF9fKSBuaWwgXjo6IG5pbCkpXG4gICAgKGZ1biB4IC0+IHgpXG47O1xuXG5sZXQgeW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ubmFtZVwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQucnRhZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIGF0dHIgZGVzY3JpcHRpb24gPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICB+bG9jXG4gICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAJXNdIGlzIG9ubHkgYWxsb3dlZCBvbiB0eXBlIFslc10uXCJcbiAgICAoQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgICBkZXNjcmlwdGlvblxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkIHgpXG4gIHRoZW5cbiAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgIH5sb2NcbiAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiBpbmxpbmUgcmVjb3Jkcy5cIlxuOztcblxubGV0IGZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB4ID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgYWxsb3dfZXh0cmFfZmllbGRzX3RkIHgpXG4gIHRoZW4gKFxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IGNkc1xuICAgICAgd2hlbiBMaXN0LmV4aXN0cyBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICBtYXRjaCBjZC5wY2RfYXJncyB3aXRoXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIF8gLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIG9ubHkgd29ya3Mgb24gcmVjb3Jkcy4gRm9yIGlubGluZSBcXFxuICAgICAgICAgcmVjb3JkcywgZG86IHR5cGUgdCA9IEEgb2YgeyBhIDogaW50IH0gW0BAYWxsb3dfZXh0cmFfZmllbGRzXSB8IEIgW0BAQEBkZXJpdmluZyBcXFxuICAgICAgICAgeW9qc29uXVwiXG4gICAgfCBfIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcInBweF95b2pzb25fY29udjogW0BAQEBhbGxvd19leHRyYV9maWVsZHNdIGlzIG9ubHkgYWxsb3dlZCBvbiByZWNvcmRzLlwiKVxuOztcblxubW9kdWxlIFJlY29yZF9maWVsZF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgY29tbW9uID0gWyBgeW9qc29uX29wdGlvbiBvZiBjb3JlX3R5cGUgXVxuXG4gIGxldCBnZXRfYXR0cmlidXRlIGF0dHIgbGQgfmYgPVxuICAgIE9wdGlvbi5tYXAgKEF0dHJpYnV0ZS5nZXQgYXR0ciBsZCkgfmY6KGZ1biB4IC0+IGYgeCwgQXR0cmlidXRlLm5hbWUgYXR0cilcbiAgOztcblxuICBsZXQgY3JlYXRlIH5sb2MgZ2V0dGVycyBsZCA9XG4gICAgbGV0IGNvbW1vbl9nZXR0ZXJzID1cbiAgICAgIFsgKGZ1biBsZCAtPlxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5nZXQgb3B0aW9uIGxkIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICAgICAgfCBbJXR5cGU6IFsldD8gdHldIG9wdGlvbl0gLT4gU29tZSAoYHlvanNvbl9vcHRpb24gdHksIFwiW0B5b2pzb24ub3B0aW9uXVwiKVxuICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX2F0dHJpYnV0ZSB+bG9jIG9wdGlvbiBcIl8gb3B0aW9uXCIpXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICBdXG4gICAgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlcl9tYXAgKGdldHRlcnMgQCBjb21tb25fZ2V0dGVycykgfmY6KGZ1biBmIC0+IGYgbGQpIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgKHYsIF8pIF0gLT4gU29tZSB2XG4gICAgfCBfIDo6IF8gOjogXyBhcyBhdHRyaWJ1dGVzIC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogJXNcIlxuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChMaXN0Lm1hcCBhdHRyaWJ1dGVzIH5mOnNuZCkpXG4gIDs7XG5cbiAgbW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIGNvbW1vblxuICAgICAgfCBgZGVmYXVsdCBvZiBleHByZXNzaW9uXG4gICAgICBdXG5cbiAgICBsZXQgY3JlYXRlIH5sb2MgbGQgPVxuICAgICAgY3JlYXRlIH5sb2MgWyBnZXRfYXR0cmlidXRlIGRlZmF1bHQgfmY6KGZ1biBkZWZhdWx0IC0+IGBkZWZhdWx0IGRlZmF1bHQpIF0gbGRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgb2YgWyBgbm9fYXJnIHwgYGNvbXBhcmUgfCBgZXF1YWwgfCBgeW9qc29uIHwgYGZ1bmMgb2YgZXhwcmVzc2lvbiBdXG4gICAgICB8IGBkcm9wX2lmIG9mIGV4cHJlc3Npb25cbiAgICAgIHwgYGtlZXBcbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmxvY1xuICAgICAgICBbIGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+IGBkcm9wX2RlZmF1bHQgYG5vX2FyZ1xuICAgICAgICAgICAgfCBTb21lIGUgLT4gYGRyb3BfZGVmYXVsdCAoYGZ1bmMgZSkpXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHRfZXF1YWwgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBlcXVhbClcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9jb21wYXJlIH5mOihmdW4gKCkgLT4gYGRyb3BfZGVmYXVsdCBgY29tcGFyZSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF95b2pzb24gfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGB5b2pzb24pXG4gICAgICAgIDsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2lmIH5mOihmdW4geCAtPiBgZHJvcF9pZiB4KVxuICAgICAgICBdXG4gICAgICAgIGxkXG4gICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6YGtlZXBcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPVxuICB7IGxhYmVsIDogc3RyaW5nXG4gIDsgbmFtZV9vdmVycmlkZSA6IHN0cmluZyBvcHRpb25cbiAgfVxuXG5sZXQgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZSA9IHsgbGFiZWw7IG5hbWVfb3ZlcnJpZGUgfVxuXG5sZXQgb2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKGNkIDogUHB4bGliLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSA9XG4gIGxldCBsYWJlbCA9IGNkLnBjZF9uYW1lLnR4dCBpblxuICBsZXQgbmFtZV9vdmVycmlkZSA9IFBweGxpYi5BdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl92YXJpYW50X25hbWUgY2QgaW5cbiAgY3JlYXRlIH5sYWJlbCB+bmFtZV9vdmVycmlkZVxuOztcblxubGV0IGxhYmVsIHQgPSB0LmxhYmVsXG5sZXQgbmFtZSB0ID0gT3B0aW9uLnZhbHVlIHQubmFtZV9vdmVycmlkZSB+ZGVmYXVsdDp0LmxhYmVsXG4iLCJvcGVuIEJhc2Vcbm9wZW4gUHB4bGliXG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBBdHRycyA9IEF0dHJzXG5cbmxldCAoIC0tPiApIGxocyByaHMgPSBjYXNlIH5ndWFyZDpOb25lIH5saHMgfnJoc1xuXG4oKiBTaW1wbGlmaWVzIG1hdGNoIGNhc2VzLCBmb3IgcmVhZGFiaWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCdzIG5vdCBvYnZpb3VzIHdlIGNhblxuICAgc3RpY2sgdGhpcyBpbiBwcHhfY29yZSwgYXMgKG1hdGNoIGUxIHdpdGggcCAtPiBlMikgYW5kIChsZXQgcCA9IGUxIGluIGUyKSBhcmUgbm90IHR5cGVkXG4gICBleGFjdGx5IHRoZSBzYW1lICh0eXBlIGluZmVyZW5jZSBnb2VzIGluIGRpZmZlcmVudCBvcmRlciwgbWVhbmluZyB0eXBlIGRpc2FtYmlndWF0aW9uXG4gICBkaWZmZXJzKS4gKilcbmxldCBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlcyA9XG4gIG1hdGNoIGNhc2VzIHdpdGhcbiAgfCBbIHsgcGNfbGhzOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyB9IF0gLT5cbiAgICAobWF0Y2ggcGNfbGhzLCBleHByIHdpdGhcbiAgICAgfCAoIHsgcHBhdF9hdHRyaWJ1dGVzID0gW107IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gaWRlbnQ7IF8gfTsgXyB9XG4gICAgICAgLCB7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGlkZW50JzsgXyB9OyBfIH0gKVxuICAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIGlkZW50IGlkZW50JyAtPiBwY19yaHNcbiAgICAgfCBfIC0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGNfbGhzIH5leHByIF0gcGNfcmhzKVxuICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIGV4cHIgY2FzZXNcbjs7XG5cbm1vZHVsZSBGdW5fb3JfbWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZ1biBvZiBleHByZXNzaW9uXG4gICAgfCBNYXRjaCBvZiBjYXNlIGxpc3RcblxuICBsZXQgZXhwciB+bG9jIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRnVuIGYgLT4gZlxuICAgIHwgTWF0Y2ggY2FzZXMgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIGNhc2VzXG4gIDs7XG5cbiAgbGV0IHVucm9sbCB+bG9jIGUgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBlYXBwbHkgfmxvYyBmIFsgZSBdXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX21hdGNoIH5sb2MgZSBjYXNlc1xuICA7O1xuXG4gIGxldCBtYXBfdG1wX3ZhcnMgfmxvYyB0cyA9XG4gICAgbGV0IHZhcnMgPSBMaXN0Lm1hcGkgdHMgfmY6KGZ1biBpIF8gLT4gXCJ2XCIgXiBJbnQudG9fc3RyaW5nIGkpIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIExpc3QubWFwMl9leG4gdmFycyB0cyB+ZjooZnVuIHZhciB0IC0+XG4gICAgICAgIGxldCBleHByID0gdW5yb2xsIH5sb2MgKGV2YXIgfmxvYyB2YXIpIHQgaW5cbiAgICAgICAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6KHB2YXIgfmxvYyB2YXIpIH5leHByKVxuICAgIGluXG4gICAgYmluZGluZ3MsIExpc3QubWFwIHZhcnMgfmY6KHB2YXIgfmxvYyksIExpc3QubWFwIHZhcnMgfmY6KGV2YXIgfmxvYylcbiAgOztcbmVuZFxuXG4oKiBBIHJlbmFtaW5nIGlzIGEgbWFwcGluZyBmcm9tIHR5cGUgdmFyaWFibGUgbmFtZSB0byB0eXBlIHZhcmlhYmxlIG5hbWUuXG4gICBJbiBkZWZpbml0aW9ucyBzdWNoIGFzOlxuXG4gICB0eXBlICdhIHQgPVxuICAgfCBBIDogPHR5cGU+IC0+ICdiIHRcbiAgIHwgQiBvZiAnYVxuXG4gICB3ZSBnZW5lcmF0ZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4geW9qc29uX29mIHBhcmFtZXRlciBuYW1lZCBhZnRlciAnYSwgYnV0ICdhIGlzIG5vdCBpblxuICAgc2NvcGUgaW4gPHR5cGU+IHdoZW4gaGFuZGxpbmcgdGhlIGNvbnN0cnVjdG9yIEEgKGJlY2F1c2UgQSBpcyBhIGdhZHQgY29uc3RydWN0b3IpLlxuICAgSW5zdGVhZCB0aGUgdHlwZSB2YXJpYWJsZXMgaW4gc2NvcGUgYXJlIHRoZSBvbmVzIGRlZmluZWQgaW4gdGhlIHJldHVybiB0eXBlIG9mIEEsXG4gICBuYW1lbHkgJ2IuIFRoZXJlIGNvdWxkIGJlIGxlc3Mgb3IgbW9yZSB0eXBlIHZhcmlhYmxlIGluIGNhc2VzIHN1Y2ggYXM6XG5cbiAgIHR5cGUgXyBsZXNzID0gTGVzcyA6IGludCBsZXNzXG4gICB0eXBlIF8gbW9yZSA9IE1vcmUgOiAoJ2EgKiAnYSkgbW9yZVxuXG4gICBJZiBmb3IgaW5zdGFuY2UsIDx0eXBlPiBpcyBbJ2IgKiAnY10sIHdoZW4gd2UgZmluZCAnYiwgd2Ugd2lsbCBsb29rIGZvciBbJ2JdIGluIHRoZVxuICAgcmVuYW1pbmcgYW5kIGZpbmQgWydhXSAob25seSBpbiB0aGF0IGdhZHQgYnJhbmNoLCBpdCBjb3VsZCBiZSBzb21ldGhpbmcgZWxzZSBpbiBvdGhlclxuICAgYnJhbmNoZXMpLCBhdCB3aGljaCBwb2ludCB3ZSBjYW4gY2FsbCB0aGUgcHJldmlvdXNseSBib3VuZCB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkXG4gICBhZnRlciAnYS5cbiAgIElmIHdlIGNhbid0IGZpbmQgYSByZXN1bHRpbmcgbmFtZSwgbGlrZSB3aGVuIGxvb2tpbmcgdXAgWydjXSBpbiB0aGUgcmVuYW1pbmcsIHRoZW4gd2VcbiAgIGFzc3VtZSB0aGUgdmFyaWFibGUgaXMgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkIGFuZCB0cmVhdCBpdCBhcyBbX10gKHdoaWNoIGlzIG9rLFxuICAgYXNzdW1pbmcgdGhlcmUgYXJlIG5vIGNvbnN0cmFpbnRzKS4gKilcbm1vZHVsZSBSZW5hbWluZyA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgaWRlbnRpdHkgOiB0XG4gIHZhbCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgOiB0IC0+IHN0cmluZyBsb2MgLT4gdFxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIHZhbCBiaW5kaW5nX2tpbmQgOiB0IC0+IHN0cmluZyAtPiBiaW5kaW5nX2tpbmRcbiAgdmFsIG9mX2dhZHQgOiBzdHJpbmcgbGlzdCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvciA9IHN0cmluZyBMb2MudFxuICB0eXBlIHQgPSAoc3RyaW5nLCBlcnJvcikgUmVzdWx0LnQgTWFwLk0oU3RyaW5nKS50IG9wdGlvblxuXG4gIGxldCBpZGVudGl0eSA9IE5vbmVcblxuICB0eXBlIGJpbmRpbmdfa2luZCA9XG4gICAgfCBVbml2ZXJzYWxseV9ib3VuZCBvZiBzdHJpbmdcbiAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmRcblxuICBsZXQgYWRkX3VuaXZlcnNhbGx5X2JvdW5kICh0IDogdCkgbmFtZSA6IHQgPVxuICAgIGxldCBuYW1lID0gbmFtZS50eHQgaW5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBtYXAgLT4gU29tZSAoTWFwLnNldCB+a2V5Om5hbWUgfmRhdGE6KE9rIG5hbWUpIG1hcClcbiAgOztcblxuICBsZXQgYmluZGluZ19raW5kIHQgdmFyID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFyXG4gICAgfCBTb21lIG1hcCAtPlxuICAgICAgKG1hdGNoIE1hcC5maW5kIG1hcCB2YXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBFeGlzdGVudGlhbGx5X2JvdW5kXG4gICAgICAgfCBTb21lIChPayB2YWx1ZSkgLT4gVW5pdmVyc2FsbHlfYm91bmQgdmFsdWVcbiAgICAgICB8IFNvbWUgKEVycm9yIHsgbG9jOyB0eHQgfSkgLT4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCIlc1wiIHR4dClcbiAgOztcblxuICAoKiBSZXR1cm4gYSBtYXAgdHJhbnNsYXRpbmcgdHlwZSB2YXJpYWJsZXMgYXBwZWFyaW5nIGluIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdBRFRcbiAgICAgY29uc3RydWN0b3IgdG8gdGhlaXIgbmFtZSBpbiB0aGUgdHlwZSBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICBGb3IgaW5zdGFuY2U6XG5cbiAgICAge1tcbiAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSBYIDogJ3ggKiAneSAtPiAoJ3gsICd5KSB0XG4gICAgIF19XG5cbiAgICAgd2lsbCBwcm9kdWNlOlxuXG4gICAgIHtbXG4gICAgICAgXCJ4XCIgLT4gT2sgXCJhXCJcbiAgICAgICAgICAgICAgICBcInlcIiAtPiBPayBcImJcIlxuICAgICBdfVxuXG4gICAgIElmIGEgdmFyaWFibGUgYXBwZWFycyB0d2ljZSBpbiB0aGUgcmV0dXJuIHR5cGUgaXQgd2lsbCBtYXAgdG8gW0Vycm9yIF9dLiBJZiBhXG4gICAgIHZhcmlhYmxlIGNhbm5vdCBiZSBtYXBwZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgZGVjbGFyYXRpb24sIGl0IHdpbGwgbWFwIHRvXG4gICAgIFtFcnJvcl0gKGZvciBpbnN0YW5jZSBbQSA6ICdhIC0+ICdhIGxpc3QgdF0pLlxuXG4gICAgIEl0IHJldHVybnMgTm9uZSBvbiB1c2VyIGVycm9yLCB0byBsZXQgdGhlIHR5cGVyIGdpdmUgdGhlIGVycm9yIG1lc3NhZ2UgKilcbiAgbGV0IG9mX2dhZHQgPVxuICAgICgqIEFkZCBhbGwgdHlwZSB2YXJpYWJsZXMgb2YgYSB0eXBlIHRvIGEgbWFwLiAqKVxuICAgIGxldCBhZGRfdHlwZXZhcnMgPVxuICAgICAgb2JqZWN0XG4gICAgICAgIGluaGVyaXQgWyhzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnRdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgICAgbWV0aG9kISBjb3JlX3R5cGUgdHkgbWFwID1cbiAgICAgICAgICBtYXRjaCB0eS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICB7IGxvYyA9IHR5LnB0eXBfbG9jXG4gICAgICAgICAgICAgIDsgdHh0ID1cbiAgICAgICAgICAgICAgICAgIFwicHB4X3lvanNvbl9jb252OiB2YXJpYWJsZSBpcyBub3QgYSBwYXJhbWV0ZXIgb2YgdGhlIHR5cGUgY29uc3RydWN0b3JcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTWFwLnNldCBtYXAgfmtleTp2YXIgfmRhdGE6KEVycm9yIGVycm9yKVxuICAgICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgdHkgbWFwXG4gICAgICBlbmRcbiAgICBpblxuICAgIGxldCBhdXggbWFwIHRwX25hbWUgdHBfaW5fcmV0dXJuX3R5cGUgPVxuICAgICAgbWF0Y2ggdHBfaW5fcmV0dXJuX3R5cGUucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF92YXIgdmFyIC0+XG4gICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICBpZiBNYXAubWVtIG1hcCB2YXJcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2MgPSB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2xvYyBpblxuICAgICAgICAgICAgRXJyb3IgeyBsb2M7IHR4dCA9IFwicHB4X3lvanNvbl9jb252OiBkdXBsaWNhdGUgdmFyaWFibGVcIiB9KVxuICAgICAgICAgIGVsc2UgT2sgdHBfbmFtZVxuICAgICAgICBpblxuICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YVxuICAgICAgfCBfIC0+IGFkZF90eXBldmFycyNjb3JlX3R5cGUgdHBfaW5fcmV0dXJuX3R5cGUgbWFwXG4gICAgaW5cbiAgICBmdW4gdHBzIGNkIC0+XG4gICAgICBtYXRjaCBjZC5wY2RfcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgKG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICB8IFB0eXBfY29uc3RyIChfLCBwYXJhbXMpIC0+XG4gICAgICAgICAgIGlmIExpc3QubGVuZ3RoIHBhcmFtcyA8PiBMaXN0Lmxlbmd0aCB0cHNcbiAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoU3RkbGliLkxpc3RMYWJlbHMuZm9sZF9sZWZ0MlxuICAgICAgICAgICAgICAgICAgdHBzXG4gICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpKVxuICAgICAgICAgICAgICAgICAgfmY6YXV4KVxuICAgICAgICAgfCBfIC0+IE5vbmUpXG4gIDs7XG5lbmRcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzID1cbiAgbGV0IG1hcCA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgUHR5cF92YXIgXyAtPiBQdHlwX2FueVxuICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgIGVuZFxuICBpblxuICBtYXAjY29yZV90eXBlXG47O1xuXG5sZXQgcmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSB4ID1cbiAgbGV0IHByZWZpeCA9IFwicmlnaWRfXCIgaW5cbiAgaWYgU3RyaW5nLmVxdWFsIHggdHlwZV9uYW1lIHx8IFN0cmluZy5pc19wcmVmaXggeCB+cHJlZml4XG4gIHRoZW4gcHJlZml4IF4geCBeIFwiX29mX3R5cGVfXCIgXiB0eXBlX25hbWVcbiAgZWxzZSB4XG47O1xuXG5sZXQgbWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSA9XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciBzIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoTG9jYXRlZC5saWRlbnQgfmxvYzp0eS5wdHlwX2xvYyAocmlnaWRfdHlwZV92YXIgfnR5cGVfbmFtZSBzKSwgW10pXG4gICAgICAgICAgfCBkZXNjIC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIGRlc2NcbiAgICAgICAgaW5cbiAgICAgICAgeyB0eSB3aXRoIHB0eXBfZGVzYyB9XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgcXVhbnRpZmllZCB0eXBlIFsgISAnYSAuLiAneiAuIChtYWtlX21vbm9fdHlwZSB0ICgnYSAuLiAneikpIF0gb3JcbiAgIFt0eXBlIGEgLi4gei4gbWFrZV9tb25vX3R5cGUgdCAoYSAuLiB6KV0gd2hlbiBbdXNlX3JpZ2lkX3ZhcmlhYmxlc10gaXMgdHJ1ZS5cbiAgIEFubm90YXRpb24gYXJlIG5lZWRlZCBmb3Igbm9uIHJlZ3VsYXIgcmVjdXJzaXZlIGRhdGF0eXBlcyBhbmQgZ2FkdCB3aGVuIHRoZSByZXR1cm4gdHlwZVxuICAgb2YgY29uc3RydWN0b3JzIGFyZSBjb25zdHJhaW5lZC4gVW5mb3J0dW5hdGVseSwgcHV0dGluZyByaWdpZCB2YXJpYWJsZXMgZXZlcnl3aGVyZSBkb2VzXG4gICBub3Qgd29yayBiZWNhdXNlIG9mIGNlcnRhaW5zIHR5cGVzIHdpdGggY29uc3RyYWludHMuIFdlIHRodXMgb25seSB1c2UgcmlnaWQgdmFyaWFibGVzXG4gICBmb3Igc3VtIHR5cGVzLCB3aGljaCBpbmNsdWRlcyBhbGwgR0FEVHMuICopXG5cbmxldCB0dmFyc19vZl9jb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gc3RyaW5nIGxpc3QgPVxuICBsZXQgdHZhcnMgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBbc3RyaW5nIGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfdmFyIHggLT4gaWYgTGlzdC5tZW0gYWNjIHggfmVxdWFsOlN0cmluZy5lcXVhbCB0aGVuIGFjYyBlbHNlIHggOjogYWNjXG4gICAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgeCBhY2NcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHR5cCAtPiBMaXN0LnJldiAodHZhcnMjY29yZV90eXBlIHR5cCBbXSlcbjs7XG5cbmxldCBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nXG4gICAgICAoKiBwbGFjaW5nIGEgc3VpdGFibHkgcG9seW1vcnBoaWMgb3IgcmlnaWQgdHlwZSBjb25zdHJhaW50IG9uIHRoZSBwYXR0ZXJuIG9yIGJvZHkgKilcbiAgICAgIChsb2MgOiBMb2NhdGlvbi50KVxuICAgICAgKHRkIDogdHlwZV9kZWNsYXJhdGlvbilcbiAgICAgICh0eXAgOiBjb3JlX3R5cGUpXG4gICAgICB+KHRwcyA6IHN0cmluZyBsb2MgbGlzdClcbiAgICAgIH4oZnVuY19uYW1lIDogc3RyaW5nKVxuICAgICAgKGJvZHkgOiBleHByZXNzaW9uKVxuICA9XG4gIGxldCB2YXJzID0gdHZhcnNfb2ZfY29yZV90eXBlIHR5cCBpblxuICBsZXQgaGFzX3ZhcnMgPVxuICAgIG1hdGNoIHZhcnMgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IF8gOjogXyAtPiB0cnVlXG4gIGluXG4gIGxldCBwYXQgPVxuICAgIGxldCBwYXQgPSBwdmFyIH5sb2MgZnVuY19uYW1lIGluXG4gICAgaWYgbm90IGhhc192YXJzXG4gICAgdGhlbiBwYXRcbiAgICBlbHNlIChcbiAgICAgIGxldCB2YXJzID0gTGlzdC5tYXAgfmY6KGZ1biB0eHQgLT4geyB0eHQ7IGxvYyB9KSB2YXJzIGluXG4gICAgICBwcGF0X2NvbnN0cmFpbnQgfmxvYyBwYXQgKHB0eXBfcG9seSB+bG9jIHZhcnMgdHlwKSlcbiAgaW5cbiAgbGV0IGJvZHkgPVxuICAgIGxldCB1c2VfcmlnaWRfdmFyaWFibGVzID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV92YXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiB1c2VfcmlnaWRfdmFyaWFibGVzXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdHlwZV9uYW1lID0gdGQucHR5cGVfbmFtZS50eHQgaW5cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICB0cHNcbiAgICAgICAgfmY6KGZ1biB0cCBib2R5IC0+XG4gICAgICAgICAgcGV4cF9uZXd0eXBlIH5sb2MgeyB0eHQgPSByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHRwLnR4dDsgbG9jID0gdHAubG9jIH0gYm9keSlcbiAgICAgICAgfmluaXQ6KHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgKG1ha2VfdHlwZV9yaWdpZCB+dHlwZV9uYW1lIHR5cCkpKVxuICAgIGVsc2UgaWYgaGFzX3ZhcnNcbiAgICB0aGVuIGJvZHlcbiAgICBlbHNlIHBleHBfY29uc3RyYWludCB+bG9jIGJvZHkgdHlwXG4gIGluXG4gIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0IH5leHByOmJvZHlcbjs7XG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIChvYmplY3RcbiAgICBpbmhlcml0IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgY3R5cGUgPVxuICAgICAgbWF0Y2ggY3R5cGUgd2l0aFxuICAgICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgfm1hcmtfYXNfc2VlbjpmYWxzZSBBdHRycy5vcGFxdWUgY3R5cGUpIC0+XG4gICAgICAgICgpXG4gICAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSAtPiAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuICBlbmQpXG4gICNnb1xuICAgICgpXG47O1xuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIHRvIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX29mX3lvanNvbl9vZiB+bG9jIHQgPSBbJXR5cGU6IFsldCB0XSAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnRdXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl95b2pzb25fb2ZcblxuICBsZXQgbWtfc2lnIH5sb2M6XyB+cGF0aDpfIChfcmYsIHRkcykgPVxuICAgIExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwICgoIF4gKSBcInlvanNvbl9vZl9cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOihta190eXBlIHRkKVxuICAgICAgICAgICB+cHJpbTpbXSkpXG4gIDs7XG5lbmRcblxuKCogR2VuZXJhdGVzIHRoZSBzaWduYXR1cmUgZm9yIHR5cGUgY29udmVyc2lvbiBmcm9tIFlvanNvbnMgKilcbm1vZHVsZSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX29mX29mX3lvanNvbiB+bG9jIHQgPSBbJXR5cGU6IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCAtPiBbJXQgdF1dXG4gIGxldCBta190eXBlIHRkID0gY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmY6dHlwZV9vZl9vZl95b2pzb25cblxuICBsZXQgc2lnX29mX3RkIHdpdGhfcG9seSB0ZCA9XG4gICAgbGV0IG9mX3lvanNvbl90eXBlID0gbWtfdHlwZSB0ZCBpblxuICAgIGxldCBsb2MgPSB7IHRkLnB0eXBlX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBvZl95b2pzb25faXRlbSA9XG4gICAgICBwc2lnX3ZhbHVlXG4gICAgICAgIH5sb2NcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgfm5hbWU6KExvY2F0ZWQubWFwIChmdW4gcyAtPiBzIF4gXCJfb2ZfeW9qc29uXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICB+cHJpbTpbXSlcbiAgICBpblxuICAgIG1hdGNoIHdpdGhfcG9seSwgaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzp0cnVlIHdpdGhcbiAgICB8IHRydWUsIGBTdXJlbHlfbm90IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgfmxvY1xuICAgICAgICBcIlNpZ19nZW5lcmF0ZV9vZl95b2pzb24uc2lnX29mX3RkOiB5b2pzb25fcG9seSBhbm5vdGF0aW9uIGJ1dCB0eXBlIGlzIHN1cmVseSBub3QgXFxcbiAgICAgICAgIGEgcG9seW1vcnBoaWMgdmFyaWFudFwiXG4gICAgfCBmYWxzZSwgKGBTdXJlbHlfbm90IHwgYE1heWJlKSAtPiBbIG9mX3lvanNvbl9pdGVtIF1cbiAgICB8ICh0cnVlIHwgZmFsc2UpLCBgRGVmaW5pdGVseSB8IHRydWUsIGBNYXliZSAtPlxuICAgICAgWyBvZl95b2pzb25faXRlbVxuICAgICAgOyBwc2lnX3ZhbHVlXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgICh2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IFwiX19cIiBeIHMgXiBcIl9vZl95b2pzb25fX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgIH50eXBlXzpvZl95b2pzb25fdHlwZVxuICAgICAgICAgICAgIH5wcmltOltdKVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBta19zaWcgfnBvbHkgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9IExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KHNpZ19vZl90ZCBwb2x5KVxuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mID0gc3RydWN0XG4gICgqIEhhbmRsaW5nIG9mIHJlY29yZCBkZWZhdWx0cyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IH5sb2MgaWQgfmY6KGZ1biBzIC0+IFwieW9qc29uX29mX1wiIF4gcykgYXJnc1xuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB5b2pzb25fb2ZfdHlwZVxuICAgICAgICAgICAgfih0eXBldmFyX2hhbmRsaW5nIDogWyBgb2sgb2YgUmVuYW1pbmcudCB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciBdKVxuICAgICAgICAgICAgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IFsldHlwZTogX10gLT4gRnVuIFslZXhwciBmdW4gXyAtPiBgU3RyaW5nIFwiX1wiXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF90dXBsZSB0cDsgXyB9IC0+XG4gICAgICBNYXRjaCBbIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkgXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSV5b2pzb25fb2Y6IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIlxuICAgICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYmluZGluZ19raW5kIHJlbmFtaW5nIHBhcm0gd2l0aFxuICAgICAgICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgcGFybSAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICAgICB8IEV4aXN0ZW50aWFsbHlfYm91bmQgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgWyV0eXBlOiBfXSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgYXJncyk7IF8gfSAtPlxuICAgICAgRnVuXG4gICAgICAgICh5b2pzb25fb2ZfdHlwZV9jb25zdHJcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBpZFxuICAgICAgICAgICAoTGlzdC5tYXAgYXJncyB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHRwKSkpKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2Fycm93IChfLCBfLCBfKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgWyVleHByXG4gICAgICAgICAgZnVuIF9mIC0+XG4gICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnlvanNvbl9vZl9mdW4gUHB4X3lvanNvbl9jb252X2xpYi5pZ25vcmVdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3ZhcmlhbnQgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFt5b2pzb25fb2ZdIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB5b2pzb25fb2ZfdHVwbGUgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOihmdW4gdHAgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApIHRwcyBpblxuICAgIGxldCBiaW5kaW5ncywgcHZhcnMsIGV2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBpbl9leHByID0gWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIGV2YXJzXV0gaW5cbiAgICBsZXQgZXhwciA9IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGluX2V4cHIgaW5cbiAgICBwcGF0X3R1cGxlIH5sb2MgcHZhcnMgLS0+IGV4cHJcblxuICAoKiBDb252ZXJzaW9uIG9mIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIHlvanNvbl9vZl92YXJpYW50XG4gICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICgobG9jLCByb3dfZmllbGRzKSA6IExvY2F0aW9uLnQgKiByb3dfZmllbGQgbGlzdClcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBpdGVtIHJvdyA9XG4gICAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3cgaW5cbiAgICAgIG1hdGNoIHJvdy5wcmZfZGVzYyB3aXRoXG4gICAgICB8IFJ0YWcgKGNuc3RyLCB0cnVlLCBbXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXSBdXVxuICAgICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBlc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV1dIGluXG4gICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9IExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZykgYXJncyBpblxuICAgICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIHlvanNvbl9vZl9hcmdzIGluXG4gICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgfCBbIHBhdHQgXSAtPiBwYXR0XG4gICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICBpblxuICAgICAgICBwcGF0X3ZhcmlhbnQgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgfmxvYyAoU29tZSBwYXR0KVxuICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgWyVleHByIGBMaXN0IFslZSBlbGlzdCB+bG9jIChjbnN0cl9leHByIDo6IHZhcnMpXV1cbiAgICAgIHwgUmluaGVyaXQgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIFtdKTsgXyB9IC0+XG4gICAgICAgIHBwYXRfYWxpYXMgfmxvYyAocHBhdF90eXBlIH5sb2MgaWQpIChMb2MubWFrZSBcInZcIiB+bG9jKVxuICAgICAgICAtLT4geW9qc29uX29mX3R5cGVfY29uc3RyIH5sb2MgaWQgWyBbJWV4cHIgdl0gXVxuICAgICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUnRhZy8mXCJcbiAgICAgIHwgUmluaGVyaXQgKHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBfIDo6IF8pOyBfIH0gYXMgdHlwKSAtPlxuICAgICAgICBsZXQgY2FsbCA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nIHR5cCkgaW5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpIC0tPiBbJWV4cHIgWyVlIGNhbGxdIHZdXG4gICAgICB8IFJpbmhlcml0IF8gLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ1bnN1cHBvcnRlZDogeW9qc29uX29mX3ZhcmlhbnQvUmluaGVyaXQvbm9uLWlkXCJcbiAgICAgICgqIGltcG9zc2libGU/KilcbiAgICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgICBpblxuICAgIE1hdGNoIChMaXN0Lm1hcCB+ZjppdGVtIHJvd19maWVsZHMpXG5cbiAgKCogUG9seW1vcnBoaWMgcmVjb3JkIGZpZWxkcyAqKVxuICBhbmQgeW9qc29uX29mX3BvbHkgfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAoKiBTaG91bGQgYmUgaW1wb3NzaWJsZSBiZWNhdXNlIFt5b2pzb25fb2ZfcG9seV0gaXMgb25seSBjYWxsZWQgb24gcG9seW1vcnBoaWMgcmVjb3JkXG4gICAgICAgICBmaWVsZHMgYW5kIHJlY29yZCB0eXBlIGRlZmluaXRpb25zIGNhbid0IG9jY3VyIGluIHR5cGUgZXhwcmVzc2lvbnMuICopXG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBvbHltb3JwaGljIHR5cGUgaW4gYSB0eXBlIGV4cHJlc3Npb25cIlxuICAgIHwgYG9rIHJlbmFtaW5nIC0+XG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX29wYXF1ZV1cbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgICAgaW5cbiAgICAgIGxldCByZW5hbWluZyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0IHBhcm1zIH5pbml0OnJlbmFtaW5nIH5mOlJlbmFtaW5nLmFkZF91bml2ZXJzYWxseV9ib3VuZFxuICAgICAgaW5cbiAgICAgIChtYXRjaCB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cCB3aXRoXG4gICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgICAgTWF0Y2hcbiAgICAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICAgICAgIChwZXhwX21hdGNoIH5sb2MgWyVleHByIGFyZ10gbWF0Y2hpbmdzKVxuICAgICAgICAgICBdKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgcmVjb3JkIHR5cGVzICopXG5cbiAgbGV0IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgPVxuICAgIGxldCBwID0gTG9jLm1ha2UgKExvbmdpZGVudC5MaWRlbnQgbmFtZSkgfmxvYywgcHZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgIHBhdHQgQCBbIHAgXVxuICA7O1xuXG4gIHR5cGUgaXNfZW1wdHlfZXhwciA9XG4gICAgfCBJbnNwZWN0X3ZhbHVlIG9mIChsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG4gICAgfCBJbnNwZWN0X3lvanNvbiBvZiAoY252X2V4cHI6ZXhwcmVzc2lvbiAtPiBsb2NhdGlvbiAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24pXG5cbiAgbGV0IHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHlfZXhwciBrZXkgPVxuICAgIGxldCBsb2MgPSB7IHRwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgbGV0IGNudl9leHByID1cbiAgICAgIG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgIHwgRnVuIGV4cCAtPiBleHBcbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gZWwgLT4gWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZWxdIG1hdGNoaW5nc11dXG4gICAgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbnZfZXhwclxuICAgICAgfCBTb21lIHlvanNvbl9vZiAtPiBbJWV4cHIgWyVlIHlvanNvbl9vZl0gWyVlIGNudl9leHByXV1cbiAgICBpblxuICAgIGxldCBleHByID1cbiAgICAgIGxldCB2X25hbWUgPSBcInZfXCIgXiBuYW1lIGluXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIFslZVxuICAgICAgICAgICAgbWF0Y2ggaXNfZW1wdHlfZXhwciB3aXRoXG4gICAgICAgICAgICB8IEluc3BlY3RfdmFsdWUgaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciBsb2MgKGV2YXIgfmxvYyB2X25hbWUpXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gWyVlIGV2YXIgfmxvYyB2X25hbWVdIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1cbiAgICAgICAgICAgIHwgSW5zcGVjdF95b2pzb24gaXNfZW1wdHlfZXhwciAtPlxuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICBpZiBbJWUgaXNfZW1wdHlfZXhwciB+Y252X2V4cHIgbG9jIFslZXhwciBhcmddXVxuICAgICAgICAgICAgICAgIHRoZW4gYm5kc1xuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgbGV0IGJuZCA9IFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnIGluXG4gICAgICAgICAgICAgICAgICBibmQgOjogYm5kcyldXVxuICAgICAgICBpblxuICAgICAgICBbJWUgZXhwcl1dXG4gICAgaW5cbiAgICBwYXR0LCBleHByXG4gIDs7XG5cbiAgbGV0IGRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZWN1cnNpdmVfb2NjdXJyZW5jZXMgfnR5cGVzX2JlaW5nX2RlZmluZWQgfmxvYyB+d2h5IHRwID1cbiAgICBsZXQgZGlzYWxsb3dfdmFyaWFibGVzID1cbiAgICAgIGxldCBpdGVyID1cbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgfCBQdHlwX3ZhciB2IC0+XG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgY29udGFpbnMgXFxcbiAgICAgICAgICAgICAgICAgYSB0eXBlIHZhcmlhYmxlOiAnJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29tcGFyaXNvbiBpcyBub3QgYXZhaWFibGUgZm9yIHR5cGUgdmFyaWFibGVzLlxcblxcXG4gICAgICAgICAgICAgICAgIENvbnNpZGVyIHVzaW5nIFtAeW9qc29uX2Ryb3BfaWYgX10gb3IgW0B5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvbl0gXFxcbiAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBjb21wYXJlIC0+IFwiY29tcGFyZVwiXG4gICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICB8IHQgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgdFxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBpdGVyI2NvcmVfdHlwZVxuICAgIGluXG4gICAgbGV0IGRpc2FsbG93X3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyA9XG4gICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBmdW4gXyAtPiAoKVxuICAgICAgfCBgUmVjdXJzaXZlIHR5cGVzX2JlaW5nX2RlZmluZWQgLT5cbiAgICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlciBhcyBzdXBlclxuXG4gICAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyBsb2MgPSBfOyB0eHQgPSBMaWRlbnQgcyB9LCBfKSBhcyB0IC0+XG4gICAgICAgICAgICAgICAgaWYgU2V0Lm1lbSB0eXBlc19iZWluZ19kZWZpbmVkIHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgICBcIltAeW9qc29uX2Ryb3BfZGVmYXVsdC4lc10gd2FzIHVzZWQsIGJ1dCB0aGUgdHlwZSBvZiB0aGUgZmllbGQgXFxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdHlwZSBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHJlY3Vyc2l2ZSBibG9jazogJXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgbm90IHN1cHBvcnRlZC5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggd2h5IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgYGVxdWFsIC0+IFwiZXF1YWxcIilcbiAgICAgICAgICAgICAgICAgICAgcztcbiAgICAgICAgICAgICAgICBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBkaXNhbGxvd192YXJpYWJsZXMgdHA7XG4gICAgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIHRwXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgIGhvd1xuICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgcGF0dFxuICAgICAgICBleHByXG4gICAgICAgIG5hbWVcbiAgICAgICAgdHBcbiAgICAgICAgP3lvanNvbl9vZlxuICAgICAgICBkZWZhdWx0XG4gICAgICAgIGtleVxuICAgID1cbiAgICBsZXQgaXNfZW1wdHkgPVxuICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgIHwgYHlvanNvbiAtPlxuICAgICAgICBJbnNwZWN0X3lvanNvblxuICAgICAgICAgIChmdW4gfmNudl9leHByIGxvYyB5b2pzb25fZXhwciAtPlxuICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIChbJWUgY252X2V4cHJdIFslZSBkZWZhdWx0XSkgWyVlIHlvanNvbl9leHByXV0pXG4gICAgICB8IChgbm9fYXJnIHwgYGZ1bmMgXyB8IGBjb21wYXJlIHwgYGVxdWFsKSBhcyBob3cgLT5cbiAgICAgICAgbGV0IGVxdWFsaXR5X2YgbG9jID1cbiAgICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgIHwgYG5vX2FyZyAtPlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbQG9jYW1sLnBwd2FybmluZ1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0XSBpcyBkZXByZWNhdGVkOiBcXFxuICAgICAgICAgICAgICAgICBwbGVhc2UgdXNlIG9uZSBvZjpcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdCBmXSBhbmQgZ2l2ZSBhbiBcXFxuICAgICAgICAgICAgICAgICBleHBsaWNpdCBlcXVhbGl0eSBmdW5jdGlvbiAoW2YgPSBcXFxuICAgICAgICAgICAgICAgICBQb2x5Lig9KV0gY29ycmVzcG9uZHMgdG8gdGhlIG9sZCBcXFxuICAgICAgICAgICAgICAgICBiZWhhdmlvcilcXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXSBpZiB0aGUgXFxcbiAgICAgICAgICAgICAgICAgdHlwZSBzdXBwb3J0cyBbJWNvbXBhcmVdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQuZXF1YWxdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslZXF1YWxdXFxuXFxcbiAgICAgICAgICAgICAgICAgLSBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBpZiB5b3UgXFxcbiAgICAgICAgICAgICAgICAgd2FudCB0byBjb21wYXJlIHRoZSB5b2pzb24gXFxcbiAgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpb25zXFxuXCJdXVxuICAgICAgICAgIHwgYGZ1bmMgZiAtPiBmXG4gICAgICAgICAgfCBgY29tcGFyZSAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBjb21wYXJlXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVjb21wYXJlLmVxdWFsOiBbJXQgdHBdXV1cbiAgICAgICAgICB8IGBlcXVhbCAtPlxuICAgICAgICAgICAgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d2h5OmBlcXVhbFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIHRwO1xuICAgICAgICAgICAgWyVleHByIFslZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICBpblxuICAgICAgICBJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSBlcXVhbGl0eV9mIGxvY10gWyVlIGRlZmF1bHRdIFslZSBleHByXV0pXG4gICAgaW5cbiAgICB5b2pzb25fb2ZfcmVjb3JkX2ZpZWxkIH5yZW5hbWluZyBwYXR0IGV4cHIgbmFtZSB0cCA/eW9qc29uX29mIGlzX2VtcHR5IGtleVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+cmVuYW1pbmcgbG9jIGZsZHMgfndyYXBfZXhwciA9XG4gICAgbGV0IGNvbGwgKChwYXR0IDogKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QpLCBleHByKSBsZCA9XG4gICAgICBsZXQgbmFtZSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0geyBsZC5wbGRfbmFtZS5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLllvanNvbl9vZi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICB8IGB5b2pzb25fb3B0aW9uIHRwIC0+XG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBbJWV4cHIgdl0gaW5cbiAgICAgICAgbGV0IGNudl9leHByID1cbiAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICB2bmFtZVxuICAgICAgICAgICAgKHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpXSB3aXRoXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBibmRzXG4gICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSB2IC0+XG4gICAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICBibmQgOjogYm5kc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFslZSBleHByXV1cbiAgICAgICAgaW5cbiAgICAgICAgcGF0dCwgZXhwclxuICAgICAgfCBgZHJvcF9kZWZhdWx0IGhvdyAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICAobWF0Y2ggQXR0cmlidXRlLmdldCBBdHRycy5kZWZhdWx0IGxkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm5vIGRlZmF1bHQgdG8gZHJvcFwiXG4gICAgICAgICB8IFNvbWUgZGVmYXVsdCAtPlxuICAgICAgICAgICB5b2pzb25fb2ZfZGVmYXVsdF9maWVsZFxuICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgaG93XG4gICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgcGF0dFxuICAgICAgICAgICAgIGV4cHJcbiAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgdHBcbiAgICAgICAgICAgICBkZWZhdWx0XG4gICAgICAgICAgICAga2V5KVxuICAgICAgfCBgZHJvcF9pZiB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBwYXR0XG4gICAgICAgICAgZXhwclxuICAgICAgICAgIG5hbWVcbiAgICAgICAgICB0cFxuICAgICAgICAgIChJbnNwZWN0X3ZhbHVlIChmdW4gbG9jIGV4cHIgLT4gWyVleHByIFslZSB0ZXN0XSBbJWUgZXhwcl1dKSlcbiAgICAgICAgICBrZXlcbiAgICAgIHwgYGtlZXAgYXMgdGVzdCAtPlxuICAgICAgICBsZXQgdHAgPSBsZC5wbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICAgICAgbGV0IHZuYW1lID0gZXZhciB+bG9jIChcInZfXCIgXiBuYW1lKSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IGBrZWVwIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbGV0IGFyZyA9IFslZSBjbnZfZXhwcl0gaW5cbiAgICAgICAgICAgICAgKFslZSBlc3RyaW5nIH5sb2Mga2V5XSwgYXJnKSA6OiBibmRzXVxuICAgICAgICAgIHwgYG9taXRfbmlsIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGNudl9leHByXSB3aXRoXG4gICAgICAgICAgICAgIHwgYE51bGwgLT4gYm5kc1xuICAgICAgICAgICAgICB8IGFyZyAtPiAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgIGluXG4gICAgICAgICggcGF0dFxuICAgICAgICAsIFslZXhwclxuICAgICAgICAgIGxldCBibmRzID0gWyVlIGJuZHNdIGluXG4gICAgICAgICAgWyVlIGV4cHJdXSApXG4gICAgaW5cbiAgICBsZXQgaW5pdF9leHByID0gd3JhcF9leHByIFslZXhwciBibmRzXSBpblxuICAgIGxldCBwYXR0LCBleHByID0gTGlzdC5mb2xkX2xlZnQgfmY6Y29sbCB+aW5pdDooW10sIGluaXRfZXhwcikgZmxkcyBpblxuICAgICggcHBhdF9yZWNvcmQgfmxvYyBwYXR0IENsb3NlZFxuICAgICwgWyVleHByXG4gICAgICBsZXQgYm5kcyA6IChzdHJpbmcgKiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbi5TYWZlLnQpIGxpc3QgPSBbXSBpblxuICAgICAgWyVlIGV4cHJdXSApXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiBzdW0gdHlwZXMgKilcblxuICBsZXQgYnJhbmNoX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCByZW5hbWluZyB+bG9jIGNvbnN0cl9saWQgY29uc3RyX3N0ciBhcmdzID1cbiAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IFBjc3RyX3JlY29yZCBsZHMgLT5cbiAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgbG9jXG4gICAgICAgICAgbGRzXG4gICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBMaXN0IFsgWyVlIGNuc3RyX2V4cHJdOyBgQXNzb2MgWyVlIGV4cHJdIF1dKVxuICAgICAgaW5cbiAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KSAtLT4gZXhwclxuICAgIHwgUGNzdHJfdHVwbGUgcGNkX2FyZ3MgLT5cbiAgICAgIChtYXRjaCBwY2RfYXJncyB3aXRoXG4gICAgICAgfCBbXSAtPlxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIE5vbmUgLS0+IFslZXhwciBgTGlzdCBbIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdIF1dXG4gICAgICAgfCBhcmdzIC0+XG4gICAgICAgICBsZXQgeW9qc29uX29mX2FyZ3MgPVxuICAgICAgICAgICBMaXN0Lm1hcCB+ZjooeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykpIGFyZ3NcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgY25zdHJfZXhwciA9IFslZXhwciBgU3RyaW5nIFslZSBjb25zdHJfc3RyXV0gaW5cbiAgICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgICAgbWF0Y2ggcGF0dHMgd2l0aFxuICAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICAgfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBwYXR0c1xuICAgICAgICAgaW5cbiAgICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2MgY29uc3RyX2xpZCAoU29tZSBwYXR0KVxuICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXSlcbiAgOztcblxuICBsZXQgeW9qc29uX29mX3N1bSB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0cHMgY2RzID1cbiAgICBGdW5fb3JfbWF0Y2guTWF0Y2hcbiAgICAgIChMaXN0Lm1hcCBjZHMgfmY6KGZ1biBjZCAtPlxuICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcub2ZfZ2FkdCB0cHMgY2QgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbGlkID0gTG9jYXRlZC5tYXAgbGlkZW50IGNkLnBjZF9uYW1lIGluXG4gICAgICAgICBsZXQgY29uc3RyX25hbWUgPVxuICAgICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgaW5cbiAgICAgICAgICAgTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgfD4gZXN0cmluZyB+bG9jOmNkLnBjZF9uYW1lLmxvY1xuICAgICAgICAgaW5cbiAgICAgICAgIGJyYW5jaF9zdW1cbiAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgcmVuYW1pbmdcbiAgICAgICAgICAgfmxvYzpjZC5wY2RfbG9jXG4gICAgICAgICAgIGNvbnN0cl9saWRcbiAgICAgICAgICAgY29uc3RyX25hbWVcbiAgICAgICAgICAgY2QucGNkX2FyZ3MpKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IHlvanNvbl9vZl9uaWwgbG9jID0gRnVuX29yX21hdGNoLkZ1biBbJWV4cHIgZnVuIF92IC0+IGFzc2VydCBmYWxzZV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBjZHMgLT5cbiAgICAgICAgICB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIChMaXN0Lm1hcCB0cHMgfmY6KGZ1biB4IC0+IHgudHh0KSkgY2RzXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPlxuICAgICAgICAgIGxldCByZW5hbWluZyA9IFJlbmFtaW5nLmlkZW50aXR5IGluXG4gICAgICAgICAgbGV0IHBhdHQsIGV4cHIgPVxuICAgICAgICAgICAgeW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3RcbiAgICAgICAgICAgICAgfnJlbmFtaW5nXG4gICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgICBsZHNcbiAgICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIGV4cHIgLT4gWyVleHByIGBBc3NvYyBbJWUgZXhwcl1dKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTWF0Y2ggWyBwYXR0IC0tPiBleHByIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4geW9qc29uX29mX25pbCBsb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+IHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgUmVuYW1pbmcuaWRlbnRpdHkpIHR5KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19wcml2YXRlX2FsaWFzID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCwgdGQucHR5cGVfbWFuaWZlc3QsIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0LCBTb21lIF8sIFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBpc19wcml2YXRlX2FsaWFzXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogUmVwbGFjZSBhbGwgdHlwZSB2YXJpYWJsZSBieSBfIHRvIGF2b2lkIGdlbmVyYWxpemF0aW9uIHByb2JsZW1zICopXG4gICAgICAgIGxldCB0eV9zcmMgPVxuICAgICAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtYW5pZmVzdCA9XG4gICAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgIHwgU29tZSBtYW5pZmVzdCAtPiBtYW5pZmVzdFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInlvanNvbl9vZl90ZC9uby1tYW5pZmVzdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0eV9kc3QgPSByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBtYW5pZmVzdCBpblxuICAgICAgICBsZXQgY29lcmNpb24gPSBbJWV4cHIgKHYgOiBbJXQgdHlfc3JjXSA6PiBbJXQgdHlfZHN0XSldIGluXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgY29lcmNpb24gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIGNvZXJjaW9uIG1hdGNoaW5nc11dKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aCByZWN1cnNpdmUgdHlwZXMgYnlcbiAgICAgICAgICAgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHYgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHZdIF1dXVxuICAgICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzKVxuICAgIGluXG4gICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfdHlwZSB0ZCBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBpZC50eHQpKSBpblxuICAgICAgbGV0IHJlY19mbGFnID1cbiAgICAgICAgbWF0Y2ggdHlwZXNfYmVpbmdfZGVmaW5lZCB3aXRoXG4gICAgICAgIHwgYFJlY3Vyc2l2ZSBfIC0+IFJlY3Vyc2l2ZVxuICAgICAgICB8IGBOb25yZWN1cnNpdmUgLT4gTm9ucmVjdXJzaXZlXG4gICAgICBpblxuICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgcGF0dHMgYm9keSlcbiAgICBpblxuICAgIFsgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5IF1cbiAgOztcblxuICBsZXQgeW9qc29uX29mX3RkcyB+bG9jIH5wYXRoOl8gKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgIGxldCB0eXBlc19iZWluZ19kZWZpbmVkID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IGBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGBSZWN1cnNpdmVcbiAgICAgICAgICAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpIChMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dCkpKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooeW9qc29uX29mX3RkIH50eXBlc19iZWluZ19kZWZpbmVkKSBpblxuICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGZsZHMgPVxuICAgIGxldCBjb2xsIGxkID1cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6bGQucGxkX25hbWUudHh0IChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpXG4gICAgICBpblxuICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgZXN0cmluZyB+bG9jIGtleVxuICAgIGluXG4gICAgZWxpc3QgfmxvYyAoTGlzdC5tYXAgfmY6Y29sbCBmbGRzKVxuICA7O1xuXG4gIGxldCB5b2pzb25fZmllbGRzX29mX3RkIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgIHwgUHR5cGVfcmVjb3JkIGxkcyAtPiB5b2pzb25fZmllbGRzX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpc3QgbG9jIGxkc1xuICAgICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9vcGVuIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IHlvanNvbl9maWVsZHMgb25seSB3b3JrcyBvbiByZWNvcmRzXCJcbiAgICBpblxuICAgIGxldCB0eXAgPSBbJXR5cGU6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBmdW5jX25hbWUgPSBcInlvanNvbl9maWVsZHNfb2ZfXCIgXiB0eXBlX25hbWUgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgcGF0dHMgPSBMaXN0Lm1hcCB0cHMgfmY6KGZ1biBpZCAtPiBwdmFyIH5sb2MgKFwiX2ZpZWxkc19vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGRzIH5sb2MgfnBhdGg6XyAoXywgdGRzKSA9XG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIChMaXN0Lm1hcCB0ZHMgfmY6eW9qc29uX2ZpZWxkc19vZl90ZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX29mX3lvanNvbiA9IHN0cnVjdFxuICAoKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgcG9seW1vcnBoaWMgdmFyaWFudHMgKilcblxuICAoKiBIYW5kbGUgYmFja3RyYWNraW5nIHdoZW4gdmFyaWFudHMgZG8gbm90IG1hdGNoICopXG4gIGxldCBoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwciA9XG4gICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXSAtLT4gZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0byBnZW5lcmF0ZSBhIG1hdGNoIGZvciB0aGUgbGFzdFxuICAgICBjYXNlIG9mIG1hdGNoaW5nIGEgdmFyaWFudCAqKVxuICBsZXQgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hlcyA9XG4gICAgbWF0Y2ggbWF0Y2hfbGFzdCwgbWF0Y2hlcyB3aXRoXG4gICAgfCB0cnVlLCBbIHsgcGNfbGhzID0gXzsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXVxuICAgIHwgXywgWyB7IHBjX2xocyA9IFslcGF0PyBfXTsgcGNfZ3VhcmQgPSBOb25lOyBwY19yaHMgPSBleHByIH0gXSAtPiBleHByXG4gICAgfCBfIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXRvbV0gbWF0Y2hlc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIG1hbGZvcm1lZCBZb2pzb25zICopXG4gIGxldCBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzIGNhbGwgPVxuICAgIGxldCBjb2xsX3N0cnVjdHMgYWNjIChsb2MsIGxhYmVsKSA9XG4gICAgICAocHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbClcbiAgICAgICAtLT5cbiAgICAgICBtYXRjaCBjYWxsIHdpdGhcbiAgICAgICB8IGBwdGFnX25vX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfbm9fYXJncyBfdHBfbG9jIF95b2pzb25dXG4gICAgICAgfCBgcHRhZ190YWtlc19hcmdzIC0+XG4gICAgICAgICBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyBfeW9qc29uXSlcbiAgICAgIDo6IGFjY1xuICAgIGluXG4gICAgbGV0IGV4Y19ub192YXJpYW50X21hdGNoID1cbiAgICAgIFslcGF0PyBfXSAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKV1cbiAgICBpblxuICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGxfc3RydWN0cyB+aW5pdDpbIGV4Y19ub192YXJpYW50X21hdGNoIF0gcmV2X2Vsc1xuICA7O1xuXG4gICgqIFNwbGl0IHRoZSByb3cgZmllbGRzIG9mIGEgdmFyaWFudCB0eXBlIGludG8gbGlzdHMgb2YgYXRvbWljIHZhcmlhbnRzLFxuICAgICBzdHJ1Y3R1cmVkIHZhcmlhbnRzLCBhdG9taWMgdmFyaWFudHMgKyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzLFxuICAgICBhbmQgc3RydWN0dXJlZCB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMuICopXG4gIGxldCBzcGxpdF9yb3dfZmllbGQgfmxvYyAoYXRvbXMsIHN0cnVjdHMsIGFpbmhzLCBzaW5ocykgcm93X2ZpZWxkID1cbiAgICBsZXQgbmFtZV9vdmVycmlkZSA9IEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtZSByb3dfZmllbGQgaW5cbiAgICBtYXRjaCByb3dfZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgdHBsID0gbG9jLCBsYWJlbCBpblxuICAgICAgdHBsIDo6IGF0b21zLCBzdHJ1Y3RzLCBgQSB0cGwgOjogYWluaHMsIHNpbmhzXG4gICAgfCBSdGFnIChjbnN0ciwgZmFsc2UsIFsgdHAgXSkgLT5cbiAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5jcmVhdGUgfmxhYmVsOmNuc3RyLnR4dCB+bmFtZV9vdmVycmlkZSBpblxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBhdG9tcywgKGxvYywgbGFiZWwpIDo6IHN0cnVjdHMsIGFpbmhzLCBgUyAobG9jLCBsYWJlbCwgdHAsIHJvd19maWVsZCkgOjogc2luaHNcbiAgICB8IFJpbmhlcml0IGluaCAtPlxuICAgICAgbGV0IGlpbmggPSBgSSBpbmggaW5cbiAgICAgIGF0b21zLCBzdHJ1Y3RzLCBpaW5oIDo6IGFpbmhzLCBpaW5oIDo6IHNpbmhzXG4gICAgfCBSdGFnIChfLCB0cnVlLCBbIF8gXSkgfCBSdGFnIChfLCBfLCBfIDo6IF8gOjogXykgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwic3BsaXRfcm93X2ZpZWxkLyZcIlxuICAgIHwgUnRhZyAoXywgZmFsc2UsIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdHlwZV9jb25zdHJfb2ZfeW9qc29uID8oaW50ZXJuYWwgPSBmYWxzZSkgfmxvYyBpZCBhcmdzID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGlkIGFyZ3MgfmxvYyB+ZjooZnVuIHMgLT5cbiAgICAgIGxldCBzID0gcyBeIFwiX29mX3lvanNvblwiIGluXG4gICAgICBpZiBpbnRlcm5hbCB0aGVuIFwiX19cIiBeIHMgXiBcIl9fXCIgZWxzZSBzKVxuICA7O1xuXG4gICgqIENvbnZlcnNpb24gb2YgdHlwZXMgKilcbiAgbGV0IHJlYyB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyA/ZnVsbF90eXBlID8oaW50ZXJuYWwgPSBmYWxzZSkgdHlwXG4gICAgOiBGdW5fb3JfbWF0Y2gudFxuICAgID1cbiAgICBsZXQgbG9jID0geyB0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBtYXRjaCB0eXAgd2l0aFxuICAgIHwgXyB3aGVuIE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLm9wYXF1ZSB0eXApIC0+XG4gICAgICBGdW4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYub3BhcXVlX29mX3lvanNvbl1cbiAgICB8IFsldHlwZTogWyV0PyBfXSB5b2pzb25fb3BhcXVlXSB8IFsldHlwZTogX10gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoICh0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHApKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhciBwYXJtOyBfIH0gLT5cbiAgICAgIChtYXRjaCB0eXBldmFyX2hhbmRsaW5nIHdpdGhcbiAgICAgICB8IGBvayAtPiBGdW4gKGV2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtKSlcbiAgICAgICB8IGBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciAtPlxuICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgXCJUeXBlIHZhcmlhYmxlcyBub3QgYWxsb3dlZCBpbiBbJSVvZl95b2pzb246IF0uIFBsZWFzZSB1c2UgbG9jYWxseSBhYnN0cmFjdCBcXFxuICAgICAgICAgICAgdHlwZXMgaW5zdGVhZC5cIilcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biBhcmcgLT5cbiAgICAgICAgICBGdW5fb3JfbWF0Y2guZXhwciB+bG9jICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBhcmcpKVxuICAgICAgaW5cbiAgICAgIEZ1biAodHlwZV9jb25zdHJfb2ZfeW9qc29uIH5sb2MgfmludGVybmFsIGlkIGFyZ3MpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5mdW5fb2ZfeW9qc29uXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZHMsIF8sIF8pOyBfIH0gLT5cbiAgICAgIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChwYXJtcywgcG9seV90cCk7IF8gfSAtPlxuICAgICAgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgcG9seV90cFxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX29iamVjdCAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NsYXNzIChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9wYWNrYWdlIF87IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBfOyBfIH0gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwiVHlwZSB1bnN1cHBvcnRlZCBmb3IgcHB4IFtvZl95b2pzb25dIGNvbnZlcnNpb25cIlxuXG4gICgqIENvbnZlcnNpb24gb2YgdHVwbGVzICopXG4gIGFuZCB0dXBsZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgdHBzKSA9XG4gICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyBmcHMgaW5cbiAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGZwcyBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFslcCBwbGlzdCB+bG9jIHBhdHRzXV1cbiAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF90dXBsZSB+bG9jIHZhcnMpXG4gICAgOyBbJXBhdD8geW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICBbJWUgZWludCB+bG9jIG5dXG4gICAgICAgICAgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBpbmNsdWRlZCB2YXJpYW50IHR5cGVzICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oID1cbiAgICBsZXQgbG9jID0gaW5oLnB0eXBfbG9jIGluXG4gICAgbGV0IGZ1bmNfZXhwciA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5pbnRlcm5hbDp0cnVlIGluaCBpblxuICAgIGxldCBhcHAgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgICBsZXQgZnVuX2V4cHIgPSBGdW5fb3JfbWF0Y2guZXhwciB+bG9jIGZ1bmNfZXhwciBpblxuICAgICAgRnVuIFslZXhwciBbJWUgZnVuX2V4cHJdIF95b2pzb25dXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZXhjID1cbiAgICAgIGhhbmRsZV9ub192YXJpYW50X21hdGNoXG4gICAgICAgIGxvY1xuICAgICAgICAoaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcylcbiAgICBpblxuICAgIGxldCBuZXdfb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBbIFslcGF0PyBfXVxuICAgICAgICAtLT4gcGV4cF90cnlcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgICAoWyVlIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgYXBwXVxuICAgICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgICAgIG1hdGNoX2V4Y1xuICAgICAgXVxuICAgIGluXG4gICAgbmV3X290aGVyX21hdGNoZXMsIHRydWVcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBhdG9taWMgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfYXRvbSB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfYXRvbXNfaW5ocyB+cmV2X3N0cnVjdHMgPVxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBBIChsb2MsIGxhYmVsKSAtPlxuICAgICAgICBsZXQgbmV3X21hdGNoID1cbiAgICAgICAgICBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgICAgIC0tPiBwZXhwX3ZhcmlhbnQgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPVxuICAgICAgbWtfdmFyaWFudF9vdGhlcl9tYXRjaGVzIGxvYyB+cmV2X2VsczpyZXZfc3RydWN0cyBgcHRhZ190YWtlc19hcmdzXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfYXRvbXNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X2F0b21zX2luaHNcbiAgICBpblxuICAgIGhhbmRsZV92YXJpYW50X21hdGNoX2xhc3QgbG9jIH5tYXRjaF9sYXN0IG1hdGNoX2F0b21zX2luaHNcblxuICAoKiBWYXJpYW50IGNvbnZlcnNpb25zICopXG5cbiAgKCogTWF0Y2ggYXJndW1lbnRzIG9mIGNvbnN0cnVjdG9ycyAodmFyaWFudHMgb3Igc3VtIHR5cGVzKSAqKVxuICBhbmQgbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50IGxhYmVsIHRwcyA9XG4gICAgbGV0IGNuc3RyX2xhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsIGluXG4gICAgbGV0IGNuc3RyIHZhcnNfZXhwciA9XG4gICAgICBpZiBpc192YXJpYW50XG4gICAgICB0aGVuIHBleHBfdmFyaWFudCB+bG9jIGNuc3RyX2xhYmVsIChTb21lIHZhcnNfZXhwcilcbiAgICAgIGVsc2UgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBjbnN0cl9sYWJlbCkgKFNvbWUgdmFyc19leHByKVxuICAgIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgbGV0IGZwcyA9IExpc3QubWFwIH5mOih0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZykgdHBzIGluXG4gICAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgICAgbGV0IGdvb2RfYXJnX21hdGNoID1cbiAgICAgICAgbGV0IHZhcnNfZXhwciA9XG4gICAgICAgICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgICAgICAgfCBbIHZhcl9leHByIF0gLT4gdmFyX2V4cHJcbiAgICAgICAgICB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIHZhcnNcbiAgICAgICAgaW5cbiAgICAgICAgY25zdHIgdmFyc19leHByXG4gICAgICBpblxuICAgICAgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaFxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBtYXRjaCB5b2pzb25fYXJncyB3aXRoXG4gICAgICB8IFslcCBwbGlzdCB+bG9jIHBhdHRzXSAtPiBbJWUgcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZ29vZF9hcmdfbWF0Y2hdXG4gICAgICB8IF8gLT5cbiAgICAgICAgWyVlXG4gICAgICAgICAgaWYgaXNfdmFyaWFudFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgX3RhZ1xuICAgICAgICAgICAgICAgIF95b2pzb25dXV1cblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBtYXRjaGluZyBzdHJ1Y3R1cmVkIHZhcmlhbnRzICopXG4gIGFuZCBta192YXJpYW50X21hdGNoX3N0cnVjdCB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIH5yZXZfc3RydWN0c19pbmhzIH5yZXZfYXRvbXNcbiAgICA9XG4gICAgbGV0IGhhc19zdHJ1Y3RzX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBjb2xsIChvdGhlcl9tYXRjaGVzLCBtYXRjaF9sYXN0KSA9IGZ1bmN0aW9uXG4gICAgICB8IGBTIChsb2MsIGxhYmVsLCB0cCwgX3JvdykgLT5cbiAgICAgICAgaGFzX3N0cnVjdHNfcmVmIDo9IHRydWU7XG4gICAgICAgIGxldCBhcmdzID1cbiAgICAgICAgICBtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHR5cF90dXBsZSB0cHMgLT4gdHBzXG4gICAgICAgICAgfCBfIC0+IFsgdHAgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbWtfY25zdHJfYXJnc19tYXRjaFxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5sb2M6dHAucHR5cF9sb2NcbiAgICAgICAgICAgIH5pc192YXJpYW50OnRydWVcbiAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIFslcGF0PyBbJXAgcHN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIGFzIF90YWddIC0tPiBleHByXG4gICAgICAgIGluXG4gICAgICAgIG5ld19tYXRjaCA6OiBvdGhlcl9tYXRjaGVzLCBmYWxzZVxuICAgICAgfCBgSSBpbmggLT5cbiAgICAgICAgaGFuZGxlX3ZhcmlhbnRfaW5oIH50eXBldmFyX2hhbmRsaW5nIGZ1bGxfdHlwZSB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzIGluaFxuICAgIGluXG4gICAgbGV0IG90aGVyX21hdGNoZXMgPSBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9hdG9tcyBgcHRhZ19ub19hcmdzIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdHNfaW5ocywgbWF0Y2hfbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihvdGhlcl9tYXRjaGVzLCBmYWxzZSkgcmV2X3N0cnVjdHNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfc3RydWN0c19pbmhzLCAhaGFzX3N0cnVjdHNfcmVmXG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgYXRvbWljIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzIChpLmUuIG5vdFxuICAgICBpbmNsdWRlZCB2YXJpYW50IHR5cGVzKSAqKVxuICBhbmQgaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkX2xpc3QgPVxuICAgIGxldCByZXZfYXRvbXMsIHJldl9zdHJ1Y3RzLCByZXZfYXRvbXNfaW5ocywgcmV2X3N0cnVjdHNfaW5ocyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+Zjooc3BsaXRfcm93X2ZpZWxkIH5sb2MpIH5pbml0OihbXSwgW10sIFtdLCBbXSkgcm93X2ZpZWxkX2xpc3RcbiAgICBpblxuICAgIGxldCBtYXRjaF9zdHJ1Y3QsIGhhc19zdHJ1Y3RzID1cbiAgICAgIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgIGluXG4gICAgbGV0IG1heWJlX3lvanNvbl9hcmdzX3BhdHQgPSBpZiBoYXNfc3RydWN0cyB0aGVuIFslcGF0PyB5b2pzb25fYXJnc10gZWxzZSBbJXBhdD8gX10gaW5cbiAgICBbIFslcGF0PyBgTGlzdCBbIGBTdHJpbmcgYXRvbSBdIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWtfdmFyaWFudF9tYXRjaF9hdG9tXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmdWxsX3R5cGVcbiAgICAgICAgICAgIH5yZXZfYXRvbXNfaW5oc1xuICAgICAgICAgICAgfnJldl9zdHJ1Y3RzXG4gICAgOyBbJXBhdD8gYExpc3QgKGBTdHJpbmcgYXRvbSA6OiBbJXAgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dF0pIGFzIF95b2pzb25dXG4gICAgICAtLT4gbWF0Y2hfc3RydWN0XG4gICAgOyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXJcbiAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgeW9qc29uXVxuICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICBdXG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgdmFyaWFudHMgKilcbiAgYW5kIHZhcmlhbnRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgKGxvYywgcm93X2ZpZWxkcykgPVxuICAgIGxldCBpc19jb250YWluZWQsIGZ1bGxfdHlwZSA9XG4gICAgICBtYXRjaCBmdWxsX3R5cGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIHB0eXBfdmFyaWFudCB+bG9jIHJvd19maWVsZHMgQ2xvc2VkIE5vbmVcbiAgICAgIHwgU29tZSBmdWxsX3R5cGUgLT4gZmFsc2UsIGZ1bGxfdHlwZVxuICAgIGluXG4gICAgbGV0IHRvcF9tYXRjaCA9XG4gICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgIHwgeyBwcmZfZGVzYyA9IFJpbmhlcml0IGluaDsgXyB9IDo6IHJlc3QgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGluaCByb3dfZmllbGRzID1cbiAgICAgICAgICBsZXQgY2FsbCA9XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgKFslZVxuICAgICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByXG4gICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAodHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oKV1cbiAgICAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgICA6PiBbJXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgZnVsbF90eXBlXSldXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCByb3dfZmllbGRzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGNhbGxcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgbGV0IGV4cHIgPVxuICAgICAgICAgICAgICBtYXRjaCBoLnByZl9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCBpbmggLT4gbG9vcCBpbmggdFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcmZ0YWdfbWF0Y2hlcyA9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gcmZ0YWdfbWF0Y2hlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBleHBfdHJ5IH5sb2MgY2FsbCAoaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2ggbG9jIGV4cHIpXG4gICAgICAgIGluXG4gICAgICAgIFsgWyVwYXQ/IHlvanNvbl0gLS0+IGxvb3AgaW5oIHJlc3QgXVxuICAgICAgfCBfIDo6IF8gLT4gaGFuZGxlX3ZhcmlhbnRfdGFnIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgcm93X2ZpZWxkc1xuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGltcG9zc2libGUgKilcbiAgICBpblxuICAgIGlmIGlzX2NvbnRhaW5lZFxuICAgIHRoZW5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgICAgICB0cnkgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSB0b3BfbWF0Y2hdIHdpdGhcbiAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgZWxzZSBNYXRjaCB0b3BfbWF0Y2hcblxuICBhbmQgcG9seV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgcGFybXMgdHAgPVxuICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICBsZXQgbWtfYmluZGluZyBwYXJtID1cbiAgICAgICAgdmFsdWVfYmluZGluZ1xuICAgICAgICAgIH5sb2NcbiAgICAgICAgICB+cGF0OihwdmFyIH5sb2MgKFwiX29mX1wiIF4gcGFybS50eHQpKVxuICAgICAgICAgIH5leHByOlxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICBpblxuICAgICAgTGlzdC5tYXAgfmY6bWtfYmluZGluZyBwYXJtc1xuICAgIGluXG4gICAgbWF0Y2ggdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgdHAgd2l0aFxuICAgIHwgRnVuIGZ1bl9leHByIC0+IEZ1biAocGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgZnVuX2V4cHIpXG4gICAgfCBNYXRjaCBtYXRjaGluZ3MgLT5cbiAgICAgIE1hdGNoXG4gICAgICAgIFsgWyVwYXQ/IGFyZ11cbiAgICAgICAgICAtLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBleHRyYWN0aW5nIHJlY29yZCBmaWVsZHMgKilcbiAgbGV0IG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgPVxuICAgIGxldCByZWMgbG9vcCBpbml0cyBub19hcmdzIGFyZ3MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpbml0cywgbm9fYXJncywgYXJnc1xuICAgICAgfCBsZCA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgbGV0IGxvYyA9IGxkLnBsZF9uYW1lLmxvYyBpblxuICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgbGV0IGtleSA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpubSAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKSBpblxuICAgICAgICAobWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkLCBsZC5wbGRfdHlwZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGB5b2pzb25fb3B0aW9uIHRwKSwgXyB8IChOb25lIHwgU29tZSAoYGRlZmF1bHQgXykpLCB0cCAtPlxuICAgICAgICAgICBsZXQgaW5pdHMgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZV0gOjogaW5pdHMgaW5cbiAgICAgICAgICAgbGV0IHVucm9sbGVkID1cbiAgICAgICAgICAgICBGdW5fb3JfbWF0Y2gudW5yb2xsXG4gICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICBbJWV4cHIgX2ZpZWxkX3lvanNvbl1cbiAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgICAgIChwc3RyaW5nIH5sb2Mga2V5XG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBtYXRjaCBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWUgPSBbJWUgdW5yb2xsZWRdIGluXG4gICAgICAgICAgICAgICAgICBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXVxuICAgICAgICAgICAgICAgICAgOj0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBmdmFsdWVcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlcyA6PSBmaWVsZF9uYW1lIDo6IFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlc10pXG4gICAgICAgICAgICAgOjogYXJnc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyBtb3JlX2ZsZHMpXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX2V4dHJhID1cbiAgICAgIFsgKFslcGF0PyBfXVxuICAgICAgICAgLS0+XG4gICAgICAgICBpZiBhbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgIHRoZW4gWyVleHByICgpXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICBpZiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApXG4gICAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICB0aGVuIGV4dHJhIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYVxuICAgICAgICAgICAgIGVsc2UgKCldKVxuICAgICAgXVxuICAgIGluXG4gICAgbG9vcCBbXSBoYW5kbGVfZXh0cmEgaGFuZGxlX2V4dHJhIChMaXN0LnJldiBmbGRzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwciA9XG4gICAgbGV0IGhhc19ub25vcHRfZmllbGRzID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHJlc190cGxzLCBiaV9sc3QsIGdvb2RfcGF0dHMgPVxuICAgICAgbGV0IHJlYyBsb29wICgocmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKHsgcGxkX25hbWUgPSB7IHR4dCA9IG5tOyBsb2MgfTsgXyB9IGFzIGxkKSA6OiBtb3JlX2ZsZHMgLT5cbiAgICAgICAgICBsZXQgZmxkID0gWyVleHByIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV1dIGluXG4gICAgICAgICAgbGV0IG1rX2RlZmF1bHQgbG9jID1cbiAgICAgICAgICAgIGJpX2xzdCwgWyVwYXQ/IFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXSA6OiBnb29kX3BhdHRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgXyB8IGB5b2pzb25fb3B0aW9uIF8pIC0+IG1rX2RlZmF1bHQgbG9jXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaGFzX25vbm9wdF9maWVsZHMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgKCBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgWyVlIGZsZF0gUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAsIFslZSBlc3RyaW5nIH5sb2Mgbm1dXVxuICAgICAgICAgICAgICAgIDo6IGJpX2xzdFxuICAgICAgICAgICAgICAsIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIFslcCBwdmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildXVxuICAgICAgICAgICAgICAgIDo6IGdvb2RfcGF0dHMgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFjYyA9IFslZXhwciBbJWUgZmxkXV0gOjogcmVzX3RwbHMsIG5ld19iaV9sc3QsIG5ld19nb29kX3BhdHRzIGluXG4gICAgICAgICAgbG9vcCBhY2MgbW9yZV9mbGRzXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICBpblxuICAgICAgbG9vcCAoW10sIFtdLCBbXSkgKExpc3QucmV2IGZsZHMpXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hfZ29vZF9leHByID1cbiAgICAgIGlmIGhhc19wb2x5XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNudnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IF8gfTsgXyB9IC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMgd2l0aFxuICAgICAgICB8IFsgbWF0Y2hfZ29vZF9leHByIF0gLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIHwgbWF0Y2hfZ29vZF9leHBycyAtPiBwZXhwX3R1cGxlIH5sb2MgbWF0Y2hfZ29vZF9leHBycylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY252dCBsZCA9XG4gICAgICAgICAgbGV0IG5tID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIEF0dHJzLlJlY29yZF9maWVsZF9oYW5kbGVyLk9mX3lvanNvbi5jcmVhdGUgfmxvYyBsZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGBkZWZhdWx0IGRlZmF1bHQpIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfdmFsdWVcIildIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLk5vbmUgLT4gWyVlIGRlZmF1bHRdXG4gICAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT4gdl1cbiAgICAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gXykgfCBOb25lIC0+IGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9jYXRlZC5saWRlbnQgfmxvYyBubSwgdmFsdWVcbiAgICAgICAgaW5cbiAgICAgICAgd3JhcF9leHByIChwZXhwX3JlY29yZCB+bG9jIChMaXN0Lm1hcCB+ZjpjbnZ0IGZsZHMpIE5vbmUpKVxuICAgIGluXG4gICAgbGV0IGV4cHIsIHBhdHQgPVxuICAgICAgbWF0Y2ggcmVzX3RwbHMsIGdvb2RfcGF0dHMgd2l0aFxuICAgICAgfCBbIHJlc19leHByIF0sIFsgcmVzX3BhdHQgXSAtPiByZXNfZXhwciwgcmVzX3BhdHRcbiAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgcmVzX3RwbHMsIHBwYXRfdHVwbGUgfmxvYyBnb29kX3BhdHRzXG4gICAgaW5cbiAgICBpZiAhaGFzX25vbm9wdF9maWVsZHNcbiAgICB0aGVuXG4gICAgICBwZXhwX21hdGNoXG4gICAgICAgIH5sb2NcbiAgICAgICAgZXhwclxuICAgICAgICBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwclxuICAgICAgICA7IFslcGF0PyBfXVxuICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICAgICBbJWUgZWxpc3QgfmxvYyBiaV9sc3RdXVxuICAgICAgICBdXG4gICAgZWxzZSBwZXhwX21hdGNoIH5sb2MgZXhwciBbIHBhdHQgLS0+IG1hdGNoX2dvb2RfZXhwciBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgY29udmVydGluZyByZWNvcmQgZmllbGRzICopXG5cbiAgbGV0IG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgZXhwcl9yZWZfaW5pdHMsIF9tY19ub19hcmdzX2ZpZWxkcywgbWNfZmllbGRzX3dpdGhfYXJncyA9XG4gICAgICBta19leHRyYWN0X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIChsb2MsIGZsZHMpXG4gICAgaW5cbiAgICBsZXQgZmllbGRfcmVmcyA9XG4gICAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAgIGZsZHNcbiAgICAgICAgZXhwcl9yZWZfaW5pdHNcbiAgICAgICAgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IGluaXQgLT5cbiAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIChuYW1lIF4gXCJfZmllbGRcIikpIH5leHByOlslZXhwciByZWYgWyVlIGluaXRdXSlcbiAgICBpblxuICAgIHBleHBfbGV0XG4gICAgICB+bG9jXG4gICAgICBOb25yZWN1cnNpdmVcbiAgICAgIChmaWVsZF9yZWZzXG4gICAgICAgQCBbIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBkdXBsaWNhdGVzXSB+ZXhwcjpbJWV4cHIgcmVmIFtdXVxuICAgICAgICAgOyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpbJXBhdD8gZXh0cmFdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICBdKVxuICAgICAgWyVleHByXG4gICAgICAgIGxldCByZWMgaXRlciA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBwZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgWyBbJXBhdD8gKGZpZWxkX25hbWUsIF9maWVsZF95b2pzb24pIDo6IHRhaWxdXG4gICAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgICAgWyVlIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgZmllbGRfbmFtZV0gbWNfZmllbGRzX3dpdGhfYXJnc107XG4gICAgICAgICAgICAgICAgICBpdGVyIHRhaWxdXG4gICAgICAgICAgICAgIDsgWyVwYXQ/IFtdXSAtLT4gWyVleHByICgpXVxuICAgICAgICAgICAgICBdXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIGZpZWxkX3lvanNvbnM7XG4gICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcyB3aXRoXG4gICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZHVwbGljYXRlcylcbiAgICAgICAgICAgIHlvanNvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgKG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEgd2l0aFxuICAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgKFBweF95b2pzb25fY29udl9saWIuKCAhICkgZXh0cmEpXG4gICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgfCBbXSAtPiBbJWUgbWtfaGFuZGxlX3JlY29yZF9tYXRjaF9yZXN1bHQgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwcl0pXVxuICA7O1xuXG4gIGxldCBpc19wb2x5IChfLCBmbGRzKSA9XG4gICAgTGlzdC5leGlzdHMgZmxkcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgeyBwbGRfdHlwZSA9IHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfTsgXyB9IC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICBsb2NcbiAgICAgICAgZmxkc1xuICAgICAgICB+d3JhcF9leHByXG4gICAgPVxuICAgIGxldCBoYXNfcG9seSA9IGlzX3BvbHkgKGxvYywgZmxkcykgaW5cbiAgICBsZXQgY252X2ZpZWxkcyA9XG4gICAgICBta19jbnZfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgaGFzX3BvbHkgKGxvYywgZmxkcykgfndyYXBfZXhwclxuICAgIGluXG4gICAgaWYgaGFzX3BvbHlcbiAgICB0aGVuIChcbiAgICAgIGxldCBwYXR0ID1cbiAgICAgICAgbGV0IHBhdHMgPVxuICAgICAgICAgIExpc3QubWFwIGZsZHMgfmY6KGZ1biB7IHBsZF9uYW1lID0geyB0eHQgPSBuYW1lOyBsb2MgfTsgXyB9IC0+IHB2YXIgfmxvYyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBwYXRzIHdpdGhcbiAgICAgICAgfCBbIHBhdCBdIC0+IHBhdFxuICAgICAgICB8IHBhdHMgLT4gcHBhdF90dXBsZSB+bG9jIHBhdHNcbiAgICAgIGluXG4gICAgICBsZXQgcmVjb3JkX2RlZiA9XG4gICAgICAgIHdyYXBfZXhwclxuICAgICAgICAgIChwZXhwX3JlY29yZFxuICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAoTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT5cbiAgICAgICAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKSlcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgaW5cbiAgICAgIHBleHBfbGV0XG4gICAgICAgIH5sb2NcbiAgICAgICAgTm9ucmVjdXJzaXZlXG4gICAgICAgIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6cGF0dCB+ZXhwcjpjbnZfZmllbGRzIF1cbiAgICAgICAgcmVjb3JkX2RlZilcbiAgICBlbHNlIGNudl9maWVsZHNcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciByZWNvcmRzICopXG4gIGxldCByZWNvcmRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgTWF0Y2hcbiAgICAgIFsgWyVwYXQ/IGBBc3NvYyBmaWVsZF95b2pzb25zIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qc29uXG4gICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGZsZHNcbiAgICAgICAgICAgICAgfndyYXBfZXhwcjooZnVuIHggLT4geClcbiAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b21cbiAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIF1cbiAgOztcblxuICAoKiBTdW0gdHlwZSBjb252ZXJzaW9ucyAqKVxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB3ZWxsLWZvcm1lZCBZb2pzb25zIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3JlY29yZCBmaWVsZHM7IF8gfSAtPlxuICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX2NkIGNkKSlcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZSAtPlxuICAgICAgICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSBlKSlcbiAgICAgICAgaW5cbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCBbIGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZyk7IGBBc3NvYyBmaWVsZF95b2pzb25zIF1cbiAgICAgICAgICBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBleHByXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIF1dXG4gICAgICAgIC0tPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSBOb25lXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfIGFzIHRwcyk7IF8gfSAtPlxuICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIH5sb2MgY2Q7XG4gICAgICAgIFslcGF0P1xuICAgICAgICAgICAgICAgYExpc3QgKGBTdHJpbmcgKFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgX3RhZykgOjogeW9qc29uX2FyZ3MpIGFzIF95b2pzb25dXG4gICAgICAgIC0tPiBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQ6ZmFsc2UgbGFiZWwgdHBzKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIG1hbGZvcm1lZCBZb2pzb25zIHdpdGggZ29vZCB0YWdzXG4gICAgIHdydC4gc3VtIHR5cGVzICopXG4gIGxldCBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9uYW1lID0gTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwgaW5cbiAgICAgIG1hdGNoIGNkIHdpdGhcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBMaXN0IChgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIF90cF9sb2MgeW9qc29uXVxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgKF8gOjogXykgfCBQY3N0cl9yZWNvcmQgXzsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gYXMgeW9qc29uXVxuICAgICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIF90cF9sb2MgeW9qc29uXSlcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBzdW0gdHlwZXMgKilcbiAgbGV0IHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cykgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgbGV0IGFsdHMgPVxuICAgICAgTGlzdC5tYXAgYWx0cyB+ZjooZnVuIGNkIC0+IGNkLCBMYWJlbF93aXRoX25hbWUub2ZfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QpXG4gICAgaW5cbiAgICBNYXRjaFxuICAgICAgKExpc3QuY29uY2F0XG4gICAgICAgICBbIG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgYWx0cylcbiAgICAgICAgIDsgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGFsdHMpXG4gICAgICAgICA7IFsgWyVwYXQ/IGBMaXN0IChgTGlzdCBfIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBgTGlzdCBbXSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtXG4gICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICA7IFslcGF0PyBfIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBfdHBfbG9jIHlvanNvbl1cbiAgICAgICAgICAgXVxuICAgICAgICAgXSlcbiAgOztcblxuICAoKiBFbXB0eSB0eXBlICopXG4gIGxldCBuaWxfb2ZfeW9qc29uIGxvYyA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBGdW5cbiAgICAgIFslZXhwclxuICAgICAgICBmdW4geW9qc29uIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBfdHBfbG9jIHlvanNvbl1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuXG4gIGxldCB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYzpfIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGZ1bGxfdHlwZSA9XG4gICAgICBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB8PiByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3Jlc1xuICAgIGluXG4gICAgbGV0IGlzX3ByaXZhdGUgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICB8IFByaXZhdGUgLT4gdHJ1ZVxuICAgICAgfCBQdWJsaWMgLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIGlzX3ByaXZhdGVcbiAgICB0aGVuIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwib2ZfeW9qc29uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgdHlwZVwiO1xuICAgIGxldCBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb24gPVxuICAgICAgbWF0Y2ggaXNfcG9seW1vcnBoaWNfdmFyaWFudCB0ZCB+c2lnXzpmYWxzZSB3aXRoXG4gICAgICB8IGBEZWZpbml0ZWx5IC0+IHRydWVcbiAgICAgIHwgYE1heWJlIC0+IHBvbHlcbiAgICAgIHwgYFN1cmVseV9ub3QgLT5cbiAgICAgICAgaWYgcG9seVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICBcInlvanNvbl9wb2x5IGFubm90YXRpb24gb24gYSB0eXBlIHRoYXQgaXMgc3VyZWx5IG5vdCBhIHBvbHltb3JwaGljIHZhcmlhbnRcIjtcbiAgICAgICAgZmFsc2VcbiAgICBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBib2R5ID1cbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhbHRzIC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIHN1bV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgKHRkLnB0eXBlX2xvYywgYWx0cylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGJscyAtPlxuICAgICAgICAgIHJlY29yZF9vZl95b2pzb25cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOlxuICAgICAgICAgICAgICAoT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMuYWxsb3dfZXh0cmFfZmllbGRzX3RkIHRkKSlcbiAgICAgICAgICAgIChsb2MsIGxibHMpXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPlxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicHB4X3lvanNvbl9jb252OiBvcGVuIHR5cGVzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+XG4gICAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHRkO1xuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBuaWxfb2ZfeW9qc29uIHRkLnB0eXBlX2xvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT5cbiAgICAgICAgICAgICB0eXBlX29mX3lvanNvblxuICAgICAgICAgICAgICAgfmZ1bGxfdHlwZVxuICAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgIH5pbnRlcm5hbDpjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHR5KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgKCogUHJldmVudCB2aW9sYXRpb24gb2YgdmFsdWUgcmVzdHJpY3Rpb24gYW5kIHByb2JsZW1zIHdpdGhcbiAgICAgICAgIHJlY3Vyc2l2ZSB0eXBlcyBieSBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgZnVuIHQgLT4gWyVlIGVhcHBseSB+bG9jIGZ1bl9leHByIFsgWyVleHByIHRdIF1dXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9mdW5jdGlvbiB+bG9jIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX25hbWUgPSB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25cIiBpblxuICAgIGxldCBpbnRlcm5hbF9uYW1lID0gXCJfX1wiIF4gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uX19cIiBpblxuICAgIGxldCBhcmdfcGF0dHMsIGFyZ19leHBycyA9XG4gICAgICBMaXN0LnVuemlwXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICB+ZjooZnVuIHRwIC0+XG4gICAgICAgICAgICAgbGV0IG5hbWUgPSBcIl9vZl9cIiBeIHRwLnR4dCBpblxuICAgICAgICAgICAgIHB2YXIgfmxvYyBuYW1lLCBldmFyIH5sb2MgbmFtZSlcbiAgICAgICAgICAgdHBzKVxuICAgIGluXG4gICAgbGV0IGJpbmRfdHBfbG9jX2luID1cbiAgICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMuJXNcIiBwYXRoIHR5cGVfbmFtZSBpblxuICAgICAgZnVuIGUgLT5cbiAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPlxuICAgICAgICAgICgqIHdlIGRlZmluaXRlbHkgZG9uJ3QgdXNlIHRoZSBzdHJpbmcsIHNvIGNsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgY29kZSBhIGJpdCAqKVxuICAgICAgICAgIGVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgWyVleHByXG4gICAgICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgICAgICBbJWUgZV1dXG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICB0aGVuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoYmluZF90cF9sb2NfaW5cbiAgICAgICAgICAgICAoZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjIH5yZWNfZmxhZyAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHkpKSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGxldCBuZWVkX3RwX2xvYywgYm9keV9iZWxvd19sYW1iZGFzID1cbiAgICAgICAgaWYgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBub192YXJpYW50X21hdGNoX21jID1cbiAgICAgICAgICAgIFsgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuTm9fdmFyaWFudF9tYXRjaF1cbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICAgeW9qc29uXVxuICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGludGVybmFsX2NhbGwgPVxuICAgICAgICAgICAgbGV0IGludGVybmFsX2V4cHIgPSBldmFyIH5sb2MgaW50ZXJuYWxfbmFtZSBpblxuICAgICAgICAgICAgZWFwcGx5IH5sb2MgaW50ZXJuYWxfZXhwciAoYXJnX2V4cHJzIEAgWyBbJWV4cHIgeW9qc29uXSBdKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyeV93aXRoID0gcGV4cF90cnkgfmxvYyBpbnRlcm5hbF9jYWxsIG5vX3ZhcmlhbnRfbWF0Y2hfbWMgaW5cbiAgICAgICAgICBmYWxzZSwgYmluZF90cF9sb2NfaW4gWyVleHByIGZ1biB5b2pzb24gLT4gWyVlIHRyeV93aXRoXV0pXG4gICAgICAgIGVsc2UgdHJ1ZSwgYm9keVxuICAgICAgaW5cbiAgICAgIGxldCBib2R5X3dpdGhfbGFtYmRhcyA9XG4gICAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuICAgICAgICAgIH5yZWNfZmxhZ1xuICAgICAgICAgIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keV9iZWxvd19sYW1iZGFzKVxuICAgICAgaW5cbiAgICAgIGlmIG5lZWRfdHBfbG9jIHRoZW4gYmluZF90cF9sb2NfaW4gYm9keV93aXRoX2xhbWJkYXMgZWxzZSBib2R5X3dpdGhfbGFtYmRhc1xuICAgIGluXG4gICAgbGV0IG1rX2JpbmRpbmcgZnVuY19uYW1lIGJvZHkgPVxuICAgICAgbGV0IHR5cCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfdHlwZSB0ZCBpblxuICAgICAgY29uc3RyYWluZWRfZnVuY3Rpb25fYmluZGluZyBsb2MgdGQgdHlwIH50cHMgfmZ1bmNfbmFtZSBib2R5XG4gICAgaW5cbiAgICBsZXQgaW50ZXJuYWxfYmluZGluZ3MgPVxuICAgICAgbWF0Y2ggaW50ZXJuYWxfZnVuX2JvZHkgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgYm9keSAtPiBbIG1rX2JpbmRpbmcgaW50ZXJuYWxfbmFtZSBib2R5IF1cbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9iaW5kaW5nID0gbWtfYmluZGluZyBleHRlcm5hbF9uYW1lIGV4dGVybmFsX2Z1bl9ib2R5IGluXG4gICAgaW50ZXJuYWxfYmluZGluZ3MsIFsgZXh0ZXJuYWxfYmluZGluZyBdXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcbiAgbGV0IHRkc19vZl95b2pzb24gfmxvYyB+cG9seSB+cGF0aCAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCB0eXBldmFyX2hhbmRsaW5nID0gYG9rIGluXG4gICAgbGV0IHNpbmdsZXRvbiA9XG4gICAgICBtYXRjaCB0ZHMgd2l0aFxuICAgICAgfCBbIF8gXSAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHNpbmdsZXRvblxuICAgIHRoZW4gKFxuICAgICAgbGV0IHJlY19mbGFnID0gcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgaW5cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgUmVjdXJzaXZlIC0+XG4gICAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICAgIGluXG4gICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIFJlY3Vyc2l2ZSBiaW5kaW5nc1xuICAgICAgfCBOb25yZWN1cnNpdmUgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGludGVybmFsc1xuICAgICAgICAgIEAgcHN0cl92YWx1ZV9saXN0IH5sb2MgTm9ucmVjdXJzaXZlIGV4dGVybmFscykpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wb2x5IH5sb2MgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpbnRlcm5hbHMgQCBleHRlcm5hbHMpXG4gICAgICBpblxuICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3MpXG4gIDs7XG5cbiAgbGV0IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5wYXRoIGN0eXAgPVxuICAgIGxldCBsb2MgPSB7IGN0eXAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgZnAgPSB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBjdHlwIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbWF0Y2ggZnAgd2l0aFxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIFslZSBmdW5fZXhwcl0geW9qc29uXVxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIG1hdGNoaW5nc1xuICAgIGluXG4gICAgbGV0IGZ1bGxfdHlwZV9uYW1lID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgbGluZSAlaTogJXNcIlxuICAgICAgICBwYXRoXG4gICAgICAgIGxvYy5sb2Nfc3RhcnQucG9zX2xudW1cbiAgICAgICAgKHN0cmluZ19vZl9jb3JlX3R5cGUgY3R5cClcbiAgICBpblxuICAgIFslZXhwclxuICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICBsZXQgX3RwX2xvYyA9IFslZSBlc3RyaW5nIH5sb2MgZnVsbF90eXBlX25hbWVdIGluXG4gICAgICAgIFslZSBib2R5XV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgWW9qc29uX29mID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi50eXBlX29mX3lvanNvbl9vZiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlIHR5ID1cbiAgICBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwciB0eVxuICAgIHw+IEZ1bl9vcl9tYXRjaC5leHByIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX29mLnlvanNvbl9vZl90ZHNcbmVuZFxuXG5tb2R1bGUgWW9qc29uX2ZpZWxkcyA9IHN0cnVjdFxuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fZmllbGRzLnlvanNvbl9maWVsZHNfb2ZfdGRzXG5lbmRcblxubW9kdWxlIE9mX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl9vZl95b2pzb24gfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSA9XG4gICAgU3RyX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHJcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX29mX3lvanNvbi50ZHNfb2ZfeW9qc29uXG5lbmRcblxubW9kdWxlIFNpZ195b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gICAgQCBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZyB+cG9seTpmYWxzZSB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgfmxvYyB+cGF0aCAoKF9yZiwgdGRzKSBhcyBkZWNscykgPVxuICAgIG1hdGNoXG4gICAgICBta19uYW1lZF9zaWdcbiAgICAgICAgfmxvY1xuICAgICAgICB+c2dfbmFtZTpcIlBweF95b2pzb25fY29udl9saWIuWW9qc29uYWJsZS5TXCJcbiAgICAgICAgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50OmZhbHNlXG4gICAgICAgIHRkc1xuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5jbHVkZV9pbmZvcyAtPiBbIHBzaWdfaW5jbHVkZSB+bG9jIGluY2x1ZGVfaW5mb3MgXVxuICAgIHwgTm9uZSAtPiBta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc29vX3J1bnRpbWUuUnVudGltZV92ZXJzaW9uICopXG5tb2R1bGUgUnVudGltZV92ZXJzaW9uID0gSnNvb19ydW50aW1lX19SdW50aW1lX3ZlcnNpb25cblxubW9kdWxlIEpzb29fcnVudGltZV9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCJtb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgdHlwZSAnYSBqc19hcnJheSA9IHRcblxuICB0eXBlICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2sgPSB0XG5cbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuICBleHRlcm5hbCBib29sIDogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgdG9fYm9vbCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuICBleHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXkgOiB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG4gIGV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9pbnQzMiA6IGludDMyIC0+IHQgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgaW50MzJfb2ZfbnVtYmVyIDogdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCBuYXRpdmVpbnRfb2ZfbnVtYmVyIDogdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuICBleHRlcm5hbCB0eXBlb2YgOiB0IC0+IHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuICBleHRlcm5hbCBpbnN0YW5jZW9mIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBleHRlcm5hbCBnZXQgOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICBleHRlcm5hbCBkZWxldGUgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gIGV4dGVybmFsIGNhbGwgOiB0IC0+IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gIGV4dGVybmFsIGZ1bl9jYWxsIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbCA6IHQgLT4gc3RyaW5nIC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gIGV4dGVybmFsIG5ld19vYmogOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG4gIGV4dGVybmFsIG5ld19vYmpfYXJyIDogdCAtPiB0IGpzX2FycmF5IC0+IHQgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiB0KSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICh0IGpzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIHQganNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAoJ2IgLT4gdCBqc19hcnJheSAtPiAnYSkgLT4gKCdiLCB0IGpzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5lbmRcblxubW9kdWxlIFN5cyA9IHN0cnVjdFxuICB0eXBlICdhIGNhbGxiYWNrID0gJ2FcblxuICBleHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG4gIGV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6IG91dF9jaGFubmVsIC0+IChqc19zdHJpbmc6SnMudCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfcG9pbnQgOiB1bml0IC0+IHN0cmluZyBsaXN0ID0gXCJjYW1sX2xpc3RfbW91bnRfcG9pbnRcIlxuXG4gIGV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDogc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbiAgZXh0ZXJuYWwgdW5tb3VudCA6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3VubW91bnRcIlxuXG4gIHR5cGUgcmVkaXJlY3Rpb25cblxuICBleHRlcm5hbCByZWRpcmVjdF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gaW50bzpvdXRfY2hhbm5lbCAtPiByZWRpcmVjdGlvblxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3RcIlxuXG4gIGV4dGVybmFsIHJlc3RvcmVfY2hhbm5lbCA6IG91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcIlxuXG4gIG1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgICBleHRlcm5hbCB1c2VfanNfc3RyaW5nIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBlZmZlY3RzIDogdW5pdCAtPiBib29sID0gXCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1wiXG4gIGVuZFxuXG4gIGxldCB2ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLnNcblxuICBsZXQgZ2l0X3ZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbmVuZFxuXG5tb2R1bGUgRXJyb3IgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHJhaXNlXyA6IHQgLT4gJ2FcblxuICB2YWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4blxuICAoKiogQXR0YWNoIGEgSmF2YXNTY3JpcHQgZXJyb3IgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLiAgaWYgW2ZvcmNlID0gZmFsc2VdIGFuZCBhXG4gICAgSmF2YXNTY3JpcHQgZXJyb3IgaXMgYWxyZWFkeSBhdHRhY2hlZCwgaXQgd2lsbCBkbyBub3RoaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0b1xuICAgIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBKYXZhU2NyaXB0IHN0YWNrIHRyYWNlcy5cblxuICAgIEF0dGFjaGluZyBKYXZhc1NjcmlwdCBlcnJvcnMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseSB3aGVuIGNvbXBpbGluZyB3aXRoXG4gICAgWy0tZW5hYmxlIHdpdGgtanMtZXJyb3JdLiAqKVxuXG4gIHZhbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb25cbiAgKCoqIEV4dHJhY3QgYSBKYXZhU2NyaXB0IGVycm9yIGF0dGFjaGVkIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbiwgaWYgYW55LiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgICAgIGluc3BlY3QgYW4gZXZlbnR1YWwgc3RhY2sgc3RyYWNlLCBlc3BlY2lhbGx5IHdoZW4gc291cmNlbWFwIGlzIGVuYWJsZWQuICopXG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG4gICgqKiBUaGUgW0Vycm9yXSBleGNlcHRpb24gd3JhcCBqYXZhc2NyaXB0IGV4Y2VwdGlvbnMgd2hlbiBjYXVnaHQgYnkgT0NhbWwgY29kZS5cbiAgICAgIEluIGNhc2UgdGhlIGphdmFzY3JpcHQgZXhjZXB0aW9uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBqYXZhc2NyaXB0IFtFcnJvcl0sXG4gICAgICBpdCB3aWxsIGJlIHNlcmlhbGl6ZWQgYW5kIHdyYXBwZWQgaW50byBhIFtGYWlsdXJlXSBleGNlcHRpb24uXG4gICopXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0XG5cbiAgZXhjZXB0aW9uIEV4biBvZiB0XG5cbiAgbGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJqc0Vycm9yXCIgKEV4biAoT2JqLm1hZ2ljIFt8fF0pKVxuXG4gIGxldCByYWlzZV8gOiB0IC0+ICdhID0gSnMuanNfZXhwciBcIihmdW5jdGlvbiAoZXhuKSB7IHRocm93IGV4biB9KVwiXG5cbiAgZXh0ZXJuYWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uID0gXCJjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cIlxuXG4gIGV4dGVybmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG4gPSBcImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXCJcbmVuZFxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMi02MFwiXVxuXG5tb2R1bGUgRm9yX2NvbXBhdGliaWxpdHlfb25seSA9IHN0cnVjdFxuICAoKiBBZGQgcHJpbWl0aXZlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLiBFeGlzdGluZyB1c2VycyBtaWdodFxuICAgICBkZXBlbmQgb24gaXQgKGUuZy4gZ2VuX2pzX2FwaSksIHdlIGRvbnQgd2FudCB0aGUgb2NhbWwgY29tcGlsZXJcbiAgICAgdG8gY29tcGxhaW4gYWJvdXQgdGhlc2VzIG1pc3NpbmcgcHJpbWl0aXZlcy4gKilcblxuICBleHRlcm5hbCBjYW1sX2pzX2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IEpzLnQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19ieXRlX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19zdHJpbmcgOiBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9qc190b19zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF9vZl9qc19hcnJheSA6ICdhIEpzLmpzX2FycmF5IC0+ICdhIGxpc3QgPSBcImNhbWxfbGlzdF9vZl9qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X3RvX2pzX2FycmF5IDogJ2EgbGlzdCAtPiAnYSBKcy5qc19hcnJheSA9IFwiY2FtbF9saXN0X3RvX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuZW5kXG5cbm1vZHVsZSBUeXBlZF9hcnJheSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHR5cGVkQXJyYXkgPSBKcy50XG5cbiAgdHlwZSBhcnJheUJ1ZmZlciA9IEpzLnRcblxuICB0eXBlIHVpbnQ4QXJyYXkgPSBKcy50XG5cbiAgZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICAgID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXlcbiAgICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAgICgnYSwgJ2IpIHR5cGVkQXJyYXkgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICAgIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG4gIGVuZFxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICBleHRlcm5hbCBjcmVhdGVfaW50NjRfbG9fbWlfaGkgOiBpbnQgLT4gaW50IC0+IGludCAtPiBJbnQ2NC50XG4gICAgPSBcImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXCJcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuQ1NTICopXG5tb2R1bGUgQ1NTID0gSnNfb2Zfb2NhbWxfX0NTU1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb20gKilcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbF9fRG9tXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9ldmVudHMgKilcbm1vZHVsZSBEb21fZXZlbnRzID0gSnNfb2Zfb2NhbWxfX0RvbV9ldmVudHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2h0bWwgKilcbm1vZHVsZSBEb21faHRtbCA9IEpzX29mX29jYW1sX19Eb21faHRtbFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fc3ZnICopXG5tb2R1bGUgRG9tX3N2ZyA9IEpzX29mX29jYW1sX19Eb21fc3ZnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkV2ZW50U291cmNlICopXG5tb2R1bGUgRXZlbnRTb3VyY2UgPSBKc19vZl9vY2FtbF9fRXZlbnRTb3VyY2VcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlsZSAqKVxubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbF9fRmlsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaXJlYnVnICopXG5tb2R1bGUgRmlyZWJ1ZyA9IEpzX29mX29jYW1sX19GaXJlYnVnXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZvcm0gKilcbm1vZHVsZSBGb3JtID0gSnNfb2Zfb2NhbWxfX0Zvcm1cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuR2VvbG9jYXRpb24gKilcbm1vZHVsZSBHZW9sb2NhdGlvbiA9IEpzX29mX29jYW1sX19HZW9sb2NhdGlvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9fSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGVyc2VjdGlvbk9ic2VydmVyICopXG5tb2R1bGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50bCAqKVxubW9kdWxlIEludGwgPSBKc19vZl9vY2FtbF9fSW50bFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5KcyAqKVxubW9kdWxlIEpzID0gSnNfb2Zfb2NhbWxfX0pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzb24gKilcbm1vZHVsZSBKc29uID0gSnNfb2Zfb2NhbWxfX0pzb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnN0YWJsZSAqKVxubW9kdWxlIEpzdGFibGUgPSBKc19vZl9vY2FtbF9fSnN0YWJsZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5MaWJfdmVyc2lvbiAqKVxubW9kdWxlIExpYl92ZXJzaW9uID0gSnNfb2Zfb2NhbWxfX0xpYl92ZXJzaW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLk11dGF0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBNdXRhdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX011dGF0aW9uT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUGVyZm9ybWFuY2VPYnNlcnZlciAqKVxubW9kdWxlIFBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZWdleHAgKilcbm1vZHVsZSBSZWdleHAgPSBKc19vZl9vY2FtbF9fUmVnZXhwXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlc2l6ZU9ic2VydmVyICopXG5tb2R1bGUgUmVzaXplT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fUmVzaXplT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuU3lzX2pzICopXG5tb2R1bGUgU3lzX2pzID0gSnNfb2Zfb2NhbWxfX1N5c19qc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5UeXBlZF9hcnJheSAqKVxubW9kdWxlIFR5cGVkX2FycmF5ID0gSnNfb2Zfb2NhbWxfX1R5cGVkX2FycmF5XG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlVybCAqKVxubW9kdWxlIFVybCA9IEpzX29mX29jYW1sX19VcmxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViR0wgKilcbm1vZHVsZSBXZWJHTCA9IEpzX29mX29jYW1sX19XZWJHTFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJTb2NrZXRzICopXG5tb2R1bGUgV2ViU29ja2V0cyA9IEpzX29mX29jYW1sX19XZWJTb2NrZXRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldvcmtlciAqKVxubW9kdWxlIFdvcmtlciA9IEpzX29mX29jYW1sX19Xb3JrZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuWG1sSHR0cFJlcXVlc3QgKilcbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX19YbWxIdHRwUmVxdWVzdFxuXG5tb2R1bGUgSnNfb2Zfb2NhbWxfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGxldCBtYXggKHggOiBpbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4gIGxldCBtaW4gKHggOiBpbnQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpICh5IDogc3RyaW5nKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxubW9kdWxlIENoYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDaGFyXG5cbiAgbGV0IGVxdWFsICh4IDogY2hhcikgKHkgOiBjaGFyKSA9IFBvbHkuZXF1YWwgeCB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGxvY2FsIG1vZHVsZSBbSnNdIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBwcHhfanMgZXh0ZW5zaW9uIHdvcmsgd2l0aGluIHRoYXQgZmlsZS4gKilcbm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlICsnYSB0XG5cbiAgdHlwZSAoLSdhLCArJ2IpIG1ldGhfY2FsbGJhY2tcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgdHlwZSB0b3BcblxuICAgIHR5cGUgYW55ID0gdG9wIHRcblxuICAgIHR5cGUgYW55X2pzX2FycmF5ID0gYW55XG5cbiAgICBleHRlcm5hbCBpbmplY3QgOiAnYSAtPiBhbnkgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBjb2VyY2UgOiBfIHQgLT4gXyB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogJ2EgLT4gJ2IgLT4gJ2MgPSBcImNhbWxfanNfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldCA6ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcblxuICAgIGV4dGVybmFsIGRlbGV0ZSA6ICdhIC0+ICdiIC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICAgIGV4dGVybmFsIGNhbGwgOiAnYSAtPiAnYiAtPiBhbnkgYXJyYXkgLT4gJ2MgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBmdW5fY2FsbCA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGwgOiAnYSAtPiBzdHJpbmcgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgICBleHRlcm5hbCBuZXdfb2JqX2FyciA6ICdhIC0+IGFueV9qc19hcnJheSAtPiAnYiA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogYW55KSBhcnJheSAtPiAnYSA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICAgIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGpzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXhwclwiXG5cbiAgICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICAgIGxldCBnbG9iYWwgPSBwdXJlX2pzX2V4cHIgXCJnbG9iYWxUaGlzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoYW55X2pzX2FycmF5IC0+ICdiKSAtPiAoJ2MsIGFueV9qc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgICgnYiAtPiBhbnlfanNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgYW55X2pzX2FycmF5IC0+ICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgICgqIERFUFJFQ0FURUQgKilcbiAgICBleHRlcm5hbCB2YXJpYWJsZSA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc192YXJcIlxuICBlbmRcblxuICAoKioqKilcblxuICB0eXBlICdhIG9wdCA9ICdhXG5cbiAgdHlwZSAnYSBvcHRkZWYgPSAnYVxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgbGV0IG51bGwgOiAnYSBvcHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG5cbiAgZXh0ZXJuYWwgc29tZSA6ICdhIC0+ICdhIG9wdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgdW5kZWZpbmVkIDogJ2Egb3B0ZGVmID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInVuZGVmaW5lZFwiXG5cbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2Egb3B0ZGVmID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSB0eXBlIE9QVCA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVtcHR5IDogJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcblxuICAgIHZhbCBtYXAgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuXG4gICAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgICB2YWwgdGVzdCA6ICdhIHQgLT4gYm9vbFxuXG4gICAgdmFsIGl0ZXIgOiAnYSB0IC0+ICgnYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgICB2YWwgY2FzZSA6ICdhIHQgLT4gKHVuaXQgLT4gJ2IpIC0+ICgnYSAtPiAnYikgLT4gJ2JcblxuICAgIHZhbCBnZXQgOiAnYSB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYVxuXG4gICAgdmFsIG9wdGlvbiA6ICdhIG9wdGlvbiAtPiAnYSB0XG5cbiAgICB2YWwgdG9fb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb25cblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdCA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdFxuXG4gICAgbGV0IGVtcHR5ID0gbnVsbFxuXG4gICAgbGV0IHJldHVybiA9IHNvbWVcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChlcXVhbHMgeCBudWxsKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChlcXVhbHMgeCBudWxsKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRkZWYgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHRkZWYgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRkZWZcblxuICAgIGxldCBlbXB0eSA9IHVuZGVmaW5lZFxuXG4gICAgbGV0IHJldHVybiA9IGRlZlxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gdW5kZWZpbmVkIGVsc2UgZiB4XG5cbiAgICBsZXQgdGVzdCB4ID0gbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKVxuXG4gICAgbGV0IGl0ZXIgeCBmID0gaWYgbm90IChzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkKSB0aGVuIGYgeFxuXG4gICAgbGV0IGNhc2UgeCBmIGcgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIGcgeFxuXG4gICAgbGV0IGdldCB4IGYgPSBpZiBzdHJpY3RfZXF1YWxzIHggdW5kZWZpbmVkIHRoZW4gZiAoKSBlbHNlIHhcblxuICAgIGxldCBvcHRpb24geCA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcblxuICAgIGxldCB0b19vcHRpb24geCA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIGxldCBjb2VyY2UgeCBmIGcgPSBPcHQuZ2V0IChmIHgpIChmdW4gKCkgLT4gZyB4KVxuXG4gIGxldCBjb2VyY2Vfb3B0IHggZiBnID0gT3B0LmdldCAoT3B0LmJpbmQgeCBmKSAoZnVuICgpIC0+IGcgeClcblxuICAoKioqKilcblxuICB0eXBlICsnYSBtZXRoXG5cbiAgdHlwZSArJ2EgZ2VuX3Byb3BcblxuICB0eXBlICdhIHJlYWRvbmx5X3Byb3AgPSA8IGdldCA6ICdhID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHdyaXRlb25seV9wcm9wID0gPCBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIHByb3AgPSA8IGdldCA6ICdhIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBvcHRkZWZfcHJvcCA9IDwgZ2V0IDogJ2Egb3B0ZGVmIDsgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSArJ2EgY29uc3RyXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBjYWxsYmFjayA9ICh1bml0LCAnYSkgbWV0aF9jYWxsYmFja1xuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuXG4gICgqKioqKVxuXG4gIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgKCoqKiopXG5cbiAgbGV0IF90cnVlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcInRydWVcIlxuXG4gIGxldCBfZmFsc2UgPSBVbnNhZmUucHVyZV9qc19leHByIFwiZmFsc2VcIlxuXG4gIHR5cGUgbWF0Y2hfcmVzdWx0X2hhbmRsZVxuXG4gIHR5cGUgc3RyaW5nX2FycmF5XG5cbiAgdHlwZSBudW1iZXJfdCA9IGZsb2F0XG5cbiAgY2xhc3MgdHlwZSBudW1iZXIgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmdfcmFkaXggOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRml4ZWQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbF9kaWdpdHMgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvUHJlY2lzaW9uIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgZW5kXG5cbiAgYW5kIGpzX3N0cmluZyA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB2YWx1ZU9mIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJBdCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckNvZGVBdCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICAoKiBUaGlzIG1heSByZXR1cm4gTmFOLi4uICopXG4gICAgbWV0aG9kIGNvbmNhdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfMyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjb25jYXRfNCA6XG4gICAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgaW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsb2NhbGVDb21wYXJlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgbWV0aG9kIF9tYXRjaCA6IHJlZ0V4cCB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemVfZm9ybSA6IG5vcm1hbGl6YXRpb24gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZSA6IHJlZ0V4cCB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzZWFyY2ggOiByZWdFeHAgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdCA6IGpzX3N0cmluZyB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9saW1pdGVkIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHAgOiByZWdFeHAgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwTGltaXRlZCA6IHJlZ0V4cCB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3Vic3RyaW5nX3RvRW5kIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZUxvd2VyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1VwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVVwcGVyQ2FzZSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0cmltIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGFuZCByZWdFeHAgPSBvYmplY3RcbiAgICBtZXRob2QgZXhlYyA6IGpzX3N0cmluZyB0IC0+IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCBvcHQgbWV0aFxuXG4gICAgbWV0aG9kIHRlc3QgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNvdXJjZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBnbG9iYWwgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZUNhc2UgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG11bHRpbGluZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbGFzdEluZGV4IDogaW50IHByb3BcbiAgZW5kXG5cbiAgYW5kIG5vcm1hbGl6YXRpb24gPSBqc19zdHJpbmdcblxuICAoKiBzdHJpbmcgaXMgdXNlZCBieSBwcHhfanMsIGl0IG5lZWRzIHRvIGNvbWUgYmVmb3JlIGFueSB1c2Ugb2YgdGhlXG4gICAgIG5ldyBzeW50YXggaW4gdGhpcyBmaWxlICopXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcIlxuXG4gIGxldCBuZmMgPSBzdHJpbmcgXCJORkNcIlxuXG4gIGxldCBuZmQgPSBzdHJpbmcgXCJORkRcIlxuXG4gIGxldCBuZmtjID0gc3RyaW5nIFwiTkZLQ1wiXG5cbiAgbGV0IG5ma2QgPSBzdHJpbmcgXCJORktEXCJcbmVuZFxuXG5pbmNsdWRlIEpzXG5cbmNsYXNzIHR5cGUgc3RyaW5nX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgZnJvbUNoYXJDb2RlIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgc3RyaW5nX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fU3RyaW5nXG5cbmxldCByZWdFeHAgPSBVbnNhZmUuZ2xvYmFsIyMuX1JlZ0V4cFxuXG5sZXQgcmVnRXhwX2NvcHkgPSByZWdFeHBcblxubGV0IHJlZ0V4cF93aXRoRmxhZ3MgPSByZWdFeHBcblxuY2xhc3MgdHlwZSBbJ2FdIGpzX2FycmF5ID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmNhdCA6ICdhIGpzX2FycmF5IHQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGpvaW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHBvcCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHB1c2ggOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBwdXNoXzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCByZXZlcnNlIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNoaWZ0IDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnQgOiAoJ2EgLT4gJ2EgLT4gbnVtYmVyX3QpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0X2FzU3RyaW5ncyA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2UgOiBpbnQgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8yIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzMgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfNCA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnQgOiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzIgOiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzMgOiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0XzQgOiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzb21lIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZXZlcnkgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb3JFYWNoIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtYXAgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBmaWx0ZXIgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgcmVkdWNlX2luaXQgOiAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlIDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0X2luaXQgOlxuICAgICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodCA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcHJvcFxuZW5kXG5cbmxldCBvYmplY3RfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxuXG5sZXQgb2JqZWN0X2tleXMgbyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBvYmplY3RfY29uc3RydWN0b3IjI2tleXMgb1xuXG5sZXQgYXJyYXlfY29uc3RydWN0b3IgPSBVbnNhZmUuZ2xvYmFsIyMuX0FycmF5XG5cbmxldCBhcnJheV9lbXB0eSA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9sZW5ndGggPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfZ2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IFVuc2FmZS5nZXRcblxubGV0IGFycmF5X3NldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gVW5zYWZlLnNldFxuXG5sZXQgYXJyYXlfbWFwX3BvbHkgOlxuICAgICdhICNqc19hcnJheSB0IC0+ICgnYSAtPiBpbnQgLT4gJ2EgI2pzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiICNqc19hcnJheSB0ID1cbiBmdW4gYSBjYiAtPiAoVW5zYWZlLmNvZXJjZSBhKSMjbWFwIGNiXG5cbmxldCBhcnJheV9tYXAgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggX2lkeCBfIC0+IGYgeCkpXG5cbmxldCBhcnJheV9tYXBpIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IGlkeCBfIC0+IGYgaWR4IHgpKVxuXG5jbGFzcyB0eXBlIG1hdGNoX3Jlc3VsdCA9IG9iamVjdFxuICBpbmhlcml0IFtqc19zdHJpbmcgdF0ganNfYXJyYXlcblxuICBtZXRob2QgaW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnB1dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgc3RyX2FycmF5IDogc3RyaW5nX2FycmF5IHQgLT4ganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IFVuc2FmZS5jb2VyY2VcblxubGV0IG1hdGNoX3Jlc3VsdCA6IG1hdGNoX3Jlc3VsdF9oYW5kbGUgdCAtPiBtYXRjaF9yZXN1bHQgdCA9IFVuc2FmZS5jb2VyY2VcblxuY2xhc3MgdHlwZSBkYXRlID0gb2JqZWN0XG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1RpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZURhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdmFsdWVPZiA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RheSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEhvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDSG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VGltZXpvbmVPZmZzZXQgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0Z1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF5IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0U2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ1NlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0b1VUQ1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9JU09TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSlNPTiA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRhdGVfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tb250aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2RheSA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX2hvdXIgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21pbiA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX3NlYyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19tcyA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG5vdyA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgZGF0ZV9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0RhdGVcblxubGV0IGRhdGUgOiBkYXRlX2NvbnN0ciB0ID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbm93IDogZGF0ZSB0IGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2Zyb21UaW1lVmFsdWUgOiAobnVtYmVyX3QgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tb250aCA6IChpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZGF5IDogKGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfaG91ciA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9taW4gOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX3NlYyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21zIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9XG4gIGRhdGVfY29uc3RyXG5cbmNsYXNzIHR5cGUgbWF0aCA9IG9iamVjdFxuICBtZXRob2QgX0UgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MTjEwIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMkUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cxMEUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QSSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQxXzJfIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFicyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYWNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgYXRhbjIgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNlaWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGNvcyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZXhwIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBmbG9vciA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbG9nIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXggOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHBvdyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcmFuZG9tIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByb3VuZCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzcXJ0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCB0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IG1hdGggPSBVbnNhZmUuZ2xvYmFsIyMuX01hdGhcblxuY2xhc3MgdHlwZSBlcnJvciA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3RhY2sgOiBqc19zdHJpbmcgdCBvcHRkZWYgcHJvcFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgZXJyb3JfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9FcnJvclxuXG5tb2R1bGUgSnNfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSBlcnJvcl90ID0gZXJyb3IgdFxuXG4gIGluY2x1ZGUgSnNvb19ydW50aW1lLkVycm9yXG5cbiAgZXh0ZXJuYWwgb2ZfZXJyb3IgOiBlcnJvcl90IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgZXh0ZXJuYWwgdG9fZXJyb3IgOiB0IC0+IGVycm9yX3QgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IG5hbWUgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5uYW1lXG5cbiAgbGV0IG1lc3NhZ2UgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjIy5tZXNzYWdlXG5cbiAgbGV0IHN0YWNrIChlIDogdCkgOiBzdHJpbmcgb3B0aW9uID1cbiAgICBPcHQudG9fb3B0aW9uIChPcHQubWFwICh0b19lcnJvciBlKSMjLnN0YWNrIHRvX3N0cmluZylcblxuICBsZXQgdG9fc3RyaW5nIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyN0b1N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWdpYyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yIHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdiKSBlcSA9IEVxIDogKCdhLCAnYSkgZXFcblxuICBsZXQgKGVxIDogKGVycm9yIHQsIEpzX2Vycm9yLnQpIGVxKSA9IE9iai5tYWdpYyBFcVxuXG4gIGxldCBtID1cbiAgICBtYXRjaCBlcSB3aXRoXG4gICAgfCBFcSAtPlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIGV4Y2VwdGlvbiBFcnJvciA9IEpzX2Vycm9yLkV4blxuICAgICAgICBlbmQgOiBUKVxuXG4gIG1vZHVsZSBFcnJvciA9ICh2YWwgbSA6IFQpXG5lbmRcblxuaW5jbHVkZSBNYWdpYy5FcnJvclxuXG5sZXQgcmFpc2VfanNfZXJyb3IgZSA9IEpzX2Vycm9yLnJhaXNlXyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IHN0cmluZ19vZl9lcnJvciBlID0gSnNfZXJyb3IudG9fc3RyaW5nIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgZXhuX3dpdGhfanNfYmFja3RyYWNlID0gSnNfZXJyb3IuYXR0YWNoX2pzX2JhY2t0cmFjZVxuXG5leHRlcm5hbCBqc19lcnJvcl9vZl9leG4gOiBleG4gLT4gZXJyb3IgdCBvcHQgPSBcImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXCJcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6IGpzX3N0cmluZyB0IC0+ICdhIG1ldGhcblxuICBtZXRob2Qgc3RyaW5naWZ5IDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBfSlNPTiA6IGpzb24gdCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgZGVjb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGRlY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCB1bmVzY2FwZSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy51bmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxuZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gYm9vbCB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIHRvX2Jvb2wgOiBib29sIHQgLT4gYm9vbCA9IFwiY2FtbF9qc190b19ib29sXCJcblxuZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiAnYSBqc19hcnJheSB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG5leHRlcm5hbCB0b19hcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG5leHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdG9fYnl0ZXN0cmluZyA6IGpzX3N0cmluZyB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbmV4dGVybmFsIGZsb2F0IDogZmxvYXQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIHRvX2Zsb2F0IDogbnVtYmVyX3QgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBudW1iZXJfb2ZfZmxvYXQgOiBmbG9hdCAtPiBudW1iZXIgdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogbnVtYmVyIHQgLT4gZmxvYXQgPSBcImNhbWxfanNfdG9fZmxvYXRcIlxuXG5leHRlcm5hbCBpbnQzMiA6IGludDMyIC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG5leHRlcm5hbCB0b19pbnQzMiA6IG51bWJlcl90IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogbnVtYmVyX3QgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHR5cGVvZiA6IF8gdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG5leHRlcm5hbCBpbnN0YW5jZW9mIDogXyB0IC0+IF8gY29uc3RyIC0+IGJvb2wgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5cbmxldCBpc05hTiAoaSA6ICdhKSA6IGJvb2wgPVxuICB0b19ib29sIChVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmlzTmFOIFt8IFVuc2FmZS5pbmplY3QgaSB8XSlcblxubGV0IHBhcnNlSW50IChzIDoganNfc3RyaW5nIHQpIDogaW50ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlSW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUludFwiIGVsc2Ugc1xuXG5sZXQgcGFyc2VGbG9hdCAocyA6IGpzX3N0cmluZyB0KSA6IG51bWJlcl90ID1cbiAgbGV0IHMgPSBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnBhcnNlRmxvYXQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlRmxvYXRcIiBlbHNlIHNcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW5jdGlvblxuICAgICAgfCBKc19lcnJvci5FeG4gZSAtPiBTb21lIChKc19lcnJvci50b19zdHJpbmcgZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1biBlIC0+XG4gICAgICBsZXQgZSA6IDwgLi4gPiB0ID0gT2JqLm1hZ2ljIGUgaW5cbiAgICAgIGlmIGluc3RhbmNlb2YgZSBhcnJheV9jb25zdHJ1Y3RvciB0aGVuIE5vbmUgZWxzZSBTb21lICh0b19zdHJpbmcgZSMjdG9TdHJpbmcpKVxuXG5sZXQgZXhwb3J0X2pzIChmaWVsZCA6IGpzX3N0cmluZyB0KSB4ID1cbiAgVW5zYWZlLnNldFxuICAgIChVbnNhZmUucHVyZV9qc19leHByIFwianNvb19leHBvcnRzXCIpXG4gICAgZmllbGRcbiAgICAoaWYgU3RyaW5nLmVxdWFsIChKcy50b19zdHJpbmcgKHR5cGVvZiAoT2JqLm1hZ2ljIHgpKSkgXCJmdW5jdGlvblwiXG4gICAgICAgICgqIGZ1bmN0aW9uIHdpdGggYXJpdHkvbGVuZ3RoIGVxdWFsIHRvIHplcm8gYXJlIGFscmVhZHkgd3JhcHBlZCAqKVxuICAgICAgICAmJiBVbnNhZmUuZ2V0IChPYmoubWFnaWMgeCkgKEpzLnN0cmluZyBcImxlbmd0aFwiKSA+IDBcbiAgICAgdGhlbiBPYmoubWFnaWMgKHdyYXBfY2FsbGJhY2sgKE9iai5tYWdpYyB4KSlcbiAgICAgZWxzZSB4KVxuXG5sZXQgZXhwb3J0IGZpZWxkIHggPSBleHBvcnRfanMgKHN0cmluZyBmaWVsZCkgeFxuXG5sZXQgZXhwb3J0X2FsbCBvYmogPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG9iaiBpblxuICBrZXlzIyNmb3JFYWNoXG4gICAgKHdyYXBfY2FsbGJhY2sgKGZ1biAoa2V5IDoganNfc3RyaW5nIHQpIF8gXyAtPiBleHBvcnRfanMga2V5IChVbnNhZmUuZ2V0IG9iaiBrZXkpKSlcblxuKCoqKiopXG5cbigqIERFUFJFQ0FURUQgKilcblxudHlwZSBmbG9hdF9wcm9wID0gbnVtYmVyX3QgcHJvcFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gbm9kZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBsaXN0X29mX25vZGVMaXN0IChub2RlTGlzdCA6ICdhIG5vZGVMaXN0IHQpID1cbiAgbGV0IGxlbmd0aCA9IG5vZGVMaXN0IyMubGVuZ3RoIGluXG4gIGxldCByZWMgYWRkX2l0ZW0gYWNjIGkgPVxuICAgIGlmIGkgPCBsZW5ndGhcbiAgICB0aGVuXG4gICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChub2RlTGlzdCMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWRkX2l0ZW0gYWNjIChpICsgMSlcbiAgICAgIHwgU29tZSBlIC0+IGFkZF9pdGVtIChlIDo6IGFjYykgKGkgKyAxKVxuICAgIGVsc2UgTGlzdC5yZXYgYWNjXG4gIGluXG4gIGFkZF9pdGVtIFtdIDBcblxudHlwZSBub2RlVHlwZSA9XG4gIHwgT1RIRVJcbiAgKCogV2lsbCBub3QgaGFwcGVuICopXG4gIHwgRUxFTUVOVFxuICB8IEFUVFJJQlVURVxuICB8IFRFWFRcbiAgfCBDREFUQV9TRUNUSU9OXG4gIHwgRU5USVRZX1JFRkVSRU5DRVxuICB8IEVOVElUWVxuICB8IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05cbiAgfCBDT01NRU5UXG4gIHwgRE9DVU1FTlRcbiAgfCBET0NVTUVOVF9UWVBFXG4gIHwgRE9DVU1FTlRfRlJBR01FTlRcbiAgfCBOT1RBVElPTlxuXG5tb2R1bGUgRG9jdW1lbnRQb3NpdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICB0eXBlIG1hc2sgPSBpbnRcblxuICBsZXQgZGlzY29ubmVjdGVkID0gMHgwMVxuXG4gIGxldCBwcmVjZWRpbmcgPSAweDAyXG5cbiAgbGV0IGZvbGxvd2luZyA9IDB4MDRcblxuICBsZXQgY29udGFpbnMgPSAweDA4XG5cbiAgbGV0IGNvbnRhaW5lZF9ieSA9IDB4MTBcblxuICBsZXQgaW1wbGVtZW50YXRpb25fc3BlY2lmaWMgPSAweDIwXG5cbiAgbGV0IGhhcyB0IG1hc2sgPSB0IGxhbmQgbWFzayA9IG1hc2tcblxuICBsZXQgYWRkIHggeSA9IHggbG9yIHlcblxuICBsZXQgKCArICkgPSBhZGRcbmVuZFxuXG5jbGFzcyB0eXBlIG5vZGUgPSBvYmplY3RcbiAgbWV0aG9kIG5vZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBub2RlVHlwZSA6IG5vZGVUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogbm9kZSBub2RlTGlzdCB0IHByb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBsYXN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydEJlZm9yZSA6IG5vZGUgdCAtPiBub2RlIHQgb3B0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgaGFzQ2hpbGROb2RlcyA6IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lTm9kZSA6IGJvb2wgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiA6IG5vZGUgdCAtPiBEb2N1bWVudFBvc2l0aW9uLnQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBOYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsb29rdXBQcmVmaXggOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBhcHBlbmRDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI2FwcGVuZENoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZW1vdmVDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgPSBpZ25vcmUgKHAjI3JlbW92ZUNoaWxkIChuIDo+IG5vZGUgdCkpXG5cbmxldCByZXBsYWNlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCkgPVxuICBpZ25vcmUgKHAjI3JlcGxhY2VDaGlsZCAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCkpXG5cbmxldCBpbnNlcnRCZWZvcmUgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpIChvIDogI25vZGUgdCBvcHQpID1cbiAgaWdub3JlIChwIyNpbnNlcnRCZWZvcmUgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQgb3B0KSlcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0F0dHJdIG9iamVjdHMuICopXG5jbGFzcyB0eXBlIGF0dHIgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWNpZmllZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvd25lckVsZW1lbnQgOiBlbGVtZW50IHQgcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtOYW1lZE5vZGVNYXBdIG9iamVjdHMuICopXG5hbmQgWydub2RlXSBuYW1lZE5vZGVNYXAgPSBvYmplY3RcbiAgbWV0aG9kIGdldE5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0TmFtZWRJdGVtIDogJ25vZGUgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZU5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW0VsZW1lbnRdIG9iamVjdHMuICopXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgdGFnTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOb2RlIDogYXR0ciB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOb2RlTlMgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHIgbmFtZWROb2RlTWFwIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgY2hhcmFjdGVyRGF0YSA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VianNfc3RyaW5nRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmREYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydERhdGEgOiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZURhdGEgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlRGF0YSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBjb21tZW50ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIHRleHQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgZG9jdW1lbnRGcmFnbWVudCA9IG5vZGVcblxuY2xhc3MgdHlwZSBbJ2VsZW1lbnRdIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiAnZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCA6IGRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudE5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHROb2RlIDoganNfc3RyaW5nIHQgLT4gdGV4dCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQ29tbWVudCA6IGpzX3N0cmluZyB0IC0+IGNvbW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBpbXBvcnROb2RlIDogZWxlbWVudCB0IC0+IGJvb2wgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgYWRvcHROb2RlIDogZWxlbWVudCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuZW5kXG5cbnR5cGUgbm9kZV90eXBlID1cbiAgfCBFbGVtZW50IG9mIGVsZW1lbnQgdFxuICB8IEF0dHIgb2YgYXR0ciB0XG4gIHwgVGV4dCBvZiB0ZXh0IHRcbiAgfCBPdGhlciBvZiBub2RlIHRcblxubGV0IG5vZGVUeXBlIGUgPVxuICBtYXRjaCBlIyMubm9kZVR5cGUgd2l0aFxuICB8IEVMRU1FTlQgLT4gRWxlbWVudCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IEFUVFJJQlVURSAtPiBBdHRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQ0RBVEFfU0VDVElPTiB8IFRFWFQgLT4gVGV4dCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IF8gLT4gT3RoZXIgKGUgOj4gbm9kZSB0KVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGNhc3QgKGUgOiAjbm9kZSBKcy50KSB0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gdCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGVsZW1lbnQgZSA6IGVsZW1lbnQgSnMudCBKcy5vcHQgPSBjYXN0IGUgRUxFTUVOVFxuXG4gIGxldCB0ZXh0IGUgOiB0ZXh0IEpzLnQgSnMub3B0ID1cbiAgICBpZiBlIyMubm9kZVR5cGUgPT0gVEVYVCB8fCBlIyMubm9kZVR5cGUgPT0gQ0RBVEFfU0VDVElPTlxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhdHRyIGUgOiBhdHRyIEpzLnQgSnMub3B0ID0gY2FzdCBlIEFUVFJJQlVURVxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiIC0+IGJvb2wgdCkgbWV0aF9jYWxsYmFjayBvcHRcbigqKiBUaGUgdHlwZSBvZiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbnMuICBUaGUgZmlyc3QgdHlwZSBwYXJhbWV0ZXJcbiAgICAgIFsnYV0gaXMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldCBvYmplY3Q7IHRoZSBzZWNvbmQgcGFyYW1ldGVyXG4gICAgICBbJ2JdIGlzIHRoZSB0eXBlIG9mIHRoZSBldmVudCBvYmplY3QuICopXG5cbmNsYXNzIHR5cGUgWydhXSBldmVudCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRhcmdldCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICAoKiBMZWdhY3kgbWV0aG9kcyAqKVxuICBtZXRob2Qgc3JjRWxlbWVudCA6ICdhIHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiAnYiBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBKcy5udWxsXG5cbmxldCB3aW5kb3dfZXZlbnQgKCkgOiAnYSAjZXZlbnQgdCA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJldmVudFwiXG5cbigqIFRoZSBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdCBtdXN0IGJlIGNhbGxlZCBleHBsaWNpdGx5IHdoZW5cbiAgIHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIuLi4gKilcbmxldCBoYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQuICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBmdWxsX2hhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLm1ldGhfY2FsbGJhY2sgKGZ1biB0aGlzIGUgLT5cbiAgICAgICAgICgqIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJuZXQgZXhwbG9yZXIgdmVyc2lvbiwgZSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWQgKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcHJldmVudERlZmF1bHQ7XG4gICAgICAgICAgIHJlcykpXG5cbmxldCBpbnZva2VfaGFuZGxlciAoZiA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyKSAodGhpcyA6ICdhKSAoZXZlbnQgOiAnYikgOiBib29sIHQgPVxuICBKcy5VbnNhZmUuY2FsbCBmIHRoaXMgW3wgSnMuVW5zYWZlLmluamVjdCBldmVudCB8XVxuXG5sZXQgZXZlbnRUYXJnZXQgKGUgOiAoPCAuLiA+IGFzICdhKSAjZXZlbnQgdCkgOiAnYSB0ID1cbiAgbGV0IHRhcmdldCA9XG4gICAgT3B0LmdldCBlIyMudGFyZ2V0IChmdW4gKCkgLT4gT3B0LmdldCBlIyMuc3JjRWxlbWVudCAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZCkpXG4gIGluXG4gIGlmIEpzLmluc3RhbmNlb2YgdGFyZ2V0IEpzLlVuc2FmZS5nbG9iYWwjIy5fTm9kZVxuICB0aGVuXG4gICAgKCogV29ya2Fyb3VuZCBmb3IgU2FmYXJpIGJ1ZyAqKVxuICAgIGxldCB0YXJnZXQnIDogbm9kZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZSB0YXJnZXQgaW5cbiAgICBpZiB0YXJnZXQnIyMubm9kZVR5cGUgPT0gVEVYVFxuICAgIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoT3B0LmdldCB0YXJnZXQnIyMucGFyZW50Tm9kZSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgZWxzZSB0YXJnZXRcbiAgZWxzZSB0YXJnZXRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQgbWFrZSBzID0gSnMuc3RyaW5nIHNcbmVuZFxuXG50eXBlIGV2ZW50X2xpc3RlbmVyX2lkID0gdW5pdCAtPiB1bml0XG5cbmNsYXNzIHR5cGUgZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgY2FwdHVyZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhc3NpdmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGUpIyMuYWRkRXZlbnRMaXN0ZW5lcilcbiAgdGhlblxuICAgIGxldCBldiA9IChKcy5zdHJpbmcgXCJvblwiKSMjY29uY2F0IHR5cCBpblxuICAgIGxldCBjYWxsYmFjayBlID0gSnMuVW5zYWZlLmNhbGwgKGgsIGUsIFt8fF0pIGluXG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2F0dGFjaEV2ZW50IGV2IGNhbGxiYWNrIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNkZXRhY2hFdmVudCBldiBjYWxsYmFja1xuICBlbHNlXG4gICAgbGV0IG9wdHMgOiBldmVudF9saXN0ZW5lcl9vcHRpb25zIHQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgICBsZXQgaXRlciB0IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBiIC0+IGYgYlxuICAgIGluXG4gICAgaXRlciBjYXB0dXJlIChmdW4gYiAtPiBvcHRzIyMuY2FwdHVyZSA6PSBiKTtcbiAgICBpdGVyIG9uY2UgKGZ1biBiIC0+IG9wdHMjIy5vbmNlIDo9IGIpO1xuICAgIGl0ZXIgcGFzc2l2ZSAoZnVuIGIgLT4gb3B0cyMjLnBhc3NpdmUgOj0gYik7XG4gICAgbGV0ICgpID0gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2FkZEV2ZW50TGlzdGVuZXIgdHlwIGggb3B0cyBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjcmVtb3ZlRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzXG5cbmxldCBhZGRFdmVudExpc3RlbmVyIChlIDogKDwgLi4gPiBhcyAnYSkgdCkgdHlwIGggY2FwdCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlIHR5cCB+Y2FwdHVyZTpjYXB0IGhcblxubGV0IHJlbW92ZUV2ZW50TGlzdGVuZXIgaWQgPSBpZCAoKVxuXG5sZXQgcHJldmVudERlZmF1bHQgZXYgPVxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5wcmV2ZW50RGVmYXVsdCAoKiBJRSBoYWNrICopXG4gIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyNwcmV2ZW50RGVmYXVsdFxuICBlbHNlIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnJldHVyblZhbHVlIDo9IEpzLmJvb2wgZmFsc2VcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID9idWJibGVzID9jYW5jZWxhYmxlID9kZXRhaWwgdHlwID1cbiAgbGV0IG9wdF9pdGVyIGYgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB4IC0+IGYgeFxuICBpblxuICBsZXQgb3B0cyA9IFVuc2FmZS5vYmogW3x8XSBpblxuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmJ1YmJsZXMgOj0gYm9vbCB4KSBidWJibGVzO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmNhbmNlbGFibGUgOj0gYm9vbCB4KSBjYW5jZWxhYmxlO1xuICBvcHRfaXRlciAoZnVuIHggLT4gb3B0cyMjLmRldGFpbCA6PSBzb21lIHgpIGRldGFpbDtcbiAgbGV0IGNvbnN0ciA6XG4gICAgICAoICAgKCdhLCAnYikgI2N1c3RvbUV2ZW50IEpzLnQgRXZlbnQudHlwXG4gICAgICAgLT4gPCBkZXRhaWwgOiAnYiBvcHQgcHJvcCA+IHRcbiAgICAgICAtPiAoJ2EsICdiKSBjdXN0b21FdmVudCB0KVxuICAgICAgY29uc3RyID1cbiAgICBVbnNhZmUuZ2xvYmFsIyMuX0N1c3RvbUV2ZW50XG4gIGluXG4gIG5ldyVqcyBjb25zdHIgdHlwIG9wdHNcblxuKCogSUUgPCA5ICopXG5cbmNsYXNzIHR5cGUgc3RyaW5nTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250YWlucyA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIEpzXG5cbnR5cGUgdWludDMyID0gZmxvYXRcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlciA9IG9iamVjdFxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5lbmRcblxubGV0IGFycmF5QnVmZmVyIDogKGludCAtPiBhcnJheUJ1ZmZlciB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0FycmF5QnVmZmVyXG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXJWaWV3ID0gb2JqZWN0XG4gIG1ldGhvZCBidWZmZXIgOiBhcnJheUJ1ZmZlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZU9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gdHlwZWRBcnJheSA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBfQllURVNfUEVSX0VMRU1FTlQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRfZnJvbUFycmF5IDogJ2EganNfYXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldF9mcm9tVHlwZWRBcnJheSA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5IDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICAoKiBUaGlzIGZha2UgbWV0aG9kIGlzIG5lZWRlZCBmb3IgdHlwaW5nIHB1cnBvc2VzLlxuICAgICBXaXRob3V0IGl0LCBbJ2JdIHdvdWxkIG5vdCBiZSBjb25zdHJhaW5lZC4gKilcbiAgbWV0aG9kIF9jb250ZW50X3R5cGVfIDogJ2Igb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG50eXBlIGludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDE2QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQxNl91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQzMkFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0NjRBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQ2NF9lbHQpIHR5cGVkQXJyYXlcblxuZXh0ZXJuYWwga2luZCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gID0gXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0XG4gID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fZ2VuYXJyYXkgOlxuICAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnRcbiAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbmxldCBpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21BcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2luQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21BcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2luQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgaW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9pbkJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfaW5CdWZmZXIgPSB1aW50MTZBcnJheVxuXG5sZXQgaW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9pbkJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9VaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfaW5CdWZmZXIgPSB1aW50MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9pbkJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9GbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tVHlwZWRBcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9pbkJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgc2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID1cbiBmdW4gYSBpIHYgLT4gYXJyYXlfc2V0IChVbnNhZmUuY29lcmNlIGEpIGkgdlxuXG5sZXQgZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmxldCB1bnNhZmVfZ2V0IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiAnYSA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxuY2xhc3MgdHlwZSBkYXRhVmlldyA9IG9iamVjdFxuICBpbmhlcml0IGFycmF5QnVmZmVyVmlld1xuXG4gIG1ldGhvZCBnZXRJbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQ4IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2IDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyIDogaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldEludDMyXyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyIDogaW50IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IHVpbnQzMiBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyXyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NF8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0SW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyXyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MzJfIDogaW50IC0+IHVpbnQzMiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzIgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0MzJfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQ2NF8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmxldCBkYXRhVmlldyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRGF0YVZpZXdcblxubGV0IGRhdGFWaWV3X2luQnVmZmVyID0gZGF0YVZpZXdcblxubW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGV4dGVybmFsIHRvX2FycmF5QnVmZmVyIDogdCAtPiBhcnJheUJ1ZmZlciBKcy50ID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogdCAtPiB1aW50OEFycmF5IEpzLnQgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgb2ZfYXJyYXlCdWZmZXIgOiBhcnJheUJ1ZmZlciBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5cbiAgbGV0IG9mX2FycmF5QnVmZmVyIGFiID1cbiAgICBsZXQgdWludDggPSBuZXclanMgdWludDhBcnJheV9mcm9tQnVmZmVyIGFiIGluXG4gICAgb2ZfdWludDhBcnJheSB1aW50OFxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IGJ5dGVzID0gXCJjYW1sX2J5dGVzX29mX2FycmF5XCJcblxuICBleHRlcm5hbCB0b191aW50OEFycmF5IDogYnl0ZXMgLT4gdWludDhBcnJheSBKcy50ID0gXCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGJsb2IgPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGJsb2IgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3dpdGhDb250ZW50VHlwZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgLT4gYmxvYiB0IG1ldGhcbmVuZFxuXG5sZXQgYmxvYl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Jsb2JcblxudHlwZSAnYSBtYWtlX2Jsb2IgPVxuICA/Y29udGVudFR5cGU6c3RyaW5nIC0+ID9lbmRpbmdzOlsgYFRyYW5zcGFyZW50IHwgYE5hdGl2ZSBdIC0+ICdhIC0+IGJsb2IgdFxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5sZXQgbWFrZV9ibG9iX29wdGlvbnMgY29udGVudFR5cGUgZW5kaW5ncyA9XG4gIGxldCBvcHRpb25zID1cbiAgICBmaWx0ZXJfbWFwXG4gICAgICAoZnVuIChuYW1lLCB2KSAtPlxuICAgICAgICBtYXRjaCB2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gU29tZSAobmFtZSwgVW5zYWZlLmluamVjdCAoc3RyaW5nIHYpKSlcbiAgICAgIFsgXCJ0eXBlXCIsIGNvbnRlbnRUeXBlXG4gICAgICA7ICggXCJlbmRpbmdzXCJcbiAgICAgICAgLCBtYXRjaCBlbmRpbmdzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBgVHJhbnNwYXJlbnQgLT4gU29tZSBcInRyYW5zcGFyZW50XCJcbiAgICAgICAgICB8IFNvbWUgYE5hdGl2ZSAtPiBTb21lIFwibmF0aXZlXCIgKVxuICAgICAgXVxuICBpblxuICBtYXRjaCBvcHRpb25zIHdpdGhcbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBsIC0+IFVuc2FmZS5vYmogKEFycmF5Lm9mX2xpc3QgbClcblxubGV0IGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBhID1cbiAgbGV0IG9wdGlvbnMgPSBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzIGluXG4gIG5ldyVqcyBibG9iX2NvbnN0ciAoYXJyYXkgYSkgb3B0aW9uc1xuXG5sZXQgYmxvYl9mcm9tX3N0cmluZyA/Y29udGVudFR5cGUgP2VuZGluZ3MgcyA9XG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBbfCBzdHJpbmcgcyB8XVxuXG5sZXQgYmxvYl9mcm9tX2FueSA/Y29udGVudFR5cGUgP2VuZGluZ3MgbCA9XG4gIGxldCBsID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYGFycmF5QnVmZmVyIGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYGFycmF5QnVmZmVyVmlldyBhIC0+IFVuc2FmZS5pbmplY3QgYVxuICAgICAgICB8IGBzdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IChzdHJpbmcgcylcbiAgICAgICAgfCBganNfc3RyaW5nIHMgLT4gVW5zYWZlLmluamVjdCBzXG4gICAgICAgIHwgYGJsb2IgYiAtPiBVbnNhZmUuaW5qZWN0IGIpXG4gICAgICBsXG4gIGluXG4gIGJsb2JfcmF3ID9jb250ZW50VHlwZSA/ZW5kaW5ncyAoQXJyYXkub2ZfbGlzdCBsKVxuXG5jbGFzcyB0eXBlIGZpbGUgPSBvYmplY3RcbiAgaW5oZXJpdCBibG9iXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RNb2RpZmllZERhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW4gZmlyZWZveCAzLjAtMy41IGZpbGUubmFtZSBpcyBub3QgYXZhaWxhYmxlLCB3ZSB1c2UgdGhlIG5vbnN0YW5kYXJkIGZpbGVOYW1lIGluc3RlYWQgKilcbmNsYXNzIHR5cGUgZmlsZV9uYW1lX29ubHkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxlTmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGZpbGVuYW1lIGZpbGUgPVxuICBsZXQgZmlsZSA6IGZpbGVfbmFtZV9vbmx5IHQgPSBKcy5VbnNhZmUuY29lcmNlIGZpbGUgaW5cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBmaWxlIyMubmFtZSB3aXRoXG4gIHwgTm9uZSAtPiAoXG4gICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5maWxlTmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW4ndCByZXRyaWV2ZSBmaWxlIG5hbWU6IG5vdCBpbXBsZW1lbnRlZFwiXG4gICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lKVxuICB8IFNvbWUgbmFtZSAtPiBuYW1lXG5cbnR5cGUgZmlsZV9hbnkgPSA8ID4gdFxuXG5sZXQgZG9jX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRG9jdW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGV4dGVybmFsIGpzb24gOiBmaWxlX2FueSAtPiAnYSBPcHQudCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgZG9jdW1lbnQgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBkb2NfY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBlbGVtZW50IGRvY3VtZW50IHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGJsb2IgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIGluc3RhbmNlb2YgZSBibG9iX2NvbnN0ciB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6ICNibG9iIHQpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBzdHJpbmcgKGUgOiBmaWxlX2FueSkgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIGUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGpzX3N0cmluZyB0KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhcnJheUJ1ZmZlciAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIFR5cGVkX2FycmF5LmFycmF5QnVmZmVyXG4gICAgdGhlbiBKcy5zb21lIChVbnNhZmUuY29lcmNlIGUgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0KVxuICAgIGVsc2UgSnMubnVsbFxuZW5kXG5cbmNsYXNzIHR5cGUgZmlsZUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbZmlsZV0gRG9tLm5vZGVMaXN0XG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9ncmVzc0V2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBldmVudFxuXG4gIG1ldGhvZCBsZW5ndGhDb21wdXRhYmxlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9hZGVkIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdG90YWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJvZ3Jlc3NFdmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmxvYWRzdGFydCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFib3J0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZGVuZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBFTVBUWVxuICB8IExPQURJTkdcbiAgfCBET05FXG5cbmNsYXNzIHR5cGUgZmlsZVJlYWRlciA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCByZWFkQXNBcnJheUJ1ZmZlciA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0JpbmFyeVN0cmluZyA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHQgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkQXNUZXh0X3dpdGhFbmNvZGluZyA6ICNibG9iIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc0RhdGFVUkwgOiAjYmxvYiB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3VsdCA6IGZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBmaWxlRXJyb3IgdCByZWFkb25seV9wcm9wXG5cbiAgaW5oZXJpdCBwcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIFJlYWRlckV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0gZmlsZVJlYWRlciBwcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBsb2Fkc3RhcnQgPSBFdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBFdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IEV2ZW50Lm1ha2UgXCJhYm9ydFwiXG5cbiAgbGV0IGVycm9yID0gRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IEV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgbG9hZGVuZCA9IEV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5sZXQgZmlsZVJlYWRlciA6IGZpbGVSZWFkZXIgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ZpbGVSZWFkZXJcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjYW1sX2pzX29uX2llIDogdW5pdCAtPiBib29sIHQgPSBcImNhbWxfanNfb25faWVcIlxuXG5sZXQgb25JRSA9IEpzLnRvX2Jvb2wgKGNhbWxfanNfb25faWUgKCkpXG5cbmV4dGVybmFsIGh0bWxfZXNjYXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lc2NhcGVcIlxuXG5leHRlcm5hbCBkZWNvZGVfaHRtbF9lbnRpdGllcyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX2h0bWxfZW50aXRpZXNcIlxuXG5jbGFzcyB0eXBlIGNzc1N0eWxlRGVjbGFyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIHNldFByb3BlcnR5IDpcbiAgICBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHRkZWYgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVZhbHVlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9wZXJ0eVByaW9yaXR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVQcm9wZXJ0eSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYW5pbWF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EZWxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EdXJhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uRmlsbE1vZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25QbGF5U3RhdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQXR0YWNobWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRQb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFJlcGVhdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b20gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21TdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbGxhcHNlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmFkaXVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyUmlnaHRXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2FwdGlvblNpZGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsZWFyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGlwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlckluY3JlbWVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY291bnRlclJlc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NGbG9hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3NzVGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Vyc29yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpc3BsYXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVtcHR5Q2VsbHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRGYW1pbHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTaXplIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250U3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRWYXJpYW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb250V2VpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxldHRlclNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlSW1hZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luUmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpblRvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWF4SGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWluSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3BhY2l0eSA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZU9mZnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdmVyZmxvd1ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0JvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ0xlZnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZGRpbmdSaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1RvcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQWZ0ZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHBhZ2VCcmVha0JlZm9yZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9pbnRlckV2ZW50cyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJsZUxheW91dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QW5jaG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0RGVjb3JhdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEluZGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dFRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZlcnRpY2FsQWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZpc2liaWxpdHkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdoaXRlU3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3b3JkU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgekluZGV4IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSAoJ2EsICdiKSBEb20uZXZlbnRfbGlzdGVuZXJcblxudHlwZSBtb3VzZV9idXR0b24gPVxuICB8IE5vX2J1dHRvblxuICB8IExlZnRfYnV0dG9uXG4gIHwgTWlkZGxlX2J1dHRvblxuICB8IFJpZ2h0X2J1dHRvblxuXG50eXBlIGRlbHRhX21vZGUgPVxuICB8IERlbHRhX3BpeGVsXG4gIHwgRGVsdGFfbGluZVxuICB8IERlbHRhX3BhZ2VcblxuY2xhc3MgdHlwZSBldmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZXZlbnRcbmVuZFxuXG5hbmQgWydhXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50LCAnYV0gRG9tLmN1c3RvbUV2ZW50XG5lbmRcblxuYW5kIGZvY3VzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWx0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0YUtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1dHRvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoaWNoIDogbW91c2VfYnV0dG9uIG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZyb21FbGVtZW50IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b0VsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGtleWJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYXRpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhckNvZGUgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qga2V5Q29kZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE1vZGlmaWVyU3RhdGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBrZXlJZGVudGlmaWVyIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2V3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICgqIEFsbCBtb2Rlcm4gYnJvd3NlcnMgKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHdoZWVsRGVsdGEgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGVlbERlbHRhWSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFaIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YU1vZGUgOiBkZWx0YV9tb2RlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbW91c2VTY3JvbGxFdmVudCA9IG9iamVjdFxuICAoKiBGaXJlZm94ICopXG4gIGluaGVyaXQgbW91c2VFdmVudFxuXG4gIG1ldGhvZCBkZXRhaWwgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBheGlzIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9IT1JJWk9OVEFMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRJQ0FMX0FYSVMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYW5nZWRUb3VjaGVzIDogdG91Y2hMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVsYXRlZFRhcmdldCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdG91Y2hMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IHRvdWNoIHQgb3B0ZGVmIG1ldGhcbmVuZFxuXG5hbmQgdG91Y2ggPSBvYmplY3RcbiAgbWV0aG9kIGlkZW50aWZpZXIgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBlbGVtZW50IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhZ2VYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdWJtaXRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN1Ym1pdHRlciA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkcmFnRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRhdGFUcmFuc2ZlciA6IGRhdGFUcmFuc2ZlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2xpcGJvYXJkRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBjbGlwYm9hcmREYXRhIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBkYXRhVHJhbnNmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGRyb3BFZmZlY3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVmZmVjdEFsbG93ZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHlwZXMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkRWxlbWVudCA6IGVsZW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGF0YV9hbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0YSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXREcmFnSW1hZ2UgOiBlbGVtZW50IHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXZlbnRUYXJnZXQgPSBvYmplY3QgKCdzZWxmKVxuICBtZXRob2Qgb25jbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZGJsY2xpY2sgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlZG93biA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2V1cCA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdmVyIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW1vdmUgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlb3V0IDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlwcmVzcyA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5ZG93biA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ua2V5dXAgOiAoJ3NlbGYgdCwga2V5Ym9hcmRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNjcm9sbCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndoZWVsIDogKCdzZWxmIHQsIG1vdXNld2hlZWxFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdzdGFydCA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnZW5kIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbnRlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnb3ZlciA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnbGVhdmUgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZyA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcm9wIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmFuaW1hdGlvbnN0YXJ0IDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uZW5kIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uaXRlcmF0aW9uIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uY2FuY2VsIDogKCdzZWxmIHQsIGFuaW1hdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbnJ1biA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9udHJhbnNpdGlvbmVuZCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uY2FuY2VsIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmdvdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvc3Rwb2ludGVyY2FwdHVyZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZW50ZXIgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcmNhbmNlbCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyZG93biA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybGVhdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm1vdmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucG9pbnRlcm91dCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3ZlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVydXAgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc3BhdGNoRXZlbnQgOiBldmVudCB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuYW5kIHBvcFN0YXRlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBzdGF0ZSA6IEpzLlVuc2FmZS5hbnkgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBwb2ludGVyRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIHBvaW50ZXJJZCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNzdXJlIDogbnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YW5nZW50aWFsUHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbHRYIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFkgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0d2lzdCA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvaW50ZXJUeXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc1ByaW1hcnkgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBrZXkgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXJsIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdG9yYWdlQXJlYSA6IHN0b3JhZ2UgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBzdG9yYWdlID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXkgOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEl0ZW0gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBoYXNoQ2hhbmdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBvbGRVUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ld1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgYW5pbWF0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBhbmltYXRpb25OYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgdHJhbnNpdGlvbkV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgcHJvcGVydHlOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbGFwc2VkVGltZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHNldWRvRWxlbWVudCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbWVkaWFFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5lbmRcblxuYW5kIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBVbnNhZmUuYW55IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNvdXJjZSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgbm9kZVNlbGVjdG9yID0gb2JqZWN0XG4gIG1ldGhvZCBxdWVyeVNlbGVjdG9yIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3JBbGwgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcbmVuZFxuXG5hbmQgdG9rZW5MaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgYWRkIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0b2dnbGUgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZmllciA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5hbmQgZWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbS5lbGVtZW50XG5cbiAgaW5oZXJpdCBub2RlU2VsZWN0b3JcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRpdGxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsYXNzTmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NMaXN0IDogdG9rZW5MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZXN0IDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHN0eWxlIDogY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHByb3BcblxuICBtZXRob2QgaW5uZXJIVE1MIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRDb250ZW50IDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5uZXJUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRMZWZ0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0VG9wIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0UGFyZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0SGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Nyb2xsTGVmdCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFRvcCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbFdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsSGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgZ2V0Q2xpZW50UmVjdHMgOiBjbGllbnRSZWN0TGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IDogY2xpZW50UmVjdCB0IG1ldGhcblxuICBtZXRob2Qgc2Nyb2xsSW50b1ZpZXcgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvY3VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsdXIgOiB1bml0IG1ldGhcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuYW5kIGNsaWVudFJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHRvcCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmlnaHQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdHRvbSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVmdCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGllbnRSZWN0TGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBjbGllbnRSZWN0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gRG9tLm5vX2hhbmRsZXJcblxubGV0IGhhbmRsZXIgPSBEb20uaGFuZGxlclxuXG5sZXQgZnVsbF9oYW5kbGVyID0gRG9tLmZ1bGxfaGFuZGxlclxuXG5sZXQgaW52b2tlX2hhbmRsZXIgPSBEb20uaW52b2tlX2hhbmRsZXJcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdHlwID0gJ2EgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCBjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImNhbmNlbFwiXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNsb3NlID0gRG9tLkV2ZW50Lm1ha2UgXCJjbG9zZVwiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpYWxvZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3JldHVyblZhbHVlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9wZW5fIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmV0dXJuVmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNob3cgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hvd01vZGFsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2FuY2VsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jbG9zZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaXZFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHBhcmFncmFwaEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZGluZ0VsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcXVvdGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjaXRlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcHJlRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBickVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaHJFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG1vZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGVUaW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYW5jaG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvd25sb2FkIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBocmVmbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbWFnZUVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaXNNYXAgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxXaWR0aCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXR1cmFsSGVpZ2h0IDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbXBsZXRlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgb25sb2FkIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb2JqZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXJjaGl2ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZUJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvZGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWNsYXJlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFuZGJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB1c2VNYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwYXJhbUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXJlYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb29yZHMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vSHJlZiA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNoYXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1hcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFyZWFzIDogYXJlYUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXN5bmMgOiBib29sIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZW1iZWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDZWxsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2VsbEluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJiciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sU3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlYWRlcnMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd1NwYW4gOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY29wZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVSb3dFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCByb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlY3Rpb25Sb3dJbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNlbGxzIDogdGFibGVDZWxsRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGluc2VydENlbGwgOiBpbnQgLT4gdGFibGVDZWxsRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2VsbCA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlQ29sRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaE9mZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVNlY3Rpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiB0YWJsZVJvd0VsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5zZXJ0Um93IDogaW50IC0+IHRhYmxlUm93RWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUm93IDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDYXB0aW9uRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSB0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCB0SGVhZCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRGb290IDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0Qm9kaWVzIDogdGFibGVTZWN0aW9uRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsUGFkZGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2VsbFNwYWNpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZyYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBydWxlcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VtbWFyeSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZVRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVEhlYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVURm9vdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDYXB0aW9uIDogdGFibGVDYXB0aW9uRWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ2FwdGlvbiA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0aW1lUmFuZ2VzID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGVuZF8gOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbnR5cGUgbmV0d29ya1N0YXRlID1cbiAgfCBORVRXT1JLX0VNUFRZXG4gIHwgTkVUV09SS19JRExFXG4gIHwgTkVUV09SS19MT0FESU5HXG4gIHwgTkVUV09SS19OT19TT1VSQ0VcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBIQVZFX05PVEhJTkdcbiAgfCBIQVZFX01FVEFEQVRBXG4gIHwgSEFWRV9DVVJSRU5UX0RBVEFcbiAgfCBIQVZFX0ZVVFVSRV9EQVRBXG4gIHwgSEFWRV9FTk9VR0hfREFUQVxuXG4oKiBodHRwOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9yZWZfYXZfZG9tLmFzcCAqKVxuKCogb25seSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXIuIChJRTkrKSAqKVxuY2xhc3MgdHlwZSBtZWRpYUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNhblBsYXlUeXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBsb2FkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBsYXkgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYXV0b3BsYXkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBidWZmZXJlZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRyb2xzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY3VycmVudFNyYyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFRpbWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR1cmF0aW9uIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbmRlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvb3AgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYWdyb3VwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtdXRlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXR3b3JrU3RhdGUgOiBuZXR3b3JrU3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXVzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF5YmFja1JhdGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHBsYXllZCA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGVfaW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHJlYWR5U3RhdGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWVrYWJsZSA6IHRpbWVSYW5nZXMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWtpbmcgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZvbHVtZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2Qgb25jYW5wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jYW5wbGF5dGhyb3VnaCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHVyYXRpb25jaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVtcHRpZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVuZGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZWRtZXRhZGF0YSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wYXVzZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucGxheWluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ucmF0ZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Vla2VkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVraW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdGFsbGVkIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zdXNwZW5kIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb252b2x1bWVjaGFuZ2UgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbndhaXRpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXVkaW9FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbWVkaWFFbGVtZW50XG5lbmRcblxuY2xhc3MgdHlwZSB2aWRlb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG50eXBlIGNvbnRleHQgPSBqc19zdHJpbmcgdFxuXG5sZXQgXzJkXyA9IEpzLnN0cmluZyBcIjJkXCJcblxudHlwZSBjYW52YXNQYXR0ZXJuXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2Qgd2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0b0RhdGFVUkwgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGFVUkxfdHlwZV9jb21wcmVzc2lvbiA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gb2JqZWN0XG4gIG1ldGhvZCBjYW52YXMgOiBjYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzYXZlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3RvcmUgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2Zvcm0gOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnbG9iYWxBbHBoYSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdHJva2VTdHlsZV9wYXR0ZXJuIDogY2FudmFzUGF0dGVybiB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZSA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGxTdHlsZV9ncmFkaWVudCA6IGNhbnZhc0dyYWRpZW50IHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY3JlYXRlTGluZWFyR3JhZGllbnQgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGNhbnZhc0dyYWRpZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYWRpYWxHcmFkaWVudCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm4gOiBpbWFnZUVsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21DYW52YXMgOiBjYW52YXNFbGVtZW50IHQgLT4ganNfc3RyaW5nIHQgLT4gY2FudmFzUGF0dGVybiB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybl9mcm9tVmlkZW8gOiB2aWRlb0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVDYXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpbmVKb2luIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaXRlckxpbWl0IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRYIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dPZmZzZXRZIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dCbHVyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBzaGFkb3dDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXJSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGxSZWN0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmVnaW5QYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlUGF0aCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb3ZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbGluZVRvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHF1YWRyYXRpY0N1cnZlVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmV6aWVyQ3VydmVUbyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFyY1RvIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVsbGlwc2UgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsaXAgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaXNQb2ludEluUGF0aCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdGb2N1c1JpbmcgOiAjZWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBmb250IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRCYXNlbGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbFRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFRleHRfd2l0aFdpZHRoIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0cm9rZVRleHQgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dF93aXRoV2lkdGggOlxuICAgIGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtZWFzdXJlVGV4dCA6IGpzX3N0cmluZyB0IC0+IHRleHRNZXRyaWNzIHQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2UgOiBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX3dpdGhTaXplIDpcbiAgICBpbWFnZUVsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGwgOlxuICAgICAgIGltYWdlRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21DYW52YXNXaXRoU2l6ZSA6XG4gICAgY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbEZyb21DYW52YXMgOlxuICAgICAgIGNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhWaWRlbyA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tVmlkZW9XaXRoU2l6ZSA6XG4gICAgdmlkZW9FbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbVZpZGVvIDpcbiAgICAgICB2aWRlb0VsZW1lbnQgdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlSW1hZ2VEYXRhIDogaW50IC0+IGludCAtPiBpbWFnZURhdGEgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEltYWdlRGF0YSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgcHV0SW1hZ2VEYXRhIDogaW1hZ2VEYXRhIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuYW5kIGNhbnZhc0dyYWRpZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBhZGRDb2xvclN0b3AgOiBudW1iZXJfdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgdGV4dE1ldHJpY3MgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBpbWFnZURhdGEgPSBvYmplY3RcbiAgbWV0aG9kIHdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YSA6IGNhbnZhc1BpeGVsQXJyYXkgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNhbnZhc1BpeGVsQXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuZXh0ZXJuYWwgcGl4ZWxfZ2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfanNfZ2V0XCJcblxuZXh0ZXJuYWwgcGl4ZWxfc2V0IDogY2FudmFzUGl4ZWxBcnJheSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG5jbGFzcyB0eXBlIHJhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGFydE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZE9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0Q29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZENvbnRhaW5lciA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRTdGFydCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U3RhcnRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRCZWZvcmUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEFmdGVyIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RW5kQWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0Tm9kZUNvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb25lQ29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZXh0cmFjdENvbnRlbnRzIDogRG9tLmRvY3VtZW50RnJhZ21lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUNvbnRlbnRzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdXJyb3VuZENvbnRlbnRzIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG4oKiogSW5mb3JtYXRpb24gb24gY3VycmVudCBzZWxlY3Rpb24gKilcbmNsYXNzIHR5cGUgc2VsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBhbmNob3JOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvck9mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzTm9kZSA6IERvbS5ub2RlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb2N1c09mZnNldCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzQ29sbGFwc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VDb3VudCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFJhbmdlQXQgOiBpbnQgLT4gcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleHRlbmQgOiBEb20ubm9kZSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbW9kaWZ5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9TdGFydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZVRvRW5kIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdEFsbENoaWxkcmVuIDogRG9tLm5vZGUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWRkUmFuZ2UgOiByYW5nZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUFsbFJhbmdlcyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcm9tRG9jdW1lbnQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udGFpbnNOb2RlIDogRG9tLm5vZGUgdCAtPiBib29sIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IFtlbGVtZW50XSBEb20uZG9jdW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlYWQgOiBoZWFkRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgYm9keSA6IGJvZHlFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBkb2N1bWVudEVsZW1lbnQgOiBodG1sRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW1hZ2VzIDogaW1hZ2VFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxldHMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmtzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmb3JtcyA6IGZvcm1FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuY2hvcnMgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVzaWduTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3Blbl8gOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgd3JpdGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXhlY0NvbW1hbmQgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSYW5nZSA6IHJhbmdlIHQgbWV0aFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlOYW1lIDoganNfc3RyaW5nIHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGFjdGl2ZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGlkZGVuIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25mdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA6IChkb2N1bWVudCB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG50eXBlIGludGVydmFsX2lkXG5cbnR5cGUgdGltZW91dF9pZFxuXG50eXBlIGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG5cbmNsYXNzIHR5cGUgbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBob3N0bmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9ydCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGF0aG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlYXJjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGFzaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXNzaWduIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2UgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVsb2FkIDogdW5pdCBtZXRoXG5lbmRcblxubGV0IGxvY2F0aW9uX29yaWdpbiAobG9jIDogbG9jYXRpb24gdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGxvYyMjLm9yaWdpblxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCBwcm90b2NvbCA9IGxvYyMjLnByb3RvY29sIGluXG4gICAgICBsZXQgaG9zdG5hbWUgPSBsb2MjIy5ob3N0bmFtZSBpblxuICAgICAgbGV0IHBvcnQgPSBsb2MjIy5wb3J0IGluXG4gICAgICBpZiBwcm90b2NvbCMjLmxlbmd0aCA9IDAgJiYgaG9zdG5hbWUjIy5sZW5ndGggPSAwXG4gICAgICB0aGVuIEpzLnN0cmluZyBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBvcmlnaW4gPSBwcm90b2NvbCMjY29uY2F0XzIgKEpzLnN0cmluZyBcIi8vXCIpIGhvc3RuYW1lIGluXG4gICAgICAgIGlmIHBvcnQjIy5sZW5ndGggPiAwIHRoZW4gb3JpZ2luIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiOlwiKSBsb2MjIy5wb3J0IGVsc2Ugb3JpZ2luKVxuICAgIChmdW4gbyAtPiBvKVxuXG5jbGFzcyB0eXBlIGhpc3RvcnkgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdvIDogaW50IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmFjayA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb3J3YXJkIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VTdGF0ZSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB1bmRvTWFuYWdlciA9IG9iamVjdCBlbmRcblxuY2xhc3MgdHlwZSBuYXZpZ2F0b3IgPSBvYmplY3RcbiAgbWV0aG9kIGFwcENvZGVOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhcHBWZXJzaW9uIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb29raWVFbmFibGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25MaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhdGZvcm0gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZlbmRvciA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckFnZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZXJMYW5ndWFnZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heFRvdWNoUG9pbnRzIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNjcmVlbiA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbFdpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXZhaWxIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYXBwbGljYXRpb25DYWNoZSA9IG9iamVjdFxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXBkYXRlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN3YXBDYWNoZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbmNoZWNraW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm5vdXBkYXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmRvd25sb2FkaW5nIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnByb2dyZXNzIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVwZGF0ZXJlYWR5IDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNhY2hlZCA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vYnNvbGV0ZSA6IChhcHBsaWNhdGlvbkNhY2hlIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5lbmRcblxuY2xhc3MgdHlwZSBfVVJMID0gb2JqZWN0XG4gIG1ldGhvZCBjcmVhdGVPYmplY3RVUkwgOiAjRmlsZS5ibG9iIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCByZXZva2VPYmplY3RVUkwgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHdpbmRvdyA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGRvY3VtZW50IDogZG9jdW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcGxpY2F0aW9uQ2FjaGUgOiBhcHBsaWNhdGlvbkNhY2hlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaXN0b3J5IDogaGlzdG9yeSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdW5kb01hbmFnZXIgOiB1bmRvTWFuYWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmF2aWdhdG9yIDogbmF2aWdhdG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTZWxlY3Rpb24gOiBzZWxlY3Rpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3AgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGwgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxCeSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlc3Npb25TdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxvY2FsU3RvcmFnZSA6IHN0b3JhZ2UgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJhbWVFbGVtZW50IDogZWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wZW5fIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IC0+IHdpbmRvdyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGFsZXJ0IDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbmZpcm0gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBwcm9tcHQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBwcmludCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnRlcnZhbCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IG51bWJlcl90IC0+IGludGVydmFsX2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJJbnRlcnZhbCA6IGludGVydmFsX2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUaW1lb3V0IDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gdGltZW91dF9pZCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyVGltZW91dCA6IHRpbWVvdXRfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVlc3RBbmltYXRpb25GcmFtZSA6XG4gICAgKG51bWJlcl90IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIG1ldGhcblxuICBtZXRob2QgY2FuY2VsQW5pbWF0aW9uRnJhbWUgOiBhbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2NyZWVuIDogc2NyZWVuIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5uZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlcldpZHRoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3V0ZXJIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlIDogI2VsZW1lbnQgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFN0eWxlX3BzZXVkb0VsdCA6XG4gICAgI2VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBhdG9iIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBidG9hIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb251bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25iZWZvcmV1bmxvYWQgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICh3aW5kb3cgdCwgZm9jdXNFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucmVzaXplIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ub3JpZW50YXRpb25jaGFuZ2UgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25wb3BzdGF0ZSA6ICh3aW5kb3cgdCwgcG9wU3RhdGVFdmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaGFzaGNoYW5nZSA6ICh3aW5kb3cgdCwgaGFzaENoYW5nZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vbmxpbmUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ub2ZmbGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgX1VSTCA6IF9VUkwgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRldmljZVBpeGVsUmF0aW8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHdpbmRvdyA6IHdpbmRvdyB0ID0gSnMuVW5zYWZlLmdsb2JhbFxuXG4oKiBUaGUgdG9wbGV2ZWwgb2JqZWN0ICopXG5cbmxldCBkb2N1bWVudCA9IHdpbmRvdyMjLmRvY3VtZW50XG5cbmxldCBnZXRFbGVtZW50QnlJZCBpZCA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfZXhuIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiZ2V0RWxlbWVudEJ5SWRfZXhuOiAlUyBub3QgZm91bmRcIiBpZCkpXG4gICAgKGZ1biBwbm9kZSAtPiBwbm9kZSlcblxubGV0IGdldEVsZW1lbnRCeUlkX29wdCBpZCA9IEpzLk9wdC50b19vcHRpb24gKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcblxubGV0IGdldEVsZW1lbnRCeUlkX2NvZXJjZSBpZCBjb2VyY2UgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBOb25lKVxuICAgIChmdW4gZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2UgZSkpXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIGZyYW1lU2V0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29scyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGZyYW1lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZnJhbWVCb3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvbmdEZXNjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBub1Jlc2l6ZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpRnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjcm9sbGluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3JjIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRXaW5kb3cgOiB3aW5kb3cgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCoqKiopXG5cbigqWFhYIFNob3VsZCBwcm92aWRlIGNyZWF0aW9uIGZ1bmN0aW9ucyBhIGxhIGxhYmxndGsuLi4gKilcblxubGV0IG9wdF9pdGVyIHggZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHYgLT4gZiB2XG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSlcblxubGV0IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBuYW1lKVxuXG5sZXQgY3JlYXRlRWxlbWVudFN5bnRheCA9IHJlZiBgVW5rbm93blxuXG5sZXQgcmVjIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIGVsdCA9XG4gIGlmIFBvbHkuKF90eXBlID0gTm9uZSkgJiYgUG9seS4obmFtZSA9IE5vbmUpXG4gIHRoZW4gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgZWx0KVxuICBlbHNlXG4gICAgbWF0Y2ggIWNyZWF0ZUVsZW1lbnRTeW50YXggd2l0aFxuICAgIHwgYFN0YW5kYXJkIC0+XG4gICAgICAgIGxldCByZXMgPSBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpIGluXG4gICAgICAgIG9wdF9pdGVyIF90eXBlIChmdW4gdCAtPiByZXMjIy5fdHlwZSA6PSB0KTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT4gcmVzIyMubmFtZSA6PSBuKTtcbiAgICAgICAgcmVzXG4gICAgfCBgRXh0ZW5kZWQgLT5cbiAgICAgICAgbGV0IGEgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgICAgICAgaWdub3JlIChhIyNwdXNoXzIgKEpzLnN0cmluZyBcIjxcIikgKEpzLnN0cmluZyBlbHQpKTtcbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+XG4gICAgICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMyAoSnMuc3RyaW5nIFwiIHR5cGU9XFxcIlwiKSAoaHRtbF9lc2NhcGUgdCkgKEpzLnN0cmluZyBcIlxcXCJcIikpKTtcbiAgICAgICAgb3B0X2l0ZXIgbmFtZSAoZnVuIG4gLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgbmFtZT1cXFwiXCIpIChodG1sX2VzY2FwZSBuKSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBpZ25vcmUgKGEjI3B1c2ggKEpzLnN0cmluZyBcIj5cIikpO1xuICAgICAgICBKcy5VbnNhZmUuY29lcmNlIChkb2MjI2NyZWF0ZUVsZW1lbnQgKGEjI2pvaW4gKEpzLnN0cmluZyBcIlwiKSkpXG4gICAgfCBgVW5rbm93biAtPlxuICAgICAgICBjcmVhdGVFbGVtZW50U3ludGF4IDo9XG4gICAgICAgICAgaWYgdHJ5XG4gICAgICAgICAgICAgICBsZXQgZWwgOiBpbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBcIjxpbnB1dCBuYW1lPVxcXCJ4XFxcIj5cIikpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgSnMuZXF1YWxzIGVsIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyBcImlucHV0XCIpXG4gICAgICAgICAgICAgICAmJiBKcy5lcXVhbHMgZWwjIy5uYW1lIChKcy5zdHJpbmcgXCJ4XCIpXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGZhbHNlXG4gICAgICAgICAgdGhlbiBgRXh0ZW5kZWRcbiAgICAgICAgICBlbHNlIGBTdGFuZGFyZDtcbiAgICAgICAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0XG5cbmxldCBjcmVhdGVIdG1sIGRvYyA6IGh0bWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImh0bWxcIlxuXG5sZXQgY3JlYXRlSGVhZCBkb2MgOiBoZWFkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoZWFkXCJcblxubGV0IGNyZWF0ZUxpbmsgZG9jIDogbGlua0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlua1wiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlTWV0YSBkb2MgOiBtZXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhXCJcblxubGV0IGNyZWF0ZUJhc2UgZG9jIDogYmFzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmFzZVwiXG5cbmxldCBjcmVhdGVTdHlsZSBkb2MgOiBzdHlsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3R5bGVcIlxuXG5sZXQgY3JlYXRlQm9keSBkb2MgOiBib2R5RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJib2R5XCJcblxubGV0IGNyZWF0ZUZvcm0gZG9jIDogZm9ybUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9ybVwiXG5cbmxldCBjcmVhdGVPcHRncm91cCBkb2MgOiBvcHRHcm91cEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0Z3JvdXBcIlxuXG5sZXQgY3JlYXRlT3B0aW9uIGRvYyA6IG9wdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib3B0aW9uXCJcblxubGV0IGNyZWF0ZVNlbGVjdCA/X3R5cGUgP25hbWUgZG9jIDogc2VsZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJzZWxlY3RcIlxuXG5sZXQgY3JlYXRlSW5wdXQgP190eXBlID9uYW1lIGRvYyA6IGlucHV0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJpbnB1dFwiXG5cbmxldCBjcmVhdGVUZXh0YXJlYSA/X3R5cGUgP25hbWUgZG9jIDogdGV4dEFyZWFFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInRleHRhcmVhXCJcblxubGV0IGNyZWF0ZUJ1dHRvbiA/X3R5cGUgP25hbWUgZG9jIDogYnV0dG9uRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgXCJidXR0b25cIlxuXG5sZXQgY3JlYXRlTGFiZWwgZG9jIDogbGFiZWxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxhYmVsXCJcblxubGV0IGNyZWF0ZUZpZWxkc2V0IGRvYyA6IGZpZWxkU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWVsZHNldFwiXG5cbmxldCBjcmVhdGVMZWdlbmQgZG9jIDogbGVnZW5kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsZWdlbmRcIlxuXG5sZXQgY3JlYXRlVWwgZG9jIDogdUxpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVsXCJcblxubGV0IGNyZWF0ZU9sIGRvYyA6IG9MaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvbFwiXG5cbmxldCBjcmVhdGVEbCBkb2MgOiBkTGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGxcIlxuXG5sZXQgY3JlYXRlTGkgZG9jIDogbGlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpXCJcblxubGV0IGNyZWF0ZURpYWxvZyBkb2MgOiBkaWFsb2dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpYWxvZ1wiXG5cbmxldCBjcmVhdGVEaXYgZG9jIDogZGl2RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkaXZcIlxuXG5sZXQgY3JlYXRlRW1iZWQgZG9jIDogZW1iZWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVtYmVkXCJcblxubGV0IGNyZWF0ZVAgZG9jIDogcGFyYWdyYXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwXCJcblxubGV0IGNyZWF0ZUgxIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgxXCJcblxubGV0IGNyZWF0ZUgyIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgyXCJcblxubGV0IGNyZWF0ZUgzIGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImgzXCJcblxubGV0IGNyZWF0ZUg0IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg0XCJcblxubGV0IGNyZWF0ZUg1IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg1XCJcblxubGV0IGNyZWF0ZUg2IGRvYyA6IGhlYWRpbmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImg2XCJcblxubGV0IGNyZWF0ZVEgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInFcIlxuXG5sZXQgY3JlYXRlQmxvY2txdW90ZSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYmxvY2txdW90ZVwiXG5cbmxldCBjcmVhdGVQcmUgZG9jIDogcHJlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwcmVcIlxuXG5sZXQgY3JlYXRlQnIgZG9jIDogYnJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJyXCJcblxubGV0IGNyZWF0ZUhyIGRvYyA6IGhyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoclwiXG5cbmxldCBjcmVhdGVJbnMgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbnNcIlxuXG5sZXQgY3JlYXRlRGVsIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVsXCJcblxubGV0IGNyZWF0ZUEgZG9jIDogYW5jaG9yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhXCJcblxubGV0IGNyZWF0ZUltZyBkb2MgOiBpbWFnZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW1nXCJcblxubGV0IGNyZWF0ZU9iamVjdCBkb2MgOiBvYmplY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9iamVjdFwiXG5cbmxldCBjcmVhdGVQYXJhbSBkb2MgOiBwYXJhbUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGFyYW1cIlxuXG5sZXQgY3JlYXRlTWFwIGRvYyA6IG1hcEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWFwXCJcblxubGV0IGNyZWF0ZUFyZWEgZG9jIDogYXJlYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXJlYVwiXG5cbmxldCBjcmVhdGVTY3JpcHQgZG9jIDogc2NyaXB0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzY3JpcHRcIlxuXG5sZXQgY3JlYXRlVGFibGUgZG9jIDogdGFibGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRhYmxlXCJcblxubGV0IGNyZWF0ZUNhcHRpb24gZG9jIDogdGFibGVDYXB0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYXB0aW9uXCJcblxubGV0IGNyZWF0ZUNvbCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sXCJcblxubGV0IGNyZWF0ZUNvbGdyb3VwIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xncm91cFwiXG5cbmxldCBjcmVhdGVUaGVhZCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoZWFkXCJcblxubGV0IGNyZWF0ZVRmb290IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGZvb3RcIlxuXG5sZXQgY3JlYXRlVGJvZHkgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Ym9keVwiXG5cbmxldCBjcmVhdGVUciBkb2MgOiB0YWJsZVJvd0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidHJcIlxuXG5sZXQgY3JlYXRlVGggZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aFwiXG5cbmxldCBjcmVhdGVUZCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRkXCJcblxubGV0IGNyZWF0ZVN1YiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1YlwiXG5cbmxldCBjcmVhdGVTdXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdXBcIlxuXG5sZXQgY3JlYXRlU3BhbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNwYW5cIlxuXG5sZXQgY3JlYXRlVHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ0dFwiXG5cbmxldCBjcmVhdGVJIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiaVwiXG5cbmxldCBjcmVhdGVCIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYlwiXG5cbmxldCBjcmVhdGVCaWcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiaWdcIlxuXG5sZXQgY3JlYXRlU21hbGwgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzbWFsbFwiXG5cbmxldCBjcmVhdGVFbSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImVtXCJcblxubGV0IGNyZWF0ZVN0cm9uZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN0cm9uZ1wiXG5cbmxldCBjcmVhdGVDaXRlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY2l0ZVwiXG5cbmxldCBjcmVhdGVEZm4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZm5cIlxuXG5sZXQgY3JlYXRlQ29kZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNvZGVcIlxuXG5sZXQgY3JlYXRlU2FtcCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNhbXBcIlxuXG5sZXQgY3JlYXRlS2JkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwia2JkXCJcblxubGV0IGNyZWF0ZVZhciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInZhclwiXG5cbmxldCBjcmVhdGVBYmJyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWJiclwiXG5cbmxldCBjcmVhdGVEZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRkXCJcblxubGV0IGNyZWF0ZUR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZHRcIlxuXG5sZXQgY3JlYXRlTm9zY3JpcHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJub3NjcmlwdFwiXG5cbmxldCBjcmVhdGVBZGRyZXNzIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYWRkcmVzc1wiXG5cbmxldCBjcmVhdGVGcmFtZXNldCBkb2MgOiBmcmFtZVNldEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVzZXRcIlxuXG5sZXQgY3JlYXRlRnJhbWUgZG9jIDogZnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lXCJcblxubGV0IGNyZWF0ZUlmcmFtZSBkb2MgOiBpRnJhbWVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImlmcmFtZVwiXG5cbmxldCBjcmVhdGVBdWRpbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYXVkaW9cIlxuXG5sZXQgY3JlYXRlVmlkZW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZGVvXCJcblxuZXhjZXB0aW9uIENhbnZhc19ub3RfYXZhaWxhYmxlXG5cbmxldCBjcmVhdGVDYW52YXMgZG9jIDogY2FudmFzRWxlbWVudCB0ID1cbiAgbGV0IGMgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhbnZhc1wiIGluXG4gIGlmIG5vdCAoT3B0LnRlc3QgYyMjLmdldENvbnRleHQpIHRoZW4gcmFpc2UgQ2FudmFzX25vdF9hdmFpbGFibGU7XG4gIGNcblxubGV0IGh0bWxfZWxlbWVudCA6IGh0bWxFbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9IVE1MRWxlbWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgOiAjRG9tLm5vZGUgSnMudCAtPiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgaHRtbF9lbGVtZW50KSlcbiAgICB0aGVuXG4gICAgICAoKiBpZSA8IDkgZG9lcyBub3QgaGF2ZSBIVE1MRWxlbWVudDogd2UgaGF2ZSB0byBjaGVhdCB0byBjaGVja1xuICAgICAgICAgdGhhdCBzb21ldGhpbmcgaXMgYW4gaHRtbCBlbGVtZW50ICopXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIChKcy5VbnNhZmUuY29lcmNlIGUpIyMuaW5uZXJIVE1MKSlcbiAgICAgIHRoZW4gSnMubnVsbFxuICAgICAgZWxzZSBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIEpzLmluc3RhbmNlb2YgZSBodG1sX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgdGFnIChlIDogI2VsZW1lbnQgdCkgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA9IHVuc2FmZUNvZXJjZSBcImFcIiBlXG5cbiAgbGV0IGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcImFyZWFcIiBlXG5cbiAgbGV0IGJhc2UgZSA9IHVuc2FmZUNvZXJjZSBcImJhc2VcIiBlXG5cbiAgbGV0IGJsb2NrcXVvdGUgZSA9IHVuc2FmZUNvZXJjZSBcImJsb2NrcXVvdGVcIiBlXG5cbiAgbGV0IGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcImJvZHlcIiBlXG5cbiAgbGV0IGJyIGUgPSB1bnNhZmVDb2VyY2UgXCJiclwiIGVcblxuICBsZXQgYnV0dG9uIGUgPSB1bnNhZmVDb2VyY2UgXCJidXR0b25cIiBlXG5cbiAgbGV0IGNhbnZhcyBlID0gdW5zYWZlQ29lcmNlIFwiY2FudmFzXCIgZVxuXG4gIGxldCBjYXB0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJjYXB0aW9uXCIgZVxuXG4gIGxldCBjb2wgZSA9IHVuc2FmZUNvZXJjZSBcImNvbFwiIGVcblxuICBsZXQgY29sZ3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcImNvbGdyb3VwXCIgZVxuXG4gIGxldCBkZWwgZSA9IHVuc2FmZUNvZXJjZSBcImRlbFwiIGVcblxuICBsZXQgZGl2IGUgPSB1bnNhZmVDb2VyY2UgXCJkaXZcIiBlXG5cbiAgbGV0IGRsIGUgPSB1bnNhZmVDb2VyY2UgXCJkbFwiIGVcblxuICBsZXQgZmllbGRzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZpZWxkc2V0XCIgZVxuXG4gIGxldCBlbWJlZCBlID0gdW5zYWZlQ29lcmNlIFwiZW1iZWRcIiBlXG5cbiAgbGV0IGZvcm0gZSA9IHVuc2FmZUNvZXJjZSBcImZvcm1cIiBlXG5cbiAgbGV0IGZyYW1lc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZXNldFwiIGVcblxuICBsZXQgZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lXCIgZVxuXG4gIGxldCBoMSBlID0gdW5zYWZlQ29lcmNlIFwiaDFcIiBlXG5cbiAgbGV0IGgyIGUgPSB1bnNhZmVDb2VyY2UgXCJoMlwiIGVcblxuICBsZXQgaDMgZSA9IHVuc2FmZUNvZXJjZSBcImgzXCIgZVxuXG4gIGxldCBoNCBlID0gdW5zYWZlQ29lcmNlIFwiaDRcIiBlXG5cbiAgbGV0IGg1IGUgPSB1bnNhZmVDb2VyY2UgXCJoNVwiIGVcblxuICBsZXQgaDYgZSA9IHVuc2FmZUNvZXJjZSBcImg2XCIgZVxuXG4gIGxldCBoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJoZWFkXCIgZVxuXG4gIGxldCBociBlID0gdW5zYWZlQ29lcmNlIFwiaHJcIiBlXG5cbiAgbGV0IGh0bWwgZSA9IHVuc2FmZUNvZXJjZSBcImh0bWxcIiBlXG5cbiAgbGV0IGlmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiaWZyYW1lXCIgZVxuXG4gIGxldCBpbWcgZSA9IHVuc2FmZUNvZXJjZSBcImltZ1wiIGVcblxuICBsZXQgaW5wdXQgZSA9IHVuc2FmZUNvZXJjZSBcImlucHV0XCIgZVxuXG4gIGxldCBpbnMgZSA9IHVuc2FmZUNvZXJjZSBcImluc1wiIGVcblxuICBsZXQgbGFiZWwgZSA9IHVuc2FmZUNvZXJjZSBcImxhYmVsXCIgZVxuXG4gIGxldCBsZWdlbmQgZSA9IHVuc2FmZUNvZXJjZSBcImxlZ2VuZFwiIGVcblxuICBsZXQgbGkgZSA9IHVuc2FmZUNvZXJjZSBcImxpXCIgZVxuXG4gIGxldCBsaW5rIGUgPSB1bnNhZmVDb2VyY2UgXCJsaW5rXCIgZVxuXG4gIGxldCBtYXAgZSA9IHVuc2FmZUNvZXJjZSBcIm1hcFwiIGVcblxuICBsZXQgbWV0YSBlID0gdW5zYWZlQ29lcmNlIFwibWV0YVwiIGVcblxuICBsZXQgX29iamVjdCBlID0gdW5zYWZlQ29lcmNlIFwib2JqZWN0XCIgZVxuXG4gIGxldCBvbCBlID0gdW5zYWZlQ29lcmNlIFwib2xcIiBlXG5cbiAgbGV0IG9wdGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRncm91cFwiIGVcblxuICBsZXQgb3B0aW9uIGUgPSB1bnNhZmVDb2VyY2UgXCJvcHRpb25cIiBlXG5cbiAgbGV0IHAgZSA9IHVuc2FmZUNvZXJjZSBcInBcIiBlXG5cbiAgbGV0IHBhcmFtIGUgPSB1bnNhZmVDb2VyY2UgXCJwYXJhbVwiIGVcblxuICBsZXQgcHJlIGUgPSB1bnNhZmVDb2VyY2UgXCJwcmVcIiBlXG5cbiAgbGV0IHEgZSA9IHVuc2FmZUNvZXJjZSBcInFcIiBlXG5cbiAgbGV0IHNjcmlwdCBlID0gdW5zYWZlQ29lcmNlIFwic2NyaXB0XCIgZVxuXG4gIGxldCBzZWxlY3QgZSA9IHVuc2FmZUNvZXJjZSBcInNlbGVjdFwiIGVcblxuICBsZXQgc3R5bGUgZSA9IHVuc2FmZUNvZXJjZSBcInN0eWxlXCIgZVxuXG4gIGxldCB0YWJsZSBlID0gdW5zYWZlQ29lcmNlIFwidGFibGVcIiBlXG5cbiAgbGV0IHRib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Ym9keVwiIGVcblxuICBsZXQgdGQgZSA9IHVuc2FmZUNvZXJjZSBcInRkXCIgZVxuXG4gIGxldCB0ZXh0YXJlYSBlID0gdW5zYWZlQ29lcmNlIFwidGV4dGFyZWFcIiBlXG5cbiAgbGV0IHRmb290IGUgPSB1bnNhZmVDb2VyY2UgXCJ0Zm9vdFwiIGVcblxuICBsZXQgdGggZSA9IHVuc2FmZUNvZXJjZSBcInRoXCIgZVxuXG4gIGxldCB0aGVhZCBlID0gdW5zYWZlQ29lcmNlIFwidGhlYWRcIiBlXG5cbiAgbGV0IHRpdGxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aXRsZVwiIGVcblxuICBsZXQgdHIgZSA9IHVuc2FmZUNvZXJjZSBcInRyXCIgZVxuXG4gIGxldCB1bCBlID0gdW5zYWZlQ29lcmNlIFwidWxcIiBlXG5cbiAgbGV0IGF1ZGlvIGUgPSB1bnNhZmVDb2VyY2UgXCJhdWRpb1wiIGVcblxuICBsZXQgdmlkZW8gZSA9IHVuc2FmZUNvZXJjZSBcInZpZGVvXCIgZVxuXG4gIGxldCB1bnNhZmVDb2VyY2VFdmVudCBjb25zdHIgKGV2IDogI2V2ZW50IHQpID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoZGVmIGNvbnN0cikgJiYgSnMuaW5zdGFuY2VvZiBldiBjb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZXYpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IG1vdXNlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlRXZlbnQgZXZcblxuICBsZXQga2V5Ym9hcmRFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fS2V5Ym9hcmRFdmVudCBldlxuXG4gIGxldCB3aGVlbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9XaGVlbEV2ZW50IGV2XG5cbiAgbGV0IG1vdXNlU2Nyb2xsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01vdXNlU2Nyb2xsRXZlbnQgZXZcblxuICBsZXQgcG9wU3RhdGVFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fUG9wU3RhdGVFdmVudCBldlxuXG4gIGxldCBtZXNzYWdlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX01lc3NhZ2VFdmVudCBldlxuZW5kXG5cbigqKioqKVxuXG5sZXQgZXZlbnRUYXJnZXQgPSBEb20uZXZlbnRUYXJnZXRcblxubGV0IGV2ZW50UmVsYXRlZFRhcmdldCAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmdldCBlIyMucmVsYXRlZFRhcmdldCAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBKcy50b19zdHJpbmcgZSMjLl90eXBlIHdpdGhcbiAgICAgIHwgXCJtb3VzZW92ZXJcIiAtPiBPcHRkZWYuZ2V0IGUjIy5mcm9tRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXCJtb3VzZW91dFwiIC0+IE9wdGRlZi5nZXQgZSMjLnRvRWxlbWVudCAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIHwgXyAtPiBKcy5udWxsKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIGUjIy5jbGllbnRYICsgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdFxuICAsIGUjIy5jbGllbnRZICsgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3AgKVxuXG5sZXQgZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5wYWdlWFxuICAgIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKVxuICAgIChmdW4geCAtPiBPcHRkZWYuY2FzZSBlIyMucGFnZVkgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpIChmdW4geSAtPiB4LCB5KSlcblxubGV0IGVsZW1lbnRDbGllbnRQb3NpdGlvbiAoZSA6ICNlbGVtZW50IHQpID1cbiAgbGV0IHIgPSBlIyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICAoIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMubGVmdCkgLSBib2R5IyMuY2xpZW50TGVmdCAtIGh0bWwjIy5jbGllbnRMZWZ0XG4gICwgdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy50b3ApIC0gYm9keSMjLmNsaWVudFRvcCAtIGh0bWwjIy5jbGllbnRUb3AgKVxuXG5sZXQgZ2V0RG9jdW1lbnRTY3JvbGwgKCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnQsIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wXG5cbmxldCBidXR0b25QcmVzc2VkIChldiA6ICNtb3VzZUV2ZW50IEpzLnQpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBldiMjLndoaWNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggZXYjIy5idXR0b24gd2l0aFxuICAgICAgfCAxIC0+IExlZnRfYnV0dG9uXG4gICAgICB8IDIgLT4gUmlnaHRfYnV0dG9uXG4gICAgICB8IDQgLT4gTWlkZGxlX2J1dHRvblxuICAgICAgfCBfIC0+IE5vX2J1dHRvbilcbiAgICAoZnVuIHggLT4geClcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG4gICAgP2NhcHR1cmVcbiAgICA/b25jZVxuICAgID9wYXNzaXZlXG4gICAgZVxuICAgIEV2ZW50LndoZWVsXG4gICAgKGhhbmRsZXIgKGZ1biAoZSA6IG1vdXNld2hlZWxFdmVudCB0KSAtPlxuICAgICAgICAgbGV0IGR4ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFYIChmdW4gKCkgLT4gMCkgLyA0MCBpblxuICAgICAgICAgbGV0IGR5ID0gLU9wdGRlZi5nZXQgZSMjLndoZWVsRGVsdGFZIChmdW4gKCkgLT4gZSMjLndoZWVsRGVsdGEpIC8gNDAgaW5cbiAgICAgICAgIGggKGUgOj4gbW91c2VFdmVudCB0KSB+ZHggfmR5KSlcblxubGV0IGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIGUgaCBjYXB0ID1cbiAgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyB+Y2FwdHVyZTpjYXB0IGUgaFxuXG4oKioqKiopXG5cbm1vZHVsZSBLZXlib2FyZF9jb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBVbmlkZW50aWZpZWRcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IEtleUFcbiAgICB8IEtleUJcbiAgICB8IEtleUNcbiAgICB8IEtleURcbiAgICB8IEtleUVcbiAgICB8IEtleUZcbiAgICB8IEtleUdcbiAgICB8IEtleUhcbiAgICB8IEtleUlcbiAgICB8IEtleUpcbiAgICB8IEtleUtcbiAgICB8IEtleUxcbiAgICB8IEtleU1cbiAgICB8IEtleU5cbiAgICB8IEtleU9cbiAgICB8IEtleVBcbiAgICB8IEtleVFcbiAgICB8IEtleVJcbiAgICB8IEtleVNcbiAgICB8IEtleVRcbiAgICB8IEtleVVcbiAgICB8IEtleVZcbiAgICB8IEtleVdcbiAgICB8IEtleVhcbiAgICB8IEtleVlcbiAgICB8IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IERpZ2l0MFxuICAgIHwgRGlnaXQxXG4gICAgfCBEaWdpdDJcbiAgICB8IERpZ2l0M1xuICAgIHwgRGlnaXQ0XG4gICAgfCBEaWdpdDVcbiAgICB8IERpZ2l0NlxuICAgIHwgRGlnaXQ3XG4gICAgfCBEaWdpdDhcbiAgICB8IERpZ2l0OVxuICAgIHwgTWludXNcbiAgICB8IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgVGFiXG4gICAgfCBFbnRlclxuICAgIHwgU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBFc2NhcGVcbiAgICB8IEJhY2tzcGFjZVxuICAgIHwgSW5zZXJ0XG4gICAgfCBEZWxldGVcbiAgICB8IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IEJyYWNrZXRMZWZ0XG4gICAgfCBCcmFja2V0UmlnaHRcbiAgICB8IFNlbWljb2xvblxuICAgIHwgUXVvdGVcbiAgICB8IEJhY2txdW90ZVxuICAgIHwgQmFja3NsYXNoXG4gICAgfCBDb21tYVxuICAgIHwgUGVyaW9kXG4gICAgfCBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IEYxXG4gICAgfCBGMlxuICAgIHwgRjNcbiAgICB8IEY0XG4gICAgfCBGNVxuICAgIHwgRjZcbiAgICB8IEY3XG4gICAgfCBGOFxuICAgIHwgRjlcbiAgICB8IEYxMFxuICAgIHwgRjExXG4gICAgfCBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgTnVtcGFkMFxuICAgIHwgTnVtcGFkMVxuICAgIHwgTnVtcGFkMlxuICAgIHwgTnVtcGFkM1xuICAgIHwgTnVtcGFkNFxuICAgIHwgTnVtcGFkNVxuICAgIHwgTnVtcGFkNlxuICAgIHwgTnVtcGFkN1xuICAgIHwgTnVtcGFkOFxuICAgIHwgTnVtcGFkOVxuICAgIHwgTnVtcGFkTXVsdGlwbHlcbiAgICB8IE51bXBhZFN1YnRyYWN0XG4gICAgfCBOdW1wYWRBZGRcbiAgICB8IE51bXBhZERlY2ltYWxcbiAgICB8IE51bXBhZEVxdWFsXG4gICAgfCBOdW1wYWRFbnRlclxuICAgIHwgTnVtcGFkRGl2aWRlXG4gICAgfCBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgQ29udHJvbExlZnRcbiAgICB8IENvbnRyb2xSaWdodFxuICAgIHwgTWV0YUxlZnRcbiAgICB8IE1ldGFSaWdodFxuICAgIHwgU2hpZnRMZWZ0XG4gICAgfCBTaGlmdFJpZ2h0XG4gICAgfCBBbHRMZWZ0XG4gICAgfCBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IEFycm93TGVmdFxuICAgIHwgQXJyb3dSaWdodFxuICAgIHwgQXJyb3dVcFxuICAgIHwgQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgUGFnZVVwXG4gICAgfCBQYWdlRG93blxuICAgIHwgSG9tZVxuICAgIHwgRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFZvbHVtZU11dGVcbiAgICB8IFZvbHVtZURvd25cbiAgICB8IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgTWVkaWFUcmFja05leHRcbiAgICB8IE1lZGlhUGxheVBhdXNlXG4gICAgfCBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IENvbnRleHRNZW51XG4gICAgfCBCcm93c2VyU2VhcmNoXG4gICAgfCBCcm93c2VySG9tZVxuICAgIHwgQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgQnJvd3NlclJlZnJlc2hcbiAgICB8IEJyb3dzZXJTdG9wXG4gICAgfCBCcm93c2VyRm9yd2FyZFxuICAgIHwgQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBPU0xlZnRcbiAgICB8IE9TUmlnaHRcbiAgICB8IFNjcm9sbExvY2tcbiAgICB8IFByaW50U2NyZWVuXG4gICAgfCBJbnRsQmFja3NsYXNoXG4gICAgfCBJbnRsWWVuXG4gICAgfCBQYXVzZVxuXG4gIGxldCB0cnlfY29kZSB2ID1cbiAgICBtYXRjaCBKcy50b19zdHJpbmcgdiB3aXRoXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBcIktleUFcIiAtPiBLZXlBXG4gICAgfCBcIktleUJcIiAtPiBLZXlCXG4gICAgfCBcIktleUNcIiAtPiBLZXlDXG4gICAgfCBcIktleURcIiAtPiBLZXlEXG4gICAgfCBcIktleUVcIiAtPiBLZXlFXG4gICAgfCBcIktleUZcIiAtPiBLZXlGXG4gICAgfCBcIktleUdcIiAtPiBLZXlHXG4gICAgfCBcIktleUhcIiAtPiBLZXlIXG4gICAgfCBcIktleUlcIiAtPiBLZXlJXG4gICAgfCBcIktleUpcIiAtPiBLZXlKXG4gICAgfCBcIktleUtcIiAtPiBLZXlLXG4gICAgfCBcIktleUxcIiAtPiBLZXlMXG4gICAgfCBcIktleU1cIiAtPiBLZXlNXG4gICAgfCBcIktleU5cIiAtPiBLZXlOXG4gICAgfCBcIktleU9cIiAtPiBLZXlPXG4gICAgfCBcIktleVBcIiAtPiBLZXlQXG4gICAgfCBcIktleVFcIiAtPiBLZXlRXG4gICAgfCBcIktleVJcIiAtPiBLZXlSXG4gICAgfCBcIktleVNcIiAtPiBLZXlTXG4gICAgfCBcIktleVRcIiAtPiBLZXlUXG4gICAgfCBcIktleVVcIiAtPiBLZXlVXG4gICAgfCBcIktleVZcIiAtPiBLZXlWXG4gICAgfCBcIktleVdcIiAtPiBLZXlXXG4gICAgfCBcIktleVhcIiAtPiBLZXlYXG4gICAgfCBcIktleVlcIiAtPiBLZXlZXG4gICAgfCBcIktleVpcIiAtPiBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBcIkRpZ2l0MFwiIC0+IERpZ2l0MFxuICAgIHwgXCJEaWdpdDFcIiAtPiBEaWdpdDFcbiAgICB8IFwiRGlnaXQyXCIgLT4gRGlnaXQyXG4gICAgfCBcIkRpZ2l0M1wiIC0+IERpZ2l0M1xuICAgIHwgXCJEaWdpdDRcIiAtPiBEaWdpdDRcbiAgICB8IFwiRGlnaXQ1XCIgLT4gRGlnaXQ1XG4gICAgfCBcIkRpZ2l0NlwiIC0+IERpZ2l0NlxuICAgIHwgXCJEaWdpdDdcIiAtPiBEaWdpdDdcbiAgICB8IFwiRGlnaXQ4XCIgLT4gRGlnaXQ4XG4gICAgfCBcIkRpZ2l0OVwiIC0+IERpZ2l0OVxuICAgIHwgXCJNaW51c1wiIC0+IE1pbnVzXG4gICAgfCBcIkVxdWFsXCIgLT4gRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBcIlRhYlwiIC0+IFRhYlxuICAgIHwgXCJFbnRlclwiIC0+IEVudGVyXG4gICAgfCBcIlNwYWNlXCIgLT4gU3BhY2VcbiAgICAoKiBFZGl0aW5nICopXG4gICAgfCBcIkVzY2FwZVwiIC0+IEVzY2FwZVxuICAgIHwgXCJCYWNrc3BhY2VcIiAtPiBCYWNrc3BhY2VcbiAgICB8IFwiSW5zZXJ0XCIgLT4gSW5zZXJ0XG4gICAgfCBcIkRlbGV0ZVwiIC0+IERlbGV0ZVxuICAgIHwgXCJDYXBzTG9ja1wiIC0+IENhcHNMb2NrXG4gICAgKCogTWlzYyBQcmludGFibGUgKilcbiAgICB8IFwiQnJhY2tldExlZnRcIiAtPiBCcmFja2V0TGVmdFxuICAgIHwgXCJCcmFja2V0UmlnaHRcIiAtPiBCcmFja2V0UmlnaHRcbiAgICB8IFwiU2VtaWNvbG9uXCIgLT4gU2VtaWNvbG9uXG4gICAgfCBcIlF1b3RlXCIgLT4gUXVvdGVcbiAgICB8IFwiQmFja3F1b3RlXCIgLT4gQmFja3F1b3RlXG4gICAgfCBcIkJhY2tzbGFzaFwiIC0+IEJhY2tzbGFzaFxuICAgIHwgXCJDb21tYVwiIC0+IENvbW1hXG4gICAgfCBcIlBlcmlvZFwiIC0+IFBlcmlvZFxuICAgIHwgXCJTbGFzaFwiIC0+IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgXCJGMVwiIC0+IEYxXG4gICAgfCBcIkYyXCIgLT4gRjJcbiAgICB8IFwiRjNcIiAtPiBGM1xuICAgIHwgXCJGNFwiIC0+IEY0XG4gICAgfCBcIkY1XCIgLT4gRjVcbiAgICB8IFwiRjZcIiAtPiBGNlxuICAgIHwgXCJGN1wiIC0+IEY3XG4gICAgfCBcIkY4XCIgLT4gRjhcbiAgICB8IFwiRjlcIiAtPiBGOVxuICAgIHwgXCJGMTBcIiAtPiBGMTBcbiAgICB8IFwiRjExXCIgLT4gRjExXG4gICAgfCBcIkYxMlwiIC0+IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBcIk51bXBhZDBcIiAtPiBOdW1wYWQwXG4gICAgfCBcIk51bXBhZDFcIiAtPiBOdW1wYWQxXG4gICAgfCBcIk51bXBhZDJcIiAtPiBOdW1wYWQyXG4gICAgfCBcIk51bXBhZDNcIiAtPiBOdW1wYWQzXG4gICAgfCBcIk51bXBhZDRcIiAtPiBOdW1wYWQ0XG4gICAgfCBcIk51bXBhZDVcIiAtPiBOdW1wYWQ1XG4gICAgfCBcIk51bXBhZDZcIiAtPiBOdW1wYWQ2XG4gICAgfCBcIk51bXBhZDdcIiAtPiBOdW1wYWQ3XG4gICAgfCBcIk51bXBhZDhcIiAtPiBOdW1wYWQ4XG4gICAgfCBcIk51bXBhZDlcIiAtPiBOdW1wYWQ5XG4gICAgfCBcIk51bXBhZE11bHRpcGx5XCIgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IFwiTnVtcGFkU3VidHJhY3RcIiAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgXCJOdW1wYWRBZGRcIiAtPiBOdW1wYWRBZGRcbiAgICB8IFwiTnVtcGFkRGVjaW1hbFwiIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IFwiTnVtcGFkRXF1YWxcIiAtPiBOdW1wYWRFcXVhbFxuICAgIHwgXCJOdW1wYWRFbnRlclwiIC0+IE51bXBhZEVudGVyXG4gICAgfCBcIk51bXBhZERpdmlkZVwiIC0+IE51bXBhZERpdmlkZVxuICAgIHwgXCJOdW1Mb2NrXCIgLT4gTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IFwiQ29udHJvbExlZnRcIiAtPiBDb250cm9sTGVmdFxuICAgIHwgXCJDb250cm9sUmlnaHRcIiAtPiBDb250cm9sUmlnaHRcbiAgICB8IFwiTWV0YUxlZnRcIiAtPiBNZXRhTGVmdFxuICAgIHwgXCJNZXRhUmlnaHRcIiAtPiBNZXRhUmlnaHRcbiAgICB8IFwiU2hpZnRMZWZ0XCIgLT4gU2hpZnRMZWZ0XG4gICAgfCBcIlNoaWZ0UmlnaHRcIiAtPiBTaGlmdFJpZ2h0XG4gICAgfCBcIkFsdExlZnRcIiAtPiBBbHRMZWZ0XG4gICAgfCBcIkFsdFJpZ2h0XCIgLT4gQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBcIkFycm93TGVmdFwiIC0+IEFycm93TGVmdFxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgLT4gQXJyb3dSaWdodFxuICAgIHwgXCJBcnJvd1VwXCIgLT4gQXJyb3dVcFxuICAgIHwgXCJBcnJvd0Rvd25cIiAtPiBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBcIlBhZ2VVcFwiIC0+IFBhZ2VVcFxuICAgIHwgXCJQYWdlRG93blwiIC0+IFBhZ2VEb3duXG4gICAgfCBcIkhvbWVcIiAtPiBIb21lXG4gICAgfCBcIkVuZFwiIC0+IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBcIlZvbHVtZU11dGVcIiAtPiBWb2x1bWVNdXRlXG4gICAgfCBcIlZvbHVtZURvd25cIiAtPiBWb2x1bWVEb3duXG4gICAgfCBcIlZvbHVtZVVwXCIgLT4gVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgXCJNZWRpYVRyYWNrUHJldmlvdXNcIiAtPiBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IFwiTWVkaWFUcmFja05leHRcIiAtPiBNZWRpYVRyYWNrTmV4dFxuICAgIHwgXCJNZWRpYVBsYXlQYXVzZVwiIC0+IE1lZGlhUGxheVBhdXNlXG4gICAgfCBcIk1lZGlhU3RvcFwiIC0+IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgXCJDb250ZXh0TWVudVwiIC0+IENvbnRleHRNZW51XG4gICAgfCBcIkJyb3dzZXJTZWFyY2hcIiAtPiBCcm93c2VyU2VhcmNoXG4gICAgfCBcIkJyb3dzZXJIb21lXCIgLT4gQnJvd3NlckhvbWVcbiAgICB8IFwiQnJvd3NlckZhdm9yaXRlc1wiIC0+IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IFwiQnJvd3NlclJlZnJlc2hcIiAtPiBCcm93c2VyUmVmcmVzaFxuICAgIHwgXCJCcm93c2VyU3RvcFwiIC0+IEJyb3dzZXJTdG9wXG4gICAgfCBcIkJyb3dzZXJGb3J3YXJkXCIgLT4gQnJvd3NlckZvcndhcmRcbiAgICB8IFwiQnJvd3NlckJhY2tcIiAtPiBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IFwiT1NMZWZ0XCIgLT4gT1NMZWZ0XG4gICAgfCBcIk9TUmlnaHRcIiAtPiBPU1JpZ2h0XG4gICAgfCBcIlNjcm9sbExvY2tcIiAtPiBTY3JvbGxMb2NrXG4gICAgfCBcIlByaW50U2NyZWVuXCIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IFwiSW50bEJhY2tzbGFzaFwiIC0+IEludGxCYWNrc2xhc2hcbiAgICB8IFwiSW50bFllblwiIC0+IEludGxZZW5cbiAgICB8IFwiUGF1c2VcIiAtPiBQYXVzZVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX2xlZnQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRMZWZ0XG4gICAgfCAxNyAtPiBDb250cm9sTGVmdFxuICAgIHwgMTggLT4gQWx0TGVmdFxuICAgIHwgOTEgLT4gTWV0YUxlZnRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9yaWdodCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdFJpZ2h0XG4gICAgfCAxNyAtPiBDb250cm9sUmlnaHRcbiAgICB8IDE4IC0+IEFsdFJpZ2h0XG4gICAgfCA5MSAtPiBNZXRhUmlnaHRcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9udW1wYWQgPSBmdW5jdGlvblxuICAgIHwgNDYgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgNDUgLT4gTnVtcGFkMFxuICAgIHwgMzUgLT4gTnVtcGFkMVxuICAgIHwgNDAgLT4gTnVtcGFkMlxuICAgIHwgMzQgLT4gTnVtcGFkM1xuICAgIHwgMzcgLT4gTnVtcGFkNFxuICAgIHwgMTIgLT4gTnVtcGFkNVxuICAgIHwgMzkgLT4gTnVtcGFkNlxuICAgIHwgMzYgLT4gTnVtcGFkN1xuICAgIHwgMzggLT4gTnVtcGFkOFxuICAgIHwgMzMgLT4gTnVtcGFkOVxuICAgIHwgMTMgLT4gTnVtcGFkRW50ZXJcbiAgICB8IDExMSAtPiBOdW1wYWREaXZpZGVcbiAgICB8IDEwNyAtPiBOdW1wYWRBZGRcbiAgICB8IDEwOSAtPiBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgMTA2IC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCAxMTAgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgOTYgLT4gTnVtcGFkMFxuICAgIHwgOTcgLT4gTnVtcGFkMVxuICAgIHwgOTggLT4gTnVtcGFkMlxuICAgIHwgOTkgLT4gTnVtcGFkM1xuICAgIHwgMTAwIC0+IE51bXBhZDRcbiAgICB8IDEwMSAtPiBOdW1wYWQ1XG4gICAgfCAxMDIgLT4gTnVtcGFkNlxuICAgIHwgMTAzIC0+IE51bXBhZDdcbiAgICB8IDEwNCAtPiBOdW1wYWQ4XG4gICAgfCAxMDUgLT4gTnVtcGFkOVxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX25vcm1hbCA9IGZ1bmN0aW9uXG4gICAgfCAyNyAtPiBFc2NhcGVcbiAgICB8IDExMiAtPiBGMVxuICAgIHwgMTEzIC0+IEYyXG4gICAgfCAxMTQgLT4gRjNcbiAgICB8IDExNSAtPiBGNFxuICAgIHwgMTE2IC0+IEY1XG4gICAgfCAxMTcgLT4gRjZcbiAgICB8IDExOCAtPiBGN1xuICAgIHwgMTE5IC0+IEY4XG4gICAgfCAxMjAgLT4gRjlcbiAgICB8IDEyMSAtPiBGMTBcbiAgICB8IDEyMiAtPiBGMTFcbiAgICB8IDEyMyAtPiBGMTJcbiAgICB8IDQyIC0+IFByaW50U2NyZWVuXG4gICAgfCAxNDUgLT4gU2Nyb2xsTG9ja1xuICAgIHwgMTkgLT4gUGF1c2VcbiAgICB8IDE5MiAtPiBCYWNrcXVvdGVcbiAgICB8IDQ5IC0+IERpZ2l0MVxuICAgIHwgNTAgLT4gRGlnaXQyXG4gICAgfCA1MSAtPiBEaWdpdDNcbiAgICB8IDUyIC0+IERpZ2l0NFxuICAgIHwgNTMgLT4gRGlnaXQ1XG4gICAgfCA1NCAtPiBEaWdpdDZcbiAgICB8IDU1IC0+IERpZ2l0N1xuICAgIHwgNTYgLT4gRGlnaXQ4XG4gICAgfCA1NyAtPiBEaWdpdDlcbiAgICB8IDQ4IC0+IERpZ2l0MFxuICAgIHwgMTg5IC0+IE1pbnVzXG4gICAgfCAxODcgLT4gRXF1YWxcbiAgICB8IDggLT4gQmFja3NwYWNlXG4gICAgfCA5IC0+IFRhYlxuICAgIHwgODEgLT4gS2V5UVxuICAgIHwgODcgLT4gS2V5V1xuICAgIHwgNjkgLT4gS2V5RVxuICAgIHwgODIgLT4gS2V5UlxuICAgIHwgODQgLT4gS2V5VFxuICAgIHwgODkgLT4gS2V5WVxuICAgIHwgODUgLT4gS2V5VVxuICAgIHwgNzMgLT4gS2V5SVxuICAgIHwgNzkgLT4gS2V5T1xuICAgIHwgODAgLT4gS2V5UFxuICAgIHwgMjE5IC0+IEJyYWNrZXRMZWZ0XG4gICAgfCAyMjEgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCAyMjAgLT4gQmFja3NsYXNoXG4gICAgfCAyMCAtPiBDYXBzTG9ja1xuICAgIHwgNjUgLT4gS2V5QVxuICAgIHwgODMgLT4gS2V5U1xuICAgIHwgNjggLT4gS2V5RFxuICAgIHwgNzAgLT4gS2V5RlxuICAgIHwgNzEgLT4gS2V5R1xuICAgIHwgNzIgLT4gS2V5SFxuICAgIHwgNzQgLT4gS2V5SlxuICAgIHwgNzUgLT4gS2V5S1xuICAgIHwgNzYgLT4gS2V5TFxuICAgIHwgMTg2IC0+IFNlbWljb2xvblxuICAgIHwgMjIyIC0+IFF1b3RlXG4gICAgfCAxMyAtPiBFbnRlclxuICAgIHwgOTAgLT4gS2V5WlxuICAgIHwgODggLT4gS2V5WFxuICAgIHwgNjcgLT4gS2V5Q1xuICAgIHwgODYgLT4gS2V5VlxuICAgIHwgNjYgLT4gS2V5QlxuICAgIHwgNzggLT4gS2V5TlxuICAgIHwgNzcgLT4gS2V5TVxuICAgIHwgMTg4IC0+IENvbW1hXG4gICAgfCAxOTAgLT4gUGVyaW9kXG4gICAgfCAxOTEgLT4gU2xhc2hcbiAgICB8IDMyIC0+IFNwYWNlXG4gICAgfCA5MyAtPiBDb250ZXh0TWVudVxuICAgIHwgNDUgLT4gSW5zZXJ0XG4gICAgfCAzNiAtPiBIb21lXG4gICAgfCAzMyAtPiBQYWdlVXBcbiAgICB8IDQ2IC0+IERlbGV0ZVxuICAgIHwgMzUgLT4gRW5kXG4gICAgfCAzNCAtPiBQYWdlRG93blxuICAgIHwgMzcgLT4gQXJyb3dMZWZ0XG4gICAgfCA0MCAtPiBBcnJvd0Rvd25cbiAgICB8IDM5IC0+IEFycm93UmlnaHRcbiAgICB8IDM4IC0+IEFycm93VXBcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IG1ha2VfdW5pZGVudGlmaWVkIF8gPSBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gT3B0ZGVmLmNhc2UgdmFsdWUgbWFrZV91bmlkZW50aWZpZWQgZlxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IHJ1bl9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IGYgdmFsdWVcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBnZXRfa2V5X2NvZGUgZXZ0ID0gZXZ0IyMua2V5Q29kZVxuXG4gIGxldCB0cnlfa2V5X2xvY2F0aW9uIGV2dCA9XG4gICAgbWF0Y2ggZXZ0IyMubG9jYXRpb24gd2l0aFxuICAgIHwgMSAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX2xlZnRcbiAgICB8IDIgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9yaWdodFxuICAgIHwgMyAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX251bXBhZFxuICAgIHwgXyAtPiBtYWtlX3VuaWRlbnRpZmllZFxuXG4gIGxldCAoIHw+ICkgeCBmID0gZiB4XG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgVW5pZGVudGlmaWVkXG4gICAgfD4gdHJ5X25leHQgZXZ0IyMuY29kZSB0cnlfY29kZVxuICAgIHw+IHRyeV9rZXlfbG9jYXRpb24gZXZ0XG4gICAgfD4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9ub3JtYWxcblxuICBsZXQgb2Zfa2V5X2NvZGUgPSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5lbmRcblxubW9kdWxlIEtleWJvYXJkX2tleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBVY2hhci50IG9wdGlvblxuXG4gIGxldCBjaGFyX29mX2ludCB2YWx1ZSA9XG4gICAgaWYgMCA8IHZhbHVlIHRoZW4gdHJ5IFNvbWUgKFVjaGFyLm9mX2ludCB2YWx1ZSkgd2l0aCBfIC0+IE5vbmUgZWxzZSBOb25lXG5cbiAgbGV0IGVtcHR5X3N0cmluZyBfID0gSnMuc3RyaW5nIFwiXCJcblxuICBsZXQgbm9uZSBfID0gTm9uZVxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIGxldCBrZXkgPSBPcHRkZWYuZ2V0IGV2dCMjLmtleSBlbXB0eV9zdHJpbmcgaW5cbiAgICBtYXRjaCBrZXkjIy5sZW5ndGggd2l0aFxuICAgIHwgMCAtPiBPcHRkZWYuY2FzZSBldnQjIy5jaGFyQ29kZSBub25lIGNoYXJfb2ZfaW50XG4gICAgfCAxIC0+IGNoYXJfb2ZfaW50IChpbnRfb2ZfZmxvYXQgKEpzLnRvX2Zsb2F0IChrZXkjI2NoYXJDb2RlQXQgMCkpKVxuICAgIHwgXyAtPiBOb25lXG5lbmRcblxuKCoqKioqKVxuXG5sZXQgZWxlbWVudCA6ICNEb20uZWxlbWVudCB0IC0+IGVsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2VcblxudHlwZSB0YWdnZWRFbGVtZW50ID1cbiAgfCBBIG9mIGFuY2hvckVsZW1lbnQgdFxuICB8IEFyZWEgb2YgYXJlYUVsZW1lbnQgdFxuICB8IEF1ZGlvIG9mIGF1ZGlvRWxlbWVudCB0XG4gIHwgQmFzZSBvZiBiYXNlRWxlbWVudCB0XG4gIHwgQmxvY2txdW90ZSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IEJvZHkgb2YgYm9keUVsZW1lbnQgdFxuICB8IEJyIG9mIGJyRWxlbWVudCB0XG4gIHwgQnV0dG9uIG9mIGJ1dHRvbkVsZW1lbnQgdFxuICB8IENhbnZhcyBvZiBjYW52YXNFbGVtZW50IHRcbiAgfCBDYXB0aW9uIG9mIHRhYmxlQ2FwdGlvbkVsZW1lbnQgdFxuICB8IENvbCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IENvbGdyb3VwIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgRGVsIG9mIG1vZEVsZW1lbnQgdFxuICB8IERpYWxvZyBvZiBkaWFsb2dFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYWdyYXBoRWxlbWVudCB0XG4gIHwgUGFyYW0gb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQcmUgb2YgcHJlRWxlbWVudCB0XG4gIHwgUSBvZiBxdW90ZUVsZW1lbnQgdFxuICB8IFNjcmlwdCBvZiBzY3JpcHRFbGVtZW50IHRcbiAgfCBTZWxlY3Qgb2Ygc2VsZWN0RWxlbWVudCB0XG4gIHwgU3R5bGUgb2Ygc3R5bGVFbGVtZW50IHRcbiAgfCBUYWJsZSBvZiB0YWJsZUVsZW1lbnQgdFxuICB8IFRib2R5IG9mIHRhYmxlU2VjdGlvbkVsZW1lbnQgdFxuICB8IFRkIG9mIHRhYmxlQ2VsbEVsZW1lbnQgdFxuICB8IFRleHRhcmVhIG9mIHRleHRBcmVhRWxlbWVudCB0XG4gIHwgVGZvb3Qgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGggb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGhlYWQgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGl0bGUgb2YgdGl0bGVFbGVtZW50IHRcbiAgfCBUciBvZiB0YWJsZVJvd0VsZW1lbnQgdFxuICB8IFVsIG9mIHVMaXN0RWxlbWVudCB0XG4gIHwgVmlkZW8gb2YgdmlkZW9FbGVtZW50IHRcbiAgfCBPdGhlciBvZiBlbGVtZW50IHRcblxubGV0IG90aGVyIGUgPSBPdGhlciAoZSA6ICNlbGVtZW50IHQgOj4gZWxlbWVudCB0KVxuXG5sZXQgdGFnZ2VkIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgdGFnID0gSnMudG9fYnl0ZXN0cmluZyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwXG4gIHRoZW4gb3RoZXIgZVxuICBlbHNlXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgdGFnIDAgd2l0aFxuICAgIHwgJ2EnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImFcIiAtPiBBIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhcmVhXCIgLT4gQXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYXVkaW9cIiAtPiBBdWRpbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdiJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJiYXNlXCIgLT4gQmFzZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYmxvY2txdW90ZVwiIC0+IEJsb2NrcXVvdGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJvZHlcIiAtPiBCb2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJiclwiIC0+IEJyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJidXR0b25cIiAtPiBCdXR0b24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnYycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiY2FudmFzXCIgLT4gQ2FudmFzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjYXB0aW9uXCIgLT4gQ2FwdGlvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiY29sXCIgLT4gQ29sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xncm91cFwiIC0+IENvbGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2QnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImRlbFwiIC0+IERlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZGl2XCIgLT4gRGl2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkbFwiIC0+IERsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImVtYmVkXCIgLT4gRW1iZWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZmllbGRzZXRcIiAtPiBGaWVsZHNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZm9ybVwiIC0+IEZvcm0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lc2V0XCIgLT4gRnJhbWVzZXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImZyYW1lXCIgLT4gRnJhbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaDFcIiAtPiBIMSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDJcIiAtPiBIMiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDNcIiAtPiBIMyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDRcIiAtPiBINCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDVcIiAtPiBINSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaDZcIiAtPiBINiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaGVhZFwiIC0+IEhlYWQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImhyXCIgLT4gSHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImh0bWxcIiAtPiBIdG1sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2knIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImlmcmFtZVwiIC0+IElmcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaW1nXCIgLT4gSW1nIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnB1dFwiIC0+IElucHV0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbnNcIiAtPiBJbnMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwibGFiZWxcIiAtPiBMYWJlbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibGVnZW5kXCIgLT4gTGVnZW5kIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaVwiIC0+IExpIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsaW5rXCIgLT4gTGluayAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdtJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJtYXBcIiAtPiBNYXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcIm1ldGFcIiAtPiBNZXRhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ28nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm9iamVjdFwiIC0+IE9iamVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib2xcIiAtPiBPbCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0Z3JvdXBcIiAtPiBPcHRncm91cCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwib3B0aW9uXCIgLT4gT3B0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3AnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInBcIiAtPiBQIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwYXJhbVwiIC0+IFBhcmFtIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJwcmVcIiAtPiBQcmUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicVwiIC0+IFEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwic2NyaXB0XCIgLT4gU2NyaXB0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJzZWxlY3RcIiAtPiBTZWxlY3QgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInN0eWxlXCIgLT4gU3R5bGUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidGFibGVcIiAtPiBUYWJsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGJvZHlcIiAtPiBUYm9keSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGRcIiAtPiBUZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGV4dGFyZWFcIiAtPiBUZXh0YXJlYSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGZvb3RcIiAtPiBUZm9vdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhcIiAtPiBUaCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGhlYWRcIiAtPiBUaGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidGl0bGVcIiAtPiBUaXRsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwidHJcIiAtPiBUciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd1JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ1bFwiIC0+IFVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3YnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInZpZGVvXCIgLT4gVmlkZW8gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCBfIC0+IG90aGVyIGVcblxubGV0IG9wdF90YWdnZWQgZSA9IE9wdC5jYXNlIGUgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGUgLT4gU29tZSAodGFnZ2VkIGUpKVxuXG50eXBlIHRhZ2dlZEV2ZW50ID1cbiAgfCBNb3VzZUV2ZW50IG9mIG1vdXNlRXZlbnQgdFxuICB8IEtleWJvYXJkRXZlbnQgb2Yga2V5Ym9hcmRFdmVudCB0XG4gIHwgTWVzc2FnZUV2ZW50IG9mIG1lc3NhZ2VFdmVudCB0XG4gIHwgTW91c2V3aGVlbEV2ZW50IG9mIG1vdXNld2hlZWxFdmVudCB0XG4gIHwgTW91c2VTY3JvbGxFdmVudCBvZiBtb3VzZVNjcm9sbEV2ZW50IHRcbiAgfCBQb3BTdGF0ZUV2ZW50IG9mIHBvcFN0YXRlRXZlbnQgdFxuICB8IE90aGVyRXZlbnQgb2YgZXZlbnQgdFxuXG5sZXQgdGFnZ2VkRXZlbnQgKGV2IDogI2V2ZW50IEpzLnQpID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoQ29lcmNlVG8ubW91c2VFdmVudCBldilcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoQ29lcmNlVG8ua2V5Ym9hcmRFdmVudCBldilcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoQ29lcmNlVG8ud2hlZWxFdmVudCBldilcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubW91c2VTY3JvbGxFdmVudCBldilcbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ucG9wU3RhdGVFdmVudCBldilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29lcmNlVG8ubWVzc2FnZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiBPdGhlckV2ZW50IChldiA6PiBldmVudCB0KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTWVzc2FnZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBQb3BTdGF0ZUV2ZW50IGV2KSlcbiAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNlU2Nyb2xsRXZlbnQgZXYpKVxuICAgICAgICAgICAgKGZ1biBldiAtPiBNb3VzZXdoZWVsRXZlbnQgZXYpKVxuICAgICAgICAoZnVuIGV2IC0+IEtleWJvYXJkRXZlbnQgZXYpKVxuICAgIChmdW4gZXYgLT4gTW91c2VFdmVudCBldilcblxubGV0IG9wdF90YWdnZWRFdmVudCBldiA9IE9wdC5jYXNlIGV2IChmdW4gKCkgLT4gTm9uZSkgKGZ1biBldiAtPiBTb21lICh0YWdnZWRFdmVudCBldikpXG5cbmxldCBzdG9wUHJvcGFnYXRpb24gZXYgPVxuICBsZXQgZSA9IEpzLlVuc2FmZS5jb2VyY2UgZXYgaW5cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMuc3RvcFByb3BhZ2F0aW9uXG4gICAgKGZ1biAoKSAtPiBlIyMuY2FuY2VsQnViYmxlIDo9IEpzLl90cnVlKVxuICAgIChmdW4gXyAtPiBlIyNfc3RvcFByb3BhZ2F0aW9uKVxuXG5sZXQgX3JlcXVlc3RBbmltYXRpb25GcmFtZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIC0+IHVuaXQgPVxuICBKcy5VbnNhZmUucHVyZV9leHByIChmdW4gXyAtPlxuICAgICAgbGV0IHcgPSBKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyBpblxuICAgICAgbGV0IGwgPVxuICAgICAgICBbIHcjIy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHJlcSA9IExpc3QuZmluZCAoZnVuIGMgLT4gSnMuT3B0ZGVmLnRlc3QgYykgbCBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIHJlcSBbfCBKcy5VbnNhZmUuaW5qZWN0IGNhbGxiYWNrIHxdXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgbm93ICgpID0gSnMudG9fZmxvYXQgKG5ldyVqcyBKcy5kYXRlX25vdykjI2dldFRpbWUgaW5cbiAgICAgICAgbGV0IGxhc3QgPSByZWYgKG5vdyAoKSkgaW5cbiAgICAgICAgZnVuIGNhbGxiYWNrIC0+XG4gICAgICAgICAgbGV0IHQgPSBub3cgKCkgaW5cbiAgICAgICAgICBsZXQgZHQgPSAhbGFzdCArLiAoMTAwMC4gLy4gNjAuKSAtLiB0IGluXG4gICAgICAgICAgbGV0IGR0ID0gaWYgUG9seS4oZHQgPCAwLikgdGhlbiAwLiBlbHNlIGR0IGluXG4gICAgICAgICAgbGFzdCA6PSB0O1xuICAgICAgICAgIGlnbm9yZSAod2luZG93IyNzZXRUaW1lb3V0IGNhbGxiYWNrIChKcy5mbG9hdCBkdCkpKVxuXG4oKioqKilcblxubGV0IGhhc1B1c2hTdGF0ZSAoKSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIHdpbmRvdyMjLmhpc3RvcnkpIyMucHVzaFN0YXRlXG5cbmxldCBoYXNQbGFjZWhvbGRlciAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5wbGFjZWhvbGRlclxuXG5sZXQgaGFzUmVxdWlyZWQgKCkgPVxuICBsZXQgaSA9IGNyZWF0ZUlucHV0IGRvY3VtZW50IGluXG4gIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGkpIyMucmVxdWlyZWRcblxubGV0IG92ZXJmbG93X2xpbWl0ID0gMjE0NzQ4M18wMDAuXG5cbigqIG1zICopXG5cbnR5cGUgdGltZW91dF9pZF9zYWZlID0gdGltZW91dF9pZCBvcHRpb24gcmVmXG5cbmxldCBzZXRUaW1lb3V0IGNhbGxiYWNrIGQgOiB0aW1lb3V0X2lkX3NhZmUgPVxuICBsZXQgaWQgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgZCAoKSA9XG4gICAgbGV0IHN0ZXAsIHJlbWFpbiA9XG4gICAgICBpZiBQb2x5LihkID4gb3ZlcmZsb3dfbGltaXQpIHRoZW4gb3ZlcmZsb3dfbGltaXQsIGQgLS4gb3ZlcmZsb3dfbGltaXQgZWxzZSBkLCAwLlxuICAgIGluXG4gICAgbGV0IGNiID0gaWYgUG9seS4ocmVtYWluID0gMC4pIHRoZW4gY2FsbGJhY2sgZWxzZSBsb29wIHJlbWFpbiBpblxuICAgIGlkIDo9IFNvbWUgKHdpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBjYikgKEpzLmZsb2F0IHN0ZXApKVxuICBpblxuICBsb29wIGQgKCk7XG4gIGlkXG5cbmxldCBjbGVhclRpbWVvdXQgKGlkIDogdGltZW91dF9pZF9zYWZlKSA9XG4gIG1hdGNoICFpZCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgaWQgOj0gTm9uZTtcbiAgICAgIHdpbmRvdyMjY2xlYXJUaW1lb3V0IHhcblxubGV0IGpzX2FycmF5X29mX2NvbGxlY3Rpb24gKGMgOiAjZWxlbWVudCBjb2xsZWN0aW9uIEpzLnQpIDogI2VsZW1lbnQgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgPVxuICBKcy5VbnNhZmUuKG1ldGhfY2FsbCAoanNfZXhwciBcIltdLnNsaWNlXCIpIFwiY2FsbFwiIFt8IGluamVjdCBjIHxdKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBmb3JtRGF0YSA9IG9iamVjdFxuICBtZXRob2QgYXBwZW5kIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZF9ibG9iIDoganNfc3RyaW5nIHQgLT4gRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGZvcm1EYXRhIDogZm9ybURhdGEgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbmxldCBmb3JtRGF0YV9mb3JtIDogKGZvcm1FbGVtZW50IHQgLT4gZm9ybURhdGEgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9Gb3JtRGF0YVxuXG50eXBlIGZvcm1fZWx0ID1cbiAgWyBgU3RyaW5nIG9mIGpzX3N0cmluZyB0XG4gIHwgYEZpbGUgb2YgRmlsZS5maWxlIHRcbiAgXVxuXG50eXBlIGZvcm1fY29udGVudHMgPVxuICBbIGBGaWVsZHMgb2YgKHN0cmluZyAqIGZvcm1fZWx0KSBsaXN0IHJlZlxuICB8IGBGb3JtRGF0YSBvZiBmb3JtRGF0YSB0XG4gIF1cblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgdiA6OiBxIC0+IChcbiAgICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIHFcbiAgICAgIHwgU29tZSB2JyAtPiB2JyA6OiBmaWx0ZXJfbWFwIGYgcSlcblxuY2xhc3MgdHlwZSBzdWJtaXR0YWJsZUVsZW1lbnQgPSBvYmplY3RcbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxubGV0IGhhdmVfY29udGVudCAoZWx0IDogc3VibWl0dGFibGVFbGVtZW50IHQpID1cbiAgZWx0IyMubmFtZSMjLmxlbmd0aCA+IDAgJiYgbm90IChKcy50b19ib29sIGVsdCMjLmRpc2FibGVkKVxuXG5sZXQgZ2V0X3RleHRhcmVhX3ZhbCAoZWx0IDogdGV4dEFyZWFFbGVtZW50IHQpID1cbiAgaWYgaGF2ZV9jb250ZW50IChlbHQgOj4gc3VibWl0dGFibGVFbGVtZW50IHQpXG4gIHRoZW5cbiAgICBsZXQgbmFtZSA9IHRvX3N0cmluZyBlbHQjIy5uYW1lIGluXG4gICAgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X3NlbGVjdF92YWwgKGVsdCA6IHNlbGVjdEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBpZiB0b19ib29sIGVsdCMjLm11bHRpcGxlXG4gICAgdGhlblxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBBcnJheS5pbml0IGVsdCMjLm9wdGlvbnMjIy5sZW5ndGggKGZ1biBpIC0+IE9wdC50b19vcHRpb24gKGVsdCMjLm9wdGlvbnMjI2l0ZW0gaSkpXG4gICAgICBpblxuICAgICAgZmlsdGVyX21hcFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAgIGlmIEpzLnRvX2Jvb2wgZSMjLnNlbGVjdGVkIHRoZW4gU29tZSAobmFtZSwgYFN0cmluZyBlIyMudmFsdWUpIGVsc2UgTm9uZSlcbiAgICAgICAgKEFycmF5LnRvX2xpc3Qgb3B0aW9ucylcbiAgICBlbHNlIFsgbmFtZSwgYFN0cmluZyBlbHQjIy52YWx1ZSBdXG4gIGVsc2UgW11cblxuY2xhc3MgdHlwZSBmaWxlX2lucHV0ID0gb2JqZWN0XG4gIGluaGVyaXQgaW5wdXRFbGVtZW50XG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGxlIDogYm9vbCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBnZXRfaW5wdXRfdmFsID8oZ2V0ID0gZmFsc2UpIChlbHQgOiBpbnB1dEVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBsZXQgdmFsdWUgPSBlbHQjIy52YWx1ZSBpblxuICAgIG1hdGNoIHRvX2J5dGVzdHJpbmcgZWx0IyMuX3R5cGUjI3RvTG93ZXJDYXNlIHdpdGhcbiAgICB8IFwiY2hlY2tib3hcIiB8IFwicmFkaW9cIiAtPlxuICAgICAgICBpZiB0b19ib29sIGVsdCMjLmNoZWNrZWQgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXSBlbHNlIFtdXG4gICAgfCBcInN1Ym1pdFwiIHwgXCJyZXNldFwiIC0+IFtdXG4gICAgfCBcInRleHRcIiB8IFwicGFzc3dvcmRcIiAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgIHwgXCJmaWxlXCIgLT4gKFxuICAgICAgICBpZiBnZXRcbiAgICAgICAgdGhlbiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGVsdCA6IGZpbGVfaW5wdXQgdCA9IFVuc2FmZS5jb2VyY2UgZWx0IGluXG4gICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5maWxlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIGxpc3QgLT4gKFxuICAgICAgICAgICAgICBpZiBsaXN0IyMubGVuZ3RoID0gMFxuICAgICAgICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyAoSnMuc3RyaW5nIFwiXCIpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZWx0IyMubXVsdGlwbGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBPcHQudG9fb3B0aW9uIChsaXN0IyNpdGVtIDApIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBmaWxlIC0+IFsgbmFtZSwgYEZpbGUgZmlsZSBdKVxuICAgICAgICAgICAgICAgIHwgU29tZSB0cnVlIC0+XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gZiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gU29tZSAobmFtZSwgYEZpbGUgZmlsZSkpXG4gICAgICAgICAgICAgICAgICAgICAgKEFycmF5LnRvX2xpc3QgKEFycmF5LmluaXQgbGlzdCMjLmxlbmd0aCAoZnVuIGkgLT4gbGlzdCMjaXRlbSBpKSkpKSlcbiAgICB8IF8gLT4gWyBuYW1lLCBgU3RyaW5nIHZhbHVlIF1cbiAgZWxzZSBbXVxuXG5sZXQgZ2V0X2Zvcm1fZWxlbWVudHMgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGZvcm0jIy5lbGVtZW50cyMjaXRlbSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCBhY2MgKGkgLSBpKVxuICAgICAgfCBTb21lIHggLT4gbG9vcCAoeCA6OiBhY2MpIChpIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSAoZm9ybSMjLmVsZW1lbnRzIyMubGVuZ3RoIC0gMSlcblxubGV0IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2ID1cbiAgbWF0Y2ggdGFnZ2VkIHYgd2l0aFxuICB8IFNlbGVjdCB2IC0+IGdldF9zZWxlY3RfdmFsIHZcbiAgfCBJbnB1dCB2IC0+IGdldF9pbnB1dF92YWwgP2dldCB2XG4gIHwgVGV4dGFyZWEgdiAtPiBnZXRfdGV4dGFyZWFfdmFsIHZcbiAgfCBfIC0+IFtdXG5cbmxldCBmb3JtX2VsZW1lbnRzID9nZXQgKGZvcm0gOiBmb3JtRWxlbWVudCB0KSA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biB2IC0+IGdldF9lbGVtZW50X2NvbnRlbnQgP2dldCB2KSAoZ2V0X2Zvcm1fZWxlbWVudHMgZm9ybSkpXG5cbmxldCBhcHBlbmQgKGZvcm1fY29udGVudHMgOiBmb3JtX2NvbnRlbnRzKSAoZm9ybV9lbHQgOiBzdHJpbmcgKiBmb3JtX2VsdCkgPVxuICBtYXRjaCBmb3JtX2NvbnRlbnRzIHdpdGhcbiAgfCBgRmllbGRzIGxpc3QgLT4gbGlzdCA6PSBmb3JtX2VsdCA6OiAhbGlzdFxuICB8IGBGb3JtRGF0YSBmIC0+IChcbiAgICAgIG1hdGNoIGZvcm1fZWx0IHdpdGhcbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IGYjI2FwcGVuZCAoc3RyaW5nIG5hbWUpIHNcbiAgICAgIHwgbmFtZSwgYEZpbGUgZmlsZSAtPiBmIyNhcHBlbmRfYmxvYiAoc3RyaW5nIG5hbWUpIChmaWxlIDo+IEZpbGUuYmxvYiB0KSlcblxubGV0IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIChKcy5kZWYgZm9ybURhdGEpIHdpdGhcbiAgfCBOb25lIC0+IGBGaWVsZHMgKHJlZiBbXSlcbiAgfCBTb21lIGNvbnN0ciAtPiBgRm9ybURhdGEgKG5ldyVqcyBjb25zdHIpXG5cbmxldCBwb3N0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIGxldCBjb250ZW50cyA9IGVtcHR5X2Zvcm1fY29udGVudHMgKCkgaW5cbiAgTGlzdC5pdGVyIChhcHBlbmQgY29udGVudHMpIChmb3JtX2VsZW1lbnRzIGZvcm0pO1xuICBjb250ZW50c1xuXG5sZXQgZ2V0X2Zvcm1fY29udGVudHMgZm9ybSA9XG4gIExpc3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBuYW1lLCB0b19zdHJpbmcgc1xuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAoZm9ybV9lbGVtZW50cyB+Z2V0OnRydWUgZm9ybSlcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBVTlNFTlRcbiAgfCBPUEVORURcbiAgfCBIRUFERVJTX1JFQ0VJVkVEXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxudHlwZSBfIHJlc3BvbnNlID1cbiAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBCbG9iIDogI0ZpbGUuYmxvYiB0IE9wdC50IHJlc3BvbnNlXG4gIHwgRG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBPcHQudCByZXNwb25zZVxuICB8IEpTT04gOiAnYSBPcHQudCByZXNwb25zZVxuICB8IFRleHQgOiBqc19zdHJpbmcgdCByZXNwb25zZVxuICB8IERlZmF1bHQgOiBzdHJpbmcgcmVzcG9uc2VcblxuY2xhc3MgdHlwZSB4bWxIdHRwUmVxdWVzdCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbnJlYWR5c3RhdGVjaGFuZ2UgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9vcGVuIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBfb3Blbl9mdWxsIDpcbiAgICAgICBqc19zdHJpbmcgdFxuICAgIC0+IGpzX3N0cmluZyB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4ganNfc3RyaW5nIHQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJlcXVlc3RIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3ZlcnJpZGVNaW1lVHlwZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kIDoganNfc3RyaW5nIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiAjRmlsZS5ibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfZG9jdW1lbnQgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9mb3JtRGF0YSA6IEZvcm0uZm9ybURhdGEgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RhdHVzIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdHVzVGV4dCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmVzcG9uc2VIZWFkZXIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlc3BvbnNlIDogRmlsZS5maWxlX2FueSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlVGV4dCA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlc3BvbnNlWE1MIDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbnRpbWVvdXQgOlxuICAgICgnc2VsZiB0LCAnc2VsZiBGaWxlLnByb2dyZXNzRXZlbnQgdCkgRG9tLmV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHVwbG9hZCA6IHhtbEh0dHBSZXF1ZXN0VXBsb2FkIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgeG1sSHR0cFJlcXVlc3RVcGxvYWQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IEZpbGUucHJvZ3Jlc3NFdmVudFRhcmdldFxuZW5kXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlIHR5cCA9IHhtbEh0dHBSZXF1ZXN0IEZpbGUucHJvZ3Jlc3NFdmVudCB0IERvbS5FdmVudC50eXBcblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgcHJvZ3Jlc3MgPSBEb20uRXZlbnQubWFrZSBcInByb2dyZXNzXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgbG9hZCA9IERvbS5FdmVudC5tYWtlIFwibG9hZFwiXG5cbiAgbGV0IHRpbWVvdXQgPSBEb20uRXZlbnQubWFrZSBcInRpbWVvdXRcIlxuXG4gIGxldCBsb2FkZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZW5kXCJcbmVuZFxuXG5leHRlcm5hbCBjcmVhdGUgOiB1bml0IC0+IHhtbEh0dHBSZXF1ZXN0IEpzLnQgPSBcImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXCJcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgT0NhbWxQcm86IEdyw6lnb2lyZSBIZW5yeSwgw4dhxJ9kYcWfIEJvem1hbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiBEb21faHRtbFxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gd29ya2VyID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGVycm9yRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdiIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3N0TWVzc2FnZSA6ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXJtaW5hdGUgOiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgZXJyb3JFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW5lbm8gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2xubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVycm9yIDogVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6ICdhIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd29ya2VyID0gVW5zYWZlLmdsb2JhbCMjLl9Xb3JrZXJcblxubGV0IGNyZWF0ZSBzY3JpcHQgPSBuZXclanMgd29ya2VyIChzdHJpbmcgc2NyaXB0KVxuXG5sZXQgaW1wb3J0X3NjcmlwdHMgc2NyaXB0cyA6IHVuaXQgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLmltcG9ydF9zY3JpcHRzIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZnVuX2NhbGxcbiAgICBVbnNhZmUuZ2xvYmFsIyMuaW1wb3J0U2NyaXB0c1xuICAgIChBcnJheS5tYXAgKGZ1biBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKSkgKEFycmF5Lm9mX2xpc3Qgc2NyaXB0cykpXG5cbmxldCBzZXRfb25tZXNzYWdlIGhhbmRsZXIgPVxuICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBsZXQganNfaGFuZGxlciAoZXYgOiAnYSBtZXNzYWdlRXZlbnQgSnMudCkgPSBoYW5kbGVyIGV2IyMuZGF0YSBpblxuICBVbnNhZmUuZ2xvYmFsIyMub25tZXNzYWdlIDo9IHdyYXBfY2FsbGJhY2sganNfaGFuZGxlclxuXG5sZXQgcG9zdF9tZXNzYWdlIG1zZyA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLnBvc3RNZXNzYWdlKVxuICB0aGVuIGludmFsaWRfYXJnIFwiV29ya2VyLm9ubWVzc2FnZSBpcyB1bmRlZmluZWRcIjtcbiAgVW5zYWZlLmdsb2JhbCMjcG9zdE1lc3NhZ2UgbXNnXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIEphY3F1ZXMtUGFzY2FsIERlcGxhaXhcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWFkeVN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NJTkdcbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIGNsb3NlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIERvbS5ldmVudFxuXG4gIG1ldGhvZCBjb2RlIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhc29uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3YXNDbGVhbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRhdGFfYmxvYiA6IEZpbGUuYmxvYiBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHdlYlNvY2tldCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdXJsIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkQW1vdW50IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIEpzLnQsICdzZWxmIERvbS5ldmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jbG9zZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIGNsb3NlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBleHRlbnNpb25zIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcm90b2NvbCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGUgOiBpbnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsb3NlX3dpdGhDb2RlQW5kUmVhc29uIDogaW50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOlxuICAgICgnc2VsZiBKcy50LCAnc2VsZiBtZXNzYWdlRXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGJpbmFyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIHNlbmQgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgc2VuZF9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Jsb2IgOiBGaWxlLmJsb2IgSnMudCAtPiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgd2ViU29ja2V0ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2wgPSB3ZWJTb2NrZXRcblxubGV0IHdlYlNvY2tldF93aXRoUHJvdG9jb2xzID0gd2ViU29ja2V0XG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCB3ZWJTb2NrZXRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuKCoqIDUuMSBUeXBlcyAqKVxuXG50eXBlIHNpemVpID0gaW50XG5cbnR5cGUgc2l6ZWlwdHIgPSBpbnRcblxudHlwZSBpbnRwdHIgPSBpbnRcblxudHlwZSB1aW50ID0gaW50XG5cbnR5cGUgY2xhbXBmID0gbnVtYmVyX3RcblxudHlwZSB2b2lkXG5cbnR5cGUgY2xlYXJCdWZmZXJNYXNrID0gaW50XG5cbnR5cGUgYmVnaW5Nb2RlXG5cbnR5cGUgYmxlbmRpbmdGYWN0b3JcblxudHlwZSBibGVuZE1vZGVcblxudHlwZSBidWZmZXJUYXJnZXRcblxudHlwZSBidWZmZXJVc2FnZVxuXG50eXBlIGN1bGxGYWNlTW9kZVxuXG50eXBlIGRlcHRoRnVuY3Rpb25cblxudHlwZSBlbmFibGVDYXBcblxudHlwZSBlcnJvckNvZGVcblxudHlwZSBmcm9udEZhY2VEaXJcblxudHlwZSBoaW50VGFyZ2V0XG5cbnR5cGUgaGludE1vZGVcblxudHlwZSB0ZXh0dXJlVW5pdCA9IGludFxuXG50eXBlICdhIHBpeGVsU3RvcmVQYXJhbVxuXG50eXBlIHN0ZW5jaWxPcFxuXG50eXBlIGZiVGFyZ2V0XG5cbnR5cGUgYXR0YWNobWVudFBvaW50XG5cbnR5cGUgcmJUYXJnZXRcblxudHlwZSB0ZXhUYXJnZXRcblxudHlwZSAnYSBwYXJhbWV0ZXJcblxudHlwZSAnYSBidWZmZXJQYXJhbWV0ZXJcblxudHlwZSAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbVxuXG50eXBlIHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbVxuXG50eXBlICdhIGF0dGFjaFBhcmFtXG5cbnR5cGUgZnJhbWVidWZmZXJTdGF0dXNcblxudHlwZSAnYSByZW5kZXJidWZmZXJQYXJhbVxuXG50eXBlIGZvcm1hdFxuXG50eXBlIHBpeGVsRm9ybWF0XG5cbnR5cGUgcGl4ZWxUeXBlXG5cbnR5cGUgJ2EgdGV4UGFyYW1cblxudHlwZSBkYXRhVHlwZVxuXG50eXBlIHNoYWRlclR5cGVcblxudHlwZSAnYSBwcm9ncmFtUGFyYW1cblxudHlwZSAnYSBzaGFkZXJQYXJhbVxuXG50eXBlIHRleHR1cmVGaWx0ZXJcblxudHlwZSB3cmFwTW9kZVxuXG50eXBlIHRleEZpbHRlclxuXG50eXBlIHVuaWZvcm1UeXBlXG5cbnR5cGUgY29sb3JzcGFjZUNvbnZlcnNpb25cblxudHlwZSBzaGFkZXJQcmVjaXNpb25UeXBlXG5cbnR5cGUgb2JqZWN0VHlwZVxuXG4oKiogNS4yIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMgKilcbmNsYXNzIHR5cGUgY29udGV4dEF0dHJpYnV0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGVwdGggOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGVuY2lsIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgYW50aWFsaWFzIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlbXVsdGlwbGllZEFscGhhIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlc2VydmVEcmF3aW5nQnVmZmVyIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgOiBib29sIHQgcHJvcFxuZW5kXG5cbmxldCBkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMgPVxuICBKcy5VbnNhZmUuKFxuICAgIG9ialxuICAgICAgW3wgXCJhbHBoYVwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwiZGVwdGhcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInN0ZW5jaWxcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJhbnRpYWxpYXNcIiwgaW5qZWN0IF90cnVlXG4gICAgICAgOyBcInByZW11bHRpcGxpZWRBbHBoYVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZXNlcnZlRHJhd2luZ0J1ZmZlclwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcInByZWZlckxvd1Bvd2VyVG9IaWdoUGVyZm9ybWFuY2VcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgIDsgXCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0XCIsIGluamVjdCBfZmFsc2VcbiAgICAgIHxdKVxuXG50eXBlIGJ1ZmZlclxuXG50eXBlIGZyYW1lYnVmZmVyXG5cbnR5cGUgcHJvZ3JhbVxuXG50eXBlIHJlbmRlcmJ1ZmZlclxuXG50eXBlIHNoYWRlclxuXG50eXBlIHRleHR1cmVcblxudHlwZSAnYSB1bmlmb3JtTG9jYXRpb25cblxuY2xhc3MgdHlwZSBhY3RpdmVJbmZvID0gb2JqZWN0XG4gIG1ldGhvZCBzaXplIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX3R5cGUgOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzaGFkZXJQcmVjaXNpb25Gb3JtYXQgPSBvYmplY3RcbiAgbWV0aG9kIHJhbmdlTWluIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmFuZ2VNYXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVjaXNpb24gOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVuZGVyaW5nQ29udGV4dCA9IG9iamVjdFxuICAoKiogNS4xMy4xIEF0dHJpYnV0ZXMgKilcblxuICBtZXRob2QgY2FudmFzIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHJhd2luZ0J1ZmZlcldpZHRoIDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVySGVpZ2h0IDogc2l6ZWkgcmVhZG9ubHlfcHJvcFxuXG4gICgqKiA1LjEzLjIgR2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGV4dCAqKVxuXG4gIG1ldGhvZCBnZXRDb250ZXh0QXR0cmlidXRlcyA6IGNvbnRleHRBdHRyaWJ1dGVzIHQgbWV0aFxuXG4gICgqKiA1LjEzLjMgU2V0dGluZyBhbmQgZ2V0dGluZyBzdGF0ZSAqKVxuXG4gIG1ldGhvZCBhY3RpdmVUZXh0dXJlIDogdGV4dHVyZVVuaXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb24gOiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA6IGJsZW5kTW9kZSAtPiBibGVuZE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuYyA6IGJsZW5kaW5nRmFjdG9yIC0+IGJsZW5kaW5nRmFjdG9yIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibGVuZEZ1bmNTZXBhcmF0ZSA6XG4gICAgYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyQ29sb3IgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyRGVwdGggOiBjbGFtcGYgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyU3RlbmNpbCA6IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sb3JNYXNrIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjdWxsRmFjZSA6IGN1bGxGYWNlTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVwdGhNYXNrIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aFJhbmdlIDogY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGlzYWJsZSA6IGVuYWJsZUNhcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZW5hYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcm9udEZhY2UgOiBmcm9udEZhY2VEaXIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBhcmFtZXRlciA6ICdhLiAnYSBwYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRFcnJvciA6IGVycm9yQ29kZSBtZXRoXG5cbiAgbWV0aG9kIGhpbnQgOiBoaW50VGFyZ2V0IC0+IGhpbnRNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc0VuYWJsZWQgOiBlbmFibGVDYXAgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgbGluZVdpZHRoIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBpeGVsU3RvcmVpIDogJ2EuICdhIHBpeGVsU3RvcmVQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcG9seWdvbk9mZnNldCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzYW1wbGVDb3ZlcmFnZSA6IGNsYW1wZiAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxGdW5jIDogZGVwdGhGdW5jdGlvbiAtPiBpbnQgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsTWFzayA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrU2VwYXJhdGUgOiBjdWxsRmFjZU1vZGUgLT4gdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wIDogc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxPcFNlcGFyYXRlIDpcbiAgICBjdWxsRmFjZU1vZGUgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiBzdGVuY2lsT3AgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNCBWaWV3aW5nIGFuZCBjbGlwcGluZyAqKVxuXG4gIG1ldGhvZCBzY2lzc29yIDogaW50IC0+IGludCAtPiBzaXplaSAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgdmlld3BvcnQgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjUgQnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEJ1ZmZlciA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEJ1ZmZlcl8gOiBidWZmZXJUYXJnZXQgLT4gYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX2NyZWF0ZSA6IGJ1ZmZlclRhcmdldCAtPiBzaXplaXB0ciAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YSA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiBidWZmZXJVc2FnZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gaW50cHRyIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYnVmZmVyU3ViRGF0YV9yYXcgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlQnVmZmVyIDogYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVCdWZmZXIgOiBidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QnVmZmVyUGFyYW1ldGVyIDogJ2EuIGJ1ZmZlclRhcmdldCAtPiAnYSBidWZmZXJQYXJhbWV0ZXIgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0J1ZmZlciA6IGJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNiBGcmFtZWJ1ZmZlciBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlciA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRGcmFtZWJ1ZmZlcl8gOiBmYlRhcmdldCAtPiBmcmFtZWJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyU3RhdHVzIG1ldGhcblxuICBtZXRob2QgY3JlYXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmcmFtZWJ1ZmZlclRleHR1cmUyRCA6XG4gICAgZmJUYXJnZXQgLT4gYXR0YWNobWVudFBvaW50IC0+IHRleFRhcmdldCAtPiB0ZXh0dXJlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIgOlxuICAgICdhLiBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gJ2EgYXR0YWNoUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc0ZyYW1lYnVmZmVyIDogZnJhbWVidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gICgqKiA1LjEzLjcgUmVuZGVyYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFJlbmRlcmJ1ZmZlciA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyXyA6IHJiVGFyZ2V0IC0+IHJlbmRlcmJ1ZmZlciB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUmVuZGVyYnVmZmVyIDogcmVuZGVyYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIDogJ2EuIHJiVGFyZ2V0IC0+ICdhIHJlbmRlcmJ1ZmZlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCByZW5kZXJidWZmZXJTdG9yYWdlIDogcmJUYXJnZXQgLT4gZm9ybWF0IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjggVGV4dHVyZSBvYmplY3RzICopXG5cbiAgbWV0aG9kIGJpbmRUZXh0dXJlIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZFRleHR1cmVfIDogdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXByZXNzZWRUZXhJbWFnZTJEIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleFN1YkltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4SW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBwaXhlbEZvcm1hdCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29weVRleFN1YkltYWdlMkQgOlxuICAgIHRleFRhcmdldCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0dXJlIDogdGV4dHVyZSB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlVGV4dHVyZSA6IHRleHR1cmUgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2VuZXJhdGVNaXBtYXAgOiB0ZXhUYXJnZXQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRleFBhcmFtZXRlciA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzVGV4dHVyZSA6IHRleHR1cmUgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX25ldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiB2b2lkIG9wdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZURhdGEgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhJbWFnZTJEX2Zyb21WaWRlbyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoge1tcbiAgICAgIG1ldGhvZCB0ZXhQYXJhbWV0ZXJmIDogdGV4VGFyZ2V0IC0+IHRleFBhcmFtIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuICAgICBdfVxuICAqKVxuICBtZXRob2QgdGV4UGFyYW1ldGVyaSA6IHRleFRhcmdldCAtPiAnYSB0ZXhQYXJhbSAtPiAnYSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlldyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZURhdGEgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21JbWFnZSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5pbWFnZUVsZW1lbnQgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21DYW52YXMgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLnZpZGVvRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOSBQcm9ncmFtcyBhbmQgU2hhZGVycyAqKVxuXG4gIG1ldGhvZCBhdHRhY2hTaGFkZXIgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21waWxlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVByb2dyYW0gOiBwcm9ncmFtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTaGFkZXIgOiBzaGFkZXJUeXBlIC0+IHNoYWRlciB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlU2hhZGVyIDogc2hhZGVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRldGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0YWNoZWRTaGFkZXJzIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtUGFyYW1ldGVyIDogJ2EuIHByb2dyYW0gdCAtPiAnYSBwcm9ncmFtUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRQcm9ncmFtSW5mb0xvZyA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclBhcmFtZXRlciA6ICdhLiBzaGFkZXIgdCAtPiAnYSBzaGFkZXJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA6XG4gICAgc2hhZGVyVHlwZSAtPiBzaGFkZXJQcmVjaXNpb25UeXBlIC0+IHNoYWRlclByZWNpc2lvbkZvcm1hdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVySW5mb0xvZyA6IHNoYWRlciB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1Byb2dyYW0gOiBwcm9ncmFtIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgaXNTaGFkZXIgOiBzaGFkZXIgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5rUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2hhZGVyU291cmNlIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVzZVByb2dyYW0gOiBwcm9ncmFtIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZhbGlkYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMCBVbmlmb3JtcyBhbmQgYXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgOiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZUF0dHJpYiA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFjdGl2ZVVuaWZvcm0gOiBwcm9ncmFtIHQgLT4gdWludCAtPiBhY3RpdmVJbmZvIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJMb2NhdGlvbiA6IHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVbmlmb3JtIDogJ2EgJ2IuIHByb2dyYW0gdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm1Mb2NhdGlvbiA6ICdhLiBwcm9ncmFtIHQgLT4ganNfc3RyaW5nIHQgLT4gJ2EgdW5pZm9ybUxvY2F0aW9uIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRWZXJ0ZXhBdHRyaWIgOiAnYS4gdWludCAtPiAnYSB2ZXJ0ZXhBdHRyaWJQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYk9mZnNldCA6IHVpbnQgLT4gdmVydGV4QXR0cmliUG9pbnRlclBhcmFtIC0+IHNpemVpcHRyIG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmIDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnZfdHlwZWQgOlxuICAgIG51bWJlcl90IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWZ2IDogbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdl90eXBlZCA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xaXYgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZiA6IFsgYHZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmdl90eXBlZCA6XG4gICAgWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2IDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaSA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdiA6IFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2YgOlxuICAgIFsgYHZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNmdl90eXBlZCA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2IDogWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaSA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXYgOiBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2l2X3R5cGVkIDpcbiAgICBbIGBpdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmIDpcbiAgICAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGZ2X3R5cGVkIDpcbiAgICBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnYgOiBbIGB2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpIDogWyBgaXZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXYgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGl2X3R5cGVkIDpcbiAgICBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDJmdiA6XG4gICAgWyBgbWF0MiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2X3R5cGVkIDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4M2Z2IDpcbiAgICBbIGBtYXQzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnZfdHlwZWQgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXg0ZnYgOlxuICAgIFsgYG1hdDQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdl90eXBlZCA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWYgOiB1aW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGYgOlxuICAgIHVpbnQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjRmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliUG9pbnRlciA6XG4gICAgdWludCAtPiBpbnQgLT4gZGF0YVR5cGUgLT4gYm9vbCB0IC0+IHNpemVpIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMSBXcml0aW5nIHRvIHRoZSBkcmF3aW5nIGJ1ZmZlciAqKVxuXG4gIG1ldGhvZCBjbGVhciA6IGNsZWFyQnVmZmVyTWFzayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0FycmF5cyA6IGJlZ2luTW9kZSAtPiBpbnQgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdFbGVtZW50cyA6IGJlZ2luTW9kZSAtPiBzaXplaSAtPiBkYXRhVHlwZSAtPiBpbnRwdHIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbmlzaCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmbHVzaCA6IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEyIFJlYWRpbmcgYmFjayBwaXhlbHMgKilcblxuICBtZXRob2QgcmVhZFBpeGVscyA6XG4gICAgICAgaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTMgRGV0ZWN0aW5nIGNvbnRleHQgbG9zdCBldmVudHMgKilcblxuICBtZXRob2QgaXNDb250ZXh0TG9zdCA6IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTQgRGV0ZWN0aW5nIGFuZCBlbmFibGluZyBleHRlbnNpb25zICopXG5cbiAgbWV0aG9kIGdldFN1cHBvcnRlZEV4dGVuc2lvbnMgOiBqc19zdHJpbmcgdCBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW5zaW9uIDogJ2EuIGpzX3N0cmluZyB0IC0+ICdhIHQgb3B0IG1ldGhcblxuICAoKiBVbnR5cGVkISAqKVxuICAoKiogQ29uc3RhbnRzICopXG5cbiAgbWV0aG9kIF9ERVBUSF9CVUZGRVJfQklUXyA6IGNsZWFyQnVmZmVyTWFzayByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPSU5UUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FX0xPT1BfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfU1RSSVBfIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFUyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVfRkFOXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFNUX0NPTE9SXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1JDX0FMUEhBX1NBVFVSQVRFXyA6IGJsZW5kaW5nRmFjdG9yIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfQUREXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1NVQlRSQUNUXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0NPTE9SXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlNUQU5UX0FMUEhBXyA6IGJsZW5kTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfIDogYnVmZmVyVGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUUkVBTV9EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NUQVRJQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RZTkFNSUNfRFJBV18gOiBidWZmZXJVc2FnZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUk9OVCA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CQUNLIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0FORF9CQUNLXyA6IGN1bGxGYWNlTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUiA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PX0VSUk9SXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlZBTElEX0VOVU1fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfVkFMVUVfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PVVRfT0ZfTUVNT1JZXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT05URVhUX0xPU1RfV0VCR0xfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OXyA6IGVycm9yQ29kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DQ1cgOiBmcm9udEZhY2VEaXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRE9OVF9DQVJFXyA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZBU1RFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OSUNFU1QgOiBoaW50TW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF8gOiBoaW50VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0VRVUFUSU9OXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fUkdCXyA6IGJsZW5kTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fQUxQSEFfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9TUkNfUkdCXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfQ09MT1JfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElOR18gOiBidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RJVEhFUl9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9URVNUX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZJTExfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfV0lEVEhfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVUxMX0ZBQ0VfTU9ERV8gOiBjdWxsRmFjZU1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UX0ZBQ0VfIDogZnJvbnRGYWNlRGlyIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9SQU5HRV8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfV1JJVEVNQVNLXyA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ0xFQVJfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0ZVTkNfIDogZGVwdGhGdW5jdGlvbiBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9DTEVBUl9WQUxVRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVkFMVUVfTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX0ZVTkNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1JFRl8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1dSSVRFTUFTS18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZJRVdQT1JUIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQ0lTU09SX0JPWF8gOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0NMRUFSX1ZBTFVFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT0xPUl9XUklURU1BU0tfIDogYm9vbCB0IGpzX2FycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfUEFSQU0gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BBQ0tfQUxJR05NRU5UXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WSUVXUE9SVF9ESU1TXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1VCUElYRUxfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFRF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFRU5fQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMVUVfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FMUEhBX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfVU5JVFNfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUl8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HXzJEXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQklORElOR19DVUJFX01BUF8gOiB0ZXh0dXJlIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQlVGRkVSU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQ09WRVJBR0VfVkFMVUVfIDogbnVtYmVyX3QgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlRfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBUeXBlZF9hcnJheS51aW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HRU5FUkFURV9NSVBNQVBfSElOVF9QQVJBTV8gOiBoaW50TW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlVGRkVSX1NJWkVfIDogaW50IGJ1ZmZlclBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfVVNBR0VfIDogYnVmZmVyVXNhZ2UgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JZVEUgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFX0RUIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hPUlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9JTlRfIDogZGF0YVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9CWVRFXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF80XzRfNF80XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzVfNV8xXyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlNJR05FRF9TSE9SVF81XzZfNV8gOiBwaXhlbFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0IgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTFVNSU5BTkNFX0FMUEhBXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVhfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DT01QT05FTlRfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBR01FTlRfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX1NIQURFUl8gOiBzaGFkZXJUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfQVRUUklCU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZBUllJTkdfVkVDVE9SU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBREVSX1RZUEVfIDogc2hhZGVyVHlwZSBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DT01QSUxFX1NUQVRVU18gOiBib29sIHQgc2hhZGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVMRVRFX1NUQVRVU19QUk9HIDogYm9vbCB0IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5LX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZBTElEQVRFX1NUQVRVU18gOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FUVEFDSEVEX1NIQURFUlNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVU5JRk9STVNfIDogaW50IHByb2dyYW1QYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfQVRUUklCVVRFU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTl8gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VSUkVOVF9QUk9HUkFNXyA6IHByb2dyYW0gdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFTkRPUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJFUiA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJTSU9OIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BQ1RJVkVfVEVYVFVSRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0JJTkRJTkdfIDogZnJhbWVidWZmZXIgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CSU5ESU5HXyA6IHJlbmRlcmJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORVZFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVTUyA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR1JFQVRFUiA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9URVFVQUwgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxXQVlTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9LRUVQIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUExBQ0UgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5DUiA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkVSVCA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSX1dSQVBfIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfWkVST18gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVCA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVIgOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVF8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUl9NSVBNQVBfTElORUFSXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX01BR19GSUxURVJfIDogdGV4RmlsdGVyIHRleFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUlOX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1NfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9XUkFQX1RfIDogd3JhcE1vZGUgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9ORV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9PVCA6IG9iamVjdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFXzJEXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTUgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTggOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUxOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyMyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyNyA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUyOSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzMSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFUEVBVCA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NMQU1QX1RPX0VER0VfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUlSUk9SRURfUkVQRUFUXyA6IHdyYXBNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTlRfVkVDNF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzNfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDJfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQ0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRVJfMkRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl9DVUJFXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERV8gOiBpbnQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRURfIDogYm9vbCB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUl8gOiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElOR18gOlxuICAgIGJ1ZmZlciB0IG9wdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUJfIDpcbiAgICBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NRURJVU1fRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0ZMT0FUXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9XX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9JTlRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ISUdIX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSIDogZmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSIDogcmJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCQTQgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNV9BMV8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkdCNTY1IDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVDE2XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0lOREVYOF8gOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1dJRFRIXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSEVJR0hUXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUXyA6IGZvcm1hdCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfUkVEX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9HUkVFTl9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfIDogb2JqZWN0VHlwZSBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1JFTkRFUkJVRkZFUiA6XG4gICAgcmVuZGVyYnVmZmVyIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRV9URVhUVVJFIDogdGV4dHVyZSB0IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTF8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfIDogaW50IGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX0FUVEFDSE1FTlQwXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQ09NUExFVEVfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU18gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRF8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0xfUEFSQU0gOlxuICAgIGNvbG9yc3BhY2VDb252ZXJzaW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQlJPV1NFUl9ERUZBVUxUX1dFQkdMXyA6IGNvbG9yc3BhY2VDb252ZXJzaW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19BTElHTk1FTlRfIDogaW50IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfRkxJUF9ZX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMXyA6IGJvb2wgdCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogNS4xNCBXZWJHTENvbnRleHRFdmVudCAqKVxuXG5jbGFzcyB0eXBlIGNvbnRleHRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50XG5cbiAgbWV0aG9kIHN0YXR1c01lc3NhZ2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGxldCB3ZWJnbGNvbnRleHRsb3N0ID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dGxvc3RcIlxuXG4gIGxldCB3ZWJnbGNvbnRleHRyZXN0b3JlZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRyZXN0b3JlZFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvclwiXG5lbmRcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgY2FudmFzRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZ2V0Q29udGV4dCA6IGpzX3N0cmluZyB0IC0+IHJlbmRlcmluZ0NvbnRleHQgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0XyA6IGpzX3N0cmluZyB0IC0+IGNvbnRleHRBdHRyaWJ1dGVzIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGdldENvbnRleHQgKGMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQpID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHQgKEpzLnN0cmluZyBcIndlYmdsXCIpIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMgIyMgKGdldENvbnRleHQgKEpzLnN0cmluZyBcImV4cGVyaW1lbnRhbC13ZWJnbFwiKSlcblxubGV0IGdldENvbnRleHRXaXRoQXR0cmlidXRlcyAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgYXR0cmlicyA9XG4gIGxldCBjIDogY2FudmFzRWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZSBjIGluXG4gIGxldCBjdHggPSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwid2ViZ2xcIikgYXR0cmlicyBpblxuICBpZiBPcHQudGVzdCBjdHggdGhlbiBjdHggZWxzZSBjIyNnZXRDb250ZXh0XyAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpIGF0dHJpYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0LCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSByZWdleHAgPSBKcy5yZWdFeHAgSnMudFxuXG50eXBlIHJlc3VsdCA9IEpzLm1hdGNoX3Jlc3VsdCBKcy50XG5cbmxldCByZWdleHAgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCByZWdleHBfY2FzZV9mb2xkIHMgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIFwiZ2lcIilcblxubGV0IHJlZ2V4cF93aXRoX2ZsYWcgcyBmID1cbiAgbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyAoXCJnXCIgXiBmKSlcblxubGV0IGJsdW50X3N0cl9hcnJheV9nZXQgYSBpID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGEgaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuXG5sZXQgc3RyaW5nX21hdGNoIHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSBpO1xuICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQubWFwIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKSBKcy5tYXRjaF9yZXN1bHQpXG5cbmxldCBzZWFyY2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb25cbiAgICAoSnMuT3B0Lm1hcFxuICAgICAgIChyIyNleGVjIChKcy5ieXRlc3RyaW5nIHMpKVxuICAgICAgIChmdW4gcmVzX3ByZSAtPlxuICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCByZXNfcHJlIGluXG4gICAgICAgICByZXMjIy5pbmRleCwgcmVzKSlcblxubGV0IHNlYXJjaF9mb3J3YXJkID0gc2VhcmNoXG5cbmxldCBtYXRjaGVkX3N0cmluZyByID0gYmx1bnRfc3RyX2FycmF5X2dldCByIDBcblxubGV0IG1hdGNoZWRfZ3JvdXAgciBpID1cbiAgSnMuT3B0ZGVmLnRvX29wdGlvbiAoSnMuT3B0ZGVmLm1hcCAoSnMuYXJyYXlfZ2V0IHIgaSkgSnMudG9fYnl0ZXN0cmluZylcblxubGV0IHF1b3RlX3JlcGxfcmUgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuc3RyaW5nIFwiWyRdXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCBxdW90ZV9yZXBsIHMgPSAoSnMuYnl0ZXN0cmluZyBzKSMjcmVwbGFjZSBxdW90ZV9yZXBsX3JlIChKcy5zdHJpbmcgXCIkJCQkXCIpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSByIHMgc19ieSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByIChxdW90ZV9yZXBsIHNfYnkpKVxuXG5sZXQgcmVwbGFjZV9maXJzdCByIHMgc19ieSA9XG4gIGxldCBmbGFncyA9XG4gICAgbWF0Y2ggSnMudG9fYm9vbCByIyMuaWdub3JlQ2FzZSwgSnMudG9fYm9vbCByIyMubXVsdGlsaW5lIHdpdGhcbiAgICB8IGZhbHNlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJcIlxuICAgIHwgZmFsc2UsIHRydWUgLT4gSnMuc3RyaW5nIFwibVwiXG4gICAgfCB0cnVlLCBmYWxzZSAtPiBKcy5zdHJpbmcgXCJpXCJcbiAgICB8IHRydWUsIHRydWUgLT4gSnMuc3RyaW5nIFwibWlcIlxuICBpblxuICBsZXQgcicgPSBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyByIyMuc291cmNlIGZsYWdzIGluXG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHJlcGxhY2UgcicgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCBsaXN0X29mX2pzX2FycmF5IGEgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGlkeCA9XG4gICAgaWYgaWR4IDwgMCB0aGVuIGFjY3UgZWxzZSBhdXggKGJsdW50X3N0cl9hcnJheV9nZXQgYSBpZHggOjogYWNjdSkgKGlkeCAtIDEpXG4gIGluXG4gIGF1eCBbXSAoYSMjLmxlbmd0aCAtIDEpXG5cbmxldCBzcGxpdCByIHMgPVxuICByIyMubGFzdEluZGV4IDo9IDA7XG4gIGxpc3Rfb2ZfanNfYXJyYXkgKEpzLnN0cl9hcnJheSAoSnMuYnl0ZXN0cmluZyBzKSAjIyAoc3BsaXRfcmVnRXhwIHIpKVxuXG5sZXQgYm91bmRlZF9zcGxpdCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHBMaW1pdGVkIHIgaSkpXG5cbigqIE1vcmUgY29uc3RydWN0b3JzICopXG5cbmxldCBxdW90ZV9yZSA9IHJlZ2V4cCBcIltcXFxcXVsoKVxcXFxcXFxcfCsqLj97fV4kXVwiXG5cbmxldCBxdW90ZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSBxdW90ZV9yZSAoSnMuc3RyaW5nIFwiXFxcXCQmXCIpKVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gcmVnZXhwIChxdW90ZSBzKVxuXG5sZXQgcmVnZXhwX3N0cmluZ19jYXNlX2ZvbGQgcyA9IHJlZ2V4cF9jYXNlX2ZvbGQgKHF1b3RlIHMpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFJhcGhhw6tsIFByb3VzdFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVXJsIHRhbXBlcmluZy4gKilcblxubGV0IHNwbGl0IGMgcyA9IEpzLnN0cl9hcnJheSAocyMjc3BsaXQgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkpXG5cbmxldCBzcGxpdF8yIGMgcyA9XG4gIGxldCBpbmRleCA9IHMjI2luZGV4T2YgKEpzLnN0cmluZyAoU3RyaW5nLm1ha2UgMSBjKSkgaW5cbiAgaWYgaW5kZXggPCAwIHRoZW4gSnMudW5kZWZpbmVkIGVsc2UgSnMuZGVmIChzIyNzbGljZSAwIGluZGV4LCBzIyNzbGljZV9lbmQgKGluZGV4ICsgMSkpXG5cbmV4Y2VwdGlvbiBMb2NhbF9leG5cblxubGV0IGludGVycnVwdCAoKSA9IHJhaXNlIExvY2FsX2V4blxuXG4oKiB1cmwgKEFLQSBwZXJjZW50KSBlbmNvZGluZy9kZWNvZGluZyAqKVxuXG5sZXQgcGx1c19yZSA9IFJlZ2V4cC5yZWdleHBfc3RyaW5nIFwiK1wiXG5cbmxldCBlc2NhcGVfcGx1cyBzID0gUmVnZXhwLmdsb2JhbF9yZXBsYWNlIHBsdXNfcmUgcyBcIiUyQlwiXG5cbmxldCB1bmVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiIFwiXG5cbmxldCBwbHVzX3JlX2pzX3N0cmluZyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJcXFxcK1wiKSAoSnMuc3RyaW5nIFwiZ1wiKVxuXG5sZXQgdW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcyA9XG4gIHBsdXNfcmVfanNfc3RyaW5nIyMubGFzdEluZGV4IDo9IDA7XG4gIHMjI3JlcGxhY2UgcGx1c19yZV9qc19zdHJpbmcgKEpzLnN0cmluZyBcIiBcIilcblxubGV0IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIHMgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy51bmVzY2FwZSAodW5lc2NhcGVfcGx1c19qc19zdHJpbmcgcykpXG5cbmxldCB1cmxkZWNvZGUgcyA9IEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlIChKcy5ieXRlc3RyaW5nICh1bmVzY2FwZV9wbHVzIHMpKSlcblxuKCpsZXQgdXJsZW5jb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSBzKSopXG5cbmxldCB1cmxlbmNvZGUgPyh3aXRoX3BsdXMgPSB0cnVlKSBzID1cbiAgaWYgd2l0aF9wbHVzXG4gIHRoZW4gZXNjYXBlX3BsdXMgKEpzLnRvX2J5dGVzdHJpbmcgKEpzLmVzY2FwZSAoSnMuYnl0ZXN0cmluZyBzKSkpXG4gIGVsc2UgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKVxuXG50eXBlIGh0dHBfdXJsID1cbiAgeyBodV9ob3N0IDogc3RyaW5nICAoKiogVGhlIGhvc3QgcGFydCBvZiB0aGUgdXJsLiAqKVxuICA7IGh1X3BvcnQgOiBpbnQgICgqKiBUaGUgcG9ydCBmb3IgdGhlIGNvbm5lY3Rpb24gaWYgYW55LiAqKVxuICA7IGh1X3BhdGggOiBzdHJpbmcgbGlzdCAgKCoqIFRoZSBwYXRoIHNwbGl0IG9uIFsnLyddIGNoYXJhY3RlcnMuICopXG4gIDsgaHVfcGF0aF9zdHJpbmcgOiBzdHJpbmcgICgqKiBUaGUgb3JpZ2luYWwgZW50aXJlIHBhdGguICopXG4gIDsgaHVfYXJndW1lbnRzIDogKHN0cmluZyAqIHN0cmluZykgbGlzdFxuICAgICAgICAoKiogQXJndW1lbnRzIGFzIGEgZmllbGQtdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW9uIGxpc3QuKilcbiAgOyBodV9mcmFnbWVudCA6IHN0cmluZyAgKCoqIFRoZSBmcmFnbWVudCBwYXJ0IChhZnRlciB0aGUgWycjJ10gY2hhcmFjdGVyKS4gKilcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBIVFRQIHVybC4gKilcblxudHlwZSBmaWxlX3VybCA9XG4gIHsgZnVfcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZnVfcGF0aF9zdHJpbmcgOiBzdHJpbmdcbiAgOyBmdV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIDsgZnVfZnJhZ21lbnQgOiBzdHJpbmdcbiAgfVxuKCoqIFRoZSB0eXBlIGZvciBsb2NhbCBmaWxlIHVybHMuICopXG5cbnR5cGUgdXJsID1cbiAgfCBIdHRwIG9mIGh0dHBfdXJsXG4gIHwgSHR0cHMgb2YgaHR0cF91cmxcbiAgfCBGaWxlIG9mIGZpbGVfdXJsXG4gICAgICAoKiogVGhlIHR5cGUgZm9yIHVybHMuIFtGaWxlXSBpcyBmb3IgbG9jYWwgZmlsZXMgYW5kIFtFeG90aWMgc10gaXMgZm9yXG4gICAgdW5rbm93bi91bnN1cHBvcnRlZCBwcm90b2NvbHMuICopXG5cbmV4Y2VwdGlvbiBOb3RfYW5faHR0cF9wcm90b2NvbFxuXG5sZXQgaXNfc2VjdXJlIHByb3Rfc3RyaW5nID1cbiAgbWF0Y2ggSnMudG9fYnl0ZXN0cmluZyBwcm90X3N0cmluZyMjdG9Mb3dlckNhc2Ugd2l0aFxuICB8IFwiaHR0cHM6XCIgfCBcImh0dHBzXCIgLT4gdHJ1ZVxuICB8IFwiaHR0cDpcIiB8IFwiaHR0cFwiIC0+IGZhbHNlXG4gIHwgXCJmaWxlOlwiIHwgXCJmaWxlXCIgfCBfIC0+IHJhaXNlIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbigqIHBvcnQgbnVtYmVyICopXG5sZXQgZGVmYXVsdF9odHRwX3BvcnQgPSA4MFxuXG5sZXQgZGVmYXVsdF9odHRwc19wb3J0ID0gNDQzXG5cbigqIHBhdGggKilcbmxldCBwYXRoX29mX3BhdGhfc3RyaW5nIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBsZXQgaiA9IHRyeSBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgJy8nIHdpdGggTm90X2ZvdW5kIC0+IGwgaW5cbiAgICBsZXQgd29yZCA9IFN0cmluZy5zdWIgcyBpIChqIC0gaSkgaW5cbiAgICBpZiBqID49IGwgdGhlbiBbIHdvcmQgXSBlbHNlIHdvcmQgOjogYXV4IChqICsgMSlcbiAgaW5cbiAgbWF0Y2ggYXV4IDAgd2l0aFxuICB8IFsgXCJcIiBdIC0+IFtdXG4gIHwgWyBcIlwiOyBcIlwiIF0gLT4gWyBcIlwiIF1cbiAgfCBhIC0+IGFcblxuKCogQXJndW1lbnRzICopXG5sZXQgZW5jb2RlX2FyZ3VtZW50cyBsID1cbiAgU3RyaW5nLmNvbmNhdCBcIiZcIiAoTGlzdC5tYXAgKGZ1biAobiwgdikgLT4gdXJsZW5jb2RlIG4gXiBcIj1cIiBeIHVybGVuY29kZSB2KSBsKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgcyA9XG4gIGxldCBhcnIgPSBzcGxpdCAnJicgcyBpblxuICBsZXQgbGVuID0gYXJyIyMubGVuZ3RoIGluXG4gIGxldCBuYW1lX3ZhbHVlX3NwbGl0IHMgPSBzcGxpdF8yICc9JyBzIGluXG4gIGxldCByZWMgYXV4IGFjYyBpZHggPVxuICAgIGlmIGlkeCA8IDBcbiAgICB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIHRyeVxuICAgICAgICBhdXhcbiAgICAgICAgICAoSnMuT3B0ZGVmLmNhc2UgKEpzLmFycmF5X2dldCBhcnIgaWR4KSBpbnRlcnJ1cHQgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICBKcy5PcHRkZWYuY2FzZSAobmFtZV92YWx1ZV9zcGxpdCBzKSBpbnRlcnJ1cHQgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZ2V0ID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICBnZXQgeCwgZ2V0IHkpKVxuICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAocHJlZCBpZHgpXG4gICAgICB3aXRoIExvY2FsX2V4biAtPiBhdXggYWNjIChwcmVkIGlkeClcbiAgaW5cbiAgYXV4IFtdIChsZW4gLSAxKVxuXG5sZXQgZGVjb2RlX2FyZ3VtZW50cyBzID0gZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHVybF9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZ1xuICAgICAgIFwiXihbSGhdW1R0XVtUdF1bUHBdW1NzXT8pOi8vKFswLTlhLXpBLVouLV0rfFxcXFxbWzAtOWEtekEtWi4tXStcXFxcXXxcXFxcW1swLTlBLUZhLWY6Ll0rXFxcXF0pPyg6KFswLTldKykpPygvKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8pPyRcIilcblxubGV0IGZpbGVfcmUgPVxuICBuZXclanMgSnMucmVnRXhwXG4gICAgKEpzLmJ5dGVzdHJpbmcgXCJeKFtGZl1bSWldW0xsXVtFZV0pOi8vKFteXFxcXD8jXSopKFxcXFw/KFteI10qKSk/KCMoLiopKT8kXCIpXG5cbmxldCB1cmxfb2ZfanNfc3RyaW5nIHMgPVxuICBKcy5PcHQuY2FzZVxuICAgICh1cmxfcmUjI2V4ZWMgcylcbiAgICAoZnVuICgpIC0+XG4gICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAoZmlsZV9yZSMjZXhlYyBzKVxuICAgICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAgIChmdW4gaGFuZGxlIC0+XG4gICAgICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMikgaW50ZXJydXB0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKEZpbGVcbiAgICAgICAgICAgICAgIHsgZnVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgICAgICAgIDsgZnVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9hcmd1bWVudHMgPVxuICAgICAgICAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICA7IGZ1X2ZyYWdtZW50ID1cbiAgICAgICAgICAgICAgICAgICBKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgICAgICAgICB9KSkpXG4gICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgIGxldCByZXMgPSBKcy5tYXRjaF9yZXN1bHQgaGFuZGxlIGluXG4gICAgICBsZXQgc3NsID0gaXNfc2VjdXJlIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDEpIGludGVycnVwdCkgaW5cbiAgICAgIGxldCBwb3J0X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBpZiBzc2wgdGhlbiA0NDMgZWxzZSA4MFxuICAgICAgICB8IHMgLT4gaW50X29mX3N0cmluZyBzXG4gICAgICBpblxuICAgICAgbGV0IHBhdGhfc3RyID1cbiAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA2KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICBpblxuICAgICAgbGV0IHVybCA9XG4gICAgICAgIHsgaHVfaG9zdCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgIDsgaHVfcG9ydCA9XG4gICAgICAgICAgICBwb3J0X29mX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMudG9fYnl0ZXN0cmluZ1xuICAgICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA0KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpKVxuICAgICAgICA7IGh1X3BhdGggPSBwYXRoX29mX3BhdGhfc3RyaW5nIHBhdGhfc3RyXG4gICAgICAgIDsgaHVfcGF0aF9zdHJpbmcgPSBwYXRoX3N0clxuICAgICAgICA7IGh1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyA4KSAoZnVuICgpIC0+IEpzLmJ5dGVzdHJpbmcgXCJcIikpXG4gICAgICAgIDsgaHVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmdcbiAgICAgICAgICAgICAgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMTApIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIFNvbWUgKGlmIHNzbCB0aGVuIEh0dHBzIHVybCBlbHNlIEh0dHAgdXJsKSlcblxubGV0IHVybF9vZl9zdHJpbmcgcyA9IHVybF9vZl9qc19zdHJpbmcgKEpzLmJ5dGVzdHJpbmcgcylcblxubGV0IHN0cmluZ19vZl91cmwgPSBmdW5jdGlvblxuICB8IEZpbGUgeyBmdV9wYXRoID0gcGF0aDsgZnVfYXJndW1lbnRzID0gYXJnczsgZnVfZnJhZ21lbnQgPSBmcmFnOyBfIH0gLT4gKFxuICAgICAgXCJmaWxlOi8vXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcbiAgfCBIdHRwXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDgwIC0+IFwiXCJcbiAgICAgICAgfCBuIC0+IFwiOlwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgXiBcIi9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBzXG4gICAgICB7IGh1X2hvc3QgPSBob3N0XG4gICAgICA7IGh1X3BvcnQgPSBwb3J0XG4gICAgICA7IGh1X3BhdGggPSBwYXRoXG4gICAgICA7IGh1X2FyZ3VtZW50cyA9IGFyZ3NcbiAgICAgIDsgaHVfZnJhZ21lbnQgPSBmcmFnXG4gICAgICA7IF9cbiAgICAgIH0gLT4gKFxuICAgICAgXCJodHRwczovL1wiXG4gICAgICBeIHVybGVuY29kZSBob3N0XG4gICAgICBeIChtYXRjaCBwb3J0IHdpdGhcbiAgICAgICAgfCA0NDMgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG5cbm1vZHVsZSBDdXJyZW50ID0gc3RydWN0XG4gIGxldCBsID1cbiAgICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuT3B0ZGVmLnJldHVybiBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbilcbiAgICB0aGVuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uXG4gICAgZWxzZVxuICAgICAgbGV0IGVtcHR5ID0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgICAgIG9iamVjdCVqc1xuICAgICAgICB2YWwgbXV0YWJsZSBocmVmID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBwcm90b2NvbCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaG9zdG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBvcnQgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHBhdGhuYW1lID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBzZWFyY2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIGhhc2ggPSBlbXB0eVxuXG4gICAgICAgIHZhbCBvcmlnaW4gPSBKcy51bmRlZmluZWRcblxuICAgICAgICBtZXRob2QgcmVsb2FkID0gKClcblxuICAgICAgICBtZXRob2QgcmVwbGFjZSBfID0gKClcblxuICAgICAgICBtZXRob2QgYXNzaWduIF8gPSAoKVxuICAgICAgZW5kXG5cbiAgbGV0IGhvc3QgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaG9zdG5hbWVcblxuICBsZXQgcHJvdG9jb2wgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucHJvdG9jb2xcblxuICBsZXQgcG9ydCA9XG4gICAgKGZ1biAoKSAtPlxuICAgICAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKEpzLnRvX2J5dGVzdHJpbmcgbCMjLnBvcnQpKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lKVxuICAgICAgKClcblxuICBsZXQgcGF0aF9zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMucGF0aG5hbWVcblxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJpbmdcblxuICBsZXQgYXJndW1lbnRzID1cbiAgICBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZ1xuICAgICAgKGlmIEpzLmVxdWFscyAobCMjLnNlYXJjaCMjY2hhckF0IDApIChKcy5zdHJpbmcgXCI/XCIpXG4gICAgICAgdGhlbiBsIyMuc2VhcmNoIyNzbGljZV9lbmQgMVxuICAgICAgIGVsc2UgbCMjLnNlYXJjaClcblxuICBsZXQgZ2V0X2ZyYWdtZW50ICgpID1cbiAgICBsZXQgcyA9IEpzLnRvX2J5dGVzdHJpbmcgbCMjLmhhc2ggaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIENoYXIuZXF1YWwgcy5bMF0gJyMnXG4gICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICBlbHNlIHNcblxuICBsZXQgc2V0X2ZyYWdtZW50IHMgPSBsIyMuaGFzaCA6PSBKcy5ieXRlc3RyaW5nIHNcblxuICBsZXQgZ2V0ICgpID0gdXJsX29mX2pzX3N0cmluZyBsIyMuaHJlZlxuXG4gIGxldCBzZXQgdSA9IGwjIy5ocmVmIDo9IEpzLmJ5dGVzdHJpbmcgKHN0cmluZ19vZl91cmwgdSlcblxuICBsZXQgYXNfc3RyaW5nID0gdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgbCMjLmhyZWZcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5leHRlcm5hbCBjcmVhdGVfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IGNvbnRlbnQ6c3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfY3JlYXRlX2ZpbGVcIlxuXG5leHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG5sZXQgdXBkYXRlX2ZpbGUgfm5hbWUgfmNvbnRlbnQgPVxuICBsZXQgb2MgPSBvcGVuX291dCBuYW1lIGluXG4gIG91dHB1dF9zdHJpbmcgb2MgY29udGVudDtcbiAgY2xvc2Vfb3V0IG9jXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOlxuICBvdXRfY2hhbm5lbCAtPiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBzZXRfY2hhbm5lbF9pbnB1dCcgOiBpbl9jaGFubmVsIC0+ICh1bml0IC0+IHN0cmluZykgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG5sZXQgc2V0X2NoYW5uZWxfZmx1c2hlciAob3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCkgKGYgOiBzdHJpbmcgLT4gdW5pdCkgPVxuICBsZXQgZicgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgPVxuICAgIEpzLndyYXBfY2FsbGJhY2sgKGZ1biBzIC0+IGYgKEpzLnRvX2J5dGVzdHJpbmcgcykpXG4gIGluXG4gIHNldF9jaGFubmVsX291dHB1dCcgb3V0X2NoYW5uZWwgZidcblxubGV0IHNldF9jaGFubmVsX2ZpbGxlciAoaW5fY2hhbm5lbCA6IGluX2NoYW5uZWwpIChmIDogdW5pdCAtPiBzdHJpbmcpID1cbiAgbGV0IGYnIDogKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgZiBpblxuICBzZXRfY2hhbm5lbF9pbnB1dCcgaW5fY2hhbm5lbCBmJ1xuXG5leHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbmV4dGVybmFsIG1vdW50X2F1dG9sb2FkIDpcbiAgc3RyaW5nIC0+IChzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyBvcHRpb24pIEpzLmNhbGxiYWNrIC0+IHVuaXRcbiAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG5leHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbmxldCBtb3VudCB+cGF0aCBmID1cbiAgbW91bnRfYXV0b2xvYWQgcGF0aCAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZWZpeCBwYXRoIC0+IGYgfnByZWZpeCB+cGF0aCkpXG5cbmxldCB1bm1vdW50IH5wYXRoID0gdW5tb3VudCBwYXRoXG5cbmxldCBqc19vZl9vY2FtbF92ZXJzaW9uID1cbiAgaWYgU3RyaW5nLmVxdWFsIExpYl92ZXJzaW9uLmdpdF92ZXJzaW9uIFwiXCJcbiAgdGhlbiBMaWJfdmVyc2lvbi5zXG4gIGVsc2UgTGliX3ZlcnNpb24ucyBeIFwiK1wiIF4gTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb25cbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQWxleGFuZGVyIFlhbmluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSByZXNpemVPYnNlcnZlclNpemUgPSBvYmplY3RcbiAgbWV0aG9kIGlubGluZVNpemUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJsb2NrU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudEJveFNpemUgOiByZXNpemVPYnNlcnZlclNpemUgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgYm94IDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ic2VydmVfd2l0aE9wdGlvbnMgOlxuICAgICNEb20ubm9kZSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSA6IHJlc2l6ZU9ic2VydmVyT3B0aW9ucyBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCByZXNpemVPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUmVzaXplT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHJlc2l6ZU9ic2VydmVyXG5cbmxldCByZXNpemVPYnNlcnZlciA6XG4gICAgKCAgIChyZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcmVzaXplT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiByZXNpemVPYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiByZXNpemVPYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhib3ggOiBKcy5qc19zdHJpbmcgSnMudCBvcHRpb24pXG4gICAgKCkgOiByZXNpemVPYnNlcnZlciBKcy50ID1cbiAgbGV0IG9icyA9IG5ldyVqcyByZXNpemVPYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICAobWF0Y2ggYm94IHdpdGhcbiAgfCBOb25lIC0+IG9icyMjb2JzZXJ2ZSBub2RlXG4gIHwgU29tZSBib3ggLT5cbiAgICAgIGxldCBvcHRzID0gZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMgKCkgaW5cbiAgICAgIG9wdHMjIy5ib3ggOj0gYm94O1xuICAgICAgb2JzIyNvYnNlcnZlX3dpdGhPcHRpb25zIG5vZGUgb3B0cyk7XG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAyMSBQaGlsaXAgV2hpdGVcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGVudHJ5VHlwZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZUVudHJ5ID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlbnRyeVR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0VGltZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRFbnRyaWVzIDogcGVyZm9ybWFuY2VFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgcGVyZm9ybWFuY2VPYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXJcblxubGV0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgOlxuICAgICggICAocGVyZm9ybWFuY2VPYnNlcnZlckVudHJ5TGlzdCBKcy50IC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAtPiBwZXJmb3JtYW5jZU9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZSB+ZW50cnlfdHlwZXMgfmYgPVxuICBsZXQgZW50cnlfdHlwZXMgPSBlbnRyeV90eXBlcyB8PiBMaXN0Lm1hcCBKcy5zdHJpbmcgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSBpblxuICBsZXQgcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCA6IHBlcmZvcm1hbmNlT2JzZXJ2ZXJJbml0IEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgbGV0ICgpID0gcGVyZm9ybWFuY2Vfb2JzZXJ2ZXJfaW5pdCMjLmVudHJ5VHlwZXMgOj0gZW50cnlfdHlwZXMgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBwZXJmb3JtYW5jZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlckluaXQgPSBvYmplY3RcbiAgbWV0aG9kIGNoaWxkTGlzdCA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlcyA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3VidHJlZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlT2xkVmFsdWUgOiBib29sIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlRmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25SZWNvcmQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBEb20ubm9kZSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWRkZWROb2RlcyA6IERvbS5ub2RlIERvbS5ub2RlTGlzdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVtb3ZlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogRG9tLm5vZGUgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXR0cmlidXRlTmFtZXNwYWNlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2xkVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbXV0YXRpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXJJbml0IEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGRpc2Nvbm5lY3QgOiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgdGFrZVJlY29yZHMgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIDogbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fTXV0YXRpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgbXV0YXRpb25PYnNlcnZlclxuXG5sZXQgbXV0YXRpb25PYnNlcnZlciA6XG4gICAgKCAgIChtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBvYnNlcnZlXG4gICAgfihub2RlIDogI0RvbS5ub2RlIEpzLnQpXG4gICAgfihmIDogbXV0YXRpb25SZWNvcmQgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IG11dGF0aW9uT2JzZXJ2ZXIgSnMudCAtPiB1bml0KVxuICAgID8oY2hpbGRfbGlzdCA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlcyA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGEgOiBib29sIG9wdGlvbilcbiAgICA/KHN1YnRyZWUgOiBib29sIG9wdGlvbilcbiAgICA/KGF0dHJpYnV0ZV9vbGRfdmFsdWUgOiBib29sIG9wdGlvbilcbiAgICA/KGNoYXJhY3Rlcl9kYXRhX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX2ZpbHRlciA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3Qgb3B0aW9uKVxuICAgICgpIDogbXV0YXRpb25PYnNlcnZlciBKcy50ID1cbiAgbGV0IG9wdF9pdGVyIHggZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvYnMgPSBuZXclanMgbXV0YXRpb25PYnNlcnZlciAoSnMud3JhcF9jYWxsYmFjayBmKSBpblxuICBsZXQgY2ZnID0gZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCAoKSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGlsZF9saXN0IChmdW4gdiAtPiBjZmcjIy5jaGlsZExpc3QgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlcyAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlcyA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YSAoZnVuIHYgLT4gY2ZnIyMuY2hhcmFjdGVyRGF0YSA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBzdWJ0cmVlIChmdW4gdiAtPiBjZmcjIy5zdWJ0cmVlIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGF0dHJpYnV0ZV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmF0dHJpYnV0ZU9sZFZhbHVlIDo9IHYpIGluXG4gIGxldCAoKSA9XG4gICAgb3B0X2l0ZXIgY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUgOj0gdilcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBhdHRyaWJ1dGVfZmlsdGVyIChmdW4gbCAtPlxuICAgICAgICBjZmcjIy5hdHRyaWJ1dGVGaWx0ZXIgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkpXG4gIGluXG4gIGxldCAoKSA9IG9icyMjb2JzZXJ2ZSBub2RlIGNmZyBpblxuICBvYnNcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgUGllcnJlIENoYW1iYXJ0IDIwMTIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gPCA+IEpzLnRcblxubGV0IG9iaiA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgKHYgOiAnYSkgPVxuICAoKiAnXycgaXMgYWRkZWQgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb2JqZWN0cyBtZXRob2RzICopXG4gIEpzLlVuc2FmZS5zZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKSB2XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSA9XG4gIEpzLlVuc2FmZS5kZWxldGUgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpIDogJ2EgSnMuT3B0ZGVmLnQgPVxuICBKcy5VbnNhZmUuZ2V0IHQgKGsjI2NvbmNhdCAoSnMuc3RyaW5nIFwiX1wiKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IEpzLmpzX3N0cmluZyBKcy50IGxpc3QgPVxuICBsZXQga2V5X2FycmF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCA9XG4gICAgSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3QjI2tleXMgdFxuICBpblxuICBsZXQgcmVzID0gcmVmIFtdIGluXG4gIGZvciBpID0gMCB0byBwcmVkIGtleV9hcnJheSMjLmxlbmd0aCBkb1xuICAgIGxldCBrZXkgPVxuICAgICAgSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IGtleV9hcnJheSBpKSAoZnVuICgpIC0+IGZhaWx3aXRoIFwiSnN0YWJsZS5rZXlzXCIpXG4gICAgaW5cbiAgICByZXMgOj0ga2V5IyNzdWJzdHJpbmcgMCAocHJlZCBrZXkjIy5sZW5ndGgpIDo6ICFyZXNcbiAgZG9uZTtcbiAgTGlzdC5yZXYgIXJlc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBHcsOpZ29pcmUgSGVucnkgMjAxMC5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBwYXJzZV8gOlxuICAgICdhICdiICdjICdkLiBqc19zdHJpbmcgdCAtPiAoJ2IgdCwganNfc3RyaW5nIHQgLT4gJ2MgLT4gJ2QpIG1ldGhfY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYS4gJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnlfIDpcbiAgICAnYSAnYiAnYyAnZC4gJ2EgLT4gKCdiLCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGpzb24gOiBqc29uIEpzLnQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGlucHV0X3Jldml2ZXIgPVxuICBsZXQgcmV2aXZlciBfdGhpcyBfa2V5ICh2YWx1ZSA6IFVuc2FmZS5hbnkpIDogT2JqLnQgPVxuICAgIGlmIEpzLmVxdWFscyAodHlwZW9mIHZhbHVlKSAoc3RyaW5nIFwic3RyaW5nXCIpXG4gICAgdGhlbiBPYmoucmVwciAodG9fYnl0ZXN0cmluZyAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkpXG4gICAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIEpzLmFycmF5X2VtcHR5XG4gICAgICAgICAgICAmJiAoVW5zYWZlLmNvZXJjZSB2YWx1ZSkjIy5sZW5ndGggPT0gNFxuICAgICAgICAgICAgJiYgVW5zYWZlLmdldCB2YWx1ZSAwID09IDI1NVxuICAgIHRoZW5cbiAgICAgIE9iai5yZXByXG4gICAgICAgIChKc29vX3J1bnRpbWUuSW50NjQuY3JlYXRlX2ludDY0X2xvX21pX2hpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDEpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDIpXG4gICAgICAgICAgIChVbnNhZmUuZ2V0IHZhbHVlIDMpKVxuICAgIGVsc2UgT2JqLnJlcHIgdmFsdWVcbiAgaW5cbiAgd3JhcF9tZXRoX2NhbGxiYWNrIHJldml2ZXJcblxubGV0IHVuc2FmZV9pbnB1dCBzID0ganNvbiMjcGFyc2VfIHMgaW5wdXRfcmV2aXZlclxuXG5jbGFzcyB0eXBlIG9iaiA9IG9iamVjdFxuICBtZXRob2QgY29uc3RydWN0b3IgOiAnYS4gJ2EgY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbWxJbnQ2NF9jb25zdHIgPVxuICBsZXQgZHVtbXlfaW50NjQgPSAxTCBpblxuICBsZXQgZHVtbXlfb2JqIDogb2JqIHQgPSBPYmoubWFnaWMgZHVtbXlfaW50NjQgaW5cbiAgZHVtbXlfb2JqIyMuY29uc3RydWN0b3JcblxubGV0IG91dHB1dF9yZXZpdmVyIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gIGlmIE9iai50YWcgKE9iai5yZXByIHZhbHVlKSA9IE9iai5zdHJpbmdfdGFnXG4gIHRoZW4gT2JqLnJlcHIgKGJ5dGVzdHJpbmcgKE9iai5tYWdpYyB2YWx1ZSA6IHN0cmluZykpXG4gIGVsc2UgaWYgaW5zdGFuY2VvZiB2YWx1ZSBtbEludDY0X2NvbnN0clxuICB0aGVuXG4gICAgbGV0IHZhbHVlID0gVW5zYWZlLmNvZXJjZSB2YWx1ZSBpblxuICAgIE9iai5yZXByIChhcnJheSBbfCAyNTU7IHZhbHVlIyMubG87IHZhbHVlIyMubWk7IHZhbHVlIyMuaGkgfF0pXG4gIGVsc2UgT2JqLnJlcHIgdmFsdWVcblxubGV0IG91dHB1dCBvYmogPSBqc29uIyNzdHJpbmdpZnlfIG9iaiAoSnMud3JhcF9jYWxsYmFjayBvdXRwdXRfcmV2aXZlcilcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICAoKiBUaGUgdHlwZSBvZiBDU1MgY29sb3JzLiBGaXJzdCBieSBuYW1lIGFuZCB0aGVuIGJ5IGNvbnN0cnVjdG9yLiAqKVxuICB0eXBlIG5hbWUgPVxuICAgIHwgQWxpY2VibHVlXG4gICAgfCBBbnRpcXVld2hpdGVcbiAgICB8IEFxdWFcbiAgICB8IEFxdWFtYXJpbmVcbiAgICB8IEF6dXJlXG4gICAgfCBCZWlnZVxuICAgIHwgQmlzcXVlXG4gICAgfCBCbGFja1xuICAgIHwgQmxhbmNoZWRhbG1vbmRcbiAgICB8IEJsdWVcbiAgICB8IEJsdWV2aW9sZXRcbiAgICB8IEJyb3duXG4gICAgfCBCdXJseXdvb2RcbiAgICB8IENhZGV0Ymx1ZVxuICAgIHwgQ2hhcnRyZXVzZVxuICAgIHwgQ2hvY29sYXRlXG4gICAgfCBDb3JhbFxuICAgIHwgQ29ybmZsb3dlcmJsdWVcbiAgICB8IENvcm5zaWxrXG4gICAgfCBDcmltc29uXG4gICAgfCBDeWFuXG4gICAgfCBEYXJrYmx1ZVxuICAgIHwgRGFya2N5YW5cbiAgICB8IERhcmtnb2xkZW5yb2RcbiAgICB8IERhcmtncmF5XG4gICAgfCBEYXJrZ3JlZW5cbiAgICB8IERhcmtncmV5XG4gICAgfCBEYXJra2hha2lcbiAgICB8IERhcmttYWdlbnRhXG4gICAgfCBEYXJrb2xpdmVncmVlblxuICAgIHwgRGFya29yYW5nZVxuICAgIHwgRGFya29yY2hpZFxuICAgIHwgRGFya3JlZFxuICAgIHwgRGFya3NhbG1vblxuICAgIHwgRGFya3NlYWdyZWVuXG4gICAgfCBEYXJrc2xhdGVibHVlXG4gICAgfCBEYXJrc2xhdGVncmF5XG4gICAgfCBEYXJrc2xhdGVncmV5XG4gICAgfCBEYXJrdHVycXVvaXNlXG4gICAgfCBEYXJrdmlvbGV0XG4gICAgfCBEZWVwcGlua1xuICAgIHwgRGVlcHNreWJsdWVcbiAgICB8IERpbWdyYXlcbiAgICB8IERpbWdyZXlcbiAgICB8IERvZGdlcmJsdWVcbiAgICB8IEZpcmVicmlja1xuICAgIHwgRmxvcmFsd2hpdGVcbiAgICB8IEZvcmVzdGdyZWVuXG4gICAgfCBGdWNoc2lhXG4gICAgfCBHYWluc2Jvcm9cbiAgICB8IEdob3N0d2hpdGVcbiAgICB8IEdvbGRcbiAgICB8IEdvbGRlbnJvZFxuICAgIHwgR3JheVxuICAgIHwgR3JleVxuICAgIHwgR3JlZW5cbiAgICB8IEdyZWVueWVsbG93XG4gICAgfCBIb25leWRld1xuICAgIHwgSG90cGlua1xuICAgIHwgSW5kaWFucmVkXG4gICAgfCBJbmRpZ29cbiAgICB8IEl2b3J5XG4gICAgfCBLaGFraVxuICAgIHwgTGF2ZW5kZXJcbiAgICB8IExhdmVuZGVyYmx1c2hcbiAgICB8IExhd25ncmVlblxuICAgIHwgTGVtb25jaGlmZm9uXG4gICAgfCBMaWdodGJsdWVcbiAgICB8IExpZ2h0Y29yYWxcbiAgICB8IExpZ2h0Y3lhblxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3dcbiAgICB8IExpZ2h0Z3JheVxuICAgIHwgTGlnaHRncmVlblxuICAgIHwgTGlnaHRncmV5XG4gICAgfCBMaWdodHBpbmtcbiAgICB8IExpZ2h0c2FsbW9uXG4gICAgfCBMaWdodHNlYWdyZWVuXG4gICAgfCBMaWdodHNreWJsdWVcbiAgICB8IExpZ2h0c2xhdGVncmF5XG4gICAgfCBMaWdodHNsYXRlZ3JleVxuICAgIHwgTGlnaHRzdGVlbGJsdWVcbiAgICB8IExpZ2h0eWVsbG93XG4gICAgfCBMaW1lXG4gICAgfCBMaW1lZ3JlZW5cbiAgICB8IExpbmVuXG4gICAgfCBNYWdlbnRhXG4gICAgfCBNYXJvb25cbiAgICB8IE1lZGl1bWFxdWFtYXJpbmVcbiAgICB8IE1lZGl1bWJsdWVcbiAgICB8IE1lZGl1bW9yY2hpZFxuICAgIHwgTWVkaXVtcHVycGxlXG4gICAgfCBNZWRpdW1zZWFncmVlblxuICAgIHwgTWVkaXVtc2xhdGVibHVlXG4gICAgfCBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgTWVkaXVtdHVycXVvaXNlXG4gICAgfCBNZWRpdW12aW9sZXRyZWRcbiAgICB8IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgTWludGNyZWFtXG4gICAgfCBNaXN0eXJvc2VcbiAgICB8IE1vY2Nhc2luXG4gICAgfCBOYXZham93aGl0ZVxuICAgIHwgTmF2eVxuICAgIHwgT2xkbGFjZVxuICAgIHwgT2xpdmVcbiAgICB8IE9saXZlZHJhYlxuICAgIHwgT3JhbmdlXG4gICAgfCBPcmFuZ2VyZWRcbiAgICB8IE9yY2hpZFxuICAgIHwgUGFsZWdvbGRlbnJvZFxuICAgIHwgUGFsZWdyZWVuXG4gICAgfCBQYWxldHVycXVvaXNlXG4gICAgfCBQYWxldmlvbGV0cmVkXG4gICAgfCBQYXBheWF3aGlwXG4gICAgfCBQZWFjaHB1ZmZcbiAgICB8IFBlcnVcbiAgICB8IFBpbmtcbiAgICB8IFBsdW1cbiAgICB8IFBvd2RlcmJsdWVcbiAgICB8IFB1cnBsZVxuICAgIHwgUmVkXG4gICAgfCBSb3N5YnJvd25cbiAgICB8IFJveWFsYmx1ZVxuICAgIHwgU2FkZGxlYnJvd25cbiAgICB8IFNhbG1vblxuICAgIHwgU2FuZHlicm93blxuICAgIHwgU2VhZ3JlZW5cbiAgICB8IFNlYXNoZWxsXG4gICAgfCBTaWVubmFcbiAgICB8IFNpbHZlclxuICAgIHwgU2t5Ymx1ZVxuICAgIHwgU2xhdGVibHVlXG4gICAgfCBTbGF0ZWdyYXlcbiAgICB8IFNsYXRlZ3JleVxuICAgIHwgU25vd1xuICAgIHwgU3ByaW5nZ3JlZW5cbiAgICB8IFN0ZWVsYmx1ZVxuICAgIHwgVGFuXG4gICAgfCBUZWFsXG4gICAgfCBUaGlzdGxlXG4gICAgfCBUb21hdG9cbiAgICB8IFR1cnF1b2lzZVxuICAgIHwgVmlvbGV0XG4gICAgfCBXaGVhdFxuICAgIHwgV2hpdGVcbiAgICB8IFdoaXRlc21va2VcbiAgICB8IFllbGxvd1xuICAgIHwgWWVsbG93Z3JlZW5cblxuICBsZXQgc3RyaW5nX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IFwiYWxpY2VibHVlXCJcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiBcImFudGlxdWV3aGl0ZVwiXG4gICAgfCBBcXVhIC0+IFwiYXF1YVwiXG4gICAgfCBBcXVhbWFyaW5lIC0+IFwiYXF1YW1hcmluZVwiXG4gICAgfCBBenVyZSAtPiBcImF6dXJlXCJcbiAgICB8IEJlaWdlIC0+IFwiYmVpZ2VcIlxuICAgIHwgQmlzcXVlIC0+IFwiYmlzcXVlXCJcbiAgICB8IEJsYWNrIC0+IFwiYmxhY2tcIlxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gXCJibGFuY2hlZGFsbW9uZFwiXG4gICAgfCBCbHVlIC0+IFwiYmx1ZVwiXG4gICAgfCBCbHVldmlvbGV0IC0+IFwiYmx1ZXZpb2xldFwiXG4gICAgfCBCcm93biAtPiBcImJyb3duXCJcbiAgICB8IEJ1cmx5d29vZCAtPiBcImJ1cmx5d29vZFwiXG4gICAgfCBDYWRldGJsdWUgLT4gXCJjYWRldGJsdWVcIlxuICAgIHwgQ2hhcnRyZXVzZSAtPiBcImNoYXJ0cmV1c2VcIlxuICAgIHwgQ2hvY29sYXRlIC0+IFwiY2hvY29sYXRlXCJcbiAgICB8IENvcmFsIC0+IFwiY29yYWxcIlxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gXCJjb3JuZmxvd2VyYmx1ZVwiXG4gICAgfCBDb3Juc2lsayAtPiBcImNvcm5zaWxrXCJcbiAgICB8IENyaW1zb24gLT4gXCJjcmltc29uXCJcbiAgICB8IEN5YW4gLT4gXCJjeWFuXCJcbiAgICB8IERhcmtibHVlIC0+IFwiZGFya2JsdWVcIlxuICAgIHwgRGFya2N5YW4gLT4gXCJkYXJrY3lhblwiXG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IFwiZGFya2dvbGRlbnJvZFwiXG4gICAgfCBEYXJrZ3JheSAtPiBcImRhcmtncmF5XCJcbiAgICB8IERhcmtncmVlbiAtPiBcImRhcmtncmVlblwiXG4gICAgfCBEYXJrZ3JleSAtPiBcImRhcmtncmV5XCJcbiAgICB8IERhcmtraGFraSAtPiBcImRhcmtraGFraVwiXG4gICAgfCBEYXJrbWFnZW50YSAtPiBcImRhcmttYWdlbnRhXCJcbiAgICB8IERhcmtvbGl2ZWdyZWVuIC0+IFwiZGFya29saXZlZ3JlZW5cIlxuICAgIHwgRGFya29yYW5nZSAtPiBcImRhcmtvcmFuZ2VcIlxuICAgIHwgRGFya29yY2hpZCAtPiBcImRhcmtvcmNoaWRcIlxuICAgIHwgRGFya3JlZCAtPiBcImRhcmtyZWRcIlxuICAgIHwgRGFya3NhbG1vbiAtPiBcImRhcmtzYWxtb25cIlxuICAgIHwgRGFya3NlYWdyZWVuIC0+IFwiZGFya3NlYWdyZWVuXCJcbiAgICB8IERhcmtzbGF0ZWJsdWUgLT4gXCJkYXJrc2xhdGVibHVlXCJcbiAgICB8IERhcmtzbGF0ZWdyYXkgLT4gXCJkYXJrc2xhdGVncmF5XCJcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gXCJkYXJrc2xhdGVncmV5XCJcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gXCJkYXJrdHVycXVvaXNlXCJcbiAgICB8IERhcmt2aW9sZXQgLT4gXCJkYXJrdmlvbGV0XCJcbiAgICB8IERlZXBwaW5rIC0+IFwiZGVlcHBpbmtcIlxuICAgIHwgRGVlcHNreWJsdWUgLT4gXCJkZWVwc2t5Ymx1ZVwiXG4gICAgfCBEaW1ncmF5IC0+IFwiZGltZ3JheVwiXG4gICAgfCBEaW1ncmV5IC0+IFwiZGltZ3JleVwiXG4gICAgfCBEb2RnZXJibHVlIC0+IFwiZG9kZ2VyYmx1ZVwiXG4gICAgfCBGaXJlYnJpY2sgLT4gXCJmaXJlYnJpY2tcIlxuICAgIHwgRmxvcmFsd2hpdGUgLT4gXCJmbG9yYWx3aGl0ZVwiXG4gICAgfCBGb3Jlc3RncmVlbiAtPiBcImZvcmVzdGdyZWVuXCJcbiAgICB8IEZ1Y2hzaWEgLT4gXCJmdWNoc2lhXCJcbiAgICB8IEdhaW5zYm9ybyAtPiBcImdhaW5zYm9yb1wiXG4gICAgfCBHaG9zdHdoaXRlIC0+IFwiZ2hvc3R3aGl0ZVwiXG4gICAgfCBHb2xkIC0+IFwiZ29sZFwiXG4gICAgfCBHb2xkZW5yb2QgLT4gXCJnb2xkZW5yb2RcIlxuICAgIHwgR3JheSAtPiBcImdyYXlcIlxuICAgIHwgR3JlZW4gLT4gXCJncmVlblwiXG4gICAgfCBHcmVlbnllbGxvdyAtPiBcImdyZWVueWVsbG93XCJcbiAgICB8IEdyZXkgLT4gXCJncmV5XCJcbiAgICB8IEhvbmV5ZGV3IC0+IFwiaG9uZXlkZXdcIlxuICAgIHwgSG90cGluayAtPiBcImhvdHBpbmtcIlxuICAgIHwgSW5kaWFucmVkIC0+IFwiaW5kaWFucmVkXCJcbiAgICB8IEluZGlnbyAtPiBcImluZGlnb1wiXG4gICAgfCBJdm9yeSAtPiBcIml2b3J5XCJcbiAgICB8IEtoYWtpIC0+IFwia2hha2lcIlxuICAgIHwgTGF2ZW5kZXIgLT4gXCJsYXZlbmRlclwiXG4gICAgfCBMYXZlbmRlcmJsdXNoIC0+IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgfCBMYXduZ3JlZW4gLT4gXCJsYXduZ3JlZW5cIlxuICAgIHwgTGVtb25jaGlmZm9uIC0+IFwibGVtb25jaGlmZm9uXCJcbiAgICB8IExpZ2h0Ymx1ZSAtPiBcImxpZ2h0Ymx1ZVwiXG4gICAgfCBMaWdodGNvcmFsIC0+IFwibGlnaHRjb3JhbFwiXG4gICAgfCBMaWdodGN5YW4gLT4gXCJsaWdodGN5YW5cIlxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgfCBMaWdodGdyYXkgLT4gXCJsaWdodGdyYXlcIlxuICAgIHwgTGlnaHRncmVlbiAtPiBcImxpZ2h0Z3JlZW5cIlxuICAgIHwgTGlnaHRncmV5IC0+IFwibGlnaHRncmV5XCJcbiAgICB8IExpZ2h0cGluayAtPiBcImxpZ2h0cGlua1wiXG4gICAgfCBMaWdodHNhbG1vbiAtPiBcImxpZ2h0c2FsbW9uXCJcbiAgICB8IExpZ2h0c2VhZ3JlZW4gLT4gXCJsaWdodHNlYWdyZWVuXCJcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiBcImxpZ2h0c2t5Ymx1ZVwiXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgIHwgTGlnaHRzdGVlbGJsdWUgLT4gXCJsaWdodHN0ZWVsYmx1ZVwiXG4gICAgfCBMaWdodHllbGxvdyAtPiBcImxpZ2h0eWVsbG93XCJcbiAgICB8IExpbWUgLT4gXCJsaW1lXCJcbiAgICB8IExpbWVncmVlbiAtPiBcImxpbWVncmVlblwiXG4gICAgfCBMaW5lbiAtPiBcImxpbmVuXCJcbiAgICB8IE1hZ2VudGEgLT4gXCJtYWdlbnRhXCJcbiAgICB8IE1hcm9vbiAtPiBcIm1hcm9vblwiXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgfCBNZWRpdW1ibHVlIC0+IFwibWVkaXVtYmx1ZVwiXG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gXCJtZWRpdW1vcmNoaWRcIlxuICAgIHwgTWVkaXVtcHVycGxlIC0+IFwibWVkaXVtcHVycGxlXCJcbiAgICB8IE1lZGl1bXNlYWdyZWVuIC0+IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgIHwgTWVkaXVtc2xhdGVibHVlIC0+IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuIC0+IFwibWVkaXVtc3ByaW5nZ3JlZW5cIlxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IFwibWVkaXVtdHVycXVvaXNlXCJcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiBcIm1lZGl1bXZpb2xldHJlZFwiXG4gICAgfCBNaWRuaWdodGJsdWUgLT4gXCJtaWRuaWdodGJsdWVcIlxuICAgIHwgTWludGNyZWFtIC0+IFwibWludGNyZWFtXCJcbiAgICB8IE1pc3R5cm9zZSAtPiBcIm1pc3R5cm9zZVwiXG4gICAgfCBNb2NjYXNpbiAtPiBcIm1vY2Nhc2luXCJcbiAgICB8IE5hdmFqb3doaXRlIC0+IFwibmF2YWpvd2hpdGVcIlxuICAgIHwgTmF2eSAtPiBcIm5hdnlcIlxuICAgIHwgT2xkbGFjZSAtPiBcIm9sZGxhY2VcIlxuICAgIHwgT2xpdmUgLT4gXCJvbGl2ZVwiXG4gICAgfCBPbGl2ZWRyYWIgLT4gXCJvbGl2ZWRyYWJcIlxuICAgIHwgT3JhbmdlIC0+IFwib3JhbmdlXCJcbiAgICB8IE9yYW5nZXJlZCAtPiBcIm9yYW5nZXJlZFwiXG4gICAgfCBPcmNoaWQgLT4gXCJvcmNoaWRcIlxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiBcInBhbGVnb2xkZW5yb2RcIlxuICAgIHwgUGFsZWdyZWVuIC0+IFwicGFsZWdyZWVuXCJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gXCJwYWxldHVycXVvaXNlXCJcbiAgICB8IFBhbGV2aW9sZXRyZWQgLT4gXCJwYWxldmlvbGV0cmVkXCJcbiAgICB8IFBhcGF5YXdoaXAgLT4gXCJwYXBheWF3aGlwXCJcbiAgICB8IFBlYWNocHVmZiAtPiBcInBlYWNocHVmZlwiXG4gICAgfCBQZXJ1IC0+IFwicGVydVwiXG4gICAgfCBQaW5rIC0+IFwicGlua1wiXG4gICAgfCBQbHVtIC0+IFwicGx1bVwiXG4gICAgfCBQb3dkZXJibHVlIC0+IFwicG93ZGVyYmx1ZVwiXG4gICAgfCBQdXJwbGUgLT4gXCJwdXJwbGVcIlxuICAgIHwgUmVkIC0+IFwicmVkXCJcbiAgICB8IFJvc3licm93biAtPiBcInJvc3licm93blwiXG4gICAgfCBSb3lhbGJsdWUgLT4gXCJyb3lhbGJsdWVcIlxuICAgIHwgU2FkZGxlYnJvd24gLT4gXCJzYWRkbGVicm93blwiXG4gICAgfCBTYWxtb24gLT4gXCJzYWxtb25cIlxuICAgIHwgU2FuZHlicm93biAtPiBcInNhbmR5YnJvd25cIlxuICAgIHwgU2VhZ3JlZW4gLT4gXCJzZWFncmVlblwiXG4gICAgfCBTZWFzaGVsbCAtPiBcInNlYXNoZWxsXCJcbiAgICB8IFNpZW5uYSAtPiBcInNpZW5uYVwiXG4gICAgfCBTaWx2ZXIgLT4gXCJzaWx2ZXJcIlxuICAgIHwgU2t5Ymx1ZSAtPiBcInNreWJsdWVcIlxuICAgIHwgU2xhdGVibHVlIC0+IFwic2xhdGVibHVlXCJcbiAgICB8IFNsYXRlZ3JheSAtPiBcInNsYXRlZ3JheVwiXG4gICAgfCBTbGF0ZWdyZXkgLT4gXCJzbGF0ZWdyZXlcIlxuICAgIHwgU25vdyAtPiBcInNub3dcIlxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gXCJzcHJpbmdncmVlblwiXG4gICAgfCBTdGVlbGJsdWUgLT4gXCJzdGVlbGJsdWVcIlxuICAgIHwgVGFuIC0+IFwidGFuXCJcbiAgICB8IFRlYWwgLT4gXCJ0ZWFsXCJcbiAgICB8IFRoaXN0bGUgLT4gXCJ0aGlzdGxlXCJcbiAgICB8IFRvbWF0byAtPiBcInRvbWF0b1wiXG4gICAgfCBUdXJxdW9pc2UgLT4gXCJ0dXJxdW9pc2VcIlxuICAgIHwgVmlvbGV0IC0+IFwidmlvbGV0XCJcbiAgICB8IFdoZWF0IC0+IFwid2hlYXRcIlxuICAgIHwgV2hpdGUgLT4gXCJ3aGl0ZVwiXG4gICAgfCBXaGl0ZXNtb2tlIC0+IFwid2hpdGVzbW9rZVwiXG4gICAgfCBZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICAgIHwgWWVsbG93Z3JlZW4gLT4gXCJ5ZWxsb3dncmVlblwiXG5cbiAgbGV0IG5hbWVfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFwiYWxpY2VibHVlXCIgLT4gQWxpY2VibHVlXG4gICAgfCBcImFudGlxdWV3aGl0ZVwiIC0+IEFudGlxdWV3aGl0ZVxuICAgIHwgXCJhcXVhXCIgLT4gQXF1YVxuICAgIHwgXCJhcXVhbWFyaW5lXCIgLT4gQXF1YW1hcmluZVxuICAgIHwgXCJhenVyZVwiIC0+IEF6dXJlXG4gICAgfCBcImJlaWdlXCIgLT4gQmVpZ2VcbiAgICB8IFwiYmlzcXVlXCIgLT4gQmlzcXVlXG4gICAgfCBcImJsYWNrXCIgLT4gQmxhY2tcbiAgICB8IFwiYmxhbmNoZWRhbG1vbmRcIiAtPiBCbGFuY2hlZGFsbW9uZFxuICAgIHwgXCJibHVlXCIgLT4gQmx1ZVxuICAgIHwgXCJibHVldmlvbGV0XCIgLT4gQmx1ZXZpb2xldFxuICAgIHwgXCJicm93blwiIC0+IEJyb3duXG4gICAgfCBcImJ1cmx5d29vZFwiIC0+IEJ1cmx5d29vZFxuICAgIHwgXCJjYWRldGJsdWVcIiAtPiBDYWRldGJsdWVcbiAgICB8IFwiY2hhcnRyZXVzZVwiIC0+IENoYXJ0cmV1c2VcbiAgICB8IFwiY2hvY29sYXRlXCIgLT4gQ2hvY29sYXRlXG4gICAgfCBcImNvcmFsXCIgLT4gQ29yYWxcbiAgICB8IFwiY29ybmZsb3dlcmJsdWVcIiAtPiBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgXCJjb3Juc2lsa1wiIC0+IENvcm5zaWxrXG4gICAgfCBcImNyaW1zb25cIiAtPiBDcmltc29uXG4gICAgfCBcImN5YW5cIiAtPiBDeWFuXG4gICAgfCBcImRhcmtibHVlXCIgLT4gRGFya2JsdWVcbiAgICB8IFwiZGFya2N5YW5cIiAtPiBEYXJrY3lhblxuICAgIHwgXCJkYXJrZ29sZGVucm9kXCIgLT4gRGFya2dvbGRlbnJvZFxuICAgIHwgXCJkYXJrZ3JheVwiIC0+IERhcmtncmF5XG4gICAgfCBcImRhcmtncmVlblwiIC0+IERhcmtncmVlblxuICAgIHwgXCJkYXJrZ3JleVwiIC0+IERhcmtncmV5XG4gICAgfCBcImRhcmtraGFraVwiIC0+IERhcmtraGFraVxuICAgIHwgXCJkYXJrbWFnZW50YVwiIC0+IERhcmttYWdlbnRhXG4gICAgfCBcImRhcmtvbGl2ZWdyZWVuXCIgLT4gRGFya29saXZlZ3JlZW5cbiAgICB8IFwiZGFya29yYW5nZVwiIC0+IERhcmtvcmFuZ2VcbiAgICB8IFwiZGFya29yY2hpZFwiIC0+IERhcmtvcmNoaWRcbiAgICB8IFwiZGFya3JlZFwiIC0+IERhcmtyZWRcbiAgICB8IFwiZGFya3NhbG1vblwiIC0+IERhcmtzYWxtb25cbiAgICB8IFwiZGFya3NlYWdyZWVuXCIgLT4gRGFya3NlYWdyZWVuXG4gICAgfCBcImRhcmtzbGF0ZWJsdWVcIiAtPiBEYXJrc2xhdGVibHVlXG4gICAgfCBcImRhcmtzbGF0ZWdyYXlcIiAtPiBEYXJrc2xhdGVncmF5XG4gICAgfCBcImRhcmtzbGF0ZWdyZXlcIiAtPiBEYXJrc2xhdGVncmV5XG4gICAgfCBcImRhcmt0dXJxdW9pc2VcIiAtPiBEYXJrdHVycXVvaXNlXG4gICAgfCBcImRhcmt2aW9sZXRcIiAtPiBEYXJrdmlvbGV0XG4gICAgfCBcImRlZXBwaW5rXCIgLT4gRGVlcHBpbmtcbiAgICB8IFwiZGVlcHNreWJsdWVcIiAtPiBEZWVwc2t5Ymx1ZVxuICAgIHwgXCJkaW1ncmF5XCIgLT4gRGltZ3JheVxuICAgIHwgXCJkaW1ncmV5XCIgLT4gRGltZ3JleVxuICAgIHwgXCJkb2RnZXJibHVlXCIgLT4gRG9kZ2VyYmx1ZVxuICAgIHwgXCJmaXJlYnJpY2tcIiAtPiBGaXJlYnJpY2tcbiAgICB8IFwiZmxvcmFsd2hpdGVcIiAtPiBGbG9yYWx3aGl0ZVxuICAgIHwgXCJmb3Jlc3RncmVlblwiIC0+IEZvcmVzdGdyZWVuXG4gICAgfCBcImZ1Y2hzaWFcIiAtPiBGdWNoc2lhXG4gICAgfCBcImdhaW5zYm9yb1wiIC0+IEdhaW5zYm9yb1xuICAgIHwgXCJnaG9zdHdoaXRlXCIgLT4gR2hvc3R3aGl0ZVxuICAgIHwgXCJnb2xkXCIgLT4gR29sZFxuICAgIHwgXCJnb2xkZW5yb2RcIiAtPiBHb2xkZW5yb2RcbiAgICB8IFwiZ3JheVwiIC0+IEdyYXlcbiAgICB8IFwiZ3JlZW5cIiAtPiBHcmVlblxuICAgIHwgXCJncmVlbnllbGxvd1wiIC0+IEdyZWVueWVsbG93XG4gICAgfCBcImdyZXlcIiAtPiBHcmV5XG4gICAgfCBcImhvbmV5ZGV3XCIgLT4gSG9uZXlkZXdcbiAgICB8IFwiaG90cGlua1wiIC0+IEhvdHBpbmtcbiAgICB8IFwiaW5kaWFucmVkXCIgLT4gSW5kaWFucmVkXG4gICAgfCBcImluZGlnb1wiIC0+IEluZGlnb1xuICAgIHwgXCJpdm9yeVwiIC0+IEl2b3J5XG4gICAgfCBcImtoYWtpXCIgLT4gS2hha2lcbiAgICB8IFwibGF2ZW5kZXJcIiAtPiBMYXZlbmRlclxuICAgIHwgXCJsYXZlbmRlcmJsdXNoXCIgLT4gTGF2ZW5kZXJibHVzaFxuICAgIHwgXCJsYXduZ3JlZW5cIiAtPiBMYXduZ3JlZW5cbiAgICB8IFwibGVtb25jaGlmZm9uXCIgLT4gTGVtb25jaGlmZm9uXG4gICAgfCBcImxpZ2h0Ymx1ZVwiIC0+IExpZ2h0Ymx1ZVxuICAgIHwgXCJsaWdodGNvcmFsXCIgLT4gTGlnaHRjb3JhbFxuICAgIHwgXCJsaWdodGN5YW5cIiAtPiBMaWdodGN5YW5cbiAgICB8IFwibGlnaHRnb2xkZW5yb2R5ZWxsb3dcIiAtPiBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgXCJsaWdodGdyYXlcIiAtPiBMaWdodGdyYXlcbiAgICB8IFwibGlnaHRncmVlblwiIC0+IExpZ2h0Z3JlZW5cbiAgICB8IFwibGlnaHRncmV5XCIgLT4gTGlnaHRncmV5XG4gICAgfCBcImxpZ2h0cGlua1wiIC0+IExpZ2h0cGlua1xuICAgIHwgXCJsaWdodHNhbG1vblwiIC0+IExpZ2h0c2FsbW9uXG4gICAgfCBcImxpZ2h0c2VhZ3JlZW5cIiAtPiBMaWdodHNlYWdyZWVuXG4gICAgfCBcImxpZ2h0c2t5Ymx1ZVwiIC0+IExpZ2h0c2t5Ymx1ZVxuICAgIHwgXCJsaWdodHNsYXRlZ3JheVwiIC0+IExpZ2h0c2xhdGVncmF5XG4gICAgfCBcImxpZ2h0c2xhdGVncmV5XCIgLT4gTGlnaHRzbGF0ZWdyZXlcbiAgICB8IFwibGlnaHRzdGVlbGJsdWVcIiAtPiBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgXCJsaWdodHllbGxvd1wiIC0+IExpZ2h0eWVsbG93XG4gICAgfCBcImxpbWVcIiAtPiBMaW1lXG4gICAgfCBcImxpbWVncmVlblwiIC0+IExpbWVncmVlblxuICAgIHwgXCJsaW5lblwiIC0+IExpbmVuXG4gICAgfCBcIm1hZ2VudGFcIiAtPiBNYWdlbnRhXG4gICAgfCBcIm1hcm9vblwiIC0+IE1hcm9vblxuICAgIHwgXCJtZWRpdW1hcXVhbWFyaW5lXCIgLT4gTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgXCJtZWRpdW1ibHVlXCIgLT4gTWVkaXVtYmx1ZVxuICAgIHwgXCJtZWRpdW1vcmNoaWRcIiAtPiBNZWRpdW1vcmNoaWRcbiAgICB8IFwibWVkaXVtcHVycGxlXCIgLT4gTWVkaXVtcHVycGxlXG4gICAgfCBcIm1lZGl1bXNlYWdyZWVuXCIgLT4gTWVkaXVtc2VhZ3JlZW5cbiAgICB8IFwibWVkaXVtc2xhdGVibHVlXCIgLT4gTWVkaXVtc2xhdGVibHVlXG4gICAgfCBcIm1lZGl1bXNwcmluZ2dyZWVuXCIgLT4gTWVkaXVtc3ByaW5nZ3JlZW5cbiAgICB8IFwibWVkaXVtdHVycXVvaXNlXCIgLT4gTWVkaXVtdHVycXVvaXNlXG4gICAgfCBcIm1lZGl1bXZpb2xldHJlZFwiIC0+IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgXCJtaWRuaWdodGJsdWVcIiAtPiBNaWRuaWdodGJsdWVcbiAgICB8IFwibWludGNyZWFtXCIgLT4gTWludGNyZWFtXG4gICAgfCBcIm1pc3R5cm9zZVwiIC0+IE1pc3R5cm9zZVxuICAgIHwgXCJtb2NjYXNpblwiIC0+IE1vY2Nhc2luXG4gICAgfCBcIm5hdmFqb3doaXRlXCIgLT4gTmF2YWpvd2hpdGVcbiAgICB8IFwibmF2eVwiIC0+IE5hdnlcbiAgICB8IFwib2xkbGFjZVwiIC0+IE9sZGxhY2VcbiAgICB8IFwib2xpdmVcIiAtPiBPbGl2ZVxuICAgIHwgXCJvbGl2ZWRyYWJcIiAtPiBPbGl2ZWRyYWJcbiAgICB8IFwib3JhbmdlXCIgLT4gT3JhbmdlXG4gICAgfCBcIm9yYW5nZXJlZFwiIC0+IE9yYW5nZXJlZFxuICAgIHwgXCJvcmNoaWRcIiAtPiBPcmNoaWRcbiAgICB8IFwicGFsZWdvbGRlbnJvZFwiIC0+IFBhbGVnb2xkZW5yb2RcbiAgICB8IFwicGFsZWdyZWVuXCIgLT4gUGFsZWdyZWVuXG4gICAgfCBcInBhbGV0dXJxdW9pc2VcIiAtPiBQYWxldHVycXVvaXNlXG4gICAgfCBcInBhbGV2aW9sZXRyZWRcIiAtPiBQYWxldmlvbGV0cmVkXG4gICAgfCBcInBhcGF5YXdoaXBcIiAtPiBQYXBheWF3aGlwXG4gICAgfCBcInBlYWNocHVmZlwiIC0+IFBlYWNocHVmZlxuICAgIHwgXCJwZXJ1XCIgLT4gUGVydVxuICAgIHwgXCJwaW5rXCIgLT4gUGlua1xuICAgIHwgXCJwbHVtXCIgLT4gUGx1bVxuICAgIHwgXCJwb3dkZXJibHVlXCIgLT4gUG93ZGVyYmx1ZVxuICAgIHwgXCJwdXJwbGVcIiAtPiBQdXJwbGVcbiAgICB8IFwicmVkXCIgLT4gUmVkXG4gICAgfCBcInJvc3licm93blwiIC0+IFJvc3licm93blxuICAgIHwgXCJyb3lhbGJsdWVcIiAtPiBSb3lhbGJsdWVcbiAgICB8IFwic2FkZGxlYnJvd25cIiAtPiBTYWRkbGVicm93blxuICAgIHwgXCJzYWxtb25cIiAtPiBTYWxtb25cbiAgICB8IFwic2FuZHlicm93blwiIC0+IFNhbmR5YnJvd25cbiAgICB8IFwic2VhZ3JlZW5cIiAtPiBTZWFncmVlblxuICAgIHwgXCJzZWFzaGVsbFwiIC0+IFNlYXNoZWxsXG4gICAgfCBcInNpZW5uYVwiIC0+IFNpZW5uYVxuICAgIHwgXCJzaWx2ZXJcIiAtPiBTaWx2ZXJcbiAgICB8IFwic2t5Ymx1ZVwiIC0+IFNreWJsdWVcbiAgICB8IFwic2xhdGVibHVlXCIgLT4gU2xhdGVibHVlXG4gICAgfCBcInNsYXRlZ3JheVwiIC0+IFNsYXRlZ3JheVxuICAgIHwgXCJzbGF0ZWdyZXlcIiAtPiBTbGF0ZWdyZXlcbiAgICB8IFwic25vd1wiIC0+IFNub3dcbiAgICB8IFwic3ByaW5nZ3JlZW5cIiAtPiBTcHJpbmdncmVlblxuICAgIHwgXCJzdGVlbGJsdWVcIiAtPiBTdGVlbGJsdWVcbiAgICB8IFwidGFuXCIgLT4gVGFuXG4gICAgfCBcInRlYWxcIiAtPiBUZWFsXG4gICAgfCBcInRoaXN0bGVcIiAtPiBUaGlzdGxlXG4gICAgfCBcInRvbWF0b1wiIC0+IFRvbWF0b1xuICAgIHwgXCJ0dXJxdW9pc2VcIiAtPiBUdXJxdW9pc2VcbiAgICB8IFwidmlvbGV0XCIgLT4gVmlvbGV0XG4gICAgfCBcIndoZWF0XCIgLT4gV2hlYXRcbiAgICB8IFwid2hpdGVcIiAtPiBXaGl0ZVxuICAgIHwgXCJ3aGl0ZXNtb2tlXCIgLT4gV2hpdGVzbW9rZVxuICAgIHwgXCJ5ZWxsb3dcIiAtPiBZZWxsb3dcbiAgICB8IFwieWVsbG93Z3JlZW5cIiAtPiBZZWxsb3dncmVlblxuICAgIHwgcyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGNvbG9yIG5hbWVcIikpXG5cbiAgbGV0IHJnYl9vZl9uYW1lID0gZnVuY3Rpb25cbiAgICB8IEFsaWNlYmx1ZSAtPiAyNDAsIDI0OCwgMjU1XG4gICAgfCBBbnRpcXVld2hpdGUgLT4gMjUwLCAyMzUsIDIxNVxuICAgIHwgQXF1YSAtPiAwLCAyNTUsIDI1NVxuICAgIHwgQXF1YW1hcmluZSAtPiAxMjcsIDI1NSwgMjEyXG4gICAgfCBBenVyZSAtPiAyNDAsIDI1NSwgMjU1XG4gICAgfCBCZWlnZSAtPiAyNDUsIDI0NSwgMjIwXG4gICAgfCBCaXNxdWUgLT4gMjU1LCAyMjgsIDE5NlxuICAgIHwgQmxhY2sgLT4gMCwgMCwgMFxuICAgIHwgQmxhbmNoZWRhbG1vbmQgLT4gMjU1LCAyMzUsIDIwNVxuICAgIHwgQmx1ZSAtPiAwLCAwLCAyNTVcbiAgICB8IEJsdWV2aW9sZXQgLT4gMTM4LCA0MywgMjI2XG4gICAgfCBCcm93biAtPiAxNjUsIDQyLCA0MlxuICAgIHwgQnVybHl3b29kIC0+IDIyMiwgMTg0LCAxMzVcbiAgICB8IENhZGV0Ymx1ZSAtPiA5NSwgMTU4LCAxNjBcbiAgICB8IENoYXJ0cmV1c2UgLT4gMTI3LCAyNTUsIDBcbiAgICB8IENob2NvbGF0ZSAtPiAyMTAsIDEwNSwgMzBcbiAgICB8IENvcmFsIC0+IDI1NSwgMTI3LCA4MFxuICAgIHwgQ29ybmZsb3dlcmJsdWUgLT4gMTAwLCAxNDksIDIzN1xuICAgIHwgQ29ybnNpbGsgLT4gMjU1LCAyNDgsIDIyMFxuICAgIHwgQ3JpbXNvbiAtPiAyMjAsIDIwLCA2MFxuICAgIHwgQ3lhbiAtPiAwLCAyNTUsIDI1NVxuICAgIHwgRGFya2JsdWUgLT4gMCwgMCwgMTM5XG4gICAgfCBEYXJrY3lhbiAtPiAwLCAxMzksIDEzOVxuICAgIHwgRGFya2dvbGRlbnJvZCAtPiAxODQsIDEzNCwgMTFcbiAgICB8IERhcmtncmF5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtncmVlbiAtPiAwLCAxMDAsIDBcbiAgICB8IERhcmtncmV5IC0+IDE2OSwgMTY5LCAxNjlcbiAgICB8IERhcmtraGFraSAtPiAxODksIDE4MywgMTA3XG4gICAgfCBEYXJrbWFnZW50YSAtPiAxMzksIDAsIDEzOVxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gODUsIDEwNywgNDdcbiAgICB8IERhcmtvcmFuZ2UgLT4gMjU1LCAxNDAsIDBcbiAgICB8IERhcmtvcmNoaWQgLT4gMTUzLCA1MCwgMjA0XG4gICAgfCBEYXJrcmVkIC0+IDEzOSwgMCwgMFxuICAgIHwgRGFya3NhbG1vbiAtPiAyMzMsIDE1MCwgMTIyXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gMTQzLCAxODgsIDE0M1xuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiA3MiwgNjEsIDEzOVxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiA0NywgNzksIDc5XG4gICAgfCBEYXJrc2xhdGVncmV5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmt0dXJxdW9pc2UgLT4gMCwgMjA2LCAyMDlcbiAgICB8IERhcmt2aW9sZXQgLT4gMTQ4LCAwLCAyMTFcbiAgICB8IERlZXBwaW5rIC0+IDI1NSwgMjAsIDE0N1xuICAgIHwgRGVlcHNreWJsdWUgLT4gMCwgMTkxLCAyNTVcbiAgICB8IERpbWdyYXkgLT4gMTA1LCAxMDUsIDEwNVxuICAgIHwgRGltZ3JleSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEb2RnZXJibHVlIC0+IDMwLCAxNDQsIDI1NVxuICAgIHwgRmlyZWJyaWNrIC0+IDE3OCwgMzQsIDM0XG4gICAgfCBGbG9yYWx3aGl0ZSAtPiAyNTUsIDI1MCwgMjQwXG4gICAgfCBGb3Jlc3RncmVlbiAtPiAzNCwgMTM5LCAzNFxuICAgIHwgRnVjaHNpYSAtPiAyNTUsIDAsIDI1NVxuICAgIHwgR2FpbnNib3JvIC0+IDIyMCwgMjIwLCAyMjBcbiAgICB8IEdob3N0d2hpdGUgLT4gMjQ4LCAyNDgsIDI1NVxuICAgIHwgR29sZCAtPiAyNTUsIDIxNSwgMFxuICAgIHwgR29sZGVucm9kIC0+IDIxOCwgMTY1LCAzMlxuICAgIHwgR3JheSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBHcmVlbiAtPiAwLCAxMjgsIDBcbiAgICB8IEdyZWVueWVsbG93IC0+IDE3MywgMjU1LCA0N1xuICAgIHwgR3JleSAtPiAxMjgsIDEyOCwgMTI4XG4gICAgfCBIb25leWRldyAtPiAyNDAsIDI1NSwgMjQwXG4gICAgfCBIb3RwaW5rIC0+IDI1NSwgMTA1LCAxODBcbiAgICB8IEluZGlhbnJlZCAtPiAyMDUsIDkyLCA5MlxuICAgIHwgSW5kaWdvIC0+IDc1LCAwLCAxMzBcbiAgICB8IEl2b3J5IC0+IDI1NSwgMjU1LCAyNDBcbiAgICB8IEtoYWtpIC0+IDI0MCwgMjMwLCAxNDBcbiAgICB8IExhdmVuZGVyIC0+IDIzMCwgMjMwLCAyNTBcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gMjU1LCAyNDAsIDI0NVxuICAgIHwgTGF3bmdyZWVuIC0+IDEyNCwgMjUyLCAwXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gMjU1LCAyNTAsIDIwNVxuICAgIHwgTGlnaHRibHVlIC0+IDE3MywgMjE2LCAyMzBcbiAgICB8IExpZ2h0Y29yYWwgLT4gMjQwLCAxMjgsIDEyOFxuICAgIHwgTGlnaHRjeWFuIC0+IDIyNCwgMjU1LCAyNTVcbiAgICB8IExpZ2h0Z29sZGVucm9keWVsbG93IC0+IDI1MCwgMjUwLCAyMTBcbiAgICB8IExpZ2h0Z3JheSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodGdyZWVuIC0+IDE0NCwgMjM4LCAxNDRcbiAgICB8IExpZ2h0Z3JleSAtPiAyMTEsIDIxMSwgMjExXG4gICAgfCBMaWdodHBpbmsgLT4gMjU1LCAxODIsIDE5M1xuICAgIHwgTGlnaHRzYWxtb24gLT4gMjU1LCAxNjAsIDEyMlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiAzMiwgMTc4LCAxNzBcbiAgICB8IExpZ2h0c2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjUwXG4gICAgfCBMaWdodHNsYXRlZ3JheSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHNsYXRlZ3JleSAtPiAxMTksIDEzNiwgMTUzXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiAxNzYsIDE5NiwgMjIyXG4gICAgfCBMaWdodHllbGxvdyAtPiAyNTUsIDI1NSwgMjI0XG4gICAgfCBMaW1lIC0+IDAsIDI1NSwgMFxuICAgIHwgTGltZWdyZWVuIC0+IDUwLCAyMDUsIDUwXG4gICAgfCBMaW5lbiAtPiAyNTAsIDI0MCwgMjMwXG4gICAgfCBNYWdlbnRhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBNYXJvb24gLT4gMTI4LCAwLCAwXG4gICAgfCBNZWRpdW1hcXVhbWFyaW5lIC0+IDEwMiwgMjA1LCAxNzBcbiAgICB8IE1lZGl1bWJsdWUgLT4gMCwgMCwgMjA1XG4gICAgfCBNZWRpdW1vcmNoaWQgLT4gMTg2LCA4NSwgMjExXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gMTQ3LCAxMTIsIDIxOVxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gNjAsIDE3OSwgMTEzXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gMTIzLCAxMDQsIDIzOFxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gMCwgMjUwLCAxNTRcbiAgICB8IE1lZGl1bXR1cnF1b2lzZSAtPiA3MiwgMjA5LCAyMDRcbiAgICB8IE1lZGl1bXZpb2xldHJlZCAtPiAxOTksIDIxLCAxMzNcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiAyNSwgMjUsIDExMlxuICAgIHwgTWludGNyZWFtIC0+IDI0NSwgMjU1LCAyNTBcbiAgICB8IE1pc3R5cm9zZSAtPiAyNTUsIDIyOCwgMjI1XG4gICAgfCBNb2NjYXNpbiAtPiAyNTUsIDIyOCwgMTgxXG4gICAgfCBOYXZham93aGl0ZSAtPiAyNTUsIDIyMiwgMTczXG4gICAgfCBOYXZ5IC0+IDAsIDAsIDEyOFxuICAgIHwgT2xkbGFjZSAtPiAyNTMsIDI0NSwgMjMwXG4gICAgfCBPbGl2ZSAtPiAxMjgsIDEyOCwgMFxuICAgIHwgT2xpdmVkcmFiIC0+IDEwNywgMTQyLCAzNVxuICAgIHwgT3JhbmdlIC0+IDI1NSwgMTY1LCAwXG4gICAgfCBPcmFuZ2VyZWQgLT4gMjU1LCA2OSwgMFxuICAgIHwgT3JjaGlkIC0+IDIxOCwgMTEyLCAyMTRcbiAgICB8IFBhbGVnb2xkZW5yb2QgLT4gMjM4LCAyMzIsIDE3MFxuICAgIHwgUGFsZWdyZWVuIC0+IDE1MiwgMjUxLCAxNTJcbiAgICB8IFBhbGV0dXJxdW9pc2UgLT4gMTc1LCAyMzgsIDIzOFxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiAyMTksIDExMiwgMTQ3XG4gICAgfCBQYXBheWF3aGlwIC0+IDI1NSwgMjM5LCAyMTNcbiAgICB8IFBlYWNocHVmZiAtPiAyNTUsIDIxOCwgMTg1XG4gICAgfCBQZXJ1IC0+IDIwNSwgMTMzLCA2M1xuICAgIHwgUGluayAtPiAyNTUsIDE5MiwgMjAzXG4gICAgfCBQbHVtIC0+IDIyMSwgMTYwLCAyMjFcbiAgICB8IFBvd2RlcmJsdWUgLT4gMTc2LCAyMjQsIDIzMFxuICAgIHwgUHVycGxlIC0+IDEyOCwgMCwgMTI4XG4gICAgfCBSZWQgLT4gMjU1LCAwLCAwXG4gICAgfCBSb3N5YnJvd24gLT4gMTg4LCAxNDMsIDE0M1xuICAgIHwgUm95YWxibHVlIC0+IDY1LCAxMDUsIDIyNVxuICAgIHwgU2FkZGxlYnJvd24gLT4gMTM5LCA2OSwgMTlcbiAgICB8IFNhbG1vbiAtPiAyNTAsIDEyOCwgMTE0XG4gICAgfCBTYW5keWJyb3duIC0+IDI0NCwgMTY0LCA5NlxuICAgIHwgU2VhZ3JlZW4gLT4gNDYsIDEzOSwgODdcbiAgICB8IFNlYXNoZWxsIC0+IDI1NSwgMjQ1LCAyMzhcbiAgICB8IFNpZW5uYSAtPiAxNjAsIDgyLCA0NVxuICAgIHwgU2lsdmVyIC0+IDE5MiwgMTkyLCAxOTJcbiAgICB8IFNreWJsdWUgLT4gMTM1LCAyMDYsIDIzNVxuICAgIHwgU2xhdGVibHVlIC0+IDEwNiwgOTAsIDIwNVxuICAgIHwgU2xhdGVncmF5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNsYXRlZ3JleSAtPiAxMTIsIDEyOCwgMTQ0XG4gICAgfCBTbm93IC0+IDI1NSwgMjUwLCAyNTBcbiAgICB8IFNwcmluZ2dyZWVuIC0+IDAsIDI1NSwgMTI3XG4gICAgfCBTdGVlbGJsdWUgLT4gNzAsIDEzMCwgMTgwXG4gICAgfCBUYW4gLT4gMjEwLCAxODAsIDE0MFxuICAgIHwgVGVhbCAtPiAwLCAxMjgsIDEyOFxuICAgIHwgVGhpc3RsZSAtPiAyMTYsIDE5MSwgMjE2XG4gICAgfCBUb21hdG8gLT4gMjU1LCA5OSwgNzFcbiAgICB8IFR1cnF1b2lzZSAtPiA2NCwgMjI0LCAyMDhcbiAgICB8IFZpb2xldCAtPiAyMzgsIDEzMCwgMjM4XG4gICAgfCBXaGVhdCAtPiAyNDUsIDIyMiwgMTc5XG4gICAgfCBXaGl0ZSAtPiAyNTUsIDI1NSwgMjU1XG4gICAgfCBXaGl0ZXNtb2tlIC0+IDI0NSwgMjQ1LCAyNDVcbiAgICB8IFllbGxvdyAtPiAyNTUsIDI1NSwgMFxuICAgIHwgWWVsbG93Z3JlZW4gLT4gMTU0LCAyMDUsIDUwXG5cbiAgdHlwZSB0ID1cbiAgICB8IE5hbWUgb2YgbmFtZVxuICAgIHwgUkdCIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSZWQsIEdyZWVuIGFuZCBCbHVlIHZhbHVlcy4gQ2xpcHBlZCB0byBbWzAuLjI1NV1dIGJ5IG1vc3QgKEFsbD8pXG4gICAgICAgICAgICBicm93c2Vycy4gKilcbiAgICB8IFJHQl9wZXJjZW50IG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgYXJlIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gKilcbiAgICB8IFJHQkEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBSR0Igd2l0aCBhZGRpdGlvbmFsIHRyYW5zcGFyZW5jeSBhcmd1bWVudC4gT3BhY2l0eSBzaG91bGQgYmUgaW5cbiAgICAgICAgICAgIFswLl0gKGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQpIGFuZCBbMS5dIChjb21wbGV0ZWx5IG9wYXF1ZSkuICopXG4gICAgfCBSR0JBX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogUkdCIGNoYW5uZWxzIHNwZWNpZmllZCBhcyBwZXJjZW50YWdlIG9mIHRoZWlyIG1heGltYWwgdmFsdWUuIEFscGhhXG4gICAgICAgICAgICBjaGFubmVsIChvcGFjaXR5KSBpcyBzdGlsbCBhIFswLl0gdG8gWzEuXSBmbG9hdC4gKilcbiAgICB8IEhTTCBvZiAoaW50ICogaW50ICogaW50KVxuICAgICAgICAoKiogSHVlLCBTYXR1cmF0aW9uIGFuZCBMaWdodG5lc3MgdmFsdWVzLiBIdWUgaXMgYW4gYW5nbGUgaW4gZGVncmVlIChpblxuICAgICAgICAgICAgaW50ZXJ2YWwgW1swLi4zNjBbXSkuIFNhdHVyYXRpb24gaXMgYSBwZXJjZW50YWdlIChbWzAuLjEwMF1dKSB3aXRoIFswXVxuICAgICAgICAgICAgYmVpbmcgY29sb3JsZXNzLiBMaWdodG5lc3MgaXMgYWxzbyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBibGFjay4gKilcbiAgICB8IEhTTEEgb2YgKGludCAqIGludCAqIGludCAqIGZsb2F0KVxuICAgICAgICAoKiogU2FtZSBhcyBIU0wgd2l0aCBhbiBvcGFjaXR5IGFyZ3VtZW50IGJldHdlZW4gWzAuXSBhbmQgWzEuXS4gKilcblxuICBsZXQgcmdiID9hIHIgZyBiID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gUkdCIChyLCBnLCBiKVxuICAgIHwgU29tZSBhIC0+IFJHQkEgKHIsIGcsIGIsIGEpXG5cbiAgbGV0IGhzbCA/YSBoIHMgbCA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+IEhTTCAoaCwgcywgbClcbiAgICB8IFNvbWUgYSAtPiBIU0xBIChoLCBzLCBsLCBhKVxuXG4gIGxldCBzdHJpbmdfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gc3RyaW5nX29mX25hbWUgblxuICAgIHwgUkdCIChyLCBnLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYiglZCwlZCwlZClcIiByIGcgYlxuICAgIHwgUkdCX3BlcmNlbnQgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkJSUsJWQlJSwlZCUlKVwiIHIgZyBiXG4gICAgfCBSR0JBIChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQsJWQsJWQsJWYpXCIgciBnIGIgYVxuICAgIHwgUkdCQV9wZXJjZW50IChyLCBnLCBiLCBhKSAtPiBQcmludGYuc3ByaW50ZiBcInJnYmEoJWQlJSwlZCUlLCVkJSUsJWYpXCIgciBnIGIgYVxuICAgIHwgSFNMIChoLCBzLCBsKSAtPiBQcmludGYuc3ByaW50ZiBcImhzbCglZCwlZCUlLCVkJSUpXCIgaCBzIGxcbiAgICB8IEhTTEEgKGgsIHMsIGwsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsYSglZCwlZCUlLCVkJSUsJWYpXCIgaCBzIGwgYVxuXG4gIGxldCBoZXhfb2ZfcmdiIChyZWQsIGdyZWVuLCBibHVlKSA9XG4gICAgbGV0IGluX3JhbmdlIGkgPVxuICAgICAgaWYgaSA8IDAgfHwgaSA+IDI1NVxuICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoc3RyaW5nX29mX2ludCBpIF4gXCIgaXMgb3V0IG9mIHZhbGlkIHJhbmdlXCIpKVxuICAgIGluXG4gICAgaW5fcmFuZ2UgcmVkO1xuICAgIGluX3JhbmdlIGdyZWVuO1xuICAgIGluX3JhbmdlIGJsdWU7XG4gICAgUHJpbnRmLnNwcmludGYgXCIjJTAyWCUwMlglMDJYXCIgcmVkIGdyZWVuIGJsdWVcblxuICAoKiBPY2FtbCA8LT4gSlMgcmVwcmVzZW50YXRpb24gKilcbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICAoKiBUT0RPPyBiZSBtb3JlIHJlc3RyaWN0aXZlLCBjbGlwIHZhbHVlcyBpbnRvIHN0YW5kYXJkIHJhbmdlICopXG4gIGxldCBqc190X29mX2pzX3N0cmluZyBzID1cbiAgICBsZXQgcmdiX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYl9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXnJnYmFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqLFxcXFxkKlxcXFwuP1xcXFxkKlxcXFwpJFwiKVxuICAgIGluXG4gICAgbGV0IHJnYmFfcGN0X3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsXFxcXChcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgaHNsYV9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwXG4gICAgICAgIChKcy5ieXRlc3RyaW5nIFwiXmhzbGFcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBpZiBKcy50b19ib29sIChyZ2JfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JhX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiX3BjdF9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsX3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAoaHNsYV9yZSMjdGVzdCBzKVxuICAgIHRoZW4gc1xuICAgIGVsc2UgaWYgTGlzdC5tZW1cbiAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBzKVxuICAgICAgICAgICAgICBbIFwiYWxpY2VibHVlXCJcbiAgICAgICAgICAgICAgOyBcImFudGlxdWV3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJhcXVhXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwiYXp1cmVcIlxuICAgICAgICAgICAgICA7IFwiYmVpZ2VcIlxuICAgICAgICAgICAgICA7IFwiYmlzcXVlXCJcbiAgICAgICAgICAgICAgOyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgOyBcImJsYW5jaGVkYWxtb25kXCJcbiAgICAgICAgICAgICAgOyBcImJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZXZpb2xldFwiXG4gICAgICAgICAgICAgIDsgXCJicm93blwiXG4gICAgICAgICAgICAgIDsgXCJidXJseXdvb2RcIlxuICAgICAgICAgICAgICA7IFwiY2FkZXRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNoYXJ0cmV1c2VcIlxuICAgICAgICAgICAgICA7IFwiY2hvY29sYXRlXCJcbiAgICAgICAgICAgICAgOyBcImNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5mbG93ZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImNvcm5zaWxrXCJcbiAgICAgICAgICAgICAgOyBcImNyaW1zb25cIlxuICAgICAgICAgICAgICA7IFwiY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrY3lhblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJra2hha2lcIlxuICAgICAgICAgICAgICA7IFwiZGFya21hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwiZGFya29saXZlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya29yYW5nZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JjaGlkXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtyZWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3R1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImRlZXBwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImRlZXBza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImRpbWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkb2RnZXJibHVlXCJcbiAgICAgICAgICAgICAgOyBcImZpcmVicmlja1wiXG4gICAgICAgICAgICAgIDsgXCJmbG9yYWx3aGl0ZVwiXG4gICAgICAgICAgICAgIDsgXCJmb3Jlc3RncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJmdWNoc2lhXCJcbiAgICAgICAgICAgICAgOyBcImdhaW5zYm9yb1wiXG4gICAgICAgICAgICAgIDsgXCJnaG9zdHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImdvbGRcIlxuICAgICAgICAgICAgICA7IFwiZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcImdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwiZ3JlZW55ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwiZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJob25leWRld1wiXG4gICAgICAgICAgICAgIDsgXCJob3RwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImluZGlhbnJlZFwiXG4gICAgICAgICAgICAgIDsgXCJpbmRpZ29cIlxuICAgICAgICAgICAgICA7IFwiaXZvcnlcIlxuICAgICAgICAgICAgICA7IFwia2hha2lcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJcIlxuICAgICAgICAgICAgICA7IFwibGF2ZW5kZXJibHVzaFwiXG4gICAgICAgICAgICAgIDsgXCJsYXduZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGVtb25jaGlmZm9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGNvcmFsXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y3lhblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRwaW5rXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0eWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpbWVcIlxuICAgICAgICAgICAgICA7IFwibGltZWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpbmVuXCJcbiAgICAgICAgICAgICAgOyBcIm1hZ2VudGFcIlxuICAgICAgICAgICAgICA7IFwibWFyb29uXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bWFxdWFtYXJpbmVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1vcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtcHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJtaW50Y3JlYW1cIlxuICAgICAgICAgICAgICA7IFwibWlzdHlyb3NlXCJcbiAgICAgICAgICAgICAgOyBcIm1vY2Nhc2luXCJcbiAgICAgICAgICAgICAgOyBcIm5hdmFqb3doaXRlXCJcbiAgICAgICAgICAgICAgOyBcIm5hdnlcIlxuICAgICAgICAgICAgICA7IFwib2xkbGFjZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZVwiXG4gICAgICAgICAgICAgIDsgXCJvbGl2ZWRyYWJcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcIm9yYW5nZXJlZFwiXG4gICAgICAgICAgICAgIDsgXCJvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwicGFsZXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldmlvbGV0cmVkXCJcbiAgICAgICAgICAgICAgOyBcInBhcGF5YXdoaXBcIlxuICAgICAgICAgICAgICA7IFwicGVhY2hwdWZmXCJcbiAgICAgICAgICAgICAgOyBcInBlcnVcIlxuICAgICAgICAgICAgICA7IFwicGlua1wiXG4gICAgICAgICAgICAgIDsgXCJwbHVtXCJcbiAgICAgICAgICAgICAgOyBcInBvd2RlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwicHVycGxlXCJcbiAgICAgICAgICAgICAgOyBcInJlZFwiXG4gICAgICAgICAgICAgIDsgXCJyb3N5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwicm95YWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInNhZGRsZWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNhbG1vblwiXG4gICAgICAgICAgICAgIDsgXCJzYW5keWJyb3duXCJcbiAgICAgICAgICAgICAgOyBcInNlYWdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInNlYXNoZWxsXCJcbiAgICAgICAgICAgICAgOyBcInNpZW5uYVwiXG4gICAgICAgICAgICAgIDsgXCJzaWx2ZXJcIlxuICAgICAgICAgICAgICA7IFwic2t5Ymx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmF5XCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJzbm93XCJcbiAgICAgICAgICAgICAgOyBcInNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcInN0ZWVsYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJ0YW5cIlxuICAgICAgICAgICAgICA7IFwidGVhbFwiXG4gICAgICAgICAgICAgIDsgXCJ0aGlzdGxlXCJcbiAgICAgICAgICAgICAgOyBcInRvbWF0b1wiXG4gICAgICAgICAgICAgIDsgXCJ0dXJxdW9pc2VcIlxuICAgICAgICAgICAgICA7IFwidmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcIndoZWF0XCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlXCJcbiAgICAgICAgICAgICAgOyBcIndoaXRlc21va2VcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcInllbGxvd2dyZWVuXCJcbiAgICAgICAgICAgICAgXVxuICAgIHRoZW4gc1xuICAgIGVsc2UgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKEpzLnRvX3N0cmluZyBzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpXG5cbiAgbGV0IG5hbWUgY24gPSBKcy5zdHJpbmcgKHN0cmluZ19vZl9uYW1lIGNuKVxuXG4gIGxldCBqcyA9IGZ1bmN0aW9uXG4gICAgfCBOYW1lIG4gLT4gbmFtZSBuXG4gICAgfCAoUkdCIF8gfCBSR0JfcGVyY2VudCBfIHwgUkdCQSBfIHwgUkdCQV9wZXJjZW50IF8gfCBIU0wgXyB8IEhTTEEgXykgYXMgYyAtPlxuICAgICAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl90IGMpXG5cbiAgbGV0IG1sIGMgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGMgaW5cbiAgICB0cnkgTmFtZSAobmFtZV9vZl9zdHJpbmcgcylcbiAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiAoXG4gICAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3JcIikpIGluXG4gICAgICBsZXQgcmVfcmdiID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopLChcXFxcZCopKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfcmdiX3BjdCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIocmdiYT8pXFxcXCgoPzooXFxcXGQqKSUsKFxcXFxkKiklLChcXFxcZCopJSg/OiwoXFxcXGQqKD86XFxcXC5cXFxcZCopPykpPylcXFxcKVwiXG4gICAgICBpblxuICAgICAgbGV0IHJlX2hzbCA9XG4gICAgICAgIFJlZ2V4cC5yZWdleHAgXCIoaHNsYT8pXFxcXCgoPzooXFxcXGQqKSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgaV9vZl9zX28gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICB8IFNvbWUgaSAtPiAoXG4gICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpXG4gICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJjb2xvciBjb252ZXJzaW9uIGVycm9yIChcIiBeIGkgXiBcIik6IFwiIF4gcykpKVxuICAgICAgaW5cbiAgICAgIGxldCBmX29mX3MgZiA9XG4gICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyB8IEZhaWx1cmUgcyAtPlxuICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gZiBeIFwiKTogXCIgXiBzKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX3JnYiBzIDAgd2l0aFxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQiAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBSR0JBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiX3BjdCBzIDAgd2l0aFxuICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYlwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSR0JfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSkpXG4gICAgICAgICAgICAgIHwgU29tZSBcInJnYmFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICBSR0JBX3BlcmNlbnQgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICB8IE5vbmUgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlX2hzbCBzIDAgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JlZW4gPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDMgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXCJoc2xcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gSFNMIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbGFcIiAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgSFNMQSAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpKSkpXG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICAoKiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXZhbHVlcy8jbGVuZ3RocyAqKVxuXG4gICgqIFRPRE86XG4gICAgIHtbXG4gICAgICAgdHlwZSBqc190ID0gcHJpdmF0ZSBKcy5zdHJpbmcgSnMudFxuICAgICAgIHZhbCBqc190X29mX3RcbiAgICAgICB2YWwgdF9vZl9qc190XG4gICAgICAgdmFsIHRfb2Zfc3RyaW5nXG4gICAgIF19XG4gICopXG5cbiAgdHlwZSB0ID1cbiAgICB8IFplcm9cbiAgICAoKiByZWxhdGl2ZSAqKVxuICAgIHwgRW0gb2YgZmxvYXRcbiAgICB8IEV4IG9mIGZsb2F0XG4gICAgfCBQeCBvZiBmbG9hdFxuICAgIHwgR2Qgb2YgZmxvYXRcbiAgICB8IFJlbSBvZiBmbG9hdFxuICAgIHwgVncgb2YgZmxvYXRcbiAgICB8IFZoIG9mIGZsb2F0XG4gICAgfCBWbSBvZiBmbG9hdFxuICAgIHwgQ2ggb2YgZmxvYXRcbiAgICAoKiBhYnNvbHV0ZSAqKVxuICAgIHwgTW0gb2YgZmxvYXRcbiAgICB8IENtIG9mIGZsb2F0XG4gICAgfCBJbiBvZiBmbG9hdFxuICAgIHwgUHQgb2YgZmxvYXRcbiAgICB8IFBjIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IFplcm8gLT4gXCIwXCJcbiAgICB8IEVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImVtXCJcbiAgICB8IEV4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImV4XCJcbiAgICB8IFB4IGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInB4XCJcbiAgICB8IEdkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdkXCJcbiAgICB8IFJlbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyZW1cIlxuICAgIHwgVncgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidndcIlxuICAgIHwgVmggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidmhcIlxuICAgIHwgVm0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidm1cIlxuICAgIHwgQ2ggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY2hcIlxuICAgIHwgTW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwibW1cIlxuICAgIHwgQ20gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiY21cIlxuICAgIHwgSW4gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiaW5cIlxuICAgIHwgUHQgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHRcIlxuICAgIHwgUGMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicGNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIHQgPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIHQgaW5cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIjBcIlxuICAgIHRoZW4gWmVyb1xuICAgIGVsc2VcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKik/KVxcXFxzKihcXFxcUyopJFwiIGluXG4gICAgICBtYXRjaCBSZWdleHAuc3RyaW5nX21hdGNoIHJlIHMgMCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgIGxldCBmID1cbiAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgICAgfCBTb21lIGYgLT4gKFxuICAgICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJsZW5ndGggY29udmVyc2lvbiBlcnJvcjogXCIgXiBzKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTb21lIFwiZW1cIiAtPiBFbSBmXG4gICAgICAgICAgfCBTb21lIFwiZXhcIiAtPiBFeCBmXG4gICAgICAgICAgfCBTb21lIFwicHhcIiAtPiBQeCBmXG4gICAgICAgICAgfCBTb21lIFwiZ2RcIiAtPiBHZCBmXG4gICAgICAgICAgfCBTb21lIFwicmVtXCIgLT4gUmVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2d1wiIC0+IFZ3IGZcbiAgICAgICAgICB8IFNvbWUgXCJ2aFwiIC0+IFZoIGZcbiAgICAgICAgICB8IFNvbWUgXCJ2bVwiIC0+IFZtIGZcbiAgICAgICAgICB8IFNvbWUgXCJjaFwiIC0+IENoIGZcbiAgICAgICAgICB8IFNvbWUgXCJtbVwiIC0+IE1tIGZcbiAgICAgICAgICB8IFNvbWUgXCJjbVwiIC0+IENtIGZcbiAgICAgICAgICB8IFNvbWUgXCJpblwiIC0+IEluIGZcbiAgICAgICAgICB8IFNvbWUgXCJwdFwiIC0+IFB0IGZcbiAgICAgICAgICB8IFNvbWUgXCJwY1wiIC0+IFBjIGZcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsICgpKVxuZW5kXG5cbm1vZHVsZSBBbmdsZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRGVnIG9mIGZsb2F0XG4gICAgfCBHcmFkIG9mIGZsb2F0XG4gICAgfCBSYWQgb2YgZmxvYXRcbiAgICB8IFR1cm5zIG9mIGZsb2F0XG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IERlZyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJkZWdcIlxuICAgIHwgR3JhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJncmFkXCJcbiAgICB8IFJhZCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJyYWRcIlxuICAgIHwgVHVybnMgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwidHVybnNcIlxuXG4gIHR5cGUganNfdCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IGpzIHQgPSBKcy5zdHJpbmcgKHN0cmluZ19vZl90IHQpXG5cbiAgbGV0IG1sIGogPVxuICAgIGxldCBzID0gSnMudG9fc3RyaW5nIGogaW5cbiAgICBsZXQgcmUgPSBSZWdleHAucmVnZXhwIFwiXihcXFxcZCooPzpcXFxcLlxcXFxkKikpKGRlZ3xncmFkfHJhZHx0dXJucykkXCIgaW5cbiAgICBsZXQgZmFpbCAoKSA9IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgbGVuZ3RoXCIpKSBpblxuICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgIHRyeSBmbG9hdF9vZl9zdHJpbmcgZlxuICAgICAgICAgICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgcyAtPlxuICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIHdpdGhcbiAgICAgICAgfCBTb21lIFwiZGVnXCIgLT4gRGVnIGZcbiAgICAgICAgfCBTb21lIFwiZ3JhZFwiIC0+IEdyYWQgZlxuICAgICAgICB8IFNvbWUgXCJyYWRcIiAtPiBSYWQgZlxuICAgICAgICB8IFNvbWUgXCJ0dXJuc1wiIC0+IFR1cm5zIGZcbiAgICAgICAgfCBTb21lIF8gfCBOb25lIC0+IGZhaWwgKCkpXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiogSmF2YXNjcmlwdCBldmVudHMuICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFR5cCA9IERvbV9odG1sLkV2ZW50XG5cbnR5cGUgbGlzdGVuZXIgPSBEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgbGlzdGVuID8oY2FwdHVyZSA9IGZhbHNlKSB0YXJnZXQgdHlwIGNiID1cbiAgRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lclxuICAgIHRhcmdldFxuICAgIHR5cFxuICAgIChEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBuIGUgLT4gSnMuYm9vbCAoY2IgbiBlKSkpXG4gICAgKEpzLmJvb2wgY2FwdHVyZSlcblxubGV0IHN0b3BfbGlzdGVuID0gRG9tX2h0bWwucmVtb3ZlRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcbiAqIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxubGV0IHhtbG5zID0gSnMuc3RyaW5nIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXG4oKiB0cmFuc2xhdGUgc3BlYyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pZGwuaHRtbCAqKVxuKCogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3N0cnVjdC5odG1sICopXG5cbnR5cGUgZXJyb3JfY29kZSA9XG4gIHwgV1JPTkdfVFlQRV9FUlJcbiAgfCBJTlZBTElEX1ZBTFVFX0VSUlxuICB8IE1BVFJJWF9OT1RfSU5WRVJUQUJMRVxuXG5jbGFzcyB0eXBlIHN2Z19lcnJvciA9IG9iamVjdFxuICBpbmhlcml0IEpzLmVycm9yXG5cbiAgbWV0aG9kIGNvZGUgOiBlcnJvcl9jb2RlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmV4Y2VwdGlvbiBTVkdFcnJvciBvZiBzdmdfZXJyb3JcblxudHlwZSBsZW5ndGhVbml0VHlwZSA9XG4gIHwgTEVOR1RIVFlQRV9VTktOT1dOXG4gIHwgTEVOR1RIVFlQRV9OVU1CRVJcbiAgfCBMRU5HVEhUWVBFX1BFUkNFTlRBR0VcbiAgfCBMRU5HVEhUWVBFX0VNU1xuICB8IExFTkdUSFRZUEVfRVhTXG4gIHwgTEVOR1RIVFlQRV9QWFxuICB8IExFTkdUSFRZUEVfQ01cbiAgfCBMRU5HVEhUWVBFX01NXG4gIHwgTEVOR1RIVFlQRV9JTlxuICB8IExFTkdUSFRZUEVfUFRcbiAgfCBMRU5HVEhUWVBFX1BDXG5cbnR5cGUgYW5nbGVVbml0VHlwZSA9XG4gIHwgQU5HTEVUWVBFX1VOS05PV05cbiAgfCBBTkdMRVRZUEVfVU5TUEVDSUZJRURcbiAgfCBBTkdMRVRZUEVfREVHXG4gIHwgQU5HTEVUWVBFX1JBRFxuICB8IEFOR0xFVFlQRV9HUkFEXG5cbnR5cGUgY29sb3JUeXBlID1cbiAgfCBDT0xPUlRZUEVfVU5LTk9XTlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUlxuICB8IENPTE9SVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUlxuICB8IENPTE9SVFlQRV9DVVJSRU5UQ09MT1JcblxudHlwZSBhbGlnbm1lbnRUeXBlID1cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV05cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX05PTkVcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVhcblxudHlwZSBtZWV0T3JTbGljZVR5cGUgPVxuICB8IE1FRVRPUlNMSUNFX1VOS05PV05cbiAgfCBNRUVUT1JTTElDRV9NRUVUXG4gIHwgTUVFVE9SU0xJQ0VfU0xJQ0VcblxudHlwZSB0cmFuc2Zvcm1UeXBlID1cbiAgfCBUUkFOU0ZPUk1fVU5LTk9XTlxuICB8IFRSQU5TRk9STV9NQVRSSVhcbiAgfCBUUkFOU0ZPUk1fVFJBTlNMQVRFXG4gIHwgVFJBTlNGT1JNX1NDQUxFXG4gIHwgVFJBTlNGT1JNX1JPVEFURVxuICB8IFRSQU5TRk9STV9TS0VXWFxuICB8IFRSQU5TRk9STV9TS0VXWVxuXG50eXBlIHpvb21BbmRQYW5UeXBlID1cbiAgfCBaT09NQU5EUEFOX1VOS05PV05cbiAgfCBaT09NQU5EUEFOX0RJU0FCTEVcbiAgfCBaT09NQU5EUEFOX01BR05JRllcblxudHlwZSBsZW5ndGhBZGp1c3QgPVxuICB8IExFTkdUSEFESlVTVF9VTktOT1dOXG4gIHwgTEVOR1RIQURKVVNUX1NQQUNJTkdcbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIU1xuXG50eXBlIHVuaXRUeXBlID1cbiAgfCBVTklUX1RZUEVfVU5LTk9XTlxuICB8IFVOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRVxuICB8IFVOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVuZGVyaW5nSW50ZW50ICopXG50eXBlIGludGVudFR5cGUgPVxuICB8IFJFTkRFUklOR19JTlRFTlRfVU5LTk9XTlxuICB8IFJFTkRFUklOR19JTlRFTlRfQVVUT1xuICB8IFJFTkRFUklOR19JTlRFTlRfUEVSQ0VQVFVBTFxuICB8IFJFTkRFUklOR19JTlRFTlRfUkVMQVRJVkVfQ09MT1JJTUVUUklDXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9TQVRVUkFUSU9OXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BQlNPTFVURV9DT0xPUklNRVRSSUNcblxuKCogUGF0aCBTZWdtZW50IFR5cGVzICopXG50eXBlIHBhdGhTZWdtZW50VHlwZSA9XG4gIHwgUEFUSFNFR19VTktOT1dOXG4gIHwgUEFUSFNFR19DTE9TRVBBVEhcbiAgfCBQQVRIU0VHX01PVkVUT19BQlNcbiAgfCBQQVRIU0VHX01PVkVUT19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19SRUxcbiAgfCBQQVRIU0VHX0FSQ19BQlNcbiAgfCBQQVRIU0VHX0FSQ19SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX1JFTFxuXG4oKiB0ZXh0UGF0aCBNZXRob2QgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhNZXRob2RUeXBlID1cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOXG4gIHwgVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIXG5cbigqIHRleHRQYXRoIFNwYWNpbmcgVHlwZXMgKilcbnR5cGUgdGV4dFBhdGhTcGFjaW5nVHlwZSA9XG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE9cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVFxuXG4oKiBTcHJlYWQgTWV0aG9kIFR5cGVzICopXG50eXBlIHNwcmVhZE1ldGhvZFR5cGUgPVxuICB8IFNQUkVBRE1FVEhPRF9VTktOT1dOXG4gIHwgU1BSRUFETUVUSE9EX1BBRFxuICB8IFNQUkVBRE1FVEhPRF9SRUZMRUNUXG4gIHwgU1BSRUFETUVUSE9EX1JFUEVBVFxuXG50eXBlIHN1c3BlbmRIYW5kbGVJRFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBbJ2FdIGFuaW1hdGVkID0gb2JqZWN0XG4gIG1ldGhvZCBiYXNlVmFsIDogJ2EgcHJvcFxuXG4gIG1ldGhvZCBhbmltVmFsIDogJ2EgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBsaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBudW1iZXJPZkl0ZW1zIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xlYXIgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5pdGlhbGl6ZSA6ICdhIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0SXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGluc2VydEl0ZW1CZWZvcmUgOiAnYSAtPiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlSXRlbSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUl0ZW0gOiBpbnQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRJdGVtIDogJ2EgLT4gJ2EgbWV0aFxuZW5kXG5cbigqKioqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBtZXRob2QgaWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbGJhc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyU1ZHRWxlbWVudCA6IHN2Z0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkU3RyaW5nICopXG5hbmQgYW5pbWF0ZWRTdHJpbmcgPSBbanNfc3RyaW5nIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEJvb2xlYW4gKilcbmFuZCBhbmltYXRlZEJvb2xlYW4gPSBbYm9vbCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3RyaW5nTGlzdCAqKVxuYW5kIHN0cmluZ0xpc3QgPSBbanNfc3RyaW5nIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gKilcbmFuZCBhbmltYXRlZEVudW1lcmF0aW9uID0gW2ludCAoKnNob3J0KildIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEludGVnZXIgKilcbmFuZCBhbmltYXRlZEludGVnZXIgPSBbaW50XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWROdW1iZXIgKilcbmFuZCBhbmltYXRlZE51bWJlciA9IFtudW1iZXJfdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR051bWJlckxpc3QgKilcbmFuZCBudW1iZXJMaXN0ID0gW251bWJlciB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlckxpc3QgKilcbmFuZCBhbmltYXRlZE51bWJlckxpc3QgPSBbbnVtYmVyTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoICopXG5hbmQgbGVuZ3RoID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGxlbmd0aFVuaXRUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlSW5TcGVjaWZpZWRVbml0cyA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVBc1N0cmluZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGxlbmd0aFVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZExlbmd0aCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoID0gW2xlbmd0aCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGVuZ3RoTGlzdCAqKVxuYW5kIGxlbmd0aExpc3QgPSBbbGVuZ3RoIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdCAqKVxuYW5kIGFuaW1hdGVkTGVuZ3RoTGlzdCA9IFtsZW5ndGhMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmdsZSAqKVxuYW5kIGFuZ2xlID0gb2JqZWN0XG4gIG1ldGhvZCB1bml0VHlwZSA6IGFuZ2xlVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogYW5nbGVVbml0VHlwZSAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29udmVydFRvU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZEFuZ2xlICopXG5hbmQgYW5pbWF0ZWRBbmdsZSA9IFthbmdsZSB0XSBhbmltYXRlZFxuXG4oKiBYWFhYWCBNb3ZlIGl0ICopXG5hbmQgcmdiQ29sb3IgPSBvYmplY3QgZW5kXG5cbigqIGludGVyZmFjZSBTVkdDb2xvciAqKVxuYW5kIGNvbG9yID0gb2JqZWN0XG4gICgqIFhYWCBpbmhlcml0IGNzc1ZhbHVlICopXG4gIG1ldGhvZCBjb2xvclR5cGUgOiBjb2xvclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZ2JDb2xvciA6IHJnYkNvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpY2NDb2xvciA6IGljY0NvbG9yIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvciA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSR0JDb2xvcklDQ0NvbG9yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldENvbG9yIDogY29sb3JUeXBlIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJQ0NDb2xvciAqKVxuYW5kIGljY0NvbG9yID0gb2JqZWN0XG4gIG1ldGhvZCBjb2xvclByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9ycyA6IG51bWJlckxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JlY3QgKilcbmFuZCByZWN0ID0gb2JqZWN0XG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFJlY3QgKilcbmFuZCBhbmltYXRlZFJlY3QgPSBbcmVjdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGFibGUgKilcbmFuZCBzdHlsYWJsZSA9IG9iamVjdFxuICBtZXRob2QgY2xhc3NOYW1lIDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0eWxlIDogRG9tX2h0bWwuY3NzU3R5bGVEZWNsYXJhdGlvbiB0IHJlYWRvbmx5X3Byb3BcbiAgKCogICBDU1NWYWx1ZSBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUpOyAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMb2NhdGFibGUgKilcbmFuZCBsb2NhdGFibGUgPSBvYmplY3RcbiAgbWV0aG9kIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEJCb3ggOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDVE0gOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGdldFNjcmVlbkNUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0VHJhbnNmb3JtVG9FbGVtZW50IDogZWxlbWVudCB0IC0+IG1hdHJpeCB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtYWJsZSAqKVxuYW5kIHRyYW5zZm9ybWFibGUgPSBvYmplY3RcbiAgaW5oZXJpdCBsb2NhdGFibGVcblxuICBtZXRob2QgdHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXN0cyAqKVxuYW5kIHRlc3RzID0gb2JqZWN0XG4gIG1ldGhvZCByZXF1aXJlZEZlYXR1cmVzIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVxdWlyZWRFeHRlbnNpb25zIDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3lzdGVtTGFuZ3VhZ2UgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoYXNFeHRlbnNpb24gOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMYW5nU3BhY2UgKilcbmFuZCBsYW5nU3BhY2UgPSBvYmplY3RcbiAgbWV0aG9kIHhtbGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHhtbHNwYWNlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICopXG5hbmQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IG9iamVjdFxuICBtZXRob2QgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA6IGFuaW1hdGVkQm9vbGVhbiB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRml0VG9WaWV3Qm94ICopXG5hbmQgZml0VG9WaWV3Qm94ID0gb2JqZWN0XG4gIG1ldGhvZCB2aWV3Qm94IDogYW5pbWF0ZWRSZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvIDogYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tQW5kUGFuICopXG5hbmQgem9vbUFuZFBhbiA9IG9iamVjdFxuICBtZXRob2Qgem9vbUFuZFBhbiA6IHpvb21BbmRQYW5UeXBlIHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld1NwZWMgKilcbmFuZCB2aWV3U3BlYyA9IG9iamVjdFxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiB0cmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld0JveFN0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc2VydmVBc3BlY3RSYXRpb1N0cmluZyA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdHJhbnNmb3JtU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVUklSZWZlcmVuY2UgKilcbmFuZCB1cmlSZWZlcmVuY2UgPSBvYmplY3RcbiAgbWV0aG9kIGhyZWYgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ1NTUnVsZSA6IENTU1J1bGUgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09MT1JfUFJPRklMRV9SVUxFID0gNzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdEb2N1bWVudCAqKVxuYW5kIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gICgqWFhYIGluaGVyaXQgZG9jdW1lbnRFdmVudCAqKVxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJlZmVycmVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkb21haW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9VUkwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RFbGVtZW50IDogc3ZnRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG4gICgqIHJvb3RFbGVtZW50IHdpbGwgYmUgbnVsbCBvciB1bmRlZmluZWQgaW4gYW4gaHRtbCBjb250ZXh0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NWR0VsZW1lbnQgKilcbmFuZCBzdmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCB6b29tQW5kUGFuXG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudGV2ZW50LCB2aWV3Y3NzLCBkb2N1bWVudGNzcyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U2NyaXB0VHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29udGVudFN0eWxlVHlwZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdmlld3BvcnQgOiByZWN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJYIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5QaXhlbFVuaXRUb01pbGxpbWV0ZXJZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VDdXJyZW50VmlldyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRWaWV3IDogdmlld1NwZWMgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRTY2FsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgY3VycmVudFRyYW5zbGF0ZSA6IHBvaW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdXNwZW5kUmVkcmF3IDogaW50IC0+IHN1c3BlbmRIYW5kbGVJRCBtZXRoXG5cbiAgbWV0aG9kIHVuc3VzcGVuZFJlZHJhdyA6IHN1c3BlbmRIYW5kbGVJRCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcmNlUmVkcmF3IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnBhdXNlQW5pbWF0aW9ucyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb25zUGF1c2VkIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Q3VycmVudFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEN1cnJlbnRUaW1lIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnRlcnNlY3Rpb25MaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RW5jbG9zdXJlTGlzdCA6IHJlY3QgdCAtPiBlbGVtZW50IHQgLT4gZWxlbWVudCBEb20ubm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGNoZWNrSW50ZXJzZWN0aW9uIDogZWxlbWVudCB0IC0+IHJlY3QgdCAtPiBib29sIHRcblxuICBtZXRob2QgY2hlY2tFbmNsb3N1cmUgOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBkZXNlbGVjdEFsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdOdW1iZXIgOiBudW1iZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR0xlbmd0aCA6IGxlbmd0aCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHQW5nbGUgOiBhbmdsZSB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUG9pbnQgOiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTWF0cml4IDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdSZWN0IDogcmVjdCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtIDogdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4IDogbWF0cml4IHQgLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+IERvbS5lbGVtZW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdHRWxlbWVudCAqKVxuYW5kIGdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0RlZnNFbGVtZW50ICopXG5hbmQgZGVmc0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdEZXNjRWxlbWVudCAqKVxuYW5kIGRlc2NFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuICAoKiBYWFhYWFhYID8gaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldCAqKVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUaXRsZUVsZW1lbnQgKilcbmFuZCB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N5bWJvbEVsZW1lbnQgKilcbmFuZCBzeW1ib2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdVc2VFbGVtZW50ICopXG5hbmQgdXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkSW5zdGFuY2VSb290IDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50SW5zdGFuY2UgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCBjb3JyZXNwb25kaW5nRWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50IDogdXNlRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50Tm9kZSA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IGVsZW1lbnRJbnN0YW5jZUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJldmlvdXNTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxlbWVudEluc3RhbmNlTGlzdCAqKVxuYW5kIGVsZW1lbnRJbnN0YW5jZUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gZWxlbWVudEluc3RhbmNlIHRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSW1hZ2VFbGVtZW50ICopXG5hbmQgaW1hZ2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG4gICgqIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuZW5kXG5cbmFuZCBzd2l0Y2hFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG4oKiBYWFggZGVwcmVjYXRlZCA9PiBpbnRlcmZhY2UgR2V0U1ZHRG9jdW1lbnQgPT4gU1ZHRG9jdW1lbnQgZ2V0U1ZHRG9jdW1lbnQoKSAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHU3R5bGVFbGVtZW50ICopXG5hbmQgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50ICopXG5hbmQgcG9pbnQgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeFRyYW5zZm9ybSA6IG1hdHJpeCB0IC0+IHBvaW50IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2ludExpc3QgKilcbmFuZCBwb2ludExpc3QgPSBbcG9pbnQgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWF0cml4ICopXG5hbmQgbWF0cml4ID0gb2JqZWN0XG4gIG1ldGhvZCBhIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBiIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBseSA6IG1hdHJpeCB0IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgaW52ZXJzZSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2NhbGVOb25Vbmlmb3JtIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZUZyb21WZWN0b3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBYIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBmbGlwWSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1ggOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNrZXdZIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm0gKilcbmFuZCB0cmFuc2Zvcm0gPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDogdHJhbnNmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1hdHJpeCA6IG1hdHJpeCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldE1hdHJpeCA6IG1hdHJpeCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRUcmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2NhbGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Um90YXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdYIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNrZXdZIDogbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybUxpc3QgKilcbmFuZCB0cmFuc2Zvcm1MaXN0ID0gb2JqZWN0XG4gIGluaGVyaXQgW3RyYW5zZm9ybSB0XSBsaXN0XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggLT4gdHJhbnNmb3JtIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25zb2xpZGF0ZSA6IHRyYW5zZm9ybSB0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ICopXG5hbmQgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gW3RyYW5zZm9ybUxpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gKilcbmFuZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvID0gb2JqZWN0XG4gIG1ldGhvZCBhbGlnbiA6IGFsaWdubWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZWV0T3JTbGljZSA6IG1lZXRPclNsaWNlVHlwZSByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFtwcmVzZXJ2ZUFzcGVjdFJhdGlvIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnICopXG5hbmQgcGF0aFNlZyA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ1R5cGUgOiBwYXRoU2VnbWVudFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXRoU2VnVHlwZUFzTGV0dGVyIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ2xvc2VQYXRoICopXG5hbmQgcGF0aFNlZ0Nsb3NlUGF0aCA9IHBhdGhTZWdcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9BYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTW92ZXRvUmVsICopXG5hbmQgcGF0aFNlZ01vdmV0byA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9SZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCAqKVxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHgxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5MSA6IG51bWJlcl90IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdBcmNSZWwqKVxuYW5kIHBhdGhTZWdBcmMgPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCByMiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgYW5nbGUgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGxhcmdlQXJjRmxhZyA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN3ZWVwRmxhZyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgKilcbmFuZCBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90XG5lbmRcblxuYW5kIHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcblxuICBtZXRob2QgeDIgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5MiA6IG51bWJlcl90XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgICopXG5hbmQgcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0xpc3QgPSBbcGF0aFNlZyB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBhdGhEYXRhICopXG5hbmQgYW5pbWF0ZWRQYXRoRGF0YSA9IG9iamVjdFxuICBtZXRob2QgcGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2Qgbm9ybWFsaXplZFBhdGhTZWdMaXN0IDogcGF0aFNlZ0xpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aEVsZW1lbnQgKilcbmFuZCBwYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBhdGhEYXRhXG5cbiAgbWV0aG9kIHBhdGhMZW5ndGggOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0VG90YWxMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFBvaW50QXRMZW5ndGggOiBudW1iZXJfdCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0UGF0aFNlZ0F0TGVuZ3RoIDogbnVtYmVyX3QgLT4gaW50XG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDbG9zZVBhdGggOiBwYXRoU2VnQ2xvc2VQYXRoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ01vdmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdNb3ZldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9BYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gcGF0aFNlZ0N1cnZldG9DdWJpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdBcmNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBwYXRoU2VnQXJjIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY1JlbCA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwgOiBudW1iZXJfdCAtPiBwYXRoU2VnTGluZXRvSG9yaXpvbnRhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicyA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9WZXJ0aWNhbCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoIG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdEVsZW1lbnQgKilcbmFuZCByZWN0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcnkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQ2lyY2xlRWxlbWVudCAqKVxuYW5kIGNpcmNsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0VsbGlwc2VFbGVtZW50ICopXG5hbmQgZWxsaXBzZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdMaW5lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBsaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFBvaW50cyAqKVxuYW5kIGFuaW1hdGVkUG9pbnRzID0gb2JqZWN0XG4gIG1ldGhvZCBwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGVkcG9pbnRzIDogcG9pbnRMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5bGluZUVsZW1lbnQgKilcbmFuZCBwb2x5TGluZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgYW5pbWF0ZWRQb2ludHNcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9seWdvbkVsZW1lbnQgKilcbmFuZCBwb2x5Z29uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0Q29udGVudEVsZW1lbnQgKilcbmFuZCB0ZXh0Q29udGVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcblxuICBtZXRob2QgdGV4dExlbmd0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGhBZGp1c3QgOiBsZW5ndGhBZGp1c3QgYW5pbWF0ZWQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldE51bWJlck9mQ2hhcnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb21wdXRlZFRleHRMZW5ndGggOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN1YlN0cmluZ0xlbmd0aCA6IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmRQb3NpdGlvbk9mQ2hhciA6IGludCAtPiBwb2ludCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RXh0ZW50T2ZDaGFyIDogaW50IC0+IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFJvdGF0aW9uT2ZDaGFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0Q2hhck51bUF0UG9zaXRpb24gOiBwb2ludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3RTdWJTdHJpbmcgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50ICopXG5hbmQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeCA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IGFuaW1hdGVkTnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dEVsZW1lbnQgKilcbmFuZCB0ZXh0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcbmVuZFxuXG5hbmQgdHNwYW5FbGVtZW50ID0gdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG5hbmQgdHJlZkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVGV4dFBhdGhFbGVtZW50ICopXG5hbmQgdGV4dFBhdGhFbGVtZW50TWV0aG9kID0gW3RleHRQYXRoTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudFNwYWNpbmcgPSBbdGV4dFBhdGhTcGFjaW5nVHlwZV0gYW5pbWF0ZWRcblxuYW5kIHRleHRQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRDb250ZW50RWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGhvZF8gOiB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGFjaW5nIDogdGV4dFBhdGhFbGVtZW50U3BhY2luZyByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaERlZkVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaERlZkVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50ICopXG5hbmQgYWx0R2x5cGhJdGVtRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoUmVmRWxlbWVudCAqKVxuYW5kIGdseXBoUmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2QgZ2x5cGhSZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm1hdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIGR5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYWludCA6IFNWR0NvbG9yIHsgKilcblxuKCogICAvLyBQYWludCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9SR0JDT0xPUl9JQ0NDT0xPUiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfTk9ORSA9IDEwMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9DVVJSRU5UQ09MT1IgPSAxMDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX05PTkUgPSAxMDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX0NVUlJFTlRDT0xPUiA9IDEwNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1IgPSAxMDU7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJX1JHQkNPTE9SX0lDQ0NPTE9SID0gMTA2OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSSA9IDEwNzsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcGFpbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVyaTsgKilcblxuKCogICB2b2lkIHNldFVyaShpbiBET01TdHJpbmcgdXJpKTsgKilcbigqICAgdm9pZCBzZXRQYWludChpbiB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGUsIGluIERPTVN0cmluZyB1cmksIGluIERPTVN0cmluZyByZ2JDb2xvciwgaW4gRE9NU3RyaW5nIGljY0NvbG9yKSByYWlzZXMoU1ZHRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdNYXJrZXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdTdHlsYWJsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRml0VG9WaWV3Qm94IHsgKilcblxuKCogICAvLyBNYXJrZXIgVW5pdCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCA9IDI7ICopXG5cbigqICAgLy8gTWFya2VyIE9yaWVudGF0aW9uIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BVVRPID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfQU5HTEUgPSAyOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggcmVmWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFya2VyVW5pdHM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCBtYXJrZXJXaWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlckhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3JpZW50VHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQW5nbGUgb3JpZW50QW5nbGU7ICopXG5cbigqICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgdm9pZCBzZXRPcmllbnRUb0FuZ2xlKGluIFNWR0FuZ2xlIGFuZ2xlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdSZW5kZXJpbmdJbnRlbnQgeyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxvY2FsOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ29sb3JQcm9maWxlUnVsZSA6IFNWR0NTU1J1bGUsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgc3JjIHNldHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWUgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZW5kZXJpbmdJbnRlbnQgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHR3JhZGllbnRFbGVtZW50ICopXG5hbmQgYW5pbWF0ZWRTcHJlYWRNZXRob2QgPSBbc3ByZWFkTWV0aG9kVHlwZV0gYW5pbWF0ZWRcblxuYW5kIGdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGdyYWRpZW50VW5pdHM7ICopXG4gIG1ldGhvZCBncmFkaWVudFRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3ByZWFkTWV0aG9kIDogYW5pbWF0ZWRTcHJlYWRNZXRob2QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCAqKVxuYW5kIGxpbmVhckdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCB4MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5MiA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQgKilcbmFuZCByYWRpYWxHcmFkaWVudEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBncmFkaWVudEVsZW1lbnRcblxuICBtZXRob2QgY3ggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3kgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgciA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTdG9wRWxlbWVudCAqKVxuYW5kIHN0b3BFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBtZXRob2Qgb2Zmc2V0IDogYW5pbWF0ZWROdW1iZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdHRlcm5FbGVtZW50ICopXG5hbmQgcGF0dGVybkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Vbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwYXR0ZXJuQ29udGVudFVuaXRzOyAqKVxuICBtZXRob2QgcGF0dGVyblRyYW5zZm9ybSA6IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDbGlwUGF0aEVsZW1lbnQgKilcbmFuZCBjbGlwUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGNsaXBQYXRoVW5pdHM7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR01hc2tFbGVtZW50ICopXG5hbmQgbWFza0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza1VuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG1hc2tDb250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0ZpbHRlckVsZW1lbnQgKilcbmFuZCBmaWx0ZXJFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBmaWx0ZXJVbml0czsgKilcbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBwcmltaXRpdmVVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWCA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsdGVyUmVzWSA6IGFuaW1hdGVkSW50ZWdlciB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0RmlsdGVyUmVzIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogU1ZHU3R5bGFibGUgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB3aWR0aDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIGhlaWdodDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIHJlc3VsdDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUJsZW5kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEJsZW5kIE1vZGUgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9OT1JNQUwgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX01VTFRJUExZID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9TQ1JFRU4gPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX0RBUktFTiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTElHSFRFTiA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbW9kZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbG9yTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbG9yIE1hdHJpeCBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfU0FUVVJBVEUgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJPVEFURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTFVNSU5BTkNFVE9BTFBIQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB2YWx1ZXM7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuXG4oKiAgIC8vIENvbXBvbmVudCBUcmFuc2ZlciBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9UQUJMRSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfRElTQ1JFVEUgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0xJTkVBUiA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfR0FNTUEgPSA1OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlckxpc3QgdGFibGVWYWx1ZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzbG9wZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGludGVyY2VwdDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGFtcGxpdHVkZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGV4cG9uZW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgb2Zmc2V0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0dFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDb21wb3NpdGUgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX09WRVIgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfSU4gPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FUT1AgPSA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SID0gNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX0FSSVRITUVUSUMgPSA2OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9wZXJhdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGszOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBFZGdlIE1vZGUgVmFsdWVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX0RVUExJQ0FURSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19FREdFTU9ERV9XUkFQID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX05PTkUgPSAzOyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIG9yZGVyWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCBrZXJuZWxNYXRyaXg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkaXZpc29yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmlhczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciB0YXJnZXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGVkZ2VNb2RlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkQm9vbGVhbiBwcmVzZXJ2ZUFscGhhOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpZmZ1c2VDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBhemltdXRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZWxldmF0aW9uOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFUG9pbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRVNwb3RMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB5OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgejsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHBvaW50c0F0WjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBsaW1pdGluZ0NvbmVBbmdsZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9HID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0EgPSA0OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjI7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geENoYW5uZWxTZWxlY3RvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24geUNoYW5uZWxTZWxlY3RvcjsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN0ZERldmlhdGlvblk7ICopXG5cbigqICAgdm9pZCBzZXRTdGREZXZpYXRpb24oaW4gZmxvYXQgc3RkRGV2aWF0aW9uWCwgaW4gZmxvYXQgc3RkRGV2aWF0aW9uWSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVJbWFnZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTGFuZ1NwYWNlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU1lcmdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIE1vcnBob2xvZ3kgT3BlcmF0b3JzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcmFkaXVzWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRU9mZnNldEVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR5OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJDb25zdGFudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNwZWN1bGFyRXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVGlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIFR1cmJ1bGVuY2UgVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1RVUkJVTEVOQ0VfVFlQRV9GUkFDVEFMTk9JU0UgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1RVUkJVTEVOQ0UgPSAyOyAqKVxuXG4oKiAgIC8vIFN0aXRjaCBPcHRpb25zICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9TVElUQ0ggPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfU1RJVENIVFlQRV9OT1NUSVRDSCA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGJhc2VGcmVxdWVuY3lYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgbnVtT2N0YXZlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNlZWQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHN0aXRjaFRpbGVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0N1cnNvckVsZW1lbnQgKilcbmFuZCBjdXJzb3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQUVsZW1lbnQgKilcbmFuZCBhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgdGFyZ2V0IDogYW5pbWF0ZWRTdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1ZpZXdFbGVtZW50ICopXG5hbmQgdmlld0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICBtZXRob2Qgdmlld1RhcmdldCA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NjcmlwdEVsZW1lbnQgKilcbmFuZCBzY3JpcHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHR5cGVfIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdab29tRXZlbnQgOiBVSUV2ZW50ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdSZWN0IHpvb21SZWN0U2NyZWVuOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgcHJldmlvdXNTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IHByZXZpb3VzVHJhbnNsYXRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXQgbmV3U2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdQb2ludCBuZXdUcmFuc2xhdGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0aW9uRWxlbWVudCAqKVxuYW5kIGFuaW1hdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gICgqIGluaGVyaXQgZWxlbWVudFRpbWVDb250cm9sICopXG4gIG1ldGhvZCB0YXJnZXRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0U3RhcnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U2ltcGxlRHVyYXRpb24gOiBudW1iZXJfdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdTZXRFbGVtZW50ICopXG5hbmQgc2V0RWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0ZU1vdGlvbkVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNUGF0aEVsZW1lbnQgKilcbmFuZCBtUGF0aEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVDb2xvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBhbmltYXRpb25FbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudCAqKVxuYW5kIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEVsZW1lbnQgKilcbmFuZCBmb250RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dseXBoRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQqKVxuYW5kIGdseXBoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0hLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcbigqIGludGVyZmFjZSBTVkdWS2VybkVsZW1lbnQgOiBTVkdFbGVtZW50ICopXG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VTcmNFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlU3JjRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlVXJpRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZVVyaUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZUZvcm1hdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VGb3JtYXRFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VOYW1lRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZU5hbWVFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWV0YWRhdGFFbGVtZW50ICopXG5jbGFzcyB0eXBlIG1ldGFkYXRhRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvcmVpZ25PYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBjcmVhdGVFbGVtZW50IChkb2MgOiBkb2N1bWVudCB0KSBuYW1lID0gZG9jIyNjcmVhdGVFbGVtZW50TlMgeG1sbnMgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGggZG9jIDogYWx0R2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoRGVmIGRvYyA6IGFsdEdseXBoRGVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGRlZlwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaEl0ZW0gZG9jIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbHRnbHlwaGl0ZW1cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZSBkb2MgOiBhbmltYXRlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRlXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVDb2xvciBkb2MgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVjb2xvclwiXG5cbmxldCBjcmVhdGVBbmltYXRlTW90aW9uIGRvYyA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVtb3Rpb25cIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSBkb2MgOiBhbmltYXRlVHJhbnNmb3JtRWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhbmltYXRldHJhbnNmb3JtXCJcblxubGV0IGNyZWF0ZUNpcmNsZSBkb2MgOiBjaXJjbGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNpcmNsZVwiXG5cbmxldCBjcmVhdGVDbGlwUGF0aCBkb2MgOiBjbGlwUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2xpcHBhdGhcIlxuXG4oKiBsZXQgY3JlYXRlQ29sb3JQcm9maWxlIGRvYyA6IGNvbG9yUHJvZmlsZSB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xvci1wcm9maWxlXCIgKilcbmxldCBjcmVhdGVDdXJzb3IgZG9jIDogY3Vyc29yRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjdXJzb3JcIlxuXG5sZXQgY3JlYXRlRGVmcyBkb2MgOiBkZWZzRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWZzXCJcblxubGV0IGNyZWF0ZURlc2MgZG9jIDogZGVzY0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGVzY1wiXG5cbmxldCBjcmVhdGVFbGxpcHNlIGRvYyA6IGVsbGlwc2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImVsbGlwc2VcIlxuXG4oKiBsZXQgY3JlYXRlRmUqICopXG5sZXQgY3JlYXRlRmlsdGVyIGRvYyA6IGZpbHRlckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZmlsdGVyXCJcblxubGV0IGNyZWF0ZUZvbnQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udFwiXG5cbmxldCBjcmVhdGVGb250RmFjZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2VcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VGb3JtYXQgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbmxldCBjcmVhdGVGb250RmFjZU5hbWUgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLW5hbWVcIlxuXG5sZXQgY3JlYXRlRm9udEZhY2VTcmMgZG9jIDogZm9udEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9udC1mYWNlLXNyY1wiXG5cbmxldCBjcmVhdGVGb250RmFjZVVyaSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtdXJpXCJcblxubGV0IGNyZWF0ZUZvcmVpZ25PYmplY3QgZG9jIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZm9yZWlnbk9iamVjdFwiXG5cbmxldCBjcmVhdGVHIGRvYyA6IGdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdcIlxuXG5sZXQgY3JlYXRlR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBoXCJcblxubGV0IGNyZWF0ZUdseXBoUmVmIGRvYyA6IGdseXBoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJnbHlwaHJlZlwiXG5cbmxldCBjcmVhdGVoa2VybiBkb2MgOiBlbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhrZXJuXCJcblxubGV0IGNyZWF0ZUltYWdlIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWFnZVwiXG5cbmxldCBjcmVhdGVMaW5lRWxlbWVudCBkb2MgOiBsaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5lXCJcblxubGV0IGNyZWF0ZUxpbmVhckVsZW1lbnQgZG9jIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVhcmdyYWRpZW50XCJcblxuKCogbGV0IGNyZWF0ZU1hcmtlciBkb2MgOiBtYXJrZXJFbGVtZW50ICopXG5sZXQgY3JlYXRlTWFzayBkb2MgOiBtYXNrRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXNrXCJcblxubGV0IGNyZWF0ZU1ldGFEYXRhIGRvYyA6IG1ldGFkYXRhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtZXRhZGF0YVwiXG5cbmxldCBjcmVhdGVNaXNzaW5nR2x5cGggZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1pc3NpbmctZ2x5cGhcIlxuXG5sZXQgY3JlYXRlTVBhdGggZG9jIDogbVBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1wYXRoXCJcblxubGV0IGNyZWF0ZVBhdGggZG9jIDogcGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0aFwiXG5cbmxldCBjcmVhdGVQYXR0ZXJuIGRvYyA6IHBhdHRlcm5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhdHRlcm5cIlxuXG5sZXQgY3JlYXRlUG9seWdvbiBkb2MgOiBwb2x5Z29uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5Z29uXCJcblxubGV0IGNyZWF0ZVBvbHlsaW5lIGRvYyA6IHBvbHlMaW5lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwb2x5bGluZVwiXG5cbmxldCBjcmVhdGVSYWRpYWxncmFkaWVudCBkb2MgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicmFkaWFsZ3JhZGllbnRcIlxuXG5sZXQgY3JlYXRlUmVjdCBkb2MgOiByZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyZWN0XCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVTZXQgZG9jIDogc2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzZXRcIlxuXG5sZXQgY3JlYXRlU3RvcCBkb2MgOiBzdG9wRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdG9wXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVTdmcgZG9jIDogc3ZnRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdmdcIlxuXG5sZXQgY3JlYXRlU3dpdGNoIGRvYyA6IHN3aXRjaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3dpdGNoXCJcblxubGV0IGNyZWF0ZVN5bWJvbCBkb2MgOiBzeW1ib2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN5bWJvbFwiXG5cbmxldCBjcmVhdGVUZXh0RWxlbWVudCBkb2MgOiB0ZXh0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0XCJcblxubGV0IGNyZWF0ZVRleHRwYXRoIGRvYyA6IHRleHRQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZXh0cGF0aFwiXG5cbmxldCBjcmVhdGVUaXRsZSBkb2MgOiB0aXRsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGl0bGVcIlxuXG5sZXQgY3JlYXRlVHJlZiBkb2MgOiB0cmVmRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0cmVmXCJcblxubGV0IGNyZWF0ZVRzcGFuIGRvYyA6IHRzcGFuRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0c3BhblwiXG5cbmxldCBjcmVhdGVVc2UgZG9jIDogdXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ1c2VcIlxuXG5sZXQgY3JlYXRlVmlldyBkb2MgOiB2aWV3RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWV3XCJcblxubGV0IGNyZWF0ZXZrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmtlcm5cIlxuXG4oKioqKilcblxubGV0IHN2Z19lbGVtZW50IDogZWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fU1ZHRWxlbWVudFxuXG5sZXQgZG9jdW1lbnQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkIDogZWxlbWVudCB0ID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoSnMuVW5zYWZlLmdsb2JhbCMjLmRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAoZnVuIGUgLT4gaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gZSBlbHNlIHJhaXNlIE5vdF9mb3VuZClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IChlIDogI0RvbS5ub2RlIEpzLnQpIDogZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgSnMuaW5zdGFuY2VvZiBlIHN2Z19lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIChlIDogI2VsZW1lbnQgdCkgdGFnID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgOiBhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYVwiXG5cbiAgbGV0IGFsdEdseXBoIGUgOiBhbHRHbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoXCJcblxuICBsZXQgYWx0R2x5cGhEZWYgZSA6IGFsdEdseXBoRGVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhkZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gZSA6IGFsdEdseXBoSXRlbUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFsdGdseXBoaXRlbVwiXG5cbiAgbGV0IGFuaW1hdGUgZSA6IGFuaW1hdGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlXCJcblxuICBsZXQgYW5pbWF0ZUNvbG9yIGUgOiBhbmltYXRlQ29sb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlY29sb3JcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uIGUgOiBhbmltYXRlTW90aW9uRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZW1vdGlvblwiXG5cbiAgbGV0IGFuaW1hdGVUcmFuc2Zvcm0gZSA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgb3B0ID1cbiAgICB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG4gIGxldCBjaXJjbGUgZSA6IGNpcmNsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNpcmNsZVwiXG5cbiAgbGV0IGNsaXBQYXRoIGUgOiBjbGlwUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNsaXBwYXRoXCJcblxuICAoKiBsZXQgQ29sb3JQcm9maWxlIGUgOiBjb2xvclByb2ZpbGUgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImNvbG9yLXByb2ZpbGVcIiAqKVxuICBsZXQgY3Vyc29yIGUgOiBjdXJzb3JFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJjdXJzb3JcIlxuXG4gIGxldCBkZWZzIGUgOiBkZWZzRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgZSA6IGRlc2NFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZXNjXCJcblxuICBsZXQgZWxsaXBzZSBlIDogZWxsaXBzZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImVsbGlwc2VcIlxuXG4gICgqIGxldCBGZSogKilcbiAgbGV0IGZpbHRlciBlIDogZmlsdGVyRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZmlsdGVyXCJcblxuICBsZXQgZm9udCBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnRcIlxuXG4gIGxldCBmb250RmFjZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZVwiXG5cbiAgbGV0IGZvbnRGYWNlRm9ybWF0IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLWZvcm1hdFwiXG5cbiAgbGV0IGZvbnRGYWNlTmFtZSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1uYW1lXCJcblxuICBsZXQgZm9udEZhY2VTcmMgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udEZhY2VVcmkgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9yZWlnbk9iamVjdCBlIDogZm9yZWlnbk9iamVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvcmVpZ25vYmplY3RcIlxuXG4gIGxldCBnIGUgOiBnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ1wiXG5cbiAgbGV0IGdseXBoIGUgOiBnbHlwaEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImdseXBoXCJcblxuICBsZXQgZ2x5cGhSZWYgZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhyZWZcIlxuXG4gIGxldCBoa2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiaGtlcm5cIlxuXG4gIGxldCBpbWFnZSBlIDogaW1hZ2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJpbWFnZVwiXG5cbiAgbGV0IGxpbmVFbGVtZW50IGUgOiBsaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZVwiXG5cbiAgbGV0IGxpbmVhckVsZW1lbnQgZSA6IGxpbmVhckdyYWRpZW50RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibGluZWFyZ3JhZGllbnRcIlxuXG4gICgqIGxldCBNYXJrZXIgZSA6IG1hcmtlckVsZW1lbnQgKilcbiAgbGV0IG1hc2sgZSA6IG1hc2tFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtYXNrXCJcblxuICBsZXQgbWV0YURhdGEgZSA6IG1ldGFkYXRhRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWV0YWRhdGFcIlxuXG4gIGxldCBtaXNzaW5nR2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IG1QYXRoIGUgOiBtUGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1wYXRoXCJcblxuICBsZXQgcGF0aCBlIDogcGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBhdGhcIlxuXG4gIGxldCBwYXR0ZXJuIGUgOiBwYXR0ZXJuRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0dGVyblwiXG5cbiAgbGV0IHBvbHlnb24gZSA6IHBvbHlnb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5Z29uXCJcblxuICBsZXQgcG9seWxpbmUgZSA6IHBvbHlMaW5lRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicG9seWxpbmVcIlxuXG4gIGxldCByYWRpYWxncmFkaWVudCBlIDogcmFkaWFsR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyYWRpYWxncmFkaWVudFwiXG5cbiAgbGV0IHJlY3QgZSA6IHJlY3RFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJyZWN0XCJcblxuICBsZXQgc2NyaXB0IGUgOiBzY3JpcHRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzY3JpcHRcIlxuXG4gIGxldCBzZXQgZSA6IHNldEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNldFwiXG5cbiAgbGV0IHN0b3AgZSA6IHN0b3BFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdG9wXCJcblxuICBsZXQgc3R5bGUgZSA6IHN0eWxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3R5bGVcIlxuXG4gIGxldCBzdmcgZSA6IHN2Z0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN2Z1wiXG5cbiAgbGV0IHN3aXRjaCBlIDogc3dpdGNoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3dpdGNoXCJcblxuICBsZXQgc3ltYm9sIGUgOiBzeW1ib2xFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzeW1ib2xcIlxuXG4gIGxldCB0ZXh0RWxlbWVudCBlIDogdGV4dEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRcIlxuXG4gIGxldCB0ZXh0cGF0aCBlIDogdGV4dFBhdGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0ZXh0cGF0aFwiXG5cbiAgbGV0IHRpdGxlIGUgOiB0aXRsZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRpdGxlXCJcblxuICBsZXQgdHJlZiBlIDogdHJlZkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRyZWZcIlxuXG4gIGxldCB0c3BhbiBlIDogdHNwYW5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ0c3BhblwiXG5cbiAgbGV0IHVzZSBlIDogdXNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidXNlXCJcblxuICBsZXQgdmlldyBlIDogdmlld0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInZpZXdcIlxuXG4gIGxldCB2a2VybiBlIDogZWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmtlcm5cIlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG4oKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRTb3VyY2UgKilcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuISBJbXBvcnRcblxudHlwZSBzdGF0ZSA9XG4gIHwgQ09OTkVDVElOR1xuICB8IE9QRU5cbiAgfCBDTE9TRURcblxuY2xhc3MgdHlwZSBbJ2FdIG1lc3NhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9yaWdpbiA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdEV2ZW50SWQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG4gICgqIG1ldGhvZCBzb3VyY2UgOiB1bml0ICopXG5lbmRcblxuY2xhc3MgdHlwZSBldmVudFNvdXJjZSA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCB1cmwgOiBzdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBzdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3NlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9ub3BlbiA6ICgnc2VsZiB0LCAnc2VsZiBtZXNzYWdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tZXNzYWdlIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IHdpdGhDcmVkZW50aWFscyBiIDogb3B0aW9ucyB0ID1cbiAgbGV0IGluaXQgPSBKcy5VbnNhZmUub2JqIFt8fF0gaW5cbiAgaW5pdCMjLndpdGhDcmVkZW50aWFscyA6PSBKcy5ib29sIGI7XG4gIGluaXRcblxubGV0IGV2ZW50U291cmNlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgZXZlbnRTb3VyY2Vfb3B0aW9ucyA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRXZlbnRTb3VyY2VcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGNvbnNvbGUgPSBvYmplY3RcbiAgbWV0aG9kIGxvZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ181IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNiA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsb2dfNyA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ184IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1ZyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm8gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbmZvXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm4gOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3YXJuXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3JfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzEgOiBib29sIHQgLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzIgOiBib29sIHQgLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMyA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzQgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXNzZXJ0XzUgOiBib29sIHQgLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXIgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXJ4bWwgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0cmFjZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cCA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzMgOiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWRfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBFbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgdGltZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lRW5kIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuZXh0ZXJuYWwgZ2V0X2NvbnNvbGUgOiB1bml0IC0+IGNvbnNvbGUgdCA9IFwiY2FtbF9qc19nZXRfY29uc29sZVwiXG5cbmxldCBjb25zb2xlID0gZ2V0X2NvbnNvbGUgKClcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHBvc2l0aW9uRXJyb3JDb2RlXG5cbnR5cGUgd2F0Y2hJZFxuXG5jbGFzcyB0eXBlIGNvb3JkaW5hdGVzID0gb2JqZWN0XG4gIG1ldGhvZCBsYXRpdHVkZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9uZ2l0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZSA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRpdHVkZUFjY3VyYWN5IDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZGluZyA6IEpzLm51bWJlcl90IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwZWVkIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb29yZHMgOiBjb29yZGluYXRlcyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZXN0YW1wIDogSnMuZGF0ZSBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbk9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGVuYWJsZUhpZ2hBY2N1cmFjeSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGltZW91dCA6IGludCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtYXhpbXVtQWdlIDogaW50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwb3NpdGlvbkVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBfUEVSTUlTU0lPTl9ERU5JRURfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9TSVRJT05fVU5BVkFJTEFCTEVfIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVElNRU9VVCA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29kZSA6IHBvc2l0aW9uRXJyb3JDb2RlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWVzc2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGdlb2xvY2F0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDdXJyZW50UG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHdhdGNoUG9zaXRpb24gOlxuICAgICAgIChwb3NpdGlvbiBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gKHBvc2l0aW9uRXJyb3IgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgIC0+IHBvc2l0aW9uT3B0aW9ucyBKcy50XG4gICAgLT4gd2F0Y2hJZCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNsZWFyV2F0Y2ggOiB3YXRjaElkIC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBlbXB0eV9wb3NpdGlvbl9vcHRpb25zICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBnZW9sb2NhdGlvbiA9XG4gIGxldCB4ID0gSnMuVW5zYWZlLmdsb2JhbCMjLm5hdmlnYXRvciBpblxuICBpZiBKcy5PcHRkZWYudGVzdCB4IHRoZW4geCMjLmdlb2xvY2F0aW9uIGVsc2UgeFxuXG4oKiB1bmRlZmluZWQgKilcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGdlb2xvY2F0aW9uXG4iLCJjbGFzcyB0eXBlIGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBib3VuZGluZ0NsaWVudFJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290Qm91bmRzIDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJlY3QgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnRlcnNlY3Rpb25SYXRpbyA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNJbnRlcnNlY3RpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCByb290IDogRG9tLm5vZGUgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCByb290TWFyZ2luIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkIDogSnMubnVtYmVyX3QgSnMuanNfYXJyYXkgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRocmVzaG9sZHMgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB1bm9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X2ludGVyc2VjdGlvbl9vYnNlcnZlcl9vcHRpb25zICgpIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPVxuICBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IGludGVyc2VjdGlvbk9ic2VydmVyX3Vuc2FmZVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgOlxuICAgICggICAoICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnRcbiAgICAgICAgIC0+IHVuaXQpXG4gICAgICAgIEpzLmNhbGxiYWNrXG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyT3B0aW9ucyBKcy50XG4gICAgIC0+IGludGVyc2VjdGlvbk9ic2VydmVyIEpzLnQpXG4gICAgSnMuY29uc3RyID1cbiAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE4IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgU2hhcmVkID0gc2lnXG4gIGNsYXNzIHR5cGUgb2JqZWN0X29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgdmFsIG9iamVjdF9vcHRpb25zIDogdW5pdCAtPiBvYmplY3Rfb3B0aW9ucyBKcy50XG5cbiAgY2xhc3MgdHlwZSBfb2JqZWN0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHN1cHBvcnRlZExvY2FsZXNPZiA6XG4gICAgICAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50XG4gICAgICAtPiBvYmplY3Rfb3B0aW9ucyBKcy50IEpzLm9wdGRlZlxuICAgICAgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTaGFyZWQgOiBTaGFyZWQgPSBzdHJ1Y3RcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb2JqZWN0X29wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIENvbGxhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY29sbGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vuc2l0aXZpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlUHVuY3R1YXRpb24gOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG51bWVyaWMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIGNhc2VGaXJzdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgdXNhZ2UgPSBKcy5zdHJpbmcgXCJzb3J0XCJcblxuICAgICAgdmFsIG11dGFibGUgc2Vuc2l0aXZpdHkgPSBKcy5zdHJpbmcgXCJ2YXJpYW50XCJcblxuICAgICAgdmFsIG11dGFibGUgaWdub3JlUHVuY3R1YXRpb24gPSBKcy5fZmFsc2VcblxuICAgICAgdmFsIG11dGFibGUgbnVtZXJpYyA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBjYXNlRmlyc3QgPSBKcy5zdHJpbmcgXCJmYWxzZVwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGNvbXBhcmUgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gaW50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRGF0ZVRpbWVGb3JtYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGNhbGVuZGFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG51bWJlcmluZ1N5c3RlbSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB0aW1lWm9uZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHdlZWtkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGVyYSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgeWVhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbW9udGggOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGRheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgaG91ciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWludXRlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBzZWNvbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBkYXRlU3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGRheVBlcmlvZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyMTIgOiBib29sIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyQ3ljbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdE1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZnJhY3Rpb25hbFNlY29uZERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lTmFtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGRhdGVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lU3R5bGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY2FsZW5kYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5UGVyaW9kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB0aW1lWm9uZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyMTIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ckN5Y2xlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZvcm1hdE1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHdlZWtkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZXJhID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHllYXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbW9udGggPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWludXRlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNlY29uZCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lTmFtZSA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLmRhdGUgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMuZGF0ZSBKcy50IEpzLm9wdGRlZiAtPiBmb3JtYXRfcGFydCBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIE51bWJlckZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFjdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjdXJyZW5jeURpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5U2lnbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBub3RhdGlvbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzaWduRGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdW5pdERpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHVzZUdyb3VwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCByb3VuZGluZ01vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nUHJpb3JpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nSW5jcmVtZW50IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB0cmFpbGluZ1plcm9EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWYgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBjb21wYWN0RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeURpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgY3VycmVuY3lTaWduID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIG5vdGF0aW9uID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG51bWJlcmluZ1N5c3RlbSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzaWduRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBzdHlsZSA9IEpzLnN0cmluZyBcImRlY2ltYWxcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1bml0ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXREaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVzZUdyb3VwaW5nID0gSnMuX3RydWVcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdNb2RlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHJvdW5kaW5nUHJpb3JpdHkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdJbmNyZW1lbnQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdHJhaWxpbmdaZXJvRGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBKcy51bmRlZmluZWRcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIGZvcm1hdF9wYXJ0ID0gb2JqZWN0XG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF92YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIGZvcm1hdCA6IChKcy5udW1iZXIgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCkgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGZvcm1hdFRvUGFydHMgOlxuICAgICAgSnMubnVtYmVyIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGx1cmFsUnVsZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHBsdXJhbENhdGVnb3JpZXMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtaW5pbXVtSW50ZWdlckRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA6IGludCBKcy5vcHRkZWZfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgX3R5cGUgPSBKcy5zdHJpbmcgXCJjYXJkaW5hbFwiXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSB0ID0gb2JqZWN0XG4gICAgbWV0aG9kIHNlbGVjdCA6IEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbmNsYXNzIHR5cGUgaW50bCA9IG9iamVjdFxuICBtZXRob2QgX0NvbGxhdG9yIDogQ29sbGF0b3IuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RhdGVUaW1lRm9ybWF0IDogRGF0ZVRpbWVGb3JtYXQuX29iamVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX051bWJlckZvcm1hdCA6IE51bWJlckZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUGx1cmFsUnVsZXMgOiBQbHVyYWxSdWxlcy5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRDYW5vbmljYWxMb2NhbGVzIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuZW5kXG5cbmxldCBpbnRsID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsXG5cbmxldCBjb2xsYXRvcl9jb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGwjIy5fQ29sbGF0b3JcblxubGV0IGRhdGVUaW1lRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9EYXRlVGltZUZvcm1hdFxuXG5sZXQgbnVtYmVyRm9ybWF0X2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9OdW1iZXJGb3JtYXRcblxubGV0IHBsdXJhbFJ1bGVzX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9QbHVyYWxSdWxlc1xuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50bFxuIiwiaW5jbHVkZSBKc19vZl9vY2FtbC5Kc1xubW9kdWxlIFVybCA9IEpzX29mX29jYW1sLlVybFxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWwuRmlyZWJ1Z1xubW9kdWxlIEZpbGUgPSBKc19vZl9vY2FtbC5GaWxlXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWwuRG9tXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbC5UeXBlZF9hcnJheVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sLlJlZ2V4cFxuXG50eXBlICgnYSwgJ2IpIHJlc3VsdCA9ICgnYSwgJ2IpIFN0ZGxpYi5yZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiXG5cbnR5cGUgd2luZG93ID0gRG9tX2h0bWwud2luZG93XG5cbmxldCB0b19hcnJheWYgZiBhID0gQXJyYXkubWFwIGYgKHRvX2FycmF5IGEpXG5cbmxldCBvZl9hcnJheWYgZiBhID0gYXJyYXkgKEFycmF5Lm1hcCBmIGEpXG5cbmxldCB0b19saXN0IGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5IGFcblxubGV0IG9mX2xpc3QgbCA9IGFycmF5IEBAIEFycmF5Lm9mX2xpc3QgQEAgbFxuXG5sZXQgdG9fbGlzdGYgZiBhID0gQXJyYXkudG9fbGlzdCBAQCB0b19hcnJheWYgZiBhXG5cbmxldCBvZl9saXN0ZiBmIGEgPSBvZl9hcnJheWYgZiBAQCBBcnJheS5vZl9saXN0IGFcblxubGV0IG9wdGRlZiBmID0gZnVuY3Rpb24gTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHRkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHVub3B0ZGVmX2YgZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IGYgeFxuXG5sZXQgdW5vcHRkZWYgZGVmIHggPSBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IGRlZiB8IFNvbWUgeCAtPiB4XG5cbmxldCBjb252ZGVmIGYgeCA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gdW5kZWZpbmVkIHwgU29tZSB4IC0+IGRlZiAoZiB4KVxuXG5sZXQgdG9fb3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCBvcHQgZiA9IGZ1bmN0aW9uIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBjb252b3B0IGYgeCA9XG4gIG1hdGNoIE9wdC50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gbnVsbCB8IFNvbWUgeCAtPiBzb21lIChmIHgpXG5cbmxldCBqc19sb2cgbyA9IEZpcmVidWcuY29uc29sZSMjbG9nIG9cblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChzdHJpbmcgcylcblxubGV0IGxvZyBmbXQgPVxuICBGb3JtYXQua2ZwcmludGZcbiAgICAoZnVuIF9mbXQgLT4ganNfbG9nIChzdHJpbmcgKEZvcm1hdC5mbHVzaF9zdHJfZm9ybWF0dGVyICgpKSkpXG4gICAgRm9ybWF0LnN0cl9mb3JtYXR0ZXIgZm10XG5cbmxldCBlcnJvcl9vZl9zdHJpbmcgcyA9IG5ldyVqcyBlcnJvcl9jb25zdHIgKHN0cmluZyBzKVxubGV0IGNhdGNoX2V4biBmID0gZnVuY3Rpb25cbiAgfCBKc19lcnJvci5FeG4gZSAtPiBmIChKc19lcnJvci50b19lcnJvciBlKVxuICB8IGV4biAtPiBmIEBAIGVycm9yX29mX3N0cmluZyBAQCBQcmludGV4Yy50b19zdHJpbmcgZXhuXG5cbm1vZHVsZSBBT3B0ID0gc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgbGV0IG51bGwgOiAnYSB0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgbGV0IHVuZGVmaW5lZCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcbiAgZXh0ZXJuYWwgZGVmIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgcmV0dXJuIDogJ2EgLT4gJ2EgdCA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwgY29lcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbiAgZXh0ZXJuYWwganNfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuICBsZXQgaXNfbm9uZSAoeCA6ICdhIHQpIDogYm9vbCA9IHggPT0gdW5kZWZpbmVkIHx8IGpzX2VxdWFscyB4IG51bGxcbiAgbGV0IG1hcCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IpIDogJ2IgdCA9XG4gICAgaWYgaXNfbm9uZSB4IHRoZW4gbm9uZSBlbHNlIHJldHVybiAoZiAoY29lcmNlIHgpKVxuICBsZXQgYmluZCA/KG5vbmU9dW5kZWZpbmVkKSAoeCA6ICdhIHQpIChmIDogJ2EgLT4gJ2IgdCkgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgZiAoY29lcmNlIHgpXG4gIGxldCB0ZXN0ICh4IDogJ2EgdCkgOiBib29sID0gbm90IChpc19ub25lIHgpXG4gIGxldCBpdGVyICh4IDogJ2EgdCkgKGYgOiAnYSAtPiB1bml0KSA6IHVuaXQgPSBpZiBub3QgKGlzX25vbmUgeCkgdGhlbiBmIChjb2VyY2UgeClcbiAgbGV0IGNhc2UgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2IpIChnIDogJ2EgLT4gJ2IpIDogJ2IgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgZyAoY29lcmNlIHgpXG4gIGxldCBnZXQgKHggOiAnYSB0KSAoZiA6IHVuaXQgLT4gJ2EpIDogJ2EgPSBpZiBpc19ub25lIHggdGhlbiBmICgpIGVsc2UgKGNvZXJjZSB4KVxuICBsZXQgb3B0aW9uID8obm9uZT11bmRlZmluZWQpICh4IDogJ2Egb3B0aW9uKSA6ICdhIHQgPSBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gbm9uZVxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gIGxldCB0b19vcHRpb24gKHggOiAnYSB0KSA6ICdhIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIHgpXG4gIGxldCBhb3B0ID8obm9uZT0odW5kZWZpbmVkIDogJ2IgdCkpIChmIDogJ2EgLT4gJ2IpIDogJ2Egb3B0aW9uIC0+ICdiIHQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gIGxldCB0b19hb3B0IChmIDogJ2EgLT4gJ2IpICh4IDogJ2EgdCkgOiAnYiBvcHRpb24gPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSAoZiB4KSlcbmVuZFxudHlwZSAnYSBhb3B0ID0gJ2EgQU9wdC50XG5cbnR5cGUgJ2EgY2FzZV9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgPiBnZW5fcHJvcFxuXG5sZXQgcmVjIGNob29zZV9jYXNlX29wdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdW5kZWZpbmVkXG4gIHwgaCA6OiB0IC0+IG1hdGNoIE9wdGRlZi50b19vcHRpb24gaCB3aXRoIE5vbmUgLT4gY2hvb3NlX2Nhc2Vfb3B0IHQgfCBTb21lIF8gLT4gaFxuXG5sZXQgY2hvb3NlX2Nhc2UgbCA9IGNob29zZV9jYXNlX29wdCAoTGlzdC5tYXAgT3B0ZGVmLnJldHVybiBsKVxuXG5sZXQgb2JqZWN0X2NzID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcbmxldCBhc3NpZ24gKG8xIDogXyB0KSAobzIgOiBfIHQpID0gVW5zYWZlLmNvZXJjZSAob2JqZWN0X2NzIyNhc3NpZ24gbzEgbzIpXG5sZXQgYXNzaWduX2xpc3QgbCA9IFVuc2FmZS5jb2VyY2UgKFVuc2FmZS5tZXRoX2NhbGwgb2JqZWN0X2NzIFwiYXNzaWduXCIgKEFycmF5Lm9mX2xpc3QgbCkpXG5cbmxldCByZW1vdmVfdW5kZWZpbmVkIG8gPVxuICBsZXQga2V5cyA9IG9iamVjdF9rZXlzIG8gaW5cbiAga2V5cyMjZm9yRWFjaCAod3JhcF9jYWxsYmFjayAoZnVuIGsgXyBfIC0+XG4gICAgICBpZiBub3QgKE9wdGRlZi50ZXN0IChVbnNhZmUuZ2V0IG8gaykpIHRoZW4gVW5zYWZlLmRlbGV0ZSBvIGspKVxuIiwib3BlbiBKc1xuXG50eXBlIG5vbnJlYyAnYSB0ID0gPCA+IHRcblxubGV0IG9iaiA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBjcmVhdGUgKCkgOiAnYSB0ID0gbmV3JWpzIG9ialxuXG5sZXQgYWRkICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpICh2IDogJ2EpID0gVW5zYWZlLnNldCB0IChzdHJpbmcgaykgdlxuXG5sZXQgYWRkX2xpc3QgKHQgOiAnYSB0KSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgPVxuICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gYWRkIHQgayB2KSBsXG5cbmxldCBhZGRfbGlzdGYgKHQgOiAnYiB0KSAoZiA6ICgnYSAtPiAnYikpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIChmIHYpKSBsXG5cbmxldCBtYWtlIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBhZGRfbGlzdCB0IGw7XG4gIHRcblxubGV0IG1ha2VmIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2IgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0ZiB0IGYgbDtcbiAgdFxuXG5sZXQgcmVtb3ZlICh0IDogJ2EgdCkgKGsgOiBzdHJpbmcpID0gVW5zYWZlLmRlbGV0ZSB0IChzdHJpbmcgaylcblxubGV0IGZpbmQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgOiAnYSBvcHRpb24gPVxuICBPcHRkZWYudG9fb3B0aW9uIChVbnNhZmUuZ2V0IHQgKHN0cmluZyBrKSlcblxubGV0IGtleXMgKHQgOiAnYSB0KSA6IHN0cmluZyBsaXN0ID1cbiAgdG9fbGlzdGYgdG9fc3RyaW5nIEBAIG9iaiMja2V5cyB0XG5cbmxldCBpdGVtcyAodCA6ICdhIHQpIDogKHN0cmluZyAqICdhKSBsaXN0ID1cbiAgdG9fbGlzdGYgKGZ1biBrIC0+IHRvX3N0cmluZyBrLCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zZiAoZiA6ICgnYSAtPiAnYikpICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2IpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIGYgQEAgVW5zYWZlLmdldCB0IGspIEBAIG9iaiMja2V5cyB0XG5cbmxldCBsZW5ndGggKHQgOiAnYSB0KSA9IChvYmojI2tleXMgdCkjIy5sZW5ndGhcblxubGV0IG1lcmdlIChsIDogJ2EgdCBsaXN0KSA6ICdhIHQgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgKGZ1biB4IC0+IExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIChpdGVtcyB4KSkgbDtcbiAgdFxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHByb21pc2UwID1cbiAgb2JqZWN0XG4gICAgbWV0aG9kIHRoZW5fIDogKCdhIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICAgIG1ldGhvZCBjYXRjaCA6ICgnYiAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0IG1ldGhcbiAgZW5kXG5cbmNsYXNzIHR5cGUgWydhXSBwcm9taXNlID0gWydhLCBlcnJvciB0XSBwcm9taXNlMFxuXG50eXBlICgnYSwgJ2IpIHByb21pc2VfY3MgPVxuICAoKCgnYSAtPiB1bml0KSAtPiAoJ2IgLT4gdW5pdCkgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdClcbiAgY29uc3RyXG5cbmxldCBwcm9taXNlIGYgPVxuICBsZXQgY3MgOiAoJ2EsICdiKSBwcm9taXNlX2NzID0gVW5zYWZlLmdsb2JhbCMjLl9Qcm9taXNlIGluXG4gIG5ldyVqcyBjcyAod3JhcF9jYWxsYmFjayBmKVxuXG5sZXQganRoZW4wID9lcnJvciAocHJvbSA6ICgnYSwgJ2IgdCkgcHJvbWlzZTAgdCkgZiA9XG4gIGxldCBjYXRjaF9leG4gZXhuID1cbiAgICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biAoZnVuIHggLT4gZWYgKFVuc2FmZS5jb2VyY2UgeCkpIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4gP2Vycm9yIChwcm9tIDogJ2EgcHJvbWlzZSB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPSBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVmIC0+IGNhdGNoX2V4biBlZiBleG4gaW5cbiAgbGV0IHAgPSBwcm9tIyN0aGVuXyAod3JhcF9jYWxsYmFjayAoZnVuIHggLT4gdHJ5IGYgeCB3aXRoIGV4biAtPiBjYXRjaF9leG4gZXhuKSkgaW5cbiAgbWF0Y2ggZXJyb3Igd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlcnJvciAtPiBpZ25vcmUgKHAjI2NhdGNoICh3cmFwX2NhbGxiYWNrIGVycm9yKSlcblxubGV0IGp0aGVuMF9vcHQgcHJvbSA9IGZ1bmN0aW9uIE5vbmUgLT4gaWdub3JlIHByb20gfCBTb21lIGYgLT4ganRoZW4wIHByb20gZlxubGV0IGp0aGVuX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbiBwcm9tIGZcblxubGV0IHJ0aGVuIHByb20gZiA9XG4gIGp0aGVuIH5lcnJvcjooZnVuIGUgLT4gZiBAQCBFcnJvciBlKSBwcm9tIChmdW4geCAtPiBmIChPayB4KSlcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IGxvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgbzEgbzJcblxubGV0IGxvZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIG8xIG8yIG8zXG5cbmxldCBsb2dfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBsb2dfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjbG9nXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGxvZ19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZGVidWcgbyA9IEZpcmVidWcuY29uc29sZSMjZGVidWcgb1xuXG5sZXQgZGVidWcyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIG8xIG8yXG5cbmxldCBkZWJ1ZzMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgbzEgbzIgbzNcblxubGV0IGRlYnVnX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIHMpXG5cbmxldCBkZWJ1Z19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBkZWJ1Z19zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1Z18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCB3YXJuIG8gPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm4gb1xuXG5sZXQgd2FybjIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiBvMSBvMlxuXG5sZXQgd2FybjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyBvMSBvMiBvM1xuXG5sZXQgd2Fybl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjd2FybiAoSnMuc3RyaW5nIHMpXG5cbmxldCB3YXJuX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgd2Fybl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyN3YXJuXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IGVycm9yIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIG9cblxubGV0IGVycm9yMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiBvMSBvMlxuXG5sZXQgZXJyb3IzIG8xIG8yIG8zID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIG8xIG8yIG8zXG5cbmxldCBlcnJvcl9zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBzKVxuXG5sZXQgZXJyb3Jfc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjZXJyb3JfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgZXJyb3Jfc3RyMyBzMSBzMiBzMyA9XG4gIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuIiwib3BlbiBKc1xuXG5jbGFzcyB0eXBlIGJpZ0ludCA9IG9iamVjdFxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBvcHRkZWYgLT4gXyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHZhbHVlT2YgOiBiaWdJbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub25yZWMgdCA9IGJpZ0ludCB0XG5cbmxldCBiaWdJbnQgOiAoVW5zYWZlLmFueSAtPiB0KSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJCaWdJbnRcIlxuXG5sZXQgb2Zfc3RyaW5nIHMgPSBiaWdJbnQgKFVuc2FmZS5pbmplY3QgQEAgc3RyaW5nIHMpXG5sZXQgb2ZfaW50IChpIDogaW50KSA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBpKVxubGV0IG9mX2ludDY0IChpIDogaW50NjQpID0gb2Zfc3RyaW5nIChJbnQ2NC50b19zdHJpbmcgaSlcbmxldCBvZl9uYXRpdmUgKGkgOiBuYXRpdmVpbnQpID0gb2Zfc3RyaW5nIChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG5sZXQgb2ZfZmxvYXQgZiA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBudW1iZXJfb2ZfZmxvYXQgZilcblxubGV0IHRvX2xvY2FsZV9zdHJpbmcgP2ZtdCA/b3B0aW9ucyAobiA6IHQpID1cbiAgdG9fc3RyaW5nIChuIyN0b0xvY2FsZVN0cmluZyAob3B0ZGVmIHN0cmluZyBmbXQpIChPcHRkZWYub3B0aW9uIG9wdGlvbnMpKVxubGV0IHRvX3N0cmluZyAobiA6IHQpID0gdG9fc3RyaW5nIG4jI3RvU3RyaW5nXG4iLCJvcGVuIEpzXG5cbmxldCBzZXRJbm5lckh0bWwgZWx0IHMgPSBlbHQjIy5pbm5lckhUTUwgOj0gc3RyaW5nIHNcblxubGV0IHNldFRleHQgZWx0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgcyAtPlxuICAgICAgZWx0IyMudGV4dENvbnRlbnQgOj0gc29tZSAoc3RyaW5nIHMpXG5cbmxldCBhZGRDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjYWRkIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzZXMgZWx0IGwgPSBMaXN0Lml0ZXIgKGFkZENsYXNzIGVsdCkgbFxuXG5sZXQgcmVtb3ZlQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI3JlbW92ZSAoc3RyaW5nIHMpXG5cbmxldCBjb250YWluc0NsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNjb250YWlucyAoc3RyaW5nIHMpXG5cbmxldCBzZXRBdHRyaWJ1dGUgZWx0IGtleSB2YWx1ZSA9IGVsdCMjc2V0QXR0cmlidXRlIChzdHJpbmcga2V5KSAoc3RyaW5nIHZhbHVlKVxuXG5sZXQgcmVtb3ZlQXR0cmlidXRlIGVsdCBrZXkgPSBlbHQjI3JlbW92ZUF0dHJpYnV0ZSAoc3RyaW5nIGtleSlcblxubGV0IGdldEF0dHJpYnV0ZSBlbHQga2V5ID0gT3B0LnRvX29wdGlvbiAoZWx0IyNnZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpKVxuXG5sZXQgc2V0Q1NTIGVsdCBzdHlsZXMgPVxuICBsZXQgc3R5bGVzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiOyBcIiAoTGlzdC5tYXAgKGZ1biAoaywgdikgLT4gayBeIFwiOiBcIiBeIHYpIHN0eWxlcylcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhZGRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBsZXQgc3R5bGVzID1cbiAgICBtYXRjaCBnZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAgIHN0eWxlc1xuICAgIHwgU29tZSBvbGRfc3R5bGVzIC0+XG4gICAgICAgIG9sZF9zdHlsZXMgXiBcIjsgXCIgXiBzdHlsZXNcbiAgaW5cbiAgc2V0QXR0cmlidXRlIGVsdCBcInN0eWxlXCIgc3R5bGVzXG5cbmxldCBhcHBlbmRDaGlsZCA9IERvbS5hcHBlbmRDaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGQgPSBEb20ucmVtb3ZlQ2hpbGRcblxubGV0IGFwcGVuZENoaWxkcmVuIHBhcmVudCBjaGlsZHJlbiA9IExpc3QuaXRlciAoRG9tLmFwcGVuZENoaWxkIHBhcmVudCkgY2hpbGRyZW5cblxubGV0IGNoaWxkcmVuIHBhcmVudCA9IERvbS5saXN0X29mX25vZGVMaXN0IHBhcmVudCMjLmNoaWxkTm9kZXNcblxubGV0IHJlbW92ZUNoaWxkaSBwYXJlbnQgaSA9XG4gIG1hdGNoIExpc3QubnRoX29wdCAoY2hpbGRyZW4gcGFyZW50KSBpIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKVxuICB8IFNvbWUgY2hpbGQgLT5cbiAgICAgIHJlbW92ZUNoaWxkIHBhcmVudCBjaGlsZFxuXG5sZXQgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50ID0gTGlzdC5pdGVyIChyZW1vdmVDaGlsZCBwYXJlbnQpIChjaGlsZHJlbiBwYXJlbnQpXG5cbmxldCByZXBsYWNlQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID1cbiAgcmVtb3ZlQ2hpbGRyZW4gcGFyZW50IDtcbiAgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuXG5cbmxldCBieV9pZCBzID0gRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWQgc1xuXG5sZXQgYWRkTGlzdGVuZXIgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgZWx0IGV2IGYgPVxuICBsZXQgY2FwdHVyZSA9IE9wdGlvbi5tYXAgYm9vbCBjYXB0dXJlIGluXG4gIGxldCBvbmNlID0gT3B0aW9uLm1hcCBib29sIG9uY2UgaW5cbiAgbGV0IHBhc3NpdmUgPSBPcHRpb24ubWFwIGJvb2wgcGFzc2l2ZSBpblxuICBpZ25vcmUgQEBcbiAgRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgKERvbS5FdmVudC5tYWtlIGV2KVxuICAgIChEb20uaGFuZGxlciAoZnVuIGUgLT4gYm9vbCAoZiBlKSkpXG5cbm1vZHVsZSBFbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oY2xhc3NlcyA9IFtdKSA/KHN0eWxlcyA9IFtdKSA/KGxpc3RlbiA9IFtdKSA/KGF0dHIgPSBbXSkgP3RleHQgZlxuICAgICAgY2hpbGRyZW4gPVxuICAgIGxldCBlbHQgPSBmIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgTGlzdC5pdGVyIChmdW4gKGV2LCBmKSAtPiBhZGRMaXN0ZW5lciBlbHQgZXYgZikgbGlzdGVuIDtcbiAgICBhZGRDbGFzc2VzIGVsdCBjbGFzc2VzIDtcbiAgICBzZXRDU1MgZWx0IHN0eWxlcyA7XG4gICAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IHNldEF0dHJpYnV0ZSBlbHQgayB2KSBhdHRyIDtcbiAgICBzZXRUZXh0IGVsdCB0ZXh0IDtcbiAgICBhcHBlbmRDaGlsZHJlbiBlbHQgY2hpbGRyZW4gO1xuICAgIGVsdFxuXG4gIGxldCBidXR0b24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUJ1dHRvbiBjaGlsZHJlblxuXG4gIGxldCBkaXYgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZURpdiBjaGlsZHJlblxuXG4gIGxldCBhID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVBIGNoaWxkcmVuXG5cbiAgbGV0IHNwYW4gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNwYW4gY2hpbGRyZW5cblxuICBsZXQgZm9ybSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRm9ybSBjaGlsZHJlblxuXG4gIGxldCBvcHRpb24gP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZU9wdGlvbiBjaGlsZHJlblxuXG4gIGxldCBzZWxlY3QgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNlbGVjdCBjaGlsZHJlblxuXG4gIGxldCBpbnB1dCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgKCkgPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlSW5wdXQgW11cblxuICBsZXQgaWZyYW1lID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJZnJhbWUgY2hpbGRyZW5cblxuICBsZXQgbGFiZWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUxhYmVsIGNoaWxkcmVuXG5cbiAgbGV0IHVsID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVVbCBjaGlsZHJlblxuXG4gIGxldCBsaSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGkgY2hpbGRyZW5cblxuICBsZXQgaW1nID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbWcgY2hpbGRyZW5cblxuICBsZXQgc2NyaXB0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVTY3JpcHQgY2hpbGRyZW5cblxuICBsZXQgdGFibGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRhYmxlIGNoaWxkcmVuXG5cbiAgbGV0IHRyID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUciBjaGlsZHJlblxuXG4gIGxldCB0aCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGggY2hpbGRyZW5cblxuICBsZXQgdGQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRkIGNoaWxkcmVuXG5lbmRcblxubGV0IGVuY2Fwc2UgcyA9IFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiXG5cbmxldCBzdHJpbmdzX3RvX2FycmF5IGwgPSBcIltcIiBeIFN0cmluZy5jb25jYXQgXCIsXCIgbCBeIFwiXVwiXG5cbmxldCBzdHJpbmdzX3RvX29iamVjdCBsID1cbiAgbGV0IHMgPVxuICAgIFwie1wiXG4gICAgXiBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBlbmNhcHNlIGsgXiBcIjpcIiBeIHYpIGwpXG4gICAgXiBcIn1cIlxuICBpblxuICB0cnkgX0pTT04jI3BhcnNlIChzdHJpbmcgcylcbiAgd2l0aCBfIC0+XG4gICAgbG9nX3N0ciAoXCJjYW5ub3QgcGFyc2UganNvbiBcIiBeIHMpIDtcbiAgICBVbnNhZmUub2JqIFt8fF1cbiIsIm9wZW4gRXpqc19taW5cblxubW9kdWxlIFR5cGVzID0gRXpqc19pZGJfdHlwZXNcbm9wZW4gVHlwZXNcblxudHlwZSBtb2RlID0gUkVBRE9OTFkgfCBSRUFEV1JJVEUgfCBWRVJTSU9OQ0hBTkdFXG50eXBlIGRpcmVjdGlvbiA9IE5FWFQgfCBQUkVWIHwgTkVYVFVOSVFVRSB8IFBSRVZVTklRVUVcblxudHlwZSBkYl9vcHRpb25zID0geyBrZXlfcGF0aCA6IHN0cmluZyBvcHRpb247IGF1dG9faW5jcmVtZW50IDogYm9vbCBvcHRpb24gfVxuXG50eXBlIGRiX3VwZ3JhZGUgPSB7IG9sZF92ZXJzaW9uIDogaW50OyBuZXdfdmVyc2lvbiA6IGludCB9XG5cbnR5cGUgaW5kZXhfb3B0aW9ucyA9IHsgdW5pcXVlIDogYm9vbCBvcHRpb247IG11bHRpX2VudHJ5IDogYm9vbCBvcHRpb247IGxvY2FsZSA6IGJvb2wgb3B0aW9uIH1cblxubW9kdWxlIHR5cGUgVHJfc2lnID0gc2lnXG4gIHR5cGUgdFxuICB0eXBlIGpzXG4gIHZhbCB0b19qcyA6IHQgLT4ganNcbiAgdmFsIG9mX2pzIDoganMgLT4gdFxuZW5kXG5cbmxldCBzdHJfb2ZfbW9kZSA9IGZ1bmN0aW9uXG4gIHwgUkVBRE9OTFkgLT4gc3RyaW5nIFwicmVhZG9ubHlcIlxuICB8IFJFQURXUklURSAtPiBzdHJpbmcgXCJyZWFkd3JpdGVcIlxuICB8IFZFUlNJT05DSEFOR0UgLT4gc3RyaW5nIFwidmVyc2lvbmNoYW5nZVwiXG5cbmxldCBzdHJfb2ZfZGlyZWN0aW9uID0gZnVuY3Rpb25cbiAgfCBORVhUIC0+IHN0cmluZyBcIm5leHRcIlxuICB8IFBSRVYgLT4gc3RyaW5nIFwicHJldlwiXG4gIHwgTkVYVFVOSVFVRSAtPiBzdHJpbmcgXCJuZXh0dW5pcXVlXCJcbiAgfCBQUkVWVU5JUVVFIC0+IHN0cmluZyBcInByZXZ1bmlxdWVcIlxuXG5sZXQgaURCS2V5UmFuZ2UgOiBVbnNhZmUuYW55IGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiXG5sZXQgaW5kZXhlZERCIDoganNfc3RyaW5nIHQgaURCRmFjdG9yeSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwid2luZG93LmluZGV4ZWREQlwiXG5cbmxldCByZXN1bHQgciA9IHIjIy5yZXN1bHRcblxubGV0IHdyYXAgP2Vycm9yID9jYWxsYmFjayByID1cbiAgdHJ5XG4gICAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgICByIyMub25zdWNjZXNzIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgKHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgd3JhcGYgP2Vycm9yID9jYWxsYmFjayBnIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAoZyBAQCByZXN1bHQgcikpKSBjYWxsYmFjaztcbiAgICByIyMub25lcnJvciA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIHIpKSBlcnJvclxuICB3aXRoIGV4biAtPlxuICAgIG1hdGNoIGVycm9yIHdpdGggTm9uZSAtPiByYWlzZSBleG4gfCBTb21lIGYgLT4gY2F0Y2hfZXhuIChmdW4gZSAtPiBmIChVbnNhZmUuY29lcmNlIGUpKSBleG5cblxubGV0IGRiX3VwZ3JhZGVfZXZlbnQgKGUgOiBpREJWZXJzaW9uQ2hhbmdlRXZlbnQgdCkgPSB7XG4gIG9sZF92ZXJzaW9uID0gZSMjLm9sZFZlcnNpb247XG4gIG5ld192ZXJzaW9uID0gZSMjLm5ld1ZlcnNpb247XG59XG5cbmxldCBvcGVuREIgP3VwZ3JhZGUgP2Vycm9yID92ZXJzaW9uIG5hbWUgY2FsbGJhY2sgPVxuICBsZXQgaW5kZXhlZERCIDogXyBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCIgaW5cbiAgbGV0IHIgPSBsYXp5IChpbmRleGVkREIjI19vcGVuIChzdHJpbmcgbmFtZSkgKEFPcHQub3B0aW9uIHZlcnNpb24pKSBpblxuICB3cmFwID9lcnJvciB+Y2FsbGJhY2sgcjtcbiAgbGV0IHIgPSBMYXp5LmZvcmNlIHIgaW5cbiAgciMjLm9udXBncmFkZW5lZWRlZCA6PVxuICAgIEFPcHQuYW9wdCAoZnVuIHUgLT4gd3JhcF9jYWxsYmFjayAoZnVuIGUgLT5cbiAgICAgICAgbGV0IHYgPSBkYl91cGdyYWRlX2V2ZW50IGUgaW5cbiAgICAgICAgbGV0IGRiID0gcmVzdWx0IHIgaW5cbiAgICAgICAgdSBkYiB2KSkgdXBncmFkZVxuXG5sZXQgdHJhbnNhY3Rpb24gciA6IGlEQlRyYW5zYWN0aW9uIHQgPSByIyMudHJhbnNhY3Rpb25cblxubGV0IGNyZWF0ZV9kYl9vcHRpb25zIHtrZXlfcGF0aDsgYXV0b19pbmNyZW1lbnR9IDogY3JlYXRlX2RiX29wdGlvbnMgdCA9IG9iamVjdCVqc1xuICB2YWwga2V5UGF0aCA9IEFPcHQuYW9wdCBzdHJpbmcga2V5X3BhdGhcbiAgdmFsIGF1dG9JbmNyZW1lbnQgPSBBT3B0LmFvcHQgYm9vbCBhdXRvX2luY3JlbWVudFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcmUgP29wdGlvbnMgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA9XG4gIFVuc2FmZS5jb2VyY2UgQEBcbiAgZGIjI2NyZWF0ZU9iamVjdFN0b3JlIChzdHJpbmcgbmFtZSkgKEFPcHQuYW9wdCBjcmVhdGVfZGJfb3B0aW9ucyBvcHRpb25zKVxuXG5sZXQgZ2V0X3N0b3JlID9tb2RlIChkYiA6IGlEQkRhdGFiYXNlIHQpIG5hbWUgOiAoXywgXykgaURCT2JqZWN0U3RvcmUgdCA9XG4gIGxldCB0ciA9IGRiIyN0cmFuc2FjdGlvbiAoYXJyYXkgW3wgc3RyaW5nIG5hbWUgfF0pIChBT3B0LmFvcHQgc3RyX29mX21vZGUgbW9kZSkgaW5cbiAgVW5zYWZlLmNvZXJjZSBAQCB0ciMjb2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKVxuXG5tb2R1bGUgU3RvcmUoSyA6IFRyX3NpZykoRCA6IFRyX3NpZykgPSBzdHJ1Y3RcblxuICB0eXBlIHN0b3JlID0gKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHRcbiAgdHlwZSBrZXlzID0gSyBvZiBLLnQgfCBLUiBvZiBLLmpzIGlEQktleVJhbmdlIHRcblxuICBsZXQgY3JlYXRlID9vcHRpb25zIGRiIG5hbWUgOiBzdG9yZSA9XG4gICAgY3JlYXRlX3N0b3JlID9vcHRpb25zIGRiIG5hbWVcblxuICBsZXQgc3RvcmUgP21vZGUgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBnZXRfc3RvcmUgP21vZGUgZGIgbmFtZVxuXG4gIGxldCBhZGQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgSy5vZl9qcyBAQCBsYXp5IChzdCMjYWRkIChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCBwdXQgP2NhbGxiYWNrID9lcnJvciA/a2V5IChzdCA6IHN0b3JlKSAoeCA6IEQudCkgPVxuICAgIHdyYXAgP2NhbGxiYWNrID9lcnJvciBAQCBsYXp5IChzdCMjcHV0IChELnRvX2pzIHgpIChBT3B0LmFvcHQgSy50b19qcyBrZXkpKVxuXG4gIGxldCByYW5nZSA/b2xvd2VyID9vdXBwZXIgP2xvd2VyID91cHBlciAoKSA9XG4gICAgbGV0IGlEQktleVJhbmdlIDogSy5qcyBpREJLZXlSYW5nZSB0ID0gVW5zYWZlLnZhcmlhYmxlIFwiSURCS2V5UmFuZ2VcIiBpblxuICAgIG1hdGNoIGxvd2VyLCB1cHBlciB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBsb3dlciwgTm9uZSAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyNsb3dlckJvdW5kIChLLnRvX2pzIGxvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSlcbiAgICB8IE5vbmUsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjdXBwZXJCb3VuZCAoSy50b19qcyB1cHBlcikgKEFPcHQuYW9wdCBib29sIG91cHBlcikpXG4gICAgfCBTb21lIGxvd2VyLCBTb21lIHVwcGVyIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2JvdW5kXG4gICAgICAgICAgICAoSy50b19qcyBsb3dlcikgKEsudG9fanMgdXBwZXIpXG4gICAgICAgICAgICAoQU9wdC5hb3B0IGJvb2wgb2xvd2VyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcblxuICBsZXQgY291bnQgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpIChjYWxsYmFjayA6IGludCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCBBT3B0LnVuZGVmaW5lZClcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudCAoQU9wdC5kZWYgKEsudG9fanMgaykpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNjb3VudF9yYW5nZSAoQU9wdC5kZWYgcikpXG5cbiAgbGV0IGdldCA/ZXJyb3IgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChELm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGwgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBELnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbCBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGxfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGdldF9rZXkgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgb3B0aW9uIC0+IHVuaXQpIGsgPVxuICAgIGxldCBvZl9qcyBqcyA9IG1hdGNoIEFPcHQudG9fb3B0aW9uIGpzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUganMgLT4gU29tZSAoSy5vZl9qcyBqcykgaW5cbiAgICBtYXRjaCBrIHdpdGhcbiAgICB8IEsga2V5IC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldEtleSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5X3JhbmdlIHJhbmdlKVxuXG4gIGxldCBnZXRfYWxsX2tleXMgP2Vycm9yID9rZXkgP2NvdW50IChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSAoY2FsbGJhY2sgOiBLLnQgbGlzdCAtPiB1bml0KSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgQU9wdC51bmRlZmluZWQgKEFPcHQub3B0aW9uIGNvdW50KSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXMgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgSy5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbEtleXNfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG5cbiAgbGV0IGRlbGV0ZSA/Y2FsbGJhY2sgP2Vycm9yIChzdCA6IChLLmpzLCBfKSBpREJPYmplY3RTdG9yZSB0KSA9IGZ1bmN0aW9uXG4gICAgfCBLIGtleSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZSAoSy50b19qcyBrZXkpKVxuICAgIHwgS1IgcmFuZ2UgLT4gd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIEBAIGxhenkgKHN0IyNkZWxldGVfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGl0ZXIgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiB1bml0KSA9XG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGYgayAoRC5vZl9qcyBjIyMudmFsdWUpO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkID9lcnJvciA/a2V5ID9kaXJlY3Rpb24gKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpXG4gICAgICAoZiA6IEsudCAtPiBELnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgKEQub2ZfanMgYyMjLnZhbHVlKSAhYWNjO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5DdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBpdGVyX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrO1xuICAgICAgICAgIGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkXG4gICAgICAgIHwgTm9uZSAtPiBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZCBpblxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgQU9wdC51bmRlZmluZWQgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3IgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEtSIHIpIC0+IHdyYXAgfmNhbGxiYWNrID9lcnJvciBAQFxuICAgICAgbGF6eSAoc3QjI29wZW5LZXlDdXJzb3JfcmFuZ2UgKEFPcHQuZGVmIHIpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuXG4gIGxldCBmb2xkX2tleXMgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+ICdhIC0+ICdhKSAoc3RhcnQgOiAnYSkgKGNhbGxiYWNrIDogJ2EgLT4gdW5pdCkgPVxuICAgIGxldCBhY2MgPSByZWYgc3RhcnQgaW5cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjYWxsYmFjayAhYWNjXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBhY2MgOj0gZiBrICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGNsZWFyID9lcnJvciA/Y2FsbGJhY2sgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpID1cbiAgICB3cmFwZiA/Y2FsbGJhY2sgP2Vycm9yIChmdW4gXyAtPiAoKSkgQEAgbGF6eSBzdCMjY2xlYXJcblxuICBsZXQgY3JlYXRlX2luZGV4X29wdGlvbnMge3VuaXF1ZTsgbXVsdGlfZW50cnk7IGxvY2FsZX0gOiBjcmVhdGVfaW5kZXhfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gICAgdmFsIHVuaXF1ZSA9IEFPcHQuYW9wdCBib29sIHVuaXF1ZVxuICAgIHZhbCBtdWx0aUVudHJ5ID0gQU9wdC5hb3B0IGJvb2wgbXVsdGlfZW50cnlcbiAgICB2YWwgbG9jYWxlID0gQU9wdC5hb3B0IGJvb2wgbG9jYWxlXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfaW5kZXggP29wdGlvbnMgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIG5hbWUga2V5X3BhdGggPVxuICAgIGxldCBvcHRpb25zID0gQU9wdC5hb3B0IGNyZWF0ZV9pbmRleF9vcHRpb25zIG9wdGlvbnMgaW5cbiAgICBzdCMjY3JlYXRlSW5kZXggKHN0cmluZyBuYW1lKSAoc3RyaW5nIGtleV9wYXRoKSBvcHRpb25zXG5cbiAgbGV0IGRlbGV0ZV9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgaWdub3JlIEBAIHN0IyNkZWxldGVJbmRleCAoc3RyaW5nIG5hbWUpXG5cbiAgbGV0IGdldF9pbmRleCAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSA9XG4gICAgc3QjI2luZGV4IChzdHJpbmcgbmFtZSlcblxuZW5kXG5cbm1vZHVsZSBOb1RyKFMgOiBzaWcgdHlwZSB0IGVuZCkgOiBUcl9zaWcgd2l0aCB0eXBlIHQgPSBTLnQgYW5kIHR5cGUganMgPSBTLnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUy50XG4gIHR5cGUganMgPSBTLnRcbiAgbGV0IHRvX2pzIHggPSB4XG4gIGxldCBvZl9qcyB4ID0geFxuZW5kXG5cbm1vZHVsZSBJbnRUciA6IChUcl9zaWcgd2l0aCB0eXBlIGpzID0gaW50IGFuZCB0eXBlIHQgPSBpbnQpID0gTm9UcihzdHJ1Y3QgdHlwZSB0ID0gaW50IGVuZClcblxubW9kdWxlIFN0cmluZ1RyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGpzX3N0cmluZyB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGpzX3N0cmluZyB0XG4gIHR5cGUgdCA9IHN0cmluZ1xuICBsZXQgdG9fanMgeCA9IHN0cmluZyB4XG4gIGxldCBvZl9qcyB4ID0gdG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgTnVtYmVyVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gbnVtYmVyIHQgYW5kIHR5cGUgdCA9IGZsb2F0ID0gc3RydWN0XG4gIHR5cGUganMgPSBudW1iZXIgdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdG9fanMgeCA9IG51bWJlcl9vZl9mbG9hdCB4XG4gIGxldCBvZl9qcyB4ID0gZmxvYXRfb2ZfbnVtYmVyIHhcbmVuZFxuXG5tb2R1bGUgRGF0ZVRyIDogVHJfc2lnIHdpdGggdHlwZSBqcyA9IGRhdGUgdCBhbmQgdHlwZSB0ID0gc3RyaW5nID0gc3RydWN0XG4gIHR5cGUganMgPSBkYXRlIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gbmV3JWpzIGRhdGVfZnJvbVRpbWVWYWx1ZSAoZGF0ZSMjcGFyc2UgKHN0cmluZyB4KSlcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeCMjdG9Mb2NhbGVTdHJpbmdcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBTdGRsaWIuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5cbmxldCBjcmVhdGUgPyhiaW5hcnkgPSB0cnVlKSBmaWxlID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gIGxldCBmbGFncyA9IGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IDo6IGZsYWdzIGVsc2UgZmxhZ3MgaW5cbiAgU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcbjs7XG5cbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLmlucHV0IHQgYnVmIHBvcyBsZW5cbmxldCByZWFsbHlfaW5wdXQgdCB+YnVmIH5wb3MgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW4pXG5sZXQgcmVhbGx5X2lucHV0X2V4biB0IH5idWYgfnBvcyB+bGVuID0gU3RkbGliLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9ieXRlIHQpXG5sZXQgaW5wdXRfY2hhciB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9jaGFyIHQpXG5sZXQgaW5wdXRfYmluYXJ5X2ludCB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X3ZhbHVlIHQpXG5sZXQgaW5wdXRfYnVmZmVyIHQgYnVmIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWYgdCBsZW4pXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgU3RkbGliLkJ1ZmZlci5hZGRfY2hhbm5lbCBidWZmZXIgdCBjaHVua19zaXplO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgdHJ5IGxvb3AgKCkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IEJ1ZmZlci5jb250ZW50cyBidWZmZXJcbjs7XG5cbmxldCB0cmltIH5maXhfd2luX2VvbCBsaW5lID1cbiAgaWYgZml4X3dpbl9lb2xcbiAgdGhlbiAoXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggbGluZSBpblxuICAgIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAoU3RyaW5nLmdldCBsaW5lIChsZW4gLSAxKSkgJ1xccidcbiAgICB0aGVuIFN0cmluZy5zdWIgbGluZSB+cG9zOjAgfmxlbjoobGVuIC0gMSlcbiAgICBlbHNlIGxpbmUpXG4gIGVsc2UgbGluZVxuOztcblxubGV0IGlucHV0X2xpbmUgPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBtYXRjaCBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2xpbmUgdCkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgbGluZSAtPiBTb21lICh0cmltIH5maXhfd2luX2VvbCBsaW5lKVxuOztcblxubGV0IGlucHV0X2xpbmVfZXhuID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbGV0IGxpbmUgPSBTdGRsaWIuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gU3RkbGliLm91dF9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX291dFxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IFN0ZGxpYi5MYXJnZUZpbGUub3V0X2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuOztcblxubGV0IHNldF9iaW5hcnlfbW9kZSA9IFN0ZGxpYi5zZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgZmx1c2ggPSBTdGRsaWIuZmx1c2hcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub19lcnIgPSBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyXG5sZXQgb3V0cHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZyB0IGJ1ZiBwb3MgbGVuXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfYmluYXJ5X2ludCA9IFN0ZGxpYi5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBTdGRsaWIuQnVmZmVyLm91dHB1dF9idWZmZXJcbmxldCBvdXRwdXRfdmFsdWUgPSBTdGRsaWIub3V0cHV0X3ZhbHVlXG5sZXQgbmV3bGluZSB0ID0gb3V0cHV0X3N0cmluZyB0IFwiXFxuXCJcblxubGV0IG91dHB1dF9saW5lcyB0IGxpbmVzID1cbiAgTGlzdC5pdGVyIGxpbmVzIH5mOihmdW4gbGluZSAtPlxuICAgIG91dHB1dF9zdHJpbmcgdCBsaW5lO1xuICAgIG5ld2xpbmUgdClcbjs7XG5cbmxldCBwcmludGYgPSBTdGRsaWIuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBTdGRsaWIuUHJpbnRmLmVwcmludGZcbmxldCBmcHJpbnRmID0gU3RkbGliLlByaW50Zi5mcHJpbnRmXG5sZXQga2ZwcmludGYgPSBTdGRsaWIuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gU3RkbGliLnByaW50X3N0cmluZ1xubGV0IHByaW50X2VuZGxpbmUgPSBTdGRsaWIucHJpbnRfZW5kbGluZVxubGV0IHByZXJyX2VuZGxpbmUgPSBTdGRsaWIucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm1vZHVsZSBDb252ID0gU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxubW9kdWxlIFNleHBfZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwbGliMC5TZXhwYWJsZVxuIiwibW9kdWxlIExpc3QgPSBMaXN0XG5cbm1vZHVsZSBFbnVtZXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBhbGwgOiB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdhIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAoJ2EsICdiKSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICdjIGxpc3QgLT4gKCdhLCAnYiwgJ2MpIHQgbGlzdFxuICBlbmRcbmVuZFxuIiwib3BlbiBCYXNlXG5cbnR5cGUgJ2EgdGVzdF9wcmVkXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ICgnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9lcVxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X3Jlc3VsdFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiA/ZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpXG4gIC0+IGV4cGVjdDonYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFIG9mIHN0cmluZyAqIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnIGJvZHkgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgbWF0Y2ggbWVzc2FnZSB3aXRoXG4gICAgfCBOb25lIC0+IHRhZ1xuICAgIHwgU29tZSBzIC0+IHMgXiBcIjogXCIgXiB0YWdcbiAgaW5cbiAgbGV0IHNleHAgPVxuICAgIFNleHAuTGlzdCAoXG4gICAgICBib2R5XG4gICAgICBAIFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiTG9jXCI7IFNleHAuQXRvbSBwb3MgXSBdXG4gICAgICBAIGJlZ2luIG1hdGNoIGhlcmUgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgXyAtPiBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIlN0YWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgWyVzZXhwX29mOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IGxpc3RdIGhlcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gXVxuICAgICAgZW5kXG4gICAgKVxuICBpblxuICAoKiBIZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgd2UgcmV0dXJuIGV4Y2VwdGlvbnMsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHJhaXNpbmcsIGFuZFxuICAgICBpbnN0ZWFkIHJhaXNlIGF0IHRoZSBsYXRlc3QgbW9tZW50IHBvc3NpYmxlLCBzbyBiYWNrdHJhY2UgZG9uJ3QgaW5jbHVkZSBub2lzZSBmcm9tXG4gICAgIHRoZXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN0cnVjdCBleGNlcHRpb25zLiAqKVxuICBFIChtZXNzYWdlLCBzZXhwKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwicHJlZGljYXRlIGZhaWxlZFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcIlZhbHVlXCI7IHNleHBpZmllciB0XVxuICBdXG5cbmxldCB0ZXN0X3ByZWQgfnBvcyB+c2V4cGlmaWVyIH5oZXJlID9tZXNzYWdlIHByZWRpY2F0ZSB0ID1cbiAgaWYgbm90IChwcmVkaWNhdGUgdCkgdGhlblxuICAgIHJhaXNlIChleG5fdGVzdF9wcmVkIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnNleHBpZmllciB0KVxuXG5sZXQgcl9kaWZmIDogKGZyb21fOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHVuaXQpIG9wdGlvbiByZWYgPSByZWYgICBOb25lXG5sZXQgc2V0X2RpZmZfZnVuY3Rpb24gZiA9IHJfZGlmZiA6PSBmXG5cbmxldCBbQGNvbGRdIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdCA9XG4gIGxldCBnb3QgPSBzZXhwaWZpZXIgZ290IGluXG4gIGxldCBleHBlY3QgPSBzZXhwaWZpZXIgZXhwZWN0IGluXG4gIGJlZ2luIG1hdGNoICFyX2RpZmYgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRpZmYgLT5cbiAgICBsZXQgZnJvbV8gPSBTZXhwLnRvX3N0cmluZ19odW0gZXhwZWN0IGluXG4gICAgbGV0IHRvXyAgID0gU2V4cC50b19zdHJpbmdfaHVtIGdvdCBpblxuICAgIGRpZmYgfmZyb21fIH50b19cbiAgZW5kO1xuICBgRmFpbCAoZXhwZWN0LCBnb3QpXG5cbmxldCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgcGFzcyA9XG4gICAgbWF0Y2ggZXF1YWwgd2l0aFxuICAgIHwgTm9uZSAtPiBjb21wYXJhdG9yIGdvdCBleHBlY3QgPSAwXG4gICAgfCBTb21lIGYgLT4gZiBnb3QgZXhwZWN0XG4gIGluXG4gIGlmIHBhc3NcbiAgdGhlbiBgUGFzc1xuICBlbHNlIHRlc3RfcmVzdWx0X29yX2VxX2ZhaWxlZCB+c2V4cGlmaWVyIH5leHBlY3QgfmdvdFxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJjb21wYXJpc29uIGZhaWxlZFwiIFtcbiAgICB0MTtcbiAgICBTZXhwLkF0b20gXCJ2c1wiO1xuICAgIHQyO1xuICBdXG5cbmxldCB0ZXN0X2VxIH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0OnQxIH5nb3Q6dDIgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKHQxLCB0MikgLT4gcmFpc2UgKGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MilcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290ID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiZ290IHVuZXhwZWN0ZWQgcmVzdWx0XCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZXhwZWN0ZWRcIjsgZXhwZWN0XTtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImdvdFwiOyBnb3RdO1xuICBdXG5cbmxldFtAd2FybmluZyBcIi0xNlwiXSB0ZXN0X3Jlc3VsdCB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIH5leHBlY3QgfmdvdCA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAoZXhwZWN0LCBnb3QpIC0+IHJhaXNlIChleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QpXG4iLCJsZXQgdW5pcXVlX2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbigqIFVzZWQgdG8gdHJhY2sgdGhlIGN1cnJlbnQgbGlibmFtZSBpbiBzdWNoIGEgd2F5IHRoYXQgZm9yIGZ1bmN0b3IgYXBwbGljYXRpb25zLCBpdCBpc1xuICAgdGhlIGNhbGxpbmcgbGlicmFyaWVzIG5hbWUgdGhhdCBnZXRzIHJlZ2lzdGVyZWQuICopXG5tb2R1bGUgQ3VycmVudF9saWJuYW1lID0gc3RydWN0XG4gIGxldCBudWxsID0gXCI8dW5rbm93bj5cIlxuICBsZXQgbGlibmFtZV9yZWYgPSByZWYgbnVsbFxuICBsZXQgc2V0IHN0ciA9IGxpYm5hbWVfcmVmIDo9IHN0clxuICBsZXQgdW5zZXQgKCkgPSBsaWJuYW1lX3JlZiA6PSBudWxsXG4gIGxldCBnZXQgKCkgPSAhbGlibmFtZV9yZWZcbmVuZFxuXG5tb2R1bGUgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sgPSBzdHJ1Y3RcbiAgbGV0IHQgPSByZWYgW11cbiAgbGV0IHB1c2ggcyA9IHQgOj0gcyA6OiAhdFxuICBsZXQgcG9wX2V4biAoKSA9IHQgOj0gTGlzdC50bCAhdFxuXG4gIGxldCB0b19uYW1lICgpID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBtcyAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLlwiIChMaXN0LnJldiBtcykpXG4gIDs7XG5lbmRcblxuKCogVGhpcyBpcyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZSBvZiB0aGlzIG1vZHVsZS4gQW4gW0VudHJ5LnRdIHJlcHJlc2VudHMgYSBiZW5jaG1hcmtcbiAgIGFsb25nIHdpdGggc29tZSBtZXRhZGF0YSBhYm91dCBpcyBwb3NpdGlvbiwgYXJndW1lbnRzIGV0Yy4gKilcbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICB0eXBlICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgPVxuICAgIHsgYXJnX25hbWUgOiBzdHJpbmdcbiAgICA7IHBhcmFtcyA6IChzdHJpbmcgKiAncGFyYW0pIGxpc3RcbiAgICA7IHRodW5rIDogJ3BhcmFtIC0+IHVuaXQgLT4gJ2FcbiAgICB9XG5cbiAgdHlwZSB0ZXN0X3NwZWMgPVxuICAgIHwgUmVndWxhcl90aHVuayA6IChbIGBpbml0IF0gLT4gdW5pdCAtPiAnYSkgLT4gdGVzdF9zcGVjXG4gICAgfCBQYXJhbWV0ZXJpc2VkX3RodW5rIDogKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyAtPiB0ZXN0X3NwZWNcblxuICB0eXBlIHQgPVxuICAgIHsgdW5pcXVlX2lkIDogaW50XG4gICAgOyBjb2RlIDogc3RyaW5nXG4gICAgOyB0eXBlX2NvbnZfcGF0aCA6IHN0cmluZ1xuICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgICA7IGxpbmUgOiBpbnRcbiAgICA7IHN0YXJ0cG9zIDogaW50XG4gICAgOyBlbmRwb3MgOiBpbnRcbiAgICA7IHRlc3Rfc3BlYyA6IHRlc3Rfc3BlY1xuICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZSB0MS51bmlxdWVfaWQgdDIudW5pcXVlX2lkXG5cbiAgKCogRXh0cmFjdHMgbW9kdWxlIG5hbWUgZnJvbSBbXCJmaWxlbmFtZS5tbC5Nb2R1bGVcIl0sIHdoaWNoIGlzIHRoZSBmb3JtYXQgb2YgW2V4dF9uYW1lXVxuICAgICBhcyBzZXQgYnkgW3R5cGVjb252XS4gKilcbiAgbGV0IGdldF9tb2R1bGVfbmFtZV9vcHQgdCA9XG4gICAgbGV0IHN0ciA9IHQudHlwZV9jb252X3BhdGggaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpICsgNCA8PSBsZW5cbiAgICAgIHRoZW5cbiAgICAgICAgaWYgU3RyaW5nLnN1YiBzdHIgaSA0ID0gXCIubWwuXCJcbiAgICAgICAgdGhlbiBTb21lIChTdHJpbmcuc3ViIHN0ciAoaSArIDQpIChsZW4gLSBpIC0gNCkpXG4gICAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCB3aXRoX3Rlc3Rfc3BlYyB0IHRlc3Rfc3BlYyA9IHsgdCB3aXRoIHRlc3Rfc3BlYyB9XG5lbmRcblxuKCogSW5zcGVjdCBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIGRlY2lkZSBpZiBiZW5jaG1hcmtzIGFyZSBiZWluZyBydW4uIFRoaXMgaXNcbiAgIGNhbGxlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIFtwYV9iZW5jaF0gc3ludGF4IHRvIGRlY2lkZSBpZiB0aGUgZ2xvYmFsIGhhc2h0YWJsZVxuICAgc2hvdWxkIGJlIHBvcHVsYXRlZC4gKilcbmxldCBhZGRfZW52aXJvbm1lbnRfdmFyID1cbiAgbGV0IHYgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQkVOQ0hNQVJLU19SVU5ORVJcIiB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gXCJcIlxuICBpblxuICB2ID0gXCJUUlVFXCJcbjs7XG5cbigqIFRoaXMgaGFzaHRhYmxlIGNvbnRhaW5zIGFsbCB0aGUgYmVuY2htYXJrcyBmcm9tIGFsbCB0aGUgb2YgbGlicmFyaWVzIHRoYXQgaGF2ZSBiZWVuXG4gICBsb2FkZWQuIEF0IHRoZSB0aW1lIHRoZSBiZW5jaG1hcmtzIGFyZSByZWdpc3RlcmluZyB0aGVtc2VsdmVzIHdpdGggW3BweF9iZW5jaF9saWJdIHdlXG4gICBkb24ndCB5ZXQga25vdyB3aGljaCBsaWJyYXJpZXMgd2lsbCBuZWVkIHRvIGJlIHJ1bi4gICopXG5sZXQgbGlic190b19lbnRyaWVzIDogKHN0cmluZywgRW50cnkudCBsaXN0KSBIYXNodGJsLnQgPSBIYXNodGJsLmNyZWF0ZSAxMFxuXG5sZXQgbG9va3VwX3Jldl9saWIgfmxpYm5hbWUgPVxuICB0cnkgSGFzaHRibC5maW5kIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gW11cbjs7XG5cbmxldCBsb29rdXBfbGliIH5saWJuYW1lID0gTGlzdC5yZXYgKGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuXG5sZXQgZm9yY2VfZHJvcCA9XG4gICgqIFVzZWZ1bCBmb3IganNfb2Zfb2NhbWwgdG8gcGVyZm9ybSBkZWFkY29kZSBlbGltaW5hdGlvbi5cbiAgICAgc2VlIHBweC9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCBbQWN0aW9uLmdldF0gZm9yIG1vcmUgZGV0YWlscyAqKVxuICB0cnlcbiAgICBpZ25vcmUgKFN5cy5nZXRlbnYgXCJGT1JDRV9EUk9QX0JFTkNIXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxubGV0IGdldF9tb2RlICgpID0gaWYgZm9yY2VfZHJvcCB0aGVuIGBJZ25vcmUgZWxzZSBgQ29sbGVjdFxuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGVcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoXG4gICAgICAgICAgICAgICAgICAgICB+bGluZVxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zXG4gICAgICAgICAgICAgICAgICAgICB0ZXN0X3NwZWNcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgbGV0IGxpYm5hbWUgPSBDdXJyZW50X2xpYm5hbWUuZ2V0ICgpIGluXG4gICAgbGV0IGVudHJ5ID1cbiAgICAgIHsgRW50cnkuY29kZVxuICAgICAgOyB1bmlxdWVfaWQgPSB1bmlxdWVfaWQgKClcbiAgICAgIDsgdHlwZV9jb252X3BhdGhcbiAgICAgIDsgYmVuY2hfbW9kdWxlX25hbWUgPSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay50b19uYW1lICgpXG4gICAgICA7IG5hbWVcbiAgICAgIDsgZmlsZW5hbWVcbiAgICAgIDsgbGluZVxuICAgICAgOyBzdGFydHBvc1xuICAgICAgOyBlbmRwb3NcbiAgICAgIDsgdGVzdF9zcGVjXG4gICAgICB9XG4gICAgaW5cbiAgICBIYXNodGJsLmFkZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSAoZW50cnkgOjogbG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gYWRkX2JlbmNoX21vZHVsZVxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlOl9cbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aDpfXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6X1xuICAgICAgICAgICAgICAgICAgICAgfmxpbmU6X1xuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0cG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICAoKiBSdW5uaW5nIGYgcmVnaXN0ZXJzIHRoZSBiZW5jaG1hcmtzIHVzaW5nIEJFTkNIICopXG4gICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucHVzaCBuYW1lO1xuICAgICh0cnlcbiAgICAgICBmICgpO1xuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKClcbiAgICAgd2l0aFxuICAgICB8IGV4IC0+XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKTtcbiAgICAgICByYWlzZSBleClcbjs7XG4iLCJ0eXBlIHQgPSBzdHJpbmdcblxuKCogU2hhcmUgdGhlIGRpZ2VzdCBvZiB0aGUgZW1wdHkgc3RyaW5nICopXG5sZXQgZW1wdHkgPSBEaWdlc3Quc3RyaW5nIFwiXCJcbmxldCBtYWtlIHMgPVxuICBpZiBzID0gZW1wdHkgdGhlblxuICAgIGVtcHR5XG4gIGVsc2VcbiAgICBzXG5cbmxldCBjb21wYXJlID0gY29tcGFyZVxuXG5sZXQgbGVuZ3RoID0gMTZcblxubGV0IHRvX2JpbmFyeSBzID0gc1xubGV0IG9mX2JpbmFyeV9leG4gcyA9IGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzID0gbGVuZ3RoKTsgbWFrZSBzXG5sZXQgdW5zYWZlX29mX2JpbmFyeSA9IG1ha2VcblxubGV0IHRvX2hleCA9IERpZ2VzdC50b19oZXhcbmxldCBvZl9oZXhfZXhuIHMgPSBtYWtlIChEaWdlc3QuZnJvbV9oZXggcylcblxubGV0IHN0cmluZyBzID0gbWFrZSAoRGlnZXN0LnN0cmluZyBzKVxuXG5sZXQgYnl0ZXMgcyA9IG1ha2UgKERpZ2VzdC5ieXRlcyBzKVxuXG5sZXQgc3ViYnl0ZXMgYnl0ZXMgfnBvcyB+bGVuID0gbWFrZSAoRGlnZXN0LnN1YmJ5dGVzIGJ5dGVzIHBvcyBsZW4pXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMb2NhdGlvbiA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgVXVpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5sZXQgZXZhbF9mYWlsIGxvYyBmbXQgPVxuICBQcmludGYua3NwcmludGYgKGZ1biBzIC0+IGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiAhXCIle0xvY2F0aW9ufTogJXNcIiBsb2MgcykpIGZtdFxuOztcblxubGV0IGVxdWFsX29wdGlvbiBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBTb21lIF8sIE5vbmUgfCBOb25lLCBTb21lIF8gLT4gZmFsc2VcbiAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbjs7XG5cbm1vZHVsZSBTb3J0ZWRfdGFibGUgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIGNyZWF0ZSA6IExvY2F0aW9uLnQgLT4gZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdCAtPiAnYSB0XG4gIHZhbCBleHBvc2UgOiAnYSB0IC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IHsgc29ydGVkIDogKHN0cmluZyAqICdhKSBsaXN0IH0gW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwc1xuICAgIDogIGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAgIC0+IFsgYE9rIG9mIChzdHJpbmcgKiAnYSkgbGlzdCB8IGBNaXNtYXRjaCBvZiBzdHJpbmcgXVxuICAgID1cbiAgICBmdW4gfmVxIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBgT2sgKExpc3QucmV2IGFjYylcbiAgICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+XG4gICAgICAgIGlmIFN0cmluZy4obGFzdF9rZXkgPSBrZXkpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBlcSBsYXN0X3ZhbHVlIHZhbHVlIHRoZW4gbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlIHhzIGVsc2UgYE1pc21hdGNoIGtleVxuICAgICAgICBlbHNlIGxvb3AgKChrZXksIHZhbHVlKSA6OiBhY2MpIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgICBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBgT2sgW11cbiAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPiBsb29wIFsga2V5LCB2YWx1ZSBdIH5sYXN0X2tleTprZXkgfmxhc3RfdmFsdWU6dmFsdWUgeHNcbiAgOztcblxuICBsZXQgY3JlYXRlIGxvYyB+ZXEgeHMgPVxuICAgIGxldCBzb3J0ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biAoczEsIF8pIChzMiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgczEgczIpIHhzIGluXG4gICAgbWF0Y2ggbWVyZ2VfY2hlY2tfYWRqYWNlbnRfZHVwcyB+ZXEgc29ydGVkIHdpdGhcbiAgICB8IGBPayBzb3J0ZWQgLT4geyBzb3J0ZWQgfVxuICAgIHwgYE1pc21hdGNoIHMgLT5cbiAgICAgIGV2YWxfZmFpbCBsb2MgXCJEaWZmZXJlbnQgc2hhcGVzIGZvciBkdXBsaWNhdGVkIHBvbHltb3JwaGljIGNvbnN0cnVjdG9yOiBgJXNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IGV4cG9zZSB0ID0gdC5zb3J0ZWRcbiAgbGV0IG1hcCB0IH5mID0geyBzb3J0ZWQgPSBMaXN0Lm1hcCB0LnNvcnRlZCB+ZjooZnVuIChrLCB2KSAtPiBrLCBmIHYpIH1cbmVuZFxuXG5tb2R1bGUgRGlnZXN0IDogc2lnXG4gIHR5cGUgdCA9IE1kNV9saWIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCB0b19tZDUgOiB0IC0+IE1kNV9saWIudFxuICB2YWwgb2ZfbWQ1IDogTWQ1X2xpYi50IC0+IHRcbiAgdmFsIHRvX2hleCA6IHQgLT4gc3RyaW5nXG4gIHZhbCBjb25zdHJ1Y3RvciA6IHN0cmluZyAtPiB0IGxpc3QgLT4gdFxuICB2YWwgbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBwYWlyIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN0cmluZyA6IHN0cmluZyAtPiB0XG4gIHZhbCB1dWlkIDogVXVpZC50IC0+IHRcbiAgdmFsIGludCA6IGludCAtPiB0XG4gIHZhbCBvcHRpb24gOiB0IG9wdGlvbiAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZDVfbGliXG5cbiAgbGV0IHRvX21kNSB0ID0gdFxuICBsZXQgb2ZfbWQ1IHQgPSB0XG4gIGxldCBzZXhwX29mX3QgdCA9IHQgfD4gdG9faGV4IHw+IHNleHBfb2Zfc3RyaW5nXG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gc3RyaW5nX29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdXVpZCB1ID0gc3RyaW5nIChVdWlkLnRvX3N0cmluZyB1KVxuICBsZXQgaW50IHggPSBzdHJpbmcgKEludC50b19zdHJpbmcgeClcbiAgbGV0IHBhaXIgeCB5ID0gc3RyaW5nICh0b19iaW5hcnkgeCBeIHRvX2JpbmFyeSB5KVxuICBsZXQgbGlzdCBsID0gc3RyaW5nIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAoTGlzdC5tYXAgfmY6dG9fYmluYXJ5IGwpKVxuICBsZXQgY29uc3RydWN0b3IgcyBsID0gc3RyaW5nIChzIF4gdG9fYmluYXJ5IChsaXN0IGwpKVxuXG4gIGxldCBvcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBjb25zdHJ1Y3RvciBcIm5vbmVcIiBbXVxuICAgIHwgU29tZSB4IC0+IGNvbnN0cnVjdG9yIFwic29tZVwiIFsgeCBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IgPSBzdHJ1Y3RcbiAgKCogWydhIHRdIGlzIGEgbm9uLXJlY3Vyc2l2ZSB0eXBlLCB1c2VkIHRvIHJlcHJlc2VudCAxLWxheWVyIG9mIGV4cHJlc3Npb24uICBUaGVcbiAgICAgcmVjdXJzaXZlIGtub3QgaXMgdGllZCBiZWxvdyBpbiBbQ2Fub25pY2FsX2Z1bGwuRXhwLnRdLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogJ2FcbiAgICB8IEJhc2Ugb2YgVXVpZC50ICogJ2EgbGlzdFxuICAgIHwgVHVwbGUgb2YgJ2EgbGlzdFxuICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiAnYSkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogJ2EgbGlzdCkgbGlzdFxuICAgICgqIFBvbHltb3JwaGljIHZhcmlhbnRzIGFyZSBpbnNlbnNpdGl2ZSB0byB0aGUgb3JkZXIgdGhlIGNvbnN0cnVjdG9ycyBhcmUgbGlzdGVkICopXG4gICAgfCBQb2x5X3ZhcmlhbnQgb2YgJ2Egb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgKCogTGVmdC1oYW5kLXNpZGUgb2YgW0FwcGxpY2F0aW9uXSBpcyBhIHBvdGVudGlhbGx5IHJlY3Vyc2l2ZSBkZWZpbml0aW9uOiBpdFxuICAgICAgIGNhbiByZWZlciB0byBpdHNlbGYgdXNpbmcgW1JlY19hcHAgKGksIF8pXSB3aGVyZSBbaV0gaXMgdGhlIGRlcHRoIG9mIHRoaXNcbiAgICAgICBhcHBsaWNhdGlvbiBub2RlIChob3cgbWFueSBhcHBsaWNhdGlvbiBub2RlcyBhcmUgYWJvdmUgaXQpLlxuICAgICAgIEl0IGFsc28gaGFzIGl0cyBvd24gc2NvcGUgb2YgdHlwZSB2YXJpYWJsZXMgc28gaXQgY2FuIG5vdCByZWZlciB0byB0eXBlIHZhcmlhYmxlc1xuICAgICAgIG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUuXG4gICAgKilcbiAgICB8IEFwcGxpY2F0aW9uIG9mICdhICogJ2EgbGlzdFxuICAgIHwgUmVjX2FwcCBvZiBpbnQgKiAnYSBsaXN0XG4gICAgfCBWYXIgb2YgaW50XG4gIFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG5cbiAgbGV0IG1hcCB4IH5mID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEFubm90YXRlICh1LCB4KSAtPiBBbm5vdGF0ZSAodSwgZiB4KVxuICAgIHwgQmFzZSAocywgeHMpIC0+IEJhc2UgKHMsIExpc3QubWFwIH5mIHhzKVxuICAgIHwgVHVwbGUgeHMgLT4gVHVwbGUgKExpc3QubWFwIH5mIHhzKVxuICAgIHwgUmVjb3JkIGwgLT4gUmVjb3JkIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHgpIC0+IHMsIGYgeCkpXG4gICAgfCBWYXJpYW50IGwgLT4gVmFyaWFudCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4cykgLT4gcywgTGlzdC5tYXAgfmYgeHMpKVxuICAgIHwgUG9seV92YXJpYW50IHQgLT4gUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUubWFwIHQgfmY6KE9wdGlvbi5tYXAgfmYpKVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IEFwcGxpY2F0aW9uIChmIHgsIExpc3QubWFwIH5mIGwpXG4gICAgfCBSZWNfYXBwICh0LCBsKSAtPiBSZWNfYXBwICh0LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgVmFyIHYgLT4gVmFyIHZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4gXyAtPiBBdG9tIFwiLi4uXCIpIHQpXG5lbmRcblxubW9kdWxlIENyZWF0ZV9kaWdlc3QgOiBzaWdcbiAgKCogRGlnZXN0IHZhcmlvdXMgZXhwcmVzc2lvbiBmb3JtcyAqKVxuXG4gIHZhbCBkaWdlc3RfbGF5ZXIgOiBEaWdlc3QudCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnQgLT4gRGlnZXN0LnRcbmVuZCA9IHN0cnVjdFxuICBsZXQgZGlnZXN0X2xheWVyID0gZnVuY3Rpb25cbiAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuQW5ub3RhdGUgKHUsIHgpIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3IgXCJhbm5vdGF0ZVwiIFsgRGlnZXN0LnV1aWQgdTsgeCBdXG4gICAgfCBCYXNlICh1LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJiYXNlXCIgWyBEaWdlc3QudXVpZCB1OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFR1cGxlIGwgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidHVwbGVcIiBbIERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjb3JkIGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInJlY29yZFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3QgKExpc3QubWFwIGwgfmY6KGZ1biAocywgdCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgdCkpIF1cbiAgICB8IFZhcmlhbnQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwidmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIGwpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIChEaWdlc3QubGlzdCBsKSkpXG4gICAgICAgIF1cbiAgICB8IFBvbHlfdmFyaWFudCB0YWJsZSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicG9seV92YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYmxlKSB+ZjooZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgeCkgKERpZ2VzdC5vcHRpb24geSkpKVxuICAgICAgICBdXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYXBwbGljYXRpb25cIiBbIHg7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgUmVjX2FwcCAobiwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwicmVjX2FwcFwiIFsgRGlnZXN0LmludCBuOyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFZhciBuIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInZhclwiIFsgRGlnZXN0LmludCBuIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVmlzaWJpbGl0eSA9IHN0cnVjdFxuICB0eXBlIHZpc2libGUgPSBWaXNpYmxlXG4gIHR5cGUgb3BhcXVlID0gT3BhcXVlXG5cbiAgbGV0IF8gPSBWaXNpYmxlXG4gIGxldCBfID0gT3BhcXVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ2Fub25pY2FsID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0b19kaWdlc3QgOiB0IC0+IERpZ2VzdC50XG5cbiAgbW9kdWxlIEV4cDEgOiBzaWdcbiAgICB0eXBlIF8gdFxuXG4gICAgdmFsIHZhciA6IGludCAtPiBfIHRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgYXBwbHkgOiAnYSB0IC0+ICdhIHQgbGlzdCAtPiBfIHRcbiAgICB2YWwgb3BhcXVlIDogXyB0IC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIHZhbCBnZXRfcG9seV92YXJpYW50XG4gICAgICA6ICBWaXNpYmlsaXR5LnZpc2libGUgdFxuICAgICAgLT4gKFZpc2liaWxpdHkub3BhcXVlIHQgb3B0aW9uIFNvcnRlZF90YWJsZS50LCBzdHJpbmcpIFJlc3VsdC50XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgOiBzaWdcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgOiBzaWdcbiAgICB2YWwgYW5ub3RhdGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgYmFzZXR5cGUgOiBVdWlkLnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB0dXBsZSA6IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgcG9seV92YXJpYW50IDogTG9jYXRpb24udCAtPiAoc3RyaW5nICogXyBFeHAxLnQgb3B0aW9uKSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhciA6IGludCAtPiBfIEV4cDEudFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgYXBwbHkgOiAnYSBFeHAxLnQgLT4gJ2EgRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgZGVmaW5lIDogVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudCAtPiBEZWYudFxuICAgIHZhbCByZWNvcmQgOiAoc3RyaW5nICogXyBFeHAxLnQpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyaWFudCA6IChzdHJpbmcgKiBfIEV4cDEudCBsaXN0KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGNyZWF0ZSA6IF8gRXhwMS50IC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9kaWdlc3QgOiBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2Fub25pY2FsIG9mIERpZ2VzdC50XG5cbiAgbGV0IHRvX2RpZ2VzdCAoQ2Fub25pY2FsIHgpID0geFxuXG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgb3BhcXVlID0gRGlnZXN0LnRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFBvbHlfdmFyaWFudCBvZiBvcGFxdWUgb3B0aW9uIFNvcnRlZF90YWJsZS50XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgb2YgKHN0cmluZyAqIG9wYXF1ZSlcbiAgICAgIHwgT3BhcXVlIDogb3BhcXVlIC0+IFZpc2liaWxpdHkub3BhcXVlIHRcblxuICAgIGxldCB0b19kaWdlc3QgKHR5cGUgYSkgKHggOiBhIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPcGFxdWUgeCAtPiB4XG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKF8sIHgpIC0+IHhcbiAgICAgIHwgUG9seV92YXJpYW50IHggLT4gQ0QuZGlnZXN0X2xheWVyIChQb2x5X3ZhcmlhbnQgeClcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsICh0eXBlIGEpICh4IDogYSB0KSAoeSA6IGEgdCkgPVxuICAgICAgRGlnZXN0LmNvbXBhcmUgKHRvX2RpZ2VzdCB4KSAodG9fZGlnZXN0IHkpID0gMFxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHggPSBPcGFxdWUgKHRvX2RpZ2VzdCB4KVxuXG4gICAgbGV0IGNyZWF0ZSB4ID1cbiAgICAgIGxldCB4ID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IHggaW5cbiAgICAgIGxldCBkZXNjID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgeCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50IGwgLT4gUG9seV92YXJpYW50IGxcbiAgICAgIHwgQmFzZSBfIC0+IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBbm5vdGF0ZSBfIC0+XG4gICAgICAgICgqIEl0J3MgdW5zYWZlIHRvIHVzZSBkZXJpdmluZyBiaW5faW8gd2hlbiBpbmhlcml0aW5nIGZyb20gYSBwb2x5bW9ycGhpYyB2YXJpYW50XG4gICAgICAgICAgIHRoYXQgaGFzIGEgY3VzdG9tIGJpbl9pby4gIElmIHdlIGZvcmJpZCB0aGF0LCB3ZSBjYW4gaGFwcGlseSByZWplY3QgaGVyZVxuICAgICAgICAgICBhbnl0aGluZyB0aGF0J3MgYW5ub3RhdGVkLiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQXBwbGljYXRpb24gXyAtPlxuICAgICAgICAoKiBBcHBsaWNhdGlvbiBjYW4gcmVhbGx5IGJlIGEgcG9seS12YXJpYW50IHlvdSBjYW4gaW5oZXJpdCBmcm9tISAgQnV0IGl0J3MgYVxuICAgICAgICAgICByYXJlIHNpdHVhdGlvbiB0aGF0IG1vc3RseSAob25seT8pIGFyaXNlcyB3aXRoIGluaGVyaXRhbmNlIGZyb20gcmVjdXJzaXZlXG4gICAgICAgICAgIHBvbHltb3JwaWMgdmFyaWFudHMsIHdoaWNoIHdlJ3ZlIG5vdCBzZWVuIGFueXdoZXJlIHlldC4gIFNvIHdlIHJlamVjdCBpdC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFJlY19hcHAgXyAtPlxuICAgICAgICAoKiBZb3UgY2FuIG9ubHkgZ2V0IHRoZSBbUmVjX2FwcF0gY29uc3RydWN0b3IgZm9yIHR5cGUtcmVmZXJlbmNlcyB3aXRoaW4gdGhlXG4gICAgICAgICAgIG11dHVhbCBncm91cCBiZWluZyBkZWZpbmVkLiBSZWZlcmVuY2VzIHdoaWNoXG4gICAgICAgICAgIGZvbGxvdyBhZnRlciB0aGUgY3VycmVudCBncm91cCB3aWxsIGFsd2F5cyBiZSBbQXBwbGljYXRpb25dcy5cblxuICAgICAgICAgICBBbmQgc2luY2Ugb2NhbWwgcmVqZWN0cyByZWZlcmVuY2VzIGluIGBpbmhlcml0YW5jZScgcG9zaXRpb24gdG8gdHlwZXMgd2l0aGluXG4gICAgICAgICAgIHRoZSBjdXJyZW50IGdyb3VwIChzZWUgZXhhbXBsZSkgd2l0aDpcblxuICAgICAgICAgICBFcnJvcjogVGhlIHR5cGUgY29uc3RydWN0b3IgdFxuICAgICAgICAgICBpcyBub3QgeWV0IGNvbXBsZXRlbHkgZGVmaW5lZFxuXG4gICAgICAgICAgIHRoZW4gaXRzIG9rIHRvIHNheSB0aGF0IGEgcmVjLWFwcCBpcyBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBpbmhlcml0ZWQgZnJvbSBhbmRcbiAgICAgICAgICAgcmV0dXJuIFtOb25fcG9seV92YXJpYW50XS5cblxuICAgICAgICAgICBBbmQgdW5saWtlIHRoZSBbQXBwbGljYXRpb25dIGNhc2UsIGl0IHNob3VsZCBuZXZlciBiZSBwb3NzaWJsZSB0byBzZWVcbiAgICAgICAgICAgYW4gZXJyb3IgbWVzc2FnZSB3aXRoIHRoZSBbZGVzY10gPSBbUmVjX2FwcF0uXG5cbiAgICAgICAgICAgRXhhbXBsZTogW3R5cGUgdCA9IFtgYSBvZiBbIHwgdF0gXV1cbiAgICAgICAgICAgSGVyZSwgW3wgdF0gd291bGQgYmUgYW4gZXhhbXBsZSBvZiBpbmhlcml0YW5jZSBmcm9tIGEgUmVjX2FwcCwgd2hpY2hcbiAgICAgICAgICAgaXMgcmVqZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLlxuICAgICAgICAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgVmFyIF8gfCBUdXBsZSBfIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT5cbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IGNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IGRlZiBsID0gY3JlYXRlIChBcHBsaWNhdGlvbiAoZGVmLCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0aWQgbCA9IGNyZWF0ZSAoUmVjX2FwcCAodGlkLCBsKSlcblxuICAgIGxldCBnZXRfcG9seV92YXJpYW50ICh4IDogVmlzaWJpbGl0eS52aXNpYmxlIHQpID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChkZXNjLCBfKSAtPiBFcnJvciBkZXNjXG4gICAgICB8IFBvbHlfdmFyaWFudCBsIC0+IE9rIChTb3J0ZWRfdGFibGUubWFwIH5mOihPcHRpb24ubWFwIH5mOihmdW4geCAtPiBPcGFxdWUgeCkpIGwpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLmNyZWF0ZSAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IGwgPSBFeHAxLmNyZWF0ZSAoQmFzZSAodSwgbCkpXG4gICAgbGV0IHR1cGxlIGwgPSBFeHAxLmNyZWF0ZSAoVHVwbGUgbClcblxuICAgIGxldCBwb2x5X3ZhcmlhbnQgbG9jIGwgPVxuICAgICAgRXhwMS5jcmVhdGUgKFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gRXhwMS5lcXVhbCkgbCkpXG4gICAgOztcblxuICAgIGxldCB2YXIgeCA9IEV4cDEuY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgeCBsID0gRXhwMS5jcmVhdGUgKEFwcGxpY2F0aW9uICh4LCBsKSlcbiAgICBsZXQgcmVjdXJzZSB0IGwgPSBFeHAxLmNyZWF0ZSAoUmVjX2FwcCAodCwgbCkpXG4gICAgbGV0IGRlZmluZSB4ID0geFxuICAgIGxldCByZWNvcmQgbCA9IEV4cDEuY3JlYXRlIChSZWNvcmQgbClcbiAgICBsZXQgdmFyaWFudCBsID0gRXhwMS5jcmVhdGUgKFZhcmlhbnQgbClcbiAgICBsZXQgY3JlYXRlIGUgPSBDYW5vbmljYWwgKEV4cDEudG9fZGlnZXN0IGUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZnVsbCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIGxldCByID0gcmVmIDBcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgdSA9ICFyIGluXG4gICAgciA6PSAxICsgdTtcbiAgICB1XG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cHJlc3Npb24gPSBzdHJ1Y3RcbiAgdHlwZSAndCBwb2x5X2NvbnN0ciA9XG4gICAgWyBgQ29uc3RyIG9mIHN0cmluZyAqICd0IG9wdGlvblxuICAgIHwgYEluaGVyaXQgb2YgTG9jYXRpb24udCAqICd0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiAoVGlkLnQgKiBWaWQudCBsaXN0ICogJ2EpIGxpc3QgLT4gJ2EgdFxuICAgIHZhbCBpZCA6ICdhIHQgLT4gR2lkLnRcbiAgICB2YWwgbG9va3VwIDogJ2EgdCAtPiBUaWQudCAtPiBWaWQudCBsaXN0ICogJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgZ2lkIDogR2lkLnRcbiAgICAgIDsgbG9jIDogTG9jYXRpb24udFxuICAgICAgOyBtZW1iZXJzIDogKFRpZC50ICogKFZpZC50IGxpc3QgKiAnYSkpIGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICAgIGxldCBjcmVhdGUgbG9jIHRyaXBzID1cbiAgICAgIGxldCBnaWQgPSBHaWQuY3JlYXRlICgpIGluXG4gICAgICBsZXQgbWVtYmVycyA9IExpc3QubWFwIHRyaXBzIH5mOihmdW4gKHgsIHZzLCB0KSAtPiB4LCAodnMsIHQpKSBpblxuICAgICAgeyBnaWQ7IGxvYzsgbWVtYmVycyB9XG4gICAgOztcblxuICAgIGxldCBpZCBnID0gZy5naWRcblxuICAgIGxldCBsb29rdXAgZyB0aWQgPVxuICAgICAgbWF0Y2ggTGlzdC5Bc3NvYy5maW5kIGcubWVtYmVycyB+ZXF1YWw6VGlkLiggPSApIHRpZCB3aXRoXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgIGcubG9jXG4gICAgICAgICAgIVwiaW1wb3NzaWJsZTogbG9va3VwX2dyb3VwLCB1bmJvdW5kIHR5cGUtaWRlbnRpZmllcjogJXtUaWR9XCJcbiAgICAgICAgICB0aWRcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgICAgICB8IEJhc2Ugb2YgVXVpZC50ICogdCBsaXN0XG4gICAgICAgIHwgUmVjb3JkIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgICAgIHwgVHVwbGUgb2YgdCBsaXN0XG4gICAgICAgIHwgUG9seV92YXJpYW50IG9mIChMb2NhdGlvbi50ICogdCBwb2x5X2NvbnN0ciBsaXN0KVxuICAgICAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgICAgICB8IFJlY19hcHAgb2YgVGlkLnQgKiB0IGxpc3RcbiAgICAgICAgfCBUb3BfYXBwIG9mIHQgR3JvdXAudCAqIFRpZC50ICogdCBsaXN0XG4gICAgICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgdmFyaWFudHNdXG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgdHlwZSBncm91cCA9IHQgR3JvdXAudFxuXG4gIGxldCBncm91cCA9IEdyb3VwLmNyZWF0ZVxuXG4gIHR5cGUgcG9seV92YXJpYW50X3JvdyA9IHQgcG9seV9jb25zdHJcblxuICBsZXQgY29uc3RyIHMgdCA9IGBDb25zdHIgKHMsIHQpXG4gIGxldCBpbmhlcml0XyBsb2MgdCA9IGBJbmhlcml0IChsb2MsIHQpXG4gIGxldCB2YXIgbG9jIHQgPSBWYXIgKGxvYywgdClcbiAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBQb2x5X3ZhcmlhbnQgKGxvYywgeHMpXG4gIGxldCBiYXNldHlwZSA9IGJhc2VcblxuICAoKiBcIlZSXCIgc3RhbmRzIGZvciBcInZhcmlhbnQgb3IgcmVjb3JkXCIgKilcblxuICBsZXQgaXNfY3ljbGljXzAgfih2aWFfVlIgOiBib29sKSA6IGdyb3VwIC0+IFRpZC50IC0+IGJvb2wgPVxuICAgIGZ1biBncm91cCB0aWQgLT5cbiAgICBsZXQgc2V0ID0gcmVmIFtdIGluXG4gICAgbGV0IHZpc2l0ZWQgdGlkID0gTGlzdC5tZW0gIXNldCB0aWQgfmVxdWFsOlRpZC5lcXVhbCBpblxuICAgIGxldCBhZGQgdGlkID0gc2V0IDo9IHRpZCA6OiAhc2V0IGluXG4gICAgbGV0IHJlYyB0cmF2ID0gZnVuY3Rpb25cbiAgICAgICgqIFdlIGxvb2sgZm9yIGN5Y2xlcyBieSB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgb2YgdHlwZS1leHByZXNzaW9ucyAqKVxuICAgICAgfCBBbm5vdGF0ZSAoXywgdCkgLT4gdHJhdiB0XG4gICAgICB8IEJhc2UgKF8sIHRzKSB8IFR1cGxlIHRzIHwgVG9wX2FwcCAoXywgXywgdHMpIC0+IExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgICAoKiAuLmluY2x1ZGluZyBwb2x5LXZhcmlhbnRzICopXG4gICAgICB8IFBvbHlfdmFyaWFudCAoXywgY3MpIC0+XG4gICAgICAgIExpc3QuaXRlciBjcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IGBDb25zdHIgKF8sIE5vbmUpIC0+ICgpXG4gICAgICAgICAgfCBgQ29uc3RyIChfLCBTb21lIHQpIC0+IHRyYXYgdFxuICAgICAgICAgIHwgYEluaGVyaXQgKF9sb2MsIHQpIC0+IHRyYXYgdClcbiAgICAgICgqIC4uIGFuZCByZWNvcmRzICYgKG5vcm1hbCkgdmFyaWFudHMgKilcbiAgICAgIHwgUmVjb3JkIHhzIC0+IGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0KSAtPiB0cmF2IHQpIGVsc2UgKClcbiAgICAgIHwgVmFyaWFudCB4cyAtPlxuICAgICAgICBpZiB2aWFfVlIgdGhlbiBMaXN0Lml0ZXIgeHMgfmY6KGZ1biAoXywgdHMpIC0+IExpc3QuaXRlciB+Zjp0cmF2IHRzKSBlbHNlICgpXG4gICAgICAoKiBXZSBkb250IGZvbGxvdyB0eXBlLXZhcnMgKilcbiAgICAgIHwgVmFyIF8gLT4gKClcbiAgICAgICgqIHRyYXZlcnNlIChyZWN1cnNpdmUpIHR5cGUtYXBwcyB3aGVuIGZpcnN0IGVuY291bnRlcmVkICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgdHMpIC0+XG4gICAgICAgIGlmIHZpc2l0ZWQgdGlkXG4gICAgICAgIHRoZW4gKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgYWRkIHRpZDtcbiAgICAgICAgICB0cmF2X3RpZCB0aWQpO1xuICAgICAgICBMaXN0Lml0ZXIgdHMgfmY6dHJhdlxuICAgIGFuZCB0cmF2X3RpZCB0aWQgPVxuICAgICAgbGV0IF8sIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICB0cmF2IGJvZHlcbiAgICBpblxuICAgIHRyYXZfdGlkIHRpZDtcbiAgICBsZXQgcmVzID0gdmlzaXRlZCB0aWQgaW5cbiAgICAoKmxldCBfc3MgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKExpc3QubWFwICghc2V0KSB+Zjooc3ByaW50ZiAhXCIle1RpZH1cIikpIGluKilcbiAgICAoKlByaW50Zi5wcmludGYgIVwiaXNfY3lsaWM6ICV7VGlkfSAtLT4gKCVzKSAlYiAgLS0gJXMlIVwiIHRpZCBfc3MgcmVzIChHcm91cC5sb2MgZ3JvdXApOyopXG4gICAgcmVzXG4gIDs7XG5cbiAgbGV0IGlzX2N5Y2xpYyA9IGlzX2N5Y2xpY18wIH52aWFfVlI6dHJ1ZVxuICBsZXQgaXNfY3ljbGljX3dpdGhfbm9faW50ZXJ2ZW5pbmdfVlIgPSBpc19jeWNsaWNfMCB+dmlhX1ZSOmZhbHNlXG5lbmRcblxuaW5jbHVkZSBFeHByZXNzaW9uXG5cbm1vZHVsZSBFdmFsdWF0aW9uIChDYW5vbmljYWwgOiBDYW5vbmljYWwpID0gc3RydWN0XG4gICgqIFtWZW52LnRdXG4gICAgIEVudmlyb25tZW50IGZvciByZXNvbHZpbmcgdHlwZS12YXJzICopXG4gIG1vZHVsZSBWZW52IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbG9va3VwIDogdCAtPiBWaWQudCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb25cbiAgICB2YWwgY3JlYXRlIDogKFZpZC50ICogVmlzaWJpbGl0eS52aXNpYmxlIENhbm9uaWNhbC5FeHAxLnQpIGxpc3QgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBNYXAuTShWaWQpLnRcblxuICAgIGxldCBjcmVhdGUgPVxuICAgICAgTGlzdC5mb2xkXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBWaWQpKVxuICAgICAgICB+ZjooZnVuIHQgKGssIHYpIC0+IE1hcC5zZXQgfmtleTprIH5kYXRhOnYgdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cCB0IGsgPSBNYXAuZmluZCB0IGtcbiAgZW5kXG5cbiAgbW9kdWxlIEFwcGxpY2FuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnRcbiAgICAgIHwgRGVmaW5pdGlvbiBvZiBDYW5vbmljYWwuRGVmLnRcbiAgZW5kXG5cbiAgKCogW1RlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLWRlZmluaXRpb25zICopXG4gIG1vZHVsZSBUZW52IDogc2lnXG4gICAgdHlwZSBrZXkgPSBHaWQudCAqIFRpZC50XG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZmluZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBvcHRpb25cbiAgICB2YWwgZW1wdHkgOiB0XG4gICAgdmFsIGV4dGVuZCA6IHQgLT4ga2V5IC0+IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEdpZC50ICogVGlkLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgdHlwZSBrZXkgPSBLZXkudFxuICAgIHR5cGUgdCA9IFsgYFJlY3Vyc2lvbl9sZXZlbCBvZiBpbnQgXSBNYXAuTShLZXkpLnRcblxuICAgIGxldCBmaW5kIHQgayA9IE1hcC5maW5kIHQga1xuICAgIGxldCBlbXB0eSA9IE1hcC5lbXB0eSAobW9kdWxlIEtleSlcbiAgICBsZXQgZXh0ZW5kIHQgayB2ID0gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0XG4gIGVuZFxuXG4gICgqIFtEZWZpbmluZy50XVxuICAgICBNb25hZCBmb3IgbWFuYWdpbmcgdW4tcm9sbGluZyBkZXB0aCwgYW5kIG1haW50YWluZyBhIFtUZW52LnRdICopXG4gIG1vZHVsZSBEZWZpbmluZyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgICB2YWwgbG9va19lbnYgOiBUZW52LmtleSAtPiBBcHBsaWNhbmQudCBvcHRpb24gdFxuICAgIHZhbCBleHRlbmRfbmV3X3RpZCA6IFRlbnYua2V5IC0+IENhbm9uaWNhbC5EZWYudCB0IC0+IEFwcGxpY2FuZC50IHRcbiAgICB2YWwgZXhlYyA6ICdhIHQgLT4gJ2FcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gZGVwdGg6aW50IC0+IFRlbnYudCAtPiAnYVxuXG4gICAgbGV0IHJldHVybiB4IH5kZXB0aDpfIF90ZW52ID0geFxuXG4gICAgbGV0IGJpbmQgdCBmIH5kZXB0aCB0ZW52ID1cbiAgICAgIGxldCB4ID0gdCB+ZGVwdGggdGVudiBpblxuICAgICAgKGYgeCkgfmRlcHRoIHRlbnZcbiAgICA7O1xuXG4gICAgbGV0IGxvb2tfZW52IGtleSB+ZGVwdGg6XyB0ZW52ID1cbiAgICAgIGxldCByZXN1bHQgPSBUZW52LmZpbmQgdGVudiBrZXkgaW5cbiAgICAgIE9wdGlvbi5tYXAgfmY6KGZ1biAoYFJlY3Vyc2lvbl9sZXZlbCB4KSAtPiBBcHBsaWNhbmQuUmVjdXJzaW9uX2xldmVsIHgpIHJlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgZXh0ZW5kX25ld190aWQga2V5IGRlZl90IH5kZXB0aCB0ZW52ID1cbiAgICAgIEFwcGxpY2FuZC5EZWZpbml0aW9uXG4gICAgICAgIChsZXQgdmFsdWUgPSBgUmVjdXJzaW9uX2xldmVsIGRlcHRoIGluXG4gICAgICAgICBsZXQgdGVudiA9IFRlbnYuZXh0ZW5kIHRlbnYga2V5IHZhbHVlIGluXG4gICAgICAgICBkZWZfdCB+ZGVwdGg6KGRlcHRoICsgMSkgdGVudilcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgdCA9IHQgfmRlcHRoOjAgVGVudi5lbXB0eVxuICBlbmRcblxuICB0eXBlICdhIGRlZmluaW5nID0gJ2EgRGVmaW5pbmcudFxuXG4gIGxldCAoID4+PSApID0gRGVmaW5pbmcuYmluZFxuICBsZXQgcmV0dXJuID0gRGVmaW5pbmcucmV0dXJuXG5cbiAgbGV0IHNlcXVlbmNlX2RlZmluaW5nIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYiBkZWZpbmluZykgLT4gJ2IgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIHhzIH5mIC0+XG4gICAgbGV0IHJlYyBsb29wIGFjY195cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjX3lzKVxuICAgICAgfCB4IDo6IHhzIC0+IGYgeCA+Pj0gZnVuIHkgLT4gbG9vcCAoeSA6OiBhY2NfeXMpIHhzXG4gICAgaW5cbiAgICBsb29wIFtdIHhzXG4gIDs7XG5cbiAgKCpcbiAgICAgU2hhcGUgZXZhbHVhdGlvbi5cblxuICAgICBTaGFwZXMgYXJlIGV2YWx1YXRlZCB0byBjYW5vbmljYWwtc2hhcGUgKGV4cHJlc3Npb25zKSwgd2l0aCBhZGRpdGlvbmFsIGRlZnMgY29sbGVjdGVkXG4gICAgIGluIHRoZSBbZGVmaW5pbmddIG1vbmFkLCB3aGljaCBhbHNvIG1hbmFnZXMgZ2VuZXJhdGlvbi9tYXBwaW5nIHRvIFtDYW5vbmljYWwuVGlkLnRdXG5cbiAgICAgVGhlcmUgaXMgZG93bndhcmRzIGNvbnRleHQgb2YgW2dyb3VwXSBhbmQgW1ZlbnYudF1cbiAgICAgVGhlIChjdXJyZW50KSBbZ3JvdXBdIGNoYW5nZXMgd2hlbiB0aGUgY2FzZSBmb3IgW1RvcF9hcHBdIGNhbGxzIFtldmFsX2FwcF0uXG5cbiAgICAgVGhlIGN1cnJlbnQgW1ZlbnYudF0gaXMgYWJhbmRvbmVkIHdoZW4gW2V2YWxfYXBwXSBpcyBjYWxsZWQsIGFuZCB0aGVuIHJlLWNyZWF0ZWQgYWZ0ZXJcbiAgICAgdGhlIGRlY2lzaW9uIGhhcyBiZWVuIG1hZGUgdG8gZWl0aGVyIGlubGluZSB0aGUgdHlwZS1hcHBsaWNhdGlvbiwgb3IgbWFrZSBhIHJlZmVyZW5jZVxuICAgICB0byBhIHR5cGUtZGVmaW5pdGlvbiwgd2hpY2ggaXMgY3JlYXRlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggKEdpZC50ICogVGlkLnQpLlxuXG4gICAgIFdlIG1ha2UgYSB0eXBlLWRlZmluaXRpb24gYWx3YXlzIGZvciBSZWNvcmRzIGFuZCBWYXJpYW50cywgYW5kIGluIGFkZGl0aW9uIGZvciBhbnlcbiAgICAgb3RoZXIgY3ljbGljIHR5cGUtZGVmaW5pdGlvbi5cbiAgKilcblxuICBsZXQgcmVjIGV2YWwgOiBncm91cCAtPiBWZW52LnQgLT4gdCAtPiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFJlY29yZCBiaW5kcyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBiaW5kcyB+ZjooZnVuIChzLCB4KSAtPlxuICAgICAgICAgIGV2YWwgZ3JvdXAgdmVudiB4ID4+PSBmdW4geSAtPiByZXR1cm4gKHMsIHkpKVxuICAgICAgICA+Pj0gZnVuIGJpbmRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5yZWNvcmQgYmluZHMpXG4gICAgICB8IFZhcmlhbnQgYWx0cyAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyBhbHRzIH5mOihmdW4gKHMsIHhzKSAtPlxuICAgICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IHhzID4+PSBmdW4geXMgLT4gcmV0dXJuIChzLCB5cykpXG4gICAgICAgID4+PSBmdW4gYWx0cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudmFyaWFudCBhbHRzKVxuICAgICAgfCBWYXIgKGxvYywgdmlkKSAtPlxuICAgICAgICAobWF0Y2ggVmVudi5sb29rdXAgdmVudiB2aWQgd2l0aFxuICAgICAgICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICAgICAgIHwgTm9uZSAtPiBldmFsX2ZhaWwgbG9jICFcIkZyZWUgdHlwZSB2YXJpYWJsZTogJyV7VmlkfVwiIHZpZCAoKSlcbiAgICAgIHwgQW5ub3RhdGUgKHMsIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYW5ub3RhdGUgcyB2KVxuICAgICAgfCBCYXNlIChzLCB0cykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuYmFzZXR5cGUgcyB2cylcbiAgICAgIHwgVHVwbGUgdHMgLT4gZXZhbF9saXN0IGdyb3VwIHZlbnYgdHMgPj49IGZ1biB2cyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUudHVwbGUgdnMpXG4gICAgICB8IFRvcF9hcHAgKGluX2dyb3VwLCB0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3NcbiAgICAgICAgPj49IGZ1biBhcmdzIC0+XG4gICAgICAgICgqIGFyZ3MgZXZhbHVhdGVkIGluIGN1cnJlbnQgZ3JvdXAgKilcbiAgICAgICAgZXZhbF9hcHAgaW5fZ3JvdXAgdGlkIGFyZ3NcbiAgICAgICgqIGdyb3VwIGNoYW5nZWQgaGVyZSAqKVxuICAgICAgfCBSZWNfYXBwICh0aWQsIGFyZ3MpIC0+XG4gICAgICAgIGV2YWxfbGlzdCBncm91cCB2ZW52IGFyZ3MgPj49IGZ1biBhcmdzIC0+IGV2YWxfYXBwIGdyb3VwIHRpZCBhcmdzXG4gICAgICB8IFBvbHlfdmFyaWFudCAobG9jLCBjcykgLT5cbiAgICAgICAgc2VxdWVuY2VfZGVmaW5pbmcgfmY6KGV2YWxfcG9seV9jb25zdHIgZ3JvdXAgdmVudikgY3NcbiAgICAgICAgPj49IGZ1biB4c3MgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnBvbHlfdmFyaWFudCBsb2MgKExpc3QuY29uY2F0IHhzcykpXG5cbiAgYW5kIGV2YWxfbGlzdCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB2ZW52IHRzIC0+IHNlcXVlbmNlX2RlZmluaW5nIHRzIH5mOihldmFsIGdyb3VwIHZlbnYpXG5cbiAgYW5kIGV2YWxfcG9seV9jb25zdHJcbiAgICA6ICBncm91cCAtPiBWZW52LnQgLT4gdCBwb2x5X2NvbnN0clxuICAgICAgLT4gKHN0cmluZyAqIFZpc2liaWxpdHkub3BhcXVlIENhbm9uaWNhbC5FeHAxLnQgb3B0aW9uKSBsaXN0IGRlZmluaW5nXG4gICAgPVxuICAgIGZ1biBncm91cCB2ZW52IGMgLT5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCBgQ29uc3RyIChzLCBOb25lKSAtPiByZXR1cm4gWyBzLCBOb25lIF1cbiAgICAgIHwgYENvbnN0ciAocywgU29tZSB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdCA+Pj0gZnVuIHYgLT4gcmV0dXJuIFsgcywgU29tZSAoQ2Fub25pY2FsLkV4cDEub3BhcXVlIHYpIF1cbiAgICAgIHwgYEluaGVyaXQgKGxvYywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHRcbiAgICAgICAgPj49IGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBDYW5vbmljYWwuRXhwMS5nZXRfcG9seV92YXJpYW50IHYgd2l0aFxuICAgICAgICAgfCBPayB0YWIgLT4gcmV0dXJuIChTb3J0ZWRfdGFibGUuZXhwb3NlIHRhYilcbiAgICAgICAgIHwgRXJyb3IgZGVzYyAtPlxuICAgICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICBcIlRoZSBzaGFwZSBmb3IgYW4gaW5oZXJpdGVkIHR5cGUgaXMgbm90IGRlc2NyaWJlZCBhcyBhIHBvbHltb3JwaGljLXZhcmlhbnQ6ICVzXCJcbiAgICAgICAgICAgICBkZXNjXG4gICAgICAgICAgICAgKCkpXG5cbiAgYW5kIGV2YWxfZGVmaW5pdGlvbiA6IGdyb3VwIC0+IFZpZC50IGxpc3QgLT4gdCAtPiBDYW5vbmljYWwuRGVmLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCBmb3JtYWxzIGJvZHkgLT5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgKExpc3QubWFwaSBmb3JtYWxzIH5mOihmdW4gaSB4IC0+IHgsIENhbm9uaWNhbC5FeHAxLnZhciBpKSkgaW5cbiAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5ID4+PSBmdW4gdiAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUuZGVmaW5lIHYpXG5cbiAgYW5kIGV2YWxfYXBwIDogZ3JvdXAgLT4gVGlkLnQgLT4gXyBDYW5vbmljYWwuRXhwMS50IGxpc3QgLT4gXyBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdGlkIGFyZ3MgLT5cbiAgICAgIGxldCBnaWQgPSBHcm91cC5pZCBncm91cCBpblxuICAgICAgbGV0IGZvcm1hbHMsIGJvZHkgPSBHcm91cC5sb29rdXAgZ3JvdXAgdGlkIGluXG4gICAgICBsZXQgcmVjb3JkX29yX25vcm1hbF92YXJpYW50ID1cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgUmVjb3JkIF8gfCBWYXJpYW50IF8gLT4gdHJ1ZVxuICAgICAgICB8IFR1cGxlIF8gfCBBbm5vdGF0ZSBfIHwgQmFzZSBfIHwgUG9seV92YXJpYW50IF8gfCBWYXIgXyB8IFJlY19hcHAgXyB8IFRvcF9hcHAgXyAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGN5Y2xpYyA9IGlzX2N5Y2xpYyBncm91cCB0aWQgaW5cbiAgICAgIGxldCBjeWNsaWNfbm9fVlIgPSBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiBncm91cCB0aWQgaW5cbiAgICAgIGlmIChyZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgJiYgY3ljbGljKSB8fCBjeWNsaWNfbm9fVlJcbiAgICAgIHRoZW5cbiAgICAgICAgRGVmaW5pbmcubG9va19lbnYgKGdpZCwgdGlkKVxuICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHJlY3Vyc2UgLT4gcmV0dXJuIHJlY3Vyc2VcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIERlZmluaW5nLmV4dGVuZF9uZXdfdGlkIChnaWQsIHRpZCkgKGV2YWxfZGVmaW5pdGlvbiBncm91cCBmb3JtYWxzIGJvZHkpKVxuICAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCBSZWN1cnNpb25fbGV2ZWwgciAtPiByZXR1cm4gKENhbm9uaWNhbC5FeHAxLnJlY3Vyc2UgciBhcmdzKVxuICAgICAgICB8IERlZmluaXRpb24gZGVmIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEuYXBwbHkgZGVmIGFyZ3MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHZlbnYgPVxuICAgICAgICAgIG1hdGNoIExpc3QuemlwIGZvcm1hbHMgYXJncyB3aXRoXG4gICAgICAgICAgfCBPayB4IC0+IFZlbnYuY3JlYXRlIHhcbiAgICAgICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBmYWlsd2l0aCBcImFwcGx5LCBpbmNvcnJlY3QgdHlwZSBhcHBsaWNhdGlvbiBhcml0eVwiXG4gICAgICAgIGluXG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiBib2R5KVxuICA7O1xuXG4gICgqIHRvcCBsZXZlbCBlbnRyeSBwb2ludCBmb3IgZXZhbHVhdGlvbiAqKVxuICBsZXQgZXZhbCA6IHQgLT4gQ2Fub25pY2FsLnQgPVxuICAgIGZ1biB0IC0+XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cCAoTG9jYXRpb24ub2Zfc3RyaW5nIFwidG9wLWxldmVsXCIpIFtdIGluXG4gICAgICBsZXQgdmVudiA9IFZlbnYuY3JlYXRlIFtdIGluXG4gICAgICBsZXQgdiA9IERlZmluaW5nLmV4ZWMgKGV2YWwgZ3JvdXAgdmVudiB0KSBpblxuICAgICAgQ2Fub25pY2FsLkNyZWF0ZS5jcmVhdGUgdlxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDYW5vbmljYWxfZnVsbFxuXG4gIG1vZHVsZSBFeHAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXZhbHVhdGlvbiAoQ2Fub25pY2FsX2Z1bGwpXG5tb2R1bGUgQ2Fub25pY2FsX3NlbGVjdGVkID0gQ2Fub25pY2FsX2RpZ2VzdFxubW9kdWxlIEV2YWx1YXRpb25fdG9fZGlnZXN0ID0gRXZhbHVhdGlvbiAoQ2Fub25pY2FsX3NlbGVjdGVkKVxuXG5sZXQgZXZhbF90b19kaWdlc3QgZXhwID0gQ2Fub25pY2FsX3NlbGVjdGVkLnRvX2RpZ2VzdCAoRXZhbHVhdGlvbl90b19kaWdlc3QuZXZhbCBleHApXG5sZXQgZXZhbF90b19kaWdlc3Rfc3RyaW5nIGV4cCA9IERpZ2VzdC50b19oZXggKGV2YWxfdG9fZGlnZXN0IGV4cClcblxubW9kdWxlIEZvcl90eXBlcmVwID0gc3RydWN0XG4gIGV4Y2VwdGlvbiBOb3RfYV90dXBsZSBvZiB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGRlY29uc3RydWN0X3R1cGxlX2V4biB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFR1cGxlIHRzIC0+IHRzXG4gICAgfCBfIC0+IHJhaXNlIChOb3RfYV90dXBsZSB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNvcnRlZF90YWJsZSA9IFNvcnRlZF90YWJsZVxuICBtb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3JcbiAgbW9kdWxlIENhbm9uaWNhbCA9IENhbm9uaWNhbFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJpbmNsdWRlIFN0YWJsZV93aXRuZXNzX2ludGZcblxuKCogVGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gb2Ygc3RhYmxlIHdpdG5lc3NlcyBkb2VzIG5vdCBtYXR0ZXIuICopXG50eXBlIF8gdCA9IHVuaXRcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYXJyYXkgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfYm9vbCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19ieXRlcyA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19jaGFyID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2V4biA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19mbG9hdCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19pbnQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50MzIgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfaW50NjQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbGF6eV90ICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2xpc3QgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbmF0aXZlaW50ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX29wdGlvbiAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19yZWYgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3Nfc3RyaW5nID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3VuaXQgPSAoKVxuZW5kXG5cbmxldCBvZl9zZXJpYWxpemFibGUgKCkgXyBfID0gKClcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTEgKF8gOiBUMSkgKF8gOiBUMSkgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTIgKF8gOiBUMikgKF8gOiBUMikgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyAoKSAoKSA9ICgpXG5lbmRcblxubW9kdWxlIE9mX3NlcmlhbGl6YWJsZTMgKF8gOiBUMykgKF8gOiBUMykgPSBzdHJ1Y3RcbiAgbGV0IG9mX3NlcmlhbGl6YWJsZSBfIF8gXyBfICgpICgpID0gKClcbmVuZFxuXG5sZXQgYXNzZXJ0X3N0YWJsZSA9ICgpXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBTdGRsaWIuSGFzaHRibC5hZGQgaHRibCBrIHY7XG4gICAgY29weV9odGJsX2xpc3QgaHRibCByZXN0XG47O1xuXG4oKiBCaWdhcnJheXMgKilcblxudHlwZSB2ZWMzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWM2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTEudFxudHlwZSB2ZWMgPSB2ZWM2NFxudHlwZSBtYXQzMiA9IChmbG9hdCwgZmxvYXQzMl9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQ2NCA9IChmbG9hdCwgZmxvYXQ2NF9lbHQsIGZvcnRyYW5fbGF5b3V0KSBBcnJheTIudFxudHlwZSBtYXQgPSBtYXQ2NFxuXG4oKiBGbG9hdCBhcnJheXMgKilcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG4oKioqKVxuXG5sZXQgKCArICkgPSAoICsgKVxuIiwiKCogTmF0MDogbmF0dXJhbCBudW1iZXJzIChpbmNsdWRpbmcgemVybykgKilcblxudHlwZSB0ID0gaW50XG5cbmxldCBvZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHRoZW4gZmFpbHdpdGggXCJCaW5fcHJvdC5OYXQwLm9mX2ludDogbiA8IDBcIjtcbiAgblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuIiwiKCogV3JpdGVfbWw6IHdyaXRpbmcgdmFsdWVzIHRvIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2Egd3JpdGVyID0gYnVmIC0+IHBvczpwb3MgLT4gJ2EgLT4gcG9zXG50eXBlICgnYSwgJ2IpIHdyaXRlcjEgPSAnYSB3cml0ZXIgLT4gJ2Igd3JpdGVyXG50eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIyID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MpIHdyaXRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIzID0gJ2Egd3JpdGVyIC0+ICgnYiwgJ2MsICdkKSB3cml0ZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBjb2RlX05FR19JTlQ4ID0gKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSAnXFx4ZmYnICgqJCopXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxubGV0IGNvZGVfSU5UMzIgPSAoKiQgQ29kZS5jaGFyIElOVDMyICopICdcXHhmZCcgKCokKilcbmxldCBjb2RlX0lOVDY0ID0gKCokIENvZGUuY2hhciBJTlQ2NCAqKSAnXFx4ZmMnICgqJCopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDMyIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc3RyaW5nX2dldDY0IDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0dVwiXG5cbmxldCBiaW5fd3JpdGVfbWQ1IGJ1ZiB+cG9zIHggPVxuICBsZXQgeCA9IE1kNV9saWIudG9fYmluYXJ5IHggaW5cbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHggPSAxNik7XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCA4IGluXG4gICAgdW5zYWZlX3NldDY0IGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0NjQgYnVmIChwb3MgKyA4KSBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggNCBpblxuICAgIGxldCBjID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDggaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCAxMiBpblxuICAgIHVuc2FmZV9zZXQzMiBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgNCkgYjtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA4KSBjO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDEyKSBkKTtcbiAgbmV4dFxuOztcbiIsIigqIFJlYWRfbWw6IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSByZWFkZXIgPSBidWYgLT4gcG9zX3JlZjpwb3NfcmVmIC0+ICdhXG50eXBlICgnYSwgJ2IpIHJlYWRlcjEgPSAnYSByZWFkZXIgLT4gJ2IgcmVhZGVyXG50eXBlICgnYSwgJ2IsICdjKSByZWFkZXIyID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MpIHJlYWRlcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIzID0gJ2EgcmVhZGVyIC0+ICgnYiwgJ2MsICdkKSByZWFkZXIyXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBidWYgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuXG5sZXQgdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgYyA9IHVuc2FmZV9nZXQ4IGJ1ZiBwb3MgaW5cbiAgaWYgYyA+PSAxMjggdGhlbiBjIC0gMjU2IGVsc2UgY1xuOztcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxubGV0IG1heF9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50MzIgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIEludDMyLm1heF9pbnQgZWxzZSBJbnQzMi5vZl9pbnQgbWluX2ludFxubGV0IG1heF9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWF4X2ludFxubGV0IG1pbl9pbnRfaW50NjQgPSBJbnQ2NC5vZl9pbnQgbWluX2ludFxuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDMyIHBvcyB4ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIGlmIHggPj0gbWluX2ludF9pbnQzMiAmJiB4IDw9IG1heF9pbnRfaW50MzJcbiAgdGhlbiBJbnQzMi50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50NjQgcG9zIHggPVxuICBpZiB4ID49IG1pbl9pbnRfaW50NjQgJiYgeCA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gSW50NjQudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXQgc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfcG9zIHggLT4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZSBhbHdheXNdIHBvcyB4IC0+XG4gICAgICBpZiB4ID49IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWluX2ludFxuICAgICAgJiYgeCA8PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1heF9pbnRcbiAgICAgIHRoZW4gSW50NjQudG9fbmF0aXZlaW50IHhcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2dldDE2IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDMyIDogYnVmIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQxNiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQzMiBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9nZXQ2NCBlbHNlIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQxNiBidWYgcG9zIHw+IGJzd2FwMTYgZWxzZSB1bnNhZmVfZ2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQzMiBidWYgcG9zIHw+IGJzd2FwMzIgZWxzZSB1bnNhZmVfZ2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfZ2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIGZ1biBidWYgcG9zIC0+IHVuc2FmZV9nZXQ2NCBidWYgcG9zIHw+IGJzd2FwNjQgZWxzZSB1bnNhZmVfZ2V0NjRcbjs7XG5cbmxldCB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCB4ID0gdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcyBpblxuICBpZiB4ID4gMzI3NjcgdGhlbiB4IC0gNjU1MzYgZWxzZSB4XG47O1xuXG5sZXQgYmluX3JlYWRfdW5pdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiB1bnNhZmVfZ2V0IGJ1ZiBwb3MgPSAnXFwwMDAnXG4gIHRoZW4gcG9zX3JlZiA6PSBwb3MgKyAxXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuVW5pdF9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2Jvb2wgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGZhbHNlXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICB0cnVlXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Cb29sX2NvZGUgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zIGluXG4gIGlmIG4gPj0gMCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5lZ19pbnQ4ICFwb3NfcmVmO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogQ2FuIGJlIGFib3ZlIG5leHQgbGluZSAobm8gZXJyb3JzIHBvc3NpYmxlIHdpdGggMTZiaXQpLlxuICAgICBUaGlzIHNob3VsZCBpbXByb3ZlIHRoZSBnZW5lcmF0ZWQgY29kZS4gKilcbiAgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDMyICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50NjQgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIEludDY0Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBOYXRpdmVpbnQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfbmF0aXZlaW50X29mX2ludDY0IHBvcyBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIE5hdDAudW5zYWZlX29mX2ludCAodW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvcylcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgbWFza18zMmJpdCA9IEludDY0LnRvX2ludCAweGZmZmZfZmZmZkwgaW5cbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgIGxldCBuID0gSW50MzIudG9faW50ICh1bnNhZmVfZ2V0MzJsZSBidWYgcG9zKSBpblxuICAgICAgaWYgbiA+PSAwXG4gICAgICB0aGVuIE5hdDAudW5zYWZlX29mX2ludCBuXG4gICAgICBlbHNlXG4gICAgICAgICgqIEVyYXNlIHRoZSB1cHBlciBiaXRzIHRoYXQgd2VyZSBzZXQgdG8gMSBkdXJpbmcgdGhlIGludDMyIC0+IGludCBjb252ZXJzaW9uLiAqKVxuICAgICAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKG4gbGFuZCBtYXNrXzMyYml0KSlcbiAgZWxzZVxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICAgICBpZiBuID49IDBsICYmIG4gPD0gbWF4X2ludF9pbnQzMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQzMi50b19pbnQgbikgaW5cbiAgICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgICBuKVxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBpZiBuID49IDBMICYmIG4gPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIChcbiAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50NjQudG9faW50IG4pIGluXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIG4pXG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdDAudW5zYWZlX29mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8zMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9uYXQwXzY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5TdHJpbmdfdG9vX2xvbmcgc3RhcnRfcG9zO1xuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9zdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHN0ciA9IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiBpblxuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuOztcblxubGV0IGJpbl9yZWFkX2NoYXIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIENoYXIuY29kZSBjaFxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlblxuICAgICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfZmxvYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICBJbnQ2NC5mbG9hdF9vZl9iaXRzICh1bnNhZmVfZ2V0NjRsZSBidWYgcG9zKVxuOztcblxubGV0IGJpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQzMi5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50MzIub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50MzJfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDY0Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQ2NC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQ2NF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5hdGl2ZWludC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIHdoZW4gYXJjaF9zaXh0eWZvdXIgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0aXZlaW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX3JlZiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgcmVmIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfbGF6eSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgTGF6eS5mcm9tX3ZhbCBlbFxuOztcblxubGV0IGJpbl9yZWFkX29wdGlvbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTm9uZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgU29tZSBlbFxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuT3B0aW9uX2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfcGFpciBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGJcbjs7XG5cbmxldCBiaW5fcmVhZF90cmlwbGUgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYiA9IGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBjID0gYmluX3JlYWRfYyBidWYgfnBvc19yZWYgaW5cbiAgYSwgYiwgY1xuOztcblxubGV0IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiA9XG4gIGxldCByZWMgbG9vcCBuIGFjYyA9XG4gICAgaWYgbiA9IDAgdGhlbiBhY2MgZWxzZSBsb29wIChuIC0gMSkgKGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA6OiBhY2MpXG4gIGluXG4gIGxvb3AgbGVuIFtdXG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9sZW4gdGhlbiByYWlzZV9yZWFkX2Vycm9yIChMaXN0X3Rvb19sb25nIHsgbGVuOyBtYXhfbGVuIH0pICFwb3NfcmVmO1xuICBsZXQgcmV2X2xzdCA9IGJpbl9yZWFkX25fcmV2X2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBMaXN0LnJldiByZXZfbHN0XG47O1xuXG5sZXQgYmluX3JlYWRfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbjptYXhfaW50IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuOztcblxubGV0IGR1bW15X2Zsb2F0X2J1ZiA9IGNyZWF0ZV9idWYgOFxubGV0ICgpID0gaWdub3JlIChXcml0ZS5iaW5fd3JpdGVfZmxvYXQgZHVtbXlfZmxvYXRfYnVmIH5wb3M6MCAzLjEpXG5cbmxldCBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoID1cbiAgaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4gfmNyZWF0ZSB+YmxpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IG1heF9mbG9hdF9hcnJheV9sZW5ndGggdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBwb3M7XG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBhcnIgPSBjcmVhdGUgbGVuIGluXG4gIGJsaXQgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIGFyciB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGFyclxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpGbG9hdC5BcnJheS5jcmVhdGVcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmNyZWF0ZTpBcnJheS5jcmVhdGVfZmxvYXRcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2FycmF5ICh0eXBlIGEpIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9yZWFkX2VsIDogYSByZWFkZXIpIDogZmxvYXQgcmVhZGVyKSA9PSBiaW5fcmVhZF9mbG9hdFxuICB0aGVuIChPYmoubWFnaWMgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA6IGZsb2F0IGFycmF5KSA6IGEgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICAgIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFt8fF1cbiAgICBlbHNlIChcbiAgICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpXG4gICAgICBlbHNlIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC8gMlxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBtYXliZV9mbG9hdCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBkdW1teV9mbG9hdF9idWYgfnBvc19yZWY6KHJlZiAwKSBpblxuICAgICAgICAgICAgU29tZSBlbFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBtYXliZV9mbG9hdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3NcbiAgICAgICAgfCBTb21lIGVsIC0+XG4gICAgICAgICAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgZWwpID0gT2JqLmRvdWJsZV90YWcgfHwgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvcyk7XG4gICAgICBsZXQgZmlyc3QgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGxldCByZXMgPSBBcnJheS5tYWtlIGxlbiBmaXJzdCBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIGkgZWxcbiAgICAgIGRvbmU7XG4gICAgICByZXMpKVxuOztcblxubGV0IGJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYWRfa3ZfcGFpciA9IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfa2V5IGJpbl9yZWFkX3ZhbCBpblxuICBsZXQgZWxzID0gYmluX3JlYWRfbl9yZXZfbGlzdCByZWFkX2t2X3BhaXIgYnVmIH5wb3NfcmVmIGxlbiBpblxuICBjb3B5X2h0YmxfbGlzdCBodGJsIGVsc1xuOztcblxuZXh0ZXJuYWwgYnVmX29mX3ZlYzMyIDogdmVjMzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX3ZlYzY0IDogdmVjNjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDMyIDogbWF0MzIgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgYnVmX29mX21hdDY0IDogbWF0NjQgLT4gYnVmID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzMyIHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCB2ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX3ZlYzY0IHZlYykgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdmVjXG47O1xuXG5sZXQgYmluX3JlYWRfdmVjID0gYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDMyIG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0NjQgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9tYXQgPSBiaW5fcmVhZF9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3JlYWRfYmlnc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHN0ciA9IGNyZWF0ZV9idWYgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpzdHIgfmRzdF9wb3M6MCB+bGVuO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAoKiBbbl0gbXVzdCBjb250YWluIGFuIGludGVnZXIgYWxyZWFkeSBlbmNvZGVkLCBpLmUuIFtuID0gMiAqIGsgKyAxXS4gKilcbiAgaWYgSW50MzIubG9nYW5kIG4gMWwgPSAwbFxuICB0aGVuIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF90YWcsIHBvcykpXG4gIGVsc2UgKFxuICAgICgqIFdlIHNoaWZ0IGl0IGJ5IG9uZSBiaXQgdG8gdGhlIHJpZ2h0IHNlIHdlIGdldCBiYWNrIFsyICogayArIDFdIGluIHRoZSBlbmQuICopXG4gICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgIEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHQgbiAxKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfOGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQ4IGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMTZiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzMyYml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzY0Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfaW50NjRfYml0cyBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0YmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3Ncbjs7XG5cblslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMDcsIDApXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfc3RyaW5nX3NldDY0dVwiXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5cblslJWVuZGlmXVxuXG5sZXQgYmluX3JlYWRfbWQ1IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0NjQgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDY0IGJ1ZiAocG9zICsgOCkgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0NjQgcmVzIDggYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfZ2V0MzIgYnVmIHBvcyBpblxuICAgIGxldCBiID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgNCkgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDgpIGluXG4gICAgbGV0IGQgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyAxMikgaW5cbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDAgYTtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDQgYjtcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDggYztcbiAgICB1bnNhZmVfYnl0ZXNfc2V0MzIgcmVzIDEyIGQpO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnkgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzKVxuOztcbiIsImluY2x1ZGUgQmluX3NoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuIiwiKCogVHBfY2xhc3M6IHNpemVycywgd3JpdGVycywgYW5kIHJlYWRlcnMgaW4gcmVjb3JkcyAqKVxuXG50eXBlICdhIHdyaXRlciA9XG4gIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICB9XG5cbnR5cGUgJ2EgcmVhZGVyID1cbiAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgOyB2dGFnX3JlYWQgOiAoaW50IC0+ICdhKSBSZWFkLnJlYWRlclxuICB9XG5cbnR5cGUgJ2EgdCA9XG4gIHsgc2hhcGUgOiBTaGFwZS50XG4gIDsgd3JpdGVyIDogJ2Egd3JpdGVyXG4gIDsgcmVhZGVyIDogJ2EgcmVhZGVyXG4gIH1cblxudHlwZSAnYSB3cml0ZXIwID0gJ2Egd3JpdGVyXG50eXBlICdhIHJlYWRlcjAgPSAnYSByZWFkZXJcbnR5cGUgJ2EgdDAgPSAnYSB0XG5cbm1vZHVsZSBTMSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gJ2Igd3JpdGVyMFxuICB0eXBlICgnYSwgJ2IpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gJ2IgcmVhZGVyMFxuICB0eXBlICgnYSwgJ2IpIHQgPSAnYSB0MCAtPiAnYiB0MFxuZW5kXG5cbm1vZHVsZSBTMiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MpIFMxLndyaXRlclxuICB0eXBlICgnYSwgJ2IsICdjKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MpIFMxLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2EgdDAgLT4gKCdiLCAnYykgUzEudFxuZW5kXG5cbm1vZHVsZSBTMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAoJ2IsICdjLCAnZCkgUzIud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSByZWFkZXIgPSAnYSByZWFkZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi5yZWFkZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSB0MCAtPiAoJ2IsICdjLCAnZCkgUzIudFxuZW5kXG5cbmxldCB2YXJpYW50X3dyb25nX3R5cGUgbmFtZSBfYnVmIH5wb3NfcmVmIF94ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lICFwb3NfcmVmXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMuU3RyICopXG4oKiQgbWtfYmFzZSBcInVuaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfdW5pdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdW5pdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdCB9XG5sZXQgYmluX3JlYWRlcl91bml0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF91bml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgfVxubGV0IGJpbl9zaGFwZV91bml0ID0gU2hhcGUuYmluX3NoYXBlX3VuaXRcblxubGV0IGJpbl91bml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV91bml0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3VuaXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfdW5pdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJvb2xcIiAqKVxubGV0IGJpbl93cml0ZXJfYm9vbCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYm9vbDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbCB9XG5sZXQgYmluX3JlYWRlcl9ib29sID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9ib29sOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgfVxubGV0IGJpbl9zaGFwZV9ib29sID0gU2hhcGUuYmluX3NoYXBlX2Jvb2xcblxubGV0IGJpbl9ib29sID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ib29sOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Jvb2w7IHJlYWRlciA9IGJpbl9yZWFkZXJfYm9vbCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInN0cmluZ1wiICopXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3N0cmluZzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nIH1cblxubGV0IGJpbl9yZWFkZXJfc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9zdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX3N0cmluZ1xuXG5sZXQgYmluX3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfc3RyaW5nOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3N0cmluZzsgcmVhZGVyID0gYmluX3JlYWRlcl9zdHJpbmcgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJieXRlc1wiICopXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYnl0ZXM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzIH1cblxubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2J5dGVzOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBTaGFwZS5iaW5fc2hhcGVfYnl0ZXNcblxubGV0IGJpbl9ieXRlcyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYnl0ZXM7IHdyaXRlciA9IGJpbl93cml0ZXJfYnl0ZXM7IHJlYWRlciA9IGJpbl9yZWFkZXJfYnl0ZXMgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJjaGFyXCIgKilcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2NoYXI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2NoYXIgfVxubGV0IGJpbl9yZWFkZXJfY2hhciA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfY2hhcjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiIH1cbmxldCBiaW5fc2hhcGVfY2hhciA9IFNoYXBlLmJpbl9zaGFwZV9jaGFyXG5cbmxldCBiaW5fY2hhciA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfY2hhcjsgd3JpdGVyID0gYmluX3dyaXRlcl9jaGFyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2NoYXIgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludCB9XG5sZXQgYmluX3JlYWRlcl9pbnQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgfVxubGV0IGJpbl9zaGFwZV9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XG5sZXQgYmluX2ludCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQgfVxuXG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdFxuXG5sZXQgYmluX2Zsb2F0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDMyID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQzMjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzIgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50MzI7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDMyXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9pbnQzMlxuXG5sZXQgYmluX2ludDMyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQzMjsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQzMjsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQzMiB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjQgfVxuXG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NFxuXG5sZXQgYmluX2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ2NDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnQ2NDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnQ2NCB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdGl2ZWludFwiICopXG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdGl2ZWludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0aXZlaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXRpdmVpbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IFNoYXBlLmJpbl9zaGFwZV9uYXRpdmVpbnRcblxubGV0IGJpbl9uYXRpdmVpbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25hdGl2ZWludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmF0aXZlaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uYXRpdmVpbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuYXQwXCIgKilcbmxldCBiaW5fd3JpdGVyX25hdDAgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX25hdDA7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25hdDAgfVxubGV0IGJpbl9yZWFkZXJfbmF0MCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmF0MDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmF0MFwiIH1cbmxldCBiaW5fc2hhcGVfbmF0MCA9IFNoYXBlLmJpbl9zaGFwZV9uYXQwXG5cbmxldCBiaW5fbmF0MCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0MDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXQwOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdDAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwicmVmXCIgKilcbmxldCBiaW5fd3JpdGVyX3JlZiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcmVmIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9yZWYgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9yZWYgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfcmVmIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9yZWYgeDEgPSBTaGFwZS5iaW5fc2hhcGVfcmVmIHgxXG5cbmxldCBiaW5fcmVmIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcmVmIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcmVmIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3JlZiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxhenlcIiAqKVxubGV0IGJpbl93cml0ZXJfbGF6eSBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGF6eSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xhenkgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGF6eSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xhenkgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGF6eSB4MVxuXG5sZXQgYmluX2xhenkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9sYXp5IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGF6eSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9sYXp5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwib3B0aW9uXCIgKilcbmxldCBiaW5fd3JpdGVyX29wdGlvbiBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfb3B0aW9uIGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9vcHRpb24gYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9vcHRpb24geDEgPSBTaGFwZS5iaW5fc2hhcGVfb3B0aW9uIHgxXG5cbmxldCBiaW5fb3B0aW9uIGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfb3B0aW9uIGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfb3B0aW9uIGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX29wdGlvbiBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcInBhaXJcIiAqKVxubGV0IGJpbl93cml0ZXJfcGFpciBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX3BhaXIgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9wYWlyIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3BhaXIgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJwYWlyXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9wYWlyIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX3BhaXIgeDEgeDJcblxubGV0IGJpbl9wYWlyIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfcGFpciBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3BhaXIgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3BhaXIgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UzIFwidHJpcGxlXCIgKilcbmxldCBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiBiaW5fd3JpdGVyX2VsMyA9XG4gIHsgc2l6ZSA9XG4gICAgICAoZnVuIHYgLT5cbiAgICAgICAgIFNpemUuYmluX3NpemVfdHJpcGxlIGJpbl93cml0ZXJfZWwxLnNpemUgYmluX3dyaXRlcl9lbDIuc2l6ZSBiaW5fd3JpdGVyX2VsMy5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfdHJpcGxlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwxLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwyLndyaXRlXG4gICAgICAgICAgIGJpbl93cml0ZXJfZWwzLndyaXRlXG4gICAgICAgICAgIGJ1ZlxuICAgICAgICAgICB+cG9zXG4gICAgICAgICAgIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fcmVhZGVyX2VsMSBiaW5fcmVhZGVyX2VsMiBiaW5fcmVhZGVyX2VsMyA9XG4gIHsgcmVhZCA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgUmVhZC5iaW5fcmVhZF90cmlwbGVcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDEucmVhZFxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMi5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwzLnJlYWRcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInRyaXBsZVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzID0gU2hhcGUuYmluX3NoYXBlX3RyaXBsZSB4MSB4MiB4M1xuXG5sZXQgYmluX3RyaXBsZSBiaW5fZWwxIGJpbl9lbDIgYmluX2VsMyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfdHJpcGxlIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZSBiaW5fZWwzLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl90cmlwbGUgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXIgYmluX2VsMy53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RyaXBsZSBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlciBiaW5fZWwzLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJsaXN0XCIgKilcbmxldCBiaW5fd3JpdGVyX2xpc3QgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2xpc3QgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX2xpc3QgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9saXN0IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2xpc3QgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9saXN0IHgxID0gU2hhcGUuYmluX3NoYXBlX2xpc3QgeDFcblxubGV0IGJpbl9saXN0IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbGlzdCBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2xpc3QgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbGlzdCBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImFycmF5XCIgKilcbmxldCBiaW5fd3JpdGVyX2FycmF5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9hcnJheSBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfYXJyYXkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9hcnJheSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9hcnJheSBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9hcnJheSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9hcnJheSB4MVxuXG5sZXQgYmluX2FycmF5IGJpbl9lbCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYXJyYXkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9hcnJheSBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9hcnJheSBiaW5fZWwucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMiBcImhhc2h0YmxcIiAqKVxubGV0IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fd3JpdGVyX2VsMSBiaW5fd3JpdGVyX2VsMiA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2hhc2h0YmwgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICBXcml0ZS5iaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS53cml0ZSBiaW5fd3JpdGVyX2VsMi53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEucmVhZCBiaW5fcmVhZGVyX2VsMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJoYXNodGJsXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHgxIHgyID0gU2hhcGUuYmluX3NoYXBlX2hhc2h0YmwgeDEgeDJcblxubGV0IGJpbl9oYXNodGJsIGJpbl9lbDEgYmluX2VsMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaGFzaHRibCBiaW5fZWwxLnNoYXBlIGJpbl9lbDIuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2hhc2h0YmwgYmluX2VsMS53cml0ZXIgYmluX2VsMi53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX2VsMS5yZWFkZXIgYmluX2VsMi5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDMyX3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQzMl92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0MzJfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDMyX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQzMl92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5cbmxldCBiaW5fZmxvYXQzMl92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJmbG9hdDY0X3ZlY1wiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXQ2NF92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0NjRfdmVjIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDY0X3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXQ2NF92ZWNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfdmVjID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJ2ZWNcIiAqKVxubGV0IGJpbl93cml0ZXJfdmVjID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV92ZWM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZlYyB9XG5sZXQgYmluX3JlYWRlcl92ZWMgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3ZlYzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgfVxubGV0IGJpbl9zaGFwZV92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfdmVjXG5sZXQgYmluX3ZlYyA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdmVjOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3ZlYzsgcmVhZGVyID0gYmluX3JlYWRlcl92ZWMgfVxuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl9tYXRcblxubGV0IGJpbl9mbG9hdDMyX21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfbWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9mbG9hdDY0X21hdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF9tYXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X21hdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm1hdFwiICopXG5sZXQgYmluX3dyaXRlcl9tYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX21hdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbWF0IH1cbmxldCBiaW5fcmVhZGVyX21hdCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbWF0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJtYXRcIiB9XG5sZXQgYmluX3NoYXBlX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fbWF0ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9tYXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfbWF0OyByZWFkZXIgPSBiaW5fcmVhZGVyX21hdCB9XG5cbigqJCBta19iYXNlIFwiYmlnc3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfYmlnc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmcgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9iaWdzdHJpbmc7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gU2hhcGUuYmluX3NoYXBlX2JpZ3N0cmluZ1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfYmlnc3RyaW5nXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9iaWdzdHJpbmdcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2JpZ3N0cmluZ1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0YXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfZmxvYXRhcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheSB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0YXJyYXlcblxubGV0IGJpbl9mbG9hdGFycmF5ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdGFycmF5XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdGFycmF5XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdGFycmF5XG4gIH1cbjs7XG5cbigqJCopXG5cbigqJCBta19iYXNlIFwidmFyaWFudF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfdmFyaWFudF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZhcmlhbnRfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV92YXJpYW50X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl92YXJpYW50X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmFyaWFudF9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInZhcmlhbnRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IFNoYXBlLmJpbl9zaGFwZV92YXJpYW50X2ludFxuXG5sZXQgYmluX3ZhcmlhbnRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV92YXJpYW50X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdmFyaWFudF9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzhiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzhiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF84Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfOGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfOGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzhiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF84Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfOGJpdFxuXG5sZXQgYmluX2ludF84Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfOGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzhiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF84Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzE2Yml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8xNmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzE2Yml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMTZiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzE2Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMTZiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8xNmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8xNmJpdFxuXG5sZXQgYmluX2ludF8xNmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzE2Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMTZiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8xNmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF8zMmJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfMzJiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF8zMmJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzMyYml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF8zMmJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzMyYml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfMzJiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfMzJiaXRcblxubGV0IGJpbl9pbnRfMzJiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF8zMmJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzMyYml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfMzJiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfNjRiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzY0Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfNjRiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfNjRiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzY0Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzY0Yml0XG5cbmxldCBiaW5faW50XzY0Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfNjRiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF82NGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzY0Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRfYml0c1wiICopXG5sZXQgYmluX3dyaXRlcl9pbnQ2NF9iaXRzID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnQ2NF9iaXRzOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NF9iaXRzIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0X2JpdHMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludDY0X2JpdHM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludDY0X2JpdHNcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBTaGFwZS5iaW5fc2hhcGVfaW50NjRfYml0c1xuXG5sZXQgYmluX2ludDY0X2JpdHMgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0X2JpdHNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0X2JpdHNcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0X2JpdHNcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMTZfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmsxNl9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcmsxNl9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmsxNl9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazE2X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazE2X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG5cbmxldCBiaW5fbmV0d29yazE2X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazE2X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazE2X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazE2X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmszMl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazMyX2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMzJfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludDMyXCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazMyX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMzJfaW50MzJcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMzJfaW50MzJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrMzJfaW50MzJcblxubGV0IGJpbl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrNjRfaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcms2NF9pbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazY0X2ludCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG5cbmxldCBiaW5fbmV0d29yazY0X2ludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazY0X2ludFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnQ2NFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX25ldHdvcms2NF9pbnQ2NDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfbmV0d29yazY0X2ludDY0XG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibmV0d29yazY0X2ludDY0XCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazY0X2ludDY0XG5cbmxldCBiaW5fbmV0d29yazY0X2ludDY0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0XG4gIH1cbjs7XG5cbigqJCopXG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5sZXQgY252X3dyaXRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gdHBfY2xhc3Muc2l6ZSAoY252IHYpKVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IHRwX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIChjbnYgdikpXG4gIH1cbjs7XG5cbmxldCBjbnZfcmVhZGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGNudiAodHBfY2xhc3MucmVhZCBidWYgfnBvc19yZWYpKVxuICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIHZ0YWcgLT4gY252ICh0cF9jbGFzcy52dGFnX3JlYWQgYnVmIH5wb3NfcmVmIHZ0YWcpKVxuICB9XG47O1xuXG5sZXQgY252IGZvcl9zaGFwZSBmb3Jfd3JpdGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MgPVxuICB7IHNoYXBlID0gZm9yX3NoYXBlIHRwX2NsYXNzLnNoYXBlXG4gIDsgd3JpdGVyID0gY252X3dyaXRlciBmb3Jfd3JpdGVyIHRwX2NsYXNzLndyaXRlclxuICA7IHJlYWRlciA9IGNudl9yZWFkZXIgZm9yX3JlYWRlciB0cF9jbGFzcy5yZWFkZXJcbiAgfVxuOztcbiIsIigqIEJpbmFibGU6IHNpZ25hdHVyZXMgZGVmaW5pbmcgZ2VuZXJhdGVkIGZ1bmN0aW9ucyBmb3IgdGhlIGJpbmFyeSBwcm90b2NvbC5cbiAgIFtTLCBTMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgc2F0aXNmaWVkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZSBhbmRcbiAgIFtNaW5pbWFsLlMsIE1pbmltYWwuUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHRoYXQgZ2VuZXJhdGVkIGNvZGUgdXNlcy4gKilcblxuKCogdGhlIHN1YnNldCBvZiBTIGNvbnRhaW5pbmcgb25seSBmdW5jdGlvbnMsIHNvIHRoYXQgb25lIGNhbiByZWN1cnNpdmVseSBkZWZpbmUgbW9kdWxlc1xuICAgaW1wbGVtZW50aW5nIHRoaXMgaW50ZXJmYWNlICopXG5tb2R1bGUgdHlwZSBTX29ubHlfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuXG4gICgqKlxuICAgICBUaGlzIGZ1bmN0aW9uIG9ubHkgbmVlZHMgaW1wbGVtZW50YXRpb24gaWYgW3RdIGV4cG9zZWQgdG8gYmUgYSBwb2x5bW9ycGhpYyB2YXJpYW50LlxuICAgICBEZXNwaXRlIHdoYXQgdGhlIHR5cGUgcmVhZHMsIHRoaXMgZG9lcyAqbm90KiBwcm9kdWNlIGEgZnVuY3Rpb24gYWZ0ZXIgcmVhZGluZztcbiAgICAgaW5zdGVhZCBpdCB0YWtlcyB0aGUgY29uc3RydWN0b3IgdGFnIChpbnQpIGJlZm9yZSByZWFkaW5nIGFuZCByZWFkcyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgdmFyaWFudCBbdF0gYWZ0ZXJ3YXJkcy5cbiAgKilcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgaW5jbHVkZSBTX29ubHlfZnVuY3Rpb25zIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gIHZhbCBiaW5fd3JpdGVyX3QgOiB0IFR5cGVfY2xhc3Mud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiB0IFR5cGVfY2xhc3MucmVhZGVyXG4gIHZhbCBiaW5fdCA6IHQgVHlwZV9jbGFzcy50XG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnRcbmVuZFxuXG5tb2R1bGUgTWluaW1hbCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICAgIHZhbCBiaW5fcmVhZF90IDogdCBSZWFkLnJlYWRlclxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYSB0KSBTaXplLnNpemVyMVxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsIGludCAtPiAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFdyaXRlLndyaXRlcjJcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICBlbmRcbmVuZFxuIiwiKCogVXRpbHM6IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2VyIGNvbnZlbmllbmNlICopXG5cbm9wZW4gQ29tbW9uXG5vcGVuIFNpemVcbm9wZW4gVHlwZV9jbGFzc1xuaW5jbHVkZSBVdGlsc19pbnRmXG5cbmxldCBzaXplX2hlYWRlcl9sZW5ndGggPSA4XG5sZXQgYmluX3dyaXRlX3NpemVfaGVhZGVyID0gV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdFxubGV0IGJpbl9yZWFkX3NpemVfaGVhZGVyID0gUmVhZC5iaW5fcmVhZF9pbnRfNjRiaXRcblxubGV0IGJpbl9kdW1wID8oaGVhZGVyID0gZmFsc2UpIHdyaXRlciB2ID1cbiAgbGV0IGJ1ZiwgcG9zLCBwb3NfbGVuID1cbiAgICBsZXQgdl9sZW4gPSB3cml0ZXIuc2l6ZSB2IGluXG4gICAgaWYgaGVhZGVyXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdG90X2xlbiA9IHZfbGVuICsgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB0b3RfbGVuIGluXG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zOjAgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgcG9zLCBwb3MgKyB2X2xlbilcbiAgICBlbHNlIChcbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHZfbGVuIGluXG4gICAgICBidWYsIDAsIHZfbGVuKVxuICBpblxuICBsZXQgcG9zID0gd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgaWYgcG9zID0gcG9zX2xlblxuICB0aGVuIGJ1ZlxuICBlbHNlIGZhaWx3aXRoIFwiQmluX3Byb3QuVXRpbHMuYmluX2R1bXA6IHNpemUgY2hhbmdlZCBkdXJpbmcgd3JpdGluZ1wiXG47O1xuXG4oKiBSZWFkaW5nIGZyb20gc3RyZWFtcyAqKVxuXG5sZXQgYmluX3JlYWRfc3RyZWFtID9tYXhfc2l6ZSB+cmVhZCByZWFkZXIgPVxuICBsZXQgYnVmID0gY3JlYXRlX2J1ZiBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgcmVhZCBidWYgfnBvczowIH5sZW46c2l6ZV9oZWFkZXJfbGVuZ3RoO1xuICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gIGxldCBsZW4gPSBiaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgbWF0Y2ggbWF4X3NpemUgd2l0aFxuICB8IFNvbWUgbWF4X3NpemUgd2hlbiBsZW4gPiBtYXhfc2l6ZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBzaXplIGV4Y2VlZHMgbWF4X3NpemU6ICVkID4gJWRcIlxuICAgICAgICAgbGVuXG4gICAgICAgICBtYXhfc2l6ZSlcbiAgfCBfIC0+XG4gICAgbGV0IGJ1ZiA9IGlmIGxlbiA+IHNpemVfaGVhZGVyX2xlbmd0aCB0aGVuIGNyZWF0ZV9idWYgbGVuIGVsc2UgYnVmIGluXG4gICAgcmVhZCBidWYgfnBvczowIH5sZW47XG4gICAgcG9zX3JlZiA6PSAwO1xuICAgIGxldCByZXMgPSByZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBpZiAhcG9zX3JlZiA9IGxlblxuICAgIHRoZW4gcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbXNnID1cbiAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogcHJvdG9jb2wgbGllZCBhYm91dCBsZW5ndGggb2YgdmFsdWU6IGV4cGVjdGVkIFxcXG4gICAgICAgICAgICVkLCByZWNlaXZlZCAlZFwiXG4gICAgICAgICAgbGVuXG4gICAgICAgICAgIXBvc19yZWZcbiAgICAgIGluXG4gICAgICBmYWlsd2l0aCBtc2cpXG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubW9kdWxlIE9mX21pbmltYWwgKFMgOiBCaW5hYmxlLk1pbmltYWwuUykgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubGV0IG1heWJlX2Fubm90YXRlX3NoYXBlIG1heWJlX3V1aWQgc2hhcGUgPVxuICBtYXRjaCBtYXliZV91dWlkIHdpdGhcbiAgfCBOb25lIC0+IHNoYXBlXG4gIHwgU29tZSB1dWlkIC0+IFNoYXBlLmFubm90YXRlIHV1aWQgc2hhcGVcbjs7XG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgT2ZfbWluaW1hbCAoc3RydWN0XG4gICAgICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gICAgICB0eXBlIHQgPSBTLnRcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgQi5iaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IEIuYmluX3NpemVfdCAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9IEIuYmluX3dyaXRlX3QgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID0gUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmKVxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuID0gUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbCA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGUgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHkgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsIHQgPSBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwgKFMudG9fYmluYWJsZSB0KVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTEuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMi5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM19nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiBiaW5fc2hhcGVfZWwzKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLl9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aF91dWlkX3NwZWMpID0gTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5sZXQgd2l0aF9tb2R1bGVfbmFtZSBmIH5tb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lID1cbiAgbWF0Y2ggbW9kdWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gZiBmdW5jdGlvbl9uYW1lXG4gIHwgU29tZSBtb2R1bGVfbmFtZSAtPiBQcmludGYua3NwcmludGYgZiBcIiVzLiVzXCIgbW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uID0gd2l0aF9tb2R1bGVfbmFtZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvblxuXG5sZXQgcmFpc2VfcmVhZF90b29fbXVjaCA9XG4gIHdpdGhfbW9kdWxlX25hbWVcbiAgICAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IHRyaWVkIHRvIHJlYWQgbW9yZSBlbGVtZW50cyB0aGFuIGF2YWlsYWJsZVwiKVxuOztcblxubGV0IHJhaXNlX3JlYWRfbm90X2Vub3VnaCA9XG4gIHdpdGhfbW9kdWxlX25hbWUgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiBkaWRuJ3QgcmVhZCBhbGwgZWxlbWVudHNcIilcbjs7XG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGVfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiNjU5MjM3MWEtNDk5NC0xMWU2LTkyM2EtNzc0OGU0MTgyNzY0XCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImFjOGE5ZmY0LTQ5OTQtMTFlNi05YTFiLTlmYjRlOTMzYmQ5ZFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0IF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiBfbiAtPiBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIF9uKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlMl9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJiNGU1NGFkMi00OTk0LTExZTYtYjhkZi04N2MyOTk3ZjlmNTJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMyAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTNfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyIHQzID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiZjIxMTJlZGEtZTdkNy0xMWU2LWJiMzYtMDcyZTljZTE1OWRiXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIHQzIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2Jpbl9yZWFkX2IgX2Jpbl9yZWFkX2MgX2J1ZiB+cG9zX3JlZiBfbiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYgbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG4iLCIoKipcbiAgIFRoaXMgbW9kdWxlIGRlZmluZXMgZGVmYXVsdCBjb252ZXJ0ZXJzIGZvciB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aGUgT0NhbWxcbiAgIHN0YW5kYXJkIGxpYnJhcnkuXG4qKVxuXG5pbmNsdWRlIFNpemVcblxubGV0IGJpbl91bml0ID0gVHlwZV9jbGFzcy5iaW5fdW5pdFxubGV0IGJpbl9zaGFwZV91bml0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfdW5pdFxubGV0IGJpbl93cml0ZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl91bml0XG5sZXQgYmluX3dyaXRlX3VuaXQgPSBXcml0ZS5iaW5fd3JpdGVfdW5pdFxubGV0IGJpbl9yZWFkZXJfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl91bml0XG5sZXQgYmluX3JlYWRfdW5pdCA9IFJlYWQuYmluX3JlYWRfdW5pdFxuXG5sZXQgX19iaW5fcmVhZF91bml0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ1bml0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYm9vbCA9IFR5cGVfY2xhc3MuYmluX2Jvb2xcbmxldCBiaW5fc2hhcGVfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Jvb2xcbmxldCBiaW5fd3JpdGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYm9vbFxubGV0IGJpbl93cml0ZV9ib29sID0gV3JpdGUuYmluX3dyaXRlX2Jvb2xcbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYm9vbFxubGV0IGJpbl9yZWFkX2Jvb2wgPSBSZWFkLmJpbl9yZWFkX2Jvb2xcblxubGV0IF9fYmluX3JlYWRfYm9vbF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYm9vbFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3N0cmluZ1xubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9zdHJpbmdcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9zdHJpbmdcbmxldCBiaW5fd3JpdGVfc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZ1xubGV0IGJpbl9yZWFkX3N0cmluZyA9IFJlYWQuYmluX3JlYWRfc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9ieXRlc1xubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2J5dGVzXG5sZXQgYmluX3dyaXRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ieXRlc1xubGV0IGJpbl93cml0ZV9ieXRlcyA9IFdyaXRlLmJpbl93cml0ZV9ieXRlc1xubGV0IGJpbl9yZWFkZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYnl0ZXNcbmxldCBiaW5fcmVhZF9ieXRlcyA9IFJlYWQuYmluX3JlYWRfYnl0ZXNcblxubGV0IF9fYmluX3JlYWRfYnl0ZXNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fY2hhciA9IFR5cGVfY2xhc3MuYmluX2NoYXJcbmxldCBiaW5fc2hhcGVfY2hhciA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2NoYXJcbmxldCBiaW5fd3JpdGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfY2hhclxubGV0IGJpbl93cml0ZV9jaGFyID0gV3JpdGUuYmluX3dyaXRlX2NoYXJcbmxldCBiaW5fcmVhZGVyX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfY2hhclxubGV0IGJpbl9yZWFkX2NoYXIgPSBSZWFkLmJpbl9yZWFkX2NoYXJcblxubGV0IF9fYmluX3JlYWRfY2hhcl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiY2hhclwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludCA9IFR5cGVfY2xhc3MuYmluX2ludFxubGV0IGJpbl9zaGFwZV9pbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5fd3JpdGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9pbnRcbmxldCBiaW5fd3JpdGVfaW50ID0gV3JpdGUuYmluX3dyaXRlX2ludFxubGV0IGJpbl9yZWFkZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludFxubGV0IGJpbl9yZWFkX2ludCA9IFJlYWQuYmluX3JlYWRfaW50XG5sZXQgX19iaW5fcmVhZF9pbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImludFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0XG5sZXQgYmluX3JlYWRfZmxvYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdGFycmF5XG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRlcl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5ID0gUmVhZC5iaW5fcmVhZF9mbG9hdGFycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0YXJyYXlfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1kNV9saWJcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBTaGFwZS5iYXNldHlwZSAoU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJmNmJkY2RkMC05Zjc1LTExZTYtOWE3ZS1kMzAyMDQyOGVmZWRcIikgW11cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxuICAgIGxldCBiaW5fd3JpdGVfdCA9IFdyaXRlLmJpbl93cml0ZV9tZDVcbiAgICBsZXQgYmluX3JlYWRfdCA9IFJlYWQuYmluX3JlYWRfbWQ1XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gICAgICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiU2hhcGUuTWQ1LnRcIiAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgKCogd2UgYXNzdW1lIHRoaXMgdHlwZSB0byBoYXZlIGEgc3RhYmxlIGZvcm1hdCAqKVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG4iLCJvcGVuIENvbW1vblxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMjU1N2UtNDkwYS0xMWU2LTk4YWMtNGI4OTUzZDUyNWZlXCIpIFsgdCBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJpbl9zaXplX2EgYVxuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBidWYgfnBvcyBhID1cbiAgICBsZXQgc3RhcnRfYSA9IHBvcyArIFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgIGxldCBlbmRfYSA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zOnN0YXJ0X2EgYSBpblxuICAgIGxldCBzaXplID0gZW5kX2EgLSBzdGFydF9hIGluXG4gICAgbGV0IHdyaXR0ZW4gPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgIGFzc2VydCAod3JpdHRlbiA9IHN0YXJ0X2EpO1xuICAgIGVuZF9hXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBleHBlY3RlZF9zaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IHN0YXJ0X2EgPSAhcG9zX3JlZiBpblxuICAgIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgZW5kX2EgPSAhcG9zX3JlZiBpblxuICAgIGlmIGVuZF9hIC0gc3RhcnRfYSA8PiBleHBlY3RlZF9zaXplXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgIFwiQmluX3Byb3QuQmxvYi5iaW5fcmVhZF90OiBzaXplICglZCkgPD4gZXhwZWN0ZWQgKCVkKVwiXG4gICAgICAgICAgIChlbmRfYSAtIHN0YXJ0X2EpXG4gICAgICAgICAgIGV4cGVjdGVkX3NpemUpO1xuICAgIGFcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLnRcIiAhcG9zX3JlZlxuICA7O1xuZW5kXG5cbnR5cGUgJ2EgaWQgPSAnYVxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBVdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBUXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBvZl9iaW5hYmxlIHQgPSB0XG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRcbiAgZW5kKVxuXG5tb2R1bGUgT3BhcXVlID0gc3RydWN0XG4gICgqIFtCaWdzdHJpbmddIGFuZCBbU3RyaW5nXSBzaGFyZSBbYmluX3NoYXBlX3RdIGJlY2F1c2UgdGhleSBoYXZlIGV4YWN0bHkgdGhlIHNhbWVcbiAgICAgc2VyaWFsaXphdGlvbiBmb3JtYXQgYW5kIHRoZXkgZGVub3RlIHRoZSBzYW1lIHZhbHVlcy5cblxuICAgICBJbiBmYWN0IGFsbW9zdCBjZXJ0YWlubHkgW0Jsb2IudF0gaXRzZWxmIHNob3VsZCBoYXZlIHRoZSBzYW1lIGJpbl9zaGFwZV90IGFzIHdlbGwuICopXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTFmNzZlLTQ5MGEtMTFlNi04NmE5LTViZWY1ODVmMjYwMlwiKSBbXSlcbiAgOztcblxuICBtb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gICAgKCogW2J1Zl0gaXMgdGhlIGJpbi1pbyBkYXRhIGV4Y2x1ZGluZyB0aGUgc2l6ZSBoZWFkZXIuIFdoZW4gKGRlLSlzZXJpYWxpemVkLCB0aGUgc2l6ZVxuICAgICAgIGhlYWRlciBpcyBpbmNsdWRlZC4gKilcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYnVmXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYnVmX2xlbiB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBidWZfbGVuIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyBzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZV9idWYgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3BvczohcG9zX3JlZiB+ZHN0OnQgfmRzdF9wb3M6MCBzaXplO1xuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgdG9fb3BhcXVlIGJsb2IgYmluX3dyaXRlciA9IFV0aWxzLmJpbl9kdW1wIGJpbl93cml0ZXIgYmxvYlxuICAgIGxldCBvZl9vcGFxdWVfZXhuICh0IDogdCkgYmluX3JlYWRlciA9IGJpbl9yZWFkZXIuVHlwZV9jbGFzcy5yZWFkIHQgfnBvc19yZWY6KHJlZiAwKVxuXG4gICAgKCogQmlnc3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogYnVmIC0+IGJ1ZiAtPiBpbnQpXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgUHB4X3NleHBfY29udl9saWIuU2V4cC5BdG9tIChvZl9vcGFxdWVfZXhuIHQgVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3N0cmluZylcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIFN0cmluZy5sZW5ndGggdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgfnNyY19wb3M6MCBidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgIGJsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBsZW4gPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zOiFwb3NfcmVmIH5sZW4gaW5cbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIGxlbjtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLk9wYXF1ZS50XCIgIXBvc19yZWZcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFV0aWxzLk9mX21pbmltYWwgKFQpXG5cbiAgICBsZXQgbGVuZ3RoIHQgPSBTdHJpbmcubGVuZ3RoIHRcblxuICAgIGxldCB0b19vcGFxdWUgfmJ1ZiB2IGJpbl93cml0ZXJfdiA6IHQgPVxuICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgIGxldCBsZW4gPSBiaW5fd3JpdGVyX3YuVHlwZV9jbGFzcy53cml0ZSBidWYgfnBvcyB2IGluXG4gICAgICBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gfmJ1ZiAodCA6IHQpIGJpbl9yZWFkZXJfdiA9XG4gICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gICAgICBDb21tb24uYmxpdF9zdHJpbmdfYnVmIHQgYnVmIH5sZW47XG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzID0gYmluX3JlYWRlcl92LlR5cGVfY2xhc3MucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgIGlmICFwb3NfcmVmIDw+IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgIFwiT3BhcXVlIGJsb2IgaGFzICVkIGJ5dGVzIGJ1dCBbb2Zfb3BhcXVlX2V4bl0gcmVhZCAlZFwiXG4gICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICFwb3NfcmVmXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIGVycm9yKVxuICAgICAgZWxzZSByZXNcbiAgICA7O1xuXG4gICAgKCogU3RyaW5ncyBhcmUgYSBwcmltaXRpdmUgdHlwZSB0aGF0IHBvbHltb3JwaGljIGNvbXBhcmUgaGFuZGxlcyB3ZWxsLiAqKVxuICAgIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IFBweF9zZXhwX2NvbnZfbGliLkNvbnYuc2V4cF9vZl9zdHJpbmdcbiAgZW5kXG5lbmRcblxubW9kdWxlIElnbm9yZWQgPSBzdHJ1Y3RcbiAgKCogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIGlnbm9yZWQgdmFsdWUgaXMganVzdCB0aGUgc2l6ZSBvZiB0aGUgdmFsdWUgaXQgd2FzIGNyZWF0ZWRcbiAgICAgZnJvbSAoaS5lLiwgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgaWdub3JlZCBmcm9tIHRoZSBidWZmZXIgd2Ugd2VyZSByZWFkaW5nXG4gICAgIC0tIHdlIGV4Y2x1ZGUgdGhlIDggYnl0ZSBzaXplIGhlYWRlciBmcm9tIHdoaWNoIHRoZSBzaXplIHdhcyByZWFkKS4gKilcbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IGJpbl9zaXplX3Qgc2l6ZSA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIHNpemVcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgc2l6ZVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5CbG9iLklnbm9yZWQudFwiICFwb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gc2lnXG4gIHZhbCBwcmVfdGVzdF9ob29rIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IHByZV90ZXN0X2hvb2sgPSBpZ25vcmVcbiIsIlslJWltcG9ydCBcImNvbmZpZy5oXCJdXG5cbm9wZW4hIEJhc2VcblxuWyUlaWZkZWYgSlNDX0FSQ0hfU0lYVFlGT1VSXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuW0BAbm9hbGxvY11cblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcblxuWyUlZW5kaWZdXG5bJSVpZmRlZiBKU0NfUE9TSVhfVElNRVJTXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBmYWlsZWRcIlxuXG5bJSVlbHNlXVxuXG5sZXRbQGNvbGRdIGdldHRpbWVfZmFpbGVkICgpID0gZmFpbHdpdGggXCJnZXR0aW1lb2ZkYXkgZmFpbGVkXCJcblxuWyUlZW5kaWZdXG5cbmxldCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpID1cbiAgbGV0IHQgPSBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8gKCkgaW5cbiAgaWYgSW50NjMuKCA8PiApIHQgSW50NjMuemVybyB0aGVuIHQgZWxzZSBnZXR0aW1lX2ZhaWxlZCAoKVxuOztcbiIsIm1vZHVsZSBUZXN0X3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3VjY2Vzc1xuICAgIHwgRmFpbHVyZVxuICAgIHwgRXJyb3JcblxuICBsZXQgdG9fZXhpdF9jb2RlID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gMFxuICAgIHwgRmFpbHVyZSAtPiAyXG4gICAgfCBFcnJvciAtPiAxXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdWNjZXNzIC0+IFwic3VjY2Vzc1wiXG4gICAgfCBGYWlsdXJlIC0+IFwiZmFpbHVyZVwiXG4gICAgfCBFcnJvciAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICAgIHwgRXJyb3IsIF8gfCBfLCBFcnJvciAtPiBFcnJvclxuICAgIHwgRmFpbHVyZSwgXyB8IF8sIEZhaWx1cmUgLT4gRmFpbHVyZVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2FsbCB0cyA9IExpc3QuZm9sZF9sZWZ0IGNvbWJpbmUgU3VjY2VzcyB0c1xuZW5kXG5cbmxldCBwYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyA9XG4gIHRyeSBBcmcucGFyc2VfYXJndiBhcmd2IGwgZiBtc2cgd2l0aFxuICB8IEFyZy5CYWQgbXNnIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCIlc1wiIG1zZztcbiAgICBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT5cbiAgICBQcmludGYucHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgZXhpdCAwXG47O1xuXG50eXBlIGRlc2NyID0gc3RyaW5nXG5cbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG5cbnR5cGUgZmlsZW5hbWUgPSBzdHJpbmdcbnR5cGUgbGluZV9udW1iZXIgPSBpbnRcbnR5cGUgc3RhcnRfcG9zID0gaW50XG50eXBlIGVuZF9wb3MgPSBpbnRcbnR5cGUgY29uZmlnID0gKG1vZHVsZSBJbmxpbmVfdGVzdF9jb25maWcuUylcblxudHlwZSAnYSB0ZXN0X2Z1bmN0aW9uX2FyZ3MgPVxuICBjb25maWc6Y29uZmlnXG4gIC0+IGRlc2NyOmRlc2NyIExhenkudFxuICAtPiB0YWdzOnN0cmluZyBsaXN0XG4gIC0+IGZpbGVuYW1lOmZpbGVuYW1lXG4gIC0+IGxpbmVfbnVtYmVyOmxpbmVfbnVtYmVyXG4gIC0+IHN0YXJ0X3BvczpzdGFydF9wb3NcbiAgLT4gZW5kX3BvczplbmRfcG9zXG4gIC0+ICdhXG5cbm1vZHVsZSBUYWdfcHJlZGljYXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByZXF1aXJlZF90YWdzIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBpbml0aWFsID0geyByZXF1aXJlZF90YWdzID0gW107IGRyb3BwZWRfdGFncyA9IFsgXCJkaXNhYmxlZFwiIF0gfVxuXG4gIGxldCBkcm9wIHQgdGFnID1cbiAgICB7IGRyb3BwZWRfdGFncyA9IHRhZyA6OiB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IExpc3QuZmlsdGVyICgoIDw+ICkgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCggPD4gKSB0YWcpIHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gdGFnIDo6IHQucmVxdWlyZWRfdGFnc1xuICAgIH1cbiAgOztcblxuICBsZXQgZW50aXJlX21vZHVsZV9kaXNhYmxlZCB0IH5wYXJ0aWFsX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcblxuICBsZXQgZGlzYWJsZWQgdCB+Y29tcGxldGVfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHJlcSAtPiBub3QgKExpc3QubWVtIHJlcSB0YWdzKSkgdC5yZXF1aXJlZF90YWdzXG4gICAgfHwgTGlzdC5leGlzdHMgKGZ1biBkcm9wcGVkIC0+IExpc3QubWVtIGRyb3BwZWQgdGFncykgdC5kcm9wcGVkX3RhZ3NcbiAgOztcbmVuZFxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG5cbnR5cGUgdGVzdF9tb2RlID1cbiAgeyB3aGljaF90ZXN0cyA6IHdoaWNoX3Rlc3RzXG4gIDsgd2hhdF90b19kbyA6IFsgYFJ1bl9wYXJ0aXRpb24gb2Ygc3RyaW5nIG9wdGlvbiB8IGBMaXN0X3BhcnRpdGlvbnMgXVxuICB9XG5cbm1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgdHlwZSB0ID1cbiAgICBbIGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gICAgXVxuXG4gIHZhbCBnZXQgOiB1bml0IC0+IHRcbiAgdmFsIHNldCA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgSWdub3JlXG4gICAgfCBgVGVzdF9tb2RlIG9mIHRlc3RfbW9kZVxuICAgIF1cblxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuXG4gIGxldCBmb3JjZV9kcm9wID1cbiAgICB0cnlcbiAgICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7XG4gICAgICB0cnVlXG4gICAgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBjb21waWxpbmcgdG8gamF2YXNjcmlwdC5cbiAgICAgICBKc19vZl9vY2FtbCBjYW4gc3RhdGljYWxseSBldmFsdWF0ZSBbU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIl1cbiAgICAgICBhbmQgaW5saW5lIHRoZSByZXN1bHQgKFtgSWdub3JlXSkgd2hlbmV2ZXIgW2dldCAoKV0gaXMgY2FsbGVkLlxuICAgICAgIFVuaXQgdGVzdHMgY2FuIHRoZW4gYmUgdHJlYXRlZCBhcyBkZWFkY29kZSBzaW5jZSB0aGUgYXJndW1lbnQgW2ZdIG9mIHRoZSBbdGVzdF1cbiAgICAgICBmdW5jdGlvbiBiZWxvdyBpcyBuZXZlciB1c2VkLiAqKVxuICAgIGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgIWFjdGlvblxuICA7O1xuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiXG4gIGxldCBzZXRfY3VycmVudCB4ID0gY3VycmVudCA6PSB4XG5cbiAgbGV0IGZvdW5kX3Rlc3QgKCkgPVxuICAgIGlmICFjdXJyZW50IDw+IFwiXCIgJiYgbm90IChIYXNodGJsLm1lbSBhbGwgIWN1cnJlbnQpIHRoZW4gSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG5cbiAgbGV0IGlzX2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIHAgLT4gcCA9ICFjdXJyZW50XG4gIDs7XG5cbiAgbGV0IGFsbCAoKSA9IExpc3Quc29ydCBTdHJpbmcuY29tcGFyZSAoSGFzaHRibC5mb2xkIChmdW4gayAoKSBhY2MgLT4gayA6OiBhY2MpIGFsbCBbXSlcbmVuZFxuXG5tb2R1bGUgTW9kdWxlX2NvbnRleHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG9uZV9tb2R1bGUgPVxuICAgICAgeyBkZXNjciA6IHN0cmluZ1xuICAgICAgOyB0YWdzIDogc3RyaW5nIGxpc3RcbiAgICAgIH1cblxuICAgIHR5cGUgdCA9IG9uZV9tb2R1bGUgbGlzdFxuXG4gICAgbGV0IGRlc2NyIHQgPSBMaXN0Lm1hcCAoZnVuIG0gLT4gbS5kZXNjcikgdFxuICAgIGxldCB0YWdzIHQgPSBMaXN0LmNvbmNhdCAoTGlzdC5tYXAgKGZ1biBtIC0+IG0udGFncykgdClcbiAgZW5kXG5cbiAgbGV0IGN1cnJlbnQgOiBULnQgcmVmID0gcmVmIFtdXG5cbiAgbGV0IHdpdGhfIH5kZXNjciB+dGFncyBmID1cbiAgICBsZXQgcHJldiA9ICFjdXJyZW50IGluXG4gICAgY3VycmVudCA6PSB7IFQuZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aFxuICAgIHwgZSAtPlxuICAgICAgY3VycmVudCA6PSBwcmV2O1xuICAgICAgcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjdXJyZW50X2Rlc2NyICgpID0gVC5kZXNjciAhY3VycmVudFxuICBsZXQgY3VycmVudF90YWdzICgpID0gVC50YWdzICFjdXJyZW50XG5lbmRcblxubGV0IHZlcmJvc2UgPSByZWYgZmFsc2VcbmxldCBzdHJpY3QgPSByZWYgZmFsc2VcbmxldCBzaG93X2NvdW50cyA9IHJlZiBmYWxzZVxubGV0IGxpc3RfdGVzdF9uYW1lcyA9IHJlZiBmYWxzZVxubGV0IGRlbGF5ZWRfZXJyb3JzID0gcmVmIFtdXG5sZXQgc3RvcF9vbl9lcnJvciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBOb25lXG5sZXQgdGltZV9zZWMgPSByZWYgMC5cbmxldCB1c2VfY29sb3IgPSByZWYgdHJ1ZVxubGV0IGluX3BsYWNlID0gcmVmIGZhbHNlXG5sZXQgZGlmZl9jb21tYW5kID0gcmVmIE5vbmVcbmxldCBzb3VyY2VfdHJlZV9yb290ID0gcmVmIE5vbmVcbmxldCBkaWZmX3BhdGhfcHJlZml4ID0gcmVmIE5vbmVcblxubGV0IGRpc3BsYXllZF9kZXNjciBkZXNjciBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgbGV0IChsYXp5IGRlc2NyKSA9IGRlc2NyIGluXG4gIFByaW50Zi5zcHJpbnRmXG4gICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lXG4gICAgbGluZVxuICAgIHN0YXJ0X3Bvc1xuICAgIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxuOztcblxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeVxuICAgIFNvbWVcbiAgICAgIChTY2FuZi5zc2NhbmZcbiAgICAgICAgIHN0clxuICAgICAgICAgXCIgRmlsZSAlUyAsIGxpbmUgJWQgLCBjaGFyYWN0ZXJzICVkIC0gJWQgJSFcIlxuICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoXG4gIHwgXyAtPlxuICAgICh0cnlcbiAgICAgICBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICUhXCIgKGZ1biBmaWxlIGxpbmUgLT4gZmlsZSwgU29tZSBsaW5lKSlcbiAgICAgd2l0aFxuICAgICB8IF8gLT5cbiAgICAgICAodHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSkgd2l0aFxuICAgICAgICB8IF8gLT4gTm9uZSkpXG47O1xuXG5sZXQgKCkgPVxuICBpZiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gICAgfCBuYW1lIDo6IFwiaW5saW5lLXRlc3QtcnVubmVyXCIgOjogbGliIDo6IHJlc3QgLT5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmluaXRpYWwgaW5cbiAgICAgIGxldCBuYW1lX2ZpbHRlciA9IHJlZiBbXSBpblxuICAgICAgcGFyc2VfYXJndlxuICAgICAgICAoQXJyYXkub2ZfbGlzdCAobmFtZSA6OiByZXN0KSlcbiAgICAgICAgKEFyZy5hbGlnblxuICAgICAgICAgICBbICggXCItbGlzdC10ZXN0LW5hbWVzXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGlzdF90ZXN0X25hbWVzIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgOj0gdHJ1ZSlcbiAgICAgICAgICAgICAsIFwiIERvIG5vdCBydW4gdGVzdHMgYnV0IHNob3cgd2hhdCB3b3VsZCBoYXZlIGJlZW4gcnVuXCIgKVxuICAgICAgICAgICA7ICggXCItbGlzdC1wYXJ0aXRpb25zXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpXG4gICAgICAgICAgICAgLCBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCIgKVxuICAgICAgICAgICA7ICggXCItcGFydGl0aW9uXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBpIC0+IHBhcnRpdGlvbiA6PSBTb21lIGkpXG4gICAgICAgICAgICAgLCBcIiBPbmx5IHJ1biB0aGUgdGVzdHMgaW4gdGhlIGdpdmVuIHBhcnRpdGlvblwiIClcbiAgICAgICAgICAgOyBcIi12ZXJib3NlXCIsIEFyZy5TZXQgdmVyYm9zZSwgXCIgU2hvdyB0aGUgdGVzdHMgYXMgdGhleSBydW5cIlxuICAgICAgICAgICA7ICggXCItc3RvcC1vbi1lcnJvclwiXG4gICAgICAgICAgICAgLCBBcmcuU2V0IHN0b3Bfb25fZXJyb3JcbiAgICAgICAgICAgICAsIFwiIFJ1biB0ZXN0cyBvbmx5IHVwIHRvIHRoZSBmaXJzdCBlcnJvciAoZG9lc24ndCB3b3JrIGZvciBleHBlY3QgdGVzdHMpXCIgKVxuICAgICAgICAgICA7IFwiLXN0cmljdFwiLCBBcmcuU2V0IHN0cmljdCwgXCIgRW5kIHdpdGggYW4gZXJyb3IgaWYgbm8gdGVzdHMgd2VyZSBydW5cIlxuICAgICAgICAgICA7IFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIlxuICAgICAgICAgICA7ICggXCItbG9nXCJcbiAgICAgICAgICAgICAsIEFyZy5Vbml0XG4gICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKHRyeSBTeXMucmVtb3ZlIFwiaW5saW5lX3Rlc3RzLmxvZ1wiIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgICAgICAgICAgICAgIGxvZyA6PSBTb21lIChvcGVuX291dCBcImlubGluZV90ZXN0cy5sb2dcIikpXG4gICAgICAgICAgICAgLCBcIiBMb2cgdGhlIHRlc3RzIHJ1biBpbiBpbmxpbmVfdGVzdHMubG9nXCIgKVxuICAgICAgICAgICA7ICggXCItZHJvcC10YWdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLmRyb3AgIXRhZ19wcmVkaWNhdGUgcylcbiAgICAgICAgICAgICAsIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIFxcXG4gICAgICAgICAgICAgICAgLXJlcXVpcmUtdGFnKVwiIClcbiAgICAgICAgICAgOyAoIFwiLXJlcXVpcmUtdGFnXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAgICAgKGZ1biBzIC0+IHRhZ19wcmVkaWNhdGUgOj0gVGFnX3ByZWRpY2F0ZS5yZXF1aXJlICF0YWdfcHJlZGljYXRlIHMpXG4gICAgICAgICAgICAgLCBcInRhZyBPbmx5IHJ1biB0ZXN0cyB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1kcm9wLXRhZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1tYXRjaGluZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlcilcbiAgICAgICAgICAgICAsIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiIClcbiAgICAgICAgICAgOyAoIFwiLW9ubHktdGVzdFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBwYXJzZV9kZXNjciBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKGZpbGUsIGluZGV4KSAtPiBmaWxlLCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJzonXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBTdHJpbmcuaW5kZXggcyAnOicgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXhfc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgaW5kZXhfc3RyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBcmd1bWVudCAlcyBkb2Vzbid0IGZpdCB0aGUgZm9ybWF0IGZpbGVuYW1lWzpsaW5lX251bWJlcl1cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBTb21lIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzLCBOb25lXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIHRlc3RzIDo9IChmaWxlbmFtZSwgaW5kZXgsIHJlZiBmYWxzZSkgOjogIXRlc3RzKVxuICAgICAgICAgICAgICwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbnMgY2FuIGJlIG9uZSBvZiB0aGVzZSBmb3JtczpcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCIsIGxpbmUgMjNcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIiApXG4gICAgICAgICAgIDsgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIlxuICAgICAgICAgICA7IFwiLWluLXBsYWNlXCIsIEFyZy5TZXQgaW5fcGxhY2UsIFwiIFVwZGF0ZSBleHBlY3QgdGVzdHMgaW4gcGxhY2VcIlxuICAgICAgICAgICA7ICggXCItZGlmZi1jbWRcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9jb21tYW5kIDo9IFNvbWUgcylcbiAgICAgICAgICAgICAsIFwiIERpZmYgY29tbWFuZCBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGRpZmZpbmcgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApXG4gICAgICAgICAgIDsgKCBcIi1zb3VyY2UtdHJlZS1yb290XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHNvdXJjZV90cmVlX3Jvb3QgOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWVcIiApXG4gICAgICAgICAgIDsgKCBcIi1kaWZmLXBhdGgtcHJlZml4XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfcGF0aF9wcmVmaXggOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgUHJlZml4IHRvIHByZXBlbmQgdG8gZmlsZXBhdGhzIGluIHRlc3Qgb3V0cHV0XCIgKVxuICAgICAgICAgICBdKVxuICAgICAgICAoZnVuIGFub24gLT5cbiAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlczogdW5leHBlY3RlZCBhbm9ueW1vdXMgYXJndW1lbnQgJXNcXG4lIVwiIG5hbWUgYW5vbjtcbiAgICAgICAgICAgZXhpdCAxKVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAlcyAlcyBbYXJnc11cIiBuYW1lIFwiaW5saW5lLXRlc3QtcnVubmVyXCIgbGliKTtcbiAgICAgIEFjdGlvbi5zZXRcbiAgICAgICAgKGBUZXN0X21vZGVcbiAgICAgICAgICAgeyB3aGljaF90ZXN0cyA9XG4gICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgIDsgb25seV90ZXN0X2xvY2F0aW9uID0gIXRlc3RzXG4gICAgICAgICAgICAgICA7IHdoaWNoX3RhZ3MgPSAhdGFnX3ByZWRpY2F0ZVxuICAgICAgICAgICAgICAgOyBuYW1lX2ZpbHRlciA9ICFuYW1lX2ZpbHRlclxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICAgKGlmICFsaXN0X3BhcnRpdGlvbnMgdGhlbiBgTGlzdF9wYXJ0aXRpb25zIGVsc2UgYFJ1bl9wYXJ0aXRpb24gIXBhcnRpdGlvbilcbiAgICAgICAgICAgfSlcbiAgICB8IF8gLT4gKCkpXG47O1xuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBhbV9ydW5uaW5nX2Vudl92YXIgPVxuICAoKiBmb3IgYXBwcm94aW1hdGUgY29tcGF0aWJpbGl0eSwgZ2l2ZW4gdGhhdCB0aGUgdmFyaWFibGUgaXMgbm90IGV4YWN0bHkgZXF1aXZhbGVudFxuICAgICB0byB3aGF0IFBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVCB1c2VkIHRvIGJlICopXG4gIFwiVEVTVElOR19GUkFNRVdPUktcIlxuOztcblxuKCogVGhpcyB2YWx1ZSBpcyBkZXByZWNhdGVkIGluIHByaW5jaXBsZSwgaW4gZmF2b3Igb2YgQ29yZS5hbV9ydW5uaW5nX3Rlc3QsIHNvXG4gICB3ZSdyZSBnb2luZyB0byBsaXZlIHdpdGggdGhlIHVnbHkgcGF0dGVybiBtYXRjaC4gKilcbmxldCBhbV9ydW5uaW5nID1cbiAgbWF0Y2ggU3lzLmdldGVudiBcIlBQWF9JTkxJTkVfVEVTVF9MSUJfQU1fUlVOTklOR19JTkxJTkVfVEVTVFwiIHdpdGhcbiAgfCAoXyA6IHN0cmluZykgLT5cbiAgICB0cnVlICgqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcGVvcGxlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBkaXJlY3RseSAqKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAobWF0Y2ggU3lzLmdldGVudiBhbV9ydW5uaW5nX2Vudl92YXIgd2l0aFxuICAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBmYWxzZVxuICAgICB8IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgdGVzdGluZyA9XG4gIGlmIGFtX3Rlc3RfcnVubmVyXG4gIHRoZW4gYFRlc3RpbmcgYEFtX3Rlc3RfcnVubmVyXG4gIGVsc2UgaWYgYW1fcnVubmluZ1xuICB0aGVuIGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lclxuICBlbHNlIGBOb3RfdGVzdGluZ1xuOztcblxubGV0IHdhbGxfdGltZV9jbG9ja19ucyAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKClcblxubGV0IHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UgPVxuICBsYXp5XG4gICAgKEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZVxuICAgICAgIChfX01PRFVMRV9fIF4gXCIuXCIgXiBcInRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXCIpKVxuOztcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSkgd2l0aFxuICAgIHwgZXhuIC0+IEVycm9yIChleG4sIFByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gIGluXG4gIHRpbWVfc2VjIDo9IEJhc2UuSW50NjMuKHdhbGxfdGltZV9jbG9ja19ucyAoKSAtIGJlZm9yZV9ucyB8PiB0b19mbG9hdCkgLy4gMWU5O1xuICByZXNcbjs7XG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcbjs7XG5cbmxldCBzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiXCJcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHMgLT4gXCIgIGluIFRFU1wiIF4gXCJUX01PRFVMRSBhdCBcIiBeIFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgcyBeIFwiXFxuXCIpXG4gICAgICAgKE1vZHVsZV9jb250ZXh0LmN1cnJlbnRfZGVzY3IgKCkpKVxuOztcblxubGV0IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgbCA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyX29wdCwgdXNlZCkgLT5cbiAgICAgICBsZXQgcG9zaXRpb25fc3RhcnQgPSBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICAgICBsZXQgZm91bmQgPVxuICAgICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMFxuICAgICAgICAgJiZcbiAgICAgICAgIGxldCBlbmRfb2ZfZGVmX2ZpbGVuYW1lID1cbiAgICAgICAgICAgU3RyaW5nLnN1YiBkZWZfZmlsZW5hbWUgcG9zaXRpb25fc3RhcnQgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpXG4gICAgICAgICBpblxuICAgICAgICAgZW5kX29mX2RlZl9maWxlbmFtZSA9IGZpbGVuYW1lXG4gICAgICAgICAmJiAocG9zaXRpb25fc3RhcnQgPSAwIHx8IGRlZl9maWxlbmFtZS5bcG9zaXRpb25fc3RhcnQgLSAxXSA9ICcvJylcbiAgICAgICAgICYmXG4gICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlclxuICAgICAgIGluXG4gICAgICAgaWYgZm91bmQgdGhlbiB1c2VkIDo9IHRydWU7XG4gICAgICAgZm91bmQpXG4gICAgbFxuOztcblxubGV0IG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciBkZXNjciA9XG4gIG1hdGNoIG5hbWVfZmlsdGVyIHdpdGhcbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+XG4gICAgTGlzdC5leGlzdHMgKGZ1biBzdWJzdHJpbmcgLT4gQmFzZS5TdHJpbmcuaXNfc3Vic3RyaW5nIH5zdWJzdHJpbmcgZGVzY3IpIG5hbWVfZmlsdGVyXG47O1xuXG5sZXQgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCkgPVxuICBtYXRjaCBMaXN0LnJldiAhZGVsYXllZF9lcnJvcnMgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgXyA6OiBfIGFzIGRlbGF5ZWRfZXJyb3JzIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJcXG4lc1xcbiUhXCIgKFN0cmluZy5tYWtlIDcwICc9Jyk7XG4gICAgTGlzdC5pdGVyIChmdW4gbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBtZXNzYWdlKSBkZWxheWVkX2Vycm9yc1xuOztcblxubGV0IGVwcmludGZfb3JfZGVsYXkgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgKGZ1biBzIC0+XG4gICAgICAgaWYgIXZlcmJvc2UgdGhlbiBkZWxheWVkX2Vycm9ycyA6PSBzIDo6ICFkZWxheWVkX2Vycm9ycyBlbHNlIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHM7XG4gICAgICAgaWYgIXN0b3Bfb25fZXJyb3JcbiAgICAgICB0aGVuIChcbiAgICAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgICAgZXhpdCAyKSlcbiAgICBmbXRcbjs7XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgKCkgPVxuICBDLnByZV90ZXN0X2hvb2sgKCk7XG4gIGYgKClcbjs7XG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9pbm5lclxuICAgICAgICAgICAgICAgICAgICAgfmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgfmRlc2NyXG4gICAgICAgICAgICAgICAgICAgICB+dGFnc1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOmRlZl9maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgICAgICAgIGJvb2xfb2ZfZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb247IHdoaWNoX3RhZ3M7IG5hbWVfZmlsdGVyIH1cbiAgICAgIDsgd2hhdF90b19kb1xuICAgICAgfSAtPlxuICAgIGxldCBmID0gYWRkX2hvb2tzIGNvbmZpZyBmIGluXG4gICAgbGV0IGRlc2NyID1cbiAgICAgIGxhenkgKGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAmJiAobWF0Y2ggb25seV90ZXN0X2xvY2F0aW9uIHdpdGhcbiAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgIHwgXyA6OiBfIC0+IHBvc2l0aW9uX21hdGNoIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgb25seV90ZXN0X2xvY2F0aW9uKVxuICAgICAgJiYgKG5vdCAoVGFnX3ByZWRpY2F0ZS5kaXNhYmxlZCB3aGljaF90YWdzIH5jb21wbGV0ZV90YWdzKSlcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpO1xuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjcjtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5XG4gICAgICAgICAgICAgIFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiXG4gICAgICAgICAgICAgIGRlc2NyXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHNldF9saWJfYW5kX3BhcnRpdGlvbiBzdGF0aWNfbGliIHBhcnRpdGlvbiA9XG4gIG1hdGNoICFkeW5hbWljX2xpYiB3aXRoXG4gIHwgU29tZSBfIC0+XG4gICAgKCogcG9zc2libGUgaWYgdGhlIGludGVyZmFjZSBpcyB1c2VkIGV4cGxpY2l0bHkgb3IgaWYgd2UgaGFwcGVuIHRvIGR5bmxpbmsgc29tZXRoaW5nXG4gICAgICAgdGhhdCBjb250YWluIHRlc3RzICopXG4gICAgKClcbiAgfCBOb25lIC0+XG4gICAgZHluYW1pY19saWIgOj0gU29tZSBzdGF0aWNfbGliO1xuICAgIChtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICAgfCBgSWdub3JlIC0+ICgpXG4gICAgIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzOyB3aGF0X3RvX2RvIH0gLT5cbiAgICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYlxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IHJlcXVpcmVzX3BhcnRpdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgfCBgUnVuX3BhcnRpdGlvbiAoU29tZSBfKSAtPiB0cnVlXG4gICAgICAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gTm9uZSAtPiBmYWxzZVxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHBhcnRpdGlvbiA9IFwiXCIgJiYgcmVxdWlyZXNfcGFydGl0aW9uXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3Q6IGNhbm5vdCB1c2UgLWxpc3QtcGFydGl0aW9uIG9yIC1wYXJ0aXRpb24gd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgcGFydGl0aW9uIGF0IHByZXByb2Nlc3NpbmcgdGltZVwiXG4gICAgICAgICBlbHNlIFBhcnRpdGlvbi5zZXRfY3VycmVudCBwYXJ0aXRpb24pKVxuOztcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+IGlmIGxpYiA9IHN0YXRpY19saWIgdGhlbiBkeW5hbWljX2xpYiA6PSBOb25lXG47O1xuXG5sZXQgdGVzdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgKGZ1biBiIC0+XG4gICAgYilcbjs7XG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIChmdW4gKCkgLT5cbiAgICB0cnVlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIHRlc3RfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+Y29uZmlnXG4gICAgICAgICAgICAgICAgICAgICB+ZGVzY3JcbiAgICAgICAgICAgICAgICAgICAgIH50YWdzXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgZlxuICA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlXG4gICAgICB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfVxuICAgICAgOyB3aGF0X3RvX2RvXG4gICAgICB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW5cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgfCBgTGlzdF9wYXJ0aXRpb25zIC0+IFBhcnRpdGlvbi5mb3VuZF90ZXN0ICgpXG4gICAgICB8IGBSdW5fcGFydGl0aW9uIHBhcnRpdGlvbiAtPlxuICAgICAgICBpZiBQYXJ0aXRpb24uaXNfY3VycmVudCBwYXJ0aXRpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheVxuICAgICAgICAgICAgICAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpXG4gICAgICAgICAgICAgIHNlcFxuICAgICAgICAgICAgICBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICAgICAgICAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSkpKVxuOztcblxubGV0IHN1bW1hcml6ZSAoKSA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT5cbiAgICBpZiBTeXMuYXJndiA8PiBbfHxdICYmIEZpbGVuYW1lLmJhc2VuYW1lIFN5cy5hcmd2LigwKSA9IFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGVcIlxuICAgIHRoZW5cbiAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgIFwiaW5saW5lX3Rlc3RzX3J1bm5lci5leGUgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBieSBoYW5kLCB5b3UgXFxuXFxcbiAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuXFxcbiAgICAgICAgICUhXCJcbiAgICBlbHNlXG4gICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICBcIllvdSBhcmUgZG9pbmcgc29tZXRoaW5nIHVuZXhwZWN0ZWQgd2l0aCB0aGUgdGVzdHMuIE5vIHRlc3RzIGhhdmUgXFxuXFxcbiAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICB0ZXN0cy5cXG5cXFxuICAgICAgICAgJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPlxuICAgIChtYXRjaCAhbG9nIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2gpO1xuICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgIChtYXRjaCAhdGVzdHNfZmFpbGVkLCAhdGVzdF9tb2R1bGVzX2ZhaWxlZCB3aXRoXG4gICAgIHwgMCwgMCAtPlxuICAgICAgIGlmICFzaG93X2NvdW50c1xuICAgICAgIHRoZW5cbiAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIlxuICAgICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAgICF0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICBpblxuICAgICAgIChtYXRjaCBlcnJvcnMgd2l0aFxuICAgICAgICB8IFNvbWUgdGVzdHMgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IHRoZSBmb2xsb3dpbmcgLW9ubHktdGVzdCBmbGFncyBtYXRjaGVkIG5vdGhpbmc6XCI7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbGluZV9udW1iZXJfb3B0IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBQcmludGYuZXByaW50ZiBcIiAlc1wiIGZpbGVuYW1lXG4gICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlcilcbiAgICAgICAgICAgIHRlc3RzO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3JcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJwcHhfaW5saW5lX3Rlc3QgZXJyb3I6IG5vIHRlc3RzIGhhdmUgYmVlbiBydW4uXFxuJSFcIjtcbiAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yKVxuICAgICAgICAgIGVsc2UgVGVzdF9yZXN1bHQuU3VjY2VzcylcbiAgICAgfCBjb3VudCwgY291bnRfdGVzdF9tb2R1bGVzIC0+XG4gICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgIFwiRkFJTEVEICVkIC8gJWQgdGVzdHMlc1xcbiUhXCJcbiAgICAgICAgIGNvdW50XG4gICAgICAgICAhdGVzdHNfcmFuXG4gICAgICAgICAoaWYgY291bnRfdGVzdF9tb2R1bGVzID0gMFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgIFRlc3RfcmVzdWx0LkZhaWx1cmUpXG47O1xuXG5sZXQgdXNlX2NvbG9yID0gIXVzZV9jb2xvclxubGV0IGluX3BsYWNlID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IGRpZmZfcGF0aF9wcmVmaXggPSAhZGlmZl9wYXRoX3ByZWZpeFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGV2YWx1YXRvcnMgPSByZWYgWyBzdW1tYXJpemUgXVxubGV0IGFkZF9ldmFsdWF0b3IgfmYgPSBldmFsdWF0b3JzIDo9IGYgOjogIWV2YWx1YXRvcnNcblxubGV0IGV4aXQgKCkgPVxuICBMaXN0Lm1hcCAoZnVuIGYgLT4gZiAoKSkgKExpc3QucmV2ICFldmFsdWF0b3JzKVxuICB8PiBUZXN0X3Jlc3VsdC5jb21iaW5lX2FsbFxuICB8PiBUZXN0X3Jlc3VsdC50b19leGl0X2NvZGVcbiAgfD4gZXhpdFxuOztcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjpcbiAgICAgIChmdW5cbiAgICAgICAgZHVyYXRpb25fc3RyaW5nIHsgcnVudGltZSA9IF87IGRlc2NyaXB0aW9uOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0gLT5cbiAgICAgICAgKCBkdXJhdGlvbl9zdHJpbmdcbiAgICAgICAgLCBkZXNjcmlwdGlvblxuICAgICAgICAgIF4gZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmcgZ2NfZXZlbnRzXG4gICAgICAgICAgXiBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAodGltaW5nX2V2ZW50c190b19zdHJpbmdzIG5lc3RlZF90aW1pbmdfZXZlbnRzIH5pbmRlbnQ6KGluZGVudCArIDQpKVxuICAgICAgICAgICAgICAgICB+ZjooZnVuIGxpbmUgLT4gXCJcXG5cIiBeIGxpbmUpKSApKVxuICB8PiB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZFxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gcHJlZml4IF4gbGluZSlcbjs7XG5cbmxldCBmYWtlX3RpbWluZ19ldmVudHMgPVxuICBsZXQgZ2NfZXZlbnRzIGkgOiBHY19ldmVudHMudCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9IChpZiBpICUgMiA9IDEgdGhlbiAxIGVsc2UgMClcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSA0ID0gMyB0aGVuIDEgZWxzZSAwKVxuICAgIDsgY29tcGFjdGlvbnMgPSAoaWYgaSAlIDggPSA3IHRoZW4gMSBlbHNlIDApXG4gICAgfVxuICBpblxuICBsYXp5XG4gICAgKExpc3QuaW5pdCAxMiB+ZjooZnVuIGkgOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkZha2VfX0RlcGVuZGVuY3lfJWRcIiAoaSArIDEpXG4gICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaSArIDEpKVxuICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGlcbiAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgKGlmIChpICsgMSkgJSA0ID0gMFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBMaXN0LmluaXQgKGkgKyAxKSB+ZjooZnVuIGogOiBUaW1pbmdfZXZlbnQudCAtPlxuICAgICAgICAgICAgICAgIHsgZGVzY3JpcHRpb24gPSBQcmludGYuc3ByaW50ZiBcIkxpbmUgJWRcIiAoaiArIDEpXG4gICAgICAgICAgICAgICAgOyBydW50aW1lID0gSW50NjMub2ZfaW50ICg5MDAgKiAoaiArIDEpKVxuICAgICAgICAgICAgICAgIDsgZ2NfZXZlbnRzID0gZ2NfZXZlbnRzIGpcbiAgICAgICAgICAgICAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzID0gW11cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgZWxzZSBbXSlcbiAgICAgICB9KSlcbjs7XG5cbmxldCBwcmludF9yZWNvcmRlZF90aW1pbmdfZXZlbnRzIHRpbWluZ19ldmVudHMgPVxuICBsZXQgbm90aWZ5X29mX292ZXJyaWRpbmcgKCkgPVxuICAgIFN0ZGlvLnByaW50X2VuZGxpbmUgXCJwcHhfbW9kdWxlX3RpbWVyOiBvdmVycmlkaW5nIHRpbWUgbWVhc3VyZW1lbnRzIGZvciB0ZXN0aW5nXCJcbiAgaW5cbiAgbGV0IHRpbWluZ19ldmVudHMgPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZV9leG4gYW1fcmVjb3JkaW5nX3ZhbHVlIHdpdGhcbiAgICB8IFwiRkFLRV9NT0RVTEVTXCIgLT5cbiAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgZm9yY2UgZmFrZV90aW1pbmdfZXZlbnRzXG4gICAgfCBzdHJpbmcgLT5cbiAgICAgIChtYXRjaCBEdXJhdGlvbi5vZl9zdHJpbmcgc3RyaW5nIHdpdGhcbiAgICAgICB8IG92ZXJyaWRlIC0+XG4gICAgICAgICBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKTtcbiAgICAgICAgIExpc3QubWFwaSB0aW1pbmdfZXZlbnRzIH5mOihmdW4gaW5kZXggKHRpbWluZ19ldmVudCA6IFRpbWluZ19ldmVudC50KSAtPlxuICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgIGxldCBuZXN0ZWRfdGltaW5nX2V2ZW50cyA9XG4gICAgICAgICAgICAgTGlzdC5tYXBpXG4gICAgICAgICAgICAgICB0aW1pbmdfZXZlbnQubmVzdGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgICAgICAgIH5mOihmdW4gaW5kZXggbmVzdGVkX3RpbWluZ19ldmVudCAtPlxuICAgICAgICAgICAgICAgICBsZXQgcnVudGltZSA9IEludDYzLiggKiApIG92ZXJyaWRlIChJbnQ2My5vZl9pbnQgKGluZGV4ICsgMSkpIGluXG4gICAgICAgICAgICAgICAgIHsgbmVzdGVkX3RpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWUgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB0aW1pbmdfZXZlbnQgd2l0aCBydW50aW1lOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9KVxuICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdGltaW5nX2V2ZW50cylcbiAgaW5cbiAgdGltaW5nX2V2ZW50cyB8PiB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgfmluZGVudDowIHw+IExpc3QuaXRlciB+ZjpTdGRpby5wcmludF9lbmRsaW5lXG47O1xuXG5sZXQgKCkgPVxuICBpZiBhbV9yZWNvcmRpbmdcbiAgdGhlblxuICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgIHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHNcbiAgICAgICAgKExpc3QucmV2IG1vZHVsZV90aW1lci50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcikpXG47O1xuIiwidHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmFzZS5UeXBlX2VxdWFsLnQgPSBUIDogKCdhLCAnYSkgdFxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgY29udiA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBhIC0+IGIgPSBmdW4gVCB4IC0+IHhcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcbiIsIigqIHRoaXMgbGliIHNob3VsZCBub3QgZGVwZW5kIG9uIGNvcmUgKilcbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGxldCBjb21wYXJlIGNtcCBhIGIgPVxuICAgIGxldCByZWMgbG9vcCBhIGIgPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiAwXG4gICAgICB8IFtdLCBfIC0+IC0xXG4gICAgICB8IF8sIFtdIC0+IDFcbiAgICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgICAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiBsb29wIHhzIHlzIGVsc2UgblxuICAgIGluXG4gICAgbG9vcCBhIGJcbiAgOztcbmVuZFxuXG5tb2R1bGUgVWlkIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgbmV4dCA6IHN0cmluZyAtPiB0XG4gIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgdmFsIG5hbWUgOiB0IC0+IHN0cmluZ1xuICB2YWwgc3RhdGljIDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgKGEuY29kZSA6IGludCkgYi5jb2RlXG4gIGxldCBlcXVhbCBhIGIgPSAoYS5jb2RlIDogaW50KSA9IGIuY29kZVxuICBsZXQgdWlkID0gcmVmIDBcblxuICBsZXQgbmV4dCBuYW1lID1cbiAgICBsZXQgY29kZSA9ICF1aWQgaW5cbiAgICBpbmNyIHVpZDtcbiAgICB7IGNvZGU7IG5hbWUgfVxuICA7O1xuXG4gIGxldCBoYXNoIGEgPSBIYXNodGJsLmhhc2ggYS5jb2RlXG4gIGxldCBuYW1lIGEgPSBhLm5hbWVcbiAgbGV0IHN0YXRpYyA9IG5leHQgXCJzdGF0aWNcIlxuZW5kXG5cbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHVpZCA6IFVpZC50XG4gICAgOyBwYXJhbXMgOiB0IGxpc3RcbiAgICB9XG5cbiAgbGV0IHJlYyBjb21wYXJlIGsxIGsyID1cbiAgICBpZiBrMSA9PSBrMlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNtcCA9IFVpZC5jb21wYXJlIGsxLnVpZCBrMi51aWQgaW5cbiAgICAgIGlmIGNtcCA8PiAwIHRoZW4gY21wIGVsc2UgTGlzdC5jb21wYXJlIGNvbXBhcmUgazEucGFyYW1zIGsyLnBhcmFtcylcbiAgOztcblxuICBsZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG4gIGxldCBoYXNoID0gKEhhc2h0YmwuaGFzaCA6IHQgLT4gaW50KVxuICBsZXQgc3RhdGljID0geyB1aWQgPSBVaWQuc3RhdGljOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxudHlwZSAnYSB0ID0gS2V5LnRcbnR5cGUgJ2EgdHlwZW5hbWUgPSAnYSB0XG5cbmxldCBrZXkgdCA9IHRcbmxldCB1aWQgdCA9IHQuS2V5LnVpZFxubGV0IG5hbWUgdCA9IFVpZC5uYW1lIHQuS2V5LnVpZFxubGV0IHN0YXRpYyA9IEtleS5zdGF0aWNcbmxldCBjcmVhdGUgPyhuYW1lID0gXCJUeXBlbmFtZS5jcmVhdGVcIikgKCkgPSB7IEtleS51aWQgPSBVaWQubmV4dCBuYW1lOyBwYXJhbXMgPSBbXSB9XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFRoZSBhcmd1bWVudCBmb3IgT2JqLm1hZ2ljIGhlcmUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBjb3JlL3R5cGVfZXF1YWwgKilcblxuICBsZXQgc2FtZSAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID0gS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcblxuICBsZXQgc2FtZV93aXRuZXNzICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiBTb21lIChPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIDogKGEsIGIpIFR5cGVfZXF1YWwudClcbiAgICBlbHNlIE5vbmVcbiAgOztcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biAodHlwZSBhIGIpIChubTEgOiBhIHQpIChubTIgOiBiIHQpID1cbiAgICBpZiBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuICAgIHRoZW4gKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgZmFpbHdpdGggXCJUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdhIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICgnYSwgJ2IpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0eXBlbmFtZSAtPiAnYiB0eXBlbmFtZSAtPiAnYyB0eXBlbmFtZSAtPiAoJ2EsICdiLCAnYykgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90XG4gICAgOiAgJ2EgdHlwZW5hbWVcbiAgICAtPiAnYiB0eXBlbmFtZVxuICAgIC0+ICdjIHR5cGVuYW1lXG4gICAgLT4gJ2QgdHlwZW5hbWVcbiAgICAtPiAnZSB0eXBlbmFtZVxuICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgdHlwZW5hbWVcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90ID0geyBLZXkudWlkOyBwYXJhbXMgPSBbXSB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGEgXSB9XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYiBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGMgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkID0geyBLZXkudWlkOyBwYXJhbXMgPSBbIGE7IGI7IGM7IGQgXSB9XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgPSBzdHJ1Y3RcbiAgbGV0IHVpZCA9IFVpZC5uZXh0IFgubmFtZVxuICBsZXQgdHlwZW5hbWVfb2ZfdCBhIGIgYyBkIGUgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZDsgZSBdIH1cbmVuZFxuXG5tb2R1bGUgS2V5X3RhYmxlID0gSGFzaHRibC5NYWtlIChLZXkpXG5cbm1vZHVsZSBUYWJsZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGRhdGEgPSBEYXRhIDogJ2EgdCAqICdhIFgudCAtPiBkYXRhXG4gIHR5cGUgdCA9IGRhdGEgS2V5X3RhYmxlLnRcblxuICBsZXQgY3JlYXRlIGludCA9IEtleV90YWJsZS5jcmVhdGUgaW50XG4gIGxldCBtZW0gdGFibGUgbmFtZSA9IEtleV90YWJsZS5tZW0gdGFibGUgKGtleSBuYW1lKVxuICBsZXQgc2V0IHRhYmxlIG5hbWUgZGF0YSA9IEtleV90YWJsZS5yZXBsYWNlIHRhYmxlIChrZXkgbmFtZSkgKERhdGEgKG5hbWUsIGRhdGEpKVxuXG4gIGxldCBmaW5kICh0eXBlIGEpIHRhYmxlIChuYW1lIDogYSB0eXBlbmFtZSkgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIHRyeSBTb21lIChLZXlfdGFibGUuZmluZCB0YWJsZSAoa2V5IG5hbWUpKSB3aXRoXG4gICAgICB8IEJhc2UuTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXRbQGlubGluZSBuZXZlcl0gZG91YmxlX2FycmF5X3ZhbHVlICgpID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoT2JqLm1hZ2ljIDAuKVxubGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIGEgPSBPYmouZG91YmxlX2FycmF5X3RhZyA9IE9iai50YWcgKE9iai5yZXByIGEpXG5cbmxldCAoKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgZG91YmxlID1cbiAgICAgIHsgYSA6IGZsb2F0XG4gICAgICA7IGIgOiBmbG9hdFxuICAgICAgfVxuXG4gICAgdHlwZSBzaW1wbGUgPVxuICAgICAgeyBjIDogZmxvYXRcbiAgICAgIDsgZCA6IGludFxuICAgICAgfVxuXG4gICAgbGV0IGRvdWJsZSA9IHsgYSA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgYiA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gICAgbGV0IHNpbXBsZSA9IHsgYyA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKTsgZCA9IGRvdWJsZV9hcnJheV92YWx1ZSAoKSB9XG4gIGVuZFxuICBpblxuICBhc3NlcnQgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uZG91YmxlKTtcbiAgYXNzZXJ0IChub3QgKGhhc19kb3VibGVfYXJyYXlfdGFnIE0uc2ltcGxlKSlcbjs7XG4iLCJtb2R1bGUgTSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gKCdhLCAnYikgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAoJ2EsICdiLCAnYykgdCBYLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBYLnQgLT4gJ2IgWC50IC0+ICdjIFgudCAtPiAnZCBYLnQgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgWC50XG4gICAgICAtPiAnYiBYLnRcbiAgICAgIC0+ICdjIFgudFxuICAgICAgLT4gJ2QgWC50XG4gICAgICAtPiAnZSBYLnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgWC50XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBNIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50ZiA9IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmXG5cbm1vZHVsZSBIZWxwZXIgKEEgOiBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TKSAoQiA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpID0gc3RydWN0XG4gIHR5cGUgbWFwID0geyBtYXAgOiAnYS4gJ2EgQS50IC0+ICdhIEIudCB9XG5cbiAgbGV0IG1hcF92YXJpYW50ICh0eXBlIHZhcmlhbnQpIHsgbWFwIH0gKHZhcmlhbnQgOiB2YXJpYW50IEEuVmFyaWFudC50KSA9XG4gICAgbGV0IG1hcF9jcmVhdGUgPSBmdW5jdGlvblxuICAgICAgfCBBLlRhZy5BcmdzIGZjdCAtPiBCLlRhZ19pbnRlcm5hbC5BcmdzIGZjdFxuICAgICAgfCBBLlRhZy5Db25zdCBrIC0+IEIuVGFnX2ludGVybmFsLkNvbnN0IGtcbiAgICBpblxuICAgIGxldCBtYXBfdGFnIHRhZyA9XG4gICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVGFnIHRhZyAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLlRhZy5sYWJlbCB0YWcgaW5cbiAgICAgICAgbGV0IHJlcCA9IG1hcCAoQS5UYWcudHJhdmVyc2UgdGFnKSBpblxuICAgICAgICBsZXQgYXJpdHkgPSBBLlRhZy5hcml0eSB0YWcgaW5cbiAgICAgICAgbGV0IGFyZ3NfbGFiZWxzID0gQS5UYWcuYXJnc19sYWJlbHMgdGFnIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuVGFnLmluZGV4IHRhZyBpblxuICAgICAgICBsZXQgb2NhbWxfcmVwciA9IEEuVGFnLm9jYW1sX3JlcHIgdGFnIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5UYWcudHlpZCB0YWcgaW5cbiAgICAgICAgbGV0IGNyZWF0ZSA9IG1hcF9jcmVhdGUgKEEuVGFnLmNyZWF0ZSB0YWcpIGluXG4gICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5UYWdcbiAgICAgICAgICAoQi5UYWcuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuVGFnX2ludGVybmFsLmxhYmVsXG4gICAgICAgICAgICAgOyByZXBcbiAgICAgICAgICAgICA7IGFyaXR5XG4gICAgICAgICAgICAgOyBhcmdzX2xhYmVsc1xuICAgICAgICAgICAgIDsgaW5kZXhcbiAgICAgICAgICAgICA7IG9jYW1sX3JlcHJcbiAgICAgICAgICAgICA7IHR5aWRcbiAgICAgICAgICAgICA7IGNyZWF0ZVxuICAgICAgICAgICAgIH0pXG4gICAgaW5cbiAgICBsZXQgdHlwZW5hbWUgPSBBLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50IGluXG4gICAgbGV0IHBvbHltb3JwaGljID0gQS5WYXJpYW50LmlzX3BvbHltb3JwaGljIHZhcmlhbnQgaW5cbiAgICBsZXQgdGFncyA9XG4gICAgICBBcnJheS5pbml0IChBLlZhcmlhbnQubGVuZ3RoIHZhcmlhbnQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX3RhZyAoQS5WYXJpYW50LnRhZyB2YXJpYW50IGluZGV4KSlcbiAgICBpblxuICAgIGxldCB2YWx1ZSAoYSA6IHZhcmlhbnQpID1cbiAgICAgIG1hdGNoIEEuVmFyaWFudC52YWx1ZSB2YXJpYW50IGEgd2l0aFxuICAgICAgfCBBLlZhcmlhbnQuVmFsdWUgKGF0YWcsIGEpIC0+XG4gICAgICAgIChmdW4gKHR5cGUgYXJncykgKGF0YWcgOiAodmFyaWFudCwgYXJncykgQS5UYWcudCkgKGEgOiBhcmdzKSAtPlxuICAgICAgICAgICBsZXQgKEIuVmFyaWFudF9pbnRlcm5hbC5UYWcgYnRhZykgPSB0YWdzLihBLlRhZy5pbmRleCBhdGFnKSBpblxuICAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYnRhZyA6ICh2YXJpYW50LCBleCkgQi5UYWcudCkgLT5cbiAgICAgICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5UYWcudHlpZCBhdGFnKSAoQi5UYWcudHlpZCBidGFnKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYnRhZyA9IChidGFnIDogKHZhcmlhbnQsIGFyZ3MpIEIuVGFnLnQpIGluXG4gICAgICAgICAgICAgIEIuVmFyaWFudF9pbnRlcm5hbC5WYWx1ZSAoYnRhZywgYSkpXG4gICAgICAgICAgICAgYnRhZylcbiAgICAgICAgICBhdGFnXG4gICAgICAgICAgYVxuICAgIGluXG4gICAgQi5WYXJpYW50LmludGVybmFsX3VzZV9vbmx5IHsgQi5WYXJpYW50X2ludGVybmFsLnR5cGVuYW1lOyB0YWdzOyBwb2x5bW9ycGhpYzsgdmFsdWUgfVxuICA7O1xuXG4gIGxldCBtYXBfcmVjb3JkICh0eXBlIHJlY29yZCkgeyBtYXAgfSAocmVjb3JkIDogcmVjb3JkIEEuUmVjb3JkLnQpID1cbiAgICBsZXQgbWFwX2ZpZWxkIGZpZWxkID1cbiAgICAgIG1hdGNoIGZpZWxkIHdpdGhcbiAgICAgIHwgQS5SZWNvcmQuRmllbGQgZmllbGQgLT5cbiAgICAgICAgbGV0IGxhYmVsID0gQS5GaWVsZC5sYWJlbCBmaWVsZCBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLkZpZWxkLnRyYXZlcnNlIGZpZWxkKSBpblxuICAgICAgICBsZXQgaW5kZXggPSBBLkZpZWxkLmluZGV4IGZpZWxkIGluXG4gICAgICAgIGxldCBpc19tdXRhYmxlID0gQS5GaWVsZC5pc19tdXRhYmxlIGZpZWxkIGluXG4gICAgICAgIGxldCB0eWlkID0gQS5GaWVsZC50eWlkIGZpZWxkIGluXG4gICAgICAgIGxldCBnZXQgPSBBLkZpZWxkLmdldCBmaWVsZCBpblxuICAgICAgICBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZFxuICAgICAgICAgIChCLkZpZWxkLmludGVybmFsX3VzZV9vbmx5XG4gICAgICAgICAgICAgeyBCLkZpZWxkX2ludGVybmFsLmxhYmVsOyByZXA7IGluZGV4OyBpc19tdXRhYmxlOyB0eWlkOyBnZXQgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuUmVjb3JkLnR5cGVuYW1lX29mX3QgcmVjb3JkIGluXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnID0gQS5SZWNvcmQuaGFzX2RvdWJsZV9hcnJheV90YWcgcmVjb3JkIGluXG4gICAgbGV0IGZpZWxkcyA9XG4gICAgICBBcnJheS5pbml0IChBLlJlY29yZC5sZW5ndGggcmVjb3JkKSAoZnVuIGluZGV4IC0+XG4gICAgICAgIG1hcF9maWVsZCAoQS5SZWNvcmQuZmllbGQgcmVjb3JkIGluZGV4KSlcbiAgICBpblxuICAgIGxldCBjcmVhdGUgeyBCLlJlY29yZF9pbnRlcm5hbC5nZXQgfSA9XG4gICAgICBsZXQgZ2V0ICh0eXBlIGEpIChhZmllbGQgOiAoXywgYSkgQS5GaWVsZC50KSA9XG4gICAgICAgIG1hdGNoIGZpZWxkcy4oQS5GaWVsZC5pbmRleCBhZmllbGQpIHdpdGhcbiAgICAgICAgfCBCLlJlY29yZF9pbnRlcm5hbC5GaWVsZCBiZmllbGQgLT5cbiAgICAgICAgICAoZnVuICh0eXBlIGV4KSAoYmZpZWxkIDogKHJlY29yZCwgZXgpIEIuRmllbGQudCkgLT5cbiAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gKEEuRmllbGQudHlpZCBhZmllbGQpIChCLkZpZWxkLnR5aWQgYmZpZWxkKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGJmaWVsZCA9IChiZmllbGQgOiAocmVjb3JkLCBhKSBCLkZpZWxkLnQpIGluXG4gICAgICAgICAgICAgZ2V0IGJmaWVsZClcbiAgICAgICAgICAgIGJmaWVsZFxuICAgICAgaW5cbiAgICAgIEEuUmVjb3JkLmNyZWF0ZSByZWNvcmQgeyBBLlJlY29yZC5nZXQgfVxuICAgIGluXG4gICAgQi5SZWNvcmQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgIHsgQi5SZWNvcmRfaW50ZXJuYWwudHlwZW5hbWU7IGZpZWxkczsgaGFzX2RvdWJsZV9hcnJheV90YWc7IGNyZWF0ZSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgTmFtZWQgPSBzaWdcbiAgdHlwZSAnYSBjb21wdXRhdGlvblxuXG4gIG1vZHVsZSBDb250ZXh0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgY3JlYXRlIDogdW5pdCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBpbml0IDogQ29udGV4dC50IC0+ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgZ2V0X3dpcF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNldF9maW5hbF9jb21wdXRhdGlvbiA6ICdhIHQgLT4gJ2EgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgdmFsIHNoYXJlIDogXyBUeXBlcmVwLnQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXB1dGF0aW9uID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGludCA6IGludCB0XG4gIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgdmFsIGludDY0IDogaW50NjQgdFxuICB2YWwgbmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgdmFsIGNoYXIgOiBjaGFyIHRcbiAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgdmFsIGJ5dGVzIDogYnl0ZXMgdFxuICB2YWwgYm9vbCA6IGJvb2wgdFxuICB2YWwgdW5pdCA6IHVuaXQgdFxuICB2YWwgb3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICB2YWwgbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gIHZhbCBhcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICB2YWwgbGF6eV90IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICB2YWwgcmVmXyA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgdmFsIGZ1bmN0aW9uXyA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgLT4gJ2IpIHRcbiAgdmFsIHR1cGxlMiA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHVwbGUzIDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gKCdhICogJ2IgKiAnYykgdFxuICB2YWwgdHVwbGU0IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgdmFsIHR1cGxlNSA6ICdhIHQgLT4gJ2IgdCAtPiAnYyB0IC0+ICdkIHQgLT4gJ2UgdCAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuICB2YWwgcmVjb3JkIDogJ2EgUmVjb3JkLnQgLT4gJ2EgdFxuICB2YWwgdmFyaWFudCA6ICdhIFZhcmlhbnQudCAtPiAnYSB0XG5cbiAgbW9kdWxlIE5hbWVkIDogTmFtZWQgd2l0aCB0eXBlICdhIGNvbXB1dGF0aW9uIDo9ICdhIHRcbmVuZFxuXG4oKiBzcGVjaWFsIGZ1bmN0b3IgYXBwbGljYXRpb24gZm9yIGNvbXB1dGF0aW9uIGFzIGNsb3N1cmUgb2YgdGhlIGZvcm0gW2EgLT4gYl0gKilcbm1vZHVsZSBNYWtlX25hbWVkX2Zvcl9jbG9zdXJlIChYIDogc2lnXG4gICAgdHlwZSAnYSBpbnB1dFxuICAgIHR5cGUgJ2Egb3V0cHV0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaW5wdXQgLT4gJ2Egb3V0cHV0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdW5pdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGlnbm9yZVxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgcnVudGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudFxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgOiAnYSBYLnQgcmVmXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6ICdhIFgudCBvcHRpb24gcmVmXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nXG5cbiAgbGV0IGluaXQgKCkgbmFtZSA9XG4gICAgbGV0IHBhdGggPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIG5hbWUpIGluXG4gICAgbGV0IHIgPSByZWYgKGZ1biBfIC0+IHJhaXNlIChVbmRlZmluZWQgcGF0aCkpIGluXG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlID0gKGZ1biBpbnB1dCAtPiAhciBpbnB1dClcbiAgICA7IHJ1bnRpbWVfcmVmZXJlbmNlID0gclxuICAgIDsgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSByZWYgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBzaGFyZWQgPVxuICAgIG1hdGNoIHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIGNsb3MgLT4gY2xvc1xuICAgIHwgTm9uZSAtPiBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZVxuICA7O1xuXG4gIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gc2hhcmVkIGNvbXB1dGF0aW9uID1cbiAgICBsZXQgY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgPSBzaGFyZWQuY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UgaW5cbiAgICBtYXRjaCBjb21waWxldGltZV9kZXJlZmVyZW5jZS5jb250ZW50cyB3aXRoXG4gICAgfCBTb21lIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBCYXNlLnBoeXNfZXF1YWwgc2hhcmVkLnJ1bnRpbWVfZGVyZWZlcmVuY2UgY29tcHV0YXRpb24gdGhlbiBhc3NlcnQgZmFsc2U7XG4gICAgICBjb21waWxldGltZV9kZXJlZmVyZW5jZSA6PSBTb21lIGNvbXB1dGF0aW9uO1xuICAgICAgc2hhcmVkLnJ1bnRpbWVfcmVmZXJlbmNlIDo9IGNvbXB1dGF0aW9uO1xuICAgICAgY29tcHV0YXRpb25cbiAgOztcblxuICBsZXQgc2hhcmUgXyA9IHRydWVcbmVuZFxuXG5tb2R1bGUgSWRlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGltcGxlbWVudHMgOiBUeXBlbmFtZS5VaWQudCAtPiBib29sXG4gICAgfVxuXG4gIGV4Y2VwdGlvbiBCcm9rZW5fZGVwZW5kZW5jeSBvZiBzdHJpbmdcblxuICBsZXQgY2hlY2tfZGVwZW5kZW5jaWVzIG5hbWUgcmVxdWlyZWQgPVxuICAgIG1hdGNoIHJlcXVpcmVkIHdpdGhcbiAgICB8IFtdIC0+IGZ1biBfIC0+ICgpXG4gICAgfCBfIC0+XG4gICAgICBmdW4gdWlkIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geyBuYW1lID0gbmFtZSc7IGltcGxlbWVudHMgfSAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoaW1wbGVtZW50cyB1aWQpXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAoKiBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgc2V0IHVwLCB0aGlzIGlzIGFuIGVycm9yIGR1cmluZyB0aGVcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwcm9ncmFtLCB3ZSByYXRoZXIgZmFpbCB3aXRoIGEgaHVtYW5cbiAgICAgICAgICAgICAgICAgIHJlYWRhYmxlIG91dHB1dCAqKVxuICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiVHlwZV9nZW5lcmljICVTIHJlcXVpcmVzICVTIGZvciB1aWQgJVNcXG5cIlxuICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICBuYW1lJ1xuICAgICAgICAgICAgICAgICAgIChUeXBlbmFtZS5VaWQubmFtZSB1aWQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcHJlcnJfZW5kbGluZSBtZXNzYWdlO1xuICAgICAgICAgICAgICAgcmFpc2UgKEJyb2tlbl9kZXBlbmRlbmN5IG1lc3NhZ2UpKSlcbiAgICAgICAgICByZXF1aXJlZFxuICA7O1xuZW5kXG5cbigqIEV4dGVuZGluZyBhbiBleGlzdGluZyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBFeHRlbmRpbmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgdmFsIGlkZW50IDogSWRlbnQudFxuXG4gICgqIGdlbmVyaWNfaWRlbnQgKiB0eXBlbmFtZSBvciBpbmZvICopXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBjb21wdXRlIDogdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdhIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXB1dGUgOiAnYSBjb21wdXRhdGlvbiAtPiAnYiBjb21wdXRhdGlvbiAtPiAoJ2EsICdiKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYykgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNSA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgJ2EgY29tcHV0YXRpb25cbiAgICAgIC0+ICdiIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYyBjb21wdXRhdGlvblxuICAgICAgLT4gJ2QgY29tcHV0YXRpb25cbiAgICAgIC0+ICdlIGNvbXB1dGF0aW9uXG4gICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIHZhbCByZWdpc3RlcjAgOiAobW9kdWxlIFMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMSA6IChtb2R1bGUgUzEpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMiA6IChtb2R1bGUgUzIpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyMyA6IChtb2R1bGUgUzMpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNCA6IChtb2R1bGUgUzQpIC0+IHVuaXRcbiAgdmFsIHJlZ2lzdGVyNSA6IChtb2R1bGUgUzUpIC0+IHVuaXRcblxuICAoKiBzcGVjaWFsIGxlc3Mgc2NhcnkgdHlwZSB3aGVuIHRoZSB0eXBlIGhhcyBubyBwYXJhbWV0ZXJzICopXG4gIHZhbCByZWdpc3RlciA6ICdhIFR5cGVyZXAudCAtPiAnYSBjb21wdXRhdGlvbiAtPiB1bml0XG5cbiAgKCpcbiAgICAgRXNzZW50aWFsbHkgYmVjYXVzZSB3ZSBjYW5ub3QgdGFsayBhYm91dCBhIHZhcmlhYmxlIG9mIGtpbmQgKiAtPiBrXG4gICAgIHZhbCByZWdpc3RlcjEgOiAnYSAndCBUeXBlcmVwLnQgLT4gKCdhIGNvbXB1dGF0aW9uIC0+ICdhICd0IGNvbXB1dGF0aW9uKSAtPiB1bml0XG4gICAgIC4uLlxuICAqKVxuZW5kXG5cbigqIEltcGxlbWVudGluZyBhIG5ldyBnZW5lcmljICopXG5tb2R1bGUgdHlwZSBTX2ltcGxlbWVudGF0aW9uID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgKCogcmFpc2UgdXNpbmcgdGhlIGN1cnJlbnQgaWRlbnQgKilcbiAgdmFsIHJhaXNlX25vdF9pbXBsZW1lbnRlZCA6IHN0cmluZyAtPiAnYVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICAoKlxuICAgICBTdGFuZGFyZCBjYXNlLCBmaW5kIGEgZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24sIG9yIGxvb2sgaW4gdGhlIGNvbnRlbnRcbiAgKilcbiAgdmFsIF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgVHlwZXJlcC50IGxhenlfdCBvcHRpb25cbiAgICAtPiAnYSBjb21wdXRhdGlvblxuXG4gICgqXG4gICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSBtb3JlIGNvbnRyb2wgb24gd2hhdCB5b3Ugd2FudCB0byBkb1xuICAqKVxuICB2YWwgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvblxuICAgIDogIGltcGxlbWVudGF0aW9uXG4gICAgLT4gJ2EgVHlwZXJlcC5OYW1lZC50XG4gICAgLT4gJ2EgY29tcHV0YXRpb24gb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuZGluZ1xuXG4gIHZhbCBvZl90eXBlcmVwIDogJ2EgVHlwZXJlcC50IC0+IFsgYGdlbmVyaWMgb2YgJ2EgY29tcHV0YXRpb24gXVxuXG4gIG1vZHVsZSBDb21wdXRhdGlvbiA6IENvbXB1dGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgdFxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFggOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIHJlcXVpcmVkIDogSWRlbnQudCBsaXN0XG4gIGVuZCkgOiBTX2ltcGxlbWVudGF0aW9uIHdpdGggdHlwZSAnYSB0ID0gJ2EgWC50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFgudFxuICB0eXBlICdhIGNvbXB1dGF0aW9uID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBjb21wdXRhdGlvblxuICAgIGVuZClcblxuICAoKiB3ZSBkbyBub3QgdXNlIGNvcmUgc2luY2Ugd2UgYXJlIGVhcmxpZXIgaW4gdGhlIGRlcGVuZGVuY2llcyBncmFwaCAqKVxuICBtb2R1bGUgVWlkX3RhYmxlID0gc3RydWN0XG4gICAgaW5jbHVkZSBIYXNodGJsLk1ha2UgKFR5cGVuYW1lLlVpZClcblxuICAgIGxldCBmaW5kIHRhYmxlIGtleSA9XG4gICAgICBpZiBMYXp5LmlzX3ZhbCB0YWJsZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0YWJsZSA9IExhenkuZm9yY2UgdGFibGUgaW5cbiAgICAgICAgdHJ5IFNvbWUgKGZpbmQgdGFibGUga2V5KSB3aXRoXG4gICAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAwMl8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW4geF9fMDAzXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X3JlY29yZC5yZWNvcmRfb2Zfc2V4cFxuICAgICAgICAgICB+Y2FsbGVyOmVycm9yX3NvdXJjZV9fMDAyX1xuICAgICAgICAgICB+ZmllbGRzOlxuICAgICAgICAgICAgIChGaWVsZFxuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgOyBjb252ID0gTmFtZS50X29mX3NleHBcbiAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9udW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibGluZV9zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJzdGFydF9wb3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsga2luZCA9IFJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjb252ID0gaW50X29mX3NleHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHJlc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiZW5kX3Bvc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9IEVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgIH5pbmRleF9vZl9maWVsZDooZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFwiZmlsZW5hbWVcIiAtPiAwXG4gICAgICAgICAgICAgfCBcImxpbmVfbnVtYmVyXCIgLT4gMVxuICAgICAgICAgICAgIHwgXCJsaW5lX3N0YXJ0XCIgLT4gMlxuICAgICAgICAgICAgIHwgXCJzdGFydF9wb3NcIiAtPiAzXG4gICAgICAgICAgICAgfCBcImVuZF9wb3NcIiAtPiA0XG4gICAgICAgICAgICAgfCBfIC0+IC0xKVxuICAgICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzOmZhbHNlXG4gICAgICAgICAgIH5jcmVhdGU6XG4gICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgKGZpbGVuYW1lLCAobGluZV9udW1iZXIsIChsaW5lX3N0YXJ0LCAoc3RhcnRfcG9zLCAoZW5kX3BvcywgKCkpKSkpKSA6IHQgLT5cbiAgICAgICAgICAgICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyOyBsaW5lX3N0YXJ0OyBzdGFydF9wb3M7IGVuZF9wb3MgfSlcbiAgICAgICAgICAgeF9fMDAzX1xuICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSB0X29mX3NleHBcblxuICAgIGxldCBzZXhwX29mX3QgPVxuICAgICAgKGZ1biB7IGZpbGVuYW1lID0gZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgOyBsaW5lX251bWJlciA9IGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgOyBzdGFydF9wb3MgPSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgOyBlbmRfcG9zID0gZW5kX3Bvc19fMDEzX1xuICAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBibmRzX18wMDRfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDE0XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAxM18gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxNF8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfaW50IHN0YXJ0X3Bvc19fMDExXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsaW5lX3N0YXJ0X18wMDlfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfc3RhcnRcIjsgYXJnX18wMTBfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDA3XyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX251bWJlclwiOyBhcmdfXzAwOF8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA2XyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMDVfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZpbGVuYW1lXCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDRfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIGxldCBfID0gc2V4cF9vZl90XG5cbiAgICBsZXQgY29tcGFyZSA9XG4gICAgICAoZnVuIGFfXzAxNV8gYl9fMDE2XyAtPlxuICAgICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTVfIGJfXzAxNl9cbiAgICAgICAgIHRoZW4gMFxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIE5hbWUuY29tcGFyZSBhX18wMTVfLmZpbGVuYW1lIGJfXzAxNl8uZmlsZW5hbWUgd2l0aFxuICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5saW5lX251bWJlciBiX18wMTZfLmxpbmVfbnVtYmVyIHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmVfaW50IGFfXzAxNV8ubGluZV9zdGFydCBiX18wMTZfLmxpbmVfc3RhcnQgd2l0aFxuICAgICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5zdGFydF9wb3MgYl9fMDE2Xy5zdGFydF9wb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9pbnQgYV9fMDE1Xy5lbmRfcG9zIGJfXzAxNl8uZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IGNvbXBhcmVcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuICBsZXQgYmVnaW5uaW5nX29mX2ZpbGUgZmlsZW5hbWUgPVxuICAgIHsgZmlsZW5hbWU7IGxpbmVfbnVtYmVyID0gMTsgbGluZV9zdGFydCA9IDA7IHN0YXJ0X3BvcyA9IDA7IGVuZF9wb3MgPSAwIH1cbiAgOztcblxuICBsZXQgb2Zfc291cmNlX2NvZGVfcG9zaXRpb24gKHBvcyA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpID1cbiAgICB7IGZpbGVuYW1lID0gTmFtZS5vZl9zdHJpbmcgKFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZW1wdHkgOiBzdHJpbmdcbigqKiBUaGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbigqKiBbbGVuZ3RoIHNdIGlzIHRoZSBsZW5ndGggKG51bWJlciBvZiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBbc10uICopXG5cbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4oKiogW2dldCBzIGldIGlzIHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluIFtzXS4gVGhpcyBpcyB0aGUgc2FtZVxuICAgIGFzIHdyaXRpbmcgW3MuW2ldXS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBub3QgYW4gaW5kZXggb2YgW3NdLiAqKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgdG9fYnl0ZXMgOiBzdHJpbmcgLT4gYnl0ZXNcbigqKiBSZXR1cm4gYSBuZXcgYnl0ZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzYW1lIGJ5dGVzIGFzIHRoZSBnaXZlblxuICAgIHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4oKiogU2FtZSBhcyB7IUJ5dGVzLmJsaXRfc3RyaW5nfSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAqKVxuXG4oKiogezE6Y29uY2F0IENvbmNhdGVuYXRpbmd9XG5cbiAgICB7YiBOb3RlLn0gVGhlIHshU3RkbGliLiggXiApfSBiaW5hcnkgb3BlcmF0b3IgY29uY2F0ZW5hdGVzIHR3b1xuICAgIHN0cmluZ3MuICopXG5cbnZhbCBjb25jYXQgOiBzdHJpbmcgLT4gc3RyaW5nIGxpc3QgLT4gc3RyaW5nXG4oKiogW2NvbmNhdCBzZXAgc3NdIGNvbmNhdGVuYXRlcyB0aGUgbGlzdCBvZiBzdHJpbmdzIFtzc10sIGluc2VydGluZ1xuICAgIHRoZSBzZXBhcmF0b3Igc3RyaW5nIFtzZXBdIGJldHdlZW4gZWFjaC5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCBjYXQgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXQgczEgczJdIGNvbmNhdGVuYXRlcyBzMSBhbmQgczIgKFtzMSBeIHMyXSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbigqKiBbY29tcGFyZSBzMCBzMV0gc29ydHMgW3MwXSBhbmQgW3MxXSBpbiBsZXhpY29ncmFwaGljYWwgb3JkZXIuIFtjb21wYXJlXVxuICAgIGJlaGF2ZXMgbGlrZSB7IVN0ZGxpYi5jb21wYXJlfSBvbiBzdHJpbmdzIGJ1dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuICopXG5cbnZhbCBzdGFydHNfd2l0aCA6XG4gIHByZWZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW3N0YXJ0c193aXRoIF1bfnByZWZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIHN0YXJ0cyB3aXRoXG4gICAgW3ByZWZpeF0uXG5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cbiAgICBJZiBbc10gaXMgZW1wdHksIHRoZSByZXN1bHQgaXMgdGhlIHNpbmdsZXRvbiBsaXN0IFtbXCJcIl1dLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0ICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYW5zZm9ybWluZyBUcmFuc2Zvcm1pbmd9ICopXG5cbnZhbCBtYXAgOiAoY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcCBmIHNdIGlzIHRoZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gYXBwbHlpbmcgW2ZdIHRvIGFsbCB0aGVcbiAgICBjaGFyYWN0ZXJzIG9mIFtzXSBpbiBpbmNyZWFzaW5nIG9yZGVyLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYWNjIC0+IGNoYXIgLT4gJ2FjYykgLT4gJ2FjYyAtPiBzdHJpbmcgLT4gJ2FjY1xuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYWNjIC0+ICdhY2MpIC0+IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBleGlzdHMgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtleGlzdHMgcCBzXSBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiBbc10gc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGVcbiAgICBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0b1xuICAgIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbigqKiB7MSBCaW5hcnkgZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBiaW5hcnkgZGVjb2RlIGludGVnZXJzIGZyb20gc3RyaW5ncy5cblxuICAgIEFsbCBmb2xsb3dpbmcgZnVuY3Rpb25zIHJhaXNlIFtJbnZhbGlkX2FyZ3VtZW50XSBpZiB0aGUgY2hhcmFjdGVyc1xuICAgIG5lZWRlZCBhdCBpbmRleCBbaV0gdG8gZGVjb2RlIHRoZSBpbnRlZ2VyIGFyZSBub3QgYXZhaWxhYmxlLlxuXG4gICAgTGl0dGxlLWVuZGlhbiAocmVzcC4gYmlnLWVuZGlhbikgZW5jb2RpbmcgbWVhbnMgdGhhdCBsZWFzdFxuICAgIChyZXNwLiBtb3N0KSBzaWduaWZpY2FudCBieXRlcyBhcmUgc3RvcmVkIGZpcnN0LiAgQmlnLWVuZGlhbiBpc1xuICAgIGFsc28ga25vd24gYXMgbmV0d29yayBieXRlIG9yZGVyLiAgTmF0aXZlLWVuZGlhbiBlbmNvZGluZyBpc1xuICAgIGVpdGhlciBsaXR0bGUtZW5kaWFuIG9yIGJpZy1lbmRpYW4gZGVwZW5kaW5nIG9uIHshU3lzLmJpZ19lbmRpYW59LlxuXG4gICAgMzItYml0IGFuZCA2NC1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50MzJdIGFuZFxuICAgIFtpbnQ2NF0gdHlwZXMsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBlaXRoZXIgYXMgc2lnbmVkIG9yXG4gICAgdW5zaWduZWQgbnVtYmVycy5cblxuICAgIDgtYml0IGFuZCAxNi1iaXQgaW50ZWdlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZSBbaW50XSB0eXBlLFxuICAgIHdoaWNoIGhhcyBtb3JlIGJpdHMgdGhhbiB0aGUgYmluYXJ5IGVuY29kaW5nLiAgVGhlc2UgZXh0cmEgYml0c1xuICAgIGFyZSBzaWduLWV4dGVuZGVkIChvciB6ZXJvLWV4dGVuZGVkKSBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlY29kZSA4LWJpdFxuICAgIG9yIDE2LWJpdCBpbnRlZ2VycyBhbmQgcmVwcmVzZW50ZWQgdGhlbSB3aXRoIFtpbnRdIHZhbHVlcy5cbiopXG5cbnZhbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDggYiBpXSBpcyBbYl0ncyB1bnNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfYmUgYiBpXSBpcyBbYl0ncyBiaWctZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0YmwuaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudFxuICAgIHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50NjRfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxub3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxubW9kdWxlIEJvZHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEV4YWN0IG9mIHN0cmluZ1xuICAgIHwgT3V0cHV0XG4gICAgfCBQcmV0dHkgb2YgJ2FcbiAgICB8IFVucmVhY2hhYmxlXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxuICBsZXQgXyA9IGZ1biAoXyA6ICdhIHQpIC0+ICgpXG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAwNl8pIDogKChhX18wMDZfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDA2XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAwMV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgRXhhY3QgYXJnMF9fMDAyXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzBfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiRXhhY3RcIjsgcmVzMF9fMDAzXyBdXG4gICAgICB8IE91dHB1dCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJPdXRwdXRcIlxuICAgICAgfCBQcmV0dHkgYXJnMF9fMDA0XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDA1XyA9IF9vZl9hX18wMDFfIGFyZzBfXzAwNF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUHJldHR5XCI7IHJlczBfXzAwNV8gXVxuICAgICAgfCBVbnJlYWNoYWJsZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbnJlYWNoYWJsZVwiXG4gIDs7XG5cbiAgbGV0IF8gPSBzZXhwX29mX3RcblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwN18gYl9fMDA4X1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDA3XywgYl9fMDA4XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMDlfLCBFeGFjdCBfYl9fMDEwXyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDA5XyBfYl9fMDEwX1xuICAgICAgfCBFeGFjdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIEV4YWN0IF8gLT4gMVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiAwXG4gICAgICB8IE91dHB1dCwgXyAtPiAtMVxuICAgICAgfCBfLCBPdXRwdXQgLT4gMVxuICAgICAgfCBQcmV0dHkgX2FfXzAxMV8sIFByZXR0eSBfYl9fMDEyXyAtPiBfY21wX19hIF9hX18wMTFfIF9iX18wMTJfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IDFcbiAgICAgIHwgVW5yZWFjaGFibGUsIFVucmVhY2hhYmxlIC0+IDApXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI4XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGJvZHlfbG9jYXRpb25fXzAyN18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4dGlkX2xvY2F0aW9uXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNF8gPSBCb2R5LnNleHBfb2ZfdCBfb2ZfYV9fMDE5XyBib2R5X18wMjNfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYm9keVwiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjBfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjJfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdGFnX18wMjFfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDI5XyBiX18wMzBfXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBtYXRjaCBjb21wYXJlX29wdGlvbiBjb21wYXJlX3N0cmluZyBhX18wMjlfLnRhZyBiX18wMzBfLnRhZyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAobWF0Y2ggQm9keS5jb21wYXJlIF9jbXBfX2EgYV9fMDI5Xy5ib2R5IGJfXzAzMF8uYm9keSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAobWF0Y2ggRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uZXh0aWRfbG9jYXRpb24gYl9fMDMwXy5leHRpZF9sb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCAwIC0+IEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmJvZHlfbG9jYXRpb24gYl9fMDMwXy5ib2R5X2xvY2F0aW9uXG4gICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgfCBuIC0+IG4pXG4gICAgfCBuIC0+IG4pXG47O1xuXG5sZXQgXyA9IGNvbXBhcmVcblxubGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gIGZ1biBfY21wX19hIGFfXzAzNV8gYl9fMDM2XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAzNV8gYl9fMDM2X1xuICB0aGVuIHRydWVcbiAgZWxzZVxuICAgIFN0ZGxpYi4oICYmIClcbiAgICAgIChlcXVhbF9vcHRpb24gZXF1YWxfc3RyaW5nIGFfXzAzNV8udGFnIGJfXzAzNl8udGFnKVxuICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgIChCb2R5LmVxdWFsIF9jbXBfX2EgYV9fMDM1Xy5ib2R5IGJfXzAzNl8uYm9keSlcbiAgICAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmV4dGlkX2xvY2F0aW9uIGJfXzAzNl8uZXh0aWRfbG9jYXRpb24pXG4gICAgICAgICAgICAoRmlsZS5Mb2NhdGlvbi5lcXVhbCBhX18wMzVfLmJvZHlfbG9jYXRpb24gYl9fMDM2Xy5ib2R5X2xvY2F0aW9uKSkpXG47O1xuXG5sZXQgXyA9IGVxdWFsXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHN0cmluZyB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcbiAgbGV0IHNleHBfb2ZfdCA9IChmdW4geF9fMDQxXyAtPiBzZXhwX29mX3Qgc2V4cF9vZl9zdHJpbmcgeF9fMDQxXyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzA0Ml8gYl9fMDQzXyAtPiBjb21wYXJlIGNvbXBhcmVfc3RyaW5nIGFfXzA0Ml8gYl9fMDQzXyA6IHQgLT4gdCAtPiBpbnQpXG4gIDs7XG5cbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWFwX3ByZXR0eSB0IH5mID0geyB0IHdpdGggYm9keSA9IEJvZHkubWFwX3ByZXR0eSB0LmJvZHkgfmYgfVxuIiwibW9kdWxlIFN0ZCA9IHN0cnVjdFxuICBtb2R1bGUgRmlsZSA9IEZpbGVcbiAgbW9kdWxlIEV4cGVjdGF0aW9uID0gRXhwZWN0YXRpb25cbmVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSB1c2UgW0V4cGVjdF90ZXN0X2NvbW1vbl0gaW5zdGVhZFwiXVxuXG5pbmNsdWRlIFN0ZCBbQEBhbGVydCBcIi1kZXByZWNhdGVkXCJdXG4iLCJtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBDUiAoKiogTGVhdmVzIGEgQ1IsIHNvIHRoYXQgZmVhdHVyZXMgY2Fubm90IGJlIHJlbGVhc2VkLiAqKVxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nICgqKiBPbmx5IGZvciBwcHhfZXhwZWN0IHRlc3Rpbmc7IGRvIG5vdCB1c2UuICopXG4gICAgXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIElPIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICBlbmRcblxuICAoKiogUnVuIGFuIElPIG9wZXJhdGlvbiB1bnRpbCBjb21wbGV0aW9uICopXG4gIHZhbCBydW4gOiAodW5pdCAtPiB1bml0IElPLnQpIC0+IHVuaXRcblxuICAoKiogW3Nhbml0aXplXSBjYW4gYmUgdXNlZCB0byBtYXAgYWxsIG91dHB1dCBzdHJpbmdzLCBlLmcuIGZvciBjbGVhbnNpbmcuICopXG4gIHZhbCBzYW5pdGl6ZSA6IHN0cmluZyAtPiBzdHJpbmdcblxuXG4gICgqKiBbdXBvbl91bnJlbGVhc2FibGVfaXNzdWVdIHNwZWNpZmllcyBob3cgdG8gZGVhbCB3aXRoIG91dHB1dCB0aGF0IHNob3VsZCBub3QgYmVcbiAgICAgIHJlbGVhc2VkIGV2ZW4gaWYgaXQgaXMgYWNjZXB0ZWQgKGUuZy4gYmFja3RyYWNlcykuIFRoZSBkZWZhdWx0IGlzIFtgQ1JdLiAgKilcbiAgdmFsIHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuZW5kXG5cbigqKiBDb25maWd1cmF0aW9uIGZvciBydW5uaW5nIGV4cGVjdCB0ZXN0cyAqKVxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID0gc2lnXG4gICgqKiBUbyBjb25maWd1cmUgZXhwZWN0X3Rlc3QsIGFkZCB0aGUgZm9sbG93aW5nIGF0IHRoZSB0b3Agb2YgeW91ciAubWwgZmlsZSwgb3IgaW4gc29tZVxuICAgICAgaW1wb3J0Lm1sOlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdcbiAgICAgICAgICBsZXQgcHJlX3JlZGlyZWN0X2hvb2sgKCkgPSAuLi5cbiAgICAgICAgZW5kXG4gICAgICBdfVxuXG4gICAgICBOb3RlIHRoYXQgc2luY2UgYWxsIGV4cGVjdCB0ZXN0IGFyZSBhbHNvIGlubGluZSB0ZXN0cywgdGhlIGlubGluZSB0ZXN0IGNvbmZpZ3VyYXRpb25cbiAgICAgIGFsc28gYXBwbGllcyB0byBhbGwgZXhwZWN0IHRlc3QuXG4gICopXG5cbiAgbW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgY29tbWVudF9wcmVmaXggOiB0IC0+IHN0cmluZ1xuXG4gICAgKCoqIE1lc3NhZ2UgdG8gcHJpbnQgd2hlbiBhbiBleHBlY3RhdGlvbiBjb250YWlucyBhIGJhY2t0cmFjZSAqKVxuICAgIHZhbCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIDogdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFNcbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlNcblxubW9kdWxlIHR5cGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzID1cbiAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzXG5cbm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gdDEgPSB0MlxuXG4gIGxldCBjb21tZW50X3ByZWZpeCA9IGZ1bmN0aW9uXG4gICAgfCBgQ1IgLT4gXCJDUiBcIlxuICAgIHwgYFdhcm5pbmdfZm9yX2NvbGxlY3Rvcl90ZXN0aW5nIC0+IFwiXCJcbiAgOztcblxuICBsZXQgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSB0ID1cbiAgICBQcmludGYuc3ByaW50ZlxuICAgICAge3xcbigqICVzZXhwZWN0X3Rlc3RfY29sbGVjdG9yOiBUaGlzIHRlc3QgZXhwZWN0YXRpb24gYXBwZWFycyB0byBjb250YWluIGEgYmFja3RyYWNlLlxuICAgVGhpcyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBiYWNrdHJhY2VzIGFyZSBmcmFnaWxlLlxuICAgUGxlYXNlIGNoYW5nZSB0aGlzIHRlc3QgdG8gbm90IGluY2x1ZGUgYSBiYWNrdHJhY2UuICopXG5cbnx9XG4gICAgICAoY29tbWVudF9wcmVmaXggdClcbiAgOztcbmVuZFxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjhcXDAwMFxcMDA1XFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA0MFxcMDAwXFwwMzFcXDAwMFxcMDQ2XFwwMDBcXDA0OFxcMDAwXFwwMDdcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDA2MlxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwNjdcXDAwMFxcMDY3XFwwMDBcXDEwM1xcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDVcXDAwMFxcMDk1XFwwMDBcXDEwN1xcMDAwXFwwOTVcXDAwMFxcMTEzXFwwMDBcXDAxMFxcMDAwXFwxMDRcXDAwMFxcXG4gICAgXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDEwNFxcMDAwXFwxMjJcXDAwMFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMTFcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDExNlxcMDAwXFwxMTdcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwwMTJcXDAwMFxcMTI2XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDExOVxcMDAwXFwxMjJcXDAwMFxcMDEzXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMTJcXDAwMFxcMDM5XFwwMDBcXDAxMlxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDYxXFwwMDBcXDA3MVxcMDAwXFwwNTlcXDAwMFxcMDg2XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDQ4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDNcXDAwMFxcMDI5XFwwMDBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDE4XFwwMDBcXDAyN1xcMDAwXFwwMjVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDI2XFwwMDBcXDAxNlxcMDAwXFwwMDVcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMDMwXFwwMDBcXDAxM1xcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXDAzN1xcMDAwXFxcbiAgICBcXDAzOFxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNjBcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTZcXDAwMFxcMDU4XFwwMDBcXDA2MlxcMDAwXFwwNDZcXDAwMFxcMDYzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAzM1xcMDAwXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNjBcXDAwMFxcMDcwXFwwMDBcXDA4MFxcMDAwXFwwODVcXDAwMFxcMDkwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMjhcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMTdcXDAwMFxcMDI2XFwwMDBcXDAyNFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDA5XFwwMDBcXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMzVcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDM3XFwwMDBcXDAzOVxcMDAwXFwwNDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDYxXFwwMDBcXDA0NFxcMDAwXFwwNjJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDczXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgY2hlY2sgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjMgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxNjggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2NoZWNrX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG5vdF9hdF9ib3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiA0NFxuYW5kIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxODAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAxIC0+XG4jIDkgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE4NSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDIgLT5cbiMgMTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAoIGZhbHNlIClcbiMgMTkwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMiBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gXG4gIGxldCBjb250YWluc19iYWNrdHJhY2VzIHMgPSBjaGVjayAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiMgMjAxIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuIiwib3BlbiBFeHBlY3RfdGVzdF9jb21tb25cbm1vZHVsZSBMaXN0ID0gTGlzdExhYmVsc1xuXG5tb2R1bGUgVGVzdF9vdXRjb21lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBmaWxlX2RpZ2VzdCA6IEZpbGUuRGlnZXN0LnRcbiAgICA7IGxvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gICAgOyBleHBlY3RhdGlvbnMgOiBFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb24gOiBFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICA7IHNhdmVkX291dHB1dCA6IChGaWxlLkxvY2F0aW9uLnQgKiBzdHJpbmcpIGxpc3RcbiAgICA7IHRyYWlsaW5nX291dHB1dCA6IHN0cmluZ1xuICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuVXBvbl91bnJlbGVhc2FibGVfaXNzdWUudFxuICAgIDsgdW5jYXVnaHRfZXhuIDogKGV4biAqIFByaW50ZXhjLnJhd19iYWNrdHJhY2UpIG9wdGlvblxuICAgIH1cbmVuZFxuXG5sZXQgdGVzdHNfcnVuIDogVGVzdF9vdXRjb21lLnQgbGlzdCByZWYgPSByZWYgW11cblxubGV0IHByb3RlY3QgfmZpbmFsbHkgfmYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+XG4gICAgZmluYWxseSAoKTtcbiAgICB4XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHJhaXNlIGVcbjs7XG5cbm1vZHVsZSBDdXJyZW50X2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IGN1cnJlbnQgPSByZWYgTm9uZVxuXG4gIGxldCBzZXQgfmFic29sdXRlX2ZpbGVuYW1lID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGN1cnJlbnQgOj0gU29tZSBhYnNvbHV0ZV9maWxlbmFtZVxuICAgIHwgU29tZSBfIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnNldDogYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCB1bnNldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBfIC0+IGN1cnJlbnQgOj0gTm9uZVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci51bnNldDogbm90IHNldFwiXG4gIDs7XG5cbiAgbGV0IGdldCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgU29tZSBmbiAtPiBmblxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5nZXQ6IG5vdCBzZXRcIlxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnN0YW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzYXZlZCA6IChGaWxlLkxvY2F0aW9uLnQgKiBpbnQpIGxpc3RcbiAgICA7IGNoYW4gOiBvdXRfY2hhbm5lbFxuICAgIDsgZmlsZW5hbWUgOiBGaWxlLk5hbWUudFxuICAgIH1cblxuICBleHRlcm5hbCBiZWZvcmVfdGVzdFxuICAgIDogIG91dHB1dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XCJcblxuICBleHRlcm5hbCBhZnRlcl90ZXN0XG4gICAgOiAgc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYWZ0ZXJfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmRcIlxuXG4gIGxldCBnZXRfcG9zaXRpb24gKCkgPSBwb3Nfb3V0IHN0ZG91dFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCBmaWxlbmFtZSA9IEZpbGVuYW1lLnRlbXBfZmlsZSBcImV4cGVjdC10ZXN0XCIgXCJvdXRwdXRcIiBpblxuICAgIGxldCBjaGFuID0gb3Blbl9vdXRfYmluIGZpbGVuYW1lIGluXG4gICAgYmVmb3JlX3Rlc3Qgfm91dHB1dDpjaGFuIH5zdGRvdXQgfnN0ZGVycjtcbiAgICB7IGNoYW47IGZpbGVuYW1lID0gRmlsZS5OYW1lLm9mX3N0cmluZyBmaWxlbmFtZTsgc2F2ZWQgPSBbXSB9XG4gIDs7XG5cbiAgbGV0IHJlbGF0aXZlX2ZpbGVuYW1lIHQgPSBGaWxlLk5hbWUucmVsYXRpdmVfdG8gfmRpcjooRmlsZS5pbml0aWFsX2RpciAoKSkgdC5maWxlbmFtZVxuXG4gIGxldCB3aXRoX2ljIGZuYW1lIH5mID1cbiAgICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmbmFtZSBpblxuICAgIHByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBjbG9zZV9pbiBpYykgfmY6KGZ1biAoKSAtPiBmIGljKVxuICA7O1xuXG4gIGxldCBjdXJyZW50X3Rlc3QgOiAoRmlsZS5Mb2NhdGlvbi50ICogdCkgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG4gIGxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ICgpID0gT3B0aW9uLmlzX3NvbWUgIWN1cnJlbnRfdGVzdFxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBhbV9ydW5uaW5nX2V4cGVjdF90ZXN0ID0gSW5zdGFuY2UuYW1fcnVubmluZ19leHBlY3RfdGVzdFxuXG5sZXQgZmx1c2ggKCkgPVxuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCk7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuZXJyX2Zvcm1hdHRlciAoKTtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRvdXQ7XG4gIFN0ZGxpYi5mbHVzaCBTdGRsaWIuc3RkZXJyXG47O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gIGxldCBpbnN0YW5jZSA9IEluc3RhbmNlLmdldF9jdXJyZW50ICgpIGluXG4gIGZsdXNoICgpO1xuICBJbnN0YW5jZS5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXRfZmx1c2ggaW5zdGFuY2UgbG9jYXRpb25cbjs7XG5cbm1vZHVsZSBNYWtlIChDIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlMpID0gc3RydWN0XG4gIG1vZHVsZSBJbnN0YW5jZV9pbyA6IHNpZ1xuICAgIHZhbCBzYXZlX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiB1bml0XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nXG5cbiAgICB2YWwgZXhlY1xuICAgICAgOiAgZmlsZV9kaWdlc3Q6RmlsZS5EaWdlc3QudFxuICAgICAgLT4gbG9jYXRpb246RmlsZS5Mb2NhdGlvbi50XG4gICAgICAtPiBleHBlY3RhdGlvbnM6RXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgICAgLT4gdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uOkV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgICAgLT4gZjoodW5pdCAtPiB1bml0IEMuSU8udClcbiAgICAgIC0+IHVuaXRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBJbnN0YW5jZVxuXG4gICAgbGV0IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyBsZW4gPVxuICAgICAgbGV0IHMgPSByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB8PiBDLnNhbml0aXplIGluXG4gICAgICBpZiBub3QgKENoZWNrX2JhY2t0cmFjZXMuY29udGFpbnNfYmFja3RyYWNlcyBzKVxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAubWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZVxuICAgICAgICAgIEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgXiBzXG4gICAgOztcblxuICAgIGxldCBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0ID1cbiAgICAgIFN5cy5jaGRpciAoRmlsZS5pbml0aWFsX2RpciAoKSk7XG4gICAgICBsZXQgbGFzdF9vZnMgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICAgIGFmdGVyX3Rlc3QgfnN0ZG91dCB+c3RkZXJyO1xuICAgICAgY2xvc2Vfb3V0IHQuY2hhbjtcbiAgICAgIGxldCBmbmFtZSA9IHJlbGF0aXZlX2ZpbGVuYW1lIHQgaW5cbiAgICAgIHByb3RlY3RcbiAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPiBTeXMucmVtb3ZlIGZuYW1lKVxuICAgICAgICB+ZjooZnVuICgpIC0+XG4gICAgICAgICAgd2l0aF9pYyBmbmFtZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICBsZXQgb2ZzLCBvdXRwdXRzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgdC5zYXZlZClcbiAgICAgICAgICAgICAgICB+aW5pdDooMCwgW10pXG4gICAgICAgICAgICAgICAgfmY6KGZ1biAob2ZzLCBhY2MpIChsb2MsIG5leHRfb2ZzKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKG5leHRfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgICAgICAgbmV4dF9vZnMsIChsb2MsIHMpIDo6IGFjYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhaWxpbmdfb3V0cHV0ID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChsYXN0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgIExpc3QucmV2IG91dHB1dHMsIHRyYWlsaW5nX291dHB1dCkpXG4gICAgOztcblxuICAgIGxldCBzYXZlX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvblxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCBsb2NhdGlvbiA9XG4gICAgICBsZXQgdCA9IGdldF9jdXJyZW50ICgpIGluXG4gICAgICBmbHVzaCAoKTtcbiAgICAgIHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uXG4gICAgOztcblxuICAgIGxldCAoKSA9XG4gICAgICBTdGRsaWIuYXRfZXhpdCAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoICFjdXJyZW50X3Rlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIChsb2MsIHQpIC0+XG4gICAgICAgICAgbGV0IGJsb2NrcywgdHJhaWxpbmcgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgIFwiRmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICAgICAgICAgIEVycm9yOiBwcm9ncmFtIGV4aXRlZCB3aGlsZSBleHBlY3QgdGVzdCB3YXMgcnVubmluZyFcXG5cXFxuICAgICAgICAgICAgIE91dHB1dCBjYXB0dXJlZCBzbyBmYXI6XFxuXFxcbiAgICAgICAgICAgICAlIVwiXG4gICAgICAgICAgICAoRmlsZS5OYW1lLnRvX3N0cmluZyBsb2MuZmlsZW5hbWUpXG4gICAgICAgICAgICBsb2MubGluZV9udW1iZXJcbiAgICAgICAgICAgIChsb2Muc3RhcnRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpXG4gICAgICAgICAgICAobG9jLmVuZF9wb3MgLSBsb2MubGluZV9zdGFydCk7XG4gICAgICAgICAgTGlzdC5pdGVyIGJsb2NrcyB+ZjooZnVuIChfLCBzKSAtPiBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzKTtcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzJSFcIiB0cmFpbGluZylcbiAgICA7O1xuXG4gICAgbGV0IGV4ZWMgfmZpbGVfZGlnZXN0IH5sb2NhdGlvbiB+ZXhwZWN0YXRpb25zIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb24gfmYgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGN1cnJlbnRfdGVzdCA6PSBTb21lIChsb2NhdGlvbiwgdCk7XG4gICAgICBsZXQgZmluYWxseSB1bmNhdWdodF9leG4gPVxuICAgICAgICBDLnJ1biAoZnVuICgpIC0+XG4gICAgICAgICAgQy5JTy5yZXR1cm5cbiAgICAgICAgICAgIChmbHVzaCAoKTtcbiAgICAgICAgICAgICBjdXJyZW50X3Rlc3QgOj0gTm9uZTtcbiAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgdGVzdHNfcnVuXG4gICAgICAgICAgICAgOj0geyBmaWxlX2RpZ2VzdFxuICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICA7IGV4cGVjdGF0aW9uc1xuICAgICAgICAgICAgICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICA7IHRyYWlsaW5nX291dHB1dFxuICAgICAgICAgICAgICAgIDsgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBDLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogIXRlc3RzX3J1bikpXG4gICAgICBpblxuICAgICAgbWF0Y2ggQy5ydW4gZiB3aXRoXG4gICAgICB8ICgpIC0+IGZpbmFsbHkgTm9uZVxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICAgIGZpbmFsbHkgKFNvbWUgKGV4biwgYnQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzYXZlX291dHB1dCA9IEluc3RhbmNlX2lvLnNhdmVfb3V0cHV0XG4gIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9hbmRfcmV0dXJuX291dHB1dFxuXG4gIGxldCBydW5cbiAgICAgICAgfmZpbGVfZGlnZXN0XG4gICAgICAgIH4obG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnQpXG4gICAgICAgIH5hYnNvbHV0ZV9maWxlbmFtZTpkZWZpbmVkX2luXG4gICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICB+dGFnc1xuICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgIH51bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgfmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgICBmXG4gICAgPVxuICAgIFBweF9pbmxpbmVfdGVzdF9saWIudGVzdFxuICAgICAgfmNvbmZpZzppbmxpbmVfdGVzdF9jb25maWdcbiAgICAgIH5kZXNjcjpcbiAgICAgICAgKGxhenlcbiAgICAgICAgICAobWF0Y2ggZGVzY3JpcHRpb24gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgcyAtPiBzKSlcbiAgICAgIH50YWdzXG4gICAgICB+ZmlsZW5hbWU6KEZpbGUuTmFtZS50b19zdHJpbmcgbG9jYXRpb24uZmlsZW5hbWUpXG4gICAgICB+bGluZV9udW1iZXI6bG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgIH5zdGFydF9wb3M6KGxvY2F0aW9uLnN0YXJ0X3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICB+ZW5kX3BvczoobG9jYXRpb24uZW5kX3BvcyAtIGxvY2F0aW9uLmxpbmVfc3RhcnQpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yID0gQ3VycmVudF9maWxlLmdldCAoKSBpblxuICAgICAgICAgaWYgZGVmaW5lZF9pbiA8PiByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICBcIlRyeWluZyB0byBydW4gYW4gZXhwZWN0IHRlc3QgZnJvbSB0aGUgd3JvbmcgZmlsZS5cXG5cXFxuICAgICAgICAgICAgICAtIHRlc3QgZGVjbGFyZWQgYXQgJXM6JWRcXG5cXFxuICAgICAgICAgICAgICAtIHRyeWluZyB0byBydW4gaXQgZnJvbSAlc1xcblwiXG4gICAgICAgICAgICAgZGVmaW5lZF9pblxuICAgICAgICAgICAgIGxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAgcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgKCogVG8gYXZvaWQgY2FwdHVyaW5nIG5vdC15ZXQgZmx1c2hlZCBkYXRhIG9mIHRoZSBzdGRvdXQgYnVmZmVyICopXG4gICAgICAgICAgIEMucnVuIChmdW4gKCkgLT4gQy5JTy5yZXR1cm4gKGZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHJldHVybiB4ID0geFxuZW5kXG5cbmxldCBzYW5pdGl6ZSBzID0gc1xubGV0IHJ1biBmID0gZiAoKVxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9pbnQgb2Zmc2V0X18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2ZfaW50IGNvbF9fMDA0XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb2xcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMV9cbiAgICAgOiBwb3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcG9zID0gU3RkbGliLmNvbXBhcmVcbmxldCBiZWdpbm5pbmdfb2ZfZmlsZSA9IHsgbGluZSA9IDE7IGNvbCA9IDA7IG9mZnNldCA9IDAgfVxubGV0IHNoaWZ0X3BvcyBwb3MgfmNvbHMgPSB7IHBvcyB3aXRoIGNvbCA9IHBvcy5jb2wgKyBjb2xzOyBvZmZzZXQgPSBwb3Mub2Zmc2V0ICsgY29scyB9XG5cbnR5cGUgcmFuZ2UgPVxuICB7IHN0YXJ0X3BvcyA6IHBvc1xuICA7IGVuZF9wb3MgOiBwb3NcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3JhbmdlID1cbiAgKGZ1biB7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDA5XzsgZW5kX3BvcyA9IGVuZF9wb3NfXzAxMV8gfSAtPlxuICAgICBsZXQgYm5kc19fMDA4XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVuZF9wb3NcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX3BvcyBzdGFydF9wb3NfXzAwOV8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDhfXG4gICAgIDogcmFuZ2UgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IGNvbXBhcmVfcmFuZ2UgPSBTdGRsaWIuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhbGxvY19uZXdfY2h1bmsgdCA9XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzO1xuICAgIHQuY2h1bmsgPC0gQ2h1bmsuYWxsb2MgKCk7XG4gICAgdC5jaHVua19wb3MgPC0gMFxuICA7O1xuXG4gIGxldCBhZGRfdWludDE2IHQgbiA9XG4gICAgaWYgdC5jaHVua19wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBhbGxvY19uZXdfY2h1bmsgdDtcbiAgICBDaHVuay5zZXQxNiB0LmNodW5rIH5wb3M6dC5jaHVua19wb3MgblxuICA7O1xuXG4gIGxldCBhZGRfYml0cyB0IG4gfm51bV9iaXRzID1cbiAgICBsZXQgaW50X2J1ZiA9ICh0LmludF9idWYgbHNsIG51bV9iaXRzKSBsb3IgbiBpblxuICAgIGxldCBudW1fYml0cyA9IHQubnVtX2JpdHMgKyBudW1fYml0cyBpblxuICAgIHQuaW50X2J1ZiA8LSBpbnRfYnVmO1xuICAgIGlmIG51bV9iaXRzIDwgMTZcbiAgICB0aGVuIHQubnVtX2JpdHMgPC0gbnVtX2JpdHNcbiAgICBlbHNlIChcbiAgICAgIGxldCBudW1fYml0cyA9IG51bV9iaXRzIC0gMTYgaW5cbiAgICAgIHQubnVtX2JpdHMgPC0gbnVtX2JpdHM7XG4gICAgICBhZGRfdWludDE2IHQgKGludF9idWYgbHNyIG51bV9iaXRzKTtcbiAgICAgIHQuY2h1bmtfcG9zIDwtIHQuY2h1bmtfcG9zICsgMlxuICAgICAgKCogbm8gbmVlZCB0byBjbGVhciB0aGUgYml0cyBvZiBpbnRfYnVmIHdlIGp1c3Qgd3JvdGUsIGFzIGZ1cnRoZXIgc2V0MTYgd2lsbCBpZ25vcmVcbiAgICAgICAgIHRoZXNlIGV4dHJhIGJpdHMuICopKVxuICA7O1xuXG4gIGxldCBjb250ZW50cyB0ID1cbiAgICAoKiBGbHVzaCB0aGUgY3VycmVudCBbdC5pbnRfYnVmXSAqKVxuICAgIGFkZF91aW50MTYgdCB0LmludF9idWY7XG4gICAgbGV0IHJldl9jaHVua3MgPSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcyBpblxuICAgIGxldCBjaHVua19wb3MgPSB0LmNodW5rX3BvcyBpblxuICAgIGxldCBleHRyYV9iaXRzID0gdC5udW1fYml0cyBpblxuICAgIGxldCBpbml0aWFsX3BvcyA9IHQuaW5pdGlhbF9wb3MgaW5cbiAgICBsYXp5XG4gICAgICB7IGNodW5rcyA9IExpc3QucmV2IHJldl9jaHVua3NcbiAgICAgIDsgbnVtX2J5dGVzID0gKChMaXN0Lmxlbmd0aCByZXZfY2h1bmtzIC0gMSkgKiBDaHVuay5sZW5ndGgpICsgY2h1bmtfcG9zXG4gICAgICA7IGV4dHJhX2JpdHNcbiAgICAgIDsgaW5pdGlhbF9wb3NcbiAgICAgIH1cbiAgOztcblxuICBsZXQgbG9uZ19zaGlmdCB0IG4gPVxuICAgIGxldCBuID0gcmVmIChuIC0gNSkgaW5cbiAgICB3aGlsZSAhbiA+IDAgZG9cbiAgICAgIGFkZF9iaXRzIHQgKDBiMTEwMF8wMDAwIGxvciAoIW4gbGFuZCAwYjAwMDFfMTExMSkpIH5udW1fYml0czo4O1xuICAgICAgbiA6PSAhbiBsc3IgNVxuICAgIGRvbmVcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IG4gPj0gNSAqKVxuICBsZXRbQGlubGluZSBuZXZlcl0gYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGxvbmdfc2hpZnQgdCBuO1xuICAgIGFkZF9iaXRzIHQgaW5zdHIgfm51bV9iaXRzOmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgc2hpZnQ0ID0gMGIxMF8xMF8xMF8xMFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyIH5pbnN0cl9iaXRzID1cbiAgICBpbnZhcmlhbnQgdDtcbiAgICBsZXQgbiA9IG9mZnNldCAtIHQub2Zmc2V0IGluXG4gICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDAgfCAxIHwgMiB8IDMgfCA0IC0+XG4gICAgICBsZXQgbnVtX2JpdHMgPSAobiBsc2wgMSkgKyBpbnN0cl9iaXRzIGluXG4gICAgICBhZGRfYml0cyB0ICgoc2hpZnQ0IGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpKSB+bnVtX2JpdHNcbiAgICB8IDVcbiAgICB8IDZcbiAgICB8IDdcbiAgICB8IDhcbiAgICB8IDlcbiAgICB8IDEwXG4gICAgfCAxMVxuICAgIHwgMTJcbiAgICB8IDEzXG4gICAgfCAxNFxuICAgIHwgMTVcbiAgICB8IDE2XG4gICAgfCAxN1xuICAgIHwgMThcbiAgICB8IDE5XG4gICAgfCAyMFxuICAgIHwgMjFcbiAgICB8IDIyXG4gICAgfCAyM1xuICAgIHwgMjRcbiAgICB8IDI1XG4gICAgfCAyNlxuICAgIHwgMjdcbiAgICB8IDI4XG4gICAgfCAyOVxuICAgIHwgMzBcbiAgICB8IDMxXG4gICAgfCAzMlxuICAgIHwgMzNcbiAgICB8IDM0XG4gICAgfCAzNVxuICAgIHwgMzYgLT5cbiAgICAgIGFkZF9iaXRzXG4gICAgICAgIHRcbiAgICAgICAgKCgoMGIxMTAwXzAwMDAgbG9yIChuIC0gNSkpIGxzbCBpbnN0cl9iaXRzKSBsb3IgaW5zdHIpXG4gICAgICAgIH5udW1fYml0czooOCArIGluc3RyX2JpdHMpXG4gICAgfCBfIC0+XG4gICAgICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuYWRkX2dlblwiO1xuICAgICAgYWRkX2dlbl9zbG93IHQgbiB+aW5zdHIgfmluc3RyX2JpdHNcbiAgOztcblxuICBsZXQgYWRkIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjAgfmluc3RyX2JpdHM6MVxuICBsZXQgYWRkX3R3aWNlIHQgfm9mZnNldCA9IGFkZF9nZW4gdCB+b2Zmc2V0IH5pbnN0cjowYjExMTEgfmluc3RyX2JpdHM6NFxuICBsZXQgYWRkX25ld2xpbmUgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMCB+aW5zdHJfYml0czo0XG5lbmRcblxudHlwZSBwb3NpdGlvbnMgPSB0XG5cbm1vZHVsZSBJdGVyYXRvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogcG9zaXRpb25zIC0+IHRcblxuICBleGNlcHRpb24gTm9fbW9yZVxuXG4gICgqIFthZHZhbmNlIHQgfnNraXBdIGlnbm9yZXMgW3NraXBdIHNhdmVkIHBvc2l0aW9ucyBhbmQgcmV0dXJucyB0aGUgbmV4dCBzYXZlZCBwb3NpdGlvbi5cbiAgICAgUmFpc2VzIFtOb19tb3JlXSB3aGVuIHJlYWNoaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uIHNldC4gKilcbiAgdmFsIGFkdmFuY2VfZXhuIDogdCAtPiBza2lwOmludCAtPiBwb3NcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtzIDogQ2h1bmsudCBsaXN0XG4gICAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZnJvbSBbaW5zdHJfcG9zXSBpblxuICAgICAgICAgW2NodW5rIDo6IGNodW5rc10uICopXG4gICAgICBtdXRhYmxlIG51bV9ieXRlcyA6IGludFxuICAgIDsgZXh0cmFfYml0cyA6IGludFxuICAgIDsgbXV0YWJsZSBpbnN0cl9wb3MgOiBpbnQgKCogcG9zaXRpb24gaW4gW2NodW5rXSAqKVxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSBib2wgOiBpbnRcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fYml0cyA6IGludCAoKiBOdW1iZXIgb2YgYml0cyBub3QgeWV0IGNvbnN1bWVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBwZW5kaW5nIDogcG9zIG9wdGlvblxuICAgIH1cblxuICBsZXQgY3JlYXRlICgobGF6eSBwKSA6IHBvc2l0aW9ucykgPVxuICAgIG1hdGNoIHAuY2h1bmtzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgY2h1bmsgOjogY2h1bmtzIC0+XG4gICAgICB7IGNodW5rXG4gICAgICA7IGNodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSBwLm51bV9ieXRlc1xuICAgICAgOyBleHRyYV9iaXRzID0gcC5leHRyYV9iaXRzXG4gICAgICA7IGluc3RyX3BvcyA9IDBcbiAgICAgIDsgb2Zmc2V0ID0gcC5pbml0aWFsX3Bvcy5vZmZzZXRcbiAgICAgIDsgbGluZSA9IHAuaW5pdGlhbF9wb3MubGluZVxuICAgICAgOyBib2wgPSBwLmluaXRpYWxfcG9zLm9mZnNldCAtIHAuaW5pdGlhbF9wb3MuY29sXG4gICAgICA7IGludF9idWYgPSAwXG4gICAgICA7IG51bV9iaXRzID0gMFxuICAgICAgOyBwZW5kaW5nID0gTm9uZVxuICAgICAgfVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgbGV0IG5vX21vcmUgKCkgPSByYWlzZV9ub3RyYWNlIE5vX21vcmVcblxuICBsZXRbQGlubGluZSBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gU3RkbGliLmNvbXBhcmUgKHRvX2FycmF5IHQxKSAodG9fYXJyYXkgdDIpXG5sZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfcG9zICh0b19hcnJheSB0KVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgQXRvbSBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgYXRvbSA6IHN0cmluZ1xuICAgICAgOyB1bmVzY2FwZWQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICB9XG4gIHwgTGlzdCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgZWxlbWVudHMgOiB0X29yX2NvbW1lbnQgbGlzdFxuICAgICAgfVxuXG5hbmQgdF9vcl9jb21tZW50ID1cbiAgfCBTZXhwIG9mIHRcbiAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuYW5kIGNvbW1lbnQgPVxuICB8IFBsYWluX2NvbW1lbnQgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGNvbW1lbnQgOiBzdHJpbmdcbiAgICAgIH1cbiAgfCBTZXhwX2NvbW1lbnQgb2ZcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICAgIDsgY29tbWVudHMgOiBjb21tZW50IGxpc3RcbiAgICAgIDsgc2V4cCA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgcmVjIHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgQXRvbSB7IGxvYyA9IGxvY19fMDAyXzsgYXRvbSA9IGF0b21fXzAwNF87IHVuZXNjYXBlZCA9IHVuZXNjYXBlZF9fMDA2XyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHVuZXNjYXBlZF9fMDA2XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidW5lc2NhcGVkXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICAgbGV0IGFyZ19fMDA1XyA9IHNleHBfb2Zfc3RyaW5nIGF0b21fXzAwNF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImF0b21cIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDNfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDJfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJBdG9tXCIgOjogYm5kc19fMDAxXylcbiAgICB8IExpc3QgeyBsb2MgPSBsb2NfXzAwOV87IGVsZW1lbnRzID0gZWxlbWVudHNfXzAxMV8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwOF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsZW1lbnRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAyMV8gPSBzZXhwX29mX3N0cmluZyBjb21tZW50X18wMjBfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDE5XyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDE4XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGxhaW5fY29tbWVudFwiIDo6IGJuZHNfXzAxN18pXG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zID0gaGFzaF9zZW1pX3Bvc19fMDIzX1xuICAgICAgICA7IGNvbW1lbnRzID0gY29tbWVudHNfXzAyNV9cbiAgICAgICAgOyBzZXhwID0gc2V4cF9fMDI3X1xuICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDIyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI4XyA9IHNleHBfb2ZfdCBzZXhwX18wMjdfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXhwXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI2XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2NvbW1lbnQgY29tbWVudHNfXzAyNV8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRzXCI7IGFyZ19fMDI2XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMjJfID1cbiAgICAgICAgbGV0IGFyZ19fMDI0XyA9IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBoYXNoX3NlbWlfcG9zX18wMjNfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJoYXNoX3NlbWlfcG9zXCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMl9cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cF9jb21tZW50XCIgOjogYm5kc19fMDIyXylcbiAgICAgIDogY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZSA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IGNvbXBhcmVfY29tbWVudCA9IFN0ZGxpYi5jb21wYXJlXG5cbm1vZHVsZSBGb3JnZXQgPSBzdHJ1Y3RcbiAgKCogSW4gY3BzIHRvIHByZXZlbnQgbm9uLXRhaWwgcmVjdXJzaW9uLlxuICAgICBUaGUgcG9seW1vcnBoaXNtIGluIHRoZSBzaWduYXR1cmUgZW5zdXJlcyB0aGF0IGVhY2ggZnVuY3Rpb24gcmV0dXJuc1xuICAgICBvbmx5IHRocm91Z2ggdGhlIGNvbnRpbnVhdGlvbi4gKilcbiAgbW9kdWxlIENwcyA6IHNpZ1xuICAgIHZhbCBmb3JnZXRfdCA6IHQgLT4gKFNleHAudCAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvYyA6IHRfb3JfY29tbWVudCAtPiAoU2V4cC50IG9wdGlvbiAtPiAncikgLT4gJ3JcbiAgICB2YWwgZm9yZ2V0X3RvY3MgOiB0X29yX2NvbW1lbnQgbGlzdCAtPiAoU2V4cC50IGxpc3QgLT4gJ3IpIC0+ICdyXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCByZWMgZm9yZ2V0X3QgdCBrID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBBdG9tIHsgYXRvbTsgXyB9IC0+IGsgKFNleHAuQXRvbSBhdG9tKVxuICAgICAgfCBMaXN0IHsgZWxlbWVudHM7IF8gfSAtPiBmb3JnZXRfdG9jcyBlbGVtZW50cyAoZnVuIHhzIC0+IGsgKFNleHAuTGlzdCB4cykpXG5cbiAgICBhbmQgZm9yZ2V0X3RvY3MgdG9jcyBrID1cbiAgICAgIG1hdGNoIHRvY3Mgd2l0aFxuICAgICAgfCBbXSAtPiBrIFtdXG4gICAgICB8IHRvYyA6OiB0b2NzIC0+XG4gICAgICAgIGZvcmdldF90b2MgdG9jIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBmb3JnZXRfdG9jcyB0b2NzIGtcbiAgICAgICAgICB8IFNvbWUgeCAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoeCA6OiB4cykpKVxuXG4gICAgYW5kIGZvcmdldF90b2MgdG9jIGsgPVxuICAgICAgbWF0Y2ggdG9jIHdpdGhcbiAgICAgIHwgQ29tbWVudCBfIC0+IGsgTm9uZVxuICAgICAgfCBTZXhwIHQgLT4gZm9yZ2V0X3QgdCAoZnVuIHggLT4gayAoU29tZSB4KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgdCB4ID0gQ3BzLmZvcmdldF90IHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnQgeCA9IENwcy5mb3JnZXRfdG9jIHggKGZ1biB5IC0+IHkpXG4gIGxldCB0X29yX2NvbW1lbnRzIHggPSBDcHMuZm9yZ2V0X3RvY3MgeCAoZnVuIHkgLT4geSlcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEF1dG9tYXRvbl9zdGFja19pbnRmXG5cbm1vZHVsZSBGb3JfY3N0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgVF9vcl9jb21tZW50IG9mIENzdC50X29yX2NvbW1lbnQgKiB0XG4gICAgfCBPcGVuIG9mIFBvc2l0aW9ucy5wb3MgKiB0XG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgb2ZcbiAgICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgICA7IHJldl9jb21tZW50cyA6IENzdC5jb21tZW50IGxpc3RcbiAgICAgICAgOyBzdGFjayA6IHRcbiAgICAgICAgfVxuXG4gIGxldCBlbXB0eSA9IEVtcHR5XG5cbiAgbGV0IGdldF9tYW55ID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgICB8IFRfb3JfY29tbWVudCAodCwgc3RhY2spIC0+IGxvb3AgKHQgOjogYWNjKSBzdGFja1xuICAgICAgfCBPcGVuIF8gfCBJbl9zZXhwX2NvbW1lbnQgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55XCJcbiAgICBpblxuICAgIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG4gIDs7XG5lbmRcblxubW9kdWxlIEp1c3RfcG9zaXRpb25zID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXRcblxuICBsZXQgZW1wdHkgPSAoKVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgRW1wdHlcbiAgfCBPcGVuIG9mIHRcbiAgfCBTZXhwIG9mIFNleHAudCAqIHRcblxubGV0IGVtcHR5ID0gRW1wdHlcblxubGV0IGdldF9zaW5nbGUgPSBmdW5jdGlvblxuICB8IFNleHAgKHNleHAsIEVtcHR5KSAtPiBzZXhwXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlXCJcbjs7XG5cbmxldCBnZXRfbWFueSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgfCBPcGVuIF8gLT4gZmFpbHdpdGggXCJBdXRvbWF0b25fc3RhY2suZ2V0X21hbnlcIlxuICAgIHwgU2V4cCAoc2V4cCwgc3RhY2spIC0+IGxvb3AgKHNleHAgOjogYWNjKSBzdGFja1xuICBpblxuICBmdW4gc3RhY2sgLT4gbG9vcCBbXSBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgfCBTZXhwXG5lbmRcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRva2VuX2J1ZmZlciA6IEJ1ZmZlci50ICgqKiBTdGFydGluZyBwb3NpdGlvbnMgb2YgdGhlIGN1cnJlbnQgdG9rZW4gKiopXG4gICAgOyBtdXRhYmxlIHRva2VuX3N0YXJ0X3BvcyA6IFBvc2l0aW9ucy5wb3NcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCB1bml0KSB0XG4gICAgfCBTZXhwIDogKHVuaXQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIEF1dG9tYXRvbl9zdGFjay50KSB0XG4gICAgfCBDc3QgOiAoRm9yX2NzdC50LCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KSB0XG5lbmRcblxubW9kdWxlIHJlYyBTdGF0ZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHsgbXV0YWJsZSBhdXRvbWF0b25fc3RhdGUgOiBpbnRcbiAgICA7IGtpbmQgOiAoJ3UsICdzKSBLaW5kLnRcbiAgICA7IG11dGFibGUgZGVwdGggOiBpbnQgKCoqIE51bWJlciBvZiBvcGVuZWQgI3wgd2hlbiBwYXJzaW5nIGEgYmxvY2sgY29tbWVudCAqKVxuICAgIDsgbXV0YWJsZSBibG9ja19jb21tZW50X2RlcHRoIDogaW50XG4gICAgKCoqIFN0YWNrIG9mIGlnbm9yaW5nIGRlcHRoczsgdGhlIGN1cnJlbnQgZGVwdGggaXMgcHVzaGVkXG4gICAgICAgIGVhY2ggdGltZSBhICM7IGNvbW1lbnQgaXMgZW50ZXJlZC4gKilcbiAgICA7IG11dGFibGUgaWdub3Jpbmdfc3RhY2sgOiBpbnQgbGlzdFxuICAgICgqKiBXaGVuIHBhcnNpbmcgYW4gZXNjYXBlIHNlcXVlbmNlIG9mIHRoZSBmb3JtIFwiXFxcXE5OTlwiIG9yIFwiXFxcXFhYXCIsIHRoaXMgYWNjdW11bGF0ZXNcbiAgICAgICAgdGhlIGNvbXB1dGVkIG51bWJlciAqKVxuICAgIDsgbXV0YWJsZSBlc2NhcGVkX3ZhbHVlIDogaW50ICgqKiBCdWZmZXIgZm9yIGFjY3VtdWxhdGluZyBhdG9tcyAqKVxuICAgIDsgYXRvbV9idWZmZXIgOiBCdWZmZXIudFxuICAgIDsgdXNlcl9zdGF0ZSA6ICd1XG4gICAgOyBtb2RlIDogKCd1LCAncykgTW9kZS50XG4gICAgOyBtdXRhYmxlIGZ1bGxfc2V4cHMgOiBpbnRcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50ICgqKiBnbG9iYWwgb2Zmc2V0ICoqKVxuICAgIDsgbXV0YWJsZSBsaW5lX251bWJlciA6IGludFxuICAgIDsgbXV0YWJsZSBib2xfb2Zmc2V0IDogaW50ICgqKiBvZmZzZXQgb2YgYmVnaW5uaW5nIG9mIGxpbmUgKiopXG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIE1vZGUgOiBzaWdcbiAgdHlwZSAoJ3UsICdzKSB0ID1cbiAgICB8IFNpbmdsZVxuICAgIHwgTWFueVxuICAgIHwgRWFnZXIgb2ZcbiAgICAgICAgeyBnb3Rfc2V4cCA6ICgndSwgJ3MpIFN0YXRlLnQgLT4gJ3MgLT4gJ3NcbiAgICAgICAgOyBtdXRhYmxlIG5vX3NleHBfaXNfZXJyb3IgOiBib29sXG4gICAgICAgIH1cbmVuZCA9XG4gIE1vZGVcblxubW9kdWxlIHR5cGUgQXV0b21hdG9uX3N0YXRlID0gc2lnXG4gIG1vZHVsZSBDb250ZXh0ID0gQ29udGV4dFxuICBtb2R1bGUgRm9yX2NzdCA9IEZvcl9jc3RcbiAgbW9kdWxlIEtpbmQgPSBLaW5kXG4gIG1vZHVsZSBNb2RlID0gTW9kZVxuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZVxuXG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIFN0YXRlLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2luaXRpYWxfcG9zOlBvc2l0aW9ucy5wb3NcbiAgICAtPiAoJ3UsICdzKSBNb2RlLnRcbiAgICAtPiAoJ3UsICdzKSBLaW5kLnRcbiAgICAtPiAoJ3UsICdzKSB0XG5cbiAgdmFsIHJlc2V0IDogP3BvczpQb3NpdGlvbnMucG9zIC0+IF8gdCAtPiB1bml0XG4gIHZhbCBwb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgXykgdCAtPiBQb3NpdGlvbnMudFxuICB2YWwgbW9kZSA6ICgndSwgJ3MpIHQgLT4gKCd1LCAncykgTW9kZS50XG5cbiAgKCoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGZlZCB0byB0aGUgcGFyc2VyICopXG4gIHZhbCBvZmZzZXQgOiBfIHQgLT4gaW50XG5cbiAgKCoqIFBvc2l0aW9uIGluIHRoZSB0ZXh0ICopXG4gIHZhbCBsaW5lIDogXyB0IC0+IGludFxuXG4gIHZhbCBjb2x1bW4gOiBfIHQgLT4gaW50XG5cbiAgKCoqIFdoZXRoZXIgdGhlcmUgYXJlIHNvbWUgdW5jbG9zZWQgcGFyZW50aGVzZXMgKilcbiAgdmFsIGhhc191bmNsb3NlZF9wYXJlbiA6ICgndSwgJ3MpIHQgLT4gYm9vbFxuXG4gIHZhbCBzZXRfZXJyb3Jfc3RhdGUgOiBfIHQgLT4gdW5pdFxuXG4gICgqKi8qKilcblxuICAoKl8gT25seSBmb3IgY29udmVydGluZyBlcnJvcnMgdG8gdGhlIG9sZCBwYXJzZXIgZXJyb3JzICopXG4gIHZhbCBhdG9tX2J1ZmZlciA6IF8gdCAtPiBCdWZmZXIudFxuXG4gICgqXyBGb3IgY292ZXJhdGUgdGVzdHMgKilcbiAgdmFsIGF1dG9tYXRvbl9zdGF0ZSA6ICgndSwgJ3MpIHQgLT4gaW50XG4gIHZhbCBjb250ZXh0IDogXyB0IC0+IENvbnRleHQudFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlX2ludGZcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG5vcGVuIFN0YXRlXG5cbmxldCBpbml0aWFsX3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBQb3NpdGlvbnMucG9zIC0+IHUgPVxuICBmdW4ga2luZCBpbml0aWFsX3BvcyAtPlxuICBtYXRjaCBraW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IFNleHAgLT4gKClcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLmNyZWF0ZSB+aW5pdGlhbF9wb3MgKClcbiAgfCBDc3QgLT5cbiAgICAoKiBbdG9rZW5fc3RhcnRfcG9zXSBpcyBzZXQgdG8gYSBkdW1teSBsb2NhdGlvbiBoZXJlLiBJdCBpcyBwcm9wZXJseSBzZXQgd2hlbiB3ZVxuICAgICAgIHN0YXJ0IHRvIGNhcHR1cmUgYSB0b2tlbiBmcm9tIHRoZSBpbnB1dCAqKVxuICAgIHsgdG9rZW5fYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAxMjg7IHRva2VuX3N0YXJ0X3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSB9XG47O1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3N0YXRlLnByaW50X2NvbnN0YW50cyAoKSAqKVxubGV0IGluaXRpYWxfc3RhdGUgPSAwXG5sZXQgZXJyb3Jfc3RhdGUgPSAxXG5cbigqJCopXG5cbmxldCBjcmVhdGUgPyhpbml0aWFsX3BvcyA9IFBvc2l0aW9ucy5iZWdpbm5pbmdfb2ZfZmlsZSkgbW9kZSBraW5kID1cbiAgeyBraW5kXG4gIDsgZGVwdGggPSAwXG4gIDsgYXV0b21hdG9uX3N0YXRlID0gaW5pdGlhbF9zdGF0ZVxuICA7IGJsb2NrX2NvbW1lbnRfZGVwdGggPSAwXG4gIDsgaWdub3Jpbmdfc3RhY2sgPSBbXVxuICA7IGVzY2FwZWRfdmFsdWUgPSAwXG4gIDsgYXRvbV9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyOFxuICA7IHVzZXJfc3RhdGUgPSBpbml0aWFsX3VzZXJfc3RhdGUga2luZCBpbml0aWFsX3Bvc1xuICA7IG1vZGVcbiAgOyBmdWxsX3NleHBzID0gMFxuICA7IG9mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldFxuICA7IGxpbmVfbnVtYmVyID0gaW5pdGlhbF9wb3MubGluZVxuICA7IGJvbF9vZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXQgLSBpbml0aWFsX3Bvcy5jb2xcbiAgfVxuOztcblxubGV0IG1vZGUgdCA9IHQubW9kZVxubGV0IHBvc2l0aW9ucyB0ID0gUG9zaXRpb25zLkJ1aWxkZXIuY29udGVudHMgdC51c2VyX3N0YXRlXG5sZXQgYXRvbV9idWZmZXIgdCA9IHQuYXRvbV9idWZmZXJcbmxldCBvZmZzZXQgc3RhdGUgPSBzdGF0ZS5vZmZzZXRcbmxldCBsaW5lIHN0YXRlID0gc3RhdGUubGluZV9udW1iZXJcbmxldCBjb2x1bW4gc3RhdGUgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG5sZXQgcG9zaXRpb24gdCA9IHsgUG9zaXRpb25zLmNvbCA9IGNvbHVtbiB0OyBsaW5lID0gbGluZSB0OyBvZmZzZXQgPSBvZmZzZXQgdCB9XG5cbmxldCByZXNldF91c2VyX3N0YXRlIDogdHlwZSB1IHMuICh1LCBzKSB0IC0+IHVuaXQgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIucmVzZXQgdC51c2VyX3N0YXRlIChwb3NpdGlvbiB0KVxuICB8IENzdCAtPiBCdWZmZXIuY2xlYXIgdC51c2VyX3N0YXRlLnRva2VuX2J1ZmZlclxuOztcblxubGV0IHJlc2V0ID8ocG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSB0ID1cbiAgdC5kZXB0aCA8LSAwO1xuICB0LmF1dG9tYXRvbl9zdGF0ZSA8LSBpbml0aWFsX3N0YXRlO1xuICB0LmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gMDtcbiAgdC5pZ25vcmluZ19zdGFjayA8LSBbXTtcbiAgdC5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIHQuZnVsbF9zZXhwcyA8LSAwO1xuICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICB0LmxpbmVfbnVtYmVyIDwtIHBvcy5saW5lO1xuICB0LmJvbF9vZmZzZXQgPC0gcG9zLm9mZnNldCAtIHBvcy5jb2w7XG4gIHJlc2V0X3VzZXJfc3RhdGUgdDtcbiAgQnVmZmVyLmNsZWFyIHQuYXRvbV9idWZmZXJcbjs7XG5cbmxldCBjb250ZXh0IHN0YXRlIDogQ29udGV4dC50ID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IF8gOjogXyAtPiBTZXhwX2NvbW1lbnRcbiAgfCBbXSAtPiBTZXhwXG47O1xuXG5sZXQgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlID0gc3RhdGUuZGVwdGggPiAwXG5sZXQgc2V0X2Vycm9yX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIGVycm9yX3N0YXRlXG5sZXQgYXV0b21hdG9uX3N0YXRlIHN0YXRlID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFJlYXNvbiA9IHN0cnVjdFxuICAoKl8gU29tZSBvZiB0aGVzZSBjb21lIGZyb20gW1BhcnNleHBfc3ltYm9saWNfYXV0b21hdG9uLlBhcnNlX2Vycm9yX3JlYXNvbl0uICopXG4gIHR5cGUgdCA9XG4gICAgKCokIFBhcnNleHBfY2luYXBzX2hlbHBlcnMuR2VuX3BhcnNlX2Vycm9yLnByaW50X2NvbnN0cnVjdG9ycyAoKSAqKVxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2RlY19lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG4gICAgfCBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxuICAgIHwgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbiAgICAoKiQqKVxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0XG4gICAgfCBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gICAgfCBUb29fbWFueV9zZXhwc1xuICAgIHwgVW5jbG9zZWRfcGFyZW5cbmVuZFxuXG5tb2R1bGUgdHlwZSBQYXJzZV9lcnJvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gIGVuZFxuICBbQEBvY2FtbC5kb2MgXCJAaW5saW5lXCJdXG5cbiAgW0BAQGVuZF1cblxuICB2YWwgcG9zaXRpb24gOiB0IC0+IFBvc2l0aW9ucy5wb3NcbiAgdmFsIG1lc3NhZ2UgOiB0IC0+IHN0cmluZ1xuXG4gICgqKiBSZXBvcnQgYW4gZXJyb3IgaW4gYSBzdHlsZSBzaW1pbGFyIHRvIE9DYW1sLCBmb3IgaW5zdGFuY2U6XG5cbiAgICAgIEZpbGUgXCJibGFoXCIsIGxpbmUgNDIsIGNoYXJhY3RlciAxMDpcbiAgICAgIEVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcbiAgICAgIHVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nLlxuICAqKVxuICB2YWwgcmVwb3J0IDogRm9ybWF0LmZvcm1hdHRlciAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdCAtPiB1bml0XG5cbiAgZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHRcblxuICAoKiovKiopXG5cbiAgbW9kdWxlIFByaXZhdGUgOiBzaWdcbiAgICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgICAoKiogVG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIG9sZCBwYXJzZXIgc29tZXRpbWVzIHJhaXNlZCBbRmFpbHVyZV0gYW5kIHNvbWV0aW1lc1xuICAgICAgICByYWlzZWQgW1BhcnNlX2Vycm9yXSAqKVxuICAgIHZhbCBvbGRfcGFyc2VyX2V4biA6IHQgLT4gWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG5cbiAgICB2YWwgcmFpc2UgOiBSZWFzb24udCAtPiBQb3NpdGlvbnMucG9zIC0+IGF0X2VvZjpib29sIC0+IGF0b21fYnVmZmVyOkJ1ZmZlci50IC0+ICdhXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VfZXJyb3JfaW50ZlxuXG50eXBlIHQgPVxuICB7IHBvc2l0aW9uIDogUG9zaXRpb25zLnBvc1xuICA7IG1lc3NhZ2UgOiBzdHJpbmdcbiAgOyBvbGRfcGFyc2VyX2V4biA6IFsgYFBhcnNlX2Vycm9yIHwgYEZhaWx1cmUgXVxuICB9XG5cbmxldCBzZXhwX29mX3QgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gPSBfIH0gOiBTZXhwLnQgPVxuICBMaXN0XG4gICAgWyBMaXN0IFsgQXRvbSBcInBvc2l0aW9uXCI7IFBvc2l0aW9ucy5zZXhwX29mX3BvcyBwb3NpdGlvbiBdXG4gICAgOyBMaXN0IFsgQXRvbSBcIm1lc3NhZ2VcIjsgc2V4cF9vZl9zdHJpbmcgbWVzc2FnZSBdXG4gICAgXVxuOztcblxubGV0IHBvc2l0aW9uIHQgPSB0LnBvc2l0aW9uXG5sZXQgbWVzc2FnZSB0ID0gdC5tZXNzYWdlXG5sZXQgb2xkX3BhcnNlcl9leG4gdCA9IHQub2xkX3BhcnNlcl9leG5cblxubGV0IHJlcG9ydCBwcGYgfmZpbGVuYW1lIHQgPVxuICBsZXQgcG9zID0gcG9zaXRpb24gdCBpblxuICBsZXQgbXNnID0gbWVzc2FnZSB0IGluXG4gIEZvcm1hdC5mcHJpbnRmXG4gICAgcHBmXG4gICAgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlciAlZDpcXG5FcnJvcjogcy1leHByZXNzaW9uIHBhcnNpbmcgZXJyb3I7XFxuJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgcG9zLmxpbmVcbiAgICBwb3MuY29sXG4gICAgbXNnXG47O1xuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIGFyZzBfXzAwMV8gLT5cbiAgICAgIGxldCByZXMwX18wMDJfID0gc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhcnNlX2Vycm9yLm1sLlBhcnNlX2Vycm9yXCI7IHJlczBfXzAwMl8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgKHJlYXNvbiA6IFJlYXNvbi50KSBwb3NpdGlvbiB+YXRfZW9mIH5hdG9tX2J1ZmZlciA9XG4gIGxldCBtZXNzYWdlID1cbiAgICAoKiBUaGVzZSBtZXNzYWdlcyB3aGVyZSBjaG9vc2VuIHN1Y2ggdGhhdCB3ZSBjYW4gYnVpbGQgdGhlIHZhcmlvdXMgU2V4cGxpYiBwYXJzaW5nXG4gICAgICAgZnVuY3Rpb25zIG9uIHRvcCBvZiBQYXJzZXhwIGFuZCBrZWVwIHRoZSBzYW1lIGV4Y2VwdGlvbnMuXG5cbiAgICAgICBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoaXMsIGEgc2ltcGxlIGxheWVyIG9uIHRvcCBvZiBwYXJzZXhwIHRvIGltcGxlbWVudCB0aGVcbiAgICAgICBzZXhwbGliIEFQSSBpcyBwYXNzaW5nIGFsbCB0aGUgc2V4cGxpYiB0ZXN0cy5cblxuICAgICAgIE5vdGUgdGhhdCBwYXJzZXhwIG1hdGNoZXMgdGhlIHNlbWFudGljIG9mIFNleHAucGFyc2Ugd2hpY2ggaXMgc2xpZ2h0bHlcbiAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb2NhbWxsZXgvb2NhbWx5YWNjIGJhc2VkIHBhcnNlciBvZiBTZXhwbGliLiBUaGUgbGF0dGVyIG9uZVxuICAgICAgIGlzIGxlc3MgdGVzdGVkIGFuZCBhc3N1bWVkIHRvIGJlIGxlc3MgdXNlZC4gKilcbiAgICBtYXRjaCByZWFzb24gd2l0aFxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2VcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZSAtPiBcInVudGVybWluYXRlZCBkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZyAtPiBcInVudGVybWluYXRlZCBxdW90ZWQgc3RyaW5nXCJcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50IC0+IFwidW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnRcIlxuICAgIHwgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZSAtPiBcImVzY2FwZSBzZXF1ZW5jZSBpbiBxdW90ZWQgc3RyaW5nIG91dCBvZiByYW5nZVwiXG4gICAgfCBVbmNsb3NlZF9wYXJlbiAtPiBcInVuY2xvc2VkIHBhcmVudGhlc2VzIGF0IGVuZCBvZiBpbnB1dFwiXG4gICAgfCBUb29fbWFueV9zZXhwcyAtPiBcInMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhXCJcbiAgICB8IENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZCAtPiBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyOiAnKSdcIlxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tIC0+XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgKEJ1ZmZlci5jb250ZW50cyBhdG9tX2J1ZmZlcikgXCJ8XCJcbiAgICAgIHRoZW4gXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCJcbiAgICAgIGVsc2UgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCJcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHAgLT4gXCJ1bnRlcm1pbmF0ZWQgc2V4cCBjb21tZW50XCJcbiAgICB8IFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyIC0+XG4gICAgICBpZiBhdF9lb2ZcbiAgICAgIHRoZW4gXCJ1bmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBhZnRlciBjYXJyaWFnZSByZXR1cm5cIlxuICAgICAgZWxzZSBcInVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgfCBOb19zZXhwX2ZvdW5kX2luX2lucHV0IC0+IFwibm8gcy1leHByZXNzaW9uIGZvdW5kIGluIGlucHV0XCJcbiAgICB8IEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUGFyc2VyX2F1dG9tYXRvbjogcGFyc2VyIGlzIGRlYWRcIlxuICBpblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPVxuICAgIG1hdGNoIHJlYXNvbiwgYXRfZW9mIHdpdGhcbiAgICB8IFRvb19tYW55X3NleHBzLCBfIHwgXywgdHJ1ZSAtPiBgRmFpbHVyZVxuICAgIHwgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tLCBfXG4gICAgICB3aGVuIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIiAtPiBgRmFpbHVyZVxuICAgIHwgXyAtPiBgUGFyc2VfZXJyb3JcbiAgaW5cbiAgcmFpc2UgKFBhcnNlX2Vycm9yIHsgcG9zaXRpb247IG1lc3NhZ2U7IG9sZF9wYXJzZXJfZXhuIH0pXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVhc29uID0gUmVhc29uXG5cbiAgbGV0IG9sZF9wYXJzZXJfZXhuID0gb2xkX3BhcnNlcl9leG5cbiAgbGV0IHJhaXNlID0gcmFpc2VcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEF1dG9tYXRvbl9zdGF0ZVxub3BlbiBTdGF0ZVxuXG5sZXQgcmFpc2VfZXJyb3IgOiB0eXBlIGEgYi4gKGEsIGIpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IF8gPVxuICBmdW4gc3RhdGUgfmF0X2VvZiByZWFzb24gLT5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBQYXJzZV9lcnJvci5Qcml2YXRlLnJhaXNlXG4gICAgcmVhc29uXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbiAgICB+YXRfZW9mXG4gICAgfmF0b21fYnVmZmVyOnN0YXRlLmF0b21fYnVmZmVyXG47O1xuXG50eXBlIG5vbnJlYyBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLkNvbnRleHQudCA9XG4gIHwgU2V4cF9jb21tZW50XG4gIHwgU2V4cFxuXG5sZXQgY29udGV4dCA9IEF1dG9tYXRvbl9zdGF0ZS5jb250ZXh0XG5cbnR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gJ3MgLT4gJ3NcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbmVuZFxuXG5tb2R1bGUgRXBzaWxvbiA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBBdXRvbWF0b25fc3RhdGUudCAtPiAncyAtPiAnc1xuXG4gIG1vZHVsZSBQb2x5ID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHsgZiA6ICd1ICdzLiAoJ3UsICdzKSB0IH0gW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmRcblxubGV0IGN1cnJlbnRfcG9zID8oZGVsdGEgPSAwKSBzdGF0ZSA6IFBvc2l0aW9ucy5wb3MgPVxuICBsZXQgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0ICsgZGVsdGEgaW5cbiAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXI7IGNvbCA9IG9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXQ7IG9mZnNldCB9XG47O1xuXG5sZXQgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSB4ID0gc3RhdGUuYXV0b21hdG9uX3N0YXRlIDwtIHhcbmxldCBhZHZhbmNlIHN0YXRlID0gc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIDFcblxubGV0IGFkdmFuY2VfZW9sIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIGxldCBuZXdsaW5lX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICBzdGF0ZS5vZmZzZXQgPC0gbmV3bGluZV9vZmZzZXQgKyAxO1xuICBzdGF0ZS5ib2xfb2Zmc2V0IDwtIHN0YXRlLm9mZnNldDtcbiAgc3RhdGUubGluZV9udW1iZXIgPC0gc3RhdGUubGluZV9udW1iZXIgKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF9uZXdsaW5lIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDpuZXdsaW5lX29mZnNldFxuICB8IF8gLT4gKClcbjs7XG5cbmxldCBibG9ja19jb21tZW50X2RlcHRoIHN0YXRlID0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aFxuXG5sZXQgYWRkX3Rva2VuX2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgY2hhcjtcbiAgICBzdGFja1xuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgc3RhY2tcbjs7XG5cbmxldCBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBpc19pZ25vcmluZyBzdGF0ZSA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHAgLT4gZmFsc2VcbiAgfCBTZXhwX2NvbW1lbnQgLT4gdHJ1ZVxuOztcblxubGV0IGlzX25vdF9pZ25vcmluZyBzdGF0ZSA9IG5vdCAoaXNfaWdub3Jpbmcgc3RhdGUpXG5cbmxldCBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlID1cbiAgbGV0IGlzX3NpbmdsZSA9XG4gICAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gICAgfCBTaW5nbGUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBpc19zaW5nbGUgJiYgc3RhdGUuZnVsbF9zZXhwcyA+IDAgJiYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBUb29fbWFueV9zZXhwc1xuOztcblxubGV0IGFkZF9wb3Mgc3RhdGUgfmRlbHRhID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkIHN0YXRlLnVzZXJfc3RhdGUgfm9mZnNldDooc3RhdGUub2Zmc2V0ICsgZGVsdGEpXG47O1xuXG5sZXQgYWRkX2ZpcnN0X2NoYXIgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgY2hhcjtcbiAgKCogRm9yIG5vbi1xdW90ZWQgYXRvbXMsIHdlIHNhdmUgYm90aCBwb3NpdGlvbnMgYXQgdGhlIGVuZC4gV2UgY2FuIGFsd2F5cyBkZXRlcm1pbmUgdGhlXG4gICAgIHN0YXJ0IHBvc2l0aW9uIGZyb20gdGhlIGVuZCBwb3NpdGlvbiBhbmQgdGhlIGF0b20gbGVuZ3RoIGZvciBub24tcXVvdGVkIGF0b21zLlxuXG4gICAgIERvaW5nIGl0IHRoaXMgd2F5IGFsbG93cyB1cyB0byBkZXRlY3Qgc2luZ2xlIGNoYXJhY2F0ZXIgYXRvbXMgZm9yIHdoaWNoIHdlIG5lZWQgdG9cbiAgICAgc2F2ZSB0aGUgcG9zaXRpb24gdHdpY2UuICopXG4gIHN0YWNrXG47O1xuXG5sZXQgZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJyMnO1xuICBzdGFja1xuOztcblxubGV0IHN0YXJ0X3F1b3RlZF9zdHJpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgY2hlY2tfbmV3X3NleHBfYWxsb3dlZCBzdGF0ZTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICdcIic7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG47O1xuXG5sZXQgYWRkX2VzY2FwZWQgc3RhdGUgYyBzdGFjayA9XG4gIGxldCBjJyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnbicgLT4gJ1xcbidcbiAgICB8ICdyJyAtPiAnXFxyJ1xuICAgIHwgJ2InIC0+ICdcXGInXG4gICAgfCAndCcgLT4gJ1xcdCdcbiAgICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1wiJyAtPiBjXG4gICAgfCBfIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xcXFwnO1xuICAgICAgY1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYyc7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgJ1xccic7XG4gIHN0YWNrXG47O1xuXG5sZXQgZGVjX3ZhbCBjID0gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG5cbmxldCBoZXhfdmFsIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJ1xuICB8ICdhJyAuLiAnZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgfCBfIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG47O1xuXG5sZXQgYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBjb21tZW50X2FkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgKiAxMCkgKyBkZWNfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBpZiB2YWx1ZSA+IDI1NSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgRXNjYXBlX3NlcXVlbmNlX291dF9vZl9yYW5nZTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGM7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIGxldCB2YWx1ZSA9IChzdGF0ZS5lc2NhcGVkX3ZhbHVlIGxzbCA0KSBsb3IgaGV4X3ZhbCBjIGluXG4gIHN0YXRlLmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLmF0b21fYnVmZmVyIChDaGFyLmNociB2YWx1ZSk7XG4gIGFkZF90b2tlbl9jaGFyIHN0YXRlIGMgc3RhY2tcbjs7XG5cbmxldCBvcGVuaW5nIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIE9wZW4gc3RhY2sgZWxzZSBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICB0aGVuIChcbiAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBPcGVuIHN0YWNrKVxuICAgIGVsc2Ugc3RhY2tcbiAgfCBDc3QgLT4gT3BlbiAoY3VycmVudF9wb3Mgc3RhdGUsIHN0YWNrKVxuOztcblxubGV0IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZSA9XG4gIFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0XG4gICAgc3RhdGUudXNlcl9zdGF0ZVxuICAgIHsgbGluZSA9IHN0YXRlLmxpbmVfbnVtYmVyXG4gICAgOyBjb2wgPSBzdGF0ZS5vZmZzZXQgLSBzdGF0ZS5ib2xfb2Zmc2V0XG4gICAgOyBvZmZzZXQgPSBzdGF0ZS5vZmZzZXRcbiAgICB9XG47O1xuXG5sZXQgcmVzZXRfcG9zaXRpb25zIDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiB1bml0ID1cbiAgZnVuIHN0YXRlIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBkb19yZXNldF9wb3NpdGlvbnMgc3RhdGVcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHAgLT4gKClcbiAgfCBDc3QgLT4gKClcbjs7XG5cbmxldCB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgbWF0Y2ggc3RhdGUubW9kZSB3aXRoXG4gIHwgU2luZ2xlIHwgTWFueSAtPiBzdGFja1xuICB8IEVhZ2VyIHsgZ290X3NleHAgPSBmOyBfIH0gLT5cbiAgICAoKiBNb2RpZnkgdGhlIG9mZnNldCBzbyB0aGF0IFtmXSBnZXQgYSBzdGF0ZSBwb2ludGluZyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50XG4gICAgICAgcy1leHByZXNzaW9uICopXG4gICAgbGV0IHNhdmVkX29mZnNldCA9IHN0YXRlLm9mZnNldCBpblxuICAgIHN0YXRlLm9mZnNldCA8LSBzdGF0ZS5vZmZzZXQgKyBkZWx0YTtcbiAgICBsZXQgc2F2ZWRfZnVsbF9zZXhwcyA9IHN0YXRlLmZ1bGxfc2V4cHMgaW5cbiAgICAobWF0Y2ggZiBzdGF0ZSBzdGFjayB3aXRoXG4gICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gICAgICAgcmFpc2UgZVxuICAgICB8IHN0YWNrIC0+XG4gICAgICAgKCogVGhpcyBhc3NlcnQgaXMgbm90IGEgZnVsbCBwcm90ZWN0aW9uIGFnYWluc3QgdGhlIHVzZXIgbXV0YXRpbmcgdGhlIHN0YXRlIGJ1dFxuICAgICAgICAgIGl0IHNob3VsZCBjYXRjaCBtb3N0IGNhc2VzLiAqKVxuICAgICAgIGFzc2VydCAoc3RhdGUub2Zmc2V0ID0gc2F2ZWRfb2Zmc2V0ICsgZGVsdGEgJiYgc3RhdGUuZnVsbF9zZXhwcyA9IHNhdmVkX2Z1bGxfc2V4cHMpO1xuICAgICAgIHN0YXRlLm9mZnNldCA8LSBzYXZlZF9vZmZzZXQ7XG4gICAgICAgcmVzZXRfcG9zaXRpb25zIHN0YXRlO1xuICAgICAgIHN0YWNrKVxuOztcblxubGV0IGlzX3RvcF9sZXZlbCBzdGF0ZSA9IGlzX25vdF9pZ25vcmluZyBzdGF0ZSAmJiBzdGF0ZS5kZXB0aCA9IDBcblxubGV0IGNvbW1lbnRfYWRkZWRfYXNzdW1pbmdfY3N0IHN0YXRlIHN0YWNrIH5kZWx0YSA9XG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZSB0aGVuIHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgZWxzZSBzdGFja1xuOztcblxubGV0IG1heWJlX3BvcF9pZ25vcmluZ19zdGFjayBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlLmlnbm9yaW5nX3N0YWNrIHdpdGhcbiAgfCBpbm5lcl9jb21tZW50X2RlcHRoIDo6IF90bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPiBzdGF0ZS5kZXB0aCAtPlxuICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6ZmFsc2UgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogdGwgd2hlbiBpbm5lcl9jb21tZW50X2RlcHRoID0gc3RhdGUuZGVwdGggLT5cbiAgICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSB0bDtcbiAgICB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHNleHBfYWRkZWQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHMgLT4gZGVsdGE6aW50IC0+IHMgPVxuICBmdW4gc3RhdGUgc3RhY2sgfmRlbHRhIC0+XG4gIGxldCBpc19jb21tZW50ID0gbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlIGluXG4gIGlmIGlzX3RvcF9sZXZlbCBzdGF0ZVxuICB0aGVuIChcbiAgICBpZiBub3QgaXNfY29tbWVudCB0aGVuIHN0YXRlLmZ1bGxfc2V4cHMgPC0gc3RhdGUuZnVsbF9zZXhwcyArIDE7XG4gICAgaWYgKG5vdCBpc19jb21tZW50KVxuICAgICAgIHx8XG4gICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICAgfCBDc3QgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YVxuICAgIGVsc2Ugc3RhY2spXG4gIGVsc2Ugc3RhY2tcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0IGFjYyA6IEF1dG9tYXRvbl9zdGFjay50IC0+IEF1dG9tYXRvbl9zdGFjay50ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBPcGVuIHN0YWNrIC0+IFNleHAgKExpc3QgYWNjLCBzdGFjaylcbiAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbWFrZV9saXN0IChzZXhwIDo6IGFjYykgc3RhY2tcbjs7XG5cbmxldCBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCAoc3RhY2sgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50KVxuICA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPVxuICBtYXRjaCBzdGFjayB3aXRoXG4gIHwgSW5fc2V4cF9jb21tZW50IHIgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnQgeyByIHdpdGggcmV2X2NvbW1lbnRzID0gY29tbWVudCA6OiByLnJldl9jb21tZW50cyB9XG4gIHwgXyAtPiBUX29yX2NvbW1lbnQgKENvbW1lbnQgY29tbWVudCwgc3RhY2spXG47O1xuXG5sZXQgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgSW5fc2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgcmV2X2NvbW1lbnRzOyBzdGFjayB9IC0+XG4gICAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID1cbiAgICAgICAgU2V4cF9jb21tZW50IHsgaGFzaF9zZW1pX3BvczsgY29tbWVudHMgPSBMaXN0LnJldiByZXZfY29tbWVudHM7IHNleHAgfVxuICAgICAgaW5cbiAgICAgIGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrXG4gICAgfCBzdGFjayAtPiBUX29yX2NvbW1lbnQgKFNleHAgc2V4cCwgc3RhY2spXG47O1xuXG5sZXQgcmVjIG1ha2VfbGlzdF9jc3QgZW5kX3BvcyBhY2MgOiBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC50IC0+IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnRcbiAgPSBmdW5jdGlvblxuICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbWFrZV9saXN0X2NzdCBlbmRfcG9zICh0IDo6IGFjYykgc3RhY2tcbiAgICB8IE9wZW4gKHN0YXJ0X3Bvcywgc3RhY2spIC0+XG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gTGlzdCB7IGxvYyA9IHsgc3RhcnRfcG9zOyBlbmRfcG9zIH07IGVsZW1lbnRzID0gYWNjIH0gaW5cbiAgICAgIGFkZF9zZXhwX3RvX3N0YWNrX2NzdCBzZXhwIHN0YWNrXG4gICAgfCBFbXB0eSB8IEluX3NleHBfY29tbWVudCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNsb3NpbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGlmIHN0YXRlLmRlcHRoID4gMFxuICB0aGVuIChcbiAgICBsZXQgc3RhY2sgOiBzID1cbiAgICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgICAgKCogTm90ZSB3ZSBzdG9yZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZSBpbiBbUG9zaXRpb25zLnRdLCBzbyB3ZSB1c2UgW2RlbHRhOjBdLFxuICAgICAgICAgICB3aGlsZSBpbiB0aGUgW0NzdF0gY2FzZSB3ZSBzYXZlIGRpcmVjdGx5IHRoZSBmaW5hbCByYW5nZXMsIHNvIHdlIHVzZVxuICAgICAgICAgICBbZGVsdGE6MV0uICopXG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIHN0YWNrXG4gICAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gbWFrZV9saXN0IFtdIHN0YWNrIGVsc2Ugc3RhY2tcbiAgICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgICBtYWtlX2xpc3QgW10gc3RhY2spXG4gICAgICAgIGVsc2Ugc3RhY2tcbiAgICAgIHwgQ3N0IC0+IG1ha2VfbGlzdF9jc3QgKGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YToxKSBbXSBzdGFja1xuICAgIGluXG4gICAgc3RhdGUuZGVwdGggPC0gc3RhdGUuZGVwdGggLSAxO1xuICAgIHNleHBfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gIGVsc2UgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbjs7XG5cbmxldCBtYWtlX2xvYyA/KGRlbHRhID0gMCkgKHN0YXRlIDogKEF1dG9tYXRvbl9zdGF0ZS5Gb3JfY3N0LnQsIF8pIEF1dG9tYXRvbl9zdGF0ZS50KVxuICA6IFBvc2l0aW9ucy5yYW5nZVxuICA9XG4gIHsgc3RhcnRfcG9zID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3M7IGVuZF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGEgfVxuOztcblxuKCogVGhpcyBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBwb3NpdGlvbiBleGFjdGx5IGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYVxuICAgbm9uLXF1b3RlZCBhdG9tICopXG5sZXQgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b20gPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBhdG9tIGluXG4gIGlmIGxlbiA9IDFcbiAgdGhlbiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfdHdpY2Ugc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgLSAxKVxuICBlbHNlIChcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLWxlbik7XG4gICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKSlcbjs7XG5cbmxldCBlcHNfcHVzaF9hdG9tIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbTpzdHI7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgICAgU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICB8IENzdCAtPlxuICAgICAgbGV0IGxvYyA6IFBvc2l0aW9ucy5yYW5nZSA9XG4gICAgICAgIHsgc3RhcnRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOigtU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgICAgIDsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTowXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgc2V4cCA6IENzdC50ID0gQXRvbSB7IGxvYzsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzdHIgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IHB1c2hfcXVvdGVkX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIHQgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBzdGF0ZS5hdG9tX2J1ZmZlciBpblxuICBCdWZmZXIuY2xlYXIgc3RhdGUuYXRvbV9idWZmZXI7XG4gIGxldCBzdGFjayA6IHMgPVxuICAgIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICAgIHwgUG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgc3RhY2tcbiAgICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gU2V4cCAoQXRvbSBzdHIsIHN0YWNrKSBlbHNlIHN0YWNrXG4gICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1wiJztcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPVxuICAgICAgICBBdG9tIHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGF0b20gPSBzdHI7IHVuZXNjYXBlZCA9IFNvbWUgcyB9XG4gICAgICBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgaW5cbiAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MVxuOztcblxubGV0IHN0YXJ0X3NleHBfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBzdGF0ZS5pZ25vcmluZ19zdGFjayA8LSBzdGF0ZS5kZXB0aCA6OiBzdGF0ZS5pZ25vcmluZ19zdGFjaztcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgSW5fc2V4cF9jb21tZW50XG4gICAgICB7IGhhc2hfc2VtaV9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTsgcmV2X2NvbW1lbnRzID0gW107IHN0YWNrIH1cbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggKyAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGlmIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPSAxXG4gICAgdGhlbiAoXG4gICAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC0xKTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciAnIycpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG47O1xuXG5sZXQgZW5kX2Jsb2NrX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA8LSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIC0gMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgU2V4cCAtPiBzdGFja1xuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBsZXQgYnVmID0gc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBQbGFpbl9jb21tZW50IHsgbG9jID0gbWFrZV9sb2Mgc3RhdGUgfmRlbHRhOjE7IGNvbW1lbnQgPSBzIH1cbiAgICAgIGluXG4gICAgICBsZXQgc3RhY2sgPSBhZGRfY29tbWVudF90b19zdGFja19jc3QgY29tbWVudCBzdGFjayBpblxuICAgICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjEpXG4gICAgZWxzZSBzdGFja1xuOztcblxubGV0IHN0YXJ0X2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGVuZF9saW5lX2NvbW1lbnQgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9IFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZTsgY29tbWVudCA9IHMgfSBpblxuICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhOjBcbjs7XG5cbmxldCBlcHNfZW9pX2NoZWNrIDogdHlwZSB1IHMuICh1LCBzKSBFcHNpbG9uLnQgPVxuICBmdW4gc3RhdGUgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFVuY2xvc2VkX3BhcmVuO1xuICBpZiBpc19pZ25vcmluZyBzdGF0ZSB0aGVuIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwO1xuICBpZiBzdGF0ZS5mdWxsX3NleHBzID0gMFxuICB0aGVuIChcbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IE1hbnkgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZTsgXyB9IC0+ICgpXG4gICAgfCBTaW5nbGUgfCBFYWdlciB7IG5vX3NleHBfaXNfZXJyb3IgPSB0cnVlOyBfIH0gLT5cbiAgICAgIHJhaXNlX2Vycm9yIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBOb19zZXhwX2ZvdW5kX2luX2lucHV0KTtcbiAgc3RhY2tcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gIHwgUGFyc2luZ19hdG9tXG4gIHwgUGFyc2luZ19saXN0XG4gIHwgUGFyc2luZ19zZXhwX2NvbW1lbnRcbiAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2UgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZVwiXG4gICAgfCBQYXJzaW5nX2F0b20gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19hdG9tXCJcbiAgICB8IFBhcnNpbmdfbGlzdCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2xpc3RcIlxuICAgIHwgUGFyc2luZ19zZXhwX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19zZXhwX2NvbW1lbnRcIlxuICAgIHwgUGFyc2luZ19ibG9ja19jb21tZW50IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfYmxvY2tfY29tbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIG1hdGNoIHNleHBfb2ZfdCB0IHdpdGhcbiAgfCBBdG9tIHMgLT4gc1xuICB8IExpc3QgXyAtPiBmYWlsd2l0aCBcIkJVRzogW3NleHBfb2ZfdF0gcmV0dXJuZWQgYSBbTGlzdCBfXVwiXG47O1xuIiwib3BlbiBBdXRvbWF0b25fYWN0aW9uXG5cbmxldCByYWlzZSA9IEF1dG9tYXRvbl9hY3Rpb24ucmFpc2VfZXJyb3JcblxudHlwZSB1J1xudHlwZSBzJ1xuXG4oKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fYXV0b21hdG9uX3RhYmxlcy5wcmludF9jb2RlICgpICopXG5sZXQgdHJfMDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAwX2YgfVxuXG5sZXQgdHJfMDFfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDFfZiB9XG5cbmxldCB0cl8wMl9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDJfZiB9XG5cbmxldCB0cl8wM19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wM19mIH1cblxubGV0IHRyXzA0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA0X2YgfVxuXG5sZXQgdHJfMDVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDVfZiB9XG5cbmxldCB0cl8wNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNl9mIH1cblxubGV0IHRyXzA3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA3X2YgfVxuXG5sZXQgdHJfMDhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOF9mIH1cblxubGV0IHRyXzA5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9maXJzdF9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wOV9mIH1cbmxldCB0cl8xMF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbmxldCB0cl8xMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTBfZiB9XG5sZXQgdHJfMTFfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID0gcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl8xMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTFfZiB9XG5cbmxldCB0cl8xMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMl9mIH1cblxubGV0IHRyXzEzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTNfZiB9XG5cbmxldCB0cl8xNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNF9mIH1cblxubGV0IHRyXzE1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTVfZiB9XG5cbmxldCB0cl8xNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE2X2YgfVxuXG5sZXQgdHJfMTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTdfZiB9XG5cbmxldCB0cl8xOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE4X2YgfVxuXG5sZXQgdHJfMTlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xOV9mIH1cblxubGV0IHRyXzIwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfbGluZV9jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzIwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yMF9mIH1cblxubGV0IHRyXzIxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIxX2YgfVxuXG5sZXQgdHJfMjJfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgQ29tbWVudF90b2tlbl9pbl91bnF1b3RlZF9hdG9tXG47O1xuXG5sZXQgdHJfMjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIyX2YgfVxuXG5sZXQgdHJfMjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIzX2YgfVxuXG5sZXQgdHJfMjRfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9saW5lX2NvbW1lbnQgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjRfZiB9XG5cbmxldCB0cl8yNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI1X2YgfVxuXG5sZXQgdHJfMjZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjZfZiB9XG5cbmxldCB0cl8yN19mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI3X2YgfVxuXG5sZXQgdHJfMjhfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjhfZiB9XG5cbmxldCB0cl8yOV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzI5X2YgfVxuXG5sZXQgdHJfMzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9xdW90ZWRfc3RyaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMF9mIH1cblxubGV0IHRyXzMxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMxX2YgfVxuXG5sZXQgdHJfMzJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBvcGVuaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zMl9mIH1cblxubGV0IHRyXzMzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZmlyc3RfY2hhcl9oYXNoIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzNfZiB9XG5cbmxldCB0cl8zNF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9zZXhwX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM0X2YgfVxuXG5sZXQgdHJfMzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzUgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM1X2YgfVxuXG5sZXQgdHJfMzZfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM2X2YgfVxuXG5sZXQgdHJfMzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzM3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zN19mIH1cblxubGV0IHRyXzM4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHB1c2hfcXVvdGVkX2F0b20gc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM4X2YgfVxuXG5sZXQgdHJfMzlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM5X2YgfVxuXG5sZXQgdHJfNDBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2VzY2FwZWQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQwX2YgfVxuXG5sZXQgdHJfNDFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDFfZiB9XG5cbmxldCB0cl80Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQyX2YgfVxuXG5sZXQgdHJfNDNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQzX2YgfVxuXG5sZXQgdHJfNDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NF9mIH1cblxubGV0IHRyXzQ1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDVfZiB9XG5cbmxldCB0cl80Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDZfZiB9XG5cbmxldCB0cl80N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2VzY2FwZWRfY3Igc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ3X2YgfVxuXG5sZXQgdHJfNDhfZiBfc3RhdGUgX2NoYXIgX3N0YWNrID1cbiAgcmFpc2UgX3N0YXRlIH5hdF9lb2Y6ZmFsc2UgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuOztcblxubGV0IHRyXzQ4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OF9mIH1cblxubGV0IHRyXzQ5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDEyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ5IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80OV9mIH1cblxubGV0IHRyXzUwX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTBfZiB9XG5cbmxldCB0cl81MV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlXG47O1xuXG5sZXQgdHJfNTEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUxX2YgfVxuXG5sZXQgdHJfNTJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUyX2YgfVxuXG5sZXQgdHJfNTNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81M19mIH1cblxubGV0IHRyXzU0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NF9mIH1cblxubGV0IHRyXzU1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTVfZiB9XG5cbmxldCB0cl81Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU2X2YgfVxuXG5sZXQgdHJfNTdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTdfZiB9XG5cbmxldCB0cl81OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNThfZiB9XG5cbmxldCB0cl81OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU5X2YgfVxuXG5sZXQgdHJfNjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjBfZiB9XG5cbmxldCB0cl82MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjEgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYxX2YgfVxuXG5sZXQgdHJfNjJfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82Ml9mIH1cblxubGV0IHRyXzYzX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjNfZiB9XG5cbmxldCB0cl82NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfYmxvY2tfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgKGlmIGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPD4gMCB0aGVuIDE2IGVsc2UgMCk7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY0X2YgfVxuXG5sZXQgdHJfNjVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjVfZiB9XG5cbmxldCB0cl82Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY2X2YgfVxuXG5sZXQgdHJfNjdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjdfZiB9XG5cbmxldCB0cl82OF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjE7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY4X2YgfVxuXG5sZXQgdHJfNjlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzY5X2YgfVxuXG5sZXQgdHJfNzBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MF9mIH1cblxubGV0IHRyXzcxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzFfZiB9XG5cbmxldCB0cl83Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcyX2YgfVxuXG5sZXQgdHJfNzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzczIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83M19mIH1cblxubGV0IHRyXzc0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDIzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NF9mIH1cblxubGV0IHRyXzc1X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzVfZiB9XG5cbmxldCB0cl83Nl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc2X2YgfVxuXG5sZXQgdHJfNzdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI2O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83N19mIH1cblxubGV0IHRyXzc4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc4X2YgfVxubGV0IHRyX2VvaV8wMF9mIHN0YXRlIHN0YWNrID0gZXBzX2VvaV9jaGVjayBzdGF0ZSBzdGFja1xubGV0IHRyX2VvaV8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDBfZiB9XG5sZXQgdHJfZW9pXzAxX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyX2VvaV8wMSA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDFfZiB9XG5sZXQgdHJfZW9pXzAyX2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVuZXhwZWN0ZWRfY2hhcmFjdGVyX2FmdGVyX2NyXG5sZXQgdHJfZW9pXzAyIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMl9mIH1cblxubGV0IHRyX2VvaV8wM19mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzAzIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wM19mIH1cblxubGV0IHRyX2VvaV8wNF9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA0IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNF9mIH1cblxubGV0IHRyX2VvaV8wNV9mIHN0YXRlIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG47O1xuXG5sZXQgdHJfZW9pXzA1IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wNV9mIH1cbmxldCB0cl9lb2lfMDZfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW50ZXJtaW5hdGVkX3F1b3RlZF9zdHJpbmdcbmxldCB0cl9lb2lfMDYgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA2X2YgfVxubGV0IHRyX2VvaV8wN19mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudFxubGV0IHRyX2VvaV8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDdfZiB9XG5cbmxldCB0cmFuc2l0aW9ucyA9XG4gIFt8IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAyXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAzXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAxXG4gICA7IHRyXzAwXG4gICA7IHRyXzA0XG4gICA7IHRyXzA1XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA2XG4gICA7IHRyXzA3XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA4XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzA5XG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzAwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzEwXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzAyXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzExXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzE3XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE0XG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzE1XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEzXG4gICA7IHRyXzEyXG4gICA7IHRyXzE2XG4gICA7IHRyXzIyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzE4XG4gICA7IHRyXzE5XG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIwXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIxXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzEyXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI0XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI1XG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzIzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI4XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI5XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI3XG4gICA7IHRyXzI2XG4gICA7IHRyXzMwXG4gICA7IHRyXzMxXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzMyXG4gICA7IHRyXzMzXG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM0XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM1XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzI2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM3XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM4XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM5XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzM2XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQxXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQyXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQzXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ0XG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQwXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQxXG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ2XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ3XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ5XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzUwXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUyXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUzXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU2XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU1XG4gICA7IHRyXzU0XG4gICA7IHRyXzU3XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU4XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzY0XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYzXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYwXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYyXG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzM1XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY1XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzU5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY2XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY3XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY4XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzY5XG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcwXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzY3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzc0XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzc1XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzQ4XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzc2XG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzYxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzUxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzc4XG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzc3XG4gICA7IHRyXzcxXG4gICA7IHRyXzcyXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzczXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gICA7IHRyXzcxXG4gIHxdXG47O1xuXG5sZXQgdHJhbnNpdGlvbnNfZW9pID1cbiAgW3wgdHJfZW9pXzAwXG4gICA7IHRyX2VvaV8wMVxuICAgOyB0cl9lb2lfMDJcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzA0XG4gICA7IHRyX2VvaV8wNVxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgfF1cbjs7XG5cbmxldCBvbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcyA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50IGFycmF5ID1cbiAgW3wgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gIHxdXG47O1xuKCokKilcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN0YWNrID0gQXV0b21hdG9uX3N0YWNrXG5pbmNsdWRlIEF1dG9tYXRvbl9zdGF0ZVxuXG5sZXQgZmVlZCAodHlwZSB1IHMpIChzdGF0ZSA6ICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCkgY2hhciAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgaWR4ID0gKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSBsc2wgOCkgbG9yIENoYXIuY29kZSBjaGFyIGluXG4gIEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnMuKGlkeCkuZiBzdGF0ZSBjaGFyIHN0YWNrXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGZlZWRfZW9pICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSAoc3RhY2sgOiBzKSA6IHMgPVxuICBsZXQgc3RhY2sgPSBBdXRvbWF0b25fdGFibGVzLnRyYW5zaXRpb25zX2VvaS4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKS5mIHN0YXRlIHN0YWNrIGluXG4gIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgOiBPbGRfcGFyc2VyX2NvbnRfc3RhdGUudCA9XG4gIG1hdGNoIGNvbnRleHQgc3RhdGUgd2l0aFxuICB8IFNleHBfY29tbWVudCAtPiBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFNleHAgLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIEF1dG9tYXRvbl90YWJsZXMub2xkX3BhcnNlcl9hcHByb3hfY29udF9zdGF0ZXMuKGF1dG9tYXRvbl9zdGF0ZSBzdGF0ZSlcbiAgICAgICAsIGhhc191bmNsb3NlZF9wYXJlbiBzdGF0ZSApXG4gICAgIHdpdGhcbiAgICAgfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIHRydWUgLT4gUGFyc2luZ19saXN0XG4gICAgIHwgcywgXyAtPiBzKVxuOztcblxubGV0IHJlYyBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIGkgc3RvcCA9XG4gIGlmIGkgPCBzdG9wXG4gIHRoZW4gKFxuICAgIGxldCBjID0gU3RyaW5nLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YnN0cmluZ191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IHN0ciBpIGluXG4gICAgbGV0IHN0YWNrID0gZmVlZCBzdGF0ZSBjIHN0YWNrIGluXG4gICAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIChpICsgMSkgc3RvcClcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IGZlZWRfc3Vic3RyaW5nIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3Vic3RyaW5nXCI7XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdWJieXRlcyBzdGF0ZSBzdHIgfnBvcyB+bGVuIHN0YWNrID1cbiAgbGV0IHN0cl9sZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgPiBzdHJfbGVuIC0gbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLmZlZWRfc3ViYnl0ZXNcIjtcbiAgZmVlZF9zdWJieXRlc191bnNhZmUgc3RyIHN0YXRlIHN0YWNrIHBvcyAocG9zICsgbGVuKVxuOztcblxubGV0IGZlZWRfc3RyaW5nIHN0YXRlIHN0ciBzdGFjayA9XG4gIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG47O1xuXG5sZXQgZmVlZF9ieXRlcyBzdGF0ZSBzdHIgc3RhY2sgPSBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgMCAoQnl0ZXMubGVuZ3RoIHN0cilcblxubGV0IGVtcHR5X3N0YWNrIDogdHlwZSB1IHMuICh1LCBzKSBLaW5kLnQgLT4gcyA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAtPiBTdGFjay5lbXB0eVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gU3RhY2suZW1wdHlcbiAgfCBQb3NpdGlvbnMgLT4gU3RhY2suSnVzdF9wb3NpdGlvbnMuZW1wdHlcbiAgfCBDc3QgLT4gU3RhY2suRm9yX2NzdC5lbXB0eVxuOztcblxubGV0IG9mX3N1YnN0cmluZyAodHlwZSB1IHMpIChtb2RlIDogKHUsIHMpIE1vZGUudCkgKGtpbmQgOiAodSwgcykgS2luZC50KSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzdGF0ZSA9IGNyZWF0ZSBtb2RlIGtpbmQgaW5cbiAgbGV0IHN0YWNrID0gZmVlZF9zdWJzdHJpbmcgc3RhdGUgcyB+cG9zIH5sZW4gKGVtcHR5X3N0YWNrIGtpbmQpIGluXG4gIHN0YXRlLCBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IHVzZXJfZXhuIDogZXhuXG4gIDsgc3ViX3NleHAgOiBTZXhwLnRcbiAgOyBsb2NhdGlvbiA6IFBvc2l0aW9ucy5yYW5nZSBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuIHsgdXNlcl9leG4gPSB1c2VyX2V4bl9fMDAyXzsgc3ViX3NleHAgPSBzdWJfc2V4cF9fMDA0XzsgbG9jYXRpb24gPSBsb2NhdGlvbl9fMDA2XyB9IC0+XG4gICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY2F0aW9uXCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gU2V4cC5zZXhwX29mX3Qgc3ViX3NleHBfXzAwNF8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2V4biB1c2VyX2V4bl9fMDAyXyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1c2VyX2V4blwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU1xuICAgICAgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuICAgICAgIGFuZCB0eXBlIFN0YXRlLnQgPSAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUudFxuICAgICAgIGFuZCB0eXBlIFN0YWNrLnQgPSBzdGFjaylcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyAoKSA9IEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgbW9kZSBraW5kXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IHN0b3Agc3RhdGUgPSBBLnNldF9lcnJvcl9zdGF0ZSBzdGF0ZVxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBtYWtlX3ZhbHVlIHN0YXRlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrKVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgPVxuICAgICAgbGV0IHN0YXRlID0gU3RhdGUuY3JlYXRlICgpIGluXG4gICAgICBmZWVkX2VvaSBzdGF0ZSAoZmVlZF9zdHJpbmcgc3RhdGUgc3RyIFN0YWNrLmVtcHR5KVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciA9XG4gICAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciBlXG4gICAgOztcbiAgZW5kKVxuOztcblxubGV0IG1ha2VfZWFnZXIgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1ha2VfdmFsdWVcbiAgOiAobW9kdWxlIFNfZWFnZXJcbiAgICAgIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcbiAgICAgICBhbmQgdHlwZSBTdGF0ZS50ID0gKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLnRcbiAgICAgICBhbmQgdHlwZSBTdGFjay50ID0gc3RhY2spXG4gID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyBwYXJzZWRfdmFsdWUgPSBwYXJzZWRfdmFsdWVcblxuICAgIG1vZHVsZSBTdGFjayA9ICh2YWwga2luZF90b19zdGFjayBraW5kIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSAoc3RhdGUsIFN0YWNrLnQpIEF1dG9tYXRvbl9zdGF0ZS50XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IEEub2Zmc2V0XG4gICAgICAgIGxldCBsaW5lID0gQS5saW5lXG4gICAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICAgIGxldCBwb3NpdGlvbiB0IDogUG9zaXRpb25zLnBvcyA9XG4gICAgICAgICAgeyBvZmZzZXQgPSBvZmZzZXQgdDsgbGluZSA9IGxpbmUgdDsgY29sID0gY29sdW1uIHQgfVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgUmVhZF9vbmx5XG5cbiAgICAgIGxldCBjcmVhdGUgP3BvcyA/KG5vX3NleHBfaXNfZXJyb3IgPSBmYWxzZSkgZiA9XG4gICAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBzdGFjayA9XG4gICAgICAgICAgbGV0IHBhcnNlZF92YWx1ZSA9IG1ha2VfdmFsdWUgc3RhdGUgc3RhY2sgaW5cbiAgICAgICAgICBmIHN0YXRlIHBhcnNlZF92YWx1ZTtcbiAgICAgICAgICBTdGFjay5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBBLmNyZWF0ZSA/aW5pdGlhbF9wb3M6cG9zIChFYWdlciB7IGdvdF9zZXhwOyBub19zZXhwX2lzX2Vycm9yIH0pIGtpbmRcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBzdG9wIHQgPSBBLnNldF9lcnJvcl9zdGF0ZSB0XG4gICAgICBsZXQgb2xkX3BhcnNlcl9jb250X3N0YXRlIHQgPSBBdXRvbWF0b24ub2xkX3BhcnNlcl9jb250X3N0YXRlIHRcbiAgICBlbmRcblxuICAgIGxldCBmZWVkID0gQS5mZWVkXG4gICAgbGV0IGZlZWRfZW9pIHN0YXRlIHN0YWNrID0gaWdub3JlIChBLmZlZWRfZW9pIHN0YXRlIHN0YWNrIDogU3RhY2sudClcbiAgICBsZXQgZmVlZF9zdWJzdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdWJzdHJpbmdcbiAgICBsZXQgZmVlZF9zdHJpbmcgPSBBdXRvbWF0b24uZmVlZF9zdHJpbmdcbiAgICBsZXQgZmVlZF9zdWJieXRlcyA9IEF1dG9tYXRvbi5mZWVkX3N1YmJ5dGVzXG4gICAgbGV0IGZlZWRfYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9ieXRlc1xuXG4gICAgbW9kdWxlIExleGJ1Zl9jb25zdW1lciA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RhdGUudFxuXG4gICAgICBleGNlcHRpb24gR290X3NleHAgb2YgcGFyc2VkX3ZhbHVlICogUG9zaXRpb25zLnBvc1xuXG4gICAgICBsZXQgZ290X3NleHAgc3RhdGUgcGFyc2VkX3ZhbHVlID1cbiAgICAgICAgcmFpc2Vfbm90cmFjZSAoR290X3NleHAgKHBhcnNlZF92YWx1ZSwgU3RhdGUucG9zaXRpb24gc3RhdGUpKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IFN0YXRlLmNyZWF0ZSBnb3Rfc2V4cFxuXG4gICAgICBsZXQgcG9zX29mX2xleGJ1ZiBsZXhidWYgPVxuICAgICAgICBsZXQgcCA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCBpblxuICAgICAgICB7IFBvc2l0aW9ucy5saW5lID0gcC5wb3NfbG51bTsgY29sID0gcC5wb3NfY251bSAtIHAucG9zX2JvbDsgb2Zmc2V0ID0gcC5wb3NfY251bSB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdXBkYXRlX2xleGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgKHBvcyA6IFBvc2l0aW9ucy5wb3MpID1cbiAgICAgICAgbGV0IHAgPSBwb3Mub2Zmc2V0IC0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gcDtcbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BcbiAgICAgICAgPC0geyBsZXhidWYubGV4X2N1cnJfcCB3aXRoXG4gICAgICAgICAgICAgcG9zX2xudW0gPSBwb3MubGluZVxuICAgICAgICAgICA7IHBvc19jbnVtID0gcG9zLm9mZnNldFxuICAgICAgICAgICA7IHBvc19ib2wgPSBwb3Mub2Zmc2V0IC0gcG9zLmNvbFxuICAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZlZWRfbGV4YnVmIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIHN0YWNrID1cbiAgICAgICAgbGV0IHN0YWNrID1cbiAgICAgICAgICBmZWVkX3N1YmJ5dGVzXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlclxuICAgICAgICAgICAgc3RhY2tcbiAgICAgICAgICAgIH5wb3M6bGV4YnVmLmxleF9jdXJyX3Bvc1xuICAgICAgICAgICAgfmxlbjoobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9jdXJyX3BvcylcbiAgICAgICAgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgaWYgbm90IGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV4YnVmLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgICAgICBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBzdGFjaylcbiAgICAgICAgZWxzZSBmZWVkX2VvaSB0IHN0YWNrXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfZ2VuIHQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICAgICAgQS5yZXNldCB0IH5wb3M6KHBvc19vZl9sZXhidWYgbGV4YnVmKTtcbiAgICAgICAgbWF0Y2ggZmVlZF9sZXhidWYgdCBsZXhidWYgU3RhY2suZW1wdHkgd2l0aFxuICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBleGNlcHRpb24gR290X3NleHAgKHBhcnNlZF92YWx1ZSwgcG9zKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIHBvcztcbiAgICAgICAgICBTb21lIHBhcnNlZF92YWx1ZVxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgcmFpc2UgZXhuXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB4ID1cbiAgICAgICAgbWF0Y2ggQS5tb2RlIHQgd2l0aFxuICAgICAgICB8IEVhZ2VyIGUgLT4gZS5ub19zZXhwX2lzX2Vycm9yIDwtIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlIHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCB0cnVlO1xuICAgICAgICBtYXRjaCBwYXJzZV9nZW4gdCBsZXhidWYgd2l0aFxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAucGFyc2VfZ2VuOiBOb25lXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9vcHQgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IGZhbHNlO1xuICAgICAgICBwYXJzZV9nZW4gdCBsZXhidWZcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29udl9pbnRmXG5cbm1vZHVsZSBNYWtlXG4gICAgKE1vZGUgOiBNb2RlKVxuICAgIChTZXhwX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBNb2RlLnBhcnNlZF9zZXhwKVxuICAgIChQb3NpdGlvbnNfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IFBvc2l0aW9ucy50KSA9XG5zdHJ1Y3RcbiAgbGV0IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIHVzZXJfZXhuID1cbiAgICBsZXQgbG9jYXRpb24gPSBNb2RlLmZpbmQgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSB+c3ViIGluXG4gICAgT2Zfc2V4cF9lcnJvci5yYWlzZSB+dXNlcl9leG4gfnN1Yl9zZXhwOnN1YiB+bG9jYXRpb25cbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiA9XG4gICAgbGV0IHBhcnNlZF92YWx1ZSA9IFNleHBfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPlxuICAgICAgbGV0IHBvc2l0aW9ucyA9IFBvc2l0aW9uc19wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICAgIHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmcgc3RyIGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKVxuICA7O1xuXG4gIGxldCBjb252X2V4biAocGFyc2VkX3ZhbHVlLCBwb3NpdGlvbnMpIGYgPVxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT4gcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IGNvbnYgeCBmID1cbiAgICBtYXRjaCBjb252X2V4biB4IGYgd2l0aFxuICAgIHwgeCAtPiBPayB4XG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgZVxuICA7O1xuXG4gIGxldCBjb252X2NvbWJpbmUgcmVzdWx0IGYgOiAoXywgQ29udl9lcnJvci50KSByZXN1bHQgPVxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgT2sgeCAtPlxuICAgICAgKG1hdGNoIGNvbnYgeCBmIHdpdGhcbiAgICAgICB8IE9rIF8gYXMgciAtPiByXG4gICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ29udiA9IENvbnYuU1xubW9kdWxlIHR5cGUgUGFyc2VyID0gUGFyc2VyLlNcbm1vZHVsZSB0eXBlIEVhZ2VyX3BhcnNlciA9IFBhcnNlci5TX2VhZ2VyXG5cbm1vZHVsZSBDb252X2Vycm9yID0gQ29udl9lcnJvclxubW9kdWxlIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yXG5tb2R1bGUgT2xkX3BhcnNlcl9jb250X3N0YXRlID0gT2xkX3BhcnNlcl9jb250X3N0YXRlXG5tb2R1bGUgUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvclxubW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xubW9kdWxlIENzdCA9IENzdFxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yXG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbm1vZHVsZSBTaW5nbGUgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgU2luZ2xlIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5tb2R1bGUgTWFueSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBNYW55IChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpKVxubW9kdWxlIEVhZ2VyID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBTZXhwIChjb25zdCBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSkpXG5cbmxldCBhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cCBzdGF0ZSBzdGFjayA9IGdldF9zZXhwIHN0YWNrLCBBLnBvc2l0aW9ucyBzdGF0ZVxuXG5sZXQgYW5kX3Bvc2l0aW9ucyBtb2RlIGdldF9zZXhwID1cbiAgUGFyc2VyLm1ha2UgU2V4cF93aXRoX3Bvc2l0aW9ucyBtb2RlIChhbmRfZ2V0X3Bvc2l0aW9ucyBnZXRfc2V4cClcbjs7XG5cbm1vZHVsZSBTaW5nbGVfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBTaW5nbGUgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpXG5tb2R1bGUgTWFueV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIE1hbnkgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfYW5kX3Bvc2l0aW9ucyA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXJcbiAgICAgICAgIFNleHBfd2l0aF9wb3NpdGlvbnNcbiAgICAgICAgIChBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSB8PiBhbmRfZ2V0X3Bvc2l0aW9ucykpXG5cbmxldCBqdXN0X2dldF9wb3NpdGlvbnMgc3RhdGUgKCkgPSBBLnBvc2l0aW9ucyBzdGF0ZVxubGV0IGp1c3RfcG9zaXRpb25zIG1vZGUgPSBQYXJzZXIubWFrZSBQb3NpdGlvbnMgbW9kZSBqdXN0X2dldF9wb3NpdGlvbnNcblxubW9kdWxlIFNpbmdsZV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgU2luZ2xlKVxubW9kdWxlIE1hbnlfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIE1hbnkpXG5tb2R1bGUgRWFnZXJfanVzdF9wb3NpdGlvbnMgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFBvc2l0aW9ucyBqdXN0X2dldF9wb3NpdGlvbnMpXG5cbmxldCBjc3QgbW9kZSBmID0gUGFyc2VyLm1ha2UgQ3N0IG1vZGUgKGNvbnN0IGYpXG5cbm1vZHVsZSBNYW55X2NzdCA9ICh2YWwgY3N0IE1hbnkgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9jc3QgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIENzdCAoZnVuIF8gc3RhY2sgLT5cbiAgICAgbWF0Y2ggQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnkgc3RhY2sgd2l0aFxuICAgICB8IFsgc2V4cCBdIC0+IHNleHBcbiAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG5cbnR5cGUgJ2EgaWQgPSAnYVxudHlwZSBzZXhwX2xpc3QgPSBTZXhwLnQgbGlzdFxuXG5tb2R1bGUgQ29udl9zaW5nbGUgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9waHlzXG4gICAgZW5kKVxuICAgIChTaW5nbGUpXG4gICAgKFNpbmdsZV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2EgbGlzdFxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnRcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgeCB+ZilcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55X2F0X29uY2UgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhXG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudCBsaXN0XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzXG4gICAgZW5kKVxuICAgIChNYW55KVxuICAgIChNYW55X2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQXV0b21hdG9uID0gQXV0b21hdG9uXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGF0ZSA9IEF1dG9tYXRvbl9zdGF0ZVxuICBtb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5lbmRcbiIsIigqIGZvciBsZXhpbmcgcG9zaXRpb25zOlxuICAgLSBsbnVtIHN0YXJ0cyBmcm9tIDFcbiAgIC0gY251bSBzdGFydHMgZnJvbSAwXG4gICAtIHBvc19ib2wgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGxpbmVcblxuICAgZm9yIGFic29sdXRlIHBvczpcbiAgIC0gcm93IHN0YXJ0cyBmcm9tIDFcbiAgIC0gY29sIHN0YXJ0cyBmcm9tIDFcblxuICAgZm9yIHJlbGF0aXZlIHBvcywgb2J2aW91c2x5IDAgbWVhbnMgc2FtZSBwb3NpdGlvblxuKilcblxuKCogb3BlcmF0aW9ucyB0aGF0IG1ha2Ugc2Vuc2UgZm9yIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBvc2l0aW9ucyAqKVxubW9kdWxlIFBvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcm93IDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCB7IHJvdzsgY29sIH0gPSBUeXBlLkF0b20gKFByaW50Zi5zcHJpbnRmIFwiJWQ6JWRcIiByb3cgY29sKVxuICBsZXQgYWRkIHQxIHQyID0geyByb3cgPSB0MS5yb3cgKyB0Mi5yb3c7IGNvbCA9IHQxLmNvbCArIHQyLmNvbCB9XG4gIGxldCBzdWIgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyAtIHQyLnJvdzsgY29sID0gdDEuY29sIC0gdDIuY29sIH1cblxuICBsZXQgY29tcGFyZSB7IHJvdyA9IHIxOyBjb2wgPSBjMSB9IHsgcm93ID0gcjI7IGNvbCA9IGMyIH0gPVxuICAgIGlmIHIxID0gcjIgdGhlbiBjMSAtIGMyIGVsc2UgcjEgLSByMlxuICA7O1xuXG4gIGxldCBnZXEgdDEgdDIgPSBjb21wYXJlIHQxIHQyID49IDBcbmVuZFxuXG5tb2R1bGUgUmVsYXRpdmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgemVybyA9IHsgcm93ID0gMDsgY29sID0gMCB9XG5lbmRcblxubW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IG9yaWdpbiA9IHsgcm93ID0gMTsgY29sID0gMSB9XG5cbiAgbGV0IG9mX2xleGluZyB7IExleGluZy5wb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2w7IHBvc19mbmFtZSA9IF8gfSA9XG4gICAgeyByb3cgPSBwb3NfbG51bTsgY29sID0gcG9zX2NudW0gLSBwb3NfYm9sICsgMSB9XG4gIDs7XG5cbiAgbGV0IGRpZmYgPSBzdWJcbmVuZFxuIiwiKCoqIFR5cGUgb2YgYW5ub3RhdGVkIFMtZXhwcmVzc2lvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFBvcyA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgKCoqIEluIFtBdG9tIChfLCBzLCBvcHQpXSwgW3NdIGlzIHRoZSB1bmVzY2FwZWQgc3RyaW5nLCB0aGF0IGlzIHRoZSBhcmd1bWVudCBvZlxuICAgICAgICBbVHlwZS5BdG9tXS4gV2hlbiBbb3B0XSBpcyBkZWZpbmVkLCBpdCBpcyB0aGUgc291cmNlIHN5bnRheCBvZiBbc10sIHRoYXQgaXMgYVxuICAgICAgICBzdHJpbmcgdGhhdCBjYW4gYmUgcHJpbnRlZCBhcyBpcyBpZiBvbmUgd2FudHMgdG8gcGFyc2UgYW5kIHByaW50IHByZXNlcnZpbmdcbiAgICAgICAgc3ludGF4LiBUaGlzIGlzIHVzdWFsbHkgc2V0IGZvciBxdW90ZWQgYXRvbXMgKHRvIHByZXNlcnZlIHRoZSBmYWN0IHRoYXQgd2VyZVxuICAgICAgICBxdW90ZWQpLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBkbyB0aGUgcmV2ZXJzZTogc2V0IGl0IGZvciBhdG9tcyB0aGF0IGNhbiBiZVxuICAgICAgICBwYXJzZWQgdW5xdW90ZWQgYnV0IHdvdWxkIGJlIHByaW50ZWQgd2l0aCBxdW90ZXMsIHRvIHByZXNlcnZlIHRoZSBsYWNrIG9mIHF1b3Rlcy5cbiAgICAgICAgRm9yIGluc3RhbmNlOlxuICAgICAgICBBdG9tIChfLCBcImFcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xhfH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgTm9uZSkgc2hvdWxkIGJlIHByaW50ZWQge3xcImEgYlwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIFNvbWUgXCJcXFwiYVxcXCJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xcImFcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIFNvbWUgXCJhIGJcIikgc2hvdWxkIGJlIHByaW50ZWQge3xhIGJ8fSBvciBtYXkgcmFpc2UsIGFzIGl0IGlzXG4gICAgICAgIGFuIGVycm9yIHRvIGNvbnN0cnVjdGVkIHN1Y2ggYW4gYXRvbSAoZG9lc24ndCBwYXJzZSBiYWNrKSAqKVxuICAgIHR5cGUgdCA9XG4gICAgICB8IEF0b20gb2YgUG9zLnQgKiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IExpc3Qgb2YgUG9zLnQgKiB0X29yX2NvbW1lbnQgbGlzdCAqIFBvcy50XG5cbiAgICAoKiBwb3NpdGlvbnMgb2YgbGVmdCBhbmQgcmlnaHQgcGFyZW5zICopXG4gICAgYW5kIHRfb3JfY29tbWVudCA9XG4gICAgICB8IFNleHAgb2YgdFxuICAgICAgfCBDb21tZW50IG9mIGNvbW1lbnRcblxuICAgIGFuZCBjb21tZW50ID1cbiAgICAgIHwgUGxhaW5fY29tbWVudCBvZiBQb3MudCAqIHN0cmluZ1xuICAgICAgfCBTZXhwX2NvbW1lbnQgb2YgUG9zLnQgKiBjb21tZW50IGxpc3QgKiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBzZXhwX29mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFRvX3NleHAgOiBzaWdcbiAgICB2YWwgb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIG9mX2NvbW1lbnQgOiBjb21tZW50IC0+IFR5cGUudFxuICAgIHZhbCBvZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIG1heWJlIHdlIGNhbiBhY3R1YWxseSB1c2UgY29udiBoZXJlLCBpbnN0ZWFkIG9mIGlubGluaW5nIGl0ICopXG5cbiAgICBsZXQgb2ZfcG9zID0gUG9zLnNleHBfb2ZfdFxuICAgIGxldCBvZl9zdHJpbmcgeCA9IFR5cGUuQXRvbSB4XG4gICAgbGV0IG9mX2xpc3Qgb2ZfYSB4cyA9IFR5cGUuTGlzdCAoTGlzdC5tYXAgfmY6b2ZfYSB4cylcblxuICAgIGxldCBvZl9vcHRpb24gb2ZfYSA9IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgeCAtPiBUeXBlLkxpc3QgWyBvZl9hIHggXVxuICAgICAgfCBOb25lIC0+IFR5cGUuTGlzdCBbXVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG9mX3QgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJBdG9tXCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyOyBvZl9vcHRpb24gb2Zfc3RyaW5nIHYzIF1cbiAgICAgIHwgTGlzdCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiTGlzdFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfdF9vcl9jb21tZW50IHYyOyBvZl9wb3MgdjMgXVxuXG4gICAgYW5kIG9mX3Rfb3JfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAgdCAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwXCI7IG9mX3QgdCBdXG4gICAgICB8IENvbW1lbnQgYyAtPiBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJDb21tZW50XCI7IG9mX2NvbW1lbnQgYyBdXG5cbiAgICBhbmQgb2ZfY29tbWVudCA9IGZ1bmN0aW9uXG4gICAgICB8IFBsYWluX2NvbW1lbnQgKHYxLCB2MikgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiUGxhaW5fY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2MiBdXG4gICAgICB8IFNleHBfY29tbWVudCAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cF9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl9jb21tZW50IHYyOyBvZl90IHYzIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gVG9fc2V4cC5vZl90XG4gIGxldCBzZXhwX29mX2NvbW1lbnQgPSBUb19zZXhwLm9mX2NvbW1lbnRcbiAgbGV0IHNleHBfb2ZfdF9vcl9jb21tZW50ID0gVG9fc2V4cC5vZl90X29yX2NvbW1lbnRcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKFNyY19wb3MuUmVsYXRpdmUpXG5tb2R1bGUgUGFyc2VkID0gTWFrZSAoU3JjX3Bvcy5BYnNvbHV0ZSlcblxubGV0IHJlbGF0aXZpemUgPVxuICBsZXQgcmVsIH5vdXRlcl9wIHAgPSBTcmNfcG9zLkFic29sdXRlLmRpZmYgcCBvdXRlcl9wIGluXG4gIGxldCByZWMgYXV4X3Qgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLkF0b20gKHBvcywgcywgc29wdCkgLT4gQXRvbSAocmVsIHBvcyB+b3V0ZXJfcCwgcywgc29wdClcbiAgICB8IFBhcnNlZC5MaXN0IChzdGFydF9wb3MsIHRvY3MsIGVuZF9wb3MpIC0+XG4gICAgICBMaXN0XG4gICAgICAgICggcmVsIHN0YXJ0X3BvcyB+b3V0ZXJfcFxuICAgICAgICAsIExpc3QubWFwIHRvY3MgfmY6KGZ1biB0b2MgLT4gYXV4X3RvYyB+b3V0ZXJfcDpzdGFydF9wb3MgdG9jKVxuICAgICAgICAsIHJlbCBlbmRfcG9zIH5vdXRlcl9wIClcbiAgYW5kIGF1eF90b2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlNleHAgdCAtPiBTZXhwIChhdXhfdCB0IH5vdXRlcl9wKVxuICAgIHwgUGFyc2VkLkNvbW1lbnQgYyAtPiBDb21tZW50IChhdXhfYyBjIH5vdXRlcl9wKVxuICBhbmQgYXV4X2Mgfm91dGVyX3AgPSBmdW5jdGlvblxuICAgIHwgUGFyc2VkLlBsYWluX2NvbW1lbnQgKHBvcywgdHh0KSAtPiBQbGFpbl9jb21tZW50IChyZWwgcG9zIH5vdXRlcl9wLCB0eHQpXG4gICAgfCBQYXJzZWQuU2V4cF9jb21tZW50IChwb3MsIGNzLCB0KSAtPlxuICAgICAgU2V4cF9jb21tZW50XG4gICAgICAgIChyZWwgcG9zIH5vdXRlcl9wLCBMaXN0Lm1hcCBjcyB+ZjooZnVuIGMgLT4gYXV4X2Mgfm91dGVyX3AgYyksIGF1eF90IHQgfm91dGVyX3ApXG4gIGluXG4gIGZ1biB0b2MgLT4gYXV4X3RvYyB0b2Mgfm91dGVyX3A6U3JjX3Bvcy5BYnNvbHV0ZS5vcmlnaW5cbjs7XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyAxNSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgc3RyaW5nXG4jIDYgXCJzcmMvcGFyc2VyLm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjcgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTgxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIwMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjA3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxNCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyOSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNTIgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjY1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI3MiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzkgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjk1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMwMiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzE1IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMyMSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKFxuIyA1MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uXG4jIDYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBDT01NRU5UIG9mIChcbiMgNTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgIHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb25cbiMgMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbilcbiAgfCBMUEFSRU5cbiAgfCBSUEFSRU5cbiAgfCBFT0ZcbiAgfCBIQVNIX1NFTUlcblxub3BlbiBQYXJzaW5nXG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuICAoKiBjb21wYXJlIHRvIHBhcnNlci5tbHkgKilcblxuICBvcGVuIExleGluZ1xuXG4gIGxldCBwYXJzZV9mYWlsdXJlIHdoYXQgPVxuICAgIGxldCBwb3MgPSBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiU2V4cGxpYi5QYXJzZXI6IGZhaWxlZCB0byBwYXJzZSBsaW5lICVkIGNoYXIgJWQ6ICVzXCJcbiAgICAgICAgcG9zLnBvc19sbnVtIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbCkgd2hhdCBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIG1vZHVsZSBXaXRoX3BvcyA9IHN0cnVjdFxuXG4gICAgb3BlbiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZFxuXG4gICAgbGV0IGNvZXJjZSA9IFNyY19wb3MuQWJzb2x1dGUub2ZfbGV4aW5nXG5cbiAgICBsZXQgc3RhcnRfcG9zICgpID0gY29lcmNlIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpXG5cbiAgICBsZXQgZW5kX3BvcyAoKSA9XG4gICAgICBsZXQgcCA9IFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MgKCkgaW5cbiAgICAgIGNvZXJjZSB7IHAgd2l0aCBMZXhpbmcucG9zX2NudW0gPSBwLkxleGluZy5wb3NfY251bSAtIDEgfVxuXG4gICAgbGV0IGF0b20gKHgsIHkpID1cbiAgICAgIGxldCAocG9zLCB5KSA9XG4gICAgICAgIG1hdGNoIHkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKHN0YXJ0X3BvcyAoKSwgU29tZSB4KVxuICAgICAgICB8IFNvbWUgKHBvcywgeCkgLT4gKGNvZXJjZSBwb3MsIFNvbWUgeClcbiAgICAgIGluXG4gICAgICBBdG9tIChwb3MsIHgsIHkpXG5cbiAgICBsZXQgbGlzdCB0cyA9IExpc3QgKHN0YXJ0X3BvcyAoKSwgdHMsIGVuZF9wb3MgKCkpXG5cbiAgICBsZXQgc2V4cCAgICB4ID0gU2V4cCAgICB4XG4gICAgbGV0IGNvbW1lbnQgeCA9IENvbW1lbnQgeFxuXG4gICAgbGV0IHNleHBfY29tbWVudCBjcyB0ID0gU2V4cF9jb21tZW50IChzdGFydF9wb3MgKCksIGNzLCB0KVxuXG4gICAgbGV0IHBsYWluX2NvbW1lbnQgKHgsIHBvc19vcHQpID1cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBwb3Nfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN0YXJ0X3BvcyAoKVxuICAgICAgICB8IFNvbWUgcG9zIC0+IGNvZXJjZSBwb3NcbiAgICAgIGluXG4gICAgICBQbGFpbl9jb21tZW50IChwb3MsIHgpXG5cbiAgZW5kXG5cbiMgNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OSAoKiBMUEFSRU4gKik7XG4gIDI2MCAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MSAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gIDI1OCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMTBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlsZW4gPSBcIlxcMDAyXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcIlxuXG5sZXQgeXlkZWZyZWQgPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMjJcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTJcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTNcXDAwMFxcMDIzXFwwMDBcXDAyMFxcMDAwXFwwMTVcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTZcXDAwMFxcMDIxXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDE3XFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDZcXDAwMFxcXG5cXDAyMFxcMDAwXFwwMThcXDAwMFxcMDIxXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAyOVxcMDAwXFwwMTVcXDAwMFxcMDIyXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDM3XFwwMDBcXFxuXFwwMDlcXDI1NVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDI1NVxcMDA5XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlyaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyN1xcMjU1XFwyNTFcXDI1NVxcMjM1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjM0XFwyNTVcXDAxMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjkyXG5sZXQgeXl0YWJsZSA9IFwiXFwwMzZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMjhcXDAwMFxcMDMzXFwwMDBcXDAxOVxcMDAwXFwwMzdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMjVcXDAwMFxcMDExXFwwMDBcXDAyN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAzNVxcMDAwXFwwMTFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDEwXFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDVcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICggV2l0aF9wb3MuYXRvbSBfMSApXG4jIDIyMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5saXN0IChMaXN0LnJldiBfMikgKVxuIyAyMjkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA3NyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMzUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA4MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICggV2l0aF9wb3MucGxhaW5fY29tbWVudCBfMSApXG4jIDI0MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDgxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cF9jb21tZW50IChMaXN0LnJldiBfMikgXzMgKVxuIyAyNTAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICggW10gKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfY29tbWVudHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI2NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHAgXzEgKVxuIyAyNzEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggV2l0aF9wb3MuY29tbWVudCBfMSApXG4jIDI3OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDkyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICggW10gKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDkzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAoIFR5cGVfd2l0aF9sYXlvdXQucmVsYXRpdml6ZSBfMSApXG4jIDI5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBTb21lIF8xIClcbiMgMzA2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIE5vbmUgKVxuIyAzMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTAzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgKCBbXzFdIClcbiMgMzE5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDMyNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwNyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzM0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwOCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTExIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzUzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDM2MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzX2FicyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSByZXZfc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxufF1cbmxldCB5eXRhYmxlcyA9XG4gIHsgUGFyc2luZy5hY3Rpb25zPXl5YWN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2NvbnN0PXl5dHJhbnNsX2NvbnN0O1xuICAgIFBhcnNpbmcudHJhbnNsX2Jsb2NrPXl5dHJhbnNsX2Jsb2NrO1xuICAgIFBhcnNpbmcubGhzPXl5bGhzO1xuICAgIFBhcnNpbmcubGVuPXl5bGVuO1xuICAgIFBhcnNpbmcuZGVmcmVkPXl5ZGVmcmVkO1xuICAgIFBhcnNpbmcuZGdvdG89eXlkZ290bztcbiAgICBQYXJzaW5nLnNpbmRleD15eXNpbmRleDtcbiAgICBQYXJzaW5nLnJpbmRleD15eXJpbmRleDtcbiAgICBQYXJzaW5nLmdpbmRleD15eWdpbmRleDtcbiAgICBQYXJzaW5nLnRhYmxlc2l6ZT15eXRhYmxlc2l6ZTtcbiAgICBQYXJzaW5nLnRhYmxlPXl5dGFibGU7XG4gICAgUGFyc2luZy5jaGVjaz15eWNoZWNrO1xuICAgIFBhcnNpbmcuZXJyb3JfZnVuY3Rpb249cGFyc2VfZXJyb3I7XG4gICAgUGFyc2luZy5uYW1lc19jb25zdD15eW5hbWVzX2NvbnN0O1xuICAgIFBhcnNpbmcubmFtZXNfYmxvY2s9eXluYW1lc19ibG9jayB9XG5sZXQgc2V4cCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbmxldCBzZXhwc19hYnMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDQgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNSBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdClcbiIsIiMgMSBcInNyYy9sZXhlci5tbGxcIlxuIFxuICAoKiogTGV4ZXI6IExleGVyIFNwZWNpZmljYXRpb24gZm9yIFMtZXhwcmVzc2lvbnMgKilcblxuICBvcGVuIFByaW50ZlxuICBvcGVuIExleGluZ1xuXG4gIGxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICAgIHwgJ24nIC0+ICdcXDAxMCdcbiAgICB8ICdyJyAtPiAnXFwwMTMnXG4gICAgfCAnYicgLT4gJ1xcMDA4J1xuICAgIHwgJ3QnIC0+ICdcXDAwOSdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCBsZiA9ICdcXDAxMCdcblxuICBsZXQgZGVjX2NvZGUgYzEgYzIgYzMgPVxuICAgIDEwMCAqIChDaGFyLmNvZGUgYzEgLSA0OCkgKyAxMCAqIChDaGFyLmNvZGUgYzIgLSA0OCkgKyAoQ2hhci5jb2RlIGMzIC0gNDgpXG5cbiAgbGV0IGhleF9jb2RlIGMxIGMyID1cbiAgICBsZXQgZDEgPSBDaGFyLmNvZGUgYzEgaW5cbiAgICBsZXQgdmFsMSA9XG4gICAgICBpZiBkMSA+PSA5NyB0aGVuIGQxIC0gODdcbiAgICAgIGVsc2UgaWYgZDEgPj0gNjUgdGhlbiBkMSAtIDU1XG4gICAgICBlbHNlIGQxIC0gNDggaW5cbiAgICBsZXQgZDIgPSBDaGFyLmNvZGUgYzIgaW5cbiAgICBsZXQgdmFsMiA9XG4gICAgICBpZiBkMiA+PSA5NyB0aGVuIGQyIC0gODdcbiAgICAgIGVsc2UgaWYgZDIgPj0gNjUgdGhlbiBkMiAtIDU1XG4gICAgICBlbHNlIGQyIC0gNDggaW5cbiAgICB2YWwxICogMTYgKyB2YWwyXG5cbiAgbGV0IGZvdW5kX25ld2xpbmUgbGV4YnVmIGRpZmYgPVxuICAgIGxldCBsZXhfY3Vycl9wID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAge1xuICAgICAgICBsZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsZXhfY3Vycl9wLnBvc19sbnVtICsgMTtcbiAgICAgICAgcG9zX2JvbCA9IGxleF9jdXJyX3AucG9zX2NudW0gLSBkaWZmO1xuICAgICAgfVxuXG4gICgqIHNhbWUgbGVuZ3RoIGNvbXB1dGF0aW9uIGFzIGluIFtMZXhpbmcubGV4ZW1lXSAqKVxuICBsZXQgbGV4ZW1lX2xlbiB7IGxleF9zdGFydF9wb3M7IGxleF9jdXJyX3BvczsgXyB9ID0gbGV4X2N1cnJfcG9zIC0gbGV4X3N0YXJ0X3Bvc1xuXG4gIGxldCBtYWluX2ZhaWx1cmUgbGV4YnVmIG1zZyA9XG4gICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICBsZXQgbXNnID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgXCJTZXhwbGliLkxleGVyLm1haW46ICVzIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgIG1zZyBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgIGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgICAgIHZhbCBhZGRfY2hhciA6IHQgLT4gY2hhciAtPiB1bml0XG4gICAgICB2YWwgYWRkX3N1YmJ5dGVzIDogdCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfbGV4ZW1lIDogdCAtPiBsZXhidWYgLT4gdW5pdFxuICAgICAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gICAgICB2YWwgb2ZfYnVmZmVyIDogQnVmZmVyLnQgLT4gdFxuICAgIGVuZFxuICAgIG1vZHVsZSBUb2tlbiA6IHNpZ1xuICAgICAgdHlwZSB0XG4gICAgICB2YWwgbHBhcmVuIDogdFxuICAgICAgdmFsIHJwYXJlbiA6IHRcbiAgICAgIHZhbCBlb2YgOiB0XG4gICAgICB2YWwgc2ltcGxlX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gICAgICB2YWwgaGFzaF9zZW1pIDogdFxuICAgICAgdmFsIHF1b3RlZF9zdHJpbmcgOiBMZXhpbmcucG9zaXRpb24gLT4gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiB0XG4gICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgdmFsIGNvbW1lbnQgOiBzdHJpbmcgLT4gbWFpbjpzIC0+IHNcbiAgICAgIHZhbCBibG9ja19jb21tZW50IDogTGV4aW5nLnBvc2l0aW9uIC0+IG1haW46cyAtPiBzXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChYIDogVCkgOiBzaWdcbiAgICB2YWwgbWFpbiA6ID9idWY6QnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiBYLlRva2VuLnRcbiAgZW5kID0gc3RydWN0ICgqIEJFR0lOIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG4gICAgb3BlbiBYXG5cbiMgODQgXCJzcmMvbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjQ0XFwyNTVcXDAxMFxcMDAwXFwwNDNcXDAwMFxcMDUzXFwwMDBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDA4NlxcMDAwXFwyNDhcXDI1NVxcMjQ5XFwyNTVcXDA5NlxcMDAwXFxcbiAgICBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTcyXFwwMDBcXDE4MlxcMDAwXFwyMjBcXDAwMFxcMjMwXFwwMDBcXDAwN1xcMDAxXFwyNDdcXDI1NVxcXG4gICAgXFwwMTdcXDAwMVxcMDUwXFwwMDFcXDA2MFxcMDAxXFwwOTNcXDAwMVxcMTAzXFwwMDFcXDEzNlxcMDAxXFwxNDZcXDAwMVxcMTgxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDIyNFxcMDAxXFwyMzRcXDAwMVxcMDExXFwwMDJcXDAzN1xcMDAwXFwyNDZcXDI1NVxcMDgwXFwwMDBcXDI0OFxcMjU1XFxcbiAgICBcXDAyM1xcMDAyXFwyNTVcXDI1NVxcMjQ5XFwyNTVcXDA1N1xcMDAyXFwwMzNcXDAwMlxcMjUyXFwyNTVcXDAwN1xcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMTdcXDAwMFxcMTEyXFwwMDJcXDI1MVxcMjU1XFwxNDRcXDAwMlxcMjUwXFwyNTVcXDA4MVxcMDAwXFwyNTBcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMTIyXFwwMDBcXDI1NVxcMjU1XFwxNjZcXDAwMFxcMTMwXFwwMDFcXDI1MlxcMjU1XFwyNTFcXDI1NVxcMTczXFwwMDFcXDI1MVxcMDAxXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDIzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDU4XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAxN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNTdcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzVcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA2M1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDQ2XFwwMDBcXDAwOVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDM2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAzOFxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMzZcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXDAzOFxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDUzXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMThcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXFxuICAgIFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzZcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDI0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwwMjZcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAxN1xcMDAwXFwwNTlcXDAwMFxcMDI0XFwwMDBcXDI1NVxcMjU1XFwwMjhcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDBcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDE5XFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMjlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDI3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDI4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMjlcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFxcbiAgICBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDI1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBtYWluIGJ1ZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICggZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgbWFpbiBidWYgbGV4YnVmIClcbiMgMzcwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgKCBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRcbiMgMzgxIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uY29tbWVudCB0ZXh0IH5tYWluIGJ1ZiBsZXhidWYgKVxuIyAzODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyA5OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmxwYXJlbiApXG4jIDM5MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDEwMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLnJwYXJlbiApXG4jIDM5NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDEwMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBwb3MgbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4ucXVvdGVkX3N0cmluZyBwb3MgYnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQwNyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG4jIDExMCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBUb2tlbi5oYXNoX3NlbWkgKVxuIyA0MTIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxMTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIFtwb3NdIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLmJsb2NrX2NvbW1lbnQgcG9zIH5tYWluIGJ1ZiBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDI0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTIwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJpbGxlZ2FsIGVuZCBvZiBjb21tZW50XCIgKVxuIyA0MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIiApXG4jIDQzNCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMCAtPlxubGV0XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJcbiMgNDQwIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVG9rZW4uc2ltcGxlX3N0cmluZyBzdHIgKVxuIyA0NDQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTI4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4uZW9mIClcbiMgNDQ5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFpbl9yZWMgYnVmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiAzNlxuYW5kIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMzEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7ICgpIClcbiMgNDYxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTMzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDIgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDcxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMTQwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBsZW4gPSBsZXhlbWVfbGVuIGxleGJ1ZiAtIDMgaW5cbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDgxIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbmxldFxuIyAxNDYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDQ4NyBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNDcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChjaGFyX2Zvcl9iYWNrc2xhc2ggYyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0OTUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgIGMxXG4jIDUwMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDE1MiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTA2IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzXG4jIDUxMSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNTMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBkZWNfY29kZSBjMSBjMiBjMyBpblxuICAgICAgICBpZiB2ID4gMjU1IHRoZW4gKFxuICAgICAgICAgIGxldCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9ID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IFxcXG4gICAgICAgICAgICAgICBpbGxlZ2FsIGVzY2FwZSBhdCBsaW5lICVkIGNoYXIgJWQ6IGBcXFxcJWMlYyVjJ1wiXG4gICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wgLSAzKVxuICAgICAgICAgICAgICBjMSBjMiBjMyBpblxuICAgICAgICAgIGZhaWx3aXRoIG1zZyk7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1MjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxubGV0XG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMVxuIyA1MzUgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1NDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTY5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gaGV4X2NvZGUgYzEgYzIgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU0OSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICBjXG4jIDU1NSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBpblxuIyAxNzYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NjQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNyAtPlxuIyAxODMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIGxmO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTc0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDggLT5cbiMgMTkwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBvZnMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIG9mcyBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIG9mcyBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1ODUgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nIGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICBzdGFydC5wb3NfbG51bSAoc3RhcnQucG9zX2NudW0gLSBzdGFydC5wb3NfYm9sKVxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNTk3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgNTNcbmFuZCBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjA5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgZm91bmRfbmV3bGluZSBsZXhidWYgMDsgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxMCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDIxMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MTYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAyMTUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMSB9IGluXG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWZcbiAgICAgIClcbiMgNjI3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDMgLT5cbiMgMjIzIFwic3JjL2xleGVyLm1sbFwiXG4gICAgKFxuICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAyIH0gaW5cbiAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgKHN0YXJ0IDo6IGxvY3MpIGxleGJ1ZlxuICAgIClcbiMgNjM3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMjMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW19dIC0+ICgpICgqIHRoZSBjb21tZW50IGlzIGZpbmlzaGVkICopXG4gICAgICAgIHwgXyA6OiAoXyA6OiBfIGFzIHQpIC0+IHNjYW5fYmxvY2tfY29tbWVudCBidWYgdCBsZXhidWZcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UgICgqIGltcG9zc2libGUgKilcbiAgICAgIClcbiMgNjQ4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMjM4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gOjogXyAtPlxuICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgIHNwcmludGYgXCJTZXhwbGliLkxleGVyLnNjYW5fYmxvY2tfY29tbWVudDogXFxcbiAgICAgICAgICAgICAgICB1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudCBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgICAgIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDY2MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMjUwIFwic3JjL2xleGVyLm1sbFwiXG4gICgqIFJFU1VNRSBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gICAgbGV0IG1haW4gP2J1ZiA9XG4gICAgICBsZXQgYnVmID1cbiAgICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNyZWF0ZSA2NFxuICAgICAgICB8IFNvbWUgYnVmIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5vZl9idWZmZXIgYnVmXG4gICAgICBpblxuICAgICAgbWFpbiBidWZcblxuICBlbmQgKCogRU5EIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgbW9kdWxlIFZhbmlsbGEgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQnVmZmVyXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIF8gXyA9ICgpXG4gICAgICAgIGxldCBvZl9idWZmZXIgYiA9IGJcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyXG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyB4XG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIF8gYnVmID0gU1RSSU5HIChCdWZmZXIuY29udGVudHMgYnVmKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBfcG9zIH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZlxuICAgICAgICBsZXQgY29tbWVudCBfdGV4dCB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKCogc2tpcCBhbmQgY29udGludWUgbGV4aW5nICopXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFdpdGhfbGF5b3V0ID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgY29udGVudHMgOiBCdWZmZXIudDtcbiAgICAgICAgICBsZXhlbWUgOiBCdWZmZXIudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3JlYXRlIG4gPSB7Y29udGVudHMgPSBCdWZmZXIuY3JlYXRlIG47IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgbn1cbiAgICAgICAgbGV0IG9mX2J1ZmZlciBjb250ZW50cyA9IHsgY29udGVudHM7IGxleGVtZSA9IEJ1ZmZlci5jcmVhdGUgNjQgfVxuICAgICAgICBsZXQgYWRkX2NoYXIgdCBjaCA9IEJ1ZmZlci5hZGRfY2hhciB0LmNvbnRlbnRzIGNoXG4gICAgICAgIGxldCBhZGRfc3ViYnl0ZXMgdCBzdHIgb2ZzIGxlbiA9IEJ1ZmZlci5hZGRfc3ViYnl0ZXMgdC5jb250ZW50cyBzdHIgb2ZzIGxlblxuICAgICAgICBsZXQgYWRkX2xleGVtZSB0IGxleGJ1ZiA9IEJ1ZmZlci5hZGRfc3RyaW5nIHQubGV4ZW1lIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgbGV0IGNsZWFyIHQgPSBCdWZmZXIuY2xlYXIgdC5sZXhlbWU7IEJ1ZmZlci5jbGVhciB0LmNvbnRlbnRzXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlcl93aXRoX2xheW91dFxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgKHgsIE5vbmUpXG4gICAgICAgIGxldCBxdW90ZWRfc3RyaW5nIHBvcyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHM7IGxleGVtZX0gPVxuICAgICAgICAgIFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGNvbnRlbnRzLCBTb21lIChwb3MsIEJ1ZmZlci5jb250ZW50cyBsZXhlbWUpKVxuICAgICAgICBsZXQgYmxvY2tfY29tbWVudCBwb3Mgfm1haW46XyB7UXVvdGVkX3N0cmluZ19idWZmZXIuY29udGVudHMgPSBfOyBsZXhlbWV9IF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKEJ1ZmZlci5jb250ZW50cyBsZXhlbWUsIFNvbWUgcG9zKVxuICAgICAgICBsZXQgY29tbWVudCB0ZXh0IH5tYWluOl8gX2J1ZiBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UICh0ZXh0LCBOb25lKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIGxldCBtYWluID0gVmFuaWxsYS5tYWluXG4gIGxldCBtYWluX3dpdGhfbGF5b3V0ID0gV2l0aF9sYXlvdXQubWFpblxuXG5cbiMgNzQ1IFwic3JjL2xleGVyLm1sXCJcbiIsIigqIFNleHA6IE1vZHVsZSBmb3IgaGFuZGxpbmcgUy1leHByZXNzaW9ucyAoSS9PLCBldGMuKSAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBCaWdhcnJheVxubW9kdWxlIFNleHBsaWIgPSBTZXhwbGliMFxubW9kdWxlIENvbnYgPSBTZXhwbGliLlNleHBfY29udlxuXG4oKiBjb252Lm1sIGRlcGVuZHMgb24gdXMgc28gd2UgY2FuIG9ubHkgdXNlIHRoaXMgbW9kdWxlICopXG5cbmluY2x1ZGUgVHlwZVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByaXZhdGVcblxubGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIEkvTy1jaGFubmVscyAqKVxuXG5sZXQgd2l0aF9uZXdfYnVmZmVyIG9jIGYgPVxuICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gIGYgYnVmO1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcbjs7XG5cbmxldCBvdXRwdXRfaHVtIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSBzZXhwIH5idWYpXG5cbmxldCBvdXRwdXRfaHVtX2luZGVudCBpbmRlbnQgb2Mgc2V4cCA9XG4gIHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIH5pbmRlbnQgc2V4cCB+YnVmKVxuOztcblxubGV0IG91dHB1dF9tYWNoIG9jIHNleHAgPSB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX21hY2ggc2V4cCB+YnVmKVxubGV0IG91dHB1dCA9IG91dHB1dF9tYWNoXG5cbigqIE91dHB1dCBvZiBTLWV4cHJlc3Npb25zIHRvIGZpbGUgKilcblxuKCogVGhlIHRlbXAgZmlsZSBmdW5jdGlvbnMgaW4gdGhlIE9DYW1sIEZpbGVuYW1lIG1vZHVsZSBkbyBub3Qgc3VwcG9ydFxuICAgcGVybWlzc2lvbnMuICBCdXQgb3BlbmluZyBhIGZpbGUgd2l0aCBnaXZlbiBwZXJtaXNzaW9ucyBpcyBkaWZmZXJlbnRcbiAgIGZyb20gb3BlbmluZyBpdCBhbmQgY2htb2RpbmcgaXQgdG8gdGhlc2UgcGVybWlzc2lvbnMsIGJlY2F1c2UgdGhlIHVtYXNrXG4gICBpcyB0YWtlbiBpbiBhY2NvdW50LiAgVW5kZXIgVW5peCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGdldCB0aGUgdW1hc2sgaW5cbiAgIGEgdGhyZWFkLXNhZmUgd2F5LiAqKVxubW9kdWxlIFRtcF9maWxlID0gc3RydWN0XG4gIGxldCBwcm5nID0gcmVmIE5vbmVcblxuICBsZXQgdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJhbmRfc3RhdGUgPVxuICAgICAgbWF0Y2ggIXBybmcgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCByZXQgPSBSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgcHJuZyA6PSBTb21lIHJldDtcbiAgICAgICAgcmV0XG4gICAgaW5cbiAgICBsZXQgcm5kID0gUmFuZG9tLlN0YXRlLmJpdHMgcmFuZF9zdGF0ZSBsYW5kIDB4RkZGRkZGIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4XG4gIDs7XG5cbiAgKCogS2VlcCB0aGUgcGVybWlzc2lvbnMgbG9vc2UuIFNleHBzIGFyZSB1c3VhbGx5IHNoYXJlZCBhbmQgcmFyZWx5IHByaXZhdGUqKVxuICBsZXQgb3Blbl90ZW1wX2ZpbGUgPyhwZXJtID0gMG82NjYpIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgb2MgPVxuICAgICAgICAgIG9wZW5fb3V0X2dlbiBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2w7IE9wZW5fdGV4dCBdIHBlcm0gbmFtZVxuICAgICAgICBpblxuICAgICAgICBuYW1lLCBvY1xuICAgICAgd2l0aFxuICAgICAgfCBTeXNfZXJyb3IgXyBhcyBlIC0+IGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gICAgaW5cbiAgICB0cnlfbmFtZSAwXG4gIDs7XG5lbmRcblxubGV0IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9mdW5jdGlvbiBmaWxlIHNleHAgPVxuICBsZXQgdG1wX25hbWUsIG9jID0gVG1wX2ZpbGUub3Blbl90ZW1wX2ZpbGUgP3Blcm0gZmlsZSBcInRtcFwiIGluXG4gICh0cnlcbiAgICAgb3V0cHV0X2Z1bmN0aW9uIG9jIHNleHA7XG4gICAgIGNsb3NlX291dCBvY1xuICAgd2l0aFxuICAgfCBlIC0+XG4gICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICAgKHRyeSBTeXMucmVtb3ZlIHRtcF9uYW1lIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgIHJhaXNlIGUpO1xuICBTeXMucmVuYW1lIHRtcF9uYW1lIGZpbGVcbjs7XG5cbmxldCBvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2Mgc2V4cCA9XG4gIGRvX291dHB1dCBvYyBzZXhwO1xuICBvdXRwdXRfc3RyaW5nIG9jIFwiXFxuXCJcbjs7XG5cbmxldCBzYXZlX2h1bSA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwXG5sZXQgc2F2ZV9tYWNoID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIG91dHB1dF9tYWNoIGZpbGUgc2V4cFxubGV0IHNhdmUgPSBzYXZlX21hY2hcbmxldCBvdXRwdXRfc2V4cHNfbmwgZG9fb3V0cHV0IG9jIHNleHBzID0gTGlzdC5pdGVyIChvdXRwdXRfc2V4cF9ubCBkb19vdXRwdXQgb2MpIHNleHBzXG5cbmxldCBzYXZlX3NleHBzX2h1bSA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwc19tYWNoID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9tYWNoKSBmaWxlIHNleHBzXG47O1xuXG5sZXQgc2F2ZV9zZXhwcyA9IHNhdmVfc2V4cHNfbWFjaFxuXG4oKiBTY2FuIGZ1bmN0aW9ucyAqKVxuXG5sZXQgc2Nhbl9zZXhwID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHAgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwX29wdCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwX29wdCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fcmV2X3NleHBzID9idWYgbGV4YnVmID0gUGFyc2VyLnJldl9zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcblxubGV0IGdldF9tYWluX2J1ZiBidWYgPVxuICBsZXQgYnVmID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDEyOFxuICAgIHwgU29tZSBidWYgLT4gYnVmXG4gIGluXG4gIExleGVyLm1haW4gfmJ1ZlxuOztcblxubGV0IHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mIH5pbml0IGxleGJ1ZiA9XG4gIGxldCBtYWluID0gZ2V0X21haW5fYnVmIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBQYXJzZXIuc2V4cF9vcHQgbWFpbiBsZXhidWYgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgc2V4cCAtPiBsb29wIChmIGFjYyBzZXhwKVxuICBpblxuICBsb29wIGluaXRcbjs7XG5cbmxldCBzY2FuX2l0ZXJfc2V4cHMgP2J1ZiB+ZiBsZXhidWYgPVxuICBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiBsZXhidWYgfmluaXQ6KCkgfmY6KGZ1biAoKSBzZXhwIC0+IGYgc2V4cClcbjs7XG5cbmxldCBzY2FuX3NleHBzX2NvbnYgP2J1ZiB+ZiBsZXhidWYgPVxuICBsZXQgY29sbCBhY2Mgc2V4cCA9IGYgc2V4cCA6OiBhY2MgaW5cbiAgTGlzdC5yZXYgKHNjYW5fZm9sZF9zZXhwcyA/YnVmIH5mOmNvbGwgfmluaXQ6W10gbGV4YnVmKVxuOztcblxubGV0IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlID9jb250YWluaW5nX3NleHAgP2xvY2F0aW9uID9pbnZhbGlkX3NleHAgKCkgfmV4biA6IHQgPVxuICBMaXN0XG4gICAgKExpc3QuY29uY2F0XG4gICAgICAgWyBbIEF0b20gXCJPZl9zZXhwX2Vycm9yXCIgXVxuICAgICAgIDsgKG1hdGNoIGxvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIEF0b20geCBdKVxuICAgICAgIDsgWyAobWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgICAgICB8IEZhaWx1cmUgeCAtPiBBdG9tIHhcbiAgICAgICAgICAgICB8IF8gLT4gQ29udi5zZXhwX29mX2V4biBleG4pXG4gICAgICAgICBdXG4gICAgICAgOyAobWF0Y2ggaW52YWxpZF9zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiaW52YWxpZF9zZXhwXCI7IHggXSBdKVxuICAgICAgIDsgKG1hdGNoIGNvbnRhaW5pbmdfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImNvbnRhaW5pbmdfc2V4cFwiOyB4IF0gXSlcbiAgICAgICBdKVxuOztcblxuKCogUGFydGlhbCBwYXJzaW5nICopXG5cbm1vZHVsZSBBbm5vdCA9IHN0cnVjdFxuICB0eXBlIHBvcyA9IFBhcnNleHAuUG9zaXRpb25zLnBvcyA9XG4gICAgeyBsaW5lIDogaW50XG4gICAgOyBjb2wgOiBpbnRcbiAgICA7IG9mZnNldCA6IGludFxuICAgIH1cblxuICB0eXBlIHJhbmdlID0gUGFyc2V4cC5Qb3NpdGlvbnMucmFuZ2UgPVxuICAgIHsgc3RhcnRfcG9zIDogcG9zXG4gICAgOyBlbmRfcG9zIDogcG9zXG4gICAgfVxuXG4gIHR5cGUgdCA9XG4gICAgfCBBdG9tIG9mIHJhbmdlICogVHlwZS50XG4gICAgfCBMaXN0IG9mIHJhbmdlICogdCBsaXN0ICogVHlwZS50XG5cbiAgdHlwZSAnYSBjb252ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBFcnJvciBvZiBleG4gKiB0XG4gICAgXVxuXG4gIGV4Y2VwdGlvbiBDb252X2V4biBvZiBzdHJpbmcgKiBleG5cblxuICBsZXQgKCkgPVxuICAgIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENvbnZfZXhuXSAoZnVuY3Rpb25cbiAgICAgIHwgQ29udl9leG4gKGxvY2F0aW9uLCBleG4pIC0+IHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+ZXhuXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIHR5cGUgc3RhY2sgPVxuICAgIHsgbXV0YWJsZSBwb3NpdGlvbnMgOiBwb3MgbGlzdFxuICAgIDsgbXV0YWJsZSBzdGFjayA6IHQgbGlzdCBsaXN0XG4gICAgfVxuXG4gIGxldCBnZXRfc2V4cCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChfLCBzZXhwKSB8IExpc3QgKF8sIF8sIHNleHApIC0+IHNleHBcbiAgOztcblxuICBsZXQgZ2V0X3JhbmdlID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKHJhbmdlLCBfKSB8IExpc3QgKHJhbmdlLCBfLCBfKSAtPiByYW5nZVxuICA7O1xuXG4gIGxldCBzZXhwX29mX2NvbnYgc2V4cF9vZl9hID0gZnVuY3Rpb25cbiAgICB8IGBSZXN1bHQgYSAtPiBUeXBlLkxpc3QgWyBBdG9tIFwiUmVzdWx0XCI7IGEgfD4gc2V4cF9vZl9hIF1cbiAgICB8IGBFcnJvciAoZXhuLCB0KSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJFcnJvclwiOyBMaXN0IFsgZXhuIHw+IENvbnYuc2V4cF9vZl9leG47IHQgfD4gZ2V0X3NleHAgXSBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIEFubm90X3NleHAgb2YgdFxuXG4gIGxldCBmaW5kX3NleHAgYW5ub3Rfc2V4cCBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgYW5ub3Rfc2V4cCA9XG4gICAgICBtYXRjaCBhbm5vdF9zZXhwIHdpdGhcbiAgICAgIHwgKEF0b20gKF8sIHN1Yl9zZXhwKSB8IExpc3QgKF8sIF8sIHN1Yl9zZXhwKSkgd2hlbiBzZXhwID09IHN1Yl9zZXhwIC0+XG4gICAgICAgIHJhaXNlIChBbm5vdF9zZXhwIGFubm90X3NleHApXG4gICAgICB8IExpc3QgKF8sIGFubm90cywgXykgLT4gTGlzdC5pdGVyIGxvb3AgYW5ub3RzXG4gICAgICB8IEF0b20gXyAtPiAoKVxuICAgIGluXG4gICAgdHJ5XG4gICAgICBsb29wIGFubm90X3NleHA7XG4gICAgICBOb25lXG4gICAgd2l0aFxuICAgIHwgQW5ub3Rfc2V4cCByZXMgLT4gU29tZSByZXNcbiAgOztcbmVuZFxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgKEFubm90LkNvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhuLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlX3BvcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSB0ZXh0X2xpbmUgOiBpbnRcbiAgICA7IG11dGFibGUgdGV4dF9jaGFyIDogaW50XG4gICAgOyBtdXRhYmxlIGdsb2JhbF9vZmZzZXQgOiBpbnRcbiAgICA7IG11dGFibGUgYnVmX3BvcyA6IGludFxuICAgIH1cblxuICBsZXQgY3JlYXRlID8odGV4dF9saW5lID0gMSkgPyh0ZXh0X2NoYXIgPSAwKSA/KGJ1Zl9wb3MgPSAwKSA/KGdsb2JhbF9vZmZzZXQgPSAwKSAoKSA9XG4gICAgbGV0IGZhaWwgbXNnID0gZmFpbHdpdGggKFwiU2V4cGxpYi5TZXhwLlBhcnNlX3Bvcy5jcmVhdGU6IFwiIF4gbXNnKSBpblxuICAgIGlmIHRleHRfbGluZSA8IDFcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2xpbmUgPCAxXCJcbiAgICBlbHNlIGlmIHRleHRfY2hhciA8IDBcbiAgICB0aGVuIGZhaWwgXCJ0ZXh0X2NoYXIgPCAwXCJcbiAgICBlbHNlIGlmIGdsb2JhbF9vZmZzZXQgPCAwXG4gICAgdGhlbiBmYWlsIFwiZ2xvYmFsX29mZnNldCA8IDBcIlxuICAgIGVsc2UgaWYgYnVmX3BvcyA8IDBcbiAgICB0aGVuIGZhaWwgXCJidWZfcG9zIDwgMFwiXG4gICAgZWxzZSB7IHRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH1cbiAgOztcblxuICBsZXQgd2l0aF9idWZfcG9zIHQgYnVmX3BvcyA9IHsgdCB3aXRoIGJ1Zl9wb3MgfVxuZW5kXG5cbm1vZHVsZSBDb250X3N0YXRlID0gUGFyc2V4cC5PbGRfcGFyc2VyX2NvbnRfc3RhdGVcblxudHlwZSAoJ2EsICd0KSBwYXJzZV9yZXN1bHQgPVxuICB8IERvbmUgb2YgJ3QgKiBQYXJzZV9wb3MudFxuICB8IENvbnQgb2YgQ29udF9zdGF0ZS50ICogKCdhLCAndCkgcGFyc2VfZnVuXG5cbmFuZCAoJ2EsICd0KSBwYXJzZV9mdW4gPSBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCAndCkgcGFyc2VfcmVzdWx0XG5cbnR5cGUgJ3QgcGFyc2Vfc3RhdGUgPSB7IHBhcnNlX3BvcyA6IFBhcnNlX3Bvcy50IH1cblxudHlwZSBwYXJzZV9lcnJvciA9XG4gIHsgZXJyX21zZyA6IHN0cmluZ1xuICA7IHBhcnNlX3N0YXRlIDogWyBgU2V4cCBvZiB0IGxpc3QgbGlzdCBwYXJzZV9zdGF0ZSB8IGBBbm5vdCBvZiBBbm5vdC5zdGFjayBwYXJzZV9zdGF0ZSBdXG4gIH1cblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yIG9mIHBhcnNlX2Vycm9yXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFBhcnNlX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IFBhcnNlX2Vycm9yIHBlIC0+XG4gICAgICBsZXQgcHBvcyA9XG4gICAgICAgIG1hdGNoIHBlLnBhcnNlX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgU2V4cCB7IHBhcnNlX3BvcyB9IHwgYEFubm90IHsgcGFyc2VfcG9zIH0gLT4gcGFyc2VfcG9zXG4gICAgICBpblxuICAgICAgTGlzdFxuICAgICAgICBbIEF0b20gXCJTZXhwbGliLlNleHAuUGFyc2VfZXJyb3JcIlxuICAgICAgICA7IExpc3RcbiAgICAgICAgICAgIFsgTGlzdCBbIEF0b20gXCJlcnJfbXNnXCI7IEF0b20gcGUuZXJyX21zZyBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9saW5lXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9saW5lIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2NoYXJcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2NoYXIgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTGF5b3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpZ2FycmF5LmxheW91dFxuXG4gIGxldCBvZmZzZXQgOiB0eXBlIGEuIGEgdCAtPiBpbnQgPSBmdW5jdGlvblxuICAgIHwgQmlnYXJyYXkuRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIHwgQmlnYXJyYXkuQ19sYXlvdXQgLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTEudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTEuZGltIHQgLSAxIGRvXG4gICAgICBmIChpICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0fVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbSB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTEuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiB0LntpfSA8LSBmIGkpO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gaW5pdCA6PSBmICFpbml0IHQue2l9KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkxLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgfmY6KGZ1biBpIC0+IHQue2kgKyBvZmZzZXR9KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5Mi50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQgLSAxIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCAtIDEgZG9cbiAgICAgICAgZiAoaSArIG9mZnNldCkgKGogKyBvZmZzZXQpIHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9XG4gICAgICBkb25lXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltMSBkaW0yIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5Mi5jcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgaiAoXyA6IGVsdCkgLT4gdC57aSwgan0gPC0gZiBpIGopO1xuICAgIHRcbiAgOztcblxuICBsZXQgZm9sZCAodHlwZSBlbHQpICh0IDogKGVsdCwgXywgXykgdCkgfmluaXQgfmYgPVxuICAgIGxldCBpbml0ID0gcmVmIGluaXQgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gKF8gOiBpbnQpIChfIDogaW50KSBlbHQgLT4gaW5pdCA6PSBmICFpbml0IGVsdCk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMSB0KSB+ZjooZnVuIGkgLT5cbiAgICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIH5mOihmdW4gaiAtPiB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fSkpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMSB0KSBpblxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSAtPiBzaXplOmludCAtPiBoYXNoOkhhc2guc3RhdGUgLT4gSGFzaC5zdGF0ZVxuXG5sZXQgY3JlYXRlIGYgOiBfIHQgPSBmXG5cbmxldCBvYnNlcnZlICh0IDogXyB0KSB4IH5zaXplIH5oYXNoID1cbiAgaWYgc2l6ZSA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vYnNlcnZlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgZWxzZSB0IHggfnNpemUgfmhhc2hcbjs7XG5cbmxldCBvcGFxdWUgXyB+c2l6ZTpfIH5oYXNoID0gaGFzaFxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgZ2VuZXJhdGUgOiAnYSB0IC0+IHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSBTdGFnZWQudFxuXG4gIGxldCBjcmVhdGUgZiA6IF8gdCA9IFN0YWdlZC5zdGFnZSBmXG5cbiAgbGV0IGdlbmVyYXRlICh0IDogXyB0KSB+c2l6ZSB+cmFuZG9tID1cbiAgICBpZiBzaXplIDwgMFxuICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmdlbmVyYXRlOiBzaXplIDwgMFwiIChzaXplIDogaW50KV1cbiAgICBlbHNlIFN0YWdlZC51bnN0YWdlIHQgfnNpemUgfnJhbmRvbVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgc2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb206XyAtPiBzaXplKVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuc3BsaXQgcmFuZG9tIGluXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBoYXNoID0gT2JzZXJ2ZXIwLm9ic2VydmUgZG9tIHggfnNpemUgfmhhc2g6KEhhc2guYWxsb2MgKCkpIGluXG4gICAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY29weSByYW5kb20gaW5cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpO1xuICAgICAgZ2VuZXJhdGUgcm5nIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgd2l0aF9zaXplIHQgfnNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgcGVydHVyYiB0IHNhbHQgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gc2FsdDtcbiAgICBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIH5zaXplIH5yYW5kb20gPVxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IFNvbWUgeSAtPiB5XG4gICAgfCBOb25lIC0+IGxvb3AgfnNpemU6KHNpemUgKyAxKSB+cmFuZG9tXG4gIGluXG4gIGNyZWF0ZSBsb29wXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5sZXQgcmV0dXJuIHggPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb206XyAtPiB4KVxubGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBmIChnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYXBwbHkgdGYgdHggPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGYgPSBnZW5lcmF0ZSB0ZiB+c2l6ZSB+cmFuZG9tIGluXG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0eCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZiB4KVxuOztcblxubGV0IGJpbmQgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIGdlbmVyYXRlIChmIHgpIH5zaXplIH5yYW5kb20pXG47O1xuXG5sZXQgYWxsIGxpc3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QubWFwIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuXG5sZXQgYWxsX3VuaXQgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5pdGVyIGxpc3QgfmY6KGdlbmVyYXRlIH5zaXplIH5yYW5kb20pKVxuOztcblxubW9kdWxlIEZvcl9hcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgYm90aCA9IEZvcl9hcHBsaWNhdGl2ZS5ib3RoXG5sZXQgbWFwMiA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAyXG5sZXQgbWFwMyA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAzXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IEZvcl9hcHBsaWNhdGl2ZS5BcHBsaWNhdGl2ZV9pbmZpeFxuaW5jbHVkZSBBcHBsaWNhdGl2ZV9pbmZpeFxuXG5tb2R1bGUgRm9yX21vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgaWdub3JlX20gPSBGb3JfbW9uYWQuaWdub3JlX21cbmxldCBqb2luID0gRm9yX21vbmFkLmpvaW5cblxubW9kdWxlIE1vbmFkX2luZml4ID0gRm9yX21vbmFkLk1vbmFkX2luZml4XG5pbmNsdWRlIE1vbmFkX2luZml4XG5tb2R1bGUgTGV0X3N5bnRheCA9IEZvcl9tb25hZC5MZXRfc3ludGF4XG5vcGVuIExldF9zeW50YXhcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgbGV0IGxvID0gMCBpblxuICBsZXQgaGkgPSBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvIH5oaSBpblxuICAgIGFycmF5LihpbmRleCkpXG47O1xuXG5sZXQgdW5pb24gbGlzdCA9IGpvaW4gKG9mX2xpc3QgbGlzdClcblxubGV0IG9mX3dlaWdodGVkX2xpc3QgYWxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGFsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCB3ZWlnaHRzLCB2YWx1ZXMgPSBMaXN0LnVuemlwIGFsaXN0IGluXG4gIGxldCB2YWx1ZV9hcnJheSA9IEFycmF5Lm9mX2xpc3QgdmFsdWVzIGluXG4gIGxldCB0b3RhbF93ZWlnaHQsIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5ID1cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5pbml0IChBcnJheS5sZW5ndGggdmFsdWVfYXJyYXkpIH5mOihmdW4gXyAtPiAwLikgaW5cbiAgICBsZXQgc3VtID1cbiAgICAgIExpc3QuZm9sZGkgd2VpZ2h0cyB+aW5pdDowLiB+ZjooZnVuIGluZGV4IGFjYyB3ZWlnaHQgLT5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgd2VpZ2h0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbm90IGZpbml0ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGlmIEZsb2F0LiggPCApIHdlaWdodCAwLlxuICAgICAgICB0aGVuXG4gICAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB3ZWlnaHQgaXMgbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBsZXQgY3VtdWxhdGl2ZSA9IGFjYyArLiB3ZWlnaHQgaW5cbiAgICAgICAgYXJyYXkuKGluZGV4KSA8LSBjdW11bGF0aXZlO1xuICAgICAgICBjdW11bGF0aXZlKVxuICAgIGluXG4gICAgaWYgRmxvYXQuKCA8PSApIHN1bSAwLlxuICAgIHRoZW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiB0b3RhbCB3ZWlnaHQgaXMgemVyb1wiXTtcbiAgICBzdW0sIGFycmF5XG4gIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBjaG9pY2UgPSBTcGxpdHRhYmxlX3JhbmRvbS5mbG9hdCByYW5kb20gfmxvOjAuIH5oaTp0b3RhbF93ZWlnaHQgaW5cbiAgICBtYXRjaFxuICAgICAgQXJyYXkuYmluYXJ5X3NlYXJjaFxuICAgICAgICBjdW11bGF0aXZlX3dlaWdodF9hcnJheVxuICAgICAgICB+Y29tcGFyZTpGbG9hdC5jb21wYXJlXG4gICAgICAgIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICAgICAgY2hvaWNlXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmRleCAtPiB2YWx1ZV9hcnJheS4oaW5kZXgpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCB3ZWlnaHRlZF91bmlvbiBhbGlzdCA9IGpvaW4gKG9mX3dlaWdodGVkX2xpc3QgYWxpc3QpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmb3JjZSBsYXp5X3QpIH5zaXplIH5yYW5kb20pXG5cbmxldCBmaXhlZF9wb2ludCBvZl9nZW5lcmF0b3IgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX2dlbmVyYXRvciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBmb3JjZSBsYXp5X3Rcbjs7XG5cbmxldCB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgcmVjX2xpc3QgPVxuICAgICAgTGlzdC5tYXAgKGYgc2VsZikgfmY6KGZ1biAodywgdCkgLT5cbiAgICAgICAgKCB3XG4gICAgICAgICwgbGV0JWJpbmQgbiA9IHNpemUgaW5cbiAgICAgICAgICB3aXRoX3NpemUgfnNpemU6KG4gLSAxKSB0ICkpXG4gICAgaW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG5vbnJlY19saXN0IHx8IExpc3QuaXNfZW1wdHkgcmVjX2xpc3RcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci53ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb246IGxpc3RzIG11c3QgYmUgbm9uLWVtcHR5XCJdO1xuICAgIGxldCBub25yZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gbm9ucmVjX2xpc3QgaW5cbiAgICBsZXQgcmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIChub25yZWNfbGlzdCBAIHJlY19saXN0KSBpblxuICAgIG1hdGNoJWJpbmQgc2l6ZSB3aXRoXG4gICAgfCAwIC0+IG5vbnJlY19nZW5cbiAgICB8IF8gLT4gcmVjX2dlbilcbjs7XG5cbmxldCByZWN1cnNpdmVfdW5pb24gbm9ucmVjX2xpc3QgfmYgPVxuICBsZXQgd2VpZ2h0ZWQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6KGZ1biB0IC0+IDEuLCB0KSBpblxuICB3ZWlnaHRlZF9yZWN1cnNpdmVfdW5pb24gKHdlaWdodGVkIG5vbnJlY19saXN0KSB+ZjooZnVuIHNlbGYgLT4gd2VpZ2h0ZWQgKGYgc2VsZikpXG47O1xuXG5sZXQgc2l6ZXMgPyhtaW5fbGVuZ3RoID0gMCkgPyhtYXhfbGVuZ3RoID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgYXNzZXJ0IChtaW5fbGVuZ3RoIDw9IG1heF9sZW5ndGgpO1xuICAgIGxldCB1cHBlcl9ib3VuZCA9IG1pbl9sZW5ndGggKyBzaXplIGluXG4gICAgbGV0IG1heF9sZW5ndGggPVxuICAgICAgaWYgdXBwZXJfYm91bmQgPj0gbWluX2xlbmd0aCAoKiBndWFyZCBhZ2FpbnN0IG92ZXJmbG93ICopXG4gICAgICB0aGVuIG1pbiBtYXhfbGVuZ3RoIHVwcGVyX2JvdW5kXG4gICAgICBlbHNlIG1heF9sZW5ndGhcbiAgICBpblxuICAgICgqIHBpY2sgYSBsZW5ndGgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IG1vc3Qgb2YgdGhlIHNpemUgaXMgc3BlbnQgb24gZWxlbWVudHMgKilcbiAgICBsZXQgbGVuID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86bWluX2xlbmd0aCB+aGk6bWF4X2xlbmd0aCBpblxuICAgICgqIGlmIHRoZXJlIGFyZSBubyBlbGVtZW50cyByZXR1cm4gYW4gZW1wdHkgYXJyYXksIG90aGVyd2lzZSByZXR1cm4gYSBub24tZW1wdHkgYXJyYXlcbiAgICAgICB3aXRoIHRoZSBzaXplIGRpc3RyaWJ1dGVkIGFtb25nIHRoZSBlbGVtZW50cyAqKVxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIFtdXG4gICAgZWxzZSAoXG4gICAgICBsZXQgc2l6ZXMgPSBBcnJheS5pbml0IGxlbiB+ZjooZnVuIF8gLT4gMCkgaW5cbiAgICAgIGxldCByZW1haW5pbmcgPSBzaXplIC0gKGxlbiAtIG1pbl9sZW5ndGgpIGluXG4gICAgICBsZXQgbWF4X2luZGV4ID0gbGVuIC0gMSBpblxuICAgICAgZm9yIF8gPSAxIHRvIHJlbWFpbmluZyBkb1xuICAgICAgICAoKiBwaWNrIGFuIGluZGV4LCB3ZWlnaHRlZCBsb3cgc28gdGhhdCB3ZSBzZWUgdW5iYWxhbmNlZCBkaXN0cmlidXRpb25zIG9mdGVuICopXG4gICAgICAgIGxldCBpbmRleCA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBzaXplcy4oaW5kZXgpIDwtIHNpemVzLihpbmRleCkgKyAxXG4gICAgICBkb25lO1xuICAgICAgKCogcGVybXV0ZSB0aGUgYXJyYXkgc28gdGhhdCBubyBpbmRleCBpcyBmYXZvcmVkIG92ZXIgYW5vdGhlciAqKVxuICAgICAgZm9yIGkgPSAwIHRvIG1heF9pbmRleCAtIDEgZG9cbiAgICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgQXJyYXkuc3dhcCBzaXplcyBpIGpcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgKEFycmF5LnN1bSAobW9kdWxlIEludCkgc2l6ZXMgfmY6Rm4uaWQgKyAobGVuIC0gbWluX2xlbmd0aCkgPSBzaXplKTtcbiAgICAgIEFycmF5LnRvX2xpc3Qgc2l6ZXMpKVxuOztcblxubGV0IHVuaXQgPSByZXR1cm4gKClcbmxldCBib29sID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tKVxubGV0IG9wdGlvbiB2YWx1ZV90ID0gdW5pb24gWyByZXR1cm4gTm9uZTsgbWFwIHZhbHVlX3QgfmY6T3B0aW9uLnJldHVybiBdXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID0gdW5pb24gWyBtYXAgZnN0X3QgfmY6RWl0aGVyLmZpcnN0OyBtYXAgc25kX3QgfmY6RWl0aGVyLnNlY29uZCBdXG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuOztcblxubGV0IGxpc3RfZ2VuZXJpYyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCBlbHRfZ2VuID1cbiAgbGV0JWJpbmQgc2l6ZXMgPSBzaXplcyA/bWluX2xlbmd0aCA/bWF4X2xlbmd0aCAoKSBpblxuICBMaXN0Lm1hcCBzaXplcyB+ZjooZnVuIHNpemUgLT4gd2l0aF9zaXplIH5zaXplIGVsdF9nZW4pIHw+IGFsbFxuOztcblxubGV0IGxpc3QgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyBlbHRfZ2VuXG5sZXQgbGlzdF9ub25fZW1wdHkgZWx0X2dlbiA9IGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDoxIGVsdF9nZW5cblxubGV0IGxpc3Rfd2l0aF9sZW5ndGggZWx0X2dlbiB+bGVuZ3RoID1cbiAgbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggZWx0X2dlblxuOztcblxubGV0IGxpc3RfZmlsdGVyZWQgZWx0cyA9XG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBsZW5ndGhfb2ZfaW5wdXQgPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgbGVuZ3RoX29mX291dHB1dCA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmxlbmd0aF9vZl9pbnB1dCBpblxuICAgIGxldCBpbmRpY2VzID0gQXJyYXkuaW5pdCBsZW5ndGhfb2ZfaW5wdXQgfmY6Rm4uaWQgaW5cbiAgICAoKiBDaG9vc2UgW2xlbmd0aF9vZl9vdXRwdXRdIHJhbmRvbSB2YWx1ZXMgaW4gdGhlIHByZWZpeCBvZiBbaW5kaWNlc10uICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9vZl9vdXRwdXQgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOihsZW5ndGhfb2ZfaW5wdXQgLSAxKSBpblxuICAgICAgQXJyYXkuc3dhcCBpbmRpY2VzIGkgalxuICAgIGRvbmU7XG4gICAgKCogU29ydCB0aGUgY2hvc2VuIGluZGljZXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJlb3JkZXIgdGhlbS4gKilcbiAgICBBcnJheS5zb3J0IGluZGljZXMgfnBvczowIH5sZW46bGVuZ3RoX29mX291dHB1dCB+Y29tcGFyZTpJbnQuY29tcGFyZTtcbiAgICAoKiBSZXR1cm4gdGhlIGNob3NlbiBlbGVtZW50cy4gKilcbiAgICBMaXN0LmluaXQgbGVuZ3RoX29mX291dHB1dCB+ZjooZnVuIGkgLT4gZWx0cy4oaW5kaWNlcy4oaSkpKSlcbjs7XG5cbmxldCBsaXN0X3Blcm11dGF0aW9ucyBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6aSBpblxuICAgICAgQXJyYXkuc3dhcCBhcnJheSBpIGpcbiAgICBkb25lO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyYXkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsXG5cbmxldCBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86KENoYXIudG9faW50IGxvKSB+aGk6KENoYXIudG9faW50IGhpKVxuICAgIHw+IENoYXIudW5zYWZlX29mX2ludClcbjs7XG5cbmxldCBjaGFyX3VwcGVyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ0EnICdaJ1xubGV0IGNoYXJfbG93ZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnYScgJ3onXG5sZXQgY2hhcl9kaWdpdCA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJzAnICc5J1xubGV0IGNoYXJfcHJpbnRfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJyAnICd+J1xubGV0IGNoYXJfdW5pZm9ybSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgQ2hhci5taW5fdmFsdWUgQ2hhci5tYXhfdmFsdWVcbmxldCBjaGFyX2FscGhhID0gdW5pb24gWyBjaGFyX2xvd2VyY2FzZTsgY2hhcl91cHBlcmNhc2UgXVxuXG5sZXQgY2hhcl9hbHBoYW51bSA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgKCogTW9zdCBwZW9wbGUgcHJvYmFibHkgZXhwZWN0IHRoaXMgdG8gYmUgYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiwgbm90IHdlaWdodGVkXG4gICAgICAgdG93YXJkIGRpZ2l0cyBsaWtlIHdlIHdvdWxkIGdldCB3aXRoIFt1bmlvbl0gKHNpbmNlIHRoZXJlIGFyZSBmZXdlciBkaWdpdHMgdGhhblxuICAgICAgIGxldHRlcnMpLiAqKVxuICAgIFsgNTIuLCBjaGFyX2FscGhhOyAxMC4sIGNoYXJfZGlnaXQgXVxuOztcblxubGV0IGNoYXJfd2hpdGVzcGFjZSA9IG9mX2xpc3QgKExpc3QuZmlsdGVyIENoYXIuYWxsIH5mOkNoYXIuaXNfd2hpdGVzcGFjZSlcbmxldCBjaGFyX3ByaW50ID0gd2VpZ2h0ZWRfdW5pb24gWyAxMC4sIGNoYXJfYWxwaGFudW07IDEuLCBjaGFyX3ByaW50X3VuaWZvcm0gXVxuXG5sZXQgY2hhciA9XG4gIHdlaWdodGVkX3VuaW9uXG4gICAgWyAxMDAuLCBjaGFyX3ByaW50XG4gICAgOyAxMC4sIGNoYXJfdW5pZm9ybVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1pbl92YWx1ZVxuICAgIDsgMS4sIHJldHVybiBDaGFyLm1heF92YWx1ZVxuICAgIF1cbjs7XG5cbigqIFByb2R1Y2VzIGEgbnVtYmVyIGZyb20gMCBvciAxIHRvIHNpemUgKyAxLCB3ZWlnaHRlZCBoaWdoLiBXZSBoYXZlIGZvdW5kIHRoaXNcbiAgIGRpc3RyaWJ1dGlvbiBlbXBpcmljYWxseSB1c2VmdWwgZm9yIHN0cmluZyBsZW5ndGhzLiAqKVxubGV0IHNtYWxsX2ludCB+YWxsb3dfemVybyA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgbG93ZXJfYm91bmQgPSBpZiBhbGxvd196ZXJvIHRoZW4gMCBlbHNlIDEgaW5cbiAgICBsZXQgdXBwZXJfYm91bmQgPSBzaXplICsgMSBpblxuICAgIGxldCB3ZWlnaHRlZF9sb3cgPVxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6KHVwcGVyX2JvdW5kIC0gbG93ZXJfYm91bmQpXG4gICAgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfaGlnaCA9IHVwcGVyX2JvdW5kIC0gd2VpZ2h0ZWRfbG93IGluXG4gICAgd2VpZ2h0ZWRfaGlnaClcbjs7XG5cbmxldCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzp0cnVlXG5sZXQgc21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOmZhbHNlXG5cbm1vZHVsZSB0eXBlIEludF93aXRoX3JhbmRvbSA9IHNpZ1xuICBpbmNsdWRlIEludC5TXG5cbiAgdmFsIHVuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG4gIHZhbCBsb2dfdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRm9yX2ludGVnZXIgKEludGVnZXIgOiBJbnRfd2l0aF9yYW5kb20pID0gc3RydWN0XG4gIGxldCBnZW9tZXRyaWMgbG8gfnAgPVxuICAgIGlmIEZsb2F0LmVxdWFsIHAgMS5cbiAgICB0aGVuIHJldHVybiBsb1xuICAgIGVsc2UgaWYgRmxvYXQuZXF1YWwgcCAwLlxuICAgIHRoZW4gcmV0dXJuIEludGVnZXIubWF4X3ZhbHVlXG4gICAgZWxzZSBpZiBGbG9hdC4oIDwgKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS4gfHwgRmxvYXQuaXNfbmFuIHBcbiAgICB0aGVuXG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImdlb21ldHJpYyBkaXN0cmlidXRpb246IHAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDFcIiAocCA6IGZsb2F0KV1cbiAgICBlbHNlIChcbiAgICAgICgqIFdlIHN0YXJ0IHdpdGggYSB1bmlmb3JtIGRpc3RyaWJ1dGlvbi4gV2UgY29udmVydCB0byBleHBvbmVudGlhbCBkaXN0cmlidXRpb25cbiAgICAgICAgIHVzaW5nIFtsb2ddLiBXZSBjb252ZXJ0IHRvIGdlb21ldHJpYyB3aXRoIFtyb3VuZF9kb3duXS4gVGhlbiB3ZSBib3VuZHMgY2hlY2sgYW5kXG4gICAgICAgICByZXR1cm4uICopXG4gICAgICBsZXQgZGVub21pbmF0b3IgPSBGbG9hdC5sb2cxcCAoLS5wKSBpblxuICAgICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20udW5pdF9mbG9hdCByYW5kb20gaW5cbiAgICAgICAgbGV0IGV4cG9uZW50aWFsID0gRmxvYXQubG9nIHVuaWZvcm0gLy4gZGVub21pbmF0b3IgaW5cbiAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQucm91bmRfZG93biBleHBvbmVudGlhbCBpblxuICAgICAgICBtYXRjaCBJbnRlZ2VyLm9mX2Zsb2F0IGZsb2F0IHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+IEludGVnZXIubWF4X3ZhbHVlXG4gICAgICAgIHwgaW50IC0+XG4gICAgICAgICAgbGV0IGludCA9IEludGVnZXIuKCArICkgbG8gaW50IGluXG4gICAgICAgICAgaWYgSW50ZWdlci4oIDwgKSBpbnQgbG8gdGhlbiBJbnRlZ2VyLm1heF92YWx1ZSBlbHNlIGludCkpXG4gIDs7XG5cbiAgbGV0IHVuaWZvcm1faW5jbHVzaXZlIGxvIGhpID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gSW50ZWdlci51bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBsb2dfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLmxvZ191bmlmb3JtIHJhbmRvbSB+bG8gfmhpKVxuICA7O1xuXG4gIGxldCBub25fdW5pZm9ybSBmIGxvIGhpID1cbiAgICB3ZWlnaHRlZF91bmlvbiBbIDAuMDUsIHJldHVybiBsbzsgMC4wNSwgcmV0dXJuIGhpOyAwLjksIGYgbG8gaGkgXVxuICA7O1xuXG4gIGxldCBpbmNsdXNpdmUgPSBub25fdW5pZm9ybSB1bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgbG9nX2luY2x1c2l2ZSA9IG5vbl91bmlmb3JtIGxvZ191bmlmb3JtX2luY2x1c2l2ZVxuICBsZXQgdW5pZm9ybV9hbGwgPSB1bmlmb3JtX2luY2x1c2l2ZSBJbnRlZ2VyLm1pbl92YWx1ZSBJbnRlZ2VyLm1heF92YWx1ZVxuXG4gIGxldCBhbGwgPVxuICAgIFslbWFwXG4gICAgICBsZXQgbmVnYXRpdmUgPSBib29sXG4gICAgICBhbmQgbWFnbml0dWRlID0gbG9nX2luY2x1c2l2ZSBJbnRlZ2VyLnplcm8gSW50ZWdlci5tYXhfdmFsdWUgaW5cbiAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gSW50ZWdlci5iaXRfbm90IG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2ludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnRcbiAgZW5kKVxuXG5sZXQgaW50ID0gRm9yX2ludC5hbGxcbmxldCBpbnRfdW5pZm9ybSA9IEZvcl9pbnQudW5pZm9ybV9hbGxcbmxldCBpbnRfaW5jbHVzaXZlID0gRm9yX2ludC5pbmNsdXNpdmVcbmxldCBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmVcbmxldCBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfZ2VvbWV0cmljID0gRm9yX2ludC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQzMiA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDMyXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDMyXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50MzJcbiAgZW5kKVxuXG5sZXQgaW50MzIgPSBGb3JfaW50MzIuYWxsXG5sZXQgaW50MzJfdW5pZm9ybSA9IEZvcl9pbnQzMi51bmlmb3JtX2FsbFxubGV0IGludDMyX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5pbmNsdXNpdmVcbmxldCBpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50MzIubG9nX2luY2x1c2l2ZVxubGV0IGludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQzMl9nZW9tZXRyaWMgPSBGb3JfaW50MzIuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50NjMgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2M1xuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDYzXG4gIGVuZClcblxubGV0IGludDYzID0gRm9yX2ludDYzLmFsbFxubGV0IGludDYzX3VuaWZvcm0gPSBGb3JfaW50NjMudW5pZm9ybV9hbGxcbmxldCBpbnQ2M19pbmNsdXNpdmUgPSBGb3JfaW50NjMuaW5jbHVzaXZlXG5sZXQgaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfaW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfZ2VvbWV0cmljID0gRm9yX2ludDYzLmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDY0X2dlb21ldHJpYyA9IEZvcl9pbnQ2NC5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9uYXRpdmVpbnQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBOYXRpdmVpbnRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20ubmF0aXZlaW50XG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0ubmF0aXZlaW50XG4gIGVuZClcblxubGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQuYWxsXG5sZXQgbmF0aXZlaW50X3VuaWZvcm0gPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1fYWxsXG5sZXQgbmF0aXZlaW50X2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQuaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC51bmlmb3JtX2luY2x1c2l2ZVxubGV0IG5hdGl2ZWludF9sb2dfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfaW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2dlb21ldHJpYyA9IEZvcl9uYXRpdmVpbnQuZ2VvbWV0cmljXG5sZXQgZmxvYXRfemVyb19leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMC5cbmxldCBmbG9hdF96ZXJvX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSAwLlxuXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZSA9XG4gIEZsb2F0Lm9uZV91bHAgYERvd24gRmxvYXQubWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxuOztcblxubGV0IGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0Lm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IEZsb2F0Lm1heF9maW5pdGVfdmFsdWVcbmxldCBmbG9hdF9taW5fbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9pbmZfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfaW5mX21hbnRpc3NhID0gRmxvYXQuaWVlZV9tYW50aXNzYSBGbG9hdC5pbmZpbml0eVxubGV0IGZsb2F0X25hbl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQubmFuXG5sZXQgZmxvYXRfbWluX25hbl9tYW50aXNzYSA9IEludDYzLnN1Y2MgZmxvYXRfaW5mX21hbnRpc3NhXG5sZXQgZmxvYXRfbWF4X25hbl9tYW50aXNzYSA9IGZsb2F0X21heF9ub3JtYWxfbWFudGlzc2FcbmxldCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyA9IDUyXG5cbigqIFdlIHdlaWdodCBtYW50aXNzYXMgc28gdGhhdCBcImludGVnZXItbGlrZVwiIHZhbHVlcywgYW5kIHZhbHVlcyB3aXRoIG9ubHkgYSBmZXcgZGlnaXRzXG4gICBwYXN0IHRoZSBkZWNpbWFsLCBhcmUgcmVhc29uYWJseSBjb21tb24uICopXG5sZXQgZmxvYXRfbm9ybWFsX21hbnRpc3NhID1cbiAgbGV0JWJpbmQgbnVtX2JpdHMgPSBGb3JfaW50LnVuaWZvcm1faW5jbHVzaXZlIDAgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgaW5cbiAgbGV0JW1hcCBiaXRzID1cbiAgICBGb3JfaW50NjMuaW5jbHVzaXZlIEludDYzLnplcm8gKEludDYzLnByZWQgKEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzKSlcbiAgaW5cbiAgSW50NjMuc2hpZnRfbGVmdCBiaXRzIChJbnQuKCAtICkgZmxvYXRfbnVtX21hbnRpc3NhX2JpdHMgbnVtX2JpdHMpXG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCArICkgbG93ZXJfYm91bmQgb2Zmc2V0XG47O1xuXG5sZXQgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfaGlnaCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZCA9XG4gIGxldCVtYXAgb2Zmc2V0ID0gRm9yX2ludC5sb2dfaW5jbHVzaXZlIDAgKEludC4oIC0gKSB1cHBlcl9ib3VuZCBsb3dlcl9ib3VuZCkgaW5cbiAgSW50LiggLSApIHVwcGVyX2JvdW5kIG9mZnNldFxuOztcblxuKCogV2Ugd2VpZ2h0IGV4cG9uZW50cyBzdWNoIHRoYXQgdmFsdWVzIG5lYXIgMSBhcmUgbW9yZSBsaWtlbHkuICopXG5sZXQgZmxvYXRfZXhwb25lbnQgPVxuICBsZXQgbWlkcG9pbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IDEuIGluXG4gIHVuaW9uXG4gICAgWyBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgbWlkcG9pbnRcbiAgICA7IGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2xvdyBtaWRwb2ludCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50XG4gICAgXVxuOztcblxubGV0IGZsb2F0X3plcm8gPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfemVyb19leHBvbmVudFxuICAgIH5tYW50aXNzYTpmbG9hdF96ZXJvX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPVxuICAgIEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlIGZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EgZmxvYXRfbWF4X3N1Ym5vcm1hbF9tYW50aXNzYVxuICBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9ub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSBmbG9hdF9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBmbG9hdF9ub3JtYWxfbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfaW5maW5pdGUgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbCBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG5cbiAgICB+bmVnYXRpdmVcbiAgICB+ZXhwb25lbnQ6ZmxvYXRfaW5mX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X2luZl9tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25hbiA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IHJldHVybiBmbG9hdF9uYW5fZXhwb25lbnRcbiAgYW5kIG1hbnRpc3NhID0gRm9yX2ludDYzLmluY2x1c2l2ZSBmbG9hdF9taW5fbmFuX21hbnRpc3NhIGZsb2F0X21heF9uYW5fbWFudGlzc2EgaW5cbiAgRmxvYXQuY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gZmxvYXRfemVyb1xuICB8IFN1Ym5vcm1hbCAtPiBmbG9hdF9zdWJub3JtYWxcbiAgfCBOb3JtYWwgLT4gZmxvYXRfbm9ybWFsXG4gIHwgSW5maW5pdGUgLT4gZmxvYXRfaW5maW5pdGVcbiAgfCBOYW4gLT4gZmxvYXRfbmFuXG47O1xuXG5sZXQgZmxvYXRfd2VpZ2h0X29mX2NsYXNzIGMgPVxuICBtYXRjaCAoYyA6IEZsb2F0LkNsYXNzLnQpIHdpdGhcbiAgfCBaZXJvIC0+IDEuXG4gIHwgU3Vibm9ybWFsIC0+IDEwLlxuICB8IE5vcm1hbCAtPiAxMDAuXG4gIHwgSW5maW5pdGUgLT4gMS5cbiAgfCBOYW4gLT4gMS5cbjs7XG5cbmxldCBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIGZpbHRlciA9XG4gIExpc3QuZmlsdGVyX21hcCBGbG9hdC5DbGFzcy5hbGwgfmY6KGZ1biBjIC0+XG4gICAgaWYgZmlsdGVyIGMgdGhlbiBTb21lIChmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYywgZmxvYXRfb2ZfY2xhc3MgYykgZWxzZSBOb25lKVxuICB8PiB3ZWlnaHRlZF91bmlvblxuOztcblxubGV0IGZsb2F0X2Zpbml0ZSA9XG4gIGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1bmN0aW9uXG4gICAgfCBaZXJvIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IEluZmluaXRlIHwgTmFuIC0+IGZhbHNlKVxuOztcblxubGV0IGZsb2F0X3dpdGhvdXRfbmFuID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgfCBJbmZpbml0ZSAtPiB0cnVlXG4gICAgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXQgPSBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW4gXyAtPiB0cnVlKVxuXG5sZXQgZmxvYXRfZmluaXRlX25vbl96ZXJvID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFN1Ym5vcm1hbCB8IE5vcm1hbCAtPiB0cnVlXG4gICAgfCBaZXJvIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUgPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGVfbm9uX3plcm8gaW5cbiAgRmxvYXQuYWJzIHRcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfcG9zaXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X25lZ2F0aXZlX29yX3plcm8gPVxuICBsZXQlbWFwIHQgPSBmbG9hdF9maW5pdGUgaW5cbiAgfi0uKEZsb2F0LmFicyB0KVxuOztcblxubGV0IGZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0IG9wZW4gRmxvYXQuTyBpblxuICBpZiAobm90IChGbG9hdC5pc19maW5pdGUgbG93ZXJfYm91bmQpKSB8fCBub3QgKEZsb2F0LmlzX2Zpbml0ZSB1cHBlcl9ib3VuZClcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiBib3VuZHMgYXJlIG5vdCBmaW5pdGVcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGxldCBsb3dlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCBpblxuICBsZXQgdXBwZXJfaW5jbHVzaXZlID0gRmxvYXQub25lX3VscCBgRG93biB1cHBlcl9ib3VuZCBpblxuICBpZiBsb3dlcl9pbmNsdXNpdmUgPiB1cHBlcl9pbmNsdXNpdmVcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZsb2F0LnVuaWZvcm1fZXhjbHVzaXZlOiByZXF1ZXN0ZWQgcmFuZ2UgaXMgZW1wdHlcIlxuICAgICAgICAgIChsb3dlcl9ib3VuZCA6IGZsb2F0KVxuICAgICAgICAgICh1cHBlcl9ib3VuZCA6IGZsb2F0KV07XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86bG93ZXJfaW5jbHVzaXZlIH5oaTp1cHBlcl9pbmNsdXNpdmUpXG47O1xuXG5sZXQgZmxvYXRfaW5jbHVzaXZlIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgaWYgRmxvYXQuZXF1YWwgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgdGhlbiByZXR1cm4gbG93ZXJfYm91bmRcbiAgZWxzZSBpZiBGbG9hdC4oID0gKSAoRmxvYXQub25lX3VscCBgVXAgbG93ZXJfYm91bmQpIHVwcGVyX2JvdW5kXG4gIHRoZW4gdW5pb24gWyByZXR1cm4gbG93ZXJfYm91bmQ7IHJldHVybiB1cHBlcl9ib3VuZCBdXG4gIGVsc2VcbiAgICB3ZWlnaHRlZF91bmlvblxuICAgICAgWyAwLjA1LCByZXR1cm4gbG93ZXJfYm91bmRcbiAgICAgIDsgMC4wNSwgcmV0dXJuIHVwcGVyX2JvdW5kXG4gICAgICA7IDAuOSwgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmRcbiAgICAgIF1cbjs7XG5cbmxldCBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aCA9XG4gIGxpc3Rfd2l0aF9sZW5ndGggY2hhcl9nZW4gfmxlbmd0aCB8PiBtYXAgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdFxuOztcblxubGV0IHN0cmluZ19vZiBjaGFyX2dlbiA9XG4gIGJpbmQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgfmY6KGZ1biBsZW5ndGggLT5cbiAgICBzdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcl9nZW4gfmxlbmd0aClcbjs7XG5cbmxldCBzdHJpbmcgPSBzdHJpbmdfb2YgY2hhclxubGV0IHN0cmluZ19ub25fZW1wdHkgPSBzdHJpbmdfbm9uX2VtcHR5X29mIGNoYXJcbmxldCBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aCA9IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyIH5sZW5ndGhcblxubW9kdWxlIEVkaXRfc3RyaW5nID0gc3RydWN0XG4gIGxldCBlZGl0X2luc2VydCBzdHJpbmcgPVxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfZ2VvbWV0cmljIDEgfnA6MC41IGluXG4gICAgbGV0JWJpbmQgc3RyID0gc3RyaW5nX3dpdGhfbGVuZ3RoIH5sZW5ndGg6bGVuIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyBwb3M7IHN0cjsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9yZW1vdmUgc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyAocG9zICsgbGVuKSBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X3JlcGxhY2Ugc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBsZXQlYmluZCBzdHIgPSBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aDpsZW4gaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgc3RyOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIChwb3MgKyBsZW4pIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfZG91YmxlIHN0cmluZyA9XG4gICAgbGV0JWJpbmQgbGVuID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAxIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBsZXQlYmluZCBwb3MgPSBpbnRfdW5pZm9ybV9pbmNsdXNpdmUgMCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSBsZW4pIGluXG4gICAgWyBTdHJpbmcucHJlZml4IHN0cmluZyAocG9zICsgbGVuKTsgU3RyaW5nLmRyb3BfcHJlZml4IHN0cmluZyBwb3MgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9ub25lbXB0eSBzdHJpbmcgPVxuICAgIFsgZWRpdF9pbnNlcnQgc3RyaW5nOyBlZGl0X3JlbW92ZSBzdHJpbmc7IGVkaXRfcmVwbGFjZSBzdHJpbmc7IGVkaXRfZG91YmxlIHN0cmluZyBdXG4gICAgfD4gdW5pb25cbiAgOztcblxuICBsZXQgcmVjIGVkaXQgc3RyaW5nIG5fdGltZXMgPVxuICAgIGlmIG5fdGltZXMgPD0gMFxuICAgIHRoZW4gcmV0dXJuIHN0cmluZ1xuICAgIGVsc2UgKFxuICAgICAgbGV0JWJpbmQgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZyB0aGVuIGVkaXRfaW5zZXJ0IHN0cmluZyBlbHNlIGVkaXRfbm9uZW1wdHkgc3RyaW5nXG4gICAgICBpblxuICAgICAgZWRpdCBzdHJpbmcgKG5fdGltZXMgLSAxKSlcbiAgOztcbmVuZFxuXG5sZXQgc3RyaW5nX2xpa2Ugc3RyaW5nID1cbiAgbGV0JWJpbmQgbl90aW1lcyA9IGludF9nZW9tZXRyaWMgMCB+cDowLjUgaW5cbiAgRWRpdF9zdHJpbmcuZWRpdCBzdHJpbmcgbl90aW1lc1xuOztcblxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbigqKiBJbnRlZ2VyIHJlbWFpbmRlci4gIElmIFt5XSBpcyBub3QgemVybywgdGhlIHJlc3VsdFxuICAgb2YgW0ludDY0LnJlbSB4IHldIHNhdGlzZmllcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5OlxuICAgW3ggPSBJbnQ2NC5hZGQgKEludDY0Lm11bCAoSW50NjQuZGl2IHggeSkgeSkgKEludDY0LnJlbSB4IHkpXS5cbiAgIElmIFt5ID0gMF0sIFtJbnQ2NC5yZW0geCB5XSByYWlzZXMgW0RpdmlzaW9uX2J5X3plcm9dLiAqKVxuXG52YWwgdW5zaWduZWRfcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshcmVtfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4ICopXG5cbnZhbCBzdWNjIDogaW50NjQgLT4gaW50NjRcbigqKiBTdWNjZXNzb3IuICBbSW50NjQuc3VjYyB4XSBpcyBbSW50NjQuYWRkIHggSW50NjQub25lXS4gKilcblxudmFsIHByZWQgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFByZWRlY2Vzc29yLiAgW0ludDY0LnByZWQgeF0gaXMgW0ludDY0LnN1YiB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBhYnMgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFthYnMgeF0gaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIFt4XS4gT24gW21pbl9pbnRdIHRoaXNcbiAgIGlzIFttaW5faW50XSBpdHNlbGYgYW5kIHRodXMgcmVtYWlucyBuZWdhdGl2ZS4gKilcblxudmFsIG1heF9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBncmVhdGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAye142M30gLSAxLiAqKVxuXG52YWwgbWluX2ludCA6IGludDY0XG4oKiogVGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIC0ye142M30uICopXG5cbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgYW5kLiAqKVxuXG5leHRlcm5hbCBsb2dvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfb3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBvci4gKilcblxuZXh0ZXJuYWwgbG9neG9yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF94b3JcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBleGNsdXNpdmUgb3IuICopXG5cbnZhbCBsb2dub3QgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIEJpdHdpc2UgbG9naWNhbCBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzbFwiXG4oKiogW0ludDY0LnNoaWZ0X2xlZnQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSBsZWZ0IGJ5IFt5XSBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhbiBhcml0aG1ldGljIHNoaWZ0OiB0aGUgc2lnbiBiaXQgb2YgW3hdIGlzIHJlcGxpY2F0ZWRcbiAgIGFuZCBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYSBsb2dpY2FsIHNoaWZ0OiB6ZXJvZXMgYXJlIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHNcbiAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpZ24gb2YgW3hdLlxuICAgVGhlIHJlc3VsdCBpcyB1bnNwZWNpZmllZCBpZiBbeSA8IDBdIG9yIFt5ID49IDY0XS4gKilcblxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBpbnRlZ2VyICh0eXBlIFtpbnRdKSB0byBhIDY0LWJpdCBpbnRlZ2VyXG4gICAgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYW5cbiAgIGludGVnZXIgKHR5cGUgW2ludF0pLiAgT24gNjQtYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteNjN9LCBpLmUuIHRoZSBoaWdoLW9yZGVyIGJpdCBpcyBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICBPbiAzMi1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMX0sIGkuZS4gdGhlIHRvcCAzMyBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICopXG5cbnZhbCB1bnNpZ25lZF90b19pbnQgOiBpbnQ2NCAtPiBpbnQgb3B0aW9uXG4oKiogU2FtZSBhcyB7IXRvX2ludH0sIGJ1dCBpbnRlcnByZXRzIHRoZSBhcmd1bWVudCBhcyBhbiB7ZSB1bnNpZ25lZH0gaW50ZWdlci5cbiAgICBSZXR1cm5zIFtOb25lXSBpZiB0aGUgdW5zaWduZWQgdmFsdWUgb2YgdGhlIGFyZ3VtZW50IGNhbm5vdCBmaXQgaW50byBhblxuICAgIFtpbnRdLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFRoZSBlcXVhbCBmdW5jdGlvbiBmb3IgaW50NjRzLlxuICAgIEBzaW5jZSA0LjAzICopXG5cbnZhbCBtaW46IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xM1xuICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjEgKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIDY0LWJpdCBpbnRzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYXRvbWljIDogXyB0XG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2EgU2VxdWVuY2UudCkgLT4gJ2EgdFxuICB2YWwgc2hyaW5rIDogJ2EgdCAtPiAnYSAtPiAnYSBTZXF1ZW5jZS50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGxldCBhdG9taWMgXyA9IFNlcXVlbmNlLmVtcHR5XG4gIGxldCBjcmVhdGUgPSBGbi5pZFxuICBsZXQgc2hyaW5rID0gRm4uaWRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IG1hcCB0IH5mIH5mX2ludmVyc2UgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm1hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG5sZXQgZmlsdGVyIHQgfmYgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlciB+ZiAoc2hyaW5rIHQgeCkpXG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgfmZfaW52ZXJzZSA9XG4gIGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyX21hcCB+ZiAoc2hyaW5rIHQgKGZfaW52ZXJzZSB4KSkpXG47O1xuXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLm9mX2xhenkgKGxhenkgKHNocmluayAoZm9yY2UgbGF6eV90KSB4KSkpXG5cbmxldCBmaXhlZF9wb2ludCBvZl9zaHJpbmtlciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2Zfc2hyaW5rZXIgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICBbIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6KGZ1biBmc3QgLT4gZnN0LCBzbmQpXG4gICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6KGZ1biBzbmQgLT4gZnN0LCBzbmQpXG4gICAgICBdKVxuOztcblxubGV0IHVuaXQgPSBhdG9taWNcbmxldCBib29sID0gYXRvbWljXG5sZXQgY2hhciA9IGF0b21pY1xubGV0IGludCA9IGF0b21pY1xubGV0IGludDMyID0gYXRvbWljXG5sZXQgaW50NjMgPSBhdG9taWNcbmxldCBpbnQ2NCA9IGF0b21pY1xubGV0IG5hdGl2ZWludCA9IGF0b21pY1xubGV0IGZsb2F0ID0gYXRvbWljXG5cbmxldCBiaWdhcnJheTEgc3JjID1cbiAgbGV0IGRpbSA9IEJpZ2FycmF5LkFycmF5MS5kaW0gc3JjIGluXG4gIG1hdGNoIGRpbSB3aXRoXG4gIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICB8IF8gLT5cbiAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5MS5raW5kIHNyYyBpblxuICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTEubGF5b3V0IHNyYyBpblxuICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgU2VxdWVuY2UuaW5pdCBkaW0gfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgKGRpbSAtIDEpIH5mOihmdW4gaSAtPlxuICAgICAgICBzcmMue2lmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxfSkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0MzJfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxubGV0IGZsb2F0NjRfdmVjID0gY3JlYXRlIGJpZ2FycmF5MVxuXG5sZXQgYmlnYXJyYXkyID1cbiAgbGV0IG1vZHVsZSBEaW1zID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZGltMSA6IGludFxuICAgICAgOyBkaW0yIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSBhID0gQmlnYXJyYXkuQXJyYXkyLnsgZGltMSA9IGRpbTEgYTsgZGltMiA9IGRpbTIgYSB9XG4gIGVuZFxuICBpblxuICBsZXQgc2hyaW5rIGZpZWxkIHNyYyA9XG4gICAgbGV0IGRpbXMgPSBEaW1zLmNyZWF0ZSBzcmMgaW5cbiAgICBtYXRjaCBGaWVsZC5nZXQgZmllbGQgZGltcyB3aXRoXG4gICAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBfIC0+XG4gICAgICBsZXQga2luZCA9IEJpZ2FycmF5LkFycmF5Mi5raW5kIHNyYyBpblxuICAgICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgc3JjIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgZGltcyB+ZjpJbnQucHJlZCBpblxuICAgICAgU2VxdWVuY2UuaW5pdCAoRmllbGQuZ2V0IGZpZWxkIGRpbXMpIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgICBsZXQgdG9fc2tpcCA9IHRvX3NraXAgKyBvZmZzZXQgaW5cbiAgICAgICAgbGV0IHNraXAgaSA9IGlmIGkgPCB0b19za2lwIHRoZW4gaSBlbHNlIGkgKyAxIGluXG4gICAgICAgIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gZGltMSBkaW0yIC0+XG4gICAgICAgICAgbGV0ICh7IGRpbTE7IGRpbTIgfSA6IERpbXMudCkgPSBGaWVsZC5tYXAgZmllbGQgeyBkaW0xOyBkaW0yIH0gfmY6c2tpcCBpblxuICAgICAgICAgIHNyYy57ZGltMSwgZGltMn0pKVxuICBpblxuICBmdW4gc3JjIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMSBzcmM7IHNocmluayBEaW1zLkZpZWxkcy5kaW0yIHNyYyBdXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5sZXQgZmxvYXQ2NF9tYXQgPSBjcmVhdGUgYmlnYXJyYXkyXG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIFNlcXVlbmNlLmFwcGVuZFxuICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIE5vbmUpXG4gICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6T3B0aW9uLnJldHVybiAoc2hyaW5rIHZhbHVlX3QgdmFsdWUpKSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBsaXN0X3QgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIHRhaWxcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGVsdF90IGhlYWQpIH5mOihmdW4gaGVhZCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBsaXN0X3QgdGFpbCkgfmY6KGZ1biB0YWlsIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICBdKSlcbjs7XG5cbmxldCBzdHJpbmcgPSBtYXAgKGxpc3QgY2hhcikgfmY6U3RyaW5nLm9mX2NoYXJfbGlzdCB+Zl9pbnZlcnNlOlN0cmluZy50b19saXN0XG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZyB+Zl9pbnZlcnNlOkJ5dGVzLnRvX3N0cmluZ1xubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdCB+Zl9pbnZlcnNlOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGUgfmZfaW52ZXJzZTpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWwgfmZfaW52ZXJzZTpMYXp5LmZvcmNlXG5cbmxldCBzZXhwID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzaHJpbmtlciAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgU2V4cC5BdG9tIF8gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAgICAgbGV0IHNocmlua19saXN0ID1cbiAgICAgICAgICBzaHJpbmsgKGxpc3Qgc2hyaW5rZXIpIGwgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gbCAtPiBTZXhwLkxpc3QgbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNocmlua190cmVlID0gU2VxdWVuY2Uub2ZfbGlzdCBsIGluXG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rX2xpc3Q7IHNocmlua190cmVlIF0pKVxuOztcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjpFaXRoZXIuZmlyc3RcbiAgICB8IFNlY29uZCBzbmQgLT4gU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjpFaXRoZXIuc2Vjb25kKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwXG4gICAgKGVpdGhlciBva190IGVycl90KVxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbiAgICB+Zl9pbnZlcnNlOihmdW5jdGlvblxuICAgICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgYWxpc3QgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9rZXlzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBhbGlzdCkgfmY6KGZ1biAoaywgXykgLT5cbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrKVxuICAgIGluXG4gICAgbGV0IHNocmlua19rZXlzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBrZXkgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGtleV90IGtleSkgfmY6KGZ1biBzbWFsbGVyX2tleSAtPlxuICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB+Y29tcGFyYXRvciB0cmVlIH5rZXk6c21hbGxlcl9rZXkgfmRhdGFcbiAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgfCBgT2sgdHJlZSAtPiBTb21lIHRyZWVcbiAgICAgICAgICAgICB8IGBEdXBsaWNhdGUgLT4gTm9uZSkpKVxuICAgIGluXG4gICAgbGV0IHNocmlua19kYXRhID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgIFNlcXVlbmNlLm1hcCAoc2hyaW5rIGRhdGFfdCBkYXRhKSB+ZjooZnVuIHNtYWxsZXJfZGF0YSAtPlxuICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuc2V0IH5jb21wYXJhdG9yIHRyZWUgfmtleSB+ZGF0YTpzbWFsbGVyX2RhdGEpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9rZXlzOyBzaHJpbmtfa2V5czsgc2hyaW5rX2RhdGEgXSlcbjs7XG5cbmxldCBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBsaXN0ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0IHRyZWUgaW5cbiAgICBsZXQgZHJvcF9lbHRzID1cbiAgICAgIFNlcXVlbmNlLm1hcCAoU2VxdWVuY2Uub2ZfbGlzdCBsaXN0KSB+ZjooZnVuIGVsdCAtPlxuICAgICAgICBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdClcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBlbHRfdCBlbHQpIH5mOihmdW4gc21hbGxlcl9lbHQgLT5cbiAgICAgICAgICAgICBtYXRjaCBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm1lbSB+Y29tcGFyYXRvciB0cmVlIHNtYWxsZXJfZWx0IHdpdGhcbiAgICAgICAgICAgICB8IHRydWUgLT4gTm9uZVxuICAgICAgICAgICAgIHwgZmFsc2UgLT4gU29tZSAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgdHJlZSB+Y29tcGFyYXRvciBzbWFsbGVyX2VsdCkpKSlcbiAgICBpblxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgZHJvcF9lbHRzOyBzaHJpbmtfZWx0cyBdKVxuOztcblxubGV0IG1hcF90IGtleV90IGRhdGFfdCA9XG4gIGNyZWF0ZSAoZnVuIG1hcF90IC0+XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBtYXBfdCBpblxuICAgIGxldCB0ID1cbiAgICAgIG1hcFxuICAgICAgICAobWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QpXG4gICAgICAgIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IG1hcF90KVxuOztcblxubGV0IHNldF90IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gc2V0X3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IFNldC5jb21wYXJhdG9yIHNldF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF90KVxuICAgICAgICB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcilcbiAgICAgICAgfmZfaW52ZXJzZTpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4gICAgaW5cbiAgICBzaHJpbmsgdCBzZXRfdClcbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFRlc3RfaW50ZlxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIG1vZHVsZSBTZWVkID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9uZGV0ZXJtaW5pc3RpY1xuICAgICAgfCBEZXRlcm1pbmlzdGljIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIG1vZHVsZSBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgc2VxdWVuY2UgPVxuICAgICAgbGV0IHByZWZpeCwgc3VmZml4ID0gU2VxdWVuY2Uuc3BsaXRfbiBzZXF1ZW5jZSAxMDAgaW5cbiAgICAgIGxldCBwcmVmaXggPSBMaXN0Lm1hcCBwcmVmaXggfmY6c2V4cF9vZl9lbHQgaW5cbiAgICAgIGxldCBzdWZmaXggPVxuICAgICAgICBtYXRjaCBTZXF1ZW5jZS5pc19lbXB0eSBzdWZmaXggd2l0aFxuICAgICAgICB8IHRydWUgLT4gW11cbiAgICAgICAgfCBmYWxzZSAtPiBbIFslbWVzc2FnZSBcIi4uLlwiXSBdXG4gICAgICBpblxuICAgICAgU2V4cC5MaXN0IChwcmVmaXggQCBzdWZmaXgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHNlZWQgOiBTZWVkLnRcbiAgICA7IHRlc3RfY291bnQgOiBpbnRcbiAgICA7IHNocmlua19jb3VudCA6IGludFxuICAgIDsgc2l6ZXMgOiBpbnQgUG90ZW50aWFsbHlfaW5maW5pdGVfc2VxdWVuY2UudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuZW5kXG5cbmxldCBkZWZhdWx0X2NvbmZpZyA6IENvbmZpZy50ID1cbiAgeyBzZWVkID0gRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuICA7IHRlc3RfY291bnQgPVxuICAgICAgKCogW1NwbGl0dGFibGVfcmFuZG9tXSBpcyBiYXNlZCBvbiA2NC1iaXQgYXJpdGhtZXRpYywgYW5kIHNvIHRlc3RzIHJ1biBtdWNoIHNsb3dlclxuICAgICAgICAgb24gMzItYml0IHRhcmdldHMuIFdlIHJ1biBhbiBvcmRlciBvZiBtYWduaXR1ZGUgZmV3ZXIgdHJpYWxzIHNvIGFzIG5vdCB0b1xuICAgICAgICAgY29tcGxldGVseSBib2cgZG93biBjb250aW51b3VzIGludGVncmF0aW9uIHN5c3RlbXMuICopXG4gICAgICAobWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICAgfCBXMzIgLT4gMV8wMDApXG4gIDsgc2hyaW5rX2NvdW50ID0gMTBfMDAwXG4gIDsgc2l6ZXMgPSBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIH5zdGFydDpgaW5jbHVzaXZlIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gIH1cbjs7XG5cbmxldCBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbmxldCBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnID1cbiAgbWF0Y2ggQ29uZmlnLnNlZWQgY29uZmlnIHdpdGhcbiAgfCBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2UgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICB8IERldGVybWluaXN0aWMgc3RyaW5nIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoU3RyaW5nLmhhc2ggc3RyaW5nKVxuOztcblxubGV0IG9uZV9zaXplX3Blcl90ZXN0IH4oY29uZmlnIDogQ29uZmlnLnQpID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0Oihjb25maWcuc2l6ZXMsIDApIH5mOihmdW4gKHNpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMpIC0+XG4gICAgbWF0Y2ggbnVtYmVyX29mX3NpemVfdmFsdWVzID49IGNvbmZpZy50ZXN0X2NvdW50IHdpdGhcbiAgICB8IHRydWUgLT4gTm9uZVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IHNpemVzIHdpdGhcbiAgICAgICB8IFNvbWUgKHNpemUsIHJlbWFpbmluZ19zaXplcykgLT5cbiAgICAgICAgIFNvbWUgKHNpemUsIChyZW1haW5pbmdfc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcyArIDEpKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogaW5zdWZmaWNpZW50IHNpemUgdmFsdWVzIGZvciB0ZXN0IGNvdW50XCJcbiAgICAgICAgICAgICAgIH50ZXN0X2NvdW50Oihjb25maWcudGVzdF9jb3VudCA6IGludClcbiAgICAgICAgICAgICAgIChudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgOiBpbnQpXSkpXG47O1xuXG5sZXQgc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yID1cbiAgbGV0IHJlYyBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3IgPVxuICAgIG1hdGNoIHNocmlua19jb3VudCB3aXRoXG4gICAgfCAwIC0+IGlucHV0LCBlcnJvclxuICAgIHwgXyAtPlxuICAgICAgbGV0IHNocmlua19jb3VudCA9IHNocmlua19jb3VudCAtIDEgaW5cbiAgICAgIChtYXRjaCBTZXF1ZW5jZS5uZXh0IGFsdGVybmF0ZXMgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBpbnB1dCwgZXJyb3JcbiAgICAgICB8IFNvbWUgKGFsdGVybmF0ZSwgYWx0ZXJuYXRlcykgLT5cbiAgICAgICAgIChtYXRjaCBmIGFsdGVybmF0ZSB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3JcbiAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBhbHRlcm5hdGUgaW5cbiAgICAgICAgICAgIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBhbHRlcm5hdGUgZXJyb3IpKVxuICBpblxuICBsZXQgc2hyaW5rX2NvdW50ID0gQ29uZmlnLnNocmlua19jb3VudCBjb25maWcgaW5cbiAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgaW5wdXQgaW5cbiAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG47O1xuXG5sZXQgaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciA9XG4gIGxldCByYW5kb20gPSBpbml0aWFsX3JhbmRvbV9zdGF0ZSB+Y29uZmlnIGluXG4gIFNlcXVlbmNlLmFwcGVuZFxuICAgIChTZXF1ZW5jZS5vZl9saXN0IGV4YW1wbGVzKVxuICAgIChvbmVfc2l6ZV9wZXJfdGVzdCB+Y29uZmlnXG4gICAgIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIHNpemUgLT4gR2VuZXJhdG9yLmdlbmVyYXRlIGdlbmVyYXRvciB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbmxldCB3aXRoX3NhbXBsZSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIGdlbmVyYXRvciA9XG4gIGxldCBzZXF1ZW5jZSA9IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgaW5cbiAgZiBzZXF1ZW5jZVxuOztcblxubGV0IHJlc3VsdCAodHlwZSBhKSB+ZiA/KGNvbmZpZyA9IGRlZmF1bHRfY29uZmlnKSA/KGV4YW1wbGVzID0gW10pIG0gPVxuICBsZXQgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID0gbSBpblxuICB3aXRoX3NhbXBsZSBNLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb25maWcgfmV4YW1wbGVzIH5mOihmdW4gc2VxdWVuY2UgLT5cbiAgICBtYXRjaFxuICAgICAgU2VxdWVuY2UuZm9sZF9yZXN1bHQgc2VxdWVuY2UgfmluaXQ6KCkgfmY6KGZ1biAoKSBpbnB1dCAtPlxuICAgICAgICBtYXRjaCBmIGlucHV0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChpbnB1dCwgZXJyb3IpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgICAgbGV0IHNocmlua2VyID0gTS5xdWlja2NoZWNrX3Nocmlua2VyIGluXG4gICAgICBsZXQgaW5wdXQsIGVycm9yID0gc2hyaW5rX2Vycm9yIH5zaHJpbmtlciB+Y29uZmlnIH5mIGlucHV0IGVycm9yIGluXG4gICAgICBFcnJvciAoaW5wdXQsIGVycm9yKSlcbjs7XG5cbmxldCBydW4gKHR5cGUgYSkgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIG1hdGNoIHJlc3VsdCB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0pIHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiB0ZXN0IGZhaWxlZFwiIChpbnB1dCA6IE0udCkgKGVycm9yIDogRXJyb3IudCldXG47O1xuXG5sZXQgd2l0aF9zYW1wbGVfZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciA9XG4gIGxldCBmIHggPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGYgeCkgaW5cbiAgd2l0aF9zYW1wbGUgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcblxubGV0IHJ1bl9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aCB+YmFja3RyYWNlOihCYWNrdHJhY2UuRXhuLmFtX3JlY29yZGluZyAoKSkgKGZ1biAoKSAtPiBmIHgpXG4gIGluXG4gIHJ1biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSB8PiBPcl9lcnJvci5va19leG5cbjs7XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIE9ic2VydmVyMFxuXG5sZXQgdW5tYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSB0IChmIHgpIH5zaXplIH5oYXNoKVxubGV0IG9mX2hhc2hfZm9sZCBmID0gY3JlYXRlIChmdW4geCB+c2l6ZTpfIH5oYXNoIC0+IGYgaGFzaCB4KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmb3JjZSBsYXp5X3QpIHggfnNpemUgfmhhc2gpXG5cbmxldCBmaXhlZF9wb2ludCB3cmFwID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5ICh3cmFwIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgdW5pdCA9IG9wYXF1ZVxubGV0IGJvb2wgPSBvZl9oYXNoX2ZvbGQgQm9vbC5oYXNoX2ZvbGRfdFxubGV0IGNoYXIgPSBvZl9oYXNoX2ZvbGQgQ2hhci5oYXNoX2ZvbGRfdFxubGV0IGludCA9IG9mX2hhc2hfZm9sZCBJbnQuaGFzaF9mb2xkX3RcbmxldCBpbnQzMiA9IG9mX2hhc2hfZm9sZCBJbnQzMi5oYXNoX2ZvbGRfdFxubGV0IGludDYzID0gb2ZfaGFzaF9mb2xkIEludDYzLmhhc2hfZm9sZF90XG5sZXQgaW50NjQgPSBvZl9oYXNoX2ZvbGQgSW50NjQuaGFzaF9mb2xkX3RcbmxldCBuYXRpdmVpbnQgPSBvZl9oYXNoX2ZvbGQgTmF0aXZlaW50Lmhhc2hfZm9sZF90XG5sZXQgZmxvYXQgPSBvZl9oYXNoX2ZvbGQgRmxvYXQuaGFzaF9mb2xkX3RcbmxldCBzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgU3RyaW5nLmhhc2hfZm9sZF90XG5sZXQgc2V4cCA9IG9mX2hhc2hfZm9sZCBTZXhwLmhhc2hfZm9sZF90XG5sZXQgYmlnc3RyaW5nID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2NoYXIpXG5sZXQgZmxvYXQzMl92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF92ZWMgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQzMl9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgZmxvYXQ2NF9tYXQgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmhhc2hfZm9sZCBoYXNoX2ZvbGRfZmxvYXQpXG5sZXQgYnl0ZXMgPSB1bm1hcCBzdHJpbmcgfmY6Qnl0ZXMudG9fc3RyaW5nXG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgfnNpemUgfmhhc2ggLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSlcbiAgICB8IFNlY29uZCBzbmQgLT4gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAyKSlcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIHVubWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBPayBvayAtPiBGaXJzdCBva1xuICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgZnN0X3QgZnN0IH5zaXplIH5oYXNoIGluXG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaCBpblxuICAgIGhhc2gpXG47O1xuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9wYXF1ZSB2YWx1ZV90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRmlyc3QgKClcbiAgICB8IFNvbWUgdmFsdWUgLT4gU2Vjb25kIHZhbHVlKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBsaXN0IH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgIEdlbmVyYXRvci5zaXplcyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoICgpXG4gICAgICB8PiBHZW5lcmF0b3IuZ2VuZXJhdGUgfnNpemUgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkMl9leG4gbGlzdCBzaXplcyB+aW5pdDooaGFzaF9mb2xkX2ludCBoYXNoIDApIH5mOihmdW4gaGFzaCBlbHQgc2l6ZSAtPlxuICAgICAgb2JzZXJ2ZSBlbHRfdCBlbHQgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKSkpXG47O1xuXG5sZXQgYXJyYXkgdCA9IHVubWFwIChsaXN0IHQpIH5mOkFycmF5LnRvX2xpc3RcbmxldCByZWYgdCA9IHVubWFwIHQgfmY6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSB1bm1hcCB0IH5mOkxhenkuZm9yY2VcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biBmIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKSBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICAoKiBFbXBpcmljYWxseSwgZG91YmxpbmcgdGhlIHNpemUgd2hlbiBnZW5lcmF0aW5nIHRoZSBsaXN0IG9mIGlucHV0cyBnaXZlcyB1cyBtdWNoXG4gICAgICAgICBiZXR0ZXIgY292ZXJhZ2Ugb2YgdGhlIHNwYWNlIG9mIGZ1bmN0aW9ucy4gKilcbiAgICAgIEdlbmVyYXRvci5nZW5lcmF0ZSAoR2VuZXJhdG9yLnNpemVzICgpKSB+c2l6ZTooc2l6ZSAqIDIpIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZCBzaXplcyB+aW5pdDpoYXNoIH5mOihmdW4gaGFzaCBzaXplIC0+XG4gICAgICBsZXQgeCA9IEdlbmVyYXRvci5nZW5lcmF0ZSBkb20gfnNpemUgfnJhbmRvbSBpblxuICAgICAgb2JzZXJ2ZSBybmcgKGYgeCkgfnNpemUgfmhhc2gpKVxuOztcblxubGV0IG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobGlzdCAoYm90aCBrZXlfb2JzIGRhdGFfb2JzKSkgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdFxuOztcblxubGV0IHNldF90cmVlIGVsdF9vYnMgPSB1bm1hcCAobGlzdCBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3RcblxubGV0IG1hcF90IGtleV9vYnMgZGF0YV9vYnMgPVxuICB1bm1hcCAobWFwX3RyZWUga2V5X29icyBkYXRhX29icykgfmY6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuOztcblxubGV0IHNldF90IGVsdF9vYnMgPSB1bm1hcCAoc2V0X3RyZWUgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuIiwibW9kdWxlIEdlbmVyYXRvciA9IEdlbmVyYXRvclxubW9kdWxlIE9ic2VydmVyID0gT2JzZXJ2ZXJcbm1vZHVsZSBTaHJpbmtlciA9IFNocmlua2VyXG5tb2R1bGUgVGVzdCA9IFRlc3Rcbm1vZHVsZSBFeHBvcnQgPSBFeHBvcnRcbmluY2x1ZGUgRXhwb3J0XG5cbigqKi8qKilcblxuKCpfIFRoaXMgbW9kdWxlIGlzIGV4cG9zZWQgb25seSB0byBtYWtlIG9jYW1sZG9jIG91dHB1dCBtb3JlIHJlYWRhYmxlLiAqKVxubW9kdWxlIFdpdGhfYmFzaWNfdHlwZXMgPSBXaXRoX2Jhc2ljX3R5cGVzXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBCaWdhcnJheV9oZWxwZXJzID0gQmlnYXJyYXlfaGVscGVyc1xuZW5kXG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFVpX2VmZmVjdF9pbnRmXG5cbnR5cGUgJ2EgdCA9IC4uXG50eXBlICdhIHQgKz0gSWdub3JlIDogdW5pdCB0IHwgTWFueSA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuXG4oKiBXZSB1c2UgdGhpcyB0YWJsZSBmb3IgZGlzcGF0Y2hpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgaW4gYW4gZWZmaWNpZW50IHdheS4gICopXG50eXBlIGhpZGRlbiA9IFQgOiAoJ2EgdCAqICgnYSAtPiB1bml0KSkgLT4gaGlkZGVuXG5cbmxldCBoYW5kbGVycyA6IChoaWRkZW4gLT4gdW5pdCkgSGFzaHRibC5NKEludCkudCA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgSW50KSB+c2l6ZTo4XG5cbm1vZHVsZSBEZWZpbmUgKEhhbmRsZXIgOiBIYW5kbGVyKSA6XG4gIFMgd2l0aCB0eXBlIGFjdGlvbiA6PSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogSGFuZGxlci5BY3Rpb24udCAtPiB1bml0IHRcblxuICBsZXQga2V5ID0gU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ11cblxuICBsZXQgKCkgPVxuICAgIEhhc2h0YmwuYWRkX2V4biBoYW5kbGVycyB+a2V5IH5kYXRhOihmdW4gaW5wIC0+XG4gICAgICBtYXRjaCBpbnAgd2l0aFxuICAgICAgfCBUIChDIHZhbHVlLCBjYWxsYmFjaykgLT5cbiAgICAgICAgSGFuZGxlci5oYW5kbGUgdmFsdWU7XG4gICAgICAgIGNhbGxiYWNrICgpXG4gICAgICB8IF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJVbnJlY29nbml6ZWQgdmFyaWFudFwiXSlcbiAgOztcblxuICBsZXQgaW5qZWN0IHYgPSBDIHZcbmVuZFxuXG5tb2R1bGUgRGVmaW5lMSAoSGFuZGxlciA6IEhhbmRsZXIxKSA6XG4gIFMxIHdpdGggdHlwZSAnYSBhY3Rpb24gOj0gJ2EgSGFuZGxlci5BY3Rpb24udCBhbmQgdHlwZSAnYSB0IDo9ICdhIHQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgKz0gQyA6ICdhIEhhbmRsZXIuQWN0aW9uLnQgLT4gJ2EgdFxuXG4gIGxldCBrZXkgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCB0KSlcblxubGV0IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYikpID1cbiAgSGFzaHRibC5maW5kX2V4biBoYW5kbGVycyAoZ2V0X2tleSB0KSAoVCAodCwgY2IpKVxuOztcblxubW9kdWxlIFByaW50X3MgPSBEZWZpbmUgKHN0cnVjdFxuICAgIG1vZHVsZSBBY3Rpb24gPSBTZXhwXG5cbiAgICBsZXQgaGFuZGxlIHMgPSBTdGRpby5wcmludF9zIHNcbiAgZW5kKVxuXG5sZXQgcHJpbnRfcyA9IFByaW50X3MuaW5qZWN0XG5cbigqIEVmZmVjdGZ1bCB0aGluZ3MgKilcbnR5cGUgJ2EgdCArPVxuICB8IFJldHVybiA6ICdhIC0+ICdhIHRcbiAgfCBMYXp5IDogJ2EgdCBMYXp5LnQgLT4gJ2EgdFxuICB8IEJpbmQgOlxuICAgICAgeyB0IDogJ2EgdFxuICAgICAgOyBmIDogJ2EgLT4gJ2IgdFxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE1hcCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYlxuICAgICAgfVxuICAgICAgLT4gJ2IgdFxuICB8IE5ldmVyIDogJ2IgdFxuICB8IEZ1biA6IChjYWxsYmFjazooJ2EgLT4gdW5pdCkgLT4gdW5pdCkgLT4gJ2EgdFxuXG5sZXQgcmV0dXJuIGEgPSBSZXR1cm4gYVxubGV0IGJpbmQgKHR5cGUgYSkgKHQgOiBhIHQpIH5mID0gQmluZCB7IHQ7IGYgfVxubGV0IG1hcCAodHlwZSBhIGIpICh0IDogYSB0KSB+ZiA6IGIgdCA9IE1hcCB7IHQ7IGYgfVxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBvZl9mdW4gfmYgPSBGdW4gZlxubGV0IGxhenlfIGEgPSBMYXp5IGFcblxuaW5jbHVkZSBCYXNlLk1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IHJlYyBldmFsIDogdHlwZSBhLiBhIHQgLT4gY2FsbGJhY2s6KGEgLT4gdW5pdCkgLT4gdW5pdCA9XG4gIGZ1biB0IH5jYWxsYmFjayAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBGdW4gZiAtPiBmIH5jYWxsYmFja1xuICB8IElnbm9yZSAtPiBjYWxsYmFjayAoKVxuICB8IFJldHVybiBhIC0+IGNhbGxiYWNrIGFcbiAgfCBMYXp5IChsYXp5IHQpIC0+IGV2YWwgdCB+Y2FsbGJhY2tcbiAgfCBNYW55IGwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZXZhbCB+Y2FsbGJhY2s6aWdub3JlKTtcbiAgICBjYWxsYmFjayAoKVxuICB8IEJpbmQgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gZXZhbCAoZiBhKSB+Y2FsbGJhY2spXG4gIHwgTWFwIHsgdDsgZiB9IC0+IGV2YWwgdCB+Y2FsbGJhY2s6KGZ1biBhIC0+IGNhbGxiYWNrIChmIGEpKVxuICB8IE5ldmVyIC0+ICgpXG4gIHwgdCAtPiBoYW5kbGVfcmVnaXN0ZXJlZF9ldmVudCAoVCAodCwgY2FsbGJhY2spKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlID0gZXZhbCB+Y2FsbGJhY2s6aWdub3JlXG5cbiAgdHlwZSBoaWRlID0gaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRlXG5cbiAgbGV0IGhhbmRsZXJzID0gaGFuZGxlcnNcbiAgbGV0IG9mX2Z1biA9IG9mX2Z1blxuZW5kXG5cbm1vZHVsZSBBZHZhbmNlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3luY19mdW5fYXJnID0gc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyKSAtPiAnciB0XG4gICAgZW5kXG5cbiAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IG9uX3Jlc3BvbnNlIChmIGEpXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW5jX2Z1biA9IERlZmluZTEgKFN5bmNfZnVuX2FyZylcblxuICBsZXQgb2Zfc3luY19mdW4gZiBhID0gU3luY19mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICBtb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBDYWxsYmFjayA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9XG4gICAgICAgIHsgcmVxdWVzdCA6ICdhXG4gICAgICAgIDsgb25fcmVzcG9uc2UgOiAnYiAtPiB1bml0IHRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2UgPSB7IHJlcXVlc3Q7IG9uX3Jlc3BvbnNlIH1cbiAgICAgIGxldCByZXF1ZXN0IHsgcmVxdWVzdDsgXyB9ID0gcmVxdWVzdFxuICAgICAgbGV0IHJlc3BvbmRfdG8geyBvbl9yZXNwb25zZTsgXyB9IHJlc3BvbnNlID0gb25fcmVzcG9uc2UgcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIGxldCBtYWtlIDogcmVxdWVzdDonYSAtPiBldmFsdWF0b3I6KCgnYSwgJ2IpIENhbGxiYWNrLnQgLT4gdW5pdCB0KSAtPiAnYiB0ID1cbiAgICAgIGZ1biB+cmVxdWVzdCB+ZXZhbHVhdG9yIC0+XG4gICAgICBFeHBlcnQub2ZfZnVuIH5mOihmdW4gfmNhbGxiYWNrIC0+XG4gICAgICAgIGxldCBjYWxsYmFjayA9XG4gICAgICAgICAgQ2FsbGJhY2subWFrZSB+cmVxdWVzdCB+b25fcmVzcG9uc2U6KGZ1biByZXNwb25zZSAtPlxuICAgICAgICAgICAgY2FsbGJhY2sgcmVzcG9uc2U7XG4gICAgICAgICAgICBJZ25vcmUpXG4gICAgICAgIGluXG4gICAgICAgIEV4cGVydC5oYW5kbGUgKGV2YWx1YXRvciBjYWxsYmFjaykpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFN2YXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2Egc3RhdGUgPVxuICAgICAgICB8IEVtcHR5IG9mIHsgbXV0YWJsZSBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBsaXN0IH1cbiAgICAgICAgfCBGdWxsIG9mICdhXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHN0YXRlIHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIChFbXB0eSB7IGhhbmRsZXJzID0gW10gfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHQgLT4gdC5oYW5kbGVycyA8LSBoYW5kbGVyIDo6IHQuaGFuZGxlcnNcbiAgICAgICAgfCBGdWxsIHggLT4gaGFuZGxlciB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmlsbF9pZl9lbXB0eSB0IHggPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRnVsbCBfIC0+ICgpXG4gICAgICAgIHwgRW1wdHkgeyBoYW5kbGVycyB9IC0+XG4gICAgICAgICAgTGlzdC5pdGVyIGhhbmRsZXJzIH5mOihmdW4gaGFuZGxlciAtPiBoYW5kbGVyIHgpO1xuICAgICAgICAgIHQgOj0gRnVsbCB4XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGVlayB0ID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IF8gLT4gTm9uZVxuICAgICAgICB8IEZ1bGwgeCAtPiBTb21lIHhcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW5fYXJnID0gc3RydWN0XG4gICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgIHR5cGUgJ3IgdCA9IFQgOiAnYSAqICgnYSAtPiAnciBTdmFyLnQpIC0+ICdyIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgaGFuZGxlIChBY3Rpb24uVCAoYSwgZikpIH5vbl9yZXNwb25zZSA9IFN2YXIudXBvbiAoZiBhKSBvbl9yZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuID0gRGVmaW5lMSAoU3Zhcl9mdW5fYXJnKVxuXG4gICAgbGV0IG9mX3N2YXJfZnVuIGYgYSA9IFN2YXJfZnVuLmluamVjdCAoVCAoYSwgZikpXG5cbiAgICBtb2R1bGUgUXVlcnlfcmVzcG9uc2VfdHJhY2tlciA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3EsICdyKSBycGMgPVxuICAgICAgICB7IHF1ZXJ5IDogJ3FcbiAgICAgICAgOyByZXNwb25zZSA6ICdyIFN2YXIudFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxLCAncikgdCA9ICgncSwgJ3IpIHJwYyBsaXN0IHJlZlxuXG4gICAgICBsZXQgY3JlYXRlICgpID0gcmVmIFtdXG5cbiAgICAgIGxldCBhZGRfcXVlcnkgdCBxdWVyeSA9XG4gICAgICAgIGxldCByZXNwb25zZSA9IFN2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIHQgOj0geyBxdWVyeTsgcmVzcG9uc2UgfSA6OiAhdDtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIExpc3QubWFwICF0IH5mOihmdW4geyBxdWVyeTsgcmVzcG9uc2UgPSBfIH0gLT4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICB0eXBlICdyIG1heWJlX3Jlc3BvbmQgPVxuICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldFxuICAgICAgICB8IFJlc3BvbmQgb2YgJ3JcblxuICAgICAgbGV0IG1heWJlX3Jlc3BvbmQgdCB+ZiA9XG4gICAgICAgIHRcbiAgICAgICAgOj0gTGlzdC5maWx0ZXIgIXQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm1vZHVsZSBEb21faHRtbCA9IHN0cnVjdFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuSnNcblxuICAoKiBObyBqc19vZl9vY2FtbCBQUiB5ZXQuICopXG4gIGNsYXNzIHR5cGUgd2hlZWxFdmVudCA9IG9iamVjdFxuICAgIGluaGVyaXQgbW91c2VFdmVudFxuICAgIG1ldGhvZCBkZWx0YVggOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhWSA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFaIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YU1vZGUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIG9mX2Jhc2VfaW50X2V4biA6IEJhc2UuSW50LnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludF9leG4gOiB0IC0+IEJhc2UuSW50LnRcblxuICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDggOiB1aW50OCAtPiB0XG4gICAgdmFsIG9mX3VpbnQxNiA6IHVpbnQxNiAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M190cnVuYyA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2M19leG4gOiB1aW50NjMgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfdHJ1bmMgOiB1aW50NjQgLT4gdFxuICAgIHZhbCBvZl91aW50NjRfZXhuIDogdWludDY0IC0+IHRcblxuICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDMyX3dyYXAgOiBpbnQzMiAtPiB0XG4gICAgdmFsIG9mX2ludDMyX2V4biA6IGludDMyIC0+IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJhY2tlbmQzMiA6IHNpZ1xuICB2YWwgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICAgICAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgICAgIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0gdHJ1bmMgeFxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4biB4XG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQub2ZfaW50NjRfdHJ1bmMgNDI5NDk2NzI5NUxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gICAgICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgICAgIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgICAgIGxldCBtYXNrID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgMHhGRkZGRkZGRkxcbiAgICAgIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gICAgICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICAgICAgbGV0IGVxdWFsNjQgPSBCYXNlLkludDY0LmVxdWFsXG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICAgICAoKiBVdGlsaXRpZXMgKilcbiAgICAgIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBleG42NCB4ID1cbiAgICAgICAgZXhuX3Vuc2lnbmVkXG4gICAgICAgICAgfmNvbnZcbiAgICAgICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICAgICAgfm1hc2s6bWFzazY0XG4gICAgICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgICAgICB+bW9kX25hbWVcbiAgICAgICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICAgICAgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9XG4gICAgICAgIEJhc2UuSW50NjQudG9faW50X3RydW5jIChsb2dhbmQ2NCAoQmFzZS5JbnQ2NC5vZl9pbnQzMiB4KSBtYXNrNjQpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0gQmFzZS5JbnQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50LiggPD0gKSB4IChCYXNlLkludC5vZl9pbnQ2NF90cnVuYyAyMTQ3NDgzNjQ3TClcbiAgICAgICAgdGhlbiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludC50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9ICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHggPSBCYXNlLkludDYzLnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X2V4biB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl91aW50MzJfZXhuIHggOiB0ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQzMi4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQzMi4oID0gKVxuICAgICAgICBsZXQgKCA+ICkgPSBCYXNlLkludDMyLiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50MzIuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50MzIuKCA8PiApXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBCYXNlLkludDMyLiggLyApXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVW5zaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgY29tcGFyZSB4IHkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfY29tcGFyZSB4IHkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQzMlxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50MzJcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi56ZXJvXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gLTFsXG4gICAgICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IG1vZF9uYW1lID0gXCJVaW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IHRvX2Jhc2VfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50MzIub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgICAgIGlmIEJhc2UuSW50NjQuKCA+PSApIHggMEwgJiYgQmFzZS5JbnQ2NC4oIDw9ICkgeCA0Mjk0OTY3Mjk1TFxuICAgICAgICB0aGVuIEJhc2UuSW50NjQudG9faW50MzJfdHJ1bmMgeFxuICAgICAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQzMi50b19pbnQ2NCB4KSAweEZGRkZGRkZGTFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludF9leG4geCA9XG4gICAgICAgIEJhc2UuSW50MzIub2ZfaW50X2V4biB4XG4gICAgICAgIHw+IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgICB8PiBCYXNlLkludDMyLnRvX2ludF9leG5cbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IFVpbnQxNi50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KVxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl91aW50NjNfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gb2ZfYmFzZV9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X2V4biB4ID0gb2ZfYmFzZV9pbnQ2NF9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2ludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJWx1XCIgeClcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDMyLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlTHVcIiBvZl9iYXNlX2ludDY0X2V4biB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjMudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcblxuICAgICAgbGV0ICggLyApIHggeSA9XG4gICAgICAgIG9mX2Jhc2VfaW50NjRfdHJ1bmMgKEJhc2UuSW50NjQuKCAvICkgKHRvX2Jhc2VfaW50NjQgeCkgKHRvX2Jhc2VfaW50NjQgeSkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBJbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjQubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjRcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjMgeCA9IEJhc2UuSW50NjMudG9faW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQ2NC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQ2NC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludDY0LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQ2NC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50NjQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQ2NC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDY0LiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDY0LiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDY0LiggKiApXG4gICAgICBsZXQgKCAvICkgPSBCYXNlLkludDY0LiggLyApXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IGNvbXBhcmUgPSBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZVxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gLTFMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjQuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDY0XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBVaW50MzIudG9fYmFzZV9pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2MyAoeCA6IHVpbnQ2MykgOiBpbnQ2NCA9XG4gICAgQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgeClcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDY0LnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIEZ1bi5pZCB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgIGxldCAoID0gKSB4IHkgPSBjb21wYXJlIHggeSA9IDBcbiAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgIGxldCAoIDw+ICkgeCB5ID0gY29tcGFyZSB4IHkgPD4gMFxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9kaXZcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBHZXQgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogOC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50OCA6IHQgLT4gcG9zOmludCAtPiBpbnQ4XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNlxuICB2YWwgZ2V0X2ludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuICB2YWwgZ2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTZcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50MzJfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50MzJcbiAgdmFsIGdldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcbiAgdmFsIGdldF91aW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDMyXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0XG4gIHZhbCBnZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcblxuICAoKiA2NC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG4gIHZhbCBnZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDggLT4gdW5pdFxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IHBvczppbnQgLT4gdWludDggLT4gdW5pdFxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTYgLT4gdW5pdFxuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQxNl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MTYgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfaW50MzJfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MzIgLT4gdW5pdFxuXG4gICgqIDMyLWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzIgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF9pbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50NjQgLT4gdW5pdFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldF9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB1c2UgbmF0aXZlIGVuZGlhbm5lc3MgKGhlbmNlIHRoZSBgX25lYCBzdWZmaXgpLiAqKVxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnRcbiAgdmFsIGdldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudFxuICB2YWwgZ2V0X2ludDY0X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQ2NC50XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBzZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF91aW50MTZfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludC50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50MzIudCAtPiB1bml0XG4gIHZhbCBzZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnQgLT4gdW5pdFxuZW5kXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IFN0ZGxpYi5JbnQzMi50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogU3RkbGliLkludDY0LnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9ieXRlc19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjR1XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgc2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuICBleHRlcm5hbCBzZXRfaW50MzJfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBCeXRlcyA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlcylcbiAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzMFVuc2FmZSlcbiAgICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlczBVbnNhZmUpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzApXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV9nZXQgKFN0cmluZzBVbnNhZmUpXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBCaWdzdHJpbmcwID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgKCBjaGFyXG4gICAgLCBTdGRsaWIuQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHRcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5jX2xheW91dCApXG4gICAgICBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgU3RkbGliLkJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsICdiLCAnYykgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiBpbnRcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuICBleHRlcm5hbCBkaW0gOiAoKCdhLCAnYiwgJ2MpIHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuZW5kXG5cbmluY2x1ZGUgQmlnc3RyaW5nMFxuXG5leHRlcm5hbCBhdXhfY3JlYXRlIDogbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzOmludCAtPiBzaXplOmludCAtPiB0ID0gXCJiaWdzdHJpbmdfYWxsb2NcIlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIE9uZSBuZWVkcyB0byB1c2UgW0NhbWwuU3lzLndvcmRfc2l6ZV0gc28gdGhhdCBpdHMgdmFsdWUgaXMga25vd24gYXQgY29tcGlsZS10aW1lLiAqKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3RkbGliLlN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN0ZGxpYi5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IFN0ZGxpYi5TeXMud29yZF9zaXplID4gMzJcblxubGV0IGNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIHNpemUgPVxuICBsZXQgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzID1cbiAgICBPcHRpb24udmFsdWUgbWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5kZWZhdWx0OigtMSlcbiAgaW5cbiAgKCogVGhpcyBjaGVjayBpcyBpbXBvcnRhbnQgYmVjYXVzZSBbYXV4X2NyZWF0ZSB+c2l6ZTooLTEpXSByYWlzZXMgW091dF9vZl9tZW1vcnldLCB3aGljaFxuICAgICBjb3VsZCBiZSBjb25mdXNpbmcgZHVyaW5nIGRlYnVnZ2luZy4gKilcbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcImNyZWF0ZTogc2l6ZSA9ICVkIDwgMFwiIHNpemUpO1xuICBhdXhfY3JlYXRlIH5tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfnNpemVcbjs7XG5cbmxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbmV4dGVybmFsIGlzX21tYXBwZWQgOiB0IC0+IGJvb2wgPSBcImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWJcIiBbQEBub2FsbG9jXVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB0LntpfSA8LSBmIGlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiAoYnN0ciA6IHQpID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogcG9zIDwgMFwiKTtcbiAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIChsb2MgXiBcIjogbGVuIDwgMFwiKTtcbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgKCogQmUgY2FyZWZ1bCB3aXRoIG92ZXJmbG93ISAgV2UgY291bGQgaGF2ZSBib2dvbnMgbGlrZSBbcG9zID0gSW50Lm1heF92YWx1ZV0gb3IgW2xlbiA9XG4gICAgIEludC5tYXhfdmFsdWVdIHBhc3NlZCBieSB0aGUgdXNlci4gKilcbiAgaWYgYnN0cl9sZW4gLSBwb3MgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpZ3N0cmluZy4lczogbGVuZ3RoKGJzdHIpIDwgcG9zICsgbGVuXCIgbG9jKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBsZXQgb3BlbiBCb29sLk5vbl9zaG9ydF9jaXJjdWl0aW5nIGluXG4gIGxldCBic3RyX2xlbiA9IGxlbmd0aCBic3RyIGluXG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBic3RyX2xlbiAtIHBvcyA8IGxlbiB0aGVuIGNoZWNrX2FyZ3Nfc2xvdyB+bG9jIH5wb3MgfmxlbiBic3RyXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6KHRbQGxvY2FsX29wdF0pXG4gIC0+IHNyY19wb3M6aW50XG4gIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaWdzdHJpbmdfYmxpdF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqIEV4cG9zaW5nIHRoZSBleHRlcm5hbCB2ZXJzaW9uIG9mIGdldC9zZXQgc3VwcG9ydHMgYmV0dGVyIGlubGluaW5nLiAqKVxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbmVuZFxuXG5tb2R1bGUgQnl0ZXNfc2VxdWVuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbmVuZFxuXG5pbmNsdWRlIEJsaXQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubW9kdWxlIEZyb21fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQnl0ZXNfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0W0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQmlnc3RyaW5nX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoQmlnc3RyaW5nX3NlcXVlbmNlKVxuICAgIChzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OihieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOihzdHJpbmdbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodFtAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUb19ieXRlc1xuICBpbmNsdWRlIEJsaXQuTWFrZV90b19zdHJpbmcgKEJpZ3N0cmluZzApIChUb19ieXRlcylcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nID0gRnJvbV9zdHJpbmcuc3Vib1xubGV0IG9mX2J5dGVzID0gRnJvbV9ieXRlcy5zdWJvXG5sZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnN1Ym9cbmxldCB0b19ieXRlcyA9IFRvX2J5dGVzLnN1Ym9cbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbmxldCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdCA9IGZ1bmN0aW9uXG4gIHwgQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgU2V4cGxpYjAuU2V4cF9jb252Lm9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY29weSB0IDogdCA9IHN1YiB0IH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxubGV0IGNvbmNhdCA9XG4gIGxldCBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBsZXQgc3JjX3BvcyA9IDAgaW5cbiAgICBsZXQgZHN0X3BvcyA9ICFkc3RfcG9zX3JlZiBpblxuICAgIGJsaXQgfmRzdCB+ZHN0X3BvcyB+c3JjIH5zcmNfcG9zIH5sZW47XG4gICAgZHN0X3Bvc19yZWYgOj0gZHN0X3BvcyArIGxlblxuICBpblxuICBmdW4gP3NlcCBsaXN0IC0+XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBjcmVhdGUgMFxuICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICBsZXQgaGVhZF9sZW4gPSBsZW5ndGggaGVhZCBpblxuICAgICAgbGV0IHNlcF9sZW4gPSBPcHRpb24udmFsdWVfbWFwIHNlcCB+ZjooZnVuIHQgLT4gbGVuZ3RoIHQpIH5kZWZhdWx0OjAgaW5cbiAgICAgIGxldCB0YWlsX2NvdW50ID0gTGlzdC5sZW5ndGggdGFpbCBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGhlYWRfbGVuXG4gICAgICAgICsgKHNlcF9sZW4gKiB0YWlsX2NvdW50KVxuICAgICAgICArIExpc3Quc3VtIChtb2R1bGUgSW50KSB0YWlsIH5mOihmdW4gdCAtPiBsZW5ndGggdClcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbW1lbVxuICA6ICBoYXlzdGFjazp0XG4gIC0+IG5lZWRsZTp0XG4gIC0+IGhheXN0YWNrX3BvczppbnRcbiAgLT4gaGF5c3RhY2tfbGVuOmludFxuICAtPiBuZWVkbGVfcG9zOmludFxuICAtPiBuZWVkbGVfbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1tZW1fYnl0ZWNvZGVcIiBcImJpZ3N0cmluZ19tZW1tZW1cIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbmxldCBtZW1tZW1cbiAgICAgIH5oYXlzdGFja1xuICAgICAgfm5lZWRsZVxuICAgICAgPyhoYXlzdGFja19wb3MgPSAwKVxuICAgICAgP2hheXN0YWNrX2xlblxuICAgICAgPyhuZWVkbGVfcG9zID0gMClcbiAgICAgID9uZWVkbGVfbGVuXG4gICAgICAoKVxuICA9XG4gIGxldCBoYXlzdGFja19sZW4gPSBnZXRfb3B0X2xlbiBoYXlzdGFjayB+cG9zOmhheXN0YWNrX3BvcyBoYXlzdGFja19sZW4gaW5cbiAgbGV0IG5lZWRsZV9sZW4gPSBnZXRfb3B0X2xlbiBuZWVkbGUgfnBvczpuZWVkbGVfcG9zIG5lZWRsZV9sZW4gaW5cbiAgbGV0IHJlcyA9XG4gICAgdW5zYWZlX21lbW1lbSB+aGF5c3RhY2sgfm5lZWRsZSB+aGF5c3RhY2tfcG9zIH5oYXlzdGFja19sZW4gfm5lZWRsZV9wb3Mgfm5lZWRsZV9sZW5cbiAgaW5cbiAgaWYgcmVzIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHJlc1xuOztcblxuKCogdmltOiBzZXQgZmlsZXR5cGU9b2NhbWwgOiAqKVxuXG4oKiBCaW5hcnktcGFja2luZyBsaWtlIGFjY2Vzc29ycyAqKVxuXG5leHRlcm5hbCBpbnQzMl9vZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50MzJfdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIGludDY0X29mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBpbnQ2NF90b19pbnQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogKGludDY0W0Bsb2NhbF0pIC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF8xNiA6IHQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzMyIDogdCAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF82NCA6IHQgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMTYgOiAodFtAbG9jYWxfb3B0XSkgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF8zMlxuICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgLT4gaW50XG4gIC0+IGludDMyXG4gIC0+IHVuaXRcbiAgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0XzY0IDogdCAtPiBpbnQgLT4gKGludDY0W0Bsb2NhbF0pIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5sZXRbQGlubGluZSBhbHdheXNdIGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfMzIgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDMyID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX2dldF8zMiB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBnZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSA6IGludDY0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX2dldF82NCB0IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50MzIpIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF8zMlwiIH5wb3Mgfmxlbjo0IHQ7XG4gIHVuc2FmZV9zZXRfMzIgdCBwb3MgdlxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfNjQgKHQgOiB0KSAocG9zIDogaW50KSAoKHYgOiBpbnQ2NCkgW0Bsb2NhbF0pIDogdW5pdCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcInNldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9zZXRfNjQgdCBwb3MgdlxuOztcblxubGV0IHNpZ25fZXh0ZW5kXzE2IHUgPSAodSBsc2wgKEludC5udW1fYml0cyAtIDE2KSkgYXNyIChJbnQubnVtX2JpdHMgLSAxNilcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQxNiB4IH5sb2MgPVxuICBpZiB4IDwgLTB4ODAwMCB8fCB4ID4gMHg3RkZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMTYtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50OCB4IH5sb2MgPVxuICBpZiB4IDwgMCB8fCB4ID4gMHhGRlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MCB8fCB4ID4gMHg3RlxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDgtYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF9pbnQzMiA9XG4gIGlmIG5vdCBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBfIH5sb2M6XyAtPiAoKVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAtMSBsc2wgMzEgJiYgeCA8IDEgbHNsIDMxXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIChzaWduZWQpIDMyLWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgY2hlY2tfdmFsaWRfdWludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IDBcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbiAgZWxzZVxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMCAmJiB4IDwgMSBsc2wgMzJcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50NjQgeCB+bG9jID1cbiAgaWYgeCA+PSAwXG4gIHRoZW4gKClcbiAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAodW5zYWZlX2dldF8xNiB0IHBvcykpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX2ludDE2IHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChnZXRfMTYgdCBwb3MpXG5sZXQgcmVhZF9pbnQxNl9zd2FwIHQgfnBvcyA9IHNpZ25fZXh0ZW5kXzE2IChzd2FwMTYgKGdldF8xNiB0IHBvcykpXG5cbmxldCB3cml0ZV9pbnQxNl9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV9pbnQxNl9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX3VpbnQxNiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKVxubGV0IHVuc2FmZV93cml0ZV91aW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIChzd2FwMTYgeClcbmxldCByZWFkX3VpbnQxNiB0IH5wb3MgPSBnZXRfMTYgdCBwb3NcbmxldCByZWFkX3VpbnQxNl9zd2FwIHQgfnBvcyA9IHN3YXAxNiAoZ2V0XzE2IHQgcG9zKVxuXG5sZXQgd3JpdGVfdWludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQxNiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfdWludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyB4XG47O1xuXG5sZXQgd3JpdGVfdWludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIChzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50ICh1bnNhZmVfZ2V0XzMyIHQgcG9zKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyICh1bnNhZmVfZ2V0XzMyIHQgcG9zKSlcbmxldCB1bnNhZmVfcmVhZF9pbnQzMiB0IH5wb3MgPSB1bnNhZmVfZ2V0XzMyIHQgcG9zXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG5sZXQgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyAoc3dhcDMyIChpbnQzMl9vZl9pbnQgeCkpXG5sZXQgcmVhZF9pbnQzMl9pbnQgdCB+cG9zID0gaW50MzJfdG9faW50IChnZXRfMzIgdCBwb3MpXG5sZXQgcmVhZF9pbnQzMl9pbnRfc3dhcCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHN3YXAzMiAoZ2V0XzMyIHQgcG9zKSlcbmxldCByZWFkX2ludDMyIHQgfnBvcyA9IGdldF8zMiB0IHBvc1xubGV0IHJlYWRfaW50MzJfc3dhcCB0IH5wb3MgPSBzd2FwMzIgKGdldF8zMiB0IHBvcylcbmxldCB3cml0ZV9pbnQzMiB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyB4XG5sZXQgd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHNldF8zMiB0IHBvcyAoc3dhcDMyIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9pbnRfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKGludDMyX29mX2ludCB4KVxuOztcblxubGV0IHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biB0IH5wb3MgeCA9XG4gICgqIE9taXQgXCJfc3dhcFwiIGZyb20gdGhlIGVycm9yIG1lc3NhZ2UgaXQncyBiaS1lbmRpYW4uICopXG4gIGNoZWNrX3ZhbGlkX2ludDMyIHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQzMl9pbnRcIjtcbiAgc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAodW5zYWZlX2dldF82NCB0IHBvcylcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnQgKHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcykpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0IHQgfnBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKHVuc2FmZV9nZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID1cbiAgdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50IHQgfnBvcyA9IGludDY0X3RvX2ludCAoZ2V0XzY0IHQgcG9zKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9IGludDY0X3RvX2ludCAoc3dhcDY0IChnZXRfNjQgdCBwb3MpKVxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0IHQgfnBvcyA9IGdldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXAgdCB+cG9zID0gc3dhcDY0IChnZXRfNjQgdCBwb3MpXG5sZXQgd3JpdGVfaW50NjQgdCB+cG9zICh4IFtAbG9jYWxdKSA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgKHggW0Bsb2NhbF0pID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKGludDY0X29mX2ludCB4KVxubGV0IHdyaXRlX2ludDY0X2ludF9zd2FwIHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNiBlbHNlIHVuc2FmZV9yZWFkX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTYgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF91aW50MTZcbjs7XG5cbmxldCBnZXRfaW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2IGVsc2UgcmVhZF9pbnQxNl9zd2FwXG5sZXQgZ2V0X2ludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNl9zd2FwIGVsc2UgcmVhZF9pbnQxNlxubGV0IGdldF91aW50MTZfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNiBlbHNlIHJlYWRfdWludDE2X3N3YXBcbmxldCBnZXRfdWludDE2X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTZfc3dhcCBlbHNlIHJlYWRfdWludDE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2IGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZcbjs7XG5cbmxldCBzZXRfaW50MTZfYmVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfZXhuIGVsc2Ugd3JpdGVfaW50MTZfc3dhcF9leG5cbmxldCBzZXRfaW50MTZfbGVfZXhuID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQxNl9leG5cblxubGV0IHNldF91aW50MTZfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X2V4biBlbHNlIHdyaXRlX3VpbnQxNl9zd2FwX2V4blxuOztcblxubGV0IHNldF91aW50MTZfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfdWludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfdWludDE2X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMlxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMiBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJcbjs7XG5cbmxldCBnZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzIgZWxzZSByZWFkX2ludDMyX3N3YXBcbmxldCBnZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfc3dhcCBlbHNlIHJlYWRfaW50MzJcbmxldCBzZXRfaW50MzJfdF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyIGVsc2Ugd3JpdGVfaW50MzJfc3dhcFxubGV0IHNldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfc3dhcCBlbHNlIHdyaXRlX2ludDMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50XG47O1xuXG5sZXQgZ2V0X2ludDMyX2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnQgZWxzZSByZWFkX2ludDMyX2ludF9zd2FwXG5sZXQgZ2V0X2ludDMyX2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHJlYWRfaW50MzJfaW50XG5cbmxldCBzZXRfaW50MzJfYmVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4blxuOztcblxubGV0IHNldF9pbnQzMl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZV90cnVuYyA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludFxuOztcblxubGV0IGdldF9pbnQ2NF9iZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50IGVsc2UgcmVhZF9pbnQ2NF9pbnRfc3dhcFxubGV0IGdldF9pbnQ2NF9sZV90cnVuYyA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfaW50X3N3YXAgZWxzZSByZWFkX2ludDY0X2ludFxubGV0IHNldF9pbnQ2NF9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludCBlbHNlIHdyaXRlX2ludDY0X2ludF9zd2FwXG5sZXQgc2V0X2ludDY0X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NF9pbnRcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRcbjs7XG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAodW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMICh1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIHQgfnBvcyA9XG4gICAgIChJbnQ2NC4oICsgKSAwTCAocmVhZF9pbnQ2NF9zd2FwIHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9iZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfbG9jYWwgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9nZXRfaW50NjRfdF9sZSA9XG4gICAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2xvY2FsXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9sb2NhbCBlbHNlIHJlYWRfaW50NjRfc3dhcF9sb2NhbFxuICBsZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXBfbG9jYWwgZWxzZSByZWFkX2ludDY0X2xvY2FsXG5lbmRcblxubGV0IGdldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NCBlbHNlIHJlYWRfaW50NjRfc3dhcFxubGV0IGdldF9pbnQ2NF90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9zd2FwIGVsc2UgcmVhZF9pbnQ2NFxubGV0IHNldF9pbnQ2NF90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjQgZWxzZSB3cml0ZV9pbnQ2NF9zd2FwXG5sZXQgc2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRcblxubGV0IGludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX2ludDY0OiB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgdW5ib3hlZCFcIlxuOztcblxubGV0IHVpbnQ2NF9jb252X2Vycm9yICgpID1cbiAgZmFpbHdpdGggXCJ1bnNhZmVfcmVhZF91aW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG4oKiBbUG9seV0gaXMgcmVxdWlyZWQgc28gdGhhdCB3ZSBjYW4gY29tcGFyZSB1bmJveGVkIFtpbnQ2NF0uICopXG5sZXRbQGlubGluZSBhbHdheXNdIGludDY0X3RvX2ludF9leG4gKG4gW0Bsb2NhbF0pID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBTdGRsaWIuTmF0aXZlaW50LihzdWIgKHNoaWZ0X2xlZnQgMW4gMzIpIDFuKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQzMl9vZl9pbnQzMl90IG4gPVxuICBpZiBub3Rfb25fMzJiaXRcbiAgdGhlblxuICAgICgqIHVzZSBDYW1sLk5hdGl2ZWludCB0byBlbnN1cmUgaW5saW5pbmcgZXZlbiB3aXRob3V0IHgtbGlicmFyeS1pbmxpbmluZyAqKVxuICAgIFN0ZGxpYi5OYXRpdmVpbnQuKHRvX2ludCAobG9nYW5kIChvZl9pbnQzMiBuKSBtYXNrMzJfbikpXG4gIGVsc2UgaW50MzJfdG9faW50IG5cbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfc2V0X3VpbnQzMl9sZSB0IH5wb3MgbiA9IHVuc2FmZV9zZXRfaW50MzJfdF9sZSB0IH5wb3MgKGludDMyX29mX2ludCBuKVxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2JlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2JlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2xlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICB1aW50MzJfb2ZfaW50MzJfdCAodW5zYWZlX2dldF9pbnQzMl90X2JlIHQgfnBvcylcbjs7XG5cbmxldCBzZXRfdWludDMyX2xlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfbGVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfbGVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQzMl9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50MzIgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDMyX2JlX2V4blwiIG47XG4gIGxldCBuID0gaWYgbm90X29uXzMyYml0ICYmIG4gPj0gMSBsc2wgMzEgdGhlbiBuIC0gKDEgbHNsIDMyKSBlbHNlIG4gaW5cbiAgc2V0X2ludDMyX2JlX2V4biB0IH5wb3MgblxuOztcblxubGV0IGdldF91aW50MzJfbGUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2xlIHQgfnBvcylcbmxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9IHVpbnQzMl9vZl9pbnQzMl90IChnZXRfaW50MzJfdF9iZSB0IH5wb3MpXG5cbm1vZHVsZSBJbnRfcmVwciA9IHN0cnVjdFxuICBtb2R1bGUgRiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gZ2V0X3VpbnQ4IHQgfnBvc1xuICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCB4KVxuICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gZ2V0XzE2IHQgcG9zXG4gICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHNldF8xNl90cnVuYyB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IGdldF8zMiB0IHBvc1xuICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHNldF8zMiB0IHBvcyB4XG4gICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IGdldF82NCB0IHBvc1xuICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHNldF82NCB0IHBvcyB4XG4gIGVuZFxuXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9nZXQgKEYpXG4gIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB0X2Zyb3plblxuXG4gICAgICBsZXQgZ2V0X3VpbnQ4IHQgcG9zID0gdW5zYWZlX2dldF91aW50OCB0IH5wb3NcbiAgICAgIGxldCBzZXRfdWludDggdCBwb3MgeCA9IHVuc2FmZV9zZXRfdWludDggdCB+cG9zIHhcbiAgICAgIGxldCBnZXRfdWludDE2X25lIHQgcG9zID0gdW5zYWZlX2dldF8xNiB0IHBvc1xuICAgICAgbGV0IHNldF91aW50MTZfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQzMl9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50MzJfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgeFxuICAgICAgbGV0IGdldF9pbnQ2NF9uZSB0IHBvcyA9IHVuc2FmZV9nZXRfNjQgdCBwb3NcbiAgICAgIGxldCBzZXRfaW50NjRfbmUgdCBwb3MgeCA9IHVuc2FmZV9zZXRfNjQgdCBwb3MgeFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2Vfc2V0IChGKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2lnbl9leHRlbmRfMTYgPSBzaWduX2V4dGVuZF8xNlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCbGl0XG5pbmNsdWRlIFRlc3RfYmxpdF9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmxpdFxuXG4gIHR5cGUgJ2Egc3JjXG4gIHR5cGUgJ2EgZHN0XG5cbiAgKCogIHZhbCBibGl0ICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdCopXG4gIHZhbCBibGl0byA6ICgnYSBzcmMsICdhIGRzdCkgYmxpdG9cblxuICAoKiAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIHN1YiA6ICgnYSBzcmMsICdhIGRzdCkgc3ViXG5cbiAgKCp2YWwgc3VibyAgICAgICAgOiAoJ2Egc3JjLCAnYSBkc3QpIHN1Ym8qKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl90ZXN0c19nZW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sXG5cbiAgICB2YWwgb2ZfYm9vbCA6IGJvb2wgLT4gYm9vbCB0XG4gIGVuZFxuXG4gIHR5cGUgJ2EgelxuXG4gIG1vZHVsZSBTcmMgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuICAgIHZhbCBjcmVhdGVfYm9vbCA6IGxlbjppbnQgLT4gYm9vbCB6IHRcbiAgICB2YWwgZ2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudFxuICAgIHZhbCBzZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIERzdCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYExhc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgMlxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgczsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYiB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gcyA9IE5vbmVcblxuICAgICAgbGV0IGNyZWF0ZV90ZXN0X2Nhc2UgKG51bV9zLCBudW1fYikgPVxuICAgICAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIGIgfmxlbjoobnVtX3MgKyBudW1fYikgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG51bV9zIC0gMSBkb1xuICAgICAgICAgIGFyci4oaSkgPC0gc1xuICAgICAgICBkb25lO1xuICAgICAgICBhcnJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvbmx5X3NtYWxsID0gMTBfMDAwLCAwXG4gICAgICBsZXQgb25seV9iaWcgPSAwLCAxMF8wMDBcbiAgICAgIGxldCBib3RoID0gMjUzMSwgNDcxN1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbWF0Y2ggYmluYXJ5X3NlYXJjaCAoY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsKSB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPiB0cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2UgYm90aCBpblxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2ID0gMjUzMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSA9XG4gICAgICAgIEFycmF5LmluaXQgMTAwXzAwMCB+ZjooZnVuIGkgLT4gaWYgaSA+IDUwXzAwMCB0aGVuIGIgZWxzZSBzKVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdHMgYXJvdW5kIGEgZ2FwKilcbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOTlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgICgqIHRlc3QgYmVnaW5uaW5nIG9mIGFycmF5ICopXG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X2JpZyBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBlbmQgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBiID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDlfOTk5XG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICAgIGZvciBsZW5ndGggPSAwIHRvIDUgZG9cbiAgICAgICAgICBmb3IgbnVtX3MgPSAwIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgbGV0IGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIH5mOihmdW4gaSAtPiBpZiBpIDwgbnVtX3MgdGhlbiBzIGVsc2UgYikgaW5cbiAgICAgICAgICAgIGZvciBwb3MgPSAtMSB0byBsZW5ndGggZG9cbiAgICAgICAgICAgICAgZm9yIGxlbiA9IC0xIHRvIGxlbmd0aCArIDEgZG9cbiAgICAgICAgICAgICAgICAoKnRyeSopXG4gICAgICAgICAgICAgICAgbGV0IHNob3VsZF9yYWlzZSA9XG4gICAgICAgICAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgICAgIH50b3RhbF9sZW5ndGg6bGVuZ3RoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+cG9zIH5sZW4gfmNvbXBhcmU6ZWx0X2NvbXBhcmUgYExhc3RfZXF1YWxfdG8gcylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIHNob3VsZF9yYWlzZSwgcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgICB8IHRydWUsIEVycm9yIF8gLT4gKClcbiAgICAgICAgICAgICAgICB8IHRydWUsIE9rIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byByYWlzZSBidXQgaXQgZGlkbid0XCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBFcnJvciBfIC0+IGZhaWx3aXRoIFwiZXhwZWN0ZWQgaXQgdG8gbm90IHJhaXNlLCBidXQgaXQgcmFpc2VkXCJcbiAgICAgICAgICAgICAgICB8IGZhbHNlLCBPayByZXN1bHQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hlZCA9IG51bV9zIC0gMSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGNvcnJlY3RfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc2VhcmNoZWQgPCBwb3NcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgbGVuID0gMFxuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBzZWFyY2hlZCA+PSBwb3MgKyBsZW5cbiAgICAgICAgICAgICAgICAgICAgdGhlbiBTb21lIChwb3MgKyBsZW4gLSAxKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIFNvbWUgc2VhcmNoZWRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBub3QgKGNvcnJlY3RfcmVzdWx0ID0gcmVzdWx0KSB0aGVuIGZhaWx3aXRoIFwiV3JvbmcgcmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgICgqd2l0aCBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGhzIFwiYmluYXJ5X3NlYXJjaCBidWdcIlxuICAgICAgICAgICAgICAgICAgICAoZXhuLCBgbGVuZ3RoIGxlbmd0aCwgYHNlYXJjaF9rZXkgc2VhcmNoX2tleSwgYHBvcyBwb3MsIGBsZW4gbGVuKVxuICAgICAgICAgICAgICAgICAgICA8OnNleHBfb2Y8IGV4biAqIFsgYGxlbmd0aCBvZiBpbnQgXSAqIFsgYHNlYXJjaF9rZXkgb2YgaW50IF1cbiAgICAgICAgICAgICAgICAgICAqIFsgYHBvcyBvZiBpbnQgXSAqIFsgYGxlbiBvZiBpbnQgXSA+PiopXG4gICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhID0gYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgKEZvcl90ZXN0Lm9mX2FycmF5IGEpXG5cbiAgICAgICgqdGVzdCBmb3IgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIHggPSBpZiB4ID0gYiB0aGVuIGBSaWdodCBlbHNlIGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA1MF8wMDBcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgNTBfMDAxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBSaWdodCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IE5vbmVcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGxldCBzZWdtZW50X29mIF8gPSBgTGVmdCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYExhc3Rfb25fbGVmdCA9IFNvbWUgOTlfOTk5XG4gICAgICAgICYmIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgRmlyc3Rfb25fcmlnaHQgPSBOb25lXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdCAoTSA6IEJpbmFyeV9zZWFyY2hhYmxlX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gTS50XG4gICAgdHlwZSAnYSBlbHQgPSBNLmVsdFxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gIGVuZClcblxubW9kdWxlIFRlc3QxIChNIDogQmluYXJ5X3NlYXJjaGFibGUxX2FuZF9mb3JfdGVzdCkgPSBUZXN0X2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTS50XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gICAgbGV0IGJpbmFyeV9zZWFyY2ggPSBNLmJpbmFyeV9zZWFyY2hcbiAgICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPSBNLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IE0uRm9yX3Rlc3Qub2ZfYXJyYXlcbiAgICAgIGxldCBjb21wYXJlID0gQm9vbC5jb21wYXJlXG4gICAgICBsZXQgc21hbGwgPSBmYWxzZVxuICAgICAgbGV0IGJpZyA9IHRydWVcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9hbmRfdGVzdCAoTSA6IEluZGV4YWJsZV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0IChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IE0udFxuICAgICAgdHlwZSBlbHQgPSBNLmVsdFxuXG4gICAgICBpbmNsdWRlIEJcbiAgICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlMV9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG1vZHVsZSBCID0gQmluYXJ5X3NlYXJjaGFibGUuTWFrZTEgKE0pXG4gIGluY2x1ZGUgQlxuXG4gIGluY2x1ZGUgVGVzdDEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgTS50XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgQmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBTdGRsaWIuRmlsZW5hbWVcblxuICBsZXQgY2hlY2tfc3VmZml4ID0gY2hlY2tfc3VmZml4XG4gIGxldCBjaG9wX2V4dGVuc2lvbiA9IGNob3BfZXh0ZW5zaW9uXG4gIGxldCBjaG9wX3N1ZmZpeCA9IGNob3Bfc3VmZml4XG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgPSBjaG9wX3N1ZmZpeF9vcHRcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBpc19pbXBsaWNpdCA9IGlzX2ltcGxpY2l0XG4gIGxldCBpc19yZWxhdGl2ZSA9IGlzX3JlbGF0aXZlXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBwYXJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcl9zZXAgPSBkaXJfc2VwXG4gIGxldCBxdW90ZSA9IHF1b3RlXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gZ2V0X3RlbXBfZGlyX25hbWUgKClcbiAgbGV0IGRpcm5hbWUgPSBkaXJuYW1lXG4gIGxldCBiYXNlbmFtZSA9IGJhc2VuYW1lXG5lbmRcblxubGV0IGlzX2Fic29sdXRlIHAgPSBub3QgKGlzX3JlbGF0aXZlIHApXG5cbmxldCBjb25jYXQgcDEgcDIgPVxuICBpZiBTdHJpbmcuaXNfZW1wdHkgcDFcbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkZpbGVuYW1lLnRvX2Fic29sdXRlX2V4biBjYWxsZWQgd2l0aCBhIFtyZWxhdGl2ZV90b10gdGhhdCBpcyBhIHJlbGF0aXZlIHBhdGg6ICVzXCJcbiAgICAgIHJlbGF0aXZlX3RvXG4gICAgICAoKVxuICBlbHNlIGlmIGlzX2Fic29sdXRlIHBcbiAgdGhlbiBwXG4gIGVsc2UgY29uY2F0IHJlbGF0aXZlX3RvIHBcbjs7XG5cbmxldCBzcGxpdCBzID0gZGlybmFtZSBzLCBiYXNlbmFtZSBzXG5cbigqIFttYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemVdIGNvbWVzIGZyb20gZ2V0Y29uZiBfUE9TSVhfTkFNRV9NQVggLyAqKVxubGV0IG1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSA9IDI1NVxuXG5sZXQgaXNfcG9zaXhfcGF0aG5hbWVfY29tcG9uZW50IHMgPVxuICBsZXQgbW9kdWxlIFMgPSBTdHJpbmcgaW5cbiAgcyA8PiBcIi5cIlxuICAmJiBzIDw+IFwiLi5cIlxuICAmJiBJbnQuKDAgPCBTLmxlbmd0aCBzKVxuICAmJiBJbnQuKFMubGVuZ3RoIHMgPD0gbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplKVxuICAmJiAobm90IChTLmNvbnRhaW5zIHMgJy8nKSlcbiAgJiYgbm90IChTLmNvbnRhaW5zIHMgJ1xcMDAwJylcbjs7XG5cbmxldCByb290ID0gXCIvXCJcblxubGV0IHNwbGl0X2V4dGVuc2lvbiBmbiA9XG4gIGxldCBkaXIsIGZuID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy8nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSwgZm5cbiAgICB8IFNvbWUgKHBhdGgsIGZuKSAtPiBTb21lIHBhdGgsIGZuXG4gIGluXG4gIGxldCBmbiwgZXh0ID1cbiAgICBtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246Jy4nIGZuIHdpdGhcbiAgICB8IE5vbmUgLT4gZm4sIE5vbmVcbiAgICB8IFNvbWUgKGJhc2VfZm4sIGV4dCkgLT4gYmFzZV9mbiwgU29tZSBleHRcbiAgaW5cbiAgbGV0IGZuID1cbiAgICBtYXRjaCBkaXIgd2l0aFxuICAgIHwgTm9uZSAtPiBmblxuICAgIHwgU29tZSBkaXIgLT4gZGlyIF4gXCIvXCIgXiBmblxuICBpblxuICBmbiwgZXh0XG47O1xuXG5sZXQgcGFydHMgZmlsZW5hbWUgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGZpbGVuYW1lID1cbiAgICBtYXRjaCBzcGxpdCBmaWxlbmFtZSB3aXRoXG4gICAgfCAoXCIuXCIgYXMgYmFzZSksIFwiLlwiIC0+IGJhc2UgOjogYWNjXG4gICAgfCAoXCIvXCIgYXMgYmFzZSksIFwiL1wiIC0+IGJhc2UgOjogYWNjXG4gICAgfCByZXN0LCBkaXIgLT4gbG9vcCAoZGlyIDo6IGFjYykgcmVzdFxuICBpblxuICBsb29wIFtdIGZpbGVuYW1lXG47O1xuXG5sZXQgb2ZfcGFydHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhaWx3aXRoIFwiRmlsZW5hbWUub2ZfcGFydHM6IGVtcHR5IHBhcnRzIGxpc3RcIlxuICB8IHJvb3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpyb290IH5mOlN0ZGxpYi5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmdcbiAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICBlbHNlIFR5cGVfZXF1YWwuSWQuVWlkLnNleHBfb2ZfdCAoVHlwZV9lcXVhbC5JZC51aWQgdHlwZV9pZClcbiAgICAgICAgICAgICAgICAgIDogU2V4cC50KVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZCBrZXkgPVxuICAgICAgbGV0IHR5cGVfaWQxID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBsZXQgdHlwZV9pZDIgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGlmIFR5cGVfZXF1YWwuSWQuc2FtZSB0eXBlX2lkMSB0eXBlX2lkMlxuICAgICAgdGhlbiB0eXBlX2lkMVxuICAgICAgZWxzZVxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIltLZXkudHlwZV9pZF0gbXVzdCBub3QgcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBpZHMgd2hlbiBjYWxsZWQgb24gdGhlIHNhbWUgXFxcbiAgICAgICAgICAgICBpbnB1dFwiXG4gICAgICAgICAgICAgIChrZXkgOiBfIEtleS50KVxuICAgICAgICAgICAgICAodHlwZV9pZDEgOiB0eXBlX2lkKVxuICAgICAgICAgICAgICAodHlwZV9pZDIgOiB0eXBlX2lkKV1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlICgncywgJ2EpIGRhdGEgPSAoJ3MsICdhKSBEYXRhLnRcblxuICBsZXQgbmFtZV9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC5uYW1lIChLZXkudHlwZV9pZCBrZXkpXG4gIGxldCB1aWRfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQudWlkIChLZXkudHlwZV9pZCBrZXkpXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ3MgdCA9IFQgOiAnYSBLZXkudCAqICgncywgJ2EpIERhdGEudCAtPiAncyB0XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSAoVCAoa2V5LCBkYXRhKSkgPVxuICAgICAgRGF0YS5zZXhwX29mX3Qgc2V4cF9vZl9hIChUeXBlX2VxdWFsLklkLnRvX3NleHAgKEtleS50eXBlX2lkIGtleSkpIGRhdGFcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWRfbmFtZSAoVCAoa2V5LCBfKSkgPSBuYW1lX29mX2tleSBrZXlcbiAgICBsZXQgdHlwZV9pZF91aWQgKFQgKGtleSwgXykpID0gdWlkX29mX2tleSBrZXlcblxuICAgIGxldCBjb21wYXJlIHQxIHQyID1cbiAgICAgIGxldCBjID0gU3RyaW5nLmNvbXBhcmUgKHR5cGVfaWRfbmFtZSB0MSkgKHR5cGVfaWRfbmFtZSB0MikgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBVaWQuY29tcGFyZSAodHlwZV9pZF91aWQgdDEpICh0eXBlX2lkX3VpZCB0MilcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdzIHQgPSAncyBQYWNrZWQudCBNYXAuTShVaWQpLnRcblxuICBsZXQgdG9fYWxpc3QgdCA9IE1hcC5kYXRhIHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOlBhY2tlZC5jb21wYXJlXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgdG9fYWxpc3QgdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gcGFja2VkIC0+IFBhY2tlZC50eXBlX2lkX25hbWUgcGFja2VkLCBwYWNrZWQpXG4gICAgfD4gWyVzZXhwX29mOiAoc3RyaW5nICogYSBQYWNrZWQudCkgbGlzdF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50ICh0IDogXyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIE1hcC5pdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBhc3NlcnQgKFVpZC5lcXVhbCBrZXkgKFBhY2tlZC50eXBlX2lkX3VpZCBkYXRhKSkpKVxuICA7O1xuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID0gTWFwLnNldCB0IH5rZXk6KHVpZF9vZl9rZXkga2V5KSB+ZGF0YTooUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIGxldCBtZW1fYnlfaWQgdCBpZCA9IE1hcC5tZW0gdCBpZFxuICBsZXQgbWVtIHQga2V5ID0gbWVtX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgcmVtb3ZlX2J5X2lkIHQgaWQgPSBNYXAucmVtb3ZlIHQgaWRcbiAgbGV0IHJlbW92ZSB0IGtleSA9IHJlbW92ZV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgVWlkKVxuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPVxuICAgIE1hcC5zaW5nbGV0b24gKG1vZHVsZSBVaWQpICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IE1hcC5pc19lbXB0eVxuXG4gIGxldCBmaW5kICh0eXBlIGIpIHQgKGtleSA6IGIgS2V5LnQpID1cbiAgICBtYXRjaCBNYXAuZmluZCB0ICh1aWRfb2Zfa2V5IGtleSkgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChQYWNrZWQuVCAoa2V5JywgdmFsdWUpKSAtPlxuICAgICAgKCogY2Fubm90IHJhaXNlIC0tIHNlZSBbaW52YXJpYW50XSAqKVxuICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQga2V5KSAoS2V5LnR5cGVfaWQga2V5JylcbiAgICAgIGluXG4gICAgICBTb21lICh2YWx1ZSA6IChfLCBiKSBEYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBkYXRhXG4gICAgfCBOb25lIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuYWRkX2V4biBvbiBleGlzdGluZyBrZXkgJXNcIiAobmFtZV9vZl9rZXkga2V5KSAoKVxuICA7O1xuXG4gIGxldCBjaGFuZ2VfZXhuIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIGRhdGEpXG4gICAgfCBOb25lIC0+XG4gICAgICBQcmludGYuZmFpbHdpdGhmIFwiVW5pdl9tYXAuY2hhbmdlX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIGxldCBvcmlnID0gZmluZCB0IGtleSBpblxuICAgIGxldCBuZXh0ID0gdXBkYXRlIG9yaWcgaW5cbiAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgfCBOb25lIC0+IGlmIE9wdGlvbi5pc19ub25lIG9yaWcgdGhlbiB0IGVsc2UgcmVtb3ZlIHQga2V5XG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9IGNoYW5nZSB0IGtleSB+ZjooZnVuIGRhdGEgLT4gU29tZSAoZiBkYXRhKSlcblxuICBsZXQgb2ZfYWxpc3RfZXhuIHQgPVxuICAgIE1hcC5vZl9hbGlzdF9leG4gKG1vZHVsZSBVaWQpIChMaXN0Lm1hcCB0IH5mOihmdW4gcCAtPiBQYWNrZWQudHlwZV9pZF91aWQgcCwgcCkpXG4gIDs7XG5cbiAgbGV0IHR5cGVfZXF1YWwgOiAoJ3MgdCwgJ3MgUGFja2VkLnQgTWFwLk0oVHlwZV9lcXVhbC5JZC5VaWQpLnQpIFR5cGVfZXF1YWwudCA9IFRcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0MSA9ICdzIE0uUGFja2VkLnQgPSBUIDogJ2EgS2V5LnQgKiAnYSBEYXRhLnQgLT4gJ3MgdDFcbiAgICB0eXBlIHQgPSB1bml0IHQxXG4gIGVuZFxuXG4gIGxldCB0b19hbGlzdCA9IE0udG9fYWxpc3RcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE0ub2ZfYWxpc3RfZXhuXG4gIGxldCB0eXBlX2VxdWFsIDogKHQsIFBhY2tlZC50IE1hcC5NKFR5cGVfZXF1YWwuSWQuVWlkKS50KSBUeXBlX2VxdWFsLnQgPSBUXG5lbmRcblxubW9kdWxlIE1lcmdlIChLZXkgOiBLZXkpIChJbnB1dDFfZGF0YSA6IERhdGEpIChJbnB1dDJfZGF0YSA6IERhdGEpIChPdXRwdXRfZGF0YSA6IERhdGEpID1cbnN0cnVjdFxuICB0eXBlIGYgPVxuICAgIHsgZiA6XG4gICAgICAgICdhLlxuICAgICAgICAgIGtleTonYSBLZXkudFxuICAgICAgICAtPiBbIGBMZWZ0IG9mICdhIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgJ2EgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICdhIElucHV0MV9kYXRhLnQgKiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gJ2EgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UgKEtleSkgKE91dHB1dF9kYXRhKVxuXG4gIGxldCBtZXJnZSAodDEgOiBNYWtlKEtleSkoSW5wdXQxX2RhdGEpLnQpICh0MiA6IE1ha2UoS2V5KShJbnB1dDJfZGF0YSkudCkgfmY6eyBmIH1cbiAgICA6IE1ha2UoS2V5KShPdXRwdXRfZGF0YSkudFxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0Lk0uUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNZXJnZTFcbiAgICAoS2V5IDogS2V5KVxuICAgIChJbnB1dDFfZGF0YSA6IERhdGExKVxuICAgIChJbnB1dDJfZGF0YSA6IERhdGExKVxuICAgIChPdXRwdXRfZGF0YSA6IERhdGExKSA9XG5zdHJ1Y3RcbiAgdHlwZSAoJ3MxLCAnczIsICdzMykgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgKCdzMSwgJ2EpIElucHV0MV9kYXRhLnRcbiAgICAgICAgICAgfCBgUmlnaHQgb2YgKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgfCBgQm90aCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudCAqICgnczIsICdhKSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIF1cbiAgICAgICAgLT4gKCdzMywgJ2EpIE91dHB1dF9kYXRhLnQgb3B0aW9uXG4gICAgfVxuXG4gIG1vZHVsZSBPdXRwdXQgPSBNYWtlMSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlXG4gICAgICAgICh0eXBlIHMxIHMyKVxuICAgICAgICAodDEgOiBzMSBNYWtlMShLZXkpKElucHV0MV9kYXRhKS50KVxuICAgICAgICAodDIgOiBzMiBNYWtlMShLZXkpKElucHV0Ml9kYXRhKS50KVxuICAgICAgICB+Zjp7IGYgfVxuICAgID1cbiAgICBsZXQgZiB+a2V5IG1lcmdlX3Jlc3VsdCA9XG4gICAgICBPcHRpb24ubWFwIChmIH5rZXkgbWVyZ2VfcmVzdWx0KSB+ZjooZnVuIGRhdGEgLT4gT3V0cHV0LlBhY2tlZC5UIChrZXksIGRhdGEpKVxuICAgIGluXG4gICAgTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBMZWZ0IGRhdGEpXG4gICAgICB8IGBSaWdodCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgUmlnaHQgZGF0YSlcbiAgICAgIHwgYEJvdGggKFQgKGxlZnRfa2V5LCBsZWZ0X2RhdGEpLCBUIChyaWdodF9rZXksIHJpZ2h0X2RhdGEpKSAtPlxuICAgICAgICAoKiBDYW4ndCByYWlzZSBkdWUgdG8gdGhlIGludmFyaWFudCAqKVxuICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGxlZnRfa2V5KSAoS2V5LnR5cGVfaWQgcmlnaHRfa2V5KVxuICAgICAgICBpblxuICAgICAgICBmIH5rZXk6bGVmdF9rZXkgKGBCb3RoIChsZWZ0X2RhdGEsIHJpZ2h0X2RhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVHlwZV9pZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVHlwZV9lcXVhbC5JZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHR5cGVfaWQgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBNYWtlXG4gICAgKFR5cGVfaWRfa2V5KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kKSA6XG4gICAgUyB3aXRoIHR5cGUgJ2EgZGF0YSA9ICdhIGFuZCBtb2R1bGUgS2V5IDo9IFR5cGVfaWRfa2V5KVxuXG5tb2R1bGUgS2V5ID0gVHlwZV9lcXVhbC5JZFxuXG5tb2R1bGUgV2l0aF9kZWZhdWx0ID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBrZXkgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgIDsgZGVmYXVsdCA6ICdhXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5kZWZhdWx0IH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBkZWZhdWx0OyBrZXkgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSBzZXhwX29mIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIHQgPSB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZGVmYXVsdCB9ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IChmaW5kIHQga2V5KVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGRlZmF1bHQgPSBfIH0gfmRhdGEgPSBzZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmY6dXBkYXRlID0gc2V0IHQgfmtleSB+ZGF0YToodXBkYXRlIChmaW5kIHQga2V5KSlcbmVuZFxuXG5tb2R1bGUgV2l0aF9mb2xkID0gc3RydWN0XG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBrZXkgOiAnYiBXaXRoX2RlZmF1bHQuS2V5LnRcbiAgICAgIDsgZiA6ICdiIC0+ICdhIC0+ICdiXG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIH5pbml0IH5mIH5uYW1lIHNleHBfb2YgPVxuICAgICAgeyBmOyBrZXkgPSBXaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDppbml0IH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IFdpdGhfZGVmYXVsdC5LZXkuaWQgdC5rZXlcbiAgZW5kXG5cbiAgbGV0IGZpbmQgdCB7IEtleS5rZXk7IGYgPSBfIH0gPSBXaXRoX2RlZmF1bHQuZmluZCB0IGtleVxuICBsZXQgc2V0IHQgfmtleTp7IEtleS5rZXk7IGYgPSBfIH0gfmRhdGEgPSBXaXRoX2RlZmF1bHQuc2V0IHQgfmtleSB+ZGF0YVxuICBsZXQgY2hhbmdlIHQgeyBLZXkua2V5OyBmID0gXyB9IH5mOnVwZGF0ZSA9IFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6dXBkYXRlXG5cbiAgbGV0IGFkZCB0IH5rZXk6eyBLZXkua2V5OyBmIH0gfmRhdGEgPVxuICAgIFdpdGhfZGVmYXVsdC5jaGFuZ2UgdCBrZXkgfmY6KGZ1biBhY2MgLT4gZiBhY2MgZGF0YSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGkgPSBzdHJ1Y3RcbiAgb3BlbiBXaXRoX2ZvbGRcblxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCAnYSBsaXN0KSBLZXkudFxuXG4gICAgbGV0IGNyZWF0ZSB+bmFtZSBzZXhwX29mID1cbiAgICAgIEtleS5jcmVhdGUgfmluaXQ6W10gfmY6KGZ1biB4cyB4IC0+IHggOjogeHMpIH5uYW1lIChMaXN0LnNleHBfb2ZfdCBzZXhwX29mKVxuICAgIDs7XG5cbiAgICBsZXQgaWQgPSBXaXRoX2ZvbGQuS2V5LmlkXG4gIGVuZFxuXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBhZGQgPSBhZGRcbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuZW5kXG4iLCJpbmNsdWRlIHN0cnVjdFxuICBvcGVuIFN0ZGlvXG5cbiAgbGV0IGVwcmludGYgPSBlcHJpbnRmXG4gIGxldCBwcmludGYgPSBwcmludGZcbiAgbGV0IHByaW50X3MgPSBwcmludF9zXG4gIGxldCBwcmludF9zdHJpbmcgPSBwcmludF9zdHJpbmdcbiAgbGV0IHByaW50X2VuZGxpbmUgPSBwcmludF9lbmRsaW5lXG4gIGxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxuXG4gIG1vZHVsZSBJbl9jaGFubmVsID0gSW5fY2hhbm5lbFxuZW5kXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gQmFzZS5QcmludGZcblxuICBsZXQgc3ByaW50ZiA9IHNwcmludGZcbiAgbGV0IGZhaWx3aXRoZiA9IGZhaWx3aXRoZlxuICBsZXQga3NwcmludGYgPSBrc3ByaW50ZlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFNleHBsaWIwLlNleHBfY29udlxuICBvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG4gIG9wZW4gUHB4X3N0YWJsZV93aXRuZXNzX3J1bnRpbWUuU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgbW9kdWxlIExhenkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgY29tcGFyZSA9IEJhc2UuTGF6eS5jb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgcmVjIGludmFyaWFudCB0ID1cbiAgICAgICAgICBCYXNlLkludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IFplcm8gLT4gKClcbiAgICAgICAgICAgIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgIHwgTWFueSBaZXJvIC0+IGZhaWx3aXRoIFwiTWFueSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYW55IHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcIk1heWJlIFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1heWJlIHQgLT4gaW52YXJpYW50IHRcbiAgICAgICAgICAgIHwgQ29uY2F0IFtdIHwgQ29uY2F0IFsgXyBdIC0+IGZhaWx3aXRoIFwiRmxhdHRlbiB6ZXJvIGFuZCBvbmUtZWxlbWVudCBDb25jYXRcIlxuICAgICAgICAgICAgfCBDb25jYXQgdHMgLT4gQmFzZS5MaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50XG4gICAgICAgICAgICB8IEFkX2hvYyBfIC0+ICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHQgPSBbJW9mX3NleHA6IHRdIHNleHAgaW5cbiAgICAgICAgICBpbnZhcmlhbnQgdDtcbiAgICAgICAgICB0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyB1c2FnZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW1wb3J0IGluXG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IFplcm8gLT4gXCJcIlxuICAgICAgICAgIHwgT25lIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICAgfCBNYW55IChPbmUgXyBhcyB0KSAtPiBzcHJpbnRmIFwiWyVzIC4uLl1cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IE1hbnkgdCAtPiBzcHJpbnRmIFwiWyglcykgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWF5YmUgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1heWJlIHQgLT4gc3ByaW50ZiBcIlslc11cIiAodXNhZ2UgdClcbiAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLlN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoQmFzZS5MaXN0Lm1hcCB0cyB+Zjp1c2FnZSlcbiAgICAgICAgICB8IEFkX2hvYyB1c2FnZSAtPiB1c2FnZVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IGFub25zIDogQW5vbnMuVjIudFxuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgdXNhZ2UgOiBzdHJpbmdcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICAgeyB0IHdpdGggc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZikgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExpc3QuQXNzb2MubWFwIHQuc3ViY29tbWFuZHMgfmYgfVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0IHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZnJvbV92YWwgc3ViY29tbWFuZHMgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50KSA6ICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZvcmNlIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBsZXQgYWJzX3BhdGggfmRpciBwYXRoID1cbiAgICAgIGlmIEZpbGVuYW1lX2Jhc2UuaXNfYWJzb2x1dGUgcGF0aCB0aGVuIHBhdGggZWxzZSBGaWxlbmFtZV9iYXNlLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fdjMgdCA6IFYzLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjMgKHQgOiBWMy50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIFYzLnRvX2xhdGVzdCB0b192M1xuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX3YyIHQgOiBWMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IFwiL1wiXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MiAodCA6IFYyLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2UgVjIudG9fbGF0ZXN0IHRvX3YyXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudFxuICAgICAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgICAgbGV0IG9mX2xhdGVzdCA9IEJhc2UuRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjIudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLnRvX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEudG9fbGF0ZXN0IGUpXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS50b19sYXRlc3QgKEdyb3VwX2luZm8uVjEubWFwIGcgfmY6dG9fbGF0ZXN0KSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgb2ZfbGF0ZXN0IDogTW9kZWwudCAtPiB0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSAoQmFzZV9pbmZvLlYxLm9mX2xhdGVzdCBiKVxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjEub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWZXJzaW9uZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgVjEgb2YgVjEudFxuICAgICAgICB8IFYyIG9mIFYyLnRcbiAgICAgICAgfCBWMyBvZiBWMy50ICgqIGF2YWlsYWJsZSBhdCBsZWFzdCBzaW5jZSAyMDIwLTA0ICopXG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCB2YXJpYW50cywgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBmdW5jdGlvblxuICAgICAgICB8IFYxIHQgLT4gVjEudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMiB0IC0+IFYyLnRvX2xhdGVzdCB0XG4gICAgICAgIHwgVjMgdCAtPiBWMy50b19sYXRlc3QgdFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB+dmVyc2lvbl90b191c2UgbGF0ZXN0ID1cbiAgICAgICAgbWF0Y2ggdmVyc2lvbl90b191c2Ugd2l0aFxuICAgICAgICB8IDEgLT4gVjEgKFYxLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgMiAtPiBWMiAoVjIub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAzIC0+IFYzIChWMy5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IG90aGVyIC0+XG4gICAgICAgICAgQmFzZS5FcnJvci5jcmVhdGVcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwidW5zdXBwb3J0ZWQgdmVyc2lvbl90b191c2VcIlxuICAgICAgICAgICAgb3RoZXJcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50XVxuICAgICAgICAgIHw+IEJhc2UuRXJyb3IucmFpc2VcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU3RhYmxlLkFub25zLkdyYW1tYXIuTW9kZWwudXNhZ2VcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLkFub25zLk1vZGVsLnQgPVxuICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIudFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgcGFyc2VfbmFtZSB0ID1cbiAgICBsZXQgbnVtX29jY3VycmVuY2VzLCBmbGFnX25hbWUgPSBOdW1fb2NjdXJyZW5jZXMub2ZfaGVscF9zdHJpbmcgdC5uYW1lIGluXG4gICAgbWF0Y2ggU3RyaW5nLnNwbGl0IGZsYWdfbmFtZSB+b246JyAnIHdpdGhcbiAgICB8IFsgZmxhZ19uYW1lIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgZmFsc2UsIGZsYWdfbmFtZSlcbiAgICB8IFsgZmxhZ19uYW1lOyBfYXJnX2RvYyBdIC0+IE9rIChudW1fb2NjdXJyZW5jZXMsIHRydWUsIGZsYWdfbmFtZSlcbiAgICB8IF8gLT4gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV0pXG4gIDs7XG5cbiAgKCogVXNlcnMgYXJlIGxpa2VseSB0byBjYWxsIGFsbCB0aHJlZSBvZiB0aGVzZSBmdW5jdGlvbnMsIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCByZS1wYXJzZVxuICAgICB0aGUgW25hbWVdIHNldmVyYWwgdGltZXMuIFdlIGRvbid0IGV4cGVjdCB1c2VycyBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gY2FyZSBhYm91dCB0aGVcbiAgICAgaW5lZmZpY2llbmN5LiAqKVxuICBsZXQgZmxhZ19uYW1lIHQgPVxuICAgIHBhcnNlX25hbWUgdFxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICgoXyA6IE51bV9vY2N1cnJlbmNlcy50KSwgKF8gOiBib29sKSwgZmxhZ19uYW1lKSAtPiBmbGFnX25hbWUpXG4gIDs7XG5cbiAgbGV0IG51bV9vY2N1cnJlbmNlcyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAobnVtX29jY3VycmVuY2VzLCAoXyA6IGJvb2wpLCAoXyA6IHN0cmluZykpIC0+XG4gICAgICBudW1fb2NjdXJyZW5jZXMpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID1cbiAgICBwYXJzZV9uYW1lIHRcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoKF8gOiBOdW1fb2NjdXJyZW5jZXMudCksIHJlcXVpcmVzX2FyZywgKF8gOiBzdHJpbmcpKSAtPlxuICAgICAgcmVxdWlyZXNfYXJnKVxuICA7O1xuXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBcIlstaGVscF1cIiAtPiAtMVxuICAgIHwgXCJbLWhlbHBdXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLXZlcnNpb25dXCIgLT4gLTFcbiAgICB8IFwiWy12ZXJzaW9uXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiWy1idWlsZC1pbmZvXVwiIC0+IC0xXG4gICAgfCBcIlstYnVpbGQtaW5mb11cIiwgXyAtPiAxXG4gICAgfCBfLCBcImhlbHBcIiAtPiAtMVxuICAgIHwgXCJoZWxwXCIsIF8gLT4gMVxuICAgIHwgXywgXCJ2ZXJzaW9uXCIgLT4gLTFcbiAgICB8IFwidmVyc2lvblwiLCBfIC0+IDFcbiAgICB8IF8gLT4gMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnX2hlbHBfZGlzcGxheSA9IHN0cnVjdFxuICB0eXBlIHQgPSBGbGFnX2luZm8udCBsaXN0XG5cbiAgbGV0IHNvcnQgdCA9XG4gICAgTGlzdC5zdGFibGVfc29ydCB0IH5jb21wYXJlOihmdW4gYSBiIC0+XG4gICAgICBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZSBhLkZsYWdfaW5mby5uYW1lIGIuRmxhZ19pbmZvLm5hbWUpXG4gIDs7XG5cbiAgbGV0IHdvcmRfd3JhcF9hbmRfc3RyaXAgdGV4dCB3aWR0aCA9XG4gICAgbGV0IGNodW5rcyA9IFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonXFxuJyBpblxuICAgIExpc3QuY29uY2F0X21hcCBjaHVua3MgfmY6KGZ1biB0ZXh0IC0+XG4gICAgICBsZXQgd29yZHMgPVxuICAgICAgICBTdHJpbmcuc3BsaXQgdGV4dCB+b246JyAnXG4gICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gd29yZCAtPiBub3QgKFN0cmluZy5pc19lbXB0eSB3b3JkKSlcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBMaXN0LmZvbGQgd29yZHMgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyB3b3JkIC0+XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKG1hdGNoIGFjYyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IFtdLCB3b3JkXG4gICAgICAgICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT5cbiAgICAgICAgICAgICAgICgqIGVmZmljaWVuY3kgaXMgbm90IGEgY29uY2VybiBmb3IgdGhlIHN0cmluZyBsZW5ndGhzIHdlIGV4cGVjdCAqKVxuICAgICAgICAgICAgICAgbGV0IGxpbmVfYW5kX3dvcmQgPSBsaW5lIF4gXCIgXCIgXiB3b3JkIGluXG4gICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGxpbmVfYW5kX3dvcmQgPD0gd2lkdGhcbiAgICAgICAgICAgICAgIHRoZW4gbGluZXMsIGxpbmVfYW5kX3dvcmRcbiAgICAgICAgICAgICAgIGVsc2UgbGluZSA6OiBsaW5lcywgd29yZCkpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAobGluZXMsIGxpbmUpIC0+IExpc3QucmV2IChsaW5lIDo6IGxpbmVzKSlcbiAgOztcblxuICBtb2R1bGUgRGlzcGxheSA6IHNpZ1xuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbnVtX2NvbHMgPSA4MFxuICAgIGxldCBzcGFjZXNfc3RyaW5nIHdpZHRoID0gU3RyaW5nLm1ha2Ugd2lkdGggJyAnXG5cbiAgICBsZXQgcGFkX3NwYWNlc190b19zdWZmaXggeCB+d2lkdGggPVxuICAgICAgbGV0IHNsYWNrID0gd2lkdGggLSBTdHJpbmcubGVuZ3RoIHggaW5cbiAgICAgIHggXiBzcGFjZXNfc3RyaW5nIHNsYWNrXG4gICAgOztcblxuICAgIGxldCBpbmRlbnRhdGlvbiA9IFwiICBcIlxuICAgIGxldCBpbmRlbnRfYW5kX25ld2xpbmUgeCA9IExpc3QuY29uY2F0IFsgWyBpbmRlbnRhdGlvbiBdOyB4OyBbIFwiXFxuXCIgXSBdXG4gICAgbGV0IHNwYWNpbmdfZG90ID0gXCIuIFwiXG5cbiAgICBsZXQgZG90X2luZGVudGF0aW9uX29mZnNldCA9XG4gICAgICAyN1xuICAgIDs7XG5cbiAgICBsZXQgZG9jdW1lbnRhdGlvbl9zdGFydF9jb2x1bW4gPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfd2lkdGggPSBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtblxuICAgIGxldCBsaHNfcGFkX3dpZHRoID0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb25cbiAgICBsZXQgbGhzX3BhZCA9IHNwYWNlc19zdHJpbmcgbGhzX3BhZF93aWR0aFxuXG4gICAgbGV0IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlID1cbiAgICAgIExpc3QubWFwIH5mOihmdW4gdiAtPiBpbmRlbnRfYW5kX25ld2xpbmUgWyBsaHNfcGFkOyB2IF0pXG4gICAgOztcblxuICAgIGxldCByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgZG9jdW1lbnRhdGlvbiA9XG4gICAgICBsZXQgZmxhZ19vbl9pdHNfb3duX2xpbmUgPVxuICAgICAgICBsZXQgZmxhZ193aWR0aCA9XG4gICAgICAgICAgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbiArIFN0cmluZy5sZW5ndGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICBpblxuICAgICAgICBpZiBmbGFnX3dpZHRoID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIHNwYWNpbmdfZG90XG4gICAgICAgIHRoZW4gaW5kZW50X2FuZF9uZXdsaW5lIFsgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbmRlbnRfYW5kX25ld2xpbmVcbiAgICAgICAgICAgIFsgcGFkX3NwYWNlc190b19zdWZmaXggfndpZHRoOmRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgZmxhZ19uYW1lX3dpdGhfYWxpYXNlc1xuICAgICAgICAgICAgOyBzcGFjaW5nX2RvdFxuICAgICAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGxldCB3cmFwcGVkX2RvY3VtZW50YXRpb24gPVxuICAgICAgICB3b3JkX3dyYXBfYW5kX3N0cmlwXG4gICAgICAgICAgZG9jdW1lbnRhdGlvblxuICAgICAgICAgIChudW1fY29scyAtIGxoc193aWR0aCAtIFN0cmluZy5sZW5ndGggaW5kZW50YXRpb24pXG4gICAgICBpblxuICAgICAgbWF0Y2ggd3JhcHBlZF9kb2N1bWVudGF0aW9uIHdpdGhcbiAgICAgIHwgW10gLT4gWyBmbGFnX29uX2l0c19vd25fbGluZSBdXG4gICAgICB8IGRvY193cmFwcGVkX2ZpcnN0X2xpbmUgOjogZG9jX3dyYXBwZWRfcmVzdF9saW5lcyAtPlxuICAgICAgICBsZXQgd3JhcHBlZF9kb2NfbGluZXMgPSBsaHNfcGFkX2FuZF9uZXdsaW5lX3Rlcm1pbmF0ZSBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIGluXG4gICAgICAgIGxldCBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIHggPVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCB4XG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICA7IGRvY193cmFwcGVkX2ZpcnN0X2xpbmVcbiAgICAgICAgICAgIF1cbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID49IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZsYWdfb25faXRzX293bl9saW5lXG4gICAgICAgICAgOjogcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBcIlwiXG4gICAgICAgICAgOjogd3JhcHBlZF9kb2NfbGluZXNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgTGlzdC5jb25jYXRfbWFwIHQgfmY6KGZ1biB0IC0+XG4gICAgICAgIGxldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzID1cbiAgICAgICAgICBsZXQgZmxhZyA9IHQuRmxhZ19pbmZvLm5hbWUgaW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChmbGFnIDo6IHQuYWxpYXNlcylcbiAgICAgICAgaW5cbiAgICAgICAgcm93cyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIHQuZG9jIHw+IExpc3QuY29uY2F0KVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IERpc3BsYXkudG9fc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFN1YmNvbW1hbmRcbiAgICB8IEZsYWdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1YmNvbW1hbmQgLT4gXCJzdWJjb21tYW5kXCJcbiAgICB8IEZsYWcgLT4gXCJmbGFnXCJcbiAgOztcbmVuZFxuXG5sZXQgbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGUgPVxuICBsZXQgaXNfZGFzaCA9IENoYXIuZXF1YWwgJy0nIGluXG4gIGxldCBhbGlzdCA9XG4gICAgKCogbm8gcGFydGlhbCBtYXRjaGVzIHVubGVzcyBzb21lIG5vbi1kYXNoIGNoYXIgaXMgcHJlc2VudCAqKVxuICAgIGlmIFN0cmluZy5mb3JfYWxsIHByZWZpeCB+Zjppc19kYXNoXG4gICAgdGhlbiBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrZXksIChkYXRhLCBfKSkgLT4ga2V5LCAoZGF0YSwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpKVxuICAgIGVsc2UgYWxpc3RcbiAgaW5cbiAgbWF0Y2hcbiAgICBMaXN0LmZpbHRlciBhbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgIHwga2V5LCAoXywgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQpIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4XG4gICAgICB8IGtleSwgKF8sIGBQcmVmaXgpIC0+IFN0cmluZy5pc19wcmVmaXgga2V5IH5wcmVmaXgpXG4gIHdpdGhcbiAgfCBbIChrZXksIChkYXRhLCBfbmFtZV9tYXRjaGluZykpIF0gLT4gT2sgKGtleSwgZGF0YSlcbiAgfCBbXSAtPiBFcnJvciAoc3ByaW50ZiAhXCJ1bmtub3duICV7S2V5X3R5cGV9ICVzXCIga2V5X3R5cGUgcHJlZml4KVxuICB8IG1hdGNoZXMgLT5cbiAgICAobWF0Y2ggTGlzdC5maW5kIG1hdGNoZXMgfmY6KGZ1biAoa2V5LCBfKSAtPiBTdHJpbmcuKCA9ICkga2V5IHByZWZpeCkgd2l0aFxuICAgICB8IFNvbWUgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgLT4gT2sgKGtleSwgZGF0YSlcbiAgICAgfCBOb25lIC0+XG4gICAgICAgbGV0IG1hdGNoaW5nX2tleXMgPSBMaXN0Lm1hcCB+Zjpmc3QgbWF0Y2hlcyBpblxuICAgICAgIEVycm9yXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIVwiJXtLZXlfdHlwZX0gJXMgaXMgYW4gYW1iaWd1b3VzIHByZWZpeDogJXNcIlxuICAgICAgICAgICAga2V5X3R5cGVcbiAgICAgICAgICAgIHByZWZpeFxuICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgbWF0Y2hpbmdfa2V5cykpKVxuOztcblxubW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQmFzZV9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgYW5vbnMgOiBBbm9ucy50XG4gICAgOyBmbGFncyA6IEZsYWdfaW5mby50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9mbGFnIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IGZhbHNlIC0+IEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJGbGFncyBtdXN0IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XSlcbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCViaW5kLk9yX2Vycm9yIGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCB0LmZsYWdzIH5mOihmdW4gKGZsYWdfaW5mbyA6IEZsYWdfaW5mby50KSAtPlxuICAgICAgICAgIGxldCViaW5kLk9yX2Vycm9yIGZsYWdfbmFtZSA9IEZsYWdfaW5mby5mbGFnX25hbWUgZmxhZ19pbmZvIGluXG4gICAgICAgICAgT2tcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoZmxhZ19uYW1lIDo6IGZsYWdfaW5mby5hbGlhc2VzKSB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgICAgICAga2V5LCAoZmxhZ19pbmZvLCBgUHJlZml4KSkpKVxuICAgICAgICB8PiBPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgKExpc3QuY29uY2F0IGNob2ljZXMpIHByZWZpeCBGbGFnXG4gICAgICB8PiBSZXN1bHQubWFwX2Vycm9yIH5mOkVycm9yLm9mX3N0cmluZ1xuICAgICAgfD4gT3JfZXJyb3IubWFwIH5mOnNuZFxuICA7O1xuXG4gIGxldCBnZXRfdXNhZ2UgdCA9XG4gICAgbWF0Y2ggdC5hbm9ucyB3aXRoXG4gICAgfCBVc2FnZSB1c2FnZSAtPiB1c2FnZVxuICAgIHwgR3JhbW1hciBncmFtbWFyIC0+IEFub25zLkdyYW1tYXIudXNhZ2UgZ3JhbW1hclxuICA7O1xuZW5kXG5cbm1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QudCBMYXp5LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cblxuICBsZXQgZmluZF9zdWJjb21tYW5kIHQgcHJlZml4ID1cbiAgICBtYXRjaCBTdHJpbmcuaXNfcHJlZml4IHByZWZpeCB+cHJlZml4OlwiLVwiIHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgIEVycm9yIChFcnJvci5jcmVhdGVfcyBbJW1lc3NhZ2UgXCJTdWJjb21tYW5kcyBtdXN0IG5vdCBiZWdpbiB3aXRoICctJ1wiIHByZWZpeF0pXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5lbmRcblxubW9kdWxlIEZ1bGx5X2ZvcmNlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRnVsbHlfZm9yY2VkLk1vZGVsLnQgPVxuICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50ICogdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBleHBhbmRlZF9zdWJjb21tYW5kcyB0ID1cbiAgICBsZXQgcmVjIGV4cGFuZCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4ZWMgKF8sIHQpIC0+IGV4cGFuZCB0XG4gICAgICB8IEJhc2ljIF8gLT4gWyBbXSBdXG4gICAgICB8IEdyb3VwIHsgc3ViY29tbWFuZHM7IF8gfSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKExhenkuZm9yY2Ugc3ViY29tbWFuZHMpIH5mOihmdW4gKG5hbWUsIHQpIC0+XG4gICAgICAgICAgTGlzdC5tYXAgfmY6KGZ1biBwYXRoIC0+IG5hbWUgOjogcGF0aCkgKGV4cGFuZCB0KSlcbiAgICBpblxuICAgICgqIFJldmVyc2luZyBzbyB0aGF0IHRoZSBjb21tYW5kcyBzaG93IHVwIGluIHRoZSBzYW1lIG9yZGVyIGFzIGhlbHAgaXMgb3V0cHV0ICopXG4gICAgTGlzdC5yZXYgKGV4cGFuZCB0KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuU2V4cGFibGUuTW9kZWwudCA9XG4gICAgfCBCYXNlIG9mIEJhc2VfaW5mby50XG4gICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICAgIHwgRXhlYyBvZiBFeGVjX2luZm8udFxuICAgIHwgTGF6eSBvZiB0IExhenkudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBleHRyYWN0aW9uX3ZhciA9IEVudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIlxub3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbW1hbmRfaW50ZlxubW9kdWxlIFNoYXBlID0gU2hhcGVcblxuKCogaW4gb3JkZXIgdG8gZGVmaW5lIGV4cGVjdCB0ZXN0cywgd2Ugd2FudCB0byByYWlzZSByYXRoZXIgdGhhbiBleGl0IGlmIHRoZSBjb2RlIGlzXG4gICBydW5uaW5nIGluIHRoZSB0ZXN0IHJ1bm5lciBwcm9jZXNzICopXG5sZXQgcmFpc2VfaW5zdGVhZF9vZl9leGl0ID1cbiAgbWF0Y2ggUHB4X2lubGluZV90ZXN0X2xpYi50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIFN0ZGxpYi5leGl0IHN0YXR1c1xuICA7O1xuXG4gIG1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0ga3NwcmludGYgKGZ1biBtc2cgKCkgLT4gcmFpc2UgKEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnKSkgZm10XG5sZXQgaGVscF9zY3JlZW5fY29tcGFyZSA9IFNoYXBlLlByaXZhdGUuaGVscF9zY3JlZW5fY29tcGFyZVxuXG4oKiB1bml2ZXJzYWwgbWFwcyBhcmUgdXNlZCB0byBwYXNzIGFyb3VuZCB2YWx1ZXMgYmV0d2VlbiBkaWZmZXJlbnQgYml0c1xuICAgb2YgY29tbWFuZCBsaW5lIHBhcnNpbmcgY29kZSB3aXRob3V0IGhhdmluZyBhIGh1Z2UgaW1wYWN0IG9uIHRoZVxuICAgdHlwZXMgaW52b2x2ZWRcblxuICAgMS4gcGFzc2luZyB2YWx1ZXMgZnJvbSBwYXJzZWQgYXJncyB0byBjb21tYW5kLWxpbmUgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uc1xuICAgMi4gcGFzc2luZyBzcGVjaWFsIHZhbHVlcyB0byBhIGJhc2UgY29tbWFuZHMgdGhhdCByZXF1ZXN0IHRoZW0gaW4gdGhlaXIgc3BlY1xuICogZXhwYW5kZWQgc3ViY29tbWFuZCBwYXRoXG4gKiBhcmdzIHBhc3NlZCB0byB0aGUgYmFzZSBjb21tYW5kXG4gKiBoZWxwIHRleHQgZm9yIHRoZSBiYXNlIGNvbW1hbmRcbiopXG5tb2R1bGUgRW52ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pdl9tYXBcblxuICBsZXQga2V5X2NyZWF0ZSBuYW1lID0gVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZSBTZXhwbGliLkNvbnYuc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgUGFyc2luZ19vdXRjb21lIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgdmFsIHJldHVybl9ub19hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCByZXR1cm5fd2l0aF9hcmcgOiAnYSAtPiAnYSB0XG4gIHZhbCBlcnJvciA6IGhhc19hcmc6Ym9vbCAtPiBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSAtPiAnYSB0XG4gIHZhbCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyA6ICdhIHQgLT4gJ2EgdCB0XG5cbiAgdmFsIGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgOiAgKCdhLCBbIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG9mIEVycm9yLnQgXSkgUmVzdWx0LnQgdFxuICAgIC0+ICdhIHRcblxuICBpbmNsdWRlIEFwcGxpY2F0aXZlLlMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyByZXN1bHQgOiAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudFxuICAgIDsgaGFzX2FyZyA6IGJvb2xcbiAgICB9XG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgeyByZXN1bHQgPVxuICAgICAgICBSZXN1bHQuY29tYmluZVxuICAgICAgICAgIGYucmVzdWx0XG4gICAgICAgICAgeC5yZXN1bHRcbiAgICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICAgIH5lcnI6KGZ1biAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyXzEpIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBfZXJyXzIpIC0+XG4gICAgICAgICAgICBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnJfMSlcbiAgICA7IGhhc19hcmcgPSBmLmhhc19hcmcgfHwgeC5oYXNfYXJnXG4gICAgfVxuICA7O1xuXG4gIGxldCByZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID0geyByZXN1bHQgPSBPayB0OyBoYXNfYXJnID0gdC5oYXNfYXJnIH1cblxuICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgeyByZXN1bHQgPSBSZXN1bHQuam9pbiB0LnJlc3VsdDsgaGFzX2FyZyA9IHQuaGFzX2FyZyB9XG4gIDs7XG5cbiAgbGV0IG1hcCB7IHJlc3VsdDsgaGFzX2FyZyB9IH5mID0geyByZXN1bHQgPSBSZXN1bHQubWFwIHJlc3VsdCB+ZjsgaGFzX2FyZyB9XG4gIGxldCByZXR1cm5fbm9fYXJnIHYgPSB7IHJlc3VsdCA9IE9rIHY7IGhhc19hcmcgPSBmYWxzZSB9XG4gIGxldCByZXR1cm5fd2l0aF9hcmcgdiA9IHsgcmVzdWx0ID0gT2sgdjsgaGFzX2FyZyA9IHRydWUgfVxuICBsZXQgZXJyb3Igfmhhc19hcmcgZXJyID0geyByZXN1bHQgPSBFcnJvciBlcnI7IGhhc19hcmcgfVxuXG4gIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuX25vX2FyZ1xuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuXG4gIG1vZHVsZSBGb3JfZXNjYXBlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRW52LnQgLT4gcGFydDpzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29tcGxldGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IEF1dG9fY29tcGxldGUudCBvcHRpb25cblxuICBtb2R1bGUgRm9yX2VzY2FwZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEF1dG9fY29tcGxldGUuRm9yX2VzY2FwZS50IG9wdGlvblxuICBlbmRcblxuICBsZXQgcnVuX2FuZF9leGl0IHQgZW52IH5wYXJ0IDogTm90aGluZy50ID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICdhIE9yX2Vycm9yLnRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIE1hcC5NKFN0cmluZykudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIHZhbCBhdXRvX2NvbXBsZXRlIDogXyB0IC0+IEF1dG9fY29tcGxldGUudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IHQucGFyc2UgcylcbiAgbGV0IGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgcGFyc2UgfmV4dHJhX2RvYyA9IHsgcGFyc2U7IGtleTsgY29tcGxldGU7IGV4dHJhX2RvYyB9XG5cbiAgbGV0IGNyZWF0ZSA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgPVxuICAgIGNyZWF0ZScgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nIH5leHRyYV9kb2M6KExhenkuZnJvbV92YWwgTm9uZSlcbiAgOztcblxuICBsZXQgbWFwID9rZXkgdCB+ZiA9IHsgdCB3aXRoIGtleTsgcGFyc2UgPSAoZnVuIHMgLT4gZiAodC5wYXJzZSBzKSkgfVxuXG4gIGxldCBvZl9sYXp5ID9rZXkgdCA9XG4gICAgbGV0IHBhcnNlIHN0ciA9IChmb3JjZSB0KS5wYXJzZSBzdHIgaW5cbiAgICBsZXQgY29tcGxldGUgZW52IH5wYXJ0ID1cbiAgICAgIG1hdGNoIChmb3JjZSB0KS5jb21wbGV0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogU2VlIFtydW5fYW5kX2V4aXRdIC0gbm8gY29tcGxldGlvbnMgaXMgZXF1aXZhbGVudCB0byBub3QgaGF2aW5nIGFcbiAgICAgICAgICAgW0NvbXBsZXRlXS4gKilcbiAgICAgICAgW11cbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICBpblxuICAgIGxldCBleHRyYV9kb2MgPSBMYXp5LmJpbmQgdCB+ZjpleHRyYV9kb2MgaW5cbiAgICB7IHBhcnNlOyBjb21wbGV0ZSA9IFNvbWUgY29tcGxldGU7IGtleTsgZXh0cmFfZG9jIH1cbiAgOztcblxuICBsZXQgc3RyaW5nID0gY3JlYXRlIEZuLmlkXG4gIGxldCBpbnQgPSBjcmVhdGUgSW50Lm9mX3N0cmluZ1xuICBsZXQgY2hhciA9IGNyZWF0ZSBDaGFyLm9mX3N0cmluZ1xuICBsZXQgZmxvYXQgPSBjcmVhdGUgRmxvYXQub2Zfc3RyaW5nXG4gIGxldCBzZXhwID0gY3JlYXRlIFBhcnNleHAuU2luZ2xlLnBhcnNlX3N0cmluZ19leG5cblxuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID1cbiAgICBjcmVhdGUgP2NvbXBsZXRlIChmdW4gcyAtPiBvZl9zZXhwIChQYXJzZXhwLlNpbmdsZS5wYXJzZV9zdHJpbmdfZXhuIHMpKVxuICA7O1xuXG4gIGxldCBhc3NvY2lhdGl2ZVxuICAgICAgICA/KGFjY2VwdF91bmlxdWVfcHJlZml4ZXMgPSB0cnVlKVxuICAgICAgICA/KGxpc3RfdmFsdWVzX2luX2hlbHAgPSB0cnVlKVxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgICBhbGlzdFxuICAgID1cbiAgICBsZXQgb3BlbiBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgICB2YWwgaXNfcHJlZml4IDogc3RyaW5nIC0+IHByZWZpeDpzdHJpbmcgLT4gYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgVCA6XG4gICAgICAgICAgICB7IGNtcCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAgICAgICAgIDsgbWFwIDogKHN0cmluZywgJ2EsICdjbXApIE1hcC50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAtPiAnYSB0XG4gICAgZW5kIGluXG4gICAgbGV0IChUIHsgY21wID0gKG1vZHVsZSBTKTsgbWFwIH0pID1cbiAgICAgIGxldCBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5XG4gICAgICAgICAgICAodHlwZSBjbXApXG4gICAgICAgICAgICAobW9kdWxlIFMgOiBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgICAgICBhbGlzdFxuICAgICAgICA9XG4gICAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFMpIGFsaXN0IHdpdGhcbiAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICB8IGBEdXBsaWNhdGVfa2V5IChfIDogUy50KSAtPlxuICAgICAgICAgIGxldCBkdXBsaWNhdGVfa2V5cyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChrLCAoXyA6ICdhKSkgLT4gaywgaylcbiAgICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIFMpXG4gICAgICAgICAgICB8PiBNYXAuZmlsdGVyIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIHwgWyBfIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiB0cnVlKVxuICAgICAgICAgICAgfD4gTWFwLmRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkNvbW1hbmQuU3BlYy5BcmdfdHlwZS5vZl9hbGlzdF9leG5cIiAoZHVwbGljYXRlX2tleXMgOiBzdHJpbmcgbGlzdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICBsZXQgbWFrZSBjbXAgPSBUIHsgY21wOyBtYXAgPSBtYWtlX21hcF9yYWlzZV9kdXBsaWNhdGVfa2V5IGNtcCBhbGlzdCB9IGluXG4gICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIG1ha2UgKG1vZHVsZSBTdHJpbmcpIGVsc2UgbWFrZSAobW9kdWxlIFN0cmluZy5DYXNlbGVzcylcbiAgICBpblxuICAgIGxldCBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXggPVxuICAgICAgbWF0Y2ggYXV0b19jb21wbGV0ZSB3aXRoXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgdW5pdl9tYXAgfnBhcnQ6cHJlZml4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChNYXAudG9fYWxpc3QgbWFwKSB+ZjooZnVuIChuYW1lLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeCB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAoKiBCYXNoIGNvbXBsZXRpb24gd2lsbCBub3QgYWNjZXB0IFtGb29dIGFzIGEgY29tcGxldGlvbiBmb3IgW2ZdLiBTbyB3ZSBuZWVkXG4gICAgICAgICAgICAgICB0byBtYXRjaCB0aGUgY2FwaXRhbGl6YXRpb24gZ2l2ZW4uICopXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1Ym8gbmFtZSB+cG9zOihTdHJpbmcubGVuZ3RoIHByZWZpeCkgaW5cbiAgICAgICAgICAgIGxldCBuYW1lID0gcHJlZml4IF4gc3VmZml4IGluXG4gICAgICAgICAgICBTb21lIG5hbWUpXG4gICAgaW5cbiAgICBsZXQgZmluZCBhcmcgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgbWFwIGFyZyB3aXRoXG4gICAgICB8IFNvbWUgXyBhcyBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgTWFwLnRvX2FsaXN0IG1hcFxuICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIChuYW1lLCBfKSAtPiBTLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6YXJnKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIChfc2luZ2xldG9uX2tleSwgdikgXSAtPiBTb21lIHZcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPlxuICAgICAgICAgICAgICAoKiBJbiB0aGUgdHdvLW9yLW1vcmUgY2FzZSB3ZSBjb3VsZCBwcm92aWRlIGZpbHRlcmVkIGhlbHAgdGV4dCwgYnV0IGl0J3NcbiAgICAgICAgICAgICAgICAgbW9yZSBnZW5lcmFsbHkgdXNlZnVsIHRvIGxpc3QgYWxsIHRoZSBvcHRpb25zLCB3aGljaCB3ZSBkbyBiZWxvdy4gKilcbiAgICAgICAgICAgICAgTm9uZSkpXG4gICAgaW5cbiAgICBjcmVhdGUnXG4gICAgICB+ZXh0cmFfZG9jOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChpZiBsaXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChNYXAua2V5cyBtYXApIGluXG4gICAgICAgICAgICAgU29tZSBbJXN0cmluZyBcIihjYW4gYmU6ICV7dmFsdWVzfSlcIl0pXG4gICAgICAgICAgIGVsc2UgTm9uZSkpXG4gICAgICA/a2V5XG4gICAgICB+Y29tcGxldGVcbiAgICAgIChmdW4gYXJnIC0+XG4gICAgICAgICBtYXRjaCBmaW5kIGFyZyB3aXRoXG4gICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHZhbGlkX2FyZ3VtZW50c19leHRyYSA9XG4gICAgICAgICAgICAgaWYgY2FzZV9zZW5zaXRpdmUgdGhlbiBcIlwiIGVsc2UgXCIgKGNhc2UgaW5zZW5zaXRpdmUpXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgXCJ2YWxpZCBhcmd1bWVudHMlczogeyVzfVwiXG4gICAgICAgICAgICAgdmFsaWRfYXJndW1lbnRzX2V4dHJhXG4gICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTWFwLmtleXMgbWFwKSlcbiAgICAgICAgICAgICAoKSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID8oY2FzZV9zZW5zaXRpdmUgPSB0cnVlKVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGFzc29jaWF0aXZlXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICB+Y2FzZV9zZW5zaXRpdmVcbiAgICAgIGFsaXN0XG4gIDs7XG5cbiAgbGV0IG9mX21hcFxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICBtYXBcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChNYXAudG9fYWxpc3QgbWFwKVxuICA7O1xuXG4gIGxldCBlbnVtZXJhdGVkXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIChtb2R1bGUgRSA6IEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIG9mX2FsaXN0X2V4blxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobGV0JW1hcC5MaXN0IHQgPSBFLmFsbCBpblxuICAgICAgIEUudG9fc3RyaW5nIHQsIHQpXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgPVxuICAgIGVudW1lcmF0ZWRcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBFXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgWyVzZXhwICh0IDogRS50KV1cbiAgICAgIGVuZClcbiAgOztcblxuICBsZXQgYm9vbCA9IGVudW1lcmF0ZWQgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2UgKG1vZHVsZSBCb29sKVxuXG4gIGxldCBjb21tYV9zZXBhcmF0ZWRcbiAgICAgICAgPyhhbGxvd19lbXB0eSA9IGZhbHNlKVxuICAgICAgICA/a2V5XG4gICAgICAgID8oc3RyaXBfd2hpdGVzcGFjZSA9IGZhbHNlKVxuICAgICAgICA/KHVuaXF1ZV92YWx1ZXMgPSBmYWxzZSlcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgc3RyaXAgPSBpZiBzdHJpcF93aGl0ZXNwYWNlIHRoZW4gZnVuIHN0ciAtPiBTdHJpbmcuc3RyaXAgc3RyIGVsc2UgRm4uaWQgaW5cbiAgICBsZXQgY29tcGxldGUgPVxuICAgICAgT3B0aW9uLm1hcCB0LmNvbXBsZXRlIH5mOihmdW4gY29tcGxldGVfZWx0IGVudiB+cGFydCAtPlxuICAgICAgICBsZXQgcHJlZml4ZXMsIHN1ZmZpeCA9XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHBhcnQgfm9uOicsJyB8PiBMaXN0LnJldiB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBbXSwgcGFydFxuICAgICAgICAgIHwgaGQgOjogdGwgLT4gTGlzdC5yZXYgdGwsIGhkXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpc19hbGxvd2VkID1cbiAgICAgICAgICBpZiBub3QgdW5pcXVlX3ZhbHVlc1xuICAgICAgICAgIHRoZW4gZnVuIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgc2Vlbl9hbHJlYWR5ID1cbiAgICAgICAgICAgICAgcHJlZml4ZXMgfD4gTGlzdC5tYXAgfmY6c3RyaXAgfD4gU2V0Lm9mX2xpc3QgKG1vZHVsZSBTdHJpbmcpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZnVuIGNob2ljZSAtPiBub3QgKFNldC5tZW0gc2Vlbl9hbHJlYWR5IChzdHJpcCBjaG9pY2UpKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZpbHRlciAoY29tcGxldGVfZWx0IGVudiB+cGFydDpzdWZmaXgpIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgICAgIChub3QgKFN0cmluZy5tZW0gY2hvaWNlICcsJykpICYmIGlzX2FsbG93ZWQgY2hvaWNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICAoKiBJZiB0aGVyZSBpcyBleGFjdGx5IG9uZSBjaG9pY2UgdG8gYXV0by1jb21wbGV0ZSwgYWRkIGEgc2Vjb25kIGNob2ljZSB3aXRoXG4gICAgICAgICAgICAgYSB0cmFpbGluZyBjb21tYSBzbyB0aGF0IGF1dG8tY29tcGxldGlvbiB3aWxsIGdvIHRvIHRoZSBlbmQgYnV0IGJhc2hcbiAgICAgICAgICAgICB3b24ndCBhZGQgYSBzcGFjZS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjaG9pY2VzLCBvciBhIHNpbmdsZSBjaG9pY2VcbiAgICAgICAgICAgICB0aGF0IG11c3QgYmUgZmluYWwsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYWRkIGEgZHVtbXkgb3B0aW9uLiAqKVxuICAgICAgICAgIHwgWyBjaG9pY2UgXSAtPiBbIGNob2ljZTsgY2hvaWNlIF4gXCIsXCIgXVxuICAgICAgICAgIHwgY2hvaWNlcyAtPiBjaG9pY2VzXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIGNob2ljZXMgfmY6KGZ1biBjaG9pY2UgLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIGxldCBhdXRvX2NvbXBsZXRlIHQgPVxuICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgIHwgU29tZSBmIC0+IGZcbiAgICB8IE5vbmUgLT4gZnVuIF8gfnBhcnQ6XyAtPiBbXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGbGFnID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudCA9XG4gICAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCB0b19oZWxwX3N0cmluZyA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ1xuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSBfIH0gZmxhZ19uYW1lID1cbiAgICAgIHRvX2hlbHBfc3RyaW5nIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9IH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbGV0IGFueSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X2xlYXN0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSBmYWxzZSB9XG4gICAgbGV0IGF0X21vc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IGZhbHNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgICBsZXQgZXhhY3RseV9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gIGVuZFxuXG4gIHR5cGUgYWN0aW9uID1cbiAgICB8IE5vX2FyZyBvZiAoRW52LnQgLT4gRW52LnQpXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IG9mIChFbnYudCAtPiBzdHJpbmcpXG4gICAgfCBBcmcgb2YgKEVudi50IC0+IHN0cmluZyAtPiBFbnYudCkgKiBDb21wbGV0ZXIudFxuICAgIHwgUmVzdCBvZiAoRW52LnQgLT4gc3RyaW5nIGxpc3QgLT4gRW52LnQpICogQ29tcGxldGVyLkZvcl9lc2NhcGUudFxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoXG4gICAgICAgIE1hcC5vZl9hbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKVxuICAgICAgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBmbGFnIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCBmbGFncyB+ZjooZnVuIGZsYWcgLT4gZmxhZy5uYW1lIDo6IGZsYWcuYWxpYXNlcylcbiAgICAgICAgfD4gTGlzdC5maW5kX2FfZHVwIH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXVxuICAgICAgICB8PiBPcHRpb24uaXRlciB+ZjooZnVuIHggLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3Mgb3IgYWxpYXNlcyBuYW1lZCAlc1wiIHggKCkpO1xuICAgICAgICBtYXBcbiAgICA7O1xuICBlbmRcblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB7IGFjdGlvbiA6IGFjdGlvblxuICAgIDsgcmVhZCA6IEVudi50IC0+ICdhIFBhcnNpbmdfb3V0Y29tZS50XG4gICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgIDsgZXh0cmFfZG9jIDogc3RyaW5nIG9wdGlvbiBMYXp5LnRcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gc3RyaW5nIC0+ICdhIHN0YXRlXG5cbiAgbGV0IGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIHsgcmVhZFxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBhY3Rpb24gPVxuICAgICAgICAobGV0IHVwZGF0ZSBlbnYgYXJnID1cbiAgICAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYXJnIHdpdGhcbiAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVMuXFxuJXNcIlxuICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgYXJnXG4gICAgICAgICAgICAgICAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIHwgT2sgYXJnIC0+XG4gICAgICAgICAgICAgbGV0IGVudiA9IHdyaXRlIGVudiBhcmcgaW5cbiAgICAgICAgICAgICAobWF0Y2ggQXJnX3R5cGUua2V5IGFyZ190eXBlIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGVudlxuICAgICAgICAgICAgICB8IFNvbWUga2V5IC0+IEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6YXJnKVxuICAgICAgICAgaW5cbiAgICAgICAgIEFyZyAodXBkYXRlLCBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSkpXG4gICAgOyBleHRyYV9kb2MgPSBBcmdfdHlwZS5leHRyYV9kb2MgYXJnX3R5cGVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG1hcF9mbGFnICh0IDogXyB0KSB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uXG4gICAgOyByZWFkID0gKGZ1biBlbnYgLT4gUGFyc2luZ19vdXRjb21lLm1hcCAocmVhZCBlbnYpIH5mKVxuICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgOyBleHRyYV9kb2NcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdyaXRlX29wdGlvbiBuYW1lIGtleSBlbnYgYXJnID1cbiAgICBFbnYudXBkYXRlIGVudiBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYXJnXG4gICAgICB8IFNvbWUgXyAtPiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKCkpXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkX3ZhbHVlID9kZWZhdWx0IGFyZ190eXBlIG5hbWUgbnVtX29jY3VycmVuY2VzID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiBfXSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBkZWZhdWx0IHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgbnVtX29jY3VycmVuY2VzXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVkIGFyZ190eXBlIG5hbWUgPSByZXF1aXJlZF92YWx1ZSBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5leGFjdGx5X29uY2VcblxuICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0IGRlZmF1bHQgYXJnX3R5cGUgbmFtZSA9XG4gICAgcmVxdWlyZWRfdmFsdWUgfmRlZmF1bHQgYXJnX3R5cGUgbmFtZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9wdGlvbmFsIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIE5vbmVcbiAgICAgIHwgU29tZSBfIGFzIHZhbHVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdmFsdWVcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICA7O1xuXG4gIGxldCBub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQgfmtleV92YWx1ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHVuaXRdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5tZW0gZW52IGtleSB3aXRoXG4gICAgICB8IHRydWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB0cnVlXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIGlmIGlzX3JlcXVpcmVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKVxuICAgICAgICBlbHNlIFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52ID1cbiAgICAgIGlmIEVudi5tZW0gZW52IGtleVxuICAgICAgdGhlbiBkaWUgXCJmbGFnICVzIHBhc3NlZCBtb3JlIHRoYW4gb25jZVwiIG5hbWUgKClcbiAgICAgIGVsc2UgRW52LnNldCBlbnYgfmtleSB+ZGF0YTooKVxuICAgIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgPVxuICAgICAgbGV0IGVudiA9XG4gICAgICAgIE9wdGlvbi5mb2xkIGtleV92YWx1ZSB+aW5pdDplbnYgfmY6KGZ1biBlbnYgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgICAgRW52LnNldF93aXRoX2RlZmF1bHQgZW52IH5rZXkgfmRhdGE6dmFsdWUpXG4gICAgICBpblxuICAgICAgd3JpdGUgZW52XG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IC0+XG4gICAgICAgICAgbGV0IGVudiA9IGFjdGlvbiBlbnYgaW5cbiAgICAgICAgICBmICgpO1xuICAgICAgICAgIGVudlxuICAgIGluXG4gICAgeyByZWFkXG4gICAgOyBhY3Rpb24gPSBOb19hcmcgYWN0aW9uXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPVxuICAgICAgICAoaWYgaXNfcmVxdWlyZWRcbiAgICAgICAgIHRoZW4gTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuICAgICAgICAgZWxzZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBub19hcmcgbmFtZSA9XG4gICAgbm9fYXJnX2dlbmVyYWwgbmFtZSB+aXNfcmVxdWlyZWQ6ZmFsc2UgfmtleV92YWx1ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfcmVxdWlyZWQgdiBuYW1lID1cbiAgICBtYXBfZmxhZ1xuICAgICAgKG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZDp0cnVlIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUpXG4gICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+IHZcbiAgICAgICAgfCBmYWxzZSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBuYW1lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19yZWdpc3RlciB+a2V5IH52YWx1ZSBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbFxuICAgICAgbmFtZVxuICAgICAgfmlzX3JlcXVpcmVkOmZhbHNlXG4gICAgICB+a2V5X3ZhbHVlOihTb21lIChrZXksIHZhbHVlKSlcbiAgICAgIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBbXSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBbXVxuICAgICAgfCBfIDo6IF8gYXMgdmFsdWVfbGlzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlX2xpc3RcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LldpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OltdIH5uYW1lIFslc2V4cF9vZjogXyBsaXN0XSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBMaXN0LnJldiAoRW52LldpdGhfZGVmYXVsdC5maW5kIGVudiBrZXkpIHdpdGhcbiAgICAgIHwgZmlyc3QgOjogcmVzdCAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIChmaXJzdCwgcmVzdClcbiAgICAgIHwgW10gLT5cbiAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyByZXF1aXJlZCBmbGFnOiAlc1wiIG5hbWUpKSlcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIHEgLT4gYXJnIDo6IHEpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZSB+ZGVwcmVjYXRlZF9ob29rIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XSBpblxuICAgIGxldCBhY3Rpb24gZW52IGNtZF9saW5lID0gRW52LnNldCBlbnYgfmtleSB+ZGF0YTpjbWRfbGluZSBpblxuICAgIGxldCByZWFkIGVudiA9XG4gICAgICBtYXRjaCBFbnYuZmluZCBlbnYga2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBOb25lXG4gICAgICB8IFNvbWUgXyBhcyB2YWx1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHZhbHVlXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uID1cbiAgICAgIG1hdGNoIGRlcHJlY2F0ZWRfaG9vayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBmdW4gZW52IHggLT5cbiAgICAgICAgICBmIHg7XG4gICAgICAgICAgYWN0aW9uIGVudiB4XG4gICAgaW5cbiAgICB7IGFjdGlvbiA9IFJlc3QgKGFjdGlvbiwgY29tcGxldGUpXG4gICAgOyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19hYm9ydCB+ZXhpdCBfbmFtZSA9XG4gICAgeyBhY3Rpb24gPSBOb19hcmcgKGZ1biBfIC0+IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID1cbiAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICgqIFdlIGtub3cgdGhhdCB0aGUgZmxhZyB3YXNuJ3QgcGFzc2VkIGhlcmUgYmVjYXVzZSBpZiBpdCB3YXMgcGFzc2VkXG4gICAgICAgICAgICAgIHRoZW4gdGhlIFthY3Rpb25dIHdvdWxkIGhhdmUgY2FsbGVkIFtleGl0XS4gKilcbiAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgKCkpXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGVzY2FwZSBuYW1lID0gZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lIG5hbWVcblxuICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIH5jb21wbGV0ZSBuYW1lID1cbiAgICBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6KFNvbWUgY29tcGxldGUpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG4gIDs7XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkOmZhbHNlIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaykgfmtleV92YWx1ZTpOb25lIG5hbWVcbiAgICA7O1xuXG4gICAgbGV0IGVzY2FwZSB+aG9vayA9IGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6KFNvbWUgaG9vaylcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBhdGggOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgY3JlYXRlIDogcGF0aF90b19leGU6c3RyaW5nIC0+IHRcbiAgdmFsIG9mX3BhcnRzIDogc3RyaW5nIGxpc3QgLT4gdFxuICB2YWwgYXBwZW5kIDogdCAtPiBzdWJjb21tYW5kOnN0cmluZyAtPiB0XG4gIHZhbCByZXBsYWNlX2ZpcnN0IDogdCAtPiBmcm9tOnN0cmluZyAtPiB0b186c3RyaW5nIC0+IHRcbiAgdmFsIHBhcnRzIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgcGFydHNfZXhlX2Jhc2VuYW1lIDogdCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19kb3RzIDogdCAtPiBzdHJpbmdcbiAgdmFsIHBvcF9oZWxwIDogdCAtPiB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBjcmVhdGUgfnBhdGhfdG9fZXhlID0gWyBwYXRoX3RvX2V4ZSBdXG4gIGxldCBvZl9wYXJ0cyBwYXJ0cyA9IExpc3QucmV2IHBhcnRzXG4gIGxldCBhcHBlbmQgdCB+c3ViY29tbWFuZCA9IHN1YmNvbW1hbmQgOjogdFxuICBsZXQgcGFydHMgPSBMaXN0LnJldlxuXG4gIGxldCBwYXJ0c19leGVfYmFzZW5hbWUgdCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgdCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGQgOjogdGwgLT4gRmlsZW5hbWVfYmFzZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZV9pZGVtcG90ZW50IDogdCAtPiB0XG4gICAgdmFsIGNvbmNhdCA6IHQgbGlzdCAtPiB0XG4gICAgdmFsIGFkX2hvYyA6IHVzYWdlOnN0cmluZyAtPiB0XG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBuYW1lcyA6IHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50ID1cbiAgICAgIHwgWmVyb1xuICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICB8IE1hbnkgb2YgdFxuICAgICAgfCBNYXliZSBvZiB0XG4gICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuXG4gICAgbGV0IGludmFyaWFudCA9IFNoYXBlLkFub25zLkdyYW1tYXIuaW52YXJpYW50XG4gICAgbGV0IHVzYWdlID0gU2hhcGUuQW5vbnMuR3JhbW1hci51c2FnZVxuXG4gICAgbGV0IHJlYyBpc19maXhlZF9hcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gdHJ1ZVxuICAgICAgfCBPbmUgXyAtPiB0cnVlXG4gICAgICB8IE1hbnkgXyAtPiBmYWxzZVxuICAgICAgfCBNYXliZSBfIC0+IGZhbHNlXG4gICAgICB8IEFkX2hvYyBfIC0+IGZhbHNlXG4gICAgICB8IENvbmNhdCB0cyAtPlxuICAgICAgICAobWF0Y2ggTGlzdC5yZXYgdHMgd2l0aFxuICAgICAgICAgfCBbXSAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgIHwgbGFzdCA6OiBvdGhlcnMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgb3RoZXJzIH5mOmlzX2ZpeGVkX2FyaXR5KTtcbiAgICAgICAgICAgaXNfZml4ZWRfYXJpdHkgbGFzdClcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBuYW1lcyA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gW11cbiAgICAgIHwgT25lIHMgLT4gWyBzIF1cbiAgICAgIHwgTWFueSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgTWF5YmUgdCAtPiBuYW1lcyB0XG4gICAgICB8IEFkX2hvYyBzIC0+IFsgcyBdXG4gICAgICB8IENvbmNhdCB0cyAtPiBMaXN0LmNvbmNhdF9tYXAgdHMgfmY6bmFtZXNcbiAgICA7O1xuXG4gICAgbGV0IHplcm8gPSBaZXJvXG4gICAgbGV0IG9uZSBuYW1lID0gT25lIG5hbWVcblxuICAgIGxldCBtYW55ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT5cbiAgICAgICAgaWYgbm90IChpc19maXhlZF9hcml0eSB0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICBcIml0ZXJhdGlvbiBvZiB2YXJpYWJsZS1sZW5ndGggZ3JhbW1hcnMgc3VjaCBhcyAlcyBpcyBkaXNhbGxvd2VkXCJcbiAgICAgICAgICAgICh1c2FnZSB0KVxuICAgICAgICAgICAgKCk7XG4gICAgICAgIE1hbnkgdFxuICAgIDs7XG5cbiAgICBsZXQgbWF5YmUgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPiBNYXliZSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZV9pZGVtcG90ZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IE1heWJlIHQgLT4gTWF5YmUgdFxuICAgICAgfCBNYW55IHQgLT4gTWFueSB0XG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSB0aGVyZSBcXFxuICAgICAgICAgICAgICAgICAgIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgY29tcGxpY2F0ZSB0aGUgXFxcbiAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICBtb2R1bGUgQmFzaWMgOiBzaWdcbiAgICAgIHR5cGUgKydhIHRcblxuICAgICAgbW9kdWxlIEZvcl9vcGVuaW5nIDogc2lnXG4gICAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICAgIHZhbCAoIDwqPiApIDogKCdhIC0+ICdiKSB0IC0+ICdhIHQgLT4gJ2IgdFxuICAgICAgICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICBlbmRcblxuICAgICAgdmFsIGZyb21fZW52IDogKEVudi50IC0+ICdhKSAtPiAnYSB0XG4gICAgZW5kXG5cbiAgICB0eXBlICsnYSB0ID0gJ2EgUGFyc2luZ19vdXRjb21lLnQgQmFzaWMudFxuXG4gICAgdmFsIG9uZSA6IG5hbWU6c3RyaW5nIC0+ICdhIEFyZ190eXBlLnQgLT4gJ2EgdFxuICAgIHZhbCBtYXliZSA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB2YWwgc2VxdWVuY2UgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHZhbCBzdG9wX3BhcnNpbmcgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmluYWxfdmFsdWUgOiAnYSBCYXNpYy50IC0+IEVudi50IC0+ICdhXG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7ICgqIElmIGVtYWNzIGhpZ2hsaWdodHMgW3BhcnNlcl0gYXMgaWYgaXQgd2VyZSBhIGtleXdvcmQsIHRoYXQncyBvbmx5IGJlY2F1c2VcbiAgICAgICAgICAgICBbcGFyc2VyXSB3YXMgYSBrZXl3b3JkIGluIGNhbWxwNC4gW3BhcnNlcl0gaXMgYSByZWd1bGFyIG5hbWUgaW4gT0NhbWwuICopXG4gICAgICAgICAgcGFyc2VyIDogJ2EgQmFzaWMudFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB2YWwgY29uc3VtZSA6ICdhIEJhc2ljLnQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgQ29uc3VtZV9yZXN1bHQudFxuICAgIHZhbCBjb21wbGV0ZSA6ICdhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50XG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEJhc2ljID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IERvbmUgb2YgKEVudi50IC0+ICdhKVxuICAgICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgICAoKiBBIFtUZXN0XSB3aWxsIChnZW5lcmFsbHkpIHJldHVybiBhIFtEb25lIF9dIHZhbHVlIGlmIHRoZXJlIGlzIG5vIG1vcmUgaW5wdXQgYW5kXG4gICAgICAgICAgIGEgW01vcmVdIHBhcnNlciB0byB1c2UgaWYgdGhlcmUgaXMgYW55IG1vcmUgaW5wdXQuICopXG4gICAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAgICgqIElmIHdlJ3JlIG9ubHkgY29tcGxldGluZywgd2UgY2FuJ3QgcHVsbCB2YWx1ZXMgb3V0LCBidXQgd2UgY2FuIHN0aWxsIHN0ZXAgdGhyb3VnaFxuICAgICAgICAgICBbdF1zICh3aGljaCBtYXkgaGF2ZSBjb21wbGV0aW9uIHNldCB1cCkuICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgICB8IFN0b3BfcGFyc2luZyBvZiAnYSB0XG5cbiAgICAgIGFuZCAnYSBtb3JlID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgcGFyc2UgOiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBwYXJzZV9yZXN1bHRcbiAgICAgICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgICAgIH1cblxuICAgICAgYW5kIHBhY2tlZCA9IFBhY2tlZCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgICAgIGFuZCAnYSBwYXJzZV9yZXN1bHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgcGFyc2VfbW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9IH5mID1cbiAgICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICAgIHsgcGFyc2VyID0gZiBwYXJzZXI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICBpblxuICAgICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBEb25lIF8gLT4gW10gKCogd29uJ3QgY29tcGxldGUgb3IgY29uc3VtZSBhbnl0aGluZyAqKVxuICAgICAgICB8IChNb3JlIF8gfCBUZXN0IF8gfCBTdG9wX3BhcnNpbmcgXykgYXMgeCAtPiBbIFBhY2tlZCB4IF1cbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjICggPCo+ICkgdF9sZWZ0IHRfcmlnaHQgPVxuICAgICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgICAoKiBbRG9uZV0gKilcbiAgICAgICAgfCBEb25lIGYsIERvbmUgeCAtPlxuICAgICAgICAgIERvbmVcbiAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiBlbnYgaW5cbiAgICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4IGVudiBpblxuICAgICAgICAgICAgICAgZl9vdXRjb21lIHhfb3V0Y29tZSlcbiAgICAgICAgKCogbmV4dCBzdGVwIFtNb3JlXSAqKVxuICAgICAgICB8IE1vcmUgbW9yZSwgXyAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0bCAtPiB0bCA8Kj4gdF9yaWdodClcbiAgICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW09ubHlfZm9yX2NvbXBsZXRpb25dICopXG4gICAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfLCBfIHwgRG9uZSBfLCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICAgKCogbmV4dCBzdGVwIFtTdG9wX3BhcnNpbmddICopXG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHRsLCB0ciB8IChEb25lIF8gYXMgdGwpLCBTdG9wX3BhcnNpbmcgdHIgLT4gU3RvcF9wYXJzaW5nICh0bCA8Kj4gdHIpXG4gICAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgICAgfCBUZXN0IHRlc3QsIF8gLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRlc3Qgfm1vcmUgPCo+IHRfcmlnaHQpXG4gICAgICAgIHwgRG9uZSBfLCBUZXN0IHRlc3QgLT4gVGVzdCAoZnVuIH5tb3JlIC0+IHRfbGVmdCA8Kj4gdGVzdCB+bW9yZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZXR1cm4gYSA9IERvbmUgKGZ1biBfIC0+IGEpXG4gICAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuICAgICAgbGV0IGZyb21fZW52IGYgPSBEb25lIChmdW4gZW52IC0+IGYgZW52KVxuXG4gICAgICBtb2R1bGUgRm9yX29wZW5pbmcgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG9wZW4gQmFzaWNcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFBhcnNpbmdfb3V0Y29tZS50IEJhc2ljLnRcblxuICAgIGxldCAoID4+fCApIHQgZiA9IHQgPj58IFBhcnNpbmdfb3V0Y29tZS5tYXAgfmZcbiAgICBsZXQgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9IHJldHVybiBQYXJzaW5nX291dGNvbWUuKCA8Kj4gKSA8Kj4gdF9sZWZ0IDwqPiB0X3JpZ2h0XG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIChQYXJzaW5nX291dGNvbWUucmV0dXJuIGEpXG4gICAgbGV0IHJldHVybl93aXRoX2FyZyBhID0gRG9uZSAoZnVuIF8gLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyBhKVxuICAgIGxldCBzdG9wX3BhcnNpbmcgdCA9IFN0b3BfcGFyc2luZyB0XG5cbiAgICBsZXQgb25lX21vcmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgbGV0IHBhcnNlIGFub24gfmZvcl9jb21wbGV0aW9uID1cbiAgICAgICAgbWF0Y2ggQXJnX3R5cGUucGFyc2UgYXJnX3R5cGUgYW5vbiB3aXRoXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICBpZiBmb3JfY29tcGxldGlvblxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIHdlIGRvbid0ICpyZWFsbHkqIGNhcmUgYWJvdXQgdGhpcyB2YWx1ZSwgc28ganVzdCBwdXQgaW4gYSBkdW1teSB2YWx1ZSBzb1xuICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYW4gY29udGludWUgKilcbiAgICAgICAgICAgIHsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiBbXTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkaWUgXCJmYWlsZWQgdG8gcGFyc2UgJXMgdmFsdWUgJVNcXG4lc1wiIG5hbWUgYW5vbiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcikgKClcbiAgICAgICAgfCBPayB2IC0+XG4gICAgICAgICAgeyBwYXJzZXIgPSByZXR1cm5fd2l0aF9hcmcgdlxuICAgICAgICAgIDsgdXBkYXRlX2VudiA9XG4gICAgICAgICAgICAgIChmdW4gZW52IC0+XG4gICAgICAgICAgICAgICAgIE9wdGlvbi5mb2xkIChBcmdfdHlwZS5rZXkgYXJnX3R5cGUpIH5pbml0OmVudiB+ZjooZnVuIGVudiBrZXkgLT5cbiAgICAgICAgICAgICAgICAgICBFbnYubXVsdGlfYWRkIGVudiB+a2V5IH5kYXRhOnYpKVxuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBNb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlID0gQXJnX3R5cGUuY29tcGxldGUgYXJnX3R5cGUgfVxuICAgIDs7XG5cbiAgICBsZXQgb25lIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlXG4gICAgICAgICAgIHRoZW4gb25lX21vcmUgfm5hbWUgYXJnX3R5cGVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIERvbmVcbiAgICAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmVycm9yXG4gICAgICAgICAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIChzcHJpbnRmIFwibWlzc2luZyBhbm9ueW1vdXMgYXJndW1lbnQ6ICVzXCIgbmFtZSkpKSkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID1cbiAgICAgIFRlc3RcbiAgICAgICAgKGZ1biB+bW9yZSAtPlxuICAgICAgICAgICBpZiBtb3JlIHRoZW4gcmV0dXJuX3dpdGhfYXJnIChmdW4gYSAtPiBTb21lIGEpIDwqPiB0IGVsc2UgcmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIF8gLT5cbiAgICAgICAgKCogdGhpcyBkb2Vzbid0IGhhcHBlbiBiZWNhdXNlIGFsbCBvY2N1cnJlbmNlcyBvZiBbTW9yZV0gYXJlIHByb3RlY3RlZFxuICAgICAgICAgICBieSBbVGVzdF0sIHdoaWNoIG1lYW5zIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGFuIGV4dHJhIGFyZ3VtZW50IHRvIGdpdmVcbiAgICAgICAgICAgYmVmb3JlIHJlcXVlc3RpbmcgdGhlIGZpbmFsIHZhbHVlICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8gLT5cbiAgICAgICAgZmFpbHdpdGggXCJCVUc6IGFza2VkIGZvciBmaW5hbCB2YWx1ZSB3aGVuIGRvaW5nIGNvbXBsZXRpb25cIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgQ29uc3VtZV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgICAgICB7IHBhcnNlciA6ICdhIEJhc2ljLnRcbiAgICAgICAgOyBwYXJzZV9mbGFncyA6IGJvb2xcbiAgICAgICAgOyB1cGRhdGVfZW52IDogRW52LnQgLT4gRW52LnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbGV0IHJlYyBjb25zdW1lXG4gICAgICA6IHR5cGUgYS4gYSBCYXNpYy50IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudFxuICAgICAgPVxuICAgICAgZnVuIHQgYXJnIH5mb3JfY29tcGxldGlvbiAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgXyAtPiBkaWUgXCJ0b28gbWFueSBhbm9ueW1vdXMgYXJndW1lbnRzXCIgKClcbiAgICAgIHwgVGVzdCBmIC0+IGNvbnN1bWUgKGYgfm1vcmU6dHJ1ZSkgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgfCBNb3JlIHsgcGFyc2U7IF8gfSAtPlxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiB9XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IHsgKGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uKSB3aXRoIHBhcnNlX2ZsYWdzID0gZmFsc2UgfVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBhY2tlZCAtPlxuICAgICAgICAobWF0Y2ggcGFja2VkIHdpdGhcbiAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyBwYXJzZV9mbGFncyA9IHRydWU7IHVwZGF0ZV9lbnYgPSBGbi5pZCB9XG4gICAgICAgICB8IFBhY2tlZCB0IDo6IHJlc3QgLT5cbiAgICAgICAgICAgbGV0ICh7IHVwZGF0ZV9lbnY7IHBhcnNlX2ZsYWdzOyBwYXJzZXIgfSA6IF8gQ29uc3VtZV9yZXN1bHQudCkgPVxuICAgICAgICAgICAgIGNvbnN1bWUgdCBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHsgdXBkYXRlX2VudlxuICAgICAgICAgICA7IHBhcnNlX2ZsYWdzXG4gICAgICAgICAgIDsgcGFyc2VyID0gT25seV9mb3JfY29tcGxldGlvbiAocGFja19mb3JfY29tcGxldGlvbiBwYXJzZXIgQCByZXN0KVxuICAgICAgICAgICB9KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGNvbXBsZXRlIDogdHlwZSBhLiBhIEJhc2ljLnQgLT4gRW52LnQgLT4gcGFydDpzdHJpbmcgLT4gTm90aGluZy50ID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPVxuICAgICAgICBTZXQub2ZfbGlzdCAobW9kdWxlIENoYXIpIFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXVxuICAgICAgaW5cbiAgICAgIFN0cmluZy5leGlzdHMgc3RyIH5mOihTZXQubWVtIHNwZWNpYWxfY2hhcnMpXG4gICAgaW5cbiAgICBpZiBoYXNfc3BlY2lhbF9jaGFycyB0aGVuIHN0ciBlbHNlIFN0cmluZy51cHBlcmNhc2Ugc3RyXG4gIDs7XG5cbiAgbGV0ICggJTogKSBuYW1lIGFyZ190eXBlID1cbiAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgeyBwID0gUGFyc2VyLm9uZSB+bmFtZSBhcmdfdHlwZTsgZ3JhbW1hciA9IEdyYW1tYXIub25lIG5hbWUgfVxuICA7O1xuXG4gIGxldCBtYXBfYW5vbnMgdCB+ZiA9IHsgcCA9IHQucCA+PnwgZjsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG4gIGxldCBtYXliZSB0ID0geyBwID0gUGFyc2VyLm1heWJlIHQucDsgZ3JhbW1hciA9IEdyYW1tYXIubWF5YmUgdC5ncmFtbWFyIH1cblxuICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0IGRlZmF1bHQgdCA9XG4gICAgbGV0IHQgPSBtYXliZSB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biB2IC0+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdCB2KSB9XG4gIDs7XG5cbiAgbGV0IHNlcXVlbmNlIHQgPSB7IHAgPSBQYXJzZXIuc2VxdWVuY2UgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYW55IHQuZ3JhbW1hciB9XG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0ID0gdDIgdCAoc2VxdWVuY2UgdClcblxuICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgdCA9XG4gICAgbGV0IHQgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciB0IGluXG4gICAgeyB0IHdpdGggcCA9ICh0LnAgPj58IGZ1biAoeCwgeHMpIC0+IHggOjogeHMpIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIHQgPSB7IHAgPSBQYXJzZXIuc3RvcF9wYXJzaW5nIHQucDsgZ3JhbW1hciA9IHQuZ3JhbW1hciB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgYWRfaG9jIH51c2FnZV9hcmcgPVxuICAgICAgeyBwID1cbiAgICAgICAgICBQYXJzZXIuc2VxdWVuY2VcbiAgICAgICAgICAgIChQYXJzZXIub25lIH5uYW1lOlwiV0lMTCBORVZFUiBCRSBQUklOVEVEXCIgQXJnX3R5cGUuRXhwb3J0LnN0cmluZylcbiAgICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuYWRfaG9jIH51c2FnZTp1c2FnZV9hcmdcbiAgICAgIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ21kbGluZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mIHN0cmluZyAqIHRcbiAgICB8IENvbXBsZXRlIG9mIHN0cmluZ1xuICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gIGxldCBvZl9saXN0IGFyZ3MgPSBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpOaWwgfmY6KGZ1biBhcmcgYXJncyAtPiBDb25zIChhcmcsIGFyZ3MpKVxuXG4gIGxldCByZWMgdG9fbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHgsIHhzKSAtPiB4IDo6IHRvX2xpc3QgeHNcbiAgICB8IENvbXBsZXRlIHggLT4gWyB4IF1cbiAgOztcblxuICBsZXQgcmVjIGVuZHNfaW5fY29tcGxldGUgPSBmdW5jdGlvblxuICAgIHwgQ29tcGxldGUgXyAtPiB0cnVlXG4gICAgfCBOaWwgLT4gZmFsc2VcbiAgICB8IENvbnMgKF8sIGFyZ3MpIC0+IGVuZHNfaW5fY29tcGxldGUgYXJnc1xuICA7O1xuXG4gIGxldCBleHRlbmQgdCB+ZXh0ZW5kIH5wYXRoID1cbiAgICBpZiBlbmRzX2luX2NvbXBsZXRlIHRcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwYXRoX2xpc3QgPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W10gKExpc3QudGwgKFBhdGgucGFydHMgcGF0aCkpIGluXG4gICAgICBvZl9saXN0ICh0b19saXN0IHQgQCBleHRlbmQgcGF0aF9saXN0KSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgS2V5X3R5cGUgPSBTaGFwZS5Qcml2YXRlLktleV90eXBlXG5cbmxldCBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUgZmxhZ19vcl9zdWJjb21tYW5kID1cbiAgaWYgU3RyaW5nLmV4aXN0cyBmbGFnX29yX3N1YmNvbW1hbmQgfmY6KGZ1biBjIC0+IENoYXIuKCA9ICkgYyAnXycpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiJXMgJXMgY29udGFpbnMgYW4gdW5kZXJzY29yZS4gVXNlIGEgZGFzaCBpbnN0ZWFkLlwiXG4gICAgICAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKVxuICAgICAgZmxhZ19vcl9zdWJjb21tYW5kXG4gICAgICAoKVxuOztcblxubGV0IG5vcm1hbGl6ZSBrZXlfdHlwZSBrZXkgPVxuICBhc3NlcnRfbm9fdW5kZXJzY29yZXMga2V5X3R5cGUga2V5O1xuICBtYXRjaCBrZXlfdHlwZSB3aXRoXG4gIHwgS2V5X3R5cGUuRmxhZyAtPlxuICAgIGlmIFN0cmluZy5lcXVhbCBrZXkgXCItXCIgdGhlbiBmYWlsd2l0aGYgIVwiaW52YWxpZCAle0tleV90eXBlfSBuYW1lOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuZXhpc3RzIGtleSB+ZjpDaGFyLmlzX3doaXRlc3BhY2VcbiAgICB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWUgKGNvbnRhaW5zIHdoaXRlc3BhY2UpOiAlU1wiIGtleV90eXBlIGtleSAoKTtcbiAgICBpZiBTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCItXCIga2V5IHRoZW4ga2V5IGVsc2UgXCItXCIgXiBrZXlcbiAgfCBLZXlfdHlwZS5TdWJjb21tYW5kIC0+IFN0cmluZy5sb3dlcmNhc2Uga2V5XG47O1xuXG5sZXQgbG9va3VwX2V4cGFuZCA9IFNoYXBlLlByaXZhdGUubG9va3VwX2V4cGFuZFxuXG5sZXQgbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgbWFwIHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBhbGlzdCA9XG4gICAgTGlzdC5jb25jYXRfbWFwIChNYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBDb21tYW5kX2Jhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBmbGFncyA6IEZsYWcuSW50ZXJuYWwudCBNYXAuTShTdHJpbmcpLnRcbiAgICA7XG4gICAgICBhbm9ucyA6IHVuaXQgLT4gKFsgYFBhcnNlX2FyZ3MgXSAtPiBbIGBSdW5fbWFpbiBdIC0+IHVuaXQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgOyB1c2FnZSA6IEFub25zLkdyYW1tYXIudFxuICAgIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBzdWJjb21tYW5kX2NtcF9mc3QgKGEsIF8pIChjLCBfKSA9IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBjXG5cbiAgICBsZXQgZmxhZ3NfaGVscCA/KGRpc3BsYXlfaGVscF9mbGFncyA9IHRydWUpIHQgPVxuICAgICAgbGV0IGZsYWdzID0gTWFwLmRhdGEgdC5mbGFncyBpblxuICAgICAgbGV0IGZsYWdzID1cbiAgICAgICAgaWYgZGlzcGxheV9oZWxwX2ZsYWdzXG4gICAgICAgIHRoZW4gZmxhZ3NcbiAgICAgICAgZWxzZSBMaXN0LmZpbHRlciBmbGFncyB+ZjooZnVuIGYgLT4gU3RyaW5nLiggPD4gKSBmLm5hbWUgXCItaGVscFwiKVxuICAgICAgaW5cbiAgICAgIExpc3QuY29uY2F0X21hcCB+ZjpGbGFnLkludGVybmFsLkRlcHJlY2F0ZWQuaGVscCBmbGFnc1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBmb3JtYXR0ZWRfZmxhZ3MgdCA9XG4gICAgTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0KSlcbiAgICB8IFJlc3QgKGYsIGNvbXApIC0+XG4gICAgICBsZXQgYXJnX2xpc3QgPSBDbWRsaW5lLnRvX2xpc3QgYXJncyBpblxuICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgICAgIHRoZW4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChDb21wbGV0ZXIucnVuX2FuZF9leGl0IGNvbXAgZW52IH5wYXJ0OmFyZ19saXN0KTtcbiAgICAgIGYgZW52IGFyZ19saXN0LCBOaWxcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciAoY21kbGluZSA6IENtZGxpbmUudCkgfmZvcl9jb21wbGV0aW9uIH5wYXJzZV9mbGFncyA9XG4gICAgbWF0Y2ggY21kbGluZSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIExpc3QuaXRlciAoTWFwLmRhdGEgdC5mbGFncykgfmY6KGZ1biBmbGFnIC0+IGZsYWcuY2hlY2tfYXZhaWxhYmxlIGVudik7XG4gICAgICBBbm9ucy5QYXJzZXIuZmluYWxfdmFsdWUgcGFyc2VyIGVudlxuICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgaWYgcGFyc2VfZmxhZ3MgJiYgU3RyaW5nLmlzX3ByZWZpeCBwYXJ0IH5wcmVmaXg6XCItXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICBMaXN0Lml0ZXIgKE1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZSAoQW5vbnMuUGFyc2VyLmNvbXBsZXRlIHBhcnNlciBlbnYgfnBhcnQpXG4gICAgfCBDb25zIChhcmcsIGFyZ3MpIC0+XG4gICAgICBsZXQgYXJnLCBhcmdzLCBhcmdfaXNfZmxhZyA9XG4gICAgICAgIG1hdGNoIHBhcnNlX2ZsYWdzIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIChtYXRjaCBhcmcsIGFyZ3Mgd2l0aFxuICAgICAgICAgICAoKiB0aGUgJy1hbm9uJyBmbGFnIGlzIGhlcmUgYXMgYW4gZXNjYXBlIGhhdGNoIGluIGNhc2UgeW91IGhhdmUgYW5cbiAgICAgICAgICAgICAgYW5vbnltb3VzIGFyZ3VtZW50IHRoYXQgc3RhcnRzIHdpdGggYSBoeXBoZW4uICopXG4gICAgICAgICAgIHwgXCItYW5vblwiLCBDb25zIChhcmcsIGFyZ3MpIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgKCogc3VwcG9ydCB0aGUgY29tbW9uIFVuaXggY29udmVudGlvbiB3aGVyZSBcIi1cIiBtZWFucyBzdGRpbiAqKVxuICAgICAgICAgICB8IFwiLVwiLCBfIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgICAgfCBfLCBfIC0+IGFyZywgYXJncywgU3RyaW5nLmlzX3ByZWZpeCBhcmcgfnByZWZpeDpcIi1cIilcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYXJnX2lzX2ZsYWcgd2l0aFxuICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgbGV0IGVudiwgYXJncyA9IHJ1bl9mbGFnIHQgZW52IGFyZyBhcmdzIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgYXJncyB+cGFyc2VfZmxhZ3MgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzMSA9IHBhcnNlX2ZsYWdzIGluXG4gICAgICAgICBsZXQgKHsgcGFyc2VyOyBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMjsgdXBkYXRlX2VudiB9XG4gICAgICAgICAgICAgIDogXyBBbm9ucy5QYXJzZXIuQ29uc3VtZV9yZXN1bHQudClcbiAgICAgICAgICAgPVxuICAgICAgICAgICBBbm9ucy5QYXJzZXIuY29uc3VtZSBwYXJzZXIgYXJnIH5mb3JfY29tcGxldGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBlbnYgPSB1cGRhdGVfZW52IGVudiBpblxuICAgICAgICAgbGV0IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MxICYmIHBhcnNlX2ZsYWdzMiBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIH5wYXJzZV9mbGFncyBhcmdzIH5mb3JfY29tcGxldGlvbilcbiAgOztcblxuICBsZXQgcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIHdoZW4gZm9yX2NvbXBsZXRpb24gLT4gZXhpdCAwXG4gICAgfCBFeGl0X2NhbGxlZCB7IHN0YXR1cyB9IC0+IGV4aXQgc3RhdHVzXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZXhuX3N0ciA9XG4gICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT4gbXNnXG4gICAgICAgIHwgXyAtPiBTZXhwLnRvX3N0cmluZ19odW0gWyVzZXhwIChleG4gOiBleG4pXVxuICAgICAgaW5cbiAgICAgIGxldCB2ZXJib3NlID0gT3B0aW9uLnZhbHVlIHZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgfmRlZmF1bHQ6dHJ1ZSBpblxuICAgICAgbGV0IGVycm9yX21zZyA9XG4gICAgICAgIGlmIHZlcmJvc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgIH5zZXA6XCJcXG5cXG5cIlxuICAgICAgICAgICAgWyBcIkVycm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lOlwiXG4gICAgICAgICAgICA7IGluZGVudF9ieV8yIGV4bl9zdHJcbiAgICAgICAgICAgIDsgXCJGb3IgdXNhZ2UgaW5mb3JtYXRpb24sIHJ1blwiXG4gICAgICAgICAgICA7IFwiICBcIiBeIFBhdGgudG9fc3RyaW5nIHBhdGggXiBcIiAtaGVscFxcblwiXG4gICAgICAgICAgICBdXG4gICAgICAgIGVsc2UgZXhuX3N0clxuICAgICAgaW5cbiAgICAgIHByZXJyX2VuZGxpbmUgZXJyb3JfbXNnO1xuICAgICAgZXhpdCAxXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfm9uX2ZhaWx1cmVcbiAgICA9XG4gICAgbGV0IGZvcl9jb21wbGV0aW9uID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICBsZXQgZW52ID1cbiAgICAgIGVudlxuICAgICAgfD4gRW52LnNldCB+a2V5OnBhdGhfa2V5IH5kYXRhOnBhdGhcbiAgICAgIHw+IEVudi5zZXQgfmtleTphcmdzX2tleSB+ZGF0YTooQ21kbGluZS50b19saXN0IGFyZ3MpXG4gICAgICB8PiBFbnYuc2V0IH5rZXk6aGVscF9rZXkgfmRhdGE6aGVscF90ZXh0XG4gICAgaW5cbiAgICBtYXRjaFxuICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IG1haW4gPVxuICAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52ICh0LmFub25zICgpKSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzOnRydWUgYXJnc1xuICAgICAgICBpblxuICAgICAgICBtYWluIGBQYXJzZV9hcmdzKVxuICAgIHdpdGhcbiAgICB8IE9rIHRodW5rIC0+XG4gICAgICB3aGVuX3BhcnNpbmdfc3VjY2VlZHMgKCk7XG4gICAgICB0aHVuayBgUnVuX21haW5cbiAgICB8IEVycm9yIGV4biAtPiBvbl9mYWlsdXJlIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgOztcblxuICBtb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0ID1cbiAgICAgIHsgZiA6IHVuaXQgLT4gKHVuaXQgLT4gJ2EgUGFyc2luZ19vdXRjb21lLnQpIEFub25zLlBhcnNlci5CYXNpYy50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZ1xuXG4gICAgbGV0IHdyYXBfdmFsdWUgdiAoKSA9IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIHZcblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgeyBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgcmV0dXJuIChmdW4gZiB4ICgpIC0+XG4gICAgICAgICAgICAgICAoKiBvcmRlciBvZiBldmFsdWF0aW9uIGhlcmUgYWZmZWN0cyBpbiB3aGF0IG9yZGVyIHRoZSB1c2VycycgY2FsbGJhY2tzXG4gICAgICAgICAgICAgICAgICBhcmUgZXZhbHVhdGVkLCBzbyBpdCdzIGltcG9ydGFudCB0byBjYWxsIFtmXSBiZWZvcmUgW3hdICopXG4gICAgICAgICAgICAgICBsZXQgZl9vdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgICAgbGV0IHhfb3V0Y29tZSA9IHggKCkgaW5cbiAgICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5hcHBseSBmX291dGNvbWUgeF9vdXRjb21lKVxuICAgICAgICAgICAgIDwqPiBmLmYgKClcbiAgICAgICAgICAgICA8Kj4geC5mICgpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4geC5mbGFncyAoKSBAIGYuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIGYudXNhZ2UgKCk7IHgudXNhZ2UgKCkgXSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGVtcHR5X3NwZWMgOiAnbS4gKCdtIC0+ICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgRm4uaWQpKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXBfb3V0Y29tZSB4IH5mID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHguZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4geCAoKSAtPlxuICAgICAgICAgICAgIGxldCB4X291dGNvbWUgPSB4ICgpIGluXG4gICAgICAgICAgICAgZiB4X291dGNvbWUpXG4gICAgICA7IGZsYWdzID0geC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHgudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID0gbWFwX291dGNvbWUgeCB+ZjooUGFyc2luZ19vdXRjb21lLm1hcCB+ZilcblxuICAgIGxldCBsb29rdXAga2V5ID1cbiAgICAgIHsgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIEFub25zLlBhcnNlci5CYXNpYy5mcm9tX2VudiAoZnVuIGVudiAtPiBFbnYuZmluZF9leG4gZW52IGtleSkgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHBhdGggOiBQYXRoLnQgdCA9IGxvb2t1cCBwYXRoX2tleVxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgdCA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCB0ID0gbG9va3VwIGhlbHBfa2V5XG5cbiAgICAoKiBUaGlzIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBmb3IgdGhlIGhlbHAgY29tbWFuZC4gKilcbiAgICBsZXQgZW52ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IGVudikgPj58IHdyYXBfdmFsdWUpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0ID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3RcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcblxuICAgICAgbGV0IGFub24gc3BlYyA9XG4gICAgICAgIEFub25zLkdyYW1tYXIuaW52YXJpYW50IHNwZWMuZ3JhbW1hcjtcbiAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBzcGVjLnAgPj58IGZ1biBvdXRjb21lICgpIC0+IG91dGNvbWUpXG4gICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBzcGVjLmdyYW1tYXIpXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZXNjYXBlX2Fub24gfmZpbmFsX2Fub24gPVxuICAgICAgQW5vbnMuZXNjYXBlICh0MiBmaW5hbF9hbm9uIChzZXF1ZW5jZSAoXCJBUkdcIiAlOiBzdHJpbmcpKSkgfD4gYW5vblxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlID0gZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfcGFpciA9IG9uZV9vcl9tb3JlX2FzX3BhaXJcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgICAgbGV0IG5vX2FyZ19yZXF1aXJlZCA9IG5vX2FyZ19yZXF1aXJlZFxuICAgICAgbGV0IG5vX2FyZ19yZWdpc3RlciA9IG5vX2FyZ19yZWdpc3RlclxuICAgICAgbGV0IG5vX2FyZ19hYm9ydCA9IG5vX2FyZ19hYm9ydFxuICAgICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgICBsZXQgb3B0aW9uYWxfd2l0aF9kZWZhdWx0ID0gb3B0aW9uYWxfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgcmVxdWlyZWQgPSByZXF1aXJlZFxuXG4gICAgICBsZXQgZmxhZ19pbnRlcm5hbFxuICAgICAgICAgICAgPyhhbGlhc2VzID0gW10pXG4gICAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBtb2RlXG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgPVxuICAgICAgICBsZXQgbm9ybWFsaXplIGZsYWcgPSBub3JtYWxpemUgS2V5X3R5cGUuRmxhZyBmbGFnIGluXG4gICAgICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICAgICAgbGV0IGFsaWFzZXMgPSBMaXN0Lm1hcCB+Zjpub3JtYWxpemUgYWxpYXNlcyBpblxuICAgICAgICBsZXQgeyByZWFkOyBhY3Rpb247IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSBtb2RlIG5hbWUgaW5cbiAgICAgICAgbGV0IGNoZWNrX2F2YWlsYWJsZSA9XG4gICAgICAgICAgbWF0Y2ggbnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2Ugd2l0aFxuICAgICAgICAgIHwgZmFsc2UgLT4gKGlnbm9yZSA6IFVuaXZfbWFwLnQgLT4gdW5pdClcbiAgICAgICAgICB8IHRydWUgLT4gZnVuIGVudiAtPiBpZ25vcmUgKHJlYWQgZW52IDogXylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5hbWVfbWF0Y2hpbmcgPVxuICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lIGZ1bGxfZmxhZ19yZXF1aXJlZCB0aGVuIGBGdWxsX21hdGNoX3JlcXVpcmVkIGVsc2UgYFByZWZpeFxuICAgICAgICBpblxuICAgICAgICB7IGYgPVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IHJlYWQgZW52KSA+PnwgZnVuIHYgKCkgLT4gdilcbiAgICAgICAgOyBmbGFncyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbIHsgbmFtZVxuICAgICAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICA7IGRvYyA9XG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZm9yY2UgZXh0cmFfZG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBkb2MpXG4gICAgICAgICAgICAgICAgIDsgYWN0aW9uXG4gICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBdKVxuICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbGFnID0gZmxhZ19pbnRlcm5hbCB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6W11cblxuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuICAgICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIGFyZ190eXBlXG4gICAgICAgICAgICBzZXhwX29mX2RlZmF1bHRcbiAgICAgICAgICAgIH5kZWZhdWx0XG4gICAgICAgICAgICB+ZG9jXG4gICAgICAgID1cbiAgICAgICAgbGV0IGRvYyA9XG4gICAgICAgICAgbWF0Y2ggc2V4cF9vZl9kZWZhdWx0IGRlZmF1bHQgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIFwiX1wiIC0+IGRvY1xuICAgICAgICAgIHwgZGVmYXVsdF9zZXhwIC0+IHNwcmludGYgIVwiJXMgKGRlZmF1bHQ6ICV7U2V4cH0pXCIgZG9jIGRlZmF1bHRfc2V4cFxuICAgICAgICBpblxuICAgICAgICBmbGFnXG4gICAgICAgICAgP2FsaWFzZXNcbiAgICAgICAgICA/ZnVsbF9mbGFnX3JlcXVpcmVkXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIChvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSlcbiAgICAgICAgICB+ZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHJldHVybiB2ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gKCkgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgdikpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5yZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyBvdXRjb21lKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG91dGNvbWUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvcHRpb25hbF90b19yZXF1aXJlZCB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgIChQYXJzaW5nX291dGNvbWUubWFwIG91dGNvbWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nIFwiW29wdGlvbmFsX3RvX3JlcXVpcmVkXSBnb3QgYSBbTm9uZV0gcmVzdWx0XCIpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gT2sgdikpKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICBlbmQpXG5cbiAgICBsZXQgYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBsZXQgZmxhZ19uYW1lcyA9IE1hcC5rZXlzIGZsYWdzIGluXG4gICAgICBsZXQgYW5vbl9uYW1lcyA9IEFub25zLkdyYW1tYXIubmFtZXMgKHQudXNhZ2UgKCkpIGluXG4gICAgICBMaXN0LmNvbmNhdCBbIGZsYWdfbmFtZXM7IGFub25fbmFtZXMgXVxuICAgIDs7XG5cbiAgICBsZXQgcmVxdWlyZWRfYXJnX25hbWVzIHQgPVxuICAgICAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgKHQuZmxhZ3MgKCkpIGluXG4gICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBmbGFncykgfmY6KGZ1biAobmFtZSwgZmxhZykgLT5cbiAgICAgICAgaWYgZmxhZy5udW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmUpXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICB0eXBlICdhIHBhcmFtID0gJ2EgdFxuXG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgICB2YWwgZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzIDogdCAtPiBleGNlcHQ6c3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IGFsbF9hcmdzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgICAgIDsgcmVxdWlyZWRfYXJncyA6IHN0cmluZyBsaXN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodC5hbGxfYXJncyA6IHN0cmluZyBsaXN0KV1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgcmVxdWlyZWRfYXJncyA9IHJlcXVpcmVkX2FyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lcyA9IGFyZ19uYW1lcyBwYXJhbSBpblxuICAgICAgICAgIGxldCBuYW1lc193aXRoX2NvbW1hcyA9IExpc3QuZmlsdGVyIG5hbWVzIH5mOihmdW4gcyAtPiBTdHJpbmcuY29udGFpbnMgcyAnLCcpIGluXG4gICAgICAgICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IG5hbWVzX3dpdGhfY29tbWFzKVxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiRm9yIHNpbXBsaWNpdHksIFtDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gZG9lcyBub3Qgc3VwcG9ydCBuYW1lcyB3aXRoIFxcXG4gICAgICAgICAgICAgICBjb21tYXMuXCJcbiAgICAgICAgICAgICAgbmFtZXNfd2l0aF9jb21tYXNcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgbGlzdF1cbiAgICAgICAgICAgIHw+IEVycm9yLnJhaXNlO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IHsgYWxsX2FyZ3MgPSBuYW1lczsgcmVxdWlyZWRfYXJncyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgICBtYXRjaCB0LnJlcXVpcmVkX2FyZ3Mgd2l0aFxuICAgICAgICAgIHwgW10gLT4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIHQuYWxsX2FyZ3NcbiAgICAgICAgICB8IF8gOjogXyAtPiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgdC5yZXF1aXJlZF9hcmdzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGVudW1lcmF0ZV9yZXF1aXJlZF9mbGFncyB0IH5leGNlcHQgPVxuICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIHQucmVxdWlyZWRfYXJncyB+ZjooZnVuIHggLT4gbm90IChTdHJpbmcuZXF1YWwgZXhjZXB0IHgpKSB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgbClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgICAgICAgICh0eXBlIGEgYilcbiAgICAgICAgICAgID8obmV3X2JlaGF2aW9yID0gdHJ1ZSlcbiAgICAgICAgICAgICh0cyA6IGEgcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBsZXQgZml4X2ZsYWcgdCA9XG4gICAgICAgICAgaWYgbmV3X2JlaGF2aW9yXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmFtZV9vZl90aGVfZ3JvdXAgPSBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQgaW5cbiAgICAgICAgICAgIGxldCBmaXhfbnVtX29jY3VycmVuY2VzIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwubnVtX29jY3VycmVuY2VzID1cbiAgICAgICAgICAgICAgICAgIHsgZmxhZy5GbGFnLkludGVybmFsLm51bV9vY2N1cnJlbmNlcyB3aXRoIGF0X2xlYXN0X29uY2UgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFuZCBmaXhfZG9jIGZsYWcgPVxuICAgICAgICAgICAgICB7IGZsYWcgd2l0aFxuICAgICAgICAgICAgICAgIEZsYWcuSW50ZXJuYWwuZG9jID1cbiAgICAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgXCIlcyVzXCJcbiAgICAgICAgICAgICAgICAgICAgZmxhZy5GbGFnLkludGVybmFsLmRvY1xuICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgQ2hvaWNlX25hbWUuZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2VwdDpmbGFnLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX29mX3RoZV9ncm91cFxuICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBncm91cCAtPiBzcHJpbnRmIFwiIFtyZXF1aXJlczogXFxcIiVzXFxcIl1cIiBncm91cClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5kIG1ha2VfYW5vbnNfb3B0aW9uYWwgKGFub24gOiBBbm9ucy5HcmFtbWFyLnQpID1cbiAgICAgICAgICAgICAgQW5vbnMuR3JhbW1hci5tYXliZV9pZGVtcG90ZW50IGFub25cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHQgd2l0aFxuICAgICAgICAgICAgICB1c2FnZSA9IChmdW4gKCkgLT4gbWFrZV9hbm9uc19vcHRpb25hbCAodC51c2FnZSAoKSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgKHQuZmxhZ3MgKCkpIH5mOihmdW4gZmxhZ19pbnRlcm5hbCAtPlxuICAgICAgICAgICAgICAgICAgICAgZmxhZ19pbnRlcm5hbCB8PiBmaXhfbnVtX29jY3VycmVuY2VzIHw+IGZpeF9kb2MpKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBlbHNlIHRcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gQ2hvaWNlX25hbWUuY3JlYXRlX2V4biB0LCBmaXhfZmxhZyB0KVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdCAobW9kdWxlIENob2ljZV9uYW1lKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPlxuICAgICAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGNhbGxlZCB3aXRoIGR1cGxpY2F0ZSBuYW1lXCJcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIFslc2V4cF9vZjogQ2hvaWNlX25hbWUudF1cbiAgICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgYWNjIC0+XG4gICAgICAgICAgICBtYXAyXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAocmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdClcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgeyByZXN1bHQgPSB2YWx1ZTsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggaGFzX2FyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBmYWxzZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IHRydWUgLT4gKG5hbWUsIHZhbHVlKSA6OiBhY2MpKVxuICAgICAgICAgIHw+IG1hcCB+ZjooZnVuIHZhbHVlX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCBhcmdfY291bnRlciA9IExpc3QubGVuZ3RoIHZhbHVlX2xpc3QgaW5cbiAgICAgICAgICAgIGxldCBtaXNzaW5nX2ZsYWdfZXJyb3IgZm10ID1cbiAgICAgICAgICAgICAga3NwcmludGZcbiAgICAgICAgICAgICAgICAoZnVuIG1zZyAoKSAtPiBFcnJvciAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBtc2cpKSlcbiAgICAgICAgICAgICAgICBmbXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9yZV90aGFuX29uZV9lcnJvciBwYXNzZWQgPVxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICBhbmQgc3VjY2Vzc19saXN0LCBlcnJvcl9saXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25fbWFwIHZhbHVlX2xpc3QgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBPayB2YWx1ZSAtPiBGaXJzdCAobmFtZSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgfCBuYW1lLCBFcnJvciBlcnIgLT4gU2Vjb25kIChuYW1lLCBlcnIpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIHN1Y2Nlc3NfbGlzdCB3aXRoXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPiBtb3JlX3RoYW5fb25lX2Vycm9yIHBhc3NlZFxuICAgICAgICAgICAgfCBbIChfLCAodmFsdWUgOiBhKSkgXSAtPlxuICAgICAgICAgICAgICBpZiBhcmdfY291bnRlciA+IDFcbiAgICAgICAgICAgICAgdGhlbiBtb3JlX3RoYW5fb25lX2Vycm9yIHZhbHVlX2xpc3RcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byAoXyA6IGEpIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gKFNvbWUgdmFsdWUgOiBiKSlcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGVycm9yX2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBbIChuYW1lLCBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnIpIF0gLT5cbiAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAoRXJyb3Iub2Zfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vdCBhbGwgZmxhZ3MgaW4gZ3JvdXAgXFxcIiVzXFxcIiBhcmUgZ2l2ZW46ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2hvaWNlX25hbWUudG9fc3RyaW5nIG5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyKSkpKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgUmV0dXJuX25vbmUgLT4gT2sgTm9uZVxuICAgICAgICAgICAgICAgICAgfCBSYWlzZSAtPlxuICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX2ZsYWdfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAhXCJNdXN0IHBhc3Mgb25lIG9mIHRoZXNlOlxcbiAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgICAgICAgIChNYXAua2V5cyB0cylcbiAgICAgICAgICAgICAgICAgICAgICAoKSkpKVxuICAgICAgICAgIHw+IGludHJvZHVjZV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICA7O1xuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBjaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgICAgICAgIH5uZXdfYmVoYXZpb3I6ZmFsc2VcbiAgICAgICAgICB+aWZfbm90aGluZ19jaG9zZW5cbiAgICAgICAgICAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgbWFwX291dGNvbWUgdCB+ZjooZnVuIHsgUGFyc2luZ19vdXRjb21lLnJlc3VsdDsgaGFzX2FyZyB9IC0+XG4gICAgICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBPayAoU29tZSB2YWx1ZSkgLT4geyBQYXJzaW5nX291dGNvbWUucmVzdWx0ID0gT2sgdmFsdWU7IGhhc19hcmcgPSB0cnVlIH1cbiAgICAgICAgICAgICAgIHwgT2sgTm9uZSAtPlxuICAgICAgICAgICAgICAgICB7IGhhc19hcmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgICA7IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgKEVycm9yLm9mX3N0cmluZyBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZ1wiKSlcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfCBFcnJvciBfIGFzIHJlc3VsdCAtPiB7IGhhc19hcmc7IHJlc3VsdCB9KSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBDaG9vc2Vfb25lLmNob29zZV9vbmVcblxuICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbCBsc3QgfmlmX25vdGhpbmdfY2hvc2VuID1cbiAgICAgIENob29zZV9vbmUuY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgbHN0IH5pZl9ub3RoaW5nX2Nob3NlblxuICAgIDs7XG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lcyB0ID0gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgYXJnX25hbWVzIHQpXG5cbiAgICBsZXQgYW5kX2FyZ19uYW1lIHQgPVxuICAgICAgbWF0Y2ggYXJnX25hbWVzIHQgd2l0aFxuICAgICAgfCBbIG5hbWUgXSAtPiBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBuYW1lKVxuICAgICAgfCBuYW1lcyAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlthbmRfYXJnX25hbWVdIGV4cGVjdHMgZXhhY3RseSBvbmUgbmFtZSwgZ290XCIgfl86KG5hbWVzIDogc3RyaW5nIGxpc3QpXVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2UgeyBmbGFnczsgdXNhZ2UgPSBfOyBmIH0gYXJncyA9XG4gICAgICBsZXQgY21kbGluZSA9IENtZGxpbmUub2ZfbGlzdCBhcmdzIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICAgIHJ1blxuICAgICAgICB7IHN1bW1hcnkgPSBcIlwiXG4gICAgICAgIDsgcmVhZG1lID0gTm9uZVxuICAgICAgICA7IGZsYWdzID0gZmxhZ3MgKCkgfD4gRmxhZy5JbnRlcm5hbC5jcmVhdGVcbiAgICAgICAgOyBhbm9ucyA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuQmFzaWMuRm9yX29wZW5pbmcgaW5cbiAgICAgICAgICAgICAgIGYgKClcbiAgICAgICAgICAgICAgID4+fCBmdW4gcGFyYW1zIGBQYXJzZV9hcmdzIGBSdW5fbWFpbiAtPlxuICAgICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBwYXJhbXMgKCkgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIG91dGNvbWUucmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gcmVzdWx0IDo9IFNvbWUgKEVycm9yIGVycilcbiAgICAgICAgICAgICAgIHwgT2sgeCAtPiByZXN1bHQgOj0gU29tZSAoT2sgeCkpXG4gICAgICAgIDsgdXNhZ2UgPSBBbm9ucy5HcmFtbWFyLnplcm9cbiAgICAgICAgfVxuICAgICAgICBVbml2X21hcC5lbXB0eVxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzOkZuLmlkXG4gICAgICAgIH5hcmdzOmNtZGxpbmVcbiAgICAgICAgfnBhdGg6UGF0aC5lbXB0eVxuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjooU29tZSB0cnVlKVxuICAgICAgICB+aGVscF90ZXh0OihsYXp5IFwiTm8gaGVscCBmb3IgcGFyc2luZ1wiKVxuICAgICAgICB+b25fZmFpbHVyZTpcbiAgICAgICAgICAoZnVuXG4gICAgICAgICAgICBleG5cbiAgICAgICAgICAgIH5mb3JfY29tcGxldGlvbjooXyA6IGJvb2wpXG4gICAgICAgICAgICB+cGF0aDooXyA6IFBhdGgudClcbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOihfIDogYm9vbCBvcHRpb24pXG4gICAgICAgICAgICAtPiByZXN1bHQgOj0gU29tZSAoRXJyb3IgKEVycm9yLm9mX2V4biBleG4pKSk7XG4gICAgICBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV0gIXJlc3VsdFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhIC0+ICdiKSBQYXJhbS50XG4gICAgdHlwZSAnYSBwYXJhbSA9ICdhIFBhcmFtLnRcblxuICAgIGxldCBhcHBseSA9IFBhcmFtLmFwcGx5XG4gICAgbGV0ICggKysgKSB0MSB0MiA9IFBhcmFtLm1hcDIgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gUGFyYW0ubWFwMiB0MSBwMiB+ZjooZnVuIGYxIHAyIHggLT4gKGYxIHgpIHAyKVxuICAgIGxldCAoICs8ICkgdDEgcDIgPSBQYXJhbS5tYXAyIHAyIHQxIH5mOihmdW4gcDIgZjEgeCAtPiBmMSAoeCBwMikpXG4gICAgbGV0IHN0ZXAgZiA9IFBhcmFtLnJldHVybiBmXG5cbiAgICAoKiBJZGVhbGx5IHRoaXMgd291bGQgYmUgW2xldCBlbXB0eSA9IFBhcmFtLnJldHVybiBGbi5pZF0sIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoYXRcbiAgICAgICBkb2Vzbid0IGNvbXBpbGUgYmVjYXVzZSBvZiB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gKilcbiAgICBsZXQgZW1wdHkgPSBQYXJhbS5lbXB0eV9zcGVjXG4gICAgbGV0IGNvbnN0IHggPSBQYXJhbS5yZXR1cm4geFxuICAgIGxldCBtYXAgPSBQYXJhbS5tYXBcbiAgICBsZXQgd3JhcCBmIHQgPSBQYXJhbS5tYXAgdCB+ZjooZnVuIHJ1biBtYWluIC0+IGYgfnJ1biB+bWFpbilcbiAgICBsZXQgb2ZfcGFyYW0gcCA9IG1hcCBwIH5mOihmdW4gZiBrIC0+IGsgZilcbiAgICBsZXQgdG9fcGFyYW0gdCBtID0gbWFwIHQgfmY6KGZ1biBmIC0+IGYgbSlcbiAgICBsZXQgcGF0aCA6IFBhdGgudCBwYXJhbSA9IFBhcmFtLnBhdGhcbiAgICBsZXQgYXJncyA6IHN0cmluZyBsaXN0IHBhcmFtID0gUGFyYW0uYXJnc1xuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IFBhcmFtLmhlbHBcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICAgICAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEFub25zXG5cbiAgICAgIHR5cGUgJ2EgYW5vbnMgPSAnYSB0XG5cbiAgICAgIGxldCAoICU6ICkgPSAoICU6IClcbiAgICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICAgIGxldCBtYXliZSA9IG1heWJlXG4gICAgICBsZXQgbWF5YmVfd2l0aF9kZWZhdWx0ID0gbWF5YmVfd2l0aF9kZWZhdWx0XG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyID0gbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXJcbiAgICAgIGxldCBzZXF1ZW5jZSA9IHNlcXVlbmNlXG4gICAgICBsZXQgdDIgPSB0MlxuICAgICAgbGV0IHQzID0gdDNcbiAgICAgIGxldCB0NCA9IHQ0XG4gICAgICBsZXQgYW5vbiA9IFBhcmFtLmFub25cbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiA9IFBhcmFtLmVzY2FwZV9hbm9uXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBGbGFnXG5cbiAgICAgIHR5cGUgJ2EgZmxhZyA9ICdhIHRcblxuICAgICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICAgIGxldCBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUgPSBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGVcbiAgICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlcXVpcmVkID0gbm9fYXJnX3JlcXVpcmVkXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gICAgICBsZXQgZmxhZyA9IFBhcmFtLmZsYWdcbiAgICAgIGxldCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2MgPSBQYXJhbS5mbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcblxuICAgICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgUGFyYW0udFxuXG4gICAgICAgICAgbGV0IHJldHVybiA9IFBhcmFtLnJldHVyblxuICAgICAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHBhaXIgPSBQYXJhbS5ib3RoXG4gICAgZW5kXG5cbiAgICBsZXQgZmxhZ3Nfb2ZfYXJnc19leG4gYXJncyA9XG4gICAgICBMaXN0LmZvbGQgYXJncyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgc3BlYywgZG9jKSAtPlxuICAgICAgICBsZXQgZ2VuIGYgZmxhZ190eXBlID1cbiAgICAgICAgICBzdGVwIChmdW4gbSB4IC0+XG4gICAgICAgICAgICBmIHg7XG4gICAgICAgICAgICBtKVxuICAgICAgICAgICs+IFBhcmFtLmZsYWcgbmFtZSBmbGFnX3R5cGUgfmRvY1xuICAgICAgICBpblxuICAgICAgICBsZXQgY2FsbCBmIGFyZ190eXBlID0gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mKSAoUGFyYW0ub3B0aW9uYWwgYXJnX3R5cGUpIGluXG4gICAgICAgIGxldCBzZXQgciBhcmdfdHlwZSA9IGNhbGwgKGZ1biB4IC0+IHIgOj0geCkgYXJnX3R5cGUgaW5cbiAgICAgICAgbGV0IHNldF9ib29sIHIgYiA9IGdlbiAoZnVuIHBhc3NlZCAtPiBpZiBwYXNzZWQgdGhlbiByIDo9IGIpIFBhcmFtLm5vX2FyZyBpblxuICAgICAgICBhY2NcbiAgICAgICAgKytcbiAgICAgICAgbWF0Y2ggKHNwZWMgOiBTdGRsaWIuQXJnLnNwZWMpIHdpdGhcbiAgICAgICAgfCBVbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIFBhcmFtLm5vX2FyZ1xuICAgICAgICB8IFNldCByIC0+IHNldF9ib29sIHIgdHJ1ZVxuICAgICAgICB8IENsZWFyIHIgLT4gc2V0X2Jvb2wgciBmYWxzZVxuICAgICAgICB8IFN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT4gc2V0IHIgc3RyaW5nXG4gICAgICAgIHwgSW50IGYgLT4gY2FsbCBmIGludFxuICAgICAgICB8IFNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBGbG9hdCBmIC0+IGNhbGwgZiBmbG9hdFxuICAgICAgICB8IFNldF9mbG9hdCByIC0+IHNldCByIGZsb2F0XG4gICAgICAgIHwgQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgU3ltYm9sIChzeW1zLCBmKSAtPlxuICAgICAgICAgIGxldCBhcmdfdHlwZSA9XG4gICAgICAgICAgICBBcmdfdHlwZS5vZl9hbGlzdF9leG5cbiAgICAgICAgICAgICAgfmxpc3RfdmFsdWVzX2luX2hlbHA6ZmFsc2VcbiAgICAgICAgICAgICAgKExpc3QubWFwIHN5bXMgfmY6KGZ1biBzeW0gLT4gc3ltLCBzeW0pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY2FsbCBmIGFyZ190eXBlXG4gICAgICAgIHwgUmVzdCBmIC0+IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZjooTGlzdC5pdGVyIH5mKSkgUGFyYW0uZXNjYXBlXG4gICAgICAgIHwgVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEV4cGFuZCBfKSBbQGlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDA1LCAwKV0pIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuRXhwYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKFJlc3RfYWxsIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMTIsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5SZXN0X2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBGbGFnLkRlcHJlY2F0ZWRcbiAgICAgIGluY2x1ZGUgQW5vbnMuRGVwcmVjYXRlZFxuICAgIGVuZFxuXG4gICAgbGV0IGFyZ19uYW1lcyA9IFBhcmFtLmFyZ19uYW1lc1xuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gUGFyYW0uQ2hvb3NlX29uZS5JZl9ub3RoaW5nX2Nob3NlblxuXG4gICAgbGV0IGNob29zZV9vbmUgPSBQYXJhbS5jaG9vc2Vfb25lXG4gICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsID0gUGFyYW0uY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICBsZXQgYW5kX2FyZ19uYW1lcyA9IFBhcmFtLmFuZF9hcmdfbmFtZXNcbiAgICBsZXQgYW5kX2FyZ19uYW1lID0gUGFyYW0uYW5kX2FyZ19uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0IExhenkudFxuICAgIDsgYm9keSA6IChwYXRoOnN0cmluZyBsaXN0IC0+IHVuaXQpIG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGUgdCA6IF8gU2hhcGUuR3JvdXBfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCB0LnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzdWJjb21tYW5kX3RvX3NoYXBlKVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgYWJzX3BhdGggPSBTaGFwZS5Qcml2YXRlLmFic19wYXRoXG5sZXQgY29tcF9jd29yZCA9IEVudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBDb21tYW5kX2Jhc2UudFxuICB8IEdyb3VwIG9mIHQgR3JvdXAudFxuICB8IEV4ZWMgb2YgRXhlYy50XG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIHNleHBhYmxlX3NoYXBlIDogdCAtPiBTaGFwZS5TZXhwYWJsZS50ID0gZnVuY3Rpb25cbiAgfCBCYXNlIGJhc2UgLT4gQmFzZSAoQ29tbWFuZF9iYXNlLnNoYXBlIGJhc2UpXG4gIHwgRXhlYyBleGVjIC0+IEV4ZWMgKEV4ZWMuc2hhcGUgZXhlYylcbiAgfCBHcm91cCBncm91cCAtPiBHcm91cCAoR3JvdXAuc2hhcGUgfnN1YmNvbW1hbmRfdG9fc2hhcGU6c2V4cGFibGVfc2hhcGUgZ3JvdXApXG4gIHwgTGF6eSB0aHVuayAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzZXhwYWJsZV9zaGFwZSB0aHVuaylcbjs7XG5cbnR5cGUgKCdtYWluLCAncmVzdWx0KSBiYXNpY19zcGVjX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZ1xuICAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZylcbiAgLT4gKCdtYWluLCB1bml0IC0+ICdyZXN1bHQpIENvbW1hbmRfYmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkNvbW1hbmRfYmFzZS5mbGFncyBpblxuICAgIGxldCBmbGFncyA9XG4gICAgICBleHRlbmRfbWFwX2V4blxuICAgICAgICBmbGFnc1xuICAgICAgICBLZXlfdHlwZS5GbGFnXG4gICAgICAgIH5rZXk6bmFtZVxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBGbGFnLk51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBpZ25vcmVcbiAgICAgICAgOyBhY3Rpb24gPSBQcmludF9pbmZvX2FuZF9xdWl0IChmdW4gZW52IC0+IHRleHQgZW52KVxuICAgICAgICA7IGRvYyA9IHNwcmludGYgXCIgcHJpbnQgJXMgYW5kIGV4aXRcIiB0ZXh0X3N1bW1hcnlcbiAgICAgICAgOyBuYW1lX21hdGNoaW5nID0gYFByZWZpeFxuICAgICAgICB9XG4gICAgaW5cbiAgICB7IGJhc2Ugd2l0aCBmbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgeyBDb21tYW5kX2Jhc2UuUGFyYW0udXNhZ2U7IGZsYWdzOyBmIH0gPVxuICBsZXQgZmxhZ3MgPSBmbGFncyAoKSBpblxuICBsZXQgdXNhZ2UgPSB1c2FnZSAoKSBpblxuICBsZXQgYW5vbnMgKCkgPVxuICAgIGxldCBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZyBpblxuICAgIGYgKClcbiAgICA+PnwgZnVuIHBhcmFtcyBgUGFyc2VfYXJncyAtPlxuICAgIGxldCBvdXRjb21lID0gcGFyYW1zICgpIGluXG4gICAgbWF0Y2ggb3V0Y29tZS5yZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgLT4gZGllIFwiJXNcIiAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnIpICgpXG4gICAgfCBPayB0aHVuayAtPiBmdW4gYFJ1bl9tYWluIC0+IHRodW5rICgpXG4gIGluXG4gIGxldCBmbGFncyA9IEZsYWcuSW50ZXJuYWwuY3JlYXRlIGZsYWdzIGluXG4gIGxldCBiYXNlID0geyBDb21tYW5kX2Jhc2Uuc3VtbWFyeTsgcmVhZG1lOyB1c2FnZTsgZmxhZ3M7IGFub25zIH0gaW5cbiAgbGV0IGJhc2UgPVxuICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgYmFzZVxuICAgICAgfm5hbWU6XCItaGVscFwiXG4gICAgICB+YWxpYXNlczpbIFwiLT9cIiBdXG4gICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0taGVscFwiIF1cbiAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGlzIGhlbHAgdGV4dFwiXG4gICAgICB+dGV4dDooZnVuIGVudiAtPiBMYXp5LmZvcmNlIChFbnYuZmluZF9leG4gZW52IENvbW1hbmRfYmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjIG1haW4gPVxuICBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIChDb21tYW5kX2Jhc2UuU3BlYy50b19wYXJhbSBzcGVjIG1haW4pXG47O1xuXG5sZXQgc3Vic19rZXkgOiAoc3RyaW5nICogdCkgbGlzdCBFbnYuS2V5LnQgPSBFbnYua2V5X2NyZWF0ZSBcInN1YmNvbW1hbmRzXCJcblxubGV0IGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCBzdWJjb21tYW5kcyA9XG4gICAgTGF6eS5tYXAgYWxpc3QgfmY6KGZ1biBhbGlzdCAtPlxuICAgICAgbGV0IGFsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAobmFtZSwgdCkgLT4gbm9ybWFsaXplIEtleV90eXBlLlN1YmNvbW1hbmQgbmFtZSwgdClcbiAgICAgIGluXG4gICAgICBtYXRjaCBNYXAub2ZfYWxpc3QgKG1vZHVsZSBTdHJpbmcpIGFsaXN0IHdpdGhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkgbmFtZSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBzdWJjb21tYW5kcyBuYW1lZCAlc1wiIG5hbWUgKClcbiAgICAgIHwgYE9rIG1hcCAtPlxuICAgICAgICAobWF0Y2ggcHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciB3aXRoXG4gICAgICAgICB8IFNvbWUgKCkgLT4gYWxpc3RcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAudG9fYWxpc3QgbWFwKSlcbiAgaW5cbiAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbjs7XG5cbmxldCBncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgKExhenkuZnJvbV92YWwgYWxpc3QpXG47O1xuXG5sZXQgZXhlYyB+c3VtbWFyeSA/cmVhZG1lID8oY2hpbGRfc3ViY29tbWFuZCA9IFtdKSA/ZW52IH5wYXRoX3RvX2V4ZSAoKSA9XG4gIGxldCB3b3JraW5nX2RpciA9XG4gICAgRmlsZW5hbWVfYmFzZS5kaXJuYW1lXG4gICAgQEBcbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgXyB8IGBSZWxhdGl2ZV90b19tZSBfIC0+IFN0ZGxpYi5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBTdGRsaWIuU3lzLmFyZ3YuKDApXG4gIGluXG4gIGxldCBwYXRoX3RvX2V4ZSA9XG4gICAgbWF0Y2ggcGF0aF90b19leGUgd2l0aFxuICAgIHwgYEFic29sdXRlIHAgLT5cbiAgICAgIGlmIG5vdCAoRmlsZW5hbWVfYmFzZS5pc19hYnNvbHV0ZSBwKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcIlBhdGggcGFzc2VkIHRvIGBBYnNvbHV0ZSBtdXN0IGJlIGFic29sdXRlXCJcbiAgICAgIGVsc2UgcFxuICAgIHwgYFJlbGF0aXZlX3RvX21lIHAgfCBgUmVsYXRpdmVfdG9fYXJndjAgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZV9iYXNlLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbCkgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X3ZlcnNpb24gfnZlcnNpb24gPSBwcmludF9lbmRsaW5lIChmb3JjZSB2ZXJzaW9uKVxuICBsZXQgcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbyA9IHByaW50X2VuZGxpbmUgKGZvcmNlIGJ1aWxkX2luZm8pXG5cbiAgbGV0IGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8gPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcInByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cIlxuICAgICAgQ29tbWFuZF9iYXNlLlBhcmFtLihcbiAgICAgICAgcmV0dXJuIChmdW4gdmVyc2lvbl9mbGFnIGJ1aWxkX2luZm9fZmxhZyAtPlxuICAgICAgICAgIGlmIGJ1aWxkX2luZm9fZmxhZ1xuICAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgIGVsc2UgaWYgdmVyc2lvbl9mbGFnXG4gICAgICAgICAgdGhlbiBwcmludF92ZXJzaW9uIH52ZXJzaW9uXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvO1xuICAgICAgICAgICAgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbik7XG4gICAgICAgICAgZXhpdCAwKVxuICAgICAgICA8Kj4gZmxhZyBcIi12ZXJzaW9uXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgdGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWJ1aWxkLWluZm9cIiBub19hcmcgfmRvYzpcIiBwcmludCBidWlsZCBpbmZvIGZvciB0aGlzIGJ1aWxkXCIpXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gdW52ZXJzaW9uZWQgPVxuICAgIG1hdGNoIHVudmVyc2lvbmVkIHdpdGhcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItdmVyc2lvblwiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tdmVyc2lvblwiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwidGhlIHZlcnNpb24gb2YgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIHZlcnNpb24pXG4gICAgICBpblxuICAgICAgbGV0IGJhc2UgPVxuICAgICAgICBCYWlsb3V0X2R1bXBfZmxhZy5hZGRcbiAgICAgICAgICBiYXNlXG4gICAgICAgICAgfm5hbWU6XCItYnVpbGQtaW5mb1wiXG4gICAgICAgICAgfmFsaWFzZXM6W11cbiAgICAgICAgICB+YWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHA6WyBcIi0tYnVpbGQtaW5mb1wiIF1cbiAgICAgICAgICB+dGV4dF9zdW1tYXJ5OlwiaW5mbyBhYm91dCB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgYnVpbGRfaW5mbylcbiAgICAgIGluXG4gICAgICBCYXNlIGJhc2VcbiAgICB8IEdyb3VwIGdyb3VwIC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBncm91cC5Hcm91cC5zdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgc3ViY29tbWFuZHNcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJ2ZXJzaW9uXCJcbiAgICAgICAgICAgIChjb21tYW5kIH52ZXJzaW9uIH5idWlsZF9pbmZvKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IGdyb3VwIHdpdGggR3JvdXAuc3ViY29tbWFuZHMgfVxuICAgIHwgRXhlYyBleGVjIC0+IEV4ZWMgZXhlY1xuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGQgfnZlcnNpb24gfmJ1aWxkX2luZm8gKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbm9ybWFsaXplX3ZlcnNpb25fbGluZXMgbGluZXMgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlxcblwiIChMaXN0LnNvcnQgbGluZXMgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdmVyc2lvbiA9IGxhenkgKG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIFZlcnNpb25fdXRpbC52ZXJzaW9uX2xpc3QpXG5cbiAgbGV0IGRlZmF1bHRfYnVpbGRfaW5mbyA9XG4gICAgbGF6eVxuICAgICAgKCogbGF6eSB0byBhdm9pZCBsb2FkaW5nIGFsbCB0aGUgdGltZSB6b25lIHN0dWZmIGF0IHRvcGxldmVsICopXG4gICAgICAoVmVyc2lvbl91dGlsLnJlcHJpbnRfYnVpbGRfaW5mbyBWZXJzaW9uX3V0aWwuVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbl9saXN0ID0gWyBcImhnOi8vc29tZS9wYXRoXzB4ZGVhZGJlZWZcIjsgXCJzc2g6Ly9hL3BhdGhfOGJhZGYwMGRcIiBdXG4gICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwICgpKVxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIENvbW1hbmRfYmFzZS5TcGVjXG5cbiAgbGV0IHBhdGggPSBtYXAgfmY6UGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gIG1vZHVsZSBTcGVjID0gU3BlYy5EZXByZWNhdGVkXG5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJ5XG5cbiAgbGV0IHJlYyBnZXRfZmxhZ19uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIGJhc2UgLT4gYmFzZS5Db21tYW5kX2Jhc2UuZmxhZ3MgfD4gTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkNvbW1hbmRfYmFzZS5EZXByZWNhdGVkLnN1YmNvbW1hbmRfY21wX2ZzdFxuICAgICAgICAgICAgICAgICAgKENvbW1hbmRfYmFzZS5EZXByZWNhdGVkLmZsYWdzX2hlbHAgfmRpc3BsYXlfaGVscF9mbGFnczpmYWxzZSBiYXNlKSlcbiAgICAgICAgZWxzZSBbIGJhc2VfaGVscCBdXG4gICAgICB8IEdyb3VwIHsgc3VtbWFyeTsgc3ViY29tbWFuZHM7IHJlYWRtZSA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgICAgKHMgXiBjbWQsIHN1bW1hcnkpXG4gICAgICAgIDo6IChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6Q29tbWFuZF9iYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKVxuICAgICAgICAgICApXG4gICAgICB8IEV4ZWMgXyAtPlxuICAgICAgICAoKiBDb21tYW5kLmV4ZWMgZG9lcyBub3Qgc3VwcG9ydCBkZXByZWNhdGVkIGNvbW1hbmRzICopXG4gICAgICAgIFtdXG4gICAgaW5cbiAgICBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3VuaXggKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBzdHJpbmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVmVyc2lvbl9pbmZvID0gVmVyc2lvbl9pbmZvIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlZlcnNpb25fdXRpbClcblxuICBtb2R1bGUgRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXIgOiBGb3JfdW5peCB3aXRoIHR5cGUgZW52X3ZhciA6PSBFbnZfdmFyLnQgPSBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KEVudl92YXIudG9fc3RyaW5nIGtleSkgfmRhdGFcbiAgICAgIGxldCB1bnNldGVudiBrZXkgPSB1bnNldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuICAgICAgbGV0IHVuc2FmZV9nZXRlbnYga2V5ID0gdW5zYWZlX2dldGVudiAoRW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICBsZXQgY29udmVydF9lbnYgZW52ID1cbiAgICAgICAgbGV0IGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0ID1cbiAgICAgICAgICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gKGVudl92YXIsIHN0cikgLT4gRW52X3Zhci50b19zdHJpbmcgZW52X3Zhciwgc3RyKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBlbnYgd2l0aFxuICAgICAgICB8IGBSZXBsYWNlIGxpc3QgLT4gYFJlcGxhY2UgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBFeHRlbmQgbGlzdCAtPiBgRXh0ZW5kIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgT3ZlcnJpZGUgbGlzdCAtPiBgT3ZlcnJpZGUgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBfIGFzIHJlcGxhY2UgLT4gcmVwbGFjZVxuICAgICAgOztcblxuICAgICAgbGV0IGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnYgKCkgPVxuICAgICAgICBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52OihPcHRpb24ubWFwIGVudiB+Zjpjb252ZXJ0X2VudikgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfcHJvY2Vzc19lbnYgP3dvcmtpbmdfZGlyID9wcm9nX3NlYXJjaF9wYXRoID9hcmd2MCB+cHJvZyB+YXJncyB+ZW52ICgpID1cbiAgICAgICAgY3JlYXRlX3Byb2Nlc3NfZW52XG4gICAgICAgICAgP3dvcmtpbmdfZGlyXG4gICAgICAgICAgP3Byb2dfc2VhcmNoX3BhdGhcbiAgICAgICAgICA/YXJndjBcbiAgICAgICAgICB+cHJvZ1xuICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgfmVudjooY29udmVydF9lbnYgZW52KVxuICAgICAgICAgICgpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyXG5cbiAgKCogQ2xlYXIgdGhlIHNldHRpbmcgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgYXNzb2NpYXRlZCB3aXRoIGNvbW1hbmQtbGluZVxuICAgICBjb21wbGV0aW9uIGFuZCByZWN1cnNpdmUgaGVscCBzbyB0aGF0IHN1YnByb2Nlc3NlcyBkb24ndCBzZWUgdGhlbS5cblxuICAgICBVc2UgW3Vuc2FmZV9nZXRlbnZdIHNvIHNldHVpZC1yb290IHByb2dyYW1zIGNhbiBzdGlsbCByZWFkIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICAgVGhlcmUgaXMgbm8gc2VjdXJpdHkgcmlzayBoZXJlIGJlY2F1c2UgdGhlIHZhbHVlcyBhcmUgb25seSB1c2VkIGFzIHRyaWdnZXJzIHRvIGR1bXBcbiAgICAgb3V0IGNvbW1hbmQgaW5mb3JtYXRpb24uICopXG4gIGxldCBnZXRlbnZfYW5kX2NsZWFyIHZhciA9XG4gICAgbGV0IHZhbHVlID0gVW5peC51bnNhZmVfZ2V0ZW52IHZhciBpblxuICAgIGlmIE9wdGlvbi5pc19zb21lIHZhbHVlIHRoZW4gVW5peC51bnNldGVudiB2YXI7XG4gICAgdmFsdWVcbiAgOztcblxuICBsZXQgbWF5YmVfY29tcF9jd29yZCAoKSA9IGdldGVudl9hbmRfY2xlYXIgY29tcF9jd29yZCB8PiBPcHRpb24ubWFwIH5mOkludC5vZl9zdHJpbmdcblxuICBsZXQgc2V0X2NvbXBfY3dvcmQgbmV3X3ZhbHVlID1cbiAgICBsZXQgbmV3X3ZhbHVlID0gSW50LnRvX3N0cmluZyBuZXdfdmFsdWUgaW5cbiAgICBVbml4LnB1dGVudiB+a2V5OmNvbXBfY3dvcmQgfmRhdGE6bmV3X3ZhbHVlXG4gIDs7XG5cbiAgbW9kdWxlIEV4ZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4ZWNcblxuICAgIGxldCBleGVjX3dpdGhfYXJncyB0IH5hcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICBsZXQgcHJvZyA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlIGluXG4gICAgICBsZXQgYXJncyA9IHQuY2hpbGRfc3ViY29tbWFuZCBAIGFyZ3MgaW5cbiAgICAgIGxldCBlbnYgPSB0LmVudiBpblxuICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfbmV3X2NvbXBfY3dvcmQgfmY6KGZ1biBuIC0+XG4gICAgICAgICgqIFRoZSBsb2dpYyBmb3IgdHJhY2tpbmcgW21heWJlX25ld19jb21wX2N3b3JkXSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHdoZXRoZXJcbiAgICAgICAgICAgdGhpcyBleGVjIHNwZWNpZmllcyBhIGNoaWxkIHN1YmNvbW1hbmQuIElmIGl0IGRvZXMsIENPTVBfQ1dPUkQgbmVlZHMgdG8gYmUgc2V0XG4gICAgICAgICAgIGhpZ2hlciB0byBhY2NvdW50IGZvciB0aGUgYXJndW1lbnRzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2hpbGQgc3ViY29tbWFuZC4gKilcbiAgICAgICAgc2V0X2NvbXBfY3dvcmQgKG4gKyBMaXN0Lmxlbmd0aCB0LmNoaWxkX3N1YmNvbW1hbmQpKTtcbiAgICAgIE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgICAgICAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3Zhci5Vbml4LmV4ZWMgP2VudiB+cHJvZyB+YXJndjoocHJvZyA6OiBhcmdzKSAoKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYXBlLlNleHBhYmxlXG5cbiAgICBsZXQgcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciAocHJvY2Vzc19pbmZvIDogVW5peC5Qcm9jZXNzX2luZm8udCkgPVxuICAgICAgKCogV2UgbmVlZCB0byByZWFkIGVhY2ggb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgaW4gYSBzZXBhcmF0ZSB0aHJlYWQgdG8gYXZvaWQgZGVhZGxvY2tzXG4gICAgICAgICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBkZWNpZGVzIHRvIHdhaXQgZm9yIGEgcmVhZCBvbiBvbmUgYmVmb3JlIGNsb3NpbmcgdGhlIG90aGVyLlxuICAgICAgICAgQnVmZmVyaW5nIG1heSBoaWRlIHRoaXMgcHJvYmxlbSB1bnRpbCBvdXRwdXQgaXMgXCJzdWZmaWNpZW50bHkgbGFyZ2VcIi4gKilcbiAgICAgIGxldCBzdGFydF9yZWFkaW5nIGRlc2NyIGluZm8gPVxuICAgICAgICBsZXQgb3V0cHV0ID0gcmVmIE5vbmUgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgb3V0cHV0IDo9IFNvbWUgcmVzdWx0KVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJlYWQuam9pbiB0aHJlYWQ7XG4gICAgICAgICAgVW5peC5jbG9zZSBkZXNjcjtcbiAgICAgICAgICBtYXRjaCAhb3V0cHV0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUcgZmFpbGVkIHRvIHJlYWRcIiAoaW5mbyA6IEluZm8udCldXG4gICAgICAgICAgfCBTb21lIChPayBvdXRwdXQpIC0+IG91dHB1dFxuICAgICAgICAgIHwgU29tZSAoRXJyb3IgZXhuKSAtPiByYWlzZSBleG4pXG4gICAgICBpblxuICAgICAgKCogV2UgbWlnaHQgaGFuZyBmb3JldmVyIHRyeWluZyB0byBqb2luIHRoZSByZWFkaW5nIHRocmVhZHMgaWYgdGhlIGNoaWxkIHByb2Nlc3Mga2VlcHNcbiAgICAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3Blbi4gTm90IGhhbmRsaW5nIHRoaXMgYmVjYXVzZSBJIHRoaW5rIHdlJ3ZlIG5ldmVyIHNlZW4gaXRcbiAgICAgICAgIGluIHRoZSB3aWxkIGRlc3BpdGUgcnVubmluZyB2dWxuZXJhYmxlIGNvZGUgZm9yIHllYXJzLiAqKVxuICAgICAgKCogV2UgaGF2ZSB0byBzdGFydCBib3RoIHRocmVhZHMgYmVmb3JlIGpvaW5pbmcgYW55IG9mIHRoZW0uICopXG4gICAgICBsZXQgZmluaXNoX3N0ZG91dCA9IHN0YXJ0X3JlYWRpbmcgcHJvY2Vzc19pbmZvLnN0ZG91dCAoSW5mby5vZl9zdHJpbmcgXCJzdGRvdXRcIikgaW5cbiAgICAgIGxldCBmaW5pc2hfc3RkZXJyID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3RkZXJyIChJbmZvLm9mX3N0cmluZyBcInN0ZGVyclwiKSBpblxuICAgICAgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZG91dCAoKSwgU3RhZ2VkLnVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPVxuICAgICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zIHw+IFNldC5zZXhwX29mX21fX3QgKG1vZHVsZSBJbnQpIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBVbml4LndhaXQgcHJvY2Vzc19pbmZvLnBpZDtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IFZlcnNpb25lZC50X29mX3NleHAgfD4gb2ZfdmVyc2lvbmVkIHdpdGhcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcImNhbm5vdCBwYXJzZSBjb21tYW5kIHNoYXBlXCJcbiAgICAgICAgICAgICAgfl86KGV4biA6IGV4bilcbiAgICAgICAgICAgICAgKHN0ZG91dCA6IHN0cmluZylcbiAgICAgICAgICAgICAgKHN0ZGVyciA6IHN0cmluZyldXG4gICAgICB8IHQgLT4gdFxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZpbmQgKHQgOiB0KSB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICAgIG1hdGNoIHBhdGhfdG9fc3ViY29tbWFuZCB3aXRoXG4gICAgICB8IFtdIC0+IHRcbiAgICAgIHwgc3ViIDo6IHN1YnMgLT5cbiAgICAgICAgKG1hdGNoIHQgd2l0aFxuICAgICAgICAgfCBCYXNlIF8gLT4gZmFpbHdpdGhmIFwidW5leHBlY3RlZCBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICB8IExhenkgdGh1bmsgLT4gZmluZCAoTGF6eS5mb3JjZSB0aHVuaykgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgfCBFeGVjIHsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBjaGlsZF9zdWJjb21tYW5kOyBfIH0gLT5cbiAgICAgICAgICAgZmluZFxuICAgICAgICAgICAgIChvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kKVxuICAgICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6KHN1YiA6OiAoc3VicyBAIGNoaWxkX3N1YmNvbW1hbmQpKVxuICAgICAgICAgfCBHcm91cCBnIC0+XG4gICAgICAgICAgIChtYXRjaCBMaXN0LkFzc29jLmZpbmQgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcykgfmVxdWFsOlN0cmluZy5lcXVhbCBzdWIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcInVua25vd24gc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgICAgfCBTb21lIHQgLT4gZmluZCB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6c3VicykpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZCA9XG4gICAgU2V4cGFibGUub2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZFxuICAgIHw+IHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQ6W11cbiAgOztcblxuICBsZXQgcmVjIHNoYXBlX29mX3Byb3h5IHByb3h5IDogU2hhcGUudCA9IHNoYXBlX29mX3Byb3h5X2tpbmQgcHJveHkuUHJveHkua2luZFxuXG4gIGFuZCBzaGFwZV9vZl9leGUgKCkgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpciA9XG4gICAgc2hhcGVfb2ZfcHJveHkgKHByb3h5X29mX2V4ZSB+d29ya2luZ19kaXIgcGF0aF90b19leGUgY2hpbGRfc3ViY29tbWFuZClcblxuICBhbmQgc2hhcGVfb2ZfcHJveHlfa2luZCBraW5kID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyBiXG4gICAgfCBMYXp5IGwgLT4gTGF6eSAoTGF6eS5tYXAgfmY6c2hhcGVfb2ZfcHJveHlfa2luZCBsKVxuICAgIHwgR3JvdXAgZyAtPlxuICAgICAgR3JvdXBcbiAgICAgICAgeyBnIHdpdGhcbiAgICAgICAgICBzdWJjb21tYW5kcyA9IExhenkubWFwIGcuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnNoYXBlX29mX3Byb3h5KVxuICAgICAgICB9XG4gICAgfCBFeGVjICh7IGNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChlLCBzaGFwZV9vZl9leGUgfmNoaWxkX3N1YmNvbW1hbmQgfnBhdGhfdG9fZXhlIH53b3JraW5nX2RpcilcbiAgOztcblxuICBsZXQgcmVjIHNoYXBlIHQgOiBTaGFwZS50ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJhc2UgYiAtPiBCYXNpYyAoQ29tbWFuZF9iYXNlLnNoYXBlIGIpXG4gICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzaGFwZSBnKVxuICAgIHwgRXhlYyAoeyBFeGVjLmNoaWxkX3N1YmNvbW1hbmQ7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgXyB9IGFzIGUpIC0+XG4gICAgICBFeGVjIChFeGVjLnNoYXBlIGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICAgIHwgTGF6eSB0aHVuayAtPiBzaGFwZSAoTGF6eS5mb3JjZSB0aHVuaylcbiAgOztcblxuICBsZXQgZ2F0aGVyX2hlbHAgfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzIHNoYXBlID1cbiAgICBsZXQgcmVjIGxvb3AgcGF0aCBhY2Mgc2hhcGUgPVxuICAgICAgbGV0IHN0cmluZ19vZl9wYXRoID0gaWYgZXhwYW5kX2RvdHMgdGhlbiBQYXRoLnRvX3N0cmluZyBlbHNlIFBhdGgudG9fc3RyaW5nX2RvdHMgaW5cbiAgICAgIGxldCBnYXRoZXJfZ3JvdXAgcGF0aCBhY2Mgc3ViY29tbWFuZHMgPVxuICAgICAgICBsZXQgZmlsdGVyZWRfc3ViY29tbWFuZHMgPVxuICAgICAgICAgICgqIE9ubHkgc2hvdyB0aGUgW2hlbHBdIHN1YmNvbW1hbmQgYXQgdG9wLWxldmVsLiAqKVxuICAgICAgICAgIGlmIFBhdGguaXNfZW1wdHkgcGF0aFxuICAgICAgICAgIHRoZW4gc3ViY29tbWFuZHNcbiAgICAgICAgICBlbHNlIExpc3QuQXNzb2MucmVtb3ZlIH5lcXVhbDpTdHJpbmcuKCA9ICkgc3ViY29tbWFuZHMgXCJoZWxwXCJcbiAgICAgICAgaW5cbiAgICAgICAgZmlsdGVyZWRfc3ViY29tbWFuZHNcbiAgICAgICAgfD4gTGlzdC5zdGFibGVfc29ydCB+Y29tcGFyZTooZnVuIGEgYiAtPiBoZWxwX3NjcmVlbl9jb21wYXJlIChmc3QgYSkgKGZzdCBiKSlcbiAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyAoc3ViY29tbWFuZCwgc2hhcGUpIC0+XG4gICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgbGV0IG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIGluXG4gICAgICAgICAgbGV0IGRvYyA9IFNoYXBlLmdldF9zdW1tYXJ5IHNoYXBlIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHsgU2hhcGUuRmxhZ19pbmZvLm5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gOjogYWNjIGluXG4gICAgICAgICAgaWYgcmVjdXJzaXZlIHRoZW4gbG9vcCBwYXRoIGFjYyBzaGFwZSBlbHNlIGFjYylcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgICB8IEV4ZWMgKF8sIHNoYXBlKSAtPlxuICAgICAgICAoKiBJZiB0aGUgZXhlY3V0YWJsZSBiZWluZyBjYWxsZWQgZG9lc24ndCB1c2UgW0NvcmUuQ29tbWFuZF0sIHRoZW4gc2V4cCBleHRyYWN0aW9uXG4gICAgICAgICAgIHdpbGwgZmFpbC4gKilcbiAgICAgICAgKHRyeSBsb29wIHBhdGggYWNjIChzaGFwZSAoKSkgd2l0aFxuICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIHwgR3JvdXAgZyAtPiBnYXRoZXJfZ3JvdXAgcGF0aCBhY2MgKExhenkuZm9yY2UgZy5zdWJjb21tYW5kcylcbiAgICAgIHwgQmFzaWMgYiAtPlxuICAgICAgICBpZiBmbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYi5mbGFnc1xuICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZm10IC0+IFN0cmluZy4oIDw+ICkgZm10Lm5hbWUgXCJbLWhlbHBdXCIpXG4gICAgICAgICAgfD4gTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBmbXQgLT5cbiAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZDpmbXQubmFtZSBpblxuICAgICAgICAgICAgbGV0IGZtdCA9IHsgZm10IHdpdGggbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggfSBpblxuICAgICAgICAgICAgZm10IDo6IGFjYylcbiAgICAgICAgZWxzZSBhY2NcbiAgICAgIHwgTGF6eSB0aHVuayAtPiBsb29wIHBhdGggYWNjIChMYXp5LmZvcmNlIHRodW5rKVxuICAgIGluXG4gICAgbG9vcCBQYXRoLmVtcHR5IFtdIHNoYXBlIHw+IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IH5mbGFncyB+cGF0aCB+c3VtbWFyeSB+cmVhZG1lIH5mb3JtYXRfbGlzdCA9XG4gICAgdW5wYXJhZ3JhcGhzXG4gICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICBbIFNvbWUgc3VtbWFyeVxuICAgICAgICAgOyBTb21lIChTdHJpbmcuY29uY2F0IFsgXCIgIFwiOyBQYXRoLnRvX3N0cmluZyBwYXRoOyBcIiBTVUJDT01NQU5EXCIgXSlcbiAgICAgICAgIDsgcmVhZG1lXG4gICAgICAgICA7IFNvbWUgKGlmIGZsYWdzIHRoZW4gXCI9PT0gc3ViY29tbWFuZHMgYW5kIGZsYWdzID09PVwiIGVsc2UgXCI9PT0gc3ViY29tbWFuZHMgPT09XCIpXG4gICAgICAgICA7IFNvbWUgKFNoYXBlLkZsYWdfaGVscF9kaXNwbGF5LnRvX3N0cmluZyBmb3JtYXRfbGlzdClcbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZSA9XG4gICAgbGV0IGZvcm1hdF9saXN0ID0gZ2F0aGVyX2hlbHAgfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlIHNoYXBlIGluXG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgQmFzaWMgYiAtPlxuICAgICAgbGV0IHVzYWdlID0gU2hhcGUuQmFzZV9pbmZvLmdldF91c2FnZSBiIGluXG4gICAgICB1bnBhcmFncmFwaHNcbiAgICAgICAgKExpc3QuZmlsdGVyX29wdFxuICAgICAgICAgICBbIFNvbWUgYi5zdW1tYXJ5XG4gICAgICAgICAgIDsgU29tZSAoXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIFwiIF4gdXNhZ2UpXG4gICAgICAgICAgIDsgYi5yZWFkbWVcbiAgICAgICAgICAgOyBTb21lIFwiPT09IGZsYWdzID09PVwiXG4gICAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGIuZmxhZ3MpXG4gICAgICAgICAgIF0pXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTpnLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTpnLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBFeGVjIChlLCBfKSAtPlxuICAgICAgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHRcbiAgICAgICAgfmZsYWdzXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5yZWFkbWU6ZS5yZWFkbWVcbiAgICAgICAgfnN1bW1hcnk6ZS5zdW1tYXJ5XG4gICAgICAgIH5mb3JtYXRfbGlzdFxuICAgIHwgTGF6eSB0aHVuayAtPiBoZWxwX2Zvcl9zaGFwZSAoTGF6eS5mb3JjZSB0aHVuaykgcGF0aCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmVcbiAgOztcblxuICBsZXQgaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUgPVxuICAgIGJhc2ljXG4gICAgICB+c3VtbWFyeTpcImV4cGxhaW4gYSBnaXZlbiBzdWJjb21tYW5kIChwZXJoYXBzIHJlY3Vyc2l2ZWx5KVwiXG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uKFxuICAgICAgICByZXR1cm4gKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBtYXRjaCBFbnYuZmluZCBlbnYgc3Vic19rZXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgKCogbWFpbnRhaW5lZCBieSBbZGlzcGF0Y2hdICopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCA9XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGgucG9wX2hlbHAgcGF0aCBpblxuICAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgIFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICAgbWF0Y2ggY21kX29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIGluXG4gICAgICAgICAgICAgIHBhdGgsIFNoYXBlLkdyb3VwIHsgcmVhZG1lOyBzdW1tYXJ5OyBzdWJjb21tYW5kcyB9XG4gICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICBsb29rdXBfZXhwYW5kXG4gICAgICAgICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YnMgfmY6KGZ1biB4IC0+IHgsIGBQcmVmaXgpKVxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIFN1YmNvbW1hbmRcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgIGNtZFxuICAgICAgICAgICAgICAgICAgIChQYXRoLnRvX3N0cmluZyBwYXRoKVxuICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBPayAocG9zc2libHlfZXhwYW5kZWRfbmFtZSwgdCkgLT5cbiAgICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgICAgICAgICBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHBhdGgsIHNoYXBlIHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gICAgICAgIDwqPiBmbGFnIFwiLXJlY3Vyc2l2ZVwiIG5vX2FyZyB+ZG9jOlwiIHNob3cgc3ViY29tbWFuZHMgb2Ygc3ViY29tbWFuZHMsIGV0Yy5cIlxuICAgICAgICA8Kj4gZmxhZyBcIi1mbGFnc1wiIG5vX2FyZyB+ZG9jOlwiIHNob3cgZmxhZ3MgYXMgd2VsbCBpbiByZWN1cnNpdmUgaGVscFwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgPCo+IHBhdGhcbiAgICAgICAgPCo+IGVudlxuICAgICAgICA8Kj4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICA7O1xuXG4gICgqIFRoaXMgc2NyaXB0IHdvcmtzIGluIGJvdGggYmFzaCAodmlhIHJlYWRhcnJheSkgYW5kIHpzaCAodmlhIHJlYWQgLUEpLiAgSWYgeW91IGNoYW5nZVxuICAgICBpdCwgcGxlYXNlIHRlc3QgaW4gYm90aCBiYXNoIGFuZCB6c2guICBJdCBkb2VzIG5vdCB3b3JrIHRjc2ggKGRpZmZlcmVudCBmdW5jdGlvblxuICAgICBzeW50YXgpLiAqKVxuICBsZXQgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCkgPVxuICAgIGxldCBmbmFtZSA9IHNwcmludGYgXCJfanNhdXRvY29tXyVzXCIgKFBpZC50b19zdHJpbmcgKFVuaXguZ2V0cGlkICgpKSkgaW5cbiAgICBsZXQgYXJndl8wID0gU3RkbGliLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBTZXQuaW50ZXIgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zIHN1cHBvcnRlZF92ZXJzaW9uc1xuICAgIHw+IFNldC5tYXhfZWx0XG4gICAgfD4gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIEVycm9yLmNyZWF0ZVxuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiQ291bGRuJ3QgY2hvb3NlIGEgc3VwcG9ydGVkIGhlbHAgb3V0cHV0IHZlcnNpb24gZm9yIENvbW1hbmQuZXhlYyBmcm9tIHRoZSBnaXZlbiBcXFxuICAgICAgICAgc3VwcG9ydGVkIHZlcnNpb25zLlwiXG4gICAgICAgIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9uc1xuICAgICAgICAoU2V0LnNleHBfb2ZfbV9fdCAobW9kdWxlIEludCkpXG4gICAgICB8PiBFcnJvci5yYWlzZVxuICAgIHwgU29tZSB2ZXJzaW9uX3RvX3VzZSAtPlxuICAgICAgc2V4cGFibGVfc2hhcGUgdFxuICAgICAgfD4gU2V4cGFibGUuZmluZCB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICB8PiBTZXhwYWJsZS50b192ZXJzaW9uZWQgfnZlcnNpb25fdG9fdXNlXG4gICAgICB8PiBTZXhwYWJsZS5WZXJzaW9uZWQuc2V4cF9vZl90XG4gICAgICB8PiBTZXhwLnRvX3N0cmluZ1xuICAgICAgfD4gcHJpbnRfc3RyaW5nXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9lbnZpcm9ubWVudCB0IH5hcmd2ID1cbiAgICBtYXRjaCBhcmd2IHdpdGhcbiAgICB8IFtdIC0+IGZhaWx3aXRoIFwibWlzc2luZyBleGVjdXRhYmxlIG5hbWVcIlxuICAgIHwgY21kIDo6IGFyZ3MgLT5cbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUCkgfmY6KGZ1biB2ZXJzaW9uIC0+XG4gICAgICAgIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgICAgICAgIFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgdmVyc2lvbiB8PiBTZXQubV9fdF9vZl9zZXhwIChtb2R1bGUgSW50KVxuICAgICAgICBpblxuICAgICAgICBkdW1wX2hlbHBfc2V4cCB+c3VwcG9ydGVkX3ZlcnNpb25zIHQgfnBhdGhfdG9fc3ViY29tbWFuZDphcmdzO1xuICAgICAgICBleGl0IDApO1xuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSU5TVEFMTEFUSU9OX0JBU0gpIH5mOihmdW4gXyAtPlxuICAgICAgICBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKTtcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIGNtZCwgYXJnc1xuICA7O1xuXG4gIGxldCBwcm9jZXNzX2FyZ3MgfmNtZCB+YXJncyA9XG4gICAgbGV0IG1heWJlX2NvbXBfY3dvcmQgPSBtYXliZV9jb21wX2N3b3JkICgpIGluXG4gICAgbGV0IGFyZ3MgPVxuICAgICAgbWF0Y2ggbWF5YmVfY29tcF9jd29yZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gQ21kbGluZS5vZl9saXN0IGFyZ3NcbiAgICAgIHwgU29tZSBjb21wX2N3b3JkIC0+XG4gICAgICAgIGxldCBhcmdzID0gTGlzdC50YWtlIChhcmdzIEAgWyBcIlwiIF0pIGNvbXBfY3dvcmQgaW5cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IGFyZ3MgfmluaXQ6Q21kbGluZS5OaWwgfmY6KGZ1biBhcmcgYXJncyAtPlxuICAgICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICAgIHwgQ21kbGluZS5OaWwgLT4gQ21kbGluZS5Db21wbGV0ZSBhcmdcbiAgICAgICAgICB8IF8gLT4gQ21kbGluZS5Db25zIChhcmcsIGFyZ3MpKVxuICAgIGluXG4gICAgUGF0aC5jcmVhdGUgfnBhdGhfdG9fZXhlOmNtZCwgYXJncywgbWF5YmVfY29tcF9jd29yZFxuICA7O1xuXG4gIGxldCByZWMgYWRkX2hlbHBfc3ViY29tbWFuZHMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBfIGFzIHQgLT4gdFxuICAgIHwgRXhlYyBfIGFzIHQgLT4gdFxuICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH0gLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIHN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICAoTGlzdC5Bc3NvYy5tYXAgc3ViY29tbWFuZHMgfmY6YWRkX2hlbHBfc3ViY29tbWFuZHMpXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwiaGVscFwiXG4gICAgICAgICAgICAoaGVscF9zdWJjb21tYW5kIH5zdW1tYXJ5IH5yZWFkbWUpKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZF9oZWxwX3N1YmNvbW1hbmRzIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggPVxuICAgIE9wdGlvbi52YWx1ZV9tYXAgZXh0ZW5kIH5kZWZhdWx0OmFyZ3MgfmY6KGZ1biBmIC0+XG4gICAgICBDbWRsaW5lLmV4dGVuZCBhcmdzIH5leHRlbmQ6ZiB+cGF0aClcbiAgOztcblxuICBsZXQgcmVjIGRpc3BhdGNoXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBlbnZcbiAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgICB+YXJnc1xuICAgICAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBMYXp5IHRodW5rIC0+XG4gICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgIGRpc3BhdGNoXG4gICAgICAgIHRcbiAgICAgICAgZW52XG4gICAgICAgIH5leHRlbmRcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBhcmdzID0gbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCBpblxuICAgICAgbGV0IGhlbHBfdGV4dCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoaGVscF9mb3Jfc2hhcGUgKHNoYXBlIHQpIHBhdGggfnJlY3Vyc2l2ZTpmYWxzZSB+ZmxhZ3M6dHJ1ZSB+ZXhwYW5kX2RvdHM6ZmFsc2UpXG4gICAgICBpblxuICAgICAgQ29tbWFuZF9iYXNlLnJ1blxuICAgICAgICBiYXNlXG4gICAgICAgIGVudlxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+aGVscF90ZXh0XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfm9uX2ZhaWx1cmU6Q29tbWFuZF9iYXNlLnJ1bl9leG5cbiAgICB8IEV4ZWMgZXhlYyAtPlxuICAgICAgbGV0IGFyZ3MgPSBDbWRsaW5lLnRvX2xpc3QgKG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGgpIGluXG4gICAgICBFeGVjLmV4ZWNfd2l0aF9hcmdzIH5hcmdzIGV4ZWMgfm1heWJlX25ld19jb21wX2N3b3JkXG4gICAgfCBHcm91cCAoeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9IGFzIGdyb3VwKSAtPlxuICAgICAgbGV0IGNvbXBsZXRpbmcgPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgICAgbGV0IGVudiA9IEVudi5zZXQgZW52IH5rZXk6c3Vic19rZXkgfmRhdGE6KExhenkuZm9yY2Ugc3VicykgaW5cbiAgICAgIGxldCBkaWVfc2hvd2luZ19oZWxwIG1zZyA9XG4gICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIlc1xcbiUhXCJcbiAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgfmZsYWdzOmZhbHNlXG4gICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gc3ViczsgYm9keSB9KSlcbiAgICAgICAgICAgICAgIHBhdGgpO1xuICAgICAgICAgIGRpZSBcIiVzXCIgbXNnICgpKVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgICBsZXQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgPSBPcHRpb24ubWFwIH5mOkludC5wcmVkIG1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCBza2lwIHJlc3QgPSBwYXJzZV9ncm91cCByZXN0IH5tYXliZV9uZXdfY29tcF9jd29yZCBpblxuICAgICAgICBsZXQgcmVzb2x2ZSBzdWIgcmVzdCA9XG4gICAgICAgICAgbGV0IHN1YnMgPSBMaXN0LkFzc29jLm1hcCAoTGF6eS5mb3JjZSBzdWJzKSB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkgaW5cbiAgICAgICAgICBtYXRjaCBsb29rdXBfZXhwYW5kIHN1YnMgc3ViIFN1YmNvbW1hbmQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgbXNnIC0+IGRpZV9zaG93aW5nX2hlbHAgbXNnXG4gICAgICAgICAgfCBPayAoc3ViLCB0KSAtPlxuICAgICAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICBlbnZcbiAgICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICAgIH5wYXRoOihQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOnN1YilcbiAgICAgICAgICAgICAgfmFyZ3M6cmVzdFxuICAgICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIChhcmdzIDogQ21kbGluZS50KSB3aXRoXG4gICAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBkaWVfc2hvd2luZ19oZWxwXG4gICAgICAgICAgICAgICAoc3ByaW50ZiBcIm1pc3Npbmcgc3ViY29tbWFuZCBmb3IgY29tbWFuZCAlc1wiIChQYXRoLnRvX3N0cmluZyBwYXRoKSlcbiAgICAgICAgICAgfCBTb21lIGJvZHkgLT4gYm9keSB+cGF0aDooUGF0aC5wYXJ0c19leGVfYmFzZW5hbWUgcGF0aCkpXG4gICAgICAgIHwgQ29ucyAoc3ViLCByZXN0KSAtPlxuICAgICAgICAgICgqIE1hdGNoIGZvciBmbGFncyByZWNvZ25pemVkIHdoZW4gc3ViY29tbWFuZHMgYXJlIGV4cGVjdGVkIG5leHQgKilcbiAgICAgICAgICAobWF0Y2ggc3ViIHdpdGhcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBhdCB0aGUgdG9wIGxldmVsIGNvbW1hbmQgb25seSAqKVxuICAgICAgICAgICB8IChcIi12ZXJzaW9uXCIgfCBcIi0tdmVyc2lvblwiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjtcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCAoXCItYnVpbGQtaW5mb1wiIHwgXCItLWJ1aWxkLWluZm9cIikgd2hlbiBQYXRoLmxlbmd0aCBwYXRoID0gMSAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgVmVyc2lvbl9pbmZvLnByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgICgqIFJlY29nbml6ZWQgZXZlcnl3aGVyZSAqKVxuICAgICAgICAgICB8IFwiLWhlbHBcIiB8IFwiLS1oZWxwXCIgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOaWwgfCBDb21wbGV0ZSAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAgICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWN1cnNpdmU6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kX2RvdHM6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoc2hhcGUgKEdyb3VwIHsgZ3JvdXAgd2l0aCBzdWJjb21tYW5kcyA9IHN1YnMgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgICAgICAgIGV4aXQgMFxuICAgICAgICAgICAgICAgfCBDbWRsaW5lLkNvbnMgKGZpcnN0X29mX3Jlc3QsIHJlc3Rfb2ZfcmVzdCkgLT5cbiAgICAgICAgICAgICAgICAgcmVzb2x2ZSBmaXJzdF9vZl9yZXN0IChDb25zIChzdWIsIHJlc3Rfb2ZfcmVzdCkpKVxuICAgICAgICAgICB8IChfIDogc3RyaW5nKSAtPiByZXNvbHZlIHN1YiByZXN0KVxuICAgICAgICB8IENvbXBsZXRlIHBhcnQgLT5cbiAgICAgICAgICBsZXQgc3VicyA9XG4gICAgICAgICAgICBMYXp5LmZvcmNlIHN1YnNcbiAgICAgICAgICAgIHw+IExpc3QubWFwIH5mOmZzdFxuICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBuYW1lIC0+IFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQpXG4gICAgICAgICAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6U3RyaW5nLmNvbXBhcmVcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBjb21wbGV0ZV9zdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgICAgICAgIHNoYXBlIHQgfD4gU2hhcGUuZnVsbHlfZm9yY2VkIHw+IFNoYXBlLkZ1bGx5X2ZvcmNlZC5leHBhbmRlZF9zdWJjb21tYW5kc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKG1hdGNoIGYgfnBhdGg6KFBhdGgucGFydHMgcGF0aCkgfnBhcnQgc3ViY29tbWFuZHMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZXhpdCAxXG4gICAgICAgICAgICAgIHwgU29tZSB0b19vdXRwdXQgLT5cbiAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgdG9fb3V0cHV0KTtcbiAgICAgICAgICAgICAgICBleGl0IDApXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIExpc3QuaXRlciBzdWJzIH5mOnByaW50X2VuZGxpbmU7XG4gICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgaW5cbiAgICAgIHBhcnNlX2dyb3VwIGFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJ1blxuICAgICAgICA/dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICA/dmVyc2lvblxuICAgICAgICA/YnVpbGRfaW5mb1xuICAgICAgICA/KGFyZ3YgPSBBcnJheS50b19saXN0IFN0ZGxpYi5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgKydhIHRcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICB2YWwgaGVscCA6IHN0cmluZyBMYXp5LnQgdFxuICAgIHZhbCBwYXRoIDogc3RyaW5nIGxpc3QgdFxuICAgIHZhbCBhcmdzIDogc3RyaW5nIGxpc3QgdFxuXG4gICAgdmFsIGZsYWdcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgRmxhZy50XG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICA6ICA/YWxpYXNlczpzdHJpbmcgbGlzdFxuICAgICAgLT4gP2Z1bGxfZmxhZ19yZXF1aXJlZDp1bml0XG4gICAgICAtPiBzdHJpbmdcbiAgICAgIC0+ICdhIEFyZ190eXBlLnRcbiAgICAgIC0+ICgnYSAtPiBTZXhwLnQpXG4gICAgICAtPiBkZWZhdWx0OidhXG4gICAgICAtPiBkb2M6c3RyaW5nXG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgYW5vbiA6ICdhIEFub25zLnQgLT4gJ2EgdFxuICAgIHZhbCBlc2NhcGVfYW5vbiA6IGZpbmFsX2Fub246J2EgQW5vbnMudCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuXG4gICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuIDogc2lnXG4gICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgfCBEZWZhdWx0X3RvIDogJ2EgLT4gKCdhLCAnYSkgdFxuICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICBlbmRcblxuICAgIHZhbCBjaG9vc2Vfb25lXG4gICAgICA6ICAnYSBvcHRpb24gdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgY2hvb3NlX29uZV9ub25fb3B0aW9uYWxcbiAgICAgIDogICdhIHQgbGlzdFxuICAgICAgLT4gaWZfbm90aGluZ19jaG9zZW46KCdhLCAnYikgSWZfbm90aGluZ19jaG9zZW4udFxuICAgICAgLT4gJ2IgdFxuXG4gICAgdmFsIGFuZF9hcmdfbmFtZXMgOiAnYSB0IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG4gICAgdmFsIGFuZF9hcmdfbmFtZSA6ICdhIHQgLT4gKCdhICogc3RyaW5nKSB0XG4gICAgdmFsIGFyZ19uYW1lcyA6ICdhIHQgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDb21tYW5kX2Jhc2UuUGFyYW1cblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJhbVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBQYXJhbVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG5cbnR5cGUgJ3Jlc3VsdCBiYXNpY19jb21tYW5kID1cbiAgc3VtbWFyeTpzdHJpbmcgLT4gP3JlYWRtZToodW5pdCAtPiBzdHJpbmcpIC0+ICh1bml0IC0+ICdyZXN1bHQpIFBhcmFtLnQgLT4gdFxuXG5sZXQgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbSA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbVxuOztcblxubGV0IGJhc2ljX29yX2Vycm9yIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBiYXNpY1xuICAgIH5zdW1tYXJ5XG4gICAgP3JlYWRtZVxuICAgIChsZXQlbWFwIHJ1biA9IHBhcmFtIGluXG4gICAgIGZ1biAoKSAtPlxuICAgICAgIG1hdGNoIHJ1biAoKSB3aXRoXG4gICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgU3RkaW8ucHJlcnJfZW5kbGluZSAoRXJyb3IudG9fc3RyaW5nX2h1bSBlKTtcbiAgICAgICAgIGV4aXQgMSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBhYnNfcGF0aCA9IGFic19wYXRoXG4gIGxldCB3b3JkX3dyYXAgPSBTaGFwZS5Qcml2YXRlLndvcmRfd3JhcFxuXG4gIG1vZHVsZSBBbm9ucyA9IEFub25zXG4gIG1vZHVsZSBDbWRsaW5lID0gQ21kbGluZVxuICBtb2R1bGUgRm9yX3VuaXggPSBGb3JfdW5peFxuICBtb2R1bGUgUGF0aCA9IFBhdGhcblxuICBtb2R1bGUgU3BlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3BlY1xuXG4gICAgbGV0IHRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSBwYXJhbSA9XG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogU3RkbGliLk9iai50IC0+IGJvb2wgPSBcImNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXCJcbltAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoU3RkbGliLk9iai5yZXByIHYpXG5sZXQgY3JlYXRlIHYgPSBpZiBpc19vayB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuXG5sZXQgY3JlYXRlX2V4biB2ID1cbiAgaWYgaXNfb2sgdiB0aGVuIHYgZWxzZSBmYWlsd2l0aCBcIkhlYXBfYmxvY2suY3JlYXRlX2V4biBjYWxsZWQgd2l0aCBub24gaGVhcCBibG9ja1wiXG47O1xuXG5sZXQgdmFsdWUgdCA9IHRcbmxldCBieXRlc19wZXJfd29yZCA9IFdvcmRfc2l6ZS4obnVtX2JpdHMgd29yZF9zaXplKSAvIDhcblxubGV0IGJ5dGVzICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIChTdGRsaWIuT2JqLnNpemUgKFN0ZGxpYi5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4gQmFzZVxuXG4oKiogRWFjaCBzaW5nbGVfZXJyb3IgaXMgYSBwYXRoIGluZGljYXRpbmcgdGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgZGF0YXN0cnVjdHVyZSBpblxuICAgIHF1ZXN0aW9uIHRoYXQgaXMgYmVpbmcgdmFsaWRhdGVkLCBhbG9uZyB3aXRoIGFuIGVycm9yIG1lc3NhZ2UuICopXG50eXBlIHNpbmdsZV9lcnJvciA9XG4gIHsgcGF0aCA6IHN0cmluZyBsaXN0XG4gIDsgZXJyb3IgOiBFcnJvci50XG4gIH1cblxudHlwZSB0ID0gc2luZ2xlX2Vycm9yIGxpc3RcbnR5cGUgJ2EgY2hlY2sgPSAnYSAtPiB0XG5cbmxldCBwYXNzIDogdCA9IFtdXG5cbmxldCBmYWlscyBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSB9IF1cbjs7XG5cbmxldCBmYWlsIG1lc3NhZ2UgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLm9mX3N0cmluZyBtZXNzYWdlIH0gXVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IGZhaWxfcyBzZXhwID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5jcmVhdGVfcyBzZXhwIH0gXVxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgb2ZfbGlzdCA9IExpc3QuY29uY2F0XG5cbmxldCBuYW1lIG5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdICgqIHdoZW4gc3VjY2Vzc2Z1bCwgYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBjbG9zdXJlIGZvciBbfmZdLCBiZWxvdyAqKVxuICB8IF8gLT4gTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiB7IHBhdGggPSBuYW1lIDo6IHBhdGg7IGVycm9yIH0pXG47O1xuXG5sZXQgbmFtZV9saXN0IG4gbCA9IG5hbWUgbiAob2ZfbGlzdCBsKVxubGV0IGZhaWxfZm4gbWVzc2FnZSBfID0gZmFpbCBtZXNzYWdlXG5sZXQgcGFzc19ib29sIChfIDogYm9vbCkgPSBwYXNzXG5sZXQgcGFzc191bml0IChfIDogdW5pdCkgPSBwYXNzXG5cbmxldCBwcm90ZWN0IGYgdiA9XG4gIHRyeSBmIHYgd2l0aFxuICB8IGV4biAtPlxuICAgIGZhaWxfcyAoU2V4cC5tZXNzYWdlIFwiRXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcgdmFsaWRhdGlvblwiIFsgXCJcIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHByb3RlY3RcbiAgICAoZnVuICgpIC0+XG4gICAgICAgZiAoKTtcbiAgICAgICBwYXNzKVxuICAgICgpXG47O1xuXG5sZXQgcGF0aF9zdHJpbmcgcGF0aCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiBwYXRoXG5cbmxldCBlcnJvcnMgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT5cbiAgICBFcnJvci50b19zdHJpbmdfaHVtIChFcnJvci50YWcgZXJyb3IgfnRhZzoocGF0aF9zdHJpbmcgcGF0aCkpKVxuOztcblxubGV0IHJlc3VsdF9mYWlsIHQgPVxuICBPcl9lcnJvci5lcnJvclxuICAgIFwidmFsaWRhdGlvbiBlcnJvcnNcIlxuICAgIChMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHBhdGhfc3RyaW5nIHBhdGgsIGVycm9yKSlcbiAgICBbJXNleHBfb2Y6IChzdHJpbmcgKiBFcnJvci50KSBMaXN0LnRdXG5bQEBjb2xkXVxuOztcblxuKCoqIFtyZXN1bHRdIGlzIGNhcmVmdWxseSBpbXBsZW1lbnRlZCBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkIC0tIGNhbGxpbmcgW3Jlc3VsdF9mYWlsXSxcbiAgICB3aGljaCBpcyBub3QgaW5saW5lYWJsZSwgaXMga2V5IHRvIHRoaXMuICopXG5sZXQgcmVzdWx0IHQgPSBpZiBMaXN0LmlzX2VtcHR5IHQgdGhlbiBPayAoKSBlbHNlIHJlc3VsdF9mYWlsIHRcblxubGV0IG1heWJlX3JhaXNlIHQgPSBPcl9lcnJvci5va19leG4gKHJlc3VsdCB0KVxubGV0IHZhbGlkX29yX2Vycm9yIGNoZWNrIHggPSBPcl9lcnJvci5tYXAgKHJlc3VsdCAocHJvdGVjdCBjaGVjayB4KSkgfmY6KGZ1biAoKSAtPiB4KVxuXG5sZXQgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCBfcmVjb3JkIHYgPVxuICBsZXQgcmVzdWx0ID0gcHJvdGVjdCBjaGVjayB2IGluXG4gIG5hbWUgKEZpZWxkLm5hbWUgZmxkKSByZXN1bHRcbjs7XG5cbmxldCBmaWVsZCBjaGVjayByZWNvcmQgZmxkID1cbiAgbGV0IHYgPSBGaWVsZC5nZXQgZmxkIHJlY29yZCBpblxuICBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2XG47O1xuXG5sZXQgZmllbGRfZm9sZGVyIGNoZWNrIHJlY29yZCA9XG4gICgpO1xuICBmdW4gYWNjIGZsZCAtPiBmaWVsZCBjaGVjayByZWNvcmQgZmxkIDo6IGFjY1xuOztcblxubGV0IGZpZWxkX2RpcmVjdF9mb2xkZXIgY2hlY2sgPVxuICBTdGFnZWQuc3RhZ2UgKGZ1biBhY2MgZmxkIHJlY29yZCB2IC0+XG4gICAgbWF0Y2ggZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdiB3aXRoXG4gICAgfCBbXSAtPiBhY2MgKCogQXZvaWQgYWxsb2NhdGluZyBhIG5ldyBsaXN0IGluIHRoZSBzdWNjZXNzIGNhc2UgKilcbiAgICB8IHJlc3VsdCAtPiByZXN1bHQgOjogYWNjKVxuOztcblxubGV0IGFsbCBjaGVja3MgdiA9XG4gIGxldCByZWMgbG9vcCBjaGVja3MgdiBlcnJzID1cbiAgICBtYXRjaCBjaGVja3Mgd2l0aFxuICAgIHwgW10gLT4gZXJyc1xuICAgIHwgY2hlY2sgOjogY2hlY2tzIC0+XG4gICAgICAobWF0Y2ggcHJvdGVjdCBjaGVjayB2IHdpdGhcbiAgICAgICB8IFtdIC0+IGxvb3AgY2hlY2tzIHYgZXJyc1xuICAgICAgIHwgZXJyIC0+IGxvb3AgY2hlY2tzIHYgKGVyciA6OiBlcnJzKSlcbiAgaW5cbiAgb2ZfbGlzdCAoTGlzdC5yZXYgKGxvb3AgY2hlY2tzIHYgW10pKVxuOztcblxubGV0IG9mX3Jlc3VsdCBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gZmFpbCBlcnJvcilcbjs7XG5cbmxldCBvZl9lcnJvciBmID1cbiAgcHJvdGVjdCAoZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgT2sgKCkgLT4gcGFzc1xuICAgIHwgRXJyb3IgZXJyb3IgLT4gWyB7IHBhdGggPSBbXTsgZXJyb3IgfSBdKVxuOztcblxubGV0IGJvb2x0ZXN0IGYgfmlmX2ZhbHNlID0gcHJvdGVjdCAoZnVuIHYgLT4gaWYgZiB2IHRoZW4gcGFzcyBlbHNlIGZhaWwgaWZfZmFsc2UpXG5cbmxldCBwYWlyIH5mc3QgfnNuZCAoZnN0X3ZhbHVlLCBzbmRfdmFsdWUpID1cbiAgb2ZfbGlzdCBbIG5hbWUgXCJmc3RcIiAocHJvdGVjdCBmc3QgZnN0X3ZhbHVlKTsgbmFtZSBcInNuZFwiIChwcm90ZWN0IHNuZCBzbmRfdmFsdWUpIF1cbjs7XG5cbmxldCBsaXN0X2luZGV4ZWQgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwaSBsaXN0IH5mOihmdW4gaSBlbCAtPiBuYW1lIChJbnQudG9fc3RyaW5nIChpICsgMSkpIChwcm90ZWN0IGNoZWNrIGVsKSlcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGxpc3Qgfm5hbWU6ZXh0cmFjdF9uYW1lIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWwgLT5cbiAgICBtYXRjaCBwcm90ZWN0IGNoZWNrIGVsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCB0IC0+XG4gICAgICAoKiBleHRyYSBsZXZlbCBvZiBwcm90ZWN0aW9uIGluIGNhc2UgZXh0cmFjdF9uYW1lIHRocm93cyBhbiBleGNlcHRpb24gKilcbiAgICAgIHByb3RlY3QgKGZ1biB0IC0+IG5hbWUgKGV4dHJhY3RfbmFtZSBlbCkgdCkgdClcbiAgfD4gb2ZfbGlzdFxuOztcblxubGV0IGFsaXN0IH5uYW1lIGYgbGlzdCcgPSBsaXN0IChmdW4gKF8sIHgpIC0+IGYgeCkgbGlzdCcgfm5hbWU6KGZ1biAoa2V5LCBfKSAtPiBuYW1lIGtleSlcbmxldCBmaXJzdF9mYWlsdXJlIHQxIHQyID0gaWYgTGlzdC5pc19lbXB0eSB0MSB0aGVuIHQyIGVsc2UgdDFcblxubGV0IG9mX2Vycm9yX29wdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBwYXNzXG4gIHwgU29tZSBlcnJvciAtPiBmYWlsIGVycm9yXG47O1xuXG5sZXQgYm91bmRlZCB+bmFtZSB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggPVxuICBtYXRjaCBNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlIHggd2l0aFxuICB8IEluX3JhbmdlIC0+IHBhc3NcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPlxuICAgIChtYXRjaCBsb3dlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDwgYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbiAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IEluY2wgaW5jbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID4gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBpbmNsKSlcbiAgICAgfCBFeGNsIGV4Y2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+PSBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGV4Y2wpKSlcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCArKyApIHQxIHQyID0gY29tYmluZSB0MSB0MlxuZW5kXG4iLCJcbigqIFdlIGRvIG5vdCBbaW5jbHVkZSBCYXNlXSBoZXJlLCBhbmQgaW5zdGVhZCBpbXBvcnQgbW9kdWxlcyB0aGF0IFtDb3JlXSBkb2Vzbid0IGV4dGVuZCxcbiAgIGJlY2F1c2Ugd2Ugd2FudCBjb2RlIGluIFtDb3JlXSB0byBiZSBjbGVhciB3aGVuIGl0IHJlZmVyZW5jZXMgYSBbQmFzZV0gbW9kdWxlIHRoYXRcbiAgIFtDb3JlXSBpcyBvdmVycmlkaW5nLiAqKVxubW9kdWxlIEFwcGxpY2F0aXZlID0gQmFzZS5BcHBsaWNhdGl2ZVxubW9kdWxlIEF2bHRyZWUgPSBCYXNlLkF2bHRyZWVcbm1vZHVsZSBCYWNrdHJhY2UgPSBCYXNlLkJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCYXNlLkJpbmFyeV9zZWFyY2hcbm1vZHVsZSBDb21wYXJpc29ucyA9IEJhc2UuQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQmFzZS5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRXF1YWwgPSBCYXNlLkVxdWFsXG5tb2R1bGUgRXhuID0gQmFzZS5FeG5cbm1vZHVsZSBGbG9hdGFibGUgPSBCYXNlLkZsb2F0YWJsZVxubW9kdWxlIEZvcm1hdHRlciA9IEJhc2UuRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEJhc2UuSGFzaFxubW9kdWxlIEhhc2hlciA9IEJhc2UuSGFzaGVyXG5tb2R1bGUgSW50YWJsZSA9IEJhc2UuSW50YWJsZVxubW9kdWxlIEludF9jb252ZXJzaW9ucyA9IEJhc2UuSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X21hdGggPSBCYXNlLkludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gQmFzZS5JbnZhcmlhbnRcbm1vZHVsZSBNb25hZCA9IEJhc2UuTW9uYWRcbm1vZHVsZSBQb2x5ID0gQmFzZS5Qb2x5XG5cbm1vZHVsZSBQb3Bjb3VudCA9IEJhc2UuUG9wY291bnRcbltAQHdhcm5pbmcgXCItM1wiXVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE4LTEwXSB1c2UgW3BvcGNvdW50XSBmdW5jdGlvbnMgaW4gaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBCYXNlLlByZXR0eV9wcmludGVyXG5tb2R1bGUgUmFuZG9tID0gQmFzZS5SYW5kb21cbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZ2FibGUgPSBCYXNlLlN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBCYXNlLlN5c1xubW9kdWxlIFVjaGFyID0gQmFzZS5VY2hhclxubW9kdWxlIFdpdGhfcmV0dXJuID0gQmFzZS5XaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IEJhc2UuV29yZF9zaXplXG5cbigqIFdlIGRvIGluY2x1ZGUgW0Jhc2VdJ3MgdG9wLWxldmVsIHZhbHVlIGFuZCB0eXBlIGJpbmRpbmdzLCBiZWNhdXNlIHRoZXkgZG9uJ3QgY2F1c2VcbiAgIGFueSBjb25mdXNpb24sIGFuZCBkdXBsaWNhdGluZyB0aGVtIHdvdWxkIGJlIGVycm9yIHByb25lLiAqKVxuaW5jbHVkZSBCYXNlLkV4cG9ydFxuaW5jbHVkZSBTdGRpb1xuaW5jbHVkZSBCYXNlX2Zvcl90ZXN0c1xuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0ZGxpYi5TeXMuZ2V0ZW52IFwiVEVTVElOR19GUkFNRVdPUktcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gICgqIFtDYW1sLipdIG5ldmVyIHJhaXNlcyBbTm90X2ZvdW5kX3NdICopXG4gIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBmYWxzZVxuOztcblxudHlwZSAnYSBpZGVudGl0eSA9ICdhXG5cbm1vZHVsZSBOb3RfZm91bmQgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uXG4gICAgTm90X2ZvdW5kID0gTm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgW0BkZXByZWNhdGVkXG4gICAgICAgICAgICAgICAgICB7fFtzaW5jZSAyMDE4LTAyXSBJbnN0ZWFkIG9mIHJhaXNpbmcgW05vdF9mb3VuZF0sIGNvbnNpZGVyIHVzaW5nIFtyYWlzZV9zXSB3aXRoIGFuXG5pbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlLiAgSWYgY29kZSBuZWVkcyB0byBkaXN0aW5ndWlzaCBbTm90X2ZvdW5kXSBmcm9tIG90aGVyXG5leGNlcHRpb25zLCBwbGVhc2UgY2hhbmdlIGl0IHRvIGhhbmRsZSBib3RoIFtOb3RfZm91bmRdIGFuZCBbTm90X2ZvdW5kX3NdLiAgVGhlbiwgaW5zdGVhZFxub2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgcmFpc2UgW05vdF9mb3VuZF9zXSB3aXRoIGFuIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UufH1dXG5cbiAgZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gQmFzZS5Ob3RfZm91bmRfc1xuZW5kXG5cbmluY2x1ZGUgTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TZXhwYWJsZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwYWJsZS5zZXhwX29mX3QgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIChNLnRvX3NleHBhYmxlIHQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zZXhwYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgICBpbmNsdWRlIFMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiBNLnQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBzdHJpbmdfc2V4cF9ncmFtbWFyXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIGxldCBnbG9iYWxpemUgXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBOYW1lLm5hbWUgKClcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cF9wb2x5LCBzdGFibGVfd2l0bmVzc11cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG4gIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgbGV0IGdsb2JhbGl6ZSBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIFQubmFtZSAoKVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE5vYm9keSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5Ob2JvZHkpXG4gICAgbW9kdWxlIE1lID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk1lKVxuICAgIG1vZHVsZSBSZWFkID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWQpXG4gICAgbW9kdWxlIFdyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLldyaXRlKVxuICAgIG1vZHVsZSBSZWFkX3dyaXRlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLlJlYWRfd3JpdGUpXG4gICAgbW9kdWxlIEltbXV0YWJsZSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUeXBlcy5JbW11dGFibGUpXG5cbiAgICB0eXBlIG5vYm9keSA9IE5vYm9keS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgdHlwZSBtZSA9IE1lLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIF8gPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgICBsZXQgX190X29mX3NleHBfXyA9IHRfb2Zfc2V4cFxuXG4gICAgICBsZXQgZ2xvYmFsaXplIF8gPVxuICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgVHlwZXMuVXBwZXJfYm91bmQubmFtZSAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgd3JpdGUgPSBWMS5Xcml0ZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGdsb2JhbGl6ZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSByZWFkX3dyaXRlID0gVjEuUmVhZF93cml0ZS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSAnYSBwZXJtcyA9ICdhIFYxLlVwcGVyX2JvdW5kLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5tb2R1bGUgRXhwb3J0ID0gU3RhYmxlLkV4cG9ydFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ29tcGFyYXRvciA9IEJhc2UuQ29tcGFyYXRvclxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPSAoJ2EsICd3aXRuZXNzKSBDb21wYXJhdG9yLnQgPSBwcml2YXRlXG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IEJhc2UuU2V4cC50XG4gIH1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQ29tcGFyYXRvciB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbmluY2x1ZGUgKENvbXBhcmF0b3IgOiBCYXNlX21hc2spXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIHQgPSBwcml2YXRlXG4gICAgICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuXG4gICAgbGV0IG1ha2UgPSBtYWtlXG5cbiAgICBtb2R1bGUgTWFrZSA9IE1ha2VcbiAgICBtb2R1bGUgTWFrZTEgPSBNYWtlMVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnZiwgJ3MpIHQgPSAoJ2YsICdzKSBCYXNlLkVpdGhlci50ID1cbiAgICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICAgIHwgU2Vjb25kIG9mICdzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTMF93aXRob3V0X2NvbXBhcmF0b3IgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICBpbmNsdWRlIFMwX3dpdGhvdXRfY29tcGFyYXRvclxuICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbigqKiBUaGUgcG9seW1vcnBoaWMgc2lnbmF0dXJlcyByZXF1aXJlIGEgbWFwcGluZyBmdW5jdGlvbiBzbyBwZW9wbGUgY2FuIHdyaXRlIGNvbnZlcnNpb25cbiAgICBmdW5jdGlvbnMgd2l0aG91dCBlaXRoZXIgKDEpIHJlLWltcGxlbWVudGluZyB0aGUgbWFwcGluZyBmdW5jdGlvbiBpbmxpbmUgb3IgKDIpXG4gICAgcmVhY2hpbmcgaW50byB0aGUgdW5zdGFibGUgcGFydCBvZiB0aGUgbW9kdWxlLiAqKVxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwXG4gICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyLCAnYTMsICdhNCkgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcFxuICAgIDogICgnYTEsICdhMiwgJ2EzLCAnYTQpIHRcbiAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAtPiBmNDooJ2E0IC0+ICdiNClcbiAgICAtPiAoJ2IxLCAnYjIsICdiMywgJ2I0KSB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUzBfd2l0aG91dF9jb21wYXJhdG9yID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgdFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5cbiAgICB0eXBlIHQgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgPVxuICAgICAgeyBwb3NfZm5hbWUgOiBzdHJpbmdcbiAgICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICAgIDsgcG9zX2JvbCA6IGludFxuICAgICAgOyBwb3NfY251bSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlX2V4biA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0IHw+IFslc2V4cF9vZjogdF1cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gRXhuLmNyZWF0ZV9zXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIFNleHAuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kIChJbmZvIDogQmFzZS5JbmZvLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgSW5mb1xuXG4gIG1vZHVsZSBJbnRlcm5hbF9yZXByID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJpbmFibGVfZXhuID0gQmluYWJsZV9leG4uU3RhYmxlXG5cbiAgICAgIG1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZiwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgU3RhYmxlLlYyXG5cbiAgICBsZXQgdG9faW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG4gICAgbGV0IG9mX2luZm8gPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IEluZm8uSW50ZXJuYWxfcmVwci50b19pbmZvXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnRlcm5hbF9yZXByLlN0YWJsZS5WMilcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgSW50ZXJuYWxfcmVwci5TdGFibGUuVjIuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgU2V4cC5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5pbmNsdWRlIEV4dGVuZCAoQmFzZS5JbmZvKVxuXG4iLCJpbmNsdWRlIEJhc2UuRXJyb3JcbmluY2x1ZGUgSW5mby5FeHRlbmQgKEJhc2UuRXJyb3IpXG5cbmxldCBmYWlsd2l0aHMgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZmFpbHdpdGhwID9zdHJpY3QgaGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgcmFpc2UgKGNyZWF0ZSA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgUmVzdWx0ID0gQmFzZS5SZXN1bHRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCA9XG4gICAgICB8IE9rIG9mICdhXG4gICAgICB8IEVycm9yIG9mICdiXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPiBFcnJvciAoZjIgZXJyKVxuICAgICAgfCBPayB4IC0+IE9rIChmMSB4KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMV9zdGFibGVfdW5pdF90ZXN0ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKHN0cmluZywgaW50KSBWMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICAgIGxldCB0ZXN0cyA9XG4gICAgICBbIFYxLk9rIFwiZm9vXCIsIFwiKE9rIGZvbylcIiwgXCJcXDAwMFxcMDAzZm9vXCI7IFYxLkVycm9yIDcsIFwiKEVycm9yIDcpXCIsIFwiXFwwMDFcXDAwN1wiIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBSZXN1bHRcbiIsIigqKiBBbiBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgc3RhYmlsaXR5IG9mIHNleHAgYW5kIGJpbi1pb1xuICAgIHNlcmlhbGl6YXRpb25zICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG5cblxuICAoKiogW3Rlc3RzXSBpcyBhIGxpc3Qgb2YgKHZhbHVlLCBzZXhwLXJlcHJlc2VudGF0aW9uLCBiaW4taW8tcmVwcmVzZW50YXRpb24pIHRyaXBsZXMuXG4gICAgICBUaGUgdW5pdCB0ZXN0cyBjaGVjayB0aGF0IHRoZSB0eXBlIHByb3Blcmx5IHNlcmlhbGl6ZXMgYW5kXG4gICAgICBkZS1zZXJpYWxpemVzIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcmVwcmVzZW50YXRpb25zLiAqKVxuICB2YWwgdGVzdHMgOiAodCAqIHN0cmluZyAqIHN0cmluZykgbGlzdFxuZW5kXG5cbigqKiBVbm9yZGVyZWQgY29udGFpbmVyIHRlc3RzIGFyZSBmb3IgdHlwZXMgd2l0aCBzZXJpYWxpemF0aW9ucyB0aGF0IHdpbGwgY29udGFpbiBhXG4gICAgY2VydGFpbiBzZXQgb2YgZWxlbWVudHMgKGVhY2ggcmVwcmVzZW50ZWQgYnkgYSBzaW5nbGUgc2V4cCBvciBiaW4taW8gc3RyaW5nKSB3aGljaCBtYXlcbiAgICBhcHBlYXIgaW4gYW55IG9yZGVyLCBzdWNoIGFzIGhhc2ggdGFibGVzIGFuZCBoYXNoIHNldHMuICopXG5tb2R1bGUgVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzZXhwcyA6IHN0cmluZyBsaXN0XG4gICAgOyBiaW5faW9faGVhZGVyIDogc3RyaW5nXG4gICAgOyBiaW5faW9fZWxlbWVudHMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgdHlwZSBVbm9yZGVyZWRfY29udGFpbmVyX2FyZyA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCB0ZXN0cyA6ICh0ICogVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0LnQpIGxpc3RcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3JfZXJyb3JcblxudHlwZSAnYSB0ID0gKCdhLCBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPID0gQmFzZS5Pcl9lcnJvclxuXG4gIGxldCBydW4gZiA9IG9rX2V4biAoZiAoKSlcbiAgbGV0IHNhbml0aXplIHMgPSBzXG4gIGxldCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEV4cGVjdF90ZXN0X2NvbmZpZy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuZW5kXG5cbm1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWdfd2l0aF91bml0X2V4cGVjdCA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYxLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsIEVycm9yLlN0YWJsZS5WMi50KSBSZXN1bHQuU3RhYmxlLlYxLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mIHsgc3RhdGUgOiAncyB9XG4gICAgfCBZaWVsZCBvZlxuICAgICAgICB7IHZhbHVlIDogJ2FcbiAgICAgICAgOyBzdGF0ZSA6ICdzXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudCA9IHN0cnVjdFxuICBpbmNsdWRlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgdHlwZSBIZWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgcG9wX21pbiA6ICdhIHQgLT4gKCdhICogJ2EgdCkgb3B0aW9uXG5lbmRcblxubGV0IG1lcmdlX2FsbCAobW9kdWxlIEhlYXAgOiBIZWFwKSBzZXFzIH5jb21wYXJlID1cbiAgbGV0IG1vZHVsZSBNZXJnZV9hbGxfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBoZWFwIDogKCdhICogJ2EgQmFzZS5TZXF1ZW5jZS50KSBIZWFwLnRcbiAgICAgIDsgbm90X3lldF9pbl9oZWFwIDogJ2EgQmFzZS5TZXF1ZW5jZS50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxuICBlbmRcbiAgaW5cbiAgdW5mb2xkX3N0ZXBcbiAgICB+aW5pdDpcbiAgICAgIChNZXJnZV9hbGxfc3RhdGUuY3JlYXRlXG4gICAgICAgICB+aGVhcDooSGVhcC5jcmVhdGUgfmNvbXBhcmU6KGZ1biBhIGIgLT4gQmFzZS5Db21wYXJhYmxlLmxpZnQgY29tcGFyZSB+Zjpmc3QgYSBiKSlcbiAgICAgICAgIH5ub3RfeWV0X2luX2hlYXA6c2VxcylcbiAgICB+ZjooZnVuIHsgaGVhcDsgbm90X3lldF9pbl9oZWFwIH0gLT5cbiAgICAgIG1hdGNoIG5vdF95ZXRfaW5faGVhcCB3aXRoXG4gICAgICB8IHNlcSA6OiBub3RfeWV0X2luX2hlYXAgLT5cbiAgICAgICAgKG1hdGNoIEV4cGVydC5uZXh0X3N0ZXAgc2VxIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9IH1cbiAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc2VxIH0gLT5cbiAgICAgICAgICAgU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH0gfVxuICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gZWx0OyBzdGF0ZSA9IHNlcSB9IC0+XG4gICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0gfSlcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKG1hdGNoIEhlYXAucG9wX21pbiBoZWFwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICAgICB8IFNvbWUgKChlbHQsIHNlcSksIGhlYXApIC0+XG4gICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBlbHQ7IHN0YXRlID0geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgPSBbIHNlcSBdIH0gfSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFF1aWNrY2hlY2tfaW50Zlxub3BlbiBCYXNlX3F1aWNrY2hlY2tcbm1vZHVsZSBGbG9hdCA9IEJhc2UuRmxvYXRcbm1vZHVsZSBJbnQgPSBCYXNlLkludFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBPcHRpb24gPSBCYXNlLk9wdGlvblxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgU2V4cCA9IEJhc2UuU2V4cFxuXG5tb2R1bGUgUG9seW1vcnBoaWNfdHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB2YXJpYW50MiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgdmFyaWFudDMgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdmFyaWFudDQgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB2YXJpYW50NSA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdmFyaWFudDYgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgfCBgRiBvZiAnZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IpIHR1cGxlMiA9ICdhICogJ2IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYykgdHVwbGUzID0gJ2EgKiAnYiAqICdjIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0dXBsZTQgPSAnYSAqICdiICogJ2MgKiAnZCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHR1cGxlNSA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB0dXBsZTYgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlICogJ2ZcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgJ3IpIGZuMiA9ICdhIC0+ICdiIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsICdyKSBmbjMgPSAnYSAtPiAnYiAtPiAnYyAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsICdyKSBmbjQgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAncikgZm41ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgLSdmLCAncikgZm42ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gJ3JcbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbmVuZFxuXG5tb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBPYnNlcnZlclxuXG4gIGxldCBvZl9oYXNoICh0eXBlIGEpIChtb2R1bGUgTSA6IERlcml2aW5nX2hhc2ggd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgb2ZfaGFzaF9mb2xkIE0uaGFzaF9mb2xkX3RcbiAgOztcblxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNlxuICBsZXQgb2ZfcHJlZGljYXRlIGEgYiB+ZiA9IHVubWFwICh2YXJpYW50MiBhIGIpIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBgQSB4IGVsc2UgYEIgeClcbiAgbGV0IHNpbmdsZXRvbiAoKSA9IG9wYXF1ZVxuICBsZXQgZG91YmxldG9uIGYgPSBvZl9wcmVkaWNhdGUgKHNpbmdsZXRvbiAoKSkgKHNpbmdsZXRvbiAoKSkgfmZcbiAgbGV0IGVudW0gXyB+ZiA9IHVubWFwIGludCB+ZlxuXG4gIGxldCBvZl9saXN0IGxpc3QgfmVxdWFsID1cbiAgICBsZXQgZiB4ID1cbiAgICAgIG1hdGNoIExpc3QuZmluZGkgbGlzdCB+ZjooZnVuIF8geSAtPiBlcXVhbCB4IHkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfbGlzdDogdmFsdWUgbm90IGZvdW5kXCJcbiAgICAgIHwgU29tZSAoaSwgXykgLT4gaVxuICAgIGluXG4gICAgZW51bSAoTGlzdC5sZW5ndGggbGlzdCkgfmZcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGYgKCkpIHggfnNpemUgfmhhc2gpXG5cbiAgbGV0IGNvbXBhcmlzb24gfmNvbXBhcmUgfmVxIH5sdCB+Z3QgPVxuICAgIHVubWFwXG4gICAgICAodmFyaWFudDMgbHQgKHNpbmdsZXRvbiAoKSkgZ3QpXG4gICAgICB+ZjooZnVuIHggLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlIHggZXEgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBgQSB4IGVsc2UgaWYgYyA+IDAgdGhlbiBgQyB4IGVsc2UgYEIgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJhdG9yXG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBzaW5nbGV0b24gPSByZXR1cm5cblxuICBsZXQgZG91YmxldG9uIHggeSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGlmIFNwbGl0dGFibGVfcmFuZG9tLmJvb2wgcmFuZG9tIHRoZW4geCBlbHNlIHkpXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZiAoKSkgfnNpemUgfnJhbmRvbSlcblxuICBsZXQgb2Zfc2VxdWVuY2UgfnAgc2VxID1cbiAgICBpZiBGbG9hdC4oIDw9ICkgcCAwLiB8fCBGbG9hdC4oID4gKSBwIDEuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiBwcm9iYWJpbGl0eSBbJWZdIG91dCBvZiBib3VuZHNcIiBwKTtcbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcVxuICAgICAgfmluaXQ6KClcbiAgICAgIH5maW5pc2g6KGZ1biAoKSAtPiBmYWlsd2l0aCBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcmFuIG91dCBvZiB2YWx1ZXNcIilcbiAgICAgIH5mOihmdW4gKCkgeCB+ayAtPiB3ZWlnaHRlZF91bmlvbiBbIHAsIHNpbmdsZXRvbiB4OyAxLiAtLiBwLCBvZl9mdW4gayBdKVxuICA7O1xuXG4gIGxldCBnZW9tZXRyaWMgPSBHZW5lcmF0b3IuaW50X2dlb21ldHJpY1xuICBsZXQgc21hbGxfbm9uX25lZ2F0aXZlX2ludCA9IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50XG4gIGxldCBzbWFsbF9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnRcbiAgbGV0IGxpc3Rfd2l0aF9sZW5ndGggbGVuZ3RoIHQgPSBsaXN0X3dpdGhfbGVuZ3RoIHQgfmxlbmd0aFxuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTZcbiAgbGV0IGZuMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMlxuICBsZXQgZm4zID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4zXG4gIGxldCBmbjQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjRcbiAgbGV0IGZuNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNVxuICBsZXQgZm42ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm42XG5cbiAgbGV0IGNvbXBhcmVfZm4gZG9tID1cbiAgICBmbiBkb20gaW50ID4+fCBmdW4gZ2V0X2luZGV4IHggeSAtPiBbJWNvbXBhcmU6IGludF0gKGdldF9pbmRleCB4KSAoZ2V0X2luZGV4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsX2ZuIGRvbSA9IGNvbXBhcmVfZm4gZG9tID4+fCBmdW4gY21wIHggeSAtPiBJbnQuKCA9ICkgKGNtcCB4IHkpIDBcbmVuZFxuXG5tb2R1bGUgU2hyaW5rZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaHJpbmtlclxuXG4gIGxldCBlbXB0eSAoKSA9IGF0b21pY1xuICBsZXQgdmFyaWFudDIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDNcbiAgbGV0IHZhcmlhbnQ0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NFxuICBsZXQgdmFyaWFudDUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDZcbiAgbGV0IHR1cGxlMiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyXG4gIGxldCB0dXBsZTMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTRcbiAgbGV0IHR1cGxlNSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1XG4gIGxldCB0dXBsZTYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNlxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBHZW5lcmF0b3JcbiAgZW5kXG5cbiAgaW5jbHVkZSBHZW5lcmF0b3IuTW9uYWRfaW5maXhcblxuICBsZXQgcmV0dXJuID0gR2VuZXJhdG9yLnJldHVyblxuZW5kXG5cbm1vZHVsZSBDb25maWd1cmUgKENvbmZpZyA6IFF1aWNrY2hlY2tfY29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIGxldCBub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG4gIGxldCByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNyZWF0ZSAoZm9yY2Ugbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0ciAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFslaGFzaDogc3RyaW5nXSBzdHIpXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2VlZCBzZWVkIDogVGVzdC5Db25maWcuU2VlZC50ID1cbiAgICBtYXRjaCBzZWVkIHdpdGhcbiAgICB8IGBOb25kZXRlcm1pbmlzdGljIC0+IE5vbmRldGVybWluaXN0aWNcbiAgICB8IGBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBEZXRlcm1pbmlzdGljIHN0cmluZ1xuICA7O1xuXG4gIGxldCBtYWtlX3Nocmlua19jb3VudCA9IGZ1bmN0aW9uXG4gICAgfCBgRXhoYXVzdGl2ZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBgTGltaXQgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgOiBUZXN0LkNvbmZpZy50ID1cbiAgICB7IHNlZWQgPSBtYWtlX3NlZWQgKE9wdGlvbi52YWx1ZSBzZWVkIH5kZWZhdWx0OmRlZmF1bHRfc2VlZClcbiAgICA7IHNpemVzID0gT3B0aW9uLnZhbHVlIHNpemVzIH5kZWZhdWx0OmRlZmF1bHRfc2l6ZXNcbiAgICA7IHRlc3RfY291bnQgPSBPcHRpb24udmFsdWUgdHJpYWxzIH5kZWZhdWx0OmRlZmF1bHRfdHJpYWxfY291bnRcbiAgICA7IHNocmlua19jb3VudCA9XG4gICAgICAgIG1ha2Vfc2hyaW5rX2NvdW50IChPcHRpb24udmFsdWUgc2hyaW5rX2F0dGVtcHRzIH5kZWZhdWx0OmRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzKVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV90ZXN0X20gKHR5cGUgYSkgfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgOiAobW9kdWxlIFRlc3QuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IE9wdGlvbi52YWx1ZSBzaHJpbmtlciB+ZGVmYXVsdDpTaHJpbmtlci5hdG9taWNcbiAgICAgIGxldCBzZXhwX29mX3QgPSBPcHRpb24udmFsdWUgc2V4cF9vZiB+ZGVmYXVsdDpbJXNleHBfb2Y6IF9dXG4gICAgZW5kXG4gICAgaW5cbiAgICAobW9kdWxlIE0pXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV92YWx1ZSA/KHNlZWQgPSBkZWZhdWx0X3NlZWQpID8oc2l6ZSA9IDMwKSBnZW4gPVxuICAgIGxldCByYW5kb20gPSByYW5kb21fc3RhdGVfb2Zfc2VlZCBzZWVkIGluXG4gICAgR2VuZXJhdG9yLmdlbmVyYXRlIGdlbiB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5cbiAgbGV0IHJhbmRvbV9zZXF1ZW5jZSA/c2VlZCA/c2l6ZXMgZ2VuID1cbiAgICBsZXQgY29uZmlnID1cbiAgICAgIG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzOihTb21lIEludC5tYXhfdmFsdWUpIH5zaHJpbmtfYXR0ZW1wdHM6Tm9uZVxuICAgIGluXG4gICAgbGV0IHJldHVybiA9IHJlZiBTZXF1ZW5jZS5lbXB0eSBpblxuICAgIFRlc3Qud2l0aF9zYW1wbGVfZXhuIH5jb25maWcgZ2VuIH5mOihmdW4gc2VxdWVuY2UgLT4gcmV0dXJuIDo9IHNlcXVlbmNlKTtcbiAgICAhcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGl0ZXIgP3NlZWQgP3NpemVzID90cmlhbHMgZ2VuIH5mID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0czpOb25lIGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiBTZXF1ZW5jZS5pdGVyIHNlcXVlbmNlIH5mKVxuICA7O1xuXG4gIGxldCB0ZXN0ID9zZWVkID9zaXplcyA/dHJpYWxzID9zaHJpbmtlciA/c2hyaW5rX2F0dGVtcHRzID9zZXhwX29mID9leGFtcGxlcyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzIGluXG4gICAgbGV0IHRlc3RfbSA9IG1ha2VfdGVzdF9tIH5nZW4gfnNocmlua2VyIH5zZXhwX29mIGluXG4gICAgVGVzdC5ydW5fZXhuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X29yX2Vycm9yXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/dHJpYWxzXG4gICAgICAgID9zaHJpbmtlclxuICAgICAgICA/c2hyaW5rX2F0dGVtcHRzXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgID9leGFtcGxlc1xuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1biB+Y29uZmlnID9leGFtcGxlcyB+ZiB0ZXN0X21cbiAgOztcblxuICBsZXQgdGVzdF9kaXN0aW5jdF92YWx1ZXNcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH50cmlhbHNcbiAgICAgICAgfmRpc3RpbmN0X3ZhbHVlc1xuICAgICAgICB+Y29tcGFyZVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGtleVxuXG4gICAgICBsZXQgKGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KSA9IGNvbXBhcmVcblxuICAgICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IFNvbWUgc2V4cF9vZiAtPiBzZXhwX29mXG4gICAgICAgIHwgTm9uZSAtPiBzZXhwX29mX29wYXF1ZVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGZhaWwgc2V0ID1cbiAgICAgIGxldCBleHBlY3RfY291bnQgPSBkaXN0aW5jdF92YWx1ZXMgaW5cbiAgICAgIGxldCBhY3R1YWxfY291bnQgPSBTZXQubGVuZ3RoIHNldCBpblxuICAgICAgbGV0IHZhbHVlcyA9XG4gICAgICAgIG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgc2V4cF9vZl9lbHQgLT4gU29tZSBbJXNleHAgKFNldC50b19saXN0IHNldCA6IGVsdCBsaXN0KV1cbiAgICAgIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW5zdWZmaWNpZW50IGRpc3RpbmN0IHZhbHVlc1wiXG4gICAgICAgICAgICAodHJpYWxzIDogaW50KVxuICAgICAgICAgICAgKGV4cGVjdF9jb3VudCA6IGludClcbiAgICAgICAgICAgIChhY3R1YWxfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAodmFsdWVzIDogKFNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIChTZXQuZW1wdHkgKG1vZHVsZSBNKSkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTZXQuYWRkICFzZXQgZWx0O1xuICAgICAgICBpZiBTZXQubGVuZ3RoICFzZXQgPj0gZGlzdGluY3RfdmFsdWVzIHRoZW4gci5yZXR1cm4gKCkpO1xuICAgICAgZmFpbCAhc2V0KVxuICA7O1xuXG4gIGxldCB0ZXN0X2Nhbl9nZW5lcmF0ZVxuICAgICAgICA/c2VlZFxuICAgICAgICA/c2l6ZXNcbiAgICAgICAgPyh0cmlhbHMgPSBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudClcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgZ2VuXG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCByID0gcmVmIFtdIGluXG4gICAgbGV0IGZfYW5kX2VucXVldWUgcmV0dXJuIHggPSBpZiBmIHggdGhlbiByZXR1cm4gYENhbl9nZW5lcmF0ZSBlbHNlIHIgOj0geCA6OiAhciBpblxuICAgIG1hdGNoXG4gICAgICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgICAgICBpdGVyID9zZWVkID9zaXplcyB+dHJpYWxzIGdlbiB+ZjooZl9hbmRfZW5xdWV1ZSByZXR1cm4ucmV0dXJuKTtcbiAgICAgICAgYENhbm5vdF9nZW5lcmF0ZSlcbiAgICB3aXRoXG4gICAgfCBgQ2FuX2dlbmVyYXRlIC0+ICgpXG4gICAgfCBgQ2Fubm90X2dlbmVyYXRlIC0+XG4gICAgICAobWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiY2Fubm90IGdlbmVyYXRlXCJcbiAgICAgICB8IFNvbWUgc2V4cF9vZl92YWx1ZSAtPlxuICAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJjYW5ub3QgZ2VuZXJhdGVcIiB+YXR0ZW1wdHM6KCFyIDogdmFsdWUgbGlzdCldKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29uZmlndXJlIChzdHJ1Y3RcbiAgICBsZXQgZGVmYXVsdF9zZWVkID0gYERldGVybWluaXN0aWMgXCJhbiBhcmJpdHJhcnkgYnV0IGRldGVybWluaXN0aWMgc3RyaW5nXCJcblxuICAgIGxldCBkZWZhdWx0X3RyaWFsX2NvdW50ID1cbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gMTBfMDAwXG4gICAgICB8IFczMiAtPiAxXzAwMFxuICAgIDs7XG5cbiAgICBsZXQgZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQgPSAxMF8wMDBcbiAgICBsZXQgZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMgPSBgTGltaXQgMTAwMFxuXG4gICAgbGV0IGRlZmF1bHRfc2l6ZXMgPVxuICAgICAgU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFMxID0gUzFcbm1vZHVsZSB0eXBlIFMyID0gUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gU19pbnRcbm1vZHVsZSB0eXBlIFNfcmFuZ2UgPSBTX3JhbmdlXG5cbnR5cGUgbm9ucmVjIHNlZWQgPSBzZWVkXG50eXBlIG5vbnJlYyBzaHJpbmtfYXR0ZW1wdHMgPSBzaHJpbmtfYXR0ZW1wdHNcblxubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWcgPSBRdWlja2NoZWNrX2NvbmZpZ1xubW9kdWxlIHR5cGUgUXVpY2tjaGVja19jb25maWd1cmVkID0gUXVpY2tjaGVja19jb25maWd1cmVkXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja2FibGVfaW50ZlxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udlxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZCA9IENvbnZfZmlsdGVyZWRcbm1vZHVsZSB0eXBlIENvbnYxID0gQ29udjFcbm1vZHVsZSB0eXBlIENvbnZfZmlsdGVyZWQxID0gQ29udl9maWx0ZXJlZDFcbm1vZHVsZSB0eXBlIFMgPSBRdWlja2NoZWNrLlNcbm1vZHVsZSB0eXBlIFMxID0gUXVpY2tjaGVjay5TMVxubW9kdWxlIHR5cGUgUzIgPSBRdWlja2NoZWNrLlMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFF1aWNrY2hlY2suU19pbnRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnYgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDogUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPVxuc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZTFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnYxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkXG4gICAgKFF1aWNrY2hlY2thYmxlIDogUylcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQgd2l0aCB0eXBlIHF1aWNrY2hlY2thYmxlIDo9IFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUyB3aXRoIHR5cGUgdCA6PSBDb252LnQgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICBRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZDFcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTMSlcbiAgICAoQ29udiA6IENvbnZfZmlsdGVyZWQxIHdpdGggdHlwZSAnYSBxdWlja2NoZWNrYWJsZSA6PSAnYSBRdWlja2NoZWNrYWJsZS50KSA6XG4gIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbmVyYXRlX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EpXG4gICAgICB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGdsb2JhbGl6ZSwgc2V4cF9ncmFtbWFyXVxuICBlbmQpXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxubW9kdWxlIFByaXZhdGUgPSBCYXNlLkFycmF5LlByaXZhdGVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkFycmF5XG5cbiAgbGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbiAgbGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuICA7O1xuXG4gIGxldCBuZ2V0IHQgaSA9IHQuKG5vcm1hbGl6ZSB0IGkpXG4gIGxldCBuc2V0IHQgaSB2ID0gdC4obm9ybWFsaXplIHQgaSkgPC0gdlxuXG4gIG1vZHVsZSBTZXF1ZW5jZSA9IHN0cnVjdFxuICAgIG9wZW4gQmFzZS5BcnJheVxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgc2V0ID0gc2V0XG4gIGVuZFxuXG4gICgqIFNlZSBPQ2FtbCBwZXJmIG5vdGVzIGZvciB3aHkgdGhlc2UgYXJyYXkgYmxpdHMgYXJlIHNwZWNpYWwgY2FzZWQgLS0gaW4gcGFydGljdWxhcixcbiAgICAgdGhlIHNlY3Rpb24gZW50aXRsZWQgXCJGYXN0LCBTbG93IGFuZCBJbmNvcnJlY3QgQXJyYXkgYmxpdHNcIiBvZlxuICAgICBodHRwczovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAxMzAyMjAwMDAyMjkvaHR0cDovL2phbmVzdHJlZXQuZ2l0aHViLmNvbS9vY2FtbC1wZXJmLW5vdGVzLmh0bWwgKilcbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBpbnQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGV4dGVybmFsIGdldCA6ICh0X1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX3NldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICAgIGxldCBlcXVhbCA9IEJhc2UuRmxvYXQuZXF1YWxcbiAgICAgICAgICBsZXQgb2ZfYm9vbCBiID0gaWYgYiB0aGVuIDEuIGVsc2UgMC5cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDAuXG5cbiAgICAgICAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUGVybWlzc2lvbmVkID0gc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0XG5cbiAgaW5jbHVkZVxuICAgIEluZGV4ZWRfY29udGFpbmVyLlMxX3dpdGhfY3JlYXRvcnNfcGVybWlzc2lvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcblxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gIGV4dGVybmFsIGdldFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0XG4gICAgOiAgKCgnYSwgWz4gd3JpdGUgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgoJ2EsIFs+IHdyaXRlIF0pIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gKGZsb2F0LCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGNyZWF0ZV9sb2NhbCA6IGxlbjppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0W0Bsb2NhbF0pXG4gIHZhbCBpbml0IDogaW50IC0+IGY6KChpbnQgLT4gJ2EpW0Bsb2NhbF0pIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvcHlfbWF0cml4XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBhcHBlbmQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29uY2F0IDogKCdhLCBbPiByZWFkIF0pIHQgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY29weSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWxsIDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkaW5nX21hcFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgaXRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZm9sZGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYWNjICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9yaWdodFxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiAnYWNjXG5cbiAgdmFsIHNvcnRcbiAgICA6ICA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgbWVyZ2VcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29uY2F0X21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gKCdiLCBbPiByZWFkIF0pIHQpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cblxuICB2YWwgdHJhbnNwb3NlX2V4blxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdCwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbm9ybWFsaXplIDogKCdhLCBfKSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbmdldCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICgnYSBvcHRpb24sIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgaXRlcjJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYiAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgZm9yX2FsbDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGJvb2xcblxuICB2YWwgZXhpc3RzMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gZjooKCdhIC0+ICdhKVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoaW50ICogJ2EpIG9wdGlvblxuICB2YWwgZmluZGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhXG5cbiAgdmFsIHBlcm11dGVcbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50XG4gICAgLT4gP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gdW5pdFxuXG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHNvcnRlZF9jb3B5XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGxhc3QgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG4gIHZhbCB0b19zZXF1ZW5jZV9tdXRhYmxlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgOiBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBJbnQgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAtJ3Blcm1zIHQgPSAoaW50LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgOiAgc3JjOihbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAtPiBkc3Q6KFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgZ2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZmxvYXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXRcbiAgICAgIDogIChbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBmbG9hdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6KFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDooWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XCJcbiAgICBbQEBub2FsbG9jXVxuICBlbmRcblxuICB2YWwgb2ZfYXJyYXlfaWQgOiAnYSBhcnJheSAtPiAoJ2EsIFs8IHJlYWRfd3JpdGUgXSkgdFxuICB2YWwgdG9fYXJyYXlfaWQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiAnYSBhcnJheVxuICB2YWwgdG9fc2VxdWVuY2VfaW1tdXRhYmxlIDogKCdhLCBbPiBpbW11dGFibGUgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHAsIHR5cGVyZXBdXG5cbiAgbW9kdWxlIEludCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5JbnRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuRmxvYXRcblxuICAgIHR5cGUgLSdwZXJtcyB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICBsZXQgdG9fYXJyYXlfaWQgPSBGbi5pZFxuICBsZXQgb2ZfYXJyYXlfaWQgPSBGbi5pZFxuXG4gIGluY2x1ZGUgKFQgOiBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCkgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICBsZXQgdG9fYXJyYXkgPSBjb3B5XG4gIGxldCB0b19zZXF1ZW5jZV9pbW11dGFibGUgPSB0b19zZXF1ZW5jZV9tdXRhYmxlXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBJbmRleGVkX2NvbnRhaW5lci5TMV93aXRoX2NyZWF0b3JzIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhIHRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCdhIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogICgnYSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcblxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfbG9jYWwgOiBsZW46aW50IC0+ICdhIC0+ICgnYSB0W0Bsb2NhbF0pXG4gIHZhbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gZmxvYXQgdFxuICB2YWwgaW5pdCA6IGludCAtPiBmOigoaW50IC0+ICdhKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvbGRpbmdfbWFwIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb2xkX21hcCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSkgLT4gJ2FjYyAqICdiIHRcbiAgdmFsIG1hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZvbGRpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KChpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZvbGRpbmdfbWFwaVxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdiIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjYyAqICdiIHRcblxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooKCdhIC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSkgLT4gaW5pdDonYWNjIC0+ICdhY2NcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIHN0YWJsZV9zb3J0IDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBjb25jYXRfbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgY29uY2F0X21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IgdClbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbmlfdGYgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNhcnRlc2lhbl9wcm9kdWN0IDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0cmFuc3Bvc2UgOiAnYSB0IHQgLT4gJ2EgdCB0IG9wdGlvblxuICB2YWwgdHJhbnNwb3NlX2V4biA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIG5vcm1hbGl6ZSA6ICdhIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgbmdldCA6ICdhIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgZmlsdGVyX29wdCA6ICdhIG9wdGlvbiB0IC0+ICdhIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBpdGVyMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIG1hcDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiAnYylbQGxvY2FsXSkgLT4gJ2MgdFxuXG4gIHZhbCBmb2xkMl9leG5cbiAgICA6ICAnYSB0XG4gICAgLT4gJ2IgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdiIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0czJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGY6KCgnYSAtPiAnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIHN3YXAgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJldiA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2xpc3RfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG9mX2xpc3RfcmV2X21hcGkgOiAnYSBsaXN0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIG1hcF9pbnBsYWNlIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIGZpbmRfbWFwX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcbiAgdmFsIGZpbmRpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50ICogJ2FcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9tYXBpX2V4biA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgJ2EgdFxuICAgIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgdmFsIHJlZHVjZV9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2FcbiAgdmFsIHBlcm11dGUgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByYW5kb21fZWxlbWVudF9leG4gOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICdhIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHVuemlwIDogKCdhICogJ2IpIHQgLT4gJ2EgdCAqICdiIHRcbiAgdmFsIHNvcnRlZF9jb3B5IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVHlwZXJlcF9saWIuU3RkXG5pbmNsdWRlIEJhc2UuTGlzdFxuXG50eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzc29jXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhICogJ2IpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBjb21wYXJlICh0eXBlIGEgYikgY29tcGFyZV9hIGNvbXBhcmVfYiA9IFslY29tcGFyZTogKGEgKiBiKSBsaXN0XVxuZW5kXG5cbmxldCB0b19zdHJpbmcgfmYgdCA9XG4gIFNleHBsaWIuU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIHggLT4gU2V4cGxpYi5TZXhwLkF0b20geCkgKG1hcCB0IH5mKSlcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdFxubGV0IGdlbl9ub25fZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfbm9uX2VtcHR5XG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3dpdGhfbGVuZ3RoIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5sZW5ndGhcbjs7XG5cbmxldCBnZW5fZmlsdGVyZWQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfZmlsdGVyZWRcbmxldCBnZW5fcGVybXV0YXRpb25zID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X3Blcm11dGF0aW9uc1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubGlzdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubGlzdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2h0YmxfaW50ZlxubW9kdWxlIEhhc2hhYmxlID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBIYXNodGJsX2ludGYuTWVyZ2VfaW50b19hY3Rpb25cbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgQ3JlYXRvcnMgPSBIYXNodGJsLkNyZWF0b3JzXG5cbmluY2x1ZGUgKFxuICBIYXNodGJsIDpcbiAgc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEJhc2UuSGFzaHRibC5TX3dpdGhvdXRfc3VibW9kdWxlcyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbCA9XG4gICAgY3JlYXRlX21hcHBlZFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIH5nZXRfa2V5IGxcbiAgOztcblxuICBsZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgbCA9XG4gICAgZ3JvdXBcbiAgICAgID9ncm93dGhfYWxsb3dlZFxuICAgICAgP3NpemVcbiAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH5nZXRfa2V5XG4gICAgICB+Z2V0X2RhdGFcbiAgICAgIH5jb21iaW5lXG4gICAgICBsXG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICgnYSwgJ2IpIGhhc2h0YmwgPSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBLZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBLZXlfYmluYWJsZVxubW9kdWxlIHR5cGUgS2V5X3N0YWJsZSA9IEtleV9zdGFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBoYXNodGJsXG4gICAgZW5kKVxuXG4gIGxldCBlcXVhbCA9IEhhc2h0YmwuZXF1YWxcbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfa2V5IHQgPSBpbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9rZXkgdFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gUG9seS5zZXhwX29mX3QgVC5LZXkuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgS2V5LnRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IGtleSkgPVxuICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuS2V5XG4gICAgICAgIGluY2x1ZGUgS2V5J1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gS2V5LnQgKiAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmYWJhYjBhLTQ5OTItMTFlNi04Y2NhLTliYTJjNDY4NmQ5ZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJIYXNodGJsLmJpbl9yZWFkX3Q6IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBLZXkudF1cbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaHRibCBpcyByZWxpZWQgb24gYnkgc3RhYmxlIG1vZHVsZXNcbiAgICAgICAoZS5nLiBIYXNodGFibGUuU3RhYmxlKSBhbmQgaXMgdGhlcmVmb3JlIGFzc3VtZWQgdG8gYmUgc3RhYmxlLiAgU28sIGlmIHRoZSBrZXkgYW5kXG4gICAgICAgZGF0YSBjYW4gcHJvdmlkZSBhIHN0YWJsZSB3aXRuZXNzZXMsIHRoZW4gd2UgY2FuIHNhZmVseSB0aGUgaGFzaHRibCBpcyBhbHNvXG4gICAgICAgc3RhYmxlLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgICA6IGRhdGEgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICA9XG4gICAgICBsZXQgKF8gOiBrZXkgU3RhYmxlX3dpdG5lc3MudCkgPSBLZXknLnN0YWJsZV93aXRuZXNzIGluXG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9zdGFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChULktleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgbGV0IGhhc2hhYmxlID1cbiAgICAgIHsgSGFzaGFibGUuaGFzaCA9IEtleS5oYXNoOyBjb21wYXJlID0gS2V5LmNvbXBhcmU7IHNleHBfb2ZfdCA9IEtleS5zZXhwX29mX3QgfVxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEtleSA6IEtleSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlIChLZXkgOiBLZXlfc3RhYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZSAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleSlcbmVuZFxuXG5tb2R1bGUgTSA9IEhhc2h0YmwuTVxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIEZvcl9kZXJpdmluZyA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0ID0gc3RydWN0XG4gIGluY2x1ZGUgKEhhc2h0YmwgOiBIYXNodGJsLkZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuXG4gIG1vZHVsZSB0eXBlIE1fcXVpY2tjaGVjayA9IE1fcXVpY2tjaGVja1xuXG4gIGxldCBvZl9hbGlzdF9vcHRpb24gbSBhbGlzdCA9IFJlc3VsdC5vayAob2ZfYWxpc3Rfb3JfZXJyb3IgbSBhbGlzdClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUga2V5KVxuICAgICAgICAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSlcbiAgICAgICAgcXVpY2tjaGVja19vYnNlcnZlcl9kYXRhXG4gICAgPVxuICAgIFslcXVpY2tjaGVjay5vYnNlcnZlcjogKEtleS50ICogZGF0YSkgTGlzdC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2FsaXN0XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX3Nocmlua2VyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLnNocmlua2VyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdXG4gICAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAgICB+Zjoob2ZfYWxpc3Rfb3B0aW9uIChtb2R1bGUgS2V5KSlcbiAgICAgICAgIH5mX2ludmVyc2U6dG9fYWxpc3RcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5pbmNsdWRlIEJhc2UuSGFzaF9zZXRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW4gd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAnYSBoYXNoX3NldCA6PSAnYSB0XG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfc3RhYmxlID0gU19zdGFibGUgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEhhc2h0YmwuS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBIYXNodGJsLktleVxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBIYXNodGJsLktleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBFbHRfc3RhYmxlID0gSGFzaHRibC5LZXlfc3RhYmxlXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBULkVsdC50XG4gIHR5cGUgbm9ucmVjIHQgPSBlbHQgdFxuXG4gIGxldCBlcXVhbCA9IGVxdWFsXG5cbiAgaW5jbHVkZSBDcmVhdG9ycyAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBULkVsdC50XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gUG9seS5zZXhwX29mX3QgVC5FbHQuc2V4cF9vZl90IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBYLnRfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBULkVsdFxuICAgICAgICBpbmNsdWRlIFhcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYWQzODE2NzItNDk5Mi0xMWU2LTllMzYtYjc2ZGM4Y2Q0NjZmXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2hfc2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCB2ID0gbmV4dCAoKSBpblxuICAgICAgICAgIGFkZCB0IHZcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3NcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gZWx0KSA9XG4gIHN0cnVjdFxuICAgICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgaGFzaF9zZXQgaXMgdXNlZCBpbiB0aGUgc3RhYmxlIG1vZHVsZXMgYmVsb3csIHNvIGl0J3NcbiAgICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpIC4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgbGV0IChfIDogZWx0IFN0YWJsZV93aXRuZXNzLnQpID0gWC5zdGFibGVfd2l0bmVzcyBpblxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0XG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X2JpbmFibGVcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgRWx0IDogRWx0X3N0YWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgIGxldCBoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3N0YWJsZSAoRWx0IDogRWx0X3N0YWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGUgKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQpXG5lbmRcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2FcblxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgKCkgPVxuICAgIGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5lbmRcblxubGV0IGhhc2hhYmxlID0gUHJpdmF0ZS5oYXNoYWJsZVxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+Zjoob2ZfbGlzdCAobW9kdWxlIEtleSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiBLZXkudCBMaXN0MC50XSB8PiBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIH5mOnRvX2xpc3Rcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IEtleS50IExpc3QwLnRdXG4gIHw+IFF1aWNrY2hlY2suU2hyaW5rZXIubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSkgfmZfaW52ZXJzZTp0b19saXN0XG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgaW50ZXJmYWNlcyB1c2VkIGluIHt7IU1hcH1bTWFwXX0uIFNlZSB0aG9zZSBkb2NzIGZvciBhIGRlc2NyaXB0aW9uXG4gICAgb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezEsMiwzLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW01hcF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMzXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgTWFwID0gQmFzZS5NYXBcbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBNYXAuT3JfZHVwbGljYXRlXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgS2V5X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwga2V5X3NldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2sga2V5IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzX2dlbmVyaWNcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbU2V0LnRdLiAqKVxuICB2YWwgb2Zfa2V5X3NldFxuICAgIDogICgnayBrZXksICdjbXAgY21wKSBCYXNlLlNldC50XG4gICAgLT4gZjooKCdrIGtleSAtPiAndilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdhIGNtcFxuICB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gJ2IgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICdiIHRcbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChLIDogc2lnXG4gICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgICAgZW5kXG4gICAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSArJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIE1hcC50XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICdiIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSBLZXkudFxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChLZXkgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogIEtleS50IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBLZXkudCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFNfcGxhaW4gd2l0aCBtb2R1bGUgS2V5IDo9IEtleVxuICBpbmNsdWRlIFNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5NYXAuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5NYXAuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgYmluX2lvXSBdfSAqKVxuXG4gIHZhbCBiaW5fc2hhcGVfbV9fdCA6ICgnYSwgJ2MpIEtleV9iaW5faW8udCAtPiBCaW5fcHJvdC5TaGFwZS50IC0+IEJpbl9wcm90LlNoYXBlLnRcblxuICB2YWwgYmluX3NpemVfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5TaXplLnNpemVyXG5cbiAgdmFsIGJpbl93cml0ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG5cbiAgdmFsIGJpbl9yZWFkX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuUmVhZC5yZWFkZXJcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlIG1hcHMsXG4gICAgICBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBpbnQgTWFwLk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIF19ICopXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAndiBTdGFibGVfd2l0bmVzcy50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTdGFibGVfd2l0bmVzcy50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IChpbnQsIHN0cmluZykgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDAwNjc0YmU5ZmU4ZGZlOWU5YWQ0NzYwNjdkN2Q4MTAxIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1hcCAoaywgZGlmZikgfmYxIH5mMiA9XG4gICAgICAgIGxldCBrID0gZjEgayBpblxuICAgICAgICBsZXQgZGlmZiA9XG4gICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgfCBgTGVmdCB2IC0+IGBMZWZ0IChmMiB2KVxuICAgICAgICAgIHwgYFJpZ2h0IHYgLT4gYFJpZ2h0IChmMiB2KVxuICAgICAgICAgIHwgYFVuZXF1YWwgKHYxLCB2MikgLT4gYFVuZXF1YWwgKGYyIHYxLCBmMiB2MilcbiAgICAgICAgaW5cbiAgICAgICAgaywgZGlmZlxuICAgICAgOztcblxuICAgICAgbGV0IG1hcF9kYXRhIHQgfmYgPSBtYXAgdCB+ZjE6Rm4uaWQgfmYyOmZcblxuICAgICAgbGV0IGxlZnQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYExlZnQgeCB8IGBVbmVxdWFsICh4LCBfKSAtPiBTb21lIHhcbiAgICAgICAgfCBgUmlnaHQgXyAtPiBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmlnaHQgKF9rZXksIGRpZmYpID1cbiAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gQmFzZS5NYXAuTWVyZ2VfZWxlbWVudFxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLk1hcC5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA9IEJhc2UuTWFwLkZpbmlzaGVkX29yX3VuZmluaXNoZWRcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBrX2dlbiB2X2dlbiA9XG4gICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgb2JzX3RyZWUga19vYnMgdl9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubWFwX3RyZWUga19vYnMgdl9vYnNcblxuICBsZXQgc2hyX3RyZWUgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtfc2hyIHZfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5tYXBfdF9tXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubWFwX3RcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXAuVXNpbmdfY29tcGFyYXRvclxuICBpbmNsdWRlIEZvcl9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaTooSGFzaHRibC5pdGVyaSBoYXNodGJsKSB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5mYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1hcC5vZl9oYXNodGJsX2V4bjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCB0cmVlX29mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIHRvX3RyZWUgKG9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yIGhhc2h0YmwpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXQgfmNvbXBhcmF0b3IgdCA9XG4gICAgQmFzZS5TZXQuVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKExpc3QudG9fYXJyYXkgKGtleXMgdCkpXG4gIDs7XG5cbiAgbGV0IGtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0ID0ga2V5X3NldCB+Y29tcGFyYXRvciAob2ZfdHJlZSB+Y29tcGFyYXRvciB0KVxuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPVxuICAgIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yOihCYXNlLlNldC5jb21wYXJhdG9yIGtleV9zZXQpXG4gICAgICAoQXJyYXkubWFwIChCYXNlLlNldC50b19hcnJheSBrZXlfc2V0KSB+ZjooZnVuIGtleSAtPiBrZXksIGYga2V5KSlcbiAgOztcblxuICBsZXQgdHJlZV9vZl9rZXlfc2V0IGtleV9zZXQgfmYgPSB0b190cmVlIChvZl9rZXlfc2V0IGtleV9zZXQgfmYpXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBNYXAuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBNYXAuQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTWFwLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2tcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjKVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2EsICdiLCAnYykgTWFwLldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnayBrZXkgOj0gJ2sga2V5XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBjbXBcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcbmVuZClcblxubW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gPSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cblxubGV0IGZpbmRfb3JfZXJyb3IgdCBrZXkgPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgfCBTb21lIGRhdGEgLT4gT2sgZGF0YVxuICB8IE5vbmUgLT5cbiAgICBsZXQgc2V4cF9vZl9rZXkgPSBjb21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwia2V5IG5vdCBmb3VuZFwiIH5fOihrZXkgOiBrZXkpXVxuOztcblxubGV0IG1lcmdlX3NrZXdlZCA9IE1hcC5tZXJnZV9za2V3ZWRcbmxldCBvZl9oYXNodGJsX2V4biBtIHQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0YmxfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB0XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSA9IG9mX2xpc3Rfd2l0aF9rZXkgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgPVxuICAgIG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9leG4gbCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBvZl9pdGVyaV9leG4gfml0ZXJpIH5jb21wYXJhdG9yXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHRvX3RyZWUgdCA9IHRcbiAgbGV0IGludmFyaWFudHMgYSA9IGludmFyaWFudHMgYSB+Y29tcGFyYXRvclxuICBsZXQgaXNfZW1wdHkgYSA9IGlzX2VtcHR5IGFcbiAgbGV0IGxlbmd0aCBhID0gbGVuZ3RoIGFcbiAgbGV0IHNldCBhIH5rZXkgfmRhdGEgPSBzZXQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGQgYSB+a2V5IH5kYXRhID0gYWRkIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX2V4biBhIH5rZXkgfmRhdGEgPSBhZGRfZXhuIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgYWRkX211bHRpIGEgfmtleSB+ZGF0YSA9IGFkZF9tdWx0aSBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZV9tdWx0aSBhIGIgPSByZW1vdmVfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kX211bHRpIGEgYiA9IGZpbmRfbXVsdGkgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBjaGFuZ2UgYSBiIH5mID0gY2hhbmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgdXBkYXRlIGEgYiB+ZiA9IHVwZGF0ZSBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfZXhuIGEgYiA9IGZpbmRfZXhuIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgZmluZCBhIGIgPSBmaW5kIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlIGEgYiA9IHJlbW92ZSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSBhIGIgPSBtZW0gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBpdGVyX2tleXMgPSBpdGVyX2tleXNcbiAgbGV0IGl0ZXIgPSBpdGVyXG4gIGxldCBpdGVyaSA9IGl0ZXJpXG4gIGxldCBpdGVyaV91bnRpbCA9IGl0ZXJpX3VudGlsXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBpdGVyMiBhIGIgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwaSA9IG1hcGlcbiAgbGV0IGZvbGQgPSBmb2xkXG4gIGxldCBmb2xkX3VudGlsID0gZm9sZF91bnRpbFxuICBsZXQgZm9sZF9yaWdodCA9IGZvbGRfcmlnaHRcbiAgbGV0IGZvbGQyIGEgYiB+aW5pdCB+ZiA9IGZvbGQyIGEgYiB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX2tleXMgYSB+ZiA9IGZpbHRlcl9rZXlzIGEgfmZcbiAgbGV0IGZpbHRlciBhIH5mID0gZmlsdGVyIGEgfmZcbiAgbGV0IGZpbHRlcmkgYSB+ZiA9IGZpbHRlcmkgYSB+ZlxuICBsZXQgZmlsdGVyX21hcCBhIH5mID0gZmlsdGVyX21hcCBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwaSBhIH5mID0gZmlsdGVyX21hcGkgYSB+ZlxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXAgdCB+ZlxuICBsZXQgcGFydGl0aW9uaV90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbl90ZiB0IH5mXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0ID0gY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgYSBiIGMgPSBjb21wYXJlX2RpcmVjdCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgZXF1YWwgYSBiIGMgPSBlcXVhbCBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQga2V5cyA9IGtleXNcbiAgbGV0IGRhdGEgPSBkYXRhXG4gIGxldCB0b19hbGlzdCA9IHRvX2FsaXN0XG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgPSBzeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmNvbXBhcmF0b3JcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIGZvbGRfc3ltbWV0cmljX2RpZmYgYSBiIH5kYXRhX2VxdWFsIH5mIH5pbml0IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG1lcmdlIGEgYiB+ZiA9IG1lcmdlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSA9IG1lcmdlX3NrZXdlZCBhIGIgfmNvbWJpbmUgfmNvbXBhcmF0b3JcbiAgbGV0IG1pbl9lbHQgPSBtaW5fZWx0XG4gIGxldCBtaW5fZWx0X2V4biA9IG1pbl9lbHRfZXhuXG4gIGxldCBtYXhfZWx0ID0gbWF4X2VsdFxuICBsZXQgbWF4X2VsdF9leG4gPSBtYXhfZWx0X2V4blxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGV4aXN0cyA9IGV4aXN0c1xuICBsZXQgZXhpc3RzaSA9IGV4aXN0c2lcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgc3BsaXQgYSBiID0gc3BsaXQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdF9sZV9ndCBhIGIgPSBzcGxpdF9sZV9ndCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHNwbGl0X2x0X2dlIGEgYiA9IHNwbGl0X2x0X2dlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID0gYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJhdG9yXG5cbiAgbGV0IHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCA9IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJhdG9yXG4gIGxldCBjbG9zZXN0X2tleSBhIGIgYyA9IGNsb3Nlc3Rfa2V5IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBudGggPSBudGhcbiAgbGV0IG50aF9leG4gPSBudGhfZXhuXG4gIGxldCByYW5rIGEgYiA9IHJhbmsgYSBiIH5jb21wYXJhdG9yXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgdG9fc2VxdWVuY2UgfmNvbXBhcmF0b3IgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3IgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gIDs7XG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpID0gc3RydWN0XG4gICAgbW9kdWxlIFRyYXZlcnNhbHMgPSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSA9IFRyYXZlcnNhbHMubWFwaVxuICAgIGxldCBmaWx0ZXJfbWFwaSA9IFRyYXZlcnNhbHMuZmlsdGVyX21hcGlcbiAgZW5kXG5cbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHRcbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB0ID0gdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgfmNvbXBhcmF0b3IgdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIG1hcCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGtleSBhbmQgZGF0YSBhcmUgc3RhYmxlKSAuICopXG4gIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBkYXRhKSAoX2RhdGFfc3RhYmxlX3dpdG5lc3MgOiBkYXRhIFN0YWJsZV93aXRuZXNzLnQpXG4gICAgOiAoS2V5LnQsIGRhdGEsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudFxuICAgID1cbiAgICBsZXQgKF8gOiBLZXkudCBTdGFibGVfd2l0bmVzcy50KSA9IEtleS5zdGFibGVfd2l0bmVzcyBpblxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X2dlbmVyYXRvclxuICAgID1cbiAgICBxdWlja2NoZWNrX2dlbmVyYXRvciAobW9kdWxlIEtleSkgS2V5LnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHZfZ2VuZXJhdG9yXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdl9vYnNlcnZlclxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEtleS5xdWlja2NoZWNrX29ic2VydmVyIHZfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIGxldCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5KSBpblxuICAgIE0uc3RhYmxlX3dpdG5lc3NcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRyZWVcblxuICBsZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcbiAgbGV0IHZhbGlkYXRlaSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5saXN0IH5uYW1lOihGbi5jb21wb3NlIG5hbWUgZnN0KSBmICh0b19hbGlzdCB0KVxuICBsZXQgb2ZfaGFzaHRibF9leG4gPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG5cbiAgbGV0IGtleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZVxuICBsZXQgb2Zfa2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9rZXlfc2V0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdrLCAndiwgJ2NtcCkgdCA9ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IChrZXksICdhLCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdfc3RhYmxlXG4gICAgbW9kdWxlIE1ha2UgKEtleSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEtleSlcblxuICAgIG1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gICAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICAgIGluY2x1ZGUgU1xuXG4gICAgICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6ICdhIFN0YWJsZV93aXRuZXNzLnQgLT4gJ2EgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEtleV9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZSAoS2V5X3N0YWJsZSlcbiAgICAgICAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXlfc3RhYmxlKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gU3ltbWV0cmljX2RpZmZfZWxlbWVudC5TdGFibGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5NYXliZV9ib3VuZC50ID1cbiAgICAgIHwgSW5jbCBvZiAnYVxuICAgICAgfCBFeGNsIG9mICdhXG4gICAgICB8IFVuYm91bmRlZFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBJbmNsIHggLT4gSW5jbCAoZiB4KVxuICAgICAgfCBFeGNsIHggLT4gRXhjbCAoZiB4KVxuICAgICAgfCBVbmJvdW5kZWQgLT4gVW5ib3VuZGVkXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBCYXNlLk1heWJlX2JvdW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5WMS50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cF1cblxubGV0IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgVW5ib3VuZGVkLCBVbmJvdW5kZWQgLT4gMFxuICB8IFVuYm91bmRlZCwgXyAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgfCBgVXBwZXIgLT4gMSlcbiAgfCBfLCBVbmJvdW5kZWQgLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IDFcbiAgICAgfCBgVXBwZXIgLT4gLTEpXG4gIHwgSW5jbCBhMSwgSW5jbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBFeGNsIGExLCBFeGNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEluY2wgYTEsIEV4Y2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IC0xXG4gICAgICB8IGBVcHBlciAtPiAxKVxuICAgIGVsc2UgY1xuICB8IEV4Y2wgYTEsIEluY2wgYTIgLT5cbiAgICBsZXQgYyA9IGNvbXBhcmVfYSBhMSBhMiBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICAgIHwgYExvd2VyIC0+IDFcbiAgICAgIHwgYFVwcGVyIC0+IC0xKVxuICAgIGVsc2UgY1xuOztcblxubW9kdWxlIEFzX2xvd2VyX2JvdW5kID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YFVwcGVyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shQ29yZS5TZXR9W1NldF19LiBTZWUgdGhlXG4gICAgeyFNYXB9IGRvY3MgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGRlc2lnbi5cblxuICAgIFRoaXMgbW9kdWxlIGRlZmluZXMgbW9kdWxlIHR5cGVzXG4gICAgW3tDcmVhdG9ycyxBY2Nlc3NvcnN9ezAsMSwyLF9nZW5lcmljLF93aXRoX2NvbXBhcmF0b3J9XS4gSXQgdXNlcyBjaGVjayBmdW5jdG9ycyB0b1xuICAgIGVuc3VyZSB0aGF0IGVhY2ggbW9kdWxlIHR5cGUgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgW19nZW5lcmljXSBvbmUuXG5cbiAgICBXZSBtdXN0IHRyZWF0IFtDcmVhdG9yc10gYW5kIFtBY2Nlc3NvcnNdIHNlcGFyYXRlbHksIGJlY2F1c2Ugd2Ugc29tZXRpbWVzIG5lZWQgdG9cbiAgICBjaG9vc2UgZGlmZmVyZW50IGluc3RhbnRpYXRpb25zIG9mIHRoZWlyIFtvcHRpb25zXS4gSW4gcGFydGljdWxhciwgW1NldF0gaXRzZWxmXG4gICAgbWF0Y2hlcyBbQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvcl0gYnV0IFtBY2Nlc3NvcnMyXSAod2l0aG91dCBjb21wYXJhdG9yKS5cbiopXG5cbigqXG4gICBDUnMgYW5kIGNvbW1lbnRzIGFib3V0IFtTZXRdIGZ1bmN0aW9ucyBkbyBub3QgYmVsb25nIGluIHRoaXMgZmlsZS4gIFRoZXkgYmVsb25nIG5leHRcbiAgIHRvIHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiBzZXQubWxpLlxuKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5tb2R1bGUgU2V0ID0gQmFzZS5TZXRcbm1vZHVsZSBUcmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIHZhbCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgOiAgKG1vZHVsZSBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgU3RhYmxlX3dpdG5lc3MudFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBTZXQuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gU2V0LldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IFNlcXVlbmNlLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgU2V0LkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIHRvX21hcFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnRcbiAgICAgIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdhIGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCAnY21wLCAoJ2EgZWx0LCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gICgqKiBOZXZlciByZXF1aXJlcyBhIGNvbXBhcmF0b3IgYmVjYXVzZSBpdCBjYW4gZ2V0IG9uZSBmcm9tIHRoZSBpbnB1dCBbTWFwLnRdLiAqKVxuICB2YWwgb2ZfbWFwX2tleXMgOiAoJ2EgZWx0LCBfLCAnY21wIGNtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnYSBlbHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdlbHQsICdjbXApIHRcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZVxuICB0eXBlICdlbHQgZWx0XG4gIHR5cGUgJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0XG4gICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgY21wXG5lbmRcblxubW9kdWxlIE1ha2VfU19wbGFpbl90cmVlIChFbHQgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEVsdCA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogRWx0LnQgUXVpY2tjaGVjay5PYnNlcnZlci50IC0+IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogRWx0LnQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBpbmNsdWRlIFMgd2l0aCBtb2R1bGUgRWx0IDo9IEVsdFxuICBpbmNsdWRlIEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxub3BlbiBTZXRfaW50ZlxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50XG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgU2V0LnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50KVxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdhLCAnYiwgJ2MpIFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvcl9zID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yX3NcbmxldCBjb21wYXJhdG9yID0gVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yXG5sZXQgb2ZfaGFzaF9zZXQgbSBoc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNoX3NldCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoc2V0XG5cbmxldCBvZl9oYXNodGJsX2tleXMgbSBoYXNodGJsID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaGFzaHRibFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdhIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSBFbHQudCkgLT4gQmFzZS5TZXhwLnQgLT4gKCdhLCAnY29tcGFyYXRvcikgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgZWx0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IG1hcCB0IH5mID0gVHJlZS5tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gVHJlZS5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0IGwgPSBUcmVlLm9mX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFRyZWUub2Zfc2VxdWVuY2UgcyB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IFRyZWUub2ZfaGFzaF9zZXQgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hcnJheSBhID0gVHJlZS5vZl9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBUcmVlLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBUcmVlLm9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG4gIGxldCB1bmlvbl9saXN0IGwgPSBUcmVlLnVuaW9uX2xpc3QgbCB+Y29tcGFyYXRvclxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgeHMgPSBUcmVlLnN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHQgPSB0XG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIGVsdCB+Y29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChFbHRfUzEpXG5cbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IFRyZWUuc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgWC50X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpFbHRfUzEuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiBpblxuICBpZiBpbnZhcmlhbnRzIHNldFxuICB0aGVuIHNldFxuICBlbHNlXG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKGZvbGQgc2V0IH5pbml0OihUcmVlLmVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICAgICAgIGlmIFRyZWUubWVtIGFjYyBlbHQgfmNvbXBhcmF0b3JcbiAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXQuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gc2V0XCJcbiAgICAgICAgIGVsc2UgVHJlZS5hZGQgYWNjIGVsdCB+Y29tcGFyYXRvcikpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gQ29tcGFyYXRvci5Qb2x5XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdClcblxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgWyVzZXhwX29mOiBfXSB0XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG4gIDs7XG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OGJjYzQ3OC00OTkyLTExZTYtYTk1ZC1mZjQ4MzFhY2Y0MTBcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gICAgdHlwZSAnZWx0IHQgPSAoJ2VsdCwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gVHJlZS5zZXhwX29mX3Qgc2V4cF9vZl9lbHQgWyVzZXhwX29mOiBfXSB0XG5cbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPVxuICAgICAgVHJlZS50X29mX3NleHBfZGlyZWN0IGVsdF9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEVsdF9iaW5faW8gPSBFbHRfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoRWx0IDogRWx0X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgZWwgPSBFbHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg5ODkyNzhlLTQ5OTItMTFlNi04ZjRhLTZiODk3NzZiMWU1M1wiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIH5mOihmdW4ga2V5IC0+IGYga2V5KSB0XG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNldCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlIGVsdCBpcyBzdGFibGUpLiAqKVxuICBsZXQgc3RhYmxlX3dpdG5lc3MgOiAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgbGV0IChfIDogRWx0LnQgU3RhYmxlX3dpdG5lc3MudCkgPSBFbHQuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBFbHQudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID0gc3RydWN0XG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlIHRcblxuICAgIGxldCBoYXNoIHQgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChoYXNoX2ZvbGRfdCAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSkgdClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQnIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPVxuICAgIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFbHRcbiAgICAgIGluY2x1ZGUgRWx0J1xuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBxdWlja2NoZWNrX3Nocmlua2VyXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEVsdCA6IEVsdF9wbGFpbikgPSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChFbHQgOiBFbHQpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBTZXQuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEVsdF9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX29ic2VydmVyIEVsdC5xdWlja2NoZWNrX29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBFbHQucXVpY2tjaGVja19zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IFNldC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChTZXQgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdClcbmVuZFxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTdGFibGVfd2l0bmVzc19tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudFxuICBlbmRcblxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbV9fdFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgKG1vZHVsZSBFbHQgOiBTdGFibGVfd2l0bmVzc19tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdCkgaW5cbiAgICBNLnN0YWJsZV93aXRuZXNzXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ19zdGFibGVcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBTXG5cbiAgICAgICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKEVsdF9zdGFibGUgOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zdGFibGUpXG4gICAgICAgIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0X3N0YWJsZSlcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmFibGUuQ29tcGFyaXNvbnNcblxubW9kdWxlIFZhbGlkYXRlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgOiBWYWxpZGF0ZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZVxuICBvcGVuIE1heWJlX2JvdW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gQmFzZS5TZXhwLnRvX3N0cmluZyAoVC5zZXhwX29mX3QgdClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFYuYm91bmRlZCB+bmFtZTp0b19zdHJpbmcgfmxvd2VyOm1pbiB+dXBwZXI6bWF4IH5jb21wYXJlOlQuY29tcGFyZSB0XG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXg6VW5ib3VuZGVkIHRcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPSB2YWxpZGF0ZV9ib3VuZCB+bWF4IH5taW46VW5ib3VuZGVkIHRcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFYgPSBWYWxpZGF0ZSAoVClcbiAgaW5jbHVkZSBWXG5cbiAgKCogUHJlYWxsb2NhdGUgdGhlIGludGVyZXN0aW5nIGJvdW5kcyB0byBtaW5pbWl6ZSBhbGxvY2F0aW9uIGluIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2ZcbiAgICAgW3ZhbGlkYXRlXypdLiAqKVxuICBsZXQgZXhjbF96ZXJvID0gTWF5YmVfYm91bmQuRXhjbCBULnplcm9cbiAgbGV0IGluY2xfemVybyA9IE1heWJlX2JvdW5kLkluY2wgVC56ZXJvXG4gIGxldCB2YWxpZGF0ZV9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfbGJvdW5kIH5taW46aW5jbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV91Ym91bmQgfm1heDppbmNsX3plcm8gdFxuZW5kXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlX3dpdGhfemVybyAoVClcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuV2l0aF96ZXJvIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuICBNYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuUG9seSAoVClcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgVmFsaWRhdGUgKEMpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpID1cbiAgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIE1cblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBNXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIE0gPSBCYXNlLkNvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBNXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEV4dGVuZF9iaW5hYmxlXG4gICAgKE0gOiBCYXNlLkNvbXBhcmFibGUuUykgKFggOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG5pbmNsdWRlIChCYXNlLkNvbXBhcmFibGUgOiBXaXRoX2NvbXBhcmUpXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgTWFwIDpcbiAgICAgICAgTWFwLlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBrZXkgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBtb2R1bGUgU2V0IDpcbiAgICAgICAgU2V0LlN0YWJsZS5WMS5TXG4gICAgICAgIHdpdGggdHlwZSBlbHQgOj0gY29tcGFyYWJsZVxuICAgICAgICB3aXRoIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChYIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgICBtb2R1bGUgU2V0ID0gU2V0LlN0YWJsZS5WMS5NYWtlIChYKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBjb21wYXJhYmxlXG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgICAgTWFwLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICAgIFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzApID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoWClcbiAgICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChYKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJpbmNsdWRlIExpc3QwICgqKiBAaW5saW5lICopXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgc3RhZ2VkIHRvIGluZGljYXRlIHRoYXQgcmVhbCB3b3JrICh0aGUgZnVuY3RvciBhcHBsaWNhdGlvbikgdGFrZXNcbiAgIHBsYWNlIGFmdGVyIGEgcGFydGlhbCBhcHBsaWNhdGlvbi4gKilcbmxldCBzdGFibGVfZGVkdXBfc3RhZ2VkICh0eXBlIGEpIH4oY29tcGFyZSA6IGEgLT4gYSAtPiBpbnQpXG4gIDogKGEgbGlzdCAtPiBhIGxpc3QpIEJhc2UuU3RhZ2VkLnRcbiAgPVxuICBsZXQgbW9kdWxlIFNldCA9XG4gICAgU2V0Lk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcblxuICAgICAgKCogW3N0YWJsZV9kZWR1cF9saXN0XSBuZXZlciBjYWxscyB0aGVzZSAqKVxuICAgICAgbGV0IHRfb2Zfc2V4cCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgICBsZXQgc2V4cF9vZl90IF8gPSBhc3NlcnQgZmFsc2VcbiAgICBlbmQpXG4gIGluXG4gIEJhc2UuU3RhZ2VkLnN0YWdlIFNldC5zdGFibGVfZGVkdXBfbGlzdFxuOztcblxubGV0IHppcF93aXRoX3JlbWFpbmRlciA9XG4gIGxldCByZWMgemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgYWNjIHhzIHlzID1cbiAgICBtYXRjaCB4cywgeXMgd2l0aFxuICAgIHwgW10sIFtdIC0+IHJldiBhY2MsIE5vbmVcbiAgICB8IGZzdCwgW10gLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLkZpcnN0IGZzdClcbiAgICB8IFtdLCBzbmQgLT4gcmV2IGFjYywgU29tZSAoRWl0aGVyLlNlY29uZCBzbmQpXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyICgoeCwgeSkgOjogYWNjKSB4cyB5c1xuICBpblxuICBmdW4geHMgeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgW10geHMgeXNcbjs7XG5cbnR5cGUgc2V4cF90aHVuayA9IHVuaXQgLT4gQmFzZS5TZXhwLnRcblxubGV0IHNleHBfb2Zfc2V4cF90aHVuayB4ID0geCAoKVxuXG5leGNlcHRpb24gRHVwbGljYXRlX2ZvdW5kIG9mIHNleHBfdGh1bmsgKiBCYXNlLlN0cmluZy50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5faWZfZHVwIH5jb21wYXJlID8oY29udGV4dCA9IFwiZXhuX2lmX2R1cFwiKSB0IH50b19zZXhwID1cbiAgbWF0Y2ggZmluZF9hX2R1cCB+Y29tcGFyZSB0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkdXAgLT4gcmFpc2UgKER1cGxpY2F0ZV9mb3VuZCAoKGZ1biAoKSAtPiB0b19zZXhwIGR1cCksIGNvbnRleHQpKVxuOztcblxubGV0IHNsaWNlIGEgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiBhIHN0YXJ0IHN0b3Bcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBMaXN0MC5zdGFibGVfd2l0bmVzcyBbQEBhbGVydCBcIi1mb3JfaW50ZXJuYWxfdXNlX29ubHlcIl1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHZhbGlkYXRlIH5ub25lIH5zb21lIHQgPVxuICBsZXQgbW9kdWxlIFYgPSBWYWxpZGF0ZSBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFYubmFtZSBcIm5vbmVcIiAoVi5wcm90ZWN0IG5vbmUgKCkpXG4gIHwgU29tZSB4IC0+IFYubmFtZSBcInNvbWVcIiAoVi5wcm90ZWN0IHNvbWUgeClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub3B0aW9uXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5vcHRpb25cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm9wdGlvblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzJsXG4gICAgOiAgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdiW0Bsb2NhbF0pXG4gICAgLT4gKCgnYSAtPiAoJ2JbQGxvY2FsXSkgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fMyA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkKSAtPiAnZFxuICB2YWwgd2l0aF9pdGVyYXRpb25fNCA6IHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlKSAtPiAnZVxuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80bFxuICAgIDogIHRcbiAgICAtPiAoJ2FbQGxvY2FsXSlcbiAgICAtPiAoJ2JbQGxvY2FsXSlcbiAgICAtPiAnY1xuICAgIC0+ICdkXG4gICAgLT4gKCgoJ2FbQGxvY2FsXSkgLT4gKCdiW0Bsb2NhbF0pIC0+ICdjIC0+ICdkIC0+ICdlKVtAbG9jYWxdKVxuICAgIC0+ICdlXG5cbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzJsIHQgYSAoYiBbQGxvY2FsXSkgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzRsIHQgKGEgW0Bsb2NhbF0pIChiIFtAbG9jYWxdKSBjIGQgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyBkIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgbWVyZ2UgKHQxIDogdCkgdDIgPVxuICAgIGlmIFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICAgIHRoZW4gYFNhbWVfYWxyZWFkeVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG4xID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEpLmxlbmd0aCBpblxuICAgICAgbGV0IG4yID0gKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIpLmxlbmd0aCBpblxuICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MSB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDIgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICAgIFVuaW9uX2ZpbmQudW5pb24gdDEgdDI7XG4gICAgICAgICAgVW5pb25fZmluZC5zZXQgdDEgeyBsZW5ndGggPSBuMSArIG4yOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH0pKTtcbiAgICAgIGBNZXJnZWQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEVsdCA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgaGVhZGVyIDogJ2EgdCAtPiBIZWFkZXIudFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgY3JlYXRlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhXG4gIHZhbCBzZXQgOiAnYSB0IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVubGluayA6ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgaW5zZXJ0X2FmdGVyIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBpbnNlcnRfYmVmb3JlIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCB1bmxpbmtfYmVmb3JlIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBuZXh0IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBwcmV2IDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgdFxuICAgIDsgbXV0YWJsZSBoZWFkZXIgOiBIZWFkZXIudFxuICAgIH1cblxuICBsZXQgZXF1YWwgPSBwaHlzX2VxdWFsXG4gIGxldCBuZXh0IHQgPSB0Lm5leHRcbiAgbGV0IHByZXYgdCA9IHQucHJldlxuICBsZXQgaGVhZGVyIHQgPSB0LmhlYWRlclxuXG4gIGxldCBjcmVhdGVfYXV4IHYgaGVhZGVyID1cbiAgICBsZXQgcmVjIHQgPSB7IHZhbHVlID0gdjsgcHJldiA9IHQ7IG5leHQgPSB0OyBoZWFkZXIgfSBpblxuICAgIHRcbiAgOztcblxuICBsZXQgaXNfc2luZ2xldG9uIHQgPSBlcXVhbCB0IHQucHJldlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9hIHQudmFsdWVcbiAgbGV0IGNyZWF0ZSB2ID0gY3JlYXRlX2F1eCB2IChIZWFkZXIuY3JlYXRlICgpKVxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgbGV0IHNldCB0IHYgPSB0LnZhbHVlIDwtIHZcblxuICAoKlxuICAgICBbc3BsaXRfb3Jfc3BsaWNlXSBpcyBzdWZmaWNpZW50IGFzIHRoZSBsb25lIHByaW1pdGl2ZSBmb3JcbiAgICAgYWNjb21wbGlzaGluZyBhbGwgcG9pbnRlciB1cGRhdGVzIG9uIGN5Y2xpYyBsb29wcyBvZiBsaXN0IG5vZGVzLlxuICAgICBJdCB0YWtlcyB0d28gXCJnYXBzXCIgYmV0d2VlbiBhZGphY2VudCBsaW5rZWQgbGlzdCBub2Rlcy4gIElmIHRoZSBnYXBzXG4gICAgIHBvaW50IGludG8gdGhlIHNhbWUgbGlzdCwgdGhlIHJlc3VsdCBpcyB0aGF0IGl0IHdpbGwgYmUgc3BsaXQgaW50b1xuICAgICB0d28gbGlzdHMgYWZ0ZXJ3YXJkcy4gIElmIHRoZSBnYXBzIHBvaW50IGludG8gZGlmZmVyZW50IGxpc3RzLCB0aGVcbiAgICAgcmVzdWx0IGlzIHRoYXQgdGhleSB3aWxsIGJlIHNwbGljZWQgdG9nZXRoZXIgaW50byBvbmUgbGlzdCBhZnRlcndhcmRzLlxuXG4gICAgIHt2XG4gICAgICAgQmVmb3JlICAgICAgICAgICAgICAgICAgICAgIEFmdGVyXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEEgfCAgPC0tPiAgfCBCICAgICAgICAgICAgICAgQSB8ICA8LS0tICAgLS0tPiAgfCBCXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgXFwgLyAgICAgICstLS0tLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgLyBcXCAgICAgICstLS0tLVxuICAgICAgICAgICAgICBDIHwgIDwtLT4gIHwgRCAgICAgICAgICAgICAgIEMgfCAgPC0tLSAgIC0tLT4gIHwgRFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICB2fSAqKVxuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlIH5wcmV2MTphIH5uZXh0MTpiIH5wcmV2MjpjIH5uZXh0MjpkID1cbiAgICBhLm5leHQgPC0gZDtcbiAgICBkLnByZXYgPC0gYTtcbiAgICBjLm5leHQgPC0gYjtcbiAgICBiLnByZXYgPC0gY1xuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+bmV4dDE6dDEubmV4dFxuICAgICAgfnByZXYxOnQxLm5leHQucHJldlxuICAgICAgfm5leHQyOnQyLm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5uZXh0LnByZXZcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5wcmV2MTp0MS5wcmV2XG4gICAgICB+bmV4dDE6dDEucHJldi5uZXh0XG4gICAgICB+cHJldjI6dDIucHJldlxuICAgICAgfm5leHQyOnQyLnByZXYubmV4dFxuICA7O1xuXG4gIGxldCBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyID1cbiAgICBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxLmhlYWRlcjtcbiAgICBpZiBub3QgKEhlYWRlci5lcXVhbCB0MS5oZWFkZXIgdDIuaGVhZGVyKVxuICAgIHRoZW4gSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0Mi5oZWFkZXJcbiAgOztcblxuICAoKiBXZSByZWRlZmluZSBzYWZlIHZlcnNpb25zIGZvciBleHBvcnQgKilcbiAgbGV0IHNwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyXG4gIDs7XG5cbiAgbGV0IHNwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdDEgdDJcbiAgOztcblxuICBsZXQgaW5zZXJ0X2JlZm9yZSB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IHYgPVxuICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6MTtcbiAgICBsZXQgbm9kZSA9IGNyZWF0ZV9hdXggdiB0LmhlYWRlciBpblxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgZHVtbXlfaGVhZGVyID0gSGVhZGVyLmNyZWF0ZSAoKVxuXG4gIGxldCB1bmxpbmtfYmVmb3JlIHQgPVxuICAgIGxldCBub2RlID0gdC5wcmV2IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGlua19hZnRlciB0ID1cbiAgICBsZXQgbm9kZSA9IHQubmV4dCBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICAgIG5vZGUuaGVhZGVyIDwtIGR1bW15X2hlYWRlcjtcbiAgICAgIG5vZGUpXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID0gaWdub3JlICh1bmxpbmtfYWZ0ZXIgdC5wcmV2IDogXyB0KVxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIEVsdC50IG9wdGlvbiByZWZcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGhlYWQgLT5cbiAgICBsZXQgaGVhZGVyID0gRWx0LmhlYWRlciBoZWFkIGluXG4gICAgbGV0IHJlYyBsb29wIG4gZWx0ID1cbiAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbGV0IHByZXZfZWx0ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5wcmV2IG5leHRfZWx0KSk7XG4gICAgICBhc3NlcnQgKEVsdC5lcXVhbCBlbHQgKEVsdC5uZXh0IHByZXZfZWx0KSk7XG4gICAgICBhc3NlcnQgKEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBlbHQpIGhlYWRlcik7XG4gICAgICBpbnZhcmlhbnRfYSAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBpZiBFbHQuZXF1YWwgbmV4dF9lbHQgaGVhZCB0aGVuIG4gZWxzZSBsb29wIChuICsgMSkgbmV4dF9lbHRcbiAgICBpblxuICAgIGxldCBsZW4gPSBsb29wIDEgaGVhZCBpblxuICAgIGFzc2VydCAobGVuID0gSGVhZGVyLmxlbmd0aCBoZWFkZXIpXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpICgpIDogYSB0ID0gcmVmIE5vbmVcbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcblxubGV0IG9mX2xpc3QgPSBmdW5jdGlvblxuICB8IFtdIC0+IGNyZWF0ZSAoKVxuICB8IHggOjogeHMgLT5cbiAgICBsZXQgZmlyc3QgPSBFbHQuY3JlYXRlIHggaW5cbiAgICBsZXQgX2xhc3QgPSBMaXN0LmZvbGQgeHMgfmluaXQ6Zmlyc3QgfmY6KGZ1biBhIGIgLT4gRWx0Lmluc2VydF9hZnRlciBhIGIpIGluXG4gICAgcmVmIChTb21lIGZpcnN0KVxuOztcblxubGV0IG9mX2FycmF5ID0gZnVuY3Rpb25cbiAgfCBbfHxdIC0+IGNyZWF0ZSAoKVxuICB8IGFyciAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgYXJyLigwKSBpblxuICAgIGxldCByZWMgbG9vcCBhcnIgZWx0IGkgPVxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhcnIgdGhlbiBsb29wIGFyciAoRWx0Lmluc2VydF9hZnRlciBlbHQgYXJyLihpKSkgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBhcnIgZmlyc3QgMTtcbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gRWx0Lmluc2VydF9hZnRlciBhY2MgKGYgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X2ZpcnN0IGZpcnN0IG5leHQpO1xuICAgIHJlZiAoU29tZSBuZXdfZmlyc3QpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBuZXdfZmlyc3QgPSBFbHQuY3JlYXRlIChmIDAgKEVsdC52YWx1ZSBmaXJzdCkpIGluXG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X2ZpcnN0IGZpcnN0IChmdW4gZiBuZXdfZmlyc3QgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiBpIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICAoKiB1bnJvbGwgYW5kIHNraXAgZmlyc3QgZWx0ICopXG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgMSBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzRsIChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdF8xIHQgfmluaXQgfmYgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGkgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgaSBhIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiAwIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBpdGVyX2VsdCB0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT4gZiBlbHQpIGZcbmxldCBpdGVyaV9lbHQgdCB+ZiA9IGZvbGRpX2VsdCB0IH5pbml0OigpIH5mOihmdW4gaSAoKSBlbHQgLT4gZiBpIGVsdClcblxub3BlbiBXaXRoX3JldHVyblxuXG5sZXQgZmluZF9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgZWx0KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9lbHQgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGZvbGRpX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGkgZiAoKSBlbHQgLT5cbiAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSAoaSwgZWx0KSkpO1xuICAgIE5vbmUpXG47O1xuXG4oKiB0aGlzIGZ1bmN0aW9uIGlzIGxhbWJkYSBsaWZ0ZWQgZm9yIHBlcmZvcm1hbmNlLCB0byBtYWtlIGRpcmVjdCByZWN1cnNpdmUgY2FsbHMgaW5zdGVhZFxuICAgb2YgY2FsbHMgdGhyb3VnaCBpdHMgY2xvc3VyZS4gSXQgYWxzbyBhdm9pZHMgdGhlIGluaXRpYWwgY2xvc3VyZSBhbGxvY2F0aW9uLiAqKVxubGV0IHJlYyBpdGVyX2xvb3AgZmlyc3QgZiBlbHQgPVxuICBmIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcl9sb29wIGZpcnN0IGYgbmV4dFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8ybCAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMmwgKEVsdC5oZWFkZXIgZmlyc3QpIGZpcnN0IGYgKGZ1biBmaXJzdCBmIC0+XG4gICAgICBpdGVyaV9sb29wIGZpcnN0IGYgMCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgZm9sZGlfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gaSBmIGFjYyBlbHQgLT4gZiBpIGFjYyAoRWx0LnZhbHVlIGVsdCkpXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgciA9IGZvbGRfZWx0XzEgdCB+aW5pdCBmIH5mOihmdW4gZiBhY2MgZWx0IC0+IGYgYWNjIChFbHQudmFsdWUgZWx0KSkgaW5cbiAgICAgIHJcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCB1bmNoZWNrZWRfaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgZiBlbHQgPVxuICAgICAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgKCogdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGJhZyBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQgYnkgW2ZdICopXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKHBoeXNfZXF1YWwgZmlyc3QgbmV4dCkgdGhlbiBsb29wIHQgZiBuZXh0XG4gICAgaW5cbiAgICBsb29wIHQgZiBmaXJzdFxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBPcHRpb24uaXNfbm9uZSAhdFxuXG4oKiBtb3JlIGVmZmljaWVudCB0aGFuIHdoYXQgQ29udGFpbmVyLk1ha2UgcmV0dXJucyAqKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgKEVsdC52YWx1ZSBwcmV2KSBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgZm9sZF9yaWdodF9lbHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIHByZXYgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IHRvX2xpc3QgdCA9IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIHggdGwgLT4geCA6OiB0bClcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHMgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgcylcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChCYXNlLkxpc3QudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG5sZXQgY29weSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxubGV0IGNsZWFyIHQgPSB0IDo9IE5vbmVcblxubGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgdDEgdDIgPVxuICBtYXRjaCAhdDEsICF0MiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiAwXG4gIHwgTm9uZSwgXyAtPiAtMVxuICB8IF8sIE5vbmUgLT4gMVxuICB8IFNvbWUgZjEsIFNvbWUgZjIgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmMSkgY29tcGFyZV9lbHQgZjEgZjIgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjIpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGNvbXBhcmVfZWx0IGVsdDEgZjEgZWx0MiBmMiA9XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgKEVsdC52YWx1ZSBlbHQxKSAoRWx0LnZhbHVlIGVsdDIpIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPD4gMFxuICAgICAgICAgIHRoZW4gY29tcGFyZV9yZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0MSA9IEVsdC5uZXh0IGVsdDEgaW5cbiAgICAgICAgICAgIGxldCBuZXh0MiA9IEVsdC5uZXh0IGVsdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIHBoeXNfZXF1YWwgbmV4dDEgZjEsIHBoeXNfZXF1YWwgbmV4dDIgZjIgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IDBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICAgICAgICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT4gbG9vcCBjb21wYXJlX2VsdCBuZXh0MSBmMSBuZXh0MiBmMilcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBjb21wYXJlX2VsdCBmMSBmMSBmMiBmMikpXG47O1xuXG5leGNlcHRpb24gVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID1cbiAgaWYgcGh5c19lcXVhbCBzcmMgZHN0IHRoZW4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdDtcbiAgbWF0Y2ggIXNyYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3JjX2hlYWQgLT5cbiAgICAobWF0Y2ggIWRzdCB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGRzdCA6PSBTb21lIHNyY19oZWFkO1xuICAgICAgIGNsZWFyIHNyY1xuICAgICB8IFNvbWUgZHN0X2hlYWQgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm1lcmdlIChFbHQuaGVhZGVyIHNyY19oZWFkKSAoRWx0LmhlYWRlciBkc3RfaGVhZCkgd2l0aFxuICAgICAgICB8IGBTYW1lX2FscmVhZHkgLT4gcmFpc2UgVHJhbnNmZXJfc3JjX2FuZF9kc3RfYXJlX3NhbWVfbGlzdFxuICAgICAgICB8IGBNZXJnZWQgLT5cbiAgICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBkc3RfaGVhZCBzcmNfaGVhZDtcbiAgICAgICAgICBjbGVhciBzcmMpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBpdGVyX2VsdCB0IH5mOihmdW4gZWx0IC0+IEVsdC5zZXQgZWx0IChmIChFbHQudmFsdWUgZWx0KSkpXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPSBpdGVyaV9lbHQgdCB+ZjooZnVuIGkgZWx0IC0+IEVsdC5zZXQgZWx0IChmIGkgKEVsdC52YWx1ZSBlbHQpKSlcblxubGV0IHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlID1cbiAgTGlzdC5pdGVyIHRvX3JlbW92ZSB+ZjooZnVuIGVsdCAtPlxuICAgIChtYXRjaCAhdCB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgaGVhZCAtPlxuICAgICAgIGlmIEVsdC5lcXVhbCBoZWFkIGVsdFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICB0IDo9IGlmIEVsdC5lcXVhbCBoZWFkIG5leHRfZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgbmV4dF9lbHQpKTtcbiAgICBFbHQudW5saW5rIGVsdClcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gZWx0cyBlbHNlIGVsdCA6OiBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxuZXhjZXB0aW9uIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuXG5sZXQgZmlyc3RfZWx0IHQgPSAhdFxubGV0IGxhc3RfZWx0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC5wcmV2ICF0XG5sZXQgZmlyc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChmaXJzdF9lbHQgdClcbmxldCBsYXN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAobGFzdF9lbHQgdClcbmxldCBmaXJzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnZhbHVlXG5sZXQgbGFzdF9leG4gKHQgOiAnYSB0KSA9IE9wdGlvbi52YWx1ZV9leG4gIXQgfD4gRWx0LnByZXYgfD4gRWx0LnZhbHVlXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdF9vZl9zZXhwID0gU2V4cGxpYi5TZXhwLnRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgPSBTZXhwbGliLlNleHAuc2V4cF9vZl90XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmluY2x1ZGUgKFxuICBCYXNlLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgdHlwZSBzZXhwID0gQmFzZS5TZXhwLnQgPVxuICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICB8IExpc3Qgb2YgdCBsaXN0XG5lbmRcblxubW9kdWxlIFNleHBfbWF5YmUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgdCAqIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFJlc3VsdC5PayBhIC0+IHNleHBfb2ZfYSBhXG4gICAgfCBSZXN1bHQuRXJyb3IgKHNleHAsIGVycikgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBFcnJvci5zZXhwX29mX3QgZXJyIF1cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgWyBBdG9tIFwic2V4cF9wYXJzZV9lcnJvclwiOyBzZXhwOyBfIF0gfCBzZXhwIC0+XG4gICAgICAodHJ5IFJlc3VsdC5PayAoYV9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgICB8IGV4biAtPiBSZXN1bHQuRXJyb3IgKHNleHAsIEVycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciAoZ3JhbW1hciA6IF8gU2V4cGxpYi5TZXhwX2dyYW1tYXIudCkgOiBfIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgeyB1bnR5cGVkID0gVW5pb24gWyBncmFtbWFyLnVudHlwZWQ7IEJhc2UuU2V4cC50X3NleHBfZ3JhbW1hci51bnR5cGVkIF0gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBXaXRoX3RleHQgPSBzdHJ1Y3RcbiAgb3BlbiBSZXN1bHQuRXhwb3J0XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHZhbHVlIDogJ2FcbiAgICA7IHRleHQgOiBzdHJpbmdcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IEF0b20gdC50ZXh0XG5cbiAgbGV0IG9mX3RleHQgdmFsdWVfb2Zfc2V4cCA/KGZpbGVuYW1lID0gXCJcIikgdGV4dCA9XG4gICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBvZl9zdHJpbmdfY29udiB0ZXh0IHZhbHVlX29mX3NleHApIHdpdGhcbiAgICB8IE9rIChgUmVzdWx0IHZhbHVlKSAtPiBPayB7IHZhbHVlOyB0ZXh0IH1cbiAgICB8IEVycm9yIF8gYXMgZXJyIC0+IGVyclxuICAgIHwgT2sgKGBFcnJvciAoZXhuLCBhbm5vdGF0ZWQpKSAtPlxuICAgICAgRXJyb3IgKEVycm9yLm9mX2V4biAoQW5ub3RhdGVkLmdldF9jb252X2V4biBhbm5vdGF0ZWQgfmZpbGU6ZmlsZW5hbWUgfmV4YzpleG4pKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBfIC0+XG4gICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgIFwiV2l0aF90ZXh0LnQgc2hvdWxkIGJlIHN0b3JlZCBhcyBhbiBhdG9tLCBidXQgaW5zdGVhZCBhIGxpc3Qgd2FzIGZvdW5kLlwiXG4gICAgICAgIHNleHBcbiAgICB8IEF0b20gdGV4dCAtPiBvZl90ZXh0IGFfb2Zfc2V4cCB0ZXh0IHw+IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGxldCB0ZXh0IHQgPSB0LnRleHRcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgbGV0IG9mX3ZhbHVlIHNleHBfb2ZfdmFsdWUgdmFsdWUgPVxuICAgIGxldCB0ZXh0ID0gc2V4cF9vZl92YWx1ZSB2YWx1ZSB8PiB0b19zdHJpbmdfaHVtIGluXG4gICAgeyB2YWx1ZTsgdGV4dCB9XG4gIDs7XG5lbmRcblxudHlwZSAnYSBub19yYWlzZSA9ICdhIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IHNleHBfb2Zfbm9fcmFpc2Ugc2V4cF9vZl9hIGEgPVxuICB0cnkgc2V4cF9vZl9hIGEgd2l0aFxuICB8IGV4biAtPlxuICAgICh0cnkgTGlzdCBbIEF0b20gXCJmYWlsdXJlIGJ1aWxkaW5nIHNleHBcIjsgc2V4cF9vZl9leG4gZXhuIF0gd2l0aFxuICAgICB8IF8gLT4gQXRvbSBcImNvdWxkIG5vdCBidWlsZCBzZXhwIGZvciBleG4gcmFpc2VkIHdoZW4gYnVpbGRpbmcgc2V4cCBmb3IgdmFsdWVcIilcbjs7XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5FeHRlbmQgKEJhc2UuU2V4cCkgKEJhc2UuU2V4cClcblxubGV0IG9mX3NleHBfYWxsb3dfZXh0cmFfZmllbGRzX3JlY3Vyc2l2ZWx5IG9mX3NleHAgc2V4cCA9XG4gIGxldCByID0gU2V4cGxpYi5Db252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHMgaW5cbiAgbGV0IHByZXYgPSAhciBpblxuICBFeG4ucHJvdGVjdFxuICAgIH5maW5hbGx5OihmdW4gKCkgLT4gciA6PSBwcmV2KVxuICAgIH5mOihmdW4gKCkgLT5cbiAgICAgIHIgOj0gZmFsc2U7XG4gICAgICBvZl9zZXhwIHNleHApXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNleHBcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNleHBcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnNleHBcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBIYXNoX3F1ZXVlX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBTX2JhY2tlbmQgPSBTX2JhY2tlbmRcblxubW9kdWxlIE1ha2VfYmFja2VuZCAoVGFibGUgOiBIYXNodGJsX2ludGYuSGFzaHRibCkgOiBTX2JhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQmFja2VuZCA9XG4gICAgUzFcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfYXJnIDo9ICdrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2tleSA6PSAna2V5XG5cbiAgbW9kdWxlIEJhY2tlbmQgOiBCYWNrZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleV92YWx1ZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2tleSwgJ3ZhbHVlKSB0ID1cbiAgICAgICAgICB7IGtleSA6ICdrZXlcbiAgICAgICAgICA7IG11dGFibGUgdmFsdWUgOiAndmFsdWVcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBrZXkgdCA9IHQua2V5XG4gICAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgeyBrZXk7IHZhbHVlIH0gPVxuICAgICAgICBbJXNleHBfb2Y6IGtleSAqIGRhdGFdIChrZXksIHZhbHVlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG9wZW4gS2V5X3ZhbHVlLlRcbiAgICBtb2R1bGUgRWx0ID0gRG91Ymx5X2xpbmtlZC5FbHRcblxuICAgIHR5cGUgKCdrZXksICdkYXRhKSB0ID1cbiAgICAgIHsgbXV0YWJsZSBudW1fcmVhZGVycyA6IGludFxuICAgICAgOyBxdWV1ZSA6ICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XG4gICAgICA7IHRhYmxlIDogKCdrZXksICgna2V5LCAnZGF0YSkgS2V5X3ZhbHVlLnQgRWx0LnQpIFRhYmxlLnRcbiAgICAgIH1cblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHQgPVxuICAgICAgWyVzZXhwX29mOiAoa2V5LCBkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRdIHQucXVldWVcbiAgICA7O1xuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIGFzc2VydCAoRG91Ymx5X2xpbmtlZC5sZW5ndGggdC5xdWV1ZSA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlKTtcbiAgICAgICgqIExvb2sgYXQgZWFjaCBlbGVtZW50IGluIHRoZSBxdWV1ZSwgY2hlY2tpbmc6XG4gICAgICAgKiAgIC0gZXZlcnkgZWxlbWVudCBpbiB0aGUgcXVldWUgaXMgaW4gdGhlIGhhc2ggdGFibGVcbiAgICAgICAqICAgLSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXNcbiAgICAgICopXG4gICAgICBsZXQga2V5cyA9IFRhYmxlLmNyZWF0ZSB+c2l6ZTooVGFibGUubGVuZ3RoIHQudGFibGUpIChUYWJsZS5oYXNoYWJsZV9zIHQudGFibGUpIGluXG4gICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+XG4gICAgICAgIGxldCBrZXkgPSBrdi5rZXkgaW5cbiAgICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICBhc3NlcnQgKG5vdCAoVGFibGUubWVtIGtleXMga2V5KSk7XG4gICAgICAgICAgVGFibGUuc2V0IGtleXMgfmtleSB+ZGF0YTooKSlcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSA/KGdyb3d0aF9hbGxvd2VkID0gdHJ1ZSkgPyhzaXplID0gMTYpIGhhc2hhYmxlID1cbiAgICAgIHsgbnVtX3JlYWRlcnMgPSAwXG4gICAgICA7IHF1ZXVlID0gRG91Ymx5X2xpbmtlZC5jcmVhdGUgKClcbiAgICAgIDsgdGFibGUgPSBUYWJsZS5jcmVhdGUgfmdyb3d0aF9hbGxvd2VkIH5zaXplIChUYWJsZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCByZWFkIHQgZiA9XG4gICAgICB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgKyAxO1xuICAgICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiB0Lm51bV9yZWFkZXJzIDwtIHQubnVtX3JlYWRlcnMgLSAxKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBlbnN1cmVfY2FuX21vZGlmeSB0ID1cbiAgICAgIGlmIHQubnVtX3JlYWRlcnMgPiAwXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiSXQgaXMgYW4gZXJyb3IgdG8gbW9kaWZ5IGEgSGFzaF9xdWV1ZS50IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0LlwiXG4gICAgOztcblxuICAgIGxldCBjbGVhciB0ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBEb3VibHlfbGlua2VkLmNsZWFyIHQucXVldWU7XG4gICAgICBUYWJsZS5jbGVhciB0LnRhYmxlXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggdCA9IFRhYmxlLmxlbmd0aCB0LnRhYmxlXG4gICAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuICAgIGxldCBsb29rdXAgdCBrID1cbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+IFNvbWUgKEVsdC52YWx1ZSBlbHQpLnZhbHVlXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfZXhuIHQgayA9IChFbHQudmFsdWUgKFRhYmxlLmZpbmRfZXhuIHQudGFibGUgaykpLnZhbHVlXG4gICAgbGV0IG1lbSB0IGsgPSBUYWJsZS5tZW0gdC50YWJsZSBrXG5cbiAgICAoKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgdGFpbC1yZWN1cnNpdmUgQ29yZV9saXN0Lm1hcCAqKVxuICAgIGxldCB0b19saXN0IHQgPSBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuICAgIGxldCB0b19hcnJheSB0ID0gQXJyYXkubWFwIChEb3VibHlfbGlua2VkLnRvX2FycmF5IHQucXVldWUpIH5mOktleV92YWx1ZS52YWx1ZVxuXG4gICAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZvcl9hbGwgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZXhpc3RzIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBcbiAgICAgIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZpbmRfbWFwIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5maW5kX21hcCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbGV0IGNvbnRlbnRzID0geyBLZXlfdmFsdWUua2V5OyB2YWx1ZSB9IGluXG4gICAgICBsZXQgZWx0ID1cbiAgICAgICAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gICAgICAgIHwgYGJhY2sgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfbGFzdCB0LnF1ZXVlIGNvbnRlbnRzXG4gICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgIGluXG4gICAgICBUYWJsZS5zZXQgdC50YWJsZSB+a2V5IH5kYXRhOmVsdFxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBpZiBUYWJsZS5tZW0gdC50YWJsZSBrZXlcbiAgICAgIHRoZW4gYEtleV9hbHJlYWR5X3ByZXNlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBlbnF1ZXVlX3VuY2hlY2tlZCB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2JhY2sgdCA9IGVucXVldWUgdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250IHQgPSBlbnF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLmVucXVldWVfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAgICAgIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlID1cbiAgICAgIG1hdGNoIGVucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSB3aXRoXG4gICAgICB8IGBLZXlfYWxyZWFkeV9wcmVzZW50IC0+IHJhaXNlX2VucXVldWVfZHVwbGljYXRlX2tleSB0IGtleVxuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFja19leG4gdCA9IGVucXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZW5xdWV1ZV9mcm9udF9leG4gdCA9IGVucXVldWVfZXhuIHQgYGZyb250XG5cbiAgICAoKiBQZXJmb3JtYW5jZSBoYWNrOiB3ZSBpbXBsZW1lbnQgdGhpcyB2ZXJzaW9uIHNlcGFyYXRlbHkgdG8gYXZvaWQgYWxsb2NhdGlvbiBmcm9tIHRoZVxuICAgICAgIG9wdGlvbi4gKilcbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19iYWNrIHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250X2V4biB0IGtleSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbGV0IGVsdCA9IFRhYmxlLmZpbmRfZXhuIHQudGFibGUga2V5IGluXG4gICAgICBEb3VibHlfbGlua2VkLm1vdmVfdG9fZnJvbnQgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQgdCBrZXkgPVxuICAgICAgbGV0IG9wZW4gT3B0aW9uLkxldF9zeW50YXggaW5cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQlbWFwIGVsdCA9IFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgbWF5YmVfa3YgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9sYXN0IHQucXVldWVcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5yZW1vdmVfZmlyc3QgdC5xdWV1ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIG1heWJlX2t2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT5cbiAgICAgICAgVGFibGUucmVtb3ZlIHQudGFibGUga3Yua2V5O1xuICAgICAgICBTb21lIChrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKSA9XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkhhc2hfcXVldWUuZGVxdWV1ZV93aXRoX2tleTogZW1wdHkgcXVldWVcIl1cbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV93aXRoX2tleV9lbXB0eSAoKVxuICAgICAgfCBTb21lIChrLCB2KSAtPiBrLCB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIHQgPSBkZXF1ZXVlX3dpdGhfa2V5X2V4biB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnRfd2l0aF9rZXkgdCA9IGRlcXVldWVfd2l0aF9rZXkgdCBgZnJvbnRcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGZyb250XG5cbiAgICBsZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoXywgdikgLT4gU29tZSB2XG4gICAgOztcblxuICAgIGxldCBkZXF1ZXVlX2JhY2sgdCA9IGRlcXVldWUgdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250IHQgPSBkZXF1ZXVlIHQgYGZyb250XG5cbiAgICBsZXQgbGFzdF93aXRoX2tleSB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGxhc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmxhc3QgdC5xdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGt2IC0+IFNvbWUga3YudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgeyBrZXk7IHZhbHVlIH0gLT4gU29tZSAoa2V5LCB2YWx1ZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpcnN0IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5maXJzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX2V4bjogZW1wdHkgcXVldWVcIl1cblxuICAgIGxldCBkZXF1ZXVlX2V4biB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlX2RlcXVldWVfZW1wdHkgKClcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja19leG4gdCA9IGRlcXVldWVfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF9leG4gdCA9IGRlcXVldWVfZXhuIHQgYGZyb250XG5cbiAgICBsZXQga2V5cyB0ID1cbiAgICAgICgqIFJldHVybiB0aGUga2V5cyBpbiB0aGUgb3JkZXIgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjpLZXlfdmFsdWUua2V5XG4gICAgOztcblxuICAgIGxldCB0b19hbGlzdCB0ID1cbiAgICAgIExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6KGZ1biBrdiAtPiBrdi5rZXksIGt2LnZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLml0ZXIgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpIFtAbm9udGFpbF0pIFxuICAgICAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxuICAgIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9sZCB0LnF1ZXVlIH5pbml0IH5mOihmdW4gYWMga3YgLT4gZiBhYyB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkgXG4gICAgICAgIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBhYyB+a2V5Ol8gfmRhdGEgLT4gZiBhYyBkYXRhKSBbQG5vbnRhaWxdXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG4gICAgbGV0IGRlcXVldWVfYWxsIHQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbWF0Y2ggZGVxdWV1ZV9mcm9udCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICAgZiB2O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgIGluXG4gICAgICBsb29wICgpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWVcbiAgICAgIHwgU29tZSBlbHQgLT4gKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHZhbHVlXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWVfZnJvbnQgdCBrZXkgdmFsdWUgPSByZXBsYWNlX29yX2VucXVldWUgdCBgZnJvbnQga2V5IHZhbHVlXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZV9iYWNrIHQga2V5IHZhbHVlID0gcmVwbGFjZV9vcl9lbnF1ZXVlIHQgYGJhY2sga2V5IHZhbHVlXG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgdHlwZSBrZXlcblxuICAgICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgICB0eXBlICdhIHQgPSAoa2V5LCAnYSkgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgIGVuZFxuXG4gICAgICAgIHZhbCBoYXNoYWJsZSA6IGtleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfc3RhYmxlKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBLZXkudCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfc3RhYmxlIChLZXkpXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfc3RhYmxlIChLZXkpXG5cbiAgICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X3N0YWJsZVxuXG4gICAgICAgICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICAgICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgICAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IFwiLi4uXCI7IHN0YXRlID0gc2tpcF90byB9XG4gICAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXg7IHN0YXRlID0gbGluZV9pbmRleCArIDEgfSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3JfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBFeHRlbmQgKE0gOiBCYXNlLklkZW50aWZpYWJsZS5TKSAoQiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSBNLnQpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG4gICAgaW5jbHVkZSAoQiA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZF9iaW5hYmxlIChNKSAoVClcblxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBLZXkgPSBUXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IE0uaGFzaGFibGVcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFYxID0gc2lnXG4gIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuXG4gIGluY2x1ZGVcbiAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5TXG4gICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVjEgPSBzaWdcbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgIGxldCBvZl9zdHJpbmcgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICBsZXQgaGFzaGFibGUgPSBTdGFibGUuVjEuaGFzaGFibGVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5TdHJpbmcpXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zdHJpbmdcbmxldCBnZW5fbm9uZW1wdHkgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlcbmxldCBnZW4nID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfb2ZcbmxldCBnZW5fbm9uZW1wdHknID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5X29mXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuZ3RoIGNoYXJzID1cbiAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfd2l0aF9sZW5ndGhfb2YgY2hhcnMgfmxlbmd0aFxuOztcblxubGV0IHRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczowIH5sZW46aVxuOztcblxubGV0IHJ0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCByZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6KGkgKyAxKSB+bGVuOihsZW5ndGggdCAtIGkgLSAxKVxuOztcblxuKCoqIFNlZSB7IUFycmF5Lm5vcm1hbGl6ZX0gZm9yIHRoZSBmb2xsb3dpbmcgNCBmdW5jdGlvbnMuICopXG5sZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxubGV0IHNsaWNlIHQgc3RhcnQgc3RvcCA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3Bcbjs7XG5cbmxldCBuZ2V0IHggaSA9XG4gIGxldCBtb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmcgaW5cbiAgeC5bbm9ybWFsaXplIHggaV1cbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLlN0cmluZ31bQmFzZS5TdHJpbmddfS4gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5TdHJpbmdcbmVuZFxuXG50eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4oKiogW0Nhc2VsZXNzXSBjb21wYXJlcyBhbmQgaGFzaGVzIHN0cmluZ3MgaWdub3JpbmcgY2FzZSwgc28gdGhhdCBmb3IgZXhhbXBsZVxuICAgIFtDYXNlbGVzcy5lcXVhbCBcIk9DYW1sXCIgXCJvY2FtbFwiXSBhbmQgW0Nhc2VsZXNzLihcImFwcGxlXCIgPCBcIkJhbmFuYVwiKV0gYXJlIFt0cnVlXSwgYW5kXG4gICAgW0Nhc2VsZXNzLk1hcF0sIFtDYXNlbGVzcy5UYWJsZV0gbG9va3VwIGFuZCBbQ2FzZWxlc3MuU2V0XSBtZW1iZXJzaGlwIGlzXG4gICAgY2FzZS1pbnNlbnNpdGl2ZS5cblxuICAgIFtDYXNlbGVzc10gYWxzbyBwcm92aWRlcyBjYXNlLWluc2Vuc2l0aXZlIFtpc19zdWZmaXhdIGFuZCBbaXNfcHJlZml4XSBmdW5jdGlvbnMsIHNvXG4gICAgdGhhdCBmb3IgZXhhbXBsZSBbQ2FzZWxlc3MuaXNfc3VmZml4IFwiT0NhbWxcIiB+c3VmZml4OlwiQW1MXCJdIGFuZCBbQ2FzZWxlc3MuaXNfcHJlZml4XG4gICAgXCJPQ2FtbFwiIH5wcmVmaXg6XCJvY1wiXSBhcmUgW3RydWVdLiAqKVxubW9kdWxlIENhc2VsZXNzIDogc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuICBlbmRcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHNleHBdXG5cblxuICBpbmNsdWRlIENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cblxuKCoqIFtzbGljZSB0IHN0YXJ0IHN0b3BdIHJldHVybnMgYSBuZXcgc3RyaW5nIGluY2x1ZGluZyBlbGVtZW50cyBbdC4oc3RhcnQpXSB0aHJvdWdoXG4gICAgW3QuKHN0b3AtMSldLCBub3JtYWxpemVkIFB5dGhvbi1zdHlsZSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBbc3RvcCA9IDBdIGlzIHRyZWF0ZWQgYXNcbiAgICBbc3RvcCA9IGxlbmd0aCB0XS4gKilcbnZhbCBzbGljZSA6IHQgLT4gaW50IC0+IGludCAtPiB0XG5cbigqKiBbbmdldCBzIGldIGdldHMgdGhlIGNoYXIgYXQgbm9ybWFsaXplZCBwb3NpdGlvbiBbaV0gaW4gW3NdLiAqKVxudmFsIG5nZXQgOiB0IC0+IGludCAtPiBjaGFyXG5cbigqKiBbdGFrZV93aGlsZSBzIH5mXSByZXR1cm5zIHRoZSBsb25nZXN0IHByZWZpeCBvZiBbc10gc2F0aXNmeWluZyBbZm9yX2FsbCBwcmVmaXggfmZdXG4gICAgKFNlZSBbbHN0cmlwXSB0byBkcm9wIHN1Y2ggYSBwcmVmaXgpICopXG52YWwgdGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooKGNoYXIgLT4gYm9vbClbQGxvY2FsXSkgLT4gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHkgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW3F1aWNrY2hlY2tfZ2VuZXJhdG9yXSwgYnV0IGdlbmVyYXRlIHN0cmluZ3Mgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mXG4gICAgY2hhcmFjdGVycy4gKilcbnZhbCBnZW4nIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCB3aXRob3V0IGVtcHR5IHN0cmluZ3MuICopXG52YWwgZ2VuX25vbmVtcHR5JyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBsZW5ndGguICopXG52YWwgZ2VuX3dpdGhfbGVuZ3RoIDogaW50IC0+IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIE5vdGUgdGhhdCBbc3RyaW5nXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbU3RyaW5nLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gaW50cm9kdWNlXG4gICAgW1N0cmluZy5TdGFibGUuU2V0XSwgW1N0cmluZy5TdGFibGUuTWFwXSwgW1N0cmluZy5TdGFibGUuVGFibGVdLCBhbmQgcHJvdmlkZSBpbnRlcmZhY2VcbiAgICB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfY29tcGFyYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Cb29sKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkJvb2xcblxuaW5jbHVkZSAoXG4gIEJhc2UuQm9vbCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJvb2xcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5Cb29sKVxuXG5sZXQgb2Zfc3RyaW5nX2h1bSA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCB0YWJsZSA9IFN0cmluZy5DYXNlbGVzcy5UYWJsZS5jcmVhdGUgKCkgaW5cbiAgICAgICBbIGZhbHNlLCBbIFwiZmFsc2VcIjsgXCJub1wiOyBcIjBcIiBdOyB0cnVlLCBbIFwidHJ1ZVwiOyBcInllc1wiOyBcIjFcIiBdIF1cbiAgICAgICB8PiBMaXN0Lml0ZXIgfmY6KGZ1biAoYm9vbCwgc3RyaW5ncykgLT5cbiAgICAgICAgIExpc3QuaXRlciBzdHJpbmdzIH5mOihmdW4gc3RyaW5nIC0+XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6c3RyaW5nIH5kYXRhOmJvb2w7XG4gICAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5wcmVmaXggc3RyaW5nIDEpIH5kYXRhOmJvb2wpKTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgbGV0IHJhaXNlX2ludmFsaWQgaW5wdXQgPVxuICAgIGxldCBleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlID0gU3RyaW5nLlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgKGZvcmNlIHRhYmxlKSkgaW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCb29sLm9mX3N0cmluZ19odW06IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgIChpbnB1dCA6IHN0cmluZylcbiAgICAgICAgICAoZXhwZWN0ZWRfY2FzZV9pbnNlbnNpdGl2ZSA6IFN0cmluZy5TZXQudCldXG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBIYXNodGJsLmZpbmRfYW5kX2NhbGwgKGZvcmNlIHRhYmxlKSBzdHJpbmcgfmlmX2ZvdW5kOkZuLmlkIH5pZl9ub3RfZm91bmQ6cmFpc2VfaW52YWxpZFxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5ib29sXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5ib29sXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5ib29sXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQmFzZS5CeXRlcylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gYnl0ZXNcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IGdlbicgY2hhcl9nZW4gPSBTdHJpbmcuZ2VuJyBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG5cbmxldCBnZW5fd2l0aF9sZW5ndGggbGVuIGNoYXJfZ2VuID1cbiAgU3RyaW5nLmdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3N0cmluZ1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkNoYXIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG4oKiBpbmNsdWRlIFtCYXNlLkNoYXJdIGFmdGVyIHRoZSBhcHBsaWNhdGlvbiBvZiBbSWRlbnRpZmlhYmxlLkV4dGVuZF0gdG8gcmVwbGFjZSB0aGVcbiAgIFtDb21wYXJhYmxlXSBmdW5jdGlvbnMgd2l0aCB0aGUgcGVydmFzaXZlIHZlcnNpb25zICopXG5pbmNsdWRlIChcbiAgQmFzZS5DaGFyIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQ2hhclxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkNoYXJcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jaGFyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5jaGFyXG5sZXQgZ2VuX2RpZ2l0ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2RpZ2l0XG5sZXQgZ2VuX2xvd2VyY2FzZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9sb3dlcmNhc2VcbmxldCBnZW5fdXBwZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3VwcGVyY2FzZVxubGV0IGdlbl9hbHBoYSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYVxubGV0IGdlbl9hbHBoYW51bSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9hbHBoYW51bVxubGV0IGdlbl9wcmludCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl9wcmludFxubGV0IGdlbl93aGl0ZXNwYWNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3doaXRlc3BhY2VcbmxldCBnZW5fdW5pZm9ybV9pbmNsdXNpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ24gPSBCYXNlLlNpZ25cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduKSAoU3RhYmxlLlYxKVxuIiwiZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XSAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkZsb2F0XG5cbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3MsIHR5cGVyZXBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IFN0YWJsZS5WMVxuaW5jbHVkZSBUXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYXBfYW5kX3NldF9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdCA9IFRcblxubGV0IHZhbGlkYXRlX29yZGluYXJ5IHQgPVxuICBWYWxpZGF0ZS5vZl9lcnJvcl9vcHRcbiAgICAobGV0IG1vZHVsZSBDID0gQ2xhc3MgaW5cbiAgICAgbWF0Y2ggY2xhc3NpZnkgdCB3aXRoXG4gICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBOb25lXG4gICAgIHwgQy5JbmZpbml0ZSAtPiBTb21lIFwidmFsdWUgaXMgaW5maW5pdGVcIlxuICAgICB8IEMuTmFuIC0+IFNvbWUgXCJ2YWx1ZSBpcyBOYU5cIilcbjs7XG5cbm1vZHVsZSBWID0gc3RydWN0XG4gIG1vZHVsZSBaWiA9IENvbXBhcmFibGUuVmFsaWRhdGUgKFQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfYm91bmQgdCB+bWluIH5tYXgpXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX2xib3VuZCB+bWluIHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9sYm91bmQgdCB+bWluKVxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID1cbiAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlICh2YWxpZGF0ZV9vcmRpbmFyeSB0KSAoWloudmFsaWRhdGVfdWJvdW5kIHQgfm1heClcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFZcblxubW9kdWxlIFJvYnVzdF9jb21wYXJlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAoKiBpbnRlbmRlZCB0byBiZSBhIHRvbGVyYW5jZSBvbiBodW1hbi1lbnRlcmVkIGZsb2F0cyAqKVxuXG4gICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG5cbiAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSBmbG9hdFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IGZsb2F0XG4gICAgZW5kKSA6IFMgPSBzdHJ1Y3RcbiAgICAoKiBXZSBoYXZlIHRlc3QgaW4gdGhlIHRyZWUgdGhhdCByZWx5IG9uIHRoZXNlIGZ1bmN0aW9ucyBub3QgYWxsb2NhdGluZywgZXZlbiB3aXRob3V0XG4gICAgICAgWF9MSUJSQVJZX0lOTElORy4gVGhlIG9ubHkgd2F5IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGRvbid0IGNyZWF0ZSB0ZW1wb3JhcnkgYm94ZWRcbiAgICAgICBmbG9hdHMgd2l0aG91dCBYX0xJQlJBUllfSU5MSU5HIGlzIGZvciB0aGlzIGNvZGUgdG8gc2VlIHRoZSBmbG9hdCBvcGVyYXRpb25zIGFzXG4gICAgICAgZXh0ZXJuYWxzLCBhcyBkZWZpbmVkIGluIFtQZXJ2YXNpdmVzXS4gVGhhdCdzIHdoeSB3ZSB1c2UgW1BvbHldIGFuZCBmbG9hdFxuICAgICAgIGFyaXRobWV0aWMgZnJvbSBbQ2FtbF0uICopXG4gICAgb3BlbiBQb2x5XG5cbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gVC5yb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA+PS4gKSB4IHkgPSB4ID49IFN0ZGxpYi4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBTdGRsaWIuKCArLiApIHkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgbGV0ICggPC4gKSB4IHkgPSB5ID4uIHhcbiAgICBsZXQgKCA8Pi4gKSB4IHkgPSBub3QgKHggPS4geSlcblxuICAgIGxldCByb2J1c3RseV9jb21wYXJlIHggeSA9XG4gICAgICBsZXQgZCA9IFN0ZGxpYi4oIC0uICkgeCB5IGluXG4gICAgICBpZiBkIDwgU3RkbGliLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RhYmxlX2NvbXBhcmFibGUuV2l0aF9zdGFibGVfd2l0bmVzcy5WMSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhleGFibGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgbW9kdWxlIEhleCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBCYXNlLlN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nX2h1bSA6ID9kZWxpbWl0ZXI6Y2hhciAtPiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICAoKl8gRW5zdXJlIHRoYXQgdGhpcyBtb2R1bGUgaXMgYW4gZXh0ZW5zaW9uIG9mIFtCYXNlLkludC5IZXhhYmxlXS4gKilcbiAgaW5jbHVkZSBCYXNlLkludC5IZXhhYmxlIHdpdGggdHlwZSB0IDo9IHQgYW5kIG1vZHVsZSBIZXggOj0gSGV4XG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbiAgaW5jbHVkZSBIZXhhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFF1aWNrY2hlY2thYmxlLlNfaW50IHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3VuYm91bmRlZCA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNfdW5ib3VuZGVkXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU1xuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgRXh0ZW5zaW9uX3dpdGhfc3RhYmxlID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5zaW9uXG5cbiAgbW9kdWxlIFN0YWJsZSA6XG4gICAgU3RhYmxlIHdpdGggdHlwZSBWMS50ID0gdCBhbmQgdHlwZSBWMS5jb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDMyKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQzMlxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQzMilcblxudHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50MzJcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDY0XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDY0KVxuXG50eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDY0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQ2NFxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50NjR9W0Jhc2UuSW50NjRdfS4gKilcblxuKCoqIHsyIEludGVyZmFjZSBmcm9tIEJhc2V9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuSW50NjRcbmVuZFxuXG4oKiogezIgRXh0ZW5zaW9uc30gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGVcbiAgSW50X2ludGYuRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBCaW4gOiBCaW5hYmxlMC5TIHdpdGggdHlwZSB0IDo9IEJhc2UuSW50NjMudCA9IHN0cnVjdFxuICBtb2R1bGUgQmluX2VtdWxhdGVkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDY0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy53cmFwX2V4blxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5JbnQ2My5Qcml2YXRlLkVtdWwuVy51bndyYXBcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICB0eXBlICdhIGJpbmFibGUgPSAobW9kdWxlIEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICBsZXQgYmluYWJsZV9vZl9yZXByIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGIgYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gKG1vZHVsZSBJbnQpXG4gICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiAobW9kdWxlIEJpbl9lbXVsYXRlZClcbiAgOztcblxuICBsZXQgYmluYWJsZSA6IEJhc2UuSW50NjMudCBiaW5hYmxlID0gYmluYWJsZV9vZl9yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG5cbiAgaW5jbHVkZSAodmFsIGJpbmFibGUpXG5cbiAgbGV0IGJpbl9zaGFwZV90ID0gQmluX3Byb3QuU2hhcGUuYmluX3NoYXBlX2ludDYzXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQ2My50IFtAQGRlcml2aW5nIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgaW5jbHVkZSBCaW5cblxuICAgICAgaW5jbHVkZSAoXG4gICAgICAgIEJhc2UuSW50NjMgOlxuICAgICAgICAgIEJhc2UuQ29tcGFyYWJsZS5TXG4gICAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IEJhc2UuSW50NjMuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgICAoKiBUaGlzIHNlcmlhbGl6YXRpb24gaXMgc3RhYmxlLCBzaW5jZSBpdCBlaXRoZXIgZGVsZWdhdGVzIHRvIFtpbnRdIG9yXG4gICAgICAgICBbSW50NjNfZW11bF0uICopXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuKCogVGhpcyBbaW5jbHVkZSBzdHJ1Y3RdIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgbGV0cyB1cyBzaGFkb3cgW3RdIHdoZW4gd2UgaW5jbHVkZVxuICAgW0Jhc2UuSW50NjNdIGxhdGVyIG9uLiAqKVxuaW5jbHVkZSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2My50XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfaW50NjNcbmxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfaW50NjNcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50NjMpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBCaW5cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJhYmxlLkNvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBCYXNlLkludDYzXG5pbmNsdWRlIEJhc2UuSW50NjNcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjMpXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M19sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5cbiAgKCoqIFt0b19pbnQ2M10gYW5kIFtvZl9pbnQ2M19leG5dIGVuY29kZSBbdF0gZm9yIHVzZSBpbiB3aXJlIHByb3RvY29sczsgdGhleSBhcmVcbiAgICAgIGludGVuZGVkIHRvIGF2b2lkIGFsbG9jYXRpb24gb24gNjQtYml0IG1hY2hpbmVzIGFuZCBzaG91bGQgYmUgaW1wbGVtZW50ZWRcbiAgICAgIGVmZmljaWVudGx5LiAgW29mX2ludDYzX2V4biAodG9faW50NjMgdCkgPSB0XSBmb3IgYWxsIFt0XTsgW29mX2ludDYzX2V4bl0gcmFpc2VzIGZvclxuICAgICAgaW5wdXRzIG5vdCBwcm9kdWNlZCBieSBbdG9faW50NjNdLiAqKVxuICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcblxuICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5cbiAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogSW50NjMudCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbiAgb3BlbiBCYXNlLkV4cG9ydFxuICBvcGVuIEJpbl9wcm90LlN0ZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFYxLmNvbXBhcmF0b3JcbiAgICBsZXQgYmluX25hbWUgPSBcInVuaXRfdjJcIlxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvc19yZWYgKF8gOiBpbnQpID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgYmluX25hbWUgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkX3QgKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zX3JlZjooXyA6IGludCByZWYpID0gKClcblxuICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgOztcblxuICAgIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgYmluX25hbWUpKSBbXVxuICAgIGxldCBiaW5fc2l6ZV90ICgpID0gMFxuICAgIGxldCBiaW5fd3JpdGVfdCAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3MgKCkgPSBwb3NcbiAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgIGxldCBiaW5fdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IGZmYmQxYTMwN2E0ZjdlYmU4MDIzMDQwZmVjZWJmNjk3IHx9XVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5Vbml0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLlVuaXRcblxudHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnVuaXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVuaXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnVuaXRcblxubW9kdWxlIHR5cGUgUyA9IHNpZyBlbmRcblxudHlwZSBtID0gKG1vZHVsZSBTKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBvcGVuIFNleHBsaWIuU3RkXG5cbiAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwID0gQmFzZS5MYXp5Lm1hcFxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIFN0YWJsZS5WMS50XG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIChCYXNlLkxhenkgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuTmF0aXZlaW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuTmF0aXZlaW50XG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLk5hdGl2ZWludClcblxudHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIubmF0aXZlaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5uYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuTm90aGluZy50ID0gfFxuXG4gICAgbW9kdWxlIFNoYXBlID0gc3RydWN0XG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX3NoYXBlXVxuICAgIGVuZFxuXG4gICAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBCYXNlLk5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fc2hhcGVfdCA9IFNoYXBlLmJpbl9zaGFwZV90XG4gICAgbGV0IHRwX2xvYyA9IFslaGVyZV0ucG9zX2ZuYW1lIF4gXCIuU3RhYmxlLlYxLnRcIlxuICAgIGxldCBhbGwgPSBbXVxuICAgIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgY29tcGFyZSBhIF8gPSB1bnJlYWNoYWJsZV9jb2RlIGFcbiAgICBsZXQgYmluX3NpemVfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgYmluX3dyaXRlX3QgX2J1ZiB+cG9zOl8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgXyA9XG4gICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIHRwX2xvYyAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCBfYnVmIH5wb3NfcmVmID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV9yZWFkX2Vycm9yIChFbXB0eV90eXBlIHRwX2xvYykgIXBvc19yZWZcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliLkNvbnZfZXJyb3IuZW1wdHlfdHlwZSB0cF9sb2Mgc2V4cFxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5Ob3RoaW5nXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKEJhc2UuTm90aGluZykgKFN0YWJsZS5WMSlcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5ldmVyX3JldHVybnMgPSBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBCYXNlLk9yZGVyaW5nLnQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubW9kdWxlIHR5cGUgQmFzZV9tYXNrID0gbW9kdWxlIHR5cGUgb2YgQmFzZS5PcmRlcmluZyB3aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgKEJhc2UuT3JkZXJpbmcgOiBCYXNlX21hc2spXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuUmVmXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgVC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICBsZXQgcmVhZF9vbmx5ID0gRm4uaWRcbiAgbGV0IG9mX3JlZiA9IEZuLmlkXG4gIGxldCB0b19yZWYgPSBGbi5pZFxuICBsZXQgc2V0ID0gKCA6PSApXG4gIGxldCBnZXQgPSAoICEgKVxuZW5kXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG4oKiogW3BoeXNfc2FtZV0gaXMgbGlrZSBbcGh5c19lcXVhbF0sIGJ1dCB3aXRoIGEgbW9yZSBnZW5lcmFsIHR5cGUuICBbcGh5c19zYW1lXSBpcyB1c2VmdWxcbiAgICB3aGVuIGRlYWxpbmcgd2l0aCBleGlzdGVudGlhbCB0eXBlcywgd2hlbiBvbmUgaGFzIGEgcGFja2VkIHZhbHVlIGFuZCBhbiB1bnBhY2tlZCB2YWx1ZVxuICAgIHRoYXQgb25lIHdhbnRzIHRvIGNoZWNrIGFyZSBwaHlzaWNhbGx5IGVxdWFsLiAgT25lIGNhbid0IHVzZSBbcGh5c19lcXVhbF0gaW4gc3VjaCBhXG4gICAgc2l0dWF0aW9uIGJlY2F1c2UgdGhlIHR5cGVzIGFyZSBkaWZmZXJlbnQuICopXG5leHRlcm5hbCBwaHlzX3NhbWUgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYltAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxubGV0ICggJSApID0gSW50LiggJSApXG5sZXQgKCAvJSApID0gSW50LiggLyUgKVxubGV0ICggLy8gKSA9IEludC4oIC8vIClcbmxldCAoID09PiApIGEgYiA9IChub3QgYSkgfHwgYlxubGV0IGJwcmludGYgPSBQcmludGYuYnByaW50ZlxubGV0IGNvbnN0ID0gRm4uY29uc3RcbmxldCBlcHJpbnRmID0gUHJpbnRmLmVwcmludGZcbmxldCBlcnJvciA9IE9yX2Vycm9yLmVycm9yXG5sZXQgZXJyb3JfcyA9IE9yX2Vycm9yLmVycm9yX3NcbmxldCBmYWlsd2l0aGYgPSBCYXNlLlByaW50Zi5mYWlsd2l0aGZcbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBmb3JjZSA9IEJhc2UuTGF6eS5mb3JjZVxubGV0IGZwcmludGYgPSBQcmludGYuZnByaW50ZlxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXIgPSBDaGFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQgPSBJbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyID0gSW50MzIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxhenlfdCA9ICdhIExhenkudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHVuaXQgPSBVbml0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgKCogQmluX3Byb3QgaGFzIG9wdGltaXplZCBmdW5jdGlvbnMgZm9yIGZsb2F0IGFycmF5cyAqKVxuICBpbmNsdWRlIHN0cnVjdFxuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IEZsb2F0LnQgYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIGZsb2F0X2FycmF5IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSBmbG9hdF9hcnJheSA6PSBmbG9hdF9hcnJheSlcbmVuZCA6XG5zaWdcbiAgdHlwZSAnYSBhcnJheVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2xcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBjaGFyXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgZmxvYXRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBpbnQzMlxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvblxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZ1xuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgcmVmXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIGFycmF5IDo9ICdhIGFycmF5XG53aXRoIHR5cGUgYm9vbCA6PSBib29sXG53aXRoIHR5cGUgY2hhciA6PSBjaGFyXG53aXRoIHR5cGUgZmxvYXQgOj0gZmxvYXRcbndpdGggdHlwZSBpbnQgOj0gaW50XG53aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbndpdGggdHlwZSBpbnQ2NCA6PSBpbnQ2NFxud2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxud2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbndpdGggdHlwZSAnYSBvcHRpb24gOj0gJ2Egb3B0aW9uXG53aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xud2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG53aXRoIHR5cGUgJ2EgbGF6eV90IDo9ICdhIGxhenlfdFxud2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbndpdGggdHlwZSB1bml0IDo9IHVuaXQpXG5cbmxldCBzZXhwX29mX2V4biA9IEV4bi5zZXhwX29mX3RcblxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5tb2R1bGUgUmVwciA9IEludDYzXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mXSBbQEBpbW1lZGlhdGU2NF1cblxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgdmFsIG9mX3JlcHIgOiBSZXByLnQgLT4gdFxuICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmVwci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IG9mX3JlcHIgPSBGbi5pZFxuICBsZXQgdG9fcmVwciA9IEZuLmlkXG5cbiAgbGV0IHRvX3N0cmluZyBuID1cbiAgICBsZXQgb3BlbiBSZXByIGluXG4gICAgbGV0IGtpYiA9IG9mX2ludCAxMDI0IGluXG4gICAgbGV0IG1pYiA9IGtpYiAqIGtpYiBpblxuICAgIGxldCBnaWIgPSBraWIgKiBtaWIgaW5cbiAgICBsZXQgbl9hYnMgPSBhYnMgbiBpblxuICAgIGlmIG5fYWJzIDwga2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWRCXCIgKHRvX2ludF9leG4gbilcbiAgICBlbHNlIGlmIG5fYWJzIDwgbWliXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdLXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQga2liKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBnaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ01cIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBtaWIpXG4gICAgZWxzZSBzcHJpbnRmIFwiJWdHXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgZ2liKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nIG4pXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBieXRlc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKHRvX3JlcHIgdClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gQmlnYXJyYXlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2VfYmlnc3RyaW5nXG5cbiAgICBtb2R1bGUgWiA6IHNpZ1xuICAgICAgdHlwZSB0ID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBiaWdzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAoKiBiaWdzdHJpbmcncyBzZXJpYWxpemF0aW9uIGlzIGludGVuZGVkIHRvIGJlIHN0YWJsZS4gIFdlIGFzc2VydCBpdCBoZXJlIHJhdGhlclxuICAgICAgICAgdGhhbiBhc3NlcnRpbmcgaXQgaW4gdHdvIHNlcGFyYXRlIHBsYWNlcyBmb3IgdGhlIGJpbl9pbyBhbmQgc2V4cCBkZWZpbml0aW9ucy4gKilcbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgWlxuXG4gICAgdHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90X2tub3duX3NpemUgdCA/KHBvcyA9IDApIHdyaXRlIH5zaXplOmRhdGFfbGVuIHYgPVxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbmxldCB3cml0ZV9iaW5fcHJvdCB0ID9wb3MgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHYgPVxuICBsZXQgc2l6ZSA9IHdyaXRlci5zaXplIHYgaW5cbiAgd3JpdGVfYmluX3Byb3Rfa25vd25fc2l6ZSB0ID9wb3Mgd3JpdGVyLndyaXRlIH5zaXplIHZcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9lbmQgPVxuICAgICAgIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1Zjp0IH5taW5fcG9zOnBvcyB+cG9zOihwb3MgKyBsZW4pIH5jaGFyOnBhZGRpbmdcbiAgICAgaW5cbiAgICAgbGV0IGxlbiA9IGRhdGFfZW5kIC0gcG9zIGluXG4gICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgbGVuIGluXG4gICAgIFRvX2J5dGVzLmJsaXQgfnNyYzp0IH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXRbQGNvbGRdIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsIH52YWx1ZSB+bGVuID1cbiAgUHJpbnRmLmZhaWx3aXRoZlxuICAgIFwiQmlnc3RyaW5nLnNldF8lc19wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgaGVhZF9vcl90YWlsXG4gICAgKFslZ2xvYmFsaXplOiBzdHJpbmddIHZhbHVlKVxuICAgIGxlblxuICAgICgpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAodmFsdWUgW0Bsb2NhbF0pID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW4gdGhlbiBzZXRfcGFkZGVkX2ZpeGVkX3N0cmluZ19mYWlsZWQgfmhlYWRfb3JfdGFpbDpcInRhaWxcIiB+dmFsdWUgfmxlbjtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICh2YWx1ZSBbQGxvY2FsXSkgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlbiB0aGVuIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsOlwiaGVhZFwiIH52YWx1ZSB+bGVuO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZ19sb2NhbCB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIFxuICAgIChsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gICAgIGxldCBsZW4gPSBsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykgaW5cbiAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBsZW4gaW5cbiAgICAgVG9fYnl0ZXMuYmxpdCB+c3JjOnQgfnNyY19wb3M6ZGF0YV9iZWdpbiB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IFQub2ZfYmluYXJ5X2V4blxuXG4gICAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICAgIG1vZHVsZSBCaW5hYmxlID0gU3RyaW5nLlN0YWJsZS5WMVxuXG4gICAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0cmluZy5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgICAgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX3RcbiAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDUuU3RhYmxlLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQmluX3Byb3QuTWQ1LnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICBlbmQpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgIEJpbl9wcm90Lk1kNS5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgb2ZfYmluYWJsZVxuICAgICAgICB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGRpZ2VzdF9zdHJpbmcgcyA9IE1kNV9saWIuc3RyaW5nIHNcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgZGlnZXN0X251bV9ieXRlcyA9IDE2XG5sZXQgdG9faGV4ID0gVC50b19oZXhcbmxldCBmcm9tX2hleCA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2hleF9leG4gPSBULm9mX2hleF9leG5cbmxldCBvZl9iaW5hcnlfZXhuID0gVC5vZl9iaW5hcnlfZXhuXG5sZXQgdG9fYmluYXJ5ID0gVC50b19iaW5hcnlcbmxldCBkaWdlc3Rfc3RyaW5nID0gU3RhYmxlLmRpZ2VzdF9zdHJpbmdcbmxldCBkaWdlc3RfYnl0ZXMgPSBNZDVfbGliLmJ5dGVzXG5cbmV4dGVybmFsIGNhbWxfc3lzX29wZW5cbiAgOiAgc3RyaW5nXG4gIC0+IFN0ZGxpYi5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmNoYW5uZWwgY2hhbm5lbCBsZW4pXG47O1xuXG5sZXQgY2hhbm5lbCBjaGFubmVsIGxlbiA9XG4gIGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW5cbjs7XG5cbmxldCBvdXRwdXRfYmxvY2tpbmcgdCBvYyA9IFN0ZGxpYi5EaWdlc3Qub3V0cHV0IG9jICh0b19iaW5hcnkgdClcbmxldCBvdXRwdXQgb2MgdCA9IG91dHB1dF9ibG9ja2luZyB0IG9jXG5sZXQgaW5wdXRfYmxvY2tpbmcgaWMgPSBvZl9iaW5hcnlfZXhuIChTdGRsaWIuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG4iLCIoKiBGdW5jdGlvbnMgZm9yIHBhcnNpbmcgdGltZSB6b25lIGRhdGFiYXNlIGZpbGVzICh6aWMgZmlsZXMpLlxuXG4gICBBIHRpbWUgem9uZSBmaWxlIGNvbnNpc3RzIChjb25jZXB0dWFsbHkgLSB0aGUgcmVwcmVzZW50YXRpb24gaXMgbW9yZVxuICAgY29tcGFjdCkgb2YgYW4gb3JkZXJlZCBsaXN0IG9mIChUaW1lLnQgKiBbbG9jYWxfdGltZV90eXBlXSkgdGhhdCBtYXJrXG4gICB0aGUgYm91bmRhcmllcyAobWFya2VkIGZyb20gdGhlIGVwb2NoKSBhdCB3aGljaCB2YXJpb3VzIHRpbWUgYWRqdXN0bWVudFxuICAgcmVnaW1lcyBhcmUgaW4gZWZmZWN0LiAgVGhpcyBjYW4gYWxzbyBiZSB0aG91Z2h0IG9mIGFzIGJyZWFraW5nIGRvd24gYWxsXG4gICB0aW1lIHBhc3QgdGhlIGVwb2NoIGludG8gcmFuZ2VzIHdpdGggYSBbbG9jYWxfdGltZV90eXBlXSB0aGF0IGRlc2NyaWJlcyB0aGVcbiAgIG9mZnNldCBmcm9tIEdNVCB0byBhcHBseSB0byBlYWNoIHJhbmdlIHRvIGdldCBsb2NhbCB0aW1lLlxuKilcblxub3BlbiBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFpvbmVfaW50ZlxuXG5leGNlcHRpb24gSW52YWxpZF9maWxlX2Zvcm1hdCBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRnVsbF9kYXRhID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgSW5kZXggPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5leHQgPSBJbnQuc3VjY1xuICAgICAgICBsZXQgcHJldiA9IEludC5wcmVkXG4gICAgICAgIGxldCBiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiA9IC0xXG5cbiAgICAgICAgKCogU29tZSBleGlzdGluZyBjbGllbnRzIGV4cGVjdCBbaW5kZXggPj0gMF0sIHNvIHdlIG5ldmVyIHNlcmlhbGl6ZSBhIG5lZ2F0aXZlXG4gICAgICAgICAgIGluZGV4LiBUaGlzIGNvbnZlcnNpb24gY2FuIGJlIHJlbW92ZWQgaWYgbmV3IHN0YWJsZSB2ZXJzaW9ucyBhcmUgbWludGVkLiAqKVxuICAgICAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IG1heCAwIHRcblxuICAgICAgICAoKiBXaGVuIHRoZSBpbmRleCBvZiBhIHRpbWUgem9uZSB3aXRoIG5vIHRyYW5zaXRpb25zIGlzIGNvbnZlcnRlZCB2aWEgdG9fZXh0ZXJuYWwsXG4gICAgICAgICAgIGl0cyB2YWx1ZSBiZWNvbWVzIDAgZXZlbiB0aG91Z2ggaXRzIHRyYW5zaXRpb24gYXJyYXkgaXMgZW1wdHkgKGFuZCBpdCBzaG91bGRcbiAgICAgICAgICAgaGF2ZSBiZWVuIC0xKS4gV2hlbiB0aGUgY29udmVydGVkIHZhbHVlIGlzIGNoYW5nZWQgYmFjayB0byBhIFpvbmUudCB0aHJvdWdoXG4gICAgICAgICAgIG9mX2V4dGVybmFsLCByZXR1cm5pbmcgdGhpcyB2YWx1ZSBmb3IgaXRzIGluZGV4IGNvdWxkIHJlc3VsdCBpbiB1bnNhZmUgYXJyYXlcbiAgICAgICAgICAgYWNjZXNzZXMgdG8gdGhlIHRyYW5zaXRpb24gYXJyYXkgb2YgdGhlIHpvbmUgKHNpbmNlIHRoZXJlIGlzIG5vIHRyYW5zaXRpb24gYXRcbiAgICAgICAgICAgaW5kZXggMCkuIEFsc28sIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8ga2VlcCB0aGUgY29udmVydGVkIGluZGV4IGJlY2F1c2UgaXRcbiAgICAgICAgICAgaXMgaW50ZW5kZWQgdG8gYmUgYSBtdXRhYmxlIHZhbHVlIHVzZWQgZm9yIGNhY2hpbmcuIFNvIG9mX2V4dGVybmFsIGFsd2F5cyBzZXRzXG4gICAgICAgICAgIHRoZSBpbmRleCB0byAtMSwgd2hpY2ggaXMgYSBzYWZlIHZhbHVlLiAqKVxuICAgICAgICBsZXQgb2ZfZXh0ZXJuYWwgKF8gOiB0KSA9IC0xXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50LlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIHRvX2V4dGVybmFsXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19leHRlcm5hbFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpbWUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBpc19kc3QgOiBib29sXG4gICAgICAgICAgOyBhYmJydiA6IHN0cmluZ1xuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICAoKiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB3aGVuIGxlYXAgc2Vjb25kcyBzaG91bGQgYmUgYXBwbGllZCAtIHVudXNlZFxuICAgICAgICAgYmVjYXVzZSB3ZSBhcmUgdHJhbnNsYXRpbmcgYmFzZWQgb24gYSBlcG9jaCBzeXN0ZW0gY2xvY2sgKHNlZSB0aGUgQ29yZV96b25lXG4gICAgICAgICBkb2N1bWVudGF0aW9uKS4gKilcbiAgICAgIG1vZHVsZSBMZWFwX3NlY29uZCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IHNlY29uZHMgOiBpbnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDtcbiAgICAgICAgICBkaWdlc3QgOiBNZDUuQXNfYmluYXJ5X3N0cmluZy5TdGFibGUuVjEudCBvcHRpb25cbiAgICAgICAgOyB0cmFuc2l0aW9ucyA6IFRyYW5zaXRpb24udCBhcnJheVxuICAgICAgICA7ICgqIGNhY2hlcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdHJhbnNpdGlvbiB3ZSB1c2VkIHRvIG1ha2UgbG9va3VwcyBmYXN0ZXIgKilcbiAgICAgICAgICBtdXRhYmxlIGxhc3RfcmVnaW1lX2luZGV4IDogSW5kZXgudFxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlIDogUmVnaW1lLnRcbiAgICAgICAgOyBsZWFwX3NlY29uZHMgOiBMZWFwX3NlY29uZC50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kcyB0aGVuIGBMZWZ0IGVsc2UgYFJpZ2h0KVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbjs7XG5cbmxldCBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA9XG4gIGxldCBpbmRleCA9XG4gICAgbGV0IGluZGV4ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCBpblxuICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4OyB0cnkgcHJldmlvdXMgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4IC0gMSBpblxuICAgICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYmVmb3JlIHByZXZpb3VzIGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleCBhbmQgbm90IGJlZm9yZSBwcmV2aW91cywgc28gd2l0aGluIHByZXZpb3VzICopXG4gICAgICBlbHNlIGluZGV4KVxuICAgIGVsc2UgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleDsgdHJ5IG5leHQgaW5kZXggKilcbiAgICB0aGVuIChcbiAgICAgIGxldCBpbmRleCA9IGluZGV4ICsgMSBpblxuICAgICAgaWYgbm90IChpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgbmV4dCBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGFmdGVyIGNhY2hlZCBpbmRleCBhbmQgbm90IGFmdGVyIG5leHQsIHNvIHdpdGhpbiBuZXh0ICopXG4gICAgICBlbHNlIGluZGV4ICgqIHRpbWUgaXMgd2l0aGluIGNhY2hlZCBpbmRleCAqKSlcbiAgICBlbHNlIGluZGV4XG4gIGluXG4gIHQubGFzdF9yZWdpbWVfaW5kZXggPC0gaW5kZXg7XG4gIGluZGV4XG47O1xuXG5tb2R1bGUgVGltZV9pbl9zZWNvbmRzIDogc2lnXG4gIGluY2x1ZGUgWm9uZV9pbnRmLlRpbWVfaW5fc2Vjb25kc1xuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgPSBGbi5pZFxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIEFic29sdXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBpbmNsdWRlIEFic29sdXRlXG5lbmRcblxubGV0IGluZGV4IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6QWJzb2x1dGVcbjs7XG5cbmxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpEYXRlX2FuZF9vZmRheVxuOztcblxubGV0IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleCA+PSAwICYmIGluZGV4IDwgQXJyYXkubGVuZ3RoIHQudHJhbnNpdGlvbnNcbmxldCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgdHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCAoaW5kZXggKyAxKVxuXG5sZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICBsZXQgYWZ0ZXIgPSB0cmFuc2l0aW9uLm5ld19yZWdpbWUgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaW5kZXggPSAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4IC0gMSkubmV3X3JlZ2ltZVxuICBpblxuICBJbnQ2My4oIC0gKSBhZnRlci51dGNfb2Zmc2V0X2luX3NlY29uZHMgYmVmb3JlLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCAoaW5kZXggKyAxKVxuOztcblxubGV0IGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIHJlZ2ltZS5hYmJydlxuOztcblxubGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gIGxldCByZWdpbWUgPSBnZXRfcmVnaW1lX2V4biB0IGluZGV4IGluXG4gIFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHMgcmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kc1xuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5pbmNsdWRlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbikgKFNvdXJjZV9jb2RlX3Bvc2l0aW9uMClcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuIiwiaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWxcblxubW9kdWxlIElkID0gc3RydWN0XG4gIGluY2x1ZGUgSWRcblxuICBtb2R1bGUgVWlkID0gc3RydWN0XG4gICAgbW9kdWxlIFVwc3RyZWFtID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuICAgIGluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsLklkLlVpZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5FeHRlbmRcbiAgICAgICAgKFVwc3RyZWFtKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5UeXBlX2VxdWFsLklkLlVpZC50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVXBzdHJlYW0pXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYWxsb3dpbmdfc3Vic3RpdHV0aW9uID1cbiAgU19hbGxvd2luZ19zdWJzdGl0dXRpb24gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvID0gU19iaW5faW8gd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwID1cbiAgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5cbmxldCByYXcgdCA9IHRcblxubW9kdWxlIE1ha2UgKFJhdyA6IFJhdykgPSBzdHJ1Y3RcbiAgdHlwZSB3aXRuZXNzXG4gIHR5cGUgdCA9IFJhdy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IgPVxuICAgIEVycm9yLmNyZWF0ZVxuICAgICAgXCJ2YWxpZGF0aW9uIGZhaWxlZFwiXG4gICAgICAodCwgZXJyb3IsIFJhdy5oZXJlKVxuICAgICAgWyVzZXhwX29mOiBSYXcudCAqIEVycm9yLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yLnJhaXNlICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gY3JlYXRlX2V4biAoUmF3LnRfb2Zfc2V4cCBzZXhwKVxuICBsZXQgcmF3IHQgPSB0XG5cbiAgbGV0IGNyZWF0ZV9zdGFibGVfd2l0bmVzcyByYXdfc3RhYmxlX3dpdG5lc3MgPVxuICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSByYXdfc3RhYmxlX3dpdG5lc3MgY3JlYXRlX2V4biByYXdcbiAgOztcblxuICBsZXQgdHlwZV9lcXVhbCA9IFR5cGVfZXF1YWwuVFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBfaW1tdXRcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSkgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMV9pbW11dFwiXG5cbiAgWyUlZWxzZV1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxXCJcblxuICBbJSVlbmRpZl1cblxuICBsZXQgbWFwICh4LCB5KSB+ZiA9IGYgeCwgZiB5XG4gIGxldCBtYXBfZnN0ICh4LCB5KSB+ZiA9IGYgeCwgeVxuICBsZXQgbWFwX3NuZCAoeCwgeSkgfmYgPSB4LCBmIHlcbiAgbGV0IG1hcF9ib3RoICh4LCB5KSB+ZjEgfmYyID0gZjEgeCwgZjIgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcF9hbGwgKHgsIHksIHopIH5mMSB+ZjIgfmYzID0gZjEgeCwgZjIgeSwgZjMgelxuICBsZXQgbWFwMiAoeDEsIHkxLCB6MSkgKHgyLCB5MiwgejIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MiwgZiB6MSB6MlxuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXywgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoLCBxdWlja2NoZWNrLCBzdGFibGVfd2l0bmVzcywgdHlwZXJlcF1cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gMFxuICAgICAgICB8IE1vbiAtPiAxXG4gICAgICAgIHwgVHVlIC0+IDJcbiAgICAgICAgfCBXZWQgLT4gM1xuICAgICAgICB8IFRodSAtPiA0XG4gICAgICAgIHwgRnJpIC0+IDVcbiAgICAgICAgfCBTYXQgLT4gNlxuICAgICAgOztcblxuICAgICAgKCogQmUgdmVyeSBnZW5lcm91cyB3aXRoIG9mX3N0cmluZy4gIFdlIGFjY2VwdCBhbGwgcG9zc2libGUgY2FwaXRhbGl6YXRpb25zIGFuZCB0aGVcbiAgICAgICAgIGludGVnZXIgcmVwcmVzZW50YXRpb25zIGFzIHdlbGwuICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nX2ludGVybmFsIHMgd2l0aFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAodHJ5IG9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgcykgd2l0aFxuICAgICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKCkpXG4gICAgICA7O1xuXG4gICAgICAoKiB0aGlzIGlzIGluIFQgcmF0aGVyIHRoYW4gb3V0c2lkZSBzbyB0aGF0IHRoZSBsYXRlciBmdW5jdG9yIGFwcGxpY2F0aW9uIHRvIGJ1aWxkIG1hcHNcbiAgICAgICAgIHVzZXMgdGhpcyBzZXhwIHJlcHJlc2VudGF0aW9uICopXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBsZXQgb3BlbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIgaW5cbiAgICAgICAgbGV0IGF0b20gbmFtZSA9IE5vX3RhZyB7IG5hbWU7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfSBpblxuICAgICAgICBsZXQgdW5zdWdnZXN0ZWQgZ3JhbW1hciA9XG4gICAgICAgICAgVGFnIHsga2V5ID0gY29tcGxldGlvbl9zdWdnZXN0ZWQ7IHZhbHVlID0gQXRvbSBcImZhbHNlXCI7IGdyYW1tYXIgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgaW50X2NsYXVzZSB0ID0gdW5zdWdnZXN0ZWQgKGF0b20gKEludC50b19zdHJpbmcgKHRvX2ludCB0KSkpIGluXG4gICAgICAgIGxldCBzaG9ydF9jbGF1c2UgdCA9IGF0b20gKHRvX3N0cmluZyB0KSBpblxuICAgICAgICBsZXQgbG9uZ19jbGF1c2UgdCA9IHVuc3VnZ2VzdGVkIChhdG9tICh0b19zdHJpbmdfbG9uZyB0KSkgaW5cbiAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgIExhenlcbiAgICAgICAgICAgICAgKGxhenlcbiAgICAgICAgICAgICAgICAoVmFyaWFudFxuICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2VfaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICAgIFsgTGlzdC5tYXAgYWxsIH5mOmludF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+ZjpzaG9ydF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICA7IExpc3QubWFwIGFsbCB+Zjpsb25nX2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgKENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKSA6IENvbXBhcmFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChVbnN0YWJsZSlcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG5sZXQgb2ZfaW50IGkgPVxuICB0cnkgU29tZSAob2ZfaW50X2V4biBpKSB3aXRoXG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE1vbiAtPiAxXG4gIHwgVHVlIC0+IDJcbiAgfCBXZWQgLT4gM1xuICB8IFRodSAtPiA0XG4gIHwgRnJpIC0+IDVcbiAgfCBTYXQgLT4gNlxuICB8IFN1biAtPiA3XG47O1xuXG5sZXQgbnVtX2RheXNfaW5fd2VlayA9IDdcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuIChJbnQuKCAlICkgKHRvX2ludCB0ICsgaSkgbnVtX2RheXNfaW5fd2VlaylcblxubGV0IG51bV9kYXlzIH5mcm9tIH50b18gPVxuICBsZXQgZCA9IHRvX2ludCB0b18gLSB0b19pbnQgZnJvbSBpblxuICBpZiBJbnQuKGQgPCAwKSB0aGVuIGQgKyBudW1fZGF5c19pbl93ZWVrIGVsc2UgZFxuOztcblxubGV0IGlzX3N1bl9vcl9zYXQgdCA9IHQgPSBTdW4gfHwgdCA9IFNhdFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBSb3VuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgfCBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkRpZ2l0X3N0cmluZ19oZWxwZXJzXCJcbmxldCBpbnQ2M190d28gPSBJbnQ2My5vZl9pbnQgMlxubGV0IGludDYzX3RlbiA9IEludDYzLm9mX2ludCAxMFxubGV0IGludDYzX3R3ZW50eSA9IEludDYzLm9mX2ludCAyMFxubGV0IGludDYzX2JpbGxpb24gPSBJbnQ2My5vZl9pbnQgMV8wMDBfMDAwXzAwMFxubGV0IG1heF9iaWxsaW9ucyA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M19iaWxsaW9uXG5cbmxldCByZWMgZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIG4gPVxuICBpZiBJbnQ2My4oIDwgKSBuIGludDYzX3RlblxuICB0aGVuIDFcbiAgZWxzZSBJbnQuc3VjYyAoZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIChJbnQ2My4oIC8gKSBuIGludDYzX3RlbikpXG47O1xuXG5sZXQgZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSA9IGRpZ2l0c19vZl9wb3NpdGl2ZV9pbnQ2MyBJbnQ2My5tYXhfdmFsdWVcblxubGV0IHJlYyBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzID1cbiAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgfCAxIC0+IEludDYzLm9mX2ludCA5XG4gIHwgMiAtPiBJbnQ2My5vZl9pbnQgOTlcbiAgfCAzIC0+IEludDYzLm9mX2ludCA5OTlcbiAgfCA0IC0+IEludDYzLm9mX2ludCA5Xzk5OVxuICB8IDUgLT4gSW50NjMub2ZfaW50IDk5Xzk5OVxuICB8IDYgLT4gSW50NjMub2ZfaW50IDk5OV85OTlcbiAgfCA3IC0+IEludDYzLm9mX2ludCA5Xzk5OV85OTlcbiAgfCA4IC0+IEludDYzLm9mX2ludCA5OV85OTlfOTk5XG4gIHwgOSAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OV85OTlcbiAgfCBfIC0+XG4gICAgaWYgZGlnaXRzID49IGRpZ2l0c19vZl9pbnQ2M19tYXhfdmFsdWVcbiAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbGxpb25zID0gSW50NjMuc3VjYyAobWF4X2ludDYzX3dpdGggfmRpZ2l0czooZGlnaXRzIC0gOSkpIGluXG4gICAgICBJbnQ2My5wcmVkIChJbnQ2My4oICogKSBpbnQ2M19iaWxsaW9uIGJpbGxpb25zKSlcbjs7XG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHVuc2FmZV9jaGFyX29mX2RpZ2l0IG4gPSBDaGFyLnVuc2FmZV9vZl9pbnQgKENoYXIudG9faW50ICcwJyArIG4pXG4gIGxldCBkaWdpdF9vZl9jaGFyIGNoYXIgPSBDaGFyLmdldF9kaWdpdF9leG4gY2hhclxuXG4gIGxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgQnl0ZXMudW5zYWZlX3NldCBieXRlcyBwb3MgKHVuc2FmZV9jaGFyX29mX2RpZ2l0IGludClcbiAgOztcblxuICBsZXQgcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gaW50IC8gMTAgaW5cbiAgICBsZXQgb25lcyA9IGludCAtICh0ZW5zICogMTApIGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBvbmVzO1xuICAgIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMSkgaW50IGluXG4gICAgd3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDIpIGludCBpblxuICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAzKSBpbnQgaW5cbiAgICB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNCkgaW50IGluXG4gICAgd3JpdGVfNF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDUpIGludCBpblxuICAgIHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA2KSBpbnQgaW5cbiAgICB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNykgaW50IGluXG4gICAgd3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDgpIGludCBpblxuICAgIHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCByZXR1cm5fYmlsbGlvbnNfYW5kX3dyaXRlX3JlbWFpbmRlciBieXRlcyB+cG9zIGludDYzID1cbiAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My4oIC8gKSBpbnQ2MyBpbnQ2M19iaWxsaW9uIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDYzLiggLSApIGludDYzIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSBpblxuICAgIHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gcmVtYWluZGVyKTtcbiAgICBiaWxsaW9uc1xuICA7O1xuXG4gIGxldCByZWMgd3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzID1cbiAgICBtYXRjaCBkaWdpdHMgd2l0aFxuICAgIHwgMSAtPiB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMiAtPiB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgMyAtPiB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNCAtPiB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNSAtPiB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNiAtPiB3cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgNyAtPiB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOCAtPiB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgOSAtPiB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIChJbnQ2My50b19pbnRfZXhuIGludDYzKVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGRpZ2l0c19vZl9iaWxsaW9ucyA9IGRpZ2l0cyAtIDkgaW5cbiAgICAgIGxldCBiaWxsaW9ucyA9XG4gICAgICAgIHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3M6KHBvcyArIGRpZ2l0c19vZl9iaWxsaW9ucykgaW50NjNcbiAgICAgIGluXG4gICAgICB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPSBkaWdpdF9vZl9jaGFyIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgcG9zKVxuXG4gIGxldCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDEpXG4gIDs7XG5cbiAgbGV0IHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMilcbiAgOztcblxuICBsZXQgcmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAzKVxuICA7O1xuXG4gIGxldCByZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDQpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNSlcbiAgOztcblxuICBsZXQgcmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA2KVxuICA7O1xuXG4gIGxldCByZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDcpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgOClcbiAgOztcblxuICBsZXQgcmFpc2VfaW50NjNfb3ZlcmZsb3cgbmFtZSA9XG4gICAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IG92ZXJmbG93IHJlYWRpbmcgaW50NjNcIiBtb2R1bGVfbmFtZSBuYW1lICgpXG4gIDs7XG5cbiAgbGV0IHJlYyByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IEludDYzLm9mX2ludCAocmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDIgLT4gSW50NjMub2ZfaW50IChyZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMyAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA0IC0+IEludDYzLm9mX2ludCAocmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDUgLT4gSW50NjMub2ZfaW50IChyZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA3IC0+IEludDYzLm9mX2ludCAocmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDggLT4gSW50NjMub2ZfaW50IChyZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID0gcmVhZF9pbnQ2MyBzdHJpbmcgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9iaWxsaW9ucyBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9XG4gICAgICAgIEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSlcbiAgICAgIGluXG4gICAgICBpZiBJbnQ2My4oID4gKSBiaWxsaW9ucyBtYXhfYmlsbGlvbnMgdGhlbiByYWlzZV9pbnQ2M19vdmVyZmxvdyBcInJlYWRfaW50NjNcIjtcbiAgICAgIGxldCBzdW0gPSBJbnQ2My4oICsgKSAoSW50NjMuKCAqICkgYmlsbGlvbnMgaW50NjNfYmlsbGlvbikgcmVtYWluZGVyIGluXG4gICAgICBpZiBJbnQ2My4oIDwgKSBzdW0gSW50NjMuemVybyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgc3VtXG4gIDs7XG5cbiAgbGV0IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAobnVtZXJhdG9yICsgZGVub21pbmF0b3IgLSBJbnQ2My5vbmUpIC8lIGRlbm9taW5hdG9yXG4gIDs7XG5cbiAgbGV0IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogaW52YWxpZCBkZWNpbWFsIGNoYXJhY3RlclwiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICAoKiBSZWFkcyB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgYmV0d2VlbiBbcG9zXSBhbmQgW3BvcytkZWNpbWFscy0xXSwgaW5jbHVzaXZlLCBhbmRcbiAgICAgaW50ZXJwZXJldHMgaXQgYXMgYSBwb3NpdGl2ZSBkZWNpbWFsIHBhcnQgb2YgYSBudW1iZXIsIHdoaWNoIHdlIGNhbGwgW3hdLlxuXG4gICAgIExldCBbaV0gYW5kIFtyXSBiZSB0aGUgaW50ZWdlciBwYXJ0IGFuZCByZW1haW5pbmcgZnJhY3Rpb25hbCBwYXJ0IG9mXG4gICAgIFt4ICogc2NhbGUgLyBkaXZpc29yXS5cblxuICAgICBJZiBbciA8IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXS5cbiAgICAgSWYgW3IgPSByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaV0gb3IgW2krMV0gYmFzZWQgb24gW3JvdW5kX2V4YWN0XS5cbiAgICAgSWYgW3IgPiByb3VuZF9hdC9kaXZpc29yXSwgcmV0dXJucyBbaSsxXS5cblxuICAgICBBc3N1bWVzIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCBbc2NhbGVdIGFuZCBbZGl2aXNvcl0gYXJlIGJvdGggcG9zaXRpdmUgYW5kXG4gICAgIGxlc3MgdGhhbiBbSW50NjMubWF4X3ZhbHVlIC8gMTBdICh0byBhdm9pZCBpbnRlcm5hbCBvdmVyZmxvdyBkdXJpbmcgdGhlIGFsZ29yaXRobVxuICAgICB3aGVuIG11bHRpcGx5aW5nIGJ5IDEwKSwgYW5kIHRoYXQgW3JvdW5kX2F0ID49IDBdIGFuZCBbcm91bmRfYXQgPCBkaXZpc29yXS4gKilcbiAgbGV0IHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cG9zOnN0YXJ0XG4gICAgICAgIH5kZWNpbWFsc1xuICAgICAgICB+c2NhbGVcbiAgICAgICAgfmRpdmlzb3JcbiAgICAgICAgfnJvdW5kX2F0XG4gICAgICAgIH5yb3VuZF9leGFjdFxuICAgICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICAgID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IHVudGlsID0gSW50LiggKyApIHN0YXJ0IGRlY2ltYWxzIGluXG4gICAgKCogVGhlIGxvb3AgaW52YXJpYW50IGlzIHRoYXQgZWFjaCBpdGVyYXRpb24sIHdlIHN0cmlwIG9mZiB0aGUgbmV4dCBkZWNpbWFsIGRpZ2l0IGFuZFxuICAgICAgIHVwZGF0ZSBbc3VtXSwgW3JvdW5kX2F0XSwgYW5kIFtkaXZpc29yXSBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgcmVzdWx0IGlzOlxuXG4gICAgICAgWyBzdW0gKyByb3VuZChyZW1haW5pbmdfZGlnaXRzX29mX3hfcGFyc2VkX2FzX2RlY2ltYWwgKiBzY2FsZSAvIGRpdmlzb3IpIF1cbiAgICAgICB3aGVyZSBcInJvdW5kXCIgcm91bmRzIGJhc2VkIG9uIHRoZSBuZXcgdmFsdWUgb2YgW3JvdW5kX2F0XS5cbiAgICAqKVxuICAgIGxldCBkaXZpc29yID0gcmVmIGRpdmlzb3IgaW5cbiAgICBsZXQgcm91bmRfYXQgPSByZWYgcm91bmRfYXQgaW5cbiAgICBsZXQgc3VtID0gcmVmIEludDYzLnplcm8gaW5cbiAgICBsZXQgcG9zID0gcmVmIHN0YXJ0IGluXG4gICAgKCogU3RvcCBpZiB3ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIG9yIGlmIGZ1cnRoZXIgZGlnaXRzIGNhbm5vdCBpbmNyZWFzZSBvdXIgc3VtLiAqKVxuICAgIHdoaWxlIEludC4oIDw+ICkgIXBvcyB1bnRpbCAmJiAhcm91bmRfYXQgPCBzY2FsZSBkb1xuICAgICAgKG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICB8ICcwJyAuLiAnOScgYXMgY2hhciAtPlxuICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChkaWdpdF9vZl9jaGFyIGNoYXIpIGluXG4gICAgICAgICAoKiBFdmVyeSBuZXcgZGVjaW1hbCBwbGFjZSBpbXBsaWNpdGx5IHNjYWxlcyBvdXIgbnVtZXJhdG9yIGJ5IGEgZmFjdG9yIG9mIHRlbixcbiAgICAgICAgICAgIHNvIG11c3QgYWxzbyBlZmZlY3RpdmVseSBzY2FsZSBvdXIgZGVub21pbmF0b3IuXG5cbiAgICAgICAgICAgIDAuYWJjZGVmICogc2NhbGUvZGl2aXNvciAgICAgICAgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvKGRpdmlzb3IqMTApICBbcm91bmQgYXQgcm91bmRfYXQqMTBdXG5cbiAgICAgICAgICAgIFRoZW4gcmVkZWZpbmUgZGl2aXNvciA6PSBkaXZpc29yKjEwIGFuZCByb3VuZF9hdCA6PSByb3VuZF9hdCoxMCwgc28gd2UgaGF2ZTpcbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF0gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gIWRpdmlzb3IgKiBpbnQ2M190ZW47XG4gICAgICAgICByb3VuZF9hdCA6PSAhcm91bmRfYXQgKiBpbnQ2M190ZW47XG4gICAgICAgICAoKiBOZXh0IHdlIHdvcmsgb3V0IHRoZSBwYXJ0IG9mIHRoZSBzdW0gYmFzZWQgb24gb3VyIGN1cnJlbnQgZGlnaXQ6XG5cbiAgICAgICAgICAgIGEuYmNkZWYgKiBzY2FsZS9kaXZpc29yIFtyb3VuZCBhdCByb3VuZF9hdF1cbiAgICAgICAgICAgID0gYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgLSByb3VuZF9hdCAvIGRpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSAoYSpzY2FsZS1yb3VuZF9hdCkgLyBkaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuXG4gICAgICAgICAgICBEZWNvbXBvc2UgdGhlIGZpcnN0IHRlcm0gaW50byBpbnRlZ2VyIGFuZCByZW1haW5kZXIgcGFydHMuXG4gICAgICAgICAgICBTaW5jZSB3ZSBoYXZlIGFscmVhZHkgc3VidHJhY3RlZCBbcm91bmRfYXRdLCB3ZSBkZWNvbXBvc2UgYmFzZWRcbiAgICAgICAgICAgIG9uIHRoZSBjZWlsaW5nIHJhdGhlciB0aGFuIHRoZSBmbG9vciBvZiB0aGUgZGl2aXNpb24sXG4gICAgICAgICAgICBlLmcuIDUvMyB3b3VsZCBkZWNvbXBvc2UgYXMgMiArICgtMSkvMywgcmF0aGVyIHRoYW4gMSArICgyLzMpLlxuXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIHJlbWFpbmRlci9kaXZpc29yICsgMC5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgIFtyb3VuZCBhdCAwXVxuICAgICAgICAgICAgPSBpbmNyZW1lbnQgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdXG4gICAgICAgICAqKVxuICAgICAgICAgbGV0IG51bWVyYXRvciA9IChkaWdpdCAqIHNjYWxlKSAtICFyb3VuZF9hdCBpblxuICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gIWRpdmlzb3IgaW5cbiAgICAgICAgIGxldCBpbmNyZW1lbnQgPSBkaXZpZGVfYW5kX3JvdW5kX3VwIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yIGluXG4gICAgICAgICBsZXQgcmVtYWluZGVyID0gbnVtZXJhdG9yIC0gKGluY3JlbWVudCAqIGRlbm9taW5hdG9yKSBpblxuICAgICAgICAgKCogTm93IGp1c3QgYWNjdW11bGF0ZSB0aGUgbmV3IGluY3JlbWVudCBhbmQgaXRlcmF0ZSBvbiB0aGUgcmVtYWluaW5nIHBhcnQ6XG4gICAgICAgICAgICAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IC1yZW1haW5kZXJdLlxuXG4gICAgICAgICAgICBTaW5jZSBbcmVtYWluZGVyXSBpcyBiZXR3ZWVuIFstKGRpdmlzb3ItMSldIGFuZCBbMF0gaW5jbHVzaXZlLCB0aGUgbmV3XG4gICAgICAgICAgICBbcm91bmRfYXRdIHdpbGwgYmUgd2l0aGluIFswXSBhbmQgW2Rpdmlzb3ItMV0gaW5jbHVzaXZlLiAqKVxuICAgICAgICAgcm91bmRfYXQgOj0gLXJlbWFpbmRlcjtcbiAgICAgICAgIHN1bSA6PSAhc3VtICsgaW5jcmVtZW50O1xuICAgICAgICAgKCogVGhpcyBsaW5lIHByZXZlbnRzIHRoZSBkaXZpc29yIGZyb20gZ3Jvd2luZyB3aXRob3V0IGJvdW5kIGFuZCBvdmVyZmxvd2luZy4gSWZcbiAgICAgICAgICAgIHRoaXMgbGluZSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBkaXZpc29yLCB0aGVuIHRoZSBkaXZpc29yIGlzIGxhcmdlciB0aGFuIHRoZVxuICAgICAgICAgICAgc2NhbGUsIHNvIHRoZSBzdW0gd2lsbCBpbmNyZWFzZSBpZiBhbmQgb25seSBpZiBbcGFyc2VkX3JlbWFpbmluZ19kaWdpdHMgKlxuICAgICAgICAgICAgc2NhbGUgKD4gb3IgPj0pIHJvdW5kX2F0XSwgd2hpY2ggZG9lc24ndCBkZXBlbmQgb24gaG93IG11Y2ggbGFyZ2VyIHRoZVxuICAgICAgICAgICAgZGl2aXNvciBpcy4gU28gdGhpcyBjaGFuZ2UgaXMgc2FmZS4gKilcbiAgICAgICAgIGRpdmlzb3IgOj0gSW50NjMubWluIGRlbm9taW5hdG9yIHNjYWxlXG4gICAgICAgfCAnXycgd2hlbiBhbGxvd191bmRlcnNjb3JlIC0+ICgpXG4gICAgICAgfCBfIC0+IHJhaXNlX2ludmFsaWRfZGVjaW1hbCBcInJlYWRfaW50NjNfZGVjaW1hbFwiKTtcbiAgICAgIHBvcyA6PSBJbnQuc3VjYyAhcG9zXG4gICAgZG9uZTtcbiAgICBpZiAhcm91bmRfYXQgPSB6ZXJvXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByb3VuZF9leGFjdCB3aXRoXG4gICAgICB8IFJvdW5kLlRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eSAtPiAoKVxuICAgICAgfCBSb3VuZC5Ub3dhcmRfcG9zaXRpdmVfaW5maW5pdHkgLT4gc3VtIDo9ICFzdW0gKyBJbnQ2My5vbmUpO1xuICAgICFzdW1cbiAgOztcblxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsIHN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgfnJvdW5kX3RpZXMgfmFsbG93X3VuZGVyc2NvcmUgPVxuICAgIHJlYWRfaW50NjNfZGVjaW1hbF9yb3VuZGVkXG4gICAgICBzdHJpbmdcbiAgICAgIH5wb3NcbiAgICAgIH5kZWNpbWFsc1xuICAgICAgfnNjYWxlOihJbnQ2My4oICogKSBzY2FsZSBpbnQ2M190d28pXG4gICAgICB+ZGl2aXNvcjppbnQ2M190d29cbiAgICAgIH5yb3VuZF9hdDpJbnQ2My5vbmVcbiAgICAgIH5yb3VuZF9leGFjdDpyb3VuZF90aWVzXG4gICAgICB+YWxsb3dfdW5kZXJzY29yZVxuICA7O1xuZW5kXG5cbmxldCBtaW5fc2NhbGUgPSBJbnQ2My5vbmVcbmxldCBtYXhfc2NhbGUgPSBJbnQ2My4oIC8gKSBJbnQ2My5tYXhfdmFsdWUgaW50NjNfdHdlbnR5XG5cbmxldCByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkZWNpbWFscz0lZCBpcyBuZWdhdGl2ZVwiIG1vZHVsZV9uYW1lIG5hbWUgZGVjaW1hbHMgKClcbjs7XG5cbmxldCByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiBkaWdpdHM9JWQgaXMgbm90IGEgcG9zaXRpdmUgbnVtYmVyXCIgbW9kdWxlX25hbWUgbmFtZSBkaWdpdHMgKClcbjs7XG5cbmxldCByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlID1cbiAgaW52YWxpZF9hcmdmXG4gICAgXCIlcy4lczogc2NhbGU9JUxkIG91dCBvZiByYW5nZSBbJUxkLCAlTGRdXCJcbiAgICBtb2R1bGVfbmFtZVxuICAgIG5hbWVcbiAgICAoSW50NjMudG9faW50NjQgc2NhbGUpXG4gICAgKEludDYzLnRvX2ludDY0IG1pbl9zY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWF4X3NjYWxlKVxuICAgICgpXG47O1xuXG5sZXQgcmFpc2VfcG9zX291dF9vZl9ib3VuZHMgbmFtZSB+bGVuIH5wb3MgfmRpZ2l0cyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiBwb3M9JWQgb3V0IG9mIHJhbmdlIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgIG1vZHVsZV9uYW1lXG4gICAgICBuYW1lXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCIlcy4lczogJWQgZGlnaXRzIGRvIG5vdCBmaXQgYXQgcG9zICVkIGluIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIGRpZ2l0c1xuICAgICAgcG9zXG4gICAgICBsZW5cbiAgICAgICgpXG47O1xuXG5sZXQgcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludCA9XG4gIGludmFsaWRfYXJnZiBcIiVzLiVzOiAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50IG1heCAoKVxuOztcblxubGV0IHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzID1cbiAgaW52YWxpZF9hcmdmICFcIiVzLiVzOiAle0ludDYzfSBvdXQgb2YgcmFuZ2UgWzAsICV7SW50NjN9XVwiIG1vZHVsZV9uYW1lIG5hbWUgaW50NjMgbWF4ICgpXG47O1xuXG5sZXQgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHMgPVxuICBpZiBkZWNpbWFscyA8IDAgdGhlbiByYWlzZV9uZWdhdGl2ZV9kZWNpbWFscyBuYW1lIH5kZWNpbWFsc1xuOztcblxubGV0IGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHMgPSBpZiBkaWdpdHMgPCAxIHRoZW4gcmFpc2Vfbm9uX3Bvc2l0aXZlX2RpZ2l0cyBuYW1lIH5kaWdpdHNcblxubGV0IGNoZWNrX3BvcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgKyBkaWdpdHMgPiBsZW4gdGhlbiByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzXG47O1xuXG5sZXQgY2hlY2tfaW50IG5hbWUgfm1heCBpbnQgPVxuICBpZiBpbnQgPCAwIHx8IGludCA+IG1heCB0aGVuIHJhaXNlX2ludF9vdXRfb2ZfYm91bmRzIG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjMgPVxuICBpZiBJbnQ2My4oIDwgKSBpbnQ2MyBJbnQ2My56ZXJvIHx8IEludDYzLiggPiApIGludDYzIG1heFxuICB0aGVuIHJhaXNlX2ludDYzX291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludDYzXG47O1xuXG5sZXQgY2hlY2tfc2NhbGUgbmFtZSB+c2NhbGUgPVxuICBpZiBJbnQ2My4oIDwgKSBzY2FsZSBtaW5fc2NhbGUgfHwgSW50NjMuKCA+ICkgc2NhbGUgbWF4X3NjYWxlXG4gIHRoZW4gcmFpc2Vfc2NhbGVfb3V0X29mX2JvdW5kcyBuYW1lIH5zY2FsZVxuOztcblxubGV0IGNoZWNrX3dyaXRlIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyB+bWF4IGludCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludCBuYW1lIH5tYXggaW50XG47O1xuXG5sZXQgY2hlY2tfd3JpdGU2MyBuYW1lIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbWF4ID0gbWF4X2ludDYzX3dpdGggfmRpZ2l0cyBpblxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ5dGVzIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zO1xuICBjaGVja19pbnQ2MyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjEgfm1heDo5IGludDtcbiAgVW5zYWZlLndyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzJfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czoyIH5tYXg6OTkgaW50O1xuICBVbnNhZmUud3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfM19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjMgfm1heDo5OTkgaW50O1xuICBVbnNhZmUud3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfNF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjQgfm1heDo5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV81X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NSB+bWF4Ojk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV82X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NiB+bWF4Ojk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfN19kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjcgfm1heDo5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfN19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOF9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjggfm1heDo5OV85OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzlfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo5IH5tYXg6OTk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICBjaGVja193cml0ZTYzIFwid3JpdGVfaW50NjNcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzO1xuICBVbnNhZmUud3JpdGVfaW50NjMgYnl0ZXMgfnBvcyB+ZGlnaXRzIGludDYzXG47O1xuXG5sZXQgY2hlY2tfcmVhZCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGlnaXRzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX3BvcyBuYW1lIH5kaWdpdHMgfmxlbiB+cG9zXG47O1xuXG5sZXQgY2hlY2tfcmVhZDYzIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19kaWdpdHMgbmFtZSB+ZGlnaXRzO1xuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjNfZGVjaW1hbCBuYW1lIH5zdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGNoZWNrX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzO1xuICBjaGVja19zY2FsZSBuYW1lIH5zY2FsZTtcbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0czpkZWNpbWFscyB+bGVuIH5wb3Ncbjs7XG5cbmxldCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfMV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czoxO1xuICBVbnNhZmUucmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8yX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjI7XG4gIFVuc2FmZS5yZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzNfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MztcbiAgVW5zYWZlLnJlYWRfM19kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNF9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo0O1xuICBVbnNhZmUucmVhZF80X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF81X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjU7XG4gIFVuc2FmZS5yZWFkXzVfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzZfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NjtcbiAgVW5zYWZlLnJlYWRfNl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfN19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo3O1xuICBVbnNhZmUucmVhZF83X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF84X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjg7XG4gIFVuc2FmZS5yZWFkXzhfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzlfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6OTtcbiAgVW5zYWZlLnJlYWRfOV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBjaGVja19yZWFkNjMgXCJyZWFkX2ludDYzXCIgfnN0cmluZyB+cG9zIH5kaWdpdHM7XG4gIFVuc2FmZS5yZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gIGNoZWNrX3JlYWQ2M19kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGU7XG4gIFVuc2FmZS5yZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEphblxuICAgICAgfCBGZWJcbiAgICAgIHwgTWFyXG4gICAgICB8IEFwclxuICAgICAgfCBNYXlcbiAgICAgIHwgSnVuXG4gICAgICB8IEp1bFxuICAgICAgfCBBdWdcbiAgICAgIHwgU2VwXG4gICAgICB8IE9jdFxuICAgICAgfCBOb3ZcbiAgICAgIHwgRGVjXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgbGV0IHRvX2JpbmFibGUgdCA9IHRvX2ludCB0IC0gMVxuICAgIGxldCBvZl9iaW5hYmxlIGkgPSBvZl9pbnRfZXhuIChpICsgMSlcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIEludC5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IG51bV9tb250aHMgPSAxMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIGxldCBhbGwgPSBbIEphbjsgRmViOyBNYXI7IEFwcjsgTWF5OyBKdW47IEp1bDsgQXVnOyBTZXA7IE9jdDsgTm92OyBEZWMgXVxuICBsZXQgaGFzaCA9IHRvX2ludFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBtb250aHMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBpbnRzLiAgRnJvbSAxMDguMDdcbiAgICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgICBwcmV0dHkgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzXG4gICAgICAgY2hhbmdlZCBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZVxuICAgICAgIG1vc3QgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICAgIHJhdy4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW50LnRfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICB8IFNvbWUgaSAtPiBvZl9pbnRfZXhuIChpICsgMSlcbiAgICAgIHwgTm9uZSAtPiBULnRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG4oKiBSZXBsYWNlIHRoZSBvdmVycmlkZW4gc2V4cCBjb252ZXJ0ZXJzIGZyb20gW0NvbXBhcmFibGUuTWFrZV9iaW5hYmxlXSB3aXRoIHRoZSBvcmRpbmFyeVxuICAgc3ltYm9saWMgY29udmVydGVycy4gKilcbmxldCBzZXhwX29mX3QgPSBULnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFQudF9vZl9zZXhwXG5sZXQgc2hpZnQgdCBpID0gb2ZfaW50X2V4biAoMSArIEludC4oICUgKSAodG9faW50IHQgLSAxICsgaSkgbnVtX21vbnRocylcblxubGV0IGFsbF9zdHJpbmdzID1cbiAgbGF6eVxuICAgIChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBhbGwgfmY6KGZ1biB2YXJpYW50IC0+IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgdmFyaWFudCkpKSlcbjs7XG5cbmxldCB0b19zdHJpbmcgKHQgOiB0KSA9XG4gIGxldCBhbGxfc3RyaW5ncyA9IExhenkuZm9yY2UgYWxsX3N0cmluZ3MgaW5cbiAgYWxsX3N0cmluZ3MuKHRvX2ludCB0IC0gMSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgPVxuICBsZXQgdGFibGUgPVxuICAgIGxhenlcbiAgICAgIChsZXQgbW9kdWxlIFQgPSBTdHJpbmcuVGFibGUgaW5cbiAgICAgICBsZXQgdGFibGUgPSBULmNyZWF0ZSB+c2l6ZTpudW1fbW9udGhzICgpIGluXG4gICAgICAgQXJyYXkuaXRlcmkgKExhenkuZm9yY2UgYWxsX3N0cmluZ3MpIH5mOihmdW4gaSBzIC0+XG4gICAgICAgICBsZXQgdCA9IG9mX2ludF9leG4gKGkgKyAxKSBpblxuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcubG93ZXJjYXNlIHMpIH5kYXRhOnQ7XG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OihTdHJpbmcudXBwZXJjYXNlIHMpIH5kYXRhOnQpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBmdW4gc3RyIC0+XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIChMYXp5LmZvcmNlIHRhYmxlKSBzdHIgd2l0aFxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiSW52YWxpZCBtb250aDogJXNcIiBzdHIgKClcbjs7XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBtb250aCA9IHQgPVxuICAgIHwgSmFuXG4gICAgfCBGZWJcbiAgICB8IE1hclxuICAgIHwgQXByXG4gICAgfCBNYXlcbiAgICB8IEp1blxuICAgIHwgSnVsXG4gICAgfCBBdWdcbiAgICB8IFNlcFxuICAgIHwgT2N0XG4gICAgfCBOb3ZcbiAgICB8IERlY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBpc19sZWFwX3llYXIgfnllYXIgPSAoeWVhciBtb2QgNCA9IDAgJiYgbm90ICh5ZWFyIG1vZCAxMDAgPSAwKSkgfHwgeWVhciBtb2QgNDAwID0gMFxuXG4oKiBDcmVhdGUgYSBsb2NhbCBwcml2YXRlIGRhdGUgdHlwZSB0byBlbnN1cmUgdGhhdCBhbGwgZGF0ZXMgYXJlIGNyZWF0ZWQgdmlhXG4gICBEYXRlLmNyZWF0ZV9leG4uXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIG9mX2ludF91bmNoZWNrZWQgOiBpbnQgLT4gdFxuICAgICAgICB2YWwgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5IDogdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgICgqIFdlIHVzZWQgdG8gc3RvcmUgZGF0ZXMgbGlrZSB0aGlzOlxuICAgICAgICAgICB0eXBlIHQgPSB7IHk6IGludDsgbTogTW9udGguU3RhYmxlLlYxLnQ7IGQ6IGludDsgfVxuICAgICAgICAgICBJbiB0aGUgYmVsb3cgd2UgbWFrZSBzdXJlIHRoYXQgdGhlIGJpbl9pbyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgICAgICBpZGVudGljYWwgKGFuZCB0aGUgc3RhYmxlIHVuaXQgdGVzdHMgY2hlY2sgdGhpcylcblxuICAgICAgICAgICBJbiBtZW1vcnkgd2UgdXNlIHRoZSBmb2xsb3dpbmcgbXVjaCBtb3JlIGNvbXBhY3QgcmVwcmVzZW50YXRpb246XG4gICAgICAgICAgIDIgYnl0ZXMgeWVhclxuICAgICAgICAgICAxIGJ5dGUgbW9udGhcbiAgICAgICAgICAgMSBieXRlIGRheVxuXG4gICAgICAgICAgIGFsbCBwYWNrZWQgaW50byBhIHNpbmdsZSBpbW1lZGlhdGUgaW50IChzbyBmcm9tIDQgd29yZHMgZG93biB0byAxKS5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZSB0ID0gaW50XG4gICAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgICAgY29tcGFyZVxuICAgICAgICAsIGVxdWFsXG4gICAgICAgICwgaGFzaFxuICAgICAgICAsIHR5cGVyZXBcbiAgICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJcbiAgICAgICAgLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgKCogY3JlYXRlX2V4bidzIHZhbGlkYXRpb24gbWFrZSBzdXJlIHRoYXQgZWFjaCB2YWx1ZSBmaXRzICopXG4gICAgICAgICAgKHllYXIgbHNsIDE2KSBsb3IgKE1vbnRoLnRvX2ludCBtb250aCBsc2wgOCkgbG9yIGRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnRfdW5jaGVja2VkIHQgPSB0XG4gICAgICAgIGxldCB5ZWFyIHQgPSB0IGxzciAxNlxuICAgICAgICBsZXQgbW9udGggdCA9IE1vbnRoLm9mX2ludF9leG4gKCh0IGxzciA4KSBsYW5kIDB4ZmYpXG4gICAgICAgIGxldCBkYXkgdCA9IHQgbGFuZCAweGZmXG5cbiAgICAgICAgbGV0IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoID1cbiAgICAgICAgICBtYXRjaCAobW9udGggOiBNb250aC50KSB3aXRoXG4gICAgICAgICAgfCBKYW4gfCBNYXIgfCBNYXkgfCBKdWwgfCBBdWcgfCBPY3QgfCBEZWMgLT4gMzFcbiAgICAgICAgICB8IEFwciB8IEp1biB8IFNlcCB8IE5vdiAtPiAzMFxuICAgICAgICAgIHwgRmViIC0+IGlmIGlzX2xlYXBfeWVhciB+eWVhciB0aGVuIDI5IGVsc2UgMjhcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSA9XG4gICAgICAgICAgKCogeWVhciwgbW9udGgsIGFuZCBkYXkgbmVlZCB0byBiZSBwYXNzZWQgYXMgcGFyYW1ldGVycyB0byBhdm9pZCBhbGxvY2F0aW5nXG4gICAgICAgICAgICAgYSBjbG9zdXJlIChzZWUgdW5pdCB0ZXN0IGJlbG93KSAqKVxuICAgICAgICAgIGxldCBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IG1zZyA9XG4gICAgICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICAgICAgIVwiRGF0ZS5jcmVhdGVfZXhuIH55OiVkIH5tOiV7TW9udGh9IH5kOiVkIGVycm9yOiAlc1wiXG4gICAgICAgICAgICAgIHllYXJcbiAgICAgICAgICAgICAgbW9udGhcbiAgICAgICAgICAgICAgZGF5XG4gICAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgeWVhciA8IDAgfHwgeWVhciA+IDk5OTlcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJ5ZWFyIG91dHNpZGUgb2YgWzAuLjk5OTldXCI7XG4gICAgICAgICAgaWYgZGF5IDw9IDAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwiZGF5IDw9IDBcIjtcbiAgICAgICAgICBsZXQgZGF5c19pbl9tb250aCA9IGRheXNfaW5fbW9udGggfnllYXIgfm1vbnRoIGluXG4gICAgICAgICAgaWYgZGF5ID4gZGF5c19pbl9tb250aFxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSAoc3ByaW50ZiBcIiVkIGRheSBtb250aCB2aW9sYXRpb25cIiBkYXlzX2luX21vbnRoKTtcbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogV2UgZG9uJ3QgdXNlIE1ha2VfYmluYWJsZSBoZXJlLCBiZWNhdXNlIHRoYXQgd291bGQgZ28gdmlhIGFuIGltbWVkaWF0ZVxuICAgICAgICAgICB0dXBsZSBvciByZWNvcmQuICBUaGF0IGlzIGV4YWN0bHkgdGhlIDMyIGJ5dGVzIHdlIHdvcmtlZCBzbyBoYXJkIGFib3ZlIHRvXG4gICAgICAgICAgIGdldCByaWQgb2YuICBXZSBhbHNvIGRvbid0IHdhbnQgdG8ganVzdCBiaW5faW8gdGhlIGludGVnZXIgZGlyZWN0bHlcbiAgICAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIG1lYW4gYSBuZXcgYmluX2lvIGZvcm1hdC4gICopXG5cbiAgICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLlN0YWJsZS5WMS5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgPVxuICAgICAgICAgICgqIF9fYmluX3JlYWRfdCBpcyBvbmx5IG5lZWRlZCBmb3IgdmFyaWFudHMgKilcbiAgICAgICAgICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiRGF0ZS50XCIgIXBvc19yZWZcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3NpemVfdCB0ID1cbiAgICAgICAgICBJbnQuYmluX3NpemVfdCAoeWVhciB0KSArIE1vbnRoLmJpbl9zaXplX3QgKG1vbnRoIHQpICsgSW50LmJpbl9zaXplX3QgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgICBsZXQgcG9zID0gSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zICh5ZWFyIHQpIGluXG4gICAgICAgICAgbGV0IHBvcyA9IE1vbnRoLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChtb250aCB0KSBpblxuICAgICAgICAgIEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICAgICAgbGV0IGJpbl90ID1cbiAgICAgICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID0gYmluX3JlYWRlcl90XG4gICAgICAgICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RcbiAgICAgICAgICA7IHNoYXBlID0gYmluX3NoYXBlX3RcbiAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgICAgICBsZXQgb2ZfaW50X2V4biBuID0gY3JlYXRlX2V4biB+eTooeWVhciBuKSB+bToobW9udGggbikgfmQ6KGRheSBuKVxuICAgICAgICBsZXQgaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5ID0gMFxuXG4gICAgICAgIGxldCV0ZXN0IFwiaW52YWxpZCB2YWx1ZVwiID1cbiAgICAgICAgICBFeG4uZG9lc19yYWlzZSAoZnVuICgpIDogdCAtPiBvZl9pbnRfZXhuIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuXG4gICAgICAoKiogWVlZWS1NTS1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNCAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjUgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDcgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo4IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWRcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo0IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgKCoqIE1NL0REL1lZWVkgKilcbiAgICAgIGxldCB0b19zdHJpbmdfYW1lcmljYW4gdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgMiAnLyc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICcvJztcbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6NiAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV95ZWFyNCBzdHIgcG9zID0gcmVhZF80X2RpZ2l0X2ludCBzdHIgfnBvc1xuICAgICAgbGV0IHBhcnNlX21vbnRoIHN0ciBwb3MgPSBNb250aC5vZl9pbnRfZXhuIChyZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zKVxuICAgICAgbGV0IHBhcnNlX2RheSBzdHIgcG9zID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvc1xuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyBzdHIgfnBvcyA9XG4gICAgICAgIGlmIHBvcyArIDggPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgICB0aGVuIGludmFsaWRfYXJnIFwiRGF0ZS5vZl9zdHJpbmdfaXNvODYwMV9iYXNpYzogcG9zICsgOCA+IHN0cmluZyBsZW5ndGhcIjtcbiAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzdHIgcG9zKVxuICAgICAgICAgIH5tOihwYXJzZV9tb250aCBzdHIgKHBvcyArIDQpKVxuICAgICAgICAgIH5kOihwYXJzZV9kYXkgc3RyIChwb3MgKyA2KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYSBtYXRlcmlhbCB3YXksIGJlIHN1cmUgeW91XG4gICAgICAgICB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2Ygd29ya2luZyBpbiBTdGFibGUgKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBpbnZhbGlkICgpID0gZmFpbHdpdGggKFwiaW52YWxpZCBkYXRlOiBcIiBeIHMpIGluXG4gICAgICAgIGxldCBlbnN1cmUgYiA9IGlmIG5vdCBiIHRoZW4gaW52YWxpZCAoKSBpblxuICAgICAgICBsZXQgbW9udGhfbnVtIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OihwYXJzZV95ZWFyNCBzIHllYXIpIH5tOihwYXJzZV9tb250aCBzIG1vbnRoKSB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9udGhfYWJydiB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHMgeWVhcilcbiAgICAgICAgICAgIH5tOihNb250aC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgcyB+cG9zOm1vbnRoIH5sZW46MykpXG4gICAgICAgICAgICB+ZDoocGFyc2VfZGF5IHMgZGF5KVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnLydcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHksIG0sIGQgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicvJyB3aXRoXG4gICAgICAgICAgICB8IFsgYTsgYjsgYyBdIC0+XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggYSA9IDQgdGhlbiBhLCBiLCBjICgqIHkvbS9kICopIGVsc2UgYywgYSwgYiAoKiBtL2QveSAqKVxuICAgICAgICAgICAgfCBfIC0+IGludmFsaWQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB5ZWFyID0gSW50Lm9mX3N0cmluZyB5IGluXG4gICAgICAgICAgbGV0IHllYXIgPVxuICAgICAgICAgICAgaWYgeWVhciA+PSAxMDAgdGhlbiB5ZWFyIGVsc2UgaWYgeWVhciA8IDc1IHRoZW4gMjAwMCArIHllYXIgZWxzZSAxOTAwICsgeWVhclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGgub2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBtKSBpblxuICAgICAgICAgIGxldCBkYXkgPSBJbnQub2Zfc3RyaW5nIGQgaW5cbiAgICAgICAgICBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICctJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiB5eXl5LW1tLWRkICopXG4gICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMCAmJiBDaGFyLiggPSApIHMuWzRdICctJyAmJiBDaGFyLiggPSApIHMuWzddICctJyk7XG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjUgfmRheTo4KVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBzICcgJ1xuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLlsyXSAnICcgJiYgQ2hhci4oID0gKSBzLls2XSAnICdcbiAgICAgICAgICB0aGVuICgqIEREIE1NTSBZWVlZICopXG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MyB+eWVhcjo3XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBZWVlZIE1NTSBERCAqKVxuICAgICAgICAgICAgZW5zdXJlIChTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzRdICcgJyAmJiBDaGFyLiggPSApIHMuWzhdICcgJyk7XG4gICAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6OSB+bW9udGg6NSB+eWVhcjowKVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDlcbiAgICAgICAgdGhlbiAoKiBERE1NTVlZWVkgKilcbiAgICAgICAgICBtb250aF9hYnJ2IH5kYXk6MCB+bW9udGg6MiB+eWVhcjo1XG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOFxuICAgICAgICB0aGVuICgqIGFzc3VtZSBZWVlZTU1ERCAqKVxuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo0IH5kYXk6NlxuICAgICAgICBlbHNlIGludmFsaWQgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIkRhdGUub2Zfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9sZF9kYXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgIHsgeSA6IGludFxuICAgICAgICAgICAgOyBtIDogaW50XG4gICAgICAgICAgICA7IGQgOiBpbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICAgICAgbGV0IHRvX2RhdGUgdCA9IFQuY3JlYXRlX2V4biB+eTp0Lnkgfm06KE1vbnRoLm9mX2ludF9leG4gdC5tKSB+ZDp0LmRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBTZXhwLkF0b20gcyAtPiBvZl9zdHJpbmcgc1xuICAgICAgICAgIHwgU2V4cC5MaXN0IF8gYXMgc2V4cCAtPiBPbGRfZGF0ZS50b19kYXRlIChPbGRfZGF0ZS50X29mX3NleHAgc2V4cClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgICAgIHRyeSB0X29mX3NleHAgcyB3aXRoXG4gICAgICAgICAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZXhuIC0+IHJhaXNlIGV4blxuICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhIC0+IG9mX3NleHBfZXJyb3IgYSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgICAgICAoU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXIgOiB0IFNleHBfZ3JhbW1hci50KVxuICAgICAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5EYXRlLnRcIilcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBcbiAgICAgICwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF91bmNoZWNrZWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cblxuICAgICAgbGV0IG9mX2ludF9leG4gdCA9XG4gICAgICAgICgqIERvbid0IGp1c3QgYmxpbmRseSBjb252ZXJ0IGZyb20gYW4gaW50ZWdlci4gVXNlIFtWMS5vZl9pbnRfZXhuXSB0byB2YWxpZGF0ZSB0aGVcbiAgICAgICAgICAgZGF0ZS4gKilcbiAgICAgICAgaWYgdCA9IG5vbmUgdGhlbiBub25lIGVsc2Ugc29tZSAoVjEub2ZfaW50X2V4biB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludCB0ID0gdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhYmxlID0gU3RhYmxlLlYxLldpdGhvdXRfY29tcGFyYWJsZVxuaW5jbHVkZSBXaXRob3V0X2NvbXBhcmFibGVcbm1vZHVsZSBDID0gQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoV2l0aG91dF9jb21wYXJhYmxlKVxuaW5jbHVkZSBDXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgKEMgOiBDb21wYXJhYmxlLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZVxuICAgIGluY2x1ZGUgQmluYWJsZVxuXG4gICAgbGV0IGNvbXBhcmUgKGEgOiB0KSAoYiA6IHQpID0gY29tcGFyZSBhIGJcbiAgZW5kKSA6XG4gICAgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuRGF0ZVwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbmxldCB1bml4X2Vwb2NoID0gY3JlYXRlX2V4biB+eToxOTcwIH5tOkphbiB+ZDoxXG5cbigqIFRoZSBEYXlzIG1vZHVsZSBpcyB1c2VkIGZvciBjYWxjdWxhdGlvbnMgdGhhdCBpbnZvbHZlIGFkZGluZyBvciByZW1vdmluZyBhIGtub3duIG51bWJlclxuICAgb2YgZGF5cyBmcm9tIGEgZGF0ZS4gIEludGVybmFsbHkgdGhlIGRhdGUgaXMgdHJhbnNsYXRlZCB0byBhIGRheSBudW1iZXIsIHRoZSBkYXlzIGFyZVxuICAgYWRkZWQsIGFuZCB0aGUgbmV3IGRhdGUgaXMgcmV0dXJuZWQuICBUaG9zZSBpbnRlcmVzdGVkIGluIHRoZSBtYXRoIGNhbiByZWFkOlxuXG4gICBodHRwOi8vYWxjb3IuY29uY29yZGlhLmNhL35ncGthdGNoL2dkYXRlLW1ldGhvZC5odG1sXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgYXJlIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbm1vZHVsZSBEYXlzIDogc2lnXG4gIHR5cGUgZGF0ZSA9IHRcbiAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cblxuICB2YWwgb2ZfZGF0ZSA6IGRhdGUgLT4gdFxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gZGF0ZVxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGFkZF9kYXlzIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgdW5peF9lcG9jaCA6IHRcbmVuZFxud2l0aCB0eXBlIGRhdGUgOj0gdCA9IHN0cnVjdFxuICBvcGVuIEludFxuXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBvZl95ZWFyIHkgPSAoMzY1ICogeSkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApXG5cbiAgbGV0IG9mX2RhdGUgZGF0ZSA9XG4gICAgbGV0IG0gPSAoTW9udGgudG9faW50IChtb250aCBkYXRlKSArIDkpICUgMTIgaW5cbiAgICBsZXQgeSA9IHllYXIgZGF0ZSAtIChtIC8gMTApIGluXG4gICAgb2ZfeWVhciB5ICsgKCgobSAqIDMwNikgKyA1KSAvIDEwKSArIChkYXkgZGF0ZSAtIDEpXG4gIDs7XG5cbiAgbGV0IGNfMTBfMDAwID0gSW50NjMub2ZfaW50IDEwXzAwMFxuICBsZXQgY18xNF83ODAgPSBJbnQ2My5vZl9pbnQgMTRfNzgwXG4gIGxldCBjXzNfNjUyXzQyNSA9IEludDYzLm9mX2ludCAzXzY1Ml80MjVcblxuICBsZXQgdG9fZGF0ZSBkYXlzID1cbiAgICBsZXQgeSA9XG4gICAgICBsZXQgb3BlbiBJbnQ2MyBpblxuICAgICAgdG9faW50X2V4biAoKChjXzEwXzAwMCAqIG9mX2ludCBkYXlzKSArIGNfMTRfNzgwKSAvIGNfM182NTJfNDI1KVxuICAgIGluXG4gICAgbGV0IGRkZCA9IGRheXMgLSBvZl95ZWFyIHkgaW5cbiAgICBsZXQgeSwgZGRkID1cbiAgICAgIGlmIGRkZCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgeSA9IHkgLSAxIGluXG4gICAgICAgIHksIGRheXMgLSBvZl95ZWFyIHkpXG4gICAgICBlbHNlIHksIGRkZFxuICAgIGluXG4gICAgbGV0IG1pID0gKCgxMDAgKiBkZGQpICsgNTIpIC8gM18wNjAgaW5cbiAgICBsZXQgeSA9IHkgKyAoKG1pICsgMikgLyAxMikgaW5cbiAgICBsZXQgbSA9ICgobWkgKyAyKSAlIDEyKSArIDEgaW5cbiAgICBsZXQgZCA9IGRkZCAtICgoKG1pICogMzA2KSArIDUpIC8gMTApICsgMSBpblxuICAgIGNyZWF0ZV9leG4gfnkgfm06KE1vbnRoLm9mX2ludF9leG4gbSkgfmRcbiAgOztcblxuICBsZXQgdW5peF9lcG9jaCA9IG9mX2RhdGUgdW5peF9lcG9jaFxuICBsZXQgYWRkX2RheXMgdCBkYXlzID0gdCArIGRheXNcbiAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5lbmRcblxubGV0IGFkZF9kYXlzIHQgZGF5cyA9IERheXMudG9fZGF0ZSAoRGF5cy5hZGRfZGF5cyAoRGF5cy5vZl9kYXRlIHQpIGRheXMpXG5sZXQgZGlmZiB0MSB0MiA9IERheXMuZGlmZiAoRGF5cy5vZl9kYXRlIHQxKSAoRGF5cy5vZl9kYXRlIHQyKVxuXG5sZXQgYWRkX21vbnRocyB0IG4gPVxuICBsZXQgdG90YWxfbW9udGhzID0gTW9udGgudG9faW50IChtb250aCB0KSArIG4gaW5cbiAgbGV0IHkgPSB5ZWFyIHQgKyAodG90YWxfbW9udGhzIC8lIDEyKSBpblxuICBsZXQgbSA9IHRvdGFsX21vbnRocyAlIDEyIGluXG4gICgqIGNvcnJlY3QgZm9yIGRlY2VtYmVyICopXG4gIGxldCB5LCBtID0gaWYgSW50LiggPSApIG0gMCB0aGVuIHkgLSAxLCBtICsgMTIgZWxzZSB5LCBtIGluXG4gIGxldCBtID0gTW9udGgub2ZfaW50X2V4biBtIGluXG4gICgqIGhhbmRsZSBpbnZhbGlkIGRhdGVzIGZvciBtb250aHMgd2l0aCBmZXdlciBudW1iZXIgb2YgZGF5cyAqKVxuICBsZXQgcmVjIHRyeV9jcmVhdGUgZCA9XG4gICAgdHJ5IGNyZWF0ZV9leG4gfnkgfm0gfmQgd2l0aFxuICAgIHwgX2V4biAtPlxuICAgICAgYXNzZXJ0IChJbnQuKCA+PSApIGQgMSk7XG4gICAgICB0cnlfY3JlYXRlIChkIC0gMSlcbiAgaW5cbiAgdHJ5X2NyZWF0ZSAoZGF5IHQpXG47O1xuXG5sZXQgYWRkX3llYXJzIHQgbiA9IGFkZF9tb250aHMgdCAobiAqIDEyKVxuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0RldGVybWluYXRpb25fb2ZfdGhlX2RheV9vZl90aGVfd2VlayNQdXJlbHlfbWF0aGVtYXRpY2FsX21ldGhvZHNcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5sZXQgZGF5X29mX3dlZWsgPVxuICBsZXQgdGFibGUgPSBbfCAwOyAzOyAyOyA1OyAwOyAzOyA1OyAxOyA0OyA2OyAyOyA0IHxdIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG0gPSBNb250aC50b19pbnQgKG1vbnRoIHQpIGluXG4gICAgbGV0IHkgPSBpZiBJbnQuKCA8ICkgbSAzIHRoZW4geWVhciB0IC0gMSBlbHNlIHllYXIgdCBpblxuICAgIERheV9vZl93ZWVrLm9mX2ludF9leG5cbiAgICAgICgoeSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMCkgKyB0YWJsZS4obSAtIDEpICsgZGF5IHQpICUgNylcbjs7XG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3JkaW5hbF9kYXRlICopXG5sZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA1OTsgOTA7IDEyMDsgMTUxOyAxODE7IDIxMjsgMjQzOyAyNzM7IDMwNDsgMzM0IHxdXG5sZXQgbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDYwOyA5MTsgMTIxOyAxNTI7IDE4MjsgMjEzOyAyNDQ7IDI3NDsgMzA1OyAzMzUgfF1cblxubGV0IG9yZGluYWxfZGF0ZSB0ID1cbiAgbGV0IHRhYmxlID1cbiAgICBpZiBpc19sZWFwX3llYXIgfnllYXI6KHllYXIgdCkgdGhlbiBsZWFwX3llYXJfdGFibGUgZWxzZSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGluXG4gIGxldCBvZmZzZXQgPSB0YWJsZS4oTW9udGgudG9faW50IChtb250aCB0KSAtIDEpIGluXG4gIGRheSB0ICsgb2Zmc2V0XG47O1xuXG5sZXQgbGFzdF93ZWVrX29mX3llYXIgeSA9XG4gIGxldCBmaXJzdF9vZl95ZWFyID0gY3JlYXRlX2V4biB+eSB+bTpKYW4gfmQ6MSBpblxuICBsZXQgaXMgdCBkYXkgPSBEYXlfb2Zfd2Vlay5lcXVhbCAoZGF5X29mX3dlZWsgdCkgZGF5IGluXG4gIGlmIGlzIGZpcnN0X29mX3llYXIgVGh1IHx8IChpc19sZWFwX3llYXIgfnllYXI6eSAmJiBpcyBmaXJzdF9vZl95ZWFyIFdlZClcbiAgdGhlbiA1M1xuICBlbHNlIDUyXG47O1xuXG4oKiBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlIG9yIElTTyA4NjAxIGZvciB0aGUgZGV0YWlscyBvZiB0aGlzXG4gICBhbGdvcml0aG0uXG5cbiAgIFVzZXMgYSBbfmZdIGFyZ3VtZW50IHRvIGF2b2lkIGFsbG9jYXRpbmcgYSB0dXBsZSB3aGVuIGNhbGxlZCBieSBbd2Vla19udW1iZXJdLlxuKilcbmxldCBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mID1cbiAgbGV0IG9yZGluYWwgPSBvcmRpbmFsX2RhdGUgdCBpblxuICBsZXQgd2Vla2RheSA9IERheV9vZl93ZWVrLmlzb184NjAxX3dlZWtkYXlfbnVtYmVyIChkYXlfb2Zfd2VlayB0KSBpblxuICAoKiBbb3JkaW5hbCAtIHdlZWtkYXkgKyA0XSBpcyB0aGUgb3JkaW5hbCBvZiB0aGlzIHdlZWsncyBUaHVyc2RheSwgdGhlbiAobiArIDYpIC8gNyBpc1xuICAgICBkaXZpc2lvbiBieSA3IHJvdW5kaW5nIHVwICopXG4gIGxldCB3ZWVrID0gKG9yZGluYWwgLSB3ZWVrZGF5ICsgMTApIC8gNyBpblxuICBsZXQgeWVhciA9IHllYXIgdCBpblxuICBpZiBJbnQuKCA8ICkgd2VlayAxXG4gIHRoZW4gZiB+d2VlazoobGFzdF93ZWVrX29mX3llYXIgKHllYXIgLSAxKSkgfnllYXI6KHllYXIgLSAxKVxuICBlbHNlIGlmIEludC4oID4gKSB3ZWVrIChsYXN0X3dlZWtfb2ZfeWVhciB5ZWFyKVxuICB0aGVuIGYgfndlZWs6MSB+eWVhcjooeWVhciArIDEpXG4gIGVsc2UgZiB+d2VlayB+eWVhclxuOztcblxubGV0IHdlZWtfbnVtYmVyX2FuZF95ZWFyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXIgLT4gd2VlaywgeWVhcilcbmxldCB3ZWVrX251bWJlciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyOl8gLT4gd2VlaylcbmxldCBpc193ZWVrZW5kIHQgPSBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IChkYXlfb2Zfd2VlayB0KVxubGV0IGlzX3dlZWtkYXkgdCA9IG5vdCAoaXNfd2Vla2VuZCB0KVxubGV0IGlzX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID0gaXNfd2Vla2RheSB0ICYmIG5vdCAoaXNfaG9saWRheSB0KVxuXG5sZXQgcmVjIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyID1cbiAgaWYgdDEgPCB0MlxuICB0aGVuIC1kaWZmX3dlZWtlbmRfZGF5cyB0MiB0MVxuICBlbHNlIChcbiAgICAoKiBCYXNpYyBkYXRlIGRpZmYgKilcbiAgICBsZXQgZGlmZiA9IGRpZmYgdDEgdDIgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgU2F0dXJkYXkgLT4gU3VuZGF5IGNyb3NzaW5ncyAqKVxuICAgIGxldCBkMSA9IGRheV9vZl93ZWVrIHQxIGluXG4gICAgbGV0IGQyID0gZGF5X29mX3dlZWsgdDIgaW5cbiAgICBsZXQgbnVtX3NhdHN1bl9jcm9zc2luZ3MgPVxuICAgICAgaWYgSW50LiggPCApIChEYXlfb2Zfd2Vlay50b19pbnQgZDEpIChEYXlfb2Zfd2Vlay50b19pbnQgZDIpXG4gICAgICB0aGVuIDEgKyAoZGlmZiAvIDcpXG4gICAgICBlbHNlIGRpZmYgLyA3XG4gICAgaW5cbiAgICAobnVtX3NhdHN1bl9jcm9zc2luZ3MgKiAyKVxuICAgICsgKGlmIERheV9vZl93ZWVrLiggPSApIGQyIERheV9vZl93ZWVrLlN1biB0aGVuIDEgZWxzZSAwKVxuICAgICsgaWYgRGF5X29mX3dlZWsuKCA9ICkgZDEgRGF5X29mX3dlZWsuU3VuIHRoZW4gLTEgZWxzZSAwKVxuOztcblxubGV0IGRpZmZfd2Vla2RheXMgdDEgdDIgPSBkaWZmIHQxIHQyIC0gZGlmZl93ZWVrZW5kX2RheXMgdDEgdDJcblxubGV0IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXAgbiA9XG4gIGxldCBzdGVwID0gaWYgSW50LiggPj0gKSBuIDAgdGhlbiAxIGVsc2UgLTEgaW5cbiAgbGV0IHJlYyBsb29wIHQgayA9XG4gICAgbGV0IHRfbmV4dCA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICAgIGlmIHNraXAgdCB0aGVuIGxvb3AgdF9uZXh0IGsgZWxzZSBpZiBJbnQuKCA9ICkgayAwIHRoZW4gdCBlbHNlIGxvb3AgdF9uZXh0IChrIC0gMSlcbiAgaW5cbiAgbG9vcCB0IChhYnMgbilcbjs7XG5cbmxldCByZWMgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgaWYgY29uZGl0aW9uIHQgdGhlbiB0IGVsc2UgZmlyc3RfZGF5X3NhdGlzZnlpbmcgKGFkZF9kYXlzIHQgc3RlcCkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcCB+Y29uZGl0aW9uID1cbiAgbGV0IG5leHRfZGF5ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIG5leHRfZGF5IH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBmb2xsb3dpbmdfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcHJldmlvdXNfd2Vla2RheSB0ID0gbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5sZXQgcm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxuXG5sZXQgcm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgcm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IGFkZF93ZWVrZGF5cyB0IG4gPSBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwOmlzX3dlZWtlbmQgblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF93ZWVrZGF5c1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXMgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgdCBuIH5za2lwOihmdW4gZCAtPiBpc193ZWVrZW5kIGQgfHwgaXNfaG9saWRheSBkKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX2J1c2luZXNzX2RheXNcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2ZvcndhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfYmFja3dhcmQgdCB+aXNfaG9saWRheSBuID1cbiAgYWRkX2RheXNfc2tpcHBpbmcgKHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGRhdGVzX2JldHdlZW4gfm1pbjp0MSB+bWF4OnQyID1cbiAgbGV0IHJlYyBsb29wIHQgbCA9IGlmIHQgPCB0MSB0aGVuIGwgZWxzZSBsb29wIChhZGRfZGF5cyB0ICgtMSkpICh0IDo6IGwpIGluXG4gIGxvb3AgdDIgW11cbjs7XG5cbmxldCB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCA9XG4gIGxldCBhbGxfZGF0ZXMgPSBkYXRlc19iZXR3ZWVuIH5taW4gfm1heCBpblxuICBPcHRpb24udmFsdWVfbWFwIChMaXN0LmhkIGFsbF9kYXRlcykgfmRlZmF1bHQ6W10gfmY6KGZ1biBmaXJzdF9kYXRlIC0+XG4gICAgKCogdG8gYXZvaWQgYSBzeXN0ZW0gY2FsbCBvbiBldmVyeSBkYXRlLCB3ZSBqdXN0IGdldCB0aGUgd2Vla2RheSBmb3IgdGhlIGZpcnN0XG4gICAgICAgZGF0ZSBhbmQgdXNlIGl0IHRvIGdldCBhbGwgdGhlIG90aGVyIHdlZWtkYXlzICopXG4gICAgbGV0IGZpcnN0X3dlZWtkYXkgPSBkYXlfb2Zfd2VlayBmaXJzdF9kYXRlIGluXG4gICAgbGV0IGRhdGVfYW5kX3dlZWtkYXlzID1cbiAgICAgIExpc3QubWFwaSBhbGxfZGF0ZXMgfmY6KGZ1biBpIGRhdGUgLT4gZGF0ZSwgRGF5X29mX3dlZWsuc2hpZnQgZmlyc3Rfd2Vla2RheSBpKVxuICAgIGluXG4gICAgTGlzdC5maWx0ZXJfbWFwIGRhdGVfYW5kX3dlZWtkYXlzIH5mOihmdW4gKGRhdGUsIHdlZWtkYXkpIC0+XG4gICAgICBpZiBEYXlfb2Zfd2Vlay5pc19zdW5fb3Jfc2F0IHdlZWtkYXkgdGhlbiBOb25lIGVsc2UgU29tZSBkYXRlKSlcbjs7XG5cbmxldCBidXNpbmVzc19kYXRlc19iZXR3ZWVuIH5taW4gfm1heCB+aXNfaG9saWRheSA9XG4gIHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4IHw+IExpc3QuZmlsdGVyIH5mOihmdW4gZCAtPiBub3QgKGlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIgdCB+b246ZG93ID1cbiAgbGV0IGRvdyA9IERheV9vZl93ZWVrLnRvX2ludCBkb3cgaW5cbiAgbGV0IHRwbHVzMSA9IGFkZF9kYXlzIHQgMSBpblxuICBsZXQgY3VyID0gRGF5X29mX3dlZWsudG9faW50IChkYXlfb2Zfd2VlayB0cGx1czEpIGluXG4gIGxldCBkaWZmID0gKGRvdyArIDcgLSBjdXIpIG1vZCA3IGluXG4gIGFkZF9kYXlzIHRwbHVzMSBkaWZmXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgb3BlbiBRdWlja2NoZWNrXG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgZDEgZDIgPVxuICAgIGlmIGQxID4gZDJcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiRGF0ZS5nZW5fdW5pZm9ybV9pbmNsOiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgICAgfmxvd2VyX2JvdW5kOihkMSA6IHQpXG4gICAgICAgICAgICB+dXBwZXJfYm91bmQ6KGQyIDogdCldO1xuICAgIEdlbmVyYXRvci5tYXAgKEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGRpZmYgZDIgZDEpKSB+ZjooZnVuIGRheXMgLT4gYWRkX2RheXMgZDEgZGF5cylcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgZDEgZDIgPVxuICAgIEdlbmVyYXRvci53ZWlnaHRlZF91bmlvblxuICAgICAgWyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMTsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDI7IDE4LiwgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiBdXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgKG9mX3N0cmluZyBcIjE5MDAtMDEtMDFcIikgKG9mX3N0cmluZyBcIjIxMDAtMDEtMDFcIilcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBPYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplOl8gfmhhc2ggLT4gaGFzaF9mb2xkX3QgaGFzaCB0KVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFNocmlua2VyLmVtcHR5ICgpXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JcbmxldCBnZW5faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEZvcl9xdWlja2NoZWNrLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBsZWFwX3llYXJfdGFibGUgPSBsZWFwX3llYXJfdGFibGVcbiAgbGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBub25fbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBvcmRpbmFsX2RhdGUgPSBvcmRpbmFsX2RhdGVcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX2dlbmVyYXRvciBxdWlja2NoZWNrX2dlbmVyYXRvcilcbiAgICAgIH5mOm9mX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKE9wdGlvbi5xdWlja2NoZWNrX3Nocmlua2VyIHF1aWNrY2hlY2tfc2hyaW5rZXIpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgICAgIH5mX2ludmVyc2U6dG9fb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIub2ZfaGFzaFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIGVuZClcbiAgOztcblxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgc3VmZml4ZXMgY2hhciA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgWyBzcHJpbnRmIFwiJWNcIiBjaGFyOyBzcHJpbnRmIFwiJWNNXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk1cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTS5cIiBjaGFyIF1cbiAgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihmdW4gc3VmZml4IC0+XG4gICAgWyBTdHJpbmcubG93ZXJjYXNlIHN1ZmZpeDsgU3RyaW5nLnVwcGVyY2FzZSBzdWZmaXggXSlcbjs7XG5cbmxldCBhbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdBJylcbmxldCBwbV9zdWZmaXhlcyA9IGxhenkgKHN1ZmZpeGVzICdQJylcblxuKCogQXZvaWRzIHRoZSBhbGxvY2F0aW9uIHRoYXQgW0xpc3QuZmluZF0gd291bGQgZW50YWlsIGluIGJvdGggYm90aCB0aGUgY2xvc3VyZSBpbnB1dCBhbmRcbiAgIHRoZSBvcHRpb24gb3V0cHV0LiAqKVxubGV0IHJlYyBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXMgPVxuICBtYXRjaCBzdWZmaXhlcyB3aXRoXG4gIHwgc3VmZml4IDo6IHN1ZmZpeGVzIC0+XG4gICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeCB0aGVuIHN1ZmZpeCBlbHNlIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlc1xuICB8IFtdIC0+IFwiXCJcbjs7XG5cbmxldCBoYXNfY29sb24gc3RyaW5nIHBvcyB+dW50aWwgPSBwb3MgPCB1bnRpbCAmJiBDaGFyLmVxdWFsICc6JyBzdHJpbmcuW3Bvc11cblxuKCogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIHdoYXQgd2UgbWVhbnQgYnkgXCJkZWNpbWFsIHBvaW50XCIsIGJlY2F1c2UgaW4gc29tZSBzdHJpbmcgZm9ybWF0c1xuICAgaXQgbWVhbnMgJy4nIGFuZCBpbiBzb21lIGl0IGNhbiBiZSAnLicgb3IgJywnLiBUaGVyZSdzIG5vIHBhcnRpY3VsYXIgZGVtYW5kIGZvciBzdXBwb3J0XG4gICBmb3IgJywnLCBhbmQgdXNpbmcganVzdCAnLicgbGV0cyB1cyB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gZm9yIHRoZSBkZWNpbWFsIHN1YnN0cmluZ1xuICAgd2l0aG91dCBhbnkgc3Vic3RpdHV0aW9ucy4gKilcbmxldCBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvcyA9IENoYXIuZXF1YWwgJy4nIHN0cmluZy5bcG9zXVxuXG5sZXQgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyBsZW4gPVxuICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgJyAnIHN0cmluZy5bbGVuIC0gMV0gdGhlbiBsZW4gLSAxIGVsc2UgbGVuXG47O1xuXG5sZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lLk9mZGF5OiBpbnZhbGlkIHN0cmluZ1wiIHN0cmluZyByZWFzb25dXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgfCAnXycgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICBzdHJpbmdcbiAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhbmQvb3IgdW5kZXJzY29yZXMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIHBvcyB+dW50aWwgPVxuICBsZXQgbm9uemVybyA9IHJlZiBmYWxzZSBpblxuICBmb3IgcG9zID0gcG9zIHRvIHVudGlsIC0gMSBkb1xuICAgIG1hdGNoIHN0cmluZy5bcG9zXSB3aXRoXG4gICAgfCAnMCcgLT4gKClcbiAgICB8ICcxJyAuLiAnOScgLT4gbm9uemVybyA6PSB0cnVlXG4gICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IHBhcnNlIHN0cmluZyB+ZiA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBsZXQgYW1fb3JfcG0sIHVudGlsID1cbiAgICAoKiBkaXNjcmltaW5hdGUgYW1vbmcgQU0gKDE6MzBhbSksIFBNICgxMjozMDowMCBQLk0uKSwgb3IgMjQtaHIgKDEzOjAwKS4gKilcbiAgICBtYXRjaFxuICAgICAgKCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgYW1fc3VmZml4ZXMpXG4gICAgICAsIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBwbV9zdWZmaXhlcykgKVxuICAgIHdpdGhcbiAgICB8IFwiXCIsIFwiXCIgLT4gYGhyXzI0LCBsZW5cbiAgICB8IGFtLCBcIlwiIC0+IGBocl9BTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBhbSlcbiAgICB8IFwiXCIsIHBtIC0+IGBocl9QTSwgZGVjcmVtZW50X2xlbmd0aF9pZl9lbmRzX2luX3NwYWNlIHN0cmluZyAobGVuIC0gU3RyaW5nLmxlbmd0aCBwbSlcbiAgICB8IF8sIF8gLT4gYGhyXzI0LCBhc3NlcnQgZmFsc2VcbiAgICAoKiBJbW1lZGlhdGVseSBhYm92ZSwgaXQgbWF5IHNlZW0gbm9uc2Vuc2ljYWwgdG8gd3JpdGUgW2Bocl8yNCwgYXNzZXJ0IGZhbHNlXSB3aGVuIHRoZVxuICAgICAgIFtgaHJfMjRdIGNhbiBuZXZlciBiZSByZXR1cm5lZC4gV2UgZG8gdGhpcyB0byBoZWxwIHRoZSBjb21waWxlciBmaWd1cmUgb3V0IG5ldmVyIHRvXG4gICAgICAgYWxsb2NhdGUgYSB0dXBsZSBpbiB0aGlzIGNvZGU6IHRoZSBbbGV0XSBwYXR0ZXJuIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZSBhbmQgZXZlcnlcbiAgICAgICBtYXRjaCBjbGF1c2UgaXMgc3ludGFjdGljYWxseSBhIHR1cGxlLiAqKVxuICBpblxuICBsZXQgcG9zID0gMCBpblxuICBsZXQgcG9zLCBociwgZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgPVxuICAgICgqIGUuZy4gXCIxOjAwXCIgb3IgXCIxOjAwOjAwXCIgKilcbiAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAxKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyOjAwXCIgb3IgXCIxMjowMDowMFwiICopXG4gICAgZWxzZSBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAzLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjFhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAxID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAxLCByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTJhbVwiOyBtdXN0IGhhdmUgQU0gb3IgUE0gKGNoZWNrZWQgYmVsb3cpICopXG4gICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICB0aGVuXG4gICAgICBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMDkzMFwiOyBtdXN0IG5vdCBoYXZlIHNlY29uZHMgKilcbiAgICBlbHNlIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kc1xuICBpblxuICBsZXQgcG9zLCBtaW4sIGV4cGVjdF9zZWNvbmRzID1cbiAgICBtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiICopXG4gICAgICBwb3MsIDAsIGZhbHNlXG4gICAgfCAoYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMpIGFzIG1heWJlX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBoYXNfY29sb24gc3RyaW5nIChwb3MgKyAyKSB+dW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCBwb3MgKyAzXG4gICAgICAgICwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuICAgICAgICAsIG1hdGNoIG1heWJlX3NlY29uZHMgd2l0aFxuICAgICAgICB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+IHRydWVcbiAgICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgLT5cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGVuZCBvZiBzdHJpbmcgYWZ0ZXIgbWludXRlc1wiIClcbiAgICAgICAgKCogZS5nLiBcIjEyOjAwXCIgKilcbiAgICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgICB0aGVuIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGNvbG9uIG9yIGFtL3BtIHN1ZmZpeCB3aXRoIG9wdGlvbmFsIHNwYWNlIGFmdGVyIG1pbnV0ZXNcIlxuICBpblxuICBsZXQgc2VjLCBzdWJzZWNfcG9zLCBzdWJzZWNfbGVuLCBzdWJzZWNfbm9uemVybyA9XG4gICAgbWF0Y2ggZXhwZWN0X3NlY29uZHMgd2l0aFxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgb3IgXCIxMjowMFwiICopXG4gICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgdGhlbiAwLCBwb3MsIDAsIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFRoaXMgY2FzZSBpcyBhY3R1YWxseSB1bnJlYWNoYWJsZSwgYmFzZWQgb24gdGhlIHZhcmlvdXMgd2F5cyB0aGF0XG4gICAgICAgICAgIFtleHBlY3Rfc2Vjb25kc10gY2FuIGVuZCB1cCBmYWxzZS4gKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJCVUc6IGRpZCBub3QgZXhwZWN0IHNlY29uZHMsIGJ1dCBmb3VuZCB0aGVtXCJcbiAgICB8IHRydWUgLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICBpZiBwb3MgKyAyID4gdW50aWxcbiAgICAgIHRoZW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjBcIiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIHR3byBkaWdpdHMgb2Ygc2Vjb25kc1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgaW5cbiAgICAgICAgbGV0IHBvcyA9IHBvcyArIDIgaW5cbiAgICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgICAgdGhlbiBzZWMsIHBvcywgMCwgZmFsc2UgKCogZS5nLiBcIjEyOjAwOjAwLjEyM1wiICopXG4gICAgICAgIGVsc2UgaWYgcG9zIDwgdW50aWwgJiYgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3NcbiAgICAgICAgdGhlblxuICAgICAgICAgICggc2VjXG4gICAgICAgICAgLCBwb3NcbiAgICAgICAgICAsIHVudGlsIC0gcG9zXG4gICAgICAgICAgLCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgKHBvcyArIDEpIH51bnRpbCApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGVjaW1hbCBwb2ludCBvciBhbS9wbSBzdWZmaXggYWZ0ZXIgc2Vjb25kc1wiKVxuICBpblxuICBsZXQgaHIgPVxuICAgICgqIE5CLiBXZSBhbHJlYWR5IGtub3cgW2hyXSBpcyBub24tbmVnYXRpdmUsIGJlY2F1c2UgaXQncyB0aGUgcmVzdWx0IG9mXG4gICAgICAgW3JlYWRfMl9kaWdpdF9pbnRdLiAqKVxuICAgIG1hdGNoIGFtX29yX3BtIHdpdGhcbiAgICB8IGBocl9BTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwYW1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAwXG4gICAgICBlbHNlIGhyXG4gICAgfCBgaHJfUE0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMHBtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMTJcbiAgICAgIGVsc2UgaHIgKyAxMlxuICAgIHwgYGhyXzI0IC0+XG4gICAgICAobWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyB3aXRob3V0IG1pbnV0ZXMgb3IgQU0vUE1cIlxuICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT5cbiAgICAgICAgIGlmIGhyID4gMjRcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgIGVsc2UgaWYgaHIgPSAyNCAmJiAobWluID4gMCB8fCBzZWMgPiAwIHx8IHN1YnNlY19ub256ZXJvKVxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInRpbWUgaXMgcGFzdCAyNDowMDowMFwiICgqIGUuZy4gXCIxMzowMDowMFwiICopXG4gICAgICAgICBlbHNlIGhyKVxuICBpblxuICBsZXQgbWluID1cbiAgICBpZiBtaW4gPiA1OSB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibWludXRlcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBtaW5cbiAgaW5cbiAgbGV0IHNlYyA9XG4gICAgaWYgc2VjID4gNjAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNlY29uZHMgb3V0IG9mIGJvdW5kc1wiIGVsc2Ugc2VjXG4gIGluXG4gIGxldCBzdWJzZWNfbGVuID0gaWYgc2VjID0gNjAgfHwgbm90IHN1YnNlY19ub256ZXJvIHRoZW4gMCBlbHNlIHN1YnNlY19sZW4gaW5cbiAgZiBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuOztcblxubGV0IHBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZiA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgbWF0Y2hcbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KFN0cmluZy5sZW5ndGggc3RyKVxuICAgIHdpdGhcbiAgICB8IFJlc3VsdC5PayB6IC0+IHpcbiAgICB8IFJlc3VsdC5FcnJvciBzIC0+XG4gICAgICBmYWlsd2l0aGYgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZDogJXNcIiAoRXJyb3IudG9fc3RyaW5nX21hY2ggcykgKClcbiAgaW5cbiAgaWYgbGVuIDwgMlxuICB0aGVuIGZhaWx3aXRoIFwibGVuIDwgMlwiXG4gIGVsc2UgKFxuICAgIGxldCBociA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MgaW5cbiAgICBpZiBociA+IDI0IHRoZW4gZmFpbHdpdGggXCJob3VyID4gMjRcIjtcbiAgICBpZiBsZW4gPSAyXG4gICAgdGhlbiBmIHN0ciB+aHIgfm1pbjowIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgZWxzZSBpZiBsZW4gPCA1XG4gICAgdGhlbiBmYWlsd2l0aCBcIjIgPCBsZW4gPCA1XCJcbiAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDJdICc6JylcbiAgICB0aGVuIGZhaWx3aXRoIFwiZmlyc3QgY29sb24gbWlzc2luZ1wiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgMykgaW5cbiAgICAgIGlmIG1pbiA+PSA2MCB0aGVuIGZhaWx3aXRoIFwibWludXRlID4gNjBcIjtcbiAgICAgIGlmIGhyID0gMjQgJiYgbWluIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBtaW51dGVcIjtcbiAgICAgIGlmIGxlbiA9IDVcbiAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgIGVsc2UgaWYgbGVuIDwgOFxuICAgICAgdGhlbiBmYWlsd2l0aCBcIjUgPCBsZW4gPCA4XCJcbiAgICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgNV0gJzonKVxuICAgICAgdGhlbiBmYWlsd2l0aCBcInNlY29uZCBjb2xvbiBtaXNzaW5nXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvczoocG9zICsgNikgaW5cbiAgICAgICAgKCogc2Vjb25kIGNhbiBiZSA2MCBpbiB0aGUgY2FzZSBvZiBhIGxlYXAgc2Vjb25kLiBVbmZvcnR1bmF0ZWx5LCB3aGF0IHdpdGhcbiAgICAgICAgICAgbm9uLWhvdXItbXVsdGlwbGUgdGltZXpvbmUgb2Zmc2V0cywgd2UgY2FuJ3Qgc2F5IGFueXRoaW5nIGFib3V0IHdoYXRcbiAgICAgICAgICAgdGhlIGhvdXIgb3IgbWludXRlIG11c3QgYmUgaW4gdGhhdCBjYXNlICopXG4gICAgICAgIGlmIHNlYyA+IDYwIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBzZWNvbmQ6ICVpXCIgc2VjICgpO1xuICAgICAgICBpZiBociA9IDI0ICYmIHNlYyA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc2Vjb25kc1wiO1xuICAgICAgICBpZiBsZW4gPSA4XG4gICAgICAgIHRoZW4gZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICAgIGVsc2UgaWYgbGVuID0gOVxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwibGVuZ3RoID0gOVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHN0ci5bcG9zICsgOF0gd2l0aFxuICAgICAgICAgIHwgJy4nIHwgJywnIC0+XG4gICAgICAgICAgICBsZXQgc3Vic2VjX3BvcyA9IHBvcyArIDggaW5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfbGVuID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVyb1xuICAgICAgICAgICAgICAgICAgc3RyXG4gICAgICAgICAgICAgICAgICAoc3Vic2VjX3BvcyArIDEpXG4gICAgICAgICAgICAgICAgICB+dW50aWw6KHBvcyArIGxlbilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBzZWMgPSA2MCAtPiAwXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIGhyID0gMjQgLT4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gc3Vic2Vjb25kc1wiXG4gICAgICAgICAgICAgIHwgXyAtPiBsZW4gLSA4XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZiBzdHIgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlblxuICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIm1pc3Npbmcgc3Vic2Vjb25kIHNlcGFyYXRvclwiKSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdC5TdGRcbmluY2x1ZGUgSGFzaC5CdWlsdGluXG5pbmNsdWRlIFN0YWJsZV93aXRuZXNzLkV4cG9ydFxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgdmVyaWZ5IHQgPVxuICAgICAgbWF0Y2ggU3RkbGliLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgKCogRm9yIFtzXSB3aGljaCBpcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGZpbml0ZSBmbG9hdCwgaW4gZWl0aGVyIGRlY2ltYWwgb3JcbiAgICAgICBzY2llbnRpZmljIG5vdGF0aW9uLCBzaGlmdCB0aGUgZGVjaW1hbCBwb2ludCBvciBhZGp1c3QgdGhlIHNjaWVudGlmaWMgbm90YXRpb25cbiAgICAgICBleHBvbmVudCBieSBbYnldLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIG11bHRpcGx5aW5nIHRoZSBudW1iZXIgYnkgWzEwKipieV0uXG5cbiAgICAgICBUaGUgb3V0cHV0IHdpbGwgYmUgaW4gc2NpZW50aWZpYyBub3RhdGlvbiBpZmYgdGhlIGlucHV0IHdhcywgZXhjZXB0IHdoZW4gdGhlXG4gICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGFmdGVyIHRoZSBzaGlmdCBiZWNvbWVzIDAuXG5cbiAgICAgICBObyBlZmZvcnQgaXMgbWFkZSB0byBub3JtYWxpemUgdGhlIHNjaWVudGlmaWMgbm90YXRpb24gaWYgaXQgd2FzIG5vdCBub3JtYWxpemVkLCBvclxuICAgICAgIHRvIHN3aXRjaCB0by9mcm9tIHNjaWVudGlmaWMgbm90YXRpb24gdG8gaGVscCByZWFkYWJpbGl0eSAoZXhjZXB0IGZvciB0aGUgRTAgY2FzZVxuICAgICAgIG1lbnRpb25lZCBhYm92ZSkuICopXG4gICAgbGV0IHJlYyBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5ID1cbiAgICAgIGlmIGJ5ID0gMFxuICAgICAgdGhlbiBzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHMgPSBTdHJpbmcubHN0cmlwIHMgaW5cbiAgICAgICAgbGV0IGQsIGUsIHplcm8sIHVuZGVyc2NvcmUgPVxuICAgICAgICAgICgqIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50IFtkXSwgdGhlIGV4cG9uZW50IHNpZ24gW2VdLCBhbmQgY2hlY2tcbiAgICAgICAgICAgICBpZiB0aGVyZSBhcmUgYW55IG5vbi16ZXJvIHNpZ25pZmljYW50IGRpZ2l0cyAob25seSBiZWZvcmUgdGhlIGV4cG9uZW50IHNpZ24pXG4gICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgaXMgZXF1YWwgdG8gMC4wICopXG4gICAgICAgICAgbGV0IGQgPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBlID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgbm90X3plcm8gPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgdW5kZXJzY29yZSA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSAhZFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiRXJyb3IgcGFyc2luZyBQZXJjZW50LnQ6IHRvbyBtYW55IGRlY2ltYWwgcG9pbnRzIGluICclcydcIiBzICgpO1xuICAgICAgICAgICAgICBkIDo9IFNvbWUgaVxuICAgICAgICAgICAgfCAnZScgfCAnRScgLT5cbiAgICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgIWVcbiAgICAgICAgICAgICAgdGhlbiBmYWlsd2l0aGYgXCJFcnJvciBwYXJzaW5nIFBlcmNlbnQudDogdG9vIG1hbnkgRXMgaW4gJyVzJ1wiIHMgKCk7XG4gICAgICAgICAgICAgIGUgOj0gU29tZSBpXG4gICAgICAgICAgICB8ICctJyB8ICcrJyB8ICcwJyAtPiAoKVxuICAgICAgICAgICAgfCAnXycgLT4gdW5kZXJzY29yZSA6PSB0cnVlXG4gICAgICAgICAgICB8ICcxJyAuLiAnOScgLT4gaWYgT3B0aW9uLmlzX25vbmUgIWUgdGhlbiBub3RfemVybyA6PSB0cnVlXG4gICAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZCBjaGFyYWN0ZXIgd2hlbiBwYXJzaW5nIFBlcmNlbnQudDogJyVjJyBpbiAnJXMnXCIgYyBzICgpXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICAhZCwgIWUsIG5vdCAhbm90X3plcm8sICF1bmRlcnNjb3JlXG4gICAgICAgIGluXG4gICAgICAgIGlmIHVuZGVyc2NvcmVcbiAgICAgICAgdGhlbiBzaGlmdF9kZWNpbWFsX3BvaW50IChTdHJpbmcuZmlsdGVyIHMgfmY6KGZ1biBjIC0+IENoYXIuKGMgPD4gJ18nKSkpIH5ieVxuICAgICAgICBlbHNlIGlmIHplcm9cbiAgICAgICAgdGhlbiBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgICAoKiBbc10gaXMgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4gIFNpbXBseSBhZGp1c3QgdGhlIGV4cG9uZW50IGFmdGVyICdlJy4gKilcbiAgICAgICAgICAgIGxldCBleHAgPSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuZHJvcF9wcmVmaXggcyAoZSArIDEpKSBpblxuICAgICAgICAgICAgbGV0IGV4cCA9IGV4cCArIGJ5IGluXG4gICAgICAgICAgICBpZiBleHAgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFdlIGVuZCB1cCB3aXRoIGV4cG9uZW50IDAsIHNvIHdlIGp1c3Qgc2tpcCB0aGUgXCJlXCIgYWx0b2dldGhlciAqKVxuICAgICAgICAgICAgICBTdHJpbmcucHJlZml4IHMgZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICAgICAgWyBTdHJpbmcucHJlZml4IHMgKGUgKyAxKVxuICAgICAgICAgICAgICAgIDsgKGlmIGV4cCA+IDAgdGhlbiBcIitcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgICAgOyBJbnQudG9fc3RyaW5nIGV4cFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICgqIFtzXSBpcyBpbiBkZWNpbWFsIG5vdGF0aW9uLiAgU3RhcnQgYnkgZHJvcHBpbmcgdGhlIGxlYWRpbmcgc2lnbiBpZiB0aGVyZSBpc1xuICAgICAgICAgICAgICAgb25lLiAgV2UnbGwgcmUtYWRkIGl0IGF0IHRoZSBlbmQgdG8ga2VlcCB0aGUgcmVzdCBvZiB0aGUgY29kZSBzaW1wbGVyLiAqKVxuICAgICAgICAgICAgbGV0IG5lZyA9IENoYXIuKCA9ICkgcy5bMF0gJy0nIGluXG4gICAgICAgICAgICBsZXQgc2lnbmVkID0gbmVnIHx8IENoYXIuKCA9ICkgcy5bMF0gJysnIGluXG4gICAgICAgICAgICBsZXQgcyA9IGlmIHNpZ25lZCB0aGVuIFN0cmluZy5kcm9wX3ByZWZpeCBzIDEgZWxzZSBzIGluXG4gICAgICAgICAgICBsZXQgcywgYnkgPVxuICAgICAgICAgICAgICAoKiBOZXh0LCBzY3JhdGNoIHRoZSBkZWNpbWFsIHBvaW50IGlmIHRoZXJlIGlzIG9uZSwgc28gdGhhdCBbc10gYmVjb21lcyBhblxuICAgICAgICAgICAgICAgICBpbnRlZ2VyLCBhbmQgYWRqdXN0IFtieV0gYWNjb3JkaW5nbHkgdG8ga2VlcCB0aGUgcmVzdWx0IHVuY2hhbmdlZC4gIFdlXG4gICAgICAgICAgICAgICAgIGFsc28ga25vdyB0aGF0IFtzIDw+IDAuMF0gc28gd2UgcmVtb3ZlIGxlYWRpbmcgemVyb3MuICBXZSBtYXkgYmUgd2FzdGluZ1xuICAgICAgICAgICAgICAgICBzb21lIHdvcmsgYmVjYXVzZSB3ZSBtYXkgaGF2ZSB0byBhZGQgdGhlbSBiYWNrIGJlbG93LCBidXQgdGhlIGNvZGUgaXNcbiAgICAgICAgICAgICAgICAgc2ltcGxlciB0aGF0IHdheS4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzLCBieVxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgICAgICgqIFdlIGNhbGN1bGF0ZWQgW2RdIGJlZm9yZSByZW1vdmluZyB0aGUgXCItXCIgc2lnbiwgc28gd2UgbWF5IGhhdmUgdG9cbiAgICAgICAgICAgICAgICAgICAgIGFkanVzdCBpdCBub3cgKilcbiAgICAgICAgICAgICAgICAgIGQgLSBpZiBzaWduZWQgdGhlbiAxIGVsc2UgMFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHN1ZiA9IFN0cmluZy5kcm9wX3ByZWZpeCBzIChkICsgMSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgcHJlZiA9IFN0cmluZy5wcmVmaXggcyBkIGluXG4gICAgICAgICAgICAgICAgbGV0IHMgPSBwcmVmIF4gc3VmIHw+IFN0cmluZy5sc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICAgIGxldCBieSA9IGJ5IC0gU3RyaW5nLmxlbmd0aCBzdWYgaW5cbiAgICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIFJlbW92ZSB0cmFpbGluZyB6ZXJvcyB0b28gKilcbiAgICAgICAgICAgIGxldCBzLCBieSA9XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgbGV0IHMgPSBzIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KENoYXIuKCA9ICkgJzAnKSBpblxuICAgICAgICAgICAgICBsZXQgYnkgPSBieSArIGxlbiAtIFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBzLCBieVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBieSA9IDBcbiAgICAgICAgICAgICAgdGhlbiBzXG4gICAgICAgICAgICAgIGVsc2UgaWYgYnkgPiAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAoKiBDYXNlIDE6IFtzXSBpcyBhbiBpbnRlZ2VyIHdoaWNoIHdlIG5lZWQgdG8gZnVydGhlciBtdWx0aXBseSBieSBhXG4gICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgcG93ZXIgb2YgMTAsIHNvIHdlIGp1c3QgYWRkIDBzIGF0IHRoZSBlbmQuICopXG4gICAgICAgICAgICAgICAgcyBeIFN0cmluZy5tYWtlIGJ5ICcwJ1xuICAgICAgICAgICAgICBlbHNlIGlmIGJ5ID4gLWxlblxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgKCogQ2FzZSAyOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhIHBvc2l0aXZlIHBvd2VyXG4gICAgICAgICAgICAgICAgICAgb2YgMTAsIGFuZCBpdCBoYXMgZW5vdWdoIGRpZ2l0cyB0aGF0IHdlIGNhbiBqdXN0IGluc2VydCB0aGUgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgYmV0d2VlbiB0aGVtLiAqKVxuICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBTdHJpbmcuZHJvcF9zdWZmaXggcyAoLWJ5KTsgXCIuXCI7IFN0cmluZy5zdWZmaXggcyAoLWJ5KSBdXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAoKiBDYXNlIDMgKGJ5IDw9IC1sZW4pOiBbc10gaXMgYW4gaW50ZWdlciB3aGljaCB3ZSBuZWVkIHRvIGRpdmlkZSBieSBhXG4gICAgICAgICAgICAgICAgICAgbGFyZ2UgZW5vdWdoIHBvc2l0aXZlIHBvd2VyIG9mIDEwIHRoYXQgd2UgbmVlZCB0byBhZGQgbGVhZGluZyAwcy4gKilcbiAgICAgICAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgXCIwLlwiOyBTdHJpbmcubWFrZSAoLWJ5IC0gbGVuKSAnMCc7IHMgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIEZpbmFsbHksIHJlc3RvcmUgdGhlIHNpZ24uICBXZSBjYW4ndCBqdXN0IGRyb3AgdGhlICcrJyBzaWduLCB3ZSBuZWVkIHRvXG4gICAgICAgICAgICAgICByZXN0b3JlIGl0IHRvbywgYmVjYXVzZSBpZiB3ZSBkaWRuJ3QsIHdlIHdvdWxkIHNpbGVudGx5IHBhcnNlIG51bWJlcnMgbGlrZVxuICAgICAgICAgICAgICAgXCIrLTEzJVwiIG9yIFwiKysxN2JwXCIgd2l0aG91dCByYWlzaW5nIGFuIGVycm9yLiAqKVxuICAgICAgICAgICAgaWYgc2lnbmVkIHRoZW4gKGlmIG5lZyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpIF4gcyBlbHNlIHMpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzaGlmdF9kZWNpbWFsX3BvaW50IDFcIiA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgWyBcIjNcIlxuICAgICAgICA7IFwiNTEuMlwiXG4gICAgICAgIDsgXCItNTBcIlxuICAgICAgICA7IFwiMzEyNzAwMC4wMDBcIlxuICAgICAgICA7IFwiMS43OUUrMzA4XCJcbiAgICAgICAgOyBcIjQuOTQwNjU2RS0zMjRcIlxuICAgICAgICA7IFwiLTAuMDAwZTEzXCJcbiAgICAgICAgOyBcIjEuNDc2NTFFKzEwXCJcbiAgICAgICAgXVxuICAgICAgICB+ZjooZnVuIHMgLT5cbiAgICAgICAgICBwcmludGYgXCI9PSAlcyA9PVxcblwiIHM7XG4gICAgICAgICAgbGV0IHggPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIExpc3QuaXRlciBbIC00MDsgLTEwOyAtMjsgLTE7IDA7IDE7IDI7IDEwOyA0MCBdIH5mOihmdW4gYnkgLT5cbiAgICAgICAgICAgIGxldCBzMSA9IHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnkgaW5cbiAgICAgICAgICAgIHByaW50ZiBcIiVzXFxuXCIgczE7XG4gICAgICAgICAgICBsZXQgeDEgPSBGbG9hdC5vZl9zdHJpbmcgczEgaW5cbiAgICAgICAgICAgIGxldCB4MiA9IHggKi4gKDEwLiAqKiBmbG9hdCBieSkgaW5cbiAgICAgICAgICAgIGFzc2VydCAoRmxvYXQuKHgxID0geDIgfHwgYWJzICgoeDEgLSB4MikgLyB4MSkgPCAxZS02KSA6IGJvb2wpKTtcbiAgICAgICAgICBwcmludGYgXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcblwiKTtcbiAgICAgICgqIE5vdGUgXCItMC4wMDBlMTNcIiBpcyBub3QgYWRqdXN0ZWQgKilcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICAgID09IDMgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzXG4gICAgICAgIDAuMDAwMDAwMDAwM1xuICAgICAgICAwLjAzXG4gICAgICAgIDAuM1xuICAgICAgICAzXG4gICAgICAgIDMwXG4gICAgICAgIDMwMFxuICAgICAgICAzMDAwMDAwMDAwMFxuICAgICAgICAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSA1MS4yID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MTJcbiAgICAgICAgMC4wMDAwMDAwMDUxMlxuICAgICAgICAwLjUxMlxuICAgICAgICA1LjEyXG4gICAgICAgIDUxLjJcbiAgICAgICAgNTEyXG4gICAgICAgIDUxMjBcbiAgICAgICAgNTEyMDAwMDAwMDAwXG4gICAgICAgIDUxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAtNTAgPT1cbiAgICAgICAgLTAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1XG4gICAgICAgIC0wLjAwMDAwMDAwNVxuICAgICAgICAtMC41XG4gICAgICAgIC01XG4gICAgICAgIC01MFxuICAgICAgICAtNTAwXG4gICAgICAgIC01MDAwXG4gICAgICAgIC01MDAwMDAwMDAwMDBcbiAgICAgICAgLTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAzMTI3MDAwLjAwMCA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxMjdcbiAgICAgICAgMC4wMDAzMTI3XG4gICAgICAgIDMxMjcwXG4gICAgICAgIDMxMjcwMFxuICAgICAgICAzMTI3MDAwLjAwMFxuICAgICAgICAzMTI3MDAwMFxuICAgICAgICAzMTI3MDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDBcbiAgICAgICAgMzEyNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMS43OUUrMzA4ID09XG4gICAgICAgIDEuNzlFKzI2OFxuICAgICAgICAxLjc5RSsyOThcbiAgICAgICAgMS43OUUrMzA2XG4gICAgICAgIDEuNzlFKzMwN1xuICAgICAgICAxLjc5RSszMDhcbiAgICAgICAgMS43OUUrMzA5XG4gICAgICAgIDEuNzlFKzMxMFxuICAgICAgICAxLjc5RSszMThcbiAgICAgICAgMS43OUUrMzQ4XG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDQuOTQwNjU2RS0zMjQgPT1cbiAgICAgICAgNC45NDA2NTZFLTM2NFxuICAgICAgICA0Ljk0MDY1NkUtMzM0XG4gICAgICAgIDQuOTQwNjU2RS0zMjZcbiAgICAgICAgNC45NDA2NTZFLTMyNVxuICAgICAgICA0Ljk0MDY1NkUtMzI0XG4gICAgICAgIDQuOTQwNjU2RS0zMjNcbiAgICAgICAgNC45NDA2NTZFLTMyMlxuICAgICAgICA0Ljk0MDY1NkUtMzE0XG4gICAgICAgIDQuOTQwNjU2RS0yODRcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gLTAuMDAwZTEzID09XG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDEuNDc2NTFFKzEwID09XG4gICAgICAgIDEuNDc2NTFFLTMwXG4gICAgICAgIDEuNDc2NTFcbiAgICAgICAgMS40NzY1MUUrOFxuICAgICAgICAxLjQ3NjUxRSs5XG4gICAgICAgIDEuNDc2NTFFKzEwXG4gICAgICAgIDEuNDc2NTFFKzExXG4gICAgICAgIDEuNDc2NTFFKzEyXG4gICAgICAgIDEuNDc2NTFFKzIwXG4gICAgICAgIDEuNDc2NTFFKzUwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHx9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4gICAgICAoKiBMb2dpYyBzdG9sZW4gZnJvbSBsaWIvYmFzZS9zcmMvZmxvYXQubWwsIGJ1dCB0aGlzIGRvZXMgbm90IGNhbGxcbiAgICAgICAgIFt2YWxpZF9mbG9hdF9sZXhlbV0gc28gbm90IGFkZGluZyBhIHRyYWlsaW5nIFwiLlwiIGFuZCBhbHNvLCB3ZSdyZSB1c2luZ1xuICAgICAgICAgdXBwZXJjYXNlICglRyB2cyAlZykgZm9yIGNvbnNpc3RlbmN5IHdpdGggW1BlcmNlbnQuU3RhYmxlLlYyXS4gKilcbiAgICAgIGxldCBmbG9hdF90b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNUdcIiB4IGluXG4gICAgICAgIGlmIEZsb2F0LiggPSApIChmbG9hdF9vZl9zdHJpbmcgeSkgeCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3R1wiIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcnIGZsb2F0X3RvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHMgPSBmbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICAgICgqIFVuaW1wb3J0YW50IG5vdGU6IFYzIHNlcmlhbGl6ZXMgbmFuIGFzIFwiTkFOeFwiLCB3aGlsZSBWMiBzZXJpYWxpemVzIGl0IGFzXG4gICAgICAgICAgICAgXCJOQU5icFwiICopXG4gICAgICAgICAgaWYgRmxvYXQuKGlzX25hbiB4IHx8IGlzX2luZiB4IHx8IHhfYWJzID49IDEuKVxuICAgICAgICAgIHRoZW4gcyBeIFwieFwiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICAgIHRoZW4gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICAgICAgICBlbHNlIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6NCBeIFwiYnBcIilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZycgZmxvYXRfdG9fc3RyaW5nIHhcblxuICAgICAgbGV0IHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0X29mX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcInhcIiB3aXRoXG4gICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciB+Ynk6MFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwiJVwiIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTIpXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTooLTQpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJQZXJjZW50Lm9mX3N0cmluZzogbXVzdCBlbmQgaW4geCwgJSUsIG9yIGJwOiAlc1wiIHN0ciAoKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHggPVxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHggKGZ1biBzIH5ieSAtPlxuICAgICAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnlcbiAgICAgICAgICB8PiBTZXhwLkF0b21cbiAgICAgICAgICB8PiBGbG9hdF93aXRoX2Zpbml0ZV9vbmx5X3NlcmlhbGl6YXRpb24udF9vZl9zZXhwKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiB4ID1cbiAgICAgICAgcmVhbGx5X29mX3N0cmluZyB4IChmdW4gcyB+YnkgLT5cbiAgICAgICAgICBtYXRjaCBTdHJpbmcubG93ZXJjYXNlIHMgd2l0aFxuICAgICAgICAgIHwgXCJuYW5cIlxuICAgICAgICAgIHwgXCItbmFuXCJcbiAgICAgICAgICB8IFwiK25hblwiXG4gICAgICAgICAgfCBcImluZlwiXG4gICAgICAgICAgfCBcImluZmluaXR5XCJcbiAgICAgICAgICB8IFwiK2luZlwiXG4gICAgICAgICAgfCBcIitpbmZpbml0eVwiXG4gICAgICAgICAgfCBcIi1pbmZcIlxuICAgICAgICAgIHwgXCItaW5maW5pdHlcIiAtPlxuICAgICAgICAgICAgKCogV2UgcGFyc2UgdGhlc2UgbmFuIG9yIGluZiBzdHJpbmdzIGRpcmVjdGx5LCBiZWNhdXNlXG4gICAgICAgICAgICAgICBbc2hpZnRfZGVjaW1hbF9wb2ludF0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtICopXG4gICAgICAgICAgICBGbG9hdC5vZl9zdHJpbmcgc1xuICAgICAgICAgIHwgXyAtPiBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5IHw+IEZsb2F0Lm9mX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBVc2UgYSBkaWZmZXJlbnQgYmluX3NoYXBlX3QgdGhhbiBQZXJjZW50LlN0YWJsZS5WMiwgZXZlbiB0aG91Z2ggdGhlc2UgdHdvIHZlcnNpb25zXG4gICAgICAgaGF2ZSBjb21wYXRpYmxlIGJpbl9pbyBzZXJpYWxpemF0aW9uLiAgU2luY2UgdGhleSBkbyBkaWZmZXIgaW4gc2V4cCBzZXJpYWxpemF0aW9uLFxuICAgICAgIHdlIGVyciBvbiB0aGUgc2lkZSBvZiBzYWZldHkgYW5kIGNoYW5nZSB0aGUgYmluIHNoYXBlIHRvIHdhcm4gdGhhdCBWMyBpcyBub3QgYWx3YXlzXG4gICAgICAgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBWMi4gKilcbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjMyZjJhMWUtNmI0My0xMWVkLWIzM2ItYWFjMmE1NjNmMTBhXCIpXG4gICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeCA9XG4gICAgICAgIGxldCBzID0gU3RyaW5nYWJsZS5mbG9hdF90b19zdHJpbmcgeCBpblxuICAgICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjIgXiBcIiVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSB0ID0gKGZsb2F0W0BxdWlja2NoZWNrLmdlbmVyYXRvciBGbG9hdC5nZW5fZmluaXRlXSlcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG9mX211bHQgZiA9IGZcbiAgICBsZXQgdG9fbXVsdCB0ID0gdFxuICAgIGxldCBvZl9wZXJjZW50YWdlIGYgPSBmIC8uIDEwMC5cbiAgICBsZXQgdG9fcGVyY2VudGFnZSB0ID0gdCAqLiAxMDAuXG4gICAgbGV0IG9mX2JwIGYgPSBmIC8uIDEwXzAwMC5cbiAgICBsZXQgdG9fYnAgdCA9IHQgKi4gMTBfMDAwLlxuICAgIGxldCBvZl9icF9pbnQgaSA9IG9mX2JwIChGbG9hdC5vZl9pbnQgaSlcbiAgICBsZXQgdG9fYnBfaW50IHQgPSBGbG9hdC50b19pbnQgKHRvX2JwIHQpXG5cbiAgICAoKiBNdWx0aXBseSB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBmbG9hdCBbZl0gYnkgWzEwKipieV0sIGFuZCBjb252ZXJ0IGJhY2sgdG9cbiAgICAgICB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIGZsb2F0LiAqKVxuICAgIGxldCBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5ID1cbiAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGYpXG4gICAgICB0aGVuIGZcbiAgICAgIGVsc2UgRmxvYXQudG9fc3RyaW5nIGYgfD4gVjMuc2hpZnRfZGVjaW1hbF9wb2ludCB+YnkgfD4gRmxvYXQub2Zfc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBvZl9wZXJjZW50YWdlX3Nsb3dfbW9yZV9hY2N1cmF0ZSBmID0gc2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCBmIH5ieTooLTIpXG4gICAgbGV0IHRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjJcbiAgICBsZXQgb2ZfYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OigtNClcbiAgICBsZXQgdG9fYnBfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OjRcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMy9WMi9WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiBJZiB5b3UgYXJlIGNoYW5naW5nXG4gICAgICAgICB0aGUgc2VtYW50aWNzIG9mIGFueXRoaW5nIHRoYXQgYWZmZWN0cyB0aGUgc2V4cCBvciBiaW4taW8gcmVwcmVzZW50YXRpb24gb2ZcbiAgICAgICAgIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHRoaXMgaW5jbHVkZXMgdG9fc3RyaW5nIGFuZCBvZl9zdHJpbmcpIG1ha2UgYSBTdGFibGUuVjQgYW5kXG4gICAgICAgICBtYWtlIHlvdXIgY2hhbmdlcyB0aGVyZS4gVGhhbmtzISAqKVxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgICAgbGV0IHN0cmluZyBmbG9hdCA9IHNwcmludGYgXCIlLjZHXCIgZmxvYXQgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgICAgdGhlbiBcIjB4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMC4wMVxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVjMub2Zfc3RyaW5nXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mID0gVjMub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZ2FibGUgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiA6IHN0cmluZyAtPiB0XG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAoKiBNaW50IGEgdW5pcXVlIFtiaW5fc2hhcGVfdF0gdGhhdCdzIGRpc3RpbmN0IGZyb20gdGhlIGhpZGRlbiB1bmRlcmx5aW5nXG4gICAgICAgcmVwcmVzZW50YXRpb24gb2YgZmxvYXQuICopXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjFkMWU3NmJjLWVhNGItMTFlYi1hMTZhLWFhNWIyOGQxZjRkN1wiKVxuICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID0gVjMuY29tcGFyYXRvclxuICAgICAgZW5kKVxuXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFYyXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuICAgICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IFYzLmNvbXBhcmF0b3JcblxuICAgICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICAgIHNlcmlhbGl6YXRpb24gcmF0aGVyIHRoYW4gcGVyY2VudCBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmdcbiAgICAgICAgICAgICBjb21wYXJhYmxlLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlciBzZXJpYWxpemF0aW9uLlxuICAgICAgICAgICopXG4gICAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgICAgICA7O1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uX3JlcHIgPSBzdHJ1Y3RcbiAgICAgIGxldCBub25lID0gRmxvYXQubmFuXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gRmxvYXQuaXNfbmFuIHRcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgPSBpc19zb21lXG4gICAgICBsZXQgc29tZSA9IEZuLmlkXG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gRm4uaWRcbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcbiAgICAgIGxldCBhcHBseV93aXRoX25vbmVfYXNfbmFuID0gKCAqLiApXG4gICAgICBsZXQgb2ZfbXVsdF93aXRoX25hbl9hc19ub25lID0gRm4uaWRcbiAgICAgIGxldCB0b19tdWx0X3dpdGhfbm9uZV9hc19uYW4gPSBGbi5pZFxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiUGVyY2VudC5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYzLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJlOWI1MjAyOC02YjQ1LTExZWQtYTZiNi1hYWMyYTU2M2YxMGFcIilcbiAgICAgICAgICBbIGJpbl9zaGFwZV90IF1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgT3B0aW9uX3JlcHJcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMy5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYzLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjMudCBPcHRpb24udF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVjIudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImY3YWEwNGU4LWRhM2UtMTFlYy1iNTQ2LWFhNzMyODQzM2I3MFwiKVxuICAgICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSBPcHRpb25fcmVwclxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYyLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjIudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMi50IE9wdGlvbi50XVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBWMlxuXG4gICAgICAgIGxldCBiaW5fc2hhcGVfdCA9IEZsb2F0LmJpbl9zaGFwZV90XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5CaW5fc2hhcGVfc2FtZV9hc19mbG9hdFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUuT3B0aW9uXG4gIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuY2hlY2tlZF92YWx1ZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgaXNfemVybyB0ID0gdCA9IDAuXG5sZXQgYXBwbHkgdCBmID0gdCAqLiBmXG5sZXQgc2NhbGUgdCBmID0gdCAqLiBmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgRmxvYXRcblxuICBsZXQgb25lX2h1bmRyZWRfcGVyY2VudCA9IDEuXG4gIGxldCAoIC8vICkgeCB5ID0gb2ZfbXVsdCB4IC8uIG9mX211bHQgeVxuZW5kIDpcbnNpZ1xuICB2YWwgemVybyA6IHRcbiAgdmFsIG9uZV9odW5kcmVkX3BlcmNlbnQgOiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8vICkgOiB0IC0+IHQgLT4gZmxvYXRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgbmVnIDogdCAtPiB0XG4gIHZhbCBpc19uYW4gOiB0IC0+IGJvb2xcbiAgdmFsIGlzX2luZiA6IHQgLT4gYm9vbFxuICB2YWwgc2lnbl9leG4gOiB0IC0+IFNpZ24udFxuXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgPSBGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeVxubGV0IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzID0gU3RyaW5nYWJsZS5vZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgc1xubGV0IHRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiBzZXhwID0gb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIChTZXhwLnRvX3N0cmluZyBzZXhwKVxuXG5tb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZm9ybWF0IHggZm9ybWF0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgKHggKi4gMTAwLikgXiBcIiVcIlxuICBsZXQgdG9fc3RyaW5nIHggPSBzcHJpbnRmIFwiJS42RyUlXCIgKHggKiAxMDAuKVxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmxldCB0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlID0gU3RhYmxlLlYzLnRvX3N0cmluZ1xuXG5tb2R1bGUgQWxtb3N0X3JvdW5kX3RyaXBwYWJsZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gU3RhYmxlLlYzLlN0cmluZ2FibGUuKHRvX3N0cmluZycgKGZvcm1hdF9mbG9hdCBcIiUuMTRHXCIpIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IFN0YWJsZS5WMy5TdHJpbmdhYmxlLm9mX3N0cmluZyB4XG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG4gIGxldCB0X29mX3NleHAgPSBTdGFibGUuVjMudF9vZl9zZXhwXG5cbiAgbW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgIGxldCBvcGVuIFN0YWJsZS5WMyBpblxuICAgICAgbGV0IHMgPSBTdHJpbmdhYmxlLmZvcm1hdF9mbG9hdCBcIiUuMTRHXCIgeCBpblxuICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieToyIF4gXCIlXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IHJhbmRvbWl6ZSBzcGFuIHJhbmRvbV9zdGF0ZSB+cGVyY2VudCB+c2NhbGUgPVxuICBsZXQgbXVsdCA9IFBlcmNlbnQudG9fbXVsdCBwZXJjZW50IGluXG4gIGlmIEZsb2F0LiggPCApIG11bHQgMC4gfHwgRmxvYXQuKCA+ICkgbXVsdCAxLlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiU3Bhbi5yYW5kb21pemU6IHBlcmNlbnQgaXMgb3V0IG9mIHJhbmdlIFsweCwgMXhdXCIgKHBlcmNlbnQgOiBQZXJjZW50LnQpXTtcbiAgbGV0IGZhY3RvciA9XG4gICAgUmFuZG9tLlN0YXRlLmZsb2F0X3JhbmdlIHJhbmRvbV9zdGF0ZSAoMS4gLS4gbXVsdCkgKEZsb2F0Lm9uZV91bHAgYFVwICgxLiArLiBtdWx0KSlcbiAgaW5cbiAgc2NhbGUgc3BhbiBmYWN0b3Jcbjs7XG5cbmxldCBmb3JtYXRfZGVjaW1hbCBuIHRlbnRocyB1bml0cyA9XG4gIGFzc2VydCAodGVudGhzID49IDAgJiYgdGVudGhzIDwgMTApO1xuICBpZiBuIDwgMTAgJiYgdGVudGhzIDw+IDBcbiAgdGhlbiBzcHJpbnRmIFwiJWQuJWQlc1wiIG4gdGVudGhzIHVuaXRzXG4gIGVsc2Ugc3ByaW50ZiBcIiVkJXNcIiBuIHVuaXRzXG47O1xuXG5sZXQgc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnMgPVxuICBsZXQgcyA9XG4gICAgaWYgaHIgPj0gMjRcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIChociAvIDI0KSAoSW50Lm9mX2Zsb2F0IChGbG9hdC5vZl9pbnQgKGhyICUgMjQpIC8uIDIuNCkpIFwiZFwiXG4gICAgZWxzZSBpZiBociA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIGhyIChtaW4gLyA2KSBcImhcIlxuICAgIGVsc2UgaWYgbWluID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbWluIChzZWMgLyA2KSBcIm1cIlxuICAgIGVsc2UgaWYgc2VjID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgc2VjIChtcyAvIDEwMCkgXCJzXCJcbiAgICBlbHNlIGlmIG1zID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgbXMgKHVzIC8gMTAwKSBcIm1zXCJcbiAgICBlbHNlIGlmIHVzID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgdXMgKG5zIC8gMTAwKSBcInVzXCJcbiAgICBlbHNlIHNwcmludGYgXCIlaW5zXCIgbnNcbiAgaW5cbiAgbWF0Y2ggKHNpZ24gOiBTaWduLnQpIHdpdGhcbiAgfCBOZWcgLT4gXCItXCIgXiBzXG4gIHwgWmVybyB8IFBvcyAtPiBzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzaWduIDogU2lnbi50XG4gICAgICAgIDsgaHIgOiBpbnRcbiAgICAgICAgOyBtaW4gOiBpbnRcbiAgICAgICAgOyBzZWMgOiBpbnRcbiAgICAgICAgOyBtcyA6IGludFxuICAgICAgICA7IHVzIDogaW50XG4gICAgICAgIDsgbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgTGlrZV9hX2Zsb2F0ID0gc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIEZsb2F0YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsIHplcm8gOiB0XG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogdFxuICAgICAgdmFsIGFicyA6IHQgLT4gdFxuICAgICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gICAgICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG5cbiAgICAgICgqIElGIFRISVMgUkVQUkVTRU5UQVRJT04gRVZFUiBDSEFOR0VTLCBFTlNVUkUgVEhBVCBFSVRIRVJcbiAgICAgICAgICgxKSBhbGwgdmFsdWVzIHNlcmlhbGl6ZSB0aGUgc2FtZSB3YXkgaW4gYm90aCByZXByZXNlbnRhdGlvbnMsIG9yXG4gICAgICAgICAoMikgeW91IGFkZCBhIG5ldyBUaW1lLlNwYW4gdmVyc2lvbiB0byBzdGFibGUubWwgKilcbiAgICAgIGluY2x1ZGUgKFxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRcblxuICAgICAgICBsZXQgc2lnbiA9IHNpZ25fZXhuXG4gICAgICBlbmQgOlxuICAgICAgICBMaWtlX2FfZmxvYXQgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgICgqIHRoaXMgcHJldmVudHMgYW55IHdvcnJ5IGFib3V0IGhhdmluZyB0aGVzZSB2ZXJ5IGNvbW1vbiBuYW1lcyByZWRlZmluZWQgYmVsb3cgYW5kXG4gICAgICAgICBtYWtlcyB0aGVpciB1c2FnZSB3aXRoaW4gdGhpcyBtb2R1bGUgc2FmZXIuICBDb25zdGFudCBpcyBpbmNsdWRlZCBhdCB0aGUgdmVyeVxuICAgICAgICAgYm90dG9tIHRvIHJlLWV4cG9ydCB0aGVzZSBjb25zdGFudHMgaW4gYSBtb3JlIGNvbnZlbmllbnQgd2F5ICopXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTlcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kID0gMUU2XG4gICAgICAgIGxldCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA9IDFFM1xuXG4gICAgICAgICgqIHNwYW5zIGFyZSBzdG9yZWQgYXMgYSBmbG9hdCBpbiBzZWNvbmRzICopXG4gICAgICAgIGxldCBuYW5vc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWNyb3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgc2Vjb25kID0gb2ZfZmxvYXQgMS5cbiAgICAgICAgbGV0IG1pbnV0ZSA9IG9mX2Zsb2F0IDYwLlxuICAgICAgICBsZXQgaG91ciA9IG9mX2Zsb2F0ICg2MC4gKi4gNjAuKVxuICAgICAgICBsZXQgZGF5ID0gb2ZfZmxvYXQgKDI0LiAqLiA2MC4gKi4gNjAuKVxuICAgICAgZW5kXG5cblxuICAgICAgbGV0IHRvX3BhcnRzIHQgOiBQYXJ0cy50ID1cbiAgICAgICAgbGV0IHNpZ24gPSBGbG9hdC5zaWduX2V4biB0IGluXG4gICAgICAgIGxldCB0ID0gYWJzIHQgaW5cbiAgICAgICAgbGV0IGludGVncmFsID0gRmxvYXQucm91bmRfZG93biB0IGluXG4gICAgICAgIGxldCBmcmFjdGlvbmFsID0gdCAtLiBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9kb3duX2V4biBpbnRlZ3JhbCBpblxuICAgICAgICBsZXQgbmFub3NlY29uZHMgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4gKGZyYWN0aW9uYWwgKi4gMUU5KSBpblxuICAgICAgICBsZXQgc2Vjb25kcywgbmFub3NlY29uZHMgPVxuICAgICAgICAgIGlmIEludC5lcXVhbCBuYW5vc2Vjb25kcyAxXzAwMF8wMDBfMDAwXG4gICAgICAgICAgdGhlbiBJbnQuc3VjYyBzZWNvbmRzLCAwXG4gICAgICAgICAgZWxzZSBzZWNvbmRzLCBuYW5vc2Vjb25kc1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2VjID0gc2Vjb25kcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWNvbmRzIC8gNjAgaW5cbiAgICAgICAgbGV0IG1pbiA9IG1pbnV0ZXMgbW9kIDYwIGluXG4gICAgICAgIGxldCBociA9IG1pbnV0ZXMgLyA2MCBpblxuICAgICAgICBsZXQgbnMgPSBuYW5vc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzID0gbmFub3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCB1cyA9IG1pY3Jvc2Vjb25kcyBtb2QgMTAwMCBpblxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzID0gbWljcm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgbXMgPSBtaWxsaXNlY29uZHMgaW5cbiAgICAgICAgeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCAoIC8gKSB0IGYgPSBULm9mX2Zsb2F0ICgodCA6IFQudCA6PiBmbG9hdCkgLy4gZilcbiAgICBsZXQgKCAvLyApIChmIDogVC50KSAodCA6IFQudCkgPSAoZiA6PiBmbG9hdCkgLy4gKHQgOj4gZmxvYXQpXG5cbiAgICAoKiBNdWx0aXBseWluZyBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIGRpdmlzaW9uIGJ5IDFFLTMgKilcbiAgICBsZXQgdG9fbnMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b191cyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19tcyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZFxuICAgIGxldCB0b19zZWMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpXG4gICAgbGV0IHRvX21pbiB4ID0geCAvLyBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCB0b19ociB4ID0geCAvLyBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgdG9fZGF5IHggPSB4IC8vIFQuQ29uc3RhbnQuZGF5XG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4geCA9IEZsb2F0LmludDYzX3JvdW5kX2Rvd25fZXhuICh0b19zZWMgeClcbiAgICBsZXQgKCAqKiApIGYgKHQgOiBULnQpID0gVC5vZl9mbG9hdCAoZiAqLiAodCA6PiBmbG9hdCkpXG5cbiAgICAoKiBEaXZpc2lvbiBieSAxRTMgaXMgbW9yZSBhY2N1cmF0ZSB0aGFuIG11bHRpcGx5aW5nIGJ5IDFFLTMgKilcbiAgICBsZXQgb2ZfbnMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl91cyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9tcyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgIGxldCBvZl9zZWMgeCA9IFQub2ZfZmxvYXQgeFxuICAgIGxldCBvZl9pbnQzMl9zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50MzIudG9fZmxvYXQgc2VjKVxuXG4gICAgKCogTm90ZSB0aGF0IFtJbnQ2My50b19mbG9hdF0gY2FuIGxvc2UgcHJlY2lzaW9uLCBidXQgb25seSBvbiBpbnB1dHMgbGFyZ2UgZW5vdWdoIHRoYXRcbiAgICAgICBbb2Zfc2VjXSBpbiBlaXRoZXIgdGhlIFRpbWVfbnMgb3IgVGltZV9mbG9hdCBjYXNlIHdvdWxkIGxvc2UgcHJlY2lzaW9uIChvciBqdXN0IGJlXG4gICAgICAgcGxhaW4gb3V0IG9mIGJvdW5kcykgYW55d2F5LiAqKVxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzIHNlYyA9IG9mX3NlYyAoSW50NjMudG9fZmxvYXQgc2VjKVxuICAgIGxldCBvZl9taW4geCA9IHggKiogVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgb2ZfaHIgeCA9IHggKiogVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IG9mX2RheSB4ID0geCAqKiBULkNvbnN0YW50LmRheVxuICAgIGxldCBvZl9pbnRfbnMgeCA9IG9mX25zIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X3VzIHggPSBvZl91cyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9tcyB4ID0gb2ZfbXMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfc2VjIHggPSBvZl9zZWMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfbWluIHggPSBvZl9taW4gKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfaHIgeCA9IG9mX2hyIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X2RheSB4ID0gb2ZfZGF5IChGbG9hdC5vZl9pbnQgeClcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgfnBlcmNlbnQgPVxuICAgICAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICAgICAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gICAgICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgIGxldCBvZl9zdHJpbmdfdjFfdjIgKHMgOiBzdHJpbmcpIH5pc192MiA9XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcImVtcHR5IHN0cmluZ1wiXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBmbG9hdCBuID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5kcm9wX3N1ZmZpeCBzIG4gd2l0aFxuICAgICAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwibm8gbnVtYmVyIGdpdmVuXCJcbiAgICAgICAgICAgIHwgcyAtPlxuICAgICAgICAgICAgICBsZXQgdiA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgICAgICAgICAgIFZhbGlkYXRlLm1heWJlX3JhaXNlIChGbG9hdC52YWxpZGF0ZV9vcmRpbmFyeSB2KTtcbiAgICAgICAgICAgICAgdlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgIChtYXRjaCBzLltJbnQuKCAtICkgbGVuIDFdIHdpdGhcbiAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICBpZiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbSdcbiAgICAgICAgICAgICB0aGVuIG9mX21zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ3UnXG4gICAgICAgICAgICAgdGhlbiBvZl91cyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICduJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbnMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBULm9mX2Zsb2F0IChmbG9hdCAxKVxuICAgICAgICAgICB8ICdtJyAtPiBvZl9taW4gKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2gnIC0+IG9mX2hyIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdkJyAtPiBvZl9kYXkgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIGlmIGlzX3YyXG4gICAgICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbnMsIHVzLCBtcywgcywgbSwgaCwgb3IgZC5cIlxuICAgICAgICAgICAgIGVsc2UgZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG1zLCBzLCBtLCBoLCBvciBkLlwiKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmIFwiU3Bhbi5vZl9zdHJpbmcgY291bGQgbm90IHBhcnNlICclcyc6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cCA9IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwXG5cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwIG9mIFNleHAudCAqIGV4biBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MiA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmdfdjFfdjIgeCB+aXNfdjIgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cCAoc2V4cCwgZXhuKSkgc2V4cClcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvcl9leG4gKFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgc2V4cCkgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc3RyaW5nIH5pc192MiBzdWZmaXggZmxvYXQgPVxuICAgICAgaWYgaXNfdjJcbiAgICAgICgqIFRoaXMgaXMgdGhlIHNhbWUgZmxvYXQtdG8tc3RyaW5nIGNvbnZlcnNpb24gdXNlZCBpbiBbRmxvYXQuc2V4cF9vZl90XS4gIEl0J3MgbGlrZVxuICAgICAgICAgW0Zsb2F0LnRvX3N0cmluZ10sIGJ1dCBtYXkgbGVhdmUgb2ZmIHRyYWlsaW5nIHBlcmlvZC4gKilcbiAgICAgIHRoZW4gIVNleHBsaWIuQ29udi5kZWZhdWx0X3N0cmluZ19vZl9mbG9hdCBmbG9hdCBeIHN1ZmZpeFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJWclc1wiIGZsb2F0IHN1ZmZpeFxuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgKCogSSdkIGxpa2UgaXQgdG8gYmUgdGhlIGNhc2UgdGhhdCB5b3UgY291bGQgbmV2ZXIgY29uc3RydWN0IGFuIGluZmluaXRlIHNwYW4sIGJ1dCBJXG4gICAgICAgY2FuJ3QgdGhpbmsgb2YgYSBnb29kIHdheSB0byBlbmZvcmNlIGl0LiAgU28gdGhpcyB0b19zdHJpbmcgZnVuY3Rpb24gY2FuIHByb2R1Y2VcbiAgICAgICBzdHJpbmdzIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGV5IGFyZSBmZWQgdG8gb2Zfc3RyaW5nICopXG4gICAgbGV0IHRvX3N0cmluZ192MV92MiAodCA6IFQudCkgfmlzX3YyID1cbiAgICAgICgqIHRoaXMgaXMgYSBzYWQgYnJva2VuIGFic3RyYWN0aW9uLi4uICopXG4gICAgICBsZXQgbW9kdWxlIEMgPSBGbG9hdC5DbGFzcyBpblxuICAgICAgbWF0Y2ggRmxvYXQuY2xhc3NpZnkgKHQgOj4gZmxvYXQpIHdpdGhcbiAgICAgIHwgQy5TdWJub3JtYWwgfCBDLlplcm8gLT4gXCIwc1wiXG4gICAgICB8IEMuSW5maW5pdGUgLT4gaWYgVC4oID4gKSB0IFQuemVybyB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICAgICAgfCBDLk5hbiAtPiBcIm5hblwiXG4gICAgICB8IEMuTm9ybWFsIC0+XG4gICAgICAgIGxldCAoIDwgKSA9IFQuKCA8ICkgaW5cbiAgICAgICAgbGV0IGFic190ID0gVC5vZl9mbG9hdCAoRmxvYXQuYWJzICh0IDo+IGZsb2F0KSkgaW5cbiAgICAgICAgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm5zXCIgKHRvX25zIHQpXG4gICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbGxpc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInVzXCIgKHRvX3VzIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LnNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtc1wiICh0b19tcyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5taW51dGVcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwic1wiICh0b19zZWMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuaG91clxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJtXCIgKHRvX21pbiB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5kYXlcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwiaFwiICh0b19ociB0KVxuICAgICAgICBlbHNlIHN0cmluZyB+aXNfdjIgXCJkXCIgKHRvX2RheSB0KVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyID0gU2V4cC5BdG9tICh0b19zdHJpbmdfdjFfdjIgdCB+aXNfdjIpXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOmZhbHNlXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6dHJ1ZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192Mjp0cnVlXG4gIGVuZFxuXG4gIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgIGxldCBvcGVuIFQgaW5cbiAgICAgIGxldCBvcGVuIENvbnN0YW50IGluXG4gICAgICBsZXQgYWJzX3QgPSBULmFicyB0IGluXG4gICAgICBpZiBhYnNfdCA+PSBkYXlcbiAgICAgIHRoZW4gRGF5XG4gICAgICBlbHNlIGlmIGFic190ID49IGhvdXJcbiAgICAgIHRoZW4gSG91clxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgICAgIHRoZW4gTWludXRlXG4gICAgICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICAgICAgdGhlbiBTZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWlsbGlzZWNvbmRcbiAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgICAgIHRoZW4gTWljcm9zZWNvbmRcbiAgICAgIGVsc2UgTmFub3NlY29uZFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfdW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQgLT4gVC50ID1cbiAgICAgIGxldCBvcGVuIFQuQ29uc3RhbnQgaW5cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaWNyb3NlY29uZFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICAgICAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gICAgICB8IE1pbnV0ZSAtPiBtaW51dGVcbiAgICAgIHwgSG91ciAtPiBob3VyXG4gICAgICB8IERheSAtPiBkYXlcbiAgICA7O1xuXG4gICAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IFwibnNcIlxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBcInVzXCJcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gXCJtc1wiXG4gICAgICB8IFNlY29uZCAtPiBcInNcIlxuICAgICAgfCBNaW51dGUgLT4gXCJtXCJcbiAgICAgIHwgSG91ciAtPiBcImhcIlxuICAgICAgfCBEYXkgLT4gXCJkXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBcIlRpbWUuU3Bhbi5vZl9zdHJpbmc6IFwiIF4gcmVhc29uIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIG1lc3NhZ2Ugc3RyaW5nXVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCB1bml0X29mX3RpbWVfbGlzdCA9XG4gICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZV9saXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IHN1ZmZpeFwiXG4gICAgICAgIHwgdW5pdF9vZl90aW1lIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHN0cmluZyB+cG9zOmluZGV4IH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgICAgdGhlbiB1bml0X29mX3RpbWVcbiAgICAgICAgICBlbHNlIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHJlc3RcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleCA9XG4gICAgICAgICgqIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBcIm1zXCIgY29tZXMgYmVmb3JlIFwibVwiIGluIFtVbml0X29mX3RpbWUuYWxsXSB0byBnZXQgYVxuICAgICAgICAgICBjb3JyZWN0IG1hdGNoIG9uIG1pbGxpc2Vjb25kIHRpbWVzdGFtcHMuIFRoaXMgYXNzdW1wdGlvbiBpcyBkZW1vbnN0cmF0ZWQgaW4gdGhlXG4gICAgICAgICAgIGV4cGVjdCB0ZXN0IGJlbG93LiAqKVxuICAgICAgICBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCBVbml0X29mX3RpbWUuYWxsXG4gICAgICA7O1xuXG4gICAgICAoKiBXZSB2YWxpZGF0ZSBtYWduaXR1ZGUgc3RyaW5ncyBzbyB0aGF0IHdlIGtub3cgd2hlcmUgdGhlIHVuaXQtb2YtdGltZSBzdWZmaXhcbiAgICAgICAgIGJlZ2lucywgYW5kIHNvIHRoYXQgb25seSBzZW5zaWJsZSBzdHJpbmdzIGFyZSBhbGxvd2VkLiBXZSBkbyBub3Qgd2FudCB0byBiZSBhc1xuICAgICAgICAgcGVybWlzc2l2ZSBhcyBbRmxvYXQub2Zfc3RyaW5nXTsgZm9yIGV4YW1wbGUsIGhleGFkZWNpbWFsIHNwYW4gbWFnbml0dWRlcyBhcmUgbm90XG4gICAgICAgICBhbGxvd2VkLiBBZnRlciB2YWxpZGF0aW9uLCB3ZSBzdGlsbCB1c2UgW0Zsb2F0Lm9mX3N0cmluZ10gdG8gcHJvZHVjZSB0aGUgYWN0dWFsXG4gICAgICAgICB2YWx1ZS4gKilcbiAgICAgIG1vZHVsZSBGbG9hdF9wYXJzZXIgPSBzdHJ1Y3RcbiAgICAgICAgKCogW0luX2RlY2ltYWxfaGF2ZV9kaWdpdF0gaW5jbHVkZXMgaGF2aW5nIGEgZGlnaXQgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICB0eXBlIHN0YXRlID1cbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG5cbiAgICAgICAgdHlwZSB0b2tlbiA9XG4gICAgICAgICAgfCBEaWdpdFxuICAgICAgICAgIHwgUG9pbnRcbiAgICAgICAgICB8IFVuZGVyXG4gICAgICAgICAgfCBTaWduXG4gICAgICAgICAgfCBFeHB0XG5cbiAgICAgICAgbGV0IHN0YXRlX2lzX2ZpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCAtPiBmYWxzZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b2tlbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gU29tZSBEaWdpdFxuICAgICAgICAgIHwgJy4nIC0+IFNvbWUgUG9pbnRcbiAgICAgICAgICB8ICdfJyAtPiBTb21lIFVuZGVyXG4gICAgICAgICAgfCAnLScgfCAnKycgLT4gU29tZSBTaWduXG4gICAgICAgICAgfCAnRScgfCAnZScgLT4gU29tZSBFeHB0XG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImludmFsaWQgc3BhbiBwYXJ0IG1hZ25pdHVkZVwiXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGUgPVxuICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBsZW5cbiAgICAgICAgICB0aGVuIGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHRva2VuX29mX2NoYXIgc3RyaW5nLltpbmRleF0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGlmIHN0YXRlX2lzX2ZpbmFsIHN0YXRlIHRoZW4gaW5kZXggZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgIHwgU29tZSB0b2tlbiAtPlxuICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHN0YXRlLCB0b2tlbiB3aXRoXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgU2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBQb2ludCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgRXhwdCAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgUG9pbnQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFNpZ24gLT5cbiAgICAgICAgICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFNpZ24gLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBFeHB0IC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleDooaW5kZXggKyAxKSB+bGVuIH5zdGF0ZSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICAgIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZTpJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgcmVjIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleCB+bGVuID1cbiAgICAgICAgaWYgSW50LmVxdWFsIGluZGV4IGxlblxuICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc3VmZml4X2luZGV4ID0gRmxvYXRfcGFyc2VyLmZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4OnN1ZmZpeF9pbmRleCBpblxuICAgICAgICAgIGxldCB1bnRpbF9pbmRleCA9XG4gICAgICAgICAgICBJbnQuKCArICkgc3VmZml4X2luZGV4IChTdHJpbmcubGVuZ3RoIChzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID1cbiAgICAgICAgICAgIFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6aW5kZXggfmxlbjooSW50LiggLSApIHN1ZmZpeF9pbmRleCBpbmRleClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdCA9IEZsb2F0Lm9mX3N0cmluZyBmbG9hdF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gbWFnbml0dWRlICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlIH5pbmRleDp1bnRpbF9pbmRleCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gPVxuICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZTpULnplcm8gfmluZGV4IH5sZW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbWF0Y2ggc3RyaW5nIHdpdGhcbiAgICAgICAgfCBcIk5BTnNcIiAtPiBvZl9zZWMgRmxvYXQubmFuXG4gICAgICAgIHwgXCItSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5uZWdfaW5maW5pdHlcbiAgICAgICAgfCBcIklORnNcIiAtPiBvZl9zZWMgRmxvYXQuaW5maW5pdHlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbmVnYXRpdmUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHN0cmluZy5bMF0gd2l0aFxuICAgICAgICAgICAgfCAnLScgLT4gdHJ1ZSwgMVxuICAgICAgICAgICAgfCAnKycgLT4gZmFsc2UsIDFcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSwgMFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgaW5kZXggPj0gbGVuIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuIGluXG4gICAgICAgICAgaWYgbmVnYXRpdmUgdGhlbiBULm5lZyBtYWduaXR1ZGUgZWxzZSBtYWduaXR1ZGVcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuXG4gICAgbW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICAgICAgbGV0IHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgZmxvYXQgPVxuICAgICAgICBsZXQgc3RyaW5nID0gRmxvYXQudG9fc3RyaW5nIGZsb2F0IGluXG4gICAgICAgIGxldCBzdWZmaXggPSBcIi5cIiBpblxuICAgICAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4XG4gICAgICAgIHRoZW4gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICBlbHNlIHN0cmluZ1xuICAgICAgOztcblxuICAgICAgKCogQXMgd2UgYnVpbGQgdXAgYSBzdHJpbmcsIHdlIGtlZXAgYSBydW5uaW5nIHN1bSBvZiB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJlYWRcbiAgICAgICAgIGJhY2sgaW4sIHNvIHRoYXQgd2UgY2FuIGNvbXB1dGUgdGhlIHJlbWFpbmRlciB0aGF0IG5lZWRzIHRvIGJlIGdlbmVyYXRlZC4gKilcbiAgICAgIGxldCBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSA9XG4gICAgICAgIHN1bV90ICsgc2NhbGVfYnlfdW5pdF9vZl90aW1lIG1hZ25pdHVkZSB1bml0X29mX3RpbWVcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBzb21lIHVuaXRzICh2ZXJ5IGxhcmdlIG51bWJlcnMgb2YgZGF5cywgb3Igc2Vjb25kcyBhbmQgc21hbGxlcikgd2UganVzdFxuICAgICAgICAgcmVuZGVyIGEgZmxvYXQgZGlyZWN0bHksIHdpdGggYSBmaXggZm9yIHJvdW5kb2ZmIGVycm9yLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lID1cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgYWJzX3QgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgaWYgc3VtX3QgPSBhYnNfdFxuICAgICAgICB0aGVuXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgICAgaWYgc3VtX3QgPCBhYnNfdFxuICAgICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICAgIGVsc2UgZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSAocHJldiBhYnNfdCkgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCBmaXh1cF9tYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHJlbV90IGZpeHVwX3VuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgICgqIFtyZW1fdF0gaXMgYXQgVUxQIHNpemUgb2YgW2Fic190XSwgaXQgbmVlZHMganVzdCBvbmUgYml0IG9mIHByZWNpc2lvbiAqKVxuICAgICAgICAgIF4gc3ByaW50ZiBcIiUuMWdcIiBmaXh1cF9tYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgZml4dXBfdW5pdF9vZl90aW1lKVxuICAgICAgOztcblxuICAgICAgKCogRm9yIG5vbi1kZWNpbWFsIHVuaXRzIChtaW51dGVzIGFuZCBncmVhdGVyKSwgd2UgcmVuZGVyIGFuIGludGVnZXIgbWFnbml0dWRlLCBhbmRcbiAgICAgICAgIHJldHVybiB0aGF0IHdpdGggdGhlIHJ1bm5pbmcgc3VtIHNvIHRoZSByZW1haW5kZXIgY2FuIGJlIHJlbmRlcmVkIGF0IGEgc21hbGxlclxuICAgICAgICAgdW5pdC4gKilcbiAgICAgIGxldCB0b19pbnRfc3RyaW5nX2FuZF9zdW0gdW5pdF9vZl90aW1lIH5hYnNfdCB+c3VtX3QgPVxuICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICgqIFdlIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgbXVsdGlwbGUgb2YgW3VuaXRfb2ZfdGltZV0gdGhhdCBuZWVkcyB0byBiZVxuICAgICAgICAgICBhZGRlZCB0byBbc3VtX3RdLiBEdWUgdG8gcm91bmRpbmcsIHRoaXMgY2FuIGJlIG9mZiBieSBvbmUgKHdlJ3ZlIG5ldmVyIHNlZW4gYVxuICAgICAgICAgICBjYXNlIG9mZiBieSB0d28gb3IgbW9yZSksIHNvIHdlIHJlLWNvbXB1dGUgdGhlIHJlbWFpbmRlciBhbmQgY29ycmVjdCBpZlxuICAgICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBGbG9hdC5yb3VuZF9kb3duIChyZW1fdCAvLyB1bml0X3NwYW4pIGluXG4gICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgaWYgbmV3X3JlbV90ID0gemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgZWxzZSBpZiBuZXdfcmVtX3QgPCB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGUgLS4gMS5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBuZXh0X21hZ25pdHVkZSA9IG1hZ25pdHVkZSArLiAxLiBpblxuICAgICAgICAgICAgbGV0IG5leHRfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZTpuZXh0X21hZ25pdHVkZSBpblxuICAgICAgICAgICAgbGV0IG5leHRfcmVtX3QgPSBhYnNfdCAtIG5leHRfc3VtX3QgaW5cbiAgICAgICAgICAgIGlmIG5leHRfcmVtX3QgPCB6ZXJvIHRoZW4gbWFnbml0dWRlIGVsc2UgbmV4dF9tYWduaXR1ZGUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIEZsb2F0LiggPD0gKSBtYWduaXR1ZGUgMC5cbiAgICAgICAgdGhlbiBcIlwiLCBzdW1fdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgc3RyaW5nID1cbiAgICAgICAgICAgIEludDYzLnRvX3N0cmluZyAoSW50NjMub2ZfZmxvYXQgbWFnbml0dWRlKVxuICAgICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgc3RyaW5nLCBuZXdfc3VtX3QpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgdCA9IEZsb2F0LmxvZzEwICh0b19zZWMgdClcblxuICAgICAgKCogVGhlIGZpbmFsIHNlY29uZHMtb3Itc21hbGxlciB1bml0IG5lZWRzIHRvIGJlIHByaW50ZWQgd2l0aCBlbm91Z2ggZGlnaXRzIHRvXG4gICAgICAgICByb3VuZC10cmlwIHRoZSB3aG9sZSBzcGFuICh3aGljaCBpcyBtaW51dGVzIG9yIGdyZWF0ZXIpOyB0aGlzIGNhbiBiZVxuICAgICAgICAgc2lnbmlmaWNhbnRseSBmZXdlciBkaWdpdHMgdGhhbiB3b3VsZCBiZSBuZWVkZWQgZm9yIHRoZSBzZWNvbmRzLW9yLXNtYWxsZXJcbiAgICAgICAgIHJlbWFpbmRlciBpdHNlbGYuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5zdW1fdCB+YWJzX3QgPVxuICAgICAgICBpZiBzdW1fdCA+PSBhYnNfdFxuICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgcmVtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9zcGFuID0gb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSByZW1fdCAvLyB1bml0X3NwYW4gaW5cbiAgICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgbmV3X3JlbV90ID0gYWJzX3QgLSBuZXdfc3VtX3QgaW5cbiAgICAgICAgICBpZiBhYnMgcmVtX3QgPD0gYWJzIG5ld19yZW1fdFxuICAgICAgICAgIHRoZW4gXCJcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCA9XG4gICAgICAgICAgICAgIEZsb2F0Lmlyb3VuZF9kb3duX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgcmVtX3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGhhbGZfdWxwID0gKGFic190IC0gcHJldiBhYnNfdCkgLyAyLiBpblxuICAgICAgICAgICAgbGV0IG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdCA9XG4gICAgICAgICAgICAgICgqIFRoaXMgd29ya3Mgb3V0IHRvIHJvdW5kaW5nIGRvd24sIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBleGFjdCBpbnRlZ2VycyxcbiAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIGRlY3JlbWVudGVkLiBUaGlzIG1ha2VzIHN1cmUgd2UgYWx3YXlzIHN0b3AgYXQgYSBkaWdpdCB3aXRoXG4gICAgICAgICAgICAgICAgIHN0cmljdGx5IG1vcmUgcHJlY2lzaW9uIHRoYW4gaGFsZiB0aGUgVUxQLiAqKVxuICAgICAgICAgICAgICBJbnQucHJlZCAoRmxvYXQuaXJvdW5kX3VwX2V4biAoZGVjaW1hbF9vcmRlcl9vZl9tYWduaXR1ZGUgaGFsZl91bHApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBudW1iZXJfb2ZfZGlnaXRzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgMSArIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaWdpdCAtIG9yZGVyX29mX21hZ25pdHVkZV9vZl9maW5hbF9kaWdpdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgICAgc3ByaW50ZiBcIiUuKmdcIiBudW1iZXJfb2ZfZGlnaXRzIG1hZ25pdHVkZSBeIHN1ZmZpeCkpXG4gICAgICA7O1xuXG4gICAgICAoKiBUaGlzIGhlbHBlciBhdm9pZHMgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbiwgYmVjYXVzZSBmb3Igb3VyIHVzZSBiZWxvdywgaXQgaXNcbiAgICAgICAgIGNvbW1vbiB0byBoYXZlIGVpdGhlciBvciBib3RoIGFyZ3VtZW50cyBiZSBlbXB0eS4gQ3VycmVudGx5ICgyMDE4LTAyKSwgdGhlXG4gICAgICAgICBidWlsdC1pbiBbXl0gYWxsb2NhdGVzIGV2ZW4gd2hlbiBhcHBlbmRpbmcgdG8gYW4gZW1wdHkgc3RyaW5nLiAqKVxuICAgICAgbGV0ICggXj8gKSB4IHkgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgeCB0aGVuIHkgZWxzZSBpZiBTdHJpbmcuaXNfZW1wdHkgeSB0aGVuIHggZWxzZSB4IF4geVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IGZsb2F0ID0gdG9fZmxvYXQgdCBpblxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBmbG9hdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICgqIFdlIHByaW50IHNwZWNpZmljIHNwZWNpYWwgc3RyaW5ncyBmb3Igbm9uLWZpbml0ZSBmbG9hdHMgKilcbiAgICAgICAgICAgIEZsb2F0LmlzX25hbiBmbG9hdFxuICAgICAgICAgIHRoZW4gXCJOQU5zXCJcbiAgICAgICAgICBlbHNlIGlmIEZsb2F0LmlzX25lZ2F0aXZlIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIi1JTkZzXCJcbiAgICAgICAgICBlbHNlIFwiSU5Gc1wiXG4gICAgICAgIGVsc2UgaWYgdCA9IHplcm9cbiAgICAgICAgdGhlbiBcIjBzXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSB0IGluXG4gICAgICAgICAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgICAgICAgICBsZXQgc2lnbiA9IGlmIHQgPCB6ZXJvIHRoZW4gXCItXCIgZWxzZSBcIlwiIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZV9zdHJpbmcgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lIHdpdGhcbiAgICAgICAgICAgICgqIFdlIGNhbiB1c2Ugbm9ybWFsIGZsb2F0IG5vdGF0aW9uIGZvciBzZWNvbmRzIGFuZCBzdWItc2Vjb25kIHVuaXRzLCB0aGV5IGFyZVxuICAgICAgICAgICAgICAgcmVhZGFibGUgd2l0aCBhIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgfCBNaWNyb3NlY29uZCB8IE1pbGxpc2Vjb25kIHwgU2Vjb25kIC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOk5hbm9zZWNvbmRcbiAgICAgICAgICAgICgqIEZvciBsYXJnZSBlbm91Z2ggdmFsdWVzIHRoYXQgdGhlIFVMUCBpcyBhIGRheSBvciBtb3JlLCB3ZSBjYW4gdXNlIGZsb2F0XG4gICAgICAgICAgICAgICBub3RhdGlvbiBiZWNhdXNlIHdlIGFyZSBleHByZXNzaW5nIGEgc2luZ2xlLCB2ZXJ5IGxhcmdlIGludGVnZXIuICopXG4gICAgICAgICAgICB8IERheSB3aGVuIG5leHQgYWJzX3QgLSBhYnNfdCA+PSBkYXkgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6RGF5XG4gICAgICAgICAgICAoKiBGb3IgZXZlcnl0aGluZyBpbiBiZXR3ZWVuLCB3ZSBuZWVkIHRvIHVzZSBpbnRlZ2VyIHVuaXRzIG9mIGRheXMsIGhvdXJzLFxuICAgICAgICAgICAgICAgYW5kL29yIG1pbnV0ZXMsIGJlY2F1c2UgdGhvc2UgdW5pdHMgYXJlIG5vdCByZWFkYWJsZSBhcyBkZWNpbWFscywgYW5kIHdlXG4gICAgICAgICAgICAgICB0YWNrIG9uIGEgZGVjaW1hbCByZW1haW5kZXIgb2YgYSBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBpZiBuZWNlc3NhcnkuICopXG4gICAgICAgICAgICB8IE1pbnV0ZSB8IEhvdXIgfCBEYXkgLT5cbiAgICAgICAgICAgICAgbGV0IHN1bV90ID0gemVybyBpblxuICAgICAgICAgICAgICBsZXQgZGF5X3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBEYXkgaW5cbiAgICAgICAgICAgICAgbGV0IGhvdXJfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IEhvdXIgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgTWludXRlIGluXG4gICAgICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPSB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfmFic190IH5zdW1fdCBpblxuICAgICAgICAgICAgICBkYXlfc3RyaW5nIF4/IGhvdXJfc3RyaW5nIF4/IG1pbnV0ZV9zdHJpbmcgXj8gZmxvYXRfc3RyaW5nXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzaWduIF4/IG1hZ25pdHVkZV9zdHJpbmcpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TcGFuLlN0YWJsZS5WMy50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYzXG5cbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgPSB0b19mbG9hdFxuXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIEZsb2F0Lmdlbl9pbmNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgKCogVGVjaG5pY2FsbHkgZXhjbHVzaXZlIHJhdGhlciB0aGFuIGluY2x1c2l2ZSwgYnV0IG90aGVyd2lzZSBzYXRpc2ZpZXMgdGhlIGNvbnRyYWN0IHRvXG4gICAgIHdpdGhpbiAxdWxwIG9mIHRoZSBnaXZlbiBib3VuZHMuICopXG4gIEZsb2F0Lmdlbl91bmlmb3JtX2V4Y2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgKCogV2UgZ2VuZXJhdGUgc3BhbnMgdXAgdG8gKHNsaWdodGx5IG1vcmUgdGhhbikgYSBtaWxsZW5pdW0sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLiBUaGlzXG4gICAgIGlzIGJhc2VkIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIGluIHdoaWNoIHllYXJzIGF2ZXJhZ2UgMzY1LjI0MjUgZGF5cyB3aGVuXG4gICAgIGFjY291bnRpbmcgZm9yIGxlYXAgZGF5cy4gQ292ZXJpbmcgYSB0d28tbWlsbGVuaXVtIHNwYW4gaXMgbW9yZSB0aGFuIGVub3VnaCBmb3IgbW9zdFxuICAgICBwcmFjdGljYWwgcHVycG9zZXMsIGNlcnRhaW5seSBtb3JlIHRoYW4gZW5vdWdoIHRvIGNvdmVyIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIG9mXG4gICAgIFtTcGFuX25zXSwgYW5kIHJlc3VsdHMgaW4gZmluaXRlIHNwYW5zIGFuZCB0aW1lcyB0aGF0IGNhbiBiZSBzZXJpYWxpemVkLlxuXG4gICAgIFdlIGdlbmVyYXRlIGJ5IGZpbHRlcmluZyB0aGUgZGVmYXVsdCBnZW5lcmF0b3Igc28gdGhhdCBzcGFucyBhcmUgc3RpbGwgc2tld2VkIHRvd2FyZFxuICAgICBzbWFsbCB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHRoZSBib3VuZHMgYXJlIGxhcmdlLiAqKVxuICBsZXQgbWlsbGVuaXVtID0gb2ZfZGF5IChGbG9hdC5yb3VuZF91cCAoMzY1LjI0MjUgKi4gMTAwMC4pKSBpblxuICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgcXVpY2tjaGVja19nZW5lcmF0b3IgfmY6KGZ1biB0IC0+XG4gICAgbmVnIG1pbGxlbml1bSA8PSB0ICYmIHQgPD0gbWlsbGVuaXVtKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5TcGFuXCJcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuXG4gICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIHNwYW5zIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbSAxMDguMDdcbiAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kIHByZXR0eVxuICAgICBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZCBmcm9tXG4gICAgIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWVcbiAgbGV0IHBhcnNlX3N1ZmZpeCA9IFN0YWJsZS5WMy5PZl9zdHJpbmcucGFyc2Vfc3VmZml4XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBTcGFuID0gU3Bhbl9mbG9hdFxuXG4oKiBDcmVhdGUgYW4gYWJzdHJhY3QgdHlwZSBmb3IgT2ZkYXkgdG8gcHJldmVudCB1cyBmcm9tIGNvbmZ1c2luZyBpdCB3aXRoXG4gICBvdGhlciBmbG9hdHMuXG4qKVxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA6IHNpZ1xuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gZmxvYXRcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLkV4cG9ydC5zdGFibGVfd2l0bmVzc19mbG9hdFxuICAgICAgICA7O1xuICAgICAgZW5kIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfaW50X21pbiBpID0gSW50NjMuKG9mX2ludCBpICogbWludXRlKVxubGV0IG9mX2ludF9ociBpID0gSW50NjMuKG9mX2ludCBpICogaG91cilcbmxldCBvZl9pbnRfZGF5IGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBkYXkpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9IFNwYW5fZmxvYXQub2Zfc2VjICh0b19zZWMgdClcbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgcyA9IG9mX3NlYyAoU3Bhbl9mbG9hdC50b19zZWMgcylcblxubW9kdWxlIFN0YWJsZTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWxdXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgVGltZV9mbG9hdC5TdGFibGUuU3Bhbi5WMS5zZXhwX29mX3QgKHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LlN0YWJsZS5TcGFuLlYxLnRfb2Zfc2V4cCBzKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0b19pbnQ2M19ucyB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biB0ID0gb2ZfaW50NjNfbnMgdFxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcblxuICAgICAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGUgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXG4gICAgICAgICAgICB0aGVuIDFcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwMFxuICAgICAgICAgICAgdGhlbiAyXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxXzAwMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMF8wMDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXzAwMFxuICAgICAgICAgICAgdGhlbiA1XG4gICAgICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICAoKiBzcGFuIHBhcnQgbWFnbml0dWRlcyBhcmUgYWx3YXlzIDwgMTAwXzAwMCAqKVxuXG4gICAgICAgICAgbGV0IG51bWJlcl9vZl9kZWNpbWFsX3BsYWNlc190b193cml0ZSB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgYXNzZXJ0IChiaWxsaW9udGhzID49IDAgJiYgYmlsbGlvbnRocyA8PSA5OTlfOTk5Xzk5OSk7XG4gICAgICAgICAgICBpZiBiaWxsaW9udGhzID0gMFxuICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDlcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDhcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gN1xuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNlxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDFfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDRcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwXzAwMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiAzXG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfY2hhciBidWYgfnBvcyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgY2hhcjtcbiAgICAgICAgICAgIHBvcyArIDFcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgY2hhcjEgY2hhcjIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyMTtcbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIChwb3MgKyAxKSBjaGFyMjtcbiAgICAgICAgICAgIHBvcyArIDJcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjMgYnVmIH5wb3MgfmRpZ2l0cyAoSW50NjMub2ZfaW50IGludCk7XG4gICAgICAgICAgICBwb3MgKyBkaWdpdHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5kZWNpbWFscyB+YmlsbGlvbnRocyA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfaW50NjNcbiAgICAgICAgICAgICAgYnVmXG4gICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgfmRpZ2l0czpkZWNpbWFsc1xuICAgICAgICAgICAgICAoSW50NjMub2ZfaW50IChiaWxsaW9udGhzIC8gSW50LnBvdyAxMCAoOSAtIGRlY2ltYWxzKSkpO1xuICAgICAgICAgICAgcG9zICsgZGVjaW1hbHNcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzIGludCBzdWZmaXggPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGlmIGRpZ2l0cyA9IDBcbiAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2RpZ2l0cyBidWYgfnBvcyB+ZGlnaXRzIGludCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfY2hhciBidWYgfnBvcyBzdWZmaXggaW5cbiAgICAgICAgICAgICAgcG9zKVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgPSB0b19pbnQ2M19ucyBtaWxsaXNlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IG5hbm9zX29mX21pY3Jvc2Vjb25kID0gdG9faW50NjNfbnMgbWljcm9zZWNvbmQgfD4gSW50NjMudG9faW50X2V4blxuICAgICAgICAgIGxldCBpbnQ2M182MCA9IEludDYzLm9mX2ludCA2MFxuICAgICAgICAgIGxldCBpbnQ2M18yNCA9IEludDYzLm9mX2ludCAyNFxuXG4gICAgICAgICAgKCogVW5pdHMgb2Ygc2Vjb25kcyBhbmQgc21hbGxlciBjYW4gYmUgd3JpdHRlbiBpbiBkZWNpbWFsIG5vdGF0aW9uIHdpdGhvdXRcbiAgICAgICAgICAgICB3b3JyeWluZyBhYm91dCBub24tcG93ZXItb2YtdGVuIGZhY3RvcnMuICopXG4gICAgICAgICAgbW9kdWxlIERlY2ltYWxfdW5pdCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBTZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZFxuICAgICAgICAgICAgICB8IE5vbmVcbiAgICAgICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgICAgIGxldCBjcmVhdGUgfnMgfm5zID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgcyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IDFcbiAgICAgICAgICAgICAgdGhlbiBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgTm9uZVxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGludGVnZXIgdCB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAvIG5hbm9zX29mX21pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE5vbmUgLT4gMFxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGJpbGxpb250aHMgdCB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gbnNcbiAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCAtPiBucyAlIG5hbm9zX29mX21pbGxpc2Vjb25kICogMV8wMDBcbiAgICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBucyAlIG5hbm9zX29mX21pY3Jvc2Vjb25kICogMV8wMDBfMDAwXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiAwXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgbGVuZ3RoIHQgfmRpZ2l0cyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX2xlbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgLT4gZGlnaXRzICsgMVxuICAgICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgfCBNaWNyb3NlY29uZCB8IE5hbm9zZWNvbmQgLT4gZGlnaXRzICsgMlxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsc19sZW4gPSBpZiBkZWNpbWFscyA+IDAgdGhlbiBkZWNpbWFscyArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgIGRpZ2l0c19sZW4gKyBkZWNpbWFsc19sZW5cbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZV9zdWZmaXggdCBidWYgfnBvcyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiB3cml0ZV9jaGFyIGJ1ZiB+cG9zICdzJ1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ20nICdzJ1xuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IHdyaXRlXzJfY2hhcnMgYnVmIH5wb3MgJ3UnICdzJ1xuICAgICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbicgJ3MnXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwb3NcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCB3cml0ZSB0IGJ1ZiB+cG9zIH5pbnRlZ2VyIH5kaWdpdHMgfmJpbGxpb250aHMgfmRlY2ltYWxzID1cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIGludGVnZXIgfmRpZ2l0cyBpblxuICAgICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgICAgaWYgZGVjaW1hbHMgPSAwXG4gICAgICAgICAgICAgICAgICB0aGVuIHBvc1xuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zICcuJyBpblxuICAgICAgICAgICAgICAgICAgICB3cml0ZV9kZWNpbWFscyBidWYgfnBvcyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB3cml0ZV9zdWZmaXggdCBidWYgfnBvcylcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kXG5cbiAgICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgICAgaWYgZXF1YWwgdCB6ZXJvXG4gICAgICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9IHQgPCB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuKCAvICkgKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIGluXG4gICAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgICAgSW50NjMucmVtICh0b19pbnQ2M19ucyB0KSAodG9faW50NjNfbnMgc2Vjb25kKSB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzZWNvbmRzID0gSW50NjMuYWJzIHNlY29uZHMgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID0gSW50LmFicyBucyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IEludDYzLnJlbSBzZWNvbmRzIGludDYzXzYwIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG1pbnV0ZXMgPSBJbnQ2My4oIC8gKSBzZWNvbmRzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBtID0gSW50NjMucmVtIG1pbnV0ZXMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgaG91cnMgPSBJbnQ2My4oIC8gKSBtaW51dGVzIGludDYzXzYwIGluXG4gICAgICAgICAgICAgIGxldCBoID0gSW50NjMucmVtIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IGQgPSBJbnQ2My4oIC8gKSBob3VycyBpbnQ2M18yNCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfZCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2ggPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOmggaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9tID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTptIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXQgPSBEZWNpbWFsX3VuaXQuY3JlYXRlIH5zIH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2ludGVnZXIgPSBEZWNpbWFsX3VuaXQuaW50ZWdlciBkZWNpbWFsX3VuaXQgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfYmlsbGlvbnRocyA9IERlY2ltYWxfdW5pdC5iaWxsaW9udGhzIGRlY2ltYWxfdW5pdCB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kZWNpbWFsX3VuaXQgPVxuICAgICAgICAgICAgICAgIG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgICAgICAgICAgICBsZXQgc2lnbl9sZW4gPSBpZiBpc19uZWdhdGl2ZSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRfbGVuID0gaWYgZGlnaXRzX29mX2QgPiAwIHRoZW4gZGlnaXRzX29mX2QgKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBoX2xlbiA9IGlmIGRpZ2l0c19vZl9oID4gMCB0aGVuIGRpZ2l0c19vZl9oICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgbV9sZW4gPSBpZiBkaWdpdHNfb2ZfbSA+IDAgdGhlbiBkaWdpdHNfb2ZfbSArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9sZW4gPVxuICAgICAgICAgICAgICAgICAgRGVjaW1hbF91bml0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRpZ2l0czpkaWdpdHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHNpZ25fbGVuICsgZF9sZW4gKyBoX2xlbiArIG1fbGVuICsgZGVjaW1hbF91bml0X2xlblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhc3NlcnQgKHN0cmluZ19sZW5ndGggPiAwKTtcbiAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBzdHJpbmdfbGVuZ3RoIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSBpZiBpc19uZWdhdGl2ZSB0aGVuIHdyaXRlX2NoYXIgYnVmIH5wb3MgJy0nIGVsc2UgcG9zIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfZCBkICdkJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2ggaCAnaCcgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9tIG0gJ20nIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIERlY2ltYWxfdW5pdC53cml0ZVxuICAgICAgICAgICAgICAgICAgZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgIH5pbnRlZ2VyOmRlY2ltYWxfdW5pdF9pbnRlZ2VyXG4gICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIH5iaWxsaW9udGhzOmRlY2ltYWxfdW5pdF9iaWxsaW9udGhzXG4gICAgICAgICAgICAgICAgICB+ZGVjaW1hbHM6ZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAocG9zID0gc3RyaW5nX2xlbmd0aCk7XG4gICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmKVxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIE9mX3N0cmluZyA9IHN0cnVjdFxuICAgICAgICAgICgqIFdlIGRvIGNvbXB1dGF0aW9ucyB1c2luZyBuZWdhdGl2ZSBudW1iZXJzIGV2ZXJ5d2hlcmUgYW5kIHRlc3QgYWdhaW5zdFxuICAgICAgICAgICAgIHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5taW5fdmFsdWVdIHJhdGhlciB0aGFuIHVzaW5nIHBvc2l0aXZlIG51bWJlcnNcbiAgICAgICAgICAgICBhbmQgdGVzdGluZyBhZ2FpbnN0IHRoaW5ncyByZWxhdGVkIHRvIFtJbnQ2My5tYXhfdmFsdWVdIGJlY2F1c2UgdGhlXG4gICAgICAgICAgICAgbmVnYXRpdmUgaW50ZWdlciByYW5nZSBpcyBvbmUgd2lkZXIgdGhhbiB0aGUgcG9zaXRpdmUgaW50ZWdlciByYW5nZVxuICAgICAgICAgICAgICgtMioqNjMgdnMgMioqNjMtMSksIGFuZCB3ZSBuZWVkIHRoYXQgdG8gYmUgYWJsZSB0byBoYW5kbGUgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgbmljZWx5LiAqKVxuXG4gICAgICAgICAgbGV0IGludDYzXzEwID0gSW50NjMub2ZfaW50IDEwXG4gICAgICAgICAgbGV0IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3cgPSBJbnQ2My4obWluX3ZhbHVlIC8gaW50NjNfMTApXG5cbiAgICAgICAgICBsZXRbQGNvbGRdIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uID1cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJUaW1lX25zLlNwYW4ub2Zfc3RyaW5nOiBpbnZhbGlkIHN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAoc3RyaW5nIDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgKHJlYXNvbiA6IHN0cmluZyldXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIEFzc3VtZXMgeCBhbmQgeSBhcmUgYm90aCBub25wb3NpdGl2ZSAqKVxuICAgICAgICAgIGxldCBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyB4IHkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IHN1bSA9IHggKyB5IGluXG4gICAgICAgICAgICBpZiBzdW0gPiB4XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBzdW1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IGFkZF9uZWdfZGlnaXQgfnN0cmluZyBpbnQ2MyBjaGFyID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgICAgICAgIGxldCBkaWdpdCA9IEludDYzLm9mX2ludCAoQ2hhci5nZXRfZGlnaXRfZXhuIGNoYXIpIGluXG4gICAgICAgICAgICBpZiBpbnQ2MyA8IG1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIChpbnQ2MyAqIGludDYzXzEwKSAoLWRpZ2l0KVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbWluX2ZhY3Rvcl9vZiBzcGFuID0gSW50NjMuKCAvICkgSW50NjMubWluX3ZhbHVlICh0b19pbnQ2M19ucyBzcGFuKVxuICAgICAgICAgIGxldCBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgZGF5XG4gICAgICAgICAgbGV0IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgaG91clxuICAgICAgICAgIGxldCBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWludXRlXG4gICAgICAgICAgbGV0IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWlsbGlzZWNvbmRcbiAgICAgICAgICBsZXQgbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvdyA9IG1pbl9mYWN0b3Jfb2YgbWljcm9zZWNvbmRcbiAgICAgICAgICBsZXQgbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBuYW5vc2Vjb25kXG5cbiAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICAgICAgICB8IERheSAtPiBtaW5fZGF5c193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBIb3VyIC0+IG1pbl9ob3Vyc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaW51dGUgLT4gbWluX21pbnV0ZXNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgU2Vjb25kIC0+IG1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbl9taWxsaXNlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG1pbl9uYW5vc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBzY2FsZSA9IHRvX2ludDYzX25zIChvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSBpblxuICAgICAgICAgICAgbGV0IG1pbl93aXRob3V0X3VuZGVyZmxvdyA9XG4gICAgICAgICAgICAgIG1pbl93aXRob3V0X3VuZGVyZmxvd19vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgSW50NjMuKCA8ICkgbmVnX2ludGVnZXIgbWluX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic3BhbiB3b3VsZCBiZSBvdXRzaWRlIG9mIGludDYzIHJhbmdlXCI7XG4gICAgICAgICAgICBsZXQgbmVnX2ludGVnZXJfbnMgPSBJbnQ2My4oICogKSBuZWdfaW50ZWdlciBzY2FsZSBpblxuICAgICAgICAgICAgbGV0IGZyYWN0aW9uX3BvcyA9IGRlY2ltYWxfcG9zICsgMSBpblxuICAgICAgICAgICAgaWYgZnJhY3Rpb25fcG9zID49IGVuZF9wb3NcbiAgICAgICAgICAgIHRoZW4gbmVnX2ludGVnZXJfbnNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9ucyA9XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMucmVhZF9pbnQ2M19kZWNpbWFsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5wb3M6ZnJhY3Rpb25fcG9zXG4gICAgICAgICAgICAgICAgICB+c2NhbGVcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczooZW5kX3BvcyAtIGZyYWN0aW9uX3BvcylcbiAgICAgICAgICAgICAgICAgIH5hbGxvd191bmRlcnNjb3JlOnRydWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzOnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIG5lZ19pbnRlZ2VyX25zIChJbnQ2My4oIH4tICkgZGVjaW1hbF9ucykpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBsZXQgbmVnX25zID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBzdHJpbmdcIjtcbiAgICAgICAgICAgIGxldCBpc19uZWdhdGl2ZSA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgfCAnLScgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgIHwgJysnIC0+XG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nIDogRGlnaXRfc3RyaW5nX2hlbHBlcnMuUm91bmQudCA9XG4gICAgICAgICAgICAgICgqIFVsdGltYXRlbHksIHdlIGFsd2F5cyByb3VuZCBwYXJzZWQgc3BhbnMgdG93YXJkcyBwb3NpdGl2ZSBpbmZpbml0eSB3aGVuXG4gICAgICAgICAgICAgICAgIHRoZSBuZWFyZXN0IHJvdW5kIG5zIGFyZSBlcXVpZGlzdGFudC4gRm9yIGV4YW1wbGUsIFwiMS41bnNcIiBpcyByZWFkIGFzXG4gICAgICAgICAgICAgICAgIDIuMG5zLCBhbmQgXCItMS41bnNcIiBpcyByZWFkIGFzIC0xbnMuIFNpbmNlIHdlIHJlYWQgYWJzb2x1dGUgdmFsdWVzIGJlZm9yZVxuICAgICAgICAgICAgICAgICBhcHBseWluZyB0aGUgc2lnbiwgd2UgbXVzdCBjaG9vc2Ugb3VyIHJvdW5kaW5nIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGVcbiAgICAgICAgICAgICAgICAgc2lnbi4gUm91bmRpbmcgZGVjaW1hbCB2YWx1ZXMgaGFwcGVucyBiZWZvcmUgbmVnYXRpbmcgdGhlaXIgbWFnbml0dWRlLiAqKVxuICAgICAgICAgICAgICBtYXRjaCBpc19uZWdhdGl2ZSB3aXRoXG4gICAgICAgICAgICAgIHwgZmFsc2UgLT4gVG93YXJkX3Bvc2l0aXZlX2luZmluaXR5XG4gICAgICAgICAgICAgIHwgdHJ1ZSAtPiBUb3dhcmRfbmVnYXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBMb29wIG92ZXIgcGFydHMsIGxpa2UgXCI1bVwiIGluIFwiMWg1bTMwc1wiICopXG4gICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuIGRvXG4gICAgICAgICAgICAgIGxldCBoYXNfZGlnaXQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19pbnRlZ2VyID1cbiAgICAgICAgICAgICAgICBsZXQgaSA9IHJlZiBJbnQ2My56ZXJvIGluXG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kaWdpdHMgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICAgICAgICB3aGlsZSAhcG9zIDwgbGVuICYmIG5vdCAhZW5kX29mX2RpZ2l0cyBkb1xuICAgICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgICAgICAgICAgICAgaSA6PSBhZGRfbmVnX2RpZ2l0IH5zdHJpbmcgIWkgYztcbiAgICAgICAgICAgICAgICAgICAgaGFzX2RpZ2l0IDo9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8ICdfJyAtPiBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCBfIC0+IGVuZF9vZl9kaWdpdHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIWlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfcG9zID0gIXBvcyBpblxuICAgICAgICAgICAgICBpZiAhcG9zIDwgbGVuICYmIENoYXIuZXF1YWwgJy4nIChTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcylcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgbGV0IGVuZF9vZl9kZWNpbWFscyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGVjaW1hbHMgZG9cbiAgICAgICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RlY2ltYWxzIDo9IHRydWVcbiAgICAgICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAgICAgbGV0IGVuZF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmIG5vdCAhaGFzX2RpZ2l0XG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJubyBkaWdpdHMgYmVmb3JlIHVuaXQgc3VmZml4XCI7XG4gICAgICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICAgICAgICAgICAgaWYgIXBvcyArIDEgPCBsZW4gJiYgQ2hhci5lcXVhbCAncycgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAoIXBvcyArIDEpKVxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICAgICAgfCAndScgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICAgICAgfCAnbicgLT5cbiAgICAgICAgICAgICAgICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgICAgICAgICAgICAgICBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ1bnBhcnNlYWJsZSB1bml0IHN1ZmZpeFwiKVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgIXBvcyA8IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnZCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIERheVxuICAgICAgICAgICAgICAgICAgfCAnaCcgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIEhvdXJcbiAgICAgICAgICAgICAgICAgIHwgJ20nIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBNaW51dGVcbiAgICAgICAgICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICBTZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIHVuaXQgc3VmZml4IGFmdGVyIGRpZ2l0c1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZWdfbmFub3Nfb2ZfcGFydCA9XG4gICAgICAgICAgICAgICAgbmVnYXRpdmVfcGFydFxuICAgICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgICB+bmVnX2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsX3Bvc1xuICAgICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICAgIH51bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgICAgIH5yb3VuZF90aWVzX2JlZm9yZV9uZWdhdGluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBuZWdfbnMgOj0gYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgIW5lZ19ucyBuZWdfbmFub3Nfb2ZfcGFydFxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGxldCBucyA9XG4gICAgICAgICAgICAgIGlmIGlzX25lZ2F0aXZlXG4gICAgICAgICAgICAgIHRoZW4gIW5lZ19uc1xuICAgICAgICAgICAgICBlbHNlIGlmIEludDYzLiggPSApICFuZWdfbnMgSW50NjMubWluX3ZhbHVlXG4gICAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIlxuICAgICAgICAgICAgICBlbHNlIEludDYzLiggfi0gKSAhbmVnX25zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgb2ZfaW50NjNfbnMgbnNcbiAgICAgICAgICA7O1xuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gT2Zfc3RyaW5nLm9mX3N0cmluZ1xuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWVfbnMuU3Bhbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUMClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5vcGVuIHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlMFxuZW5kXG5cbmxldCB0b19zdHJpbmcgPSBTdGFibGUuVjIudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gU3RhYmxlLlYyLm9mX3N0cmluZ1xubGV0IHNleHBfb2ZfdCA9IFN0YWJsZS5WMi5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBTdGFibGUuVjIudF9vZl9zZXhwXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTdGFibGUuVjIudF9zZXhwX2dyYW1tYXJcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogRnVuY3Rpb25zIHJlcXVpcmVkIGJ5IFtSb2J1c3RseV9jb21wYXJhYmxlXTogYWxsb3dzIGZvciBbcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXVxuICAgZ3JhbnVsYXJpdHkuXG5cbiAgIEEgbWljcm9zZWNvbmQgaXMgYSByZWFzb25hYmxlIGdyYW51bGFyaXR5IGJlY2F1c2UgdGhlcmUgaXMgdmVyeSBsaXR0bGUgbmV0d29ya1xuICAgYWN0aXZpdHkgdGhhdCBjYW4gYmUgbWVhc3VyZWQgdG8gc3ViLW1pY3Jvc2Vjb25kIHJlc29sdXRpb24uICopXG5sZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gbWljcm9zZWNvbmRcbmxldCAoID49LiApIHQgdSA9IHQgPj0gSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8PS4gKSB0IHUgPSB0IDw9IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPS4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpIDw9IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0ICggPi4gKSB0IHUgPSB0ID4gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8LiApIHQgdSA9IHQgPCBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw+LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCByb2J1c3RseV9jb21wYXJlIHQgdSA9IGlmIHQgPC4gdSB0aGVuIC0xIGVsc2UgaWYgdCA+LiB1IHRoZW4gMSBlbHNlIDBcblxuKCogV2UgZG9uJ3QganVzdCBjb252ZXJ0IHRvIFtUaW1lLlNwYW4udF0gYW5kIHVzZSB0aGUgY29udmVyc2lvbiB0aGVyZSBiZWNhdXNlIG91clxuICAgW3RvX3NwYW5dIGNvbnZlcnNpb24gaXMgbGltaXRlZCB0byBtaWNyb3NlY29uZCBwcmVjaXNpb24uICopXG5sZXQgdG9fc3RyaW5nX2h1bVxuICAgICAgPyhkZWxpbWl0ZXIgPSAnXycpXG4gICAgICA/KGRlY2ltYWxzID0gMylcbiAgICAgID8oYWxpZ25fZGVjaW1hbCA9IGZhbHNlKVxuICAgICAgP3VuaXRfb2ZfdGltZVxuICAgICAgdFxuICA9XG4gIGxldCBmbG9hdCwgc3VmZml4ID1cbiAgICBtYXRjaCBPcHRpb24udmFsdWUgdW5pdF9vZl90aW1lIH5kZWZhdWx0Oih0b191bml0X29mX3RpbWUgdCkgd2l0aFxuICAgIHwgRGF5IC0+IHRvX2RheSB0LCBcImRcIlxuICAgIHwgSG91ciAtPiB0b19ociB0LCBcImhcIlxuICAgIHwgTWludXRlIC0+IHRvX21pbiB0LCBcIm1cIlxuICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0LCBcInNcIlxuICAgIHwgTWlsbGlzZWNvbmQgLT4gdG9fbXMgdCwgXCJtc1wiXG4gICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0LCBcInVzXCJcbiAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdCwgXCJuc1wiXG4gIGluXG4gIGxldCBwcmVmaXggPVxuICAgIEZsb2F0LnRvX3N0cmluZ19odW0gZmxvYXQgfmRlbGltaXRlciB+ZGVjaW1hbHMgfnN0cmlwX3plcm86KG5vdCBhbGlnbl9kZWNpbWFsKVxuICBpblxuICBsZXQgc3VmZml4ID1cbiAgICBpZiBhbGlnbl9kZWNpbWFsICYmIEludC4oID0gKSAoU3RyaW5nLmxlbmd0aCBzdWZmaXgpIDEgdGhlbiBzdWZmaXggXiBcIiBcIiBlbHNlIHN1ZmZpeFxuICBpblxuICBwcmVmaXggXiBzdWZmaXhcbjs7XG5cbmxldCBzaW5jZV91bml4X2Vwb2NoICgpID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBvZl9pbnQ2M19uc1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9XG4gIEludDYzLnJhbmRvbSA/c3RhdGUgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuICAtIEludDYzLnJhbmRvbSA/c3RhdGUgKG5lZyBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbjs7XG5cbmxldCByYW5kb21pemUgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0IH5wZXJjZW50ID1cbiAgU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IHN0YXRlIH5wZXJjZW50IH5zY2FsZVxuOztcblxubGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgbGV0ICh7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9IDogUGFydHMudCkgPSB0b19wYXJ0cyB0IGluXG4gIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuOztcblxubGV0IGdlbl9pbmNsID0gSW50NjMuZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gSW50NjMuZ2VuX3VuaWZvcm1faW5jbFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IG1vZHVsZV9uYW1lXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kKVxuXG50eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IFN0YWJsZS5WMi5jb21wYXJhdG9yXG4gIGVuZClcblxuKCogcmUtaW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhbmQgaXRzIGNvbXBhcmlzb25zIHRvIHNoYWRvdyB0aGVcbiAgIHVuLWlubGluZWFibGUgb25lcyBmcm9tIFtDb21wYXJhYmxlXSAqKVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaGFsZl9taWNyb3NlY29uZCA9IEludDYzLm9mX2ludCA1MDBcbmxldCBuZWFyZXN0X21pY3Jvc2Vjb25kIHQgPSBJbnQ2My4oKHRvX2ludDYzX25zIHQgKyBoYWxmX21pY3Jvc2Vjb25kKSAvJSBvZl9pbnQgMTAwMClcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiU3Bhbi50IGV4Y2VlZHMgbGltaXRzXCJcbiAgICAgICAgKHQgOiB0KVxuICAgICAgICAobWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KVxuICAgICAgICAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgOiB0KV1cbjs7XG5cbmxldCBjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICBpZiB0IDwgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgfHwgdCA+IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW4gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHRcbiAgZWxzZSB0XG47O1xuXG5sZXQgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBTcGFuX2Zsb2F0Lm9mX3VzIChJbnQ2My50b19mbG9hdCAobmVhcmVzdF9taWNyb3NlY29uZCAoY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0KSkpXG47O1xuXG5sZXQgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgcyA9XG4gIGlmIFNwYW5fZmxvYXQuKCA+ICkgcyBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFNwYW5fZmxvYXQuKCA8ICkgcyBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucy5TcGFuIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBzcGFuXCJcbiAgICAgIHNcbiAgICAgIFslc2V4cF9vZjogU3Bhbl9mbG9hdC50XTtcbiAgKCogVXNpbmcgW1RpbWUuU3Bhbi50b19zZWNdIChiZWluZyB0aGUgaWRlbnRpdHkpIHNvIHRoYXRcbiAgICAgd2UgbWFrZSBkb24ndCBhcHBseSB0b28gbWFueSBjb252ZXJzaW9uXG4gICAgIC0gVG9vIG1hbnkgOiBgW1NwYW4udF0gLT4gW2FdIC0+IFt0XWBcbiAgICAgLSBPbmx5IE9uZSA6IGBbU3Bhbi50XT09W2FdIC0+IFt0XWAuICopXG4gIG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoU3Bhbl9mbG9hdC50b19zZWMgcylcbjs7XG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1pbl92YWx1ZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWF4X3ZhbHVlXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBvZl9wYXJ0cyA9IG9mX3BhcnRzXG4gIGxldCB0b19wYXJ0cyA9IHRvX3BhcnRzXG5lbmRcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgdG9fc3BhbiA9IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgc3BhbiA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG4gICgqIG5hbm9zZWNvbmRzIG9yIG5vbmUgKilcblxuICBsZXQgbm9uZSA9IEludDYzLm1pbl92YWx1ZVxuICBsZXQgaXNfbm9uZSB0ID0gSW50NjMuKHQgPSBub25lKVxuICBsZXQgaXNfc29tZSB0ID0gSW50NjMuKHQgPD4gbm9uZSlcbiAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuID0gaXNfc29tZSAodG9faW50NjNfbnMgc3BhbilcblxuICBsZXRbQGNvbGRdIHJhaXNlX3NvbWVfZXJyb3Igc3BhbiA9XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlNwYW4uT3B0aW9uLnNvbWUgdmFsdWUgbm90IHJlcHJlc2VudGFibGVcIiAoc3BhbiA6IHNwYW4pXVxuICA7O1xuXG4gIGxldCBzb21lIHNwYW4gPVxuICAgIGlmIHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuIHRoZW4gdG9faW50NjNfbnMgc3BhbiBlbHNlIHJhaXNlX3NvbWVfZXJyb3Igc3BhblxuICA7O1xuXG4gIGxldCB1bmNoZWNrZWRfdmFsdWUgdCA9IG9mX2ludDYzX25zIHRcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcblxuICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgIGlmIGlzX3NvbWUgdFxuICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJTcGFuLk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICA7O1xuXG4gIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHQgLT4gc29tZSB0XG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG9mX2ludDYzX25zIHQpXG5cbiAgbW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gICAgbW9kdWxlIFNvbWUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHNwYW5cblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBxdWlja2NoZWNrX3Nocmlua2VyIH5mOnNvbWVfaXNfcmVwcmVzZW50YWJsZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFNvbWUudCBvcHRpb24gW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGJpbl9pb11cblxuICAgICAgICBsZXQgdjFfc29tZSBzcGFuID1cbiAgICAgICAgICBhc3NlcnQgKHNvbWVfaXNfcmVwcmVzZW50YWJsZSBzcGFuKTtcbiAgICAgICAgICB0b19pbnQ2M19ucyBzcGFuXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwX29mOiBTdGFibGUuVjEudCBvcHRpb25dICh0b19vcHRpb24gdClcbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID0gb2Zfb3B0aW9uIChbJW9mX3NleHA6IFN0YWJsZS5WMS50IG9wdGlvbl0gcylcbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biBpID0gaWYgaXNfbm9uZSBpIHRoZW4gbm9uZSBlbHNlIHYxX3NvbWUgKG9mX2ludDYzX25zIGkpXG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICAgIG9mX2ludDYzX2V4blxuICAgICAgICAgICAgdG9faW50NjNcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgICAgU2V4cC5MaXN0XG4gICAgICAgICAgICAoaWYgaXNfbm9uZSB0IHRoZW4gW10gZWxzZSBbIFN0YWJsZS5WMi5zZXhwX29mX3QgKHVuY2hlY2tlZF92YWx1ZSB0KSBdKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IGZhaWwgKCkgPVxuICAgICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5PcHRpb24uU3RhYmxlLlYyLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGEgTGlzdCBvZiAwLTEgQXRvbVwiXG4gICAgICAgICAgICAgIHNleHBcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5BdG9tIF8gLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU2V4cC5MaXN0IGxpc3QgLT5cbiAgICAgICAgICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICAgICB8IFtdIC0+IG5vbmVcbiAgICAgICAgICAgICB8IFsgU2V4cC5BdG9tIHggXSAtPlxuICAgICAgICAgICAgICAgc29tZVxuICAgICAgICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3IgKEV4bi50b19zdHJpbmcgZXhuKSBzZXhwKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsICgpKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBvZl9pbnQ2M19leG4gaSA9IGlcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfaW50NjNfZXhuXG4gICAgICAgICAgICB0b19pbnQ2M1xuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvLCBoYXNoXVxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuLk9wdGlvblwiXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuICAgIGVuZClcblxuICBpbmNsdWRlIChJbnQ2MyA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlMFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBPcHRpb24uU3RhYmxlLlYxXG4gICAgbW9kdWxlIFYyID0gT3B0aW9uLlN0YWJsZS5WMlxuICBlbmRcbmVuZFxuXG5sZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5cbnR5cGUgdW5kZXJseWluZyA9IEludDYzLnRcbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTcGFuLlN0YWJsZS5WMi50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTcGFuLlN0YWJsZS5WMiA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFNwYW4uU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGxldCB0b19zdHJpbmdfd2l0aF91bml0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCBtb2QgKSA9IEludDYzLnJlbSBpblxuICAgICAgbGV0ICggISApID0gSW50NjMub2ZfaW50IGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGZ1biB0IH51bml0IC0+XG4gICAgICAgIGlmIFNwYW4uKCA8ICkgdCBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oIDwgKSBzdGFydF9vZl9uZXh0X2RheSB0XG4gICAgICAgIHRoZW4gXCJJbmNvcnJlY3QgZGF5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNpeHR5ID0gITYwIGluXG4gICAgICAgICAgbGV0IHRob3VzYW5kID0gITEwMDAgaW5cbiAgICAgICAgICBsZXQgbnMgPSBTcGFuLnRvX2ludDYzX25zIHQgaW5cbiAgICAgICAgICBsZXQgdXMgPSBucyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG5zID0gbnMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbXMgPSB1cyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IHVzID0gdXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgcyA9IG1zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbXMgPSBtcyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gcyAvIHNpeHR5IGluXG4gICAgICAgICAgbGV0IHMgPSBzIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IGggPSBtIC8gc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBtID0gbSBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCB1bml0ID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCAoYE5hbm9zZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgU2Vjb25kKSBhcyB1bml0IC0+IHVuaXRcbiAgICAgICAgICAgIHwgYE1pbnV0ZV9vcl9sZXNzIC0+XG4gICAgICAgICAgICAgIGlmIG5zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTmFub3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHVzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBtcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgcyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGBNaW51dGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IGBNaW51dGUgLT4gNVxuICAgICAgICAgICAgfCBgU2Vjb25kIC0+IDhcbiAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+IDEyXG4gICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAxNVxuICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiAxOFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczowIGg7XG4gICAgICAgICAgQnl0ZXMuc2V0IHN0ciAyICc6JztcbiAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczozIG07XG4gICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICB8IGBNaW51dGUgLT4gKClcbiAgICAgICAgICAgfCAoYFNlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA1ICc6JztcbiAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8yX2RpZ2l0X2ludCBzdHIgfnBvczo2IHM7XG4gICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICB8IGBTZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgfCAoYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDggJy4nO1xuICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjkgbXM7XG4gICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICB8IChgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjEyIHVzO1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgfCBgTmFub3NlY29uZCAtPiBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxNSBucykpKSk7XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzdHIpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvcyB+dW50aWwgPVxuICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgIGxldCBkaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IG51bV9kaWdpdHMgPSByZWYgMCBpblxuICAgICAgbGV0IHBvcyA9IHJlZiBwb3MgaW5cbiAgICAgICgqIHJlYWQgdXAgdG8gMTAgZGlnaXRzOyBzdG9yZSB0aGUgZmlyc3QgOSwgdXNlIHRoZSAxMHRoIHRvIHJvdW5kICopXG4gICAgICB3aGlsZSAhcG9zIDwgdW50aWwgJiYgIW51bV9kaWdpdHMgPCAxMCBkb1xuICAgICAgICBsZXQgYyA9IHN0cmluZy5bIXBvc10gaW5cbiAgICAgICAgaWYgQ2hhci5pc19kaWdpdCBjXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGluY3IgbnVtX2RpZ2l0cztcbiAgICAgICAgICBpZiAhbnVtX2RpZ2l0cyA8IDEwXG4gICAgICAgICAgdGhlbiBkaWdpdHMgOj0gKCFkaWdpdHMgKiAxMCkgKyBDaGFyLmdldF9kaWdpdF9leG4gY1xuICAgICAgICAgIGVsc2UgaWYgQ2hhci5nZXRfZGlnaXRfZXhuIGMgPj0gNVxuICAgICAgICAgIHRoZW4gaW5jciBkaWdpdHNcbiAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgaW5jciBwb3NcbiAgICAgIGRvbmU7XG4gICAgICAoKiBpZiB0aGVyZSBhcmUgbWlzc2luZyBkaWdpdHMsIGFkZCB6ZXJvZXMgKilcbiAgICAgIGlmICFudW1fZGlnaXRzIDwgOSB0aGVuIGRpZ2l0cyA6PSAhZGlnaXRzICogSW50LnBvdyAxMCAoOSAtICFudW1fZGlnaXRzKTtcbiAgICAgICFkaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgbmFub3NlY29uZHMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMFxuICAgICAgICBlbHNlXG4gICAgICAgICAgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3M6KHN1YnNlY19wb3MgKyAxKSB+dW50aWw6KHN1YnNlY19wb3MgKyBzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBuYW5vc2Vjb25kcylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uc2Vjb25kIHNlYylcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4ubWludXRlIG1pbilcbiAgICAgIHw+IFNwYW4uKCArICkgKFNwYW4uc2NhbGVfaW50IFNwYW4uaG91ciBocilcbiAgICAgIHw+IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IE9mZGF5X2hlbHBlcnMucGFyc2Ugc3RyaW5nIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwIDogdCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImV4cGVjdGVkIGFuIGF0b21cIiBzZXhwXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICBsZXQgb3BlbiBTZXhwbGliIGluXG4gICAgICBTZXhwX2dyYW1tYXIudGFnXG4gICAgICAgIChTZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hciA6IHQgU2V4cF9ncmFtbWFyLnQpXG4gICAgICAgIH5rZXk6U2V4cF9ncmFtbWFyLnR5cGVfbmFtZV90YWdcbiAgICAgICAgfnZhbHVlOihBdG9tIFwiQ29yZS5UaW1lX25zLk9mZGF5LnRcIilcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZyAodCA6IHQpID0gdG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBOYW5vc2Vjb25kXG4gICAgbGV0IHNleHBfb2ZfdCAodCA6IHQpID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgICBsZXQgdG9faW50NjMgdCA9IFNwYW5fbnMuU3RhYmxlLlYyLnRvX2ludDYzIHRcbiAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW5fbnMuU3RhYmxlLlYyLm9mX2ludDYzX2V4biB0KVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChcbiAgU3RhYmxlLlYxIDpcbiAgICBDb21wYXJhdG9yLlNcbiAgd2l0aCB0eXBlIHQgOj0gdFxuICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFN0YWJsZS5WMSA6XG4gICAgICAgIENvbXBhcmF0b3IuU1xuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICBpbmNsdWRlIChTdGFibGUuVjEgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLk9mZGF5XCJcbiAgZW5kKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RhYmxlLlYxLnRfc2V4cF9ncmFtbWFyXG5sZXQgdG9fbWljcm9zZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWNyb3NlY29uZFxubGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWlsbGlzZWNvbmRcbmxldCB0b19zZWNfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBTZWNvbmRcbmxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gU3RhYmxlLlYxLnRvX3N0cmluZ193aXRoX3VuaXQgdCB+dW5pdDpgTWludXRlX29yX2xlc3NcblxubGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICB0cnlcbiAgICBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpTdGFibGUuVjEuY3JlYXRlX2Zyb21fcGFyc2VkXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1lX25zLk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiBjYW5ub3QgcGFyc2Ugc3RyaW5nXCJcbiAgICAgICAgICB+XzooU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbiA6IHN0cmluZylcbiAgICAgICAgICB+XzooZXhuIDogZXhuKV1cbjs7XG5cbmxldCBldmVyeSA9XG4gIGxldCByZWMgZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjID1cbiAgICAoKiBBc3N1bWVzIFtzcGFuXSwgW3N0YXJ0XSwgYW5kIFtzdG9wXSBhcmUgdmFsaWQgb2ZkYXlzLiBBc3N1bWVzIFtzdGFydCA8IHN0b3BdLlxuICAgICAgIEFzc3VtZXMgW3NwYW4gPiAwXS4gKilcbiAgICBsZXQgYWNjID0gc3RhcnQgOjogYWNjIGluXG4gICAgbGV0IHN0YXJ0ID0gU3Bhbi4oICsgKSBzdGFydCBzcGFuIGluXG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wICgqIGNhbm5vdCBvdmVyZmxvdyAqKVxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2NcbiAgaW5cbiAgKCogaW50ZXJuYWwgW2V2ZXJ5XSBuYW1lZCB0byBzaG93IHVwIGluIHN0YWNrIHRyYWNlcyAqKVxuICBsZXQgZXZlcnkgc3BhbiB+c3RhcnQgfnN0b3AgPVxuICAgIGlmIFNwYW4uKCA+ICkgc3RhcnQgc3RvcFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggW3N0YXJ0XSA+IFtzdG9wXVwiIChzdGFydCA6IHQpIChzdG9wIDogdCldXG4gICAgZWxzZSBpZiBTcGFuLiggPD0gKSBzcGFuIFNwYW4uemVyb1xuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiW1RpbWVfbnMuT2ZkYXkuZXZlcnldIGNhbGxlZCB3aXRoIG5lZ2F0aXZlIHNwYW5cIiB+Xzooc3BhbiA6IFNwYW4udCldXG4gICAgZWxzZSBpZiBpc19pbnZhbGlkIHNwYW5cbiAgICB0aGVuIE9rIFsgc3RhcnQgXVxuICAgIGVsc2UgT2sgKGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjYzpbXSlcbiAgaW5cbiAgZXZlcnlcbjs7XG5cbmxldCBzbWFsbF9kaWZmID1cbiAgbGV0IGhvdXIgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uaG91ciBpblxuICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19pbnQ2M19ucyAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgbGV0IGRpZmYgPSBvZmRheTEgLSBvZmRheTIgaW5cbiAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgIGxldCBkMSA9IEludDYzLnJlbSBkaWZmIGhvdXIgaW5cbiAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICBsZXQgZDIgPSBJbnQ2My5yZW0gKGQxICsgaG91cikgaG91ciBpblxuICAgIGxldCBkID0gaWYgZDIgPiBob3VyIC8gSW50NjMub2ZfaW50IDIgdGhlbiBkMiAtIGhvdXIgZWxzZSBkMiBpblxuICAgIFNwYW4ub2ZfaW50NjNfbnMgZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwic21hbGxfZGlmZlwiID1cbiAgbGV0IHRlc3QgeCB5ID1cbiAgICBsZXQgZGlmZiA9IHNtYWxsX2RpZmYgeCB5IGluXG4gICAgcHJpbnRmICFcInNtYWxsX2RpZmYgJXMgJXMgPSAlc1xcblwiICh0b19zdHJpbmcgeCkgKHRvX3N0cmluZyB5KSAoU3Bhbi50b19zdHJpbmcgZGlmZilcbiAgaW5cbiAgbGV0IGV4YW1wbGVzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biAoeCwgeSkgLT4gb2Zfc3RyaW5nIHgsIG9mX3N0cmluZyB5KVxuICAgICAgWyBcIjEyOjAwXCIsIFwiMTI6MDVcIjsgXCIxMjo1OFwiLCBcIjEzOjAyXCI7IFwiMDA6NTJcIiwgXCIyMzoxOVwiOyBcIjAwOjAwXCIsIFwiMjQ6MDBcIiBdXG4gIGluXG4gIExpc3QuaXRlciBleGFtcGxlcyB+ZjooZnVuICh4LCB5KSAtPlxuICAgIHRlc3QgeCB5O1xuICAgIHRlc3QgeSB4KTtcbiAgWyVleHBlY3RcbiAgICB7fFxuICAgIHNtYWxsX2RpZmYgMTI6MDA6MDAuMDAwMDAwMDAwIDEyOjA1OjAwLjAwMDAwMDAwMCA9IC01bVxuICAgIHNtYWxsX2RpZmYgMTI6MDU6MDAuMDAwMDAwMDAwIDEyOjAwOjAwLjAwMDAwMDAwMCA9IDVtXG4gICAgc21hbGxfZGlmZiAxMjo1ODowMC4wMDAwMDAwMDAgMTM6MDI6MDAuMDAwMDAwMDAwID0gLTRtXG4gICAgc21hbGxfZGlmZiAxMzowMjowMC4wMDAwMDAwMDAgMTI6NTg6MDAuMDAwMDAwMDAwID0gNG1cbiAgICBzbWFsbF9kaWZmIDAwOjUyOjAwLjAwMDAwMDAwMCAyMzoxOTowMC4wMDAwMDAwMDAgPSAtMjdtXG4gICAgc21hbGxfZGlmZiAyMzoxOTowMC4wMDAwMDAwMDAgMDA6NTI6MDAuMDAwMDAwMDAwID0gMjdtXG4gICAgc21hbGxfZGlmZiAwMDowMDowMC4wMDAwMDAwMDAgMjQ6MDA6MDAuMDAwMDAwMDAwID0gMHNcbiAgICBzbWFsbF9kaWZmIDI0OjAwOjAwLjAwMDAwMDAwMCAwMDowMDowMC4wMDAwMDAwMDAgPSAwcyB8fV1cbjs7XG5cbmxldCBnZW5faW5jbCA9IFNwYW4uZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gU3Bhbi5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcblxuaW5jbHVkZSAoU3BhbiA6IENvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdClcblxuKCogZGVwcmVjYXRlZCBiaW5kaW5ncyAqKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG5vdyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xubW9kdWxlIE9mZGF5ID0gT2ZkYXlfbnNcblxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHRoZSBVbml4IGVwb2NoICgxOTcwLTAxLTAxIDAwOjAwOjAwIFVUQykgKilcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnQgPSBTcGFuLlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSAoU3BhbiA6IFF1aWNrY2hlY2suU19yYW5nZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgbm93ID0gU3Bhbi5zaW5jZV91bml4X2Vwb2NoXG5sZXQgZXF1YWwgPSBTcGFuLmVxdWFsXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBTcGFuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgZXBvY2ggPSBTcGFuLnplcm9cbmxldCBhZGQgPSBTcGFuLiggKyApXG5sZXQgc3ViID0gU3Bhbi4oIC0gKVxubGV0IGRpZmYgPSBTcGFuLiggLSApXG5sZXQgYWJzX2RpZmYgdCB1ID0gU3Bhbi5hYnMgKGRpZmYgdCB1KVxubGV0IG1heCA9IFNwYW4ubWF4XG5sZXQgbWluID0gU3Bhbi5taW5cbmxldCBuZXh0ID0gU3Bhbi5uZXh0XG5sZXQgcHJldiA9IFNwYW4ucHJldlxubGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggdCA9IHRcbmxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoIHMgPSBzXG5sZXQgdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCA6IEludDYzLnQgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG5sZXRbQGlubGluZV0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggaSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggKFNwYW4ub2ZfaW50NjNfbnMgaSlcbmxldFtAY29sZF0gb3ZlcmZsb3cgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfbnM6IG92ZXJmbG93XCJdXG5sZXQgaXNfZWFybGllciB0MSB+dGhhbjp0MiA9IHQxIDwgdDJcbmxldCBpc19sYXRlciB0MSB+dGhhbjp0MiA9IHQxID4gdDJcblxubGV0IGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA8ICkgc3VtIHggZWxzZSBTcGFuLiggPiApIHN1bSB4XG47O1xuXG5sZXQgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmID1cbiAgaWYgU3Bhbi4oID4gKSB5IFNwYW4uemVybyB0aGVuIFNwYW4uKCA+ICkgZGlmZiB4IGVsc2UgU3Bhbi4oIDwgKSBkaWZmIHhcbjs7XG5cbmxldCBhZGRfZXhuIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtIHRoZW4gb3ZlcmZsb3cgKCkgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfZXhuIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgdGhlbiBvdmVyZmxvdyAoKSBlbHNlIGRpZmZcbjs7XG5cbmxldCBhZGRfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgc3VtID0gYWRkIHggeSBpblxuICBpZiBhZGRfb3ZlcmZsb3dlZCB4IHkgfnN1bVxuICB0aGVuXG4gICAgaWYgU3Bhbi4oeSA+IHplcm8pIHRoZW4gU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBlbHNlIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbiAgZWxzZSBzdW1cbjs7XG5cbmxldCBzdWJfc2F0dXJhdGluZyB4IHkgPVxuICBsZXQgZGlmZiA9IHN1YiB4IHkgaW5cbiAgaWYgc3ViX292ZXJmbG93ZWQgeCB5IH5kaWZmXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIGRpZmZcbjs7XG5cbmxldCB0b19pbnRfbnNfc2luY2VfZXBvY2ggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biB0IC0+IEludDYzLnRvX2ludF9leG4gKHRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIHQpXG4gIGVsc2UgZnVuIF8gLT4gZmFpbHdpdGggXCJUaW1lX25zLnRvX2ludF9uc19zaW5jZV9lcG9jaDogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0IG9mX2ludF9uc19zaW5jZV9lcG9jaCBpID0gb2ZfaW50NjNfbnNfc2luY2VfZXBvY2ggKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHQgPVxuICBUaW1lX2Zsb2F0Lm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKHRvX3NwYW5fc2luY2VfZXBvY2ggdCkpXG47O1xuXG5sZXQgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG1heF90aW1lX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWUgPVxuICBpZiBUaW1lX2Zsb2F0LiggPCApIHRpbWUgbWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBUaW1lX2Zsb2F0LiggPiApIHRpbWUgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHRpbWVcIlxuICAgICAgdGltZVxuICAgICAgWyVzZXhwX29mOiBUaW1lX2Zsb2F0LlN0YWJsZS5XaXRoX3V0Y19zZXhwLlYyLnRdXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IHRpbWUgPVxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgKFNwYW4ub2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChUaW1lX2Zsb2F0LnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSkpXG47O1xuXG5sZXQgb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHRpbWUgPVxuICBjaGVja19iZWZvcmVfY29udmVyc2lvbl9mb3JfMXVzX3JvdW5kaW5nIHRpbWU7XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWwgPVxuICBmYWlsd2l0aHNcbiAgICB+aGVyZTpbJWhlcmVdXG4gICAgXCJUaW1lX25zLm5leHRfbXVsdGlwbGUgZ290IG5vbnBvc2l0aXZlIGludGVydmFsXCJcbiAgICBpbnRlcnZhbFxuICAgIFslc2V4cF9vZjogU3Bhbi50XVxuOztcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfbmV4dF9tdWx0aXBsZV9nb3Rfbm9ucG9zaXRpdmVfaW50ZXJ2YWwgaW50ZXJ2YWw7XG4gIGxldCBiYXNlX3RvX2FmdGVyID0gZGlmZiBhZnRlciBiYXNlIGluXG4gIGlmIFNwYW4uKCA8ICkgYmFzZV90b19hZnRlciBTcGFuLnplcm9cbiAgdGhlbiBiYXNlICgqIFthZnRlciA8IGJhc2VdLCBjaG9vc2UgW2sgPSAwXS4gKilcbiAgZWxzZSAoXG4gICAgbGV0IG5leHQgPSBhZGQgYmFzZSAoU3Bhbi5zY2FsZV9pbnQ2MyBpbnRlcnZhbCAoU3Bhbi5kaXYgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPSBTcGFuLnJhbmRvbSA/c3RhdGUgKClcblxubW9kdWxlIFV0YyA6IHNpZ1xuICB2YWwgdG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IERhdGUwLnQgKiBTcGFuLnRcbiAgdmFsIG9mX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogRGF0ZTAudCAtPiBTcGFuLnQgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIGEgcmVjcmVhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgZ210aW1lIHNwZWNpYWxpemVkIHRvIHRoZSBmaWVsZHMgd2UgbmVlZCB0aGF0IGFsc29cbiAgICAgZG9lc24ndCByZWx5IG9uIFVuaXguICopXG4gIGxldCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0ICggITwgKSBpID0gSW50NjMub2ZfaW50X2V4biBpIGluXG4gICAgbGV0ICggIT4gKSB0ID0gSW50NjMudG9faW50X2V4biB0IGluXG4gICAgbGV0IG5zX3NpbmNlX2Vwb2NoID0gdG9faW50NjNfbnNfc2luY2VfZXBvY2ggdCBpblxuICAgIGxldCBuc19wZXJfZGF5ID0gITw4Nl80MDAgKiAhPDFfMDAwXzAwMF8wMDAgaW5cbiAgICBsZXQgYXBwcm94X2RheXNfZnJvbV9lcG9jaCA9IG5zX3NpbmNlX2Vwb2NoIC8gbnNfcGVyX2RheSBpblxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgaWYgbnNfc2luY2VfZXBvY2ggPCAhPDAgJiYgYXBwcm94X2RheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgPD4gbnNfc2luY2VfZXBvY2hcbiAgICAgIHRoZW4gYXBwcm94X2RheXNfZnJvbV9lcG9jaCAtICE8MVxuICAgICAgZWxzZSBhcHByb3hfZGF5c19mcm9tX2Vwb2NoXG4gICAgaW5cbiAgICBsZXQgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5ID0gbnNfc2luY2VfZXBvY2ggLSAobnNfcGVyX2RheSAqIGRheXNfZnJvbV9lcG9jaCkgaW5cbiAgICBsZXQgZGF0ZSA9XG4gICAgICBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaCAhPmRheXNfZnJvbV9lcG9jaCB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICBpblxuICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IFNwYW4ub2ZfaW50NjNfbnMgbnNfc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9XG4gICAgYXNzZXJ0IChcbiAgICAgIFNwYW4uKCA+PSApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uemVyb1xuICAgICAgJiYgU3Bhbi4oIDwgKSBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBTcGFuLmRheSk7XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICBpblxuICAgIGxldCBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggPSBTcGFuLnNjYWxlX2ludCBTcGFuLmRheSBkYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBsZXQgc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4uKCArICkgc3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCBzcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIG1vZHVsZSBPZmRheV9hc19zcGFuID0gc3RydWN0XG4gICAgICBvcGVuIEludC5PXG5cbiAgICAgIGxldCBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gPVxuICAgICAgICBsZXQgc2Vjb25kcyA9IFNwYW4udG9faW50X3NlYyBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgbGV0IGggPSBzZWNvbmRzIC8gMzYwMCBpblxuICAgICAgICBsZXQgbSA9IHNlY29uZHMgLyA2MCAlIDYwIGluXG4gICAgICAgIGxldCBzID0gc2Vjb25kcyAlIDYwIGluXG4gICAgICAgIHNwcmludGYgXCIlMDJkOiUwMmQ6JTAyZFwiIGggbSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgdHdvX2RpZ2l0X29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyaW5nID0gMiAmJiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgIEludC5vZl9zdHJpbmcgc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgc2Vjb25kc19zdHJpbmcgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBoX3N0cmluZzsgbV9zdHJpbmc7IHNfc3RyaW5nIF0gLT5cbiAgICAgICAgICBsZXQgaCA9IHR3b19kaWdpdF9vZl9zdHJpbmcgaF9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgbSA9IHR3b19kaWdpdF9vZl9zdHJpbmcgbV9zdHJpbmcgaW5cbiAgICAgICAgICBsZXQgcyA9IHR3b19kaWdpdF9vZl9zdHJpbmcgc19zdHJpbmcgaW5cbiAgICAgICAgICBTcGFuLm9mX2ludF9zZWMgKCgoKGggKiA2MCkgKyBtKSAqIDYwKSArIHMpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBuc19vZl8xMDBfbXMgPSAxMDBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwX21zID0gMTBfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfbXMgPSAxXzAwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfdXMgPSAxMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfdXMgPSAxMF8wMDBcbiAgICAgIGxldCBuc19vZl8xX3VzID0gMV8wMDBcbiAgICAgIGxldCBuc19vZl8xMDBfbnMgPSAxMDBcbiAgICAgIGxldCBuc19vZl8xMF9ucyA9IDEwXG4gICAgICBsZXQgbnNfb2ZfMV9ucyA9IDFcblxuICAgICAgbGV0IHN1Yl9zZWNvbmRfdG9fc3RyaW5nIHN1Yl9zZWNvbmRfc3BhbiA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgc3ViX3NlY29uZF9zcGFuIHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgaWYgbnMgPSAwXG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAxZFwiIChucyAvIG5zX29mXzEwMF9tcylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAyZFwiIChucyAvIG5zX29mXzEwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV9tcyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwM2RcIiAobnMgLyBuc19vZl8xX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA0ZFwiIChucyAvIG5zX29mXzEwMF91cylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA1ZFwiIChucyAvIG5zX29mXzEwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMV91cyA9IDBcbiAgICAgICAgdGhlbiBzcHJpbnRmIFwiLiUwNmRcIiAobnMgLyBuc19vZl8xX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTAwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA3ZFwiIChucyAvIG5zX29mXzEwMF9ucylcbiAgICAgICAgZWxzZSBpZiBucyAlIG5zX29mXzEwX25zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA4ZFwiIChucyAvIG5zX29mXzEwX25zKVxuICAgICAgICBlbHNlIHNwcmludGYgXCIuJTA5ZFwiIG5zXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3ViX3NlY29uZF9vZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgICB0aGVuIFNwYW4uemVyb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlnaXRzID0gU3RyaW5nLmNob3BfcHJlZml4X2V4biBzdHJpbmcgfnByZWZpeDpcIi5cIiBpblxuICAgICAgICAgIGFzc2VydCAoU3RyaW5nLmZvcl9hbGwgZGlnaXRzIH5mOkNoYXIuaXNfZGlnaXQpO1xuICAgICAgICAgIGxldCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sZW5ndGggZGlnaXRzIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBuc19vZl8xMDBfbXNcbiAgICAgICAgICAgIHwgMiAtPiBuc19vZl8xMF9tc1xuICAgICAgICAgICAgfCAzIC0+IG5zX29mXzFfbXNcbiAgICAgICAgICAgIHwgNCAtPiBuc19vZl8xMDBfdXNcbiAgICAgICAgICAgIHwgNSAtPiBuc19vZl8xMF91c1xuICAgICAgICAgICAgfCA2IC0+IG5zX29mXzFfdXNcbiAgICAgICAgICAgIHwgNyAtPiBuc19vZl8xMDBfbnNcbiAgICAgICAgICAgIHwgOCAtPiBuc19vZl8xMF9uc1xuICAgICAgICAgICAgfCA5IC0+IG5zX29mXzFfbnNcbiAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCAoSW50Lm9mX3N0cmluZyBkaWdpdHMgKiBtdWx0aXBsaWVyKSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHNwYW4gPVxuICAgICAgICBhc3NlcnQgKFNwYW4uKCA+PSApIHNwYW4gU3Bhbi56ZXJvICYmIFNwYW4uKCA8ICkgc3BhbiBTcGFuLmRheSk7XG4gICAgICAgIGxldCBzZWNvbmRzX3NwYW4gPSBzcGFuIHw+IFNwYW4udG9faW50X3NlYyB8PiBTcGFuLm9mX2ludF9zZWMgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IFNwYW4uKCAtICkgc3BhbiBzZWNvbmRzX3NwYW4gaW5cbiAgICAgICAgc2Vjb25kc190b19zdHJpbmcgc2Vjb25kc19zcGFuIF4gc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICBsZXQgcHJlZml4X2xlbiA9IDggaW5cbiAgICAgICAgKCogXCJISDpNTTpERFwiICopXG4gICAgICAgIGxldCBzdWZmaXhfbGVuID0gbGVuIC0gcHJlZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zdHJpbmcgPSBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOjAgfmxlbjpwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6cHJlZml4X2xlbiB+bGVuOnN1ZmZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNlY29uZHNfb2Zfc3RyaW5nIHNlY29uZHNfc3RyaW5nIGluXG4gICAgICAgIGxldCBzdWJfc2Vjb25kX3NwYW4gPSBzdWJfc2Vjb25kX29mX3N0cmluZyBzdWJfc2Vjb25kX3N0cmluZyBpblxuICAgICAgICBTcGFuLiggKyApIHNlY29uZHNfc3BhbiBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgbGV0IGRhdGUsIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gVXRjLnRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheV9hc19zcGFuLnRvX3N0cmluZyBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBeIFwiWlwiXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBkYXRlX3N0cmluZywgb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSA9IFN0cmluZy5sc3BsaXQyX2V4biBzdHJpbmcgfm9uOicgJyBpblxuICAgICAgbGV0IG9mZGF5X3N0cmluZyA9IFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gb2ZkYXlfc3RyaW5nX3dpdGhfem9uZSB+c3VmZml4OlwiWlwiIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlX3N0cmluZyBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXlfYXNfc3Bhbi5vZl9zdHJpbmcgb2ZkYXlfc3RyaW5nIGluXG4gICAgICBVdGMub2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgZGF0ZSBvZmRheVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgZW5kKVxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgIFNleHBfZ3JhbW1hci50YWdcbiAgICAgICAgdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICB+dmFsdWU6KEF0b20gXCJDb3JlLlRpbWVfbnMuQWx0ZXJuYXRlX3NleHAudFwiKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPSBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG5cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IEFsdGVybmF0ZV9zZXhwLlN0YWJsZVxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG5cbigqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZS5tbCBmdW5jdG9yLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldCBUaW1lX25zXG4gICB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxubW9kdWxlIFRvX2FuZF9vZl9zdHJpbmcgOiBzaWdcbiAgdmFsIG9mX2RhdGVfb2ZkYXkgOiB6b25lOlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiB0XG5cbiAgdmFsIG9mX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIERhdGUudFxuICAgIC0+IE9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IFsgYE9uY2Ugb2YgdCB8IGBUd2ljZSBvZiB0ICogdCB8IGBOZXZlciBvZiB0IF1cblxuICB2YWwgdG9fZGF0ZV9vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuXG4gIHZhbCB0b19kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICB0XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBEYXRlLnQgKiBPZmRheS50ICogWyBgT25seSB8IGBBbHNvX2F0IG9mIHQgfCBgQWxzb19za2lwcGVkIG9mIERhdGUudCAqIE9mZGF5LnQgXVxuXG4gIHZhbCB0b19kYXRlIDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnRcbiAgdmFsIHRvX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBPZmRheS50XG4gIHZhbCBjb252ZXJ0IDogZnJvbV90ejpab25lLnQgLT4gdG9fdHo6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IERhdGUudCAqIE9mZGF5LnRcbiAgdmFsIHJlc2V0X2RhdGVfY2FjaGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHV0Y19vZmZzZXQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IFNwYW4udFxuXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldF1cIl1cblxuICB2YWwgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCA6IHN0cmluZyAtPiB0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZyBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbdG9fc3RyaW5nX3V0Y11cIl1cbiAgdmFsIHRvX3N0cmluZ191dGMgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fZmlsZW5hbWVfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2ZpbGVuYW1lX3N0cmluZyA6IHN0cmluZyAtPiB6b25lOlpvbmUudCAtPiB0XG4gIHZhbCB0b19zdHJpbmdfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmdfd2l0aF96b25lIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIG9mX2xvY2FsaXplZF9zdHJpbmcgOiB6b25lOlpvbmUudCAtPiBzdHJpbmcgLT4gdFxuXG4gIHZhbCBvZl9zdHJpbmdfZ2VuXG4gICAgOiAgZGVmYXVsdF96b25lOih1bml0IC0+IFpvbmUudClcbiAgICAtPiBmaW5kX3pvbmU6KHN0cmluZyAtPiBab25lLnQpXG4gICAgLT4gc3RyaW5nXG4gICAgLT4gdFxuXG4gIHZhbCB0b19zdHJpbmdfYWJzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfdHJpbW1lZCA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3BhcnRzIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmcgbGlzdFxuICB2YWwgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuXG4gIHZhbCBvY2N1cnJlbmNlXG4gICAgOiAgWyBgRmlyc3RfYWZ0ZXJfb3JfYXQgfCBgTGFzdF9iZWZvcmVfb3JfYXQgXVxuICAgIC0+IHRcbiAgICAtPiBvZmRheTpPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2Zsb2F0MC5tbCwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgVGltZV9ucyB0by9vZl9zdHJpbmcgd29ya2luZyAqKVxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgdG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdCA9IFNwYW4ub2ZfaW50NjNfbnMgdFxuXG4gICAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgICBsZXQgZGF5cyA9XG4gICAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaCB8PiBJbnQ2My5vZl9pbnRcbiAgICAgIGluXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAoZGF5cyAqIFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXkpXG4gICAgICArIFNwYW4udG9faW50NjNfbnMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KVxuICAgIDs7XG5cbiAgICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBzdWJfZXhuIChTcGFuLm9mX2ludDYzX25zIHJlbGF0aXZlKSBvZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgU3Bhbi50b19pbnQ2M19ucyAoYWRkX2V4biBhYnNvbHV0ZSBvZmZzZXRfZnJvbV91dGMpXG4gICAgOztcblxuICAgIGxldCBuc19wZXJfZGF5ID0gU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheVxuXG4gICAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICAgICgqIG5vdGUgVGltZV9ucyByZXByZXNlbnRzIGFib3V0IDE0NiB5ZWFycywgbm90IGVub3VnaCBmb3IgW0RhdGUuY3JlYXRlX2V4bl0gdG8gZXZlclxuICAgICAgICAgcmFpc2UgKilcbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ID0gdCAvIG5zX3Blcl9kYXkgaW5cbiAgICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgICB3aWxsIGxlYXZlIHVzIG9uZSBkYXkgc2hvcnQgYmVjYXVzZSBpdCB0cnVuY2F0ZXMgKGUuZy4gLTEwMCAvIDg2XzQwMCA9IDAgYW5kIHdlXG4gICAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICAgIGlmIHQgPCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogbnNfcGVyX2RheVxuICAgICAgdGhlbiBJbnQ2My5wcmVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIDs7XG5cbiAgICBsZXQgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX25zID0gZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSBpblxuICAgICAgbGV0IHJlbWFpbmRlciA9IHQgLSBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgaW5cbiAgICAgIFNwYW4ub2ZfaW50NjNfbnMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy5hZGRfZGF5cyBEYXRlMC5EYXlzLnVuaXhfZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgICgqIFRoaXMgaW50ZXJmYWNlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lX2ludGYuWm9uZSwgY29udmVydGVkIGVub3VnaCB0byBnZXRcbiAgICAgICB0aGlzIHRvIHdvcmsuXG5cbiAgICAgICBUaGUgcHJvYmxlbSBpcyBoYXMgcmVmZXJlbmNlcyB0byBUaW1lMF9pbnRmLlMsIHdoaWNoIGlzIHRoZSBmdW5jdG9yIGlucHV0IGludGVyZmFjZVxuICAgICAgIHRoYXQgVGltZV9ucyBjdXJyZW50bHkgZG9lcyBub3Qgc2F0aXNmeS4gKilcblxuICAgIHR5cGUgdGltZSA9IHRcbiAgICB0eXBlIHQgPSBab25lLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIG1vZHVsZSBJbmRleCA9IFpvbmUuSW5kZXhcblxuICAgICgqIGNvcGllZCBmdW5jdGlvbnMgcmVleHBvcnRlZCBmcm9tIFpvbmUgKilcblxuICAgIHZhbCB1dGMgOiB0XG4gICAgdmFsIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcbiAgICB2YWwgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuXG4gICAgKCogbmV3IGZ1bmN0aW9ucyBkZWZpbmVkIGJlbG93ICopXG5cbiAgICB2YWwgaW5kZXggOiB0IC0+IHRpbWUgLT4gSW5kZXgudFxuICAgIHZhbCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IDogdCAtPiBEYXRlX2FuZF9vZmRheS50IC0+IHRpbWVcbiAgICB2YWwgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSA6IHQgLT4gdGltZSAtPiBEYXRlX2FuZF9vZmRheS50XG4gICAgdmFsIG5leHRfY2xvY2tfc2hpZnQgOiB0IC0+IHN0cmljdGx5X2FmdGVyOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICAgIHZhbCBwcmV2X2Nsb2NrX3NoaWZ0IDogdCAtPiBhdF9vcl9iZWZvcmU6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdGltZSA9IHRcblxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPVxuICAgICAgbWF0Y2ggaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCB3aXRoXG4gICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAgKCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXhcbiAgICAgICAgICAsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4IClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoSW5kZXgubmV4dCBpbmRleClcbiAgICBsZXQgcHJldl9jbG9ja19zaGlmdCB0IH5hdF9vcl9iZWZvcmU6dGltZSA9IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuICAgIGxldCBuZXh0X2Nsb2NrX3NoaWZ0IHQgfnN0cmljdGx5X2FmdGVyOnRpbWUgPSBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcblxuICAgIGxldCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHQgdGltZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleCB0IHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4X29mX2RhdGVfYW5kX29mZGF5XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheSA9XG4gICAgbGV0IHJlbGF0aXZlID0gRGF0ZV9hbmRfb2ZkYXkub2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IGluXG4gICAgWm9uZS5hYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGF5IHpvbmUgcmVsYXRpdmVcbiAgOztcblxuICBsZXQgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlIGRhdGUgb2ZkYXkgfnpvbmUgPVxuICAgICgqIFdlIGFzc3VtZSB0aGF0IHRoZXJlIHdpbGwgYmUgb25seSBvbmUgem9uZSBzaGlmdCB3aXRoaW4gYSBnaXZlbiBsb2NhbCBkYXkuICAqKVxuICAgIGxldCBzdGFydF9vZl9kYXkgPSBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgT2ZkYXkuc3RhcnRfb2ZfZGF5IGluXG4gICAgbGV0IHByb3Bvc2VkX3RpbWUgPSBhZGQgc3RhcnRfb2ZfZGF5IChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSkgaW5cbiAgICBtYXRjaCBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6c3RhcnRfb2ZfZGF5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgIHwgU29tZSAoc2hpZnRfc3RhcnQsIHNoaWZ0X2Ftb3VudCkgLT5cbiAgICAgIGxldCBzaGlmdF9iYWNrd2FyZHMgPSBTcGFuLihzaGlmdF9hbW91bnQgPCB6ZXJvKSBpblxuICAgICAgKCogc3RhcnQgYW5kIGVuZCBvZiB0aGUgXCJwcm9ibGVtYXRpYyByZWdpb25cIiAqKVxuICAgICAgbGV0IHMsIGUgPVxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50LCBzaGlmdF9zdGFydFxuICAgICAgICBlbHNlIHNoaWZ0X3N0YXJ0LCBhZGQgc2hpZnRfc3RhcnQgc2hpZnRfYW1vdW50XG4gICAgICBpblxuICAgICAgaWYgcHJvcG9zZWRfdGltZSA8IHNcbiAgICAgIHRoZW4gYE9uY2UgcHJvcG9zZWRfdGltZVxuICAgICAgZWxzZSBpZiBzIDw9IHByb3Bvc2VkX3RpbWUgJiYgcHJvcG9zZWRfdGltZSA8IGVcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYFR3aWNlIChwcm9wb3NlZF90aW1lLCBzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gICAgICAgIGVsc2UgYE5ldmVyIHNoaWZ0X3N0YXJ0XG4gICAgICBlbHNlIGBPbmNlIChzdWIgcHJvcG9zZWRfdGltZSBzaGlmdF9hbW91bnQpXG4gIDs7XG5cbiAgbW9kdWxlIERhdGVfY2FjaGUgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogdFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiB0XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiB0aW1lID49IGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbFxuICAgICYmIHRpbWUgPCBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIHN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IGFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IG1heCAoWm9uZS5pbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgbGV0IGNhY2hlX3VudGlsX2V4Y2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV91bnRpbCB8PiBtaW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSA9IHRvX2RhdGUgdGltZSB+em9uZSwgdG9fb2ZkYXkgdGltZSB+em9uZVxuXG4gICgqIFRoZSBjb3JyZWN0bmVzcyBvZiB0aGlzIGFsZ29yaXRobSAoaW50ZXJmYWNlLCBldmVuKSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXRcbiAgICAgdGltZXpvbmUgc2hpZnRzIGFyZW4ndCB0b28gY2xvc2UgdG9nZXRoZXIgKGFzIGluLCBpdCBjYW4ndCBzaW11bHRhbmVvdXNseSBiZSB0aGVcbiAgICAgY2FzZSB0aGF0IGEgdGltZXpvbmUgc2hpZnQgb2YgWCBob3VycyBvY2N1cnJlZCBsZXNzIHRoYW4gWCBob3VycyBhZ28sICphbmQqXG4gICAgIGEgdGltZXpvbmUgc2hpZnQgb2YgWSBob3VycyB3aWxsIG9jY3VyIGluIGxlc3MgdGhhbiBZIGhvdXJzJyB0aW1lKSAqKVxuICBsZXQgdG9fZGF0ZV9vZmRheV9wcmVjaXNlIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9hZnRlciA9IFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjp0aW1lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCA9IFpvbmUucHJldl9jbG9ja19zaGlmdCB6b25lIH5hdF9vcl9iZWZvcmU6dGltZSBpblxuICAgIGxldCBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnQgPVxuICAgICAgKCogVXNpbmcgW2RhdGVdIGFuZCByYWlzaW5nIG9uIFtOb25lXSBoZXJlIGlzIE9LIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tcbiAgICAgICAgIHNoaWZ0cyBjYW4ndCBjcm9zcyBkYXRlIGJvdW5kYXJpZXMuIFRoaXMgaXMgdHJ1ZSBpbiBhbGwgY2FzZXMgSSd2ZSBldmVyIGhlYXJkXG4gICAgICAgICBvZiAoYW5kIFtvZl9kYXRlX29mZGF5X3ByZWNpc2VdIHdvdWxkIG5lZWQgcmV2aXNpdGluZyBpZiBpdCB0dXJuZWQgb3V0IHRvIGJlXG4gICAgICAgICBmYWxzZSkgKilcbiAgICAgIG1hdGNoIE9mZGF5LnN1YiBvZmRheSBhbW91bnQgd2l0aFxuICAgICAgfCBTb21lIG9mZGF5IC0+IGBBbHNvX3NraXBwZWQgKGRhdGUsIG9mZGF5KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiVGltZS50b19kYXRlX29mZGF5X3ByZWNpc2VcIlxuICAgICAgICAgICAgICB+c3Bhbl9zaW5jZV9lcG9jaDoodG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lIDogU3Bhbi50KVxuICAgICAgICAgICAgICAoem9uZSA6IFpvbmUudCldXG4gICAgaW5cbiAgICBsZXQgYW1iaWd1aXR5ID1cbiAgICAgICgqIEVkZ2UgY2FzZXM6IHRoZSBpbnN0YW50IG9mIHRyYW5zaXRpb24gYmVsb25ncyB0byB0aGUgbmV3IHpvbmUgcmVnaW1lLiBTbyBpZiB0aGVcbiAgICAgICAgIGNsb2NrIG1vdmVkIGJ5IGFuIGhvdXIgZXhhY3RseSBvbmUgaG91ciBhZ28sIHRoZXJlJ3Mgbm8gYW1iaWd1aXR5LCBiZWNhdXNlIHRoZVxuICAgICAgICAgaG91ci1hZ28gdGltZSBiZWxvbmdzIHRvIHRoZSBzYW1lIHJlZ2ltZSBhcyB5b3UsIGFuZCBjb252ZXJzZWx5LCBpZiB0aGUgY2xvY2tcbiAgICAgICAgIHdpbGwgbW92ZSBieSBhbiBob3VyIGluIGFuIGhvdXJzJyB0aW1lLCB0aGVyZSAqaXMqIGFtYmlndWl0eS4gSGVuY2UgWz4uXSBmb3JcbiAgICAgICAgIHRoZSBmaXJzdCBjYXNlIGFuZCBbPD0uXSBmb3IgdGhlIHNlY29uZC4gKilcbiAgICAgIG1hdGNoIGNsb2NrX3NoaWZ0X2JlZm9yZV9vcl9hdCwgY2xvY2tfc2hpZnRfYWZ0ZXIgd2l0aFxuICAgICAgfCBTb21lIChzdGFydCwgYW1vdW50KSwgXyB3aGVuIGFkZCBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA+IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgPVxuICAgIGxldCBhdHRlbXB0IHRpbWUgfnpvbmUgPVxuICAgICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgICBdXG4gICAgaW5cbiAgICBmdW4gdGltZSB+em9uZSAtPlxuICAgICAgdHJ5IGF0dGVtcHQgdGltZSB+em9uZSB3aXRoXG4gICAgICB8IChfIDogZXhuKSAtPlxuICAgICAgICAoKiBJZiB3ZSBvdmVyZmxvdyBhcHBseWluZyB0aGUgVVRDIG9mZnNldCwgdHJ5IGFnYWluIHdpdGggVVRDIHRpbWUuICopXG4gICAgICAgIGF0dGVtcHQgdGltZSB+em9uZTpab25lLnV0Y1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyXG4gICAgICAgIH50YXJnZXQ6JzonXG4gICAgICAgIH5yZXBsYWNlbWVudDonLSdcbiAgICAgICAgKFN0cmluZy5kcm9wX3N1ZmZpeCAoT2ZkYXkudG9fc3RyaW5nIG9mZGF5KSAzKVxuICA7O1xuXG4gIGxldCBvZl9maWxlbmFtZV9zdHJpbmcgcyB+em9uZSA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonXycgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2UgaW4gZmlsZW5hbWUgc3RyaW5nXCJcbiAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gU3RyaW5nLnRyIH50YXJnZXQ6Jy0nIH5yZXBsYWNlbWVudDonOicgb2ZkYXkgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSB+em9uZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJUaW1lLm9mX2ZpbGVuYW1lX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICA7O1xuXG4gIGxldCBvZl9sb2NhbGl6ZWRfc3RyaW5nIH56b25lIHN0ciA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHIgfm9uOicgJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJubyBzcGFjZSBpbiBkYXRlX29mZGF5IHN0cmluZzogJXNcIiBzdHIpXG4gICAgICB8IFNvbWUgKGRhdGUsIHRpbWUpIC0+XG4gICAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIHRpbWUgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgd2l0aFxuICAgIHwgZSAtPiBFeG4ucmVyYWlzZSBlIFwiVGltZS5vZl9sb2NhbGl6ZWRfc3RyaW5nXCJcbiAgOztcblxuICBsZXQgb2NjdXJyZW5jZSBiZWZvcmVfb3JfYWZ0ZXIgdCB+b2ZkYXkgfnpvbmUgPVxuICAgIGxldCBmaXJzdF9ndWVzc19kYXRlID0gdG9fZGF0ZSB0IH56b25lIGluXG4gICAgbGV0IGZpcnN0X2d1ZXNzID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBmaXJzdF9ndWVzc19kYXRlIG9mZGF5IGluXG4gICAgbGV0IGNtcCwgaW5jcmVtZW50ID1cbiAgICAgIG1hdGNoIGJlZm9yZV9vcl9hZnRlciB3aXRoXG4gICAgICB8IGBMYXN0X2JlZm9yZV9vcl9hdCAtPiAoIDw9ICksIC0xXG4gICAgICB8IGBGaXJzdF9hZnRlcl9vcl9hdCAtPiAoID49ICksIDFcbiAgICBpblxuICAgIGlmIGNtcCBmaXJzdF9ndWVzcyB0XG4gICAgdGhlbiBmaXJzdF9ndWVzc1xuICAgIGVsc2Ugb2ZfZGF0ZV9vZmRheSB+em9uZSAoRGF0ZTAuYWRkX2RheXMgZmlyc3RfZ3Vlc3NfZGF0ZSBpbmNyZW1lbnQpIG9mZGF5XG4gIDs7XG5cbiAgbGV0IGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgb2Zmc2V0ID1cbiAgICBsZXQgb2Zmc2V0X2xlbmd0aCA9IFN0cmluZy5sZW5ndGggb2Zmc2V0IGluXG4gICAgaWYgSW50LiggPD0gKSBvZmZzZXRfbGVuZ3RoIDJcbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bMF1cbiAgICAmJiBDaGFyLmlzX2RpZ2l0IG9mZnNldC5bb2Zmc2V0X2xlbmd0aCAtIDFdXG4gICAgdGhlbiBvZmZzZXQgXiBcIjowMFwiXG4gICAgZWxzZSBpZiBDaGFyLiggPSApIG9mZnNldC5bMV0gJzonIHx8IENoYXIuKCA9ICkgb2Zmc2V0LlsyXSAnOidcbiAgICB0aGVuIG9mZnNldFxuICAgIGVsc2UgaWYgSW50LiggPCApIG9mZnNldF9sZW5ndGggMyB8fCBJbnQuKCA+ICkgb2Zmc2V0X2xlbmd0aCA0XG4gICAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIG9mZnNldCAlc1wiIG9mZnNldCAoKVxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IDAgKG9mZnNldF9sZW5ndGggLSAyKVxuICAgICAgICA7IFwiOlwiXG4gICAgICAgIDsgU3RyaW5nLnNsaWNlIG9mZnNldCAob2Zmc2V0X2xlbmd0aCAtIDIpIG9mZnNldF9sZW5ndGhcbiAgICAgICAgXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBUaW1lX25zX29mX3N0cmluZyBvZiBzdHJpbmcgKiBFeG4udCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBkYXRlLCBvZmRheSwgdHogPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JyAnIHdpdGhcbiAgICAgICAgfCBbIGRheTsgbW9udGg7IHllYXI7IG9mZGF5IF0gLT5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0IFsgZGF5OyBcIiBcIjsgbW9udGg7IFwiIFwiOyB5ZWFyIF0sIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBkYXRlOyBvZmRheTsgdHogXSAtPiBkYXRlLCBvZmRheSwgU29tZSB0elxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXkgXSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgcyBdIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonVCcgcyB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoZGF0ZSwgb2ZkYXkpIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlcyBvciBUIGZvdW5kXCIpXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcInRvbyBtYW55IHNwYWNlc1wiXG4gICAgICBpblxuICAgICAgbGV0IG9mZGF5X3RvX3NlYyBvZCA9IFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZCkgaW5cbiAgICAgIGxldCBvZmRheSwgdXRjX29mZnNldCA9XG4gICAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gb2ZkYXksIE5vbmVcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgQ2hhci4oID0gKSBvZmRheS5bU3RyaW5nLmxlbmd0aCBvZmRheSAtIDFdICdaJ1xuICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBvZmRheSB+cG9zOjAgfmxlbjooU3RyaW5nLmxlbmd0aCBvZmRheSAtIDEpLCBTb21lIDAuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246JysnIG9mZGF5IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgbCwgU29tZSAob2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcubHNwbGl0MiB+b246Jy0nIG9mZGF5IHdpdGhcbiAgICAgICAgICAgICAgIHwgU29tZSAobCwgcikgLT5cbiAgICAgICAgICAgICAgICAgbCwgU29tZSAoLTEuICouIG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvZmRheSwgTm9uZSkpXG4gICAgICBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgbGV0IG9mZGF5ID0gT2ZkYXkub2Zfc3RyaW5nIG9mZGF5IGluXG4gICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICB8IFNvbWUgdHogLT4gb2ZfZGF0ZV9vZmRheSB+em9uZTooZmluZF96b25lIHR6KSBkYXRlIG9mZGF5XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIHV0Y19vZmZzZXQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIGxldCB6b25lID0gZGVmYXVsdF96b25lICgpIGluXG4gICAgICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgICAgfCBTb21lIHV0Y19vZmZzZXQgLT5cbiAgICAgICAgICAgbGV0IHV0Y190ID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpab25lLnV0YyBkYXRlIG9mZGF5IGluXG4gICAgICAgICAgIHN1YiB1dGNfdCAoU3Bhbi5vZl9zZWMgdXRjX29mZnNldCkpXG4gICAgd2l0aFxuICAgIHwgZSAtPiByYWlzZSAoVGltZV9uc19vZl9zdHJpbmcgKHMsIGUpKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IHMgPVxuICAgIGxldCBkZWZhdWx0X3pvbmUgKCkgPSByYWlzZV9zIFslbWVzc2FnZSBcInRpbWUgaGFzIG5vIHRpbWUgem9uZSBvciBVVEMgb2Zmc2V0XCIgc10gaW5cbiAgICBsZXQgZmluZF96b25lIHpvbmVfbmFtZSA9XG4gICAgICBmYWlsd2l0aGYgXCJ1bmFibGUgdG8gbG9va3VwIFpvbmUgJXMuICBUcnkgdXNpbmcgQ29yZS5UaW1lLm9mX3N0cmluZ1wiIHpvbmVfbmFtZSAoKVxuICAgIGluXG4gICAgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgc1xuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XG5lbmRcblxuaW5jbHVkZSBUb19hbmRfb2Zfc3RyaW5nXG5cbmxldCBtaW5fdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1heF92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgdG9fdGltZSA9IHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IG9mX3RpbWUgPSBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcblxubW9kdWxlIF8gPSBzdHJ1Y3RcbiAgb3BlbiBQcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWVcblxuICBsZXQgKCkgPVxuICAgIER1cmF0aW9uLmZvcm1hdFxuICAgIDo9IChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgZHVyYXRpb25fb2Zfc3BhbiBzID0gcyB8PiBTcGFuLnRvX2ludDYzX25zIHw+IER1cmF0aW9uLm9mX25hbm9zZWNvbmRzXG4gICAgICBsZXQgc3Bhbl9vZl9kdXJhdGlvbiBkID0gZCB8PiBEdXJhdGlvbi50b19uYW5vc2Vjb25kcyB8PiBTcGFuLm9mX2ludDYzX25zXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9IHN0cmluZyB8PiBTcGFuLm9mX3N0cmluZyB8PiBkdXJhdGlvbl9vZl9zcGFuXG5cbiAgICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgZHVyYXRpb25zID1cbiAgICAgICAgbGV0IHNwYW5zID0gZHVyYXRpb25zIHw+IExpc3QubWFwIH5mOnNwYW5fb2ZfZHVyYXRpb24gaW5cbiAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgc3BhbnNcbiAgICAgICAgICB8PiBMaXN0Lm1heF9lbHQgfmNvbXBhcmU6U3Bhbi5jb21wYXJlXG4gICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAgICAgICAgfmY6U3Bhbi50b191bml0X29mX3RpbWVcbiAgICAgICAgICAgICAgIH5kZWZhdWx0OlVuaXRfb2ZfdGltZS5OYW5vc2Vjb25kXG4gICAgICAgIGluXG4gICAgICAgIHNwYW5zIHw+IExpc3QubWFwIH5mOihTcGFuLnRvX3N0cmluZ19odW0gfnVuaXRfb2ZfdGltZSB+YWxpZ25fZGVjaW1hbDp0cnVlKVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgWm9uZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV9uc191bml4X29yX1RpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfbnNfdW5peF9vcl9UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiAoZ2V0IHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGZvbGRpID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5pbml0IH5mIC0+XG4gICAgICAgICAgIGxldCByZWMgZ28gYWNjIGkgPVxuICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBpIGFjYyAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpKSAoaSArIDEpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGdvIGluaXQgMCBbQG5vbnRhaWxdKVxuICAgIDs7XG5cbiAgICBsZXQgaXRlcmkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgaSAoZ2V0X25vX2JvdW5kc19jaGVjayB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmRcblxuICBtb2R1bGUgQyA9IEluZGV4ZWRfY29udGFpbmVyLk1ha2UwIChNYWtlX2FyZylcblxuICBsZXQgZm9sZCA9IEMuZm9sZFxuICBsZXQgaXRlciA9IEMuaXRlclxuICBsZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG4gIGxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbiAgKCogW0MudG9fbGlzdF0gaGFzIHRvIGNvbnN0cnVjdCB0aGVuIHJldmVyc2UgdGhlIGxpc3QgKilcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihnZXQgdClcbiAgbGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxuICBsZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG4gIGxldCBmaW5kID0gQy5maW5kXG4gIGxldCBleGlzdHMgPSBDLmV4aXN0c1xuICBsZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxuICBsZXQgbWVtID0gQy5tZW1cbiAgbGV0IGNvdW50ID0gQy5jb3VudFxuICBsZXQgc3VtID0gQy5zdW1cbiAgbGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbiAgbGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbiAgbGV0IGZvbGRpID0gQy5mb2xkaVxuICBsZXQgaXRlcmkgPSBDLml0ZXJpXG4gIGxldCBleGlzdHNpID0gQy5leGlzdHNpXG4gIGxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbiAgbGV0IGNvdW50aSA9IEMuY291bnRpXG4gIGxldCBmaW5kaSA9IEMuZmluZGlcbiAgbGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5cbiAgbGV0IHdyYXBfc3ViX24gdCBuIH5uYW1lIH5wb3MgfmxlbiB+b25fZXJyb3IgPVxuICAgIGlmIG4gPCAwXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgICBlbHNlIChcbiAgICAgIHRyeSBzdWIgdCB+cG9zIH5sZW4gd2l0aFxuICAgICAgfCBfIC0+IG9uX2Vycm9yKVxuICA7O1xuXG4gIGxldCBkcm9wX3ByZWZpeCB0IG4gPVxuICAgIHdyYXBfc3ViX25cbiAgICAgIH5uYW1lOlwiZHJvcF9wcmVmaXhcIlxuICAgICAgdFxuICAgICAgblxuICAgICAgfnBvczpuXG4gICAgICB+bGVuOihsZW5ndGggdCAtIG4pXG4gICAgICB+b25fZXJyb3I6eyB0IHdpdGggbGVuID0gMCB9XG4gIDs7XG5cbiAgbGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3N1ZmZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgcHJlZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJwcmVmaXhcIiB0IG4gfnBvczowIH5sZW46biB+b25fZXJyb3I6dFxuICBsZXQgc3VmZml4IHQgbiA9IHdyYXBfc3ViX24gfm5hbWU6XCJzdWZmaXhcIiB0IG4gfnBvczoobGVuZ3RoIHQgLSBuKSB+bGVuOm4gfm9uX2Vycm9yOnRcblxuICBsZXQgYmxpdF90byAodHlwZSBhKSAoYmxpdCA6IChVbmRlcmx5aW5nLnQsIGEpIEJsaXQudCkgdCB+ZHN0IH5kc3RfcG9zID1cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF90b19zdHJpbmcgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdF90b19ieXRlc1xuICBsZXQgYmxpdF90b19ieXRlcyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2JpZ3N0cmluZ1xuICBsZXQgYmxpdF9iYXNlID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRcblxuICBsZXQgYmxpdF9mcm9tIH5uYW1lICh0eXBlIGEpIChibGl0IDogKGEsIGJhc2UpIEJsaXQudCkgdCB+c3JjIH5zcmNfcG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IHQubGVuXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwiU3Vic3RyaW5nLmJsaXRfZnJvbV8lcyBsZW4gPiBzdWJzdHJpbmcgbGVuZ3RoIDogJWQgPiAlZFwiXG4gICAgICAgIG5hbWVcbiAgICAgICAgbGVuXG4gICAgICAgIHQubGVuXG4gICAgICAgICgpO1xuICAgIGJsaXQgfnNyYyB+c3JjX3BvcyB+c3JjX2xlbjpsZW4gfmRzdDp0LmJhc2UgfmRzdF9wb3M6dC5wb3MgKClcbiAgOztcblxuICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcInN0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX3N0cmluZ1xuICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IGJsaXRfZnJvbSB+bmFtZTpcImJpZ3N0cmluZ1wiIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZ1xuICBsZXQgb2ZfYmFzZSBiYXNlID0geyBiYXNlOyBwb3MgPSAwOyBsZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIH1cbiAgbGV0IG9mX3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9zdHJpbmcgeClcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0gb2ZfYmFzZSAoYmFzZV9vZl9iaWdzdHJpbmcgeClcblxuICBsZXQgbWFrZSAodHlwZSBhKSBjcmVhdGUgKGJsaXQgOiAoYmFzZSwgYSkgQmxpdC50KSB0ID1cbiAgICBsZXQgZHN0ID0gY3JlYXRlIHQubGVuIGluXG4gICAgYmxpdCB+c3JjOnQuYmFzZSB+c3JjX3Bvczp0LnBvcyB+c3JjX2xlbjp0LmxlbiB+ZHN0IH5kc3RfcG9zOjAgKCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZToobWFrZSBCeXRlcy5jcmVhdGUgVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzIHgpXG4gIDs7XG5cbiAgbGV0IHRvX2JpZ3N0cmluZyA9IG1ha2UgQmlnc3RyaW5nLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG5cbiAgbGV0IGNvbmNhdF9nZW4gY3JlYXRlX2RzdCBibGl0X2RzdCB0cyA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZCB0cyB+aW5pdDowIH5mOihmdW4gbGVuIHQgLT4gbGVuICsgbGVuZ3RoIHQpIGluXG4gICAgbGV0IGRzdCA9IGNyZWF0ZV9kc3QgbGVuIGluXG4gICAgaWdub3JlXG4gICAgICAoTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBkc3RfcG9zIHQgLT5cbiAgICAgICAgIGJsaXRfZHN0IHQgfmRzdCB+ZHN0X3BvcztcbiAgICAgICAgIGRzdF9wb3MgKyBsZW5ndGggdClcbiAgICAgICA6IGludCk7XG4gICAgZHN0XG4gIDs7XG5cbiAgbGV0IGNvbmNhdCB0cyA9IG9mX2Jhc2UgKGNvbmNhdF9nZW4gVW5kZXJseWluZy5jcmVhdGUgYmxpdF9iYXNlIHRzKVxuXG4gIGxldCBjb25jYXRfc3RyaW5nIHRzID1cbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nXG4gICAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooY29uY2F0X2dlbiBCeXRlcy5jcmVhdGUgYmxpdF90b19zdHJpbmcgdHMpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF9iaWdzdHJpbmcgdHMgPSBjb25jYXRfZ2VuIEJpZ3N0cmluZy5jcmVhdGUgYmxpdF90b19iaWdzdHJpbmcgdHNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMgPSBNYWtlX3N1YnN0cmluZy5TXG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQnl0ZXMudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJ5dGVzLmNyZWF0ZVxuICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQnl0ZXMuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYnl0ZXNfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJ5dGVzX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RyaW5nX2lkX2ludGZcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyX3dpdGhfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHZhbGlkYXRlIDogc3RyaW5nIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA6IGJvb2xcbiAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3Byb3QuU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgbGV0IGNoZWNrX2Zvcl93aGl0ZXNwYWNlID1cbiAgICAgICAgICBsZXQgaW52YWxpZCBzIHJlYXNvbiA9XG4gICAgICAgICAgICBFcnJvciAoc3ByaW50ZiBcIiclcycgaXMgbm90IGEgdmFsaWQgJXMgYmVjYXVzZSAlc1wiIHMgTS5tb2R1bGVfbmFtZSByZWFzb24pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBmdW4gcyAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgaWYgSW50LiggPSApIGxlbiAwXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGlzIGVtcHR5XCJcbiAgICAgICAgICAgIGVsc2UgaWYgQ2hhci5pc193aGl0ZXNwYWNlIHMuWzBdIHx8IENoYXIuaXNfd2hpdGVzcGFjZSBzLltsZW4gLSAxXVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBoYXMgd2hpdGVzcGFjZSBvbiB0aGUgZWRnZVwiXG4gICAgICAgICAgICBlbHNlIE9rICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHZhbGlkYXRlIHMgPSBSZXN1bHQubWFwX2Vycm9yIChNLnZhbGlkYXRlIHMpIH5mOkVycm9yLnRvX3N0cmluZ19tYWNoXG5cbiAgICAgICAgbGV0IGNoZWNrIHMgPVxuICAgICAgICAgIGlmIE0uaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb25cbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGNoZWNrX2Zvcl93aGl0ZXNwYWNlIHMgd2l0aFxuICAgICAgICAgICAgfCBPayAoKSAtPiB2YWxpZGF0ZSBzXG4gICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIGVycm9yKVxuICAgICAgICAgIGVsc2UgdmFsaWRhdGUgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSBGbi5pZFxuICAgICAgICBsZXQgcHAgPSBTdHJpbmcucHBcblxuICAgICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGludmFsaWRfYXJnIGVyclxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuU3RhYmxlLlYxLnRfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoU3RyaW5nKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdHJpbmdcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICAgIGxldCBvcGVuIEJpbl9wcm90LlNoYXBlIGluXG4gICAgICAgICAgbWF0Y2ggTS5jYWxsZXJfaWRlbnRpdHkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBiaW5fc2hhcGVfdFxuICAgICAgICAgIHwgU29tZSB1dWlkIC0+IGFubm90YXRlIHV1aWQgYmluX3NoYXBlX3RcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVF93aXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRfd2l0aF9jb21wYXJhdG9yXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICAgICAgZW5kKVxuICAgICAgKClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfZGlzdGluY3RfYmluX3NoYXBlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9wcm90LlNoYXBlLlV1aWQudFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlcl93aXRoX2Jpbl9zaGFwZVxuICAgICAgKHN0cnVjdFxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICAgIGxldCB2YWxpZGF0ZSA9IEZuLmNvbnN0IChPayAoKSlcbiAgICAgICAgbGV0IGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uID0gdHJ1ZVxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gU29tZSBNLmNhbGxlcl9pZGVudGl0eVxuICAgICAgZW5kKVxuICAgICAgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxuaW5jbHVkZVxuICBNYWtlXG4gICAgKHN0cnVjdFxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlN0cmluZ19pZFwiXG4gICAgZW5kKVxuICAgICgpXG5cbm1vZHVsZSBTdHJpbmdfd2l0aG91dF92YWxpZGF0aW9uX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgZ2xvYmFsaXplID0gZ2xvYmFsaXplX3N0cmluZ1xuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBGbi5pZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5pbmNsdWRlIFN0YWJsZV91bml0X3Rlc3RfaW50ZlxuXG5tb2R1bGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgZGVzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHNleHBfYXNfc3RyaW5nIHw+IFNleHAub2Zfc3RyaW5nIHw+IFslb2Zfc2V4cDogVC50XSlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPlxuICAgICAgICAgICBPcl9lcnJvci50YWdfYXJnXG4gICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICBcImNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXhwXCJcbiAgICAgICAgICAgICAoc2V4cF9hc19zdHJpbmcsIGBFeHBlY3RlZCB0KVxuICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogWyBgRXhwZWN0ZWQgb2YgVC50IF1dXG4gICAgICAgICB8IE9rIHQnIC0+XG4gICAgICAgICAgIGlmIFQuZXF1YWwgdCB0J1xuICAgICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgc2V4cF9hc19zdHJpbmcgaW5cbiAgICAgICAgICAgbGV0IHNlcmlhbGl6ZWRfc2V4cCA9IFQuc2V4cF9vZl90IHQgaW5cbiAgICAgICAgICAgaWYgU2V4cC4oIDw+ICkgc2VyaWFsaXplZF9zZXhwIHNleHBcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCBzZXhwLCBgQnV0X2dvdCBzZXJpYWxpemVkX3NleHApXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgXV0pKSlcbiAgICB8PiBva19leG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgXywgZXhwZWN0ZWRfYmluX2lvKSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCB0b19iaW5fc3RyaW5nIHQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfYmluX2lvID0gdG9fYmluX3N0cmluZyB0IGluXG4gICAgICBpZiBTdHJpbmcuKCA8PiApIHNlcmlhbGl6ZWRfYmluX2lvIGV4cGVjdGVkX2Jpbl9pb1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKHQsIGBFeHBlY3RlZCBleHBlY3RlZF9iaW5faW8sIGBCdXRfZ290IHNlcmlhbGl6ZWRfYmluX2lvKVxuICAgICAgICAgIFslc2V4cF9vZjogVC50ICogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nIF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSBzZXJpYWxpemVkX2Jpbl9pbyBpblxuICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9zZXhwX3NlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX2Jpbl9pb190ZXN0IChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3Vub3JkZXJlZF9jb250YWluZXIgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl9hcmcpID1cbnN0cnVjdFxuICBtb2R1bGUgVGVzdCA9IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX3Rlc3RcblxuICBsZXQldGVzdF91bml0IFwic2V4cFwiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3Quc2V4cHM7IF8gfSkgLT5cbiAgICAgIGxldCBzZXhwcyA9IExpc3QubWFwIHNleHBzIH5mOlNleHAub2Zfc3RyaW5nIGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9lbGVtZW50cyA9XG4gICAgICAgIG1hdGNoIFQuc2V4cF9vZl90IHQgd2l0aFxuICAgICAgICB8IFNleHAuTGlzdCBzZXhwcyAtPiBzZXhwc1xuICAgICAgICB8IFNleHAuQXRvbSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImV4cGVjdGVkIGxpc3Qgd2hlbiBzZXJpYWxpemluZyB1bm9yZGVyZWQgY29udGFpbmVyXCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFQuc2V4cF9vZl90XG4gICAgICBpblxuICAgICAgbGV0IHNvcnRlZF9zZXhwcyA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2V4cHMgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2VyaWFsaXplZCA9IExpc3Quc29ydCB+Y29tcGFyZTpTZXhwLmNvbXBhcmUgc2VyaWFsaXplZF9lbGVtZW50cyBpblxuICAgICAgaWYgbm90IChMaXN0LmVxdWFsIFNleHAuKCA9ICkgc29ydGVkX3NleHBzIHNvcnRlZF9zZXJpYWxpemVkKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXhwIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cHMsIGBCdXRfZ290IHNlcmlhbGl6ZWRfZWxlbWVudHMpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBTZXhwLnQgbGlzdCBdXTtcbiAgICAgIGxldCBzZXhwX3Blcm11dGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIHNleHBzKSBpblxuICAgICAgTGlzdC5pdGVyIHNleHBfcGVybXV0YXRpb25zIH5mOihmdW4gc2V4cHMgLT5cbiAgICAgICAgbGV0IHQnID0gVC50X29mX3NleHAgKFNleHAuTGlzdCBzZXhwcykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbXNpbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBpc19jb25jYXRlbmF0aW9uIHN0cmluZyBzdHJpbmdzID1cbiAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgdGhlbiBMaXN0LmZvcl9hbGwgc3RyaW5ncyB+ZjpTdHJpbmcuaXNfZW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCByZXZfc2tpcHBlZCBzdHJpbmdzID1cbiAgICAgICAgbWF0Y2ggc3RyaW5ncyB3aXRoXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgICAgfCBwcmVmaXggOjogc3RyaW5ncyAtPlxuICAgICAgICAgIGxldCBjb250aW51ZSAoKSA9IGxvb3AgKHByZWZpeCA6OiByZXZfc2tpcHBlZCkgc3RyaW5ncyBpblxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeCBzdHJpbmcgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gY29udGludWUgKClcbiAgICAgICAgICAgfCBTb21lIHN0cmluZyAtPlxuICAgICAgICAgICAgIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIChMaXN0LnJldl9hcHBlbmQgcmV2X3NraXBwZWQgc3RyaW5ncykgfHwgY29udGludWUgKCkpXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBzdHJpbmdzKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJiaW5faW9cIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LmJpbl9pb19oZWFkZXI7IGJpbl9pb19lbGVtZW50czsgXyB9KSAtPlxuICAgICAgbGV0IGJpbmFibGVfbSA9IChtb2R1bGUgVCA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA9IFQudCkgaW5cbiAgICAgIGxldCBlbGVtZW50cyA9IGJpbl9pb19lbGVtZW50cyBpblxuICAgICAgbGV0IGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cyA9IGJpbl9pb19oZWFkZXIgXiBTdHJpbmcuY29uY2F0IGVsZW1lbnRzIGluXG4gICAgICBsZXQgc2VyaWFsaXplZCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXphdGlvbl9tYXRjaGVzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXg6YmluX2lvX2hlYWRlciBzZXJpYWxpemVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBlbGVtZW50c19zdHJpbmcgLT4gaXNfY29uY2F0ZW5hdGlvbiBlbGVtZW50c19zdHJpbmcgZWxlbWVudHNcbiAgICAgIGluXG4gICAgICBpZiBub3Qgc2VyaWFsaXphdGlvbl9tYXRjaGVzXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgIChgRXhwZWN0ZWQgKGJpbl9pb19oZWFkZXIsIGVsZW1lbnRzKSwgYEJ1dF9nb3Qgc2VyaWFsaXplZClcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIHN0cmluZyAqIHN0cmluZyBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIHN0cmluZyBdXTtcbiAgICAgIGxldCBwZXJtdXRhdGF0aW9ucyA9IExpc3QuaW5pdCAxMCB+ZjooZnVuIF8gLT4gTGlzdC5wZXJtdXRlIGVsZW1lbnRzKSBpblxuICAgICAgTGlzdC5pdGVyIHBlcm11dGF0YXRpb25zIH5mOihmdW4gZWxlbWVudHMgLT5cbiAgICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIChiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcImJpbi1pbyBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gIDs7XG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG4oKiBUaGUgbW9kdWxlIFtUXSBzZXJ2ZXMgdG8gZW5mb3JjZSB0aGUgaW52YXJpYW50IHRoYXQgYWxsIEJsYW5nLnQgdmFsdWVzIGFyZSBpbiBhXG4gICBub3JtYWwgZm9ybSB3aGVyZWJ5IGJvb2xlYW4gY29uc3RhbnRzIFRydWUgYW5kIEZhbHNlIG9ubHkgYXBwZWFyIGFzIHRoZSB0b3Btb3N0XG4gICBjb25zdHJ1Y3RvciAtLSBpbiBhbnkgb3RoZXIgcG9zaXRpb24gdGhleSBhcmUgc2ltcGxpZmllZCBhd2F5IHVzaW5nIGxhd3Mgb2ZcbiAgIGJvb2xlYW4gYWxnZWJyYS5cblxuICAgV2UgYWxzbyBlbmZvcmNlIHRoYXQgbmVzdGVkIFtBbmRdcyBhbmQgW09yXXMgZWFjaCBsZWFuIHRvIHRoZSByaWdodCBzbyB0aGF0IFtldmFsXVxuICAgZG9lc24ndCBuZWVkIHNvIG11Y2ggc3RhY2sgc3BhY2UgYXMgaXQgd291bGQgaWYgdGhleSBsZWFuZWQgdG8gdGhlIGxlZnQuICBUaG91Z2h0XG4gICBleHBlcmltZW50OiBjb21wYXJlIGhvdyBbZXZhbF0gd29ya3Mgb24gcmlnaHQtbGVhbmluZyBbQW5kIChhLCBBbmQgKGIsIEFuZCAoYywgZCkpKV1cbiAgIHZlcnN1cyBsZWZ0LWxlYW5pbmcgW0FuZCAoQW5kIChBbmQgKGEsIGIpLCBjKSwgZCldLiAgVGhlIGZvcm1lciBpcyB0aGUgYmVzdCBjYXNlIGFuZCBpc1xuICAgZW5mb3JjZWQuXG5cbiAgIE5vdGU6IHRoaXMgZmlsZSBkZXZpYXRlcyBmcm9tIHRoZSB1c3VhbCBwYXR0ZXJuIG9mIG1vZHVsZXMgd2l0aCBTdGFibGUgaW50ZXJmYWNlcyBpblxuICAgdGhhdCB0aGUgU3RhYmxlIHN1Yi1tb2R1bGUgaXMgbm90IHRoZSBmaXJzdCB0aGluZyB0byBiZSBkZWZpbmVkIGluIHRoZSBtb2R1bGUuICBUaGVcbiAgIHJlYXNvbiBmb3IgdGhpcyBkZXZpYXRpb24gaXMgc28gdGhhdCBvbmUgY2FuIGNvbnZpbmNlIG9uZXNlbGYgb2YgdGhlIGFmb3JlbWVudGlvbmVkXG4gICBpbnZhcmlhbnQgYWZ0ZXIgcmVhZGluZyBvbmx5IHRoaXMgc21hbGwgYW1vdW50IG9mIGNvZGUuICBBZnRlciBkZWZpbmluZyBUIHdlIHRoZW5cbiAgIGltbWVkaWF0ZWx5IGRlZmluZSBpdHMgU3RhYmxlIGludGVyZmFjZS5cbiopXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICsnYSB0ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICB2YWwgaW52YXJpYW50IDogJ2EgdCAtPiB1bml0XG4gIHZhbCB0cnVlXyA6ICdhIHRcbiAgdmFsIGZhbHNlXyA6ICdhIHRcbiAgdmFsIG5vdF8gOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFuZGFsc28gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgb3JlbHNlIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGlmXyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9XG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIGxldCBpbnZhcmlhbnQgPVxuICAgIGxldCBzdWJ0ZXJtcyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSB8IEJhc2UgXyAtPiBbXVxuICAgICAgfCBOb3QgdDEgLT4gWyB0MSBdXG4gICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IFsgdDE7IHQyIF1cbiAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IFsgdDE7IHQyOyB0MyBdXG4gICAgaW5cbiAgICBsZXQgcmVjIGNvbnRhaW5zX25vX2NvbnN0YW50cyA9IGZ1bmN0aW9uXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICAgIGluXG4gICAgZnVuIHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgOztcblxuICBsZXQgdHJ1ZV8gPSBUcnVlXG4gIGxldCBmYWxzZV8gPSBGYWxzZVxuICBsZXQgYmFzZSB2ID0gQmFzZSB2XG5cbiAgbGV0IG5vdF8gPSBmdW5jdGlvblxuICAgIHwgVHJ1ZSAtPiBGYWxzZVxuICAgIHwgRmFsc2UgLT4gVHJ1ZVxuICAgIHwgTm90IHQgLT4gdFxuICAgIHwgdCAtPiBOb3QgdFxuICA7O1xuXG4gIGxldCByZWMgYW5kYWxzbyB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIEZhbHNlIHwgRmFsc2UsIF8gLT4gRmFsc2VcbiAgICB8IG90aGVyLCBUcnVlIHwgVHJ1ZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IEFuZCAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW0FuZF1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIEFuZCAodDFhLCBhbmRhbHNvIHQxYiB0MilcbiAgICB8IF8gLT4gQW5kICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IHJlYyBvcmVsc2UgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBUcnVlIHwgVHJ1ZSwgXyAtPiBUcnVlXG4gICAgfCBvdGhlciwgRmFsc2UgfCBGYWxzZSwgb3RoZXIgLT4gb3RoZXJcbiAgICB8IE9yICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbT3JdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBPciAodDFhLCBvcmVsc2UgdDFiIHQyKVxuICAgIHwgXyAtPiBPciAodDEsIHQyKVxuICA7O1xuXG4gIGxldCBpZl8gYSBiIGMgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgVHJ1ZSAtPiBiXG4gICAgfCBGYWxzZSAtPiBjXG4gICAgfCBfIC0+XG4gICAgICAobWF0Y2ggYiwgYyB3aXRoXG4gICAgICAgfCBUcnVlLCBfIC0+IG9yZWxzZSBhIGNcbiAgICAgICB8IF8sIEZhbHNlIC0+IGFuZGFsc28gYSBiXG4gICAgICAgfCBfLCBUcnVlIC0+IG9yZWxzZSAobm90XyBhKSBiXG4gICAgICAgfCBGYWxzZSwgXyAtPiBhbmRhbHNvIChub3RfIGEpIGNcbiAgICAgICB8IF8gLT4gSWYgKGEsIGIsIGMpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYXcgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgOiBzaWdcbiAgICAoKiBUSElTIFRZUEUgQU5EIElUUyBTRVJJQUxJWkFUSU9OUyBTSE9VTEQgTkVWRVIgQkUgQ0hBTkdFRCAtIFBMRUFTRSBTUEVBSyBXSVRIXG4gICAgICAgQU5PVEhFUiBERVZFTE9QRVIgSUYgWU9VIE5FRUQgTU9SRSBERVRBSUwgKilcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICAgIHwgVHJ1ZVxuICAgICAgfCBGYWxzZVxuICAgICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICAgIHwgTm90IG9mICdhIHRcbiAgICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgICB8IEJhc2Ugb2YgJ2FcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgKCogVGhpcyB0eXBlIGlzIGFzc3VtZWQgdG8gYmUgc3RhYmxlIGlmIHRoZSAnYSBpcyBzdGFibGUgKHNlZSBiaWcgY29tbWVudCBhYm92ZSkuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIChfIDogJ2EgU3RhYmxlX3dpdG5lc3MudCkgOiAnYSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4gICAgdHlwZSBzZXhwID0gU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiBzZXhwIGxpc3RcblxuICAgICgqIGNoZWFwIGltcG9ydCAqKVxuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIGFuZCdzICopXG4gICAgbGV0IGdhdGhlcl9jb25qdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogZmxhdHRlbiBvdXQgbmVzdGVkIG9yJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Rpc2p1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBbYW5kX10gYW5kIFtvcl9dIHVzZSBbZm9sZF9yaWdodF0gaW5zdGVhZCBvZiBbZm9sZF9sZWZ0XSB0byBhdm9pZCBxdWFkcmF0aWNcbiAgICAgICBiZWhhdmlvciB3aXRoIFthbmRhbHNvXSBvciBbb3JlbHNlXSwgcmVzcGVjdGl2ZWx5LiAqKVxuICAgIGxldCBhbmRfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OnRydWVfIH5mOmFuZGFsc29cbiAgICBsZXQgb3JfIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OmZhbHNlXyB+ZjpvcmVsc2VcblxuICAgIGxldCB1bmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4IF0gLT4geFxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyBvbmUgYXJndW1lbnQsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCB0ZXJuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHg7IHk7IHogXSAtPiB4LCB5LCB6XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIHRocmVlIGFyZ3VtZW50cywgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgbGV0IHJlYyBhdXggdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEJhc2UgeCAtPiBzZXhwX29mX3ZhbHVlIHhcbiAgICAgICAgfCBUcnVlIC0+IEF0b20gXCJ0cnVlXCJcbiAgICAgICAgfCBGYWxzZSAtPiBBdG9tIFwiZmFsc2VcIlxuICAgICAgICB8IE5vdCB0IC0+IExpc3QgWyBBdG9tIFwibm90XCI7IGF1eCB0IF1cbiAgICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gTGlzdCBbIEF0b20gXCJpZlwiOyBhdXggdDE7IGF1eCB0MjsgYXV4IHQzIF1cbiAgICAgICAgfCBBbmQgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Nvbmp1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcImFuZFwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgICAgfCBPciBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfZGlzanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwib3JcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICBpblxuICAgICAgYXV4IHRcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBiYXNlX29mX3NleHAgc2V4cCA9XG4gICAgICBsZXQgYmFzZSBzZXhwID0gYmFzZSAoYmFzZV9vZl9zZXhwIHNleHApIGluXG4gICAgICBsZXQgcmVjIGF1eCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgQXRvbSBrdyAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcInRydWVcIiAtPiB0cnVlX1xuICAgICAgICAgICB8IFwiZmFsc2VcIiAtPiBmYWxzZV9cbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBMaXN0IChBdG9tIGt3IDo6IGFyZ3MpIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwiYW5kXCIgLT4gYW5kXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJvclwiIC0+IG9yXyAoTGlzdC5tYXAgfmY6YXV4IGFyZ3MpXG4gICAgICAgICAgIHwgXCJub3RcIiAtPiBub3RfIChhdXggKHVuYXJ5IFwibm90XCIgYXJncyBzZXhwKSlcbiAgICAgICAgICAgfCBcImlmXCIgLT5cbiAgICAgICAgICAgICBsZXQgeCwgeSwgeiA9IHRlcm5hcnkgXCJpZlwiIGFyZ3Mgc2V4cCBpblxuICAgICAgICAgICAgIGlmXyAoYXV4IHgpIChhdXggeSkgKGF1eCB6KVxuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IF8gLT4gYmFzZSBzZXhwXG4gICAgICBpblxuICAgICAgYXV4IHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICAgIGxldCBkZWZucyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmRlZm4gbGlzdCA9XG4gICAgICAgIGxldCBibGFuZyA6IFNleHBsaWIuU2V4cF9ncmFtbWFyLmdyYW1tYXIgPSBSZWN1cnNpdmUgKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+IHsgdW50eXBlZCA9IFR5Y29uIChcImJsYW5nXCIsIFsgYmFzZV9ncmFtbWFyLnVudHlwZWQgXSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW10gW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICAgIGxldCBsZW5ndGggPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkID0gQy5mb2xkXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGlzX2VtcHR5ID0gQy5pc19lbXB0eVxubGV0IGl0ZXIgPSBDLml0ZXJcbmxldCBsZW5ndGggPSBDLmxlbmd0aFxubGV0IG1lbSA9IEMubWVtXG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQmFzZSB2IC0+IGsgdlxuICB8IFRydWUgLT4gdHJ1ZV9cbiAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgfCBOb3QgdDEgLT4gbm90XyAoYmluZCB0MSB+ZjprKVxuICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgIGZyaWVuZHMgaGVyZS4gSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGRvIHNvbWV0aGluZyBpbnZvbHZpbmcgW0xhenkudF0gYnV0IHRoZVxuICAgICBvdmVyaGVhZCBwcm9iYWJseSB3b3VsZG4ndCBiZSB3b3J0aCBpdC4gKilcbiAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBGYWxzZSAtPiBmYWxzZV9cbiAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICB8IE9yICh0MSwgdDIpIC0+XG4gICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICB8IG90aGVyIC0+IG9yZWxzZSBvdGhlciAoYmluZCB0MiB+ZjprKSlcbiAgfCBJZiAodDEsIHQyLCB0MykgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBUcnVlIC0+IGJpbmQgdDIgfmY6a1xuICAgICB8IEZhbHNlIC0+IGJpbmQgdDMgfmY6a1xuICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbjs7XG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXZhbF9zZXQgfnVuaXZlcnNlOmFsbCBzZXRfb2ZfYmFzZSB0ID1cbiAgbGV0IHJlYyBhdXggKGIgOiBfIHQpID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IFRydWUgLT4gZm9yY2UgYWxsXG4gICAgfCBGYWxzZSAtPiBTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooU2V0LmNvbXBhcmF0b3IgKGZvcmNlIGFsbCkpXG4gICAgfCBBbmQgKGEsIGIpIC0+IFNldC5pbnRlciAoYXV4IGEpIChhdXggYilcbiAgICB8IE9yIChhLCBiKSAtPiBTZXQudW5pb24gKGF1eCBhKSAoYXV4IGIpXG4gICAgfCBOb3QgYSAtPiBTZXQuZGlmZiAoZm9yY2UgYWxsKSAoYXV4IGEpXG4gICAgfCBCYXNlIGEgLT4gc2V0X29mX2Jhc2UgYVxuICAgIHwgSWYgKGNvbmQsIGEsIGIpIC0+XG4gICAgICBsZXQgY29uZCA9IGF1eCBjb25kIGluXG4gICAgICBTZXQudW5pb24gKFNldC5pbnRlciBjb25kIChhdXggYSkpIChTZXQuaW50ZXIgKFNldC5kaWZmIChmb3JjZSBhbGwpIGNvbmQpIChhdXggYikpXG4gIGluXG4gIGF1eCB0IFtAbm9udGFpbF1cbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgcmV0dXJuID0gYmFzZVxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IGFicyB0ID0gb2ZfcmVwciAoUmVwci5hYnMgKHRvX3JlcHIgdCkpXG5sZXQgbmVnIHQgPSBvZl9yZXByIChSZXByLm5lZyAodG9fcmVwciB0KSlcbmxldCBzaWduIHQgPSBSZXByLnNpZ24gKHRvX3JlcHIgdClcbmxldCB6ZXJvID0gb2ZfcmVwciBSZXByLnplcm9cbmxldCBtaW5fdmFsdWUgPSBvZl9yZXByIFJlcHIubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlID0gb2ZfcmVwciBSZXByLm1heF92YWx1ZVxubGV0IHNjYWxlID0gSW5maXguKCAqIClcbmxldCBpc2NhbGUgdCBzID0gb2ZfcmVwciAoUmVwci4oICogKSAodG9fcmVwciB0KSAoUmVwci5vZl9pbnQgcykpXG5sZXQgYnl0ZXNfaW50X2V4biA9IFQuYnl0ZXNfaW50X2V4blxubGV0IGJ5dGVzX2ludDYzID0gdG9fcmVwclxubGV0IGJ5dGVzX2ludDY0IHQgPSBSZXByLnRvX2ludDY0ICh0b19yZXByIHQpXG5sZXQgYnl0ZXNfZmxvYXQgdCA9IFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdClcbmxldCBvZl9ieXRlc19pbnQgYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50IGIpXG5sZXQgb2ZfYnl0ZXNfaW50NjMgPSBvZl9yZXByXG5sZXQgb2ZfYnl0ZXNfaW50NjRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2ludDY0X2V4biBiKVxubGV0IG9mX2J5dGVzX2Zsb2F0X2V4biBiID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCBiKVxuXG5sZXQgKGJ5dGVzIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbYnl0ZXNfaW50X2V4bl0sIFtieXRlc19pbnQ2M10sIFtieXRlc19pbnQ2NF0gb3IgXFxcbiAgICAgICAgW2J5dGVzX2Zsb2F0XSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgYnl0ZXNfZmxvYXRcbjs7XG5cbmxldCAob2ZfYnl0ZXMgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBcXFxuICAgICAgICBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBbb2ZfYnl0ZXNfZmxvYXRfZXhuXSBhcyBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXQgKHdvcmRzIFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW3dvcmRzX2ludF9leG5dIG9yIFt3b3Jkc19mbG9hdF1cIl0pID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldCAob2Zfd29yZHMgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2Zfd29yZHNfaW50XSBvciBbb2Zfd29yZHNfZmxvYXRfZXhuXVwiXSkgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIGJhc2VcbiAgfCBleHQgLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIGlsbGVnYWwgZXh0ZW5zaW9uICVjXCIgcyBleHQgKClcbjs7XG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuXG5sZXQgbGFyZ2VzdF9tZWFzdXJlIHQgPVxuICBsZXQgdF9hYnMgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSkgaW5cbiAgaWYgdF9hYnMgPj0gZXhhYnl0ZVxuICB0aGVuIGBFeGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHBldGFieXRlXG4gIHRoZW4gYFBldGFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IHRlcmFieXRlXG4gIHRoZW4gYFRlcmFieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGdpZ2FieXRlXG4gIHRoZW4gYEdpZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IG1lZ2FieXRlXG4gIHRoZW4gYE1lZ2FieXRlc1xuICBlbHNlIGlmIHRfYWJzID49IGtpbG9ieXRlXG4gIHRoZW4gYEtpbG9ieXRlc1xuICBlbHNlIGBCeXRlc1xuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAoKiBTaGFyZSB0aGUgY29tbW9uIFtvZl9zZXhwXSBjb2RlIGZvciBbVjFdIGFuZCBbVjJdLiAqKVxuICBtb2R1bGUgT2Zfc2V4cF92MV92MiA6IHNpZ1xuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwLnQgLT4gdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fbWF0Y2ggKCkgPSBmYWlsd2l0aCBcIk5vdCBhIHJlY29nbml6ZWQgW0J5dGVfdW5pdHMudF0gcmVwcmVzZW50YXRpb25cIlxuXG4gICAgbGV0IG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWxfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiQnl0ZXNcIiAtPlxuICAgICAgICAodHJ5IG9mX2J5dGVzX2ludDYzIChJbnQ2My50X29mX3NleHAgdmFsX3NleHApIHdpdGhcbiAgICAgICAgIHwgXyAtPiBvZl9ieXRlc19mbG9hdF9leG4gKEZsb2F0LnRfb2Zfc2V4cCB2YWxfc2V4cCkpXG4gICAgICB8IFwiS2lsb2J5dGVzXCIgLT4gb2Zfa2lsb2J5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIk1lZ2FieXRlc1wiIC0+IG9mX21lZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJHaWdhYnl0ZXNcIiAtPiBvZl9naWdhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiVGVyYWJ5dGVzXCIgLT4gb2ZfdGVyYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIlBldGFieXRlc1wiIC0+IG9mX3BldGFieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJFeGFieXRlc1wiIC0+IG9mX2V4YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIldvcmRzXCIgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBfIC0+IG5vX21hdGNoICgpXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gc3RyIC0+IG9mX3N0cmluZyBzdHJcbiAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIHVuaXRfbmFtZTsgdmFsdWUgXSAtPlxuICAgICAgICBvZl92YWx1ZV9zZXhwX2FuZF91bml0X25hbWUgdmFsdWUgdW5pdF9uYW1lXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIHRyeSB0X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGV4biAtPiByYWlzZSAoU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHNleHApKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBzdGFibGVfd2l0bmVzc19mbG9hdCBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2ludDYzXG4gICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19pbnQ2M1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEludDYzLlN0YWJsZS5WMSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBJbnQ2My5TdGFibGUuVjEuc3RhYmxlX3dpdG5lc3Mgb2ZfYmluYWJsZSB0b19iaW5hYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgT2Zfc2V4cF92MV92MlxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfaW50NjMgdCA6IEludDYzLnQpXVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IFQudG9fc3RyaW5nXG5cbm1vZHVsZSBTaG9ydCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgbGV0IHRvX3VuaXRzX3N0ciB0b191bml0IGV4dCA9XG4gICAgICBsZXQgZiA9IHRvX3VuaXQgdCBpblxuICAgICAgbGV0IGZfYWJzID0gRmxvYXQuYWJzIGYgaW5cbiAgICAgIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMDAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjBmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBpZiBGbG9hdC5Sb2J1c3RseV9jb21wYXJhYmxlLiggPj0uICkgZl9hYnMgMTAuXG4gICAgICB0aGVuIHNwcmludGYgXCIlLjFmJWNcIiBmIGV4dFxuICAgICAgZWxzZSBzcHJpbnRmIFwiJS4yZiVjXCIgZiBleHRcbiAgICBpblxuICAgIG1hdGNoIGxhcmdlc3RfbWVhc3VyZSB0IHdpdGhcbiAgICB8IGBCeXRlcyAtPiBzcHJpbnRmIFwiJWRCXCIgKGJ5dGVzX2ludF9leG4gdClcbiAgICB8IGBLaWxvYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGtpbG9ieXRlcyAnSydcbiAgICB8IGBNZWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIG1lZ2FieXRlcyAnTSdcbiAgICB8IGBHaWdhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIGdpZ2FieXRlcyAnRydcbiAgICB8IGBUZXJhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHRlcmFieXRlcyAnVCdcbiAgICB8IGBQZXRhYnl0ZXMgLT4gdG9fdW5pdHNfc3RyIHBldGFieXRlcyAnUCdcbiAgICB8IGBFeGFieXRlcyAtPiB0b191bml0c19zdHIgZXhhYnl0ZXMgJ0UnXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgWyVleHBlY3Qge3wgMTAwMEIgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgIFslZXhwZWN0IHt8IDEwMjNCIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI0KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgWyVleHBlY3Qge3wgMS4wMEsgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ljc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5Ny43SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOTc3SyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNTRNIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDkuMzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTAuOVQgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAwMDAwMC4pO1xuICAgIFslZXhwZWN0IHt8IDg4LjhQIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXQgKGNyZWF0ZSBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzXSwgW29mX2tpbG9ieXRlc10sIFtvZl9tZWdhYnl0ZXNdLCBldGMgYXMgXFxcbiAgICAgICAgYXBwcm9wcmlhdGUuXCJdKVxuICA9XG4gIGZ1biB1bml0cyB2YWx1ZSAtPlxuICBtYXRjaCB1bml0cyB3aXRoXG4gIHwgYEJ5dGVzIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biB2YWx1ZVxuICB8IGBLaWxvYnl0ZXMgLT4gb2Zfa2lsb2J5dGVzIHZhbHVlXG4gIHwgYE1lZ2FieXRlcyAtPiBvZl9tZWdhYnl0ZXMgdmFsdWVcbiAgfCBgR2lnYWJ5dGVzIC0+IG9mX2dpZ2FieXRlcyB2YWx1ZVxuICB8IGBXb3JkcyAtPiBvZl93b3Jkc19mbG9hdF9leG4gdmFsdWVcbjs7XG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUmVwcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgb2ZfcXVpY2tjaGVja2FibGUgPSBvZl9yZXByXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19yZXByXG4gICAgZW5kKVxuIiwiKCoqIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHBvbHltb3JwaGljIGZ1bmN0aW9uYWwgZG91YmxlLWVuZGVkIHF1ZXVlLiAqKVxuXG4oKiogSW52YXJpYW50czpcbiAgICAtIHF1ZXVlLmxlbmd0aCA9IExpc3QubGVuZ3RoIHF1ZXVlLmZyb250ICsgTGlzdC5sZW5ndGggcXVldWUuYmFja1xuICAgIC0gaWYgcXVldWUgaGFzID49IDIgZWxlbWVudHMsIG5laXRoZXIgZnJvbnQgbm9yIGJhY2sgYXJlIGVtcHR5XG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbmV4Y2VwdGlvbiBFbXB0eSBbQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlICdhIHQgPVxuICB7IGZyb250IDogJ2EgbGlzdFxuICA7IGJhY2sgOiAnYSBsaXN0XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgZiB0ID1cbiAgbGV0IG5fZnJvbnQgPSBMaXN0Lmxlbmd0aCB0LmZyb250IGluXG4gIGxldCBuX2JhY2sgPSBMaXN0Lmxlbmd0aCB0LmJhY2sgaW5cbiAgYXNzZXJ0ICh0Lmxlbmd0aCA9IG5fZnJvbnQgKyBuX2JhY2spO1xuICBhc3NlcnQgKHQubGVuZ3RoIDwgMiB8fCAobl9mcm9udCA8PiAwICYmIG5fYmFjayA8PiAwKSk7XG4gIExpc3QuaXRlciB0LmZyb250IH5mO1xuICBMaXN0Lml0ZXIgdC5iYWNrIH5mXG47O1xuXG5sZXQgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjayA9XG4gIG1hdGNoIGZyb250LCBiYWNrIHdpdGhcbiAgfCBbXSwgW10gfCBbIF8gXSwgW10gfCBbXSwgWyBfIF0gfCBfIDo6IF8sIF8gOjogXyAtPiB7IGZyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IFtdLCBfIDo6IF8gOjogXyAtPlxuICAgIGxldCBiYWNrLCByZXZfZnJvbnQgPSBMaXN0LnNwbGl0X24gYmFjayAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250ID0gTGlzdC5yZXYgcmV2X2Zyb250OyBiYWNrOyBsZW5ndGggfVxuICB8IF8gOjogXyA6OiBfLCBbXSAtPlxuICAgIGxldCBmcm9udCwgcmV2X2JhY2sgPSBMaXN0LnNwbGl0X24gZnJvbnQgKGxlbmd0aCAvIDIpIGluXG4gICAgeyBmcm9udDsgYmFjayA9IExpc3QucmV2IHJldl9iYWNrOyBsZW5ndGggfVxuOztcblxubGV0IGVtcHR5ID0geyBmcm9udCA9IFtdOyBiYWNrID0gW107IGxlbmd0aCA9IDAgfVxubGV0IGVucXVldWVfZnJvbnQgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5mcm9udDooeCA6OiB0LmZyb250KSB+YmFjazp0LmJhY2tcbmxldCBlbnF1ZXVlX2JhY2sgdCB4ID0gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCArIDEpIH5iYWNrOih4IDo6IHQuYmFjaykgfmZyb250OnQuZnJvbnRcblxubGV0W0Bjb2xkXSByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8ZnJvbnR8ID0gMCwgfGJhY2t8ID49IDJcIl1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkgPVxuICByYWlzZV9zIFslc2V4cCBcIkJVRzogRmRlcXVlOiB8YmFja3wgPSAwLCB8ZnJvbnR8ID49IDJcIl1cbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyB4IF0gLT4geFxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IHggOjogXyAtPiB4XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfYmFja19pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9mcm9udF9leG4gdCA9XG4gIG1hdGNoIHQuZnJvbnQgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5mcm9udDp4cyB+YmFjazp0LmJhY2tcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmJhY2sgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9mcm9udF9pbnZhcmlhbnQgKCkpXG47O1xuXG5sZXQgZHJvcF9iYWNrX2V4biB0ID1cbiAgbWF0Y2ggdC5iYWNrIHdpdGhcbiAgfCBfIDo6IHhzIC0+IG1ha2Ugfmxlbmd0aDoodC5sZW5ndGggLSAxKSB+YmFjazp4cyB+ZnJvbnQ6dC5mcm9udFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuZnJvbnQgd2l0aFxuICAgICB8IFtdIC0+IHJhaXNlIEVtcHR5XG4gICAgIHwgWyBfIF0gLT4gZW1wdHlcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gcGVla19mcm9udF9leG4gdCwgZHJvcF9mcm9udF9leG4gdFxubGV0IGRlcXVldWVfYmFja19leG4gdCA9IHBlZWtfYmFja19leG4gdCwgZHJvcF9iYWNrX2V4biB0XG5cbmxldCBvcHRpb25hbCBmIHQgPVxuICBtYXRjaCBmIHQgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIEVtcHR5IC0+IE5vbmVcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBvcHRpb25hbCBwZWVrX2Zyb250X2V4biB0XG5sZXQgcGVla19iYWNrIHQgPSBvcHRpb25hbCBwZWVrX2JhY2tfZXhuIHRcbmxldCBkcm9wX2Zyb250IHQgPSBvcHRpb25hbCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZHJvcF9iYWNrIHQgPSBvcHRpb25hbCBkcm9wX2JhY2tfZXhuIHRcbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBvcHRpb25hbCBkZXF1ZXVlX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBvcHRpb25hbCBkZXF1ZXVlX2JhY2tfZXhuIHRcblxubGV0IGVucXVldWUgdCBzaWRlIHggPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB4XG47O1xuXG5sZXQgcGVlayB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udCB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrIHRcbjs7XG5cbmxldCBwZWVrX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gcGVla19mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IHBlZWtfYmFja19leG4gdFxuOztcblxubGV0IGRyb3AgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayB0XG47O1xuXG5sZXQgZHJvcF9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkcm9wX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgcmV2IHQgPSB7IHQgd2l0aCBmcm9udCA9IHQuYmFjazsgYmFjayA9IHQuZnJvbnQgfVxuXG5tb2R1bGUgQXJiaXRyYXJ5X29yZGVyID0gc3RydWN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2X2FwcGVuZCB0LmZyb250IHQuYmFja1xuICBsZXQgdG9fYXJyYXkgdCA9IEFycmF5Lm9mX2xpc3QgKHRvX2xpc3QgdClcbiAgbGV0IHRvX3NlcXVlbmNlIHQgPSBTZXF1ZW5jZS5hcHBlbmQgKFNlcXVlbmNlLm9mX2xpc3QgdC5mcm9udCkgKFNlcXVlbmNlLm9mX2xpc3QgdC5iYWNrKVxuXG4gIGxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gICAgbGV0IG9wZW4gTSBpblxuICAgIExpc3Quc3VtIChtb2R1bGUgTSkgdC5mcm9udCB+ZiArIExpc3Quc3VtIChtb2R1bGUgTSkgdC5iYWNrIH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50IHQuZnJvbnQgfmYgKyBMaXN0LmNvdW50IHQuYmFjayB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIHQuZnJvbnQgfmYgJiYgTGlzdC5mb3JfYWxsIHQuYmFjayB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyB0LmZyb250IH5mIHx8IExpc3QuZXhpc3RzIHQuYmFjayB+ZlxuICBsZXQgbWVtIHQgeCB+ZXF1YWwgPSBMaXN0Lm1lbSB+ZXF1YWwgdC5mcm9udCB4IHx8IExpc3QubWVtIH5lcXVhbCB0LmJhY2sgeFxuXG4gIGxldCBpdGVyIHQgfmYgPVxuICAgIExpc3QuaXRlciB0LmZyb250IH5mO1xuICAgIExpc3QuaXRlciB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAoTGlzdC5mb2xkIHQuZnJvbnQgfmluaXQgfmYgfD4gZnVuIGluaXQgLT4gTGlzdC5mb2xkIHQuYmFjayB+aW5pdCB+ZikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuZW5kXG5cbm1vZHVsZSBGcm9udF90b19iYWNrID0gc3RydWN0XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5mcm9udDpsaXN0IH5iYWNrOltdXG4gIGxldCB0b19saXN0IHQgPSB0LmZyb250IEAgTGlzdC5yZXYgdC5iYWNrXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgdC5iYWNrKSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGJhY2sgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udDpbXSB+YmFja1xuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBCYWNrX3RvX2Zyb250ID0gc3RydWN0XG4gIGxldCB0b19saXN0IHQgPSB0LmJhY2sgQCBMaXN0LnJldiB0LmZyb250XG4gIGxldCBvZl9saXN0IGxpc3QgPSBtYWtlIH5sZW5ndGg6KExpc3QubGVuZ3RoIGxpc3QpIH5iYWNrOmxpc3QgfmZyb250OltdXG5cbiAgbGV0IHRvX3NlcXVlbmNlIHQgPVxuICAgIFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmZyb250KSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGxldCBsZW5ndGgsIGZyb250ID1cbiAgICAgIFNlcXVlbmNlLmZvbGQgc2VxdWVuY2UgfmluaXQ6KDAsIFtdKSB+ZjooZnVuIChsZW5ndGgsIGFjYykgYSAtPlxuICAgICAgICBsZW5ndGggKyAxLCBhIDo6IGFjYylcbiAgICBpblxuICAgIG1ha2Ugfmxlbmd0aCB+ZnJvbnQgfmJhY2s6W11cbiAgOztcblxuICBpbmNsdWRlIE1ha2VfY29udGFpbmVyIChzdHJ1Y3RcbiAgICAgIGxldCB0b19saXN0ID0gdG9fbGlzdFxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIEZyb250X3RvX2JhY2tcblxubGV0IHNpbmdsZXRvbiB4ID0gb2ZfbGlzdCBbIHggXVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgZWx0IC0+IGZvbGQgKGYgZWx0KSB+aW5pdDp0IH5mOmVucXVldWVfYmFjaylcbiAgICA7O1xuXG4gICAgbGV0IHJldHVybiA9IHNpbmdsZXRvblxuXG4gICAgbGV0IG1hcCA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICB7IGZyb250ID0gTGlzdC5tYXAgdC5mcm9udCB+ZjsgYmFjayA9IExpc3QubWFwIHQuYmFjayB+ZjsgbGVuZ3RoID0gdC5sZW5ndGggfSlcbiAgICA7O1xuICBlbmQpXG5cbmxldCBjb21wYXJlIGNtcCB0MSB0MiA9IExpc3QuY29tcGFyZSBjbXAgKHRvX2xpc3QgdDEpICh0b19saXN0IHQyKVxubGV0IGVxdWFsIGVxIHQxIHQyID0gTGlzdC5lcXVhbCBlcSAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5cbmxldCBoYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfYSBzdGF0ZSB0ID1cbiAgZm9sZCB+ZjpoYXNoX2ZvbGRfYSB+aW5pdDooWyVoYXNoX2ZvbGQ6IGludF0gc3RhdGUgKGxlbmd0aCB0KSkgdFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCB0ID0gWyVzZXhwX29mOiBlbHQgbGlzdF0gKHRvX2xpc3QgdClcbiAgICBsZXQgdF9vZl9zZXhwIGVsdF9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChbJW9mX3NleHA6IGVsdCBsaXN0XSBzZXhwKVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IExpc3QudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgbWFwID0gbWFwXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODNmOTY5ODItNDk5Mi0xMWU2LTkxOWQtZmJkZGNmZGNhNTc2XCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5GZGVxdWVcIlxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcblxuICAgICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgbmV4dCBhY2MgbiA9XG4gICAgICAgICAgICBpZiBsZW4gPSBuXG4gICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGFzc2VydCAobiA9IGxlbmd0aCBhY2MpO1xuICAgICAgICAgICAgICBsZXQgeCA9IG5leHQgKCkgaW5cbiAgICAgICAgICAgICAgbG9vcCBuZXh0IChlbnF1ZXVlX2JhY2sgYWNjIHgpIChuICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIG5leHQgZW1wdHkgMFxuICAgICAgICA7O1xuICAgICAgZW5kKVxuXG4gICAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBwcm9kdWNlZCBieSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIGlzXG4gICAgICAgYXNzdW1lZCB0byBiZSBzdGFibGUgKGlmIHRoZSAnYSBpcyBzdGFibGUpLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJ1aWxkIH5mcm9udCB+YmFjayA9XG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGZyb250ICsgTGlzdC5sZW5ndGggYmFjayBpblxuICAgIGxldCB0ID0geyBsZW5ndGg7IGZyb250OyBiYWNrIH0gaW5cbiAgICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gICAgdFxuICA7O1xuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nLlN0YWJsZS5WMSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgRmlsZW5hbWVfYmFzZVxuXG5pbmNsdWRlIChcbiAgU3RyaW5nIDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgTmV4dF9maXRcbiAgICAgICAgfCBGaXJzdF9maXRcbiAgICAgICAgfCBCZXN0X2ZpdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgbW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICAgIHsgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgICA7IGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGRsaWIuR2NcblxubW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5zdGF0ID1cbiAgICAgIHsgbWlub3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBoZWFwX2NodW5rcyA6IGludFxuICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICA7IGZyZWVfd29yZHMgOiBpbnRcbiAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICA7IGZyYWdtZW50cyA6IGludFxuICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgOyBzdGFja19zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgYmluX2lvLCBzZXhwLCBmaWVsZHNdXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgY29tYmluZSBmaXJzdCBzZWNvbmQgfmZsb2F0X2YgfmludF9mID1cbiAgICB7IG1pbm9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5taW5vcl93b3JkcyBzZWNvbmQubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5wcm9tb3RlZF93b3JkcyBzZWNvbmQucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5tYWpvcl93b3JkcyBzZWNvbmQubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWlub3JfY29sbGVjdGlvbnMgc2Vjb25kLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LmhlYXBfd29yZHMgc2Vjb25kLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gaW50X2YgZmlyc3QuaGVhcF9jaHVua3Mgc2Vjb25kLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gaW50X2YgZmlyc3QubGl2ZV93b3JkcyBzZWNvbmQubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5saXZlX2Jsb2NrcyBzZWNvbmQubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBpbnRfZiBmaXJzdC5mcmVlX3dvcmRzIHNlY29uZC5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmZyZWVfYmxvY2tzIHNlY29uZC5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gaW50X2YgZmlyc3QubGFyZ2VzdF9mcmVlIHNlY29uZC5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGludF9mIGZpcnN0LmZyYWdtZW50cyBzZWNvbmQuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGludF9mIGZpcnN0LmNvbXBhY3Rpb25zIHNlY29uZC5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC50b3BfaGVhcF93b3JkcyBzZWNvbmQudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBpbnRfZiBmaXJzdC5zdGFja19zaXplIHNlY29uZC5zdGFja19zaXplXG4gICAgfVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IGNvbWJpbmUgZmlyc3Qgc2Vjb25kIH5mbG9hdF9mIH5pbnRfZiA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWlub3Jfd29yZHMgc2Vjb25kLm1pbm9yX3dvcmRzXG4gICAgOyBwcm9tb3RlZF93b3JkcyA9IGZsb2F0X2YgZmlyc3QucHJvbW90ZWRfd29yZHMgc2Vjb25kLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGZsb2F0X2YgZmlyc3QubWFqb3Jfd29yZHMgc2Vjb25kLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1pbm9yX2NvbGxlY3Rpb25zIHNlY29uZC5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5tYWpvcl9jb2xsZWN0aW9ucyBzZWNvbmQubWFqb3JfY29sbGVjdGlvbnNcbiAgICA7IGhlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC5oZWFwX3dvcmRzIHNlY29uZC5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGludF9mIGZpcnN0LmhlYXBfY2h1bmtzIHNlY29uZC5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGludF9mIGZpcnN0LmxpdmVfd29yZHMgc2Vjb25kLmxpdmVfd29yZHNcbiAgICA7IGxpdmVfYmxvY2tzID0gaW50X2YgZmlyc3QubGl2ZV9ibG9ja3Mgc2Vjb25kLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gaW50X2YgZmlyc3QuZnJlZV93b3JkcyBzZWNvbmQuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5mcmVlX2Jsb2NrcyBzZWNvbmQuZnJlZV9ibG9ja3NcbiAgICA7IGxhcmdlc3RfZnJlZSA9IGludF9mIGZpcnN0Lmxhcmdlc3RfZnJlZSBzZWNvbmQubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBpbnRfZiBmaXJzdC5mcmFnbWVudHMgc2Vjb25kLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBpbnRfZiBmaXJzdC5jb21wYWN0aW9ucyBzZWNvbmQuY29tcGFjdGlvbnNcbiAgICA7IHRvcF9oZWFwX3dvcmRzID0gaW50X2YgZmlyc3QudG9wX2hlYXBfd29yZHMgc2Vjb25kLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gaW50X2YgZmlyc3Quc3RhY2tfc2l6ZSBzZWNvbmQuc3RhY2tfc2l6ZVxuICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgaW50X2YgZmlyc3QuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNcbiAgICB9XG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5cbiAgbGV0IGFkZCA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCArICkgfmludF9mOkludC4oICsgKVxuICBsZXQgZGlmZiA9IGNvbWJpbmUgfmZsb2F0X2Y6RmxvYXQuKCAtICkgfmludF9mOkludC4oIC0gKVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgZmllbGRzXVxuICBlbmRcblxuICBbJSVlbHNlXVxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJWVuZGlmXVxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcbmVuZFxuXG5tb2R1bGUgQWxsb2NhdGlvbl9wb2xpY3kgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkFsbG9jYXRpb25fcG9saWN5LlYxLnQgPVxuICAgIHwgTmV4dF9maXRcbiAgICB8IEZpcnN0X2ZpdFxuICAgIHwgQmVzdF9maXRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBfb2ZdXG5cbiAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgfCBOZXh0X2ZpdCAtPiAwXG4gICAgfCBGaXJzdF9maXQgLT4gMVxuICAgIHwgQmVzdF9maXQgLT4gMlxuICA7O1xuZW5kXG5cbmxldCB0dW5lXG4gICAgICA/bG9nZ2VyXG4gICAgICA/bWlub3JfaGVhcF9zaXplXG4gICAgICA/bWFqb3JfaGVhcF9pbmNyZW1lbnRcbiAgICAgID9zcGFjZV9vdmVyaGVhZFxuICAgICAgP3ZlcmJvc2VcbiAgICAgID9tYXhfb3ZlcmhlYWRcbiAgICAgID9zdGFja19saW1pdFxuICAgICAgP2FsbG9jYXRpb25fcG9saWN5XG4gICAgICA/d2luZG93X3NpemVcbiAgICAgID9jdXN0b21fbWFqb3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfcmF0aW9cbiAgICAgID9jdXN0b21fbWlub3JfbWF4X3NpemVcbiAgICAgICgpXG4gID1cbiAgbGV0IG9sZF9jb250cm9sX3BhcmFtcyA9IGdldCAoKSBpblxuICBsZXQgZiBvcHQgdG9fc3RyaW5nIGZpZWxkID1cbiAgICBsZXQgb2xkX3ZhbHVlID0gRmllbGQuZ2V0IGZpZWxkIG9sZF9jb250cm9sX3BhcmFtcyBpblxuICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgfCBOb25lIC0+IG9sZF92YWx1ZVxuICAgIHwgU29tZSBuZXdfdmFsdWUgLT5cbiAgICAgIE9wdGlvbi5pdGVyIGxvZ2dlciB+ZjooZnVuIGYgLT5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgICAgZlxuICAgICAgICAgIFwiR2MuQ29udHJvbC4lczogJXMgLT4gJXNcIlxuICAgICAgICAgIChGaWVsZC5uYW1lIGZpZWxkKVxuICAgICAgICAgICh0b19zdHJpbmcgb2xkX3ZhbHVlKVxuICAgICAgICAgICh0b19zdHJpbmcgbmV3X3ZhbHVlKSk7XG4gICAgICBuZXdfdmFsdWVcbiAgaW5cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID0gT3B0aW9uLm1hcCBhbGxvY2F0aW9uX3BvbGljeSB+ZjpBbGxvY2F0aW9uX3BvbGljeS50b19pbnQgaW5cbiAgbGV0IG5ld19jb250cm9sX3BhcmFtcyA9XG4gICAgQ29udHJvbC5GaWVsZHMubWFwXG4gICAgICB+bWlub3JfaGVhcF9zaXplOihmIG1pbm9yX2hlYXBfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1ham9yX2hlYXBfaW5jcmVtZW50OihmIG1ham9yX2hlYXBfaW5jcmVtZW50IHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3BhY2Vfb3ZlcmhlYWQ6KGYgc3BhY2Vfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH52ZXJib3NlOihmIHZlcmJvc2Ugc3RyaW5nX29mX2ludClcbiAgICAgIH5tYXhfb3ZlcmhlYWQ6KGYgbWF4X292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+c3RhY2tfbGltaXQ6KGYgc3RhY2tfbGltaXQgc3RyaW5nX29mX2ludClcbiAgICAgIH5hbGxvY2F0aW9uX3BvbGljeTooZiBhbGxvY2F0aW9uX3BvbGljeSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfndpbmRvd19zaXplOihmIHdpbmRvd19zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21ham9yX3JhdGlvOihmIGN1c3RvbV9tYWpvcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9yYXRpbzooZiBjdXN0b21fbWlub3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfbWF4X3NpemU6KGYgY3VzdG9tX21pbm9yX21heF9zaXplIHN0cmluZ19vZl9pbnQpXG4gIGluXG4gIHNldCBuZXdfY29udHJvbF9wYXJhbXNcbjs7XG5cbmxldCBkaXNhYmxlX2NvbXBhY3Rpb24gP2xvZ2dlciB+YWxsb2NhdGlvbl9wb2xpY3kgKCkgPVxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPVxuICAgIG1hdGNoIGFsbG9jYXRpb25fcG9saWN5IHdpdGhcbiAgICB8IGBEb24ndF9jaGFuZ2UgLT4gTm9uZVxuICAgIHwgYFNldF90byBwb2xpY3kgLT4gU29tZSBwb2xpY3lcbiAgaW5cbiAgKCogVGhlIHZhbHVlIDFfMDAwXzAwMCwgYWNjb3JkaW5nIHRvXG4gICAgIGh0dHA6Ly9jYW1sLmlucmlhLmZyL3B1Yi9kb2NzL21hbnVhbC1vY2FtbC00LjAyL2xpYnJlZi9HYy5odG1sXG4gICAgIHdpbGwgZGlzYWJsZSBjb21wYWN0aW9ucy5cbiAgKilcbiAgdHVuZSA/bG9nZ2VyID9hbGxvY2F0aW9uX3BvbGljeSB+bWF4X292ZXJoZWFkOjFfMDAwXzAwMCAoKVxuOztcblxuZXh0ZXJuYWwgbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBtYWpvcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHByb21vdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWlub3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvbXBhY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfY29tcGFjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfcGx1c19taW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgYWxsb2NhdGVkX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfYWxsb2NhdGVkX3dvcmRzXCJcbmV4dGVybmFsIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyA6IHVuaXQgLT4gdW5pdCA9IFwiY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3NcIlxuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDUsIDAsIDApXVxuXG5leHRlcm5hbCBoZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfaGVhcF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoZWFwX2NodW5rcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2hlYXBfY2h1bmtzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvcF9oZWFwX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfdG9wX2hlYXBfd29yZHNcIiBbQEBub2FsbG9jXVxuXG5bJSVlbmRpZl1cblxubGV0IHN0YXRfc2l6ZV9sYXp5ID1cbiAgbGF6eSAoT2JqLnJlYWNoYWJsZV93b3JkcyAoT2JqLnJlcHIgKFN0ZGxpYi5HYy5xdWlja19zdGF0ICgpIDogU3RhdC50KSkpXG47O1xuXG5sZXQgc3RhdF9zaXplICgpID0gTGF6eS5mb3JjZSBzdGF0X3NpemVfbGF6eVxubGV0IHplcm8gPSBTeXMub3BhcXVlX2lkZW50aXR5IChpbnRfb2Zfc3RyaW5nIFwiMFwiKVxuXG4oKiBUaGUgY29tcGlsZXIgd29uJ3Qgb3B0aW1pemUgaW50X29mX3N0cmluZyBhd2F5IHNvIGl0IHdvbid0XG4gICBwZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgYmVsb3cuICopXG5sZXQgcmVjIGtlZXBfYWxpdmUgbyA9IGlmIHplcm8gPD4gMCB0aGVuIGtlZXBfYWxpdmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgbylcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICgqIFdlIGRpc2FibGUgaW5saW5pbmcgZm9yIHRoaXMgZnVuY3Rpb24gc28gdGhlIEdDIHN0YXRzIGFuZCB0aGUgY2FsbCB0byBbZl0gYXJlIG5ldmVyXG4gICAgIHJlYXJyYW5nZWQuICopXG4gIGxldFtAY29sZF0gbWVhc3VyZV9pbnRlcm5hbCB+b25fcmVzdWx0IGYgPVxuICAgIGxldCBtaW5vcl93b3Jkc19iZWZvcmUgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19iZWZvcmUgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgICgqIFdlIHdyYXAgW2YgKCldIHdpdGggW1N5cy5vcGFxdWVfaWRlbnRpdHldIHRvIHByZXZlbnQgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJlaW5nXG4gICAgICAgb3B0aW1pemVkIGF3YXkuICopXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IChmICgpKSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hZnRlciA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FmdGVyID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWxsb2NhdGVkID0gbWFqb3Jfd29yZHNfYWZ0ZXIgLSBtYWpvcl93b3Jkc19iZWZvcmUgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWxsb2NhdGVkID0gbWlub3Jfd29yZHNfYWZ0ZXIgLSBtaW5vcl93b3Jkc19iZWZvcmUgaW5cbiAgICBvbl9yZXN1bHQgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHhcbiAgOztcblxuICBsZXQgaXNfemVyb19hbGxvYyAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICAgICgqIEluc3RlYWQgb2YgdXNpbmcgW0FsbG9jYXRpb25fcmVwb3J0Lm1lYXN1cmVdLCBhbmQgbWF0Y2hpbmcgb24gdGhlIHJlc3VsdCwgd2UgdXNlXG4gICAgICAgdGhpcyBjb25zdHJ1Y3Rpb24sIGluIG9yZGVyIHRvIGhhdmUgW2lzX3plcm9fYWxsb2NdIG5vdCBhbGxvY2F0ZSBpdHNlbGYuIFRoaXNcbiAgICAgICBlbmFibGVzIFtpc196ZXJvX2FsbG9jXSB0byBiZSB1c2VkIGluIGEgbmVzdGVkIHdheS4gKilcbiAgICBtZWFzdXJlX2ludGVybmFsXG4gICAgICBmXG4gICAgICB+b25fcmVzdWx0OihmdW4gfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkIHZhbHVlIC0+XG4gICAgICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB2YWx1ZSA6IGEpO1xuICAgICAgICBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPT0gMCAmJiBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPT0gMClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9yZXBvcnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIDsgbWlub3Jfd29yZHNfYWxsb2NhdGVkIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkID1cbiAgICAgIHsgbWFqb3Jfd29yZHNfYWxsb2NhdGVkOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgfVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZWFzdXJlX2FsbG9jYXRpb24gZiA9XG4gICAgbWVhc3VyZV9pbnRlcm5hbCBmIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeCAtPlxuICAgICAgeCwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZClcbiAgOztcblxuICBtb2R1bGUgQWxsb2NhdGlvbl9sb2cgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBzaXplX2luX3dvcmRzIDogaW50XG4gICAgICA7IGlzX21ham9yIDogYm9vbFxuICAgICAgOyBiYWNrdHJhY2UgOiBzdHJpbmdcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMSwgMCldXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCBsb2cgOiBBbGxvY2F0aW9uX2xvZy50IGxpc3QgcmVmID0gcmVmIFtdXG4gICAgYW5kIG1ham9yX2FsbG9jcyA9IHJlZiAwXG4gICAgYW5kIG1pbm9yX2FsbG9jcyA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2FsbG9jIH5pc19tYWpvciAoaW5mbyA6IFN0ZGxpYi5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgaW5mby5jYWxsc3RhY2sgaW5cbiAgICAgICgqIE1ha2UgYmFja3RyYWNlcyBlYXNpZXIgdG8gcmVhZCBieSBkZWxldGluZyBldmVyeXRoaW5nIGJlbG93IHRoaXMgZnVuY3Rpb24gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3Vic3RyX2luZGV4IGJhY2t0cmFjZSB+cGF0dGVybjpcIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uXCIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgcG9zc2libGU6IHdlIG1heSBoYXZlIGxvZ2dlZCBhbGxvY2F0aW9ucyBpbiBhbm90aGVyIHRocmVhZCAqKVxuICAgICAgICAgIGJhY2t0cmFjZVxuICAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgIFN0cmluZy5zdWIgfnBvczowIH5sZW46cCBiYWNrdHJhY2VcbiAgICAgICAgICB8PiBTdHJpbmcucnN0cmlwIH5kcm9wOihmdW5jdGlvblxuICAgICAgICAgICAgfCAnXFxuJyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBfIC0+IHRydWUpXG4gICAgICBpblxuICAgICAgbGV0IGluZm8gOiBBbGxvY2F0aW9uX2xvZy50ID1cbiAgICAgICAgeyBzaXplX2luX3dvcmRzID0gaW5mby5uX3NhbXBsZXM7IGlzX21ham9yOyBiYWNrdHJhY2UgfVxuICAgICAgaW5cbiAgICAgIGxvZyA6PSBpbmZvIDo6ICFsb2c7XG4gICAgICBOb25lXG4gICAgaW5cbiAgICBsZXQgdHJhY2tlciA9XG4gICAgICB7IFN0ZGxpYi5HYy5NZW1wcm9mLm51bGxfdHJhY2tlciB3aXRoXG4gICAgICAgIGFsbG9jX21pbm9yID0gb25fYWxsb2MgfmlzX21ham9yOmZhbHNlXG4gICAgICA7IGFsbG9jX21ham9yID0gb25fYWxsb2MgfmlzX21ham9yOnRydWVcbiAgICAgIH1cbiAgICBpblxuICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKTtcbiAgICAgICAgU3RkbGliLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgeFxuICAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBydW5fbWVtcHJvZl9jYWxsYmFja3MgKCk7XG4gICAgICAgIFN0ZGxpYi5HYy5NZW1wcm9mLnN0b3AgKCk7XG4gICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgICggcmVzdWx0XG4gICAgLCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGVcbiAgICAgICAgfm1ham9yX3dvcmRzX2FsbG9jYXRlZDohbWFqb3JfYWxsb2NzXG4gICAgICAgIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQ6IW1pbm9yX2FsbG9jc1xuICAgICwgTGlzdC5yZXYgIWxvZyApXG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IHgsIHJlcG9ydCA9IG1lYXN1cmVfYWxsb2NhdGlvbiBmIGluXG4gICAgeCwgcmVwb3J0LCBbXVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGFkZF9maW5hbGl6ZXIgeCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXIgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgKCogW2FkZF9maW5hbGl6ZXJfZXhuXSBpcyB0aGUgc2FtZSBhcyBbYWRkX2ZpbmFsaXplcl0uICBIb3dldmVyLCB0aGVpciB0eXBlcyBpblxuICAgICBjb3JlX2djLm1saSBhcmUgZGlmZmVyZW50LCBhbmQgdGhlIHR5cGUgb2YgW2FkZF9maW5hbGl6ZXJdIGd1YXJhbnRlZXMgdGhhdCBpdCBhbHdheXNcbiAgICAgcmVjZWl2ZXMgYSBoZWFwIGJsb2NrLCB3aGljaCBlbnN1cmVzIHRoYXQgaXQgd2lsbCBub3QgcmFpc2UsIHdoaWxlXG4gICAgIFthZGRfZmluYWxpemVyX2V4bl0gYWNjZXB0cyBhbnkgdHlwZSwgYW5kIHNvIG1heSByYWlzZS4gKilcbiAgbGV0IGFkZF9maW5hbGl6ZXJfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplcl9sYXN0IGVuc3VyZXMgdGhhdCB0aGUgb25seSBwb3NzaWJsZSBmYWlsdXJlXG4gICAgICAgICBpcyBkdWUgdG8gW3hdIGJlaW5nIHN0YXRpYyBkYXRhLiBJbiB0aGlzIGNhc2UsIHdlIHNpbXBseSBkcm9wIHRoZVxuICAgICAgICAgZmluYWxpemVyIHNpbmNlIHN0YXRpYyBkYXRhIHdvdWxkIG5ldmVyIGhhdmUgYmVlbiBjb2xsZWN0ZWQgYnkgdGhlXG4gICAgICAgICBHQyBhbnl3YXkuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHggZiA9XG4gICAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IChmdW4gKCkgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgaWdub3JlIChIZWFwX2Jsb2NrLmNyZWF0ZSB4IDogXyBIZWFwX2Jsb2NrLnQgb3B0aW9uKTtcbiAgICAgICgqIElmIFtIZWFwX2Jsb2NrLmNyZWF0ZV0gc3VjY2VlZHMgdGhlbiBbeF0gaXMgc3RhdGljIGRhdGEgYW5kIHNvXG4gICAgICAgICB3ZSBjYW4gc2ltcGx5IGRyb3AgdGhlIGZpbmFsaXNlci4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplX3JlbGVhc2UgPSBTdGRsaWIuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTZXJpYWxpemFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTZXJpYWxpemFibGUuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICB0b19zZXJpYWxpemFibGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogU2VyaWFsaXphYmxlLnRdO1xuICAgICAgICBbJWV4cGVjdFxuICAgICAgICAgIHt8XG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDAgfH1dXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIGVuZClcblxuICAgICAgb3BlbiEgSW1wb3J0XG4gICAgICBvcGVuISBTdGRfaW50ZXJuYWxcbiAgICAgIG9wZW4hIFQwXG5cbiAgICAgIGxldCB0b19zdHJpbmcgeyBob3N0OyBwb3J0IH0gPSBzcHJpbnRmIFwiJXM6JWRcIiBob3N0IHBvcnRcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOic6JyB3aXRoXG4gICAgICAgIHwgWyBob3N0OyBwb3J0IF0gLT5cbiAgICAgICAgICBsZXQgcG9ydCA9XG4gICAgICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyBwb3J0IHdpdGhcbiAgICAgICAgICAgIHwgX2V4biAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogYmFkIHBvcnQ6ICVzXCIgcyAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgeyBob3N0OyBwb3J0IH1cbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiAlc1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICB8IFNleHAuQXRvbSBzIGFzIHNleHAgLT5cbiAgICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBGYWlsdXJlIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwKVxuICAgICAgICB8IHNleHAgLT4gdF9vZl9zZXhwIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLlxuICAgICAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyAoKiBoYW5kbGVzIHRoZSBob3N0OnBvcnQgc3RyaW5nIGNhc2UgKilcbiAgICAgICAgICAgICAgICAgIFN0cmluZ1xuICAgICAgICAgICAgICAgICAgOyAoKiBoYW5kbGVzIHRoZSBsaXN0IChob3N0IHBvcnQpIGNhc2UgICopXG4gICAgICAgICAgICAgICAgICBMaXN0IChDb25zIChTdHJpbmcsIENvbnMgKEludGVnZXIsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQxKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRfb2Zfc2V4cFwiID1cbiAgICAgIFsldGVzdF9yZXN1bHQ6IHRdXG4gICAgICAgICh0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHt8KGxvY2FsaG9zdCA4MDgwKXx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9O1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3xsb2NhbGhvc3Q6ODA4MHx9KSlcbiAgICAgICAgfmV4cGVjdDp7IGhvc3QgPSBcImxvY2FsaG9zdFwiOyBwb3J0ID0gODA4MCB9XG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJzZXhwIHJvdW5kdHJpcFwiID1cbiAgICAgIFF1aWNrY2hlY2sudGVzdCBbJXF1aWNrY2hlY2suZ2VuZXJhdG9yOiB0XSB+ZjooZnVuIHQgLT5cbiAgICAgICAgWyV0ZXN0X3Jlc3VsdDogdF0gKHRfb2Zfc2V4cCAoc2V4cF9vZl90IHQpKSB+ZXhwZWN0OnQpXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0YWJsZS5WMVxuZW5kXG5cbmluY2x1ZGUgTGF0ZXN0XG5cbmxldCBjcmVhdGUgfmhvc3QgfnBvcnQgPSB7IGhvc3Q7IHBvcnQgfVxubGV0IGhvc3QgdCA9IHQuaG9zdFxubGV0IHBvcnQgdCA9IHQucG9ydFxubGV0IHR1cGxlIHQgPSB0b19zZXJpYWxpemFibGUgdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5Ib3N0X2FuZF9wb3J0XCJcbiAgZW5kKVxuXG5pbmNsdWRlIChIYXNoYWJsZS5NYWtlX2JpbmFibGUgKExhdGVzdCkgOiBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoTGF0ZXN0KVxuXG5sZXQgdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiSG9zdF9hbmRfcG9ydFwiIHNleHBfb2ZfdFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMCB3aXRoIHR5cGUgdCA9IE0udCA9IHN0cnVjdFxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQyID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUMlxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUuVjIgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuVjEuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICdhIHQgLT4gJ2EgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0ID0gJ2EgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTEuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMS5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogKCdhMSwgJ2EyKSB0IC0+IGYxOignYTEgLT4gJ2IxKSAtPiBmMjooJ2EyIC0+ICdiMikgLT4gKCdiMSwgJ2IyKSB0XG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTIuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMi5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MyA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAtPiBmMTooJ2ExIC0+ICdiMSlcbiAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAtPiAoJ2IxLCAnYjIsICdiMykgdFxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zZXhwYWJsZTMuVjEgKFN0YWJsZV9mb3JtYXQpIChUKVxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlMy5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRoX3N0YWJsZV93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0ID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDEuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKHR5cGUgYSkgOiBhIFN0YWJsZV93aXRuZXNzLnQgLT4gYSBNLnQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgIGZ1biB3aXRuZXNzIC0+XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUxIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIpIHRcbiAgICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICAgIGVuZCkgOiBXaXRoX3N0YWJsZV93aXRuZXNzLlMyIHdpdGggdHlwZSAoJ2ExLCAnYTIpIHQgPSAoJ2ExLCAnYTIpIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0Mi5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyB3aXRuZXNzID1cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTIgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQzID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudCAtPiAoJ2ExLCAnYTIsICdhMykgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzMgd2l0aCB0eXBlICgnYTEsICdhMiwgJ2EzKSB0ID0gKCdhMSwgJ2EyLCAnYTMpIE0udCA9XG4gICAgc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQzLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMyAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgV2l0aG91dF9jb250YWluZXJzID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBleGNlcHRpb24gUGlkX211c3RfYmVfcG9zaXRpdmUgb2YgSW50LlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBlbnN1cmUgaSA9IGlmIGkgPD0gMCB0aGVuIHJhaXNlIChQaWRfbXVzdF9iZV9wb3NpdGl2ZSBpKSBlbHNlIGlcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFdpdGhvdXRfY29udGFpbmVycylcbiAgICBpbmNsdWRlIFdpdGhvdXRfY29udGFpbmVyc1xuICBlbmRcblxuICBtb2R1bGUgTGF0ZXN0ID0gVjFcbmVuZFxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhYmxlLkxhdGVzdC5XaXRob3V0X2NvbnRhaW5lcnNcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2hdXG5cbmxldCBvZl9pbnQgaSA9IGVuc3VyZSBpXG5sZXQgdG9faW50ID0gRm4uaWRcbmxldCBvZl9zdHJpbmcgc3RyaW5nID0gZW5zdXJlIChJbnQub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG5sZXQgaW5pdCA9IG9mX2ludCAxXG5cbmluY2x1ZGVcbiAgUXVpY2tjaGVja2FibGUuT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSBuID0gT3B0aW9uLnNvbWVfaWYgKG4gPiAwKSBuXG4gICAgICBsZXQgdG9fcXVpY2tjaGVja2FibGUgPSB0b19pbnRcbiAgICBlbmQpXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuUGlkXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuUXVldWVcblxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlLk1ha2UxX2FuZF90ZXN0IChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5IGEgPVxuICAgICAgICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBXZSBlbnF1ZXVlIGV2ZXJ5dGhpbmcgdHdpY2UsIGFuZCBkZXF1ZXVlIGl0IG9uY2UgdG8gZW5zdXJlOlxuICAgICAgICAgICAtIHRoYXQgdGhlIHF1ZXVlIGhhcyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSBhcnJheS5cbiAgICAgICAgICAgLSB0aGF0IGl0IGhhcywgaW4gbW9zdCBjYXNlcywgYW4gaW50ZXJlc3RpbmcgaW50ZXJuYWwgc3RydWN0dXJlKilcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX2V4biByIDogYm9vbCk7XG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHJcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZClcblxubW9kdWxlIFNlcmlhbGl6YXRpb25fdjEgPSBzdHJ1Y3RcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiNGM4NDI1NC00OTkyLTExZTYtOWJhNy03MzRlMTU0MDI3YmRcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuUXVldWVcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID0gaW5pdCBsZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpXG4gICAgZW5kKVxuXG4gIGxldCBzdGFibGVfd2l0bmVzcyAoXyA6ICdhIFN0YWJsZV93aXRuZXNzLnQpIDogJ2EgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAoKiBTZXJpYWxpemF0aW9uX3YxIGRlZmluZXMgYSBzdGFibGUgc2VyaWFsaXphdGlvbiAqKVxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV9pbnQ2M2FibGVfd2l0aF93aXRuZXNzID0gU3RhYmxlX2ludDYzYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcblxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhvdXRfY29tcGFyYXRvcl93aXRoX3dpdG5lc3MgPVxuICBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBfd2l0aG91dF9jb21wYXJhdG9yXG5cbm1vZHVsZSB0eXBlIFN0YWJsZTFfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMxXG5tb2R1bGUgdHlwZSBTdGFibGUyX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMlxubW9kdWxlIHR5cGUgU3RhYmxlM193aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzNcbm1vZHVsZSB0eXBlIFN0YWJsZTRfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlM0XG5cbm1vZHVsZSBNYWtlX3N0YWJsZSA9IE1ha2Vfc3RhYmxlXG5pbmNsdWRlIFN0YWJsZV9pbnRlcm5hbFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGUuU3RhYmxlXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nLlN0YWJsZVxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxubW9kdWxlIEJsYW5nID0gQmxhbmcuU3RhYmxlXG5tb2R1bGUgQm9vbCA9IEJvb2wuU3RhYmxlXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHMuU3RhYmxlXG5tb2R1bGUgQnl0ZXMgPSBCeXRlcy5TdGFibGVcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZS5TdGFibGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrLlN0YWJsZVxubW9kdWxlIE1kNSA9IE1kNS5TdGFibGVcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIuU3RhYmxlXG5tb2R1bGUgRXJyb3IgPSBFcnJvci5TdGFibGVcbm1vZHVsZSBGZGVxdWUgPSBGZGVxdWUuU3RhYmxlXG5tb2R1bGUgRmlsZW5hbWUgPSBGaWxlbmFtZS5TdGFibGVcbm1vZHVsZSBGbG9hdCA9IEZsb2F0LlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0LlN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTExXSBVc2UgW1RpbWVfZmxvYXRdIG9yIFtUaW1lX2Zsb2F0X3VuaXhdIGluc3RlYWRcIl1cblxubW9kdWxlIFRpbWVfZmxvYXQgPSBUaW1lX2Zsb2F0LlN0YWJsZVxubW9kdWxlIFVuaXQgPSBVbml0LlN0YWJsZVxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDb3JlX3VuaXguU3RhYmxlXVwiXVxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcblxuaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLkdsb2JhbGl6ZVxuaW5jbHVkZSBJbXBvcnQuTm90X2ZvdW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG4gIEludCA6XG4gIHNpZ1xuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuXG5sZXQgb2ZfY2FtbF9pbnQgdCA9IHRcbmxldCB0b19jYW1sX2ludCB0ID0gdFxuXG50eXBlIHN5c19iZWhhdmlvciA9XG4gIFsgYENvbnRpbnVlICgqKiBDb250aW51ZSB0aGUgcHJvY2VzcyBpZiBpdCBpcyBjdXJyZW50bHkgc3RvcHBlZCAqKVxuICB8IGBEdW1wX2NvcmUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyBhbmQgZHVtcCBjb3JlICopXG4gIHwgYElnbm9yZSAoKiogSWdub3JlIHRoZSBzaWduYWwgKilcbiAgfCBgU3RvcCAoKiogU3RvcCB0aGUgcHJvY2VzcyAqKVxuICB8IGBUZXJtaW5hdGUgKCoqIFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyAqKVxuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXF1YWwgKHQgOiB0KSB0JyA9IHQgPSB0J1xuXG5pbmNsdWRlIHN0cnVjdFxuICAoKiBQbGVhc2Uga2VlcCBpbiBzeW5jIHdpdGggdGhlIGxpc3QgZm9yIHRvX3N0cmluZy9zeXNfYmVoYXZpb3IgKilcbiAgb3BlbiBTdGRsaWIuU3lzXG5cbiAgbGV0IGFicnQgPSBzaWdhYnJ0XG4gIGxldCBhbHJtID0gc2lnYWxybVxuICBsZXQgYnVzID0gc2lnYnVzXG4gIGxldCBjaGxkID0gc2lnY2hsZFxuICBsZXQgY29udCA9IHNpZ2NvbnRcbiAgbGV0IGZwZSA9IHNpZ2ZwZVxuICBsZXQgaHVwID0gc2lnaHVwXG4gIGxldCBpbGwgPSBzaWdpbGxcbiAgbGV0IGludCA9IHNpZ2ludFxuICBsZXQga2lsbCA9IHNpZ2tpbGxcbiAgbGV0IHBpcGUgPSBzaWdwaXBlXG4gIGxldCBwb2xsID0gc2lncG9sbFxuICBsZXQgcHJvZiA9IHNpZ3Byb2ZcbiAgbGV0IHF1aXQgPSBzaWdxdWl0XG4gIGxldCBzZWd2ID0gc2lnc2VndlxuICBsZXQgc3RvcCA9IHNpZ3N0b3BcbiAgbGV0IHN5cyA9IHNpZ3N5c1xuICBsZXQgdGVybSA9IHNpZ3Rlcm1cbiAgbGV0IHRyYXAgPSBzaWd0cmFwXG4gIGxldCB0c3RwID0gc2lndHN0cFxuICBsZXQgdHRpbiA9IHNpZ3R0aW5cbiAgbGV0IHR0b3UgPSBzaWd0dG91XG4gIGxldCB1cmcgPSBzaWd1cmdcbiAgbGV0IHVzcjEgPSBzaWd1c3IxXG4gIGxldCB1c3IyID0gc2lndXNyMlxuICBsZXQgdnRhbHJtID0gc2lndnRhbHJtXG4gIGxldCB4Y3B1ID0gc2lneGNwdVxuICBsZXQgeGZzeiA9IHNpZ3hmc3pcbiAgbGV0IHplcm8gPSAwXG5lbmRcblxuZXhjZXB0aW9uIEludmFsaWRfc2lnbmFsX21uZW1vbmljX29yX251bWJlciBvZiBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3IgPVxuICBsZXQga25vd24gPVxuICAgIFtcbiAgICAgIFwic2lnYWJydFwiLCBhYnJ0LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2Fscm1cIiwgYWxybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdidXNcIiwgYnVzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ2NobGRcIiwgY2hsZCwgYElnbm9yZSwgMVxuICAgIDsgXCJzaWdjb250XCIsIGNvbnQsIGBDb250aW51ZSwgMVxuICAgIDsgXCJzaWdmcGVcIiwgZnBlLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2h1cFwiLCBodXAsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lnaWxsXCIsIGlsbCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdpbnRcIiwgaW50LCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2tpbGxcIiwga2lsbCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwaXBlXCIsIHBpcGUsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lncG9sbFwiLCBwb2xsLCBgVGVybWluYXRlLCAyXG4gICAgOyBcInNpZ3Byb2ZcIiwgcHJvZiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdxdWl0XCIsIHF1aXQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc2VndlwiLCBzZWd2LCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ3N0b3BcIiwgc3RvcCwgYFN0b3AsIDFcbiAgICA7IFwic2lnc3lzXCIsIHN5cywgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd0ZXJtXCIsIHRlcm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndHJhcFwiLCB0cmFwLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3RzdHBcIiwgdHN0cCwgYFN0b3AsIDFcbiAgICA7IFwic2lndHRpblwiLCB0dGluLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dG91XCIsIHR0b3UsIGBTdG9wLCAxXG4gICAgOyBcInNpZ3VyZ1wiLCB1cmcsIGBJZ25vcmUsIDJcbiAgICA7IFwic2lndXNyMVwiLCB1c3IxLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3VzcjJcIiwgdXNyMiwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd2dGFscm1cIiwgdnRhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3hjcHVcIiwgeGNwdSwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd4ZnN6XCIsIHhmc3osIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnemVyb1wiLCB6ZXJvLCBgSWdub3JlLCAxXG4gICAgXVxuICBpblxuICBsZXQgbmFtZV9hbmRfdmVyc2lvbl9ieV90ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpIGluXG4gIGxldCB0X2J5X25hbWUgPSBTdHJpbmcuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IGJlaGF2aW9yX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgTGlzdC5pdGVyIGtub3duIH5mOihmdW4gKG5hbWUsIHQsIGJlaGF2aW9yLCBzdGFibGVfdmVyc2lvbikgLT5cbiAgICBIYXNodGJsLnNldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgfmtleTp0IH5kYXRhOihuYW1lLCBzdGFibGVfdmVyc2lvbik7XG4gICAgSGFzaHRibC5zZXQgdF9ieV9uYW1lIH5rZXk6bmFtZSB+ZGF0YTp0O1xuICAgIEhhc2h0Ymwuc2V0IGJlaGF2aW9yX2J5X3QgfmtleTp0IH5kYXRhOmJlaGF2aW9yKTtcbiAgKCogRm9yIHVua25vd24gc2lnbmFsIG51bWJlcnMsIFt0b19zdHJpbmddIHJldHVybnMgYSBtZWFuaW5nZnVsXG4gICAgIHN0cmluZywgd2hpbGUgW2RlZmF1bHRfc3lzX2JlaGF2aW9yXSBoYXMgdG8gcmFpc2UgYW4gZXhjZXB0aW9uXG4gICAgIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSByaWdodCBhbnN3ZXIgaXMuICopXG4gIGxldCB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246cmVxdWVzdGVkX3ZlcnNpb24gPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgdCB3aXRoXG4gICAgfCBTb21lIChzdHJpbmcsIG5lZWRlZF92ZXJzaW9uKSB3aGVuIHJlcXVlc3RlZF92ZXJzaW9uID49IG5lZWRlZF92ZXJzaW9uIC0+IHN0cmluZ1xuICAgIHwgXyAtPiBcIjx1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCBeIFwiPlwiXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHMgPSBTdHJpbmcubG93ZXJjYXNlIChTdHJpbmcuc3RyaXAgcykgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdF9ieV9uYW1lIHMgd2l0aFxuICAgIHwgU29tZSBzbiAtPiBzblxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBzIH5wcmVmaXg6XCI8dW5rbm93biBzaWduYWwgXCJcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgSW50Lm9mX3N0cmluZyAoU3RyaW5nLnNsaWNlIHMgMTYgfi0xKSB3aXRoXG4gICAgICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpKVxuICAgICAgZWxzZSByYWlzZSAoSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIHMpXG4gIGluXG4gIGxldCBkZWZhdWx0X3N5c19iZWhhdmlvciB0ID1cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgYmVoYXZpb3JfYnlfdCB0IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChJbnZhbGlkX2FyZ3VtZW50XG4gICAgICAgICAgIChcIlNpZ25hbC5kZWZhdWx0X3N5c19iZWhhdmlvcjogdW5rbm93biBzaWduYWwgXCIgXiBJbnQudG9fc3RyaW5nIHQpKVxuICAgIHwgU29tZSBiZWhhdmlvciAtPiBiZWhhdmlvclxuICBpblxuICB0b19zdHJpbmdfd2l0aF92ZXJzaW9uLCBvZl9zdHJpbmcsIGRlZmF1bHRfc3lzX2JlaGF2aW9yXG47O1xuXG5leGNlcHRpb24gRXhwZWN0ZWRfYXRvbSBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uKVxubGV0IHRvX3N0cmluZyBzID0gdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiBzIH52ZXJzaW9uOjJcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG5cbmxldCB0X29mX3NleHAgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gIHwgXyAtPiByYWlzZSAoRXhwZWN0ZWRfYXRvbSBzKVxuOztcblxudHlwZSBwaWRfc3BlYyA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG50eXBlIHNpZ3Byb2NtYXNrX2NvbW1hbmQgPSBbIGBVc2VfU2lnbmFsX3VuaXggXVxuXG5sZXQgY2FuX3NlbmRfdG8gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgb2Zfc3lzdGVtX2ludCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfZXhuID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmRfaSA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzZXhwX29mX3BpZF9zcGVjID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNpZ3BlbmRpbmcgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncHJvY21hc2sgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lnc3VzcGVuZCA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCB0b19zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIHR5cGUgYmVoYXZpb3IgPVxuICAgIFsgYERlZmF1bHRcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBIYW5kbGUgb2YgdCAtPiB1bml0XG4gICAgXVxuXG4gIG1vZHVsZSBCZWhhdmlvciA9IHN0cnVjdFxuICAgIGxldCBvZl9jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgU3RkbGliLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IFN0ZGxpYi5TeXMuU2lnbmFsX2RlZmF1bHRcbiAgICAgIHwgYElnbm9yZSAtPiBTaWduYWxfaWdub3JlXG4gICAgICB8IGBIYW5kbGUgZiAtPiBTaWduYWxfaGFuZGxlIChmdW4gdCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc2lnbmFsIHQgYmVoYXZpb3IgPVxuICAgIEJlaGF2aW9yLm9mX2NhbWwgKFN0ZGxpYi5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBiZWhhdmlvciA9IGlnbm9yZSAoc2lnbmFsIHQgYmVoYXZpb3IgOiBiZWhhdmlvcilcbiAgbGV0IGhhbmRsZSB0IGYgPSBzZXQgdCAoYEhhbmRsZSBmKVxuZW5kXG5cbm9wZW4gRXhwZXJ0XG5cbmxldCBoYW5kbGVfZGVmYXVsdCB0ID0gc2V0IHQgYERlZmF1bHRcbmxldCBpZ25vcmUgdCA9IHNldCB0IGBJZ25vcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjJcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTaWduX29yX25hbiA9IEJhc2UuU2lnbl9vcl9uYW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaWduX29yX25hbi50ID1cbiAgICAgIHwgTmVnXG4gICAgICB8IFplcm9cbiAgICAgIHwgUG9zXG4gICAgICB8IE5hblxuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduX29yX25hblxuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChTaWduX29yX25hbikgKFN0YWJsZS5WMSlcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgdmFsdWUgOiAnYSBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50XG4gICAgICAgICAgICAgICAgICAgICAgICAgW0Bjb21wYXJlLmlnbm9yZV0gW0BlcXVhbC5pZ25vcmVdXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGZpZWxkc11cbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIHJlZiBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBvZl9mb3JtYXQgKHYxIDogJ2EgRm9ybWF0LnQpIDogJ2EgdCA9IHsgdmFsdWUgPSAhdjE7IHNldF9hdCA9IFslaGVyZV0gfVxuICAgICAgbGV0IHRvX2Zvcm1hdCAodCA6ICdhIHQpIDogJ2EgRm9ybWF0LnQgPSByZWYgdC52YWx1ZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGVcbiAgICAgIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgICAgICAoRm9ybWF0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBVbnN0YWJsZSA9IFN0YWJsZS5WMVxub3BlbiBTdGFibGUuVFxuXG50eXBlICdhIHQgPSAnYSBTdGFibGUuVC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsXVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5wcmludF9iYWNrdHJhY2VcbmxldCBnZXRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLmdldF9iYWNrdHJhY2VcbmxldCByZWNvcmRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvbl9hcnJheVxuXG5pbmNsdWRlXG4gIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9hcnJheVxuICAgIGVuZClcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuTGF6eX1bQmFzZS5MYXp5XX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBCYXNlLkxhenkudFxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQmFzZS5MYXp5IHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgKCoqIEBpbmxpbmUgKilcblxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBjb21wYXJlID1cbiAgWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cblxubGV0IGNvbXBhcmUgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDwgKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBlcXVhbCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1pbiBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IG1heCBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG50eXBlICgnYSwgJ2IpIGZuID0gJ2EgLT4gJ2JcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUnZhbCBvZiAnYVxuICAgIHwgRXhwdCBvZiBleG5cblxuICBsZXQgcmV0dXJuID0gZnVuY3Rpb25cbiAgICB8IFJ2YWwgdiAtPiB2XG4gICAgfCBFeHB0IGUgLT4gcmFpc2UgZVxuICA7O1xuXG4gIGxldCBjYXB0dXJlIGYgeCA9XG4gICAgdHJ5IFJ2YWwgKGYgeCkgd2l0aFxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KSBbQG5vbnRhaWxdXG5sZXQgaXRlcmknIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gaSAoKSB2IC0+IGYgaSB2KVxubGV0IGl0ZXInIHQgZGlyIH5mID0gZm9sZGknIHQgZGlyIH5pbml0OigpIH5mOihmdW4gXyAoKSB2IC0+IGYgdilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9IGZvbGRpJyB0IGBmcm9udF90b19iYWNrIH5pbml0IH5mXG5sZXQgaXRlcmkgdCB+ZiA9IGl0ZXJpJyB0IGBmcm9udF90b19iYWNrIH5mXG5cbmxldCBpdGVyaV9pbnRlcm5hbCB0IH5mID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIChcbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIH5yZWFsX2kgfnN0b3BfcG9zID1cbiAgICAgIGlmIHJlYWxfaSA8IHN0b3BfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgZiB0LmFyciByZWFsX2k7XG4gICAgICAgIGxvb3AgfnJlYWxfaToocmVhbF9pICsgMSkgfnN0b3BfcG9zKVxuICAgIGluXG4gICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgdGhlbiBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSBbQG5vbnRhaWxdXG4gICAgZWxzZSAoXG4gICAgICBsb29wIH5yZWFsX2k6YWN0dWFsX2Zyb250IH5zdG9wX3Bvczp0LmFycl9sZW5ndGg7XG4gICAgICBsb29wIH5yZWFsX2k6MCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSkgW0Bub250YWlsXSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZikgW0Bub250YWlsXVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBTdGRsaWIuU3lzLm9zX3R5cGUgd2l0aFxuICB8IFwiVW5peFwiIC0+IHVuaXhfcXVvdGVcbiAgfCBfIC0+IEZpbGVuYW1lLnF1b3RlXG47O1xuXG5sZXQgY29uY2F0X3F1b3RlZCBzcGxpdF9jb21tYW5kID1cbiAgTGlzdC5tYXAgfmY6cXVvdGUgc3BsaXRfY29tbWFuZCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbjs7XG5cbmxldCBjX2ludF9zaXplID0gYFVzZV9TeXNfdW5peFxubGV0IGNhdGNoX2JyZWFrID0gYFVzZV9TeXNfdW5peFxubGV0IGNoZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmQgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZF9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGlvbl9tb2RlID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzID0gYFVzZV9TeXNfdW5peFxubGV0IGZpbGVfZXhpc3RzX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBmb2xkX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBnZXRjd2QgPSBgVXNlX1N5c191bml4XG5sZXQgaG9tZV9kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBsc19kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgb3ZlcnJpZGVfYXJndiA9IGBVc2VfU3lzX3VuaXhcbmxldCByZWFkZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbW92ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW5hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudiA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52X2V4biA9IGBVc2VfU3lzX3VuaXhcblxuZXhjZXB0aW9uIEJyZWFrID0gU3RkbGliLlN5cy5CcmVha1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgdW5peF9xdW90ZSA9IHVuaXhfcXVvdGVcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFN0ZGxpYi5BcmdcblxudHlwZSB0ID0ga2V5ICogc3BlYyAqIGRvY1xuXG5sZXQgc29ydF9hbmRfYWxpZ24gbHN0ID1cbiAgYWxpZ24gKEJhc2UuTGlzdC5zb3J0IGxzdCB+Y29tcGFyZTooZnVuIChhLCBfLCBfKSAoYiwgXywgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEJpZ3N0cmluZy5jcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYzpOb25lXG4gICAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgICBsZXQgZ2V0ID0gQmlnc3RyaW5nLmdldFxuXG4gICAgbW9kdWxlIEJsaXQgPSBNYWtlX3N1YnN0cmluZy5CbGl0XG5cbiAgICBsZXQgYmxpdCA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X3RvX3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYnl0ZXMgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fc3RyaW5nID0gQmxpdC5zdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGFibGVfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICAgICAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbmRleCA6IGludFxuICAgICAgICA7IG1pbl9pbmRleCA6IGludFxuICAgICAgICA7IG1heF9pbmRleCA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNyZWF0ZSBpbmRleCB+bWluIH5tYXgsIGluZGV4ICsgMSkpXG4gICAgfD4gU2VxdWVuY2UudG9fbGlzdFxuICA7O1xuXG4gIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICBsZXQgbWF4X2luZGV4IHQgPSB0Lm1heF9pbmRleFxuICBsZXQgbWluX2luZGV4IHQgPSB0Lm1pbl9pbmRleFxuICBsZXQgemVyb19iYXNlZF9pbmRleCB0ID0gaW5kZXggdCAtIG1pbl9pbmRleCB0XG4gIGxldCBudW1faW5kZXhlcyB0ID0gbWF4X2luZGV4IHQgLSBtaW5faW5kZXggdCArIDFcblxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5pbmNsdWRlIENvbW1hbmRcblxubW9kdWxlIEFyZ190eXBlID0gc3RydWN0XG4gIGluY2x1ZGUgQXJnX3R5cGVcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeHBvcnRcblxuICAgIGxldCBkYXRlID0gY3JlYXRlIERhdGUub2Zfc3RyaW5nXG4gICAgbGV0IHBlcmNlbnQgPSBjcmVhdGUgUGVyY2VudC5vZl9zdHJpbmdcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGFyYW0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgUGFyYW0gOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBQYXJhbSB3aXRoIG1vZHVsZSBBcmdfdHlwZSA6PSBQYXJhbS5BcmdfdHlwZVxuICAgIGVuZClcblxuICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuZW5kXG5cbm1vZHVsZSBTcGVjID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIFNwZWMgOlxuICAgIHNpZ1xuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBTcGVjIHdpdGggbW9kdWxlIEFyZ190eXBlIDo9IFNwZWMuQXJnX3R5cGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgaW5jbHVkZSBBcmdfdHlwZS5FeHBvcnRcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIExldF9zeW50YXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IFBhcmFtXG4gIGVuZFxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2FtbCA9IENhbWwgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIzLTAxXSB1c2UgU3RkbGliIGluc3RlYWQgb2YgQ2FtbFwiXVxubW9kdWxlIENoYXIgPSBDaGFyXG5tb2R1bGUgQ29tbWFuZCA9IENvbW1hbmRfaW50ZXJuYWxcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIENvbnRhaW5lcl9pbnRmID0gQ29udGFpbmVyX2ludGZcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfc3RhYmxlID0gU3RhYmxlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9zdGFibGVdIC0tIFtDb3JlX2tlcm5lbF0gd2FzIHJlbmFtZWQgYXMgW0NvcmVdXCJdXG5cbm1vZHVsZSBDb3JlX3N0YWJsZSA9IFN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlXG5tb2R1bGUgRGF5X29mX3dlZWsgPSBEYXlfb2Zfd2Vla1xubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBEZXF1ZSA9IERlcXVlXG5tb2R1bGUgRGVyaXZpbmdfaGFzaCA9IERlcml2aW5nX2hhc2hcbm1vZHVsZSBEaWdlc3QgPSBNZDUgW0BAb2NhbWwuZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE3LTA1XSBVc2UgTWQ1IGluc3RlYWQuXCJdXG5tb2R1bGUgRG91Ymx5X2xpbmtlZCA9IERvdWJseV9saW5rZWRcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gPSBTdGRsaWIuRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRleGMgPSBQcmludGV4Y1xubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBRdWlja2NoZWNrID0gUXVpY2tjaGVja1xubW9kdWxlIFF1aWNrY2hlY2tfaW50ZiA9IFF1aWNrY2hlY2tfaW50ZlxubW9kdWxlIFF1aWNrY2hlY2thYmxlID0gUXVpY2tjaGVja2FibGVcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RseV9jb21wYXJhYmxlXG5tb2R1bGUgU2VxdWVuY2UgPSBTZXF1ZW5jZVxubW9kdWxlIFNldCA9IFNldFxubW9kdWxlIFNldF9pbnRmID0gU2V0X2ludGZcbm1vZHVsZSBTZXRfb25jZSA9IFNldF9vbmNlXG5tb2R1bGUgU2V4cF9tYXliZSA9IFNleHAuU2V4cF9tYXliZVxuXG5tb2R1bGUgU2V4cCA9IFNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduYWwgPSBTaWduYWxcbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFNwbGl0dGFibGVfcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb21cbm1vZHVsZSBTdGFibGVfY29tcGFyYWJsZSA9IFN0YWJsZV9jb21wYXJhYmxlXG5tb2R1bGUgU3RhYmxlX3VuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3Rcbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdfaWQgPSBTdHJpbmdfaWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN1YnN0cmluZyA9IFN1YnN0cmluZ1xubW9kdWxlIFN1YnN0cmluZ19pbnRmID0gU3Vic3RyaW5nX2ludGZcbm1vZHVsZSBTeXMgPSBDb3JlX3N5c1xuXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW0NvcmVfdGhyZWFkXSBvciBbQ2FtbF90aHJlYWRzLlRocmVhZF1cIl1cblxubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTFdIFVzZSBbVGltZV9mbG9hdF0gb3IgW1RpbWVfZmxvYXRfdW5peF0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgVGltZV9mbG9hdCA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbmV4dGVybmFsIHBoeXNfZXF1YWwgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxXCJcblxudHlwZSAnYSBfbWF5YmVfYm91bmQgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgfCBJbmNsIG9mICdhXG4gIHwgRXhjbCBvZiAnYVxuICB8IFVuYm91bmRlZFxuXG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsImluY2x1ZGUgQ29tbWFuZC5TaGFwZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuICBvcGVuISBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuXG4gIG1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICAgIG1vZHVsZSBHcmFtbWFyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5HcmFtbWFyLlYxXG5cbiAgICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuR3JhbW1hci5WMS50ID1cbiAgICAgICAgICB8IFplcm9cbiAgICAgICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgICAgICB8IE1hbnkgb2YgdFxuICAgICAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgICAgIHwgQWRfaG9jIG9mIHN0cmluZ1xuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCBhMTdmZDM0ZWMyMTNlNTA4ZGI0NTBmNjQ2OWY3ZmU5OSB8fV1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLlYyLnQgPVxuICAgICAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgICAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci5WMS50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAwODFkOWVjMTY3OTAzZjhmOGM0OWNiZjhlM2ZiM2E2NiB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGbGFnX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRmxhZ19pbmZvLlYxXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkZsYWdfaW5mby5WMS50ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhc2VfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5CYXNlX2luZm8uVjJcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQmFzZV9pbmZvLlYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDhmYWFjMWU4ZDlkZWIwYmFhYTU2YWM4ZWJmODViNDk4IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgICB0eXBlIGEgPSBEdW1teV90eXBlX2JlY2F1c2Vfd2VfY2Fubm90X2RpZ2VzdF90eXBlX2NvbnN0cnVjdG9yc19vbmx5X2NvbmNyZXRlX3R5cGVzXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkdyb3VwX2luZm8uVjJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgQ29tbWFuZC5TaGFwZS5TdGFibGUuR3JvdXBfaW5mby5WMi50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBMaXN0LlN0YWJsZS5WMS50IExhenkuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRXhlY19pbmZvLlYzXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkV4ZWNfaW5mby5WMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYzBjODI1NmU5MjM4Y2RkOGYyZWMxZjg3ODVlMDJhZTAgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkZ1bGx5X2ZvcmNlZC5WMVxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GdWxseV9mb3JjZWQuVjEudCA9XG4gICAgICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnQgKiB0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA5ODExNTRlZjM5MTk0MzdjNmM4MjI2MTk4ODI4NDFkNCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFRva2VuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJZGVudFxuICAgIHwgRnVuY3Rpb25cbiAgICB8IEF0a2V5d29yZFxuICAgIHwgSGFzaFxuICAgIHwgU3RyaW5nXG4gICAgfCBVcmlcbiAgICB8IERlbGltXG4gICAgfCBOdW1iZXJcbiAgICB8IFBlcmNlbnRhZ2VcbiAgICB8IERpbWVuc2lvblxuICAgIHwgV2hpdGVfc3BhY2VcbiAgICB8IENvbG9uXG4gICAgfCBTZW1pX2NvbG9uXG4gICAgfCBDb21tYVxuICAgIHwgTGJyYWNrZXRcbiAgICB8IFJicmFja2V0XG4gICAgfCBMcGFyZW5cbiAgICB8IFJwYXJlblxuICAgIHwgTGN1cmx5XG4gICAgfCBSY3VybHlcbiAgICB8IENvbW1lbnRcbiAgICB8IEVvZlxuICAgIHwgRXJyb3JcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBzIDogc3RyaW5nXG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyAoKiBzdGFydCBvZiB0aGUgY3VycmVudCB0b2tlbiAqKVxuICAgIG11dGFibGUgbGVuIDogaW50XG4gIDsgKCogbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBjdXJyZW50IDogVG9rZW4udFxuICB9XG5cbnR5cGUgbWFyayA9IE1hcmsgb2YgaW50IFtAQHVuYm94ZWRdXG5cbmxldCBtYXJrIHQgPSBNYXJrIHQubGVuXG5sZXQgc291cmNlIHQgPSB0LnNcbmxldCBuZXh0X3BvcyB0ID0gdC5vZmYgKyB0LmxlblxubGV0IGlzX25leHRfZW9mIHQgPSBuZXh0X3BvcyB0ID49IFN0cmluZy5sZW5ndGggdC5zXG5sZXQgbmV4dF9jaGFyIHQgPSB0LnMuW25leHRfcG9zIHRdXG5sZXQgcmVzZXQgdCAoTWFyayB2KSA9IHQubGVuIDwtIHZcbmxldCBjb25zdW1lXzEgdCA9IHQubGVuIDwtIHQubGVuICsgMVxubGV0IGNvbnN1bWVfbiB0IG4gPSB0LmxlbiA8LSB0LmxlbiArIG5cblxubGV0IG9uZV9jaGFyX3Rva2VuIHQgdG9rID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBjb25zdW1lXzEgdDtcbiAgdC5jdXJyZW50IDwtIHRva1xuOztcblxuZXhjZXB0aW9uIEVycm9yX2hhcHBlbmVkXG5cbmxldCBlcnJvciB0ID1cbiAgdC5jdXJyZW50IDwtIEVycm9yO1xuICByYWlzZSBFcnJvcl9oYXBwZW5lZFxuOztcblxubGV0IGFjY2VwdCB0IGYgPVxuICBpZiAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpXG4gIHRoZW4gKFxuICAgIGNvbnN1bWVfMSB0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCBhY2NlcHRfY2hhciB0IGNoID0gYWNjZXB0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBhY2NlcHRfc3RyaW5nIHQgc3RyID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPSAwXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgcG9zID0gbmV4dF9wb3MgdCBpblxuICAgIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBwb3MgKyBzdHJfbGVuID4gU3RyaW5nLmxlbmd0aCB0LnNcbiAgICB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBTdHJpbmcuaXNfc3Vic3RyaW5nX2F0IHQucyB+cG9zIH5zdWJzdHJpbmc6c3RyXG4gICAgdGhlbiAoXG4gICAgICBjb25zdW1lX24gdCBzdHJfbGVuO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKVxuOztcblxubGV0IGV4cGVjdCB0IGYgPSBpZiBhY2NlcHQgdCBmIHRoZW4gKCkgZWxzZSBlcnJvciB0XG5sZXQgZXhwZWN0X2NoYXIgdCBjaCA9IGV4cGVjdCB0IChDaGFyLmVxdWFsIGNoKVxuXG5sZXQgbWFueSB0IGYgPVxuICB3aGlsZSAobm90IChpc19uZXh0X2VvZiB0KSkgJiYgZiAobmV4dF9jaGFyIHQpIGRvXG4gICAgY29uc3VtZV8xIHRcbiAgZG9uZVxuOztcblxubGV0IG1hbnkxIHQgZiA9XG4gIGV4cGVjdCB0IGY7XG4gIG1hbnkgdCBmXG47O1xuXG5sZXQgcGx1c19vcl9taW51cyA9IGZ1bmN0aW9uXG4gIHwgJy0nIHwgJysnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgbm1zdGFydCA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubWNoYXIgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyB8ICctJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlkZW50IHQgPVxuICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICB0aGVuXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLSdcbiAgICB0aGVuIG1hbnkgdCBubWNoYXJcbiAgICBlbHNlIChcbiAgICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgICBtYW55IHQgbm1jaGFyKVxuICBlbHNlIChcbiAgICBleHBlY3QgdCBubXN0YXJ0O1xuICAgIG1hbnkgdCBubWNoYXIpXG47O1xuXG5sZXQgaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGlkZW50IHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJygnIHRoZW4gdC5jdXJyZW50IDwtIEZ1bmN0aW9uIGVsc2UgdC5jdXJyZW50IDwtIElkZW50XG47O1xuXG5sZXQgaXNfd2hpdGVzcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXG4nIHwgJ1xceDBjJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlID1cbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgcXVvdGUpO1xuICBjb25zdW1lXzEgdDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICB8ICdcXG4nIHwgJ1xccicgfCAnXFx4MGMnIHwgJ1xcXFwnIC0+IGZhbHNlXG4gICAgICB8IGMgd2hlbiBDaGFyLmVxdWFsIGMgcXVvdGUgLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICBpZiBhY2NlcHRfY2hhciB0ICdcXFxcJ1xuICAgIHRoZW5cbiAgICAgIGlmIGFjY2VwdF9jaGFyIHQgcXVvdGVcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICAgICAgfCAnXFxuJyB8ICdcXHgwYycgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJ1xcbicgOiBib29sKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgICAgIHwgX2MgLT5cbiAgICAgICAgICAoKiBIYW5kbGUgdGhlIFwiZXNjYXBlXCIgcnVsZTpcbiAgICAgICAgICAgICB7dlxuICAgICAgICAgICAgICAgIHVuaWNvZGU6IFxcXFxbMC05YS1mXXsxLDZ9KFxcclxcbnxbIFxcblxcclxcdFxcZl0pP1xuICAgICAgICAgICAgICAgIGVzY2FwZSA6IHt1bmljb2RlfXxcXFxcW15cXG5cXHJcXGYwLTlhLWZdXG4gICAgICAgICAgICAgIHZ9XG4gICAgICAgICAgKilcbiAgICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpO1xuICBleHBlY3RfY2hhciB0IHF1b3RlXG47O1xuXG5sZXQgc3RhcnRfbnVtIHQgPVxuICBsZXQgY3VyID0gbWFyayB0IGluXG4gIGxldCBiID1cbiAgICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgICBpZ25vcmUgKGFjY2VwdF9jaGFyIHQgJy4nIDogYm9vbCk7XG4gICAgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHN0YXJ0X2lkZW50IH5wcmVmaXggdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGFjY2VwdF9zdHJpbmcgdCBwcmVmaXhcbiAgICAmJlxuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy0nIHRoZW4gYWNjZXB0X2NoYXIgdCAnLScgfHwgYWNjZXB0IHQgbm1zdGFydCBlbHNlIGFjY2VwdCB0IG5tc3RhcnRcbiAgaW5cbiAgcmVzZXQgdCBjdXI7XG4gIGJcbjs7XG5cbmxldCBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBxdW90ZWRfc3RyaW5nJyB0IH5xdW90ZTtcbiAgdC5jdXJyZW50IDwtIFN0cmluZ1xuOztcblxubGV0IGV4cG9uZW50aWFsX3BhcnQgdCA9XG4gIGxldCBtYXJrID0gbWFyayB0IGluXG4gIGlmIGFjY2VwdCB0IChmdW5jdGlvblxuICAgIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW5cbiAgICBpZiBhY2NlcHQgdCBwbHVzX29yX21pbnVzXG4gICAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlIGlmIGFjY2VwdCB0IENoYXIuaXNfZGlnaXRcbiAgICB0aGVuIG1hbnkgdCBDaGFyLmlzX2RpZ2l0XG4gICAgZWxzZVxuICAgICAgKCogQmFja3RyYWNrIGlmIHRoZXJlIGFyZSBubyBkaWdpdHMgb3Igc2lnbnMgYWZ0ZXIgdGhlICdlJyBiZWNhdXNlXG4gICAgICAgICBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSAnZScgd2FzIGFjdHVhbGx5IGEgcGFydCBvZiBzb21ldGhpbmcgZWxzZS4gRm9yXG4gICAgICAgICBleGFtcGxlLCB0aGUgJ2UnIGNvdWxkIGJlIHBhcnQgb2YgYW4gJ2VtJyBvciAnZW4nIGRpbWVuc2lvbiBpbnN0ZWFkXG4gICAgICAgICBvZiBiZWdpbm5pbmcgdGhlIGV4cG9uZW50aWFsIHBhcnQgb2YgYSBzY2llbnRpZmljIG5vdGF0aW9uIG51bWJlci5cblxuICAgICAgICAgRXhhbXBsZTogMS4yZTMgaXMgc2NpZW50aWZpYyBub3RhdGlvbiwgYnV0IDEuMmVtIGlzIGEgbnVtYmVyIHdpdGggYVxuICAgICAgICAgZGltZW5zaW9uLiAqKVxuICAgICAgcmVzZXQgdCBtYXJrXG47O1xuXG5sZXQgbnVtIHQgPVxuICBpZ25vcmUgKGFjY2VwdCB0IHBsdXNfb3JfbWludXMgOiBib29sKTtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnLidcbiAgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXRcbiAgZWxzZSAoXG4gICAgbWFueTEgdCBDaGFyLmlzX2RpZ2l0O1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJy4nIHRoZW4gbWFueTEgdCBDaGFyLmlzX2RpZ2l0KTtcbiAgZXhwb25lbnRpYWxfcGFydCB0XG47O1xuXG5sZXQgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIG51bSB0O1xuICBpZiBhY2NlcHRfY2hhciB0ICclJ1xuICB0aGVuIHQuY3VycmVudCA8LSBQZXJjZW50YWdlXG4gIGVsc2UgaWYgc3RhcnRfaWRlbnQgfnByZWZpeDpcIlwiIHRcbiAgdGhlbiAoXG4gICAgaWRlbnQgdDtcbiAgICB0LmN1cnJlbnQgPC0gRGltZW5zaW9uKVxuICBlbHNlIHQuY3VycmVudCA8LSBOdW1iZXJcbjs7XG5cbmxldCBoYXNoX29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICcjJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZiBhY2NlcHQgdCBubWNoYXJcbiAgdGhlbiAoXG4gICAgbWFueTEgdCBubWNoYXI7XG4gICAgdC5jdXJyZW50IDwtIEhhc2gpXG4gIGVsc2UgdC5jdXJyZW50IDwtIERlbGltXG47O1xuXG5sZXQgYXRrZXl3b3JkIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdAJyk7XG4gIGNvbnN1bWVfMSB0O1xuICBpZGVudCB0O1xuICB0LmN1cnJlbnQgPC0gQXRrZXl3b3JkXG47O1xuXG5sZXQgdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGFzc2VydCAoQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICd1Jyk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcInVybChcIlxuICB0aGVuIChcbiAgICBsZXQgbSA9IG1hcmsgdCBpblxuICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgIGlmIENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXCInIHx8IENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSAnXFwnJ1xuICAgIHRoZW4gKFxuICAgICAgcmVzZXQgdCBtO1xuICAgICAgdC5jdXJyZW50IDwtIEZ1bmN0aW9uKVxuICAgIGVsc2UgKFxuICAgICAgbWFueSB0IChmdW5jdGlvblxuICAgICAgICB8ICcpJyB8ICcgJyAtPiBmYWxzZVxuICAgICAgICB8ICdcXCcnIHwgJ1wiJyB8ICcoJyAtPiBlcnJvciB0XG4gICAgICAgIHwgYyB3aGVuIENoYXIuaXNfcHJpbnQgYyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBlcnJvciB0KTtcbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgZXhwZWN0X2NoYXIgdCAnKSc7XG4gICAgICB0LmN1cnJlbnQgPC0gVXJpKSlcbiAgZWxzZSBpZGVudF9vcl9mdW5jdGlvbiB0XG47O1xuXG5sZXQgY29tbWVudF9vcl9kZWxpbSB0ID1cbiAgYXNzZXJ0ICh0LmxlbiA9IDApO1xuICBpZiBhY2NlcHRfc3RyaW5nIHQgXCIvKlwiXG4gIHRoZW4gKFxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyonIC0+IGZhbHNlXG4gICAgICAgIHwgXyAtPiB0cnVlKTtcbiAgICAgIGlmIGFjY2VwdF9zdHJpbmcgdCBcIiovXCJcbiAgICAgIHRoZW4gdC5jdXJyZW50IDwtIENvbW1lbnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0X2NoYXIgdCAnKidcbiAgICAgIHRoZW4gbG9vcCAoKVxuICAgICAgZWxzZSBlcnJvciB0XG4gICAgaW5cbiAgICBsb29wICgpKVxuICBlbHNlIChcbiAgICBleHBlY3RfY2hhciB0ICcvJztcbiAgICB0LmN1cnJlbnQgPC0gRGVsaW0pXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgbGV0IG5ld19vZmYgPSBuZXh0X3BvcyB0IGluXG4gIHQub2ZmIDwtIG5ld19vZmY7XG4gIHQubGVuIDwtIDA7XG4gIGlmIGlzX25leHRfZW9mIHRcbiAgdGhlbiB0LmN1cnJlbnQgPC0gRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIG5leHRfY2hhciB0IHdpdGhcbiAgICB8IGMgd2hlbiBpc193aGl0ZXNwYWNlIGMgLT5cbiAgICAgIG1hbnkgdCBpc193aGl0ZXNwYWNlO1xuICAgICAgdC5jdXJyZW50IDwtIFdoaXRlX3NwYWNlXG4gICAgfCAnOicgLT4gb25lX2NoYXJfdG9rZW4gdCBDb2xvblxuICAgIHwgJzsnIC0+IG9uZV9jaGFyX3Rva2VuIHQgU2VtaV9jb2xvblxuICAgIHwgJ3snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGN1cmx5XG4gICAgfCAnfScgLT4gb25lX2NoYXJfdG9rZW4gdCBSY3VybHlcbiAgICB8ICdbJyAtPiBvbmVfY2hhcl90b2tlbiB0IExicmFja2V0XG4gICAgfCAnXScgLT4gb25lX2NoYXJfdG9rZW4gdCBSYnJhY2tldFxuICAgIHwgJygnIC0+IG9uZV9jaGFyX3Rva2VuIHQgTHBhcmVuXG4gICAgfCAnKScgLT4gb25lX2NoYXJfdG9rZW4gdCBScGFyZW5cbiAgICB8ICcsJyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbW1hXG4gICAgfCAoJ1xcJycgfCAnXCInKSBhcyBxdW90ZSAtPiBxdW90ZWRfc3RyaW5nIHQgfnF1b3RlXG4gICAgfCAoJzAnIC4uICc5JyB8ICcuJyB8ICcrJyB8ICctJykgd2hlbiBzdGFydF9udW0gdCAtPlxuICAgICAgbnVtYmVyX29yX3BlcmNlbnRhZ2Vfb3JfZGltZW5zaW9uIHRcbiAgICB8ICcvJyAtPiBjb21tZW50X29yX2RlbGltIHRcbiAgICB8ICcjJyAtPiBoYXNoX29yX2RlbGltIHRcbiAgICB8ICdAJyB3aGVuIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJAXCIgdCAtPiBhdGtleXdvcmQgdFxuICAgIHwgJ3UnIC0+IHVyaV9vcl9pZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgfCBfIC0+XG4gICAgICBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICAgICAgdGhlbiBpZGVudF9vcl9mdW5jdGlvbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgY29uc3VtZV8xIHQ7XG4gICAgICAgICgqIHRoaXMgaXMgd2VpcmQgYnV0IHRoZSBzcGVjIGlzIHdlaXJkICopXG4gICAgICAgIHQuY3VycmVudCA8LSBEZWxpbSkpXG47O1xuXG5sZXQgbmV4dCB0ID1cbiAgKCogTWFrZSBzdXJlIHdlIGFyZSBpZGVtcG90ZW50IHdoZW4gd2UgZ2V0IGludG8gdGhlIGVycm9yIHN0YXRlICopXG4gIGlmIFRva2VuLmVxdWFsIHQuY3VycmVudCBFcnJvclxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIHRyeSBuZXh0IHQgd2l0aFxuICAgIHwgRXJyb3JfaGFwcGVuZWQgLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIHMgPVxuICAoKiBjdXJyZW50IGlzIGR1bW15IGFuZCB3aWxsIGJlIHNldCBieSBjYWxsIHRvIG5leHQgKilcbiAgbGV0IHQgPSB7IHM7IG9mZiA9IDA7IGxlbiA9IDA7IGN1cnJlbnQgPSBXaGl0ZV9zcGFjZSB9IGluXG4gIG5leHQgdDtcbiAgdFxuOztcblxubGV0IHNsaWNlIHQgPSB0Lm9mZiwgdC5sZW5cbmxldCBjdXJyZW50IHQgPSB0LmN1cnJlbnRcblxubGV0IGN1cnJlbnRfdGV4dCB0ID1cbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVvZlxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IHBvcywgbGVuID0gc2xpY2UgdCBpblxuICAgIFN0cmluZy5zdWIgdC5zIH5wb3Mgfmxlbilcbjs7XG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgdCA9IGNyZWF0ZSBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIGxldCBzdGFydCwgbGVuID0gc2xpY2UgdCBpblxuICAgIGxldCBhY2MgPSAoY3VycmVudCB0LCBzdGFydCwgbGVuKSA6OiBhY2MgaW5cbiAgICBpZiBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFb2YgfHwgVG9rZW4uZXF1YWwgKGN1cnJlbnQgdCkgRXJyb3JcbiAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgIGVsc2UgKFxuICAgICAgbmV4dCB0O1xuICAgICAgbG9vcCBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCB0ZXN0IHMgPVxuICAgICAgcHJpbnRfZW5kbGluZVxuICAgICAgICAoU2V4cC50b19zdHJpbmdfbWFjaCAoWyVzZXhwX29mOiAoVG9rZW4udCAqIGludCAqIGludCkgbGlzdF0gKHRvX2xpc3QgcykpKVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlb2ZcIiA9XG4gICAgICB0ZXN0IFwiXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoRW9mIDAgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNpbXBsZV90b2tlbnNcIiA9XG4gICAgICB0ZXN0IFwiKSh7fVtdOzpcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoUnBhcmVuIDAgMSkoTHBhcmVuIDEgMSkoTGN1cmx5IDIgMSkoUmN1cmx5IDMgMSkoTGJyYWNrZXQgNCAxKShSYnJhY2tldCA1IDEpKFNlbWlfY29sb24gNiAxKShDb2xvbiA3IDEpKEVvZiA4IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaWRlbnRcIiA9XG4gICAgICB0ZXN0IFwiLWZvby1iYXI6IGJhelwiO1xuICAgICAgdGVzdCBcIi1mb28tYmFyKFwiO1xuICAgICAgdGVzdCBcIkBmb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiQC0tZm9vLWJhclwiO1xuICAgICAgdGVzdCBcIi0tdmFyXCI7XG4gICAgICB0ZXN0IFwiUkdCQVwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgOCkoQ29sb24gOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCA4KShFb2YgOCAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDkpKEVvZiA5IDApKVxuICAgICgoQXRrZXl3b3JkIDAgMTApKEVvZiAxMCAwKSlcbiAgICAoKElkZW50IDAgNSkoRW9mIDUgMCkpXG4gICAgKChJZGVudCAwIDQpKEVvZiA0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwid2hpdGVzcGFjZVwiID1cbiAgICAgIHRlc3QgXCIgIFwiO1xuICAgICAgWyVleHBlY3Qge3woKFdoaXRlX3NwYWNlIDAgMikoRW9mIDIgMCkpfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIm51bWJlcnNcIiA9XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlblwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41ZW1cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWluXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDNjbVwiO1xuICAgICAgdGVzdCBcImxpbmUtaGVpZ2h0OiAxMjAlXCI7XG4gICAgICB0ZXN0IFwiZ3JpZDogMCAxIGZvb1wiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41LWluXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJlLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFKzIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFLTIwXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAuMDJFMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUyMFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDUpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKERpbWVuc2lvbiAxMyAzKShFb2YgMTYgMCkpXG4gICAgKChJZGVudCAwIDExKShDb2xvbiAxMSAxKShXaGl0ZV9zcGFjZSAxMiAxKShQZXJjZW50YWdlIDEzIDQpKEVvZiAxNyAwKSlcbiAgICAoKElkZW50IDAgNCkoQ29sb24gNCAxKShXaGl0ZV9zcGFjZSA1IDEpKE51bWJlciA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoTnVtYmVyIDggMSkoV2hpdGVfc3BhY2UgOSAxKShJZGVudCAxMCAzKShFb2YgMTMgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShEaW1lbnNpb24gOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA3KShFb2YgMTUgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpXG4gICAgKChJZGVudCAwIDYpKENvbG9uIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCA2KShFb2YgMTQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJiYWRseV9xdW90ZWRcIiA9XG4gICAgICB0ZXN0IFwiJ2ZvbyBiYXJcIjtcbiAgICAgIHRlc3QgXCInXCI7XG4gICAgICB0ZXN0IFwiJ1xcXFwnXCI7XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICgoRXJyb3IgMCA4KSlcbiAgICAoKEVycm9yIDAgMSkpXG4gICAgKChFcnJvciAwIDMpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicXVvdGVkXCIgPVxuICAgICAgdGVzdCB7fCdGb28gJ1wiQmFyXCInOycgJ1xcJycgXCJcXFwiXCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoU3RyaW5nIDAgNikoU3RyaW5nIDYgNSkoU3RyaW5nIDExIDMpKFdoaXRlX3NwYWNlIDE0IDEpKFN0cmluZyAxNSA0KShXaGl0ZV9zcGFjZSAxOSAxKShTdHJpbmcgMjAgNCkoRW9mIDI0IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiY29sb3JzXCIgPVxuICAgICAgdGVzdCB7fGNvbG9yOiAjZjAwfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgdGVzdCB7fGNvbG9yOiByZ2IoMjU1LDAsMCl8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShIYXNoIDcgNCkoRW9mIDExIDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKVxuICAgICgoSWRlbnQgMCA1KShDb2xvbiA1IDEpKFdoaXRlX3NwYWNlIDYgMSkoRnVuY3Rpb24gNyA0KShOdW1iZXIgMTEgMykoQ29tbWEgMTQgMSkoTnVtYmVyIDE1IDEpKENvbW1hIDE2IDEpKE51bWJlciAxNyAxKShScGFyZW4gMTggMSkoRW9mIDE5IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiaW1wb3J0XCIgPVxuICAgICAgdGVzdCB7fEBpbXBvcnQgXCJmb28uYmFyXCI7fH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCAoKEF0a2V5d29yZCAwIDcpKFdoaXRlX3NwYWNlIDcgMSkoU3RyaW5nIDggOSkoU2VtaV9jb2xvbiAxNyAxKShFb2YgMTggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJyZWQgZXhhbXBsZVwiID1cbiAgICAgIHRlc3QgXCJyZWQtLT5cIjtcbiAgICAgIFslZXhwZWN0IHt8ICgoSWRlbnQgMCA1KShEZWxpbSA1IDEpKEVvZiA2IDApKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidXJsXCIgPVxuICAgICAgdGVzdCB7fHVybCggXCJodHRwOi8vd3d3dy5nb29nbGUuY29tXCIpfH07XG4gICAgICB0ZXN0IHt8dXJsKCdodHRwOi8vd3d3dy5nb29nbGUuY29tJyl8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuY29tICl8fTtcbiAgICAgIHRlc3Qge3x1cmwoICBodHRwOi8vd3d3dy5nb29nbGUuXCJjb20gKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKEZ1bmN0aW9uIDAgNCkoV2hpdGVfc3BhY2UgNCAxKShTdHJpbmcgNSAyNCkoUnBhcmVuIDI5IDEpKEVvZiAzMCAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFJwYXJlbiAyOCAxKShFb2YgMjkgMCkpXG4gICAgKChGdW5jdGlvbiAwIDQpKFN0cmluZyA0IDI0KShXaGl0ZV9zcGFjZSAyOCAxKShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoVXJpIDAgMzApKEVvZiAzMCAwKSlcbiAgICAoKEVycm9yIDAgMjUpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZXNjYXBlXCIgPVxuICAgICAgdGVzdCB7fFwidGVzdFxcMTlhYmYyXFwyXCJ8fTtcbiAgICAgIHRlc3Qge3xcIlxcMDEwXFx4RkZhXFxvMTIzXFxuXFxcXFxcdXsxMjM0NX1hYfCfkKrwn5Cq8J+QqvCfkKrwn5CqXCJ8fTtcbiAgICAgIHRlc3Qge3xcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCJ8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgKChTdHJpbmcgMCAxNSkoRW9mIDE1IDApKVxuICAgICgoU3RyaW5nIDAgNTEpKEVvZiA1MSAwKSlcbiAgICAoKFN0cmluZyAwIDQ5KShFb2YgNDkgMCkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBSZWN1cnNpdmUgZGVzY2VudCBwYXJzZXJzLiAgQSBwYXJzZXIgcmV0dXJucyBmYWxzZSBpZiBiYXNlZCBvbiBhXG4gICBzaW5nbGUgdG9rZW4gbG9va2FoZWFkIGl0IGRlY2lkZXMgdGhhdCB0aGUgZ2l2ZW4gdGV4dCBjYW4gbm90IGJlXG4gICBwYXJzZWQuICBBbnkgb3RoZXIgcGFyc2UgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHJhaXNpbmcgZXhjZXB0aW9ucy5cblxuICAgU29tZSBwYXJzZXJzIHJldHVybiB1bml0IGJlY2F1c2Ugd2Ugb25seSBjYWxsIHRoZW0gd2hlbiBhIGZhaWx1cmVcbiAgIHRvIHBhcnNlIGltcGxpZXMgYSBwYXJzZSBlcnJvciAoYW5kIG5vdCB0aGF0IHNvbWUgcGFyc2VyIGhpZ2hlciB1cFxuICAgaW4gdGhlIGNhbGwgY2hhaW4gc2hvdWxkIHRyeSB0byBwYXJzZSBzb21ldGhpbmcgZWxzZSkuXG5cbiAgIEZvciBzaW1wbGljaXR5IHRoZSBwYXJzZXJzIHRoZW1zZWx2ZXMganVzdCB2YWxpZGF0ZSBhbmQgZG9uJ3RcbiAgIHByb2R1Y2UgYW55IHZhbHVlcy4gIFRoYXQgbGVhZHMgdG8gYSBmZXcgdW5lbGVnYW50IGNvbnN0cnVjdHNcbiAgIChwcmltYXJpbHkgaW4gZGVjbGFyYXRpb24pLCBidXQgbWVhbnMgd2Ugb3RoZXJ3aXNlIGhhdmUgcmF0aGVyXG4gICBzaW1wbGUgY29kZSB0aGF0IGFsc28gYWxsb2NhdGVzIHZlcnkgbGl0dGxlLlxuKilcblxub3BlbiBDb3JlXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCByZWMgbmV4dCBjdCA9XG4gIENzc190b2tlbml6ZXIubmV4dCBjdDtcbiAgaWYgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIHRoZW4gbmV4dCBjdCBlbHNlICgpXG47O1xuXG5sZXQgc2tpcF93aGl0ZV9zcGFjZSBjdCA9XG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBXaGl0ZV9zcGFjZSkgZG9cbiAgICBuZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCBhY2NlcHQgY3QgZXhwZWN0ZWQgPVxuICBsZXQgZ290ID0gQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0IGluXG4gIGlmIENzc190b2tlbml6ZXIuVG9rZW4uZXF1YWwgZ290IGV4cGVjdGVkXG4gIHRoZW4gKFxuICAgIG5leHQgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGV4cGVjdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiBuZXh0IGN0XG4gIGVsc2VcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmV4cGVjdGVkIHRva2VuXCJcbiAgICAgICAgICAoZXhwZWN0ZWQgOiBDc3NfdG9rZW5pemVyLlRva2VuLnQpXG4gICAgICAgICAgKGdvdCA6IENzc190b2tlbml6ZXIuVG9rZW4udCldXG47O1xuXG5sZXQgcmVjIG1hbnkgKGN0IDogQ3NzX3Rva2VuaXplci50KSBmID0gaWYgZiBjdCB0aGVuIG1hbnkgY3QgZiBlbHNlICgpXG5cbmxldCBtYW55MSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPVxuICBpZiBmIGN0XG4gIHRoZW4gKFxuICAgIG1hbnkgY3QgZjtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgcmVjIGFueSBjdCA6IGJvb2wgPVxuICBsZXQgcmVzID1cbiAgICBtYXRjaCBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3Qgd2l0aFxuICAgIHwgSWRlbnQgfCBOdW1iZXIgfCBQZXJjZW50YWdlIHwgRGltZW5zaW9uIHwgU3RyaW5nIHwgVXJpIHwgRGVsaW0gfCBIYXNoIHwgQ29tbWEgLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICB0cnVlXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBtYW55IGN0IGFueTtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMcGFyZW4gLT5cbiAgICAgIG5leHQgY3Q7XG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgZXhwZWN0X2FueSBjdDtcbiAgICAgIGV4cGVjdCBjdCBScGFyZW47XG4gICAgICB0cnVlXG4gICAgfCBMYnJhY2tldCAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJicmFja2V0O1xuICAgICAgdHJ1ZVxuICAgIHwgUmN1cmx5IHwgUnBhcmVuIHwgUmJyYWNrZXQgLT4gZmFsc2VcbiAgICB8IExjdXJseSAtPiBmYWxzZVxuICAgIHwgQXRrZXl3b3JkIHwgQ29sb24gfCBTZW1pX2NvbG9uIC0+IGZhbHNlXG4gICAgfCBDb21tZW50IHwgV2hpdGVfc3BhY2UgfCBFb2YgfCBFcnJvciAtPiBmYWxzZVxuICBpblxuICBpZiByZXMgdGhlbiBza2lwX3doaXRlX3NwYWNlIGN0IGVsc2UgKCk7XG4gIHJlc1xuXG5hbmQgZXhwZWN0X2FueSBjdCA9IGlmIGFueSBjdCB0aGVuICgpIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8YW55PlwiXVxuXG5hbmQgdmFsdWUwIGN0ID1cbiAgYW55IGN0XG4gIHx8IGJsb2NrIGN0XG4gIHx8XG4gIGlmIGFjY2VwdCBjdCBBdGtleXdvcmRcbiAgdGhlbiAoXG4gICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG5cbmFuZCB2YWx1ZSBjdCA9IG1hbnkxIGN0IHZhbHVlMFxuXG5hbmQgYmxvY2sgY3QgOiBib29sID1cbiAgaWYgYWNjZXB0IGN0IExjdXJseVxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgICAgdmFsdWUwIGN0XG4gICAgICB8fFxuICAgICAgaWYgYWNjZXB0IGN0IFNlbWlfY29sb25cbiAgICAgIHRoZW4gKFxuICAgICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgICB0cnVlKVxuICAgICAgZWxzZSBmYWxzZSk7XG4gICAgZXhwZWN0IGN0IFJjdXJseTtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIGV4cGVjdF92YWx1ZSBjdCA9IGlmIHZhbHVlIGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDx2YWx1ZT5cIl1cblxubGV0IGRlY2xhcmF0aW9uIGN0ID1cbiAgbGV0IGlkZW50X3N0YXJ0LCBpZGVudF9sZW4gPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IGluXG4gIGlmIGFjY2VwdCBjdCBJZGVudFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGV4cGVjdCBjdCBDb2xvbjtcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIGxldCB2YWx1ZV9zdGFydCA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgfD4gZnN0IGluXG4gICAgZXhwZWN0X3ZhbHVlIGN0O1xuICAgIGxldCBuZXh0X3Rva2VuX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBsZXQgc291cmNlID0gQ3NzX3Rva2VuaXplci5zb3VyY2UgY3QgaW5cbiAgICBTb21lXG4gICAgICAoIFN0cmluZy5zdWIgc291cmNlIH5wb3M6aWRlbnRfc3RhcnQgfmxlbjppZGVudF9sZW5cbiAgICAgICwgU3RyaW5nLnJzdHJpcFxuICAgICAgICAgIChTdHJpbmcuc3ViIHNvdXJjZSB+cG9zOnZhbHVlX3N0YXJ0IH5sZW46KG5leHRfdG9rZW5fc3RhcnQgLSB2YWx1ZV9zdGFydCkpICkpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbiBjdCA9XG4gIG1hdGNoIGRlY2xhcmF0aW9uIGN0IHdpdGhcbiAgfCBTb21lIChmaWVsZCwgdmFsdWUpIC0+IGZpZWxkLCB2YWx1ZVxuICB8IE5vbmUgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJFeHBlY3RlZCA8ZGVjbGFyYXRpb24+XCJdXG47O1xuXG4oKiBBcyBwZXI6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc3R5bGUtYXR0ci9cbiAgIGRlY2xhcmF0aW9uLWxpc3RcbiAgIDogUyogZGVjbGFyYXRpb24/IFsgJzsnIFMqIGRlY2xhcmF0aW9uPyBdKlxuICAgO1xuKilcbmxldCBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBjdCA9XG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgbGV0IGFkZCBrdiA9XG4gICAgbWF0Y2gga3Ygd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoaywgdikgLT4gcmVzIDo9IChrLCB2KSA6OiAhcmVzXG4gIGluXG4gIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICBtYW55IGN0IChmdW4gY3QgLT5cbiAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgIHRoZW4gKFxuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGFkZCAoZGVjbGFyYXRpb24gY3QpO1xuICAgICAgdHJ1ZSlcbiAgICBlbHNlIGZhbHNlKTtcbiAgTGlzdC5yZXYgIXJlc1xuOztcblxubGV0IHBhcnNlIHBhcnNlcl9mIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKFRva2VuLmVxdWFsIChjdXJyZW50IGN0KSBDb21tZW50KSBkb1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lO1xuICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgbGV0IHJlcyA9IHBhcnNlcl9mIGN0IGluXG4gICAgZXhwZWN0IGN0IEVvZjtcbiAgICByZXMpXG47O1xuXG5sZXQgcHJpbnRfdG9rZW5zIHMgPVxuICBsZXQgY3QgPSBDc3NfdG9rZW5pemVyLmNyZWF0ZSBzIGluXG4gIHdoaWxlIENzc190b2tlbml6ZXIuKG5vdCAoVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIEVvZikpIGRvXG4gICAgcHJpbnRfcyAoQ3NzX3Rva2VuaXplci5Ub2tlbi5zZXhwX29mX3QgKENzc190b2tlbml6ZXIuY3VycmVudCBjdCkpO1xuICAgIENzc190b2tlbml6ZXIubmV4dCBjdFxuICBkb25lXG47O1xuXG5sZXQgdmFsaWRhdGVfdmFsdWUgPSBwYXJzZSBleHBlY3RfdmFsdWVcbmxldCBwYXJzZV9kZWNsYXJhdGlvbl9saXN0IHMgPSBwYXJzZSBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBzXG5cbmxldCB0ZXN0X3BhcnNlciBwIHNleHBfb2ZfYXJnIHMgPVxuICBsZXQgciA9IHBhcnNlIHAgcyBpblxuICBwcmludGYgIVwiJXMgLS0+ICV7c2V4cDphcmcgT3JfZXJyb3IudH1cXG5cIiBzIHJcbjs7XG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcIlwiID1cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIFwiMCA0cHggOHB4IDAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMTIpLCAwIDJweCA0cHggMCBcXFxuICAgICAgICAgUkdCQSh2YXIoLS1qcy10ZXh0LWNvbG9yLXJnYiksIDAuMDgpXCJcbiAgICAgIGluXG4gICAgICBwcmludF90b2tlbnMgdmFsdWU7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBXaGl0ZV9zcGFjZVxuICAgIEZ1bmN0aW9uXG4gICAgRnVuY3Rpb25cbiAgICBJZGVudFxuICAgIFJwYXJlblxuICAgIENvbW1hXG4gICAgV2hpdGVfc3BhY2VcbiAgICBOdW1iZXJcbiAgICBScGFyZW4gfH1dO1xuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgKHZhbGlkYXRlX3ZhbHVlIHZhbHVlIDogdW5pdCBPcl9lcnJvci50KV07XG4gICAgICBbJWV4cGVjdCB7fFxuICAgIChcInZhbGlkYXRlX3ZhbHVlIHZhbHVlXCIgKE9rICgpKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInZhbHVlc1wiID1cbiAgICAgIGxldCB0ZXN0ID0gdGVzdF9wYXJzZXIgZXhwZWN0X3ZhbHVlIFVuaXQuc2V4cF9vZl90IGluXG4gICAgICB0ZXN0IFwieFwiO1xuICAgICAgdGVzdCBcIjNcIjtcbiAgICAgIHRlc3QgXCIzaW5cIjtcbiAgICAgIHRlc3QgXCIzJVwiO1xuICAgICAgdGVzdCBcIiNmZmZcIjtcbiAgICAgIHRlc3QgXCIxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcIidIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJyZ2IoMCwwLDApXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgeCAtLT4gKE9rICgpKVxuICAgICAgMyAtLT4gKE9rICgpKVxuICAgICAgM2luIC0tPiAoT2sgKCkpXG4gICAgICAzJSAtLT4gKE9rICgpKVxuICAgICAgI2ZmZiAtLT4gKE9rICgpKVxuICAgICAgMSAwIGF1dG8gLS0+IChPayAoKSlcbiAgICAgICdIZWxsbyBXb3JsZCcgLS0+IChPayAoKSlcbiAgICAgIHJnYigwLDAsMCkgLS0+IChPayAoKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiAnSGVsbG8gV29ybGQnXCI7XG4gICAgICB0ZXN0IFwiY29udGVudDogZm9vO1wiO1xuICAgICAgKCogU2VtaSdzIGFyZSBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIGxpc3QgKilcbiAgICAgIHRlc3QgXCJjb250ZW50OiBiYXIgXCI7XG4gICAgICAoKiBidXQgd2hpdGVzcGFjZSBpcyBoYW5kbGVkIGluIGRlY2xhcmF0aW9uIChhbnkgcmVhbGx5KSAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgIGZsZXg6IDEgMCBhdXRvIC0tPiAoT2sgKGZsZXggXCIxIDAgYXV0b1wiKSlcbiAgICAgIGNvbnRlbnQ6ICdIZWxsbyBXb3JsZCcgLS0+IChPayAoY29udGVudCBcIidIZWxsbyBXb3JsZCdcIikpXG4gICAgICBjb250ZW50OiBmb287IC0tPiAoRXJyb3IgKFwiVW5leHBlY3RlZCB0b2tlblwiIChleHBlY3RlZCBFb2YpIChnb3QgU2VtaV9jb2xvbikpKVxuICAgICAgY29udGVudDogYmFyICAtLT4gKE9rIChjb250ZW50IGJhcikpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1bmljb2RlXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb24gWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddIGluXG4gICAgICB0ZXN0IFwiY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2J1wiO1xuICAgICAgcHJpbnRfZW5kbGluZSAoU2V4cC50b19zdHJpbmcgKFNleHAuQXRvbSBcIuKGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2XCIpKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgY29udGVudDogJ+KGkCDihpEg4oaSIOKGkyDihpQg4oaVIOKHqiDihrkg4qyIIOKGmCDin74g4oa2JyAtLT4gKE9rXG4gICAgIChjb250ZW50XG4gICAgICBcIidcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MidcIikpXG4gICAgXCJcXDIyNlxcMTM0XFwxNDQgXFwyMjZcXDEzNFxcMTQ1IFxcMjI2XFwxMzRcXDE0NiBcXDIyNlxcMTM0XFwxNDcgXFwyMjZcXDEzNFxcMTQ4IFxcMjI2XFwxMzRcXDE0OSBcXDIyNlxcMTM1XFwxNzAgXFwyMjZcXDEzNFxcMTg1IFxcMjI2XFwxNzJcXDEzNiBcXDIyNlxcMTM0XFwxNTIgXFwyMjZcXDE1OVxcMTkwIFxcMjI2XFwxMzRcXDE4MlwiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJkZWNsYXJhdGlvbiBsaXN0XCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfZGVjbGFyYXRpb25fbGlzdCBbJXNleHBfb2Y6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIGluXG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG9cIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0bztcIjtcbiAgICAgIHRlc3RcbiAgICAgICAgXCJiYWNrZ3JvdW5kOiAjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweFwiO1xuICAgICAgdGVzdCBcIjs7Ozs7XCI7XG4gICAgICB0ZXN0IFwiZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSBcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgZmxleDogMSAwIGF1dG87IC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikpKVxuICAgIGJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFwiaW1nX3RyZWUucG5nXCIpIG5vLXJlcGVhdCB0b3AgbGVmdDttYXJnaW4tbGVmdDogMjAwcHggLS0+IChPa1xuICAgICAoKGJhY2tncm91bmQgXCIjNWQ5YWIyIHVybChcXFwiaW1nX3RyZWUucG5nXFxcIikgbm8tcmVwZWF0IHRvcCBsZWZ0XCIpXG4gICAgICAobWFyZ2luLWxlZnQgMjAwcHgpKSlcbiAgICA7Ozs7OyAtLT4gKE9rICgpKVxuICAgIGZsZXg6IDEgMCBhdXRvIDs7IG90aGVyIDogc2EgIC0tPiAoT2sgKChmbGV4IFwiMSAwIGF1dG9cIikgKG90aGVyIHNhKSkpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQ29yZS5Db3JlX3N0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICgqKiAoZmllbGQgKiB2YWx1ZSkgbGlzdC4gIFdoZXJlIHZhbHVlIHNob3VsZCBiZSBlc2NhcGVkIC8gcXVvdGVkXG4gICAgICAgIGFzIG5lY2Vzc2FyeSBhcyBwZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNydWxlLXNldHMuICopXG4gICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gIGVuZFxuZW5kXG5cbm9wZW4gQ29yZVxuaW5jbHVkZSBTdGFibGUuVjFcblxudHlwZSBjc3NfZ2xvYmFsX3ZhbHVlcyA9XG4gIFsgYEluaGVyaXRcbiAgfCBgSW5pdGlhbFxuICBdXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA9IHJlZiAoZnVuIGRpZ2l0cyBmIC0+IHNwcmludGYgXCIlLipmXCIgZGlnaXRzIGYpXG5lbmRcblxubGV0IGYycyBkaWdpdHMgZiA9ICFQcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIGRpZ2l0cyBmXG5cbm1vZHVsZSBDb2xvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBSR0JBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHIgOiBpbnRcbiAgICAgICAgOyBnIDogaW50XG4gICAgICAgIDsgYiA6IGludFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5yIH5nIH5iID9hICgpID0geyByOyBnOyBiOyBhIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBIU0xBID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGggOiBpbnRcbiAgICAgICAgOyBzIDogUGVyY2VudC50XG4gICAgICAgIDsgbCA6IFBlcmNlbnQudFxuICAgICAgICA7IGEgOiBQZXJjZW50LnQgb3B0aW9uXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5oIH5zIH5sID9hICgpID0geyBoOyBzOyBsOyBhIH1cbiAgICBlbmRcblxuICAgIHR5cGUgdCA9XG4gICAgICBbIGBSR0JBIG9mIFJHQkEudFxuICAgICAgfCBgSFNMQSBvZiBIU0xBLnRcbiAgICAgIHwgYE5hbWUgb2Ygc3RyaW5nXG4gICAgICB8IGBIZXggb2Ygc3RyaW5nXG4gICAgICB8IGBWYXIgb2Ygc3RyaW5nXG4gICAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCB0b19zdHJpbmdfY3NzIDogWzwgdCBdIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBSR0JBIHsgUkdCQS5yOyBnOyBiOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gWyVzdHJpbmcgXCJyZ2IoJXtyI0ludH0sJXtnI0ludH0sJXtiI0ludH0pXCJdXG4gICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgIFslc3RyaW5nIFwicmdiYSgle3IjSW50fSwle2cjSW50fSwle2IjSW50fSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBIU0xBIHsgSFNMQS5oOyBzOyBsOyBhIH0gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFslc3RyaW5nXG4gICAgICAgICAgIFwiaHNsKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2xhKCV7aCNJbnR9LCV7ZjJzIDAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBzKX0lLCV7ZjJzIDAgXFxcbiAgICAgICAgICAgIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgbCl9JSwle2YycyAyIChQZXJjZW50LnRvX211bHQgcCl9KVwiXSlcbiAgICB8IGBOYW1lIG5hbWUgLT4gbmFtZVxuICAgIHwgYEhleCBoZXggLT4gaGV4XG4gICAgfCBgVmFyIHZhciAtPiBbJXN0cmluZyBcInZhcigle3Zhcn0pXCJdXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsaWdubWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExlZnRcbiAgICB8IGBSaWdodFxuICAgIHwgYENlbnRlciAoKiBob3Jpem9udGFsICopXG4gICAgfCBgVG9wXG4gICAgfCBgQm90dG9tXG4gICAgfCBgTWlkZGxlICgqIHZlcnRpY2FsICopXG4gICAgfCBgSnVzdGlmeSAoKiB0ZXh0LWFsaWduIChpbiBhZGRpdGlvbiB0byBbaG9yaXpvbnRhbF0pICopXG4gICAgfCBgU3VwZXIgKCogdmVydGljYWwgKilcbiAgICB8IGBTdWIgKCogdmVydGljYWwgKilcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEp1c3RpZnkgLT4gXCJqdXN0aWZ5XCJcbiAgICB8IGBUb3AgLT4gXCJ0b3BcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBNaWRkbGUgLT4gXCJtaWRkbGVcIlxuICAgIHwgYEJvdHRvbSAtPiBcImJvdHRvbVwiXG4gICAgfCBgU3VwZXIgLT4gXCJzdXBlclwiXG4gICAgfCBgU3ViIC0+IFwic3ViXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIExlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYFJhdyBvZiBzdHJpbmdcbiAgICB8IGBDaCBvZiBmbG9hdFxuICAgIHwgYFJlbSBvZiBmbG9hdFxuICAgIHwgYEVtIG9mIGludFxuICAgIHwgYEVtX2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgUGVyY2VudCBvZiBQZXJjZW50LnRcbiAgICB8IGBQdCBvZiBmbG9hdFxuICAgIHwgYFB4IG9mIGludFxuICAgIHwgYFB4X2Zsb2F0IG9mIGZsb2F0XG4gICAgfCBgVmggb2YgUGVyY2VudC50XG4gICAgfCBgVncgb2YgUGVyY2VudC50XG4gICAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICAgIF1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBSYXcgcyAtPiBzXG4gICAgfCBgQ2ggYyAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgY31jaFwiXVxuICAgIHwgYFJlbSBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXJlbVwiXVxuICAgIHwgYEVtIGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fWVtXCJdXG4gICAgfCBgRW1fZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1lbVwiXVxuICAgIHwgYFBlcmNlbnQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX0lXCJdXG4gICAgfCBgUHQgcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgcH1wdFwiXVxuICAgIHwgYFB4IGkgLT4gWyVzdHJpbmcgXCIle2kjSW50fXB4XCJdXG4gICAgfCBgUHhfZmxvYXQgZiAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgZn1weFwiXVxuICAgIHwgYFZoIHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dmhcIl1cbiAgICB8IGBWdyBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfXZ3XCJdXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcblxuICBsZXQgcGVyY2VudDEwMCA9IGBQZXJjZW50IChQZXJjZW50Lm9mX3BlcmNlbnRhZ2UgMTAwLilcbmVuZFxuXG5tb2R1bGUgQXV0b19vcl9sZW5ndGggPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBBdXRvXG4gICAgfCBMZW5ndGgudFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCAjTGVuZ3RoLnQgYXMgbCAtPiBMZW5ndGgudG9fc3RyaW5nX2NzcyBsXG4gIDs7XG5lbmRcblxubGV0IHZhbHVlX21hcCBvIH5mID0gT3B0aW9uLnZhbHVlX21hcCBvIH5kZWZhdWx0OlwiXCIgfmZcbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0ICggQD4gKSA9IGNvbWJpbmVcbmxldCBjb25jYXQgbCA9IExpc3QuY29uY2F0IGxcbmxldCB0b19zdHJpbmdfbGlzdCA9IEZuLmlkXG5cbmxldCB0b19zdHJpbmdfY3NzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4gKGZpZWxkLCB2YWx1ZSkgLT4gWyVzdHJpbmcgXCIle2ZpZWxkfTogJXt2YWx1ZX1cIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIjtcIlxuOztcblxubGV0IG9mX3N0cmluZ19jc3NfZXhuIHMgPSBDc3NfcGFyc2VyLnBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyB8PiBPcl9lcnJvci5va19leG5cblxuKCoqIGNyZWF0ZV9yYXcgY3JlYXRlcyBhIHNpbmdsZSBmaWVsZCwgdmFsdWUgcGFpci4gIEl0IGFzc3VtZXMgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZFxuICAgIGNzcyB2YWx1ZS4gIEFzIHN1Y2ggaXQgaXMgdW5zYWZlIHRvIHVzZSB3aXRoIGFyYml0cmFyeSB2YWx1ZSBzdHJpbmdzLiAgQnV0IGZvciB0aGVcbiAgICB2YXN0IG1ham9yaXR5IG9mIGNvbWJpbmF0b3JzIGluIHRoaXMgbW9kdWxlIGl0IGlzIHRoZSByaWdodCB0aGluZyB0byB1c2UsIGFzIHdlIGtub3dcbiAgICBieSBjb25zdHJ1Y3Rpb24gdGhhdCB0aGUgdmFsdWVzIGRvIG5vdCBuZWVkIHF1b3RpbmcgLyBlc2NhcGluZy4gKilcbmxldCBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWUgPSBbIGZpZWxkLCB2YWx1ZSBdXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHNob3VsZF92YWxpZGF0ZSA9IHJlZiBmYWxzZVxuZW5kXG5cbmxldCBjcmVhdGUgfmZpZWxkIH52YWx1ZSA9XG4gIGlmICFFeHBlcnQuc2hvdWxkX3ZhbGlkYXRlIHRoZW4gQ3NzX3BhcnNlci52YWxpZGF0ZV92YWx1ZSB2YWx1ZSB8PiBPcl9lcnJvci5va19leG47XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IGVtcHR5ID0gW11cbmxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmxldCBjcmVhdGVfcGxhY2VtZW50IG5hbWUgbGVuZ3RoID0gY3JlYXRlIH5maWVsZDpuYW1lIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbGVuZ3RoKVxubGV0IGxlZnQgPSBjcmVhdGVfcGxhY2VtZW50IFwibGVmdFwiXG5sZXQgdG9wID0gY3JlYXRlX3BsYWNlbWVudCBcInRvcFwiXG5sZXQgYm90dG9tID0gY3JlYXRlX3BsYWNlbWVudCBcImJvdHRvbVwiXG5sZXQgcmlnaHQgPSBjcmVhdGVfcGxhY2VtZW50IFwicmlnaHRcIlxuXG5sZXQgcG9zaXRpb24gP3RvcDp0cCA/Ym90dG9tOmJ0ID9sZWZ0Omx0ID9yaWdodDpydCBwb3MgPVxuICBsZXQgcG9zID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbWF0Y2ggcG9zIHdpdGhcbiAgICAgIHwgYFN0YXRpYyAtPiBcInN0YXRpY1wiXG4gICAgICB8IGBBYnNvbHV0ZSAtPiBcImFic29sdXRlXCJcbiAgICAgIHwgYFN0aWNreSAtPiBcInN0aWNreVwiXG4gICAgICB8IGBSZWxhdGl2ZSAtPiBcInJlbGF0aXZlXCJcbiAgICAgIHwgYEZpeGVkIC0+IFwiZml4ZWRcIlxuICAgIGluXG4gICAgY3JlYXRlIH5maWVsZDpcInBvc2l0aW9uXCIgfnZhbHVlXG4gIGluXG4gIGxldCBjb252ZXJ0IG9wdF9sIGYgPSBPcHRpb24udmFsdWVfbWFwIG9wdF9sIH5kZWZhdWx0OmVtcHR5IH5mIGluXG4gIGNvbmNhdCBbIHBvczsgY29udmVydCB0cCB0b3A7IGNvbnZlcnQgbHQgbGVmdDsgY29udmVydCBydCByaWdodDsgY29udmVydCBidCBib3R0b20gXVxuOztcblxubGV0IGJveF9zaXppbmcgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgQ29udGVudF9ib3ggLT4gXCJjb250ZW50LWJveFwiXG4gICAgfCBgQm9yZGVyX2JveCAtPiBcImJvcmRlci1ib3hcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYm94LXNpemluZ1wiIH52YWx1ZVxuOztcblxubGV0IGRpc3BsYXkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgSW5saW5lIC0+IFwiaW5saW5lXCJcbiAgICB8IGBCbG9jayAtPiBcImJsb2NrXCJcbiAgICB8IGBJbmxpbmVfYmxvY2sgLT4gXCJpbmxpbmUtYmxvY2tcIlxuICAgIHwgYExpc3RfaXRlbSAtPiBcImxpc3QtaXRlbVwiXG4gICAgfCBgVGFibGUgLT4gXCJ0YWJsZVwiXG4gICAgfCBgSW5saW5lX3RhYmxlIC0+IFwiaW5saW5lLXRhYmxlXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgRmxleCAtPiBcImZsZXhcIlxuICAgIHwgYElubGluZV9mbGV4IC0+IFwiaW5saW5lLWZsZXhcIlxuICAgIHwgYElubGluZV9ncmlkIC0+IFwiaW5saW5lLWdyaWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZGlzcGxheVwiIH52YWx1ZVxuOztcblxubGV0IHZpc2liaWxpdHkgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ2aXNpYmlsaXR5XCIgfnZhbHVlXG47O1xuXG50eXBlIG92ZXJmbG93ID1cbiAgWyBgVmlzaWJsZVxuICB8IGBIaWRkZW5cbiAgfCBgU2Nyb2xsXG4gIHwgYEF1dG9cbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBtYWtlX292ZXJmbG93IGZpZWxkIHYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHYgd2l0aFxuICAgIHwgYFZpc2libGUgLT4gXCJ2aXNpYmxlXCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYFNjcm9sbCAtPiBcInNjcm9sbFwiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZVxuOztcblxubGV0IG92ZXJmbG93ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93XCJcbmxldCBvdmVyZmxvd194ID0gbWFrZV9vdmVyZmxvdyBcIm92ZXJmbG93LXhcIlxubGV0IG92ZXJmbG93X3kgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteVwiXG5sZXQgel9pbmRleCBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJ6LWluZGV4XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpXG5sZXQgb3BhY2l0eSBpID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcGFjaXR5XCIgfnZhbHVlOihmMnMgNiBpKVxuXG5sZXQgY3JlYXRlX2xlbmd0aF9maWVsZCBmaWVsZCBsID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGwpXG47O1xuXG5sZXQgd2hpdGVfc3BhY2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFByZSAtPiBcInByZVwiXG4gICAgfCBgUHJlX2xpbmUgLT4gXCJwcmUtbGluZVwiXG4gICAgfCBgUHJlX3dyYXAgLT4gXCJwcmUtd3JhcFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlIH5maWVsZDpcIndoaXRlLXNwYWNlXCIgfnZhbHVlXG47O1xuXG50eXBlIGZvbnRfc3R5bGUgPVxuICBbIGBOb3JtYWxcbiAgfCBgSXRhbGljXG4gIHwgYE9ibGlxdWVcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF93ZWlnaHQgPVxuICBbIGBOb3JtYWxcbiAgfCBgQm9sZFxuICB8IGBCb2xkZXJcbiAgfCBgTGlnaHRlclxuICB8IGBOdW1iZXIgb2YgaW50XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG50eXBlIGZvbnRfdmFyaWFudCA9XG4gIFsgYE5vcm1hbFxuICB8IGBTbWFsbF9jYXBzXG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgZm9udF9zaXplID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImZvbnQtc2l6ZVwiXG5sZXQgZm9udF9mYW1pbHkgbCA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1mYW1pbHlcIiB+dmFsdWU6KFN0cmluZy5jb25jYXQgbCB+c2VwOlwiLFwiKVxuXG5sZXQgZm9udF9zdHlsZSBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYEl0YWxpYyAtPiBcIml0YWxpY1wiXG4gICAgfCBgT2JsaXF1ZSAtPiBcIm9ibGlxdWVcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC1zdHlsZVwiIH52YWx1ZVxuOztcblxubGV0IGZvbnRfd2VpZ2h0IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE51bWJlciBpIC0+IEludC50b19zdHJpbmcgaVxuICAgIHwgYEJvbGQgLT4gXCJib2xkXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYExpZ2h0ZXIgLT4gXCJsaWdodGVyXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgQm9sZGVyIC0+IFwiYm9sZGVyXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC13ZWlnaHRcIiB+dmFsdWVcbjs7XG5cbmxldCBib2xkID0gZm9udF93ZWlnaHQgYEJvbGRcblxubGV0IGZvbnRfdmFyaWFudCBzID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYFNtYWxsX2NhcHMgLT4gXCJzbWFsbC1jYXBzXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImZvbnQtdmFyaWFudFwiIH52YWx1ZVxuOztcblxubGV0IGZvbnQgfnNpemUgfmZhbWlseSA/c3R5bGUgP3dlaWdodCA/dmFyaWFudCAoKSA9XG4gIFsgU29tZSAoZm9udF9zaXplIHNpemUpXG4gIDsgU29tZSAoZm9udF9mYW1pbHkgZmFtaWx5KVxuICA7IE9wdGlvbi5tYXAgc3R5bGUgfmY6Zm9udF9zdHlsZVxuICA7IE9wdGlvbi5tYXAgd2VpZ2h0IH5mOmZvbnRfd2VpZ2h0XG4gIDsgT3B0aW9uLm1hcCB2YXJpYW50IH5mOmZvbnRfdmFyaWFudFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQgfmNvbG9yID0gY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihDb2xvci50b19zdHJpbmdfY3NzIGNvbG9yKVxubGV0IGNvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiY29sb3JcIiB+Y29sb3JcbmxldCBiYWNrZ3JvdW5kX2NvbG9yIGNvbG9yID0gY3JlYXRlX3dpdGhfY29sb3IgfmZpZWxkOlwiYmFja2dyb3VuZC1jb2xvclwiIH5jb2xvclxubGV0IGZpbGwgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJmaWxsXCIgfmNvbG9yXG5cbnR5cGUgc3RvcHMgPSAoUGVyY2VudC50ICogQ29sb3IudCkgbGlzdFxuXG50eXBlIGxpbmVhcl9ncmFkaWVudCA9XG4gIHsgZGlyZWN0aW9uIDogWyBgRGVnIG9mIGludCBdXG4gIDsgc3RvcHMgOiBzdG9wc1xuICB9XG5cbnR5cGUgcmFkaWFsX2dyYWRpZW50ID0geyBzdG9wcyA6IHN0b3BzIH1cblxudHlwZSBiYWNrZ3JvdW5kX2ltYWdlID1cbiAgWyBgVXJsIG9mIHN0cmluZ1xuICB8IGBMaW5lYXJfZ3JhZGllbnQgb2YgbGluZWFyX2dyYWRpZW50XG4gIHwgYFJhZGlhbF9ncmFkaWVudCBvZiByYWRpYWxfZ3JhZGllbnRcbiAgXVxuXG50eXBlIHRleHRfYWxpZ24gPVxuICBbIGBMZWZ0XG4gIHwgYFJpZ2h0XG4gIHwgYENlbnRlclxuICB8IGBKdXN0aWZ5XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG5sZXQgc3RvcHNfdG9fc3RyaW5nIHN0b3BzID1cbiAgTGlzdC5tYXAgc3RvcHMgfmY6KGZ1biAocGN0LCBjb2xvcikgLT5cbiAgICAoKiBOb3RlOiBQZXJjZW50LnRvX3N0cmluZyBwcm9kdWNlZCBlLmcuIFwiMHhcIiwgXCIxeFwiLCB3b24ndCB3b3JrIGhlcmUuICopXG4gICAgWyVzdHJpbmcgXCIle0NvbG9yLnRvX3N0cmluZ19jc3MgY29sb3J9ICV7ZjJzIDYgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwY3QpfSVcIl0pXG4gIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCBiYWNrZ3JvdW5kX2ltYWdlIHNwZWMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgYFVybCB1cmwgLT4gWyVzdHJpbmcgXCJ1cmwoJXt1cmx9KVwiXVxuICAgIHwgYExpbmVhcl9ncmFkaWVudCB7IGRpcmVjdGlvbiA9IGBEZWcgZGlyZWN0aW9uOyBzdG9wcyB9IC0+XG4gICAgICBbJXN0cmluZyBcImxpbmVhci1ncmFkaWVudCgle2RpcmVjdGlvbiNJbnR9ZGVnLCAle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gICAgfCBgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgfSAtPiBbJXN0cmluZyBcInJhZGlhbC1ncmFkaWVudCgle3N0b3BzX3RvX3N0cmluZyBzdG9wc30pXCJdXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYmFja2dyb3VuZC1pbWFnZVwiIH52YWx1ZVxuOztcblxubGV0IGNyZWF0ZV9hbGlnbm1lbnQgZmllbGQgYSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooQWxpZ25tZW50LnRvX3N0cmluZ19jc3MgKGEgOj4gQWxpZ25tZW50LnQpKVxuOztcblxubGV0IHRleHRfYWxpZ24gPSBjcmVhdGVfYWxpZ25tZW50IFwidGV4dC1hbGlnblwiXG5sZXQgaG9yaXpvbnRhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJob3Jpem9udGFsLWFsaWduXCJcbmxldCB2ZXJ0aWNhbF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ2ZXJ0aWNhbC1hbGlnblwiXG5cbmxldCBmbG9hdCBmID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCBmIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYFJpZ2h0IC0+IFwicmlnaHRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxvYXRcIiB+dmFsdWVcbjs7XG5cbmxldCBsaW5lX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJsaW5lLWhlaWdodFwiXG5sZXQgd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwid2lkdGhcIlxubGV0IG1pbl93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4td2lkdGhcIlxubGV0IG1heF93aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtd2lkdGhcIlxubGV0IGhlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJoZWlnaHRcIlxubGV0IG1pbl9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLWhlaWdodFwiXG5sZXQgbWF4X2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXgtaGVpZ2h0XCJcbmxldCBwYWRkaW5nX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXRvcFwiXG5sZXQgcGFkZGluZ19ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1ib3R0b21cIlxubGV0IHBhZGRpbmdfbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWxlZnRcIlxubGV0IHBhZGRpbmdfcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1yaWdodFwiXG5cbmxldCBwYWRkaW5nID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjpwYWRkaW5nX3RvcFxuICA7IG0gYm90dG9tIH5mOnBhZGRpbmdfYm90dG9tXG4gIDsgbSBsZWZ0IH5mOnBhZGRpbmdfbGVmdFxuICA7IG0gcmlnaHQgfmY6cGFkZGluZ19yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX3BhZGRpbmcgbCA9IHBhZGRpbmcgfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5sZXQgbWFyZ2luX3RvcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tdG9wXCJcbmxldCBtYXJnaW5fYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1ib3R0b21cIlxubGV0IG1hcmdpbl9sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1sZWZ0XCJcbmxldCBtYXJnaW5fcmlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXJpZ2h0XCJcblxubGV0IG1hcmdpbiA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6bWFyZ2luX3RvcFxuICA7IG0gYm90dG9tIH5mOm1hcmdpbl9ib3R0b21cbiAgOyBtIGxlZnQgfmY6bWFyZ2luX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOm1hcmdpbl9yaWdodFxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbmxldCB1bmlmb3JtX21hcmdpbiBsID0gbWFyZ2luIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IHJvd19nYXAgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicm93LWdhcFwiXG5sZXQgY29sdW1uX2dhcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJjb2x1bW4tZ2FwXCJcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGNvbnRlbnRfYWxpZ25tZW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGNvbnRlbnRfYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUgaXRlbV9hbGlnbm1lbnQgPVxuICBbIGBBdXRvXG4gIHwgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYEJhc2VsaW5lXG4gIHwgYFN0cmV0Y2hcbiAgXVxuXG5sZXQgaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gIHwgYFN0cmV0Y2ggLT4gXCJzdHJldGNoXCJcbjs7XG5cbnR5cGUganVzdGlmeV9jb250ZW50ID1cbiAgWyBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgU3BhY2VfYmV0d2VlblxuICB8IGBTcGFjZV9hcm91bmRcbiAgfCBgU3BhY2VfZXZlbmx5XG4gIF1cblxubGV0IGp1c3RpZnlfY29udGVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgRmxleF9zdGFydCAtPiBcImZsZXgtc3RhcnRcIlxuICB8IGBGbGV4X2VuZCAtPiBcImZsZXgtZW5kXCJcbiAgfCBgQ2VudGVyIC0+IFwiY2VudGVyXCJcbiAgfCBgU3BhY2VfYmV0d2VlbiAtPiBcInNwYWNlLWJldHdlZW5cIlxuICB8IGBTcGFjZV9hcm91bmQgLT4gXCJzcGFjZS1hcm91bmRcIlxuICB8IGBTcGFjZV9ldmVubHkgLT4gXCJzcGFjZS1ldmVubHlcIlxuOztcblxubGV0IGZsZXhfY29udGFpbmVyXG4gICAgICA/KGlubGluZSA9IGZhbHNlKVxuICAgICAgPyhkaXJlY3Rpb24gPSBgUm93KVxuICAgICAgPyh3cmFwID0gYE5vd3JhcClcbiAgICAgID9hbGlnbl9pdGVtc1xuICAgICAgP2FsaWduX2NvbnRlbnRcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgID9yb3dfZ2FwOnJnXG4gICAgICA/Y29sdW1uX2dhcDpjZ1xuICAgICAgKClcbiAgPVxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBsZXQgbWFrZV9kaXIgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC1kaXJlY3Rpb25cIiB+dmFsdWU6diBpblxuICAgIG1hdGNoIGRpcmVjdGlvbiB3aXRoXG4gICAgfCBgUm93IC0+IG1ha2VfZGlyIFwicm93XCJcbiAgICB8IGBSb3dfcmV2ZXJzZSAtPiBtYWtlX2RpciBcInJvdy1yZXZlcnNlXCJcbiAgICB8IGBDb2x1bW4gLT4gbWFrZV9kaXIgXCJjb2x1bW5cIlxuICAgIHwgYENvbHVtbl9yZXZlcnNlIC0+IG1ha2VfZGlyIFwiY29sdW1uLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IHdyYXAgPVxuICAgIGxldCBtYWtlX3dyYXAgdiA9IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOnYgaW5cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gbWFrZV93cmFwIFwibm93cmFwXCJcbiAgICB8IGBXcmFwIC0+IG1ha2Vfd3JhcCBcIndyYXBcIlxuICAgIHwgYFdyYXBfcmV2ZXJzZSAtPiBtYWtlX3dyYXAgXCJ3cmFwLXJldmVyc2VcIlxuICAgIHwgYERlZmF1bHQgLT4gZW1wdHlcbiAgaW5cbiAgbGV0IGFsaWduX2l0ZW1zID1cbiAgICBtYXRjaCBhbGlnbl9pdGVtcyB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1pdGVtc1wiIH52YWx1ZTooaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQgYWxpZ25fY29udGVudCA9XG4gICAgbWF0Y2ggYWxpZ25fY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tY29udGVudFwiIH52YWx1ZTooY29udGVudF9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQganVzdGlmeV9jb250ZW50ID1cbiAgICBtYXRjaCBqdXN0aWZ5X2NvbnRlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBlbXB0eVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImp1c3RpZnktY29udGVudFwiIH52YWx1ZTooanVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgYSlcbiAgaW5cbiAgbGV0IHJvd19nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOnJvd19nYXAgcmcgaW5cbiAgbGV0IGNvbHVtbl9nYXAgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OmVtcHR5IH5mOmNvbHVtbl9nYXAgY2cgaW5cbiAgY29uY2F0XG4gICAgWyBkaXNwbGF5IChpZiBpbmxpbmUgdGhlbiBgSW5saW5lX2ZsZXggZWxzZSBgRmxleClcbiAgICA7IGRpcmVjdGlvblxuICAgIDsgd3JhcFxuICAgIDsgYWxpZ25faXRlbXNcbiAgICA7IGFsaWduX2NvbnRlbnRcbiAgICA7IGp1c3RpZnlfY29udGVudFxuICAgIDsgY29sdW1uX2dhcFxuICAgIDsgcm93X2dhcFxuICAgIF1cbjs7XG5cbmxldCBmbGV4X2l0ZW0gP29yZGVyID8oYmFzaXMgPSBgQXV0bykgPyhzaHJpbmsgPSAxLikgfmdyb3cgKCkgPVxuICBsZXQgb3JkZXIgPVxuICAgIE9wdGlvbi5tYXAgb3JkZXIgfmY6KGZ1biBpIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwib3JkZXJcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gICAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgICB8PiBMaXN0LmpvaW5cbiAgaW5cbiAgbGV0IGZsZXggPVxuICAgIGxldCBiYXNpcyA9IEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgYmFzaXMgaW5cbiAgICBjcmVhdGVfcmF3IH5maWVsZDpcImZsZXhcIiB+dmFsdWU6WyVzdHJpbmcgXCIle2YycyA2IGdyb3d9ICV7ZjJzIDYgc2hyaW5rfSAle2Jhc2lzfVwiXVxuICBpblxuICBjb25jYXQgWyBmbGV4OyBvcmRlciBdXG47O1xuXG5sZXQgYWxpZ25fc2VsZiBhID1cbiAgbGV0IHZhbHVlID0gaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyBhIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYWxpZ24tc2VsZlwiIH52YWx1ZVxuOztcblxubGV0IHJlc2l6ZSAodmFsdWUgOiBbIGBOb25lIHwgYEJvdGggfCBgSG9yaXpvbnRhbCB8IGBWZXJ0aWNhbCB8IGNzc19nbG9iYWxfdmFsdWVzIF0pID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICB8IGBIb3Jpem9udGFsIC0+IFwiaG9yaXpvbnRhbFwiXG4gICAgfCBgVmVydGljYWwgLT4gXCJ2ZXJ0aWNhbFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJyZXNpemVcIiB+dmFsdWVcbjs7XG5cbmxldCBhbmltYXRpb24gfm5hbWUgfmR1cmF0aW9uID9kZWxheSA/ZGlyZWN0aW9uID9maWxsX21vZGUgP2l0ZXJfY291bnQgP3RpbWluZ19mdW5jdGlvbiAoKVxuICA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBsZXQgc3Bhbl90b19zdHJpbmcgcyA9IFslc3RyaW5nIFwiJXtmMnMgMiAoVGltZV9ucy5TcGFuLnRvX3NlYyBzKX1zXCJdIGluXG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIG0gZGlyZWN0aW9uIH5mOihmdW4gZCAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgICAgIHwgYFJldmVyc2UgLT4gXCJyZXZlcnNlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlIC0+IFwiYWx0ZXJuYXRlXCJcbiAgICAgICAgfCBgQWx0ZXJuYXRlX3JldmVyc2UgLT4gXCJhbHRlcm5hdGUtcmV2ZXJzZVwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRpcmVjdGlvblwiIH52YWx1ZSlcbiAgaW5cbiAgbGV0IGZpbGxfbW9kZSA9XG4gICAgbSBmaWxsX21vZGUgfmY6KGZ1biBmIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBmIHdpdGhcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBGb3J3YXJkcyAtPiBcImZvcndhcmRzXCJcbiAgICAgICAgfCBgQmFja3dhcmRzIC0+IFwiYmFja3dhcmRzXCJcbiAgICAgICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1maWxsLW1vZGVcIiB+dmFsdWUpXG4gIGluXG4gIFsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tbmFtZVwiIH52YWx1ZTpuYW1lKVxuICA7IFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBkdXJhdGlvbikpXG4gIDsgbSBkZWxheSB+ZjooZnVuIHMgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGVsYXlcIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIHMpKVxuICA7IG0gaXRlcl9jb3VudCB+ZjooZnVuIGkgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgOyBtIHRpbWluZ19mdW5jdGlvbiB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiB+dmFsdWUpXG4gIDsgZGlyZWN0aW9uXG4gIDsgZmlsbF9tb2RlXG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxudHlwZSB1c2VyX3NlbGVjdCA9XG4gIFsgYEFsbFxuICB8IGBBdXRvXG4gIHwgYE5vbmVcbiAgfCBgVGV4dFxuICBdXG5cbmxldCB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQWxsIC0+IFwiYWxsXCJcbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYFRleHQgLT4gXCJ0ZXh0XCJcbjs7XG5cbmxldCB1c2VyX3NlbGVjdCBzID1cbiAgbGV0IHZhbHVlID0gdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyBzIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidXNlci1zZWxlY3RcIiB+dmFsdWVcbjs7XG5cblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidG9fc3RyaW5nX2NzcyAtPiBvZl9zdHJpbmdfY3NzX2V4biAtPiB0b19zdHJpbmdfY3NzXCIgPVxuICAgICAgbGV0IHQgY3NzID1cbiAgICAgICAgbGV0IHMgPSB0b19zdHJpbmdfY3NzIGNzcyBpblxuICAgICAgICBsZXQgczIgPSB0b19zdHJpbmdfY3NzIChvZl9zdHJpbmdfY3NzX2V4biBzKSBpblxuICAgICAgICBwcmludF9lbmRsaW5lIHM7XG4gICAgICAgIHByaW50X2VuZGxpbmUgczJcbiAgICAgIGluXG4gICAgICB0IChmbGV4X2l0ZW0gfmdyb3c6MS4wICgpIEA+IG92ZXJmbG93IGBTY3JvbGwpO1xuICAgICAgdCAoZmxleF9jb250YWluZXIgfmlubGluZTp0cnVlIH5kaXJlY3Rpb246YENvbHVtbiAoKSBAPiBib3JkZXIgfnN0eWxlOmBEYXNoZWQgKCkpO1xuICAgICAgdCAoY29sb3IgKGBSR0JBIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6MTAwIH5iOjEwMCAoKSkpKTtcbiAgICAgIHRcbiAgICAgICAgKGNvbG9yXG4gICAgICAgICAgIChgSFNMQVxuICAgICAgICAgICAgICAoQ29sb3IuSFNMQS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgfmg6MTAwXG4gICAgICAgICAgICAgICAgIH5zOihQZXJjZW50Lm9mX211bHQgMC43NSlcbiAgICAgICAgICAgICAgICAgfmw6KFBlcmNlbnQub2ZfbXVsdCAwLjYwKVxuICAgICAgICAgICAgICAgICAoKSkpKTtcbiAgICAgIHQgKGNyZWF0ZSB+ZmllbGQ6XCJjb250ZW50XCIgfnZhbHVlOnt8XCI7XCJ8fSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGZsZXg6IDEuMDAwMDAwIDEuMDAwMDAwIGF1dG87b3ZlcmZsb3c6IHNjcm9sbFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb250ZW50OiBcIjtcIlxuICAgIGNvbnRlbnQ6IFwiO1wiIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJncmFkaWVudHNcIiA9XG4gICAgICBsZXQgcCB4ID0gUGVyY2VudC5vZl9tdWx0IHggaW5cbiAgICAgIGxldCBjIHMgPSBgTmFtZSBzIGluXG4gICAgICBsZXQgdCBjc3MgPSBwcmludF9lbmRsaW5lICh0b19zdHJpbmdfY3NzIGNzcykgaW5cbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBMaW5lYXJfZ3JhZGllbnRcbiAgICAgICAgICAgICAgeyBkaXJlY3Rpb24gPSBgRGVnIDkwXG4gICAgICAgICAgICAgIDsgc3RvcHMgPVxuICAgICAgICAgICAgICAgICAgWyBwIDAuLCBjIFwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuMiwgYyBcIiNmZjAwMDBcIlxuICAgICAgICAgICAgICAgICAgOyBwIDAuNCwgYyBcInJlZFwiXG4gICAgICAgICAgICAgICAgICA7ICggcCAxLlxuICAgICAgICAgICAgICAgICAgICAsIGBSR0JBXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjUwIH5iOjMwIH5hOihQZXJjZW50Lm9mX211bHQgMC43NSkgKCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBibGFjayAwLjAwMDAwMCUsICNmZjAwMDAgMjAuMDAwMDAwJSwgcmVkIDQwLjAwMDAwMCUsIHJnYmEoMTAwLDUwLDMwLDAuNzUpIDEwMC4wMDAwMDAlKSB8fV07XG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgUmFkaWFsX2dyYWRpZW50IHsgc3RvcHMgPSBbIHAgMC4sIGMgXCJibGFja1wiOyBwIDEuLCBjIFwicmVkXCIgXSB9KSk7XG4gICAgICBbJWV4cGVjdCB7fCBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoYmxhY2sgMC4wMDAwMDAlLCByZWQgMTAwLjAwMDAwMCUpIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbmxldCB0b19qc19zdHJpbmcgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9TdHJpbmdcbmxldCB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRml4ZWQgZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9QcmVjaXNpb24gZGlnaXRzXG5sZXQgdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvRXhwb25lbnRpYWxcbmxldCB0b19zdHJpbmcgdmFsdWUgPSB0b19qc19zdHJpbmcgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG9wZW4gQ29yZSBpblxuICBsZXQgcHJpbnQgZiA9IHByaW50ZiBcIiVzXCIgKHRvX3N0cmluZyBmKSBpblxuICBwcmludCAxLjtcbiAgWyVleHBlY3Qge3wgMSB8fV07XG4gIHByaW50IEZsb2F0Lm5hbjtcbiAgWyVleHBlY3Qge3wgTmFOIHx9XTtcbiAgcHJpbnQgRmxvYXQuaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IEluZmluaXR5IHx9XTtcbiAgcHJpbnQgRmxvYXQubmVnX2luZmluaXR5O1xuICBbJWV4cGVjdCB7fCAtSW5maW5pdHkgfH1dO1xuICBwcmludCAwLjAwMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxZS04IHx9XTtcbiAgcHJpbnQgKC0xLik7XG4gIFslZXhwZWN0IHt8IC0xIHx9XTtcbiAgcHJpbnQgMS4wMDAwMDAxO1xuICBbJWV4cGVjdCB7fCAxLjAwMDAwMDEgfH1dXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5pbmNsdWRlIFVpX2VmZmVjdFxuXG4oKiBBbGwgdmlzaWJpbGl0eSBoYW5kbGVycyBzZWUgYWxsIGV2ZW50cywgc28gYSBzaW1wbGUgbGlzdCBpcyBlbm91Z2guICAqKVxubGV0IHZpc2liaWxpdHlfaGFuZGxlcnMgOiAodW5pdCAtPiB1bml0KSBsaXN0IHJlZiA9IHJlZiBbXVxuXG5tb2R1bGUgdHlwZSBWaXNpYmlsaXR5X2hhbmRsZXIgPSBzaWdcbiAgdmFsIGhhbmRsZSA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBEZWZpbmVfdmlzaWJpbGl0eSAoVkggOiBWaXNpYmlsaXR5X2hhbmRsZXIpID0gc3RydWN0XG4gIGxldCAoKSA9IHZpc2liaWxpdHlfaGFuZGxlcnMgOj0gVkguaGFuZGxlIDo6ICF2aXNpYmlsaXR5X2hhbmRsZXJzXG5lbmRcblxudHlwZSBfIHQgKz1cbiAgfCBWaWV3cG9ydF9jaGFuZ2VkXG4gIHwgU3RvcF9wcm9wYWdhdGlvblxuICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uXG4gIHwgUHJldmVudF9kZWZhdWx0XG5cbmxldCBzZXF1ZW5jZV9hc19zaWJsaW5nIGxlZnQgfnVubGVzc19zdG9wcGVkID1cbiAgbGV0IHJlYyBjb250YWluc19zdG9wID0gZnVuY3Rpb25cbiAgICB8IE1hbnkgZXMgLT4gTGlzdC5leGlzdHMgZXMgfmY6Y29udGFpbnNfc3RvcFxuICAgIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBpZiBjb250YWluc19zdG9wIGxlZnQgdGhlbiBsZWZ0IGVsc2UgVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyB1bmxlc3Nfc3RvcHBlZCAoKSBdXG47O1xuXG4oKiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgZG9tIGV2ZW50IGhlcmUgc28gdGhhdFxuICAgbW92ZW1lbnQgYmV0d2VlbiBbVmRvbS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0gYW5kXG4gICBbVWlfY29uY3JldGUuRWZmZWN0LkV4cGVydC5oYW5kbGVdIGtlZXBzIHRoZSBvcmlnaW5hbFxuICAgZG9tIGV2ZW50IGFyb3VuZC4gKilcbmxldCBjdXJyZW50X2RvbV9ldmVudCA9IHJlZiBOb25lXG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgVmlld3BvcnRfY2hhbmdlZCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IExpc3QuaXRlciAhdmlzaWJpbGl0eV9oYW5kbGVycyB+ZjooZnVuIGYgLT4gZiAoKSkpXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBQcmV2ZW50X2RlZmF1bHQpKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tLnByZXZlbnREZWZhdWx0KVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuID0gRXhwZXJ0LmhhbmRsZVxuXG4gIGxldCBoYW5kbGUgZG9tX2V2ZW50IGV2ZW50ID1cbiAgICBsZXQgb2xkID0gIWN1cnJlbnRfZG9tX2V2ZW50IGluXG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gU29tZSAoZG9tX2V2ZW50IDo+IERvbV9odG1sLmVsZW1lbnQgRG9tLmV2ZW50IEpzLnQpO1xuICAgIEV4cGVydC5oYW5kbGUgZXZlbnQ7XG4gICAgY3VycmVudF9kb21fZXZlbnQgOj0gb2xkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEpzX29mX29jYW1sXG5cbm1vZHVsZSB0eXBlIFMgPSBIb29rc19pbnRmLlNcbm1vZHVsZSB0eXBlIElucHV0ID0gSG9va3NfaW50Zi5JbnB1dFxuXG5sZXQgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBpZCA9IERvbV9odG1sLndpbmRvdyMjY2FuY2VsQW5pbWF0aW9uRnJhbWUgaWRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGYgPVxuICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSAoSnMud3JhcF9jYWxsYmFjayBmKVxuOztcblxubW9kdWxlIEV4dHJhID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyB0eXBlX2lkIDogJ2EgVHlwZV9lcXVhbC5JZC50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICAgIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHsgdHlwZV9pZDsgdmFsdWUgfSkgPSBUeXBlX2VxdWFsLklkLnRvX3NleHAgdHlwZV9pZCB2YWx1ZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgVCA6XG4gICAgICB7IGlucHV0IDogJ2lucHV0XG4gICAgICA7IGlucHV0X2lkIDogJ2lucHV0IFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBjb21iaW5lX2lucHV0cyA6ICdpbnB1dCAtPiAnaW5wdXQgLT4gJ2lucHV0XG4gICAgICA7IGluaXQgOlxuICAgICAgICAgICdpbnB1dFxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IHVwZGF0ZSA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgICAgICAtPiBEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgOyBkZXN0cm95IDpcbiAgICAgICAgICAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+IHVuaXRcbiAgICAgIDsgaWQgOiAoJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGUpIENvcmUuVHlwZV9lcXVhbC5JZC50XG4gICAgICB9XG4gICAgICAtPiB0XG5cbmxldCBnZW5lcmljX2hvb2sgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiR2VuZXJpY0hvb2tcIikpXG5cbmxldCBtYWtlX2hvb2sgfmNvbWJpbmVfaW5wdXRzIH5pbml0IH5leHRyYTooaW5wdXQsIGlucHV0X2lkKSB+dXBkYXRlIH5kZXN0cm95IH5pZCA9XG4gIFQgeyBpbml0OyBjb21iaW5lX2lucHV0czsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkIH1cbjs7XG5cbmxldCBwYWNrIChUIHsgaW5pdDsgaW5wdXQ7IGlucHV0X2lkOyB1cGRhdGU7IGRlc3Ryb3k7IGlkOyBfIH0pID1cbiAgbGV0IHdyYXAgYSA9IGEgfD4gSnMud3JhcF9jYWxsYmFjayB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBpbml0ID0gd3JhcCAoaW5pdCBpbnB1dCkgaW5cbiAgbGV0IHVwZGF0ZSA9IHdyYXAgKHVwZGF0ZSBpbnB1dCkgaW5cbiAgbGV0IGRlc3Ryb3kgPSB3cmFwIGRlc3Ryb3kgaW5cbiAgbGV0IGdlbmVyaWNfaG9vayA9IExhenkuZm9yY2UgZ2VuZXJpY19ob29rIGluXG4gIGxldCBleHRyYSA9IEV4dHJhLlQgeyB0eXBlX2lkID0gaW5wdXRfaWQ7IHZhbHVlID0gaW5wdXQgfSBpblxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICBnZW5lcmljX2hvb2tcbiAgICBbfCBpbml0OyB1cGRhdGU7IGRlc3Ryb3k7IGlkIHw+IEpzLlVuc2FmZS5pbmplY3Q7IGV4dHJhIHw+IEpzLlVuc2FmZS5pbmplY3QgfF1cbjs7XG5cbmxldCBjb21iaW5lIChUIGxlZnQpIChUIHJpZ2h0KSA9XG4gIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGxlZnQuaW5wdXRfaWQgcmlnaHQuaW5wdXRfaWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBlcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiaG9va3MgZG8gbm90IGhhdmUgdGhlIHNhbWUgdHlwZSwgc28gdGhleSBjYW5ub3QgYmUgY29tYmluZWQ7IHRha2luZyB0aGUgc2Vjb25kIFxcXG4gICAgICAgICBvZiB0aGUgdHdvXCJdO1xuICAgIFQgcmlnaHRcbiAgfCBTb21lIFQgLT4gVCB7IHJpZ2h0IHdpdGggaW5wdXQgPSByaWdodC5jb21iaW5lX2lucHV0cyBsZWZ0LmlucHV0IHJpZ2h0LmlucHV0IH1cbjs7XG5cbm1vZHVsZSBNYWtlIChTIDogUykgPSBzdHJ1Y3RcbiAgbGV0IGlucHV0X2FuZF9zdGF0ZV9pZCA9XG4gICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiAoZnVuIChpbnB1dCwgX2FuaW1hdGlvbl9pZCwgc3RhdGUpIC0+XG4gICAgICBbJXNleHBfb2Y6IFMuSW5wdXQudCAqIG9wYXF1ZV0gKGlucHV0LCBzdGF0ZSkpXG4gIDs7XG5cbiAgbGV0IGlucHV0X2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJcIiBTLklucHV0LnNleHBfb2ZfdFxuXG4gIGxldCBpbml0IGlucHV0IGVsZW1lbnQgPVxuICAgIGxldCBzdGF0ZSA9IFMuaW5pdCBpbnB1dCBlbGVtZW50IGluXG4gICAgbGV0IGFuaW1hdGlvbl9pZCA9XG4gICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSAoZnVuIF8gLT4gUy5vbl9tb3VudCBpbnB1dCBzdGF0ZSBlbGVtZW50KVxuICAgIGluXG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgdXBkYXRlIGlucHV0IChvbGRfaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGUpIGVsZW1lbnQgPVxuICAgIFMudXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dDppbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgIGlucHV0LCBhbmltYXRpb25faWQsIHN0YXRlXG4gIDs7XG5cbiAgbGV0IGRlc3Ryb3kgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgY2FuY2VsX2FuaW1hdGlvbl9mcmFtZSBhbmltYXRpb25faWQ7XG4gICAgUy5kZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBpbnB1dCA9XG4gICAgbWFrZV9ob29rXG4gICAgICB+ZXh0cmE6KGlucHV0LCBpbnB1dF9pZClcbiAgICAgIH5jb21iaW5lX2lucHV0czpTLklucHV0LmNvbWJpbmVcbiAgICAgIH5pZDppbnB1dF9hbmRfc3RhdGVfaWRcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlXG4gICAgICB+ZGVzdHJveVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCB0eXBlX2lkID0gaW5wdXRfaWRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBFeHRyYSA9IEV4dHJhXG5lbmRcbiIsIm9wZW4hIEpzX29mX29jYW1sXG5vcGVuISBKc1xuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIG1hcCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IG1ldGhcbiAgbWV0aG9kIGdldCA6ICdhIC0+ICdiIE9wdGRlZi50IG1ldGhcbiAgbWV0aG9kIGRlbGV0ZSA6ICdhIC0+IHVuaXQgbWV0aFxuZW5kXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIG1hcCBKcy50XG5cbmxldCBtYXAgOiB1bml0IC0+ICgnYSwgJ2IpIG1hcCBKcy50IEpzLmNvbnN0ciA9IGZ1biAoKSAtPiBVbnNhZmUuZ2xvYmFsIyMuX01hcFxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG1hcCA9IG1hcCAoKSBpblxuICBuZXclanMgbWFwXG47O1xuXG5sZXQgc2V0IHQgYSBiID0gdCMjc2V0IGEgYlxubGV0IGdldCB0IGEgPSBKcy5PcHRkZWYudG9fb3B0aW9uICh0IyNnZXQgYSlcbmxldCBkZWxldGUgdCBhID0gdCMjZGVsZXRlIGFcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgSnNfb2JqZWN0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEpzLlVuc2FmZS5hbnlcblxuICBsZXQgZW1wdHlfb2JqICgpID0gSnMuVW5zYWZlLm9iaiBbfHxdXG4gIGxldCBzZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWUgPSBKcy5VbnNhZmUuc2V0IHQgKEpzLnN0cmluZyBuYW1lKSB2YWx1ZVxuICBsZXQgZ2V0X3Byb3BfYXNjaWkgdCBuYW1lID0gSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSlcbiAgbGV0IGhhc19wcm9wZXJ0eSB0IG5hbWUgPSBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCB0IChKcy5zdHJpbmcgbmFtZSkpXG4gIGxldCBpc191bmRlZmluZWQgYSA9IG5vdCAoSnMuT3B0ZGVmLnRlc3QgYSlcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnNfb2JqZWN0LnRcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IEpzX29iamVjdC5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IEpzX29iamVjdC5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IEpzX29iamVjdC5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIEpzX29iamVjdC5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIEpzX29iamVjdC5oYXNfcHJvcGVydHkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIEpzX29iamVjdC5pc191bmRlZmluZWQgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKVxuICAgICAgdGhlbiBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgdCBcImF0dHJpYnV0ZXNcIiAoSnNfb2JqZWN0LmVtcHR5X29iaiAoKSk7XG4gICAgICBKc19vYmplY3Quc2V0X3Byb3BfYXNjaWkgKEpzX29iamVjdC5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lIHZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSB2aXJ0dWFsX2RvbV9ub2RlXG50eXBlIHZpcnR1YWxfZG9tX3BhdGNoXG5cbm1vZHVsZSBWaXJ0dWFsX2RvbSA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIHZpcnR1YWxfZG9tID0gb2JqZWN0XG4gICAgbWV0aG9kIF9WTm9kZSA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX1ZUZXh0IDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpIEpzLmNvbnN0ciBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIGRpZmYgOlxuICAgICAgdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCBwYXRjaCA6XG4gICAgICBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHN2ZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnRcbiAgICAgICAtPiBBdHRycy50XG4gICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQpXG4gICAgICAgIEpzLmNvbnN0clxuICAgICAgICBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCB2aXJ0dWFsX2RvbSA6IHZpcnR1YWxfZG9tIEpzLnQgPSBKcy5VbnNhZmUuZ2xvYmFsICMjLiBWaXJ0dWFsRG9tXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgb3BlbiBWaXJ0dWFsX2RvbVxuXG4gIHR5cGUgdCA9IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuXG4gIGxldCB0b19kb20gOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gdm5vZGUgLT4gdmlydHVhbF9kb20jI2NyZWF0ZUVsZW1lbnQgdm5vZGVcbiAgOztcblxuICBsZXQgbm9kZVxuICAgIDogIHN0cmluZyAtPiBBdHRycy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHN0cmluZyBvcHRpb25cbiAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudFxuICAgID1cbiAgICBmdW4gdGFnIGF0dHJzIGNoaWxkcmVuIGtleSAtPlxuICAgICAgbGV0IHRhZyA9IEpzLnN0cmluZyB0YWcgaW5cbiAgICAgIGxldCBrZXkgPVxuICAgICAgICBtYXRjaCBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSnMuT3B0ZGVmLmVtcHR5XG4gICAgICAgIHwgU29tZSBrZXkgLT4gSnMuT3B0ZGVmLnJldHVybiAoSnNfb2Zfb2NhbWwuSnMuc3RyaW5nIGtleSlcbiAgICAgIGluXG4gICAgICBsZXQgdm5vZGUgPSB2aXJ0dWFsX2RvbSMjLl9WTm9kZSBpblxuICAgICAgbmV3JWpzIHZub2RlIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgc3ZnXG4gICAgOiAgc3RyaW5nIC0+IEF0dHJzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50XG4gICAgPVxuICAgIGZ1biB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5IC0+XG4gICAgICBsZXQgdGFnID0gSnMuc3RyaW5nIHRhZyBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgICAgaW5cbiAgICAgIGxldCB2c3ZnID0gdmlydHVhbF9kb20jIy5zdmcgaW5cbiAgICAgIG5ldyVqcyB2c3ZnIHRhZyBhdHRycyBjaGlsZHJlbiBrZXlcbiAgOztcblxuICBsZXQgdGV4dCBzID1cbiAgICBsZXQgdnRleHQgPSB2aXJ0dWFsX2RvbSMjLl9WVGV4dCBpblxuICAgIG5ldyVqcyB2dGV4dCAoSnMuc3RyaW5nIHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIG9wZW4gVmlydHVhbF9kb21cblxuICB0eXBlIHQgPSB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50XG5cbiAgbGV0IGRpZmYgOiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgPVxuICAgIGZ1biBhIGIgLT4gdmlydHVhbF9kb20jI2RpZmYgYSBiXG4gIDs7XG5cbiAgbGV0IHBhdGNoIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50ID1cbiAgICBmdW4gZWxlbWVudCB2bm9kZSAtPiB2aXJ0dWFsX2RvbSMjcGF0Y2ggZWxlbWVudCB2bm9kZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID0gZGlmZiBwcmV2aW91cyBjdXJyZW50XG4gIGxldCBhcHBseSA9IHBhdGNoXG5cbiAgbGV0IGlzX2VtcHR5IDogdCAtPiBib29sID1cbiAgICBsZXQgZiA9XG4gICAgICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICBpblxuICAgIGZ1biAodCA6IHQpIC0+IEpzLlVuc2FmZS5mdW5fY2FsbCBmIFt8IEpzLlVuc2FmZS5pbmplY3QgdCB8XSB8PiBKcy50b19ib29sXG4gIDs7XG5lbmRcblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9IG9iamVjdFxuICAgIGNvbnN0cmFpbnQgJ2VsZW1lbnQgPSAjRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICgqIHZpcnR1YWwtZG9tIGNvbnNpZGVycyB0d28gd2lkZ2V0cyBvZiBiZWluZyBvZiB0aGUgc2FtZSBcImtpbmRcIiBpZiBlaXRoZXJcbiAgICAgICBvZiB0aGUgZm9sbG93aW5nIGhvbGRzOlxuXG4gICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgIChJIHRoaW5rIHRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdmlydHVhbC1kb20gYW5kIGhhdmUgZmllbGQgYW4gaXNzdWVcbiAgICAgICBvbiBnaXRodWI6IFtodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2lzc3Vlcy8zODBdKVxuXG4gICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgd2lkZ2V0cyBpbiB0aGUgdXN1YWwgc3R5bGUgaW4gSmF2YXNjcmlwdCwgc2luY2UgdGhlIFtpbml0XSBtZXRob2Qgd2lsbCBiZSBkZWZpbmVkXG4gICAgICAgb24gYSBwcm90b3R5cGUsIGJ1dCBpcyBub3QgdHJ1ZSBpbiB0aGlzIGJpbmRpbmcgYXMgaXQgaXMgcmVkZWZpbmVkIGZvciBlYWNoXG4gICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgIFNvLCB3ZSBnbyB3aXRoIG9wdGlvbiAxIGFuZCBtdXN0IGhhdmUgYSB0cml2aWFsIGZpZWxkIGNhbGxlZCBbbmFtZV0uXG4gICAgKilcbiAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICBtZXRob2QgaWQgOiAoJ3MgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50IEpzLnByb3BcbiAgICBtZXRob2Qgc3RhdGUgOiAncyBKcy5wcm9wXG4gICAgbWV0aG9kIHZkb21Gb3JUZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBpbmZvIDogU2V4cC50IExhenkudCBvcHRpb24gSnMucHJvcFxuICAgIG1ldGhvZCBkZXN0cm95IDogKCdlbGVtZW50IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICgoJ290aGVyX3N0YXRlLCAnb3RoZXJfZWxlbWVudCkgd2lkZ2V0IEpzLnQgLT4gJ2VsZW1lbnQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICBlbmRcblxuICAoKiBXZSBtb2RlbCBKUyBsZXZlbCBvYmplY3RzIGhlcmUgc28gdGhlcmUgaXMgYSBsb3Qgb2YgdGhyb3dpbmcgYXdheSBvZiB0eXBlXG4gICAgIGluZm9ybWF0aW9uLiAgV2UgY291bGQgcG9zc2libHkgdHJ5IHRvIHJlZGlzY292ZXIgbW9yZSBvZiBpdC4gIE9yIG1heWJlIHdlXG4gICAgIHNob3VsZCBzZWUgaWYgd2UgY2FuIGdldCByaWQgV2lkZ2V0IGNvbXBsZXRlbHkuXG4gICAgIHRoZSB1bml0IHR5cGUgcGFyYW1ldGVycyBoZXJlIGFyZSBub3QgYWN0dWFsbHkgdW5pdCwgYnV0IHBhcnQgb2ZcbiAgICAgdGhlIHR5cGUgaW5mbyB3ZSBoYXZlIHRocm93biBhd2F5IGludG8gb3VyIGRhbmNlXG4gICAgIHdpdGggSlMgKilcbiAgdHlwZSB0ID0gTm9kZS50XG5cbiAgKCogaGVyZSBpcyBob3cgd2UgdGhyb3cgYXdheSB0eXBlIGluZm9ybWF0aW9uLiAgT3VyIGdvb2Qgb2xkIGZyaWVuZCBPYmoubWFnaWMsXG4gICAgIGJ1dCBjb25zdHJhaW5lZCBhIGxpdHRsZSBiaXQgKilcbiAgbGV0IG5vZGVfb2Zfd2lkZ2V0IDogKF8sIF8pIHdpZGdldCBKcy50IC0+IE5vZGUudCA9IFN0ZGxpYi5PYmoubWFnaWNcblxuICBtb2R1bGUgU3RhdGVfa2VlcGVyID0gc3RydWN0XG4gICAgdHlwZSBib3ggPSBUIDogKCdhICogXykgVHlwZV9lcXVhbC5JZC50ICogJ2EgLT4gYm94XG5cbiAgICBsZXQgdCA6IChKcy5VbnNhZmUuYW55LCBib3gpIEpzX21hcC50ID0gSnNfbWFwLmNyZWF0ZSAoKVxuICAgIGxldCBzZXQgfmlkIGVsZW1lbnQgc3RhdGUgPSBKc19tYXAuc2V0IHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCkgKFQgKGlkLCBzdGF0ZSkpXG5cbiAgICBsZXQgZ2V0IDogdHlwZSBhIGIuIGlkOihhICogYikgVHlwZV9lcXVhbC5JZC50IC0+IF8gLT4gYSA9XG4gICAgICBmdW4gfmlkIGVsZW1lbnQgLT5cbiAgICAgIGxldCBlbGVtZW50ID0gSnMuVW5zYWZlLmluamVjdCBlbGVtZW50IGluXG4gICAgICBtYXRjaCBKc19tYXAuZ2V0IHQgZWxlbWVudCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkX3NleHAgPSBUeXBlX2VxdWFsLklkLnNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIikgaWQgaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJCVUc6IGVsZW1lbnQgc3RhdGUgbm90IGZvdW5kXCIgKGlkX3NleHAgOiBTZXhwLnQpXVxuICAgICAgfCBTb21lIChUIChmX2lkLCBzdGF0ZSkpIC0+XG4gICAgICAgIGxldCBUID0gVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGlkIGZfaWQgaW5cbiAgICAgICAgc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGRlbGV0ZSBlbGVtZW50ID0gSnNfbWFwLmRlbGV0ZSB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpXG4gIGVuZFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgKHR5cGUgcylcbiAgICAgICAgPyh2ZG9tX2Zvcl90ZXN0aW5nIDogTm9kZS50IExhenkudCBvcHRpb24pXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMudmRvbUZvclRlc3RpbmcgOj0gdmRvbV9mb3JfdGVzdGluZztcbiAgICBvYmojIy5pbml0XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgczAsIGRvbV9ub2RlID0gaW5pdCAoKSBpblxuICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUgczA7XG4gICAgICBkb21fbm9kZSk7XG4gICAgb2JqIyMudXBkYXRlXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIHByZXYgZG9tX25vZGUgLT5cbiAgICAgICgqIFRoZSBbdXBkYXRlXSBtZXRob2Qgb2YgW29ial0gaXMgb25seSBjYWxsZWQgYnkgdmlydHVhbC1kb20gYWZ0ZXIgaXQgaGFzIGNoZWNrZWRcbiAgICAgICAgIHRoYXQgdGhlIFtpZF1zIG9mIFtwcmV2XSBhbmQgW29ial0gYXJlIFwiPT09XCIgZXF1YWwuIFRodXMgW3NhbWVfd2l0bmVzc19leG5dIHdpbGxcbiAgICAgICAgIG5ldmVyIHJhaXNlLiAqKVxuICAgICAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIHByZXYjIy5pZCBpZCB3aXRoXG4gICAgICB8IFR5cGVfZXF1YWwuVCAtPlxuICAgICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICAgIGxldCBzdGF0ZScsIGRvbV9ub2RlJyA9IHVwZGF0ZSBwcmV2X3N0YXRlIGRvbV9ub2RlIGluXG4gICAgICAgIFN0YXRlX2tlZXBlci5kZWxldGUgZG9tX25vZGU7XG4gICAgICAgIFN0YXRlX2tlZXBlci5zZXQgfmlkIGRvbV9ub2RlJyBzdGF0ZSc7XG4gICAgICAgIGRvbV9ub2RlJyk7XG4gICAgb2JqIyMuZGVzdHJveVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBkb21fbm9kZSAtPlxuICAgICAgbGV0IHByZXZfc3RhdGUgPSBTdGF0ZV9rZWVwZXIuZ2V0IH5pZCBkb21fbm9kZSBpblxuICAgICAgZGVzdHJveSBwcmV2X3N0YXRlIGRvbV9ub2RlO1xuICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZSk7XG4gICAgbm9kZV9vZl93aWRnZXQgb2JqXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiBzdHJpbmcgbGlzdFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0KVxuICB8IE1hbnlfd2l0aG91dF9tZXJnZSBvZiB0IGxpc3RcblxubGV0IGNyZWF0ZSBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlOyBuYW1lOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB2YWx1ZSkgfVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdCBuYW1lIHZhbHVlID1cbiAgQXR0cmlidXRlXG4gICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA9IGZhbHNlXG4gICAgOyBuYW1lXG4gICAgOyB2YWx1ZSA9IEpzLlVuc2FmZS5pbmplY3QgKERvbV9mbG9hdC50b19qc19zdHJpbmcgdmFsdWUpXG4gICAgfVxuOztcblxubGV0IHByb3BlcnR5IG5hbWUgdmFsdWUgPSBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlIH1cblxubGV0IHN0cmluZ19wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgYm9vbF9wcm9wZXJ0eSBuYW1lIHZhbHVlID1cbiAgUHJvcGVydHlcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuYm9vbCB2YWx1ZSkgfVxuOztcblxubGV0IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZnVuY3Rpb25cbiAgfCBBdHRyaWJ1dGUgYXR0cmlidXRlIC0+IEF0dHJpYnV0ZSB7IGF0dHJpYnV0ZSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgUHJvcGVydHkgcHJvcGVydHkgLT4gUHJvcGVydHkgeyBwcm9wZXJ0eSB3aXRoIHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gdHJ1ZSB9XG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgY3JlYXRlX2hvb2sgbmFtZSBob29rID0gSG9vayB7IG5hbWU7IGhvb2sgfVxubGV0IG1hbnkgYXR0cnMgPSBNYW55IGF0dHJzXG5sZXQgbWFueV93aXRob3V0X21lcmdlIGF0dHJzID0gTWFueV93aXRob3V0X21lcmdlIGF0dHJzXG5sZXQgZW1wdHkgPSBNYW55IFtdXG5sZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gTWFueSBbIGxlZnQ7IHJpZ2h0IF1cbmxldCAoIEAgKSA9IGNvbWJpbmVcblxubW9kdWxlIFVubWVyZ2VkX3dhcm5pbmdfbW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9fd2FybmluZ3NcbiAgICB8IEFsbF93YXJuaW5nc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBvZiBpbnRcblxuICBsZXQgd2FybmluZ19jb3VudCA9IHJlZiAwXG4gIGxldCBjdXJyZW50ID0gcmVmIChTdG9wX2FmdGVyX3F1b3RhIDEwMClcblxuICBsZXQgd2Fybl9zIHMgPVxuICAgIGluY3Igd2FybmluZ19jb3VudDtcbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBOb193YXJuaW5ncyAtPiAoKVxuICAgIHwgQWxsX3dhcm5pbmdzIC0+IGVwcmludF9zIHNcbiAgICB8IFN0b3BfYWZ0ZXJfcXVvdGEgcXVvdGEgLT5cbiAgICAgIGxldCB3YXJuaW5nX2NvdW50ID0gIXdhcm5pbmdfY291bnQgaW5cbiAgICAgIGlmIHdhcm5pbmdfY291bnQgPD0gcXVvdGFcbiAgICAgIHRoZW4gKFxuICAgICAgICBlcHJpbnRfcyBzO1xuICAgICAgICBpZiB3YXJuaW5nX2NvdW50ID0gcXVvdGFcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVwcmludF9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJXQVJOSU5HOiByZWFjaGVkIHdhcm5pbmcgbWVzc2FnZSBxdW90YTsgbm8gbW9yZSBtZXNzYWdlcyB3aWxsIGJlIHByaW50ZWRcIlxuICAgICAgICAgICAgICAgIChxdW90YSA6IGludCldKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCByZXNldF93YXJuaW5nX2NvdW50ICgpID0gd2FybmluZ19jb3VudCA6PSAwXG4gIGVuZFxuZW5kXG5cbnR5cGUgbWVyZ2UgPVxuICB7IHN0eWxlcyA6IENzc19nZW4udFxuICA7IGNsYXNzZXMgOiBzdHJpbmcgbGlzdFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFtdXG4gIDsgaGFuZGxlcnMgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIDsgaG9va3MgPSBNYXAuZW1wdHkgKG1vZHVsZSBTdHJpbmcpXG4gIH1cbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIGxldCBhdHRycyA9IFsgYXR0ciBdIGluXG4gICgqIFdoZW4gaW5wdXQgZWxlbWVudHMgaGF2ZSB0aGVpciB2YWx1ZSBzZXQgdG8gd2hhdCBpdCBhbHJlYWR5IGlzXG4gICAgIHRoZSBjdXJzb3IgZ2V0cyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZCBldmVuIHdoZW4gdGhlIHVzZXJcbiAgICAgaXMgZWRpdGluZyBpbiB0aGUgbWlkZGxlLiBTb2Z0U2V0SG9vayAoZnJvbSAuL3NvZnQtc2V0LWhvb2suanMpXG4gICAgIGNvbXBhcmVzIGJlZm9yZSBzZXR0aW5nLCBhdm9pZGluZyB0aGUgcHJvYmxlbSBqdXN0IGxpa2UgaW5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9pbmRleC5qcyNMNDMtTDUxXG5cbiAgICAgbm90ZSB0aGF0IEVsbSdzIHZpcnR1YWwtZG9tIGluY2x1ZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhpcyBzb1xuICAgICBpZiB3ZSBzd2l0Y2ggdG8gdGhhdCB0aGUgd29ya2Fyb3VuZCBoZXJlIHdpbGwgYmUgdW5uZWNlc3NhcnkuXG4gICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9lbG0tbGFuZy92aXJ0dWFsLWRvbS9ibG9iLzE3YjMwZmI3ZGU0ODY3MjU2NWQ2MjI3ZDMzYzAxNzZmMDc1Nzg2ZGIvc3JjL05hdGl2ZS9WaXJ0dWFsRG9tLmpzI0w0MzQtTDQzOVxuICAqKVxuICBsZXQgYXR0cnNfb2JqIDogVmRvbV9yYXcuQXR0cnMudCA9IFZkb21fcmF3LkF0dHJzLmNyZWF0ZSAoKSBpblxuICAoKiBbdGFrZV9zZWNvbmRfKl0gaXMgdGhlIHRyaXZpYWwgbWVyZ2UgZnVuY3Rpb24gKGkuZS4gbm8gbWVyZ2UgYXQgYWxsKTsgaXRcbiAgICAgdGFrZXMgdHdvIGF0dHJpYnV0ZXMgb2YgdGhlIHNhbWUga2luZCwgaWdub3JlcyBhIGZpcnN0LCBhbmQgZW1pdHNcbiAgICAgYSB3YXJuaW5nIGlmIFt3YXJuX2Fib3V0X3VubWVyZ2VkX2F0dHJpYnV0ZXNdIGlzIGVuYWJsZWQuICopXG4gIGxldCB0YWtlX3NlY29uZF9zdHlsZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlblxuICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgc3R5bGVzXCIgKGZpcnN0IDogQ3NzX2dlbi50KSAoc2Vjb25kIDogQ3NzX2dlbi50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9jbGFzc2VzIGZpcnN0IHNlY29uZCA9XG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGZpcnN0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGZpcnN0ID0gTGlzdC5zb3J0IH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXSBmaXJzdCBpblxuICAgICAgbGV0IHNlY29uZCA9IExpc3Quc29ydCB+Y29tcGFyZTpbJWNvbXBhcmU6IHN0cmluZ10gc2Vjb25kIGluXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogc3RyaW5nIGxpc3QpIChzZWNvbmQgOiBzdHJpbmcgbGlzdCldKTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hhbmRsZXIgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaGFuZGxlcnNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaG9vayB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fcyBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhvb2tzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgKCogV2UgbWVyZ2UgYXR0cmlidXRlcyB3aGVuIHRoZXkgYXJlIHdyaXR0ZW4gdG8gdGhlIHJhdyBhdHRyaWJ1dGUgb2JqZWN0LFxuICAgICByYXRoZXIgdGhhbiB3aGVuIHRoZSB1c2VyLWZhY2luZyBtZXJnZSBmdW5jdGlvbnMgKFttYW55XSwgW2NvbWJpbmVdLCBhbmRcbiAgICAgW0BdKSBhcmUgY2FsbGVkLiBUaGlzIHN0cmF0ZWd5IGlzIGJldHRlciBpbiBib3RoIHNwZWVkIGFuZCBtZW1vcnkgdXNhZ2UsXG4gICAgIHNpbmNlIGl0IG1lYW5zIHdlIGRvIG5vdCBuZWVkIHRvIGNvbmNhdGVuYXRlIHRoZSBsaXN0IG9mIFwidW5tZXJnZWFibGVcIlxuICAgICBhdHRyaWJ1dGVzIChQcm9wZXJ0eSBhbmQgQXR0cmlidXRlKTsgaW5zdGVhZCwgd2UgY2FuIGl0ZXJhdGUgdGhyb3VnaCB0aGVcbiAgICAgdHJlZSBvZiBhdHRyaWJ1dGVzIGFuZCBlYWdlcmx5IHdyaXRlIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgdG8gdGhlXG4gICAgIGF0dHJpYnV0ZSBvYmplY3QgYXMgd2UgZmluZCB0aGVtLiBJZiB0d28gdW5tZXJnZWFibGUgYXR0cmlidXRlcyBoYXZlIHRoZVxuICAgICBzYW1lIG5hbWUsIHRoZSBzZWNvbmQgd2lsbCBzaW1wbHkgb3ZlcndyaXRlIHRoZSBmaXJzdCwgYXMgZGVzaXJlZC5cblxuICAgICBJbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgdGhlIFtNdWx0aV0gbW9kdWxlICh0aGF0IGlzLFxuICAgICBpdCBtdXN0IGJlIHBvc3NpYmxlIHRvIG1lcmdlIGNsYXNzZXMgYW5kIHN0eWxlcywgYnV0IG5vdCBob29rcyBhbmRcbiAgICAgaGFuZGxlcnMpLCB3ZSBpbnRyb2R1Y2UgdGhlIHdvcmthcm91bmQgY29uc3RydWN0b3JcbiAgICAgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdLlxuXG4gICAgIFRoZXJlIGFyZSB0aHVzIHRocmVlIGNhc2VzIHRoYXQgZWFjaCBoYXZlIGRpZmZlcmVudCBtZXJnZSBiZWhhdmlvcnM6XG4gICAgIC0gU2ltcGxlIGxpc3RzIC0gbm8gbWVyZ2luZ1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV0gLSBtZXJnZXMgY2xhc3Nlcywgc3R5bGVzLCBob29rcywgYW5kIGhhbmRsZXJzXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXSAtIG1lcmdlcyBjbGFzc2VzIGFuZCBzdHlsZXNcblxuICAgICBUbyBhdm9pZCBkdXBsaWNhdGluZyB0aGUgbWF0Y2ggZXhwcmVzc2lvbiBsb2dpYywgd2UgcGFyZW1ldGVyaXplIGl0IGJ5IHRoZVxuICAgICBtZXJnaW5nIGJlaGF2aW9yLCBzaW5jZSBcIm5vIG1lcmdlXCIgcmVhbGx5IG1lYW5zIFwibWVyZ2UgYnkgdGFraW5nIHRoZVxuICAgICBzZWNvbmQgb25lXCIuICopXG4gIGxldCByZWMgbWVyZ2UgfmNvbWJpbmVfaG9vayB+Y29tYmluZV9oYW5kbGVyIH5jb21iaW5lX3N0eWxlcyB+Y29tYmluZV9jbGFzc2VzIGFjYyA9XG4gICAgTGlzdC5mb2xkIH5pbml0OmFjYyB+ZjooZnVuIGFjYyBhdHRyIC0+XG4gICAgICBtYXRjaCBhdHRyIHdpdGhcbiAgICAgIHwgUHJvcGVydHkgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBwcm9wZXJ0aWVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgICAgfCBcInZhbHVlXCIgLT5cbiAgICAgICAgICAgbGV0IHNvZnRTZXRIb29rIHggOiBKcy5VbnNhZmUuYW55ID0gSnMuVW5zYWZlLmdsb2JhbCAjIyBTb2Z0U2V0SG9vayB4IGluXG4gICAgICAgICAgIGxldCB2YWx1ZSA9IHNvZnRTZXRIb29rIHZhbHVlIGluXG4gICAgICAgICAgIFZkb21fcmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogXCJ2YWx1ZVwiIHZhbHVlXG4gICAgICAgICB8IG5hbWUgLT4gUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSB2YWx1ZSk7XG4gICAgICAgIGFjY1xuICAgICAgfCBBdHRyaWJ1dGUgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5nczsgbmFtZTsgdmFsdWUgfSAtPlxuICAgICAgICBpZiBSYXcuQXR0cnMuaGFzX2F0dHJpYnV0ZSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgYXR0cmlidXRlc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lIHZhbHVlO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPSBjb21iaW5pbmdfbWFwX2FkZCBhY2MuaGFuZGxlcnMgbmFtZSBoYW5kbGVyIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICB9XG4gICAgICB8IE1hbnkgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6KGZ1biB+a2V5Ol8gLT4gSG9va3MuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6KGZ1biB+a2V5Ol8gLT4gRXZlbnRfaGFuZGxlci5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOkNzc19nZW4uY29tYmluZVxuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3NlczpDb3JlLiggQCApXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOkNvcmUuKCBAIClcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IG1hcF9zdHlsZXMgKGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlcylcbiAgICAgICAgOyBjbGFzc2VzID0gbWFwX2NsYXNzZXMgKGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBzdWJfbWVyZ2UuY2xhc3NlcylcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgICAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9KVxuICBpblxuICBsZXQgbWVyZ2UgPVxuICAgIG1lcmdlXG4gICAgICB+Y29tYmluZV9ob29rOnRha2Vfc2Vjb25kX2hvb2tcbiAgICAgIH5jb21iaW5lX2hhbmRsZXI6dGFrZV9zZWNvbmRfaGFuZGxlclxuICAgICAgfmNvbWJpbmVfc3R5bGVzOnRha2Vfc2Vjb25kX3N0eWxlc1xuICAgICAgfmNvbWJpbmVfY2xhc3Nlczp0YWtlX3NlY29uZF9jbGFzc2VzXG4gICAgICBlbXB0eV9tZXJnZVxuICAgICAgYXR0cnNcbiAgaW5cbiAgTWFwLml0ZXJpIG1lcmdlLmhvb2tzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOmhvb2sgLT5cbiAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIChIb29rcy5wYWNrIGhvb2spKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIChcIm9uXCIgXiBuYW1lKSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKTtcbiAgbGV0ICgpID1cbiAgICBpZiBub3QgKENzc19nZW4uaXNfZW1wdHkgbWVyZ2Uuc3R5bGVzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByb3BzID0gQ3NzX2dlbi50b19zdHJpbmdfbGlzdCBtZXJnZS5zdHlsZXMgaW5cbiAgICAgIGxldCBvYmogPSBSYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBvYmogayAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHYpKSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgKG9iaiA6PiBKcy5VbnNhZmUuYW55KSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IG1lcmdlLmNsYXNzZXNcbiAgICB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGVcbiAgICAgICAgYXR0cnNfb2JqXG4gICAgICAgIFwiY2xhc3NcIlxuICAgICAgICAoSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IG1lcmdlLmNsYXNzZXMgfnNlcDpcIiBcIikpKVxuICBpblxuICBhdHRyc19vYmpcbjs7XG5cbmxldCB0b19yYXcgYXR0ciA9XG4gIG1hdGNoIGF0dHIgd2l0aFxuICB8IE1hbnkgW10gfCBNYW55X3dpdGhvdXRfbWVyZ2UgW10gLT4gUmF3LkF0dHJzLmNyZWF0ZSAoKVxuICB8IGF0dHIgLT4gdG9fcmF3IGF0dHJcbjs7XG5cbmxldCBzdHlsZSBjc3MgPSBTdHlsZSBjc3NcbmxldCBjbGFzc18gY2xhc3NuYW1lID0gQ2xhc3MgWyBjbGFzc25hbWUgXVxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyAoU2V0LnRvX2xpc3QgY2xhc3NlcylcbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPSBDbGFzcyBjbGFzc25hbWVzXG5sZXQgaWQgcyA9IGNyZWF0ZSBcImlkXCIgc1xubGV0IG5hbWUgcyA9IGNyZWF0ZSBcIm5hbWVcIiBzXG5sZXQgaHJlZiByID0gY3JlYXRlIFwiaHJlZlwiIHJcbmxldCBsYWJlbCByID0gY3JlYXRlIFwibGFiZWxcIiByXG5sZXQgdGFyZ2V0IHMgPSBjcmVhdGUgXCJ0YXJnZXRcIiBzXG5sZXQgY2hlY2tlZCA9IGNyZWF0ZSBcImNoZWNrZWRcIiBcIlwiXG5sZXQgc2VsZWN0ZWQgPSBjcmVhdGUgXCJzZWxlY3RlZFwiIFwiXCJcbmxldCBoaWRkZW4gPSBjcmVhdGUgXCJoaWRkZW5cIiBcIlwiXG5sZXQgcmVhZG9ubHkgPSBjcmVhdGUgXCJyZWFkb25seVwiIFwiXCJcbmxldCBkaXNhYmxlZCA9IGNyZWF0ZSBcImRpc2FibGVkXCIgXCJcIlxubGV0IHBsYWNlaG9sZGVyIHggPSBjcmVhdGUgXCJwbGFjZWhvbGRlclwiIHhcblxubGV0IGF1dG9mb2N1cyA9IGZ1bmN0aW9uXG4gIHwgdHJ1ZSAtPiBjcmVhdGUgXCJhdXRvZm9jdXNcIiBcIlwiXG4gIHwgZmFsc2UgLT4gZW1wdHlcbjs7XG5cbmxldCBmb3JfIHggPSBjcmVhdGUgXCJmb3JcIiB4XG5sZXQgdHlwZV8geCA9IGNyZWF0ZSBcInR5cGVcIiB4XG5sZXQgdmFsdWUgeCA9IGNyZWF0ZSBcInZhbHVlXCIgeFxubGV0IHZhbHVlX3Byb3AgeCA9IHN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgeFxubGV0IHRhYmluZGV4IHggPSBjcmVhdGUgXCJ0YWJpbmRleFwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgdGl0bGUgeCA9IGNyZWF0ZSBcInRpdGxlXCIgeFxubGV0IGFsdCB4ID0gY3JlYXRlIFwiYWx0XCIgeFxubGV0IHNyYyB4ID0gY3JlYXRlIFwic3JjXCIgeFxubGV0IG9wZW5fID0gY3JlYXRlIFwib3BlblwiIFwiXCJcbmxldCBzdGFydCB4ID0gY3JlYXRlIFwic3RhcnRcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IG1pbiB4ID0gY3JlYXRlX2Zsb2F0IFwibWluXCIgeFxubGV0IG1heCB4ID0gY3JlYXRlX2Zsb2F0IFwibWF4XCIgeFxubGV0IG1pbl9kYXRlIHggPSBjcmVhdGUgXCJtaW5cIiAoRGF0ZS50b19zdHJpbmcgeClcbmxldCBtYXhfZGF0ZSB4ID0gY3JlYXRlIFwibWF4XCIgKERhdGUudG9fc3RyaW5nIHgpXG5sZXQgbWluX2RhdGVfdGltZSB4ID0gY3JlYXRlIFwibWluXCIgKERhdGUudG9fc3RyaW5nIHggXiBcIlQwMDowMFwiKVxubGV0IG1heF9kYXRlX3RpbWUgeCA9IGNyZWF0ZSBcIm1heFwiIChEYXRlLnRvX3N0cmluZyB4IF4gXCJUMjM6NTlcIilcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG5cbiAgbGV0ICh3aGVlbCA6IEpzX29mX29jYW1sX3BhdGNoZXMuRG9tX2h0bWwud2hlZWxFdmVudCBUeXBlX2VxdWFsLklkLnQpID1cbiAgICBjcmVhdGUgXCJ3aGVlbHdoZWVsRXZlbnRcIlxuICA7O1xuXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9sb2FkID0gb24gVHlwZV9pZC5ldmVudCBcImxvYWRcIlxubGV0IG9uX3N1Ym1pdCA9IG9uIFR5cGVfaWQuc3VibWl0IFwic3VibWl0XCJcbmxldCBvbl9wb2ludGVyZG93biA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJkb3duXCJcbmxldCBvbl9wb2ludGVydXAgPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVydXBcIlxubGV0IG9uX21vdXNld2hlZWwgPSBvbiBUeXBlX2lkLm1vdXNld2hlZWwgXCJtb3VzZXdoZWVsXCJcbmxldCBvbl93aGVlbCA9IG9uIFR5cGVfaWQud2hlZWwgXCJ3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZWxlbWVudFxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBOb19vcF9ob29rIChNIDogc2lnXG4gICAgbW9kdWxlIElucHV0IDogSG9va3NfaW50Zi5JbnB1dFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcbiAgICAgIG1vZHVsZSBJbnB1dCA9IE0uSW5wdXRcblxuICAgICAgbGV0IGluaXQgXyBfID0gKClcbiAgICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0Ol8gfm5ld19pbnB1dDpfICgpIF8gPSAoKVxuICAgICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgICBlbmQpXG5cbiAgbGV0IGF0dHIgaW5wdXQgPSBjcmVhdGVfaG9vayBNLm5hbWUgKEhvb2suY3JlYXRlIGlucHV0KVxuICBsZXQgdHlwZV9pZCA9IEhvb2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IGxpc3RcblxuICBsZXQgbWFwX3N0eWxlIHQgfmYgPSBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIGYsIEZuLmlkKSBdXG4gIGxldCBhZGRfY2xhc3MgdCBjID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgZnVuIGNzIC0+IGMgOjogY3MpIF1cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ3NzX3Zhcl9ob29rID0gSG9va3MuTWFrZSAoc3RydWN0XG4gICAgb3BlbiBKc19vZl9vY2FtbFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHN0cmluZyAqIHN0cmluZykgbGlzdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tYmluZSA9IExpc3QuYXBwZW5kXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCBpbnB1dCAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgTGlzdC5pdGVyIGlucHV0IH5mOihmdW4gKGssIHYpIC0+XG4gICAgICAgIGVsZW1lbnQjIy5zdHlsZSMjc2V0UHJvcGVydHkgKEpzLnN0cmluZyBrKSAoSnMuc3RyaW5nIHYpIEpzLnVuZGVmaW5lZFxuICAgICAgICB8PiAoaWdub3JlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkpXG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfICgpIF8gPSAoKVxuXG4gICAgbGV0IGRlc3Ryb3kgaW5wdXQgKCkgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgICAgIExpc3QuaXRlciBpbnB1dCB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBlbGVtZW50IyMuc3R5bGUjI3JlbW92ZVByb3BlcnR5IChKcy5zdHJpbmcgaylcbiAgICAgICAgfD4gKGlnbm9yZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQpKVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCAoKSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgaWYgcGh5c19lcXVhbCBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB8fCBbJWVxdWFsOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XSBvbGRfaW5wdXQgbmV3X2lucHV0XG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgKCkgZWxlbWVudDtcbiAgICAgICAgaW5pdCBuZXdfaW5wdXQgZWxlbWVudClcbiAgICA7O1xuICBlbmQpXG5cbmxldCBfX2Nzc192YXJzX25vX2tlYmFicyBhbGlzdCA9IGNyZWF0ZV9ob29rIFwiY3VzdG9tLWNzcy12YXJzXCIgKENzc192YXJfaG9vay5jcmVhdGUgYWxpc3QpXG5sZXQgY3NzX3ZhciB+bmFtZSB2ID0gX19jc3NfdmFyc19ub19rZWJhYnMgWyBcIi0tXCIgXiBuYW1lLCB2IF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmVjIGZpbHRlcl9ieV9raW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUHJvcGVydHkgXyAtPiBpZiBmIGBQcm9wZXJ0eSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQXR0cmlidXRlIF8gLT4gaWYgZiBgQXR0cmlidXRlIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIb29rIF8gLT4gaWYgZiBgSG9vayB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgSGFuZGxlciBfIC0+IGlmIGYgYEhhbmRsZXIgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IFN0eWxlIF8gLT4gaWYgZiBgU3R5bGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IENsYXNzIF8gLT4gaWYgZiBgQ2xhc3MgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IE1hbnkgYXR0cnMgLT4gTWFueSAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSlcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBhLCBiKSAtPlxuICAgICAgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoTGlzdC5tYXAgYXR0cnMgfmY6KGZpbHRlcl9ieV9raW5kIH5mKSwgYSwgYilcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPlxuICAgICAgTWFueV93aXRob3V0X21lcmdlIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICA7O1xuXG4gIGxldCByZWMgY29udGFpbnNfbmFtZSBsb29raW5nX2ZvciA9IGZ1bmN0aW9uXG4gICAgfCBQcm9wZXJ0eSB7IG5hbWU7IF8gfSB8IEF0dHJpYnV0ZSB7IG5hbWU7IF8gfSB8IEhvb2sgeyBuYW1lOyBfIH0gLT5cbiAgICAgIFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBuYW1lXG4gICAgfCBIYW5kbGVyIHsgbmFtZTsgXyB9IC0+IFN0cmluZy5lcXVhbCAoXCJvblwiIF4gbmFtZSkgbG9va2luZ19mb3JcbiAgICB8IFN0eWxlIF8gLT4gU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIFwic3R5bGVcIlxuICAgIHwgQ2xhc3MgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJjbGFzc1wiXG4gICAgfCBNYW55IGF0dHJzXG4gICAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChhdHRycywgXywgXylcbiAgICB8IE1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyAtPiBMaXN0LmV4aXN0cyB+ZjooY29udGFpbnNfbmFtZSBsb29raW5nX2ZvcikgYXR0cnNcbiAgOztcbmVuZFxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgZXZlbnQgPSBwcml2YXRlICNEb21faHRtbC5ldmVudFxuXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBldmVudCBKcy50IERvbS5FdmVudC50eXBcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBYLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgIGxldCBjb21iaW5lIGYgZyBldmVudCA9IFVpX2VmZmVjdC5NYW55IFsgZiBldmVudDsgZyBldmVudCBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBsaXN0ZW5lciA6IChEb21faHRtbC5ldmVudF9saXN0ZW5lcl9pZFtAc2V4cC5vcGFxdWVdKSB9XG4gICAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgbGV0IHNldCBmID1cbiAgICAgICAgbGV0IGhhbmRsZXIgPVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlIGV2IChmIGV2KTtcbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICBpblxuICAgICAgICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIERvbV9odG1sLndpbmRvdyBYLmV2ZW50X2tpbmQgaGFuZGxlciBKcy5fdHJ1ZVxuICAgICAgOztcblxuICAgICAgbGV0IGluaXQgZiBfZWxlbWVudCA9IHsgU3RhdGUubGlzdGVuZXIgPSBzZXQgZiB9XG4gICAgICBsZXQgZGVzdHJveSBfaW5wdXQgc3RhdGUgX2VsZW1lbnQgPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIHN0YXRlLlN0YXRlLmxpc3RlbmVyXG5cbiAgICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmYgc3RhdGUgZWxlbWVudCA9XG4gICAgICAgICgqIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjaGFuZ2VzLCBjYW5jZWwgdGhlIG9sZCBvbmUgYW5kIHJlLWluc3RhbGwgKilcbiAgICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgICAgbGV0IG5ld19zdGF0ZSA9IGluaXQgZiBlbGVtZW50IGluXG4gICAgICAgIHN0YXRlLlN0YXRlLmxpc3RlbmVyIDwtIG5ld19zdGF0ZS5saXN0ZW5lclxuICAgICAgOztcblxuICAgICAgbGV0IG9uX21vdW50IF9pbnB1dCBfc3RhdGUgX2VsZW1lbnQgPSAoKVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTW91c2V1cCA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1vdXNldXBcbiAgZW5kKVxuXG5tb2R1bGUgTW91c2Vtb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2Vtb3ZlXG4gIGVuZClcblxubW9kdWxlIENsaWNrID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQuY2xpY2tcbiAgZW5kKVxuXG5tb2R1bGUgQ29udGV4dG1lbnUgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tYWtlIFwiY29udGV4dG1lbnVcIlxuICBlbmQpXG5cbm1vZHVsZSBLZXlkb3duID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmtleWJvYXJkRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQua2V5ZG93blxuICBlbmQpXG5cbm1vZHVsZSBWaXNpYmlsaXR5Y2hhbmdlID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ2aXNpYmlsaXR5Y2hhbmdlXCJcbiAgZW5kKVxuXG5tb2R1bGUgQmVmb3JldW5sb2FkID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLmV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJiZWZvcmV1bmxvYWRcIlxuICBlbmQpXG5cbmxldCBtb3VzZXVwIGYgPSBNb3VzZXVwLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtbW91c2V1cC1saXN0ZW5lclwiXG5sZXQgbW91c2Vtb3ZlIGYgPSBNb3VzZW1vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxubGV0IGNsaWNrIGYgPSBDbGljay5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWNsaWNrLWxpc3RlbmVyXCJcbmxldCBjb250ZXh0bWVudSBmID0gQ29udGV4dG1lbnUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1jb250ZXh0bWVudS1saXN0ZW5lclwiXG5sZXQga2V5ZG93biBmID0gS2V5ZG93bi5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWtleWRvd24tbGlzdGVuZXJcIlxuXG5jbGFzcyB0eXBlIGV2ZW50X3dpdGhfc3RyaW5nX3JldHVybl92YWx1ZSA9IG9iamVjdFxuICAoKiBFdmVudHMgd2l0aCBbcmV0dXJuVmFsdWVdIGFyZSBpbXBvc3NpYmxlIHRvIHByb3Blcmx5IHR5cGUsIHNvIHdlIG1ha2Ugb25lIHRoYXRcbiAgICAgaXMgc3BlY2lhbGl6ZWQgZm9yIHN0cmluZywgYW5kIGNhc3Qgb3VyIGJlZm9yZV91bmxvYWQgdHlwZSB0byBpdC4gKilcbiAgbWV0aG9kIHJldHVyblZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgYmVmb3JldW5sb2FkIGYgPVxuICBsZXQgZiBldmVudCA9XG4gICAgbWF0Y2glYmluZC5FZmZlY3QgZiBldmVudCB3aXRoXG4gICAgfCBgU2hvd193YXJuaW5nIC0+XG4gICAgICBsZXQgZXZlbnQgOiBldmVudF93aXRoX3N0cmluZ19yZXR1cm5fdmFsdWUgSnMudCA9IE9iai5tYWdpYyBldmVudCBpblxuICAgICAgZXZlbnQjIy5yZXR1cm5WYWx1ZSA6PSBKcy5zdHJpbmcgXCJ0aGlzIHN0cmluZyBjYW4gYmUgYW55dGhpbmdcIjtcbiAgICAgIEVmZmVjdC5JZ25vcmVcbiAgICB8IGBEb19ub3RoaW5nIC0+IEVmZmVjdC5JZ25vcmVcbiAgaW5cbiAgQmVmb3JldW5sb2FkLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtYmVmb3JldW5sb2FkLWxpc3RlbmVyXCJcbjs7XG5cbmxldCB2aXNpYmlsaXR5Y2hhbmdlIGYgPVxuICBWaXNpYmlsaXR5Y2hhbmdlLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtdmlzaWJpbGl0eWNoYW5nZS1saXN0ZW5lclwiXG47O1xuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNldXBfdHlwZV9pZCA9IE1vdXNldXAuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgbW91c2Vtb3ZlX3R5cGVfaWQgPSBNb3VzZW1vdmUuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQga2V5ZG93bl90eXBlX2lkID0gS2V5ZG93bi5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBjbGlja190eXBlX2lkID0gQ2xpY2suRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgY29udGV4dG1lbnVfdHlwZV9pZCA9IENvbnRleHRtZW51LkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IHZpc2liaWxpdHljaGFuZ2VfdHlwZV9pZCA9IFZpc2liaWxpdHljaGFuZ2UuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgYmVmb3JldW5sb2FkX3R5cGVfaWQgPSBCZWZvcmV1bmxvYWQuRm9yX3Rlc3RpbmcudHlwZV9pZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG50eXBlIHQgPSBSYXcuTm9kZS50XG5cbmxldCB2ZG9tX3RodW5rID0gbGF6eSBKcy5VbnNhZmUuKGdldCBnbG9iYWwgKEpzLnN0cmluZyBcIlZkb21UaHVua1wiKSlcblxubGV0IGNyZWF0ZSB+a2V5IGFyZyB+ZiA9XG4gIGxldCBrZXkgPVxuICAgIG1hdGNoIGtleSB3aXRoXG4gICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKcy5zdHJpbmcga2V5KVxuICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgaW5cbiAgbGV0IGtleSA9IEpzLlVuc2FmZS5pbmplY3Qga2V5IGluXG4gIGxldCBmID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGEgLT4gZiBhKSB8PiBKcy5VbnNhZmUuaW5qZWN0IGluXG4gIGxldCBhcmcgPSBKcy5VbnNhZmUuaW5qZWN0IGFyZyBpblxuICAoT2JqLm1hZ2ljIDogXyAtPiBSYXcuTm9kZS50KVxuICAgIChKcy5VbnNhZmUuZnVuX2NhbGwgKExhenkuZm9yY2UgdmRvbV90aHVuaykgW3wgZjsgYXJnOyBrZXkgfF0pXG47O1xuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgd2lkZ2V0ID0gUmF3LldpZGdldC50XG5cbmFuZCB0ID1cbiAgfCBOb25lXG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbGVtZW50IG9mIGVsZW1lbnRcbiAgfCBXaWRnZXQgb2Ygd2lkZ2V0XG4gIHwgTGF6eSBvZlxuICAgICAgeyBrZXkgOiBzdHJpbmcgb3B0aW9uXG4gICAgICA7IHQgOiB0IExhenkudFxuICAgICAgfVxuXG5tb2R1bGUgQWxpYXNlcyA9IHN0cnVjdFxuICB0eXBlIG5vZGVfY3JlYXRvciA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyczpBdHRyLnQgbGlzdCAtPiB0IGxpc3QgLT4gdFxuICB0eXBlIG5vZGVfY3JlYXRvcl9jaGlsZGxlc3MgPSA/a2V5OnN0cmluZyAtPiA/YXR0cnM6QXR0ci50IGxpc3QgLT4gdW5pdCAtPiB0XG5lbmRcblxubW9kdWxlIEVsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZWxlbWVudFxuXG4gIGxldCB0YWcgdCA9IHQudGFnXG4gIGxldCBhdHRycyB0ID0gdC5hdHRyc1xuICBsZXQga2V5IHQgPSB0LmtleVxuICBsZXQgd2l0aF9rZXkgdCBrZXkgPSB7IHQgd2l0aCBrZXkgPSBTb21lIGtleSB9XG5cbiAgbGV0IG1hcF9hdHRycyB0IH5mID1cbiAgICBsZXQgYXR0cnMgPSBmIHQuYXR0cnMgaW5cbiAgICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gICAgeyB0IHdpdGggYXR0cnM7IHJhd19hdHRycyB9XG4gIDs7XG5cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIGNsYXNzXyBjKSlcbiAgbGV0IGFkZF9jbGFzc2VzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NlcyBjKSlcbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfYXR0cnMgdCB+ZjooZnVuIGEgLT4gQXR0ci4oYSBAIHN0eWxlIHMpKVxuZW5kXG5cbmxldCByZWMgdF90b19qcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPlxuICAgICgqIFdlIG5vcm1hbGx5IGZpbHRlciB0aGVzZSBvdXQsIGJ1dCBpZiBbdG9fanNdIGlzIGNhbGxlZCBkaXJlY3RseSBvbiBhIFtOb25lXSBub2RlLFxuICAgICAgIHdlIHVzZSB0aGlzIGhhY2suIEFzaWRlIGZyb20gaGF2aW5nIGEgW1RleHRdIG5vZGUgd2l0aG91dCBhbnkgdGV4dCBwcmVzZW50IGluIHRoZVxuICAgICAgIERvbSwgdGhlcmUgc2hvdWxkIGJlIG5vIHVud2FudGVkIHNpZGUtZWZmZWN0cy4gIEluIGFuIEluY3JfZG9tIGFwcGxpY2F0aW9uLCB0aGlzXG4gICAgICAgY2FuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIHJvb3QgdmlldyBJbmNyZW1lbnRhbCBpcyBpbmhhYml0ZWQgYnkgYSBbTm9uZV0uICopXG4gICAgUmF3Lk5vZGUudGV4dCBcIlwiXG4gIHwgVGV4dCBzIC0+IFJhdy5Ob2RlLnRleHQgc1xuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBWbm9kZSB9XG4gICAgLT4gUmF3Lk5vZGUubm9kZSB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IEVsZW1lbnQgeyB0YWc7IGtleTsgYXR0cnMgPSBfOyByYXdfYXR0cnMgPSAobGF6eSByYXdfYXR0cnMpOyBjaGlsZHJlbjsga2luZCA9IGBTdmcgfVxuICAgIC0+IFJhdy5Ob2RlLnN2ZyB0YWcgcmF3X2F0dHJzIGNoaWxkcmVuIGtleVxuICB8IFdpZGdldCB3IC0+IHdcbiAgfCBMYXp5IHsgdDsga2V5IH0gLT4gVGh1bmsuY3JlYXRlIH5rZXkgdCB+Zjp0X3RvX2pzX2xhenlcblxuYW5kIHRfdG9fanNfbGF6eSAobGF6eSB0KSA9IHRfdG9fanMgdFxuXG5sZXQgdGV4dCBzID0gVGV4dCBzXG5cbmxldCBlbGVtZW50IGtpbmQgfnRhZyB+a2V5IGF0dHJzIGNoaWxkcmVuID1cbiAgbGV0IGNoaWxkcmVuX3JhdyA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICBMaXN0Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCAoVGV4dCBfIHwgRWxlbWVudCBfIHwgV2lkZ2V0IF8gfCBMYXp5IF8pIGFzIG90aGVyIC0+XG4gICAgICBsZXQgKF8gOiBpbnQpID0gY2hpbGRyZW5fcmF3IyNwdXNoICh0X3RvX2pzIG90aGVyKSBpblxuICAgICAgKCkpO1xuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuID0gY2hpbGRyZW5fcmF3IH1cbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRycyA9IFtdKSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFZub2RlIH50YWcgfmtleSAoQXR0ci5tYW55IGF0dHJzKSBjaGlsZHJlbilcbjs7XG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuXG4gIGxldCBjcmVhdGVfZWxlbWVudCA9IGNyZWF0ZVxuXG4gIHR5cGUgdmRvbV9ub2RlID0gdFxuXG4gIGluY2x1ZGUgUmF3LldpZGdldFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIGRvbSA9IHByaXZhdGUgI0RvbV9odG1sLmVsZW1lbnRcblxuICAgIG1vZHVsZSBJbnB1dCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgY3JlYXRlIDogSW5wdXQudCAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCB1cGRhdGVcbiAgICAgIDogIHByZXZfaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gaW5wdXQ6SW5wdXQudFxuICAgICAgLT4gc3RhdGU6U3RhdGUudFxuICAgICAgLT4gZWxlbWVudDpkb20gSnMudFxuICAgICAgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgZGVzdHJveSA6IHByZXZfaW5wdXQ6SW5wdXQudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IGVsZW1lbnQ6ZG9tIEpzLnQgLT4gdW5pdFxuICAgIHZhbCB0b192ZG9tX2Zvcl90ZXN0aW5nIDogWyBgQ3VzdG9tIG9mIElucHV0LnQgLT4gdmRvbV9ub2RlIHwgYFNleHBfb2ZfaW5wdXQgXVxuICBlbmRcblxuICBsZXQgb2ZfbW9kdWxlICh0eXBlIGlucHV0KSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSBJbnB1dC50ID0gaW5wdXQpID1cbiAgICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGlucHV0IDogTS5JbnB1dC50XG4gICAgICAgIDsgc3RhdGUgOiBNLlN0YXRlLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcbiAgICBpblxuICAgIGxldCBzZXhwX29mX2RvbSA6IE0uZG9tIEpzLnQgLT4gU2V4cC50ID0gZnVuIF8gLT4gU2V4cC5BdG9tIFwiPG9wYXF1ZT5cIiBpblxuICAgIGxldCBpZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOk0ubmFtZSBbJXNleHBfb2Y6IFN0YXRlLnQgKiBkb21dIGluXG4gICAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpbnB1dCAtPlxuICAgICAgbGV0IHZkb21fZm9yX3Rlc3RpbmcgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKHRfdG9fanNcbiAgICAgICAgICAgICAobWF0Y2ggTS50b192ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgICAgfCBgQ3VzdG9tIGYgLT4gZiBpbnB1dFxuICAgICAgICAgICAgICB8IGBTZXhwX29mX2lucHV0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIE0uSW5wdXQuc2V4cF9vZl90IGlucHV0IHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQXRvbSBcIjxvcGFxdWU+XCIgLT4gW11cbiAgICAgICAgICAgICAgICAgIHwgb3RoZXIgLT4gWyB0ZXh0IChTZXhwLnRvX3N0cmluZ19odW0gb3RoZXIpIF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGNyZWF0ZV9lbGVtZW50IChNLm5hbWUgXiBcIi13aWRnZXRcIikgY2hpbGRyZW4pKVxuICAgICAgaW5cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+aWRcbiAgICAgICAgfnZkb21fZm9yX3Rlc3RpbmdcbiAgICAgICAgfmluaXQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0uY3JlYXRlIGlucHV0IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfnVwZGF0ZTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLnVwZGF0ZSB+cHJldl9pbnB1dCB+aW5wdXQgfnN0YXRlIH5lbGVtZW50IGluXG4gICAgICAgICAgeyBpbnB1dDsgc3RhdGUgfSwgZWxlbWVudClcbiAgICAgICAgfmRlc3Ryb3k6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgTS5kZXN0cm95IH5wcmV2X2lucHV0IH5zdGF0ZSB+ZWxlbWVudClcbiAgICAgICAgKCkpXG4gIDs7XG5lbmRcblxubGV0IGxhenlfID9rZXkgdCA9IExhenkgeyBrZXk7IHQgfVxuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB3aWRnZXQgP3Zkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkgPVxuICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgbGF6eVxuICAgICAgKG1hdGNoIHZkb21fZm9yX3Rlc3Rpbmcgd2l0aFxuICAgICAgIHwgU29tZSB0IC0+IHRfdG9fanMgKExhenkuZm9yY2UgdClcbiAgICAgICB8IE5vbmUgLT4gdF90b19qcyAoY3JlYXRlIChUeXBlX2VxdWFsLklkLm5hbWUgaWQgXiBcIi13aWRnZXRcIikgW10pKVxuICBpblxuICBXaWRnZXQgKFdpZGdldC5jcmVhdGUgfnZkb21fZm9yX3Rlc3RpbmcgP2Rlc3Ryb3kgP3VwZGF0ZSB+aWQgfmluaXQgKCkpXG47O1xuXG5sZXQgY3JlYXRlX2NoaWxkbGVzcyB0YWcgP2tleSA/YXR0cnMgKCkgPSBjcmVhdGUgdGFnID9rZXkgP2F0dHJzIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0cnMgPSBbXSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBTdmcgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5tb2R1bGUgSW5uZXJfaHRtbCA9IHN0cnVjdFxuICBsZXQgd2lkZ2V0IH5uYW1lIGNyZWF0ZSA9XG4gICAgbGV0IGlkID1cbiAgICAgICgqIHN0YWdlIHRoZSBpZCBnZW5lcmF0aW9uICopXG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSAoZnVuICgoY29udGVudCwgXywgXyksIF8pIC0+IFNleHAuQXRvbSBjb250ZW50KVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlXG4gICAgICAoZnVuXG4gICAgICAgID9vdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nXG4gICAgICAgIH50YWdcbiAgICAgICAgfmF0dHJzXG4gICAgICAgIH50aGlzX2h0bWxfaXNfc2FuaXRpemVkX2FuZF9pc190b3RhbGx5X3NhZmVfdHJ1c3RfbWU6Y29udGVudFxuICAgICAgICAoKVxuICAgICAgICAtPlxuICAgICAgICAgIGxldCBlbGVtZW50ID0gY3JlYXRlIHRhZyB+YXR0cnMgW10gaW5cbiAgICAgICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICAgICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdXBkYXRlIChwcmV2X2NvbnRlbnQsIHByZXZfdGFnLCBwcmV2X2F0dHIpIGVsZW1lbnQgPVxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPVxuICAgICAgICAgICAgICAoKiBpZiB0aGUgdGFnIG9yIHRoZSBhdHRyaWJ1dGVzIGFyZSBkaWZmZXJlbnQsIGRvIGEgZGlmZi9wYXRjaCBjeWNsZSB0b1xuICAgICAgICAgICAgICAgICBnZXQgaXQgdXAgdG8gZGF0ZSAqKVxuICAgICAgICAgICAgICBpZiAobm90IChTdHJpbmcuZXF1YWwgcHJldl90YWcgdGFnKSkgfHwgbm90IChwaHlzX2VxdWFsIHByZXZfYXR0ciBhdHRycylcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIFJhdy5QYXRjaC5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIH5wcmV2aW91czooY3JlYXRlIHByZXZfdGFnIH5hdHRyczpwcmV2X2F0dHIgW10gfD4gdG9fcmF3KVxuICAgICAgICAgICAgICAgICAgfmN1cnJlbnQ6KGNyZWF0ZSB0YWcgfmF0dHJzIFtdIHw+IHRvX3JhdylcbiAgICAgICAgICAgICAgICB8PiBSYXcuUGF0Y2guYXBwbHkgZWxlbWVudFxuICAgICAgICAgICAgICBlbHNlIGVsZW1lbnRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBpZiB0aGUgdGFnIGNoYW5nZWQsIHRoZW4gW2VsZW1lbnRdIHdpbGwgYmUgZW1wdHksIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZVxuICAgICAgICAgICAgICAgaW5uZXJIVE1MLiAgSWYgdGhlIGNvbnRlbnQgY2hhbmdlZCwgdGhlbiB3ZSBuZWVkIHRvIHNldCB0aGUgaW5uZXJIVE1MIGZvclxuICAgICAgICAgICAgICAgb2J2aW91cyByZWFzb25zLiAqKVxuICAgICAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfdGFnIHRhZykpIHx8IG5vdCAoU3RyaW5nLmVxdWFsIHByZXZfY29udGVudCBjb250ZW50KVxuICAgICAgICAgICAgdGhlbiBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgICAgICAgKGNvbnRlbnQsIHRhZywgYXR0cnMpLCBlbGVtZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBXZSB1c2UgdGhlIFt3aWRnZXRdIGZ1bmN0aW9uIGRpcmVjdGx5LCByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZVxuICAgICAgICAgICAgIGVhc2llci10by11c2UgW3dpZGdldF9vZl9tb2R1bGVdIGZ1bmN0aW9uIGJlY2F1c2Ugd2Ugd2FudCB0b1xuICAgICAgICAgICAgIGV4cGxpY2l0bHkgY3JlYXRlIHRoZSBpZCBzdWNoIHRoYXQgaXQgaXMgZGlzdGluY3QgYmV0d2VlblxuICAgICAgICAgICAgIFtpbm5lcl9odG1sXSBhbmQgW2lubmVyX2h0bWxfc3ZnXS4gKilcbiAgICAgICAgICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgICAgICAgICBtYXRjaCBvdmVycmlkZV92ZG9tX2Zvcl90ZXN0aW5nIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBsYXp5IChjcmVhdGUgdGFnIH5hdHRycyBbIHRleHQgY29udGVudCBdKVxuICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgIGluXG4gICAgICAgICAgd2lkZ2V0IH5pZCB+dmRvbV9mb3JfdGVzdGluZyB+aW5pdCB+dXBkYXRlICgpKVxuICA7O1xuZW5kXG5cbmxldCBpbm5lcl9odG1sX3N2ZyA9XG4gIElubmVyX2h0bWwud2lkZ2V0IH5uYW1lOlwiaW5uZXItaHRtbC1zdmctbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5Ok5vbmUgfmF0dHJzKVxuICB8PiBTdGFnZWQudW5zdGFnZVxuOztcblxubGV0IGlubmVyX2h0bWwgPVxuICBJbm5lcl9odG1sLndpZGdldCB+bmFtZTpcImlubmVyLWh0bWwtbm9kZVwiIChmdW4gdGFnIH5hdHRycyAtPlxuICAgIGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRycylcbiAgfD4gU3RhZ2VkLnVuc3RhZ2Vcbjs7XG5cbmxldCBhID0gY3JlYXRlIFwiYVwiXG5sZXQgYWJiciA9IGNyZWF0ZSBcImFiYnJcIlxubGV0IGJvZHkgPSBjcmVhdGUgXCJib2R5XCJcbmxldCBidXR0b24gPSBjcmVhdGUgXCJidXR0b25cIlxubGV0IGNvZGUgPSBjcmVhdGUgXCJjb2RlXCJcbmxldCBkYXRhbGlzdCA9IGNyZWF0ZSBcImRhdGFsaXN0XCJcbmxldCBkZXRhaWxzID0gY3JlYXRlIFwiZGV0YWlsc1wiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgbGVnZW5kID0gY3JlYXRlIFwibGVnZW5kXCJcbmxldCBmb290ZXIgPSBjcmVhdGUgXCJmb290ZXJcIlxubGV0IGgxID0gY3JlYXRlIFwiaDFcIlxubGV0IGgyID0gY3JlYXRlIFwiaDJcIlxubGV0IGgzID0gY3JlYXRlIFwiaDNcIlxubGV0IGg0ID0gY3JlYXRlIFwiaDRcIlxubGV0IGg1ID0gY3JlYXRlIFwiaDVcIlxubGV0IGg2ID0gY3JlYXRlIFwiaDZcIlxubGV0IGhlYWRlciA9IGNyZWF0ZSBcImhlYWRlclwiXG5sZXQgaHRtbCA9IGNyZWF0ZSBcImh0bWxcIlxubGV0IGlucHV0ID0gY3JlYXRlX2NoaWxkbGVzcyBcImlucHV0XCJcbmxldCBpbWcgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaW1nXCJcbmxldCBpbnB1dF9kZXByZWNhdGVkID0gY3JlYXRlIFwiaW5wdXRcIlxubGV0IHRleHRhcmVhID0gY3JlYXRlIFwidGV4dGFyZWFcIlxubGV0IHNlbGVjdCA9IGNyZWF0ZSBcInNlbGVjdFwiXG5sZXQgb3B0Z3JvdXAgPSBjcmVhdGUgXCJvcHRncm91cFwiXG5sZXQgb3B0aW9uID0gY3JlYXRlIFwib3B0aW9uXCJcbmxldCBsYWJlbCA9IGNyZWF0ZSBcImxhYmVsXCJcbmxldCBsaSA9IGNyZWF0ZSBcImxpXCJcbmxldCBwID0gY3JlYXRlIFwicFwiXG5sZXQgcHJlID0gY3JlYXRlIFwicHJlXCJcbmxldCBzZWN0aW9uID0gY3JlYXRlIFwic2VjdGlvblwiXG5sZXQgc3BhbiA9IGNyZWF0ZSBcInNwYW5cIlxubGV0IHN0cm9uZyA9IGNyZWF0ZSBcInN0cm9uZ1wiXG5sZXQgZW0gPSBjcmVhdGUgXCJlbVwiXG5sZXQgYmxvY2txdW90ZSA9IGNyZWF0ZSBcImJsb2NrcXVvdGVcIlxubGV0IHN1bW1hcnkgPSBjcmVhdGUgXCJzdW1tYXJ5XCJcbmxldCBpZnJhbWUgPSBjcmVhdGUgXCJpZnJhbWVcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5sZXQgZGwgPSBjcmVhdGUgXCJkbFwiXG5sZXQgZHQgPSBjcmVhdGUgXCJkdFwiXG5sZXQgZGQgPSBjcmVhdGUgXCJkZFwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cnM6W11cbjs7XG5cbm1vZHVsZSBQYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSYXcuUGF0Y2gudFxuXG4gIGxldCBjcmVhdGUgfnByZXZpb3VzIH5jdXJyZW50ID1cbiAgICBSYXcuUGF0Y2guY3JlYXRlIH5wcmV2aW91czoodF90b19qcyBwcmV2aW91cykgfmN1cnJlbnQ6KHRfdG9fanMgY3VycmVudClcbiAgOztcblxuICBsZXQgYXBwbHkgdCBlbHQgPSBSYXcuUGF0Y2guYXBwbHkgZWx0IHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBSYXcuUGF0Y2guaXNfZW1wdHkgdFxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFZub2RlID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcblxuICBsZXQgY3JlYXRlX3N2ZyA/a2V5IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgRWxlbWVudCAoZWxlbWVudF9leHBlcnQgYFN2ZyA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGluY2x1ZGUgQXR0clxuICBtb2R1bGUgSG9va3MgPSBIb29rc1xuICBtb2R1bGUgR2xvYmFsX2xpc3RlbmVycyA9IEdsb2JhbF9saXN0ZW5lcnNcbmVuZFxuXG5tb2R1bGUgQXR0cnMgPSBBdHRyLk11bHRpXG5tb2R1bGUgRWZmZWN0ID0gRWZmZWN0XG5tb2R1bGUgTm9kZSA9IE5vZGVcbiIsIm1vZHVsZSBWZG9tID0gVmRvbVxubW9kdWxlIERvbV9mbG9hdCA9IERvbV9mbG9hdFxubW9kdWxlIEpzX21hcCA9IEpzX21hcFxuXG5tb2R1bGUgVG9wX2xldmVsX2VmZmVjdHMgPSBzdHJ1Y3RcbiAgbGV0ICgpID1cbiAgICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgICBDc3NfZ2VuLlByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgOj0gRG9tX2Zsb2F0LnRvX3N0cmluZ19maXhlZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENwdXNldCA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEludC5TZXQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cblxuICAgICAgbGV0IHZhbGlkYXRlIHQgPVxuICAgICAgICBWYWxpZGF0ZS5maXJzdF9mYWlsdXJlXG4gICAgICAgICAgKEludC52YWxpZGF0ZV9sYm91bmQgfm1pbjooSW5jbCAxKSAoU2V0Lmxlbmd0aCB0KSlcbiAgICAgICAgICAoU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IFN0ZGxpYi4oID09IClcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemVfaW5fYml0cyA9IDY0XG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG51bV9iaXRzID0gSW50Lm51bV9iaXRzXG4gIGxldCBtYXhfdmFsdWUgPSBTdGRsaWIubWF4X2ludFxuICBsZXQgdG9fc3RyaW5nID0gc3RyaW5nX29mX2ludFxuZW5kXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBjb25jYXQgbCA9IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgbFxuXG5tb2R1bGUgdHlwZSBTID0gU1xuXG5tb2R1bGUgUG9vbCA9IHN0cnVjdFxuICBsZXQgZ3Jvd19jYXBhY2l0eSB+Y2FwYWNpdHkgfm9sZF9jYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiBpZiBvbGRfY2FwYWNpdHkgPSAwIHRoZW4gMSBlbHNlIG9sZF9jYXBhY2l0eSAqIDJcbiAgICB8IFNvbWUgY2FwYWNpdHkgLT5cbiAgICAgIGlmIGNhcGFjaXR5IDw9IG9sZF9jYXBhY2l0eVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb29sLmdyb3cgZ290IHRvbyBzbWFsbCBjYXBhY2l0eVwiXG4gICAgICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSwgYG9sZF9jYXBhY2l0eSBvbGRfY2FwYWNpdHkpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBjYXBhY2l0eSBvZiBpbnQgXSAqIFsgYG9sZF9jYXBhY2l0eSBvZiBpbnQgXV07XG4gICAgICBjYXBhY2l0eVxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFR1cGxlX3R5cGUuU2xvdHNcblxuICBsZXQgbWF4X3Nsb3QgPSAxNFxuXG4gICgqIFRoZSBwb29sIGlzIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIFtVbmlmb3JtX2FycmF5LnRdLCB3aGVyZSBpbmRleCB6ZXJvIGhhcyB0aGVcbiAgICAgbWV0YWRhdGEgYWJvdXQgdGhlIHBvb2wgYW5kIHRoZSByZW1haW5pbmcgaW5kaWNlcyBhcmUgdGhlIHR1cGxlcyBsYXllZCBvdXQgb25lIGFmdGVyXG4gICAgIHRoZSBvdGhlci4gIEVhY2ggdHVwbGUgdGFrZXMgWzEgKyBzbG90c19wZXJfdHVwbGVdIGluZGljZXMgaW4gdGhlIHBvb2wsIHdoZXJlIHRoZVxuICAgICBmaXJzdCBpbmRleCBob2xkcyBhIGhlYWRlciBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGhvbGQgdGhlIHR1cGxlJ3Mgc2xvdHM6XG5cbiAgICAge3ZcbiAgICAgfCBoZWFkZXIgfCBzMCB8IHMxIHwgLi4uIHwgczxOLTE+IHxcbiAgICAgdn1cblxuICAgICBBIFtQb2ludGVyLnRdIHRvIGEgdHVwbGUgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXggd2hlcmUgaXRzIGhlYWRlciBpcywgYXMgd2VsbCBhc1xuICAgICAoYSBtYXNrIG9mKSB0aGUgdHVwbGUncyB1bmlxdWUgaWQuXG5cbiAgICAgVGhlIGZyZWUgdHVwbGVzIGFyZSBzaW5nbHkgbGlua2VkIHZpYSB0aGUgaGVhZGVycy5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgaW4gdXNlLCBpdHMgaGVhZGVyIGlzIG1hcmtlZCB0byBpbmRpY2F0ZSBzbywgYW5kIGFsc28gdG8gaW5jbHVkZSB0aGVcbiAgICAgdHVwbGUncyB1bmlxdWUgaWQuICBUaGlzIGFsbG93cyB1cyB0byBjaGVjayBpbiBjb25zdGFudCB0aW1lIHdoZXRoZXIgYSBwb2ludGVyIGlzXG4gICAgIHZhbGlkLCBieSBjb21wYXJpbmcgdGhlIGlkIGluIHRoZSBwb2ludGVyIHdpdGggdGhlIGlkIGluIHRoZSBoZWFkZXIuXG5cbiAgICAgV2hlbiBhIHR1cGxlIGlzIG5vdCBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgcGFydCBvZiB0aGUgZnJlZSBsaXN0LCBhbmQgaXRzIHR1cGxlIHNsb3RzXG4gICAgIGhhdmUgZHVtbXkgdmFsdWVzIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlcywgZnJvbSB0aGUgW2R1bW15XSB0dXBsZSBzdXBwbGllZCB0b1xuICAgICBbY3JlYXRlXS4gIFdlIG11c3QgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGNvcnJlY3QgdHlwZSB0byBwcmV2ZW50IGEgc2VnZmF1bHQgaW5cbiAgICAgY29kZSB0aGF0IChtaXN0YWtlbmx5KSB1c2VzIGEgcG9pbnRlciB0byBhIGZyZWUgdHVwbGUuXG5cbiAgICAgRm9yIFtQb29sLlVuc2FmZV0sIGEgc2xvdCBpbiBhIGZyZWUgb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYW4gaW50OyBpdCBtdXN0IG5vdCBiZVxuICAgICBwb2ludGVyIHRvIHByZXZlbnQgYSBzcGFjZSBsZWFrLiAgSG93ZXZlciwgdGhlIGludCBpbiB0aGUgc2xvdCBtYXkgbm90IHJlcHJlc2VudCBhXG4gICAgIHZhbGlkIHZhbHVlIG9mIHRoZSB0eXBlLlxuICAqKVxuXG4gIG1vZHVsZSBTbG90ID0gc3RydWN0XG4gICAgdHlwZSAoJ3Nsb3RzLCAnYSkgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgdDAgPSAxXG4gICAgbGV0IHQxID0gMlxuICAgIGxldCB0MiA9IDNcbiAgICBsZXQgdDMgPSA0XG4gICAgbGV0IHQ0ID0gNVxuICAgIGxldCB0NSA9IDZcbiAgICBsZXQgdDYgPSA3XG4gICAgbGV0IHQ3ID0gOFxuICAgIGxldCB0OCA9IDlcbiAgICBsZXQgdDkgPSAxMFxuICAgIGxldCB0MTAgPSAxMVxuICAgIGxldCB0MTEgPSAxMlxuICAgIGxldCB0MTIgPSAxM1xuICAgIGxldCB0MTMgPSAxNFxuICAgIGxldCV0ZXN0IF8gPSB0MTMgPSBtYXhfc2xvdFxuICBlbmRcblxuICAoKiBXZSBvbmx5IGhhdmUgW0ludC5udW1fYml0c10gYml0cyBhdmFpbGFibGUgZm9yIHBvb2wgcG9pbnRlcnMuICBUaGUgYml0cyBvZiBhIHBvb2xcbiAgICAgcG9pbnRlciBlbmNvZGUgdHdvIHRoaW5nczpcblxuICAgICAtIHRoZSB0dXBsZSdzIGFycmF5IGluZGV4IGluIHRoZSBwb29sXG4gICAgIC0gdGhlIHR1cGxlJ3MgaWRlbnRpZmllciAobm90IG5lY2Vzc2FyaWx5IHVuaXF1ZSlcblxuICAgICBXZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBhcyBsYXJnZSBhcyBuZWVkZWQgZm9yIHRoZSBtYXhpbXVtIHBvb2wgY2FwYWNpdHlcbiAgICAgdGhhdCB3ZSB3YW50IHRvIHN1cHBvcnQsIGFuZCB1c2UgdGhlIHJlbWFpbmluZyBbbWFza2VkX3R1cGxlX2lkX251bV9iaXRzXSBiaXRzIGZvclxuICAgICB0aGUgaWRlbnRpZmllci4gIDY0LWJpdCBhbmQgMzItYml0IGFyY2hpdGVjdHVyZXMgdHlwaWNhbGx5IGhhdmUgdmVyeSBkaWZmZXJlbnRcbiAgICAgYWRkcmVzcy1zcGFjZSBzaXplcywgc28gd2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gZGlmZmVyZW50bHkuICopXG5cbiAgbGV0IGFycmF5X2luZGV4X251bV9iaXRzID1cbiAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSA2Myk7XG4gICAgICAzMClcbiAgICBlbHNlIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gMzEgfHwgSW50Lm51bV9iaXRzID0gMzIpO1xuICAgICAgMjIpXG4gIDs7XG5cbiAgbGV0IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA9IEludC5udW1fYml0cyAtIGFycmF5X2luZGV4X251bV9iaXRzXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuICBsZXQgbWF4X2FycmF5X2xlbmd0aCA9IDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzXG5cbiAgbW9kdWxlIFR1cGxlX2lkIDogc2lnXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaW5pdCA6IHRcbiAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBleGFtcGxlcyA6IHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIFdlIGd1YXJhbnRlZSB0aGF0IHR1cGxlIGlkcyBhcmUgbm9ubmVnYXRpdmUgc28gdGhhdCB0aGV5IGNhbiBiZSBlbmNvZGVkIGluXG4gICAgICAgaGVhZGVycy4gKilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQgPj0gMClcbiAgICBsZXQgdG9fc3RyaW5nID0gSW50LnRvX3N0cmluZ1xuICAgIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbiAgICBsZXQgaW5pdCA9IDBcbiAgICBsZXQgbmV4dCB0ID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiB0ICsgMSBlbHNlIGlmIHQgPSBJbnQubWF4X3ZhbHVlIHRoZW4gMCBlbHNlIHQgKyAxXG4gICAgbGV0IHRvX2ludCB0ID0gdFxuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIGlmIGkgPCAwXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVHVwbGVfaWQub2ZfaW50IGdvdCBuZWdhdGl2ZSBpbnRcIiBpIFslc2V4cF9vZjogaW50XTtcbiAgICAgIGlcbiAgICA7O1xuXG4gICAgbGV0IGV4YW1wbGVzID0gWyAwOyAxOyAweDFGRkZfRkZGRjsgSW50Lm1heF92YWx1ZSBdXG4gIGVuZFxuXG4gIGxldCB0dXBsZV9pZF9tYXNrID0gKDEgbHNsIG1hc2tlZF90dXBsZV9pZF9udW1fYml0cykgLSAxXG5cbiAgbW9kdWxlIFBvaW50ZXIgOiBzaWdcbiAgICAoKiBbUG9pbnRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHN1bSB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBOb3JtYWwgb2YgeyBoZWFkZXJfaW5kZXggOiBpbnQ7IG1hc2tlZF90dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIFRoZSBlbmNvZGluZyBpcyBjaG9zZW4gdG8gb3B0aW1pemUgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiwgbmFtZWx5IHR1cGxlLXNsb3RcbiAgICAgICBhY2Nlc3MsIHRoZSBbc2xvdF9pbmRleF0gZnVuY3Rpb24uICBUaGUgZW5jb2RpbmcgaXMgZGVzaWduZWQgc28gdGhhdCBbc2xvdF9pbmRleF1cbiAgICAgICBwcm9kdWNlcyBhIG5lZ2F0aXZlIG51bWJlciBmb3IgW051bGxdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzdWJzZXF1ZW50IGFycmF5IGJvdW5kc1xuICAgICAgIGNoZWNrIHRvIGZhaWwuICopXG5cbiAgICB0eXBlICdzbG90cyB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBwaHlzX2NvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHBoeXNfZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCogVGhlIG51bGwgcG9pbnRlci4gIFtudWxsXSBpcyBhIGZ1bmN0aW9uIGR1ZSB0byBpc3N1ZXMgd2l0aCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24uICopXG5cbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gXyB0XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCogTm9ybWFsIHBvaW50ZXJzLiAqKVxuXG4gICAgdmFsIGNyZWF0ZSA6IGhlYWRlcl9pbmRleDppbnQgLT4gVHVwbGVfaWQudCAtPiBfIHRcbiAgICB2YWwgaGVhZGVyX2luZGV4IDogXyB0IC0+IGludFxuICAgIHZhbCBtYXNrZWRfdHVwbGVfaWQgOiBfIHQgLT4gaW50XG4gICAgdmFsIHNsb3RfaW5kZXggOiBfIHQgLT4gKF8sIF8pIFNsb3QudCAtPiBpbnRcbiAgICB2YWwgZmlyc3Rfc2xvdF9pbmRleCA6IF8gdCAtPiBpbnRcblxuICAgIG1vZHVsZSBJZCA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgdmFsIHRvX2ludDYzIDogdCAtPiBJbnQ2My50XG4gICAgICB2YWwgb2ZfaW50NjMgOiBJbnQ2My50IC0+IHRcbiAgICBlbmRcblxuICAgIHZhbCB0b19pZCA6IF8gdCAtPiBJZC50XG4gICAgdmFsIG9mX2lkX2V4biA6IElkLnQgLT4gXyB0XG4gIGVuZCA9IHN0cnVjdFxuICAgICgqIEEgcG9pbnRlciBpcyBlaXRoZXIgW251bGxdIG9yIHRoZSAocG9zaXRpdmUpIGluZGV4IGluIHRoZSBwb29sIG9mIHRoZSBuZXh0LWZyZWVcbiAgICAgICBmaWVsZCBwcmVjZWVkaW5nIHRoZSB0dXBsZSdzIHNsb3RzLiAqKVxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGxldCBzZXhwX29mX3QgXyB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPFBvb2wuUG9pbnRlci50OiAweCUwOHg+XCIgdClcbiAgICBsZXQgcGh5c19lcXVhbCAodDEgOiBfIHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxuICAgIGxldCBwaHlzX2NvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IG51bGwgKCkgPSAtbWF4X3Nsb3QgLSAxXG4gICAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcblxuICAgICgqIFtudWxsXSBtdXN0IGJlIHN1Y2ggdGhhdCBbbnVsbCArIHNsb3RdIGlzIGFuIGludmFsaWQgYXJyYXkgaW5kZXggZm9yIGFsbCBzbG90cy5cbiAgICAgICBPdGhlcndpc2UgZ2V0L3NldCBvbiB0aGUgbnVsbCBwb2ludGVyIG1heSBsZWFkIHRvIGEgc2VnZmF1bHQuICopXG4gICAgbGV0JXRlc3QgXyA9IG51bGwgKCkgKyBtYXhfc2xvdCA8IDBcblxuICAgIGxldCBjcmVhdGUgfmhlYWRlcl9pbmRleCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9XG4gICAgICBoZWFkZXJfaW5kZXhcbiAgICAgIGxvciAoKFR1cGxlX2lkLnRvX2ludCB0dXBsZV9pZCBsYW5kIHR1cGxlX2lkX21hc2spIGxzbCBhcnJheV9pbmRleF9udW1fYml0cylcbiAgICA7O1xuXG4gICAgbGV0IGhlYWRlcl9pbmRleF9tYXNrID0gKDEgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKSAtIDFcbiAgICBsZXQgbWFza2VkX3R1cGxlX2lkIHQgPSB0IGxzciBhcnJheV9pbmRleF9udW1fYml0c1xuICAgIGxldCBoZWFkZXJfaW5kZXggdCA9IHQgbGFuZCBoZWFkZXJfaW5kZXhfbWFza1xuICAgIGxldCBpbnZhcmlhbnQgXyB0ID0gaWYgbm90IChpc19udWxsIHQpIHRoZW4gYXNzZXJ0IChoZWFkZXJfaW5kZXggdCA+IDApXG4gICAgbGV0JXRlc3RfdW5pdCBfID0gaW52YXJpYW50IGlnbm9yZSAobnVsbCAoKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biB0dXBsZV9pZCAtPlxuICAgICAgICBpbnZhcmlhbnQgaWdub3JlIChjcmVhdGUgfmhlYWRlcl9pbmRleDoxIHR1cGxlX2lkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNsb3RfaW5kZXggdCBzbG90ID0gaGVhZGVyX2luZGV4IHQgKyBzbG90XG4gICAgbGV0IGZpcnN0X3Nsb3RfaW5kZXggdCA9IHNsb3RfaW5kZXggdCBTbG90LnQwXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgICBsZXQgb2ZfaW50NjMgaSA9IGlcbiAgICBlbmRcblxuICAgIGxldCB0b19pZCB0ID0gSWQub2ZfaW50IHRcblxuICAgIGxldCBvZl9pZF9leG4gaWQgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCB0ID0gSWQudG9faW50X2V4biBpZCBpblxuICAgICAgICBpZiBpc19udWxsIHRcbiAgICAgICAgdGhlbiB0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaG91bGRfZXF1YWwgPVxuICAgICAgICAgICAgY3JlYXRlIH5oZWFkZXJfaW5kZXg6KGhlYWRlcl9pbmRleCB0KSAoVHVwbGVfaWQub2ZfaW50IChtYXNrZWRfdHVwbGVfaWQgdCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIHQgc2hvdWxkX2VxdWFsXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcInNob3VsZCBlcXVhbFwiIHNob3VsZF9lcXVhbCBbJXNleHBfb2Y6IF8gdF0pXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJQb2ludGVyLm9mX2lkX2V4biBnb3Qgc3RyYW5nZSBpZFwiXG4gICAgICAgICAgKGlkLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBJZC50ICogZXhuXVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgICAoKiBBIFtIZWFkZXIudF0gaXMgYW4gZW5jb2RpbmcgYXMgYW4gW2ludF0gb2YgdGhlIGZvbGxvd2luZyB0eXBlOlxuXG4gICAgICAge1tcbiAgICAgICAgIHwgTnVsbFxuICAgICAgICAgfCBGcmVlIG9mIHsgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IGludCB9XG4gICAgICAgICB8IFVzZWQgb2YgeyB0dXBsZV9pZCA6IGludCB9XG4gICAgICAgXX1cblxuICAgICAgIElmIGEgdHVwbGUgaXMgZnJlZSwgaXRzIGhlYWRlciBpcyBzZXQgdG8gZWl0aGVyIFtOdWxsXSBvciBbRnJlZV0gd2l0aFxuICAgICAgIFtuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XSBpbmRpY2F0aW5nIHRoZSBoZWFkZXIgb2YgdGhlIG5leHQgdHVwbGUgb24gdGhlIGZyZWUgbGlzdC5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGluIHVzZSwgaXQgaGVhZGVyIGlzIHNldCB0byBbVXNlZF0uICopXG5cbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB0XG4gICAgdmFsIGlzX251bGwgOiB0IC0+IGJvb2xcbiAgICB2YWwgZnJlZSA6IG5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aW50IC0+IHRcbiAgICB2YWwgaXNfZnJlZSA6IHQgLT4gYm9vbFxuICAgIHZhbCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogdCAtPiBpbnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX2ZyZWUgdF0gKilcblxuICAgIHZhbCB1c2VkIDogVHVwbGVfaWQudCAtPiB0XG4gICAgdmFsIGlzX3VzZWQgOiB0IC0+IGJvb2xcbiAgICB2YWwgdHVwbGVfaWQgOiB0IC0+IFR1cGxlX2lkLnRcblxuICAgICgqIG9ubHkgdmFsaWQgaWYgW2lzX3VzZWQgdF0gKilcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50XG5cbiAgICBsZXQgbnVsbCA9IDBcbiAgICBsZXQgaXNfbnVsbCB0ID0gdCA9IDBcblxuICAgICgqIFdlIGtub3cgdGhhdCBoZWFkZXIgaW5kaWNlcyBhcmUgWz4gMF0sIGJlY2F1c2UgaW5kZXggWzBdIGhvbGRzIHRoZSBtZXRhZGF0YS4gKilcbiAgICBsZXQgZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleCA9IG5leHRfZnJlZV9oZWFkZXJfaW5kZXhcbiAgICBsZXQgaXNfZnJlZSB0ID0gdCA+IDBcbiAgICBsZXQgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0ID0gdFxuICAgIGxldCB1c2VkICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID0gLTEgLSAodHVwbGVfaWQgOj4gaW50KVxuICAgIGxldCBpc191c2VkIHQgPSB0IDwgMFxuICAgIGxldCB0dXBsZV9pZCB0ID0gVHVwbGVfaWQub2ZfaW50ICgtKHQgKyAxKSlcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBMaXN0Lml0ZXIgVHVwbGVfaWQuZXhhbXBsZXMgfmY6KGZ1biBpZCAtPlxuICAgICAgICBsZXQgdCA9IHVzZWQgaWQgaW5cbiAgICAgICAgYXNzZXJ0IChpc191c2VkIHQpO1xuICAgICAgICBhc3NlcnQgKFR1cGxlX2lkLmVxdWFsICh0dXBsZV9pZCB0KSBpZCkpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBpZiBpc19udWxsIHRcbiAgICAgIHRoZW4gU2V4cC5BdG9tIFwibnVsbFwiXG4gICAgICBlbHNlIGlmIGlzX2ZyZWUgdFxuICAgICAgdGhlbiBTZXhwLihMaXN0IFsgQXRvbSBcIkZyZWVcIjsgQXRvbSAoSW50LnRvX3N0cmluZyAobmV4dF9mcmVlX2hlYWRlcl9pbmRleCB0KSkgXSlcbiAgICAgIGVsc2UgU2V4cC4oTGlzdCBbIEF0b20gXCJVc2VkXCI7IEF0b20gKFR1cGxlX2lkLnRvX3N0cmluZyAodHVwbGVfaWQgdCkpIF0pXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1ldGFkYXRhX2luZGV4ID0gMFxuICBsZXQgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ID0gMVxuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgKG1heF9hcnJheV9sZW5ndGggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gKDEgKyBzbG90c19wZXJfdHVwbGUpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBmb3Igc2xvdHNfcGVyX3R1cGxlID0gMSB0byBtYXhfc2xvdCBkb1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKCgxICsgc2xvdHNfcGVyX3R1cGxlKSAqIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICA8PSBtYXhfYXJyYXlfbGVuZ3RoKVxuICAgIGRvbmVcbiAgOztcblxuICBtb2R1bGUgTWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgKCogW3Nsb3RzX3Blcl90dXBsZV0gaXMgbnVtYmVyIG9mIHNsb3RzIGluIGEgdHVwbGUgYXMgc2VlbiBieSB0aGUgdXNlcjsgaS5lLiBub3RcbiAgICAgICAgICAgY291bnRpbmcgdGhlIG5leHQtZnJlZSBwb2ludGVyLiAqKVxuICAgICAgICBzbG90c19wZXJfdHVwbGUgOiBpbnRcbiAgICAgIDsgY2FwYWNpdHkgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2lkIDogVHVwbGVfaWQudFxuICAgICAgOyBtdXRhYmxlIGZpcnN0X2ZyZWUgOiBIZWFkZXIudFxuICAgICAgKCogW2R1bW15XSBpcyBbTm9uZV0gaW4gYW4gdW5zYWZlIHBvb2wuICBJbiBhIHNhZmUgcG9vbCwgW2R1bW15XSBpcyBbU29tZSBhXSwgd2l0aFxuICAgICAgICAgW1VuaWZvcm1fYXJyYXkubGVuZ3RoIGEgPSBzbG90c19wZXJfdHVwbGVdLiAgW2R1bW15XSBpcyBhY3R1YWxseSBhIHR1cGxlIHZhbHVlXG4gICAgICAgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUgKGNvcnJlc3BvbmRpbmcgdG8gWydzbG90c10pLCBidXQgd2UgbWFrZSB0aGUgdHlwZSBvZlxuICAgICAgICAgW2R1bW15XSBiZSBbT2JqLnQgVW5pZm9ybV9hcnJheS50XSBiZWNhdXNlIHdlIGNhbid0IHdyaXRlIHRoYXQgdHlwZSBoZXJlLiAgQWxzbyxcbiAgICAgICAgIHRoZSBwdXJwb3NlIG9mIFtkdW1teV0gaXMgdG8gaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCwgbWFraW5nIFtkdW1teV0gYW4gW09iai50XG4gICAgICAgICBVbmlmb3JtX2FycmF5LnRdIGxldHMgdXMgaW5pdGlhbGl6ZSBhIHBvb2wgZWxlbWVudCB1c2luZyBbVW5pZm9ybV9hcnJheS5ibGl0XVxuICAgICAgICAgZnJvbSBbZHVtbXldIHRvIHRoZSBwb29sLCB3aGljaCBpcyBhbiBbT2JqLnQgVW5pZm9ybV9hcnJheS50XS4gKilcbiAgICAgIDsgZHVtbXkgOiAoT2JqLnQgVW5pZm9ybV9hcnJheS50W0BzZXhwLm9wYXF1ZV0pIG9wdGlvblxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0ID0gMSArIHQuc2xvdHNfcGVyX3R1cGxlXG4gICAgbGV0IGFycmF5X2xlbmd0aCB0ID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHQuY2FwYWNpdHkgKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuXG4gICAgbGV0IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gdCB+aGVhZGVyX2luZGV4ID1cbiAgICAgIChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpIC8gYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdFxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodHVwbGVfbnVtICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gKyAxXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSB0Lmxlbmd0aCA9IHQuY2FwYWNpdHlcbiAgZW5kXG5cbiAgb3BlbiBNZXRhZGF0YVxuXG4gICgqIFdlIHVzZSB0eXBlIFtPYmoudF0gYmVjYXVzZSB0aGUgYXJyYXkgaG9sZHMgYSBtaXggb2YgaW50ZWdlcnMgYXMgd2VsbCBhcyBPQ2FtbCB2YWx1ZXNcbiAgICAgb2YgYXJiaXRyYXJ5IHR5cGUuICopXG4gIHR5cGUgJ3Nsb3RzIHQgPSBPYmoudCBVbmlmb3JtX2FycmF5LnRcblxuICBsZXQgbWV0YWRhdGEgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IG1ldGFkYXRhX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBzbG90cyBNZXRhZGF0YS50KVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9IChtZXRhZGF0YSB0KS5sZW5ndGhcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3R5IHQgPSBNZXRhZGF0YS5zZXhwX29mX3Qgc2V4cF9vZl90eSAobWV0YWRhdGEgdClcblxuICAoKiBCZWNhdXNlIFt1bnNhZmVfaGVhZGVyXSBhbmQgW3Vuc2FmZV9zZXRfaGVhZGVyXSBkbyBub3QgZG8gYSBib3VuZHMgY2hlY2ssIG9uZSBtdXN0IGJlXG4gICAgIHN1cmUgdGhhdCBvbmUgaGFzIGEgdmFsaWQgW2hlYWRlcl9pbmRleF0gYmVmb3JlIGNhbGxpbmcgdGhlbS4gKilcbiAgbGV0IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBoZWFkZXJfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IEhlYWRlci50KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2hlYWRlciB0IH5oZWFkZXJfaW5kZXggKGhlYWRlciA6IEhlYWRlci50KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaGVhZGVyX2luZGV4IChoZWFkZXIgOj4gaW50KVxuICA7O1xuXG4gIGxldCBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgaGVhZGVyX2luZGV4ID49IHN0YXJ0X29mX3R1cGxlc19pbmRleCAmJiBoZWFkZXJfaW5kZXggPCBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyID1cbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgIEhlYWRlci5pc191c2VkIGhlYWRlclxuICAgICYmIFR1cGxlX2lkLnRvX2ludCAoSGVhZGVyLnR1cGxlX2lkIGhlYWRlcikgbGFuZCB0dXBsZV9pZF9tYXNrXG4gICAgICAgPSBQb2ludGVyLm1hc2tlZF90dXBsZV9pZCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyID1cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcilcbiAgICAoKiBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoZSBwb2ludGVyIGlzbid0IFtudWxsXSBhbmQgaXMgaW4gYm91bmRzLCBzbyB3ZSBrbm93IGl0IGlzXG4gICAgICAgdGhlIGluZGV4IG9mIGEgaGVhZGVyLCBzaW5jZSB3ZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYWxsIHBvaW50ZXJzIG90aGVyIHRoYW5cbiAgICAgICBbbnVsbF0gYXJlLiAqKVxuICAgICYmIHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgX3QgcG9pbnRlciA9IFBvaW50ZXIudG9faWQgcG9pbnRlclxuXG4gIGxldCBpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4ID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXhcbiAgICAmJiAwXG4gICAgICAgPSAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KVxuICAgICAgICAgbW9kIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIHRyeVxuICAgICAgbGV0IHBvaW50ZXIgPSBQb2ludGVyLm9mX2lkX2V4biBpZCBpblxuICAgICAgaWYgbm90IChQb2ludGVyLmlzX251bGwgcG9pbnRlcilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgICAgICBpZiBub3QgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpXG4gICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJpbnZhbGlkIGhlYWRlciBpbmRleFwiIGhlYWRlcl9pbmRleCBbJXNleHBfb2Y6IGludF07XG4gICAgICAgIGlmIG5vdCAodW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIpIHRoZW4gZmFpbHdpdGggXCJwb2ludGVyIG5vdCBsaXZlXCIpO1xuICAgICAgcG9pbnRlclxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLnBvaW50ZXJfb2ZfaWRfZXhuIGdvdCBpbnZhbGlkIGlkXCJcbiAgICAgICAgKGlkLCB0LCBleG4pXG4gICAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50ICogXyB0ICogZXhuXVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIG1ldGFkYXRhKSBpblxuICAgICAgTWV0YWRhdGEuRmllbGRzLml0ZXJcbiAgICAgICAgfnNsb3RzX3Blcl90dXBsZTooY2hlY2sgKGZ1biBzbG90c19wZXJfdHVwbGUgLT4gYXNzZXJ0IChzbG90c19wZXJfdHVwbGUgPiAwKSkpXG4gICAgICAgIH5jYXBhY2l0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjYXBhY2l0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChVbmlmb3JtX2FycmF5Lmxlbmd0aCB0ID0gTWV0YWRhdGEuYXJyYXlfbGVuZ3RoIG1ldGFkYXRhKSkpXG4gICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gbWV0YWRhdGEuY2FwYWNpdHkpKSlcbiAgICAgICAgfm5leHRfaWQ6KGNoZWNrIFR1cGxlX2lkLmludmFyaWFudClcbiAgICAgICAgfmZpcnN0X2ZyZWU6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyc3RfZnJlZSAtPlxuICAgICAgICAgICAgIGxldCBmcmVlID0gQXJyYXkuY3JlYXRlIH5sZW46bWV0YWRhdGEuY2FwYWNpdHkgZmFsc2UgaW5cbiAgICAgICAgICAgICBsZXQgciA9IHJlZiBmaXJzdF9mcmVlIGluXG4gICAgICAgICAgICAgd2hpbGUgbm90IChIZWFkZXIuaXNfbnVsbCAhcikgZG9cbiAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSAhciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChIZWFkZXIuaXNfZnJlZSBoZWFkZXIpO1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IEhlYWRlci5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4IGhlYWRlciBpblxuICAgICAgICAgICAgICAgYXNzZXJ0IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KTtcbiAgICAgICAgICAgICAgIGxldCB0dXBsZV9udW0gPSBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgIGlmIGZyZWUuKHR1cGxlX251bSlcbiAgICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJjeWNsZSBpbiBmcmVlIGxpc3RcIiB0dXBsZV9udW0gWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICAgICAgICAgZnJlZS4odHVwbGVfbnVtKSA8LSB0cnVlO1xuICAgICAgICAgICAgICAgciA6PSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleFxuICAgICAgICAgICAgIGRvbmUpKVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgU29tZSBkdW1teSAtPiBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGR1bW15ID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlKVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgaWYgSGVhZGVyLmlzX2ZyZWUgaGVhZGVyXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdF9zbG90ID0gdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgICAgZm9yIHNsb3QgPSAwIHRvIG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoT2JqLmlzX2ludCAoVW5pZm9ybV9hcnJheS5nZXQgdCAoZmlyc3Rfc2xvdCArIHNsb3QpKSlcbiAgICAgICAgICAgICAgICAgICBkb25lKVxuICAgICAgICAgICAgICAgZG9uZSkpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuaW52YXJpYW50IGZhaWxlZFwiIChleG4sIHQpIFslc2V4cF9vZjogZXhuICogXyB0XVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID0gKG1ldGFkYXRhIHQpLmNhcGFjaXR5XG4gIGxldCBpc19mdWxsIHQgPSBNZXRhZGF0YS5pc19mdWxsIChtZXRhZGF0YSB0KVxuXG4gIGxldCB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0IG1ldGFkYXRhIH5oZWFkZXJfaW5kZXggPVxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBtZXRhZGF0YS5maXJzdF9mcmVlO1xuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gSGVhZGVyLmZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXg6aGVhZGVyX2luZGV4XG4gIDs7XG5cbiAgbGV0IHNldF9tZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSBtZXRhZGF0YSA9XG4gICAgVW5pZm9ybV9hcnJheS5zZXQgdCBtZXRhZGF0YV9pbmRleCAoT2JqLnJlcHIgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hcnJheSAodHlwZSBzbG90cykgKG1ldGFkYXRhIDogc2xvdHMgTWV0YWRhdGEudCkgOiBzbG90cyB0ID1cbiAgICBsZXQgdCA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlX29ial9hcnJheSB+bGVuOihNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGE7XG4gICAgdFxuICA7O1xuXG4gICgqIEluaXRpYWxpemUgdHVwbGVzIG51bWJlcmVkIGZyb20gW2xvXSAoaW5jbHVzaXZlKSB1cCB0byBbaGldIChleGNsdXNpdmUpLiAgRm9yIGVhY2hcbiAgICAgdHVwbGUsIHRoaXMgcHV0cyBkdW1teSB2YWx1ZXMgaW4gdGhlIHR1cGxlJ3Mgc2xvdHMgYW5kIGFkZHMgdGhlIHR1cGxlIHRvIHRoZSBmcmVlXG4gICAgIGxpc3QuICopXG4gIGxldCB1bnNhZmVfaW5pdF9yYW5nZSB0IG1ldGFkYXRhIH5sbyB+aGkgPVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gbG8gdG8gaGkgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICAgICB+c3JjX3BvczowXG4gICAgICAgICAgIH5kc3Q6dFxuICAgICAgICAgICB+ZHN0X3BvczoodHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGZvciB0dXBsZV9udW0gPSBoaSAtIDEgZG93bnRvIGxvIGRvXG4gICAgICB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdFxuICAgICAgICB0XG4gICAgICAgIG1ldGFkYXRhXG4gICAgICAgIH5oZWFkZXJfaW5kZXg6KHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLmNyZWF0ZSBnb3QgaW52YWxpZCBjYXBhY2l0eVwiIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgc2xvdHNfcGVyX3R1cGxlID0gU2xvdHMuc2xvdHNfcGVyX3R1cGxlIHNsb3RzIGluXG4gICAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlIGluXG4gICAgaWYgY2FwYWNpdHkgPiBtYXhfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuY3JlYXRlIGdvdCB0b28gbGFyZ2UgY2FwYWNpdHlcIlxuICAgICAgICAoY2FwYWNpdHksIGBtYXggbWF4X2NhcGFjaXR5KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIFsgYG1heCBvZiBpbnQgXV07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aCA9IDBcbiAgICAgIDsgbmV4dF9pZCA9IFR1cGxlX2lkLmluaXRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZV9hcnJheSBtZXRhZGF0YSBpblxuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvOjAgfmhpOmNhcGFjaXR5O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlICh0eXBlIHR1cGxlKSAoc2xvdHMgOiAodHVwbGUsIF8pIFNsb3RzLnQpIH5jYXBhY2l0eSB+ZHVtbXkgPVxuICAgIGxldCBkdW1teSA9XG4gICAgICBpZiBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgPSAxXG4gICAgICB0aGVuIFVuaWZvcm1fYXJyYXkuc2luZ2xldG9uIChPYmoucmVwciAoZHVtbXkgOiB0dXBsZSkpXG4gICAgICBlbHNlIChPYmoubWFnaWMgKGR1bW15IDogdHVwbGUpIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgIGluXG4gICAgY3JlYXRlX3dpdGhfZHVtbXkgc2xvdHMgfmNhcGFjaXR5IH5kdW1teTooU29tZSBkdW1teSlcbiAgOztcblxuICAoKiBQdXJnZSBhIHBvb2wgYW5kIG1ha2UgaXQgdW51c2FibGUuICopXG4gIGxldCBkZXN0cm95IHQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICAoKiBXZSBjbGVhciBvdXQgYWxsIHRoZSBwb29sJ3MgZW50cmllcywgd2hpY2ggY2F1c2VzIGFsbCBwb2ludGVycyB0byBiZSBpbnZhbGlkLiAgVGhpc1xuICAgICAgIGFsc28gcHJldmVudHMgdGhlIGRlc3Ryb3llZCBwb29sIGZyb20gdW5uZWNlc3NhcmlseSBrZWVwaW5nIGhlYXAgYmxvY2tzIGFsaXZlLlxuICAgICAgIFRoaXMgaXMgc2ltaWxhciB0byBbZnJlZV1pbmcgYWxsIHRoZSBlbnRyaWVzIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB3ZSBtYWtlIHRoZVxuICAgICAgIGZyZWUgbGlzdCBlbXB0eSBhcyB3ZWxsLiAqKVxuICAgIChtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgIHwgTm9uZSAtPlxuICAgICAgIGZvciBpID0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4IHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChPYmoucmVwciAwKVxuICAgICAgIGRvbmVcbiAgICAgfCBTb21lIGR1bW15IC0+XG4gICAgICAgZm9yIHR1cGxlX251bSA9IDAgdG8gbWV0YWRhdGEuY2FwYWNpdHkgLSAxIGRvXG4gICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBIZWFkZXIubnVsbDtcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOihoZWFkZXJfaW5kZXggKyAxKVxuICAgICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgIGRvbmUpO1xuICAgIGxldCBtZXRhZGF0YSA9XG4gICAgICB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgOyBjYXBhY2l0eSA9IDBcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gbWV0YWRhdGEubmV4dF9pZFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXkgPSBtZXRhZGF0YS5kdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgc2V0X21ldGFkYXRhIHQgbWV0YWRhdGFcbiAgOztcblxuICBsZXRbQGNvbGRdIGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGxldCB7IE1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICA7IGNhcGFjaXR5ID0gb2xkX2NhcGFjaXR5XG4gICAgICAgIDsgbGVuZ3RoXG4gICAgICAgIDsgbmV4dF9pZFxuICAgICAgICA7IGZpcnN0X2ZyZWUgPSBfXG4gICAgICAgIDsgZHVtbXlcbiAgICAgICAgfVxuICAgICAgPVxuICAgICAgbWV0YWRhdGEgdFxuICAgIGluXG4gICAgbGV0IGNhcGFjaXR5ID1cbiAgICAgIG1pbiAobWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpIChncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5KVxuICAgIGluXG4gICAgaWYgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wuZ3JvdyBjYW5ub3QgZ3JvdyBwb29sOyBjYXBhY2l0eSBhbHJlYWR5IGF0IG1heGltdW1cIlxuICAgICAgICBjYXBhY2l0eVxuICAgICAgICBbJXNleHBfb2Y6IGludF07XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5XG4gICAgICA7IGxlbmd0aFxuICAgICAgOyBuZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQnID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICB+c3JjOnRcbiAgICAgIH5zcmNfcG9zOnN0YXJ0X29mX3R1cGxlc19pbmRleFxuICAgICAgfmRzdDp0J1xuICAgICAgfmRzdF9wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+bGVuOihvbGRfY2FwYWNpdHkgKiBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YSk7XG4gICAgZGVzdHJveSB0O1xuICAgIHVuc2FmZV9pbml0X3JhbmdlIHQnIG1ldGFkYXRhIH5sbzpvbGRfY2FwYWNpdHkgfmhpOmNhcGFjaXR5O1xuICAgIGZvciB0dXBsZV9udW0gPSBvbGRfY2FwYWNpdHkgLSAxIGRvd250byAwIGRvXG4gICAgICBsZXQgaGVhZGVyX2luZGV4ID0gdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQnIH5oZWFkZXJfaW5kZXggaW5cbiAgICAgIGlmIG5vdCAoSGVhZGVyLmlzX3VzZWQgaGVhZGVyKVxuICAgICAgdGhlbiB1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCB0JyBtZXRhZGF0YSB+aGVhZGVyX2luZGV4XG4gICAgZG9uZTtcbiAgICB0J1xuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfbWFsbG9jX2Z1bGwgdCA9XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJQb29sLm1hbGxvYyBvZiBmdWxsIHBvb2xcIiB0IFslc2V4cF9vZjogXyB0XVxuICA7O1xuXG4gIGxldCBtYWxsb2MgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgOiBzbG90cyBQb2ludGVyLnQgPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBsZXQgZmlyc3RfZnJlZSA9IG1ldGFkYXRhLmZpcnN0X2ZyZWUgaW5cbiAgICBpZiBIZWFkZXIuaXNfbnVsbCBmaXJzdF9mcmVlIHRoZW4gcmFpc2VfbWFsbG9jX2Z1bGwgdDtcbiAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggZmlyc3RfZnJlZSBpblxuICAgIG1ldGFkYXRhLmZpcnN0X2ZyZWUgPC0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXg7XG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCArIDE7XG4gICAgbGV0IHR1cGxlX2lkID0gbWV0YWRhdGEubmV4dF9pZCBpblxuICAgIHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoSGVhZGVyLnVzZWQgdHVwbGVfaWQpO1xuICAgIG1ldGFkYXRhLm5leHRfaWQgPC0gVHVwbGVfaWQubmV4dCB0dXBsZV9pZDtcbiAgICBQb2ludGVyLmNyZWF0ZSB+aGVhZGVyX2luZGV4IHR1cGxlX2lkXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIG1ldGFkYXRhLmxlbmd0aCA8LSBtZXRhZGF0YS5sZW5ndGggLSAxO1xuICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleDooUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlcik7XG4gICAgbWF0Y2ggbWV0YWRhdGEuZHVtbXkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHBvcyA9IFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIHQgKHBvcyArIGkpXG4gICAgICBkb25lXG4gICAgfCBTb21lIGR1bW15IC0+XG4gICAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICB+bGVuOm1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZVxuICAgICAgICB+ZHN0OnRcbiAgICAgICAgfmRzdF9wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBmcmVlICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIChwb2ludGVyIDogc2xvdHMgUG9pbnRlci50KSA9XG4gICAgKCogQ2hlY2sgW3BvaW50ZXJfaXNfdmFsaWRdIHRvOlxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIG51bGwgcG9pbnRlclxuICAgICAgIC0gYXZvaWQgZnJlZWluZyBhIGZyZWUgcG9pbnRlciAodGhpcyB3b3VsZCBsZWFkIHRvIGEgcG9vbCBpbmNvbnNpc3RlbmN5KVxuICAgICAgIC0gYmUgYWJsZSB0byB1c2UgdW5zYWZlIGZ1bmN0aW9ucyBhZnRlci4gKilcbiAgICBpZiBub3QgKHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5mcmVlIG9mIGludmFsaWQgcG9pbnRlclwiXG4gICAgICAgIChwb2ludGVyLCB0KVxuICAgICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50ICogXyB0XTtcbiAgICB1bnNhZmVfZnJlZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzIgdCBhMCBhMSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEzKSAoT2JqLnJlcHIgYTEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTQpIChPYmoucmVwciBhMTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgZ2V0IHQgcCBzbG90ID0gT2JqLm9iaiAoVW5pZm9ybV9hcnJheS5nZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkpXG5cbiAgbGV0IHVuc2FmZV9nZXQgdCBwIHNsb3QgPVxuICAgIE9iai5vYmogKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcbiAgOztcblxuICBsZXQgc2V0IHQgcCBzbG90IHggPSBVbmlmb3JtX2FycmF5LnNldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcblxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB4ID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAoUG9pbnRlci5zbG90X2luZGV4IHAgc2xvdCkgKE9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGdldF90dXBsZSAodHlwZSB0dXBsZSkgKHQgOiAodHVwbGUsIF8pIFNsb3RzLnQgdCkgcG9pbnRlciA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBsZW4gPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBsZW4gPSAxXG4gICAgdGhlbiBnZXQgdCBwb2ludGVyIFNsb3QudDBcbiAgICBlbHNlXG4gICAgICAoT2JqLm1hZ2ljXG4gICAgICAgICAoVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOihQb2ludGVyLmZpcnN0X3Nsb3RfaW5kZXggcG9pbnRlcikgfmxlblxuICAgICAgICAgIDogT2JqLnQgVW5pZm9ybV9hcnJheS50KVxuICAgICAgIDogdHVwbGUpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb29sXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb29sXG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgPSBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15Ok5vbmVcbmVuZFxuXG5tb2R1bGUgRGVidWcgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBuYW1lIHRzIGFyZyBzZXhwX29mX2FyZyBzZXhwX29mX3Jlc3VsdCBmID1cbiAgICBsZXQgcHJlZml4ID0gXCJQb29sLlwiIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIExpc3QuaXRlciB0cyB+ZjooaW52YXJpYW50IGlnbm9yZSk7XG4gICAgaWYgIXNob3dfbWVzc2FnZXMgdGhlbiBEZWJ1Zy5lcHJpbnRzIChjb25jYXQgWyBwcmVmaXg7IG5hbWUgXSkgYXJnIHNleHBfb2ZfYXJnO1xuICAgIGxldCByZXN1bHRfb3JfZXhuID0gUmVzdWx0LnRyeV93aXRoIGYgaW5cbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmVwcmludHNcbiAgICAgICAgKGNvbmNhdCBbIHByZWZpeDsgbmFtZTsgXCIgcmVzdWx0XCIgXSlcbiAgICAgICAgcmVzdWx0X29yX2V4blxuICAgICAgICBbJXNleHBfb2Y6IChyZXN1bHQsIGV4bikgUmVzdWx0LnRdO1xuICAgIFJlc3VsdC5va19leG4gcmVzdWx0X29yX2V4blxuICA7O1xuXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgb3BlbiBQb2ludGVyXG5cbiAgICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2YsIHR5cGVyZXBdXG5cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2NvbXBhcmVcIlxuICAgICAgICBbXVxuICAgICAgICAodDEsIHQyKVxuICAgICAgICBbJXNleHBfb2Y6IF8gdCAqIF8gdF1cbiAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19jb21wYXJlIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgcGh5c19lcXVhbCB0MSB0MiA9XG4gICAgICBkZWJ1Z1xuICAgICAgICBcIlBvaW50ZXIucGh5c19lcXVhbFwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgIChmdW4gKCkgLT4gcGh5c19lcXVhbCB0MSB0MilcbiAgICA7O1xuXG4gICAgbGV0IGlzX251bGwgdCA9XG4gICAgICBkZWJ1ZyBcIlBvaW50ZXIuaXNfbnVsbFwiIFtdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19udWxsIHQpXG4gICAgOztcblxuICAgIGxldCBudWxsID0gbnVsbFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBvcGVuIElkXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgbGV0IG9mX2ludDYzIGkgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQub2ZfaW50NjNcIiBbXSBpIFslc2V4cF9vZjogSW50NjMudF0gWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgb2ZfaW50NjMgaSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID1cbiAgICAgICAgZGVidWcgXCJQb2ludGVyLklkLnRvX2ludDYzXCIgW10gdCBbJXNleHBfb2Y6IHRdIFslc2V4cF9vZjogSW50NjMudF0gKGZ1biAoKSAtPlxuICAgICAgICAgIHRvX2ludDYzIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIG5vbnJlYyAnc2xvdHMgdCA9ICdzbG90cyB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID1cbiAgICBkZWJ1Z1xuICAgICAgXCJpZF9vZl9wb2ludGVyXCJcbiAgICAgIFsgdCBdXG4gICAgICBwb2ludGVyXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICAoZnVuICgpIC0+IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBkZWJ1Z1xuICAgICAgXCJwb2ludGVyX29mX2lkX2V4blwiXG4gICAgICBbIHQgXVxuICAgICAgaWRcbiAgICAgIFslc2V4cF9vZjogUG9pbnRlci5JZC50XVxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9vZl9pZF9leG4gdCBpZClcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfaXNfdmFsaWRcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAoZnVuICgpIC0+IHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgc2xvdHMgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgZGVidWcgXCJjcmVhdGVcIiBbXSBjYXBhY2l0eSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15KVxuICA7O1xuXG4gIGxldCBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSA9XG4gICAgZGVidWcgXCJtYXhfY2FwYWNpdHlcIiBbXSBzbG90c19wZXJfdHVwbGUgWyVzZXhwX29mOiBpbnRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+XG4gICAgICBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQgY2FwYWNpdHkgdCA9XG4gICAgZGVidWcgXCJjYXBhY2l0eVwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogaW50XSAoZnVuICgpIC0+IGNhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGdyb3cgP2NhcGFjaXR5IHQgPVxuICAgIGRlYnVnXG4gICAgICBcImdyb3dcIlxuICAgICAgWyB0IF1cbiAgICAgIChgY2FwYWNpdHkgY2FwYWNpdHkpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBvcHRpb24gXV1cbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICAgICAgKGZ1biAoKSAtPiBncm93ID9jYXBhY2l0eSB0KVxuICA7O1xuXG4gIGxldCBpc19mdWxsIHQgPVxuICAgIGRlYnVnIFwiaXNfZnVsbFwiIFsgdCBdIHQgWyVzZXhwX29mOiBfIHRdIFslc2V4cF9vZjogYm9vbF0gKGZ1biAoKSAtPiBpc19mdWxsIHQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgZGVidWcgXCJ1bnNhZmVfZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICB1bnNhZmVfZnJlZSB0IHApXG4gIDs7XG5cbiAgbGV0IGZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcImZyZWVcIiBbIHQgXSBwIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPiBmcmVlIHQgcClcbiAgOztcblxuICBsZXQgZGVidWdfbmV3IHQgZiA9IGRlYnVnIFwibmV3XCIgWyB0IF0gKCkgWyVzZXhwX29mOiB1bml0XSBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBmXG4gIGxldCBuZXcxIHQgYTAgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEgdCBhMClcbiAgbGV0IG5ldzIgdCBhMCBhMSA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzQgdCBhMCBhMSBhMiBhMylcbiAgbGV0IG5ldzUgdCBhMCBhMSBhMiBhMyBhNCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNilcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5KVxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyKVxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlIHQgcG9pbnRlciA9XG4gICAgZGVidWcgXCJnZXRfdHVwbGVcIiBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPlxuICAgICAgZ2V0X3R1cGxlIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZGVidWdfZ2V0IG5hbWUgZiB0IHBvaW50ZXIgPVxuICAgIGRlYnVnIG5hbWUgWyB0IF0gcG9pbnRlciBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IF9dIChmdW4gKCkgLT4gZiB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGdldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcImdldFwiIGdldCB0IHBvaW50ZXIgc2xvdFxuICBsZXQgdW5zYWZlX2dldCB0IHBvaW50ZXIgc2xvdCA9IGRlYnVnX2dldCBcInVuc2FmZV9nZXRcIiB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90XG5cbiAgbGV0IGRlYnVnX3NldCBuYW1lIGYgdCBwb2ludGVyIHNsb3QgYSA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogdW5pdF0gKGZ1biAoKSAtPlxuICAgICAgZiB0IHBvaW50ZXIgc2xvdCBhKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInNldFwiIHNldCB0IHBvaW50ZXIgc2xvdCBhXG4gIGxldCB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGEgPSBkZWJ1Z19zZXQgXCJ1bnNhZmVfc2V0XCIgdW5zYWZlX3NldCB0IHBvaW50ZXIgc2xvdCBhXG5lbmRcblxubW9kdWxlIEVycm9yX2NoZWNrIChQb29sIDogUykgPSBzdHJ1Y3RcbiAgb3BlbiBQb29sXG4gIG1vZHVsZSBTbG90cyA9IFNsb3RzXG4gIG1vZHVsZSBTbG90ID0gU2xvdFxuXG4gIG1vZHVsZSBQb2ludGVyID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7IG11dGFibGUgaXNfdmFsaWQgOiBib29sXG4gICAgICA7IHBvaW50ZXIgOiAnc2xvdHMgUG9pbnRlci50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBjcmVhdGUgcG9pbnRlciA9IHsgaXNfdmFsaWQgPSB0cnVlOyBwb2ludGVyIH1cbiAgICBsZXQgbnVsbCAoKSA9IHsgaXNfdmFsaWQgPSBmYWxzZTsgcG9pbnRlciA9IFBvaW50ZXIubnVsbCAoKSB9XG4gICAgbGV0IHBoeXNfY29tcGFyZSB0MSB0MiA9IFBvaW50ZXIucGh5c19jb21wYXJlIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID0gUG9pbnRlci5waHlzX2VxdWFsIHQxLnBvaW50ZXIgdDIucG9pbnRlclxuICAgIGxldCBpc19udWxsIHQgPSBQb2ludGVyLmlzX251bGwgdC5wb2ludGVyXG5cbiAgICBsZXQgZm9sbG93IHQgPVxuICAgICAgaWYgbm90IHQuaXNfdmFsaWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHVzZSBpbnZhbGlkIHBvaW50ZXJcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICAgIHQucG9pbnRlclxuICAgIDs7XG5cbiAgICBsZXQgaW52YWxpZGF0ZSB0ID0gdC5pc192YWxpZCA8LSBmYWxzZVxuXG4gICAgbW9kdWxlIElkID0gUG9pbnRlci5JZFxuICBlbmRcblxuICB0eXBlICdzbG90cyB0ID0gJ3Nsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH0gPVxuICAgIGlzX3ZhbGlkICYmIHBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyXG4gIDs7XG5cbiAgKCogV2UgZG9uJ3QgZG8gW1BvaW50ZXIuZm9sbG93IHBvaW50ZXJdLCBiZWNhdXNlIHRoYXQgd291bGQgZGlzYWxsb3cgW2lkX29mX3BvaW50ZXIgdFxuICAgICAoUG9pbnRlci5udWxsICgpKV0uICopXG4gIGxldCBpZF9vZl9wb2ludGVyIHQgcG9pbnRlciA9IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyLlBvaW50ZXIucG9pbnRlclxuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICBsZXQgcG9pbnRlciA9IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgaW5cbiAgICBsZXQgaXNfdmFsaWQgPSBQb29sLnBvaW50ZXJfaXNfdmFsaWQgdCBwb2ludGVyIGluXG4gICAgeyBQb2ludGVyLmlzX3ZhbGlkOyBwb2ludGVyIH1cbiAgOztcblxuICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5XG4gIGxldCBtYXhfY2FwYWNpdHkgPSBtYXhfY2FwYWNpdHlcbiAgbGV0IGdyb3cgPSBncm93XG4gIGxldCBpc19mdWxsID0gaXNfZnVsbFxuICBsZXQgZ2V0X3R1cGxlIHQgcCA9IGdldF90dXBsZSB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgZ2V0IHQgcCA9IGdldCB0IChQb2ludGVyLmZvbGxvdyBwKVxuICBsZXQgdW5zYWZlX2dldCB0IHAgPSB1bnNhZmVfZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBzZXQgdCBwIHNsb3QgdiA9IHNldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcbiAgbGV0IHVuc2FmZV9zZXQgdCBwIHNsb3QgdiA9IHVuc2FmZV9zZXQgdCAoUG9pbnRlci5mb2xsb3cgcCkgc2xvdCB2XG5cbiAgbGV0IHVuc2FmZV9mcmVlIHQgcCA9XG4gICAgdW5zYWZlX2ZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGZyZWUgdCAoUG9pbnRlci5mb2xsb3cgcCk7XG4gICAgUG9pbnRlci5pbnZhbGlkYXRlIHBcbiAgOztcblxuICBsZXQgbmV3MSB0IGEwID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MiB0IGEwIGExKVxuICBsZXQgbmV3MyB0IGEwIGExIGEyID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MyB0IGEwIGExIGEyKVxuICBsZXQgbmV3NCB0IGEwIGExIGEyIGEzID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NSB0IGEwIGExIGEyIGEzIGE0KVxuICBsZXQgbmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NiB0IGEwIGExIGEyIGEzIGE0IGE1KVxuICBsZXQgbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2ID0gUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNylcbiAgOztcblxuICBsZXQgbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4ID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTgpXG4gIDs7XG5cbiAgbGV0IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMClcbiAgOztcblxuICBsZXQgbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEpXG4gIDs7XG5cbiAgbGV0IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMylcbiAgOztcbmVuZFxuIiwiKCogQmUgc3VyZSBhbmQgZmlyc3QgcmVhZCB0aGUgaW1wbGVtZW50YXRpb24gb3ZlcnZpZXcgaW4gdGltaW5nX3doZWVsX2ludGYubWwuXG5cbiAgIEEgdGltaW5nIHdoZWVsIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIFwibGV2ZWxzXCIsIHdoZXJlIGVhY2ggbGV2ZWwgaXMgYW4gYXJyYXkgb2ZcbiAgIFwic2xvdHNcIi4gIEVhY2ggc2xvdCByZXByZXNlbnRzIGEgcmFuZ2Ugb2Yga2V5cywgYW5kIGhvbGRzIGVsZW1lbnRzIGFzc29jaWF0ZWQgd2l0aFxuICAgdGhvc2Uga2V5cy4gIEVhY2ggbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSB0d28gcGFyYW1ldGVyczogW2JpdHNdLCB0aGUgbnVtYmVyIG9mIGtleSBiaXRzXG4gICB0aGF0IHRoYXQgbGV2ZWwgaXMgcmVzcG9uc2libGUgZm9yIGRpc3Rpbmd1aXNoaW5nLCBhbmQgW2JpdHNfcGVyX3Nsb3RdLCB0aGUgc2l6ZSBvZiB0aGVcbiAgIHJhbmdlIG9mIGtleXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2luZ2xlIHNsb3QgaW4gdGhlIGFycmF5LiAgQ29uY2VwdHVhbGx5LCBlYWNoIGxldmVsXG4gICBicmVha3MgdXAgYWxsIHBvc3NpYmxlIGtleXMgaW50byByYW5nZXMgb2Ygc2l6ZSBbMl5iaXRzX3Blcl9zbG90XS4gIFRoZSBsZW5ndGggb2YgYVxuICAgbGV2ZWwgYXJyYXkgaXMgWzJeYml0c10sIGFuZCB0aGUgYXJyYXkgaXMgdXNlZCBsaWtlIGEgY2lyY3VsYXIgYnVmZmVyIHRvIHRyYXZlcnNlIHRoZVxuICAgcmFuZ2VzIGFzIHRoZSB0aW1pbmcgd2hlZWwncyBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMuICBBIGtleSBba10sIGlmIHN0b3JlZCBpbiB0aGVcbiAgIGxldmVsLCBpcyBzdG9yZWQgYXQgaW5kZXggWyhrIC8gMl5iaXRzX3Blcl9zbG90KSBtb2QgMl5iaXRzXS5cblxuICAgVGhlIHNldHRpbmdzIG9mIHRoZSBbYml0c10gdmFsdWVzIGFyZSBjb25maWd1cmFibGUgYnkgdXNlciBjb2RlIHVzaW5nIFtMZXZlbF9iaXRzXSxcbiAgIGFsdGhvdWdoIHRoZXJlIGlzIGEgcmVhc29uYWJsZSBkZWZhdWx0IHNldHRpbmcuICBHaXZlbiB0aGUgW2JpdHNdIHZhbHVlcywgdGhlXG4gICBbYml0c19wZXJfc2xvdF0gYXJlIGNob3NlbiBzbyB0aGF0IFtiaXRzX3Blcl9zbG90XSBhdCBsZXZlbCBbaV0gaXMgdGhlIHN1bSBvZiB0aGVcbiAgIFtiaXRzXSBhdCBhbGwgbG93ZXIgbGV2ZWxzLiAgVGh1cywgYSBzbG90J3MgcmFuZ2UgYXQgbGV2ZWwgW2ldIGlzIGFzIGxhcmdlIGFzIHRoZVxuICAgZW50aXJlIHJhbmdlIG9mIHRoZSBhcnJheSBhdCBsZXZlbCBbaSAtIDFdLlxuXG4gICBFYWNoIGxldmVsIGhhcyBhIFttaW5fYWxsb3dlZF9rZXldIGFuZCBhIFttYXhfYWxsb3dlZF9rZXldIHRoYXQgZGV0ZXJtaW5lIHRoZSByYW5nZSBvZlxuICAga2V5cyB0aGF0IGl0IGN1cnJlbnRseSByZXByZXNlbnRzLiAgVGhlIGNydWNpYWwgaW52YXJpYW50IG9mIHRoZSB0aW1pbmcgd2hlZWwgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRoYXQgdGhlIFttaW5fYWxsb3dlZF9rZXldIGF0IGxldmVsIFtpXSBpcyBubyBtb3JlIHRoYW4gdGhlXG4gICBbbWF4X2FsbG93ZWRfa2V5ICsgMV0gb2YgbGV2ZWwgW2kgLSAxXS4gIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbHMgY2FuIHJlcHJlc2VudCBhbGxcbiAgIGtleXMgZnJvbSB0aGUgW21pbl9hbGxvd2VkX2tleV0gb2YgdGhlIGxvd2VzdCBsZXZlbCB0byB0aGUgW21heF9hbGxvd2VkX2tleV0gb2YgdGhlXG4gICBoaWdoZXN0IGxldmVsLiAgVGhlIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmdcbiAgIHRoaXMgaW52YXJpYW50LlxuXG4gICBBdCBsZXZlbCAwLCBbYml0c19wZXJfc2xvdCA9IDBdLCBhbmQgc28gdGhlIHNpemUgb2YgZWFjaCBzbG90IGlzIFsxXS4gIFRoYXQgaXMsIGxldmVsIDBcbiAgIHByZWNpc2VseSBkaXN0aW5ndWlzaGVzIGFsbCB0aGUga2V5cyBiZXR3ZWVuIGl0cyBbbWluX2FsbG93ZWRfa2V5XSAod2hpY2ggaXMgdGhlIHNhbWVcbiAgIGFzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgZW50aXJlIHRpbWluZyB3aGVlbCkgYW5kIFttYXhfYWxsb3dlZF9rZXldLiAgQXMgdGhlXG4gICBsZXZlbHMgaW5jcmVhc2UsIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHRoZSBbYml0c19wZXJfc2xvdF0gaW5jcmVhc2VzLCBhbmRcbiAgIHRoZSByYW5nZSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUgbGV2ZWwgaW5jcmVhc2VzIChkcmFtYXRpY2FsbHkpLlxuXG4gICBUaGUgaWRlYSBvZiB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltaWxhciB0byB0aGUgaGllcmFyY2hpY2FsIGFwcHJvYWNoIGRlc2NyaWJlZCBpbjpcblxuICAge3ZcbiAgICAgSGFzaGVkIGFuZCBIaWVyYXJjaGljYWwgVGltaW5nIFdoZWVsczpcbiAgICAgRWZmaWNpZW50IERhdGEgU3RydWN0dXJlcyBmb3IgSW1wbGVtZW50aW5nIGEgVGltZXIgRmFjaWxpdHlcblxuICAgICBWYXJnaGVzZSAmIExhdWNrLCAxOTk2XG4gICB2fVxuXG4gICBIb3dldmVyLCB0aGUgY29kZSBpcyBjb21wbGV0ZWx5IG5ldy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBUaW1pbmdfd2hlZWxfaW50ZlxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5cbmxldCBzZXhwX29mX3Rfc3R5bGUgOiBbIGBQcmV0dHkgfCBgSW50ZXJuYWwgXSByZWYgPSByZWYgYFByZXR0eVxuXG4oKiBbe21heCxtaW59X3RpbWVdIGFyZSBib3VuZHMgb24gdGhlIHRpbWVzIHN1cHBvcnRlZCBieSBhIHRpbWluZyB3aGVlbC4gKilcblxubGV0IG1heF90aW1lID0gVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxubGV0IG1pbl90aW1lID0gVGltZV9ucy5lcG9jaFxuXG5tb2R1bGUgTnVtX2tleV9iaXRzIDogc2lnXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHplcm8gOiB0XG5cbiAgKCogdmFsIG1pbl92YWx1ZSA6IHQgKilcblxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCBwb3cyIDogdCAtPiBJbnQ2My50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgbWluX3ZhbHVlID0gMFxuXG4gICgqKiBXZSBzdXBwb3J0IGFsbCBub24tbmVnYXRpdmUgW1RpbWVfbnMudF0gdmFsdWVzLiAqKVxuICBsZXQgbWF4X3ZhbHVlID0gSW50NjMubnVtX2JpdHMgLSAxXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQgPj0gbWluX3ZhbHVlKTtcbiAgICBhc3NlcnQgKHQgPD0gbWF4X3ZhbHVlKVxuICA7O1xuXG4gIGxldCBvZl9pbnQgaSA9XG4gICAgaW52YXJpYW50IGk7XG4gICAgaVxuICA7O1xuXG4gIGxldCAoICsgKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSArIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCAoIC0gKSB0MSB0MiA9XG4gICAgbGV0IHQgPSB0MSAtIHQyIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBwb3cyIHQgPSBJbnQ2My5zaGlmdF9sZWZ0IEludDYzLm9uZSB0XG5lbmRcblxubW9kdWxlIExldmVsX2JpdHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTnVtX2tleV9iaXRzLnQgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtYXhfbnVtX2JpdHMgPSAoTnVtX2tleV9iaXRzLm1heF92YWx1ZSA6PiBpbnQpXG4gIGxldCBudW1fYml0c19pbnRlcm5hbCB0ID0gTGlzdC5mb2xkIHQgfmluaXQ6TnVtX2tleV9iaXRzLnplcm8gfmY6TnVtX2tleV9iaXRzLiggKyApXG4gIGxldCBudW1fYml0cyB0ID0gKG51bV9iaXRzX2ludGVybmFsIHQgOj4gaW50KVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgYXNzZXJ0IChub3QgKExpc3QuaXNfZW1wdHkgdCkpO1xuICAgIExpc3QuaXRlciB0IH5mOihmdW4gbnVtX2tleV9iaXRzIC0+XG4gICAgICBOdW1fa2V5X2JpdHMuaW52YXJpYW50IG51bV9rZXlfYml0cztcbiAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIG51bV9rZXlfYml0cyBOdW1fa2V5X2JpdHMuemVybykpO1xuICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgKG51bV9iaXRzX2ludGVybmFsIHQpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgdCA9IHNleHAgfD4gWyVvZl9zZXhwOiB0XSBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biA/KGV4dGVuZF90b19tYXhfbnVtX2JpdHMgPSBmYWxzZSkgaW50cyA9XG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRzIHRoZW4gZmFpbHdpdGggXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gcmVxdWlyZXMgYSBub25lbXB0eSBsaXN0XCI7XG4gICAgaWYgTGlzdC5leGlzdHMgaW50cyB+ZjooZnVuIGJpdHMgLT4gYml0cyA8PSAwKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCBub25wb3NpdGl2ZSBudW0gYml0c1wiIH5fOihpbnRzIDogaW50IGxpc3QpXTtcbiAgICBsZXQgbnVtX2JpdHMgPSBMaXN0LmZvbGQgaW50cyB+aW5pdDowIH5mOiggKyApIGluXG4gICAgaWYgbnVtX2JpdHMgPiBtYXhfbnVtX2JpdHNcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGdvdCB0b28gbWFueSBiaXRzXCJcbiAgICAgICAgICAgIH5fOihpbnRzIDogaW50IGxpc3QpXG4gICAgICAgICAgICB+Z290OihudW1fYml0cyA6IGludClcbiAgICAgICAgICAgIChtYXhfbnVtX2JpdHMgOiBpbnQpXTtcbiAgICBsZXQgaW50cyA9XG4gICAgICBpZiBleHRlbmRfdG9fbWF4X251bV9iaXRzXG4gICAgICB0aGVuIGludHMgQCBMaXN0LmluaXQgKG1heF9udW1fYml0cyAtIG51bV9iaXRzKSB+ZjooY29uc3QgMSlcbiAgICAgIGVsc2UgaW50c1xuICAgIGluXG4gICAgTGlzdC5tYXAgaW50cyB+ZjpOdW1fa2V5X2JpdHMub2ZfaW50XG4gIDs7XG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuIFsgMTE7IDEwOyAxMDsgMTA7IDEwOyAxMDsgMSBdXG5cbiAgbGV0IHRyaW0gdCB+bWF4X251bV9iaXRzID1cbiAgICBpZiBOdW1fa2V5X2JpdHMuKCA8PSApIChudW1fYml0c19pbnRlcm5hbCB0KSBtYXhfbnVtX2JpdHNcbiAgICB0aGVuIHRcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCB0IH5yZW1haW5pbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IGIgOjogdCAtPlxuICAgICAgICAgIGlmIE51bV9rZXlfYml0cy4oID49ICkgYiByZW1haW5pbmdcbiAgICAgICAgICB0aGVuIFsgcmVtYWluaW5nIF1cbiAgICAgICAgICBlbHNlIGIgOjogbG9vcCB0IH5yZW1haW5pbmc6KE51bV9rZXlfYml0cy4oIC0gKSByZW1haW5pbmcgYilcbiAgICAgIGluXG4gICAgICBsb29wIHQgfnJlbWFpbmluZzptYXhfbnVtX2JpdHMpXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA6IHNpZ1xuICBpbmNsdWRlIEFsYXJtX3ByZWNpc2lvblxuXG4gIHZhbCBudW1fa2V5X2JpdHMgOiB0IC0+IE51bV9rZXlfYml0cy50XG4gIHZhbCBpbnRlcnZhbF9udW0gOiB0IC0+IFRpbWVfbnMudCAtPiBJbnQ2My50XG4gIHZhbCBpbnRlcnZhbF9udW1fc3RhcnQgOiB0IC0+IEludDYzLnQgLT4gVGltZV9ucy50XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIFt0XSBpcyByZXByZXNlbnRlZCBhcyB0aGUgbG9nMiBvZiBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKilcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBsZXQgbnVtX2tleV9iaXRzIHQgPSB0IHw+IE51bV9rZXlfYml0cy5vZl9pbnRcblxuICBsZXQgdG9fc3BhbiB0ID1cbiAgICBpZiB0IDwgMFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW5dIG9mIG5lZ2F0aXZlIHBvd2VyIG9mIHR3byBuYW5vc2Vjb25kc1wiIH5fOih0IDogaW50KV07XG4gICAgSW50NjMuKHNoaWZ0X2xlZnQgb25lKSB0IHw+IFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAodCB8PiB0b19zcGFuIDogVGltZV9ucy5TcGFuLnQpXVxuICBsZXQgb25lX25hbm9zZWNvbmQgPSAwXG4gIGxldCBhYm91dF9vbmVfbWljcm9zZWNvbmQgPSAxMFxuICBsZXQgYWJvdXRfb25lX21pbGxpc2Vjb25kID0gMjBcbiAgbGV0IGFib3V0X29uZV9zZWNvbmQgPSAzMFxuICBsZXQgYWJvdXRfb25lX2RheSA9IDQ2XG4gIGxldCBtdWwgdCB+cG93MiA9IHQgKyBwb3cyXG4gIGxldCBkaXYgdCB+cG93MiA9IHQgLSBwb3cyXG4gIGxldCBpbnRlcnZhbF9udW0gdCB0aW1lID0gSW50NjMuc2hpZnRfcmlnaHQgKHRpbWUgfD4gVGltZV9ucy50b19pbnQ2M19uc19zaW5jZV9lcG9jaCkgdFxuXG4gIGxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICAgIEludDYzLnNoaWZ0X2xlZnQgaW50ZXJ2YWxfbnVtIHQgfD4gVGltZV9ucy5vZl9pbnQ2M19uc19zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBvZl9zcGFuX2Zsb29yX3BvdzJfbnMgc3BhbiA9XG4gICAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24ub2Zfc3Bhbl9mbG9vcl9wb3cyX25zXSBnb3Qgbm9uLXBvc2l0aXZlIHNwYW5cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICAgIHNwYW4gfD4gVGltZV9ucy5TcGFuLnRvX2ludDYzX25zIHw+IEludDYzLmZsb29yX2xvZzJcbiAgOztcblxuICBsZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuXG4gIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zcGFuXG4gICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zcGFuX2Zsb29yX3BvdzJfbnNcbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NwYW5cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoVGltZV9ucy5TcGFuKSAoVClcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlIChUaW1lX25zLlNwYW4pIChUKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBsZXZlbF9iaXRzX2RlZmF1bHQgPSBMZXZlbF9iaXRzLmRlZmF1bHRcblxuICB0eXBlIHQgPVxuICAgIHsgYWxhcm1fcHJlY2lzaW9uIDogQWxhcm1fcHJlY2lzaW9uLlVuc3RhYmxlLnRcbiAgICA7IGxldmVsX2JpdHMgOiBMZXZlbF9iaXRzLnQgW0BkZWZhdWx0IGxldmVsX2JpdHNfZGVmYXVsdF1cbiAgICA7IGNhcGFjaXR5IDogaW50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBhbGFybV9wcmVjaXNpb24gdCA9IEFsYXJtX3ByZWNpc2lvbi50b19zcGFuIHQuYWxhcm1fcHJlY2lzaW9uXG5cbiAgKCogW21heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb25dIHJldHVybnMgdGhlIG51bWJlciBvZiBsZXZlbCBiaXRzIG5lZWRlZCBmb3IgYVxuICAgICB0aW1pbmcgd2hlZWwgd2l0aCB0aGUgc3BlY2lmaWVkIFthbGFybV9wcmVjaXNpb25dIHRvIGJlIGFibGUgdG8gcmVwcmVzZW50IGFsbFxuICAgICBwb3NzaWJsZSB0aW1lcyBmcm9tIFtUaW1lX25zLmVwb2NoXSBvbndhcmQuICBTaW5jZSBub24tbmVnYXRpdmUgdGltZXMgaGF2ZSA2MiBiaXRzLFxuICAgICB3ZSByZXF1aXJlIFtMIDw9IDYyIC0gQV0sIHdoZXJlIFtBXSBpcyB0aGUgbnVtYmVyIG9mIGFsYXJtIGJpdHMgYW5kIFtMXSBpcyB0aGVcbiAgICAgbnVtYmVyIG9mIGxldmVsIGJpdHMuICopXG4gIGxldCBtYXhfbnVtX2xldmVsX2JpdHMgYWxhcm1fcHJlY2lzaW9uID1cbiAgICBOdW1fa2V5X2JpdHMuKCAtIClcbiAgICAgIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICAgIChBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgTnVtX2tleV9iaXRzLiggPD0gKVxuICAgICAgICAgIChMZXZlbF9iaXRzLm51bV9iaXRzX2ludGVybmFsIHQubGV2ZWxfYml0cylcbiAgICAgICAgICAobWF4X251bV9sZXZlbF9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uKSk7XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5hbGFybV9wcmVjaXNpb246aWdub3JlXG4gICAgICAgIH5jYXBhY2l0eTppZ25vcmVcbiAgICAgICAgfmxldmVsX2JpdHM6KGNoZWNrIExldmVsX2JpdHMuaW52YXJpYW50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/KGxldmVsX2JpdHMgPSBsZXZlbF9iaXRzX2RlZmF1bHQpIH5hbGFybV9wcmVjaXNpb24gKCkgPVxuICAgIGxldCBsZXZlbF9iaXRzID1cbiAgICAgIExldmVsX2JpdHMudHJpbSBsZXZlbF9iaXRzIH5tYXhfbnVtX2JpdHM6KG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24pXG4gICAgaW5cbiAgICB7IGFsYXJtX3ByZWNpc2lvbjsgbGV2ZWxfYml0czsgY2FwYWNpdHkgfVxuICA7O1xuXG4gIGxldCBtaWNyb3NlY29uZF9wcmVjaXNpb24gKCkgPVxuICAgIGNyZWF0ZVxuICAgICAgKClcbiAgICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWNyb3NlY29uZFxuICAgICAgfmxldmVsX2JpdHM6KExldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEwOyAxMDsgNjsgNjsgNSBdKVxuICA7O1xuXG4gIGxldCBkdXJhdGlvbnMgdCA9XG4gICAgTGlzdC5mb2xkaW5nX21hcFxuICAgICAgdC5sZXZlbF9iaXRzXG4gICAgICB+aW5pdDooQWxhcm1fcHJlY2lzaW9uLm51bV9rZXlfYml0cyB0LmFsYXJtX3ByZWNpc2lvbiB8PiBOdW1fa2V5X2JpdHMudG9faW50KVxuICAgICAgfmY6KGZ1biBudW1fYml0c19hY2N1bSBsZXZlbF9udW1fYml0cyAtPlxuICAgICAgICBsZXQgbnVtX2JpdHNfYWNjdW0gPSBudW1fYml0c19hY2N1bSArIChsZXZlbF9udW1fYml0cyB8PiBOdW1fa2V5X2JpdHMudG9faW50KSBpblxuICAgICAgICBsZXQgZHVyYXRpb24gPVxuICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgICAgICAgKGlmIG51bV9iaXRzX2FjY3VtID0gSW50NjMubnVtX2JpdHMgLSAxXG4gICAgICAgICAgICAgdGhlbiBJbnQ2My5tYXhfdmFsdWVcbiAgICAgICAgICAgICBlbHNlIEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIG51bV9iaXRzX2FjY3VtKVxuICAgICAgICBpblxuICAgICAgICBudW1fYml0c19hY2N1bSwgZHVyYXRpb24pXG4gIDs7XG5lbmRcblxuXG4oKiogVGltaW5nIHdoZWVsIGlzIGltcGxlbWVudGVkIGFzIGEgcHJpb3JpdHkgcXVldWUgaW4gd2hpY2ggdGhlIGtleXMgYXJlXG4gICAgbm9uLW5lZ2F0aXZlIGludGVnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVydmFscyBvZiB0aW1lLiAgVGhlIHByaW9yaXR5IHF1ZXVlIGlzXG4gICAgdW5saWtlIGEgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZSBpbiB0aGF0IHJhdGhlciB0aGFuIGhhdmluZyBhIFwiZGVsZXRlIG1pblwiIG9wZXJhdGlvbixcbiAgICBpdCBoYXMgYSBub25kZWNyZWFzaW5nIG1pbmltdW0gYWxsb3dlZCBrZXksIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHRpbWUsXG4gICAgYW5kIGFuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIG9wZXJhdGlvbiwgd2hpY2ggaW1wbGVtZW50cyBbYWR2YW5jZV9jbG9ja10uXG4gICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gYXMgYSBzaWRlIGVmZmVjdCByZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSB0aW1pbmdcbiAgICB3aGVlbCB3aG9zZSBrZXkgaXMgc21hbGxlciB0aGFuIHRoZSBuZXcgbWluaW11bSwgd2hpY2ggaW1wbGVtZW50cyBmaXJpbmcgdGhlIGFsYXJtc1xuICAgIHdob3NlIHRpbWUgaGFzIGV4cGlyZWQuXG5cbiAgICBBZGRpbmcgZWxlbWVudHMgdG8gYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gYSB0aW1pbmcgd2hlZWwgdGFrZXMgY29uc3RhbnQgdGltZSxcbiAgICB1bmxpa2UgYSBoZWFwLWJhc2VkIHByaW9yaXR5IHF1ZXVlIHdoaWNoIHRha2VzIGxvZyhOKSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgZWxlbWVudHMgaW4gdGhlIGhlYXAuICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byB0aGVcbiAgICBhbW91bnQgb2YgaW5jcmVhc2UgaW4gdGhlIG1pbi1hbGxvd2VkIGtleSwgYXMgY29tcGFyZWQgdG8gbG9nKE4pIGZvciBhIGhlYXAuICBJdCBpc1xuICAgIHRoZXNlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VzIHRoYXQgbW90aXZhdGUgdGhlIGV4aXN0ZW5jZSBvZiB0aW1pbmcgd2hlZWxzIGFuZCBtYWtlXG4gICAgdGhlbSBhIGdvb2QgY2hvaWNlIGZvciBtYWludGFpbmcgYSBzZXQgb2YgYWxhcm1zLiAgV2l0aCBhIHRpbWluZyB3aGVlbCwgb25lIGNhblxuICAgIHN1cHBvcnQgYW55IG51bWJlciBvZiBhbGFybXMgcGF5aW5nIGNvbnN0YW50IG92ZXJoZWFkIHBlciBhbGFybSwgd2hpbGUgcGF5aW5nIGFcbiAgICBzbWFsbCBjb25zdGFudCBvdmVyaGVhZCBwZXIgdW5pdCBvZiB0aW1lIHBhc3NlZC5cblxuICAgIEFzIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGhlIHRpbWluZyB3aGVlbCBkb2VzIGEgbGF6eSByYWRpeCBzb3J0IG9mIHRoZVxuICAgIGVsZW1lbnQga2V5cywgd2l0aCBsZXZlbCAwIGhhbmRsaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudCBbYl8wXSBiaXRzIGluIGEga2V5LCBhbmRcbiAgICBlYWNoIHN1YnNlcXVlbnQgbGV2ZWwgW2ldIGhhbmRsaW5nIHRoZSBuZXh0IG1vc3Qgc2lnbmlmaWNhbnQgW2JfaV0gYml0cy4gIFRoZSBsZXZlbHNcbiAgICBob2xkIGluY3JlYXNpbmdseSBsYXJnZXIgcmFuZ2VzIG9mIGtleXMsIHdoZXJlIHRoZSB1bmlvbiBvZiBhbGwgdGhlIGxldmVscyBjYW4gaG9sZFxuICAgIGFueSBrZXkgZnJvbSBbbWluX2FsbG93ZWRfa2V5IHRdIHRvIFttYXhfYWxsb3dlZF9rZXkgdF0uICBXaGVuIGEga2V5IGlzIGFkZGVkIHRvIHRoZVxuICAgIHRpbWluZyB3aGVlbCwgaXQgaXMgYWRkZWQgYXQgdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCB0aGF0IGNhbiBzdG9yZSB0aGUga2V5LiAgQXNcbiAgICB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBpbmNyZWFzZXMsIHRpbWluZy13aGVlbCBlbGVtZW50cyBtb3ZlIGRvd24gbGV2ZWxzIHVudGlsIHRoZXlcbiAgICByZWFjaCBsZXZlbCAwLCBhbmQgdGhlbiBhcmUgZXZlbnR1YWxseSByZW1vdmVkLiAgKilcbm1vZHVsZSBQcmlvcml0eV9xdWV1ZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgS2V5IDogSW50ZXJ2YWxfbnVtXG5cbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgICgqKiBBbiBbRWx0LnRdIHJlcHJlc2VudHMgYW4gZWxlbWVudCB0aGF0IHdhcyBhZGRlZCB0byBhIHRpbWluZyB3aGVlbC4gKilcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBhdCA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGtleSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgdmFsdWUgOiAnYSBwcmlvcml0eV9xdWV1ZSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIG51bGwgOiB1bml0IC0+ICdhIHRcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gICAgdmFsIGlzX251bGwgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRWx0LnRcbiAgZW5kXG5cbiAgdmFsIHBvb2wgOiAnYSB0IC0+ICdhIEludGVybmFsX2VsdC5Qb29sLnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtjcmVhdGUgP2xldmVsX2JpdHMgKCldIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdGltaW5nIHdoZWVsLCBbdF0sIHdpdGggW2xlbmd0aCB0ID0gMF1cbiAgICAgIGFuZCBbbWluX2FsbG93ZWRfa2V5IHQgPSAwXS4gKilcbiAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gP2xldmVsX2JpdHM6TGV2ZWxfYml0cy50IC0+IHVuaXQgLT4gJ2EgdFxuXG4gICgqKiBbbGVuZ3RoIHRdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuXG4gICgqKiBbbWluX2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtaW5pbXVtIGtleSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gW3RdLiAgVGhpcyBvbmx5XG4gICAgICBpbmRpY2F0ZXMgdGhlIHBvc3NpYmlsaXR5OyB0aGVyZSBuZWVkIG5vdCBiZSBhbiBlbGVtZW50IFtlbHRdIGluIFt0XSB3aXRoIFtFbHQua2V5XG4gICAgICBlbHQgPSBtaW5fYWxsb3dlZF9rZXkgdF0uICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgXCJtaW5fa2V5XCIgb3BlcmF0aW9uIGluIGFcbiAgICAgIHR5cGljYWwgcHJpb3JpdHkgcXVldWUuXG5cbiAgICAgIFttaW5fYWxsb3dlZF9rZXkgdF0gY2FuIGluY3JlYXNlIG92ZXIgdGltZSwgdmlhIGNhbGxzIHRvXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XS4gKilcbiAgdmFsIG1pbl9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gICgqKiBbbWF4X2FsbG93ZWRfa2V5IHRdIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBBc1xuICAgICAgW21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzLCBzbyBkb2VzIFttYXhfYWxsb3dlZF9rZXldOyBob3dldmVyIGl0IGlzIG5vdCB0aGUgY2FzZVxuICAgICAgdGhhdCBbbWF4X2FsbG93ZWRfa2V5IHQgLSBtaW5fYWxsb3dlZF9rZXkgdF0gaXMgYSBjb25zdGFudC4gIEl0IGlzIGd1YXJhbnRlZWQgdGhhdFxuICAgICAgW21heF9hbGxvd2VkX2tleSB0ID49IG1pbl9hbGxvd2VkX2tleSB0ICsgMl5CIC0gMV0sXG4gICAgICB3aGVyZSBbQl0gaXMgdGhlIHN1bSBvZiB0aGUgYl9pIGluIFtsZXZlbF9iaXRzXS4gKilcbiAgdmFsIG1heF9hbGxvd2VkX2tleSA6IF8gdCAtPiBLZXkudFxuXG4gIHZhbCBtaW5fZWx0XyA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LnRcbiAgdmFsIGludGVybmFsX2FkZCA6ICdhIHQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiAnYSAtPiAnYSBJbnRlcm5hbF9lbHQudFxuXG4gICgqKiBbcmVtb3ZlIHQgZWx0XSByZW1vdmVzIFtlbHRdIGZyb20gW3RdLiAgSXQgaXMgYW4gZXJyb3IgaWYgW2VsdF0gaXMgbm90IGN1cnJlbnRseVxuICAgICAgaW4gW3RdLCBhbmQgdGhpcyBlcnJvciBtYXkgb3IgbWF5IG5vdCBiZSBkZXRlY3RlZC4gKilcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuXG4gIHZhbCBjaGFuZ2UgOiAnYSB0IC0+ICdhIEVsdC50IC0+IGtleTpLZXkudCAtPiBhdDpUaW1lX25zLnQgLT4gdW5pdFxuXG4gICgqKiBbY2xlYXIgdF0gcmVtb3ZlcyBhbGwgZWx0cyBmcm9tIFt0XS4gKilcbiAgdmFsIGNsZWFyIDogXyB0IC0+IHVuaXRcblxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSBFbHQudCAtPiBib29sXG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgKCoqIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXkgdCB+a2V5IH5oYW5kbGVfcmVtb3ZlZF0gaW5jcmVhc2VzIHRoZSBtaW5pbXVtIGFsbG93ZWRcbiAgICAgIGtleSBpbiBbdF0gdG8gW2tleV0sIGFuZCByZW1vdmVzIGFsbCBlbGVtZW50cyB3aXRoIGtleXMgbGVzcyB0aGFuIFtrZXldLCBhcHBseWluZ1xuICAgICAgW2hhbmRsZV9yZW1vdmVkXSB0byBlYWNoIGVsZW1lbnQgdGhhdCBpcyByZW1vdmVkLiAgSWYgW2tleSA8PSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICB0aGVuIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIGRvZXMgbm90aGluZy4gIE90aGVyd2lzZSwgaWZcbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCBbbWluX2FsbG93ZWRfa2V5IHQgPSBrZXldLlxuXG4gICAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSB0YWtlcyB0aW1lIHByb3BvcnRpb25hbCB0byBba2V5IC0gbWluX2FsbG93ZWRfa2V5IHRdLFxuICAgICAgYWx0aG91Z2ggcG9zc2libHkgbGVzcyB0aW1lLlxuXG4gICAgICBCZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbaGFuZGxlX3JlbW92ZWRdIGFjY2Vzc2VzIFt0XSBpbiBhbnkgd2F5IG90aGVyIHRoYW5cbiAgICAgIFtFbHRdIGZ1bmN0aW9ucy4gKilcbiAgdmFsIGluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgIDogICdhIHRcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBoYW5kbGVfcmVtb3ZlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnRcblxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgRWx0LnQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBmaXJlX3Bhc3RfYWxhcm1zXG4gICAgOiAgJ2EgdFxuICAgIC0+IGhhbmRsZV9maXJlZDooJ2EgRWx0LnQgLT4gdW5pdClcbiAgICAtPiBrZXk6S2V5LnRcbiAgICAtPiBub3c6VGltZV9ucy50XG4gICAgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gICgqKiBFYWNoIHNsb3QgaW4gYSBsZXZlbCBpcyBhIChwb3NzaWJseSBudWxsKSBwb2ludGVyIHRvIGEgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICBvZiBlbGVtZW50cy4gIFdlIHBvb2wgdGhlIGVsZW1lbnRzIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZW0gYWZ0ZXIgdGhleSBhcmUgcmVtb3ZlZFxuICAgICAgZnJvbSB0aGUgdGltaW5nIHdoZWVsIChlaXRoZXIgdmlhIFtyZW1vdmVdIG9yIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldKS4gIEluXG4gICAgICBhZGRpdGlvbiB0byBzdG9yaW5nIHRoZSBba2V5XSwgW2F0XSwgYW5kIFt2YWx1ZV0gaW4gdGhlIGVsZW1lbnQsIHdlIHN0b3JlIHRoZVxuICAgICAgW2xldmVsX2luZGV4XSBzbyB0aGF0IHdlIGNhbiBxdWlja2x5IGdldCB0byB0aGUgbGV2ZWwgaG9sZGluZyBhbiBlbGVtZW50IHdoZW4gd2VcbiAgICAgIFtyZW1vdmVdIGl0LlxuXG4gICAgICBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFtFeHRlcm5hbF9lbHRdIGFuZCBbSW50ZXJuYWxfZWx0XSwgd2hpY2ggYXJlIHRoZSBzYW1lXG4gICAgICB1bmRlcm5lYXRoLiAgV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFuIFtJbnRlcm5hbF9lbHRdIGlzIGVpdGhlciBbbnVsbF0gb3IgYVxuICAgICAgdmFsaWQgcG9pbnRlci4gIE9uIHRoZSBvdGhlciBoYW5kLCBbRXh0ZXJuYWxfZWx0XXMgYXJlIHJldHVybmVkIHRvIHVzZXIgY29kZSwgc29cbiAgICAgIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiB2YWxpZGl0eSAtLSB3ZSBhbHdheXMgdmFsaWRhdGUgYW4gW0V4dGVybmFsX2VsdF0gYmVmb3JlXG4gICAgICBkb2luZyBhbnl0aGluZyB3aXRoIGl0LlxuXG4gICAgICBJdCBpcyB0aGVyZWZvcmUgT0sgdG8gdXNlIFtQb29sLlVuc2FmZV0sIGJlY2F1c2Ugd2Ugd2lsbCBuZXZlciBhdHRlbXB0IHRvIGFjY2VzcyBhXG4gICAgICBzbG90IG9mIGFuIGludmFsaWQgcG9pbnRlci4gKilcbiAgbW9kdWxlIFBvb2wgPSBQb29sLlVuc2FmZVxuXG4gIG1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICgqKiBbSW50ZXJ2YWxfbnVtXSBpcyB0aGUgcHVibGljIEFQSS4gIEV2ZXJ5dGhpbmcgZm9sbG93aW5nIGluIHRoZSBzaWduYXR1cmUgaXNcbiAgICAgICAgZm9yIGludGVybmFsIHVzZS4gKilcbiAgICBpbmNsdWRlIFRpbWluZ193aGVlbF9pbnRmLkludGVydmFsX251bVxuXG4gICAgKCoqIFthZGRfY2xhbXBfdG9fbWF4XSBkb2Vzbid0IHdvcmsgYXQgYWxsIHdpdGggbmVnYXRpdmUgc3BhbnMgKilcbiAgICB2YWwgYWRkX2NsYW1wX3RvX21heCA6IHQgLT4gU3Bhbi50IC0+IHRcblxuICAgIHZhbCBzdWNjX2NsYW1wX3RvX21heCA6IHQgLT4gdFxuXG4gICAgKCoqIFtTbG90c19tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGEga2V5J3Mgc2xvdCBpbiBhIGdpdmVuIGxldmVsLiAqKVxuICAgIG1vZHVsZSBTbG90c19tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgdmFsIGNyZWF0ZSA6IGxldmVsX2JpdHM6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgICAgdmFsIG5leHRfc2xvdCA6IHQgLT4gaW50IC0+IGludFxuICAgIGVuZFxuXG4gICAgKCoqIFtNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXSBpcyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIGtleSBpbiB0aGVcbiAgICAgICAgc2FtZSBzbG90IGFzIGEgZ2l2ZW4ga2V5LiAqKVxuICAgIG1vZHVsZSBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEludDYzLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBFcXVhbC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGNyZWF0ZSA6IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIG51bV9rZXlzIDogTnVtX2tleV9iaXRzLnQgLT4gU3Bhbi50XG4gICAgdmFsIG1pbl9rZXlfaW5fc2FtZV9zbG90IDogdCAtPiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnQgLT4gdFxuICAgIHZhbCBzbG90IDogdCAtPiBiaXRzX3Blcl9zbG90Ok51bV9rZXlfYml0cy50IC0+IHNsb3RzX21hc2s6U2xvdHNfbWFzay50IC0+IGludFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2xvdHNfbWFzayA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBsZXQgY3JlYXRlIH5sZXZlbF9iaXRzID0gSW50NjMuKCAtICkgKE51bV9rZXlfYml0cy5wb3cyIGxldmVsX2JpdHMpIEludDYzLm9uZVxuICAgICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSAoc2xvdCArIDEpIGxhbmQgSW50NjMudG9faW50X2V4biB0XG4gICAgZW5kXG5cbiAgICBsZXQgbnVtX2tleXMgbnVtX2JpdHMgPSBOdW1fa2V5X2JpdHMucG93MiBudW1fYml0c1xuXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50NjNcblxuICAgICAgbGV0IGNyZWF0ZSB+Yml0c19wZXJfc2xvdCA9IGJpdF9ub3QgKE51bV9rZXlfYml0cy5wb3cyIGJpdHNfcGVyX3Nsb3QgLSBvbmUpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgICAgbGV0IHNjYWxlX2ludCB0IGkgPSB0ICogb2ZfaW50IGlcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgIGxldCBhZGQgdCBpID0gdCArIGlcbiAgICBsZXQgYWRkX2NsYW1wX3RvX21heCB0IGkgPSBpZiB0ID4gbWF4X3ZhbHVlIC0gaSB0aGVuIG1heF92YWx1ZSBlbHNlIHQgKyBpXG4gICAgbGV0IHN1Y2NfY2xhbXBfdG9fbWF4IHQgPSBpZiB0ID0gbWF4X3ZhbHVlIHRoZW4gbWF4X3ZhbHVlIGVsc2Ugc3VjYyB0XG4gICAgbGV0IHN1YiB0IGkgPSB0IC0gaVxuICAgIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuXG4gICAgbGV0IHNsb3QgdCB+KGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudCkgfnNsb3RzX21hc2sgPVxuICAgICAgdG9faW50X2V4biAoYml0X2FuZCAoc2hpZnRfcmlnaHQgdCAoYml0c19wZXJfc2xvdCA6PiBpbnQpKSBzbG90c19tYXNrKVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3QgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgIGJpdF9hbmQgdCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPSBLZXkuTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICBtb2R1bGUgU2xvdHNfbWFzayA9IEtleS5TbG90c19tYXNrXG5cbiAgbW9kdWxlIEV4dGVybmFsX2VsdCA9IHN0cnVjdFxuXG4gICAgKCoqIFRoZSBbcG9vbF9zbG90c10gaGVyZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzbG90cyBpbiBhIGxldmVsIGFycmF5LiAgVGhpcyBpc1xuICAgICAgICBmb3IgdGhlIHNsb3RzIGluIHRoZSBwb29sIHR1cGxlIHJlcHJlc2VudGluZyBhIGxldmVsIGVsZW1lbnQuICopXG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID1cbiAgICAgICggS2V5LnRcbiAgICAgICwgVGltZV9ucy50XG4gICAgICAsICdhXG4gICAgICAsIGludFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudFxuICAgICAgLCAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCApXG4gICAgICAgIFBvb2wuU2xvdHMudDZcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnRlcm5hbF9lbHQgOiBzaWdcbiAgICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgICAgdmFsIGNyZWF0ZSA6ID9jYXBhY2l0eTppbnQgLT4gdW5pdCAtPiBfIHRcbiAgICAgIHZhbCBpc19mdWxsIDogXyB0IC0+IGJvb2xcbiAgICAgIHZhbCBncm93IDogP2NhcGFjaXR5OmludCAtPiAnYSB0IC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHByaXZhdGUgJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3ZhbGlkIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gYm9vbFxuXG4gICAgKCoqIERlYWxpbmcgd2l0aCBbRXh0ZXJuYWxfZWx0XXMuICopXG5cbiAgICB2YWwgZXh0ZXJuYWxfaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gYm9vbFxuICAgIHZhbCB0b19leHRlcm5hbCA6ICdhIHQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnRcbiAgICB2YWwgb2ZfZXh0ZXJuYWxfZXhuIDogJ2EgUG9vbC50IC0+ICdhIEV4dGVybmFsX2VsdC50IC0+ICdhIHRcbiAgICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBQb29sLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFtjcmVhdGVdIHJldHVybnMgYW4gZWxlbWVudCB3aG9zZSBbbmV4dF0gYW5kIFtwcmV2XSBhcmUgW251bGxdLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogICdhIFBvb2wudFxuICAgICAgLT4ga2V5OktleS50XG4gICAgICAoKiogW2F0XSBpcyB1c2VkIHdoZW4gdGhlIHByaW9yaXR5IHF1ZXVlIGlzIHVzZWQgdG8gaW1wbGVtZW50IGEgdGltaW5nIHdoZWVsLiAgSWZcbiAgICAgICAgICB1bnVzZWQsIGl0IHdpbGwgYmUgW1RpbWVfbnMuZXBvY2hdLiAqKVxuICAgICAgLT4gYXQ6VGltZV9ucy50XG4gICAgICAtPiB2YWx1ZTonYVxuICAgICAgLT4gbGV2ZWxfaW5kZXg6aW50XG4gICAgICAtPiAnYSB0XG5cbiAgICB2YWwgZnJlZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBhY2Nlc3NvcnMgKilcblxuICAgIHZhbCBrZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCBhdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudFxuICAgIHZhbCBsZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBuZXh0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB2YWx1ZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+ICdhXG5cbiAgICAoKiogbXV0YXRvcnMgKilcblxuICAgIHZhbCBzZXRfa2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfYXQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBUaW1lX25zLnQgLT4gdW5pdFxuICAgIHZhbCBzZXRfbGV2ZWxfaW5kZXggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnQgLT4gdW5pdFxuXG4gICAgKCoqIFtpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkXSB0cmVhdHMgW3RdIGFzIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGFuZCBhZGRzIFt0b19hZGRdXG4gICAgICAgIHRvIHRoZSBlbmQgb2YgaXQuICopXG4gICAgdmFsIGluc2VydF9hdF9lbmQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB0b19hZGQ6J2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2xpbmtfdG9fc2VsZiBwb29sIHRdIG1ha2VzIFt0XSBiZSBhIHNpbmdsZXRvbiBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3QuICopXG4gICAgdmFsIGxpbmtfdG9fc2VsZiA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBbdW5saW5rIHAgdF0gdW5saW5rcyBbdF0gZnJvbSB0aGUgY2lyY3VsYXJseSBkb3VibHktbGlua2VkIGxpc3QgdGhhdCBpdCBpcyBpbi4gIEl0XG4gICAgICAgIGNoYW5nZXMgdGhlIHBvaW50ZXJzIG9mIFt0XSdzIFtwcmV2XSBhbmQgW25leHRdIGVsdHMsIGJ1dCBub3QgW3RdJ3MgW3ByZXZdIGFuZFxuICAgICAgICBbbmV4dF0gcG9pbnRlcnMuICBbdW5saW5rXSBpcyBtZWFuaW5nbGVzcyBpZiBbdF0gaXMgYSBzaW5nbGV0b24uICopXG4gICAgdmFsIHVubGluayA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHVuaXRcblxuICAgICgqKiBJdGVyYXRvcnMuICBbaXRlciBwIHQgfmluaXQgfmZdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgICBjb250YWluaW5nIFt0XSwgc3RhcnRpbmcgYXQgW3RdLCBhbmQgZm9sbG93aW5nIFtuZXh0XSBwb2ludGVycy4gIFtsZW5ndGhdIGNvdW50c1xuICAgICAgICBieSB2aXNpdGluZyBlYWNoIGVsZW1lbnQgaW4gdGhlIGxpc3QuICopXG4gICAgdmFsIGl0ZXIgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBmOignYSB0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBsZW5ndGggOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBpbnRcblxuICAgICgqKiBbbWF4X2FsYXJtX3RpbWUgdCBlbHQgfndpdGhfa2V5XSBmaW5kcyB0aGUgbWF4IFthdF0gaW4gW2VsdF0ncyBsaXN0IGFtb25nIHRoZSBlbHRzXG4gICAgICAgIHdob3NlIGtleSBpcyBbd2l0aF9rZXldLCByZXR1cm5pbmcgW1RpbWVfbnMuZXBvY2hdIGlmIHRoZSBsaXN0IGlzIGVtcHR5LiAqKVxuICAgIHZhbCBtYXhfYWxhcm1fdGltZSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHdpdGhfa2V5OktleS50IC0+IFRpbWVfbnMudFxuXG4gICAgdmFsIG1pbl9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgcG9vbF9zbG90cyA9ICdhIEV4dGVybmFsX2VsdC5wb29sX3Nsb3RzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gUG9pbnRlci5udWxsXG4gICAgbGV0IGlzX251bGwgPSBQb2ludGVyLmlzX251bGxcbiAgICBsZXQgZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEgdDJcblxuICAgIGxldCBjcmVhdGUgcG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4ID1cbiAgICAgIFBvb2wubmV3NiBwb29sIGtleSBhdCB2YWx1ZSBsZXZlbF9pbmRleCAobnVsbCAoKSkgKG51bGwgKCkpXG4gICAgOztcblxuICAgIGxldCBmcmVlID0gUG9vbC5mcmVlXG4gICAgbGV0IGtleSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQwXG4gICAgbGV0IHNldF9rZXkgcCB0IGsgPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQwIGtcbiAgICBsZXQgYXQgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MVxuICAgIGxldCBzZXRfYXQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQxIHhcbiAgICBsZXQgdmFsdWUgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50MlxuICAgIGxldCBsZXZlbF9pbmRleCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQzXG4gICAgbGV0IHNldF9sZXZlbF9pbmRleCBwIHQgaSA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDMgaVxuICAgIGxldCBwcmV2IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDRcbiAgICBsZXQgc2V0X3ByZXYgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ0IHhcbiAgICBsZXQgbmV4dCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQ1XG4gICAgbGV0IHNldF9uZXh0IHAgdCB4ID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50NSB4XG4gICAgbGV0IGlzX3ZhbGlkIHAgdCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCBwIHRcbiAgICBsZXQgZXh0ZXJuYWxfaXNfdmFsaWQgPSBpc192YWxpZFxuXG4gICAgbGV0IGludmFyaWFudCBwb29sIGludmFyaWFudF9hIHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgICAgYXNzZXJ0IChpc192YWxpZCBwb29sIHQpO1xuICAgICAgICBpbnZhcmlhbnRfYSAodmFsdWUgcG9vbCB0KTtcbiAgICAgICAgbGV0IG4gPSBuZXh0IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgbiB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAocHJldiBwb29sIG4pKTtcbiAgICAgICAgbGV0IHAgPSBwcmV2IHBvb2wgdCBpblxuICAgICAgICBhc3NlcnQgKGlzX251bGwgcCB8fCBQb2ludGVyLnBoeXNfZXF1YWwgdCAobmV4dCBwb29sIHApKSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHBvb2xfc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxuICAgICAgbGV0IGNyZWF0ZSA/KGNhcGFjaXR5ID0gMSkgKCkgPSBQb29sLmNyZWF0ZSBQb29sLlNsb3RzLnQ2IH5jYXBhY2l0eVxuICAgICAgbGV0IGdyb3cgPSBQb29sLmdyb3dcbiAgICAgIGxldCBpc19mdWxsID0gUG9vbC5pc19mdWxsXG4gICAgZW5kXG5cbiAgICBsZXQgdG9fZXh0ZXJuYWwgdCA9IHRcblxuICAgIGxldCBvZl9leHRlcm5hbF9leG4gcG9vbCB0ID1cbiAgICAgIGlmIGlzX3ZhbGlkIHBvb2wgdCB0aGVuIHQgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbCBnb3QgaW52YWxpZCBhbGFybVwiXVxuICAgIDs7XG5cbiAgICBsZXQgdW5saW5rIHBvb2wgdCA9XG4gICAgICBzZXRfbmV4dCBwb29sIChwcmV2IHBvb2wgdCkgKG5leHQgcG9vbCB0KTtcbiAgICAgIHNldF9wcmV2IHBvb2wgKG5leHQgcG9vbCB0KSAocHJldiBwb29sIHQpXG4gICAgOztcblxuICAgIGxldCBsaW5rIHBvb2wgcHJldiBuZXh0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgcHJldiBuZXh0O1xuICAgICAgc2V0X3ByZXYgcG9vbCBuZXh0IHByZXZcbiAgICA7O1xuXG4gICAgbGV0IGxpbmtfdG9fc2VsZiBwb29sIHQgPSBsaW5rIHBvb2wgdCB0XG5cbiAgICBsZXQgaW5zZXJ0X2F0X2VuZCBwb29sIHQgfnRvX2FkZCA9XG4gICAgICBsZXQgcHJldiA9IHByZXYgcG9vbCB0IGluXG4gICAgICBsaW5rIHBvb2wgcHJldiB0b19hZGQ7XG4gICAgICBsaW5rIHBvb2wgdG9fYWRkIHRcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgcG9vbCBmaXJzdCB+ZiA9XG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAoKiBXZSBnZXQgW25leHRdIGJlZm9yZSBjYWxsaW5nIFtmXSBzbyB0aGF0IFtmXSBjYW4gbW9kaWZ5IG9yIFtmcmVlXSBbIWN1cnJlbnRdLiAqKVxuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBmICFjdXJyZW50O1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgbGVuZ3RoIHBvb2wgZmlyc3QgPVxuICAgICAgbGV0IHIgPSByZWYgMCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgaW5jciByO1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFyXG4gICAgOztcblxuICAgIGxldCBtYXhfYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWF4X2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5lcG9jaCBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgaWYgS2V5LmVxdWFsIChrZXkgcG9vbCAhY3VycmVudCkgd2l0aF9rZXlcbiAgICAgICAgdGhlbiBtYXhfYWxhcm1fdGltZSA6PSBUaW1lX25zLm1heCAoYXQgcG9vbCAhY3VycmVudCkgIW1heF9hbGFybV90aW1lO1xuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgICAgZG9uZTtcbiAgICAgICFtYXhfYWxhcm1fdGltZVxuICAgIDs7XG5cbiAgICBsZXQgbWluX2FsYXJtX3RpbWUgcG9vbCBmaXJzdCB+d2l0aF9rZXkgPVxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gcmVmIFRpbWVfbnMubWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgaW5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICgqIFRoZSBba2V5XSBjb21wYXJpc29uIGlzIG5lY2Vzc2FyeSBmb3IgW21heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF0gYmVjYXVzZVxuICAgICAgICAgICBtYXggdGltZSBwZXIgaW50ZXJ2YWwgaXMgbm90IHRoZSBzYW1lIGFzIG1heCB0aW1lIGdsb2JhbGx5LlxuXG4gICAgICAgICAgIFRoaXMgaXMgbm90IHNvIGZvciBbbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSwgc28gdGhpcyBjYW4gcG90ZW50aWFsbHlcbiAgICAgICAgICAgYmUgc2ltcGxpZmllZC5cblxuICAgICAgICAgICBQcm9iYWJseSBhIGJldHRlciBjaGFuZ2Ugd291bGQgYmUgdG8gc2ltcGx5IHRyYW5zZmVyIHRoZSBldmVudHMgdG8gdGhlXG4gICAgICAgICAgIFwiZmlyZWRcIiBjb2xsZWN0aW9uIChhbmQgcmVuYW1lIGl0IHRvIFwiYWJvdXQgdG8gZmlyZVwiKSwgd2hpY2ggaXMgc29ydGVkIGJ5IHRpbWUsXG4gICAgICAgICAgIHNvIGdldHRpbmcgdGhlIGZpcnN0IGVsZW1lbnQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gaXMgZWZmaWNpZW50LlxuICAgICAgICAqKVxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1pbl9hbGFybV90aW1lIDo9IFRpbWVfbnMubWluIChhdCBwb29sICFjdXJyZW50KSAhbWluX2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1pbl9hbGFybV90aW1lXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIExldmVsID0gc3RydWN0XG4gICAgKCoqIEZvciBnaXZlbiBsZXZlbCwgb25lIGNhbiBicmVhayB0aGUgYml0cyBpbnRvIGEga2V5IGludG8gdGhyZWUgcmVnaW9uczpcblxuICAgICAgICB7dlxuICAgICAgICAgfCBoaWdoZXIgbGV2ZWxzIHwgdGhpcyBsZXZlbCB8IGxvd2VyIGxldmVscyB8XG4gICAgICAgIHZ9XG5cbiAgICAgICAgXCJMb3dlciBsZXZlbHNcIiBpcyBbYml0c19wZXJfc2xvdF0gYml0cyB3aWRlLiAgXCJUaGlzIGxldmVsXCIgaXMgW2JpdHNdIHdpZGUuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgKCogVGhlIFtpbmRleF0gaW4gdGhlIHRpbWluZyB3aGVlbCdzIGFycmF5IG9mIGxldmVscyB3aGVyZSB0aGlzIGxldmVsIGlzLiAqKVxuICAgICAgICBpbmRleCA6IGludFxuICAgICAgOyAoKiBIb3cgbWFueSBbYml0c10gdGhpcyBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IuICopXG4gICAgICAgIGJpdHMgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyAoKiBbc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOnQuYml0c10uICopXG4gICAgICAgIHNsb3RzX21hc2sgOiBTbG90c19tYXNrLnRcbiAgICAgIDsgKCogW2JpdHNfcGVyX3Nsb3RdIGlzIGhvdyBtYW55IGJpdHMgZWFjaCBzbG90IGRpc3Rpbmd1aXNoZXMsIGFuZCBpcyB0aGUgc3VtIG9mIG9mXG4gICAgICAgICAgIHRoZSBbYml0c10gb2YgYWxsIHRoZSBsb3dlciBsZXZlbHMuICopXG4gICAgICAgIGJpdHNfcGVyX3Nsb3QgOiBOdW1fa2V5X2JpdHMudFxuICAgICAgOyBrZXlzX3Blcl9zbG90IDogS2V5LlNwYW4udFxuICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIDogTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay50XG4gICAgICA7ICgqIFtkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPSBrZXlzX3Blcl9zbG90ICogQXJyYXkubGVuZ3RoIHNsb3RzIC0gMV0gKilcbiAgICAgICAgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IDogS2V5LlNwYW4udFxuICAgICAgOyAoKiBbbGVuZ3RoXSBpcyB0aGUgbnVtYmVyIG9mIGVsdHMgY3VycmVudGx5IGluIHRoaXMgbGV2ZWwuICopXG4gICAgICAgIG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7ICgqIEFsbCBlbGVtZW50cyBhdCB0aGlzIGxldmVsIGhhdmUgdGhlaXIgW2tleV0gc2F0aXNmeSBbbWluX2FsbG93ZWRfa2V5IDw9IGtleSA8PVxuICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXldLiAgQWxzbywgW21pbl9hbGxvd2VkX2tleV0gaXMgYSBtdWx0aXBsZSBvZiBba2V5c19wZXJfc2xvdF0uICopXG4gICAgICAgIG11dGFibGUgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyAoKiBbc2xvdHNdIGhvbGRzIHRoZSAocG9zc2libHkgbnVsbCkgcG9pbnRlcnMgdG8gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdHNcbiAgICAgICAgICAgb2YgZWx0cy4gIFtBcnJheS5sZW5ndGggc2xvdHMgPSAxIGxzbCBiaXRzXS4gKilcbiAgICAgICAgc2xvdHMgOiAoJ2EgSW50ZXJuYWxfZWx0LnQgYXJyYXlbQHNleHAub3BhcXVlXSlcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2xvdCB0IH5rZXkgPSBLZXkuc2xvdCBrZXkgfmJpdHNfcGVyX3Nsb3Q6dC5iaXRzX3Blcl9zbG90IH5zbG90c19tYXNrOnQuc2xvdHNfbWFza1xuICAgIGxldCBuZXh0X3Nsb3QgdCBzbG90ID0gU2xvdHNfbWFzay5uZXh0X3Nsb3QgdC5zbG90c19tYXNrIHNsb3RcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXkgPVxuICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IGtleSB0Lm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuXG4gICAgbGV0IGNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IHQgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICgqIFRoaXMgY29tcHV0YXRpb24gZW5zdXJlcyB0aGF0IFt0XSdzIFttaW5fYWxsb3dlZF9rZXldIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlXG4gICAgICAgICBzdWJqZWN0IHRvIHRoZSBjb25zdHJhaW50IHRoYXQgdGhlcmUgaXMgbm8gaW50ZXItbGV2ZWwgZ2FwLiAqKVxuICAgICAgaWYgS2V5LmVxdWFsIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgIHRoZW4gS2V5Lm1heF92YWx1ZVxuICAgICAgZWxzZSBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IH5rZXk6KEtleS5zdWNjIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBwb29sIDogJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuICAgIDsgKCogW21pbl9lbHRdIGlzIGVpdGhlciBudWxsIG9yIGFuIGVsZW1lbnQgd2hvc2Uga2V5IGlzIFtlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgbWluX2VsdCA6ICdhIEludGVybmFsX2VsdC50XG4gICAgOyAoKiBBbGwgZWxlbWVudHMgaW4gdGhlIHByaW9yaXR5IHF1ZXVlIGhhdmUgdGhlaXIga2V5IFs+PSBlbHRfa2V5X2xvd2VyX2JvdW5kXS4gKilcbiAgICAgIG11dGFibGUgZWx0X2tleV9sb3dlcl9ib3VuZCA6IEtleS50XG4gICAgOyBsZXZlbHMgOiAnYSBMZXZlbC50IGFycmF5XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSBwcmlvcml0eV9xdWV1ZSA9ICdhIHRcblxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRXh0ZXJuYWxfZWx0LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBudWxsID0gRXh0ZXJuYWxfZWx0Lm51bGxcbiAgICBsZXQgYXQgcCB0ID0gSW50ZXJuYWxfZWx0LmF0IHAucG9vbCAoSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwLnBvb2wgdClcbiAgICBsZXQga2V5IHAgdCA9IEludGVybmFsX2VsdC5rZXkgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCB2YWx1ZSBwIHQgPSBJbnRlcm5hbF9lbHQudmFsdWUgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICBlbmRcblxuICBsZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG4gIGxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG4gIGxldCBudW1fbGV2ZWxzIHQgPSBBcnJheS5sZW5ndGggdC5sZXZlbHNcbiAgbGV0IG1pbl9hbGxvd2VkX2tleSB0ID0gTGV2ZWwubWluX2FsbG93ZWRfa2V5IHQubGV2ZWxzLigwKVxuICBsZXQgbWF4X2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKG51bV9sZXZlbHMgdCAtIDEpXG5cbiAgbGV0IGludGVybmFsX2l0ZXIgdCB+ZiA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpIHRoZW4gSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmZcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gaW50ZXJuYWxfaXRlciB0IH5mOihmIDogXyBFbHQudCAtPiB1bml0IDo+IF8gSW50ZXJuYWxfZWx0LnQgLT4gdW5pdClcblxuICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBrZXkgOiBLZXkudFxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG1pbl9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7IGVsdHMgOiAnYSBFbHQudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHByZXR0eSB0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIHsgUHJldHR5Lm1pbl9hbGxvd2VkX2tleSA9IG1pbl9hbGxvd2VkX2tleSB0XG4gICAgOyBtYXhfYWxsb3dlZF9rZXkgPSBtYXhfYWxsb3dlZF9rZXkgdFxuICAgIDsgZWx0cyA9XG4gICAgICAgIChsZXQgciA9IHJlZiBbXSBpblxuICAgICAgICAgaW50ZXJuYWxfaXRlciB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIHJcbiAgICAgICAgICAgOj0geyBQcmV0dHkuRWx0LmtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHRcbiAgICAgICAgICAgICAgOyB2YWx1ZSA9IEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDo6ICFyKTtcbiAgICAgICAgIExpc3QucmV2ICFyKVxuICAgIH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgICB8IGBJbnRlcm5hbCAtPiBbJXNleHAgKHQgOiBhIHRfaW50ZXJuYWwpXVxuICAgIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG4gIDs7XG5cbiAgbGV0IGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90ID1cbiAgICBsZXQgYml0cyA9IE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICBpZiBOdW1fa2V5X2JpdHMuZXF1YWwgYml0cyBOdW1fa2V5X2JpdHMubWF4X3ZhbHVlXG4gICAgdGhlbiBLZXkuU3Bhbi5tYXhfdmFsdWVcbiAgICBlbHNlIEtleS5TcGFuLnByZWQgKEtleS5udW1fa2V5cyBiaXRzKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGxldmVsX2ludmFyaWFudCBsZXZlbCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gbGV2ZWwgWyVzZXhwX29mOiBfIExldmVsLnRdIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgbGV2ZWwgZiBpblxuICAgICAgICBMZXZlbC5GaWVsZHMuaXRlclxuICAgICAgICAgIH5pbmRleDooY2hlY2sgKGZ1biBpbmRleCAtPiBhc3NlcnQgKGluZGV4ID49IDApKSlcbiAgICAgICAgICB+Yml0czooY2hlY2sgKGZ1biBiaXRzIC0+IGFzc2VydCAoTnVtX2tleV9iaXRzLiggPiApIGJpdHMgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+c2xvdHNfbWFzazpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IFNsb3RzX21hc2sudF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzOmxldmVsLmJpdHMpKSlcbiAgICAgICAgICB+Yml0c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGJpdHNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoTnVtX2tleV9iaXRzLiggPj0gKSBiaXRzX3Blcl9zbG90IE51bV9rZXlfYml0cy56ZXJvKSkpXG4gICAgICAgICAgfmtleXNfcGVyX3Nsb3Q6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBrZXlzX3Blcl9zbG90IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICBrZXlzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5udW1fa2V5cyBsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2s6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmVxdWFsXG4gICAgICAgICAgICAgICAgICAgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgICAgIChNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLmNyZWF0ZSB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpKVxuICAgICAgICAgIH5kaWZmX21heF9taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAgIChbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgKGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgIH5sZXZlbF9iaXRzOmxldmVsLmJpdHNcbiAgICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKVxuICAgICAgICAgIH5sZW5ndGg6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIGxlbmd0aFxuICAgICAgICAgICAgICAgICA9IEFycmF5LmZvbGQgbGV2ZWwuc2xvdHMgfmluaXQ6MCB+ZjooZnVuIG4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gICAgICAgICAgICAgICAgICAgdGhlbiBuXG4gICAgICAgICAgICAgICAgICAgZWxzZSBuICsgSW50ZXJuYWxfZWx0Lmxlbmd0aCBwb29sIGVsdCkpKSlcbiAgICAgICAgICB+bWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWluX2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgbWluX2FsbG93ZWRfa2V5IEtleS56ZXJvKTtcbiAgICAgICAgICAgICAgIGlmIEtleS4oIDwgKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkuU3Bhbi50XVxuICAgICAgICAgICAgICAgICAgIChLZXkucmVtIG1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90KVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6S2V5LlNwYW4uemVybykpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgIG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgIChLZXkuYWRkX2NsYW1wX3RvX21heFxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgIGxldmVsLmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleSkpKVxuICAgICAgICAgIH5zbG90czpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHNsb3RzIC0+XG4gICAgICAgICAgICAgICBBcnJheS5pdGVyIHNsb3RzIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0KVxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgZWx0O1xuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pdGVyIHBvb2wgZWx0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIGxldmVsLm1heF9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpIHQuZWx0X2tleV9sb3dlcl9ib3VuZCk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCA9IGxldmVsLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgIGludmFyaWFudF9hIChJbnRlcm5hbF9lbHQudmFsdWUgcG9vbCBlbHQpKSkpKSkpXG4gICAgaW5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF9pbnRlcm5hbF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1pbl9hbGxvd2VkX2tleSB0KSBLZXkuemVybyk7XG4gICAgICBhc3NlcnQgKEtleS4oID49ICkgKG1heF9hbGxvd2VkX2tleSB0KSAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgICAgfnBvb2w6KGNoZWNrIChJbnRlcm5hbF9lbHQuUG9vbC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgICAgfm1pbl9lbHQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0XyAtPlxuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XylcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmlzX3ZhbGlkIHQucG9vbCBlbHRfKTtcbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LmVxdWFsIHQuZWx0X2tleV9sb3dlcl9ib3VuZCAoSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0XykpKSkpXG4gICAgICAgIH5lbHRfa2V5X2xvd2VyX2JvdW5kOlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF9rZXlfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oID49ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWluX2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBhc3NlcnQgKEtleS4oIDw9ICkgZWx0X2tleV9sb3dlcl9ib3VuZCAobWF4X2FsbG93ZWRfa2V5IHQpKTtcbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIHQubWluX2VsdClcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCBlbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCB0Lm1pbl9lbHQpKSkpXG4gICAgICAgIH5sZXZlbHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbGV2ZWxzIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChudW1fbGV2ZWxzIHQgPiAwKTtcbiAgICAgICAgICAgICBBcnJheS5pdGVyaSBsZXZlbHMgfmY6KGZ1biBsZXZlbF9pbmRleCBsZXZlbCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChsZXZlbF9pbmRleCA9IExldmVsLmluZGV4IGxldmVsKTtcbiAgICAgICAgICAgICAgIGxldmVsX2ludmFyaWFudCBsZXZlbDtcbiAgICAgICAgICAgICAgIGlmIGxldmVsX2luZGV4ID4gMFxuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgIGxldCBwcmV2X2xldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCAtIDEpIGluXG4gICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgTCA9IExldmVsIGluXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEwua2V5c19wZXJfc2xvdCBsZXZlbClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OihLZXkuU3Bhbi5zdWNjIHByZXZfbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LnRdXG4gICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAgIChMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTpwcmV2X2xldmVsLm1heF9hbGxvd2VkX2tleSkpKSkpKVxuICA7O1xuXG4gICgqKiBbbWluX2VsdF9dIHJldHVybnMgW251bGxdIGlmIGl0IGNhbid0IGZpbmQgdGhlIGRlc2lyZWQgZWxlbWVudC4gIFdlIHdyYXAgaXQgdXBcbiAgICAgIGFmdGVyd2FyZHMgdG8gcmV0dXJuIGFuIFtvcHRpb25dLiAqKVxuICBsZXQgbWluX2VsdF8gdCA9XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgIHRoZW4gdC5taW5fZWx0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IG1pbl9lbHRfYWxyZWFkeV9mb3VuZCA9IHJlZiAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpIGluXG4gICAgICBsZXQgbWluX2tleV9hbHJlYWR5X2ZvdW5kID0gcmVmIEtleS5tYXhfdmFsdWUgaW5cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oIWxldmVsX2luZGV4KSBpblxuICAgICAgICBpZiBLZXkuKCA+ICkgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhbnkgbW9yZSBsZXZlbHMuICBRdWl0IHRoZSBsb29wLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHNcbiAgICAgICAgZWxzZSBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICAgIHRoZW4gaW5jciBsZXZlbF9pbmRleFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBMb29rIGluIFtsZXZlbF0uICopXG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBsZXQgc2xvdF9taW5fa2V5ID1cbiAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICAoTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICAgfmtleTooS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IXNsb3RfbWluX2tleSkgaW5cbiAgICAgICAgICAoKiBGaW5kIHRoZSBmaXJzdCBub25lbXB0eSBzbG90IHdpdGggYSBzbWFsbCBlbm91Z2ggW3Nsb3RfbWluX2tleV0uICopXG4gICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgIEludGVybmFsX2VsdC5pc19udWxsIHNsb3RzLighc2xvdClcbiAgICAgICAgICAgICYmIEtleS4oIDwgKSAhc2xvdF9taW5fa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICBkb1xuICAgICAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgICAgICBzbG90X21pbl9rZXkgOj0gS2V5LmFkZCAhc2xvdF9taW5fa2V5IGxldmVsLmtleXNfcGVyX3Nsb3RcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVmlzaXQgYWxsIG9mIHRoZSBlbHRzIGluIHRoaXMgc2xvdCBhbmQgZmluZCBvbmUgd2l0aCBtaW5pbXVtIGtleS4gKilcbiAgICAgICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgICAgIGxldCBjdXJyZW50X2tleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICBpZiBLZXkuKCA8PSApIGN1cnJlbnRfa2V5ICFtaW5fa2V5X2FscmVhZHlfZm91bmRcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWluX2VsdF9hbHJlYWR5X2ZvdW5kIDo9ICFjdXJyZW50O1xuICAgICAgICAgICAgICAgIG1pbl9rZXlfYWxyZWFkeV9mb3VuZCA6PSBjdXJyZW50X2tleSk7XG4gICAgICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICAgICAgICAoKiBJZiBbIWxldmVsX2luZGV4ID0gMF0gdGhlbiBhbGwgZWx0cyBpbiB0aGlzIHNsb3QgaGF2ZSB0aGUgc2FtZSBba2V5XSxcbiAgICAgICAgICAgICAgICAgaS5lLiBbIXNsb3RfbWluX2tleV0uICBTbywgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnkgZWxlbWVudHMgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgW2ZpcnN0XS4gIFRoaXMgaXMgYSB1c2VmdWwgc2hvcnQgY3V0IGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZXJlIGFyZVxuICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBtaW4gc2xvdCBpbiBsZXZlbCAwLiAqKVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgfHwgIWxldmVsX2luZGV4ID0gMFxuICAgICAgICAgICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICAgICAgICAgIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICAgICAgICBkb25lKTtcbiAgICAgICAgICAoKiBGaW5pc2hlZCBsb29raW5nIGluIFtsZXZlbF0uICBNb3ZlIHVwIHRvIHRoZSBuZXh0IGxldmVsLiAqKVxuICAgICAgICAgIGluY3IgbGV2ZWxfaW5kZXgpXG4gICAgICBkb25lO1xuICAgICAgdC5taW5fZWx0IDwtICFtaW5fZWx0X2FscmVhZHlfZm91bmQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gIW1pbl9rZXlfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQubWluX2VsdClcbiAgOztcblxuICBsZXRbQGNvbGRdIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgIChrZXkgOiBLZXkudClcbiAgICAgICAgICAobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICAobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+cHJpb3JpdHlfcXVldWU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWwgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlByaW9yaXR5X3F1ZXVlLmFkZF9lbHQga2V5IG91dCBvZiBsZXZlbCBib3VuZHNcIiAoa2V5IDogS2V5LnQpIChsZXZlbCA6IF8gTGV2ZWwudCldXG4gIDs7XG5cbiAgbGV0IGFkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgJiYgS2V5LiggPD0gKSBrZXkgKG1heF9hbGxvd2VkX2tleSB0KSlcbiAgICB0aGVuIHJhaXNlX2FkZF9lbHRfa2V5X291dF9vZl9ib3VuZHMgdCBrZXk7XG4gICAgKCogRmluZCB0aGUgbG93ZXN0IGxldmVsIHRoYXQgd2lsbCBob2xkIFtlbHRdLiAqKVxuICAgIGxldCBsZXZlbF9pbmRleCA9XG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgd2hpbGUgS2V5LiggPiApIGtleSAoTGV2ZWwubWF4X2FsbG93ZWRfa2V5IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpKSBkb1xuICAgICAgICBpbmNyIGxldmVsX2luZGV4XG4gICAgICBkb25lO1xuICAgICAgIWxldmVsX2luZGV4XG4gICAgaW5cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgaWYgbm90IChLZXkuKCA+PSApIGtleSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgJiYgS2V5LiggPD0gKSBrZXkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2xldmVsX2JvdW5kcyBrZXkgbGV2ZWw7XG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCArIDE7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9sZXZlbF9pbmRleCBwb29sIGVsdCBsZXZlbF9pbmRleDtcbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgbGV0IGZpcnN0ID0gc2xvdHMuKHNsb3QpIGluXG4gICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICB0aGVuIEludGVybmFsX2VsdC5pbnNlcnRfYXRfZW5kIHBvb2wgZmlyc3QgfnRvX2FkZDplbHRcbiAgICBlbHNlIChcbiAgICAgIHNsb3RzLihzbG90KSA8LSBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQubGlua190b19zZWxmIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0ID1cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSB0LnBvb2wgZWx0IGluXG4gICAgaWYgS2V5LiggPCApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICB0aGVuIChcbiAgICAgIHQubWluX2VsdCA8LSBlbHQ7XG4gICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0ga2V5KTtcbiAgICBhZGRfZWx0IHQgZWx0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfZ290X2ludmFsaWRfa2V5IHQga2V5ID1cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuYWRkX2F0X2ludGVydmFsX251bSBnb3QgaW52YWxpZCBpbnRlcnZhbCBudW1cIlxuICAgICAgICAgIH5pbnRlcnZhbF9udW06KGtleSA6IEtleS50KVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW06KG1pbl9hbGxvd2VkX2tleSB0IDogS2V5LnQpXG4gICAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWF4X2FsbG93ZWRfa2V5IHQgOiBLZXkudCldXG4gIDs7XG5cbiAgbGV0IGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5ID1cbiAgICBpZiBLZXkuKCA8ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdCkgfHwgS2V5LiggPiApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXlcbiAgOztcblxuICBsZXQgaW50ZXJuYWxfYWRkIHQgfmtleSB+YXQgdmFsdWUgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGlmIEludGVybmFsX2VsdC5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIEludGVybmFsX2VsdC5Qb29sLmdyb3cgdC5wb29sO1xuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQuY3JlYXRlIHQucG9vbCB+a2V5IH5hdCB+dmFsdWUgfmxldmVsX2luZGV4OigtMSkgaW5cbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0O1xuICAgIGVsdFxuICA7O1xuXG4gICgqKiBbcmVtb3ZlX29yX3JlX2FkZF9lbHRzXSB2aXNpdHMgZWFjaCBlbGVtZW50IGluIHRoZSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIFtmaXJzdF0uICBJZiB0aGUgZWxlbWVudCdzIGtleSBpcyBbPj0gdF9taW5fYWxsb3dlZF9rZXldLCB0aGVuIGl0IGFkZHMgdGhlIGVsZW1lbnRcbiAgICAgIGJhY2sgYXQgYSBsb3dlciBsZXZlbC4gIElmIG5vdCwgdGhlbiBpdCBjYWxscyBbaGFuZGxlX3JlbW92ZWRdIGFuZCBbZnJlZV1zIHRoZVxuICAgICAgZWxlbWVudC4gKilcbiAgbGV0IHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IChsZXZlbCA6IF8gTGV2ZWwudCkgZmlyc3QgfnRfbWluX2FsbG93ZWRfa2V5IH5oYW5kbGVfcmVtb3ZlZFxuICAgID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICgqIFdlIGV4dHJhY3QgW25leHRdIGZyb20gW2N1cnJlbnRdIGZpcnN0LCBiZWNhdXNlIHdlIHdpbGwgbW9kaWZ5IG9yIFtmcmVlXVxuICAgICAgICAgW2N1cnJlbnRdIGJlZm9yZSBjb250aW51aW5nIHRoZSBsb29wLiAqKVxuICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICAgIGlmIEtleS4oID49ICkgKEludGVybmFsX2VsdC5rZXkgcG9vbCAhY3VycmVudCkgdF9taW5fYWxsb3dlZF9rZXlcbiAgICAgIHRoZW4gYWRkX2VsdCB0ICFjdXJyZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgICBoYW5kbGVfcmVtb3ZlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsICFjdXJyZW50KTtcbiAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCAhY3VycmVudCk7XG4gICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dFxuICAgIGRvbmVcbiAgOztcblxuICAoKiogW2luY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleV0gaW5jcmVhc2VzIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBbbGV2ZWxdIHRvIGFzXG4gICAgICBsYXJnZSBhIHZhbHVlIGFzIHBvc3NpYmxlLCBidXQgbm8gbW9yZSB0aGFuIFttYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XS5cbiAgICAgIFt0X21pbl9hbGxvd2VkX2tleV0gaXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgZm9yIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsLiAgQXNcbiAgICAgIGVsZW1lbnRzIGFyZSBlbmNvdW50ZXJlZCwgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgaWYgdGhlaXIga2V5IGlzXG4gICAgICBzbWFsbGVyIHRoYW4gW3RfbWluX2FsbG93ZWRfa2V5XSwgb3IgYWRkZWQgYXQgYSBsb3dlciBsZXZlbCBpZiBub3QuICopXG4gIGxldCBpbmNyZWFzZV9sZXZlbF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdFxuICAgICAgICAobGV2ZWwgOiBfIExldmVsLnQpXG4gICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5jb21wdXRlX21pbl9hbGxvd2VkX2tleSBsZXZlbCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICBpblxuICAgICgqIFdlIHJlcXVpcmUgdGhhdCBbbW9kIGxldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbC5rZXlzX3Blcl9zbG90ID0gMF0uICBTbyxcbiAgICAgICB3ZSBzdGFydCBbbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSB3aGVyZSB0aGF0IGlzIHRydWUsIGFuZCB0aGVuIGluY3JlYXNlIGl0IGJ5XG4gICAgICAgW2tleXNfcGVyX3Nsb3RdIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLiAqKVxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgTGV2ZWwubWluX2tleV9pbl9zYW1lX3Nsb3RcbiAgICAgICAgbGV2ZWxcbiAgICAgICAgfmtleTpcbiAgICAgICAgICAoS2V5Lm1pblxuICAgICAgICAgICAgIGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgKEtleS5tYXggbGV2ZWwubWluX2FsbG93ZWRfa2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZCkpXG4gICAgaW5cbiAgICBsZXQgbGV2ZWxfbWluX2FsbG93ZWRfa2V5ID0gcmVmIGxldmVsX21pbl9hbGxvd2VkX2tleSBpblxuICAgIGxldCBzbG90ID0gcmVmIChMZXZlbC5zbG90IGxldmVsIH5rZXk6IWxldmVsX21pbl9hbGxvd2VkX2tleSkgaW5cbiAgICBsZXQga2V5c19wZXJfc2xvdCA9IGxldmVsLmtleXNfcGVyX3Nsb3QgaW5cbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIHdoaWxlIEtleS4oIDwgKSAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IGRvXG4gICAgICBpZiBsZXZlbC5sZW5ndGggPSAwXG4gICAgICB0aGVuXG4gICAgICAgICgqIElmIG5vIGVsZW1lbnRzIHJlbWFpbiBhdCB0aGlzIGxldmVsLCB3ZSBjYW4ganVzdCBzZXQgW21pbl9hbGxvd2VkX2tleV0gdG8gdGhlXG4gICAgICAgICAgIGRlc2lyZWQgdmFsdWUuICopXG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBmaXJzdCA9IHNsb3RzLighc2xvdCkgaW5cbiAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBmaXJzdClcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc2xvdHMuKCFzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKTtcbiAgICAgICAgICByZW1vdmVfb3JfcmVfYWRkX2VsdHMgdCBsZXZlbCBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkKTtcbiAgICAgICAgc2xvdCA6PSBMZXZlbC5uZXh0X3Nsb3QgbGV2ZWwgIXNsb3Q7XG4gICAgICAgIGxldmVsX21pbl9hbGxvd2VkX2tleSA6PSBLZXkuYWRkX2NsYW1wX3RvX21heCAhbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGtleXNfcGVyX3Nsb3QpXG4gICAgZG9uZTtcbiAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXkgPC0gZGVzaXJlZF9taW5fYWxsb3dlZF9rZXk7XG4gICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5XG4gICAgPC0gS2V5LmFkZF9jbGFtcF90b19tYXggZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gIDs7XG5cbiAgbW9kdWxlIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWRcbiAgZW5kXG5cbiAgbGV0IGluY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkIDogSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdC50ID1cbiAgICBpZiBLZXkuKCA8PSApIGtleSAobWluX2FsbG93ZWRfa2V5IHQpXG4gICAgdGhlbiBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2VcbiAgICBlbHNlIChcbiAgICAgICgqIFdlIGluY3JlYXNlIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiBsZXZlbHMgaW4gb3JkZXIgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50XG4gICAgICAgICB0aGF0IHRoZXkgaGF2ZSBhcyBsYXJnZSBhcyBwb3NzaWJsZSBhIFttaW5fYWxsb3dlZF9rZXldLCB3aGlsZSBsZWF2aW5nIG5vIGdhcHNcbiAgICAgICAgIGluIGtleXMuICopXG4gICAgICBsZXQgbGV2ZWxfaW5kZXggPSByZWYgMCBpblxuICAgICAgbGV0IHJlc3VsdCA9IHJlZiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0Lk1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIGluXG4gICAgICBsZXQgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPSByZWYgKEtleS5wcmVkIGtleSkgaW5cbiAgICAgIGxldCBsZXZlbHMgPSB0LmxldmVscyBpblxuICAgICAgbGV0IG51bV9sZXZlbHMgPSBudW1fbGV2ZWxzIHQgaW5cbiAgICAgIHdoaWxlICFsZXZlbF9pbmRleCA8IG51bV9sZXZlbHMgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlID0gbGV2ZWwubWluX2FsbG93ZWRfa2V5IGluXG4gICAgICAgIGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgIHRcbiAgICAgICAgICBsZXZlbFxuICAgICAgICAgIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleTohcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICB+dF9taW5fYWxsb3dlZF9rZXk6a2V5XG4gICAgICAgICAgfmhhbmRsZV9yZW1vdmVkO1xuICAgICAgICBpZiBLZXkuZXF1YWwgKExldmVsLm1pbl9hbGxvd2VkX2tleSBsZXZlbCkgbWluX2FsbG93ZWRfa2V5X2JlZm9yZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBUaGlzIGxldmVsIGRpZCBub3Qgc2hpZnQuICBEb24ndCBzaGlmdCBhbnkgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSBudW1fbGV2ZWxzO1xuICAgICAgICAgIHJlc3VsdCA6PSBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExldmVsIFtsZXZlbF9pbmRleF0gc2hpZnRlZC4gIENvbnNpZGVyIHNoaWZ0aW5nIGhpZ2hlciBsZXZlbHMuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gIWxldmVsX2luZGV4ICsgMTtcbiAgICAgICAgICBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA6PSBMZXZlbC5tYXhfYWxsb3dlZF9rZXkgbGV2ZWwpXG4gICAgICBkb25lO1xuICAgICAgaWYgS2V5LiggPiApIGtleSB0LmVsdF9rZXlfbG93ZXJfYm91bmRcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBXZSBoYXZlIHJlbW92ZWQgW3QubWluX2VsdF0gb3IgaXQgd2FzIGFscmVhZHkgbnVsbCwgc28ganVzdCBzZXQgaXQgdG9cbiAgICAgICAgICAgbnVsbC4gKilcbiAgICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQgPC0gbWluX2FsbG93ZWRfa2V5IHQpO1xuICAgICAgIXJlc3VsdClcbiAgOztcblxuICBsZXQgY3JlYXRlID9jYXBhY2l0eSA/bGV2ZWxfYml0cyAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgbWF0Y2ggbGV2ZWxfYml0cyB3aXRoXG4gICAgICB8IFNvbWUgbCAtPiBsXG4gICAgICB8IE5vbmUgLT4gTGV2ZWxfYml0cy5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgXywgXywgbGV2ZWxzID1cbiAgICAgIExpc3QuZm9sZGlcbiAgICAgICAgbGV2ZWxfYml0c1xuICAgICAgICB+aW5pdDooTnVtX2tleV9iaXRzLnplcm8sIEtleS56ZXJvLCBbXSlcbiAgICAgICAgfmY6XG4gICAgICAgICAgKGZ1blxuICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgIChiaXRzX3Blcl9zbG90LCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5LCBsZXZlbHMpXG4gICAgICAgICAgICAobGV2ZWxfYml0cyA6IE51bV9rZXlfYml0cy50KVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgbGV0IGtleXNfcGVyX3Nsb3QgPSBLZXkubnVtX2tleXMgYml0c19wZXJfc2xvdCBpblxuICAgICAgICAgICAgICBsZXQgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgIGxldCBtaW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIEtleS5taW5fa2V5X2luX3NhbWVfc2xvdCBtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1heF9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgS2V5LmFkZF9jbGFtcF90b19tYXggbWluX2FsbG93ZWRfa2V5IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbGV2ZWwgPVxuICAgICAgICAgICAgICAgIHsgTGV2ZWwuaW5kZXhcbiAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgOyBzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICA7IGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICAgICAgICAgICAgICA7IGRpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgIDsgbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgQXJyYXkuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbjooSW50NjMudG9faW50X2V4biAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykpXG4gICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICwgS2V5LnN1Y2NfY2xhbXBfdG9fbWF4IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAsIGxldmVsIDo6IGxldmVscyApKVxuICAgIGluXG4gICAgeyBsZW5ndGggPSAwXG4gICAgOyBwb29sID0gSW50ZXJuYWxfZWx0LlBvb2wuY3JlYXRlID9jYXBhY2l0eSAoKVxuICAgIDsgbWluX2VsdCA9IEludGVybmFsX2VsdC5udWxsICgpXG4gICAgOyBlbHRfa2V5X2xvd2VyX2JvdW5kID0gS2V5Lnplcm9cbiAgICA7IGxldmVscyA9IEFycmF5Lm9mX2xpc3RfcmV2IGxldmVsc1xuICAgIH1cbiAgOztcblxuICBsZXQgbWVtIHQgZWx0ID0gSW50ZXJuYWxfZWx0LmV4dGVybmFsX2lzX3ZhbGlkIHQucG9vbCBlbHRcblxuICBsZXQgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGlmIEludGVybmFsX2VsdC5lcXVhbCBlbHQgdC5taW5fZWx0XG4gICAgdGhlblxuICAgICAgdC5taW5fZWx0IDwtIEludGVybmFsX2VsdC5udWxsICgpXG4gICAgKCogV2Uga2VlcCBbdC5lbHRfbG93ZXJfYm91bmRdIHNpbmNlIGl0IGlzIHZhbGlkIGV2ZW4gdGhvdWdoIFt0Lm1pbl9lbHRdIGlzIGJlaW5nXG4gICAgICAgcmVtb3ZlZC4gKik7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQpIGluXG4gICAgbGV2ZWwubGVuZ3RoIDwtIGxldmVsLmxlbmd0aCAtIDE7XG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBwaHlzX2VxdWFsIGVsdCAoSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQpXG4gICAgdGhlbiAoKiBbZWx0XSBpcyB0aGUgb25seSBlbGVtZW50IGluIHRoZSBzbG90ICopXG4gICAgICBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgZWx0IGZpcnN0IHRoZW4gc2xvdHMuKHNsb3QpIDwtIEludGVybmFsX2VsdC5uZXh0IHBvb2wgZWx0O1xuICAgICAgSW50ZXJuYWxfZWx0LnVubGluayBwb29sIGVsdClcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgZWx0ID1cbiAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgIGxldCBlbHQgPSBJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHBvb2wgZWx0IGluXG4gICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgIEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0XG4gIDs7XG5cbiAgbGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkIH5rZXkgfm5vdyA9XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKDApIGluXG4gICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHNsb3QgPSBMZXZlbC5zbG90IGxldmVsIH5rZXkgaW5cbiAgICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZpcnN0ID0gcmVmIHNsb3RzLihzbG90KSBpblxuICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCAhZmlyc3QpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGN1cnJlbnQgPSByZWYgIWZpcnN0IGluXG4gICAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICAgIGxldCBlbHQgPSAhY3VycmVudCBpblxuICAgICAgICAgIGxldCBuZXh0ID0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQgaW5cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgIWZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHQ7XG4gICAgICAgICAgaWYgVGltZV9ucy4oIDw9ICkgKEludGVybmFsX2VsdC5hdCBwb29sIGVsdCkgbm93XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBoYW5kbGVfZmlyZWQgKEludGVybmFsX2VsdC50b19leHRlcm5hbCBlbHQpO1xuICAgICAgICAgICAgaW50ZXJuYWxfcmVtb3ZlIHQgZWx0O1xuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHQ7XG4gICAgICAgICAgICAoKiBXZSByZWNvbXB1dGUgW2ZpcnN0XSBiZWNhdXNlIFtpbnRlcm5hbF9yZW1vdmVdIG1heSBoYXZlIGNoYW5nZWQgaXQuICopXG4gICAgICAgICAgICBmaXJzdCA6PSBzbG90cy4oc2xvdCkpXG4gICAgICAgIGRvbmUpKVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgdCBlbHQgfmtleSB+YXQgPVxuICAgIGVuc3VyZV92YWxpZF9rZXkgdCB+a2V5O1xuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9rZXkgcG9vbCBlbHQga2V5O1xuICAgIEludGVybmFsX2VsdC5zZXRfYXQgcG9vbCBlbHQgYXQ7XG4gICAgaW50ZXJuYWxfYWRkX2VsdCB0IGVsdFxuICA7O1xuXG4gIGxldCBjbGVhciB0ID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICB0Lmxlbmd0aCA8LSAwO1xuICAgICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICAgIGxldCBmcmVlX2VsdCBlbHQgPSBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdCBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBmb3IgbGV2ZWxfaW5kZXggPSAwIHRvIEFycmF5Lmxlbmd0aCBsZXZlbHMgLSAxIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IGxldmVscy4obGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIGxldmVsLmxlbmd0aCA+IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV2ZWwubGVuZ3RoIDwtIDA7XG4gICAgICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgICAgICBmb3Igc2xvdF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIHNsb3RzIC0gMSBkb1xuICAgICAgICAgICAgbGV0IGVsdCA9IHNsb3RzLihzbG90X2luZGV4KSBpblxuICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6ZnJlZV9lbHQ7XG4gICAgICAgICAgICAgIHNsb3RzLihzbG90X2luZGV4KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKSlcbiAgICAgICAgICBkb25lKVxuICAgICAgZG9uZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxfZWx0ID0gUHJpb3JpdHlfcXVldWUuSW50ZXJuYWxfZWx0XG5tb2R1bGUgS2V5ID0gUHJpb3JpdHlfcXVldWUuS2V5XG5tb2R1bGUgSW50ZXJ2YWxfbnVtID0gS2V5XG5cbmxldCBtaW5faW50ZXJ2YWxfbnVtID0gSW50ZXJ2YWxfbnVtLnplcm9cblxuKCogQWxsIHRpbWUgZnJvbSB0aGUgZXBvY2ggb253YXJkcyBpcyBicm9rZW4gaW50byBoYWxmLW9wZW4gaW50ZXJ2YWxzIG9mIHNpemVcbiAgIFtDb25maWcuYWxhcm1fcHJlY2lzaW9uIGNvbmZpZ10uICBUaGUgaW50ZXJ2YWxzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCB6ZXJvLCBhbmQgYVxuICAgdGltZSdzIGludGVydmFsIG51bWJlciBzZXJ2ZXMgYXMgaXRzIGtleSBpbiBbcHJpb3JpdHlfcXVldWVdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBjb25maWcgOiBDb25maWcudFxuICA7IHN0YXJ0IDogVGltZV9ucy50XG4gIDsgKCogW21heF9pbnRlcnZhbF9udW1dIGlzIHRoZSBpbnRlcnZhbCBudW1iZXIgb2YgW21heF90aW1lXS4gKilcbiAgICBtYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnRcbiAgOyBtdXRhYmxlIG5vdyA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudFxuICA7IHByaW9yaXR5X3F1ZXVlIDogJ2EgUHJpb3JpdHlfcXVldWUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdGltaW5nX3doZWVsID0gJ2EgdFxudHlwZSAnYSB0X25vdyA9ICdhIHRcblxubGV0IHNleHBfb2ZfdF9ub3cgXyB0ID0gWyVzZXhwICh0Lm5vdyA6IFRpbWVfbnMudCldXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBDb25maWcuYWxhcm1fcHJlY2lzaW9uIHQuY29uZmlnXG5cbm1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmlvcml0eV9xdWV1ZS5FbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBudWxsID0gUHJpb3JpdHlfcXVldWUuRWx0Lm51bGxcbiAgbGV0IGF0IHR3IHQgPSBQcmlvcml0eV9xdWV1ZS5FbHQuYXQgdHcucHJpb3JpdHlfcXVldWUgdFxuICBsZXQgdmFsdWUgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC52YWx1ZSB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCBpbnRlcnZhbF9udW0gdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5rZXkgdHcucHJpb3JpdHlfcXVldWUgdFxuZW5kXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBpdGVyIHQgfmYgPSBQcmlvcml0eV9xdWV1ZS5pdGVyIHQucHJpb3JpdHlfcXVldWUgfmZcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICBtb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBhdCA6IFRpbWVfbnMudFxuICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB0IGFsYXJtID0geyBhdCA9IEFsYXJtLmF0IHQgYWxhcm07IHZhbHVlID0gQWxhcm0udmFsdWUgdCBhbGFybSB9XG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBUaW1lX25zLmNvbXBhcmUgKGF0IHQxKSAoYXQgdDIpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb25maWcgOiBDb25maWcudFxuICAgIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICAgIDsgbm93IDogVGltZV9ucy50XG4gICAgOyBhbGFybXMgOiAnYSBBbGFybS50IGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IHByZXR0eVxuICAgICAgKHsgY29uZmlnXG4gICAgICAgOyBzdGFydFxuICAgICAgIDsgbWF4X2ludGVydmFsX251bVxuICAgICAgIDsgbm93XG4gICAgICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID0gX1xuICAgICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IF9cbiAgICAgICA7IHByaW9yaXR5X3F1ZXVlID0gX1xuICAgICAgIH0gYXMgdClcbiAgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IHIgOj0gUHJldHR5LkFsYXJtLmNyZWF0ZSB0IGEgOjogIXIpO1xuICBsZXQgYWxhcm1zID0gTGlzdC5zb3J0ICFyIH5jb21wYXJlOlByZXR0eS5BbGFybS5jb21wYXJlIGluXG4gIHsgUHJldHR5LmNvbmZpZzsgc3RhcnQ7IG1heF9pbnRlcnZhbF9udW07IG5vdzsgYWxhcm1zIH1cbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBtYXRjaCAhc2V4cF9vZl90X3N0eWxlIHdpdGhcbiAgfCBgSW50ZXJuYWwgLT4gc2V4cF9vZl90X2ludGVybmFsIHNleHBfb2ZfYSB0XG4gIHwgYFByZXR0eSAtPiBbJXNleHAgKHByZXR0eSB0IDogYSBQcmV0dHkudCldXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBQcmlvcml0eV9xdWV1ZS5sZW5ndGggdC5wcmlvcml0eV9xdWV1ZVxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHdpdGggYWxsIGFsYXJtcyBpbiBtYXggaW50ZXJ2YWxcIlxuICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbjs7XG5cbmxldCBwb29sIHQgPSBQcmlvcml0eV9xdWV1ZS5wb29sIHQucHJpb3JpdHlfcXVldWVcblxubGV0IGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZSB+YWxhcm1fcHJlY2lzaW9uID1cbiAgSW50ZXJ2YWxfbnVtLm9mX2ludDYzIChBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtIGFsYXJtX3ByZWNpc2lvbiB0aW1lKVxuOztcblxubGV0IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0aW1lID1cbiAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb246dC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtIHQgdGltZSA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgdGltZSBtaW5fdGltZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bSBnb3QgdGltZSB0b28gZmFyIGluIHRoZSBwYXN0XCIgKHRpbWUgOiBUaW1lX25zLnQpXTtcbiAgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWVcbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgaW50ZXJ2YWxfbnVtID1cbiAgQWxhcm1fcHJlY2lzaW9uLmludGVydmFsX251bV9zdGFydFxuICAgIHQuY29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIChpbnRlcnZhbF9udW0gfD4gSW50ZXJ2YWxfbnVtLnRvX2ludDYzKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW0gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbC5pbnRlcnZhbF9udW1fc3RhcnQgZ290IHRvbyBzbWFsbCBpbnRlcnZhbF9udW1cIlxuICAgICAgICAoaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXG4gICAgICAgIChtaW5faW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIGxhcmdlIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKHQubWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50KV1cbjs7XG5cbmxldCBpbnRlcnZhbF9udW1fc3RhcnQgdCBpbnRlcnZhbF9udW0gPVxuICBpZiBJbnRlcnZhbF9udW0uKCA8ICkgaW50ZXJ2YWxfbnVtIG1pbl9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19zbWFsbCBpbnRlcnZhbF9udW07XG4gIGlmIEludGVydmFsX251bS4oID4gKSBpbnRlcnZhbF9udW0gdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfaW50ZXJ2YWxfbnVtX3N0YXJ0X2dvdF90b29fbGFyZ2UgdCBpbnRlcnZhbF9udW07XG4gIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW1cbjs7XG5cbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIHQga2V5ID1cbiAgKCogW2ludGVydmFsX251bV9zdGFydCB0IGtleV0gaXMgdGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBvZiB0aGUgdGltZSBpbnRlcnZhbFxuICAgICBob2xkaW5nIHRoZSBmaXJzdCBhbGFybSBpbiBbdF0uICBBZHZhbmNpbmcgdG8gdGhhdCB3b3VsZCBub3QgYmUgZW5vdWdoLCBzaW5jZSB0aGVcbiAgICAgYWxhcm1zIGluIHRoYXQgaW50ZXJ2YWwgZG9uJ3QgZmlyZSB1bnRpbCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZVxuICAgICBuZXh0IGludGVydmFsLiAgU28sIHdlIHVzZSBbc3VjYyBrZXldIHRvIGFkdmFuY2UgdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgIGludGVydmFsLiAqKVxuICBpbnRlcnZhbF9udW1fc3RhcnQgdCAoS2V5LnN1Y2Mga2V5KVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gICAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkpKVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4bl9vZl9lbXB0eV90aW1pbmdfd2hlZWwgdDtcbiAgbGV0IGtleSA9IEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0IGluXG4gIGlmIEludGVydmFsX251bS5lcXVhbCBrZXkgdC5tYXhfaW50ZXJ2YWxfbnVtXG4gIHRoZW4gcmFpc2VfbmV4dF9hbGFybV9maXJlc19hdF93aXRoX2FsbF9hbGFybXNfaW5fbWF4X2ludGVydmFsIHQ7XG4gIG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXlcbjs7XG5cbmxldCBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9XG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgPSBQcmlvcml0eV9xdWV1ZS5tYXhfYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcnZhbF9udW0uKCA+PSApIG1heF9hbGxvd2VkX2tleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiBtYXhfdGltZVxuICBlbHNlXG4gICAgVGltZV9ucy5hZGRcbiAgICAgIChpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgbWF4X2FsbG93ZWRfa2V5KVxuICAgICAgKFRpbWVfbnMuU3Bhbi4oIC0gKSAoYWxhcm1fcHJlY2lzaW9uIHQpIFRpbWVfbnMuU3Bhbi5uYW5vc2Vjb25kKVxuOztcblxubGV0IG5vd19pbnRlcnZhbF9udW0gdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWluX2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtID0gbm93X2ludGVydmFsX251bVxubGV0IG1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSB0ID0gaW50ZXJ2YWxfbnVtIHQgKG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbmxldCBpbnRlcnZhbF9zdGFydCB0IHRpbWUgPSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQgKGludGVydmFsX251bSB0IHRpbWUpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb25maWc6KGNoZWNrIENvbmZpZy5pbnZhcmlhbnQpXG4gICAgICB+c3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIHN0YXJ0IC0+XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oID49ICkgc3RhcnQgbWluX3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIHN0YXJ0IG1heF90aW1lKSkpXG4gICAgICB+bWF4X2ludGVydmFsX251bTpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2ludGVydmFsX251bSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgbWF4X3RpbWUpO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBJbnRlcnZhbF9udW0udF1cbiAgICAgICAgICAgICB+ZXhwZWN0Om1heF9pbnRlcnZhbF9udW1cbiAgICAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKGludGVydmFsX251bV9zdGFydCB0IG1heF9pbnRlcnZhbF9udW0pKSkpXG4gICAgICB+bm93OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3cgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBub3cgdC5zdGFydCk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgbm93IG1heF90aW1lKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCB0Lm5vdylcbiAgICAgICAgICAgICAgIChQcmlvcml0eV9xdWV1ZS5taW5fYWxsb3dlZF9rZXkgdC5wcmlvcml0eV9xdWV1ZSkpKSlcbiAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1biBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgICAgICAgICAgfmV4cGVjdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgKG5vd19pbnRlcnZhbF9udW0gdCkpKSlcbiAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9hbGFybV90aW1lIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF1cbiAgICAgICAgICAgICBtYXhfYWxsb3dlZF9hbGFybV90aW1lXG4gICAgICAgICAgICAgfmV4cGVjdDooY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKSlcbiAgICAgIH5wcmlvcml0eV9xdWV1ZTooY2hlY2sgKFByaW9yaXR5X3F1ZXVlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpO1xuICAgIGl0ZXIgdCB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBJbnRlcnZhbF9udW0uZXF1YWxcbiAgICAgICAgICAoQWxhcm0uaW50ZXJ2YWxfbnVtIHQgYWxhcm0pXG4gICAgICAgICAgKGludGVydmFsX251bSB0IChBbGFybS5hdCB0IGFsYXJtKSkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgVGltZV9ucy4oID49ICkgKGludGVydmFsX3N0YXJ0IHQgKEFsYXJtLmF0IHQgYWxhcm0pKSAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgKEFsYXJtLmF0IHQgYWxhcm0pIChUaW1lX25zLnN1YiAobm93IHQpIChhbGFybV9wcmVjaXNpb24gdCkpKSkpXG47O1xuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfmhhbmRsZV9maXJlZCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgdG9fIChub3cgdClcbiAgdGhlbiAoXG4gICAgdC5ub3cgPC0gdG9fO1xuICAgIGxldCBrZXkgPSBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdG9fIGluXG4gICAgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDwtIGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBrZXk7XG4gICAgbWF0Y2hcbiAgICAgIFByaW9yaXR5X3F1ZXVlLmluY3JlYXNlX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgIH5rZXlcbiAgICAgICAgfmhhbmRsZV9yZW1vdmVkOmhhbmRsZV9maXJlZFxuICAgIHdpdGhcbiAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSAtPlxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPSApIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSAoY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpKVxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgLT5cbiAgICAgIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdClcbjs7XG5cbmxldCBjcmVhdGUgfmNvbmZpZyB+c3RhcnQgPVxuICBpZiBUaW1lX25zLiggPCApIHN0YXJ0IFRpbWVfbnMuZXBvY2hcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlRpbWluZ193aGVlbC5jcmVhdGUgZ290IHN0YXJ0IGJlZm9yZSB0aGUgZXBvY2hcIiAoc3RhcnQgOiBUaW1lX25zLnQpXTtcbiAgbGV0IHQgPVxuICAgIHsgY29uZmlnXG4gICAgOyBzdGFydFxuICAgIDsgbWF4X2ludGVydmFsX251bSA9XG4gICAgICAgIGludGVydmFsX251bV9pbnRlcm5hbCB+dGltZTptYXhfdGltZSB+YWxhcm1fcHJlY2lzaW9uOmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbiAgICA7IG5vdyA9IFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbm93X2ludGVydmFsX251bV9zdGFydCA9XG4gICAgICAgIFRpbWVfbnMubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSA9IG1heF90aW1lICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IHByaW9yaXR5X3F1ZXVlID1cbiAgICAgICAgUHJpb3JpdHlfcXVldWUuY3JlYXRlID9jYXBhY2l0eTpjb25maWcuY2FwYWNpdHkgfmxldmVsX2JpdHM6Y29uZmlnLmxldmVsX2JpdHMgKClcbiAgICB9XG4gIGluXG4gIHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA8LSBjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdDtcbiAgYWR2YW5jZV9jbG9jayB0IH50b186c3RhcnQgfmhhbmRsZV9maXJlZDooZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKTtcbiAgdFxuOztcblxubGV0IGFkZF9hdF9pbnRlcnZhbF9udW0gdCB+YXQgdmFsdWUgPVxuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6YXRcbiAgICAgICB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuICAgICAgIHZhbHVlKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gdGhhdCBmYXIgaW4gdGhlIGZ1dHVyZVwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6KHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSA6IFRpbWVfbnMudCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWluZ193aGVlbCBjYW5ub3Qgc2NoZWR1bGUgYWxhcm0gYmVmb3JlIHN0YXJ0IG9mIGN1cnJlbnQgaW50ZXJ2YWxcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Oih0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgOiBUaW1lX25zLnQpXVxuOztcblxubGV0IGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQgPVxuICBpZiBUaW1lX25zLiggPiApIGF0IHQubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0aGVuIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdDtcbiAgaWYgVGltZV9ucy4oIDwgKSBhdCB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgdGhlbiByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0XG47O1xuXG5sZXQgYWRkIHQgfmF0IHZhbHVlID1cbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpXG4gICAgICAgfmF0XG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXQgcmVtb3ZlIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5yZW1vdmUgdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxubGV0IGNsZWFyIHQgPSBQcmlvcml0eV9xdWV1ZS5jbGVhciB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgbWVtIHQgYWxhcm0gPSBQcmlvcml0eV9xdWV1ZS5tZW0gdC5wcmlvcml0eV9xdWV1ZSBhbGFybVxuXG5sZXQgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5IH5hdCA9XG4gIGlmIG5vdCAobWVtIHQgYWxhcm0pXG4gIHRoZW4gZmFpbHdpdGggXCJUaW1pbmdfd2hlZWwgY2Fubm90IHJlc2NoZWR1bGUgYWxhcm0gbm90IGluIHRpbWluZyB3aGVlbFwiO1xuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBQcmlvcml0eV9xdWV1ZS5jaGFuZ2UgdC5wcmlvcml0eV9xdWV1ZSBhbGFybSB+a2V5IH5hdFxuOztcblxubGV0IHJlc2NoZWR1bGUgdCBhbGFybSB+YXQgPSByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdCkgfmF0XG5cbmxldCByZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSB0IGFsYXJtIH5hdCA9XG4gIHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTphdCB+YXQ6KGludGVydmFsX251bV9zdGFydCB0IGF0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW0gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWluX2FsYXJtX2ludGVydmFsX251bV9leG4gb2YgZW1wdHkgdGltaW5nX3doZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV1cbiAgZWxzZSBJbnRlcm5hbF9lbHQua2V5IChwb29sIHQpIGVsdFxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWF4X2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQgPVxuICBsZXQgcG9vbCA9IHBvb2wgdCBpblxuICBJbnRlcm5hbF9lbHQubWluX2FsYXJtX3RpbWUgcG9vbCBlbHQgfndpdGhfa2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+aGFuZGxlX2ZpcmVkID1cbiAgUHJpb3JpdHlfcXVldWUuZmlyZV9wYXN0X2FsYXJtc1xuICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICB+aGFuZGxlX2ZpcmVkXG4gICAgfmtleToobm93X2ludGVydmFsX251bSB0KVxuICAgIH5ub3c6dC5ub3dcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBOdW1fa2V5X2JpdHMgPSBOdW1fa2V5X2JpdHNcblxuICBsZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsID0gaW50ZXJ2YWxfbnVtX2ludGVybmFsXG4gIGxldCBtYXhfdGltZSA9IG1heF90aW1lXG5lbmRcbiIsIm1vZHVsZSBJbnJpYV9zeXMgPSBTeXNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxub3BlbiBQb2x5XG5cbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxuXG5tb2R1bGUgRXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVGltZV9ucy5TcGFuXG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBUaW1lX25zLlNwYW4udmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IHN0cnVjdFxuICBpbmNsdWRlIFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgSW50XG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gICAgZW5kKVxuXG4gIGxldCBkZWZhdWx0ID0gY3JlYXRlX2V4biAoMSBsc2wgMTYpXG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHQxID0gdDJcbmVuZFxuXG5tb2R1bGUgTWF4X251bV90aHJlYWRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBEdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gc3RydWN0XG4gIG1vZHVsZSBIb3dfdG9fZHVtcCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IERlZmF1bHRcbiAgICAgIHwgQ2FsbF9hYm9ydFxuICAgICAgfCBDYWxsX2djb3JlXG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgdHlwZSB3YXRjaCA9XG4gICAgeyBkdW1wX2lmX2RlbGF5ZWRfYnkgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgaG93X3RvX2R1bXAgOiBIb3dfdG9fZHVtcC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIHR5cGUgdCA9XG4gICAgfCBXYXRjaCBvZiB3YXRjaFxuICAgIHwgRG9fbm90X3dhdGNoXG4gIFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIERlYnVnX3RhZyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEFsbFxuICAgICAgfCBDbG9ja1xuICAgICAgfCBGZFxuICAgICAgfCBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgIHwgRmluYWxpemVyc1xuICAgICAgfCBJbnRlcnJ1cHRvclxuICAgICAgfCBNb25pdG9yXG4gICAgICB8IE1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHwgUGFyYWxsZWxcbiAgICAgIHwgUmVhZGVyXG4gICAgICB8IFNjaGVkdWxlclxuICAgICAgfCBTaHV0ZG93blxuICAgICAgfCBUaHJlYWRfcG9vbFxuICAgICAgfCBUaHJlYWRfc2FmZVxuICAgICAgfCBXcml0ZXJcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID1cbiAgICBbIEFsbFxuICAgIDsgQ2xvY2tcbiAgICA7IEZkXG4gICAgOyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgICA7IEZpbmFsaXplcnNcbiAgICA7IEludGVycnVwdG9yXG4gICAgOyBNb25pdG9yXG4gICAgOyBNb25pdG9yX3NlbmRfZXhuXG4gICAgOyBQYXJhbGxlbFxuICAgIDsgUmVhZGVyXG4gICAgOyBTY2hlZHVsZXJcbiAgICA7IFNodXRkb3duXG4gICAgOyBUaHJlYWRfcG9vbFxuICAgIDsgVGhyZWFkX3NhZmVcbiAgICA7IFdyaXRlclxuICAgIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9kZXNjcl93YXRjaGVyID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRXBvbGxfaWZfdGltZXJmZFxuICAgICAgfCBFcG9sbFxuICAgICAgfCBTZWxlY3RcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGxldCBsaXN0ID0gWyBFcG9sbF9pZl90aW1lcmZkOyBFcG9sbDsgU2VsZWN0IF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGNoZWNrX2ludmFyaWFudHMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzIDogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA6IEZpbGVfZGVzY3Jfd2F0Y2hlci50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgOiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX3RocmVhZHMgOiBNYXhfbnVtX3RocmVhZHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnQgb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0IDogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgOiBEZWJ1Z190YWcudCBsaXN0IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IDogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA6IFRpbWluZ193aGVlbC5Db25maWcudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwXVxuXG5sZXQgZW1wdHkgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gTm9uZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IE5vbmVcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gTm9uZVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBOb25lXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gTm9uZVxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IE5vbmVcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBOb25lXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBOb25lXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gTm9uZVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gTm9uZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gTm9uZVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBOb25lXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVcbiAgICAgID9hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID9jaGVja19pbnZhcmlhbnRzXG4gICAgICA/ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gICAgICA/ZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICAgICAgP2Vwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgICAgID9maWxlX2Rlc2NyX3dhdGNoZXJcbiAgICAgID9tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICAgICAgP21heF9udW1fdGhyZWFkc1xuICAgICAgP21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgICA/bWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgICAgID9yZWNvcmRfYmFja3RyYWNlc1xuICAgICAgP3JlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgICAgID90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgICAgID90aW1pbmdfd2hlZWxfY29uZmlnXG4gICAgICAoKVxuICA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgKHdvcmRfc2l6ZSA6IFdvcmRfc2l6ZS50KSA9XG4gIGxldCBtb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvbiBpblxuICBsZXQgYWxhcm1fcHJlY2lzaW9uLCBsZXZlbF9iaXRzID1cbiAgICBtYXRjaCB3b3JkX3NpemUgd2l0aFxuICAgIHwgVzMyIC0+IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQsIFsgMTA7IDEwOyA5IF1cbiAgICB8IFc2NCAtPiBBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MyksIFsgMTQ7IDE1OyA5OyA2IF1cbiAgaW5cbiAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gbGV2ZWxfYml0cylcbiAgICAoKVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplIFdvcmRfc2l6ZS53b3JkX3NpemVcbjs7XG5cbmxldCBkZWZhdWx0ID1cbiAgKCogRm9yIFtmaWxlX2Rlc2NyX3dhdGNoZXJdIGFuZCBbbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXSB3ZSBjaG9vc2UgdGhlIGRlZmF1bHQgZm9yIHRoZVxuICAgICBjb21tb24gY2FzZSB0aGF0IFtlcG9sbF0gaXMgYXZhaWxhYmxlLiAgVGhlcmUgaXMgc29tZSBhZGRpdGlvbmFsIGNvZGUgaW5cbiAgICAgW0FzeW5jX3VuaXguQ29uZmlnXSB0aGF0IGNoZWNrcyB3aGV0aGVyIFtlcG9sbF0gaXMgYWN0dWFsbHkgYXZhaWxhYmxlLCBhbmQgaWYgbm90LFxuICAgICB1c2VzIFtzZWxlY3RdIGFuZCBhIHNtYWxsZXIgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMuICopXG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDYwLilcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBmYWxzZVxuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZmFsc2VcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBEb19ub3Rfd2F0Y2hcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSAoRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy5jcmVhdGVfZXhuIDI1NilcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIEVwb2xsX2lmX3RpbWVyZmRcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLjA1KSlcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5kZWZhdWx0XG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSAoTWF4X251bV90aHJlYWRzLmNyZWF0ZV9leG4gNTApXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgU29tZSAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biA1MDApXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNaW5faW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4pKVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgW11cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgZmFsc2VcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSAoc2VjIDEuKVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgSW5oZXJpdFxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgZXhhbXBsZSA9XG4gIHsgZGVmYXVsdCB3aXRoXG4gICAgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBEZWJ1Z190YWcuWyBGZDsgU2NoZWR1bGVyIF1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPVxuICAgICAgU29tZVxuICAgICAgICAoQ3B1c2V0XG4gICAgICAgICAgIChbIDA7IDE7IDIgXSB8PiBJbnQuU2V0Lm9mX2xpc3QgfD4gVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LkNwdXNldC5jcmVhdGVfZXhuKSlcbiAgfVxuOztcblxubGV0IGVudmlyb25tZW50X3ZhcmlhYmxlID0gXCJBU1lOQ19DT05GSUdcIlxuXG5sZXQgZmllbGRfZGVzY3JpcHRpb25zICgpIDogc3RyaW5nID1cbiAgbGV0IGZpZWxkIHRvX3NleHAgZGVzY3JpcHRpb24gYWMgZmllbGQgPVxuICAgIChGaWVsZC5uYW1lIGZpZWxkLCB0b19zZXhwIChPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpLCBkZXNjcmlwdGlvbilcbiAgICA6OiBhY1xuICBpblxuICBsZXQgZmllbGRzID1cbiAgICBGaWVsZHMuZm9sZFxuICAgICAgfmluaXQ6W11cbiAgICAgIH5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgc2VuZCBhbiBleGNlcHRpb24gdG8gdGhlIHRvcGxldmVsIG1vbml0b3JcbiAgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgdG8gcmVndWxhcmx5IGNoZWNrIGludmFyaWFudHMgb2YgaXRzIGludGVybmFsXG4gIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMgY2FuIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIHlvdXIgcHJvZ3JhbS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyByb3V0aW5lcyB0byBjaGVjayBpZiB0aGV5IGFyZSBiZWluZyBhY2Nlc3NlZFxuICBmcm9tIHNvbWUgdGhyZWFkIG90aGVyIHRoYW4gdGhlIHRocmVhZCBjdXJyZW50bHkgaG9sZGluZyB0aGUgQXN5bmNcbiAgbG9jaywgd2hpY2ggaXMgbm90IGFsbG93ZWQgYW5kIGNhbiBsZWFkIHRvIHZlcnkgY29uZnVzaW5nIGJlaGF2aW9yLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kdW1wX2NvcmVfb25fam9iX2RlbGF5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnRdXG4gICAgICAgICAgIFsge3xcbiAgQ2FuIGJlIHNldCB0byBbRG9fbm90X3dhdGNoXSBvcjpcblxuICAgIChXYXRjaCAoKGR1bXBfaWZfZGVsYXllZF9ieSBTUEFOKSAoaG93X3RvX2R1bXAgSE9XKSkpXG5cbiAgSWYgc2V0IHRvIFtXYXRjaF0sIHRoZW4gb24gcHJvZ3JhbSBzdGFydCB0aGlzIHdpbGwgc3RhcnQgYSByZWd1bGFyXG4gIEFzeW5jIGpvYiB0aGF0IGluY3JlbWVudHMgYSBjb3VudGVyLCBhbmQgYSBDIHRocmVhZCB0aGF0IHdpbGxcbiAgZGV0ZWN0IGlmIHRoYXQgam9iIGlzIGRlbGF5ZWQgYnkgW2R1bXBfaWZfZGVsYXllZF9ieV0sIGFuZCBpZiBzbyxcbiAgd2lsbCBjb3JlIGR1bXAgdGhlIHByb2dyYW0uICBJZiBhdmFpbGFibGUsIFsvdXNyL2Jpbi9nY29yZV0gaXNcbiAgdXNlZCBieSBkZWZhdWx0IHRvIGR1bXAgdGhlIGNvcmUsIHdoaWNoIHNob3VsZCBhbGxvdyB0aGUgcHJvZ3JhbVxuICB0byBjb250aW51ZSBydW5uaW5nLiAgT3RoZXJ3aXNlLCBbYWJvcnRdIHdpbGwgYmUgY2FsbGVkIGZyb20gQyxcbiAgd2hpY2ggd2lsbCBraWxsIHRoZSBwcm9ncmFtIHdoaWxlIGNhdXNpbmcgYSBjb3JlIGR1bXAuICBPbmUgY2FuXG4gIGZvcmNlIFthYm9ydF0gb3IgW2djb3JlXSB2aWEgW2hvd190b19kdW1wXSwgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZjpcbiAgW0NhbGxfYWJvcnRdLCBbQ2FsbF9nY29yZV0sIG9yIFtEZWZhdWx0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZXBvbGxfbWF4X3JlYWR5X2V2ZW50czpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRXBvbGxfbWF4X3JlYWR5X2V2ZW50cy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZWFkeSBldmVudHMgdGhhdCBBc3luYydzIGNhbGwgdG8gW0Vwb2xsLndhaXRdXG4gIHdpbGwgaGFuZGxlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5maWxlX2Rlc2NyX3dhdGNoZXI6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEZpbGVfZGVzY3Jfd2F0Y2hlci50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgZGV0ZXJtaW5lcyB3aGF0IE9TIHN1YnN5c3RlbSBBc3luYyB1c2VzIHRvIHdhdGNoIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGJlaW5nIHJlYWR5LlxuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgW2Vwb2xsXSBpZiB0aW1lcmZkJ3MgYXJlIHN1cHBvcnRlZCBhbmQgaWYgbm90LCB1c2UgW3NlbGVjdF0uXG5cbiAgQWxsb3dlZCB2YWx1ZXMgYXJlOnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICB+c2VwOlwiLCBcIlxuICAgICAgICAgICAgICAgKExpc3QubWFwIEZpbGVfZGVzY3Jfd2F0Y2hlci5saXN0IH5mOkZpbGVfZGVzY3Jfd2F0Y2hlci50b19zdHJpbmcpXG4gICAgICAgICAgIDsge3wuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fb3Blbl9maWxlX2Rlc2NyczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIChmdW4gZGVmYXVsdCAtPlxuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgICB+XzpcbiAgICAgICAgICAgICAgICAgICAgKGNvbmNhdFxuICAgICAgICAgICAgICAgICAgICAgICBbIFwibWluIFwiXG4gICAgICAgICAgICAgICAgICAgICAgIDsgZGVmYXVsdCB8PiBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMucmF3IHw+IEludC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAgICAgICAgICAgIDsgXCIgW3VsaW1pdCAtbiAtSF1cIlxuICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6IHN0cmluZyldKVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCBhbnkgb25lIHRpbWUufH0gXSlcbiAgICAgIH5tYXhfbnVtX3RocmVhZHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fdGhyZWFkcy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgQXN5bmMgd2lsbCBjcmVhdGUgdG8gZG8gYmxvY2tpbmdcbiAgc3lzdGVtIGNhbGxzIGFuZCBoYW5kbGUgY2FsbHMgdG8gW0luX3RocmVhZC5ydW5dLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfaW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgc2NoZWR1bGVyIHdpbGwgcGF1c2UgYmV0d2VlbiBjeWNsZXNcbiAgd2hlbiBpdCBoYXMgbm8gam9icyBhbmQgaXMgZ29pbmcgdG8gd2FpdCBmb3IgSS9PLiAgSW4gcHJpbmNpcGxlIG9uZVxuICBkb2Vzbid0IG5lZWQgdGhpcywgYW5kIHdlIGNvdWxkIHVzZSBhbiBpbmZpbml0ZSB0aW1lb3V0LiAgV2UgaW5zdGVhZFxuICB1c2UgYSBzbWFsbCB0aW1lb3V0IChieSBkZWZhdWx0KSwgdG8gYmUgbW9yZSByb2J1c3QgdG8gYnVncyB0aGF0XG4gIGNvdWxkIHByZXZlbnQgQXN5bmMgZnJvbSB3YWtpbmcgdXAgYW5kIHNlcnZpY2luZyBldmVudHMuICBGb3JcbiAgZXhhbXBsZSwgYXMgb2YgMjAxMy0wMSwgdGhlIE9DYW1sIHJ1bnRpbWUgaGFzIGEgYnVnIHRoYXQgY2F1c2VzIGl0XG4gIHRvIG5vdCBuZWNlc3NhcmlseSBydW4gYW4gT0NhbWwgc2lnbmFsIGhhbmRsZXIgaW4gYSB0aW1lbHkgbWFubmVyLlxuICBUaGlzIGluIHR1cm4gY2FuIGNhdXNlIGEgc2ltcGxlIEFzeW5jIHByb2dyYW0gdGhhdCBpcyB3YWl0aW5nIG9uIGFcbiAgc2lnbmFsIHRvIGhhbmcsIHdoZW4gaW4gZmFjdCBpdCBzaG91bGQgaGFuZGxlIHRoZSBzaWduYWwuXG5cbiAgV2UgdXNlIDUwbXMgYXMgdGhlIGRlZmF1bHQgdGltZW91dCwgYmVjYXVzZSBpdCBpcyBpbmZyZXF1ZW50IGVub3VnaFxuICB0byBoYXZlIGEgbmVnbGlnaWJsZSBwZXJmb3JtYW5jZSBpbXBhY3QsIGFuZCBmcmVxdWVudCBlbm91Z2ggdGhhdFxuICB0aGUgbGF0ZW5jeSB3b3VsZCB0eXBpY2FsbHkgYmUgbm90IG5vdGljZWFibGUuICBBbHNvLCA1MG1zIGlzIHdoYXRcbiAgdGhlIE9DYW1sIHRpY2tlciB0aHJlYWQgdXNlcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGpvYnMgdGhhdCB3aWxsIGJlIGRvbmUgYXQgZWFjaCBwcmlvcml0eSB3aXRoaW5cbiAgZWFjaCBBc3luYyBjeWNsZS4gIFRoaXMgbGltaXRzIGhvdyBtYW55IGpvYnMgdGhlIHNjaGVkdWxlciB3aWxsIHJ1blxuICBiZWZvcmUgcGF1c2luZyB0byBjaGVjayBmb3IgSS9PLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5taW5faW50ZXJfY3ljbGVfdGltZW91dDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWluaW11bSB0aW1lb3V0IHRoZSBzY2hlZHVsZXIgd2lsbCBwYXNzIHRvIHRoZSBPUyB3aGVuIGl0IGNoZWNrc1xuICBmb3IgSS9PIGJldHdlZW4gY3ljbGVzLiAgVGhpcyBpcyB6ZXJvIGJ5IGRlZmF1bHQuICBTZXR0aW5nIGl0IHRvIGFcbiAgbm9uemVybyB2YWx1ZSBpcyB1c2VkIHRvIGluY3JlYXNlIHRocmVhZCBmYWlybmVzcyBiZXR3ZWVuIHRoZSBzY2hlZHVsZXJcbiAgYW5kIG90aGVyIHRocmVhZHMuICBBIHBsYXVzaWJsZSBzZXR0aW5nIGlzIDF1cy4gIFRoaXMgaXMgYWxzb1xuICBjb25maWd1cmFibGUgaW4gT0NhbWwgdmlhIFtTY2hlZHVsZXIuc2V0X21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBEZWJ1Z190YWcudCBsaXN0XVxuICAgICAgICAgICBbIHt8XG4gIEEgbGlzdCBvZiB0YWdzIHNwZWNpZnlpbmcgd2hpY2ggQXN5bmMgZnVuY3Rpb25zIHNob3VsZCBwcmludCBkZWJ1Z1xuICBtZXNzYWdlcyB0byBzdGRlcnIuICBFYWNoIHRhZyBpZGVudGlmaWVzIGEgZ3JvdXAgb2YgcmVsYXRlZCBBc3luY1xuICBmdW5jdGlvbnMuICBUaGUgdGFnIFthbGxdIG1lYW5zIHRvIHByaW50IGRlYnVnIG1lc3NhZ2VzIGZvciBhbGxcbiAgZnVuY3Rpb25zLiAgQWxsb3dlZCB2YWx1ZXMgYXJlOlxuXG58fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgKExpc3QubWFwIERlYnVnX3RhZy5saXN0IH5mOihmdW4gZCAtPlxuICAgICAgICAgICAgICAgICAgY29uY2F0IFsgXCIgICAgXCI7IERlYnVnX3RhZy50b19zdHJpbmcgZDsgXCJcXG5cIiBdKSlcbiAgICAgICAgICAgOyB7fFxuICBUdXJuaW5nIG9uIGRlYnVnIG1lc3NhZ2VzIHdpbGwgc3Vic3RhbnRpYWxseSBzbG93IGRvd24gbW9zdCBwcm9ncmFtcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgdGhpcyB3aWxsIGNhdXNlIEFzeW5jIHRvIGtlZXAgaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHRoZVxuICBoaXN0b3J5IG9mIHN0YWNrIGJhY2t0cmFjZXMgKG9idGFpbmVkIHZpYSBbQmFja3RyYWNlLmdldF0pIHRoYXQgbGVkXG4gIHRvIHRoZSBjdXJyZW50IGpvYi4gIElmIGFuIEFzeW5jIGpvYiBoYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbixcbiAgdGhpcyBiYWNrdHJhY2UgaGlzdG9yeSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBleGNlcHRpb24uICBJblxuICBwYXJ0aWN1bGFyIHRoZSBoaXN0b3J5IHdpbGwgYXBwZWFyIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gdGhhdFxuICByZWFjaGVzIHRoZSBtYWluIG1vbml0b3IuICBUaGlzIGNhbiBoYXZlIGEgc3Vic3RhbnRpYWwgcGVyZm9ybWFuY2VcbiAgaW1wYWN0LCBib3RoIGluIHJ1bm5pbmcgdGltZSBhbmQgc3BhY2UgdXNhZ2UuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XVxuICAgICAgICAgICBbIHt8XG4gIEJ5IGRlZmF1bHQsIEFzeW5jIHdpbGwgcHJpbnQgYSBtZXNzYWdlIHRvIHN0ZGVyciBldmVyeSBzZWNvbmQgaWZcbiAgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50XVxuICAgICAgICAgICBbIHt8XG4gICBXaGV0aGVyIGFuZCBob3cgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIHBvb2wgc2hvdWxkIGJlIGFmZmluaXRpemVkIHRvIENQVXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRpbWluZ193aGVlbF9jb25maWc6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IFRpbWluZ193aGVlbC5Db25maWcudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGlzIHVzZWQgdG8gYWRqdXN0IHRoZSB0aW1lL3NwYWNlIHRyYWRlb2ZmIGluIHRoZSB0aW1pbmcgd2hlZWxcbiAgdXNlZCB0byBpbXBsZW1lbnQgQXN5bmMncyBjbG9jay4gIFRpbWUgaXMgc3BsaXQgaW50byBpbnRlcnZhbHMgb2ZcbiAgc2l6ZSBbYWxhcm1fcHJlY2lzaW9uXSwgYW5kIGFsYXJtcyB3aXRoIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsXG4gIGZpcmUgaW4gdGhlIHNhbWUgY3ljbGUuICBMZXZlbCBbaV0gaW4gdGhlIHRpbWluZyB3aGVlbCBoYXMgYW5cbiAgYXJyYXkgb2Ygc2l6ZSBbMl5iXSwgd2hlcmUgW2JdIGlzIHRoZSBbaV0ndGggZW50cnkgaW4gW2xldmVsX2JpdHNdLlxufH1cbiAgICAgICAgICAgXSlcbiAgaW5cbiAgY29uY2F0XG4gICAgKExpc3QubWFwXG4gICAgICAgKExpc3Quc29ydCBmaWVsZHMgfmNvbXBhcmU6KGZ1biAobmFtZTEsIF8sIF8pIChuYW1lMiwgXywgXykgLT5cbiAgICAgICAgICBTdHJpbmcuY29tcGFyZSBuYW1lMSBuYW1lMikpXG4gICAgICAgfmY6KGZ1biAobmFtZSwgZGVmYXVsdCwgZGVzY3JpcHRpb24pIC0+XG4gICAgICAgICBjb25jYXRcbiAgICAgICAgICAgKFwiXFxuXCIgOjogbmFtZSA6OiBcIiAoZGVmYXVsdCBcIiA6OiBTZXhwLnRvX3N0cmluZyBkZWZhdWx0IDo6IFwiKVwiIDo6IGRlc2NyaXB0aW9uKSkpXG47O1xuXG5sZXQgaGVscF9tZXNzYWdlICgpID1cbiAgY29uY2F0XG4gICAgWyBcIlRoZSBcIlxuICAgIDsgZW52aXJvbm1lbnRfdmFyaWFibGVcbiAgICA7IHt8IGVudmlyb25tZW50IHZhcmlhYmxlIGFmZmVjdHMgQXN5bmNcbmluIHZhcmlvdXMgd2F5cy4gIEl0cyB2YWx1ZSBzaG91bGQgYmUgYSBzZXhwIG9mIHRoZSBmb2xsb3dpbmcgZm9ybSxcbndoZXJlIGFsbCBmaWVsZHMgYXJlIG9wdGlvbmFsOlxuXG58fVxuICAgIDsgU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgZXhhbXBsZSlcbiAgICA7IHt8XG5cbkhlcmUgaXMgYW4gZXhwbGFuYXRpb24gb2YgZWFjaCBmaWVsZC5cbnx9XG4gICAgOyBmaWVsZF9kZXNjcmlwdGlvbnMgKClcbiAgICBdXG47O1xuXG5sZXQgdXNhZ2UgKCkgPVxuICBlcHJpbnRmIFwiJXMlIVwiIChoZWxwX21lc3NhZ2UgKCkpO1xuICBleGl0IDFcbjs7XG5cbmxldCB0ID1cbiAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gSW5yaWFfc3lzLmdldGVudiBlbnZpcm9ubWVudF92YXJpYWJsZSkgd2l0aFxuICB8IE5vbmUgLT4gZW1wdHlcbiAgfCBTb21lIFwiXCIgLT4gdXNhZ2UgKClcbiAgfCBTb21lIHN0cmluZyAtPlxuICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIHN0cmluZykpIHdpdGhcbiAgICAgfCBPayB0IC0+IHRcbiAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICBlcHJpbnRmXG4gICAgICAgICBcIiVzXFxuXFxuXCJcbiAgICAgICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgIChFcnJvci5zZXhwX29mX3RcbiAgICAgICAgICAgICAgIChFcnJvci5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICBcImludmFsaWQgdmFsdWUgZm9yICVzIGVudmlyb25tZW50IHZhcmlhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50X3ZhcmlhYmxlKVxuICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICBbJXNleHBfb2Y6IGV4bl0pKSk7XG4gICAgICAgdXNhZ2UgKCkpXG47O1xuXG5tb2R1bGUgUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gc3RydWN0XG4gIGxldCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnID1cbiAgICBtYXRjaCB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGwgLT4gTGlzdC5tZW0gbCB0YWcgfmVxdWFsOkRlYnVnX3RhZy5lcXVhbFxuICA7O1xuXG4gIGxldCBhbGwgPSBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgQWxsXG4gIGxldCBkZWJ1ZyB0YWcgPSBhbGwgfHwgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZ1xuICBsZXQgY2xvY2sgPSBkZWJ1ZyBDbG9ja1xuICBsZXQgZmQgPSBkZWJ1ZyBGZFxuICBsZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gZGVidWcgRmlsZV9kZXNjcl93YXRjaGVyXG4gIGxldCBmaW5hbGl6ZXJzID0gZGVidWcgRmluYWxpemVyc1xuICBsZXQgaW50ZXJydXB0b3IgPSBkZWJ1ZyBJbnRlcnJ1cHRvclxuICBsZXQgbW9uaXRvciA9IGRlYnVnIE1vbml0b3JcbiAgbGV0IG1vbml0b3Jfc2VuZF9leG4gPSBkZWJ1ZyBNb25pdG9yX3NlbmRfZXhuXG4gIGxldCBwYXJhbGxlbCA9IGRlYnVnIFBhcmFsbGVsXG4gIGxldCByZWFkZXIgPSBkZWJ1ZyBSZWFkZXJcbiAgbGV0IHNjaGVkdWxlciA9IGRlYnVnIFNjaGVkdWxlclxuICBsZXQgc2h1dGRvd24gPSBkZWJ1ZyBTaHV0ZG93blxuICBsZXQgdGhyZWFkX3Bvb2wgPSBkZWJ1ZyBUaHJlYWRfcG9vbFxuICBsZXQgdGhyZWFkX3NhZmUgPSBkZWJ1ZyBUaHJlYWRfc2FmZVxuICBsZXQgd3JpdGVyID0gZGVidWcgV3JpdGVyXG5lbmRcblxubGV0ICggISEgKSBmaWVsZCA9XG4gIE9wdGlvbi52YWx1ZSAoRmllbGQuZ2V0IGZpZWxkIHQpIH5kZWZhdWx0OihPcHRpb24udmFsdWVfZXhuIChGaWVsZC5nZXQgZmllbGQgZGVmYXVsdCkpXG47O1xuXG5sZXQgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMuYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgY2hlY2tfaW52YXJpYW50cyA9ICEhRmllbGRzLmNoZWNrX2ludmFyaWFudHNcbmxldCBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSAhIUZpZWxkcy5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbmxldCBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gISFGaWVsZHMuZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xubGV0IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9ICEhRmllbGRzLnRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxubGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9ICEhRmllbGRzLmZpbGVfZGVzY3Jfd2F0Y2hlclxubGV0IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSAhIUZpZWxkcy5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbmxldCBtYXhfbnVtX3RocmVhZHMgPSAhIUZpZWxkcy5tYXhfbnVtX3RocmVhZHNcbmxldCBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9ICEhRmllbGRzLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5sZXQgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5taW5faW50ZXJfY3ljbGVfdGltZW91dFxubGV0IHJlY29yZF9iYWNrdHJhY2VzID0gISFGaWVsZHMucmVjb3JkX2JhY2t0cmFjZXNcbmxldCByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gISFGaWVsZHMucmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IHRpbWluZ193aGVlbF9jb25maWcgPSAhIUZpZWxkcy50aW1pbmdfd2hlZWxfY29uZmlnXG5sZXQgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9ICEhRmllbGRzLmR1bXBfY29yZV9vbl9qb2JfZGVsYXlcblxubGV0IHQgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgY2hlY2tfaW52YXJpYW50c1xuICA7IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9IFNvbWUgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IFNvbWUgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgZmlsZV9kZXNjcl93YXRjaGVyXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gU29tZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRpbWluZ193aGVlbF9jb25maWcgPSBTb21lIHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IHRhc2tfaWQgPSByZWYgKGZ1biAoKSAtPiBTZXhwLkF0b20gXCI8bm8gdGFzayBpZD5cIilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSByZWZcblxuKCogQmVpbmcgYSBwb2ludGVyLCBubyBvbmUgb3V0c2lkZSB0aGlzIG1vZHVsZSBjYW4gY29uc3RydWN0IGEgdmFsdWUgdGhhdCBpc1xuICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE9wdGlvbl9hcnJheS5DaGVhcF9vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyXG4gICBwbGFjZSB3aGVyZSB3ZSB3YW50IGl0IHdlIHNob3VsZCByZWNvbnNpZGVyIG1ha2luZyBpdCBzaGFyZWQuICopXG5sZXQgbm9uZSA9IE9iai5vYmogKE9iai5uZXdfYmxvY2sgT2JqLmFic3RyYWN0X3RhZyAxKVxubGV0IGNyZWF0ZSAoKSA9IHJlZiBub25lXG5sZXQgaXNfbm9uZSB4ID0gcGh5c19lcXVhbCAheCBub25lXG5sZXQgaXNfc29tZSB4ID0gbm90IChpc19ub25lIHgpXG5sZXQgZ2V0X3NvbWVfZXhuIHggPSBpZiBpc19ub25lIHggdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk1vcHRpb24uZ2V0X3NvbWVfZXhuXCJdIGVsc2UgIXhcbmxldCBnZXQgdCA9IGlmIGlzX25vbmUgdCB0aGVuIE5vbmUgZWxzZSBTb21lICF0XG5sZXQgdW5zYWZlX2dldCB0ID0gIXRcbmxldCBzZXRfc29tZSB0IHYgPSB0IDo9IHZcbmxldCBzZXRfbm9uZSB0ID0gdCA6PSBub25lXG5cbmxldCBzZXQgdCB2ID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgTm9uZSAtPiBzZXRfbm9uZSB0XG4gIHwgU29tZSB2IC0+IHNldF9zb21lIHQgdlxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIG9wdGlvbildXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgT3B0aW9uLml0ZXIgKGdldCB0KSB+ZjppbnZhcmlhbnRfYSlcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfZ2V0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBQb2ludGVyID0gUG9vbC5Qb2ludGVyXG5cbigqIFRoaXMgcG9vbCBob2xkcyBub2RlcyB0aGF0IHdvdWxkIGJlIHJlcHJlc2VudGVkIG1vcmUgdHJhZGl0aW9uYWxseSBhczpcblxuICAge1tcbiAgICAgdHlwZSAnYSB0ID1cbiAgICAgICB8IEVtcHR5XG4gICAgICAgfCBIZWFwIG9mICdhICogJ2EgdCBsaXN0IF19XG5cbiAgIFdlIHdpbGwgcmVwcmVzZW50IHRoZW0gYXMgYSBsZWZ0LWNoaWxkLCByaWdodC1zaWJsaW5nIHRyZWUgaW4gYSB0cmlwbGV0XG4gICAodmFsdWUgKiBsZWZ0X2NoaWxkICogcmlnaHRfc2libGluZykuICBUaGUgbGVmdCBjaGlsZCBhbmQgYWxsIHJpZ2h0IHNpYmxpbmdzXG4gICBvZiB0aGUgbGVmdCBjaGlsZCBmb3JtIGEgbGlua2VkIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBzdWJoZWFwcyBvZiBhIGdpdmVuIGhlYXA6XG5cbiAgIHt2XG4gICAgICAgICBBXG4gICAgICAgIC9cbiAgICAgICBCIC0+IEMgLT4gRCAtPiBFIC0+IEZcbiAgICAgIC8gICAgICAgICAvICAgICAgICAgL1xuICAgICBHICAgICAgICAgSC0+SS0+SiAgIEstPkxcbiAgIHZ9ICopXG5cbm1vZHVsZSBOb2RlIDogc2lnXG4gICgqIEV4cG9zaW5nIFtwcml2YXRlIGludF0gaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCwgYmVjYXVzZSBpdCBhbGxvd3NcbiAgICAgdGhlIGNvbXBpbGVyIHRvIHNraXAgdGhlIHdyaXRlIGJhcnJpZXIuICopXG5cbiAgdHlwZSAnYSB0ID0gcHJpdmF0ZSBpbnRcblxuICBtb2R1bGUgSWQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIG1vZHVsZSBQb29sIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNyZWF0ZSA6IG1pbl9zaXplOmludCAtPiAnYSB0XG4gICAgdmFsIGlzX2Z1bGwgOiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgZ3JvdyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSBub2RlIC0+ICdhIG5vZGUgKiAnYSB0XG4gIGVuZFxuXG4gICgqKiBbYWxsb2NhdGUgdiB+cG9vbF0gYWxsb2NhdGVzIGEgbmV3IG5vZGUgZnJvbSB0aGUgcG9vbCB3aXRoIG5vIGNoaWxkIG9yIHNpYmxpbmcgKilcbiAgdmFsIGFsbG9jYXRlIDogJ2EgLT4gcG9vbDonYSBQb29sLnQgLT4gaWQ6SWQudCAtPiAnYSB0XG5cbiAgKCoqIFtmcmVlIHQgfnBvb2xdIGZyZWVzIFt0XSBmb3IgcmV1c2UuICBJdCBpcyBhbiBlcnJvciB0byBhY2Nlc3MgW3RdIGFmdGVyIHRoaXMuICopXG4gIHZhbCBmcmVlIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGEgc3BlY2lhbCBbdF0gdGhhdCByZXByZXNlbnRzIHRoZSBlbXB0eSBub2RlICopXG4gIHZhbCBlbXB0eSA6IHVuaXQgLT4gJ2EgdFxuXG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuXG4gICgqKiBbdmFsdWVfZXhuIHQgfnBvb2xdIHJldHVybiB0aGUgdmFsdWUgb2YgW3RdLCByYWlzZSBpZiBbaXNfZW1wdHkgdF0gKilcbiAgdmFsIHZhbHVlX2V4biA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2FcblxuICB2YWwgaWQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IElkLnRcbiAgdmFsIGNoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG4gIHZhbCBzaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtwcmV2IHRdIGlzIGVpdGhlciB0aGUgcGFyZW50IG9mIFt0XSBvciB0aGUgc2libGluZyBpbW1lZGlhdGVseSBsZWZ0IG9mIFt0XSAqKVxuICB2YWwgcHJldiA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbYWRkX2NoaWxkIHQgfmNoaWxkIH5wb29sXSBBZGQgYSBjaGlsZCB0byBbdF0sIHByZXNlcnZpbmcgZXhpc3RpbmcgY2hpbGRyZW4gYXNcbiAgICAgIHNpYmxpbmdzIG9mIFtjaGlsZF0uIFt0XSBhbmQgW2NoaWxkXSBzaG91bGQgbm90IGJlIGVtcHR5IGFuZCBbY2hpbGRdIHNob3VsZCBoYXZlIG5vXG4gICAgICBzaWJsaW5nIGFuZCBoYXZlIG5vIHByZXYgbm9kZS4gKilcbiAgdmFsIGFkZF9jaGlsZCA6ICdhIHQgLT4gY2hpbGQ6J2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgc2libGluZyAqKVxuICB2YWwgZGlzY29ubmVjdF9zaWJsaW5nIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIGRpc2Nvbm5lY3QgYW5kIHJldHVybiB0aGUgY2hpbGQgKilcbiAgdmFsIGRpc2Nvbm5lY3RfY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2RldGFjaCB0IH5wb29sXSByZW1vdmVzIFt0XSBmcm9tIHRoZSB0cmVlLCBhZGp1c3RpbmcgcG9pbnRlcnMgYXJvdW5kIGl0LiBBZnRlclxuICAgICAgW2RldGFjaF0sIFt0XSBpcyB0aGUgcm9vdCBvZiBhIHN0YW5kYWxvbmUgaGVhcCwgd2hpY2ggaXMgZGV0YWNoZWQgZnJvbSB0aGUgb3JpZ2luYWxcbiAgICAgIGhlYXAuICopXG4gIHZhbCBkZXRhY2ggOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSWQgPSBJbnRcblxuICBsZXQgZHVtbXlfaWQgOiBJZC50ID0gLTFcblxuICB0eXBlICdhIG5vZGUgPVxuICAgICgnYSwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgSWQudCkgUG9vbC5TbG90cy50NVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgbGV0IGVtcHR5ID0gUG9pbnRlci5udWxsXG4gIGxldCBpc19lbXB0eSA9IFBvaW50ZXIuaXNfbnVsbFxuICBsZXQgZXF1YWwgPSBQb2ludGVyLnBoeXNfZXF1YWxcbiAgbGV0IHZhbHVlIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQwXG4gIGxldCBjaGlsZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MVxuICBsZXQgc2libGluZyB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MlxuICBsZXQgcHJldiB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50M1xuICBsZXQgaWQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDRcblxuICAoKiBsZXQgc2V0X3ZhbHVlICAgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MCB2ICopXG4gIGxldCBzZXRfY2hpbGQgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MSB2XG4gIGxldCBzZXRfc2libGluZyB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQyIHZcbiAgbGV0IHNldF9wcmV2IHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDMgdlxuXG4gIGxldCB2YWx1ZV9leG4gdCB+cG9vbCA9XG4gICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICB2YWx1ZSB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGFsbG9jYXRlIHZhbHVlIH5wb29sIH5pZCA9IFBvb2wubmV3NSBwb29sIHZhbHVlIChlbXB0eSAoKSkgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIGlkXG4gIGxldCBmcmVlIHQgfnBvb2wgPSBQb29sLnVuc2FmZV9mcmVlIHBvb2wgdFxuXG4gIGxldCBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCA9XG4gICAgbGV0IHNpYmxpbmcgPSBzaWJsaW5nIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfc2libGluZyB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBzaWJsaW5nIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIHNpYmxpbmdcbiAgOztcblxuICBsZXQgZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sID1cbiAgICBsZXQgY2hpbGQgPSBjaGlsZCB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBjaGlsZClcbiAgICB0aGVuIChcbiAgICAgIHNldF9jaGlsZCB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICBzZXRfcHJldiBjaGlsZCAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBjaGlsZFxuICA7O1xuXG4gIGxldCBhZGRfY2hpbGQgdCB+Y2hpbGQ6bmV3X2NoaWxkIH5wb29sID1cbiAgICAoKiBhc3NlcnRpb25zIHdlIHdvdWxkIG1ha2UsIGJ1dCBmb3Igc3BlZWQ6XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgbmV3X2NoaWxkKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAoc2libGluZyBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChwcmV2IG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICopXG4gICAgbGV0IGN1cnJlbnRfY2hpbGQgPSBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgaW5cbiAgICAoKiBhZGQgW25ld19jaGlsZF0gdG8gdGhlIGxpc3Qgb2YgW3RdJ3MgY2hpbGRyZW4gKHdoaWNoIG1heSBiZSBlbXB0eSkgKilcbiAgICBzZXRfc2libGluZyBuZXdfY2hpbGQgY3VycmVudF9jaGlsZCB+cG9vbDtcbiAgICBpZiBub3QgKGlzX2VtcHR5IGN1cnJlbnRfY2hpbGQpIHRoZW4gc2V0X3ByZXYgY3VycmVudF9jaGlsZCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X2NoaWxkIHQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9wcmV2IG5ld19jaGlsZCB0IH5wb29sXG4gIDs7XG5cbiAgbGV0IGRldGFjaCB0IH5wb29sID1cbiAgICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJldiA9IHByZXYgdCB+cG9vbCBpblxuICAgICAgaWYgbm90IChpc19lbXB0eSBwcmV2KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCByZWxhdGlvbl90b19wcmV2ID0gaWYgZXF1YWwgdCAoY2hpbGQgcHJldiB+cG9vbCkgdGhlbiBgY2hpbGQgZWxzZSBgc2libGluZyBpblxuICAgICAgICBzZXRfcHJldiB0IChlbXB0eSAoKSkgfnBvb2w7XG4gICAgICAgIGxldCBzaWJsaW5nID0gZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgaW5cbiAgICAgICAgKG1hdGNoIHJlbGF0aW9uX3RvX3ByZXYgd2l0aFxuICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIHByZXYgc2libGluZyB+cG9vbFxuICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBwcmV2IHNpYmxpbmcgfnBvb2wpO1xuICAgICAgICBpZiBub3QgKGlzX2VtcHR5IHNpYmxpbmcpIHRoZW4gc2V0X3ByZXYgc2libGluZyBwcmV2IH5wb29sKSlcbiAgOztcblxuICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG5vZGUgUG9vbC50XG4gICAgdHlwZSBub25yZWMgJ2Egbm9kZSA9ICdhIG5vZGUgUG9pbnRlci50XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5taW5fc2l6ZTpjYXBhY2l0eSA6IGEgdCA9XG4gICAgICBQb29sLmNyZWF0ZVxuICAgICAgICBQb29sLlNsb3RzLnQ1XG4gICAgICAgIH5jYXBhY2l0eVxuICAgICAgICB+ZHVtbXk6XG4gICAgICAgICAgKCAoT2JqLm1hZ2ljIE5vbmUgOiBhKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgZHVtbXlfaWQgKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gUG9vbC5pc19mdWxsIHRcbiAgICBsZXQgbGVuZ3RoIHQgPSBQb29sLmxlbmd0aCB0XG4gICAgbGV0IGdyb3cgdCA9IFBvb2wuZ3JvdyB0XG5cbiAgICBsZXQgY29weSB0IHN0YXJ0ID1cbiAgICAgIGxldCB0JyA9IGNyZWF0ZSB+bWluX3NpemU6KFBvb2wuY2FwYWNpdHkgdCkgaW5cbiAgICAgIGxldCBjb3B5X25vZGUgbm9kZSB0b192aXNpdCA9XG4gICAgICAgIGlmIGlzX2VtcHR5IG5vZGVcbiAgICAgICAgdGhlbiBlbXB0eSAoKSwgdG9fdmlzaXRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogd2UgdXNlIHRoZSBzYW1lIGlkLCBidXQgdGhhdCdzIG9rIHNpbmNlIGlkcyBzaG91bGQgYmUgdW5pcXVlIHBlciBoZWFwICopXG4gICAgICAgICAgbGV0IG5ld19ub2RlID1cbiAgICAgICAgICAgIGFsbG9jYXRlICh2YWx1ZV9leG4gbm9kZSB+cG9vbDp0KSB+cG9vbDp0JyB+aWQ6KGlkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0b192aXNpdCA9XG4gICAgICAgICAgICAobmV3X25vZGUsIGBjaGlsZCwgY2hpbGQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogKG5ld19ub2RlLCBgc2libGluZywgc2libGluZyBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiB0b192aXNpdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X25vZGUsIHRvX3Zpc2l0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IChub2RlX3RvX3VwZGF0ZSwgc2xvdCwgbm9kZV90b19jb3B5KSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IG5ld19ub2RlLCB0b192aXNpdCA9IGNvcHlfbm9kZSBub2RlX3RvX2NvcHkgcmVzdCBpblxuICAgICAgICAgIChtYXRjaCBzbG90IHdpdGhcbiAgICAgICAgICAgfCBgY2hpbGQgLT4gc2V0X2NoaWxkIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnXG4gICAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCcpO1xuICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgbmV3X25vZGUpIHRoZW4gc2V0X3ByZXYgbmV3X25vZGUgbm9kZV90b191cGRhdGUgfnBvb2w6dCc7XG4gICAgICAgICAgbG9vcCB0b192aXNpdFxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3RhcnQsIHRvX3Zpc2l0ID0gY29weV9ub2RlIHN0YXJ0IFtdIGluXG4gICAgICBsb29wIHRvX3Zpc2l0O1xuICAgICAgbmV3X3N0YXJ0LCB0J1xuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogY21wIGlzIHBsYWNlZCBmaXJzdCB0byBzaG9ydC1jaXJjdWl0IHBvbHltb3JwaGljIGNvbXBhcmUgKilcbiAgICBjbXAgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBtdXRhYmxlIHBvb2wgOiAnYSBOb2RlLlBvb2wudFxuICA7ICgqIGludmFyaWFudDogIFtyb290XSBuZXZlciBoYXMgYSBzaWJsaW5nICopXG4gICAgbXV0YWJsZSByb290IDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIDogaW50XG4gIH1cblxubGV0IGludmFyaWFudCBfIHQgPVxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCAobm9kZSwgZXhwZWN0ZWRfcHJldiwgbWF5YmVfcGFyZW50X3ZhbHVlKSA6OiByZXN0IC0+XG4gICAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgbm9kZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGhpc192YWx1ZSA9IE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGFzc2VydCAoTm9kZS5lcXVhbCAoTm9kZS5wcmV2IG5vZGUgfnBvb2w6dC5wb29sKSBleHBlY3RlZF9wcmV2KTtcbiAgICAgICAgT3B0aW9uLml0ZXIgbWF5YmVfcGFyZW50X3ZhbHVlIH5mOihmdW4gcGFyZW50X3ZhbHVlIC0+XG4gICAgICAgICAgYXNzZXJ0ICh0LmNtcCBwYXJlbnRfdmFsdWUgdGhpc192YWx1ZSA8PSAwKSk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoKE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIFNvbWUgdGhpc192YWx1ZSlcbiAgICAgICAgICAgOjogKE5vZGUuc2libGluZyBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgbWF5YmVfcGFyZW50X3ZhbHVlKVxuICAgICAgICAgICA6OiByZXN0KSlcbiAgICAgIGVsc2UgbG9vcCByZXN0XG4gIGluXG4gIGFzc2VydCAoTm9kZS5pc19lbXB0eSB0LnJvb3QgfHwgTm9kZS5pc19lbXB0eSAoTm9kZS5zaWJsaW5nIHQucm9vdCB+cG9vbDp0LnBvb2wpKTtcbiAgbG9vcCBbIHQucm9vdCwgTm9kZS5lbXB0eSAoKSwgTm9uZSBdXG47O1xuXG5sZXQgY3JlYXRlID8obWluX3NpemUgPSAxKSB+Y21wICgpID1cbiAgeyBjbXBcbiAgOyBwb29sID0gTm9kZS5Qb29sLmNyZWF0ZSB+bWluX3NpemVcbiAgOyByb290ID0gTm9kZS5lbXB0eSAoKVxuICA7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPSAwXG4gIH1cbjs7XG5cbmxldCBjb3B5IHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH0gPVxuICBsZXQgcm9vdCwgcG9vbCA9IE5vZGUuUG9vbC5jb3B5IHBvb2wgcm9vdCBpblxuICB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9XG47O1xuXG5sZXQgYWxsb2NhdGUgdCB2ID1cbiAgaWYgTm9kZS5Qb29sLmlzX2Z1bGwgdC5wb29sIHRoZW4gdC5wb29sIDwtIE5vZGUuUG9vbC5ncm93IHQucG9vbDtcbiAgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzIDwtIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyArIDE7XG4gIE5vZGUuYWxsb2NhdGUgdiB+cG9vbDp0LnBvb2wgfmlkOihOb2RlLklkLm9mX2ludCB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMpXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHJvb3QxLCByb290MiB3aXRoXG4gICAgIHwgTm9uZSwgaCB8IGgsIE5vbmUgLT4gaFxuICAgICB8IFNvbWUgKE5vZGUgKHYxLCBjaGlsZHJlbjEpKSwgU29tZSAoTm9kZSAodjIsIGNoaWxkcmVuMikpIC0+XG4gICAgICAgaWYgdjEgPCB2MlxuICAgICAgIHRoZW4gU29tZSAoTm9kZSAodjEsIHJvb3QyIDo6IGNoaWxkcmVuMSkpXG4gICAgICAgZWxzZSBTb21lIChOb2RlICh2Miwgcm9vdDEgOjogY2hpbGRyZW4yKSlcbiAgIF19XG5cbiAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBuZWl0aGVyIHJvb3QgaGFzIGEgcHJldiBub2RlICh1c3VhbGx5IGJlY2F1c2UgdGhlIGlucHV0cyBjb21lXG4gICBmcm9tIFtkaXNjb25uZWN0XypdIG9yIGFyZSB0aGUgdG9wIG9mIHRoZSBoZWFwIG9yIGFyZSB0aGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24pLiAqKVxubGV0IG1lcmdlIHQgcm9vdDEgcm9vdDIgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHJvb3QxXG4gIHRoZW4gcm9vdDJcbiAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IHJvb3QyXG4gIHRoZW4gcm9vdDFcbiAgZWxzZSAoXG4gICAgbGV0IGFkZF9jaGlsZCB0IG5vZGUgfmNoaWxkID1cbiAgICAgIE5vZGUuYWRkX2NoaWxkIG5vZGUgfnBvb2w6dC5wb29sIH5jaGlsZDtcbiAgICAgIG5vZGVcbiAgICBpblxuICAgIGxldCB2MSA9IE5vZGUudmFsdWVfZXhuIHJvb3QxIH5wb29sOnQucG9vbCBpblxuICAgIGxldCB2MiA9IE5vZGUudmFsdWVfZXhuIHJvb3QyIH5wb29sOnQucG9vbCBpblxuICAgIGlmIHQuY21wIHYxIHYyIDwgMFxuICAgIHRoZW4gYWRkX2NoaWxkIHQgcm9vdDEgfmNoaWxkOnJvb3QyXG4gICAgZWxzZSBhZGRfY2hpbGQgdCByb290MiB+Y2hpbGQ6cm9vdDEpXG47O1xuXG5sZXQgdG9wX2V4biB0ID1cbiAgaWYgTm9kZS5pc19lbXB0eSB0LnJvb3RcbiAgdGhlbiBmYWlsd2l0aCBcIkhlYXAudG9wX2V4biBjYWxsZWQgb24gYW4gZW1wdHkgaGVhcFwiXG4gIGVsc2UgTm9kZS52YWx1ZV9leG4gdC5yb290IH5wb29sOnQucG9vbFxuOztcblxubGV0IHRvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX2V4biB0KVxuXG5sZXQgYWRkX25vZGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhbGxvY2F0ZSB0IHYgaW5cbiAgdC5yb290IDwtIG1lcmdlIHQgdC5yb290IG5vZGU7XG4gIG5vZGVcbjs7XG5cbmxldCBhZGQgdCB2ID0gaWdub3JlIChhZGRfbm9kZSB0IHYgOiBfIE5vZGUudClcblxuKCogW21lcmdlX3BhaXJzXSB0YWtlcyBhIGxpc3Qgb2YgaGVhcCByb290cyBhbmQgbWVyZ2VzIGNvbnNlY3V0aXZlIHBhaXJzLCByZWR1Y2luZyB0aGVcbiAgIGxpc3Qgb2YgbGVuZ3RoIG4gdG8gbi8yLiAgVGhlbiBpdCBtZXJnZXMgdGhlIG1lcmdlZCBwYWlycyBpbnRvIGEgc2luZ2xlIGhlYXAuICBPbmVcbiAgIGludHVpdGlvbiBpcyB0aGF0IHRoaXMgaXMgc29tZXdoYXQgbGlrZSBidWlsZGluZyBhIHNpbmdsZSBsZXZlbCBvZiBhIGJpbmFyeSB0cmVlLlxuXG4gICBUaGUgb3V0cHV0IGhlYXAgZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWUgdGhhdCB3YXMgYXQgdGhlIHJvb3Qgb2YgdGhlIGlucHV0IGhlYXAuXG5cbiAgIFdlIGJyZWFrIHRoZSBmdW5jdGlvbiBpbnRvIHR3byBwYXJ0cy4gIEEgZmlyc3Qgc3RhZ2UgdGhhdCBpcyB3aWxsaW5nIHRvIHVzZSBsaW1pdGVkXG4gICBzdGFjayBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGlvbiBmb3IgYm9va2tlZXBpbmcsIGFuZCBhIHNlY29uZCBzdGFnZSB0aGF0IHNoaWZ0cyB0b1xuICAgdXNpbmcgYSBsaXN0IGFzIGFuIGFjY3VtdWxhdG9yIGlmIHdlIGdvIHRvbyBkZWVwLlxuXG4gICBUaGlzIGNhbiBiZSBtYWRlIHRhaWwgcmVjdXJzaXZlIGFuZCBub24tYWxsb2NhdGluZyBieSBzdGFydGluZyB3aXRoIGFuIGVtcHR5IGhlYXAgYW5kXG4gICBtZXJnaW5nIG1lcmdlZCBwYWlycyBpbnRvIGl0LiBVbmZvcnR1bmF0ZWx5IHRoaXMgXCJsZWZ0IGZvbGRcIiB2ZXJzaW9uIGlzIG5vdCB3aGF0IGlzXG4gICBkZXNjcmliZWQgaW4gdGhlIG9yaWdpbmFsIHBhcGVyIGJ5IEZyZWRtYW4gZXQgYWwuOyB0aGV5IHNwZWNpZmljYWxseSBzYXkgdGhhdFxuICAgY2hpbGRyZW4gc2hvdWxkIGJlIG1lcmdlZCB0b2dldGhlciBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgIGxpc3QuIChbbWVyZ2VdIGlzIG5vdCBhc3NvY2lhdGl2ZSwgc28gb3JkZXIgbWF0dGVycy4pXG4qKVxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgIHwgW2hlYWRdIC0+IGhlYWQgOjogYWNjXG4gICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+IGxvb3AgKG1lcmdlIGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MlxuICAgICBpblxuICAgICBtYXRjaCBsb29wIFtdIGNoaWxkcmVuIHdpdGhcbiAgICAgfCBbXSAtPiBOb25lXG4gICAgIHwgW2hdIC0+IFNvbWUgaFxuICAgICB8IHggOjogeHMgLT4gU29tZSAoTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6bWVyZ2UpXG4gICBdfVxuKilcbmxldCBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZCA9XG4gIGxldCByZWMgbG9vcCBhY2MgaGVhZCA9XG4gICAgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWQgOjogYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgIGxvb3AgKG1lcmdlIHQgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyKSlcbiAgaW5cbiAgbWF0Y2ggbG9vcCBbXSBoZWFkIHdpdGhcbiAgfCBbXSAtPiBOb2RlLmVtcHR5ICgpXG4gIHwgWyBoIF0gLT4gaFxuICB8IHggOjogeHMgLT4gTGlzdC5mb2xkIHhzIH5pbml0OnggfmY6KGZ1biBhY2MgaGVhcCAtPiBtZXJnZSB0IGFjYyBoZWFwKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCB0LnJvb3Qgd2l0aFxuICAgICB8IE5vZGUgKF8sIGNoaWxkcmVuKSAtPlxuICAgICAgIGxldCByZWMgbG9vcCBkZXB0aCBjaGlsZHJlbiA9XG4gICAgICAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICAgICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGNoaWxkZW5cbiAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgfCBbaGVhZF0gLT4gU29tZSBoZWFkXG4gICAgICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPlxuICAgICAgICAgICAgIG1lcmdlIChtZXJnZSBoZWFkIG5leHQxKSAobG9vcCAoZGVwdGggKyAxKSBuZXh0MilcbiAgICAgICAgIGVuZFxuICAgICAgIGluXG4gICAgICAgbG9vcCAwIGNoaWxkcmVuXG4gICBdfVxuKilcbmxldCBtZXJnZV9wYWlycyA9XG4gIGxldCBtYXhfc3RhY2tfZGVwdGggPSAxXzAwMCBpblxuICBsZXQgcmVjIGxvb3AgdCBkZXB0aCBoZWFkID1cbiAgICBpZiBkZXB0aCA+PSBtYXhfc3RhY2tfZGVwdGhcbiAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkXG4gICAgZWxzZSBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGhlYWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0MSA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIGhlYWQgfnBvb2w6dC5wb29sIGluXG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5leHQxXG4gICAgICB0aGVuIGhlYWRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgKCogbWVyZ2UgdGhlIGZpcnN0IHR3byBub2RlcyBpbiBvdXIgbGlzdCwgYW5kIHRoZW4gbWVyZ2UgdGhlIHJlc3VsdCB3aXRoIHRoZVxuICAgICAgICAgICByZXN1bHQgb2YgcmVjdXJzaXZlbHkgY2FsbGluZyBtZXJnZV9wYWlycyBvbiB0aGUgdGFpbCAqKVxuICAgICAgICBtZXJnZSB0IChtZXJnZSB0IGhlYWQgbmV4dDEpIChsb29wIHQgKGRlcHRoICsgMSkgbmV4dDIpKSlcbiAgaW5cbiAgZnVuIHQgaGVhZCAtPiBsb29wIHQgMCBoZWFkXG47O1xuXG5sZXQgcmVtb3ZlX25vbl9lbXB0eSB0IG5vZGUgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICBsZXQgbWVyZ2VkX2NoaWxkcmVuID0gbWVyZ2VfcGFpcnMgdCAoTm9kZS5kaXNjb25uZWN0X2NoaWxkIG5vZGUgfnBvb2wpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgaWYgTm9kZS5lcXVhbCB0LnJvb3Qgbm9kZSB0aGVuIG1lcmdlZF9jaGlsZHJlbiBlbHNlIG1lcmdlIHQgdC5yb290IG1lcmdlZF9jaGlsZHJlblxuICBpblxuICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgdC5yb290IDwtIG5ld19yb290XG47O1xuXG5sZXQgcmVtb3ZlX3RvcCB0ID0gaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdCkgdGhlbiByZW1vdmVfbm9uX2VtcHR5IHQgdC5yb290XG5cbigqIE5vdGUgdGhhdCB0aGlzIGlzIHRhaWwtcmVjdXJzaXZlIGFuZCB0aGF0IGVhY2ggbm9kZSBpcyB2aXNpdGVkIGF0IG1vc3QgMyB0aW1lcyAob25jZVxuICAgZm9yIGVhY2ggYnJhbmNoIG9mIHRoZSBcImlmXCIpLCBzbyBpdCB0YWtlcyBsaW5lYXIgdGltZSBhbmQgY29uc3RhbnQgc3BhY2UuICopXG5sZXQgcmVjIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IG5vZGUgfnBvb2wgPVxuICBsZXQgY2hpbGQgPSBOb2RlLmNoaWxkIG5vZGUgfnBvb2wgaW5cbiAgbGV0IHNpYmxpbmcgPSBOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbCBpblxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgY2hpbGQpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgY2hpbGQgfnBvb2xcbiAgZWxzZSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgc2libGluZylcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBzaWJsaW5nIH5wb29sXG4gIGVsc2UgKFxuICAgIGxldCBwcmV2ID0gTm9kZS5wcmV2IG5vZGUgfnBvb2wgaW5cbiAgICBOb2RlLmRldGFjaCBub2RlIH5wb29sO1xuICAgIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBwcmV2KSB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHByZXYgfnBvb2wpXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpXG4gIHRoZW4gKFxuICAgIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHQucm9vdCB+cG9vbDp0LnBvb2w7XG4gICAgdC5yb290IDwtIE5vZGUuZW1wdHkgKCkpXG47O1xuXG5sZXQgcG9wX2V4biB0ID1cbiAgbGV0IHIgPSB0b3BfZXhuIHQgaW5cbiAgcmVtb3ZlX3RvcCB0O1xuICByXG47O1xuXG5sZXQgcG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3BfZXhuIHQpXG5cbmxldCBwb3BfaWYgdCBmID1cbiAgbWF0Y2ggdG9wIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdiAtPlxuICAgIGlmIGYgdlxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX3RvcCB0O1xuICAgICAgU29tZSB2KVxuICAgIGVsc2UgTm9uZVxuOztcblxuKCogcGFpcmluZyBoZWFwcyBhcmUgbm90IGJhbGFuY2VkIHRyZWVzLCBhbmQgdGhlcmVmb3JlIHdlIGNhbid0IHJlbHkgb24gYSBiYWxhbmNlXG4gICBwcm9wZXJ0eSB0byBzdG9wIG91cnNlbHZlcyBmcm9tIG92ZXJmbG93aW5nIHRoZSBzdGFjay4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIChmIGFjYyAoTm9kZS52YWx1ZV9leG4gfnBvb2wgbm9kZSkpIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIGluaXQgWyB0LnJvb3QgXSBbQG5vbnRhaWxdXG47O1xuXG4oKiBhbG1vc3QgaWRlbnRpY2FsIHRvIGZvbGQsIGNvcGllZCBmb3Igc3BlZWQgcHVycG9zZXMgKilcbmxldCBpdGVyIHQgfmYgPVxuICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHJlc3RcbiAgICAgIGVsc2UgKFxuICAgICAgICBmIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKTtcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBbIHQucm9vdCBdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBhID1cbiAgICBpZiBNLmFtX3J1bm5pbmdfdGVzdCB0aGVuIFNleHAuQXRvbSBcIjxoaWRkZW5faW5fdGVzdD5cIiBlbHNlIHNleHBfb2ZfYSBhXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfbm9uX3JvdW5kdHJpcHBpbmdfaW5fdGVzdF9vZl9zZXhwID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBUdXJuZWRfb2ZmID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGZhbHNlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFR1cm5lZF9vbiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uID0gTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IHRydWVcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29uLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvblwiID1cbiAgICAgIHByaW50X3MgWyVzZXhwICgxMDI0IDogVHVybmVkX29uLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8IDxoaWRkZW5faW5fdGVzdD4gfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcIlR1cm5lZCBvZmZcIiA9XG4gICAgICBwcmludF9zIChbJXNleHBfb2Y6IFR1cm5lZF9vZmYudF0gMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDI0IHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGFtX3J1bm5pbmdfdGVzdCA9IGFtX3J1bm5pbmdfdGVzdFxuICBlbmQpXG4iLCJvcGVuIEJhc2VcblxudHlwZSArJ2EgdFxuXG4oKiBUaGlzIFtPYmoubWFnaWNdIGlzIE9LIGJlY2F1c2Ugd2UgbmV2ZXIgYWxsb3cgdXNlciBjb2RlIGFjY2VzcyB0byBbbm9uZV0gKGV4Y2VwdCB2aWFcbiAgIFt1bnNhZmVfdmFsdWVdKS4gIFdlIGRpc2FsbG93IFtfIFVvcHQudCBVb3B0LnRdLCBzbyB0aGVyZSBpcyBubyBjaGFuY2Ugb2YgY29uZnVzaW5nXG4gICBbbm9uZV0gd2l0aCBbc29tZSBub25lXS4gIEFuZCBbZmxvYXQgVW9wdC50IGFycmF5XSBpcyBzaW1pbGFybHkgZGlzYWxsb3dlZC4gKilcbmxldCBub25lIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxuXG5sZXRbQGlubGluZV0gc29tZSAoeCA6ICdhKSA9XG4gIGxldCByIDogJ2EgdCA9IFN0ZGxpYi5PYmoubWFnaWMgeCBpblxuICBpZiBwaHlzX2VxdWFsIHIgbm9uZSB0aGVuIGZhaWx3aXRoIFwiVW9wdC5zb21lIFVvcHQubm9uZVwiO1xuICByXG47O1xuXG5sZXQgc29tZV9sb2NhbCA9IFN0ZGxpYi5PYmoubWFnaWMgc29tZVxubGV0IHNvbWVfbG9jYWwgOiAnYS4gKCdhW0Bsb2NhbF0pIC0+ICgnYSB0W0Bsb2NhbF0pID0gc29tZV9sb2NhbFxubGV0IHVuc2FmZV92YWx1ZSAoeCA6ICdhIHQpIDogJ2EgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWVfbG9jYWwgPSBTdGRsaWIuT2JqLm1hZ2ljIHVuc2FmZV92YWx1ZVxubGV0IHVuc2FmZV92YWx1ZV9sb2NhbCA6ICdhLiAoJ2EgdFtAbG9jYWxdKSAtPiAoJ2FbQGxvY2FsXSkgPSB1bnNhZmVfdmFsdWVfbG9jYWxcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBMb2NhbCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlX2xvY2FsXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgKFwidXNpbmcgdGhlIHNhbWUgc2VudGluZWwgdmFsdWVcIiBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgbWF0Y2ggc29tZSBcIlVvcHQubm9uZVwiIHdpdGhcbiAgICAgIHwgKF8gOiBzdHJpbmcgdCkgLT4gZmFpbHdpdGggXCJzaG91bGQgbm90IGhhdmUgZ290dGVuIHRvIHRoaXMgcG9pbnRcIlxuICAgICAgfCBleGNlcHRpb24gXyAtPiAoKVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2YsIGVudW1lcmF0ZV1cblxubGV0IG5vcm1hbCA9IE5vcm1hbFxubGV0IGxvdyA9IExvd1xuIiwiKCogVGhpcyBmaWxlIGRlZmluZXMgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyBhdCB0aGUgaGVhcnQgb2YgQXN5bmMuICBUaGUgZnVuY3Rpb25zXG4gICBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUocykgZm9yIGVhY2ggbW9kdWxlLlxuICAgVGhpcyBmaWxlIHNob3VsZCBkZWZpbmUgb25seSB0eXBlcywgbm90IGZ1bmN0aW9ucywgc2luY2UgZnVuY3Rpb25zIGRlZmluZWQgaW5zaWRlIHRoZVxuICAgcmVjdXJzaXZlIG1vZHVsZXMgYXJlIG5vdCBpbmxpbmVkLlxuXG4gICBJZiB5b3UgbmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBhIG1vZHVsZSBidXQgZG9pbmcgc28gd291bGQgY3JlYXRlIGEgZGVwZW5kZW5jeVxuICAgY3ljbGUsIHNwbGl0IHRoZSBmaWxlIGludG8gcGllY2VzIGFzIG5lZWRlZCB0byBicmVhayB0aGUgY3ljbGUsIGUuZy4gc2NoZWR1bGVyMC5tbCxcbiAgIHNjaGVkdWxlcjEubWwsIHNjaGVkdWxlci5tbC4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSByZWMgQ2VsbCA6IHNpZ1xuICB0eXBlIGFueSA9XG4gICAgWyBgRW1wdHlcbiAgICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICAgIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgfCBgRnVsbFxuICAgIHwgYEluZGlyXG4gICAgXVxuXG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyA6XG4gICAgICAgIHsgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIDsgbXV0YWJsZSBwcmV2IDogJ2EgSGFuZGxlci50XG4gICAgICAgIDsgbXV0YWJsZSBuZXh0IDogJ2EgSGFuZGxlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgdFxuICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9oYW5kbGVyIF0pIHRcbiAgICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgdFxuICAgIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgdFxuICAgIHwgSW5kaXIgOiAnYSBJdmFyLnQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgdFxuZW5kID1cbiAgQ2VsbFxuXG5hbmQgSGFuZGxlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIENlbGwudFxuZW5kID1cbiAgSGFuZGxlclxuXG5hbmQgSXZhciA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG5cbiAgbW9kdWxlIEltbXV0YWJsZSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IHsgY2VsbCA6ICgnYSwgQ2VsbC5hbnkpIENlbGwudCB9XG4gIGVuZFxuZW5kID1cbiAgSXZhclxuXG5hbmQgRGVmZXJyZWQgOiBzaWdcbiAgdHlwZSArISdhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGFycmF5XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IEN5Y2xlX2hvb2sudCBhcnJheVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gICAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgVGltZV9zb3VyY2UudDFcbiAgICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgeWllbGQgOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgICA7IG11dGFibGUgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sXG4gICAgfVxuZW5kID1cbiAgU2NoZWR1bGVyXG5cbmFuZCBDeWNsZV9ob29rIDogc2lnXG4gIHR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuZW5kID1cbiAgQ3ljbGVfaG9va1xuXG5hbmQgQ3ljbGVfaG9va19oYW5kbGUgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcbmFuZCBUaW1lX3NvdXJjZV9pZCA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5hbmQgVGltZV9zb3VyY2UgOiBzaWdcbiAgdHlwZSAtJ3J3IHQxID1cbiAgICB7IGlkIDogVGltZV9zb3VyY2VfaWQudFxuICAgIDsgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIH1cbmVuZCA9XG4gIFRpbWVfc291cmNlXG5cbmFuZCBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIgOiBzaWdcbiAgbW9kdWxlIEV4ZWNfcmVzdWx0IDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IGV4ZWMgOiB1bml0IC0+IEV4ZWNfcmVzdWx0LnRcbiAgICB9XG5lbmQgPVxuICBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXJcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubGV0IGRlYnVnID0gRGVidWcubW9uaXRvclxuXG5tb2R1bGUgRm9yd2FyZGluZyA9IFR5cGVzLkZvcndhcmRpbmdcblxudHlwZSB0ID0gVHlwZXMuTW9uaXRvci50ID1cbiAgeyBuYW1lIDogSW5mby50XG4gIDsgaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgb3B0aW9uXG4gIDsgaWQgOiBpbnRcbiAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gVHlwZXMuSXZhci50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIHNjaGVkdWxlcyBhIGpvYiBmb3IgZWFjaCBlbGVtZW50IG9mIFtoYW5kbGVyc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA6IChUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gZXh0ZW5kcyBlYWNoIHRhaWwgaW4gW3RhaWxzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFR5cGVzLlRhaWwudCBsaXN0XG4gIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgOyBtdXRhYmxlIGZvcndhcmRpbmcgOiBGb3J3YXJkaW5nLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9XG4gIG1hdGNoIHQuaGVyZSB3aXRoXG4gIHwgTm9uZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCldXG4gIHwgU29tZSBoZXJlIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KSwgKGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBkZXNjcmlwdGlvbnMgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbGV0IGFjID0gZGVzY3JpcHRpb24gdCA6OiBhYyBpblxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTGlzdC5yZXYgYWNcbiAgICB8IFBhcmVudCB0IC0+IGxvb3AgdCBhY1xuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW11cbjs7XG5cbmxldCBzZXhwX29mX3QgdCA9IFslc2V4cCAoZGVzY3JpcHRpb25zIHQgOiBTZXhwLnQgbGlzdCldXG5cbmxldCBuZXh0X2lkID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgcGFyZW50ID1cbiAgbGV0IGlkID0gbmV4dF9pZCAoKSBpblxuICBsZXQgbmFtZSA9XG4gICAgbWF0Y2ggaW5mbywgbmFtZSB3aXRoXG4gICAgfCBTb21lIGksIE5vbmUgLT4gaVxuICAgIHwgU29tZSBpLCBTb21lIHMgLT4gSW5mby50YWcgaSB+dGFnOnNcbiAgICB8IE5vbmUsIFNvbWUgcyAtPiBJbmZvLm9mX3N0cmluZyBzXG4gICAgfCBOb25lLCBOb25lIC0+IEluZm8uY3JlYXRlIFwiaWRcIiBpZCBbJXNleHBfb2Y6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRdXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IG5hbWVcbiAgICA7IGhlcmVcbiAgICA7IGZvcndhcmRpbmcgPVxuICAgICAgICAobWF0Y2ggcGFyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBSZXBvcnRfdW5jYXVnaHRfZXhuXG4gICAgICAgICB8IFNvbWUgcGFyZW50IC0+IFBhcmVudCBwYXJlbnQpXG4gICAgOyBpZFxuICAgIDsgbmV4dF9lcnJvciA9IHsgY2VsbCA9IEVtcHR5IH1cbiAgICA7IGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzID0gQmFnLmNyZWF0ZSAoKVxuICAgIDsgdGFpbHNfZm9yX2FsbF9lcnJvcnMgPSBbXVxuICAgIDsgaGFzX3NlZW5fZXJyb3IgPSBmYWxzZVxuICAgIH1cbiAgaW5cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJjcmVhdGVkIG1vbml0b3JcIiB0IFslc2V4cF9vZjogdF07XG4gIHRcbjs7XG5cbmxldCBtYWluID0gY3JlYXRlX3dpdGhfcGFyZW50IH5uYW1lOlwibWFpblwiIE5vbmVcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuXG50eXBlIHQgPSBUeXBlcy5FeGVjdXRpb25fY29udGV4dC50ID1cbiAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gIDsgbG9jYWxfc3RvcmFnZSA6IFVuaXZfbWFwLnRcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgbWFpbiA9XG4gIHsgbW9uaXRvciA9IE1vbml0b3IubWFpblxuICA7IHByaW9yaXR5ID0gUHJpb3JpdHkubm9ybWFsXG4gIDsgbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmVtcHR5XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgPSBbXVxuICB9XG47O1xuXG5sZXQgY3JlYXRlX2xpa2UgP21vbml0b3IgP3ByaW9yaXR5ID9sb2NhbF9zdG9yYWdlIHQgPVxuICBtYXRjaCBtb25pdG9yLCBwcmlvcml0eSwgbG9jYWxfc3RvcmFnZSB3aXRoXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICgqIGF2b2lkIGFsbG9jYXRpbmcgaW4gdGhlIHRyaXZpYWwgY2FzZSwgd2hpY2ggZS5nLiBoYXBwZW5zIHdoZW4gY2FsbGluZ1xuICAgICAgIFtBc3luYy5zY2hlZHVsZV0gd2l0aG91dCBvcHRpb25hbCBhcmdzICopXG4gICAgdFxuICB8IF8gLT5cbiAgICBsZXQgbW9uaXRvciA9IE9wdGlvbi52YWx1ZSBtb25pdG9yIH5kZWZhdWx0OnQubW9uaXRvciBpblxuICAgIHsgbW9uaXRvclxuICAgIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICAgIDsgbG9jYWxfc3RvcmFnZSA9IE9wdGlvbi52YWx1ZSBsb2NhbF9zdG9yYWdlIH5kZWZhdWx0OnQubG9jYWxfc3RvcmFnZVxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgPSB0LmJhY2t0cmFjZV9oaXN0b3J5XG4gICAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldLiBBIHNwZWNpYWwgY2FzZSB3aGVuIHRoZSBqb2IgcXVldWUgaGFzIGNhcGFjaXR5IDAgaXMgcmVwcmVzZW50ZWRcbiAgICAgICB3aXRoIFttYXNrID0gLTFdLiBUaGlzIHZhbHVlIGlzIG5vdCB1c2VmdWwgYXMgYSBiaXQtbWFzaywgYnV0IHdlIG9ubHkgdXNlXG4gICAgICAgdGhlIGJpdC1tYXNrIHdoZW4gdGhlcmUncyBjYXBhY2l0eSBpbiB0aGUgYXJyYXksIHNvIHRoYXQgaXMgbm90IGEgcHJvYmxlbS5cbiAgICAqKVxuICAgIG11dGFibGUgbWFzayA6IGludFxuICA7ICgqIFtmcm9udF0gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBqb2IgaW4gdGhlIHF1ZXVlLiAgVGhlIGFycmF5IGluZGV4IG9mIHRoYXQgam9iJ3NcbiAgICAgICBleGVjdXRpb24gY29udGV4dCBpcyBbZnJvbnQgKiBzbG90c19wZXJfZWx0XS4gKilcbiAgICBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IG9mZnNldCB0IGkgPSAodC5mcm9udCArIGkpIGxhbmQgdC5tYXNrICogc2xvdHNfcGVyX2VsdFxubGV0IGNhcGFjaXR5IHQgPSB0Lm1hc2sgKyAxXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm51bV9qb2JzX3J1bjooY2hlY2sgKGZ1biBudW1fam9ic19ydW4gLT4gYXNzZXJ0IChudW1fam9ic19ydW4gPj0gMCkpKVxuICAgICAgfmpvYnNfbGVmdF90aGlzX2N5Y2xlOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzX2xlZnRfdGhpc19jeWNsZSAtPiBhc3NlcnQgKGpvYnNfbGVmdF90aGlzX2N5Y2xlID49IDApKSlcbiAgICAgIH5qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBqb2JzIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgIChPYmoub2JqIChBLmdldCBqb2JzIChvZmZzZXQgdCBpKSkgOiBFeGVjdXRpb25fY29udGV4dC50KVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXNrIC0+XG4gICAgICAgICAgIGxldCBjYXBhY2l0eSA9IG1hc2sgKyAxIGluXG4gICAgICAgICAgIGFzc2VydCAoY2FwYWNpdHkgPSAwIHx8IEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZTooZnVuIF8gLT4gKCkpXG4gICAgICB+ZnJvbnQ6XG4gICAgICAgIChjaGVjayAoZnVuIGZyb250IC0+XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoZnJvbnQgPCBtYXggMSAoY2FwYWNpdHkgdCkpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gICgqIFdlIHN0YXJ0IHdpdGggW2NhcGFjaXR5ICA9IDBdIHNvIHRoYXQgdGhlIGZpcnN0IGpvYiB0aGF0IGlzIGFkZGVkIGNhbGxzIFtncm93XSBhbmRcbiAgICAgZmlsbHMgaW4gdGhlIFtiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZV0uICopXG4gIGxldCBjYXBhY2l0eSA9IDAgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlID0gTm9uZVxuICB9XG47O1xuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdCA9IHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWVcblxubGV0IGNsZWFyIHQgPVxuICB0LmZyb250IDwtIDA7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gMFxuOztcblxubGV0IGdyb3cgdCA9XG4gIChtYXRjaCB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHdpdGhcbiAgIHwgU29tZSBfIC0+IGFzc2VydCAoY2FwYWNpdHkgdCA+IDApXG4gICB8IE5vbmUgLT4gdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSA8LSBTb21lIChCYWNrdHJhY2UuZ2V0ICgpKSk7XG4gIGxldCBvbGRfY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggMSAob2xkX2NhcGFjaXR5ICogMikgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKGZvciBhIHBlcmlvZGljIGV2ZW50KSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCAoKiBpbiB0aGUgdGltaW5nIHdoZWVsICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQgKCogbm90IGluIHRpbWluZyB3aGVlbCBvciBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICAgIGxldCB0cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXyA9XG4gICAgICAgIG1hdGNoIGZyb20sIHRvXyB3aXRoXG4gICAgICAgIHwgKCBGaXJlZFxuICAgICAgICAgICwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50ICgqIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAoZm9yIGEgcGVyaW9kaWMgZXZlbnQpICopXG4gICAgICAgICAgKVxuICAgICAgICB8ICggRmlyZWRcbiAgICAgICAgICAsIFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAoKiBhYm9ydGVkLCBvciBzdGFydGVkIHJ1bm5pbmcgY2FsbGJhY2sgKGZvciBhIG5vbi1wZXJpb2RpYyBldmVudCkgKikgKVxuICAgICAgICAoKiBbcmVzY2hlZHVsZV8qXSBnb2VzIHRocm91Z2ggYW4gaW50ZXJtZWRpYXRlIFtGaXJlZCwgVW5zY2hlZHVsZWRdIHN0YXRlLFxuICAgICAgICAgICBzbyB3ZSBuZXZlciB0cmFuc2l0aW9uIGZyb20gW0ZpcmVkXSBkaXJlY3RseSB0byBbU2NoZWR1bGVkXS4gKilcbiAgICAgICAgfCAoIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudFxuICAgICAgICAgICwgU2NoZWR1bGVkICgqIHNjaGVkdWxlZCBuZXh0IGl0ZXJhdGlvbiBvZiBhIHBlcmlvZGljIGV2ZW50ICopIClcbiAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIEZpcmVkICgqIG1vdmVkIGZyb20gdGltaW5nIHdoZWVsIHRvIFtmaXJlZF9ldmVudHNdICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBVbnNjaGVkdWxlZCAoKiBhYm9ydGVkICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIEZpcmVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgcGFzdCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBTY2hlZHVsZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBmdXR1cmUgKikgLT4gdHJ1ZVxuICAgICAgICB8IChGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFNjaGVkdWxlZCB8IFVuc2NoZWR1bGVkKSwgXyAtPiBmYWxzZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgZXZlbnQgPSBUeXBlcy5FdmVudC50XG5cbiAgICBsZXQgc2V4cF9vZl9ldmVudFxuICAgICAgICAgICh7IGFsYXJtID0gX1xuICAgICAgICAgICA7IGF0XG4gICAgICAgICAgIDsgY2FsbGJhY2sgPSBfXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBfXG4gICAgICAgICAgIDsgaW50ZXJ2YWxcbiAgICAgICAgICAgOyBuZXh0X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHByZXZfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgc3RhdHVzXG4gICAgICAgICAgIH0gOlxuICAgICAgICAgICAgIGV2ZW50KVxuICAgICAgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgOyBhdCA6IFRpbWVfbnMudFxuICAgICAgICA7IGludGVydmFsIDogKFRpbWVfbnMuU3Bhbi50IG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICB9XVxuICAgIDs7XG5cbiAgICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgICAoKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0XG4gICAgICAgICB0byBbT2JqLm1hZ2ljXXMuICopXG4gICAgICBtb2R1bGUgRXZlbnRfaXNfYmxvY2sgOiBzaWcgZW5kID0gc3RydWN0XG4gICAgICAgIG9wZW4gVHlwZXNcbiAgICAgICAgb3BlbiBFdmVudFxuXG4gICAgICAgIHR5cGUgX3QgPSB0ID1cbiAgICAgICAgICB7ICgqIG11c3QgbmV2ZXIgYmUgaW1tZWRpYXRlICopXG4gICAgICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICAgICAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgICAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5PcHRpb24udFxuXG4gICAgICAoKiBVc2luZyBhbiBpbW1lZGlhdGUgcmF0aGVyIHRoYW4gYSBzdGF0aWNhbGx5LWFsbG9jYXRlZCByZWNvcmQgaGVyZSBzZWVtcyB0b1xuICAgICAgICAgaW1wcm92ZSBwZXJmb3JtYW5jZSBub3RpY2VhYmx5IChbLi4vYmVuY2gvYmluL2JlbmNoX3RpbWVfc291cmNlLmV4ZV0gYmVuY2htYXJrXG4gICAgICAgICBpcyBmYXN0ZXIgYnkgfjEwbnMgcGVyIGFsYXJtKSwgcHJlc3VtYWJseSBiZWNhdXNlIGl0IGF2b2lkcyB0aGUgZXhwZW5zaXZlXG4gICAgICAgICBwYXJ0cyBvZiBjYW1sX21vZGlmeS4gKilcbiAgICAgIGxldCBub25lID0gKE9iai5tYWdpYyBOb25lIDogdCkgKCogYW4gYXJiaXRyYXJ5IGltbWVkaWF0ZSAqKVxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gKE9iai5tYWdpYyA6IHQgLT4gVHlwZXMuRXZlbnQudClcblxuICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICAgICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV92YWx1ZVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuc2FmZV92YWx1ZSB0KVxuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50Lk9wdGlvbi52YWx1ZV9leG4gTm9uZV1cIl1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IGV2ZW50XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFNvbWUgZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gc29tZSBldmVudFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LnQgPVxuICAgICAgeyAoKiBbYWxhcm1dIGlzIG5vbi1udWxsIGlmZiB0aGUgZXZlbnQgaXMgaW4gdGhlIHRpbWluZyB3aGVlbC4gKilcbiAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgIDsgKCogW2ludGVydmFsXSBpcyB0aGUgcGVyaW9kIGZvciB0aGUgcGVyaW9kaWMgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICA7ICgqIFtuZXh0X2ZpcmVkXSBhbmQgW3ByZXZfZmlyZWRdIGNyZWF0ZSBhIGRvdWJseS1saW5rZWQgKG5vbi1jaXJjdWxhcikgbGlzdCBvZlxuICAgICAgICAgICBmaXJlZCBldmVudHMsIGxpbmtlZCB2aWEgdGhlc2UgZmllbGRzLiBBbiBldmVudCBpcyBhZGRlZCB0byB0aGUgbGlzdCB3aGVuXG4gICAgICAgICAgIGl0IGZpcmVzLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhZGRlZCB3aXRoIGEgdGltZSBpbiB0aGUgcGFzdCwgb3JcbiAgICAgICAgICAgYmVjYXVzZSB0aW1lIGFkdmFuY2VzLiBbYWR2YW5jZV9ieV9hbGFybXNdIGl0ZXJhdGVzIG92ZXIgdGhlIGV2ZW50c1xuICAgICAgICAgICBpbiBbbmV4dF9maXJlZF0gYW5kIHJ1bnMgdGhlbSwgZW1wdHlpbmcgdGhlIGxpc3QuIFtub25lXSBpcyB1c2VkIHRvXG4gICAgICAgICAgIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cy4gKilcbiAgICAgICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBzZXhwX29mX3QgPSBbJXNleHBfb2Y6IGV2ZW50XVxuXG4gICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgICB+YWxhcm06XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAgICAgKEFsYXJtLmlzX251bGwgYWxhcm0pXG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGaXJlZCB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCB8IFVuc2NoZWR1bGVkIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfCBTY2hlZHVsZWQgLT4gZmFsc2UpKSlcbiAgICAgICAgICB+YXQ6aWdub3JlXG4gICAgICAgICAgfmNhbGxiYWNrOmlnbm9yZVxuICAgICAgICAgIH5leGVjdXRpb25fY29udGV4dDppZ25vcmVcbiAgICAgICAgICB+aW50ZXJ2YWw6aWdub3JlXG4gICAgICAgICAgfm5leHRfZmlyZWQ6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobmV4dF9maXJlZCA6IE9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgKCogW25leHRfZmlyZWRdIGNhbiBiZSBbTm9uZV0gZXZlbiBpZiB0aGUgZXZlbnQgc3RhdHVzIGlzIEZpcmVkLCBhc3N1bWluZ1xuICAgICAgICAgICAgICAgICAgICBpdCdzIGF0IHRoZSBlbmQgb2YgdGhlIGZpcmVkIGV2ZW50cyBsaXN0ICopXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dF9maXJlZCAtPlxuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBTdGF0dXMudF0gdC5zdGF0dXMgfmV4cGVjdDpGaXJlZDtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChPcHRpb24uc29tZSB0KSBuZXh0X2ZpcmVkLnByZXZfZmlyZWQpKSlcbiAgICAgICAgICB+cHJldl9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChwcmV2X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbcHJldl9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIHByZXZfZmlyZWQubmV4dF9maXJlZCkpKVxuICAgICAgICAgIH5zdGF0dXM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biAoc3RhdHVzIDogU3RhdHVzLnQpIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT4gYXNzZXJ0IChDb3JlLk9wdGlvbi5pc19zb21lIHQuaW50ZXJ2YWwpXG4gICAgICAgICAgICAgICB8IEZpcmVkIHwgVW5zY2hlZHVsZWQgfCBTY2hlZHVsZWQgLT4gKCkpKSlcbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXMgdCB0b18gPVxuICAgICAgbGV0IGZyb20gPSB0LnN0YXR1cyBpblxuICAgICAgaWYgbm90IChTdGF0dXMudHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18pXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFslaGVyZV1cbiAgICAgICAgICAgICAgXCJidWcgLS0gc2V0X3N0YXR1cyB0cmFuc2l0aW9uIG5vdCBhbGxvd2VkXCJcbiAgICAgICAgICAgICAgKGZyb20gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgKHRvXyA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICB+ZXZlbnQ6KHQgOiB0KV07XG4gICAgICB0LnN0YXR1cyA8LSB0b19cbiAgICA7O1xuXG4gICAgbGV0IHNldF9zdGF0dXNfaWYgfmlzIHQgdG9fID0gaWYgU3RhdHVzLmVxdWFsIGlzIHQuc3RhdHVzIHRoZW4gc2V0X3N0YXR1cyB0IHRvX1xuICAgIGxldCBzY2hlZHVsZWRfYXQgPSBhdFxuICBlbmRcblxuICBtb2R1bGUgSm9iX29yX2V2ZW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBKb2Jfb3JfZXZlbnRcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgIGxldCAoSyBrKSA9IGtpbmQgdCBpblxuICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIHQgd2l0aFxuICAgICAgfCBFdmVudCwgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IEV2ZW50LnQpXVxuICAgICAgfCBKb2IsIF8gLT5cbiAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgIFslbWVzc2FnZSBcIjxKb2IudD5cIl1cbiAgICA7O1xuICBlbmRcblxuICB0eXBlIC0ncncgdCA9ICdydyBUeXBlcy5UaW1lX3NvdXJjZS50MSA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7ICgqIFthZHZhbmNlX2Vycm9yc10gYWNjdW11bGF0ZXMgZXJyb3JzIHJhaXNlZCBieSBhbGFybXMgcnVuIGJ5XG4gICAgICAgICBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhZHZhbmNlX2Vycm9ycyA6IEVycm9yLnQgbGlzdFxuICAgIDsgKCogW2FtX2FkdmFuY2luZ10gaXMgdHJ1ZSBvbmx5IGR1cmluZyBbYWR2YW5jZV9ieV9hbGFybXNdLCBhbmQgaXMgdXNlZCB0byBjYXVzZVxuICAgICAgICAgY2FsbGJhY2tzIHRvIHJhaXNlIGlmIHRoZXkgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdLiAqKVxuICAgICAgbXV0YWJsZSBhbV9hZHZhbmNpbmcgOiBib29sXG4gICAgOyBldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgKCogW2ZpcmVkX2V2ZW50c10gaXMgdGhlIGZyb250IG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLFxuICAgICAgICAgd2hpY2ggaXMgc3RvcmVkIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW0V2ZW50LmF0XS4gKilcbiAgICAgIG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFttb3N0X3JlY2VudGx5X2ZpcmVkXSBpcyB0aGUgZXZlbnQgdGhhdCB3YXMgbW9zdCByZWNlbnRseSBpbnNlcnRlZCBpbnRvXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gSXQgaXMgdXNlZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYWxsb3cgaW5zZXJ0aW9uIG9mXG4gICAgICAgICBzdWJzZXF1ZW50IGV2ZW50cyB0byBzdGFydCBsYXRlciBpbiB0aGUgbGlzdCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICAgICAgICAgSXQgc3BlY2lmaWNhbGx5IGF2b2lkcyBxdWFkcmF0aWMgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgbXVsdGlwbGUgZXZlbnRzXG4gICAgICAgICB0aGF0IGhhdmUgZXhhY3RseSB0aGUgc2FtZSB0aW1lIC0tIHRoZSB0aW1lIHNvdXJjZSBmaXJlcyBzdWNoIGV2ZW50cyBpblxuICAgICAgICAgdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZCwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBpbiB0aGF0IHNhbWUgb3JkZXIgaW5cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiAqKVxuICAgICAgbXV0YWJsZSBtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7ICgqIFdlIHN0b3JlIFtoYW5kbGVfZmlyZWRdIGluIFt0XSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IGV2ZXJ5IHRpbWUgd2UgY2FsbFxuICAgICAgICAgW2FkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgKCogV2UgZG9uJ3QgaW5jbHVkZSB0aGUgW2lkXSBpbiB0aGUgc2V4cCBiZWNhdXNlIHRoZSB1c2VyIChyaWdodGx5KSBjYW4ndCBjb250cm9sIGl0LCBzb1xuICAgICBpdCdzIGhhcmQgdG8gbWFrZSBpdCBkZXRlcm1pbmlzdGljIGluIHRlc3RzLiAqKVxuICBsZXQgc2V4cF9vZl90XG4gICAgICAgIF9cbiAgICAgICAgeyBpZCA9IF9cbiAgICAgICAgOyBhZHZhbmNlX2Vycm9ycyA9IF9cbiAgICAgICAgOyBhbV9hZHZhbmNpbmcgPSBfXG4gICAgICAgIDsgZXZlbnRzXG4gICAgICAgIDsgZmlyZWRfZXZlbnRzID0gX1xuICAgICAgICA7IGhhbmRsZV9maXJlZCA9IF9cbiAgICAgICAgOyBpc193YWxsX2Nsb2NrXG4gICAgICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IF9cbiAgICAgICAgOyBzY2hlZHVsZXIgPSBfXG4gICAgICAgIH1cbiAgICA9XG4gICAgbGV0IG5vdyA9IFRpbWluZ193aGVlbC5ub3cgZXZlbnRzIGluXG4gICAgaWYgaXNfd2FsbF9jbG9ja1xuICAgIHRoZW4gWyVtZXNzYWdlIFwid2FsbF9jbG9ja1wiIChub3cgOiBUaW1lX25zLnQpXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFsbF9ldmVudHMgPSByZWYgW10gaW5cbiAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgIGFsbF9ldmVudHMgOj0gKEFsYXJtLmF0IGV2ZW50cyBhbGFybSwgQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSA6OiAhYWxsX2V2ZW50cyk7XG4gICAgICBsZXQgZXZlbnRzID1cbiAgICAgICAgTGlzdC5zb3J0ICFhbGxfZXZlbnRzIH5jb21wYXJlOihmdW4gKGF0MSwgXykgKGF0MiwgXykgLT4gVGltZV9ucy5jb21wYXJlIGF0MSBhdDIpXG4gICAgICAgIHw+IExpc3QubWFwIH5mOnNuZFxuICAgICAgaW5cbiAgICAgIFslbWVzc2FnZSBcIlwiIChub3cgOiBUaW1lX25zLnQpIChldmVudHMgOiBKb2Jfb3JfZXZlbnQudCBsaXN0KV0pXG4gIDs7XG5cbiAgbGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcblxuICBsZXQgaXNfaW5fZmlyZWRfZXZlbnRzID1cbiAgICBsZXQgcmVjIHNlYXJjaCBjdXJyZW50IH50YXJnZXRfZXZlbnQgPVxuICAgICAgbWF0Y2glb3B0aW9uYWwgKGN1cnJlbnQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgY3VycmVudCAtPlxuICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnQgdGFyZ2V0X2V2ZW50IHx8IHNlYXJjaCBjdXJyZW50Lm5leHRfZmlyZWQgfnRhcmdldF9ldmVudFxuICAgIGluXG4gICAgZnVuIHQgdGFyZ2V0X2V2ZW50IC0+IHNlYXJjaCB0LmZpcmVkX2V2ZW50cyB+dGFyZ2V0X2V2ZW50XG4gIDs7XG5cbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgKHR5cGUgcncpIH5qb2I6KGpvYl9pbnZhcmlhbnQgOiBKb2IudCAtPiB1bml0KSAodCA6IHJ3IHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+aWQ6aWdub3JlXG4gICAgICAgIH5hZHZhbmNlX2Vycm9yczppZ25vcmVcbiAgICAgICAgfmFtX2FkdmFuY2luZzppZ25vcmVcbiAgICAgICAgfmV2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBldmVudHMgLT5cbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaW52YXJpYW50IGlnbm9yZSBldmVudHM7XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICAgIGxldCBqb2Jfb3JfZXZlbnQgPSBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0gaW5cbiAgICAgICAgICAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgICAgICAgICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgICAgICAgICAgICAgfCBKb2IsIGpvYiAtPiBqb2JfaW52YXJpYW50IGpvYlxuICAgICAgICAgICAgICAgfCBFdmVudCwgZXZlbnQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGFsYXJtIGV2ZW50LmFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XSBldmVudC5hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBFdmVudC5TdGF0dXMudF0gZXZlbnQuc3RhdHVzIH5leHBlY3Q6U2NoZWR1bGVkO1xuICAgICAgICAgICAgICAgICBFdmVudC5pbnZhcmlhbnQgZXZlbnQpKSlcbiAgICAgICAgfmZpcmVkX2V2ZW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIC0+XG4gICAgICAgICAgICAgbGV0IHJlYyBjaGVja19ldmVudCAoY3VycmVudCA6IEV2ZW50LnQpID1cbiAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KSk7XG4gICAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gY3VycmVudC5uZXh0X2ZpcmVkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgfCBTb21lIG5leHQgLT5cbiAgICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0IG5leHQuYXQpO1xuICAgICAgICAgICAgICAgICBjaGVja19ldmVudCBuZXh0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbC5FdmVudC5PcHRpb24gZmlyZWRfZXZlbnRzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gY2hlY2tfZXZlbnQgZXZlbnQpKVxuICAgICAgICB+aGFuZGxlX2ZpcmVkOmlnbm9yZVxuICAgICAgICB+aXNfd2FsbF9jbG9jazppZ25vcmVcbiAgICAgICAgfm1vc3RfcmVjZW50bHlfZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChtb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgZXZlbnQgLT4gYXNzZXJ0IChpc19pbl9maXJlZF9ldmVudHMgdCBldmVudCkpKVxuICAgICAgICB+c2NoZWR1bGVyOmlnbm9yZSlcbiAgOztcblxuICBsZXQgaW52YXJpYW50IHQgPSBpbnZhcmlhbnRfd2l0aF9qb2JzIH5qb2I6KGZ1biBfIC0+ICgpKSB0XG5lbmRcblxub3BlbiBUMVxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHJlYWRfd3JpdGUgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbiAgbGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5lbmRcblxubGV0IGlkIHQgPSB0LmlkXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbGVuZ3RoIHQgPSBUaW1pbmdfd2hlZWwubGVuZ3RoIHQuZXZlbnRzXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID0gVGltaW5nX3doZWVsLm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdC5ldmVudHNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxuXG4oKiBbZmlyZSB0IGV2ZW50XSBzZXRzIFtldmVudC5zdGF0dXMgPSBGaXJlZF0gYW5kIGluc2VydHMgW2V2ZW50XSBpbnRvXG4gICBbdC5maXJlZF9ldmVudHNdIGluIHNvcnRlZCB0aW1lIG9yZGVyLiAqKVxubGV0IGZpcmUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgRmlyZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gIGxldCAoKSA9XG4gICAgKCogSWYgW2V2ZW50XSBiZWxvbmdzIGFmdGVyIFt0Lm1vc3RfcmVjZW50bHlfZmlyZWRdLCB0aGVuIHdlIHN0YXJ0IHRoZVxuICAgICAgIGluc2VydGlvbiB0aGVyZSByYXRoZXIgdGhhbiBhdCB0aGUgZnJvbnQgb2YgW3QuZmlyZWRfZXZlbnRzXS4gVGhpcyB3b3Jrc1xuICAgICAgIG5pY2VseSBpZiB3ZSdyZSBnZXR0aW5nIHRoZSBhbGFybXMgaW4gbm9uLWRlY3JlYXNpbmcgdGltZSBvcmRlciwgd2hpY2ggaXNcbiAgICAgICBjbG9zZSB0byB3aGF0IFtUaW1pbmdfd2hlZWxdIHByb3ZpZGVzIChhbHRob3VnaCBbVGltaW5nX3doZWVsXSBkb2Vzbid0XG4gICAgICAgZ3VhcmFudGVlIHRpbWUgb3JkZXJpbmcgZm9yIHRpbWVzIGluIHRoZSBzYW1lIGludGVydmFsKS4gKilcbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCB3aGVuIFRpbWVfbnMuKCA8PSApIG1vc3RfcmVjZW50bHlfZmlyZWQuYXQgZXZlbnQuYXQgLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgbW9zdF9yZWNlbnRseV9maXJlZDtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbW9zdF9yZWNlbnRseV9maXJlZC5uZXh0X2ZpcmVkXG4gICAgfCBfIC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSB0LmZpcmVkX2V2ZW50c1xuICBpblxuICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnQ7XG4gICgqIFdlIHVzZSBbVGltZV9ucy4oIDw9ICldIHJhdGhlciB0aGFuIFs8XSBzbyB0aGF0IFtldmVudF0gaXMgYWRkZWQgYWZ0ZXIgb3RoZXJcbiAgICAgZXZlbnRzIGF0IHRoZSBzYW1lIHRpbWUuIFNpbmNlIFtUaW1pbmdfd2hlZWxdIGZpcmVzIGFsYXJtcyBpbiBhIGJ1Y2tldCBpblxuICAgICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLCB1c2luZyBbPD1dIGtlZXBzIGV2ZW50cyBhdCB0aGUgc2FtZVxuICAgICB0aW1lIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuICopXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICBsZXQgY29udGludWUgPSBUaW1lX25zLiggPD0gKSBuZXh0LmF0IGV2ZW50LmF0IGluXG4gICAgICBpZiBjb250aW51ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZDtcbiAgICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBuZXh0Lm5leHRfZmlyZWQpO1xuICAgICAgY29udGludWVcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgaW5cbiAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbiAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG47O1xuXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcblxubGV0IG5leHRfYWxhcm1fcnVuc19hdCB0ID1cbiAgaWYgRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiAgdGhlbiBTb21lICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gIGVsc2UgVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbjs7XG5cbmxldCBub3cgdCA9IGlmIHQuaXNfd2FsbF9jbG9jayB0aGVuIFRpbWVfbnMubm93ICgpIGVsc2UgdGltaW5nX3doZWVsX25vdyB0XG5sZXQgdGltaW5nX3doZWVsX25vdyA9IHRpbWluZ193aGVlbF9ub3dcblxubGV0IHNjaGVkdWxlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFNjaGVkdWxlZDtcbiAgZXZlbnQuYWxhcm0gPC0gVGltaW5nX3doZWVsLmFkZCB0LmV2ZW50cyB+YXQ6ZXZlbnQuYXQgKGV2ZW50IHw+IEpvYl9vcl9ldmVudC5vZl9ldmVudClcbjs7XG5cbmxldCByZW1vdmVfZnJvbV9maXJlZCB0IChldmVudCA6IEV2ZW50LnQpIH5uZXdfc3RhdHVzID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAodC5tb3N0X3JlY2VudGx5X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbW9zdF9yZWNlbnRseV9maXJlZCAtPlxuICAgICAgaWYgcGh5c19lcXVhbCBldmVudCBtb3N0X3JlY2VudGx5X2ZpcmVkXG4gICAgICB0aGVuXG4gICAgICAgIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uZmlyc3Rfc29tZSBldmVudC5uZXh0X2ZpcmVkIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gZXZlbnQubmV4dF9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmV4dCAtPiBuZXh0LnByZXZfZmlyZWQgPC0gZXZlbnQucHJldl9maXJlZFxuICBpblxuICBldmVudC5uZXh0X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5ub25lO1xuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IG5ld19zdGF0dXNcbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIEV2ZW50XG5cbiAgbGV0IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICB7IGFsYXJtID0gQWxhcm0ubnVsbCAoKVxuICAgIDsgYXRcbiAgICA7IGNhbGxiYWNrXG4gICAgOyBleGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbiAgICA7IGludGVydmFsXG4gICAgOyBuZXh0X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHByZXZfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc3RhdHVzID0gVW5zY2hlZHVsZWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGFkZCB0IGV2ZW50ID1cbiAgICBpZiBUaW1lX25zLiggPD0gKSBldmVudC5hdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgIHRoZW4gZmlyZSB0IGV2ZW50XG4gICAgZWxzZSBzY2hlZHVsZSB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIGxldCBldmVudCA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrIGluXG4gICAgYWRkIHQgZXZlbnQ7XG4gICAgZXZlbnRcbiAgOztcblxuICBsZXQgYXQgdCBhdCBjYWxsYmFjayA9IGNyZWF0ZV9hbmRfYWRkIHQgfmF0IH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBhZnRlciB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0OihUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbikgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbGV0IHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuID1cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gYWxhcm1fcHJlY2lzaW9uIHQgaW5cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgc3BhbiBhbGFybV9wcmVjaXNpb25cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW50ZXJ2YWwgc3BhbiBzbWFsbGVyIHRoYW4gYWxhcm0gcHJlY2lzaW9uXCJcbiAgICAgICAgICAgIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXG4gICAgICAgICAgICAoYWxhcm1fcHJlY2lzaW9uIDogVGltZV9ucy5TcGFuLnQpXVxuICA7O1xuXG4gIGxldCBhdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgICByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbjtcbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDoobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKSB+Y2FsbGJhY2tcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSAoXyA6IFRpbWVfbnMuU3Bhbi50KSAtPlxuICAgICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgICAgIGV2ZW50LnN0YXR1cyA8LSBVbnNjaGVkdWxlZDtcbiAgICAgICAgIE9rKVxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBPa1xuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IFVuc2NoZWR1bGVkO1xuICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgIGV2ZW50LmFsYXJtIDwtIEFsYXJtLm51bGwgKCk7XG4gICAgICBPa1xuICAgIHwgVW5zY2hlZHVsZWQgLT4gUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICA7O1xuXG4gIGxldCBhYm9ydF9pZl9wb3NzaWJsZSB0IGV2ZW50ID0gaWdub3JlIChhYm9ydCB0IGV2ZW50IDogQWJvcnRfcmVzdWx0LnQpXG5cbiAgbGV0IGFib3J0X2V4biB0IGV2ZW50ID1cbiAgICBtYXRjaCBhYm9ydCB0IGV2ZW50IHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCByZWFzb24gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuYWJvcnRfZXhuXSBjYW5ub3QgYWJvcnQgZXZlbnRcIlxuICAgICAgICAgICAgKHJlYXNvbiA6IEFib3J0X3Jlc3VsdC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHQgY2FsbGJhY2sgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQ6VGltZV9ucy5lcG9jaCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgaXNfc2NoZWR1bGVkIChldmVudCA6IHQpID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQgLT4gdHJ1ZVxuICAgIHwgVW5zY2hlZHVsZWQgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCAoZXZlbnQgOiB0KSBhdCB+aW50ZXJ2YWwgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCAoSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgRmlyZWQpIGFzIHN0YXR1cyAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJXNleHAgXCJjYW5ub3Qgc2NoZWR1bGUgYW4gZXZlbnQgd2l0aCBzdGF0dXNcIiwgKHN0YXR1cyA6IEV2ZW50LlN0YXR1cy50KV1cbiAgICB8IFVuc2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGV2ZW50LmludGVydmFsIDwtIGludGVydmFsO1xuICAgICAgYWRkIHQgZXZlbnQ7XG4gICAgICBPayAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdCB0IGV2ZW50IGF0ID0gc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCBhdCB+aW50ZXJ2YWw6Tm9uZVxuICBsZXQgc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gc2NoZWR1bGVfYXQgdCBldmVudCAoVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVydmFscyB0IGV2ZW50IHNwYW4gPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIHNjaGVkdWxlX2F0X2ludGVybmFsIHQgZXZlbnQgKG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbilcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGV2ZW50IGF0IDogdW5pdCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IC0+XG4gICAgICAoKiBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgZnJvbSBbZmlyZWRdLiAqKVxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBhZGQgdCBldmVudFxuICAgIHwgU2NoZWR1bGVkIC0+XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGlmIFRpbWVfbnMuKCA+ICkgYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgIHRoZW4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgdC5ldmVudHMgZXZlbnQuYWxhcm0gfmF0XG4gICAgICBlbHNlIChcbiAgICAgICAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBldmVudC5hbGFybTtcbiAgICAgICAgZmlyZSB0IGV2ZW50KVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gTm9uZTtcbiAgICAgIGFkZCB0IGV2ZW50XG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBldmVudCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuZW5kXG5cbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hZnRlciB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxubGV0IHJ1bl9hdCB0IGF0IGNhbGxiYWNrID0gaWdub3JlIChFdmVudC5hdCB0IGF0IGNhbGxiYWNrIDogRXZlbnQudClcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrID1cbiAgaWdub3JlIChFdmVudC5hdF9pbnRlcnZhbHMgdCBzcGFuIGNhbGxiYWNrIDogRXZlbnQudClcbjs7XG5cbnR5cGUgc2VuZF9leG4gPSBNb25pdG9yMC50IC0+ID9iYWNrdHJhY2U6WyBgR2V0IHwgYFRoaXMgb2YgQmFja3RyYWNlLnQgXSAtPiBleG4gLT4gdW5pdFxuXG5sZXQgcnVuX2ZpcmVkX2V2ZW50cyB0IH4oc2VuZF9leG4gOiBzZW5kX2V4biBvcHRpb24pID1cbiAgbGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IGluXG4gIHdoaWxlXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgZXZlbnQgLT5cbiAgICAgIChtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBGaXJlZCAtPlxuICAgICAgICAgbGV0IG5ld19zdGF0dXMgPVxuICAgICAgICAgICBtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiAoVW5zY2hlZHVsZWQgOiBFdmVudC5TdGF0dXMudClcbiAgICAgICAgICAgfCBTb21lIF8gLT4gKEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCA6IEV2ZW50LlN0YXR1cy50KVxuICAgICAgICAgaW5cbiAgICAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM7XG4gICAgICAgICAoKiBXZSBzZXQgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHNvIHRoYXQgW2V2ZW50LmNhbGxiYWNrXSBydW5zIGluIHRoZSBzYW1lIGNvbnRleHRcbiAgICAgICAgICAgIHRoYXQgd2FzIGluIHBsYWNlIHdoZW4gW2V2ZW50XSB3YXMgY3JlYXRlZC4gKilcbiAgICAgICAgIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgICAgKCogQW55IG1vZGlmaWNhdGlvbiBvZiBbc3RhdHVzXSBiZWxvdyBuZWVkcyB0byBmaXJzdCBjaGVjayB0aGF0IHRoZSBldmVudCBpc1xuICAgICAgICAgICAgc3RpbGwgW0hhcHBlbmluZ19wZXJpb2RpY19ldmVudF0uIElmIHRoZSBldmVudCBzdGF0dXMgaXMgbm90XG4gICAgICAgICAgICBbSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XSB0aGVuIHRoZSBldmVudCdzIGNhbGxiYWNrIG11c3QgaGF2ZSByZXNjaGVkdWxlZCB0aGVcbiAgICAgICAgICAgIGV2ZW50LiBJbiB0aGF0IGNhc2UsIGRvIG5vdCBzZXQgdGhlIHN0YXR1cyBvciBhdHRlbXB0IHRvIHJlc2NoZWR1bGUgYVxuICAgICAgICAgICAgcmVwZWF0aW5nIGV2ZW50LlxuXG4gICAgICAgICAgICBUaGlzIGNvZGUgY291bGQgYmUgbXVjaCBzaW1wbGVyIGlmIHdlIGltbWVkaWF0ZWx5IHJlc2NoZWR1bGVkIHRoZSBldmVudCBiZWZvcmVcbiAgICAgICAgICAgIHJ1bm5pbmcgdGhlIGNhbGxiYWNrIChubyBuZWVkIGZvciB0aGUgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHN0YXRlIHRoZW4pLlxuICAgICAgICAgICAgT25lIHJlYXNvbiB3ZSBkb24ndCBkbyB0aGF0IGlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IHJlc2NoZWR1bGVcbiAgICAgICAgICAgIGEgcGVyaW9kaWMgZXZlbnQgaWYgaXRzIGNhbGxiYWNrIHJhaXNlcy4gKilcbiAgICAgICAgIChtYXRjaCBldmVudC5jYWxsYmFjayAoKSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2VuZF9leG4gd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIEVycm9yLm9mX2V4biBleG4gOjogdC5hZHZhbmNlX2Vycm9yc1xuICAgICAgICAgICAgIHwgU29tZSBzZW5kX2V4biAtPlxuICAgICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgICAgIHNlbmRfZXhuIGV2ZW50LmV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSkpO1xuICAgICAgICAgICAgRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgfCAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRXZlbnQuc2V0X3N0YXR1c19pZiB+aXM6SGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50IFVuc2NoZWR1bGVkXG4gICAgICAgICAgICAgfCBTb21lIGludGVydmFsIC0+XG4gICAgICAgICAgICAgICBpZiBFdmVudC5TdGF0dXMuZXF1YWwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IGV2ZW50LnN0YXR1c1xuICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICgqIFRoZSBldmVudCdzIGNhbGxiYWNrIGRpZCBub3QgcmVzY2hlZHVsZSB0aGUgZXZlbnQuIFNvIHJlc2NoZWR1bGUgdGhlXG4gICAgICAgICAgICAgICAgICAgIHJlcGVhdGluZyB0aW1lciBiYXNlZCBvbiB0aGUgbGFzdCBbYXRdIHRpbWUuICopXG4gICAgICAgICAgICAgICAgIGV2ZW50LmF0XG4gICAgICAgICAgICAgICAgIDwtIFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgICAgICAgfmJhc2U6ZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgICAgICB+YWZ0ZXI6KHRpbWluZ193aGVlbF9ub3cgdClcbiAgICAgICAgICAgICAgICAgICAgICB+aW50ZXJ2YWw7XG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlIHQgZXZlbnQpKSk7XG4gICAgICAgICB0cnVlKVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIFNjaGVkdWxlcjAuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRcbjs7XG5cbmxldCBhbnlfZmlyZWRfZXZlbnRzX3RvX3J1biB0ID0gRXZlbnQuT3B0aW9uLmlzX3NvbWUgKHQuZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnQpXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayB0LmV2ZW50cyB+dG9fIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmZpcmVfcGFzdF9hbGFybXMgdC5ldmVudHMgfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4biA9XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxuOztcblxubGV0IHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4biA9XG4gIGlmIHQuYW1fYWR2YW5jaW5nXG4gIHRoZW5cbiAgICByYWlzZV9zIFslc2V4cCBcImNhbm5vdCBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10gb3IgW2FkdmFuY2VfZGlyZWN0bHldIGZyb20gY2FsbGJhY2tcIl07XG4gIHQuYW1fYWR2YW5jaW5nIDwtIHRydWU7XG4gIChtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgIHwgW10gLT4gKClcbiAgIHwgXyAtPiB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdKTtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpbmlzaF9hZHZhbmNpbmcgdCA9XG4gIHQuYW1fYWR2YW5jaW5nIDwtIGZhbHNlO1xuICBtYXRjaCB0LmFkdmFuY2VfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiBPayAoKVxuICB8IGVycm9ycyAtPlxuICAgIHQuYWR2YW5jZV9lcnJvcnMgPC0gW107XG4gICAgRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJyb3JzKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSBUaW1pbmdfd2hlZWwubWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbWluX2FsYXJtX3RpbWUgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXzptaW5fYWxhcm1fdGltZSB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgdCBieSA9IGFkdmFuY2VfYnlfYWxhcm1zIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuXG5sZXQgYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfdGltaW5nX3doZWVsX2ludGVydmFsIHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhY29udGludWUgZG9cbiAgICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgdC5ldmVudHNcbiAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dF9hbGFybV9maXJlc19hdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB0LmV2ZW50cyBpblxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWxcbiAgICAgICAgICB0XG4gICAgICAgICAgfnRvXzooVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMpXG4gICAgICAgICAgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgYXJyYXlcbiAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDpcbiAgICAgIChUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50LCAoVHlwZXMuQ3ljbGVfaG9vay50W0BzZXhwLm9wYXF1ZV0pKSBIYXNodGJsLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX251bV9qb2JzIDogaW50XG4gIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50XG4gICgqIFtleHRlcm5hbF9qb2JzXSBpcyBhIHF1ZXVlIG9mIGFjdGlvbnMgc2VudCBmcm9tIG91dHNpZGUgb2YgYXN5bmMuICBUaGlzIGlzIGZvciB0aGVcbiAgICAgY2FzZSB3aGVyZSB3ZSB3YW50IHRvIHNjaGVkdWxlIGEgam9iIG9yIGZpbGwgYW4gaXZhciBmcm9tIGEgY29udGV4dCB3aGVyZSBpdCBpcyBub3RcbiAgICAgc2FmZSB0byBydW4gYXN5bmMgY29kZSwgYmVjYXVzZSB0aGUgYXN5bmMgbG9jayBpc24ndCBoZWxkLiAgRm9yIGluc3RhbmNlOiAtIGluIGFuXG4gICAgIE9DYW1sIGZpbmFsaXplciwgYXMgdGhleSBjYW4gcnVuIGF0IGFueSB0aW1lIGluIGFueSB0aHJlYWQuXG5cbiAgICAgVGhlIHdheSB0byBkbyBpdCBpcyB0byBxdWV1ZSBhIHRodW5rIGluIFtleHRlcm5hbF9qb2JzXSBhbmQgY2FsbFxuICAgICBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdLCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIHRoZSBzY2hlZHVsZXJcbiAgICAgdGhhdCBuZXcgYWN0aW9ucyBhcmUgYXZhaWxhYmxlLlxuXG4gICAgIFdoZW4gdXNpbmcgQXN5bmMgb24gdW5peCwgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBpcyBzZXQgaW4gW0FzeW5jX3VuaXhdXG4gICAgIHRvIGNhbGwgW0ludGVycnVwdG9yLnRocmVhZF9zYWZlX2ludGVycnVwdF0sIHdoaWNoIHdpbGwgd2FrZSB1cCB0aGVcbiAgICAgW0FzeW5jX3VuaXhdIHNjaGVkdWxlciBhbmQgcnVuIGEgY3ljbGUuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaG9vayBtaWdodCBiZSB1c2VkIGluIG90aGVyIGNvbnRleHQgKGpzX29mX29jYW1sLCBtaXJhZ2UpLlxuXG4gICAgIFdoZW4gcnVubmluZyBhIGN5Y2xlLCB3ZSBwdWxsIGV4dGVybmFsIGFjdGlvbnMgYXQgZXZlcnkgam9iIGFuZCBwZXJmb3JtIHRoZW1cbiAgICAgaW1tZWRpYXRlbHkuICopXG4gIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDogdW5pdCAtPiB1bml0XG4gICgqIFtqb2JfcXVldWVkX2hvb2tdIGFuZCBbZXZlbnRfYWRkZWRfaG9va10gYWltIHRvIGJlIHVzZWQgYnkganNfb2Zfb2NhbWwuICopXG4gICgqIFdlIHVzZSBbXyBvcHRpb25dIGhlcmUgYmVjYXVzZSB0aG9zZSBob29rcyB3aWxsIG5vdCBiZSBzZXQgaW4gdGhlIGNvbW1vbiBjYXNlXG4gICAgIGFuZCB3ZSB3YW50IHRvIGF2b2lkIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLiAqKVxuICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBldmVudF9hZGRlZF9ob29rIDogKFRpbWVfbnMudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIHlpZWxkIDogKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSlcbiAgOyBtdXRhYmxlXG4gICAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOlxuICAgICAgKCh1bml0LCByZWFkX3dyaXRlKSBUeXBlcy5CdmFyLnRbQHNleHAub3BhcXVlXSAoKiBjb25maWd1cmF0aW9uKikpXG4gIDsgbXV0YWJsZSBjaGVja19pbnZhcmlhbnRzIDogYm9vbFxuICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuX3Vud3JhcHBlZCA9IHVuY2F1Z2h0X2V4blxuXG5sZXQgdW5jYXVnaHRfZXhuIHQgPVxuICBtYXRjaCB0LnVuY2F1Z2h0X2V4biB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoZXhuLCBzZXhwKSAtPlxuICAgIFNvbWUgKEVycm9yLmNyZWF0ZSBcInVuaGFuZGxlZCBleGNlcHRpb25cIiAoZXhuLCBzZXhwKSBbJXNleHBfb2Y6IEV4bi50ICogU2V4cC50XSlcbjs7XG5cbmxldCBudW1fcGVuZGluZ19qb2JzIHQgPVxuICBKb2JfcXVldWUubGVuZ3RoIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgKyBKb2JfcXVldWUubGVuZ3RoIHQubG93X3ByaW9yaXR5X2pvYnNcbjs7XG5cbmxldCBudW1fam9ic19ydW4gdCA9XG4gIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICArIEpvYl9xdWV1ZS5udW1fam9ic19ydW4gdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgdCA9IHQubGFzdF9jeWNsZV9udW1fam9ic1xuXG5sZXQgdW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsIH5zdWJsaXN0OnNtYWxsIGxhcmdlID1cbiAgbGV0IGxhcmdlID0gQXJyYXkudG9fbGlzdCBsYXJnZSBpblxuICBsZXQgcmVtb3ZlIGEgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBhIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgYXJyYXkgPVxuICAoKiBZb3UgY2FuIGluIGZhY3QgaGF2ZSBob29rcyBpbiB0aGUgbGlzdCBmb3Igd2hpY2ggdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBlbnRyeSBpblxuICAgICB0aGUgdGFibGUuIFN1Y2ggaG9va3MgY2FuIG5ldmVyIGJlIHJlbW92ZWQuICopXG4gIGFzc2VydCAodW5vcmRlcmVkX2lzX3N1Ymxpc3QgfmVxdWFsOnBoeXNfZXF1YWwgfnN1Ymxpc3Q6KEhhc2h0YmwuZGF0YSB0YWJsZSkgYXJyYXkpXG47O1xuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNoZWNrX2FjY2VzczppZ25vcmVcbiAgICAgIH5qb2JfcG9vbDooY2hlY2sgSm9iX3Bvb2wuaW52YXJpYW50KVxuICAgICAgfm5vcm1hbF9wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfmxvd19wcmlvcml0eV9qb2JzOihjaGVjayBKb2JfcXVldWUuaW52YXJpYW50KVxuICAgICAgfnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIHEgLT4gRGVxdWUuaXRlciBxIH5mOlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5pbnZhcmlhbnQpKVxuICAgICAgfm1haW5fZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+dW5jYXVnaHRfZXhuOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bmNhdWdodF9leG4gLT5cbiAgICAgICAgICAgaWYgaXNfc29tZSB1bmNhdWdodF9leG4gdGhlbiBhc3NlcnQgKG51bV9wZW5kaW5nX2pvYnMgdCA9IDApKSlcbiAgICAgIH5jeWNsZV9jb3VudDooY2hlY2sgKGZ1biBjeWNsZV9jb3VudCAtPiBhc3NlcnQgKGN5Y2xlX2NvdW50ID49IDApKSlcbiAgICAgIH5jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5pbl9jeWNsZTppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0KSlcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfZW5kOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgLT5cbiAgICAgICAgICAgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQpKVxuICAgICAgfmxhc3RfY3ljbGVfdGltZTppZ25vcmVcbiAgICAgIH50b3RhbF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfmxhc3RfY3ljbGVfbnVtX2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGxhc3RfY3ljbGVfbnVtX2pvYnMgLT4gYXNzZXJ0IChsYXN0X2N5Y2xlX251bV9qb2JzID49IDApKSlcbiAgICAgIH50aW1lX3NvdXJjZTpcbiAgICAgICAgKGNoZWNrXG4gICAgICAgICAgIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5SZWFkX3dyaXRlLmludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIGpvYiAtPlxuICAgICAgICAgICAgICBhc3NlcnQgKFBvb2wucG9pbnRlcl9pc192YWxpZCB0LmpvYl9wb29sIGpvYikpKSlcbiAgICAgIH5leHRlcm5hbF9qb2JzOmlnbm9yZVxuICAgICAgfnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rOmlnbm9yZVxuICAgICAgfmpvYl9xdWV1ZWRfaG9vazppZ25vcmVcbiAgICAgIH5ldmVudF9hZGRlZF9ob29rOmlnbm9yZVxuICAgICAgfnlpZWxkOmlnbm9yZVxuICAgICAgfnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluOmlnbm9yZVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6aWdub3JlXG4gICAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU6aWdub3JlXG4gICAgICB+cmVjb3JkX2JhY2t0cmFjZXM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogdCldXG47O1xuXG5sZXQgZnJlZV9qb2IgdCBqb2IgPSBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2JcblxubGV0IGVucXVldWUgdCAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KSBmIGEgPVxuICAoKiBJZiB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLCB3ZSBkb24ndCBhZGQgdGhlIGpvYiwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBhbnkgam9ic1xuICAgICB0byBydW4gb25jZSB0aGVyZSdzIGJlZW4gYW4gdW5jYXVnaHQgZXhuLiAqKVxuICBpZiBpc19ub25lIHQudW5jYXVnaHRfZXhuXG4gIHRoZW4gKFxuICAgIGxldCBwcmlvcml0eSA9IGV4ZWN1dGlvbl9jb250ZXh0LnByaW9yaXR5IGluXG4gICAgbGV0IGpvYl9xdWV1ZSA9XG4gICAgICBtYXRjaCBwcmlvcml0eSB3aXRoXG4gICAgICB8IE5vcm1hbCAtPiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICB8IExvdyAtPiB0Lmxvd19wcmlvcml0eV9qb2JzXG4gICAgaW5cbiAgICBKb2JfcXVldWUuZW5xdWV1ZSBqb2JfcXVldWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIG1hdGNoIHQuam9iX3F1ZXVlZF9ob29rIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPiBmIHByaW9yaXR5KVxuOztcblxubGV0IGVucXVldWVfam9iIHQgam9iIH5mcmVlX2pvYiA9XG4gIGxldCBqb2JfcG9vbCA9IHQuam9iX3Bvb2wgaW5cbiAgZW5xdWV1ZVxuICAgIHRcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MClcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50MSlcbiAgICAoUG9vbC5nZXQgam9iX3Bvb2wgam9iIFBvb2wuU2xvdC50Mik7XG4gIGlmIGZyZWVfam9iIHRoZW4gUG9vbC5mcmVlIHQuam9iX3Bvb2wgam9iXG47O1xuXG5sZXQgaGFuZGxlX2ZpcmVkICh0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCkgam9iX29yX2V2ZW50ID1cbiAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICB8IEpvYiwgam9iIC0+IGVucXVldWVfam9iIHRpbWVfc291cmNlLnNjaGVkdWxlciBqb2IgfmZyZWVfam9iOnRydWVcbiAgfCBFdmVudCwgZXZlbnQgLT4gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuZmlyZSB0aW1lX3NvdXJjZSBldmVudFxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICBsZXQgcmVjIHQgPVxuICAgIHsgY2hlY2tfYWNjZXNzID0gTm9uZVxuICAgIDsgam9iX3Bvb2wgPSBKb2JfcG9vbC5jcmVhdGUgKClcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzID0gSm9iX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgbG93X3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzID0gRGVxdWUuY3JlYXRlICgpXG4gICAgOyBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbiAgICA7IHVuY2F1Z2h0X2V4biA9IE5vbmVcbiAgICA7IGN5Y2xlX3N0YXJ0ID0gbm93XG4gICAgOyBjeWNsZV9jb3VudCA9IDBcbiAgICA7IGluX2N5Y2xlID0gZmFsc2VcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA9IFt8fF1cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW3x8XVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBsYXN0X2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IGxhc3RfY3ljbGVfbnVtX2pvYnMgPSAwXG4gICAgOyB0b3RhbF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgZXh0ZXJuYWxfam9icyA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPSBpZ25vcmVcbiAgICA7IGpvYl9xdWV1ZWRfaG9vayA9IE5vbmVcbiAgICA7IGV2ZW50X2FkZGVkX2hvb2sgPSBOb25lXG4gICAgOyB5aWVsZCA9IEJ2YXIuY3JlYXRlICgpXG4gICAgOyB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA9IEJ2YXIuY3JlYXRlICgpICgqIGNvbmZpZ3VyYXRpb24gKilcbiAgICA7IGNoZWNrX2ludmFyaWFudHMgPSBBc3luY19rZXJuZWxfY29uZmlnLmNoZWNrX2ludmFyaWFudHNcbiAgICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgICAgQXN5bmNfa2VybmVsX2NvbmZpZy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBBc3luY19rZXJuZWxfY29uZmlnLnJlY29yZF9iYWNrdHJhY2VzXG4gICAgfVxuICBhbmQgZXZlbnRzID1cbiAgICBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6QXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3dcbiAgYW5kIHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50ID1cbiAgICB7IGlkID0gVHlwZXMuVGltZV9zb3VyY2VfaWQuY3JlYXRlICgpXG4gICAgOyBhZHZhbmNlX2Vycm9ycyA9IFtdXG4gICAgOyBhbV9hZHZhbmNpbmcgPSBmYWxzZVxuICAgIDsgZXZlbnRzXG4gICAgOyBoYW5kbGVfZmlyZWQgPSAoZnVuIGFsYXJtIC0+IGhhbmRsZV9maXJlZCB0aW1lX3NvdXJjZSAoQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtKSlcbiAgICA7IGZpcmVkX2V2ZW50cyA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBpc193YWxsX2Nsb2NrID0gdHJ1ZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgaXNfZGVhZCB0ID0gaXNfc29tZSB0LnVuY2F1Z2h0X2V4blxubGV0IHNldF9jaGVja19hY2Nlc3MgdCBmID0gdC5jaGVja19hY2Nlc3MgPC0gZlxuXG5sZXQgYmFja3RyYWNlX29mX2ZpcnN0X2pvYiB0ID1cbiAgT3B0aW9uLmZpcnN0X3NvbWVcbiAgICAoSm9iX3F1ZXVlLmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMpXG4gICAgKEpvYl9xdWV1ZS5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0Lmxvd19wcmlvcml0eV9qb2JzKVxuOztcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiBob3c6aG93IC0+IGludCAtPiBmOihpbnQgLT4gJ2EgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGl0ZXIgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgaXRlcmkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGZpbHRlciA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcGkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuZW5kXG4iLCJvcGVuIENvcmVcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5pbmNsdWRlIERlZmVycmVkMFxuXG4oKiBUbyBhdm9pZCBhIHNwYWNlIGxlYWssIGl0IGlzIG5lY2Vzc2FyeSB0aGF0IFtuZXZlcl0gYWxsb2NhdGVzIGEgbmV3IGl2YXIgd2hlbmV2ZXIgaXQgaXNcbiAgIGNhbGxlZC4gIENvZGUgY2FuIGJpbmQgb24gW25ldmVyICgpXSwgc28gaWYgd2UgcmUtdXNlZCB0aGUgaXZhciwgd2UgY291bGQgZW5kbGVzc2x5XG4gICBhY2N1bXVsYXRlIGhhbmRsZXJzLiAqKVxubGV0IG5ldmVyICgpID0gSXZhci5yZWFkIChJdmFyLmNyZWF0ZSAoKSlcblxubW9kdWxlIE0gPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmVycmVkMFxuXG4gICAgbGV0IG1hcCB0IH5mID1cbiAgICAgICgqIFdlIG1hbnVhbGx5IGlubGluZSBbRGVmZXJyZWQuY3JlYXRlXSBoZXJlLCBiZWNhdXNlIHRoZSBub24tZmxhbWJkYSBjb21waWxlciBpc24ndFxuICAgICAgICAgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBjbG9zdXJlIHRoYXQgd291bGQgYmUgYmUgY3JlYXRlZC4gKilcbiAgICAgIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiB0IChmdW4gYSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmIGEpKTtcbiAgICAgIG9mX2l2YXIgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmluY2x1ZGUgTVxuXG4oKiBXZSByZWJpbmQgYWxsIHRoZSB2YXJpb3VzIFtyZXR1cm5dcyBiZWNhdXNlIHRoZSB1c2Ugb2YgdGhlIFtNb25hZC5NYWtlXSBmdW5jdG9yXG4gICBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIG5vdCBpbmxpbmUgW3JldHVybl0sIGFuZCBoZW5jZSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvXG4gICBzdGF0aWNhbGx5IGFsbG9jYXRlIGNvbnN0YW50cyBsaWtlIFtyZXR1cm4gKCldLiAgQnkgcmViaW5kaW5nIFtyZXR1cm5dIGFzXG4gICBbRGVmZXJyZWQwLnJldHVybl0sIHRoZSBjb21waWxlciBjYW4gc2VlIHRoYXQ6XG5cbiAgIHtbXG4gICAgIHJldHVybiBhID0geyBJdmFyLkltbXV0YWJsZS4gY2VsbCA9IEZ1bGwgYSB9IF19XG5cbiAgIEFuZCBoZW5jZSwgaWYgW2FdIGlzIGNvbnN0YW50LCB0aGVuIHRoZSByZXR1cm4gaXMgY29uc3RhbnQgYW5kIGNhbiBiZSBzdGF0aWNhbGx5XG4gICBhbGxvY2F0ZWQuICBXaGVuIGNvbXBpbGluZyB3aXRoIGZsYW1iZGEsIHRoZSBjb21waWxlciBpbmxpbmVzIFtyZXR1cm5dIGFuZCB0aGlzIG1hbnVhbFxuICAgcmViaW5kaW5nIHdvdWxkIG5vdCBoZWxwOyB3ZSd2ZSBkZWNpZGVkIHRvIGRvIGl0IGFueXdheSBzbyB0aGF0IG5vbi1mbGFtYmRhIGJ1aWxkc1xuICAgZ2V0IHRoZSBvcHRpbWl6YXRpb24uICopXG5sZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIE0uTGV0X3N5bnRheFxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE0uTGV0X3N5bnRheC5MZXRfc3ludGF4XG5cbiAgICBsZXQgcmV0dXJuID0gRGVmZXJyZWQwLnJldHVyblxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxuKCogV2Ugc2hhZG93IFthbGxdIG9uLXB1cnBvc2UgaGVyZSwgc2luY2UgdGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VzIGEgY2hhaW4gb2ZcbiAgIGJpbmRzIGFzIGxvbmcgYXMgdGhlIGxpc3QuICopXG5sZXQgYWxsID0gYE1ha2Vfc3VyZV90b19kZWZpbmVfYWxsX2Vsc2V3aGVyZVxubGV0IF8gPSBhbGxcbmxldCB1bml0ID0gcmV0dXJuICgpXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbiAgbGV0IHBweF9ib3RoID0gYm90aFxuZW5kXG5cbm9wZW4gSW5maXhcblxubGV0IGRvbid0X3dhaXRfZm9yIChfIDogdW5pdCB0KSA9ICgpXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9IFQgOiAnYiBEZWZlcnJlZDAudCAqICgnYiAtPiAnYSkgLT4gJ2EgdFxuXG4gIGxldCBtYXAgKFQgKHQsIGYxKSkgfmY6ZjIgPSBUICh0LCBmdW4geCAtPiBmMiAoZjEgeCkpXG5lbmRcblxubW9kdWxlIFVucmVnaXN0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhpcyByZXByZXNlbnRhdGlvbiBzYXZlcyAybiB3b3JkcyBmb3IgYSBsaXN0IG9mIG4gY2hvaWNlcy4gKilcbiAgdHlwZSAnciB0ID1cbiAgICB8IE5pbCA6ICdyIHRcbiAgICB8IENvbnMgOiAnYSBEZWZlcnJlZDAudCAqICgnYSAtPiAncikgKiAnYSBEZWZlcnJlZDAuSGFuZGxlci50ICogJ3IgdCAtPiAnciB0XG5cbiAgbGV0IHJlYyBwcm9jZXNzID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodCwgX2YsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgIENvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBVbnJlZ2lzdGVyLk5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIF8sIHJlc3QpIC0+XG4gICAgKG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgIHwgTm9uZSAtPiBjaG9vc2VfcmVzdWx0IHJlc3RcbiAgICAgfCBTb21lIHYgLT4gZiB2KVxuOztcblxubGV0IGdlbmVyaWNfY2hvb3NlIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgKCogQSBiYWNrLXBhdGNoZWQgcmVmIGNvdWxkIGJlIHVzZWQgaGVyZSwgYnV0IHVzaW5nIGxhenkgc2F2ZXMgc29tZSBtZW1vcnlcbiAgICAgYmVjYXVzZSB0aGUgR0MgZXZlbnR1YWxseSByZW1vdmVzIHRoZSBleHRyYSBpbmRpcmVjdGlvbi4gKilcbiAgbGV0IHJlYyB1bnJlZ2lzdGVycyA9XG4gICAgbGF6eVxuICAgICAgKExpc3QuZm9sZF9yaWdodCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gKENob2ljZS5UICh0LCBmKSkgYWNjIC0+XG4gICAgICAgICBVbnJlZ2lzdGVyLkNvbnMgKHQsIGYsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKSlcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB1bnJlZ2lzdGVycyA9IExhenkuZm9yY2UgdW5yZWdpc3RlcnMgaW5cbiAgICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzIHVucmVnaXN0ZXJzO1xuICAgICAgICBJdmFyLmZpbGwgcmVzdWx0IChjaG9vc2VfcmVzdWx0IHVucmVnaXN0ZXJzKSlcbiAgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIHVucmVnaXN0ZXJzIGluXG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbigqIFtjaG9vc2UyXSBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIFtjaG9vc2VdIHRoYXQgaGFzIGJldHRlciBtZW1vcnkgdXNhZ2UuXG4gICBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBbY2hvb3NlMl0ga2VlcHMgMjIgZXh0cmEgd29yZHMgYWxpdmVcbiAgIGZvciB0aGUgZHVyYXRpb24gb2YgY2hvaWNlIHN0YXlpbmcgdW5kZXRlcm1pbmVkLCB3aGlsZSB0aGUgZXF1aXZhbGVudCBnZW5lcmljXG4gICBbY2hvb3NlXSBrZWVwcyAyNyAoc2VlIHRoZSBiZW5jaG1hcmsgaW4gLi4vYmVuY2gvYmluL2JlbmNoX2Nob29zZV9tZW1vcnlfdXNhZ2UubWwpLiAqKVxubGV0IGNob29zZTIgYSBmYSBiIGZiID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIGxldCByZWMgYV9oYW5kbGVyID0gbGF6eSAoRGVmZXJyZWQwLmFkZF9oYW5kbGVyIGEgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQpXG4gIGFuZCBiX2hhbmRsZXIgPSBsYXp5IChEZWZlcnJlZDAuYWRkX2hhbmRsZXIgYiByZWFkeSBleGVjdXRpb25fY29udGV4dClcbiAgYW5kIHJlYWR5IDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biBfIC0+XG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFRoZSBvcmRlciBvZiB0aGVzZSBvcGVyYXRpb25zIG1hdHRlcnM6XG4gICAgICAgICAgIGlmIHdlIGNhbGwgW2ZiXSBvciBbZmFdIGZpcnN0IGFuZCBbcmVtb3ZlX2hhbmRsZXJdIGFmdGVyLCB0aGVuXG4gICAgICAgICAgIGFueSBleGNlcHRpb25zIHJhaXNlZCB3aWxsIGNhdXNlIHRoZSBoYW5kbGVycyB0byByZW1haW4gYW5kIHRoZW5cbiAgICAgICAgICAgdGhlIFwic2Vjb25kIGNob2ljZVwiIGdldHMgYSBjaGFuY2UgdG8gcnVuLlxuICAgICAgICAqKVxuICAgICAgICByZW1vdmVfaGFuZGxlciBhIChMYXp5LmZvcmNlIGFfaGFuZGxlcik7XG4gICAgICAgIHJlbW92ZV9oYW5kbGVyIGIgKExhenkuZm9yY2UgYl9oYW5kbGVyKTtcbiAgICAgICAgbWF0Y2ggcGVlayBhIHdpdGhcbiAgICAgICAgfCBTb21lIGF2IC0+IEl2YXIuZmlsbCByZXN1bHQgKGZhIGF2KVxuICAgICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCAoZmIgKHZhbHVlX2V4biBiKSkpXG4gIGluXG4gIGxldCAoXyA6IF8pID0gTGF6eS5mb3JjZSBhX2hhbmRsZXIgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIGJfaGFuZGxlciBpblxuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgY2hvb3NlIGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbIENob2ljZS5UIChhLCBmYSk7IENob2ljZS5UIChiLCBmYikgXSAtPiBjaG9vc2UyIGEgZmEgYiBmYlxuICB8IGNob2ljZXMgLT4gZ2VuZXJpY19jaG9vc2UgY2hvaWNlc1xuOztcblxubGV0IGFueV9mIHRzIGYgPSBjaG9vc2UgKExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBjaG9pY2UgdCBmKSlcbmxldCBhbnkgdHMgPSBhbnlfZiB0cyBGbi5pZFxubGV0IGFueV91bml0IHRzID0gYW55X2YgdHMgKEZuLmlnbm9yZSA6IHVuaXQgLT4gdW5pdClcblxubGV0IGZvcl8gc3RhcnQgfnRvXyB+ZG9fID1cbiAgaWYgc3RhcnQgPiB0b19cbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBkb18gaSBpblxuICAgICAgaWYgaSA+PSB0b18gdGhlbiByZXR1cm4gKCkgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3Agc3RhcnQpXG47O1xuXG5sZXQgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBjcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgICBmIHN0YXRlXG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgYFJlcGVhdCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgICB8IGBGaW5pc2hlZCByZXN1bHQgLT4gSXZhci5maWxsIGZpbmlzaGVkIHJlc3VsdFxuICAgIGluXG4gICAgbG9vcCBzdGF0ZSlcbjs7XG5cbmxldCBmb3JldmVyIHN0YXRlIGYgPVxuICByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgKGZ1biBzdGF0ZSAtPlxuICAgIGxldCVtYXAgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgYFJlcGVhdCBzdGF0ZSlcbiAgPj4+IG5ldmVyX3JldHVybnNcbjs7XG5cbnR5cGUgaG93ID0gTW9uYWRfc2VxdWVuY2UuaG93IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2UuUyB3aXRoIHR5cGUgJ2EgbW9uYWQgOj0gJ2EgdFxuXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyBiXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBzZXFtYXAgdCB+ZiA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGJzIGEgLT4gZiBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSA+PnwgTGlzdC5yZXZcbmxldCBhbGwgZHMgPSBzZXFtYXAgZHMgfmY6Rm4uaWRcbmxldCBhbGxfdW5pdCBkcyA9IGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpXG5sZXQgb2sgeCA9IHggPj58IGZ1biB4IC0+IE9rIHhcblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgZ2VuZXJpY19jaG9vc2UgPSBnZW5lcmljX2Nob29zZVxuZW5kXG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxubGV0IGRldGFjaCB0ID0gdC5mb3J3YXJkaW5nIDwtIERldGFjaGVkXG5cbnR5cGUgaGFuZGxlcl9zdGF0ZSA9XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFJ1bm5pbmcgb2YgKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcuRWx0LnRcbiAgfCBUZXJtaW5hdGVkXG5cbmxldCBkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIHQgfmYgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgaGFuZGxlcl9zdGF0ZV9yZWYgPSByZWYgVW5pbml0aWFsaXplZCBpblxuICBsZXQgcnVuX2YgZXhuID1cbiAgICBtYXRjaCAhaGFuZGxlcl9zdGF0ZV9yZWYgd2l0aFxuICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFRlcm1pbmF0ZWQgLT4gKClcbiAgICB8IFJ1bm5pbmcgYmFnX2VsdCAtPlxuICAgICAgKHRyeSBmIGV4biB3aXRoXG4gICAgICAgfCBpbm5lcl9leG4gLT5cbiAgICAgICAgIGhhbmRsZXJfc3RhdGVfcmVmIDo9IFRlcm1pbmF0ZWQ7XG4gICAgICAgICBCYWcucmVtb3ZlIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgYmFnX2VsdDtcbiAgICAgICAgICgqIFtydW5fZl0gYWx3YXlzIHJ1bnMgaW4gW2V4ZWN1dGlvbl9jb250ZXh0XS4gIEhlbmNlLCBbcmFpc2UgaW5uZXJfZXhuXSBzZW5kc1xuICAgICAgICAgICAgW2lubmVyX2V4bl0gdG8gW2V4ZWN1dGlvbl9jb250ZXh0XSdzIG1vbml0b3IsIGkuZS4gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgICAgICAgIFtkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXSB3YXMgY2FsbGVkLiAqKVxuICAgICAgICAgcmFpc2UgaW5uZXJfZXhuKVxuICBpblxuICBoYW5kbGVyX3N0YXRlX3JlZlxuICA6PSBSdW5uaW5nIChCYWcuYWRkIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgKGV4ZWN1dGlvbl9jb250ZXh0LCBydW5fZikpXG47O1xuXG5sZXQgZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIHQgPVxuICBkZXRhY2ggdDtcbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIDwtIHRhaWwgOjogdC50YWlsc19mb3JfYWxsX2Vycm9ycztcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBnZXRfbmV4dF9lcnJvciB0ID0gSXZhci5yZWFkIHQubmV4dF9lcnJvclxuXG5sZXQgZGV0YWNoX2FuZF9nZXRfbmV4dF9lcnJvciB0ID1cbiAgZGV0YWNoIHQ7XG4gIGdldF9uZXh0X2Vycm9yIHRcbjs7XG5cbmxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgKCkgPVxuICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgKFNvbWUgcGFyZW50KVxuOztcblxubW9kdWxlIE1vbml0b3JfZXhuID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBleG4gOiBleG5cbiAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgOyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgfVxuXG4gIGxldCBiYWNrdHJhY2UgdCA9IHQuYmFja3RyYWNlXG4gIGxldCBleHRyYWN0X2V4biB0ID0gdC5leG5cblxuICBsZXQgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyA9XG4gICAgbGV0IGpvYl9xdWV1ZSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiam9iX3F1ZXVlLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMCA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGRlZmVycmVkMSA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZGVmZXJyZWQxLm1sXFxcIlwiIGluXG4gICAgbGV0IG1vbml0b3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcIm1vbml0b3IubWxcXFwiXCIgaW5cbiAgICBsZXQgaW1wb3J0MCA9IFwiUmFpc2VkIGF0IGZpbGUgXFxcImltcG9ydDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZXJyb3IgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImVycm9yLm1sXFxcIlwiIGluXG4gICAgZnVuIHRyYWNlcyAtPlxuICAgICAgKCogLi4vdGVzdC90ZXN0X3RyeV93aXRoX2Vycm9yX2Rpc3BsYXkubWwgbWFrZXMgc3VyZSB0aGlzIHN0YXlzIHVwLXRvLWRhdGUuICopXG4gICAgICBsZXQgdHJhY2VzID1cbiAgICAgICAgbWF0Y2ggdHJhY2VzIHdpdGhcbiAgICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmltcG9ydDAgLT5cbiAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDplcnJvciAtPlxuICAgICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0MyA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MyB+cHJlZml4OmVycm9yIC0+IHJlc3RcbiAgICAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICB8IF8gLT4gdHJhY2VzXG4gICAgICBpblxuICAgICAgbWF0Y2ggTGlzdC5yZXYgdHJhY2VzIHdpdGhcbiAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IHQyIDo6IHJlc3RcbiAgICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQwXG4gICAgICAgICAgICAgICAgKCogYmluZCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDFcbiAgICAgICAgICAgICAgICAoKiBtYXAgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6bW9uaXRvclxuICAgICAgICAgICAgICAoKiB0cnlfd2l0aCAqKSAtPiBMaXN0LnJldiByZXN0XG4gICAgICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgfCBfIC0+IHRyYWNlc1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgeyBleG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgfSA9XG4gICAgbGV0IG1vbml0b3IgPVxuICAgICAgbGV0IG5hbWUgPVxuICAgICAgICBtYXRjaCBJbmZvLnRvX3N0cmluZ19odW0gbW9uaXRvci5uYW1lIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IE5vbmVcbiAgICAgICAgfCBzIC0+IFNvbWUgc1xuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPVxuICAgICAgICBtYXRjaCBtb25pdG9yLmhlcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaGVyZSAtPlxuICAgICAgICAgICgqIFdlIGRpc3BsYXkgdGhlIGZ1bGwgZmlsZW5hbWUsIHdoZXJlYXMgYmFja3RyYWNlcyBvbmx5IGhhdmUgYmFzZW5hbWVzLCBidXRcbiAgICAgICAgICAgICBwZXJoYXBzIHRoYXQncyB3aGF0IHNob3VsZCBjaGFuZ2UuICopXG4gICAgICAgICAgbGV0IGNvbHVtbiA9IGhlcmUucG9zX2NudW0gLSBoZXJlLnBvc19ib2wgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoKiBXZSBoaWRlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIHdoZW4gW2FtX3J1bm5pbmdfdGVzdF0gdG8gbWFrZSB0ZXN0IG91dHB1dFxuICAgICAgICAgICAgICAgbW9yZSByb2J1c3QuICBUaGlzIHNhdmVzIHBlb3BsZSBtYW51YWxseSBoaWRpbmcgdGhlIG51bWJlcnMgb3IgZXZlbiB3b3JzZSxcbiAgICAgICAgICAgICAgIGxlYXZpbmcgdGhlbSBpbiB0ZXN0IG91dHB1dC4gIEhpZGluZyBpbiB0ZXN0IGlzIGRpZmZlcmVudCBjaG9pY2UgZm9yXG4gICAgICAgICAgICAgICBiZWhhdmlvciB0aGFuIG91ciBjb2RlYmFzZSBtYWtlcyBmb3IgW0JhY2t0cmFjZS5lbGlkZV0sIHdoaWNoIGhhcyBkZWZhdWx0XG4gICAgICAgICAgICAgICBbZmFsc2VdLCBhbmQgdGh1cyBzaG93cyBiYWNrdHJhY2VzIGluIHRlc3QuICBUaGVyZSBhcmUgYSBjb3VwbGUgcmVhc29ucyBmb3JcbiAgICAgICAgICAgICAgIHRoaXMgZGlmZmVyZW50IGNob2ljZS4gIEZpcnN0LCBleHBlY3QtdGVzdCBtYWNoaW5lcnkgaGFzIGNoZWNrIHRvIHByZXZlbnRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgZnJvbSBhcHBlYXJpbmcgaW4gdGVzdCBvdXRwdXQuICBJdCBoYXMgbm8gc3VjaCBjaGVja3MgZm9yIGxpbmVcbiAgICAgICAgICAgICAgIGFuZCBjb2x1bW4gbnVtYmVycy4gIFNlY29uZCwgd2hlbiB0aGVyZSBpcyBhIHJlYWwgZXJyb3IgYW5kIHlvdSB3YW50IHRvIHNlZVxuICAgICAgICAgICAgICAgdGhlIGJhY2t0cmFjZSwgdGhyb3dpbmcgYXdheSB0aGUgd2hvbGUgYmFja3RyYWNlIGxvc2VzIGEgbG90IG9mIHBvdGVudGlhbGx5XG4gICAgICAgICAgICAgICB1c2VmdWwgaW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgaGFyZCB0byByZWNvdmVyLiAgV2hlcmVhcyB3ZSdyZSBqdXN0XG4gICAgICAgICAgICAgICB0aHJvd2luZyBhIHdheSBhIGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4sIHdoaWNoIGFyZSBhIG1pbm9yIGNvbnZlbmllbmNlXG4gICAgICAgICAgICAgICBnaXZlbiB0aGF0IHRoZSBmaWxlbmFtZSBoYXMgbW9zdCBvZiB0aGUgaW5mb3JtYXRpb24uICopXG4gICAgICAgICAgICAoaWYgYW1fcnVubmluZ190ZXN0XG4gICAgICAgICAgICAgdGhlbiBzcHJpbnRmIFwiZmlsZSAlUywgbGluZSBMSU5FLCBjaGFyYWN0ZXJzIEMxLUMyXCIgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiZmlsZSAlUywgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZFwiXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgICAgIGhlcmUucG9zX2xudW1cbiAgICAgICAgICAgICAgICAgY29sdW1uXG4gICAgICAgICAgICAgICAgIGNvbHVtbilcbiAgICAgIGluXG4gICAgICBtYXRjaCBwb3MsIG5hbWUgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgcG9zLCBOb25lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yIGF0ICVzXCIgcG9zIF1cbiAgICAgIHwgTm9uZSwgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzXCIgbmFtZSBdXG4gICAgICB8IFNvbWUgcG9zLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXMgYXQgJXNcIiBuYW1lIHBvcyBdXG4gICAgaW5cbiAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIGJhY2t0cmFjZSAtPiBCYWNrdHJhY2UudG9fc3RyaW5nX2xpc3QgYmFja3RyYWNlXG4gICAgICBpblxuICAgICAgYmFja3RyYWNlX3RydW5jYXRpb25faGV1cmlzdGljcyBiYWNrdHJhY2UgQCBtb25pdG9yXG4gICAgaW5cbiAgICBsZXQgbGlzdF9pZl9ub3RfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IF8gOjogXyBhcyBsIC0+IFNvbWUgbFxuICAgIGluXG4gICAgWyVzZXhwXG4gICAgICAoZXhuIDogZXhuKVxuICAgICwgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZSA6IChzdHJpbmcgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgLCBgYmFja3RyYWNlX2hpc3RvcnlcbiAgICAgICAgKGxpc3RfaWZfbm90X2VtcHR5IGJhY2t0cmFjZV9oaXN0b3J5IDogKEJhY2t0cmFjZS50IGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKV1cbiAgOztcbmVuZFxuXG5leGNlcHRpb24gTW9uaXRvcl9leG4gb2YgTW9uaXRvcl9leG4udFxuXG5sZXQgKCkgPVxuICBTZXhwbGliLkNvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgTW9uaXRvcl9leG5dIChmdW5jdGlvblxuICAgIHwgTW9uaXRvcl9leG4gdCAtPiBbJXNleHAgXCJtb25pdG9yLm1sLkVycm9yXCIgOjogKHQgOiBNb25pdG9yX2V4bi50KV1cbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGV4dHJhY3RfZXhuIGV4biA9XG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgTW9uaXRvcl9leG4gZXJyb3IgLT4gZXJyb3IuZXhuXG4gIHwgZXhuIC0+IGV4blxuOztcblxubGV0IHNlbmRfZXhuIHQgPyhiYWNrdHJhY2UgPSBgR2V0KSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgTW9uaXRvcl9leG4gXyAtPiBleG5cbiAgICB8IF8gLT5cbiAgICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICAgICAgICB8IGBHZXQgLT4gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudF9mb3JfZXhuIGV4blxuICAgICAgICB8IGBUaGlzIGIgLT4gU29tZSBiXG4gICAgICBpblxuICAgICAgbGV0IGJhY2t0cmFjZV9oaXN0b3J5ID0gKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpLmJhY2t0cmFjZV9oaXN0b3J5IGluXG4gICAgICBNb25pdG9yX2V4biB7IE1vbml0b3JfZXhuLmV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciA9IHQgfVxuICBpblxuICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuIHRoZW4gRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4blwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gIHQuaGFzX3NlZW5fZXJyb3IgPC0gdHJ1ZTtcbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBJdmFyLmZpbGwgdC5uZXh0X2Vycm9yIGV4bjtcbiAgICB0Lm5leHRfZXJyb3IgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIC0+XG4gICAgICBpZiBEZWJ1Zy5tb25pdG9yX3NlbmRfZXhuXG4gICAgICB0aGVuXG4gICAgICAgIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG4gZm91bmQgbGlzdGVuaW5nIG1vbml0b3JcIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICAgICAgQmFnLml0ZXIgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIChleGVjdXRpb25fY29udGV4dCwgZikgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgZXhuKTtcbiAgICAgIExpc3QuaXRlciB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gdGFpbCAtPiBUYWlsLmV4dGVuZCB0YWlsIGV4bilcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gbG9vcCBwYXJlbnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT5cbiAgICAgICgqIERvIG5vdCBjaGFuZ2UgdGhpcyBicmFuY2ggdG8gcHJpbnQgdGhlIGV4Y2VwdGlvbiBvciB0byBleGl0LiAgSGF2aW5nIHRoZVxuICAgICAgICAgc2NoZWR1bGVyIHJhaXNlIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiBpcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW9yIGZvciBwcm9ncmFtc1xuICAgICAgICAgdGhhdCBjYWxsIFtTY2hlZHVsZXIuZ29dIGFuZCB3YW50IHRvIGhhbmRsZSBpdC4gKilcbiAgICAgIFNjaGVkdWxlci4oZ290X3VuY2F1Z2h0X2V4biAodCAoKSkpIGV4biAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSlcbiAgaW5cbiAgbG9vcCB0XG47O1xuXG5tb2R1bGUgRXhwb3J0ZWRfZm9yX3NjaGVkdWxlciA9IHN0cnVjdFxuICBsZXQgd2l0aGluX2NvbnRleHQgY29udGV4dCBmID1cbiAgICBTY2hlZHVsZXIuKHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBjb250ZXh0IH5mOihmdW4gKCkgLT5cbiAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCBmIHdpdGhcbiAgICAgIHwgT2sgeCAtPiBPayB4XG4gICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICBzZW5kX2V4biAoRXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBjb250ZXh0KSBleG4gfmJhY2t0cmFjZTpgR2V0O1xuICAgICAgICBFcnJvciAoKSlcbiAgOztcblxuICBsZXQgd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbGV0IHRtcF9jb250ZXh0ID1cbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKSA/bW9uaXRvciA/cHJpb3JpdHlcbiAgICBpblxuICAgIHdpdGhpbl9jb250ZXh0IHRtcF9jb250ZXh0IGZcbiAgOztcblxuICBsZXQgd2l0aGluJyA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgT2sgZCAtPiBkXG4gIDs7XG5cbiAgbGV0IHdpdGhpbl92ID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IE5vbmVcbiAgICB8IE9rIHggLT4gU29tZSB4XG4gIDs7XG5cbiAgbGV0IHdpdGhpbiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiAoKVxuICAgIHwgT2sgKCkgLT4gKClcbiAgOztcblxuICBsZXQgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrIHggPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIFNjaGVkdWxlci5lbnF1ZXVlXG4gICAgICBzY2hlZHVsZXJcbiAgICAgIChFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgICAgKFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlcilcbiAgICAgICAgID9tb25pdG9yXG4gICAgICAgICA/cHJpb3JpdHkpXG4gICAgICB3b3JrXG4gICAgICB4XG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlID9tb25pdG9yID9wcmlvcml0eSB3b3JrID0gc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB3b3JrICgpXG5cbiAgbGV0IHNjaGVkdWxlJyA9XG4gICAgKCogRm9yIHBlcmZvcm1hbmNlLCB3ZSB1c2UgW3NjaGVkdWxlX3dpdGhfZGF0YV0gd2l0aCBhIGNsb3NlZCBmdW5jdGlvbiwgYW5kIGlubGluZVxuICAgICAgIFtEZWZlcnJlZC5jcmVhdGVdLiAqKVxuICAgIGxldCB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKSA9IHVwb24gKHdvcmsgKCkpIChmdW4gYSAtPiBJdmFyLmZpbGwgaSBhKSBpblxuICAgIGZ1biA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAtPlxuICAgICAgbGV0IGkgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgc2NoZWR1bGVfd2l0aF9kYXRhID9tb25pdG9yID9wcmlvcml0eSB1cG9uX3dvcmtfZmlsbF9pICh3b3JrLCBpKTtcbiAgICAgIEl2YXIucmVhZCBpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIHN0YWdlIChmdW4gYSAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCcgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgbGV0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpID0gdXBvbiAoZiBhKSAoZnVuIHIgLT4gSXZhci5maWxsIGkgcikgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT5cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGkgLT5cbiAgICAgICAgU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGNhbGxfYW5kX2ZpbGwgKGYsIGEsIGkpKSlcbiAgOztcbmVuZFxuXG5vcGVuIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IHN0cmVhbV9pdGVyIHN0cmVhbSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzdHJlYW0gPVxuICAgIFN0cmVhbS5uZXh0IHN0cmVhbVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh2LCBzdHJlYW0pIC0+XG4gICAgICBsb29wIHN0cmVhbTtcbiAgICAgIGYgdlxuICBpblxuICBsb29wIHN0cmVhbVxuOztcblxuKCogQW4gWydhIE9rX2FuZF9leG5zLnRdIHJlcHJlc2VudHMgdGhlIG91dHB1dCBvZiBhIGNvbXB1dGF0aW9uIHJ1bm5pbmcgaW4gYSBkZXRhY2hlZFxuICAgbW9uaXRvci4gKilcbm1vZHVsZSBPa19hbmRfZXhucyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgb2sgOiAnYSBEZWZlcnJlZC50XG4gICAgOyBleG5zIDogZXhuIFN0cmVhbS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuIGYgPVxuICAgICgqIFdlIGNhbGwgW2NyZWF0ZV93aXRoX3BhcmVudCBOb25lXSBiZWNhdXNlIFttb25pdG9yXSBkb2VzIG5vdCBuZWVkIGEgcGFyZW50LiAgSXRcbiAgICAgICBkb2VzIG5vdCBiZWNhdXNlIHdlIGNhbGwgW2RldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yXSBhbmQgZGVhbCB3aXRoIHRoZVxuICAgICAgIGVycm9ycyBleHBsaWNpdGx5LCB0aHVzIFtzZW5kX2V4bl0gd291bGQgbmV2ZXIgcHJvcGFnYXRlIGFuIGV4biBwYXN0IFttb25pdG9yXS4gKilcbiAgICBsZXQgbW9uaXRvciA9IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBOb25lIGluXG4gICAgbGV0IGV4bnMgPSBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvciBpblxuICAgIGxldCBvayA9XG4gICAgICBtYXRjaCBydW4gd2l0aFxuICAgICAgfCBgTm93IC0+IHdpdGhpbicgfm1vbml0b3IgZlxuICAgICAgfCBgU2NoZWR1bGUgLT4gc2NoZWR1bGUnIH5tb25pdG9yIGZcbiAgICBpblxuICAgIHsgb2s7IGV4bnMgfVxuICA7O1xuZW5kXG5cbmxldCBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICByZXN1bHRfZmlsbGVyXG4gICAgICByZXN1bHRcbiAgICAgIGV4bnNcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdFxuICA9XG4gIGlmIEl2YXJfZmlsbGVyLmlzX2VtcHR5IHJlc3VsdF9maWxsZXJcbiAgdGhlbiAoXG4gICAgSXZhcl9maWxsZXIuZmlsbCByZXN1bHRfZmlsbGVyIHJlc3VsdDtcbiAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucylcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoX2xvZ19leG4gOiAoZXhuIC0+IHVuaXQpIHJlZiA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcImZhaWxlZCB0byBzZXQgW01vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5dXCIgKGV4biA6IEV4bi50KV0pXG4gIDs7XG5lbmRcblxubGV0IG1ha2VfaGFuZGxlX2V4biByZXN0ID1cbiAgbWF0Y2ggcmVzdCB3aXRoXG4gIHwgYExvZyAtPlxuICAgICgqIFdlIGFyZSBjYXJlZnVsIHRvIG5vdCBjbG9zZSBvdmVyIGN1cnJlbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IG5lZWRlZC4gKilcbiAgICAhRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5cbiAgfCBgUmFpc2UgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gc2VuZF9leG4gcGFyZW50IGV4biA/YmFja3RyYWNlOk5vbmVcbiAgfCBgQ2FsbCBmIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHdpdGhpbiB+bW9uaXRvcjpwYXJlbnQgKGZ1biAoKSAtPiBmIGV4bilcbjs7XG5cbmxldCB0cnlfd2l0aFxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcIlwiKVxuICAgICAgP2V4dHJhY3RfZXhuOihkb19leHRyYWN0X2V4biA9IGZhbHNlKVxuICAgICAgPyhydW4gPSBgTm93KVxuICAgICAgPyhyZXN0ID0gYFJhaXNlKVxuICAgICAgZlxuICA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gfm5hbWUgfnJ1biBmIGluXG4gIGxldCBoYW5kbGVfZXhuID0gbWFrZV9oYW5kbGVfZXhuIHJlc3QgaW5cbiAgbGV0IGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zID0gc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVfZXhuIGluXG4gICgqIFdlIHJ1biBbd2l0aGluJyB+bW9uaXRvcjptYWluXSB0byBhdm9pZCBob2xkaW5nIG9uIHRvIHJlZmVyZW5jZXMgdG8gdGhlIGV2YWx1YXRpb25cbiAgICAgY29udGV4dCBpbiB3aGljaCBbdHJ5X3dpdGhdIHdhcyBjYWxsZWQuICBUaGlzIGF2b2lkcyBhIHNwYWNlIGxlYWsgd2hlbiBhIGNoYWluIG9mXG4gICAgIFt0cnlfd2l0aF0ncyBhcmUgcnVuIGVhY2ggbmVzdGVkIHdpdGhpbiB0aGUgcHJldmlvdXMgb25lLiAgV2l0aG91dCB0aGUgW3dpdGhpbiddLCB0aGVcbiAgICAgZXJyb3IgaGFuZGxpbmcgZm9yIHRoZSBpbm5lcm1vc3QgW3RyeV93aXRoXSB3b3VsZCBrZWVwIGFsaXZlIHRoZSBlbnRpcmUgY2hhaW4uICopXG4gIHdpdGhpbicgfm1vbml0b3I6bWFpbiAoZnVuICgpIC0+XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBva1xuICAgIHRoZW4gKFxuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnM7XG4gICAgICByZXR1cm4gKE9rIChEZWZlcnJlZC52YWx1ZV9leG4gb2spKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByZXN1bHRfZmlsbGVyLCByZXN1bHQgPSBJdmFyX2ZpbGxlci5jcmVhdGUgKCkgaW5cbiAgICAgIHVwb24gb2sgKGZ1biByZXMgLT5cbiAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAoT2sgcmVzKVxuICAgICAgICAgIGV4bnNcbiAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgdXBvbiAoU3RyZWFtLm5leHQgZXhucykgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IENvbnMgKGV4biwgZXhucykgLT5cbiAgICAgICAgICBsZXQgZXhuID0gaWYgZG9fZXh0cmFjdF9leG4gdGhlbiBleHRyYWN0X2V4biBleG4gZWxzZSBleG4gaW5cbiAgICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgICAoRXJyb3IgZXhuKVxuICAgICAgICAgICAgZXhuc1xuICAgICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHJlc3VsdCkpXG47O1xuXG5sZXQgdHJ5X3dpdGhfb3JfZXJyb3IgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJ0cnlfd2l0aF9vcl9lcnJvclwiKSA/ZXh0cmFjdF9leG4gP3Jlc3QgZiA9XG4gIHRyeV93aXRoIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuIH5ydW46YE5vdyA/cmVzdCA+PnwgT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuOztcblxubGV0IHRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yXCIpXG4gICAgICA/ZXh0cmFjdF9leG5cbiAgICAgID9yZXN0XG4gICAgICBmXG4gID1cbiAgdHJ5X3dpdGhfb3JfZXJyb3IgZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gP3Jlc3QgPj58IE9yX2Vycm9yLmpvaW5cbjs7XG5cbmxldCBwcm90ZWN0ID9oZXJlID9pbmZvID8obmFtZSA9IFwiTW9uaXRvci5wcm90ZWN0XCIpID9leHRyYWN0X2V4biA/cnVuID9yZXN0IGYgfmZpbmFsbHkgPVxuICBsZXQlYmluZCByID0gdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9oZXJlID9pbmZvID9ydW4gP3Jlc3Qgfm5hbWUgZiBpblxuICBsZXQlbWFwIGZyID1cbiAgICB0cnlfd2l0aFxuICAgICAgfmV4dHJhY3RfZXhuOmZhbHNlXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgIH5ydW46YFNjaGVkdWxlICgqIGNvbnNpZGVyIFt+cnVuOmBOb3ddICopXG4gICAgICA/cmVzdFxuICAgICAgfm5hbWU6XCJmaW5hbGx5XCJcbiAgICAgIGZpbmFsbHlcbiAgaW5cbiAgbWF0Y2ggciwgZnIgd2l0aFxuICB8IEVycm9yIGV4biwgRXJyb3IgZmluYWxseV9leG4gLT5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIkFzeW5jIGZpbmFsbHlcIiAoZXhuIDogZXhuKSAoZmluYWxseV9leG4gOiBleG4pXVxuICB8IEVycm9yIGUsIE9rICgpIHwgT2sgXywgRXJyb3IgZSAtPiByYWlzZSBlXG4gIHwgT2sgciwgT2sgKCkgLT4gclxuOztcblxubGV0IGhhbmRsZV9lcnJvcnMgP2hlcmUgP2luZm8gP25hbWUgZiBoYW5kbGVyID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgZiBpblxuICBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZXI7XG4gIG9rXG47O1xuXG5sZXQgY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBsZXQgeyBPa19hbmRfZXhucy5leG5zOyBfIH0gPVxuICAgIE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSB+cnVuOmBOb3cgKGZ1biAoKSAtPlxuICAgICAgZiAoKTtcbiAgICAgIHJldHVybiAoKSlcbiAgaW5cbiAgZXhuc1xuOztcblxubGV0IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPVxuICBtYXRjaCVtYXAgU3RyZWFtLm5leHQgKGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmKSB3aXRoXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIk1vbml0b3IuY2F0Y2ggZ290IHVuZXhwZWN0ZWQgZW1wdHkgc3RyZWFtXCJdXG47O1xuXG5sZXQgY2F0Y2hfZXJyb3IgP2hlcmUgP2luZm8gP25hbWUgZiA9IGNhdGNoID9oZXJlID9pbmZvID9uYW1lIGYgPj58IEVycm9yLm9mX2V4blxuXG5tb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gIGxldCBwYXJlbnQgdCA9XG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG4gLT4gTm9uZVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBTb21lIHBhcmVudFxuICAgIHwgRGV0YWNoZWQgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBkZXB0aCB0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBuID1cbiAgICAgIG1hdGNoIHBhcmVudCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBuXG4gICAgICB8IFNvbWUgdCAtPiBsb29wIHQgKG4gKyAxKVxuICAgIGluXG4gICAgbG9vcCB0IDBcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5pbmNsdWRlIFRhaWwuU3RyZWFtXG5cbmxldCBmaXJzdF9leG4gdCA9XG4gIG1hdGNoJW1hcCBuZXh0IHQgd2l0aFxuICB8IE5pbCAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlN0cmVhbS5maXJzdCBvZiBlbXB0eSBzdHJlYW1cIl1cbiAgfCBDb25zICh4LCBfKSAtPiB4XG47O1xuXG5sZXQgZm9sZCcgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgdXBvbiAobmV4dCB0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICAgIHwgQ29ucyAodiwgdCkgLT4gdXBvbiAoZiBiIHYpIChsb29wIHQpKVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG4oKiBbZm9sZF0gaXMgaW1wbGVtZW50ZWQgdG8gYXZvaWQgcGVyLXN0cmVhbS1lbGVtZW50IGRlZmVycmVkIG92ZXJoZWFkIGluIHRoZSBjYXNlIHdoZW5cbiAgIG11bHRpcGxlIHN0cmVhbSBlbGVtZW50cyBhcmUgYXZhaWxhYmxlIHNpbXVsdGFuZW91c2x5LiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdXBvbiAobmV4dCB0KSAoZnVuIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYilcbiAgICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGJcbiAgICBhbmQgbG9vcF9uZXh0IG5leHQgYiA9XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCBDb25zICh2LCB0KSAtPiBsb29wIHQgKGYgYiB2KVxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbmxldCBpdGVyJyB0IH5mID0gZm9sZCcgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gZiB2KVxuXG5sZXQgY2xvc2VkIHQgPVxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgfCBTb21lIE5pbCAtPiByZXR1cm4gKClcbiAgfCBfIC0+IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBkb24ndF93YWl0X2ZvclxuICAgIChpdGVyJyB0IH5mOihmdW4gYSAtPlxuICAgICAgIGYgYTtcbiAgICAgICByZXR1cm4gKCkpKVxuOztcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICAoKiBjb2xsZWN0IGJlZm9yZSBjYWxsaW5nIFtmXSwgaW4gY2FzZSBbZl0gaW1tZWRpYXRlbHkgZXh0ZW5kcy4gKilcbiAgbGV0IHQgPSBUYWlsLmNvbGxlY3QgdGFpbCBpblxuICBmIHRhaWw7XG4gIHRcbjs7XG5cbmxldCB1bmZvbGQgYiB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICB1cG9uIChmIGIpIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICB8IFNvbWUgKGEsIGIpIC0+XG4gICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCBhO1xuICAgICAgICAgIGxvb3AgYilcbiAgICBpblxuICAgIGxvb3AgYilcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgTGlzdC5pdGVyIGwgfmY6KGZ1biB4IC0+IFRhaWwuZXh0ZW5kIHRhaWwgeCk7XG4gICAgVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbmxldCB0b19saXN0IHMgPSBmb2xkJyBzIH5pbml0OltdIH5mOihmdW4gYiBhIC0+IHJldHVybiAoYSA6OiBiKSkgPj58IExpc3QucmV2XG5sZXQgY29weV90b190YWlsIHQgdGFpbCA9IGl0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoVGFpbC5leHRlbmQgdGFpbCBhKSlcblxubGV0IGFwcGVuZCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDEgdGFpbCkgKGZ1biAoKSAtPlxuICAgICAgdXBvbiAoY29weV90b190YWlsIHQyIHRhaWwpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpKVxuOztcblxubGV0IGNvbmNhdCB0ID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGl0ZXInIHQgfmY6KGZ1biB0IC0+IGNvcHlfdG9fdGFpbCB0IHRhaWwpKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcicgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBmYWxzZSAtPiAoKVxuICAgICAgICAgfCB0cnVlIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXInIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IGZpbHRlcl9tYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHYgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9kZXByZWNhdGVkIHQgfmYgPSBmaWx0ZXJfbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBtYXAnIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHYgLT4gZiB2ID4+fCBUYWlsLmV4dGVuZCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICAgIH5yZXN0OmBSYWlzZVxuICAgICAgICAgIChmdW4gKCkgLT4gZiB4KVxuICAgICAgICA+Pj4gZnVuIHogLT5cbiAgICAgICAgbG9vcCB0O1xuICAgICAgICAobWF0Y2ggeiB3aXRoXG4gICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICB8IEVycm9yIGUgLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBlKVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBuZXh0IHRcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAoKiBXZSBpbW1lZGlhdGVseSBjYWxsIFtsb29wXSwgdGh1cyBtYWtpbmcgdGhlIGl0ZXIgZHVyYWJsZS4gIEFueSBleGNlcHRpb25zXG4gICAgICAgICAgIHJhaXNlZCBieSBbZl0gd2lsbCBub3QgcHJldmVudCB0aGUgbG9vcCBmcm9tIGNvbnRpbnVpbmcsIGFuZCB3aWxsIGdvIHRvIHRoZVxuICAgICAgICAgICBtb25pdG9yIG9mIHdob21ldmVyIGNhbGxlZCBbaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmRdLiAqKVxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIGYgeFxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseSB0IH5mID0gZG9uJ3Rfd2FpdF9mb3IgKGl0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIHQgfmYpXG5cbmxldCBvZl9mdW4gZiA9XG4gIHVuZm9sZCAoKSB+ZjooZnVuICgpIC0+XG4gICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgIFNvbWUgKGEsICgpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gKCdhLCAncGVybWlzc2lvbikgVHlwZXMuQnZhci50XG5cbnR5cGUgJ2EgcmVwciA9ICdhIFR5cGVzLkJ2YXIucmVwciA9XG4gIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gIDsgbXV0YWJsZSBpdmFyIDogJ2EgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSByZXByIFslc2V4cF9vZjogXyByZXByXSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgcmVwciBmIGluXG4gICAgRmllbGRzX29mX3JlcHIuaXRlclxuICAgICAgfmhhc19hbnlfd2FpdGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gaGFzX2FueV93YWl0ZXJzIC0+XG4gICAgICAgICAgIGlmIEl2YXIuaGFzX2hhbmRsZXJzIHJlcHIuaXZhciB0aGVuIGFzc2VydCBoYXNfYW55X3dhaXRlcnMpKVxuICAgICAgfml2YXI6XG4gICAgICAgIChjaGVjayAoZnVuIGl2YXIgLT5cbiAgICAgICAgICAgSXZhci5pbnZhcmlhbnQgaW52YXJpYW50X2EgaXZhcjtcbiAgICAgICAgICAgYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSkpXG47O1xuXG5sZXQgc2V4cF9vZl90IF8gXyB0ID1cbiAgbGV0IHsgaGFzX2FueV93YWl0ZXJzOyBpdmFyID0gXyB9ID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgKCogV2UgZG9uJ3Qgc2hvdyBbaXZhcl0gYmVjYXVzZSBpdCdzIGFsd2F5cyBlbXB0eS4gKilcbiAgWyVtZXNzYWdlIChoYXNfYW55X3dhaXRlcnMgOiBib29sKV1cbjs7XG5cbmluY2x1ZGUgU2NoZWR1bGVyMS5CdmFyXG5cbmxldCBicm9hZGNhc3QgdCBhID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICBpZiByZXByLmhhc19hbnlfd2FpdGVyc1xuICB0aGVuIChcbiAgICByZXByLmhhc19hbnlfd2FpdGVycyA8LSBmYWxzZTtcbiAgICBJdmFyLmZpbGwgcmVwci5pdmFyIGE7XG4gICAgcmVwci5pdmFyIDwtIEl2YXIuY3JlYXRlICgpKVxuOztcblxubGV0IHdhaXQgdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgcmVwci5oYXNfYW55X3dhaXRlcnMgPC0gdHJ1ZTtcbiAgSXZhci5yZWFkIHJlcHIuaXZhclxuOztcblxubGV0IGhhc19hbnlfd2FpdGVycyB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVyc1xuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbmxldCBkZWJ1ZyA9IERlYnVnLmNsb2NrXG5cbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdXBvbiA9IERlZmVycmVkLnVwb25cbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCAoID4+PiApID0gdXBvblxuXG5tb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuVDFcblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCI8d2FsbF9jbG9jaz5cIl1cbiAgICBlbHNlXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgKGlzX3dhbGxfY2xvY2sgOiBib29sKVxuICAgICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgICAgcG9vbCBwb2ludGVycywgd2hpY2ggYXJlIHVuaW5mb3JtYXRpdmUuICopXG4gICAgICAgICAgKGV2ZW50cyA6IF8gVGltaW5nX3doZWVsLnQpXVxuICA7O1xuZW5kXG5cbm9wZW4gVDFcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG50eXBlIHQgPSByZWFkIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCA9IGludmFyaWFudFxubGV0IGludmFyaWFudF93aXRoX2pvYnMgPSBpbnZhcmlhbnRfd2l0aF9qb2JzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIuY3JlYXRlX3RpbWVfc291cmNlXG5sZXQgd2FsbF9jbG9jayA9IFNjaGVkdWxlci53YWxsX2Nsb2NrXG5sZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQuZXZlbnRzXG5sZXQgaXNfd2FsbF9jbG9jayB0ID0gdC5pc193YWxsX2Nsb2NrXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgdC5ldmVudHNcbmxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5sZXQgaWQgdCA9IHQuaWRcblxubW9kdWxlIElkID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLklkXG5cbmxldCBub3cgdCA9XG4gIGlmIHQuaXNfd2FsbF9jbG9ja1xuICB0aGVuXG4gICAgKCogRm9yIHRoZSB3YWxsLWNsb2NrIHRpbWUtc291cmNlLCB3ZSB1c2UgW1RpbWVfbnMubm93ICgpXSByYXRoZXIgdGhhblxuICAgICAgIFtUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXS4gIFRoZSBsYXR0ZXIgaXMgb25seSB1cGRhdGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoXG4gICAgICAgY3ljbGUuICBUaGVyZSBjYW4gYmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gd2hlbiBwZW9wbGUgZG8gbG9uZ1xuICAgICAgIHJ1bm5pbmcgY29tcHV0YXRpb25zIG9yIG1peCBibG9ja2luZyBjb2RlIHdpdGggYXN5bmMuICBBbmQgaHVtYW5zIGV4cGVjdCB0aGF0XG4gICAgICAgd2FsbC1jbG9jayB0aW1lIGlzIGJhc2VkIG9uIFtUaW1lLm5vd10sIG5vdCBzb21lIGFydGlmYWN0IG9mIGFzeW5jXG4gICAgICAgaW1wbGVtZW50YXRpb24uICopXG4gICAgVGltZV9ucy5ub3cgKClcbiAgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9ieSB0IGJ5ID0gYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBieSlcbmxldCBhZHZhbmNlID0gYWR2YW5jZV9kaXJlY3RseVxubGV0IGFkdmFuY2VfYnkgPSBhZHZhbmNlX2RpcmVjdGx5X2J5XG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbmxldCB5aWVsZCB0ID0gQnZhci53YWl0IChTY2hlZHVsZXIueWllbGQgdC5zY2hlZHVsZXIpXG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gU2NoZWR1bGVyLm51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxuXG5tb2R1bGUgRWFnZXJfZGVmZXJyZWQgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfdW5pdCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIGYgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gdCBpblxuICAgICAgZiAoKSlcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdFxuICAgIHRoZW4gcmV0dXJuIChmIChEZWZlcnJlZC52YWx1ZV9leG4gdCkpXG4gICAgZWxzZSBEZWZlcnJlZC5tYXAgdCB+ZlxuICA7O1xuZW5kXG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBvbmVfc3RlcCAoKSA9XG4gICAgaWYgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFueV9maXJlZF9ldmVudHNfdG9fcnVuIHRcbiAgICB0aGVuIG5vdyB0LCBgY29udGludWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgICAgfCBOb25lIC0+IHRvXywgYGZpbmlzaFxuICAgICAgfCBTb21lIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCAtPlxuICAgICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICAgIHRoZW4gdG9fLCBgZmluaXNoXG4gICAgICAgIGVsc2UgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsLCBgY29udGludWUpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIGxldCBhZHZhbmNlX3RvLCBuZXh0ID0gb25lX3N0ZXAgKCkgaW5cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzphZHZhbmNlX3RvO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICBFYWdlcl9kZWZlcnJlZC5iaW5kX3VuaXQgKHJ1bl9xdWV1ZWRfYWxhcm1zICgpKSB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgYGZpbmlzaCAtPiByZXR1cm4gKClcbiAgICAgIHwgYGNvbnRpbnVlIC0+IHdhbGtfYWxhcm1zICgpKVxuICBpblxuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZF91bml0IHF1ZXVlZF9hbGFybXNfcmFuIH5mOndhbGtfYWxhcm1zKVxuICBpblxuICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zX2J5ID93YWl0X2ZvciB0IGJ5ID1cbiAgYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yIHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuOztcblxubGV0IHNwYW5fdG9fdGltZSB0IHNwYW4gPSBUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhblxuXG5sZXQgc2NoZWR1bGVfam9iIHQgfmF0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGxldCBhbGFybSA9XG4gICAgVGltaW5nX3doZWVsLmFkZFxuICAgICAgdC5ldmVudHNcbiAgICAgIH5hdFxuICAgICAgKEpvYl9vcl9ldmVudC5vZl9qb2IgKFNjaGVkdWxlci5jcmVhdGVfam9iIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSkpXG4gIGluXG4gIChtYXRjaCB0LnNjaGVkdWxlci5ldmVudF9hZGRlZF9ob29rIHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGYgLT4gZiBhdCk7XG4gIGFsYXJtXG47O1xuXG5sZXQgcnVuX2F0X2ludGVybmFsIHQgdGltZSBmIGEgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBpblxuICBpZiBUaW1lX25zLiggPiApIHRpbWUgKFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHMpXG4gIHRoZW4gc2NoZWR1bGVfam9iIHQgfmF0OnRpbWUgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGVsc2UgKFxuICAgIFNjaGVkdWxlci5lbnF1ZXVlIHQuc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICBBbGFybS5udWxsICgpKVxuOztcblxubGV0IHJ1bl9hdCB0IHRpbWUgZiBhID0gaWdub3JlIChydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA6IF8gQWxhcm0udClcbmxldCBydW5fYWZ0ZXIgdCBzcGFuIGYgYSA9IHJ1bl9hdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKSBmIGFcblxubGV0IGF0ID1cbiAgbGV0IGZpbGwgcmVzdWx0ID0gSXZhci5maWxsIHJlc3VsdCAoKSBpblxuICBmdW4gdCB0aW1lIC0+XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgICB0aGVuIHJldHVybiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZmlsbCByZXN1bHQgOiBfIEFsYXJtLnQpO1xuICAgICAgSXZhci5yZWFkIHJlc3VsdClcbjs7XG5cbmxldCBhZnRlciB0IHNwYW4gPSBhdCB0IChzcGFuX3RvX3RpbWUgdCBzcGFuKVxuXG5sZXQgcmVtb3ZlX2FsYXJtIHQgYWxhcm0gOiB1bml0ID1cbiAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIHQuZXZlbnRzIGFsYXJtIGluXG4gIChsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgIHwgSm9iLCBqb2IgLT4gU2NoZWR1bGVyLmZyZWVfam9iIHQuc2NoZWR1bGVyIGpvYlxuICAgfCBFdmVudCwgXyAtPlxuICAgICAoKiBUaGlzIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgW2FsYXJtXSBvbmx5IGV2ZXIgY29tZXMgZnJvbSBbRXZlbnQuYWxhcm1dIHdoaWNoIG9ubHlcbiAgICAgICAgZXZlciBnZXRzIHBvcHVsYXRlZCBieSBhIGNhbGwgdG8gW3NjaGVkdWxlX2pvYl0uICopXG4gICAgIGFzc2VydCBmYWxzZSk7XG4gIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgYWxhcm1cbjs7XG5cbmxldCByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIHQuZXZlbnRzIGFsYXJtIHRoZW4gcmVtb3ZlX2FsYXJtIHQgYWxhcm1cbjs7XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBtb2R1bGUgRmlyZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50XG4gICAgOyBtdXRhYmxlIGZpcmUgOiB1bml0IC0+IHVuaXRcbiAgICA7ICgqIEFzIGxvbmcgYXMgW0l2YXIuaXNfZW1wdHkgZmlyZWRdLCB3ZSBoYXZlIG5vdCB5ZXQgY29tbWl0dGVkIHRvIHdoZXRoZXIgdGhlIGV2ZW50XG4gICAgICAgICB3aWxsIGhhcHBlbiBvciBiZSBhYm9ydGVkLiAgV2hlbiBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHRoZSBhbGFybSBtYXkgb3IgbWF5IG5vdFxuICAgICAgICAgYmUgaW4gdGhlIHRpbWluZyB3aGVlbCAtLSBpZiBpdCBpc24ndCwgdGhlbiB0aGVyZSdzIGEgam9iIGluIEFzeW5jJ3Mgam9iIHF1ZXVlXG4gICAgICAgICB0aGF0IHdpbGwgZmlyZSB0aGUgZXZlbnQsIHVubGVzcyBpdCBpcyBhYm9ydGVkIGJlZm9yZSB0aGF0IGpvYiBjYW4gcnVuLiAqKVxuICAgICAgZmlyZWQgOiAoJ2EsICdoKSBGaXJlZC50IEl2YXIudFxuICAgIDsgKCogW251bV9maXJlc190b19za2lwXSBpcyB1c2VkIHRvIHJlc2NoZWR1bGUgZXZlbnRzIHRoYXQgaGF2ZSBmaXJlZCBhbmQgZW50ZXJlZCB0aGVcbiAgICAgICAgIEFzeW5jIGpvYiBxdWV1ZSwgYnV0IGhhdmUgbm90IHlldCBydW4uICBUaG9zZSBqb2JzIG9ubHkgcnVuIGlmIFtudW1fZmlyZXNfdG9fc2tpcFxuICAgICAgICAgPSAwXSwgYW5kIG90aGVyd2lzZSBqdXN0IGRlY3JlbWVudCBpdC4gIFNvLCB0byByZXNjaGVkdWxlIGFuIGV2ZW50IGluIHN1Y2ggYVxuICAgICAgICAgc3RhdGUsIHdlIGluY3JlbWVudCBbbnVtX2ZpcmVzX3RvX3NraXBdIGFuZCBhZGQgYSBuZXcgYWxhcm0gdG8gdGhlIHRpbWluZ1xuICAgICAgICAgd2hlZWwuICopXG4gICAgICBtdXRhYmxlIG51bV9maXJlc190b19za2lwIDogaW50XG4gICAgOyAoKiBbc2NoZWR1bGVkX2F0XSBpcyB0aGUgdGltZSBhdCB3aGljaCBbdF0gaGFzIG1vc3QgcmVjZW50bHkgYmVlbiBzY2hlZHVsZWQgdG8gZmlyZS5cbiAgICAgICAgIFdoaWxlIFt0LmFsYXJtXSBpcyBzdGlsbCBpbiB0aGUgdGltaW5nIHdoZWVsLCB0aGlzIGlzIHRoZSBzYW1lIGFzIFtBbGFybS5hdFxuICAgICAgICAgdC5hbGFybV0uICopXG4gICAgICBtdXRhYmxlIHNjaGVkdWxlZF9hdCA6IFRpbWVfbnMudFxuICAgIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZmlyZWQgdCA9IEl2YXIucmVhZCB0LmZpcmVkXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfaCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgZXZlbnRzID0gdC50aW1lX3NvdXJjZS5ldmVudHMgaW5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtOlxuICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuZmlyZWRcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAobm90IChUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybSkpXG4gICAgICAgICAgICAgZWxzZSBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyBhbGFybVxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChKb2Jfb3JfZXZlbnQuaXNfam9iIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKSkpXG4gICAgICAgIH5maXJlOmlnbm9yZVxuICAgICAgICB+ZmlyZWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkIDogXyBGaXJlZC50IEl2YXIudCkgLT5cbiAgICAgICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgZmlyZWQpIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gaW52YXJpYW50X2EgYVxuICAgICAgICAgICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gaW52YXJpYW50X2ggaCkpXG4gICAgICAgIH5udW1fZmlyZXNfdG9fc2tpcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fZmlyZXNfdG9fc2tpcCAtPiBhc3NlcnQgKG51bV9maXJlc190b19za2lwID49IDApKSlcbiAgICAgICAgfnNjaGVkdWxlZF9hdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzY2hlZHVsZWRfYXQgLT5cbiAgICAgICAgICAgICBpZiBUaW1pbmdfd2hlZWwubWVtIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgICAgICAgdGhlbiBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIHNjaGVkdWxlZF9hdCB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IGJvdGggY29tcGxldGVkIGFuZCB0aW1lZCBvdXRcIl0pXG4gICAgXVxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gICgqIEVhZ2VyIG1hcCB0byBwcm92aWRlIG1vcmUgYWNjdXJhdGUgdGltaW5ncyB3aGVuIFtmXSBpcyBzeW5jaHJvbm91cy4gKilcbiAgRWFnZXJfZGVmZXJyZWQubWFwIChmICgpKSB+ZjooZnVuIHJlc3VsdCAtPlxuICAgIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gICAgcmVzdWx0LCBkdXJhdGlvbilcbjs7XG5cbmxldCBvZl9zeW5jaHJvbm91cyB0ID0gdFxubGV0IHRvX3N5bmNocm9ub3VzIHQgPSB0XG5cbmxldCB0aW1pbmdfd2hlZWxfaGFzX2V2ZW50X2F0X29yX2JlZm9yZSB3aGVlbCB0aW1lID1cbiAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHdoZWVsXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbGV0IG5leHRfYWxhcm0gPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2hlZWwgaW5cbiAgICBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5LihuZXh0X2FsYXJtIDw9IHRpbWUpKVxuOztcblxubGV0IGFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IHQgfnRvXyA9XG4gIGxldCBpc19xdWVzY2VudCA9XG4gICAgKCogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBqdXN0IGEgZmFzdCBjYXNlIG9mIFthZHZhbmNlX2J5X2FsYXJtc10sXG4gICAgICAgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgY2FsbCB0byBbU2NoZWR1bGVyLnlpZWxkICgpXSBjYW4gYmUgZWxpZGVkLFxuICAgICAgIGhlbmNlIHRoZSBbY2FuX3J1bl9hX2pvYl0gY2hlY2suXG5cbiAgICAgICBXZSdyZSBub3QgY2hlY2tpbmcgZXBvbGwsIGFuZCB3ZSdyZSBub3QgY2hlY2tpbmcgdGhlIFtleHRlcm5hbF9qb2JzXS4gIFRoYXQgaXMgYW5cbiAgICAgICBvYnNlcnZhYmxlIGRpZmZlcmVuY2UsIGJ1dCBzaW5jZSBbYWR2YW5jZV9ieV9hbGFybXMgP3dhaXRfZm9yOk5vbmVdIGlzIGFscmVhZHlcbiAgICAgICBwcmV0dHkgYnJva2VuIHdoZW4gd2FpdGluZyBmb3IgZXh0ZXJuYWwgZXZlbnRzLCBpdCdzIG5vdCBnb2luZyB0byBiZSBtZWFuaW5nZnVsLlxuICAgICopXG4gICAgY2FuX3J1bl9hX2pvYiB0LnNjaGVkdWxlclxuICAgIHx8IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5oYXNfZXZlbnRzX3RvX3J1biB0XG4gICAgfHwgdGltaW5nX3doZWVsX2hhc19ldmVudF9hdF9vcl9iZWZvcmUgdC5ldmVudHMgdG9fXG4gIGluXG4gIGlmIGlzX3F1ZXNjZW50XG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgdHJ1ZSlcbjs7XG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5pbmNsdWRlIChTY2hlZHVsZXIgOiBtb2R1bGUgdHlwZSBvZiBTY2hlZHVsZXIgd2l0aCBtb2R1bGUgQnZhciA6PSBTY2hlZHVsZXIuQnZhcilcblxubGV0IHQgPSBTY2hlZHVsZXIudFxuXG5pbmNsdWRlIE1vbml0b3IuRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgZmluZF9sb2NhbCBrZXkgPSBFeGVjdXRpb25fY29udGV4dC5maW5kX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkga2V5XG5cbmxldCB3aXRoX2xvY2FsIGtleSB2YWx1ZSB+ZiA9XG4gIGxldCB0ID0gdCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LndpdGhfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkga2V5IHZhbHVlXG4gIGluXG4gIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCB+ZlxuOztcblxubGV0IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSAodCAoKSkubWFpbl9leGVjdXRpb25fY29udGV4dFxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IG51bV9wZW5kaW5nX2pvYnMgdCA+IDAgfHwgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZFxubGV0IGhhc191cGNvbWluZ19ldmVudCB0ID0gbm90IChUaW1pbmdfd2hlZWwuaXNfZW1wdHkgKGV2ZW50cyB0KSlcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCAoZXZlbnRzIHQpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudF9leG4gdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biAoZXZlbnRzIHQpXG5sZXQgZXZlbnRfcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIChldmVudHMgdClcbmxldCBjeWNsZV9zdGFydCB0ID0gdC5jeWNsZV9zdGFydFxuXG5sZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmYgPVxuICAoKiBVc2luZyBhbiBhcnJheSByYXRoZXIgdGhhbiBhIGxpc3QgZm9yIGNhY2hlIGVmZmljaWVuY3kuIFRoaXMgYW5kXG4gICAgIFtydW5fZXZlcnlfY3ljbGVfZW5kXSBzaG91bGQgb25seSBiZSBjYWxsZWQgZHVyaW5nIHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIHNvIHRoZVxuICAgICBhbGxvY2F0aW9uIGFuZCBnYXJiYWdlIGNyZWF0aW9uIHNob3VsZCBub3QgYmUgYW4gaXNzdWUuXG5cbiAgICAgTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBOIHRpbWVzIHRha2VzIE8oTl4yKSB0aW1lLCBidXQgdGhpcyBzaG91bGQgYmUgZmluZVxuICAgICBiZWNhdXNlIE4gaXMgc21hbGwuIFNhbWUgZm9yIFtydW5fZXZlcnlfY3ljbGVfZW5kXS4gKilcbiAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbjs7XG5cbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPVxuICB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5ydW5fZXZlcnlfY3ljbGVfZW5kXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2sgdCB+ZiA9XG4gIGxldCBoYW5kbGUgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS5jcmVhdGUgKCkgaW5cbiAgSGFzaHRibC5hZGRfZXhuIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFycmF5X3JlbW92ZV9maXJzdCBhcnIgfmYgPVxuICBtYXRjaCBBcnJheS5maW5kaSBhcnIgfmYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGlkeCwgXykgLT5cbiAgICBTb21lXG4gICAgICAoQXJyYXkuaW5pdFxuICAgICAgICAgKEFycmF5Lmxlbmd0aCBhcnIgLSAxKVxuICAgICAgICAgfmY6KGZ1biBpIC0+IGlmIGkgPCBpZHggdGhlbiBhcnIuKGkpIGVsc2UgYXJyLihpICsgMSkpKVxuOztcblxubGV0IHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayBhcnIgZiA9XG4gICgqIFJlbW92ZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiBbZl0gZnJvbSBbYXJyXS4gTW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBtYXkgYmUgcHJlc2VudCxcbiAgICAgYnV0IHJlbW92YWwgaXMgcmVmZXJlbmNlLWNvdW50ZWQgYnkgW3J1bl9ldmVyeV9jeWNsZV8oc3RhcnR8ZW5kKV9zdGF0ZV0gdGFibGVzLiAqKVxuICBtYXRjaCBhcnJheV9yZW1vdmVfZmlyc3QgfmY6KGZ1biBfIGcgLT4gcGh5c19lcXVhbCBmIGcpIGFyciB3aXRoXG4gIHwgU29tZSBhcnIgLT4gYXJyXG4gIHwgTm9uZSAtPlxuICAgICgqIFRoaXMgc2hvdWxkIGJlIHVucmVhY2hhYmxlLCBzZWUgdGhlIFtpbnZhcmlhbnRdIGluIFtzY2hlZHVsZXIxLm1sXS4gKilcbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJTY2hlZHVsZXIucmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGNhbGxlZCB3aXRoIGEgaG9vayB0aGF0IGlzbid0IHJlZ2lzdGVyZWRcIl1cbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gdCBoYW5kbGUgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBzdGFydCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPlxuICAgIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCBmXG47O1xuXG5sZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSBoYW5kbGUgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBmYWlsd2l0aCBcIkF0dGVtcHRlZCB0byByZW1vdmUgYSBjeWNsZSBlbmQgaG9vayB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQuXCJcbiAgfCBTb21lIGYgLT4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kIDwtIHJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgZlxuOztcblxubGV0IG1hcF9jeWNsZV90aW1lcyB0IH5mID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgKGYgdC5sYXN0X2N5Y2xlX3RpbWUpKSlcbjs7XG5cbmxldCBsb25nX2N5Y2xlcyB0IH5hdF9sZWFzdCA9XG4gIFN0cmVhbS5jcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY6KGZ1biAoKSAtPlxuICAgICAgaWYgVGltZV9ucy5TcGFuLiggPj0gKSB0Lmxhc3RfY3ljbGVfdGltZSBhdF9sZWFzdFxuICAgICAgdGhlbiBUYWlsLmV4dGVuZCB0YWlsIHQubGFzdF9jeWNsZV90aW1lKSlcbjs7XG5cbmxldCBjeWNsZV9udW1fam9icyB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+IFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX251bV9qb2JzKSlcbjs7XG5cbmxldCBjeWNsZV9jb3VudCB0ID0gdC5jeWNsZV9jb3VudFxuXG5sZXQgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgaW50ID1cbiAgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICA8LSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIGludFxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIHQgPVxuICBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5yYXcgdC5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuOztcblxubGV0IHNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IGYgPSB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIDwtIGZcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmV4dGVybmFsX2pvYnMgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpO1xuICB0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rICgpXG47O1xuXG5sZXQgc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCBmID0gdC5ldmVudF9hZGRlZF9ob29rIDwtIFNvbWUgZlxubGV0IHNldF9qb2JfcXVldWVkX2hvb2sgdCBmID0gdC5qb2JfcXVldWVkX2hvb2sgPC0gU29tZSBmXG5cbmxldCBjcmVhdGVfYWxhcm0gdCBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIEdjLkV4cGVydC5BbGFybS5jcmVhdGUgKGZ1biAoKSAtPlxuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyIHQgaGVhcF9ibG9jayBmID1cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIGxldCBmaW5hbGl6ZXIgaGVhcF9ibG9jayA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy5cblxuICAgICAgIEJ5IHB1dHRpbmcgW2hlYXBfYmxvY2tdIGluIFtleHRlcm5hbF9qb2JzXSwgd2UgYXJlIGtlZXBpbmcgaXQgYWxpdmUgdW50aWwgdGhlIG5leHRcbiAgICAgICB0aW1lIHRoZSBhc3luYyBzY2hlZHVsZXIgZ2V0cyBhcm91bmQgdG8gZGVxdWV1ZWluZyBpdC4gIENhbGxpbmdcbiAgICAgICBbdC50aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gZW5zdXJlcyB0aGF0IHdpbGwgaGFwcGVuIGluIHNob3J0IG9yZGVyLiAgVGh1cyxcbiAgICAgICB3ZSBhcmUgbm90IGRyYW1hdGljYWxseSBpbmNyZWFzaW5nIHRoZSBsaWZldGltZSBvZiBbaGVhcF9ibG9ja10sIHNpbmNlIHRoZSBPQ2FtbFxuICAgICAgIHJ1bnRpbWUgYWxyZWFkeSByZXN1cnJlY3RlZCBbaGVhcF9ibG9ja10gc28gdGhhdCB3ZSBjb3VsZCByZWZlciB0byBpdCBoZXJlLiAgVGhlXG4gICAgICAgT0NhbWwgcnVudGltZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGZpbmFsaXplciBmdW5jdGlvbiB3aGVuIGl0IG5vdGljZWQgW2hlYXBfYmxvY2tdXG4gICAgICAgY291bGQgYmUgZmluYWxpemVkLCBzbyB0aGVyZSBpcyBubyBpbmZpbml0ZSBsb29wIGluIHdoaWNoIHdlIGFyZSBjYXVzaW5nIHRoZVxuICAgICAgIGZpbmFsaXplciB0byBydW4gYWdhaW4uICBBbHNvLCBPQ2FtbCBkb2VzIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50IG9uIGZpbmFsaXplclxuICAgICAgIGZ1bmN0aW9ucyB0aGF0IHRoZXkgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBibG9jaywgc28gaXQncyBmaW5lIHRoYXQgd2Uga2VlcFxuICAgICAgIFtoZWFwX2Jsb2NrXSBhcm91bmQgdW50aWwgbGF0ZXIuICopXG4gICAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplclwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBoZWFwX2Jsb2NrXG4gIGluXG4gIGlmIERlYnVnLmZpbmFsaXplcnMgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiYWRkaW5nIGZpbmFsaXplclwiO1xuICAoKiBXZSB1c2UgW0NhbWwuR2MuZmluYWxpc2VdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gYmVjYXVzZSB0aGUgbGF0dGVyXG4gICAgIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlXSB0byBydW4gZmluYWxpemVycyBzeW5jaHJvbm91c2x5LiAqKVxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2VfbGFzdCBmaW5hbGl6ZXIgaGVhcF9ibG9jayB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgKCogW0hlYXBfYmxvY2tdIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgb25seSBmYWlsIGZvciBzdGF0aWMgZGF0YSwgaW4gd2hpY2ggY2FzZSB3ZVxuICAgICAgIGNhbiBkcm9wIHRoZSBmaW5hbGl6ZXIgc2luY2UgdGhlIGJsb2NrIHdpbGwgbmV2ZXIgYmUgY29sbGVjdGVkLiopXG4gICAgKClcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIHQgeCBmID0gYWRkX2ZpbmFsaXplcl9sYXN0IHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSBmXG5cbigqKiBbZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmRdIHNldHMgdGhlIG51bWJlciBvZiBub3JtYWwgam9icyBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzXG4gICAgY3ljbGUgdG8gemVyby4gIFRodXMsIGFmdGVyIHRoZSBjdXJyZW50bHkgcnVubmluZyBqb2IgY29tcGxldGVzLCB0aGUgc2NoZWR1bGVyIHdpbGxcbiAgICBzd2l0Y2ggdG8gbG93IHByaW9yaXR5IGpvYnMgYW5kIHRoZW4gZW5kIHRoZSBjdXJyZW50IGN5Y2xlLiAqKVxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kIHQgPVxuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgMFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+bm93ID1cbiAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmFkdmFuY2VfaW50ZXJuYWwgdC50aW1lX3NvdXJjZSB+dG9fOm5vdyB+c2VuZF9leG5cbjs7XG5cbmxldCBydW5fY3ljbGUgdCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwicnVuX2N5Y2xlIHN0YXJ0aW5nXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgdC5jeWNsZV9jb3VudCA8LSB0LmN5Y2xlX2NvdW50ICsgMTtcbiAgdC5jeWNsZV9zdGFydCA8LSBub3c7XG4gIHQuaW5fY3ljbGUgPC0gdHJ1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC55aWVsZCAoKTtcbiAgbGV0IG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSA9IG51bV9qb2JzX3J1biB0IGluXG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIEFycmF5Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfZW5kIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgdC5pbl9jeWNsZSA8LSBmYWxzZTtcbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIERlYnVnLmxvZ1xuICAgICAgXCJydW5fY3ljbGUgZmluaXNoZWRcIlxuICAgICAgKHVuY2F1Z2h0X2V4biB0LCBpc19zb21lIChuZXh0X3VwY29taW5nX2V2ZW50IHQpKVxuICAgICAgWyVzZXhwX29mOiBFcnJvci50IG9wdGlvbiAqIGJvb2xdXG47O1xuXG5sZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gc3RhcnRpbmdcIjtcbiAgbGV0IHQgPSB0ICgpIGluXG4gIGlmIGlzX2RlYWQgdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBjYW5ub3QgcHJvY2VlZCAtLSBzY2hlZHVsZXIgaXMgZGVhZFwiXG4gICAgICAgICAgfnNjaGVkdWxlcjoodCA6IHQpXTtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBydW5fY3ljbGUgdDtcbiAgICBhZHZhbmNlX2Nsb2NrIHQgfm5vdzooVGltZV9ucy5ub3cgKCkpO1xuICAgIGlmIGNhbl9ydW5fYV9qb2IgdCB0aGVuIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgKCogUmVzZXQgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHdoZW4gd2UncmUgbm90IGluXG4gICAgIGEgam9iLCBbY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IG1haW5fZXhlY3V0aW9uX2NvbnRleHRdLiAqKVxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0Lm1haW5fZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gZmluaXNoZWRcIjtcbiAgT3B0aW9uLml0ZXIgKHVuY2F1Z2h0X2V4biB0KSB+ZjpFcnJvci5yYWlzZVxuOztcblxubGV0IG1ha2VfYXN5bmNfdW51c2FibGUgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICB0LmNoZWNrX2FjY2Vzc1xuICA8LSBTb21lXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVzZXhwIFwiQXN5bmMgc2NoZWR1bGVyIGlzIHVudXNhYmxlIGR1ZSB0byBbbWFrZV9hc3luY191bnVzYWJsZV1cIl0pXG47O1xuXG5sZXQgcmVzZXRfaW5fZm9ya2VkX3Byb2Nlc3MgKCkgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJyZXNldF9pbl9mb3JrZWRfcHJvY2Vzc1wiO1xuICAoKiBUaGVyZSBpcyBubyBuZWVkIHRvIGVtcHR5IFttYWluX21vbml0b3JfaG9sZV0uICopXG4gIFNjaGVkdWxlci4odF9yZWYgOj0gY3JlYXRlICgpKVxuOztcblxubGV0IGNoZWNrX2ludmFyaWFudHMgdCA9IHQuY2hlY2tfaW52YXJpYW50c1xubGV0IHNldF9jaGVja19pbnZhcmlhbnRzIHQgYiA9IHQuY2hlY2tfaW52YXJpYW50cyA8LSBiXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIHQgYiA9IHQucmVjb3JkX2JhY2t0cmFjZXMgPC0gYlxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgdC55aWVsZFxuXG5sZXQgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPyhtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ID0gZmFsc2UpIHQgPVxuICBpZiBtYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICYmIG51bV9wZW5kaW5nX2pvYnMgdCA9IDBcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSBCdmFyLndhaXQgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpblxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTY2hlZHVsZXIueWllbGRfZXZlcnkgZ290IG5vbnBvc2l0aXZlIGNvdW50XCIgKG4gOiBpbnQpXVxuICBlbHNlIGlmIG4gPSAxXG4gIHRoZW4gc3RhZ2UgKGZ1biB0IC0+IHlpZWxkIHQpXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF91bnRpbF95aWVsZCA9IHJlZiBuIGluXG4gICAgc3RhZ2UgKGZ1biB0IC0+XG4gICAgICBkZWNyIGNvdW50X3VudGlsX3lpZWxkO1xuICAgICAgaWYgIWNvdW50X3VudGlsX3lpZWxkID4gMFxuICAgICAgdGhlbiByZXR1cm4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb3VudF91bnRpbF95aWVsZCA6PSBuO1xuICAgICAgICB5aWVsZCB0KSkpXG47O1xuXG5sZXQgdG90YWxfY3ljbGVfdGltZSB0ID1cbiAgKCogQWRqdXN0IGZvciB0aGUgZmFjdCB0aGUgY2FsbGVyJ3MgcHJvYmFibHkgYW4gQXN5bmMgam9iLiAqKVxuICBpZiB0LmluX2N5Y2xlXG4gIHRoZW4gKFxuICAgIGxldCB0aGlzX2N5Y2xlX3RpbWUgPSBUaW1lX25zLihkaWZmIChub3cgKCkpIHQuY3ljbGVfc3RhcnQpIGluXG4gICAgVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyB0aGlzX2N5Y2xlX3RpbWUpKVxuICBlbHNlIHQudG90YWxfY3ljbGVfdGltZVxuOztcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmsgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdvcmtlcl9yZXN1bHQgPSBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHRcblxuXG4gIGxldCByZWMgcnVuIHQgPSBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nOjFfMDAwXG5cbiAgYW5kIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPVxuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiB5aWVsZF90aGVuX3J1biB0XG4gICAgZWxzZSBpZiBub3QgKERlcXVlLmlzX2VtcHR5IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycylcbiAgICB0aGVuIChcbiAgICAgIGxldCB3b3JrZXIgPSBEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgaW5cbiAgICAgIHNldF9leGVjdXRpb25fY29udGV4dCB0IHdvcmtlci5leGVjdXRpb25fY29udGV4dDtcbiAgICAgIHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG5cbiAgYW5kIHlpZWxkX3RoZW5fcnVuIHQgPVxuICAgIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gRGVmZXJyZWQudXBvbiAoeWllbGQgdCkgKGZ1biAoKSAtPiBydW4gdClcblxuICBhbmQgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCB3b3JrZXIuZXhlY3V0aW9uX2NvbnRleHQpO1xuICAgIGlmIG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSAwXG4gICAgdGhlbiAoXG4gICAgICBEZXF1ZS5lbnF1ZXVlX2Zyb250IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyB3b3JrZXI7XG4gICAgICB5aWVsZF90aGVuX3J1biB0KVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgPSBudW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nIC0gMSBpblxuICAgICAgbWF0Y2ggd29ya2VyLmV4ZWMgKCkgd2l0aFxuICAgICAgfCBGaW5pc2hlZCAtPiBydW5fd29ya2VycyB0IH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IE5vdF9maW5pc2hlZCAtPiBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBidCk7XG4gICAgICAgIHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmcpXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgfmYgPVxuICAgIGxldCB0ID0gdCAoKSBpblxuICAgIGxldCBxdWV1ZSA9IHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgIGxldCBydW5uaW5nID0gbm90IChEZXF1ZS5pc19lbXB0eSBxdWV1ZSkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCkgfnByaW9yaXR5Okxvd1xuICAgIGluXG4gICAgRGVxdWUuZW5xdWV1ZV9iYWNrIHF1ZXVlIHsgZXhlY3V0aW9uX2NvbnRleHQ7IGV4ZWMgPSBmIH07XG4gICAgaWYgbm90IHJ1bm5pbmcgdGhlbiBlbnF1ZXVlIHQgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX2JlbmNoID0gc3RydWN0XG4gIGxldCBhZHZhbmNlX2Nsb2NrID0gYWR2YW5jZV9jbG9ja1xuZW5kXG5cbmxldCBpbl9jeWNsZSB0ID0gdC5pbl9jeWNsZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgQ291bnRpbmdfc2VtYXBob3JlIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIHJlbGVhc2Vfam9iX3Rva2VuIDogdCAtPiB1bml0XG4gIHZhbCBhYm9ydCA6IHQgLT4gdW5pdFxuICB2YWwgY3JlYXRlIDogbWF4X2NvbmN1cnJlbnRfam9iczppbnQgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIG1heF9jb25jdXJyZW50X2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgd2FpdGVyIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGFib3J0ZWQgOiBib29sXG4gICAgfVxuXG4gIGxldCB3YWl0X3RvX2FjcXVpcmVfam9iX3Rva2VuICh7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlcjsgYWJvcnRlZCB9IGFzIHQpID1cbiAgICBtYXRjaCBhYm9ydGVkIHdpdGhcbiAgICB8IHRydWUgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBpZiBtYXhfY29uY3VycmVudF9qb2JzID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHQubWF4X2NvbmN1cnJlbnRfam9icyA8LSBtYXhfY29uY3VycmVudF9qb2JzIC0gMTtcbiAgICAgICAgRGVmZXJyZWQucmV0dXJuICgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAoT3B0aW9uLmlzX25vbmUgd2FpdGVyKTtcbiAgICAgICAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgICB0LndhaXRlciA8LSBTb21lIGl2YXI7XG4gICAgICAgIEl2YXIucmVhZCBpdmFyKVxuICA7O1xuXG4gIGxldCByZWxlYXNlX2pvYl90b2tlbiAoeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXI7IGFib3J0ZWQgPSBfIH0gYXMgdCkgPVxuICAgIG1hdGNoIHdhaXRlciB3aXRoXG4gICAgfCBTb21lIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC53YWl0ZXIgPC0gTm9uZVxuICAgIHwgTm9uZSAtPiB0Lm1heF9jb25jdXJyZW50X2pvYnMgPC0gbWF4X2NvbmN1cnJlbnRfam9icyArIDFcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9XG4gICAgdC5hYm9ydGVkIDwtIHRydWU7XG4gICAgdC53YWl0ZXIgPC0gTm9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgIHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyID0gTm9uZTsgYWJvcnRlZCA9IGZhbHNlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgY29tcHV0ZSA6XG4gICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LnQgLT4gQ291bnRpbmdfc2VtYXBob3JlLnQgLT4gKCdhIERlZmVycmVkLnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cbiAgW0BAdW5ib3hlZF1cblxuICBsZXQgcmV0dXJuIHggPSB7IGNvbXB1dGUgPSAoZnVuIF8gXyBrIC0+IGsgKHJldHVybiB4KSkgfVxuXG4gIGxldCBtYXAgPVxuICAgIGBDdXN0b21cbiAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgeyBjb21wdXRlID1cbiAgICAgICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgICAgKGxldCVtYXAgcmVzdWx0ID0gZCBpblxuICAgICAgICAgICAgICAgICAgICAgZiByZXN1bHQpKSlcbiAgICAgICAgIH0pXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHRfZiB0ID1cbiAgICB7IGNvbXB1dGUgPVxuICAgICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICAgIHRfZi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGRmIC0+XG4gICAgICAgICAgICAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGR2IC0+XG4gICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgIChsZXQlYmluZCBmID0gZGYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgdiA9IGR2IGluXG4gICAgICAgICAgICAgICAgICBmIHYpKSkpXG4gICAgfVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChUKVxuXG5sZXQgZW5xdWV1ZScgc2NoZWR1bGVyIGN0eCBmID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgY3R4IChmdW4gKCkgLT4gdXBvbiAoZiAoKSkgKEl2YXIuZmlsbCBpdmFyKSkgKCk7XG4gIEl2YXIucmVhZCBpdmFyXG47O1xuXG5sZXQgam9iIGYgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgRGVmZXJyZWQudXBvbiAoQ291bnRpbmdfc2VtYXBob3JlLndhaXRfdG9fYWNxdWlyZV9qb2JfdG9rZW4gc2VtYXBob3JlKSAoZnVuICgpIC0+XG4gICAgICAgICAgIGtcbiAgICAgICAgICAgICAoZW5xdWV1ZScgKFNjaGVkdWxlci50ICgpKSBleGVjX2N0eCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgbGV0JW1hcCBhID0gZiAoKSBpblxuICAgICAgICAgICAgICAgIENvdW50aW5nX3NlbWFwaG9yZS5yZWxlYXNlX2pvYl90b2tlbiBzZW1hcGhvcmU7XG4gICAgICAgICAgICAgICAgYSkpKSlcbiAgfVxuOztcblxubGV0IHJ1biB0IH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IHNlbWFwaG9yZSA9IENvdW50aW5nX3NlbWFwaG9yZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgKCogVGhlIG5hbWUgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgdG8gcHJldmVudCBbTW9uaXRvci5zZW5kX2V4bl1cbiAgICAgZnJvbSBhcHBlbmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb25pdG9yIHRvIHRoZSBleGNlcHRpb25zIHdlIGZvcndhcmQuXG4gICAgIFRoaXMgbWF0dGVycyBiZWNhdXNlIHdlIHdhbnQgc2ltbGlhciBiZWhhdmlvciB0byBbVGhyb3R0bGVdIGFuZCBub3QgYnJlYWtcbiAgICAgZXhpc3RpbmcgdGVzdHMuICopXG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJcIiAoKSBpblxuICBsZXQgcGFyZW50X21vbml0b3IgPSBNb25pdG9yLmN1cnJlbnQgKCkgaW5cbiAgTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIG1vbml0b3IgfmY6KGZ1biBlcnIgLT5cbiAgICBDb3VudGluZ19zZW1hcGhvcmUuYWJvcnQgc2VtYXBob3JlO1xuICAgIE1vbml0b3Iuc2VuZF9leG4gcGFyZW50X21vbml0b3IgZXJyKTtcbiAgbGV0IGV4ZWNfY3R4ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZVxuICAgICAgfm1vbml0b3JcbiAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoU2NoZWR1bGVyLnQgKCkpKVxuICBpblxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biByIC0+IERlZmVycmVkLnVwb24gciAoSXZhci5maWxsIGl2YXIpKTtcbiAgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBvZl90aHVuayB0aHVuayA9XG4gIHsgY29tcHV0ZSA9XG4gICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICBsZXQgdCA9IHRodW5rICgpIGluXG4gICAgICAgICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIGspXG4gIH1cbjs7XG5cbmxldCAoICo+ICkgdDEgdDIgPVxuICB7IGNvbXB1dGUgPVxuICAgICAgKGZ1biBleGVjX2N0eCBzZW1hcGhvcmUgayAtPlxuICAgICAgICAgdDEuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgKGZ1biBkMSAtPlxuICAgICAgICAgICB0Mi5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQyIC0+XG4gICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgKGxldCViaW5kICgpID0gZDEgaW5cbiAgICAgICAgICAgICAgICBkMikpKSlcbiAgfVxuOztcblxubGV0IGJvdGhfdW5pdCA9ICggKj4gKVxuIiwib3BlbiEgQmFzZVxuXG50eXBlIF8gdCA9XG4gIHwgU3RhY2sgOiAnYSBTdGFjay50IC0+ICdhIHRcbiAgfCBDb3VudGVyIDogeyBtdXRhYmxlIGxlbmd0aCA6IGludCB9IC0+IHVuaXQgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG9mX2xpc3QgbGlzdCA9IFN0YWNrIChTdGFjay5vZl9saXN0IGxpc3QpXG5cbmxldCBjcmVhdGVfY291bnRlciB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIuY3JlYXRlX2NvdW50ZXJdIGdvdCBuZWdhdGl2ZSBsZW5ndGhcIiAobGVuZ3RoIDogaW50KV07XG4gIENvdW50ZXIgeyBsZW5ndGggfVxuOztcblxubGV0IGxlbmd0aCAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmxlbmd0aCBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoXG47O1xuXG5sZXQgY2xlYXIgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5jbGVhciBzXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIDBcbjs7XG5cbmxldCBwdXNoICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wdXNoIHMgYVxuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSByLmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3BfZXhuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucG9wX2V4biBzXG4gIHwgQ291bnRlciByIC0+XG4gICAgaWYgci5sZW5ndGggPSAwIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5wb3BfZXhuXSBvZiBlbXB0eSBzdGFja1wiXTtcbiAgICByLmxlbmd0aCA8LSByLmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpdGVyICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBhIC0+IHVuaXQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5pdGVyIHMgfmZcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBmb3IgXyA9IDEgdG8gci5sZW5ndGggZG9cbiAgICAgIGYgKClcbiAgICBkb25lXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG50eXBlICdhIG91dGNvbWUgPVxuICBbIGBPayBvZiAnYVxuICB8IGBBYm9ydGVkXG4gIHwgYFJhaXNlZCBvZiBleG5cbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIEludGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdiIERlZmVycmVkLnQpIC0+ICdhIHQgKiAnYiBvdXRjb21lIERlZmVycmVkLnRcblxuICAoKiBFdmVyeSBpbnRlcm5hbCBqb2Igd2lsbCBldmVudHVhbGx5IGJlIGVpdGhlciBbcnVuXSBvciBbYWJvcnRdZWQsIGJ1dCBub3QgYm90aC4gKilcblxuICB2YWwgcnVuIDogJ2EgdCAtPiAnYSAtPiBbIGBPayB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gIHZhbCBhYm9ydCA6IF8gdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogWyBgQWJvcnQgfCBgU3RhcnQgb2YgJ2EgXSBJdmFyLnRcbiAgICA7IG91dGNvbWUgOiBbIGBPayB8IGBBYm9ydGVkIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSB3b3JrID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2glYmluZCBJdmFyLnJlYWQgc3RhcnQgd2l0aFxuICAgICAgfCBgQWJvcnQgLT4gcmV0dXJuIGBBYm9ydGVkXG4gICAgICB8IGBTdGFydCBhIC0+XG4gICAgICAgIChtYXRjaCVtYXBcbiAgICAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyXG5cbmxldCBlbnF1ZXVlX2pvYiBleGVjdXRpb25fY29udGV4dCBmIGEgPSBlbnF1ZXVlICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcblxubGV0IHRocmVhZF9zYWZlX2VucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iICh0ICgpKSBleGVjdXRpb25fY29udGV4dCBmIGFcbjs7XG5cbmxldCBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSlcbmxldCBjeWNsZV9jb3VudCAoKSA9IGN5Y2xlX2NvdW50ICh0ICgpKVxubGV0IGN5Y2xlX3N0YXJ0X25zICgpID0gY3ljbGVfc3RhcnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnQgKCkgPSBUaW1lX25zLnRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCAoY3ljbGVfc3RhcnRfbnMgKCkpXG5sZXQgY3ljbGVfdGltZXNfbnMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOkZuLmlkXG5sZXQgY3ljbGVfdGltZXMgKCkgPSBtYXBfY3ljbGVfdGltZXMgKHQgKCkpIH5mOlRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RcbmxldCB0b3RhbF9jeWNsZV90aW1lICgpID0gdG90YWxfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsYXN0X2N5Y2xlX3RpbWUgKCkgPSBsYXN0X2N5Y2xlX3RpbWUgKHQgKCkpXG5sZXQgbG9uZ19jeWNsZXMgfmF0X2xlYXN0ID0gbG9uZ19jeWNsZXMgKHQgKCkpIH5hdF9sZWFzdFxubGV0IGV2ZW50X3ByZWNpc2lvbl9ucyAoKSA9IGV2ZW50X3ByZWNpc2lvbiAodCAoKSlcbmxldCBldmVudF9wcmVjaXNpb24gKCkgPSBUaW1lX25zLlNwYW4udG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IChldmVudF9wcmVjaXNpb25fbnMgKCkpXG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgaSA9XG4gIHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSkgaVxuOztcblxubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICgpID0gbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKHQgKCkpXG5sZXQgc2V0X3JlY29yZF9iYWNrdHJhY2VzIGJvb2wgPSBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgKHQgKCkpIGJvb2xcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCAoKSA9IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICh0ICgpKVxubGV0IHlpZWxkICgpID0geWllbGQgKHQgKCkpXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/bWF5X3JldHVybl9pbW1lZGlhdGVseSAoKSA9XG4gIHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICh0ICgpKVxuOztcblxubGV0IHlpZWxkX2V2ZXJ5IH5uID1cbiAgbGV0IHlpZWxkX2V2ZXJ5ID0gU3RhZ2VkLnVuc3RhZ2UgKHlpZWxkX2V2ZXJ5IH5uKSBpblxuICBsZXQgdCA9IHQgKCkgaW5cbiAgc3RhZ2UgKGZ1biAoKSAtPiB5aWVsZF9ldmVyeSB0KVxuOztcblxubGV0IG51bV9qb2JzX3J1biAoKSA9IG51bV9qb2JzX3J1biAodCAoKSlcbmxldCBudW1fcGVuZGluZ19qb2JzICgpID0gbnVtX3BlbmRpbmdfam9icyAodCAoKSlcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiA9IHJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW5cbiAgbGV0IGxhc3RfY3ljbGVfbnVtX2pvYnMgKCkgPSBsYXN0X2N5Y2xlX251bV9qb2JzICh0ICgpKVxuICBsZXQgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGYgPSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgKHQgKCkpIH5mXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfZW5kIGYgPSBydW5fZXZlcnlfY3ljbGVfZW5kICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2sgfmYgPSBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayAodCAoKSkgfmZcbiAgbGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayAodCAoKSkgfmZcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2tfZXhuICh0ICgpKSBoYW5kbGVcbiAgOztcblxuICBsZXQgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biBoYW5kbGUgPVxuICAgIHJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IGV4ZWN1dGlvbl9jb250ZXh0IGYgPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHggPVxuICAgIHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxICh0ICgpKSBleGVjdXRpb25fY29udGV4dCB+ZiB4XG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBTY2hlZHVsZXJcbiIsIigqKiBTY2hlZHVsZSBqb2JzIHRvIHJ1biBhdCBhIHRpbWUgaW4gdGhlIGZ1dHVyZS5cblxuICAgIFRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIHVzZXMgYSBoZWFwIG9mIGV2ZW50cywgb25lIGZvciBlYWNoIGpvYiB0aGF0IG5lZWRzIHRvXG4gICAgcnVuIGluIHRoZSBmdXR1cmUuICBUaGUgQXN5bmMgc2NoZWR1bGVyIGlzIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcgdXAgYXQgdGhlIHJpZ2h0IHRpbWVcbiAgICB0byBydW4gdGhlIGpvYnMuICopXG5cbm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgVGltZW91dFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICAoKiogW3J1bl9hdCB0aW1lIGYgYV0gcnVucyBbZiBhXSBhcyBzb29uIGFzIHBvc3NpYmxlIGFmdGVyIFt0aW1lXS4gIElmIFt0aW1lXSBpcyBpbiB0aGVcbiAgICAgIHBhc3QsIHRoZW4gW3J1bl9hdF0gd2lsbCBpbW1lZGlhdGVseSBzY2hlZHVsZSBhIGpvYiBbdF0gdGhhdCB3aWxsIHJ1biBbZiBhXS4gIEluIG5vXG4gICAgICBzaXR1YXRpb24gd2lsbCBbcnVuX2F0XSBhY3R1YWxseSBjYWxsIFtmXSBpdHNlbGYuICBUaGUgY2FsbCB0byBbZl0gd2lsbCBhbHdheXMgYmUgaW5cbiAgICAgIGFub3RoZXIgam9iLiAqKVxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFtydW5fYWZ0ZXJdIGlzIGxpa2UgW3J1bl9hdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW5cbiAgICAgIGFic29sdXRlIHRpbWUuICopXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqKiBbYXQgdGltZV0gcmV0dXJucyBhIGRlZmVycmVkIFtkXSB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYXMgc29vbiBhcyBwb3NzaWJsZVxuICAgICAgYWZ0ZXIgW3RpbWVdLiAqKVxuICB2YWwgYXQgOiBUaW1lLnQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFthZnRlcl0gaXMgbGlrZSBbYXRdLCBleGNlcHQgdGhhdCBvbmUgc3BlY2lmaWVzIGEgdGltZSBzcGFuIHJhdGhlciB0aGFuIGFuIGFic29sdXRlXG4gICAgICB0aW1lLiAqKVxuICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3dpdGhfdGltZW91dCBzcGFuIGRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgYWZ0ZXIgZWl0aGVyXG4gICAgICBbc3Bhbl0gZWxhcHNlcyBvciBbZF0gaXMgZGV0ZXJtaW5lZCwgcmV0dXJuaW5nIGVpdGhlciBbYFRpbWVvdXRdIG9yIFtgUmVzdWx0XVxuICAgICAgZGVwZW5kaW5nIG9uIHdoaWNoIG9uZSBzdWNjZWVkZWQgZmlyc3QuICBBdCB0aGUgdGltZSB0aGUgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZCwgYm90aCB0aGluZ3MgbWF5IGhhdmUgaGFwcGVuZWQsIGluIHdoaWNoIGNhc2UgW2BSZXN1bHRdIGlzIGdpdmVuXG4gICAgICBwcmVmZXJlbmNlLiAqKVxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuXG4gICgqKiBFdmVudHMgcHJvdmlkZSB2YXJpYW50cyBvZiBbcnVuX2F0XSBhbmQgW3J1bl9hZnRlcl0gd2l0aCB0aGUgYWJpbGl0eSB0byBhYm9ydCBvclxuICAgICAgcmVzY2hlZHVsZSBhbiBldmVudCB0aGF0IGhhc24ndCB5ZXQgaGFwcGVuZWQuICBPbmNlIGFuIGV2ZW50IGhhcHBlbnMgb3IgaXMgYWJvcnRlZCxcbiAgICAgIEFzeW5jIGRvZXNuJ3QgdXNlIGFueSBzcGFjZSBmb3IgdHJhY2tpbmcgaXQuICopXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgICgqKiBJZiBbc3RhdHVzXSByZXR1cm5zIFtTY2hlZHVsZWRfYXQgdGltZV0sIGl0IGlzIHBvc3NpYmxlIHRoYXQgW3RpbWUgPCBUaW1lLm5vdyAoKV1cbiAgICAgICAgaWYgQXN5bmMncyBzY2hlZHVsZXIgaGFzbid0IHlldCBnb3R0ZW4gdGhlIGNoYW5jZSB0byB1cGRhdGUgaXRzIGNsb2NrLCBlLmcuLCBkdWVcbiAgICAgICAgdG8gdXNlciBqb2JzIHJ1bm5pbmcuICopXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcblxuICAgICgqKiBMZXQgW3QgPSBydW5fYXQgdGltZSBmIHpdLiAgQXQgW3RpbWVdLCB0aGlzIHJ1bnMgW2Ygel0gYW5kIHRyYW5zaXRpb25zIFtzdGF0dXMgdF1cbiAgICAgICAgdG8gW0hhcHBlbmVkIGhdLCB3aGVyZSBbaF0gaXMgcmVzdWx0IG9mIFtmIHpdLlxuXG4gICAgICAgIE1vcmUgcHJlY2lzZWx5LCBhdCBbdGltZV0sIHByb3ZpZGVkIFthYm9ydCB0IGFdIGhhcyBub3QgcHJldmlvdXNseSBiZWVuIGNhbGxlZCxcbiAgICAgICAgdGhpcyB3aWxsIGNhbGwgW2Ygel0sIHdpdGggdGhlIGd1YXJhbnRlZSB0aGF0IFtzdGF0dXMgdCA9IFNjaGVkdWxlZF9hdCB0aW1lXS4gIElmXG4gICAgICAgIFtmIHpdIHJldHVybnMgW2hdIGFuZCBkaWQgbm90IGNhbGwgW2Fib3J0IHQgYV0sIHRoZW4gW3N0YXR1cyB0XSBiZWNvbWVzIFtIYXBwZW5lZFxuICAgICAgICBoXS4gIElmIFtmIHpdIGNhbGxzIFthYm9ydCB0IGFdLCB0aGVuIHRoZSByZXN1bHQgb2YgW2ZdIGlzIGlnbm9yZWQsIGFuZCBbc3RhdHVzIHRdXG4gICAgICAgIGlzIFtBYm9ydGVkIGFdLlxuXG4gICAgICAgIElmIFtmIHpdIHJhaXNlcywgdGhlbiBbc3RhdHVzIHRdIGRvZXMgbm90IHRyYW5zaXRpb24gYW5kIHJlbWFpbnMgW1NjaGVkdWxlZF9hdFxuICAgICAgICB0aW1lXSwgYW5kIHRoZSBleGNlcHRpb24gaXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbcnVuX2F0XSB3YXNcbiAgICAgICAgY2FsbGVkLiAqKVxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgKCoqIFthYm9ydCB0XSBjaGFuZ2VzIFtzdGF0dXMgdF0gdG8gW0Fib3J0ZWRdIGFuZCByZXR1cm5zIFtPa10sIHVubGVzcyBbdF1cbiAgICAgICAgcHJldmlvdXNseSBoYXBwZW5lZCBvciB3YXMgcHJldmlvdXNseSBhYm9ydGVkLiAqKVxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcblxuICAgICgqKiBbYWJvcnRfZXhuIHQgYV0gcmV0dXJucyBbdW5pdF0gaWYgW2Fib3J0IHQgYSA9IGBPa10sIGFuZCBvdGhlcndpc2UgcmFpc2VzLiAqKVxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcblxuICAgICgqKiBbYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEpXS4gKilcbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgKCoqIFtyZXNjaGVkdWxlX2F0IHRdIGFuZCBbcmVzY2hlZHVsZV9hZnRlciB0XSBjaGFuZ2UgdGhlIHRpbWUgdGhhdCBbdF0gd2lsbCBmaXJlLCBpZlxuICAgICAgICBwb3NzaWJsZSwgYW5kIGlmIG5vdCwgZ2l2ZSBhIHJlYXNvbiB3aHkuICBMaWtlIFtydW5fYXRdLCBpZiB0aGUgcmVxdWVzdGVkIHRpbWUgaXNcbiAgICAgICAgaW4gdGhlIHBhc3QsIHRoZSBldmVudCB3aWxsIGJlIHNjaGVkdWxlZCB0byBydW4gaW1tZWRpYXRlbHkuICBJZiBbcmVzY2hlZHVsZV9hdCB0XG4gICAgICAgIHRpbWUgPSBPa10sIHRoZW4gc3Vic2VxdWVudGx5IFtzY2hlZHVsZWRfYXQgdCA9IHRpbWVdLiAgKilcbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG5cbiAgICAoKiogW2F0IHRpbWVdICAgIGlzIFtydW5fYXQgICAgdGltZSBpZ25vcmUgKCldLlxuICAgICAgICBbYWZ0ZXIgdGltZV0gaXMgW3J1bl9hZnRlciB0aW1lIGlnbm9yZSAoKV0uXG5cbiAgICAgICAgWW91IHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSB0aGUgW3J1bl8qXSBmdW5jdGlvbnMsIHdoaWNoIGFsbG93IHlvdSB0b1xuICAgICAgICBzeW5jaHJvbm91c2x5IHVwZGF0ZSBzdGF0ZSB2aWEgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHdoZW4gdGhlIGV2ZW50XG4gICAgICAgIHRyYW5zaXRpb25zIHRvIFtIYXBwZW5lZF0uICBUaGF0IGlzLCB0aGVyZSBpcyBhbiBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBydW5fYXQgdGltZSBmICgpIF19XG5cbiAgICAgICAgYW5kOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBhdCB0aW1lIGluXG4gICAgICAgICAgZmlyZWQgdFxuICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gZiAoKVxuICAgICAgICAgIHwgQWJvcnRlZCAoKSAtPiAoKSBdfVxuXG4gICAgICAgIFdpdGggW3J1bl9hdF0sIGlmIFtzdGF0dXMgdCA9IEhhcHBlbmVkXSwgb25lIGtub3dzIHRoYXQgW2ZdIGhhcyBydW4uICBXaXRoIFthdF1cbiAgICAgICAgYW5kIFtmaXJlZF0sIG9uZSBkb2VzIG5vdCBrbm93IHdoZXRoZXIgW2ZdIGhhcyB5ZXQgcnVuOyBpdCBtYXkgc3RpbGwgYmUgc2NoZWR1bGVkXG4gICAgICAgIHRvIHJ1bi4gIFRodXMsIHdpdGggW2F0XSBhbmQgW2ZpcmVkXSwgaXQgaXMgZWFzeSB0byBpbnRyb2R1Y2UgYSByYWNlLiAgRm9yXG4gICAgICAgIGV4YW1wbGUsIGNvbnNpZGVyIHRoZXNlIHR3byBjb2RlIHNuaXBwZXRzOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5hZnRlciAoc2VjIDIuKSBpblxuICAgICAgICAgIHVwb24gKEV2ZW50LmZpcmVkIHQpIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpXG4gICAgICAgICAgICB8IEhhcHBlbmVkICgpIC0+IHByaW50ZiBcIlRpbWVyIGZpcmVkXCIpO1xuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIHtbXG4gICAgICAgICAgbGV0IHQgPSBFdmVudC5ydW5fYWZ0ZXIgKHNlYyAyLikgcHJpbnRmIFwiVGltZXIgZmlyZWRcIiBpblxuICAgICAgICAgIHVwb24gZGVmZXJyZWRfZXZlbnQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggRXZlbnQuYWJvcnQgdCAoKSB3aXRoXG4gICAgICAgICAgICB8IE9rIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkXCJcbiAgICAgICAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkICgpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+IHByaW50ZiBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIpOyBdfVxuXG4gICAgICAgIEluIGJvdGggc25pcHBldHMsIGlmIFtFdmVudC5hYm9ydF0gcmV0dXJucyBbT2tdLCBcIlRpbWVyIGZpcmVkXCIgaXMgbmV2ZXIgcHJpbnRlZC5cbiAgICAgICAgSG93ZXZlciwgdGhlIGZpcnN0IHNuaXBwZXQgbWlnaHQgcHJpbnQgXCJFdmVudCBvY2N1cnJlZCBhZnRlciB0aW1lciBmaXJlZFwiIGFuZCB0aGVuXG4gICAgICAgIFwiVGltZXIgZmlyZWRcIi4gIFRoaXMgY29uZnVzZWQgb3JkZXJpbmcgY2Fubm90IGhhcHBlbiB3aXRoIFtFdmVudC5ydW5fYWZ0ZXJdLiAqKVxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdFxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgZW5kXG5cbiAgKCoqIFthdF92YXJ5aW5nX2ludGVydmFscyBmID9zdG9wXSByZXR1cm5zIGEgc3RyZWFtIHdob3NlIG5leHQgZWxlbWVudCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgW2YgKCldIGFuZCB3YWl0aW5nIGZvciB0aGF0IGFtb3VudCBvZiB0aW1lLCBhbmQgdGhlbiBsb29waW5nXG4gICAgICB0byBkZXRlcm1pbmUgc3Vic2VxdWVudCBlbGVtZW50cy4gIFRoZSBzdHJlYW0gd2lsbCBlbmQgYWZ0ZXIgW3N0b3BdIGJlY29tZXNcbiAgICAgIGRldGVybWluZWQuICopXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2F0X2ludGVydmFscyBpbnRlcnZhbCA/c3RhcnQgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgZWxlbWVudHMgd2lsbCBiZWNvbWVcbiAgICAgIGRldGVybWluZWQgYXQgbm9ubmVnYXRpdmUgaW50ZWdlciBtdWx0aXBsZXMgb2YgW2ludGVydmFsXSBhZnRlciB0aGUgW3N0YXJ0XSB0aW1lLFxuICAgICAgdW50aWwgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZDpcblxuICAgICAge3ZcbiAgICAgICAgc3RhcnQgKyAwICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAxICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAyICogaW50ZXJ2YWxcbiAgICAgICAgc3RhcnQgKyAzICogaW50ZXJ2YWxcbiAgICAgICAgLi4uXG4gICAgICB2fVxuXG4gICAgICBOb3RlIHRoYXQgb25seSBlbGVtZW50cyB0aGF0IGFyZSBzdHJpY3RseSBpbiB0aGUgZnV0dXJlIGV2ZXIgYmVjb21lIGRldGVybWluZWQuXG4gICAgICBJbiBwYXJ0aWN1bGFyLCBpZiBbc3RhcnRdIGlzIG5vdCBpbiB0aGUgZnV0dXJlLCBvciBbc3RhcnRdIGlzIG5vdCBwcm92aWRlZCxcbiAgICAgIHRoZW4gdGhlcmUgd2lsbCBiZSBubyBlbGVtZW50IGJlZm9yZSB0aGUgW2ludGVydmFsXSBoYXMgcGFzc2VkLlxuXG4gICAgICBJZiB0aGUgaW50ZXJ2YWwgaXMgdG9vIHNtYWxsIG9yIHRoZSBDUFUgaXMgdG9vIGxvYWRlZCwgW2F0X2ludGVydmFsc10gd2lsbCBza2lwXG4gICAgICB1bnRpbCB0aGUgbmV4dCB1cGNvbWluZyBtdWx0aXBsZSBvZiBbaW50ZXJ2YWxdIGFmdGVyIFtzdGFydF0uICopXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG5cbiAgKCoqIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gcnVucyBbZiAoKV0gZXZlcnkgW3NwYW5dIGFtb3VudCBvZiB0aW1lIHN0YXJ0aW5nIHdoZW5cbiAgICAgIFtzdGFydF0gYmVjb21lcyBkZXRlcm1pbmVkIGFuZCBzdG9wcGluZyB3aGVuIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuICBbZXZlcnknXVxuICAgICAgd2FpdHMgdW50aWwgdGhlIG91dGNvbWUgb2YgW2YgKCldIGJlY29tZXMgZGV0ZXJtaW5lZCBiZWZvcmUgd2FpdGluZyBmb3IgdGhlIG5leHRcbiAgICAgIFtzcGFuXS5cblxuICAgICAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0IGlmIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQsIGV2ZW4gZHVyaW5nIGV2YWx1YXRpb24gb2YgW2ZdLFxuICAgICAgdGhlbiBbZl0gd2lsbCBub3QgYmUgY2FsbGVkIGFnYWluIGJ5IGEgc3Vic2VxdWVudCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuXG5cbiAgICAgIEl0IGlzIGFuIGVycm9yIGZvciBbc3Bhbl0gdG8gYmUgbm9ucG9zaXRpdmUuXG5cbiAgICAgIFtjb250aW51ZV9vbl9lcnJvcl0gY29udHJvbHMgd2hhdCBzaG91bGQgaGFwcGVuIGlmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlXSwgaXRlcmF0aW9uIG9ubHkgY29udGludWVzIGlmIFtmXSBzdWNjZXNzZnVsbHlcbiAgICAgIHJldHVybnMgYSBkZWZlcnJlZCBhbmQgdGhhdCBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuICAgICAgV2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLCBpdGVyYXRpb24gYWxzbyBjb250aW51ZXMgaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBJZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbiBhc3luY2hyb25vdXNseSwgdGhpcyBtYXkgY2F1c2UgdXMgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgICAgbmV4dCBpdGVyYXRpb24gd2hpbGUgdGhlIHByZXZpb3VzIGNhbGwgdG8gW2ZdIGlzIHN0aWxsIHJ1bm5pbmcuXG5cbiAgICAgIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBhcmUgYWx3YXlzIHNlbnQgdG8gdGhlIG1vbml0b3IgaW4gZWZmZWN0IHdoZW4gW2V2ZXJ5J10gd2FzXG4gICAgICBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLlxuXG4gICAgICBJZiBbZmluaXNoZWRdIGlzIHN1cHBsaWVkLCBbZXZlcnknXSB3aWxsIGZpbGwgaXQgb25jZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBiZWNvbWVcbiAgICAgIGRldGVybWluZWQ6IFtzdGFydF0sIFtzdG9wXSwgYW5kIHRoZSBvdXRjb21lIG9mIHRoZSBmaW5hbCBjYWxsIHRvIFtmXS4gKilcbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2V2ZXJ5ID9zdGFydCA/c3RvcCBzcGFuIGZdIGlzXG4gICAgICBbZXZlcnknID9zdGFydCA/c3RvcCBzcGFuIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKV0uICopXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFtydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmKCldIGF0IGluY3JlbWVudHMgb2YgW3N0YXJ0ICsgaSAqXG4gICAgICBzcGFuXSBmb3Igbm9ubmVnYXRpdmUgaW50ZWdlcnMgW2ldLCB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkLlxuICAgICAgSWYgdGhlIHJlc3VsdCBvZiBbZl0gaXMgbm90IGRldGVybWluZWQgZmFzdCBlbm91Z2ggdGhlbiB0aGUgbmV4dCBpbnRlcnZhbChzKVxuICAgICAgYXJlIHNraXBwZWQgc28gdGhhdCB0aGVyZSBhcmUgbmV2ZXIgbXVsdGlwbGUgY29uY3VycmVudCBpbnZvY2F0aW9ucyBvZiBbZl0gaW5cbiAgICAgIGZsaWdodC5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICBbcnVuX2F0X2ludGVydmFscyddIHdhcyBjYWxsZWQsIGV2ZW4gd2l0aCBbfmNvbnRpbnVlX29uX2Vycm9yOnRydWVdLiAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGZdIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIHtbXG4gICAgICAgIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhblxuICAgICAgICAgIChmdW4gKCkgLT4gZiAoKTsgcmV0dXJuICgpKSBdfSAqKVxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW2R1cmF0aW9uX29mIGZdIGludm9rZXMgW2YgKCldIGFuZCBtZWFzdXJlcyBob3cgbG9uZyBpdCB0YWtlcyBmcm9tIHRoZSBpbnZvY2F0aW9uXG4gICAgICB0byBhZnRlciB0aGUgZGVmZXJyZWQgaXMgZGV0ZXJtaW5lZC5cblxuICAgICAgTm90ZSB0aGF0IHRoZSBtZWFzdXJlbWVudCBpcyBub3QgZXhhY3Q7IGJlY2F1c2UgaXQgaW52b2x2ZXMgYW4gYWRkaXRpb25hbCBtYXAgb24gdGhlXG4gICAgICBkZWZlcnJlZCwgdGhlIHRpbWluZyBhbHNvIGluY2x1ZGVzIHRoZSBkdXJhdGlvbiBvZiBqb2JzIGluIHRoZSBqb2IgcXVldWUgd2hlbiBbZiAoKV1cbiAgICAgIGlzIGRldGVybWluZWQuICopXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG5lbmRcblxuKCoqIFtDbG9ja19kZXByZWNhdGVkXSBpcyB1c2VkIGluIFtSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXSB0byBjcmVhdGUgYSBjbG9ja1xuICAgIG1vZHVsZSBpbiB3aGljaCBhbGwgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkLiAqKVxubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IHNpZ1xuICBtb2R1bGUgT3JfdGltZW91dCA9IE9yX3RpbWVvdXRcblxuICBtb2R1bGUgVGltZSA6IHNpZ1xuICAgIG1vZHVsZSBTcGFuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICBlbmRcblxuICAgIHR5cGUgdFxuICBlbmRcblxuICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHdpdGhfdGltZW91dCA6IFRpbWUuU3Bhbi50IC0+ICdhIERlZmVycmVkLnQgLT4gJ2EgT3JfdGltZW91dC50IERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIG1vZHVsZSBFdmVudCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdF91bml0ID0gKHVuaXQsIHVuaXQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBJbnZhcmlhbnQudCAtPiAnYiBJbnZhcmlhbnQudCAtPiAoJ2EsICdiKSB0IEludmFyaWFudC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICAgIHwgQWJvcnRlZCBvZiAnYVxuICAgICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWUudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBzdGF0dXMgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIFN0YXR1cy50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5BYm9ydF9yZXN1bHRcblxuICAgIHZhbCBhYm9ydCA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gKCdhLCAnaCkgQWJvcnRfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfZXhuIDogKCdhLCAnaCkgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2lmX3Bvc3NpYmxlIDogKCdhLCBfKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgUmVzY2hlZHVsZV9yZXN1bHQgPSBUaW1lX3NvdXJjZS5FdmVudC5SZXNjaGVkdWxlX3Jlc3VsdFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYXQgOiAoJ2EsICdoKSB0IC0+IFRpbWUudCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYXQgOiBUaW1lLnQgLT4gKF8sIHVuaXQpIHQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gKF8sIHVuaXQpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG4gIGVuZFxuXG4gIHZhbCBhdF92YXJ5aW5nX2ludGVydmFsc1xuICAgIDogID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+ICh1bml0IC0+IFRpbWUuU3Bhbi50KVxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBhdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50XG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHNcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZHVyYXRpb25fb2YgOiAodW5pdCAtPiAnYSBEZWZlcnJlZC50KSAtPiAoJ2EgKiBUaW1lLlNwYW4udCkgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5lbmRcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTNcIl1cblxuICBtb2R1bGUgXyAoQyA6IENsb2NrKSA6IENsb2NrX2RlcHJlY2F0ZWQgPSBDXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9ja19kZXByZWNhdGVkKSA6IENsb2NrID0gQ1xuZW5kIDpcbnNpZyBlbmQpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQ2xvY2sgPSBDbG9ja19pbnRmLkNsb2NrXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gQ2xvY2tfaW50Zi5DbG9ja19kZXByZWNhdGVkXG5cbm1vZHVsZSBPcl90aW1lb3V0ID0gQ2xvY2tfaW50Zi5Pcl90aW1lb3V0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxuXG5sZXQgdGltZV9zb3VyY2UgKCkgPSAoU2NoZWR1bGVyLnQgKCkpLnRpbWVfc291cmNlIHw+IFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzXG5sZXQgYWZ0ZXIgc3BhbiA9IFRpbWVfc291cmNlLmFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxubGV0IGF0IHRpbWUgPSBUaW1lX3NvdXJjZS5hdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIGNvbXB1dGVfc3BhbiA9XG4gIFRpbWVfc291cmNlLmF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgY29tcHV0ZV9zcGFuXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCBpbnRlcnZhbCA9XG4gIFRpbWVfc291cmNlLmF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbFxuOztcblxubGV0IGV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBzcGFuIGZcbjs7XG5cbmxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxubGV0IHJ1bl9hdCB0aW1lIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiBhXG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIGludGVydmFsIGZcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzJ1xuICAgID9zdGFydFxuICAgID9zdG9wXG4gICAgP2NvbnRpbnVlX29uX2Vycm9yXG4gICAgKHRpbWVfc291cmNlICgpKVxuICAgIGludGVydmFsXG4gICAgZlxuOztcblxubGV0IHdpdGhfdGltZW91dCBzcGFuIGQgPSBUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgKHRpbWVfc291cmNlICgpKSBzcGFuIGRcbmxldCBkdXJhdGlvbl9vZiBmID0gVGltZV9zb3VyY2UuZHVyYXRpb25fb2YgKHRpbWVfc291cmNlICgpKSBmXG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfc291cmNlLkV2ZW50XG5cbiAgbGV0IGFmdGVyIHNwYW4gPSBhZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbiAgbGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IHJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG4gIGxldCBhdCB0aW1lID0gYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG4gIGxldCBydW5fYXQgdGltZSBmIHogPSBydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgelxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSBiID1cbiAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgICAgdGhlbiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIGVsc2UgZiBpIGIgdC4oaSkgPj4+IGZ1biBiIC0+IGxvb3AgKGkgKyAxKSBiXG4gICAgaW5cbiAgICBsb29wIDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBsZXQlbWFwIGJzID0gZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPiBmIGkgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgaW5cbiAgQXJyYXkub2ZfbGlzdCAoQ29yZS5MaXN0LnJldiBicylcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoQXJyYXkubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgUGFyYWxsZWwgYXMgaG93IC0+XG4gICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBqb2JfY291bnQgLT5cbiAgICBsZXQgcmVjIGdlbl9jb21wdXRhdGlvbiBpZHggPSBmdW5jdGlvblxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgIFRocm90dGxlZC5vZl90aHVuayAoZnVuICgpIC0+XG4gICAgICAgICAgVGhyb3R0bGVkLmJvdGhfdW5pdFxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKSlcbiAgICAgIHwgW10gLT4gVGhyb3R0bGVkLnJldHVybiAoKVxuICAgIGluXG4gICAgVGhyb3R0bGVkLnJ1biAoZ2VuX2NvbXB1dGF0aW9uIDAgdCkgfm1heF9jb25jdXJyZW50X2pvYnM6am9iX2NvdW50XG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFBhcmFsbGVsIGFzIGhvdyAtPlxuICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIGpvYl9jb3VudCAtPlxuICAgIGxldCByZWMgZ2VuX2NvbXB1dGF0aW9uIGlkeCA9IGZ1bmN0aW9uXG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgVGhyb3R0bGVkLm9mX3RodW5rIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJvdHRsZWQubWFwMlxuICAgICAgICAgICAgKFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIGlkeCB4KSlcbiAgICAgICAgICAgIChnZW5fY29tcHV0YXRpb24gKGlkeCArIDEpIHhzKVxuICAgICAgICAgICAgfmY6KGZ1biB5IHlzIC0+IHkgOjogeXMpKVxuICAgICAgfCBbXSAtPiBUaHJvdHRsZWQucmV0dXJuIFtdXG4gICAgaW5cbiAgICBUaHJvdHRsZWQucnVuIChnZW5fY29tcHV0YXRpb24gMCB0KSB+bWF4X2NvbmN1cnJlbnRfam9iczpqb2JfY291bnRcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxubW9kdWxlIFRocm90dGxlZF9tYXAgPSBNYXAuTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChUaHJvdHRsZWQpXG5cbnR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxubGV0IGNoYW5nZSB0IGsgfmYgPVxuICBsZXQlbWFwIG9wdCA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLmNoYW5nZSB0IGsgfmY6KGZ1biBfIC0+IG9wdClcbjs7XG5cbmxldCB1cGRhdGUgdCBrIH5mID1cbiAgbGV0JW1hcCBkYXRhID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuc2V0IHQgfmtleTprIH5kYXRhXG47O1xuXG5sZXQgaXRlcl9rZXlzIH5ob3cgdCB+ZiA9IExpc3QuaXRlciB+aG93IChNYXAua2V5cyB0KSB+ZlxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC5kYXRhIHQpIH5mXG5sZXQgaXRlcmkgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC50b19hbGlzdCB0KSB+ZjooZnVuIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSlcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9pbmNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5fZGVjcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHsga2V5IDogJ2FcbiAgICA7IGRhdGEgOiAnYlxuICAgIDsgbXV0YWJsZSByZXN1bHQgOiAnYyBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cbmVuZFxuXG5sZXQgZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciB0IGluXG4gIGxldCBzZXF1ZW5jZSA9IE1hcC50b19zZXF1ZW5jZSB+b3JkZXI6YEluY3JlYXNpbmdfa2V5IHQgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OkJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmVtcHR5XG4gICAgICB+ZjooZnVuIHMgKGtleSwgZGF0YSkgfmsgLT5cbiAgICAgICAgdXBvbiAoZiB+a2V5IH5kYXRhKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gayBzXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuYWRkX2V4blxuICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgICAgIH5rZXlcbiAgICAgICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGsgcykpXG4gICAgICB+ZmluaXNoOihmdW4geCAtPlxuICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIChCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy50b190cmVlIHgpKSkpXG47O1xuXG5sZXQgZmlsdGVyX21hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBjb21wdXRhdGlvbiA9XG4gICAgVGhyb3R0bGVkX21hcC5maWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgfmtleSB+ZGF0YSkpXG4gIGluXG4gIFRocm90dGxlZC5ydW4gY29tcHV0YXRpb24gfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBmaWx0ZXJfbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzXG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IGpvYnMgPSByZWYgW10gaW5cbiAgICBsZXQgam9iX21hcCA9XG4gICAgICBNYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBsZXQgam9iID0geyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBOb25lIH0gaW5cbiAgICAgICAgam9icyA6PSBqb2IgOjogIWpvYnM7XG4gICAgICAgIGpvYilcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPVxuICAgICAgTGlzdC5pdGVyIH5ob3cgKEJhc2UuTGlzdC5yZXYgIWpvYnMpIH5mOihmdW5jdGlvblxuICAgICAgICB8IHsgSm9iLmtleTsgZGF0YTsgcmVzdWx0ID0gXyB9IGFzIGpvYiAtPlxuICAgICAgICAgIGxldCVtYXAgeCA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgIGpvYi5yZXN1bHQgPC0geClcbiAgICBpblxuICAgIE1hcC5maWx0ZXJfbWFwIGpvYl9tYXAgfmY6Sm9iLnJlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IGZpbHRlcl9rZXlzIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGtleSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQlbWFwIGIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBkYXRhIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgY29tcHV0YXRpb24gPVxuICAgIFRocm90dGxlZF9tYXAubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiB+a2V5IH5kYXRhKSlcbiAgaW5cbiAgVGhyb3R0bGVkLnJ1biBjb21wdXRhdGlvbiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgU2VxdWVudGlhbCB8IGBQYXJhbGxlbCAtPlxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgU29tZSB6KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBtYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnNcbjs7XG5cbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgfmhvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICB+aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWQgfmhvdzpgU2VxdWVudGlhbFxuIiwib3BlbiEgQ29yZVxub3BlbiEgRGVmZXJyZWRfc3RkXG5pbmNsdWRlIERlZmVycmVkX21lbW9faW50ZlxuXG5tb2R1bGUgTWFrZSAoTSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0ID0gJ2EgRGVmZXJyZWQxLnQpIDpcbiAgUyB3aXRoIHR5cGUgJ2EgZGVmZXJyZWQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIG9wZW4hIE1cblxuICBsZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiBFeG4ucmVyYWlzZSBleG4gXCJjYXVnaHQgZXhjZXB0aW9uIGluIG1lbW9pemVkIGZ1bmN0aW9uXCJcbiAgOztcblxuICBsZXQgZ2VuZXJhbCcgKHR5cGUgYSkgfnJ1biAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZiA9XG4gICAgbGV0IG1vZHVsZSBIYXNoYWJsZSA9ICh2YWwgaGFzaGFibGUpIGluXG4gICAgbGV0IGYgPVxuICAgICAgTWVtby5nZW5lcmFsIH5oYXNoYWJsZTpIYXNoYWJsZS5oYXNoYWJsZSAoZnVuIGEgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIGEpKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG4gIDs7XG5cbiAgbGV0IGdlbmVyYWwgaGFzaGFibGUgZiA9IGdlbmVyYWwnIH5ydW46YE5vdyBoYXNoYWJsZSBmXG5cbiAgbGV0IHJlY3Vyc2l2ZSAodHlwZSBhKSAoaGFzaGFibGUgOiAobW9kdWxlIEhhc2hhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBhKSkgZl9vbmVzdGVwID1cbiAgICBsZXQgcmVjIG1lbW9pemVkID1cbiAgICAgIGxhenlcbiAgICAgICAgKGdlbmVyYWwnXG4gICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgIGhhc2hhYmxlXG4gICAgICAgICAgIChmX29uZXN0ZXAgKGZ1biB4IC0+ICh1bnN0YWdlIChmb3JjZSBtZW1vaXplZCkpIHgpKSlcbiAgICBpblxuICAgIGZvcmNlIG1lbW9pemVkXG4gIDs7XG5cbiAgbGV0IHVuaXQgZiA9XG4gICAgbGV0IGYgPVxuICAgICAgTWVtby51bml0IChmdW4gKCkgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgICBmKVxuICAgIGluXG4gICAgU3RhZ2VkLnN0YWdlIChmdW4gKCkgLT4gZiAoKSA+PnwgcmVyYWlzZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1ha2UgKERlZmVycmVkMSlcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIE9wdGlvbi50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCByZXR1cm4gYSA9IERlZmVycmVkLnJldHVybiAoU29tZSBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSBhIC0+IGYgYVxuICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQucmV0dXJuIE5vbmUpXG4gICAgOztcblxuICAgIGxldCBtYXAgdCB+ZiA9IERlZmVycmVkLm1hcCB0IH5mOihmdW4gciAtPiBPcHRpb24ubWFwIHIgfmYpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBNb25pdG9yID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmVuZFxuXG4oKiBDb3BpZWQgdG8gW2VhZ2VyX2RlZmVycmVkX29yX2Vycm9yLm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbmluY2x1ZGUgKERlZmVycmVkX3Jlc3VsdCA6IE1vbmFkLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIERlZmVycmVkX3Jlc3VsdC50KVxuXG50eXBlICdhIHQgPSAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICBEZWZlcnJlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICBmXG4gICAgICAgIHhcbiAgICAgICAgfm9rOihmdW4gZiB4IC0+IGYgeClcbiAgICAgICAgfmVycjooZnVuIGUxIGUyIC0+IEVycm9yLm9mX2xpc3QgWyBlMTsgZTIgXSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG5cbiAgICAoKiBmcm9tIEFwcGxpY2F0aXZlLk1ha2UgKilcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgZmFpbCBlcnJvciA9IERlZmVycmVkLnJldHVybiAoUmVzdWx0LmZhaWwgZXJyb3IpXG5sZXQgb2tfZXhuIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjpPcl9lcnJvci5va19leG5cbmxldCBvZl9leG4gP2JhY2t0cmFjZSBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgdCA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci5vZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UpXG5sZXQgZXJyb3IgbXNnIHYgc2V4cF9vZiA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3IgbXNnIHYgc2V4cF9vZilcbmxldCBlcnJvcl9zIHNleHAgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3Mgc2V4cClcbmxldCBlcnJvcl9zdHJpbmcgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgbXNnKVxubGV0IGVycm9yZiBmb3JtYXQgPSBrc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWcgfnRhZylcbmxldCB0YWdfcyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIERlZmVycmVkLm1hcCB0IH5mOihmdW4gdCAtPiBPcl9lcnJvci50YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCB1bmltcGxlbWVudGVkIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IudW5pbXBsZW1lbnRlZCBtc2cpXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG5sZXQgY29tYmluZV9lcnJvcnNfdW5pdCBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuZmlsdGVyX29rX2F0X2xlYXN0X29uZVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKGwsIFtdKSAoZnVuIChsLCBlcnJvcnMpIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IGVycm9ycyA9IEVycm9yLm9mX2xpc3QgKExpc3QucmV2IGVycm9ycykgaW5cbiAgICAgIERlZmVycmVkLnJldHVybiAoYEZpbmlzaGVkIChFcnJvciBlcnJvcnMpKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIERlZmVycmVkLm1hcCAoZiBoZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgY3VycmVudF9lcnJvciAtPiBgUmVwZWF0ICh0bCwgY3VycmVudF9lcnJvciA6OiBlcnJvcnMpXG4gICAgICAgIHwgT2sgcmVzdWx0IC0+IGBGaW5pc2hlZCAoT2sgcmVzdWx0KSkpXG47O1xuXG5sZXQgb2tfdW5pdCA9IHJldHVybiAoKVxuXG5sZXQgdHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAoTW9uaXRvci50cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjooZnVuY3Rpb25cbiAgICB8IEVycm9yIGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bilcbiAgICB8IE9rIF8gYXMgb2sgLT4gb2spXG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbiA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwICh0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmKSB+ZjpPcl9lcnJvci5qb2luXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgZm9sZGkgbGlzdCB+aW5pdDphY2MgfmYgPVxuICAgIGxldCByZWMgbG9vcCBpIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiBhY2NcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0JWJpbmQgYWNjID0gZiBpIGFjYyBoZCBpblxuICAgICAgICBsb29wIChpICsgMSkgYWNjIHRsXG4gICAgaW5cbiAgICBsb29wIDAgYWNjIGxpc3RcbiAgOztcblxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG4gIGxldCBzZXFtYXBpIHQgfmYgPVxuICAgIGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgICBiIDo6IGJzKVxuICAgID4+fCBMaXN0LnJldlxuICA7O1xuXG4gIGxldCBhbGwgPSBhbGxcbiAgbGV0IGFsbF91bml0ID0gYWxsX3VuaXRcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSB+aG93IHQgfmYgPSBMaXN0Lml0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgfmhvdyB0IH5mID0gTGlzdC5tYXAgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgfmhvdyB0IH5mID0gTGlzdC5tYXBpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0IH5ob3cgbiB+ZiA9IExpc3QuaW5pdCB+aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXIgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSB+aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCB+aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gSXZhci5maWxsIHJlc3VsdCBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+IHVwb24gKG1hcGlfZiBpIGEpIChmdW4gYiAtPiBsb29wIChpICsgMSkgdCAoZm9sZF9mIGMgYikpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0O1xuICAgIEl2YXIucmVhZCByZXN1bHRcbiAgfCBgUGFyYWxsZWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBtYXBpX2YgaSBhIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+XG4gICAgbGV0IHRocm90dGxlID0gVGhyb3R0bGUuY3JlYXRlIH5tYXhfY29uY3VycmVudF9qb2JzIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSBpblxuICAgICgqIFtsb29wXSBmb3JjZXMgdGhlIGlucHV0IHNlcXVlbmNlIGFuZCBlbnF1ZXVlcyBhIHRocm90dGxlIGpvYiBvbmx5IGlmIHRoZXJlIGlzXG4gICAgICAgY2FwYWNpdHkgYXZhaWxhYmxlLiAqKVxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIGxldCViaW5kICgpID0gVGhyb3R0bGUuY2FwYWNpdHlfYXZhaWxhYmxlIHRocm90dGxlIGluXG4gICAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpICsgMSlcbiAgICAgICAgICB0XG4gICAgICAgICAgKGxldCViaW5kIGIgPSBUaHJvdHRsZS5lbnF1ZXVlIHRocm90dGxlIChmdW4gKCkgLT4gbWFwaV9mIGkgYSkgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICB0XG4gICAgfmluaXQ6KDAsIGluaXQpXG4gICAgfmY6KGZ1biAoaSwgYikgYSB+ayAtPlxuICAgICAgbGV0JWJpbmQgYiA9IGYgaSBiIGEgaW5cbiAgICAgIGsgKGkgKyAxLCBiKSlcbiAgICB+ZmluaXNoOihmdW4gKF8sIGIpIC0+IHJldHVybiBiKVxuOztcblxuKCogW2ZvbGRdIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBbZm9sZGldIHRvIHNhdmUgdGhlIGludGVybWVkaWF0ZSBjbG9zdXJlXG4gICBhbGxvY2F0aW9uLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZCB0IH5pbml0IH5mOihmdW4gYiBhIH5rIC0+IGYgYiBhID4+PSBrKSB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGFsbCB0ID1cbiAgbGV0JW1hcCByZXMgPVxuICAgIGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjY3VtIGQgLT5cbiAgICAgIGxldCVtYXAgYSA9IGQgaW5cbiAgICAgIGEgOjogYWNjdW0pXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHJlcylcbjs7XG5cbmxldCBhbGxfdW5pdCB0ID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiB2KVxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJldHVybiBOb25lXG4gICAgfCBTb21lICh2LCByZXN0KSAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIHYgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgcmVzdCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyaSB+aG93IHQgfmYgOiB1bml0IERlZmVycmVkLnQgPVxuICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6ZiB+aW5pdDooKSB+Zm9sZF9mOihmdW4gKCkgKCkgLT4gKCkpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGkgfmhvdyB0IH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpIH5pbml0OltdIH5mb2xkX2Y6KGZ1biBicyBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxuKCogW2ZpbHRlcl9tYXBpXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbZm9sZF9tYXBpXSByYXRoZXIgdGhhbiBbbWFwXSBzbyB0aGF0IHdlIG5ldmVyIG5lZWRcbiAgIHRvIGtlZXAgYSBsb25nIHN0cmVhbSBvZiBpbnRlcm1lZGlhdGUgW05vbmVdIHJlc3VsdHMgaW4gdGhlIGFjY3VtdWxhdG9yLCBvbmx5IHRvIGxhdGVyXG4gICBmaWx0ZXIgdGhlbSBhbGwgb3V0LiAqKVxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaVxuICAgICAgdFxuICAgICAgfmhvd1xuICAgICAgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSlcbiAgICAgIH5pbml0OltdXG4gICAgICB+Zm9sZF9mOihmdW4gYnMgbWF5YmVfdiAtPlxuICAgICAgICBtYXRjaCBtYXliZV92IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGJzXG4gICAgICAgIHwgU29tZSBiIC0+IGIgOjogYnMpXG4gIGluXG4gIFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IGJzKVxuOztcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mID4+fCBTZXF1ZW5jZS5jb25jYXRcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2glbWFwIGYgaSBhIHdpdGhcbiAgICB8IHRydWUgLT4gU29tZSBhXG4gICAgfCBmYWxzZSAtPiBOb25lKVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChTZXF1ZW5jZS5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdFxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgRGF0ZSA9IERhdGVcblxubGV0IGFmdGVyID0gQ2xvY2tfbnMuYWZ0ZXJcbmxldCBhdCA9IENsb2NrX25zLmF0XG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cblxubGV0IHNob3dfZGVidWdfbWVzc2FnZXMgPSByZWYgZmFsc2VcbmxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgZmFsc2VcblxubW9kdWxlIEZsdXNoZWRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgT2tcbiAgICB8IGBSZWFkZXJfY2xvc2VkXG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cblxuICBsZXQgY29tYmluZSAobCA6IHQgRGVmZXJyZWQudCBsaXN0KSA9XG4gICAgbGV0JW1hcCBsID0gRGVmZXJyZWQuYWxsIGwgaW5cbiAgICBtYXRjaCBMaXN0Lm1lbSBsIGBSZWFkZXJfY2xvc2VkIH5lcXVhbCB3aXRoXG4gICAgfCB0cnVlIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgfCBmYWxzZSAtPiBgT2tcbiAgOztcbmVuZFxuXG4oKiBBIFtDb25zdW1lci50XSBhY3RzIGFzIHRoZSBtb25pdG9yIG9mIHNvbWUgcHJvY2VzcyB0aGF0IHJlYWRzIHZhbHVlcyBmcm9tIGEgcGlwZSBhbmRcbiAgIHByb2Nlc3NlcyB0aGVtLCBhbGxvd2luZyB0aGF0IHByb2Nlc3M6XG4gICAtIHRvIGNvbW11bmljYXRlIHRoYXQgaXQgaGFzIHRha2VuIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgdmFsdWVzXG4gICAtIHRvIHNpZ25hbCB3aGVuIGl0IGhhcyBmaW5pc2hlZCB3aXRoIHRoZSB2YWx1ZXMgdG8gaW50ZXJlc3RlZCBwYXJ0aWVzICh2aWFcbiAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0pXG5cbiAgIEl0IGlzIHVzZWQgaW4gdHdvIHN0ZXBzOlxuXG4gICAxLiBjYWxsaW5nIFtDb25zdW1lci5zdGFydF0gYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBjb25zdW1lciB0YWtlcyB2YWx1ZXMgb3V0IG9mIHRoZVxuICAgUGlwZSB2aWEgW3JlYWRdIG9yIFtyZWFkJ10uXG5cbiAgIDIuIGNhbGxpbmcgW0NvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1dLlxuXG4gICBCeSBjYWxsaW5nIFt2YWx1ZXNfc2VudF9kb3duc3RyZWFtXSBvbmUgYXNzZXJ0cyB0aGF0IHRoZSBbZG93bnN0cmVhbV9mbHVzaGVkXSBmdW5jdGlvblxuICAgc3VwcGxpZWQgdG8gW2NyZWF0ZV0gd2lsbCBub3cgd2FpdCBmb3IgdGhpcyB2YWx1ZS5cblxuICAgSWYgbm8gW0NvbnN1bWVyLnRdIGlzIHN1cHBsaWVkIHdoZW4gYSB2YWx1ZSBpcyByZWFkIHRoZW4gdGhlIHZhbHVlIGlzIGRlZmluZWQgdG8gYmVcbiAgIGZsdXNoZWQgYXQgdGhhdCB0aW1lLiAqKVxubW9kdWxlIENvbnN1bWVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBwaXBlX2lkOmludFxuICAgIC0+IGRvd25zdHJlYW1fZmx1c2hlZDoodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpXG4gICAgLT4gdFxuXG4gIHZhbCBwaXBlX2lkIDogdCAtPiBpbnRcbiAgdmFsIHN0YXJ0IDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIDogdCAtPiB1bml0XG4gIHZhbCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIDogdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgcGlwZV9pZCA6IGludFxuICAgIDsgKCogW3ZhbHVlc19yZWFkXSByZWZsZWN0cyB3aGV0aGVyIHZhbHVlcyB0aGUgY29uc3VtZXIgaGFzIHJlYWQgZnJvbSB0aGUgcGlwZSBoYXZlIGJlZW5cbiAgICAgICAgIHNlbnQgZG93bnN0cmVhbSBvciBpZiBub3QsIGhvbGRzIGFuIGl2YXIgdGhhdCBpcyB0byBiZSBmaWxsZWQgd2hlbiB0aGV5IGFyZS4gKilcbiAgICAgIG11dGFibGVcbiAgICAgICAgdmFsdWVzX3JlYWQgOlxuICAgICAgICBbIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIG9mIHVuaXQgSXZhci50IF1cbiAgICA7ICgqIFtkb3duc3RyZWFtX2ZsdXNoZWQgKCldIHJldHVybnMgd2hlbiBhbGwgcHJpb3IgdmFsdWVzIHRoYXQgdGhlIGNvbnN1bWVyIGhhc1xuICAgICAgICAgcGFzc2VkIGRvd25zdHJlYW0gaGF2ZSBiZWVuIGZsdXNoZWQgYWxsIHRoZSB3YXkgZG93biB0aGUgY2hhaW4gb2YgcGlwZXMuICopXG4gICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgOiB1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5waXBlX2lkOmlnbm9yZVxuICAgICAgICB+dmFsdWVzX3JlYWQ6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICAgICAgICAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICAgIH5kb3duc3RyZWFtX2ZsdXNoZWQ6aWdub3JlXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5Db25zdW1lci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIH5waXBlX2lkIH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICAgIHsgcGlwZV9pZDsgdmFsdWVzX3JlYWQgPSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbTsgZG93bnN0cmVhbV9mbHVzaGVkIH1cbiAgOztcblxuICBsZXQgc3RhcnQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gXyAtPiAoKVxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIChJdmFyLmNyZWF0ZSAoKSlcbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIHdoZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB3aGVuX3NlbnRfZG93bnN0cmVhbSBpblxuICAgICAgdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9yZWFkID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfcmVhZC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCByZWFkIGF0dGVtcHQuICBJZiBzb21lb25lIHJlYWRzIGZyb20gYW4gZW1wdHlcbiAgICAgcGlwZSwgdGhleSBlbnF1ZXVlIGEgW0Jsb2NrZWRfcmVhZC50XSBpbiB0aGUgcXVldWUgb2YgW2Jsb2NrZWRfcmVhZHNdLiAgTGF0ZXIsIHdoZW5cbiAgICAgdmFsdWVzIGFyZSB3cml0dGVuIHRvIGEgcGlwZSwgdGhhdCB3aWxsIGNhdXNlIHNvbWUgbnVtYmVyIG9mIGJsb2NrZWQgcmVhZHMgdG8gYmVcbiAgICAgZmlsbGVkLCBmaXJzdCBjb21lIGZpcnN0IHNlcnZlLiAgVGhlIGJsb2NrZWQtcmVhZCBjb25zdHJ1Y3RvciBzcGVjaWZpZXMgaG93IG1hbnlcbiAgICAgdmFsdWVzIGEgcmVhZCBzaG91bGQgY29uc3VtZSBmcm9tIHRoZSBwaXBlIHdoZW4gaXQgZ2V0cyBpdHMgdHVybi5cblxuICAgICBJZiBhIHBpcGUgaXMgY2xvc2VkLCB0aGVuIGFsbCBibG9ja2VkIHJlYWRzIHdpbGwgYmUgZmlsbGVkIHdpdGggW2BFb2ZdLiAqKVxuICB0eXBlICdhIHdhbnRzID1cbiAgICB8IFplcm8gb2YgWyBgRW9mIHwgYE9rIF0gSXZhci50XG4gICAgfCBPbmUgb2YgWyBgRW9mIHwgYE9rIG9mICdhIF0gSXZhci50XG4gICAgfCBBdF9tb3N0IG9mIGludCAqIFsgYEVvZiB8IGBPayBvZiAnYSBRdWV1ZS50IF0gSXZhci50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdhbnRzIDogJ2Egd2FudHNcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+d2FudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgWmVybyBfIHwgT25lIF8gLT4gKClcbiAgICAgICAgICAgICB8IEF0X21vc3QgKGksIF8pIC0+IGFzc2VydCAoaSA+IDApKSlcbiAgICAgICAgfmNvbnN1bWVyOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT4gQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5CbG9ja2VkX3JlYWQuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogXyB0KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHdhbnRzIGNvbnN1bWVyID0geyB3YW50czsgY29uc3VtZXIgfVxuXG4gIGxldCBpc19lbXB0eSB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IE9uZSBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5pc19lbXB0eSBpXG4gIDs7XG5cbiAgbGV0IGZpbGxfd2l0aF9lb2YgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgT25lIGkgLT4gSXZhci5maWxsIGkgYEVvZlxuICAgIHwgQXRfbW9zdCAoXywgaSkgLT4gSXZhci5maWxsIGkgYEVvZlxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX2ZsdXNoID0gc3RydWN0XG4gICgqIEEgW0Jsb2NrZWRfZmx1c2gudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgZmx1c2ggb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZW5hYmxlZCBieSBhXG4gICAgIGZ1dHVyZSByZWFkLiAgSWYgc29tZW9uZSBkb2VzIFtmbHVzaGVkIHBdIG9uIGEgcGlwZSwgdGhhdCBibG9ja3MgdW50aWwgZXZlcnl0aGluZ1xuICAgICB0aGF0J3MgY3VycmVudGx5IGluIHRoZSBwaXBlIGF0IHRoYXQgcG9pbnQgaGFzIGRyYWluZWQgb3V0IG9mIHRoZSBwaXBlLiAgV2hlbiB3ZSBjYWxsXG4gICAgIFtmbHVzaGVkXSwgaXQgcmVjb3JkcyB0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgdGhhdCBoYXMgYmVlbiB3cml0dGVuIHNvIGZhciBpblxuICAgICBbZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF0uICBXZSBmaWxsIHRoZSBbRmx1c2gudF0gd2l0aCBbYE9rXSB3aGVuIHRoaXMgYW1vdW50IG9mXG4gICAgIGRhdGEgaGFzIGJlZW4gcmVhZCBmcm9tIHRoZSBwaXBlLlxuXG4gICAgIEEgW0Jsb2NrZWRfZmx1c2gudF0gY2FuIGFsc28gYmUgZmlsbGVkIHdpdGggW2BSZWFkZXJfY2xvc2VkXSwgd2hpY2ggaGFwcGVucyB3aGVuIHRoZVxuICAgICByZWFkZXIgZW5kIG9mIHRoZSBwaXBlIGlzIGNsb3NlZCwgYW5kIHdlIGFyZSB0aHVzIHN1cmUgdGhhdCB0aGUgdW5yZWFkIGVsZW1lbnRzIHByZWNlZGluZyB0aGUgZmx1c2ggd2lsbCBuZXZlciBiZSByZWFkLiAqKVxuICB0eXBlIHQgPVxuICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA6IGludFxuICAgIDsgcmVhZHkgOiBbIGBPayB8IGBSZWFkZXJfY2xvc2VkIF0gSXZhci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGZpbGwgdCB2ID0gSXZhci5maWxsIHQucmVhZHkgdlxuZW5kXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgKCogW2lkXSBpcyBhbiBpbnRlZ2VyIHVzZWQgdG8gZGlzdGluZ3Vpc2ggcGlwZXMgd2hlbiBkZWJ1Z2dpbmcuICopXG4gICAgaWQgOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XG4gIDsgKCogW2luZm9dIGlzIHVzZXItcHJvdmlkZWQgYXJiaXRyYXJ5IHNleHAsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuICopXG4gICAgbXV0YWJsZSBpbmZvIDogU2V4cC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7ICgqIFtidWZmZXJdIGhvbGRzIHZhbHVlcyB3cml0dGVuIHRvIHRoZSBwaXBlIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gKilcbiAgICBtdXRhYmxlIGJ1ZmZlciA6ICdhIFF1ZXVlLnRcbiAgOyAoKiBbc2l6ZV9idWRnZXRdIGdvdmVybnMgcHVzaGJhY2sgb24gd3JpdGVycyB0byB0aGUgcGlwZS5cblxuICAgICAgIFRoZXJlIGlzICpubyogaW52YXJpYW50IHRoYXQgW1F1ZXVlLmxlbmd0aCBidWZmZXIgPD0gc2l6ZV9idWRnZXRdLlxuICAgICAgIFRoZXJlIGlzIG5vIGhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGNhbiBiZSBzdHVmZmVkIGludG8gdGhlXG4gICAgICAgW2J1ZmZlcl0uIFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgaGFuZGxlIHdyaXRlcy4gV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlXG4gICAgICAgdmFsdWVzIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uIEFmdGVyIHRoZSB3cml0ZSwgaWZcbiAgICAgICBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGVyIHdpbGwgYmUgbm90aWZpZWQgdG9cbiAgICAgICBjb250aW51ZSB3cml0aW5nLiBBZnRlciB0aGUgd3JpdGUsIGlmIFtsZW5ndGggdCA+IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZVxuICAgICAgIHdpbGwgYmxvY2sgdW50aWwgdGhlIHBpcGUgaXMgdW5kZXIgYnVkZ2V0LiAqKVxuICAgIG11dGFibGUgc2l6ZV9idWRnZXQgOiBpbnRcbiAgOyAoKiBbcmVzZXJ2ZWRfc3BhY2VdIGNvdW50cyBhZ2FpbnN0IFtzaXplX2J1ZGdldF0gd2l0aG91dCBhY3R1YWxseSBidWZmZXJpbmcgYW55dGhpbmdcbiAgICAgICB5ZXQuIFdoZW4gaXQncyBwb3NpdGl2ZSwgd3JpdGVzIGRlY3JlbWVudCBpdC4gKilcbiAgICBtdXRhYmxlIHJlc2VydmVkX3NwYWNlIDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuIFtwdXNoYmFja10gaXMgZnVsbCBpZmYgW2xlbmd0aCB0ICsgcmVzZXJ2ZWRfc3BhY2UgdCA8PSB0LnNpemVfYnVkZ2V0IHx8XG4gICAgICAgaXNfY2xvc2VkIHRdLiAqKVxuICAgIG11dGFibGUgcHVzaGJhY2sgOiB1bml0IEl2YXIudFxuICA7ICgqIFtudW1fdmFsdWVzX3JlYWRdIGtlZXBzIHRyYWNrIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHJlYWRcbiAgICAgICBmcm9tIHRoZSBwaXBlLiAgV2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgb3ZlcmZsb3cgaW4gW251bV92YWx1ZXNfcmVhZF0uICBZb3UnZFxuICAgICAgIG5lZWQgdG8gd3JpdGUgMl42MiBlbGVtZW50cyB0byB0aGUgcGlwZSwgd2hpY2ggd291bGQgdGFrZSBhYm91dCAxNDYgeWVhcnMsIGF0IGFcbiAgICAgICBmbG93IHJhdGUgb2YgMSBzaXplLXVuaXQvbmFub3NlY29uZC4gKilcbiAgICBtdXRhYmxlIG51bV92YWx1ZXNfcmVhZCA6IGludFxuICAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgcmVhZC4gIEZvciBlYWNoIGJsb2NrZWQgZmx1c2gsIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHJlYWQgZnJvbSB0aGVcbiAgICAgcGlwZSBpbiBvcmRlciB0byBmaWxsIHRoZSBmbHVzaCBpcyAgICAgICAgICAgICAgICAgICAgICAgIDpcblxuICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgS2VlcGluZyB0aGUgZGF0YSBpbiB0aGlzIGZvcm0gYWxsb3dzIHVzIHRvIGNoYW5nZSBhIHNpbmdsZSBmaWVsZChudW1fdmFsdWVzX3JlYWQpXG4gICAgIHdoZW4gd2UgY29uc3VtZSB2YWx1ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gaXRlcmF0ZSBvdmVyIHRoZSB3aG9sZSBxdWV1ZSBvZlxuICAgICBmbHVzaGVzLiAqKVxuICA7IGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGVmZmVjdGl2ZV9zaXplX2J1ZGdldCB0ID0gdC5zaXplX2J1ZGdldCAtIHQucmVzZXJ2ZWRfc3BhY2VcblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGEgPSB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIGRlbHRhXG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+aW5mbzppZ25vcmVcbiAgICAgIH5idWZmZXI6aWdub3JlXG4gICAgICB+c2l6ZV9idWRnZXQ6KGNoZWNrIChmdW4gc2l6ZV9idWRnZXQgLT4gYXNzZXJ0IChzaXplX2J1ZGdldCA+PSAwKSkpXG4gICAgICB+cmVzZXJ2ZWRfc3BhY2U6KGNoZWNrIChmdW4gcmVzZXJ2ZWRfc3BhY2UgLT4gYXNzZXJ0IChyZXNlcnZlZF9zcGFjZSA+PSAwKSkpXG4gICAgICB+cHVzaGJhY2s6XG4gICAgICAgIChjaGVjayAoZnVuIHB1c2hiYWNrIC0+XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgQm9vbC5lcXVhbFxuICAgICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCBwdXNoYmFjaylcbiAgICAgICAgICAgICAgIChsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHJlc2VydmVkX3NwYWNlID0gMFxuICAgIDsgcHVzaGJhY2sgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgYnVmZmVyID0gaW5pdGlhbF9idWZmZXJcbiAgICA7IG51bV92YWx1ZXNfcmVhZCA9IDBcbiAgICA7IGJsb2NrZWRfZmx1c2hlcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgYmxvY2tlZF9yZWFkcyA9IFF1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgY29uc3VtZXJzID0gW11cbiAgICA7IHVwc3RyZWFtX2ZsdXNoZWRzID0gQmFnLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0ID1cbiAgaWYgc2l6ZV9idWRnZXQgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJuZWdhdGl2ZSBzaXplX2J1ZGdldFwiIChzaXplX2J1ZGdldCA6IGludCldXG4gIGVsc2Ugc2l6ZV9idWRnZXRcbjs7XG5cbmxldCBjcmVhdGUgP3NpemVfYnVkZ2V0ID9pbmZvICgpID1cbiAgbGV0IHNpemVfYnVkZ2V0ID1cbiAgICBtYXRjaCBzaXplX2J1ZGdldCB3aXRoXG4gICAgfCBTb21lIHYgLT4gdmFsaWRhdGVfc2l6ZV9idWRnZXQgdlxuICAgIHwgTm9uZSAtPiAwXG4gIGluXG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldCB+aW5mbyB+aW5pdGlhbF9idWZmZXI6KFF1ZXVlLmNyZWF0ZSAoKSkgaW5cbiAgKCogaW5pdGlhbGx5LCB0aGUgcGlwZSBkb2VzIG5vdCBwdXNoYmFjayAqKVxuICBJdmFyLmZpbGwgdC5wdXNoYmFjayAoKTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICB0LCB0XG47O1xuXG5sZXQgdXBkYXRlX3B1c2hiYWNrIHQgPVxuICBpZiBsZW5ndGggdCA8PSBlZmZlY3RpdmVfc2l6ZV9idWRnZXQgdCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdC5yZXNlcnZlZF9zcGFjZSA8LSAwO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgICgqIHdlIGp1c3QgY2xlYXJlZCB0aGUgYnVmZmVyLCBzbyBtYXkgbmVlZCB0byBmaWxsIFt0LnB1c2hiYWNrXSAqKVxuICAgIGNsb3NlIHQpXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIHVwb24gKGYgdykgKGZ1biAoKSAtPiBjbG9zZSB3KTtcbiAgclxuOztcblxubGV0IGNyZWF0ZV9yZWFkZXIgP3NpemVfYnVkZ2V0IH5jbG9zZV9vbl9leGNlcHRpb24gZiA9XG4gIGlmIG5vdCBjbG9zZV9vbl9leGNlcHRpb25cbiAgdGhlbiBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGZcbiAgZWxzZSAoXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAgIChmdW4gKCkgLT4gZiB3KVxuICAgICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgICBjbG9zZSB3O1xuICAgICAgICAgICByZXR1cm4gKCkpKTtcbiAgICByKVxuOztcblxubGV0IGNyZWF0ZV93cml0ZXIgP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoTW9uaXRvci5wcm90ZWN0XG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvblxuICAgICAgICAgICAgIChDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIGNvbnN1bWVyKVxuICAgICAgICAgICAgIChmdW4gZmx1c2hfcmVzdWx0IC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBmbHVzaF9yZXN1bHQpKTtcbiAgICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcblxuKCogW2NvbnN1bWVfYWxsIHRdIHJlYWRzIGFsbCB0aGUgZWxlbWVudHMgaW4gW3RdLiAqKVxubGV0IGNvbnN1bWVfYWxsIHQgY29uc3VtZXIgPVxuICBsZXQgcmVzdWx0ID0gdC5idWZmZXIgaW5cbiAgdC5idWZmZXIgPC0gUXVldWUuY3JlYXRlICgpO1xuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOihRdWV1ZS5sZW5ndGggcmVzdWx0KTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZV9vbmUgdCBjb25zdW1lciA9XG4gIGFzc2VydCAobGVuZ3RoIHQgPj0gMSk7XG4gIGxldCByZXN1bHQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJ1ZmZlciBpblxuICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOjE7XG4gIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHJlc3VsdFxuOztcblxubGV0IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lciA9XG4gIGFzc2VydCAobWF4X3F1ZXVlX2xlbmd0aCA+PSAwKTtcbiAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA+PSBsZW5ndGggdFxuICB0aGVuIGNvbnN1bWVfYWxsIHQgY29uc3VtZXJcbiAgZWxzZSAoXG4gICAgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YTptYXhfcXVldWVfbGVuZ3RoO1xuICAgIHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lcjtcbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlIH5jYXBhY2l0eTptYXhfcXVldWVfbGVuZ3RoICgpIGluXG4gICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnQuYnVmZmVyIH5kc3Q6cmVzdWx0IH5sZW46bWF4X3F1ZXVlX2xlbmd0aCAoKTtcbiAgICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2V0X3NpemVfYnVkZ2V0IHQgc2l6ZV9idWRnZXQgPVxuICBsZXQgc2l6ZV9idWRnZXQgPSB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCBpblxuICB0LnNpemVfYnVkZ2V0IDwtIHNpemVfYnVkZ2V0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHJlc2VydmVfc3BhY2UgdCBuID1cbiAgaWYgbiA8IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcInJlc2VydmluZyBuZWdhdGl2ZSBzcGFjZVwiIChuIDogaW50KV07XG4gIGxldCByZXNlcnZlZF9zcGFjZSA9IHQucmVzZXJ2ZWRfc3BhY2UgKyBuIGluXG4gIGlmIHJlc2VydmVkX3NwYWNlIDwgMFxuICB0aGVuXG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJvdmVyZmxvdyB3aGVuIHJlc2VydmluZyBzcGFjZVwiICh0LnJlc2VydmVkX3NwYWNlIDogaW50KSAobiA6IGludCldO1xuICB0LnJlc2VydmVkX3NwYWNlIDwtIHJlc2VydmVkX3NwYWNlO1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IGZpbGxfYmxvY2tlZF9yZWFkcyB0ID1cbiAgd2hpbGUgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKSkgJiYgbm90IChpc19lbXB0eSB0KSBkb1xuICAgIGxldCBibG9ja2VkX3JlYWQgPSBRdWV1ZS5kZXF1ZXVlX2V4biB0LmJsb2NrZWRfcmVhZHMgaW5cbiAgICBsZXQgY29uc3VtZXIgPSBibG9ja2VkX3JlYWQuY29uc3VtZXIgaW5cbiAgICBtYXRjaCBibG9ja2VkX3JlYWQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGBPa1xuICAgIHwgT25lIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZV9vbmUgdCBjb25zdW1lcikpXG4gICAgfCBBdF9tb3N0IChtYXhfcXVldWVfbGVuZ3RoLCBpdmFyKSAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKGBPayAoY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyKSlcbiAgZG9uZVxuOztcblxubGV0IGRlY3JlYXNlX3Jlc2VydmVkX3NwYWNlIHQgbiA9IHQucmVzZXJ2ZWRfc3BhY2UgPC0gSW50Lm1heCAwICh0LnJlc2VydmVkX3NwYWNlIC0gbilcblxuKCogY2hlY2tzIGFsbCBpbnZhcmlhbnRzLCBjYWxscyBhIHBhc3NlZCBpbiBmIHRvIGhhbmRsZSBhIHdyaXRlLCB0aGVuIHVwZGF0ZXMgcmVhZHMgYW5kXG4gICBwdXNoYmFjayAqKVxubGV0IHN0YXJ0X3dyaXRlIHQgfnNpemUgPVxuICBpZiAhc2hvd19kZWJ1Z19tZXNzYWdlcyB0aGVuIGVwcmludHMgXCJ3cml0ZVwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIndyaXRlIHRvIGNsb3NlZCBwaXBlXCIgfnBpcGU6KHQgOiAoXywgXykgdCldO1xuICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB0IHNpemVcbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6KFF1ZXVlLmxlbmd0aCBmcm9tKTtcbiAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOmZyb20gfmRzdDp0LmJ1ZmZlciAoKTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB0cmFuc2Zlcl9pbiB0IH5mcm9tID1cbiAgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb20gPVxuICBzdGFydF93cml0ZSB0IH5zaXplOihRdWV1ZS5sZW5ndGggZnJvbSk7XG4gIFF1ZXVlLml0ZXIgZnJvbSB+ZjooZnVuIHggLT4gUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB4KTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFt3cml0ZSddIGlzIHVzZWQgaW50ZXJuYWxseSAqKVxubGV0IHdyaXRlJyB0IHEgPSB0cmFuc2Zlcl9pbiB0IH5mcm9tOnFcblxubGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB2YWx1ZSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6MTtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgKCogWzFdIEZvciBuZXcgZW1wdHkgcGlwZXMgY3JlYXRlZCBhdCB0b3AtbGV2ZWwgd2Ugd2FudCB0byBhdm9pZCBpbW1lZGlhdGVseVxuICAgICAgIHNjaGVkdWxpbmcgYSBqb2Igb24gdGhlIHNjaGVkdWxlciAoc2VlIFtTY2hlZHVsZXIucmFpc2VfaWZfYW55X2pvYnNfd2VyZV9zY2hlZHVsZWRdKS5cbiAgICAgICBKdXN0IFtyZXR1cm4gKCkgPj4+XSBkb2Vzbid0IHdvcms6IFtyZXR1cm4gKCldIGNyZWF0ZXMgYSBmdWxsIGl2YXIgdGhhdCBjYXVzZXNcbiAgICAgICBbPj4+XSB0byBzY2hlZHVsZSBhIGpvYi4gKilcbiAgICB2YWx1ZXNfYXZhaWxhYmxlIHRcbiAgICA+Pj4gZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3ZhbHVlc19hdmFpbGFibGUgdCA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS5cbiAgICAgICBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgdmFsdWVzX2F2YWlsYWJsZSB0XG4gICAgPj4+IGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPlxuICAgIGxldCByZWMgc3RhcnQgKCkgPSBsb29wIH5yZW1haW5pbmc6bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgIGFuZCBsb29wIH5yZW1haW5pbmcgPVxuICAgICAgaWYgcmVtYWluaW5nID0gMFxuICAgICAgdGhlbiByZXR1cm4gKCkgPj4+IGZ1biAoKSAtPiBzdGFydCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IHQgP2NvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCAoKVxuICAgICAgICB8IGBPayBhIC0+XG4gICAgICAgICAgZiBhO1xuICAgICAgICAgIGxvb3AgfnJlbWFpbmluZzoocmVtYWluaW5nIC0gMSlcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gdmFsdWVzX2F2YWlsYWJsZSB0ID4+PiBmdW4gXyAtPiBzdGFydCAoKSlcbiAgICBpblxuICAgIHN0YXJ0ICgpKVxuOztcblxubGV0IGRyYWluIHQgPSBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG5sZXQgZHJhaW5fYW5kX2NvdW50IHQgPSBmb2xkJyB0IH5pbml0OjAgfmY6KGZ1biBzdW0gcSAtPiByZXR1cm4gKHN1bSArIFF1ZXVlLmxlbmd0aCBxKSlcblxubGV0IHJlYWRfYWxsIGlucHV0ID1cbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQlbWFwICgpID1cbiAgICBpdGVyJyBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICByZXN1bHRcbjs7XG5cbmxldCB0b19saXN0IHIgPSByZWFkX2FsbCByID4+fCBRdWV1ZS50b19saXN0XG5cbmxldCB0b19zdHJlYW1fZGVwcmVjYXRlZCB0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBpdGVyX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KVxuICAgID4+PiBmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbClcbjs7XG5cbigqIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBbb2Zfc3RyZWFtX2RlcHJlY2F0ZWRdIGRvZXMgYXMgbXVjaCBiYXRjaGluZyBhcyBwb3NzaWJsZS4gIEl0XG4gICBncmFicyBhcyBtYW55IGl0ZW1zIGFzIGFyZSBhdmFpbGFibGUgaW50byBhbiBpbnRlcm5hbCBxdWV1ZS4gIE9uY2UgaXQgaGFzIGdyYWJiZWRcbiAgIGV2ZXJ5dGhpbmcsIGl0IHdyaXRlcyBpdCB0byB0aGUgcGlwZSBhbmQgdGhlbiBibG9ja3Mgd2FpdGluZyBmb3IgdGhlIG5leHQgZWxlbWVudCBmcm9tXG4gICB0aGUgc3RyZWFtLlxuXG4gICBUaGVyZSdzIG5vIHBvc3NpYmlsaXR5IHRoYXQgd2UnbGwgc3RhcnZlIHRoZSBwaXBlIHJlYWRpbmcgYW4gZW5kbGVzcyBzdHJlYW0sIGp1c3RcbiAgIGFjY3VtdWxhdGluZyB0aGUgZWxlbWVudHMgaW50byBvdXIgcHJpdmF0ZSBxdWV1ZSBmb3JldmVyIHdpdGhvdXQgZXZlciB3cml0aW5nIHRoZW1cbiAgIGRvd25zdHJlYW0gdG8gdGhlIHBpcGUuICBXaHk/IGJlY2F1c2Ugd2hpbGUgd2UncmUgcnVubmluZywgdGhlIHN0cmVhbS1wcm9kdWNlciAqaXNuJ3QqXG4gICBydW5uaW5nIC0tIHRoZXJlIGFyZSBubyBBc3luYyBibG9jayBwb2ludHMgaW4gdGhlIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3AuICBTbyB0aGVcbiAgIHF1ZXVlLWFjY3VtdWxhdG9yIGxvb3Agd2lsbCBldmVudHVhbGx5IGNhdGNoIHVwIHRvIHRoZSBjdXJyZW50IHN0cmVhbSB0YWlsLCBhdCB3aGljaFxuICAgcG9pbnQgd2UnbGwgZG8gdGhlIHBpcGUtd3JpdGUgYW5kIHRoZW4gYmxvY2sgb24gdGhlIHN0cmVhbS4uLiB0aHVzIGdpdmluZyB0aGVcbiAgIHN0cmVhbS1wcm9kdWNlciBhIGNoYW5jZSB0byBtYWtlIG1vcmUgZWxlbWVudHMuXG5cbiAgIE9uZSBjYW4ndCBpbXBsZW1lbnQgW29mX3N0cmVhbV0gdXNpbmcgW1N0cmVhbS5pdGVyXSBvciBbU3RyZWFtLml0ZXInXSBiZWNhdXNlIHlvdVxuICAgbmVlZCB0byBiZSBhYmxlIHRvIHN0b3AgZWFybHkgd2hlbiB0aGUgY29uc3VtZXIgY2xvc2VzIHRoZSBwaXBlLiAgQWxzbywgdXNpbmcgZWl0aGVyXG4gICBvZiB0aG9zZSB3b3VsZCBlbnRhaWwgc2lnbmlmaWNhbnRseSBtb3JlIGRlZmVycmVkIG92ZXJoZWFkLCB3aGVyZWFzIHRoZSBiZWxvd1xuICAgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRlZmVycmVkIG9ubHkgd2hlbiBpdCBuZWVkcyB0byB3YWl0IGZvciBkYXRhIGZyb20gdGhlIHN0cmVhbS4gKilcbmxldCBvZl9zdHJlYW1fZGVwcmVjYXRlZCBzID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHEgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHRyYW5zZmVyICgpID1cbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHEpXG4gICAgdGhlblxuICAgICAgKCogQ2FuIG5vdCBwdXNoYmFjayBvbiB0aGUgc3RyZWFtLCBzbyBpZ25vcmUgdGhlIHB1c2hiYWNrIG9uIHRoZSBwaXBlLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKHdyaXRlJyB3IHEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfY2xvc2VkIHcpKTtcbiAgICBsZXQgbmV4dF9kZWZlcnJlZCA9IFN0cmVhbS5uZXh0IHMgaW5cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIG5leHRfZGVmZXJyZWQgd2l0aFxuICAgIHwgU29tZSBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0XG4gICAgfCBOb25lIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIHVwb24gbmV4dF9kZWZlcnJlZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0XG4gIGFuZCBjaGVja19jbG9zZWRfbG9vcF9uZXh0IG5leHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB3KSB0aGVuIGxvb3BfbmV4dCBuZXh0XG4gIGFuZCBsb29wX25leHQgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICB0cmFuc2ZlciAoKTtcbiAgICAgIGNsb3NlIHdcbiAgICB8IENvbnMgKHgsIHMpIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlIHEgeDtcbiAgICAgIGxvb3Agc1xuICBpblxuICBsb29wIHM7XG4gIHJcbjs7XG5cbmxldCB0cmFuc2Zlcl9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgIHdyaXRlXG4gICAgICBpbnB1dFxuICAgICAgb3V0cHV0XG4gICAgICB+ZlxuICA9XG4gIGlmICFjaGVja19pbnZhcmlhbnRcbiAgdGhlbiAoXG4gICAgaW52YXJpYW50IGlucHV0O1xuICAgIGludmFyaWFudCBvdXRwdXQpO1xuICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dCB+ZG93bnN0cmVhbTpvdXRwdXQgaW5cbiAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICgqIFdoZW4gd2UncmUgZG9uZSB3aXRoIFtpbnB1dF0sIHdlIHVubGluayB0byByZW1vdmUgcG9pbnRlcnMgZnJvbVxuICAgICBbb3V0cHV0XSB0byBbaW5wdXRdLCB3aGljaCB3b3VsZCBjYXVzZSBhIHNwYWNlIGxlYWsgaWYgd2UgaGFkIHNpbmdsZSBsb25nLWxpdmVkXG4gICAgIG91dHB1dCBpbnRvIHdoaWNoIHdlIHRyYW5zZmVyIGxvdHMgb2Ygc2hvcnQtbGl2ZWQgaW5wdXRzLiAqKVxuICBsZXQgdW5saW5rICgpID0gTGluay51bmxpbmtfdXBzdHJlYW0gbGluayBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2hvb3NlIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICBpblxuICAgICgqIFdlIGRvIFtpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZFxuICAgICAgIGFzeW5jaHJvbm91c2x5LiBTZWUgWzFdIGZvciBtb3JlIGRldGFpbHMuICopXG4gICAgaW5wdXRfYXZhaWxhYmxlX29yX291dHB1dF9jbG9zZWQgKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IG91dHB1dF9jbG9zZWQgKCkgPVxuICAgICAgY2xvc2VfcmVhZCBpbnB1dDtcbiAgICAgIHVubGluayAoKTtcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCByZWFkX25vdyBpbnB1dCB+Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT5cbiAgICAgICAgICB1bmxpbmsgKCk7XG4gICAgICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgICAgICB8IGBPayB4IC0+IGYgeCBjb250aW51ZVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+XG4gICAgRGVmZXJyZWQuUXVldWUuZmlsdGVyX21hcCB+aG93OmBTZXF1ZW50aWFsIHEgfmYpXG47O1xuXG5sZXQgZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuZmlsdGVyX21hcCBxIH5mOihmdW4geCAtPiBpZiBpc19yZWFkX2Nsb3NlZCBpbnB1dCB0aGVuIE5vbmUgZWxzZSBmIHgpKSlcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjY3VtID0gcmVmIGluaXQgaW5cbiAgZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0JW1hcCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX2ZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mOihmdW4geCAtPlxuICAgIGxldCBhLCB4ID0gZiAhYWNjdW0geCBpblxuICAgIGFjY3VtIDo9IGE7XG4gICAgeClcbjs7XG5cbmxldCBmb2xkaW5nX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZjooZnVuIGFjY3VtIGEgLT5cbiAgICBsZXQgYWNjdW0sIGIgPSBmIGFjY3VtIGEgaW5cbiAgICBhY2N1bSwgU29tZSBiKVxuOztcblxubGV0IGZpbHRlciBpbnB1dCB+ZiA9IGZpbHRlcl9tYXAgaW5wdXQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG5cbmxldCBvZl9xdWV1ZV9pbnRlcm5hbCBxdWV1ZSA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOnF1ZXVlIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBvZl9xdWV1ZSBxdWV1ZSA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5jb3B5IHF1ZXVlKVxubGV0IG9mX2xpc3QgbCA9IG9mX3F1ZXVlX2ludGVybmFsIChRdWV1ZS5vZl9saXN0IGwpXG5sZXQgZW1wdHkgKCkgPSBvZl9saXN0IFtdXG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCByZWFkZXIsIHdyaXRlciA9IGNyZWF0ZSAoKSBpblxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciB4O1xuICBjbG9zZSB3cml0ZXI7XG4gIHJlYWRlclxuOztcblxubGV0IHVuZm9sZCB+aW5pdDpzIH5mID1cbiAgKCogVG8gZ2V0IHNvbWUgYmF0Y2hpbmcsIHdlIHJ1biB0aGUgY29udGludWF0aW9uIGltbWVkaWF0ZWx5IGlmIHRoZSBkZWZlcnJlZCBpc1xuICAgICBkZXRlcm1pbmVkLiAgSG93ZXZlciwgd2UgYWx3YXlzIGNoZWNrIGZvciBwdXNoYmFjay4gIEJlY2F1c2Ugc2l6ZSBidWRnZXQgY2FuJ3QgYmVcbiAgICAgaW5maW5pdGUsIHRoZSBiZWxvdyBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXZlbnR1YWxseSB5aWVsZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICBsZXQgKCA+Pj1+ICkgZCBmID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgIGYgc1xuICAgICAgPj49fiBmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IHJldHVybiAoKVxuICAgICAgfCBTb21lIChhLCBzKSAtPlxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHRoZW4gcmV0dXJuICgpIGVsc2Ugd3JpdGUgd3JpdGVyIGEgPj49fiBmdW4gKCkgLT4gbG9vcCBzXG4gICAgaW5cbiAgICBsb29wIHMpXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICBjcmVhdGVfcmVhZGVyIH5jbG9zZV9vbl9leGNlcHRpb246ZmFsc2UgKGZ1biB3cml0ZXIgLT5cbiAgICBsZXQgcmVjIGVucXVldWVfbiBzZXF1ZW5jZSBpID1cbiAgICAgIGlmIGkgPD0gMFxuICAgICAgdGhlbiBzZXF1ZW5jZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgc2VxdWVuY2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc2VxdWVuY2VcbiAgICAgICAgfCBTb21lIChhLCBzZXF1ZW5jZSkgLT5cbiAgICAgICAgICBkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSB3cml0ZXIgMTtcbiAgICAgICAgICBRdWV1ZS5lbnF1ZXVlIHdyaXRlci5idWZmZXIgYTtcbiAgICAgICAgICBlbnF1ZXVlX24gc2VxdWVuY2UgKGkgLSAxKSlcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBzZXF1ZW5jZSA9XG4gICAgICBpZiBpc19jbG9zZWQgd3JpdGVyIHx8IFNlcXVlbmNlLmlzX2VtcHR5IHNlcXVlbmNlXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtzaXplOjBdIGhlcmUgYXMgd2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc2VxdWVuY2Ugc3RhdGljYWxseS4gV2UnbGxcbiAgICAgICAgICAgY2FsbCBbZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2VdIGFzIHdlIGdvLlxuICAgICAgICAgICAoYWx0aG91Z2ggcmVhbGlzdGljYWxseSwgaXQncyBpbXBvc3NpYmxlIGZvciB0aGUgdXNlciB0byByZXNlcnZlIHNwYWNlIGluXG4gICAgICAgICAgIHRoaXMgcGlwZSBiZWNhdXNlIHlvdSBuZWVkIGEgcGlwZSB3cml0ZXIgZm9yIHRoYXQsIGJ1dCBbb2Zfc2VxdWVuY2VdIHJldHVybnNcbiAgICAgICAgICAgYSByZWFkZXIpICopXG4gICAgICAgIHN0YXJ0X3dyaXRlIHdyaXRlciB+c2l6ZTowO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIH5ob3c6YFNlcXVlbnRpYWwgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT5cbiAgICAgICAgbGV0JW1hcCB4ID0gcmVhZCBpbnB1dCBpblxuICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4KVxuICAgIGluXG4gICAgdXBvbiBpbml0aWFsX3B1c2ggcG9wX2hlYXBfYW5kX2xvb3A7XG4gICAgclxuOztcblxubGV0IGNvbmNhdF9waXBlIGlucHV0cyA9XG4gIGxldCByID1cbiAgICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgICBsZXQgbGluayA9IExpbmsuY3JlYXRlIH51cHN0cmVhbTppbnB1dHMgfmRvd25zdHJlYW06dyBpblxuICAgICAgbGV0IGNvbnN1bWVyID0gTGluay5jb25zdW1lciBsaW5rIGluXG4gICAgICBpdGVyIH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG4gIGluXG4gIHVwb24gKGNsb3NlZCByKSAoZnVuICgpIC0+IGNsb3NlIGlucHV0cyk7XG4gIHJcbjs7XG5cbmxldCBjb25jYXQgaW5wdXRzID1cbiAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgIERlZmVycmVkLkxpc3QuaXRlciB+aG93OmBTZXF1ZW50aWFsIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuOztcblxubGV0IGZvcmsgdCB+cHVzaGJhY2tfdXNlcyA9XG4gIGxldCByZWFkZXIwLCB3cml0ZXIwID0gY3JlYXRlICgpIGluXG4gIGxldCByZWFkZXIxLCB3cml0ZXIxID0gY3JlYXRlICgpIGluXG4gIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gcmVmIGZhbHNlIGluXG4gIGxldCBjb25zdW1lciA9XG4gICAgYWRkX2NvbnN1bWVyIHQgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICBsZXQgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA9ICFzb21lX3JlYWRlcl93YXNfY2xvc2VkIGluXG4gICAgICBtYXRjaCVtYXBcbiAgICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZSBbIGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIwOyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMSBdXG4gICAgICB3aXRoXG4gICAgICB8IGBSZWFkZXJfY2xvc2VkIC0+IGBSZWFkZXJfY2xvc2VkXG4gICAgICB8IGBPayAtPlxuICAgICAgICAoKiBJbiB0aGlzIGNhc2UsIHRoZXJlIGNvdWxkIGhhdmUgYmVlbiBubyBwZW5kaW5nIGl0ZW1zIGluIFt3cml0ZXIwXSBub3IgaW5cbiAgICAgICAgICAgW3dyaXRlcjFdLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkIGhhdmUgaGFkIGEgY2xvc2VkIHBpcGUgdGhhdCBtaXNzZWQgc29tZVxuICAgICAgICAgICB3cml0ZXMsIGJ1dCBbRmx1c2hlZF9yZXN1bHQuY29tYmluZV0gd291bGQgc3RpbGwgaGF2ZSByZXR1cm5lZCBbYE9rXSAqKVxuICAgICAgICBpZiBzb21lX3JlYWRlcl93YXNfY2xvc2VkIHRoZW4gYFJlYWRlcl9jbG9zZWQgZWxzZSBgT2spXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCBzdGlsbF9vcGVuID0gWyB3cml0ZXIwOyB3cml0ZXIxIF0gaW5cbiAgICAgbGV0IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gPVxuICAgICAgICgqIE9ubHkgY2FsbCBbZmlsdGVyXSBhbmQgcmVhbGxvY2F0ZSBsaXN0IGlmIHNvbWV0aGluZyB3aWxsIGdldCBmaWx0ZXJlZCAqKVxuICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgc3RpbGxfb3BlbiB+Zjppc19jbG9zZWQpXG4gICAgICAgdGhlbiBzdGlsbF9vcGVuXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBzb21lX3JlYWRlcl93YXNfY2xvc2VkIDo9IHRydWU7XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IExpc3QuZmlsdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IG5vdCAoaXNfY2xvc2VkIHcpKSBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuIHRoZW4gY2xvc2UgdDtcbiAgICAgICAgIHN0aWxsX29wZW4pXG4gICAgIGluXG4gICAgIGxldCViaW5kIHN0aWxsX29wZW4gPVxuICAgICAgIGZvbGQnIHQgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSB+aW5pdDpzdGlsbF9vcGVuIH5mOihmdW4gc3RpbGxfb3BlbiBxdWV1ZSAtPlxuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW5cbiAgICAgICAgIHRoZW4gcmV0dXJuIFtdXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICAgbWF0Y2ggcHVzaGJhY2tfdXNlcyB3aXRoXG4gICAgICAgICAgICAgfCBgRmFzdF9jb25zdW1lcl9vbmx5IC0+IERlZmVycmVkLmFueSAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgICB8IGBCb3RoX2NvbnN1bWVycyAtPiBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgc3RpbGxfb3BlbiB+ZjpwdXNoYmFjaylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuIGluXG4gICAgICAgICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdyB+ZnJvbTpxdWV1ZSk7XG4gICAgICAgICAgIHN0aWxsX29wZW4pKVxuICAgICBpblxuICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjpjbG9zZTtcbiAgICAgcmV0dXJuICgpKTtcbiAgcmVhZGVyMCwgcmVhZGVyMVxuOztcblxubGV0IHNldF9pbmZvIHQgaW5mbyA9IHNldF9pbmZvIHQgKFNvbWUgaW5mbylcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5cbnR5cGUgKCdhLCAncGhhbnRvbSkgdCA9XG4gIHsgY3VycmVudF92YWx1ZSA6ICdhIE1vcHRpb24udFxuICA7IHRha2VuIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICA7IG11dGFibGUgdmFsdWVfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgdmFsdWVfYXZhaWxhYmxlIHQgPSBJdmFyLnJlYWQgdC52YWx1ZV9hdmFpbGFibGVcbmxldCBpc19lbXB0eSB0ID0gTW9wdGlvbi5pc19ub25lIHQuY3VycmVudF92YWx1ZVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gKHQgOiBfIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y3VycmVudF92YWx1ZTooY2hlY2sgKE1vcHRpb24uaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH50YWtlbjooY2hlY2sgKEJ2YXIuaW52YXJpYW50IFVuaXQuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICB+dmFsdWVfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9hdmFpbGFibGUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHZhbHVlX2F2YWlsYWJsZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OihNb3B0aW9uLmlzX3NvbWUgdC5jdXJyZW50X3ZhbHVlKSkpKVxuOztcblxubGV0IHBlZWsgdCA9IE1vcHRpb24uZ2V0IHQuY3VycmVudF92YWx1ZVxuXG5sZXQgcGVla19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIucGVla19leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gWyVzZXhwIChwZWVrIHQgOiBhIG9wdGlvbildXG5cbm1vZHVsZSBSZWFkX3dyaXRlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWRfd3JpdGUpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5tb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHJlYWQpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpbnZhcmlhbnQgaW52YXJpYW50X2EgaWdub3JlIHRcbmVuZFxuXG5sZXQgcmVhZF9vbmx5ICh0IDogKCdhLCBbPiByZWFkIF0pIHQpID0gKHQgOj4gKCdhLCByZWFkKSB0KVxubGV0IHdyaXRlX29ubHkgKHQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQpID0gKHQgOj4gKCdhLCB3cml0ZSkgdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIHsgY3VycmVudF92YWx1ZSA9IE1vcHRpb24uY3JlYXRlICgpXG4gIDsgdGFrZW4gPSBCdmFyLmNyZWF0ZSAoKVxuICA7IHZhbHVlX2F2YWlsYWJsZSA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCB0YWtlX25vbmVtcHR5IHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgciA9IE1vcHRpb24uZ2V0X3NvbWVfZXhuIHQuY3VycmVudF92YWx1ZSBpblxuICBNb3B0aW9uLnNldF9ub25lIHQuY3VycmVudF92YWx1ZTtcbiAgQnZhci5icm9hZGNhc3QgdC50YWtlbiAoKTtcbiAgdC52YWx1ZV9hdmFpbGFibGUgPC0gSXZhci5jcmVhdGUgKCk7XG4gIHJcbjs7XG5cbmxldCB0YWtlX25vd19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIk12YXIudGFrZV9leG4gY2FsbGVkIG9uIGVtcHR5IG12YXJcIl07XG4gIHRha2Vfbm9uZW1wdHkgdFxuOztcblxubGV0IHRha2Vfbm93IHQgPSBpZiBub3QgKGlzX2VtcHR5IHQpIHRoZW4gU29tZSAodGFrZV9ub25lbXB0eSB0KSBlbHNlIE5vbmVcblxubGV0IHJlYyB0YWtlIHQgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuICh0YWtlX25vbmVtcHR5IHQpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICB0YWtlIHQpXG47O1xuXG5sZXQgc2V0IHQgdiA9XG4gIE1vcHRpb24uc2V0X3NvbWUgdC5jdXJyZW50X3ZhbHVlIHY7XG4gIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnZhbHVlX2F2YWlsYWJsZSAoKVxuOztcblxubGV0IHVwZGF0ZSB0IH5mID0gc2V0IHQgKGYgKHBlZWsgdCkpXG5sZXQgdXBkYXRlX2V4biB0IH5mID0gc2V0IHQgKGYgKHBlZWtfZXhuIHQpKVxubGV0IHRha2VuIHQgPSBCdmFyLndhaXQgdC50YWtlblxuXG5sZXQgcmVjIHB1dCB0IHYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gKFxuICAgIHNldCB0IHY7XG4gICAgcmV0dXJuICgpKVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHRha2VuIHQgaW5cbiAgICBwdXQgdCB2KVxuOztcblxubGV0IHBpcGVfd2hlbl9yZWFkeSB0ID1cbiAgbGV0IHIsIHcgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCViaW5kICgpID0gdmFsdWVfYXZhaWxhYmxlIHQgaW5cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHcpXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCB0YWtlX25vdyB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wICgpXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IFBpcGUud3JpdGUgdyB4IGluXG4gICAgICAgIGxvb3AgKCkpXG4gICAgZWxzZSByZXR1cm4gKClcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3IgKGxvb3AgKCkpO1xuICByXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiB1bml0IEl2YXIudFxuICAgIDsgcmVzdWx0IDogJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OnJlc3RfZXhuXG4gICAgICAgICAgIGYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfb3JfZXJyb3IgPyhyZXN0X2V4biA9IGBMb2cpIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX2pvaW5fb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6cmVzdF9leG5cbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRocm90dGxlZCA9IFRocm90dGxlZFxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgcmV0dXJuID0gRGVmZXJyZWQucmV0dXJuXG5cbiAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0IHRoZW4gZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpIGVsc2UgRGVmZXJyZWQuYmluZCB0IH5mXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHRcbiAgICB0aGVuIHJldHVybiAoZiAoRGVmZXJyZWQudmFsdWVfZXhuIHQpKVxuICAgIGVsc2UgRGVmZXJyZWQubWFwIHQgfmZcbiAgOztcblxuICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgTW9uYWQuTWFrZSAoVClcblxubGV0IGNyZWF0ZSA9IERlZmVycmVkLmNyZWF0ZVxubGV0IGRvbid0X3dhaXRfZm9yID0gRGVmZXJyZWQuZG9uJ3Rfd2FpdF9mb3JcbmxldCBpbnZhcmlhbnQgPSBEZWZlcnJlZC5pbnZhcmlhbnRcbmxldCBpc19kZXRlcm1pbmVkID0gRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZFxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBwZWVrID0gRGVmZXJyZWQucGVla1xubGV0IHVuaXQgPSBEZWZlcnJlZC51bml0XG5sZXQgdmFsdWVfZXhuID0gRGVmZXJyZWQudmFsdWVfZXhuXG5sZXQgdXBvbiB0IGYgPSBpZiBpc19kZXRlcm1pbmVkIHQgdGhlbiBmICh2YWx1ZV9leG4gdCkgZWxzZSBEZWZlcnJlZC51cG9uIHQgZlxuXG5sZXQgYm90aCB0MSB0MiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPiB1cG9uIHQxIChmdW4gYTEgLT4gdXBvbiB0MiAoZnVuIGEyIC0+IEl2YXIuZmlsbCByZXN1bHQgKGExLCBhMikpKSlcbjs7XG5cbmxldCBvayB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gcmV0dXJuIChPayAodmFsdWVfZXhuIHQpKSBlbHNlIERlZmVycmVkLm9rIHRcbmxldCBpZ25vcmVfbSB0ID0gaWYgaXNfZGV0ZXJtaW5lZCB0IHRoZW4gdW5pdCBlbHNlIERlZmVycmVkLmlnbm9yZV9tIHRcblxubGV0IGFueSB0cyA9XG4gIG1hdGNoIExpc3QuZmluZCB0cyB+Zjppc19kZXRlcm1pbmVkIHdpdGhcbiAgfCBTb21lIHggLT4gcmV0dXJuICh2YWx1ZV9leG4geClcbiAgfCBOb25lIC0+IERlZmVycmVkLmFueSB0c1xuOztcblxubGV0IGFueV91bml0IHRzID1cbiAgaWYgTGlzdC5leGlzdHMgdHMgfmY6KGlzX2RldGVybWluZWQgOiB1bml0IHQgLT4gYm9vbClcbiAgdGhlbiB1bml0XG4gIGVsc2UgRGVmZXJyZWQuYW55X3VuaXQgdHNcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbGV0ICggPj4+ICkgPSB1cG9uXG5lbmRcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbGV0IG9wZW4gSW5maXggaW5cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBvcGVuIEluZml4XG4gIG9wZW4gTGV0X3N5bnRheFxuXG4gIGxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgICBjcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICAgIGluXG4gICAgICBsb29wIHQgMCBpbml0KVxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbiAgbGV0IGFsbF91bml0IGRzID0gaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpIDogdW5pdCBULnQpXG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgICBMaXN0LnJldlxuICAgICAgKExpc3QuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT4gaWYlbWFwIGYgZWx0IHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgYWxsX3VuaXQgPSBMaXN0LmFsbF91bml0XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRWFnZXJfZGVmZXJyZWQwXG5vcGVuIERlZmVycmVkLkxldF9zeW50YXhcblxuKCogQ29waWVkIGZyb20gW2RlZmVycmVkX3Jlc3VsdC5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2Vycm9yKSB0ID0gKCdhLCAnZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBsZXQlbWFwIHQxID0gdDFcbiAgYW5kIHQyID0gdDIgaW5cbiAgUmVzdWx0LmNvbWJpbmUgdDEgdDIgfm9rIH5lcnJcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChPayBhKVxuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBEZWZlcnJlZC5iaW5kIHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgT2sgYSAtPiBmIGFcbiAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IERlZmVycmVkLnJldHVybiBlcnJvcilcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgZmFpbCB4ID0gRGVmZXJyZWQucmV0dXJuIChFcnJvciB4KVxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxubGV0IG1hcF9lcnJvciB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IFJlc3VsdC5tYXBfZXJyb3IgciB+ZilcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBFYWdlcl9kZWZlcnJlZDBcbm1vZHVsZSBEZWZlcnJlZF9yZXN1bHQgPSBFYWdlcl9kZWZlcnJlZF9yZXN1bHRcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID8ocnVuID0gYE5vdykgPSBNb25pdG9yLnRyeV93aXRoIH5ydW5cbmVuZFxuXG4oKiBDb3BpZWQgZnJvbSBbZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSB0ID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLm9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSlcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIHggaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgZmluZF9tYXAgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCByZWMgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBtYXRjaCViaW5kIGYgc3RhdGUgd2l0aFxuICB8IGBSZXBlYXQgc3RhdGUgLT4gcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGZcbiAgfCBgRmluaXNoZWQgc3RhdGUgLT4gcmV0dXJuIHN0YXRlXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IEVhZ2VyX2RlZmVycmVkX2ludGYuU1xuXG5pbmNsdWRlIEVhZ2VyX2RlZmVycmVkMVxuXG5tb2R1bGUgVXNlID0gc3RydWN0XG4gIG1vZHVsZSBEZWZlcnJlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxXG4gIGVuZFxuXG4gIGluY2x1ZGUgKEVhZ2VyX2RlZmVycmVkMSA6IE1vbmFkLkluZml4IHdpdGggdHlwZSAnYSB0IDo9ICdhIERlZmVycmVkLnQpXG4gIGluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxLkxldF9zeW50YXhcblxuICBsZXQgdXBvbiA9IEVhZ2VyX2RlZmVycmVkMS51cG9uXG4gIGxldCAoID4+PiApID0gRWFnZXJfZGVmZXJyZWQxLkluZml4LiggPj4+IClcblxuICBsZXQgKCA+Pj0/ICkgeCBmID1cbiAgICB4XG4gICAgPj49IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IHJldHVybiBlcnJvclxuICAgIHwgT2sgdiAtPiBmIHZcbiAgOztcblxuICBsZXQgKCA+Pnw/ICkgeCBmID1cbiAgICB4XG4gICAgPj58IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG4gICAgfCBPayB2IC0+IE9rIChmIHYpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzXG4gICAgfCBPa190b193cml0ZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpc19jbG9zZWQgPSBmdW5jdGlvblxuICAgIHwgQ2xvc2VkIC0+IHRydWVcbiAgICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IGZhbHNlXG4gICAgfCBPa190b193cml0ZSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYWxsYmFja19hcml0eSA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkxX2xvY2FsIDogKCgnYVtAbG9jYWxdKSAtPiB1bml0KSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHkzIDogKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0KSB0XG4gICAgfCBBcml0eTUgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1c2VzX2xvY2FsX2FyZ3MgOiB0eXBlIGEuIGEgdCAtPiBib29sID0gZnVuY3Rpb25cbiAgICB8IEFyaXR5MSAtPiBmYWxzZVxuICAgIHwgQXJpdHkxX2xvY2FsIC0+IHRydWVcbiAgICB8IEFyaXR5MiAtPiBmYWxzZVxuICAgIHwgQXJpdHkzIC0+IGZhbHNlXG4gICAgfCBBcml0eTQgLT4gZmFsc2VcbiAgICB8IEFyaXR5NSAtPiBmYWxzZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBMYXN0X3ZhbHVlIDogc2lnXG4gIHR5cGUgJ2NhbGxiYWNrIHRcblxuICB2YWwgY3JlYXRlX2V4biA6ICdjYWxsYmFjayBDYWxsYmFja19hcml0eS50IC0+ICdjYWxsYmFjayB0XG4gIHZhbCBzZXQxIDogKCdhIC0+IHVuaXQpIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0MiA6ICgnYSAtPiAnYiAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+IHVuaXRcbiAgdmFsIHNldDMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0XG4gIHZhbCBzZXQ0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdFxuICB2YWwgc2V0NSA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXRcbiAgdmFsIHNlbmQgOiAnY2FsbGJhY2sgdCAtPiAnY2FsbGJhY2sgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgXyB0dXBsZSA9XG4gICAgfCBUdXBsZTEgOiB7IG11dGFibGUgYXJnMSA6ICdhIH0gLT4gKCdhIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTIgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlMyA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICA7IG11dGFibGUgYXJnMyA6ICdjXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTQgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIH1cbiAgICAgICAgLT4gKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHR1cGxlXG4gICAgfCBUdXBsZTUgOlxuICAgICAgICB7IG11dGFibGUgYXJnMSA6ICdhXG4gICAgICAgIDsgbXV0YWJsZSBhcmcyIDogJ2JcbiAgICAgICAgOyBtdXRhYmxlIGFyZzMgOiAnY1xuICAgICAgICA7IG11dGFibGUgYXJnNCA6ICdkXG4gICAgICAgIDsgbXV0YWJsZSBhcmc1IDogJ2VcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdCkgdHVwbGVcblxuICB0eXBlICdjYWxsYmFjayB0ID0gJ2NhbGxiYWNrIHR1cGxlIG9wdGlvbiByZWZcblxuICBsZXQgY3JlYXRlX2V4biAodHlwZSBjYWxsYmFjaykgKGFyaXR5IDogY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudCkgOiBjYWxsYmFjayB0ID1cbiAgICBpZiBDYWxsYmFja19hcml0eS51c2VzX2xvY2FsX2FyZ3MgYXJpdHlcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQ2Fubm90IHNhdmUgbGFzdCB2YWx1ZSB3aGVuIHVzaW5nIGxvY2FsIGFyZ3NcIiAoYXJpdHkgOiBfIENhbGxiYWNrX2FyaXR5LnQpXTtcbiAgICByZWYgTm9uZVxuICA7O1xuXG4gIGxldCBzZXQxIHQgYSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMSB7IGFyZzEgPSBhIH0pXG4gICAgfCBTb21lIChUdXBsZTEgYXJncykgLT4gYXJncy5hcmcxIDwtIGFcbiAgOztcblxuICBsZXQgc2V0MiB0IGEgYiA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMiB7IGFyZzEgPSBhOyBhcmcyID0gYiB9KVxuICAgIHwgU29tZSAoVHVwbGUyIGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBiXG4gIDs7XG5cbiAgbGV0IHNldDMgdCBhIGIgYyA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlMyB7IGFyZzEgPSBhOyBhcmcyID0gYjsgYXJnMyA9IGMgfSlcbiAgICB8IFNvbWUgKFR1cGxlMyBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjXG4gIDs7XG5cbiAgbGV0IHNldDQgdCBhIGIgYyBkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGU0IHsgYXJnMSA9IGE7IGFyZzIgPSBiOyBhcmczID0gYzsgYXJnNCA9IGQgfSlcbiAgICB8IFNvbWUgKFR1cGxlNCBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGE7XG4gICAgICBhcmdzLmFyZzIgPC0gYjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBjO1xuICAgICAgYXJncy5hcmc0IDwtIGRcbiAgOztcblxuICBsZXQgc2V0NSB0IGFyZzEgYXJnMiBhcmczIGFyZzQgYXJnNSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiB0IDo9IFNvbWUgKFR1cGxlNSB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQ7IGFyZzUgfSlcbiAgICB8IFNvbWUgKFR1cGxlNSBhcmdzKSAtPlxuICAgICAgYXJncy5hcmcxIDwtIGFyZzE7XG4gICAgICBhcmdzLmFyZzIgPC0gYXJnMjtcbiAgICAgIGFyZ3MuYXJnMyA8LSBhcmczO1xuICAgICAgYXJncy5hcmc0IDwtIGFyZzQ7XG4gICAgICBhcmdzLmFyZzUgPC0gYXJnNVxuICA7O1xuXG4gIGxldCBzZW5kICh0eXBlIGNhbGxiYWNrKSAodCA6IGNhbGxiYWNrIHQpIChjYWxsYmFjayA6IGNhbGxiYWNrKSA6IHVuaXQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKFR1cGxlMSB7IGFyZzEgfSkgLT4gY2FsbGJhY2sgYXJnMVxuICAgIHwgU29tZSAoVHVwbGUyIHsgYXJnMTsgYXJnMiB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzJcbiAgICB8IFNvbWUgKFR1cGxlMyB7IGFyZzE7IGFyZzI7IGFyZzMgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzNcbiAgICB8IFNvbWUgKFR1cGxlNCB7IGFyZzE7IGFyZzI7IGFyZzM7IGFyZzQgfSkgLT4gY2FsbGJhY2sgYXJnMSBhcmcyIGFyZzMgYXJnNFxuICAgIHwgU29tZSAoVHVwbGU1IHsgYXJnMTsgYXJnMjsgYXJnMzsgYXJnNDsgYXJnNSB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzIgYXJnMyBhcmc0IGFyZzVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBbGxvd1xuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZVxuICAgIHwgUmFpc2VcbiAgW0BAZGVyaXZpbmcgZW51bWVyYXRlLCBzZXhwX29mXVxuXG4gIGxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgPSBmdW5jdGlvblxuICAgIHwgQWxsb3cgLT4gdHJ1ZVxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiB0cnVlXG4gICAgfCBSYWlzZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBzYXZlX2xhc3RfdmFsdWVfZXhuIHQgY2FsbGJhY2tfYXJpdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQWxsb3dfYW5kX3NlbmRfbGFzdF92YWx1ZSAtPiBTb21lIChMYXN0X3ZhbHVlLmNyZWF0ZV9leG4gY2FsbGJhY2tfYXJpdHkpXG4gICAgfCBBbGxvdyAtPiBOb25lXG4gICAgfCBSYWlzZSAtPiBOb25lXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1c19pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgU3Vic2NyaWJlciA9IHN0cnVjdFxuICB0eXBlICdjYWxsYmFjayB0ID1cbiAgICB7IGJ1c19pZCA6IEJ1c19pZC50XG4gICAgOyBjYWxsYmFjayA6ICdjYWxsYmFja1xuICAgIDsgZXh0cmFjdF9leG4gOiBib29sXG4gICAgOyAoKiBbc3Vic2NyaWJlcnNfaW5kZXhdIGlzIHRoZSBpbmRleCBvZiB0aGlzIHN1YnNjcmliZXIgaW4gdGhlIGJ1cydzIFtzdWJzY3JpYmVyc11cbiAgICAgICAgIGFycmF5LiAgWy0xXSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHN1YnNjcmliZXIgaXMgbm90IHN1YnNjcmliZWQuICopXG4gICAgICBtdXRhYmxlIHN1YnNjcmliZXJzX2luZGV4IDogaW50XG4gICAgOyBvbl9jYWxsYmFja19yYWlzZSA6IChFcnJvci50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgb25fY2xvc2UgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgaXNfc3Vic2NyaWJlZCB0IH50b18gPSB0LnN1YnNjcmliZXJzX2luZGV4ID49IDAgJiYgQnVzX2lkLmVxdWFsIHQuYnVzX2lkIHRvX1xuXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGNhbGxiYWNrID0gX1xuICAgICAgICA7IGJ1c19pZCA9IF9cbiAgICAgICAgOyBleHRyYWN0X2V4blxuICAgICAgICA7IHN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgOyBvbl9jbG9zZSA9IF9cbiAgICAgICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfVxuICAgIDogU2V4cC50XG4gICAgPVxuICAgIExpc3RcbiAgICAgIFsgQXRvbSBcIkJ1cy5TdWJzY3JpYmVyLnRcIlxuICAgICAgOyBbJW1lc3NhZ2VcbiAgICAgICAgXCJcIlxuICAgICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDpcbiAgICAgICAgICAgIChpZiBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmcgdGhlbiBOb25lIGVsc2UgU29tZSBzdWJzY3JpYmVyc19pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIChvbl9jYWxsYmFja19yYWlzZSA6ICgoRXJyb3IudCAtPiB1bml0KSBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfmV4dHJhY3RfZXhuOlxuICAgICAgICAgICAgKGlmIGV4dHJhY3RfZXhuIHRoZW4gU29tZSB0cnVlIGVsc2UgTm9uZSA6IChib29sIG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICAoc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgICB+Y2FsbGJhY2s6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgICB+ZXh0cmFjdF9leG46aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDppZ25vcmVcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOmlnbm9yZVxuICAgICAgICB+b25fY2xvc2U6aWdub3JlXG4gICAgICAgIH5zdWJzY3JpYmVkX2Zyb206aWdub3JlKVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgICAgIH5jYWxsYmFja1xuICAgICAgICB+YnVzX2lkXG4gICAgICAgIH5leHRyYWN0X2V4blxuICAgICAgICB+c3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgIH5vbl9jbG9zZVxuICAgID1cbiAgICB7IGJ1c19pZFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4dHJhY3RfZXhuXG4gICAgOyBzdWJzY3JpYmVyc19pbmRleFxuICAgIDsgb25fY2FsbGJhY2tfcmFpc2VcbiAgICA7IG9uX2Nsb3NlXG4gICAgOyBzdWJzY3JpYmVkX2Zyb21cbiAgICB9XG4gIDs7XG5lbmRcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgdCA9XG4gIHsgYnVzX2lkIDogQnVzX2lkLnRcbiAgOyBuYW1lIDogSW5mby50IG9wdGlvblxuICA7IGNhbGxiYWNrX2FyaXR5IDogJ2NhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnRcbiAgOyBjcmVhdGVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gIDsgb25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnRcbiAgOyBvbl9jYWxsYmFja19yYWlzZSA6IEVycm9yLnQgLT4gdW5pdFxuICA7IGxhc3RfdmFsdWUgOiAnY2FsbGJhY2sgTGFzdF92YWx1ZS50IG9wdGlvblxuICA7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gIDsgbXV0YWJsZSB3cml0ZV9ldmVyX2NhbGxlZCA6IGJvb2xcbiAgOyBtdXRhYmxlIG51bV9zdWJzY3JpYmVycyA6IGludFxuICA7ICgqIFtzdWJzY3JpYmVyc10gY29udGFpbnMgYWxsIHN1YnNjcmliZXJzIHRvIHRoZSBidXMsIGluIGEgY29udGlndW91cyBwcmVmaXggZnJvbVxuICAgICAgIGluZGV4IFswXSB0byBbbnVtX3N1YnNjcmliZXJzIC0gMV0uICopXG4gICAgbXV0YWJsZSBzdWJzY3JpYmVycyA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgT3B0aW9uX2FycmF5LnRcbiAgOyAoKiBbY2FsbGJhY2tzXSBob2xkcyB0aGUgY2FsbGJhY2tzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgb2YgW3N1YnNjcmliZXJzXS4gKilcbiAgICBtdXRhYmxlIGNhbGxiYWNrcyA6ICdjYWxsYmFjayBPcHRpb25fYXJyYXkudFxuICA7IG11dGFibGUgdW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA6ICdjYWxsYmFjayBTdWJzY3JpYmVyLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3RcbiAgICAgIF9cbiAgICAgIF9cbiAgICAgIHsgYnVzX2lkID0gX1xuICAgICAgOyBjYWxsYmFja19hcml0eVxuICAgICAgOyBjYWxsYmFja3MgPSBfXG4gICAgICA7IGNyZWF0ZWRfZnJvbVxuICAgICAgOyBsYXN0X3ZhbHVlID0gX1xuICAgICAgOyBuYW1lXG4gICAgICA7IG51bV9zdWJzY3JpYmVyc1xuICAgICAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIDsgb25fY2FsbGJhY2tfcmFpc2UgPSBfXG4gICAgICA7IHN0YXRlXG4gICAgICA7IHN1YnNjcmliZXJzXG4gICAgICA7IHdyaXRlX2V2ZXJfY2FsbGVkXG4gICAgICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBfXG4gICAgICB9XG4gID1cbiAgbGV0IHN1YnNjcmliZXJzID1cbiAgICBBcnJheS5pbml0IG51bV9zdWJzY3JpYmVycyB+ZjooZnVuIGkgLT4gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpKVxuICBpblxuICBbJW1lc3NhZ2VcbiAgICBcIlwiXG4gICAgICAobmFtZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgKGNhbGxiYWNrX2FyaXR5IDogXyBDYWxsYmFja19hcml0eS50KVxuICAgICAgKGNyZWF0ZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAob25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnQpXG4gICAgICAoc3RhdGUgOiBTdGF0ZS50KVxuICAgICAgKHdyaXRlX2V2ZXJfY2FsbGVkIDogYm9vbClcbiAgICAgIChzdWJzY3JpYmVycyA6IF8gU3Vic2NyaWJlci50IEFycmF5LnQpXVxuOztcblxudHlwZSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgYnVzID0gKCdjYWxsYmFjaywgJ3BoYW50b20pIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHJlYWRfb25seSB0ID0gKHQgOj4gKF8sIHJlYWQpIHQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+YnVzX2lkOmlnbm9yZVxuICAgICAgfm5hbWU6aWdub3JlXG4gICAgICB+Y2FsbGJhY2tzOlxuICAgICAgICAoY2hlY2sgKGZ1biBjYWxsYmFja3MgLT5cbiAgICAgICAgICAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5zdWJzY3JpYmVycyk7XG4gICAgICAgICAgIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGNhbGxiYWNrcyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIGludmFyaWFudF9hIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIGNhbGxiYWNrcyBpKVxuICAgICAgICAgICAgIGVsc2UgYXNzZXJ0IChPcHRpb25fYXJyYXkuaXNfbm9uZSBjYWxsYmFja3MgaSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+Y2FsbGJhY2tfYXJpdHk6aWdub3JlXG4gICAgICB+Y3JlYXRlZF9mcm9tOmlnbm9yZVxuICAgICAgfm51bV9zdWJzY3JpYmVyczooY2hlY2sgKGZ1biBudW1fc3Vic2NyaWJlcnMgLT4gYXNzZXJ0IChudW1fc3Vic2NyaWJlcnMgPj0gMCkpKVxuICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTppZ25vcmVcbiAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgIH5sYXN0X3ZhbHVlOmlnbm9yZVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfndyaXRlX2V2ZXJfY2FsbGVkOmlnbm9yZVxuICAgICAgfnN1YnNjcmliZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBzdWJzY3JpYmVycyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBzdWJzY3JpYmVycyAtIDEgZG9cbiAgICAgICAgICAgICBpZiBpIDwgdC5udW1fc3Vic2NyaWJlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBzdWJzY3JpYmVycyBpIGluXG4gICAgICAgICAgICAgICBTdWJzY3JpYmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdWJzY3JpYmVyO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChpID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCkpXG4gICAgICAgICAgICAgZWxzZSBhc3NlcnQgKE9wdGlvbl9hcnJheS5pc19ub25lIHN1YnNjcmliZXJzIGkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGU6aWdub3JlKVxuOztcblxubGV0IGlzX2Nsb3NlZCB0ID0gU3RhdGUuaXNfY2xvc2VkIHQuc3RhdGVcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWRfd3JpdGUpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSAnY2FsbGJhY2sgdCA9ICgnY2FsbGJhY2ssIHJlYWQpIGJ1cyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldFtAY29sZF0gc3RhcnRfd3JpdGVfZmFpbGluZyB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJbQnVzLndyaXRlXSBjYWxsZWQgb24gY2xvc2VkIGJ1c1wiIHQgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJbQnVzLndyaXRlXSBjYWxsZWQgZnJvbSBjYWxsYmFjayBvbiB0aGUgc2FtZSBidXNcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiAoXywgXykgdF1cbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LnN1YnNjcmliZXJzXG5cbmxldCBtYXliZV9zaHJpbmtfY2FwYWNpdHkgdCA9XG4gIGlmIHQubnVtX3N1YnNjcmliZXJzICogNCA8PSBjYXBhY2l0eSB0XG4gIHRoZW4gKFxuICAgIGxldCBkZXNpcmVkX2NhcGFjaXR5ID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgICBsZXQgY29weV9hbmRfc2hyaW5rIGFycmF5ID1cbiAgICAgIGxldCBuZXdfYXJyYXkgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46ZGVzaXJlZF9jYXBhY2l0eSBpblxuICAgICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgICAgfnNyYzphcnJheVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5kc3Q6bmV3X2FycmF5XG4gICAgICAgIH5kc3RfcG9zOjBcbiAgICAgICAgfmxlbjp0Lm51bV9zdWJzY3JpYmVycztcbiAgICAgIG5ld19hcnJheVxuICAgIGluXG4gICAgdC5zdWJzY3JpYmVycyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5zdWJzY3JpYmVycztcbiAgICB0LmNhbGxiYWNrcyA8LSBjb3B5X2FuZF9zaHJpbmsgdC5jYWxsYmFja3MpXG47O1xuXG5sZXQgYWRkX3N1YnNjcmliZXIgdCAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KSB+YXRfc3Vic2NyaWJlcnNfaW5kZXggPVxuICBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IDwtIGF0X3N1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5zdWJzY3JpYmVycyBhdF9zdWJzY3JpYmVyc19pbmRleCBzdWJzY3JpYmVyO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5jYWxsYmFja3MgYXRfc3Vic2NyaWJlcnNfaW5kZXggc3Vic2NyaWJlci5jYWxsYmFja1xuOztcblxubGV0IHJlbW92ZV9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcnNfaW5kZXggPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4IGluXG4gIHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggPC0gLTE7XG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LnN1YnNjcmliZXJzIHN1YnNjcmliZXJzX2luZGV4O1xuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5jYWxsYmFja3Mgc3Vic2NyaWJlcnNfaW5kZXhcbjs7XG5cbmxldCB1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWJzY3JpYmVyIHQgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCkgPVxuICBsZXQgc3Vic2NyaWJlcl9pbmRleCA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggaW5cbiAgbGV0IGxhc3Rfc3Vic2NyaWJlcl9pbmRleCA9IHQubnVtX3N1YnNjcmliZXJzIC0gMSBpblxuICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXI7XG4gIGlmIHN1YnNjcmliZXJfaW5kZXggPCBsYXN0X3N1YnNjcmliZXJfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IGxhc3Rfc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBsYXN0X3N1YnNjcmliZXJfaW5kZXggaW5cbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlcjtcbiAgICBhZGRfc3Vic2NyaWJlciB0IGxhc3Rfc3Vic2NyaWJlciB+YXRfc3Vic2NyaWJlcnNfaW5kZXg6c3Vic2NyaWJlcl9pbmRleCk7XG4gIHQubnVtX3N1YnNjcmliZXJzIDwtIHQubnVtX3N1YnNjcmliZXJzIC0gMTtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldCB1bnN1YnNjcmliZSB0IHN1YnNjcmliZXIgPVxuICBpZiBTdWJzY3JpYmVyLmlzX3N1YnNjcmliZWQgc3Vic2NyaWJlciB+dG9fOnQuYnVzX2lkXG4gIHRoZW4gKFxuICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICAgIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA8LSBzdWJzY3JpYmVyIDo6IHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZVxuICAgIHwgQ2xvc2VkIC0+XG4gICAgICAoKiBUaGlzIGNhbiBoYXBwZW4gaWYgZHVyaW5nIFt3cml0ZV0sIFt1bnN1YnNjcmliZV0gaXMgY2FsbGVkIGFmdGVyIFtjbG9zZV0uICBXZVxuICAgICAgICAgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBiZWNhdXNlIGFsbCBzdWJzY3JpYmVycyB3aWxsIGJlIHVuc3Vic2NyaWJlZCBhZnRlciB0aGVcbiAgICAgICAgIFt3cml0ZV0gZmluaXNoZXMuICopXG4gICAgICAoKVxuICAgIHwgT2tfdG9fd3JpdGUgLT4gdW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0IHN1YnNjcmliZXIpXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0ID1cbiAgTGlzdC5pdGVyIHQudW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSB+ZjoodW5zdWJzY3JpYmVfYXNzdW1pbmdfdmFsaWRfc3Vic2NyaWJlciB0KTtcbiAgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIDwtIFtdXG47O1xuXG5sZXRbQGNvbGRdIHVuc3Vic2NyaWJlX2FsbCB0ID1cbiAgYXNzZXJ0IChpc19jbG9zZWQgdCk7XG4gIGZvciBpID0gMCB0byB0Lm51bV9zdWJzY3JpYmVycyAtIDEgZG9cbiAgICBsZXQgc3Vic2NyaWJlciA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5zdWJzY3JpYmVycyBpIGluXG4gICAgT3B0aW9uLml0ZXIgc3Vic2NyaWJlci5vbl9jbG9zZSB+ZjooZnVuIG9uX2Nsb3NlIC0+IG9uX2Nsb3NlICgpKTtcbiAgICByZW1vdmVfc3Vic2NyaWJlciB0IHN1YnNjcmliZXJcbiAgZG9uZTtcbiAgdC5udW1fc3Vic2NyaWJlcnMgPC0gMDtcbiAgbWF5YmVfc2hyaW5rX2NhcGFjaXR5IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gZmluaXNoX3dyaXRlIHQgPVxuICBpZiBub3QgKExpc3QuaXNfZW1wdHkgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlKSB0aGVuIHVuc3Vic2NyaWJlX2FmdGVyX2ZpbmlzaF93cml0ZSB0O1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gdW5zdWJzY3JpYmVfYWxsIHRcbiAgfCBPa190b193cml0ZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIE9rX3RvX3dyaXRlXG47O1xuXG5sZXRbQGNvbGRdIGNsb3NlIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT4gKClcbiAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiB0LnN0YXRlIDwtIENsb3NlZFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgdC5zdGF0ZSA8LSBDbG9zZWQ7XG4gICAgdW5zdWJzY3JpYmVfYWxsIHRcbjs7XG5cbmxldCBjYWxsX29uX2NhbGxiYWNrX3JhaXNlIHQgZXJyb3IgPVxuICB0cnkgdC5vbl9jYWxsYmFja19yYWlzZSBlcnJvciB3aXRoXG4gIHwgZXhuIC0+XG4gICAgY2xvc2UgdDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCBjYWxsYmFja19yYWlzZWQgdCBpIGV4biA9XG4gICgqIFtpXSB3YXMgaW5jcmVtZW50ZWQgYmVmb3JlIHRoZSBjYWxsYmFjayB3YXMgY2FsbGVkLCBzbyB3ZSBoYXZlIHRvIHN1YnRyYWN0IG9uZVxuICAgICBoZXJlLiAgV2UgZG8gdGhpcyBoZXJlLCByYXRoZXIgdGhhbiBhdCB0aGUgY2FsbCBzaXRlLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgICBjYWxsIHNpdGVzIGR1ZSB0byB0aGUgb3B0aW1pemF0aW9ucyBuZWVkZWQgdG8ga2VlcCB0aGlzIHplcm8tYWxsb2MuICopXG4gIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LnN1YnNjcmliZXJzIChpIC0gMSkgaW5cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCBzdWJzY3JpYmVyLmV4dHJhY3RfZXhuIHdpdGhcbiAgICB8IHRydWUgLT4gRXJyb3Iub2ZfZXhuIGV4blxuICAgIHwgZmFsc2UgLT5cbiAgICAgICgqIFRoaXMgW0JhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCldIGlzIGludGVuZGVkIHRvIGdyYWIgdGhlIGJhY2t0cmFjZSBvZiB0aGUgW3RyeVxuICAgICAgICAgLi4uIHdpdGhdJ3MgdGhhdCBjYWxsIFtjYWxsYmFja19yYWlzZWRdLiAgVGhlIGNhbGwgaXMgaGVyZSByYXRoZXIgdGhhbiBlYXJsaWVyIHNvXG4gICAgICAgICB0aGF0IHdlIG9ubHkgZG8gaXQgd2hlbiBbc3Vic2NyaWJlci5leHRyYWN0X2V4biA9IGZhbHNlXS4gKilcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJCdXMgc3Vic2NyaWJlciByYWlzZWRcIlxuICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgKGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50KVxuICAgICAgICAgIChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpXVxuICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XVxuICBpblxuICBtYXRjaCBzdWJzY3JpYmVyLm9uX2NhbGxiYWNrX3JhaXNlIHdpdGhcbiAgfCBOb25lIC0+IGNhbGxfb25fY2FsbGJhY2tfcmFpc2UgdCBlcnJvclxuICB8IFNvbWUgZiAtPlxuICAgICh0cnkgZiBlcnJvciB3aXRoXG4gICAgIHwgZXhuIC0+XG4gICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICBjYWxsX29uX2NhbGxiYWNrX3JhaXNlXG4gICAgICAgICB0XG4gICAgICAgICAobGV0IG9yaWdpbmFsX2Vycm9yID0gZXJyb3IgaW5cbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiQnVzIHN1YnNjcmliZXIncyBbb25fY2FsbGJhY2tfcmFpc2VdIHJhaXNlZFwiXG4gICAgICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgICAgIChiYWNrdHJhY2UgOiBCYWNrdHJhY2UudClcbiAgICAgICAgICAgICAgKG9yaWdpbmFsX2Vycm9yIDogRXJyb3IudCldXG4gICAgICAgICAgfD4gWyVvZl9zZXhwOiBFcnJvci50XSkpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXRfY2FsbGJhY2sgYSBpID1cbiAgKCogV2UgY29uc2lkZXJlZCB1c2luZyBbT3B0aW9uX2FycmF5LmdldF9zb21lX2V4bl0gYW5kXG4gICAgIFtPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4bl0gaGVyZSwgYnV0IGJvdGggYXJlIHNpZ25pZmljYW50bHkgc2xvd2VyLiAgQ2hlY2tcbiAgICAgdGhlIHdyaXRlIGJlbmNobWFya3MgaW4gW2JlbmNoX2J1cy5tbF0gYmVmb3JlIGNoYW5naW5nIHRoaXMuICopXG4gIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSBhIGlcbjs7XG5cbmxldCB3cml0ZV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZV9sb2NhbF9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIChhMSBbQGxvY2FsXSkgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlMl9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMlxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTNfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTNcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGU0X25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzIGE0XG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlNV9ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0IGE1ID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhMyBhNCBhNVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbigqIFRoZSBbd3JpdGVfTl0gZnVuY3Rpb25zIGFyZSB3cml0dGVuIHRvIG1pbmltaXNlIHJlZ2lzdGVycyBsaXZlIGFjcm9zcyBmdW5jdGlvbiBjYWxsc1xuICAgKHRoZXNlIGhhdmUgdG8gYmUgc3BpbGxlZCkuICBUaGV5IGFyZSBhbHNvIGFubm90YXRlZCBmb3IgcGFydGlhbCBpbmxpbmluZyAodGhlXG4gICBvbmUtY2FsbGJhY2sgY2FzZSBiZWNvbWVzIGlubGluZWQgd2hlcmVhcyB0aGUgPjEtY2FsbGJhY2stY2FzZSByZXF1aXJlcyBhIGZ1cnRoZXJcbiAgIGRpcmVjdCBjYWxsKS4gKilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZSB0IGExID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDEgbGFzdF92YWx1ZSBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGVfbG9jYWwgdCAoYTEgW0Bsb2NhbF0pID1cbiAgbGV0IGNhbGxiYWNrcyA9IHQuY2FsbGJhY2tzIGluXG4gIHQud3JpdGVfZXZlcl9jYWxsZWQgPC0gdHJ1ZTtcbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ2xvc2VkIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gc3RhcnRfd3JpdGVfZmFpbGluZyB0XG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIHQuc3RhdGUgPC0gV3JpdGVfaW5fcHJvZ3Jlc3M7XG4gICAgICBpZiB0Lm51bV9zdWJzY3JpYmVycyA9IDFcbiAgICAgIHRoZW4gKFxuICAgICAgICAodHJ5ICh1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAwKSBhMSB3aXRoXG4gICAgICAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAxIGV4bik7XG4gICAgICAgIGZpbmlzaF93cml0ZSB0KVxuICAgICAgZWxzZSAod3JpdGVfbG9jYWxfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUyIHQgYTEgYTIgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTJfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMik7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDIgbGFzdF92YWx1ZSBhMSBhMilcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGUzIHQgYTEgYTIgYTMgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTNfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDMgbGFzdF92YWx1ZSBhMSBhMiBhMylcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU0IHQgYTEgYTIgYTMgYTQgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTRfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDQgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gd3JpdGU1IHQgYTEgYTIgYTMgYTQgYTUgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIGEyIGEzIGE0IGE1IHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZTVfbm9uX29wdGltaXplZCBbQGlubGluZWQgbmV2ZXJdKSB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCBhNSk7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNldDUgbGFzdF92YWx1ZSBhMSBhMiBhMyBhNCBhNSlcbjs7XG5cbmxldCBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgdCA9XG4gIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5hbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICB0Lm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuOztcblxubGV0IGNyZWF0ZV9leG5cbiAgICAgID9uYW1lXG4gICAgICBjcmVhdGVkX2Zyb21cbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gICAgICB+KG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA6IE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS50KVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIE9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZS5zYXZlX2xhc3RfdmFsdWVfZXhuXG4gICAgICBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgICAgIGNhbGxiYWNrX2FyaXR5XG4gIGluXG4gIHsgYnVzX2lkID0gQnVzX2lkLmNyZWF0ZSAoKVxuICA7IG5hbWVcbiAgOyBjYWxsYmFja19hcml0eVxuICA7IGNyZWF0ZWRfZnJvbVxuICA7IG51bV9zdWJzY3JpYmVycyA9IDBcbiAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGVcbiAgOyBvbl9jYWxsYmFja19yYWlzZVxuICA7IGxhc3RfdmFsdWVcbiAgOyBzdWJzY3JpYmVycyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjowXG4gIDsgY2FsbGJhY2tzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjBcbiAgOyBzdGF0ZSA9IE9rX3RvX3dyaXRlXG4gIDsgd3JpdGVfZXZlcl9jYWxsZWQgPSBmYWxzZVxuICA7IHVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPSBbXVxuICB9XG47O1xuXG5sZXQgY2FuX3N1YnNjcmliZSB0ID0gYWxsb3dfc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIHQgfHwgbm90IHQud3JpdGVfZXZlcl9jYWxsZWRcblxubGV0IGVubGFyZ2VfY2FwYWNpdHkgdCA9XG4gIGxldCBjYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IEludC5tYXggMSAoY2FwYWNpdHkgKiAyKSBpblxuICBsZXQgY29weV9hbmRfZG91YmxlIGFycmF5ID1cbiAgICBsZXQgbmV3X2FycmF5ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6YXJyYXkgfnNyY19wb3M6MCB+ZHN0Om5ld19hcnJheSB+ZHN0X3BvczowIH5sZW46Y2FwYWNpdHk7XG4gICAgbmV3X2FycmF5XG4gIGluXG4gIHQuc3Vic2NyaWJlcnMgPC0gY29weV9hbmRfZG91YmxlIHQuc3Vic2NyaWJlcnM7XG4gIHQuY2FsbGJhY2tzIDwtIGNvcHlfYW5kX2RvdWJsZSB0LmNhbGxiYWNrc1xuOztcblxubGV0IHN1YnNjcmliZV9leG5cbiAgICAgID8oZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID9vbl9jYWxsYmFja19yYWlzZVxuICAgICAgP29uX2Nsb3NlXG4gICAgICB0XG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5mOmNhbGxiYWNrXG4gID1cbiAgaWYgbm90IChjYW5fc3Vic2NyaWJlIHQpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQnVzLnN1YnNjcmliZV9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCJcbiAgICAgIFslc2V4cCB+fihzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KSwgeyBidXMgPSAodCA6IChfLCBfKSB0KSB9XVxuICAgICAgWyVzZXhwX29mOiBTZXhwLnRdO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbnl0aGluZyB0aGF0IHNhdGlzZmllcyB0aGUgcmV0dXJuIHR5cGUgd2lsbCBkby4gIFNpbmNlIHRoZSBzdWJzY3JpYmVyIGlzIG5ldmVyXG4gICAgICAgc3RvcmVkIGluIHRoZSBhcnJheXMsIHRoZSBbb25fY2xvc2VdIGNhbGxiYWNrIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiAqKVxuICAgIFN1YnNjcmliZXIuY3JlYXRlXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIH5idXNfaWQ6dC5idXNfaWRcbiAgICAgIH5jYWxsYmFja1xuICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICB+c3Vic2NyaWJlcnNfaW5kZXg6KC0xKVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlXG4gICAgICB+b25fY2xvc2VcbiAgfCBPa190b193cml0ZSB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgKCogVGhlIGNvZGUgYmVsb3cgc2lkZSBlZmZlY3RzIFt0XSwgd2hpY2ggcG90ZW50aWFsbHkgY291bGQgaW50ZXJmZXJlIHdpdGggYSB3cml0ZSBpblxuICAgICAgIHByb2dyZXNzLiAgSG93ZXZlciwgdGhlIHNpZGUgZWZmZWN0cyBkb24ndCBjaGFuZ2UgdGhlIHByZWZpeCBvZiBbdC5jYWxsYmFja3NdIHRoYXRcbiAgICAgICB3cml0ZSB1c2VzOyB0aGV5IG9ubHkgY2hhbmdlIFt0LmNhbGxiYWNrc10gYmV5b25kIHRoYXQgcHJlZml4LiAgQW5kIGFsbCB3cml0ZXNcbiAgICAgICBleHRyYWN0IFt0Lm51bV9zdWJzY3JpYmVyc10gYXQgdGhlIHN0YXJ0LCBzbyB0aGF0IHRoZXkgd2lsbCBub3Qgc2VlIGFueSBzdWJzZXF1ZW50XG4gICAgICAgY2hhbmdlcyB0byBpdC4gKilcbiAgICBsZXQgc3Vic2NyaWJlciA9XG4gICAgICBTdWJzY3JpYmVyLmNyZWF0ZVxuICAgICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfmJ1c19pZDp0LmJ1c19pZFxuICAgICAgICB+Y2FsbGJhY2tcbiAgICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVyc1xuICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgfm9uX2Nsb3NlXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSB0ID0gdC5udW1fc3Vic2NyaWJlcnMgdGhlbiBlbmxhcmdlX2NhcGFjaXR5IHQ7XG4gICAgYWRkX3N1YnNjcmliZXIgdCBzdWJzY3JpYmVyIH5hdF9zdWJzY3JpYmVyc19pbmRleDp0Lm51bV9zdWJzY3JpYmVycztcbiAgICB0Lm51bV9zdWJzY3JpYmVycyA8LSB0Lm51bV9zdWJzY3JpYmVycyArIDE7XG4gICAgKG1hdGNoIHQubGFzdF92YWx1ZSB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgbGFzdF92YWx1ZSAtPiBMYXN0X3ZhbHVlLnNlbmQgbGFzdF92YWx1ZSBjYWxsYmFjayk7XG4gICAgc3Vic2NyaWJlclxuOztcblxubGV0IGl0ZXJfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA9XG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuaXRlcl9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWdub3JlIChzdWJzY3JpYmVfZXhuID9leHRyYWN0X2V4biB0IHN1YnNjcmliZWRfZnJvbSB+ZiA6IF8gU3Vic2NyaWJlci50KVxuOztcblxubW9kdWxlIEZvbGRfYXJpdHkgPSBzdHJ1Y3RcbiAgdHlwZSAoXywgXywgXykgdCA9XG4gICAgfCBBcml0eTEgOiAoJ2EgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTIgOiAoJ2EgLT4gJ2IgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3MsICdzKSB0XG4gICAgfCBBcml0eTVcbiAgICAgIDogKCAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0XG4gICAgICAgICwgJ3MgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ3NcbiAgICAgICAgLCAncyApXG4gICAgICAgICAgdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBmb2xkX2V4blxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICAodHlwZSBjIGYgcylcbiAgICAgICh0IDogKGMsIF8pIHQpXG4gICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgIChmb2xkX2FyaXR5IDogKGMsIGYsIHMpIEZvbGRfYXJpdHkudClcbiAgICAgIH4oaW5pdCA6IHMpXG4gICAgICB+KGYgOiBmKVxuICA9XG4gIGxldCBzdGF0ZSA9IHJlZiBpbml0IGluXG4gIGlmIG5vdCAoY2FuX3N1YnNjcmliZSB0KVxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCdXMuZm9sZF9leG4gY2FsbGVkIGFmdGVyIGZpcnN0IHdyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaXRlcl9leG5cbiAgICA/ZXh0cmFjdF9leG5cbiAgICB0XG4gICAgc3Vic2NyaWJlZF9mcm9tXG4gICAgfmY6XG4gICAgICAobWF0Y2ggZm9sZF9hcml0eSB3aXRoXG4gICAgICAgfCBBcml0eTEgLT4gZnVuIGExIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExXG4gICAgICAgfCBBcml0eTIgLT4gZnVuIGExIGEyIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyXG4gICAgICAgfCBBcml0eTMgLT4gZnVuIGExIGEyIGEzIC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzXG4gICAgICAgfCBBcml0eTQgLT4gZnVuIGExIGEyIGEzIGE0IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0XG4gICAgICAgfCBBcml0eTUgLT4gZnVuIGExIGEyIGEzIGE0IGE1IC0+IHN0YXRlIDo9IGYgIXN0YXRlIGExIGEyIGEzIGE0IGE1KVxuOztcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMgY2FsbGJhY2sgd3JpdGUgPVxuICAgICAgbGV0IGJ1c19yID0gcmVhZF9vbmx5IGJ1cyBpblxuICAgICAgaWdub3JlIChzdWJzY3JpYmVfZXhuIGJ1c19yIFslaGVyZV0gfmY6Y2FsbGJhY2sgOiBfIFN1YnNjcmliZXIudCk7XG4gICAgICBsZXQgc3RhcnRpbmdfbWlub3Jfd29yZHMgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICAgICAgbGV0IHN0YXJ0aW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIHdyaXRlICgpO1xuICAgICAgbGV0IGVuZGluZ19taW5vcl93b3JkcyA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gICAgICBsZXQgZW5kaW5nX21ham9yX3dvcmRzID0gR2MubWFqb3Jfd29yZHMgKCkgaW5cbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKGVuZGluZ19taW5vcl93b3JkcyAtIHN0YXJ0aW5nX21pbm9yX3dvcmRzKSB+ZXhwZWN0OjA7XG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChlbmRpbmdfbWFqb3Jfd29yZHMgLSBzdGFydGluZ19tYWpvcl93b3JkcykgfmV4cGVjdDowXG4gICAgOztcblxuICAgICgqIFRoaXMgdGVzdCBvbmx5IHdvcmtzIHdoZW4gW3dyaXRlXSBpcyBwcm9wZXJseSBpbmxpbmVkLiAgSXQgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXRcbiAgICAgICBbd3JpdGVdIG5ldmVyIGFsbG9jYXRlcyBpbiBhbnkgc2l0dWF0aW9uLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgdGVzdCBpcyBtb3ZlZCB0b1xuICAgICAgIGFub3RoZXIgbGlicmFyeSBhbmQgcnVuIHdpdGggWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlLCBpdCBmYWlscy4gKilcbiAgICBsZXQldGVzdF91bml0IFwid3JpdGUgZG9lc24ndCBhbGxvY2F0ZSB3aGVuIGlubGluZWRcIiA9XG4gICAgICBsZXQgY3JlYXRlIGNyZWF0ZWRfZnJvbSBhcml0eSA9XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICBjcmVhdGVkX2Zyb21cbiAgICAgICAgICBhcml0eVxuICAgICAgICAgIH5vbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGU6UmFpc2VcbiAgICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6RXJyb3IucmFpc2VcbiAgICAgIGluXG4gICAgICBsZXQgYnVzMSA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MSBpblxuICAgICAgbGV0IGJ1czIgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTIgaW5cbiAgICAgIGxldCBidXMzID0gY3JlYXRlIFslaGVyZV0gQXJpdHkzIGluXG4gICAgICBsZXQgYnVzNCA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5NCBpblxuICAgICAgbGV0IGJ1czUgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTUgaW5cbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czEgKGZ1biAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZSBidXMxICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czIgKGZ1biAoKSAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZTIgYnVzMiAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvbiBidXMzIChmdW4gKCkgKCkgKCkgLT4gKCkpIChmdW4gKCkgLT4gd3JpdGUzIGJ1czMgKCkgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb25cbiAgICAgICAgYnVzNFxuICAgICAgICAoZnVuICgpICgpICgpICgpIC0+ICgpKVxuICAgICAgICAoZnVuICgpIC0+IHdyaXRlNCBidXM0ICgpICgpICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uXG4gICAgICAgIGJ1czVcbiAgICAgICAgKGZ1biAoKSAoKSAoKSAoKSAoKSAtPiAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiB3cml0ZTUgYnVzNSAoKSAoKSAoKSAoKSAoKSlcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxuKCogVGhpcyBwb3NpdGlvbiBzaG93cyB1cCBpbiB0ZXN0cyBpbiBhIHdheSB0aGF0IGlzIGRpZmZpY3VsdCB0byBzdXBwcmVzcywgc28gd2UgZGVmaW5lIGl0XG4gICBoZXJlIGluIGEgcGxhY2UgdGhhdCBpcyB1bmxpa2VseSB0byBjaGFuZ2UgdmVyeSBvZnRlbiAqKVxubGV0IGR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbl90ZXN0cyA9IFslaGVyZV1cblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgZXZlbnRfYnVzIDogKHVuaXQgRXZlbnQudCAtPiB1bml0LCByZWFkX3dyaXRlKSBCdXMudFxuICAgICAgOyBjbG9zZV9zdGFydGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBkb24ndF9yZWNvbm5lY3QgOiB1bml0IEl2YXIudFxuICAgICAgOyBhZGRyZXNzX2VxdWFsIDogJ2FkZHJlc3MgLT4gJ2FkZHJlc3MgLT4gYm9vbFxuICAgICAgOyBzZXhwX29mX2FkZHJlc3MgOiAnYWRkcmVzcyAtPiBTZXhwLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgc2VydmVyX25hbWUgdCA9IHQuZXZlbnRfaGFuZGxlci5zZXJ2ZXJfbmFtZVxuXG4gICAgbGV0IGhhbmRsZV9ldmVudCAodHlwZSBhZGRyZXNzKSB0IChldmVudCA6IGFkZHJlc3MgRXZlbnQudCkgPVxuICAgICAgQnVzLndyaXRlXG4gICAgICAgIHQuZXZlbnRfYnVzXG4gICAgICAgIChtYXRjaCBldmVudCB3aXRoXG4gICAgICAgICB8IE9idGFpbmVkX2FkZHJlc3MgKF8gOiBhZGRyZXNzKSAtPiBPYnRhaW5lZF9hZGRyZXNzICgpXG4gICAgICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCAtPiBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3QgZSAtPiBGYWlsZWRfdG9fY29ubmVjdCBlXG4gICAgICAgICB8IENvbm5lY3RlZCBjb25uIC0+IENvbm5lY3RlZCBjb25uXG4gICAgICAgICB8IERpc2Nvbm5lY3RlZCAtPiBEaXNjb25uZWN0ZWQpO1xuICAgICAgRXZlbnQuaGFuZGxlIGV2ZW50IHQuZXZlbnRfaGFuZGxlclxuICAgIDs7XG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICAoKiBDYXRjaCBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgdXNlci1wcm92aWRlZCBbdC5nZXRfYWRkcmVzc10gb3IgW3QuY29ubmVjdF0gKilcbiAgICAgICAgRGVmZXJyZWQuT3JfZXJyb3IudHJ5X3dpdGhfam9pbiB+ZXh0cmFjdF9leG46YW1fcnVubmluZ190ZXN0IGNvbm5lY3RcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWQ7XG4gICAgICAgICAgcmV0dXJuIGBDbG9zZV9zdGFydGVkKVxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT5cbiAgICAgICAgICAgIEl2YXIuZmlsbCB0LmNvbm4gKGBPayBjb25uKTtcbiAgICAgICAgICAgIHJldHVybiAoYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSlcbiAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgbGV0IHNhbWVfYXNfcHJldmlvdXNfZXJyb3IgPVxuICAgICAgICAgICAgICBtYXRjaCAhcHJldmlvdXNfZXJyb3Igd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2VyciAtPiBzYW1lX2Vycm9yIGVyciBwcmV2aW91c19lcnJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBwcmV2aW91c19lcnJvciA6PSBTb21lIGVycjtcbiAgICAgICAgICAgIChpZiBzYW1lX2FzX3ByZXZpb3VzX2Vycm9yXG4gICAgICAgICAgICAgdGhlbiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoRmFpbGVkX3RvX2Nvbm5lY3QgZXJyKSlcbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgIERlZmVycmVkLmFueVxuICAgICAgICAgICAgICBbIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmdcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgID4+PSBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICAgIGluXG4gICAgICBsb29wICgpXG4gICAgOztcblxuICAgIGxldCBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0ID1cbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgKCk7XG4gICAgICBJdmFyLmZpbGwgdC5jbG9zZV9maW5pc2hlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNvbm4gYENsb3NlX3N0YXJ0ZWRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgICh0eXBlIGFkZHJlc3MpXG4gICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICAgPyhvbl9ldmVudCA9IGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICAgPyhyYW5kb21fc3RhdGUgPSBgU3RhdGUgUmFuZG9tLlN0YXRlLmRlZmF1bHQpXG4gICAgICAgICAgPyh0aW1lX3NvdXJjZSA9IFRpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgICB+YWRkcmVzczoobW9kdWxlIEFkZHJlc3MgOiBBZGRyZXNzIHdpdGggdHlwZSB0ID0gYWRkcmVzcylcbiAgICAgICAgICBnZXRfYWRkcmVzc1xuICAgICAgPVxuICAgICAgbGV0IGV2ZW50X2hhbmRsZXIgPSB7IEV2ZW50LkhhbmRsZXIuc2VydmVyX25hbWU7IG9uX2V2ZW50IH0gaW5cbiAgICAgIGxldCBkZWZhdWx0X3JldHJ5X2RlbGF5ID1cbiAgICAgICAgRm4uY29uc3QgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIDAuMSBlbHNlIDEwLikpXG4gICAgICBpblxuICAgICAgbGV0IG5vbl9yYW5kb21pemVkX2RlbGF5ID0gT3B0aW9uLnZhbHVlIHJldHJ5X2RlbGF5IH5kZWZhdWx0OmRlZmF1bHRfcmV0cnlfZGVsYXkgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheV9zcGFuID1cbiAgICAgICAgbWF0Y2ggcmFuZG9tX3N0YXRlIHdpdGhcbiAgICAgICAgfCBgTm9uX3JhbmRvbSAtPiBub25fcmFuZG9taXplZF9kZWxheVxuICAgICAgICB8IGBTdGF0ZSByYW5kb21fc3RhdGUgLT5cbiAgICAgICAgICBmdW4gKCkgLT5cbiAgICAgICAgICAgIGxldCBzcGFuID0gbm9uX3JhbmRvbWl6ZWRfZGVsYXkgKCkgaW5cbiAgICAgICAgICAgIGxldCBzcGFuID0gVGltZV9ucy5TcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBSYW5kb20uU3RhdGUuZmxvYXQgcmFuZG9tX3N0YXRlIChzcGFuICouIDAuMykgaW5cbiAgICAgICAgICAgIGxldCB3YWl0ID1cbiAgICAgICAgICAgICAgaWYgUmFuZG9tLlN0YXRlLmJvb2wgcmFuZG9tX3N0YXRlXG4gICAgICAgICAgICAgIHRoZW4gc3BhbiArLiBkaXN0YW5jZVxuICAgICAgICAgICAgICBlbHNlIHNwYW4gLS4gZGlzdGFuY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBUaW1lX25zLlNwYW4ub2Zfc2VjIHdhaXRcbiAgICAgIGluXG4gICAgICBsZXQgcmV0cnlfZGVsYXkgKCkgPSBUaW1lX3NvdXJjZS5hZnRlciB0aW1lX3NvdXJjZSAocmV0cnlfZGVsYXlfc3BhbiAoKSkgaW5cbiAgICAgIGxldCB0ID1cbiAgICAgICAgeyBldmVudF9oYW5kbGVyXG4gICAgICAgIDsgZXZlbnRfYnVzID1cbiAgICAgICAgICAgIEJ1cy5jcmVhdGVfZXhuXG4gICAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3QgdGhlbiBkdW1teV9zcmNfcG9zX3RoYXRfc2hvd3NfdXBfaW5fdGVzdHMgZWxzZSBbJWhlcmVdKVxuICAgICAgICAgICAgICBBcml0eTFcbiAgICAgICAgICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTpBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlXG4gICAgICAgICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTppZ25vcmVcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQlYmluZCAoKSA9IGhhbmRsZV9ldmVudCB0IEF0dGVtcHRpbmdfdG9fY29ubmVjdCBpblxuICAgICAgICBtYXRjaCViaW5kIHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdCB3aXRoXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYERvbid0X3JlY29ubmVjdCAtPlxuICAgICAgICAgIGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQ7XG4gICAgICAgICAgcmV0dXJuIChgRmluaXNoZWQgKCkpXG4gICAgICAgIHwgYE9rIChjb25uLCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nKSAtPlxuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKSBpblxuICAgICAgICAgIGxldCViaW5kICgpID0gQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uIGluXG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgRGlzY29ubmVjdGVkIGluXG4gICAgICAgICAgKCogd2FpdHMgdW50aWwgW3JldHJ5X2RlbGF5ICgpXSB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIHRpbWUganVzdCBiZWZvcmUgd2UgbGFzdFxuICAgICAgICAgICAgIHRyaWVkIHRvIGNvbm5lY3QgcmF0aGVyIHRoYW4gdGhlIHRpbWUgd2Ugbm90aWNlZCBiZWluZyBkaXNjb25uZWN0ZWQsIHNvIHRoYXQgaWZcbiAgICAgICAgICAgICBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiBkaWVzLCB3ZSB3aWxsIGF0dGVtcHQgdG8gcmVjb25uZWN0IGltbWVkaWF0ZWx5LiAqKVxuICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICAgIGBGaW5pc2hlZCAoKSlcbiAgICAgICAgICBlbHNlIGBSZXBlYXQgKCkpO1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkIHQgPVxuICAgICAgKCogVGFrZSBjYXJlIG5vdCB0byByZXR1cm4gYSBjb25uZWN0aW9uIHRoYXQgaXMga25vd24gdG8gYmUgY2xvc2VkIGF0IHRoZSB0aW1lXG4gICAgICAgICBbY29ubmVjdGVkXSB3YXMgY2FsbGVkLiAgVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2xpZW50IGNvZGUgdGhhdCBiZWhhdmVzIGxpa2VcbiAgICAgICAgIHtbXG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgPj49IGZ1biBjMSAtPlxuICAgICAgICAgICAuLi5cbiAgICAgICAgICAgICBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCBjMVxuICAgICAgICAgICAoKiBhdCB0aGlzIHBvaW50IHdlIGFyZSBpbiBhIHJhY2Ugd2l0aCB0aGUgc2FtZSBjYWxsIGluc2lkZVxuICAgICAgICAgICAgICBwZXJzaXN0ZW50X2NsaWVudC5tbCAqKVxuICAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgIFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY29ubmVjdGVkIHRcbiAgICAgICAgICAgKCogZGVwZW5kaW5nIG9uIGhvdyB0aGUgcmFjZSB0dXJucyBvdXQsIHdlIGRvbid0IHdhbnQgdG8gZ2V0IGEgY2xvc2VkIGNvbm5lY3Rpb25cbiAgICAgICAgICAgICAgaGVyZSAqKVxuICAgICAgICAgICA+Pj0gZnVuIGMyIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgXX1cbiAgICAgICAgIFRoaXMgZG9lc24ndCByZW1vdmUgdGhlIHJhY2UgY29uZGl0aW9uLCBidXQgaXQgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLlxuICAgICAgKilcbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGxldCBkID0gSXZhci5yZWFkIHQuY29ubiBpblxuICAgICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBkXG4gICAgICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgICAgICAgICAgfCBgT2sgY29ubiAtPiByZXR1cm4gY29ubilcbiAgICAgICAgfCBTb21lIGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgIHwgU29tZSAoYE9rIGNvbm4pIC0+XG4gICAgICAgICAgaWYgQ29ubi5pc19jbG9zZWQgY29ublxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICgqIGdpdmUgdGhlIHJlY29ubmVjdGlvbiBsb29wIGEgY2hhbmNlIHRvIG92ZXJ3cml0ZSB0aGUgaXZhciAqKVxuICAgICAgICAgICAgQ29ubi5jbG9zZV9maW5pc2hlZCBjb25uID4+PSBsb29wXG4gICAgICAgICAgZWxzZSByZXR1cm4gY29ublxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiB0ID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmNvbm4pIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gTm9uZVxuICAgICAgfCBTb21lIChgT2sgY29ubikgLT4gU29tZSBjb25uXG4gICAgOztcblxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbiAgICBsZXQgY2xvc2UgdCA9XG4gICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICB0aGVuXG4gICAgICAgICgqIEFub3RoZXIgY2FsbCB0byBjbG9zZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiAgV2FpdCBmb3IgaXQgdG8gZmluaXNoLiAqKVxuICAgICAgICBjbG9zZV9maW5pc2hlZCB0XG4gICAgICBlbHNlIChcbiAgICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgICAgSXZhci5yZWFkIHQuY29ublxuICAgICAgICA+Pj0gZnVuIGNvbm5fb3B0IC0+XG4gICAgICAgIChtYXRjaCBjb25uX29wdCB3aXRoXG4gICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgIHwgYE9rIGNvbm4gLT4gQ29ubi5jbG9zZSBjb25uKVxuICAgICAgICA+PnwgZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkID1cbiAgICAgIE9yX2Vycm9yLmVycm9yX3MgWyVtZXNzYWdlIFwiUGVyc2lzdGVudCBjb25uZWN0aW9uIGNsb3NlZFwiXVxuICAgIDs7XG5cbiAgICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHQgPVxuICAgICAgaWYgaXNfY2xvc2VkIHRcbiAgICAgIHRoZW4gcmV0dXJuIGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdF9jb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGN1cnJlbnRfY29ubmVjdGlvbiB0IHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBub3QgKENvbm4uaXNfY2xvc2VkIHgpIC0+IHJldHVybiAoT2sgeClcbiAgICAgICAgfCBTb21lIChfIDogQ29ubi50KSB8IE5vbmUgLT5cbiAgICAgICAgICBEZWZlcnJlZC5jaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlIChJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkKSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkKVxuICAgICAgICAgICAgOyBjaG9pY2UgKEl2YXIucmVhZCB0Lm5leHRfY29ubmVjdF9yZXN1bHQpIEZuLmlkXG4gICAgICAgICAgICBdKVxuICAgIDs7XG5cbiAgICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHQgPVxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHQuZG9uJ3RfcmVjb25uZWN0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhZGRyZXNzIFBvbHkudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IFBvbHkuc2V4cF9vZl90IHQuc2V4cF9vZl9hZGRyZXNzIHRcblxuICBsZXQgY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIChUIHQpID1cbiAgICBQb2x5LmNsb3NlX3doZW5fY3VycmVudF9jb25uZWN0aW9uX2lzX2Nsb3NlZCB0XG4gIDs7XG5cbiAgbGV0IGNsb3NlX2ZpbmlzaGVkIChUIHQpID0gUG9seS5jbG9zZV9maW5pc2hlZCB0XG4gIGxldCBpc19jbG9zZWQgKFQgdCkgPSBQb2x5LmlzX2Nsb3NlZCB0XG4gIGxldCBldmVudF9idXMgKFQgdCkgPSBCdXMucmVhZF9vbmx5IHQuZXZlbnRfYnVzXG4gIGxldCBjbG9zZSAoVCB0KSA9IFBvbHkuY2xvc2UgdFxuICBsZXQgc2VydmVyX25hbWUgKFQgdCkgPSBQb2x5LnNlcnZlcl9uYW1lIHRcbiAgbGV0IGN1cnJlbnRfY29ubmVjdGlvbiAoVCB0KSA9IFBvbHkuY3VycmVudF9jb25uZWN0aW9uIHRcbiAgbGV0IGNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IHRcbiAgbGV0IGNvbm5lY3RlZCAoVCB0KSA9IFBvbHkuY29ubmVjdGVkIHRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgIH5zZXJ2ZXJfbmFtZVxuICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgID9yYW5kb21fc3RhdGVcbiAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgIH5jb25uZWN0XG4gICAgICAgIH5hZGRyZXNzXG4gICAgICAgIGdldF9hZGRyZXNzXG4gICAgPVxuICAgIFRcbiAgICAgIChQb2x5LmNyZWF0ZVxuICAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgICA/b25fZXZlbnRcbiAgICAgICAgID9yZXRyeV9kZWxheVxuICAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICAgP3RpbWVfc291cmNlXG4gICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgIGdldF9hZGRyZXNzKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgdCA9XG4gIHwgS3JiXG4gIHwgS3JiX3Rlc3RfbW9kZVxuICB8IFJwY1xuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwLCBiaW5faW9dXG5cbmxldCBtYWdpY193b3JkID0gZnVuY3Rpb25cbiAgfCBLcmIgLT4gXCJLUkIyXCJcbiAgfCBLcmJfdGVzdF9tb2RlIC0+IFwiS0JUXCJcbiAgfCBScGMgLT4gXCJSUENcIlxuOztcblxubGV0IGdlbl9tYWdpY19udW1iZXIgd29yZCA9XG4gIFN0cmluZy50b19saXN0X3JldiB3b3JkXG4gIHw+IExpc3QuZm9sZCB+aW5pdDowIH5mOihmdW4gYWNjIGMgLT4gKGFjYyAqIDI1NikgKyBDaGFyLnRvX2ludCBjKVxuOztcblxubGV0IG1hZ2ljX251bWJlciB0ID0gZ2VuX21hZ2ljX251bWJlciAobWFnaWNfd29yZCB0KVxubGV0IGJ5X21hZ2ljX251bWJlciA9IEludC5NYXAub2ZfYWxpc3RfZXhuIChMaXN0Lm1hcCBhbGwgfmY6KGZ1biBwIC0+IG1hZ2ljX251bWJlciBwLCBwKSlcblxuKCogV2Ugb25jZSBtaW50ZWQgYSBuZXcgbWFnaWMgbnVtYmVyIGZvciBLcmIgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBwcm90b2NvbFxuICAgbmVnb3RpYXRpb24uICBMZXQncyBiZSBjYXJlZnVsIHRoYXQgd2UgZG9uJ3QgcmV1c2UgdGhlIG9sZCBtYWdpYyBudW1iZXIgKilcbmxldCByZXRpcmVkX2tyYl93b3JkID0gXCJLUkJcIlxuXG4oKiBFbnN1cmUgdGVzdHMgYnJlYWsgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlIGNoYW5nZWQgKilcbmxldCV0ZXN0X3VuaXQgXCJtYWdpYyBudW1iZXJzXCIgPVxuICBhc3NlcnQgKGdlbl9tYWdpY19udW1iZXIgcmV0aXJlZF9rcmJfd29yZCA9IDRfMzQ2XzQ0Myk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIEtyYiA9IDg0M18yMDdfMjQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiX3Rlc3RfbW9kZSA9IDVfNTIxXzk5NSk7XG4gIGFzc2VydCAobWFnaWNfbnVtYmVyIFJwYyA9IDRfNDExXzQ3NClcbjs7XG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBsZXQgYWxsX21hZ2ljX251bWJlcnNfaW5jbHVkaW5nX3JldGlyZWQgPVxuICAgIGxhenkgKHJldGlyZWRfa3JiX3dvcmQgOjogTGlzdC5tYXAgYWxsIH5mOm1hZ2ljX3dvcmQgfD4gTGlzdC5tYXAgfmY6Z2VuX21hZ2ljX251bWJlcilcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBMaXN0X3dpdGhfbWF4X2xlbl9pbnRmXG5cbm1vZHVsZSBNYWtlIChDb25maWcgOiBDb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICBsZXQgX19iaW5fcmVhZF90X18gPSBMaXN0Ll9fYmluX3JlYWRfdF9fXG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICB0cnkgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgd2l0aFxuICAgIHwgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biAoSW5mby50b19zdHJpbmdfaHVtIGNvbnRleHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCAoYmluX3JlYWRlcl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3QgYmluX3JlYWRlcl9hLnJlYWRcbiAgICA7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCAoYmluX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2hhcGUgPSBiaW5fc2hhcGVfdCBiaW5fYS5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IGJpbl9hLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IGJpbl9hLnJlYWRlclxuICAgIH1cbiAgOztcblxuICBsZXQgb2ZfbGlzdF9leG4gbCA9XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICBpZiBsZW4gPiBtYXhfbGVuXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMaXN0IGlzIHRvbyBsYXJnZVwiIChjb250ZXh0IDogSW5mby50KSAobGVuIDogaW50KSAobWF4X2xlbiA6IGludCldO1xuICAgIGxcbiAgOztcblxuICBsZXQgc2V4cF9vZl90ID0gTGlzdC5zZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHRfb2ZfYSBzZXhwID1cbiAgICBsZXQgdCA9IExpc3QudF9vZl9zZXhwIHRfb2ZfYSBzZXhwIGluXG4gICAgb2ZfbGlzdF9leG4gdFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgS25vd25fcHJvdG9jb2wgPSBLbm93bl9wcm90b2NvbFxuXG5sZXQgbWF4X3N1cHBvcnRlZF92ZXJzaW9uID0gMV8wMDBfMDAwXG5sZXQgb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UgbnVtID0gbnVtID4gbWF4X3N1cHBvcnRlZF92ZXJzaW9uXG5cbm1vZHVsZSBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUgPVxuICBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgbWF4X2xlbiA9IDEwMFxuICAgIGxldCBjb250ZXh0ID0gSW5mby5vZl9zdHJpbmcgXCJQcm90b2NvbF92ZXJzaW9uX2hlYWRlclwiXG4gIGVuZClcblxudHlwZSB0ID0gaW50IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS50XG5bQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzID0gbGF6eSAoTWFwLmtleV9zZXQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyKVxuXG5sZXQgY3JlYXRlX2V4biA/KGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9IFtdKSB+cHJvdG9jb2wgfnN1cHBvcnRlZF92ZXJzaW9ucyAoKSA9XG4gIGxldCBwcm90b2NvbF9tYWdpY19udW1iZXIgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgaW5cbiAgaWYgTGlzdC5leGlzdHMgc3VwcG9ydGVkX3ZlcnNpb25zIH5mOm91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJVbmFibGUgdG8gYWR2ZXJ0aXNlIHZlcnNpb25zIGxhcmdlciB0aGFuIG1heCBzdXBwb3J0ZWQgdmVyc2lvblwiXG4gICAgICAgICAgKG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA6IGludClcbiAgICAgICAgICAoc3VwcG9ydGVkX3ZlcnNpb25zIDogaW50IGxpc3QpXTtcbiAgaWYgTGlzdC5leGlzdHMgYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIH5mOihGbi5ub24gb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXSBzaG91bGRuJ3QgYmUgd2l0aGluIFttYXhfc3VwcG9ydGVkX3ZlcnNpb25dIHJhbmdlXCJcbiAgICAgICAgICAobWF4X3N1cHBvcnRlZF92ZXJzaW9uIDogaW50KVxuICAgICAgICAgIChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgOiBpbnQgbGlzdCldO1xuICBpZiBMaXN0LmV4aXN0c1xuICAgICAgIGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc1xuICAgICAgIH5mOihTZXQubWVtIChmb3JjZSBrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlthZGRpdGlvbmFsX21hZ2ljX251bWJlcnNdIHNob3VsZG4ndCBiZSBvdmVybGFwcGluZyB3aXRoIHBvdGVudGlhbCBcXFxuICAgICAgICAgW3Byb3RvY29sX21hZ2ljX251bWJlcl1zXCJcbiAgICAgICAgICAoYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIDogaW50IGxpc3QpXG4gICAgICAgICAgfmtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnM6KGZvcmNlIGtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnMgOiBJbnQuU2V0LnQpXTtcbiAgcHJvdG9jb2xfbWFnaWNfbnVtYmVyIDo6IChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgQCBzdXBwb3J0ZWRfdmVyc2lvbnMpXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IHJhd192ZXJzaW9uX2xpc3QgKHQgOiB0KSA9ICh0IDo+IGludCBsaXN0KVxuXG5sZXQgZ2V0X3Byb3RvY29sICh0IDogdCkgPVxuICBsZXQgcHJvdG9jb2xzLCB2ZXJzaW9ucywgX2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA9XG4gICAgTGlzdC5wYXJ0aXRpb24zX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBgRnN0IHBcbiAgICAgICAgfCBOb25lIC0+IGlmIG91dHNpZGVfbWF4X3N1cHBvcnRlZF92ZXJzaW9uX3JhbmdlIHYgdGhlbiBgVHJkIHYgZWxzZSBgU25kIHYpXG4gIGluXG4gIG1hdGNoIHByb3RvY29scyB3aXRoXG4gIHwgW10gLT4gT2sgKE5vbmUsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBbIHAgXSAtPiBPayAoU29tZSBwLCBJbnQuU2V0Lm9mX2xpc3QgdmVyc2lvbnMpXG4gIHwgXyAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBtdWx0aXBsZSBtYWdpYyBudW1iZXJzIHNlZW4uXCJcbiAgICAgICAgICAocHJvdG9jb2xzIDogS25vd25fcHJvdG9jb2wudCBsaXN0KVxuICAgICAgICAgICh2ZXJzaW9ucyA6IGludCBsaXN0KV1cbjs7XG5cbmxldCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyIH4odXMgOiB0KSB+KHBlZXIgOiB0KSA9XG4gIGxldCBvcGVuIE9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgbGV0JWJpbmQgdXNfcHJvdG9jb2wsIHVzX3ZlcnNpb25zID0gZ2V0X3Byb3RvY29sIHVzIGluXG4gIGxldCViaW5kIHBlZXJfcHJvdG9jb2wsIHBlZXJfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgcGVlciBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCA9XG4gICAgbWF0Y2ggdXNfcHJvdG9jb2wgd2l0aFxuICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG4gICAgfCBOb25lIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiTm8gbWFnaWMgbnVtYmVycyBzZWVuXCIgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KV1cbiAgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCA9XG4gICAgbWF0Y2ggcGVlcl9wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgICgqIHdlIGFzc3VtZSBwZWVyIGlzIHNwZWFraW5nIG91ciBwcm90b2NvbCBpZiBbYWxsb3dfbGVnYWN5X3BlZXJdICopXG4gICAgICBpZiBhbGxvd19sZWdhY3lfcGVlclxuICAgICAgdGhlbiByZXR1cm4gdXNfcHJvdG9jb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcGVlcl9wcm90b2NvbCA9IGBVbmtub3duIGluXG4gICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgICAgICAocGVlcl9wcm90b2NvbCA6IFsgYFVua25vd24gXSldKVxuICBpblxuICBpZiBub3QgKFslY29tcGFyZS5lcXVhbDogS25vd25fcHJvdG9jb2wudF0gdXNfcHJvdG9jb2wgcGVlcl9wcm90b2NvbClcbiAgdGhlblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBjb25mbGljdGluZyBtYWdpYyBwcm90b2NvbCBudW1iZXJzXCJcbiAgICAgICAgICAodXNfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KVxuICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldXG4gIGVsc2UgKFxuICAgIGxldCBwcm90b2NvbCA9IHVzX3Byb3RvY29sIGluXG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciB1c192ZXJzaW9ucyBwZWVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5uZWdvdGlhdGVdOiBubyBzaGFyZWQgdmVyc2lvbiBudW1iZXJzXCJcbiAgICAgICAgICAgICh1c192ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChwZWVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHByb3RvY29sIDogS25vd25fcHJvdG9jb2wudCldKVxuOztcblxubGV0IG1hdGNoZXNfbWFnaWNfcHJlZml4ICh0IDogdCkgfnByb3RvY29sID1cbiAgbGV0IG1hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBMaXN0Lm1lbSB+ZXF1YWw6SW50LmVxdWFsIChyYXdfdmVyc2lvbl9saXN0IHQpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgbWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IHJhd192ZXJzaW9uX2xpc3QgPSByYXdfdmVyc2lvbl9saXN0XG5lbmRcblxubW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlX2xpc3Rfd2l0aF9tYXhfbGVuID0gTGlzdF93aXRoX21heF9sZW4uTWFrZVxuXG4gIGxldCBtYWdpY19udW1iZXJfYmluX3NpemUgPSBtYWdpY19udW1iZXJfYmluX3NpemVcbiAgbGV0IG1heF9zdXBwb3J0ZWRfdmVyc2lvbiA9IG1heF9zdXBwb3J0ZWRfdmVyc2lvblxuZW5kXG5cbmxldCV0ZXN0X3VuaXQgXCJiaW4gc2l6ZXMgYXJlIG5vdCBjaGFuZ2VkIGJ5IGFjY2lkZW50XCIgPVxuICAoKiBFbnN1cmUgdGhlIGJpbl9zaXplIG9mIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgIGlzIGFsd2F5cyAxLiBUaGlzIG1lYW5zIHRoYXQgcmVnYXJkbGVzcyBvZiBob3cgbG9uZyB0aGUgbGlzdCBvZiB2ZXJzaW9ucyBpbiB0aGVcbiAgICAgcHJvdG9jb2wgaGVhZGVyIGlzLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSB0aGUgc2FtZSBudW1iZXIgb2YgYnl0ZXMuIFRoZVxuICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnQganVtcHMgdG8gMyBieXRlcyBhdCB0aGUgdmFsdWUgMTI4LiAqKVxuICBsZXQgYm91bmRlZF9saXN0X2Jpbl9zaXplID1cbiAgICBJbnQuYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICBpblxuICBhc3NlcnQgKGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9IDEpO1xuICBhc3NlcnQgKDYgPSBtYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpO1xuICBhc3NlcnQgKFxuICAgIGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemVcbiAgICA9IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSlcbjs7XG4iLCJ0eXBlIHQgPSBCaW5fcHJvdC5OYXQwLnRcbltAQGRlcml2aW5nIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllMmY0YS00OTBhLTExZTYtYjY4Zi1iYmQ2MjQ3MjUxNmNcIl1cblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gIFslZXhwZWN0IHt8IDU5NWYyYTYwZjExODE2YjI5YTcyZGRhYjE3MDAyYjU2IHx9XVxuOztcblxubGV0IGJpbl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fbmF0MFxubGV0IGJpbl9zaXplX3QgPSBCaW5fcHJvdC5TaXplLmJpbl9zaXplX25hdDBcbmxldCBiaW5fd3JpdGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0MFxubGV0IGJpbl93cml0ZV90ID0gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX25hdDBcbmxldCBiaW5fcmVhZGVyX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9yZWFkZXJfbmF0MFxubGV0IGJpbl9yZWFkX3QgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDBcblxubGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX3ZuYXQwID1cbiAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuOztcblxubGV0IG9mX2ludF9leG4gPSBCaW5fcHJvdC5OYXQwLm9mX2ludFxuIiwib3BlbiBDb3JlXG5vcGVuIFBvbHlcblxubGV0IG9mX3dyaXRlciB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9XG4gIGxldCB3cml0ZSBidWYgfnBvcyBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgbGV0IHBvcyA9IE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3MgbGVuIGluXG4gICAgd3JpdGUgYnVmIH5wb3MgYVxuICBpblxuICBsZXQgc2l6ZSBhID1cbiAgICBsZXQgbGVuID0gTmF0MC5vZl9pbnRfZXhuIChzaXplIGEpIGluXG4gICAgTmF0MC5iaW5fc2l6ZV90IGxlbiArICgobGVuIDogQmluX3Byb3QuTmF0MC50KSA6PiBpbnQpXG4gIGluXG4gIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9XG47O1xuXG5sZXQgb2ZfdHlwZV9jbGFzcyAoYmluX2EgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPSBvZl93cml0ZXIgYmluX2Eud3JpdGVyXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQgYmlnc3RyaW5nX2Jpbl9wcm90IHMgPVxuICAgICAgbGV0IGJpZ3N0cmluZyA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJ5dGVzLmJpbl93cml0ZXJfdCBzIGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCaWdzdHJpbmcuU3RhYmxlLlYxLmJpbl93cml0ZXJfdCBiaWdzdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgPVxuICAgICAgbGV0IHdyaXRlcl93aXRoX2xlbmd0aCA9IG9mX3dyaXRlciBCeXRlcy5iaW5fd3JpdGVyX3QgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIHdyaXRlcl93aXRoX2xlbmd0aCBzXG4gICAgOztcblxuICAgIGxldCB0ZXN0IGxlbiA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIGxldCBiaWdzdHJpbmdfdmVyc2lvbiA9IGJpZ3N0cmluZ19iaW5fcHJvdCBzIGluXG4gICAgICBsZXQgd2l0aF9sZW5ndGhfdmVyc2lvbiA9IGJpbl9wcm90X3dpdGhfbGVuZ3RoIHMgaW5cbiAgICAgIGlmIEJpZ3N0cmluZy50b19zdHJpbmcgYmlnc3RyaW5nX3ZlcnNpb24gPD4gQmlnc3RyaW5nLnRvX3N0cmluZyB3aXRoX2xlbmd0aF92ZXJzaW9uXG4gICAgICB0aGVuIGZhaWx3aXRoZiBcIm1pc21hdGNoIGZvciBsZW5ndGggJWRcIiBsZW4gKClcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIGZvciBsZW4gPSAwIHRvIEludC5wb3cgMiAxMCBkb1xuICAgICAgICB0ZXN0IGxlblxuICAgICAgZG9uZTtcbiAgICAgIGZvciBwb3cgPSAxMCB0byAyMCBkb1xuICAgICAgICBsZXQgeCA9IEludC5wb3cgMiBwb3cgaW5cbiAgICAgICAgdGVzdCAoeCAtIDEpO1xuICAgICAgICB0ZXN0IHg7XG4gICAgICAgIHRlc3QgKHggKyAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZlcnNpb24gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGVxdWFsLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgNDUyMWY0NGRiYzYwOThjMGFmYzI3NzBjYzg0NTUyYjEgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChTdGFibGUuVjEpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcblxubGV0IHN1bW1hcml6ZSB0cyA9XG4gIExpc3QubWFwIHRzIH5mOihmdW4geyBuYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgfD4gU3RyaW5nLk1hcC5vZl9hbGlzdF9mb2xkIH5pbml0OkludC5TZXQuZW1wdHkgfmY6Q29yZS5TZXQuYWRkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBkZXNjcmlwdGlvbnMgPVxuICAgIFsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDEgfVxuICAgIDsgeyBuYW1lID0gXCJmb29cIjsgdmVyc2lvbiA9IDIgfVxuICAgIDsgeyBuYW1lID0gXCJiYXJcIjsgdmVyc2lvbiA9IDUgfVxuICAgIF1cbiAgaW5cbiAgbGV0IHN1bW1hcnkgPSBzdW1tYXJpemUgZGVzY3JpcHRpb25zIGluXG4gIHByaW50X3MgWyVzZXhwIChzdW1tYXJ5IDogSW50LlNldC50IFN0cmluZy5NYXAudCldO1xuICBbJWV4cGVjdCB7fCAoKGJhciAoNSkpIChmb28gKDEgMikpKSB8fV1cbjs7XG4iLCJvcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9XG4gIHwgQXV0aG9yaXplZCBvZiAnYVxuICB8IE5vdF9hdXRob3JpemVkIG9mIEVycm9yLnRcblxubGV0IGJpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gdFxuOztcblxubGV0IGJpbmRfZGVmZXJyZWQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF1dGhvcml6ZWQgYSAtPiBmIGFcbiAgfCBOb3RfYXV0aG9yaXplZCBfIGFzIHQgLT4gRWFnZXJfZGVmZXJyZWQucmV0dXJuIHRcbjs7XG5cbmxldCBtYXBfZGVmZXJyZWQgdCB+ZiA9XG4gIGJpbmRfZGVmZXJyZWQgdCB+ZjooZnVuIGEgLT4gRWFnZXJfZGVmZXJyZWQubWFwIChmIGEpIH5mOihmdW4gYSAtPiBBdXRob3JpemVkIGEpKVxuOztcblxubGV0IGxpZnRfZGVmZXJyZWQgPSBtYXBfZGVmZXJyZWQgfmY6Rm4uaWRcbiIsIigqKiBBc3luY19ycGMgcHJvdG9jb2wgdHlwZXMsIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqKVxuXG4oKiBXQVJOSU5HOiBkbyBub3QgY2hhbmdlIGFueSBvZiB0aGVzZSB0eXBlcyB3aXRob3V0IGdvb2QgcmVhc29uICopXG5cbm9wZW4gQmluX3Byb3QuU3RkXG5vcGVuIFNleHBsaWIuU3RkXG5tb2R1bGUgQ29yZV9mb3JfdGVzdGluZyA9IENvcmVcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKHN0cnVjdCBlbmQpXG5cbm1vZHVsZSBVbnVzZWRfcXVlcnlfaWQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICB2YWwgdCA6IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBRdWVyeV9pZC50IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDJiNTI4ZjRiMjJmMDhlMjg4NzZmZmUwMjM5MzE1YWMyIHx9XVxuICA7O1xuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCB0XTtcbiAgICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGVhZGVyID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXJcblxubW9kdWxlIFF1ZXJ5X3YxID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBiZTU4ODg2OTFkNzM0MjdiM2FjOGVhMzAwYzE2OTQyMiB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBtZXRhZGF0YSA6IHN0cmluZyBvcHRpb25cbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGVmNzBlYTJkZDBiYjgxMmE2MDFkMjg4MTBlNjYzN2Q0IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cblxuICBsZXQgdG9fdjEgeyB0YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YSA9IChfIDogc3RyaW5nIG9wdGlvbik7IGRhdGEgfSA6IF8gUXVlcnlfdjEudCA9XG4gICAgeyB0YWc7IHZlcnNpb247IGlkOyBkYXRhIH1cbiAgOztcblxuICBsZXQgb2ZfdjEgP21ldGFkYXRhIHsgUXVlcnlfdjEudGFnOyB2ZXJzaW9uOyBpZDsgZGF0YSB9ID1cbiAgICB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYTIyYTc2ZjE5MmIzYTRlYzFjMzcxMTdjNmJiMjUyZjUgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCAyYzM3ODY4NzYxOTcxYzc4Y2MzNTVkNDNmMDg1NDg2MCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiAodW5pdCwgdW5pdCkgdF07XG4gICAgWyVleHBlY3Qge3wgNDZmMjMxZGRiN2ZhNTlkYTljMjc3NTlkNTBhZTAxYTkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGMxZGJjZGNmZTJiMTJlNzk3ZWM2NGYwZDc0ZGYxODExIHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeV92MSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICAgIHwgUXVlcnkgb2YgJ2EgUXVlcnkubmVlZHNfbGVuZ3RoXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBmNjBjZTJkMTA0ZTJmMGQ5MjcxZjYyMmVjZDk3Y2VhOCB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIHNleHBfb2ZdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbmxldCV0ZXN0IFwidjEgbWVzc2FnZSBjb21wYXRpYmlsaXR5XCIgPVxuICBsZXQgbW9kdWxlIE1lc3NhZ2VfdjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgICB8IEhlYXJ0YmVhdFxuICAgICAgfCBRdWVyeSBvZiAnYSBRdWVyeV92MS5uZWVkc19sZW5ndGhcbiAgICAgIHwgUmVzcG9uc2Ugb2YgJ2EgUmVzcG9uc2UubmVlZHNfbGVuZ3RoXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICAgIFslZXhwZWN0IHt8IDE0OTY1YjBkYjk4NDRlNmIzNzYxNTFkZDg5MDgwOGU4IHx9XVxuICAgIDs7XG4gIGVuZFxuICBpblxuICBsZXQgdGFnID0gUnBjX3RhZy5vZl9zdHJpbmcgXCJycGNcIiBpblxuICBsZXQgcXVlcnlfaWQgPSBRdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgbGV0IHYxX3F1ZXJ5ID0geyBRdWVyeV92MS50YWc7IHZlcnNpb24gPSAxOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gKCkgfSBpblxuICBsZXQgcmVzcG9uc2UgPSB7IFJlc3BvbnNlLmlkID0gcXVlcnlfaWQ7IGRhdGEgPSBPayAoKSB9IGluXG4gIGxldCB2MSA9IE1lc3NhZ2VfdjEuWyBIZWFydGJlYXQ7IFF1ZXJ5IHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MiA9IE1lc3NhZ2UuWyBIZWFydGJlYXQ7IFF1ZXJ5X3YxIHYxX3F1ZXJ5OyBSZXNwb25zZSByZXNwb25zZSBdIGluXG4gIGxldCB2MV9zdHIgPVxuICAgIENvcmVfZm9yX3Rlc3RpbmcuQmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZ1xuICAgICAgWyViaW5fd3JpdGVyOiB1bml0IE1lc3NhZ2VfdjEubmVlZHNfbGVuZ3RoIGxpc3RdXG4gICAgICB2MVxuICBpblxuICBsZXQgdjJfc3RyID1cbiAgICBDb3JlX2Zvcl90ZXN0aW5nLkJpbl9wcm90LldyaXRlci50b19zdHJpbmdcbiAgICAgIFslYmluX3dyaXRlcjogdW5pdCBNZXNzYWdlLm5lZWRzX2xlbmd0aCBsaXN0XVxuICAgICAgdjJcbiAgaW5cbiAgU3RyaW5nLmVxdWFsIHYxX3N0ciB2Ml9zdHJcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4hIENvcmUuQ29yZV9zdGFibGVcblxuICAoKiBXZSBjYW4ndCBtYWtlIFtCaW5fcHJvdC5TaGFwZS50XSBiaW5hYmxlIGRpcmVjdGx5IGJlY2F1c2UgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYVxuICAgICBjaXJjdWxhciBkZXBlbmRlbmN5LCBzbyB3ZSBtYWtlIGl0IFtCaW5hYmxlLk9mX3NleHBhYmxlX3dpdGhfdXVpZF0gaGVyZSBpbnN0ZWFkLiBUaGlzXG4gICAgIGFsbG93cyB1cyB0byBzZW5kIHRoZSBzaGFwZSBvdmVyIHRoZSB3aXJlIGFzIHBhcnQgb2YgdGhlXG4gICAgIFtWZXJzaW9uZWRfcnBjLlNoYXBlX21lbnUudF0uIFtCaW5fcHJvdC5TaGFwZS5DYW5vbmljYWwudF0sIHRob3VnaCBleHBvc2VkIGFuZFxuICAgICB0aGVyZWZvcmUgYmluYWJsZSwgaXMgbm90IGEgc3VpdGFibGUgYWx0ZXJuYXRpdmUgYmVjYXVzZSBpdCBoYXMgYW4gZXhwb25lbnRpYWxcbiAgICAgZXhwYW5zaW9uLiAqKVxuICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQmluX3Byb3QuU2hhcGUuU3RhYmxlLlYxXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIwYWE1MzU0OS1hZDg4LTRiNGYtYWJjNy0xZjg0NTNlN2FhMTFcIlxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBCaW5hYmxlLk9mX3NleHBhYmxlLlYyIChUKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBScGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS5WMS50XG4gICAgICAgICAgfVxuICAgICAgfCBPbmVfd2F5IG9mIHsgbXNnIDogU2hhcGUuVjEudCB9XG4gICAgICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgICAgICB7IHF1ZXJ5IDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICA7IGVycm9yIDogU2hhcGUuVjEudFxuICAgICAgICAgIH1cbiAgICAgIHwgVW5rbm93blxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgZW5kXG5lbmRcblxub3BlbiEgQ29yZVxuXG5tb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmluX3Byb3QuU2hhcGUudFxuXG4gICgqIEFuIHVuc3RhYmxlIHNleHBlciB0aGF0J3MgdXNlZnVsIGZvciBleHBlY3QgdGVzdHMsIHByaW50aW5nIG91dCB0aGUgc2hhcGUgZGlnZXN0c1xuICAgICBpbnN0ZWFkIG9mIHRoZSBzaGFwZXMgdGhlbXNlbHZlcy4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChCaW5fcHJvdC5TaGFwZS5ldmFsX3RvX2RpZ2VzdF9zdHJpbmcgdCA6IHN0cmluZyldXG5lbmRcblxudHlwZSB0ID0gU3RhYmxlLlYxLnQgPVxuICB8IFJwYyBvZlxuICAgICAgeyBxdWVyeSA6IFNoYXBlLnRcbiAgICAgIDsgcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgT25lX3dheSBvZiB7IG1zZyA6IFNoYXBlLnQgfVxuICB8IFN0cmVhbWluZ19ycGMgb2ZcbiAgICAgIHsgcXVlcnkgOiBTaGFwZS50XG4gICAgICA7IGluaXRpYWxfcmVzcG9uc2UgOiBTaGFwZS50XG4gICAgICA7IHVwZGF0ZV9yZXNwb25zZSA6IFNoYXBlLnRcbiAgICAgIDsgZXJyb3IgOiBTaGFwZS50XG4gICAgICB9XG4gIHwgVW5rbm93blxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSBtZXNzYWdlX2hhbmRsZXIgPSBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2FcblxubW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gc3RydWN0XG4gICgqKiBSZXN1bHQgb2YgYW4gW29uX21lc3NhZ2VdIGNhbGxiYWNrLiAgV2Ugc3BsaXQgdGhlIFtDb250aW51ZV0gYW5kIFtXYWl0IF9dIGNhc2VzIHRvXG4gICAgICBtYWtlIGl0IGNsZWFyIHRoYXQgW0NvbnRpbnVlXSBpcyB0aGUgZXhwZWN0ZWQgY2FzZS4gIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmVcbiAgICAgIG9wdGltaXplZCBmb3IgdGhpcyBjYXNlLiAqKVxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RvcCBvZiAnYVxuICAgIHwgQ29udGludWVcbiAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG5lbmRcblxuXG5tb2R1bGUgdHlwZSBSZWFkZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfcmVhZCA6IHQgLT4gSW50NjMudFxuXG4gICgqKiBTdGFydCByZWFkaW5nIGluY29taW5nIG1lc3NhZ2VzIGFuZCBwYXNzIHRoZW0gdG8gW29uX21lc3NhZ2VdLCB1bnRpbCBpdCByZXR1cm5zXG4gICAgICBbU3RvcCBfXS5cblxuICAgICAgW29uX2VuZF9vZl9iYXRjaF0gaXMgY2FsbGVkIGFmdGVyIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgYmVmb3JlIHdhaXRpbmcgZm9yXG4gICAgICB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlY29tZSByZWFkYWJsZSBhZ2Fpbi4gKilcbiAgdmFsIHJlYWRfZm9yZXZlclxuICAgIDogIHRcbiAgICAtPiBvbl9tZXNzYWdlOihCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gJ2EgSGFuZGxlcl9yZXN1bHQudClcbiAgICAtPiBvbl9lbmRfb2ZfYmF0Y2g6KHVuaXQgLT4gdW5pdClcbiAgICAtPiAoJ2EsIFsgYEVvZiB8IGBDbG9zZWQgXSkgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIG1lc3NhZ2VfdG9vX2JpZyA9XG4gICAgeyBzaXplIDogaW50XG4gICAgOyBtYXhfbWVzc2FnZV9zaXplIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTZW50IG9mICdhXG4gICAgfCBDbG9zZWRcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBvZiBtZXNzYWdlX3Rvb19iaWdcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBXcml0ZXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGlzX2Nsb3NlZCA6IHQgLT4gYm9vbFxuICB2YWwgbW9uaXRvciA6IHQgLT4gTW9uaXRvci50XG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG4gIHZhbCBieXRlc193cml0dGVuIDogdCAtPiBJbnQ2My50XG5cbiAgKCoqIEJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzZW5kIG1lc3NhZ2UgdXNpbmcgdGhpcyB3cml0ZXIsXG4gICAgICBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgd3JpdGVyIGlzIGNsb3NlZCBvciB0aGUgY29uc3VtZXIgbGVhdmVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgY2FjaGVkIGJ5IFtScGMuVHJhbnNwb3J0XSAqKVxuICB2YWwgc3RvcHBlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgKCoqIFtmbHVzaGVkIHRdIHJldHVybnMgYSBkZWZlcnJlZCB0aGF0IG11c3QgYmVjb21lIGRldGVybWluZWQgd2hlbiBhbGwgcHJpb3Igc2VudFxuICAgICAgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZC5cblxuICAgICAgSXQgbXVzdCBiZSBPSyB0byBjYWxsIFtmbHVzaGVkIHRdIGFmdGVyIFt0XSBoYXMgYmVlbiBjbG9zZWQuICopXG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW3JlYWR5X3RvX3dyaXRlIHRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIGl0IGlzIGEgZ29vZCB0aW1lIHRvIHNlbmQgbWVzc2FnZXNcbiAgICAgIGFnYWluLiBBc3luYyBSUEMgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBzZW5kaW5nIGEgYmF0Y2ggb2YgbWVzc2FnZXMsIHRvIGF2b2lkXG4gICAgICBmbG9vZGluZyB0aGUgdHJhbnNwb3J0LlxuXG4gICAgICBVc2luZyBbbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZF0gaXMgYW4gYWNjZXB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gKilcbiAgdmFsIHJlYWR5X3RvX3dyaXRlIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogQWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHNlbmQgZXhhY3RseSBvbmUgbWVzc2FnZS4gKilcblxuICB2YWwgc2VuZF9iaW5fcHJvdCA6IHQgLT4gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgLT4gdW5pdCBTZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICAoKiogU2FtZSBhcyBbc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXSBidXQgdGhlIGJpZ3N0cmluZyBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB0aGVcbiAgICAgIHJldHVybmVkIGRlZmVycmVkIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyB0aGVcbiAgICAgIGJpZ3N0cmluZy4gKilcbiAgdmFsIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgIDogIHRcbiAgICAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+ICdhXG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0IERlZmVycmVkLnQgU2VuZF9yZXN1bHQudFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbm1vZHVsZSBIZWFkZXIgPSBzdHJ1Y3RcbiAgbGV0IGxlbmd0aCA9IDhcbiAgbGV0IHVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3MgPSBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gYnVmIH5wb3NcblxuICBsZXQgdW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyBwYXlsb2FkX2xlbiA9XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9zZXRfaW50NjRfbGUgYnVmIH5wb3MgcGF5bG9hZF9sZW5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBUcmFuc3BvcnRfaW50Zi5IYW5kbGVyX3Jlc3VsdFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBUcmFuc3BvcnRfaW50Zi5SZWFkZXJcblxuICB0eXBlIHQgPSBUIDogKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpICogJ2EgLT4gdFxuXG4gIGxldCBwYWNrIG0gdCA9IFQgKG0sIHQpXG5cbiAgKCogV2UgcHV0IHR5cGUgYW5ub3RhdGlvbnMgdG8gYmUgc3VyZSB0aGUgdHlwZSBpcyBub3QgYSBmdW5jdGlvbiB0eXBlLCBpLmUuIHRvIGF2b2lkXG4gICAgIGNyZWF0aW5nIGNsb3N1cmVzICopXG4gIGxldCBzZXhwX29mX3QgKFQgKChtb2R1bGUgTSksIHQpKSA6IFNleHAudCA9IE0uc2V4cF9vZl90IHRcbiAgbGV0IGNsb3NlIChUICgobW9kdWxlIE0pLCB0KSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmNsb3NlIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogYm9vbCA9IE0uaXNfY2xvc2VkIHRcbiAgbGV0IGJ5dGVzX3JlYWQgKFQgKChtb2R1bGUgTSksIHQpKSA6IEludDYzLnQgPSBNLmJ5dGVzX3JlYWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IEludDYzLnQgPSBNLmJ5dGVzX3dyaXR0ZW4gdFxuICBsZXQgZmx1c2hlZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5mbHVzaGVkIHRcblxuICBsZXQgcmVhZHlfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9XG4gICAgTS5yZWFkeV90b193cml0ZSB0XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSBiaW5fd3JpdGVyIHggOiBfIFNlbmRfcmVzdWx0LnQgPVxuICAgIE0uc2VuZF9iaW5fcHJvdCB0IGJpbl93cml0ZXIgeFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KVxuICAgICAgICBiaW5fd3JpdGVyXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA6IF8gU2VuZF9yZXN1bHQudFxuICAgID1cbiAgICBNLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzdG9wcGVkIChUIHsgc3RvcHBlZDsgXyB9KSA9IHN0b3BwZWRcblxuICBsZXQgY2FuX3NlbmQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCB9KSA9XG4gICAgbm90IChNLmlzX2Nsb3NlZCB0IHx8IERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcHBlZClcbiAgOztcblxuICBsZXQgdHJhbnNmZXIgdCA/KG1heF9udW1fdmFsdWVzX3Blcl9yZWFkID0gMV8wMDApIHBpcGUgZiA9XG4gICAgbGV0IGNvbnN1bWVyID1cbiAgICAgIFBpcGUuYWRkX2NvbnN1bWVyIHBpcGUgfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgIGxldCVtYXAgKCkgPSBmbHVzaGVkIHQgaW5cbiAgICAgICAgYE9rKVxuICAgIGluXG4gICAgbGV0IGVuZF9vZl9waXBlID1cbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgbGV0IHJlYyBpdGVyICgpID1cbiAgICAgICAgICBpZiBjYW5fc2VuZCB0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBQaXBlLnJlYWRfbm93JyBwaXBlIH5jb25zdW1lciB+bWF4X3F1ZXVlX2xlbmd0aDptYXhfbnVtX3ZhbHVlc19wZXJfcmVhZFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgICAgICBRdWV1ZS5pdGVyIHEgfmY7XG4gICAgICAgICAgICAgIFBpcGUuQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgICAgICAgcmVhZHlfdG9fd3JpdGUgdCA+Pj4gaXRlclxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHBpcGUgPj4+IGZ1biAoYE9rIHwgYEVvZikgLT4gaXRlciAoKVxuICAgICAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBpdmFyICgpKVxuICAgICAgICBpblxuICAgICAgICBpdGVyICgpKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9IERlZmVycmVkLmFueSBbIGVuZF9vZl9waXBlOyBzdG9wcGVkIHQgXSBpblxuICAgIFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgeyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZSB0ID1cbiAgbGV0JWJpbmQgKCkgPSBXcml0ZXIuY2xvc2UgdC53cml0ZXIgaW5cbiAgUmVhZGVyLmNsb3NlIHQucmVhZGVyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxuXG4oKiogVGhlIHR5cGVzIG9mIHRoZSBbSW1wbGVtZW50YXRpb25dIGFuZCBbSW1wbGVtZW50YXRpb25zXSBtb2R1bGVzLCB3aGljaCBoYXZlXG4gICAgYSBkZXBlbmRlbmN5IGN5bGU6IFtJbXBsZW1lbnRhdGlvbl0gLT4gW0RpcmVjdF9zdHJlYW1fd3JpdGVyXSAtPlxuICAgIFtJbXBsZW1lbnRhdGlvbnNdIC0+IFtJbXBsZW1lbnRhdGlvbl0uICopXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgICA7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIDogYm9vbFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgcmVjIEltcGxlbWVudGF0aW9uIDogc2lnXG4gIG1vZHVsZSBFeHBlcnQgOiBzaWdcbiAgICBtb2R1bGUgUmVzcG9uZGVyIDogc2lnXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIEYgOiBzaWdcbiAgICB0eXBlIChfLCBfKSByZXN1bHRfbW9kZSA9XG4gICAgICB8IEJsb2NraW5nIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50KSByZXN1bHRfbW9kZVxuICAgICAgfCBEZWZlcnJlZCA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudFxuICAgICAgICAgICAgICAgIERlZmVycmVkLnQpXG4gICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gJ3VwZGF0ZSBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjID1cbiAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgOyBiaW5faW5pdF93cml0ZXIgOiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA6ICd1cGRhdGUgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgICA7IGltcGwgOiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICB9XG5cbiAgICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgICAgfCBPbmVfd2F5IDpcbiAgICAgICAgICAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IE9uZV93YXlfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdyZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiBFeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwY1xuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgZW5kXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IHRhZyA6IFJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICAgIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICAgIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgICB9XG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvblxuXG5hbmQgSW1wbGVtZW50YXRpb25zIDogc2lnXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICAgIFsgYFJhaXNlXG4gICAgfCBgQ29udGludWVcbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gICAgfCBgQ2FsbCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBbIGBDbG9zZV9jb25uZWN0aW9uIHwgYENvbnRpbnVlIF1cbiAgICB8IGBFeHBlcnQgb2ZcbiAgICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gSW1wbGVtZW50YXRpb24uRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgICBdXG5cbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgRGVzY3JpcHRpb24uVGFibGUudFxuICAgIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY1xuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIGltcGxlbWVudGF0aW9ucyA9ICdjb25uZWN0aW9uX3N0YXRlIHRcblxuICBtb2R1bGUgcmVjIEluc3RhbmNlIDogc2lnXG4gICAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgICAgfCBQaXBlIDogXyBQaXBlLlJlYWRlci50IC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICAgICAgfCBEaXJlY3QgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG5cbiAgICB0eXBlICdhIHVucGFja2VkID1cbiAgICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2EgaW1wbGVtZW50YXRpb25zXG4gICAgICA7IHdyaXRlciA6IFRyYW5zcG9ydC5Xcml0ZXIudFxuICAgICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiAoUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgICAgIDsgbXV0YWJsZSBzdG9wcGVkIDogYm9vbFxuICAgICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlXG4gICAgICAgIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgICAgKERlc2NyaXB0aW9uLnQgKiAnYSBJbXBsZW1lbnRhdGlvbi50KSBvcHRpb25cbiAgICAgIDsgcGFja2VkX3NlbGYgOiB0XG4gICAgICB9XG5cbiAgICBhbmQgdCA9IFQgOiBfIHVucGFja2VkIC0+IHRcbiAgZW5kXG5lbmQgPVxuICBJbXBsZW1lbnRhdGlvbnNcblxuYW5kIERpcmVjdF9zdHJlYW1fd3JpdGVyIDogc2lnXG4gIG1vZHVsZSBQZW5kaW5nX3Jlc3BvbnNlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm9ybWFsIG9mICdhXG4gICAgICB8IEV4cGVydCBvZiBzdHJpbmdcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgTm90X3N0YXJ0ZWQgb2YgJ2EgUGVuZGluZ19yZXNwb25zZS50IFF1ZXVlLnRcbiAgICAgIHwgU3RhcnRlZFxuICBlbmRcblxuICBtb2R1bGUgSWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlcl9pZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IElkLnRcbiAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgIDsgaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudFxuICAgIDsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX2Jpbl93cml0ZXIudFxuICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICB9XG5cbiAgYW5kICdhIGdyb3VwX2VudHJ5ID1cbiAgICB7IGdyb3VwIDogJ2EgRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAudFxuICAgIDsgZWxlbWVudF9pbl9ncm91cCA6ICdhIHQgQmFnLkVsdC50XG4gICAgfVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBbY29tcG9uZW50c10gaXMgb25seSB0cmFja2VkIHNlcGFyYXRlbHkgZnJvbSBbY29tcG9uZW50c19ieV9pZF0gc28gd2UgY2FuIGl0ZXJhdGVcbiAgICAgICAgICAgb3ZlciBpdHMgZWxlbWVudHMgbW9yZSBxdWlja2x5IHRoYW4gd2UgY291bGQgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgb2ZcbiAgICAgICAgICAgW2NvbXBvbmVudHNfYnlfaWRdLiAqKVxuICAgICAgICBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgOyBjb21wb25lbnRzX2J5X2lkIDogJ2EgY29tcG9uZW50IElkLlRhYmxlLnRcbiAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgY29tcG9uZW50ID1cbiAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgIDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgOiAnYSBncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgIH1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA6PSAnYSB0XG5lbmQgPVxuICBEaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5hbmQgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgOyBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB9XG5lbmQgPVxuICBDYWNoZWRfYmluX3dyaXRlclxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlIHQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5Pbl9leGNlcHRpb24udCA9XG4gIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjbG9zZV9jb25uZWN0aW9uID0geyBjYWxsYmFjayA9IE5vbmU7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlID0gdHJ1ZSB9XG5sZXQgY29udGludWUgPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSBmYWxzZSB9XG5cbmxldCBoYW5kbGVfZXhuXG4gICAgICB7IGNhbGxiYWNrOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSB9XG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICBleG5cbiAgPVxuICBPcHRpb24uaXRlciBjYWxsYmFjayB+ZjooZnVuIGNhbGxiYWNrIC0+IGNhbGxiYWNrIGV4bik7XG4gIGlmIGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gIHRoZW4gTW9uaXRvci5zZW5kX2V4biBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBQcm90b2NvbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvblxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFeHBlcnQuUmVzcG9uZGVyLnQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG11dGFibGUgcmVzcG9uZGVkIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHF1ZXJ5X2lkIHdyaXRlciA9IHsgcXVlcnlfaWQ7IHdyaXRlcjsgcmVzcG9uZGVkID0gZmFsc2UgfVxuICBlbmRcblxuICB0eXBlIGltcGxlbWVudGF0aW9uX3Jlc3VsdCA9IEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgIHwgUmVwbGllZFxuICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5tb2R1bGUgRiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHJlc3VsdF9tb2RlID0gKCdhLCAnYikgRi5yZXN1bHRfbW9kZSA9XG4gICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EgT3Jfbm90X2F1dGhvcml6ZWQudCkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIEYuc3RyZWFtaW5nX2ltcGwgPVxuICAgIHwgUGlwZSBvZlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAndXBkYXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgIC0+ICgnaW5pdCwgJ2luaXQpIFJlc3VsdC50IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwYyA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19ycGMgPVxuICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgIDsgYmluX2luaXRfd3JpdGVyIDogJ2luaXQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IGJpbl91cGRhdGVfd3JpdGVyIDogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICgqICdpbml0IGNhbiBiZSBhbiBlcnJvciBvciBhbiBpbml0aWFsIHN0YXRlICopXG4gICAgOyBpbXBsIDogKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbFxuICAgIH1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAtPiB1bml0IE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGNcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBzdHIgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgc3RyKVxuICAgICAgaW5cbiAgICAgIE9uZV93YXkgKGJpbl9tc2csIGltcGwpXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSBxID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpXG4gICAgICBpblxuICAgICAgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHEgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSlcbiAgICAgIGluXG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZClcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZylcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgIGluXG4gICAgICBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEpKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+XG4gICAgICAgICAgRGlyZWN0XG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgdyAtPlxuICAgICAgICAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuYmluZF9kZWZlcnJlZCAoZiBzdGF0ZSkgfmY6KGZ1biBhdXRob3JpemVkX3N0YXRlIC0+XG4gICAgICAgICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxIHcpKVxuICAgICAgaW5cbiAgICAgIFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgOztcblxuICBsZXQgbGlmdF9kZWZlcnJlZCAodHlwZSBhIGIpICh0IDogYiB0KSB+KGYgOiBhIC0+IGIgRGVmZXJyZWQudCkgOiBhIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgT25lX3dheSAoYmluX21zZywgaW1wbCkgLT5cbiAgICAgIE9uZV93YXlcbiAgICAgICAgKCBiaW5fbXNnXG4gICAgICAgICwgZnVuIHN0YXRlIHN0ciAtPiBFYWdlcl9kZWZlcnJlZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIHN0YXRlIC0+IGltcGwgc3RhdGUgc3RyKVxuICAgICAgICApXG4gICAgfCBPbmVfd2F5X2V4cGVydCBpbXBsIC0+XG4gICAgICBPbmVfd2F5X2V4cGVydFxuICAgICAgICAoZnVuIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgICAgRWFnZXJfZGVmZXJyZWQuYmluZCAoZiBzdGF0ZSkgfmY6KGZ1biBzdGF0ZSAtPiBpbXBsIHN0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIHwgUnBjIChiaW5fcXVlcnksIGJpbl9yZXNwb25zZSwgaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBScGNcbiAgICAgICAgKCBiaW5fcXVlcnlcbiAgICAgICAgLCBiaW5fcmVzcG9uc2VcbiAgICAgICAgLCAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICBsZXQlbWFwLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY1xuICAgICAgICAoIGJpbl9xdWVyeVxuICAgICAgICAsIGJpbl9yZXNwb25zZVxuICAgICAgICAsIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBEZWZlcnJlZCkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICBpbXBsIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbilcbiAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKCAoZnVuIHN0YXRlIHJlc3AgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICAgbGV0JW1hcC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgIGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFN0cmVhbWluZ19ycGMgeyBiaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH0gLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+XG4gICAgICAgICAgUGlwZVxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgICAgIGltcGwgc3RhdGUgcSlcbiAgICAgICAgfCBEaXJlY3QgaW1wbCAtPlxuICAgICAgICAgIERpcmVjdFxuICAgICAgICAgICAgKGZ1biBzdGF0ZSBxIHcgLT5cbiAgICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgICAgaW1wbCBzdGF0ZSBxIHcpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uLnQgPVxuICB7IHRhZyA6IFJwY190YWcudFxuICA7IHZlcnNpb24gOiBpbnRcbiAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gIDsgc2hhcGVzIDogUnBjX3NoYXBlcy50IExhenkudFxuICA7IG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxubGV0IHNoYXBlcyB0ID0gZm9yY2UgdC5zaGFwZXNcblxubGV0IGxpZnQgKHR5cGUgYSBiKSAodCA6IGEgdCkgfihmIDogYiAtPiBhKSA6IGIgdCA9XG4gIHsgdCB3aXRoIGYgPSBGLmxpZnQgdC5mIH5mOihmdW4gYiAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIGIpKSB9XG47O1xuXG5sZXQgd2l0aF9hdXRob3JpemF0aW9uIHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IHQuZiB+ZiB9XG5sZXQgbGlmdF9kZWZlcnJlZCB0IH5mID0geyB0IHdpdGggZiA9IEYubGlmdF9kZWZlcnJlZCB0LmYgfmYgfVxubGV0IHVwZGF0ZV9vbl9leGNlcHRpb24gdCB+ZiA9IHsgdCB3aXRoIG9uX2V4Y2VwdGlvbiA9IGYgdC5vbl9leGNlcHRpb24gfVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuaW5jbHVkZSBQcm90b2NvbC5ScGNfZXJyb3JcbmluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoUHJvdG9jb2wuUnBjX2Vycm9yKVxuXG5leGNlcHRpb24gUnBjIG9mIHQgKiBJbmZvLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IHJhaXNlIHQgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA9IHJhaXNlIChScGMgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pKVxuXG5sZXQgc2V4cF9vZl90IHQgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IENvbm5lY3Rpb25fY2xvc2VkIC0+XG4gICAgWyVzZXhwIGBDb25uZWN0aW9uX2Nsb3NlZCAoZ2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uICgpIDogU2V4cC50KV1cbiAgfCBCaW5faW9fZXhuIF9cbiAgfCBXcml0ZV9lcnJvciBfXG4gIHwgVW5jYXVnaHRfZXhuIF9cbiAgfCBVbmltcGxlbWVudGVkX3JwYyBfXG4gIHwgVW5rbm93bl9xdWVyeV9pZCBfIC0+IHNleHBfb2ZfdCB0XG47O1xuXG4oKiBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGp1c3QgdGFrZSBhIFtDb25uZWN0aW9uLnRdLCBidXQgd2UgdGFrZSBpdHMgcGllY2VzIGluc3RlYWQgdG9cbiAgIGF2b2lkIGEgZGVwZW5kZW5jeSBjeWNsZSAqKVxubGV0IHRvX2Vycm9yXG4gICAgICB0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgRGVzY3JpcHRpb24ubmFtZSA9IHJwY19uYW1lOyB2ZXJzaW9uID0gcnBjX3ZlcnNpb24gfVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgPVxuICBsZXQgcnBjX2Vycm9yID1cbiAgICBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgIGxldCBjbG9zZV9yZWFzb24gPVxuICAgICAgICAoKiBVc3VhbGx5IChhbHdheXM/KSBoZXJlIHdlIHdpbGwgaGF2ZSB0aGUgZGVmZXJyZWQgYWxyZWFkeSBmdWxsXG4gICAgICAgICAgIGJlY2F1c2UgQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeVxuICAgICAgICAgICBjbG9zZWQgKilcbiAgICAgICAgRGVmZXJyZWQucGVlayBjb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgIGluXG4gICAgICBbJXNleHAgKGNsb3NlX3JlYXNvbiA6IEluZm8udCBvcHRpb24pXSlcbiAgaW5cbiAgRXJyb3IuY3JlYXRlX3NcbiAgICBbJXNleHBcbiAgICAgIHsgcnBjX2Vycm9yIDogU2V4cC50XG4gICAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICAgIDsgcnBjX25hbWUgOiBzdHJpbmdcbiAgICAgIDsgcnBjX3ZlcnNpb24gOiBpbnRcbiAgICAgIH1dXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbG9jYWxfc3RvcmFnZV9rZXkgPVxuICBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lOlwiYXN5bmNfcnBjX2tlcm5lbF9tZXRhZGF0YVwiIFslc2V4cF9vZjogdF1cbjs7XG5cbmxldCBnZXQgKCkgPSBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci5maW5kX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB3aXRoX21ldGFkYXRhIG1ldGFkYXRhIH5mID1cbiAgICBBc3luY19rZXJuZWwuQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoX2xvY2FsIGxvY2FsX3N0b3JhZ2Vfa2V5IG1ldGFkYXRhIH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxudHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IHRdO1xuICBbJWV4cGVjdCB7fCA1ODczNGE2M2E1YzgzYzFiN2NiZmMzZmVkZmEzYWU4MiB8fV1cbjs7XG5cbnR5cGUgbG9jYXRlZF9lcnJvciA9XG4gIHsgbG9jYXRpb24gOiBzdHJpbmdcbiAgOyBleG4gOiBFeG4udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgdW5jYXVnaHRfZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCBiaW5faW9fZXhuIH5sb2NhdGlvbiBleG4gPVxuICBFcnJvciAoUnBjX2Vycm9yLkJpbl9pb19leG4gKHNleHBfb2ZfbG9jYXRlZF9lcnJvciB7IGxvY2F0aW9uOyBleG4gfSkpXG47O1xuXG5sZXQgdHJ5X3dpdGggP29uX2JhY2tncm91bmRfZXhjZXB0aW9uID9ydW4gfmxvY2F0aW9uIGYgPVxuICBsZXQgeCA9XG4gICAgbGV0IHJlc3QgPVxuICAgICAgbWF0Y2ggb25fYmFja2dyb3VuZF9leGNlcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGBMb2dcbiAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgIGluXG4gICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgfnJlc3RcbiAgICAgIH5ydW46KE9wdGlvbi52YWx1ZSBydW4gfmRlZmF1bHQ6YFNjaGVkdWxlKVxuICAgICAgZlxuICBpblxuICBsZXQgam9pbiA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IHhcbiAgICB8IEVycm9yIGV4biAtPiB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4blxuICBpblxuICBtYXRjaCBEZWZlcnJlZC5wZWVrIHggd2l0aFxuICB8IE5vbmUgLT4geCA+Pnwgam9pblxuICB8IFNvbWUgeCAtPiByZXR1cm4gKGpvaW4geClcbjs7XG5cbmxldCBvcl9lcnJvciB+cnBjX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQgPVxuICBSZXN1bHQubWFwX2Vycm9yXG4gICAgfmY6XG4gICAgICAoUnBjX2Vycm9yLnRvX2Vycm9yXG4gICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZClcbjs7XG4iLCJvcGVuIENvcmVcblxuKCogdXRpbGl0eSBmdW5jdGlvbiBmb3IgYmluLWlvJ2luZyBvdXQgb2YgYSBCaWdzdHJpbmcudCAqKVxubGV0IGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAoYmluX3JlYWRlcl90IDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcilcbiAgICAgID9hZGRfbGVuXG4gICAgICBidWZcbiAgICAgIH5wb3NfcmVmXG4gICAgICB+KGxlbiA6IE5hdDAudClcbiAgICAgIH5sb2NhdGlvblxuICA9XG4gIHRyeVxuICAgIGxldCBpbml0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGRhdGEgPSBiaW5fcmVhZGVyX3QucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgYWRkX2xlbiA9XG4gICAgICBtYXRjaCBhZGRfbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgYWRkX2xlbiAtPiBhZGRfbGVuIGRhdGFcbiAgICBpblxuICAgIGlmICFwb3NfcmVmIC0gaW5pdF9wb3MgKyBhZGRfbGVuIDw+IChsZW4gOj4gaW50KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoZlxuICAgICAgICBcIm1lc3NhZ2UgbGVuZ3RoICglZCkgZGlkIG5vdCBtYXRjaCBleHBlY3RlZCBsZW5ndGggKCVkKVwiXG4gICAgICAgICghcG9zX3JlZiAtIGluaXRfcG9zKVxuICAgICAgICAobGVuIDogTmF0MC50IDo+IGludClcbiAgICAgICAgKCk7XG4gICAgT2sgZGF0YVxuICB3aXRoXG4gIHwgZSAtPiBScGNfcmVzdWx0LmJpbl9pb19leG4gfmxvY2F0aW9uIGVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxub3BlbiBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxuKCogQ29tbXV0ZSBSZXN1bHQgYW5kIERlZmVycmVkLiAqKVxubGV0IGRlZmVyX3Jlc3VsdCA6ICdhICdiLiAoJ2EgRGVmZXJyZWQudCwgJ2IpIFJlc3VsdC50IC0+ICgnYSwgJ2IpIFJlc3VsdC50IERlZmVycmVkLnRcbiAgPSBmdW5jdGlvblxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gcmV0dXJuIGVyclxuICAgIHwgT2sgZCAtPlxuICAgICAgKG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQlbWFwIHggPSBkIGluXG4gICAgICAgICBPayB4XG4gICAgICAgfCBTb21lIGQgLT4gcmV0dXJuIChPayBkKSlcbjs7XG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlXG4gICAgICBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gOlxuICAgICAgICAoRGVzY3JpcHRpb24udCAqICgnYSBJbXBsZW1lbnRhdGlvbi50W0BzZXhwLm9wYXF1ZV0pKSBvcHRpb25cbiAgICAoKiBbcGFja2VkX3NlbGZdIGlzIGhlcmUgc28gd2UgY2FuIGVzc2VudGlhbGx5IHBhY2sgYW4gdW5wYWNrZWQgaW5zdGFuY2Ugd2l0aG91dCBkb2luZ1xuICAgICAgIGFueSBhZGRpdGlvbmFsIGFsbG9jYXRpb24uICopXG4gICAgOyBwYWNrZWRfc2VsZiA6ICh0W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGFuZCB0ID0gSW5zdGFuY2UudCA9IFQgOiBfIHVucGFja2VkIC0+IHRcblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gWyVzZXhwX29mOiBfIHVucGFja2VkXSB0XG5cbiAgbGV0IHNlbmRfd3JpdGVfZXJyb3IgdCBpZCBzZXhwID1cbiAgICBsZXQgZGF0YSA6IF8gUC5NZXNzYWdlLnQgPSBSZXNwb25zZSB7IGlkOyBkYXRhID0gRXJyb3IgKFdyaXRlX2Vycm9yIHNleHApIH0gaW5cbiAgICBtYXRjaCBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgZGF0YSB3aXRoXG4gICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIFwiRmFpbGVkIHRvIHNlbmQgd3JpdGUgZXJyb3IgdG8gY2xpZW50XCJcbiAgICAgICAgLCB7IGVycm9yID0gKHNleHAgOiBTZXhwLnQpOyByZWFzb24gPSAociA6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpIH1dXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkIChyZXN1bHQgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KSA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gKClcbiAgICB8IENsb3NlZCAtPiAoKVxuICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPlxuICAgICAgc2VuZF93cml0ZV9lcnJvciB0IGlkIChbJXNleHBfb2Y6IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdIHIpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX21lc3NhZ2UgdCBiaW5fd3JpdGVyIHggfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlbiBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBiaW5fd3JpdGVyIHggfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gfmlkID1cbiAgICBpZiBub3QgdC5zdG9wcGVkXG4gICAgdGhlblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0IGlkXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl9kYXRhIGRhdGEgPVxuICAgIGxldCBiaW5fd3JpdGVyID1cbiAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2RhdGEpXG4gICAgaW5cbiAgICB3cml0ZV9tZXNzYWdlIHQgfmlkIGJpbl93cml0ZXIgKFJlc3BvbnNlIHsgaWQ7IGRhdGEgfSlcbiAgOztcblxuICBtb2R1bGUgQ2FjaGVkX2Jpbl93cml0ZXIgOiBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfYmluX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCBwcmVwX3dyaXRlIDogJ2EgdCAtPiAnYSAtPiAoJ2EgdCAqICdhKSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIHZhbCBwcmVwX3dyaXRlX2V4cGVydCA6ICdhIHQgLT4gbGVuOmludCAtPiAnYSB0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgdmFsIHByZXBfd3JpdGVfc3RyaW5nIDogJ2EgdCAtPiBzdHJpbmcgLT4gKCdhIHQgKiBzdHJpbmcpIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9iaW5fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZSB0IGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlXG4gICAgOztcblxuICAgIGxldCBwcmVwX3dyaXRlX3N0cmluZyB0IHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgcHJlcF93cml0ZV9leHBlcnQgdCB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIGJpbl93cml0ZXJfbmF0MF9oZWFkZXJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9iaW5fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgKCogW3dyaXRlX21lc3NhZ2Vfc3RyaW5nXSBhbmQgW3dyaXRlX21lc3NhZ2VdIGJvdGggYWxsb2NhdGUgMyB3b3JkcyBmb3IgdGhlIHR1cGxlcy5cbiAgICAgICBbd3JpdGVfbWVzc2FnZV9leHBlcnRdIGRvZXMgbm90IGFsbG9jYXRlLiAqKVxuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyA9XG4gICAgICAgIENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGVfc3RyaW5nIHQuc3RyZWFtX3dyaXRlciB4XG4gICAgICBpblxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIHdyaXRlX21lc3NhZ2VcbiAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgfmlkOnQucXVlcnlfaWRcbiAgICAgICAgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZ1xuICAgICAgICAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZSB0IHggPVxuICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGUgdC5zdHJlYW1fd3JpdGVyIHggaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlIGluc3RhbmNlIH5pZDp0LnF1ZXJ5X2lkIGJpbl93cml0ZXJfbWVzc2FnZSAodC5zdHJlYW1fd3JpdGVyLCB4KVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZV9leHBlcnQgdC5zdHJlYW1fd3JpdGVyIH5sZW4gaW5cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICB3cml0ZV9tZXNzYWdlX2V4cGVydFxuICAgICAgICBpbnN0YW5jZVxuICAgICAgICB+aWQ6dC5xdWVyeV9pZFxuICAgICAgICBiaW5fd3JpdGVyX21lc3NhZ2VcbiAgICAgICAgdC5zdHJlYW1fd3JpdGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdCA9XG4gICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCB0LmNsb3NlZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgICAgIGxldCBncm91cHMgPSB0Lmdyb3VwcyBpblxuICAgICAgICBpZiBub3QgKEJhZy5pc19lbXB0eSBncm91cHMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGUuVmVyeV9sb3dfcHJpb3JpdHlfd29yay5lbnF1ZXVlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJhZy5yZW1vdmVfb25lIGdyb3VwcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gRmluaXNoZWRcbiAgICAgICAgICAgIHwgU29tZSB7IGdyb3VwOyBlbGVtZW50X2luX2dyb3VwIH0gLT5cbiAgICAgICAgICAgICAgQmFnLnJlbW92ZSBncm91cC5jb21wb25lbnRzIGVsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHNfYnlfaWQgdC5pZDtcbiAgICAgICAgICAgICAgTm90X2ZpbmlzaGVkKTtcbiAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgIHwgTm90X3N0YXJ0ZWQgXyAtPiAoKVxuICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfZW9mIHQpXG4gICAgOztcblxuICAgIGxldCBjbG9zZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gYXMgdCkgPVxuICAgICAgY2xvc2Vfd2l0aG91dF9yZW1vdmluZ19mcm9tX2luc3RhbmNlIHQ7XG4gICAgICBIYXNodGJsLnJlbW92ZSBpbnN0YW5jZS5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnlfaWRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgKG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+IFF1ZXVlLmVucXVldWUgcSAoTm9ybWFsIHgpXG4gICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZSB0IHgpO1xuICAgICAgICBgT2spXG4gICAgOztcblxuICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB4ID1cbiAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4IHdpdGhcbiAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICB8IGBPayAtPiBgRmx1c2hlZCAoV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICAgIHRoZW4gYENsb3NlZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgTm90X3N0YXJ0ZWQgcSAtPlxuICAgICAgICAgICAgIFF1ZXVlLmVucXVldWUgcSAoRXhwZXJ0IChCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWYgfnBvcyB+bGVuKSlcbiAgICAgICAgICAgfCBTdGFydGVkIC0+IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHQgfmJ1ZiB+cG9zIH5sZW4pO1xuICAgICAgICAgIGBPaylcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSAoeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IF8gfSBhcyB0KSB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgIG1hdGNoIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgICAgIHwgYENsb3NlZCAtPiBgQ2xvc2VkXG4gICAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IHN0YXJ0IHQgPVxuICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICB8IFN0YXJ0ZWQgLT4gZmFpbHdpdGggXCJhdHRlbXB0ZWQgdG8gc3RhcnQgd3JpdGVyIHdoaWNoIHdhcyBhbHJlYWR5IHN0YXJ0ZWRcIlxuICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgIHQuc3RhdGUgPC0gU3RhcnRlZDtcbiAgICAgICAgUXVldWUuaXRlciBxIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9ybWFsIHggLT4gd3JpdGVfbWVzc2FnZSB0IHhcbiAgICAgICAgICB8IEV4cGVydCB4IC0+IHdyaXRlX21lc3NhZ2Vfc3RyaW5nIHQgeCk7XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlZCB0aGVuIHdyaXRlX2VvZiB0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvblxuICAgICAgICAocmVzdWx0IDogKF8sIFJwY19lcnJvci50KSBSZXN1bHQudClcbiAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIChVbmNhdWdodF9leG4gc2V4cCkgLT5cbiAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIChFeG4uY3JlYXRlX3Mgc2V4cClcbiAgICB8IEVycm9yIF8gfCBPayBfIC0+ICgpXG4gIDs7XG5cbiAgbGV0IGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kID1cbiAgICBsZXQgZXhuID0gRXJyb3IudG9fZXhuIGVycm9yIGluXG4gICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgIGV4blxuICAgICAgfmxvY2F0aW9uOlslc3RyaW5nIFwic2VydmVyLXNpZGUgJXtycGNfa2luZH0gYXV0aG9yaXphdGlvblwiXVxuICA7O1xuXG4gIGxldCBhcHBseV9zdHJlYW1pbmdfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICB7IEltcGxlbWVudGF0aW9uLkYuYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gICAgICAgIH5sZW5cbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5pZFxuICAgICAgICB+KG9uX2V4Y2VwdGlvbiA6IE9uX2V4Y2VwdGlvbi50KVxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgPVxuICAgIGxldCBkYXRhID1cbiAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+bGVuXG4gICAgICAgIH5sb2NhdGlvbjpcInN0cmVhbWluZ19ycGMgc2VydmVyLXNpZGUgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgaW5cbiAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5wYWNrZWRfc2VsZiBpblxuICAgIGxldCBzdHJlYW1fd3JpdGVyID0gQ2FjaGVkX2Jpbl93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlciBpblxuICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICB8IFBpcGUgZiAtPiBgUGlwZSBmXG4gICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgIGxldCB3cml0ZXIgOiBfIERpcmVjdF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgICAgIHsgaWQgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5JZC5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgICAgOyBpbnN0YW5jZSA9IHQucGFja2VkX3NlbGZcbiAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICA7IGdyb3VwcyA9IEJhZy5jcmVhdGUgKClcbiAgICAgICAgICA7IHN0cmVhbV93cml0ZXJcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5rZXk6aWQgfmRhdGE6KERpcmVjdCB3cml0ZXIpO1xuICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgaW5cbiAgICBsZXQgcnVuX2ltcGwgaW1wbCBzcGxpdF9vayBoYW5kbGVfb2sgPVxuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKGRhdGEgPj58fiBpbXBsKSlcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBjb21wdXRhdGlvblwiXG4gICAgICBpblxuICAgICAgRWFnZXJfZGVmZXJyZWQudXBvbiByZXN1bHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gc2V4cCBhcyBlcnIpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycik7XG4gICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG5cbiAgICAgICAgICAgIG9uX2V4Y2VwdGlvblxuICAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgICAgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChFcnJvciBlcnIpXG4gICAgICAgIHwgT2sgKE9yX25vdF9hdXRob3JpemVkLk5vdF9hdXRob3JpemVkIGVycm9yKSAtPlxuICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgICAoYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQ6XCJwaXBlX3JwY1wiKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChFcnJvciBlcnJvcikpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGVycm9yKVxuICAgICAgICB8IE9rIChBdXRob3JpemVkIChPayBvaykpIC0+XG4gICAgICAgICAgbGV0IGluaXRpYWwsIHJlc3QgPSBzcGxpdF9vayBvayBpblxuICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBpbml0aWFsKTtcbiAgICAgICAgICBoYW5kbGVfb2sgcmVzdClcbiAgICBpblxuICAgIG1hdGNoIGltcGxfd2l0aF9zdGF0ZSB3aXRoXG4gICAgfCBgUGlwZSBmIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSlcbiAgICAgICAgRm4uaWRcbiAgICAgICAgKGZ1biBwaXBlX3IgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooUGlwZSBwaXBlX3IpO1xuICAgICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAgIChXcml0ZXIudHJhbnNmZXIgdC53cml0ZXIgcGlwZV9yIChmdW4gZGF0YSAtPlxuICAgICAgICAgICAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlIHN0cmVhbV93cml0ZXIgZGF0YSBpblxuICAgICAgICAgICAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkIGJpbl93cml0ZXJfbWVzc2FnZSAoc3RyZWFtX3dyaXRlciwgZGF0YSkpKTtcbiAgICAgICAgICAgUGlwZS5jbG9zZWQgcGlwZV9yXG4gICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGVfclxuICAgICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPlxuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZik7XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQpXG4gICAgfCBgRGlyZWN0IChmLCB3cml0ZXIpIC0+XG4gICAgICBydW5faW1wbFxuICAgICAgICAoZnVuIGRhdGEgLT4gZiB0LmNvbm5lY3Rpb25fc3RhdGUgZGF0YSB3cml0ZXIpXG4gICAgICAgIChmdW4geCAtPiB4LCAoKSlcbiAgICAgICAgKGZ1biAoKSAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5zdGFydCB3cml0ZXIpXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGxldCBpZCA9IHF1ZXJ5LmlkIGluXG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb24gd2l0aFxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5IChiaW5fcXVlcnlfcmVhZGVyLCBmKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgbWVzc2FnZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcXVlcnlfY29udGVudHMgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gU3RvcCBlcnJcbiAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgICgqIFdlIGRvbid0IGNsb3NlIGNvbm5lY3Rpb25zIG9uIHVuYXV0aG9yaXplZCBSUENzLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG9cbiAgICAgICAgICAgICAgIGNvbW11bmljYXRlIGZhaWx1cmUgYmFjayB0byB0aGUgc2VuZGVyIGluIG9uZS13YXkgcnBjcywgd2UgZG8gbm90aGluZy4gVGhlXG4gICAgICAgICAgICAgICBkZWZlcnJlZCAoYW5kIGFueSBkZWZlcnJlZCBleGNlcHRpb25zKSBhcmUgZHJvcHBlZCBoZXJlIGFzIGEgY29uc2VxdWVuY2Ugb2ZcbiAgICAgICAgICAgICAgIFtsaWZ0X2RlZmVycmVkXSBleGlzdGluZyBmb3Igb25lLXdheSBycGNzLiBXZSB1c2UgW0VhZ2VyX2RlZmVycmVkXSBzbyBpblxuICAgICAgICAgICAgICAgdGhlIG5vbi1ibG9ja2luZyBjYXNlcyB0aGlzIHdpbGwgc3RpbGwgcnVuIHN5bmNocm9ub3VzbHkuICopXG4gICAgICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPSBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxIGluXG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBjb21wdXRhdGlvblwiKVxuICAgICAgICAgICAgZWxzZSBDb250aW51ZSkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXlfZXhwZXJ0IGYgLT5cbiAgICAgICh0cnlcbiAgICAgICAgIGxldCBsZW4gPSAocXVlcnkuZGF0YSA6PiBpbnQpIGluXG4gICAgICAgICBsZXQgKF8gOiBfIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgPVxuICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgIGluXG4gICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgQ29udGludWVcbiAgICAgICB3aXRoXG4gICAgICAgfCBleG4gLT5cbiAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgdGhlblxuICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICBlbHNlIENvbnRpbnVlKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGMgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9yZXNwb25zZV93cml0ZXIsIGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHF1ZXJ5X2NvbnRlbnRzID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBiaW5fcXVlcnlfcmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIGxldCBvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIHJlc3VsdCAtPiBPayByZXN1bHRcbiAgICAgICAgfCBOb3RfYXV0aG9yaXplZCBlcnJvciAtPiBhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwY1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT5cbiAgICAgICAgICh0cnlcbiAgICAgICAgICAgIFJlc3VsdC5iaW5kIHF1ZXJ5X2NvbnRlbnRzIH5mOihmdW4gcXVlcnkgLT5cbiAgICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcXVlcnkgfD4gb3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsdClcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIGVycilcbiAgICAgICAgICAgICAgICB8IE9rIHF1ZXJ5IC0+XG4gICAgICAgICAgICAgICAgICBFYWdlcl9kZWZlcnJlZC5tYXBcbiAgICAgICAgICAgICAgICAgICAgKGYgdC5jb25uZWN0aW9uX3N0YXRlIHF1ZXJ5KVxuICAgICAgICAgICAgICAgICAgICB+Zjpvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0KVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IGV4biA9XG4gICAgICAgIFJwY19yZXN1bHQudW5jYXVnaHRfZXhuIGV4biB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgZXhwZXJ0IGNvbXB1dGF0aW9uXCJcbiAgICAgIGluXG4gICAgICBsZXQgaGFuZGxlX2V4biByZXN1bHQgPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgICAgdGhlbiByZXN1bHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3dyaXRlcl91bml0IHJlc3VsdDtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICBpblxuICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICBsZXQgY2hlY2tfcmVzcG9uZGVkICgpID1cbiAgICAgICAgaWYgcmVzcG9uZGVyLnJlc3BvbmRlZFxuICAgICAgICB0aGVuIE9rICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBoYW5kbGVfZXhuXG4gICAgICAgICAgICAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgIGxldCBvcGVuIEVhZ2VyX2RlZmVycmVkLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIChBdXRob3JpemVkIHJlc3VsdCkgLT5cbiAgICAgICAgICBsZXQgZCA9XG4gICAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgfCBSZXBsaWVkIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBkIC0+IGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZFxuICAgICAgICAgIHRoZW4gY2hlY2tfcmVzcG9uZGVkICgpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICB1cG9uIGQgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICAgICAgfD4gUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LnRhZzsgdmVyc2lvbiA9IHF1ZXJ5LnZlcnNpb24gfVxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgfD4gb2tfZXhuKTtcbiAgICAgICAgICAgIE9rICgpKVxuICAgICAgICB8IE9rIChOb3RfYXV0aG9yaXplZCBlcnJvcikgLT5cbiAgICAgICAgICBoYW5kbGVfZXhuIChhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInJwYyBleHBlcnRcIilcbiAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaGFuZGxlX2V4biAoY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgZXhuKSBpblxuICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICByZXN1bHRcbiAgICAgIGluXG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIFdhaXRcbiAgICAgICAgICAgKGxldCVtYXAgciA9IGQgaW5cbiAgICAgICAgICAgIG9rX2V4blxuICAgICAgICAgICAgICAoUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOnQuY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICAgICAgICAgICAgIHIpKVxuICAgICAgIHwgU29tZSByZXN1bHQgLT5cbiAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgICB8IEVycm9yIF8gLT4gU3RvcCByZXN1bHQpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5TdHJlYW1pbmdfcnBjIHN0cmVhbWluZ19ycGMgLT5cbiAgICAgIGxldCBzdHJlYW1fcXVlcnkgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlbjpxdWVyeS5kYXRhXG4gICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcGlwZV9ycGMgc3RyZWFtX3F1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgQWJvcnQgLT4gMFxuICAgICAgICAgICAgfCBgUXVlcnkgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzdHJlYW1fcXVlcnkgd2l0aFxuICAgICAgIHwgRXJyb3IgX2VyciAtPiAoKVxuICAgICAgIHwgT2sgYEFib3J0IC0+XG4gICAgICAgICAoKiBOb3RlIHRoYXQgdGhlcmUncyBzb21lIGRlbGF5IGJldHdlZW4gd2hlbiB3ZSByZWNlaXZlIGEgcGlwZSBSUEMgcXVlcnkgYW5kXG4gICAgICAgICAgICB3aGVuIHdlIHB1dCBzb21ldGhpbmcgaW4gW29wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc10gKHdlIHdhaXQgZm9yXG4gICAgICAgICAgICBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdG8gcmV0dXJuKS4gRHVyaW5nIHRoaXMgdGltZSwgYW4gYWJvcnQgbWVzc2FnZSB3b3VsZFxuICAgICAgICAgICAganVzdCBiZSBpZ25vcmVkLiBUaGUgZGlzcGF0Y2hlciBjYW4ndCBhYm9ydCB0aGUgcXVlcnkgd2hpbGUgdGhpcyBpc1xuICAgICAgICAgICAgaGFwcGVuaW5nLCB0aG91Z2gsIHNpbmNlIHRoZSBpbnRlcmZhY2UgZG9lc24ndCBleHBvc2UgdGhlIElEIHJlcXVpcmVkIHRvXG4gICAgICAgICAgICBhYm9ydCB0aGUgcXVlcnkgdW50aWwgYWZ0ZXIgYSByZXNwb25zZSBoYXMgYmVlbiByZXR1cm5lZC4gKilcbiAgICAgICAgIE9wdGlvbi5pdGVyIChIYXNodGJsLmZpbmQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgcXVlcnkuaWQpIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IFBpcGUgcGlwZSAtPiBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICAgICAgICAgICB8IERpcmVjdCB3IC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHcpXG4gICAgICAgfCBPayAoYFF1ZXJ5IGxlbikgLT5cbiAgICAgICAgIGFwcGx5X3N0cmVhbWluZ19pbXBsZW1lbnRhdGlvblxuICAgICAgICAgICB0XG4gICAgICAgICAgIHN0cmVhbWluZ19ycGNcbiAgICAgICAgICAgfmxlblxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmlkXG4gICAgICAgICAgIH5vbl9leGNlcHRpb25cbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcik7XG4gICAgICBDb250aW51ZVxuICA7O1xuXG4gIGxldCBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uXG4gICAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gICAgPVxuICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uJ1xuICAgICAgdFxuICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfm9uX2V4Y2VwdGlvblxuICA7O1xuXG4gIGxldCBmbHVzaCAoVCB0KSA9XG4gICAgYXNzZXJ0IChub3QgdC5zdG9wcGVkKTtcbiAgICBsZXQgcHJvZHVjZXJzX2ZsdXNoZWQgPVxuICAgICAgSGFzaHRibC5mb2xkIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIH5pbml0OltdIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPlxuICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgfCBEaXJlY3QgXyAtPiBhY2NcbiAgICAgICAgfCBQaXBlIHBpcGUgLT4gRGVmZXJyZWQuaWdub3JlX20gKFBpcGUudXBzdHJlYW1fZmx1c2hlZCBwaXBlKSA6OiBhY2MpXG4gICAgaW5cbiAgICBEZWZlcnJlZC5hbGxfdW5pdCBwcm9kdWNlcnNfZmx1c2hlZFxuICA7O1xuXG4gIGxldCBzdG9wIChUIHQpID1cbiAgICB0LnN0b3BwZWQgPC0gdHJ1ZTtcbiAgICBIYXNodGJsLml0ZXIgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmY6KGZ1bmN0aW9uXG4gICAgICB8IERpcmVjdCB3cml0ZXIgLT5cbiAgICAgICAgKCogRG9uJ3QgcmVtb3ZlIHRoZSB3cml0ZXIgZnJvbSB0aGUgaW5zdGFuY2UsIGFzIHRoYXQgd291bGQgbW9kaWZ5IHRoZSBoYXNodGFibGVcbiAgICAgICAgICAgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLiAqKVxuICAgICAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2Ugd3JpdGVyXG4gICAgICB8IFBpcGUgXyAtPiAoKSk7XG4gICAgSGFzaHRibC5jbGVhciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc1xuICA7O1xuXG4gIGxldCBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnQgPVxuICAgIG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICB8IGBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgYFJhaXNlIC0+IFJwY19lcnJvci5yYWlzZSBlcnJvciB0LmNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgIHwgYENhbGwgZiAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBmXG4gICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICB+cnBjX3RhZzooUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS5QLlF1ZXJ5LnRhZylcbiAgICAgICAgICAgfnZlcnNpb246cXVlcnkudmVyc2lvblxuICAgICAgIHdpdGhcbiAgICAgICB8IGBDbG9zZV9jb25uZWN0aW9uIC0+IFN0b3AgKE9rICgpKVxuICAgICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlKVxuICA7O1xuXG4gIGxldCBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgdFxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9ID0gdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgICBsZXQgZGVzY3JpcHRpb24gOiBEZXNjcmlwdGlvbi50ID1cbiAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBTb21lIChsYXN0X2Rlc2MsIGltcGxlbWVudGF0aW9uKSB3aGVuIERlc2NyaXB0aW9uLmVxdWFsIGxhc3RfZGVzYyBkZXNjcmlwdGlvbiAtPlxuICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPlxuICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBpbXBsZW1lbnRhdGlvbnMgZGVzY3JpcHRpb24gd2l0aFxuICAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbiAtPlxuICAgICAgICAgdC5sYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPC0gU29tZSAoZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uKTtcbiAgICAgICAgIGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgaW1wbGVtZW50YXRpb24uZlxuICAgICAgICAgICB+b25fZXhjZXB0aW9uOmltcGxlbWVudGF0aW9uLm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+cXVlcnlcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgICAgICAgfCBgRXhwZXJ0IGltcGwgLT5cbiAgICAgICAgICAgIGxldCB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGEgPSAoXyA6IHN0cmluZyBvcHRpb24pOyBkYXRhID0gbGVuIH0gPVxuICAgICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbmRlciA9IFJlc3BvbmRlci5jcmVhdGUgaWQgdC53cml0ZXIgaW5cbiAgICAgICAgICAgICAgaW1wbFxuICAgICAgICAgICAgICAgIHQuY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHRhZylcbiAgICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICAgIHJlc3BvbmRlclxuICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgIH5sZW46KGxlbiA6PiBpbnQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gQ29udGludWUgZWxzZSBXYWl0IGRcbiAgICAgICAgICB8IChgQ29udGludWUgfCBgUmFpc2UgfCBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDYWxsIF8pIGFzIG9uX3Vua25vd25fcnBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBScGNfZXJyb3IuVW5pbXBsZW1lbnRlZF9ycGMgKHF1ZXJ5LnRhZywgYFZlcnNpb24gcXVlcnkudmVyc2lvbikgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgcXVlcnkuaWQgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IChFcnJvciBlcnJvcik7XG4gICAgICAgICAgICBoYW5kbGVfdW5rbm93bl9ycGMgb25fdW5rbm93bl9ycGMgZXJyb3IgdCBxdWVyeSkpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeVxuICAgICAgICAoVCB0KVxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgaWYgdC5zdG9wcGVkIHx8IFdyaXRlci5pc19jbG9zZWQgdC53cml0ZXJcbiAgICB0aGVuIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC5TdG9wIChPayAoKSlcbiAgICBlbHNlXG4gICAgICBScGNfbWV0YWRhdGEuUHJpdmF0ZS53aXRoX21ldGFkYXRhIHF1ZXJ5Lm1ldGFkYXRhIH5mOihmdW4gKCkgLT5cbiAgICAgICAgaGFuZGxlX3F1ZXJ5X2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcilcbiAgOztcbmVuZFxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBJbnN0YW5jZS5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG5sZXQgY3JlYXRlIH5pbXBsZW1lbnRhdGlvbnM6aSdzIH5vbl91bmtub3duX3JwYyA9XG4gICgqIE1ha2Ugc3VyZSB0aGUgdGFncyBhcmUgdW5pcXVlLiAqKVxuICBsZXQgaW1wbGVtZW50YXRpb25zID0gRGVzY3JpcHRpb24uVGFibGUuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIGxldCBkdXBzID0gRGVzY3JpcHRpb24uSGFzaF9zZXQuY3JlYXRlIH5zaXplOjEwICgpIGluXG4gIExpc3QuaXRlciBpJ3MgfmY6KGZ1biAoaSA6IF8gSW1wbGVtZW50YXRpb24udCkgLT5cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgeyBEZXNjcmlwdGlvbi5uYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpLnRhZzsgdmVyc2lvbiA9IGkudmVyc2lvbiB9XG4gICAgaW5cbiAgICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjcmlwdGlvbiB+ZGF0YTppIHdpdGhcbiAgICB8IGBPayAtPiAoKVxuICAgIHwgYER1cGxpY2F0ZSAtPiBIYXNoX3NldC5hZGQgZHVwcyBkZXNjcmlwdGlvbik7XG4gIGlmIG5vdCAoSGFzaF9zZXQuaXNfZW1wdHkgZHVwcylcbiAgdGhlbiBFcnJvciAoYER1cGxpY2F0ZV9pbXBsZW1lbnRhdGlvbnMgKEhhc2hfc2V0LnRvX2xpc3QgZHVwcykpXG4gIGVsc2UgT2sgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIDo+IF8gb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIYW5kc2hha2VfZXJyb3IgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFb2ZcbiAgICAgIHwgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICAgfCBUaW1lb3V0XG4gICAgICB8IFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0aW9uX2ZhaWxlZCBvZiBFcnJvci50XG4gICAgICB8IE5lZ290aWF0ZWRfdW5leHBlY3RlZF92ZXJzaW9uIG9mIGludFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgZXhjZXB0aW9uIEhhbmRzaGFrZV9lcnJvciBvZiAodCAqIEluZm8udCkgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgdG9fZXhuIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uIHQgPSBIYW5kc2hha2VfZXJyb3IgKHQsIGNvbm5lY3Rpb25fZGVzY3JpcHRpb24pXG5lbmRcblxubW9kdWxlIEhlYWRlciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIHYyIDogdFxuICB2YWwgbmVnb3RpYXRlIDogdXM6dCAtPiBwZWVyOnQgLT4gKGludCwgSGFuZHNoYWtlX2Vycm9yLnQpIHJlc3VsdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgUC5IZWFkZXJcblxuICBsZXQgY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICAgIFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNyZWF0ZV9leG4gKCkgfnByb3RvY29sOlJwYyB+c3VwcG9ydGVkX3ZlcnNpb25zXG4gIDs7XG5cbiAgbGV0IHYyID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxOyAyIF1cbiAgbGV0IHYxID0gY3JlYXRlIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cblxuICBsZXQgbmVnb3RpYXRlIH51cyB+cGVlciA9XG4gICAgbWF0Y2ggbmVnb3RpYXRlIH5hbGxvd19sZWdhY3lfcGVlcjp0cnVlIH51cyB+cGVlciB3aXRoXG4gICAgfCBFcnJvciBlIC0+IEVycm9yIChIYW5kc2hha2VfZXJyb3IuTmVnb3RpYXRpb25fZmFpbGVkIGUpXG4gICAgfCBPayBpIC0+IE9rIGlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJvdG9jb2xfd3JpdGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBzZXhwX29mX3dyaXRlciA6IHQgLT4gU2V4cC50XG4gIHZhbCBjcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIDogV3JpdGVyLnQgLT4gdFxuICB2YWwgc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IHQgLT4gaW50IC0+IHVuaXRcblxuICB2YWwgc2VuZF9xdWVyeVxuICAgIDogIHRcbiAgICAtPiAncXVlcnkgUC5RdWVyeS50XG4gICAgLT4gYmluX3dyaXRlcl9xdWVyeToncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgOiAgdFxuICAgIC0+IHVuaXQgUC5RdWVyeS50XG4gICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgLT4gcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmc6XG4gICAgICAgICAoV3JpdGVyLnRcbiAgICAgICAgICAtPiBQLk1lc3NhZ2UubmF0MF90IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgLT4gUC5NZXNzYWdlLm5hdDBfdFxuICAgICAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAtPiBsZW46aW50XG4gICAgICAgICAgLT4gJ3Jlc3VsdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudClcbiAgICAtPiAncmVzdWx0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG5cbiAgdmFsIHNlbmRfaGVhcnRiZWF0IDogdCAtPiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50XG4gIHZhbCBjYW5fc2VuZCA6IHQgLT4gYm9vbFxuICB2YWwgYnl0ZXNfdG9fd3JpdGUgOiB0IC0+IGludFxuICB2YWwgYnl0ZXNfd3JpdHRlbiA6IHQgLT4gSW50NjMudFxuICB2YWwgZmx1c2hlZCA6IHQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIGNsb3NlIDogdCAtPiB1bml0IERlZmVycmVkLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIDogaW50IFNldF9vbmNlLnRcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3dyaXRlciB0ID0gWyVzZXhwX29mOiBXcml0ZXIudF0gdC53cml0ZXJcblxuICBsZXQgY3JlYXRlX2JlZm9yZV9uZWdvdGlhdGlvbiB3cml0ZXIgPVxuICAgIHsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID0gU2V0X29uY2UuY3JlYXRlICgpOyB3cml0ZXIgfVxuICA7O1xuXG4gIGxldCBzZXRfbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIHQgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID1cbiAgICBTZXRfb25jZS5zZXRfZXhuIHQubmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIFslaGVyZV0gbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gIDs7XG5cbiAgbGV0IHF1ZXJ5X21lc3NhZ2UgdCBxdWVyeSA6IF8gUC5NZXNzYWdlLnQgPVxuICAgIG1hdGNoIFNldF9vbmNlLmdldF9leG4gdC5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gWyVoZXJlXSB3aXRoXG4gICAgfCAxIC0+IFF1ZXJ5X3YxIChQLlF1ZXJ5LnRvX3YxIHF1ZXJ5KVxuICAgIHwgXyAtPiBRdWVyeSBxdWVyeVxuICA7O1xuXG4gIGxldCBzZW5kX3F1ZXJ5IHQgcXVlcnkgfmJpbl93cml0ZXJfcXVlcnkgPVxuICAgIGxldCBtZXNzYWdlID0gcXVlcnlfbWVzc2FnZSB0IHF1ZXJ5IGluXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgIHQud3JpdGVyXG4gICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfcXVlcnkpKVxuICAgICAgbWVzc2FnZVxuICA7O1xuXG4gIGxldCBzZW5kX2V4cGVydF9xdWVyeSB0IHF1ZXJ5IH5idWYgfnBvcyB+bGVuIH5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgPVxuICAgIGxldCBoZWFkZXIgPSBxdWVyeV9tZXNzYWdlIHQgeyBxdWVyeSB3aXRoIGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH0gaW5cbiAgICBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdC53cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICA7O1xuXG4gIGxldCBzZW5kX2hlYXJ0YmVhdCB0ID1cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gIDs7XG5cbiAgbGV0IG9mX3dyaXRlciBmIHQgPSBmIHQud3JpdGVyXG4gIGxldCBjYW5fc2VuZCA9IG9mX3dyaXRlciBXcml0ZXIuY2FuX3NlbmRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlID0gb2Zfd3JpdGVyIFdyaXRlci5ieXRlc190b193cml0ZVxuICBsZXQgYnl0ZXNfd3JpdHRlbiA9IG9mX3dyaXRlciBXcml0ZXIuYnl0ZXNfd3JpdHRlblxuICBsZXQgZmx1c2hlZCA9IG9mX3dyaXRlciBXcml0ZXIuZmx1c2hlZFxuICBsZXQgc3RvcHBlZCA9IG9mX3dyaXRlciBXcml0ZXIuc3RvcHBlZFxuICBsZXQgY2xvc2UgPSBvZl93cml0ZXIgV3JpdGVyLmNsb3NlXG5lbmRcblxubW9kdWxlIEhlYXJ0YmVhdF9jb25maWcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGZpZWxkc11cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDc0YTFmNDc1YmZiMmVlZDVhNTA5YmE3MWNkNzg5MWQyIHx9XVxuICA7O1xuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyh0aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC4pXG4gICAgICAgID8oc2VuZF9ldmVyeSA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMTAuKVxuICAgICAgICAoKVxuICAgID1cbiAgICB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfVxuICA7O1xuXG4gIG1vZHVsZSBSdW50aW1lID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIDsgc2VuZF9ldmVyeSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHRvX3J1bnRpbWUgeyB0aW1lb3V0OyBzZW5kX2V2ZXJ5IH0gPSB7IFJ1bnRpbWUudGltZW91dDsgc2VuZF9ldmVyeSB9XG5lbmRcblxudHlwZSByZXNwb25zZV9oYW5kbGVyID1cbiAgTmF0MC50IFAuUmVzcG9uc2UudFxuICAtPiByZWFkX2J1ZmZlcjpCaWdzdHJpbmcudFxuICAtPiByZWFkX2J1ZmZlcl9wb3NfcmVmOmludCByZWZcbiAgLT4gWyBga2VlcFxuICAgICB8IGB3YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICB8IGByZW1vdmUgb2YgdW5pdCBScGNfcmVzdWx0LnRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICAgICBdXG5cbnR5cGUgdCA9XG4gIHsgZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgOyBoZWFydGJlYXRfY29uZmlnIDogSGVhcnRiZWF0X2NvbmZpZy5SdW50aW1lLnRcbiAgOyBtdXRhYmxlIGhlYXJ0YmVhdF9jYWxsYmFja3MgOiAodW5pdCAtPiB1bml0KSBhcnJheVxuICA7IG11dGFibGUgbGFzdF9zZWVuX2FsaXZlIDogVGltZV9ucy50XG4gIDsgbWF4X21ldGFkYXRhX3NpemUgOiBCeXRlX3VuaXRzLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA6IGludCBTZXRfb25jZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3RfaHVtX3dyaXRlciB0ID1cbiAgWyVzZXhwXG4gICAgeyBkZXNjcmlwdGlvbiA6IEluZm8udCA9IHQuZGVzY3JpcHRpb247IHdyaXRlciA6IFByb3RvY29sX3dyaXRlci53cml0ZXIgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoUHJvdG9jb2xfd3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKVxuICB0aGVuIEVycm9yIGBDbG9zZWRcbiAgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBieXRlc193cml0dGVuIHQgPSBQcm90b2NvbF93cml0ZXIuYnl0ZXNfd3JpdHRlbiB0LndyaXRlclxubGV0IGJ5dGVzX3JlYWQgdCA9IFJlYWRlci5ieXRlc19yZWFkIHQucmVhZGVyXG5sZXQgZmx1c2hlZCB0ID0gUHJvdG9jb2xfd3JpdGVyLmZsdXNoZWQgdC53cml0ZXJcblxubGV0IGhhbmRsZV9zZW5kX3Jlc3VsdCA6IHQgLT4gJ2EgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQgLT4gJ2EgPVxuICBmdW4gdCByIC0+XG4gIG1hdGNoIHIgd2l0aFxuICB8IFNlbnQgeCAtPiB4XG4gIHwgQ2xvc2VkIC0+XG4gICAgKCogQWxsIG9mIHRoZSBwbGFjZXMgd2UgY2FsbCBbaGFuZGxlX3NlbmRfcmVzdWx0XSBjaGVjayB3aGV0aGVyIFt0XSBpcyBjbG9zZWRcbiAgICAgICAodXN1YWxseSB2aWEgdGhlIFt3cml0ZXJdIGZ1bmN0aW9uIGFib3ZlKS4gVGhpcyBjaGVja3Mgd2hldGhlciBbdC53cml0ZXJdIGlzXG4gICAgICAgY2xvc2VkLCB3aGljaCBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgW3RdIGlzIGNsb3NlZC4gKilcbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlJQQyBjb25uZWN0aW9uIGdvdCBjbG9zZWQgd3JpdGVyXCIgdCBzZXhwX29mX3RfaHVtX3dyaXRlclxuICB8IE1lc3NhZ2VfdG9vX2JpZyBfIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiTWVzc2FnZSBjYW5ub3QgYmUgc2VudFwiXG4gICAgICAsIHsgcmVhc29uID0gKHIgOiBfIFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KTsgY29ubmVjdGlvbiA9ICh0IDogdF9odW1fd3JpdGVyKSB9XVxuOztcblxubGV0IGRpc3BhdGNoIHQgfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfihxdWVyeSA6IF8gUC5RdWVyeS50KSA9XG4gIG1hdGNoIHdyaXRlciB0IHdpdGhcbiAgfCBFcnJvciBgQ2xvc2VkIGFzIHIgLT4gclxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBxdWVyeSA9XG4gICAgICBtYXRjaCBxdWVyeS5tZXRhZGF0YSB3aXRoXG4gICAgICB8IFNvbWUgbWV0YWRhdGEgLT5cbiAgICAgICAgeyBxdWVyeSB3aXRoXG4gICAgICAgICAgbWV0YWRhdGEgPVxuICAgICAgICAgICAgU29tZSAoU3RyaW5nLnByZWZpeCBtZXRhZGF0YSAoQnl0ZV91bml0cy5ieXRlc19pbnRfZXhuIHQubWF4X21ldGFkYXRhX3NpemUpKVxuICAgICAgICB9XG4gICAgICB8IE5vbmUgLT4gcXVlcnlcbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFByb3RvY29sX3dyaXRlci5zZW5kX3F1ZXJ5IHdyaXRlciBxdWVyeSB+YmluX3dyaXRlcl9xdWVyeSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICBPayAoKVxuOztcblxubGV0IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICBkb19zZW5kXG4gICAgICA/bWV0YWRhdGFcbiAgICAgIHRcbiAgICAgIH50YWdcbiAgICAgIH52ZXJzaW9uXG4gICAgICBidWZcbiAgICAgIH5wb3NcbiAgICAgIH5sZW5cbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyXG4gID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IHF1ZXJ5IDogdW5pdCBQLlF1ZXJ5LnQgPSB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhOyBkYXRhID0gKCkgfSBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgUHJvdG9jb2xfd3JpdGVyLnNlbmRfZXhwZXJ0X3F1ZXJ5XG4gICAgICAgIHdyaXRlclxuICAgICAgICBxdWVyeVxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+c2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nOmRvX3NlbmRcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0XG4gICAgaW5cbiAgICBPayByZXN1bHRcbjs7XG5cbmxldCBkaXNwYXRjaF9iaWdzdHJpbmcgPSBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG5cbmxldCBzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmcgPVxuICBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG47O1xuXG5sZXQgaGFuZGxlX3Jlc3BvbnNlIHQgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQgd2l0aFxuICB8IE5vbmUgLT4gU3RvcCAoRXJyb3IgKFJwY19lcnJvci5Vbmtub3duX3F1ZXJ5X2lkIHJlc3BvbnNlLmlkKSlcbiAgfCBTb21lIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAobWF0Y2ggcmVzcG9uc2VfaGFuZGxlciByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgd2l0aFxuICAgICB8IGBrZWVwIC0+IENvbnRpbnVlXG4gICAgIHwgYHdhaXQgd2FpdCAtPiBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlX2FuZF93YWl0IHdhaXQgLT5cbiAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZDtcbiAgICAgICBXYWl0IHdhaXRcbiAgICAgfCBgcmVtb3ZlIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIChtYXRjaCByZW1vdmFsX2NpcmN1bXN0YW5jZXMgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IENvbnRpbnVlXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBfIC0+IENvbnRpbnVlXG4gICAgICAgICAgIHwgQmluX2lvX2V4biBfXG4gICAgICAgICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgICAgICAgfCBXcml0ZV9lcnJvciBfXG4gICAgICAgICAgIHwgVW5jYXVnaHRfZXhuIF9cbiAgICAgICAgICAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gU3RvcCAoRXJyb3IgZSkpKSlcbjs7XG5cbmxldCBoYW5kbGVfbXNnXG4gICAgICB0XG4gICAgICAobXNnIDogXyBQLk1lc3NhZ2UudClcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50XG4gID1cbiAgbWF0Y2ggbXNnIHdpdGhcbiAgfCBIZWFydGJlYXQgLT5cbiAgICBBcnJheS5pdGVyIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gICAgQ29udGludWVcbiAgfCBSZXNwb25zZSByZXNwb25zZSAtPiBoYW5kbGVfcmVzcG9uc2UgdCByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgfCBRdWVyeV92MSBxdWVyeSAtPlxuICAgIGxldCBpbnN0YW5jZSA9IFNldF9vbmNlLmdldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpblxuICAgIGxldCBxdWVyeSA9IFAuUXVlcnkub2ZfdjEgcXVlcnkgaW5cbiAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuaGFuZGxlX3F1ZXJ5XG4gICAgICBpbnN0YW5jZVxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG47O1xuXG5sZXQgY2xvc2VfcmVhc29uIHQgfm9uX2Nsb3NlID1cbiAgbGV0IHJlYXNvbiA9IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQgaW5cbiAgbWF0Y2ggb25fY2xvc2Ugd2l0aFxuICB8IGBzdGFydGVkIC0+IHJlYXNvblxuICB8IGBmaW5pc2hlZCAtPlxuICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWQgaW5cbiAgICByZWFzb25cbjs7XG5cbmxldCBjbG9zZV9maW5pc2hlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VfZmluaXNoZWRcblxubGV0IGFkZF9oZWFydGJlYXRfY2FsbGJhY2sgdCBmID1cbiAgKCogQWRkaW5nIGhlYXJ0YmVhdCBjYWxsYmFja3MgaXMgcmVsYXRpdmVseSByYXJlLCBidXQgdGhlIGNhbGxiYWNrcyBhcmUgdHJpZ2dlcmVkIGEgbG90LlxuICAgICBUaGUgYXJyYXkgcmVwcmVzZW50YXRpb24gbWFrZXMgdGhlIGFkZGl0aW9uIHF1YWRyYXRpYyBmb3IgdGhlIHNha2Ugb2Yga2VlcGluZyB0aGVcbiAgICAgdHJpZ2dlcmluZyBjaGVhcC4gKilcbiAgdC5oZWFydGJlYXRfY2FsbGJhY2tzIDwtIEFycmF5LmFwcGVuZCBbfCBmIHxdIHQuaGVhcnRiZWF0X2NhbGxiYWNrc1xuOztcblxubGV0IHJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IHQgdGltZW91dCA9XG4gIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0IDwtIHRpbWVvdXQ7XG4gIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlXG47O1xuXG5sZXQgbGFzdF9zZWVuX2FsaXZlIHQgPSB0Lmxhc3Rfc2Vlbl9hbGl2ZVxuXG5sZXQgYWJvcnRfaGVhcnRiZWF0aW5nIHQgPVxuICBPcHRpb24uaXRlciAoU2V0X29uY2UuZ2V0IHQuaGVhcnRiZWF0X2V2ZW50KSB+ZjooZnVuIGV2ZW50IC0+XG4gICAgbWF0Y2ggU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYWJvcnQgdC50aW1lX3NvdXJjZSBldmVudCB3aXRoXG4gICAgfCBPayB8IFByZXZpb3VzbHlfdW5zY2hlZHVsZWQgLT4gKCkpXG47O1xuXG5sZXQgY2xvc2UgPyhzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2ZfaW50X3NlYyA1KSB+cmVhc29uIHQgPVxuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBhYm9ydF9oZWFydGJlYXRpbmcgdDtcbiAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkIHJlYXNvbjtcbiAgICAobWF0Y2ggU2V0X29uY2UuZ2V0IHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIHdpdGhcbiAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgfCBTb21lIGluc3RhbmNlIC0+XG4gICAgICAgbGV0IGZsdXNoZWQgPSBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UuZmx1c2ggaW5zdGFuY2UgaW5cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGZsdXNoZWRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5zdG9wIGluc3RhbmNlO1xuICAgICAgICAgZmx1c2hlZClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBEZWZlcnJlZC5hbnlfdW5pdFxuICAgICAgICAgICAgIFsgZmx1c2hlZFxuICAgICAgICAgICAgIDsgUHJvdG9jb2xfd3JpdGVyLnN0b3BwZWQgdC53cml0ZXJcbiAgICAgICAgICAgICA7IFRpbWVfc291cmNlLmFmdGVyXG4gICAgICAgICAgICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICAgICAgICAgICBzdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgICAgICAgICBdXG4gICAgICAgICBpblxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2UpKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBQcm90b2NvbF93cml0ZXIuY2xvc2UgdC53cml0ZXJcbiAgICA+Pj4gZnVuICgpIC0+IFJlYWRlci5jbG9zZSB0LnJlYWRlciA+Pj4gZnVuICgpIC0+IEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpKTtcbiAgY2xvc2VfZmluaXNoZWQgdFxuOztcblxubGV0IG9uX21lc3NhZ2UgdCB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yID1cbiAgbGV0IGYgYnVmIH5wb3MgfmxlbjpfIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgbGV0IG5hdDBfbXNnID0gUC5NZXNzYWdlLmJpbl9yZWFkX25hdDBfdCBidWYgfnBvc19yZWYgaW5cbiAgICBtYXRjaFxuICAgICAgaGFuZGxlX21zZ1xuICAgICAgICB0XG4gICAgICAgIG5hdDBfbXNnXG4gICAgICAgIH5yZWFkX2J1ZmZlcjpidWZcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6cG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgd2l0aFxuICAgIHwgQ29udGludWUgLT4gQ29udGludWVcbiAgICB8IFdhaXQgXyBhcyByZXMgLT4gcmVzXG4gICAgfCBTdG9wIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgIGxldCBtc2cgPSBcIlJwYyBtZXNzYWdlIGhhbmRsaW5nIGxvb3Agc3RvcHBlZFwiIGluXG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gSW5mby5vZl9zdHJpbmcgbXNnXG4gICAgICAgIHwgRXJyb3IgZSAtPlxuICAgICAgICAgIEluZm8uY3JlYXRlXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgICAgIGVcbiAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgIFwiQ29ubmVjdGlvbi5vbl9tZXNzYWdlIHJlc3VsdGVkIGluIENvbm5lY3Rpb25fY2xvc2VkIGVycm9yLiBUaGlzIGlzIFxcXG4gICAgICAgICAgICAgICAgICB3ZWlyZC5cIl0pKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgU3RvcCByZWFzb25cbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIGZcbjs7XG5cbmxldCBoZWFydGJlYXRfbm93IHQgPVxuICBsZXQgc2luY2VfbGFzdF9oZWFydGJlYXQgPVxuICAgIFRpbWVfbnMuZGlmZiAoU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpIHQubGFzdF9zZWVuX2FsaXZlXG4gIGluXG4gIGlmIFRpbWVfbnMuU3Bhbi4oID4gKSBzaW5jZV9sYXN0X2hlYXJ0YmVhdCB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICB0aGVuIChcbiAgICBsZXQgcmVhc29uICgpID1cbiAgICAgIHNwcmludGZcbiAgICAgICAgIVwiTm8gaGVhcnRiZWF0cyByZWNlaXZlZCBmb3IgJXtzZXhwOlRpbWVfbnMuU3Bhbi50fS5cIlxuICAgICAgICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dFxuICAgIGluXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl90aHVuayByZWFzb24pKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICAgIHwgRXJyb3IgYENsb3NlZCAtPiAoKVxuICAgIHwgT2sgd3JpdGVyIC0+IFByb3RvY29sX3dyaXRlci5zZW5kX2hlYXJ0YmVhdCB3cml0ZXIgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQpXG47O1xuXG5sZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9zZWMgMzAuXG5cbmxldCBjbGVhbnVwIHQgfnJlYXNvbiBleG4gPVxuICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KTtcbiAgaWYgbm90IChIYXNodGJsLmlzX2VtcHR5IHQub3Blbl9xdWVyaWVzKVxuICB0aGVuIChcbiAgICBsZXQgZXJyb3IgPVxuICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIHwgUnBjX2Vycm9yLlJwYyAoZXJyb3IsIChfIDogSW5mby50KSkgLT4gZXJyb3JcbiAgICAgIHwgZXhuIC0+IFVuY2F1Z2h0X2V4biAoRXhuLnNleHBfb2ZfdCBleG4pXG4gICAgaW5cbiAgICAoKiBjbGVhbiB1cCBvcGVuIHN0cmVhbWluZyByZXNwb25zZXMgKilcbiAgICAoKiBhbiB1bmZvcnR1bmF0ZSBoYWNrOyBvayBiZWNhdXNlIHRoZSByZXNwb25zZSBoYW5kbGVyIHdpbGwgaGF2ZSBub3RoaW5nXG4gICAgICAgdG8gcmVhZCBmb2xsb3dpbmcgYSByZXNwb25zZSB3aGVyZSBbZGF0YV0gaXMgYW4gZXJyb3IgKilcbiAgICBsZXQgZHVtbXlfYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAxIGluXG4gICAgbGV0IGR1bW15X3JlZiA9IHJlZiAwIGluXG4gICAgSGFzaHRibC5pdGVyaSB0Lm9wZW5fcXVlcmllcyB+ZjooZnVuIH5rZXk6cXVlcnlfaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChyZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlcjpkdW1teV9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWY6ZHVtbXlfcmVmXG4gICAgICAgICAgIHsgaWQgPSBxdWVyeV9pZDsgZGF0YSA9IEVycm9yIGVycm9yIH0pKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9xdWVyaWVzO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBkdW1teV9idWZmZXIpXG47O1xuXG5sZXQgc2NoZWR1bGVfaGVhcnRiZWF0cyB0ID1cbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2U7XG4gIGxldCBoZWFydGJlYXRfZnJvbV9ub3dfb24gPVxuICAgICgqIFthdF9pbnRlcnZhbHNdIHdpbGwgc2NoZWR1bGUgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0aGUgZmlyc3QgdGltZSB0aGUgdGltZV9zb3VyY2UgaXNcbiAgICAgICBhZHZhbmNlZCAqKVxuICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmF0X2ludGVydmFsc1xuICAgICAgdC50aW1lX3NvdXJjZVxuICAgICAgdC5oZWFydGJlYXRfY29uZmlnLnNlbmRfZXZlcnlcbiAgICAgIChmdW4gKCkgLT4gaGVhcnRiZWF0X25vdyB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaGVhcnRiZWF0X2V2ZW50IFslaGVyZV0gaGVhcnRiZWF0X2Zyb21fbm93X29uXG47O1xuXG5sZXQgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnNcbiAgPVxuICBQcm90b2NvbF93cml0ZXIuc2V0X25lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiB0LndyaXRlciBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb247XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB3cml0ZXIgfmhhbmRzaGFrZV90aW1lb3V0IH5oZWFkZXIgPVxuICBpZiBub3QgKFdyaXRlci5jYW5fc2VuZCB3cml0ZXIpXG4gIHRoZW4gcmV0dXJuIChFcnJvciBIYW5kc2hha2VfZXJyb3IuVHJhbnNwb3J0X2Nsb3NlZClcbiAgZWxzZSAoXG4gICAgV3JpdGVyLnNlbmRfYmluX3Byb3Qgd3JpdGVyIEhlYWRlci5iaW5fdC53cml0ZXIgaGVhZGVyIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgICgqIElmIHdlIHVzZSBbbWF4X2Nvbm5lY3Rpb25zXSBpbiB0aGUgc2VydmVyLCB0aGVuIHRoaXMgcmVhZCBtYXkganVzdCBoYW5nIHVudGlsIHRoZVxuICAgICAgIHNlcnZlciBzdGFydHMgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyAod2hpY2ggY291bGQgYmUgbmV2ZXIpLiAgVGhhdCBpcyB3aHkgYVxuICAgICAgIHRpbWVvdXQgaXMgdXNlZCAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5ydW46YE5vd1xuICAgICAgICAoZnVuICgpIC0+IFJlYWRlci5yZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQucmVhZGVyIEhlYWRlci5iaW5fdC5yZWFkZXIpXG4gICAgaW5cbiAgICBtYXRjaCVtYXBcbiAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAoVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXMgdC50aW1lX3NvdXJjZSlcbiAgICAgICAgaGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgICAgcmVzdWx0XG4gICAgd2l0aFxuICAgIHwgYFRpbWVvdXQgLT5cbiAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgdXAuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkhhbmRzaGFrZSB0aW1lb3V0XCIpKTtcbiAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgfCBgUmVzdWx0IChFcnJvciBleG4pIC0+XG4gICAgICBsZXQgcmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJbUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3RdIHJhaXNlZFwiIGluXG4gICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgIEVycm9yIChSZWFkaW5nX2hlYWRlcl9mYWlsZWQgKEVycm9yLm9mX2V4biBleG4pKVxuICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBFb2YpKSAtPiBFcnJvciBFb2ZcbiAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgIHwgYFJlc3VsdCAoT2sgKE9rIHBlZXIpKSAtPiBIZWFkZXIubmVnb3RpYXRlIH51czpoZWFkZXIgfnBlZXIpXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4ID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbDpScGNcbmxldCBkZWZhdWx0X2hhbmRzaGFrZV9oZWFkZXIgPSBIZWFkZXIudjJcblxubGV0IGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5ID1cbiAgVW5pdl9tYXAuS2V5LmNyZWF0ZSB+bmFtZTpcImFzeW5jIHJwYyBoYW5kc2hha2UgaGVhZGVyIG92ZXJyaWRlXCIgWyVzZXhwX29mOiBIZWFkZXIudF1cbjs7XG5cbmxldCBnZXRfaGFuZHNoYWtlX2hlYWRlciAoKSA9XG4gIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuZmluZF9sb2NhbCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleVxuICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6ZGVmYXVsdF9oYW5kc2hha2VfaGVhZGVyXG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgPyhoYW5kc2hha2VfdGltZW91dCA9IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQpXG4gICAgICA/KGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLmNyZWF0ZSAoKSlcbiAgICAgID8obWF4X21ldGFkYXRhX3NpemUgPSBCeXRlX3VuaXRzLm9mX2tpbG9ieXRlcyAxLilcbiAgICAgID8oZGVzY3JpcHRpb24gPSBJbmZvLm9mX3N0cmluZyBcIjxjcmVhdGVkLWRpcmVjdGx5PlwiKVxuICAgICAgPyh0aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLndhbGxfY2xvY2sgKCkpXG4gICAgICAoeyByZWFkZXI7IHdyaXRlciB9IDogVHJhbnNwb3J0LnQpXG4gID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9XG4gICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICB8IE5vbmUgLT4gSW1wbGVtZW50YXRpb25zLm51bGwgKClcbiAgICB8IFNvbWUgcyAtPiBzXG4gIGluXG4gIGxldCB0ID1cbiAgICB7IGRlc2NyaXB0aW9uXG4gICAgOyBoZWFydGJlYXRfY29uZmlnID0gSGVhcnRiZWF0X2NvbmZpZy50b19ydW50aW1lIGhlYXJ0YmVhdF9jb25maWdcbiAgICA7IGhlYXJ0YmVhdF9jYWxsYmFja3MgPSBbfHxdXG4gICAgOyBsYXN0X3NlZW5fYWxpdmUgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdGltZV9zb3VyY2VcbiAgICA7IG1heF9tZXRhZGF0YV9zaXplXG4gICAgOyByZWFkZXJcbiAgICA7IHdyaXRlciA9IFByb3RvY29sX3dyaXRlci5jcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIHdyaXRlclxuICAgIDsgb3Blbl9xdWVyaWVzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBjbG9zZV9maW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBoZWFydGJlYXRfZXZlbnQgPSBTZXRfb25jZS5jcmVhdGUgKClcbiAgICA7IG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIH1cbiAgaW5cbiAgbGV0IHdyaXRlcl9tb25pdG9yX2V4bnMgPSBNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSAoV3JpdGVyLm1vbml0b3Igd3JpdGVyKSBpblxuICB1cG9uIChXcml0ZXIuc3RvcHBlZCB3cml0ZXIpIChmdW4gKCkgLT5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJQQyB0cmFuc3BvcnQgc3RvcHBlZFwiKSkpO1xuICBsZXQgaGVhZGVyID0gZ2V0X2hhbmRzaGFrZV9oZWFkZXIgKCkgaW5cbiAgbWF0Y2glbWFwIGRvX2hhbmRzaGFrZSB0IHdyaXRlciB+aGFuZHNoYWtlX3RpbWVvdXQgfmhlYWRlciB3aXRoXG4gIHwgT2sgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZVxuICAgICAgdFxuICAgICAgd3JpdGVyXG4gICAgICB+bmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uXG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgfnJlc3Q6YExvZ1xuICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICBjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24ud2l0aF9jbG9zZSBmaW5pc2hlZFwiKSlcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCViaW5kIHJlc3VsdCA9IGRpc3BhdGNoX3F1ZXJpZXMgdCBpblxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgIHwgU29tZSBfIC0+IGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgICAgIGluXG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgc2VydmVyX3dpdGhfY2xvc2VcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IG9uX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gYENhbGwgZlxuICAgIHwgYFJhaXNlIC0+IGBSYWlzZVxuICAgIHwgYElnbm9yZSAtPiBgQ2FsbCAoZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgaW5cbiAgd2l0aF9jbG9zZVxuICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgP2Rlc2NyaXB0aW9uXG4gICAgP3RpbWVfc291cmNlXG4gICAgdHJhbnNwb3J0XG4gICAgfmltcGxlbWVudGF0aW9uc1xuICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICAgIH5kaXNwYXRjaF9xdWVyaWVzOihmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuOztcblxubGV0IGNsb3NlXG4gICAgICA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0XG4gICAgICA/KHJlYXNvbiA9IEluZm8ub2Zfc3RyaW5nIFwiUnBjLkNvbm5lY3Rpb24uY2xvc2VcIilcbiAgICAgIHRcbiAgPVxuICBjbG9zZSA/c3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lb3V0IH5yZWFzb24gdFxuOztcblxubW9kdWxlIENsaWVudF9pbXBsZW1lbnRhdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3MgdCA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlIDogdCAtPiAnc1xuICAgIDsgaW1wbGVtZW50YXRpb25zIDogJ3MgSW1wbGVtZW50YXRpb25zLnRcbiAgICB9XG5cbiAgbGV0IG51bGwgKCkgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA9IChmdW4gXyAtPiAoKSk7IGltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9ucy5udWxsICgpIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhlYWRlciA9IEhlYWRlclxuXG4gIGxldCB3aXRoX2FzeW5jX2V4ZWN1dGlvbl9jb250ZXh0IH5jb250ZXh0IH5mID1cbiAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhfbG9jYWwgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXkgKFNvbWUgY29udGV4dCkgfmZcbiAgOztcbmVuZFxuIiwiXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFV0aWxcbm1vZHVsZSBQID0gUHJvdG9jb2xcbm1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uXG5tb2R1bGUgT25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb24gPSBJbXBsZW1lbnRhdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9ucyA9IEltcGxlbWVudGF0aW9uc1xubW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxubW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG5cbigqIFRoZSBSZXN1bHQgbW9uYWQgaXMgYWxzbyB1c2VkLiAqKVxubGV0ICggPj49fiApID0gUmVzdWx0LiggPj49IClcbmxldCAoID4+fH4gKSA9IFJlc3VsdC4oID4+fCApXG5cbm1vZHVsZSBScGNfY29tbW9uID0gc3RydWN0XG4gIGxldCBkaXNwYXRjaF9yYXcnXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBtZXRhZGF0YTsgZGF0YSA9IHF1ZXJ5IH0gaW5cbiAgICBtYXRjaCBDb25uZWN0aW9uLmRpc3BhdGNoIGNvbm4gfnJlc3BvbnNlX2hhbmRsZXIgfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IHdpdGhcbiAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+IEVycm9yIFJwY19lcnJvci5Db25uZWN0aW9uX2Nsb3NlZFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9yYXcgP21ldGFkYXRhIGNvbm4gfnRhZyB+dmVyc2lvbiB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgfnF1ZXJ5X2lkIH5mID1cbiAgICBsZXQgcmVzcG9uc2VfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgKG1hdGNoXG4gICAgICAgZGlzcGF0Y2hfcmF3J1xuICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICBjb25uXG4gICAgICAgICB+dGFnXG4gICAgICAgICB+dmVyc2lvblxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSAoZiByZXNwb25zZV9pdmFyKSlcbiAgICAgd2l0aFxuICAgICB8IE9rICgpIC0+ICgpXG4gICAgIHwgRXJyb3IgXyBhcyBlIC0+IEl2YXIuZmlsbCByZXNwb25zZV9pdmFyIGUpO1xuICAgIEl2YXIucmVhZCByZXNwb25zZV9pdmFyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcblxuICBsZXQgc2hhcGVzIHQgPVxuICAgIFJwY19zaGFwZXMuUnBjIHsgcXVlcnkgPSB0LmJpbl9xdWVyeS5zaGFwZTsgcmVzcG9uc2UgPSB0LmJpbl9yZXNwb25zZS5zaGFwZSB9XG4gIDs7XG5cbiAgbGV0IGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBxdWVyeSlcbiAgOztcblxuICBsZXQgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHF1ZXJ5ID1cbiAgICBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgc3RhdGUgcXVlcnkpIH5mOihmdW4gYSAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIGEpXG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBEZWZlcnJlZCApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgUnBjXG4gICAgICAgICAgKCB0LmJpbl9xdWVyeS5yZWFkZXJcbiAgICAgICAgICAsIHQuYmluX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgICwgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmXG4gICAgICAgICAgLCBCbG9ja2luZyApXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChyZXNwb25zZSA6IF8gUC5SZXNwb25zZS50KVxuICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2UgPVxuICAgICAgICByZXNwb25zZS5kYXRhXG4gICAgICAgID4+PX4gZnVuIGxlbiAtPlxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIHQuYmluX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgSXZhci5maWxsIGl2YXIgcmVzcG9uc2U7XG4gICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2V4biA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgID9tZXRhZGF0YVxuICAgICAgICBjb25uXG4gICAgICAgIH50YWc6KFAuUnBjX3RhZy5vZl9zdHJpbmcgcnBjX3RhZylcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgYnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjooU29tZSByZXNwb25zZV9oYW5kbGVyKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgRWFnZXJfZGVmZXJyZWQubWFwIChmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuKSB+ZjooZnVuIGEgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCBhKVxuICAgIDs7XG5cbiAgICBsZXQgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHJlc3BvbmRlciBidWYgfnBvcyB+bGVuID1cbiAgICAgIE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4pXG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCcgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24nXG4gICAgICAgICAgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGZcbiAgICAgID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnXG4gICAgICA7IHZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGJsb2NraW5nX25vX2F1dGhvcml6YXRpb24gZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgUnBjX3NoYXBlcy5Vbmtub3duXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gIHR5cGUgJ21zZyB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fbXNnIDogJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IG1zZ190eXBlX2lkIDogJ21zZyBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZ1xuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2cgPVxuICAgIGxldCBtc2dfdHlwZV9pZCA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTptc2dcIl0gc2V4cF9vZl9vcGFxdWUgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZTsgdmVyc2lvbjsgYmluX21zZzsgbXNnX3R5cGVfaWQgfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9IFJwY19zaGFwZXMuT25lX3dheSB7IG1zZyA9IHQuYmluX21zZy5zaGFwZSB9XG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IG1zZ190eXBlX2lkIHQgPSB0Lm1zZ190eXBlX2lkXG5cbiAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBxdWVyeSA9XG4gICAgRWFnZXJfZGVmZXJyZWQucmV0dXJuIChPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIG5vX2F1dGhvcml6YXRpb24gZilcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9tc2cud3JpdGVyXG4gICAgICB+cXVlcnlcbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICA7O1xuXG4gIGxldCBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHQgPVxuICAgIFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgIHJlc3VsdFxuICAgICAgfnJwY19kZXNjcmlwdGlvbjooZGVzY3JpcHRpb24gdClcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfD4gZnVuIHJlc3VsdCAtPiBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSlcbiAgOztcblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbGV0IG5vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSBidWYgfnBvcyB+bGVuID1cbiAgICAgIEVhZ2VyX2RlZmVycmVkLnJldHVybiAoT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSBidWYgfnBvcyB+bGVuKSlcbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBPbmVfd2F5X2V4cGVydCAobm9fYXV0aG9yaXphdGlvbiBmKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rIGZsdXNoZWQgLT4gYEZsdXNoZWQgZmx1c2hlZFxuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgIHwgRXJyb3Igb2YgRXJyb3IudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICBbJWV4cGVjdCB7fCA3NDhjOGJmNDUwMmQwOTc4ZDAwN2JmN2Y5NmE3ZWY3ZiB8fV1cbiAgOztcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICAgIHwgQ2xvc2VkX2xvY2FsbHlcbiAgICAgICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgfCBFcnJvciBvZiBFcnJvci5TdGFibGUuVjIudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzQ4YzhiZjQ1MDJkMDk3OGQwMDdiZjdmOTZhN2VmN2YgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG4oKiB0aGUgYmFzaXMgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBQaXBlX3JwYyBhbmQgU3RhdGVfcnBjICopXG5tb2R1bGUgU3RyZWFtaW5nX3JwYyA9IHN0cnVjdFxuICBtb2R1bGUgSW5pdGlhbF9tZXNzYWdlID0gUC5TdHJlYW1faW5pdGlhbF9tZXNzYWdlXG5cbiAgdHlwZSAoJ3F1ZXJ5LCAnaW5pdGlhbF9yZXNwb25zZSwgJ3VwZGF0ZV9yZXNwb25zZSwgJ2Vycm9yX3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5faW5pdGlhbF9yZXNwb25zZSA6ICdpbml0aWFsX3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3VwZGF0ZV9yZXNwb25zZSA6ICd1cGRhdGVfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgOiAnZXJyb3JfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIDogJ2luaXRpYWxfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCA6ICd1cGRhdGVfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkIDogJ2Vycm9yX3Jlc3BvbnNlIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VcbiAgICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2VcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayA9XG4gICAgICBtYXRjaCBjbGllbnRfcHVzaGVzX2JhY2sgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnF1ZXJ5XCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlfVwiXVxuICAgICAgICBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlXG4gICAgICAgIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTole2FsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06ZXJyb3JcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lXG4gICAgOyB2ZXJzaW9uXG4gICAgOyBiaW5fcXVlcnlcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlXG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlXG4gICAgOyBiaW5fZXJyb3JfcmVzcG9uc2UgPSBiaW5fZXJyb3JcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFja1xuICAgIDsgcXVlcnlfdHlwZV9pZFxuICAgIDsgaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gICAgOyB1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICAgIDsgZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICAgIH1cbiAgOztcblxuICBsZXQgbWFrZV9pbml0aWFsX21lc3NhZ2UgeCA9XG4gICAgeyBJbml0aWFsX21lc3NhZ2UudW51c2VkX3F1ZXJ5X2lkID0gUC5VbnVzZWRfcXVlcnlfaWQudDsgaW5pdGlhbCA9IHggfVxuICA7O1xuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgUnBjX3NoYXBlcy5TdHJlYW1pbmdfcnBjXG4gICAgICB7IHF1ZXJ5ID0gdC5iaW5fcXVlcnkuc2hhcGVcbiAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA9IHQuYmluX2luaXRpYWxfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgdXBkYXRlX3Jlc3BvbnNlID0gdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLnNoYXBlXG4gICAgICA7IGVycm9yID0gdC5iaW5fZXJyb3JfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2dlbiB0ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSBpbXBsID1cbiAgICBsZXQgYmluX2luaXRfd3JpdGVyID1cbiAgICAgIEluaXRpYWxfbWVzc2FnZS5iaW5fd3JpdGVyX3RcbiAgICAgICAgdC5iaW5faW5pdGlhbF9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgdC5iaW5fZXJyb3JfcmVzcG9uc2Uud3JpdGVyXG4gICAgaW5cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID1cbiAgICAgICAgU3RyZWFtaW5nX3JwY1xuICAgICAgICAgIHsgYmluX3F1ZXJ5X3JlYWRlciA9IHQuYmluX3F1ZXJ5LnJlYWRlclxuICAgICAgICAgIDsgYmluX2luaXRfd3JpdGVyXG4gICAgICAgICAgOyBiaW5fdXBkYXRlX3dyaXRlciA9IHQuYmluX3VwZGF0ZV9yZXNwb25zZS53cml0ZXJcbiAgICAgICAgICA7IGltcGxcbiAgICAgICAgICB9XG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5ID1cbiAgICAgIG1hdGNoJW1hcCBmIGMgcXVlcnkgd2l0aFxuICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChFcnJvciBlcnIpKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IEF1dGhvcml6ZWQgKE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiB0ID9vbl9leGNlcHRpb24gKFBpcGUgZilcbiAgOztcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSB3cml0ZXIgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3cml0ZXIgd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4gT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoRXJyb3IgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgICAgfCBPayBfIGFzIHggLT4gQXV0aG9yaXplZCAoT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIHgpKVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9XG4gICAgICB7IFAuUXVlcnkudGFnID0gdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb247IGlkOyBtZXRhZGF0YSA9IE5vbmU7IGRhdGEgPSBgQWJvcnQgfVxuICAgIGluXG4gICAgaWdub3JlXG4gICAgICAoQ29ubmVjdGlvbi5kaXNwYXRjaFxuICAgICAgICAgY29ublxuICAgICAgICAgfmJpbl93cml0ZXJfcXVlcnk6UC5TdHJlYW1fcXVlcnkuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgIH5xdWVyeVxuICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgIDogKHVuaXQsIFsgYENsb3NlZCBdKSBSZXN1bHQudClcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVXBkYXRlIG9mICdhXG4gICAgICB8IENsb3NlZCBvZiBbIGBCeV9yZW1vdGVfc2lkZSB8IGBFcnJvciBvZiBFcnJvci50IF1cbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBDb250aW51ZVxuICAgICAgfCBXYWl0IG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9tZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICA7IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgRGVmZXJyZWQudFxuICAgICAgfVxuXG4gICAgbGV0IGlkIHQgPSB0LnF1ZXJ5X2lkXG4gICAgbGV0IGNsb3NlX3JlYXNvbiB0ID0gdC5jbG9zZV9yZWFzb25cbiAgZW5kXG5cbiAgbW9kdWxlIFJlc3BvbnNlX3N0YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIFVwZGF0ZV9oYW5kbGVyID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBQaXBlX21lc3NhZ2UudCAtPiBQaXBlX3Jlc3BvbnNlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbml0aWFsID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgdCA9XG4gICAgICAgIHsgcnBjIDogKCdxLCAnaSwgJ3UsICdlKSB0XG4gICAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgICAgOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIDogdW5pdCAtPiAnZXh0cmEgKiAndSBVcGRhdGVfaGFuZGxlci50XG4gICAgICAgIDsgaXZhciA6IChQLlF1ZXJ5X2lkLnQgKiAnaSAqICdleHRyYSwgJ2UpIFJlc3VsdC50IFJwY19yZXN1bHQudCBJdmFyLnRcbiAgICAgICAgOyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIDogKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIEluaXRpYWwudCAtPiAndSB0XG4gICAgICAgIHwgV3JpdGluZ191cGRhdGVzIG9mICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyICogJ2EgVXBkYXRlX2hhbmRsZXIudFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudCB9XG4gIGVuZFxuXG4gIGxldCByZWFkX2Vycm9yXG4gICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb25cbiAgICAgICAgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpXG4gICAgICAgIGVyclxuICAgID1cbiAgICBsZXQgY29yZV9lcnIgPVxuICAgICAgRXJyb3IudF9vZl9zZXhwIChScGNfZXJyb3Iuc2V4cF9vZl90IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gZXJyKVxuICAgIGluXG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgKGBFcnJvciBjb3JlX2VycikpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChFcnJvciBlcnIpXG4gIDs7XG5cbiAgbGV0IGVvZiAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudCkgPVxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIGBCeV9yZW1vdGVfc2lkZSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKE9rICgpKVxuICA7O1xuXG4gIGxldCByZXNwb25zZV9oYW5kbGVyIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaW5pdGlhbF9zdGF0ZVxuICAgIDogQ29ubmVjdGlvbi5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBvcGVuIFJlc3BvbnNlX3N0YXRlIGluXG4gICAgbGV0IHN0YXRlID0geyBzdGF0ZSA9IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9zdGF0ZSB9IGluXG4gICAgZnVuIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiAtPlxuICAgICAgbWF0Y2ggc3RhdGUuc3RhdGUgd2l0aFxuICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgKGJpbl9yZWFkZXJfdXBkYXRlLCBoYW5kbGVyKSAtPlxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgRW9mIC0+IDBcbiAgICAgICAgICAgICAgICAgfCBgT2sgKGxlbiA6IE5hdDAudCkgLT4gKGxlbiA6PiBpbnQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgIHwgT2sgYEVvZiAtPiBlb2YgaGFuZGxlclxuICAgICAgICAgICAgfCBPayAoYE9rIGxlbikgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAgICBiaW5fcmVhZGVyX3VwZGF0ZVxuICAgICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgICAgfCBPayBkYXRhIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBoYW5kbGVyIChVcGRhdGUgZGF0YSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBga2VlcFxuICAgICAgICAgICAgICAgICAgfCBXYWl0IGQgLT4gYHdhaXQgZCkpKSlcbiAgICAgIHwgU3RhdGUuV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX2hhbmRsZXIgLT5cbiAgICAgICAgKCogV2UgbmV2ZXIgdXNlIFtgcmVtb3ZlIChFcnJvciBfKV0gaGVyZSwgc2luY2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkLCBhbmQgdGhlc2UgYXJlIFwibm9ybWFsXCIgZXJyb3JzLiAoSW4gY29udHJhc3QsIHRoZVxuICAgICAgICAgICBlcnJvcnMgd2UgZ2V0IGluIHRoZSBbV3JpdGluZ191cGRhdGVzX3RvX3BpcGVdIGNhc2UgaW5kaWNhdGUgbW9yZSBzZXJpb3VzXG4gICAgICAgICAgIHByb2JsZW1zLikgSW5zdGVhZCwgd2UganVzdCBwdXQgZXJyb3JzIGluIFtpdmFyXS4gKilcbiAgICAgICAgbGV0IGVycm9yIGVyciA9XG4gICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChFcnJvciBlcnIpO1xuICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgIHwgT2sgbGVuIC0+XG4gICAgICAgICAgIGxldCBpbml0aWFsID1cbiAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgKEluaXRpYWxfbWVzc2FnZS5iaW5fcmVhZGVyX3RcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2luaXRpYWxfcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9lcnJvcl9yZXNwb25zZS5yZWFkZXIpXG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyBpbml0aWFsX3Jlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnJvciBlcnJcbiAgICAgICAgICAgIHwgT2sgaW5pdGlhbF9tc2cgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGluaXRpYWxfbXNnLmluaXRpYWwgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsIGluaXRpYWxfaGFuZGxlci5pdmFyIChPayAoRXJyb3IgZXJyKSk7XG4gICAgICAgICAgICAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgICAgICAgICAgICAgfCBPayBpbml0aWFsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBleHRyYSwgaGFuZGxlciA9IGluaXRpYWxfaGFuZGxlci5tYWtlX3VwZGF0ZV9oYW5kbGVyICgpIGluXG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5pdmFyXG4gICAgICAgICAgICAgICAgICAgKE9rIChPayAoaW5pdGlhbF9oYW5kbGVyLnF1ZXJ5X2lkLCBpbml0aWFsLCBleHRyYSkpKTtcbiAgICAgICAgICAgICAgICAgc3RhdGUuc3RhdGVcbiAgICAgICAgICAgICAgICAgPC0gV3JpdGluZ191cGRhdGVzXG4gICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWxfaGFuZGxlci5ycGMuYmluX3VwZGF0ZV9yZXNwb25zZS5yZWFkZXIsIGhhbmRsZXIpO1xuICAgICAgICAgICAgICAgICBga2VlcCkpKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICA/bWV0YWRhdGFcbiAgICAgIGNvbm5cbiAgICAgIH5xdWVyeV9pZFxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgfnF1ZXJ5XG4gICAgICB+ZjooZnVuIGl2YXIgLT5cbiAgICAgICAgcmVzcG9uc2VfaGFuZGxlclxuICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgIHsgcnBjID0gdDsgcXVlcnlfaWQ7IGNvbm5lY3Rpb24gPSBjb25uOyBpdmFyOyBtYWtlX3VwZGF0ZV9oYW5kbGVyIH0pXG4gICAgPj58IFJwY19yZXN1bHQub3JfZXJyb3JcbiAgICAgICAgICB+cnBjX2Rlc2NyaXB0aW9uOnsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWc7IHZlcnNpb24gPSB0LnZlcnNpb24gfVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOihDb25uZWN0aW9uLmRlc2NyaXB0aW9uIGNvbm4pXG4gICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IChmdW4gKCkgLT4gKCksIGYpIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsICgpKSkgLT4gT2sgKE9rIChpZCwgaW5pdCkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIFN0cmVhbWluZ19ycGMuaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZlxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgKCksIHBpcGVfcikgLT4gcGlwZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBQaXBlX3JwY19mYWlsZWRcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciBycGNfZXJyb3IgLT4gcmFpc2UgKEVycm9yLnRvX2V4biBycGNfZXJyb3IpXG4gICAgfCBPayAoRXJyb3IgXykgLT4gcmFpc2UgUGlwZV9ycGNfZmFpbGVkXG4gICAgfCBPayAoT2sgcGlwZV9hbmRfaWQpIC0+IHBpcGVfYW5kX2lkXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXNzYWdlXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5QaXBlX3Jlc3BvbnNlXG5cbiAgbGV0IGRpc3BhdGNoX2l0ZXIgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2hfaXRlciA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZVxuICAgID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsIHN0YXRlLCB1cGRhdGVfcikgLT4gc3RhdGUsIHVwZGF0ZV9yLCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBhYm9ydCA9IFN0cmVhbWluZ19ycGMuYWJvcnRcbiAgbGV0IGNsb3NlX3JlYXNvbiA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YS5jbG9zZV9yZWFzb25cbiAgbGV0IGNsaWVudF9wdXNoZXNfYmFjayB0ID0gdC5TdHJlYW1pbmdfcnBjLmNsaWVudF9wdXNoZXNfYmFja1xuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgc3RhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmluaXRpYWxfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgdXBkYXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbmVuZFxuXG5tb2R1bGUgQW55ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBScGMgOiAoJ3EsICdyKSBScGMudCAtPiB0XG4gICAgfCBQaXBlIDogKCdxLCAnciwgJ2UpIFBpcGVfcnBjLnQgLT4gdFxuICAgIHwgU3RhdGUgOiAoJ3EsICdzLCAndSwgJ2UpIFN0YXRlX3JwYy50IC0+IHRcbiAgICB8IE9uZV93YXkgOiAnbSBPbmVfd2F5LnQgLT4gdFxuXG4gIGxldCBkZXNjcmlwdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBScGMgcnBjIC0+IFJwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFBpcGUgcnBjIC0+IFBpcGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgU3RhdGUgcnBjIC0+IFN0YXRlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IE9uZV93YXkgcnBjIC0+IE9uZV93YXkuZGVzY3JpcHRpb24gcnBjXG4gIDs7XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvbi5TdGFibGVcbiAgbW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gUGlwZV9jbG9zZV9yZWFzb24uU3RhYmxlXG4gIG1vZHVsZSBScGMgPSBScGNcbiAgbW9kdWxlIFBpcGVfcnBjID0gUGlwZV9ycGNcbiAgbW9kdWxlIFN0YXRlX3JwYyA9IFN0YXRlX3JwY1xuICBtb2R1bGUgT25lX3dheSA9IE9uZV93YXlcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBScGNcblxubW9kdWxlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBQaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gIHR5cGUgJ2lucHV0IHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgY29udmVydCA6ICdpbnB1dCAtPiAnb3V0cHV0XG4gICAgICAgIDsgd3JpdGVyIDogJ291dHB1dCBEaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgIH1cbiAgICAgICAgLT4gJ2lucHV0IHRcblxuICBsZXQgY3JlYXRlIH5jb252ZXJ0IH53cml0ZXIgPSBUIHsgY29udmVydDsgd3JpdGVyIH1cblxuICBsZXQgd3JpdGUgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IGNsb3NlIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlIHdyaXRlclxuICBsZXQgaXNfY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmlzX2Nsb3NlZCB3cml0ZXJcbiAgbGV0IGNsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZWQgd3JpdGVyXG5lbmRcblxubGV0IGZhaWxlZF9jb252ZXJzaW9uIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcInR5cGUgY29udmVyc2lvbiBmYWlsdXJlXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOlxuICAgICAgWyBgTXNnIHwgYFF1ZXJ5IHwgYFJlc3BvbnNlIHwgYEVycm9yIHwgYFN0YXRlIHwgYFVwZGF0ZSBdXG4gICAgICAqIFsgYFJwYyBvZiBzdHJpbmcgXVxuICAgICAgKiBbIGBWZXJzaW9uIG9mIGludCBdXG4gICAgICAqIGV4bl1cbjs7XG5cbmxldCBtdWx0aXBsZV9yZWdpc3RyYXRpb25zIHggPVxuICBFcnJvci5jcmVhdGVcbiAgICBcIm11bHRpcGxlIHJwYyByZWdpc3RyYXRpb25zXCJcbiAgICB4XG4gICAgWyVzZXhwX29mOiBbIGBScGMgb2Ygc3RyaW5nIF0gKiBbIGBWZXJzaW9uIG9mIGludCBdXVxuOztcblxubGV0IHVua25vd25fdmVyc2lvbiB4ID0gRXJyb3IuY3JlYXRlIFwidW5rbm93biBycGMgdmVyc2lvblwiIHggWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG5cbm1vZHVsZSBDYWxsZWVfY29udmVydHMgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaW1wbGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyID1cbiAgICAgICAgeyBhZGFwdCA6XG4gICAgICAgICAgICAnc3RhdGUuICgnc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXNwb25zZSBEZWZlcnJlZC50KSAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udFxuICAgICAgICB9XG5cbiAgICAgIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgYWRhcHRlcnMgOiAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgSW50Lk1hcC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgbGV0IGNyZWF0ZSB+bmFtZSA9IHsgbmFtZTsgYWRhcHRlcnMgPSBJbnQuTWFwLmVtcHR5IH1cblxuICAgICAgbGV0IHdyYXBfZXJyb3IgZm4gc3RhdGUgcXVlcnkgPVxuICAgICAgICBtYXRjaCVtYXAgZm4gc3RhdGUgcXVlcnkgd2l0aFxuICAgICAgICB8IE9rIHZhbHVlIC0+IE9rIHZhbHVlXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKEVycm9yLnRvX3N0cmluZ19odW0gZXJyb3IpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkIHsgbmFtZTsgYWRhcHRlcnMgfSBycGMgYWRhcHRlciA9XG4gICAgICAgIGlmIFN0cmluZy4oIDw+ICkgbmFtZSAoUnBjLm5hbWUgcnBjKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgIFwiUnBjIG5hbWVzIGRvbid0IGFncmVlXCJcbiAgICAgICAgICAgIChuYW1lLCBScGMubmFtZSBycGMpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ11cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBScGMudmVyc2lvbiBycGMgaW5cbiAgICAgICAgICBtYXRjaCBNYXAuZmluZCBhZGFwdGVycyB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgXCJWZXJzaW9uIGFscmVhZHkgZXhpc3RzXCJcbiAgICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24pXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGFkYXB0ZXJzID0gTWFwLnNldCBhZGFwdGVycyB+a2V5OnZlcnNpb24gfmRhdGE6YWRhcHRlciBpblxuICAgICAgICAgICAgT2sgeyBuYW1lOyBhZGFwdGVycyB9KVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbiB0IG9sZF9ycGMgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IGZuIHN0YXRlICh1cGdyYWRlIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGRvd25ncmFkZSByZXN1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyBhZGFwdGVkXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IG9sZF9ycGMgdXBncmFkZV9vcl9lcnJvciBkb3duZ3JhZGVfb3JfZXJyb3IgPVxuICAgICAgICBsZXQgYWRhcHQgZm4gPVxuICAgICAgICAgIGxldCBhZGFwdGVkIHN0YXRlIG9sZF9xdWVyeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBEZWZlcnJlZC5SZXN1bHQuTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcXVlcnkgPSBEZWZlcnJlZC5yZXR1cm4gKHVwZ3JhZGVfb3JfZXJyb3Igb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgbGV0JWJpbmQgcmVzcG9uc2UgPSBmbiBzdGF0ZSBxdWVyeSBpblxuICAgICAgICAgICAgRGVmZXJyZWQucmV0dXJuIChkb3duZ3JhZGVfb3JfZXJyb3IgcmVzcG9uc2UpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgKHdyYXBfZXJyb3IgYWRhcHRlZClcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbiB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgcnBjIHVwZ3JhZGUgZG93bmdyYWRlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW1wbGVtZW50IHQgZm4gPSBNYXAuZGF0YSB0LmFkYXB0ZXJzIHw+IExpc3QubWFwIH5mOihmdW4geyBhZGFwdCB9IC0+IGFkYXB0IGZuKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBxdWVyeSAtPiByZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwucXVlcnkgLT4gTW9kZWwucmVzcG9uc2UgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgUnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIHIgPSBmIHMgfnZlcnNpb24gcSBpblxuICAgICAgICAgICAgICAgIChtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWwgcikgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIHIgLT4gclxuICAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlJwYyBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAocmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IHJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IChNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgICAgICgnc1xuICAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgICAtPiBNb2RlbC5yZXNwb25zZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgICAgIC0+ICh1bml0LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGltcGwgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKFBpcGUgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBpbXBsZW1lbnRfbXVsdGlfZ2VuID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIChEaXJlY3QgZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfbW9kZWwgOiBNb2RlbC5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kgOiBWZXJzaW9uX3NoYXJlZCkgKENvbnZlcnQgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X2VsdCA6IChNb2RlbC5yZXNwb25zZSAtPiBWZXJzaW9uX2kucmVzcG9uc2UpIE9yX2Vycm9yLnRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfcGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICB8IHEgLT4gcVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgICAgfCBQaXBlIGYgLT5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2glYmluZCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IE9rIHBpcGUgLT5cbiAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gcmV0dXJuIChPayAoY29udmVydF9waXBlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiByZXR1cm4gKHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpKVxuICAgICAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50X2RpcmVjdCBycGMgKGZ1biBzIHEgZHN3IC0+XG4gICAgICAgICAgICAgIGxldCB3cml0ZXIgPVxuICAgICAgICAgICAgICAgIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci5jcmVhdGUgfmNvbnZlcnQ6Y29udmVydF9lbHQgfndyaXRlcjpkc3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2glbWFwIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3cml0ZXIgd2l0aFxuICAgICAgICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcilcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUGlwZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudCAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID1cbiAgICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiY2Fubm90IHVzZSBkaXJlY3QgaW50ZXJmYWNlIHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX21vZGVsIDogTW9kZWwucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgcGlwZSA9IFBpcGUubWFwIHBpcGUgfmY6VmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSBzdGF0ZVxuICAgICAgdHlwZSB1cGRhdGVcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgICAgICAtPiAoc3RhdGUgKiB1cGRhdGUgUGlwZS5SZWFkZXIudCwgZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgJ3NcbiAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgLT4gKE1vZGVsLnN0YXRlICogTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcXVlcnldO1xuICAgICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICBbJWV4cGVjdCB7fCA0YzFlNTBjOTNiMzhjMmFkMDU1NGNiZDkyOWJlZjNhYyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSBxID0gcVxuXG4gICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPVxuICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBSZWdpc3RlciAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgbGV0IGFkZCBpbXBscyA9XG4gICAgbGV0IG1lbnUgPSBMaXN0Lm1hcCBpbXBscyB+ZjpJbXBsZW1lbnRhdGlvbi5kZXNjcmlwdGlvbiBpblxuICAgIGxldCBtZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBtZW51KSBpblxuICAgIGltcGxzIEAgbWVudV9pbXBsc1xuICA7O1xuXG4gIHR5cGUgdCA9IEludC5TZXQudCBTdHJpbmcuVGFibGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzdXBwb3J0ZWRfcnBjcyB0ID1cbiAgICBsZXQgb3BlbiBMaXN0LkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBuYW1lLCB2ZXJzaW9ucyA9IEhhc2h0YmwudG9fYWxpc3QgdCBpblxuICAgIGxldCVtYXAgdmVyc2lvbiA9IFNldC50b19saXN0IHZlcnNpb25zIGluXG4gICAgeyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH1cbiAgOztcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zIHQgfnJwY19uYW1lID1cbiAgICBPcHRpb24udmFsdWUgfmRlZmF1bHQ6SW50LlNldC5lbXB0eSAoSGFzaHRibC5maW5kIHQgcnBjX25hbWUpXG4gIDs7XG5cbiAgbGV0IG9mX2VudHJpZXMgZW50cmllcyA9XG4gICAgSGFzaHRibC5tYXAgfmY6SW50LlNldC5vZl9saXN0IChTdHJpbmcuVGFibGUub2ZfYWxpc3RfbXVsdGkgZW50cmllcylcbiAgOztcblxuICBsZXQgYXV4X3JlcXVlc3QgZGlzcGF0Y2ggY29ubiA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCBDdXJyZW50X3ZlcnNpb24ucnBjIGNvbm4gKCkgaW5cbiAgICBSZXN1bHQubWFwIHJlc3VsdCB+ZjpvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbGV0IHJlcXVlc3QgY29ubiA9IGF1eF9yZXF1ZXN0IFJwYy5kaXNwYXRjaCBjb25uXG4gIGxldCByZXF1ZXN0JyBjb25uID0gYXV4X3JlcXVlc3QgUnBjLmRpc3BhdGNoJyBjb25uXG5cbiAgbGV0IGNyZWF0ZSBkZXNjcmlwdGlvbnMgPVxuICAgIExpc3QubWFwIGRlc2NyaXB0aW9ucyB+ZjooZnVuIHsgRGVzY3JpcHRpb24ubmFtZTsgdmVyc2lvbiB9IC0+IG5hbWUsIHZlcnNpb24pXG4gICAgfD4gb2ZfZW50cmllc1xuICA7O1xuXG4gIG1vZHVsZSBXaXRoX3NoYXBlcyA9IHN0cnVjdFxuICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBcIl9fVmVyc2lvbmVkX3JwYy5TaGFwZV9tZW51XCJcblxuICAgICAgdHlwZSBxdWVyeSA9IHVuaXRcbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICBsZXQgdmVyc2lvbiA9IDFcblxuICAgICAgICB0eXBlIHF1ZXJ5ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBxdWVyeV07XG4gICAgICAgICAgWyVleHBlY3Qge3wgODZiYTVkZjc0N2VlYzgzN2YwYjM5MWRkNDlmMzNmOWUgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgdHlwZSByZXNwb25zZSA9IChEZXNjcmlwdGlvbi5TdGFibGUuVjEudCAqIFJwY19zaGFwZXMuU3RhYmxlLlYxLnQpIGxpc3RcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogcmVzcG9uc2VdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGI0YmRjMDFiN2VhZDkwN2U2ZDBkM2YzZDg5NzAwZjFiIHx9XVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IEZuLmlkXG4gICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IEZuLmlkXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEN1cnJlbnRfdmVyc2lvbiA9IFYxXG5cbiAgICB0eXBlIHQgPSAoRGVzY3JpcHRpb24udCAqIFJwY19zaGFwZXMudCkgbGlzdFxuXG4gICAgbGV0IGFkZCBpbXBscyA9XG4gICAgICBsZXQgc2hhcGVfbWVudSA9XG4gICAgICAgIExpc3QubWFwIGltcGxzIH5mOihmdW4gaW1wbCAtPlxuICAgICAgICAgIEltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGltcGwsIEltcGxlbWVudGF0aW9uLnNoYXBlcyBpbXBsKVxuICAgICAgaW5cbiAgICAgIGxldCBzaGFwZV9tZW51X2ltcGxzID0gaW1wbGVtZW50X211bHRpIChmdW4gXyB+dmVyc2lvbjpfICgpIC0+IHJldHVybiBzaGFwZV9tZW51KSBpblxuICAgICAgYWRkIGltcGxzIEAgc2hhcGVfbWVudV9pbXBsc1xuICAgIDs7XG5cbiAgICBsZXQgcmVxdWVzdCBjb25uID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29ubmVjdGlvbl93aXRoX21lbnUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICA7IG1lbnUgOiBNZW51LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICBsZXQgY3JlYXRlIGNvbm5lY3Rpb24gPVxuICAgIGxldCBvcGVuIERlZmVycmVkLk9yX2Vycm9yLkxldF9zeW50YXggaW5cbiAgICBsZXQlbWFwIG1lbnUgPSBNZW51LnJlcXVlc3QgY29ubmVjdGlvbiBpblxuICAgIHsgY29ubmVjdGlvbjsgbWVudSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9kaXJlY3RseSBjb25uZWN0aW9uIG1lbnUgPSB7IGNvbm5lY3Rpb247IG1lbnUgfVxuZW5kXG5cbm1vZHVsZSBDYWxsZXJfY29udmVydHMgPSBzdHJ1Y3RcbiAgbGV0IG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIH5ycGNfbmFtZSB+Y2FsbGVyX3ZlcnNpb25zIH5jYWxsZWVfdmVyc2lvbnMgfmNhbGxlZV9tZW51ID1cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIGNhbGxlZV92ZXJzaW9ucyBjYWxsZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBlcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIlxuICAgICAgICAgICAgKHJwY19uYW1lIDogc3RyaW5nKVxuICAgICAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX21lbnUgOiBNZW51LnQpXVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImhpZ2hlc3QgdmVyc2lvbiBudW1iZXIgaXMgdGFrZW4gaW4gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cIiA9XG4gICAgbGV0IHJwY19uYW1lID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIHJwY19uYW1lLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZVxuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDIgXSlcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0IHt8IChPayAyKSB8fV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJlcnJvciBmcm9tIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIGxvb2tzIHJlYXNvbmFibGVcIiA9XG4gICAgbGV0IHRoZV9ycGMgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBub3RfdGhlX3JwYyA9IFwib3RoZXItcnBjXCIgaW5cbiAgICBsZXQgbWVudSA9IE1lbnUub2ZfZW50cmllcyBbIG5vdF90aGVfcnBjLCAxOyBub3RfdGhlX3JwYywgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWU6dGhlX3JwY1xuICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAxOyAyOyAzIF0pXG4gICAgICAgIH5jYWxsZWVfdmVyc2lvbnM6KE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOnRoZV9ycGMpXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgIChFcnJvclxuICAgICAgIChcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCIgKHJwY19uYW1lIHRoZS1ycGMpXG4gICAgICAgIChjYWxsZXJfdmVyc2lvbnMgKDEgMiAzKSkgKGNhbGxlZV92ZXJzaW9ucyAoKSlcbiAgICAgICAgKGNhbGxlZV9tZW51ICgob3RoZXItcnBjICgxIDIpKSkpKSl8fV1cbiAgOztcblxuICBtb2R1bGUgRGlzcGF0Y2ggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTWFrZSAoTSA6IE1vbmFkKSA9IHN0cnVjdFxuICAgICAgb3BlbiBNXG5cbiAgICAgIGxldCB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5kaXNwYXRjaGVyIH5yZWdpc3RyeSA9XG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoRXJyb3IgKHVua25vd25fdmVyc2lvbiAobmFtZSwgdmVyc2lvbikpKVxuICAgICAgICB8IFNvbWUgKGRpc3BhdGNoLCBfcnBjKSAtPiBkaXNwYXRjaGVyIGRpc3BhdGNoIGNvbm5lY3Rpb24gcXVlcnlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgICAgeyBDb25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uOyBtZW51IH1cbiAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICAgIH5kaXNwYXRjaGVyXG4gICAgICAgID1cbiAgICAgICAgbGV0IGNhbGxlZV92ZXJzaW9ucyA9IE1lbnUuc3VwcG9ydGVkX3ZlcnNpb25zIG1lbnUgfnJwY19uYW1lOm5hbWUgaW5cbiAgICAgICAgbGV0IGNhbGxlcl92ZXJzaW9ucyA9IHZlcnNpb25zICgpIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgICAgIH5ycGNfbmFtZTpuYW1lXG4gICAgICAgICAgICB+Y2FsbGVyX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zXG4gICAgICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgdmVyc2lvbiAtPlxuICAgICAgICAgIHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfnJlZ2lzdHJ5IH5kaXNwYXRjaGVyXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIEFzeW5jID0gTWFrZSAoRGVmZXJyZWQpXG4gICAgbW9kdWxlIERpcmVjdCA9IE1ha2UgKE1vbmFkLklkZW50KVxuICBlbmRcblxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiByZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5IH5mID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2hfaXRlcjsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2hfaXRlciBjb25uIHF1ZXJ5IH5mKVxuICAgICAgOztcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgZGlzcGF0Y2g7IF8gfSBjb25uIHF1ZXJ5IC0+IGRpc3BhdGNoIGNvbm4gcXVlcnkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWJvcnRfbXVsdGkgY29ubl93aXRoX21lbnUgaWQgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIGlkXG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjooZnVuIHsgYWJvcnQ7IF8gfSBjb25uIGlkIC0+XG4gICAgICAgICAgICBhYm9ydCBjb25uIGlkO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKFZlcnNpb25faS5yZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIFZlcnNpb25faS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIHJldHVybiAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBxIC0+IHJldHVybiAoT2sgcSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY29udmVydF9yZXN1bHQgcmVzdWx0IH5jb252ZXJ0X29rID1cbiAgICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPiBPayAoT2sgKGNvbnZlcnRfb2sgb2spKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFBpcGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6KGZ1biAocGlwZSwgaWQpIC0+IGNvbnZlcnRfcGlwZSBwaXBlLCBpZClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZGlzcGF0Y2hfaXRlciBjb25uIHEgfmYgPVxuICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLm9rX2V4biBjb252ZXJ0X2VsdCBpblxuICAgICAgICAgIHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcVxuICAgICAgICAgID4+PT8gZnVuIHEgLT5cbiAgICAgICAgICBsZXQgY29udmVydF9tZXNzYWdlIChtIDogXyBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCkgPVxuICAgICAgICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgICAgICB8IENsb3NlZCBfIGFzIGNsb3NlZCAtPiBjbG9zZWRcbiAgICAgICAgICAgIHwgVXBkYXRlIHUgLT4gVXBkYXRlIChjb252ZXJ0X2VsdCB1KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0JW1hcCByZXN1bHQgPVxuICAgICAgICAgICAgUGlwZV9ycGMuZGlzcGF0Y2hfaXRlciBycGMgY29ubiBxIH5mOihmdW4gbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBmIChjb252ZXJ0X21lc3NhZ2UgbWVzc2FnZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2s6Rm4uaWRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYWJvcnQgY29ubiBpZCA9IFBpcGVfcnBjLmFib3J0IHJwYyBjb25uIGlkXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldFxuICAgICAgICAgICAgICByZWdpc3RyeVxuICAgICAgICAgICAgICB+a2V5OnZlcnNpb25cbiAgICAgICAgICAgICAgfmRhdGE6KHsgYWJvcnQ7IGRpc3BhdGNoOyBkaXNwYXRjaF9pdGVyIH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIDogIHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIkNhbm5vdCB1c2UgRGlyZWN0IHdpdGggUmVnaXN0ZXJfcmF3XCJcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X3BpcGUgPSBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPayBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2VcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gVmVyc2lvbl9pLnZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAoIHN0YXRlICogdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBtb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLnN0YXRlXG4gICAgICAgIHZhbCBtb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLmVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBTdGF0ZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fc3RhdGVcbiAgICAgICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgcSB3aXRoXG4gICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gU3RhdGVfcnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPiBFcnJvciBleG5cbiAgICAgICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfZXJyb3IgZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGUnIC0+IE9rIChFcnJvciBlJylcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgICAgIHwgT2sgKE9rIChzdGF0ZSwgcGlwZSwgaWQpKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3N0YXRlIHN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgfCBzdGF0ZSAtPiBPayAoT2sgKHN0YXRlLCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHBpcGUsIGlkKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuU3RhdGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIG1vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC51cGRhdGVcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBSZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSBycyA9XG4gICAgICAgICAgICAgIFBpcGUubWFwIHJzIH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgciB3aXRoXG4gICAgICAgICAgICAgICAgfCByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFVwZGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPbmVfd2F5ID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBtc2dcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBtc2cgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfcmVhZCA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID1cbiAgICB7IHBpcGU7IGJ1ZmZlciA9IEJpZ2J1ZmZlci5jcmVhdGUgSGVhZGVyLmxlbmd0aDsgYnl0ZXNfcmVhZCA9IEludDYzLnplcm8gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IGJ5dGVzX3JlYWQgKHQgOiB0KSA9IHQuYnl0ZXNfcmVhZFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKHQgOiB0KSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogKF8sIF8pIERlZmVycmVkLlJlc3VsdC50ID1cbiAgICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgICAoKiBEZXF1ZXVlIHVudGlsIGVub3VnaCBkYXRhIChbbmVlZF0pIGlzIGF2YWlsYWJsZSBhbmQgdHJ5IHJlYWQgbWVzc2FnZXMgKilcbiAgICBsZXQgcmVjIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPVxuICAgICAgbWF0Y2ggUXVldWUuZGVxdWV1ZSBxdWV1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogUXVldWUgaXMgZW1wdHkgLSB3ZSBuZWVkIHRvIHdhaXQgZm9yIG1vcmUgZGF0YSAqKVxuICAgICAgICByZXR1cm4gKFNlY29uZCBuZWVkKVxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgbGV0IGJ1ZmZfbGVuID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgbGV0IGRhdGFfbGVuID0gRGF0YS5sZW5ndGggZGF0YSBpblxuICAgICAgICBpZiBidWZmX2xlbiA9IDAgJiYgZGF0YV9sZW4gPj0gbmVlZFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogV2UgaGF2ZSBlbm91Z2ggZGF0YSBhbmQgYnVmZmVyIGlzIGVtcHR5LlxuICAgICAgICAgICAgIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIGV2ZXJ5IGJpbl9wcm90IG1lc3NhZ2UgaXMgc2VudCBpbiBpdHMgb3duXG4gICAgICAgICAgICAgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YTooRGF0YS50b19iaWdzdHJpbmcgZGF0YSkgfmxlbmd0aDpkYXRhX2xlbiBxdWV1ZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBTbG93IHBhdGguIFdlIGhhdmUgdG8gYWNjdW11bGF0ZSBbQmlnc3RyaW5nLnRdcyAqKVxuICAgICAgICAgIERhdGEuYWRkX3RvX2JpZ2J1ZmZlciBidWZmZXIgZGF0YTtcbiAgICAgICAgICBpZiBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciA+PSBuZWVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGVyZSBpcyBlbm91Z2ggZGF0YSBpbiB0aGUgYnVmZmVyICopXG4gICAgICAgICAgICBsZXQgZGF0YSA9IEJpZ2J1ZmZlci52b2xhdGlsZV9jb250ZW50cyBidWZmZXIgaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIHF1ZXVlKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFdlIG5lZWQgbW9yZSBkYXRhIC0ga2VlcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZSAqKVxuICAgICAgICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSlcbiAgICAoKiBSZWFkIGFzIG1hbnkgbWVzc2FnZXMgYXMgcG9zc2libGUgZnJvbSB0aGUgY3VycmVudCBkYXRhICopXG4gICAgYW5kIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWUgPVxuICAgICAgaWYgbGVuZ3RoID49IEhlYWRlci5sZW5ndGhcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcGF5bG9hZF9sZW4gPSBIZWFkZXIudW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBkYXRhIH5wb3MgaW5cbiAgICAgICAgbGV0IHRvdGFsX2xlbiA9IEhlYWRlci5sZW5ndGggKyBwYXlsb2FkX2xlbiBpblxuICAgICAgICBpZiBsZW5ndGggPj0gdG90YWxfbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHQuYnl0ZXNfcmVhZCA8LSBJbnQ2My4odC5ieXRlc19yZWFkICsgb2ZfaW50IHBheWxvYWRfbGVuKTtcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICA7IG11dGFibGUgYnl0ZXNfd3JpdHRlbiA6IEludDYzLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCk7IGJ5dGVzX3dyaXR0ZW4gPSBJbnQ2My56ZXJvIH1cbmVuZFxuXG4oKiBXZSBkb24ndCBwZXJmb3JtIGFueSBidWZmZXJpbmcgaGVyZS5cbiAgIEEgbWVzc2FnZSBpcyBjb25zaWRlciB0byBiZSBmbHVzaGVkIGFzIHNvb24gYXMgaXQgZW50ZXJzIHRoZSBwaXBlLiAqKVxubW9kdWxlIFBpcGVfd3JpdGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX21vbml0b3IudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlIHQucGlwZTtcbiAgICBEZWZlcnJlZC51bml0XG4gIDs7XG5cbiAgbGV0IGlzX2Nsb3NlZCAodCA6IHQpID0gUGlwZS5pc19jbG9zZWQgdC5waXBlXG4gIGxldCBtb25pdG9yICh0IDogdCkgPSB0Lm1vbml0b3JcblxuICAoKiBCZWNhdXNlIHdlIGRvbid0IG1haW50YWluIGFueSBidWZmZXIsIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdyaXRlcyAqKVxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKF8gOiB0KSA9IDBcbiAgbGV0IGJ5dGVzX3dyaXR0ZW4gKHQgOiB0KSA9IHQuYnl0ZXNfd3JpdHRlblxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IGluY3JfYnl0ZXNfd3JpdHRlbiAodCA6IHQpIG51bV9ieXRlcyA9XG4gICAgdC5ieXRlc193cml0dGVuIDwtIEludDYzLih0LmJ5dGVzX3dyaXR0ZW4gKyBvZl9pbnQgbnVtX2J5dGVzKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IHQgd3JpdGVyIHggPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgIGxldCBidWYgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB+aGVhZGVyOnRydWUgd3JpdGVyIHggaW5cbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgYnVmIGluXG4gICAgICBpbmNyX2J5dGVzX3dyaXR0ZW4gdCAoRGF0YS5sZW5ndGggZGF0YSk7XG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIGRhdGE7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHRcbiAgICAgICAgKHdyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpXG4gICAgICAgIHhcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW46cGF5bG9hZF9zaXplXG4gICAgPVxuICAgIGNoZWNrX2Nsb3NlZCB0IChmdW4gKCkgLT5cbiAgICAgICgqIFdyaXRlIHRoZSBzaXplIGhlYWRlciBtYW51YWxseSBhbmQgY29uY2F0ZW5hdGUgdGhlIHR3byAqKVxuICAgICAgbGV0IGRhdGFfc2l6ZSA9IHdyaXRlci5zaXplIHggaW5cbiAgICAgIGxldCBkYXRhID0gQmlnc3RyaW5nLmNyZWF0ZSAoZGF0YV9zaXplICsgSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfc2l6ZSkgaW5cbiAgICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvczowIChkYXRhX3NpemUgKyBwYXlsb2FkX3NpemUpO1xuICAgICAgbGV0IGRzdF9wb3MgPSB3cml0ZXIud3JpdGUgZGF0YSB+cG9zOkhlYWRlci5sZW5ndGggeCBpblxuICAgICAgQmlnc3RyaW5nLmJsaXQgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6ZGF0YSB+ZHN0X3BvcyB+bGVuOnBheWxvYWRfc2l6ZTtcbiAgICAgIGxldCBkYXRhID0gRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSBpblxuICAgICAgaW5jcl9ieXRlc193cml0dGVuIHQgKERhdGEubGVuZ3RoIGRhdGEpO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSBkYXRhO1xuICAgICAgc2VudF9yZXN1bHQgKCkpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuID1cbiAgICBtYXRjaCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCB3cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB3aXRoXG4gICAgfCBTZW50ICgpIC0+IHNlbnRfcmVzdWx0IERlZmVycmVkLnVuaXRcbiAgICB8IChDbG9zZWQgfCBNZXNzYWdlX3Rvb19iaWcgXykgYXMgciAtPiByXG4gIDs7XG5lbmRcblxubW9kdWxlIEJpZ3N0cmluZ19kYXRhID0gc3RydWN0XG4gIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGxlbmd0aCA9IEJpZ3N0cmluZy5sZW5ndGhcbiAgbGV0IGFkZF90b19iaWdidWZmZXIgPSBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZ1xuICBsZXQgdG9fYmlnc3RyaW5nIHggPSB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IHhcbmVuZFxuXG5tb2R1bGUgU3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgeFxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBCaWdzdHJpbmcudG9fc3RyaW5nIHhcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyID0gUGlwZV9yZWFkZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlciA9IFBpcGVfd3JpdGVyIChCaWdzdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoU3RyaW5nX2RhdGEpXG5tb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKFN0cmluZ19kYXRhKVxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJpZ3N0cmluZyA6IGJpZ3N0cmluZyB0XG5cbiAgbGV0IHN0cmluZyA9IFN0cmluZ1xuICBsZXQgYmlnc3RyaW5nID0gQmlnc3RyaW5nXG5lbmRcblxubGV0IG1ha2VfcmVhZGVyICh0eXBlIGEpICh4IDogYSBLaW5kLnQpIChyZWFkZXIgOiBhIFBpcGUuUmVhZGVyLnQpID1cbiAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBSZWFkZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3JlYWRlcikgcmVhZGVyXG47O1xuXG5sZXQgbWFrZV93cml0ZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHdyaXRlciA6IGEgUGlwZS5Xcml0ZXIudCkgPVxuICBsZXQgd3JpdGVyID0gUGlwZV9hbmRfbW9uaXRvci5jcmVhdGUgd3JpdGVyIGluXG4gIG1hdGNoIHggd2l0aFxuICB8IEtpbmQuU3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgU3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbiAgfCBLaW5kLkJpZ3N0cmluZyAtPiBXcml0ZXIucGFjayAobW9kdWxlIEJpZ3N0cmluZ19waXBlX3dyaXRlcikgd3JpdGVyXG47O1xuXG5sZXQgY3JlYXRlIGtpbmQgcmVhZGVyIHdyaXRlciA9XG4gIHsgVHJhbnNwb3J0LnJlYWRlciA9IG1ha2VfcmVhZGVyIGtpbmQgcmVhZGVyOyB3cml0ZXIgPSBtYWtlX3dyaXRlciBraW5kIHdyaXRlciB9XG47O1xuXG4oKiBUZXN0aW5nICopXG5cbm1vZHVsZSB0eXBlIFRyYW5zcG9ydF9yZWFkZXIgPSBzaWdcbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuICBlbmRcblxuICBpbmNsdWRlIFRyYW5zcG9ydC5SZWFkZXIuUyB3aXRoIHR5cGUgdCA9IEZvcl90ZXN0aW5nLnQgUGlwZV9hbmRfYnVmZmVyLnRcbmVuZFxuXG5tb2R1bGUgVGVzdF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuXG4gIGxldCBvbl9tZXNzYWdlID8obWVzc2FnZSA9IGRlZmF1bHRfbWVzc2FnZSkgb25fbWVzc2FnZV9jb3VudCBidWZmZXIgfnBvcyB+bGVuID1cbiAgICBvbl9tZXNzYWdlX2NvdW50IDo9ICFvbl9tZXNzYWdlX2NvdW50ICsgMTtcbiAgICBbJXRlc3RfcmVzdWx0OiBCaWdzdHJpbmcudF0gKEJpZ3N0cmluZy5zdWIgYnVmZmVyIH5wb3MgfmxlbikgfmV4cGVjdDptZXNzYWdlO1xuICAgIEhhbmRsZXJfcmVzdWx0LkNvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCBvbl9lbmRfb2ZfYmF0Y2hfY291bnQgKCkgPSBpbmNyIG9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICBsZXQgd2FpdCAoKSA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuRXhwZXJ0LnJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haW4gKClcblxuICBsZXQgcnVuX3Rlc3QgcnVuIHZlcmlmeSA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZV9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaF9jb3VudCA9IHJlZiAwIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIG9uX21lc3NhZ2VfY291bnQgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpO1xuICAgIHdhaXQgKCk7XG4gICAgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgdmVyaWZ5IH5vbl9tZXNzYWdlX2NvdW50IH5vbl9lbmRfb2ZfYmF0Y2hfY291bnQgbWVzc2FnZV9jb3VudCBiYXRjaF9jb3VudCA9XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fbWVzc2FnZV9jb3VudCB+ZXhwZWN0Om1lc3NhZ2VfY291bnQ7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAhb25fZW5kX29mX2JhdGNoX2NvdW50IH5leHBlY3Q6YmF0Y2hfY291bnRcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcblxuICAoKiBOb3QgZW5vdWdoIGRhdGEsIHdlIG5lZWQgdG8gYWNjdW11bGF0ZSAqKVxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKSBpblxuICAgIGxldCBtZXNzYWdlX3JhdyA9IGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgKEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZV9yYXcpO1xuICAgIHdyaXRlIGJ1ZjtcbiAgICB3YWl0ICgpO1xuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3JhdyBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgbWVzc2FnZV9yYXcgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgd3JpdGUgcGFydDE7XG4gICAgd2FpdCAoKTtcbiAgICB3cml0ZSBwYXJ0MlxuICA7O1xuXG4gICgqIFRvbyBtdWNoIGRhdGEsIHdlIG5lZWQgdG8gbG9vcCB3aXRoaW5nIHRoZSBzYW1lIGJhdGNoICopXG4gIGxldCB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICB3cml0ZSB0d29fbXNnXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZSA9XG4gICAgbGV0IG9uZV9tc2cgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgbGV0IHR3b19tc2cgPSBCaWdzdHJpbmcuY29uY2F0IFsgb25lX21zZzsgb25lX21zZyBdIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ3N0cmluZy5sZW5ndGggdHdvX21zZyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tc2cgfnBvczppIH5sZW46MSk7XG4gICAgICB3YWl0ICgpXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzFfY2h1bmsgKHZlcmlmeSAxIDEpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDIgMSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rICh2ZXJpZnkgMSAzKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ18xX2NodW5rICh2ZXJpZnkgMiAxKVxuICBsZXQldGVzdF91bml0IF8gPSBydW5fdGVzdCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgKHZlcmlmeSAyIDM0KVxuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGYgKHZlcmlmeSA3IDQwKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXCJjYW4gY2FsbCByZWFkX2ZvcmV2ZXIgbXVsdGlwbGUgdGltZXNcIiA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKCkgaW5cbiAgICBsZXQgd3JpdGUgeCA9IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSBpblxuICAgIGxldCBudW0gPSByZWYgMCBpblxuICAgIGxldCBzdG9wX2FmdGVyX29uX21lc3NhZ2UgYnVmZmVyIH5wb3MgfmxlbiA9XG4gICAgICBpbmNyIG51bTtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0OmRlZmF1bHRfbWVzc2FnZTtcbiAgICAgIEhhbmRsZXJfcmVzdWx0LlN0b3AgKClcbiAgICBpblxuICAgIHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgUGlwZS5jbG9zZSB3cml0ZXI7XG4gICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIChsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgbGV0JWJpbmQgeCA9XG4gICAgICAgICBUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgICAgICByZWFkZXJcbiAgICAgICAgICAgfm9uX21lc3NhZ2U6c3RvcF9hZnRlcl9vbl9tZXNzYWdlXG4gICAgICAgICAgIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgICAgICBpblxuICAgICAgIGFzc2VydCAoUmVzdWx0LmlzX29rIHgpO1xuICAgICAgIERlZmVycmVkLnVuaXQpO1xuICAgIHdhaXQgKCk7XG4gICAgWyV0ZXN0X3Jlc3VsdDogSW50LnRdIH5leHBlY3Q6MiAhbnVtXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JXRlc3RfbW9kdWxlIFwiVGVzdF9yZWFkZXJfYmlnc3RyaW5nXCIgPSAobW9kdWxlIFRlc3RfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuXG5tb2R1bGUgQmVuY2hfcmVhZGVyIChUcmFuc3BvcnRfcmVhZGVyIDogVHJhbnNwb3J0X3JlYWRlcikgPSBzdHJ1Y3RcbiAgb3BlbiBUcmFuc3BvcnRfcmVhZGVyLkZvcl90ZXN0aW5nXG5cbiAgbGV0IGRlZmF1bHRfbWVzc2FnZSA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJGT09CQVIxMjNcIlxuXG4gIGxldCBjcmVhdGVfbWVzc2FnZV9idWYgKG1lc3NhZ2UgOiBCaWdzdHJpbmcudCkgOiBCaWdzdHJpbmcudCA9XG4gICAgbGV0IG1lc3NhZ2VfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlIGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgKEhlYWRlci5sZW5ndGggKyBtZXNzYWdlX2xlbikgaW5cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIG1lc3NhZ2VfbGVuO1xuICAgIEJpZ3N0cmluZy5ibGl0XG4gICAgICB+c3JjOm1lc3NhZ2VcbiAgICAgIH5kc3Q6YnVmXG4gICAgICB+c3JjX3BvczowXG4gICAgICB+ZHN0X3BvczpIZWFkZXIubGVuZ3RoXG4gICAgICB+bGVuOm1lc3NhZ2VfbGVuO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGVfbWVzc2FnZSAoKSA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2VcbiAgbGV0IG9uZV9tZXNzYWdlID0gY3JlYXRlX21lc3NhZ2UgKClcbiAgbGV0IHR3b19tZXNzYWdlcyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbWVzc2FnZTsgb25lX21lc3NhZ2UgXVxuXG4gIGxldCBvbmVfbWVzc2FnZV9wMSwgb25lX21lc3NhZ2VfcDIgPVxuICAgIGxldCBtc2dfbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSBpblxuICAgIGxldCBzcGxpdF9hdCA9IG1zZ19sZW4gLyAyIGluXG4gICAgbGV0IHBhcnQxID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOjAgfmxlbjpzcGxpdF9hdCBpblxuICAgIGxldCBwYXJ0MiA9IEJpZ3N0cmluZy5zdWIgb25lX21lc3NhZ2UgfnBvczpzcGxpdF9hdCB+bGVuOihtc2dfbGVuIC0gc3BsaXRfYXQpIGluXG4gICAgcGFydDEsIHBhcnQyXG4gIDs7XG5cbiAgbGV0IG9uX21lc3NhZ2UgX2J1ZmZlciB+cG9zOl8gfmxlbjpfID0gSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgbGV0IG9uX2VuZF9vZl9iYXRjaCAoKSA9ICgpXG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gPVxuICAgIGxldCByZWFkZXIsIHdyaXRlciA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYWRlciA9IFBpcGVfYW5kX2J1ZmZlci5jcmVhdGUgcmVhZGVyIGluXG4gICAgbGV0IG9uX21lc3NhZ2UgPSBvbl9tZXNzYWdlIGluXG4gICAgbGV0IG9uX2VuZF9vZl9iYXRjaCA9IG9uX2VuZF9vZl9iYXRjaCBpblxuICAgIGlnbm9yZSAoVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXIgcmVhZGVyIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2gpO1xuICAgIHdhaXQgKCk7XG4gICAgZm9yIF8gPSAwIHRvIDEwMCBkb1xuICAgICAgcnVuIChmdW4geCAtPiBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChvZl9iaWdzdHJpbmcgeCkpXG4gICAgZG9uZTtcbiAgICB3YWl0ICgpXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSBvbmVfbWVzc2FnZVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCBidWYgPSBjcmVhdGVfbWVzc2FnZV9idWYgKEJpZ3N0cmluZy5vZl9zdHJpbmcgXCJcIilcblxuICBsZXQgd3JpdGVfMV9tc2dfM19jaHVuayB3cml0ZSA9XG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBvbmVfbWVzc2FnZSk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AxO1xuICAgIHdyaXRlIG9uZV9tZXNzYWdlX3AyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPSB3cml0ZSB0d29fbWVzc2FnZXNcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbWVzc2FnZXMgLSAxIGRvXG4gICAgICB3cml0ZSAoQmlnc3RyaW5nLnN1YiB0d29fbWVzc2FnZXMgfnBvczppIH5sZW46MSlcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMV9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVua1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGVcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18zX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18zX2NodW5rXG4gIGxldCViZW5jaCBcIndyaXRlXzJfbXNnXzFfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfb25lX2J5dGVcIiA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVua1xuXG4gIGxldCViZW5jaCBcIm11bHRpXCIgPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSk7XG4gICAgICB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayB3cml0ZTtcbiAgICAgIHdyaXRlIChjcmVhdGVfbWVzc2FnZSAoKSlcbiAgICBpblxuICAgIHJ1bl90ZXN0IGZcbiAgOztcbmVuZFxuXG5sZXQlYmVuY2hfbW9kdWxlIFwiVGVzdF9yZWFkZXJfc3RyaW5nXCIgPSAobW9kdWxlIEJlbmNoX3JlYWRlciAoU3RyaW5nX3BpcGVfcmVhZGVyKSlcbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChCaWdzdHJpbmdfcGlwZV9yZWFkZXIpKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWZXJzaW9uZWRfcnBjLkNvbm5lY3Rpb25fd2l0aF9tZW51LnRcblxuICAgIGxldCBycGNfY29ubmVjdGlvbiA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIChycGNfY29ubmVjdGlvbiB0KVxuICAgIGxldCBjbG9zZV9maW5pc2hlZCB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2VfZmluaXNoZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gIGVuZClcblxubW9kdWxlIFJwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFJwYy5Db25uZWN0aW9uLnRcblxuICAgIGxldCBjbG9zZSB0ID0gUnBjLkNvbm5lY3Rpb24uY2xvc2UgdFxuICAgIGxldCBpc19jbG9zZWQgdCA9IFJwYy5Db25uZWN0aW9uLmlzX2Nsb3NlZCB0XG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCB0XG4gIGVuZClcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gVmVyc2lvbmVkX3JwY1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxubW9kdWxlIFBpcGVfdHJhbnNwb3J0ID0gUGlwZV90cmFuc3BvcnRcbm1vZHVsZSBScGNfZXJyb3IgPSBScGNfZXJyb3Jcbm1vZHVsZSBScGNfcmVzdWx0ID0gUnBjX3Jlc3VsdFxubW9kdWxlIFJwY19zaGFwZXMgPSBScGNfc2hhcGVzXG5tb2R1bGUgT3Jfbm90X2F1dGhvcml6ZWQgPSBPcl9ub3RfYXV0aG9yaXplZFxuXG5tb2R1bGUgUnBjX21ldGFkYXRhIDpcbiAgbW9kdWxlIHR5cGUgb2YgUnBjX21ldGFkYXRhIHdpdGggbW9kdWxlIFByaXZhdGUgOj0gUnBjX21ldGFkYXRhLlByaXZhdGUgPVxuICBScGNfbWV0YWRhdGFcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBScGMuU3RhYmxlXG5lbmRcblxubW9kdWxlIEFzeW5jX3JwY19rZXJuZWxfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cbiAgbW9kdWxlIFByb3RvY29sID0gUHJvdG9jb2xcbiAgbW9kdWxlIFRyYW5zcG9ydCA9IFRyYW5zcG9ydFxuXG4gIGxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gQ29ubmVjdGlvbi5kZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0XG5lbmRcbiIsIm9wZW4gU3RyaW5nXG5cbmxldCBzdHJpbmdfYWZ0ZXIgcyBuID0gU3RyaW5nLnN1YiBzIG4gKFN0cmluZy5sZW5ndGggcyAtIG4pXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuXG4oKiBOb3QgdGFpbCByZWN1cnNpdmUgZm9yIFwicGVyZm9ybWFuY2VcIiwgcGxlYXNlIGNob29zZSBsb3cgdmFsdWVzIGZvclxuICAgW21heF0uIFRoZSBpZGVhIGlzIHRoYXQgbWF4IGlzIGFsd2F5cyBzbWFsbCBiZWNhdXNlIGl0J3MgaGFyZFxuICAgY29kZSAqKVxubGV0IHNwbGl0X2NoYXJfYm91bmRlZCBzdHIgfm9uIH5tYXggPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW3N0cl1cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBvZmZzZXQgdG9rZW5zID1cbiAgICAgIGlmIHRva2VucyA9IG1heCAtIDFcbiAgICAgIHRoZW4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgICAgXCJcIjo6KGxvb3AgKG9mZnNldCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBTdHJpbmcuc3ViIHN0ciBvZmZzZXQgKGluZGV4IC0gb2Zmc2V0KSBpblxuICAgICAgICAgICAgdG9rZW46Oihsb29wIChpbmRleCArIDEpICh0b2tlbnMgKyAxKSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gW3N1YiBzdHIgb2Zmc2V0IChsZW5ndGggc3RyIC0gb2Zmc2V0KV1cbiAgICBpbiBsb29wIDAgMFxuXG5sZXQgc3BsaXRfY2hhcl91bmJvdW5kZWQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmxldCBvZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG5sZXQgZnVsbF9zcGxpdCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgc2VwID0gb2ZfY2hhciBvbiBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChzZXA6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHN1YiBzdHIgKGluZGV4ICsgMSkgKG9mZnNldCAtIGluZGV4KSBpblxuICAgICAgICAgIGxvb3AgKHNlcDo6dG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgICAgdGhlbiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgICAgICBlbHNlIGFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG4oKiBjb3B5aW5nIGNvcmUncyBjb252ZW50aW9uIGZvciBTdHJpbmcuc3BsaXQgYnV0IHdpdGggYW4gb3B0aW9uYWwgbWF4XG4gICBhcmd1bWVudCAqKVxubGV0IHNwbGl0ID9tYXggcyB+b24gPVxuICBtYXRjaCBtYXggd2l0aFxuICB8IE5vbmUgLT4gc3BsaXRfY2hhcl91bmJvdW5kZWQgcyB+b25cbiAgfCBTb21lIG1heCAtPiAgICAgICAgICAgICAgICAgKCogYXNzZXJ0IChtYXggPCAxMDApOyAqKVxuICAgIHNwbGl0X2NoYXJfYm91bmRlZCBzIH5vbiB+bWF4XG5cbmxldCByaW5kZXhfZnJvbV9vbiBzIH5vZmZzZXQgfm9uID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgb24gcy5baV0gdGhlbiBpXG4gICAgZWxzZSBsb29wIChpIC0gMSlcbiAgaW4gbG9vcCBvZmZzZXRcblxubGV0IHRyaW1fbGVmdF9zdWIgcyB+cG9zIH5sZW4gfmNoYXJzID1cbiAgbGV0IHN0YXJ0X3BvcyA9XG4gICAgbGV0IGZpbmFsID0gcG9zICsgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGxhc3RfY2hhciBpID1cbiAgICAgIGlmIGkgPSBmaW5hbCB0aGVuIGxhc3RfY2hhclxuICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgY2hhcnMgcy5baV0gdGhlbiBsb29wIChpICsgMSkgKGkgKyAxKVxuICAgICAgZWxzZSBsYXN0X2NoYXJcbiAgICBpbiBsb29wIHBvcyBwb3NcbiAgaW5cbiAgbGV0IG5ld19sZW4gPSBsZW4gLSAoc3RhcnRfcG9zIC0gcG9zKSBpblxuICBTdHJpbmcuc3ViIHMgc3RhcnRfcG9zIG5ld19sZW5cblxubGV0IHNwbGl0X3RyaW1fbGVmdCBzdHIgfm9uIH50cmltID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb21fb24gc3RyIH5vZmZzZXQgfm9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSB0cmltX2xlZnRfc3ViIHN0ciB+cG9zOihpbmRleCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihvZmZzZXQgLSBpbmRleCkgfmNoYXJzOnRyaW0gaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAodHJpbV9sZWZ0X3N1YiBzdHIgfnBvczowIH5sZW46KG9mZnNldCArIDEpIH5jaGFyczp0cmltKTo6YWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbmV4Y2VwdGlvbiBGb3VuZF9pbnQgb2YgaW50XG5cbmxldCBmaXJzdF9jaGFyX25lIHMgYyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgcy5bMF0gPD4gY1xuXG5sZXQgdHJpbV9sZWZ0IHMgPVxuICBpZiBmaXJzdF9jaGFyX25lIHMgJyAnIHRoZW4gc1xuICBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIHRyeVxuICAgICAgZm9yIGk9MCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+ICcgJyB0aGVuIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICAgIGRvbmU7XG4gICAgICBcIlwiXG4gICAgd2l0aCBGb3VuZF9pbnQgbm9uX3NwYWNlIC0+XG4gICAgICBzdWIgcyBub25fc3BhY2UgKGxlbiAtIG5vbl9zcGFjZSlcblxubGV0IHN1YnN0cl9lcSA/KHN0YXJ0PTApIHMgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIC0gMSBkb1xuICAgICAgaWYgcy5baSArIHN0YXJ0XSA8PiBwYXR0ZXJuLltpXSB0aGVuIHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBfIC0+IGZhbHNlXG5cbmxldCBmaW5kX2Zyb20gPyhzdGFydD0wKSBzdHIgfnBhdHRlcm4gPVxuICB0cnlcbiAgICBmb3IgaSA9IHN0YXJ0IHRvIChTdHJpbmcubGVuZ3RoIHN0cikgLSAoU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKSBkb1xuICAgICAgaWYgc3Vic3RyX2VxIH5zdGFydDppIHN0ciB+cGF0dGVybiB0aGVuXG4gICAgICAgIHJhaXNlIChGb3VuZF9pbnQgaSlcbiAgICBkb25lO1xuICAgIE5vbmVcbiAgd2l0aFxuICB8IEZvdW5kX2ludCBpIC0+IFNvbWUgaVxuICB8ICBfIC0+IE5vbmVcblxubGV0IGZpbmRfbWluIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgeCBmeCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBTb21lICh4LCBmeClcbiAgICB8IHgnOjp4cyAtPlxuICAgICAgbGV0IGZ4JyA9IGYgeCcgaW5cbiAgICAgIGlmIGZ4JyA8IGZ4IHRoZW4gbG9vcCB4JyBmeCcgeHNcbiAgICAgIGVsc2UgbG9vcCB4IGZ4IHhzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4Ojp4cyAtPiBsb29wIHggKGYgeCkgeHNcblxubGV0IHJlcGxhY2VfYWxsIHN0ciB+cGF0dGVybiB+d2l0aF8gPVxuICBsZXQgKHNsZW4sIHBsZW4pID0gU3RyaW5nLihsZW5ndGggc3RyLCBsZW5ndGggcGF0dGVybikgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICB8IFNvbWUgaiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICBsb29wIChqICsgcGxlbilcbiAgaW4gbG9vcCAwXG5cbmV4Y2VwdGlvbiBGb3VuZF9yZXBsYWNlIG9mIGludCAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgcmVwbGFjZV9hbGxfYXNzb2Mgc3RyIHRibCA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgc2xlbiBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBzbGVuIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIGVsc2VcbiAgICAgIGxldCByID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGUgPVxuICAgICAgICAgICAgZmluZF9taW4gdGJsIH5mOihmdW4gKHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lICAgLT4gbWF4X2ludFxuICAgICAgICAgICAgICB8IFNvbWUgaiB3aGVuIGogPSBpIC0+IHJhaXNlIChGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykpXG4gICAgICAgICAgICAgIHwgU29tZSBqIC0+IGZvdW5kIDo9IHRydWU7IGopXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSAoKHBhdHRlcm4sIHdpdGhfKSwgaikgd2hlbiAhZm91bmQgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICAgICAgfCBTb21lIF8gLT4gTm9uZVxuICAgICAgICB3aXRoIEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgIGluXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKHNsZW4gLSBpKTtcbiAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgICAgfCBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChqIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgICAgbG9vcCAoaiArIFN0cmluZy5sZW5ndGggcGF0dGVybilcbiAgaW4gbG9vcCAwXG5cbmxldCBpdGVyaSBmIGwgPVxuICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgeDo6eHMgLT4gKGYgaSB4KTsgbG9vcCAoc3VjYyBpKSB4c1xuICBpbiBsb29wIDAgbFxuXG5sZXQgb2ZfbGlzdCB4cyA9XG4gIGxldCBsID0gTGlzdC5sZW5ndGggeHMgaW5cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBpdGVyaSAoZnVuIGkgYyAtPiBCeXRlcy5zZXQgcyBpIGMpIHhzO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9XG4gICAgaWYgaSA9IC0xIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbG9vcCAocy5baV0gOjogYWNjKSAocHJlZCBpKVxuICBpbiBsb29wIFtdIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuXG5sZXQgb2ZfYXJyYXkgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgYnl0ZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IGJ5dGVzIGkgYS4oaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBieXRlc1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKFN0cmluZy5sZW5ndGggcykgKFN0cmluZy5nZXQgcylcblxuKCogcmlwcGVkIG9mZiBmcm9tIG9uZSBvZiBkYnVlbnpsaSdzIGxpYnMgKilcbmxldCBjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5jdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gZW5kIHdpdGggW2ldIHRyeWluZyB0byBtYXRjaCB0aGVcbiAgICAgICAgIGZpcnN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZSB2ZXJpZnkgdGhhdFxuICAgICAgICAgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10uIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2VcbiAgICAgICAgIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl0gd2l0aCBbaV0uIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGVcbiAgICAgICAgIGxvb3AgYW5kIGV4dHJhY3QgYSBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZVxuICAgICAgICAgcG9zaXRpb24gYmVmb3JlIHRoZSBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uXG4gICAgICAgICBhZnRlciB0aGUgW29uXSB3ZSBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vXG4gICAgICAgICBzZXBhcmF0b3IgY2FuIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2hcbiAgICAgICAgIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpICsgc2VwX21heCA8PSBzX21heCkgZG9cbiAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZSBzICghaSArICFrKSBpc1xuICAgICAgICAgICAgIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gMCB0aGVuIGluY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICBrIDo9IDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPD0gc2VwX21heCAmJiB1bnNhZmVfZ2V0IHMgKCFpICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGluY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPD0gc2VwX21heCB0aGVuICgqIG5vIG1hdGNoICopIGluY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIHNlcF9tYXggKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCByY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQucmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgc19tYXggaW5cbiAgICAgICgqIFdlIHJ1biBmcm9tIHRoZSBlbmQgb2YgW3NdIHRvIHRoZSBiZWdpbm5pbmcgd2l0aCBbaV0gdHJ5aW5nIHRvXG4gICAgICAgICBtYXRjaCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2VcbiAgICAgICAgIHZlcmlmeSB0aGF0IHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdICh3ZSBkbyB0aGF0XG4gICAgICAgICBiYWNrd2FyZHMpLiAgSWYgaXQgZG9lc24ndCBtYXRjaCB3ZSBjb250aW51ZSB0byBsb29rIGZvciBbb25dXG4gICAgICAgICB3aXRoIFtpXS4gIElmIGl0IG1hdGNoZXMgd2UgZXhpdCB0aGUgbG9vcCBhbmQgZXh0cmFjdCBhXG4gICAgICAgICBzdWJzdHJpbmcgZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlXG4gICAgICAgICBbb25dIHdlIGZvdW5kIGFuZCBhbm90aGVyIGZyb20gdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBbb25dIHdlXG4gICAgICAgICBmb3VuZCB0byBlbmQgb2Ygc3RyaW5nLiAgSWYgW2ldIGlzIHN1Y2ggdGhhdCBubyBzZXBhcmF0b3IgY2FuXG4gICAgICAgICBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoIGNhc2UuICopXG4gICAgICB0cnlcbiAgICAgICAgd2hpbGUgKCFpID49IHNlcF9tYXgpIGRvXG4gICAgICAgICAgaWYgdW5zYWZlX2dldCBzICFpIDw+IHVuc2FmZV9nZXQgb24gc2VwX21heCB0aGVuIGRlY3IgaSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAoKiBDaGVjayByZW1haW5pbmcgW29uXSBjaGFycyBtYXRjaCwgYWNjZXNzIHRvIHVuc2FmZV9nZXRcbiAgICAgICAgICAgICAgIHMgKHNlcF9zdGFydCArICFrKSBpcyBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgICAgbGV0IHNlcF9zdGFydCA9ICFpIC0gc2VwX21heCBpblxuICAgICAgICAgICAgayA6PSBzZXBfbWF4IC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA+PSAwICYmIHVuc2FmZV9nZXQgcyAoc2VwX3N0YXJ0ICsgIWspID0gdW5zYWZlX2dldCBvbiAhaylcbiAgICAgICAgICAgIGRvIGRlY3IgayBkb25lO1xuICAgICAgICAgICAgaWYgIWsgPj0gMCB0aGVuICgqIG5vIG1hdGNoICopIGRlY3IgaSBlbHNlIHJhaXNlIEV4aXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgTm9uZSAoKiBubyBtYXRjaCBpbiB0aGUgd2hvbGUgc3RyaW5nLiAqKVxuICAgICAgd2l0aFxuICAgICAgfCBFeGl0IC0+ICgqIGkgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc2VwYXJhdG9yICopXG4gICAgICAgIGxldCBsZWZ0X2VuZCA9ICFpIC0gc2VwX21heCAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyAxIGluXG4gICAgICAgIFNvbWUgKHN1YiBzIDAgKGxlZnRfZW5kICsgMSksXG4gICAgICAgICAgICAgIHN1YiBzIHJpZ2h0X3N0YXJ0IChzX21heCAtIHJpZ2h0X3N0YXJ0ICsgMSkpXG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBsZXQgcHJlZml4X2wgPSBTdHJpbmcubGVuZ3RoIHByZWZpeCBpblxuICBsZXQgc3RyaW5nX2wgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgcHJlZml4X2wgPiBzdHJpbmdfbCB0aGVuIE5vbmVcbiAgZWxzZVxuICAgIHRyeVxuICAgICAgZm9yIGkgPSAwIHRvIHByZWZpeF9sIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiBwcmVmaXguW2ldIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGRvbmU7XG4gICAgICBTb21lIChTdHJpbmcuc3ViIHMgcHJlZml4X2wgKHN0cmluZ19sIC0gcHJlZml4X2wpKVxuICAgIHdpdGggXyAtPiBOb25lXG5cbmxldCBkcm9wIHMgbiA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIG4gPj0gbFxuICB0aGVuIFwiXCJcbiAgZWxzZSBTdHJpbmcuc3ViIHMgbiAobCAtIG4pXG5cbmxldCB0YWtlIHMgbiA9XG4gIGlmIG4gPj0gU3RyaW5nLmxlbmd0aCBzXG4gIHRoZW4gc1xuICBlbHNlIFN0cmluZy5zdWIgcyAwIG5cbiIsInR5cGUgYmlnc3RyaW5nID1cbiAgKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxudHlwZSB0ID0gYmlnc3RyaW5nXG5cbmxldCBjcmVhdGUgc2l6ZSA9IEJpZ2FycmF5LihBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgc2l6ZSlcbmxldCBlbXB0eSAgICAgICA9IGNyZWF0ZSAwXG5cbm1vZHVsZSBCQTEgPSBCaWdhcnJheS5BcnJheTFcblxubGV0IGxlbmd0aCB0ID0gQkExLmRpbSB0XG5cbmV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGNoYXIgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gY2hhciAgICAgICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgICAgICAgICAgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgICA6IHQgICAgICAgLT4gc3JjX29mZjppbnQgLT4gQnl0ZXMudCAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcIiAgICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyA6IEJ5dGVzLnQgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gc3JjX29mZjppbnQgLT4gdCAgICAgICAtPiBkc3Rfb2ZmOmludCAtPiBsZW46aW50IC0+IHVuaXQgPVxuICBcImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlc1wiICAgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcCA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wX3N0cmluZyA6IHQgLT4gaW50IC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jaHIgOiB0IC0+IGludCAtPiBjaGFyIC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNoclwiIFtAQG5vYWxsb2NdXG5cbmxldCBzdWIgdCB+b2ZmIH5sZW4gPVxuICBCQTEuc3ViIHQgb2ZmIGxlblxuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHMgb3AgYnVmZmVyX2xlbiBvZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWZmZXJfbGVuOiAlZCwgb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWZmZXJfbGVuIG9mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19ibGl0IG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBzcmNfbGVuOiAlZCwgc3JjX29mZjogJWQsIGRzdF9sZW46ICVkLCBkc3Rfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX21lbWNtcCBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZjFfbGVuOiAlZCwgYnVmMV9vZmY6ICVkLCBidWYyX2xlbjogJWQsIGJ1ZjJfb2ZmOiAlZCwgbGVuOiAlZCB9XCJcbiAgICBvcCBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbigqIEEgbm90ZSBvbiBib3VuZHMgY2hlY2tpbmcuXG4gKlxuICogVGhlIGNvZGUgc2hvdWxkIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgYmxpdCBkb2Vzbid0XG4gKiBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IGJ1ZmZlcjpcbiAqXG4gKiAgIHtbb2ZmICsgbGVuIDw9IGJ1ZmZlcl9sZW5dfVxuICpcbiAqIEhvd2V2ZXIsIHRoaXMgbWF5IGxlYWQgdG8gYW4gaW50ZWdlciBvdmVyZmxvdyBmb3IgbGFyZ2UgdmFsdWVzIG9mIFtvZmZdLFxuICogZS5nLiwgW21heF9pbnRdLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb21wYXJpc29uIHRvIHJldHVybiBbdHJ1ZV0gd2hlbiBpdFxuICogc2hvdWxkIHJlYWxseSByZXR1cm4gW2ZhbHNlXS5cbiAqXG4gKiBBbiBlcXVpdmFsZW50IGNvbXBhcmlzb24gdGhhdCBkb2VzIG5vdCBydW4gaW50byB0aGlzIGludGVnZXIgb3ZlcmZsb3dcbiAqIHByb2JsZW0gaXM6XG4gKlxuICogICB7W2J1ZmZlcl9sZW4gLSBvZmYgPT4gbGVuXX1cbiAqXG4gKiBUaGlzIGlzIGNoZWNraW5nIHRoYXQgdGhlIGlucHV0IGJ1ZmZlciwgbGVzcyB0aGUgb2Zmc2V0LCBpcyBzdWZmaWNpZW50bHlcbiAqIGxvbmcgdG8gcGVyZm9ybSB0aGUgYmxpdC4gU2luY2UgdGhlIGV4cHJlc3Npb24gaXMgc3VidHJhY3RpbmcgW29mZl0gcmF0aGVyXG4gKiB0aGFuIGFkZGluZyBpdCwgaXQgZG9lc24ndCBzdWZmZXIgZnJvbSB0aGUgb3ZlcmZsb3cgdGhhdCB0aGUgcHJldmlvdXNcbiAqIGluZXF1YWxpdHkgZGlkLiBBcyBsb25nIGFzIHRoZXJlIGlzIGEgY2hlY2sgdG8gZW5zdXJlIHRoYXQgW29mZl0gaXMgbm90XG4gKiBuZWdhdGl2ZSwgaXQgd29uJ3QgdW5kZXJmbG93IGVpdGhlci4gKilcblxubGV0IGNvcHkgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJjb3B5XCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCB0IH5zcmNfb2ZmOm9mZiBkc3QgfmRzdF9vZmY6MCB+bGVuO1xuICBkc3Rcbjs7XG5cbmxldCBzdWJzdHJpbmcgdCB+b2ZmIH5sZW4gPVxuICBsZXQgYnVmZmVyX2xlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJzdWJzdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6MCBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiXG47O1xuXG5sZXQgb2Zfc3RyaW5nIH5vZmYgfmxlbiBzID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm9mX3N0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBiXG47O1xuXG5sZXQgYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IEJ5dGVzLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IEJ5dGVzLmxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBtZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IGxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gU3RyaW5nLmxlbmd0aCBidWYyIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNociBidWYgYnVmX29mZiBjaHIgbGVuID1cbiAgbGV0IGJ1Zl9sZW4gPSBsZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIGlmIGJ1Zl9vZmYgPCAwIHx8IGJ1Zl9sZW4gLSBidWZfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW5cblxuKCogU2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjRcIlxuXG5tb2R1bGUgU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZilcblxuICBsZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgeCBvZmYgPVxuICAgICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcbmVuZFxuXG5sZXQgc2V0X2ludDE2X2xlLCBzZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTZcblxubGV0IHNldF9pbnQzMl9sZSwgc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyXG5cbmxldCBzZXRfaW50NjRfbGUsIHNldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NFxuXG5sZXQgZ2V0X2ludDE2X2xlLCBnZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ19nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTZcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCB4IG9mZiA9XG4gICgoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZCAgLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXBcbiAgZWxzZSBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAsIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRcblxubGV0IGdldF9pbnQzMl9sZSwgZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyXG5cbmxldCBnZXRfaW50NjRfbGUsIGdldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF82NCAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NFxuXG4oKiBVbnNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0NjR1XCJcblxubW9kdWxlIFVTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgYnMgb2ZmIChic3dhcF9pbnQzMiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYgPVxuICAgIGJzd2FwMTYgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmKVxuZW5kXG5cbmxldCB1bnNhZmVfc2V0X2ludDE2X2xlLCB1bnNhZmVfc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSwgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUsIHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlLCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2xlIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9iZSB4IG9mZiApIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSwgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUsIHVuc2FmZV9nZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4iLCJ0eXBlICdhIHN0YXRlID1cbiAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgfCBEb25lICAgIG9mIGludCAqICdhXG4gIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG5hbmQgJ2EgcGFydGlhbCA9XG4gIHsgY29tbWl0dGVkIDogaW50XG4gIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHN0YXRlIH1cblxuXG5sZXQgc3RhdGVfdG9fb3B0aW9uIHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuXG5sZXQgZmFpbF90b19zdHJpbmcgbWFya3MgZXJyID1cbiAgU3RyaW5nLmNvbmNhdCBcIiA+IFwiIG1hcmtzIF4gXCI6IFwiIF4gZXJyXG5cbmxldCBzdGF0ZV90b19yZXN1bHQgeCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgfCBGYWlsKF8sIG1hcmtzLCBlcnIpIC0+IEVycm9yIChmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIpXG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDogaW50XG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgICAgICAgIDogaW50XG4gIDsgb2ZmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgbGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50XG4gIDsgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgIDogQmlnc3RyaW5nYWYudFxuICB9XG5cbmxldCBjcmVhdGUgYnVmZmVyIH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzID1cbiAgeyBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IG9mZlxuICA7IGxlblxuICA7IGJ1ZmZlciB9XG5cbmxldCBsZW5ndGggICAgICAgICAgICAgICAgIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgKyB0LmxlblxubGV0IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCAgdCA9IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0XG5cbmxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IHQubGVuIC0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdFxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCArIHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gbGVuZ3RoIHQpO1xuICBhc3NlcnQgKHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgdCAtIGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICB0ID0gYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgdCk7XG47O1xuXG5sZXQgb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyA9XG4gIHQub2ZmICsgcG9zIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBhcHBseSB0IHBvcyBsZW4gfmYgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBmIHQuYnVmZmVyIH5vZmYgfmxlblxuXG5sZXQgdW5zYWZlX2dldF9jaGFyIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldCB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IGNvdW50X3doaWxlIHQgcG9zIH5mID1cbiAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gIGxldCBvZmYgICAgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGxldCBpICAgICAgPSByZWYgb2ZmIGluXG4gIGxldCBsaW1pdCAgPSB0Lm9mZiArIHQubGVuIGluXG4gIHdoaWxlICFpIDwgbGltaXQgJiYgZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gICFpIC0gb2ZmXG47O1xuXG5sZXQgY29tbWl0IHQgcG9zID1cbiAgdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIDwtIHBvc1xuOztcbiIsIm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gICAgfCBMYXp5ICAgIG9mICdhIHQgTGF6eS50XG4gICAgfCBEb25lICAgIG9mIGludCAqICdhXG4gICAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgYW5kICdhIHBhcnRpYWwgPVxuICAgIHsgY29tbWl0dGVkIDogaW50XG4gICAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2EgdCB9XG5cbmVuZFxudHlwZSAnYSB3aXRoX3N0YXRlID0gSW5wdXQudCAtPiAgaW50IC0+IE1vcmUudCAtPiAnYVxuXG50eXBlICdhIGZhaWx1cmUgPSAoc3RyaW5nIGxpc3QgLT4gc3RyaW5nIC0+ICdhIFN0YXRlLnQpIHdpdGhfc3RhdGVcbnR5cGUgKCdhLCAncikgc3VjY2VzcyA9ICgnYSAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlXG5cbnR5cGUgJ2EgdCA9XG4gIHsgcnVuIDogJ3IuICgnciBmYWlsdXJlIC0+ICgnYSwgJ3IpIHN1Y2Nlc3MgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZSB9XG5cbmxldCBmYWlsX2sgICAgaW5wdXQgcG9zIF8gbWFya3MgbXNnID1cbiAgU3RhdGUuRmFpbChwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCBtYXJrcywgbXNnKVxubGV0IHN1Y2NlZWRfayBpbnB1dCBwb3MgXyAgICAgICB2ICAgPVxuICBTdGF0ZS5Eb25lKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIHYpXG5cbmxldCByZWMgdG9fZXhwb3J0ZWRfc3RhdGUgPSBmdW5jdGlvblxuICB8IFN0YXRlLlBhcnRpYWwge2NvbW1pdHRlZDtjb250aW51ZX0gLT5cbiAgICAgRXhwb3J0ZWRfc3RhdGUuUGFydGlhbFxuICAgICAgIHsgY29tbWl0dGVkXG4gICAgICAgOyBjb250aW51ZSA9XG4gICAgICAgICAgIGZ1biBicyB+b2ZmIH5sZW4gbW9yZSAtPlxuICAgICAgICAgICB0b19leHBvcnRlZF9zdGF0ZSAoY29udGludWUgYnMgfm9mZiB+bGVuIG1vcmUpfVxuICB8IFN0YXRlLkRvbmUgKGkseCkgLT4gRXhwb3J0ZWRfc3RhdGUuRG9uZSAoaSx4KVxuICB8IFN0YXRlLkZhaWwgKGksIHNsLCBzKSAtPiBFeHBvcnRlZF9zdGF0ZS5GYWlsIChpLCBzbCwgcylcbiAgfCBTdGF0ZS5MYXp5IHggLT4gdG9fZXhwb3J0ZWRfc3RhdGUgKExhenkuZm9yY2UgeClcblxubGV0IHBhcnNlIHAgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgQmlnc3RyaW5nYWYuZW1wdHkgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOjAgaW5cbiAgdG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgSW5jb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIHAgaW5wdXQgPVxuICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfmNvbW1pdHRlZF9ieXRlczowIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggaW5wdXQpIGluXG4gIEV4cG9ydGVkX3N0YXRlLnN0YXRlX3RvX3Jlc3VsdCAodG9fZXhwb3J0ZWRfc3RhdGUgKHAucnVuIGlucHV0IDAgQ29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaykpXG5cbm1vZHVsZSBNb25hZCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgdlxuICAgIH1cblxuICBsZXQgZmFpbCBtc2cgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgX3N1Y2MgLT5cbiAgICAgIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gbXNnXG4gICAgfVxuXG4gIGxldCAoPj49KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSAoZiB2KS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPj58KSBwIGYgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChmIHYpIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCQ+KSBmIG0gPVxuICAgIG0gPj58IGZcblxuICBsZXQgKDwqPikgZiBtID1cbiAgICAoKiBmID4+PSBmdW4gZiAtPiBtID4+fCBmICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgZiA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSAoZiBtKSBpblxuICAgICAgICBtLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgZi5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5cbiAgbGV0IGxpZnQgZiBtID1cbiAgICBmIDwkPiBtXG5cbiAgbGV0IGxpZnQyIGYgbTEgbTIgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID0gc3VjYyBpbnB1dDIgcG9zMiBtb3JlMiAoZiBtMSBtMikgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgc3VjYyBpbnB1dDMgcG9zMyBtb3JlMyAoZiBtMSBtMiBtMykgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBsZXQgc3VjYzQgaW5wdXQ0IHBvczQgbW9yZTQgbTQgPVxuICAgICAgICAgICAgICBzdWNjIGlucHV0NCBwb3M0IG1vcmU0IChmIG0xIG0yIG0zIG00KSBpblxuICAgICAgICAgICAgbTQucnVuIGlucHV0MyBwb3MzIG1vcmUzIGZhaWwgc3VjYzQgaW5cbiAgICAgICAgICBtMy5ydW4gaW5wdXQyIHBvczIgbW9yZTIgZmFpbCBzdWNjMyBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgKCAqPikgYSBiID1cbiAgICAoKiBhID4+PSBmdW4gXyAtPiBiICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9IGIucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwqICkgYSBiID1cbiAgICAoKiBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4ICopXG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzAgaW5wdXQwIHBvczAgbW9yZTAgeCA9XG4gICAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBfID0gc3VjYyBpbnB1dDEgcG9zMSBtb3JlMSB4IGluXG4gICAgICAgIGIucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cbmVuZFxuXG5tb2R1bGUgQ2hvaWNlID0gc3RydWN0XG4gIGxldCAoPD8+KSBwIG1hcmsgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgKG1hcms6Om1hcmtzKSBtc2cgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5cbiAgbGV0ICg8fD4pIHAgcSA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgKCogVGhlIG9ubHkgdHdvIGNvbnN0cnVjdG9ycyB0aGF0IGludHJvZHVjZSBuZXcgZmFpbHVyZSBjb250aW51YXRpb25zIGFyZVxuICAgICAgICAgKiBbPD8+XSBhbmQgWzx8Pl0uIElmIHRoZSBpbml0aWFsIGlucHV0IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoXG4gICAgICAgICAqIG9mIHRoZSBjb21taXR0ZWQgaW5wdXQsIHRoZW4gY2FsbGluZyB0aGUgZmFpbHVyZSBjb250aW51YXRpb24gd2lsbFxuICAgICAgICAgKiBoYXZlIHRoZSBlZmZlY3Qgb2YgdW53aW5kaW5nIGFsbCBjaG9pY2VzIGFuZCBjb2xsZWN0aW5nIG1hcmtzIGFsb25nXG4gICAgICAgICAqIHRoZSB3YXkuICopXG4gICAgICAgIGlmIHBvcyA8IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnIHRoZW5cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUgbWFya3MgbXNnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBxLnJ1biBpbnB1dCcgcG9zIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgTW9uYWRfdXNlX2Zvcl9kZWJ1Z2dpbmcgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IE1vbmFkLnJldHVyblxuICBsZXQgZmFpbCAgID0gTW9uYWQuZmFpbFxuICBsZXQgKD4+PSkgID0gTW9uYWQuKD4+PSlcblxuICBsZXQgKD4+fCkgbSBmID0gbSA+Pj0gZnVuIHggLT4gcmV0dXJuIChmIHgpXG5cbiAgbGV0ICg8JD4pIGYgbSA9IG0gPj58IGZcbiAgbGV0ICg8Kj4pIGYgbSA9IGYgPj49IGZ1biBmIC0+IG0gPj58IGZcblxuICBsZXQgbGlmdCAgPSAoPj58KVxuICBsZXQgbGlmdDIgZiBtMSBtMiAgICAgICA9IGYgPCQ+IG0xIDwqPiBtMlxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyAgICA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTNcbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zIDwqPiBtNFxuXG4gIGxldCAoICo+KSBhIGIgPSBhID4+PSBmdW4gXyAtPiBiXG4gIGxldCAoPCogKSBhIGIgPSBhID4+PSBmdW4geCAtPiBiID4+fCBmdW4gXyAtPiB4XG5lbmRcbiIsInR5cGUgdCA9XG4gIHsgbXV0YWJsZSBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgbXV0YWJsZSBvZmYgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludCB9XG5cbmxldCBvZl9iaWdzdHJpbmcgfm9mZiB+bGVuIGJ1ZiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBidWYgPj0gbGVuIC0gb2ZmKTtcbiAgeyBidWY7IG9mZjsgbGVuIH1cblxubGV0IGNyZWF0ZSBsZW4gPVxuICBvZl9iaWdzdHJpbmcgfm9mZjowIH5sZW46MCAoQmlnc3RyaW5nYWYuY3JlYXRlIGxlbilcblxubGV0IHdyaXRhYmxlX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSB0LmxlblxuXG5sZXQgdHJhaWxpbmdfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtICh0Lm9mZiArIHQubGVuKVxuXG5sZXQgY29tcHJlc3MgdCA9XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIHQuYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZ3JvdyB0IHRvX2NvcHkgPVxuICBsZXQgb2xkX2xlbiA9IEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIGxldCBzcGFjZSA9IHdyaXRhYmxlX3NwYWNlIHQgaW5cbiAgd2hpbGUgc3BhY2UgKyAhbmV3X2xlbiAtIG9sZF9sZW4gPCB0b19jb3B5IGRvXG4gICAgbmV3X2xlbiA6PSAoMyAqICFuZXdfbGVuKSAvIDJcbiAgZG9uZTtcbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmdhZi5jcmVhdGUgIW5ld19sZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgbmV3X2J1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQuYnVmIDwtIG5ld19idWY7XG4gIHQub2ZmIDwtIDBcblxubGV0IGVuc3VyZSB0IHRvX2NvcHkgPVxuICBpZiB0cmFpbGluZ19zcGFjZSB0IDwgdG9fY29weSB0aGVuXG4gICAgaWYgd3JpdGFibGVfc3BhY2UgdCA+PSB0b19jb3B5XG4gICAgdGhlbiBjb21wcmVzcyB0XG4gICAgZWxzZSBncm93IHQgdG9fY29weVxuXG5sZXQgd3JpdGVfcG9zIHQgPVxuICB0Lm9mZiArIHQubGVuXG5cbmxldCBmZWVkX3N0cmluZyB0IH5vZmYgfmxlbiBzdHIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHN0ciA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHN0ciB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9iaWdzdHJpbmcgdCB+b2ZmIH5sZW4gYiA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKEJpZ3N0cmluZ2FmLmxlbmd0aCBiID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgYiB+c3JjX29mZjpvZmYgdC5idWYgfmRzdF9vZmY6KHdyaXRlX3BvcyB0KSB+bGVuO1xuICB0LmxlbiA8LSB0LmxlbiArIGxlblxuXG5sZXQgZmVlZF9pbnB1dCB0ID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nICAgIHMgLT4gZmVlZF9zdHJpbmcgICAgdCB+b2ZmOjAgfmxlbjooU3RyaW5nICAgICAubGVuZ3RoIHMpIHNcbiAgfCBgQmlnc3RyaW5nIGIgLT4gZmVlZF9iaWdzdHJpbmcgdCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGIpIGJcblxubGV0IHNoaWZ0IHQgbiA9XG4gIGFzc2VydCAodC5sZW4gPj0gbik7XG4gIHQub2ZmIDwtIHQub2ZmICsgbjtcbiAgdC5sZW4gPC0gdC5sZW4gLSBuXG5cbmxldCBmb3JfcmVhZGluZyB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIEJpZ3N0cmluZ2FmLnN1YiB+b2ZmIH5sZW4gYnVmXG5cbm1vZHVsZSBVbmNvbnN1bWVkID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5lbmRcblxubGV0IHVuY29uc3VtZWQgPyhzaGlmdD0wKSB7IGJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIGFzc2VydCAobGVuID49IHNoaWZ0KTtcbiAgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmID0gb2ZmICsgc2hpZnQ7IGxlbiA9IGxlbiAtIHNoaWZ0IH1cblxubGV0IG9mX3VuY29uc3VtZWQgeyBVbmNvbnN1bWVkLmJ1Zjsgb2ZmOyBsZW4gfSA9XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbnR5cGUgdW5jb25zdW1lZCA9IFVuY29uc3VtZWQudCA9XG4gIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG9mZiA6IGludFxuICA7IGxlbiA6IGludCB9XG4iLCIoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbm1vZHVsZSBCaWdhcnJheSA9IHN0cnVjdFxuICAoKiBEbyBub3QgYWNjZXNzIEJpZ2FycmF5IG9wZXJhdGlvbnMgZGlyZWN0bHkuIElmIGFueXRoaW5nJ3MgbmVlZGVkLCByZWZlciB0b1xuICAgKiB0aGUgaW50ZXJuYWwgQmlnc3RyaW5nIG1vZHVsZS4gKilcbmVuZFxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZ2FmLnRcblxuXG5tb2R1bGUgVW5idWZmZXJlZCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcnNlclxuXG4gIGluY2x1ZGUgRXhwb3J0ZWRfc3RhdGVcblxuICB0eXBlIG1vcmUgPSBNb3JlLnQgPVxuICAgIHwgQ29tcGxldGVcbiAgICB8IEluY29tcGxldGVcbmVuZFxuXG5pbmNsdWRlIFVuYnVmZmVyZWRcbmluY2x1ZGUgUGFyc2VyLk1vbmFkXG5pbmNsdWRlIFBhcnNlci5DaG9pY2VcblxubW9kdWxlIEJ1ZmZlcmVkID0gc3RydWN0XG4gIHR5cGUgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkID1cbiAgICB7IGJ1ZiA6IGJpZ3N0cmluZ1xuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuXG4gIHR5cGUgaW5wdXQgPVxuICAgIFsgYEJpZ3N0cmluZyBvZiBiaWdzdHJpbmdcbiAgICB8IGBTdHJpbmcgICAgb2Ygc3RyaW5nIF1cblxuICB0eXBlICdhIHN0YXRlID1cbiAgICB8IFBhcnRpYWwgb2YgKFsgaW5wdXQgfCBgRW9mIF0gLT4gJ2Egc3RhdGUpXG4gICAgfCBEb25lICAgIG9mIHVuY29uc3VtZWQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiB1bmNvbnN1bWVkICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBsZXQgZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIH5mIGJ1ZmZlcmluZyA9IGZ1bmN0aW9uXG4gICAgfCBVbmJ1ZmZlcmVkLlBhcnRpYWwgcCAgICAgICAgIC0+IFBhcnRpYWwgKGYgcClcbiAgICB8IFVuYnVmZmVyZWQuRG9uZShjb25zdW1lZCwgdikgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRG9uZSh1bmNvbnN1bWVkLCB2KVxuICAgIHwgVW5idWZmZXJlZC5GYWlsKGNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpXG5cbiAgbGV0IHBhcnNlID8oaW5pdGlhbF9idWZmZXJfc2l6ZT0weDEwMDApIHAgPVxuICAgIGlmIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicGFyc2U6IGludmFsaWQgYXJndW1lbnQsIGluaXRpYWxfYnVmZmVyX3NpemUgPCAxXCI7XG4gICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5jcmVhdGUgaW5pdGlhbF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCByZWMgZiBwIGlucHV0ID1cbiAgICAgIEJ1ZmZlcmluZy5zaGlmdCBidWZmZXJpbmcgcC5jb21taXR0ZWQ7XG4gICAgICBsZXQgbW9yZSA6IE1vcmUudCA9XG4gICAgICAgIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgfCBgRW9mICAgICAgICAgICAgLT4gQ29tcGxldGVcbiAgICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgICAgSW5jb21wbGV0ZVxuICAgICAgaW5cbiAgICAgIGxldCBmb3JfcmVhZGluZyA9IEJ1ZmZlcmluZy5mb3JfcmVhZGluZyBidWZmZXJpbmcgaW5cbiAgICAgIHAuY29udGludWUgZm9yX3JlYWRpbmcgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBmb3JfcmVhZGluZykgbW9yZVxuICAgICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuICAgIGluXG4gICAgVW5idWZmZXJlZC5wYXJzZSBwXG4gICAgfD4gZnJvbV91bmJ1ZmZlcmVkX3N0YXRlIGJ1ZmZlcmluZyB+ZlxuXG4gIGxldCBmZWVkIHN0YXRlIGlucHV0ID1cbiAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgfCBQYXJ0aWFsIGsgLT4gayBpbnB1dFxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRmFpbChCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIG1hcmtzLCBtc2cpXG4gICAgICBlbmRcbiAgICB8IERvbmUodW5jb25zdW1lZCwgdikgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIERvbmUoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCB2KVxuICAgICAgZW5kXG5cbiAgbGV0IHN0YXRlX3RvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKF8sIHYpIC0+IFNvbWUgdlxuICAgIHwgUGFydGlhbCBfICAtPiBOb25lXG4gICAgfCBGYWlsIF8gICAgIC0+IE5vbmVcblxuICBsZXQgc3RhdGVfdG9fcmVzdWx0ID0gZnVuY3Rpb25cbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgLT4gRXJyb3IgXCJpbmNvbXBsZXRlIGlucHV0XCJcbiAgICB8IERvbmUoXywgdikgICAgICAgICAgLT4gT2sgdlxuICAgIHwgRmFpbChfLCBtYXJrcywgbXNnKSAtPiBFcnJvciAoVW5idWZmZXJlZC5mYWlsX3RvX3N0cmluZyBtYXJrcyBtc2cpXG5cbiAgbGV0IHN0YXRlX3RvX3VuY29uc3VtZWQgPSBmdW5jdGlvblxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCBfKVxuICAgIHwgRmFpbCh1bmNvbnN1bWVkLCBfLCBfKSAtPiBTb21lIHVuY29uc3VtZWRcbiAgICB8IFBhcnRpYWwgXyAgICAgICAgICAgICAgLT4gTm9uZVxuXG5lbmRcblxuKCoqIEJFR0lOOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCByZWMgcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2MgPVxuICAoKiBbcHJvbXB0XSBzaG91bGQgb25seSBjYWxsIFtzdWNjXSBpZiBpdCBoYXMgcmVjZWl2ZWQgbW9yZSBpbnB1dC4gSWYgdGhlcmVcbiAgICogaXMgbm8gY2hhbmNlIHRoYXQgdGhlIGlucHV0IHdpbGwgZ3JvdywgaS5lLiwgW21vcmUgPSBDb21wbGV0ZV0sIHRoZW5cbiAgICogW3Byb21wdF0gc2hvdWxkIGNhbGwgW2ZhaWxdLiBPdGhlcndpc2UgKGluIHRoZSBjYXNlIHdoZXJlIHRoZSBpbnB1dFxuICAgKiBoYXNuJ3QgZ3Jvd24gYnV0IFttb3JlID0gSW5jb21wbGV0ZV0ganVzdCBwcm9tcHQgYWdhaW4uICopXG4gIGxldCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgaW5wdXQgaW5cbiAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgICBpbnB1dCBpblxuICAoKiBUaGUgY29udGludWF0aW9uIHNob3VsZCBub3QgaG9sZCBhbnkgcmVmZXJlbmNlcyB0byBpbnB1dCBhYm92ZS4gKilcbiAgbGV0IGNvbnRpbnVlIGlucHV0IH5vZmYgfmxlbiBtb3JlID1cbiAgICBpZiBsZW4gPCBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgZmFpbHdpdGggXCJwcm9tcHQ6IGlucHV0IHNocnVuayFcIjtcbiAgICBsZXQgaW5wdXQgPSBJbnB1dC5jcmVhdGUgaW5wdXQgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXM6cGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpblxuICAgIGlmIGxlbiA9IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIE1vcmUuQ29tcGxldGVcbiAgICAgIHwgSW5jb21wbGV0ZSAtPiBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmVcbiAgaW5cbiAgU3RhdGUuUGFydGlhbCB7IGNvbW1pdHRlZCA9IElucHV0LmJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IGlucHV0OyBjb250aW51ZSB9XG5cbmxldCBkZW1hbmRfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCAobW9yZSA6IE1vcmUudCkgd2l0aFxuICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwibm90IGVub3VnaCBpbnB1dFwiXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwibm90IGVub3VnaCBpbnB1dFwiIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgPVxuICBsZXQgcmVjIGdvID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJyAtPlxuICAgICAgaWYgcG9zJyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0JyB0aGVuXG4gICAgICAgIHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpXG4gICAgICBlbHNlXG4gICAgICAgIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsJyBzdWNjJ1xuICAgIH1cbiAgaW5cbiAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuXG5sZXQgdW5zYWZlX2FwcGx5IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYpXG4gIH1cblxubGV0IHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZiB3aXRoXG4gICAgfCBFcnJvciBlIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gZVxuICAgIHwgT2sgICAgeCAtPiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgeFxuICB9XG5cbmxldCBlbnN1cmUgbiBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9IHAucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG4oKiogRU5EOiBnZXR0aW5nIGlucHV0ICopXG5cbmxldCBhdF9lbmRfb2ZfaW5wdXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBmYWxzZVxuICAgIGVsc2UgbWF0Y2ggbW9yZSB3aXRoXG4gICAgfCBDb21wbGV0ZSAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHRydWVcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgZmFsc2VcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgdHJ1ZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbmRfb2ZfaW5wdXQgPVxuICBhdF9lbmRfb2ZfaW5wdXRcbiAgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlICAtPiByZXR1cm4gKClcbiAgICB8IGZhbHNlIC0+IGZhaWwgXCJlbmRfb2ZfaW5wdXRcIlxuXG5sZXQgYWR2YW5jZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiYWR2YW5jZVwiXG4gIGVsc2VcbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgKHBvcyArIG4pIG1vcmUgKCkgfVxuICAgIGluXG4gICAgZW5zdXJlIG4gcFxuXG5sZXQgcG9zID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IHBvcyBtb3JlIHBvcyB9XG5cbmxldCBhdmFpbGFibGUgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQubGVuZ3RoIGlucHV0IC0gcG9zKVxuICB9XG5cbmxldCBjb21taXQgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgSW5wdXQuY29tbWl0IGlucHV0IHBvcztcbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlICgpIH1cblxuKCogRG8gbm90IHVzZSB0aGlzIGlmIFtwXSBjb250YWlucyBhIFtjb21taXRdLiAqKVxubGV0IHVuc2FmZV9sb29rYWhlYWQgcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdWNjJyBpbnB1dCcgXyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zIG1vcmUnIHYgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHBlZWtfY2hhciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykpXG4gICAgZWxzZSBpZiBtb3JlID0gQ29tcGxldGUgdGhlblxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoU29tZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnKSlcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgTm9uZSBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbigqIFRoaXMgcGFyc2VyIGlzIHRvbyBpbXBvcnRhbnQgdG8gbm90IGJlIG9wdGltaXplZC4gRG8gYSBjdXN0b20gam9iLiAqKVxubGV0IHJlYyBwZWVrX2NoYXJfZmFpbCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gc3VjYyBpbnB1dCBwb3MgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBwZWVrX2NoYXJfZmFpbC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBzYXRpc2Z5IGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXQgdGhlblxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBmIGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPVxuICAgICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJyBpblxuICAgICAgICBpZiBmIGNcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0JyAocG9zJyArIDEpIG1vcmUnIGNcbiAgICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgICBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyA9IGNcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgbm90X2NoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjJyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGMgPD4gYydcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjJ1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcIm5vdCBjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfY2hhciA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSAgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBpbnQ4IGkgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IENoYXIuY29kZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgaW5cbiAgICAgIGlmIGMgPSBpIGxhbmQgMHhmZlxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJpbnQ4ICVkXCIgaSkgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfdWludDggPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIChDaGFyLmNvZGUgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBhbnlfaW50OCA9XG4gICgqIGh0dHBzOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjVmFyaWFibGVTaWduRXh0ZW5kUmlza3kgKilcbiAgbGV0IHMgPSBTeXMuaW50X3NpemUgLSA4IGluXG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKChDaGFyLmNvZGUgYyBsc2wgcykgYXNyIHMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgc2tpcCBmID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgaWYgZiAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcylcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKVxuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwic2tpcFwiIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgcmVjIGNvdW50X3doaWxlIH5pbml0IH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IChwb3MgKyBpbml0KSB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgIGxldCBpbml0JyAgICAgICA9IGluaXQgKyBsZW4gaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBwb3MgKyBpbml0JyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGluaXQnKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmluaXQnIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBpbml0JykgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgcmVjIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCBwb3MgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICAoKiBDaGVjayBpZiB0aGUgbG9vcCB0ZXJtaW5hdGVkIGJlY2F1c2UgaXQgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dFxuICAgICAqIGJ1ZmZlci4gSWYgc28sIHRoZW4gcHJvbXB0IGZvciBhZGRpdGlvbmFsIGlucHV0IGFuZCBjb250aW51ZS4gKilcbiAgICBpZiBsZW4gPCAxXG4gICAgdGhlblxuICAgICAgaWYgcG9zIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgICAgdGhlbiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICAoY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgICBpblxuICAgICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gICAgZWxzZSBpZiBwb3MgKyBsZW4gPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBsZW4pIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgKGNvdW50X3doaWxlIH5pbml0OmxlbiB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgbGVuKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgICAgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgc3RyaW5nXyBmIHMgPVxuICAoKiBYWFgoc2VsaW9wb3UpOiBJbmVmZmljaWVudC4gQ291bGQgY2hlY2sgcHJlZml4IGVxdWFsaXR5IHRvIHNob3J0LWNpcmN1aXRcbiAgICogdGhlIGlvLiAqKVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGVuc3VyZSAgbGVuICh1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZjooZnVuIGJ1ZmZlciB+b2ZmIH5sZW4gLT5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgd2hpbGUgIWkgPCBsZW4gJiYgQ2hhci5lcXVhbCAoZiAoQmlnc3RyaW5nYWYudW5zYWZlX2dldCBidWZmZXIgKG9mZiArICFpKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZiAoU3RyaW5nLnVuc2FmZV9nZXQgcyAhaSkpXG4gICAgZG9cbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgaWYgbGVuID0gIWlcbiAgICB0aGVuIE9rIChCaWdzdHJpbmdhZi5zdWJzdHJpbmcgYnVmZmVyIH5vZmYgfmxlbilcbiAgICBlbHNlIEVycm9yIFwic3RyaW5nXCIpKVxuXG5sZXQgc3RyaW5nIHMgICAgPSBzdHJpbmdfIChmdW4geCAtPiB4KSBzXG5sZXQgc3RyaW5nX2NpIHMgPSBzdHJpbmdfIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IHNraXBfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuXG5sZXQgdGFrZSBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZTogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLnN1YnN0cmluZylcblxubGV0IHRha2VfYmlnc3RyaW5nIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlX2JpZ3N0cmluZzogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mOkJpZ3N0cmluZ2FmLmNvcHkpXG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3RpbGwgZiA9XG4gIHRha2VfYmlnc3RyaW5nX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBwZWVrX3N0cmluZyBuID1cbiAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuKVxuXG5sZXQgdGFrZV93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2VfdGlsbCBmID1cbiAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgY2hvaWNlID8oZmFpbHVyZV9tc2c9XCJubyBtb3JlIGNob2ljZXNcIikgcHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgKDx8PikgcHMgKGZhaWwgZmFpbHVyZV9tc2cpXG5cbmxldCBmaXhfZGlyZWN0IGYgPVxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4X2xhenkgfm1heF9zdGVwcyBmID1cbiAgbGV0IHN0ZXBzID0gcmVmIG1heF9zdGVwcyBpblxuICBsZXQgcmVjIHAgPSBsYXp5IChmIHIpXG4gIGFuZCByID0geyBydW4gPSBmdW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGRlY3Igc3RlcHM7XG4gICAgaWYgIXN0ZXBzIDwgMFxuICAgIHRoZW4gKFxuICAgICAgc3RlcHMgOj0gbWF4X3N0ZXBzO1xuICAgICAgU3RhdGUuTGF6eSAobGF6eSAoKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MpKSlcbiAgICBlbHNlXG4gICAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjY1xuICAgICAgICAgIH1cbiAgaW5cbiAgclxuXG5sZXQgZml4ID0gbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgTmF0aXZlIC0+IGZpeF9kaXJlY3RcbiAgfCBCeXRlY29kZSAtPiBmaXhfZGlyZWN0XG4gIHwgT3RoZXIgXyAtPiBmdW4gZiAtPiBmaXhfbGF6eSB+bWF4X3N0ZXBzOjIwIGZcblxubGV0IG9wdGlvbiB4IHAgPVxuICBwIDx8PiByZXR1cm4geFxuXG5sZXQgY29ucyB4IHhzID0geCA6OiB4c1xuXG5sZXQgcmVjIGxpc3QgcHMgPVxuICBtYXRjaCBwcyB3aXRoXG4gIHwgW10gICAgLT4gcmV0dXJuIFtdXG4gIHwgcDo6cHMgLT4gbGlmdDIgY29ucyBwIChsaXN0IHBzKVxuXG5sZXQgY291bnQgbiBwID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwiY291bnQ6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IDAgLT4gcmV0dXJuIFtdXG4gICAgICB8IG4gLT4gbGlmdDIgY29ucyBwIChsb29wIChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIG5cblxubGV0IG1hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAobGlmdDIgY29ucyBwIG0pIDx8PiByZXR1cm4gW10pXG5cbmxldCBtYW55MSBwID1cbiAgbGlmdDIgY29ucyBwIChtYW55IHApXG5cbmxldCBtYW55X3RpbGwgcCB0ID1cbiAgZml4IChmdW4gbSAtPlxuICAgICh0ICo+IHJldHVybiBbXSkgPHw+IChsaWZ0MiBjb25zIHAgbSkpXG5cbmxldCBzZXBfYnkxIHMgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICBsaWZ0MiBjb25zIHAgKChzICo+IG0pIDx8PiByZXR1cm4gW10pKVxuXG5sZXQgc2VwX2J5IHMgcCA9XG4gIChsaWZ0MiBjb25zIHAgKChzICo+IHNlcF9ieTEgcyBwKSA8fD4gcmV0dXJuIFtdKSkgPHw+IHJldHVybiBbXVxuXG5sZXQgc2tpcF9tYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgICAoKHAgPj58IGZ1biBfIC0+IHRydWUpIDx8PiByZXR1cm4gZmFsc2UpID4+PSBmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IG1cbiAgICAgIHwgZmFsc2UgLT4gcmV0dXJuICgpXG4gICAgKVxuXG5sZXQgc2tpcF9tYW55MSBwID1cbiAgcCAqPiBza2lwX21hbnkgcFxuXG5sZXQgZW5kX29mX2xpbmUgPVxuICAoY2hhciAnXFxuJyAqPiByZXR1cm4gKCkpIDx8PiAoc3RyaW5nIFwiXFxyXFxuXCIgKj4gcmV0dXJuICgpKSA8Pz4gXCJlbmRfb2ZfbGluZVwiXG5cbmxldCBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGF0ZSA9IHJlZiBzdGF0ZSBpblxuICAgIGxldCBwYXJzZXIgPVxuICAgICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjooZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggZiAhc3RhdGUgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgc3RhdGUnIC0+IHN0YXRlIDo9IHN0YXRlJzsgdHJ1ZSlcbiAgICAgIH53aXRoX2J1ZmZlclxuICAgICAgPj58IGZ1biB4IC0+IHgsICFzdGF0ZVxuICAgIGluXG4gICAgcGFyc2VyLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuXG5sZXQgc2NhbiBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCBzY2FuX3N0YXRlIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcbiAgPj58IGZ1biAoKCksIHN0YXRlKSAtPiBzdGF0ZVxuXG5sZXQgc2Nhbl9zdHJpbmcgc3RhdGUgZiA9XG4gIHNjYW4gc3RhdGUgZiA+PnwgZnN0XG5cbmxldCBjb25zdW1lX3dpdGggcCBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXJ0ID0gcG9zIGluXG4gICAgbGV0IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0ICBpblxuICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID1cbiAgICAgIGlmIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPD4gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCdcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvbnN1bWVkOiBwYXJzZXIgY29tbWl0dGVkXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID0gcG9zJyAtIHN0YXJ0IGluXG4gICAgICAgIGxldCBjb25zdW1lZCA9IElucHV0LmFwcGx5IGlucHV0JyBzdGFydCBsZW4gfmYgaW5cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBjb25zdW1lZClcbiAgICBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgfVxuXG5sZXQgY29uc3VtZWQgICAgICAgICAgIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5zdWJzdHJpbmdcbmxldCBjb25zdW1lZF9iaWdzdHJpbmcgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IGJvdGggYSBiID0gbGlmdDIgKGZ1biBhIGIgLT4gYSwgYikgYSBiXG5sZXQgbWFwIHQgfmYgPSB0ID4+fCBmXG5sZXQgYmluZCB0IH5mID0gdCA+Pj0gZlxubGV0IG1hcDIgYSBiIH5mID0gbGlmdDIgZiBhIGJcbmxldCBtYXAzIGEgYiBjIH5mID0gbGlmdDMgZiBhIGIgY1xubGV0IG1hcDQgYSBiIGMgZCB+ZiA9IGxpZnQ0IGYgYSBiIGMgZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgbWFwID0gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IGJvdGggPSBib3RoXG4gICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgbGV0IG1hcDMgPSBtYXAzXG4gICAgbGV0IG1hcDQgPSBtYXA0XG4gIGVuZFxuZW5kXG5cbmxldCAoIGxldCsgKSA9ICggPj58IClcbmxldCAoIGxldCogKSA9ICggPj49IClcbmxldCAoIGFuZCsgKSA9IGJvdGhcblxubW9kdWxlIEJFID0gc3RydWN0XG4gICgqIFhYWChzZWxpb3BvdSk6IFRoZSBwYXR0ZXJuIGluIGJvdGggdGhpcyBtb2R1bGUgYW5kIFtMRV0gYXJlIGEgY29tcHJvbWlzZVxuICAgKiBiZXR3ZWVuIGVmZmljaWVuY3kgYW5kIGNvZGUgcmV1c2UuIEJ5IGlubGluaW5nIFtlbnN1cmVdIHlvdSBjYW4gcmVjb3ZlclxuICAgKiBhYm91dCAyIG5hbm9zZWNvbmRzIG9uIGF2ZXJhZ2UuIFRoYXQgbWF5IGFkZCB1cCBpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXR0ZXJuIGRvZXMgbm90IGFsbG9jYXRlIGluIHRoZSBmYXN0IChzdWNjZXNzKSBwYXRoLlxuICAgKiAqKVxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2JlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBMRSA9IHN0cnVjdFxuICBsZXQgaW50MTYgbiA9XG4gICAgbGV0IGJ5dGVzID0gMiBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2ludDE2X2xlIGlucHV0IHBvcyA9IChuIGxhbmQgMHhmZmZmKVxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDE2XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50MzIgbiA9XG4gICAgbGV0IGJ5dGVzID0gNCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQzMi5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQzMl9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQzMlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDY0IG4gPVxuICAgIGxldCBieXRlcyA9IDggaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50NjQuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50NjRfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50NjRcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdGFrZSBuIGYgPVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZilcblxuICBsZXQgcGVlayBuIGYgPVxuICAgIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbiBmKVxuXG4gIGxldCB0YWtlX3doaWxlIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV93aGlsZTEgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUxIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2VfdGlsbCBjaGVjayBmID1cbiAgICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGNoZWNrIGMpKSBmXG5lbmRcblxubW9kdWxlIENvbnN1bWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFByZWZpeFxuICAgIHwgQWxsXG5lbmRcblxubGV0IHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzID1cbiAgbGV0IHAgPVxuICAgIG1hdGNoIChjb25zdW1lIDogQ29uc3VtZS50KSB3aXRoXG4gICAgfCBQcmVmaXggLT4gcFxuICAgIHwgQWxsIC0+IHAgPCogZW5kX29mX2lucHV0XG4gIGluXG4gIFVuYnVmZmVyZWQucGFyc2VfYmlnc3RyaW5nIHAgYnNcblxubGV0IHBhcnNlX3N0cmluZyB+Y29uc3VtZSBwIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBicyAgPSBCaWdzdHJpbmdhZi5jcmVhdGUgbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIHMgfnNyY19vZmY6MCBicyB+ZHN0X29mZjowIH5sZW47XG4gIHBhcnNlX2JpZ3N0cmluZyB+Y29uc3VtZSBwIGJzXG4iLCIoKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgQW5pbCBNYWRoYXZhcGVkZHkgPGFuaWxAcmVjb2lsLm9yZz5cbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IERhdmlkIFNoZWV0cyA8c2hlZXRzQGFsdW0ubWl0LmVkdT5cbiAqXG4gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbiAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmVcbiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVNcbiAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SXG4gKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTXG4gKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU5cbiAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GXG4gKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuICpcbiAqKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG50eXBlIGNvbXBvbmVudCA9IFtcbiAgfCBgU2NoZW1lXG4gIHwgYEF1dGhvcml0eVxuICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYFBhdGhcbiAgfCBgUXVlcnlcbiAgfCBgUXVlcnlfa2V5XG4gIHwgYFF1ZXJ5X3ZhbHVlXG4gIHwgYEZyYWdtZW50XG4gIHwgYEdlbmVyaWNcbiAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpICgqIChjb21wb25lbnQgKiBzYWZlIGNoYXJzICogdW5zYWZlIGNoYXJzKSAqKVxuXVxuXG50eXBlIHBjdF9lbmNvZGVyID0ge1xuICAgIHNjaGVtZTogY29tcG9uZW50O1xuICAgIHVzZXJpbmZvOiBjb21wb25lbnQ7XG4gICAgaG9zdDogY29tcG9uZW50O1xuICAgIHBhdGg6IGNvbXBvbmVudDtcbiAgICBxdWVyeV9rZXk6IGNvbXBvbmVudDtcbiAgICBxdWVyeV92YWx1ZTogY29tcG9uZW50O1xuICAgIGZyYWdtZW50OiBjb21wb25lbnQ7XG4gIH1cblxubGV0IHJlYyBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmID0gZnVuY3Rpb25cbiAgfCBsYXN0OjpbXSAtPiBmbiBidWYgbGFzdFxuICB8IGVsOjpyZXN0IC0+XG4gICAgZm4gYnVmIGVsO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzZXA7XG4gICAgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiByZXN0XG4gIHwgW10gLT4gKClcblxubGV0IHJldl9pbnRlcmplY3QgZSBsc3QgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gIC0+IGFjY1xuICAgIHwgeDo6eHMgLT4gYXV4ICh4OjplOjphY2MpIHhzXG4gIGluIG1hdGNoIGxzdCB3aXRoXG4gIHwgW10gIC0+IFtdXG4gIHwgaDo6dCAtPiBhdXggW2hdIHRcblxubGV0IGNvbXBhcmVfb3B0IGMgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBOb25lLCAgIE5vbmUgICAtPiAwXG4gIHwgU29tZSBfLCBOb25lICAgLT4gMVxuICB8IE5vbmUsICAgU29tZSBfIC0+IC0xXG4gIHwgU29tZSBhLCBTb21lIGIgLT4gYyBhIGJcblxubGV0IHJlYyBjb21wYXJlX2xpc3QgZiB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IFtdLCAgICBbXSAgICAtPiAgMFxuICB8IF86Ol8sICBbXSAgICAtPiAgMVxuICB8IFtdLCAgICBfOjpfICAtPiAtMVxuICB8IHg6OnhzLCB5Ojp5cyAtPlxuICAgIG1hdGNoIGYgeCB5IHdpdGggMCAtPiBjb21wYXJlX2xpc3QgZiB4cyB5cyB8IGMgLT4gY1xuXG4oKiogU2FmZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsd2F5cyBhbGxvd2VkIGluIGEgVVJJXG4gICogVW5mb3J0dW5hdGVseSwgdGhpcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIGJpdCBvZiB0aGUgVVJJXG4gICogaXMgYmVpbmcgcGFyc2VkLCBzbyB0aGVyZSBhcmUgbXVsdGlwbGUgdmFyaWFudHMgKGFuZCB0aGlzXG4gICogc2V0IGlzIHByb2JhYmx5IG5vdCBleGhhdXN0aXZlLiBUT0RPOiBjaGVjay5cbiopXG50eXBlIHNhZmVfY2hhcnMgPSBib29sIGFycmF5XG5cbm1vZHVsZSB0eXBlIFNjaGVtZSA9IHNpZ1xuICB2YWwgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IDogY29tcG9uZW50IC0+IHNhZmVfY2hhcnNcbiAgdmFsIG5vcm1hbGl6ZV9ob3N0IDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgY2Fub25pY2FsaXplX3BvcnQgOiBpbnQgb3B0aW9uIC0+IGludCBvcHRpb25cbiAgdmFsIGNhbm9uaWNhbGl6ZV9wYXRoIDogc3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3RcbmVuZFxuXG5tb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSA9IHN0cnVjdFxuICBsZXQgc3ViX2RlbGltcyBhID1cbiAgICBsZXQgc3ViZCA9IFwiISQmJygpKissOz1cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHN1YmQgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBzdWJkLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIDI1NiBmYWxzZSBpblxuICAgIGxldCBhbHdheXNfc2FmZSA9XG4gICAgICBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Xy4tflwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggYWx3YXlzX3NhZmUgLSAxIGRvXG4gICAgICBsZXQgYyA9IENoYXIuY29kZSBhbHdheXNfc2FmZS5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgcGNoYXIgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgc2FmZV9jaGFycykgaW5cbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnQCcpIDwtIHRydWU7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9zY2hlbWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIHRydWU7XG4gICAgYVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSBwYXRoIGNvbXBvbmVudCBvZiBhIFVSSSAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfcGF0aCA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBwY2hhcikgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IDogc2FmZV9jaGFycyA9XG4gICAgKCogVE9ETzogV2hhdCBhYm91dCB7XCIhXCIsXCIkXCIsXCIsXCJ9PyBTZWUgPGh0dHBzOi8vZ2l0aHViLmNvbS9hdnNtL29jYW1sLXVyaS9jb21taXQvMWVmM2YxZGZiNDFiZGI0ZjMzZjIyM2ZmZTE2ZTYyYTMzOTc1NjYxYSNkaWZmLTc0MGYyZGU1M2M5ZWIzNmU5NjcwZGRmYmRiOWJhOTE0UjE3MT4gKilcbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgcGNoYXIgaW5cbiAgICBhLihDaGFyLmNvZGUgJy8nKSA8LSB0cnVlO1xuICAgIGEuKENoYXIuY29kZSAnPycpIDwtIHRydWU7XG4gICAgKCogJyYnIGlzIHNhZmUgYnV0IHdlIHNob3VsZCBlbmNvZGUgbGl0ZXJhbHMgdG8gYXZvaWQgYW1iaWd1aXR5XG4gICAgICAgd2l0aCB0aGUgYWxyZWFkeSBwYXJzZWQgcXMgcGFyYW1zICopXG4gICAgYS4oQ2hhci5jb2RlICcmJykgPC0gZmFsc2U7XG4gICAgKCogJzsnIGlzIHNhZmUgYnV0IHNvbWUgc3lzdGVtcyB0cmVhdCBpdCBsaWtlICcmJy4gKilcbiAgICBhLihDaGFyLmNvZGUgJzsnKSA8LSBmYWxzZTtcbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnPScpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWUgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJywnKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50IDogc2FmZV9jaGFycyA9IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHVzZXJpbmZvIHN1YmNvbXBvbmVudCBvZiBhIFVSSS5cbiAgICAgIFRPRE86IHRoaXMgbmVlZHMgbW9yZSByZXNlcnZlZCBjaGFyYWN0ZXJzIGFkZGVkICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mbyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCByZWMgc2FmZV9jaGFyc19mb3JfY29tcG9uZW50ID0gZnVuY3Rpb25cbiAgICB8IGBQYXRoIC0+IHNhZmVfY2hhcnNfZm9yX3BhdGhcbiAgICB8IGBVc2VyaW5mbyAtPiBzYWZlX2NoYXJzX2Zvcl91c2VyaW5mb1xuICAgIHwgYFF1ZXJ5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5XG4gICAgfCBgUXVlcnlfa2V5IC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleVxuICAgIHwgYFF1ZXJ5X3ZhbHVlIC0+IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlXG4gICAgfCBgRnJhZ21lbnQgLT4gc2FmZV9jaGFyc19mb3JfZnJhZ21lbnRcbiAgICB8IGBTY2hlbWUgLT4gc2FmZV9jaGFyc19mb3Jfc2NoZW1lXG4gICAgfCBgQ3VzdG9tICgoY29tcG9uZW50IDogY29tcG9uZW50KSwgc2FmZSwgdW5zYWZlKSAtPlxuICAgICAgIGxldCBzYWZlX2NoYXJzID0gQXJyYXkuY29weSAoc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCkgaW5cbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIHRydWVcbiAgICAgICBkb25lO1xuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHVuc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHVuc2FmZS5baV0gaW5cbiAgICAgICAgIHNhZmVfY2hhcnMuKGMpIDwtIGZhbHNlXG4gICAgICAgZG9uZTtcbiAgICAgICBzYWZlX2NoYXJzXG4gICAgfCBgR2VuZXJpY1xuICAgIHwgXyAtPiBzYWZlX2NoYXJzXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzbyA9IGhzb1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCBwb3J0ID0gcG9ydFxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggcGF0aCA9IHBhdGhcbmVuZFxuXG5tb2R1bGUgSHR0cCA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA4MCAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtcIi9cIl1cbiAgICB8IHggIC0+IHhcbmVuZFxuXG5tb2R1bGUgSHR0cHMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIdHRwXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSA0NDMgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuZW5kXG5cbm1vZHVsZSBGaWxlIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9XG4gICAgbGV0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBocyBpblxuICAgIGlmIGhzPVwibG9jYWxob3N0XCIgdGhlbiBcIlwiIGVsc2UgaHNcbmVuZFxuXG5tb2R1bGUgVXJuIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG5lbmRcblxubGV0IG1vZHVsZV9vZl9zY2hlbWUgPSBmdW5jdGlvblxuICB8IFNvbWUgcyAtPiBiZWdpbiBtYXRjaCBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHMgd2l0aFxuICAgICAgfCBcImh0dHBcIiAtPiAobW9kdWxlIEh0dHAgOiBTY2hlbWUpXG4gICAgICB8IFwiaHR0cHNcIiAgLT4gKG1vZHVsZSBIdHRwcyA6IFNjaGVtZSlcbiAgICAgIHwgXCJmaWxlXCIgLT4gKG1vZHVsZSBGaWxlIDogU2NoZW1lKVxuICAgICAgfCBcInVyblwiICAtPiAobW9kdWxlIFVybiA6IFNjaGVtZSlcbiAgICAgIHwgXyAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG4gICAgZW5kXG4gIHwgTm9uZSAtPiAobW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUpXG5cbigqKiBQb3J0aW9ucyBvZiB0aGUgVVJMIG11c3QgYmUgY29udmVydGVkIHRvLWFuZC1mcm9tIHBlcmNlbnQtZW5jb2RpbmdcbiAgKiBhbmQgdGhpcyByZWFsbHksIHJlYWxseSBzaG91bGRuJ3QgYmUgbWl4ZWQgdXAuIFNvIHRoaXMgUGN0IG1vZHVsZVxuICAqIGRlZmluZXMgYWJzdHJhY3QgUGN0LmVuY29kZWQgYW5kIFBjdC5kZWNvZGVkIHR5cGVzIHdoaWNoIHNldHMgdGhlXG4gICogc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgc3RyaW5nLiAgVGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBcImNhc3RcIiB0b1xuICAqIGFuZCBmcm9tIHRoZXNlIGFuZCBub3JtYWwgc3RyaW5ncywgYW5kIHRoaXMgcHJvbW90ZXMgYSBiaXQgb2ZcbiAgKiBpbnRlcm5hbCBzYWZldHkuICBUaGVzZSB0eXBlcyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIGV4dGVybmFsXG4gICogaW50ZXJmYWNlLCBhcyBjYXN0aW5nIHRvLWFuZC1mcm9tIGlzIHF1aXRlIGEgYml0IG9mIGhhc3NsZSBhbmRcbiAgKiBwcm9iYWJseSBub3QgYSBsb3Qgb2YgdXNlIHRvIHRoZSBhdmVyYWdlIGNvbnN1bWVyIG9mIHRoaXMgbGlicmFyeVxuKilcbm1vZHVsZSBQY3QgOiBzaWdcbiAgdHlwZSBlbmNvZGVkXG4gIHR5cGUgZGVjb2RlZFxuXG4gIHZhbCBlbmNvZGUgOiA/c2NoZW1lOnN0cmluZyAtPiA/Y29tcG9uZW50OmNvbXBvbmVudCAtPiBkZWNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIGRlY29kZSA6IGVuY29kZWQgLT4gZGVjb2RlZFxuXG4gICgqIFRoZSBlbXB0eSBkZWNvZGVkIHN0cmluZyAqKVxuICB2YWwgZW1wdHlfZGVjb2RlZCA6IGRlY29kZWRcbiAgKCogSWRlbnRpdHkgZnVuY3Rpb25zIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBjYXN0IHdoZW4gdXNpbmcgdGhlbSBiZWxvdyAqKVxuICB2YWwgY2FzdF9lbmNvZGVkIDogc3RyaW5nIC0+IGVuY29kZWRcbiAgdmFsIGNhc3RfZGVjb2RlZCA6IHN0cmluZyAtPiBkZWNvZGVkXG4gIHZhbCB1bmNhc3RfZW5jb2RlZCA6IGVuY29kZWQgLT4gc3RyaW5nXG4gIHZhbCB1bmNhc3RfZGVjb2RlZCA6IGRlY29kZWQgLT4gc3RyaW5nXG4gICgqIExpZnQgSE9GcyBmb3IgbWFwcyBvdmVyIGVuY29kaW5ncywgZGVjb2RpbmdzLCBhbmQgc3RyaW5ncyAqKVxuICB2YWwgbGlmdF9lbmNvZGVkIDogKGVuY29kZWQgLT4gZW5jb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgbGlmdF9kZWNvZGVkIDogKGRlY29kZWQgLT4gZGVjb2RlZCkgLT4gc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgdW5saWZ0X2VuY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZW5jb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBkZWNvZGVkIC0+IGRlY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkMiA6IChzdHJpbmcgLT4gc3RyaW5nIC0+ICdhKSAtPiBkZWNvZGVkIC0+IGRlY29kZWQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVuY29kZWQgPSBzdHJpbmdcbiAgdHlwZSBkZWNvZGVkID0gc3RyaW5nXG4gIGxldCBjYXN0X2VuY29kZWQgeCA9IHhcbiAgbGV0IGNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgZW1wdHlfZGVjb2RlZCA9IFwiXCJcbiAgbGV0IHVuY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCB1bmNhc3RfZW5jb2RlZCB4ID0geFxuXG4gIGxldCBsaWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IGxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2VuY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZDIgZiA9IGZcblxuICAoKiogU2NhbiBmb3IgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhbmQgcmVwbGFjZSB0aGVtIHdpdGhcbiAgICAgIHBlcmNlbnQtZW5jb2RlZCBlcXVpdmFsZW50cy5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBlbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgYiA9XG4gICAgbGV0IG1vZHVsZSBTY2hlbWUgPSAodmFsIChtb2R1bGVfb2Zfc2NoZW1lIHNjaGVtZSkgOiBTY2hlbWUpIGluXG4gICAgbGV0IHNhZmVfY2hhcnMgPSBTY2hlbWUuc2FmZV9jaGFyc19mb3JfY29tcG9uZW50IGNvbXBvbmVudCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBjID0gQ2hhci5jb2RlIGIuW2N1cl0gaW5cbiAgICAgICAgaWYgc2FmZV9jaGFycy4oYykgdGhlblxuICAgICAgICAgIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgaWYgY3VyID4gc3RhcnQgdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFByaW50Zi5zcHJpbnRmIFwiJSUlMDJYXCIgYyk7XG4gICAgICAgICAgc2NhbiAoY3VyKzEpIChjdXIrMSlcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgaW50X29mX2hleF9jaGFyIGMgPVxuICAgIGxldCBjID0gaW50X29mX2NoYXIgKENoYXIudXBwZXJjYXNlX2FzY2lpIGMpIC0gNDggaW5cbiAgICBpZiBjID4gOVxuICAgIHRoZW4gaWYgYyA+IDE2ICYmIGMgPCAyM1xuICAgICAgdGhlbiBjIC0gN1xuICAgICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG4gICAgZWxzZSBpZiBjID49IDBcbiAgICB0aGVuIGNcbiAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcblxuICAoKiogU2NhbiBmb3IgcGVyY2VudC1lbmNvZGluZyBhbmQgY29udmVydCB0aGVtIGludG8gQVNDSUkuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1kZWNvZGVkIHN0cmluZyAqKVxuICBsZXQgZGVjb2RlIGIgPVxuICAgICgqIFRPRE86IFNob3VsZCBib3RoIHN0cmljdCBhbmQgbm9uLXN0cmljdCB2ZXJzaW9ucyBiZSBleHBvc2VkPyAqKVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIHNjYW4gc3RhcnQgY3VyID1cbiAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KVxuICAgICAgZWxzZSBpZiBiLltjdXJdID0gJyUnIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICclJ1xuICAgICAgICBlbHNlIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgIHNjYW4gY3VyIGN1clxuICAgICAgICB8IGhpZ2hiaXRzIC0+IGJlZ2luXG4gICAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV1cbiAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgbGV0IHN0YXJ0X2F0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICAgICAgICB8IGxvd2JpdHMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociAoaGlnaGJpdHMgbHNsIDQgKyBsb3diaXRzKSk7XG4gICAgICAgICAgICAgICAgY3VyKzFcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdO1xuICAgICAgICAgICAgICAgIGN1clxuICAgICAgICAgICAgaW4gc2NhbiBzdGFydF9hdCBzdGFydF9hdFxuICAgICAgICAgIGVuZFxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIHNjYW4gc3RhcnQgKGN1cisxKVxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuZW5kXG5cbigqIFBlcmNlbnQgZW5jb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2VuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBzID1cbiAgUGN0Lih1bmNhc3RfZW5jb2RlZCAoZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCAoY2FzdF9kZWNvZGVkIHMpKSlcblxubGV0IHBjdF9lbmNvZGVyXG4gICAgICA/KHNjaGVtZT1gU2NoZW1lKVxuICAgICAgPyh1c2VyaW5mbz1gVXNlcmluZm8pXG4gICAgICA/KGhvc3Q9YEhvc3QpXG4gICAgICA/KHBhdGg9YFBhdGgpXG4gICAgICA/KHF1ZXJ5X2tleT1gUXVlcnlfa2V5KVxuICAgICAgPyhxdWVyeV92YWx1ZT1gUXVlcnlfdmFsdWUpXG4gICAgICA/KGZyYWdtZW50PWBGcmFnbWVudClcbiAgICAgICgpID1cbiAgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwYXRoOyBxdWVyeV9rZXk7IHF1ZXJ5X3ZhbHVlOyBmcmFnbWVudCB9XG5cbigqIFBlcmNlbnQgZGVjb2RlIGEgc3RyaW5nICopXG5sZXQgcGN0X2RlY29kZSBzID0gUGN0Lih1bmNhc3RfZGVjb2RlZCAoZGVjb2RlIChjYXN0X2VuY29kZWQgcykpKVxuXG4oKiBVc2VyaW5mbyBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGlkICogY3JlZGVudGlhbCBwYWlyICopXG5tb2R1bGUgVXNlcmluZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nIG9wdGlvblxuXG4gIGxldCBjb21wYXJlICh1LHApICh1JyxwJykgPVxuICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIHUgdScgd2l0aFxuICAgIHwgMCAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSBwIHAnXG4gICAgfCBjIC0+IGNcblxuICBsZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCB1cyA9XG4gICAgbWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5tYXg6MiB+b246JzonIHVzIHdpdGhcbiAgICB8IFtdIC0+IChcIlwiLE5vbmUpXG4gICAgfCBbdV0gLT4gKHBjdF9kZWNvZGUgdSxOb25lKVxuICAgIHwgdTo6cDo6XyAtPiAocGN0X2RlY29kZSB1LFNvbWUgKHBjdF9kZWNvZGUgcCkpXG5cbiAgbGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ICh1LHBvKSA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy4oXG4gICAgICAxICsgKGxlbmd0aCB1KSArIChtYXRjaCBwbyB3aXRoIE5vbmUgLT4gMCB8IFNvbWUgcCAtPiBsZW5ndGggcCkpXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHUpO1xuICAgIGJlZ2luIG1hdGNoIHBvIHdpdGggTm9uZSAtPiAoKTtcbiAgICB8IFNvbWUgcCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHApXG4gICAgZW5kO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5lbmRcblxubGV0IHVzZXJpbmZvX29mX2VuY29kZWQgPSBVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgPSBVc2VyaW5mby5lbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBQYXRoIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYSBsaXN0IG9mIHBhdGggdG9rZW5zICopXG5tb2R1bGUgUGF0aCA9IHN0cnVjdFxuICAoKiBJbnZhcmlhbnQ6IGV2ZXJ5IGVsZW1lbnQgaXMgbm9uLXplcm8sIHNsYXNoZXMgKC8pIG9ubHkgb2NjdXIgYWxvbmUuICopXG4gICgqIFllcywgaXQncyBiZXR0ZXIgdGhpcyB3YXkuIFRoaXMgbWVhbnMgeW91IGNhbiByZXRhaW4gc2VwYXJhdG9yXG4gICAgIGNvbnRleHQgaW4gcmVjdXJzaW9uIChlLmcuIHJlbW92ZV9kb3Rfc2VnbWVudHMgZm9yIHJlbGF0aXZlIHJlc29sdXRpb24pLiAqKVxuXG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmVcblxuICAoKiBNYWtlIGEgcGF0aCB0b2tlbiBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBwYXRoX29mX2VuY29kZWQgcHMgPVxuICAgIGxldCB0b2tsID0gU3RyaW5nZXh0LmZ1bGxfc3BsaXQgcHMgfm9uOicvJyBpblxuICAgIExpc3QubWFwIHBjdF9kZWNvZGUgdG9rbFxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuND4gKilcbiAgbGV0IHJlbW92ZV9kb3Rfc2VnbWVudHMgcCA9XG4gICAgbGV0IHJldnAgPSBMaXN0LnJldiBwIGluXG4gICAgbGV0IHJlYyBsb29wIGFzY2Vuc2lvbiBvdXRwID0gZnVuY3Rpb25cbiAgICAgIHwgXCIvXCI6OlwiLi5cIjo6ciB8IFwiLi5cIjo6ciAtPiBsb29wIChhc2NlbnNpb24gKyAxKSBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OlwiLlwiOjpyICB8IFwiLlwiOjpyICAtPiBsb29wIGFzY2Vuc2lvbiBvdXRwIHJcbiAgICAgIHwgXCIvXCI6OltdIHwgW10gd2hlbiBMaXN0LihsZW5ndGggcCA+IDAgJiYgaGQgcCA9IFwiL1wiKSAtPiBcIi9cIjo6b3V0cFxuICAgICAgfCBbXSB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gTGlzdC5yZXZfYXBwZW5kXG4gICAgICAgIChcIi9cIjo6KHJldl9pbnRlcmplY3QgXCIvXCIgQXJyYXkuKHRvX2xpc3QgKG1ha2UgYXNjZW5zaW9uIFwiLi5cIikpKSkgb3V0cFxuICAgICAgfCBbXSAtPiBMaXN0LihpZiBsZW5ndGggb3V0cCA+IDAgJiYgaGQgb3V0cCA9IFwiL1wiIHRoZW4gdGwgb3V0cCBlbHNlIG91dHApXG4gICAgICB8IFwiL1wiOjpcIi9cIjo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCAoXCIvXCI6OnIpXG4gICAgICB8IFwiL1wiOjpfOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIHJcbiAgICAgIHwgczo6ciAtPiBsb29wIDAgKHM6Om91dHApIHJcbiAgICBpbiBsb29wIDAgW10gcmV2cFxuXG4gIGxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50IHAgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGMgdG9rIC0+IFN0cmluZy5sZW5ndGggdG9rICsgYykgMCBwIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgLT4gZnVuY3Rpb25cbiAgICB8IFwiL1wiIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgfCBzZWcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBzZWcpXG4gICAgKSBcIlwiIGJ1ZiBwO1xuICAgIFBjdC5jYXN0X2VuY29kZWQgKEJ1ZmZlci5jb250ZW50cyBidWYpXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4zPiAqKVxuICBsZXQgbWVyZ2UgYmhvc3QgYnBhdGggcmVscGF0aCA9XG4gICAgbWF0Y2ggYmhvc3QsIExpc3QucmV2IGJwYXRoIHdpdGhcbiAgICB8IFNvbWUgXywgW10gLT4gXCIvXCI6OnJlbHBhdGhcbiAgICB8IF8sIChcIi9cIjo6cmJwYXRoIHwgXzo6XCIvXCI6OnJicGF0aCkgLT4gTGlzdC5yZXZfYXBwZW5kIChcIi9cIjo6cmJwYXRoKSByZWxwYXRoXG4gICAgfCBfLCBfIC0+IHJlbHBhdGhcbmVuZFxuXG5sZXQgcGF0aF9vZl9lbmNvZGVkID0gUGF0aC5wYXRoX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50ID0gUGF0aC5lbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFF1ZXJ5IHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gYXNzb2MgbGlzdCBvZiBrZXkvdmFsdWVzICopXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcblxuICB0eXBlIGt2ID0gKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0XG5cbiAgdHlwZSB0ID1cbiAgICB8IEtWIG9mIGt2XG4gICAgfCBSYXcgb2Ygc3RyaW5nIG9wdGlvbiAqIGt2IExhenkudFxuXG4gIGxldCBjb21wYXJlIHggeSA9IG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgS1Yga3ZsLCBLViBrdmwnXG4gICAgfCBSYXcgKF8sIGxhenkga3ZsKSwgS1Yga3ZsJ1xuICAgIHwgS1Yga3ZsLCBSYXcgKF8sIGxhenkga3ZsJykgLT5cbiAgICAgIGNvbXBhcmVfbGlzdCAoZnVuIChrLHZsKSAoaycsdmwnKSAtPlxuICAgICAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSBrIGsnIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZSB2bCB2bCdcbiAgICAgICAgfCBjIC0+IGNcbiAgICAgICkga3ZsIGt2bCdcbiAgICB8IFJhdyAocmF3LF8pLCBSYXcgKHJhdycsXykgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcmF3IHJhdydcblxuICBsZXQgZmluZCBxIGsgPSB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIHEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgc3BsaXRfcXVlcnkgcXMgPVxuICAgIGxldCBlbHMgPSBTdHJpbmdleHQuc3BsaXQgfm9uOicmJyBxcyBpblxuICAgICgqIFJlcGxhY2UgYSArIGluIGEgcXVlcnkgc3RyaW5nIHdpdGggYSBzcGFjZSBpbi1wbGFjZSAqKVxuICAgIGxldCBwbHVzX3RvX3NwYWNlIHMgPVxuICAgICAgbGV0IHMgPSBCeXRlcy51bnNhZmVfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIGZvciBpID0gMCB0byBCeXRlcy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgaWYgQnl0ZXMuZ2V0IHMgaSA9ICcrJyB0aGVuIEJ5dGVzLnNldCBzIGkgJyAnXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgKGs6OnY6Ol8pOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgayxcbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nZXh0LnNwbGl0IH5vbjonLCcgKHBsdXNfdG9fc3BhY2Ugdikgd2l0aFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IFtcIlwiXSB8IGwgLT4gbCkgaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBba106OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLCBbXSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtdOjp0bCAtPiBsb29wICgoXCJcIiwgW10pOjphY2MpIHRsXG4gICAgICB8IFtdIC0+IGFjY1xuICAgIGluXG4gICAgbWF0Y2ggZWxzIHdpdGhcbiAgICB8IFtdICAtPiBbXCJcIixbXV1cbiAgICB8IGVscyAtPiBsb29wIFtdXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4gZWwgLT4gU3RyaW5nZXh0LnNwbGl0IH5vbjonPScgZWwgfm1heDoyKSBlbHMpXG5cbiAgKCogTWFrZSBhIHF1ZXJ5IHR1cGxlIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHF1ZXJ5X29mX2VuY29kZWQgcXMgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChrLCB2KSAtPiAocGN0X2RlY29kZSBrLCBMaXN0Lm1hcCBwY3RfZGVjb2RlIHYpKVxuICAgICAgKHNwbGl0X3F1ZXJ5IHFzKVxuXG4gICgqIEFzc2VtYmxlIGEgcXVlcnkgc3RyaW5nIHN1aXRhYmxlIGZvciBwdXR0aW5nIGludG8gYSBVUkkuXG4gICAqIFR1cGxlIGlucHV0cyBhcmUgcGVyY2VudCBkZWNvZGVkIGFuZCB3aWxsIGJlIGVuY29kZWQgYnlcbiAgICogdGhpcyBmdW5jdGlvbi5cbiAgKilcbiAgbGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBhIChrLHYpIC0+XG4gICAgICAgIGEgKyAoU3RyaW5nLmxlbmd0aCBrKVxuICAgICAgICArIChMaXN0LmZvbGRfbGVmdCAoZnVuIGEgcyAtPiBhKyhTdHJpbmcubGVuZ3RoIHMpKzEpIDAgdikgKyAyKSAoLTEpIGwgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAoayx2KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X2tleSBrKTtcbiAgICAgICAgaWYgdiA8PiBbXSB0aGVuIChcbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc9JztcbiAgICAgICAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiBzIC0+XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgICAgICAgICAgIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV92YWx1ZSBzKVxuICAgICAgICAgICAgKSBcIixcIiBidWYgdilcbiAgICAgICkgXCImXCIgYnVmIGw7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBvZl9yYXcgcXMgPVxuICAgIGxldCBsYXp5X3F1ZXJ5ID0gTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHF1ZXJ5X29mX2VuY29kZWQgcXMpIGluXG4gICAgUmF3IChTb21lIHFzLCBsYXp5X3F1ZXJ5KVxuXG4gIGxldCBrdiA9IGZ1bmN0aW9uIFJhdyAoXywgbGF6eSBrdikgfCBLViBrdiAtPiBrdlxuZW5kXG5cbmxldCBxdWVyeV9vZl9lbmNvZGVkID0gUXVlcnkucXVlcnlfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSA9IFF1ZXJ5LmVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZVxuXG4oKiBUeXBlIG9mIHRoZSBVUkksIHdpdGggbW9zdCBiaXRzIGJlaW5nIG9wdGlvbmFsICopXG50eXBlIHQgPSB7XG4gIHNjaGVtZTogUGN0LmRlY29kZWQgb3B0aW9uO1xuICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXSBvcHRpb24gO1xuICBwb3J0OiBpbnQgb3B0aW9uO1xuICBwYXRoOiBQYXRoLnQ7XG4gIHF1ZXJ5OiBRdWVyeS50O1xuICBmcmFnbWVudDogUGN0LmRlY29kZWQgb3B0aW9uO1xufVxuXG5sZXQgZW1wdHkgPSB7XG4gIHNjaGVtZSA9IE5vbmU7XG4gIHVzZXJpbmZvID0gTm9uZTtcbiAgaG9zdCA9IE5vbmU7XG4gIHBvcnQgPSBOb25lO1xuICBwYXRoID0gW107XG4gIHF1ZXJ5ID0gUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKTtcbiAgZnJhZ21lbnQgPSBOb25lO1xufVxuXG5sZXQgY29tcGFyZV9kZWNvZGVkID0gUGN0LnVubGlmdF9kZWNvZGVkMiBTdHJpbmcuY29tcGFyZVxubGV0IGNvbXBhcmVfZGVjb2RlZF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2RlY29kZWRcbmxldCBjb21wYXJlX2hvc3QgaDEgaDIgPVxuICBtYXRjaCBoMSwgaDIgd2l0aFxuICB8IGBJcHY0X2xpdGVyYWwgaXAxLCBgSXB2NF9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYElwdjZfbGl0ZXJhbCBpcDEsIGBJcHY2X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSG9zdCBoMSwgYEhvc3QgaDIgLT4gY29tcGFyZV9kZWNvZGVkIGgxIGgyXG4gIHwgXyAtPiAtMVxubGV0IGNvbXBhcmVfaG9zdF9vcHQgPSBjb21wYXJlX29wdCBjb21wYXJlX2hvc3RcblxubGV0IGNvbXBhcmUgdCB0JyA9XG4gIChtYXRjaCBjb21wYXJlX2hvc3Rfb3B0IHQuaG9zdCB0Jy5ob3N0IHdpdGhcbiAgfCAwIC0+IChtYXRjaCBjb21wYXJlX2RlY29kZWRfb3B0IHQuc2NoZW1lIHQnLnNjaGVtZSB3aXRoXG4gICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCAoZnVuIHAgcCcgLT5cbiAgICAgIGlmIHAgPCBwJyB0aGVuIC0xIGVsc2UgaWYgcCA+IHAnIHRoZW4gMSBlbHNlIDBcbiAgICApIHQucG9ydCB0Jy5wb3J0IHdpdGhcbiAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgVXNlcmluZm8uY29tcGFyZSB0LnVzZXJpbmZvIHQnLnVzZXJpbmZvIHdpdGhcbiAgICAgICAgfCAwIC0+IChtYXRjaCBQYXRoLmNvbXBhcmUgdC5wYXRoIHQnLnBhdGggd2l0aFxuICAgICAgICAgIHwgMCAtPiAobWF0Y2ggUXVlcnkuY29tcGFyZSB0LnF1ZXJ5IHQnLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2RlY29kZWRfb3B0IHQuZnJhZ21lbnQgdCcuZnJhZ21lbnRcbiAgICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICAgIHwgYyAtPiBjKVxuICAgICAgICB8IGMgLT4gYylcbiAgICAgIHwgYyAtPiBjKVxuICAgIHwgYyAtPiBjKVxuICB8IGMgLT4gYylcblxubGV0IGVxdWFsIHQgdCcgPSBjb21wYXJlIHQgdCcgPSAwXG5cbmxldCB1bmNhc3Rfb3B0ID0gZnVuY3Rpb25cbiAgfCBTb21lIGggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG4gIHwgTm9uZSAtPiBOb25lXG5cbmxldCBub3JtYWxpemUgc2NoZW0gdXJpID1cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgc2NoZW0pKSA6IFNjaGVtZSkgaW5cbiAgbGV0IGRvYiBmID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiBTb21lIChQY3QudW5saWZ0X2RlY29kZWQgZiB4KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluIHt1cmkgd2l0aFxuICAgICAgc2NoZW1lPWRvYiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHVyaS5zY2hlbWU7XG4gICAgICBob3N0PSBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgICAgfCBTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2NF9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSXB2Nl9saXRlcmFsIChTY2hlbWUubm9ybWFsaXplX2hvc3QgaG9zdCkpXG4gICAgICAgfCBTb21lIChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgfVxuXG4oKiogQ29udmVydCBhIFVSSSBzdHJ1Y3R1cmUgaW50byBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmdcbiAgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMz5cbiopXG5sZXQgdG9fc3RyaW5nID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9XG4gIGxldCBzY2hlbWUgPSBtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgcylcbiAgICB8IE5vbmUgLT4gTm9uZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgKCogUGVyY2VudCBlbmNvZGUgYSBkZWNvZGVkIHN0cmluZyBhbmQgYWRkIGl0IHRvIHRoZSBidWZmZXIgKilcbiAgbGV0IGFkZF9wY3Rfc3RyaW5nID8oY29tcG9uZW50PWBQYXRoKSB4ID1cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZCAoUGN0LmVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgeCkpXG4gIGluXG4gIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSB4IC0+XG4gICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuc2NoZW1lIHg7XG4gICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonXG4gICk7XG4gICgqIFVSSSBoYXMgYSBob3N0IGlmIGFueSBob3N0LXJlbGF0ZWQgY29tcG9uZW50IGlzIHNldC4gRGVmYXVsdHMgdG8gXCJcIi4gKilcbiAgaWYgKG1hdGNoIHVyaS51c2VyaW5mbywgdXJpLmhvc3QsIHVyaS5wb3J0IHdpdGhcbiAgfCBTb21lIF8sIF8sIF8gfCBfLCBTb21lIF8sIF8gfCBfLCBfLCBTb21lIF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLy9cIjtcbiAgKG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHVzZXJpbmZvIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ0AnXG4gICk7XG4gIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIChgSG9zdCBob3N0KSAtPlxuICAgIGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuaG9zdCBob3N0O1xuICB8U29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdFxuICB8U29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnWyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgaG9zdDtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ10nXG4gICk7XG4gIChtYXRjaCB1cmkucG9ydCB3aXRoXG4gIHxOb25lIC0+ICgpXG4gIHxTb21lIHBvcnQgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHN0cmluZ19vZl9pbnQgcG9ydClcbiAgKTtcbiAgKG1hdGNoIHVyaS5wYXRoIHdpdGggKCogSGFuZGxlIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSAqKVxuICB8IFtdIC0+ICgpXG4gIHwgXCIvXCI6Ol8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKFBjdC51bmNhc3RfZW5jb2RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gIHwgZmlyc3Rfc2VnbWVudDo6XyAtPlxuICAgIChtYXRjaCB1cmkuaG9zdCB3aXRoXG4gICAgIHwgU29tZSBfIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJy8nXG4gICAgIHwgTm9uZSAtPlxuICAgICAgICgqIGVuc3VyZSByb3VuZHRyaXAgYnkgZm9yY2luZyByZWxhdGl2ZSBwYXRoIGludGVycHJldGF0aW9uIG5vdCBzY2hlbWUgKilcbiAgICAgICBtYXRjaCBTdHJpbmdleHQuZmluZF9mcm9tIGZpcnN0X3NlZ21lbnQgfnBhdHRlcm46XCI6XCIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBfIC0+IG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICAgfCBOb25lIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi4vXCJcbiAgICApO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgKTtcbiAgUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgfCBSYXcgKE5vbmUsXykgfCBLViBbXSAtPiAoKVxuICAgIHwgUmF3IChfLGxhenkgcSkgfCBLViBxIC0+ICgqIG5vcm1hbGl6ZSBlLmcuIHBlcmNlbnQgY2FwaXRhbGl6YXRpb24gKilcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz8nO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgfnBjdF9lbmNvZGVyIHEpXG4gICk7XG4gIChtYXRjaCB1cmkuZnJhZ21lbnQgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIGYgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnIyc7IGFkZF9wY3Rfc3RyaW5nIH5jb21wb25lbnQ6cGN0X2VuY29kZXIuZnJhZ21lbnQgZlxuICApO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbigqIFZhcmlvdXMgYWNjZXNzb3IgZnVuY3Rpb25zLCBhcyB0aGUgZXh0ZXJuYWwgdXJpIHR5cGUgaXMgYWJzdHJhY3QgICopXG5sZXQgZ2V0X2RlY29kZWRfb3B0ID0gZnVuY3Rpb24gTm9uZSAtPiBOb25lIHxTb21lIHggLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHgpXG5sZXQgc2NoZW1lIHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuc2NoZW1lXG5sZXQgd2l0aF9zY2hlbWUgdXJpID1cbiAgZnVuY3Rpb25cbiAgfFNvbWUgc2NoZW1lIC0+IHsgdXJpIHdpdGggc2NoZW1lPVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgc2NoZW1lKSB9XG4gIHxOb25lIC0+IHsgdXJpIHdpdGggc2NoZW1lPU5vbmUgfVxuXG5sZXQgaG9zdCB1cmkgPVxuICBtYXRjaCB1cmkuaG9zdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBTb21lIGhcbiAgfCBTb21lIChgSG9zdCBoKSAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcblxubGV0IGhvc3Rfd2l0aF9kZWZhdWx0ID8oZGVmYXVsdD1cImxvY2FsaG9zdFwiKSB1cmkgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHxOb25lIC0+IGRlZmF1bHRcbiAgfFNvbWUgaCAtPiBoXG5cbmxldCB1c2VyaW5mbyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdXNlcmluZm8gLT4gU29tZSAoUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvXG4gICAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl91c2VyaW5mbyB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mbykpXG5sZXQgd2l0aF91c2VyaW5mbyB1cmkgdXNlcmluZm8gPVxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KVxuICAgIHwgTm9uZSAtPiBOb25lXG4gIGluXG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG5cbmxldCB1c2VyIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAodXNlciwgXykgLT4gU29tZSB1c2VyXG5cbmxldCBwYXNzd29yZCB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgfCBTb21lIChfLCBOb25lKSAtPiBOb25lXG4gIHwgU29tZSAoXywgU29tZSBwYXNzKSAtPiBTb21lIHBhc3NcbmxldCB3aXRoX3Bhc3N3b3JkIHVyaSBwYXNzd29yZCA9XG4gIGxldCByZXN1bHQgdXNlcmluZm8gPSBtYXRjaCBob3N0IHVyaSB3aXRoXG4gICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cbiAgaW5cbiAgbWF0Y2ggdXJpLnVzZXJpbmZvLCBwYXNzd29yZCB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB1cmlcbiAgfCBOb25lLCBTb21lIF8gLT4gcmVzdWx0IChTb21lIChcIlwiLHBhc3N3b3JkKSlcbiAgfCBTb21lICh1c2VyLF8pLCBfIC0+IHJlc3VsdCAoU29tZSAodXNlciwgcGFzc3dvcmQpKVxuXG5sZXQgcG9ydCB1cmkgPSB1cmkucG9ydFxubGV0IHdpdGhfcG9ydCB1cmkgcG9ydCA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBwb3J0PXBvcnQgfVxuICB8IE5vbmUgLT4gYmVnaW5cbiAgICAgbWF0Y2ggcG9ydCB3aXRoXG4gICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9Tm9uZTsgcG9ydD1Ob25lIH1cbiAgICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgcG9ydD1wb3J0IH1cbiAgZW5kXG5cbigqIFJldHVybiB0aGUgcGF0aCBjb21wb25lbnQgKilcbmxldCBwYXRoID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gIHwgTm9uZSAtPiBlbmNvZGVkX29mX3BhdGggfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoXG4gIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfcGF0aCB+c2NoZW1lOihQY3QudW5jYXN0X2RlY29kZWQgcykgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKVxubGV0IHdpdGhfcGF0aCB1cmkgcGF0aCA9XG4gIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHBhdGggaW5cbiAgbWF0Y2ggaG9zdCB1cmksIHBhdGggd2l0aFxuICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiB7IHVyaSB3aXRoIHBhdGg9cGF0aCB9XG4gIHwgU29tZSBfLCBfICAtPiB7IHVyaSB3aXRoIHBhdGg9XCIvXCI6OnBhdGggfVxuXG5sZXQgZnJhZ21lbnQgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5mcmFnbWVudFxubGV0IHdpdGhfZnJhZ21lbnQgdXJpID1cbiAgZnVuY3Rpb25cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Ob25lIH1cbiAgfFNvbWUgZnJhZyAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PVNvbWUgKFBjdC5jYXN0X2RlY29kZWQgZnJhZykgfVxuXG5sZXQgcXVlcnkgdXJpID0gUXVlcnkua3YgdXJpLnF1ZXJ5XG5sZXQgdmVyYmF0aW1fcXVlcnkgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUXVlcnkuKG1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gIHwgUmF3IChxcyxfKSAtPiBxc1xuICB8IEtWIFtdIC0+IE5vbmVcbiAgfCBLViBrdiAtPiBTb21lIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWU6KHNjaGVtZSB1cmkpIH5wY3RfZW5jb2RlciBrdilcbilcbmxldCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrID0gUXVlcnkuKGZpbmQgKGt2IHVyaS5xdWVyeSkgaylcbmxldCBnZXRfcXVlcnlfcGFyYW0gdXJpIGsgPVxuICBtYXRjaCBnZXRfcXVlcnlfcGFyYW0nIHVyaSBrIHdpdGhcbiAgfE5vbmUgLT4gTm9uZVxuICB8U29tZSB2IC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIsXCIgdilcblxubGV0IHdpdGhfcXVlcnkgdXJpIHF1ZXJ5ID0geyB1cmkgd2l0aCBxdWVyeT1RdWVyeS5LViBxdWVyeSB9XG5sZXQgcV9zIHEgPSBMaXN0Lm1hcCAoZnVuIChrLHYpIC0+IGssW3ZdKSBxXG5sZXQgd2l0aF9xdWVyeScgdXJpIHF1ZXJ5ID0gd2l0aF9xdWVyeSB1cmkgKHFfcyBxdWVyeSlcbmxldCBhZGRfcXVlcnlfcGFyYW0gdXJpIHAgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocDo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtJyB1cmkgKGssdikgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKGssW3ZdKTo6KGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcyB1cmkgcHMgPSBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAocHNAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtcycgdXJpIHBzID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChxX3MgcHMpQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IHJlbW92ZV9xdWVyeV9wYXJhbSB1cmkgayA9IFF1ZXJ5LihcbiAgeyB1cmkgd2l0aCBxdWVyeT1LViAoTGlzdC5maWx0ZXIgKGZ1biAoaycsXykgLT4gazw+aycpIChrdiB1cmkucXVlcnkpKSB9XG4pXG5cbigqIENvbnN0cnVjdCBlbmNvZGVkIHBhdGggYW5kIHF1ZXJ5IGNvbXBvbmVudHMgKilcbmxldCBwYXRoX2FuZF9xdWVyeSB1cmkgPVxuICBtYXRjaCAocGF0aCB1cmkpLCAocXVlcnkgdXJpKSB3aXRoXG4gIHxcIlwiLCBbXSAtPiBcIi9cIiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICB8XCJcIiwgcSAtPiAoKiBUT0RPOiBXaGF0IGFib3V0IHNhbWUgZG9jdW1lbnQ/ICgvKSAqKVxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIi8/JXNcIiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG4gIHxwLCBbXSAtPiBwXG4gIHxwLCBxIC0+XG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXM/JXNcIiBwIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcblxuKCogVE9ETzogZnVuY3Rpb25zIHRvIGFkZCBhbmQgcmVtb3ZlIGZyb20gYSBVUkkgKilcblxuKCogUmVzb2x2ZSBhIFVSSSB3cnQgYSBiYXNlIFVSSSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMj4gKilcbmxldCByZXNvbHZlIHNjaGVtIGJhc2UgdXJpID1cbiAgbGV0IHNjaGVtID0gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCAobWF0Y2ggc2NoZW1lIGJhc2Ugd2l0aFxuICAgICAgfCBOb25lIC0+ICBzY2hlbVxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICApKSBpblxuICBub3JtYWxpemUgc2NoZW1cbiAgICBQYXRoLihtYXRjaCBzY2hlbWUgdXJpLCB1c2VyaW5mbyB1cmksIGhvc3QgdXJpIHdpdGhcbiAgICB8IFNvbWUgXywgXywgXyAtPlxuICAgICAge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIFNvbWUgXywgX1xuICAgIHwgTm9uZSwgXywgU29tZSBfIC0+XG4gICAgICB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBOb25lLCBOb25lIC0+XG4gICAgICBsZXQgdXJpID0ge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgdXNlcmluZm89YmFzZS51c2VyaW5mbztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdD1iYXNlLmhvc3Q7IHBvcnQ9YmFzZS5wb3J0fSBpblxuICAgICAgbGV0IHBhdGhfc3RyID0gcGF0aCB1cmkgaW5cbiAgICAgIGlmIHBhdGhfc3RyPVwiXCJcbiAgICAgIHRoZW4geyB1cmkgd2l0aFxuICAgICAgICAgICAgIHBhdGg9YmFzZS5wYXRoO1xuICAgICAgICAgICAgIHF1ZXJ5PW1hdGNoIHVyaS5xdWVyeSB3aXRoXG4gICAgICAgICAgICAgICB8IFF1ZXJ5LlJhdyAoTm9uZSxfKSB8IFF1ZXJ5LktWIFtdIC0+IGJhc2UucXVlcnlcbiAgICAgICAgICAgICAgIHwgXyAtPiB1cmkucXVlcnlcbiAgICAgICAgICAgfVxuICAgICAgZWxzZSBpZiBwYXRoX3N0ci5bMF09Jy8nXG4gICAgICB0aGVuIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgICBlbHNlIHt1cmkgd2l0aFxuICAgICAgICBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgKG1lcmdlIGJhc2UuaG9zdCBiYXNlLnBhdGggdXJpLnBhdGgpO1xuICAgICAgfVxuICAgIClcblxubGV0IGNhbm9uaWNhbGl6ZSB1cmkgPVxuICBsZXQgdXJpID0gcmVzb2x2ZSBcIlwiIGVtcHR5IHVyaSBpblxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCB1cmkuc2NoZW1lKSkgOiBTY2hlbWUpIGluXG4gIHsgdXJpIHdpdGhcbiAgICBwb3J0PVNjaGVtZS5jYW5vbmljYWxpemVfcG9ydCB1cmkucG9ydDtcbiAgICBwYXRoPVNjaGVtZS5jYW5vbmljYWxpemVfcGF0aCB1cmkucGF0aDtcbiAgfVxuXG5sZXQgcHAgcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxubGV0IHBwX2h1bSBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5cbm1vZHVsZSBQYXJzZXIgPSBzdHJ1Y3RcbiAgb3BlbiBBbmdzdHJvbVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxuICBsZXQgc3RyaW5nX29mX2NoYXJfbGlzdCBjaGFycyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfY2hhciBjaGFycylcblxuICBsZXQgc2NoZW1lID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAodGFrZV93aGlsZSAoZnVuIGMgLT4gYyA8PiAnOicgJiYgYyA8PiAnLycgJiYgYyA8PiAnPycgJiYgYyA8PiAnIycpXG4gICAgICA8KiBjaGFyICc6JylcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgaXNfZGlnaXQgPSBmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGhleF9kaWdpdCA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCBoZXhhZGVjaW1hbCA9IGxpZnQgc3RyaW5nX29mX2NoYXJfbGlzdCAobWFueSBoZXhfZGlnaXQpXG5cbiAgbGV0IGNfZG90ID0gY2hhciAnLidcblxuICBsZXQgY19hdCA9IGNoYXIgJ0AnXG5cbiAgbGV0IGNfY29sb24gPSBjaGFyICc6J1xuXG4gIGxldCBkZWNfb2N0ZXQgPVxuICAgIHRha2Vfd2hpbGUxIChmdW5jdGlvbiAnMCcgLi4gJzknIC0+IHRydWUgfCBfIC0+IGZhbHNlKSA+Pj0gZnVuIG51bSAtPlxuICAgIGlmIGludF9vZl9zdHJpbmcgbnVtIDwgMjU2IHRoZW5cbiAgICAgIHJldHVybiBudW1cbiAgICBlbHNlXG4gICAgICBmYWlsIFwiaW52YWxpZCBvY3RlY3RcIlxuXG4gIGxldCBpcHY0X2FkZHJlc3MgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHRocmVlIG9uZSAtPiBTdHJpbmcuY29uY2F0IFwiLlwiIHRocmVlIF4gXCIuXCIgXiBvbmUpXG4gICAgICAoY291bnQgMyAoZGVjX29jdGV0IDwqIGNfZG90KSlcbiAgICAgIGRlY19vY3RldFxuXG4gICgqIC0tIGFmdGVyIGRvdWJsZSBjb2xvbiwgSVB2NCBkb3R0ZWQgbm90YXRpb24gY291bGQgYXBwZWFyIGFueXdoZXJlICopXG4gIGxldCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgIGZpeCAoZnVuIGYgLT5cbiAgICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdXG4gICAgICAgIDx8PiBsaWZ0MiAoZnVuIHggeSAtPiB4IDo6IHkpIGhleGFkZWNpbWFsIChjX2NvbG9uICo+IGYgPHw+IHJldHVybiBbXSkpXG5cbiAgbGV0IGRvdWJsZV9jb2xvbiBjb3VudCA9XG4gICAgYWZ0ZXJfZG91YmxlX2NvbG9uID4+PSAoZnVuIHJlc3QgLT5cbiAgICBsZXQgZmlsbGVyX2xlbmd0aCA9IDggLSBjb3VudCAtIExpc3QubGVuZ3RoIHJlc3QgaW5cbiAgICBpZiBmaWxsZXJfbGVuZ3RoIDw9IDAgdGhlblxuICAgICAgZmFpbCBcInRvbyBtYW55IHBhcnRzIGluIElQdjYgYWRkcmVzc1wiXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChcIlwiIDo6IHJlc3QpKVxuICAgIDx8PiByZXR1cm4gW1wiXCJdXG5cbiAgbGV0IHJlYyBwYXJ0ID0gZnVuY3Rpb25cbiAgICB8IDcgLT5cbiAgICAgICgqIG1heCA4IHBhcnRzIGluIGFuIElQdjYgYWRkcmVzcyAqKVxuICAgICAgbGlmdCAoZnVuIHggLT4gWyB4IF0pIGhleGFkZWNpbWFsXG4gICAgfCA2IC0+XG4gICAgICAoKiBhZnRlciA2IHBhcnRzIGl0IGNvdWxkIGVuZCBpbiBJUHY0IGRvdHRlZCBub3RhdGlvbiAqKVxuICAgICAgbGlzdCBbIGlwdjRfYWRkcmVzcyBdIDx8PiBoZXhfcGFydCA2XG4gICAgfCBuIC0+XG4gICAgICBoZXhfcGFydCBuXG5cbiAgYW5kIGhleF9wYXJ0IG4gPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHggeSAtPiB4IDo6IHkpXG4gICAgICBoZXhhZGVjaW1hbFxuICAgICAgKGNfY29sb24gKj4gKGNfY29sb24gKj4gZG91YmxlX2NvbG9uIChuICsgMSkgPHw+IHBhcnQgKG4gKyAxKSkpXG5cbiAgbGV0IHJlYyBzcGxpdF93aXRoIGYgeHMgPVxuICAgIG1hdGNoIHhzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBbXSwgW11cbiAgICB8IHkgOjogeXMgLT5cbiAgICAgIGlmIGYgeSB0aGVuXG4gICAgICAgIGxldCB6cywgdHMgPSBzcGxpdF93aXRoIGYgeXMgaW5cbiAgICAgICAgeSA6OiB6cywgdHNcbiAgICAgIGVsc2VcbiAgICAgICAgW10sIHhzXG5cbiAgbGV0IGlwdjYgPVxuICAgIGxldCBmb3JtYXRfYWRkciBzZWdtZW50cyA9XG4gICAgICBsZXQgYmVmb3JlX2RvdWJsZV9jb2xvbiwgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICAgICAgc3BsaXRfd2l0aCAoZnVuIHNlZ21lbnQgLT4gc2VnbWVudCA8PiBcIlwiKSBzZWdtZW50c1xuICAgICAgaW5cbiAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuY29uY2F0IFwiOlwiIGJlZm9yZV9kb3VibGVfY29sb24gaW5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBtYXRjaCBhZnRlcl9kb3VibGVfY29sb24gd2l0aFxuICAgICAgICB8IFwiXCIgOjogeHMgLT5cbiAgICAgICAgICBiZWZvcmUgXiBcIjo6XCIgXiBTdHJpbmcuY29uY2F0IFwiOlwiIHhzXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGJlZm9yZVxuICAgICAgaW5cbiAgICAgIHJlc1xuICAgIGluXG4gICAgbGlmdCBmb3JtYXRfYWRkciAoY19jb2xvbiAqPiBjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAwIDx8PiBwYXJ0IDApXG5cbiAgbGV0IGlwdjZfYWRkcmVzcyA9XG4gICAgKGNoYXIgJ1snKSAqPiBpcHY2IDwqIChjaGFyICddJylcblxuICBsZXQgcGN0X2VuY29kZWQgPVxuICAgIGxpZnQyXG4gICAgICAoZnVuIHBjdCBkaWdpdHMgLT4gc3RyaW5nX29mX2NoYXJfbGlzdCAocGN0IDo6IGRpZ2l0cykpXG4gICAgICAoY2hhciAnJScpXG4gICAgICAoY291bnQgMiBoZXhfZGlnaXQpXG5cbiAgbGV0IHN1Yl9kZWxpbXMgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyEnIHwgJyQnIHwgJyYnIHwgJ1xcJycgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnLCcgfCAnOycgfCAnPScgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCB1bnJlc2VydmVkID1cbiAgICAoKiBcIltBLVphLXowLTktLl9+XVwiICopXG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnLScgfCAnLicgfCAnXycgfCAnficgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGZhbHNlKVxuXG4gIGxldCByZWdfbmFtZSA9XG4gICAgbGlmdFxuICAgICAgKFN0cmluZy5jb25jYXQgXCJcIilcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICBdKSlcblxuICBsZXQgaG9zdCA9XG4gICAgY2hvaWNlXG4gICAgICBbIGlwdjRfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY0X2xpdGVyYWwgaClcbiAgICAgIDsgaXB2Nl9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjZfbGl0ZXJhbCBoKVxuICAgICAgOyByZWdfbmFtZSA+PnwgKGZ1biBzIC0+IGBIb3N0IChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICgqIFRPRE8oZGlub3NhdXJlKTogQWNjb3JkaW5nIHRvIFJGQzM5ODY6XG5cbiAgICAgICAgIGhvc3QgICAgICAgID0gSVAtbGl0ZXJhbCAvIElQdjRhZGRyZXNzIC8gcmVnLW5hbWVcbiAgICAgICAgIElQLWxpdGVyYWwgID0gXCJbXCIgKCBJUHY2YWRkcmVzcyAvIElQdkZ1dHVyZSAgKSBcIl1cIlxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG5cbiAgICAgICAgIElQdkZ1dHVyZSBpcyBub3QgaW1wbGVtZW50ZWQuIFdlIHNob3VsZCBoYW5kbGUgaXQ6XG5cbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuICAgICAgICopXG4gICAgICBdXG5cbiAgbGV0IHVzZXJpbmZvID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHMgPSBTdHJpbmcuY29uY2F0IFwiXCIgeCBpblxuICAgICAgICBTb21lIChVc2VyaW5mby51c2VyaW5mb19vZl9lbmNvZGVkIHMpKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IGNfY29sb25cbiAgICAgICAgICAgIF0pXG4gICAgICA8KiBjX2F0KVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBwb3J0ID1cbiAgICBwZWVrX2NoYXIgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lICc6JyAtPlxuICAgICAgY19jb2xvbiAqPiB0YWtlX3doaWxlIGlzX2RpZ2l0ID4+fCBmdW4gcG9ydCAtPlxuICAgICAgbGV0IGRlY29kZWQgPSBQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHBvcnQpIGluXG4gICAgICAodHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgKFBjdC51bmNhc3RfZGVjb2RlZCBkZWNvZGVkKSkgd2l0aCBfIC0+IE5vbmUpXG4gICAgfCBTb21lIF8gfCBOb25lIC0+XG4gICAgICByZXR1cm4gTm9uZVxuXG4gIGxldCBhdXRob3JpdHkgPVxuICAgIHN0cmluZyBcIi8vXCJcbiAgICAqPiBsaWZ0M1xuICAgICAgICAgKGZ1biB1c2VyaW5mbyBob3N0IHBvcnQgLT5cbiAgICAgICAgICAgdXNlcmluZm8sIFNvbWUgaG9zdCwgcG9ydClcbiAgICAgICAgIHVzZXJpbmZvXG4gICAgICAgICBob3N0XG4gICAgICAgICBwb3J0XG4gICAgPHw+IHJldHVybiAoTm9uZSwgTm9uZSwgTm9uZSlcblxuICBsZXQgcGF0aCA9XG4gICAgbGlmdFxuICAgICAgUGF0aC5wYXRoX29mX2VuY29kZWRcbiAgICAgICh0YWtlX3doaWxlIChmdW5jdGlvbiAnPycgfCAnIycgLT4gZmFsc2UgfCBfIC0+IHRydWUpKVxuXG4gIGxldCBxdWVyeSA9XG4gICAgbGlmdFxuICAgICAgUXVlcnkub2ZfcmF3XG4gICAgICAoY2hhciAnPycgKj4gdGFrZV90aWxsIChmdW5jdGlvbiAnIycgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpKVxuICAgIDx8PiByZXR1cm4gKFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSkpXG5cbiAgbGV0IGZyYWdtZW50ID1cbiAgICBsaWZ0XG4gICAgICAoZnVuIHMgLT4gU29tZSAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoY2hhciAnIycgKj4gdGFrZV93aGlsZSAoZnVuIF8gLT4gdHJ1ZSkpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IF91cmlfcmVmZXJlbmNlID1cbiAgICBsaWZ0NFxuICAgICAgKGZ1biBzY2hlbWUgKHVzZXJpbmZvLCBob3N0LCBwb3J0KSBwYXRoIHF1ZXJ5IGZyYWdtZW50IC0+XG4gICAgICAgIG5vcm1hbGl6ZSBzY2hlbWUgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSlcbiAgICAgIHNjaGVtZVxuICAgICAgYXV0aG9yaXR5XG4gICAgICBwYXRoXG4gICAgICBxdWVyeVxuICAgIDwqPiBmcmFnbWVudFxuXG4gICgqIFhYWChhbm1vbnRlaXJvKTogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3aXRoIHRoZSBvbGQgcmVnZXggcGFyc2VyLCB3ZVxuICAgKiBvbmx5IHBhcnNlIHVudGlsIHRoZSBmaXJzdCBuZXdsaW5lIGNoYXJhY3RlciBhbmQgZHJvcCBldmVyeXRoaW5nIGVsc2VcbiAgICogYWZ0ZXIgdGhhdCAqKVxuICBsZXQgdXJpX3JlZmVyZW5jZSA9XG4gICAgdGFrZV93aGlsZSAoZnVuY3Rpb24gfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkgPj58IGZ1biBzIC0+XG4gICAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIF91cmlfcmVmZXJlbmNlIHMgd2l0aFxuICAgICAgfCBPayB0IC0+IHRcbiAgICAgIHwgRXJyb3IgXyAtPlxuICAgICAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICAgICAgZW1wdHlcbmVuZFxuXG5sZXQgZGVjb2RlX2hvc3QgaG9zdCA9XG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmhvc3QgaG9zdCB3aXRoXG4gIHwgT2sgcGFyc2VkIC0+IHBhcnNlZFxuICB8IEVycm9yIF8gLT5cbiAgICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5pcHY2IGhvc3Qgd2l0aFxuICAgIHwgT2sgcGFyc2VkIC0+IChgSXB2Nl9saXRlcmFsIHBhcnNlZClcbiAgICB8IEVycm9yIF8gLT4gKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIGhvc3QpKVxuXG4oKiBNYWtlIGEgVVJJIHJlY29yZC4gVGhpcyBpcyBhIGJpdCBtb3JlIGluZWZmaWNpZW50IHRoYW4gaXQgbmVlZHMgdG8gYmUgZHVlIHRvIHRoZVxuICogY2FzdGluZy91bmNhc3RpbmcgKHdoaWNoIGlzbid0IGZ1bGx5IGlkZW50aXR5IGR1ZSB0byB0aGUgb3B0aW9uIGJveCksIGJ1dCBpdCBpc1xuICogbm8gYmlnIGRlYWwgZm9yIG5vdy5cbiopXG5sZXQgbWFrZSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGhvc3QgPSBtYXRjaCB1c2VyaW5mbywgaG9zdCwgcG9ydCB3aXRoXG4gICAgfCBfLCBTb21lIF8sIF8gfCBOb25lLCBOb25lLCBOb25lIC0+IGhvc3RcbiAgICB8IFNvbWUgXywgTm9uZSwgXyB8IF8sIE5vbmUsIFNvbWUgXyAtPiBTb21lIFwiXCJcbiAgaW5cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgbWF0Y2ggaG9zdCwgcGF0aCB3aXRoXG4gICAgICB8IE5vbmUsIF8gfCBTb21lIF8sIFwiL1wiOjpfIHwgU29tZSBfLCBbXSAtPiBwYXRoXG4gICAgICB8IFNvbWUgXywgXyAgLT4gXCIvXCI6OnBhdGhcbiAgaW5cbiAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgaW5cbiAgbGV0IHNjaGVtZSA9IGRlY29kZSBzY2hlbWUgaW5cbiAgbm9ybWFsaXplIHNjaGVtZVxuICAgIHsgc2NoZW1lOyB1c2VyaW5mbztcbiAgICAgIGhvc3QgPVxuICAgICAgICAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgIHwgTm9uZSAtPiBOb25lKTtcbiAgICAgIHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG5sZXQgd2l0aF9ob3N0IHVyaSBob3N0ID1cbiAgeyB1cmkgd2l0aFxuICAgIGhvc3QgPSAobWF0Y2ggaG9zdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gIH1cblxubGV0IHdpdGhfdXJpID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgdXJpID1cbiAgbGV0IHdpdGhfcGF0aF9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9wYXRoIHUgXCJcIlxuICAgIHwgU29tZSBwIC0+IHdpdGhfcGF0aCB1IHBcbiAgaW5cbiAgbGV0IHdpdGhfcXVlcnlfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcXVlcnkgdSBbXVxuICAgIHwgU29tZSBxIC0+IHdpdGhfcXVlcnkgdSBxXG4gIGluXG4gIGxldCB3aXRoXyBmIG8gdSA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHVcbiAgICB8IFNvbWUgeCAtPiBmIHUgeFxuICBpblxuICB3aXRoXyB3aXRoX3NjaGVtZSBzY2hlbWUgdXJpXG4gIHw+IHdpdGhfIHdpdGhfdXNlcmluZm8gdXNlcmluZm9cbiAgfD4gd2l0aF8gd2l0aF9ob3N0IGhvc3RcbiAgfD4gd2l0aF8gd2l0aF9wb3J0IHBvcnRcbiAgfD4gd2l0aF8gd2l0aF9wYXRoX29wdCBwYXRoXG4gIHw+IHdpdGhfIHdpdGhfcXVlcnlfb3B0IHF1ZXJ5XG4gIHw+IHdpdGhfIHdpdGhfZnJhZ21lbnQgZnJhZ21lbnRcblxubGV0IG9mX3N0cmluZyBzID1cbiAgKCogVG8gcHJlc2VydmUgdGhlIG9sZCByZWdleCBwYXJzZXIncyBiZWhhdmlvciwgd2Ugb25seSBwYXJzZSBhIHByZWZpeCwgYW5kXG4gICAqIHN0b3Agd2hlbmV2ZXIgd2UgY2FuJ3QgcGFyc2UgbW9yZS4gKilcbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOlByZWZpeCBQYXJzZXIudXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgfCBPayB0IC0+IHRcbiAgfCBFcnJvciBfIC0+XG4gICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgZW1wdHlcblxubW9kdWxlIEFic29sdXRlX2h0dHAgPSBzdHJ1Y3RcbiAgdHlwZSB1cmkgPSB0XG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlbWUgOiBbIGBIdHRwIHwgYEh0dHBzIF07XG4gICAgICB1c2VyaW5mbzogVXNlcmluZm8udCBvcHRpb247XG4gICAgICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IGBIb3N0IG9mIFBjdC5kZWNvZGVkXTtcbiAgICAgIHBvcnQgOiBpbnQgb3B0aW9uO1xuICAgICAgcGF0aCA6IFBhdGgudDtcbiAgICAgIHF1ZXJ5IDogUXVlcnkudDtcbiAgICAgIGZyYWdtZW50IDogUGN0LmRlY29kZWQgb3B0aW9uXG4gICAgfVxuXG4gIGxldCAoIGxldCogKSA9IFJlc3VsdC5iaW5kXG5cbiAgbGV0IHRvX3VyaSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9ID1cbiAgICBsZXQgc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IGBIdHRwIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwXCJcbiAgICAgIHwgYEh0dHBzIC0+IFBjdC5jYXN0X2RlY29kZWQgXCJodHRwc1wiXG4gICAgaW5cbiAgICAoeyBzY2hlbWUgPSBTb21lIHNjaGVtZTtcbiAgICAgICB1c2VyaW5mbztcbiAgICAgICBob3N0ID0gU29tZSBob3N0O1xuICAgICAgIHBvcnQ7XG4gICAgICAgcGF0aDtcbiAgICAgICBxdWVyeTtcbiAgICAgICBmcmFnbWVudCB9IDogdXJpKVxuICA7O1xuXG4gIGxldCBvZl91cmkgKHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH06IHVyaSkgPVxuICAgIGxldCogc2NoZW1lID1cbiAgICAgIG1hdGNoIHNjaGVtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRXJyb3IgKGBNc2cgXCJObyBzY2hlbWUgcHJlc2VudCBpbiBVUklcIilcbiAgICAgIHwgU29tZSBzY2hlbWUgLT5cbiAgICAgICAgKG1hdGNoIFBjdC51bmNhc3RfZGVjb2RlZCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBcImh0dHBcIiAtPiBPayBgSHR0cFxuICAgICAgICAgfCBcImh0dHBzXCIgLT4gT2sgYEh0dHBzXG4gICAgICAgICB8IHVuc3VwcG9ydGVkX3NjaGVtZSAtPlxuICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgIChgTXNnXG4gICAgICAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJPbmx5IGh0dHAgYW5kIGh0dHBzIFVSSXMgYXJlIHN1cHBvcnRlZC4gJXMgaXMgaW52YWxpZC5cIlxuICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkX3NjaGVtZSkpKVxuICAgIGluXG4gICAgbGV0KiBob3N0ID0gT3B0aW9uLnRvX3Jlc3VsdCB+bm9uZTooYE1zZyBcImhvc3QgaXMgcmVxdWlyZWQgZm9yIEhUVFAoUykgdXJpc1wiKSBob3N0IGluXG4gICAgT2sgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9IG1hdGNoIG9mX3N0cmluZyBzIHw+IG9mX3VyaSB3aXRoXG4gICAgfCBPayB0IC0+IHRcbiAgICB8IEVycm9yIChgTXNnIGVycm9yKSAtPiBmYWlsd2l0aCBlcnJvclxuXG4gIGxldCB0b19zdHJpbmcgP3BjdF9lbmNvZGVyIHQgPSB0b191cmkgdCB8PiB0b19zdHJpbmcgP3BjdF9lbmNvZGVyXG5cbiAgbGV0IG5vcm1hbGl6ZSB0ID1cbiAgICB7IHQgd2l0aFxuICAgICAgaG9zdCA9IG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgICAgfCAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY0X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgKGBJcHY2X2xpdGVyYWwgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaG9zdCkpXG4gICAgICAgfCAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSAoUGN0LnVuY2FzdF9kZWNvZGVkIGhvc3QpKSkpXG4gICAgfVxuXG4gIGxldCBtYWtlIH5zY2hlbWUgfmhvc3QgP3VzZXJpbmZvID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICAgIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgICAgfFNvbWUgeCAtPiBTb21lIChQY3QuY2FzdF9kZWNvZGVkIHgpIHxOb25lIC0+IE5vbmUgaW5cbiAgICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gICAgbGV0IHBhdGggPSBtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgICAgbWF0Y2ggcGF0aCB3aXRoXG4gICAgICAgIHwgIFwiL1wiOjpfIHwgIFtdIC0+IHBhdGhcbiAgICAgICAgfCBfICAtPiBcIi9cIjo6cGF0aFxuICAgIGluXG4gICAgbGV0IHF1ZXJ5ID0gbWF0Y2ggcXVlcnkgd2l0aFxuICAgICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gICAgaW5cbiAgICBub3JtYWxpemVcbiAgICAgIHsgc2NoZW1lO1xuICAgICAgICB1c2VyaW5mbztcbiAgICAgICAgaG9zdD0gZGVjb2RlX2hvc3QgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbiAgbGV0IGhvc3QgdCA9XG4gICAgbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICB8IChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IGhcbiAgICB8IChgSG9zdCBoKSAtPiAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbiAgbGV0IHNjaGVtZSB0ID0gdC5zY2hlbWVcbmVuZFxuIiwib3BlbiBVcmlcblxubW9kdWxlIERlcml2ZWQgPVxuc3RydWN0XG5cblx0b3BlbiBTZXhwbGliMC5TZXhwX2NvbnZcblxuXHR0eXBlIGNvbXBvbmVudCA9IFtcblx0ICB8IGBTY2hlbWVcblx0ICB8IGBBdXRob3JpdHlcblx0ICB8IGBVc2VyaW5mbyAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBQYXRoXG5cdCAgfCBgUXVlcnlcblx0ICB8IGBRdWVyeV9rZXlcblx0ICB8IGBRdWVyeV92YWx1ZVxuXHQgIHwgYEZyYWdtZW50XG4gICAgICAgICAgfCBgR2VuZXJpY1xuICAgICAgICAgIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKVxuXHRdIFtAQGRlcml2aW5nIHNleHBdXG5cblx0dHlwZSB0ID0ge1xuICAgICAgICAgIHNjaGVtZTogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICB1c2VyaW5mbzogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBob3N0OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBvcnQ6IGludCBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcGF0aDogc3RyaW5nIFtAZGVmYXVsdCBcIlwiXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHF1ZXJ5OiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3QgW0BzZXhwLmxpc3RdO1xuICAgICAgICAgIGZyYWdtZW50OiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdXG5cdH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuZW5kXG5cbm9wZW4gRGVyaXZlZFxuXG5sZXQgY29tcG9uZW50X29mX3NleHAgPSBjb21wb25lbnRfb2Zfc2V4cFxubGV0IHNleHBfb2ZfY29tcG9uZW50ID0gc2V4cF9vZl9jb21wb25lbnRcblxubGV0IHRfb2Zfc2V4cCBzZXhwID1cblx0bGV0IHQgPSB0X29mX3NleHAgc2V4cCBpblxuXHRVcmkubWFrZVxuXHRcdD9zY2hlbWU6dC5zY2hlbWVcblx0XHQ/dXNlcmluZm86dC51c2VyaW5mb1xuXHRcdD9ob3N0OnQuaG9zdFxuXHRcdD9wb3J0OnQucG9ydFxuXHRcdH5wYXRoOnQucGF0aFxuXHRcdH5xdWVyeTp0LnF1ZXJ5XG5cdFx0P2ZyYWdtZW50OnQuZnJhZ21lbnRcblx0XHQoKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuXHRzZXhwX29mX3Qge1xuXHRcdHNjaGVtZSA9IHNjaGVtZSB0O1xuXHRcdHVzZXJpbmZvID0gdXNlcmluZm8gdDtcblx0XHRob3N0ID0gaG9zdCB0O1xuXHRcdHBvcnQgPSBwb3J0IHQ7XG5cdFx0cGF0aCA9IHBhdGggdDtcblx0XHRxdWVyeSA9IHF1ZXJ5IHQ7XG5cdFx0ZnJhZ21lbnQgPSBmcmFnbWVudCB0XG5cdH1cblxudHlwZSBjb21wb25lbnQgPSBVcmkuY29tcG9uZW50XG5sZXQgY29tcGFyZSBhIGIgPSBVcmkuY29tcGFyZSBhIGJcbmxldCBlcXVhbCBhIGIgPSBVcmkuZXF1YWwgYSBiXG50eXBlIHQgPSBVcmkudFxuIiwib3BlbiBKc19vZl9vY2FtbFxub3BlbiBDb3JlXG5cbmxldCBpc192YWxpZF9pZCBzID1cbiAgaWYgU3RyaW5nLmVxdWFsIHMgXCJcIlxuICB0aGVuIGZhbHNlXG4gIGVsc2UgKFxuICAgIG1hdGNoIHMuWzBdIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgLT4gZmFsc2VcbiAgICB8IF8gLT5cbiAgICAgIFN0cmluZy5mb3JfYWxsIHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKSlcbjs7XG5cbmxldCBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgPSBpc192YWxpZF9pZCBuYW1lICYmIG5vdCAoU2V0Lm1lbSBzZWVuIG5hbWUpXG5cbmxldCByZWMga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIGxpc3QgPVxuICBtYXRjaCAobGlzdCA6IFNleHAudCBsaXN0KSB3aXRoXG4gIHwgW10gLT4gU29tZSAoTGlzdC5yZXYgcmV2X2FjYylcbiAgfCBBdG9tIG5hbWUgOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIE5vbmUpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBMaXN0IFsgQXRvbSBuYW1lOyB2IF0gOjogcmVzdCB3aGVuIGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSAtPlxuICAgIGxldCByZXZfYWNjID0gKG5hbWUsIFNvbWUgdikgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBhbnlfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gIHwgU2V4cC5BdG9tIHMgLT4gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHMpXG4gIHwgU2V4cC5MaXN0IFsgQXRvbSBuYW1lOyB2IF0gLT4gSnMuVW5zYWZlLm9iaiBbfCBuYW1lLCBhbnlfb2Zfc2V4cCB2IHxdXG4gIHwgU2V4cC5MaXN0IGwgLT5cbiAgICAobWF0Y2gga2V5X3ZhbHVlX3NoYXBlIH5zZWVuOlN0cmluZy5TZXQuZW1wdHkgfnJldl9hY2M6W10gbCB3aXRoXG4gICAgIHwgTm9uZSAtPiBMaXN0Lm1hcCBsIH5mOmFueV9vZl9zZXhwIHw+IEFycmF5Lm9mX2xpc3QgfD4gSnMuYXJyYXkgfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgW10gLT4gSnMuYXJyYXkgW3x8XSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBsIC0+XG4gICAgICAgSnMuVW5zYWZlLm9ialxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IG5hbWUsIFNvbWUgdiAtPiBuYW1lLCBhbnlfb2Zfc2V4cCB2XG4gICAgICAgICAgICB8IG5hbWUsIE5vbmUgLT4gbmFtZSwgSnMuVW5zYWZlLmluamVjdCBKcy5udWxsKVxuICAgICAgICAgIHw+IEFycmF5Lm9mX2xpc3QpKVxuOztcblxubGV0IGxvZ19zIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoYW55X29mX3NleHAgc2V4cClcbmxldCBsb2dfc19hc19zdHJpbmcgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKSlcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICB0eXBlIHUgPSB7IHNvbWVfbmFtZSA6IHN0cmluZyB9IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBGb29cbiAgICAgIHwgQmFyIG9mXG4gICAgICAgICAgeyBmaWVsZDEgOiB1XG4gICAgICAgICAgOyBmaWVsZDIgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuICBpblxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgb3BlbiBNIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgKHNleHBfb2ZfdCBGb28pKSk7XG4gIFslZXhwZWN0IHt8IFwiRm9vXCIgfH1dO1xuICBwcmludF9lbmRsaW5lXG4gICAgKHRvX3N0cmluZ1xuICAgICAgIChhbnlfb2Zfc2V4cFxuICAgICAgICAgIChzZXhwX29mX3RcbiAgICAgICAgICAgICAoQmFyIHsgZmllbGQxID0geyBzb21lX25hbWUgPSBcImRlYnVnXCIgfTsgZmllbGQyID0gU29tZSBcIm90aGVyIHN0cmluZ1wiIH0pKSkpO1xuICBbJWV4cGVjdCB7fCB7XCJCYXJcIjpudWxsLFwiZmllbGQxXCI6e1wic29tZV9uYW1lXCI6XCJkZWJ1Z1wifSxcImZpZWxkMlwiOltcIm90aGVyIHN0cmluZ1wiXX0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJkdXBsaWNhdGUga2V5cyBhcmUgZGlzcGxheWVkIGNvcnJlY3RseVwiID1cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cyA9IHt8ICgoQSBCKSAoQSBDKSkgfH0gfD4gU2V4cC5vZl9zdHJpbmcgaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMpKTtcbiAgWyVleHBlY3Qge3wgW3tcIkFcIjpcIkJcIn0se1wiQVwiOlwiQ1wifV0gfH1dXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJubyBzdGFjayBvdmVyZmxvd1wiID1cbiAgbGV0IGEgPSBBcnJheS5pbml0IDEwMDAwIH5mOihmdW4gaSAtPiBzcHJpbnRmIFwiZiVkXCIgaSwgaSkgaW5cbiAgbGV0IHNleHAgPSBbJXNleHBfb2Y6IChzdHJpbmcgKiBpbnQpIGFycmF5XSBhIGluXG4gIGxldCB4ID0gYW55X29mX3NleHAgc2V4cCBpblxuICBwcmludGYgXCIlZFwiIChKcy5VbnNhZmUuY29lcmNlIHgpIyMuZjk5OTtcbiAgWyVleHBlY3Qge3wgOTk5IHx9XVxuOztcbiIsIm1vZHVsZSBBc3luY19qc19kZWJ1ZyA9IERlYnVnXG5vcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBVcmkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVcmlcblxuICBsZXQgc2V4cF9vZl90ID0gVXJpX3NleHAuc2V4cF9vZl90XG5lbmRcblxubW9kdWxlIFdlYnNvY2tldF9jb25uZWN0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gQXN5bmNfcnBjX2tlcm5lbC5ScGMuQ29ubmVjdGlvblxuXG4gIHR5cGUgKCdyZXN0LCAnaW1wbGVtZW50YXRpb25zKSBjbGllbnRfdCA9XG4gICAgP3VyaTpVcmkudFxuICAgIC0+ID9oZWFydGJlYXRfY29uZmlnOlQuSGVhcnRiZWF0X2NvbmZpZy50XG4gICAgLT4gP2Rlc2NyaXB0aW9uOkluZm8udFxuICAgIC0+ID9pbXBsZW1lbnRhdGlvbnM6J2ltcGxlbWVudGF0aW9ucyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMudFxuICAgIC0+ICdyZXN0XG5cbiAgbW9kdWxlIENsb3NlX2NvZGUgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICAgIHZhbCBvZl9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQgLT4gdFxuICAgIHZhbCBub3JtYWxfY2xvc3VyZSA6IHRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSBjbG9zZV9ldmVudF9jb2RlID0gaW50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgYWxsX29mX2Nsb3NlX2V2ZW50X2NvZGUgPSBbXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgR29pbmdfYXdheVxuICAgICAgfCBQcm90b2NvbF9lcnJvclxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgTWVzc2FnZV90b29fYmlnXG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IEludGVybmFsX2Vycm9yXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgQmFkX2dhdGV3YXlcbiAgICAgIHwgVExTX2hhbmRzaGFrZVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgb2YgY2xvc2VfZXZlbnRfY29kZVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF1cblxuICAgIGxldCBub3JtYWxfY2xvc3VyZSA9IE5vcm1hbF9jbG9zdXJlXG5cbiAgICBsZXQgb2ZfaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgMTAwMCAtPiBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDAxIC0+IEdvaW5nX2F3YXlcbiAgICAgIHwgMTAwMiAtPiBQcm90b2NvbF9lcnJvclxuICAgICAgfCAxMDAzIC0+IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgMTAwNSAtPiBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgMTAwNiAtPiBBYm5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDcgLT4gSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgMTAwOCAtPiBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IDEwMDkgLT4gTWVzc2FnZV90b29fYmlnXG4gICAgICB8IDEwMTAgLT4gTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgMTAxMSAtPiBJbnRlcm5hbF9lcnJvclxuICAgICAgfCAxMDEyIC0+IFNlcnZpY2VfcmVzdGFydFxuICAgICAgfCAxMDEzIC0+IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCAxMDE0IC0+IEJhZF9nYXRld2F5XG4gICAgICB8IDEwMTUgLT4gVExTX2hhbmRzaGFrZVxuICAgICAgfCBjb2RlIC0+XG4gICAgICAgIGlmIGNvZGUgPj0gMzAwMCAmJiBjb2RlIDw9IDQ5OTlcbiAgICAgICAgdGhlbiBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgICAgICBlbHNlIEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgOztcblxuICAgIGxldCBvZl9ldmVudCBjbG9zZV9ldmVudCA9IG9mX2ludCBjbG9zZV9ldmVudCMjLmNvZGVcblxuICAgIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgICAgfCBOb3JtYWxfY2xvc3VyZSAtPiAxMDAwXG4gICAgICB8IEdvaW5nX2F3YXkgLT4gMTAwMVxuICAgICAgfCBQcm90b2NvbF9lcnJvciAtPiAxMDAyXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGEgLT4gMTAwM1xuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWQgLT4gMTAwNVxuICAgICAgfCBBYm5vcm1hbF9jbG9zdXJlIC0+IDEwMDZcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGEgLT4gMTAwN1xuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uIC0+IDEwMDhcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIC0+IDEwMDlcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb24gLT4gMTAxMFxuICAgICAgfCBJbnRlcm5hbF9lcnJvciAtPiAxMDExXG4gICAgICB8IFNlcnZpY2VfcmVzdGFydCAtPiAxMDEyXG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlciAtPiAxMDEzXG4gICAgICB8IEJhZF9nYXRld2F5IC0+IDEwMTRcbiAgICAgIHwgVExTX2hhbmRzaGFrZSAtPiAxMDE1XG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IFwidG9faW50IC0+IG9mX2ludCByb3VuZC10cmlwXCIgPVxuICAgICAgTGlzdC5pdGVyIGFsbCB+ZjooZnVuIHQgLT4gYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIChvZl9pbnQgKHRvX2ludCB0KSkgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGNsb3NlX3dlYnNvY2tldCAod2Vic29ja2V0IDogV2ViU29ja2V0cy53ZWJTb2NrZXQgSnMudCkgcmVhc29uID1cbiAgICAoKiBbY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25dIGRvZXMgbm90aGluZyBpZiB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IENsb3NlZC4gKilcbiAgICBsZXQgY2xvc2UgcmVhc29uID1cbiAgICAgICgqIFRoZSBjb2RlIG11c3QgYmUgZWl0aGVyIDEwMDAgKE5vcm1hbF9jbG9zdXJlKSwgb3IgYmV0d2VlbiAzMDAwIGFuZCA0OTk5XG4gICAgICAgICAoVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlKS4gKilcbiAgICAgIHdlYnNvY2tldCMjY2xvc2Vfd2l0aENvZGVBbmRSZWFzb25cbiAgICAgICAgQ2xvc2VfY29kZS4odG9faW50IG5vcm1hbF9jbG9zdXJlKVxuICAgICAgICAoSnMuc3RyaW5nIHJlYXNvbilcbiAgICBpblxuICAgIG1hdGNoIGNsb3NlIHJlYXNvbiB3aXRoXG4gICAgfCAoKSAtPiAoKVxuICAgIHwgZXhjZXB0aW9uIChfIDogRXhuLnQpIC0+XG4gICAgICAoKiB0aGlzIGNhbiBmYWlsIGlmIFtyZWFzb25dIGlzIHRvbyBsb25nIG9yIGNvbnRhaW5zIGludmFsaWQgVVRGOCAqKVxuICAgICAgY2xvc2UgXCJjbG9zZS1yZWFzb24td2FzLXRvby1sb25nLW9yLWNvbnRhaW5zLWludmFsaWQtdXRmOFwiXG4gIDs7XG5cbiAgbGV0IGNvbm5lY3Rfd2Vic29ja2V0IHVybCB+ZnJvbV9zZXJ2ZXIgfnRvX3NlcnZlciA9XG4gICAgbWF0Y2ggbmV3JWpzIFdlYlNvY2tldHMud2ViU29ja2V0IChKcy5zdHJpbmcgKFVyaS50b19zdHJpbmcgdXJsKSkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEpzX2Vycm9yLkV4biBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzX2Vycm9yLm1lc3NhZ2UgZXhuKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IHJlYyBleHRyYWN0X2pzX2Vycm9yIChleG4gOiBleG4pIDogKHN0cmluZyBsaXN0ICogSnNfZXJyb3IudCkgb3B0aW9uID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBFeG4uUmVyYWlzZWQgKG1zZywgZXhuKSAtPlxuICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgIHwgU29tZSAobWVzc2FnZXMsIGpzX2Vycm9yKSAtPiBTb21lIChtc2cgOjogbWVzc2FnZXMsIGpzX2Vycm9yKVxuICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfCBleG4gLT5cbiAgICAobWF0Y2ggSnNfZXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgIHwgU29tZSBqc19lcnJvciAtPiBTb21lIChbXSwganNfZXJyb3IpXG4gICAgIHwgTm9uZSAtPiBOb25lKVxuOztcblxubGV0IHByZXR0eV9wcmludF9leGNlcHRpb24gbmFtZSBleG4gPVxuICBsZXQgZXhuID0gQXN5bmNfa2VybmVsLk1vbml0b3IuZXh0cmFjdF9leG4gZXhuIGluXG4gIGxldCBjbGFzc2lmaWNhdGlvbiA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gYEpzIGVyclxuICAgIHwgZXhuIC0+XG4gICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgIHwgTm9uZSAtPiBgRXhuIGV4blxuICAgICAgIHwgU29tZSBlcnIgLT4gYEpzX2FuZF9leG4gKGV4biwgZXJyKSlcbiAgaW5cbiAgbWF0Y2ggY2xhc3NpZmljYXRpb24gd2l0aFxuICB8IGBKcyBlcnIgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgZXJyXG4gIHwgYEV4biBleG4gLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKVxuICB8IGBKc19hbmRfZXhuIChleG4sIChtZXNzYWdlcywgZXJyKSkgLT5cbiAgICAobWF0Y2ggbWVzc2FnZXMgd2l0aFxuICAgICB8IFtdIC0+IEZpcmVidWcuY29uc29sZSMjZ3JvdXAgKEpzLnN0cmluZyBuYW1lKVxuICAgICB8IGhkIDo6IHJlc3QgLT5cbiAgICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwIChKcy5zdHJpbmcgaGQpO1xuICAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgbmFtZSk7XG4gICAgICAgTGlzdC5pdGVyIHJlc3QgfmY6KGZ1biBtZXNzYWdlIC0+IEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyBtZXNzYWdlKSkpO1xuICAgICgqIFdlIGZpcnN0IG91dHB1dCB0aGUgc3RyaW5naWZpZWQgb2NhbWwgZXhjZXB0aW9uICopXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cENvbGxhcHNlZCAoSnMuc3RyaW5nIFwiT0NhbWwgRXhjZXB0aW9uXCIpO1xuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSk7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cEVuZDtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIGVycjtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzX2Vycm9yLkV4biBlcnIgLT4gSnNfZXJyb3IucmFpc2VfIGVyclxuICAgICAgICB8IGV4biAtPlxuICAgICAgICAgIChtYXRjaCBKc19lcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIGV4blxuICAgICAgICAgICB8IFNvbWUgZXJyIC0+XG4gICAgICAgICAgICAgKCogSGFjayB0byBnZXQgYSBiZXR0ZXIgYmFja3RyYWNlICopXG4gICAgICAgICAgICAgcHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkVycm9yOlwiIGV4bjtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKc19lcnJvci5yYWlzZV8gZXJyKSk7XG4gICAgICAobWF0Y2ggbmV4dF93YWtldXAgd2l0aFxuICAgICAgIHwgTm9fd2FrZXVwIC0+IHN0YXRlIDo9IElkbGVcbiAgICAgICB8IFNvb24gLT5cbiAgICAgICAgIHN0YXRlIDo9IFdpbGxfcnVuX3Nvb247XG4gICAgICAgICBydW5fYWZ0ZXIgfmY6bG9vcCB+bXM6MC5cbiAgICAgICB8IEF0IChhdCwgZF9tcykgLT5cbiAgICAgICAgIHN0YXRlIDo9IElkbGU7XG4gICAgICAgICBpZiBTdGFjay5pc19lbXB0eSB0aW1lb3V0cyB8fCBUaW1lX25zLiggPCApIGF0IChTdGFjay50b3BfZXhuIHRpbWVvdXRzKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIFN0YWNrLnB1c2ggdGltZW91dHMgYXQ7XG4gICAgICAgICAgIHJ1bl9hZnRlciB+ZjpydW5fdGltZW91dCB+bXM6ZF9tcykpXG4gIGFuZCBydW5fdGltZW91dCAoKSA9XG4gICAgKCogRWFjaCBjYWxsIHRvIFtydW5fdGltZW91dF0gcmVtb3ZlcyBleGFjdGx5IG9uZSBlbGVtZW50IGZyb20gW3RpbWVvdXRzXS4gIFRoaXNcbiAgICAgICBtYWludGFpbnMgdGhlIGludmFyaWFudCB0aGF0IFtTdGFjay5sZW5ndGggdGltZW91dHNdIGlzIGV4YWN0bHkgdGhlIG51bWJlciBvZlxuICAgICAgIG91dHN0YW5kaW5nIHRpbWVvdXRzIHdlIGhhdmUgcmVnaXN0ZXJlZC4gKilcbiAgICBpZ25vcmUgKFN0YWNrLnBvcF9leG4gdGltZW91dHMgOiBUaW1lX25zLnQpO1xuICAgIGxvb3AgKClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IFN0YXRlLklkbGUgLT5cbiAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLjtcbiAgICAgIHN0YXRlIDo9IFN0YXRlLldpbGxfcnVuX3Nvb25cbiAgICB8IFN0YXRlLlJ1bm5pbmcgfCBTdGF0ZS5XaWxsX3J1bl9zb29uIC0+ICgpXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gICAgIDo9IHByZXR0eV9wcmludF9leGNlcHRpb24gXCJBc3luY19rZXJuZWw6IE1vbml0b3IudHJ5X3dpdGhcIjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9yc1xuICAgICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLm1haW5cbiAgICAgICB+ZjoocHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkFzeW5jX2tlcm5lbDogVW5oYW5kbGVkIGV4Y2VwdGlvblwiKTtcbiAgICAgcnVuICgpKVxuOztcblxubGV0IGluaXQgKCkgPSBmb3JjZSBpbml0aWFsaXphdGlvblxubGV0IGluaXRpYWxpemVkICgpID0gIWluaXRpYWxpemVkX3JlZlxuXG5sZXQgZG9jdW1lbnRfbG9hZGVkID1cbiAgbGV0IGpzX3N0cmluZ19jb21wYXJlIHMgPVxuICAgIGxldCBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzID0gcGh5c19lcXVhbCBpblxuICAgIGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgKEpzLnN0cmluZyBzKVxuICBpblxuICBsZXQgcmVhZHlfc3RhdGVfY2hhbmdlID0gXCJyZWFkeXN0YXRlY2hhbmdlXCIgaW5cbiAgbGV0IGNvbXBsZXRlID0gXCJjb21wbGV0ZVwiIGluXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlX2V2ID0gRG9tLkV2ZW50Lm1ha2UgcmVhZHlfc3RhdGVfY2hhbmdlIGluXG4gIGxldCBhZGRfZXZlbnQgdGFyZ2V0IGV2dCBoYW5kbGVyID1cbiAgICBpZ25vcmVcbiAgICAgIChEb21faHRtbC5hZGRFdmVudExpc3RlbmVyIHRhcmdldCBldnQgaGFuZGxlciBKcy5fZmFsc2UgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIGlmIGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgIHRoZW4gQXN5bmNfa2VybmVsLkRlZmVycmVkLnVuaXRcbiAgICBlbHNlIChcbiAgICAgIGxldCBsb2FkZWQgPSBBc3luY19rZXJuZWwuSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBoYW5kbGVyIGV2dCA9XG4gICAgICAgIGlmIChub3QgKGpzX3N0cmluZ19jb21wYXJlIHJlYWR5X3N0YXRlX2NoYW5nZSBldnQjIy5fdHlwZSkpXG4gICAgICAgIHx8IGpzX3N0cmluZ19jb21wYXJlIGNvbXBsZXRlIERvbV9odG1sLmRvY3VtZW50IyMucmVhZHlTdGF0ZVxuICAgICAgICB0aGVuIEFzeW5jX2tlcm5lbC5JdmFyLmZpbGxfaWZfZW1wdHkgbG9hZGVkICgpO1xuICAgICAgICBKcy5fdHJ1ZVxuICAgICAgaW5cbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCBEb21faHRtbC5FdmVudC5kb21Db250ZW50TG9hZGVkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC5kb2N1bWVudCByZWFkeXN0YXRlY2hhbmdlX2V2IChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIGFkZF9ldmVudCBEb21faHRtbC53aW5kb3cgRG9tX2h0bWwuRXZlbnQubG9hZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBBc3luY19rZXJuZWwuSXZhci5yZWFkIGxvYWRlZClcbjs7XG4iLCJtb2R1bGUgUnBjID0gUnBjXG5tb2R1bGUgSHR0cCA9IEh0dHBcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5pbmNsdWRlIEFzeW5jX2pzMFxuXG5sZXQgbG9nX3MgPSBEZWJ1Zy5sb2dfc1xubGV0IGxvZ19zX2FzX3N0cmluZyA9IERlYnVnLmxvZ19zX2FzX3N0cmluZ1xuIiwib3BlbiEgQmFzZVxuXG4oKiBUaGUgW2RhdGFdIGFycmF5IGlzIGFuIGltcGxpY2l0IGJpbmFyeSB0cmVlIHdpdGggW2NoaWxkcmVuX2xlbmd0aCAqIDIgLSAxXSBub2RlcyxcbiAgIHdpdGggZWFjaCBub2RlIGJlaW5nIHRoZSBzdW0gb2YgdGhlIHR3byBjaGlsZCBub2RlcyBhbmQgdGhlIHJvb3Qgbm9kZSBiZWluZyB0aGUgMHRoXG4gICBub2RlLiAgVGhlIGxlYXZlcyBvZiB0aGUgdHJlZSBhcmUgdGhlIGxhc3QgW251bV9sZWF2ZXNdIG5vZGVzLlxuXG4gICBUaGUgY2hpbGRyZW4gYXJlIG5vdCBuZWNlc3NhcmlseSBhbGwgYXQgdGhlIHNhbWUgbGV2ZWwgb2YgdGhlIHRyZWUuIEZvciBpbnN0YW5jZSBpZlxuICAgeW91IGhhdmUgMyBjaGlsZHJlbiBbfCBhOyBiOyBjIHxdOlxuXG4gICB7dlxuICAgICAgICAgIG9cbiAgICAgICAgIC8gXFxcbiAgICAgICAgbyAgIGNcbiAgICAgICAvIFxcXG4gICAgICBhICAgYlxuICAgdn1cblxuICAgV2Ugd2FudCB0aGlzIHRyZWUgdG8gYmUgcmVwcmVzZW50YXRlZCBhcyBbfCBvOyBvOyBjOyBhOyBiIHxdLCBpLmUuIHdlIG5lZWQgdG8gYXBwbHlcbiAgIGZpcnN0IGEgcm90YXRpb24gdGhlbiBhIHRyYW5zbGF0aW9uIHRvIGNvbnZlcnQgYW4gaW5kZXggaW4gW3wgYTsgYjsgYyB8XSB0byBhIChsZWFmKVxuICAgaW5kZXggaW4gW3wgbzsgbzsgYzsgYTsgYiB8XS4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgZGF0YSA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgbnVtX2xlYXZlcyA6IGludFxuICA7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA6IGludFxuICA7IHJlZHVjZSA6ICdhIC0+ICdhIC0+ICdhXG4gIDsgc2V4cF9vZl9hIDogJ2EgLT4gU2V4cC50XG4gIH1cblxubGV0IGxlbmd0aCB0ID0gdC5udW1fbGVhdmVzXG5cbigqIHt2XG4gICAgIHBhcmVudDogICAgICAwICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IC4uLlxuICAgICBsZWZ0IGNoaWxkOiAgMSAgMyAgNSAgNyAgOSAxMSAxMyAxNSAxNyAxOSAyMSAyMyAyNSAyNyAyOSAzMSAzMyAzNSAzNyAzOSAuLi5cbiAgICAgcmlnaHQgY2hpbGQ6IDIgIDQgIDYgIDggMTAgMTIgMTQgMTYgMTggMjAgMjIgMjQgMjYgMjggMzAgMzIgMzQgMzYgMzggNDAgLi4uIHZ9ICopXG5sZXQgcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleCA9IChjaGlsZF9pbmRleCAtIDEpIC8gMlxubGV0IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleCA9IChwYXJlbnRfaW5kZXggKiAyKSArIDFcbmxldCByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleCA9IGxlZnRfY2hpbGRfaW5kZXggKyAxXG5cbigqIFRoZSBmaXJzdCBbbnVtX2xlYXZlcy0xXSBlbGVtZW50cyBhcmUgaW50ZXJuYWwgbm9kZXMgb2YgdGhlIHRyZWUuICBUaGUgbmV4dFxuICAgW251bV9sZWF2ZXNdIGVsZW1lbnRzIGFyZSB0aGUgbGVhdmVzLiAqKVxubGV0IG51bV9icmFuY2hlcyB0ID0gdC5udW1fbGVhdmVzIC0gMVxubGV0IGluZGV4X2lzX2xlYWYgdCBpID0gaSA+PSBudW1fYnJhbmNoZXMgdFxuXG4oKiBUaGUgdHJlZSBpcyBjb21wbGV0ZSwgYnV0IG5vdCBuZWNlc3NhcmlseSBwZXJmZWN0LCBzbyB3ZSBwZXJmb3JtIHNvbWUgcm90YXRpb24gb2YgdGhlXG4gICBsZWF2ZXMgdG8gZW5zdXJlIHRoYXQgb3VyIHJlZHVjdGlvbnMgcHJlc2VydmUgb3JkZXJpbmcuICopXG5sZXQgbGVhZl9pbmRleCB0IGkgPVxuICAoKiBUaGUgdHJlZSBsYXlvdXQgaXMgbGV2ZWwgb3JkZXIuICBBbnkgbGVhdmVzIGluIHRoZSBzZWNvbmQgdG8gbGFzdCBsZXZlbCBuZWVkIHRvIG9jY3VyXG4gICAgIGluIHRoZSBhcnJheSBiZWZvcmUgdGhlIGxlYXZlcyBpbiB0aGUgYm90dG9tIGxldmVsLiAqKVxuICBsZXQgcm90YXRlZF9pbmRleCA9XG4gICAgbGV0IG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA9IGkgKyB0Lm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCBpblxuICAgIGlmIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSA8IHQubnVtX2xlYXZlc1xuICAgIHRoZW4gb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5XG4gICAgZWxzZSBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgLSB0Lm51bV9sZWF2ZXNcbiAgaW5cbiAgKCogVGhlIGxlYXZlcyBvY2N1ciBhZnRlciB0aGUgYnJhbmNoZXMgaW4gdGhlIGFycmF5LiAqKVxuICByb3RhdGVkX2luZGV4ICsgbnVtX2JyYW5jaGVzIHRcbjs7XG5cbmxldCBnZXRfbGVhZiB0IGkgPSBPcHRpb25fYXJyYXkuZ2V0IHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG5sZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldF9sZWFmIHQgaSlcbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHRvX2xpc3QgdCA6IGEgb3B0aW9uIGxpc3QpXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBmb3IgaSA9IDAgdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBkYXRhIC0gMSBkb1xuICAgIG1hdGNoIE9wdGlvbl9hcnJheS5nZXQgZGF0YSBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBudW1fYnJhbmNoZXMgdCAtIDEgZG9cbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGxldCBsZWZ0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIGxlZnQgaW5cbiAgICBsZXQgcmlnaHRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcmlnaHQgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSBkYXRhIGlcbiAgICB0aGVuIGFzc2VydCAobm90IChsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSkpXG4gICAgZWxzZVxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgaW5kZXhfaXNfbGVhZiB0IGxlZnQgfHwgaW5kZXhfaXNfbGVhZiB0IHJpZ2h0IHx8IGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlX2V4biA/KHNleHBfb2ZfYSA9IFslc2V4cF9vZjogX10pICgpIH5sZW46bnVtX2xlYXZlcyB+cmVkdWNlID1cbiAgaWYgbnVtX2xlYXZlcyA8IDFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIm5vbi1wb3NpdGl2ZSBudW1iZXIgb2YgbGVhdmVzIGluIGJhbGFuY2VkIHJlZHVjZXJcIiAobnVtX2xlYXZlcyA6IGludCldO1xuICBsZXQgbnVtX2JyYW5jaGVzID0gbnVtX2xlYXZlcyAtIDEgaW5cbiAgbGV0IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCA9IEludC5jZWlsX3BvdzIgbnVtX2xlYXZlcyAtIG51bV9sZWF2ZXMgaW5cbiAgbGV0IGRhdGEgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KG51bV9icmFuY2hlcyArIG51bV9sZWF2ZXMpIGluXG4gIHsgZGF0YTsgbnVtX2xlYXZlczsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsOyByZWR1Y2U7IHNleHBfb2ZfYSB9XG47O1xuXG5sZXQgdmFsaWRhdGVfaW5kZXggdCBpID1cbiAgaWYgaSA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcImF0dGVtcHQgdG8gYWNjZXNzIG5lZ2F0aXZlIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIiB+aW5kZXg6KGkgOiBpbnQpXTtcbiAgbGV0IGxlbmd0aCA9IHQubnVtX2xlYXZlcyBpblxuICBpZiBpID49IGxlbmd0aFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiYXR0ZW1wdCB0byBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCJcbiAgICAgICAgICB+aW5kZXg6KGkgOiBpbnQpXG4gICAgICAgICAgKGxlbmd0aCA6IGludCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGkgYSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgbGV0IGkgPSByZWYgKGxlYWZfaW5kZXggdCBpKSBpblxuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZGF0YSAhaSBhO1xuICB3aGlsZSAhaSA8PiAwIGRvXG4gICAgbGV0IHBhcmVudCA9IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXg6IWkgaW5cbiAgICBpZiBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHBhcmVudFxuICAgIHRoZW4gaSA6PSAwXG4gICAgZWxzZSAoXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIGRhdGEgcGFyZW50O1xuICAgICAgaSA6PSBwYXJlbnQpXG4gIGRvbmVcbjs7XG5cbmxldCBnZXRfZXhuIHQgaSA9XG4gIHZhbGlkYXRlX2luZGV4IHQgaTtcbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxuOztcblxubGV0IHJlYyBjb21wdXRlX2V4biB0IGkgPVxuICBpZiBPcHRpb25fYXJyYXkuaXNfc29tZSB0LmRhdGEgaVxuICB0aGVuIE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZGF0YSBpXG4gIGVsc2UgKFxuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgaWYgbGVmdCA+PSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZGF0YVxuICAgIHRoZW4gKFxuICAgICAgKCogSWYgd2UgZ2V0IGhlcmUsIHRoZSBwYXJlbnQgd2FzIGFuIHVuc2V0IGxlYWYuICopXG4gICAgICBsZXQgc2V4cF9vZl9hID0gdC5zZXhwX29mX2EgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJhdHRlbXB0IHRvIGNvbXB1dGUgYmFsYW5jZWQgcmVkdWNlciB3aXRoIHVuc2V0IGVsZW1lbnRzXCJcbiAgICAgICAgICAgIH5iYWxhbmNlZF9yZWR1Y2VyOih0IDogYSB0KV0pO1xuICAgIGxldCBhID0gdC5yZWR1Y2UgKGNvbXB1dGVfZXhuIHQgbGVmdCkgKGNvbXB1dGVfZXhuIHQgcmlnaHQpIGluXG4gICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmRhdGEgaSBhO1xuICAgIGEpXG47O1xuXG5sZXQgY29tcHV0ZV9leG4gdCA9IGNvbXB1dGVfZXhuIHQgMFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGluaXQgOiAnYVxuICA7IHN0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB7IGluaXQ7IHN0ZXBzID0gXyB9ID0gaW52YXJpYW50X2EgaW5pdFxuXG5sZXQgcmVjIHZhbHVlX2ludGVybmFsIGluaXQgc3RlcHMgfmF0ID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSAoKHQsIGEpLCBzdGVwcykgLT5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IHQgdGhlbiBpbml0IGVsc2UgdmFsdWVfaW50ZXJuYWwgYSBzdGVwcyB+YXRcbjs7XG5cbmxldCB2YWx1ZSB0IH5hdCA9IHZhbHVlX2ludGVybmFsIHQuaW5pdCB0LnN0ZXBzIH5hdFxubGV0IGNvbnN0YW50IGluaXQgPSB7IGluaXQ7IHN0ZXBzID0gU2VxdWVuY2UuZW1wdHkgfVxuXG5sZXQgY3JlYXRlX2V4biB+aW5pdCB+c3RlcHMgPVxuICBpZiBub3RcbiAgICAgICAoTGlzdC5pc19zb3J0ZWQgc3RlcHMgfmNvbXBhcmU6KGZ1biAodGltZTEsIF8pICh0aW1lMiwgXykgLT5cbiAgICAgICAgICBUaW1lX25zLmNvbXBhcmUgdGltZTEgdGltZTIpKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1N0ZXBfZnVuY3Rpb24uY3JlYXRlX2V4bl0gZ290IHVuc29ydGVkIHRpbWVzXCJcbiAgICAgICAgICB+c3RlcHM6KHN0ZXBzIHw+IExpc3QubWFwIH5mOmZzdCA6IFRpbWVfbnMudCBsaXN0KV07XG4gIHsgaW5pdDsgc3RlcHMgPSBzdGVwcyB8PiBTZXF1ZW5jZS5vZl9saXN0IH1cbjs7XG5cbmxldCBjcmVhdGVfZnJvbV9zZXF1ZW5jZSB+aW5pdCB+c3RlcHMgPSB7IGluaXQ7IHN0ZXBzIH1cbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFdlYWsgPSBTdGRsaWIuV2Vha1xuXG50eXBlICdhIHQgPSAnYSBIZWFwX2Jsb2NrLnQgV2Vhay50XG5cbmxldCBjcmVhdGUgfmxlbiA9IFdlYWsuY3JlYXRlIGxlblxubGV0IGxlbmd0aCB0ID0gV2Vhay5sZW5ndGggdFxubGV0IHNldCA9IFdlYWsuc2V0XG5cbmxldCBzZXRfZXhuIHQgaSB4ID0gc2V0IHQgaSAoT3B0aW9uLm1hcCB4IH5mOkhlYXBfYmxvY2suY3JlYXRlX2V4bilcblxubGV0IGdldCA9IFdlYWsuZ2V0XG5sZXQgaXNfc29tZSB0IGkgPSBXZWFrLmNoZWNrIHQgaVxubGV0IGlzX25vbmUgdCBpID0gbm90IChpc19zb21lIHQgaSlcbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXQgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cF9vZjogYSBIZWFwX2Jsb2NrLnQgb3B0aW9uIGFycmF5XSAodG9fYXJyYXkgdClcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZ2V0IHQgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gZiBpIChIZWFwX2Jsb2NrLnZhbHVlIHYpXG4gIGRvbmVcblxubGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBXZWFrLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4iLCIoKiBXZSBpbXBsZW1lbnQgYSB3ZWFrIHBvaW50ZXIgdXNpbmcgYSBbV2Vha19hcnJheS50XS4gKilcblxub3BlbiEgQmFzZVxuXG50eXBlICdhIHQgPSAnYSBXZWFrX2FycmF5LnRcblxubGV0IGNyZWF0ZSAoKSA9IFdlYWtfYXJyYXkuY3JlYXRlIH5sZW46MVxuXG4oKiBXZSB1c2UgYSB3ZWFrIGFycmF5IG9mIGxlbmd0aCAxLCBzbyB0aGUgd2VhayBwb2ludGVyIGlzIGF0IGluZGV4IDAuICopXG5sZXQgaW5kZXggPSAwXG5cbmxldCBnZXQgdCA9IFdlYWtfYXJyYXkuZ2V0IHQgaW5kZXhcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAoZ2V0IHQgOiBhIEhlYXBfYmxvY2sudCBvcHRpb24pXVxuXG5sZXQgaXNfbm9uZSB0ID0gV2Vha19hcnJheS5pc19ub25lIHQgaW5kZXhcbmxldCBpc19zb21lIHQgPSBXZWFrX2FycmF5LmlzX3NvbWUgdCBpbmRleFxuXG5sZXQgc2V0IHQgYmxvY2sgPSBXZWFrX2FycmF5LnNldCB0IGluZGV4IChTb21lIGJsb2NrKVxuIiwib3BlbiEgQmFzZVxuXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgnYSwgJ2IgV2Vha19wb2ludGVyLnQpIEhhc2h0YmwudFxuICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgICAgICAgICAgOiAnYSBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA6IHVuaXQgLT4gdW5pdFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGUgPVxuICAgIHsgZW50cnlfYnlfa2V5ICAgICAgICAgICAgICAgICAgICAgPVxuICAgICAgICBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemVcbiAgICAgICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG5cbiAgICA7IGtleXNfd2l0aF91bnVzZWRfZGF0YSAgICAgICAgICAgID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSA9IGlnbm9yZVxuICAgIH1cbiAgOztcbmVuZFxuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID1cbiAgVXNpbmdfaGFzaGFibGUuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgKGRhdGEgOiBfIEhlYXBfYmxvY2sudCkgPVxuICBXZWFrX3BvaW50ZXIuc2V0IGVudHJ5IGRhdGE7XG4gIGxldCBjbGVhbnVwICgpID1cbiAgICBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT5cbiAgICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEga2V5O1xuICAgICAgdC50aHJlYWRfc2FmZV9ydW5fd2hlbl91bnVzZWRfZGF0YSAoKSlcbiAgaW5cbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IGNsZWFudXAgZGF0YSB3aXRoXG4gICgqIEluIHRoaXMgY2FzZSwgW3hdIGlzIGtub3duIHRvIGJlIHN0YXRpYyBkYXRhLCB3aGljaCB3aWxsXG4gICAgIG5ldmVyIGJlIGNvbGxlY3RlZCBieSB0aGUgR0MgYW55d2F5LCBzbyBpdCdzIHNhZmUgdG8gZHJvcCAqKVxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiAoKVxuXG47O1xuXG5sZXQgcmVwbGFjZSB0IH5rZXkgfmRhdGEgPSBzZXRfZGF0YSB0IGtleSAoZ2V0X2VudHJ5IHQga2V5KSBkYXRhXG5cbmxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBpZiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiV2Vha19oYXNodGJsLmFkZF9leG4gb2Yga2V5IGluIHVzZVwiIH5fOih0IDogKF8sIF8pIHQpIFslaGVyZV1dO1xuICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuOztcblxubGV0IGZpbmQgdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5nZXQgZW50cnlcbjs7XG5cbmxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gIGxldCBlbnRyeSA9IGdldF9lbnRyeSB0IGtleSBpblxuICBtYXRjaCBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5IHdpdGhcbiAgfCBTb21lIHYgLT4gdlxuICB8IE5vbmUgLT5cbiAgICBsZXQgZGF0YSA9IGRlZmF1bHQgKCkgaW5cbiAgICBzZXRfZGF0YSB0IGtleSBlbnRyeSBkYXRhO1xuICAgIGRhdGFcbjs7XG4iLCJ0eXBlIHQgPVxuICB8IEJlZm9yZVxuICB8IEFmdGVyXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuIiwiWyUlaW1wb3J0IFwiZGVidWcubWxoXCJdXG5cbm9wZW4gQ29yZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuXG5sZXQgcmVyYWlzZV93aXRoX21lc3NhZ2UgeyBleG47IGJhY2t0cmFjZSB9IG1zZyA9XG4gIEV4bi5yYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSAoRXhuLlJlcmFpc2VkIChtc2csIGV4bikpIGJhY2t0cmFjZVxuOztcblxubGV0IHJlcmFpc2UgeyBleG47IGJhY2t0cmFjZSB9ID0gRXhuLnJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIGV4biBiYWNrdHJhY2VcbiIsIigqIFRoaXMgbW9kdWxlIGhhcyBhIGdpYW50IFttb2R1bGUgcmVjXSBkZWZpbmluZyBhbGwgdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSB0eXBlcyB1c2VkXG4gICBpbiB0aGUgaW1wbGVtZW50YXRpb24uICBUaGUgZGVmaW5pdGlvbiBvZiBlYWNoIHR5cGUgaXMgdGhlbiByZXBlYXRlZCBpbiBpdHMgZmlsZTtcbiAgIGNvbW1lbnRzIGJlbG9uZyB0aGVyZSwgbm90IGhlcmUuXG5cbiAgIFdlIHB1dCBqdXN0IGVub3VnaCBzZXhwIGNvbnZlcnRlcnMgaGVyZSB0byBkaXNwbGF5IG5vZGUgaWRzLiAgVGhlIGRldGFpbGVkIHNleHBcbiAgIGNvbnZlcnRlcnMgYXJlIGdlbmVyYXRlZCB2aWEgW3dpdGggc2V4cF0gaW4gdGhlIGluZGl2aWR1YWwgZmlsZXMuICBEZWZpbmluZyB0aGUgc2V4cFxuICAgY29udmVydGVycyBvdXRzaWRlIG9mIHRoZSBbbW9kdWxlIHJlY10gbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBhY2NpZGVudGFsbHkgaW50cm9kdWNlIGFcbiAgIHNleHAgY29udmVydGVyIHRoYXQgd291bGQgdHJ5IHRvIHByb2R1Y2UgYW4gaW5maW5pdGUgc2V4cC5cbiopXG5cbm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIHJlYyBBZGp1c3RfaGVpZ2h0c19oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIEFkanVzdF9oZWlnaHRzX2hlYXBcblxuYW5kIEFsYXJtIDogc2lnXG4gIHR5cGUgdCA9IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbmVuZCA9XG4gIEFsYXJtXG5cbmFuZCBBbGFybV92YWx1ZSA6IHNpZ1xuICBtb2R1bGUgQWN0aW9uIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgQXQudFxuICAgICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICAgIHwgU25hcHNob3QgOiBfIFNuYXBzaG90LnQgLT4gdFxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogdCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBBbGFybV92YWx1ZVxuXG5hbmQgQXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICB9XG5lbmQgPVxuICBBcnJheV9mb2xkXG5cbmFuZCBBdCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdFxuXG5hbmQgQXRfaW50ZXJ2YWxzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBjbG9jayA6IENsb2NrLnRcbiAgICB9XG5lbmQgPVxuICBBdF9pbnRlcnZhbHNcblxuYW5kIEJpbmQgOiBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgICA7IG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50XG4gICAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICAgIDsgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gICAgOyBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQmluZFxuXG5hbmQgQ2xvY2sgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IHRpbWluZ193aGVlbCA6IEFsYXJtX3ZhbHVlLnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG5vdyA6IFRpbWVfbnMudCBWYXIudFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogQWxhcm0udCAtPiB1bml0XG4gICAgOyBtdXRhYmxlIGZpcmVkX2FsYXJtX3ZhbHVlcyA6IEFsYXJtX3ZhbHVlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgQ2xvY2tcblxuYW5kIEV4cGVydCA6IHNpZ1xuICB0eXBlICdhIGVkZ2UgPVxuICAgIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgICA7IG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgcGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZSBbQEB1bmJveGVkXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBmIDogdW5pdCAtPiAnYVxuICAgIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG51bV9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgICA7IG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gICAgfVxuZW5kID1cbiAgRXhwZXJ0XG5cbmFuZCBGcmVlemUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gICAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICAgIH1cbmVuZCA9XG4gIEZyZWV6ZVxuXG5hbmQgSWZfdGhlbl9lbHNlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICAgIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgICB9XG5lbmQgPVxuICBJZl90aGVuX2Vsc2VcblxuYW5kIEludGVybmFsX29ic2VydmVyIDogc2lnXG4gIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IENyZWF0ZWRcbiAgICAgIHwgSW5fdXNlXG4gICAgICB8IERpc2FsbG93ZWRcbiAgICAgIHwgVW5saW5rZWRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fb2JzZXJ2aW5nIDogJ2EgdCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIH1cblxuICB0eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyBpbnRlcm5hbF9vYnNlcnZlciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXJcblxuYW5kIEpvaW4gOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gICAgfVxuZW5kID1cbiAgSm9pblxuXG5hbmQgS2luZCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gICAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gICAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gICAgfCBDb25zdCBvZiAnYVxuICAgIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gICAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICAgIHwgSW52YWxpZFxuICAgIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gICAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gICAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICAgIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICAgIHwgVW5pbml0aWFsaXplZFxuICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgVmFyIG9mICdhIFZhci50XG4gICAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICAgIHwgTWFwNCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA1IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNiA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwNyA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA4IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwOSA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTAgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMSA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEyIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMyA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxNCA6XG4gICAgICAgICgnYTFcbiAgICAgICAgIC0+ICdhMlxuICAgICAgICAgLT4gJ2EzXG4gICAgICAgICAtPiAnYTRcbiAgICAgICAgIC0+ICdhNVxuICAgICAgICAgLT4gJ2E2XG4gICAgICAgICAtPiAnYTdcbiAgICAgICAgIC0+ICdhOFxuICAgICAgICAgLT4gJ2E5XG4gICAgICAgICAtPiAnYTEwXG4gICAgICAgICAtPiAnYTExXG4gICAgICAgICAtPiAnYTEyXG4gICAgICAgICAtPiAnYTEzXG4gICAgICAgICAtPiAnYTE0XG4gICAgICAgICAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAqICdhOSBOb2RlLnRcbiAgICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgICAqICdhMTEgTm9kZS50XG4gICAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgICAqICdhMTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE1IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhMTVcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG5lbmQgPVxuICBLaW5kXG5cbmFuZCBOb2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBpZCA6IE5vZGVfaWQudFxuICAgIDsgc3RhdGUgOiBTdGF0ZS50XG4gICAgOyBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gICAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gICAgOyBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7XG4gICAgICBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBwYXJlbnQwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gICAgOyBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBvYnNlcnZlcnMgOiAnYSBJbnRlcm5hbF9vYnNlcnZlci50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gICAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICAgIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl0gW0BAdW5ib3hlZF1cbiAgZW5kXG5cbiAgdmFsIGlzX3ZhbGlkIDogXyB0IC0+IGJvb2xcbiAgdmFsIGlzX25lY2Vzc2FyeSA6IF8gdCAtPiBib29sXG4gIHZhbCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnQgb3B0aW9uXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgTm9kZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuICAgIGVuZFxuICAgIHdpdGggbW9kdWxlIFBhY2tlZCA6PSBOb2RlLlBhY2tlZClcblxuICBsZXQgc2V4cF9vZl90IF8gdCA9IGNvbmNhdCBbIFwiblwiOyBOb2RlX2lkLnRvX3N0cmluZyB0LmlkIF0gfD4gWyVzZXhwX29mOiBzdHJpbmddXG5cbiAgbW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIHQgPSBUIDogXyBub2RlIC0+IHQgW0BAdW5ib3hlZF1cblxuICAgIGxldCBzZXhwX29mX3QgKFQgdCkgPSB0IHw+IFslc2V4cF9vZjogXyBub2RlXVxuICBlbmRcblxuICBsZXQgaXNfdmFsaWQgdCA9XG4gICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICB8IEludmFsaWQgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICA7O1xuXG4gICgqIFtpc19uZWNlc3NhcnldIGlzIGRlZmluZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgaXQgYmVmb3JlIG5vZGUubWwgaXMgYXZhaWxhYmxlLiAgSXQgaXNcbiAgICAgdXNlZCBkdXJpbmcgZ3JhcGggbWFuaXB1bGF0aW9uLCBhbmQgc28gaXMgd3JpdHRlbiB3aXRoIHNvbWUgY2FyZSB0byBiZSBmYXN0LiAqKVxuICBsZXQgaXNfbmVjZXNzYXJ5IHQgPVxuICAgIHQubnVtX3BhcmVudHMgPiAwXG4gICAgfHwgVW9wdC5pc19zb21lIHQub2JzZXJ2ZXJzXG4gICAgfHwgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICB8IEZyZWV6ZSBfIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8fCB0LmZvcmNlX25lY2Vzc2FyeVxuICA7O1xuXG4gIGxldCB0X2lzX2luamVjdGl2ZSAodHlwZSBhIGIpIChUIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpIDogKGEsIGIpIFR5cGVfZXF1YWwudCA9IFRcblxuICBsZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgKHR5cGUgYSBiKSAodDEgOiBhIHQpICh0MiA6IGIgdCkgPVxuICAgICgqIFRoaXMgaXMgdHlwZS1zYWZlIGFzc3VtaW5nIG5vIG9uZSBjYW4gZ2l2ZSB0aGUgc2FtZSBpbmNyZW1lbnRhbCBub2RlIHR3byBkaWZmZXJlbnRcbiAgICAgICB0eXBlcy4gIFRoaXMgaXMgdHJ1ZSBiZWNhdXNlIHRoZSBmaWVsZCBbbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2Egb3B0aW9uXSBwcmV2ZW50c1xuICAgICAgIGJvdGggc3VidHlwaW5nIGFuZCBwYXJhbWV0ZXJpYyBwb2x5bW9ycGhpc20uICBCdXQgdGhpcyBhbGxvd3MgdG8gYnJlYWtcbiAgICAgICBhYnN0cmFjdGlvbnMsIGFzIGluIHNvbWVvbmUgY291bGQgd3JpdGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0XG4gICAgICAgICB0eXBlIHUgKCogPSB0IHVuZGVybmVhdGggKilcbiAgICAgICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHQgSW5jci50ICogdSBJbmNyLnQgKCogdGhlIHR3byBpbmNyZW1lbnRhbHMgYXJlIHBoeXNfZXF1YWwgKilcbiAgICAgICBdfVxuXG4gICAgICAgYW5kIHdlIHdvdWxkIGZpZ3VyZSBvdXQgdGhhdCB0eXBlIHQgPSB1LiAgSG93ZXZlciwgd2UgY291bGQgYWRkIGEgVHlwZV9lcXVhbC5JZCB0b1xuICAgICAgIG5vZGVzIGFuZCBkbyB0aGUgc2FtZSwgc28gaXQgc2VlbXMgdG8gYmUgYSBtb3JlIGdlbmVyYWwgaXNzdWUuICopXG4gICAgaWYgcGh5c19zYW1lIHQxIHQyXG4gICAgdGhlbiBTb21lICh0X2lzX2luamVjdGl2ZSAoT2JqLm1hZ2ljIChUIDogXyBUeXBlX2VxdWFsLnQpIDogKGEgdCwgYiB0KSBUeXBlX2VxdWFsLnQpKVxuICAgIGVsc2UgTm9uZVxuICA7O1xuZW5kXG5cbmFuZCBPYnNlcnZlciA6IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZlxuZW5kID1cbiAgT2JzZXJ2ZXJcblxuYW5kIE9ubHlfaW5fZGVidWcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbmVuZCA9XG4gIE9ubHlfaW5fZGVidWdcblxuYW5kIFBhY2tlZF93ZWFrX2hhc2h0YmwgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG5lbmQgPVxuICBQYWNrZWRfd2Vha19oYXNodGJsXG5cbmFuZCBSZWNvbXB1dGVfaGVhcCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gICAgOyBtdXRhYmxlIG5vZGVzX2J5X2hlaWdodCA6IE5vZGUuUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICAgIH1cbmVuZCA9XG4gIFJlY29tcHV0ZV9oZWFwXG5cbmFuZCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzIDogc2lnXG4gIHR5cGUgdCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZS50IC0+IHRcbmVuZCA9XG4gIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnNcblxuYW5kIFNjb3BlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVG9wXG4gICAgfCBCaW5kIDogKF8sIF8pIEJpbmQudCAtPiB0XG5cbiAgbGV0IHNleHBfb2ZfdCA9IGZ1bmN0aW9uXG4gICAgfCBUb3AgLT4gXCJUb3BcIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICB8IEJpbmQgYmluZCAtPiBiaW5kLm1haW4gfD4gWyVzZXhwX29mOiBfIE5vZGUudF1cbiAgOztcbmVuZFxuXG5hbmQgU25hcHNob3QgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IGF0IDogVGltZV9ucy50XG4gICAgOyBiZWZvcmUgOiAnYVxuICAgIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFNuYXBzaG90XG5cbmFuZCBTdGF0ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgICA7IG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfc2NvcGUgOiBTY29wZS50XG4gICAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gICAgOyBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gICAgOyBuZXdfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgU3RhY2sudFxuICAgIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gICAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUga2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSA6IGJvb2xcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfaW52YWxpZGF0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICAgIH1cbmVuZCA9XG4gIFN0YXRlXG5cbmFuZCBTdGF0dXMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFN0YWJpbGl6aW5nXG4gICAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgIHwgTm90X3N0YWJpbGl6aW5nXG4gICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5lbmQgPVxuICBTdGF0dXNcblxuYW5kIFN0ZXBfZnVuY3Rpb25fbm9kZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gICAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIFN0ZXBfZnVuY3Rpb25fbm9kZVxuXG5hbmQgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiBzaWdcbiAgdHlwZSAoJ2EsICdhY2MpIHQgPVxuICAgIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gICAgOyBpbml0IDogJ2FjY1xuICAgIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICAgIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgOiBpbnRcbiAgICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gICAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICAgIDsgbXV0YWJsZSBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA6IGludFxuICAgIH1cbmVuZCA9XG4gIFVub3JkZXJlZF9hcnJheV9mb2xkXG5cbmFuZCBWYXIgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgdmFsdWUgOiAnYVxuICAgIDsgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICAgIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgICB9XG5cbiAgdHlwZSAnYSB2YXIgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQYWNrZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXVxuICBlbmRcbmVuZCA9XG4gIFZhclxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5WYXIudCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgKCogW3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0gaXMgb25seSBzZXQgdG8gW1VvcHQuc29tZV0gaWYgdGhlIHVzZXIgY2FsbHNcbiAgICAgICBbVmFyLnNldF0gZHVyaW5nIHN0YWJpbGl6YXRpb24sIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgdGhlIChsYXN0KSB2YWx1ZSBzZXQuICBBdFxuICAgICAgIHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgYWxsIHN1Y2ggdmFyaWFibGVzIGFyZSBwcm9jZXNzZWQgdG8gZG8gW3QudmFsdWUgPC1cbiAgICAgICB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiAnYSBVb3B0LnRcbiAgOyAoKiBbc2V0X2F0XSB0aGUgc3RhYmlsaXphdGlvbiBudW1iZXIgaW4gZWZmZWN0IHRoZSBtb3N0IHJlY2VudCB0aW1lIFt0LnZhbHVlXSBjaGFuZ2VkLlxuICAgICAgIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgdGltZSBbVmFyLnNldCB0XSB3YXMgY2FsbGVkLCBkdWUgdG8gdGhlIGVmZmVjdCBvZiBbVmFyLnNldF0gZHVyaW5nXG4gICAgICAgc3RhYmlsaXphdGlvbiBiZWluZyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc2V0X2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IHdhdGNoIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfnZhbHVlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb246KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+c2V0X2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+d2F0Y2g6XG4gICAgICAgIChjaGVjayAoZnVuICh3YXRjaCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB3YXRjaC5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIHBvc3NpYmxlIHdpdGggW351c2VfY3VycmVudF9zY29wZTp0cnVlXSAqKVxuICAgICAgICAgICB8IFZhciB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpKVxuOztcblxubGV0IGluY3Jfc3RhdGUgdCA9IHQud2F0Y2guc3RhdGVcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlICdhIHZhciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSB0ID0gVHlwZXMuVmFyLlBhY2tlZC50ID0gVCA6IF8gdmFyIC0+IHQgW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgbGF0ZXN0X3ZhbHVlIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICBlbHNlIHQudmFsdWVcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG5tb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGX2ludmVyc2Ugb2YgKCdiIC0+ICdhIC0+ICdiKVxuICAgIHwgVXBkYXRlIG9mICgnYiAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdiKVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB1cGRhdGUgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVcGRhdGUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgIHwgRl9pbnZlcnNlIGZfaW52ZXJzZSAtPlxuICAgICAgZnVuIGZvbGRfdmFsdWUgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlIC0+IGYgKGZfaW52ZXJzZSBmb2xkX3ZhbHVlIG9sZF92YWx1ZSkgbmV3X3ZhbHVlXG4gIDs7XG5lbmRcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLlVub3JkZXJlZF9hcnJheV9mb2xkLnQgPVxuICB7IG1haW4gOiAnYWNjIE5vZGUudFxuICA7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IHVwZGF0ZSA6ICdhY2MgLT4gb2xkX3ZhbHVlOidhIC0+IG5ld192YWx1ZTonYSAtPiAnYWNjXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIDsgbXV0YWJsZSBmb2xkX3ZhbHVlIDogJ2FjYyBVb3B0LnRcbiAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+dXBkYXRlOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0O1xuICAgICAgICAgICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIGNoaWxkLnZhbHVlX29wdCkpKSlcbiAgICAgIH5mb2xkX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biBmb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hY2MgZm9sZF92YWx1ZTtcbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgICAgICAgICAoVW9wdC5pc19zb21lIGZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICh0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+bnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGU6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPD0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKSkpXG4gICAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczpcbiAgICAgICAgKGNoZWNrIChmdW4gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtPlxuICAgICAgICAgICBhc3NlcnQgKGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPiAwKSkpKVxuOztcblxubGV0IGNyZWF0ZSB+aW5pdCB+ZiB+dXBkYXRlIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIH5jaGlsZHJlbiB+bWFpbiA9XG4gIHsgaW5pdFxuICA7IGZcbiAgOyB1cGRhdGUgPSBVcGRhdGUudXBkYXRlIHVwZGF0ZSB+ZlxuICA7IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOyBjaGlsZHJlblxuICA7IG1haW5cbiAgOyBmb2xkX3ZhbHVlID1cbiAgICAgIFVvcHQubm9uZVxuICAoKiBXZSBtYWtlIFtudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNdXG4gICAgIHNvIHRoYXQgdGhlcmUgd2lsbCBiZSBhIGZ1bGwgY29tcHV0YXRpb24gdGhlIG5leHQgdGltZSB0aGUgbm9kZSBpcyBjb21wdXRlZC4gKilcbiAgOyBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgfVxuOztcblxubGV0IGZ1bGxfY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuOyBfIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBjb21wdXRlIHQgPVxuICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIHRoZW4gKFxuICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gMDtcbiAgICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5zb21lIChmdWxsX2NvbXB1dGUgdCkpO1xuICBVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWVcbjs7XG5cbmxldCBmb3JjZV9mdWxsX2NvbXB1dGUgdCA9XG4gIHQuZm9sZF92YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG47O1xuXG5sZXQgY2hpbGRfY2hhbmdlZFxuICAgICAgKHR5cGUgYSBiKVxuICAgICAgKHQgOiAoYSwgXykgdClcbiAgICAgIH4oY2hpbGQgOiBiIE5vZGUudClcbiAgICAgIH5jaGlsZF9pbmRleFxuICAgICAgfihvbGRfdmFsdWVfb3B0IDogYiBVb3B0LnQpXG4gICAgICB+KG5ld192YWx1ZSA6IGIpXG4gID1cbiAgbGV0IGNoaWxkX2F0X2luZGV4ID0gdC5jaGlsZHJlbi4oY2hpbGRfaW5kZXgpIGluXG4gIG1hdGNoIE5vZGUudHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgY2hpbGQgY2hpbGRfYXRfaW5kZXggd2l0aFxuICB8IE5vbmUgLT5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbVW5vcmRlcmVkX2FycmF5X2ZvbGQuY2hpbGRfY2hhbmdlZF0gbWlzbWF0Y2hcIlxuICAgICAgICAgIH51bm9yZGVyZWRfYXJyYXlfZm9sZDoodCA6IChfLCBfKSB0KVxuICAgICAgICAgIChjaGlsZF9pbmRleCA6IGludClcbiAgICAgICAgICAoY2hpbGQgOiBfIE5vZGUudCldXG4gIHwgU29tZSBUIC0+XG4gICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyAtIDFcbiAgICB0aGVuIChcbiAgICAgIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPC0gdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSArIDE7XG4gICAgICAoKiBXZSBvbmx5IHJlYWNoIHRoaXMgY2FzZSBpZiB3ZSBoYXZlIGFscmVhZHkgZG9uZSBhIGZ1bGwgY29tcHV0ZSwgaW4gd2hpY2ggY2FzZVxuICAgICAgICAgW1VvcHQuaXNfc29tZSB0LmZvbGRfdmFsdWVdIGFuZCBbVW9wdC5pc19zb21lIG9sZF92YWx1ZV9vcHRdLiAqKVxuICAgICAgdC5mb2xkX3ZhbHVlXG4gICAgICA8LSBVb3B0LnNvbWVcbiAgICAgICAgICAgKHQudXBkYXRlXG4gICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biB0LmZvbGRfdmFsdWUpXG4gICAgICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudmFsdWVfZXhuIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgICAgIH5uZXdfdmFsdWUpKVxuICAgIGVsc2UgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgIHRoZW4gZm9yY2VfZnVsbF9jb21wdXRlIHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxuXG50eXBlIHQgPSAoVHlwZXMuQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKSBBbGFybS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVsbCA9IEFsYXJtLm51bGwgKClcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBBbGFybV92YWx1ZSA9IFR5cGVzLkFsYXJtX3ZhbHVlXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU3RlcF9mdW5jdGlvbl9ub2RlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgOyBtdXRhYmxlIGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IG11dGFibGUgYWxhcm1fdmFsdWUgOiAoQWxhcm1fdmFsdWUudFtAc2V4cC5vcGFxdWVdKVxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgcGh5c19zYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gW3VwY29taW5nX3N0ZXBzXSBiZWNvbWVzIGVtcHR5LiAqKVxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQ6aWdub3JlXG4gICAgICB+dmFsdWU6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dXBjb21pbmdfc3RlcHM6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5hbGFybV92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQyIC0+IGFzc2VydCAocGh5c19zYW1lIHQgdDIpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG5cbmxldCByZWMgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTEgc3RlcHMgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBTb21lICgoc3RlcF9hdCwgYTIpLCBzdGVwczIpIHdoZW4gVGltZV9ucy4oID49ICkgdG9fIHN0ZXBfYXQgLT5cbiAgICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMiBzdGVwczJcbiAgfCBfIC0+XG4gICAgdC52YWx1ZSA8LSBVb3B0LnNvbWUgYTE7XG4gICAgdC51cGNvbWluZ19zdGVwcyA8LSBzdGVwc1xuOztcblxubGV0IGFkdmFuY2UgdCB+dG9fID0gYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gKFVvcHQudmFsdWVfZXhuIHQudmFsdWUpIHQudXBjb21pbmdfc3RlcHNcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAoJ2EsICdhY2MpIHQgPSAoJ2EsICdhY2MpIFR5cGVzLkFycmF5X2ZvbGQudCA9XG4gIHsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9hY2MgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5jaGlsZHJlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hpbGRyZW4gLT5cbiAgICAgICAgICAgQXJyYXkuaXRlciBjaGlsZHJlbiB+ZjooZnVuIChjaGlsZCA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIGNoaWxkLnZhbHVlX29wdCkpKSlcbjs7XG5cbmxldCBjb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW4gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdC50ID1cbiAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBBZnRlciAtPiAoKSAoKiBoYXBwZW5zIG9uY2UgdGhlIGN1cnJlbnQgdGltZSBwYXNzZXMgW3QuYXRdLiAqKVxuICAgICAgICAgICB8IEF0IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXRfaW50ZXJ2YWxzLnQgPVxuICB7IG1haW4gOiB1bml0IE5vZGUudFxuICA7IGJhc2UgOiBUaW1lX25zLnRcbiAgOyBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBBdF9pbnRlcnZhbHMgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmJhc2U6aWdub3JlXG4gICAgICB+aW50ZXJ2YWw6KGNoZWNrIChmdW4gaW50ZXJ2YWwgLT4gYXNzZXJ0IChUaW1lX25zLlNwYW4uaXNfcG9zaXRpdmUgaW50ZXJ2YWwpKSlcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQmluZCA9IFR5cGVzLkJpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxubW9kdWxlIFNjb3BlID0gVHlwZXMuU2NvcGVcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgQmluZC50ID1cbiAgeyBtYWluIDogJ2IgTm9kZS50XG4gIDsgKCogW2ZdIGlzIHRoZSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRoYXQgd2UgcnVuIGVhY2ggdGltZSBbdC5saHNdIGNoYW5nZXMuICBJdCBpc1xuICAgICAgIG11dGFibGUgb25seSBzbyB3ZSBjYW4gY2xlYXIgaXQgd2hlbiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgKCogW3Joc10gaXMgaW5pdGlhbGx5IFtub25lXSwgYW5kIGFmdGVyIHRoYXQgaXMgW3NvbWVdIG9mIHRoZSByZXN1bHQgb2YgdGhlIG1vc3QgcmVjZW50XG4gICAgICAgY2FsbCB0byBbZl0uICopXG4gICAgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gIDsgKCogW3Joc19zY29wZV0gaXMgdGhlIHNjb3BlIGluIHdoaWNoIFt0LmZdIGlzIHJ1biwgaS5lLiBpdCBpcyBbU2NvcGUuQmluZCB0XS4gIEl0IGlzXG4gICAgICAgW211dGFibGVdIG9ubHkgdG8gYXZvaWQgYSBbbGV0IHJlY10gZHVyaW5nIGNyZWF0aW9uLiAqKVxuICAgIG11dGFibGUgcmhzX3Njb3BlIDogU2NvcGUudFxuICA7ICgqIFthbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNdIGlzIHRoZSBoZWFkIG9mIHRoZSBzaW5nbHktbGlua2VkIGxpc3Qgb2Ygbm9kZXMgY3JlYXRlZCBvblxuICAgICAgIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgW3RdLCBpLmUuIGluIFt0LnJoc19zY29wZV0uICopXG4gICAgbXV0YWJsZSBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IChfLCBfKSB0KSAodDIgOiAoXywgXykgdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGlzX3ZhbGlkIHQgPVxuICBtYXRjaCB0Lm1haW4ua2luZCB3aXRoXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICB8IF8gLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+KGYgOiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICBmIChUIG5vZGVfb25fcmhzKVxuICBkb25lXG47O1xuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSBfaW52YXJpYW50X2IgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIGxoc19jaGFuZ2UuY3JlYXRlZF9pbiB0Lm1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZVxuICAgICAgfnJoc19zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICB8IFNjb3BlLlRvcCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgfCBCaW5kIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKSkpXG4gICAgICB+YWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0LnJoc19zY29wZSk7XG4gICAgICAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiB0IH5pc19uZWNlc3NhcnkgPVxuICBsZXQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9ID0gdCBpblxuICBpZiBub3QgaXNfbmVjZXNzYXJ5XG4gIHRoZW4gWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OjBcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X2ludmFsaWRfY2hpbGRyZW4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCByLmNoaWxkKSB0aGVuIGluY3IgY291bnRfaW52YWxpZF9jaGlsZHJlblxuICAgIGRvbmU7XG4gICAgWyV0ZXN0X3Jlc3VsdDogaW50XSBudW1faW52YWxpZF9jaGlsZHJlbiB+ZXhwZWN0OiFjb3VudF9pbnZhbGlkX2NoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZSB+ZiB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgPVxuICB7IGZcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZVxuICA7IGNoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICA7IG51bV9jaGlsZHJlbiA9IDBcbiAgOyBmb3JjZV9zdGFsZSA9IGZhbHNlXG4gIDsgbnVtX2ludmFsaWRfY2hpbGRyZW4gPSAwXG4gIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0cnVlXG4gIH1cbjs7XG5cbmxldCBtYWtlX3N0YWxlIHQgPVxuICBpZiB0LmZvcmNlX3N0YWxlXG4gIHRoZW4gYEFscmVhZHlfc3RhbGVcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAgIGBPaylcbjs7XG5cbmxldCBpbmNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiArIDFcbmxldCBkZWNyX2ludmFsaWRfY2hpbGRyZW4gdCA9IHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gdC5udW1faW52YWxpZF9jaGlsZHJlbiAtIDFcblxubGV0IG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fY2hpbGRyZW4gPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAodC5udW1fY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heCA9IEludC5tYXggMiAoMiAqIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pIGluXG4gICAgdC5jaGlsZHJlbiA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5jaGlsZHJlbiB+bGVuOm5ld19tYXgpXG47O1xuXG5sZXQgYWRkX2NoaWxkX2VkZ2UgdCBwYWNrZWRfZWRnZSA9XG4gIGxldCAoRSBlZGdlKSA9IHBhY2tlZF9lZGdlIGluXG4gIGFzc2VydCAoVW9wdC5pc19ub25lIGVkZ2UuaW5kZXgpO1xuICBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdDtcbiAgbGV0IG5ld19jaGlsZF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5zb21lIG5ld19jaGlsZF9pbmRleDtcbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBuZXdfY2hpbGRfaW5kZXggKFVvcHQuc29tZSBwYWNrZWRfZWRnZSk7XG4gIHQubnVtX2NoaWxkcmVuIDwtIHQubnVtX2NoaWxkcmVuICsgMTtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICAoKiBXZSB3aWxsIGJ1bXAgdGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIGlmIG5lY2Vzc2FyeSB3aGVuIGNvbm5lY3RpbmcgY2hpbGQgYW5kXG4gICAgIHBhcmVudC4gIFNhbWUgdGhpbmcgZm9yIHJ1bm5pbmcgdGhlIFtvbl9jaGFuZ2VdIGNhbGxiYWNrcy4gKilcbiAgbmV3X2NoaWxkX2luZGV4XG47O1xuXG5sZXQgc3dhcF9jaGlsZHJlbiB0IH5jaGlsZF9pbmRleDEgfmNoaWxkX2luZGV4MiA9XG4gIGxldCAoRSBlZGdlMSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEpIGluXG4gIGxldCAoRSBlZGdlMikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDIpIGluXG4gIGVkZ2UxLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDI7XG4gIGVkZ2UyLmluZGV4IDwtIFVvcHQuc29tZSBjaGlsZF9pbmRleDE7XG4gIFVuaWZvcm1fYXJyYXkuc3dhcCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSBjaGlsZF9pbmRleDJcbjs7XG5cbmxldCBsYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4KVxuOztcblxubGV0IHJlbW92ZV9sYXN0X2NoaWxkX2VkZ2VfZXhuIHQgPVxuICBsZXQgbGFzdF9pbmRleCA9IHQubnVtX2NoaWxkcmVuIC0gMSBpblxuICBsZXQgcGFja2VkX2VkZ2Vfb3B0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBVb3B0Lm5vbmU7XG4gIHQubnVtX2NoaWxkcmVuIDwtIGxhc3RfaW5kZXg7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgcGFja2VkX2VkZ2Vfb3B0KTtcbiAgbGV0IChFIGVkZ2UpID0gVW9wdC51bnNhZmVfdmFsdWUgcGFja2VkX2VkZ2Vfb3B0IGluXG4gIGVkZ2UuaW5kZXggPC0gVW9wdC5ub25lXG47O1xuXG5sZXQgYmVmb3JlX21haW5fY29tcHV0YXRpb24gdCA9XG4gIGlmIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPiAwXG4gIHRoZW4gYEludmFsaWRcbiAgZWxzZSAoXG4gICAgdC5mb3JjZV9zdGFsZSA8LSBmYWxzZTtcbiAgICBsZXQgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIGluXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSBmYWxzZTtcbiAgICBpZiB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICAgIHRoZW5cbiAgICAgIGZvciBpID0gMCB0byB0Lm51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gaSkgaW5cbiAgICAgICAgci5vbl9jaGFuZ2UgKFVvcHQudmFsdWVfZXhuIHIuY2hpbGQudmFsdWVfb3B0KVxuICAgICAgZG9uZTtcbiAgICBgT2spXG47O1xuXG5sZXQgb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgdCB+aXNfbm93X29ic2VydmFibGUgPVxuICB0Lm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIH5pc19ub3dfb2JzZXJ2YWJsZTtcbiAgaWYgbm90IGlzX25vd19vYnNlcnZhYmxlXG4gIHRoZW4gKFxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gdHJ1ZTtcbiAgICAoKiBJZiB3ZSBkb24ndCByZXNldCBudW1faW52YWxpZF9jaGlsZHJlbiwgd2Ugd291bGQgZG91YmxlIGNvdW50IHRoZW06IGp1c3QgaW1hZ2luZVxuICAgICAgIHdoYXQgaGFwcGVucyB3ZSBpZiByZWNvbm5lY3QvZGlzY29ubmVjdC9yZWNvbm5lY3QvZGlzY29ubmVjdCB3aXRoIGFuIGludmFsaWRcbiAgICAgICBjaGlsZC4gKilcbiAgICB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIDApXG47O1xuXG5sZXQgcnVuX2VkZ2VfY2FsbGJhY2sgdCB+Y2hpbGRfaW5kZXggPVxuICBpZiBub3QgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrc1xuICB0aGVuIChcbiAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBjaGlsZF9pbmRleCkgaW5cbiAgICAoKiBUaGlzIHZhbHVlIGlzIG5vdCBuZWNlc3NhcmlseSBzZXQsIGJlY2F1c2Ugd2UgdHJ5IHRvIHJ1biB0aGlzIHdoZW4gY29ubmVjdGluZyB0aGVcbiAgICAgICBub2RlIHRvIGl0cyBjaGlsZHJlbiwgd2hpY2ggY291bGQgYmUgYmVmb3JlIHRoZXkgaGF2ZSBydW4gZXZlbiBvbmNlLiAgQWxzbyB0aGUgbm9kZVxuICAgICAgIGNvdWxkIGJlIGludmFsaWQuICopXG4gICAgaWYgVW9wdC5pc19zb21lIHIuY2hpbGQudmFsdWVfb3B0XG4gICAgdGhlbiByLm9uX2NoYW5nZSAoVW9wdC51bnNhZmVfdmFsdWUgci5jaGlsZC52YWx1ZV9vcHQpKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbmluY2x1ZGUgVHlwZXMuU2NvcGVcblxubGV0IHRvcCA9IFRvcFxuXG5sZXQgaXNfdG9wID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgXyAtPiBmYWxzZVxuOztcblxubGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuOztcblxuKCogVW5saWtlIGZvciBub2RlcywgdGhlcmUgaXMgbm8gaW52YXJpYW50IFtpc19uZWNlc3NhcnkgdCA8PT4gaGVpZ2h0ID4gLTFdIChkb2Vzbid0IHdvcmtcbiAgIGJlY2F1c2Ugb2YgW1RvcF0pLiAgVGhpcyBpcyBmaW5lIHNpbmNlIHRoZSBoZWlnaHQgb2YgYSBzY29wZSBpcyBvbmx5IHVzZWQgdG8gY29uc3RyYWluXG4gICBvdGhlciBoZWlnaHRzLCBub3QgdG8gc2NoZWR1bGUgaXQuICopXG5sZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gLTFcbiAgfCBCaW5kIGJpbmQgLT4gYmluZC5saHNfY2hhbmdlLmhlaWdodFxuOztcblxubGV0IGlzX3ZhbGlkID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmlzX3ZhbGlkIGJpbmRcbjs7XG5cbmxldCBpc19uZWNlc3NhcnkgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IE5vZGUuaXNfbmVjZXNzYXJ5IGJpbmQubWFpblxuOztcblxubGV0IGFkZF9ub2RlIHQgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQpO1xuICBtYXRjaCB0IHdpdGhcbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT5cbiAgICBub2RlLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzO1xuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQuc29tZSAoVHlwZXMuTm9kZS5QYWNrZWQuVCBub2RlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5GcmVlemUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGNoaWxkIDogJ2EgTm9kZS50XG4gIDsgb25seV9mcmVlemVfd2hlbiA6ICdhIC0+IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gZnJlZXppbmcgYW4gaW52YWxpZCB2YWx1ZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBvbiBiZWNvbWluZyBmcm96ZW4gKilcbiAgICAgICAgICAgfCBGcmVlemUgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmNoaWxkOmlnbm9yZVxuICAgICAgfm9ubHlfZnJlZXplX3doZW46aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JZl90aGVuX2Vsc2UudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IHRlc3QgOiBib29sIE5vZGUudFxuICA7IHRlc3RfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfYnJhbmNoIDogJ2EgTm9kZS50IFVvcHQudFxuICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gIDsgZWxzZV8gOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90aGVuX2Vsc2UgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+dGVzdDppZ25vcmVcbiAgICAgIH50ZXN0X2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKHRlc3RfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHRlc3RfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBJZl90ZXN0X2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y3VycmVudF9icmFuY2g6XG4gICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfYnJhbmNoIC0+XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgY3VycmVudF9icmFuY2ggPSBVb3B0LnZhbHVlX2V4biBjdXJyZW50X2JyYW5jaCBpblxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQudGhlbl8gfHwgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LmVsc2VfKSkpKVxuICAgICAgfnRoZW5fOmlnbm9yZVxuICAgICAgfmVsc2VfOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSm9pbi50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgcmhzIDogJ2EgTm9kZS50IFVvcHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbWFpbiB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGxoc19jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+cmhzOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuU25hcHNob3QudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgYmVmb3JlIDogJ2FcbiAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBzbmFwc2hvdHRpbmcgYW4gaW52YWxpZCBub2RlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIGFmdGVyIHRoZSBzbmFwc2hvdCAqKVxuICAgICAgICAgICB8IFNuYXBzaG90IHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5hdDppZ25vcmVcbiAgICAgIH5iZWZvcmU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX2F0Omlnbm9yZVxuICAgICAgfmNsb2NrOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuS2luZC50ID1cbiAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IEF0IDogQXQudCAtPiBCZWZvcmVfb3JfYWZ0ZXIudCB0XG4gIHwgQXRfaW50ZXJ2YWxzIDogQXRfaW50ZXJ2YWxzLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgfCBCaW5kX21haW4gOiAoXywgJ2EpIEJpbmQudCAtPiAnYSB0XG4gIHwgQ29uc3Qgb2YgJ2FcbiAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgfCBGcmVlemUgb2YgJ2EgRnJlZXplLnRcbiAgfCBJZl90ZXN0X2NoYW5nZSA6IF8gSWZfdGhlbl9lbHNlLnQgLT4gdW5pdCB0XG4gIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gIHwgSW52YWxpZFxuICB8IEpvaW5fbGhzX2NoYW5nZSA6IF8gSm9pbi50IC0+IHVuaXQgdFxuICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgfCBNYXAgOiAoJ2ExIC0+ICdhKSAqICdhMSBOb2RlLnQgLT4gJ2EgdFxuICB8IFNuYXBzaG90IG9mICdhIFNuYXBzaG90LnRcbiAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gIHwgVW5pbml0aWFsaXplZFxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIDogKF8sICdhKSBVbm9yZGVyZWRfYXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgfCBNYXAyIDogKCdhMSAtPiAnYTIgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDMgOiAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXA0IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2EpICogJ2ExIE5vZGUudCAqICdhMiBOb2RlLnQgKiAnYTMgTm9kZS50ICogJ2E0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDUgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDYgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDcgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDggOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDkgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEwIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDExIDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhMTEgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTIgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEzIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTQgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTUgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYTE0XG4gICAgICAgLT4gJ2ExNVxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgKiAnYTE1IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IG5hbWUgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEFycmF5X2ZvbGQgXyAtPiBcIkFycmF5X2ZvbGRcIlxuICB8IEF0IF8gLT4gXCJBdFwiXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gXCJBdF9pbnRlcnZhbHNcIlxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IFwiQmluZF9saHNfY2hhbmdlXCJcbiAgfCBCaW5kX21haW4gXyAtPiBcIkJpbmRfbWFpblwiXG4gIHwgQ29uc3QgXyAtPiBcIkNvbnN0XCJcbiAgfCBFeHBlcnQgXyAtPiBcIkV4cGVydFwiXG4gIHwgRnJlZXplIF8gLT4gXCJGcmVlemVcIlxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gXCJJZl90ZXN0X2NoYW5nZVwiXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gXCJJZl90aGVuX2Vsc2VcIlxuICB8IEludmFsaWQgLT4gXCJJbnZhbGlkXCJcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiBcIkpvaW5fbGhzX2NoYW5nZVwiXG4gIHwgSm9pbl9tYWluIF8gLT4gXCJKb2luX21haW5cIlxuICB8IE1hcCBfIC0+IFwiTWFwXCJcbiAgfCBNYXAyIF8gLT4gXCJNYXAyXCJcbiAgfCBNYXAzIF8gLT4gXCJNYXAzXCJcbiAgfCBNYXA0IF8gLT4gXCJNYXA0XCJcbiAgfCBNYXA1IF8gLT4gXCJNYXA1XCJcbiAgfCBNYXA2IF8gLT4gXCJNYXA2XCJcbiAgfCBNYXA3IF8gLT4gXCJNYXA3XCJcbiAgfCBNYXA4IF8gLT4gXCJNYXA4XCJcbiAgfCBNYXA5IF8gLT4gXCJNYXA5XCJcbiAgfCBNYXAxMCBfIC0+IFwiTWFwMTBcIlxuICB8IE1hcDExIF8gLT4gXCJNYXAxMVwiXG4gIHwgTWFwMTIgXyAtPiBcIk1hcDEyXCJcbiAgfCBNYXAxMyBfIC0+IFwiTWFwMTNcIlxuICB8IE1hcDE0IF8gLT4gXCJNYXAxNFwiXG4gIHwgTWFwMTUgXyAtPiBcIk1hcDE1XCJcbiAgfCBTbmFwc2hvdCBfIC0+IFwiU25hcHNob3RcIlxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiBcIlN0ZXBfZnVuY3Rpb25cIlxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gXCJVbmluaXRpYWxpemVkXCJcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IFwiVW5vcmRlcmVkX2FycmF5X2ZvbGRcIlxuICB8IFZhciBfIC0+IFwiVmFyXCJcbjs7XG5cbmxldCBpbnZhcmlhbnQgOiB0eXBlIGEuIGEgSW52YXJpYW50LnQgLT4gYSB0IEludmFyaWFudC50ID1cbiAgZnVuIGludmFyaWFudF9hIHQgLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IEFycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBhcnJheV9mb2xkXG4gIHwgQXQgYXQgLT4gQXQuaW52YXJpYW50IGF0XG4gIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpZ25vcmUgYmluZFxuICB8IEJpbmRfbWFpbiBiaW5kIC0+IEJpbmQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSBiaW5kXG4gIHwgQ29uc3QgYSAtPiBpbnZhcmlhbnRfYSBhXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LmludmFyaWFudCBpbnZhcmlhbnRfYSBlXG4gIHwgRnJlZXplIGZyZWV6ZSAtPiBGcmVlemUuaW52YXJpYW50IGludmFyaWFudF9hIGZyZWV6ZVxuICB8IElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGlnbm9yZSBpZl90aGVuX2Vsc2VcbiAgfCBJZl90aGVuX2Vsc2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgaWZfdGhlbl9lbHNlXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSBqb2luIC0+IEpvaW4uaW52YXJpYW50IGlnbm9yZSBqb2luXG4gIHwgSm9pbl9tYWluIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaW52YXJpYW50X2Egam9pblxuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfIC0+ICgpXG4gIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGludmFyaWFudF9hIHNuYXBzaG90XG4gIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGludmFyaWFudF9hIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1bm9yZGVyZWRfYXJyYXlfZm9sZCAtPlxuICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgfCBWYXIgdmFyIC0+IFZhci5pbnZhcmlhbnQgaWdub3JlIHZhclxuOztcblxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEF0IF8gLT4gMFxuICB8IEF0X2ludGVydmFscyBfIC0+IDBcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgQmluZF9tYWluIF8gLT4gMlxuICB8IENvbnN0IF8gLT4gMFxuICB8IEV4cGVydCBfIC0+IDBcbiAgfCBGcmVlemUgXyAtPiAxXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiAxXG4gIHwgSWZfdGhlbl9lbHNlIF8gLT4gMlxuICB8IEludmFsaWQgLT4gMFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBKb2luX21haW4gXyAtPiAyXG4gIHwgTWFwIF8gLT4gMVxuICB8IE1hcDIgXyAtPiAyXG4gIHwgTWFwMyBfIC0+IDNcbiAgfCBNYXA0IF8gLT4gNFxuICB8IE1hcDUgXyAtPiA1XG4gIHwgTWFwNiBfIC0+IDZcbiAgfCBNYXA3IF8gLT4gN1xuICB8IE1hcDggXyAtPiA4XG4gIHwgTWFwOSBfIC0+IDlcbiAgfCBNYXAxMCBfIC0+IDEwXG4gIHwgTWFwMTEgXyAtPiAxMVxuICB8IE1hcDEyIF8gLT4gMTJcbiAgfCBNYXAxMyBfIC0+IDEzXG4gIHwgTWFwMTQgXyAtPiAxNFxuICB8IE1hcDE1IF8gLT4gMTVcbiAgfCBTbmFwc2hvdCBfIC0+IDBcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gMVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gMFxuICB8IFZhciBfIC0+IDBcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG47O1xuXG5sZXQgYmluZF9yaHNfY2hpbGRfaW5kZXggPSAxXG5sZXQgZnJlZXplX2NoaWxkX2luZGV4ID0gMFxubGV0IGlmX2JyYW5jaF9jaGlsZF9pbmRleCA9IDFcbmxldCBqb2luX3Joc19jaGlsZF9pbmRleCA9IDFcblxuKCogV2UgZG8gbm90IGltcGxlbWVudCB0aGUgdGltZS1iYXNlZCBub2RlcyAoW0F0XSwgW0F0X2ludGVydmFsc10sIFtTbmFwc2hvdF0sXG4gICBbU3RlcF9mdW5jdGlvbl0pIGFzIHBhcmVudHMgb2YgdGhlIGN1cnJlbnQtdGltZSBub2RlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgV2UgZG9uJ3RcbiAgIHdhbnQgYWxsIHN1Y2ggbm9kZXMgdG8gYmUgcmVjb21wdXRlZCB3aGVuZXZlciB0aGUgdGltZSBjaGFuZ2VzLCB3aGljaCB3b3VsZCBiZSBob3JyaWJseVxuICAgaW5uZWZpY2llbnQuICBJbnN0ZWFkLCB3ZSBvbmx5IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGF0IHRoZSBcInJpZ2h0XCIgdGltZSxcbiAgIGkuZS4gd2hlbiB0aW1lIHBhc3NlcyBzb21lIHRocmVzaG9sZCByZWxldmFudCB0byB0aGVtLiAgV2UgZG8gdGhpcyB2aWEgc2NoZWR1bGluZ1xuICAgYWxhcm1zIGF0IHRob3NlIHRocmVzaG9sZHMuICopXG5sZXQgaXRlcmlfY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGludCAtPiBOb2RlLlBhY2tlZC50IC0+IHVuaXQpIDogdW5pdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgQXQgXyAtPiAoKVxuICB8IEF0X2ludGVydmFscyBfIC0+ICgpXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gZiAwIChUIGJpbmQubGhzKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgKCogVmFyaW91cyBjb2RlLCBlLmcuIFtzdGF0ZS5iZWNhbWVfbmVjZXNzYXJ5XSwgcmVsaWVzIG9uIHByb2Nlc3NpbmcgW2xoc19jaGFuZ2VdXG4gICAgICAgYmVmb3JlIFtyaHNdLiAqKVxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IENvbnN0IF8gLT4gKClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFeHBlcnQuRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkgaW5cbiAgICAgIGYgaSAoVCByLmNoaWxkKVxuICAgIGRvbmVcbiAgfCBGcmVlemUgeyBjaGlsZDsgXyB9IC0+IGYgMCAoVCBjaGlsZClcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBmIDAgKFQgdGVzdClcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGYgMCAoVCB0ZXN0X2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjdXJyZW50X2JyYW5jaCkpXG4gIHwgSW52YWxpZCAtPiAoKVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IGYgMCAoVCBsaHMpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBTbmFwc2hvdCBfIC0+ICgpXG4gIHwgU3RlcF9mdW5jdGlvbiB7IGNoaWxkOyBfIH0gLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGQgdGhlbiBmIDAgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGNoaWxkKSlcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICAgIGYgaSAoVCAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSlcbiAgICBkb25lXG4gIHwgVmFyIF8gLT4gKClcbiAgfCBNYXAgKF8sIG5vZGUwKSAtPiBmIDAgKFQgbm9kZTApXG4gIHwgTWFwMiAoXywgbm9kZTAsIG5vZGUxKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKVxuICB8IE1hcDMgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMilcbiAgfCBNYXA0IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpXG4gIHwgTWFwNSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KVxuICB8IE1hcDYgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSlcbiAgfCBNYXA3IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpXG4gIHwgTWFwOCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KVxuICB8IE1hcDkgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOClcbiAgfCBNYXAxMCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTkpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KVxuICB8IE1hcDExIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSwgbm9kZTEwKVxuICAgIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMClcbiAgfCBNYXAxMlxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTEgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKVxuICB8IE1hcDEzXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTIgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMilcbiAgfCBNYXAxNFxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxMyApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMylcbiAgfCBNYXAxNVxuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyXG4gICAgICAsIG5vZGUxM1xuICAgICAgLCBub2RlMTQgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpO1xuICAgIGYgMTQgKFQgbm9kZTE0KVxuOztcblxuKCogW3Nsb3dfZ2V0X2NoaWxkXSBpcyBvbmx5IHVzZWQgYnkgW05vZGUuaW52YXJpYW50XSwgc28gd2UgZG9uJ3QgbWluZCB1c2luZyBbd2l0aF9yZXR1cm5dXG4gICBhbmQgW2l0ZXJpX2NoaWxkcmVuXS4gIElmIHdlIGV2ZXIgbmVlZCBhIGZhc3QgW2dldF9jaGlsZF0sIHdlIGNvZGVkIGl0IGluIHJldlxuICAgNDhkYmZkMDNjOWM1LiAqKVxubGV0IHNsb3dfZ2V0X2NoaWxkIDogdHlwZSBhLiBhIHQgLT4gaW5kZXg6XyAtPiBOb2RlLlBhY2tlZC50ID1cbiAgZnVuIHQgfmluZGV4IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBFeHBlcnQgeyBjaGlsZHJlbjsgXyB9IC0+XG4gICAgbGV0IChFIGVkZ2UpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGluZGV4KSBpblxuICAgIFQgZWRnZS5jaGlsZFxuICB8IF8gLT5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBpIGNoaWxkIC0+IGlmIGkgPSBpbmRleCB0aGVuIHIucmV0dXJuIGNoaWxkKTtcbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiS2luZC5zbG93X2dldF9jaGlsZCBnb3QgaW52YWxpZCBpbmRleFwiXG4gICAgICAgIChpbmRleCwgdClcbiAgICAgICAgWyVzZXhwX29mOiBpbnQgKiBfIHRdKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gS2luZFxubW9kdWxlIEludGVybmFsX29ic2VydmVyID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxub3BlbiBOb2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLk5vZGUudCA9XG4gIHsgKCogW2lkXSBpcyBhIHVuaXF1ZSBpZCBmb3IgdGhlIG5vZGUuICopXG4gICAgaWQgOiBOb2RlX2lkLnRcbiAgOyBzdGF0ZSA6IChUeXBlcy5TdGF0ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogVGhlIGZpZWxkcyBmcm9tIFtyZWNvbXB1dGVkX2F0XSB0byBbY3JlYXRlZF9pbl0gYXJlIGdyb3VwZWQgdG9nZXRoZXIgYW5kIGFyZSBpbiB0aGVcbiAgICAgICBzYW1lIG9yZGVyIGFzIHRoZXkgYXJlIHVzZWQgYnkgW1N0YXRlLnJlY29tcHV0ZV0gVGhpcyBoYXMgYSBwb3NpdGl2ZSBwZXJmb3JtYW5jZVxuICAgICAgIGltcGFjdCBkdWUgdG8gY2FjaGUgZWZmZWN0cy4gIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlc2Ugbm9kZXMgd2l0aG91dFxuICAgICAgIHBlcmZvcm1hbmNlIHRlc3RpbmcuICopXG4gICAgKCogW3JlY29tcHV0ZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiBbdF0ncyB2YWx1ZSB3YXMgcmVjb21wdXRlZCwgZXZlbiBpZlxuICAgICAgIGl0IHdhcyBjdXQgb2ZmLiAqKVxuICAgIG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbdmFsdWVfb3B0XSBzdGFydHMgYXMgW25vbmVdLCBhbmQgdGhlIGZpcnN0IHRpbWUgW3RdIGlzIGNvbXB1dGVkIGl0IGlzIHNldCB0b1xuICAgICAgIFtzb21lXSwgYW5kIHJlbWFpbnMgW3NvbWVdIHRoZXJlYWZ0ZXIsIHVudGlsIFt0XSBpcyBpbnZhbGlkYXRlZCwgaWYgZXZlci4gKilcbiAgICBtdXRhYmxlIHZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtraW5kXSBpcyB0aGUga2luZCBvZiBEQUcgbm9kZSBbdF0gaXMuICBba2luZF0gaXMgbXV0YWJsZSBib3RoIGZvciBpbml0aWFsaXphdGlvblxuICAgICAgIGFuZCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UsIGUuZy4gaWYgW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUga2luZCA6ICdhIEtpbmQudFxuICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgOyAoKiBbY2hhbmdlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIHRoaXMgbm9kZSB3YXMgY29tcHV0ZWQgYW5kIG5vdCBjdXQgb2ZmLlxuICAgICAgIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZW4gW3RdJ3MgcGFyZW50cyBhcmUgc3RhbGUgYW5kIChiZWNhdXNlIGFsbCBwYXJlbnRzIGFyZVxuICAgICAgIG5lY2Vzc2FyeSkgbmVlZCB0byBiZSByZWNvbXB1dGVkLiAqKVxuICAgIG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyAoKiBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgW0xpc3QubGVuZ3RoIHQub25fdXBkYXRlX2hhbmRsZXJzXSBwbHVzIHRoZSBudW1iZXIgb2ZcbiAgICAgICBvbi11cGRhdGUgaGFuZGxlcnMgc3VtbWVkIG92ZXIgYWxsIG9ic2VydmVycyBpbiBbdC5vYnNlcnZlcnNdLiAgSXQgaXMgdXNlZCB0b1xuICAgICAgIHF1aWNrbHkgZGVjaWRlIHdoZXRoZXIgW3RdIG5lZWRzIHRvIGJlIGFkZGVkIHRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl1cbiAgICAgICB3aGVuIFt0XSBjaGFuZ2VzLiAgW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIHdpbGwgZGVjcmVhc2Ugd2hlbiBhbiBvYnNlcnZlciBpc1xuICAgICAgIHJlbW92ZWQgZnJvbSBbdC5vYnNlcnZlcnNdLCBpZiB0aGUgb2JzZXJ2ZXIgaGFzIG9uLXVwZGF0ZSBoYW5kbGVycy4gKilcbiAgICBtdXRhYmxlIG51bV9vbl91cGRhdGVfaGFuZGxlcnMgOiBpbnRcbiAgOyAoKiBUaGUgcGFyZW50cyBvZiBbdF0gYXJlIHRoZSBub2RlcyB0aGF0IGRlcGVuZCBvbiBpdCwgYW5kIHNob3VsZCBiZSBjb21wdXRlZCB3aGVuIFt0XVxuICAgICAgIGNoYW5nZXMsIG9uY2UgYWxsIG9mIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSB1cCB0byBkYXRlLiAgW251bV9wYXJlbnRzXSBpcyB0aGVcbiAgICAgICBudW1iZXIgb2YgcGFyZW50cy4gIElmIFtudW1fcGFyZW50cyA+PSAxXSwgdGhlbiBbcGFyZW50MF0gaXMgdGhlIGZpcnN0IHBhcmVudC5cbiAgICAgICBbcGFyZW50MV9hbmRfYmV5b25kXSBob2xkcyB0aGUgcmVtYWluaW5nIHBhcmVudHMuICBUaGUgb3JkZXIgb2YgdGhlIHBhcmVudHMgZG9lc24ndFxuICAgICAgIG1hdHRlci4gIE9uZSBub2RlIG1heSBvY2N1ciBtdWx0aXBsZSB0aW1lcyBhcyBhIHBhcmVudCBvZiBhbm90aGVyIChlLmcuIGNvbnNpZGVyXG4gICAgICAgW21hcDIgbjEgbjEgfmZdKS5cblxuICAgICAgIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgb3B0aW1pemVkIGZvciB0aGUgb3ZlcndoZWxtaW5nbHkgY29tbW9uIGNhc2UgdGhhdCBhIG5vZGUgaGFzXG4gICAgICAgb25seSBvbmUgcGFyZW50LiAqKVxuICAgIG11dGFibGUgbnVtX3BhcmVudHMgOiBpbnRcbiAgOyBtdXRhYmxlIHBhcmVudDFfYW5kX2JleW9uZCA6IFBhY2tlZC50IFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgOyBtdXRhYmxlIHBhcmVudDAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbY3JlYXRlZF9pbl0gaXMgaW5pdGlhbGx5IHRoZSBzY29wZSB0aGF0IHRoZSBub2RlIGlzIGNyZWF0ZWQgaW4uICBJZiBhIG5vZGUgaXNcbiAgICAgICBsYXRlciBcInJlc2NvcGVkXCIsIHRoZW4gY3JlYXRlZF9pbiB3aWxsIGJlIGFkanVzdGVkIHRvIHRoZSBuZXcgc2NvcGUgdGhhdCB0aGUgbm9kZVxuICAgICAgIGlzIHBhcnQgb2YuICopXG4gICAgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICA7ICgqIFtuZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBjcmVhdGVkIGluIFt0LmNyZWF0ZWRfaW5dLiAqKVxuICAgIG11dGFibGUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0XSBpcyB1c2VkIHRvIHZpc2l0IG5vZGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyLiAgSWYgW2lzX25lY2Vzc2FyeSB0XSwgdGhlblxuICAgICAgIFtoZWlnaHQgPiBjLmhlaWdodF0gZm9yIGFsbCBjaGlsZHJlbiBbY10gb2YgW3RdLCBhbmQgW2hlaWdodCA+IFNjb3BlLmhlaWdodFxuICAgICAgIHQuY3JlYXRlZF9pbl0uICBJZiBbbm90IChpc19uZWNlc3NhcnkgdCldLCB0aGVuIFtoZWlnaHQgPSAtMV0uICopXG4gICAgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgOyAoKiBbaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSBpcyB0aGUgaGVpZ2h0IGF0IHdoaWNoIFt0XSBpcyBzdG9yZWQgaW4gdGhlIHJlY29tcHV0ZVxuICAgICAgIGhlYXAsIGFuZCBpcyBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBJZiBbdF0gaXMgdGhlXG4gICAgICAgcmVjb21wdXRlIGhlYXAsIHRoZW4gdHlwaWNhbGx5IFt0LmhlaWdodCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXTsgaG93ZXZlcixcbiAgICAgICB3aGlsZSBoZWlnaHQgaXMgYmVpbmcgYWRqdXN0ZWQsIG9uZSBjYW4gdGVtcG9yYXJpbHkgaGF2ZSBbdC5oZWlnaHQgPlxuICAgICAgIHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXS4gIFdoZW4gaGVpZ2h0IGFkanVzdG1lbnQgZmluaXNoZXMsIGVxdWFsaXR5IGlzIHJlc3RvcmVkXG4gICAgICAgYnkgaW5jcmVhc2luZyBbdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIHRvIFt0LmhlaWdodF0gYW5kIHNoaWZ0aW5nIFt0XSdzXG4gICAgICAgcG9zaXRpb24gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDogaW50XG4gIDsgKCogW3ByZXZfaW5fcmVjb21wdXRlX2hlYXBdIGFuZCBbbmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gZG91Ymx5IGxpbmsgYWxsIG5vZGVzIG9mIHRoZVxuICAgICAgIHNhbWUgaGVpZ2h0IGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIGlzIHVzZWQgb25seSBkdXJpbmcgaGVpZ2h0IGFkanVzdG1lbnQsIGFuZCBpc1xuICAgICAgIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAgSXQgaG9sZHMgdGhlIHByZS1hZGp1c3RlZFxuICAgICAgIGhlaWdodCBvZiBbdF0uICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICA7ICgqIFtuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgb2YgdGhlIHNhbWUgaGVpZ2h0IGluIHRoZVxuICAgICAgIGFkanVzdC1oZWlnaHRzIGhlYXAuICopXG4gICAgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBbb2xkX3ZhbHVlX29wdF0gaXMgdXNlZCBvbmx5IGR1cmluZyBzdGFiaWxpemF0aW9uLCBhbmQgb25seSBpZlxuICAgICAgIFt0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXS4gIEl0IGhvbGRzIHRoZSBwcmUtc3RhYmlsaXphdGlvbiB2YWx1ZSBvZiBbdF0uICBJdFxuICAgICAgIGlzIGNsZWFyZWQgd2hlbiBydW5uaW5nIFt0XSdzIG9uLXVwZGF0ZSBoYW5kbGVycywgYW5kIHNvIGlzIGFsd2F5cyBbVW9wdC5ub25lXVxuICAgICAgIGJldHdlZW4gc3RhYmlsaXphdGlvbnMuICopXG4gICAgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW29ic2VydmVyc10gaXMgdGhlIGhlYWQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBvYnNlcnZlcnMgb2YgW3RdLCBvclxuICAgICAgIFtVb3B0Lm5vbmVdIGlmIHRoZXJlIGFyZSBubyBvYnNlcnZlcnMuICopXG4gICAgbXV0YWJsZSBvYnNlcnZlcnMgOiAoJ2EgSW50ZXJuYWxfb2JzZXJ2ZXIudFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyAoKiBbaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dIGlzIHVzZWQgdG8gYXZvaWQgcHVzaGluZyB0aGUgc2FtZSBub2RlIG11bHRpcGxlXG4gICAgICAgdGltZXMgb250byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICAgIG11dGFibGUgaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBib29sXG4gIDsgKCogW29uX3VwZGF0ZV9oYW5kbGVyc10gaXMgdGhlIGZ1bmN0aW9ucyBzdXBwbGllZCB0byBbSW5jcmVtZW50YWwub25fdXBkYXRlXSB0byBiZSBydW5cbiAgICAgICBhcyBkZXNjcmliZWQgaW4gdGhlIG1vZHVsZSBbT25fdXBkYXRlX2hhbmRsZXJdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gZG9lcyBub3RcbiAgICAgICBjb250YWluIHRoZSBvbi11cGRhdGUgaGFuZGxlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIG9ubHkgZXZlclxuICAgICAgIGdldHMgbG9uZ2VyOyB0aGVyZSBpcyBubyB3YXkgdG8gcmVtb3ZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgbXV0YWJsZSBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgZm9yY2VfbmVjZXNzYXJ5IDogYm9vbFxuICA7IG11dGFibGUgdXNlcl9pbmZvIDogRG90X3VzZXJfaW5mby50IG9wdGlvblxuICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHBhY2tlZF9zYW1lIChQYWNrZWQuVCB0MSkgKFBhY2tlZC5UIHQyKSA9IHNhbWUgdDEgdDJcbmxldCBpc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeVxubGV0IGluaXRpYWxfbnVtX2NoaWxkcmVuIHQgPSBLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIHQua2luZFxubGV0IGl0ZXJpX2NoaWxkcmVuIHQgfmYgPSBLaW5kLml0ZXJpX2NoaWxkcmVuIHQua2luZCB+ZlxubGV0IGlzX3ZhbGlkID0gTm9kZS5pc192YWxpZFxubGV0IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lID0gdHlwZV9lcXVhbF9pZl9waHlzX3NhbWVcblxubGV0IHVzZXJfaW5mbyB0ID1cbiAgbWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKEluZm8gaSkgLT4gU29tZSBpXG4gIHwgU29tZSBvdGhlciAtPiBTb21lIChJbmZvLmNyZWF0ZV9zIChEb3RfdXNlcl9pbmZvLnNleHBfb2ZfdCBvdGhlcikpXG47O1xuXG5sZXQgc2V0X3VzZXJfaW5mbyB0IGluZm8gPVxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPiBTb21lIChJbmZvIGkpKVxuOztcblxubGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogdCB+bGFiZWwgfmF0dHJzID1cbiAgbGV0IG5ld18gPSBEb3RfdXNlcl9pbmZvLmRvdCB+bGFiZWwgfmF0dHJpYnV0ZXM6YXR0cnMgaW5cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBuZXdfXG4gICAgfCBTb21lIG90aGVyIC0+IFNvbWUgKERvdF91c2VyX2luZm8uYXBwZW5kIG90aGVyIG5ld18pKVxuOztcblxubGV0IGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQgPVxuICBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoaWxkLmNoYW5nZWRfYXQgcGFyZW50LnJlY29tcHV0ZWRfYXQgPiAwXG47O1xuXG5sZXQgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdCA9XG4gIGxldCBpc19zdGFsZSA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICBpZiBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50OnQgdGhlbiBpc19zdGFsZSA6PSB0cnVlKTtcbiAgIWlzX3N0YWxlXG47O1xuXG5sZXQgaXNfc3RhbGUgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuICh0IDogYSB0KSAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICgqIEEgY29uc3Qgbm9kZSBpcyBzdGFsZSBvbmx5IGF0IGluaXRpYWxpemF0aW9uLiAqKVxuICB8IENvbnN0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogVGltZS1iYXNlZCBub2RlcyBhcmUgY29uc2lkZXJlZCBzdGFsZSB3aGVuIFt0LnJlY29tcHV0ZWRfYXRdIGlzIG5vbmUsIHdoaWNoIGhhcHBlbnNcbiAgICAgYXQgaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gdGhlIGFsYXJtIG1lY2hhbmlzbSBtYWtlcyBhIG5vZGUgc3RhbGUgKGl0IHNldHMgdGhlXG4gICAgIFt0LnJlY29tcHV0ZWRfYXRdIHRvIFtTdGFiaWxpemF0aW9uX251bS5ub25lXSkuICopXG4gIHwgQXQgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IEF0X2ludGVydmFscyBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgU25hcHNob3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBXZSBuZXZlciBjb25zaWRlciBhbiBpbnZhbGlkYXRlZCBub2RlIHRvIGJlIHN0YWxlIC0tIHdoZW4gd2UgaW52YWxpZGF0ZSBhIG5vZGUsIHdlXG4gICAgIGltbWVkaWF0ZWx5IHByb3BhZ2F0ZSBpbnZhbGlkaXR5IHRvIGl0cyBhbmNlc3RvcnMuICopXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBBIFtWYXJdIG5vZGUgaXMgc3RhbGUgaWYgaXQgd2FzIHNldCBzaW5jZSBpdCB3YXMgcmVjb21wdXRlZC4gKilcbiAgfCBWYXIgeyBzZXRfYXQ7IF8gfSAtPiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHNldF9hdCB0LnJlY29tcHV0ZWRfYXQgPiAwXG4gICgqIE5vZGVzIHRoYXQgaGF2ZSBjaGlsZHJlbi4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEJpbmRfbWFpbiBfXG4gIHwgRnJlZXplIF9cbiAgfCBJZl90aGVuX2Vsc2UgX1xuICB8IEpvaW5fbWFpbiBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IEV4cGVydCB7IGZvcmNlX3N0YWxlOyBfIH0gLT5cbiAgICBmb3JjZV9zdGFsZVxuICAgIHx8IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICAgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuOztcblxubGV0IG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQgPSBpc19uZWNlc3NhcnkgdCAmJiBpc19zdGFsZSB0XG5sZXQgaXNfaW5fcmVjb21wdXRlX2hlYXAgdCA9IHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IDBcbmxldCBpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQgPSB0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcblxubGV0IGdldF9wYXJlbnQgdCB+aW5kZXggPVxuICBVb3B0LnZhbHVlX2V4blxuICAgIChpZiBpbmRleCA9IDAgdGhlbiB0LnBhcmVudDAgZWxzZSBVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSlcbjs7XG5cbmxldCBpdGVyaV9wYXJlbnRzIHQgfmYgPVxuICBpZiB0Lm51bV9wYXJlbnRzID4gMFxuICB0aGVuIChcbiAgICBmIDAgKFVvcHQudmFsdWVfZXhuIHQucGFyZW50MCk7XG4gICAgZm9yIGluZGV4ID0gMSB0byB0Lm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgZiBpbmRleCAoVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKSlcbiAgICBkb25lKVxuOztcblxubGV0IGhhc19jaGlsZCB0IH5jaGlsZCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIGNoaWxkIGNoaWxkJyk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfaW52YWxpZF9jaGlsZCB0ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT4gaGFzIDo9ICFoYXMgfHwgbm90IChpc192YWxpZCBjaGlsZCkpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX3BhcmVudCAodCA6IF8gdCkgfnBhcmVudCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQnKSAtPiBoYXMgOj0gIWhhcyB8fCBzYW1lIHBhcmVudCBwYXJlbnQnKTtcbiAgIWhhc1xuOztcblxubGV0IHNob3VsZF9iZV9pbnZhbGlkYXRlZCA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gdCAtPlxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICAoKiBub2RlcyB3aXRoIG5vIGNoaWxkcmVuICopXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBdCBfIC0+IGZhbHNlXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gZmFsc2VcbiAgfCBDb25zdCBfIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGZhbHNlXG4gIHwgSW52YWxpZCAtPiBmYWxzZVxuICAoKiBOb2RlcyB3aXRoIGEgZml4ZWQgc2V0IG9mIGNoaWxkcmVuIGFyZSBpbnZhbGlkIGlmIGFueSBjaGlsZCBpcyBpbnZhbGlkLiAqKVxuICB8IEFycmF5X2ZvbGQgX1xuICB8IEZyZWV6ZSBfXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF9cbiAgfCBTdGVwX2Z1bmN0aW9uIF9cbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCBfIC0+IGhhc19pbnZhbGlkX2NoaWxkIHRcbiAgKCogQSAqX2NoYW5nZSBub2RlIGlzIGludmFsaWQgaWYgdGhlIG5vZGUgaXQgaXMgd2F0Y2hpbmcgZm9yIGNoYW5nZXMgaXMgaW52YWxpZCAoc2FtZVxuICAgICByZWFzb24gYXMgYWJvdmUpLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIFtoYXNfaW52YWxpZF9jaGlsZCB0XS4gKilcbiAgfCBCaW5kX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgfCBJZl90ZXN0X2NoYW5nZSB7IHRlc3Q7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3QpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gICgqIFtCaW5kX21haW5dLCBbSWZfdGhlbl9lbHNlXSwgYW5kIFtKb2luX21haW5dIGFyZSBpbnZhbGlkIGlmIHRoZWlyICpfY2hhbmdlIGNoaWxkIGlzLFxuICAgICBidXQgbm90IG5lY2Vzc2FyaWx5IGlmIHRoZWlyIG90aGVyIGNoaWxkcmVuIGFyZSAtLSB0aGUgZ3JhcGggbWF5IGJlIHJlc3RydWN0dXJlZCB0b1xuICAgICBhdm9pZCB0aGUgaW52YWxpZGl0eSBvZiB0aG9zZS4gKilcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0X2NoYW5nZSlcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHNfY2hhbmdlKVxuICB8IEV4cGVydCBfIC0+XG4gICAgKCogVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgd2UgZG8gZm9yIGJpbmQgYWJvdmUsIGV4Y2VwdCB0aGF0IGFueSBpbnZhbGlkIGNoaWxkIGNhbiBiZVxuICAgICAgIHJlbW92ZWQsIHNvIHdlIGNhbiBvbmx5IHRlbGwgaWYgYW4gZXhwZXJ0IG5vZGUgYmVjb21lcyBpbnZhbGlkIHdoZW4gYWxsIGl0c1xuICAgICAgIGRlcGVuZGVuY2llcyBoYXZlIGZpcmVkICh3aGljaCBpbiBwcmFjdGljZSBtZWFucyB3aGVuIHdlIGFyZSBhYm91dCB0byBydW4gaXQpLiAqKVxuICAgIGZhbHNlXG47O1xuXG5sZXQgZm9sZF9vYnNlcnZlcnMgKHQgOiBfIHQpIH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGFjIDo9IGYgIWFjIG9ic2VydmVyXG4gIGRvbmU7XG4gICFhY1xuOztcblxubGV0IGl0ZXJfb2JzZXJ2ZXJzIHQgfmYgPSBmb2xkX29ic2VydmVycyB0IH5pbml0OigpIH5mOihmdW4gKCkgb2JzZXJ2ZXIgLT4gZiBvYnNlcnZlcilcblxubGV0IGludmFyaWFudCAodHlwZSBhKSAoaW52YXJpYW50X2EgOiBhIC0+IHVuaXQpICh0IDogYSB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgWyV0ZXN0X2VxOiBib29sXSAobmVlZHNfdG9fYmVfY29tcHV0ZWQgdCkgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpO1xuICAgIGlmIGlzX25lY2Vzc2FyeSB0XG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHQuY3JlYXRlZF9pbik7XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCkgLT5cbiAgICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IGNoaWxkLmhlaWdodCk7XG4gICAgICAgIGFzc2VydCAoaGFzX3BhcmVudCBjaGlsZCB+cGFyZW50OnQpKTtcbiAgICAgIGFzc2VydCAobm90IChzaG91bGRfYmVfaW52YWxpZGF0ZWQgdCkpKTtcbiAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCkgLT5cbiAgICAgIGFzc2VydCAoaGFzX2NoaWxkIHBhcmVudCB+Y2hpbGQ6dCk7XG4gICAgICBhc3NlcnQgKGlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA8IHBhcmVudC5oZWlnaHQpKTtcbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOihjaGVjayBOb2RlX2lkLmludmFyaWFudClcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5yZWNvbXB1dGVkX2F0OihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICB+dmFsdWVfb3B0OlxuICAgICAgICAoY2hlY2sgKGZ1biB2YWx1ZV9vcHQgLT5cbiAgICAgICAgICAgaWYgaXNfdmFsaWQgdCAmJiBub3QgKGlzX3N0YWxlIHQpIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFsdWVfb3B0KTtcbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgdmFsdWVfb3B0KSlcbiAgICAgIH5raW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBraW5kIC0+XG4gICAgICAgICAgIEtpbmQuaW52YXJpYW50IGludmFyaWFudF9hIGtpbmQ7XG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICB8IEV4cGVydCBlIC0+XG4gICAgICAgICAgICAgRXhwZXJ0LmludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlbiBlIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgcGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfnBhcmVudDA6XG4gICAgICAgIChjaGVjayAoZnVuIHBhcmVudDAgLT5cbiAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXSAodC5udW1fcGFyZW50cyA+IDApIChVb3B0LmlzX3NvbWUgcGFyZW50MCkpKVxuICAgICAgfmNyZWF0ZWRfaW46KGNoZWNrIFNjb3BlLmludmFyaWFudClcbiAgICAgIH5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgLT5cbiAgICAgICAgICAgaWYgU2NvcGUuaXNfdG9wIHQuY3JlYXRlZF9pbiB8fCBub3QgKGlzX3ZhbGlkIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUpKSlcbiAgICAgIH5oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodCAtPlxuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdCB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IDApIGVsc2UgYXNzZXJ0IChoZWlnaHQgPSAtMSkpKVxuICAgICAgfmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIC0+XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID49IC0xKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPD0gdC5oZWlnaHQpKSlcbiAgICAgIH5wcmV2X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAocHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgcHJldikgPSBVb3B0LnZhbHVlX2V4biBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IHByZXYuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfm5leHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBuZXh0LnByZXZfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbmV4dC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+aGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgIGlmIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID49IDBcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwgdC5oZWlnaHQpKSlcbiAgICAgIH5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcClcbiAgICAgICAgICAgZWxzZSBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBuZXh0KSA9IFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAoaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCBuZXh0KTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuIEFycmF5Lml0ZXIgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5mOihmdW4geCAtPiBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlbiBBcnJheS5pdGVyIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+ZjooZnVuIHggLT4gYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlbiBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCkpKSlcbiAgOztcblxuICBsZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICAgIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuICA7O1xuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IHIgPSByZWYgMCBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0IH5mOihmdW4gbm9kZSAtPiByIDo9ICFyICsgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5sZW5ndGggbm9kZSk7XG4gICAgIXJcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BZGp1c3RfaGVpZ2h0c19oZWFwLnQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgOyBtdXRhYmxlIG1heF9oZWlnaHRfc2VlbiA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxubGV0IG1heF9oZWlnaHRfYWxsb3dlZCB0ID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQgLSAxXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPSBOb2Rlc19ieV9oZWlnaHQubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KSkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5tYXhfaGVpZ2h0X3NlZW46XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9oZWlnaHRfc2VlbiAtPlxuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChtYXhfaGVpZ2h0X3NlZW4gPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6KGNoZWNrIE5vZGVzX2J5X2hlaWdodC5pbnZhcmlhbnQpKVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG1heF9oZWlnaHRfc2VlbiA9IDBcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBtYXhfaGVpZ2h0X2FsbG93ZWQgPCB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIGxlc3MgdGhhbiB0aGUgbWF4IGhlaWdodCBhbHJlYWR5IHNlZW5cIlxuICAgICAgKG1heF9oZWlnaHRfYWxsb3dlZCwgYG1heF9oZWlnaHRfc2VlbiB0Lm1heF9oZWlnaHRfc2VlbilcbiAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4X2hlaWdodF9zZWVuIG9mIGludCBdXTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBOb2Rlc19ieV9oZWlnaHQuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWRcbjs7XG5cbmxldCBhZGRfdW5sZXNzX21lbSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IC0xXG4gIHRoZW4gKFxuICAgIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICAgICgqIFdlIHByb2Nlc3Mgbm9kZXMgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmUtYWRqdXN0ZWQgaGVpZ2h0LCBzbyBpdCBpcyBhIGJ1ZyBpZiB3ZVxuICAgICAgIGV2ZXIgdHJ5IHRvIGFkZCBhIG5vZGUgdGhhdCB3b3VsZCB2aW9sYXRlIHRoYXQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSB0LmhlaWdodF9sb3dlcl9ib3VuZCk7XG4gICAgKCogV2hlbmV2ZXIgd2Ugc2V0IGEgbm9kZSdzIGhlaWdodCwgd2UgdXNlIFtzZXRfaGVpZ2h0XSwgd2hpY2ggZW5mb3JjZXMgdGhpcy4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIGhlaWdodDtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gICAgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0O1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgKFVvcHQuc29tZSAoTm9kZS5QYWNrZWQuVCBub2RlKSkpXG47O1xuXG5sZXQgcmVtb3ZlX21pbl9leG4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyAmJiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkFkanVzdF9oZWlnaHRzX2hlYXAucmVtb3ZlX21pbiBvZiBlbXB0eSBoZWFwXCIgdCBbJXNleHBfb2Y6IHRdO1xuICBsZXQgciA9IHJlZiB0LmhlaWdodF9sb3dlcl9ib3VuZCBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0ICFyKSBkb1xuICAgIGluY3IgclxuICBkb25lO1xuICBsZXQgaGVpZ2h0ID0gIXIgaW5cbiAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsZXQgKFQgbm9kZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkgaW5cbiAgbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwO1xuICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcblxubGV0IHNldF9oZWlnaHQgdCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBpZiBoZWlnaHQgPiB0Lm1heF9oZWlnaHRfc2VlblxuICB0aGVuIChcbiAgICB0Lm1heF9oZWlnaHRfc2VlbiA8LSBoZWlnaHQ7XG4gICAgaWYgaGVpZ2h0ID4gbWF4X2hlaWdodF9hbGxvd2VkIHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIm5vZGUgd2l0aCB0b28gbGFyZ2UgaGVpZ2h0XCJcbiAgICAgICAgKGBIZWlnaHQgaGVpZ2h0LCBgTWF4IChtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpXG4gICAgICAgIFslc2V4cF9vZjogWyBgSGVpZ2h0IG9mIGludCBdICogWyBgTWF4IG9mIGludCBdXSk7XG4gIG5vZGUuaGVpZ2h0IDwtIGhlaWdodFxuOztcblxubGV0IGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudCA9XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBjaGlsZCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBpZiBOb2RlLnNhbWUgcGFyZW50IG9yaWdpbmFsX2NoaWxkXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiYWRkaW5nIGVkZ2UgbWFkZSBncmFwaCBjeWNsaWNcIlxuICAgICAgKGBjaGlsZCBvcmlnaW5hbF9jaGlsZCwgYHBhcmVudCBvcmlnaW5hbF9wYXJlbnQpXG4gICAgICBbJXNleHBfb2Y6IFsgYGNoaWxkIG9mIF8gTm9kZS50IF0gKiBbIGBwYXJlbnQgb2YgXyBOb2RlLnQgXV07XG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW4gKFxuICAgIGFkZF91bmxlc3NfbWVtIHQgcGFyZW50O1xuICAgICgqIFdlIHNldCBbcGFyZW50LmhlaWdodF0gYWZ0ZXIgYWRkaW5nIFtwYXJlbnRdIHRvIHRoZSBoZWFwLCBzbyB0aGF0IFtwYXJlbnRdIGdvZXNcbiAgICAgICBpbiB0aGUgaGVhcCB3aXRoIGl0cyBwcmUtYWRqdXN0ZWQgaGVpZ2h0LiAqKVxuICAgIHNldF9oZWlnaHQgdCBwYXJlbnQgKGNoaWxkLmhlaWdodCArIDEpKVxuOztcblxubGV0IGFkanVzdF9oZWlnaHRzXG4gICAgICAodHlwZSBhIGIpXG4gICAgICB0XG4gICAgICByZWNvbXB1dGVfaGVhcFxuICAgICAgfmNoaWxkOihvcmlnaW5hbF9jaGlsZCA6IGEgTm9kZS50KVxuICAgICAgfnBhcmVudDoob3JpZ2luYWxfcGFyZW50IDogYiBOb2RlLnQpXG4gID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGlzX2VtcHR5IHQpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAob3JpZ2luYWxfY2hpbGQuaGVpZ2h0ID49IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0O1xuICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgdFxuICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICB+Y2hpbGQ6b3JpZ2luYWxfY2hpbGRcbiAgICB+cGFyZW50Om9yaWdpbmFsX3BhcmVudDtcbiAgd2hpbGUgbGVuZ3RoIHQgPiAwIGRvXG4gICAgbGV0IChUIGNoaWxkKSA9IHJlbW92ZV9taW5fZXhuIHQgaW5cbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIGNoaWxkXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5pbmNyZWFzZV9oZWlnaHQgcmVjb21wdXRlX2hlYXAgY2hpbGQ7XG4gICAgaWYgY2hpbGQubnVtX3BhcmVudHMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgKFQgcGFyZW50KSA9IFVvcHQudmFsdWVfZXhuIGNoaWxkLnBhcmVudDAgaW5cbiAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudDtcbiAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIGNoaWxkLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnQgdCB+b3JpZ2luYWxfY2hpbGQgfm9yaWdpbmFsX3BhcmVudCB+Y2hpbGQgfnBhcmVudFxuICAgICAgZG9uZSk7XG4gICAgbWF0Y2ggY2hpbGQua2luZCB3aXRoXG4gICAgfCBCaW5kX2xoc19jaGFuZ2UgeyBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7IF8gfSAtPlxuICAgICAgbGV0IHIgPSByZWYgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IChUIG5vZGVfb25fcmhzKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVfb25fcmhzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBlbnN1cmVfaGVpZ2h0X3JlcXVpcmVtZW50XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+b3JpZ2luYWxfY2hpbGRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9wYXJlbnRcbiAgICAgICAgICAgIH5jaGlsZFxuICAgICAgICAgICAgfnBhcmVudDpub2RlX29uX3Joc1xuICAgICAgZG9uZVxuICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPCBvcmlnaW5hbF9wYXJlbnQuaGVpZ2h0KVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuQWxhcm1fdmFsdWUuQWN0aW9uLnQgPVxuICAgIHwgQXQgb2YgQXQudFxuICAgIHwgQXRfaW50ZXJ2YWxzIG9mIEF0X2ludGVydmFscy50XG4gICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgfCBTdGVwX2Z1bmN0aW9uIDogXyBTdGVwX2Z1bmN0aW9uX25vZGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpZ25vcmUgc25hcHNob3RcbiAgICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgICBTdGVwX2Z1bmN0aW9uX25vZGUuaW52YXJpYW50IGlnbm9yZSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS50ID1cbiAgeyBhY3Rpb24gOiBBY3Rpb24udFxuICA7ICgqIFtuZXh0X2ZpcmVkXSBzaW5nbHkgbGlua3MgYWxsIGFsYXJtIHZhbHVlcyB0aGF0IGZpcmUgZHVyaW5nIGEgc2luZ2xlIGNhbGwgdG9cbiAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgbXV0YWJsZSBuZXh0X2ZpcmVkIDogKHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXIgfmFjdGlvbjooY2hlY2sgQWN0aW9uLmludmFyaWFudCkgfm5leHRfZmlyZWQ6aWdub3JlKVxuOztcblxubGV0IGNyZWF0ZSBhY3Rpb24gPSB7IGFjdGlvbjsgbmV4dF9maXJlZCA9IFVvcHQubm9uZSB9XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29uZmlnX2ludGZcblxubW9kdWxlIERlZmF1bHQgKCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHMgPSB0cnVlXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLkludGVybmFsX29ic2VydmVyXG5cbm1vZHVsZSBQYWNrZWRfID0gc3RydWN0XG4gIGluY2x1ZGUgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyB8PiBbJXNleHBfb2Y6IF8gVHlwZXMuTm9kZS50XVxuICA7O1xuXG4gIGxldCBwcmV2X2luX2FsbCAoVCB0KSA9IHQucHJldl9pbl9hbGxcbiAgbGV0IG5leHRfaW5fYWxsIChUIHQpID0gdC5uZXh0X2luX2FsbFxuICBsZXQgc2V0X3ByZXZfaW5fYWxsIChUIHQxKSB0MiA9IHQxLnByZXZfaW5fYWxsIDwtIHQyXG4gIGxldCBzZXRfbmV4dF9pbl9hbGwgKFQgdDEpIHQyID0gdDEubmV4dF9pbl9hbGwgPC0gdDJcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIuU3RhdGUudCA9XG4gICAgfCBDcmVhdGVkXG4gICAgfCBJbl91c2VcbiAgICB8IERpc2FsbG93ZWRcbiAgICB8IFVubGlua2VkXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gIHsgKCogU3RhdGUgdHJhbnNpdGlvbnM6XG5cbiAgICAgICB7dlxuICAgICAgICAgQ3JlYXRlZCAtLT4gSW5fdXNlIC0tPiBEaXNhbGxvd2VkIC0tPiBVbmxpbmtlZFxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgXFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL1xuICAgICAgIHZ9ICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBvYnNlcnZpbmcgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9hbGxdIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgaW4gW3N0YXRlLmFsbF9vYnNlcnZlcnNdLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9hbGwgOiBQYWNrZWRfLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyAoKiBbe3ByZXYsbmV4dH1faW5fb2JzZXJ2aW5nXSBkb3VibHkgbGluayBhbGwgb2JzZXJ2ZXJzIG9mIFtvYnNlcnZpbmddLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fb2JzZXJ2aW5nIDogKCdhIHRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSBpbnRlcm5hbF9vYnNlcnZlciA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluY3Jfc3RhdGUgdCA9IHQub2JzZXJ2aW5nLnN0YXRlXG5cbmxldCB1c2VfaXNfYWxsb3dlZCB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPiB0cnVlXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGZhbHNlXG47O1xuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBzYW1lX2FzX3BhY2tlZCAodDEgOiBfIHQpIChQYWNrZWRfLlQgdDIpID0gc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+b2JzZXJ2aW5nOihjaGVjayAoTm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gb25fdXBkYXRlX2hhbmRsZXJzIC0+XG4gICAgICAgICAgIG1hdGNoIHQuc3RhdGUgd2l0aFxuICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChMaXN0LmlzX2VtcHR5IG9uX3VwZGF0ZV9oYW5kbGVycykpKVxuICAgICAgfnByZXZfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLm5leHRfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX2FsbCkpKSkpKVxuICAgICAgfm5leHRfaW5fYWxsOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX2FsbCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fYWxsKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FsbFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHNhbWVfYXNfcGFja2VkXG4gICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIChQYWNrZWRfLnByZXZfaW5fYWxsIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FsbCkpKSkpKVxuICAgICAgfnByZXZfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBwcmV2X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHByZXZfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKG5leHRfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBwcmV2X2luX29ic2VydmluZykpKSkpKVxuICAgICAgfm5leHRfaW5fb2JzZXJ2aW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X2luX29ic2VydmluZyAtPlxuICAgICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fb2JzZXJ2aW5nKSk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX29ic2VydmluZ1xuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKHByZXZfaW5fb2JzZXJ2aW5nIChVb3B0LnZhbHVlX2V4biBuZXh0X2luX29ic2VydmluZykpKSkpKSlcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENyZWF0ZWQgLT5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCB3aXRob3V0IHN0YWJpbGl6aW5nXCJcbiAgICAgIHRcbiAgICAgIFslc2V4cF9vZjogXyB0XVxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIGRpc2FsbG93X2Z1dHVyZV91c2VcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgSW5fdXNlIC0+XG4gICAgbGV0IHVvcHQgPSB0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICBpZiBVb3B0LmlzX25vbmUgdW9wdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF07XG4gICAgVW9wdC51bnNhZmVfdmFsdWUgdW9wdFxuOztcblxubGV0IG9uX3VwZGF0ZV9leG4gdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPlxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwib25fdXBkYXRlIGRpc2FsbG93ZWRcIiB0IFslc2V4cF9vZjogXyB0XVxuICB8IENyZWF0ZWQgfCBJbl91c2UgLT5cbiAgICB0Lm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBvbl91cGRhdGVfaGFuZGxlciA6OiB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICB8IENyZWF0ZWQgLT5cbiAgICAgICAoKiBXZSdsbCBidW1wIFtvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2hlbiBbdF0gaXMgYWN0dWFsbHkgYWRkZWQgdG9cbiAgICAgICAgICBbb2JzZXJ2aW5nLm9ic2VydmVyc10gYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgKClcbiAgICAgfCBJbl91c2UgLT5cbiAgICAgICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgICAgICBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVycyArIDEpXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9vYnNlcnZpbmcgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fb2JzZXJ2aW5nIGluXG4gIHQucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fb2JzZXJ2aW5nIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkucHJldl9pbl9vYnNlcnZpbmcgPC0gcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikubmV4dF9pbl9vYnNlcnZpbmcgPC0gbmV4dDtcbiAgbGV0IG9ic2VydmluZyA9IHQub2JzZXJ2aW5nIGluXG4gIGlmIHBoeXNfZXF1YWwgdCAoVW9wdC52YWx1ZV9leG4gb2JzZXJ2aW5nLm9ic2VydmVycykgdGhlbiBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIG5leHQ7XG4gIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIC0gTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIFtdXG47O1xuXG5sZXQgdW5saW5rX2Zyb21fYWxsIHQgPVxuICBsZXQgcHJldiA9IHQucHJldl9pbl9hbGwgaW5cbiAgbGV0IG5leHQgPSB0Lm5leHRfaW5fYWxsIGluXG4gIHQucHJldl9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICB0Lm5leHRfaW5fYWxsIDwtIFVvcHQubm9uZTtcbiAgaWYgVW9wdC5pc19zb21lIG5leHQgdGhlbiBQYWNrZWRfLnNldF9wcmV2X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgbmV4dCkgcHJldjtcbiAgaWYgVW9wdC5pc19zb21lIHByZXYgdGhlbiBQYWNrZWRfLnNldF9uZXh0X2luX2FsbCAoVW9wdC51bnNhZmVfdmFsdWUgcHJldikgbmV4dFxuOztcblxubGV0IHVubGluayB0ID1cbiAgdW5saW5rX2Zyb21fb2JzZXJ2aW5nIHQ7XG4gIHVubGlua19mcm9tX2FsbCB0XG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFja2VkX1xuXG4gIGxldCBzZXhwX29mX3QgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID1cbiAgICBpbnRlcm5hbF9vYnNlcnZlciB8PiBbJXNleHBfb2Y6IF8gaW50ZXJuYWxfb2JzZXJ2ZXJdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBJbnRlcm5hbF9vYnNlcnZlci50IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbnZhcmlhbnQgaW52YXJpYW50X2EgIXRcbmxldCBvYnNlcnZpbmcgdCA9IEludGVybmFsX29ic2VydmVyLm9ic2VydmluZyAhdFxubGV0IHVzZV9pc19hbGxvd2VkIHQgPSBJbnRlcm5hbF9vYnNlcnZlci51c2VfaXNfYWxsb3dlZCAhdFxubGV0IHZhbHVlX2V4biB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIudmFsdWVfZXhuICF0XG5sZXQgaW5jcl9zdGF0ZSB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIuaW5jcl9zdGF0ZSAhdFxuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgSW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2V4biAhdCBvbl91cGRhdGVfaGFuZGxlclxuOztcbiIsIigqIFtTdGF0ZV0gZGVmaW5lcyB0aGUgZ2xvYmFsIHN0YXRlIG9mIHdoaWNoIHRoZXJlIGlzIG9uZSBpbnN0YW5jZSBmb3IgZWFjaCBjYWxsIHRvXG4gICBbSW5jcmVtZW50YWwuTWFrZV0uXG5cbiAgIFRoaXMgbW9kdWxlIGRvZXMgbm90IGhhdmUgYW4gbWxpIGJlY2F1c2UgaXQgd291bGQgZXNzZW50aWFsbHkgZHVwbGljYXRlXG4gICBbSW5jcmVtZW50YWwuU10sIGV4Y2VwdCBhZGRpbmcgYW4gZXh0cmEgW1N0YXRlLnRdIGFyZ3VtZW50IHRvIGZ1bmN0aW9ucy4gKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbnR5cGUgc3RhdHVzID0gVHlwZXMuU3RhdHVzLnQgPVxuICB8IFN0YWJpbGl6aW5nXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnNcbiAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgb2YgUmFpc2VkX2V4bi50XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG5tb2R1bGUgUnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5SdW5fb25fdXBkYXRlX2hhbmRsZXJzLnQgPSBUIDogJ2EgTm9kZS50ICogJ2EgTm9kZV91cGRhdGUudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCAoVCAobm9kZSwgX25vZGVfdXBkYXRlKSBhcyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+IE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbmx5X2luX2RlYnVnID0gc3RydWN0XG4gICgqIEV4dHJhIHN0YXRlIGtlcHQgb25seSB3aGVuIFtkZWJ1Z10gZm9yIHRoZSBwdXJwb3NlIG9mIHdyaXRpbmcgYXNzZXJ0aW9ucy4gKilcbiAgdHlwZSB0ID0gVHlwZXMuT25seV9pbl9kZWJ1Zy50ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfbm9kZSA6IE5vZGUuUGFja2VkLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA6IE5vZGUuUGFja2VkLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+Y3VycmVudGx5X3J1bm5pbmdfbm9kZTppZ25vcmVcbiAgICAgICAgfmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19ub2RlID0gTm9uZTsgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlID0gW10gfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYWNrZWRfd2Vha19oYXNodGJsID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlBhY2tlZF93ZWFrX2hhc2h0YmwudCA9IFQgOiAoXywgXykgV2Vha19oYXNodGJsLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLlN0YXRlLnQgPVxuICB7IG11dGFibGUgc3RhdHVzIDogc3RhdHVzXG4gIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA6IGJvb2xcbiAgOyAoKiBbc3RhYmlsaXphdGlvbl9udW1dIHN0YXJ0cyBhdCB6ZXJvLCBhbmQgaXMgaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBvZiBlYWNoXG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBtdXRhYmxlIHN0YWJpbGl6YXRpb25fbnVtIDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgOyByZWNvbXB1dGVfaGVhcCA6IFJlY29tcHV0ZV9oZWFwLnRcbiAgOyBhZGp1c3RfaGVpZ2h0c19oZWFwIDogQWRqdXN0X2hlaWdodHNfaGVhcC50XG4gIDsgKCogW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSBob2xkcyBub2RlcyB0aGF0IGhhdmUgaW52YWxpZCBjaGlsZHJlbiB0aGF0IHNob3VsZCBiZVxuICAgICAgIGNvbnNpZGVyZWQgZm9yIGludmFsaWRhdGlvbi4gIEl0IGlzIG9ubHkgdXNlZCBkdXJpbmcgZ3JhcGggcmVzdHJ1Y3R1cmluZzpcbiAgICAgICBbaW52YWxpZGF0ZV9ub2RlXSBhbmQgW2FkZF9wYXJlbnRdLiAgT25jZSBhbiBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzdGFjaywgd2UgdGhlblxuICAgICAgIGl0ZXJhdGUgdW50aWwgaW52YWxpZGl0eSBoYXMgcHJvcGFnYXRlZCB0byBhbGwgYW5jZXN0b3JzIGFzIG5lY2Vzc2FyeSwgYWNjb3JkaW5nIHRvXG4gICAgICAgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXS4gKilcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtudW1fYWN0aXZlX29ic2VydmVyc10gaXMgdGhlIG51bWJlciBvZiBvYnNlcnZlcnMgd2hvc2Ugc3RhdGUgaXMgW0NyZWF0ZWRdIG9yXG4gICAgICAgW0luX3VzZV0uICopXG4gICAgbXV0YWJsZSBudW1fYWN0aXZlX29ic2VydmVycyA6IGludFxuICA7ICgqIFthbGxfb2JzZXJ2ZXJzXSBpcyB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBvYnNlcnZlcnMgaW4gZWZmZWN0LCBvciB0aGF0IGhhdmVcbiAgICAgICBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGEgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlXG4gICAgICAgW3N0YXRlXSBhcyBbSW5fdXNlXSBvciBbRGlzYWxsb3dlZF0uICopXG4gICAgbXV0YWJsZSBhbGxfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgVW9wdC50XG4gIDsgKCogV2UgZW5xdWV1ZSBmaW5hbGl6ZWQgb2JzZXJ2ZXJzIGluIGEgdGhyZWFkLXNhZmUgcXVldWUsIGZvciBoYW5kbGluZyBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uLiAgV2UgdXNlIGEgdGhyZWFkLXNhZmUgcXVldWUgYmVjYXVzZSBPQ2FtbCBmaW5hbGl6ZXJzIGNhbiBydW4gaW4gYW55XG4gICAgICAgdGhyZWFkLiAqKVxuICAgIGZpbmFsaXplZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgKCogW25ld19vYnNlcnZlcnNdIGhvbGRzIG9ic2VydmVycyBjcmVhdGVkIHNpbmNlIHRoZSBtb3N0IHJlY2VudCBzdGFydCBvZiBhXG4gICAgICAgc3RhYmlsaXphdGlvbiAtLSB0aGVzZSBoYXZlIFtzdGF0ZV0gYXMgW0NyZWF0ZWRdIG9yIFtVbmxpbmtlZF0uICBBdCB0aGUgc3RhcnQgb2ZcbiAgICAgICBzdGFiaWxpemF0aW9uLCB3ZSBsaW5rIGludG8gW2FsbF9vYnNlcnZlcnNdIGFsbCBvYnNlcnZlcnMgaW4gW25ld19vYnNlcnZlcnNdIHdob3NlXG4gICAgICAgc3RhdGUgaXMgW0NyZWF0ZWRdIGFuZCBhZGQgdGhlbSB0byB0aGUgW29ic2VydmVyc10gb2YgdGhlIG5vZGUgdGhleSBhcmUgb2JzZXJ2aW5nLlxuICAgICAgIFdlIHN0cnVjdHVyZSB0aGluZ3MgdGhpcyB3YXkgdG8gYWxsb3cgb2JzZXJ2ZXJzIHRvIGJlIGNyZWF0ZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cbiAgICAgICB3aGlsZSBydW5uaW5nIHVzZXIgY29kZSAoW21hcF0sIFtiaW5kXSwgZXRjKSwgYnV0IHRvIG5vdCBoYXZlIHRvIGRlYWwgd2l0aCBub2Rlc1xuICAgICAgIGJlY29taW5nIG5lY2Vzc2FyeSBhbmQgdGhlIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzXSBob2xkcyBhbGwgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBiZWVuIGRpc2FsbG93ZWQgc2luY2UgdGhlIG1vc3RcbiAgICAgICByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlID0gRGlzYWxsb3dlZF0uICBBdCB0aGUgc3RhcnRcbiAgICAgICBvZiBzdGFiaWxpemF0aW9uLCB0aGVzZSBhcmUgdW5saW5rZWQgZnJvbSBbYWxsX29ic2VydmVyc10gYW5kIHRoZWlyIHN0YXRlIGlzXG4gICAgICAgY2hhbmdlZCB0byBbVW5saW5rZWRdLiAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyB1c2VyIGNvZGUgcnVubmluZ1xuICAgICAgIGR1cmluZyBzdGFiaWxpemF0aW9uIHRvIGNhbGwgW2Rpc2FsbG93X2Z1dHVyZV91c2VdLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoXG4gICAgICAgbm9kZXMgYmVjb21pbmcgdW5uZWNlc3NhcnkgYW5kIHRoZSBncmFwaCBjaGFuZ2luZyBkdXJpbmcgc3VjaCBjb2RlLiAqKVxuICAgIGRpc2FsbG93ZWRfb2JzZXJ2ZXJzIDogSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFdlIGRlbGF5IGFsbCBbVmFyLnNldF0gY2FsbHMgdGhhdCBoYXBwZW4gZHVyaW5nIHN0YWJpbGl6YXRpb24gc28gdGhhdCB0aGV5IHRha2VcbiAgICAgICBlZmZlY3QgYWZ0ZXIgc3RhYmlsaXphdGlvbi4gIEFsbCB2YXJpYWJsZXMgc2V0IGR1cmluZyBzdGFiaWxpemF0aW9uIGFyZSBwdXNoZWQgb25cbiAgICAgICBbc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0uICBUaGVuLCBhZnRlciB0aGUgZ3JhcGggaGFzXG4gICAgICAgc3RhYmlsaXplZCwgd2UgZG8gYWxsIHRoZSBzZXRzLCBzbyB0aGF0IHRoZXkgdGFrZSBlZmZlY3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0XG4gICAgICAgc3RhYmlsaXphdGlvbi4gKilcbiAgICBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gOiBWYXIuUGFja2VkLnQgU3RhY2sudFxuICA7ICgqIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaGFzIGFsbCBub2RlcyB3aXRoIGhhbmRsZXJzIHRvIGNvbnNpZGVyIHJ1bm5pbmcgYXQgdGhlXG4gICAgICAgZW5kIG9mIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24uICBBdCB0aGUgZW5kIG9mIHN0YWJpbGl6YXRpb24sIHdlIGNvbnNpZGVyIGVhY2ggbm9kZVxuICAgICAgIGluIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0sIGFuZCBpZiB3ZSBkZWNpZGUgdG8gcnVuIGl0cyBvbi11cGRhdGUgaGFuZGxlcnMsXG4gICAgICAgcHVzaCBpdCBvbiBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICBUaGVuLCBvbmNlIHdlJ3ZlIGNvbnNpZGVyZWQgYWxsIG5vZGVzIGluXG4gICAgICAgW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgd2UgaXRlcmF0ZSB0aHJvdWdoIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXSBhbmRcbiAgICAgICBhY3R1YWxseSBydW4gdGhlIGhhbmRsZXJzLlxuXG4gICAgICAgVGhlc2UgdHdvIHBhc3NlcyBhcmUgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gIER1cmluZyB0aGUgZmlyc3QgcGFzcywgd2UgaGF2ZW4ndFxuICAgICAgIHJ1biBhbnkgdXNlciBoYW5kbGVycywgc28gd2Uga25vdyB0aGF0IHRoZSBzdGF0ZSBpcyBleGFjdGx5IGFzIGl0IHdhcyB3aGVuXG4gICAgICAgc3RhYmlsaXphdGlvbiBmaW5pc2hlZC4gIEluIHBhcnRpY3VsYXIsIHdlIGtub3cgdGhhdCBpZiBhIG5vZGUgaXMgbmVjZXNzYXJ5LCB0aGVuXG4gICAgICAgaXQgaGFzIGEgc3RhYmxlIHZhbHVlOyBvbmNlIHVzZXIgaGFuZGxlcnMgcnVuLCB3ZSBkb24ndCBrbm93IHRoaXMuICBEdXJpbmcgdGhlXG4gICAgICAgc2Vjb25kIHBhc3MsIHVzZXIgaGFuZGxlcnMgY2FuIG1ha2UgY2FsbHMgdG8gYW55IGluY3JlbWVudGFsIGZ1bmN0aW9uIGV4Y2VwdCBmb3JcbiAgICAgICBbc3RhYmlsaXplXS4gIEluIHBhcnRpY3VsYXIsIHNvbWUgZnVuY3Rpb25zIHB1c2ggbm9kZXMgb25cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAgQnV0IG5vIGZ1bmN0aW9ucyAoZXhjZXB0IGZvciBbc3RhYmlsaXplXSkgbW9kaWZ5XG4gICAgICAgW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdLiAqKVxuICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gIDsgbXV0YWJsZSBvbmx5X2luX2RlYnVnIDogT25seV9pbl9kZWJ1Zy50XG4gIDsgd2Vha19oYXNodGJscyA6IFBhY2tlZF93ZWFrX2hhc2h0YmwudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICA7ICgqIFN0YXRzLiAgVGhlc2UgYXJlIGFsbCBpbmNyZW1lbnRlZCBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2UsIGFuZCBuZXZlciBkZWNyZW1lbnRlZC4gKilcbiAgICBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY2hhbmdlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2NyZWF0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV92YXJfc2V0cyA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbm1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DbG9jay50ID1cbiAgICB7ICgqIFdlIHVzZSBbdGltaW5nX3doZWVsXSBmb3IgdGltZS1iYXNlZCBpbmNyZW1lbnRhbHMuICBbbm93XSBpcyBhIHZhcmlhYmxlIGhvbGRpbmdcbiAgICAgICAgIHRoZSBjdXJyZW50IHRpbWUuICBbaGFuZGxlX2ZpcmVkXSBpcyB0aGUgY2xvc3VyZSBwYXNzZWQgdG9cbiAgICAgICAgIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICBJdCBsaW5rcyBhbGwgdGhlIGZpcmVkIGFsYXJtIHZhbHVlcyBpbnRvXG4gICAgICAgICBbZmlyZWRfYWxhcm1fdmFsdWVzXS4gIEFmdGVyIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10gcmV0dXJucywgaXQgdGhlblxuICAgICAgICAgd2Fsa3MgdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgYW5kIGFjdHVhbGx5IGZpcmVzIHRoZW0uICBUaGlzIHR3by1wYXNzIGFwcHJvYWNoIGlzXG4gICAgICAgICBuZWNlc3NhcnkgYmVjYXVzZSBvbmUgaXMgbm90IGFsbG93ZWQgdG8gY2FsbCBbVGltaW5nX3doZWVsXSBmdW5jdGlvbnMgZnJvbSB0aGVcbiAgICAgICAgIFtoYW5kbGVfZmlyZWRdIHRoYXQgb25lIHBhc3NlcyB0byBbVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2tdLiAqKVxuICAgICAgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bm93OlxuICAgICAgICAgIChjaGVjayAoZnVuIChub3cgOiBfIFZhci50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy5lcXVhbCBub3cudmFsdWUgKFRpbWluZ193aGVlbC5ub3cgdC50aW1pbmdfd2hlZWwpKSkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5maXJlZF9hbGFybV92YWx1ZXM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZmlyZWRfYWxhcm1fdmFsdWVzIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGZpcmVkX2FsYXJtX3ZhbHVlcykpKVxuICAgICAgICB+dGltaW5nX3doZWVsOihjaGVjayAoVGltaW5nX3doZWVsLmludmFyaWFudCBBbGFybV92YWx1ZS5pbnZhcmlhbnQpKSlcbiAgOztcblxuICBsZXQgaW5jcl9zdGF0ZSB0ID0gVmFyLmluY3Jfc3RhdGUgdC5ub3dcbmVuZFxuXG5sZXQgbm93IChjbG9jayA6IENsb2NrLnQpID0gY2xvY2subm93LnZhbHVlXG5sZXQgdGltaW5nX3doZWVsX2xlbmd0aCAoY2xvY2sgOiBDbG9jay50KSA9IFRpbWluZ193aGVlbC5sZW5ndGggY2xvY2sudGltaW5nX3doZWVsXG5sZXQgbnVtX3N0YWJpbGl6ZXMgdCA9IFN0YWJpbGl6YXRpb25fbnVtLnRvX2ludCB0LnN0YWJpbGl6YXRpb25fbnVtXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbmxldCBtYXhfaGVpZ2h0X3NlZW4gdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9XG4gIGxldCByID0gcmVmIHQuYWxsX29ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLm5leHRfaW5fYWxsIG9ic2VydmVyO1xuICAgIGYgb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IGRpcmVjdGx5X29ic2VydmVkIHQgPVxuICBsZXQgciA6IE5vZGUuUGFja2VkLnQgbGlzdCByZWYgPSByZWYgW10gaW5cbiAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgIHIgOj0gVCBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmcgOjogIXIpO1xuICAhclxuOztcblxubGV0IHNhdmVfZG90IHQgb3V0ID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3Qgb3V0IChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IHNhdmVfZG90X3RvX2ZpbGUgdCBmaWxlID0gTm9kZS5QYWNrZWQuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlIChkaXJlY3RseV9vYnNlcnZlZCB0KVxubGV0IGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZiA9IE5vZGUuUGFja2VkLml0ZXJfZGVzY2VuZGFudHMgKGRpcmVjdGx5X29ic2VydmVkIHQpIH5mXG5cbm1vZHVsZSBTdGF0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWF4X251bV9wYXJlbnRzIDogaW50XG4gICAgOyBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzIDogKGludCAqIFBlcmNlbnQudCkgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5sZXQgc3RhdHMgdCA9XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSByZWYgKC0xKSBpblxuICBsZXQgbnVtX25lY2Vzc2FyeV9ub2RlcyA9IHJlZiAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgaW5jciBudW1fbmVjZXNzYXJ5X25vZGVzO1xuICAgIG1heF9udW1fcGFyZW50cyA6PSBJbnQubWF4ICFtYXhfbnVtX3BhcmVudHMgbm9kZS5udW1fcGFyZW50cyk7XG4gIGxldCBtYXhfbnVtX3BhcmVudHMgPSAhbWF4X251bV9wYXJlbnRzIGluXG4gIGxldCBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgPSBBcnJheS5jcmVhdGUgfmxlbjoobWF4X251bV9wYXJlbnRzICsgMSkgMCBpblxuICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgIGxldCBudW1fcGFyZW50cyA9IG5vZGUubnVtX3BhcmVudHMgaW5cbiAgICBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSA8LSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMuKG51bV9wYXJlbnRzKSArIDEpO1xuICBsZXQgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyA9XG4gICAgQXJyYXkuZm9sZGkgbnVtX25vZGVzX2J5X251bV9wYXJlbnRzIH5pbml0OltdIH5mOihmdW4gaSBhYyBudW1fbm9kZXMgLT5cbiAgICAgIGlmIG51bV9ub2RlcyA9IDBcbiAgICAgIHRoZW4gYWNcbiAgICAgIGVsc2UgKGksIFBlcmNlbnQub2ZfbXVsdCAoZmxvYXQgbnVtX25vZGVzIC8uIGZsb2F0ICFudW1fbmVjZXNzYXJ5X25vZGVzKSkgOjogYWMpXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgeyBTdGF0cy5tYXhfbnVtX3BhcmVudHM7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgfVxuOztcblxubGV0IGFtX3N0YWJpbGl6aW5nIHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemluZyAtPiB0cnVlXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+IGZhbHNlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcImNhbm5vdCBjYWxsIGFtX3N0YWJpbGl6aW5nIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczooY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgKHNwcmludGYgXCJjYW5ub3QgJXMgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCIgbmFtZSlcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gYXJlIG5ldmVyIHB1c2hlZCBvbiB0aGUgc3RhY2sgKikpKTtcbiAgICAgICAgKCogV2UgZG8gbm90IGNoZWNrIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGhlcmUsIGJlY2F1c2UgaXQgc2hvdWxkIGJlXG4gICAgICAgICAgIHRydWUsIGFuZCBiZWNhdXNlIGNvbXB1dGluZyBpdCB0YWtlcyBPKG51bWJlciBvZiBjaGlsZHJlbiksIG5vZGUgY2FuIGJlIHB1c2hlZFxuICAgICAgICAgICBvbiB0aGUgc3RhY2sgb25jZSBwZXIgY2hpbGQsIGFuZCBleHBlcnQgbm9kZXMgY2FuIGhhdmUgbG90cyBvZiBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgZG9uZVxuOztcblxuKCogW2FkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB0IH5jaGlsZCB+cGFyZW50XSBhZGRzIFtwYXJlbnRdIGFzIGEgcGFyZW50IG9mXG4gICBbY2hpbGRdLCBhbmQgbWFrZXMgW2NoaWxkXSBhbmQgYWxsIGl0cyBkZXNjZW5kYW50cyBuZWNlc3NhcnksIGVuc3VyaW5nIHRoZWlyIGhlaWdodHNcbiAgIGFyZSBhY2N1cmF0ZS4gIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhYm91dCB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBbY2hpbGRdIGFuZCBbcGFyZW50XVxuICAgdGhvdWdoLiAqKVxubGV0IHJlYyBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSBOb2RlLnQgLT4gcGFyZW50OmIgTm9kZS50IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkIGluXG4gIE5vZGUuYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGlmIG5vdCAoTm9kZS5pc192YWxpZCBjaGlsZCkgdGhlbiBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKFQgcGFyZW50KTtcbiAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IGNoaWxkO1xuICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gIHwgRXhwZXJ0IGUgLT4gRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIGUgfmNoaWxkX2luZGV4XG4gIHwgXyAtPiAoKVxuXG5hbmQgYmVjYW1lX25lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gICgqIFtTY29wZS5pc19uZWNlc3Nhcnkgbm9kZS5jcmVhdGVkX2luXSBpcyB0cnVlIChhc3N1bWluZyB0aGUgc2NvcGUgaXRzZWxmIGlzIHZhbGlkKVxuICAgICBiZWNhdXNlIFtOb2RlLml0ZXJfY2hpbGRyZW5dIGJlbG93IGZpcnN0IHZpc2l0cyB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kIG5vZGVzIGFuZFxuICAgICB0aGVuIHRoZSByaHMuICopXG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZSAmJiBub3QgKFNjb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW4pXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVHJ5aW5nIHRvIG1ha2UgYSBub2RlIG5lY2Vzc2FyeSB3aG9zZSBkZWZpbmluZyBiaW5kIGlzIG5vdCBuZWNlc3NhcnlcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICB0Lm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgKCogU2luY2UgW25vZGVdIGJlY2FtZSBuZWNlc3NhcnksIHRvIHJlc3RvcmUgdGhlIGludmFyaWFudCwgd2UgbmVlZCB0bzpcblxuICAgICAtIGFkZCBwYXJlbnQgcG9pbnRlcnMgdG8gW25vZGVdIGZyb20gaXRzIGNoaWxkcmVuLlxuICAgICAtIHNldCBbbm9kZV0ncyBoZWlnaHQuXG4gICAgIC0gYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAsIGlmIG5lY2Vzc2FyeS4gKilcbiAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSk7XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gbm9kZSB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0cyB+Y2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZF9pbmRleDtcbiAgICAoKiBOb3cgdGhhdCBjaGlsZCBpcyBuZWNlc3NhcnksIGl0IHNob3VsZCBoYXZlIGEgdmFsaWQgaGVpZ2h0LiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5oZWlnaHQgPj0gMCk7XG4gICAgaWYgY2hpbGQuaGVpZ2h0ID49IG5vZGUuaGVpZ2h0IHRoZW4gc2V0X2hlaWdodCBub2RlIChjaGlsZC5oZWlnaHQgKyAxKSk7XG4gICgqIE5vdyB0aGF0IHRoZSBoZWlnaHQgaXMgY29ycmVjdCwgbWF5YmUgYWRkIFtub2RlXSB0byB0aGUgcmVjb21wdXRlIGhlYXAuICBbbm9kZV1cbiAgICAganVzdCBiZWNhbWUgbmVjZXNzYXJ5LCBzbyBpdCBjYW4ndCBoYXZlIGJlZW4gaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgU2luY2UgW25vZGVdXG4gICAgIGlzIG5lY2Vzc2FyeSwgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGUgcmVjb21wdXRlIGhlYXAgaWZmIGl0IGlzIHN0YWxlLiAqKVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpO1xuICBpZiBOb2RlLmlzX3N0YWxlIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTp0cnVlXG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJlY2FtZV9uZWNlc3Nhcnkgbm9kZSA9XG4gIGJlY2FtZV9uZWNlc3Nhcnkgbm9kZTtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgbm9kZS5zdGF0ZVxuOztcblxubGV0IGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGxldCB0ID0gcGFyZW50LnN0YXRlIGluXG4gICgqIEluIHRoZSBjYXNlIHdoZW4gdGhlIGVkZ2UgYmVpbmcgYWRkZWQgY3JlYXRlcyBhIGN5Y2xlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlXG4gICAgIHJlY3Vyc2lvbiBpbiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzXSB0byByZWFjaCBbcGFyZW50XSBhcyBhIGRlc2NlbmRhbnRcbiAgICAgb2YgW2NoaWxkXS4gIEluIHRoYXQgY2FzZSwgdGhlIHJlY3Vyc2lvbiB0ZXJtaW5hdGVzLCBiZWNhdXNlIFtOb2RlLmlzX25lY2Vzc2FyeVxuICAgICBwYXJlbnRdLiAgV2UgdGhlbiByZXR1cm4gaGVyZSBhbmQgc3Vic2VxdWVudGx5IGRldGVjdCB0aGUgY3ljbGUgaW5cbiAgICAgW2FkanVzdF9oZWlnaHRzXS4gKilcbiAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgKCogV2UgYWRqdXN0IGhlaWdodHMgc28gdGhhdCB3ZSBlbnN1cmUgdGhlcmUgYXJlIG5vIGN5Y2xlcyBiZWZvcmUgY2FsbGluZ1xuICAgICBbcHJvcGFnYXRlX2ludmFsaWRpdHldLiAqKVxuICBpZiBjaGlsZC5oZWlnaHQgPj0gcGFyZW50LmhlaWdodFxuICB0aGVuXG4gICAgQWRqdXN0X2hlaWdodHNfaGVhcC5hZGp1c3RfaGVpZ2h0c1xuICAgICAgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICB0LnJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGRcbiAgICAgIH5wYXJlbnQ7XG4gIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQ7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICAoKiB3ZSBvbmx5IGFkZCBuZWNlc3NhcnkgcGFyZW50cyAqKVxuICBpZiAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpXG4gICYmIChTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHBhcmVudC5yZWNvbXB1dGVkX2F0XG4gICAgICB8fCBOb2RlLmVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQpXG4gIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG47O1xuXG5sZXQgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGxldCBzYXZlZCA9IHQuY3VycmVudF9zY29wZSBpblxuICB0LmN1cnJlbnRfc2NvcGUgPC0gc2NvcGU7XG4gIHRyeVxuICAgIGxldCB2ID0gZiAoKSBpblxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICB2XG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICB0LmN1cnJlbnRfc2NvcGUgPC0gc2F2ZWQ7XG4gICAgcmFpc2UgZXhuXG47O1xuXG5sZXQgd2l0aGluX3Njb3BlIHQgc2NvcGUgfmYgPVxuICBpZiBub3QgKFNjb3BlLmlzX3ZhbGlkIHNjb3BlKVxuICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBydW4gd2l0aGluIGFuIGludmFsaWQgc2NvcGVcIiB0IFslc2V4cF9vZjogdF07XG4gIHJ1bl93aXRoX3Njb3BlIHQgc2NvcGUgfmZcbjs7XG5cbmxldCBjaGFuZ2VfY2hpbGRcbiAgOiB0eXBlIGEgYi5cbiAgICBwYXJlbnQ6YSBOb2RlLnRcbiAgICAtPiBvbGRfY2hpbGQ6YiBOb2RlLnQgVW9wdC50XG4gICAgLT4gbmV3X2NoaWxkOmIgTm9kZS50XG4gICAgLT4gY2hpbGRfaW5kZXg6aW50XG4gICAgLT4gdW5pdFxuICA9XG4gIGZ1biB+cGFyZW50IH5vbGRfY2hpbGQgfm5ld19jaGlsZCB+Y2hpbGRfaW5kZXggLT5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF9jaGlsZFxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleFxuICBlbHNlIChcbiAgICBsZXQgb2xkX2NoaWxkID0gVW9wdC51bnNhZmVfdmFsdWUgb2xkX2NoaWxkIGluXG4gICAgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9jaGlsZCBuZXdfY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSByZW1vdmUgW29sZF9jaGlsZF0gYmVmb3JlIGFkZGluZyBbbmV3X2NoaWxkXSwgYmVjYXVzZSB0aGV5IHNoYXJlIHRoZSBzYW1lXG4gICAgICAgICBjaGlsZCBpbmRleC4gKilcbiAgICAgIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQ6b2xkX2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAgICAgKCogV2UgZm9yY2UgW29sZF9jaGlsZF0gdG8gdGVtcG9yYXJpbHkgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgW2FkZF9wYXJlbnRdIGNhbid0XG4gICAgICAgICBtaXN0YWtlbmx5IHRoaW5rIGl0IGlzIHVubmVjZXNzYXJ5IGFuZCB0cmFuc2l0aW9uIGl0IHRvIG5lY2Vzc2FyeSAod2hpY2ggd291bGRcbiAgICAgICAgIGFkZCBkdXBsaWNhdGUgZWRnZXMgYW5kIGJyZWFrIHRoaW5ncyBob3JyaWJseSkuICopXG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIHRydWU7XG4gICAgICBhZGRfcGFyZW50IH5jaGlsZDpuZXdfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICBvbGRfY2hpbGQuZm9yY2VfbmVjZXNzYXJ5IDwtIGZhbHNlO1xuICAgICAgKCogV2UgW2NoZWNrX2lmX3VubmVjZXNzYXJ5XSBhZnRlciBbYWRkX3BhcmVudF0sIHNvIHRoYXQgd2UgZG9uJ3QgdW5uZWNlc3NhcmlseVxuICAgICAgICAgdHJhbnNpdGlvbiBub2RlcyBmcm9tIG5lY2Vzc2FyeSB0byB1bm5lY2Vzc2FyeSBhbmQgdGhlbiBiYWNrIGFnYWluLiAqKVxuICAgICAgY2hlY2tfaWZfdW5uZWNlc3Nhcnkgb2xkX2NoaWxkKSlcbjs7XG5cbmxldCBhZGRfYWxhcm0gY2xvY2sgfmF0IGFsYXJtX3ZhbHVlID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICBUaW1pbmdfd2hlZWwuYWRkIGNsb2NrLnRpbWluZ193aGVlbCB+YXQgYWxhcm1fdmFsdWVcbjs7XG5cbmxldCByZWMgcmVjb21wdXRlIDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIFNvbWUgKFQgbm9kZSk7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gIHQubnVtX25vZGVzX3JlY29tcHV0ZWQgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZCArIDE7XG4gIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoQXJyYXlfZm9sZC5jb21wdXRlIGFycmF5X2ZvbGQpXG4gIHwgQXQgeyBhdDsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGFuIFtBdF0gbm9kZSBhZnRlciBbYXRdLiAgW2FkdmFuY2VfY2xvY2tdIHdhc1xuICAgICAgIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbQ29uc3RdIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBCZWZvcmVcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZVxuICAgICAgKHsgbWFpblxuICAgICAgIDsgZlxuICAgICAgIDsgbGhzXG4gICAgICAgOyByaHNfc2NvcGVcbiAgICAgICA7IHJocyA9IG9sZF9yaHNcbiAgICAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICA7IF9cbiAgICAgICB9IGFzIGJpbmQpIC0+XG4gICAgKCogV2UgY2xlYXIgW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gc28gaXQgd2lsbCBob2xkIGp1c3QgdGhlIG5vZGVzIGNyZWF0ZWQgYnlcbiAgICAgICB0aGlzIGNhbGwgdG8gW2ZdLiAqKVxuICAgIGJpbmQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDwtIFVvcHQubm9uZTtcbiAgICBsZXQgcmhzID0gcnVuX3dpdGhfc2NvcGUgdCByaHNfc2NvcGUgfmY6KGZ1biAoKSAtPiBmIChOb2RlLnZhbHVlX2V4biBsaHMpKSBpblxuICAgIGJpbmQucmhzIDwtIFVvcHQuc29tZSByaHM7XG4gICAgKCogQW50aWNpcGF0ZSB3aGF0IFttYXliZV9jaGFuZ2VfdmFsdWVdIHdpbGwgZG8sIHRvIG1ha2Ugc3VyZSBCaW5kX21haW4gaXMgc3RhbGVcbiAgICAgICByaWdodCBhd2F5LiBUaGlzIHdheSwgaWYgdGhlIG5ldyBjaGlsZCBpcyBpbnZhbGlkLCB3ZSdsbCBzYXRpc2Z5IHRoZSBpbnZhcmlhbnRcbiAgICAgICBzYXlpbmcgdGhhdCBbbmVlZHNfdG9fYmVfY29tcHV0ZWQgYmluZF9tYWluXSBpbiBbcHJvcGFnYXRlX2ludmFsaWRpdHldICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmJpbmRfcmhzX2NoaWxkX2luZGV4O1xuICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfcmhzXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBpbnZhbGlkYXRlIGFmdGVyIFtjaGFuZ2VfY2hpbGRdLCBiZWNhdXNlIGludmFsaWRhdGlvbiBjaGFuZ2VzIHRoZSBba2luZF0gb2ZcbiAgICAgICAgIG5vZGVzIHRvIFtJbnZhbGlkXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyIHZpc2l0IHRoZWlyIGNoaWxkcmVuLlxuICAgICAgICAgQWxzbywgdGhlIFtvbGRfcmhzXSBub2RlcyBhcmUgdHlwaWNhbGx5IG1hZGUgdW5uZWNlc3NhcnkgYnkgW2NoYW5nZV9jaGlsZF0sIGFuZFxuICAgICAgICAgc28gYnkgaW52YWxpZGF0aW5nIGFmdGVyd2FyZHMsIHdlIHdpbGwgbm90IHdhc3RlIHRpbWUgYWRkaW5nIHRoZW0gdG8gdGhlXG4gICAgICAgICByZWNvbXB1dGUgaGVhcCBhbmQgdGhlbiByZW1vdmluZyB0aGVtLiAqKVxuICAgICAgaWYgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgZWxzZVxuICAgICAgICByZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICAgICAgdFxuICAgICAgICAgIG9sZF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB+bmV3X3Njb3BlOm1haW4uY3JlYXRlZF9pbjtcbiAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQpO1xuICAgICgqIFtub2RlXSB3YXMgdmFsaWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBbQmluZF9saHNfY2hhbmdlXSBicmFuY2gsIGFuZCBpbnZhbGlkYXRpb25cbiAgICAgICBvbmx5IHZpc2l0cyBoaWdoZXIgbm9kZXMsIHNvIFtub2RlXSBpcyBzdGlsbCB2YWxpZC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IEJpbmRfbWFpbiB7IHJoczsgXyB9IC0+IGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gcmhzKVxuICB8IENvbnN0IGEgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgYVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBvbmx5X2ZyZWV6ZV93aGVuOyBfIH0gLT5cbiAgICBsZXQgdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgIGlmIG9ubHlfZnJlZXplX3doZW4gdmFsdWVcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgTm9kZS5zZXRfa2luZCBub2RlIChDb25zdCB2YWx1ZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gc2V0X2hlaWdodCBub2RlIDAgZWxzZSBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZSk7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgdmFsdWVcbiAgfCBJZl90ZXN0X2NoYW5nZSAoeyBtYWluOyBjdXJyZW50X2JyYW5jaDsgdGVzdDsgdGhlbl87IGVsc2VfOyBfIH0gYXMgaWZfdGhlbl9lbHNlKSAtPlxuICAgIGxldCBkZXNpcmVkX2JyYW5jaCA9IGlmIE5vZGUudmFsdWVfZXhuIHRlc3QgdGhlbiB0aGVuXyBlbHNlIGVsc2VfIGluXG4gICAgaWZfdGhlbl9lbHNlLmN1cnJlbnRfYnJhbmNoIDwtIFVvcHQuc29tZSBkZXNpcmVkX2JyYW5jaDtcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6Y3VycmVudF9icmFuY2hcbiAgICAgIH5uZXdfY2hpbGQ6ZGVzaXJlZF9icmFuY2hcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmlmX2JyYW5jaF9jaGlsZF9pbmRleDtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoKVxuICB8IElmX3RoZW5fZWxzZSB7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoKVxuICB8IEludmFsaWQgLT5cbiAgICAoKiBXZSBuZXZlciBoYXZlIGludmFsaWQgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwOyB0aGV5IGFyZSBuZXZlciBzdGFsZS4gKilcbiAgICBhc3NlcnQgZmFsc2VcbiAgfCBKb2luX2xoc19jaGFuZ2UgKHsgbGhzOyBtYWluOyByaHMgPSBvbGRfcmhzOyBfIH0gYXMgam9pbikgLT5cbiAgICBsZXQgcmhzID0gTm9kZS52YWx1ZV9leG4gbGhzIGluXG4gICAgam9pbi5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBzZWUgdGhlIGNvbW1lbnQgaW4gQmluZF9saHNfY2hhbmdlICopXG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgY2hhbmdlX2NoaWxkXG4gICAgICB+cGFyZW50Om1haW5cbiAgICAgIH5vbGRfY2hpbGQ6b2xkX3Joc1xuICAgICAgfm5ld19jaGlsZDpyaHNcbiAgICAgIH5jaGlsZF9pbmRleDpLaW5kLmpvaW5fcmhzX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSm9pbl9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgTWFwIChmLCBuMSkgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSlcbiAgfCBTbmFwc2hvdCB7IGF0OyBiZWZvcmU7IGNsb2NrOyBfIH0gLT5cbiAgICAoKiBJdCBpcyBhIGJ1ZyBpZiB3ZSB0cnkgdG8gY29tcHV0ZSBhIFtTbmFwc2hvdF0gYW5kIHRoZSBhbGFybSBzaG91bGQgaGF2ZSBmaXJlZC5cbiAgICAgICBbYWR2YW5jZV9jbG9ja10gd2FzIHN1cHBvc2VkIHRvIGNvbnZlcnQgaXQgdG8gYSBbRnJlZXplXSBhdCB0aGUgYXBwcm9wcmlhdGVcbiAgICAgICB0aW1lLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IChub3cgY2xvY2spKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBiZWZvcmVcbiAgfCBTdGVwX2Z1bmN0aW9uICh7IGNoaWxkOyBjbG9jazsgXyB9IGFzIHN0ZXBfZnVuY3Rpb25fbm9kZSkgLT5cbiAgICBpZiBVb3B0LmlzX3NvbWUgY2hpbGRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGlsZCA9IFVvcHQudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlXG4gICAgICAgICAgIGNoaWxkLmNoYW5nZWRfYXRcbiAgICAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXRcbiAgICAgICAgID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDwtIGNoaWxkLmNoYW5nZWRfYXQ7XG4gICAgICAgIHJlbW92ZV9hbGFybSBjbG9jayBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm07XG4gICAgICAgIGxldCBzdGVwX2Z1bmN0aW9uID0gTm9kZS52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIDwtIFVvcHQuc29tZSAoU3RlcF9mdW5jdGlvbi5pbml0IHN0ZXBfZnVuY3Rpb24pO1xuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudXBjb21pbmdfc3RlcHMgPC0gU3RlcF9mdW5jdGlvbi5zdGVwcyBzdGVwX2Z1bmN0aW9uO1xuICAgICAgICAoKiBJZiB0aGUgY2hpbGQgaXMgYSBjb25zdGFudCwgd2UgZHJvcCBvdXIgcmVmZXJlbmNlIHRvIGl0LCB0byBhdm9pZCBob2xkaW5nIG9uIHRvXG4gICAgICAgICAgIHRoZSBlbnRpcmUgc3RlcCBmdW5jdGlvbi4gKilcbiAgICAgICAgaWYgTm9kZS5pc19jb25zdCBjaGlsZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuY2hpbGQgPC0gVW9wdC5ub25lO1xuICAgICAgICAgIHNldF9oZWlnaHQgbm9kZSAoU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpKSkpO1xuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5hZHZhbmNlIHN0ZXBfZnVuY3Rpb25fbm9kZSB+dG9fOihub3cgY2xvY2spO1xuICAgIGxldCBzdGVwX2Z1bmN0aW9uX3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gc3RlcF9mdW5jdGlvbl9ub2RlLnZhbHVlIGluXG4gICAgKG1hdGNoIFNlcXVlbmNlLmhkIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyB3aXRoXG4gICAgIHwgTm9uZSAtPiBpZiBVb3B0LmlzX25vbmUgY2hpbGQgdGhlbiBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHN0ZXBfZnVuY3Rpb25fdmFsdWUpXG4gICAgIHwgU29tZSAoYXQsIF8pIC0+XG4gICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBzdGVwX2Z1bmN0aW9uX3ZhbHVlXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY29tcHV0ZSB1KVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgVmFyIHZhciAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YXIudmFsdWVcbiAgfCBNYXAyIChmLCBuMSwgbjIpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpKVxuICB8IE1hcDMgKGYsIG4xLCBuMiwgbjMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikgKE5vZGUudmFsdWVfZXhuIG4zKSlcbiAgfCBNYXA0IChmLCBuMSwgbjIsIG4zLCBuNCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpIChOb2RlLnZhbHVlX2V4biBuNCkpXG4gIHwgTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSkpXG4gIHwgTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpKVxuICB8IE1hcDcgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNykpXG4gIHwgTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOCkpXG4gIHwgTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpKVxuICB8IE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMCkpXG4gIHwgTWFwMTEgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKSlcbiAgfCBNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpKVxuICB8IE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMykpXG4gIHwgTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KSlcbiAgfCBNYXAxNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4xNSkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTUpKVxuICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAobWF0Y2ggRXhwZXJ0LmJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIGV4cGVydCB3aXRoXG4gICAgIHwgYEludmFsaWQgLT5cbiAgICAgICBpbnZhbGlkYXRlX25vZGUgbm9kZTtcbiAgICAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSB0XG4gICAgIHwgYE9rIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChleHBlcnQuZiAoKSkpXG5cbmFuZCBjb3B5X2NoaWxkIDogdHlwZSBhLiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGQ6YSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biB+cGFyZW50IH5jaGlsZCAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIGNoaWxkXG4gIHRoZW4gbWF5YmVfY2hhbmdlX3ZhbHVlIHBhcmVudCAoTm9kZS52YWx1ZV9leG4gY2hpbGQpXG4gIGVsc2UgKFxuICAgIGludmFsaWRhdGVfbm9kZSBwYXJlbnQ7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgcGFyZW50LnN0YXRlKVxuXG5hbmQgbWF5YmVfY2hhbmdlX3ZhbHVlIDogdHlwZSBhLiBhIE5vZGUudCAtPiBhIC0+IHVuaXQgPVxuICBmdW4gbm9kZSBuZXdfdmFsdWUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIGxldCBvbGRfdmFsdWVfb3B0ID0gbm9kZS52YWx1ZV9vcHQgaW5cbiAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZV9vcHRcbiAgfHwgbm90XG4gICAgICAgKEN1dG9mZi5zaG91bGRfY3V0b2ZmXG4gICAgICAgICAgbm9kZS5jdXRvZmZcbiAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgIH5uZXdfdmFsdWUpXG4gIHRoZW4gKFxuICAgIG5vZGUudmFsdWVfb3B0IDwtIFVvcHQuc29tZSBuZXdfdmFsdWU7XG4gICAgbm9kZS5jaGFuZ2VkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgdC5udW1fbm9kZXNfY2hhbmdlZCA8LSB0Lm51bV9ub2Rlc19jaGFuZ2VkICsgMTtcbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gb2xkX3ZhbHVlX29wdDtcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGUpO1xuICAgIGlmIG5vZGUubnVtX3BhcmVudHMgPj0gMVxuICAgIHRoZW4gKFxuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gbm9kZS5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgICAgIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBub2RlLnBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgaW5cbiAgICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBleHBlcnRcbiAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPlxuICAgICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgICAgdVxuICAgICAgICAgICAgIH5jaGlsZDpub2RlXG4gICAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpXG4gICAgICAgICAgICAgfm9sZF92YWx1ZV9vcHRcbiAgICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAoKiBXZSBkb24ndCBkbyB0aGUgW2Nhbl9yZWNvbXB1dGVfbm93XSBvcHRpbWl6YXRpb24uICBTaW5jZSBtb3N0IG5vZGVzIG9ubHkgaGF2ZVxuICAgICAgICAgICBvbmUgcGFyZW50LCBpdCBpcyBub3QgcHJvYmFibHkgbm90IGEgYmlnIGxvc3MuICBJZiB3ZSBkaWQgaXQgYW55d2F5LCB3ZSdkXG4gICAgICAgICAgIGhhdmUgdG8gYmUgY2FyZWZ1bCwgYmVjYXVzZSB3aGlsZSB3ZSBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFyZW50cywgd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGVtLCBhbmQgaW4gcGFydGljdWxhciB3ZSBjYW4gZXhlY3V0ZSBsaHMtY2hhbmdlIG5vZGVzIHdobyBjYW5cbiAgICAgICAgICAgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgVGhpbmsgYWJvdXQ6XG5cbiAgICAgICAgICAge1tcbiAgICAgICAgICAgICBsaHMgPj49IGZ1biBiIC0+IGlmIGIgdGhlbiBsaHMgPj58IEZuLmlkIGVsc2UgY29uc3QgYlxuICAgICAgICAgICBdfVxuXG4gICAgICAgICAgIElmIHRoZSBvcHRpbWl6YXRpb24ga2lja3MgaW4gd2hlbiB3ZSBwcm9wYWdhdGUgY2hhbmdlIHRvIHRoZSBwYXJlbnRzIG9mIFtsaHNdXG4gICAgICAgICAgICh3aGljaCBjaGFuZ2VzIGZyb20gW3RydWVdIHRvIFtmYWxzZV0pLCB3ZSBjb3VsZCBleGVjdXRlIHRoZSBbbGhzLWNoYW5nZV1cbiAgICAgICAgICAgZmlyc3QsIHdoaWNoIHdvdWxkIG1ha2UgZGlzY29ubmVjdCB0aGUgW21hcF0gbm9kZSBmcm9tIFtsaHNdLiAgQW5kIHRoZW4gd2VcbiAgICAgICAgICAgd291bGQgZXhlY3V0ZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZSBbbGhzXSwgd2hpY2ggZG9lc24ndCBleGlzdCBhbnltb3JlIGFuZFxuICAgICAgICAgICBpbmNyZW1lbnRhbCB3b3VsZCBzZWdmYXVsdCAodGhlcmUgbWF5IGJlIGEgbGVzcyBuYWl2ZSB3YXkgb2YgbWFraW5nIHRoaXMgd29ya1xuICAgICAgICAgICB0aG91Z2gpLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudFxuICAgICAgZG9uZTtcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gbm9kZS5wYXJlbnQwIGluXG4gICAgICAobWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgIHwgRXhwZXJ0IHAgLT5cbiAgICAgICAgIGxldCBjaGlsZF9pbmRleCA9IG5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKSBpblxuICAgICAgICAgRXhwZXJ0LnJ1bl9lZGdlX2NhbGxiYWNrIH5jaGlsZF9pbmRleCBwXG4gICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXG4gICAgICAgICAgIHVcbiAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgfmNoaWxkX2luZGV4Om5vZGUubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LigwKVxuICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICB+bmV3X3ZhbHVlXG4gICAgICAgfCBfIC0+ICgpKTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBjYW5fcmVjb21wdXRlX25vdyA9XG4gICAgICAgICAgbWF0Y2ggcGFyZW50LmtpbmQgd2l0aFxuICAgICAgICAgIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmVuJ3QgcGFyZW50cy4gKilcbiAgICAgICAgICB8IEF0IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBBdF9pbnRlcnZhbHMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IENvbnN0IF8gfCBJbnZhbGlkIHwgU25hcHNob3QgXyB8IFZhciBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZC4gKilcbiAgICAgICAgICB8IEFycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgTWFwMiBfXG4gICAgICAgICAgfCBNYXAzIF9cbiAgICAgICAgICB8IE1hcDQgX1xuICAgICAgICAgIHwgTWFwNSBfXG4gICAgICAgICAgfCBNYXA2IF9cbiAgICAgICAgICB8IE1hcDcgX1xuICAgICAgICAgIHwgTWFwOCBfXG4gICAgICAgICAgfCBNYXA5IF9cbiAgICAgICAgICB8IE1hcDEwIF9cbiAgICAgICAgICB8IE1hcDExIF9cbiAgICAgICAgICB8IE1hcDEyIF9cbiAgICAgICAgICB8IE1hcDEzIF9cbiAgICAgICAgICB8IE1hcDE0IF9cbiAgICAgICAgICB8IE1hcDE1IF9cbiAgICAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF9cbiAgICAgICAgICB8IEV4cGVydCBfIC0+IGZhbHNlXG4gICAgICAgICAgKCogV2UgY2FuIGltbWVkaWF0ZWx5IHJlY29tcHV0ZSBbcGFyZW50XSBpZiBubyBvdGhlciBub2RlIG5lZWRzIHRvIGJlIHN0YWJsZVxuICAgICAgICAgICAgIGJlZm9yZSBjb21wdXRpbmcgaXQuICBJZiBbcGFyZW50XSBoYXMgYSBzaW5nbGUgY2hpbGQgKGkuZS4gW25vZGVdKSwgdGhlblxuICAgICAgICAgICAgIHRoaXMgYW1vdW50cyB0byBjaGVja2luZyB0aGF0IFtwYXJlbnRdIHdvbid0IGJlIGludmFsaWRhdGVkLCBpLmUuIHRoYXRcbiAgICAgICAgICAgICBbcGFyZW50XSdzIHNjb3BlIGhhcyBhbHJlYWR5IHN0YWJpbGl6ZWQuICopXG4gICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgRnJlZXplIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBNYXAgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgKCogRm9yIHRoZXNlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIFwiX2NoYW5nZVwiIGNoaWxkIGhhcyBhbHJlYWR5IGJlZW5cbiAgICAgICAgICAgICBldmFsdWF0ZWQgKGlmIG5lZWRlZCkuICBJZiBzbywgdGhpcyBhbHNvIGltcGxpZXM6XG5cbiAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAgICBdfSAqKVxuICAgICAgICAgIHwgQmluZF9tYWluIGIgLT4gbm9kZS5oZWlnaHQgPiBiLmxoc19jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBJZl90aGVuX2Vsc2UgaSAtPiBub2RlLmhlaWdodCA+IGkudGVzdF9jaGFuZ2UuaGVpZ2h0XG4gICAgICAgICAgfCBKb2luX21haW4gaiAtPiBub2RlLmhlaWdodCA+IGoubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgaW5cbiAgICAgICAgaWYgY2FuX3JlY29tcHV0ZV9ub3dcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgKyAxO1xuICAgICAgICAgIHJlY29tcHV0ZSBwYXJlbnQpXG4gICAgICAgIGVsc2UgaWYgcGFyZW50LmhlaWdodCA8PSBSZWNvbXB1dGVfaGVhcC5taW5faGVpZ2h0IHQucmVjb21wdXRlX2hlYXBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogSWYgW3BhcmVudC5oZWlnaHRdIGlzIFs8PV0gdGhlIGhlaWdodCBvZiBhbGwgbm9kZXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwXG4gICAgICAgICAgICAgKHBvc3NpYmx5IGJlY2F1c2UgdGhlIHJlY29tcHV0ZSBoZWFwIGlzIGVtcHR5KSwgdGhlbiB3ZSBjYW4gcmVjb21wdXRlXG4gICAgICAgICAgICAgW3BhcmVudF0gaW1tZWRpYXRlbHkgYW5kIHNhdmUgYWRkaW5nIGl0IHRvIGFuZCB0aGVuIHJlbW92aW5nIGl0IGZyb20gdGhlXG4gICAgICAgICAgICAgcmVjb21wdXRlIGhlYXAuICopXG4gICAgICAgICAgdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHRcbiAgICAgICAgICA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIHBhcmVudCkpO1xuICAgICAgICAgIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHBhcmVudCkpKSk7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uZWNlc3NhcnkgciA9XG4gIGxldCAoVCBub2RlKSA9IFJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gciBpblxuICBpZiBkZWJ1ZyAmJiBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJub2RlIHVuZXhwZWN0ZWRseSBkb2VzIG5vdCBuZWVkIHRvIGJlIGNvbXB1dGVkXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICByZWNvbXB1dGUgbm9kZVxuOztcblxubGV0IHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5kaXNhbGxvd2VkX29ic2VydmVycyBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgfCBEaXNhbGxvd2VkIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlKTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBsZXQgKFQgYWxsX29ic2VydmVycykgPSBVb3B0LnZhbHVlX2V4biB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICBpZiBJbnRlcm5hbF9vYnNlcnZlci5zYW1lIGludGVybmFsX29ic2VydmVyIGFsbF9vYnNlcnZlcnNcbiAgICB0aGVuIHQuYWxsX29ic2VydmVycyA8LSBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX2FsbDtcbiAgICBJbnRlcm5hbF9vYnNlcnZlci51bmxpbmsgaW50ZXJuYWxfb2JzZXJ2ZXI7XG4gICAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nXG4gIGRvbmVcbjs7XG5cbmxldCBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyID1cbiAgbGV0IHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlIGludGVybmFsX29ic2VydmVyIGluXG4gIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gKClcbiAgfCBDcmVhdGVkIC0+XG4gICAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0gMTtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBVbmxpbmtlZDtcbiAgICBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbiAgfCBJbl91c2UgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIERpc2FsbG93ZWQ7XG4gICAgU3RhY2sucHVzaCB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKVxuOztcblxubGV0IGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LmZpbmFsaXplZF9vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQuZmluYWxpemVkX29ic2VydmVycyBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgaW50ZXJuYWxfb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzXG4gICAgdGhlbiBkaXNhbGxvd19mdXR1cmVfdXNlIGludGVybmFsX29ic2VydmVyXG4gIGRvbmVcbjs7XG5cbmxldCBvYnNlcnZlcl9maW5hbGl6ZXIgdCA9XG4gIHN0YWdlIChmdW4gb2JzZXJ2ZXIgLT5cbiAgICBsZXQgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAhb2JzZXJ2ZXIgaW5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZmluYWxpemVkX29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcikpXG47O1xuXG5sZXQgY3JlYXRlX29ic2VydmVyID8oc2hvdWxkX2ZpbmFsaXplID0gdHJ1ZSkgKG9ic2VydmluZyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gb2JzZXJ2aW5nLnN0YXRlIGluXG4gIGxldCBpbnRlcm5hbF9vYnNlcnZlciA6IF8gSW50ZXJuYWxfb2JzZXJ2ZXIudCA9XG4gICAgeyBzdGF0ZSA9IENyZWF0ZWRcbiAgICA7IG9ic2VydmluZ1xuICAgIDsgb25fdXBkYXRlX2hhbmRsZXJzID0gW11cbiAgICA7IHByZXZfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBuZXh0X2luX2FsbCA9IFVvcHQubm9uZVxuICAgIDsgcHJldl9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fb2JzZXJ2aW5nID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICBTdGFjay5wdXNoIHQubmV3X29ic2VydmVycyAoVCBpbnRlcm5hbF9vYnNlcnZlcik7XG4gIGxldCBvYnNlcnZlciA9IHJlZiBpbnRlcm5hbF9vYnNlcnZlciBpblxuICBpZiBzaG91bGRfZmluYWxpemVcbiAgdGhlbiBHYy5FeHBlcnQuYWRkX2ZpbmFsaXplcl9leG4gb2JzZXJ2ZXIgKHVuc3RhZ2UgKG9ic2VydmVyX2ZpbmFsaXplciB0KSk7XG4gIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyArIDE7XG4gIG9ic2VydmVyXG47O1xuXG5sZXQgYWRkX25ld19vYnNlcnZlcnMgdCA9XG4gIHdoaWxlIFN0YWNrLmxlbmd0aCB0Lm5ld19vYnNlcnZlcnMgPiAwIGRvXG4gICAgbGV0IHBhY2tlZCA9IFN0YWNrLnBvcF9leG4gdC5uZXdfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IG1vZHVsZSBQYWNrZWQgPSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQgaW5cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFVubGlua2VkIC0+ICgpXG4gICAgfCBDcmVhdGVkIC0+XG4gICAgICBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSA8LSBJbl91c2U7XG4gICAgICBsZXQgb2xkX2FsbF9vYnNlcnZlcnMgPSB0LmFsbF9vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfYWxsX29ic2VydmVyc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsIDwtIG9sZF9hbGxfb2JzZXJ2ZXJzO1xuICAgICAgICBQYWNrZWQuc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfYWxsX29ic2VydmVycykgKFVvcHQuc29tZSBwYWNrZWQpKTtcbiAgICAgIHQuYWxsX29ic2VydmVycyA8LSBVb3B0LnNvbWUgcGFja2VkO1xuICAgICAgbGV0IG9ic2VydmluZyA9IGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyBpblxuICAgICAgbGV0IHdhc19uZWNlc3NhcnkgPSBOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcgaW5cbiAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICA8LSBvYnNlcnZpbmcubnVtX29uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgKyBMaXN0Lmxlbmd0aCBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnM7XG4gICAgICBsZXQgb2xkX29ic2VydmVycyA9IG9ic2VydmluZy5vYnNlcnZlcnMgaW5cbiAgICAgIGlmIFVvcHQuaXNfc29tZSBvbGRfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmcgPC0gb2xkX29ic2VydmVycztcbiAgICAgICAgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9vYnNlcnZlcnMpLnByZXZfaW5fb2JzZXJ2aW5nIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBvYnNlcnZpbmcub2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICAgICgqIEJ5IGFkZGluZyBbaW50ZXJuYWxfb2JzZXJ2ZXJdIHRvIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSwgd2UgbWF5IGhhdmUgYWRkZWRcbiAgICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyB0byBbb2JzZXJ2aW5nXS4gIFdlIG5lZWQgdG8gaGFuZGxlIFtvYnNlcnZpbmddIGFmdGVyIHRoaXNcbiAgICAgICAgIHN0YWJpbGl6YXRpb24gdG8gZ2l2ZSB0aG9zZSBoYW5kbGVycyBhIGNoYW5jZSB0byBydW4uICopXG4gICAgICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBvYnNlcnZpbmc7XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgb2JzZXJ2aW5nKTtcbiAgICAgIGlmIG5vdCB3YXNfbmVjZXNzYXJ5IHRoZW4gYmVjYW1lX25lY2Vzc2FyeSBvYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlX2V4biBvYnNlcnZlciA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT4gT2JzZXJ2ZXIudmFsdWVfZXhuIG9ic2VydmVyXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgUmFpc2VkX2V4bi5yZXJhaXNlX3dpdGhfbWVzc2FnZVxuICAgICAgcmFpc2VkX2V4blxuICAgICAgXCJjYW5ub3Qgc2V0IHZhciAtLSBzdGFiaWxpemF0aW9uIHByZXZpb3VzbHkgcmFpc2VkXCJcbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGlmIFVvcHQuaXNfbm9uZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gICAgdGhlbiBTdGFjay5wdXNoIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIChUIHZhcik7XG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0LnNvbWUgdmFsdWVcbjs7XG5cbmxldCByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdCA9XG4gIHdoaWxlIFRocmVhZF9zYWZlX3F1ZXVlLmxlbmd0aCB0LndlYWtfaGFzaHRibHMgPiAwIGRvXG4gICAgbGV0IChUIHdlYWtfaGFzaHRibCkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LndlYWtfaGFzaHRibHMgaW5cbiAgICBXZWFrX2hhc2h0YmwucmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHdlYWtfaGFzaHRibFxuICBkb25lXG47O1xuXG5sZXQgc3RhYmlsaXplX3N0YXJ0IHQgPVxuICB0LnN0YXR1cyA8LSBTdGFiaWxpemluZztcbiAgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0O1xuICAoKiBKdXN0IGxpa2UgZm9yIGJpbmRzLCB3ZSBhZGQgbmV3IG9ic2VydmVycyBiZWZvcmUgcmVtb3ZpbmcgZGlzYWxsb3dlZCBvYnNlcnZlcnMgdG9cbiAgICAgcG90ZW50aWFsbHkgYXZvaWQgc3dpdGNoaW5nIHRoZSBvYnNlcnZhYmlsaXR5IG9mIHNvbWUgbm9kZXMgYmFjayBhbmQgZm9ydGguICopXG4gIGFkZF9uZXdfb2JzZXJ2ZXJzIHQ7XG4gIHVubGlua19kaXNhbGxvd2VkX29ic2VydmVycyB0O1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0XG47O1xuXG5sZXQgc3RhYmlsaXplX2VuZCB0ID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gTm9uZTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgKCogV2UgaW5jcmVtZW50IFt0LnN0YWJpbGl6YXRpb25fbnVtXSBiZWZvcmUgaGFuZGxpbmcgdmFyaWFibGVzIHNldCBkdXJpbmdcbiAgICAgc3RhYmlsaXphdGlvbiwgc28gdGhhdCB0aGV5IGFyZSB0cmVhdGVkIGFzIHNldCBkdXJpbmcgdGhlIG5ldyBzdGFiaWxpemF0aW9uIGN5Y2xlLlxuICAgICBBbHNvLCB3ZSBpbmNyZW1lbnQgYmVmb3JlIHJ1bm5pbmcgb24tdXBkYXRlIGhhbmRsZXJzLCB0byBhdm9pZCBydW5uaW5nIG9uIHVwZGF0ZVxuICAgICBoYW5kbGVycyBjcmVhdGVkIGR1cmluZyBvbiB1cGRhdGUgaGFuZGxlcnMuICopXG4gIHQuc3RhYmlsaXphdGlvbl9udW0gPC0gU3RhYmlsaXphdGlvbl9udW0uYWRkMSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCB2YXIpID0gU3RhY2sucG9wX2V4biB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIGxldCB2YWx1ZSA9IFVvcHQudmFsdWVfZXhuIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQubm9uZTtcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyB2YXIgdmFsdWVcbiAgZG9uZTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uKSBkb1xuICAgIGxldCAoVCBub2RlKSA9IFN0YWNrLnBvcF9leG4gdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gZmFsc2U7XG4gICAgbGV0IG9sZF92YWx1ZSA9IG5vZGUub2xkX3ZhbHVlX29wdCBpblxuICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgbGV0IG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50ID1cbiAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBub2RlKVxuICAgICAgdGhlbiBJbnZhbGlkYXRlZFxuICAgICAgZWxzZSBpZiBub3QgKE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUpXG4gICAgICB0aGVuIFVubmVjZXNzYXJ5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld192YWx1ZSA9IFVvcHQudmFsdWVfZXhuIG5vZGUudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSBvbGRfdmFsdWVcbiAgICAgICAgdGhlbiBOZWNlc3NhcnkgbmV3X3ZhbHVlXG4gICAgICAgIGVsc2UgQ2hhbmdlZCAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpKVxuICAgIGluXG4gICAgU3RhY2sucHVzaCB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSlcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnM7XG4gIGxldCBub3cgPSB0LnN0YWJpbGl6YXRpb25fbnVtIGluXG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzKSBkb1xuICAgIGxldCAoVCAobm9kZSwgbm9kZV91cGRhdGUpKSA9IFN0YWNrLnBvcF9leG4gdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgTm9kZS5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIG5vZGUgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICB0LnN0YXR1cyA8LSBOb3Rfc3RhYmlsaXppbmc7XG4gIHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0XG47O1xuXG5sZXQgcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb24gdCBleG4gPVxuICBsZXQgcmFpc2VkID0gUmFpc2VkX2V4bi5jcmVhdGUgZXhuIGluXG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWQ7XG4gIFJhaXNlZF9leG4ucmVyYWlzZSByYWlzZWRcbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFVubmVjZXNzYXJ5XCJcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIFslc2V4cF9vZjogXyB0XSlcbiAgICA7O1xuXG4gICAgbGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgdCA9IFN0YXRlLmRpc2FsbG93X2Z1dHVyZV91c2UgIXRcbiAgICBsZXQgdmFsdWUgPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZVxuICAgIGxldCB2YWx1ZV9leG4gPSBTdGF0ZS5vYnNlcnZlcl92YWx1ZV9leG5cblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hICh0IDogXyB0KSA9XG4gICAgICBtYXRjaCAhdC5zdGF0ZSB3aXRoXG4gICAgICB8IENyZWF0ZWQgLT4gWyVtZXNzYWdlIFwiPHVuc3RhYmlsaXplZD5cIl1cbiAgICAgIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+IFslbWVzc2FnZSBcIjxkaXNhbGxvd2VkPlwiXVxuICAgICAgfCBJbl91c2UgLT5cbiAgICAgICAgbGV0IHVvcHQgPSAhdC5vYnNlcnZpbmcudmFsdWVfb3B0IGluXG4gICAgICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgICAgIHRoZW4gWyVtZXNzYWdlIFwiPGludmFsaWQ+XCJdXG4gICAgICAgIGVsc2UgWyVzZXhwIChVb3B0LnVuc2FmZV92YWx1ZSB1b3B0IDogYSldXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEJlZm9yZV9vcl9hZnRlciA9IEJlZm9yZV9vcl9hZnRlclxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU3RhdGUuQ2xvY2tcblxuICAgIGxldCBzdGF0ZSA9IGluY3Jfc3RhdGVcblxuICAgIGxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAgICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IEFsYXJtX3ByZWNpc2lvbi5hYm91dF9vbmVfbWlsbGlzZWNvbmQgaW5cbiAgICAgIGxldCBsZXZlbF9iaXRzID0gWyAxNDsgMTM7IDUgXSBpblxuICAgICAgVGltaW5nX3doZWVsLkNvbmZpZy5jcmVhdGVcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvblxuICAgICAgICB+bGV2ZWxfYml0czpcbiAgICAgICAgICAoVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzIH5leHRlbmRfdG9fbWF4X251bV9iaXRzOnRydWUpXG4gICAgICAgICgpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgc3RhdGUgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnKSB+c3RhcnQgKCkgPVxuICAgICAgKCogTWFrZSBzdXJlIFtzdGFydF0gaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gIE90aGVyd2lzZSwgaWYgeW91XG4gICAgICAgICBmZWVkIFtDbG9jay5ub3cgKCldIHRvIGEgdGltZSBmdW5jdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgZG93biB0byBhIHRpbWUgaW5cbiAgICAgICAgIHRoZSBwYXN0LCBjYXVzaW5nIGVycm9ycy4gKilcbiAgICAgIGxldCBzdGFydCA9XG4gICAgICAgIFRpbWVfbnMub2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG4gICAgICAgICAgKFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHN0YXJ0KVxuICAgICAgaW5cbiAgICAgIFN0YXRlLmNyZWF0ZV9jbG9jayBzdGF0ZSB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnRcbiAgICA7O1xuXG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LnRpbWluZ193aGVlbFxuICAgIGxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoID0gU3RhdGUudGltaW5nX3doZWVsX2xlbmd0aFxuICAgIGxldCBub3cgPSBTdGF0ZS5ub3dcbiAgICBsZXQgd2F0Y2hfbm93IHQgPSB0Lm5vdy53YXRjaFxuICAgIGxldCBhdCA9IFN0YXRlLmF0XG4gICAgbGV0IGFmdGVyID0gU3RhdGUuYWZ0ZXJcbiAgICBsZXQgYXRfaW50ZXJ2YWxzID0gU3RhdGUuYXRfaW50ZXJ2YWxzXG4gICAgbGV0IGFkdmFuY2VfY2xvY2sgPSBTdGF0ZS5hZHZhbmNlX2Nsb2NrXG4gICAgbGV0IGFkdmFuY2VfY2xvY2tfYnkgdCBzcGFuID0gYWR2YW5jZV9jbG9jayB0IH50b186KFRpbWVfbnMuYWRkIChub3cgdCkgc3BhbilcbiAgICBsZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiA9IFN0YXRlLmluY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb25cblxuICAgIGxldCBzdGVwX2Z1bmN0aW9uIHQgfmluaXQgc3RlcHMgPVxuICAgICAgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuICAgICAgICB0XG4gICAgICAgIChjb25zdCAoaW5jcl9zdGF0ZSB0KSAoU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuIH5pbml0IH5zdGVwcykpXG4gICAgOztcblxuICAgIGxldCBzbmFwc2hvdCA9IFN0YXRlLnNuYXBzaG90XG4gIGVuZFxuXG4gIGxldCBmcmVlemUgPyh3aGVuXyA9IGZ1biBfIC0+IHRydWUpIHQgPSBTdGF0ZS5mcmVlemUgdCB+b25seV9mcmVlemVfd2hlbjp3aGVuX1xuICBsZXQgZGVwZW5kX29uIHQgfmRlcGVuZF9vbiA9IFN0YXRlLmRlcGVuZF9vbiB0IH5kZXBlbmRfb25cbiAgbGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSA9IFN0YXRlLm5lY2Vzc2FyeV9pZl9hbGl2ZVxuXG4gIG1vZHVsZSBVcGRhdGUgPSBPbl91cGRhdGVfaGFuZGxlci5Ob2RlX3VwZGF0ZVxuXG4gIGxldCBvbl91cGRhdGUgPSBTdGF0ZS5ub2RlX29uX3VwZGF0ZVxuICBsZXQgc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuc3RhYmlsaXplIHN0YXRlXG4gIGxldCBhbV9zdGFiaWxpemluZyBzdGF0ZSA9IFN0YXRlLmFtX3N0YWJpbGl6aW5nIHN0YXRlXG4gIGxldCBzYXZlX2RvdCA9IFN0YXRlLnNhdmVfZG90XG4gIGxldCBzYXZlX2RvdF90b19maWxlID0gU3RhdGUuc2F2ZV9kb3RfdG9fZmlsZVxuXG4gIG1vZHVsZSBOb2RlX3ZhbHVlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgSW52YWxpZFxuICAgICAgfCBOZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgICB8IFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIG9mICdhIG9wdGlvblxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBub2RlX3ZhbHVlIHQgOiBfIE5vZGVfdmFsdWUudCA9XG4gICAgaWYgbm90IChpc192YWxpZCB0KVxuICAgIHRoZW4gSW52YWxpZFxuICAgIGVsc2UgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIE5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gICAgZWxzZSBVbm5lY2Vzc2FyeV9tYXliZV9zdGFsZSAoVW9wdC50b19vcHRpb24gdC52YWx1ZV9vcHQpXG4gIDs7XG5cbiAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8gc2hvdyBqdXN0IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgIHJlcHJlc2VudGF0aW9uLiAgV2Ugb25seSBzaG93IHRoZSB2YWx1ZSBpZiBpdCBpcyBuZWNlc3NhcnkgYW5kIHZhbGlkLiAqKVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBcIjxpbnZhbGlkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICB0aGVuIFwiPHVubmVjZXNzYXJ5PlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgaWYgVW9wdC5pc19ub25lIHQudmFsdWVfb3B0XG4gICAgdGhlbiBcIjx1bmNvbXB1dGVkPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGVsc2UgdW5zYWZlX3ZhbHVlIHQgfD4gWyVzZXhwX29mOiBhXVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBFeHBlcnQxXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCB0MSB0MiA9IG1hcDIgdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG5cbiAgICAgIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdFxuICAgICAgICBsZXQgd2F0Y2ggPSBWYXIud2F0Y2hcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgPSBTdGF0ZS53ZWFrX21lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBGbi5pZCBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jb25maWcgKEluY3JlbWVudGFsX2NvbmZpZyA6IEluY3JlbWVudGFsX2NvbmZpZykgKCkgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgKG1vZHVsZSBJbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQ6MTI4XG4gIGVuZFxuXG4gIG1vZHVsZSBDbG9jayA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2xvY2tcblxuICAgIGxldCBjcmVhdGUgP3RpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0ICgpID1cbiAgICAgIGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyBTdGF0ZS50IH5zdGFydCAoKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVydFxuXG4gICAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICBsZXQgY3JlYXRlID9vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID0gY3JlYXRlIFN0YXRlLnQgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGZcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGVwX3Jlc3VsdCA9IFN0YXRlLlN0ZXBfcmVzdWx0XG5cbiAgICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplICgpID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIFN0YXRlLnRcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIExldF9zeW50YXhcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNjb3BlXG5cbiAgICBsZXQgY3VycmVudCAoKSA9IGN1cnJlbnQgU3RhdGUudCAoKVxuICAgIGxldCB3aXRoaW4gdCB+ZiA9IHdpdGhpbiBTdGF0ZS50IHQgfmZcbiAgZW5kXG5cbiAgbW9kdWxlIFZhciA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyXG5cbiAgICBsZXQgY3JlYXRlID91c2VfY3VycmVudF9zY29wZSB2YWx1ZSA9IGNyZWF0ZSA/dXNlX2N1cnJlbnRfc2NvcGUgU3RhdGUudCB2YWx1ZVxuICBlbmRcblxuICBsZXQgY29uc3QgYSA9IGNvbnN0IFN0YXRlLnQgYVxuICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gU3RhdGUudCBhXG4gIGxldCBhbGwgdHMgPSBhbGwgU3RhdGUudCB0c1xuICBsZXQgZXhpc3RzIHRzID0gZXhpc3RzIFN0YXRlLnQgdHNcbiAgbGV0IGZvcl9hbGwgdHMgPSBmb3JfYWxsIFN0YXRlLnQgdHNcbiAgbGV0IGxhenlfZnJvbV9mdW4gc3RhdGUgZiA9IFN0YXRlLmxhenlfZnJvbV9mdW4gc3RhdGUgfmZcblxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgaGFzaGFibGUgZiA9IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIGxldCBhcnJheV9mb2xkIHRzIH5pbml0IH5mID0gYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mXG4gIGxldCByZWR1Y2VfYmFsYW5jZWQgdHMgfmYgfnJlZHVjZSA9IHJlZHVjZV9iYWxhbmNlZCBTdGF0ZS50IHRzIH5mIH5yZWR1Y2VcblxuICBsZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfmluaXQgfmYgfnVwZGF0ZSA9XG4gICAgdW5vcmRlcmVkX2FycmF5X2ZvbGQgU3RhdGUudCB0cyB+aW5pdCB+ZiB+dXBkYXRlID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDs7XG5cbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgU3RhdGUudCB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlXG4gIDs7XG5cbiAgbGV0IHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+emVybyB+YWRkIH5zdWIgPVxuICAgIHN1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgb3B0X3N1bSA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH56ZXJvIH5hZGQgfnN1YlxuICA7O1xuXG4gIGxldCBzdW1faW50IHRzID0gc3VtX2ludCBTdGF0ZS50IHRzXG4gIGxldCBzdW1fZmxvYXQgdHMgPSBzdW1fZmxvYXQgU3RhdGUudCB0c1xuICBsZXQgc3RhYmlsaXplICgpID0gc3RhYmlsaXplIFN0YXRlLnRcbiAgbGV0IGFtX3N0YWJpbGl6aW5nICgpID0gYW1fc3RhYmlsaXppbmcgU3RhdGUudFxuICBsZXQgc2F2ZV9kb3Qgb3V0ID0gc2F2ZV9kb3QgU3RhdGUudCBvdXRcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSA9IE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOnNhdmVfZG90XG4gIGxldCBsYXp5X2Zyb21fZnVuIGYgPSBsYXp5X2Zyb21fZnVuIFN0YXRlLnQgZlxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIHByb2plY3Rfa2V5IGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBwcm9qZWN0X2tleSBmXG4gIDs7XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuID9pbml0aWFsX3NpemUgU3RhdGUudCBoYXNoYWJsZSBmXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKCkgPSBNYWtlX3dpdGhfY29uZmlnIChDb25maWcuRGVmYXVsdCAoKSkgKClcbmluY2x1ZGUgR2VuZXJpY1xuXG5tb2R1bGUgQWRkX3dpdG5lc3MwIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICd3IHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAndyB0ID0gTS50XG5cbiAgbGV0IGludmFyaWFudCBfIHQgPSBNLmludmFyaWFudCB0XG4gIGxldCBzZXhwX29mX3QgXyB0ID0gTS5zZXhwX29mX3QgdFxuZW5kXG5cbm1vZHVsZSBBZGRfd2l0bmVzczEgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kKSA6IHNpZ1xuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICd3KSB0ID0gJ2EgTS50XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPSBNLmludmFyaWFudCBpbnZhcmlhbnRfYSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IE0uc2V4cF9vZl90IHNleHBfb2ZfYSB0XG5lbmRcblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIGluY2x1ZGUgQ2xvY2tcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKENsb2NrKVxuZW5kXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlcnRcblxuICBtb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKHN0cnVjdFxuICAgICAgICBpbmNsdWRlIERlcGVuZGVuY3lcblxuICAgICAgICBsZXQgaW52YXJpYW50IF8gXyA9ICgpXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBOb2RlID0gc3RydWN0XG4gICAgaW5jbHVkZSBOb2RlXG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTm9kZVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICBsZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlID0gU3RhdGUuZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHN0YXRlXG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBOb2RlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChOb2RlKVxuZW5kXG5cbnR5cGUgKCdhLCAndykgdCA9ICgnYSwgJ3cpIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxudHlwZSAoJ2EsICd3KSBpbmNyZW1lbnRhbCA9ICgnYSwgJ3cpIHRcblxubGV0IGludmFyaWFudCA9IE5vZGUuaW52YXJpYW50XG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChPYnNlcnZlcilcbmVuZFxuXG5tb2R1bGUgU2NvcGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTY29wZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU2NvcGUpXG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhdGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczAgKFN0YXRlKVxuZW5kXG5cbm1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKFZhcilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzcyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBpbmNyZW1lbnRhbFxuICAgIHdpdGggdHlwZSBCZWZvcmVfb3JfYWZ0ZXIudCA9IEJlZm9yZV9vcl9hZnRlci50XG4gICAgd2l0aCB0eXBlIENsb2NrLnQgPSBzdGF0ZV93aXRuZXNzIENsb2NrLnRcbiAgICB3aXRoIHR5cGUgJ2EgQ3V0b2ZmLnQgPSAnYSBDdXRvZmYudFxuICAgIHdpdGggdHlwZSAnYSBFeHBlcnQuRGVwZW5kZW5jeS50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBFeHBlcnQuRGVwZW5kZW5jeS50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5Ob2RlLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5Ob2RlLnRcbiAgICB3aXRoIHR5cGUgRXhwZXJ0LlN0ZXBfcmVzdWx0LnQgPSBFeHBlcnQuU3RlcF9yZXN1bHQudFxuICAgIHdpdGggdHlwZSAnYSBPYnNlcnZlci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBPYnNlcnZlci50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLlVwZGF0ZS50ID0gJ2EgT2JzZXJ2ZXIuVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgUGFja2VkLnQgPSBQYWNrZWQudFxuICAgIHdpdGggdHlwZSBTY29wZS50ID0gc3RhdGVfd2l0bmVzcyBTY29wZS50XG4gICAgd2l0aCB0eXBlIFN0YXRlLnQgPSBzdGF0ZV93aXRuZXNzIFN0YXRlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUuU3RhdHMudCA9IFN0YXRlLlN0YXRzLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlLnQgPVxuICAgICAgICAgICAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudFxuICAgIHdpdGggdHlwZSAnYSBVcGRhdGUudCA9ICdhIFVwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFZhci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBWYXIudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBkZWJ1ZyA9IGRlYnVnXG5lbmRcbiIsIlxub3BlbiBCYXNlXG5cbm1vZHVsZSBDb21tdXRhdGl2ZV9ncm91cCA9IHN0cnVjdFxuICAoKiogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuXG4gICAgICArIGFzc29jaWF0aXZpdHk6IFsoYSArIGIpICsgYyA9IGEgKyAoYiArIGMpXVxuICAgICAgKyBpZGVudGl0eTogW3plcm8gKyBhID0gYSArIHplcm8gPSBhXVxuICAgICAgKyBpbnZlcnNlczogZ2l2ZW4gYW55IFthXSB0aGVyZSBleGlzdHMgYSAodW5pcXVlKSBlbHQgW2JdIHN1Y2ggdGhhdCBbYSArIGIgPSBiICsgYSA9XG4gICAgICB6ZXJvXVxuICAgICAgKyBjb21tdXRhdGl2aXR5OiBbYSArIGIgPSBiICsgYV1cbiAgKilcblxuICBtb2R1bGUgdHlwZSBXaXRob3V0X3NleHAgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoKykgIDogdCAtPiB0IC0+IHRcbiAgICB2YWwgKC0pICA6IHQgLT4gdCAtPiB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBpbmNsdWRlIFdpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZWN0b3Jfc3BhY2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuICAgIGluY2x1ZGUgQ29tbXV0YXRpdmVfZ3JvdXAuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgdmFsIHNjYWxlIDogdCAtPiBmbG9hdCAtPiB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBzdHJ1Y3RcbiAgKCoqIEFsbCBbSW5jcl9tYXBdIGZ1bmN0aW9ucyB0YWtlIGFuIG9wdGlvbmFsIFtpbnN0cnVtZW50YXRpb25dIHBhcmFtZXRlciB0aGF0IGhhcyB0eXBlXG4gICAgICBbSW5zdHJ1bWVudGF0aW9uLnRdLiAgQSB2YWx1ZSBvZiB0aGlzIHR5cGUgaXMgYSByZWNvcmQgY29udGFpbmluZyBhIGZ1bmN0aW9uIHdoaWNoXG4gICAgICBpcyBwb2x5bW9ycGhpYyBvdmVyIGEgdW5pdmVyc2FsbHktcXVhbnRpZmllZCB0eXBlIFsnYV0uIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkXG4gICAgICBhIFt1bml0IC0+ICdhXSBmdW5jdGlvbiwgd2hpY2ggbXVzdCBiZSBpbW1lZGlhdGVseSBleGVjdXRlZCwgYW5kIHRoZSByZXN1bHQgb2ZcbiAgICAgIHdoaWNoIG11c3QgYmUgcmV0dXJuZWQuXG5cbiAgICAgIFRoZSBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGluc3RydW1lbnRvciB3aWxsIGJlIGRvaW5nIHRoZSBidWxrIG9mIHRoZSB3b3JrIGZvciB0aGVcbiAgICAgIFtJbmNyX21hcF0gZnVuY3Rpb24gaW4gcXVlc3Rpb24gKHVzdWFsbHkgYSBbTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZdKS5cblxuICAgICAgWW91IG1heSB3YW50IHRvIHVzZSB0aGUgSW5zdHJ1bWVudGF0aW9uIEFQSSB0byBhc3Npc3QgaW4gcGVyZm9ybWFuY2UgcHJvZmlsaW5nIGxpa2VcbiAgICAgIHNvOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgcHJvZmlsZSBuYW1lID1cbiAgICAgICAgICB7IEluY3JfbWFwLkluc3RydW1lbnRhdGlvbi5mID0gZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9IFRpbWUubm93ICgpIGluXG4gICAgICAgICAgICAgIGxldCByID0gZiAoKSBpblxuICAgICAgICAgICAgICBsZXQgYWZ0ZXIgPSBUaW1lLm5vdyAoKSBpblxuICAgICAgICAgICAgICBsZXQgZGVsdGEgPSBUaW1lLnN1YiBhZnRlciBiZWZvcmUgaW5cbiAgICAgICAgICAgICAgcHJpbnRmIFwiJXMgdG9vayAlc1wiIG5hbWUgKFRpbWUuU3Bhbi50b19zdHJpbmdfaHVtIGRlbHRhKTtcbiAgICAgICAgICAgICAgclxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBJbmNyX21hcC5tYXAgfmluc3RydW1lbnRhdGlvbjoocHJvZmlsZSBcImZvb1wiKSB+ZjptYXBfZm9vXG4gICAgICBdfSAqKVxuXG4gIHR5cGUgdCA9IHsgZiA6ICdhLiAodW5pdCAtPiAnYSkgLT4gJ2EgfSBbQEB1bmJveGVkXVxuZW5kXG5cbigqKiBbU19nZW5dIGlzIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUgcmV0dXJuZWQgYnkgW0luY3JfbWFwLk1ha2VdLiAgSXQgaXMgYSBzcGVjaWFsaXphdGlvblxuICAgIG9mIHRoZSBpbnRlcmZhY2Ugb2YgW0luY3JfbWFwXSwgd2l0aDpcblxuICAgIC0gdGhlIFsnd10gc3RhdGVfd2l0bmVzcyB0eXBlIHBhcmFtZXRlciByZW1vdmVkXG4gICAgLSB0aGUgW0luY3JlbWVudGFsLlN0YXRlLnRdIGFyZ3VtZW50IHJlbW92ZWRcblxuICAgIFRoZSBjb21tZW50cyBmb3IgY29tcG9uZW50cyBvZiBbU19nZW5dIGFyZSBpbiBbbW9kdWxlIHR5cGUgSW5jcl9tYXBdIGJlbG93LiAqKVxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgbW9kdWxlIEluY3IgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIG1vZHVsZSBDdXRvZmYgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgdmFsIG9mX3NldFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICdjbXApIFNldC50IEluY3IudFxuICAgIC0+ICgnaywgdW5pdCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZpbHRlcl9tYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgSW5jci50IC0+ICd2MiBvcHRpb24gSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YxIEluY3IudCAtPiAndjIgSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCkgSW5jci50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAoJ3YyLCAndjMpIEVpdGhlci50IEluY3IudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50KSBJbmNyLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2V4dHJhX2VxdWFsOignZXh0cmEgLT4gJ2V4dHJhIC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP3NwZWNpYWxpemVkX2luaXRpYWw6KGluaXQ6J2FjYyAtPiAoJ2ssICd2LCAnZSkgTWFwLnQgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgnaywgJ3YsICdlKSBNYXAudCBJbmNyLnRcbiAgICAtPiAnZXh0cmEgSW5jci50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiBleHRyYV9jaGFuZ2VkOlxuICAgICAgICAgKG9sZF9leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBuZXdfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gaW5wdXQ6KCdrLCAndiwgJ2UpIE1hcC50XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGN1dG9mZjondiBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAnazIpXG4gICAgLT4gKCdrMiwgaW50LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBpX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21pblxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICdyIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXhfdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcGlfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCdyICogJ3IpIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciAqICdyKSBvcHRpb24gSW5jci50XG5cbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiAqICd2KSBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWVyZ2VfYm90aF9zb21lXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ID9vdXRfZXF1YWw6KCd2MyAtPiAndjMgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiAndjEgLT4gJ3YyIC0+ICd2MylcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSAqICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW56aXBfbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/bGVmdF9yZXN1bHRfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IEluY3IudCAtPiAndjEgSW5jci50ICogJ3YyIEluY3IudClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtZXJnZSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjooJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyLnQgLT4gJ3YzIG9wdGlvbiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmbGF0dGVuIDogKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2MpIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ2MpIFNldC50IEluY3IudFxuXG4gIHZhbCByYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ3YsICdjbXApIEJhc2UuTWFwLnQgSW5jci50XG4gICAgLT4gJ2sgSW5jci50XG4gICAgLT4gaW50IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrIE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiAnayBNYXliZV9ib3VuZC5Bc191cHBlcl9ib3VuZC50KSBvcHRpb24gSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHN1YnJhbmdlX2J5X3JhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCByZWtleVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OigndiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiA/dXBkYXRlOlxuICAgICAgICAgKG91dGVyX2tleTonb3V0ZXJfa2V5XG4gICAgICAgICAgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXlcbiAgICAgICAgICAtPiBvbGRfZGF0YTondlxuICAgICAgICAgIC0+IG5ld19kYXRhOid2XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMiwgJ2syX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrMiwgKCdrMSwgJ3YsICdrMV9jbXApIE1hcC50LCAnazJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY29sbGFwc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdpbm5lcl9rZXksICdpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoICdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5XG4gICAgICAgLCAndlxuICAgICAgICwgKCdvdXRlcl9jbXAsICdpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3MgKVxuICAgICAgICAgTWFwLnRcbiAgICAgICAgIEluY3IudFxuXG4gIHZhbCBjb2xsYXBzZV9ieVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnY29tYmluZWRfa2V5LCAndiwgJ2NvbWJpbmVkX2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGV4cGFuZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgY291bnRpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gaW50IEluY3IudFxuXG4gIHZhbCBmb3JfYWxsaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGZvcl9hbGxcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBib29sIEluY3IudFxuXG4gIHZhbCBleGlzdHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKF8sICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIHN1bVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IChtb2R1bGUgQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSAndSlcbiAgICAtPiBmOigndiAtPiAndSlcbiAgICAtPiAndSBJbmNyLnRcblxuICBtb2R1bGUgTG9va3VwIDogc2lnXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgdmFsIGZpbmQgOiAoJ2ssICd2LCBfKSB0IC0+ICdrIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICAgIG1vZHVsZSBNIChLIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgZW5kKSA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgSW5jcl9tYXAgPSBzaWdcbiAgKCoqIEZ1bmN0aW9ucyBmb3IgdXNpbmcgbWFwcyBlZmZpY2llbnRseSB3aXRoaW4gSW5jcmVtZW50YWwuICBUaGUgZ29hbCBvZiB0aGUgYWxnb3JpdGhtc1xuICAgICAgaGVyZSBpcyB0byBkbyB3b3JrIG9uIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXB1dGF0aW9uIHByb3BvcnRpb25hbCB0byB0aGUgYW1vdW50IG9mXG4gICAgICB3b3JrIGRvbmUgb24gdGhlIGlucHV0LiAgaS5lLiwgW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGlucHV0IG1hcCBmb3Igc29tZVxuICAgICAgY29tcHV0YXRpb24gd2lsbCByZXN1bHQgaW4gW2tdIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG91dHB1dCBtYXAuICBUaGUgY2hhbmdlcyB0byB0aGVcbiAgICAgIGlucHV0IG1hcCBhcmUgdHlwaWNhbGx5IGNvbXB1dGVkIHVzaW5nIFtNYXAuc3ltbWV0cmljX2RpZmZdLlxuXG4gICAgICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgdGhlIG5vbi1pbmNyZW1lbnRhbCBzZW1hbnRpY3Mgb2YgdGhlc2UgZnVuY3Rpb25zIChpLmUuLixcbiAgICAgIGlnbm9yaW5nIHBlcmZvcm1hbmNlKSBpcyB0aGUgc2FtZSBhcyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBpbiBDb3JlJ3MgW01hcF1cbiAgICAgIG1vZHVsZS4gICopXG5cbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIHZhbCBvZl9zZXRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ2NtcCkgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgdW5pdCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YxIC0+ICd2MilcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooKCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50IC0+ICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndjEsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCgndjIsICd2MykgRWl0aGVyLnQsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bm9yZGVyZWRfZm9sZCBpIH5pbml0IH5hZGQgfnJlbW92ZV0gY29uc3RydWN0cyBhIG1vcmUgaW5jcmVtZW50YWwgdmVyc2lvbiBvZjpcblxuICAgICAge1tcbiAgICAgICAgbGV0JW1hcCBtID0gaSBpblxuICAgICAgICBNYXAuZm9sZCBtIH5pbml0IH5mOmFkZFxuICAgICAgXX1cblxuICAgICAgYXNzdW1pbmcgdGhhdCBbcmVtb3ZlXSBpcyB0aGUgaW52ZXJzZSBvZiBbYWRkXSwgYW5kIHRoYXQgdGhlIG9wZXJhdGlvbnMgZm9yXG4gICAgICBkaWZmZXJlbnQga2V5cyBjYW4gYmUgcGVyZm9ybWVkIGluIGFueSBvcmRlci4gTm90ZSB0aGF0IFtkYXRhX2VxdWFsXSBkZWZhdWx0c1xuICAgICAgdG8gW3BoeXNfZXF1YWxdLCBidXQgYSBtb3JlIHByZWNpc2UgZXF1YWxpdHkgY2FuIGJlIHByb3ZpZGVkIGluc3RlYWQuXG5cbiAgICAgIFdoZW4gdGhlIGRhdGEgZm9yIGEga2V5IHVwZGF0ZXMsIGJ5IGRlZmF1bHQgW3JlbW92ZV0gaXMgY2FsbGVkIG9uIHRoZSBvbGQgZGF0YVxuICAgICAgYW5kIHRoZW4gW2FkZF0gaXMgY2FsbGVkIG9uIHRoZSBuZXcgZGF0YS5cbiAgICAgIFt1cGRhdGVdIHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHNpbmdsZSBmdW5jdGlvbiB0byBjYWxsIGVhY2ggdGltZSBhIGtleSdzIGRhdGFcbiAgICAgIHVwZGF0ZXMsIGFuZCBjYW4gYmUgdXNlZCB0byBpbXByb3ZlIGVmZmljaWVuY3kuXG5cbiAgICAgIEZvciB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiwgYnkgZGVmYXVsdCBbYWRkXSBpcyBjYWxsZWQgb24gYWxsIHRoZSBlbGVtZW50cyBpbiB0aGVcbiAgICAgIG1hcC4gQXMgdGhpcyBjYW4gYmUgaW5lZmZpY2llbnQsIFtzcGVjaWFsaXplZF9pbml0aWFsXSBjYW4gYmUgcHJvdmlkZWQgdG8gcGVyZm9ybVxuICAgICAgdGhlIGNvbXB1dGF0aW9uIGluIGEgbW9yZSBlZmZlY3RpdmUgd2F5LlxuXG4gICAgICBJZiBbcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eV0gaXMgdHJ1ZSwgdGhlbiBpZiB0aGUgaW5wdXQgbWFwIHRyYW5zaXRpb25zIGZyb21cbiAgICAgIGJlaW5nIGZ1bGwgdG8gZW1wdHksIHRoZW4gaW5zdGVhZCBvZiBjYWxsaW5nIFtyZW1vdmVdIG9uIGV2ZXJ5IGt2LXBhaXIsIGl0IHdpbGxcbiAgICAgIGluc3RlYWQganVzdCBzZXQgdGhlIG91dHB1dCB0byB3aGF0ZXZlciB5b3UndmUgcGFzc2VkIGFzIFtpbml0XS5cbiAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mIFtyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XSBpcyBbZmFsc2VdLCBzbyB0aGlzIG9wdGltaXphdGlvblxuICAgICAgZG9lcyBub3QgYXBwbHkgYXV0b21hdGljYWxseS5cblxuICAgICAgW2ZpbmFsaXplXSBkZWZhdWx0cyB0byBbRm4uaWRdIGlzIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGFjY3VtdWxhdG9yIHZhbHVlXG4gICAgICBpcyBzdG9yZWQgYW5kIHJldHVybmVkIGR1cmluZyBzdGFiaWxpemF0aW9uLiAgWW91IGNhbiB1c2UgaXQgdG8gZS5nLiBwcm9jZXNzIHRoZVxuICAgICAgZm9sZCBvcGVyYXRpb25zIGluIGEgZGlmZmVyZW50IG9yZGVyLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3VwZGF0ZTooa2V5OidrIC0+IG9sZF9kYXRhOid2IC0+IG5ld19kYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IC0+ICdhY2MpXG4gICAgLT4gP2ZpbmFsaXplOignYWNjIC0+ICdhY2MpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3Vub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFdIGlzIHNpbWlsYXIgdG8gW3Vub3JkZXJlZF9mb2xkXSwgYnV0IGl0IGFsc29cbiAgICAgIGRlcGVuZHMgb24gYW5vdGhlciBhcmJpdHJhcnkgaW5jcmVtZW50YWwgdmFsdWUgd2hpY2ggY2FuIGJlIGZhY3RvcmVkIGludG9cbiAgICAgIHRoZSBmb2xkaW5nIGNvbXB1dGF0aW9uLiAqKVxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/ZXh0cmFfZXF1YWw6KCdleHRyYSAtPiAnZXh0cmEgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdlKSBNYXAudCAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCgnaywgJ3YsICdlKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2V4dHJhLCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gZXh0cmFfY2hhbmdlZDpcbiAgICAgICAgIChvbGRfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gbmV3X2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IGlucHV0OignaywgJ3YsICdlKSBNYXAudFxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICgnYWNjLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbY3V0b2ZmXSBhcHBsaWVzIGEgY3V0b2ZmIHRvIHZhbHVlcyBpbiB0aGUgbWFwIGFzIHRoZXkgcGFzcyB0aHJvdWdoIHRoZVxuICAgICAgZnVuY3Rpb24uICBJdCBoYXMgdGhlIHNhbWUgYmVoYXZpb3IgYXMgY2FsbGluZyBbSW5jcl9tYXAubWFwJ10gd2l0aCBhblxuICAgICAgW0luY3Iuc2V0X2N1dG9mZl0gaW5zaWRlLCBidXQgd2l0aCBjb25zaWRlcmFibHkgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlLiAqKVxuICB2YWwgY3V0b2ZmXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIEdpdmVuIGFuIGlucHV0IG1hcCBhbmQgYSBmdW5jdGlvbiBtYXBwaW5nIGEga3YtcGFpciB0byBhIG5ld1xuICAgICAgdmFsdWUsIFttYXBpX2NvdW50XSB3aWxsIGNvbXB1dGUgYSBtdWx0aS1zZXQga2V5ZWQgb24gdGhhdFxuICAgICAgbmV3IHZhbHVlLlxuXG4gICAgICBBbnkgdmFsdWUgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBhIGNvdW50IG9mIFwiMFwiIGlzIGluc3RlYWRcbiAgICAgIHJlbW92ZWQgZnJvbSB0aGUgbWFwLlxuXG4gICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgW2ZdIGlzIHF1aXRlIGZhc3QgYXMgdGhlIGZ1bmN0aW9uIHdpbGwgYmVcbiAgICAgIGNhbGxlZCBtb3JlIG9mdGVuIHRoYW4gc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgZG9lcyB0aGlzXG4gICAgICBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW5nIGFuIGV4dHJhIG1hcC4gIElmIFtmXSBpcyB2ZXJ5IHNsb3dcbiAgICAgIGFuZCB5b3UgZG9uJ3QgbWluZCB0aGUgZXh0cmEgYWxsb2NhdGlvbnMsIHVzZVxuICAgICAgW0luY3JfbWFwLmluZGV4X2J5aV0gY29tcG9zZWQgd2l0aCBbSW5jcl9tYXAubWFwIH5mOk1hcC5sZW5ndGhdICopXG4gIHZhbCBtYXBpX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sxIC0+IGRhdGE6J3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogVGhlIHNhbWUgYXMgW21hcGlfY291bnRdIGJ1dCB0aGUgW2ZdIGZ1bmN0aW9uIG9ubHkgZ2V0cyB0byBzZWUgdGhlXG4gICAgICBkYXRhIGluc3RlYWQgb2YgYm90aCB0aGUga2V5IGFuZCB0aGUgZGF0YS4gKilcbiAgdmFsIG1hcF9jb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ2syKVxuICAgIC0+ICgoJ2syLCBpbnQsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcGlfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBbcl0gd2hlcmUgW3JdIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXIgaW4gdGhlXG4gICAgICBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXBfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdyKVxuICAgIC0+ICgnciBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcF9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWluX3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBsYXJnZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWF4X3ZhbHVlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIFttaW4gKiBtYXhdIHdoZXJlIHRoZSB2YWx1ZSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyXG4gICAgICBpbiB0aGUgaW5wdXQgbWFwICopXG4gIHZhbCBtYXBpX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoKCdyICogJ3IpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgW21pbiAqIG1heF0gd2hlcmUgdGhlIHZhbHVlIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXJcbiAgICAgIGluIHRoZSBpbnB1dCBtYXAgKilcbiAgdmFsIG1hcF9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCgnciAqICdyKSBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBzbWFsbGVzdCBhbmQgbGFyZ2VzdCBkYXRhIHZhbHVlIGZyb20gdGhlIGlucHV0IG1hcC4gKilcbiAgdmFsIHZhbHVlX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCd2ICogJ3YpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuXG4gICgqKiBMaWtlIFttZXJnZV0gaW4gW0Jhc2UuTWFwLm1lcmdlXS4gTm90ZSB0aGF0IFtmXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlIHBlciBrZXkgaW5cbiAgICAgIGFueSBnaXZlbiBzdGFiaWxpemF0aW9uLiAqKVxuICB2YWwgbWVyZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbbWVyZ2VfYm90aF9zYW1lXSBpcyBsaWtlIFttZXJnZV0sIGJ1dCBvcHRpbWl6ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHlvdSBvbmx5IGNhcmVcbiAgICAgIGFib3V0IHRoZSBjYXNlIHdoZXJlIGJvdGggbWFwcyBjb250YWluIGEgcGFydGljdWxhciBrZXkuICopXG4gIHZhbCBtZXJnZV9ib3RoX3NvbWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gP291dF9lcXVhbDooJ3YzIC0+ICd2MyAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gJ3YxIC0+ICd2MiAtPiAndjMpXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogTGlrZSBbbWVyZ2VdLCBidXQgb3BlcmF0aW5nIHVzaW5nIGluY3JlbWVudGFsIG5vZGVzLiBUaGlzIGlzIGEgZ29vZCB1c2UgY2FzZSBmb3JcbiAgICAgIFtwcHhfcGF0dGVybl9iaW5kXS4gKilcbiAgdmFsIG1lcmdlJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOigndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsX2xlZnQ6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiA/ZGF0YV9lcXVhbF9yaWdodDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOlxuICAgICAgICAgKGtleTona1xuICAgICAgICAgIC0+ICgoJ3YxLCAndjIpIE1hcC5NZXJnZV9lbGVtZW50LnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKCd2MyBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHVuemlwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgICAtPiA/cmlnaHRfcmVzdWx0X2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICdhICogJ2IsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICdhLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnQgKiAoKCdrLCAnYiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bnppcF9tYXBpXSBpcyBzaW1pbGFyIHRvIFtMaXN0LnVuemlwXSwgYnV0IGZvciBpbmNyZW1lbnRhbCBtYXBzLiBOb3RlIHRoYXQgW2ZdIG1heVxuICAgICAgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIGEgc2luZ2xlIGVsZW1lbnQuICopXG4gIHZhbCB1bnppcF9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3YxICogJ3YyKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW56aXBfbWFwaSddIGlzIGxpa2UgW3VuemlwX21hcGldLCBidXQgYWxsb3dzIHlvdSB0byBkZWZpbmUgdGhlIG1hcHBpbmcgZnJvbSB0aGVcbiAgICAgIGlucHV0IG1hcCdzIGVsZW1lbnRzIHRvIHRoZSBvdXRwdXQgbWFwcycgZWxlbWVudHMgaW5jcmVtZW50YWxseS5cblxuICAgICAgVGhlIG5haXZlIGltcGxlbWVudGF0aW9uIChzZWUgYmVsb3cpIHByb2R1Y2VzIHdvcnNlIEluY3JlbWVudGFsIGdyYXBocy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IHRlbXAgPVxuICAgICAgICAgIEluY3JfbWFwLm1hcGknIGlucHV0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgZiB+a2V5IH5kYXRhIHw+IFR1cGxlMi51bmN1cnJ5IEluY3IuYm90aClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBJbmNyX21hcC5tYXAgdGVtcCB+ZjpUdXBsZTIuZ2V0MiBpblxuICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgXX0gKilcbiAgdmFsIHVuemlwX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjpcbiAgICAgICAgIChrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOigndiwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoJ3YxLCAndykgSW5jcmVtZW50YWwudCAqICgndjIsICd3KSBJbmNyZW1lbnRhbC50KVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAgKiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGlzIGlzIHRoZSBcImVhc3lcIiB2ZXJzaW9uIG9mIFtqb2luXSAqKVxuICB2YWwgZmxhdHRlblxuICAgIDogICd3IEluY3JlbWVudGFsLlN0YXRlLnRcbiAgICAtPiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGUgbm9uLWluY3JlbWVudGFsIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBpZGVudGl0eSBmdW5jdGlvbi4gIEl0c1xuICAgICAgcHVycG9zZSBpcyB0byBjb2xsYXBzZSB0aGUgZXh0cmEgbGV2ZWwgb2YgaW5jcmVtZW50YWxpdHkgYXQgdGhlIGxldmVsIG9mIHRoZSBkYXRhIG9mXG4gICAgICB0aGUgbWFwLiopXG4gIHZhbCBqb2luXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgc2VwYXJhdGVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGtleXNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAnYykgU2V0LnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbXB1dGVzIHRoZSBbcmFua10gb2YgYSBrZXkgKGdpdmVuIGluY3JlbWVudGFsbHkpIGluc2lkZSBvZiBhIG1hcCAoYWxzb1xuICAgICAgaW5jcmVtZW50YWwpLiAgVGhlIHRyYWRpdGlvbmFsIFtNYXAucmFua10gZnVuY3Rpb24gaXMgTyhuKSwgYW5kIHRoaXMgaW5jcmVtZW50YWxcbiAgICAgIHJhbmsgZnVuY3Rpb24gaGFzIHRoZSBmb2xsb3dpbmcgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzOlxuXG4gICAgICBkZWZpbml0aW9uczpcbiAgICAgIG4gOiB0aGUgc2l6ZSBvZiB0aGUgbWFwXG4gICAgICByIDogdGhlIHRpbWUgdG8gY29tcHV0ZSBbTWFwLnN5bW1ldHJpY19kaWZmXSBiZXR3ZWVuIHRoZSB0d28gbWFwc1xuICAgICAgayA6IHRoZSBjaGFuZ2UgaW4gcmFuayBvZiB0aGUga2V5IGJldHdlZW4gdHdvIHN0YWJpbGl6YXRpb25zXG5cbiAgICAgIG5vdGUgdGhhdCBbcl0gYW5kIFtrXSBhcmUgX211Y2hfIHNtYWxsZXIgdGhhbiBbbl0gZm9yIG1vc3QgcHJhY3RpY2FsIHB1cnBvc2VzXG5cbiAgICAgIC0gTyhsb2cgbikgd2hlbiB0aGUga2V5IGlzIG5vdCBpbiB0aGUgbWFwLlxuICAgICAgICBUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvdGhlciBldmVyeSBvdGhlciBzY2VuYXJpby5cbiAgICAgIC0gTyhuKSBvbiB0aGUgaW5pdGlhbCBzdGFiaWxpemF0aW9uXG4gICAgICAtIE8obikgd2hlbiB0aGUga2V5IHRyYW5zaXRpb25zIGZyb20gbm90IGJlaW5nIGluIHRoZSBtYXAgdG8gYmVpbmcgaW4gdGhlIG1hcFxuICAgICAgLSBPKGxvZyBuICsgcikgd2hlbiB0aGUgbWFwIGNoYW5nZXNcbiAgICAgIC0gTyhsb2cgbiArIGspIHdoZW4gdGhlIGtleSBjaGFuZ2VzXG4gICAgICAtIE8obG9nIG4gKyByICsgaykgd2hlbiBib3RoIGtleSBhbmQgbWFwIGNoYW5nZSAqKVxuICB2YWwgcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgQmFzZS5NYXAudCwgJ3N0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoJ2ssICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKGludCBvcHRpb24sICdzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtzdWJyYW5nZSBtYXAgKG1pbiwgbWF4KV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyBhbGwgb2YgdGhlXG4gICAgICBrZXlzIGFuZCBkYXRhIGZyb20gW21hcF0gYmV0d2VlbiBbbWluXSBhbmQgW21heF0sIGFuZCBub25lIG9mIHRoZSBrZXlzIG91dHNpZGUgdGhlXG4gICAgICByYW5nZS5cblxuICAgICAgW3N1YnJhbmdlIG1hcCBOb25lXSBpcyB0aGUgZW1wdHkgbWFwLiBbcmFuZ2VdIGJlaW5nIFtOb25lXSBtZWFucyBubyBlbGVtZW50cyBhcmVcbiAgICAgIGNob3Nlbi5cblxuICAgICAgTm90ZSB0aGF0IGluY3JlbWVudGFsIGNoYW5nZXMgaGF2ZSBhIHJ1bnRpbWUgb2YgTygoayArIG0pIGxvZyBuKSB3aGVyZSBrIGlzIHRoZSBzaXplXG4gICAgICBvZiB0aGUgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2YgdGhlIGNoYW5nZXMgdG8gdGhlXG4gICAgICBlbGVtZW50cyBjb250YWluZWQgYnkgdGhlIHJhbmdlLiBUaGUgY29tcGxleGl0eSBvZiB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiBpcyB0aGVcbiAgICAgIHNhbWUgYXMgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uLCB3aXRoIHNvbWUgc2ltcGxpZmljYXRpb24uIGsgPSAwIGJlY2F1c2Ugd2UgaGF2ZVxuICAgICAgbm90IG1hZGUgYW55IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgbWFwIHlldCwgYW5kIG0gZXF1YWxzIHRoZSBzaXplIG9mIHRoZSByYW5nZSxcbiAgICAgIGJlY2F1c2UgdGhlIGluaXRpYWwgcmFuZ2UgaXMgZW1wdHkuICopXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCAoJ2sgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqICdrIE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIG9wdGlvblxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3N1YnJhbmdlX2J5X3JhbmsgbWFwIChzLCBlKV0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBzdWJtYXAgdGhhdCBpbmNsdWRlcyAoZS1zKzEpXG4gICAgICBrZXlzIGJldHdlZW4gcy10aCBhbmQgZS10aCwgaW5jbHVzaXZlLlxuXG4gICAgICBJZiBzIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFwIGxlbmd0aCwgdGhlIHJlc3VsdCBpcyBlbXB0eS5cbiAgICAgIElmIGUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBtYXAgbGVuZ3RoLCB0aGUgcmVzdWx0IGNvbnRhaW5zIGtleXMgZnJvbSBzLXRoIHRvIHRoZVxuICAgICAgbGFzdCBvbmUuXG5cbiAgICAgIFJhaXNlcyBmb3IgaW52YWxpZCBpbmRpY2VzIC0gcyA8IDAgb3IgZSA8IHMuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluaXRpYWwgY29tcHV0YXRpb24gaXMgTyhtaW4oZSwgbi1zKSArIGxvZyhuKSksIGkuZS4gbGluZWFyLFxuICAgICAgYnV0IG9wdGltaXplZCBmb3IgcmFuZ2VzIGNsb3NlIHRvIGJlZ2lubmluZyBvciBlbmQuXG5cbiAgICAgIFJ1bnRpbWUgb2YgdGhlIGluY3JlbWVudGFsIGNvbXB1dGF0aW9uIGlzIE8obG9nKG4pICsgayArIChtK20nKSAqIGxvZyhuKSkgd2hlcmU6XG4gICAgICAtIGsgaXMgdGhlIHNpemUgb2YgdGhlIGRpZmZcbiAgICAgIC0gbSBpcyB0aGUgdG90YWwgaW1wYWN0IG9mIG1hcCBjaGFuZ2VzIG9uIHRoZSByYW5nZSwgYm91bmRlZCBieSBrIChlLmcuIGlmIHdlIGFkZFxuICAgICAgICAxMDAxIGtleXMgYW5kIHJlbW92ZSAxMDAwIGJlbG93IHMsIHRoZW4gbSA9IDEpXG4gICAgICAtIG0nID0gTyggfG5ldyBzIC0gb2xkIHN8ICsgfG5ldyBlIC0gb2xkIGV8ICkuXG4gICopXG4gIHZhbCBzdWJyYW5nZV9ieV9yYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoIGludCBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtyZWtleV0gdHJhbnNmb3JtcyBhIG1hcCBieSBtb2RpZnlpbmcgdGhlIHR5cGUgb2YgdGhlIGtleS4gIFRoZSB1c2VyIGlzXG4gICAgICByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBbZl0gZG9lc24ndCByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGtleSBmb3JcbiAgICAgIG11bHRpcGxlIGlucHV0IGtleXMuXG5cbiAgICAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBbZl0gaXMgY2hlYXAgdG8gY29tcHV0ZSBhbmQgYWNjb3JkaW5nbHkgbWF5IGNhbGxcbiAgICAgIGl0IG11bHRpcGxlIHRpbWVzLiAqKVxuICB2YWwgcmVrZXlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCgnazIsICd2LCAnY21wMikgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtpbmRleF9ieWkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0gY29uc3RydWN0cyBhbiBpbmNyZW1lbnRhbCBtYXAtb2YtbWFwcyB3aGVyZSBlYWNoXG4gICAgICBrZXktZGF0YSBwYWlyIG9mIHRoZSBpbnB1dCBtYXAgaXMgcHJlc2VudCBpbiBvbmUgKG9yIG5vbmUpIG9mIHRoZSBpbm5lciBtYXBzLlxuICAgICAgW2luZGV4XSBzcGVjaWZpZXMgdGhlIG91dGVyIG1hcCBrZXkgdW5kZXIgd2hpY2ggZWFjaCBvcmlnaW5hbCBrZXktZGF0YSBwYWlyIGlzXG4gICAgICBmb3VuZC5cblxuICAgICAgQWxsIG9mIHRoZSByZXN1bHRpbmcgaW5uZXIgbWFwcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBub24tZW1wdHk7IGlmIHRoZSBpbm5lciBtYXBcbiAgICAgIHdvdWxkIG90aGVyd2lzZSBiZSBlbXB0eSwgdGhlbiB0aGUga2V5IGZvciB0aGF0IG1hcCBpcyBpbnN0ZWFkIHJlbW92ZWQgZnJvbSB0aGVcbiAgICAgIG91dGVyIG1hcC5cblxuICAgICAgQW4gYWxsLWF0LW9uY2UgdmVyc2lvbiBvZiBbaW5kZXhfYnldIHdvdWxkIGxvb2sgbGlrZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGluZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwIH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSBpbmRleCAtPiBTb21lIChpbmRleCwgKGtleSwgZGF0YSkpKVxuICAgICAgICAgIHw+IE1hcC5vZl9hbGlzdF9tdWx0aSBjb21wYXJhdG9yXG4gICAgICAgICAgfD4gTWFwLm1hcCB+ZjooTWFwLm9mX2FsaXN0X2V4biAoTWFwLmNvbXBhcmF0b3JfcyBtYXApKVxuICAgICAgICA7O1xuICAgICAgXX0gKilcbiAgdmFsIGluZGV4X2J5aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KGtleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICAoKiogW2luZGV4X2J5IG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdIGlzIGxpa2UgW2luZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSwgYnV0XG4gICAgICB0aGUgW2luZGV4XSBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlIHRoZSBpbm5lciBtYXAncyBba2V5XS4gKilcbiAgdmFsIGluZGV4X2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooJ3YgLT4gJ291dGVyX2tleSBvcHRpb24pXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ID91cGRhdGU6XG4gICAgICAgICAob3V0ZXJfa2V5OidvdXRlcl9rZXlcbiAgICAgICAgICAtPiBpbm5lcl9rZXk6J2lubmVyX2tleVxuICAgICAgICAgIC0+IG9sZF9kYXRhOid2XG4gICAgICAgICAgLT4gbmV3X2RhdGE6J3ZcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDoob3V0ZXJfa2V5OidvdXRlcl9rZXkgLT4gaW5uZXJfa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiAoJ2FjYywgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3RyYW5zcG9zZV0gZmxpcHMgdGhlIG9yZGVyIG9mIGEgZG91Ymx5IG5lc3RlZCBpbmNyZW1lbnRhbCBtYXAuXG5cbiAgICAgIEFsbCBpbm5lciBtYXAgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudC4gKilcbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2syLCAnazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgnazEsICgnazIsICd2LCAnazJfY21wKSBNYXAudCwgJ2sxX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnazIsICgnazEsICd2LCAnazFfY21wKSBNYXAudCwgJ2syX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvbGxhcHNlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCAnb3V0ZXJfa2V5ICogJ2lubmVyX2tleVxuICAgICAgICAgLCAndlxuICAgICAgICAgLCAoJ291dGVyX2NtcCwgJ2lubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzcyApXG4gICAgICAgICAgIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtjb2xsYXBzZV9ieV0gaXMgc2ltaWxhciB0byBbY29sbGFwc2VdLCBidXQgaXQgYWxsb3dzIHRoZSB1c2VyIHRvXG4gICAgICBjaG9vc2UgaG93IHRvIGNvbWJpbmUgdGhlIHR3byBrZXlzIGZyb20gdGhlIG91dGVyIGFuZCBpbm5lciBtYXBzLlxuICAgICAgVGhpcyBkb2VzIG1lYW4gdGhhdCBpdCdzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaW1wbGVtZW50b3Igb2YgdGhlXG4gICAgICBbbWVyZ2Vfa2V5c10gZnVuY3Rpb24gdG8gdXBob2xkIHRoaXMgaW52YXJpYW50OlxuXG4gICAgICA+IGEgbWVyZ2VkLWtleSBiZWluZyBlcXVhbCB0byBhbm90aGVyIG1lcmdlZC1rZXkgaW1wbGllcyB0aGF0IHRoZVxuICAgICAgPiBvdXRlci1rZXlzIGFuZCBpbm5lci1rZXlzIHdoaWNoIHdlcmUgdXNlZCB0byBidWlsZCB0aGUgbWVyZ2VkIGtleXMgYWxzb1xuICAgICAgPiBjb21wYXJlIHRvIGJlIGVxdWFsIHRvIG9uZSBhbm90aGVyXG5cbiAgICAgIFRoZSBbfmNvbXBhcmF0b3JdIGFyZ3VtZW50IHRoZSBmaXJzdC1jbGFzcyBtb2R1bGUgb2YgdGhlIG91dHB1dCBrZXksIGl0XG4gICAgICB1c3VhbGx5IGxvb2tzIGxpa2UgdGhpczpcbiAgICAgIFsgfmNvbXBhcmF0b3I6KG1vZHVsZSBDb21iaW5lZF9rZXkpIF1cbiAgICAgIGJ1dCBtYWtlIHN1cmUgdGhhdCB0aGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFtDb21wYXJhdG9yLlNdIHNpZ25hdHVyZS4gKilcbiAgdmFsIGNvbGxhcHNlX2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gbWVyZ2Vfa2V5czooJ291dGVyX2tleSAtPiAnaW5uZXJfa2V5IC0+ICdjb21iaW5lZF9rZXkpXG4gICAgLT4gY29tcGFyYXRvcjooJ2NvbWJpbmVkX2tleSwgJ2NvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ2NvbWJpbmVkX2tleSwgJ3YsICdjb21iaW5lZF9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb252ZXJ0IGEgbWFwIHdpdGggdHVwbGVzIGZvciBrZXlzIGludG8gYSBuZXN0ZWQgbWFwLiBUaGlzIG9wZXJhdGlvbiBpcyByb3VnaGx5IHRoZVxuICAgICAgaW52ZXJzZSBvZiBbY29sbGFwc2VdLCB0aG91Z2ggaWYgdGhlcmUgYXJlIG91dGVyIGtleXMgaW4gdGhlIHVuY29sbGFwc2VkIG1hcCB0aGF0XG4gICAgICBjb3JyZXNwb25kIHRvIGVtcHR5IGlubmVyIG1hcHMsIHRoZSBvdXRlciBrZXlzIHdpbGwgYmUgZHJvcHBlZCBmcm9tIHRoZSBleHBhbmRlZFxuICAgICAgbWFwLiAqKVxuICB2YWwgZXhwYW5kXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ291dGVyX2tleSAqICdpbm5lcl9rZXksICd2LCAndHVwbGVfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBvdXRlcl9jb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5uZXJfY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvdW50aVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoaW50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBjb3VudFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChpbnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZvcl9hbGxpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmb3JfYWxsXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c2lcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGV4aXN0c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndiAtPiBib29sKVxuICAgIC0+IChib29sLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBJbmNyZW1lbnRhbGx5IGNvbXB1dGUgdGhlIHN1bSBvZiBhbGwgb2YgdGhlIHZhbHVlcyBpbiB0aGUgbWFwLlxuXG4gICAgICBCZXdhcmUgb2YgZmxvYXQncyBuZWdhdGl2ZSBpbmZpbml0aWVzLiBUaGV5IGFyZW4ndCBjb21tdXRhdGl2ZSBhbmQgd2lsbCBtaXNiZWhhdmVcbiAgICAgIGhlcmUuXG4gICopXG4gIHZhbCBzdW1cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKG1vZHVsZSBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9ICd1KVxuICAgIC0+IGY6KCd2IC0+ICd1KVxuICAgIC0+ICgndSwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogWygnaywgJ3YpIExvb2t1cC50XSBwcm92aWRlcyBhIHdheSB0byBsb29rdXAga2V5cyBpbiBhIG1hcCB3aGljaCB1c2VzIHN5bW1ldHJpY1xuICAgICAgZGlmZnMgdG8gdHJpZ2dlciB1cGRhdGVzIG9mIHRoZSBsb29rdXBzLlxuXG4gICAgICBUaGUgY29tcGxleGl0eSBvZiBhbiB1cGRhdGUgZGVwZW5kcyBvbjpcbiAgICAgIC0gW25dOiB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGxhcmdlciBvZiB0aGUgb2xkL3VwZGF0ZWQgaW5wdXQgbWFwXG4gICAgICAtIFtrXTogdGhlIG51bWJlciBvZiBsb29rdXAgbm9kZXMgY3JlYXRlZCB1c2luZyBbZmluZF1cbiAgICAgIC0gW21dOiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzeW1kaWZmIG9mIHRoZSBtYXBzXG4gICAgICAtIFtzeW1kaWZmKG4pXTogdGhlIGNvc3Qgb2YgcGVyZm9ybWluZyB0aGUgc3ltZGlmZiBvbiB0aGUgbWFwIChtIDw9IHN5bWRpZmYobikgPD0gbilcblxuICAgICAgRWFjaCB1cGRhdGUgc2hvdWxkIGNvc3QgW08oc3ltZGlmZihuKSArIG0gKiBsb2cgayldLCBzbyB0aGlzIHdpbGwgYmUgZWZmaWNpZW50IHdoZW5cbiAgICAgIHRoZXJlIGFyZSBhIGxvdCBvZiBsb29rdXBzIChjbG9zZSB0byBuKSBpbnRvIGEgbWFwIHdoaWNoIGNhbiBiZSBlZmZpY2llbnRseVxuICAgICAgc3ltZGlmZmVkIChhbmQgdGhlcmVmb3JlIGhhcyBhIHNtYWxsIG51bWJlciBvZiBjaGFuZ2VzIGFsc28pLiBUaGUgY29zdCBvZiB1cGRhdGluZ1xuICAgICAgd2hlbiBwZXJmb3JtaW5nIHRoZSBzYW1lIGxvb2t1cHMgYnkgbWVhbnMgb2YgW0luY3IubWFwIH5mOihmdW4gbSAtPiBNYXAuZmluZCBtIGtleSldXG4gICAgICBpcyBbTyhrICogbG9nIG4pXS5cbiAgKilcbiAgbW9kdWxlIExvb2t1cCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgdGhlIGxvb2t1cCBzdHJ1Y3R1cmUgb24gYW4gaW5jcmVtZW50YWwgbWFwLiAqKVxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCwgJ3cpIHRcblxuICAgICgqKiBDcmVhdGUgYSBub2RlIHdoaWNoIHBlcmZvcm1zIFtNYXAuZmluZF0gb24gdGhlIGlucHV0IG1hcC5cblxuICAgICAgICBbZmluZCAoY3JlYXRlIGluY3JfbWFwKSBrZXldIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIFtJbmNyLm1hcCB+ZjooZnVuIG0gLT5cbiAgICAgICAgTWFwLmZpbmQgbSBrZXkpIGluY3JfbWFwXSwgYnV0IHdoZW4geW91IGNhbGwgW2ZpbmRdIG1hbnkgdGltZXMgZm9yIGEgc2luZ2xlXG4gICAgICAgIFtjcmVhdGVdIHRoZSBub2RlcyBzaG91bGQgdXBkYXRlIG1vcmUgZWZmaWNpZW50bHkgaW4gc3RhYmlsaXNhdGlvbiB3aGVuIFtpbmNyX21hcF1cbiAgICAgICAgY2hhbmdlcyBpbiBhIHdheSB3aGljaCBjYW4gYmUgZWZmaWNpZW50bHkgZGlmZmVkLlxuXG4gICAgICAgIFRoaXMgd2lsbCByZS11c2UgZXhpc3Rpbmcgbm9kZXMgd2hlbiBpdCBjYW4sIGJ1dCB3aWxsIG5vdCBhbHdheXMgZG8gc28uXG4gICAgKilcbiAgICB2YWwgZmluZCA6ICgnaywgJ3YsIF8sICd3KSB0IC0+ICdrIC0+ICgndiBvcHRpb24sICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgICAoKiogQSBjb252ZW5pZW50IHdheSB0byByZWZlciB0byB0aGUgdHlwZSBmb3IgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAoJ3YsICd3KSB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzLCAndykgdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA6IHNpZ1xuICAgICAgdmFsIHNleHBfb2ZfdCA6ICgnayAtPiBTZXhwLnQpIC0+ICgndiAtPiBTZXhwLnQpIC0+ICgnaywgJ3YsICdjbXAsIF8pIHQgLT4gU2V4cC50XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgICAgIDogIGZyb206aW50XG4gICAgICAtPiB0b186aW50XG4gICAgICAtPiAoJ2EsICdiLCAnYykgQmFzZS5NYXAudFxuICAgICAgLT4gKCdhICogJ2Egb3B0aW9uKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgU19nZW4gPSBTX2dlblxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHN0YXRlX3dpdG5lc3NcblxuICAgIGluY2x1ZGVcbiAgICAgIFNfZ2VuXG4gICAgICB3aXRoIHR5cGUgJ2EgSW5jci50ID0gKCdhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW5jciA6IEluY3JlbWVudGFsLlMpIDpcbiAgICBTIHdpdGggdHlwZSBzdGF0ZV93aXRuZXNzIDo9IEluY3Iuc3RhdGVfd2l0bmVzcyBhbmQgbW9kdWxlIEluY3IgOj0gSW5jclxuZW5kXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIEluY3JfbWFwX2ludGZcblxubGV0IG5vX2luc3RydW1lbnRhdGlvbiA9IHsgSW5zdHJ1bWVudGF0aW9uLmYgPSAoZnVuIGYgLT4gZiAoKSkgfVxuXG4oKiogVGhpcyB0eXBlIGxldHMgdXMgY2FwdHVyZSB0aGUga2luZCBvZiBtYXAgZnVuY3Rpb24gYmVpbmcgcGVyZm9ybWVkLCBzbyB3ZSBjYW4gd2l0aFxuICAgIG9uZSBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtIG1hcCBhbmQgZmlsdGVyLW1hcCBvcGVyYXRpb25zLlxuXG4gICAgSGVyZSwgWydpbnB1dF9kYXRhXSBpcyB0aGUgdHlwZSBvZiBkYXRhIGluIHRoZSBpbnB1dCBtYXAsIFsnb3V0cHV0X2RhdGFdIGlzIHRoZSB0eXBlXG4gICAgb2YgZGF0YSBpbiB0aGUgb3V0cHV0IG1hcCwgYW5kIFsnZl9vdXRwdXRdIGlzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgW35mXSBmdW5jdGlvblxuICAgIHBhc3NlZCB0byB0aGUgbWFwcGluZyBmdW5jdGlvbi4gKilcbm1vZHVsZSBNYXBfdHlwZSA9IHN0cnVjdFxuICB0eXBlICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnZl9vdXRwdXQpIHQgPVxuICAgIHwgTWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSkgdFxuICAgIHwgRmlsdGVyX21hcCA6ICgnaW5wdXRfZGF0YSwgJ291dHB1dF9kYXRhLCAnb3V0cHV0X2RhdGEgb3B0aW9uKSB0XG5cbiAgKCogVGhlIGV4dHJhIHR5cGUgdmFyaWFibGUgJ2EgaXMgdG8gYWxsb3cgaW4gZnV0dXJlOlxuICAgICB8IEZpbHRlciA6ICgnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgYm9vbCkgdCAqKVxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIGxldCB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYSBpblxuICAgICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgY3V0b2ZmID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgfmN1dG9mZiA9XG4gICAgbGV0IGRhdGFfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZSA9XG4gICAgICBJbmNyZW1lbnRhbC5DdXRvZmYuc2hvdWxkX2N1dG9mZiBjdXRvZmYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgY3VyIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+IGN1clxuICAgICAgfCBTb21lIChfb2xkX2luLCBvbGQpIC0+XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsIH5pbml0Om9sZCBvbGQgY3VyIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgIHwgYExlZnQgX29sZCAtPiBNYXAucmVtb3ZlIGFjYyBrZXlcbiAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IE1hcC5hZGRfZXhuIGFjYyB+a2V5IH5kYXRhOm5ld19cbiAgICAgICAgICB8IGBVbmVxdWFsIChfb2xkLCBuZXdfdmFsdWUpIC0+IE1hcC5zZXQgYWNjIH5rZXkgfmRhdGE6bmV3X3ZhbHVlKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBsZXQgYWNjID1cbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHNwZWNpYWxpemVkX2luaXRpYWwgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gTWFwLmZvbGQgfmluaXQgfmY6YWRkIG5ld19pblxuICAgICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9vdXQpIC0+XG4gICAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gYWRkIH5rZXkgfmRhdGE6bmV3XyBhY2NcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChvbGQsIG5ld18pIC0+IHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjKVxuICAgICAgaW5cbiAgICAgIGZpbmFsaXplIGFjYylcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpIFtAbm9udGFpbF0pXG4gICAgICB+YWRkOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgYWRkIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgOztcblxuICBsZXQgd2l0aF9jb21wYXJhdG9yJyBnZXRfY29tcGFyYXRvciB4IGYgPVxuICAgIEluY3JlbWVudGFsLmJpbmQgKEluY3JlbWVudGFsLmZyZWV6ZSAoSW5jcmVtZW50YWwubWFwIHggfmY6Z2V0X2NvbXBhcmF0b3IpKSB+ZlxuICA7O1xuXG4gICgqKiBDYXB0dXJlcyB0aGUgY29tcGFyYXRvciAod2hpY2ggY2FuJ3QgY2hhbmdlIGFueXdheSwgc2luY2UgdGhlIHR5cGUgZGV0ZXJtaW5lcyB0aGVcbiAgICAgIGNvbXBhcmF0b3IpIGJ5IGZyZWV6aW5nIHRoZSBjb3JyZXNwb25kaW5nIG1hcC4gIE5vdGUgdGhhdCBieSBmaXJzdCB1c2luZyBJbmNyZW1lbnRhbC5tYXAgdG9cbiAgICAgIGdldCB0aGUgY29tcGFyYXRvciBvdXQgb2YgdGhlIG1hcCwgd2UgYWxsb3cgdGhlIGluaXRpYWwgbWFwIGl0c2VsZiB0byBiZSBnYXJiYWdlXG4gICAgICBjb2xsZWN0ZWQgKilcbiAgbGV0IHdpdGhfY29tcGFyYXRvciBtYXAgZiA9IHdpdGhfY29tcGFyYXRvcicgTWFwLmNvbXBhcmF0b3IgbWFwIGZcblxuICBsZXQgb2Zfc2V0ID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19vdXRwdXQgPVxuICAgICAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgICB+aW5pdDohb2xkX291dHB1dFxuICAgICAgICAgICAgICB+ZjooZnVuIG91dHB1dCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgICAgfCBTZWNvbmQgayAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTprIH5kYXRhOigpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgICBvbGRfb3V0cHV0IDo9IG5ld19vdXRwdXQ7XG4gICAgICAgICAgbmV3X291dHB1dCkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcCA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6aW5wdXRfZGF0YSAtPiBmX291dHB1dClcbiAgICA9XG4gICAgd2l0aF9vbGQgfmluc3RydW1lbnRhdGlvbiBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBnZW5lcmljX21hcGkgTWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGdlbmVyaWNfbWFwaSBGaWx0ZXJfbWFwIH5pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mXG4gIDs7XG5cbiAgbGV0IG1hcCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gaTEgaTIgfmYgPVxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIEluY3JlbWVudGFsLm1hcDIgaTEgaTIgfmY6KGZ1biBhMSBhMiAtPlxuICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhMSBhMiBpblxuICAgICAgICBvbGQgOj0gU29tZSAoYTEsIGEyLCBiKTtcbiAgICAgICAgYikpXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmFcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8oZXh0cmFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICAgID8oZmluYWxpemUgPSBGbi5pZClcbiAgICAgICAgPyhyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ID0gZmFsc2UpXG4gICAgICAgIG1hcFxuICAgICAgICBleHRyYVxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICAgICAgfmV4dHJhX2NoYW5nZWRcbiAgICA9XG4gICAgbGV0IHVwZGF0ZSA9XG4gICAgICBsZXQgZGVmYXVsdCB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIGV4dHJhID1cbiAgICAgICAgYWRkIH5rZXkgfmRhdGE6bmV3X2RhdGEgKHJlbW92ZSB+a2V5IH5kYXRhOm9sZF9kYXRhIGFjYyBleHRyYSkgZXh0cmFcbiAgICAgIGluXG4gICAgICBPcHRpb24udmFsdWUgdXBkYXRlIH5kZWZhdWx0XG4gICAgaW5cbiAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXAgZXh0cmEgfmY6KGZ1biB+b2xkIG5ld19pbiBuZXdfZXh0cmEgLT5cbiAgICAgIGxldCBhY2MgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIE1hcC5mb2xkIG5ld19pbiB+aW5pdCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCB+a2V5IH5kYXRhIGFjYyBuZXdfZXh0cmEpXG4gICAgICAgICAgIHwgU29tZSBpbml0aWFsIC0+IGluaXRpYWwgfmluaXQgbmV3X2luIG5ld19leHRyYSlcbiAgICAgICAgfCBTb21lIChvbGRfaW4sIG9sZF9leHRyYSwgb2xkX291dCkgLT5cbiAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgIGlmIGV4dHJhX2VxdWFsIG9sZF9leHRyYSBuZXdfZXh0cmFcbiAgICAgICAgICAgIHRoZW4gb2xkX291dFxuICAgICAgICAgICAgZWxzZSBleHRyYV9jaGFuZ2VkIH5vbGRfZXh0cmEgfm5ld19leHRyYSB+aW5wdXQ6b2xkX2luIG9sZF9vdXRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJldmVydF90b19pbml0X3doZW5fZW1wdHkgJiYgTWFwLmxlbmd0aCBuZXdfaW4gPSAwXG4gICAgICAgICAgdGhlbiBpbml0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgICAgIG9sZF9pblxuICAgICAgICAgICAgICBuZXdfaW5cbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjYyBuZXdfZXh0cmFcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjIG5ld19leHRyYVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpvbGQgfm5ld19kYXRhOm5ld18gYWNjIG5ld19leHRyYSlcbiAgICAgIGluXG4gICAgICBmaW5hbGl6ZSBhY2MpXG4gIDs7XG5cbiAgbGV0IG1hcGlfY291bnRcbiAgICAgICAgKHR5cGUgYSBjbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBpbnB1dFxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IGEgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKSlcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gKHZhbCBjb21wYXJhdG9yKSBpblxuICAgIGxldCBhZGQgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLnVwZGF0ZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIG4gLT4gbiArIDEpXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlIG5ld19rZXkgYWNjID1cbiAgICAgIE1hcC5jaGFuZ2UgYWNjIG5ld19rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAxIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIG4gLT4gU29tZSAobiAtIDEpKVxuICAgIGluXG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5kYXRhX2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCAoZiB+a2V5IH5kYXRhKSBhY2MpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiBNLmNvbXBhcmF0b3IuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIGFjY1xuICAgICAgICBlbHNlIGFjYyB8PiByZW1vdmUgcHJldl9rZXkgfD4gYWRkIG5ld19rZXkpXG4gIDs7XG5cbiAgbGV0IG1hcF9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6bWluX2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+ZjptYXhfaGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOmJvdW5kc19oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtYXBfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT5cbiAgICAgIGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX3ZhbHVlID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcF9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjpGbi5pZFxuICA7O1xuXG4gIGxldCBtYXhfdmFsdWUgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCB2YWx1ZV9ib3VuZHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgIH5vbGRcbiAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgbmV3X2xlZnRfbWFwIGluXG4gICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgIGVtcHR5LCBlbXB0eSwgZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZWZ0X2RpZmYgPVxuICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9sZWZ0X21hcCBuZXdfbGVmdF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9sZWZ0XG4gICAgaW5cbiAgICBsZXQgcmlnaHRfZGlmZiA9XG4gICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX3JpZ2h0X21hcCBuZXdfcmlnaHRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfcmlnaHRcbiAgICBpblxuICAgICgqIFdlIG1lcmdlIHRoZSB0d28gc2lkZXMgb2YgdGhlIGRpZmZzIHRvZ2V0aGVyIHNvIHdlIGNhbiBtYWtlIHN1cmUgdG8gaGFuZGxlIGVhY2hcbiAgICAgICBrZXkgZXhhY3RseSBvbmNlLiBUaGlzIHJlbGllcyBvbiBzeW1tZXRyaWMgZGlmZiBnaXZpbmcgc29ydGVkIG91dHB1dC4gKilcbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgIGxlZnRfZGlmZlxuICAgICAgcmlnaHRfZGlmZlxuICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+IGNvbXBhcmF0b3IuY29tcGFyZSBsZWZ0X2tleSByaWdodF9rZXkpXG4gICAgfD4gU2VxdWVuY2UuZm9sZCB+aW5pdDpvbGRfb3V0cHV0IH5mOihmdW4gb3V0cHV0IGRpZmZfZWxlbWVudCAtPlxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgIHwgTGVmdCAoa2V5LCBfKSB8IFJpZ2h0IChrZXksIF8pIC0+IGtleVxuICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChfcmlnaHRfa2V5LCBfKSkgLT5cbiAgICAgICAgICAoKiBjb21wYXJpc29uIGZ1bmN0aW9ucyBjYW4gYmUgZXhwZW5zaXZlISAqKVxuICAgICAgICAgICgqIGFzc2VydCAoY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSA9IDApOyAqKVxuICAgICAgICAgIGxlZnRfa2V5XG4gICAgICBpblxuICAgICAgZiB+b2xkX291dHB1dCB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudClcbiAgOztcblxuICBsZXQgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMlxuICAgICAgbGVmdF9tYXBcbiAgICAgIHJpZ2h0X21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgfm9sZFxuICAgICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQ6XyB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudCAtPlxuICAgICAgICAgICAgKCogVGhlc2UgdmFsdWVzIHJlcHJlc2VudCB3aGV0aGVyIHRoZXJlIGlzIGRhdGEgZm9yIHRoZSBnaXZlbiBrZXkgaW4gdGhlIG5ld1xuICAgICAgICAgICAgICAgaW5wdXQgaW4gdGhlIGxlZnQgYW5kIHJpZ2h0IG1hcC4gKilcbiAgICAgICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgIHwgQm90aCAoKF8sIGxlZnRfZGlmZiksIChfLCByaWdodF9kaWZmKSkgLT5cbiAgICAgICAgICAgICAgICBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYsIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgICAgfCBMZWZ0IChfLCBsZWZ0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgICAgICB8IFJpZ2h0IChfLCByaWdodF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgIE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgeCwgTm9uZSAtPiBmIH5rZXkgKGBMZWZ0IHgpXG4gICAgICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZiB+a2V5IChgQm90aCAoeCwgeSkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGEpKVxuICA7O1xuXG4gIGxldCBtZXJnZV9ib3RoX3NvbWVcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhvdXRfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICBsZWZ0X21hcFxuICAgICAgICByaWdodF9tYXBcbiAgICAgICAgfmZcbiAgICA9XG4gICAgd2l0aF9vbGQyXG4gICAgICBsZWZ0X21hcFxuICAgICAgcmlnaHRfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZjooZnVuIH5vbGQgbmV3X2xlZnRfbWFwIG5ld19yaWdodF9tYXAgLT5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgbWF0Y2ggTWFwLmxlbmd0aCBuZXdfbGVmdF9tYXAsIE1hcC5sZW5ndGggbmV3X3JpZ2h0X21hcCB3aXRoXG4gICAgICAgICgqIEJlY2F1c2Ugd2Ugb25seSBjYXJlIGFib3V0IGtleXMgdGhhdCBhcmUgaW4gYm90aCBtYXBzLCBpZiBlaXRoZXIgbWFwIGlzXG4gICAgICAgICAgIGVtcHR5LCBiYWlsIGVhcmx5LiAqKVxuICAgICAgICB8IDAsIF8gfCBfLCAwIC0+IGVtcHR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1lcmdlX3NoYXJlZF9pbXBsXG4gICAgICAgICAgICB+b2xkXG4gICAgICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgICAgICB+bmV3X3JpZ2h0X21hcFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgICAgIH5mOihmdW4gfm9sZF9vdXRwdXQgfmtleSB+b3V0cHV0IH5kaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgICAgICAgbGV0IGxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmZfZWxlbWVudCB3aXRoXG4gICAgICAgICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgbGVmdF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHJpZ2h0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCByaWdodF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCViaW5kIGxlZnRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCByaWdodF9kYXRhID0gTWFwLmZpbmQgbmV3X3JpZ2h0X21hcCBrZXkgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIG1hdGNoIGFybSBiaW5kcyBbcmlnaHRfZGF0YV0gZmlyc3QgYmVjYXVzZSB0aGUgbWFwIGxvb2t1cFxuICAgICAgICAgICAgICAgICAgICAgaXMgc2xvd2VyIHRoYW4gY2FsbGluZyBbbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnRdLiAqKVxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgcmlnaHRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgbGVmdF9kYXRhID0gTWFwLmZpbmQgbmV3X2xlZnRfbWFwIGtleSBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIGxvb2sgZm9yIHRoZSBwcmV2aW91c2x5IGNvbXB1dGVkIHZhbHVlIHRvIHNlZSBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvXG4gICAgICAgICAgICAgICAgIGFkZCBvciByZW1vdmUgdGhlIGtleS4gKilcbiAgICAgICAgICAgICAgbGV0IHByZXZfb3V0ID0gTWFwLmZpbmQgb2xkX291dHB1dCBrZXkgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbGVmdF9hbmRfcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBmIH5rZXkgeCB5IGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIHByZXZfb3V0IHdpdGhcbiAgICAgICAgICAgICAgICAgKCogaWYgdGhlIG5ldyByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCwgZG9uJ3QgY2hhbmdlIHRoZSBtYXAgKilcbiAgICAgICAgICAgICAgICAgfCBTb21lIHByZXZfb3V0IHdoZW4gb3V0X2VxdWFsIGRhdGEgcHJldl9vdXQgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggcHJldl9vdXQgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleSkpKVxuICA7O1xuXG4gIGxldCBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChsaHMgOiAoKCdrZXksIGlucHV0X2RhdGEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOihpbnB1dF9kYXRhLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKGZfb3V0cHV0LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbGhzIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBhY2MgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFhY2MpIGluXG4gICAgbGV0IChvbl9pbm5lcl9jaGFuZ2UgOiBrZXk6J2tleSAtPiBmX291dHB1dCAtPiB1bml0KSA9XG4gICAgICBtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IGZ1biB+a2V5IGRhdGEgLT4gYWNjIDo9IE1hcC5zZXQgIWFjYyB+a2V5IH5kYXRhXG4gICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgZnVuIH5rZXkgb3B0IC0+XG4gICAgICAgICAgbGV0IG9sZCA9ICFhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgICAgICA6PSAobWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG9sZCBrZXlcbiAgICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE1hcC5zZXQgb2xkIH5rZXkgfmRhdGEpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxoc19jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGxocyB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGRlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSBNYXAucmVtb3ZlICFhY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHByZXZfbm9kZXMgOj0gbmV3X25vZGVzO1xuICAgICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgbGhzX2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgIE1hcF90eXBlLkZpbHRlcl9tYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuTWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG1hcCcgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGZpbHRlcl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbF9sZWZ0ID9kYXRhX2VxdWFsX3JpZ2h0IG1hcDEgbWFwMiB+ZiA9XG4gICAgbWVyZ2VcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsX2xlZnRcbiAgICAgID9kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBtYXAxXG4gICAgICBtYXAyXG4gICAgICB+ZjooZnVuIH5rZXk6XyBkaWZmIC0+IFNvbWUgZGlmZilcbiAgICB8PiBmaWx0ZXJfbWFwaScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgPyhkYXRhX2VxdWFsIDogdiAtPiB2IC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGxlZnRfcmVzdWx0X2VxdWFsIDogdjEgLT4gdjEgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8ocmlnaHRfcmVzdWx0X2VxdWFsIDogdjIgLT4gdjIgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6IGtleTona2V5IC0+IGRhdGE6diAtPiB2MSAqIHYyKVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBpbnB1dF9jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIHwgZmFsc2UsIHRydWUgLT4gZW1wdHlfbWFwLCBlbXB0eV9tYXBcbiAgICAgICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgICAgYnVpbGRpbmcgdGhlIG1hcHMgdXAgcGllY2UgYnkgcGllY2UsIHNvIHdlIGRvIHRoaXMgd2hlbmV2ZXIgd2VcbiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbiBmcm9tIFwiZW1wdHlcIiB0byBcInNvbWV0aGluZ1wiLCB3aGljaCB3aWxsIGFsbW9zdCBhbHdheXNcbiAgICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgTWFwLm1hcGkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHIgPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgfmluaXQ6KCFsZWZ0X2FjYywgIXJpZ2h0X2FjYylcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAocHJldiwgbmV3XykgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19hLCBuZXdfYiA9IGYgfmtleSB+ZGF0YTpuZXdfIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOm5ld19hXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgcmlnaHRfcmVzdWx0X2VxdWFsIHByZXZfYiBuZXdfYlxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpuZXdfYlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgbGVmdCBrZXksIE1hcC5yZW1vdmUgcmlnaHQga2V5XG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCBlbGVtZW50IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6YSwgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOmIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsICFyaWdodF9hY2MgcmlnaHQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgcmlnaHRfcmVzdWx0O1xuICAgICAgICAgIGxlZnRfYWNjIDo9IGxlZnQ7XG4gICAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgIGlucHV0XG4gICAgICAgIH5mXG4gICAgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgICAgICA/bGVmdF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICB+ZlxuICAgICAgICB8PiBUdXBsZTIudW5jdXJyeSBJbmNyZW1lbnRhbC5ib3RoKVxuICAgIGluXG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmZzdCBwYWlyLCBJbmNyZW1lbnRhbC5tYXAgfmY6c25kIHBhaXJcbiAgOztcblxuICBsZXQgdW56aXAgP2luc3RydW1lbnRhdGlvbiA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgP2N1dG9mZlxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOlxuICAgICAgICAgICAga2V5OidrZXlcbiAgICAgICAgICAtPiBkYXRhOih2LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAgICAgLT4gKHYxLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50ICogKHYyLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgIDogKCgna2V5LCB2MSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICogKCgna2V5LCB2MiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgaW5wdXQgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSBsZWZ0X2FjYyA6PSBNYXAuc2V0ICFsZWZ0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5IGRhdGEgPSByaWdodF9hY2MgOj0gTWFwLnNldCAhcmlnaHRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmVjIGlucHV0X2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBsZXQgbmV3X25vZGVzID1cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICFwcmV2X21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6IXByZXZfbm9kZXNcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biBub2RlcyAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIF9sZWZ0X2RlcCwgX3JpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXAucmVtb3ZlIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBsZWZ0X2FjYyA6PSBNYXAucmVtb3ZlICFsZWZ0X2FjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICByaWdodF9hY2MgOj0gTWFwLnJlbW92ZSAhcmlnaHRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLml0ZXIgY3V0b2ZmIH5mOihmdW4gYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdF9pbmNyLCByaWdodF9pbmNyID0gZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBsZWZ0X2luY3Igfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfaW5jclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KHJpZ2h0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGlucHV0X2NoYW5nZSkpO1xuICAgIEUuTm9kZS53YXRjaCBsZWZ0X3Jlc3VsdCwgRS5Ob2RlLndhdGNoIHJpZ2h0X3Jlc3VsdFxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICAgIG1hcFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvcicgfmluc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIH5jb21wYXJhdG9yIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCBrZXlzID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgYWRkIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQuYWRkIGFjYyBrZXkgaW5cbiAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5yZW1vdmUgYWNjIGtleSBpblxuICAgICAgbGV0IGRhdGFfZXF1YWwgXyBfID0gdHJ1ZSBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgfmluaXQ6KFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICB+aW5pdDooZW1wdHksIGVtcHR5KVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YTpkYXRhIChmaXJzdCwgc2Vjb25kKSAtPlxuICAgICAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCBkYXRhIC0+IE1hcC5zZXQgZmlyc3QgfmtleSB+ZGF0YSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5XG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnNldCBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLmFkZF9leG4gZmlyc3QgfmtleSB+ZGF0YSwgc2Vjb25kXG4gICAgICAgICAgfCBTZWNvbmQgZGF0YSAtPiBmaXJzdCwgTWFwLmFkZF9leG4gc2Vjb25kIH5rZXkgfmRhdGEpXG4gICAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhOl8gKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgTWFwLnJlbW92ZSBmaXJzdCBrZXksIE1hcC5yZW1vdmUgc2Vjb25kIGtleSkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mXG4gICAgfD4gcGFydGl0aW9uX21hcGkgP2luc3RydW1lbnRhdGlvbiB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBkYXRhKVxuICA7O1xuXG4gIGxldCBmbGF0dGVuIHN0YXRlIG1hcCA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IHJlc3VsdCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcCkpIGluXG4gICAgbGV0IG5vZGUgPSBFLk5vZGUuY3JlYXRlIHN0YXRlIChmdW4gKCkgLT4gIXJlc3VsdCkgaW5cbiAgICBNYXAuaXRlcmkgbWFwIH5mOihmdW4gfmtleSB+ZGF0YTppbmNyIC0+XG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbmNyIH5vbl9jaGFuZ2U6KGZ1biBhIC0+XG4gICAgICAgICAgIHJlc3VsdCA6PSBNYXAuc2V0ICFyZXN1bHQgfmtleSB+ZGF0YTphKSkpO1xuICAgIEUuTm9kZS53YXRjaCBub2RlXG4gIDs7XG5cbiAgbGV0IGpvaW5fd2l0aF9jb21wYXJhdG9yIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgfmNvbXBhcmF0b3IgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIG1hcF9pbmNyIGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHJlc3VsdF9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IG9sZF9tYXBfb2ZfaW5jcnMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGN1cnJlbnRfZGVwZW5kZW5jaWVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJlc3VsdF9tYXApIGluXG4gICAgbGV0IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZSA9XG4gICAgICBsZXQgbmV3X2RlcCA9XG4gICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGUgZGF0YV9ub2RlIH5vbl9jaGFuZ2U6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgcmVzdWx0X21hcCA6PSBNYXAuc2V0ICFyZXN1bHRfbWFwIH5rZXkgfmRhdGEpXG4gICAgICBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCBuZXdfZGVwO1xuICAgICAgTWFwLnNldCBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOm5ld19kZXBcbiAgICBpblxuICAgIGxldCByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5ID1cbiAgICAgIGxldCBkZXAgPSBNYXAuZmluZF9leG4gY3VycmVudF9kZXBlbmRlbmNpZXMga2V5IGluXG4gICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgIHJlc3VsdF9tYXAgOj0gTWFwLnJlbW92ZSAhcmVzdWx0X21hcCBrZXk7XG4gICAgICBNYXAucmVtb3ZlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIGtleVxuICAgIGluXG4gICAgbGV0IGxoc19jaGFuZ2UgPVxuICAgICAgSW5jcmVtZW50YWwubWFwIG1hcF9pbmNyIH5mOihmdW4gbWFwX29mX2luY3JzIC0+XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbDpwaHlzX2VxdWFsXG4gICAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICAgIG1hcF9vZl9pbmNyc1xuICAgICAgICAgICAgICB+aW5pdDohY3VycmVudF9kZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiByZW1vdmVfc3Vibm9kZSBjdXJyZW50X2RlcGVuZGVuY2llcyB+a2V5XG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF8sIGRhdGFfbm9kZSkgLT5cbiAgICAgICAgICAgICAgICAgIHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfD4gYWRkX3N1Ym5vZGUgfmtleSB+ZGF0YV9ub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgY3VycmVudF9kZXBlbmRlbmNpZXMgOj0gbmV3X2RlcGVuZGVuY3lfbWFwO1xuICAgICAgICAgIG9sZF9tYXBfb2ZfaW5jcnMgOj0gbWFwX29mX2luY3JzKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgbGhzX2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBqb2luID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBqb2luX3dpdGhfY29tcGFyYXRvciB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgaW5wdXRfbWFwIH5kYXRhX2VxdWFsID1cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXAgaW5cbiAgICB3aXRoX2NvbXBhcmF0b3IgaW5wdXRfbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IHN0YXRlID0gU2VwYXJhdGVfc3RhdGUuY3JlYXRlIGNvbXBhcmF0b3IgaW5cbiAgICAgIGxldCBvdXRwdXRfbWFwX25vZGUgPVxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGV0IGRlcGVuZGVuY3kgPVxuICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSAoTGF6eS5mb3JjZV92YWwgaW5wdXRfbWFwX2NoYW5nZWQpXG4gICAgICAgIGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgZGVwZW5kZW5jeVxuICAgICAgaW5cbiAgICAgICgqIFdlIHdhbnQgdG8gbWFrZSBub2RlcyBkZXBlbmQgb24gW2lucHV0X21hcF9jaGFuZ2VkXSBzbyB0aGF0IFtpbnB1dF9tYXBfY2hhbmdlZF1cbiAgICAgICAgIGlzIGFsbG93ZWQgdG8gbWFrZSB0aGVtIHN0YWxlLCBidXQgd2UgZG8gbm90IHdhbnQgdGhlbSB0byBiZSByZWNvbXB1dGVkIGZvciBhbnlcbiAgICAgICAgIG90aGVyIHJlYXNvbi4gU28gd2UgbWFrZSBbaW5wdXRfbWFwX2NoYW5nZWRdIGEgdW5pdCBpbmNyZW1lbnRhbCAodGhhdCB0aGVyZWZvcmVcbiAgICAgICAgIG5ldmVyIGNoYW5nZXMpIGFuZCB0aGlzIHdheSBbb3V0cHV0X21hcF9ub2RlXSBhbmQgdGhlIGxvb2t1cCBub2RlcyB3aWxsIG9ubHkgYmVcbiAgICAgICAgIHJlY29tcHV0ZWQgd2hlbiB0aGV5IGFyZSBleHBsaWNpdGx5IG1hZGUgc3RhbGUuXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBpbnB1dF9tYXBfY2hhbmdlZCA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBsZXQgcHJldl9pbnB1dF9tYXAgPSBzdGF0ZS5pbnB1dF9tYXAgaW5cbiAgICAgICAgICAgICAgIGxldCBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXAgPVxuICAgICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICAgIHByZXZfaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgICB+aW5pdDooc3RhdGUuZXhwZXJ0X25vZGVzLCBzdGF0ZS5vdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgYExlZnQgX29sZF92YWx1ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb2xkX25vZGUgPSBNYXAuZmluZF9leG4gZXhwZXJ0X25vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIG91dHB1dF9tYXBfbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLnJlbW92ZSBleHBlcnRfbm9kZXMga2V5LCBNYXAucmVtb3ZlIG91dHB1dF9tYXAga2V5XG4gICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGVfbG9va3VwX25vZGUgaW5jcmVtZW50YWxfc3RhdGUgc3RhdGUga2V5XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgLCBNYXAuYWRkX2V4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfmRhdGE6KEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUpIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGRfdmFsdWUsIF9uZXdfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgICBzdGF0ZS5leHBlcnRfbm9kZXMgPC0gZXhwZXJ0X25vZGVzO1xuICAgICAgICAgICAgICAgc3RhdGUub3V0cHV0X21hcCA8LSBvdXRwdXRfbWFwKSkpXG4gICAgICBpblxuICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBvdXRwdXRfbWFwX25vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggb3V0cHV0X21hcF9ub2RlKVxuICA7O1xuXG4gICgqIEp1c3QgZm9yIGRlcml2aW5nIHN0cnVjdHVyYWwgZXF1YWxpdHkuICopXG4gIHR5cGUgJ2EgbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5ID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gICAgfCBJbmNsIG9mICdhXG4gICAgfCBFeGNsIG9mICdhXG4gICAgfCBVbmJvdW5kZWRcbiAgW0BAZGVyaXZpbmcgZXF1YWxdXG5cbiAgbGV0IHN1YnJhbmdlXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwX2luY3IgcmFuZ2UgfmY6KGZ1biB+b2xkIG1hcCByYW5nZSAtPlxuICAgICAgbGV0IGNvbXBhcmUgPSAoTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICBsZXQgZXF1YWwgbCByID0gY29tcGFyZSBsIHIgPSAwIGluXG4gICAgICBsZXQgKCA+ICkgYSBiID0gY29tcGFyZSBhIGIgPiAwXG4gICAgICBhbmQgKCA+PSApIGEgYiA9IGNvbXBhcmUgYSBiID49IDAgaW5cbiAgICAgIGxldCBtYXliZV9ib3VuZF9lcXVhbCBhIGIgOiBib29sID0gZXF1YWxfbWF5YmVfYm91bmRfc3RydWN0dXJhbGx5IGVxdWFsIGEgYiBpblxuICAgICAgbGV0IHJhbmdlX2lzX2VtcHR5IH5taW4gfm1heCA6IGJvb2wgPVxuICAgICAgICBtYXRjaCBtaW4sIG1heCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkLCAoVW5ib3VuZGVkIHwgRXhjbCBfIHwgSW5jbCBfKSB8IChFeGNsIF8gfCBJbmNsIF8pLCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsIH5lcTE6bWF5YmVfYm91bmRfZXF1YWwgfmVxMjptYXliZV9ib3VuZF9lcXVhbCBvbGRfcmFuZ2UgcmFuZ2VcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBUaGVyZSBhcmUgbm8ga2V5cyB0byByZW1vdmUgYW5kIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgaXMgdXBkYXRlZC4gKilcbiAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAoKiBSZW1vdmUgYW55IGtleXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2VcbiAgICAgICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgICAgIH5sb3dlcl9ib3VuZDptaW5cbiAgICAgICAgICAgICAgICAgICB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCogQWRkIGluIGFueSBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgbmV3IHJhbmdlIGJ1dCBub3QgdGhlIG9sZCByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIGxldCBtYXBfYXBwZW5kX2V4biBsb3dlcl9wYXJ0IHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIE1hcC5hcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICAgICAgICAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImltcG9zc2libGUgY2FzZTogQlVHIGluIGluY3JfbWFwLm1sIHN1YnJhbmdlXCJcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbGV0IGxvd2VyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihJbmNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEV4Y2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgYW5kIHVwcGVyX3BhcnQgPVxuICAgICAgICAgICAgICAgICAgIG1hdGNoIG9sZF9tYXggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgICAgICAgICAgICAgIHwgRXhjbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooSW5jbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgICAgfCBJbmNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihFeGNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgbWFwX2FwcGVuZF9leG5cbiAgICAgICAgICAgICAgICAgICBsb3dlcl9wYXJ0XG4gICAgICAgICAgICAgICAgICAgKG1hcF9hcHBlbmRfZXhuIHdpdGhvdXRfa2V5c19vdXRfb2ZfcmFuZ2UgdXBwZXJfcGFydClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICB3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSkpKSlcbiAgOztcblxuICBsZXQgcmVrZXlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmZcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIG1hcF9pbmNyXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yLCBbXSlcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+XG4gICAgICAgIGxldCBuZXdfZW50cnkgPSBmIH5rZXkgfmRhdGEsIGRhdGEgaW5cbiAgICAgICAgb3V0cHV0LCBuZXdfZW50cnkgOjogYWRkcylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIChvdXRwdXQsIGFkZHMpIC0+IE1hcC5yZW1vdmUgb3V0cHV0IChmIH5rZXkgfmRhdGEpLCBhZGRzKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgcHJldl9rZXkgPSBmIH5rZXkgfmRhdGE6b2xkX2RhdGEgaW5cbiAgICAgICAgbGV0IG5ld19rZXkgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgaWYgKE1hcC5jb21wYXJhdG9yIG91dHB1dCkuY29tcGFyZSBwcmV2X2tleSBuZXdfa2V5ID0gMFxuICAgICAgICB0aGVuIE1hcC5zZXQgb3V0cHV0IH5rZXk6bmV3X2tleSB+ZGF0YTpuZXdfZGF0YSwgYWRkc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgb3V0cHV0ID0gTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgaW5cbiAgICAgICAgICBvdXRwdXQsIChuZXdfa2V5LCBuZXdfZGF0YSkgOjogYWRkcykpXG4gICAgICB+ZmluYWxpemU6KGZ1biAob3V0cHV0LCBhZGRzKSAtPlxuICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICBMaXN0LmZvbGQgYWRkcyB+aW5pdDpvdXRwdXQgfmY6KGZ1biBvdXRwdXQgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5IH5kYXRhKVxuICAgICAgICBpblxuICAgICAgICBvdXRwdXQsIFtdKVxuICAgIHw+IEluY3JlbWVudGFsLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgaW5kZXhfYnlpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5pbmRleFxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBpbm5lcl9jb21wYXJhdG9yIC0+XG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiBpbm5lcl9rZXkgZGF0YSB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3IgfmluZGV4ID1cbiAgICBpbmRleF9ieWlcbiAgICAgID9pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgIChtYXAgOiAoKGssIHYsIGNtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChrZXkgOiAoaywgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleSA9IGNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgICAgbGV0IHNhbWVfa2V5IGEgYiA9IGNvbXBhcmVfa2V5IGEgYiA9IDAgaW5cbiAgICAgIGxldCB3aGVuX2tleV9jaGFuZ2VkIH5tYXAgfm9sZF9rZXkgfm5ld19rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgbmV3X2tleSBvbGRfa2V5IDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiB0aGUgbmV3IGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9sZCBrZXksIGZpbmQgdGhlIHNpemUgb2YgdGhlIG1hcCBzdWJyYW5nZVxuICAgICAgICAgICAgIGJldHdlZW4gdGhlbSBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcHJldmlvdXMgcmFuayAqKVxuICAgICAgICAgIGxldCBsb3dlcl9ib3VuZCwgdXBwZXJfYm91bmQgPSBFeGNsIG5ld19rZXksIEV4Y2wgb2xkX2tleSBpblxuICAgICAgICAgIGxldCBzdWJyYW5nZSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCBpblxuICAgICAgICAgIG9sZF9yYW5rIC0gTWFwLmxlbmd0aCBzdWJyYW5nZSAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIE90aGVyd2lzZSwgdGhlIG5ldyBrZXkgaXMgbGFyZ2VyIHRoYW4gdGhlIG9sZCBrZXksIHNvIGZpbmQgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgICAgICAgbWFwIHN1YnJhbmdlIGJldHdlZW4gdGhlbSBhbmQgYWRkIGl0IHRvIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgb2xkX2tleSwgRXhjbCBuZXdfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgKyBNYXAubGVuZ3RoIHN1YnJhbmdlICsgMSlcbiAgICAgIGluXG4gICAgICBsZXQgd2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5IH5vbGRfcmFuayA9XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgKCogV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZGF0YSwgc28gb3B0aW1pemUgdGhlc2UgY2hlY2tzICopXG4gICAgICAgICAgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSlcbiAgICAgICAgICBvbGRfbWFwXG4gICAgICAgICAgbmV3X21hcFxuICAgICAgICAgIH5pbml0Om9sZF9yYW5rXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGRpZmZfa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICB8IGBMZWZ0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyAtIDFcbiAgICAgICAgICAgIHwgYFJpZ2h0IF8gd2hlbiBjb21wYXJlX2tleSBkaWZmX2tleSBrZXkgPCAwIC0+IGFjYyArIDFcbiAgICAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwcm9jZXNzIH4ob2xkIDogKChrLCB2LCBfKSBNYXAudCAqIF8gKiBfKSBvcHRpb24pIG5ld19tYXAgKG5ld19rZXkgOiBrKSA9XG4gICAgICAgIGlmIG5vdCAoTWFwLm1lbSBuZXdfbWFwIG5ld19rZXkpXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgICgqIElmIHRoZSBtYXAgYW5kIGtleSBhcmUgdGhlIHNhbWUsIGp1c3QgcmV1c2UgdGhlIG9sZCByYW5rICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaylcbiAgICAgICAgICAgIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgJiYgc2FtZV9rZXkgb2xkX2tleSBuZXdfa2V5IC0+IG9sZF9yYW5rXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBpcyB0aGUgc2FtZSBidXQgdGhlIGtleSBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHBoeXNfZXF1YWwgbmV3X21hcCBvbGRfbWFwIC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX2tleV9jaGFuZ2VkIH5tYXA6bmV3X21hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgdGhlIGtleSBpcyB0aGUgc2FtZSBidXQgdGhlIG1hcCBjaGFuZ2VkICopXG4gICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSB3aGVuIHNhbWVfa2V5IG5ld19rZXkgb2xkX2tleSAtPlxuICAgICAgICAgICAgU29tZSAod2hlbl9tYXBfY2hhbmdlZCB+b2xkX21hcCB+bmV3X21hcCB+a2V5Om5ld19rZXkgfm9sZF9yYW5rKVxuICAgICAgICAgICgqIElmIGJvdGggdGhlIG1hcCBhbmQgdGhlIGtleSBjaGFuZ2VkLCB0aGlzIGNhbiBiZSBzaW11bGF0ZWQgYXMgdGhlXG4gICAgICAgICAgICAgbWFwIGNoYW5naW5nIGZvbGxvd2VkIGJ5IHRoZSBrZXkgY2hhbmdpbmcgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIC0+XG4gICAgICAgICAgICAoKiBXZSBjYWxsIFtwcm9jZXNzXSByZWN1cnNpdmVseSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmdcbiAgICAgICAgICAgICAgIFt3aGVuX21hcF9jaGFuZ2VkXSBmb2xsb3dlZCBieSBbd2hlbl9rZXlfY2hhbmdlZF0gc2luY2UgaXQgbWlnaHQgYmUgdGhlXG4gICAgICAgICAgICAgICBjYXNlIHRoYXQgW29sZF9rZXldIGlzIGluIFtvbGRfbWFwXSBhbmQgW25ld19rZXldIGlzIGluIFtuZXdfbWFwXSwgYnV0XG4gICAgICAgICAgICAgICBbb2xkX2tleV0gaXMgbm90IGluIFtuZXdfbWFwXS4gKilcbiAgICAgICAgICAgIGxldCBvbGRfcmFuayA9XG4gICAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykpIG5ld19tYXAgb2xkX2tleVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByb2Nlc3Mgfm9sZDooU29tZSAobmV3X21hcCwgb2xkX2tleSwgb2xkX3JhbmspKSBuZXdfbWFwIG5ld19rZXlcbiAgICAgICAgICAoKiBJZiB0aGUgcHJldmlvdXMga2V5IHdhcyBub3QgaW4gdGhlIG1hcCBvciB0aGlzIGlzIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLFxuICAgICAgICAgICAgIGNvbXB1dGUgdGhlIHJhbmsgZnJvbSBzY3JhdGNoICopXG4gICAgICAgICAgfCBTb21lIChfLCBfLCBOb25lKSB8IE5vbmUgLT4gTWFwLnJhbmsgbmV3X21hcCBuZXdfa2V5KVxuICAgICAgaW5cbiAgICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcCA6ICgoaywgXywgXykgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChyYW5nZSA6IChpbnQgTWF5YmVfYm91bmQudCAqIGludCBNYXliZV9ib3VuZC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICBsZXQgZmluZF9rZXlfcmFuZ2UgKHJhbmdlIDogKGludCAqIGludCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgIDogKChrICogayBvcHRpb24pIG9wdGlvbiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgPVxuICAgICAgd2l0aF9vbGQyIG1hcCByYW5nZSB+aW5zdHJ1bWVudGF0aW9uIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGUgdXBwZXIgYm91bmQgd2FzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlXG4gICAgICAgICAgICBtYXAsIHNvIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIGtleSByYW5nZSBpcyBbVW5ib3VuZGVkXS5cbiAgICAgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgZGVtb25zdHJhdGVkIGluIGEgdGVzdCBpbiBbLi4vdGVzdC90ZXN0X3N1YnJhbmdlLm1sXS4gKilcbiAgICAgICAgIHwgTm9uZSAtPiBTb21lIChVbmJvdW5kZWQsIFVuYm91bmRlZCkpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgICAtPiAoKGsxLCAoazIsIHYsIGsyX2NtcCkgTWFwLnQsIGsxX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgIC0+ICgoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBmdW4gPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgICB+aW5pdDooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICB+YWRkXG4gICAgICAgICAgfnJlbW92ZSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VfYnlcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wIGNvbWJpbmVkX2tleSBjb21iaW5lZF9jbXApXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihtZXJnZV9rZXlzIDogb3V0ZXJfa2V5IC0+IGlubmVyX2tleSAtPiBjb21iaW5lZF9rZXkpXG4gICAgICAgIH4oY29tcGFyYXRvciA6IChjb21iaW5lZF9rZXksIGNvbWJpbmVkX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudClcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSBjb21wYXJhdG9yKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfnVwZGF0ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGE6XyB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5zZXQgYWNjIH5rZXk6KG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkgfmRhdGE6bmV3X2RhdGEpXG4gICAgICB+YWRkOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAuYWRkX2V4biBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLnJlbW92ZSBhY2MgKG1lcmdlX2tleXMgb3V0ZXJfa2V5IGlubmVyX2tleSkpXG4gIDs7XG5cbiAgbGV0IGNvbGxhcHNlXG4gICAgICAgICh0eXBlIG91dGVyX2tleSBvdXRlcl9jbXAgaW5uZXJfa2V5IGlubmVyX2NtcClcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpXG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIG91dGVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBtb2R1bGUgQ21wID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG91dGVyX2tleSAqIGlubmVyX2tleVxuICAgICAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IChvdXRlcl9jbXAsIGlubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIGxldCBjb21wYXJhdG9yID1cbiAgICAgICAgICBsZXQgaW5uZXJfY29tcGFyYXRvciA9XG4gICAgICAgICAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGlubmVyX2NvbXBhcmF0b3IpIGluXG4gICAgICAgICAgICBNLmNvbXBhcmF0b3JcbiAgICAgICAgICBpblxuICAgICAgICAgIFR1cGxlMi5jb21wYXJhdG9yIG91dGVyX2NvbXBhcmF0b3IgaW5uZXJfY29tcGFyYXRvclxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgY29sbGFwc2VfYnlcbiAgICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+bWVyZ2Vfa2V5czpUdXBsZTIuY3JlYXRlXG4gICAgICAgIH5jb21wYXJhdG9yOihtb2R1bGUgQ21wKSlcbiAgOztcblxuICBsZXQgZXhwYW5kXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICBtYXBfaW5jclxuICAgICAgICB+b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+aW5uZXJfY29tcGFyYXRvclxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBNYXAuc2luZ2xldG9uIGlubmVyX2NvbXBhcmF0b3IgaW5uZXJfa2V5IG5ld19kYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuc2V0IG1hcCB+a2V5OmlubmVyX2tleSB+ZGF0YTpuZXdfZGF0YSkpXG4gICAgICB+YWRkOihmdW4gfmtleToob3V0ZXJfa2V5LCBpbm5lcl9rZXkpIH5kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgZGF0YVxuICAgICAgICAgIHwgU29tZSBtYXAgLT4gTWFwLmFkZF9leG4gbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGE6XyBhY2MgLT5cbiAgICAgICAgTWFwLmNoYW5nZSBhY2Mgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIG1hcCAtPlxuICAgICAgICAgICAgbGV0IG1hcCA9IE1hcC5yZW1vdmUgbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKG5vdCAoTWFwLmlzX2VtcHR5IG1hcCkpIG1hcCkpXG4gIDs7XG5cbiAgbGV0IGNvdW50aSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OjBcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgLSAxIGVsc2UgY291bnQpXG4gIDs7XG5cbiAgbGV0IGNvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgKGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mKSB+ZjooZnVuIGNvdW50IC0+XG4gICAgICBjb3VudCA8PiAwKVxuICA7O1xuXG4gIGxldCBleGlzdHMgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZXhpc3RzaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOiAoKF8sIF8sIF8pIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICAobW9kdWxlIEdyb3VwIDogQWJzdHJhY3RfYWxnZWJyYS5Db21tdXRhdGl2ZV9ncm91cC5XaXRob3V0X3NleHAgd2l0aCB0eXBlIHQgPSB1KVxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDpHcm91cC56ZXJvXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleTpfIH5kYXRhOnYgYWNjIC0+IEdyb3VwLiggKyApIGFjYyAoZiB2KSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCAtICkgYWNjIChmIHYpKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBmb3JfYWxsaSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgP2ZpbmFsaXplXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/dXBkYXRlXG4gICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgP2ZpbmFsaXplXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgbWFwXG4gICAgICB+aW5pdFxuICAgICAgfmFkZFxuICAgICAgfnJlbW92ZVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICBtYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgID91cGRhdGVcbiAgICAgIG1hcFxuICAgICAgfmluaXRcbiAgICAgIH5hZGRcbiAgICAgIH5yZW1vdmVcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyID0gZmluZF9rZXlfcmFuZ2VfbGluZWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICB0eXBlICgndiwgJ3cpIGVudHJ5ID1cbiAgICAgIHsgbXV0YWJsZSBzYXZlZF92YWx1ZSA6ICd2IG9wdGlvblxuICAgICAgOyBub2RlIDogKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLnRcbiAgICAgIH1cblxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICAoKiBXZSBtYXkgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIHBlciBrZXkgaWYgbm9kZXMgYmVjb21lIG5lY2Vzc2FyeSBhZ2FpbiBhZnRlciBiZWluZ1xuICAgICAgICAgcmVtb3ZlZC4gKilcbiAgICAgIDsgbXV0YWJsZSBsb29rdXBfZW50cmllcyA6ICgnaywgKCd2LCAndykgZW50cnkgbGlzdCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgdXBkYXRlcl9ub2RlIDogKHVuaXQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICA7IHNjb3BlIDogJ3cgSW5jcmVtZW50YWwuU2NvcGUudFxuICAgICAgfVxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgPVxuICAgICAgbGV0IHJlYyBzZWxmID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChsZXQgdXBkYXRlcl9ub2RlID1cbiAgICAgICAgICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGxhenkgc2VsZikgPSBzZWxmIGluXG4gICAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoKSAoa2V5LCBjaGFuZ2VkX3ZhbHVlKSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBNYXAuZmluZF9tdWx0aSBzZWxmLmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICA8LSAobWF0Y2ggY2hhbmdlZF92YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfdmFsdWUgfCBgVW5lcXVhbCAoXywgbmV3X3ZhbHVlKSAtPiBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgZW50cnkubm9kZSkpO1xuICAgICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcCA8LSBpbnB1dF9tYXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgICAgeyBzYXZlZF9tYXAgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyBsb29rdXBfZW50cmllcyA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IHVwZGF0ZXJfbm9kZVxuICAgICAgICAgICA7IHNjb3BlID0gSW5jcmVtZW50YWwuU2NvcGUuY3VycmVudCAoSW5jcmVtZW50YWwuc3RhdGUgaW5wdXRfbWFwKSAoKVxuICAgICAgICAgICB9KVxuICAgICAgaW5cbiAgICAgIExhenkuZm9yY2Ugc2VsZlxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSB+aXNfbm93X29ic2VydmFibGUgPVxuICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICBsZXQgY3VycmVudF9lbnRyaWVzID0gTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgaW5cbiAgICAgIGxldCBpc19saW5rZWQgPSBMaXN0LmV4aXN0cyBjdXJyZW50X2VudHJpZXMgfmY6KHBoeXNfZXF1YWwgZW50cnkpIGluXG4gICAgICBpZiBCb29sLmVxdWFsIGlzX2xpbmtlZCBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpZiBpc19ub3dfb2JzZXJ2YWJsZVxuICAgICAgdGhlblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIE1hcC51cGRhdGUgdC5sb29rdXBfZW50cmllcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIChvdGhlcl9lbnRyeSA6OiBfIGFzIG90aGVyX2VudHJpZXMpIC0+XG4gICAgICAgICAgICAoKiBVcGRhdGUgdGhpcyBlbnRyeSdzIHZhbHVlIHRvIGJlIGN1cnJlbnQuICopXG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBvdGhlcl9lbnRyeS5zYXZlZF92YWx1ZTtcbiAgICAgICAgICAgIGVudHJ5IDo6IG90aGVyX2VudHJpZXNcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFtdIC0+XG4gICAgICAgICAgICBlbnRyeS5zYXZlZF92YWx1ZSA8LSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXk7XG4gICAgICAgICAgICBbIGVudHJ5IF0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5ld19lbnRyaWVzID1cbiAgICAgICAgICBMaXN0LmZpbHRlciBjdXJyZW50X2VudHJpZXMgfmY6KGZ1biB4IC0+IG5vdCAocGh5c19lcXVhbCBlbnRyeSB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSAoaWYgTGlzdC5pc19lbXB0eSBuZXdfZW50cmllc1xuICAgICAgICAgICAgdGhlbiBNYXAucmVtb3ZlIHQubG9va3VwX2VudHJpZXMga2V5XG4gICAgICAgICAgICBlbHNlIE1hcC5zZXQgdC5sb29rdXBfZW50cmllcyB+a2V5IH5kYXRhOm5ld19lbnRyaWVzKSlcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXkgPVxuICAgICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgdC51cGRhdGVyX25vZGUgaW5cbiAgICAgIEluY3JlbWVudGFsLlNjb3BlLndpdGhpbiBpbmNyZW1lbnRhbF9zdGF0ZSB0LnNjb3BlIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbGV0IHJlYyBlbnRyeSA9XG4gICAgICAgICAgbGF6eVxuICAgICAgICAgICAgeyBzYXZlZF92YWx1ZSA9IE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleVxuICAgICAgICAgICAgOyBub2RlID1cbiAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IChmb3JjZSBlbnRyeSkuc2F2ZWRfdmFsdWUpXG4gICAgICAgICAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KHNsb3dfcGF0aF9saW5rX2VudHJ5IHQgZW50cnkgfmtleSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IChsYXp5IGVudHJ5KSA9IGVudHJ5IGluXG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgICAgZW50cnkubm9kZVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5FeHBlcnQuRGVwZW5kZW5jeS5jcmVhdGUgdC51cGRhdGVyX25vZGUpO1xuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IGtleSA9XG4gICAgICBtYXRjaCBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB3aXRoXG4gICAgICB8IGVudHJ5IDo6IF8gLT4gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZVxuICAgICAgfCBbXSAtPiBzbG93X3BhdGhfY3JlYXRlX25vZGUgdCBrZXlcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9kZWJ1ZyA9IHN0cnVjdFxuICAgICAgbGV0W0Bjb2xkXSBzZXhwX29mX2VudHJ5IHNleHBfb2ZfdmFsdWUgZW50cnkgPVxuICAgICAgICBsZXQgeyBzYXZlZF92YWx1ZTsgbm9kZSB9ID0gZW50cnkgaW5cbiAgICAgICAgbGV0IG5vZGUgPSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlIGluXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgOiB2YWx1ZSBvcHRpb25cbiAgICAgICAgICA7IG5vZGVfaW5mbyA9IChJbmNyZW1lbnRhbC51c2VyX2luZm8gbm9kZSA6IChJbmZvLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19jb25zdCA9XG4gICAgICAgICAgICAgIChPcHRpb24uc29tZV9pZiAoSW5jcmVtZW50YWwuaXNfY29uc3Qgbm9kZSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKVxuICAgICAgICAgICAgICAgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX3VubmVjZXNzYXJ5ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX25lY2Vzc2FyeSBub2RlKSkgKClcbiAgICAgICAgICAgICAgIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIH1dXG4gICAgICA7O1xuXG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgICAgICBsZXQgaW5mb19wZXJfa2V5ID1cbiAgICAgICAgICBNYXAubWVyZ2UgdC5zYXZlZF9tYXAgdC5sb29rdXBfZW50cmllcyB+ZjooZnVuIH5rZXkgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IGFjdHVhbF92YWx1ZSwgZW50cmllcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSB4LCBbXVxuICAgICAgICAgICAgICB8IGBSaWdodCB5IC0+IE5vbmUsIHlcbiAgICAgICAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gU29tZSB4LCB5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICB7IGtleSA6IGtleVxuICAgICAgICAgICAgICAgIDsgYWN0dWFsX3ZhbHVlIDogKHZhbHVlIG9wdGlvbltAc2V4cC5vcHRpb25dKVxuICAgICAgICAgICAgICAgIDsgZW50cmllcyA6IHZhbHVlIGVudHJ5IGxpc3RcbiAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cC5MaXN0IChNYXAuZGF0YSBpbmZvX3Blcl9rZXkpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBTX2dlblxuICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgYW5kIHR5cGUgJ2EgSW5jci5DdXRvZmYudCA9ICdhIEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgIGFuZCB0eXBlICgnaywgJ3YsICdjbXApIExvb2t1cC50ID0gKCdrLCAndiwgJ2NtcCwgc3RhdGVfd2l0bmVzcykgR2VuZXJpYy5Mb29rdXAudFxuZW5kXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZ1xuICB0aGVuXG4gICAgcHJpbnRfc1xuICAgICAgWyVtZXNzYWdlIFwiRG93bmxvYWQgdHJpZ2dlcmVkXCIgKGZpbGVuYW1lIDogc3RyaW5nKSAobWltZXR5cGUgOiBzdHJpbmcpIGNvbnRlbnRzXVxuICBlbHNlIChcbiAgICAoKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTkzMjg4OTEvNTU4NTkyICopXG4gICAgbGV0IGEgPSBEb21faHRtbC5jcmVhdGVBIERvbV9odG1sLmRvY3VtZW50IGluXG4gICAgbGV0IGNvbnRlbnRzX2JpZ3N0ciA9XG4gICAgICBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgKEJpZ3N0cmluZy5vZl9zdHJpbmcgY29udGVudHMpXG4gICAgaW5cbiAgICBsZXQgYmxvYiA9XG4gICAgICAoKiBEb24ndCB1c2UgW2Jsb2JfZnJvbV9zdHJpbmddLiBUaGF0IGhhcyBhbiBhdHRyYWN0aXZlIHR5cGUgYnV0IHdvcmtzIGJ5IGZpcnN0XG4gICAgICAgICBjb252ZXJ0aW5nIG91ciBPQ2FtbCBzdHJpbmcgdG8gYSBKYXZhc2NyaXB0IHN0cmluZywgd2hpY2ggY29udmVydHMgdG9cbiAgICAgICAgIFVURi0xNi4gSWYgdGhlIHN0cmluZyBjb250YWlucyByYW5kb20gYmluYXJ5IGRhdGEgdGhhdCB3aWxsIGRpc3RvcnQgaXQuICopXG4gICAgICBGaWxlLmJsb2JfZnJvbV9hbnkgWyBgYXJyYXlCdWZmZXIgY29udGVudHNfYmlnc3RyIF0gfmNvbnRlbnRUeXBlOm1pbWV0eXBlXG4gICAgaW5cbiAgICBsZXQgdXJsID0gRG9tX2h0bWwud2luZG93IyMuX1VSTCMjY3JlYXRlT2JqZWN0VVJMIGJsb2IgaW5cbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImhyZWZcIikgdXJsO1xuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiZG93bmxvYWRcIikgKEpzLnN0cmluZyBmaWxlbmFtZSk7XG4gICAgYSMjY2xpY2s7XG4gICAgRG9tX2h0bWwud2luZG93IyMuX1VSTCMjcmV2b2tlT2JqZWN0VVJMIHVybClcbjs7XG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KGVuYWJsZWQgPSB0cnVlKVxuICAgICAgICA/KG9uX2NsaWNrID0gZnVuIF8gLT4gVmRvbS5FZmZlY3QuSWdub3JlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgIH5nZXRfZG93bmxvYWRcbiAgICAgICAgfmJ1dHRvbl90ZXh0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBvcGVuIFZkb20gaW5cbiAgICBsZXQgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgZXYgPVxuICAgICAgdHJpZ2dlciAoZ2V0X2Rvd25sb2FkICgpKTtcbiAgICAgIG9uX2NsaWNrIGV2XG4gICAgaW5cbiAgICBsZXQgZW5hYmxlZF9kaXNhYmxlZCA9XG4gICAgICBpZiBlbmFibGVkIHRoZW4gW10gZWxzZSBbIEF0dHIuZGlzYWJsZWQ7IEF0dHIuc3R5bGUgKENzc19nZW4uY29sb3IgKGBOYW1lIFwiZ3JleVwiKSkgXVxuICAgIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgZXh0cmFfYXR0cnM7IGVuYWJsZWRfZGlzYWJsZWQ7IFsgQXR0ci5vbl9jbGljayB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBdIF1cbiAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgaW5cbiAgICBOb2RlLmJ1dHRvbiB+YXR0cnM6WyBBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycyBdIFsgTm9kZS50ZXh0IGJ1dHRvbl90ZXh0IF1cbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEluY3IgPSBJbmNyZW1lbnRhbC5NYWtlICgpXG5cbigqIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2xvY2sgZm9yIHJ1bm5pbmcgY2xpZW50cywgYnV0IGJvbnNhaSB0ZXN0cyBoYXZlIHRoZWlyXG4gICBvd24gc2VwYXJhdGUgY2xvY2tzICopXG5sZXQgY2xvY2sgPSBJbmNyLkNsb2NrLmNyZWF0ZSB+c3RhcnQ6KFRpbWVfbnMubm93ICgpKSAoKVxuXG5pbmNsdWRlIEluY3Jcbm1vZHVsZSBNYXAgPSBJbmNyX21hcC5NYWtlIChJbmNyKVxubW9kdWxlIFNlbGVjdCA9IEluY3Jfc2VsZWN0Lk1ha2UgKEluY3IpXG4iLCJvcGVuIFZpcnR1YWxfZG9tXG5vcGVuIENvcmVcblxudHlwZSAoJ2FjdGlvbiwgJ21vZGVsLCAnc3RhdGUsICdleHRyYSkgd2l0aF9leHRyYSA9XG4gIHsgYXBwbHlfYWN0aW9uIDogJ2FjdGlvbiAtPiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+ICdtb2RlbFxuICA7IHZpZXcgOiBWZG9tLk5vZGUudFxuICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfYWN0aW9uOignYWN0aW9uIC0+IHVuaXQpIC0+IHVuaXRcbiAgOyBleHRyYSA6ICdleHRyYVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbnR5cGUgKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsKSB0ID0gKCdhY3Rpb24sICdzdGF0ZSwgJ21vZGVsLCB1bml0KSB3aXRoX2V4dHJhXG5cbmxldCBjcmVhdGVfd2l0aF9leHRyYSA/YXBwbHlfYWN0aW9uID91cGRhdGVfdmlzaWJpbGl0eSA/b25fZGlzcGxheSB+ZXh0cmEgbW9kZWwgdmlldyA9XG4gIGxldCBhcHBseV9hY3Rpb24gPVxuICAgIE9wdGlvbi52YWx1ZSBhcHBseV9hY3Rpb24gfmRlZmF1bHQ6KGZ1biBfIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgPVxuICAgIE9wdGlvbi52YWx1ZSB1cGRhdGVfdmlzaWJpbGl0eSB+ZGVmYXVsdDooZnVuIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IG9uX2Rpc3BsYXkgPSBPcHRpb24udmFsdWUgb25fZGlzcGxheSB+ZGVmYXVsdDooZnVuIF8gfnNjaGVkdWxlX2FjdGlvbjpfIC0+ICgpKSBpblxuICB7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXk7IGV4dHJhOyB2aWV3IH1cbjs7XG5cbmxldCBjcmVhdGUgPSBjcmVhdGVfd2l0aF9leHRyYSB+ZXh0cmE6KClcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5cbigqKiBDb21tb24gbW9kdWxlIHR5cGVzICopXG5tb2R1bGUgdHlwZSBNb2RlbCA9IHNpZ1xuICB0eXBlIHRcblxuXG4gICgqKiBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHdoZXRoZXIgdGhlIG1vZGVsIGhhcyBjaGFuZ2VkIGVub3VnaCB0byByZXF1aXJlIHJlZmlyaW5nXG4gICAgICB0aGUgaW5jcmVtZW50YWwgZ3JhcGguXG5cbiAgICAgIEl0J3MgYmVzdCBpZiB0aGUgdmFsdWVzIGluIHRoZSBtb2RlbCBzdXBwb3J0IGEgc2VtYW50aWNhbGx5IHJlYXNvbmFibGUgY3V0b2ZmXG4gICAgICBmdW5jdGlvbiB3aGljaCBsZXRzIHlvdSBhdm9pZCBpbmZpbml0ZSByZWNvbXB1dGF0aW9uIGxvb3BzIHRoYXQgY2FuIG90aGVyd2lzZSBiZVxuICAgICAgdHJpZ2dlcmVkIGJ5IHRoZSB2aXNpYmlsaXR5IGNoZWNrcy4gRm9yIHRoaXMgcmVhc29uLCBpdCdzIHR5cGljYWxseSBhIGdvb2QgaWRlYSB0b1xuICAgICAgYXZvaWQgaGF2aW5nIHNpbXBsZSBjbG9zdXJlcyBzdG9yZWQgaW4gdGhlIG1vZGVsLlxuXG4gICAgICBUaGF0IHNhaWQsIGl0IGRvZXMgd29yayBpZiB5b3UgcHV0IHBoeXNfZXF1YWwgaW4gZm9yIHRoZSBjdXRvZmYuICopXG4gIHZhbCBjdXRvZmYgOiB0IC0+IHQgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjdGlvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgdHlwZSBTdGF0ZSA9IHNpZ1xuICAoKiogUmVwcmVzZW50cyB0aGUgaW1wZXJhdGl2ZSBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYW4gYXBwbGljYXRpb24sIHR5cGljYWxseSB1c2VkIGZvclxuICAgICAgaG91c2luZyB0aGluZ3MgbGlrZSBjb21tdW5pY2F0aW9uIEFzeW5jLVJQQyBjb25uZWN0aW9ucy4gKilcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgKCoqIFtvbl9zdGFydHVwXSBpcyBjYWxsZWQgb25jZSwgcmlnaHQgYWZ0ZXIgdGhlIGluaXRpYWwgRE9NIGlzIHNldCB0byB0aGUgdmlldyB0aGF0XG4gICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRvaW5nIHRoaW5ncyBsaWtlIHN0YXJ0aW5nIHVwXG4gICAgICBhc3luYyBwcm9jZXNzZXMuICBOb3RlIHRoYXQgdGhpcyBwYXJ0IG9mIHRoZSBjb21wdXRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IGFueVxuICAgICAgaW5jcmVtZW50YWxpdHksIHNpbmNlIGl0J3Mgb25seSBydW4gb25jZS4gKilcbiAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgKCoqIFtjcmVhdGVdIGlzIGEgZnVuY3Rpb24gdGhhdCBpbmNyZW1lbnRhbGx5IGNvbnN0cnVjdHMgYSB7IUNvbXBvbmVudH0uIE5vdGUgdGhhdCBhXG4gICAgICBbQ29tcG9uZW50XSBzdXBwb3J0cyBmdW5jdGlvbnMgbGlrZSBbYXBwbHlfYWN0aW9uXSwgd2hpY2ggcmV0dXJuIGEgbmV3IFtNb2RlbC50XSxcbiAgICAgIHdpdGhvdXQgdGFraW5nIGEgbW9kZWwgYXMgYW4gZXhwbGljaXQgaW5wdXQuICBUaGUgaW50ZW50IGlzIGZvciBbYXBwbHlfYWN0aW9uXSB0b1xuICAgICAgaGF2ZSBhY2Nlc3MgdG8gdGhlIGN1cnJlbnQgbW9kZWwgdmlhIGl0cyBjb25zdHJ1Y3Rpb25cblxuICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgbWlnaHQgbG9vayBpbiBwcmFjdGljZS5cblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0geyBjb3VudGVyIDogaW50IH0gW0BAZGVyaXZpbmcgZmllbGRzLCBjb21wYXJlXVxuXG4gICAgICAgICAgbGV0IGN1dG9mZiB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPSAwXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHVuaXRcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEluY3JlbWVudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgbGV0IHNob3VsZF9sb2cgXyA9IGZhbHNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBpbml0aWFsX21vZGVsID0geyBNb2RlbC5jb3VudGVyID0gMCB9XG5cbiAgICAgICAgbGV0IG9uX3N0YXJ0dXAgfnNjaGVkdWxlX2FjdGlvbnMgX21vZGVsID1cbiAgICAgICAgICBldmVyeSAoVGltZV9ucy5TcGFuLm9mX3NlYyAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9ucyBbIEFjdGlvbi5JbmNyZW1lbnQgXSk7XG4gICAgICAgICAgRGVmZXJyZWQudW5pdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDpfIH5pbmplY3Q6XyA9XG4gICAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgICAgbGV0JW1hcCBhcHBseV9hY3Rpb24gPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgIGZ1biAoSW5jcmVtZW50IDogQWN0aW9uLnQpIF8gfnNjaGVkdWxlX2FjdGlvbnM6XyAtPlxuICAgICAgICAgICAgICB7IE1vZGVsLmNvdW50ZXIgPSBjb3VudGVyICsgMSB9XG4gICAgICAgICAgYW5kIHZpZXcgPVxuICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID1cbiAgICAgICAgICAgICAgbGV0JW1hcCBjb3VudGVyID0gbW9kZWwgPj58IE1vZGVsLmNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgVmRvbS5Ob2RlLmRpdiBbXSBbIFZkb20uTm9kZS50ZXh0IChJbnQudG9fc3RyaW5nIGNvdW50ZXIpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBWZG9tLk5vZGUuYm9keSBbXSBbIGNvdW50ZXIgXVxuICAgICAgICAgIGFuZCBtb2RlbCA9IG1vZGVsIGluXG4gICAgICAgICAgKCogTm90ZSB0aGF0IHdlIGRvbid0IGluY2x1ZGUgW29uX2Rpc3BsYXldIG9yIFt1cGRhdGVfdmlzaWJpbGl0eV0sIHNpbmNlXG4gICAgICAgICAgICAgdGhlc2UgYXJlIG9wdGlvbmFsIGFyZ3VtZW50cyAqKVxuICAgICAgICAgIENvbXBvbmVudC5jcmVhdGUgfmFwcGx5X2FjdGlvbiBtb2RlbCB2aWV3XG4gICAgICAgIDs7IF19XG5cbiAgICAgIFRoZSBmdWxsIGNvZGUgZm9yIHRoaXMgZXhhbXBsZSBjYW4gYmUgZm91bmQgaW4gZXhhbXBsZXMvY291bnRlci5cbiAgKilcbiAgdmFsIGNyZWF0ZVxuICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgKCoqIFtvbGRfbW9kZWxdIGNvbnRhaW5zIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBtb2RlbCAqKVxuICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICgqKiBbaW5qZWN0XSBnaXZlcyB5b3UgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGV2ZW50IGhhbmRsZXJzIGluIHRoZSB2aXJ0dWFsIERPTS4gSW5cbiAgICAgICAgeW91ciBldmVudCBoYW5kbGVyLCBjYWxsIHRoaXMgZnVuY3Rpb24gb24gdGhlIGFjdGlvbiB5b3Ugd291bGQgbGlrZSB0b1xuICAgICAgICBzY2hlZHVsZS4gVmlydHVhbCBET00gd2lsbCBhdXRvbWF0aWNhbGx5IGRlbGVnYXRlIHRoYXQgYWN0aW9uIGJhY2sgdG8gdGhlXG4gICAgICAgIFtTdGFydF9hcHBdIG1haW4gbG9vcC4gKilcbiAgICAtPiAoQWN0aW9uLnQsIE1vZGVsLnQsIFN0YXRlLnQpIENvbXBvbmVudC50IEluY3IudFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIHR5cGUgKCdzdGF0ZSwgJ21vZGVsLCAnYWN0aW9uKSBzbmFwc2hvdCA9XG4gICAgeyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgICA7IGFwcGx5X2FjdGlvbiA6XG4gICAgICAgICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWwgLT4gJ2FjdGlvbiAtPiAnbW9kZWxcbiAgICA7IHVwZGF0ZV92aXNpYmlsaXR5IDogJ21vZGVsIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbFxuICAgIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiB1bml0XG4gICAgfVxuXG4gIG1vZHVsZSB0eXBlIFNfZm9yX2JvbnNhaSA9IHNpZ1xuICAgIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gICAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICAgIG1vZHVsZSBTdGF0ZSA6IFN0YXRlXG5cbiAgICB2YWwgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gOiBBY3Rpb24udCAtPiBib29sXG4gICAgdmFsIG9uX3N0YXJ0dXAgOiBzY2hlZHVsZV9hY3Rpb246KEFjdGlvbi50IC0+IHVuaXQpIC0+IE1vZGVsLnQgLT4gU3RhdGUudCBEZWZlcnJlZC50XG5cbiAgICB2YWwgY3JlYXRlXG4gICAgICA6ICBNb2RlbC50IEluY3IudFxuICAgICAgLT4gb2xkX21vZGVsOk1vZGVsLnQgSW5jci50XG4gICAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAgIC0+IChTdGF0ZS50LCBNb2RlbC50LCBBY3Rpb24udCkgc25hcHNob3QgSW5jci50XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBSZWN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB0b3AgOiAnYVxuICAgIDsgbGVmdCA6ICdhXG4gICAgOyBib3R0b20gOiAnYVxuICAgIDsgcmlnaHQgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICB7IHRvcCA9IGYgdC50b3A7IGxlZnQgPSBmIHQubGVmdDsgYm90dG9tID0gZiB0LmJvdHRvbTsgcmlnaHQgPSBmIHQucmlnaHQgfVxuICA7O1xuXG4gIGxldCBpbnRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtIHQudG9wXG4gIGxldCBpbnRfd2lkdGggdCA9IHQucmlnaHQgLSB0LmxlZnRcbiAgbGV0IGZsb2F0X2hlaWdodCB0ID0gdC5ib3R0b20gLS4gdC50b3BcbiAgbGV0IGZsb2F0X3dpZHRoIHQgPSB0LnJpZ2h0IC0uIHQubGVmdFxuZW5kXG5cbmxldCByb3VuZF9mbG9hdF9yZWN0ID8ocm91bmQgPSBGbG9hdC5pcm91bmRfbmVhcmVzdF9leG4pID0gUmVjdC5tYXAgfmY6cm91bmRcblxudHlwZSByb3dzX29yX2NvbHVtbnMgPVxuICB8IFJvd3NcbiAgfCBDb2x1bW5zXG5bQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIHZhcmlhbnRzLCBjb21wYXJlXVxuXG5sZXQgaW5uZXJIZWlnaHQgKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lckhlaWdodFxubGV0IGlubmVyV2lkdGggKCkgPSBEb21faHRtbC53aW5kb3cjIy5pbm5lcldpZHRoXG5cbmxldCBlbGVtZW50X2lzX2luX3ZpZXdwb3J0IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBGbG9hdC4oID49ICkgcmVjdCMjLnRvcCAwLlxuICAmJiBGbG9hdC4oID49ICkgcmVjdCMjLmxlZnQgMC5cbiAgJiYgRmxvYXQuKCA8PSApIHJlY3QjIy5ib3R0b20gKEZsb2F0Lm9mX2ludCAoaW5uZXJIZWlnaHQgKCkpKVxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLnJpZ2h0IChGbG9hdC5vZl9pbnQgKGlubmVyV2lkdGggKCkpKVxuOztcblxuKCoqIFNjcm9sbHMgdG8gdGhlIGl0ZW0gbWFya2VkIGFzIFwia2VlcC1pbi12aWV3XCIgKilcbmxldCBzY3JvbGwgPyhpZCA9IFwia2VlcC1pbi12aWV3XCIpICgpID1cbiAgbWF0Y2ggRG9tX2h0bWwuZ2V0RWxlbWVudEJ5SWRfb3B0IGlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBlbHQgLT4gaWYgbm90IChlbGVtZW50X2lzX2luX3ZpZXdwb3J0IGVsdCkgdGhlbiBlbHQjI3Njcm9sbEludG9WaWV3IEpzLl90cnVlXG47O1xuXG4oKiBOb3QgeWV0IHN1cHBvcnRlZCBvbiBDaHJvbWUuICBNYXliZSB3ZSBzaG91bGQgdXNlIGpRdWVyeT9cbiAgIHtbXG4gICAgIGxldCBzY3JvbGxfaW50b192aWV3IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogdW5pdCA9XG4gICAgICAgZWx0IyNzY3JvbGxJbnRvVmlldyAob2JqZWN0JWpzXG4gICAgICAgICB2YWwgYmxvY2sgPSBKcy5zdHJpbmcgXCJzdGFydFwiXG4gICAgICAgICB2YWwgYmVoYXZpb3IgPSBKcy5zdHJpbmcgXCJzbW9vdGhcIlxuICAgICAgIGVuZClcbiAgIF19XG4qKVxuKCogW3ZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbF0gZ2V0cyBib3VuZGluZyByZWN0IG9mIFtlbHRdLiBUaGUgYm91bmRpbmcgcmVjdCBpc1xuICAgcmVsYXRpdmUgdG8gdGhlIHZpZXcgcG9ydCAqKVxubGV0IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCByZWN0ID0gZWx0IyNnZXRCb3VuZGluZ0NsaWVudFJlY3QgaW5cbiAgeyBSZWN0LnRvcCA9IHJlY3QjIy50b3BcbiAgOyBsZWZ0ID0gcmVjdCMjLmxlZnRcbiAgOyBib3R0b20gPSByZWN0IyMuYm90dG9tXG4gIDsgcmlnaHQgPSByZWN0IyMucmlnaHRcbiAgfVxuOztcblxubGV0IHZpZXdwb3J0X3JlY3QgKCkgPVxuICB7IFJlY3QudG9wID0gMDsgbGVmdCA9IDA7IGJvdHRvbSA9IGlubmVySGVpZ2h0ICgpOyByaWdodCA9IGlubmVyV2lkdGggKCkgfVxuOztcblxubGV0IGNsaWVudF9yZWN0X29mX2VsZW1lbnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiBmbG9hdCBSZWN0LnQgPVxuICBsZXQgYm91bmRpbmdfcmVjdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCBlbHQgaW5cbiAgeyBib3VuZGluZ19yZWN0IHdpdGhcbiAgICBib3R0b20gPSBib3VuZGluZ19yZWN0LnRvcCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBib3VuZGluZ19yZWN0LmxlZnQgKy4gRmxvYXQub2ZfaW50IGVsdCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cbmxldCBjbGllbnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwXG4gIDsgbGVmdCA9IDBcbiAgOyBib3R0b20gPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudEhlaWdodFxuICA7IHJpZ2h0ID0gRG9tX2h0bWwuZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQjIy5jbGllbnRXaWR0aFxuICB9XG47O1xuXG5cbigqKiBTaW1wbGUgd3JhcHBlciBmb3IgdGhlIGJpbmFyeS1zZWFyY2ggZnVuY3RvciAgICopXG5sZXQgYmluYXJ5X3NlYXJjaCAodHlwZSBlbHQpIH5sZW5ndGggfmdldCB+Y29tcGFyZSBtb2RlIHggPVxuICBsZXQgbW9kdWxlIEJzID1cbiAgICBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIGVsdCA9IGVsdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHVuaXRcblxuICAgICAgbGV0IGdldCAoKSBuID0gZ2V0IG5cbiAgICAgIGxldCBsZW5ndGggKCkgPSBsZW5ndGhcbiAgICBlbmQpXG4gIGluXG4gIEJzLmJpbmFyeV9zZWFyY2ggKCkgfmNvbXBhcmUgbW9kZSB4XG47O1xuXG4oKiogU2VhcmNoZXMgdGhyb3VnaCBlbGVtZW50cyBpbmRleGVkIGZyb20gWzBdIHRvIFtsZW5ndGggLSAxXS4gKilcbmxldCBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCB+c2VhcmNoX2J5IG1vZGUgbGF5b3V0IHggPVxuICBsZXQgZ2V0ID1cbiAgICBsZXQgbnRoX2VsZW1lbnQgbiA9XG4gICAgICBsZXQgaWQgPSBudGhfZWxlbWVudF9pZCBuIGluXG4gICAgICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkVsZW1lbnQgJXMgbm90IGZvdW5kXCIgaWQgKClcbiAgICAgIHwgU29tZSBlbHQgLT4gZWx0XG4gICAgaW5cbiAgICBsZXQgZmlyc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IDApIGluXG4gICAgbGV0IGxhc3QgPSB2aWV3cG9ydF9yZWN0X29mX2VsZW1lbnQgKG50aF9lbGVtZW50IChsZW5ndGggLSAxKSkgaW5cbiAgICAoKiBDb21wdXRlIHRoZSBuJ3RoIGVsZW1lbnQgaW4gYSBub3JtYWxpemVkIHdheSwgYXMgaWYgdGhlIGluZGV4aW5nIGFsd2F5cyBnb2VzIGluXG4gICAgICAgaW5jcmVhc2luZyBvcmRlciBmcm9tIHRvcCB0b3AgYm90dG9tICopXG4gICAgbGV0IG50aF9lbGVtZW50X25vcm1hbGl6ZWQgbiA9XG4gICAgICBsZXQgaXNfYXNjZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IEZsb2F0LiggPD0gKSBmaXJzdC50b3AgbGFzdC50b3BcbiAgICAgICAgfCBDb2x1bW5zIC0+IEZsb2F0LiggPD0gKSBmaXJzdC5sZWZ0IGxhc3QubGVmdFxuICAgICAgaW5cbiAgICAgIG50aF9lbGVtZW50IChpZiBpc19hc2NlbmRpbmcgdGhlbiBuIGVsc2UgbGVuZ3RoIC0gbiAtIDEpXG4gICAgaW5cbiAgICBmdW4gbiAtPiBzZWFyY2hfYnkgKHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuKSlcbiAgaW5cbiAgYmluYXJ5X3NlYXJjaCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmU6RmxvYXQuY29tcGFyZSBtb2RlIHhcbjs7XG5cbmxldCBmaW5kX3Zpc2libGVfcmFuZ2Ugfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgbGF5b3V0ID1cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGVsZW1lbnRfc2VhcmNoID0gZWxlbWVudF9zZWFyY2ggfmxlbmd0aCB+bnRoX2VsZW1lbnRfaWQgaW5cbiAgICBsZXQgdmlld3BvcnRfcmVjdCA9IHZpZXdwb3J0X3JlY3QgKCkgaW5cbiAgICBsZXQgZmlyc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QuYm90dG9tLCB2aWV3cG9ydF9yZWN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5yaWdodCwgdmlld3BvcnRfcmVjdC5sZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgIGxldCBsYXN0ID1cbiAgICAgIGxldCBzZWFyY2hfYnksIHRhcmdldCA9XG4gICAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIHwgUm93cyAtPiBSZWN0LnRvcCwgdmlld3BvcnRfcmVjdC5ib3R0b21cbiAgICAgICAgfCBDb2x1bW5zIC0+IFJlY3QubGVmdCwgdmlld3BvcnRfcmVjdC5yaWdodFxuICAgICAgaW5cbiAgICAgIGVsZW1lbnRfc2VhcmNoIH5zZWFyY2hfYnkgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGxheW91dCAoRmxvYXQub2ZfaW50IHRhcmdldClcbiAgICBpblxuICAgICgqIEJvdGggW2ZpcnN0XSBhbmQgW2xhc3RdIG5lZWQgdG8gYmUgW1NvbWVdLiBPdGhlcndpc2UsIGZvciBleGFtcGxlIGlmIHRoZSB3aG9sZVxuICAgICAgIHRhYmxlIGlzIGJlbG93IHZpZXcgcG9ydCwgdGhlbiBbZmlyc3RdIHdpbGwgYmUgW1NvbWVdLCBbbGFzdF0gd2lsbCBiZSBbTm9uZV0gKilcbiAgICBPcHRpb24uYm90aCBmaXJzdCBsYXN0KVxuOztcblxubGV0IGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByXG4gICAge2pzfFxuICAgICAgKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG4gICAgICAgIHZhciB3aW4gPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgICAgICB2YXIgcmUgPSAvKGF1dG98c2Nyb2xsKS87XG5cbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IGRvYykge1xuICAgICAgICAgIHJldHVybiBkb2M7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY3VyID0gZWxlbWVudC5wYXJlbnROb2RlO1xuXG4gICAgICAgIHdoaWxlIChjdXIucGFyZW50Tm9kZSkge1xuICAgICAgICAgIHZhciBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKGN1cik7XG5cbiAgICAgICAgICBpZiAocmUudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VyID0gY3VyLnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9jO1xuICAgICAgfSlcbiAgICB8anN9XG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXIgKGVsIDogI0RvbS5ub2RlIEpzLnQpIDogRG9tLm5vZGUgSnMudCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCBnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIFt8IEpzLlVuc2FmZS5pbmplY3QgZWwgfF1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFBlcmZvcm1hbmNlID0gSmF2YXNjcmlwdF9wcm9maWxpbmdcblxubGV0IHRpbWVyX3N0YXJ0IHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZSB0aGVuIFBlcmZvcm1hbmNlLk1hbnVhbC5tYXJrIChzIF4gXCJiZWZvcmVcIik7XG4gIGlmIGRlYnVnIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyN0aW1lIChKcy5zdHJpbmcgcylcbjs7XG5cbmxldCB0aW1lcl9zdG9wIHMgfmRlYnVnIH5wcm9maWxlID1cbiAgaWYgcHJvZmlsZVxuICB0aGVuIChcbiAgICBsZXQgYmVmb3JlID0gcyBeIFwiYmVmb3JlXCIgaW5cbiAgICBsZXQgYWZ0ZXIgPSBzIF4gXCJhZnRlclwiIGluXG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgYWZ0ZXI7XG4gICAgUGVyZm9ybWFuY2UuTWFudWFsLm1lYXN1cmUgfm5hbWU6cyB+c3RhcnQ6YmVmb3JlIH5lbmRfOmFmdGVyKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWVFbmQgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHByaW50X2Vycm9yZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpKSBmbXRcblxubW9kdWxlIFJlcXVlc3RfaWRzIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcblxuICB2YWwgc2V0X29uY2VfZXhuXG4gICAgOiAgdFxuICAgIC0+IGFuaW1hdGlvbl9mcmFtZV9pZDpEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgIC0+IHNldF90aW1lb3V0X2lkOkRvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAtPiB1bml0XG5cbiAgdmFsIGNhbmNlbGxlZCA6IHQgLT4gYm9vbFxuICB2YWwgY2FuY2VsIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBpZHMgPVxuICAgIHwgRW1wdHlcbiAgICB8IENhbmNlbGxlZFxuICAgIHwgSWRzIG9mXG4gICAgICAgIHsgYW5pbWF0aW9uX2ZyYW1lX2lkIDogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcbiAgICAgICAgOyBzZXRfdGltZW91dF9pZCA6IERvbV9odG1sLnRpbWVvdXRfaWRcbiAgICAgICAgfVxuXG4gIHR5cGUgdCA9IGlkcyByZWZcblxuICBsZXQgY3JlYXRlICgpIDogdCA9IHJlZiBFbXB0eVxuXG4gIGxldCBzZXRfb25jZV9leG4gKHQgOiB0KSB+YW5pbWF0aW9uX2ZyYW1lX2lkIH5zZXRfdGltZW91dF9pZCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+XG4gICAgICAoKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgbGV0J3MgYmUgZGVmZW5zaXZlLiAqKVxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZFxuICAgIHwgRW1wdHkgLT4gdCA6PSBJZHMgeyBhbmltYXRpb25fZnJhbWVfaWQ7IHNldF90aW1lb3V0X2lkIH1cbiAgICB8IElkcyBfIC0+IGludmFsaWRfYXJnIFwicmVxdWVzdF9pZHMgYWxyZWFkeSBzZXRcIlxuICA7O1xuXG4gIGxldCBjYW5jZWxsZWQgeCA9XG4gICAgbWF0Y2ggIXggd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+IHRydWVcbiAgICB8IEVtcHR5IHwgSWRzIF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgY2FuY2VsICh0IDogdCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IENhbmNlbGxlZCAtPiAoKVxuICAgIHwgRW1wdHkgLT4gdCA6PSBDYW5jZWxsZWRcbiAgICB8IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfSAtPlxuICAgICAgRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBhbmltYXRpb25fZnJhbWVfaWQ7XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCBzZXRfdGltZW91dF9pZDtcbiAgICAgIHQgOj0gQ2FuY2VsbGVkXG4gIDs7XG5lbmRcblxuKCoqIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gbm90aWZpZXMgdGhlIGJyb3dzZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBkbyBzb21lXG4gICAgY29tcHV0YXRpb24gYmVmb3JlIHRoZSBuZXh0IHJlcGFpbnQuIEJlY2F1c2UgdGhpcyBuZWVkcyB0byBvY2N1ciBpbiB0aGUgc2FtZVxuICAgIHN5bmNocm9ub3VzIGNhbGwgKGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgcmVwYWludCksIHJldHVybmluZyBhIERlZmVycmVkLnQgd2lsbCBub3RcbiAgICB3b3JrLiBJbnN0ZWFkLCB5b3UgcGFzcyBpbiBhIGpvYiB0byBiZSBydW4gYmVmb3JlIHRoZSByZXBhaW50LlxuXG4gICAgTm90ZSB0aGF0IGlmIFtjYWxsYmFja10gY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyB3b3JrIGJlZm9yZSBkb2luZyBET00gY2hhbmdlcywgdGhvc2VcbiAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXBhaW50IGFuZCB3aWxsIGJlIHNhdmVkIHVudGlsIHRoZSBmb2xsb3dpbmcgb25lLlxuXG4gICAgV2hlbiB0aGUgdGFiIGlzIGluIHRoZSBiYWNrZ3JvdW5kLCB0aGUgYnJvd3NlcnMgbmF0aXZlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmdW5jdGlvblxuICAgIHdpbGwgbmV2ZXIgY2FsbCB0aGUgY2FsbGJhY2ssIHNvIGluIG9yZGVyIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgZXZlbnRzLCB3ZSBzZXQgYW5cbiAgICBhbHRlcm5hdGUgc2V0VGltZW91dCBhdCAxIHNlY29uZC5cbiopXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2sgPVxuICAoKiBXZSBjYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgdG8gdXNlIGl0IGxhdGVyIHdoZW4gaGFuZGxpbmcgY2FsbGJhY2tzIGZyb21cbiAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLCBzaW5jZSBleGNlcHRpb25zIHJhaXNlZCB0byB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgZ28gdGhyb3VnaFxuICAgICBvdXIgb3JkaW5hcnkgQXN5bmMgbW9uaXRvci4gKilcbiAgbGV0IGN1cnJlbnRfY29udGV4dCA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSBpblxuICBsZXQgcmVxdWVzdF9pZHMgPSBSZXF1ZXN0X2lkcy5jcmVhdGUgKCkgaW5cbiAgbGV0IGNhbGxiYWNrICgpID1cbiAgICBpZiBSZXF1ZXN0X2lkcy5jYW5jZWxsZWQgcmVxdWVzdF9pZHNcbiAgICB0aGVuICgpXG4gICAgZWxzZSAoXG4gICAgICBSZXF1ZXN0X2lkcy5jYW5jZWwgcmVxdWVzdF9pZHM7XG4gICAgICBsZXQgY2FsbGJhY2tfcmVzdWx0ID1cbiAgICAgICAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci53aXRoaW5fY29udGV4dCBjdXJyZW50X2NvbnRleHQgY2FsbGJhY2tcbiAgICAgIGluXG4gICAgICBpZ25vcmUgKGNhbGxiYWNrX3Jlc3VsdCA6ICh1bml0LCB1bml0KSBSZXN1bHQudCkpXG4gIGluXG4gIGxldCBhbmltYXRpb25fZnJhbWVfaWQgPVxuICAgIGxldCBhbmltYXRpb25fY2FsbGJhY2sgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBjYWxsYmFjayAoKSkgaW5cbiAgICBEb21faHRtbC53aW5kb3cjI3JlcXVlc3RBbmltYXRpb25GcmFtZSBhbmltYXRpb25fY2FsbGJhY2tcbiAgaW5cbiAgbGV0IHNldF90aW1lb3V0X2lkID1cbiAgICBsZXQgdGltZW91dF9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgICgqIDEwMDAgbXMgPSAxczsgIENob3NlbiBiZWNhdXNlIGJhY2tncm91bmRlZCB0YW5nbGUgc2VuZHMgcmVxdWVzdHNcbiAgICAgICBhdCBhcHByb3hpbWF0ZWx5IHRoaXMgcmF0ZS4gKilcbiAgICBsZXQgdGltZW91dCA9IDEwMDAuMCBpblxuICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCB0aW1lb3V0X2NhbGxiYWNrIHRpbWVvdXRcbiAgaW5cbiAgUmVxdWVzdF9pZHMuc2V0X29uY2VfZXhuIHJlcXVlc3RfaWRzIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkXG47O1xuXG4oKiogVGhlIEpzX29mX29jYW1sIHR5cGUgRG9tX2h0bWwuZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIGNvcnJlY3Qgb3B0aW9ucyBmb3JcbiAgICB0aGVpciBgZm9jdXNgIG1ldGhvZC4gQ2FzdCB0byB0aGlzIGluIG9yZGVyIHRvIHdvcmsgYXJvdW5kIHRoaXMgYnVnLiAgKilcbnR5cGUgZm9jdXNhYmxlID1cbiAgPCBmb2N1cyA6IDwgcHJldmVudFNjcm9sbCA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wID4gSnMudCAtPiB1bml0IEpzLm1ldGggPlxuXG5sZXQgYXNfZm9jdXNhYmxlIDogRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IGZvY3VzYWJsZSBKcy50ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG4oKiogW1Zpc2liaWxpdHldIGVuY2Fwc3VsYXRlcyB0aGUgZGlydHlpbmcgYW5kIGNsZWFuaW5nIG9mIHRoZSB2aXNpYmlsaXR5IGZsYWdcblxuICAgIFRoZSB2aWV3cG9ydCBzdGFydHMgb3V0IGRpcnR5LiBXaGVuIHdlIGxvb2sgYXQgdGhlIERPTSB0byBjb21wdXRlIHdoYXQgaXMgdmlzaWJsZSBieVxuICAgIGNhbGxpbmcgW3VwZGF0ZV92aXNpYmlsaXR5XSwgdGhlIHZpZXdwb3J0IHRoZW4gYmVjb21lcyBjbGVhbi4gQW55IHRpbWUgdGhlIHVzZXJcbiAgICBzY3JvbGxzIG91ciBwYWdlIG9yIHJlc2l6ZXMgdGhlIHdpbmRvdywgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4uIElmIHdlIHVwZGF0ZVxuICAgIHRoZSBET00sIHRoZSB2aWV3cG9ydCBiZWNvbWVzIGRpcnR5IGFnYWluIGJlY2F1c2UgYSBET00gdXBkYXRlIGNvdWxkIGNhdXNlIGEgcmVmbG93LFxuICAgIG1vdmluZyB0aGUgZWxlbWVudHMgdGhhdCBhcmUgdmlzaWJsZS5cblxuICAgIFdlIGhhdmUgaW1wbGVtZW50ZWQgdGhpcyBhcyBhIGZsYWcgaW5zdGVhZCBvZiByZXF1aXJpbmcgdGhlIHVzZXJzIHRvIHNlbmQgYW4gYWN0aW9uIG9uXG4gICAgc2Nyb2xsIGJlY2F1c2UgaXQgd291bGQgbWFrZSBubyBzZW5zZSB0byBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IG9uIHRoZSB2aXJ0dWFsLWRvbVxuICAgIHdoZW4gdGhlIHZpcnR1YWwtZG9tIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgZG9tIChhcyBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAgW2FwcGx5X2FjdGlvbnNdKS4gKilcbm1vZHVsZSBWaXNpYmlsaXR5IDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGVfYXNfZGlydHkgOiB1bml0IC0+IHRcbiAgdmFsIG1hcmtfY2xlYW4gOiB0IC0+IHVuaXRcbiAgdmFsIG1hcmtfZGlydHkgOiB0IC0+IHVuaXRcbiAgdmFsIGlzX2RpcnR5IDogdCAtPiBib29sXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBtdXRhYmxlIHdoZW5fZGlydHkgOiB1bml0IEl2YXIudCB9XG5cbiAgbGV0IGNyZWF0ZV9hc19kaXJ0eSAoKSA9IHsgd2hlbl9kaXJ0eSA9IEl2YXIuY3JlYXRlX2Z1bGwgKCkgfVxuICBsZXQgbWFya19kaXJ0eSB0ID0gSXZhci5maWxsX2lmX2VtcHR5IHQud2hlbl9kaXJ0eSAoKVxuICBsZXQgaXNfZGlydHkgdCA9IEl2YXIuaXNfZnVsbCB0LndoZW5fZGlydHlcbiAgbGV0IG1hcmtfY2xlYW4gdCA9IGlmIGlzX2RpcnR5IHQgdGhlbiB0LndoZW5fZGlydHkgPC0gSXZhci5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgTG9nZ2luZ19maWx0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0cmluZ19ibGFuZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgQmxhbmcudCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgfCBBbGxcbiAgICB8IE5vbmVcbiAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBvZiBTdHJpbmdfYmxhbmcudFxuICAgIHwgQ3VzdG9tX2ZpbHRlciBvZiAoU2V4cC50IC0+IGJvb2wpXG5lbmRcblxubW9kdWxlIERlYnVnX2ZsYWdzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICB2YWwgaW5pdF9hcHBcbiAgICA6ICBhcHBfaWQ6c3RyaW5nXG4gICAgLT4gZmlsdGVyX25hbWVzOlN0cmluZy5TZXQudFxuICAgIC0+IGRlYnVnOmJvb2xcbiAgICAtPiBzdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbG9nZ2luZ19maWx0ZXIgOiB1bml0IC0+IExvZ2dpbmdfZmlsdGVyLnRcbiAgICA7IHNob3VsZF9wcm9maWxlIDogdW5pdCAtPiBib29sXG4gICAgOyBzaG91bGRfZGVidWcgOiB1bml0IC0+IGJvb2xcbiAgICB9XG5cbiAgbW9kdWxlIEFwcF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbHRlcl9uYW1lcyA6IFN0cmluZy5TZXQudFxuICAgICAgOyBsb2dnaW5nX2ZpbHRlciA6IExvZ2dpbmdfZmlsdGVyLnQgcmVmXG4gICAgICA7IHNob3VsZF9wcm9maWxlIDogYm9vbCByZWZcbiAgICAgIDsgc2hvdWxkX2RlYnVnIDogYm9vbCByZWZcbiAgICAgIH1cblxuICAgIGxldCBzZXRfbG9nZ2luZ19maWx0ZXIgdCB+bG9nZ2luZ19maWx0ZXIgPSB0LmxvZ2dpbmdfZmlsdGVyIDo9IGxvZ2dpbmdfZmlsdGVyXG4gICAgbGV0IHNldF9zaG91bGRfcHJvZmlsZSB0IH5zaG91bGRfcHJvZmlsZSA9IHQuc2hvdWxkX3Byb2ZpbGUgOj0gc2hvdWxkX3Byb2ZpbGVcbiAgICBsZXQgc2V0X3Nob3VsZF9kZWJ1ZyB0IH5zaG91bGRfZGVidWcgPSB0LnNob3VsZF9kZWJ1ZyA6PSBzaG91bGRfZGVidWdcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBnbG9iYWwgPSBvYmplY3RcbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZ0N1c3RvbSA6XG4gICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcExvZ2dpbmcgOiAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BQcm9maWxpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0RGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzYXZlSW5jcmVtZW50YWxHcmFwaCA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzICgpID1cbiAgICBsZXQgd2l0aF9hcHBfaWRfb3B0IHVwZGF0ZV9zdGF0ZSBhcHBfaWRfb3B0ID1cbiAgICAgIGxldCBhcHBfaWRfb3B0ID0gSnMuT3B0LnRvX29wdGlvbiBhcHBfaWRfb3B0IHw+IE9wdGlvbi5tYXAgfmY6SnMudG9fc3RyaW5nIGluXG4gICAgICBtYXRjaCBhcHBfaWRfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBIYXNodGJsLml0ZXIgYXBwX3N0YXRlcyB+Zjp1cGRhdGVfc3RhdGVcbiAgICAgIHwgU29tZSBhcHBfaWQgLT5cbiAgICAgICAgKG1hdGNoIEhhc2h0YmwuZmluZCBhcHBfc3RhdGVzIGFwcF9pZCB3aXRoXG4gICAgICAgICB8IFNvbWUgc3RhdGUgLT4gdXBkYXRlX3N0YXRlIHN0YXRlXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBhcHAgd2l0aCBpZCBcXFwiJXNcXFwiLiBWYWxpZCBhcHAgaWRzIGFyZTogJXNcIlxuICAgICAgICAgICAgIGFwcF9pZFxuICAgICAgICAgICAgIChIYXNodGJsLmtleXMgYXBwX3N0YXRlcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCkpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIGxvZ2dpbmdfZmlsdGVyID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlciB+bG9nZ2luZ19maWx0ZXIpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9wcm9maWxlIHNob3VsZF9wcm9maWxlID1cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoQXBwX3N0YXRlLnNldF9zaG91bGRfcHJvZmlsZSB+c2hvdWxkX3Byb2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Nob3VsZF9kZWJ1ZyBzaG91bGRfZGVidWcgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9kZWJ1ZyB+c2hvdWxkX2RlYnVnKVxuICAgIGluXG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQWxsIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBBbGwpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ1xuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBibGFuZ19zdHIgLT5cbiAgICAgIGxldCBibGFuZ19zdHIgPSBKcy50b19zdHJpbmcgYmxhbmdfc3RyIGluXG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKGZ1biBhcHBfc3RhdGUgLT5cbiAgICAgICAgbGV0IGJsYW5nID0gQmxhbmcudF9vZl9zZXhwIFN0cmluZy50X29mX3NleHAgKFNleHAub2Zfc3RyaW5nIGJsYW5nX3N0cikgaW5cbiAgICAgICAgbGV0IGludmFsaWRfbmFtZXMgPVxuICAgICAgICAgIEJsYW5nLmZvbGQgYmxhbmcgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGludmFsaWRfbmFtZXMgbmFtZSAtPlxuICAgICAgICAgICAgaWYgU2V0Lm1lbSBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIG5hbWVcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9uYW1lc1xuICAgICAgICAgICAgZWxzZSBTZXQuYWRkIGludmFsaWRfbmFtZXMgbmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU2V0LmlzX2VtcHR5IGludmFsaWRfbmFtZXNcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFwcF9zdGF0ZS5zZXRfbG9nZ2luZ19maWx0ZXJcbiAgICAgICAgICAgIGFwcF9zdGF0ZVxuICAgICAgICAgICAgfmxvZ2dpbmdfZmlsdGVyOihOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgIFwiVW5hYmxlIHRvIGZpbmQgbmFtZWQgZmlsdGVyKHMpOiAlcy4gVmFsaWQgbmFtZXMgYXJlOlxcbiVzXCJcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBpbnZhbGlkX25hbWVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KVxuICAgICAgICAgICAgKFNldC50b19saXN0IGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdCkpKTtcbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdDdXN0b21cbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gZmlsdGVyIC0+XG4gICAgICBsZXQgZmlsdGVyIGFjdGlvbl9zZXhwID1cbiAgICAgICAgYWN0aW9uX3NleHAgfD4gU2V4cC50b19zdHJpbmcgfD4gSnMuc3RyaW5nIHw+IGZpbHRlciB8PiBKcy50b19ib29sXG4gICAgICBpblxuICAgICAgdXBkYXRlX2xvZ2dpbmdfZmlsdGVyIChDdXN0b21fZmlsdGVyIGZpbHRlcikpO1xuICAgIGdsb2JhbCMjLnN0b3BMb2dnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciBOb25lKTtcbiAgICBnbG9iYWwjIy5zdGFydFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcFByb2ZpbGluZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnN0YXJ0RGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgdHJ1ZSk7XG4gICAgZ2xvYmFsIyMuc3RvcERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zYXZlSW5jcmVtZW50YWxHcmFwaFxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biAoKSAtPlxuICAgICAgbGV0IGZpbGVuYW1lID0gXCJjdXJyZW50X2luY3JfZG9tX2RvdF9ncmFwaC5kb3RcIiBpblxuICAgICAgVWlfaW5jci5zYXZlX2RvdF90b19maWxlIGZpbGVuYW1lO1xuICAgICAgbGV0IGNvbnRlbnRzID0gSW5fY2hhbm5lbC5yZWFkX2FsbCBmaWxlbmFtZSBpblxuICAgICAgVmRvbV9maWxlX2Rvd25sb2FkLmNyZWF0ZSB+ZmlsZW5hbWUgfm1pbWV0eXBlOlwicGxhaW4vdGV4dFwiIH5jb250ZW50c1xuICAgICAgfD4gVmRvbV9maWxlX2Rvd25sb2FkLnRyaWdnZXIpO1xuICAgIGxldCBncm91cCBzIH5mID1cbiAgICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBDb2xsYXBzZWQgKEpzLnN0cmluZyBzKTtcbiAgICAgIGYgKCk7XG4gICAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kXG4gICAgaW5cbiAgICBsZXQgbG9nIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIHMpIGluXG4gICAgZ3JvdXAgXCJJbmNyX2RvbSAvIEJvbnNhaSBDb25zb2xlXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgZ3JvdXAgXCJBY3Rpb24gTG9nZ2luZ1wiIH5mOihmdW4gKCkgLT5cbiAgICAgICAgbG9nXG4gICAgICAgICAge3xMb2dnaW5nIHByaW50cyBhY3Rpb24gaW5mbyB0byB0aGUgY29uc29sZS4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gVG8gc3RhcnQgbG9nZ2luZywgdHlwZSBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbnN0YXJ0TG9nZ2luZ0FsbChbYXBwX2lkXSkgLSBsb2cgYWxsIGFjdGlvbnNcbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgbmFtZWQgZmlsdGVyIFtmaWx0ZXJfbmFtZV1cbnN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZV9ibGFuZyBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgYmxhbmcgb2YgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXG5zdGFydExvZ2dpbmdDdXN0b20oZmlsdGVyIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBjdXN0b20gZnVuY3Rpb24gW2ZpbHRlcl0gZnJvbSBhIHN0cmluZyAodGhlIGFjdGlvbiBzZXhwKSB0byBhIGJvb2xcblRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pfH0pO1xuICAgICAgZ3JvdXAgXCJBY3Rpb24gUHJvZmlsaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fFByb2ZpbGluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxuVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcblRvIHN0b3AgcHJvZmlsaW5nLCB0eXBlOiBzdG9wUHJvZmlsaW5nKFthcHBfaWRdKXx9KTtcbiAgICAgIGdyb3VwIFwiRGVidWdnaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fERlYnVnZ2luZyBwcmludHMgdGltaW5nIGluZm8gdG8gdGhlIGNvbnNvbGUuIEl0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhlIGFwcC5cblRvIHN0YXJ0IGRlYnVnZ2luZywgdHlwZTogc3RhcnREZWJ1Z2dpbmcoW2FwcF9pZF0pXG5UbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcblxuW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgdGhlIHBhZ2Ugb25seSBoYXMgb25lIGFwcCBvciB5b3Ugd2FudCB0byBhcHBseSB0aGUgYWN0aW9uIHRvIGFsbCBhcHBzLCB5b3UgY2FuIHBhc3MgaW4gW251bGxdIChvciBmb3Igc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucywgb21pdCBpdCBhbHRvZ2V0aGVyKS58fSk7XG4gICAgICBsb2cgYXBwX2ZpbHRlcnMpXG4gIDs7XG5cbiAgbGV0IGluaXRfYXBwIH5hcHBfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3AgPVxuICAgIGxldCBhcHBfaW5pdF9tZXNzYWdlID1cbiAgICAgIHNwcmludGZcbiAgICAgICAge3xBdmFpbGFibGUgbG9nZ2luZyBmaWx0ZXJzIGZvciBcIiVzXCI6XG4lc3x9XG4gICAgICAgIGFwcF9pZFxuICAgICAgICAoU2V0LnRvX2xpc3QgZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgaW5cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgfmFwcF9maWx0ZXJzOmFwcF9pbml0X21lc3NhZ2UgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSlcbiAgICBlbHNlIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgYXBwX2luaXRfbWVzc2FnZSk7XG4gICAgbGV0IGxvZ2dpbmdfZmlsdGVyID0gcmVmIExvZ2dpbmdfZmlsdGVyLk5vbmUgaW5cbiAgICBsZXQgc2hvdWxkX3Byb2ZpbGUgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgc2hvdWxkX2RlYnVnID0gcmVmIGRlYnVnIGluXG4gICAgSGFzaHRibC5zZXRcbiAgICAgIGFwcF9zdGF0ZXNcbiAgICAgIH5rZXk6YXBwX2lkXG4gICAgICB+ZGF0YTp7IGZpbHRlcl9uYW1lczsgbG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfTtcbiAgICB1cG9uIHN0b3AgKGZ1biAoKSAtPiBIYXNodGJsLnJlbW92ZSBhcHBfc3RhdGVzIGFwcF9pZCk7XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA9IChmdW4gKCkgLT4gIWxvZ2dpbmdfZmlsdGVyKVxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgPSAoZnVuICgpIC0+ICFzaG91bGRfcHJvZmlsZSlcbiAgICA7IHNob3VsZF9kZWJ1ZyA9IChmdW4gKCkgLT4gIXNob3VsZF9kZWJ1ZylcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQWRkcyB0aGUgbmVjZXNzYXJ5IGF0dHJpYnV0ZSB0byB0aGUgcm9vdCBub2RlIHNvIHRoYXQgaXQgY2FuIGludGVyY2VwdFxuICAga2V5Ym9hcmQgZXZlbnRzLlxuICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleCAqKVxubGV0IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCByb290ID1cbiAgbGV0IG9wZW4gVmRvbSBpblxuICBsZXQgc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCA9XG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQuYXR0cnMgfD4gQXR0ci5FeHBlcnQuY29udGFpbnNfbmFtZSBcImRpc2FibGVfdGFiX2luZGV4XCIgfD4gbm90XG4gIGluXG4gIG1hdGNoIChyb290IDogTm9kZS50KSB3aXRoXG4gIHwgRWxlbWVudCBlbGVtZW50IHdoZW4gc2hvdWxkX2FkZF9mb2N1c19tb2RpZmllcnMgZWxlbWVudCAtPlxuICAgIGxldCBhZGRfbmV3X2F0dHJzIGF0dHJzID1cbiAgICAgIFZkb20uQXR0ci4oc3R5bGUgKENzc19nZW4ub3V0bGluZSB+c3R5bGU6YE5vbmUgKCkpIEAgdGFiaW5kZXggMCBAIGF0dHJzKVxuICAgIGluXG4gICAgZWxlbWVudCB8PiBOb2RlLkVsZW1lbnQubWFwX2F0dHJzIH5mOmFkZF9uZXdfYXR0cnMgfD4gTm9kZS5FbGVtZW50XG4gIHwgXyAtPiByb290XG47O1xuXG5sZXQgcmVjIGdldF90YWdfbmFtZSAobm9kZSA6IFZkb20uTm9kZS50KSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IEVsZW1lbnQgZSAtPiBTb21lIChWZG9tLk5vZGUuRWxlbWVudC50YWcgZSlcbiAgfCBMYXp5IHsgdDsgXyB9IC0+IGdldF90YWdfbmFtZSAoTGF6eS5mb3JjZSB0KVxuICB8IE5vbmUgfCBUZXh0IF8gfCBXaWRnZXQgXyAtPiBOb25lXG47O1xuXG5sZXQgc3RhcnRfYm9uc2FpXG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlByaXZhdGUuU19mb3JfYm9uc2FpXG4gICAgICAgIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWxcbiAgICAgICAgIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gICgqIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgc28gZmluZSB0byBkby4gKilcbiAgQXN5bmNfanMuaW5pdCAoKTtcbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JWJpbmQgKCkgPSBBc3luY19qcy5kb2N1bWVudF9sb2FkZWQgKCkgaW5cbiAgICAgbGV0IG1vZGVsX3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWwgPSBJbmNyLlZhci53YXRjaCBtb2RlbF92IGluXG4gICAgIGxldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92ID0gSW5jci5WYXIuY3JlYXRlIGluaXRpYWxfbW9kZWwgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5ID0gSW5jci5WYXIud2F0Y2ggbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiBpblxuICAgICBsZXQgY3V0b2ZmID1cbiAgICAgICBJbmNyLkN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT5cbiAgICAgICAgIEFwcC5Nb2RlbC5jdXRvZmYgb2xkX3ZhbHVlIG5ld192YWx1ZSlcbiAgICAgaW5cbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsIGN1dG9mZjtcbiAgICAgSW5jci5zZXRfY3V0b2ZmIG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5IGN1dG9mZjtcbiAgICAgbGV0IGFjdGlvbl9xdWV1ZSA9IERlcXVlLmNyZWF0ZSAoKSBpblxuICAgICBsZXQgbW9kdWxlIEV2ZW50ID1cbiAgICAgICBWZG9tLkVmZmVjdC5EZWZpbmUgKHN0cnVjdFxuICAgICAgICAgbW9kdWxlIEFjdGlvbiA9IEFwcC5BY3Rpb25cblxuICAgICAgICAgbGV0IGhhbmRsZSBhY3Rpb24gPSBEZXF1ZS5lbnF1ZXVlX2JhY2sgYWN0aW9uX3F1ZXVlIGFjdGlvblxuICAgICAgIGVuZClcbiAgICAgaW5cbiAgICAgbGV0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LmNyZWF0ZV9hc19kaXJ0eSAoKSBpblxuICAgICBsZXQgdmlld3BvcnRfY2hhbmdlZCAoKSA9IFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5IGluXG4gICAgICgqIFRoaXMgcmVnaXN0ZXJzIHRoZSBbdmlld3BvcnRfY2hhbmdlZF0gaGFuZGxlciB3aXRoIFZpcnR1YWxfZG9tLiBJZiBldmVudCBoYW5kbGVyc1xuICAgICAgICB1c2UgdGhlIFtWZG9tLkVmZmVjdC5WaWV3cG9ydF9jaGFuZ2VkXSBldmVudCwgd2UgYXJlIG5vdGlmaWVkLiAqKVxuICAgICBsZXQgbW9kdWxlIF8gPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZV92aXNpYmlsaXR5IChzdHJ1Y3RcbiAgICAgICAgIGxldCBoYW5kbGUgPSB2aWV3cG9ydF9jaGFuZ2VkXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgZ2V0X3ZpZXcsIGdldF9hcHBseV9hY3Rpb24sIGdldF91cGRhdGVfdmlzaWJpbGl0eSwgZ2V0X29uX2Rpc3BsYXkgPVxuICAgICAgIGxldCBvYnMgPVxuICAgICAgICAgSW5jci5vYnNlcnZlXG4gICAgICAgICAgIChBcHAuY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6bW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgfmluamVjdDpFdmVudC5pbmplY3QpXG4gICAgICAgaW5cbiAgICAgICBsZXQgZmV0Y2ggKGYgOiBfIEFwcF9pbnRmLlByaXZhdGUuc25hcHNob3QgLT4gXykgKCkgPVxuICAgICAgICAgZiAoSW5jci5PYnNlcnZlci52YWx1ZV9leG4gb2JzKVxuICAgICAgIGluXG4gICAgICAgKCBmZXRjaCAoZnVuIHsgdmlldzsgXyB9IC0+IHZpZXcpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgYXBwbHlfYWN0aW9uOyBfIH0gLT4gYXBwbHlfYWN0aW9uKVxuICAgICAgICwgZmV0Y2ggKGZ1biB7IHVwZGF0ZV92aXNpYmlsaXR5OyBfIH0gLT4gdXBkYXRlX3Zpc2liaWxpdHkpXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgb25fZGlzcGxheTsgXyB9IC0+IG9uX2Rpc3BsYXkpIClcbiAgICAgaW5cbiAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgIGxldCBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPVxuICAgICAgIChcImFsbFwiLCBGbi5jb25zdCB0cnVlKSA6OiAoXCJub25lXCIsIEZuLmNvbnN0IGZhbHNlKSA6OiBuYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICAgICB8PiBTdHJpbmcuVGFibGUub2ZfYWxpc3RfZXhuXG4gICAgIGluXG4gICAgIGxldCB7IERlYnVnX2ZsYWdzLmxvZ2dpbmdfZmlsdGVyOyBzaG91bGRfcHJvZmlsZTsgc2hvdWxkX2RlYnVnIH0gPVxuICAgICAgIGxldCBmaWx0ZXJfbmFtZXMgPSBIYXNodGJsLmtleXMgbmFtZWRfbG9nZ2luZ19maWx0ZXJzIHw+IFN0cmluZy5TZXQub2ZfbGlzdCBpblxuICAgICAgIERlYnVnX2ZsYWdzLmluaXRfYXBwIH5hcHBfaWQ6YmluZF90b19lbGVtZW50X3dpdGhfaWQgfmZpbHRlcl9uYW1lcyB+ZGVidWcgfnN0b3BcbiAgICAgaW5cbiAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICBsZXQgaHRtbF9kb20gPSBWZG9tLk5vZGUudG9fZG9tIGh0bWwgaW5cbiAgICAgbGV0IGVsZW0gPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9leG4gYmluZF90b19lbGVtZW50X3dpdGhfaWQgaW5cbiAgICAgbGV0IHBhcmVudCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAoSnMuT3B0LnRvX29wdGlvbiBlbGVtIyMucGFyZW50Tm9kZSkgaW5cbiAgICAgRG9tLnJlcGxhY2VDaGlsZCBwYXJlbnQgaHRtbF9kb20gZWxlbTtcbiAgICAgKCogd2UgbWFrZSBzdXJlIHRvIGNhbGwgW3ZpZXdwb3J0X2NoYW5nZWRdIHdoZW5ldmVyIHRoZSB3aW5kb3cgcmVzaXplcyBvciB0aGUgc2Nyb2xsXG4gICAgICAgIGNvbnRhaW5lciBpbiB3aGljaCBvdXIgSFRNTCBpcyBsb2NhdGVkIGlzIHNjcm9sbGVkLiAqKVxuICAgICBsZXQgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IGV2ZW50X25hbWUgd2hlcmUgPVxuICAgICAgIGlnbm9yZVxuICAgICAgICAgKERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgICB3aGVyZVxuICAgICAgICAgICAgKERvbS5FdmVudC5tYWtlIGV2ZW50X25hbWUpXG4gICAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICB2aWV3cG9ydF9jaGFuZ2VkICgpO1xuICAgICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgICAgSnMuX2ZhbHNlXG4gICAgICAgICAgOiBEb20uZXZlbnRfbGlzdGVuZXJfaWQpXG4gICAgIGluXG4gICAgIGNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCBcInNjcm9sbFwiIChKc19taXNjLmdldF9zY3JvbGxfY29udGFpbmVyIGh0bWxfZG9tKTtcbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwicmVzaXplXCIgRG9tX2h0bWwud2luZG93O1xuICAgICBsZXQlYmluZCBzdGF0ZSA9XG4gICAgICAgQXBwLm9uX3N0YXJ0dXBcbiAgICAgICAgIH5zY2hlZHVsZV9hY3Rpb246KGZ1biBhIC0+IFVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlIChFdmVudC5pbmplY3QgYSkpXG4gICAgICAgICAoSW5jci5WYXIudmFsdWUgbW9kZWxfdilcbiAgICAgaW5cbiAgICAgbGV0IHByZXZfaHRtbCA9IHJlZiBodG1sIGluXG4gICAgIGxldCBwcmV2X2VsdCA9IHJlZiBodG1sX2RvbSBpblxuICAgICBsZXQgcmVmb2N1c19yb290X2VsZW1lbnQgKCkgPVxuICAgICAgIGxldCBlbGVtZW50ID0gIXByZXZfZWx0IGluXG4gICAgICAgKCogSWYgdGhlIGVsZW1lbnQgdG8gZm9jdXMgaXMgYW4gZWxlbWVudCwgY2FzdCBpdCBpbnRvIHRoZVxuICAgICAgICAgIG1vcmUgcGVybWlzc2l2ZSBcImZvY3VzYWJsZVwiIHR5cGUgZGVmaW5lZCBhdCB0aGUgdG9wIG9mXG4gICAgICAgICAgdGhpcyBmaWxlLCBhbmQgdGhlbiBmb2N1cyB0aGF0LiAqKVxuICAgICAgIERvbV9odG1sLkNvZXJjZVRvLmVsZW1lbnQgZWxlbWVudFxuICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICB8PiBPcHRpb24ubWFwIH5mOmFzX2ZvY3VzYWJsZVxuICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4gZWxlbWVudCAtPlxuICAgICAgICAgZWxlbWVudCMjZm9jdXNcbiAgICAgICAgICAgKG9iamVjdCVqc1xuICAgICAgICAgICAgIHZhbCBwcmV2ZW50U2Nyb2xsID0gSnMuX3RydWVcbiAgICAgICAgICAgZW5kKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0YXJ0IHMgPVxuICAgICAgIHRpbWVyX3N0YXJ0IHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgbGV0IHRpbWVyX3N0b3AgcyA9XG4gICAgICAgdGltZXJfc3RvcCBzIH5kZWJ1Zzooc2hvdWxkX2RlYnVnICgpKSB+cHJvZmlsZTooc2hvdWxkX3Byb2ZpbGUgKCkpXG4gICAgIGluXG4gICAgICgqXG4gICAgICAgIFRha2UgYWN0aW9uIG9uIGFueSBibHVyIGV2ZW50LCByZWZvY3VzaW5nIHRvIHRoZSByb290IG5vZGUgaWYgdGhlIHJlbGF0ZWRUYXJnZXQgaXNcbiAgICAgICAgbnVsbCBvciB1bmRlZmluZWQsIHNpZ25pZnlpbmcgdGhhdCBmb2N1cyB3YXMgbG9zdCBhbmQgd291bGQgb3RoZXJ3aXNlIGJlIHJlc2V0IHRvXG4gICAgICAgIHRoZSBib2R5IG5vZGUuXG5cbiAgICAgICAgVGhlIEpzLl90cnVlIHBhcmFtZXRlciBwcm92aWRlZCB0byBEb20uYWRkRXZlbnRMaXN0ZW5lciBpcyB0aGUgdXNlQ2FwdHVyZVxuICAgICAgICBwYXJhbWV0ZXIgZGVzY3JpYmVkIGhlcmU6XG4gICAgICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFRhcmdldC9hZGRFdmVudExpc3RlbmVyXG4gICAgICopXG4gICAgIGlnbm9yZVxuICAgICBAQCBEb20uYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgIERvbV9odG1sLndpbmRvd1xuICAgICAgICAgIERvbV9odG1sLkV2ZW50LmJsdXJcbiAgICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAoKiBbSnMuVW5zYWZlLipdIGlzIGxpa2UgW09iai5tYWdpY10uIFdlIHNob3VsZCBiZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlXG4gICAgICAgICAgICAgICAgZXhwZWN0LiAqKVxuICAgICAgICAgICAgIGxldCBlXG4gICAgICAgICAgICAgICA6IDwgcmVsYXRlZFRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcCA+IEpzLnRcbiAgICAgICAgICAgICAgID1cbiAgICAgICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IHJlbGF0ZWRfdGFyZ2V0ID0gZSMjLnJlbGF0ZWRUYXJnZXQgaW5cbiAgICAgICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IHJlbGF0ZWRfdGFyZ2V0KSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpO1xuICAgICAgICAgICAgIEpzLl90cnVlKSlcbiAgICAgICAgICBKcy5fdHJ1ZTtcbiAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ICgpID1cbiAgICAgICBWaXNpYmlsaXR5Lm1hcmtfY2xlYW4gdmlzaWJpbGl0eTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfdXBkYXRlX3Zpc2liaWxpdHkgKCkpXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWw7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCJcbiAgICAgaW5cbiAgICAgbGV0IG1heWJlX2xvZ19hY3Rpb24gPVxuICAgICAgIGxldCBzYWZlX2ZpbHRlciB+bmFtZSBmaWx0ZXIgYWN0aW9uID1cbiAgICAgICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZmlsdGVyIGFjdGlvbikgd2l0aFxuICAgICAgICAgfCBPayBzaG91bGRfbG9nIC0+IHNob3VsZF9sb2dcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgIHByaW50X2Vycm9yZiAhXCJFeGNlcHRpb24gcmFpc2VkIGJ5ICVzOiAle0Vycm9yI2h1bX1cIiBuYW1lIGVycjtcbiAgICAgICAgICAgZmFsc2VcbiAgICAgICBpblxuICAgICAgIGxldCBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgPVxuICAgICAgICAgQ29yZS5NZW1vLm9mX2NvbXBhcmFibGVcbiAgICAgICAgICAgKG1vZHVsZSBMb2dnaW5nX2ZpbHRlci5TdHJpbmdfYmxhbmcpXG4gICAgICAgICAgIChmdW4gYmxhbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGZpbHRlciA9IEhhc2h0YmwuZmluZF9leG4gbmFtZWRfbG9nZ2luZ19maWx0ZXJzIGluXG4gICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICAgfm5hbWU6KHNwcmludGYgIVwibmFtZWQgZmlsdGVyIGJsYW5nIFxcXCIle3NleHA6c3RyaW5nIEJsYW5nLnR9XFxcIlwiIGJsYW5nKVxuICAgICAgICAgICAgICAgIChtYXRjaCBibGFuZyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgQmFzZSBuYW1lIC0+IGZpbHRlciBuYW1lXG4gICAgICAgICAgICAgICAgIHwgXyAtPiBmdW4gYWN0aW9uIC0+IEJsYW5nLmV2YWwgYmxhbmcgKGZ1biBuYW1lIC0+IGZpbHRlciBuYW1lIGFjdGlvbikpKVxuICAgICAgIGluXG4gICAgICAgZnVuIGFjdGlvbiAtPlxuICAgICAgICAgbGV0IHNob3VsZF9sb2dfYWN0aW9uID1cbiAgICAgICAgICAgbWF0Y2ggbG9nZ2luZ19maWx0ZXIgKCkgd2l0aFxuICAgICAgICAgICB8IEFsbCAtPiB0cnVlXG4gICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICB8IE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZyAtPiBuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUgYmxhbmcgYWN0aW9uXG4gICAgICAgICAgIHwgQ3VzdG9tX2ZpbHRlciBmaWx0ZXIgLT5cbiAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgfm5hbWU6XCJjdXN0b20gZmlsdGVyXCJcbiAgICAgICAgICAgICAgIChmdW4gYWN0aW9uIC0+IGZpbHRlciAoQXBwLkFjdGlvbi5zZXhwX29mX3QgYWN0aW9uKSlcbiAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgaW5cbiAgICAgICAgIGlmIHNob3VsZF9sb2dfYWN0aW9uXG4gICAgICAgICB0aGVuIEFzeW5jX2pzLmxvZ19zX2FzX3N0cmluZyBbJW1lc3NhZ2UgXCJBY3Rpb25cIiAoYWN0aW9uIDogQXBwLkFjdGlvbi50KV1cbiAgICAgaW5cbiAgICAgbGV0IGFwcGx5X2FjdGlvbiBhY3Rpb24gPVxuICAgICAgIG1heWJlX2xvZ19hY3Rpb24gYWN0aW9uO1xuICAgICAgIGlmIEFwcC5hY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBhY3Rpb25cbiAgICAgICB0aGVuIChcbiAgICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplLWZvci1hY3Rpb25cIjtcbiAgICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCIpXG4gICAgICAgZWxzZSBpZiBzaG91bGRfZGVidWcgKClcbiAgICAgICB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcImFjdGlvbiBhcHBsaWVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIik7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X2FwcGx5X2FjdGlvbiAoKSlcbiAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICAgICAgYWN0aW9uXG4gICAgICAgaW5cbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfdiBuZXdfbW9kZWxcbiAgICAgaW5cbiAgICAgbGV0IHJlYyBhcHBseV9hY3Rpb25zICgpID1cbiAgICAgICBtYXRjaCBEZXF1ZS5kZXF1ZXVlX2Zyb250IGFjdGlvbl9xdWV1ZSB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIGFjdGlvbiAtPlxuICAgICAgICAgYXBwbHlfYWN0aW9uIGFjdGlvbjtcbiAgICAgICAgIGFwcGx5X2FjdGlvbnMgKClcbiAgICAgaW5cbiAgICAgbGV0IHBlcmZvcm1fdXBkYXRlICgpID1cbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgICgqIFRoZSBjbG9jayBpcyBzZXQgb25seSBvbmNlIHBlciBjYWxsIHRvIHBlcmZvcm1fdXBkYXRlLCBzbyB0aGF0IGFsbCBhY3Rpb25zIHRoYXRcbiAgICAgICAgICBvY2N1ciBiZWZvcmUgZWFjaCBkaXNwbGF5IHVwZGF0ZSBvY2N1ciBcImF0IHRoZSBzYW1lIHRpbWUuXCIgKilcbiAgICAgICBsZXQgbm93ID1cbiAgICAgICAgIGxldCBkYXRlID0gbmV3JWpzIEpzLmRhdGVfbm93IGluXG4gICAgICAgICBUaW1lX25zLlNwYW4ub2ZfbXMgZGF0ZSMjZ2V0VGltZSB8PiBUaW1lX25zLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAgICBpblxuICAgICAgIEluY3IuQ2xvY2suYWR2YW5jZV9jbG9jayBJbmNyLmNsb2NrIH50b186bm93O1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInRvdGFsXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIGlmIFZpc2liaWxpdHkuaXNfZGlydHkgdmlzaWJpbGl0eSB0aGVuIHVwZGF0ZV92aXNpYmlsaXR5ICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJ1cGRhdGUgdmlzaWJpbGl0eVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIGFwcGx5X2FjdGlvbnMgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIjtcbiAgICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgICAgbGV0IGh0bWwgPSBvdmVycmlkZV9yb290X2VsZW1lbnQgaHRtbCBpblxuICAgICAgIHRpbWVyX3N0YXJ0IFwiZGlmZlwiO1xuICAgICAgIGxldCBwYXRjaCA9IFZkb20uTm9kZS5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOiFwcmV2X2h0bWwgfmN1cnJlbnQ6aHRtbCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJkaWZmXCI7XG4gICAgICAgaWYgbm90IChWZG9tLk5vZGUuUGF0Y2guaXNfZW1wdHkgcGF0Y2gpIHRoZW4gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHk7XG4gICAgICAgdGltZXJfc3RhcnQgXCJwYXRjaFwiO1xuICAgICAgIGxldCBlbHQgPSBWZG9tLk5vZGUuUGF0Y2guYXBwbHkgcGF0Y2ggIXByZXZfZWx0IGluXG4gICAgICAgdGltZXJfc3RvcCBcInBhdGNoXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgKGdldF9vbl9kaXNwbGF5ICgpKSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGU7XG4gICAgICAgdGltZXJfc3RvcCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICBJbmNyLlZhci5zZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXlfdiAoSW5jci5WYXIudmFsdWUgbW9kZWxfdik7XG4gICAgICAgbGV0IG9sZF90YWdfbmFtZSA9IGdldF90YWdfbmFtZSAhcHJldl9odG1sIGluXG4gICAgICAgbGV0IG5ld190YWdfbmFtZSA9IGdldF90YWdfbmFtZSBodG1sIGluXG4gICAgICAgbGV0IHRhZ3NfdGhlX3NhbWUgPSBPcHRpb24uZXF1YWwgU3RyaW5nLmVxdWFsIG9sZF90YWdfbmFtZSBuZXdfdGFnX25hbWUgaW5cbiAgICAgICBwcmV2X2h0bWwgOj0gaHRtbDtcbiAgICAgICBwcmV2X2VsdCA6PSBlbHQ7XG4gICAgICAgdGltZXJfc3RvcCBcInRvdGFsXCI7XG4gICAgICAgaWYgc2hvdWxkX2RlYnVnICgpIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiLS0tLS0tLVwiKTtcbiAgICAgICAoKiBDaGFuZ2luZyB0aGUgdGFnIG5hbWUgY2F1c2VzIGZvY3VzIHRvIGJlIGxvc3QuICBSZWZvY3VzIGluIHRoYXQgY2FzZS4gKilcbiAgICAgICBpZiBub3QgdGFnc190aGVfc2FtZSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgIGluXG4gICAgICgqIFdlIHVzZSBbcmVxdWVzdF9hbmltYXRpb25fZnJhbWVdIHNvIHRoYXQgYnJvd3NlciB0ZWxscyB1cyB3aGVyZSBpdCdzIHRpbWUgdG9cbiAgICAgICAgcmVmcmVzaCB0aGUgVUkuIEFsbCB0aGUgYWN0aW9ucyB3aWxsIGJlIHByb2Nlc3NlZCBhbmQgdGhlIGNoYW5nZXMgcHJvcGFnYXRlZFxuICAgICAgICB0byB0aGUgRE9NIGluIG9uZSBmcmFtZS4gKilcbiAgICAgbGV0IHJlYyBjYWxsYmFjayAoKSA9XG4gICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgICAgdGhlbiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaylcbiAgICAgaW5cbiAgICAgKCogV2Ugd2FudCB0aGUgcm9vdCBlbGVtZW50IHRvIHN0YXJ0IG91dCBmb2N1c2VkLCBzbyBwZXJmb3JtIGFuIGluaXRpYWxcbiAgICAgICAgdXBkYXRlL3JlbmRlciwgdGhlbiBpbW1lZGlhdGVseSBmb2N1cyB0aGUgcm9vdCAodW5sZXNzIGEgbm9uLWJvZHkgZWxlbWVudCBhbHJlYWR5XG4gICAgICAgIGhhcyBmb2N1cykuICBUaGlzIGZvY3VzaW5nIGNhbid0IGhhcHBlbiBpbnNpZGUgb2YgdGhlIGBjYWxsYmFja2AgYmVjYXVzZSB0aGVuIGl0XG4gICAgICAgIHdvdWxkIHJlZm9jdXMgcm9vdCBldmVyeSBmcmFtZS4gICopXG4gICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAobWF0Y2ggSnMuT3B0LnRvX29wdGlvbiBEb21faHRtbC5kb2N1bWVudCMjLmFjdGl2ZUVsZW1lbnQgd2l0aFxuICAgICAgfCBTb21lIGVsIC0+IGlmIEpzLk9wdC50ZXN0IChEb21faHRtbC5Db2VyY2VUby5ib2R5IGVsKSB0aGVuIHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpXG4gICAgICB8IE5vbmUgLT4gcmVmb2N1c19yb290X2VsZW1lbnQgKCkpO1xuICAgICByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjaztcbiAgICAgRGVmZXJyZWQubmV2ZXIgKCkpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc3RhcnRfYm9uc2FpID0gc3RhcnRfYm9uc2FpXG5lbmRcblxubGV0IHN0YXJ0XG4gICAgICAodHlwZSBtb2RlbCBhY3Rpb24pXG4gICAgICA/KGRlYnVnID0gZmFsc2UpXG4gICAgICA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSlcbiAgICAgID8obmFtZWRfbG9nZ2luZ19maWx0ZXJzID0gW10pXG4gICAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICAgIH5pbml0aWFsX21vZGVsXG4gICAgICAobW9kdWxlIEFwcCA6IEFwcF9pbnRmLlMgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbCBhbmQgdHlwZSBBY3Rpb24udCA9IGFjdGlvbilcbiAgPVxuICBzdGFydF9ib25zYWlcbiAgICB+ZGVidWdcbiAgICB+c3RvcFxuICAgIH5uYW1lZF9sb2dnaW5nX2ZpbHRlcnNcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWRcbiAgICB+aW5pdGlhbF9tb2RlbFxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBpbmNsdWRlIEFwcFxuXG4gICAgICBsZXQgYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gXyA9IHRydWVcblxuICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgPVxuICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgbGV0JW1hcCBjb21wb25lbnQgPSBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0IGluXG4gICAgICAgIGxldCB2aWV3ID0gQ29tcG9uZW50LnZpZXcgY29tcG9uZW50IGluXG4gICAgICAgIGxldCBhcHBseV9hY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2V2ZW50IF9tb2RlbCBhY3Rpb24gPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQuYXBwbHlfYWN0aW9uIGNvbXBvbmVudCBhY3Rpb24gc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgX21vZGVsIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC51cGRhdGVfdmlzaWJpbGl0eSBjb21wb25lbnQgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICBsZXQgb25fZGlzcGxheSBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQub25fZGlzcGxheSBjb21wb25lbnQgc3RhdGUgfnNjaGVkdWxlX2FjdGlvblxuICAgICAgICBpblxuICAgICAgICB7IEFwcF9pbnRmLlByaXZhdGUudmlldzsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheSB9XG4gICAgICA7O1xuICAgIGVuZClcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb20uVmRvbVxuaW5jbHVkZSBWZG9tX2lucHV0X3dpZGdldHNfaW50ZlxuXG5tb2R1bGUgTWVyZ2VfYmVoYXZpb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE1lcmdlXG4gICAgfCBMZWdhY3lfZG9udF9tZXJnZVxuZW5kXG5cbm1vZHVsZSBEZWNpbWFsID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB0KVxuICAgIHRoZW4gZmFpbHdpdGhmIFwiQ2Fubm90IHJlcHJlc2VudCBub24tZmluaXRlIGZsb2F0IGFzIGRlY2ltYWw6ICVmXCIgdCAoKVxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbGV0IHQgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgIGludmFyaWFudCB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgIGludmFyaWFudCB0O1xuICAgIHNwcmludGYgXCIlLjEyZ1wiIHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgVmFsaWRhdGVkID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBJbml0aWFsXG4gICAgKCogVGhpcyBpcyB1c2VkIHRvIGF2b2lkIG1hcmtpbmcgYXMgaW52YWxpZCBhIGZpZWxkIHRoYXQgaGFzbid0IGV2ZXIgYmVlblxuICAgICAgIHRvdWNoZWQgYnkgdGhlIHVzZXIsIHRvIGltcHJvdmUgVVguICopXG4gICAgfCBWYWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IHZhbHVlIDogJ2FcbiAgICAgICAgfVxuICAgIHwgSW52YWxpZCBvZlxuICAgICAgICB7IGlucHV0IDogc3RyaW5nXG4gICAgICAgIDsgbGFzdF92YWxpZCA6ICdhIG9wdGlvblxuICAgICAgICA7IGVycm9yIDogc3RyaW5nXG4gICAgICAgIH1cbiAgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICB0eXBlICdhIHVwZGF0ZSA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgbGlmdCAodHlwZSBhKSAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBhIHRcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgSW5pdGlhbCAtPiBcIlwiXG4gICAgICAgIHwgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkID0gXzsgZXJyb3IgPSBfIH0gLT4gaW5wdXRcbiAgICAgICAgfCBWYWxpZCB7IGlucHV0OyB2YWx1ZSB9IC0+XG4gICAgICAgICAgKG1hdGNoIGlucHV0IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGlucHV0IC0+IGlucHV0XG4gICAgICAgICAgIHwgTm9uZSAtPiBNLnRvX3N0cmluZyB2YWx1ZSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBWYWxpZCB7IGlucHV0ID0gU29tZSBzOyB2YWx1ZSA9IE0ub2Zfc3RyaW5nIHMgfSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IEludmFsaWQgeyBpbnB1dCA9IHM7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciA9IEV4bi50b19zdHJpbmcgZXhuIH1cbiAgICAgIDs7XG4gICAgZW5kIDogU3RyaW5nYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA9IGEgdClcbiAgOztcblxuICBsZXQgaW5pdGlhbF9lbXB0eSA9IEluaXRpYWxcbiAgbGV0IHJldHVybiB2YWx1ZSA9IFZhbGlkIHsgaW5wdXQgPSBOb25lOyB2YWx1ZSB9XG5cbiAgbGV0IGdldF9jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgXyB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfbGFzdCA9IGZ1bmN0aW9uXG4gICAgfCBWYWxpZCB7IGlucHV0ID0gXzsgdmFsdWUgfSAtPiBTb21lIHZhbHVlXG4gICAgfCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfSAtPiBsYXN0X3ZhbGlkXG4gICAgfCBJbml0aWFsIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgfCBWYWxpZCBfIC0+IE5vbmVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+IFNvbWUgZXJyb3JcbiAgOztcblxuICBsZXQgaXNfaW52YWxpZCA9IGZ1bmN0aW9uXG4gICAgfCBJbnZhbGlkIF8gLT4gdHJ1ZVxuICAgIHwgVmFsaWQgXyB8IEluaXRpYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfaW5pdGlhbF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBJbml0aWFsIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgOztcblxuICBsZXQgdXBkYXRlIG9sZCBuZXdfID1cbiAgICBtYXRjaCBvbGQsIG5ld18gd2l0aFxuICAgIHwgSW5pdGlhbCwgXyAtPiBuZXdfXG4gICAgfCBfLCBWYWxpZCBfIC0+IG5ld19cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSA9IG9sZCB9LCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciB9IC0+XG4gICAgICBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBTb21lIG9sZDsgZXJyb3IgfVxuICAgIHwgKCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkOyBlcnJvciA9IF8gfVxuICAgICAgLCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBOb25lOyBlcnJvciB9ICkgLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZDsgZXJyb3IgfVxuICAgIHwgSW52YWxpZCBfLCBJbnZhbGlkIHsgaW5wdXQgPSBfOyBsYXN0X3ZhbGlkID0gU29tZSBfOyBlcnJvciA9IF8gfSAtPiBuZXdfXG4gICAgfCBfLCBJbml0aWFsIC0+IG9sZFxuICA7O1xuZW5kXG5cbmxldCBtYXliZV9pbnZhbGlkIHZhbGlkYXRlZCBhdHRycyA9XG4gIGlmIFZhbGlkYXRlZC5pc19pbnZhbGlkIHZhbGlkYXRlZFxuICB0aGVuIEF0dHIuY3JlYXRlIFwiYXJpYS1pbnZhbGlkXCIgXCJ0cnVlXCIgOjogYXR0cnNcbiAgZWxzZSBhdHRyc1xuOztcblxubW9kdWxlIFRpbWVfY29tcGF0ID0gc3RydWN0XG4gIG1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFRpbWVfbnMuT2ZkYXkudFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nXG5cbiAgICAoKiBUaGUgYnJvd3NlciBleHBlY3RzIGEgSEg6bW0gZm9ybWF0IHdpdGggb3B0aW9uYWwgdHJhaWxpbmcgXCI6c3NcIiBvciBcIjpzcy5TU1NcIjtcbiAgICAgICBbVGltZV9ucy5PZmRheS50b19zdHJpbmddIHByb3ZpZGVzIHByZWNpc2lvbiBpbiBuYW5vc2Vjb25kcywgd2hpY2ggaXMgdG9vIG11Y2guICopXG4gICAgbGV0IHRvX3N0cmluZyA9IFRpbWVfbnMuT2ZkYXkudG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4gIGVuZFxuXG4gIGxldCB6b25lZCB6b25lIDogKG1vZHVsZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSBUaW1lX25zLnQpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVGltZV9ucy50XG5cbiAgICAgICgqIEZvcm1hdCBmcm9tIHRoZSBicm93c2VyOiB5eXl5LU1NLWRkVGhoOm1tICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgcGFydHMgPSBTdHJpbmcuc3BsaXRfb25fY2hhcnMgcyB+b246WyAnVCc7ICc6JyBdIGluXG4gICAgICAgIGxldCBkYXRlID0gTGlzdC5udGhfZXhuIHBhcnRzIDAgfD4gRGF0ZS5vZl9zdHJpbmcgaW5cbiAgICAgICAgbGV0IGhyID0gTGlzdC5udGhfZXhuIHBhcnRzIDEgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgbWluID0gTGlzdC5udGhfZXhuIHBhcnRzIDIgfD4gSW50Lm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBUaW1lX25zLk9mZGF5LmNyZWF0ZSB+aHIgfm1pbiAoKSBpblxuICAgICAgICBUaW1lX25zLm9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbGV0IHMgPSBUaW1lX25zLnRvX3N0cmluZ19pc284NjAxX2Jhc2ljIH56b25lIHQgaW5cbiAgICAgICAgKCogVGhlIGJyb3dzZXIgZXhwZWN0IGEgeXl5eS1NTS1kZFRoaDptbSBmb3JtYXQgYW5kIGl0IGFsbG93c1xuICAgICAgICAgICB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiLlxuXG4gICAgICAgICAgIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIGZvcm1hdDogMjAxOS0wMS0zMFQwMTowMDowMC4wMDAwMDAwMDArMDE6MDBcblxuICAgICAgICAgICBkZXNpcmVkIGZvcm1hdCBhZnRlciBjdXR0aW5nOiAgIDIwMTktMDEtMzBUMDE6MDA6MDBcbiAgICAgICAgKilcbiAgICAgICAgU3RyaW5nLmxzcGxpdDJfZXhuIH5vbjonLicgcyB8PiBUdXBsZTIuZ2V0MVxuICAgICAgOztcbiAgICBlbmQpXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCBhdHRycyA9IGlmIGRpc2FibGVkIHRoZW4gQXR0ci5kaXNhYmxlZCA6OiBhdHRycyBlbHNlIGF0dHJzXG5sZXQgYWRkX2F0dHJzIGF0dHJzJyBhdHRycyA9IGF0dHJzIEAgYXR0cnMnIHw+IEF0dHJzLm1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc1xuXG5sZXQgbWVyZ2UgPSBmdW5jdGlvblxuICB8IE1lcmdlX2JlaGF2aW9yLk1lcmdlIC0+IEF0dHIubWFueVxuICB8IExlZ2FjeV9kb250X21lcmdlIC0+IEF0dHIubWFueV93aXRob3V0X21lcmdlXG47O1xuXG5sZXQgc3RydWN0dXJhbF9saXN0XG4gICAgICA/KG9yaWVudGF0aW9uID0gYFZlcnRpY2FsKVxuICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgYXR0cnNcbiAgICAgIGNoaWxkcmVuXG4gID1cbiAgbGV0IGxheW91dF9zdHlsZSA9XG4gICAgbWF0Y2ggb3JpZW50YXRpb24gd2l0aFxuICAgIHwgYFZlcnRpY2FsIC0+IENzc19nZW4uKGRpc3BsYXkgYEJsb2NrKVxuICAgIHwgYEhvcml6b250YWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgSW5saW5lX2Jsb2NrKVxuICBpblxuICBOb2RlLnVsXG4gICAgfmF0dHJzOlxuICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgQ3NzX2dlbi4oY3JlYXRlIH5maWVsZDpcImxpc3Qtc3R5bGVcIiB+dmFsdWU6XCJub25lXCIgQD4gbWFyZ2luX2xlZnQgKGBQeCAwKSlcbiAgICAgICAgICAgXVxuICAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpXG4gICAgICBdXG4gICAgKExpc3QubWFwIGNoaWxkcmVuIH5mOihmdW4gY2hpbGQgLT5cbiAgICAgICBOb2RlLmxpIH5hdHRyczpbIEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlIF0gWyBjaGlsZCBdKSlcbjs7XG5cbm1vZHVsZSBWYWx1ZV9ub3JtYWxpemluZ19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmUgPSBKc19vZl9vY2FtbC5Kcy5VbnNhZmVcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBvcGVuIEpzX29mX29jYW1sLkRvbV9odG1sXG5cbiAgbGV0IGlzX2FjdGl2ZSBlbGVtZW50ID1cbiAgICBsZXQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQgPSBVbnNhZmUuZ2V0IGRvY3VtZW50IChKcy5zdHJpbmcgXCJhY3RpdmVFbGVtZW50XCIpIGluXG4gICAgcGh5c19lcXVhbCBlbGVtZW50IGRvY3VtZW50X2FjdGl2ZV9lbGVtZW50XG4gIDs7XG5cbiAgbGV0IHZhbHVlX3Byb3BlcnR5ID0gSnMuc3RyaW5nIFwidmFsdWVcIlxuICBsZXQgZ2V0X3ZhbHVlIGVsZW1lbnQgOiAnYSBKcy50ID0gVW5zYWZlLmdldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5XG4gIGxldCBzZXRfdmFsdWUgZWxlbWVudCB2YWx1ZSA9IFVuc2FmZS5zZXQgZWxlbWVudCB2YWx1ZV9wcm9wZXJ0eSB2YWx1ZVxuXG4gIGxldCBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiA9XG4gICAgKCogVGhpcyBldmVudCBoYW5kbGVyIG5vcm1hbGl6ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBlbGVtZW50IG9uIHRoZSBbY2hhbmdlXSBldmVudC5cbiAgICAgICBGb3IgYSB0ZXh0IGVudHJ5LCB0aGlzIG1lYW5zIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBlbnRlciwgYW5kIHdoZW4gdGhlIHVzZXIgYmx1cnNcbiAgICAgICB0aGUgZWxlbWVudC4gV2h5IGRvbid0IHdlIHNpbXBseSBbdG9fc3RyaW5nXSB0aGUgdmFsdWUgaW4gdGhlIG1vZGVsPyBCZWNhdXNlIGZvclxuICAgICAgIHNvbWUgaW5wdXQgZWxlbWVudHMsIHlvdSBjYW4gaGF2ZSBhIGNoYW5nZSBldmVudCB0aGF0IGZpcmVzIGFmdGVyIHRoZSB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgYnV0IGJlZm9yZSBbSW5jcl9kb21dIGNhbiB1cGRhdGUgdGhlIG1vZGVsLiBGb3IgZXhhbXBsZSwgdGhpcyBoYXBwZW5zIHdoZW4geW91XG4gICAgICAgcHJlc3MgdGhlIHVwIGFycm93IG9uIGEgbnVtYmVyIGlucHV0LiBUaGlzIGxlYWRzIHRvIGEgYnVnIHdoZXJlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgICAgICBtb2RlbCBzd2FwcyBiYWNrIGFuZCBmb3J0aCB3aXRoIHRoZSB2YWx1ZSBpbiB0aGUgZWxlbWVudC4gKilcbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgXyA9XG4gICAgICBsZXQgdmFsdWUgPSBKcy50b19zdHJpbmcgKGdldF92YWx1ZSBlbGVtZW50KSBpblxuICAgICAgT3B0aW9uLml0ZXIgKGYgdmFsdWUpIH5mOihmdW4gbm9ybWFsaXplZCAtPlxuICAgICAgICBzZXRfdmFsdWUgZWxlbWVudCAoSnMuc3RyaW5nIG5vcm1hbGl6ZWQpKTtcbiAgICAgIEpzLl90cnVlXG4gICAgaW5cbiAgICBsZXQgY2hhbmdlX2hhbmRsZXIgPSBEb20uaGFuZGxlciBjaGFuZ2VfaGFuZGxlciBpblxuICAgIGFkZEV2ZW50TGlzdGVuZXIgZWxlbWVudCBFdmVudC5jaGFuZ2UgY2hhbmdlX2hhbmRsZXIgSnMuX2ZhbHNlXG4gIDs7XG5cbiAgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHsgbXV0YWJsZSBldmVudF9pZCA6IGV2ZW50X2xpc3RlbmVyX2lkIH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyB2YWx1ZSA6IHN0cmluZ1xuICAgICAgICA7IGYgOiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgICB9XG5cbiAgICAgIGxldCBzZXhwX29mX3QgeyB2YWx1ZTsgXyB9ID0gU2V4cC5BdG9tIHZhbHVlXG4gICAgICBsZXQgY29tYmluZSBfbGVmdCByaWdodCA9IHJpZ2h0XG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCB7IElucHV0LnZhbHVlOyBmIH0gZWxlbWVudCA9XG4gICAgICBpZiBub3QgKGlzX2FjdGl2ZSBlbGVtZW50KSB0aGVuIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgdmFsdWUpO1xuICAgICAgbGV0IGV2ZW50X2lkID0gaW5zdGFsbF9ldmVudF9oYW5kbGVyIGVsZW1lbnQgfmYgaW5cbiAgICAgIHsgU3RhdGUuZXZlbnRfaWQgfVxuICAgIDs7XG5cbiAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG5cbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuICAgIFtAQG9jYW1sLndhcm5pbmdcbiAgICAgICBcIi02OFwiXVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQgfm5ld19pbnB1dCBzdGF0ZSBlbGVtZW50ID1cbiAgICAgIGRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgICBsZXQgeyBTdGF0ZS5ldmVudF9pZCB9ID0gaW5pdCBuZXdfaW5wdXQgZWxlbWVudCBpblxuICAgICAgc3RhdGUuU3RhdGUuZXZlbnRfaWQgPC0gZXZlbnRfaWRcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIEF0dHIuSG9va3MuTWFrZSAoTSlcblxuICAoKiBbY3JlYXRlIHZhbHVlIH5mXSB3aWxsIHNldCB0aGUgXCJ2YWx1ZVwiIHByb3BlcnR5IHRvIFt2YWx1ZV0gaWYgdGhlIGVsZW1lbnQgaXMgbm90XG4gICAgIGZvY3VzZWQgYW5kIG9uIGVhY2ggY2hhbmdlLCBydW4gdGhlIGN1cnJlbnQgdmFsdWUgdGhyb3VnaCBbZl0gdG8gcmUtc2V0IGl0LiBBZ2FpbixcbiAgICAgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlIGVsZW1lbnQgaXMgbm90IGZvY3VzZWQuIElmIFtmXSByZXR1cm5zIFtOb25lXSwgbm8gY2hhbmdlXG4gICAgIHRha2VzIHBsYWNlLiAqKVxuICBsZXQgY3JlYXRlIHZhbHVlIH5mID0gQXR0ci5jcmVhdGVfaG9vayBcInZhbHVlOm5vcm1hbGl6ZWRcIiAoY3JlYXRlIHsgdmFsdWU7IGYgfSlcbmVuZFxuXG5tb2R1bGUgRHJvcGRvd24gPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGV4dHJhX29wdGlvbl9hdHRycyA9IEZuLmNvbnN0IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIE5vZGUuc2VsZWN0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBfIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgIG9uX2NoYW5nZSAoSW50Lm9mX3N0cmluZyB2YWx1ZSB8PiBMaXN0Lm50aF9leG4gdmFsdWVzKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgKFsgQXR0ci52YWx1ZSAoSW50LnRvX3N0cmluZyBpbmRleClcbiAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBAIGV4dHJhX29wdGlvbl9hdHRycyB2YWx1ZSlcbiAgICAgICAgICAgWyBOb2RlLnRleHQgKHRvX3N0cmluZyB2YWx1ZSkgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICAobW9kdWxlIE0gOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCB2YWx1ZXMgfmY6T3B0aW9uLnNvbWUgaW5cbiAgICBsZXQgdG9fc3RyaW5nID0gT3B0aW9uLnZhbHVlX21hcCB+ZGVmYXVsdDpwbGFjZWhvbGRlciB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGxldCBleHRyYV9vcHRpb25fYXR0cnMgPVxuICAgICAgT3B0aW9uLm1hcCBleHRyYV9vcHRpb25fYXR0cnMgfmY6KGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgdmFsdWUgLT4gZiB2YWx1ZSlcbiAgICBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bV9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgdmFsdWVzID0gTm9uZSA6OiBMaXN0Lm1hcCBNLmFsbCB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OnBsYWNlaG9sZGVyIH5mOk0udG9fc3RyaW5nIGluXG4gICAgbGV0IGV4dHJhX29wdGlvbl9hdHRycyA9XG4gICAgICBPcHRpb24ubWFwIGV4dHJhX29wdGlvbl9hdHRycyB+ZjooZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSB2YWx1ZSAtPiBmIHZhbHVlKVxuICAgIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZWxlY3RhYmxlX3N0eWxlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOYXRpdmVcbiAgICB8IEJ1dHRvbl9saWtlIG9mIHsgZXh0cmFfYXR0cnMgOiBjaGVja2VkOmJvb2wgLT4gQXR0ci50IGxpc3QgfVxuXG4gIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgIEJ1dHRvbl9saWtlXG4gICAgICB7IGV4dHJhX2F0dHJzID1cbiAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgaWYgY2hlY2tlZFxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgIEA+IGNvbG9yIChgSGV4IFwiI0Y3RjdGN1wiKSlcbiAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBbIEF0dHIuc3R5bGVcbiAgICAgICAgICAgICAgICAgICBDc3NfZ2VuLihcbiAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgIEA+IGJhY2tncm91bmRfY29sb3IgKGBIZXggXCIjRUZFRkVGXCIpKVxuICAgICAgICAgICAgICAgXSlcbiAgICAgIH1cbiAgOztcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2JveCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfmxhYmVsXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmxhYmVsXG4gICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIGV4dHJhX2F0dHJzIF1cbiAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSlcbiAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAoKVxuICAgICAgOyBOb2RlLnRleHQgbGFiZWxcbiAgICAgIF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+bGFiZWxcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHJzOlsgQXR0ci5jbGFzc18gXCJjaGVja2JveC1jb250YWluZXJcIiBdXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSB+bWVyZ2VfYmVoYXZpb3IgKCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDaGVja2xpc3QgPSBzdHJ1Y3RcbiAgbGV0IGltcGxcbiAgICAgICAgPyhzdHlsZSA9IFNlbGVjdGFibGVfc3R5bGUuTmF0aXZlKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP2xheW91dFxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT5cbiAgICAgICAgWyBBdHRyLnN0eWxlIFNlbGVjdGFibGVfc3R5bGUuaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgP29yaWVudGF0aW9uOmxheW91dFxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtY2hlY2tsaXN0XCI7IFwiY2hlY2tib3gtY29udGFpbmVyXCIgXSBdXG4gICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgKExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIGl0ZW0gLT5cbiAgICAgICAgIE5vZGUubGFiZWxcbiAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgICAgICAoZXh0cmFfYXR0cnMgQCBsYWJlbF9hdHRycyB+Y2hlY2tlZDooaXNfY2hlY2tlZCBpdGVtKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgKGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/c3R5bGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/bGF5b3V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRGlzcGxheSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9zdHlsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9sYXlvdXRcbiAgICAgIHZhbHVlc1xuICAgICAgfmlzX2NoZWNrZWRcbiAgICAgIH5vbl90b2dnbGVcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP3N0eWxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgTS5hbGxcbiAgICAgIH5pc19jaGVja2VkXG4gICAgICB+b25fdG9nZ2xlXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgTXVsdGlfc2VsZWN0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vX2FjdGlvblxuICAgICAgfCBDbGVhcl9hbGxcbiAgICAgIHwgU2VsZWN0X2FsbFxuICBlbmRcblxuICBsZXQgaW1wbFxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgPyhyZXBlYXRlZF9jbGlja19iZWhhdmlvciA9IFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yLk5vX2FjdGlvbilcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgPVxuICAgIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gICAgbGV0IHNpemUgPSBPcHRpb24udmFsdWUgc2l6ZSB+ZGVmYXVsdDooTGlzdC5sZW5ndGggdmFsdWVzKSBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICA7IEF0dHIuY3JlYXRlIFwic2l6ZVwiIChJbnQudG9fc3RyaW5nIHNpemUpXG4gICAgICA7IEF0dHIub25fY2hhbmdlIChmdW4gZXZ0IChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCB0YXJnZXQgPVxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgSnMuT3B0LnRvX29wdGlvbiAoSnMuT3B0LmJpbmQgZXZ0IyMudGFyZ2V0IERvbV9odG1sLkNvZXJjZVRvLnNlbGVjdClcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB0YXJnZXQgLT4gdGFyZ2V0XG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICBcIk11bHRpX3NlbGVjdCBbb25fY2hhbmdlXSBldmVudCBmaXJlZCB3aXRoIGEgbWlzc2luZyB0YXJnZXQgb3IgdGFyZ2V0IFxcXG4gICAgICAgICAgICAgICAgIHRoYXQgd2FzIG5vdCBhIHNlbGVjdCBlbGVtZW50LlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgY29sbGVjdGlvbl90b19saXN0IGNvbGxlY3Rpb24gPVxuICAgICAgICAgICAgTGlzdC5pbml0IGNvbGxlY3Rpb24jIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgIEpzLk9wdC5nZXQgKGNvbGxlY3Rpb24jI2l0ZW0gaSkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9wdGlvbnMgPSBjb2xsZWN0aW9uX3RvX2xpc3QgdGFyZ2V0IyMub3B0aW9ucyBpblxuICAgICAgICAgIGxldCBzZWxlY3RlZF92YWx1ZXMgPVxuICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChMaXN0LnppcF9leG4gdmFsdWVzIG9wdGlvbnMpIH5mOihmdW4gKHZhbHVlLCBvcHRpb24pIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5zb21lX2lmIChKcy50b19ib29sIG9wdGlvbiMjLnNlbGVjdGVkKSB2YWx1ZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSBzZWxlY3RlZF92YWx1ZXMpKVxuICAgICAgXVxuICAgICAgQCBleHRyYV9hdHRyc1xuICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgaW5cbiAgICBsZXQgb3B0aW9ucyA9XG4gICAgICBMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgaXNfc2VsZWN0ZWQgPSBTZXQubWVtIHNlbGVjdGVkIHZhbHVlIGluXG4gICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgKCogW0F0dHIuYm9vbF9wcm9wZXJ0eV0ga2VlcHMgdGhlIHN0YXRlIG9mIHRoZSBvcHRpb24gaW4gc3luYyBieSBzZXR0aW5nIHRoZSBKU1xuICAgICAgICAgICAgIHByb3BlcnR5LiBbQXR0ci5zZWxlY3RlZF0gbW9kaWZpZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gdGhhdCBzZWxlY3RlZCBvcHRpb25zXG4gICAgICAgICAgICAgY2FuIGJlIHN0eWxlZCB3aXRoIENTUy4gW0F0dHIuc2VsZWN0ZWRdIGFsb25lIGRvZXMgbm90IHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgICAgICAgICBwcm9wZXJseSBpZiB0aGUgbW9kZWwgY2hhbmdlcywgc28gYm90aCBhcmUgbmVlZGVkLiAqKVxuICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgIChbIFNvbWUgKEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgaXNfc2VsZWN0ZWQpXG4gICAgICAgICAgICAgOyBTb21lXG4gICAgICAgICAgICAgICAgIChBdHRyLm9uX2NsaWNrIChmdW4gZXZ0IC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB3YXNfcmVwZWF0ZWRfY2xpY2sgPVxuICAgICAgICAgICAgICAgICAgICAgIChub3QgKEpzLnRvX2Jvb2wgZXZ0IyMuY3RybEtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgJiYgU2V0LmVxdWFsIHNlbGVjdGVkIChTZXQuc2luZ2xldG9uIChtb2R1bGUgTSkgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHdhc19yZXBlYXRlZF9jbGljaywgcmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGZhbHNlLCBfIHwgdHJ1ZSwgTm9fYWN0aW9uIC0+IEVmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBDbGVhcl9hbGwgLT4gb25fY2hhbmdlIChTZXQuZW1wdHkgKG1vZHVsZSBNKSlcbiAgICAgICAgICAgICAgICAgICAgfCB0cnVlLCBTZWxlY3RfYWxsIC0+IG9uX2NoYW5nZSAoU2V0Lm9mX2xpc3QgKG1vZHVsZSBNKSB2YWx1ZXMpKSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gTGlzdC5maWx0ZXJfb3B0KVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyczpbIChtZXJnZSBtZXJnZV9iZWhhdmlvcikgYXR0cnMgXSBvcHRpb25zXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLkxlZ2FjeV9kb250X21lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB2YWx1ZXNcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bV9zZXQgd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIE0uYWxsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbnRyeSA9IHN0cnVjdFxuICBtb2R1bGUgQ2FsbF9vbl9pbnB1dF93aGVuID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgVGV4dF9jaGFuZ2VkXG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3RcblxuICAgIGxldCBsaXN0ZW5lciA9IGZ1bmN0aW9uXG4gICAgICB8IFRleHRfY2hhbmdlZCAtPiBBdHRyLm9uX2lucHV0XG4gICAgICB8IEVudGVyX2tleV9wcmVzc2VkX29yX2ZvY3VzX2xvc3QgLT4gQXR0ci5vbl9jaGFuZ2VcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbm9ybWFsaXplIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUykgcyA9XG4gICAgbWF0Y2ggTS50b19zdHJpbmcgKE0ub2Zfc3RyaW5nIHMpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IFNvbWUgXCJcIlxuICAgIHwgdiAtPiBTb21lIHZcbiAgOztcblxuICBsZXQgbWF5YmVfb25fcmV0dXJuIG9uX3JldHVybiBhdHRycyA9XG4gICAgbWF0Y2ggb25fcmV0dXJuIHdpdGhcbiAgICB8IE5vbmUgLT4gYXR0cnNcbiAgICB8IFNvbWUgb25fcmV0dXJuIC0+XG4gICAgICBBdHRyLm9uX2tleWRvd24gKGZ1biBldiAtPlxuICAgICAgICBpZiBldiMjLmtleUNvZGUgPSAxMyB0aGVuIG9uX3JldHVybiAoKSBlbHNlIEVmZmVjdC5JZ25vcmUpXG4gICAgICA6OiBhdHRyc1xuICA7O1xuXG4gIGxldCBpbnB1dF9ub2RlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICBhdHRyc1xuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKGF0dHJzXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzXG4gICAgICAgICAgICAgICAgICBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCByYXdcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP29uX3JldHVyblxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgWyBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgdmFsdWU7IEF0dHIub25faW5wdXQgKGZ1biBfZXYgLT4gb25faW5wdXQpIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KHNob3VsZF9ub3JtYWxpemUgPSB0cnVlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH50eXBlX2F0dHJzXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IHZhbHVlID1cbiAgICAgIGxldCB2YWx1ZSA9IE9wdGlvbi52YWx1ZV9tYXAgfmY6TS50b19zdHJpbmcgdmFsdWUgfmRlZmF1bHQ6XCJcIiBpblxuICAgICAgaWYgc2hvdWxkX25vcm1hbGl6ZVxuICAgICAgdGhlbiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSB2YWx1ZSB+Zjoobm9ybWFsaXplIChtb2R1bGUgTSkpXG4gICAgICBlbHNlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihjb25zdCBOb25lKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgXCJcIiAtPiBvbl9pbnB1dCBOb25lXG4gICAgICAgIHwgcyAtPiBvbl9pbnB1dCAoT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gTS5vZl9zdHJpbmcgcykpKVxuICAgIDsgdmFsdWVcbiAgICBdXG4gICAgfD4gYWRkX2F0dHJzIHR5cGVfYXR0cnNcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdhYmxlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIE0pXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJ0ZXh0XCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgKG1vZHVsZSBWKSA9IFZhbGlkYXRlZC5saWZ0IChtb2R1bGUgTSkgaW5cbiAgICBsZXQgdmFsdWVfYXR0ciA9XG4gICAgICBtYXRjaCAodmFsdWUgOiBWLnQpIHdpdGhcbiAgICAgIHwgSW5pdGlhbCAtPiBBdHRyLnN0cmluZ19wcm9wZXJ0eSBcInZhbHVlXCIgXCJcIlxuICAgICAgfCBfIC0+IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIChWLnRvX3N0cmluZyB2YWx1ZSkgfmY6KG5vcm1hbGl6ZSAobW9kdWxlIFYpKVxuICAgIGluXG4gICAgWyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT5cbiAgICAgICAgb25faW5wdXQgKFYub2Zfc3RyaW5nIHMpKVxuICAgIDsgdmFsdWVfYXR0clxuICAgIDsgQXR0ci50eXBlXyBcInRleHRcIlxuICAgIF1cbiAgICB8PiBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuXG4gICAgfD4gbWF5YmVfaW52YWxpZCB2YWx1ZVxuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHRleHRcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgb2Zfc3RyaW5nYWJsZVxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBTdHJpbmcpXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHBhc3N3b3JkXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInBhc3N3b3JkXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBudW1iZXJcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgcmFuZ2VcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInJhbmdlXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0aW1lXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFRpbWVfY29tcGF0Lk9mZGF5KVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRpbWVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IGRhdGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgRGF0ZSlcbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRlXCIgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgaG91cnMgPVxuICAgICAgKCogSW4gdGVzdHMsIHdlIHVzZSBVVEMgYXMgdGhlIGxvY2FsIHRpbWV6b25lIChpLmUuIG9mZnNldCAwKS4gVGhpcyBwcmV2ZW50cyBjaGFuZ2VzXG4gICAgICAgICBiZXR3ZWVuIHRlc3Qgb3V0cHV0IGFyb3VuZCBkYXlsaWdodCBzYXZpbmdzIHRpbWUsIGFuZCBpZiBbdXRjX29mZnNldF0gaXNuJ3RcbiAgICAgICAgIHN1cHBsaWVkLCB0aGVuIGNhbGxlcnMgc2hvdWxkIGJlIGluZGlmZmVyZW50IHRvIHdoYXQgb2Zmc2V0IGdldHMgdXNlZCBoZXJlLiAqKVxuICAgICAgbWF0Y2ggQ29yZS5hbV9ydW5uaW5nX3Rlc3QgfHwgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiAwXG4gICAgICB8IGZhbHNlIC0+XG4gICAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICB1dGNfb2Zmc2V0XG4gICAgICAgICAgKCogZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgdGltZSB6b25lIGRpZmZlcmVuY2UsIGluIG1pbnV0ZXMsIGZyb20gY3VycmVudFxuICAgICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgICBpcyB3aGVyZSB0aGUgbWludXMgY29tZXMgZnJvbS5cblxuICAgICAgICAgICAgIFRoZSBtaW51dGVzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvIGhvdXJzIHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdFxuICAgICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICAgIH5kZWZhdWx0OigobmV3JWpzIEpzX29mX29jYW1sLkpzLmRhdGVfbm93KSMjZ2V0VGltZXpvbmVPZmZzZXQgLyAtNjApXG4gICAgICAgICAgfmY6KGZ1biB1dGNfb2Zmc2V0IC0+IFRpbWVfbnMuU3Bhbi50b19ociB1dGNfb2Zmc2V0IHw+IEZsb2F0LnRvX2ludClcbiAgICBpblxuICAgIGxldCAobW9kdWxlIFpvbmVkX3RpbWUpID0gVGltZV9jb21wYXQuem9uZWQgKFRpbWVfZmxvYXQuWm9uZS5vZl91dGNfb2Zmc2V0IH5ob3VycykgaW5cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBab25lZF90aW1lKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwiZGF0ZXRpbWUtbG9jYWxcIiBdXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLnRleHRhcmVhXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlclxuICAgICAgICAgICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgICA7IFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOk9wdGlvbi5yZXR1cm5cbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbXVxuICA7O1xuXG4gICgqIEFjY29yZGluZyB0b1xuICAgICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQvY29sb3IjVmFsdWUgdGhlXG4gICAgIHZhbHVlIG11c3QgYmUgc2V0IGluIGhleCBmb3JtYXQgYW5kIHdpbGwgYWx3YXlzIGNvbWVzIGJhY2sgaW4gaGV4IGZvcm1hdC4gKilcbiAgbGV0IGNvbG9yX3BpY2tlclxuICAgICAgICA/KGV4dHJhX2F0dHIgPSBBdHRyLmVtcHR5KVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IChgSGV4IHZhbHVlXykgPSB2YWx1ZSBpblxuICAgIFsgQXR0ci4odHlwZV8gXCJjb2xvclwiIEAgdmFsdWVfcHJvcCB2YWx1ZV8gQCBleHRyYV9hdHRyKVxuICAgIDsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+IG9uX2lucHV0IChgSGV4IHMpKVxuICAgIF1cbiAgICB8PiBpbnB1dF9ub2RlID9kaXNhYmxlZCB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcbmVuZFxuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCB3aXRoX3ZhbGlkYXRpb25cbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfnZhbGlkYXRpb25cbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgcmVzdWx0KTsgQXR0ci50eXBlXyBcImJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgICBdXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgIChbIEF0dHIuZGlzYWJsZWRcbiAgICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcFwiIHJlYXNvblxuICAgICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcInRvb2x0aXAtcG9zaXRpb25cIiBcInRvcFwiXG4gICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgICAgXVxuICAgICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcblxuICBsZXQgc2ltcGxlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIHRleHRcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgPVxuICAgIE5vZGUuYnV0dG9uXG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImJ1dHRvblwiOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrICgpKSBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICBbIE5vZGUudGV4dCB0ZXh0IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgUmFkaW9fYnV0dG9ucyA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhzdHlsZSA6IFNlbGVjdGFibGVfc3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+b3JpZW50YXRpb25cbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5lcXVhbFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgbGV0IGlucHV0X2F0dHJzLCBsYWJlbF9hdHRycyA9XG4gICAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgICB8IE5hdGl2ZSAtPiBbXSwgZnVuIH5jaGVja2VkOl8gLT4gW11cbiAgICAgIHwgQnV0dG9uX2xpa2UgeyBleHRyYV9hdHRycyB9IC0+XG4gICAgICAgIFsgQXR0ci5zdHlsZSBTZWxlY3RhYmxlX3N0eWxlLmhpZGVfbmF0aXZlX2lucHV0cyBdLCBleHRyYV9hdHRyc1xuICAgIGluXG4gICAgc3RydWN0dXJhbF9saXN0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cnM6WyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpIChsYWJlbF9hdHRycyB+Y2hlY2tlZCkgXVxuICAgICAgICAgICBbIE5vZGUuaW5wdXRcbiAgICAgICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5uYW1lIG5hbWVcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5jbGFzc2VzIFsgXCJyYWRpby1idXR0b25cIiBdXG4gICAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgaXRlbSlcbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgaW5wdXRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgIDsgTm9kZS50ZXh0ICh0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgXSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzX2hvcml6b250YWxcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c3R5bGVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIEUgOiBFcXVhbCB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c3R5bGVcbiAgICAgIH5vcmllbnRhdGlvbjpgSG9yaXpvbnRhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0XG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGZpbGVzID1cbiAgICAgICAgICAgICAgICAgICBMaXN0LmluaXQgZmlsZV9saXN0IyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgIHw+IEpzLk9wdC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9leG4gfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZXMpXG4gICAgICAgICAgICAgXVxuICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgXVxuICAgICAgKClcbiAgOztcblxuICBsZXQgc2luZ2xlXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgP2FjY2VwdFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cnM6XG4gICAgICAgIFsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKVxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGZpbGVfbGlzdCMjaXRlbSAwIHw+IEpzLk9wdC50b19vcHRpb24gaW5cbiAgICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IChDKSBKZWFuLUNocmlzdG9waGUgRmlsbGlhdHJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICAgICopXG4oKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICopXG4oKiAgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyAgICAgICAgICAgICopXG4oKiAgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICopXG4oKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICopXG4oKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqcyBNYXBzIG9mIGludGVnZXJzIGltcGxlbWVudGVkIGFzIFBhdHJpY2lhIHRyZWVzLCBmb2xsb3dpbmcgQ2hyaXNcbiAgICBPa2FzYWtpIGFuZCBBbmRyZXcgR2lsbCdzIHBhcGVyIHtcXGVtIEZhc3QgTWVyZ2VhYmxlIEludGVnZXIgTWFwc31cbiAgICAoe1xcdHRcXHNtYWxsIGh0dHA6Ly93d3cuY3MuY29sdW1iaWEuZWR1L1xcfnt9Y2RvL3BhcGVycy5odG1sXFwjbWw5OG1hcHN9KS5cbiAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgbW9kdWxlIFtQdHNldF0gd2hpY2ggaXMgYWxzbyBiYXNlZCBvbiB0aGVcbiAgICBzYW1lIGRhdGEtc3RydWN0dXJlLiAqKVxuXG50eXBlIGtleSA9IGludFxuXG50eXBlICdhIHQgPVxuICB8IEVtcHR5XG4gIHwgTGVhZiBvZiBpbnQgKiAnYVxuICB8IEJyYW5jaCBvZiBpbnQgKiBpbnQgKiAnYSB0ICogJ2EgdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgdCA9IHQgPSBFbXB0eVxuXG5sZXQgemVyb19iaXQgayBtID0gKGsgbGFuZCBtKSA9PSAwXG5cbmxldCByZWMgbWVtIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaixfKSAtPiBrID09IGpcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IG1lbSBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IHJlYyBmaW5kIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgayA9PSBqIHRoZW4geCBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gZmluZCBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IGZpbmRfb3B0IGsgbSA9IHRyeSBTb21lIChmaW5kIGsgbSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4oKiBOb3RlOiBmaW5kX2ZpcnN0L2xhc3QgaGF2ZSB0byBsb29rIGluIGJvdGggc3VidHJlZXNcbiAgIGFzIHRoZXNlIGFyZSBsaXR0bGUtZW5kaWFuIFBhdHJpY2lhIHRyZWVzICopXG5sZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA8IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPCByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPiByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrID4gcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBsb3dlc3RfYml0IHggPSB4IGxhbmQgKC14KVxuXG5sZXQgYnJhbmNoaW5nX2JpdCBwMCBwMSA9IGxvd2VzdF9iaXQgKHAwIGx4b3IgcDEpXG5cbmxldCBtYXNrIHAgbSA9IHAgbGFuZCAobS0xKVxuXG5sZXQgam9pbiAocDAsdDAscDEsdDEpID1cbiAgbGV0IG0gPSBicmFuY2hpbmdfYml0IHAwIHAxIGluXG4gIGlmIHplcm9fYml0IHAwIG0gdGhlblxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MCwgdDEpXG4gIGVsc2VcbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDEsIHQwKVxuXG5sZXQgbWF0Y2hfcHJlZml4IGsgcCBtID0gKG1hc2sgayBtKSA9PSBwXG5cbmxldCBhZGQgayB4IHQgPVxuICBsZXQgcmVjIGlucyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrLHgpXG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT5cbiAgICAgIGlmIGogPT0gayB0aGVuIExlYWYgKGsseCkgZWxzZSBqb2luIChrLCBMZWFmIChrLHgpLCBqLCB0KVxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgQnJhbmNoIChwLCBtLCBpbnMgdDAsIHQxKVxuXHRlbHNlXG5cdCAgQnJhbmNoIChwLCBtLCB0MCwgaW5zIHQxKVxuICAgICAgZWxzZVxuXHRqb2luIChrLCBMZWFmIChrLHgpLCBwLCB0KVxuICBpblxuICBpbnMgdFxuXG5sZXQgc2luZ2xldG9uIGsgdiA9XG4gIGFkZCBrIHYgZW1wdHlcblxubGV0IGJyYW5jaCA9IGZ1bmN0aW9uXG4gIHwgKF8sXyxFbXB0eSx0KSAtPiB0XG4gIHwgKF8sXyx0LEVtcHR5KSAtPiB0XG4gIHwgKHAsbSx0MCx0MSkgICAtPiBCcmFuY2ggKHAsbSx0MCx0MSlcblxubGV0IHJlbW92ZSBrIHQgPVxuICBsZXQgcmVjIHJtdiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+IGlmIGsgPT0gaiB0aGVuIEVtcHR5IGVsc2UgdFxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCBybXYgdDAsIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCB0MCwgcm12IHQxKVxuICAgICAgZWxzZVxuXHR0XG4gIGluXG4gIHJtdiB0XG5cbmxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBjYXJkaW5hbCB0MCArIGNhcmRpbmFsIHQxXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHhcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gaXRlciBmIHQwOyBpdGVyIGYgdDFcblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXAgZiB0MCwgbWFwIGYgdDEpXG5cbmxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiBrIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwaSBmIHQwLCBtYXBpIGYgdDEpXG5cbmxldCByZWMgZm9sZCBmIHMgYWNjdSA9IG1hdGNoIHMgd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4IGFjY3VcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9sZCBmIHQwIChmb2xkIGYgdDEgYWNjdSlcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIChrLCB2KSAgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9yX2FsbCBwIHQwICYmIGZvcl9hbGwgcCB0MVxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGssIHYpIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGV4aXN0cyBwIHQwIHx8IGV4aXN0cyBwIHQxXG5cbmxldCByZWMgZmlsdGVyIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIGFzIHQgLT4gaWYgcHIgayB2IHRoZW4gdCBlbHNlIEVtcHR5XG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyIHByIHQwLCBmaWx0ZXIgcHIgdDEpXG5cbmxldCByZWMgZmlsdGVyX21hcCBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSAtPiAobWF0Y2ggcHIgayB2IHdpdGggU29tZSB2JyAtPiBMZWFmIChrLCB2JykgfCBOb25lIC0+IEVtcHR5KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlcl9tYXAgcHIgdDAsIGZpbHRlcl9tYXAgcHIgdDEpXG5cbmxldCBwYXJ0aXRpb24gcCBzID1cbiAgbGV0IHJlYyBwYXJ0ICh0LGYgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIHAgayB2IHRoZW4gKGFkZCBrIHYgdCwgZikgZWxzZSAodCwgYWRkIGsgdiBmKVxuICAgIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IHBhcnQgKHBhcnQgYWNjIHQwKSB0MVxuICBpblxuICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcblxubGV0IHJlYyBjaG9vc2UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZSB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgcmVjIGNob29zZV9vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZV9vcHQgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHNwbGl0IHggbSA9XG4gIGxldCBjb2xsIGsgdiAobCwgYiwgcikgPVxuICAgIGlmIGsgPCB4IHRoZW4gYWRkIGsgdiBsLCBiLCByXG4gICAgZWxzZSBpZiBrID4geCB0aGVuIGwsIGIsIGFkZCBrIHYgclxuICAgIGVsc2UgbCwgU29tZSB2LCByXG4gIGluXG4gIGZvbGQgY29sbCBtIChlbXB0eSwgTm9uZSwgZW1wdHkpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1pbl9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1pbl9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIChtaW5fYmluZGluZ19vcHQgcywgbWluX2JpbmRpbmdfb3B0IHQpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1heF9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1heF9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIG1heF9iaW5kaW5nX29wdCBzLCBtYXhfYmluZGluZ19vcHQgdCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgYmluZGluZ3MgbSA9XG4gIGZvbGQgKGZ1biBrIHYgYWNjIC0+IChrLCB2KSA6OiBhY2MpIG0gW11cblxuKCogd2Ugb3JkZXIgY29uc3RydWN0b3JzIGFzIEVtcHR5IDwgTGVhZiA8IEJyYW5jaCAqKVxubGV0IGNvbXBhcmUgY21wIHQxIHQyID1cbiAgbGV0IHJlYyBjb21wYXJlX2F1eCB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiAwXG4gICAgfCBFbXB0eSwgXyAtPiAtMVxuICAgIHwgXywgRW1wdHkgLT4gMVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrMSBrMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNtcCB4MSB4MlxuICAgIHwgTGVhZiBfLCBCcmFuY2ggXyAtPiAtMVxuICAgIHwgQnJhbmNoIF8sIExlYWYgXyAtPiAxXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBwMSBwMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG5cdGxldCBjID0gY29tcGFyZSBtMSBtMiBpblxuXHRpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYXV4IGwxIGwyIGluXG4gICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCByMSByMlxuICBpblxuICBjb21wYXJlX2F1eCB0MSB0MlxuXG5sZXQgZXF1YWwgZXEgdDEgdDIgPVxuICBsZXQgcmVjIGVxdWFsX2F1eCB0MSB0MiA9IG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT4gazEgPSBrMiAmJiBlcSB4MSB4MlxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBwMSA9IHAyICYmIG0xID0gbTIgJiYgZXF1YWxfYXV4IGwxIGwyICYmIGVxdWFsX2F1eCByMSByMlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBlcXVhbF9hdXggdDEgdDJcblxubGV0IG1lcmdlIGYgbTEgbTIgPVxuICBsZXQgYWRkIG0gayA9IGZ1bmN0aW9uIE5vbmUgLT4gbSB8IFNvbWUgdiAtPiBhZGQgayB2IG0gaW5cbiAgKCogZmlyc3QgY29uc2lkZXIgYWxsIGJpbmRpbmdzIGluIG0xICopXG4gIGxldCBtID0gZm9sZFxuICAgICAgKGZ1biBrMSB2MSBtIC0+IGFkZCBtIGsxIChmIGsxIChTb21lIHYxKSAoZmluZF9vcHQgazEgbTIpKSkgbTEgZW1wdHkgaW5cbiAgKCogdGhlbiBiaW5kaW5ncyBpbiBtMiB0aGF0IGFyZSBub3QgaW4gbTEgKilcbiAgZm9sZCAoZnVuIGsyIHYyIG0gLT4gaWYgbWVtIGsyIG0xIHRoZW4gbSBlbHNlIGFkZCBtIGsyIChmIGsyIE5vbmUgKFNvbWUgdjIpKSlcbiAgICBtMiBtXG5cbmxldCB1cGRhdGUgeCBmIG0gPVxuICBtYXRjaCBmIChmaW5kX29wdCB4IG0pIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB4IG1cbiAgfCBTb21lIHogLT4gYWRkIHggeiBtXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPSBuID49IDAgJiYgKG0gPCAwIHx8IG4gPCBtKVxuXG5sZXQgcmVjIHVuaW9uIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5LCB0ICAtPiB0XG4gIHwgdCwgRW1wdHkgIC0+IHRcbiAgfCBMZWFmIChrLHYxKSwgdCAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MSB8IFNvbWUgdjIgLT4gZiBrIHYxIHYyKSB0XG4gIHwgdCwgTGVhZiAoayx2MikgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjIgfCBTb21lIHYxIC0+IGYgayB2MSB2MikgdFxuICB8IChCcmFuY2ggKHAsbSxzMCxzMSkgYXMgcyksIChCcmFuY2ggKHEsbix0MCx0MSkgYXMgdCkgLT5cbiAgICAgIGlmIG0gPT0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBUaGUgdHJlZXMgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIE1lcmdlIHRoZSBzdWJ0cmVlcy4gKilcblx0YnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0MCksIHVuaW9uIGYgKHMxLHQxKSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFtxXSBjb250YWlucyBbcF0uIE1lcmdlIFt0XSB3aXRoIGEgc3VidHJlZSBvZiBbc10uICopXG5cdGlmIHplcm9fYml0IHEgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0KSwgczEpXG4gICAgICAgIGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHMwLCB1bmlvbiBmIChzMSx0KSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbiBtICYmIG1hdGNoX3ByZWZpeCBwIHEgbiB0aGVuXG5cdCgqIFtwXSBjb250YWlucyBbcV0uIE1lcmdlIFtzXSB3aXRoIGEgc3VidHJlZSBvZiBbdF0uICopXG5cdGlmIHplcm9fYml0IHAgbiB0aGVuXG5cdCAgYnJhbmNoIChxLCBuLCB1bmlvbiBmIChzLHQwKSwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHEsIG4sIHQwLCB1bmlvbiBmIChzLHQxKSlcbiAgICAgIGVsc2Vcblx0KCogVGhlIHByZWZpeGVzIGRpc2FncmVlLiAqKVxuXHRqb2luIChwLCBzLCBxLCB0KVxuXG5sZXQgdW5pb24gZiBzIHQgPSB1bmlvbiBmIChzLHQpXG5cbmxldCB0b19zZXEgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrLCB2KSAtPiBmdW4gKCkgLT4gU2VxLkNvbnMoKGssdiksIHMpXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IHRvX3NlcV9mcm9tIGsgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrZXksIHYpIC0+IGlmIGtleSA+PSBrIHRoZW4gZnVuICgpIC0+IFNlcS5Db25zKChrZXksdiksIHMpIGVsc2Ugc1xuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCBhZGRfc2VxIHMgbSA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIG0gc1xuXG5sZXQgb2Zfc2VxIHMgPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBzXG4iLCJsZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuIiwibGV0IHZlcnNpb24gPSBcIjIuMi4yXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgICAgKCAoKSApXG4jIDk4IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IDEgLT5cbiMgMyBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgKFxuICAgICBpZiBuIDw9IDAgdGhlbiAoKVxuICAgICBlbHNlIGJlZ2luXG4gICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoTGV4aW5nLmxleGVtZV9jaGFyIGxleGJ1ZiAwKTtcbiAgICAgICByZWFkX2p1bmsgYnVmIChuIC0gMSkgbGV4YnVmXG4gICAgIGVuZFxuICAgICApXG4jIDEwOSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTEgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiBcbmxldCByZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIG4gKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgbGV0IGxleF9hYnNfcG9zID0gbGV4YnVmLmxleF9hYnNfcG9zIGluXG4gIGxldCBsZXhfc3RhcnRfcG9zID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZjtcbiAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gbGV4X3N0YXJ0X3BvcyArIDE7XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhfYWJzX3Bvc1xuXG4jIDEyNSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpICA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWZcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuYW5cbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nIChmaW5pc2hfc3RyaW5nIHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGlcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmdsaXQgb2Ygc3RyaW5nXG4gICAgfCBgQXNzb2Mgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICB8IGBMaXN0IG9mIHQgbGlzdFxuICAgIHwgYFR1cGxlIG9mIHQgbGlzdFxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyAqIHQgb3B0aW9uKVxuICAgIF1cbigqKlxuQWxsIHBvc3NpYmxlIGNhc2VzIGRlZmluZWQgaW4gWW9qc29uOlxuLSBgTnVsbDogSlNPTiBudWxsXG4tIGBCb29sIG9mIGJvb2w6IEpTT04gYm9vbGVhblxuLSBgSW50IG9mIGludDogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LlxuLSBgSW50bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIgd2l0aG91dCBkZWNpbWFsIHBvaW50IG9yIGV4cG9uZW50LFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgRmxvYXQgb2YgZmxvYXQ6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTi5cbi0gYEZsb2F0bGl0IG9mIHN0cmluZzogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLFxuXHQgICAgcHJlc2VydmVkIGFzIGEgc3RyaW5nLlxuLSBgU3RyaW5nIG9mIHN0cmluZzogSlNPTiBzdHJpbmcuIEJ5dGVzIGluIHRoZSByYW5nZSAxMjgtMjU1IGFyZSBwcmVzZXJ2ZWRcblx0ICAgIGFzLWlzIHdpdGhvdXQgZW5jb2RpbmcgdmFsaWRhdGlvbiBmb3IgYm90aCByZWFkaW5nXG5cdCAgICBhbmQgd3JpdGluZy5cbi0gYFN0cmluZ2xpdCBvZiBzdHJpbmc6IEpTT04gc3RyaW5nIGxpdGVyYWwgaW5jbHVkaW5nIHRoZSBkb3VibGUgcXVvdGVzLlxuLSBgQXNzb2Mgb2YgKHN0cmluZyAqIGpzb24pIGxpc3Q6IEpTT04gb2JqZWN0LlxuLSBgTGlzdCBvZiBqc29uIGxpc3Q6IEpTT04gYXJyYXkuXG4tIGBUdXBsZSBvZiBqc29uIGxpc3Q6IFR1cGxlIChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbKFwiYWJjXCIsIDEyMyldLlxuLSBgVmFyaWFudCBvZiAoc3RyaW5nICoganNvbiBvcHRpb24pOiBWYXJpYW50IChub24tc3RhbmRhcmQgZXh0ZW5zaW9uIG9mIEpTT04pLlxuXHQgICAgU3ludGF4OiBbPFwiRm9vXCI+XSBvciBbPFwiQmFyXCI6MTIzPl0uXG4qKVxuXG4oKlxuICBOb3RlIHRvIGFkdmVudHVyZXJzOiBvY2FtbGRvYyBkb2VzIG5vdCBzdXBwb3J0IGlubGluZSBjb21tZW50c1xuICBvbiBlYWNoIHBvbHltb3JwaGljIHZhcmlhbnQsIGFuZCBjcHBvIGRvZXNuJ3QgYWxsb3cgdG8gY29uY2F0ZW5hdGVcbiAgY29tbWVudHMsIHNvIGl0IHdvdWxkIGJlIGNvbXBsaWNhdGVkIHRvIGRvY3VtZW50IG9ubHkgdGhlXG4gIGNhc2VzIHRoYXQgYXJlIHByZXNlcnZlZCBieSBjcHBvIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4qKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYEZsb2F0bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpICA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgbmV3bGluZSB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgdi5sbnVtIDwtIHYubG51bSArIDE7XG4gICAgdi5ib2wgPC0gbGV4YnVmLmxleF9hYnNfcG9zICsgbGV4YnVmLmxleF9jdXJyX3Bvc1xuXG4gIGxldCBhZGRfbGV4ZW1lIGJ1ZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBCdWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW5cblxuICBsZXQgbWFwX2xleGVtZSBmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGYgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuKSAwIGxlblxuXG4gIHR5cGUgdmFyaWFudF9raW5kID0gWyBgRWRneV9icmFja2V0IHwgYFNxdWFyZV9icmFja2V0IHwgYERvdWJsZV9xdW90ZSBdXG5cbiMgMTU0IFwibGliL3JlYWQubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjM2XFwyNTVcXDIzN1xcMjU1XFwwMDNcXDAwMFxcMjM5XFwyNTVcXDAxNlxcMDAwXFwyNDJcXDI1NVxcMjQzXFwyNTVcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDI0OVxcMjU1XFwwODVcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU0XFwyNTVcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMjUzXFwyNTVcXDAxMVxcMDAwXFwyNTJcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTFcXDI1NVxcMDIxXFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMjJcXDAwMFxcMDIwXFwwMDBcXDAxNlxcMDAwXFwwMjJcXDAwMFxcMDEyXFwwMDBcXDAwOFxcMDAwXFwyNTBcXDI1NVxcXG4gICAgXFwxMTlcXDAwMFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNjFcXDAwMFxcMTcxXFwwMDBcXDE4MVxcMDAwXFwxOTNcXDAwMFxcMjA5XFwwMDBcXFxuICAgIFxcMjQwXFwyNTVcXDAxMVxcMDAwXFwwMzhcXDAwMFxcMjUyXFwyNTVcXDA2NVxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDExMFxcMDAwXFxcbiAgICBcXDI1MlxcMjU1XFwxNjNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzRcXDAwMFxcMjQ3XFwyNTVcXDI0OFxcMjU1XFwwNDhcXDAwMVxcXG4gICAgXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMTI2XFwwMDFcXFxuICAgIFxcMTQ5XFwwMDFcXDI0OVxcMjU1XFwwMzlcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzhcXDAwMFxcMTg3XFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI0OFxcMDAxXFwwMTVcXDAwMlxcMjU1XFwyNTVcXDIyMFxcMDAwXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwwMzlcXDAwMlxcXG4gICAgXFwxMDlcXDAwMlxcMDE0XFwwMDFcXDA4OFxcMDAyXFwxNjRcXDAwMlxcMTg3XFwwMDJcXDIyNVxcMDAyXFwwMTNcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMVxcXG4gICAgXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMDA1XFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDAyM1xcMDAwXFwyNTRcXDI1NVxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwNDJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMFxcMDQ4XFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDI3XFwwMDFcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMTM3XFwwMDBcXDEwNFxcMDAwXFwwODlcXDAwMFxcMDg4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMFxcMTM3XFwwMDBcXDE3N1xcMDAwXFwyNTRcXDI1NVxcMTgzXFwwMDBcXDE2OFxcMDAwXFwxNjZcXDAwMFxcXG4gICAgXFwxODNcXDAwMFxcMDAyXFwwMDBcXDI1M1xcMjU1XFwxNzdcXDAwMFxcMTcyXFwwMDBcXDE4N1xcMDAwXFwwMDRcXDAwMFxcMjUyXFwyNTVcXFxuICAgIFxcMDUzXFwwMDJcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDEwM1xcMDAxXFwyNTVcXDI1NVxcMjQ4XFwwMDJcXDI1NFxcMjU1XFxcbiAgICBcXDAwNlxcMDAzXFwwMzBcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAzXFwwNTBcXDAwM1xcXG4gICAgXFwwNzRcXDAwM1xcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA2MVxcMDAzXFwwODRcXDAwM1xcMTA4XFwwMDNcXFxuICAgIFxcMjQ5XFwyNTVcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjQ0XFwwMDBcXDEyMFxcMDAzXFwxNDJcXDAwM1xcMTc5XFwwMDBcXDE5NFxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMTkwXFwwMDBcXDE4OFxcMDAwXFwxODdcXDAwMFxcMTkzXFwwMDBcXDE4M1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwyNTRcXDI1NVxcMTkxXFwwMDBcXDIwMVxcMDAwXFwyMDBcXDAwMFxcMTk2XFwwMDBcXDIwM1xcMDAwXFwxOTNcXDAwMFxcMTg5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDE1N1xcMDAzXFwwOTVcXDAwM1xcMTc0XFwwMDNcXDE5NlxcMDAzXFwyMDZcXDAwM1xcMjE2XFwwMDNcXDIyOFxcMDAzXFxcbiAgICBcXDIzOVxcMDAzXFwwNjBcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwwODdcXDAwNFxcMjU1XFwyNTVcXDE0NVxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyMVxcMDA0XFwyNTVcXDI1NVxcMjI5XFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMxXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMThcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM4XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMFxcMDAxXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjA4XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIxMVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4OVxcMDAwXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwOTVcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAxXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzM1xcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMjJcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwNVxcMjM3XFwyNTVcXDIzOFxcMjU1XFwwMTBcXDAwMFxcMjQwXFwyNTVcXDA0NFxcMDAxXFxcbiAgICBcXDI0M1xcMjU1XFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDI0NlxcMjU1XFwwNjFcXDAwMVxcMDAyXFwwMDRcXDI0OVxcMjU1XFwwNDVcXDAwNVxcXG4gICAgXFwyMDlcXDAwMFxcMjI4XFwwMDBcXDIxMVxcMDAwXFwyMzJcXDAwMFxcMjI1XFwwMDBcXDIyM1xcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjM1XFwwMDBcXDIzNFxcMDAwXFwwMDhcXDAwMVxcMjU0XFwyNTVcXDAwNFxcMDAxXFwwMjNcXDAwMVxcMjUzXFwyNTVcXDA1NFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwwMzFcXDAwMVxcMDI5XFwwMDFcXDAzMlxcMDAxXFwwMzlcXDAwMVxcMDQ5XFwwMDFcXDA0NVxcMDAxXFwyNTFcXDI1NVxcXG4gICAgXFwwNTdcXDAwMVxcMDgyXFwwMDFcXDA4MFxcMDAxXFwwNzhcXDAwMVxcMDg0XFwwMDFcXDA3NFxcMDAxXFwwODZcXDAwMVxcMjUwXFwyNTVcXFxuICAgIFxcMTEwXFwwMDVcXDAxMlxcMDA0XFwxMjNcXDAwNVxcMTU1XFwwMDVcXDE2NVxcMDA1XFwxNzdcXDAwNVxcMTg3XFwwMDVcXDE5N1xcMDA1XFxcbiAgICBcXDI0MVxcMjU1XFwxOTlcXDAwMVxcMDc3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMTU0XFwwMDJcXDIyMlxcMDA1XFwyMDlcXDAwNVxcXG4gICAgXFwxNTVcXDAwMlxcMjM5XFwwMDVcXDA1M1xcMDA2XFwwNzZcXDAwNlxcMTE0XFwwMDZcXDAxNlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTJcXDAwNlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjdcXDAwNlxcMjU1XFwyNTVcXDA4NVxcMDA3XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDExXFwwMDBcXDI0N1xcMjU1XFwwNzZcXDAwMlxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzMVxcMDAyXFwyNDNcXDAwNVxcMDUxXFwwMDdcXDEwMFxcMDAxXFwxMTVcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDExOFxcMDAxXFwxNTRcXDAwMVxcMTcxXFwwMDFcXDI1NVxcMjU1XFwxNzNcXDAwMVxcMTc2XFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODdcXDAwMVxcMjUzXFwwMDFcXDIzMFxcMDAxXFwyMzBcXDAwMVxcMjM0XFwwMDFcXDI0N1xcMDAxXFwyMzdcXDAwMVxcXG4gICAgXFwyMzRcXDAwMVxcMDA5XFwwMDJcXDAxOVxcMDAyXFwwMTlcXDAwMlxcMDE1XFwwMDJcXDAyMVxcMDAyXFwwMTFcXDAwMlxcMDA3XFwwMDJcXFxuICAgIFxcMTQyXFwwMDZcXDE1MlxcMDA2XFwxMTZcXDAwN1xcMTcwXFwwMDdcXDE4MFxcMDA3XFwxOTBcXDAwN1xcMjAwXFwwMDdcXDIxMFxcMDA3XFxcbiAgICBcXDI0OFxcMjU1XFwxMjBcXDAwMlxcMTY3XFwwMDJcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjE2XFwwMDJcXDA4MlxcMDA3XFwyMjBcXDAwN1xcXG4gICAgXFwyMzZcXDAwMlxcMjQ0XFwwMDdcXDA1OFxcMDA4XFwwODFcXDAwOFxcMTE5XFwwMDhcXDA3NlxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxNTdcXDAwOFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMzJcXDAwOFxcMjU1XFwyNTVcXDEzNVxcMDAyXFxcbiAgICBcXDEyMFxcMDAyXFwyNTNcXDI1NVxcMTAwXFwwMDJcXDI1NFxcMjU1XFwxODJcXDAwMlxcMjU1XFwyNTVcXDAxMVxcMDAyXFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA0NlxcMDAyXFwyNTVcXDI1NVxcMTc4XFwwMDJcXFxuICAgIFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMTgzXFwwMDJcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAyXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjFcXDAwMlxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjdcXDAwMFxcMTM5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwxNzBcXDAwMFxcMTM0XFwwMDBcXDE3NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDE0XFwwMDFcXDAxM1xcMDAwXFwwNDlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDU2XFwwMDBcXDExOFxcMDAwXFwwMDZcXDAwMFxcMTI5XFwwMDBcXDEzMFxcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMVxcMTM3XFwwMDBcXDAwMFxcMDAyXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwxMzhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDAxNFxcMDAwXFwxMTBcXDAwMFxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDMwXFwwMDBcXDA0OFxcMDAwXFwwMDhcXDAwMFxcMTE0XFwwMDBcXDIwOVxcMDAwXFwyMzZcXDAwMFxcMDAwXFwwMDFcXFxuICAgIFxcMDEzXFwwMDFcXDAyOVxcMDAwXFwwMjJcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDE3XFwwMDBcXDAyMVxcMDAwXFxcbiAgICBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMjNcXDAwMFxcMDI3XFwwMDBcXDAxNlxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDM0XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMjBcXDAwMFxcMDM2XFwwMDBcXFxuICAgIFxcMDQxXFwwMDBcXDAzN1xcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDYxXFwwMDBcXDA4NVxcMDAwXFwwNDhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDY3XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NlxcMDAwXFwxNDNcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwxNDRcXDAwMFxcXG4gICAgXFwxNDVcXDAwMFxcMTQ2XFwwMDBcXDA1NVxcMDAwXFwxNDhcXDAwMFxcMDU1XFwwMDBcXDE0OVxcMDAwXFwwNDhcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDE1MFxcMDAwXFxcbiAgICBcXDE1MVxcMDAwXFwxNjFcXDAwMFxcMDY2XFwwMDBcXDE1OFxcMDAwXFwwNTNcXDAwMFxcMTU5XFwwMDBcXDA1M1xcMDAwXFwxNjBcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMTY1XFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMTY2XFwwMDBcXDA5M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwxMDNcXDAwMFxcMTA4XFwwMDBcXDExNlxcMDAwXFxcbiAgICBcXDEzMlxcMDAwXFwxMzRcXDAwMFxcMTM1XFwwMDBcXDEyOFxcMDAwXFwxMzlcXDAwMFxcMTM0XFwwMDBcXDE2NFxcMDAwXFwwOTNcXDAwMFxcXG4gICAgXFwxNzFcXDAwMFxcMDc3XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MlxcMDAwXFwxMTJcXDAwMFxcMTczXFwwMDBcXFxuICAgIFxcMTc0XFwwMDBcXDIxMFxcMDAwXFwyMjZcXDAwMFxcMjA4XFwwMDBcXDIxMVxcMDAwXFwyMTJcXDAwMFxcMDU5XFwwMDBcXDA4M1xcMDAwXFxcbiAgICBcXDEzNFxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTZcXDAwMFxcMjE4XFwwMDBcXDE0MVxcMDAwXFwyMTlcXDAwMFxcXG4gICAgXFwwOTNcXDAwMFxcMjIwXFwwMDBcXDIyMVxcMDAwXFwxMjNcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwyMjRcXDAwMFxcMTM2XFwwMDBcXFxuICAgIFxcMDk1XFwwMDBcXDIyNVxcMDAwXFwwMzVcXDAwMVxcMDY1XFwwMDFcXDIzNFxcMDAwXFwxNTVcXDAwMFxcMDA1XFwwMDFcXDA5N1xcMDAxXFxcbiAgICBcXDI1MFxcMDAwXFwyNTVcXDI1NVxcMjU0XFwwMDBcXDA1N1xcMDAxXFwwNjFcXDAwMVxcMDk1XFwwMDFcXDA3N1xcMDAwXFwwNDRcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDg4XFwwMDFcXDAwOVxcMDAxXFwwMjlcXDAwMVxcMDc2XFwwMDBcXDEyNFxcMDAwXFwwMzNcXDAwMVxcMDE4XFwwMDFcXFxuICAgIFxcMDc1XFwwMDBcXDA5OFxcMDAwXFwwMTlcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwODdcXDAwMVxcMTIwXFwwMDFcXDA4OVxcMDAxXFxcbiAgICBcXDA3NFxcMDAwXFwyMjVcXDAwMFxcMDUzXFwwMDFcXDEyMVxcMDAxXFwwNzNcXDAwMFxcMDkwXFwwMDFcXDA3MlxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOThcXDAwMFxcMTEzXFwwMDFcXDEyMlxcMDAwXFwwOTFcXDAwMVxcMDY0XFwwMDBcXDAwNFxcMDAxXFxcbiAgICBcXDA5M1xcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDE1NlxcMDAwXFwxMTJcXDAwMVxcMDk0XFwwMDFcXDA5NlxcMDAxXFwwOThcXDAwMVxcMDk5XFwwMDFcXDA0OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDEwMFxcMDAxXFwxNTdcXDAwMFxcXG4gICAgXFwxMDFcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMTgzXFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwwMjRcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMTAyXFwwMDFcXDEwM1xcMDAxXFwxMDVcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDEwNlxcMDAxXFwxMDdcXDAwMVxcMDQ4XFwwMDFcXDA0MFxcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDExMFxcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDExMVxcMDAxXFxcbiAgICBcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMTcxXFwwMDFcXDAzMVxcMDAxXFwxNzBcXDAwMVxcMDIzXFwwMDFcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDkyXFwwMDBcXDE2OFxcMDAxXFwwNjNcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwyNDhcXDAwMFxcMTY1XFwwMDFcXDI1MlxcMDAwXFxcbiAgICBcXDE2MlxcMDAxXFwwNTlcXDAwMVxcMDY5XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDI1NVxcMjU1XFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDM5XFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMTYzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDEyMFxcMDAwXFwwMDJcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwxNjZcXDAwMVxcMDU1XFwwMDFcXDE1M1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAwN1xcMDAxXFwxNjdcXDAwMVxcMTY0XFwwMDFcXDE2OVxcMDAxXFwwMTZcXDAwMVxcMTY0XFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDUxXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTM3XFwwMDFcXDE2NFxcMDAxXFwxNzJcXDAwMVxcMTg1XFwwMDFcXDEzNlxcMDAxXFwxNzNcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTdcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMTc0XFwwMDFcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA0NlxcMDAxXFxcbiAgICBcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMTgwXFwwMDBcXDE2NFxcMDAxXFwxODRcXDAwMVxcMTgxXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTI0XFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMTkyXFwwMDFcXDE3OFxcMDAxXFxcbiAgICBcXDAyMVxcMDAxXFwxNzlcXDAwMVxcMDk3XFwwMDBcXDE5M1xcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFwxODNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMjE2XFwwMDFcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMTg0XFwwMDFcXDIxNlxcMDAxXFwyMDlcXDAwMVxcMDk3XFwwMDBcXFxuICAgIFxcMjIzXFwwMDFcXDA5N1xcMDAwXFwyMDhcXDAwMVxcMjMwXFwwMDFcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjE5XFwwMDFcXDAzN1xcMDAxXFxcbiAgICBcXDIxNlxcMDAxXFwyMTdcXDAwMVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIxNlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwyMThcXDAwMVxcMjUwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEyNFxcMDAxXFwxMjRcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIyMVxcMDAxXFwwMDBcXDAwMFxcMjUzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyNDFcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMDAxXFwyNDJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjQ2XFwwMDFcXDEyOVxcMDAxXFwxMjlcXDAwMVxcXG4gICAgXFwyMjhcXDAwMVxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwMDBcXDAwMFxcMTk4XFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwyMzRcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAxXFwxNzdcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODhcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMjAxXFwwMDFcXDIyN1xcMDAxXFwwMDBcXDAwMFxcMTkxXFwwMDBcXDIwNlxcMDAxXFwxMjNcXDAwMVxcMTg5XFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxODlcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTVcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI0OFxcMDAxXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTZcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwyMDJcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMjZcXDAwMFxcMTk1XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIyMVxcMDAxXFwyMzlcXDAwMVxcXG4gICAgXFwyNTRcXDAwMVxcMDAwXFwwMDBcXDIwN1xcMDAwXFwyNDRcXDAwMVxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMDNcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMVxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjE3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIzMFxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODZcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTNcXDAwMVxcMDAwXFwwMDBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDAwMFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDIwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjM4XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY5XFwwMDFcXDA3MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA0XFwwMDFcXDA3M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMVxcMDAwXFwwMDBcXDA3MVxcMDAxXFwwNzZcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwODBcXDAwMVxcMTE5XFwwMDFcXDAwMFxcMDAwXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDA4MVxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTdcXDAwMVxcMDAwXFwwMDBcXDA3NVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxODVcXDAwMVxcMDAwXFwwMDBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyN1xcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyN1xcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTkxXFwwMDFcXDE0MlxcMDAxXFwxOTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0NlxcMDAxXFwxNDdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTQ2XFwwMDFcXDAwMFxcMDAwXFwxNTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc3XFwwMDFcXDE1MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNTZcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAxXFwxNTRcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTQ5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTM5XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OFxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxODdcXDAwMVxcMDAwXFwwMDBcXDE2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE2MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg5XFwwMDFcXDAwMFxcMDAwXFwxODlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTk5XFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIxNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDU3XFwwMDBcXDI1NVxcMjU1XFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAzXFwwMDBcXDE2OVxcMDAwXFwxMzRcXDAwMFxcMTc0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDIzNlxcMDAxXFwxMzZcXDAwMFxcMjU1XFwwMDFcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDBcXDEzNlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDAwXFwwMDBcXDEwN1xcMDAwXFwxMDJcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMjlcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMjA4XFwwMDBcXDIzM1xcMDAwXFwyNTVcXDAwMFxcXG4gICAgXFwwMTJcXDAwMVxcMDE1XFwwMDBcXDAxN1xcMDAwXFwwNjBcXDAwMFxcMDExXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDI0XFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAyMlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAxNFxcMDAwXFxcbiAgICBcXDAyN1xcMDAwXFwwMzNcXDAwMFxcMDE4XFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAxOVxcMDAwXFwwMzVcXDAwMFxcXG4gICAgXFwwNDBcXDAwMFxcMDM2XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDQxXFwwMDBcXDA0MlxcMDAwXFwwNDNcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXDAxMVxcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg1XFwwMDBcXDE0MFxcMDAwXFwwNjBcXDAwMFxcMDEzXFwwMDBcXDE0M1xcMDAwXFxcbiAgICBcXDE0NFxcMDAwXFwxNDVcXDAwMFxcMDQ4XFwwMDBcXDE0N1xcMDAwXFwwNDhcXDAwMFxcMTQ4XFwwMDBcXDAzOVxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA2NVxcMDAwXFwwMzlcXDAwMFxcMTQ5XFwwMDBcXFxuICAgIFxcMTUwXFwwMDBcXDE1NlxcMDAwXFwwNjNcXDAwMFxcMTU3XFwwMDBcXDA1MVxcMDAwXFwxNThcXDAwMFxcMDUxXFwwMDBcXDE1OVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFxcbiAgICBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwxNTVcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYxXFwwMDBcXDE2MlxcMDAwXFwxNTVcXDAwMFxcMDkxXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTdcXDAwMFxcMDY4XFwwMDBcXDEwMlxcMDAwXFwxMDdcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTMxXFwwMDBcXDEzM1xcMDAwXFwxMzNcXDAwMFxcMTI1XFwwMDBcXDEzOFxcMDAwXFwxMzNcXDAwMFxcMTYzXFwwMDBcXDA5NFxcMDAwXFxcbiAgICBcXDE2NVxcMDAwXFwwNjhcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTcxXFwwMDBcXDExMVxcMDAwXFwxNzJcXDAwMFxcXG4gICAgXFwxNzNcXDAwMFxcMjA2XFwwMDBcXDIwM1xcMDAwXFwyMDdcXDAwMFxcMjEwXFwwMDBcXDIxMVxcMDAwXFwwNThcXDAwMFxcMDgyXFwwMDBcXFxuICAgIFxcMTMzXFwwMDBcXDIxMlxcMDAwXFwyMTNcXDAwMFxcMjE0XFwwMDBcXDIxNVxcMDAwXFwyMTdcXDAwMFxcMTQwXFwwMDBcXDIxOFxcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwyMTlcXDAwMFxcMjIwXFwwMDBcXDExOVxcMDAwXFwyMjFcXDAwMFxcMjIyXFwwMDBcXDIyM1xcMDAwXFwxMzNcXDAwMFxcXG4gICAgXFwwOTFcXDAwMFxcMjAzXFwwMDBcXDAzNFxcMDAxXFwwNjJcXDAwMVxcMjMzXFwwMDBcXDE1MlxcMDAwXFwwMDFcXDAwMVxcMDgwXFwwMDFcXFxuICAgIFxcMjQ3XFwwMDBcXDA2MFxcMDAwXFwyNTFcXDAwMFxcMDU0XFwwMDFcXDA1OFxcMDAxXFwwODFcXDAwMVxcMDY4XFwwMDBcXDA0MVxcMDAxXFxcbiAgICBcXDA4MlxcMDAxXFwwODNcXDAwMVxcMDA2XFwwMDFcXDAyNlxcMDAxXFwwNjhcXDAwMFxcMTE5XFwwMDBcXDAzMFxcMDAxXFwwMTVcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMDk0XFwwMDBcXDAxNVxcMDAxXFwwODRcXDAwMVxcMDg1XFwwMDFcXDA4NlxcMDAxXFwwNzFcXDAwMVxcMDg4XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDIwM1xcMDAwXFwwNTBcXDAwMVxcMDcxXFwwMDFcXDA2OFxcMDAwXFwwODlcXDAwMVxcMDY4XFwwMDBcXDA2OFxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA5N1xcMDAwXFwwNzZcXDAwMVxcMTE5XFwwMDBcXDA5MFxcMDAxXFwwNjNcXDAwMFxcMDAxXFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMTUyXFwwMDBcXDA3NlxcMDAxXFwwOTNcXDAwMVxcMDk1XFwwMDFcXDA5N1xcMDAxXFwwOThcXDAwMVxcMDQ1XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk5XFwwMDFcXDE1MlxcMDAwXFxcbiAgICBcXDEwMFxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDAyMFxcMDAxXFwwNzZcXDAwMVxcMDY1XFwwMDBcXDAyMFxcMDAxXFwxMDFcXDAwMVxcMTAyXFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMTA1XFwwMDFcXDEwNlxcMDAxXFwwNDVcXDAwMVxcMDM2XFwwMDFcXDEwN1xcMDAxXFwxMDhcXDAwMVxcMTA5XFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTEwXFwwMDFcXFxuICAgIFxcMDI2XFwwMDFcXDEyMVxcMDAxXFwxNTdcXDAwMVxcMDMwXFwwMDFcXDE1OFxcMDAxXFwwMjBcXDAwMVxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwOTFcXDAwMFxcMTU5XFwwMDFcXDA2MlxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDI0N1xcMDAwXFwxNjBcXDAwMVxcMjUxXFwwMDBcXFxuICAgIFxcMTYxXFwwMDFcXDA1OFxcMDAxXFwwNjhcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDk0XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMzZcXDAwMVxcMDQxXFwwMDFcXDA5N1xcMDAwXFwxNjJcXDAwMVxcXG4gICAgXFwxNjNcXDAwMVxcMTE5XFwwMDBcXDAwMVxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDE2NVxcMDAxXFwwNTRcXDAwMVxcMTUyXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDA2XFwwMDFcXDE2NlxcMDAxXFwxNjdcXDAwMVxcMTY4XFwwMDFcXDAxNVxcMDAxXFwxNjlcXDAwMVxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNTBcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxMzNcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNTRcXDAwMVxcMTMzXFwwMDFcXDE3MlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5NVxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzNcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDQ1XFwwMDFcXFxuICAgIFxcMTc0XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDFcXDE1NFxcMDAxXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxMjJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwxNDhcXDAwMVxcMTc3XFwwMDFcXFxuICAgIFxcMDIwXFwwMDFcXDE3OFxcMDAxXFwwOThcXDAwMFxcMTQ4XFwwMDFcXDE3OVxcMDAxXFwxODBcXDAwMVxcMTgxXFwwMDFcXDE4MlxcMDAxXFxcbiAgICBcXDE4M1xcMDAxXFwyMTZcXDAwMVxcMTkzXFwwMDFcXDA5NVxcMDAwXFwxNTRcXDAwMVxcMjE2XFwwMDFcXDIwNVxcMDAxXFwwOThcXDAwMFxcXG4gICAgXFwyMjJcXDAwMVxcMDk1XFwwMDBcXDIwNVxcMDAxXFwyMjlcXDAwMVxcMjU1XFwyNTVcXDA5NVxcMDAwXFwyMThcXDAwMVxcMDM2XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDIxNVxcMDAxXFwyNTVcXDI1NVxcMjE4XFwwMDFcXDIxNVxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIxNlxcMDAxXFwwOTVcXDAwMFxcMjU1XFwyNTVcXDA5NVxcMDAwXFwwOTVcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMjE1XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEyMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOThcXDAwMFxcMjU1XFwyNTVcXDIxNVxcMDAxXFwyNDdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMTI1XFwwMDFcXDEyOFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjIwXFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDEyMVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwwOThcXDAwMFxcMDk4XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDIzOFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNDNcXDAwMVxcMTI1XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTk3XFwwMDFcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI1NVxcMjU1XFwxOTRcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDIzMVxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk3XFwwMDFcXDE3NlxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwyNTVcXDI1NVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxODVcXDAwMFxcMjA1XFwwMDFcXDEyMlxcMDAxXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXFxuICAgIFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTNcXDAwMVxcMjQ3XFwwMDFcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OVxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDE5OVxcMDAwXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFxcbiAgICBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDIwNFxcMDAwXFwxOTRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjIwXFwwMDFcXDIzOFxcMDAxXFxcbiAgICBcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMTk5XFwwMDBcXDI0M1xcMDAxXFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNFxcMDAxXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwxOTdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMjhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjI4XFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXFxuICAgIFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NVxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXFxuICAgIFxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTkyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMTk5XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyMzdcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTE1XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNVxcMDAxXFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcXG4gICAgXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcXG4gICAgXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFxcbiAgICBcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMTI2XFwwMDFcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMTI5XFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxODRcXDAwMVxcMTM4XFwwMDFcXDE4NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcXG4gICAgXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNTZcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDE4NlxcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxOThcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMVxcMjU1XFwyNTVcXDE4N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxODZcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcXG4gICAgXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDIwMVxcMDAxXFwyMDFcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcbiMgMTAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcbiMgMTAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBOdWxsIClcbiMgMTAyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIk5hTlwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiSW5maW5pdHlcIlxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCBcIi1JbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyAxOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZ2xpdCAoZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBTdHJpbmdsaXQgXyAtPiBcInN0cmluZ2xpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50IG9mIGludFxuICAgIHwgYEludGxpdCBvZiBzdHJpbmdcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCByZWMgdG9fYmFzaWMgOiB0IC0+IEJhc2ljLnQgPSBmdW5jdGlvblxuICB8IChgTnVsbCB8IGBCb29sIF8gfCBgSW50IF8gfCBgRmxvYXQgXyB8IGBTdHJpbmcgXykgYXMgeCAtPiB4XG4gIHwgYEludGxpdCBzIC0+IGBTdHJpbmcgc1xuICB8IGBMaXN0IGwgfCBgVHVwbGUgbCAtPiBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB0b19iYXNpYyBsKSlcbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgYEFzc29jIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCB0b19iYXNpYyB2KSkgbCkpXG4gIHwgYFZhcmlhbnQgKGssIE5vbmUpIC0+IGBTdHJpbmcga1xuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIC0+IGBMaXN0IFsgYFN0cmluZyBrOyB0b19iYXNpYyB2IF1cblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMSBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIG1vZHVsZSBMZXhpbmcgPVxuICAgICgqXG4gICAgICBXZSBvdmVycmlkZSBMZXhpbmcuZW5naW5lIGluIG9yZGVyIHRvIGF2b2lkIGNyZWF0aW5nIGEgbmV3IHBvc2l0aW9uXG4gICAgICByZWNvcmQgZWFjaCB0aW1lIGEgcnVsZSBpcyBtYXRjaGVkLlxuICAgICAgVGhpcyByZWR1Y2VzIHRvdGFsIHBhcnNpbmcgdGltZSBieSBhYm91dCAzMSUuXG4gICAgKilcbiAgc3RydWN0XG4gICAgaW5jbHVkZSBMZXhpbmdcblxuICAgIGV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcblxuICAgIGxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gICAgICBsZXQgcmVzdWx0ID0gY19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICAgICAgKCpcbiAgICAgIGlmIHJlc3VsdCA+PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgICAgIGVuZDtcbiAgICAgICopXG4gICAgICByZXN1bHRcbiAgZW5kXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IENvbW1vbi5MZXhlcl9zdGF0ZS50ID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBkZWMgYyA9XG4gICAgQ2hhci5jb2RlIGMgLSA0OFxuXG4gIGxldCBoZXggYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICcwJy4uJzknIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcbiAgICAgIHwgJ2EnLi4nZicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyArIDEwXG4gICAgICB8ICdBJy4uJ0YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyAxMFxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCBjdXN0b21fZXJyb3IgZGVzY3IgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBvZmZzID0gbGV4YnVmLmxleF9hYnNfcG9zIC0gMSBpblxuICAgIGxldCBib2wgPSB2LmJvbCBpblxuICAgIGxldCBwb3MxID0gb2ZmcyArIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIC0gYm9sIC0gMSBpblxuICAgIGxldCBwb3MyID0gbWF4IHBvczEgKG9mZnMgKyBsZXhidWYubGV4X2N1cnJfcG9zIC0gYm9sKSBpblxuICAgIGxldCBmaWxlX2xpbmUgPVxuICAgICAgbWF0Y2ggdi5mbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBcIkxpbmVcIlxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVzLCBsaW5lXCIgc1xuICAgIGluXG4gICAgbGV0IGJ5dGVzID1cbiAgICAgIGlmIHBvczEgPSBwb3MyIHRoZW5cbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbnRmLnNwcmludGYgXCJieXRlcyAlaS0laVwiIChwb3MxKzEpIChwb3MyKzEpXG4gICAgaW5cbiAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCIlcyAlaSwgJXM6XFxuJXNcIiBmaWxlX2xpbmUgdi5sbnVtIGJ5dGVzIGRlc2NyIGluXG4gICAgQ29tbW9uLmpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJ1wiIGRlc2NyIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikpXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGJ1Zl9zaXplID0gMzIgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBidWZfc2l6ZSBpblxuICAgIGxldCAoKSA9IExleGVyX3V0aWxzLnJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgYnVmX3NpemUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIHRyeSBgSW50IChleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBgSW50bGl0IChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcblxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpICA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA8PSBtaW4xMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gLSBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA+IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGBUdXBsZSAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBjb25zID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGBWYXJpYW50IChjb25zLCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgMjg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgMjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDI4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDI4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOSAtPlxuIyAyOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDI5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG4jIDEyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDI5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAyOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDI5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcbiMgMTI0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuIyAxMjc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcbiMgMTI3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcbiMgMTI4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuIyAxMjg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAzMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuIyAxMzEwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzE1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzMjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzI1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cbiMgMzIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG5cbiAgICAgICAgIClcbiMgMTMzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuIyAxMzQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzcwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuIyAxMzc1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuIyAxMzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG4jIDE0MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAxNDIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG4jIDE0NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuIyAxNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM2OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDE0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcbiMgMTUzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcbiMgMTU0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAzODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDE1NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE1OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjEwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDE2MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcbiMgMTY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY2NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTcwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTc5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNzk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcbiMgMTg1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcbiMgMTg1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG4jIDE4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSApXG4jIDE4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDUwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG4jIDE4ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDUyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTg5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNTIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxubGV0XG4jIDUzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDUzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcbiMgMTk0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjAxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIwODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIClcbiMgMjEzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIxNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjIxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMjI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIyODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjI5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjM1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG4jIDIzOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcbiMgMjQwMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQzMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDczNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDczNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDc0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNTQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA3NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjU1MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTc3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNzY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA3ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA5MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjg0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyA5MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgOTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgOTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjg3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDkzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI4NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcIic7XG4gICAgICAgICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmXG4gICAgICAgICApXG4jIDI4OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyODk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonO1xuICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfZ3QgdiBsZXhidWYgKVxuIyAyOTE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMjkyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjkzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgNDY2XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjk0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjk0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjk1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA5ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMzAwMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5ODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiA0ODBcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzAzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgNDg1XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzA2MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDg1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMDkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiA0OTJcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMxMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcbiMgMzE0OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE1MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE1OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAzMTcwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzE4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiKi9cIiApXG4jIDMxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG4jIDMxOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gQ29tbW9uLmluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWRfanNvbiB2IGxleGJ1ZlxuICAgIGluXG5cbiAgICBpZiBub3Qgc3RyZWFtIHRoZW5cbiAgICAgIGZpbmlzaCB2IGxleGJ1ZjtcblxuICAgIHhcblxuXG4gIGxldCBmcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgcyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkOl8gcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG4jIDMzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG5leGNlcHRpb24gVHlwZV9lcnJvciBvZiBzdHJpbmcgKiB0XG5cbmxldCB0eXBlb2YgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBfIC0+IFwib2JqZWN0XCJcbiAgfCBgQm9vbCBfIC0+IFwiYm9vbFwiXG4gIHwgYEZsb2F0IF8gLT4gXCJmbG9hdFwiXG4gIHwgYEludCBfIC0+IFwiaW50XCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICB8IGBUdXBsZSBfIC0+IFwidHVwbGVcIlxuICB8IGBWYXJpYW50IF8gLT4gXCJ2YXJpYW50XCJcblxubGV0IHR5cGVyciBtc2cganMgPSByYWlzZSAoVHlwZV9lcnJvciAobXNnIF4gdHlwZW9mIGpzLCBqcykpXG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgb2Ygc3RyaW5nICogdFxuXG5sZXQgYXNzb2MgbmFtZSBvYmogPSB0cnkgTGlzdC5hc3NvYyBuYW1lIG9iaiB3aXRoIE5vdF9mb3VuZCAtPiBgTnVsbFxuXG5sZXQgbWVtYmVyIG5hbWUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gYXNzb2MgbmFtZSBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IG1lbWJlciAnXCIgXiBuYW1lIF4gXCInIG9mIG5vbi1vYmplY3QgdHlwZSBcIikganNcblxubGV0IHJlYyBwYXRoIGwgb2JqID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gU29tZSBvYmpcbiAgfCBrZXkgOjogbCAtPiAoXG4gICAgICBtYXRjaCBvYmogd2l0aFxuICAgICAgfCBgQXNzb2MgYXNzb2MgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Mga2V5IGFzc29jIHdpdGhcbiAgICAgICAgICB8IG9iaiAtPiBwYXRoIGwgb2JqXG4gICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IGluZGV4IGkgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgYXMganMgLT5cbiAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICBsZXQgd3JhcHBlZF9pbmRleCA9IGlmIGkgPCAwIHRoZW4gbGVuICsgaSBlbHNlIGkgaW5cbiAgICAgIGlmIHdyYXBwZWRfaW5kZXggPCAwIHx8IHdyYXBwZWRfaW5kZXggPj0gbGVuIHRoZW5cbiAgICAgICAgcmFpc2UgKFVuZGVmaW5lZCAoXCJJbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG91dCBvZiBib3VuZHNcIiwganMpKVxuICAgICAgZWxzZSBMaXN0Lm50aCBsIHdyYXBwZWRfaW5kZXhcbiAgfCBqcyAtPlxuICAgICAgdHlwZXJyIChcIkNhbid0IGdldCBpbmRleCBcIiBeIHN0cmluZ19vZl9pbnQgaSBeIFwiIG9mIG5vbi1hcnJheSB0eXBlIFwiKSBqc1xuXG5sZXQgbWFwIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gYExpc3QgKExpc3QubWFwIGYgbClcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBtYXAgZnVuY3Rpb24gb3ZlciBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgdG9fYXNzb2MgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBvYmogLT4gb2JqXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgb2JqZWN0LCBnb3QgXCIganNcblxubGV0IHRvX29wdGlvbiBmID0gZnVuY3Rpb24gYE51bGwgLT4gTm9uZSB8IHggLT4gU29tZSAoZiB4KVxubGV0IHRvX2Jvb2wgPSBmdW5jdGlvbiBgQm9vbCBiIC0+IGIgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sLCBnb3QgXCIganNcblxubGV0IHRvX2Jvb2xfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgQm9vbCBiIC0+IFNvbWUgYlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBib29sIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gZmxvYXQgaVxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbnVtYmVyX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgKGZsb2F0IGkpXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBpXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIGlcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcsIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBzIC0+IFNvbWUgc1xuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgSW50IHggLT4gU29tZSAoZmxvYXQgeClcbiAgICAgIHwgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9zdHJpbmcgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBTdHJpbmcgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfZmxvYXQgb2IgZlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFN0cmluZ2xpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZ2xpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZyBhLCBgU3RyaW5nIGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4iLCJvcGVuIFN0ZExhYmVsc1xub3BlbiBNb3JlTGFiZWxzXG5vcGVuISBZb2pzb25cblxudHlwZSB0ID0gWW9qc29uLlNhZmUudFxuXG5sZXQgeW9qc29uX29mX3VuaXQgKCkgOiB0ID0gYE51bGxcbmxldCB5b2pzb25fb2ZfYm9vbCBiIDogdCA9IGBCb29sIGJcbmxldCB5b2pzb25fb2Zfc3RyaW5nIHN0ciA6IHQgPSBgU3RyaW5nIHN0clxubGV0IHlvanNvbl9vZl9ieXRlcyBieXRlcyA6IHQgPSBgU3RyaW5nIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgeW9qc29uX29mX2NoYXIgYyA6IHQgPSBgU3RyaW5nIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgeW9qc29uX29mX2ludCBuIDogdCA9IGBJbnQgblxubGV0IHlvanNvbl9vZl9mbG9hdCBuIDogdCA9IGBGbG9hdCBuXG5sZXQgeW9qc29uX29mX2ludDMyIChuIDogSW50MzIudCkgOiB0ID0gYEludGxpdCAoSW50MzIudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX2ludDY0IChuIDogSW50NjQudCkgOiB0ID0gYEludGxpdCAoSW50NjQudG9fc3RyaW5nIG4pXG5sZXQgeW9qc29uX29mX25hdGl2ZWludCBuIDogdCA9IGBJbnRsaXQgKE5hdGl2ZWludC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfcmVmIHlvanNvbl9vZl9fYSByZiA9IHlvanNvbl9vZl9fYSAhcmZcbmxldCB5b2pzb25fb2ZfbGF6eV90IHlvanNvbl9vZl9fYSBsdiA9IHlvanNvbl9vZl9fYSAoTGF6eS5mb3JjZSBsdilcblxubGV0IHlvanNvbl9vZl9vcHRpb24geW9qc29uX29mX19hID0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT4geW9qc29uX29mX19hIHhcbiAgfCBOb25lIC0+IGBOdWxsXG47O1xuXG5sZXQgeW9qc29uX29mX3BhaXIgeW9qc29uX29mX19hIHlvanNvbl9vZl9fYiAoYSwgYikgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYiBdXG47O1xuXG5sZXQgeW9qc29uX29mX3RyaXBsZSB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIHlvanNvbl9vZl9fYyAoYSwgYiwgYykgPVxuICBgTGlzdCBbIHlvanNvbl9vZl9fYSBhOyB5b2pzb25fb2ZfX2IgYjsgeW9qc29uX29mX19jIGMgXVxuOztcblxuKCogTGlzdC5yZXYgKExpc3QucmV2X21hcCAuLi4pIGlzIHRhaWwgcmVjdXJzaXZlLCB0aGUgT0NhbWwgc3RhbmRhcmRcbiAgIGxpYnJhcnkgTGlzdC5tYXAgaXMgTk9ULiAqKVxubGV0IHlvanNvbl9vZl9saXN0IHlvanNvbl9vZl9fYSBsc3QgPSBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCB+Zjp5b2pzb25fb2ZfX2EgbHN0KSlcblxubGV0IHlvanNvbl9vZl9hcnJheSB5b2pzb25fb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHlvanNvbl9vZl9fYSBhci4oaSkgOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgYExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCB5b2pzb25fb2ZfaGFzaHRibCB5b2pzb25fb2Zfa2V5IHlvanNvbl9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IGBMaXN0IFsgeW9qc29uX29mX2tleSBrOyB5b2pzb25fb2ZfdmFsIHYgXSA6OiBhY2MgaW5cbiAgYExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgeW9qc29uX29mX29wYXF1ZSBfID0gYFN0cmluZyBcIjxvcGFxdWU+XCJcbmxldCB5b2pzb25fb2ZfZnVuIF8gPSBgU3RyaW5nIFwiPGZ1bj5cIlxuXG5leGNlcHRpb24gT2ZfeW9qc29uX2Vycm9yIG9mIGV4biAqIHRcblxubGV0IHJlY29yZF9jaGVja19leHRyYV9maWVsZHMgPSByZWYgdHJ1ZVxubGV0IG9mX3lvanNvbl9lcnJvcl9leG4gZXhjIHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKGV4YywgeW9qc29uKSlcbmxldCBvZl95b2pzb25fZXJyb3Igd2hhdCB5b2pzb24gPSByYWlzZSAoT2ZfeW9qc29uX2Vycm9yIChGYWlsdXJlIHdoYXQsIHlvanNvbikpXG5cbmxldCB1bml0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBOdWxsIC0+ICgpXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ1bml0X29mX3lvanNvbjogYE51bGwgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgYm9vbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgQm9vbCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJvb2xfb2ZfeW9qc29uOiB0cnVlL2ZhbHNlIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHN0cmluZ19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInN0cmluZ19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBieXRlc19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgU3RyaW5nIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJieXRlc19vZl95b2pzb246IHN0cmluZyBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBjaGFyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBtdXN0IGNvbnRhaW4gb25lIGNoYXJhY3RlciBvbmx5XCIgeW9qc29uO1xuICAgIHN0ci5bMF1cbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImNoYXJfb2ZfeW9qc29uOiBzdHJpbmcgb2Ygc2l6ZSBvbmUgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnQgdiAtPiB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGZsb2F0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBGbG9hdCB2IC0+IHZcbiAgfCBgSW50IGkgLT4gZmxvYXRfb2ZfaW50IGlcbiAgfCBgSW50bGl0IHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJmbG9hdF9vZl95b2pzb246IGZsb2F0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDMyX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDMyLm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50MzIub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDMyX29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnQ2NF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgSW50bGl0IHN0ciAtPiBJbnQ2NC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IEludDY0Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJpbnQ2NF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgbmF0aXZlaW50X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyXG4gIHwgYEludCB2IC0+IE5hdGl2ZWludC5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwibmF0aXZlaW50X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCByZWZfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSByZWYgKGFfX29mX3lvanNvbiB5b2pzb24pXG5sZXQgbGF6eV90X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID0gTGF6eS5mcm9tX3ZhbCAoYV9fb2ZfeW9qc29uIHlvanNvbilcblxubGV0IG9wdGlvbl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGVsIC0+IFNvbWUgKGFfX29mX3lvanNvbiBlbClcbjs7XG5cbmxldCBwYWlyX29mX3lvanNvbiBhX19vZl95b2pzb24gYl9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBhLCBiXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJwYWlyX29mX3lvanNvbjogaW52YWxpZCBmb3JtYXRcIiB5b2pzb25cbjs7XG5cbmxldCB0cmlwbGVfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24gY19fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgWyBhX3lvanNvbjsgYl95b2pzb247IGNfeW9qc29uIF0gLT5cbiAgICBsZXQgYSA9IGFfX29mX3lvanNvbiBhX3lvanNvbiBpblxuICAgIGxldCBiID0gYl9fb2ZfeW9qc29uIGJfeW9qc29uIGluXG4gICAgbGV0IGMgPSBjX19vZl95b2pzb24gY195b2pzb24gaW5cbiAgICBhLCBiLCBjXG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJ0cmlwbGVfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IGxpc3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl95b2pzb24gaW5cbiAgICBMaXN0LnJldiByZXZfbHN0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJsaXN0X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBhcnJheV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgW10gLT4gW3x8XVxuICB8IGBMaXN0IChoIDo6IHQpIC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHQgKyAxIGluXG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIChhX19vZl95b2pzb24gaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl95b2pzb24gaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSB0XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJhcnJheV9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaGFzaHRibF9vZl95b2pzb24ga2V5X29mX3lvanNvbiB2YWxfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IGh0YmwgPSBIYXNodGJsLmNyZWF0ZSAwIGluXG4gICAgbGV0IGFjdCA9IGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IFsga195b2pzb247IHZfeW9qc29uIF0gLT5cbiAgICAgICAgSGFzaHRibC5hZGQgaHRibCB+a2V5OihrZXlfb2ZfeW9qc29uIGtfeW9qc29uKSB+ZGF0YToodmFsX29mX3lvanNvbiB2X3lvanNvbilcbiAgICAgIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJoYXNodGJsX29mX3lvanNvbjogdHVwbGUgbGlzdCBuZWVkZWRcIiB5b2pzb25cbiAgICBpblxuICAgIExpc3QuaXRlciBsc3QgfmY6YWN0O1xuICAgIGh0YmxcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IG9wYXF1ZV9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwib3BhcXVlX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgb3BhcXVlIHZhbHVlc1wiIHlvanNvblxuOztcblxubGV0IGZ1bl9vZl95b2pzb24geW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIFwiZnVuX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgZnVuY3Rpb24gdmFsdWVzXCIgeW9qc29uXG47O1xuXG5tb2R1bGUgUHJpbWl0aXZlcyA9IHN0cnVjdFxuICBsZXQgeW9qc29uX29mX2FycmF5ID0geW9qc29uX29mX2FycmF5XG4gIGxldCBhcnJheV9vZl95b2pzb24gPSBhcnJheV9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ib29sID0geW9qc29uX29mX2Jvb2xcbiAgbGV0IGJvb2xfb2ZfeW9qc29uID0gYm9vbF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9jaGFyID0geW9qc29uX29mX2NoYXJcbiAgbGV0IGNoYXJfb2ZfeW9qc29uID0gY2hhcl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9mbG9hdCA9IHlvanNvbl9vZl9mbG9hdFxuICBsZXQgZmxvYXRfb2ZfeW9qc29uID0gZmxvYXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50ID0geW9qc29uX29mX2ludFxuICBsZXQgaW50X29mX3lvanNvbiA9IGludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQzMiA9IHlvanNvbl9vZl9pbnQzMlxuICBsZXQgaW50MzJfb2ZfeW9qc29uID0gaW50MzJfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaW50NjQgPSB5b2pzb25fb2ZfaW50NjRcbiAgbGV0IGludDY0X29mX3lvanNvbiA9IGludDY0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xpc3QgPSB5b2pzb25fb2ZfbGlzdFxuICBsZXQgbGlzdF9vZl95b2pzb24gPSBsaXN0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX25hdGl2ZWludCA9IHlvanNvbl9vZl9uYXRpdmVpbnRcbiAgbGV0IG5hdGl2ZWludF9vZl95b2pzb24gPSBuYXRpdmVpbnRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfb3B0aW9uID0geW9qc29uX29mX29wdGlvblxuICBsZXQgb3B0aW9uX29mX3lvanNvbiA9IG9wdGlvbl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9yZWYgPSB5b2pzb25fb2ZfcmVmXG4gIGxldCByZWZfb2ZfeW9qc29uID0gcmVmX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3N0cmluZyA9IHlvanNvbl9vZl9zdHJpbmdcbiAgbGV0IHN0cmluZ19vZl95b2pzb24gPSBzdHJpbmdfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfYnl0ZXMgPSB5b2pzb25fb2ZfYnl0ZXNcbiAgbGV0IGJ5dGVzX29mX3lvanNvbiA9IGJ5dGVzX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3VuaXQgPSB5b2pzb25fb2ZfdW5pdFxuICBsZXQgdW5pdF9vZl95b2pzb24gPSB1bml0X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2xhenlfdCA9IHlvanNvbl9vZl9sYXp5X3RcbiAgbGV0IGxhenlfdF9vZl95b2pzb24gPSBsYXp5X3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfaGFzaHRibCA9IHlvanNvbl9vZl9oYXNodGJsXG4gIGxldCBoYXNodGJsX29mX3lvanNvbiA9IGhhc2h0Ymxfb2ZfeW9qc29uXG5lbmRcbiIsIigqIENvbnZfZXJyb3I6IE1vZHVsZSBmb3IgSGFuZGxpbmcgRXJyb3JzIGR1cmluZyBBdXRvbWF0ZWQgWW9qc29uXG4gICBDb252ZXJzaW9ucyAqKVxuXG5vcGVuISBTdGRMYWJlbHNcbm9wZW4gWW9qc29uX2NvbnZcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBFcnJvcnMgY29uY2VybmluZyB0dXBsZXMgKilcblxubGV0IHR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBsb2MgbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKHNwcmludGYgXCIlc19vZl95b2pzb246IHR1cGxlIG9mIHNpemUgJWQgZXhwZWN0ZWRcIiBsb2MgbikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBzdW0gdHlwZXMgKilcblxubGV0IHN0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRoaXMgY29uc3RydWN0b3IgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgeW9qc29uID1cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgc3RhZ190YWtlc19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYW4gZW1wdHkgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCB1bmV4cGVjdGVkX3N0YWcgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB1bmV4cGVjdGVkIHZhcmlhbnQgY29uc3RydWN0b3JcIikgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICBsZXQgZmxkX25hbWVzX3N0ciA9IFN0cmluZy5jb25jYXQgKExpc3QucmV2IHJldl9mbGRfbmFtZXMpIH5zZXA6XCIgXCIgaW5cbiAgbGV0IG1zZyA9IHNwcmludGYgXCIlc19vZl95b2pzb246ICVzOiAlc1wiIGxvYyB3aGF0IGZsZF9uYW1lc19zdHIgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBsb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb24gPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZHVwbGljYXRlIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJleHRyYSBmaWVsZHNcIiB+bG9jIHJldl9mbGRfbmFtZXMgeW9qc29uXG47O1xuXG5sZXQgcmVjIHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IChMaXN0LnJldiBmaWVsZHMpIH5zZXA6XCIgXCJcbiAgfCAodHJ1ZSwgZmllbGQpIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCAoZmllbGQgOjogZmllbGRzKSByZXN0XG4gIHwgXyA6OiByZXN0IC0+IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgZmllbGRzIHJlc3Rcbjs7XG5cbmxldCByZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzIGxvYyB5b2pzb24gbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl95b2pzb246IHRoZSBmb2xsb3dpbmcgcmVjb3JkIGVsZW1lbnRzIHdlcmUgdW5kZWZpbmVkOiAlc1wiIGxvYyB1bmRlZmluZWRcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPSBsb2MgXiBcIl9vZl95b2pzb246IGxpc3QgaW5zdGVhZCBvZiBhdG9tIGZvciByZWNvcmQgZXhwZWN0ZWRcIiBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIGxvYyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBsb2NcbiAgICBeIFwiX29mX3lvanNvbjogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBcXFxuICAgICAgIGZpZWxkc1wiXG4gIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHlvanNvblxuOztcblxubGV0IHB0YWdfbm9fYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgZG9lcyBub3QgdGFrZSBhcmd1bWVudHNcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyBjbnN0ciB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCB0YWcgJVMgaGFzIGluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzXCJcbiAgICAgIGxvY1xuICAgICAgY25zdHJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiBhIG5lc3RlZCBsaXN0IGlzIGFuIGludmFsaWQgcG9seW1vcnBoaWMgdmFyaWFudFwiKVxuICAgIHlvanNvblxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yXG4gICAgKGxvYyBeIFwiX29mX3lvanNvbjogdGhlIGVtcHR5IGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfdHlwZSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHRyeWluZyB0byBjb252ZXJ0IGFuIGVtcHR5IHR5cGVcIikgeW9qc29uXG47O1xuIiwibW9kdWxlIFlvanNvbl9jb252X2Vycm9yID0gWW9qc29uX2NvbnZfZXJyb3Jcbm1vZHVsZSBZb2pzb25fY29udiA9IFlvanNvbl9jb252XG5tb2R1bGUgWW9qc29uYWJsZSA9IFlvanNvbmFibGVfaW50ZlxubW9kdWxlIFlvanNvbiA9IFlvanNvblxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9XG4gICAgfCBOb25lXG4gICAgfCBTb21lIG9mICdhXG5lbmRcblxuZXh0ZXJuYWwgaWdub3JlIDogXyAtPiB1bml0ID0gXCIlaWdub3JlXCJcbmV4dGVybmFsIHBvbHlfZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG5sZXQgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBmdW4geCAtPiAheFxuIiwiIyAxIFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG50eXBlIG5vbnJlYyBpbnQgPSBpbnRcbnR5cGUgbm9ucmVjIGNoYXIgPSBjaGFyXG50eXBlIG5vbnJlYyBzdHJpbmcgPSBzdHJpbmdcbnR5cGUgbm9ucmVjIGZsb2F0ID0gZmxvYXRcbnR5cGUgbm9ucmVjIGJvb2wgPSBib29sXG50eXBlIG5vbnJlYyB1bml0ID0gdW5pdFxudHlwZSBub25yZWMgZXhuID0gZXhuXG50eXBlIG5vbnJlYyAnYSBhcnJheSA9ICdhIGFycmF5XG50eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdFxudHlwZSBub25yZWMgJ2Egb3B0aW9uID0gJ2Egb3B0aW9uXG50eXBlIG5vbnJlYyBuYXRpdmVpbnQgPSBuYXRpdmVpbnRcbnR5cGUgbm9ucmVjIGludDMyID0gaW50MzJcbnR5cGUgbm9ucmVjIGludDY0ID0gaW50NjRcbnR5cGUgbm9ucmVjICdhIGxhenlfdCA9ICdhIGxhenlfdFxudHlwZSBub25yZWMgYnl0ZXMgPSBieXRlc1xuXG4jIDE4IFwicHB4X2Rlcml2aW5nX3J1bnRpbWUuY3Bwby5tbFwiXG4oKiBXZSByZXF1aXJlIDQuMDggd2hpbGUgNC4wNyBhbHJlYWR5IGhhcyBhIFN0ZGxpYiBtb2R1bGUuXG4gICBJbiA0LjA3LCB0aGUgdHlwZSBlcXVhbGl0aWVzIG9uIFN0ZGxpYi5QZXJ2YXNpdmVzXG4gICBhcmUgbm90IHN0cm9uZyBlbm91Z2ggZm9yIHRoZSAnaW5jbHVkZSBTdGRsaWInXG4gICBiZWxvdyB0byBzYXRpc2Z5IHRoZSBzaWduYXR1cmUgY29uc3RyYWludHMgb25cbiAgIFBweF9kZXJpdmluZ19ydW50aW1lLlBlcnZhc2l2ZXMuICopXG5tb2R1bGUgU3RkbGliID0gU3RkbGliXG5cbmluY2x1ZGUgU3RkbGliXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgcmVzdWx0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuXG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgdCA9XG4gICAgfCBPayBvZiAnYVxuICAgIHwgRXJyb3Igb2YgJ2JcbmVuZFxuIiwiXG50eXBlIHQgPSBpbnRcbmxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbmxldCBjb21wYXJlICh4IDogaW50KSAoeSA6IGludCkgPSBjb21wYXJlIHggeVxubGV0IHRvX2ludCB4ID0geFxubGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuXG5sZXQgaW50ZXJzZWN0IHggeSA9IHggbGFuZCB5IDw+IDBcbmxldCAoKyspIHggeSA9IHggbG9yIHlcblxubGV0IGR1bW15ID0gLTFcbmxldCBpbmV4aXN0YW50ID0gMVxubGV0IGxldHRlciA9IDJcbmxldCBub3RfbGV0dGVyID0gNFxubGV0IG5ld2xpbmUgPSA4XG5sZXQgbGFzdG5ld2xpbmUgPSAxNlxubGV0IHNlYXJjaF9ib3VuZGFyeSA9IDMyXG5cbmxldCBmcm9tX2NoYXIgPSBmdW5jdGlvblxuICAoKiBTaG91bGQgbWF0Y2ggW2N3b3JkXSBkZWZpbml0aW9uICopXG4gIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcMTcwJyB8ICdcXDE4MScgfCAnXFwxODYnXG4gIHwgJ1xcMTkyJy4uJ1xcMjE0JyB8ICdcXDIxNicuLidcXDI0NicgfCAnXFwyNDgnLi4nXFwyNTUnIC0+XG4gICAgbGV0dGVyXG4gIHwgJ1xcbicgLT5cbiAgICBub3RfbGV0dGVyICsrIG5ld2xpbmVcbiAgfCBfIC0+XG4gICAgbm90X2xldHRlclxuIiwiKCoqIFZlcnkgc21hbGwgdG9vbGluZyBmb3IgZm9ybWF0IHByaW50ZXJzLiAqKVxuXG5pbmNsdWRlIEZvcm1hdFxuXG50eXBlICdhIHQgPSBGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXRcblxubGV0IGxpc3QgPSBwcF9wcmludF9saXN0XG5sZXQgc3RyID0gcHBfcHJpbnRfc3RyaW5nXG5sZXQgc2V4cCBmbXQgcyBwcCB4ID0gZnByaW50ZiBmbXQgXCJAWzwzPiglc0AgJWEpQF1cIiBzIHBwIHhcbmxldCBwYWlyIHBwMSBwcDIgZm10ICh2MSx2MikgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgOyBwcDIgZm10IHYyXG5sZXQgdHJpcGxlIHBwMSBwcDIgcHAzIGZtdCAodjEsIHYyLCB2MykgPVxuICBwcDEgZm10IHYxOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDIgZm10IHYyOyBwcF9wcmludF9zcGFjZSBmbXQgKCkgO1xuICBwcDMgZm10IHYzXG5sZXQgaW50ID0gcHBfcHJpbnRfaW50XG5sZXQgb3B0aW50IGZtdCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaSAtPiBmcHJpbnRmIGZtdCBcIkAgJWRcIiBpXG5cbmxldCBxdW90ZSBmbXQgcyA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlc1xcXCJcIiBzXG5cbmxldCBwcF9vbGlzdCBwcF9lbGVtIGZtdCA9XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDM+W0AgJWFAIF1AXVwiXG4gICAgKHBwX3ByaW50X2xpc3RcbiAgICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGZwcmludGYgZm10IFwiO0AgXCIpXG4gICAgICAgcHBfZWxlbSlcblxubGV0IHBwX3N0cl9saXN0ID0gcHBfb2xpc3QgcXVvdGVcblxubGV0IHRvX3RvX3N0cmluZyBwcCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIHBwIGZtdCB4O1xuICBCdWZmZXIuY29udGVudHMgYlxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBjID0gaW50XG50eXBlIHQgPSAoYyAqIGMpIGxpc3RcblxubGV0IHJlYyB1bmlvbiBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IGxcbiAgfCBbXSwgXyAtPiBsJ1xuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyICsgMSA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6dW5pb24gciBsJ1xuICAgIGVsc2UgaWYgYzInICsgMSA8IGMxIHRoZW5cbiAgICAgIChjMScsIGMyJyk6OnVuaW9uIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIHVuaW9uIHIgKChtaW4gYzEgYzEnLCBjMicpOjpyJylcbiAgICBlbHNlXG4gICAgICB1bmlvbiAoKG1pbiBjMSBjMScsIGMyKTo6cikgcidcblxubGV0IHJlYyBpbnRlciBsIGwnID1cbiAgbWF0Y2ggbCwgbCcgd2l0aFxuICAgIF8sIFtdIC0+IFtdXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICBpbnRlciByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBpbnRlciBsIHInXG4gICAgZWxzZSBpZiBjMiA8IGMyJyB0aGVuXG4gICAgICAobWF4IGMxIGMxJywgYzIpOjppbnRlciByIGwnXG4gICAgZWxzZVxuICAgICAgKG1heCBjMSBjMScsIGMyJyk6OmludGVyIGwgcidcblxubGV0IHJlYyBkaWZmIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IFtdXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgPCBjMScgdGhlblxuICAgICAgKGMxLCBjMik6OmRpZmYgciBsJ1xuICAgIGVsc2UgaWYgYzInIDwgYzEgdGhlblxuICAgICAgZGlmZiBsIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHInJyA9IGlmIGMyJyA8IGMyIHRoZW4gKGMyJyArIDEsIGMyKSA6OiByIGVsc2UgciBpblxuICAgICAgaWYgYzEgPCBjMScgdGhlblxuICAgICAgICAoYzEsIGMxJyAtIDEpOjpkaWZmIHInJyByJ1xuICAgICAgZWxzZVxuICAgICAgICBkaWZmIHInJyByJ1xuXG5sZXQgc2luZ2xlIGMgPSBbYywgY11cblxubGV0IGFkZCBjIGwgPSB1bmlvbiAoc2luZ2xlIGMpIGxcblxubGV0IHNlcSBjIGMnID0gaWYgYyA8PSBjJyB0aGVuIFtjLCBjJ10gZWxzZSBbYycsIGNdXG5cbmxldCByZWMgb2Zmc2V0IG8gbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAgICAgICAgLT4gW11cbiAgfCAoYzEsIGMyKSA6OiByIC0+IChjMSArIG8sIGMyICsgbykgOjogb2Zmc2V0IG8gclxuXG5sZXQgZW1wdHkgPSBbXVxuXG5sZXQgcmVjIG1lbSAoYyA6IGludCkgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICAgIFtdICAgICAgICAgICAgICAtPiBmYWxzZVxuICB8IChjMSwgYzIpIDo6IHJlbSAtPiBpZiBjIDw9IGMyIHRoZW4gYyA+PSBjMSBlbHNlIG1lbSBjIHJlbVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG5cbmxldCByZWMgaGFzaF9yZWMgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAtPiAwXG4gIHwgKGksIGopOjpyIC0+IGkgKyAxMyAqIGogKyAyNTcgKiBoYXNoX3JlYyByXG5sZXQgaGFzaCBsID0gKGhhc2hfcmVjIGwpIGxhbmQgMHgzRkZGRkZGRlxuXG4oKioqKilcblxubGV0IHByaW50X29uZSBjaCAoYzEsIGMyKSA9XG4gIGlmIGMxID0gYzIgdGhlblxuICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWRcIiBjMVxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGMxIGMyXG5cbmxldCBwcCA9IEZtdC5saXN0IHByaW50X29uZVxuXG5sZXQgcmVjIGl0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgKHgsIHkpOjp4cyAtPlxuICAgIGYgeCB5O1xuICAgIGl0ZXIgeHMgIH5mXG5cbmxldCBvbmVfY2hhciA9IGZ1bmN0aW9uXG4gIHwgW2ksIGpdIHdoZW4gaSA9IGogLT4gU29tZSBpXG4gIHwgXyAtPiBOb25lXG5cblxubW9kdWxlIENTZXRNYXAgPSBNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50ICogKGludCAqIGludCkgbGlzdFxuICAgIGxldCBjb21wYXJlIChpLCB1KSAoaiwgdikgPVxuICAgICAgbGV0IGMgPSBjb21wYXJlIGkgaiBpblxuICAgICAgaWYgYyA8PiAwXG4gICAgICB0aGVuIGNcbiAgICAgIGVsc2UgY29tcGFyZSB1IHZcbiAgZW5kKVxuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gTGlzdC5mb2xkX3JpZ2h0IGYgdCBpbml0XG5cbmxldCBjc2luZ2xlIGMgPSBzaW5nbGUgKENoYXIuY29kZSBjKVxuXG5sZXQgY2FueSA9IFswLCAyNTVdXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHJlYyBwcmVwZW5kIHMgeCBsID1cbiAgbWF0Y2ggcywgbCB3aXRoXG4gIHwgW10sIF8gLT4gbFxuICB8IF9yLCBbXSAtPiBbXVxuICB8IChfYywgYycpIDo6IHIsIChbZCwgX2QnXSwgX3gnKSA6OiBfcicgd2hlbiBjJyA8IGQgLT4gcHJlcGVuZCByIHggbFxuICB8IChjLCBjJykgOjogciwgKFtkLCBkJ10sIHgnKSA6OiByJyAtPlxuICAgIGlmIGMgPD0gZCB0aGVuIGJlZ2luXG4gICAgICBpZiBjJyA8IGQnXG4gICAgICB0aGVuIChbZCwgYyddLCB4IEAgeCcpIDo6IHByZXBlbmQgciB4ICgoW2MnICsgMSwgZCddLCB4JykgOjogcicpXG4gICAgICBlbHNlIChbZCwgZCddLCB4IEAgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIGlmIGMgPiBkJ1xuICAgICAgdGhlbiAoW2QsIGQnXSwgeCcpIDo6IHByZXBlbmQgcyB4IHInXG4gICAgICBlbHNlIChbZCwgYyAtIDFdLCB4JykgOjogcHJlcGVuZCBzIHggKChbYywgZCddLCB4JykgOjogcicpXG4gICAgZW5kXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHBpY2sgPSBmdW5jdGlvblxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiUmVfY3NldC5waWNrXCJcbiAgfCAoeCwgXyk6Ol8gLT4geFxuIiwiXG5tb2R1bGUgUG1hcmsgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG4gIGxldCBlcXVhbCAoeCA6IGludCkgKHkgOiBpbnQpID0geCA9IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG4gIGxldCByID0gcmVmIDBcbiAgbGV0IGdlbiAoKSA9IGluY3IgciA7ICFyXG5cbiAgbGV0IHBwID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kXG5cbmluY2x1ZGUgUG1hcmtcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZShQbWFyaylcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbnR5cGUgc2VtID0gWyBgTG9uZ2VzdCB8IGBTaG9ydGVzdCB8IGBGaXJzdCBdXG5cbnR5cGUgcmVwX2tpbmQgPSBbIGBHcmVlZHkgfCBgTm9uX2dyZWVkeSBdXG5cbnR5cGUgbWFyayA9IGludFxudHlwZSBpZHggPSBpbnRcblxudHlwZSBleHByID0geyBpZCA6IGludDsgZGVmIDogZGVmIH1cblxuYW5kIGRlZiA9XG4gICAgQ3N0IG9mIENzZXQudFxuICB8IEFsdCBvZiBleHByIGxpc3RcbiAgfCBTZXEgb2Ygc2VtICogZXhwciAqIGV4cHJcbiAgfCBFcHNcbiAgfCBSZXAgb2YgcmVwX2tpbmQgKiBzZW0gKiBleHByXG4gIHwgTWFyayBvZiBpbnRcbiAgfCBFcmFzZSBvZiBpbnQgKiBpbnRcbiAgfCBCZWZvcmUgb2YgQ2F0ZWdvcnkudFxuICB8IEFmdGVyIG9mIENhdGVnb3J5LnRcbiAgfCBQbWFyayBvZiBQbWFyay50XG5cbmxldCBoYXNoX2NvbWJpbmUgaCBhY2N1ID0gYWNjdSAqIDY1NTk5ICsgaFxuXG5tb2R1bGUgTWFya3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG1hcmtzIDogKGludCAqIGludCkgbGlzdFxuICAgIDsgcG1hcmtzIDogUG1hcmsuU2V0LnQgfVxuXG4gIGxldCBlbXB0eSA9IHsgbWFya3MgPSBbXSA7IHBtYXJrcyA9IFBtYXJrLlNldC5lbXB0eSB9XG5cbiAgbGV0IHJlYyBtZXJnZV9tYXJrc19vZmZzZXQgb2xkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBvbGRcbiAgICB8IChpLCB2KSA6OiByZW0gLT5cbiAgICAgIGxldCBudycgPSBtZXJnZV9tYXJrc19vZmZzZXQgKExpc3QucmVtb3ZlX2Fzc3EgaSBvbGQpIHJlbSBpblxuICAgICAgaWYgdiA9IC0yIHRoZW5cbiAgICAgICAgbncnXG4gICAgICBlbHNlXG4gICAgICAgIChpLCB2KSA6OiBudydcblxuICBsZXQgbWVyZ2Ugb2xkIG53ID1cbiAgICB7IG1hcmtzID0gbWVyZ2VfbWFya3Nfb2Zmc2V0IG9sZC5tYXJrcyBudy5tYXJrc1xuICAgIDsgcG1hcmtzID0gUG1hcmsuU2V0LnVuaW9uIG9sZC5wbWFya3MgbncucG1hcmtzIH1cblxuICBsZXQgcmVjIGhhc2hfbWFya3Nfb2Zmc2V0IGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAgICAgICAgICAtPiBhY2N1XG4gICAgfCAoYSwgaSkgOjogciAtPiBoYXNoX21hcmtzX29mZnNldCByIChoYXNoX2NvbWJpbmUgYSAoaGFzaF9jb21iaW5lIGkgYWNjdSkpXG5cbiAgbGV0IGhhc2ggbSBhY2N1ID1cbiAgICBoYXNoX21hcmtzX29mZnNldCBtLm1hcmtzIChoYXNoX2NvbWJpbmUgKEhhc2h0YmwuaGFzaCBtLnBtYXJrcykgYWNjdSlcblxuICBsZXQgcmVjIG1hcmtzX3NldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgICB8IChhLCAtMSkgOjogcmVtIC0+XG4gICAgICAoYSwgaWR4KSA6OiBtYXJrc19zZXRfaWR4IGlkeCByZW1cbiAgICB8IG1hcmtzIC0+XG4gICAgICBtYXJrc1xuXG4gIGxldCBtYXJrc19zZXRfaWR4IG1hcmtzIGlkeCA9XG4gICAgeyBtYXJrcyB3aXRoIG1hcmtzID0gbWFya3Nfc2V0X2lkeCBpZHggbWFya3MubWFya3MgfVxuXG4gIGxldCBwcF9tYXJrcyBjaCB0ID1cbiAgICBtYXRjaCB0Lm1hcmtzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICAgIHwgKGEsIGkpIDo6IHIgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiJWQtJWRcIiBhIGk7XG4gICAgICBMaXN0Lml0ZXIgKGZ1biAoYSwgaSkgLT4gRm9ybWF0LmZwcmludGYgY2ggXCIgJWQtJWRcIiBhIGkpIHJcbmVuZFxuXG4oKioqKilcblxubGV0IHBwX3NlbSBjaCBrID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBjaFxuICAgIChtYXRjaCBrIHdpdGhcbiAgICAgICBgU2hvcnRlc3QgLT4gXCJzaG9ydFwiXG4gICAgIHwgYExvbmdlc3QgIC0+IFwibG9uZ1wiXG4gICAgIHwgYEZpcnN0ICAgIC0+IFwiZmlyc3RcIilcblxuXG5sZXQgcHBfcmVwX2tpbmQgZm10ID0gZnVuY3Rpb25cbiAgfCBgR3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiR3JlZWR5XCJcbiAgfCBgTm9uX2dyZWVkeSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbl9ncmVlZHlcIlxuXG5sZXQgcmVjIHBwIGNoIGUgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbWF0Y2ggZS5kZWYgd2l0aFxuICAgIENzdCBsIC0+XG4gICAgc2V4cCBjaCBcImNzdFwiIENzZXQucHAgbDtcbiAgfCBBbHQgbCAtPlxuICAgIHNleHAgY2ggXCJhbHRcIiAobGlzdCBwcCkgbFxuICB8IFNlcSAoaywgZSwgZScpIC0+XG4gICAgc2V4cCBjaCBcInNlcVwiICh0cmlwbGUgcHBfc2VtIHBwIHBwKSAoaywgZSwgZScpXG4gIHwgRXBzIC0+XG4gICAgc3RyIGNoIFwiZXBzXCJcbiAgfCBSZXAgKF9yaywgaywgZSkgLT5cbiAgICBzZXhwIGNoIFwicmVwXCIgKHBhaXIgcHBfc2VtIHBwKSAoaywgZSlcbiAgfCBNYXJrIGkgLT5cbiAgICBzZXhwIGNoIFwibWFya1wiIGludCBpXG4gIHwgUG1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJwbWFya1wiIGludCAoaSA6PiBpbnQpXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgc2V4cCBjaCBcImVyYXNlXCIgKHBhaXIgaW50IGludCkgKGIsIGUpXG4gIHwgQmVmb3JlIGMgLT5cbiAgICBzZXhwIGNoIFwiYmVmb3JlXCIgQ2F0ZWdvcnkucHAgY1xuICB8IEFmdGVyIGMgLT5cbiAgICBzZXhwIGNoIFwiYWZ0ZXJcIiBDYXRlZ29yeS5wcCBjXG5cblxuKCoqKiopXG5cbmxldCByZWMgZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBOb25lXG4gIHwgeCA6OiByIC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIE5vbmUgICAgICAgICAgLT4gZmlyc3QgZiByXG4gICAgfCBTb21lIF8gYXMgcmVzIC0+IHJlc1xuXG4oKioqKilcblxudHlwZSBpZHMgPSBpbnQgcmVmXG5sZXQgY3JlYXRlX2lkcyAoKSA9IHJlZiAwXG5cbmxldCBlcHNfZXhwciA9IHsgaWQgPSAwOyBkZWYgPSBFcHMgfVxuXG5sZXQgbWtfZXhwciBpZHMgZGVmID1cbiAgaW5jciBpZHM7XG4gIHsgaWQgPSAhaWRzOyBkZWYgPSBkZWYgfVxuXG5sZXQgZW1wdHkgaWRzID0gbWtfZXhwciBpZHMgKEFsdCBbXSlcblxubGV0IGNzdCBpZHMgcyA9XG4gIGlmIENzZXQuaXNfZW1wdHkgc1xuICB0aGVuIGVtcHR5IGlkc1xuICBlbHNlIG1rX2V4cHIgaWRzIChDc3QgcylcblxubGV0IGFsdCBpZHMgPSBmdW5jdGlvblxuICB8IFtdICAtPiBlbXB0eSBpZHNcbiAgfCBbY10gLT4gY1xuICB8IGwgICAtPiBta19leHByIGlkcyAoQWx0IGwpXG5cbmxldCBzZXEgaWRzIGtpbmQgeCB5ID1cbiAgbWF0Y2ggeC5kZWYsIHkuZGVmIHdpdGhcbiAgICBBbHQgW10sIF8gICAgICAgICAgICAgICAgIC0+IHhcbiAgfCBfLCBBbHQgW10gICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBFcHMsIF8gICAgICAgICAgICAgICAgICAgIC0+IHlcbiAgfCBfLCBFcHMgd2hlbiBraW5kID0gYEZpcnN0IC0+IHhcbiAgfCBfICAgICAgICAgICAgICAgICAgICAgICAgIC0+IG1rX2V4cHIgaWRzIChTZXEgKGtpbmQsIHgsIHkpKVxuXG5sZXQgaXNfZXBzIGV4cHIgPVxuICBtYXRjaCBleHByLmRlZiB3aXRoXG4gIHwgRXBzIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCBlcHMgaWRzID0gbWtfZXhwciBpZHMgRXBzXG5cbmxldCByZXAgaWRzIGtpbmQgc2VtIHggPSBta19leHByIGlkcyAoUmVwIChraW5kLCBzZW0sIHgpKVxuXG5sZXQgbWFyayBpZHMgbSA9IG1rX2V4cHIgaWRzIChNYXJrIG0pXG5cbmxldCBwbWFyayBpZHMgaSA9IG1rX2V4cHIgaWRzIChQbWFyayBpKVxuXG5sZXQgZXJhc2UgaWRzIG0gbScgPSBta19leHByIGlkcyAoRXJhc2UgKG0sIG0nKSlcblxubGV0IGJlZm9yZSBpZHMgYyA9IG1rX2V4cHIgaWRzIChCZWZvcmUgYylcblxubGV0IGFmdGVyIGlkcyBjID0gbWtfZXhwciBpZHMgKEFmdGVyIGMpXG5cbigqKioqKVxuXG5sZXQgcmVjIHJlbmFtZSBpZHMgeCA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgICBDc3QgXyB8IEVwcyB8IE1hcmsgXyB8IFBtYXJrIF8gfCBFcmFzZSBfIHwgQmVmb3JlIF8gfCBBZnRlciBfIC0+XG4gICAgbWtfZXhwciBpZHMgeC5kZWZcbiAgfCBBbHQgbCAtPlxuICAgIG1rX2V4cHIgaWRzIChBbHQgKExpc3QubWFwIChyZW5hbWUgaWRzKSBsKSlcbiAgfCBTZXEgKGssIHksIHopIC0+XG4gICAgbWtfZXhwciBpZHMgKFNlcSAoaywgcmVuYW1lIGlkcyB5LCByZW5hbWUgaWRzIHopKVxuICB8IFJlcCAoZywgaywgeSkgLT5cbiAgICBta19leHByIGlkcyAoUmVwIChnLCBrLCByZW5hbWUgaWRzIHkpKVxuXG4oKioqKilcblxudHlwZSBoYXNoID0gaW50XG50eXBlIG1hcmtfaW5mb3MgPSBpbnQgYXJyYXlcbnR5cGUgc3RhdHVzID0gRmFpbGVkIHwgTWF0Y2ggb2YgbWFya19pbmZvcyAqIFBtYXJrLlNldC50IHwgUnVubmluZ1xuXG5tb2R1bGUgRSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVFNlcSBvZiB0IGxpc3QgKiBleHByICogc2VtXG4gICAgfCBURXhwIG9mIE1hcmtzLnQgKiBleHByXG4gICAgfCBUTWF0Y2ggb2YgTWFya3MudFxuXG4gIGxldCByZWMgZXF1YWwgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIHRydWVcbiAgICB8IFRTZXEgKGwxJywgZTEsIF8pIDo6IHIxLCBUU2VxIChsMicsIGUyLCBfKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBlcXVhbCBsMScgbDInICYmIGVxdWFsIHIxIHIyXG4gICAgfCBURXhwIChtYXJrczEsIGUxKSA6OiByMSwgVEV4cCAobWFya3MyLCBlMikgOjogcjIgLT5cbiAgICAgIGUxLmlkID0gZTIuaWQgJiYgbWFya3MxID0gbWFya3MyICYmIGVxdWFsIHIxIHIyXG4gICAgfCBUTWF0Y2ggbWFya3MxIDo6IHIxLCBUTWF0Y2ggbWFya3MyIDo6IHIyIC0+XG4gICAgICBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IHJlYyBoYXNoIGwgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgYWNjdVxuICAgIHwgVFNlcSAobCcsIGUsIF8pIDo6IHIgLT5cbiAgICAgIGhhc2ggciAoaGFzaF9jb21iaW5lIDB4MTcyYTFiY2UgKGhhc2hfY29tYmluZSBlLmlkIChoYXNoIGwnIGFjY3UpKSlcbiAgICB8IFRFeHAgKG1hcmtzLCBlKSA6OiByIC0+XG4gICAgICBoYXNoIHJcbiAgICAgICAgKGhhc2hfY29tYmluZSAweDJiNGMwZDc3IChoYXNoX2NvbWJpbmUgZS5pZCAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSkpXG4gICAgfCBUTWF0Y2ggbWFya3MgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxYzIwNWFkNSAoTWFya3MuaGFzaCBtYXJrcyBhY2N1KSlcblxuICBsZXQgdGV4cCBtYXJrcyB4ID0gVEV4cCAobWFya3MsIHgpXG5cbiAgbGV0IHRzZXEga2luZCB4IHkgcmVtID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gcmVtXG4gICAgfCBbVEV4cCAobWFya3MsIHtkZWYgPSBFcHMgOyBffSldIC0+IFRFeHAgKG1hcmtzLCB5KSA6OiByZW1cbiAgICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVFNlcSAoeCwgeSwga2luZCkgOjogcmVtXG5cbiAgbGV0IHJlYyBwcmludF9zdGF0ZV9yZWMgY2ggZSB5ID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IFRNYXRjaCBtYXJrcyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihNYXRjaEAgJWEpQF1cIiBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVFNlcSAobCcsIHgsIF9raW5kKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAWzwyPihTZXFAIFwiO1xuICAgICAgcHJpbnRfc3RhdGVfbHN0IGNoIGwnIHg7XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkAgJWEpQF1cIiBwcCB4XG4gICAgfCBURXhwIChtYXJrcywge2RlZiA9IEVwczsgX30pIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAIChlcHMpKUBdXCIgeS5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrc1xuICAgIHwgVEV4cCAobWFya3MsIHgpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KEV4cEAgJWRAICglYSlAICVhKUBdXCIgeC5pZCBNYXJrcy5wcF9tYXJrcyBtYXJrcyBwcCB4XG5cbiAgYW5kIHByaW50X3N0YXRlX2xzdCBjaCBsIHkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiKClcIlxuICAgIHwgZSA6OiByZW0gLT5cbiAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHk7XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCB8IFwiO1xuICAgICAgICAgICBwcmludF9zdGF0ZV9yZWMgY2ggZSB5KVxuICAgICAgICByZW1cblxuICBsZXQgcHAgY2ggdCA9IHByaW50X3N0YXRlX2xzdCBjaCBbdF0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5lbmRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBpZHg6IGlkeFxuICAgIDsgY2F0ZWdvcnk6IENhdGVnb3J5LnRcbiAgICA7IGRlc2M6IEUudCBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YXR1czogc3RhdHVzIG9wdGlvblxuICAgIDsgaGFzaDogaGFzaCB9XG5cbiAgbGV0IGR1bW15ID1cbiAgICB7IGlkeCA9IC0xXG4gICAgOyBjYXRlZ29yeSA9IENhdGVnb3J5LmR1bW15XG4gICAgOyBkZXNjID0gW11cbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSAtMSB9XG5cbiAgbGV0IGhhc2ggaWR4IGNhdCBkZXNjID1cbiAgICBFLmhhc2ggZGVzYyAoaGFzaF9jb21iaW5lIGlkeCAoaGFzaF9jb21iaW5lIChDYXRlZ29yeS50b19pbnQgY2F0KSAwKSkgbGFuZCAweDNGRkZGRkZGXG5cbiAgbGV0IG1rIGlkeCBjYXQgZGVzYyA9XG4gICAgeyBpZHhcbiAgICA7IGNhdGVnb3J5ID0gY2F0XG4gICAgOyBkZXNjXG4gICAgOyBzdGF0dXMgPSBOb25lXG4gICAgOyBoYXNoID0gaGFzaCBpZHggY2F0IGRlc2N9XG5cbiAgbGV0IGNyZWF0ZSBjYXQgZSA9IG1rIDAgY2F0IFtFLlRFeHAgKE1hcmtzLmVtcHR5LCBlKV1cblxuICBsZXQgZXF1YWwgeCB5ID1cbiAgICAoeC5oYXNoIDogaW50KSA9IHkuaGFzaCAmJiAoeC5pZHggOiBpbnQpID0geS5pZHggJiZcbiAgICBDYXRlZ29yeS5lcXVhbCB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgJiYgRS5lcXVhbCB4LmRlc2MgeS5kZXNjXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICBsZXQgYyA9IGNvbXBhcmUgKHguaGFzaCA6IGludCkgeS5oYXNoIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICBsZXQgYyA9IENhdGVnb3J5LmNvbXBhcmUgeC5jYXRlZ29yeSB5LmNhdGVnb3J5IGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgY29tcGFyZSB4LmRlc2MgeS5kZXNjXG5cbiAgdHlwZSB0JyA9IHRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdCdcbiAgICAgIGxldCBlcXVhbCA9IGVxdWFsXG4gICAgICBsZXQgaGFzaCB0ID0gdC5oYXNoXG4gICAgZW5kKVxuZW5kXG5cbigqKioqIEZpbmQgYSBmcmVlIGluZGV4ICoqKiopXG5cbnR5cGUgd29ya2luZ19hcmVhID0gYm9vbCBhcnJheSByZWZcblxubGV0IGNyZWF0ZV93b3JraW5nX2FyZWEgKCkgPSByZWYgW3wgZmFsc2UgfF1cblxubGV0IGluZGV4X2NvdW50IHcgPSBBcnJheS5sZW5ndGggIXdcblxubGV0IHJlc2V0X3RhYmxlIGEgPSBBcnJheS5maWxsIGEgMCAoQXJyYXkubGVuZ3RoIGEpIGZhbHNlXG5cbmxldCByZWMgbWFya191c2VkX2luZGljZXMgdGJsID1cbiAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgfCBFLlRTZXEgKGwsIF8sIF8pIC0+IG1hcmtfdXNlZF9pbmRpY2VzIHRibCBsXG4gICAgICB8IEUuVEV4cCAobWFya3MsIF8pXG4gICAgICB8IEUuVE1hdGNoIG1hcmtzIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIChfLCBpKSAtPiBpZiBpID49IDAgdGhlbiB0YmwuKGkpIDwtIHRydWUpXG4gICAgICAgICAgbWFya3MuTWFya3MubWFya3MpXG5cbmxldCByZWMgZmluZF9mcmVlIHRibCBpZHggbGVuID1cbiAgaWYgaWR4ID0gbGVuIHx8IG5vdCB0YmwuKGlkeCkgdGhlbiBpZHggZWxzZSBmaW5kX2ZyZWUgdGJsIChpZHggKyAxKSBsZW5cblxubGV0IGZyZWVfaW5kZXggdGJsX3JlZiBsID1cbiAgbGV0IHRibCA9ICF0YmxfcmVmIGluXG4gIHJlc2V0X3RhYmxlIHRibDtcbiAgbWFya191c2VkX2luZGljZXMgdGJsIGw7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdGJsIGluXG4gIGxldCBpZHggPSBmaW5kX2ZyZWUgdGJsIDAgbGVuIGluXG4gIGlmIGlkeCA9IGxlbiB0aGVuIHRibF9yZWYgOj0gQXJyYXkubWFrZSAoMiAqIGxlbikgZmFsc2U7XG4gIGlkeFxuXG4oKioqKiBDb21wdXRhdGlvbiBvZiB0aGUgbmV4dCBzdGF0ZSAqKioqKVxuXG5sZXQgcmVtb3ZlX21hdGNoZXMgPSBMaXN0LmZpbHRlciAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcblxubGV0IHJlYyBzcGxpdF9hdF9tYXRjaF9yZWMgbCcgPSBmdW5jdGlvblxuICB8IFtdICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRS5UTWF0Y2ggXyA6OiByIC0+IChMaXN0LnJldiBsJywgcmVtb3ZlX21hdGNoZXMgcilcbiAgfCB4IDo6IHIgICAgICAgIC0+IHNwbGl0X2F0X21hdGNoX3JlYyAoeCA6OiBsJykgclxuXG5sZXQgc3BsaXRfYXRfbWF0Y2ggbCA9IHNwbGl0X2F0X21hdGNoX3JlYyBbXSBsXG5cbmxldCByZWMgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiBsIHkgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPlxuICAgIChbXSwgcHJldilcbiAgfCBFLlRNYXRjaCBfIGFzIHggOjogXyAtPiAoKiBUcnVuY2F0ZSBhZnRlciBmaXJzdCBtYXRjaCAqKVxuICAgIChbeF0sIHByZXYpXG4gIHwgRS5UU2VxIChsJywgeCwga2luZCkgOjogciAtPlxuICAgIGxldCAobCcnLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwnIHggaW5cbiAgICBsZXQgKHInLCBwcmV2JycpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldicgciB5IGluXG4gICAgKEUudHNlcSBraW5kIGwnJyB4IHInLCBwcmV2JycpXG4gIHwgRS5URXhwIChfbWFya3MsIHtkZWYgPSBFcHM7IF99KSBhcyBlIDo6IHIgLT5cbiAgICBpZiBMaXN0Lm1lbXEgeS5pZCBwcmV2IHRoZW5cbiAgICAgIHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgciB5XG4gICAgZWxzZVxuICAgICAgbGV0IChyJywgcHJldicpID0gcmVtb3ZlX2R1cGxpY2F0ZXMgKHkuaWQgOjogcHJldikgciB5IGluXG4gICAgICAoZSA6OiByJywgcHJldicpXG4gIHwgRS5URXhwIChfbWFya3MsIHgpIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB4LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeC5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcblxubGV0IHJlYyBzZXRfaWR4IGlkeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEUuVE1hdGNoIG1hcmtzIDo6IHIgLT5cbiAgICBFLlRNYXRjaCAoTWFya3MubWFya3Nfc2V0X2lkeCBtYXJrcyBpZHgpIDo6IHNldF9pZHggaWR4IHJcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgRS5UU2VxIChzZXRfaWR4IGlkeCBsJywgeCwga2luZCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVEV4cCAobWFya3MsIHgpIDo6IHIgLT5cbiAgICBFLlRFeHAgKChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCksIHgpIDo6IHNldF9pZHggaWR4IHJcblxubGV0IGZpbHRlcl9tYXJrcyBiIGUgbWFya3MgPVxuICB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IExpc3QuZmlsdGVyIChmdW4gKGksIF8pIC0+IGkgPCBiIHx8IGkgPiBlKSBtYXJrcy5NYXJrcy5tYXJrcyB9XG5cbmxldCByZWMgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeCByZW0gPVxuICAoKkZvcm1hdC5lcHJpbnRmIFwiJWRALlwiIHguaWQ7KilcbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBzIC0+XG4gICAgaWYgQ3NldC5tZW0gYyBzIHRoZW4gRS50ZXhwIG1hcmtzIGVwc19leHByIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeSBbXSBpblxuICAgIGxldCAoeScnLCBtYXJrcycpID1cbiAgICAgIG1hdGNoXG4gICAgICAgIGZpcnN0XG4gICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHknXG4gICAgICB3aXRoXG4gICAgICAgIE5vbmUgICAgICAgIC0+ICh5JywgbWFya3MpXG4gICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB5JywgbWFya3MnKVxuICAgIGluXG4gICAgYmVnaW4gbWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB5JycgeCAoRS5UTWF0Y2ggbWFya3MnIDo6IHJlbSlcbiAgICAgIHwgYE5vbl9ncmVlZHkgLT4gRS5UTWF0Y2ggbWFya3MgOjogRS50c2VxIGtpbmQgeScnIHggcmVtXG4gICAgZW5kXG4gIHwgRXBzIC0+XG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgbGV0IG1hcmtzID0geyBtYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MgfSBpblxuICAgIEUuVE1hdGNoIG1hcmtzIDo6IHJlbVxuICB8IFBtYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MucG1hcmtzID0gUG1hcmsuU2V0LmFkZCBpIG1hcmtzLk1hcmtzLnBtYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgRXJhc2UgKGIsIGUpIC0+XG4gICAgRS5UTWF0Y2ggKGZpbHRlcl9tYXJrcyBiIGUgbWFya3MpIDo6IHJlbVxuICB8IEJlZm9yZSBjYXQnJyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBuZXh0X2NhdCBjYXQnJyB0aGVuIEUuVE1hdGNoIG1hcmtzIDo6IHJlbSBlbHNlIHJlbVxuICB8IEFmdGVyIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IHByZXZfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG5cbmFuZCBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfMiBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmFuZCBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeSB6IHJlbSA9XG4gIG1hdGNoXG4gICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpIHlcbiAgd2l0aFxuICAgIE5vbmUgLT5cbiAgICBFLnRzZXEga2luZCB5IHogcmVtXG4gIHwgU29tZSBtYXJrcyAtPlxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgYExvbmdlc3QgLT5cbiAgICAgIEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IHJlbSlcbiAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgelxuICAgICAgICAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogcmVtKVxuICAgIHwgYEZpcnN0IC0+XG4gICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgRS50c2VxIGtpbmQgeScgelxuICAgICAgICAoZGVsdGFfMSBtYXJrcyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeiAoRS50c2VxIGtpbmQgeScnIHogcmVtKSlcblxubGV0IHJlYyBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICB4IDo6IHJlbVxuXG5hbmQgZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+XG4gICAgZGVsdGFfMyBjIH5uZXh0X2NhdCB+cHJldl9jYXQgeVxuICAgICAgKGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHIgcmVtKVxuXG5sZXQgZGVsdGEgdGJsX3JlZiBuZXh0X2NhdCBjaGFyIHN0ID1cbiAgbGV0IHByZXZfY2F0ID0gc3QuU3RhdGUuY2F0ZWdvcnkgaW5cbiAgbGV0IChleHByJywgXykgPVxuICAgIHJlbW92ZV9kdXBsaWNhdGVzIFtdXG4gICAgICAoZGVsdGFfNCBjaGFyIH5uZXh0X2NhdCB+cHJldl9jYXQgc3QuU3RhdGUuZGVzYyBbXSlcbiAgICAgIGVwc19leHByIGluXG4gIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gIFN0YXRlLm1rIGlkeCBuZXh0X2NhdCBleHByJydcblxuKCoqKiopXG5cbmxldCByZWMgcmVkX3RyID0gZnVuY3Rpb25cbiAgfCBbXSB8IFtfXSBhcyBsIC0+XG4gICAgbFxuICB8ICgoczEsIHN0MSkgYXMgdHIxKSA6OiAoKHMyLCBzdDIpIGFzIHRyMikgOjogcmVtIC0+XG4gICAgaWYgU3RhdGUuZXF1YWwgc3QxIHN0MiB0aGVuXG4gICAgICByZWRfdHIgKChDc2V0LnVuaW9uIHMxIHMyLCBzdDEpIDo6IHJlbSlcbiAgICBlbHNlXG4gICAgICB0cjEgOjogcmVkX3RyICh0cjIgOjogcmVtKVxuXG5sZXQgc2ltcGxfdHIgbCA9XG4gIExpc3Quc29ydFxuICAgIChmdW4gKHMxLCBfKSAoczIsIF8pIC0+IGNvbXBhcmUgczEgczIpXG4gICAgKHJlZF90ciAoTGlzdC5zb3J0IChmdW4gKF8sIHN0MSkgKF8sIHN0MikgLT4gU3RhdGUuY29tcGFyZSBzdDEgc3QyKSBsKSlcblxuKCoqKiopXG5cbmxldCBwcmVwZW5kX2Rlcml2ID0gTGlzdC5mb2xkX3JpZ2h0IChmdW4gKHMsIHgpIGwgLT4gQ3NldC5wcmVwZW5kIHMgeCBsKVxuXG5sZXQgcmVjIHJlc3RyaWN0IHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgKHMnLCB4JykgOjogcmVtIC0+XG4gICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgIGlmIENzZXQuaXNfZW1wdHkgcycnXG4gICAgdGhlbiByZXN0cmljdCBzIHJlbVxuICAgIGVsc2UgKHMnJywgeCcpIDo6IHJlc3RyaWN0IHMgcmVtXG5cbmxldCByZWMgcmVtb3ZlX21hcmtzIGIgZSByZW0gPVxuICBpZiBiID4gZSB0aGVuIHJlbSBlbHNlIHJlbW92ZV9tYXJrcyBiIChlIC0gMSkgKChlLCAtMikgOjogcmVtKVxuXG5sZXQgcmVjIHByZXBlbmRfbWFya3NfZXhwciBtID0gZnVuY3Rpb25cbiAgfCBFLlRTZXEgKGwsIGUnLCBzKSAtPiBFLlRTZXEgKHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSBsLCBlJywgcylcbiAgfCBFLlRFeHAgKG0nLCBlJykgICAtPiBFLlRFeHAgKE1hcmtzLm1lcmdlIG0gbScsIGUnKVxuICB8IEUuVE1hdGNoIG0nICAgICAgIC0+IEUuVE1hdGNoIChNYXJrcy5tZXJnZSBtIG0nKVxuXG5hbmQgcHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwgPVxuICBMaXN0Lm1hcCAocHJlcGVuZF9tYXJrc19leHByIG0pIGxcblxubGV0IHByZXBlbmRfbWFya3MgbSA9XG4gIExpc3QubWFwIChmdW4gKHMsIHgpIC0+IChzLCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0geCkpXG5cbmxldCByZWMgZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeCByZW0gPVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gIHwgQ3N0IHMgLT5cbiAgICBDc2V0LnByZXBlbmQgcyBbRS50ZXhwIG1hcmtzIGVwc19leHByXSByZW1cbiAgfCBBbHQgbCAtPlxuICAgIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtXG4gIHwgU2VxIChraW5kLCB5LCB6KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBSZXAgKHJlcF9raW5kLCBraW5kLCB5KSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHopIHJlbSAtPlxuICAgICAgICAgbGV0ICh6JywgbWFya3MnKSA9XG4gICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgZmlyc3RcbiAgICAgICAgICAgICAgIChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgICAgelxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgTm9uZSAgICAgICAgLT4gKHosIG1hcmtzKVxuICAgICAgICAgICB8IFNvbWUgbWFya3MnIC0+IChyZW1vdmVfbWF0Y2hlcyB6LCBtYXJrcycpXG4gICAgICAgICBpblxuICAgICAgICAgQ3NldC5wcmVwZW5kIHNcbiAgICAgICAgICAgKG1hdGNoIHJlcF9raW5kIHdpdGhcbiAgICAgICAgICAgICAgYEdyZWVkeSAgICAgLT4gRS50c2VxIGtpbmQgeicgeCBbRS5UTWF0Y2ggbWFya3MnXVxuICAgICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB6JyB4IFtdKVxuICAgICAgICAgICByZW0pXG4gICAgICB5JyByZW1cbiAgfCBFcHMgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgTWFyayBpIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAoKGksIC0xKSA6OiBMaXN0LnJlbW92ZV9hc3NxIGkgbWFya3MuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgUG1hcmsgXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzXG4gICAgICBbRS5UTWF0Y2gge21hcmtzIHdpdGggTWFya3MubWFya3MgPSAocmVtb3ZlX21hcmtzIGIgZSAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykuTWFya3MubWFya3MpfV0gcmVtXG4gIHwgQmVmb3JlIGNhdCcgLT5cbiAgICBDc2V0LnByZXBlbmQgKExpc3QuYXNzcSBjYXQnIGNhdGVnb3JpZXMpIFtFLlRNYXRjaCBtYXJrc10gcmVtXG4gIHwgQWZ0ZXIgY2F0JyAtPlxuICAgIGlmIENhdGVnb3J5LmludGVyc2VjdCBjYXQgY2F0JyB0aGVuIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW0gZWxzZSByZW1cblxuYW5kIGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzIgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHIgcmVtKVxuXG5hbmQgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHkgeiByZW0gPVxuICBpZlxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIChfcywgeGwpIC0+XG4gICAgICAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gRS5UTWF0Y2ggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgeGwpXG4gICAgICB5XG4gIHRoZW5cbiAgICBsZXQgeicgPSBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIE1hcmtzLmVtcHR5IGNhdCB6IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChzLCB5KSByZW0gLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIGZpcnN0IChmdW5jdGlvbiBFLlRNYXRjaCBtYXJrcyAtPiBTb21lIG1hcmtzIHwgXyAtPiBOb25lKVxuICAgICAgICAgICAgIHlcbiAgICAgICAgIHdpdGhcbiAgICAgICAgICAgTm9uZSAtPlxuICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeSB6IFtdKSByZW1cbiAgICAgICAgIHwgU29tZSBtYXJrcyAtPlxuICAgICAgICAgICBsZXQgeicnID0gcHJlcGVuZF9tYXJrcyBtYXJrcyB6JyBpblxuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICBgTG9uZ2VzdCAtPlxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIHJlbSlcbiAgICAgICAgICAgfCBgU2hvcnRlc3QgLT5cbiAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSByZW0pXG4gICAgICAgICAgIHwgYEZpcnN0IC0+XG4gICAgICAgICAgICAgbGV0ICh5JywgeScnKSA9IHNwbGl0X2F0X21hdGNoIHkgaW5cbiAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScgeiBbXSkgKFxuICAgICAgICAgICAgICAgcHJlcGVuZF9kZXJpdiAocmVzdHJpY3QgcyB6JycpIChcbiAgICAgICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHknJyB6IFtdKSByZW0pKSlcbiAgICAgIHkgcmVtXG4gIGVsc2VcbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHhsKSByZW0gLT4gQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIHhsIHogW10pIHJlbSkgeSByZW1cblxubGV0IHJlYyBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHggd2l0aFxuICAgIEUuVFNlcSAoeSwgeiwga2luZCkgLT5cbiAgICBsZXQgeScgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5IFsoYWxsX2NoYXJzLCBbXSldIGluXG4gICAgZGVyaXZfc2VxIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCBraW5kIHknIHogcmVtXG4gIHwgRS5URXhwIChtYXJrcywgZSkgLT5cbiAgICBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCBlIHJlbVxuICB8IEUuVE1hdGNoIF8gLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFt4XSByZW1cblxuYW5kIGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPiBkZXJpdl8zIGFsbF9jaGFycyBjYXRlZ29yaWVzIGNhdCB5XG4gICAgICAgICAgICAgICAgKGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHIgcmVtKVxuXG5sZXQgZGVyaXYgdGJsX3JlZiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBzdCA9XG4gIGxldCBkZXIgPSBkZXJpdl80IGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0LlN0YXRlLmNhdGVnb3J5IHN0LlN0YXRlLmRlc2NcbiAgICAgIFsoYWxsX2NoYXJzLCBbXSldIGluXG4gIHNpbXBsX3RyIChcbiAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgZXhwcikgcmVtIC0+XG4gICAgICAgIGxldCAoZXhwcicsIF8pID0gcmVtb3ZlX2R1cGxpY2F0ZXMgW10gZXhwciBlcHNfZXhwciBpblxuKCpcbkZvcm1hdC5lcHJpbnRmIFwiQFs8Mz5AWyVhQF06ICVhIC8gJWFAXUAuXCIgQ3NldC5wcmludCBzIHByaW50X3N0YXRlIGV4cHIgcHJpbnRfc3RhdGUgZXhwcic7XG4qKVxuICAgICAgICBsZXQgaWR4ID0gZnJlZV9pbmRleCB0YmxfcmVmIGV4cHInIGluXG4gICAgICAgIGxldCBleHByJycgPSBzZXRfaWR4IGlkeCBleHByJyBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgKGZ1biAoY2F0JywgcycpIHJlbSAtPlxuICAgICAgICAgICAgbGV0IHMnJyA9IENzZXQuaW50ZXIgcyBzJyBpblxuICAgICAgICAgICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICAgICAgICAgIHRoZW4gcmVtXG4gICAgICAgICAgICBlbHNlIChzJycsIFN0YXRlLm1rIGlkeCBjYXQnIGV4cHInJykgOjogcmVtKVxuICAgICAgICAgIGNhdGVnb3JpZXMgcmVtKSBkZXIgW10pXG5cbigqKioqKVxuXG5sZXQgZmxhdHRlbl9tYXRjaCBtID1cbiAgbGV0IG1hID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtYSAoaSwgXykgLT4gbWF4IG1hIGkpICgtMSkgbSBpblxuICBsZXQgcmVzID0gQXJyYXkubWFrZSAobWEgKyAxKSAoLTEpIGluXG4gIExpc3QuaXRlciAoZnVuIChpLCB2KSAtPiByZXMuKGkpIDwtIHYpIG07XG4gIHJlc1xuXG5sZXQgc3RhdHVzIHMgPVxuICBtYXRjaCBzLlN0YXRlLnN0YXR1cyB3aXRoXG4gICAgU29tZSBzdCAtPlxuICAgIHN0XG4gIHwgTm9uZSAtPlxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBzLlN0YXRlLmRlc2Mgd2l0aFxuICAgICAgICBbXSAgICAgICAgICAgICAgLT4gRmFpbGVkXG4gICAgICB8IEUuVE1hdGNoIG0gOjogXyAtPiBNYXRjaCAoZmxhdHRlbl9tYXRjaCBtLk1hcmtzLm1hcmtzLCBtLk1hcmtzLnBtYXJrcylcbiAgICAgIHwgXyAgICAgICAgICAgICAgIC0+IFJ1bm5pbmdcbiAgICBpblxuICAgIHMuU3RhdGUuc3RhdHVzIDwtIFNvbWUgc3Q7XG4gICAgc3RcbiIsIigqIEluIHJlYWxpdHksIHRoaXMgY2FuIHJlYWxseSBiZSByZXByZXNlbnRlZCBhcyBhIGJvb2wgYXJyYXkuXG5cbiAgIFRoZSByZXByZXNlbnRhdGlvbiBpcyBiZXN0IHRob3VnaHQgb2YgYXMgYSBsaXN0IG9mIGFsbCBjaGFycyBhbG9uZyB3aXRoIGFcbiAgIGZsYWc6XG5cbiAgIChhLCAwKSwgKGIsIDEpLCAoYywgMCksIChkLCAwKSwgLi4uXG5cbiAgIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIGNvbG9yIGFyZSByZXByZXNlbnRlZCBieSBzZXF1bmNlcyBvZlxuICAgY2hhcmFjdGVycyB3aXRoIHRoZSBmbGFnIHNldCB0byAwLlxuKilcblxudHlwZSB0ID0gQnl0ZXMudFxuXG5sZXQgbWFrZSAoKSA9IEJ5dGVzLm1ha2UgMjU3ICdcXDAwMCdcblxubGV0IGZsYXR0ZW4gY20gPVxuICBsZXQgYyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGNvbG9yX3JlcHIgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGxldCB2ID0gcmVmIDAgaW5cbiAgQnl0ZXMuc2V0IGMgMCAnXFwwMDAnO1xuICBCeXRlcy5zZXQgY29sb3JfcmVwciAwICdcXDAwMCc7XG4gIGZvciBpID0gMSB0byAyNTUgZG9cbiAgICBpZiBCeXRlcy5nZXQgY20gaSA8PiAnXFwwMDAnIHRoZW4gaW5jciB2O1xuICAgIEJ5dGVzLnNldCBjIGkgKENoYXIuY2hyICF2KTtcbiAgICBCeXRlcy5zZXQgY29sb3JfcmVwciAhdiAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYywgQnl0ZXMuc3ViX3N0cmluZyBjb2xvcl9yZXByIDAgKCF2ICsgMSksICF2ICsgMSlcblxuKCogbWFyayBhbGwgdGhlIGVuZHBvaW50cyBvZiB0aGUgaW50ZXJ2YWxzIG9mIHRoZSBjaGFyIHNldCB3aXRoIHRoZSAxIGJ5dGUgKilcbmxldCBzcGxpdCBzIGNtID1cbiAgQ3NldC5pdGVyIHMgfmY6KGZ1biBpIGogLT5cbiAgICAgIEJ5dGVzLnNldCBjbSBpICdcXDAwMSc7XG4gICAgICBCeXRlcy5zZXQgY20gKGogKyAxKSAnXFwwMDEnO1xuICAgIClcbiIsIigqIFJlc3VsdCBvZiBhIHN1Y2Nlc3NmdWwgbWF0Y2guICopXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtYXJrcyA6IEF1dG9tYXRhLm1hcmtfaW5mb3NcbiAgOyBwbWFya3MgOiBQbWFyay5TZXQudFxuICA7IGdwb3MgOiBpbnQgYXJyYXlcbiAgOyBnY291bnQgOiBpbnRcbiAgfVxuXG5sZXQgb2Zmc2V0IHQgaSA9XG4gIGlmIDIgKiBpICsgMSA+PSBBcnJheS5sZW5ndGggdC5tYXJrcyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gIGlmIG0xID0gLTEgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgKHAxLCBwMilcblxubGV0IGdldCB0IGkgPVxuICBsZXQgKHAxLCBwMikgPSBvZmZzZXQgdCBpIGluXG4gIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuXG5sZXQgc3RhcnQgc3VicyBpID0gZnN0IChvZmZzZXQgc3VicyBpKVxuXG5sZXQgc3RvcCBzdWJzIGkgPSBzbmQgKG9mZnNldCBzdWJzIGkpXG5cbmxldCB0ZXN0IHQgaSA9XG4gIGlmIDIgKiBpID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW5cbiAgICBmYWxzZVxuICBlbHNlXG4gICAgbGV0IGlkeCA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlkeCA8PiAtMVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICBpZiB0ZXN0IHQgaVxuICB0aGVuIFNvbWUgKGdldCB0IGkpXG4gIGVsc2UgTm9uZVxuXG5sZXQgZHVtbXlfb2Zmc2V0ID0gKC0xLCAtMSlcblxubGV0IGFsbF9vZmZzZXQgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X29mZnNldCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIChwMSwgcDIpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHJlc1xuXG5sZXQgZHVtbXlfc3RyaW5nID0gXCJcIlxuXG5sZXQgYWxsIHQgPVxuICBsZXQgcmVzID0gQXJyYXkubWFrZSB0Lmdjb3VudCBkdW1teV9zdHJpbmcgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0Lm1hcmtzIC8gMiAtIDEgZG9cbiAgICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgICBpZiBtMSA8PiAtMSB0aGVuIGJlZ2luXG4gICAgICBsZXQgcDEgPSB0Lmdwb3MuKG0xKSBpblxuICAgICAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAgICAgcmVzLihpKSA8LSBTdHJpbmcuc3ViIHQucyBwMSAocDIgLSBwMSlcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBwcCBmbXQgdCA9XG4gIGxldCBtYXRjaGVzID1cbiAgICBsZXQgb2Zmc2V0cyA9IGFsbF9vZmZzZXQgdCBpblxuICAgIGxldCBzdHJzID0gYWxsIHQgaW5cbiAgICBBcnJheS50b19saXN0IChcbiAgICAgIEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCBzdHJzKSAoZnVuIGkgLT4gc3Rycy4oaSksIG9mZnNldHMuKGkpKVxuICAgICkgaW5cbiAgbGV0IG9wZW4gRm10IGluXG4gIGxldCBwcF9tYXRjaCBmbXQgKHN0ciwgKHN0YXJ0LCBzdG9wKSkgPVxuICAgIGZwcmludGYgZm10IFwiQFsoJXMgKCVkICVkKSlAXVwiIHN0ciBzdGFydCBzdG9wIGluXG4gIHNleHAgZm10IFwiR3JvdXBcIiAobGlzdCBwcF9tYXRjaCkgbWF0Y2hlc1xuXG5sZXQgbmJfZ3JvdXBzIHQgPSB0Lmdjb3VudFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubGV0IHJlYyBpdGVyIG4gZiB2ID0gaWYgbiA9IDAgdGhlbiB2IGVsc2UgaXRlciAobiAtIDEpIGYgKGYgdilcblxuKCoqKiopXG5cbmxldCB1bmtub3duID0gLTJcbmxldCBicmVhayA9IC0zXG5cbnR5cGUgbWF0Y2hfaW5mbyA9XG4gIHwgTWF0Y2ggb2YgR3JvdXAudFxuICB8IEZhaWxlZFxuICB8IFJ1bm5pbmcgb2YgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIDogaW50IH1cblxudHlwZSBzdGF0ZSA9XG4gIHsgaWR4IDogaW50O1xuICAgICgqIEluZGV4IG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBwb3NpdGlvbiB0YWJsZS5cbiAgICAgICBOb3QgeWV0IGNvbXB1dGVkIHRyYW5zaXRpb25zIHBvaW50IHRvIGEgZHVtbXkgc3RhdGUgd2hlcmVcbiAgICAgICBbaWR4XSBpcyBzZXQgdG8gW3Vua25vd25dO1xuICAgICAgIElmIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdIGZvciBzdGF0ZXMgdGhhdCBlaXRoZXIgYWx3YXlzXG4gICAgICAgc3VjY2VlZCBvciBhbHdheXMgZmFpbC4gKilcbiAgICByZWFsX2lkeCA6IGludDtcbiAgICAoKiBUaGUgcmVhbCBpbmRleCwgaW4gY2FzZSBbaWR4XSBpcyBzZXQgdG8gW2JyZWFrXSAqKVxuICAgIG5leHQgOiBzdGF0ZSBhcnJheTtcbiAgICAoKiBUcmFuc2l0aW9uIHRhYmxlLCBpbmRleGVkIGJ5IGNvbG9yICopXG4gICAgbXV0YWJsZSBmaW5hbCA6XG4gICAgICAoQ2F0ZWdvcnkudCAqXG4gICAgICAgKEF1dG9tYXRhLmlkeCAqIEF1dG9tYXRhLnN0YXR1cykpIGxpc3Q7XG4gICAgKCogTWFwcGluZyBmcm9tIHRoZSBjYXRlZ29yeSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG9cbiAgICAgICAtIHRoZSBpbmRleCB3aGVyZSB0aGUgbmV4dCBwb3NpdGlvbiBzaG91bGQgYmUgc2F2ZWRcbiAgICAgICAtIHBvc3NpYmx5LCB0aGUgbGlzdCBvZiBtYXJrcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMpXG4gICAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBiZXN0IG1hdGNoICopXG4gICAgZGVzYyA6IEF1dG9tYXRhLlN0YXRlLnRcbiAgICAoKiBEZXNjcmlwdGlvbiBvZiB0aGlzIHN0YXRlIG9mIHRoZSBhdXRvbWF0YSAqKSB9XG5cbigqIEF1dG9tYXRhIChjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24pICopXG50eXBlIHJlID1cbiAgeyBpbml0aWFsIDogQXV0b21hdGEuZXhwcjtcbiAgICAoKiBUaGUgd2hvbGUgcmVndWxhciBleHByZXNzaW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3N0YXRlcyA6IChDYXRlZ29yeS50ICogc3RhdGUpIGxpc3Q7XG4gICAgKCogSW5pdGlhbCBzdGF0ZXMsIGluZGV4ZWQgYnkgaW5pdGlhbCBjYXRlZ29yeSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAqKVxuICAgIGNvbG9yX3JlcHIgOiBzdHJpbmc7XG4gICAgKCogVGFibGUgZnJvbSBjb2xvcnMgdG8gb25lIGNoYXJhY3RlciBvZiB0aGlzIGNvbG9yICopXG4gICAgbmNvbG9yIDogaW50O1xuICAgICgqIE51bWJlciBvZiBjb2xvcnMuICopXG4gICAgbG5sIDogaW50O1xuICAgICgqIENvbG9yIG9mIHRoZSBsYXN0IG5ld2xpbmUuIC0xIGlmIHVubmVjZXNzYXJ5ICopXG4gICAgdGJsIDogQXV0b21hdGEud29ya2luZ19hcmVhO1xuICAgICgqIFRlbXBvcmFyeSB0YWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbmRleFxuICAgICAgIHdoZW4gY29tcHV0aW5nIGEgbmV3IHN0YXRlICopXG4gICAgc3RhdGVzIDogc3RhdGUgQXV0b21hdGEuU3RhdGUuVGFibGUudDtcbiAgICAoKiBTdGF0ZXMgb2YgdGhlIGRldGVybWluaXN0aWMgYXV0b21hdGEgKilcbiAgICBncm91cF9uYW1lcyA6IChzdHJpbmcgKiBpbnQpIGxpc3Q7XG4gICAgKCogTmFtZWQgZ3JvdXBzIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBncm91cF9jb3VudCA6IGludFxuICAgICgqIE51bWJlciBvZiBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKSB9XG5cbmxldCBwcF9yZSBjaCByZSA9IEF1dG9tYXRhLnBwIGNoIHJlLmluaXRpYWxcblxubGV0IHByaW50X3JlID0gcHBfcmVcblxubGV0IGdyb3VwX2NvdW50IHJlID0gcmUuZ3JvdXBfY291bnRcblxubGV0IGdyb3VwX25hbWVzIHJlID0gcmUuZ3JvdXBfbmFtZXNcblxuKCogSW5mb3JtYXRpb24gdXNlZCBkdXJpbmcgbWF0Y2hpbmcgKilcbnR5cGUgaW5mbyA9XG4gIHsgcmUgOiByZTtcbiAgICAoKiBUaGUgYXV0b21hdGEgKilcbiAgICBjb2xvcnMgOiBzdHJpbmc7XG4gICAgKCogQ29sb3IgdGFibGUgKFt4LmNvbG9ycyA9IHgucmUuY29sb3JzXSlcbiAgICAgICBTaG9ydGN1dCB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgbXV0YWJsZSBwb3NpdGlvbnMgOiBpbnQgYXJyYXk7XG4gICAgKCogQXJyYXkgb2YgbWFyayBwb3NpdGlvbnNcbiAgICAgICBUaGUgbWFyayBhcmUgb2ZmIGJ5IG9uZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyAqKVxuICAgIHBvcyA6IGludDtcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggaXMgc3RhcnRlZCAqKVxuICAgIGxhc3QgOiBpbnRcbiAgICAoKiBQb3NpdGlvbiB3aGVyZSB0aGUgbWF0Y2ggc2hvdWxkIHN0b3AgKikgfVxuXG5cbigqKioqKVxuXG5sZXQgY2F0ZWdvcnkgcmUgfmNvbG9yID1cbiAgaWYgY29sb3IgPSAtMSB0aGVuXG4gICAgQ2F0ZWdvcnkuaW5leGlzdGFudFxuICAgICgqIFNwZWNpYWwgY2F0ZWdvcnkgZm9yIHRoZSBsYXN0IG5ld2xpbmUgKilcbiAgZWxzZSBpZiBjb2xvciA9IHJlLmxubCB0aGVuXG4gICAgQ2F0ZWdvcnkuKGxhc3RuZXdsaW5lICsrIG5ld2xpbmUgKysgbm90X2xldHRlcilcbiAgZWxzZVxuICAgIENhdGVnb3J5LmZyb21fY2hhciAocmUuY29sb3JfcmVwci5bY29sb3JdKVxuXG4oKioqKilcblxubGV0IGR1bW15X25leHQgPSBbfHxdXG5cbmxldCB1bmtub3duX3N0YXRlID1cbiAgeyBpZHggPSB1bmtub3duOyByZWFsX2lkeCA9IDA7XG4gICAgbmV4dCA9IGR1bW15X25leHQ7IGZpbmFsID0gW107XG4gICAgZGVzYyA9IEF1dG9tYXRhLlN0YXRlLmR1bW15IH1cblxubGV0IG1rX3N0YXRlIG5jb2wgZGVzYyA9XG4gIGxldCBicmVha19zdGF0ZSA9XG4gICAgbWF0Y2ggQXV0b21hdGEuc3RhdHVzIGRlc2Mgd2l0aFxuICAgIHwgQXV0b21hdGEuUnVubmluZyAtPiBmYWxzZVxuICAgIHwgQXV0b21hdGEuRmFpbGVkXG4gICAgfCBBdXRvbWF0YS5NYXRjaCBfIC0+IHRydWVcbiAgaW5cbiAgeyBpZHggPSBpZiBicmVha19zdGF0ZSB0aGVuIGJyZWFrIGVsc2UgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHg7XG4gICAgcmVhbF9pZHggPSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICBuZXh0ID0gaWYgYnJlYWtfc3RhdGUgdGhlbiBkdW1teV9uZXh0IGVsc2UgQXJyYXkubWFrZSBuY29sIHVua25vd25fc3RhdGU7XG4gICAgZmluYWwgPSBbXTtcbiAgICBkZXNjIH1cblxubGV0IGZpbmRfc3RhdGUgcmUgZGVzYyA9XG4gIHRyeVxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmZpbmQgcmUuc3RhdGVzIGRlc2NcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QgPSBta19zdGF0ZSByZS5uY29sb3IgZGVzYyBpblxuICAgIEF1dG9tYXRhLlN0YXRlLlRhYmxlLmFkZCByZS5zdGF0ZXMgZGVzYyBzdDtcbiAgICBzdFxuXG4oKioqKiBNYXRjaCB3aXRoIG1hcmtzICoqKiopXG5cbmxldCBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgPVxuICBsZXQgZGVzYyA9IEF1dG9tYXRhLmRlbHRhIGluZm8ucmUudGJsIGNhdCBjb2xvciBzdC5kZXNjIGluXG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaW5mby5wb3NpdGlvbnMgaW5cbiAgaWYgZGVzYy5BdXRvbWF0YS5TdGF0ZS5pZHggPSBsZW4gJiYgbGVuID4gMCB0aGVuIGJlZ2luXG4gICAgbGV0IHBvcyA9IGluZm8ucG9zaXRpb25zIGluXG4gICAgaW5mby5wb3NpdGlvbnMgPC0gQXJyYXkubWFrZSAoMiAqIGxlbikgMDtcbiAgICBBcnJheS5ibGl0IHBvcyAwIGluZm8ucG9zaXRpb25zIDAgbGVuXG4gIGVuZDtcbiAgZGVzY1xuXG5sZXQgdmFsaWRhdGUgaW5mbyAoczpzdHJpbmcpIH5wb3Mgc3QgPVxuICBsZXQgY29sb3IgPSBDaGFyLmNvZGUgKGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICBsZXQgZGVzYycgPSBkZWx0YSBpbmZvIGNhdCB+Y29sb3Igc3QgaW5cbiAgbGV0IHN0JyA9IGZpbmRfc3RhdGUgaW5mby5yZSBkZXNjJyBpblxuICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnXG5cbmxldCByZWMgbG9vcCBpbmZvIHMgfnBvcyBzdCA9XG4gIGlmIHBvcyA8IGluZm8ubGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGxldCBpZHggPSBzdCcuaWR4IGluXG4gICAgaWYgaWR4ID49IDAgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKGlkeCkgPC0gcG9zO1xuICAgICAgbG9vcCBpbmZvIHMgfnBvczoocG9zICsgMSkgc3QnXG4gICAgZW5kIGVsc2UgaWYgaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgICAgaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgICAgc3QnXG4gICAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wIGluZm8gcyB+cG9zIHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgcmVjIGxvb3Bfbm9fbWFyayBpbmZvIHMgfnBvcyB+bGFzdCBzdCA9XG4gIGlmIHBvcyA8IGxhc3QgdGhlblxuICAgIGxldCBzdCcgPSBzdC5uZXh0LihDaGFyLmNvZGUgaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgICBpZiBzdCcuaWR4ID49IDAgdGhlblxuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zOihwb3MgKyAxKSB+bGFzdCBzdCdcbiAgICBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdCdcbiAgICBlbHNlIGJlZ2luICgqIFVua25vd24gKilcbiAgICAgIHZhbGlkYXRlIGluZm8gcyB+cG9zIHN0O1xuICAgICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0XG4gICAgZW5kXG4gIGVsc2VcbiAgICBzdFxuXG5sZXQgZmluYWwgaW5mbyBzdCBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHN0LmZpbmFsXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0JyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjooLTEpIHN0IGluXG4gICAgbGV0IHJlcyA9IChzdCcuQXV0b21hdGEuU3RhdGUuaWR4LCBBdXRvbWF0YS5zdGF0dXMgc3QnKSBpblxuICAgIHN0LmZpbmFsIDwtIChjYXQsIHJlcykgOjogc3QuZmluYWw7XG4gICAgcmVzXG5cbmxldCBmaW5kX2luaXRpYWxfc3RhdGUgcmUgY2F0ID1cbiAgdHJ5XG4gICAgTGlzdC5hc3NxIGNhdCByZS5pbml0aWFsX3N0YXRlc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IGZpbmRfc3RhdGUgcmUgKEF1dG9tYXRhLlN0YXRlLmNyZWF0ZSBjYXQgcmUuaW5pdGlhbCkgaW5cbiAgICByZS5pbml0aWFsX3N0YXRlcyA8LSAoY2F0LCBzdCkgOjogcmUuaW5pdGlhbF9zdGF0ZXM7XG4gICAgc3RcblxubGV0IGdldF9jb2xvciByZSAoczpzdHJpbmcpIHBvcyA9XG4gIGlmIHBvcyA8IDAgdGhlblxuICAgIC0xXG4gIGVsc2VcbiAgICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGlmIHBvcyA+PSBzbGVuIHRoZW5cbiAgICAgIC0xXG4gICAgZWxzZSBpZiBwb3MgPSBzbGVuIC0gMSAmJiByZS5sbmwgPD4gLTEgJiYgcy5bcG9zXSA9ICdcXG4nIHRoZW5cbiAgICAgICgqIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICAgICAgcmUubG5sXG4gICAgZWxzZVxuICAgICAgQ2hhci5jb2RlIHJlLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dXG5cbmxldCByZWMgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3Mgc3Qgfmdyb3VwcyA9XG4gIGxldCBzdCcgPSBzdC5uZXh0LihpbmZvLnJlLmxubCkgaW5cbiAgaWYgc3QnLmlkeCA+PSAwIHRoZW4gYmVnaW5cbiAgICBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oc3QnLmlkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBpZiBzdCcuaWR4ID0gYnJlYWsgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcucmVhbF9pZHgpIDwtIHBvcztcbiAgICBzdCdcbiAgZW5kIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgIGxldCBjb2xvciA9IGluZm8ucmUubG5sIGluXG4gICAgbGV0IHJlYWxfYyA9IENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlICdcXG4nXSBpblxuICAgIGxldCBjYXQgPSBjYXRlZ29yeSBpbmZvLnJlIH5jb2xvciBpblxuICAgIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvcjpyZWFsX2Mgc3QgaW5cbiAgICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gICAgc3QubmV4dC4oY29sb3IpIDwtIHN0JztcbiAgICBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzXG4gIGVuZFxuXG5sZXQgcmVjIHNjYW5fc3RyIGluZm8gKHM6c3RyaW5nKSBpbml0aWFsX3N0YXRlIH5ncm91cHMgPVxuICBsZXQgcG9zID0gaW5mby5wb3MgaW5cbiAgbGV0IGxhc3QgPSBpbmZvLmxhc3QgaW5cbiAgaWYgKGxhc3QgPSBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICYmIGluZm8ucmUubG5sIDw+IC0xXG4gICAgICAmJiBsYXN0ID4gcG9zXG4gICAgICAmJiBTdHJpbmcuZ2V0IHMgKGxhc3QgLSAxKSA9ICdcXG4nKVxuICB0aGVuIGJlZ2luXG4gICAgbGV0IGluZm8gPSB7IGluZm8gd2l0aCBsYXN0ID0gbGFzdCAtIDEgfSBpblxuICAgIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgICBpZiBzdC5pZHggPSBicmVhayB0aGVuXG4gICAgICBzdFxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zOihsYXN0IC0gMSkgc3Qgfmdyb3Vwc1xuICBlbmQgZWxzZSBpZiBncm91cHMgdGhlblxuICAgIGxvb3AgaW5mbyBzIH5wb3MgaW5pdGlhbF9zdGF0ZVxuICBlbHNlXG4gICAgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IGluaXRpYWxfc3RhdGVcblxuKCogVGhpcyBmdW5jdGlvbiBhZGRzIGEgZmluYWwgYm91bmRhcnkgY2hlY2sgb24gdGhlIGlucHV0LlxuICAgVGhpcyBpcyB1c2VmdWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGZhaWxlZCBiZWNhdXNlXG4gICBvZiBpbnN1ZmZpY2llbnQgaW5wdXQsIG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHlcbiAgIG1hdGNoZXMgZm9yIHJlZ2V4IHRoYXQgaGF2ZSBib3VuZGFyeSBjb25kaXRpb25zIHdpdGggcmVzcGVjdFxuICAgdG8gdGhlIGlucHV0IHN0cmluZy5cbiAqKVxubGV0IGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHMgPVxuICBsZXQgZmluYWxfY2F0ID1cbiAgICBpZiBsYXN0ID0gc2xlbiB0aGVuXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGluZXhpc3RhbnQpXG4gICAgZWxzZVxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIGxhc3QpKVxuICBpblxuICBsZXQgKGlkeCwgcmVzKSA9IGZpbmFsIGluZm8gc3QgZmluYWxfY2F0IGluXG4gIChtYXRjaCBncm91cHMsIHJlcyB3aXRoXG4gIHwgdHJ1ZSwgTWF0Y2ggXyAtPiBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBsYXN0XG4gIHwgXyAtPiAoKSk7XG4gIHJlc1xuXG5sZXQgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW4gPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgbGFzdCA9IGlmIGxlbiA9IC0xIHRoZW4gc2xlbiBlbHNlIHBvcyArIGxlbiBpblxuICBsZXQgaW5mbyA9XG4gICAgeyByZSA7IGNvbG9ycyA9IHJlLmNvbG9yczsgcG9zIDsgbGFzdFxuICAgIDsgcG9zaXRpb25zID1cbiAgICAgICAgaWYgZ3JvdXBzIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbiA9IEF1dG9tYXRhLmluZGV4X2NvdW50IHJlLnRibCArIDEgaW5cbiAgICAgICAgICBpZiBuIDw9IDEwIHRoZW5cbiAgICAgICAgICAgIFt8MDswOzA7MDswOzA7MDswOzA7MHxdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkubWFrZSBuIDBcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBbfHxdIH1cbiAgaW5cbiAgbGV0IGluaXRpYWxfY2F0ID1cbiAgICBpZiBwb3MgPSAwIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKysgY2F0ZWdvcnkgcmUgfmNvbG9yOihnZXRfY29sb3IgcmUgcyAocG9zIC0gMSkpKVxuICBpblxuICBsZXQgaW5pdGlhbF9zdGF0ZSA9IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBpbml0aWFsX2NhdCBpblxuICBsZXQgc3QgPSBzY2FuX3N0ciBpbmZvIHMgaW5pdGlhbF9zdGF0ZSB+Z3JvdXBzIGluXG4gIGxldCByZXMgPVxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHx8IChwYXJ0aWFsICYmIG5vdCBncm91cHMpIHRoZW5cbiAgICAgIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjXG4gICAgZWxzZSBpZiBwYXJ0aWFsICYmIGdyb3VwcyB0aGVuXG4gICAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgc3QuZGVzYyB3aXRoXG4gICAgICB8IE1hdGNoIF8gfCBGYWlsZWQgYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgfCBSdW5uaW5nIC0+XG4gICAgICAgICgqIFRoaXMgY291bGQgYmUgYmVjYXVzZSBpdCdzIHN0aWxsIG5vdCBmdWxseSBtYXRjaGVkLCBvciBpdFxuICAgICAgICAgICBjb3VsZCBiZSB0aGF0IGJlY2F1c2Ugd2UgbmVlZCB0byBydW4gc3BlY2lhbCBlbmQgb2YgaW5wdXRcbiAgICAgICAgICAgY2hlY2tzLiAqKVxuICAgICAgICAobWF0Y2ggZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyB3aXRoXG4gICAgICAgICB8IE1hdGNoIF8gYXMgc3RhdHVzIC0+IHN0YXR1c1xuICAgICAgICAgfCBGYWlsZWQgfCBSdW5uaW5nIC0+XG4gICAgICAgICAgICgqIEEgZmFpbHVyZSBoZXJlIGp1c3QgbWVhbnMgdGhhdCB3ZSBuZWVkIG1vcmUgZGF0YSwgaS5lLlxuICAgICAgICAgICAgICBpdCdzIGEgcGFydGlhbCBtYXRjaC4gKilcbiAgICAgICAgICAgUnVubmluZylcbiAgICBlbHNlIGZpbmFsX2JvdW5kYXJ5X2NoZWNrIH5sYXN0IH5zbGVuIHJlIHMgfmluZm8gfnN0IH5ncm91cHNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgICBBdXRvbWF0YS5NYXRjaCAobWFya3MsIHBtYXJrcykgLT5cbiAgICBNYXRjaCB7IHMgOyBtYXJrczsgcG1hcmtzIDsgZ3BvcyA9IGluZm8ucG9zaXRpb25zOyBnY291bnQgPSByZS5ncm91cF9jb3VudH1cbiAgfCBBdXRvbWF0YS5GYWlsZWQgLT4gRmFpbGVkXG4gIHwgQXV0b21hdGEuUnVubmluZyAtPlxuICAgIGxldCBub19tYXRjaF9zdGFydHNfYmVmb3JlID0gaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKDApIGVsc2UgMCBpblxuICAgIFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH1cblxubGV0IG1rX3JlIH5pbml0aWFsIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lcyB+Z3JvdXBfY291bnQgPVxuICB7IGluaXRpYWwgO1xuICAgIGluaXRpYWxfc3RhdGVzID0gW107XG4gICAgY29sb3JzO1xuICAgIGNvbG9yX3JlcHI7XG4gICAgbmNvbG9yO1xuICAgIGxubDtcbiAgICB0YmwgPSBBdXRvbWF0YS5jcmVhdGVfd29ya2luZ19hcmVhICgpO1xuICAgIHN0YXRlcyA9IEF1dG9tYXRhLlN0YXRlLlRhYmxlLmNyZWF0ZSA5NztcbiAgICBncm91cF9uYW1lcztcbiAgICBncm91cF9jb3VudCB9XG5cbigqKioqIENoYXJhY3RlciBzZXRzICoqKiopXG5cbmxldCBjc2VxIGMgYycgPSBDc2V0LnNlcSAoQ2hhci5jb2RlIGMpIChDaGFyLmNvZGUgYycpXG5sZXQgY2FkZCBjIHMgPSBDc2V0LmFkZCAoQ2hhci5jb2RlIGMpIHNcblxubGV0IHRyYW5zX3NldCBjYWNoZSBjbSBzID1cbiAgbWF0Y2ggQ3NldC5vbmVfY2hhciBzIHdpdGhcbiAgfCBTb21lIGkgLT4gQ3NldC5jc2luZ2xlIGNtLltpXVxuICB8IE5vbmUgLT5cbiAgICBsZXQgdiA9IChDc2V0Lmhhc2hfcmVjIHMsIHMpIGluXG4gICAgdHJ5XG4gICAgICBDc2V0LkNTZXRNYXAuZmluZCB2ICFjYWNoZVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgbCA9XG4gICAgICAgIENzZXQuZm9sZF9yaWdodFxuICAgICAgICAgIHNcbiAgICAgICAgICB+ZjooZnVuIChpLCBqKSBsIC0+IENzZXQudW5pb24gKGNzZXEgY20uW2ldIGNtLltqXSkgbClcbiAgICAgICAgICB+aW5pdDpDc2V0LmVtcHR5XG4gICAgICBpblxuICAgICAgY2FjaGUgOj0gQ3NldC5DU2V0TWFwLmFkZCB2IGwgIWNhY2hlO1xuICAgICAgbFxuXG4oKioqKilcblxudHlwZSByZWdleHAgPVxuICAgIFNldCBvZiBDc2V0LnRcbiAgfCBTZXF1ZW5jZSBvZiByZWdleHAgbGlzdFxuICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcFxuICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gIHwgR3JvdXAgb2Ygc3RyaW5nIG9wdGlvbiAqIHJlZ2V4cCB8IE5vX2dyb3VwIG9mIHJlZ2V4cCB8IE5lc3Qgb2YgcmVnZXhwXG4gIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICB8IENvbXBsZW1lbnQgb2YgcmVnZXhwIGxpc3RcbiAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxubW9kdWxlIFZpZXcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVnZXhwID1cbiAgICAgIFNldCBvZiBDc2V0LnRcbiAgICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBBbHRlcm5hdGl2ZSBvZiByZWdleHAgbGlzdFxuICAgIHwgUmVwZWF0IG9mIHJlZ2V4cCAqIGludCAqIGludCBvcHRpb25cbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gICAgfCBTZW0gb2YgQXV0b21hdGEuc2VtICogcmVnZXhwXG4gICAgfCBTZW1fZ3JlZWR5IG9mIEF1dG9tYXRhLnJlcF9raW5kICogcmVnZXhwXG4gICAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgICB8IENhc2Ugb2YgcmVnZXhwIHwgTm9fY2FzZSBvZiByZWdleHBcbiAgICB8IEludGVyc2VjdGlvbiBvZiByZWdleHAgbGlzdFxuICAgIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICAgIHwgRGlmZmVyZW5jZSBvZiByZWdleHAgKiByZWdleHBcbiAgICB8IFBtYXJrIG9mIFBtYXJrLnQgKiByZWdleHBcblxuICBsZXQgdmlldyB0ID0gdFxuZW5kXG5cbmxldCByZWMgcHAgZm10IHQgPVxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHZhciBzIHJlID0gc2V4cCBmbXQgcyBwcCByZSBpblxuICBsZXQgc2VxIHMgcmVsID0gc2V4cCBmbXQgcyAobGlzdCBwcCkgcmVsIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNldCBzIC0+ICBzZXhwIGZtdCBcIlNldFwiIENzZXQucHAgc1xuICB8IFNlcXVlbmNlIHNxIC0+IHNlcSBcIlNlcXVlbmNlXCIgc3FcbiAgfCBBbHRlcm5hdGl2ZSBhbHQgLT4gc2VxIFwiQWx0ZXJuYXRpdmVcIiBhbHRcbiAgfCBSZXBlYXQgKHJlLCBzdGFydCwgc3RvcCkgLT5cbiAgICBsZXQgcHAnIGZtdCAoKSA9IGZwcmludGYgZm10IFwiJWFAICVkJWFcIiBwcCByZSAgIHN0YXJ0ICAgb3B0aW50IHN0b3AgaW5cbiAgICBzZXhwIGZtdCBcIlJlcGVhdFwiIHBwJyAoKVxuICB8IEJlZ19vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9saW5lXCJcbiAgfCBFbmRfb2ZfbGluZSAgICAgIC0+IHN0ciBmbXQgXCJFbmRfb2ZfbGluZVwiXG4gIHwgQmVnX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3dvcmRcIlxuICB8IEVuZF9vZl93b3JkICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl93b3JkXCJcbiAgfCBOb3RfYm91bmQgICAgICAgIC0+IHN0ciBmbXQgXCJOb3RfYm91bmRcIlxuICB8IEJlZ19vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkJlZ19vZl9zdHJcIlxuICB8IEVuZF9vZl9zdHIgICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9zdHJcIlxuICB8IExhc3RfZW5kX29mX2xpbmUgLT4gc3RyIGZtdCBcIkxhc3RfZW5kX29mX2xpbmVcIlxuICB8IFN0YXJ0ICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0YXJ0XCJcbiAgfCBTdG9wICAgICAgICAgICAgIC0+IHN0ciBmbXQgXCJTdG9wXCJcbiAgfCBTZW0gKHNlbSwgcmUpICAgIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1cIiAocGFpciBBdXRvbWF0YS5wcF9zZW0gcHApIChzZW0sIHJlKVxuICB8IFNlbV9ncmVlZHkgKGssIHJlKSAtPlxuICAgIHNleHAgZm10IFwiU2VtX2dyZWVkeVwiIChwYWlyIEF1dG9tYXRhLnBwX3JlcF9raW5kIHBwKSAoaywgcmUpXG4gIHwgR3JvdXAgKE5vbmUsIGMpICAgLT4gdmFyIFwiR3JvdXBcIiBjXG4gIHwgR3JvdXAgKFNvbWUgbiwgYykgLT4gc2V4cCBmbXQgXCJOYW1lZF9ncm91cFwiIChwYWlyIHN0ciBwcCkgKG4sIGMpXG4gIHwgTm9fZ3JvdXAgYyAgICAgLT4gdmFyIFwiTm9fZ3JvdXBcIiBjXG4gIHwgTmVzdCBjICAgICAgICAgLT4gdmFyIFwiTmVzdFwiIGNcbiAgfCBDYXNlIGMgICAgICAgICAtPiB2YXIgXCJDYXNlXCIgY1xuICB8IE5vX2Nhc2UgYyAgICAgIC0+IHZhciBcIk5vX2Nhc2VcIiBjXG4gIHwgSW50ZXJzZWN0aW9uIGMgLT4gc2VxIFwiSW50ZXJzZWN0aW9uXCIgY1xuICB8IENvbXBsZW1lbnQgYyAgIC0+IHNlcSBcIkNvbXBsZW1lbnRcIiBjXG4gIHwgRGlmZmVyZW5jZSAoYSwgYikgLT4gc2V4cCBmbXQgXCJEaWZmZXJlbmNlXCIgKHBhaXIgcHAgcHApIChhLCBiKVxuICB8IFBtYXJrIChtLCByKSAgICAgIC0+IHNleHAgZm10IFwiUG1hcmtcIiAocGFpciBQbWFyay5wcCBwcCkgKG0sIHIpXG5cbmxldCByZWMgaXNfY2hhcnNldCA9IGZ1bmN0aW9uXG4gIHwgU2V0IF8gLT5cbiAgICB0cnVlXG4gIHwgQWx0ZXJuYXRpdmUgbCB8IEludGVyc2VjdGlvbiBsIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGlzX2NoYXJzZXQgbFxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIGlzX2NoYXJzZXQgciAmJiBpc19jaGFyc2V0IHInXG4gIHwgU2VtIChfLCByKSB8IFNlbV9ncmVlZHkgKF8sIHIpXG4gIHwgTm9fZ3JvdXAgciB8IENhc2UgciB8IE5vX2Nhc2UgciAtPlxuICAgIGlzX2NoYXJzZXQgclxuICB8IFNlcXVlbmNlIF8gfCBSZXBlYXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBOb3RfYm91bmQgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgR3JvdXAgXyB8IE5lc3QgXyB8IFBtYXJrIChfLF8pLT5cbiAgICBmYWxzZVxuXG4oKlhYWCBVc2UgYSBiZXR0ZXIgYWxnb3JpdGhtIGFsbG93aW5nIG5vbi1jb250aWd1b3VzIHJlZ2lvbnM/ICopXG5cbmxldCBjdXBwZXIgPVxuICBDc2V0LnVuaW9uIChjc2VxICdBJyAnWicpXG4gICAgKENzZXQudW5pb24gKGNzZXEgJ1xcMTkyJyAnXFwyMTQnKSAoY3NlcSAnXFwyMTYnICdcXDIyMicpKVxubGV0IGNsb3dlciA9IENzZXQub2Zmc2V0IDMyIGN1cHBlclxubGV0IGNhbHBoYSA9XG4gIExpc3QuZm9sZF9yaWdodCBjYWRkIFsnXFwxNzAnOyAnXFwxODEnOyAnXFwxODYnOyAnXFwyMjMnOyAnXFwyNTUnXVxuICAgIChDc2V0LnVuaW9uIGNsb3dlciBjdXBwZXIpXG5sZXQgY2RpZ2l0ID0gY3NlcSAnMCcgJzknXG5sZXQgY2FsbnVtID0gQ3NldC51bmlvbiBjYWxwaGEgY2RpZ2l0XG5sZXQgY3dvcmQgPSBjYWRkICdfJyBjYWxudW1cblxubGV0IGNvbG9yaXplIGMgcmVnZXhwID1cbiAgbGV0IGxubCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcmVjIGNvbG9yaXplIHJlZ2V4cCA9XG4gICAgbWF0Y2ggcmVnZXhwIHdpdGhcbiAgICAgIFNldCBzICAgICAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IHMgY1xuICAgIHwgU2VxdWVuY2UgbCAgICAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgQWx0ZXJuYXRpdmUgbCAgICAgICAgICAgICAtPiBMaXN0Lml0ZXIgY29sb3JpemUgbFxuICAgIHwgUmVwZWF0IChyLCBfLCBfKSAgICAgICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIC0+IENvbG9yX21hcC5zcGxpdCAoQ3NldC5jc2luZ2xlICdcXG4nKSBjXG4gICAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmQgICAgICAgICAgICAgICAgIC0+IENvbG9yX21hcC5zcGxpdCBjd29yZCBjXG4gICAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICAgIHwgU3RhcnQgfCBTdG9wICAgICAgICAgICAgICAtPiAoKVxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZSAgICAgICAgICAtPiBsbmwgOj0gdHJ1ZVxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgICB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgciB8IFBtYXJrIChfLHIpICAgICAtPiBjb2xvcml6ZSByXG4gICAgfCBDYXNlIF8gfCBOb19jYXNlIF9cbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgXyAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGNvbG9yaXplIHJlZ2V4cDtcbiAgIWxubFxuXG4oKioqKiBDb21waWxhdGlvbiAqKioqKVxuXG5sZXQgcmVjIGVxdWFsIHgxIHgyID1cbiAgbWF0Y2ggeDEsIHgyIHdpdGhcbiAgICBTZXQgczEsIFNldCBzMiAtPlxuICAgIHMxID0gczJcbiAgfCBTZXF1ZW5jZSBsMSwgU2VxdWVuY2UgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQWx0ZXJuYXRpdmUgbDEsIEFsdGVybmF0aXZlIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IFJlcGVhdCAoeDEnLCBpMSwgajEpLCBSZXBlYXQgKHgyJywgaTIsIGoyKSAtPlxuICAgIGkxID0gaTIgJiYgajEgPSBqMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgQmVnX29mX2xpbmUsIEJlZ19vZl9saW5lXG4gIHwgRW5kX29mX2xpbmUsIEVuZF9vZl9saW5lXG4gIHwgQmVnX29mX3dvcmQsIEJlZ19vZl93b3JkXG4gIHwgRW5kX29mX3dvcmQsIEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kLCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyLCBCZWdfb2Zfc3RyXG4gIHwgRW5kX29mX3N0ciwgRW5kX29mX3N0clxuICB8IExhc3RfZW5kX29mX2xpbmUsIExhc3RfZW5kX29mX2xpbmVcbiAgfCBTdGFydCwgU3RhcnRcbiAgfCBTdG9wLCBTdG9wIC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoc2VtMSwgeDEnKSwgU2VtIChzZW0yLCB4MicpIC0+XG4gICAgc2VtMSA9IHNlbTIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IFNlbV9ncmVlZHkgKGsxLCB4MScpLCBTZW1fZ3JlZWR5IChrMiwgeDInKSAtPlxuICAgIGsxID0gazIgJiYgZXF1YWwgeDEnIHgyJ1xuICB8IEdyb3VwIF8sIEdyb3VwIF8gLT4gKCogRG8gbm90IG1lcmdlIGdyb3VwcyEgKilcbiAgICBmYWxzZVxuICB8IE5vX2dyb3VwIHgxJywgTm9fZ3JvdXAgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IE5lc3QgeDEnLCBOZXN0IHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBDYXNlIHgxJywgQ2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTm9fY2FzZSB4MScsIE5vX2Nhc2UgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IEludGVyc2VjdGlvbiBsMSwgSW50ZXJzZWN0aW9uIGwyIC0+XG4gICAgZXFfbGlzdCBsMSBsMlxuICB8IENvbXBsZW1lbnQgbDEsIENvbXBsZW1lbnQgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgRGlmZmVyZW5jZSAoeDEnLCB4MScnKSwgRGlmZmVyZW5jZSAoeDInLCB4MicnKSAtPlxuICAgIGVxdWFsIHgxJyB4MicgJiYgZXF1YWwgeDEnJyB4MicnXG4gIHwgUG1hcmsgKG0xLCByMSksIFBtYXJrIChtMiwgcjIpIC0+XG4gICAgUG1hcmsuZXF1YWwgbTEgbTIgJiYgZXF1YWwgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxuYW5kIGVxX2xpc3QgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIFtdLCBbXSAtPlxuICAgIHRydWVcbiAgfCB4MSA6OiByMSwgeDIgOjogcjIgLT5cbiAgICBlcXVhbCB4MSB4MiAmJiBlcV9saXN0IHIxIHIyXG4gIHwgXyAtPlxuICAgIGZhbHNlXG5cbmxldCBzZXF1ZW5jZSA9IGZ1bmN0aW9uXG4gIHwgW3hdIC0+IHhcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgcmVjIG1lcmdlX3NlcXVlbmNlcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBbXVxuICB8IEFsdGVybmF0aXZlIGwnIDo6IHIgLT5cbiAgICBtZXJnZV9zZXF1ZW5jZXMgKGwnIEAgcilcbiAgfCBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIHIgd2l0aFxuICAgICAgICBTZXF1ZW5jZSAoeCcgOjogeScpIDo6IHInIHdoZW4gZXF1YWwgeCB4JyAtPlxuICAgICAgICBTZXF1ZW5jZSBbeDsgQWx0ZXJuYXRpdmUgW3NlcXVlbmNlIHk7IHNlcXVlbmNlIHknXV0gOjogcidcbiAgICAgIHwgcicgLT5cbiAgICAgICAgU2VxdWVuY2UgKHggOjogeSkgOjogcidcbiAgICBlbmRcbiAgfCB4IDo6IHIgLT5cbiAgICB4IDo6IG1lcmdlX3NlcXVlbmNlcyByXG5cbm1vZHVsZSBBID0gQXV0b21hdGFcblxubGV0IGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciA9XG4gIG1hdGNoIGtpbmQsIGtpbmQnIHdpdGhcbiAgICBgRmlyc3QsIGBGaXJzdCAtPiBjclxuICB8IGBGaXJzdCwgayAgICAgICAtPiBBLnNlcSBpZHMgayBjciAoQS5lcHMgaWRzKVxuICB8ICBfICAgICAgICAgICAgICAgLT4gY3JcblxuKCogWFhYIHNob3VsZCBwcm9iYWJseSBjb21wdXRlIGEgY2F0ZWdvcnkgbWFzayAqKVxubGV0IHJlYyB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICAoQS5jc3QgaWRzICh0cmFuc19zZXQgY2FjaGUgYyBzKSwga2luZClcbiAgfCBTZXF1ZW5jZSBsIC0+XG4gICAgKHRyYW5zX3NlcSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIGwsIGtpbmQpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGJlZ2luIG1hdGNoIG1lcmdlX3NlcXVlbmNlcyBsIHdpdGhcbiAgICAgICAgW3InXSAtPlxuICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgIChlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IsIGtpbmQpXG4gICAgICB8IG1lcmdlZF9zZXF1ZW5jZXMgLT5cbiAgICAgICAgKEEuYWx0IGlkc1xuICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgKGZ1biByJyAtPlxuICAgICAgICAgICAgICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5XG4gICAgICAgICAgICAgICAgICAgICBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgICAgICAgICAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3IpXG4gICAgICAgICAgICAgIG1lcmdlZF9zZXF1ZW5jZXMpLFxuICAgICAgICAga2luZClcbiAgICBlbmRcbiAgfCBSZXBlYXQgKHInLCBpLCBqKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIGxldCByZW0gPVxuICAgICAgbWF0Y2ggaiB3aXRoXG4gICAgICAgIE5vbmUgLT5cbiAgICAgICAgQS5yZXAgaWRzIGdyZWVkeSBraW5kJyBjclxuICAgICAgfCBTb21lIGogLT5cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIG1hdGNoIGdyZWVkeSB3aXRoXG4gICAgICAgICAgICBgR3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtOyBBLmVwcyBpZHNdXG4gICAgICAgICAgfCBgTm9uX2dyZWVkeSAtPlxuICAgICAgICAgICAgZnVuIHJlbSAtPlxuICAgICAgICAgICAgICBBLmFsdCBpZHNcbiAgICAgICAgICAgICAgICBbQS5lcHMgaWRzOyBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtXVxuICAgICAgICBpblxuICAgICAgICBpdGVyIChqIC0gaSkgZiAoQS5lcHMgaWRzKVxuICAgIGluXG4gICAgKGl0ZXIgaSAoZnVuIHJlbSAtPiBBLnNlcSBpZHMga2luZCcgKEEucmVuYW1lIGlkcyBjcikgcmVtKSByZW0sIGtpbmQpXG4gIHwgQmVnX29mX2xpbmUgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgRW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5ld2xpbmUpLCBraW5kKVxuICB8IEJlZ19vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5sZXR0ZXIpLFxuICAgICBraW5kKVxuICB8IEVuZF9vZl93b3JkIC0+XG4gICAgKEEuc2VxIGlkcyBgRmlyc3RcbiAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkubGV0dGVyKVxuICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpLFxuICAgICBraW5kKVxuICB8IE5vdF9ib3VuZCAtPlxuICAgIChBLmFsdCBpZHMgW0Euc2VxIGlkcyBgRmlyc3RcbiAgICAgICAgICAgICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlcik7XG4gICAgICAgICAgICAgICAgQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKVxuICAgICAgICAgICAgICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSldLFxuICAgICBraW5kKVxuICB8IEJlZ19vZl9zdHIgLT5cbiAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuaW5leGlzdGFudCwga2luZClcbiAgfCBFbmRfb2Zfc3RyIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IExhc3RfZW5kX29mX2xpbmUgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIGxhc3RuZXdsaW5lKSwga2luZClcbiAgfCBTdGFydCAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU3RvcCAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuc2VhcmNoX2JvdW5kYXJ5LCBraW5kKVxuICB8IFNlbSAoa2luZCcsIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kJyBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCcga2luZCcnIGNyLFxuICAgICBraW5kJylcbiAgfCBTZW1fZ3JlZWR5IChncmVlZHknLCByJykgLT5cbiAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeScgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgfCBHcm91cCAobiwgcicpIC0+XG4gICAgaWYgaWduX2dyb3VwIHRoZW5cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gICAgZWxzZVxuICAgICAgbGV0IHAgPSAhcG9zIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBtYXRjaCBuIHdpdGhcbiAgICAgICAgfCBTb21lIG5hbWUgLT4gbmFtZXMgOj0gKG5hbWUsIHAgLyAyKSA6OiAhbmFtZXNcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICBpblxuICAgICAgcG9zIDo9ICFwb3MgKyAyO1xuICAgICAgbGV0IChjciwga2luZCcpID1cbiAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLm1hcmsgaWRzIHApIChcbiAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0IGNyIChBLm1hcmsgaWRzIChwICsgMSkpKSxcbiAgICAgICBraW5kJylcbiAgfCBOb19ncm91cCByJyAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCB0cnVlIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IE5lc3QgcicgLT5cbiAgICBsZXQgYiA9ICFwb3MgaW5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBpblxuICAgIGxldCBlID0gIXBvcyAtIDEgaW5cbiAgICBpZiBlIDwgYiB0aGVuXG4gICAgICAoY3IsIGtpbmQnKVxuICAgIGVsc2VcbiAgICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLmVyYXNlIGlkcyBiIGUpIGNyLCBraW5kJylcbiAgfCBEaWZmZXJlbmNlIF8gfCBDb21wbGVtZW50IF8gfCBJbnRlcnNlY3Rpb24gXyB8IE5vX2Nhc2UgXyB8IENhc2UgXyAtPlxuICAgIGFzc2VydCBmYWxzZVxuICB8IFBtYXJrIChpLCByJykgLT5cbiAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdCAoQS5wbWFyayBpZHMgaSkgY3IsIGtpbmQnKVxuXG5hbmQgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgQS5lcHMgaWRzXG4gIHwgW3JdIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyJ1xuICB8IHIgOjogcmVtIC0+XG4gICAgbGV0IChjcicsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByIGluXG4gICAgbGV0IGNyJycgPVxuICAgICAgdHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcmVtIGluXG4gICAgaWYgQS5pc19lcHMgY3InJyB0aGVuXG4gICAgICBjcidcbiAgICBlbHNlIGlmIEEuaXNfZXBzIGNyJyB0aGVuXG4gICAgICBjcicnXG4gICAgZWxzZVxuICAgICAgQS5zZXEgaWRzIGtpbmQnIGNyJyBjcicnXG5cbigqKioqIENhc2UgKioqKilcblxubGV0IGNhc2VfaW5zZW5zIHMgPVxuICBDc2V0LnVuaW9uIHMgKENzZXQudW5pb24gKENzZXQub2Zmc2V0IDMyIChDc2V0LmludGVyIHMgY3VwcGVyKSlcbiAgICAgICAgICAgICAgICAgIChDc2V0Lm9mZnNldCAoLTMyKSAoQ3NldC5pbnRlciBzIGNsb3dlcikpKVxuXG5sZXQgYXNfc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPiBzXG4gIHwgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG5cbigqIFhYWCBTaG91bGQgc3BsaXQgYWx0ZXJuYXRpdmVzIGludG8gKDEpIGNoYXJzZXRzIGFuZCAoMikgbW9yZVxuICAgY29tcGxleCByZWd1bGFyIGV4cHJlc3Npb25zOyBhbHRlcm5hdGl2ZSBzaG91bGQgdGhlcmVmb3JlIHByb2JhYmx5XG4gICBiZSBmbGF0dGVuIGhlcmUgKilcbmxldCByZWMgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+XG4gICAgU2V0IChpZiBpZ25fY2FzZSB0aGVuIGNhc2VfaW5zZW5zIHMgZWxzZSBzKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBTZXF1ZW5jZSAoTGlzdC5tYXAgKGhhbmRsZV9jYXNlIGlnbl9jYXNlKSBsKVxuICB8IEFsdGVybmF0aXZlIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwgaW5cbiAgICBpZiBpc19jaGFyc2V0IChBbHRlcm5hdGl2ZSBsJykgdGhlblxuICAgICAgU2V0IChMaXN0LmZvbGRfbGVmdCAoZnVuIHMgciAtPiBDc2V0LnVuaW9uIHMgKGFzX3NldCByKSkgQ3NldC5lbXB0eSBsJylcbiAgICBlbHNlXG4gICAgICBBbHRlcm5hdGl2ZSBsJ1xuICB8IFJlcGVhdCAociwgaSwgaikgLT5cbiAgICBSZXBlYXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIsIGksIGopXG4gIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBOb3RfYm91bmRcbiAgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3AgYXMgciAtPlxuICAgIHJcbiAgfCBTZW0gKGssIHIpIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIFNlbSAoaywgcicpXG4gIHwgU2VtX2dyZWVkeSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtX2dyZWVkeSAoaywgcicpXG4gIHwgR3JvdXAgKG4sIHIpIC0+XG4gICAgR3JvdXAgKG4sIGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG4gIHwgTm9fZ3JvdXAgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOb19ncm91cCByJ1xuICB8IE5lc3QgciAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBOZXN0IHInXG4gIHwgQ2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgZmFsc2UgclxuICB8IE5vX2Nhc2UgciAtPlxuICAgIGhhbmRsZV9jYXNlIHRydWUgclxuICB8IEludGVyc2VjdGlvbiBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQuaW50ZXIgcyAoYXNfc2V0IHIpKSBDc2V0LmNhbnkgbCcpXG4gIHwgQ29tcGxlbWVudCBsIC0+XG4gICAgbGV0IGwnID0gTGlzdC5tYXAgKGZ1biByIC0+IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpIGwgaW5cbiAgICBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnlcbiAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKVxuICAgICAgICAgICAgICBDc2V0LmVtcHR5IGwnKSlcbiAgfCBEaWZmZXJlbmNlIChyLCByJykgLT5cbiAgICBTZXQgKENzZXQuaW50ZXIgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikpXG4gICAgICAgICAgIChDc2V0LmRpZmYgQ3NldC5jYW55IChhc19zZXQgKGhhbmRsZV9jYXNlIGlnbl9jYXNlIHInKSkpKVxuICB8IFBtYXJrIChpLHIpIC0+IFBtYXJrIChpLGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIpXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZV8xIHJlZ2V4cCA9XG4gIGxldCByZWdleHAgPSBoYW5kbGVfY2FzZSBmYWxzZSByZWdleHAgaW5cbiAgbGV0IGMgPSBDb2xvcl9tYXAubWFrZSAoKSBpblxuICBsZXQgbmVlZF9sbmwgPSBjb2xvcml6ZSBjIHJlZ2V4cCBpblxuICBsZXQgKGNvbG9ycywgY29sb3JfcmVwciwgbmNvbG9yKSA9IENvbG9yX21hcC5mbGF0dGVuIGMgaW5cbiAgbGV0IGxubCA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yIGVsc2UgLTEgaW5cbiAgbGV0IG5jb2xvciA9IGlmIG5lZWRfbG5sIHRoZW4gbmNvbG9yICsgMSBlbHNlIG5jb2xvciBpblxuICBsZXQgaWRzID0gQS5jcmVhdGVfaWRzICgpIGluXG4gIGxldCBwb3MgPSByZWYgMCBpblxuICBsZXQgbmFtZXMgPSByZWYgW10gaW5cbiAgbGV0IChyLCBraW5kKSA9XG4gICAgdHJhbnNsYXRlIGlkc1xuICAgICAgYEZpcnN0IGZhbHNlIGZhbHNlIGBHcmVlZHkgcG9zIG5hbWVzIChyZWYgQ3NldC5DU2V0TWFwLmVtcHR5KSBjb2xvcnMgcmVnZXhwIGluXG4gIGxldCByID0gZW5mb3JjZV9raW5kIGlkcyBgRmlyc3Qga2luZCByIGluXG4gICgqRm9ybWF0LmVwcmludGYgXCI8JWQgJWQ+QC5cIiAhaWRzIG5jb2w7KilcbiAgbWtfcmUgfmluaXRpYWw6ciB+Y29sb3JzIH5jb2xvcl9yZXByIH5uY29sb3IgfmxubCB+Z3JvdXBfbmFtZXM6KExpc3QucmV2ICFuYW1lcykgfmdyb3VwX2NvdW50OighcG9zIC8gMilcblxuKCoqKiopXG5cbmxldCByZWMgYW5jaG9yZWQgPSBmdW5jdGlvblxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICBMaXN0LmV4aXN0cyBhbmNob3JlZCBsXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIExpc3QuZm9yX2FsbCBhbmNob3JlZCBsXG4gIHwgUmVwZWF0IChyLCBpLCBfKSAtPlxuICAgIGkgPiAwICYmIGFuY2hvcmVkIHJcbiAgfCBTZXQgXyB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkXG4gIHwgTm90X2JvdW5kIHwgRW5kX29mX3N0ciB8IExhc3RfZW5kX29mX2xpbmUgfCBTdG9wXG4gIHwgSW50ZXJzZWN0aW9uIF8gfCBDb21wbGVtZW50IF8gfCBEaWZmZXJlbmNlIF8gLT5cbiAgICBmYWxzZVxuICB8IEJlZ19vZl9zdHIgfCBTdGFydCAtPlxuICAgIHRydWVcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcikgfCBHcm91cCAoXywgcikgfCBOb19ncm91cCByIHwgTmVzdCByXG4gIHwgQ2FzZSByIHwgTm9fY2FzZSByIHwgUG1hcmsgKF8sIHIpIC0+XG4gICAgYW5jaG9yZWQgclxuXG4oKioqKilcblxudHlwZSB0ID0gcmVnZXhwXG5cbmxldCBzdHIgcyA9XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gU2V0IChDc2V0LmNzaW5nbGUgcy5baV0pIDo6ICFsXG4gIGRvbmU7XG4gIFNlcXVlbmNlICFsXG5sZXQgY2hhciBjID0gU2V0IChDc2V0LmNzaW5nbGUgYylcblxubGV0IGFsdCA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gQWx0ZXJuYXRpdmUgbFxubGV0IHNlcSA9IGZ1bmN0aW9uXG4gIHwgW3JdIC0+IHJcbiAgfCBsICAgLT4gU2VxdWVuY2UgbFxuXG5sZXQgZW1wdHkgPSBhbHQgW11cbmxldCBlcHNpbG9uID0gc2VxIFtdXG5sZXQgcmVwbiByIGkgaiA9XG4gIGlmIGkgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCI7XG4gIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT4gaW52YWxpZF9hcmcgXCJSZS5yZXBuXCJcbiAgICB8IF8gLT4gKClcbiAgZW5kO1xuICBSZXBlYXQgKHIsIGksIGopXG5sZXQgcmVwIHIgPSByZXBuIHIgMCBOb25lXG5sZXQgcmVwMSByID0gcmVwbiByIDEgTm9uZVxubGV0IG9wdCByID0gcmVwbiByIDAgKFNvbWUgMSlcbmxldCBib2wgPSBCZWdfb2ZfbGluZVxubGV0IGVvbCA9IEVuZF9vZl9saW5lXG5sZXQgYm93ID0gQmVnX29mX3dvcmRcbmxldCBlb3cgPSBFbmRfb2Zfd29yZFxubGV0IHdvcmQgciA9IHNlcSBbYm93OyByOyBlb3ddXG5sZXQgbm90X2JvdW5kYXJ5ID0gTm90X2JvdW5kXG5sZXQgYm9zID0gQmVnX29mX3N0clxubGV0IGVvcyA9IEVuZF9vZl9zdHJcbmxldCB3aG9sZV9zdHJpbmcgciA9IHNlcSBbYm9zOyByOyBlb3NdXG5sZXQgbGVvbCA9IExhc3RfZW5kX29mX2xpbmVcbmxldCBzdGFydCA9IFN0YXJ0XG5sZXQgc3RvcCA9IFN0b3BcbmxldCBsb25nZXN0IHIgPSBTZW0gKGBMb25nZXN0LCByKVxubGV0IHNob3J0ZXN0IHIgPSBTZW0gKGBTaG9ydGVzdCwgcilcbmxldCBmaXJzdCByID0gU2VtIChgRmlyc3QsIHIpXG5sZXQgZ3JlZWR5IHIgPSBTZW1fZ3JlZWR5IChgR3JlZWR5LCByKVxubGV0IG5vbl9ncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBOb25fZ3JlZWR5LCByKVxubGV0IGdyb3VwID9uYW1lIHIgPSBHcm91cCAobmFtZSwgcilcbmxldCBub19ncm91cCByID0gTm9fZ3JvdXAgclxubGV0IG5lc3QgciA9IE5lc3QgclxubGV0IG1hcmsgciA9IGxldCBpID0gUG1hcmsuZ2VuICgpIGluIChpLFBtYXJrIChpLHIpKVxuXG5sZXQgc2V0IHN0ciA9XG4gIGxldCBzID0gcmVmIENzZXQuZW1wdHkgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIHMgOj0gQ3NldC51bmlvbiAoQ3NldC5jc2luZ2xlIHN0ci5baV0pICFzXG4gIGRvbmU7XG4gIFNldCAhc1xuXG5sZXQgcmcgYyBjJyA9IFNldCAoY3NlcSBjIGMnKVxuXG5sZXQgaW50ZXIgbCA9XG4gIGxldCByID0gSW50ZXJzZWN0aW9uIGwgaW5cbiAgaWYgaXNfY2hhcnNldCByIHRoZW5cbiAgICByXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmludGVyXCJcblxubGV0IGNvbXBsIGwgPVxuICBsZXQgciA9IENvbXBsZW1lbnQgbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuY29tcGxcIlxuXG5sZXQgZGlmZiByIHInID1cbiAgbGV0IHInJyA9IERpZmZlcmVuY2UgKHIsIHInKSBpblxuICBpZiBpc19jaGFyc2V0IHInJyB0aGVuXG4gICAgcicnXG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZyBcIlJlLmRpZmZcIlxuXG5sZXQgYW55ID0gU2V0IENzZXQuY2FueVxubGV0IG5vdG5sID0gU2V0IChDc2V0LmRpZmYgQ3NldC5jYW55IChDc2V0LmNzaW5nbGUgJ1xcbicpKVxuXG5sZXQgbG93ZXIgPSBhbHQgW3JnICdhJyAneic7IGNoYXIgJ1xcMTgxJzsgcmcgJ1xcMjIzJyAnXFwyNDYnOyByZyAnXFwyNDgnICdcXDI1NSddXG5sZXQgdXBwZXIgPSBhbHQgW3JnICdBJyAnWic7IHJnICdcXDE5MicgJ1xcMjE0JzsgcmcgJ1xcMjE2JyAnXFwyMjInXVxubGV0IGFscGhhID0gYWx0IFtsb3dlcjsgdXBwZXI7IGNoYXIgJ1xcMTcwJzsgY2hhciAnXFwxODYnXVxubGV0IGRpZ2l0ID0gcmcgJzAnICc5J1xubGV0IGFsbnVtID0gYWx0IFthbHBoYTsgZGlnaXRdXG5sZXQgd29yZGMgPSBhbHQgW2FsbnVtOyBjaGFyICdfJ11cbmxldCBhc2NpaSA9IHJnICdcXDAwMCcgJ1xcMTI3J1xubGV0IGJsYW5rID0gc2V0IFwiXFx0IFwiXG5sZXQgY250cmwgPSBhbHQgW3JnICdcXDAwMCcgJ1xcMDMxJzsgcmcgJ1xcMTI3JyAnXFwxNTknXVxubGV0IGdyYXBoID0gYWx0IFtyZyAnXFwwMzMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwcmludCA9IGFsdCBbcmcgJ1xcMDMyJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDI1NSddXG5sZXQgcHVuY3QgPVxuICBhbHQgW3JnICdcXDAzMycgJ1xcMDQ3JzsgcmcgJ1xcMDU4JyAnXFwwNjQnOyByZyAnXFwwOTEnICdcXDA5Nic7XG4gICAgICAgcmcgJ1xcMTIzJyAnXFwxMjYnOyByZyAnXFwxNjAnICdcXDE2OSc7IHJnICdcXDE3MScgJ1xcMTgwJztcbiAgICAgICByZyAnXFwxODInICdcXDE4NSc7IHJnICdcXDE4NycgJ1xcMTkxJzsgY2hhciAnXFwyMTUnOyBjaGFyICdcXDI0NyddXG5sZXQgc3BhY2UgPSBhbHQgW2NoYXIgJyAnOyByZyAnXFwwMDknICdcXDAxMyddXG5sZXQgeGRpZ2l0ID0gYWx0IFtkaWdpdDsgcmcgJ2EnICdmJzsgcmcgJ0EnICdGJ11cblxubGV0IGNhc2UgciA9IENhc2UgclxubGV0IG5vX2Nhc2UgciA9IE5vX2Nhc2UgclxuXG4oKioqKilcblxubGV0IGNvbXBpbGUgciA9XG4gIGNvbXBpbGVfMSAoXG4gICAgaWYgYW5jaG9yZWQgciB0aGVuXG4gICAgICBncm91cCByXG4gICAgZWxzZVxuICAgICAgc2VxIFtzaG9ydGVzdCAocmVwIGFueSk7IGdyb3VwIHJdXG4gIClcblxubGV0IGV4ZWNfaW50ZXJuYWwgbmFtZSA/KHBvcz0wKSA/KGxlbiA9IC0xKSB+cGFydGlhbCB+Z3JvdXBzIHJlIHMgPVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IC0xIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgbmFtZTtcbiAgbWF0Y2hfc3RyIH5ncm91cHMgfnBhcnRpYWwgcmUgcyB+cG9zIH5sZW5cblxubGV0IGV4ZWMgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY1wiID9wb3MgP2xlbiB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGV4ZWNfb3B0ID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCBcIlJlLmV4ZWNfb3B0XCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZVxuICAgICAgICAgIHJlIHMgd2l0aFxuICAgIE1hdGNoIHN1YnN0ciAtPiBTb21lIHN1YnN0clxuICB8IF8gICAgICAgICAgICAtPiBOb25lXG5cbmxldCBleGVjcCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDpmYWxzZSBcIlJlLmV4ZWNwXCIgP3BvcyA/bGVuIHJlIHMgd2l0aFxuICAgIE1hdGNoIF9zdWJzdHIgLT4gdHJ1ZVxuICB8IF8gICAgICAgICAgICAgLT4gZmFsc2VcblxubGV0IGV4ZWNfcGFydGlhbCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3VwczpmYWxzZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggXyAtPiBgRnVsbFxuICB8IFJ1bm5pbmcgXyAtPiBgUGFydGlhbFxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbmxldCBleGVjX3BhcnRpYWxfZGV0YWlsZWQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDp0cnVlIFwiUmUuZXhlY19wYXJ0aWFsX2RldGFpbGVkXCJcbiAgICAgICAgICA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggZ3JvdXAgLT4gYEZ1bGwgZ3JvdXBcbiAgfCBSdW5uaW5nIHsgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSB9IC0+IGBQYXJ0aWFsIG5vX21hdGNoX3N0YXJ0c19iZWZvcmVcbiAgfCBGYWlsZWQgIC0+IGBNaXNtYXRjaFxuXG5tb2R1bGUgTWFyayA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IFBtYXJrLnRcblxuICBsZXQgdGVzdCAoZyA6IEdyb3VwLnQpIHAgPVxuICAgIFBtYXJrLlNldC5tZW0gcCBnLnBtYXJrc1xuXG4gIGxldCBhbGwgKGcgOiBHcm91cC50KSA9IGcucG1hcmtzXG5cbiAgbW9kdWxlIFNldCA9IFBtYXJrLlNldFxuXG4gIGxldCBlcXVhbCA9IFBtYXJrLmVxdWFsXG5cbiAgbGV0IGNvbXBhcmUgPSBQbWFyay5jb21wYXJlXG5cbmVuZFxuXG50eXBlIHNwbGl0X3Rva2VuID1cbiAgWyBgVGV4dCBvZiBzdHJpbmdcbiAgfCBgRGVsaW0gb2YgR3JvdXAudFxuICBdXG5cbm1vZHVsZSBSc2VxID0gc3RydWN0XG4gIGxldCBhbGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgKCogaW5kZXggb2YgdGhlIGZpcnN0IHBvc2l0aW9uIHdlIGRvIG5vdCBjb25zaWRlci5cbiAgICAgICAhcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50ICopXG4gICAgbGV0IGxpbWl0ID0gbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgIGlmIGw8MCB8fCBwb3MrbCA+IFN0cmluZy5sZW5ndGggcyB0aGVuIGludmFsaWRfYXJnIFwiUmUuYWxsXCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpdGVyYXRlIG9uIG1hdGNoZXMuIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgc2VhcmNoIGZvciB0aGUgbmV4dFxuICAgICAgIG9uZSBqdXN0IGFmdGVyIGl0cyBlbmQgKilcbiAgICBsZXQgcmVjIGF1eCBwb3MgKCkgPVxuICAgICAgaWYgcG9zID49IGxpbWl0XG4gICAgICB0aGVuIFNlcS5OaWwgKCogbm8gbW9yZSBtYXRjaGVzICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgc1xuICAgICAgICAgICAgICAgIH5wb3MgfmxlbjoobGltaXQgLSBwb3MpIHdpdGhcbiAgICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICAgbGV0IHBvcyA9IGlmIHAxPXAyIHRoZW4gcDIrMSBlbHNlIHAyIGluXG4gICAgICAgICAgU2VxLkNvbnMgKHN1YnN0ciwgYXV4IHBvcylcbiAgICAgICAgfCBSdW5uaW5nIF9cbiAgICAgICAgfCBGYWlsZWQgLT4gU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IHBvc1xuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgYWxsID9wb3MgP2xlbiByZSBzXG4gICAgfD4gU2VxLm1hcCAoZnVuIHN1YiAtPiBHcm91cC5nZXQgc3ViIDApXG5cbiAgbGV0IHNwbGl0X2Z1bGwgPyhwb3M9MCkgP2xlbiByZSBzIDogXyBTZXEudCA9XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUuc3BsaXRcIjtcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgICAgICBwb3MrbFxuICAgIGluXG4gICAgKCogaTogc3RhcnQgb2YgZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgIHBvczogZmlyc3QgcG9zaXRpb24gYWZ0ZXIgbGFzdCBtYXRjaCBvZiBbcmVdXG4gICAgICAgbGltaXQ6IGZpcnN0IGluZGV4IHdlIGlnbm9yZSAoIXBvcyA8IGxpbWl0IGlzIGFuIGludmFyaWFudCkgKilcbiAgICBsZXQgcG9zMCA9IHBvcyBpblxuICAgIGxldCByZWMgYXV4IHN0YXRlIGkgcG9zICgpID0gbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgfCBgSWRsZSB3aGVuIHBvcyA+PSBsaW1pdCAtPlxuICAgICAgICBpZiBpIDwgbGltaXQgdGhlbiAoXG4gICAgICAgICAgbGV0IHN1YiA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHN1YiwgYXV4IHN0YXRlIChpKzEpIHBvcylcbiAgICAgICAgKSBlbHNlIFNlcS5OaWxcbiAgICAgIHwgYElkbGUgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBsZXQgb2xkX2kgPSBpIGluXG4gICAgICAgICAgbGV0IGkgPSBwMiBpblxuICAgICAgICAgIGlmIHAxID4gcG9zMCB0aGVuIChcbiAgICAgICAgICAgICgqIHN0cmluZyBkb2VzIG5vdCBzdGFydCBieSBhIGRlbGltaXRlciAqKVxuICAgICAgICAgICAgbGV0IHRleHQgPSBTdHJpbmcuc3ViIHMgb2xkX2kgKHAxIC0gb2xkX2kpIGluXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSBgWWllbGQgKGBEZWxpbSBzdWJzdHIpIGluXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICAgICkgZWxzZSBTZXEuQ29ucyAoYERlbGltIHN1YnN0ciwgYXV4IHN0YXRlIGkgcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgXyAtPiBTZXEuTmlsXG4gICAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgICAgaWYgaSA8IGxpbWl0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBpIChsaW1pdCAtIGkpIGluXG4gICAgICAgICAgICAoKiB5aWVsZCBsYXN0IHN0cmluZyAqKVxuICAgICAgICAgICAgU2VxLkNvbnMgKGBUZXh0IHRleHQsIGF1eCBzdGF0ZSBsaW1pdCBwb3MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIGVuZFxuICAgICAgfCBgWWllbGQgeCAtPlxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IGBJZGxlIGkgcG9zKVxuICAgIGluXG4gICAgYXV4IGBJZGxlIHBvcyBwb3NcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBsZXQgc2VxID0gc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyBpblxuICAgIGxldCByZWMgZmlsdGVyIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSAgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFNlcS5OaWxcbiAgICAgIHwgU2VxLkNvbnMgKGBEZWxpbSBfLCB0bCkgLT4gZmlsdGVyIHRsICgpXG4gICAgICB8IFNlcS5Db25zIChgVGV4dCBzLHRsKSAtPiBTZXEuQ29ucyAocywgZmlsdGVyIHRsKVxuICAgIGluIGZpbHRlciBzZXFcbmVuZFxuXG5tb2R1bGUgUmxpc3QgPSBzdHJ1Y3RcbiAgbGV0IGxpc3Rfb2Zfc2VxIChzOidhIFNlcS50KSA6ICdhIGxpc3QgPVxuICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBsIHggLT4geCA6OiBsKSBbXSBzIHw+IExpc3QucmV2XG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgPSBSc2VxLm1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcbmVuZFxuXG5tb2R1bGUgR2VuID0gc3RydWN0XG4gIHR5cGUgJ2EgZ2VuID0gdW5pdCAtPiAnYSBvcHRpb25cbiAgbGV0IGdlbl9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgZ2VuID1cbiAgICBsZXQgciA9IHJlZiBzIGluXG4gICAgZnVuICgpIC0+IG1hdGNoICFyICgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBOb25lXG4gICAgICB8IFNlcS5Db25zICh4LCB0bCkgLT5cbiAgICAgICAgciA6PSB0bDtcbiAgICAgICAgU29tZSB4XG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXQgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIDogXyBnZW4gPVxuICAgIFJzZXEuc3BsaXRfZnVsbCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IGFsbCA/cG9zID9sZW4gcmUgcyA9IFJzZXEuYWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5lbmRcblxubGV0IHJlcGxhY2UgPyhwb3M9MCkgP2xlbiA/KGFsbD10cnVlKSByZSB+ZiBzID1cbiAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiUmUucmVwbGFjZVwiO1xuICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHNcbiAgICB8IFNvbWUgbCAtPlxuICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gICAgICBwb3MrbFxuICBpblxuICAoKiBidWZmZXIgaW50byB3aGljaCB3ZSB3cml0ZSB0aGUgcmVzdWx0ICopXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICgqIGl0ZXJhdGUgb24gbWF0Y2hlZCBzdWJzdHJpbmdzLiAqKVxuICBsZXQgcmVjIGl0ZXIgcG9zID1cbiAgICBpZiBwb3MgPCBsaW1pdFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIG1hdGNoX3N0ciB+Z3JvdXBzOnRydWUgfnBhcnRpYWw6ZmFsc2UgcmUgcyB+cG9zIH5sZW46KGxpbWl0LXBvcykgd2l0aFxuICAgICAgfCBNYXRjaCBzdWJzdHIgLT5cbiAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAoKiBhZGQgc3RyaW5nIGJldHdlZW4gcHJldmlvdXMgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2ggKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcG9zIChwMS1wb3MpO1xuICAgICAgICAoKiB3aGF0IHNob3VsZCB3ZSByZXBsYWNlIHRoZSBtYXRjaGVkIGdyb3VwIHdpdGg/ICopXG4gICAgICAgIGxldCByZXBsYWNpbmcgPSBmIHN1YnN0ciBpblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgcmVwbGFjaW5nO1xuICAgICAgICBpZiBhbGwgdGhlblxuICAgICAgICAgICgqIGlmIHdlIG1hdGNoZWQgYSBub24tY2hhciBlLmcuIF4gd2UgbXVzdCBtYW51YWxseSBhZHZhbmNlIGJ5IDEgKilcbiAgICAgICAgICBpdGVyIChcbiAgICAgICAgICAgIGlmIHAxPXAyIHRoZW4gKFxuICAgICAgICAgICAgICAoKiBhIG5vbiBjaGFyIGNvdWxkIGJlIHBhc3QgdGhlIGVuZCBvZiBzdHJpbmcuIGUuZy4gJCAqKVxuICAgICAgICAgICAgICBpZiBwMiA8IGxpbWl0IHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBzLltwMl07XG4gICAgICAgICAgICAgIHAyKzFcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBwMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHAyIChsaW1pdC1wMilcbiAgICAgIHwgUnVubmluZyBfIC0+ICgpXG4gICAgICB8IEZhaWxlZCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKGxpbWl0LXBvcylcbiAgaW5cbiAgaXRlciBwb3M7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHJlcGxhY2Vfc3RyaW5nID9wb3MgP2xlbiA/YWxsIHJlIH5ieSBzID1cbiAgcmVwbGFjZSA/cG9zID9sZW4gP2FsbCByZSBzIH5mOihmdW4gXyAtPiBieSlcblxubGV0IHdpdG5lc3MgdCA9XG4gIGxldCByZWMgd2l0bmVzcyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgYyAtPiBTdHJpbmcubWFrZSAxIChDaGFyLmNociAoQ3NldC5waWNrIGMpKVxuICAgIHwgU2VxdWVuY2UgeHMgLT4gU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0Lm1hcCB3aXRuZXNzIHhzKVxuICAgIHwgQWx0ZXJuYXRpdmUgKHggOjogXykgLT4gd2l0bmVzcyB4XG4gICAgfCBBbHRlcm5hdGl2ZSBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IFJlcGVhdCAociwgZnJvbSwgX3RvKSAtPlxuICAgICAgbGV0IHcgPSB3aXRuZXNzIHIgaW5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCB3ICogZnJvbSkgaW5cbiAgICAgIGZvciBfaT0xIHRvIGZyb20gZG9cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiB3XG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICB8IE5vX2Nhc2UgciAtPiB3aXRuZXNzIHJcbiAgICB8IEludGVyc2VjdGlvbiBfXG4gICAgfCBDb21wbGVtZW50IF9cbiAgICB8IERpZmZlcmVuY2UgKF8sIF8pIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgR3JvdXAgKF8sIHIpXG4gICAgfCBOb19ncm91cCByXG4gICAgfCBOZXN0IHJcbiAgICB8IFNlbSAoXywgcilcbiAgICB8IFBtYXJrIChfLCByKVxuICAgIHwgQ2FzZSByXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKSAtPiB3aXRuZXNzIHJcbiAgICB8IEJlZ19vZl9saW5lXG4gICAgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmRcbiAgICB8IEVuZF9vZl93b3JkXG4gICAgfCBOb3RfYm91bmRcbiAgICB8IEJlZ19vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmVcbiAgICB8IFN0YXJ0XG4gICAgfCBTdG9wXG4gICAgfCBFbmRfb2Zfc3RyIC0+IFwiXCIgaW5cbiAgd2l0bmVzcyAoaGFuZGxlX2Nhc2UgZmFsc2UgdClcblxubW9kdWxlIFNlcSA9IFJzZXFcbm1vZHVsZSBMaXN0ID0gUmxpc3Rcbm1vZHVsZSBHcm91cCA9IEdyb3VwXG5cbigqKiB7MiBEZXByZWNhdGVkIGZ1bmN0aW9uc30gKilcblxubGV0IHNwbGl0X2Z1bGxfc2VxID0gU2VxLnNwbGl0X2Z1bGxcbmxldCBzcGxpdF9zZXEgPSBTZXEuc3BsaXRcbmxldCBtYXRjaGVzX3NlcSA9IFNlcS5tYXRjaGVzXG5sZXQgYWxsX3NlcSA9IFNlcS5hbGxcblxudHlwZSAnYSBnZW4gICAgICAgID0gJ2EgR2VuLmdlblxubGV0IGFsbF9nZW4gICAgICAgID0gR2VuLmFsbFxubGV0IG1hdGNoZXNfZ2VuICAgID0gR2VuLm1hdGNoZXNcbmxldCBzcGxpdF9nZW4gICAgICA9IEdlbi5zcGxpdFxubGV0IHNwbGl0X2Z1bGxfZ2VuID0gR2VuLnNwbGl0X2Z1bGxcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG5cbmxldCBnZXQgPSBHcm91cC5nZXRcbmxldCBnZXRfb2ZzID0gR3JvdXAub2Zmc2V0XG5sZXQgZ2V0X2FsbCA9IEdyb3VwLmFsbFxubGV0IGdldF9hbGxfb2ZzID0gR3JvdXAuYWxsX29mZnNldFxubGV0IHRlc3QgPSBHcm91cC50ZXN0XG5cbnR5cGUgbWFya2lkID0gTWFyay50XG5cbmxldCBtYXJrZWQgPSBNYXJrLnRlc3RcbmxldCBtYXJrX3NldCA9IE1hcmsuYWxsXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKlxuSW5mb3JtYXRpb24gYWJvdXQgdGhlIHByZXZpb3VzIGNoYXJhY3Rlcjpcbi0gZG9lcyBub3QgZXhpc3RzXG4tIGlzIGEgbGV0dGVyXG4tIGlzIG5vdCBhIGxldHRlclxuLSBpcyBhIG5ld2xpbmVcbi0gaXMgbGFzdCBuZXdsaW5lXG5cbkJlZ2lubmluZyBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2Ygd29yZDpcbi0gcHJldmlvdXMgaXMgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3Rcbi0gY3VycmVudCBpcyBub3QgYSBsZXR0ZXIgb3IgZG9lcyBub3QgZXhpc3RcblxuQmVnaW5uaW5nIG9mIGxpbmU6XG4tIHByZXZpb3VzIGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgYnVmZmVyOlxuLSBwcmV2aW91cyBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgYnVmZmVyXG4tIGN1cnJlbnQgZG9lcyBub3QgZXhpc3RcblxuRW5kIG9mIGxpbmVcbi0gY3VycmVudCBpcyBhIG5ld2xpbmUgb3IgZG9lcyBub3QgZXhpc3RcbiopXG5cbigqXG5SZXA6IGUgPSBULGUgfCAoKVxuICAtIHNlbWFudGljcyBvZiB0aGUgY29tbWEgKHNob3J0ZXN0L2xvbmdlc3QvZmlyc3QpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSB1bmlvbiAoZ3JlZWR5L25vbi1ncmVlZHkpXG5cbkJvdW5kZWQgcmVwZXRpdGlvblxuICBhezAsM30gPSAoYSwoYSxhPyk/KT9cbiopXG5cbnR5cGUgZ3JvdXBzID0gR3JvdXAudFxuXG5pbmNsdWRlIFJsaXN0XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBhcnNlIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCB0ZXN0MiBjIGMnID0gIWkgKyAxIDwgbCAmJiBzLlshaV0gPSBjICYmIHMuWyFpICsgMV0gPSBjJyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHQyIGMgYycgPSBsZXQgciA9IHRlc3QyIGMgYycgaW4gaWYgciB0aGVuIGkgOj0gIWkgKyAyOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0MiAnXFxcXCcgJ3wnIHRoZW4gcmVnZXhwJyAoUmUuYWx0IFtsZWZ0OyBicmFuY2ggKCldKSBlbHNlIGxlZnRcbiAgYW5kIGJyYW5jaCAoKSA9IGJyYW5jaCcgW11cbiAgYW5kIGJyYW5jaCcgbGVmdCA9XG4gICAgaWYgZW9zICgpIHx8IHRlc3QyICdcXFxcJyAnfCcgfHwgdGVzdDIgJ1xcXFwnICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCByIGVsc2VcbiAgICBpZiBhY2NlcHQgJysnIHRoZW4gUmUucmVwMSByIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIFJlLmJvbFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgUmUuZW9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdDIgJ1xcXFwnICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdgJyB0aGVuXG4gICAgICAgIFJlLmJvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ1xcJycgdGhlblxuICAgICAgICBSZS5lb3NcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc9JyB0aGVuXG4gICAgICAgIFJlLnN0YXJ0XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnYicgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmJvdzsgUmUuZW93XVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJ0InIHRoZW5cbiAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICBlbHNlIGlmIGFjY2VwdCAnPCcgdGhlblxuICAgICAgICBSZS5ib3dcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc+JyB0aGVuXG4gICAgICAgIFJlLmVvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJ3cnIHRoZW5cbiAgICAgICAgUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnVycgdGhlblxuICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgICAnKicgfCAnKycgfCAnPycgfCAnWycgfCAnXScgfCAnLicgfCAnXicgfCAnJCcgfCAnXFxcXCcgYXMgYyAtPlxuICAgICAgICAgICAgUmUuY2hhciBjXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmRcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgIGMgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGdldCAoKVxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxubGV0IHJlID8oY2FzZSA9IHRydWUpIHMgPSBsZXQgciA9IHBhcnNlIHMgaW4gaWYgY2FzZSB0aGVuIHIgZWxzZSBSZS5ub19jYXNlIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhjYXNlID0gdHJ1ZSkgcyA9IGNvbXBpbGUgKHJlIH5jYXNlIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICopXG4oKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICopXG4oKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICopXG4oKiAgbGlua2luZyBleGNlcHRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZGlmaWVkIGJ5IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mciBmb3IgaW50ZWdyYXRpb24gaW4gUkUgKilcblxuKCogJElkOiByZV9zdHIubWwsdiAxLjMgMjAwMi8wNy8wMyAxNTo0Nzo1NCB2b3VpbGxvbiBFeHAgJCAqKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbnR5cGUgcmVnZXhwID1cbiAgeyByZTogUmUudFxuICA7IG10Y2g6IFJlLnJlIExhenkudFxuICA7IHNyY2g6IFJlLnJlIExhenkudCB9XG5cbmxldCBjb21waWxlX3JlZ2V4cCBzIGMgPVxuICBsZXQgcmUgPSBFbWFjcy5yZSB+Y2FzZToobm90IGMpIHMgaW5cbiAgeyByZVxuICA7IG10Y2ggPSBsYXp5IChSZS5jb21waWxlIChSZS5zZXEgW1JlLnN0YXJ0OyByZV0pKVxuICA7IHNyY2ggPSBsYXp5IChSZS5jb21waWxlIHJlKSB9XG5cbmxldCBzdGF0ZSA9IHJlZiBOb25lXG5cbmxldCBzdHJpbmdfbWF0Y2ggcmUgcyBwID1cbiAgdHJ5XG4gICAgc3RhdGUgOj0gU29tZSAoUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUubXRjaCkgcyk7XG4gICAgdHJ1ZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgZmFsc2VcblxubGV0IHN0cmluZ19wYXJ0aWFsX21hdGNoIHJlIHMgcCA9XG4gIG1hdGNoXG4gICAgUmUuZXhlY19wYXJ0aWFsIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzXG4gIHdpdGhcbiAgICBgRnVsbCAgICAgLT4gc3RyaW5nX21hdGNoIHJlIHMgcFxuICB8IGBQYXJ0aWFsICAtPiB0cnVlXG4gIHwgYE1pc21hdGNoIC0+IGZhbHNlXG5cbmxldCBzZWFyY2hfZm9yd2FyZCByZSBzIHAgPVxuICB0cnlcbiAgICBsZXQgcmVzID0gUmUuZXhlYyB+cG9zOnAgKExhenkuZm9yY2UgcmUuc3JjaCkgcyBpblxuICAgIHN0YXRlIDo9IFNvbWUgcmVzO1xuICAgIGZzdCAoUmUuR3JvdXAub2Zmc2V0IHJlcyAwKVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCByZWMgc2VhcmNoX2JhY2t3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgcFxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHN0YXRlIDo9IE5vbmU7XG4gICAgaWYgcCA9IDAgdGhlblxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgZWxzZVxuICAgICAgc2VhcmNoX2JhY2t3YXJkIHJlIHMgKHAgLSAxKVxuXG5sZXQgdmFsaWRfZ3JvdXAgbiA9XG4gIG4gPj0gMCAmJiBuIDwgMTAgJiYgKFxuICAgIG1hdGNoICFzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG0gLT4gbiA8IFJlLkdyb3VwLm5iX2dyb3VwcyBtXG4gIClcblxubGV0IG9mZnNldF9ncm91cCBpID1cbiAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgfCBTb21lIG0gLT4gUmUuR3JvdXAub2Zmc2V0IG0gaVxuICB8IE5vbmUgICAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGdyb3VwX2xlbiBpID1cbiAgdHJ5XG4gICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBpIGluXG4gICAgZSAtIGJcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAwXG5cbmxldCByZWMgcmVwbF9sZW5ndGggcmVwbCBwIHEgbGVuID1cbiAgaWYgcCA8IGxlbiB0aGVuIGJlZ2luXG4gICAgaWYgcmVwbC5bcF0gPD4gJ1xcXFwnIHRoZW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSAocSArIDEpIGxlblxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCBwID0gcCArIDEgaW5cbiAgICAgIGlmIHAgPSBsZW4gdGhlbiBmYWlsd2l0aCBcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiO1xuICAgICAgbGV0IHEgPVxuICAgICAgICBtYXRjaCByZXBsLltwXSB3aXRoXG4gICAgICAgIHwgJ1xcXFwnIC0+IHEgKyAxXG4gICAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IHEgKyBncm91cF9sZW4gKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJylcbiAgICAgICAgfCBfIC0+IHEgKyAyIGluXG4gICAgICByZXBsX2xlbmd0aCByZXBsIChwICsgMSkgcSBsZW5cbiAgICBlbmRcbiAgZW5kIGVsc2VcbiAgICBxXG5cbmxldCByZWMgcmVwbGFjZSBvcmlnIHJlcGwgcCByZXMgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBsZXQgYyA9IHJlcGwuW3BdIGluXG4gICAgaWYgYyA8PiAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgQnl0ZXMuc2V0IHJlcyBxIGM7XG4gICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDEpIHJlcyAocSArIDEpIGxlblxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBtYXRjaCByZXBsLltwICsgMV0gd2l0aFxuICAgICAgICAnXFxcXCcgLT5cbiAgICAgICAgQnl0ZXMuc2V0IHJlcyBxICdcXFxcJztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAxKSBsZW5cbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIGxldCBkID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgKENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgICAgIGxldCBkID0gZSAtIGIgaW5cbiAgICAgICAgICAgIGlmIGQgPiAwIHRoZW4gU3RyaW5nLmJsaXQgb3JpZyBiIHJlcyBxIGQ7XG4gICAgICAgICAgICBkXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIDBcbiAgICAgICAgaW5cbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyBkKSBsZW5cbiAgICAgIHwgYyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICBCeXRlcy5zZXQgcmVzIChxICsgMSkgYztcbiAgICAgICAgcmVwbGFjZSBvcmlnIHJlcGwgKHAgKyAyKSByZXMgKHEgKyAyKSBsZW5cbiAgICBlbmRcbiAgZW5kXG5cbmxldCByZXBsYWNlbWVudF90ZXh0IHJlcGwgb3JpZyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHJlcGwgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocmVwbF9sZW5ndGggcmVwbCAwIDAgbGVuKSBpblxuICByZXBsYWNlIG9yaWcgcmVwbCAwIHJlcyAwIChTdHJpbmcubGVuZ3RoIHJlcGwpO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBzdHJpbmdfYmVmb3JlIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IGZpcnN0X2NoYXJzIHMgbiA9IFN0cmluZy5zdWIgcyAwIG5cblxubGV0IGxhc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIChTdHJpbmcubGVuZ3RoIHMgLSBuKSBuXG5cbmxldCByZWdleHAgZSA9IGNvbXBpbGVfcmVnZXhwIGUgZmFsc2VcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgZSA9IGNvbXBpbGVfcmVnZXhwIGUgdHJ1ZVxuXG5sZXQgcmVnZXhwX3N0cmluZyBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIGZhbHNlXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gY29tcGlsZV9yZWdleHAgKHF1b3RlIHMpIHRydWVcblxubGV0IGdyb3VwX2JlZ2lubmluZyBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2JlZ2lubmluZ1wiO1xuICBsZXQgcG9zID0gZnN0IChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBncm91cF9lbmQgbiA9XG4gIGlmIG5vdCAodmFsaWRfZ3JvdXAgbikgdGhlbiBpbnZhbGlkX2FyZyBcIlN0ci5ncm91cF9lbmRcIjtcbiAgbGV0IHBvcyA9IHNuZCAob2Zmc2V0X2dyb3VwIG4pIGluXG4gIGlmIHBvcyA9IC0xIHRoZW5cbiAgICByYWlzZSBOb3RfZm91bmRcbiAgZWxzZVxuICAgIHBvc1xuXG5sZXQgbWF0Y2hlZF9ncm91cCBuIHR4dCA9XG4gIGxldCAoYiwgZSkgPSBvZmZzZXRfZ3JvdXAgbiBpblxuICBTdHJpbmcuc3ViIHR4dCBiIChlIC0gYilcblxubGV0IHJlcGxhY2VfbWF0Y2hlZCByZXBsIG1hdGNoZWQgPSByZXBsYWNlbWVudF90ZXh0IHJlcGwgbWF0Y2hlZFxuXG5sZXQgbWF0Y2hfYmVnaW5uaW5nICgpID0gZ3JvdXBfYmVnaW5uaW5nIDBcbmFuZCBtYXRjaF9lbmQgKCkgPSBncm91cF9lbmQgMFxuYW5kIG1hdGNoZWRfc3RyaW5nIHR4dCA9IG1hdGNoZWRfZ3JvdXAgMCB0eHRcblxubGV0IHN1YnN0aXR1dGVfZmlyc3QgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgdHJ5XG4gICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCAwIGluXG4gICAgU3RyaW5nLmNvbmNhdCBcIlwiIFtzdHJpbmdfYmVmb3JlIHRleHQgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHJlcGxfZnVuIHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX2FmdGVyIHRleHQgKG1hdGNoX2VuZCAoKSldXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdGV4dFxuXG5sZXQgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciByZXBsX2Z1biB0ZXh0ID1cbiAgbGV0IHJlYyByZXBsYWNlIGFjY3Ugc3RhcnQgbGFzdF93YXNfZW1wdHkgPVxuICAgIGxldCBzdGFydHBvcyA9IGlmIGxhc3Rfd2FzX2VtcHR5IHRoZW4gc3RhcnQgKyAxIGVsc2Ugc3RhcnQgaW5cbiAgICBpZiBzdGFydHBvcyA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzZWFyY2hfZm9yd2FyZCBleHByIHRleHQgc3RhcnRwb3Mgd2l0aFxuICAgICAgfCBwb3MgLT5cbiAgICAgICAgbGV0IGVuZF9wb3MgPSBtYXRjaF9lbmQgKCkgaW5cbiAgICAgICAgbGV0IHJlcGxfdGV4dCA9IHJlcGxfZnVuIHRleHQgaW5cbiAgICAgICAgcmVwbGFjZSAocmVwbF90ZXh0IDo6IFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIGVuZF9wb3MgKGVuZF9wb3MgPSBwb3MpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gIGluXG4gIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgKHJlcGxhY2UgW10gMCBmYWxzZSkpXG5cbmxldCBnbG9iYWxfcmVwbGFjZSBleHByIHJlcGwgdGV4dCA9XG4gIGdsb2JhbF9zdWJzdGl0dXRlIGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuYW5kIHJlcGxhY2VfZmlyc3QgZXhwciByZXBsIHRleHQgPVxuICBzdWJzdGl0dXRlX2ZpcnN0IGV4cHIgKHJlcGxhY2VtZW50X3RleHQgcmVwbCkgdGV4dFxuXG5sZXQgc2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MgcmUgcyBwID1cbiAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCBpblxuICBpZiBtYXRjaF9lbmQgKCkgPiBwIHRoZW5cbiAgICBwb3NcbiAgZWxzZSBpZiBwIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBzZWFyY2hfZm9yd2FyZCByZSBzIChwICsgMSlcbiAgZWxzZVxuICAgIHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgYm91bmRlZF9zcGxpdCBleHByIHRleHQgbnVtID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBpZiBzdHJpbmdfbWF0Y2ggZXhwciB0ZXh0IDAgdGhlbiBtYXRjaF9lbmQgKCkgZWxzZSAwIGluXG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKChTdHJpbmcuc3ViIHRleHQgc3RhcnQgKHBvcy1zdGFydCkpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIExpc3QucmV2IChzcGxpdCBbXSBzdGFydCBudW0pXG5cbmxldCBzcGxpdCBleHByIHRleHQgPSBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCAwXG5cbmxldCBib3VuZGVkX3NwbGl0X2RlbGltIGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPiBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgc3BsaXQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSA6OiBhY2N1KVxuICAgICAgICAgIChtYXRjaF9lbmQgKCkpIChuIC0gMSlcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBpZiB0ZXh0ID0gXCJcIiB0aGVuXG4gICAgW11cbiAgZWxzZVxuICAgIExpc3QucmV2IChzcGxpdCBbXSAwIG51bSlcblxubGV0IHNwbGl0X2RlbGltIGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IDBcblxudHlwZSBzcGxpdF9yZXN1bHQgPSBUZXh0IG9mIHN0cmluZyB8IERlbGltIG9mIHN0cmluZ1xuXG5sZXQgYm91bmRlZF9mdWxsX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgcmVjIHNwbGl0IGFjY3Ugc3RhcnQgbiA9XG4gICAgaWYgc3RhcnQgPj0gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlIGlmIG4gPSAxIHRoZW5cbiAgICAgIFRleHQgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1XG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBwb3MgPSBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyBleHByIHRleHQgc3RhcnQgaW5cbiAgICAgICAgbGV0IHMgPSBtYXRjaGVkX3N0cmluZyB0ZXh0IGluXG4gICAgICAgIGlmIHBvcyA+IHN0YXJ0IHRoZW5cbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6XG4gICAgICAgICAgICAgICAgIFRleHQgKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zIC0gc3RhcnQpKSA6OlxuICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3BsaXQgKERlbGltIChzKSA6OiBhY2N1KVxuICAgICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgZnVsbF9zcGxpdCBleHByIHRleHQgPSBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IDBcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5cbnR5cGUgZW5jbG9zZWQgPVxuICB8IENoYXIgb2YgY2hhclxuICB8IFJhbmdlIG9mIGNoYXIgKiBjaGFyXG5cbnR5cGUgcGllY2UgPVxuICB8IEV4YWN0bHkgb2YgY2hhclxuICB8IEFueV9vZiBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgQW55X2J1dCBvZiBlbmNsb3NlZCBsaXN0XG4gIHwgT25lXG4gIHwgTWFueVxuICB8IE1hbnlNYW55XG5cbnR5cGUgdCA9IHBpZWNlIGxpc3RcblxubGV0IG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMgOiB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCByZWFkIGMgPVxuICAgIGxldCByID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgICBpZiByIHRoZW4gaW5jciBpO1xuICAgIHJcbiAgaW5cblxuICAoKipcbiAgIFtyZWFkX2FoZWFkIHBhdHRlcm5dIHdpbGwgYXR0ZW1wdCB0byByZWFkIFtwYXR0ZXJuXSBhbmQgd2lsbCByZXR1cm4gW3RydWVdIGlmIGl0IHdhcyBzdWNjZXNzZnVsLlxuICAgSWYgaXQgZmFpbHMsIGl0IHdpbGwgcmV0dXJuIFtmYWxzZV0gYW5kIG5vdCBpbmNyZW1lbnQgdGhlIHJlYWQgaW5kZXguXG4gICopXG4gIGxldCByZWFkX2FoZWFkIHBhdHRlcm4gPVxuICAgIGxldCBwYXR0ZXJuX2xlbiA9IFN0cmluZy5sZW5ndGggcGF0dGVybiBpblxuICAgICgqIGlmIHRoZSBwYXR0ZXJuIHdlIGFyZSBsb29raW5nIGZvciBleGVlZHMgdGhlIHJlbWFpbmluZyBsZW5ndGggb2YgcywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5ICopXG4gICAgaWYgIWkgKyBwYXR0ZXJuX2xlbiA+PSBsIHRoZW5cbiAgICAgIGZhbHNlXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGZvciBqID0gMCB0byBwYXR0ZXJuX2xlbiAtIDEgZG9cbiAgICAgICAgICBsZXQgZm91bmQgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWkgKyBqXSA9IHBhdHRlcm4uW2pdIGluXG4gICAgICAgICAgaWYgbm90IGZvdW5kIHRoZW4gcmFpc2Vfbm90cmFjZSBFeGl0O1xuICAgICAgICBkb25lO1xuICAgICAgICBpIDo9ICFpICsgcGF0dGVybl9sZW47XG4gICAgICAgIHRydWVcbiAgICAgIHdpdGggfCBFeGl0ICAtPiBmYWxzZVxuICBpblxuXG4gIGxldCBjaGFyICgpID1cbiAgICBpZ25vcmUgKHJlYWQgJ1xcXFwnIDogYm9vbCk7XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IHIgPSBzLlshaV0gaW5cbiAgICBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gIGxldCBlbmNsb3NlZCAoKSA6IGVuY2xvc2VkIGxpc3QgPVxuICAgIGxldCByZWMgbG9vcCBzID1cbiAgICAgICgqIFRoaXMgcmV0dXJucyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBidXQgb3JkZXIgaXNuJ3QgaW1wb3J0YW50IGFueXdheSAqKVxuICAgICAgaWYgcyA8PiBbXSAmJiByZWFkICddJ1xuICAgICAgdGhlbiBzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgICBpZiBub3QgKHJlYWQgJy0nKVxuICAgICAgICB0aGVuIGxvb3AgKENoYXIgYyA6OiBzKVxuICAgICAgICBlbHNlIGlmIHJlYWQgJ10nXG4gICAgICAgIHRoZW4gQ2hhciBjIDo6IENoYXIgJy0nIDo6IHNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBsb29wIChSYW5nZSAoYywgYycpIDo6IHMpXG4gICAgaW5cbiAgICBsb29wIFtdXG4gIGluXG5cbiAgbGV0IHBpZWNlICgpID1cbiAgICBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZF9haGVhZCBcIi8qKlwiICYmIG5vdCAoZW9zICgpKVxuICAgIHRoZW4gTWFueU1hbnlcbiAgICBlbHNlIGlmIHJlYWQgJyonXG4gICAgdGhlbiBpZiBkb3VibGVfYXN0ZXJpc2sgJiYgcmVhZCAnKidcbiAgICAgIHRoZW4gTWFueU1hbnlcbiAgICAgIGVsc2UgTWFueVxuICAgIGVsc2UgaWYgcmVhZCAnPydcbiAgICB0aGVuIE9uZVxuICAgIGVsc2UgaWYgbm90IChyZWFkICdbJylcbiAgICB0aGVuIEV4YWN0bHkgKGNoYXIgKCkpXG4gICAgZWxzZSBpZiByZWFkICdeJyB8fCByZWFkICchJ1xuICAgIHRoZW4gQW55X2J1dCAoZW5jbG9zZWQgKCkpXG4gICAgZWxzZSBBbnlfb2YgKGVuY2xvc2VkICgpKVxuICBpblxuXG4gIGxldCByZWMgbG9vcCBwaWVjZXMgPVxuICAgIGlmIGVvcyAoKVxuICAgIHRoZW4gTGlzdC5yZXYgcGllY2VzXG4gICAgZWxzZSBsb29wIChwaWVjZSAoKSA6OiBwaWVjZXMpXG4gIGluXG5cbiAgbG9vcCBbXVxuXG5sZXQgbXVsIGwgbCcgPVxuICBMaXN0LmZsYXR0ZW4gKExpc3QubWFwIChmdW4gcyAtPiBMaXN0Lm1hcCAoZnVuIHMnIC0+IHMgXiBzJykgbCcpIGwpXG5cbmxldCBleHBsb2RlIHN0ciA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBleHBsIGlubmVyIHMgaSBhY2MgYmVnID1cbiAgICBpZiBpID49IGwgdGhlbiBiZWdpblxuICAgICAgaWYgaW5uZXIgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldLCBpKVxuICAgIGVuZCBlbHNlXG4gICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXFwnIC0+IGV4cGwgaW5uZXIgcyAoaSArIDIpIGFjYyBiZWdcbiAgICAgIHwgJ3snIC0+XG4gICAgICAgIGxldCAodCwgaScpID0gZXhwbCB0cnVlIChpICsgMSkgKGkgKyAxKSBbXSBbXCJcIl0gaW5cbiAgICAgICAgZXhwbCBpbm5lciBpJyBpJyBhY2NcbiAgICAgICAgICAobXVsIGJlZyAobXVsIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIHQpKVxuICAgICAgfCAnLCcgd2hlbiBpbm5lciAtPlxuICAgICAgICBleHBsIGlubmVyIChpICsgMSkgKGkgKyAxKVxuICAgICAgICAgIChtdWwgYmVnIFtTdHJpbmcuc3ViIHN0ciBzIChpIC0gcyldIEAgYWNjKSBbXCJcIl1cbiAgICAgIHwgJ30nIHdoZW4gaW5uZXIgLT5cbiAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MsIGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgcyAoaSArIDEpIGFjYyBiZWdcbiAgaW5cbiAgTGlzdC5yZXYgKGZzdCAoZXhwbCBmYWxzZSAwIDAgW10gW1wiXCJdKSlcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICByZV9waWVjZXMgICAgICAgICAgICAgICAgOiBSZS50IGxpc3Q7ICAoKiBsYXN0IHBpZWNlIGF0IGhlYWQgb2YgbGlzdC4gKilcbiAgICByZW1haW5pbmcgICAgICAgICAgICAgICAgOiBwaWVjZSBsaXN0OyAoKiBsYXN0IHBpZWNlIGF0IHRhaWwgb2YgbGlzdC4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuICAgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gKilcbiAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgOiBib29sOyAgICAgICAoKiB0cnVlIGF0IHN0YXJ0IG9mIHBhdHRlcm4gb3IgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlciAnLycgKilcbiAgICBwYXRobmFtZSAgICAgICAgICAgICAgICAgOiBib29sO1xuICAgIG1hdGNoX2JhY2tzbGFzaGVzICAgICAgICA6IGJvb2w7XG4gICAgcGVyaW9kICAgICAgICAgICAgICAgICAgIDogYm9vbDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgfnBlcmlvZCB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIHJlbWFpbmluZyA9XG4gICAge1xuICAgICAgcmVfcGllY2VzID0gW107XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gdHJ1ZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IHRydWU7XG4gICAgICBwYXRobmFtZTtcbiAgICAgIG1hdGNoX2JhY2tzbGFzaGVzO1xuICAgICAgcGVyaW9kO1xuICAgICAgcmVtYWluaW5nO1xuICAgIH1cblxuICBsZXQgZXhwbGljaXRfcGVyaW9kIHQgPVxuICAgIHQucGVyaW9kICYmIChcbiAgICAgIHQuYW1fYXRfc3RhcnRfb2ZfcGF0dGVybiB8fFxuICAgICAgKHQuYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ICYmIHQucGF0aG5hbWUpXG4gICAgKVxuXG4gIGxldCBleHBsaWNpdF9zbGFzaCB0ID0gdC5wYXRobmFtZVxuXG4gIGxldCBzbGFzaGVzIHQgPVxuICAgIGlmIHQubWF0Y2hfYmFja3NsYXNoZXMgdGhlbiBbJy8nOyAnXFxcXCddIGVsc2UgWycvJ11cblxuICBsZXQgYXBwZW5kID8oYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50PWZhbHNlKSB0IHBpZWNlID1cbiAgICB7IHQgd2l0aFxuICAgICAgcmVfcGllY2VzID0gcGllY2UgOjogdC5yZV9waWVjZXM7XG4gICAgICBhbV9hdF9zdGFydF9vZl9wYXR0ZXJuID0gZmFsc2U7XG4gICAgICBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ7XG4gICAgfVxuXG4gIGxldCB0b19yZSB0ID0gUmUuc2VxIChMaXN0LnJldiB0LnJlX3BpZWNlcylcblxuICBsZXQgbmV4dCB0ID1cbiAgICBtYXRjaCB0LnJlbWFpbmluZyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBwaWVjZSA6OiByZW1haW5pbmcgLT4gU29tZSAocGllY2UsIHsgdCB3aXRoIHJlbWFpbmluZyB9KVxuZW5kXG5cbmxldCBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgPVxuICBSZS5jb21wbCAoXG4gICAgTGlzdC5jb25jYXQgW1xuICAgICAgaWYgZXhwbGljaXRfc2xhc2ggIHRoZW4gTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzIGVsc2UgW107XG4gICAgICBpZiBleHBsaWNpdF9wZXJpb2QgdGhlbiBbUmUuY2hhciAnLiddIGVsc2UgW107XG4gICAgXVxuICApXG5cbmxldCBlbmNsb3NlZCBlbmNsb3NlZCA9XG4gIG1hdGNoIGVuY2xvc2VkIHdpdGhcbiAgfCBDaGFyIGMgLT4gUmUuY2hhciBjXG4gIHwgUmFuZ2UgKGxvdywgaGlnaCkgLT4gUmUucmcgbG93IGhpZ2hcblxubGV0IGVuY2xvc2VkX3NldCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBraW5kIHNldCA9XG4gIGxldCBzZXQgPSBMaXN0Lm1hcCBlbmNsb3NlZCBzZXQgaW5cbiAgbGV0IGVuY2xvc3VyZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQW55X29mIC0+IFJlLmFsdCBzZXRcbiAgICB8IGBBbnlfYnV0IC0+IFJlLmNvbXBsIHNldFxuICBpblxuICBSZS5pbnRlciBbZW5jbG9zdXJlOyBvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2RdXG5cbmxldCBleGFjdGx5IHN0YXRlIGMgPVxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbGV0IGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA9IExpc3QubWVtIGMgc2xhc2hlcyBpblxuICBsZXQgY2hhcnMgPSBpZiBhbV9hdF9zdGFydF9vZl9jb21wb25lbnQgdGhlbiBzbGFzaGVzIGVsc2UgW2NdIGluXG4gIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IChMaXN0Lm1hcCBSZS5jaGFyIGNoYXJzKSkgfmFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudFxuXG5sZXQgbWFueV9tYW55IHN0YXRlID1cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IHN0YXRlLlN0YXRlLnBlcmlvZCAmJiBzdGF0ZS5TdGF0ZS5wYXRobmFtZSBpblxuICBsZXQgZmlyc3RfZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgbWF0Y2hfY29tcG9uZW50IH5leHBsaWNpdF9wZXJpb2QgPVxuICAgIFJlLnNlcSBbXG4gICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kO1xuICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZSk7XG4gICAgXVxuICBpblxuICAoKiBXZSBtdXN0IG1hdGNoIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5IHdoZW4gW3BlcmlvZF0gZmxhZyBpcyBzZXQsXG4gICAgIG1ha2luZyBzdXJlIHRvIG5vdCBtYXRjaCBbXCJmb28vLmJhclwiXS4gKilcbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChcbiAgICBSZS5zZXEgW1xuICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZDpmaXJzdF9leHBsaWNpdF9wZXJpb2QpO1xuICAgICAgUmUucmVwIChcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgc2xhc2hlcyk7XG4gICAgICAgICAgUmUub3B0IChtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCk7XG4gICAgICAgIF1cbiAgICAgICk7XG4gICAgXSlcblxubGV0IG1hbnkgKHN0YXRlIDogU3RhdGUudCkgPVxuICBsZXQgZXhwbGljaXRfc2xhc2ggPSBTdGF0ZS5leHBsaWNpdF9zbGFzaCBzdGF0ZSBpblxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gU3RhdGUuZXhwbGljaXRfcGVyaW9kIHN0YXRlIGluXG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICAoKiBXaGV0aGVyIHdlIG11c3QgZXhwbGljaXRseSBtYXRjaCBwZXJpb2QgZGVwZW5kcyBvbiB0aGUgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgYnV0XG4gICAgIHNsYXNoZXMgYXJlIGVhc3kgdG8gZXhwbGljaXQgbWF0Y2guIFRoaXMgY29uZGl0aW9uYWwgc3BsaXRzIG91dCBzb21lIHNpbXBsZSBjYXNlcy5cbiAgKilcbiAgaWYgbm90IGV4cGxpY2l0X3BlcmlvZCB0aGVuIGJlZ2luXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCkpXG4gIGVuZCBlbHNlIGlmIG5vdCBleHBsaWNpdF9zbGFzaCB0aGVuIGJlZ2luXG4gICAgKCogSW4gdGhpcyBzdGF0ZSwgd2UgZXhwbGljaXRseSBtYXRjaCBwZXJpb2RzIG9ubHkgYXQgdGhlIHZlcnkgYmVnaW5uaW5nICopXG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5vcHQgKFxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDpmYWxzZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICApKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIGxldCBub3RfZW1wdHkgPVxuICAgICAgUmUuc2VxIFtcbiAgICAgICAgb25lICAgICAgICAgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICAgIF1cbiAgICBpblxuICAgICgqIFttYXliZV9lbXB0eV0gaXMgdGhlIGRlZmF1bHQgdHJhbnNsYXRpb24gb2YgTWFueSwgZXhjZXB0IGluIHNvbWUgc3BlY2lhbCBjYXNlcy5cbiAgICAqKVxuICAgIGxldCBtYXliZV9lbXB0eSA9IFJlLm9wdCBub3RfZW1wdHkgaW5cbiAgICBsZXQgZW5jbG9zZWRfc2V0IHN0YXRlIGtpbmQgc2V0ID1cbiAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZSAoUmUuYWx0IFtcbiAgICAgICAgZW5jbG9zZWRfc2V0IGtpbmQgc2V0IH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6dHJ1ZTtcbiAgICAgICAgUmUuc2VxIFtcbiAgICAgICAgICBub3RfZW1wdHk7XG4gICAgICAgICAgKCogU2luY2UgW25vdF9lbXB0eV0gbWF0Y2hlZCwgc3Vic2VxdWVudCBkb3RzIGFyZSBub3QgbGVhZGluZy4gKilcbiAgICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDpmYWxzZTtcbiAgICAgICAgXTtcbiAgICAgIF0pXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb2thaGVhZCBzdGF0ZSA9XG4gICAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbWF5YmVfZW1wdHlcbiAgICAgICgqIGdsb2IgKiogPT09IGdsb2IgKiAuICopXG4gICAgICB8IFNvbWUgKE1hbnksIHN0YXRlKSAtPiBsb29rYWhlYWQgc3RhdGVcbiAgICAgIHwgU29tZSAoRXhhY3RseSBjLCBzdGF0ZSkgLT5cbiAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICBTdGF0ZS5hcHBlbmQgc3RhdGVcbiAgICAgICAgICAgIChpZiBjID0gJy4nXG4gICAgICAgICAgICAgdGhlbiBub3RfZW1wdHlcbiAgICAgICAgICAgICBlbHNlIG1heWJlX2VtcHR5KVxuICAgICAgICBpblxuICAgICAgICBleGFjdGx5IHN0YXRlIGNcbiAgICAgICgqIGdsb2IgKj8gPT09IGdsb2IgPyogKilcbiAgICAgIHwgU29tZSAoT25lLCBzdGF0ZSkgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIG5vdF9lbXB0eVxuICAgICAgfCBTb21lIChBbnlfb2YgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9vZiBlbmNsb3NlZFxuICAgICAgfCBTb21lIChBbnlfYnV0IGVuY2xvc2VkLCBzdGF0ZSkgLT4gZW5jbG9zZWRfc2V0IHN0YXRlIGBBbnlfYnV0IGVuY2xvc2VkXG4gICAgICAoKiAqIHRoZW4gKiogPT09ICoqICopXG4gICAgICB8IFNvbWUgKE1hbnlNYW55LCBzdGF0ZSkgLT4gbWFueV9tYW55IHN0YXRlXG4gICAgaW5cbiAgICBsb29rYWhlYWQgc3RhdGVcbiAgZW5kXG5cbmxldCBwaWVjZSBzdGF0ZSBwaWVjZSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIG1hdGNoIHBpZWNlIHdpdGhcbiAgfCBPbmUgLT4gU3RhdGUuYXBwZW5kIHN0YXRlIChvbmUgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QpXG4gIHwgTWFueSAtPiBtYW55IHN0YXRlXG4gIHwgQW55X29mIGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9vZiB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBBbnlfYnV0IGVuY2xvc2VkIC0+XG4gICAgU3RhdGUuYXBwZW5kIHN0YXRlIChlbmNsb3NlZF9zZXQgYEFueV9idXQgfmV4cGxpY2l0X3NsYXNoIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2QgZW5jbG9zZWQpXG4gIHwgRXhhY3RseSBjIC0+IGV4YWN0bHkgc3RhdGUgY1xuICB8IE1hbnlNYW55IC0+IG1hbnlfbWFueSBzdGF0ZVxuXG5sZXQgZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgZ2xvYiA9XG4gIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgbWF0Y2ggU3RhdGUubmV4dCBzdGF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IFN0YXRlLnRvX3JlIHN0YXRlXG4gICAgfCBTb21lIChwLCBzdGF0ZSkgLT4gbG9vcCAocGllY2Ugc3RhdGUgcClcbiAgaW5cbiAgbG9vcCAoU3RhdGUuY3JlYXRlIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iKVxuXG5sZXQgZ2xvYlxuICAgICAgPyhhbmNob3JlZCA9IGZhbHNlKVxuICAgICAgPyhwYXRobmFtZSA9IHRydWUpXG4gICAgICA/KG1hdGNoX2JhY2tzbGFzaGVzID0gZmFsc2UpXG4gICAgICA/KHBlcmlvZCA9IHRydWUpXG4gICAgICA/KGV4cGFuZF9icmFjZXMgPSBmYWxzZSlcbiAgICAgID8oZG91YmxlX2FzdGVyaXNrID0gdHJ1ZSlcbiAgICAgIHNcbiAgPVxuICBsZXQgdG9fcmUgcyA9XG4gICAgbGV0IHJlID0gZ2xvYiB+cGF0aG5hbWUgfm1hdGNoX2JhY2tzbGFzaGVzIH5wZXJpb2QgKG9mX3N0cmluZyB+ZG91YmxlX2FzdGVyaXNrIHMpIGluXG4gICAgaWYgYW5jaG9yZWRcbiAgICB0aGVuIFJlLndob2xlX3N0cmluZyByZVxuICAgIGVsc2UgcmVcbiAgaW5cbiAgaWYgZXhwYW5kX2JyYWNlc1xuICB0aGVuIFJlLmFsdCAoTGlzdC5tYXAgdG9fcmUgKGV4cGxvZGUgcykpXG4gIGVsc2UgdG9fcmUgc1xuXG5sZXQgZ2xvYicgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfnBlcmlvZCBzXG5cbmxldCBnbG9ieCA/YW5jaG9yZWQgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgc1xuXG5sZXQgZ2xvYngnID9hbmNob3JlZCBwZXJpb2QgcyA9IGdsb2IgP2FuY2hvcmVkIH5leHBhbmRfYnJhY2VzOnRydWUgfnBlcmlvZCBzXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5tb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWRcblxubGV0IHBvc2l4X2NsYXNzX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJhbHBoYVwiICAtPiBSZS5hbHBoYVxuICB8IFwiYWxudW1cIiAgLT4gUmUuYWxudW1cbiAgfCBcImFzY2lpXCIgIC0+IFJlLmFzY2lpXG4gIHwgXCJibGFua1wiICAtPiBSZS5ibGFua1xuICB8IFwiY250cmxcIiAgLT4gUmUuY250cmxcbiAgfCBcImRpZ2l0XCIgIC0+IFJlLmRpZ2l0XG4gIHwgXCJsb3dlclwiICAtPiBSZS5sb3dlclxuICB8IFwicHJpbnRcIiAgLT4gUmUucHJpbnRcbiAgfCBcInNwYWNlXCIgIC0+IFJlLnNwYWNlXG4gIHwgXCJ1cHBlclwiICAtPiBSZS51cHBlclxuICB8IFwid29yZFwiICAgLT4gUmUud29yZGNcbiAgfCBcInB1bmN0XCIgIC0+IFJlLnB1bmN0XG4gIHwgXCJncmFwaFwiICAtPiBSZS5ncmFwaFxuICB8IFwieGRpZ2l0XCIgLT4gUmUueGRpZ2l0XG4gIHwgY2xhc3NfICAgLT4gaW52YWxpZF9hcmcgKFwiSW52YWxpZCBwY3JlIGNsYXNzOiBcIiBeIGNsYXNzXylcblxubGV0IHBvc2l4X2NsYXNzX3N0cmluZ3MgPVxuICBbIFwiYWxwaGFcIiA7IFwiYWxudW1cIiA7IFwiYXNjaWlcIlxuICA7IFwiYmxhbmtcIiA7IFwiY250cmxcIiA7IFwiZGlnaXRcIlxuICA7IFwibG93ZXJcIiA7IFwicHJpbnRcIiA7IFwic3BhY2VcIlxuICA7IFwidXBwZXJcIiA7IFwid29yZFwiICA7IFwicHVuY3RcIlxuICA7IFwiZ3JhcGhcIiA7IFwieGRpZ2l0XCIgXVxuXG5sZXQgcGFyc2UgbXVsdGlsaW5lIGRvbGxhcl9lbmRvbmx5IGRvdGFsbCB1bmdyZWVkeSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBhY2NlcHRfcyBzJyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcycgaW5cbiAgICB0cnlcbiAgICAgIGZvciBqID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHRyeSBpZiBzJy5bal0gPD4gcy5bIWkgKyBqXSB0aGVuIHJhaXNlIEV4aXRcbiAgICAgICAgd2l0aCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBpIDo9ICFpICsgbGVuO1xuICAgICAgdHJ1ZVxuICAgIHdpdGggRXhpdCAtPiBmYWxzZSBpblxuICBsZXQgZ2V0ICgpID0gbGV0IHIgPSBzLlshaV0gaW4gaW5jciBpOyByIGluXG4gIGxldCB1bmdldCAoKSA9IGRlY3IgaSBpblxuICBsZXQgZ3JlZWR5X21vZCByID1cbiAgICBsZXQgZ3IgPSBhY2NlcHQgJz8nIGluXG4gICAgbGV0IGdyID0gaWYgdW5ncmVlZHkgdGhlbiBub3QgZ3IgZWxzZSBnciBpblxuICAgIGlmIGdyIHRoZW4gUmUubm9uX2dyZWVkeSByIGVsc2UgUmUuZ3JlZWR5IHJcbiAgaW5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBncmVlZHlfbW9kIChSZS5yZXAxIHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gZ3JlZWR5X21vZCAoUmUub3B0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJ3snIHRoZW5cbiAgICAgIG1hdGNoIGludGVnZXIgKCkgd2l0aFxuICAgICAgICBTb21lIGkgLT5cbiAgICAgICAgICBsZXQgaiA9IGlmIGFjY2VwdCAnLCcgdGhlbiBpbnRlZ2VyICgpIGVsc2UgU29tZSBpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJ30nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIGogd2l0aFxuICAgICAgICAgICAgU29tZSBqIHdoZW4gaiA8IGkgLT4gcmFpc2UgUGFyc2VfZXJyb3IgfCBfIC0+ICgpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGdyZWVkeV9tb2QgKFJlLnJlcG4gciBpIGopXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICB1bmdldCAoKTsgclxuICAgIGVsc2VcbiAgICAgIHJcbiAgYW5kIGF0b20gKCkgPVxuICAgIGlmIGFjY2VwdCAnLicgdGhlbiBiZWdpblxuICAgICAgaWYgZG90YWxsIHRoZW4gUmUuYW55IGVsc2UgUmUubm90bmxcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPycgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICByXG4gICAgICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnIycgdGhlbiBiZWdpblxuICAgICAgICAgIGNvbW1lbnQgKClcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lICgpIGluXG4gICAgICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgUmUuZ3JvdXAgfm5hbWUgclxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIHJhaXNlIFBhcnNlX2Vycm9yXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIFJlLmdyb3VwIHJcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlXG4gICAgaWYgYWNjZXB0ICdeJyB0aGVuIGJlZ2luXG4gICAgICBpZiBtdWx0aWxpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmVvbCBlbHNlIGlmIGRvbGxhcl9lbmRvbmx5IHRoZW4gUmUubGVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIChicmFja2V0IFtdKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdcXFxcJyB0aGVuIGJlZ2luXG4oKiBYWFhcbiAgIC0gQmFjay1yZWZlcmVuY2VzXG4gICAtIFxcY3ggKGNvbnRyb2wteCksIFxcZGRkXG4qKVxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAndycgLT5cbiAgICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ1cnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgUmUuc3BhY2VcbiAgICAgIHwgJ1MnIC0+XG4gICAgICAgICAgUmUuY29tcGwgW1JlLnNwYWNlXVxuICAgICAgfCAnZCcgLT5cbiAgICAgICAgICBSZS5kaWdpdFxuICAgICAgfCAnRCcgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuZGlnaXRdXG4gICAgICB8ICdiJyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICB8ICdCJyAtPlxuICAgICAgICAgIFJlLm5vdF9ib3VuZGFyeVxuICAgICAgfCAnQScgLT5cbiAgICAgICAgICBSZS5ib3NcbiAgICAgIHwgJ1onIC0+XG4gICAgICAgICAgUmUubGVvbFxuICAgICAgfCAneicgLT5cbiAgICAgICAgICBSZS5lb3NcbiAgICAgIHwgJ0cnIC0+XG4gICAgICAgICAgUmUuc3RhcnRcbiAgICAgIHwgJ2UnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MWInXG4gICAgICB8ICdmJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xceDBjJ1xuICAgICAgfCAnbicgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXG4nXG4gICAgICB8ICdyJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xccidcbiAgICAgIHwgJ3QnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx0J1xuICAgICAgfCAneCcgLT5cbiAgICAgICAgICBsZXQgYzEgPSBoZXhkaWdpdCAoKSBpblxuICAgICAgICAgIGxldCBjMiA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGNvZGUgPSBjMSAqIDE2ICsgYzIgaW5cbiAgICAgICAgICBSZS5jaGFyIChjaGFyX29mX2ludCBjb2RlKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IGMgLT5cbiAgICAgICAgICBSZS5jaGFyIGNcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGhleGRpZ2l0ICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdhJy4uJ2YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8ICdBJy4uJ0YnIGFzIGQgLT4gQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIG5hbWUgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicpIGFzIGMgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAzMiBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8IF8gLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgYW5kIG5hbWUnIGIgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgKCdfJyB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgfCAnMCcuLic5JykgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgIG5hbWUnIGJcbiAgICB8ICc+JyAtPiBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgfCBgQ2hhciBjIC0+XG4gICAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgICBtYXRjaCBjaGFyICgpIHdpdGhcbiAgICAgICAgICAgICAgYENoYXIgYycgLT5cbiAgICAgICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICAgICAgfCBgU2V0IHN0JyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogc3QnIDo6IHMpXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgICB8IGBTZXQgc3QgLT4gYnJhY2tldCAoc3QgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgIGlmIGFjY2VwdCAnOicgdGhlblxuICAgICAgICBsZXQgY29tcGwgPSBhY2NlcHQgJ14nIGluXG4gICAgICAgIGxldCBjbHMgPVxuICAgICAgICAgIHRyeSBMaXN0LmZpbmQgYWNjZXB0X3MgcG9zaXhfY2xhc3Nfc3RyaW5nc1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIFBhcnNlX2Vycm9yIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0X3MgXCI6XVwiKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgcmUgPVxuICAgICAgICAgIGxldCBwb3NpeF9jbGFzcyA9IHBvc2l4X2NsYXNzX29mX3N0cmluZyBjbHMgaW5cbiAgICAgICAgICBpZiBjb21wbCB0aGVuIFJlLmNvbXBsIFtwb3NpeF9jbGFzc10gZWxzZSBwb3NpeF9jbGFzcyBpblxuICAgICAgICBgU2V0IChyZSlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBgQ2hhciBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2UgaWYgYyA9ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4oKiBYWFhcbiAgIFxcMTI3LCAuLi5cbiopXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJ2InIC0+IGBDaGFyICdcXDAwOCdcbiAgICAgIHwgJ24nIC0+IGBDaGFyICdcXG4nICgqWFhYKilcbiAgICAgIHwgJ3InIC0+IGBDaGFyICdcXHInICgqWFhYKilcbiAgICAgIHwgJ3QnIC0+IGBDaGFyICdcXHQnICgqWFhYKilcbiAgICAgIHwgJ3cnIC0+IGBTZXQgKFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXSlcbiAgICAgIHwgJ1cnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAncycgLT4gYFNldCAoUmUuc3BhY2UpXG4gICAgICB8ICdTJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuc3BhY2VdKVxuICAgICAgfCAnZCcgLT4gYFNldCAoUmUuZGlnaXQpXG4gICAgICB8ICdEJyAtPiBgU2V0IChSZS5jb21wbCBbUmUuZGlnaXRdKVxuICAgICAgfCAnYScuLid6JyB8ICdBJy4uJ1onIC0+XG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgJzAnLi4nOScgLT5cbiAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBgQ2hhciBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGBDaGFyIGNcbiAgYW5kIGNvbW1lbnQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGlmIGFjY2VwdCAnKScgdGhlbiBSZS5lcHNpbG9uIGVsc2UgYmVnaW4gaW5jciBpOyBjb21tZW50ICgpIGVuZFxuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPVxuICBbIGBVbmdyZWVkeSB8IGBEb3RhbGwgfCBgRG9sbGFyX2VuZG9ubHlcbiAgfCBgTXVsdGlsaW5lIHwgYEFuY2hvcmVkIHwgYENhc2VsZXNzIF1cblxubGV0IHJlICA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID1cbiAgICBwYXJzZVxuICAgICAgKExpc3QubWVtcSBgTXVsdGlsaW5lIG9wdHMpIChMaXN0Lm1lbXEgYERvbGxhcl9lbmRvbmx5IG9wdHMpXG4gICAgICAoTGlzdC5tZW1xIGBEb3RhbGwgb3B0cykgKExpc3QubWVtcSBgVW5ncmVlZHkgb3B0cylcbiAgICAgIHNcbiAgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYEFuY2hvcmVkIG9wdHMgdGhlbiBSZS5zZXEgW1JlLnN0YXJ0OyByXSBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYENhc2VsZXNzIG9wdHMgdGhlbiBSZS5ub19jYXNlIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgPSBSZS5jb21waWxlXG5sZXQgY29tcGlsZV9wYXQgPyhvcHRzID0gW10pIHMgPSBjb21waWxlIChyZSB+b3B0cyBzKVxuIiwibW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQZXJsLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZCA9IFBlcmwuTm90X3N1cHBvcnRlZFxuXG50eXBlIHJlZ2V4cCA9IFJlLnJlXG5cbnR5cGUgZmxhZyA9IFsgYENBU0VMRVNTIHwgYE1VTFRJTElORSB8IGBBTkNIT1JFRCB8IGBET1RBTEwgXVxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9XG4gIHwgVGV4dCAgb2Ygc3RyaW5nXG4gIHwgRGVsaW0gb2Ygc3RyaW5nXG4gIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nXG4gIHwgTm9Hcm91cFxuXG50eXBlIGdyb3VwcyA9IENvcmUuR3JvdXAudFxuXG5sZXQgcmUgPyhmbGFncyA9IFtdKSBwYXQgPVxuICBsZXQgb3B0cyA9IExpc3QubWFwIChmdW5jdGlvblxuICAgIHwgYENBU0VMRVNTIC0+IGBDYXNlbGVzc1xuICAgIHwgYE1VTFRJTElORSAtPiBgTXVsdGlsaW5lXG4gICAgfCBgQU5DSE9SRUQgLT4gYEFuY2hvcmVkXG4gICAgfCBgRE9UQUxMIC0+IGBEb3RhbGxcbiAgKSBmbGFncyBpblxuICBQZXJsLnJlIH5vcHRzIHBhdFxuXG5sZXQgcmVnZXhwID9mbGFncyBwYXQgPSBSZS5jb21waWxlIChyZSA/ZmxhZ3MgcGF0KVxuXG5sZXQgZXh0cmFjdCB+cmV4IHMgPVxuICBSZS5Hcm91cC5hbGwgKFJlLmV4ZWMgcmV4IHMpXG5cbmxldCBleGVjIH5yZXggP3BvcyBzID1cbiAgUmUuZXhlYyByZXggP3BvcyBzXG5cbmxldCBnZXRfc3Vic3RyaW5nIHMgaSA9XG4gIFJlLkdyb3VwLmdldCBzIGlcblxubGV0IG5hbWVzIHJleCA9XG4gIFJlLmdyb3VwX25hbWVzIHJleFxuICB8PiBMaXN0Lm1hcCBmc3RcbiAgfD4gQXJyYXkub2ZfbGlzdFxuXG5sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgKG4sIGkpIDo6IHJlbSB3aGVuIG4gPSBuYW1lIC0+XG4gICAgICAgYmVnaW5cbiAgICAgICAgIHRyeSBnZXRfc3Vic3RyaW5nIHMgaVxuICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gbG9vcCByZW1cbiAgICAgICBlbmRcbiAgICB8IF8gOjogcmVtIC0+IGxvb3AgcmVtXG4gIGluXG4gIGxvb3AgKFJlLmdyb3VwX25hbWVzIHJleClcblxubGV0IGdldF9zdWJzdHJpbmdfb2ZzIHMgaSA9XG4gIFJlLkdyb3VwLm9mZnNldCBzIGlcblxubGV0IHBtYXRjaCB+cmV4IHMgPVxuICBSZS5leGVjcCByZXggc1xuXG5sZXQgc3Vic3RpdHV0ZSB+cmV4IH5zdWJzdCBzdHIgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICBlbHNlIGlmIFJlLmV4ZWNwIH5wb3MgcmV4IHN0ciB0aGVuIChcbiAgICAgIGxldCBzcyA9IFJlLmV4ZWMgfnBvcyByZXggc3RyIGluXG4gICAgICBsZXQgc3RhcnQsIGZpbiA9IFJlLkdyb3VwLm9mZnNldCBzcyAwIGluXG4gICAgICBsZXQgcGF0ID0gUmUuR3JvdXAuZ2V0IHNzIDAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoc3RhcnQgLSBwb3MpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3Vic3QgcGF0KTtcbiAgICAgIGxvb3AgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIgc3RyIHBvcyAoU3RyaW5nLmxlbmd0aCBzdHIgLSBwb3MpO1xuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKVxuICBpblxuICBsb29wIDBcblxubGV0IHNwbGl0IH5yZXggc3RyID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgcG9zID1cbiAgICBpZiBwb3MgPj0gU3RyaW5nLmxlbmd0aCBzdHIgdGhlblxuICAgICAgTGlzdC5yZXYgYWNjdVxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChzdGFydCAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgZmluXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBzID0gU3RyaW5nLnN1YiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcykgaW5cbiAgICAgIGxvb3AgKHMgOjogYWNjdSkgKFN0cmluZy5sZW5ndGggc3RyKVxuICAgICkgaW5cbiAgbG9vcCBbXSAwXG5cbigqIEZyb20gUENSRSAqKVxubGV0IHN0cmluZ191bnNhZmVfc3ViIHMgb2ZzIGxlbiA9XG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBCeXRlcy51bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKGxlbiBsc2wgMSkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICB8ICdcXFxcJyB8ICdeJyB8ICckJyB8ICcuJyB8ICdbJyB8ICd8J1xuICAgIHwgJygnICB8ICcpJyB8ICc/JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zICdcXFxcJztcbiAgICAgIGluY3IgcG9zO1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOyBpbmNyIHBvc1xuICAgIHwgYyAtPiBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gIGRvbmU7XG4gIHN0cmluZ191bnNhZmVfc3ViIGJ1ZiAwICFwb3NcblxubGV0IGZ1bGxfc3BsaXQgPyhtYXg9MCkgfnJleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID0gMCB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IHNdXG4gIGVsc2VcbiAgICBsZXQgcmVzdWx0cyA9IFJlLnNwbGl0X2Z1bGwgcmV4IHMgaW5cbiAgICBsZXQgbWF0Y2hlcyA9XG4gICAgICBMaXN0Lm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBgVGV4dCBzIC0+IFtUZXh0IHNdXG4gICAgICAgIHwgYERlbGltIGQgLT5cbiAgICAgICAgICBsZXQgbWF0Y2hlcyA9IFJlLkdyb3VwLmFsbF9vZmZzZXQgZCBpblxuICAgICAgICAgIGxldCBkZWxpbSA9IFJlLkdyb3VwLmdldCBkIDAgaW5cbiAgICAgICAgICAoRGVsaW0gZGVsaW0pOjooXG4gICAgICAgICAgICBsZXQgbCA9IHJlZiBbXSBpblxuICAgICAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBtYXRjaGVzIC0gMSBkb1xuICAgICAgICAgICAgICBsIDo9XG4gICAgICAgICAgICAgICAgKGlmIG1hdGNoZXMuKGkpID0gKC0xLCAtMSlcbiAgICAgICAgICAgICAgICAgdGhlbiBOb0dyb3VwXG4gICAgICAgICAgICAgICAgIGVsc2UgR3JvdXAgKGksIFJlLkdyb3VwLmdldCBkIGkpKVxuICAgICAgICAgICAgICAgIDo6KCFsKVxuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIExpc3QucmV2ICFsKSkgcmVzdWx0cyBpblxuICAgIExpc3QuY29uY2F0IG1hdGNoZXNcblxuXG50eXBlIHN1YnN0cmluZ3MgPSBHcm91cC50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG4oKlxuV2hhdCB3ZSBjb3VsZCAoc2hvdWxkPykgZG86XG4tIGEqID09PiBsb25nZXN0ICgoc2hvcnRlc3QgKG5vX2dyb3VwIGEpKiApLCBhIHwgKCkpICAoISEhKVxuLSBhYmMgdW5kZXJzdG9vZCBhcyAoYWIpY1xuLSBcIigoYT8pfGIpXCIgYWdhaW5zdCBcImFiXCIgc2hvdWxkIG5vdCBiaW5kIHRoZSBmaXJzdCBzdWJwYXR0ZXJuIHRvIGFueXRoaW5nXG5cbk5vdGUgdGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaGFuZGxlIFwiKCgoYWIpYylkKWVcIiBlZmZpY2llbnRseVxuKilcbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgbmV3bGluZSBzID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgZW9zICgpID0gIWkgPSBsIGluXG4gIGxldCB0ZXN0IGMgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICBsZXQgYWNjZXB0IGMgPSBsZXQgciA9IHRlc3QgYyBpbiBpZiByIHRoZW4gaW5jciBpOyByIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG5cbiAgbGV0IHJlYyByZWdleHAgKCkgPSByZWdleHAnIChicmFuY2ggKCkpXG4gIGFuZCByZWdleHAnIGxlZnQgPVxuICAgIGlmIGFjY2VwdCAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdCAnfCcgfHwgdGVzdCAnKScgdGhlbiBSZS5zZXEgKExpc3QucmV2IGxlZnQpXG4gICAgZWxzZSBicmFuY2gnIChwaWVjZSAoKSA6OiBsZWZ0KVxuICBhbmQgcGllY2UgKCkgPVxuICAgIGxldCByID0gYXRvbSAoKSBpblxuICAgIGlmIGFjY2VwdCAnKicgdGhlbiBSZS5yZXAgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIChSZS5uZXN0IHIpIGVsc2VcbiAgICBpZiBhY2NlcHQgJz8nIHRoZW4gUmUub3B0IHIgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgUmUucmVwbiAoUmUubmVzdCByKSBpIGpcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBuZXdsaW5lIHRoZW4gUmUubm90bmwgZWxzZSBSZS5hbnlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJygnIHRoZW4gYmVnaW5cbiAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICBpZiBub3QgKGFjY2VwdCAnKScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBSZS5ncm91cCByXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ib2wgZWxzZSBSZS5ib3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJyQnIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5lb2wgZWxzZSBSZS5lb3NcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5kaWZmIChSZS5jb21wbCAoYnJhY2tldCBbXSkpIChSZS5jaGFyICdcXG4nKVxuICAgICAgZWxzZVxuICAgICAgICBSZS5hbHQgKGJyYWNrZXQgW10pXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICAgJ3wnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJz8nXG4gICAgICB8ICdbJyB8ICcuJyB8ICdeJyB8ICckJyB8ICd7JyB8ICdcXFxcJyBhcyBjIC0+IFJlLmNoYXIgY1xuICAgICAgfCAgICAgICAgICAgICAgICAgXyAgICAgICAgICAgICAgICAgICAgICAgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnKicgfCAnKycgfCAnPycgfCAneycgfCAnXFxcXCcgLT4gcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIHwgICAgICAgICAgICAgICAgIGMgICAgICAgICAgICAtPiBSZS5jaGFyIGNcbiAgICBlbmRcbiAgYW5kIGludGVnZXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIE5vbmUgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IGludGVnZXInIChDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnMCcpXG4gICAgfCAgICAgXyAgICAgICAgLT4gdW5nZXQgKCk7IE5vbmVcbiAgYW5kIGludGVnZXInIGkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIFNvbWUgaSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT5cbiAgICAgICAgbGV0IGknID0gMTAgKiBpICsgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJykgaW5cbiAgICAgICAgaWYgaScgPCBpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGludGVnZXInIGknXG4gICAgfCBfIC0+XG4gICAgICAgIHVuZ2V0ICgpOyBTb21lIGlcbiAgYW5kIGJyYWNrZXQgcyA9XG4gICAgaWYgcyA8PiBbXSAmJiBhY2NlcHQgJ10nIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgICBsZXQgYyA9IGNoYXIgKCkgaW5cbiAgICAgIGlmIGFjY2VwdCAnLScgdGhlbiBiZWdpblxuICAgICAgICBpZiBhY2NlcHQgJ10nIHRoZW4gUmUuY2hhciBjIDo6IFJlLmNoYXIgJy0nIDo6IHMgZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBjJyA9IGNoYXIgKCkgaW5cbiAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgYnJhY2tldCAoUmUuY2hhciBjIDo6IHMpXG4gICAgZW5kXG4gIGFuZCBjaGFyICgpID1cbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgIGlmIGMgPSAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc9JyB0aGVuIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc6JyB0aGVuIGJlZ2luXG4gICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWQgKCpYWFgqKVxuICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBsZXQgYyA9IGdldCAoKSBpblxuICAgICAgICBpZiBub3QgKGFjY2VwdCAnLicpIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZDtcbiAgICAgICAgaWYgbm90IChhY2NlcHQgJ10nKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBjXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBjXG4gICAgZW5kIGVsc2VcbiAgICAgIGNcbiAgaW5cbiAgbGV0IHJlcyA9IHJlZ2V4cCAoKSBpblxuICBpZiBub3QgKGVvcyAoKSkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgcmVzXG5cbnR5cGUgb3B0ID0gW2BJQ2FzZSB8IGBOb1N1YiB8IGBOZXdsaW5lXVxuXG5sZXQgcmUgPyhvcHRzID0gW10pIHMgPVxuICBsZXQgciA9IHBhcnNlIChMaXN0Lm1lbXEgYE5ld2xpbmUgb3B0cykgcyBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgSUNhc2Ugb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgbGV0IHIgPSBpZiBMaXN0Lm1lbXEgYE5vU3ViIG9wdHMgdGhlbiBSZS5ub19ncm91cCByIGVsc2UgciBpblxuICByXG5cbmxldCBjb21waWxlIHJlID0gUmUuY29tcGlsZSAoUmUubG9uZ2VzdCByZSlcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhpcyBtb2R1bGUgb2ZmZXJzIGEgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBiYXNlZCBvbiBkaXNqb2ludCBzZXRcbiAgIGZvcmVzdHMsIHdpdGggcGF0aCBjb21wcmVzc2lvbiBhbmQgbGlua2luZyBieSByYW5rLiAqKVxuXG5vcGVuIFN0b3JlXG5cbm1vZHVsZSBNYWtlIChTIDogU1RPUkUpID0gc3RydWN0XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBJbiB0aGlzIHZlcnNpb24gdGhlIGNvZGUsIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXN0IG5vdCBtdXRhYmxlLiBJbmRlZWQsXG4gICBldmVyeSBtdXRhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB2aWEgW1Muc2V0XS4gKilcblxudHlwZSAnYSBjb250ZW50ID1cbnwgTGluayBvZiAnYSBycmVmXG58IFJvb3Qgb2YgcmFuayAqICdhXG5cbigqIFRoZSB0eXBlIFsnYSBycmVmXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgcnJlZiA9XG4gICdhIGNvbnRlbnQgUy5ycmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSB0eXBlIG9mIHN0b3JlcywgYW5kIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBuZXcgc3RvcmUsIGFyZSB0aG9zZVxuICAgb2YgdGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gW1NdLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgJ2EgY29udGVudCBTLnN0b3JlXG5cbmxldCBuZXdfc3RvcmUgOiB1bml0IC0+ICdhIHN0b3JlID1cbiAgUy5uZXdfc3RvcmVcblxubGV0IGNvcHkgOiAnYSBzdG9yZSAtPiAnYSBzdG9yZSA9XG4gIFMuY29weVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWFrZSBzIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIFMubWFrZSBzIChSb290ICgwLCB2KSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgcyB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChfLCBfKSAtPlxuICAgICAgeFxuICB8IExpbmsgeSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHMgeSBpblxuICAgICAgaWYgUy5lcSBzIHkgeiB0aGVuXG4gICAgICAgIHpcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGxpbmtfdG9feiA9IFMuZ2V0IHMgeSBpblxuICAgICAgICBTLnNldCBzIHggbGlua190b196O1xuICAgICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCBfIC0+XG4gICAgICB0cnVlXG4gIHwgTGluayBfIC0+XG4gICAgICBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZXEgcyB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZSBzYW1lXG4gICBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYSBwaHlzaWNhbFxuICAgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF0gYW5kIFt5XSBhcmVcbiAgIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgUy5lcSBzIHggeSB8fCBTLmVxIHMgKGZpbmQgcyB4KSAoZmluZCBzIHkpXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtnZXRfIHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IGdldF8gKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuKCogW2dldCBzIHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbigqIEJ5IG5vdCBjYWxsaW5nIFtmaW5kXSBpbW1lZGlhdGVseSwgd2Ugb3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGVcbiAgIHBhdGggb3V0IG9mIFt4XSBoYXMgbGVuZ3RoIDAgb3IgMSwgYXQgdGhlIGV4cGVuc2Ugb2YgdGhlIGdlbmVyYWwgY2FzZS5cbiAgIFRodXMsIHdlIGNhbGwgW2ZpbmRdIG9ubHkgaWYgcGF0aCBjb21wcmVzc2lvbiBtdXN0IGJlIHBlcmZvcm1lZC4gKilcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICB2XG4gIHwgTGluayB5IC0+XG4gICAgICBtYXRjaCBTLmdldCBzIHkgd2l0aFxuICAgICAgfCBSb290IChfLCB2KSAtPlxuICAgICAgICAgIHZcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgZ2V0XyBzIHhcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW3NldF8gcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgc2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCBzIHggaW5cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbc2V0IHMgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgc2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IChyLCBfKSAtPlxuICAgICAgUy5zZXQgcyB4IChSb290IChyLCB2KSlcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICAgICAgUy5zZXQgcyB5IChSb290IChyLCB2KSlcbiAgICAgIHwgTGluayBfIC0+XG4gICAgICAgICAgc2V0XyBzIHggdlxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24gcyB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgXykgLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpOyB5XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTsgeFxuICAgICAgICBlbmRcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBTLnNldCBzIHggKFJvb3QgKHJ4ICsgMSwgdngpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIHMgKGYgOiAnYSAtPiAnYSAtPiAnYSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogJ2EgcnJlZiA9XG4gIGxldCB4ID0gZmluZCBzIHhcbiAgYW5kIHkgPSBmaW5kIHMgeSBpblxuICBpZiBTLmVxIHMgeCB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggUy5nZXQgcyB4LCBTLmdldCBzIHkgd2l0aFxuICAgIHwgUm9vdCAocngsIHZ4KSwgUm9vdCAocnksIHZ5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB4IChMaW5rIHkpO1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiBTLnNldCBzIHkgKFJvb3QgKHJ5LCB2KSk7XG4gICAgICAgICAgeVxuICAgICAgICBlbmQgZWxzZSBpZiByeCA+IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIFMuc2V0IHMgeCAoUm9vdCAocngsIHYpKTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocngrMSwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFRoZSByYW5rIG9mIGEgdmVydGV4IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCwgaW4gZWRnZXMsIG9mIGFuIHVuY29tcHJlc3NlZCBwYXRoXG4gICB0aGF0IGxlYWRzIHRvIHRoaXMgdmVydGV4LiBJbiBvdGhlciB3b3JkcywgdGhlIHJhbmsgb2YgW3hdIGlzIHRoZSBoZWlnaHQgb2ZcbiAgIHRoZSB0cmVlIHJvb3RlZCBhdCBbeF0gdGhhdCB3b3VsZCBleGlzdCBpZiB3ZSBkaWQgbm90IHBlcmZvcm0gcGF0aFxuICAgY29tcHJlc3Npb24uICopXG5cbnR5cGUgcmFuayA9XG4gIGludFxuXG4oKiBUaGUgY29udGVudCBvZiBhIHZlcnRleCBpcyBhIHBvaW50ZXIgdG8gYSBwYXJlbnQgdmVydGV4IChpZiB0aGUgdmVydGV4XG4gICBoYXMgYSBwYXJlbnQpIG9yIGEgcGFpciBvZiBhIHJhbmsgYW5kIGEgdXNlciB2YWx1ZSAoaWYgdGhlIHZlcnRleCBoYXMgbm9cbiAgIHBhcmVudCwgYW5kIGlzIHRodXMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBmb3IgdGhpcyBlcXVpdmFsZW5jZVxuICAgY2xhc3MpLiAqKVxuXG4oKiBXZSBtYWtlIHRoZSB0eXBlIFsnYSBjb250ZW50XSBtdXRhYmxlLCBhbmQgd2UgbWFpbnRhaW4gdGhlIHByb3BlcnR5IHRoYXRcbiAgIGV2ZXJ5IHZlcnRleCB1bmlxdWVseSBvd25zIGl0cyBjb250ZW50LiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgYSBjb250ZW50XG4gICBpbiBwbGFjZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBuZXcgY29udGVudCBhbmQgdXBkYXRpbmcgdGhlIHZlcnRleCB3aXRoXG4gICB0aGlzIG5ldyBjb250ZW50LlxuXG4gICBXZSBvYnRhaW4gdGhlIHByb3BlcnR5IHRoYXQ6XG4gICAtIG9ubHkgW21ha2VdIGFsbG9jYXRlcyBhIG5ldyB2ZXJ0ZXggKGEgcmVmZXJlbmNlIGFuZCBhIFtSb290XSBjb250ZW50KTtcbiAgIC0gb25seSBbdW5pb25dIGFuZCBbbWVyZ2VdIGFsbG9jYXRlIGEgbmV3IGVkZ2UgKGEgW0xpbmtdIGNvbnRlbnQpLlxuICAgW2ZpbmRdLCBbZ2V0XSwgW3NldF0sIFtlcV0gYWxsb2NhdGUgbm8gbWVtb3J5LiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mIHsgbXV0YWJsZSBwYXJlbnQgOiAnYSBlbGVtIH1cbnwgUm9vdCBvZiB7IG11dGFibGUgcmFuayA6IHJhbms7IG11dGFibGUgdmFsdWUgOiAnYSB9XG5cbigqIFRoZSB0eXBlIFsnYSBlbGVtXSByZXByZXNlbnRzIGEgdmVydGV4IGluIHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlLiAqKVxuXG5hbmQgJ2EgZWxlbSA9XG4gICdhIGNvbnRlbnQgcmVmXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHZdIGNyZWF0ZXMgYSBuZXcgcm9vdCBvZiByYW5rIHplcm8uICopXG5cbmxldCBtYWtlICh2IDogJ2EpIDogJ2EgZWxlbSA9XG4gIHJlZiAoUm9vdCB7IHJhbmsgPSAwOyB2YWx1ZSA9IHYgfSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2ZpbmQgeF0gZmluZHMgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleCBvZiB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgW3hdLlxuICAgSXQgZG9lcyBzbyBieSBmb2xsb3dpbmcgdGhlIHBhdGggZnJvbSBbeF0gdG8gdGhlIHJvb3QuIFBhdGggY29tcHJlc3Npb24gaXNcbiAgIHBlcmZvcm1lZCAob24gdGhlIHdheSBiYWNrKSBieSBtYWtpbmcgZXZlcnkgdmVydGV4IGFsb25nIHRoZSBwYXRoIGFcbiAgIGRpcmVjdCBjaGlsZCBvZiB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4LiBObyByYW5rIGlzIGFsdGVyZWQuICopXG5cbmxldCByZWMgZmluZCAoeCA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHhcbiAgfCBMaW5rICh7IHBhcmVudCA9IHkgfSBhcyBsaW5rKSAtPlxuICAgICAgbGV0IHogPSBmaW5kIHkgaW5cbiAgICAgIGlmIHogIT0geSB0aGVuXG4gICAgICAgIGxpbmsucGFyZW50IDwtIHo7XG4gICAgICB6XG5cbmxldCBpc19yZXByZXNlbnRhdGl2ZSAoeCA6ICdhIGVsZW0pIDogYm9vbCA9XG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSB4IHldIGRldGVybWluZXMgd2hldGhlciB0aGUgdmVydGljZXMgW3hdIGFuZCBbeV0gYmVsb25nIGluIHRoZVxuICAgc2FtZSBlcXVpdmFsZW5jZSBjbGFzcy4gSXQgZG9lcyBzbyB2aWEgdHdvIGNhbGxzIHRvIFtmaW5kXSBhbmQgYVxuICAgcGh5c2ljYWwgZXF1YWxpdHkgdGVzdC4gQXMgYSBmYXN0IHBhdGgsIHdlIGZpcnN0IHRlc3Qgd2hldGhlciBbeF1cbiAgIGFuZCBbeV0gYXJlIHBoeXNpY2FsbHkgZXF1YWwuICopXG5cbmxldCBlcSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiBib29sID1cbiAgeCA9PSB5IHx8IGZpbmQgeCA9PSBmaW5kIHlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldCB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0ICh4IDogJ2EgZWxlbSkgOiAnYSA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHsgdmFsdWUgPSB2OyBfIH0gLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0IHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXQgKHggOiAnYSBlbGVtKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgeCA9IGZpbmQgeCBpblxuICBtYXRjaCAheCB3aXRoXG4gIHwgUm9vdCByb290IC0+XG4gICAgICByb290LnZhbHVlIDwtIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbdW5pb24geCB5XSBtZXJnZXMgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXMgb2YgW3hdIGFuZCBbeV0gYnkgaW5zdGFsbGluZyBhXG4gICBsaW5rIGZyb20gb25lIHJvb3QgdmVydGV4IHRvIHRoZSBvdGhlci4gKilcblxuKCogTGlua2luZyBpcyBieSByYW5rOiB0aGUgc21hbGxlci1yYW5rZWQgdmVydGV4IGlzIG1hZGUgdG8gcG9pbnQgdG8gdGhlXG4gICBsYXJnZXIuIElmIHRoZSB0d28gdmVydGljZXMgaGF2ZSB0aGUgc2FtZSByYW5rLCB0aGVuIGFuIGFyYml0cmFyeSBjaG9pY2VcbiAgIGlzIG1hZGUsIGFuZCB0aGUgcmFuayBvZiB0aGUgbmV3IHJvb3QgaXMgaW5jcmVtZW50ZWQgYnkgb25lLiAqKVxuXG5sZXQgdW5pb24gKHggOiAnYSBlbGVtKSAoeSA6ICdhIGVsZW0pIDogJ2EgZWxlbSA9XG4gIGxldCB4ID0gZmluZCB4XG4gIGFuZCB5ID0gZmluZCB5IGluXG4gIGlmIHggPT0geSB0aGVuIHggZWxzZVxuICAgIG1hdGNoICF4LCAheSB3aXRoXG4gICAgfCBSb290ICh7IHJhbmsgPSByeDsgXyB9IGFzIHJvb3R4KSwgUm9vdCB7IHJhbmsgPSByeTsgXyB9IC0+XG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttZXJnZV0gaXMgYW5hbG9nb3VzIHRvIFt1bmlvbl0sIGJ1dCBpbnZva2VzIGEgdXNlci1zcGVjaWZpZWQgZnVuY3Rpb24gW2ZdXG4gICB0byBjb21wdXRlIHRoZSBuZXcgdmFsdWUgW3ZdIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXF1aXZhbGVuY2UgY2xhc3MuICopXG5cbigqIFRoZSBmdW5jdGlvbiBbZl0gbXVzdCBub3QgYWZmZWN0IHRoZSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJ5IG1ha2luZ1xuICAgcmUtZW50cmFudCBjYWxscyB0byBbc2V0XSwgW3VuaW9uXSwgb3IgW21lcmdlXS4gVGhlcmUgYXJlIHR3byByZWFzb25zIGZvclxuICAgdGhpcy4gRmlyc3QsIFtmXSBtYXkgYmUgaW52b2tlZCBhdCBhIHRpbWUgd2hlbiB0aGUgaW52YXJpYW50IG9mIHRoZSBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGVtcG9yYXJpbHkgdmlvbGF0ZWQ6IGluIHRoZSB0aGlyZCBicmFuY2ggYmVsb3csIHRoZSByYW5rIG9mXG4gICBbeF0gaGFzIG5vdCB5ZXQgYmVlbiBpbmNyZWFzZWQgd2hlbiBbZl0gaXMgaW52b2tlZC4gU2Vjb25kLCBtb3JlIHNlcmlvdXNseSxcbiAgIGlmIFtmXSBjb3VsZCBjYWxsLCBzYXksIFt1bmlvbl0sIHRoZW4gdGhhdCBjb3VsZCBjaGFuZ2UgYSBbUm9vdF0gaW50byBhXG4gICBbTGlua10sIHNvIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IGNoYW5nZSBhIFtMaW5rXVxuICAgYmFjayBpbnRvIGEgW1Jvb3RdLCBzb21ldGhpbmcgdGhhdCBkb2VzIG5vdCBtYWtlIGFueSBzZW5zZS4gQWxzbywgaWYgW2ZdXG4gICBjb3VsZCBjYWxsIFtzZXRdLCB0aGVuIHRoZSB3cml0ZSB0aGF0IGZvbGxvd3MgdGhlIGNhbGwgdG8gW2ZdIG1pZ2h0IHVuZG9cbiAgIHRoZSBlZmZlY3Qgb2YgdGhpcyBbc2V0XSBvcGVyYXRpb247IHRoaXMgYWxzbyBkb2VzIG5vdCBtYWtlIHNlbnNlLiAqKVxuXG4oKiBUaGUgdGVzdHMgW2lmIHYgIT0gdnkgdGhlbiAuLi5dIGFuZCBbaWYgdiAhPSB2eCB0aGVuIC4uLl0gYXJlIGludGVuZGVkIHRvXG4gICBzYXZlIGFuIGFsbG9jYXRpb24gYW5kIGEgd3JpdGUgd2hlbiBwb3NzaWJsZS4gKilcblxuKCogV2UgaW52b2tlIFtmXSBiZWZvcmUgcGVyZm9ybWluZyBhbnkgdXBkYXRlLCBzbyB0aGF0IGlmIFtmXSBmYWlsc1xuICAgKGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uKSwgdGhlIHN0YXRlIGlzIHVuYWZmZWN0ZWQuICopXG5cbmxldCBtZXJnZSAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyB2YWx1ZSA9IHZ4IH0gYXMgcm9vdHgpLFxuICAgICAgUm9vdCAoeyByYW5rID0gcnk7IHZhbHVlID0gdnkgfSBhcyByb290eSkgLT5cbiAgICAgICAgbGV0IHYgPSBmIHZ4IHZ5IGluXG4gICAgICAgIGlmIHJ4IDwgcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHggOj0gTGluayB7IHBhcmVudCA9IHkgfTtcbiAgICAgICAgICBpZiB2ICE9IHZ5IHRoZW4gcm9vdHkudmFsdWUgPC0gdjtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIHkgOj0gTGluayB7IHBhcmVudCA9IHggfTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gcm9vdHgudmFsdWUgPC0gdjtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHJvb3R4LnJhbmsgPC0gcnggKyAxO1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIElOVE1BUCA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdmFsIGVtcHR5OiAnYSB0XG4gIHZhbCBmaW5kOiBpbnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgYWRkOiBpbnQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKEludE1hcCA6IElOVE1BUCkgPSBzdHJ1Y3RcblxuKCogQSBzdG9yZSBpcyBpbXBsZW1lbnRlZCBhcyBhIHBhaXIgb2YgYW4gaW50ZWdlciBhZGRyZXNzIGFuZCBhIG1hcCBvZlxuICAgaW50ZWdlciBhZGRyZXNzZXMgdG8gdmFsdWVzLiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlXG4gICBkb21haW4gb2YgdGhlIG1hcCBbY29udGVudF0gaXMgdGhlIHNlbWktb3BlbiBpbnRlcnZhbCBvZiB6ZXJvXG4gICAoaW5jbHVkZWQpIHVwIHRvIFtsaW1pdF0gKGV4Y2x1ZGVkKS4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIG5leHQgYXZhaWxhYmxlIGFkZHJlc3MuICopXG4gIG11dGFibGUgbGltaXQ6ICAgaW50O1xuICAoKiBUaGUgY29udGVudCBvZiB0aGUgc3RvcmUuICopXG4gIG11dGFibGUgY29udGVudDogJ2EgSW50TWFwLnRcbn1cblxubGV0IG5ld19zdG9yZSAoKSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gSW50TWFwLmVtcHR5XG59XG5cbigqIEJlY2F1c2UgYSBwZXJzaXN0ZW50IG1hcCBpcyB1c2VkLCBjb3B5aW5nIGEgc3RvcmUgYW1vdW50cyB0byBjb3B5aW5nXG4gICB0aGUgbXV0YWJsZSByZWNvcmQgYXQgdGhlIHJvb3QuICopXG5cbmxldCBjb3B5IHMgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IHMuY29udGVudCB9XG5cbigqIEEgcmVmZXJlbmNlIGlzIGp1c3QgYW4gaW50ZWdlciBhZGRyZXNzLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICBpbnRcblxubGV0IG1ha2UgcyB2ID1cbiAgbGV0IHggPSBzLmxpbWl0IGluXG4gIHMubGltaXQgPC0geCArIDE7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnQ7XG4gIHhcblxuKCogW2NoZWNrIHMgeF0gY2hlY2tzIHRoYXQgdGhlIGFkZHJlc3MgW3hdIGlzIGluIHJhbmdlIGZvciB0aGUgc3RvcmUgW3NdLiBJZlxuICAgdGhpcyBkeW5hbWljIGNoZWNrIGZhaWxzLCB0aGVuIHRoZSB1c2VyIGlzIGNvbmZ1c2VkIGFuZCBoYXMgcGFzc2VkIHVzIGFuXG4gICBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuIChJZiB0aGUgY2hlY2sgc3VjY2VlZHMsXG4gICB0aGUgdXNlciBtYXkgYmUgY29uZnVzZWQgdG9vISBidXQgd2UgY2Fubm90IGRldGVjdCBpdC4pICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICAgcmFpc2UgSW52YWxpZFJlZlxuXG5sZXQgZ2V0IHMgeCA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBJbnRNYXAuZmluZCB4IHMuY29udGVudFxuXG5sZXQgc2V0IHMgeCB2ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIHMuY29udGVudCA8LSBJbnRNYXAuYWRkIHggdiBzLmNvbnRlbnRcblxubGV0IGVxIHMgKHggOiBpbnQpICh5IDogaW50KSA9XG4gICgqIEZhaWx1cmUgb2YgdGhpcyBhc3NlcnRpb24gd291bGQgaW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgcGFzc2VkIHVzXG4gICAgIGFuIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKilcbiAgY2hlY2sgcyB4O1xuICBjaGVjayBzIHk7XG4gIHggPSB5XG5cbmVuZFxuXG4oKiBJbmNsdWRlIHRoZSBtb3N0IGNvbW1vbiBpbnN0YW5jZSBvZiB0aGUgYWJvdmUgZnVuY3Rvci4gKilcblxuaW5jbHVkZSBNYWtlKE1hcC5NYWtlKHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGNvbXBhcmUgPSAoLSkgKCogb2sgc2luY2UgdGhlIGFyZ3VtZW50cyBhcmUgbm9ubmVnYXRpdmUgaW50ZWdlcnMgKilcbmVuZCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogV2hlbiBPQ2FtbCdzIGJ1aWx0LWluIHN0b3JlIGlzIHVzZWQsIG5vIGV4cGxpY2l0IHN0b3JlIGlzIG5lZWRlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHVuaXRcblxubGV0IG5ld19zdG9yZSAoKSA9XG4gICgpXG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxuKCogQSByZWZlcmVuY2UgaXMgYSBwcmltaXRpdmUgcmVmZXJlbmNlLiAqKVxuXG50eXBlICdhIHJyZWYgPVxuICAnYSByZWZcblxubGV0IG1ha2UgKCkgdiA9XG4gIHJlZiB2XG5cbmxldCBnZXQgKCkgeCA9XG4gICF4XG5cbmxldCBzZXQgKCkgeCB2ID1cbiAgeCA6PSB2XG5cbmxldCBlcSAoKSB4IHkgPVxuICB4ID09IHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHJlZmVyZW5jZSBjZWxsIHJlY29yZHMgYm90aCBpdHMgY3VycmVudCAocG9zc2libHkgdW5jb21taXR0ZWQpIHZhbHVlIGFuZFxuICAgaXRzIGxhc3QgY29tbWl0dGVkIHZhbHVlLiBBIGNlbGwgaXMgY29uc2lkZXJlZCBzdGFibGUgd2hlbiB0aGVzZSB0d28gdmFsdWVzXG4gICBhcmUgKHBoeXNpY2FsbHkpIGVxdWFsLCBhbmQgdW5zdGFibGUgb3RoZXJ3aXNlLiAqKVxuXG4oKiBPbmUgY291bGQgcGVyaGFwcyBlbnJpY2ggZWFjaCBjZWxsIHdpdGggYSBwb2ludGVyIHRvIGl0cyBzdG9yZSwgc28gYXMgdG9cbiAgIGVuc3VyZSBhdCBydW50aW1lIHRoYXQgdGhlIHVzZXIgaXMgbm90IGNvbmZ1c2VkLiAqKVxuXG50eXBlICdhIHJyZWYgPSB7XG4gICgqIFRoZSBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUuICopXG4gIG11dGFibGUgY3VycmVudDogJ2E7XG4gICgqIFRoZSBsYXN0IGNvbW1pdHRlZCB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjb21taXR0ZWQ6ICdhXG59XG5cbigqIEEgdHJhbnNhY3Rpb24gY29udGFpbnMgYSBzdGFjayBvZiBhbGwgdW5zdGFibGUgY2VsbHMgKGFuZCBwb3NzaWJseSBzb21lXG4gICBzdGFibGUgY2VsbHMgdG9vLCBhbHRob3VnaCB0aGF0IGlzIHVubGlrZWx5KS4gKilcblxudHlwZSAnYSB0cmFuc2FjdGlvbiA9XG4gICdhIHJyZWYgU3RhY2sudFxuXG4oKiBBIHN0b3JlIGNvbnRhaW5zIGFuIG9wdGlvbmFsIHRyYW5zYWN0aW9uLiBUaGlzIGluZGljYXRlcyB3aGV0aGVyIGFcbiAgIHRyYW5zYWN0aW9uIGlzIGN1cnJlbnRseSBvbmdvaW5nLiBUcmFuc2FjdGlvbnMgY2Fubm90IGJlIG5lc3RlZC4gKilcblxudHlwZSAnYSBzdG9yZSA9XG4gIHsgbXV0YWJsZSB0cmFuc2FjdGlvbjogJ2EgdHJhbnNhY3Rpb24gb3B0aW9uIH1cblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID1cbiAgeyB0cmFuc2FjdGlvbiA9IE5vbmUgfVxuXG4oKiBDb3B5aW5nIGlzIG5vdCBzdXBwb3J0ZWQuICopXG5cbmxldCBjb3B5IF9zID1cbiAgYXNzZXJ0IGZhbHNlXG5cbmxldCBtYWtlIChfcyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6ICdhIHJyZWYgPVxuICB7IGN1cnJlbnQgPSB2OyBjb21taXR0ZWQgPSB2IH1cblxubGV0IGdldCAoX3MgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgeC5jdXJyZW50XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICAoKiBJZiB0aGUgbmV3IHZhbHVlIGhhcHBlbnMgdG8gYmUgdGhlIGN1cnJlbnQgdmFsdWUsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8uICopXG4gIGxldCBjdXJyZW50ID0geC5jdXJyZW50IGluXG4gIGlmIHYgPT0gY3VycmVudCB0aGVuXG4gICAgKClcbiAgZWxzZSBiZWdpbiBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICAoKiBPdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24sIHR3byBub3JtYWwgd3JpdGUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkLlxuICAgICAgICAgVGhlIGNlbGwgcmVtYWlucyBzdGFibGUuIE5vdGhpbmcgaXMgbG9nZ2VkLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHY7XG4gICAgICB4LmNvbW1pdHRlZCA8LSB2XG4gIHwgU29tZSBzdGFjayAtPlxuICAgICAgKCogV2UgYXJlIHdpdGhpbiBhIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgKCogSWYgdGhpcyBjZWxsIHdhcyBzdGFibGUgYW5kIG5vdyBiZWNvbWVzIHVuc3RhYmxlLCB0aGVuIGl0IG11c3QgYmVcbiAgICAgICAgIGluc2VydGVkIGludG8gdGhlIHNldCBvZiB1bnN0YWJsZSBjZWxscywgd2hpY2ggaXMgcmVjb3JkZWQgYXMgcGFydFxuICAgICAgICAgb2YgdGhlIHRyYW5zYWN0aW9uLiAqKVxuICAgICAgaWYgY3VycmVudCA9PSB4LmNvbW1pdHRlZCB0aGVuXG4gICAgICAgIFN0YWNrLnB1c2ggeCBzdGFjaztcbiAgICAgICgqIFRoZSBjZWxsIG11c3QgdGhlbiBiZSB1cGRhdGVkLiBJZiBbdl0gaGFwcGVucyB0byBiZSBlcXVhbCB0b1xuICAgICAgICAgW2NvbW1pdHRlZF0sIHRoaXMgY291bGQgbWFrZSB0aGUgY2VsbCBzdGFibGUgYWdhaW4uIFdlIGRvIG5vdFxuICAgICAgICAgY2hlY2sgZm9yIHRoaXMgdW5saWtlbHkgc2l0dWF0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNldCBvZlxuICAgICAgICAgdW5zdGFibGUgY2VsbHMgY291bGQgYWN0dWFsbHkgY29udGFpbiBzdGFibGUgY2VsbHMgdG9vLiAqKVxuICAgICAgeC5jdXJyZW50IDwtIHZcbiAgICBlbmRcblxubGV0IGVxIChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiBib29sID1cbiAgeCA9PSB5XG5cbmV4Y2VwdGlvbiBOZXN0ZWRUcmFuc2FjdGlvbkF0dGVtcHRcblxubGV0IGNvbW1pdCB4ID1cbiAgeC5jb21taXR0ZWQgPC0geC5jdXJyZW50XG5cbmxldCByb2xsYmFjayB4ID1cbiAgeC5jdXJyZW50IDwtIHguY29tbWl0dGVkXG5cbmxldCB0ZW50YXRpdmVseSAocyA6ICdhIHN0b3JlKSAoZiA6IHVuaXQgLT4gJ2IpIDogJ2IgPVxuICBtYXRjaCBzLnRyYW5zYWN0aW9uIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAgIHJhaXNlIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBzdGFjayA9IFN0YWNrLmNyZWF0ZSgpIGluXG4gICAgICBzLnRyYW5zYWN0aW9uIDwtIFNvbWUgc3RhY2s7XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGIgPSBmKCkgaW5cbiAgICAgICAgKCogQ29tbWl0IGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgY29tbWl0IHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBiXG4gICAgICB3aXRoIGUgLT5cbiAgICAgICAgbGV0IGIgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSgpIGluXG4gICAgICAgICgqIFJvbGwgYmFjayBldmVyeSB1bnN0YWJsZSBjZWxsLiAqKVxuICAgICAgICBTdGFjay5pdGVyIHJvbGxiYWNrIHN0YWNrO1xuICAgICAgICAoKiBDbG9zZSB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICAgIHMudHJhbnNhY3Rpb24gPC0gTm9uZTtcbiAgICAgICAgKCogUmVwb3J0IHRoZSBvdXRjb21lLiAqKVxuICAgICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSBlIGJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGFuIGV4dGVuc2libGUgYXJyYXksIHRoYXQgaXMsIGEgcGFpciBvZiBhblxuICAgaW50ZWdlciBhZGRyZXNzIGFuZCBhbiBhcnJheS4gV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHRoZSBsZW5ndGggb2ZcbiAgIHRoZSBhcnJheSBpcyBhdCBsZWFzdCBbbGltaXRdLiBUaGUgYXJlYSBvZiB0aGUgYXJyYXkgYXQgaW5kZXggW2xpbWl0XSBhbmRcbiAgIGJleW9uZCBpcyBjb25zaWRlcmVkIHVuaW5pdGlhbGl6ZWQuICopXG5cbigqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGlzIGFyZWEgaXMgZmlsbGVkIHdpdGggYXJiaXRyYXJ5IHZhbHVlKHMpXG4gICBwcm92aWRlZCBieSB0aGUgdXNlciBpbiBjYWxscyB0byBbbWFrZV0gb3IgW3NldF0uIFRoaXMgaXMgbm90IGlkZWFsLCBhcyBpdFxuICAgY2FuIGNhdXNlIGEgbWVtb3J5IGxlYWsuICopXG5cbnR5cGUgJ2Egc3RvcmUgPSB7XG4gICgqIFRoZSBsb2dpY2FsIHNpemUgb2YgdGhlIGFycmF5OyBhbHNvLCB0aGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBhcnJheSwgd2hvc2UgbGVuZ3RoIGlzIGF0IGxlYXN0IFtsaW1pdF0uICopXG4gIG11dGFibGUgY29udGVudDogJ2EgYXJyYXlcbn1cblxuKCogVGhlIGFycmF5IGlzIGNyZWF0ZWQgd2l0aCBhIHNpemUgYW5kIGxlbmd0aCBvZiB6ZXJvLiBXZSBoYXZlIG5vIG90aGVyXG4gICBjaG9pY2UsIHNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgdmFsdWUgb2YgdHlwZSBbJ2FdIGF0IGhhbmQuICopXG5cbmxldCBuZXdfc3RvcmUgKCkgOiAnYSBzdG9yZSA9IHtcbiAgbGltaXQgPSAwO1xuICBjb250ZW50ID0gW3x8XVxufVxuXG4oKiBDb3B5aW5nIGlzIHN1cHBvcnRlZCwgYnV0IGlzIG5vdCBjaGVhcC4gVXNlIGF0IHlvdXIgb3duIHJpc2suICopXG5cbmxldCBjb3B5IChzIDogJ2Egc3RvcmUpIDogJ2Egc3RvcmUgPVxuICB7IGxpbWl0ID0gcy5saW1pdDsgY29udGVudCA9IEFycmF5LmNvcHkgcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG4oKiBUaGUgYXJyYXkganVtcHMgZnJvbSBsZW5ndGggemVybyB0byBsZW5ndGggW2RlZmF1bHRfaW5pdGlhbF9sZW5ndGhdIGFzIHNvb25cbiAgIGFzIGEgY2FsbCB0byBbbWFrZV0gaXMgbWFkZS4gKilcblxubGV0IGRlZmF1bHRfaW5pdGlhbF9sZW5ndGggPVxuICAyNTZcblxuKCogW2VubGFyZ2UgcyB2XSBpbmNyZWFzZXMgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgKGlmIG5lY2Vzc2FyeSkgc28gYXMgdG9cbiAgIGVuc3VyZSB0aGF0IFtzLmxpbWl0XSBiZWNvbWVzIGEgdmFsaWQgaW5kZXguIFRoZSBhcmd1bWVudCBbdl0gaXMgdXNlZCBhcyBhXG4gICBkZWZhdWx0IHZhbHVlIHRvIGZpbGwgdGhlIHVuaW5pdGlhbGl6ZWQgYXJlYS4gKilcblxubGV0IGVubGFyZ2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IGNvbnRlbnQgPSBzLmNvbnRlbnQgaW5cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb250ZW50IGluXG4gIGlmIHMubGltaXQgPSBsZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBsZW5ndGgnID1cbiAgICAgIGlmIGxlbmd0aCA9IDAgdGhlblxuICAgICAgICBkZWZhdWx0X2luaXRpYWxfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIDIgKiBsZW5ndGhcbiAgICBpblxuICAgIGFzc2VydCAocy5saW1pdCA8IGxlbmd0aCcpO1xuICAgIGxldCBjb250ZW50JyA9IEFycmF5Lm1ha2UgbGVuZ3RoJyB2IGluXG4gICAgQXJyYXkuYmxpdCBjb250ZW50IDAgY29udGVudCcgMCBsZW5ndGg7XG4gICAgcy5jb250ZW50IDwtIGNvbnRlbnQnXG4gIGVuZFxuXG4oKiBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBbQXJyYXkudW5zYWZlX3NldF0gYW5kIFtBcnJheS51bnNhZmVfZ2V0XSB3aXRob3V0XG4gICBhbnkgcHJlY2F1dGlvbnMsIHNpbmNlIHRoZSBPQ2FtbCB0eXBlLWNoZWNrZXIgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZVxuICAgaW5kaWNlcyBhcmUgaW4gcmFuZ2UuIEEgY29uZnVzZWQgdXNlciBjb3VsZCBwYXNzIHJlZmVyZW5jZXMgaW50byBzb21lXG4gICBvdGhlciBzdG9yZS4gV2UgY2hvb3NlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCB0aGUgaW5kZXggaXMgd2l0aGluIHRoZVxuICAgbG9naWNhbCBib3VuZHMgb2YgdGhlIGFycmF5IC0tIHRoaXMgaXMgYSBtb3JlIHByZWNpc2UgY2hlY2suICopXG5cbmV4Y2VwdGlvbiBJbnZhbGlkUmVmXG5cbmxldCBjaGVjayAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogdW5pdCA9XG4gICgqIFdlIGRvIG5vdCBjaGVjayB0aGF0IFt4XSBpcyBub25uZWdhdGl2ZS4gQW4gb3ZlcmZsb3cgY2Fubm90IG9jY3VyLFxuICAgICBzaW5jZSB0aGF0IHdvdWxkIGltcGx5IHRoYXQgd2UgaGF2ZSBmaWxsZWQgdGhlIG1lbW9yeSB3aXRoIGEgaHVnZVxuICAgICBhcnJheS4gKilcbiAgaWYgeCA+PSBzLmxpbWl0IHRoZW5cbiAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBtYWtlIChzIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIGVubGFyZ2UgcyB2O1xuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2O1xuICB4XG5cbmxldCBnZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhID1cbiAgY2hlY2sgcyB4O1xuICBBcnJheS51bnNhZmVfZ2V0IHMuY29udGVudCB4XG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9zZXQgcy5jb250ZW50IHggdlxuXG5sZXQgZXEgIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0ge1xuICByb3c6IGludCxcbiAgY29sOiBpbnQsXG59O1xuXG5sZXQgY29tcGFyZSA9IChwb3MxLCBwb3MyKSA9PlxuICBpZiAocG9zMS5yb3cgPCBwb3MyLnJvdykge1xuICAgICgtMSk7XG4gIH0gZWxzZSBpZiAocG9zMS5yb3cgPiBwb3MyLnJvdykge1xuICAgIDE7XG4gIH0gZWxzZSB7XG4gICAgSW50LmNvbXBhcmUocG9zMS5jb2wsIHBvczIuY29sKTtcbiAgfTtcblxubGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gVE9ETzogcmVuYW1lIEFubm90IHRvIEFubj9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gSW52YXJpYW50OiBjb250YWlucyBubyBuZXdsaW5lcy4gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIEFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTsgLy8gQW5ub3RhdGlvbnNcblxubGV0IGFsaWduID0gKGw6IHQoJ2Fubm90KSkgPT4gQWxpZ24obCk7XG5sZXQgYW5ub3QgPSAoYW5ub3Q6ICdhbm5vdCwgbDogdCgnYW5ub3QpKSA9PiBBbm5vdChhbm5vdCwgbCk7XG5cbmxldCByZWMgcmVtb3ZlX2Fubm90cyA9IChsYXlvdXQ6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gIHN3aXRjaCAobGF5b3V0KSB7XG4gIHwgQW5ub3QoXywgbCkgPT4gcmVtb3ZlX2Fubm90cyhsKVxuICB8IFRleHQoc3RyaW5nKSA9PiBUZXh0KHN0cmluZylcbiAgfCBDYXQobDEsIGwyKSA9PiBDYXQocmVtb3ZlX2Fubm90cyhsMSksIHJlbW92ZV9hbm5vdHMobDIpKVxuICB8IExpbmVicmVhayA9PiBMaW5lYnJlYWtcbiAgfCBBbGlnbihsKSA9PiBBbGlnbihyZW1vdmVfYW5ub3RzKGwpKVxuICB9O1xufTtcblxuLy8gVE9ETz9cbi8vbGV0IHRleHQgPSAoc3RyaW5nKSA9PiB0X29mX2xheW91dChUZXh0KHN0cmluZykpO1xuLy9sZXQgY2F0ID0gKHQxLCB0MikgPT4gdF9vZl9sYXlvdXQoQ2F0KHQxLCB0MikpO1xuLy9sZXQgbGluZWJyZWFrID0gdF9vZl9sYXlvdXQobGluZWJyZWFrKTtcblxuLy8gVE9ETzogbW92ZSB0byBvd24gbW9kdWxlXG50eXBlIHRleHQoJ2Fubm90LCAnaW1wLCAndCkgPSB7XG4gIC8vIFRPRE86IHJlbmFtZSBgaW1wYFxuICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gJ2ltcCxcbiAgaW1wX2FwcGVuZDogKCdpbXAsICdpbXApID0+ICdpbXAsXG4gIGltcF9uZXdsaW5lOiBpbnQgPT4gJ2ltcCxcbiAgaW1wX29mX2Fubm90OiAoJ2Fubm90LCAnaW1wKSA9PiAnaW1wLFxuICB0X29mX2ltcDogJ2ltcCA9PiAndCxcbn07XG5cbmxldCBta19vZl9sYXlvdXQ6ICh0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpLCB0KCdhbm5vdCkpID0+ICd0ID1cbiAgKHRleHQsIGxheW91dCkgPT4ge1xuICAgIGxldCBjb2x1bW46IHJlZihpbnQpID0gcmVmKDApO1xuICAgIGxldCByZWMgZ286IChpbnQsIHQoJ2Fubm90KSkgPT4gJ2ltcCA9XG4gICAgICAoaW5kZW50LCBsYXlvdXQpID0+IHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgICAgICBjb2x1bW4gOj0gY29sdW1uXiArIFVuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICAgICAgdGV4dC5pbXBfb2Zfc3RyaW5nKHN0cmluZyk7XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgaW1wMSA9IGdvKGluZGVudCwgbDEpO1xuICAgICAgICAgIGxldCBpbXAyID0gZ28oaW5kZW50LCBsMik7XG4gICAgICAgICAgdGV4dC5pbXBfYXBwZW5kKGltcDEsIGltcDIpO1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIC8vIFRPRE86IG5vIGluZGVudCBpZiBvbiBmaW5hbCBsaW5lIGJyZWFrXG4gICAgICAgICAgY29sdW1uIDo9IGluZGVudDtcbiAgICAgICAgICB0ZXh0LmltcF9uZXdsaW5lKGluZGVudCk7XG4gICAgICAgIHwgQWxpZ24obCkgPT4gZ28oY29sdW1uXiwgbClcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT4gdGV4dC5pbXBfb2ZfYW5ub3QoYW5ub3QsIGdvKGluZGVudCwgbCkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIHRleHQudF9vZl9pbXAoZ28oMCwgbGF5b3V0KSk7XG4gIH07XG5cbmxldCBzdHJpbmdfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBzdHJpbmcgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6ICdhbm5vdC4gdGV4dCgnYW5ub3QsIHN0cmluZywgc3RyaW5nKSA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBzdHJpbmcsXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiBzMSArKyBzMixcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gXCJcXG5cIiArKyBTdHJpbmcubWFrZShpbmRlbnQsICcgJyksXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBpbXAgPT4gaW1wLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcblxubGV0IHN0cmluZ3Nfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBsaXN0KChpbnQsIHN0cmluZykpID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOlxuICAgICAgJ2Fubm90LlxuICAgICAgdGV4dCgnYW5ub3QsIGxpc3QoKGludCwgc3RyaW5nKSksIGxpc3QoKGludCwgc3RyaW5nKSkpXG4gICAgID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IFsoMCwgc3RyaW5nKV0sXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5yZXYoczEpLCBzMikge1xuICAgICAgICB8IChbXSwgXykgPT4gczJcbiAgICAgICAgfCAoXywgW10pID0+IHMxXG4gICAgICAgIHwgKFxuICAgICAgICAgICAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xKSwgLi4ucmVzdDFdLFxuICAgICAgICAgICAgWyhmaXJzdF9pbmRlbnRfMiwgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml0sXG4gICAgICAgICAgKSA9PlxuICAgICAgICAgIGFzc2VydChmaXJzdF9pbmRlbnRfMiA9PSAwKTtcbiAgICAgICAgICBMaXN0LnJldihyZXN0MSlcbiAgICAgICAgICBAIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSArKyBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFsoaW5kZW50LCBcIlwiKV0sXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBzID0+IHMsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuIiwibGV0IHNwbGl0X2ZpcnN0ID0gKHhzOiBsaXN0KCdhKSk6ICgnYSwgbGlzdCgnYSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiAoZmlyc3QsIHRyYWlsaW5nKVxuICB9O1xuXG5sZXQgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ2EpKTogb3B0aW9uKChsaXN0KCdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKExpc3QucmV2KHhzKSkge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeSwgLi4ueXNdID0+IFNvbWUoKExpc3QucmV2KHlzKSwgeSkpXG4gIH07XG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgnYSkpOiAobGlzdCgnYSksICdhKSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIFdpZHRoUG9zS2V5ID0ge1xuICB0eXBlIHQgPSAoaW50LCBpbnQpO1xuICBsZXQgaGFzaCA9ICgod2lkdGgsIHBvcykpID0+IDI1NiAqIDI1NiAqIHdpZHRoICsgcG9zO1xuICBsZXQgZXF1YWwgPSAoKHcxLCBwMSksICh3MiwgcDIpKSA9PiB3MSA9PSB3MiAmJiBwMSA9PSBwMjtcbn07XG5cbm1vZHVsZSBNID0gSGFzaHRibC5NYWtlKFdpZHRoUG9zS2V5KTtcblxuLy8gTk9URTogcG9zIGlzIHJlbGF0aXZlIHRvIG1vc3QgcmVjZW50IGBBbGlnbmBcbnR5cGUgbScoJ2EpID0gUG9zTWFwLnQoKENvc3QudCwgJ2EpKTtcbnR5cGUgbSgnYSkgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCkgPT4gbScoJ2EpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbWVtOiBbQHNleHAub3BhcXVlXSBNLnQobScoTGF5b3V0LnQoJ2Fubm90KSkpLFxuICBkb2M6IHQnKCdhbm5vdCksXG59XG5bQGRlcml2aW5nIHNleHBdXG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBhc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSkgLy8gQW5ub3RhdGlvbnNcbiAgfCBGYWlsIC8vIGlkZW50aXR5IGZvciBgQ2hvaWNlYFxuICB8IENob2ljZSh0KCdhbm5vdCksIHQoJ2Fubm90KSk7XG5cbmxldCB0X29mX3QnID0gKHQnOiB0JygnYW5ub3QpKTogdCgnYW5ub3QpID0+IHttZW06IE0uY3JlYXRlKDApLCBkb2M6IHQnfTtcblxubGV0IHRleHQgPSAoczogc3RyaW5nKSA9PiB0X29mX3QnKFRleHQocykpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IHRfb2ZfdCcoTGluZWJyZWFrKTtcbmxldCBhbGlnbiA9IGRvYyA9PiB0X29mX3QnKEFsaWduKGRvYykpO1xubGV0IGFubm90ID0gKGFubm90LCBkb2MpID0+IHRfb2ZfdCcoQW5ub3QoYW5ub3QsIGRvYykpO1xubGV0IGZhaWwgPSAoKSA9PiB0X29mX3QnKEZhaWwpO1xuXG5sZXQgZW1wdHkgPSAoKSA9PiB0ZXh0KFwiXCIpO1xubGV0IHNwYWNlID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3ApOyAvLyBUT0RPOiBwYXJhbSB0byBoc2VwXG5cbmxldCBpbmRlbnQgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCArKyBVbmljb2RlLm5ic3ApO1xubGV0IGluZGVudF9hbmRfYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhDYXQoaW5kZW50KCksIGFsaWduKGRvYykpKTtcblxubGV0IGhjYXQgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgeSkpO1xubGV0IGhjYXRzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhjYXQsIGRvYywgZG9jcyk7XG5cbmxldCBoc2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KHNwYWNlKCksIHkpKSkpO1xubGV0IGhzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhzZXAsIGRvYywgZG9jcyk7XG5cbmxldCB2c2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KGxpbmVicmVhaygpLCB5KSkpKTtcbmxldCB2c2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWx3aXRoKF9fTE9DX18gKysgXCI6IHZzZXBzIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGxpc3RcIilcbiAgfCBbZG9jXSA9PiBkb2NcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdCh2c2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgY2hvaWNlID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2hvaWNlKHgsIHkpKTtcbmxldCBjaG9pY2VzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbCgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoY2hvaWNlLCBkb2MsIGRvY3MpO1xuXG5sZXQgbWFwX3QnOiAnYSAnYi4gKHQnKCdhKSA9PiB0JygnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PiB0X29mX3QnKGYoZC5kb2MpKTtcblxubGV0IHJlYyBtYXBfYW5ub3Q6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PlxuICAgIGRcbiAgICB8PiBtYXBfdCcoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKFRleHQoXykgfCBMaW5lYnJlYWsgfCBGYWlsKSBhcyBkJyA9PiBkJ1xuICAgICAgICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gQW5ub3QoZihhbm5vdCksIG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQWxpZ24oZCkgPT4gQWxpZ24obWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBDYXQoZDEsIGQyKSA9PiBDYXQobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSlcbiAgICAgICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gQ2hvaWNlKG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpLFxuICAgICAgICk7XG4iLCIvLyBUT0RPOiBjb21wdXRlIGFjdHVhbCBsYXlvdXQgc2l6ZSBhbmQgdXNlIGluc3RlYWQgb2YgdF9vZl9sYXlvdXRcbmxldCByZWMgYWxsOiAnYW5ub3QuIERvYy50KCdhbm5vdCkgPT4gbGlzdChMYXlvdXQudCgnYW5ub3QpKSA9IHtcbiAgZG9jID0+IHtcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PiBbTGF5b3V0LlRleHQoc3RyaW5nKV1cbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbHMxID0gYWxsKGQxKTtcbiAgICAgIGxldCBsczIgPSBhbGwoZDIpO1xuICAgICAgTGlzdC5jb25jYXQoXG4gICAgICAgIExpc3QubWFwKGwxID0+IExpc3QubWFwKGwyID0+IExheW91dC5DYXQobDEsIGwyKSwgbHMyKSwgbHMxKSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT4gW0xheW91dC5MaW5lYnJlYWtdXG4gICAgfCBBbGlnbihkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5BbGlnbihsKSwgYWxsKGQpKVxuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFubm90KGFubm90LCBsKSwgYWxsKGQpKVxuICAgIHwgRmFpbCA9PiBbXVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gYWxsKGQxKSBAIGFsbChkMilcbiAgICB9O1xuICB9O1xufTtcblxuLy8gTm90ZTogVGhpcyB1bmlvbiBpcyBsZWZ0IGJpYXNlZFxubGV0IG0nX3VuaW9uOiAnYS4gKERvYy5tJygnYSksIERvYy5tJygnYSkpID0+IERvYy5tJygnYSkgPVxuICAocDEsIHAyKSA9PiB7XG4gICAgbGV0IGNvc3RfdW5pb24gPSAoKGNvc3QxOiBDb3N0LnQsIF8pIGFzIHQxLCAoY29zdDI6IENvc3QudCwgXykgYXMgdDIpID0+XG4gICAgICBpZiAoQ29zdC5sZXEoY29zdDEsIGNvc3QyKSkge1xuICAgICAgICB0MTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHQyO1xuICAgICAgfTtcbiAgICBQb3NNYXAudW5pb24oY29zdF91bmlvbiwgcDEsIHAyKTtcbiAgfTtcblxubGV0IHJlYyBsYXlvdXRfb2ZfZG9jJyA9IChkb2M6IERvYy50KHVuaXQpKTogRG9jLm0oTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgbGV0IGcgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIC8vIFRPRE86IGxpZnQgdGhlIHN3aXRjaChkb2MuZG9jKSBvdXRzaWRlIHRoZSBsYW1iZGFcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgLy8gVE9ETzogY2FjaGUgdGV4dCBsZW5ndGggaW4gVGV4dD9cbiAgICAgIGxldCBwb3MnID0gcG9zICsgU3RyaW5nLmxlbmd0aChzdHJpbmcpOyAvL1VuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICBsZXQgY29zdCA9XG4gICAgICAgIGlmIChwb3MnIDw9IHdpZHRoKSB7XG4gICAgICAgICAgQ29zdC56ZXJvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBvdmVyZmxvdyA9IHBvcycgLSB3aWR0aDtcbiAgICAgICAgICAvLyBvdmVyZmxvd19jb3N0ID0gc3VtIGkgZnJvbSAxIHRvIG92ZXJmbG93XG4gICAgICAgICAgbGV0IG92ZXJmbG93X2Nvc3QgPSBvdmVyZmxvdyAqIChvdmVyZmxvdyArIDEpIC8gMjtcbiAgICAgICAgICBDb3N0Lm1rX292ZXJmbG93KG92ZXJmbG93X2Nvc3QpO1xuICAgICAgICB9O1xuICAgICAgUG9zTWFwLnNpbmdsZXRvbihwb3MnLCAoY29zdCwgTGF5b3V0LlRleHQoc3RyaW5nKSkpO1xuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLmZvbGRfbGVmdChcbiAgICAgICAgKHBvcywgeiwgKGNvc3QxLCBsYXlvdXQxKSkgPT4ge1xuICAgICAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgICAgIGxldCBsYXlvdXRzID1cbiAgICAgICAgICAgIFBvc01hcC5tYXAoXG4gICAgICAgICAgICAgICgoY29zdDIsIGxheW91dDIpKSA9PlxuICAgICAgICAgICAgICAgIChDb3N0LmFkZChjb3N0MSwgY29zdDIpLCBMYXlvdXQuQ2F0KGxheW91dDEsIGxheW91dDIpKSxcbiAgICAgICAgICAgICAgbDIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG0nX3VuaW9uKHosIGxheW91dHMpO1xuICAgICAgICB9LFxuICAgICAgICBQb3NNYXAuZW1wdHksXG4gICAgICAgIGwxLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PlxuICAgICAgUG9zTWFwLnNpbmdsZXRvbigwLCAoQ29zdC5ta19oZWlnaHQoMSksIExheW91dC5MaW5lYnJlYWspKVxuICAgIHwgQWxpZ24oZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGg9d2lkdGggLSBwb3MsIH5wb3M9MCk7XG4gICAgICBQb3NNYXAubWFwayhcbiAgICAgICAgKHAsIChjLCBsKSkgPT4gKHAgKyBwb3MsIChjLCBMYXlvdXQuQWxpZ24obCkpKSxcbiAgICAgICAgbGF5b3V0LFxuICAgICAgKTtcbiAgICB8IEFubm90KGFubm90LCBkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAubWFwKCgoYywgbCkpID0+IChjLCBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpKSwgbGF5b3V0KTtcbiAgICB8IEZhaWwgPT4gUG9zTWFwLmVtcHR5XG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgIG0nX3VuaW9uKGwxLCBsMik7XG4gICAgfTtcbiAgfTtcbiAgbGV0IGggPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIGxldCBrZXkgPSAod2lkdGgsIHBvcyk7XG4gICAgc3dpdGNoIChEb2MuTS5maW5kX29wdChkb2MubWVtLCBrZXkpKSB7XG4gICAgfCBTb21lKHZhbHVlKSA9PiB2YWx1ZVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHZhbHVlID0gZyh+d2lkdGgsIH5wb3MpO1xuICAgICAgRG9jLk0uYWRkKGRvYy5tZW0sIGtleSwgdmFsdWUpO1xuICAgICAgdmFsdWU7XG4gICAgfTtcbiAgfTtcbiAgaDtcbn07XG5cbmxldCBsYXlvdXRfb2ZfZG9jID1cbiAgICAoZG9jOiBEb2MudCgnYW5ub3QpLCB+d2lkdGg6IGludCwgfnBvczogaW50KTogb3B0aW9uKExheW91dC50KCdhbm5vdCkpID0+IHtcbiAgbGV0IHJlYyBtaW5pbXVtID1cbiAgICAgICAgICAoKHBvcywgKGNvc3QsIHQpKTogKGludCwgKENvc3QudCwgb3B0aW9uKCdhKSkpKVxuICAgICAgICAgIDogKGxpc3QoKGludCwgKENvc3QudCwgJ2EpKSkgPT4gb3B0aW9uKCdhKSkgPT4ge1xuICAgIGZ1blxuICAgIHwgW10gPT4gdFxuICAgIHwgWyh4X3BvcywgKHhfY29zdCwgeCkpLCAuLi5yZXN0XSA9PlxuICAgICAgLy8gUHJlZmVyIGxvd2VzdCBjb3N0LCBvciBpZiBzYW1lIGNvc3QsIHByZWZlciBlbmRpbmcgYXQgYW4gZWFybGllciBjb2x1bW5cbiAgICAgIC8vIChDb2x1bW5zIGFyZSB1bmlxdWUgYnkgY29uc3RydWN0aW9uIG9mIFBvc01hcC4pXG4gICAgICBpZiAoQ29zdC5sdCh4X2Nvc3QsIGNvc3QpIHx8IENvc3QuZXEoeF9jb3N0LCBjb3N0KSAmJiB4X3BvcyA8IHBvcykge1xuICAgICAgICBtaW5pbXVtKCh4X3BvcywgKHhfY29zdCwgU29tZSh4KSkpLCByZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltdW0oKHBvcywgKGNvc3QsIHQpKSwgcmVzdCk7XG4gICAgICB9O1xuICB9O1xuICAvLyBUT0RPOiB1c2Ugb3B0aW9ucyBpbnN0ZWFkIG9mIG1heF9pbnRcbiAgLy8gbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICBsZXQgbCA9XG4gICAgbWluaW11bShcbiAgICAgIChtYXhfaW50LCAoQ29zdC5pbmYsIE5vbmUpKSxcbiAgICAgIE9iai5tYWdpYyhsYXlvdXRfb2ZfZG9jJyhPYmoubWFnaWMoZG9jKSwgfndpZHRoLCB+cG9zKSksXG4gICAgKTtcbiAgLy8gbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgLypcbiAgIFByaW50Zi5wcmludGYoXG4gICAgIFwibGF5b3V0X29mX2RvYzogJWQgXFx0JWZcXG5cIixcbiAgICAgLTEsIC8vZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpIyMuc2l6ZSxcbiAgICAgLy9NZW1vaXplLldlYWtQb2x5LlRhYmxlLmxlbmd0aChmc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkpLFxuICAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICAgKTtcbiAgICovXG4gIGw7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKVxuICB8IEhCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IFZCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCBoZWlnaHRfdGJsOiBNZW1vVGJsLnQodCh1bml0KSwgaW50KSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBoZWlnaHQgPSAoYm94OiB0KCdhbm5vdCkpID0+XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSkpIHtcbiAgICB8IFNvbWUoaCkgPT4gaFxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGggPVxuICAgICAgICBzd2l0Y2ggKGJveCkge1xuICAgICAgICB8IFRleHQoXykgPT4gMVxuICAgICAgICB8IEFubm90KF8sIGIpID0+IGhlaWdodChiKVxuICAgICAgICB8IEhCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAxKSAvLyBOb3RlOiAxIGlzIEhCb3goW10pIGhlaWdodFxuICAgICAgICB8IFZCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKVxuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCksIGgpO1xuICAgICAgaDtcbiAgICB9O1xuXG4gIC8vIE5vdGU6IGFubm90cyBhcmUgaW5zaWRlLW91dCAoaS5lLiBMaXN0LmhkKGFubm90cykgaXMgdGhlIGlubmVyLW1vc3QgYW5ub3QpXG4gIGxldCByZWMgYW5ub3QgPSAoYW5ub3RzOiBsaXN0KCdhbm5vdCksIGJveDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKGFubm90cykge1xuICAgIHwgW10gPT4gYm94XG4gICAgfCBbYW5uLCAuLi5hbm5zXSA9PiBhbm5vdChhbm5zLCBBbm5vdChhbm4sIGJveCkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGFwcGVuZF9ib3ggPVxuICAgICAgICAgICh+YW5ub3RzOiBsaXN0KCdhbm5vdCk9W10sIGJveDE6IHQoJ2Fubm90KSwgYm94MjogdCgnYW5ub3QpKVxuICAgICAgICAgIDogdCgnYW5ub3QpID0+XG4gICAgaWYgKGhlaWdodChib3gxKSA8PSAxKSB7XG4gICAgICBIQm94KFthbm5vdChhbm5vdHMsIGJveDEpLCBib3gyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWMgYXBwZW5kX2xhc3QgPSAoYnMxOiBsaXN0KHQoJ2Fubm90KSkpOiBsaXN0KHQoJ2Fubm90KSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGJzMSkge1xuICAgICAgICB8IFtdID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICAgIHwgW2IxXSA9PiBbYXBwZW5kX2JveCh+YW5ub3RzLCBiMSwgYm94MildXG4gICAgICAgIHwgW2IxLCAuLi5iczFdID0+IFthbm5vdChhbm5vdHMsIGIxKSwgLi4uYXBwZW5kX2xhc3QoYnMxKV1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKGJveDEpIHtcbiAgICAgIHwgVGV4dChfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgfCBIQm94KGJzMSkgPT4gSEJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBWQm94KGJzMSkgPT4gVkJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBBbm5vdChhbm5vdCwgYikgPT4gYXBwZW5kX2JveCh+YW5ub3RzPVthbm5vdCwgLi4uYW5ub3RzXSwgYiwgYm94MilcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgYXBwZW5kX2hib3ggPSAoYm94ZXMxOiBsaXN0KHQoJ2Fubm90KSksIGJveGVzMjogbGlzdCh0KCdhbm5vdCkpKSA9PiB7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChib3hlczEpKSB7XG4gICAgfCBOb25lID0+IGJveGVzMlxuICAgIHwgU29tZSgobGVhZGluZywgbGFzdCkpID0+IGxlYWRpbmcgQCBbYXBwZW5kX2JveChsYXN0LCBIQm94KGJveGVzMikpXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgbGV0IG1rID0gKGJveGVzOiBsaXN0KGxpc3QodChfKSkpKSA9PlxuICAgICAgVkJveChMaXN0Lm1hcChyb3cgPT4gSEJveChyb3cpLCBib3hlcykpO1xuICAgIGxldCByZWMgZ28gPSAobDogTGF5b3V0LnQoXykpID0+IHtcbiAgICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICAgIHwgU29tZShib3gpID0+IE9iai5tYWdpYyhib3gpXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGJveCA9XG4gICAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgICAgfCBMaW5lYnJlYWsgPT4gW1tdLCBbXV1cbiAgICAgICAgICB8IFRleHQocykgPT4gW1tUZXh0KHMpXV1cbiAgICAgICAgICB8IEFsaWduKGwpID0+IFtbbWsoZ28obCkpXV1cbiAgICAgICAgICB8IEFubm90KGFubiwgbCkgPT5cbiAgICAgICAgICAgIGdvKGwpIHw+IExpc3QubWFwKHJvdyA9PiBbQW5ub3QoYW5uLCBIQm94KHJvdykpXSlcbiAgICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnbyhsMSkpO1xuICAgICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoZ28obDIpKTtcbiAgICAgICAgICAgIGxlYWRpbmcgQCBbYXBwZW5kX2hib3gobGFzdCwgZmlyc3QpLCAuLi50cmFpbGluZ107XG4gICAgICAgICAgfTtcbiAgICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKGJveCkpO1xuICAgICAgICBib3g7XG4gICAgICB9O1xuICAgIH07XG4gICAgbWsoZ28obCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5QcmltaXRpdmVzO1xuXG4vKlxuICBUaGVzZSBhcmUgdGhlIHN5bnRheCB0ZXN0IGZ1bmN0aW9ucyB1c2VkIGZvciB0aGUgc3ludGF4IHZhbGlkYXRpb25cbiAgc2VjdGlvbiBvZiB0aGUgZXhlcmNpc2VzLiBUaGUgc3ludGF4IHRlc3RzIGFyZSBkZXNpZ25lZCB0b1xuICBlbnN1cmUgdGhhdCB0aGUgdXNlciBpbXBsZW1lbnRhdGlvbiBzYXRpc2ZpZXMgY2VydGFpbiBzeW50YXggcHJvcGVydGllc1xuICBlLmcuIHRhaWwgcmVjdXJzaXZlIGZ1bmN0aW9uIG9yIHZhcmlhYmxlIHVzYWdlLlxuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3ludGF4X3Jlc3VsdCA9IHtcbiAgcmVzdWx0czogbGlzdChib29sKSxcbiAgcGVyY2VudGFnZTogZmxvYXQsXG59O1xuXG5sZXQgcmVjIGZpbmRfdmFyX3VwYXQgPSAobmFtZTogc3RyaW5nLCB1cGF0OiBUZXJtLlVQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1cCkgPT4ge2FjYyB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKX0sIGZhbHNlLCBsKVxuICB8IFBhcmVucyh1cCkgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IFR5cGVBbm4odXAsIF8pID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuICBIZWxwZXIgZnVuY3Rpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZmluZF9mbiB3aGljaCB0YWtlcyB0aGVcbiAgcGF0dGVybiAodXBhdCkgYW5kIHRoZSBkZWZpbml0aW9uIChkZWYpIG9mIGEgbGV0IGV4cHJlc3Npb24gYW5kXG4gIGNvbGxlY3RzIGZ1bmN0aW9ucyBpbiBkZWYgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBpblxuICB1cGF0LiBFeGFtcGxlOiBmb3IgdGhlIGV4cHJlc3Npb24gXCJsZXQgKGEsYikgPSAoZnVuIHggLT4geCsxLCA0MSkgaW5cIlxuICBpZiBuYW1lPVwiYVwiLCB0aGVuIGw9W2Z1biB4IC0+IHgrMV1cbiAqL1xubGV0IHJlYyBmaW5kX2luX2xldCA9XG4gICAgICAgIChcbiAgICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgdXBhdDogVGVybS5VUGF0LnQsXG4gICAgICAgICAgZGVmOiBUZXJtLlVFeHAudCxcbiAgICAgICAgICBsOiBsaXN0KFRlcm0uVUV4cC50KSxcbiAgICAgICAgKVxuICAgICAgICA6IGxpc3QoVGVybS5VRXhwLnQpID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0sIGRlZi50ZXJtKSB7XG4gIHwgKFBhcmVucyh1cCksIFBhcmVucyh1ZSkpID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgbClcbiAgfCAoUGFyZW5zKHVwKSwgXykgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZiwgbClcbiAgfCAoXywgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXBhdCwgdWUsIGwpXG4gIHwgKFR5cGVBbm4odXAsIF8pLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChWYXIoeCksIEZ1bihfKSkgPT4geCA9PSBuYW1lID8gW2RlZiwgLi4ubF0gOiBsXG4gIHwgKFR1cGxlKHBsKSwgVHVwbGUodWwpKSA9PlxuICAgIGlmIChMaXN0Lmxlbmd0aChwbCkgIT0gTGlzdC5sZW5ndGgodWwpKSB7XG4gICAgICBsO1xuICAgIH0gZWxzZSB7XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgIChhY2MsIHVwLCB1ZSkgPT4ge2ZpbmRfaW5fbGV0KG5hbWUsIHVwLCB1ZSwgYWNjKX0sXG4gICAgICAgIGwsXG4gICAgICAgIHBsLFxuICAgICAgICB1bCxcbiAgICAgICk7XG4gICAgfVxuICB8IChWYXIoXyksIF8pXG4gIHwgKFR1cGxlKF8pLCBfKVxuICB8IChcbiAgICAgIEVtcHR5SG9sZSB8IFdpbGQgfCBUcml2IHwgSW52YWxpZChfKSB8IE11bHRpSG9sZShfKSB8IEludChfKSB8IEZsb2F0KF8pIHxcbiAgICAgIEJvb2woXykgfFxuICAgICAgU3RyaW5nKF8pIHxcbiAgICAgIExpc3RMaXQoXykgfFxuICAgICAgQ29uc3RydWN0b3IoXykgfFxuICAgICAgQ29ucyhfLCBfKSB8XG4gICAgICBBcChfLCBfKSxcbiAgICAgIF8sXG4gICAgKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmQgYW55IGZ1bmN0aW9uIGV4cHJlc3Npb25zIGluIHVleHAgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZVxuICovXG5sZXQgcmVjIGZpbmRfZm4gPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCwgbDogbGlzdChUZXJtLlVFeHAudCkpXG4gICAgICAgIDogbGlzdChUZXJtLlVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IExldCh1cCwgZGVmLCBib2R5KSA9PlxuICAgIGwgfD4gZmluZF9pbl9sZXQobmFtZSwgdXAsIGRlZikgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IExpc3RMaXQodWwpXG4gIHwgVHVwbGUodWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdTEpID0+IHtmaW5kX2ZuKG5hbWUsIHUxLCBhY2MpfSwgbCwgdWwpXG4gIHwgVHlwRnVuKF8sIGJvZHkpXG4gIHwgRnVuKF8sIGJvZHkpID0+IGwgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IFR5cEFwKHUxLCBfKVxuICB8IFBhcmVucyh1MSlcbiAgfCBVbk9wKF8sIHUxKVxuICB8IFR5QWxpYXMoXywgXywgdTEpXG4gIHwgVGVzdCh1MSlcbiAgfCBGaWx0ZXIoXywgXywgdTEpID0+IGwgfD4gZmluZF9mbihuYW1lLCB1MSlcbiAgfCBBcCh1MSwgdTIpXG4gIHwgUGlwZWxpbmUodTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpIHw+IGZpbmRfZm4obmFtZSwgdTMpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICBsXG4gICAgfD4gZmluZF9mbihuYW1lLCBmbilcbiAgICB8PiBMaXN0LmZvbGRfbGVmdCgobCwgdSkgPT4gZmluZF9mbihuYW1lLCB1LCBsKSwgXywgYXJncylcbiAgfCBNYXRjaCh1MSwgdWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgdWUpKSA9PiB7ZmluZF9mbihuYW1lLCB1ZSwgYWNjKX0sXG4gICAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpLFxuICAgICAgdWwsXG4gICAgKVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBEZWZlcnJhbChfKVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBldmVyIG1lbnRpb25lZCBpbiB1cGF0LlxuICovXG5sZXQgcmVjIHZhcl9tZW50aW9uX3VwYXQgPSAobmFtZTogc3RyaW5nLCB1cGF0OiBUZXJtLlVQYXQudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDEpIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAyKVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdXApID0+IHthY2MgfHwgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cCl9LFxuICAgICAgZmFsc2UsXG4gICAgICBsLFxuICAgIClcbiAgfCBQYXJlbnModXApID0+IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApXG4gIHwgQXAodXAxLCB1cDIpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDEpIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAyKVxuICB8IFR5cGVBbm4odXAsIF8pID0+IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBldmVyIG1lbnRpb25lZCBpbiB1ZXhwLlxuICovXG5sZXQgcmVjIHZhcl9tZW50aW9uID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBkZWYpIHx8IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVHlwQXAodSwgXylcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcCh1MSwgdTIpXG4gIHwgUGlwZWxpbmUodTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpXG4gIHwgRGVmZXJyZWRBcCh1MSwgdXMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IExpc3QuZXhpc3RzKHZhcl9tZW50aW9uKG5hbWUpLCB1cylcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikgfHwgdmFyX21lbnRpb24obmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgIHx8IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgcGUpID0+IHtcbiAgICAgICAgICAgbGV0IChwLCBlKSA9IHBlO1xuICAgICAgICAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgfHwgdmFyX21lbnRpb24obmFtZSwgZSk7XG4gICAgICAgICB9LFxuICAgICAgICAgZmFsc2UsXG4gICAgICAgICBsLFxuICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGFwcGxpZWQgb24gYW5vdGhlciBleHByZXNzc2lvbi5cbiBpLmUuIEFwKFZhcihuYW1lKSwgdSkgb2NjdXJzIGFueXdoZXJlIGluIHRoZSB1ZXhwLlxuICovXG5sZXQgcmVjIHZhcl9hcHBsaWVkID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBWYXIoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKVxuICAgICAgPyBmYWxzZSA6IHZhcl9hcHBsaWVkKG5hbWUsIGRlZikgfHwgdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBUeXBGdW4oXywgdSlcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgXywgdSkgPT4gdmFyX2FwcGxpZWQobmFtZSwgdSlcbiAgfCBUeXBBcCh1LCBfKSA9PlxuICAgIHN3aXRjaCAodS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IGZhbHNlXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gICAgfVxuICB8IEFwKHUxLCB1MikgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB9XG4gIHwgRGVmZXJyZWRBcCh1MSwgdXMpID0+XG4gICAgc3dpdGNoICh1MS50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IExpc3QuZXhpc3RzKHZhcl9hcHBsaWVkKG5hbWUpLCB1cylcbiAgICB8IF8gPT4gTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIH1cbiAgfCBQaXBlbGluZSh1MSwgdTIpID0+XG4gICAgc3dpdGNoICh1Mi50ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4geCA9PSBuYW1lID8gdHJ1ZSA6IHZhcl9hcHBsaWVkKG5hbWUsIHUxKVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gICAgfVxuICB8IENvbnModTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSByZWN1cnNpdmUuXG4gKi9cbmxldCBpc19yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgaWYgdmFyaWFibGUgbmFtZSBpcyBub3QgbWVudGlvbmVkIGFueXdoZXJlIG91dHNpZGUgb2ZcbiBhIHRhaWwgcG9zaXRpb24gaW4gdWV4cC4gTm90ZSB0aGF0IGlmIHRoZSB2YXJpYWJsZSBpcyBub3RcbiBtZW50aW9uZWQgYW55d2hlcmUgaW4gdGhlIGV4cHJlc3Npb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuXG4gKi9cbmxldCByZWMgdGFpbF9jaGVjayA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgVmFyKF8pID0+IHRydWVcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApIHx8IHZhcl9tZW50aW9uKG5hbWUsIGRlZilcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgLy9JZiBsIGhhcyBubyByZWN1cnNpdmUgY2FsbHMgdGhlbiB0cnVlXG4gICAgIUxpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IFRlc3QoXykgPT4gZmFsc2VcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIF8sIHUpXG4gIHwgVHlwRnVuKF8sIHUpXG4gIHwgVHlwQXAodSwgXylcbiAgfCBQYXJlbnModSkgPT4gdGFpbF9jaGVjayhuYW1lLCB1KVxuICB8IFVuT3AoXywgdSkgPT4gIXZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgQXAodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MikgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTEpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICB0YWlsX2NoZWNrKFxuICAgICAgbmFtZSxcbiAgICAgIHtpZHM6IFtdLCB0ZXJtOiBBcChmbiwge2lkczogW10sIHRlcm06IFR1cGxlKGFyZ3MpfSl9LFxuICAgIClcbiAgfCBQaXBlbGluZSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBTZXEodTEsIHUyKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1MSkgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiAhKHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MikpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSlcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICAgID8gZmFsc2VcbiAgICAgIDogTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgKGFjYywgKHAsIGUpKSA9PiB7XG4gICAgICAgICAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgJiYgdGFpbF9jaGVjayhuYW1lLCBlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBsLFxuICAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSB0YWlsIHJlY3Vyc2l2ZS5cbiAqL1xubGV0IGlzX3RhaWxfcmVjdXJzaXZlID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgY2hlY2sgPVxuICAgICh1ZXhwOiBUZXJtLlVFeHAudCwgcHJlZGljYXRlczogbGlzdChUZXJtLlVFeHAudCA9PiBib29sKSk6IHN5bnRheF9yZXN1bHQgPT4ge1xuICBsZXQgcmVzdWx0cyA9IExpc3QubWFwKHByZWQgPT4ge3VleHAgfD4gcHJlZH0sIHByZWRpY2F0ZXMpO1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgocHJlZGljYXRlcyk7XG4gIGxldCBwYXNzaW5nID0gVXRpbC5MaXN0VXRpbC5jb3VudF9wcmVkKHJlcyA9PiByZXMsIHJlc3VsdHMpO1xuXG4gIHtcbiAgICByZXN1bHRzLFxuICAgIHBlcmNlbnRhZ2U6XG4gICAgICAvL3ZhY3VvdXNseSBwYXNzZXMgaWYgdGhlcmUgYXJlIG5vIHRlc3RzXG4gICAgICBsZW5ndGggPT0gMCA/IDEuIDogZmxvYXRfb2ZfaW50KHBhc3NpbmcpIC8uIGZsb2F0X29mX2ludChsZW5ndGgpLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwcmVkaWNhdGUgPVxuICB8IFZhckFwcGxpZWQoc3RyaW5nKVxuICB8IElzUmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc05vdFJlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKHN0cmluZyk7XG5cbmxldCBwcmVkaWNhdGVfZm4gPSBwcmVkaWNhdGUgPT4ge1xuICBzd2l0Y2ggKHByZWRpY2F0ZSkge1xuICB8IFZhckFwcGxpZWQobmFtZSkgPT4gdmFyX2FwcGxpZWQobmFtZSlcbiAgfCBJc1JlY3Vyc2l2ZShuYW1lKSA9PiBpc19yZWN1cnNpdmUobmFtZSlcbiAgfCBJc05vdFJlY3Vyc2l2ZShuYW1lKSA9PiAodWV4cCA9PiAhaXNfcmVjdXJzaXZlKG5hbWUsIHVleHApKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShuYW1lKSA9PiBpc190YWlsX3JlY3Vyc2l2ZShuYW1lKVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5QcmltaXRpdmVzO1xuXG5tb2R1bGUgdHlwZSBFeGVyY2lzZUVudiA9IHtcbiAgdHlwZSBub2RlO1xuICBsZXQgZGVmYXVsdDogbm9kZTtcbiAgbGV0IG91dHB1dF9oZWFkZXI6IHN0cmluZyA9PiBzdHJpbmc7XG59O1xuXG5sZXQgb3V0cHV0X2hlYWRlcl9ncmFkaW5nID0gX21vZHVsZV9uYW1lID0+XG4gIFwibW9kdWxlIEV4ZXJjaXNlID0gR3JhZGVQcmVsdWRlLkV4ZXJjaXNlXFxuXCIgKysgXCJsZXQgcHJvbXB0ID0gKClcXG5cIjtcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlRW52KSA9PiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB3cm9uZ19pbXBsKCdjb2RlKSA9IHtcbiAgICBpbXBsOiAnY29kZSxcbiAgICBoaW50OiBzdHJpbmcsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZGRlbl90ZXN0cygnY29kZSkgPSB7XG4gICAgdGVzdHM6ICdjb2RlLFxuICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpbnQgPSBzdHJpbmc7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0ID0gKGhpbnQsIFN5bnRheFRlc3QucHJlZGljYXRlKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3ludGF4X3Rlc3RzID0gbGlzdChzeW50YXhfdGVzdCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHlvdXJfdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICByZXF1aXJlZDogaW50LFxuICAgIHByb3ZpZGVkOiBpbnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50X2Rpc3RyaWJ1dGlvbiA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246IGludCxcbiAgICBtdXRhdGlvbl90ZXN0aW5nOiBpbnQsXG4gICAgaW1wbF9ncmFkaW5nOiBpbnQsXG4gIH07XG5cbiAgbGV0IHZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICAoe3Rlc3RfdmFsaWRhdGlvbiwgbXV0YXRpb25fdGVzdGluZywgaW1wbF9ncmFkaW5nfTogcG9pbnRfZGlzdHJpYnV0aW9uKSA9PlxuICAgIHRlc3RfdmFsaWRhdGlvbiArIG11dGF0aW9uX3Rlc3RpbmcgKyBpbXBsX2dyYWRpbmcgPT0gMTAwXG4gICAgICA/ICgpIDogZmFpbHdpdGgoXCJJbnZhbGlkIHBvaW50IGRpc3RyaWJ1dGlvbiBpbiBleGVyY2lzZS5cIik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHAoJ2NvZGUpID0ge1xuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogaW50LFxuICAgIG1vZHVsZV9uYW1lOiBzdHJpbmcsXG4gICAgcHJvbXB0OlxuICAgICAgW0BwcmludGVyIChmbXQsIF8pID0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcInByb21wdFwiKV0gW0BvcGFxdWVdIEV4ZXJjaXNlRW52Lm5vZGUsXG4gICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgIHByZWx1ZGU6ICdjb2RlLFxuICAgIGNvcnJlY3RfaW1wbDogJ2NvZGUsXG4gICAgeW91cl90ZXN0czogeW91cl90ZXN0cygnY29kZSksXG4gICAgeW91cl9pbXBsOiAnY29kZSxcbiAgICBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKCdjb2RlKSksXG4gICAgaGlkZGVuX3Rlc3RzOiBoaWRkZW5fdGVzdHMoJ2NvZGUpLFxuICAgIHN5bnRheF90ZXN0cyxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUga2V5ID0gKHN0cmluZywgaW50KTtcblxuICBsZXQga2V5X29mID0gcCA9PiB7XG4gICAgKHAudGl0bGUsIHAudmVyc2lvbik7XG4gIH07XG5cbiAgbGV0IGZpbmRfa2V5X29wdCA9IChrZXksIHNwZWNzOiBsaXN0KHAoJ2NvZGUpKSkgPT4ge1xuICAgIHNwZWNzIHw+IFV0aWwuTGlzdFV0aWwuZmluZGlfb3B0KHNwZWMgPT4ga2V5X29mKHNwZWMpID09IGtleSk7XG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvcyA9XG4gICAgfCBQcmVsdWRlXG4gICAgfCBDb3JyZWN0SW1wbFxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZ1xuICAgIHwgWW91ckltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaW50KVxuICAgIHwgSGlkZGVuVGVzdHM7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHNwZWMgPSBwKFppcHBlci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHJhbnNpdGlvbmFyeV9zcGVjID0gcChDb2RlU3RyaW5nLnQpO1xuXG4gIGxldCBtYXAgPSAocDogcCgnYSksIGY6ICdhID0+ICdiKTogcCgnYikgPT4ge1xuICAgIHtcbiAgICAgIHRpdGxlOiBwLnRpdGxlLFxuICAgICAgdmVyc2lvbjogcC52ZXJzaW9uLFxuICAgICAgbW9kdWxlX25hbWU6IHAubW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQ6IHAucHJvbXB0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBwLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGU6IGYocC5wcmVsdWRlKSxcbiAgICAgIGNvcnJlY3RfaW1wbDogZihwLmNvcnJlY3RfaW1wbCksXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBmKHAueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICAgIHJlcXVpcmVkOiBwLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgIHByb3ZpZGVkOiBwLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9LFxuICAgICAgeW91cl9pbXBsOiBmKHAueW91cl9pbXBsKSxcbiAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICBwLmhpZGRlbl9idWdzXG4gICAgICAgIHw+IExpc3QubWFwKHdyb25nX2ltcGwgPT4ge1xuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIGltcGw6IFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdCh3cm9uZ19pbXBsLmltcGwpLFxuICAgICAgICAgICAgICAgaGludDogd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgfSksXG4gICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChwLmhpZGRlbl90ZXN0cy50ZXN0cyksXG4gICAgICAgIGhpbnRzOiBwLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgIH0sXG4gICAgICBzeW50YXhfdGVzdHM6IHAuc3ludGF4X3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGVkcyA9IHAoRWRpdG9yLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzdGF0ZSA9IHtcbiAgICBwb3MsXG4gICAgZWRzLFxuICB9O1xuXG4gIGxldCBrZXlfb2Zfc3RhdGUgPSAoe2VkcywgX30pID0+IGtleV9vZihlZHMpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50X3N0YXRlID0gKHBvcywgbGlzdCgocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnQpKSk7XG5cbiAgbGV0IGVkaXRvcl9vZl9zdGF0ZTogc3RhdGUgPT4gRWRpdG9yLnQgPVxuICAgICh7cG9zLCBlZHMsIF99KSA9PlxuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgIHwgUHJlbHVkZSA9PiBlZHMucHJlbHVkZVxuICAgICAgfCBDb3JyZWN0SW1wbCA9PiBlZHMuY29ycmVjdF9pbXBsXG4gICAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiBlZHMueW91cl90ZXN0cy50ZXN0c1xuICAgICAgfCBZb3VySW1wbCA9PiBlZHMueW91cl9pbXBsXG4gICAgICB8IEhpZGRlbkJ1Z3MoaSkgPT4gTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBpKS5pbXBsXG4gICAgICB8IEhpZGRlblRlc3RzID0+IGVkcy5oaWRkZW5fdGVzdHMudGVzdHNcbiAgICAgIH07XG5cbiAgbGV0IHB1dF9lZGl0b3IgPSAoe3BvcywgZWRzLCBffSBhcyBzdGF0ZTogc3RhdGUsIGVkaXRvcjogRWRpdG9yLnQpID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHByZWx1ZGU6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IENvcnJlY3RJbXBsID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBjb3JyZWN0X2ltcGw6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy55b3VyX3Rlc3RzLFxuICAgICAgICAgICAgdGVzdHM6IGVkaXRvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91ckltcGwgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuQnVncyhuKSA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgICBVdGlsLkxpc3RVdGlsLnB1dF9udGgoXG4gICAgICAgICAgICAgIG4sXG4gICAgICAgICAgICAgIHsuLi5MaXN0Lm50aChlZHMuaGlkZGVuX2J1Z3MsIG4pLCBpbXBsOiBlZGl0b3J9LFxuICAgICAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICAgICAgLi4uZWRzLmhpZGRlbl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCBlZGl0b3JzID0gKHtlZHMsIF99OiBzdGF0ZSkgPT5cbiAgICBbXG4gICAgICBlZHMucHJlbHVkZSxcbiAgICAgIGVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgZWRzLnlvdXJfaW1wbCxcbiAgICBdXG4gICAgQCBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHdyb25nX2ltcGwuaW1wbCwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW2Vkcy5oaWRkZW5fdGVzdHMudGVzdHNdO1xuXG4gIGxldCBlZGl0b3JfcG9zaXRpb25zID0gKHtlZHMsIF99OiBzdGF0ZSkgPT5cbiAgICBbUHJlbHVkZSwgQ29ycmVjdEltcGwsIFlvdXJUZXN0c1Rlc3RpbmcsIFlvdXJUZXN0c1ZhbGlkYXRpb24sIFlvdXJJbXBsXVxuICAgIEAgTGlzdC5tYXBpKChpLCBfKSA9PiBIaWRkZW5CdWdzKGkpLCBlZHMuaGlkZGVuX2J1Z3MpXG4gICAgQCBbSGlkZGVuVGVzdHNdO1xuXG4gIGxldCBwb3NpdGlvbmVkX2VkaXRvcnMgPSBzdGF0ZSA9PlxuICAgIExpc3QuY29tYmluZShlZGl0b3JfcG9zaXRpb25zKHN0YXRlKSwgZWRpdG9ycyhzdGF0ZSkpO1xuXG4gIGxldCBpZHhfb2ZfcG9zID0gKHBvcywgcDogcCgnY29kZSkpID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gMFxuICAgIHwgQ29ycmVjdEltcGwgPT4gMVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiAyXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IDNcbiAgICB8IFlvdXJJbXBsID0+IDRcbiAgICB8IEhpZGRlbkJ1Z3MoaSkgPT5cbiAgICAgIGlmIChpIDwgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgNSArIGk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWlsd2l0aChcImludmFsaWQgaGlkZGVuIGJ1ZyBpbmRleFwiKTtcbiAgICAgIH1cbiAgICB8IEhpZGRlblRlc3RzID0+IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKVxuICAgIH07XG5cbiAgbGV0IHBvc19vZl9pZHggPSAocDogcCgnY29kZSksIGlkeDogaW50KSA9PlxuICAgIHN3aXRjaCAoaWR4KSB7XG4gICAgfCAwID0+IFByZWx1ZGVcbiAgICB8IDEgPT4gQ29ycmVjdEltcGxcbiAgICB8IDIgPT4gWW91clRlc3RzVGVzdGluZ1xuICAgIHwgMyA9PiBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCA0ID0+IFlvdXJJbXBsXG4gICAgfCBfID0+XG4gICAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgICBmYWlsd2l0aChcIm5lZ2F0aXZlIGlkeFwiKTtcbiAgICAgIH0gZWxzZSBpZiAoaWR4IDwgNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlbkJ1Z3MoaWR4IC0gNSk7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA9PSA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgSGlkZGVuVGVzdHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmYWlsd2l0aChcImVsZW1lbnQgaWR4XCIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IHN3aXRjaF9lZGl0b3IgPSAofnBvcywgaW5zdHJ1Y3Rvcl9tb2RlLCB+ZXhlcmNpc2UpID0+XG4gICAgaWYgKCFpbnN0cnVjdG9yX21vZGUpIHtcbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICB8IEhpZGRlblRlc3RzXG4gICAgICB8IEhpZGRlbkJ1Z3MoXykgPT4gZXhlcmNpc2VcbiAgICAgIHwgXyA9PiB7ZWRzOiBleGVyY2lzZS5lZHMsIHBvc31cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHtlZHM6IGV4ZXJjaXNlLmVkcywgcG9zfTtcbiAgICB9O1xuXG4gIGxldCB6aXBwZXJfb2ZfY29kZSA9IGNvZGUgPT4ge1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gICAgfCBOb25lID0+IGZhaWx3aXRoKFwiVHJhbnNpdGlvbiBmYWlsZWQuXCIpXG4gICAgfCBTb21lKHppcHBlcikgPT4gemlwcGVyXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbjogdHJhbnNpdGlvbmFyeV9zcGVjID0+IHNwZWMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IHppcHBlcl9vZl9jb2RlKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IHppcHBlcl9vZl9jb2RlKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUoeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gemlwcGVyX29mX2NvZGUoeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltcGwgPSB6aXBwZXJfb2ZfY29kZShpbXBsKTtcbiAgICAgICAgICAgIGFjYyBAIFt7aW1wbCwgaGludH1dO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBlZHNfb2Zfc3BlYyA9XG4gICAgICAoXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICAgIHByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgIClcbiAgICAgIDogZWRzID0+IHtcbiAgICBsZXQgZWRpdG9yX29mX3NlcmlhbGl6YXRpb24gPSBFZGl0b3IuaW5pdCh+c2V0dGluZ3MpO1xuICAgIGxldCBwcmVsdWRlID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24ocHJlbHVkZSk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGNvcnJlY3RfaW1wbCk7XG4gICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICB9O1xuICAgIGxldCB5b3VyX2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih5b3VyX2ltcGwpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXAoKHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICBsZXQgaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGltcGwpO1xuICAgICAgICAgICB7aW1wbCwgaGludH07XG4gICAgICAgICB9KTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgbGV0IHRlc3RzID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24odGVzdHMpO1xuICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgfTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzLFxuICAgICAgeW91cl9pbXBsLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICBzeW50YXhfdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICAvL1xuICAvLyBPbGQgdmVyc2lvbiBvZiBhYm92ZSB0aGF0IGRpZCBzdHJpbmctYmFzZWQgcGFyc2luZywgbWF5IGJlIHVzZWZ1bFxuICAvLyBmb3IgdHJhbnNpdGlvbnMgYmV0d2VlbiB6aXBwZXIgZGF0YSBzdHJ1Y3R1cmUgdmVyc2lvbnMgKFRPRE8pXG4gIC8vXG4gIC8vIGxldCBlZGl0b3Jfb2ZfY29kZSA9IChpbml0X2lkLCBjb2RlKSA9PlxuICAvLyAgIHN3aXRjaCAoRWRpdG9yVXRpbC5lZGl0b3Jfb2ZfY29kZShpbml0X2lkLCBjb2RlKSkge1xuICAvLyAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIkV4ZXJjaXNlIGVycm9yOiBpbnZhbGlkIGNvZGVcIilcbiAgLy8gICB8IFNvbWUoeCkgPT4geFxuICAvLyAgIH07XG4gIC8vIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAvLyAgIChcbiAgLy8gICAgIHtcbiAgLy9cbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH0sXG4gIC8vICAgKSA9PiB7XG4gIC8vICAgICBsZXQgaWQgPSBuZXh0X2lkO1xuICAvLyAgICAgbGV0IChpZCwgcHJlbHVkZSkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgcHJlbHVkZSk7XG4gIC8vICAgICBsZXQgKGlkLCBjb3JyZWN0X2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGNvcnJlY3RfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfdGVzdHMudGVzdHMpO1xuICAvLyAgICAgICAoXG4gIC8vICAgICAgICAgaWQsXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgdGVzdHMsXG4gIC8vICAgICAgICAgICBudW1fcmVxdWlyZWQ6IHlvdXJfdGVzdHMubnVtX3JlcXVpcmVkLFxuICAvLyAgICAgICAgICAgbWluaW11bTogeW91cl90ZXN0cy5taW5pbXVtLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9O1xuICAvLyAgICAgbGV0IChpZCwgeW91cl9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX2J1Z3MpID1cbiAgLy8gICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gIC8vICAgICAgICAgKChpZCwgYWNjKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gIC8vICAgICAgICAgICBsZXQgKGlkLCBpbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBpbXBsKTtcbiAgLy8gICAgICAgICAgIChpZCwgYWNjIEAgW3tpbXBsLCBoaW50fV0pO1xuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAgKGlkLCBbXSksXG4gIC8vICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgICk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB0ZXN0cyk7XG4gIC8vICAgICAgIChpZCwge3Rlc3RzLCBoaW50c30pO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbmV4dF9pZDogaWQsXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9O1xuICAvLyAgIH07XG5cbiAgbGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoe2VkcywgX30gYXMgc3RhdGU6IHN0YXRlLCBuZXdfbW9kZTogYm9vbCkgPT4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVkczoge1xuICAgICAgLi4uZWRzLFxuICAgICAgcHJlbHVkZTogRWRpdG9yLnNldF9yZWFkX29ubHkoZWRzLnByZWx1ZGUsICFuZXdfbW9kZSksXG4gICAgfSxcbiAgfTtcblxuICBsZXQgdmlzaWJsZV9pbiA9IChwb3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0cnVlXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGZhbHNlXG4gICAgfCBZb3VySW1wbCA9PiB0cnVlXG4gICAgfCBIaWRkZW5CdWdzKF8pID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGVfb2Zfc3BlYyA9XG4gICAgICAoc3BlYywgfmluc3RydWN0b3JfbW9kZTogYm9vbCwgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCk6IHN0YXRlID0+IHtcbiAgICBsZXQgZWRzID0gZWRzX29mX3NwZWMofnNldHRpbmdzLCBzcGVjKTtcbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKHtwb3M6IFlvdXJJbXBsLCBlZHN9LCBpbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlID1cbiAgICAgICh7cG9zLCBffSBhcyBzdGF0ZTogc3RhdGUsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpID0+IHtcbiAgICBsZXQgemlwcGVycyA9XG4gICAgICBwb3NpdGlvbmVkX2VkaXRvcnMoc3RhdGUpXG4gICAgICB8PiBMaXN0LmZpbHRlcigoKHBvcywgXykpID0+IHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSlcbiAgICAgIHw+IExpc3QubWFwKCgocG9zLCBlZGl0b3IpKSA9PiB7XG4gICAgICAgICAgIChwb3MsIFBlcnNpc3RlbnRaaXBwZXIucGVyc2lzdChFZGl0b3IuKGVkaXRvci5zdGF0ZS56aXBwZXIpKSlcbiAgICAgICAgIH0pO1xuICAgIChwb3MsIHppcHBlcnMpO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3Rfc3RhdGUgPVxuICAgICAgKFxuICAgICAgICAocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpOiBwZXJzaXN0ZW50X3N0YXRlLFxuICAgICAgICB+c3BlYzogc3BlYyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZTogYm9vbCxcbiAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgIClcbiAgICAgIDogc3RhdGUgPT4ge1xuICAgIGxldCBsb29rdXAgPSAocG9zLCBkZWZhdWx0KSA9PlxuICAgICAgaWYgKHZpc2libGVfaW4ocG9zLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICBsZXQgcGVyc2lzdGVkX3ppcHBlciA9IExpc3QuYXNzb2MocG9zLCBwb3NpdGlvbmVkX3ppcHBlcnMpO1xuICAgICAgICBsZXQgemlwcGVyID0gUGVyc2lzdGVudFppcHBlci51bnBlcnNpc3QocGVyc2lzdGVkX3ppcHBlcik7XG4gICAgICAgIEVkaXRvci5pbml0KHppcHBlciwgfnNldHRpbmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEVkaXRvci5pbml0KGRlZmF1bHQsIH5zZXR0aW5ncyk7XG4gICAgICB9O1xuICAgIGxldCBwcmVsdWRlID0gbG9va3VwKFByZWx1ZGUsIHNwZWMucHJlbHVkZSk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IGxvb2t1cChDb3JyZWN0SW1wbCwgc3BlYy5jb3JyZWN0X2ltcGwpO1xuICAgIGxldCB5b3VyX3Rlc3RzX3Rlc3RzID0gbG9va3VwKFlvdXJUZXN0c1ZhbGlkYXRpb24sIHNwZWMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHlvdXJfaW1wbCA9IGxvb2t1cChZb3VySW1wbCwgc3BlYy55b3VyX2ltcGwpO1xuICAgIGxldCAoXywgaGlkZGVuX2J1Z3MpID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAoKGksIGhpZGRlbl9idWdzOiBsaXN0KHdyb25nX2ltcGwoRWRpdG9yLnQpKSksIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgIGxldCBpbXBsID0gbG9va3VwKEhpZGRlbkJ1Z3MoaSksIGltcGwpO1xuICAgICAgICAgIChpICsgMSwgaGlkZGVuX2J1Z3MgQCBbe2ltcGwsIGhpbnR9XSk7XG4gICAgICAgIH0sXG4gICAgICAgICgwLCBbXSksXG4gICAgICAgIHNwZWMuaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVzdHMgPSBsb29rdXAoSGlkZGVuVGVzdHMsIHNwZWMuaGlkZGVuX3Rlc3RzLnRlc3RzKTtcblxuICAgIHNldF9pbnN0cnVjdG9yX21vZGUoXG4gICAgICB7XG4gICAgICAgIHBvcyxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgdGl0bGU6IHNwZWMudGl0bGUsXG4gICAgICAgICAgdmVyc2lvbjogc3BlYy52ZXJzaW9uLFxuICAgICAgICAgIG1vZHVsZV9uYW1lOiBzcGVjLm1vZHVsZV9uYW1lLFxuICAgICAgICAgIHByb21wdDogc3BlYy5wcm9tcHQsXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uOiBzcGVjLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICBwcmVsdWRlLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogeW91cl90ZXN0c190ZXN0cyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBzcGVjLnlvdXJfdGVzdHMucmVxdWlyZWQsXG4gICAgICAgICAgICBwcm92aWRlZDogc3BlYy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICAgICAgdGVzdHM6IGhpZGRlbl90ZXN0c190ZXN0cyxcbiAgICAgICAgICAgIGhpbnRzOiBzcGVjLmhpZGRlbl90ZXN0cy5oaW50cyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN5bnRheF90ZXN0czogc3BlYy5zeW50YXhfdGVzdHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICk7XG4gIH07XG5cbiAgLy8gIyBTdGl0Y2hpbmdcblxuICB0eXBlIHN0aXRjaGVkKCdhKSA9IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb246ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgeW91cl90ZXN0c1xuICAgIHVzZXJfaW1wbDogJ2EsIC8vIHByZWx1ZGUgKyB5b3VyX2ltcGxcbiAgICB1c2VyX3Rlc3RzOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbCArIHlvdXJfdGVzdHNcbiAgICBwcmVsdWRlOiAnYSwgLy8gcHJlbHVkZVxuICAgIGluc3RydWN0b3I6ICdhLCAvLyBwcmVsdWRlICsgY29ycmVjdF9pbXBsICsgaGlkZGVuX3Rlc3RzLnRlc3RzIC8vIFRPRE8gb25seSBuZWVkcyB0byBydW4gaW4gaW5zdHJ1Y3RvciBtb2RlXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3QoJ2EpLCAvLyBwcmVsdWRlICsgaGlkZGVuX2J1Z3NbaV0uaW1wbCArIHlvdXJfdGVzdHMsXG4gICAgaGlkZGVuX3Rlc3RzOiAnYSxcbiAgfTtcblxuICBsZXQgd3JhcF9maWx0ZXIgPSAoYWN0OiBGaWx0ZXJBY3Rpb24uYWN0aW9uLCB0ZXJtOiBUZXJtLlVFeHAudCk6IFRlcm0uVUV4cC50ID0+XG4gICAgVGVybUJhc2UuVUV4cC57XG4gICAgICB0ZXJtOlxuICAgICAgICBUZXJtQmFzZS5VRXhwLkZpbHRlcihcbiAgICAgICAgICBGaWx0ZXJBY3Rpb24uKGFjdCwgT25lKSxcbiAgICAgICAgICB7dGVybTogQ29uc3RydWN0b3IoXCIkZVwiKSwgaWRzOiBbSWQubWsoKV19LFxuICAgICAgICAgIHRlcm0sXG4gICAgICAgICksXG4gICAgICBpZHM6IFtJZC5taygpXSxcbiAgICB9O1xuXG4gIGxldCB0ZXJtX29mID0gKGVkaXRvcjogRWRpdG9yLnQpOiBUZXJtLlVFeHAudCA9PlxuICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuXG4gIGxldCBzdGl0Y2gzID0gKGVkMTogRWRpdG9yLnQsIGVkMjogRWRpdG9yLnQsIGVkMzogRWRpdG9yLnQpID0+XG4gICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKFxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHRlcm1fb2YoZWQxKSwgdGVybV9vZihlZDIpKSxcbiAgICAgIHRlcm1fb2YoZWQzKSxcbiAgICApO1xuXG4gIGxldCBzdGl0Y2hfdGVybSA9ICh7ZWRzLCBffTogc3RhdGUpOiBzdGl0Y2hlZChUZXJtQmFzZS5VRXhwLnQpID0+IHtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPSB7XG4gICAgICBsZXQgeW91cl9pbXBsX3Rlcm0gPVxuICAgICAgICBlZHMueW91cl9pbXBsIHw+IHRlcm1fb2YgfD4gd3JhcF9maWx0ZXIoRmlsdGVyQWN0aW9uLlN0ZXApO1xuICAgICAgbGV0IHByZWx1ZGVfdGVybSA9XG4gICAgICAgIGVkcy5wcmVsdWRlIHw+IHRlcm1fb2YgfD4gd3JhcF9maWx0ZXIoRmlsdGVyQWN0aW9uLkV2YWwpO1xuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHByZWx1ZGVfdGVybSwgeW91cl9pbXBsX3Rlcm0pO1xuICAgIH07XG4gICAgbGV0IHRlc3RfdmFsaWRhdGlvbl90ZXJtID1cbiAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIGVkcy5jb3JyZWN0X2ltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgdXNlcl90ZXN0c190ZXJtID1cbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh1c2VyX2ltcGxfdGVybSwgdGVybV9vZihlZHMueW91cl90ZXN0cy50ZXN0cykpO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLmhpZGRlbl90ZXN0cy50ZXN0cykpO1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbjogdGVzdF92YWxpZGF0aW9uX3Rlcm0sXG4gICAgICB1c2VyX2ltcGw6IHVzZXJfaW1wbF90ZXJtLFxuICAgICAgdXNlcl90ZXN0czogdXNlcl90ZXN0c190ZXJtLFxuICAgICAgLy8gaW5zdHJ1Y3RvciB3b3JrcyBoZXJlIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgcHJlbHVkZTogaW5zdHJ1Y3RvcixcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgKHQpOiBUZXJtQmFzZS5VRXhwLnQgPT5cbiAgICAgICAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIHQuaW1wbCwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzX3Rlcm0sXG4gICAgfTtcbiAgfTtcbiAgbGV0IHN0aXRjaF90ZXJtID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX3Rlcm0pO1xuXG4gIHR5cGUgc3RpdGNoZWRfc3RhdGljcyA9IHN0aXRjaGVkKEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpO1xuXG4gIC8qIE11bHRpcGxlIHN0aXRjaGluZ3MgYXJlIG5lZWRlZCBmb3IgZWFjaCBleGVyY2lzZVxuICAgICAoc2VlIGNvbW1lbnRzIGluIHRoZSBzdGl0Y2hlZCB0eXBlIGFib3ZlKVxuXG4gICAgIFN0aXRjaGluZyBpcyBuZWNlc3NhcnkgdG8gY29uY2F0ZW5hdGUgdGVybXNcbiAgICAgZnJvbSBkaWZmZXJlbnQgZWRpdG9ycywgd2hpY2ggYXJlIHRoZW4gdHlwZWNoZWNrZWQuICovXG4gIGxldCBzdGl0Y2hfc3RhdGljID1cbiAgICAgIChzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIHQ6IHN0aXRjaGVkKFRlcm1CYXNlLlVFeHAudCkpXG4gICAgICA6IHN0aXRjaGVkX3N0YXRpY3MgPT4ge1xuICAgIGxldCBtayA9ICh0ZXJtOiBUZXJtQmFzZS5VRXhwLnQpOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50ID0+IHtcbiAgICAgIC8vTk9URTogdGhpcyBpcyBleHBlbnNpdmUgYW5kIF9hbG1vc3RfIHJlZHVuZGFudCB0byB0aGUgc3RhdGljcyBpbiBFZGl0b3JcbiAgICAgIGxldCBpbmZvX21hcCA9IFN0YXRpY3MubWsoc2V0dGluZ3MsIEJ1aWx0aW5zLmN0eF9pbml0LCB0ZXJtKTtcbiAgICAgIHt0ZXJtLCBlcnJvcl9pZHM6IFN0YXRpY3MuTWFwLmVycm9yX2lkcyhpbmZvX21hcCksIGluZm9fbWFwfTtcbiAgICB9O1xuICAgIGxldCBpbnN0cnVjdG9yID0gbWsodC5pbnN0cnVjdG9yKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IG1rKHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgIHVzZXJfaW1wbDogbWsodC51c2VyX2ltcGwpLFxuICAgICAgdXNlcl90ZXN0czogbWsodC51c2VyX3Rlc3RzKSxcbiAgICAgIHByZWx1ZGU6IGluc3RydWN0b3IsIC8vIHdvcmtzIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzOiBMaXN0Lm1hcChtaywgdC5oaWRkZW5fYnVncyksXG4gICAgICBoaWRkZW5fdGVzdHM6IG1rKHQuaGlkZGVuX3Rlc3RzKSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfc3RhdGljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX3N0YXRpYyk7XG5cbiAgbGV0IHByZWx1ZGVfa2V5ID0gXCJwcmVsdWRlXCI7XG4gIGxldCB0ZXN0X3ZhbGlkYXRpb25fa2V5ID0gXCJ0ZXN0X3ZhbGlkYXRpb25cIjtcbiAgbGV0IHVzZXJfaW1wbF9rZXkgPSBcInVzZXJfaW1wbFwiO1xuICBsZXQgdXNlcl90ZXN0c19rZXkgPSBcInVzZXJfdGVzdHNcIjtcbiAgbGV0IGluc3RydWN0b3Jfa2V5ID0gXCJpbnN0cnVjdG9yXCI7XG4gIGxldCBoaWRkZW5fYnVnc19rZXkgPSBuID0+IFwiaGlkZGVuX2J1Z3NfXCIgKysgc3RyaW5nX29mX2ludChuKTtcbiAgbGV0IGhpZGRlbl90ZXN0c19rZXkgPSBcImhpZGRlbl90ZXN0c1wiO1xuXG4gIGxldCBrZXlfZm9yX3N0YXRpY3MgPSAoc3RhdGU6IHN0YXRlKTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChzdGF0ZS5wb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcHJlbHVkZV9rZXlcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3Jfa2V5XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRlc3RfdmFsaWRhdGlvbl9rZXlcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gdXNlcl90ZXN0c19rZXlcbiAgICB8IFlvdXJJbXBsID0+IHVzZXJfaW1wbF9rZXlcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBoaWRkZW5fYnVnc19rZXkoaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaGlkZGVuX3Rlc3RzX2tleVxuICAgIH07XG5cbiAgbGV0IHNwbGljZWRfZWxhYnMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBESEV4cC50KSkgPT4ge1xuICAgIGxldCB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgcHJlbHVkZTogXyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9ID1cbiAgICAgIHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgbGV0IGVsYWIgPSAoczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgIEludGVyZmFjZS5lbGFib3JhdGUofnNldHRpbmdzLCBzLmluZm9fbWFwLCBzLnRlcm0pO1xuICAgIFtcbiAgICAgICh0ZXN0X3ZhbGlkYXRpb25fa2V5LCBlbGFiKHRlc3RfdmFsaWRhdGlvbikpLFxuICAgICAgKHVzZXJfaW1wbF9rZXksIGVsYWIodXNlcl9pbXBsKSksXG4gICAgICAodXNlcl90ZXN0c19rZXksIGVsYWIodXNlcl90ZXN0cykpLFxuICAgICAgKGluc3RydWN0b3Jfa2V5LCBlbGFiKGluc3RydWN0b3IpKSxcbiAgICAgIChoaWRkZW5fdGVzdHNfa2V5LCBlbGFiKGhpZGRlbl90ZXN0cykpLFxuICAgIF1cbiAgICBAIChcbiAgICAgIGhpZGRlbl9idWdzXG4gICAgICB8PiBMaXN0Lm1hcGkoKG4sIGhpZGRlbl9idWc6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICAgICAgIChoaWRkZW5fYnVnc19rZXkobiksIGVsYWIoaGlkZGVuX2J1ZykpXG4gICAgICAgICApXG4gICAgKTtcbiAgfTtcblxuICBtb2R1bGUgRHluYW1pY3NJdGVtID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQsXG4gICAgICByZXN1bHQ6IE1vZGVsUmVzdWx0LnQsXG4gICAgfTtcbiAgICBsZXQgZW1wdHk6IHQgPSB7c3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MuZW1wdHksIHJlc3VsdDogTm9FbGFifTtcbiAgICBsZXQgc3RhdGljc19vbmx5ID0gKHN0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpOiB0ID0+IHtcbiAgICAgIHN0YXRpY3MsXG4gICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGF0aWNzX29mX3N0aWNoZWRfZHluYW1pY3MgPVxuICAgICAgKHN0YXRlOiBzdGF0ZSwgczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKTogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCA9PlxuICAgIHN3aXRjaCAoc3RhdGUucG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IHMucHJlbHVkZS5zdGF0aWNzXG4gICAgfCBDb3JyZWN0SW1wbCA9PiBzLmluc3RydWN0b3Iuc3RhdGljc1xuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiBzLnRlc3RfdmFsaWRhdGlvbi5zdGF0aWNzXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IHMudXNlcl90ZXN0cy5zdGF0aWNzXG4gICAgfCBZb3VySW1wbCA9PiBzLnVzZXJfaW1wbC5zdGF0aWNzXG4gICAgfCBIaWRkZW5CdWdzKGlkeCkgPT4gTGlzdC5udGgocy5oaWRkZW5fYnVncywgaWR4KS5zdGF0aWNzXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBzLmhpZGRlbl90ZXN0cy5zdGF0aWNzXG4gICAgfTtcblxuICAvKiBHaXZlbiB0aGUgZXZhbHVhdGlvbiByZXN1bHRzLCBjb2xsZWN0cyB0aGVcbiAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHByb2R1Y2luZyBkeW5hbWljXG4gICAgIGZlZWRiYWNrKi9cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgcmVzdWx0X29mID0ga2V5ID0+XG4gICAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBNb2RlbFJlc3VsdC5Ob0VsYWJcbiAgICAgIHwgU29tZShyZXN1bHRzKSA9PlxuICAgICAgICBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIGtleSlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU1vZGVsUmVzdWx0Lk5vRWxhYilcbiAgICAgIH07XG5cbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHN0YXRpY3M6IHRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YodGVzdF92YWxpZGF0aW9uX2tleSksXG4gICAgICB9O1xuXG4gICAgbGV0IHVzZXJfaW1wbCA9XG4gICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3M6IHVzZXJfaW1wbCwgcmVzdWx0OiByZXN1bHRfb2YodXNlcl9pbXBsX2tleSl9O1xuXG4gICAgbGV0IHVzZXJfdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiB1c2VyX3Rlc3RzLCByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX3Rlc3RzX2tleSl9O1xuICAgIGxldCBwcmVsdWRlID0gRHluYW1pY3NJdGVtLntzdGF0aWNzOiBwcmVsdWRlLCByZXN1bHQ6IE5vRWxhYn07XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzOiBpbnN0cnVjdG9yLCByZXN1bHQ6IHJlc3VsdF9vZihpbnN0cnVjdG9yX2tleSl9O1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljcywgcmVzdWx0OiByZXN1bHRfb2YoaGlkZGVuX2J1Z3Nfa2V5KG4pKX0sXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHN0YXRpY3M6IGhpZGRlbl90ZXN0cyxcbiAgICAgICAgcmVzdWx0OiByZXN1bHRfb2YoaGlkZGVuX3Rlc3RzX2tleSksXG4gICAgICB9O1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PlxuICAgIGlmIChzZXR0aW5ncy5zdGF0aWNzICYmIHNldHRpbmdzLmR5bmFtaWNzKSB7XG4gICAgICBzdGl0Y2hfZHluYW1pYyhzZXR0aW5ncywgc3RhdGUsIHJlc3VsdHMpO1xuICAgIH0gZWxzZSBpZiAoc2V0dGluZ3Muc3RhdGljcykge1xuICAgICAgbGV0IHQgPSBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgICB1c2VyX2ltcGw6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC51c2VyX2ltcGwpLFxuICAgICAgICB1c2VyX3Rlc3RzOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl90ZXN0cyksXG4gICAgICAgIGluc3RydWN0b3I6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5pbnN0cnVjdG9yKSxcbiAgICAgICAgcHJlbHVkZTogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnByZWx1ZGUpLFxuICAgICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAoRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSwgdC5oaWRkZW5fYnVncyksXG4gICAgICAgIGhpZGRlbl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LmhpZGRlbl90ZXN0cyksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICB1c2VyX2ltcGw6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHN0YXRlLmVkcy5oaWRkZW5fYnVncyksIF8gPT5cbiAgICAgICAgICAgIER5bmFtaWNzSXRlbS5lbXB0eVxuICAgICAgICAgICksXG4gICAgICAgIGhpZGRlbl90ZXN0czogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgfTtcbiAgICB9O1xuICBsZXQgc3RpdGNoX2R5bmFtaWMgPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfZHluYW1pYyk7XG5cbiAgLy8gTW9kdWxlIEV4cG9ydFxuXG4gIGxldCBlZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IHNlcmlhbGl6YXRpb24gPSBaaXBwZXIuc2hvdyh6aXBwZXIpO1xuICAgIC8vIGxldCBzdHJpbmdfbGl0ZXJhbCA9IFwiXFxcIlwiICsrIFN0cmluZy5lc2NhcGVkKHNlcmlhbGl6YXRpb24pICsrIFwiXFxcIlwiO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBzZXJpYWxpemF0aW9uKTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKGVkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IHByZWZpeCArKyByZWNvcmQgKysgXCJcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCB0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCA9IChmbXQsIGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgY29kZSA9IFByaW50ZXIudG9fc3RyaW5nX2Jhc2ljKHppcHBlcik7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIFwiXFxcIlwiICsrIFN0cmluZy5lc2NhcGVkKGNvZGUpICsrIFwiXFxcIlwiKTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgcHJlZml4ID1cbiAgICAgIFwibGV0IHByb21wdCA9IFwiXG4gICAgICArKyBtb2R1bGVfbmFtZVxuICAgICAgKysgXCJfcHJvbXB0LnByb21wdFxcblwiXG4gICAgICArKyBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IEV4ZXJjaXNlLnRyYW5zaXRpb24oXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcCh0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IHByZWZpeCArKyByZWNvcmQgKysgXCIpXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgZXhwb3J0X2dyYWRpbmdfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgaGVhZGVyID0gb3V0cHV0X2hlYWRlcl9ncmFkaW5nKG1vZHVsZV9uYW1lKTtcbiAgICBsZXQgcHJlZml4ID0gXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKGVkaXRvcl9wcCwgZWRzKTtcbiAgICBsZXQgZGF0YSA9IGhlYWRlciArKyBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgYmxhbmtfc3BlYyA9XG4gICAgICAoXG4gICAgICAgIH50aXRsZSxcbiAgICAgICAgfm1vZHVsZV9uYW1lLFxuICAgICAgICB+cG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICB+cmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIH5wcm92aWRlZF90ZXN0cyxcbiAgICAgICAgfm51bV93cm9uZ19pbXBscyxcbiAgICAgICkgPT4ge1xuICAgIGxldCBwcmVsdWRlID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgIExpc3QuaW5pdChcbiAgICAgICAgbnVtX3dyb25nX2ltcGxzLFxuICAgICAgICBpID0+IHtcbiAgICAgICAgICBsZXQgemlwcGVyID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICAgICAgICB7aW1wbDogemlwcGVyLCBoaW50OiBcIlRPRE86IGhpbnQgXCIgKysgc3RyaW5nX29mX2ludChpKX07XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIHtcbiAgICAgIHRpdGxlLFxuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBFeGVyY2lzZUVudi5kZWZhdWx0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IHlvdXJfdGVzdHNfdGVzdHMsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZF90ZXN0cyxcbiAgICAgICAgcHJvdmlkZWQ6IHByb3ZpZGVkX3Rlc3RzLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbCxcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBoaWRkZW5fdGVzdHNfdGVzdHMsXG4gICAgICAgIGhpbnRzOiBbXSxcbiAgICAgIH0sXG4gICAgICBzeW50YXhfdGVzdHM6IFtdLFxuICAgIH07XG4gIH07XG5cbiAgLy8gRnJvbSBTdG9yZVxuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBleGVyY2lzZV9leHBvcnQgPSB7XG4gICAgY3VyX2V4ZXJjaXNlOiBrZXksXG4gICAgZXhlcmNpc2VfZGF0YTogbGlzdCgoa2V5LCBwZXJzaXN0ZW50X3N0YXRlKSksXG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZV9leGVyY2lzZSA9IChleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfD4gc2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlXG4gICAgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemVfZXhlcmNpc2UgPSAoZGF0YSwgfnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBkYXRhXG4gICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgIHw+IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc2V4cFxuICAgIHw+IHVucGVyc2lzdF9zdGF0ZSh+c3BlYywgfmluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCA9IGRhdGEgPT4ge1xuICAgIGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBleGVyY2lzZV9leHBvcnRfb2Zfc2V4cDtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYuUHJpbWl0aXZlcztcblxubW9kdWxlIEYgPSAoRXhlcmNpc2VFbnY6IEV4ZXJjaXNlLkV4ZXJjaXNlRW52KSA9PiB7XG4gIG9wZW4gRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcmNlbnRhZ2UgPSBmbG9hdDtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBvaW50cyA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc2NvcmUgPSAocG9pbnRzLCBwb2ludHMpO1xuXG4gIGxldCBzY29yZV9vZl9wZXJjZW50ID0gKHBlcmNlbnQsIG1heF9wb2ludHMpID0+IHtcbiAgICBsZXQgbWF4X3BvaW50cyA9IGZsb2F0X29mX2ludChtYXhfcG9pbnRzKTtcbiAgICAocGVyY2VudCAqLiBtYXhfcG9pbnRzLCBtYXhfcG9pbnRzKTtcbiAgfTtcblxuICBtb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgdGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCksXG4gICAgICByZXF1aXJlZDogaW50LFxuICAgICAgcHJvdmlkZWQ6IGludCxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKGVkczogZWRzLCB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSkgPT4ge1xuICAgICAge1xuICAgICAgICB0ZXN0X3Jlc3VsdHMsXG4gICAgICAgIHJlcXVpcmVkOiBlZHMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IGVkcy55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiAwLjBcbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+XG4gICAgICAgIGxldCBudW1fdGVzdHMgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKTtcbiAgICAgICAgbGV0IHJlcXVpcmVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgIGxldCBwcm92aWRlZCA9IGZsb2F0X29mX2ludChyZXBvcnQucHJvdmlkZWQpO1xuICAgICAgICBsZXQgbnVtX3Bhc3NpbmcgPSBmbG9hdF9vZl9pbnQodGVzdF9yZXN1bHRzLnBhc3NpbmcpO1xuXG4gICAgICAgIHJlcXVpcmVkIC0uIHByb3ZpZGVkIDw9IDAuMCB8fCBudW1fdGVzdHMgPD0gMC4wXG4gICAgICAgICAgPyAwLjBcbiAgICAgICAgICA6IG51bV9wYXNzaW5nXG4gICAgICAgICAgICAvLiBudW1fdGVzdHNcbiAgICAgICAgICAgICouIChcbiAgICAgICAgICAgICAgRmxvYXQubWF4KFxuICAgICAgICAgICAgICAgIDAuLFxuICAgICAgICAgICAgICAgIEZsb2F0Lm1pbihudW1fdGVzdHMgLS4gcHJvdmlkZWQsIHJlcXVpcmVkIC0uIHByb3ZpZGVkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAvLiAocmVxdWlyZWQgLS4gcHJvdmlkZWQpXG4gICAgICAgICAgICApO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtyZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpfTtcblxuICAgIGxldCBoaWRkZW5fYnVnX3N0YXR1cyA9XG4gICAgICAgIChcbiAgICAgICAgICB0ZXN0X3ZhbGlkYXRpb25fZGF0YTogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgaGlkZGVuX2J1Z19kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgKVxuICAgICAgICA6IFRlc3RTdGF0dXMudCA9PiB7XG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHModGVzdF92YWxpZGF0aW9uX2RhdGEucmVzdWx0KSxcbiAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKGhpZGRlbl9idWdfZGF0YS5yZXN1bHQpLFxuICAgICAgKSB7XG4gICAgICB8IChOb25lLCBfKVxuICAgICAgfCAoXywgTm9uZSkgPT4gSW5kZXRcbiAgICAgIHwgKFNvbWUodGVzdF92YWxpZGF0aW9uX2RhdGEpLCBTb21lKGhpZGRlbl9idWdfZGF0YSkpID0+XG4gICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfbWFwID0gdGVzdF92YWxpZGF0aW9uX2RhdGEudGVzdF9tYXA7XG4gICAgICAgIGxldCBoaWRkZW5fYnVnX3Rlc3RfbWFwID0gaGlkZGVuX2J1Z19kYXRhLnRlc3RfbWFwO1xuXG4gICAgICAgIGxldCBmb3VuZCA9XG4gICAgICAgICAgaGlkZGVuX2J1Z190ZXN0X21hcFxuICAgICAgICAgIHw+IExpc3QuZmluZF9vcHQoKChpZCwgaW5zdGFuY2VfcmVwb3J0cykpID0+IHtcbiAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZV9yZXBvcnRzKTtcbiAgICAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzc1xuICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkluZGV0ID0+IGZhbHNlXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbCA9PlxuICAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMgPVxuICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25fdGVzdF9tYXAgfD4gVGVzdE1hcC5sb29rdXAoaWQpO1xuICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbGlkYXRpb25fdGVzdF9yZXBvcnRzKSB7XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IFNvbWUocmVwb3J0cykgPT5cbiAgICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gVGVzdE1hcC5qb2ludF9zdGF0dXMocmVwb3J0cyk7XG4gICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuUGFzcyA9PiB0cnVlXG4gICAgICAgICAgICAgICAgICAgfCBUZXN0U3RhdHVzLkZhaWxcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgc3dpdGNoIChmb3VuZCkge1xuICAgICAgICB8IE5vbmUgPT4gRmFpbFxuICAgICAgICB8IFNvbWUoXykgPT4gUGFzc1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9OyAvLyBmb3IgZWFjaCBoaWRkZW4gYnVnXG4gICAgLy8gICBpbiB0aGUgdGVzdCByZXN1bHRzIGRhdGEsIGZpbmQgYSB0ZXN0IElEIHRoYXQgcGFzc2VzIHRlc3QgdmFsaWRhdGlvbiBidXQgZmFpbHMgYWdhaW5zdFxuXG4gICAgbGV0IG1rID1cbiAgICAgICAgKFxuICAgICAgICAgIH50ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS50LFxuICAgICAgICAgIH5oaWRkZW5fYnVnc19zdGF0ZTogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSksXG4gICAgICAgICAgfmhpZGRlbl9idWdzOiBsaXN0KER5bmFtaWNzSXRlbS50KSxcbiAgICAgICAgKVxuICAgICAgICA6IHQgPT4ge1xuICAgICAgbGV0IHJlc3VsdHMgPVxuICAgICAgICBMaXN0Lm1hcChoaWRkZW5fYnVnX3N0YXR1cyh0ZXN0X3ZhbGlkYXRpb24pLCBoaWRkZW5fYnVncyk7XG4gICAgICBsZXQgaGludHMgPVxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAod3JvbmdfaW1wbDogd3JvbmdfaW1wbChFZGl0b3IudCkpID0+IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICBoaWRkZW5fYnVnc19zdGF0ZSxcbiAgICAgICAgKTtcbiAgICAgIGxldCByZXN1bHRzID0gTGlzdC5jb21iaW5lKHJlc3VsdHMsIGhpbnRzKTtcbiAgICAgIHtyZXN1bHRzOiByZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9IHJlcG9ydC5yZXN1bHRzO1xuICAgICAgbGV0IG51bV93cm9uZ19pbXBscyA9IExpc3QubGVuZ3RoKHJlc3VsdHMpO1xuICAgICAgbGV0IG51bV9wYXNzZWQgPVxuICAgICAgICByZXN1bHRzXG4gICAgICAgIHw+IExpc3QuZmluZF9hbGwoKChzdGF0dXMsIF8pKSA9PiBzdGF0dXMgPT0gVGVzdFN0YXR1cy5QYXNzKVxuICAgICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICAgIHN3aXRjaCAobnVtX3dyb25nX2ltcGxzKSB7XG4gICAgICB8IDAgPT4gMS4wXG4gICAgICB8IF8gPT4gZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQpIC8uIGZsb2F0X29mX2ludChudW1fd3JvbmdfaW1wbHMpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICAvLyBUT0RPIG1vdmUgdG8gc2VwYXJhdGUgbW9kdWxlXG5cbiAgICBsZXQgc3VtbWFyeV9zdHIgPSAofnRvdGFsLCB+Zm91bmQpOiBzdHJpbmcgPT4ge1xuICAgICAgVGVzdFJlc3VsdHMucmVzdWx0X3N1bW1hcnlfc3RyKFxuICAgICAgICB+bj10b3RhbCxcbiAgICAgICAgfnA9Zm91bmQsXG4gICAgICAgIH5xPTAsXG4gICAgICAgIH5uX3N0cj1cImJ1Z1wiLFxuICAgICAgICB+bnNfc3RyPVwiYnVnc1wiLFxuICAgICAgICB+cF9zdHI9XCJleHBvc2VkXCIsXG4gICAgICAgIH5xX3N0cj1cIlwiLFxuICAgICAgICB+cl9zdHI9XCJ1bnJldmVhbGVkXCIsXG4gICAgICApO1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheFJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgaGludCkpLFxuICAgICAgcGVyY2VudGFnZSxcbiAgICB9O1xuXG4gICAgbGV0IG1rID0gKH55b3VyX2ltcGw6IEVkaXRvci50LCB+dGVzdHM6IHN5bnRheF90ZXN0cyk6IHQgPT4ge1xuICAgICAgbGV0IHVzZXJfaW1wbF90ZXJtID1cbiAgICAgICAgTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbSh5b3VyX2ltcGwuc3RhdGUuemlwcGVyKSB8PiBmc3Q7XG5cbiAgICAgIGxldCBwcmVkaWNhdGVzID1cbiAgICAgICAgTGlzdC5tYXAoKChfLCBwKSkgPT4gU3ludGF4VGVzdC5wcmVkaWNhdGVfZm4ocCksIHRlc3RzKTtcbiAgICAgIGxldCBoaW50cyA9IExpc3QubWFwKCgoaCwgXykpID0+IGgsIHRlc3RzKTtcbiAgICAgIGxldCBzeW50YXhfcmVzdWx0cyA9IFN5bnRheFRlc3QuY2hlY2sodXNlcl9pbXBsX3Rlcm0sIHByZWRpY2F0ZXMpO1xuXG4gICAgICB7XG4gICAgICAgIGhpbnRlZF9yZXN1bHRzOlxuICAgICAgICAgIExpc3QubWFwMigociwgaCkgPT4gKHIsIGgpLCBzeW50YXhfcmVzdWx0cy5yZXN1bHRzLCBoaW50cyksXG4gICAgICAgIHBlcmNlbnRhZ2U6IHN5bnRheF9yZXN1bHRzLnBlcmNlbnRhZ2UsXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofmhpbnRzOiBsaXN0KHN0cmluZyksIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSk6IHQgPT4ge1xuICAgICAgbGV0IGhpbnRlZF9yZXN1bHRzID1cbiAgICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgICBsZXQgc3RhdHVzZXMgPSB0ZXN0X3Jlc3VsdHMuc3RhdHVzZXM7XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBzdGF0dXNlcyxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIk5vIGhpbnQgYXZhaWxhYmxlLlwiLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIkV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3I6IEhpbnQgd2l0aG91dCBhIHRlc3QuXCIsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAge2hpbnRzLCB0ZXN0X3Jlc3VsdHMsIGhpbnRlZF9yZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsID0gKHJlcG9ydDogdCkgPT4gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKTtcbiAgICBsZXQgbnVtX3Bhc3NlZCA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICAgIHJlcG9ydC5oaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0LCBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlXG4gICAgICAqLiAoZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQocmVwb3J0KSkgLy4gZmxvYXRfb2ZfaW50KHRvdGFsKHJlcG9ydCkpKTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OiBUZXN0VmFsaWRhdGlvblJlcG9ydC50LFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6IE11dGF0aW9uVGVzdGluZ1JlcG9ydC50LFxuICAgICAgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OiBJbXBsR3JhZGluZ1JlcG9ydC50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIH5zdGl0Y2hlZF9keW5hbWljczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKSA9PiB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IGVkcy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OlxuICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5tayhcbiAgICAgICAgICBlZHMsXG4gICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbi5yZXN1bHQpLFxuICAgICAgICApLFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6XG4gICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uPXN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU9ZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgIH5oaWRkZW5fYnVncz1zdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIHN5bnRheF9yZXBvcnQ6XG4gICAgICAgIFN5bnRheFJlcG9ydC5tayh+eW91cl9pbXBsPWVkcy55b3VyX2ltcGwsIH50ZXN0cz1lZHMuc3ludGF4X3Rlc3RzKSxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6XG4gICAgICAgIEltcGxHcmFkaW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH5oaW50cz1lZHMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH50ZXN0X3Jlc3VsdHM9XG4gICAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX3Rlc3RzLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgfTtcblxuICAgIGxldCBvdmVyYWxsX3Njb3JlID1cbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQsXG4gICAgICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgICAgIHN5bnRheF9yZXBvcnQsXG4gICAgICAgICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0LFxuICAgICAgICAgICAgXyxcbiAgICAgICAgICB9OiB0LFxuICAgICAgICApXG4gICAgICAgIDogc2NvcmUgPT4ge1xuICAgICAgbGV0ICh0dl9wb2ludHMsIHR2X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0LnBlcmNlbnRhZ2UodGVzdF92YWxpZGF0aW9uX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgKTtcbiAgICAgIGxldCAobXRfcG9pbnRzLCBtdF9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQucGVyY2VudGFnZShtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgKGlnX3BvaW50cywgaWdfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQucGVyY2VudGFnZShpbXBsX2dyYWRpbmdfcmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24uaW1wbF9ncmFkaW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IHRvdGFsX3BvaW50cyA9IHR2X3BvaW50cyArLiBtdF9wb2ludHMgKy4gaWdfcG9pbnRzO1xuICAgICAgbGV0IG1heF9wb2ludHMgPSB0dl9tYXggKy4gbXRfbWF4ICsuIGlnX21heDtcbiAgICAgICh0b3RhbF9wb2ludHMsIG1heF9wb2ludHMpO1xuICAgIH07XG4gIH07XG59O1xuIiwibW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSB1bml0O1xuICBsZXQgZGVmYXVsdCA9ICgpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IEV4ZXJjaXNlLm91dHB1dF9oZWFkZXJfZ3JhZGluZztcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG5tb2R1bGUgR3JhZGluZyA9IEdyYWRpbmcuRihFeGVyY2lzZUVudik7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy8yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBkZWJ1ZyA9XG4gIGxldCBfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBhbmQgX09NRF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJPTURfREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBfREVCVUcsIF9PTURfREVCVUcgd2l0aFxuICB8IF8sIFNvbWUgXCJmYWxzZVwiIC0+XG4gICAgIGZhbHNlXG4gIHwgU29tZSBfLCBOb25lIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgREVCVUcgaXMgc2V0LCBcXFxuICAgICAgICAgICAgICB5b3UgY2FuIGRlYWN0aXZhdGUgdGhlIG1vZGUgYnkgdW5zZXR0aW5nIERFQlVHIFxcXG4gICAgICAgICAgICAgIG9yIGJ5IHNldHRpbmcgT01EX0RFQlVHIHRvIHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICBmYWxzZVxuICB8IF8sIFNvbWUgXyAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIE9NRF9ERUJVRyBpcyBzZXRcbiAgICAgICAgICAgICAgdG8gYSB2YWx1ZSB0aGF0IGlzbid0IHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IHdhcm4gPyh3ZT1mYWxzZSkgbXNnID1cbiAgaWYgd2UgdGhlblxuICAgIHJhaXNlIChFcnJvciBtc2cpXG4gIGVsc2VcbiAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogJXNcXG4lIVwiIG1zZ1xuXG5cbmxldCB0cmFja2ZpeCA9XG4gIHRyeVxuICAgIGlnbm9yZShTeXMuZ2V0ZW52IFwiT01EX0ZJWFwiKTtcbiAgICBlcHJpbnRmIFwib21kOiB0cmFja2luZyBtb2RlIGFjdGl2YXRlZDogdG9rZW4gbGlzdCBhcmUgdmVyeSBvZnRlbiBjaGVja2VkLCBcXFxuICAgICAgICAgICAgIGl0IG1pZ2h0IHRha2UgYSAqdmVyeSogbG9uZyB0aW1lIGlmIHlvdXIgaW5wdXQgaXMgbGFyZ2UuXFxuJSFcIjtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgZmFsc2VcblxubGV0IF8gPSBpZiBkZWJ1ZyB0aGVuIFByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2UgdHJ1ZVxuXG5sZXQgcmFpc2UgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgKGZ1biBlIC0+XG4gICAgICAgZXByaW50ZiBcIihPTUQpIEV4Y2VwdGlvbiByYWlzZWQ6ICVzXFxuJSFcIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpO1xuICAgICAgIHJhaXNlIGUpXG4gIGVsc2VcbiAgICByYWlzZVxuXG5tb2R1bGUgU3RyaW5nU2V0IDogc2lnXG4gIGluY2x1ZGUgU2V0LlMgd2l0aCB0eXBlIGVsdCA9IHN0cmluZ1xuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFNldC5NYWtlKFN0cmluZylcbiAgbGV0IG9mX2xpc3QgbCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gciBlIC0+IGFkZCBlIHIpIGVtcHR5IGxcbmVuZFxuXG5cbnR5cGUgJ2Egc3BsaXQgPSAnYSBsaXN0IC0+ICdhIHNwbGl0X2FjdGlvblxuYW5kICdhIHNwbGl0X2FjdGlvbiA9XG4gIHwgQ29udGludWVcbiAgfCBDb250aW51ZV93aXRoIG9mICdhIGxpc3QgKiAnYSBsaXN0XG4gIHwgU3BsaXQgb2YgJ2EgbGlzdCAqICdhIGxpc3RcblxuXG5sZXQgZnNwbGl0X3JldiA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfihmOidhIHNwbGl0KSBsXG4gICAgOiAoJ2EgbGlzdCAqICdhIGxpc3QpIG9wdGlvbiA9XG4gIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZiBbXSB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBleGNsIGwgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBtYXRjaCBmIGwgd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgaW4gbG9vcCBbXSBsXG5cbmxldCBmc3BsaXQgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH5mIGwgPVxuICBtYXRjaCBmc3BsaXRfcmV2IH5leGNsOmV4Y2wgfmY6ZiBsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShyZXYsIGwpIC0+IFNvbWUoTGlzdC5yZXYgcmV2LCBsKVxuXG5sZXQgaWRfb2Zfc3RyaW5nIGlkcyBzID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG91dCA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICAoKiBQdXQgW3NdIGludG8gW2JdLCByZXBsYWNpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggZGFzaGVzLiAqKVxuICBsZXQgcmVjIGxvb3Agc3RhcnRlZCBpID1cbiAgICBpZiBpID0gbiB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0IGMgO1xuICAgICAgICBsb29wIHRydWUgKGkgKyAxKVxuICAgICAgKCogRG9uJ3Qgd2FudCB0byBzdGFydCB3aXRoIGRhc2hlcy4gKilcbiAgICAgIHwgXyB3aGVuIG5vdCBzdGFydGVkIC0+XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgJy0nIDtcbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gIGluXG4gIGxvb3AgZmFsc2UgMCA7XG4gIGxldCBzJyA9IEJ1ZmZlci5jb250ZW50cyBvdXQgaW5cbiAgaWYgcycgPSBcIlwiIHRoZW4gXCJcIlxuICBlbHNlXG4gICAgKCogRmluZCBvdXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBbcyddIHRoYXQgaXNuJ3QgYSBkYXNoLiAqKVxuICAgIGxldCBsYXN0X3RyYWlsaW5nID0gXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPCAwIHx8IHMnLltpXSA8PiAnLScgdGhlbiBpXG4gICAgICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgICBpblxuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzJyAtIDEpXG4gICAgaW5cbiAgICAoKiBUcmltIHRyYWlsaW5nIGRhc2hlcy4gKilcbiAgICBpZHMjbWFuZ2xlIEBAIFN0cmluZy5zdWIgcycgMCAobGFzdF90cmFpbGluZyArIDEpXG5cbigqIG9ubHkgY29udmVydCB3aGVuIFwibmVjZXNzYXJ5XCIgKilcbmxldCBodG1sZW50aXRpZXMgPyhtZD1mYWxzZSkgcyA9XG4gIGxldCBtb2R1bGUgQnJlYWsgPSBzdHJ1Y3QgZXhjZXB0aW9uIEJyZWFrIGVuZCBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgKClcbiAgICBlbHNlXG4gICAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICggJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onICkgYXMgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgICAgICAgfCAnXFwnJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiMzOTtcIlxuICAgICAgICB8ICcmJyAtPlxuICAgICAgICAgICAgaWYgbWQgdGhlblxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggcy5baSsxXSB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImXCJcbiAgICAgICAgICAgICAgICB3aXRoIF8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgICAgICAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICAgICAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgaW4gbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDA7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IG1pbmltYWxpemVfYmxhbmtzIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgbCBpblxuICBsZXQgcmVjIGxvb3AgZiBpID1cbiAgICBpZiBpID0gbCB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyAtPlxuICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIGYgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICBpbiBsb29wIGZhbHNlIDBcblxubGV0IHJlYyBlYXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBlOjp0bCBhcyBsIC0+IGlmIGYgZSB0aGVuIGVhdCBmIHRsIGVsc2UgbFxuXG5cbmxldCByZWMgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZW1vdmVfcHJlZml4X3NwYWNlcyBzID0gXG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuWzBdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcgJyAtPiBsb29wIChpKzEpXG4gICAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgaW4gbG9vcCAxXG4gIGluXG4gIGxldCByZW1vdmVfc3VmZml4X3NwYWNlcyBzID1cbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bU3RyaW5nLmxlbmd0aCBzIC0gMV0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgLT4gbG9vcCAoaS0xKVxuICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzIHJlcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgIHJlc1xuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeVxuICAgICAgICAgIFNvbWUgKHRha2VfYXR0cmlidXRlIHMgaSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBTb21lICgoKF8sXykgYXMgYSksIG5ld19zKSAtPlxuICAgICAgICBsb29wIG5ld19zIChhOjpyZXMpIDBcbiAgICAgIHwgTm9uZSAtPiByZXNcbiAgYW5kIHRha2VfYXR0cmlidXRlIHMgaSA9XG4gICAgICBsZXQgbmFtZSwgYWZ0ZXJfZXEgPSBjdXRfb25fY2hhcl9mcm9tIHMgaSAnPScgaW5cbiAgICAgIGxldCBuYW1lID0gcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgbmFtZSBpblxuICAgICAgbGV0IGFmdGVyX2VxID0gcmVtb3ZlX3ByZWZpeF9zcGFjZXMgYWZ0ZXJfZXEgaW5cbiAgICAgIGxldCB2YWx1ZSwgcmVzdCA9IGN1dF9vbl9jaGFyX2Zyb20gYWZ0ZXJfZXEgMSBhZnRlcl9lcS5bMF0gaW5cbiAgICAgIChuYW1lLHZhbHVlKSwgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcmVzdFxuICBpblxuICBpZiAoKiBIYXMgaXQgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZT8gKilcbiAgICB0cnkgU3RyaW5nLmluZGV4IGh0bWwgJz4nIDwgU3RyaW5nLmluZGV4IGh0bWwgJyAnXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuICB0aGVuXG4gICAgW11cbiAgZWxzZVxuICBtYXRjaCBodG1sLlsxXSB3aXRoXG4gIHwgJzwnIHwgJyAnIC0+XG4gICAgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXNcbiAgICAgIChyZW1vdmVfcHJlZml4X3NwYWNlcyAoU3RyaW5nLnN1YiBodG1sIDEgKFN0cmluZy5sZW5ndGggaHRtbCAtIDEpKSlcbiAgfCBfIC0+XG4gICAgdHJ5XG4gICAgICBsZXQgaHRtbCA9IHNuZCAoY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJyAnKSBpblxuICAgICAgbG9vcCAoU3RyaW5nLnN1YiBodG1sIDAgKFN0cmluZy5pbmRleCBodG1sICc+JykpIFtdIDBcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuXG5sZXQgcmVjIGV4dHJhY3RfaW5uZXJfaHRtbCAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlYyByY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJpbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyAwIGosIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCBfLCBwID0gY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJz4nIGluXG4gIGxldCByLCBfID0gcmN1dF9vbl9jaGFyX2Zyb20gcCAoU3RyaW5nLmxlbmd0aCBwIC0gMSkgJzwnIGluXG4gIHJcblxuXG5sZXQgaHRtbF92b2lkX2VsZW1lbnRzID0gU3RyaW5nU2V0Lm9mX2xpc3QgW1xuICBcImltZ1wiO1xuICBcImlucHV0XCI7XG4gIFwibGlua1wiO1xuICBcIm1ldGFcIjtcbiAgXCJiclwiO1xuICBcImhyXCI7XG4gIFwic291cmNlXCI7XG4gIFwid2JyXCI7XG4gIFwicGFyYW1cIjtcbiAgXCJlbWJlZFwiO1xuICBcImJhc2VcIjtcbiAgXCJhcmVhXCI7XG4gIFwiY29sXCI7XG4gIFwidHJhY2tcIjtcbiAgXCJrZXlnZW5cIjtcbl1cblxubGV0ICggQCApIGwxIGwyID1cbiAgTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBsMSkgbDJcbiIsIm9wZW4gT21kX3V0aWxzXG5vcGVuIFByaW50ZlxuXG4oKiogcmVmZXJlbmNlcywgaW5zdGFuY2VzIGNyZWF0ZWQgaW4gW09tZF9wYXJzZXIubWFpbl9wYXJzZV0gYW5kXG4gICAgYWNjZXNzZWQgaW4gdGhlIFtPbWRfYmFja2VuZF0gbW9kdWxlLiAqKVxubW9kdWxlIFIgPSBNYXAuTWFrZShTdHJpbmcpXG5jbGFzcyByZWZfY29udGFpbmVyIDogb2JqZWN0XG4gICAgdmFsIG11dGFibGUgYyA6IChzdHJpbmcgKiBzdHJpbmcpIFIudFxuICAgIG1ldGhvZCBhZGRfcmVmIDogUi5rZXkgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIGdldF9yZWYgOiBSLmtleSAtPiAoc3RyaW5nICogc3RyaW5nKSBvcHRpb25cbiAgICBtZXRob2QgZ2V0X2FsbCA6IChzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdFxuICBlbmQgPSBvYmplY3RcbiAgdmFsIG11dGFibGUgYyA9IFIuZW1wdHlcbiAgdmFsIG11dGFibGUgYzIgPSBSLmVtcHR5XG5cbiAgbWV0aG9kIGdldF9hbGwgPSBSLmJpbmRpbmdzIGNcblxuICBtZXRob2QgYWRkX3JlZiBuYW1lIHRpdGxlIHVybCA9XG4gICAgYyA8LSBSLmFkZCBuYW1lICh1cmwsIHRpdGxlKSBjO1xuICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgIGlmIGxuIDw+IG5hbWUgdGhlbiBjMiA8LSBSLmFkZCBsbiAodXJsLCB0aXRsZSkgYzJcblxuICBtZXRob2QgZ2V0X3JlZiBuYW1lID1cbiAgICB0cnlcbiAgICAgIGxldCAodXJsLCB0aXRsZSkgYXMgciA9XG4gICAgICAgIHRyeSBSLmZpbmQgbmFtZSBjXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgICAgICAgdHJ5IFIuZmluZCBsbiBjXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFIuZmluZCBsbiBjMlxuICAgICAgaW4gU29tZSByXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIE5vbmVcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB8IEgxIG9mIHRcbiAgfCBIMiBvZiB0XG4gIHwgSDMgb2YgdFxuICB8IEg0IG9mIHRcbiAgfCBINSBvZiB0XG4gIHwgSDYgb2YgdFxuICB8IFBhcmFncmFwaCBvZiB0XG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbXBoIG9mIHRcbiAgfCBCb2xkIG9mIHRcbiAgfCBVbCBvZiB0IGxpc3RcbiAgfCBPbCBvZiB0IGxpc3RcbiAgfCBVbHAgb2YgdCBsaXN0XG4gIHwgT2xwIG9mIHQgbGlzdFxuICB8IENvZGUgb2YgbmFtZSAqIHN0cmluZ1xuICB8IENvZGVfYmxvY2sgb2YgbmFtZSAqIHN0cmluZ1xuICB8IEJyXG4gIHwgSHJcbiAgfCBOTFxuICB8IFVybCBvZiBocmVmICogdCAqIHRpdGxlXG4gIHwgUmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogc3RyaW5nICogZmFsbGJhY2tcbiAgfCBJbWdfcmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogYWx0ICogZmFsbGJhY2tcbiAgfCBIdG1sIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2Jsb2NrIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2NvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgUmF3IG9mIHN0cmluZ1xuICB8IFJhd19ibG9jayBvZiBzdHJpbmdcbiAgfCBCbG9ja3F1b3RlIG9mIHRcbiAgfCBJbWcgb2YgYWx0ICogc3JjICogdGl0bGVcbiAgfCBYIG9mXG4gICAgICA8IG5hbWUgOiBzdHJpbmc7XG4gICAgICAgIHRvX2h0bWwgOiA/aW5kZW50OmludCAtPiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fc2V4cHIgOiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fdCA6IHQgLT4gdCBvcHRpb24gPlxuYW5kIGZhbGxiYWNrID0gPCB0b19zdHJpbmcgOiBzdHJpbmcgOyB0b190IDogdCA+XG5hbmQgbmFtZSA9IHN0cmluZ1xuYW5kIGFsdCA9IHN0cmluZ1xuYW5kIHNyYyA9IHN0cmluZ1xuYW5kIGhyZWYgPSBzdHJpbmdcbmFuZCB0aXRsZSA9IHN0cmluZ1xuYW5kIHQgPSBlbGVtZW50IGxpc3RcblxuXG5sZXQgcmVjIGxvb3NlX2NvbXBhcmUgdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gIHwgSDEgZTE6OnRsMSwgSDEgZTI6OnRsMlxuICB8IEgyIGUxOjp0bDEsIEgyIGUyOjp0bDJcbiAgfCBIMyBlMTo6dGwxLCBIMyBlMjo6dGwyXG4gIHwgSDQgZTE6OnRsMSwgSDQgZTI6OnRsMlxuICB8IEg1IGUxOjp0bDEsIEg1IGUyOjp0bDJcbiAgfCBINiBlMTo6dGwxLCBINiBlMjo6dGwyXG4gIHwgRW1waCBlMTo6dGwxLCBFbXBoIGUyOjp0bDJcbiAgfCBCb2xkIGUxOjp0bDEsIEJvbGQgZTI6OnRsMlxuICB8IEJsb2NrcXVvdGUgZTE6OnRsMSwgQmxvY2txdW90ZSBlMjo6dGwyXG4gIHwgUGFyYWdyYXBoIGUxOjp0bDEsIFBhcmFncmFwaCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBVbCBlMTo6dGwxLCBVbCBlMjo6dGwyXG4gIHwgT2wgZTE6OnRsMSwgT2wgZTI6OnRsMlxuICB8IFVscCBlMTo6dGwxLCBVbHAgZTI6OnRsMlxuICB8IE9scCBlMTo6dGwxLCBPbHAgZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlX2xpc3RzIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgKENvZGUgXyBhcyBlMSk6OnRsMSwgKENvZGUgXyBhcyBlMik6OnRsMlxuICB8IChCciBhcyBlMSk6OnRsMSwgKEJyIGFzIGUyKTo6dGwyXG4gIHwgKEhyIGFzIGUxKTo6dGwxLCAoSHIgYXMgZTIpOjp0bDJcbiAgfCAoTkwgYXMgZTEpOjp0bDEsIChOTCBhcyBlMik6OnRsMlxuICB8IChIdG1sIF8gYXMgZTEpOjp0bDEsIChIdG1sIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9ibG9jayBfIGFzIGUxKTo6dGwxLCAoSHRtbF9ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhdyBfIGFzIGUxKTo6dGwxLCAoUmF3IF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3X2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChSYXdfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2NvbW1lbnQgXyBhcyBlMSk6OnRsMSwgKEh0bWxfY29tbWVudCBfIGFzIGUyKTo6dGwyXG4gIHwgKEltZyBfIGFzIGUxKTo6dGwxLCAoSW1nIF8gYXMgZTIpOjp0bDJcbiAgfCAoVGV4dCBfIGFzIGUxKTo6dGwxLCAoVGV4dCBfIGFzIGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBDb2RlX2Jsb2NrKGwxLGMxKTo6dGwxLCBDb2RlX2Jsb2NrKGwyLGMyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgbDEgbDIsIFN0cmluZy5sZW5ndGggYzEgLSBTdHJpbmcubGVuZ3RoIGMyIHdpdGhcbiAgICAgICAgIHwgMCwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIGMyIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAxIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgKGMyXlwiXFxuXCIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIC0xIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgKGMxXlwiXFxuXCIpIGMyIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGksIF8gLT4gaVxuICAgICAgKVxuXG4gIHwgVXJsIChocmVmMSwgdDEsIHRpdGxlMSk6OnRsMSwgVXJsIChocmVmMiwgdDIsIHRpdGxlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGhyZWYxIGhyZWYyIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggbG9vc2VfY29tcGFyZSB0MSB0MiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIHRpdGxlMSB0aXRsZTIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBSZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgUmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgfCBJbWdfcmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIEltZ19yZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICAgICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKG5hbWUxLCB4MSkgKG5hbWUyLCB4Mikgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgbGV0IGNmZiA9XG4gICAgICAgICAgICAgICBpZiBmYWxsYmFjazEjdG9fc3RyaW5nID0gZmFsbGJhY2syI3RvX3N0cmluZyB0aGVuXG4gICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9vc2VfY29tcGFyZSAoZmFsbGJhY2sxI3RvX3QpIChmYWxsYmFjazIjdG9fdClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgY2ZmID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgY29tcGFyZSAocmVmX2NvbnRhaW5lcjEjZ2V0X2FsbCkgKHJlZl9jb250YWluZXIyI2dldF9hbGwpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgY2ZmXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFggZTE6OnRsMSwgWCBlMjo6dGwyIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAoZTEjbmFtZSkgKGUyI25hbWUpIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSAoZTEjdG9fdCkgKGUyI3RvX3QpIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcbiAgfCBYIF86Ol8sIF8gLT4gMVxuICB8IF8sIFggXzo6XyAtPiAtMVxuICB8IF8gLT4gY29tcGFyZSB0MSB0MlxuXG5hbmQgbG9vc2VfY29tcGFyZV9saXN0cyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPlxuICAgICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlX2xpc3RzIHRsMSB0bDJcbiAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCBfIC0+IC0xXG5cblxudHlwZSB0b2sgPSAoKiBDcyhuKSBtZWFucyAobisyKSB0aW1lcyBDICopXG58IEFtcGVyc2FuZFxufCBBbXBlcnNhbmRzIG9mIGludFxufCBBdFxufCBBdHMgb2YgaW50XG58IEJhY2txdW90ZVxufCBCYWNrcXVvdGVzIG9mIGludFxufCBCYWNrc2xhc2hcbnwgQmFja3NsYXNocyBvZiBpbnRcbnwgQmFyXG58IEJhcnMgb2YgaW50XG58IENhcmV0XG58IENhcmV0cyBvZiBpbnRcbnwgQ2JyYWNlXG58IENicmFjZXMgb2YgaW50XG58IENvbG9uXG58IENvbG9ucyBvZiBpbnRcbnwgQ29tbWFcbnwgQ29tbWFzIG9mIGludFxufCBDcGFyZW50aGVzaXNcbnwgQ3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgQ2JyYWNrZXRcbnwgQ2JyYWNrZXRzIG9mIGludFxufCBEb2xsYXJcbnwgRG9sbGFycyBvZiBpbnRcbnwgRG90XG58IERvdHMgb2YgaW50XG58IERvdWJsZXF1b3RlXG58IERvdWJsZXF1b3RlcyBvZiBpbnRcbnwgRXhjbGFtYXRpb25cbnwgRXhjbGFtYXRpb25zIG9mIGludFxufCBFcXVhbFxufCBFcXVhbHMgb2YgaW50XG58IEdyZWF0ZXJ0aGFuXG58IEdyZWF0ZXJ0aGFucyBvZiBpbnRcbnwgSGFzaFxufCBIYXNocyBvZiBpbnRcbnwgTGVzc3RoYW5cbnwgTGVzc3RoYW5zIG9mIGludFxufCBNaW51c1xufCBNaW51c3Mgb2YgaW50XG58IE5ld2xpbmVcbnwgTmV3bGluZXMgb2YgaW50XG58IE51bWJlciBvZiBzdHJpbmdcbnwgT2JyYWNlXG58IE9icmFjZXMgb2YgaW50XG58IE9wYXJlbnRoZXNpc1xufCBPcGFyZW50aGVzaXNzIG9mIGludFxufCBPYnJhY2tldFxufCBPYnJhY2tldHMgb2YgaW50XG58IFBlcmNlbnRcbnwgUGVyY2VudHMgb2YgaW50XG58IFBsdXNcbnwgUGx1c3Mgb2YgaW50XG58IFF1ZXN0aW9uXG58IFF1ZXN0aW9ucyBvZiBpbnRcbnwgUXVvdGVcbnwgUXVvdGVzIG9mIGludFxufCBTZW1pY29sb25cbnwgU2VtaWNvbG9ucyBvZiBpbnRcbnwgU2xhc2hcbnwgU2xhc2hzIG9mIGludFxufCBTcGFjZVxufCBTcGFjZXMgb2YgaW50XG58IFN0YXJcbnwgU3RhcnMgb2YgaW50XG58IFRhYlxufCBUYWJzIG9mIGludFxufCBUaWxkZVxufCBUaWxkZXMgb2YgaW50XG58IFVuZGVyc2NvcmVcbnwgVW5kZXJzY29yZXMgb2YgaW50XG58IFdvcmQgb2Ygc3RyaW5nXG58IFRhZyBvZiBuYW1lICogZXh0ZW5zaW9uXG5cbmFuZCBleHRlbnNpb24gPSA8XG4gIHBhcnNlcl9leHRlbnNpb24gOlxuICAgIHQgLT4gdG9rIGxpc3QgLT4gdG9rIGxpc3QgLT4gKCh0ICogdG9rIGxpc3QgKiB0b2sgbGlzdCkgb3B0aW9uKTtcbiAgdG9fc3RyaW5nIDogc3RyaW5nXG4+XG5cbnR5cGUgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbiBsaXN0XG5cbmxldCBlbXB0eV9leHRlbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBOb25lXG4gIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG5lbmRcblxubGV0IHJlYyBub3JtYWxpc2VfbWQgbCA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICBlcHJpbnRmIFwiKE9NRCkgbm9ybWFsaXNlX21kXFxuJSFcIjtcbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MXVxuICAgIHwgW05MXSAtPiBbXVxuICAgIHwgW10gLT4gW11cbiAgICB8IE5MOjpOTDo6Tkw6OnRsIC0+IGxvb3AgKE5MOjpOTDo6dGwpXG4gICAgfCBUZXh0IHQxOjpUZXh0IHQyOjp0bCAtPiBsb29wIChUZXh0KHQxXnQyKTo6dGwpXG4gICAgfCBOTDo6KCgoUGFyYWdyYXBoIF98SDEgX3xIMiBffEgzIF98SDQgX3xINSBffEg2IF9cbiAgICAgICAgICAgIHxDb2RlX2Jsb2NrIF98T2wgX3xVbCBffE9scCBffFVscCBfKTo6XykgYXMgdGwpIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtUZXh0IFwiIFwiXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaChwKTo6dGwgLT4gUGFyYWdyYXBoKGxvb3AgcCk6Omxvb3AgdGxcbiAgICB8IEgxIHY6OnRsIC0+IEgxKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgyIHY6OnRsIC0+IEgyKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgzIHY6OnRsIC0+IEgzKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg0IHY6OnRsIC0+IEg0KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg1IHY6OnRsIC0+IEg1KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg2IHY6OnRsIC0+IEg2KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEVtcGggdjo6dGwgLT4gRW1waChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCb2xkIHY6OnRsIC0+IEJvbGQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWwgdjo6dGwgLT4gVWwoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2wgdjo6dGwgLT4gT2woTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWxwIHY6OnRsIC0+IFVscChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbHAgdjo6dGwgLT4gT2xwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgdjo6dGwgLT4gQmxvY2txdW90ZShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVcmwoaHJlZix2LHRpdGxlKTo6dGwgLT4gVXJsKGhyZWYsKGxvb3AgdiksdGl0bGUpOjpsb29wIHRsXG4gICAgfCBUZXh0IF9cbiAgICB8IENvZGUgX1xuICAgIHwgQ29kZV9ibG9jayBfXG4gICAgfCBCclxuICAgIHwgSHJcbiAgICB8IE5MXG4gICAgfCBSZWYgX1xuICAgIHwgSW1nX3JlZiBfXG4gICAgfCBIdG1sIF9cbiAgICB8IEh0bWxfYmxvY2sgX1xuICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICB8IFJhdyBfXG4gICAgfCBSYXdfYmxvY2sgX1xuICAgIHwgSW1nIF9cbiAgICB8IFggXyBhcyB2Ojp0bCAtPiB2Ojpsb29wIHRsXG4gIGluXG4gIGxldCBhID0gbG9vcCBsIGluXG4gIGxldCBiID0gbG9vcCBhIGluXG4gIGlmIGEgPSBiIHRoZW5cbiAgICBhXG4gIGVsc2VcbiAgICBub3JtYWxpc2VfbWQgYlxuXG5cblxubGV0IGR1bW15X1ggPVxuICBYIChvYmplY3RcbiAgICBtZXRob2QgbmFtZSA9IFwiZHVtbXlcIlxuICAgIG1ldGhvZCB0b19odG1sID8oaW5kZW50PTApIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fc2V4cHIgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b190IF8gPSBOb25lXG4gIGVuZClcblxuXG5sZXQgcmVjIHZpc2l0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgUGFyYWdyYXBoIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFBhcmFncmFwaCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDEgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgxKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDIodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgzIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgzKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg1IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDYgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg2KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBFbXBoIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBFbXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCb2xkIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCb2xkKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWxwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9scCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQmxvY2txdW90ZSB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCbG9ja3F1b3RlKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVcmwoaHJlZix2LHRpdGxlKSBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVXJsKGhyZWYsdmlzaXQgZiB2LHRpdGxlKTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFRleHQgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGUgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGVfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nX3JlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9jb21tZW50IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXcgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhd19ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgWCAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEhyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE5MIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBOTDo6dmlzaXQgZiB0bFxuICAgIGVuZFxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb2RlX3N0eWxpc3QgPSBsYW5nOnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcblxubGV0IGRlZmF1bHRfbGFuZ3VhZ2UgPSByZWYgXCJcIlxuXG5cblxubGV0IHRleHRfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIF8gOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVsIGwgfCBPbCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBpdGVtIC0+IGxvb3AgaXRlbTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbicpIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbHAgbCB8IE9scCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgbG9vcCBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBsb29wIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsXG4gICAgfCBIMiBtZCA6OiB0bFxuICAgIHwgSDMgbWQgOjogdGxcbiAgICB8IEg0IG1kIDo6IHRsXG4gICAgfCBINSBtZCA6OiB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGRlZmF1bHRfY29kZV9zdHlsaXN0IH5sYW5nIGNvZGUgPSBjb2RlXG5cbmxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICBsb29wIHRydWUgciB0bFxuICAgIHwgZTo6dGwgLT5cbiAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgaW5cbiAgbG9vcCBmYWxzZSBbXSBsXG5cbmxldCByZW1vdmVfbGlua3MgOiB0IC0+IHQgPVxuICBPbWRfcmVwcmVzZW50YXRpb24udmlzaXRcbiAgICAoZnVuIGUgLT5cbiAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IFVybChfLCB0LCBfKSAtPiBTb21lIHRcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuXG5sZXQgcmVjIGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWRcbiAgICA/KHJlbW92ZV9oZWFkZXJfbGlua3M9ZmFsc2UpXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3M6KGNvZGVfc3R5bGU9ZGVmYXVsdF9jb2RlX3N0eWxpc3QpXG4gICAgbWRcbiAgPVxuICBsZXQgaWRzID0gb2JqZWN0KHRoaXMpXG4gICAgdmFsIG11dGFibGUgaWRzID0gU3RyaW5nU2V0LmFkZCBcIlwiIFN0cmluZ1NldC5lbXB0eVxuICAgIG1ldGhvZCBtYW5nbGUgaWQgPVxuICAgICAgbGV0IHJlYyBtIGkgPVxuICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkIGlkcyB0aGVuXG4gICAgICAgICAgbGV0IGlkeCA9IGlmIGkgPiAwIHRoZW4gaWReXCJfXCJec3RyaW5nX29mX2ludCBpIGVsc2UgaWQgaW5cbiAgICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkeCBpZHMgdGhlblxuICAgICAgICAgICAgbSAoaSsxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZHggaWRzO1xuICAgICAgICAgICAgIGlkeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZCBpZHM7XG4gICAgICAgICAgIGlkKVxuICAgICAgaW4gbSAwXG4gIGVuZCBpblxuICBsZXQgZW1wdHkgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFxuJyAtPiBsb29wIChpKzEpXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIDBcbiAgaW5cbiAgbGV0IHJlbW92ZV90cmFpbGluZ19ibGFua3MgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IDAgdGhlbiBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICd8J1xcdCd8J1xcbicgLT5cbiAgICAgICAgICBsb29wIChwcmVkIGkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIHRoZW5cbiAgICAgICAgICAgIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgaGVhZGVycyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIGxvb3AgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFggeCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6aW5kZW50XG4gICAgICAgICAgICAgICAoaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlKSBtZFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJsb2NrcXVvdGUgcSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHE7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShocmVmLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoVXJsKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmLFxuICAgICAgICAgICAgICAgICAgICAgW1RleHQodGV4dCldLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKVxuICAgICAgICAgICAgICAgICA6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoc3JjLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoSW1nKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBpbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgIGlmIGVtcHR5IHMgdGhlblxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwPlwiO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzKTtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3A+XFxuXCI7XG4gICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxpbWcgc3JjPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBhbHQ9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCIpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFRleHQgdCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogQnVmZmVyLmFkZF9zdHJpbmcgYiB0OyAqKVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBFbXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGVtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2VtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJvbGQgbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8c3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3N0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoVWwgbHxPbCBsfFVscCBsfE9scCBsIGFzIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjxvbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8dWw+XCIpO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGxpPlwiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGluZGVudCsyKSBsaTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9saT5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgbDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPC9vbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8L3VsPlwiKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwcmU+PGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiXG4gICAgICAgICAgICAgICFkZWZhdWx0X2xhbmd1YWdlICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZyBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+PC9wcmU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZShsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoci8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXdfYmxvY2sgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSBhcyBlIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IEh0bWxfY29tbWVudCBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBzIGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxhIGhyZWY9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDEgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDEgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDEgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDIgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDIgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDIgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDMgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDMgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDMgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDQgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDQgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDQgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oND5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDUgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDUgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDUgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDYgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDYgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDYgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBOTCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbmwyYnIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICBpblxuICBsb29wIDAgbWQ7XG4gIEJ1ZmZlci5jb250ZW50cyBiLCBMaXN0LnJldiAhaGVhZGVyc1xuXG5hbmQgc3RyaW5nX29mX2F0dHJzIGF0dHJzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICBlbHNlIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAoKiBpZiBodG1sNCB0aGVuICopXG4gICAgICAgICgqICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSBhICopXG4gICAgICAgICgqIGVsc2UgKilcbiAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmFuZCBodG1sX29mX21kXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3NcbiAgICBtZFxuICA9XG4gIGZzdCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyID9jcyBtZClcbmFuZCBoZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kID1cbiAgc25kIChodG1sX2FuZF9oZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kKVxuXG5cbmxldCByZWMgc2V4cHJfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT5cbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICBsb29wIHQ7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHgjdG9fc2V4cHIgc2V4cHJfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCbG9ja3F1b3RlXCI7XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmVmICVTICVTKVwiIG5hbWUgdGV4dDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nX3JlZiAlUyAlUylcIiBuYW1lIGFsdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoUGFyYWdyYXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWcgJVMgJVMgJVMpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihUZXh0ICVTXCIgdDtcbiAgICAgICAgbGV0IHJlYyBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICAgICAgYnByaW50ZiBiIFwiICVTXCIgdDtcbiAgICAgICAgICAgIGYgdGxcbiAgICAgICAgICB8IHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgdGwgPSBmIHRsIGluXG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEVtcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJvbGRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9scFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGUgJVMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZV9ibG9jayAlcylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEhyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXdfYmxvY2sgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWwgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2Jsb2NrICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9jb21tZW50ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVXJsICVTICVTICVTKVwiIGhyZWYgKGh0bWxfb2ZfbWQgcykgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDFcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgzXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg2XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoTkwpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKiAyKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcuJyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPiAwICYmXG4gICAgICAgICAgIG1hdGNoIHMuW2ktMV0gd2l0aFxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICdcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJy0nIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgKHMuW2krMV0gPSAnICd8fHMuW2krMV0gPSAnLScpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcrJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyEnIGFzIGMgLT5cbiAgICAgICAgaWYgaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnWycgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPCcgYXMgYyAtPlxuICAgICAgICBpZiBpIDw+IFN0cmluZy5sZW5ndGggcyAtIDEgJiZcbiAgICAgICAgICAgICAobWF0Y2ggcy5baSsxXSB3aXRoICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc+JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPSAwIHx8XG4gICAgICAgICAgICAgKG1hdGNoIHMuW2ktMV0gd2l0aCAnICcgfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIycgYXMgYyAtPlxuICAgICAgICAgaWYgaSA9IDAgfHwgcy5baS0xXSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnXFxcXCcgfCAnWycgfCAnXScgfCAnKCcgfCAnKScgfCAnYCcgfCAnKicgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgZG9uZTtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmVjIG1hcmtkb3duX29mX21kIG1kID1cbiAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpXFxuJSFcIiAoc2V4cHJfb2ZfbWQgbWQpO1xuICBsZXQgcXVvdGUgPyhpbmRlbnQ9MCkgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmVjIGxvb3AgbmwgaSA9XG4gICAgICBpZiBpIDwgbCB0aGVuXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgbmwgJiYgaSA8IGwgLSAxIHRoZW5cbiAgICAgICAgICAgIChmb3IgaSA9IDEgdG8gaW5kZW50IGRvXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICdcbiAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+IFwiKTtcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGluIGxvb3AgdHJ1ZSAwXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgYWRkX3NwYWNlcyBuID0gZm9yIGkgPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJyAnIGRvbmUgaW5cbiAgbGV0IHJlZmVyZW5jZXMgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgPyhmc3RfcF9pbl9saT10cnVlKSA/KGlzX2luX2xpc3Q9ZmFsc2UpIGxpc3RfaW5kZW50IGwgPVxuICAgICgqIFtsaXN0X2luZGVudDogaW50XSBpcyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgaW4gbnVtYmVyIG9mIHNwYWNlcy4gKilcbiAgICAoKiBbaXNfaW5fbGlzdDogYm9vbF0gaXMgbmVjZXNzYXJ5IHRvIGtub3cgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmFncmFwaFxuICAgICAgIHdoaWNoIGlzIGluc2lkZSBhIGxpc3QgaXRlbSBiZWNhdXNlIHRob3NlIG5lZWQgdG8gYmUgaW5kZW50ZWQhICopXG4gICAgbGV0IGxvb3AgPyhmc3RfcF9pbl9saT1mc3RfcF9pbl9saSkgPyhpc19pbl9saXN0PWlzX2luX2xpc3QpIGxpc3RfaW5kZW50IGwgPVxuICAgICAgICBsb29wIH5mc3RfcF9pbl9saTpmc3RfcF9pbl9saSB+aXNfaW5fbGlzdDppc19pbl9saXN0IGxpc3RfaW5kZW50IGxcbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGxpc3RfaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHF1b3RlIH5pbmRlbnQ6bGlzdF9pbmRlbnQgKG1hcmtkb3duX29mX21kIHEpKTtcbiAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgIGlmIGlzX2luX2xpc3QgdGhlblxuICAgICAgICBpZiBmc3RfcF9pbl9saSB0aGVuXG4gICAgICAgICAgYWRkX3NwYWNlcyAobGlzdF9pbmRlbnQtMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCBtZDtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCJcXG5cXG5cIjtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiFbJXNdKCVzIFxcXCIlc1xcXCIpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHQpO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgYztcbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiLSBcIjtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgaW5jciBjO1xuICAgICAgICBicHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICkgbDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBicHJpbnRmIGIgXCIrIFwiO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfXG4gICAgICB8IE5MOjooSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6XyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJ1xuICAgICAgfCBfIC0+ICgpXG4gICAgICBlbmQ7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlKF9sYW5nLCBjKSA6OiB0bCAtPiAoKiBGSVhNRSAqKVxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciAobjppbnQpIChzOmludCBsaXN0KSA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHggYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgIHwgW10gLT4geCsxXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIHggKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAobWF4IGIgeCkgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzE7MjszOzQ7NTs2Ozc7ODs5OzEwXSAwIDAgMFxuICAgICAgaW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGlmIGMuWzBdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIGM7XG4gICAgICAgICAgaWYgYy5bU3RyaW5nLmxlbmd0aCBjIC0gMV0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIG4gcyA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgICAgfCBbXSAtPiAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgbiBzID1cbiAgICAgICAgbGV0IHJlYyBsb29wIHAgaSA9XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICcgJyk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICBpbiBsb29wICdcXG4nIDBcbiAgICAgIGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gICgqIEZJWE1FICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICgqIGNhc2Ugd2hlcmUgd2UgY2FuJ3QgdXNlIGJhY2txdW90ZXMgKilcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrICg0K2xpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCJcbiAgICAgICAgICBlbmRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXMlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJylcbiAgICAgICAgICAgICAgKGlmIGxhbmcgPSBcIlwiIHRoZW4gIWRlZmF1bHRfbGFuZ3VhZ2UgZWxzZSBsYW5nKTtcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAobGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKiAqICpcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgKEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpKTo6dGwgLT5cbiAgICAgIGxldCBuZWVkc19uZXdsaW5lcyA9XG4gICAgICAgIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgfCBOTCA6OiBQYXJhZ3JhcGggcCA6OiBfXG4gICAgICAgIHwgUGFyYWdyYXBoIHAgOjogXyAtPiBwIDw+IFtdXG4gICAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICAgIHwgVWwgXyB8IE9sIF8gfCBVbHAgXyB8IE9scCBfIHwgQ29kZSAoXywgXykgfCBDb2RlX2Jsb2NrIChfLCBfKVxuICAgICAgICAgIHwgVGV4dCBfIHwgRW1waCBfIHwgQm9sZCBfIHwgQnIgfEhyIHwgVXJsIChfLCBfLCBfKVxuICAgICAgICAgIHwgUmVmIChfLCBfLCBfLCBfKSB8IEltZ19yZWYgKF8sIF8sIF8sIF8pXG4gICAgICAgICAgfCBIdG1sIChfLCBfLCBfKVxuICAgICAgICAgIHwgQmxvY2txdW90ZSBfIHwgSW1nIChfLCBfLCBfKSkgOjogXyAtPiB0cnVlXG4gICAgICAgIHwgKCBIdG1sX2Jsb2NrIChfLCBfLCBfKSB8IEh0bWxfY29tbWVudCBfXG4gICAgICAgICAgfCBSYXcgX3xSYXdfYmxvY2sgXykgOjogXy0+IGZhbHNlXG4gICAgICAgIHwgWCBfIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBOTCA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgIChcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICAgIGVsc2VcbiAgICAgICAgKFxuICAgICAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcylcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZlxuICAgICAgZWxzZVxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzIFxcXCIlc1xcXCIpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWYgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID0gMVxuICAgICAgfHwgKEJ1ZmZlci5sZW5ndGggYiA+IDEgJiZcbiAgICAgICAgICBub3QoQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA9ICdcXG4nXG4gICAgICAgICAgICAgICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMikgPSAnXFxuJykpXG4gICAgICB0aGVuXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgMCBtZDtcbiAgICBiZWdpbiBtYXRjaCAhcmVmZXJlbmNlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChuYW1lLCAodXJsLCB0aXRsZSkpIC0+XG4gICAgICAgICAgICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXG5cIiBuYW1lIHVybFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXFwiJXNcXFwiXFxuXCIgbmFtZSB1cmwgdGl0bGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHIjZ2V0X2FsbFxuICAgIGVuZDtcbiAgICBsZXQgcmVzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpID0+ICVTXFxuJSFcIlxuICAgICAgICAoc2V4cHJfb2ZfbWQgbWQpIHJlcztcbiAgICByZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW1wbGVtZW50YXRpb24gbm90ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICogLSBUaGlzIG1vZHVsZSBzaG91bGQgZGVwZW5kIG9uIE9DYW1sJ3Mgc3RhbmRhcmQgbGlicmFyeSBvbmx5IGFuZFxuICAgKiBzaG91bGQgYmUgYXMgJ3B1cmUgT0NhbWwnIChpLmUuIGRlcGVuZCBhcyBsZWFzdCBhcyBwb3NzaWJsZSBvblxuICAgKiBleHRlcm5hbCB0b29scykgYXMgcG9zc2libGUuXG5cbiAgICogLSBgd2hpbGUnIGxvb3BzIGFyZSBzb21ldGltZXMgcHJlZmVycmVkIHRvIHJlY3Vyc2lvbiBiZWNhdXNlIHRoaXNcbiAgICogbWF5IGJlIHVzZWQgb24gc3lzdGVtcyB3aGVyZSB0YWlsIHJlY3Vyc2lvbiBpcyBub3Qgd2VsbFxuICAgKiBzdXBwb3J0ZWQuIChJIHRyaWVkIHRvIHdyaXRlIFwid2hpbGVcIiBhcyBvZnRlbiBhcyBwb3NzaWJsZSwgYnV0IGl0XG4gICAqIHR1cm5lZCBvdXQgdGhhdCBpdCB3YXMgcHJldHR5IGluY29udmVuaWVudCwgc28gSSBkbyB1c2VcbiAgICogcmVjdXJzaW9uLiAgV2hlbiBJIGhhdmUgdGltZSwgSSdsbCBkbyBzb21lIHRlc3RzIGFuZCBzZWUgaWYgSVxuICAgKiBuZWVkIHRvIGNvbnZlcnQgcmVjdXJzaXZlIGxvb3BzIGludG8gaXRlcmF0aXZlIGxvb3BzLiBTb3JyeSBpZiBpdFxuICAgKiBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4pXG5cbiopXG5cbigqIGNsYXNzIHR5cGUgdGFnID0gb2JqZWN0IG1ldGhvZCBpc19tZSA6ICdhLiAnYSAtPiBib29sIGVuZCAqKVxuXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxuXG50eXBlIHRva2VuID0gT21kX3JlcHJlc2VudGF0aW9uLnRva1xudHlwZSB0ID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG5cbmxldCBzdHJpbmdfb2ZfdG9rZW4gPSBmdW5jdGlvblxuICB8IFRhZyAobmFtZSwgbykgLT5cbiAgICBpZiBPbWRfdXRpbHMuZGVidWcgdGhlbiBcIlRBRyhcIl5uYW1lXlwiKVwiIF4gbyN0b19zdHJpbmcgZWxzZSBvI3RvX3N0cmluZ1xuICB8IEFtcGVyc2FuZCAtPiBcIiZcIlxuICB8IEFtcGVyc2FuZHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcmJ1xuICB8IEF0IC0+IFwiQFwiXG4gIHwgQXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnQCdcbiAgfCBCYWNrcXVvdGUgLT4gXCJgXCJcbiAgfCBCYWNrcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnYCdcbiAgfCBCYWNrc2xhc2ggLT4gXCJcXFxcXCJcbiAgfCBCYWNrc2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxcXCdcbiAgfCBCYXIgLT4gXCJ8XCJcbiAgfCBCYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfCdcbiAgfCBDYXJldCAtPiBcIl5cIlxuICB8IENhcmV0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ14nXG4gIHwgQ2JyYWNlIC0+IFwifVwiXG4gIHwgQ2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ30nXG4gIHwgQ29sb24gLT4gXCI6XCJcbiAgfCBDb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc6J1xuICB8IENvbW1hIC0+IFwiLFwiXG4gIHwgQ29tbWFzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLCdcbiAgfCBDcGFyZW50aGVzaXMgLT4gXCIpXCJcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKSdcbiAgfCBDYnJhY2tldCAtPiBcIl1cIlxuICB8IENicmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ10nXG4gIHwgRG9sbGFyIC0+IFwiJFwiXG4gIHwgRG9sbGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyQnXG4gIHwgRG90IC0+IFwiLlwiXG4gIHwgRG90cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy4nXG4gIHwgRG91YmxlcXVvdGUgLT4gXCJcXFwiXCJcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcIidcbiAgfCBFeGNsYW1hdGlvbiAtPiBcIiFcIlxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyEnXG4gIHwgRXF1YWwgLT4gXCI9XCJcbiAgfCBFcXVhbHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc9J1xuICB8IEdyZWF0ZXJ0aGFuIC0+IFwiPlwiXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPidcbiAgfCBIYXNoIC0+IFwiI1wiXG4gIHwgSGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcjJ1xuICB8IExlc3N0aGFuIC0+IFwiPFwiXG4gIHwgTGVzc3RoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPCdcbiAgfCBNaW51cyAtPiBcIi1cIlxuICB8IE1pbnVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy0nXG4gIHwgTmV3bGluZSAtPiBcIlxcblwiXG4gIHwgTmV3bGluZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXG4nXG4gIHwgTnVtYmVyIHMgLT4gc1xuICB8IE9icmFjZSAtPiBcIntcIlxuICB8IE9icmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd7J1xuICB8IE9wYXJlbnRoZXNpcyAtPiBcIihcIlxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcoJ1xuICB8IE9icmFja2V0IC0+IFwiW1wiXG4gIHwgT2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnWydcbiAgfCBQZXJjZW50IC0+IFwiJVwiXG4gIHwgUGVyY2VudHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICclJ1xuICB8IFBsdXMgLT4gXCIrXCJcbiAgfCBQbHVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJysnXG4gIHwgUXVlc3Rpb24gLT4gXCI/XCJcbiAgfCBRdWVzdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc/J1xuICB8IFF1b3RlIC0+IFwiJ1wiXG4gIHwgUXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFwnJ1xuICB8IFNlbWljb2xvbiAtPiBcIjtcIlxuICB8IFNlbWljb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc7J1xuICB8IFNsYXNoIC0+IFwiL1wiXG4gIHwgU2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLydcbiAgfCBTcGFjZSAtPiBcIiBcIlxuICB8IFNwYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyAnXG4gIHwgU3RhciAtPiBcIipcIlxuICB8IFN0YXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKidcbiAgfCBUYWIgLT4gXCIgICAgXCJcbiAgfCBUYWJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoKDIrbikqNCkgJyAnXG4gIHwgVGlsZGUgLT4gXCJ+XCJcbiAgfCBUaWxkZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd+J1xuICB8IFVuZGVyc2NvcmUgLT4gXCJfXCJcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ18nXG4gIHwgV29yZCBzIC0+IHNcblxuXG5sZXQgc2l6ZV9hbmRfbmV3bGluZXMgPSBmdW5jdGlvblxuICB8IFRhZyBfIC0+ICgwLCAwKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2VcbiAgfCBDb2xvbiB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3RcbiAgfCBEb3VibGVxdW90ZSB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhblxuICB8IE1pbnVzIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50IHwgUGx1c1xuICB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSAtPiAoMSwgMClcbiAgfCBBbXBlcnNhbmRzIHggfCBBdHMgeCB8IEJhY2txdW90ZXMgeCB8IEJhY2tzbGFzaHMgeCB8IEJhcnMgeCB8IENhcmV0cyB4XG4gIHwgQ2JyYWNlcyB4IHwgQ29sb25zIHggfCBDb21tYXMgeCB8IENwYXJlbnRoZXNpc3MgeCB8IENicmFja2V0cyB4XG4gIHwgRG9sbGFycyB4IHwgRG90cyB4XG4gIHwgRG91YmxlcXVvdGVzIHggfCBFeGNsYW1hdGlvbnMgeCB8IEVxdWFscyB4IHwgR3JlYXRlcnRoYW5zIHggfCBIYXNocyB4XG4gIHwgTGVzc3RoYW5zIHhcbiAgfCBNaW51c3MgeCB8IE9icmFjZXMgeCB8IE9wYXJlbnRoZXNpc3MgeCB8IE9icmFja2V0cyB4IHwgUGVyY2VudHMgeCB8IFBsdXNzIHhcbiAgfCBRdWVzdGlvbnMgeCB8IFF1b3RlcyB4IHwgU2VtaWNvbG9ucyB4IHwgU2xhc2hzIHggfCBTcGFjZXMgeCB8IFN0YXJzIHhcbiAgfCBUYWJzIHhcbiAgfCBUaWxkZXMgeCB8IFVuZGVyc2NvcmVzIHggLT4gKDIreCwgMClcbiAgfCBOZXdsaW5lIC0+ICgwLCAxKVxuICB8IE5ld2xpbmVzIHggLT4gKDAsIDIreClcbiAgfCBOdW1iZXIgcyB8IFdvcmQgcyAtPiAoU3RyaW5nLmxlbmd0aCBzLCAwKVxuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgYywgbmwgPSBzaXplX2FuZF9uZXdsaW5lcyB0IGluXG4gIGMgKyBubFxuXG5sZXQgc3BsaXRfZmlyc3QgPSBmdW5jdGlvblxuICB8IEFtcGVyc2FuZHMgbiAtPiBBbXBlcnNhbmQsIChpZiBuID4gMCB0aGVuIEFtcGVyc2FuZHMobi0xKSBlbHNlIEFtcGVyc2FuZClcbiAgfCBBdHMgbiAtPiBBdCwgKGlmIG4gPiAwIHRoZW4gQXRzKG4tMSkgZWxzZSBBdClcbiAgfCBCYWNrcXVvdGVzIG4gLT4gQmFja3F1b3RlLCAoaWYgbiA+IDAgdGhlbiBCYWNrcXVvdGVzKG4tMSkgZWxzZSBCYWNrcXVvdGUpXG4gIHwgQmFja3NsYXNocyBuIC0+IEJhY2tzbGFzaCwgKGlmIG4gPiAwIHRoZW4gQmFja3NsYXNocyhuLTEpIGVsc2UgQmFja3NsYXNoKVxuICB8IEJhcnMgbiAtPiBCYXIsIChpZiBuID4gMCB0aGVuIEJhcnMobi0xKSBlbHNlIEJhcilcbiAgfCBDYXJldHMgbiAtPiBDYXJldCwgKGlmIG4gPiAwIHRoZW4gQ2FyZXRzKG4tMSkgZWxzZSBDYXJldClcbiAgfCBDYnJhY2VzIG4gLT4gQ2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBDYnJhY2VzKG4tMSkgZWxzZSBDYnJhY2UpXG4gIHwgQ29sb25zIG4gLT4gQ29sb24sIChpZiBuID4gMCB0aGVuIENvbG9ucyhuLTEpIGVsc2UgQ29sb24pXG4gIHwgQ29tbWFzIG4gLT4gQ29tbWEsIChpZiBuID4gMCB0aGVuIENvbW1hcyhuLTEpIGVsc2UgQ29tbWEpXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IENwYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gQ3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXMpXG4gIHwgQ2JyYWNrZXRzIG4gLT4gQ2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIENicmFja2V0cyhuLTEpIGVsc2UgQ2JyYWNrZXQpXG4gIHwgRG9sbGFycyBuIC0+IERvbGxhciwgKGlmIG4gPiAwIHRoZW4gRG9sbGFycyhuLTEpIGVsc2UgRG9sbGFyKVxuICB8IERvdHMgbiAtPiBEb3QsIChpZiBuID4gMCB0aGVuIERvdHMobi0xKSBlbHNlIERvdClcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBEb3VibGVxdW90ZSwgKGlmIG4gPiAwIHRoZW4gRG91YmxlcXVvdGVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZSlcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBFeGNsYW1hdGlvbiwgKGlmIG4gPiAwIHRoZW4gRXhjbGFtYXRpb25zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbilcbiAgfCBFcXVhbHMgbiAtPiBFcXVhbCwgKGlmIG4gPiAwIHRoZW4gRXF1YWxzKG4tMSkgZWxzZSBFcXVhbClcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbiwgKGlmIG4gPiAwIHRoZW4gR3JlYXRlcnRoYW5zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbilcbiAgfCBIYXNocyBuIC0+IEhhc2gsIChpZiBuID4gMCB0aGVuIEhhc2hzKG4tMSkgZWxzZSBIYXNoKVxuICB8IExlc3N0aGFucyBuIC0+IExlc3N0aGFuLCAoaWYgbiA+IDAgdGhlbiBMZXNzdGhhbnMobi0xKSBlbHNlIExlc3N0aGFuKVxuICB8IE1pbnVzcyBuIC0+IE1pbnVzLCAoaWYgbiA+IDAgdGhlbiBNaW51c3Mobi0xKSBlbHNlIE1pbnVzKVxuICB8IE5ld2xpbmVzIG4gLT4gTmV3bGluZSwgKGlmIG4gPiAwIHRoZW4gTmV3bGluZXMobi0xKSBlbHNlIE5ld2xpbmUpXG4gIHwgT2JyYWNlcyBuIC0+IE9icmFjZSwgKGlmIG4gPiAwIHRoZW4gT2JyYWNlcyhuLTEpIGVsc2UgT2JyYWNlKVxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBPcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIE9wYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzKVxuICB8IE9icmFja2V0cyBuIC0+IE9icmFja2V0LCAoaWYgbiA+IDAgdGhlbiBPYnJhY2tldHMobi0xKSBlbHNlIE9icmFja2V0KVxuICB8IFBlcmNlbnRzIG4gLT4gUGVyY2VudCwgKGlmIG4gPiAwIHRoZW4gUGVyY2VudHMobi0xKSBlbHNlIFBlcmNlbnQpXG4gIHwgUGx1c3MgbiAtPiBQbHVzLCAoaWYgbiA+IDAgdGhlbiBQbHVzcyhuLTEpIGVsc2UgUGx1cylcbiAgfCBRdWVzdGlvbnMgbiAtPiBRdWVzdGlvbiwgKGlmIG4gPiAwIHRoZW4gUXVlc3Rpb25zKG4tMSkgZWxzZSBRdWVzdGlvbilcbiAgfCBRdW90ZXMgbiAtPiBRdW90ZSwgKGlmIG4gPiAwIHRoZW4gUXVvdGVzKG4tMSkgZWxzZSBRdW90ZSlcbiAgfCBTZW1pY29sb25zIG4gLT4gU2VtaWNvbG9uLCAoaWYgbiA+IDAgdGhlbiBTZW1pY29sb25zKG4tMSkgZWxzZSBTZW1pY29sb24pXG4gIHwgU2xhc2hzIG4gLT4gU2xhc2gsIChpZiBuID4gMCB0aGVuIFNsYXNocyhuLTEpIGVsc2UgU2xhc2gpXG4gIHwgU3BhY2VzIG4gLT4gU3BhY2UsIChpZiBuID4gMCB0aGVuIFNwYWNlcyhuLTEpIGVsc2UgU3BhY2UpXG4gIHwgU3RhcnMgbiAtPiBTdGFyLCAoaWYgbiA+IDAgdGhlbiBTdGFycyhuLTEpIGVsc2UgU3RhcilcbiAgfCBUYWJzIG4gLT4gVGFiLCAoaWYgbiA+IDAgdGhlbiBUYWJzKG4tMSkgZWxzZSBUYWIpXG4gIHwgVGlsZGVzIG4gLT4gVGlsZGUsIChpZiBuID4gMCB0aGVuIFRpbGRlcyhuLTEpIGVsc2UgVGlsZGUpXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBVbmRlcnNjb3JlLCAoaWYgbiA+IDAgdGhlbiBVbmRlcnNjb3JlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmUpXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZSB8IENvbG9uXG4gIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdCB8IERvdWJsZXF1b3RlXG4gIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuIHwgTWludXNcbiAgfCBOZXdsaW5lIHwgTnVtYmVyIF8gfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnRcbiAgfCBQbHVzIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIHwgVGFnIF8gfCBXb3JkIF8gLT5cbiAgICAgaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIuc3BsaXRfZmlyc3RcIlxuXG5tb2R1bGUgdHlwZSBJbnB1dCA9XG5zaWdcbiAgdHlwZSB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuICB2YWwgc3ViIDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIExleChJIDogSW5wdXQpIDpcbnNpZ1xuICB2YWwgbGV4IDogSS50IC0+IHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IGxleCAocyA6IEkudCkgPVxuICAgIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGwgPSBJLmxlbmd0aCBzIGluXG4gICAgbGV0IHJjb3VudCBjID1cbiAgICAgICgqIFtyY291bnQgY10gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGltbWVkaWF0ZSBjb25zZWN1dGl2ZVxuICAgICAgICAgb2NjdXJyZW5jZXMgb2YgW2NdLiAgQnkgc2lkZS1lZmZlY3QsIGl0IGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlXG4gICAgICAgICBjb3VudGVyIFtpXS4gKilcbiAgICAgIGxldCByZWMgbG9vcCByID1cbiAgICAgICAgaWYgIWkgPSBsIHRoZW4gclxuICAgICAgICBlbHNlIGlmIEkuZ2V0IHMgIWkgPSBjIHRoZW4gKGluY3IgaTsgbG9vcCAocisxKSlcbiAgICAgICAgZWxzZSByXG4gICAgICBpblxuICAgICAgbG9vcCAxXG4gICAgaW5cbiAgICBsZXQgd29yZCAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJ1xuICAgICAgICAgICAgfCAnXCInIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonXG4gICAgICAgICAgICB8ICc7JyB8ICc+JyB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJ1xuICAgICAgICAgICAgfCAnJCcgfCAnJScgfCAnIScgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgICB8IGMgLT4gaW5jciBpOyBsb29wKClcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgbG9vcCgpXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfbnVtYmVyICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICB3aGlsZVxuICAgICAgICAhaSA8IGwgJiZcbiAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZG9cbiAgICAgICAgaW5jciBpXG4gICAgICBkb25lO1xuICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJycgfCAnXCInXG4gICAgICAgICAgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOicgfCAnOycgfCAnPidcbiAgICAgICAgICB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJyB8ICckJyB8ICclJyB8ICchJ1xuICAgICAgICAgIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpIDo9IHN0YXJ0O1xuICAgICAgICAgICAgICB3b3JkKClcbiAgICAgICAgZW5kXG4gICAgaW5cblxuICAgIGxldCBuX29jYyBjID0gaW5jciBpOyByY291bnQgYyBpblxuXG4gICAgd2hpbGUgIWkgPCBsIGRvXG4gICAgICBsZXQgYyA9IEkuZ2V0IHMgIWkgaW5cbiAgICAgIGxldCB3ID0gbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZSBlbHNlIFNwYWNlcyAobi0yKVxuICAgICAgICB8ICdcXHQnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlcygyKSBlbHNlIFNwYWNlcyg0Km4tMilcbiAgICAgICAgfCAnXFxuJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMgKG4tMilcbiAgICAgICAgfCAnXFxyJyAtPiAoKiBlbGltaW5hdGluZyBcXHIgYnkgY29udmVydGluZyBhbGwgc3R5bGVzIHRvIHVuaXggc3R5bGUgKilcbiAgICAgICAgICBpbmNyIGk7XG4gICAgICAgICAgbGV0IHJlYyBjb3VudF9ybiB4ID1cbiAgICAgICAgICAgIGlmICFpIDwgbCAmJiBJLmdldCBzICghaSkgPSAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIGlmICFpICsgMSA8IGwgJiYgSS5nZXQgcyAoIWkrMSkgPSAnXFxyJyB0aGVuXG4gICAgICAgICAgICAgICAgKGkgOj0gIWkgKyAyOyBjb3VudF9ybiAoeCsxKSlcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJuID0gMSArIGNvdW50X3JuIDAgaW5cbiAgICAgICAgICBpZiBybiA9IDEgdGhlblxuICAgICAgICAgICAgbWF0Y2ggbl9vY2MgYyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gTmV3bGluZVxuICAgICAgICAgICAgfCB4IC0+IGFzc2VydCh4Pj0yKTsgTmV3bGluZXMoeC0yKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChhc3NlcnQocm4+PTIpO05ld2xpbmVzKHJuLTIpKVxuICAgICAgICB8ICcjJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gSGFzaCBlbHNlIEhhc2hzIChuLTIpXG4gICAgICAgIHwgJyonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTdGFyIGVsc2UgU3RhcnMgKG4tMilcbiAgICAgICAgfCAnLScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE1pbnVzIGVsc2UgTWludXNzIChuLTIpXG4gICAgICAgIHwgJysnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQbHVzIGVsc2UgUGx1c3MgKG4tMilcbiAgICAgICAgfCAnYCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2txdW90ZSBlbHNlIEJhY2txdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFwnJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdW90ZSBlbHNlIFF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcIicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdWJsZXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXFxcJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrc2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQmFja3NsYXNocyAobi0yKVxuICAgICAgICB8ICdfJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVW5kZXJzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlcyAobi0yKVxuICAgICAgICB8ICdbJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ10nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2tldCBlbHNlIENicmFja2V0cyAobi0yKVxuICAgICAgICB8ICd7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNlIGVsc2UgT2JyYWNlcyAobi0yKVxuICAgICAgICB8ICd9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNlIGVsc2UgQ2JyYWNlcyAobi0yKVxuICAgICAgICB8ICcoJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnKScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENwYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJzonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb2xvbiBlbHNlIENvbG9ucyAobi0yKVxuICAgICAgICB8ICc7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2VtaWNvbG9uIGVsc2UgU2VtaWNvbG9ucyAobi0yKVxuICAgICAgICB8ICc+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW5zIChuLTIpXG4gICAgICAgIHwgJ34nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBUaWxkZSBlbHNlIFRpbGRlcyAobi0yKVxuICAgICAgICB8ICc8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMgKG4tMilcbiAgICAgICAgfCAnQCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEF0IGVsc2UgQXRzIChuLTIpXG4gICAgICAgIHwgJyYnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBbXBlcnNhbmQgZWxzZSBBbXBlcnNhbmRzIChuLTIpXG4gICAgICAgIHwgJ3wnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYXIgZWxzZSBCYXJzIChuLTIpXG4gICAgICAgIHwgJ14nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYXJldCBlbHNlIENhcmV0cyAobi0yKVxuICAgICAgICB8ICcsJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29tbWEgZWxzZSBDb21tYXMgKG4tMilcbiAgICAgICAgfCAnLicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdCBlbHNlIERvdHMgKG4tMilcbiAgICAgICAgfCAnLycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNsYXNoIGVsc2UgU2xhc2hzIChuLTIpXG4gICAgICAgIHwgJyQnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb2xsYXIgZWxzZSBEb2xsYXJzIChuLTIpXG4gICAgICAgIHwgJyUnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQZXJjZW50IGVsc2UgUGVyY2VudHMgKG4tMilcbiAgICAgICAgfCAnPScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEVxdWFsIGVsc2UgRXF1YWxzIChuLTIpXG4gICAgICAgIHwgJyEnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFeGNsYW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbnMgKG4tMilcbiAgICAgICAgfCAnPycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1ZXN0aW9uIGVsc2UgUXVlc3Rpb25zIChuLTIpXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiBtYXliZV9udW1iZXIoKVxuICAgICAgICB8IGMgLT4gd29yZCgpIGluXG4gICAgICByZXN1bHQgOj0gdyA6OiAhcmVzdWx0XG4gICAgZG9uZTtcbiAgICBMaXN0LnJldiAhcmVzdWx0XG5lbmRcblxubW9kdWxlIExleF9zdHJpbmcgPSBMZXgoU3RyaW5nTGFiZWxzKVxubGV0IGxleCA9IExleF9zdHJpbmcubGV4XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCxcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG5tb2R1bGUgQmlnYXJyYXlfaW5wdXQgOiBJbnB1dCB3aXRoIHR5cGUgdCA9IGJpZ3N0cmluZyA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEJBID0gQmlnYXJyYXlcblxuICB0eXBlIHQgPSBiaWdzdHJpbmdcbiAgbGV0IGdldCA9IEJBLkFycmF5MS5nZXRcbiAgbGV0IGxlbmd0aCA9IEJBLkFycmF5MS5kaW1cbiAgbGV0IHN1YiBhcnIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IHBvcyA8IDAgfHwgcG9zICsgbGVuID4gQkEuQXJyYXkxLmRpbSBhcnJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYXJyYXlfaW5wdXQuc3ViXCI7XG4gICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcyBpIChCQS5BcnJheTEudW5zYWZlX2dldCBhcnIgKGkgKyBwb3MpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5lbmRcbm1vZHVsZSBMZXhfYmlnYXJyYXkgPSBMZXgoQmlnYXJyYXlfaW5wdXQpXG5sZXQgbGV4X2JpZ2FycmF5ID0gTGV4X2JpZ2FycmF5LmxleFxuXG5sZXQgbWFrZV9zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgMCAtPiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCJcbiAgfCAxIC0+IFNwYWNlXG4gIHwgbiAtPiBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIiBlbHNlIFNwYWNlcyAobi0yKVxuXG5cbigqXG4oKiogW3N0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbC5cbiAgICBbZXN0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsXG4gICAgKHNhbWUgc2VtYW50aWNzIGFzIFtTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3RsIGwpXSkuICopXG5sZXQgc3RyaW5nX29mX3RsLCBlc3RyaW5nX29mX3RsID1cbiAgbGV0IGcgZXNjYXBlZCB0bCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDQyIGluXG4gICAgbGV0IHJlYyBsb29wIDogJ2EgdCBsaXN0IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGlmIGVzY2FwZWQgdGhlbiBTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3QgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN0cmluZ19vZl90IGUpO1xuICAgICAgICAgIGxvb3AgdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG4gICAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgdGw7IGIpXG4gIGluIGcgZmFsc2UsIGcgdHJ1ZVxuKilcblxubGV0IHN0cmluZ19vZl90b2tlbnMgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIExpc3QuaXRlciAoZnVuIGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX3Rva2VuIGUpKSB0bDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZGVzdHJpbmdfb2ZfdG9rZW5zID8obGltaXQ9bWF4X2ludCkgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgKGk6aW50KSAodGxpc3Q6dG9rIGxpc3QpIDogdW5pdCA9IG1hdGNoIHRsaXN0IHdpdGhcbiAgICB8IGU6OnRsIC0+XG4gICAgICAgIGlmIGxpbWl0ID0gaSB0aGVuXG4gICAgICAgICAgbG9vcCBpIFtdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90b2tlbiBlKSk7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiOjpcIjtcbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSkgdGxcbiAgICAgICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJbXVwiXG4gIGluXG4gICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIDAgdGw7IGIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy0yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBzZGVidWcgPSB0cnVlXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcbm1vZHVsZSBMID0gT21kX2xleGVyXG5cbnR5cGUgciA9IE9tZF9yZXByZXNlbnRhdGlvbi50XG4oKiogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuXG5hbmQgcCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIGNvbnRleHQgaW5mb3JtYXRpb246IHByZXZpb3VzIGVsZW1lbnRzICopXG5cbmFuZCBsID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogdG9rZW5zIHRvIHBhcnNlICopXG5cbmFuZCBtYWluX2xvb3AgPVxuICA/aHRtbDpib29sIC0+XG4gIHIgLT4gKCogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuICBwIC0+ICgqIGluZm86IHByZXZpb3VzIGVsZW1lbnRzICopXG4gIGwgLT4gKCogdG9rZW5zIHRvIHBhcnNlICopXG4gIE9tZF9yZXByZXNlbnRhdGlvbi50ICgqIGZpbmFsIHJlc3VsdCAqKVxuKCoqIG1vc3QgaW1wb3J0YW50IGxvb3AgKilcblxuXG4oKiogTi5CLiBQbGVhc2UgZG8gbm90IHVzZSB0YWJ1bGF0aW9ucyBpbiB5b3VyIE1hcmtkb3duIGZpbGUhICopXG5cbm1vZHVsZSB0eXBlIEVudiA9IHNpZ1xuICB2YWwgcmM6IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIHZhbCBleHRlbnNpb25zIDogT21kX3JlcHJlc2VudGF0aW9uLmV4dGVuc2lvbnNcbiAgdmFsIGRlZmF1bHRfbGFuZyA6IHN0cmluZ1xuICB2YWwgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA6IGJvb2xcbiAgdmFsIGJsaW5kX2h0bWwgOiBib29sXG4gIHZhbCBzdHJpY3RfaHRtbCA6IGJvb2xcbiAgdmFsIHdhcm5pbmcgOiBib29sXG4gIHZhbCB3YXJuX2Vycm9yIDogYm9vbFxuZW5kXG5cbm1vZHVsZSBVbml0ID0gc3RydWN0IGVuZFxuXG5tb2R1bGUgRGVmYXVsdF9lbnYgKFVuaXQ6c2lnIGVuZCkgOiBFbnYgPSBzdHJ1Y3RcbiAgbGV0IHJjID0gbmV3IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIGxldCBleHRlbnNpb25zID0gW11cbiAgbGV0IGRlZmF1bHRfbGFuZyA9IFwiXCJcbiAgbGV0IGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgPSB0cnVlXG4gIGxldCBibGluZF9odG1sID0gZmFsc2VcbiAgbGV0IHN0cmljdF9odG1sID0gZmFsc2VcbiAgbGV0IHdhcm5pbmcgPSBmYWxzZVxuICBsZXQgd2Fybl9lcnJvciA9IGZhbHNlXG5lbmRcblxubW9kdWxlIE1ha2UgKEVudjpFbnYpID1cbnN0cnVjdFxuICBpbmNsdWRlIEVudlxuXG4gIGxldCB3YXJuID0gT21kX3V0aWxzLndhcm4gfndlOndhcm5fZXJyb3JcblxuICAoKiogc2V0IG9mIGtub3duIEhUTUwgY29kZXMgKilcbiAgbGV0IGh0bWxjb2Rlc19zZXQgPSBTdHJpbmdTZXQub2ZfbGlzdCAoKiBUaGlzIGxpc3Qgc2hvdWxkIGJlIGNoZWNrZWQuLi4gKilcbiAgICAgICgqIGxpc3QgZXh0cmFjdGVkIGZyb206IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2NoYXJzZXQuaHRtbCAqKVxuICAgICAgWyBcIkFFbGlnXCI7ICBcIkFhY3V0ZVwiOyAgXCJBY2lyY1wiOyAgXCJBZ3JhdmVcIjsgXCJBbHBoYVwiOyAgXCJBcmluZ1wiOyAgXCJBdGlsZGVcIjtcbiAgICAgICAgXCJBdW1sXCI7IFwiQmV0YVwiOyAgXCJDY2VkaWxcIjsgXCJDaGlcIjsgXCJEYWdnZXJcIjsgIFwiRGVsdGFcIjsgXCJFVEhcIjsgXCJFYWN1dGVcIjtcbiAgICAgICAgXCJFY2lyY1wiOyAgXCJFZ3JhdmVcIjsgIFwiRXBzaWxvblwiOyAgIFwiRXRhXCI7ICBcIkV1bWxcIjsgIFwiR2FtbWFcIjsgIFwiSWFjdXRlXCI7XG4gICAgICAgIFwiSWNpcmNcIjsgXCJJZ3JhdmVcIjsgXCJJb3RhXCI7ICBcIkl1bWxcIjsgXCJLYXBwYVwiOyBcIkxhbWJkYVwiOyBcIk11XCI7IFwiTnRpbGRlXCI7XG4gICAgICAgIFwiTnVcIjsgIFwiT0VsaWdcIjsgIFwiT2FjdXRlXCI7ICAgXCJPY2lyY1wiOyAgXCJPZ3JhdmVcIjsgIFwiT21lZ2FcIjsgIFwiT21pY3JvblwiO1xuICAgICAgICBcIk9zbGFzaFwiOyAgXCJPdGlsZGVcIjsgIFwiT3VtbFwiOyAgXCJQaGlcIjsgIFwiUGlcIjsgIFwiUHJpbWVcIjsgIFwiUHNpXCI7ICBcIlJob1wiO1xuICAgICAgICBcIlNjYXJvblwiOyAgXCJTaWdtYVwiOyAgIFwiVEhPUk5cIjsgIFwiVGF1XCI7ICBcIlRoZXRhXCI7ICAgXCJVYWN1dGVcIjsgIFwiVWNpcmNcIjtcbiAgICAgICAgXCJVZ3JhdmVcIjsgXCJVcHNpbG9uXCI7IFwiVXVtbFwiOyBcIlhpXCI7IFwiWWFjdXRlXCI7IFwiWXVtbFwiOyBcIlpldGFcIjsgXCJhYWN1dGVcIjtcbiAgICAgICAgXCJhY2lyY1wiOyBcImFjdXRlXCI7IFwiYWVsaWdcIjsgXCJhZ3JhdmVcIjsgXCJhbGVmc3ltXCI7IFwiYWxwaGFcIjsgXCJhbXBcIjsgXCJhbmRcIjtcbiAgICAgICAgXCJhbmdcIjsgXCJhcmluZ1wiOyBcImFzeW1wXCI7ICBcImF0aWxkZVwiOyBcImF1bWxcIjsgXCJiZHF1b1wiOyBcImJldGFcIjsgXCJicnZiYXJcIjtcbiAgICAgICAgXCJidWxsXCI7ICBcImNhcFwiOyAgXCJjY2VkaWxcIjsgXCJjZWRpbFwiOyAgXCJjZW50XCI7ICBcImNoaVwiOyBcImNpcmNcIjsgIFwiY2x1YnNcIjtcbiAgICAgICAgXCJjb25nXCI7ICBcImNvcHlcIjsgXCJjcmFyclwiOyBcImN1cFwiOyAgXCJjdXJyZW5cIjsgXCJkQXJyXCI7ICBcImRhZ2dlclwiOyBcImRhcnJcIjtcbiAgICAgICAgXCJkZWdcIjsgIFwiZGVsdGFcIjsgIFwiZGlhbXNcIjsgICBcImRpdmlkZVwiOyAgXCJlYWN1dGVcIjsgIFwiZWNpcmNcIjsgIFwiZWdyYXZlXCI7XG4gICAgICAgIFwiZW1wdHlcIjsgIFwiZW1zcFwiOyBcImVuc3BcIjsgIFwiZXBzaWxvblwiOyBcImVxdWl2XCI7ICBcImV0YVwiOyAgXCJldGhcIjsgXCJldW1sXCI7XG4gICAgICAgIFwiZXVyb1wiOyAgXCJleGlzdFwiOyAgXCJmbm9mXCI7ICBcImZvcmFsbFwiOyAgXCJmcmFjMTJcIjsgIFwiZnJhYzE0XCI7ICBcImZyYWMzNFwiO1xuICAgICAgICBcImZyYXNsXCI7ICBcImdhbW1hXCI7ICBcImdlXCI7IFwiZ3RcIjsgIFwiaEFyclwiOyAgXCJoYXJyXCI7IFwiaGVhcnRzXCI7ICBcImhlbGxpcFwiO1xuICAgICAgICBcImlhY3V0ZVwiOyBcImljaXJjXCI7IFwiaWV4Y2xcIjsgXCJpZ3JhdmVcIjsgXCJpbWFnZVwiOyBcImluZmluXCI7IFwiaW50XCI7IFwiaW90YVwiO1xuICAgICAgICBcImlxdWVzdFwiOyBcImlzaW5cIjsgXCJpdW1sXCI7ICBcImthcHBhXCI7IFwibEFyclwiOyBcImxhbWJkYVwiOyBcImxhbmdcIjsgXCJsYXF1b1wiO1xuICAgICAgICBcImxhcnJcIjsgIFwibGNlaWxcIjsgIFwibGRxdW9cIjsgXCJsZVwiOyAgXCJsZmxvb3JcIjsgIFwibG93YXN0XCI7IFwibG96XCI7ICBcImxybVwiO1xuICAgICAgICBcImxzYXF1b1wiOyBcImxzcXVvXCI7IFwibHRcIjsgIFwibWFjclwiOyBcIm1kYXNoXCI7IFwibWljcm9cIjsgXCJtaWRkb3RcIjsgXCJtaW51c1wiO1xuICAgICAgICBcIm11XCI7IFwibmFibGFcIjsgIFwibmJzcFwiOyBcIm5kYXNoXCI7ICBcIm5lXCI7IFwibmlcIjsgXCJub3RcIjsgIFwibm90aW5cIjsgXCJuc3ViXCI7XG4gICAgICAgIFwibnRpbGRlXCI7ICBcIm51XCI7ICAgXCJvYWN1dGVcIjsgIFwib2NpcmNcIjsgIFwib2VsaWdcIjsgICBcIm9ncmF2ZVwiOyAgXCJvbGluZVwiO1xuICAgICAgICBcIm9tZWdhXCI7IFwib21pY3JvblwiOyBcIm9wbHVzXCI7IFwib3JcIjsgXCJvcmRmXCI7IFwib3JkbVwiOyBcIm9zbGFzaFwiOyBcIm90aWxkZVwiO1xuICAgICAgICBcIm90aW1lc1wiOyAgXCJvdW1sXCI7ICBcInBhcmFcIjsgIFwicGFydFwiOyAgXCJwZXJtaWxcIjsgXCJwZXJwXCI7ICBcInBoaVwiOyAgXCJwaVwiO1xuICAgICAgICBcInBpdlwiOyAgXCJwbHVzbW5cIjsgIFwicG91bmRcIjsgXCJwcmltZVwiOyAgXCJwcm9kXCI7ICBcInByb3BcIjsgXCJwc2lcIjsgIFwicXVvdFwiO1xuICAgICAgICBcInJBcnJcIjsgIFwicmFkaWNcIjsgXCJyYW5nXCI7IFwicmFxdW9cIjsgIFwicmFyclwiOyBcInJjZWlsXCI7ICBcInJkcXVvXCI7IFwicmVhbFwiO1xuICAgICAgICBcInJlZ1wiOyBcInJmbG9vclwiOyAgXCJyaG9cIjsgXCJybG1cIjsgXCJyc2FxdW9cIjsgIFwicnNxdW9cIjsgXCJzYnF1b1wiOyBcInNjYXJvblwiO1xuICAgICAgICBcInNkb3RcIjsgIFwic2VjdFwiOyAgXCJzaHlcIjsgXCJzaWdtYVwiOyAgXCJzaWdtYWZcIjsgIFwic2ltXCI7IFwic3BhZGVzXCI7ICBcInN1YlwiO1xuICAgICAgICBcInN1YmVcIjsgXCJzdW1cIjsgXCJzdXBcIjsgXCJzdXAxXCI7ICBcInN1cDJcIjsgXCJzdXAzXCI7IFwic3VwZVwiOyBcInN6bGlnXCI7IFwidGF1XCI7XG4gICAgICAgIFwidGhlcmU0XCI7ICBcInRoZXRhXCI7IFwidGhldGFzeW1cIjsgIFwidGhpbnNwXCI7IFwidGhvcm5cIjsgIFwidGlsZGVcIjsgXCJ0aW1lc1wiO1xuICAgICAgICBcInRyYWRlXCI7IFwidUFyclwiOyBcInVhY3V0ZVwiOyAgXCJ1YXJyXCI7IFwidWNpcmNcIjsgXCJ1Z3JhdmVcIjsgXCJ1bWxcIjsgXCJ1cHNpaFwiO1xuICAgICAgICBcInVwc2lsb25cIjsgIFwidXVtbFwiOyBcIndlaWVycFwiOyBcInhpXCI7ICBcInlhY3V0ZVwiOyBcInllblwiOyAgXCJ5dW1sXCI7IFwiemV0YVwiO1xuICAgICAgICBcInp3alwiOyBcInp3bmpcIjsgXVxuXG5cbiAgKCoqIHNldCBvZiBrbm93biBpbmxpbmUgSFRNTCB0YWdzICopXG4gIGxldCBpbmxpbmVfaHRtbHRhZ3Nfc2V0ID1cbiAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgKCogZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvSW5saW5lX2VsZW1lbnRzICopXG4gICAgICAgICBbIFwiYlwiO1wiYmlnXCI7XCJpXCI7XCJzbWFsbFwiO1widHRcIjtcbiAgICAgICAgICAgXCJhYmJyXCI7XCJhY3JvbnltXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJkZm5cIjtcImVtXCI7XCJrYmRcIjtcInN0cm9uZ1wiO1wic2FtcFwiO1widmFyXCI7XG4gICAgICAgICAgIFwiYVwiO1wiYmRvXCI7XCJiclwiO1wiaW1nXCI7XCJtYXBcIjtcIm9iamVjdFwiO1wicVwiO1wic3BhblwiO1wic3ViXCI7XCJzdXBcIjtcbiAgICAgICAgICAgXCJidXR0b25cIjtcImlucHV0XCI7XCJsYWJlbFwiO1wic2VsZWN0XCI7XCJ0ZXh0YXJlYVwiO10pXG5cbiAgKCoqIE4uQi4gaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuIGlubGluZVxuICAgICAgdGFncyBhbmQgYmxvY2stbGV2ZWwgdGFnczogaW4gSFRNTDQgaXQgd2FzIG5vdCBjbGVhciwgaW4gSFRNTDVcbiAgICAgIGl0J3MgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLiBTbywgdGhlIGNob2ljZSAqaGVyZSogaXMgdG8gc3BlY2lmeVxuICAgICAgYSBzZXQgb2YgdGFncyBjb25zaWRlcmVkIGFzIFwiaW5saW5lXCIsIGNmLiBbaW5saW5lX2h0bWx0YWdzX3NldF0uXG4gICAgICBTbyB0aGVyZSB3aWxsIGJlIGlubGluZSB0YWdzLCBub24taW5saW5lIHRhZ3MsIGFuZCB1bmtub3duXG4gICAgICB0YWdzLiopXG5cbiAgKCoqIHNldCBvZiBIVE1MIHRhZ3MgdGhhdCBtYXkgYXBwZWFyIG91dCBvZiBhIGJvZHkgKilcbiAgbGV0IG5vdGluYm9keXRhZ3MgPSBTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgW1xuICAgICAgICBcInRpdGxlXCI7XG4gICAgICAgIFwibGlua1wiO1xuICAgICAgICBcIm1ldGFcIjtcbiAgICAgICAgXCJzdHlsZVwiO1xuICAgICAgICBcImh0bWxcIjtcbiAgICAgICAgXCJoZWFkXCI7XG4gICAgICAgIFwiYm9keVwiO1xuICAgICAgXVxuXG4gICgqKiBBbGwga25vd24gSFRNTCB0YWdzICopXG4gIGxldCBodG1sdGFnc19zZXQgPVxuICAgIFN0cmluZ1NldC51bmlvbiBub3RpbmJvZHl0YWdzXG4gICAgICAoU3RyaW5nU2V0LnVuaW9uIGlubGluZV9odG1sdGFnc19zZXRcbiAgICAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImFcIjtcImFiYnJcIjtcImFjcm9ueW1cIjtcImFkZHJlc3NcIjtcImFwcGxldFwiO1wiYXJlYVwiO1wiYXJ0aWNsZVwiO1wiYXNpZGVcIlxuICAgICAgICAgICAgICA7XCJhdWRpb1wiO1wiYlwiO1wiYmFzZVwiO1wiYmFzZWZvbnRcIjtcImJkaVwiO1wiYmRvXCI7XCJiaWdcIjtcImJsb2NrcXVvdGVcIlxuICAgICAgICAgICAgICA7XCJiclwiO1wiYnV0dG9uXCI7XCJjYW52YXNcIjtcImNhcHRpb25cIjtcImNlbnRlclwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiY29sXCJcbiAgICAgICAgICAgICAgO1wiY29sZ3JvdXBcIjtcImNvbW1hbmRcIjtcImRhdGFsaXN0XCI7XCJkZFwiO1wiZGVsXCI7XCJkZXRhaWxzXCI7XCJkZm5cIlxuICAgICAgICAgICAgICA7XCJkaWFsb2dcIjtcImRpclwiO1wiZGl2XCI7XCJkbFwiO1wiZHRcIjtcImVtXCI7XCJlbWJlZFwiO1wiZmllbGRzZXRcIlxuICAgICAgICAgICAgICA7XCJmaWdjYXB0aW9uXCI7XCJmaWd1cmVcIjtcImZvbnRcIjtcImZvb3RlclwiO1wiZm9ybVwiO1wiZnJhbWVcIjtcImZyYW1lc2V0XCJcbiAgICAgICAgICAgICAgO1wiaDJcIjtcImgzXCI7XCJoNFwiO1wiaDVcIjtcImg2XCJcbiAgICAgICAgICAgICAgO1wiaDFcIjtcImhlYWRlclwiO1wiaHJcIjtcImlcIjtcImlmcmFtZVwiO1wiaW1nXCI7XCJpbnB1dFwiO1wiaW5zXCI7XCJrYmRcIlxuICAgICAgICAgICAgICA7XCJrZXlnZW5cIjtcImxhYmVsXCI7XCJsZWdlbmRcIjtcImxpXCI7XCJtYXBcIjtcIm1hcmtcIjtcIm1lbnVcIjtcIm1ldGVyXCI7XCJuYXZcIlxuICAgICAgICAgICAgICA7XCJub2ZyYW1lc1wiO1wibm9zY3JpcHRcIjtcIm9iamVjdFwiO1wib2xcIjtcIm9wdGdyb3VwXCI7XCJvcHRpb25cIjtcIm91dHB1dFwiXG4gICAgICAgICAgICAgIDtcInBcIjtcInBhcmFtXCI7XCJwcmVcIjtcInByb2dyZXNzXCI7XCJxXCI7XCJycFwiO1wicnRcIjtcInJ1YnlcIjtcInNcIjtcInNhbXBcIlxuICAgICAgICAgICAgICA7XCJzY3JpcHRcIjtcInNlY3Rpb25cIjtcInNlbGVjdFwiO1wic21hbGxcIjtcInNvdXJjZVwiO1wic3BhblwiO1wic3RyaWtlXCJcbiAgICAgICAgICAgICAgO1wic3Ryb25nXCI7XCJzdHlsZVwiO1wic3ViXCI7XCJzdW1tYXJ5XCI7XCJzdXBcIjtcInRhYmxlXCI7XCJ0Ym9keVwiO1widGRcIlxuICAgICAgICAgICAgICA7XCJ0ZXh0YXJlYVwiO1widGZvb3RcIjtcInRoXCI7XCJ0aGVhZFwiO1widGltZVwiO1widHJcIjtcInRyYWNrXCI7XCJ0dFwiO1widVwiXG4gICAgICAgICAgICAgIDtcInVsXCI7XCJ2YXJcIjtcInZpZGVvXCI7XCJ3YnJcIlxuICAgICAgICAgICAgXSkpXG5cblxuICAoKiogVGhpcyBmdW5jdGlvbnMgZml4ZXMgYmFkIGxleGluZyB0cmVlcywgd2hpY2ggbWF5IGJlIGJ1aWx0IHdoZW5cbiAgICAgIGV4dHJhY3Rpb24gYSBwb3J0aW9uIG9mIGFub3RoZXIgbGV4aW5nIHRyZWUuICopXG4gIGxldCBmaXggbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgKCogY29kZSB0byBnZW5lcmF0ZSB3aGF0IGZvbGxvd3MuLi5cbiAgICAgICAgIExpc3QuaXRlciAoZnVuIGUgLT5cbiAgICAgICAgIFByaW50Zi5wcmludGYgXCJcbiAgICAgICAgIHwgJXM6OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAxXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyAwOjp0bClcbiAgICAgICAgIHwgJXNzIG46OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAyXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXM6OiVzcyBuOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAzXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXNzIGE6OiVzcyBiOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyA0XFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhhK2IrMik6OnRsKVwiXG4gICAgICAgICBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlKVxuICAgICAgICAgW1wiQW1wZXJzYW5kXCI7IFwiQXRcIjsgXCJCYWNrcXVvdGVcIjsgXCJCYWNrc2xhc2hcIjsgXCJCYXJcIjsgXCJDYXJldFwiOyBcIkNicmFjZVwiOyBcIkNvbG9uXCI7IFwiQ29tbWFcIjsgXCJDcGFyZW50aGVzaXNcIjsgXCJDYnJhY2tldFwiOyBcIkRvbGxhclwiOyBcIkRvdFwiOyBcIkRvdWJsZXF1b3RlXCI7IFwiRXhjbGFtYXRpb25cIjsgXCJFcXVhbFwiOyBcIkdyZWF0ZXJ0aGFuXCI7IFwiSGFzaFwiOyBcIkxlc3N0aGFuXCI7IFwiTWludXNcIjsgXCJOZXdsaW5lXCI7IFwiT2JyYWNlXCI7IFwiT3BhcmVudGhlc2lzXCI7IFwiT2JyYWNrZXRcIjsgXCJQZXJjZW50XCI7IFwiUGx1c1wiOyBcIlF1ZXN0aW9uXCI7IFwiUXVvdGVcIjsgXCJTZW1pY29sb25cIjsgXCJTbGFzaFwiOyBcIlNwYWNlXCI7IFwiU3RhclwiOyBcIlRhYlwiOyBcIlRpbGRlXCI7IFwiVW5kZXJzY29yZVwiXTtcbiAgICAgICAgIHByaW50X3N0cmluZyBcInwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcXG58IFtdIC0+IExpc3QucmV2IGFjY3VcXG5cIjsgKilcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyAwOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBuOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBhOjpBbXBlcnNhbmRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhhK2IrMik6OnRsKVxuICAgICAgfCBBdDo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMgMDo6dGwpXG4gICAgICB8IEF0cyBuOjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXQ6OkF0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdHMgYTo6QXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyAwOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBuOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBhOjpCYWNrcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzIDA6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIG46OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIGE6OkJhY2tzbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IEJhcjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMgMDo6dGwpXG4gICAgICB8IEJhcnMgbjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcjo6QmFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcnMgYTo6QmFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzIDA6OnRsKVxuICAgICAgfCBDYXJldHMgbjo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXRzIGE6OkNhcmV0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMgMDo6dGwpXG4gICAgICB8IENicmFjZXMgbjo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZXMgYTo6Q2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zIDA6OnRsKVxuICAgICAgfCBDb2xvbnMgbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb25zIGE6OkNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyAwOjp0bClcbiAgICAgIHwgQ29tbWFzIG46OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWFzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hcyBhOjpDb21tYXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhhK2IrMik6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIG46OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIGE6OkNwYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyAwOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIG46OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0cyBhOjpDYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzIDA6OnRsKVxuICAgICAgfCBEb2xsYXJzIG46OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXJzIGE6OkRvbGxhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKGErYisyKTo6dGwpXG4gICAgICB8IERvdDo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMgMDo6dGwpXG4gICAgICB8IERvdHMgbjo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdDo6RG90cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdHMgYTo6RG90cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzIDA6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgbjo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIGE6OkRvdWJsZXF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyAwOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIG46OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBhOjpFeGNsYW1hdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMgMDo6dGwpXG4gICAgICB8IEVxdWFscyBuOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFscyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbHMgYTo6RXF1YWxzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMoYStiKzIpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zIDA6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIGE6OkdyZWF0ZXJ0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzIDA6OnRsKVxuICAgICAgfCBIYXNocyBuOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2hzIGE6Okhhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyAwOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIG46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFucyBhOjpMZXNzdGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBNaW51czo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MgMDo6dGwpXG4gICAgICB8IE1pbnVzcyBuOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51c3MgYTo6TWludXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MoYStiKzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMgMDo6dGwpXG4gICAgICB8IE5ld2xpbmVzIG46Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgYTo6TmV3bGluZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyAwOjp0bClcbiAgICAgIHwgT2JyYWNlcyBuOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlcyBhOjpPYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIG46Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIGE6Ok9wYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyAwOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIG46Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0cyBhOjpPYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyAwOjp0bClcbiAgICAgIHwgUGVyY2VudHMgbjo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50cyBhOjpQZXJjZW50cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhhK2IrMik6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyAwOjp0bClcbiAgICAgIHwgUGx1c3Mgbjo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzcyBhOjpQbHVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMgMDo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBuOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgYTo6UXVlc3Rpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzIDA6OnRsKVxuICAgICAgfCBRdW90ZXMgbjo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGVzIGE6OlF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMgMDo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgYTo6U2VtaWNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzIDA6OnRsKVxuICAgICAgfCBTbGFzaHMgbjo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2hzIGE6OlNsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyAwOjp0bClcbiAgICAgIHwgU3BhY2VzIG46OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlcyBhOjpTcGFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyAwOjp0bClcbiAgICAgIHwgU3RhcnMgbjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFycyBhOjpTdGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBUYWI6OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzIDA6OnRsKVxuICAgICAgfCBUYWJzIG46OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWI6OlRhYnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWJzIGE6OlRhYnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKGErYisyKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyAwOjp0bClcbiAgICAgIHwgVGlsZGVzIG46OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlcyBhOjpUaWxkZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhhK2IrMik6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyAwOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgbjo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBhOjpVbmRlcnNjb3JlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhhK2IrMik6OnRsKXwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cblxuICAoKiBSZW1vdmUgYWxsIFtOTF0gYW5kIFtCcl0gYXQgdGhlIGJlZ2lubmluZy4gKilcbiAgbGV0IHJlYyByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKE5MIHwgQnIpIDo6IHRsIC0+IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsXG4gICAgfCBsIC0+IGxcblxuXG4gICgqKiAtIHJlY29nbml6ZXMgcGFyYWdyYXBoc1xuICAgICAgLSBnbHVlcyBmb2xsb3dpbmcgYmxvY2txdW90ZXMgICopXG4gIGxldCBtYWtlX3BhcmFncmFwaHMgbWQgPVxuICAgIGxldCByZWMgbG9vcCBjcCBhY2N1ID0gZnVuY3Rpb24gKCogY3AgbWVhbnMgY3VycmVudCBwYXJhZ3JhcGggKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gYWNjdVxuICAgICAgICAgIHwgKE5MfEJyKTo6Y3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICAgIHwgY3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICBpblxuICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICB8IEJsb2NrcXVvdGUgYjEgOjogQmxvY2txdW90ZSBiMiA6OiB0bCAtPlxuICAgICAgICBsb29wIGNwIGFjY3UgKEJsb2NrcXVvdGUoYjFAYjIpOjogdGwpXG4gICAgICB8IEJsb2NrcXVvdGUgYiA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IEJsb2NrcXVvdGUobG9vcCBbXSBbXSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChVbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBVbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChPbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBPbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IEh0bWxfY29tbWVudCBfIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gLT4gbG9vcCBbXSAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoZTo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGwpXG4gICAgICB8IChSYXdfYmxvY2sgXyB8IEh0bWxfYmxvY2sgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmNwQGFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChDb2RlX2Jsb2NrIF8gfCBIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgfCBPbCBfIHwgVWwgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IFRleHQgXCJcXG5cIiA6OiBfIHwgUGFyYWdyYXBoIF8gOjogXyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcIk9tZF9wYXJzZXIubWFrZV9wYXJhZ3JhcGhzXCJcbiAgICAgIHwgKE5MfEJyKSA6OiAoTkx8QnIpIDo6IHRsIC0+XG4gICAgICAgIGxldCB0bCA9IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoTkw6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgIHwgXyAtPiBsb29wIFtdIChQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgWCh4KSBhcyBlIDo6IHRsIC0+XG4gICAgICAgICgqIElmIHRoZSBleHRlbnNpb24gcmV0dXJucyBhIGJsb2NrIGFzIGZpcnN0IGVsZW1lbnQsXG4gICAgICAgICAgIHRoZW4gY29uc2lkZXIgdGhlIGV4dGVuc2lvbiBhcyBhIGJsb2NrLiBIb3dldmVyXG4gICAgICAgICAgIGRvbid0IHRha2UgaXRzIGNvbnRlbnRzIGFzIGl0IGlzIHlldCwgdGhlIGNvbnRlbnRzXG4gICAgICAgICAgIG9mIHRoZSBleHRlbnNpb24gc2hhbGwgYmUgY29uc2lkZXJlZCBmaW5hbCBhcyBsYXRlXG4gICAgICAgICAgIGFzIHBvc3NpYmxlLiAqKVxuICAgICAgICBiZWdpbiBtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICAgIHwgU29tZSh0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8ICggSDEgX1xuICAgICAgICAgICAgICB8IEgyIF9cbiAgICAgICAgICAgICAgfCBIMyBfXG4gICAgICAgICAgICAgIHwgSDQgX1xuICAgICAgICAgICAgICB8IEg1ICBfXG4gICAgICAgICAgICAgIHwgSDYgIF9cbiAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggIF9cbiAgICAgICAgICAgICAgfCBVbCBfXG4gICAgICAgICAgICAgIHwgT2wgX1xuICAgICAgICAgICAgICB8IFVscCBfXG4gICAgICAgICAgICAgIHwgT2xwIF9cbiAgICAgICAgICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBIclxuICAgICAgICAgICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgICAgICAgICB8IFJhd19ibG9jayBfXG4gICAgICAgICAgICAgIHwgQmxvY2txdW90ZSBfXG4gICAgICAgICAgICAgICkgOjogX1xuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3doaXRlX2NydW1icyBsID1cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBUZXh0IFwiIFwiIDo6IHRsXG4gICAgICAgIHwgTkw6OnRsXG4gICAgICAgIHwgQnI6OnRsXG4gICAgICAgICAgLT5cbiAgICAgICAgICBsb29wIHRsXG4gICAgICAgIHwgbCAtPiBsXG4gICAgICBpblxuICAgICAgTGlzdC5yZXYgKGxvb3AgKExpc3QucmV2IGwpKVxuICAgIGluXG4gICAgbGV0IHJlYyBjbGVhbl9wYXJhZ3JhcGhzID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHNcXG5cIjtcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFtdXG4gICAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiB0bFxuICAgICAgfCBQYXJhZ3JhcGgocCkgOjogdGwgLT5cbiAgICAgICAgUGFyYWdyYXBoKGNsZWFuX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV9pbml0aWFsX25ld2xpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVfd2hpdGVfY3J1bWJzKG5vcm1hbGlzZV9tZCBwKSkpKVxuICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgxIHYgOjogdGwgLT4gSDEoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDIgdiA6OiB0bCAtPiBIMihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMyB2IDo6IHRsIC0+IEgzKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg0IHYgOjogdGwgLT4gSDQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDUgdiA6OiB0bCAtPiBINShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINiB2IDo6IHRsIC0+IEg2KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEVtcGggdiA6OiB0bCAtPiBFbXBoKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQm9sZCB2IDo6IHRsIC0+IEJvbGQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbCB2IDo6IHRsIC0+IFVsKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9sIHYgOjogdGwgLT4gT2woTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWxwIHYgOjogdGwgLT4gVWxwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbHAgdiA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJsb2NrcXVvdGUgdiA6OiB0bCAtPiBCbG9ja3F1b3RlKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVXJsKGhyZWYsdix0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsKGNsZWFuX3BhcmFncmFwaHMgdiksdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVGV4dCBfXG4gICAgICB8IENvZGUgX1xuICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgIHwgQnJcbiAgICAgIHwgSHJcbiAgICAgIHwgTkxcbiAgICAgIHwgUmVmIF9cbiAgICAgIHwgSW1nX3JlZiBfXG4gICAgICB8IFJhdyBfXG4gICAgICB8IFJhd19ibG9jayBfXG4gICAgICB8IEh0bWwgX1xuICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICAgIHwgSW1nIF9cbiAgICAgIHwgWCBfIGFzIHYgOjogdGwgLT4gdiA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgaW5cbiAgICBsZXQgciA9IGNsZWFuX3BhcmFncmFwaHMobG9vcCBbXSBbXSBtZClcbiAgICBpblxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHMgJVMgLS0+ICVTXFxuJSFcIlxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgbWQpXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCByKTtcbiAgICByXG5cblxuICAoKiogW2Fzc2VydF93ZWxsX2Zvcm1lZF0gaXMgYSBkZXZlbG9wZXIncyBmdW5jdGlvbiB0aGF0IGhlbHBzIHRvXG4gICAgICB0cmFjayBiYWRseSBjb25zdHJ1Y3RlZCB0b2tlbiBsaXN0cy4gIFRoaXMgZnVuY3Rpb24gaGFzIGFuXG4gICAgICBlZmZlY3Qgb25seSBpZiBbdHJhY2tmaXhdIGlzIFt0cnVlXS4gICopXG4gIGxldCBhc3NlcnRfd2VsbF9mb3JtZWQgKGw6dG9rIGxpc3QpIDogdW5pdCA9XG4gICAgaWYgdHJhY2tmaXggdGhlblxuICAgICAgbGV0IHJlYyBlcXVpdiBsMSBsMiA9IG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICAgICAgfCBUYWcgXzo6dGwxLCBUYWcgXzo6dGwyLT4gZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT4gZTEgPSBlMiAmJiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGFzc2VydChlcXVpdiAoZml4IGwpIGwpO1xuICAgICAgKClcblxuICAoKiogR2VuZXJhdGUgZmFsbGJhY2sgZm9yIHJlZmVyZW5jZXMuICopXG4gIGxldCBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZXh0cmFjdF9mYWxsYmFja1xcbiUhXCI7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgICB8IGU6OnRsIGFzIHIgLT5cbiAgICAgICAgaWYgciA9PSByZW1haW5zIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBlLCByZW1haW5zIHdpdGhcbiAgICAgICAgICB8IENicmFja2V0cyAwLCBDYnJhY2tldDo6ciB3aGVuIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IENicmFja2V0cyBuLCBDYnJhY2tldHMgbTo6ciB3aGVuIG0gKyAxID0gbiAmJiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbGV0IGEgPSBsb29wIFtdIGwgaW5cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBMLnN0cmluZ19vZl90b2tlbnMgYVxuICAgICAgbWV0aG9kIHRvX3QgPSBbVGV4dChMLnN0cmluZ19vZl90b2tlbnMgYSldXG4gICAgZW5kXG5cblxuICBsZXQgdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ0FMTDogT21kX3BhcnNlci51bmluZGVudF9yZXZcXG4lIVwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IGNsID0gZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcyh4K3krMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDApOjp0bClcblxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjooXG4gICAgICAgICAgKE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgIHwgKChTdGFyfFBsdXN8TWludXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICAgIGFzIHRsKSBhcyBsIC0+XG4gICAgICAgIGlmIG4gPSBMLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBsb29wIChubDo6Y2xAYWNjdSkgW10gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICBsZXQgeCA9IEwubGVuZ3RoIHMgLSBuIGluXG4gICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KVxuICAgICAgICAgIChpZiB4ID4gMCB0aGVuIFtMLm1ha2Vfc3BhY2UgeF0gZWxzZSBbXSlcbiAgICAgICAgICB0bFxuICAgICAgfCBOZXdsaW5lcyhfKTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBOZXdsaW5lOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSAoZTo6Y2wpIHRsXG4gICAgICB8IFtdIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgW10sIHJpZ2h0IC0+IFtdLCByaWdodFxuICAgIHwgbCwgcmlnaHQgLT5cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgbCwgcmlnaHRcblxuICBsZXQgdW5pbmRlbnQgbiBsZXhlbWVzID1cbiAgICBsZXQgZnN0LCBzbmQgPSB1bmluZGVudF9yZXYgbiBsZXhlbWVzIGluXG4gICAgTGlzdC5yZXYgZnN0LCBzbmRcblxuICBsZXQgcmVjIGlzX2JsYW5rID0gZnVuY3Rpb25cbiAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+XG4gICAgICBpc19ibGFuayB0bFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBzZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cbiAgbGV0IHNtX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjooV29yZCBffE51bWJlciBfIGFzIHcpOjogdGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbdztzXSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IHVlbXBoX29yX2JvbGQgbiBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgaWYgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSB0aGVuXG4gICAgICBnaF91ZW1waF9vcl9ib2xkIG4gbFxuICAgIGVsc2VcbiAgICAgIHNtX3VlbXBoX29yX2JvbGQgbiBsXG5cbiAgbGV0IGVhdF9ibGFuayA9XG4gICAgZWF0IChmdW5jdGlvbiB8U3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfIC0+IHRydWV8IF8gLT4gZmFsc2UpXG5cblxuICAoKiB1c2VkIGJ5IHRhZ19fbWF5YmVfaDEgYW5kIHRhZ19fbWF5YmVfaDIgKilcbiAgbGV0IHNldGV4dF90aXRsZSBtYWluX2xvb3AgKGw6bCkgOiAoT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0ICogbCkgb3B0aW9uID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGRldGVjdF9iYWxhbmNlZF9icXMgbiByIGwgPVxuICAgICAgKCogSWYgdGhlcmUncyBhIGJhbGFuY2VkIChjb21wbGV0ZSkgYmFja3F1b3RlLXN0YXJ0ZWQgY29kZSBibG9ja1xuICAgICAgICAgdGhlbiBpdCBzaG91bGQgYmUgXCJpZ25vcmVkXCIsIGVsc2UgaXQgbWVhbnMgdGhlIGxpbmUgdGhhdFxuICAgICAgICAgZm9sbG93cyBpcyBwYXJ0IG9mIGEgY29kZSBibG9jaywgc28gaXQncyBub3QgZGVmaW5pbmcgYVxuICAgICAgICAgc2V0ZXh0LXN0eWxlIHRpdGxlLiAqKVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuPSVkIHI9JVMgbD0lU1xcbiUhXCJcbiAgICAgICAgICBuIChMLnN0cmluZ19vZl90b2tlbnMgcikgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChCYWNrcXVvdGUgYXMgYik6OnRsIHdoZW4gbiA9IDEgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCAoQmFja3F1b3RlcyB4IGFzIGIpOjp0bCB3aGVuIG4gPSB4KzIgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCBbXSlcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAxIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IEJhY2txdW90ZXMoeCk6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgKHgrMikgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgTmV3bGluZTo6KEVxdWFsfEVxdWFscyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIHRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuc2V0ZXh0X3RpdGxlIGlzIHdyb25nbHkgdXNlZCFcXG4lIVwiO1xuICAgICAgICBOb25lXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBpZiBtYXRjaCBsIHdpdGhcbiAgICAgIHwgTGVzc3RoYW46OldvcmQgXzo6XyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYWluX2xvb3AgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCAoSHRtbF9ibG9jayBfIHwgQ29kZV9ibG9jayBfIHwgUmF3X2Jsb2NrIF8pOjpfIC0+XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzdWx0ID0gbG9vcCBbXSBsIGluXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBzZXRleHRfdGl0bGUgbD0lUyByZXN1bHQ9JVMsJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB4KVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB0bCk7XG4gICAgICByZXN1bHRcblxuICBsZXQgdGFnX19tYXliZV9oMSAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDFcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDEobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMSBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tYXliZV9oMiAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDJcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDIobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMiBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tZCBtZCA9ICgqIFttZF0gc2hvdWxkIGJlIGluIHJldmVyc2UgKilcbiAgICBUYWcoXCJ0YWdfX21kXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gU29tZShtZEByLCBbXSwgbClcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgICApXG5cbiAgKCogTGV0J3MgdGFnIHRoZSBsaW5lcyB0aGF0ICptaWdodCogYmUgdGl0bGVzIHVzaW5nIHNldGV4dC1zdHlsZS5cbiAgICAgXCJtaWdodFwiIGJlY2F1c2UgaWYgdGhleSBhcmUsIGZvciBpbnN0YW5jZSwgaW4gYSBjb2RlIHNlY3Rpb24sXG4gICAgIHRoZW4gdGhleSBhcmUgbm90IHRpdGxlcyBhdCBhbGwuICopXG4gIGxldCB0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgcGwgcmVzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gfCBbTmV3bGluZXxOZXdsaW5lcyBfXSAtPlxuICAgICAgICBwbEByZXNcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooRXF1YWx8RXF1YWxzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgxLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98RXF1YWx8RXF1YWxzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gxIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooTWludXN8TWludXNzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgyLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TWludXN8TWludXNzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gyIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgfCBOZXdsaW5lcyBfIGFzIGUxKTo6dGwgLT5cbiAgICAgICAgbG9vcCBbXSAoZTE6OnBsQHJlcykgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cGwpIHJlcyB0bFxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgW10gW10gbGV4ZW1lcylcblxuXG4gIGxldCBocl9tIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lcyBffE5ld2xpbmUpOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBNaW51czo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBNaW51c3MgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyX3MgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IFN0YXI6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgU3RhcnMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyIGwgPVxuICAgIG1hdGNoIGhyX20gbCB3aXRoXG4gICAgfCBOb25lIC0+IGhyX3MgbFxuICAgIHwgU29tZSBfIGFzIHRsIC0+IHRsXG5cbiAgKCoqIFtiY29kZV0gcGFyc2VzIGNvZGUgdGhhdCdzIGRlbGltaXRlZCBieSBiYWNrcXVvdGUocykgKilcbiAgbGV0IGJjb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCBlLCB0bCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIC0+IGUsIHRsXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLmJjb2RlIGlzIHdyb25nbHkgY2FsbGVkXCJcbiAgICBpblxuICAgIGxldCByZWMgY29kZV9ibG9jayBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBCYWNrcXVvdGUgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChCYWNrcXVvdGU6OmFjY3UpIHRsXG4gICAgICB8IChCYWNrcXVvdGVzIG4gYXMgYik6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBiIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoYjo6YWNjdSkgdGxcbiAgICAgIHwgVGFnKF8sIF8pOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIGFjY3UgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIG1hdGNoIGNvZGVfYmxvY2sgW10gdGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKGNiLCBsKSAtPlxuICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBjYlxuICAgICAgJiYgKG1hdGNoIHAgd2l0aCBbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIChtYXRjaCBlIHdpdGggQmFja3F1b3RlcyBuIHdoZW4gbiA+IDAgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICB0aGVuXG4gICAgICAgIG1hdGNoIGNiIHdpdGhcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyAwIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyhOZXdsaW5lOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgbiA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgKE5ld2xpbmVzKG4tMSk6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNsZWFuX2Jjb2RlIHMgPVxuICAgICAgICAgIGxldCByZWMgbG9vcDEgaSA9XG4gICAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AxKGkrMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcDIgaSA9XG4gICAgICAgICAgICBpZiBpID0gLTEgdGhlbiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMihpLTEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpKzFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGxvb3AxIDAsIGxvb3AyIChTdHJpbmcubGVuZ3RoIHMgLSAxKSB3aXRoXG4gICAgICAgICAgfCAwLCBuIHdoZW4gbiA9IFN0cmluZy5sZW5ndGggcyAtIDEgLT4gc1xuICAgICAgICAgIHwgaSwgbiAtPiBTdHJpbmcuc3ViIHMgaSAobi1pKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIGNsZWFuX2Jjb2RlICVTID0+ICVTXFxuJSFcIiBjb2RlIChjbGVhbl9iY29kZSBjb2RlKTtcbiAgICAgICAgU29tZShDb2RlKGRlZmF1bHRfbGFuZywgY2xlYW5fYmNvZGUgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG5cblxuICBleGNlcHRpb24gTkxfZXhjZXB0aW9uXG4gIGV4Y2VwdGlvbiBQcmVtYXR1cmVfZW5kaW5nXG5cbiAgKCogISFETyBOT1QgREVMRVRFIFRISVMhIVxuICAgICBUaGUgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUgZ2VuZXJhdGVkIHBhcnQgdGhhdCBmb2xsb3dzIHJpZ2h0IGFmdGVyLlxuICAgICBMaXN0Lml0ZXIgKGZ1biAoYSxiLGMpIC0+XG4gICAgIHByaW50X2VuZGxpbmUgKFwibGV0IHJlYWRfdW50aWxfXCJeYV5cIiA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIG4gKFwiXmJeXCI6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFwiXG4gICAgICBeKGlmIGM8PlwiXCIgdGhlbiBcIlxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmNeXCI6OmFjY3UpIG4gKFwiXmNeXCI6OnRsKVxuICAgICAgfCBcIl5jXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgXCJeY15cInMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgXCIgZWxzZSBcIlwiKV5cbiAgICAgXCIgICAgfCBcIl5iXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBcIl5iXlwicyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwiOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgKG4tMSkgKFwiXmJeXCI6OnRsKVxuICAgICAgfCBcIl5iXlwicyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwicyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgXCJeYl5cIjo6YWNjdSAtPiBcIl5iXlwicygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgXCJeYl5cInMgeDo6YWNjdSAtPiBcIl5iXlwicyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFwiXmJeXCI6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFwiXmJeXCJzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWJcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXCIpKVxuXG4gICAgIFsgXCJndFwiLCBcIkdyZWF0ZXJ0aGFuXCIsIFwiTGVzc3RoYW5cIjtcbiAgICAgXCJsdFwiLCBcIkxlc3N0aGFuXCIsIFwiXCI7XG4gICAgIFwiY3BhcmVudGhcIiwgXCJDcGFyZW50aGVzaXNcIiwgXCJPcGFyZW50aGVzaXNcIjtcbiAgICAgXCJvcGFyZW50aFwiLCBcIk9wYXJlbnRoZXNpc1wiLCBcIlwiO1xuICAgICBcImRxXCIsIFwiRG91YmxlcXVvdGVcIiwgXCJcIjtcbiAgICAgXCJxXCIsIFwiUXVvdGVcIiwgXCJcIjtcbiAgICAgXCJvYnJhY2tldFwiLCBcIk9icmFja2V0XCIsIFwiXCI7XG4gICAgIFwiY2JyYWNrZXRcIiwgXCJDYnJhY2tldFwiLCBcIk9icmFja2V0XCI7XG4gICAgIFwic3BhY2VcIiwgXCJTcGFjZVwiLCBcIlwiO1xuICAgICBdXG4gICopXG5cbiAgKCogYmVnaW4gZ2VuZXJhdGVkIHBhcnQgKilcblxubGV0IHJlYWRfdW50aWxfZ3QgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSBuIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IExlc3N0aGFucyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBHcmVhdGVydGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgR3JlYXRlcnRoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIChuLTEpIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjphY2N1IC0+IEdyZWF0ZXJ0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIHg6OmFjY3UgLT4gR3JlYXRlcnRoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gR3JlYXRlcnRoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9sdCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIChuLTEpIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IExlc3N0aGFuOjphY2N1IC0+IExlc3N0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgTGVzc3RoYW5zIHg6OmFjY3UgLT4gTGVzc3RoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gTGVzc3RoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKExlc3N0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIG4gKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXM6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IENwYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENwYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gT3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9wYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9kcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIG4gKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBEb3VibGVxdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIChuLTEpIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjphY2N1IC0+IERvdWJsZXF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIHg6OmFjY3UgLT4gRG91YmxlcXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gRG91YmxlcXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKERvdWJsZXF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9xID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgbiAoUXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBRdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgKG4tMSkgKFF1b3RlOjp0bClcbiAgICAgIHwgUXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgUXVvdGU6OmFjY3UgLT4gUXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBRdW90ZXMgeDo6YWNjdSAtPiBRdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBRdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoUXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIChuLTEpIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9icmFja2V0OjphY2N1IC0+IE9icmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT2JyYWNrZXRzIHg6OmFjY3UgLT4gT2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9icmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIG4gKENicmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENicmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgKG4tMSkgKENicmFja2V0Ojp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ2JyYWNrZXQ6OmFjY3UgLT4gQ2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDYnJhY2tldHMgeDo6YWNjdSAtPiBDYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3NwYWNlID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2UgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgbiAoU3BhY2U6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFNwYWNlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBTcGFjZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2U6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgKG4tMSkgKFNwYWNlOjp0bClcbiAgICAgIHwgU3BhY2VzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgU3BhY2U6OmFjY3UgLT4gU3BhY2VzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBTcGFjZXMgeDo6YWNjdSAtPiBTcGFjZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBTcGFjZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoU3BhY2VzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG4gICgqIC9lbmQgZ2VuZXJhdGVkIHBhcnQgKilcblxuICBsZXQgcmVhZF91bnRpbF9uZXdsaW5lIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgKChCYWNrc2xhc2ggYXMgYSkpIDo6ICgoTmV3bGluZSBhcyBiKSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYiA6OiBhIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZSA6OiBCYWNrc2xhc2ggOjogYWNjdSkgbiAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgKChCYWNrc2xhc2hzIDAgYXMgZSkpIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCAoKEJhY2tzbGFzaHMgeCBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgKHggbW9kIDIpID0gMFxuICAgICAgICB0aGVuIGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgICBlbHNlIGxvb3AgKChCYWNrc2xhc2hzICh4IC0gMSkpIDo6IGFjY3UpIG4gKEJhY2tzbGFzaCA6OiB0bClcbiAgICAgIHwgKChOZXdsaW5lIGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuICgoTGlzdC5yZXYgYWNjdSksIHRsKSBlbHNlIGxvb3AgKGUgOjogYWNjdSkgKG4gLSAxKSB0bFxuICAgICAgfCBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgKE5ld2xpbmUgOjogdGwpKVxuICAgICAgICBlbHNlIGxvb3AgKE5ld2xpbmUgOjogYWNjdSkgKG4gLSAxKSAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgTmV3bGluZXMgbiA6OiB0bCAtPiAoKExpc3QucmV2IGFjY3UpLCAoKE5ld2xpbmVzIChuIC0gMSkpIDo6IHRsKSlcbiAgICAgIHwgZSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluIGxvb3AgW10gMCBsXG5cbiAgKCogSDEsIEgyLCBIMywgLi4uICopXG4gIGxldCByZWFkX3RpdGxlIChtYWluX2xvb3A6bWFpbl9sb29wKSBuIHIgX3ByZXZpb3VzIGxleGVtZXMgPVxuICAgIGxldCB0aXRsZSwgcmVzdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNoOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuLTEpOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaHMoaCk6OnRsIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNocyhoKTo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuKTo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNocyhuKTo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoW10gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKFtdIGFzIGwpIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgbFxuICAgICAgICB8IFtIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IEhhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgKEhhc2h8SGFzaHMgXyk7IChTcGFjZXxTcGFjZXMgXyldIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgW11cbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBsZXhlbWVzXG4gICAgaW5cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDEgLT4gU29tZShIMSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAyIC0+IFNvbWUoSDIgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMyAtPiBTb21lKEgzIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDQgLT4gU29tZShINCB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA1IC0+IFNvbWUoSDUgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNiAtPiBTb21lKEg2IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHAgbCA9XG4gICAgbWF0Y2ggZXh0ZW5zaW9ucyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBfIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBmI3BhcnNlcl9leHRlbnNpb24gciBwIGwpXG4gICAgICAgICAgfCBTb21lKG5yLCBucCwgbmwpIGFzIGUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBtYXRjaCBmI3BhcnNlcl9leHRlbnNpb24gbnIgbnAgbmwgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGVcbiAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIGsgLT4gaylcbiAgICAgICAgKVxuICAgICAgICBOb25lXG4gICAgICAgIGV4dGVuc2lvbnNcblxuICAoKiBibG9ja3F1b3RlcyAqKVxuICBsZXQgZW1haWxzdHlsZV9xdW90aW5nIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBibG9jayBjbCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6KE5ld2xpbmU6Ol8gYXMgdGwpIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgICgqIG11bHRpIHBhcmFncmFwaCBibG9ja3F1b3RlcyB3aXRoIGVtcHR5IGxpbmVzICopXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgfCAoTmV3bGluZXMgXzo6XyBhcyBsKSB8IChbXSBhcyBsKSAtPiBmaXgoTGlzdC5yZXYoY2xAYmxvY2spKSwgbFxuICAgICAgfCBlOjp0bCAtPiBsb29wIGJsb2NrIChlOjpjbCkgdGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6YmxvY2ssIHRsIC0+XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyAlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGJsb2NrKTtcbiAgICAgIFNvbWUoKEJsb2NrcXVvdGUobWFpbl9sb29wIFtdIFtdIGJsb2NrKTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgfCBfIC0+XG4gICAgICBOb25lXG5cblxuICAoKiBtYXliZSBhIHJlZmVyZW5jZSAqKVxuICBsZXQgbWF5YmVfcmVmZXJlbmNlIChtYWluX2xvb3A6bWFpbl9sb29wKSByYyByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2Uga25vdyBpdCdzIG5vdCBhIGxpbmsgYWx0aG91Z2hcbiAgICAgICBpdCBzdGFydGVkIHdpdGggYSAnWycgKilcbiAgICAoKiBTbyBpdCBjb3VsZCBiZSBhIHJlZmVyZW5jZSBvciBhIGxpbmsgZGVmaW5pdGlvbi4gKilcbiAgICBsZXQgcmVjIG1heWJlX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGJsYW5rLCByZW1haW5zID0gcmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGFyZSBubyB1bndhbnRlZCBjaGFyYWN0ZXJzIGJldHdlZW4gQ0IgYW5kIE9CLiAqKVxuICAgICAgaWYgZWF0IChsZXQgZmxhZyA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICAgIGZ1bmN0aW9uICgqIGFsbG93IG9ubHkgYSBzcGFjZSwgbXVsdGlwbGUgc3BhY2VzLCBvciBhIG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgfCBOZXdsaW5lIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgYmxhbmsgPD4gW10gdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nICgqIDwtLSBub3QgYSByZWd1bGFyIHJlZmVyZW5jZSAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHJlbWFpbnMgd2l0aFxuICAgICAgICB8IFtdLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICAgICAgfCBpZCwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIEwuc3RyaW5nX29mX3Rva2VucyBpZCxcbiAgICAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0LCBmYWxsYmFjaykpOjpyKSxcbiAgICAgICAgICAgICAgIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX25vbnJlZ3VsYXJfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfZGVmIGwgPVxuICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgIHwgXywgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgfCBpZCwgKENvbG9uOjooU3BhY2V8U3BhY2VzIF8pOjpyZW1haW5zKVxuICAgICAgfCBpZCwgKENvbG9uOjpyZW1haW5zKSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pOjogXyBhcyBsIC0+IFNwbGl0KFtdLCBsKVxuICAgICAgICAgICAgICAgICAgfCBlOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSkpXG4gICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZShbXSwgXykgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgIHwgU29tZSh1cmwsIHJlbWFpbnMpIC0+XG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGVhdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiByZWFkX3VudGlsX3EgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OnRsLT4gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IGwgLT4gW10sIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCB1cmwgPiAyICYmIHVybC5bMF0gPSAnPCdcbiAgICAgICAgICAgICAgICAgJiYgdXJsLltTdHJpbmcubGVuZ3RoIHVybCAtIDFdID0gJz4nIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHVybCAxIChTdHJpbmcubGVuZ3RoIHVybCAtIDIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYyNhZGRfcmVmIChMLnN0cmluZ19vZl90b2tlbnMgaWQpIChMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUpIHVybDtcbiAgICAgICAgICAgIFNvbWUociwgW05ld2xpbmVdLCByZW1haW5zKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIG1heWJlX3JlZiBsXG4gICAgd2l0aCB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgIHRyeVxuICAgICAgICBtYXliZV9kZWYgbFxuICAgICAgd2l0aFxuICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1heWJlX25vbnJlZ3VsYXJfcmVmIGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICBOb25lXG5cblxuICAoKiogbWF5YmUgYSBsaW5rICopXG4gIGxldCBtYXliZV9saW5rIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGlua1xcblwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWFkX3VybCBuYW1lIGwgPVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPnJlYWRfdXJsICVTXFxuXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIHRyeVxuICAgICAgICBsZXQgbF9jcCwgcl9jcCA9XG4gICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfY3A9JVMgcl9jcD0lU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfY3ApXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2NwKTtcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGxfZHEsIHJfZHEgPVxuICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2RxPSVTIHJfZHE9JVNcXG4lIVwiXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHEpXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfZHEpO1xuICAgICAgICAgICgqIG1heWJlIHRpdGxlICopXG4gICAgICAgICAgaWYgTGlzdC5sZW5ndGggbF9jcCA+IExpc3QubGVuZ3RoIGxfZHEgdGhlbiAoKiB0aXRsZSAqKVxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICAgIG1hdGNoIExpc3QucmV2IGxfZHEgd2l0aFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IHRsKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gcmVhZF91bnRpbF9kcSB+bm9fbmw6ZmFsc2UgfmJxOmZhbHNlIHJfZHEgaW5cbiAgICAgICAgICAgICAgbGV0IHJlc3QgPSBzbmQocmVhZF91bnRpbF9jcGFyZW50aCByZXN0KSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPiAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IG5vIHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgIGxldCB1cmwgPSBtYXRjaCBMaXN0LnJldiBsX2NwIHdpdGhcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IExpc3QucmV2IHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBsX2NwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gW10sIHJfY3AgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgIGVuZFxuICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCByZWFkX25hbWUgbCA9XG4gICAgICAoKiBpdCdzIG5vdCByZWFsbHkgdGhlIFwibmFtZVwiIG9mIGEgVVJMIGJ1dCB3aGF0XG4gICAgICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5uZXIgSFRNTCBvZiBhbiBIVE1MICdBJyB0YWcgKilcbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz4gcmVhZF9uYW1lXFxuXCI7XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKGVhdF9ibGFuayB0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyAwOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3Mgbjo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXNzKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBOb25lXG4gICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT4gTm9uZVxuICAgIGluXG4gICAgcmVhZF9uYW1lIGxcblxuXG4gIGxldCBoYXNfcGFyYWdyYXBocyBsID1cbiAgICAoKiBIYXMgYXQgbGVhc3QgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcy4gKilcbiAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gTmV3bGluZXMgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbFxuXG4gIGxldCBwYXJzZV9saXN0IChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0IHI9KCVzKSBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBcIlwiICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpICopXG4gICAgICAgIFwiXCIgKCogKGRlc3RyaW5nX29mX3RsIHApICopXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB+bGltaXQ6NDAgbCk7XG4gICAgZW5kO1xuICAgIGxldCBtb2R1bGUgVU8gPSBzdHJ1Y3QgdHlwZSBvcmRlcmVkID0gTyB8IFUgZW5kIGluXG4gICAgbGV0IG9wZW4gVU8gaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdDogbD0oJXMpXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgbGV0IGVuZF9vZl9pdGVtIChpbmRlbnQ6aW50KSBsIDogdG9rIHNwbGl0X2FjdGlvbiAgPSBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgU3BsaXQoW10sW10pXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKChTcGFjZXMgbikgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRsXG4gICAgICAgICAgICAgICAgICAgICAgIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID0gaW5kZW50KzQgdGhlbiAoKiBibG9ja3F1b3RlICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKG4rMikgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKFNwYWNlcyBuIDo6IHRsIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDApOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzQgdGhlbiAoKiBuZXcgcGFyYWdyYXBoIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IChOZXdsaW5lcyBfKSA6OiBfIC0+ICgqIG4gPiAwICopXG4gICAgICAgICgqIEVuZCBvZiBpdGVtLCBzdG9wICopXG4gICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6XG4gICAgICAgIChcbiAgICAgICAgICAoKFNwYWNlfFNwYWNlcyBfKSA6OiAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoKFNwYWNlfFNwYWNlcyBfKSA6OiBOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICB8ICgoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgICBhcyB0bCkgLT5cbiAgICAgICAgU3BsaXQoW05ld2xpbmVdLCB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBleGFjdGx5IDIgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHJld3JpdGUgdGhlIGhlYWQgb2YgdGhlIGxleGluZyBzdHJlYW0uICopXG4gICAgICAgIENvbnRpbnVlX3dpdGgoW10sIE5ld2xpbmVzIDAgOjogdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IChOZXdsaW5lcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGF0IGxlYXN0IDMgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHN0b3AuICopXG4gICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2VzIF8gYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VzXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBTcGFjZXMgXzo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBDb250aW51ZVxuICAgIGluXG4gICAgbGV0IHJldl90b190IGwgPVxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICAoKiBOZXdsaW5lcyBhdCB0aGUgZW5kIG9mIGl0ZW1zIGhhdmUgbm8gbWVhbmluZyAoZXhjZXB0IHRvIGVuZCB0aGVcbiAgICAgICAgIGl0ZW0gd2hpY2ggaXMgZXhwcmVzc2VkIGJ5IHRoZSBjb25zdHJ1Y3RvciBhbHJlYWR5KS4gKilcbiAgICAgIGxldCBsID0gbWF0Y2ggbCB3aXRoIChOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT4gdGwgfCBfIC0+IGwgaW5cbiAgICAgIG1haW5fbG9vcCBbXSBbTmV3bGluZV0gKExpc3QucmV2IGwpXG4gICAgaW5cbiAgICBsZXQgYWRkIChzdWJsaXN0OmVsZW1lbnQpIGl0ZW1zID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGFkZFxcbiUhXCI7XG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoTyxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoTyxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgICAgfCAoVSxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoVSxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgIGluXG4gICAgbGV0IG1ha2VfdXAgfnAgaXRlbXMgOiBPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWtlX3VwIHA9JWJcXG4lIVwiIHA7XG4gICAgICBsZXQgaXRlbXMgPSBMaXN0LnJldiBpdGVtcyBpblxuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCAoVSxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIFVscChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBVbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IChPLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgT2xwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9sKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgW10gLT5cbiAgICAgICAgZmFpbHdpdGggXCJtYWtlX3VwIGNhbGxlZCB3aXRoIFtdXCIgKCogYXNzZXJ0IGZhbHNlICopXG4gICAgaW5cbiAgICBsZXQgcmVjIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGxpc3RfaXRlbXM6IHA9JWIgbD0oJXMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAoKiBubyBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAoKiBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgICgqIG5ldyB1bm9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMjM0NikgbmV3X2l0ZW09JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIG5ld19pdGVtKTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoVSxbMF0sIHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKFUsWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChVLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSkgOjogaXRlbXMgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiBuZXcgb3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCBOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIG5ld19pdGVtO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChPLFswXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKE8sWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKE8sW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnBcbiAgICAgICAgICAgICAgICAgICAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6OlN0YXI6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgLT5cbiAgICAgICAgbGlzdF9pdGVtcyB+cDp0cnVlIGluZGVudHMgaXRlbXMgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgbGV0IHJlYyBzdHJpbmdfb2ZfaXRlbXMgaXRlbXMgPVxuICAgICAgICAgICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICAgICAgICB8IChPLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihPLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCAoVSxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoVSxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBcIih3ZWlyZClcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOQUxJIHBhcnNlX2xpc3Q6IGw9KCVTKSBpdGVtcz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKSAoc3RyaW5nX29mX2l0ZW1zIGl0ZW1zKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgKCogbm90IGEgbGlzdCBpdGVtICopXG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgIGluXG4gICAgbWF0Y2ggbGlzdF9pdGVtcyB+cDpmYWxzZSBbXSBbXSBsIHdpdGhcbiAgICB8IHJwLCBsIC0+XG4gICAgICBycDo6ciwgW05ld2xpbmVdLCBsXG5cblxuXG4gIGxldCBpY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogaW5kZW50ZWQgY29kZTogcmV0dXJucyAocixwLGwpIHdoZXJlIHIgaXMgdGhlIHJlc3VsdCwgcCBpcyB0aGVcbiAgICAgICBsYXN0IHRoaW5nIHJlYWQsIGwgaXMgdGhlIHJlbWFpbnMgKilcbiAgICBsZXQgZHVtbXlfdGFnID0gVGFnKFwiZHVtbXlfdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gPSBmdW4gciBwIGwgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSBpblxuICAgIGxldCBhY2N1ID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIGxldCByZWMgbG9vcCBzIHRsID0gbWF0Y2ggcywgdGwgd2l0aFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAoU3BhY2V8U3BhY2VzKDB8MSkpOjpfIC0+XG4gICAgICAgICgqIDEsIDIgb3IgMyBzcGFjZXMuICopXG4gICAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2Ugd2hhdCBmb2xsb3dzIGlzbid0LiAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgU3BhY2VzKG4pOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgKCogQXQgbGVhc3QgNCBzcGFjZXMsIGl0J3Mgc3RpbGwgY29kZS4gKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaWYgbiA+PSA0IHRoZW4gU3BhY2VzKG4tNCkgZWxzZSBpZiBuID0gMyB0aGVuIFNwYWNlIGVsc2UgZHVtbXlfdGFnKVxuICAgICAgICAgIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChub3Rfc3BhY2VzOjpfIGFzIHRsKSAtPiAoKiBzdG9wICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSBpdCdzIG5vIG1vcmUgY29kZS4gKilcbiAgICAgIHwgcCwgZTo6dGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgICgqIGh0bWwgZW50aXRpZXMgYXJlIHRvIGJlIGNvbnZlcnRlZCBsYXRlciEgKilcbiAgICAgICAgbG9vcCBlIHRsXG4gICAgICB8IHAsIFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpOjpyLCBbcF0sIFtdXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFNwYWNlcyBuOjp0bCAtPlxuICAgICAgaWYgbiA+PSA0IHRoZW5cbiAgICAgICAgU29tZShsb29wIChTcGFjZXMobi00KSkgdGwpXG4gICAgICBlbHNlIGlmIG4gPSAzIHRoZW5cbiAgICAgICAgU29tZShsb29wIFNwYWNlIHRsKVxuICAgICAgZWxzZSBTb21lKGxvb3AgZHVtbXlfdGFnIHRsKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4gICgqIFJldHVybnMgWyhyLHAsbCldIHdoZXJlIFtyXSBpcyB0aGUgcmVzdWx0LCBbcF0gaXMgdGhlIGxhc3QgdGhpbmdcbiAgICAgcmVhZCwgYW5kIFtsXSBpcyB3aGF0IHJlbWFpbnMuICopXG4gIGxldCBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA8PSAzIHRoZW4gKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgICAoKiB1bm9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgKE51bWJlciBfKTo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAoKiBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IFtdXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+ICgqIGJsYW5rIGxpbmUsIHNraXAgc3BhY2VzICopXG4gICAgICAgIHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8ICBfOjpfIC0+XG4gICAgICAgIFRleHQgKFwiIFwiKTo6ciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICApXG4gICAgZWxzZSAoICgqIG4+PTQsIGJsYW5rIGxpbmUgb3IgaW5kZW50ZWQgY29kZSAqKVxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IFtdIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgXyAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGljb2RlIH5kZWZhdWx0X2xhbmcgciBbTmV3bGluZV0gKEwubWFrZV9zcGFjZSBuIDo6IGxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiByLHAsbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5pY29kZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICApXG5cbiAgbGV0IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgPyhodG1sPWZhbHNlKSBuIHIgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA9IDEgdGhlblxuICAgICAgKFRleHQgXCIgXCI6OnIpLCBbU3BhY2VdLCBsZXhlbWVzXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgTmV3bGluZSA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IHRoZSBuZXdsaW5lXFxuJSFcIjtcbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIHRsXG4gICAgICB8IE5ld2xpbmVzIGsgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCAxIG5ld2xpbmVcIjtcbiAgICAgICAgbGV0IG5ld2xpbmVzID0gaWYgayA9IDAgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMoay0xKSBpblxuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgbmV3bGluZXMgOjogdGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKG4+MSk7XG4gICAgICAgIChUZXh0IChTdHJpbmcubWFrZSBuICcgJyk6OnIpLCBbU3BhY2VzKG4tMildLCBsZXhlbWVzXG4gICAgKVxuXG5cbiAgbGV0IG1heWJlX2F1dG9lbWFpbCByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBMZXNzdGhhbjo6dGwgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZnNwbGl0IH5leGNsOihmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIH5mOihmdW5jdGlvbiBBdDo6dGwgLT4gU3BsaXQoW10sdGwpIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgIHRsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lKGxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEdyZWF0ZXJ0aGFuOjp0bCAtPiBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbjo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgcmlnaHRcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUoZG9tYWluLCB0bCkgLT5cbiAgICAgICAgICAgIGxldCBlbWFpbCA9IEwuc3RyaW5nX29mX3Rva2VucyBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICBeIFwiQFwiIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIGRvbWFpbiBpblxuICAgICAgICAgICAgU29tZShVcmwoXCJtYWlsdG86XCJeZW1haWwsW1RleHQgZW1haWxdLFwiXCIpOjpyLFtHcmVhdGVydGhhbl0sdGwpXG4gICAgICBlbmRcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLm1heWJlX2F1dG9lbWFpbDogd3JvbmcgdXNlIG9mIHRoZSBmdW5jdGlvbi5cIlxuXG4gIGxldCBpc19oZXggcyA9XG4gICAgU3RyaW5nLmxlbmd0aCBzID4gMVxuICAgICYmIChzLlswXSA9ICdYJyB8fCBzLlswXSA9ICd4JylcbiAgICAmJiAobGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgaSA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgfHxcbiAgICAgICAgIChtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSlcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIGluIGxvb3AgMSlcblxuICBsZXQgbWVkaWF0eXBldGV4dG9tZCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICAgIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxvb3AgZmFsc2UgW10gbFxuXG4gIGV4Y2VwdGlvbiBPcnBoYW5fY2xvc2luZyBvZiBzdHJpbmcgKiBsICogbFxuXG4gIGxldCByZWMgbWFpbl9pbXBsX3JldiB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViIHI9JXMgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgaHRtbFxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgcHJldmlvdXMpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBsZXhlbWVzKTtcbiAgICBtYXRjaCBwcmV2aW91cywgbGV4ZW1lcyB3aXRoXG4gICAgKCogbm8gbW9yZSB0byBwcm9jZXNzICopXG4gICAgfCBfLCBbXSAtPlxuICAgICAgKCogcmV0dXJuIHRoZSByZXN1bHQgKC8hXFwgaXQgaGFzIHRvIGJlIHJldmVyc2VkIGFzIHNvbWUgcG9pbnQpICopXG4gICAgICByXG5cbiAgICAoKiBUYWc6IHRhZyBzeXN0ZW0gJFxcY3VwJCBoaWdoLXByaW9yaXR5IGV4dGVuc2lvbiBtZWNoYW5pc20gKilcbiAgICB8IF8sIFRhZyhfbmFtZSwgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGUjcGFyc2VyX2V4dGVuc2lvbiByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgdGxcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCBjb21tZW50cyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjooRXhjbGFtYXRpb246Ok1pbnVzcyAwOjpjIGFzIHRsKSAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgKE1pbnVzcyBfIGFzIG0pOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsIC0+XG4gICAgICAgICAgICBTcGxpdChbZzttXSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmc3BsaXQgfmY6ZiBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSAoY29tbWVudHMsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IEh0bWxfY29tbWVudChMLnN0cmluZ19vZl90b2tlbnMgY29tbWVudHMpIDo6IHIgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW05ld2xpbmVdIG5ld190bFxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nIC8gYmxvY2txdW90ZSAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgR3JlYXRlcnRoYW46OihTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCByIHByZXZpb3VzIChOZXdsaW5lOjpsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcsIHdpdGggbGluZXMgc3RhcnRpbmcgd2l0aCBzcGFjZXMhICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoU3BhY2V8U3BhY2VzKDB8MSkgYXMgcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgICgqIEl0J3MgMSwgMiBvciAzIHNwYWNlcywgbm90IG1vcmUgYmVjYXVzZSBpdCB3b3VsZG4ndCBtZWFuXG4gICAgICAgICBxdW90aW5nIGFueW1vcmUgYnV0IGNvZGUuICopXG4gICAgICBiZWdpblxuICAgICAgICBsZXQgbmV3X3IsIHAsIHJlc3QgPVxuICAgICAgICAgIGxldCBmb28sIHJlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKEwubGVuZ3RoIHMpIChOZXdsaW5lOjpsZXhlbWVzKSB3aXRoXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpmb28sIHJlc3QgLT4gZm9vLCByZXN0XG4gICAgICAgICAgICB8IHJlcyAtPiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIFtdIHByZXZpb3VzIChOZXdsaW5lOjpmb28pXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShuZXdfciwgcCwgW10pIC0+IG5ld19yLCBwLCByZXN0XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKG5ld19yQHIpIFtOZXdsaW5lXSByZXN0XG4gICAgICBlbmRcblxuICAgICgqIG1pbnVzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLFxuICAgICAgKE1pbnVzfE1pbnVzcyBfIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pOjpfIGFzIHRsKSAtPlxuICAgICAgKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgc28gaXQgY291bGQgYmUgYSBsaXN0ICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IE1pbnVzIC0+ICgqIGl0J3MgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgICAgICAgfCBfIC0+ICgqIG5vdCBhIGxpc3QgKilcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE1pbnVzfE1pbnVzcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBhbmQgaXQncyBub3QgYSBsaXN0IGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBmb2xsb3dlZCBieSBzcGFjZXMgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuXG4gICAgKCogaGFzaGVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKSA6OiB0dGwgYXMgdGwpXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAodHRsIGFzIHRsKSAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgaWYgbiA8PSA0IHRoZW5cbiAgICAgICAgbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgKG4rMikgciBwcmV2aW91cyB0dGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogdGwgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIDEgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICB8IF8sIChIYXNofEhhc2hzIF8gYXMgdCkgOjogdGwgLT4gKCogaGFzaCAtLSBubyB0aXRsZSAqKVxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYWZ0ZXIgYSBuZXdsaW5lOiBjb3VsZCBsZWFkIHRvIGhyICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyBzcCkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyIHRsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogTm8gW0hyXSwgYnV0IG1heWJlIFtVbF0sIFtPbF0sIGNvZGUsLi4uICopXG4gICAgICAgICAgbGV0IG4gPSBMLmxlbmd0aCBzcCBpblxuICAgICAgICAgIGxldCByLCBwLCBsID1cbiAgICAgICAgICAgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIHRsIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IFNvbWUgdGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIHRsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhbnl3aGVyZSAqKVxuICAgIHwgXywgKChTcGFjZXxTcGFjZXMgXykgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIHRvbyBtYW55IGNhc2VzIHRvIGJlIGhhbmRsZWQgaGVyZSAqKVxuICAgICAgbGV0IG4gPSBMLmxlbmd0aCB0IGluXG4gICAgICBsZXQgciwgcCwgbCA9IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgfmh0bWwgbiByIHRsIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG5cbiAgICAoKiB1bmRlcnNjb3JlcyAqKVxuICAgIHwgXywgKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgdW5kZXJzY29yZSwgb3IgZW1waCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcbiAgICB8IF8sIChVbmRlcnNjb3JlcygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgdW5kZXJzY29yZXMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW4gKCogMSB1bmRlcnNjb3JlICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlICgqIDIgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuXG4gICAgKCogZW51bWVyYXRlZCBsaXN0cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE51bWJlciBfKSA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bCAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBwbHVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFBsdXMgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHN0YXJzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXIgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAoKiBtYXliZSBociBvciBuZXcgbGlzdCAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhcnMgXyA6OiBfIHdoZW4gaHJfcyBsZXhlbWVzIDw+IE5vbmUgLT5cbiAgICAgICgqIGhyICopXG4gICAgICAobWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICB8IFNvbWUgbCAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IF8sIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHN0YXIsIG9yIGVtcGggLy8gY2FuJ3QgYmUgaHIgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG4gICAgfCBfLCAoU3RhcnMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHN0YXJzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGJhY2tzbGFzaGVzICopXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE5ld2xpbmUgYXMgdCkgOjogdGwgLT4gKCogXFxcXG4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT4gKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdIChOZXdsaW5lIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV1cbiAgICAgICAgKE5ld2xpbmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChCYWNrcXVvdGUgYXMgdCkgOjogdGwgLT4gKCogXFxgICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyAwIDo6IHRsIC0+ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV0gKEJhY2txdW90ZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdXG4gICAgICAgIChCYWNrcXVvdGVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIFxcKiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIDAgOjogdGwgLT4gKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXIgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFycyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBcXF8gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyAwIDo6IHRsIC0+ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV0gKFVuZGVyc2NvcmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV1cbiAgICAgICAgKFVuZGVyc2NvcmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx7ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcWyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCggKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdIChPcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdXG4gICAgICAgIChPcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwpICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoUGx1cyBhcyB0KSA6OiB0bCAtPiAoKiBcXCsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyAwIDo6IHRsIC0+ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChNaW51cyBhcyB0KSA6OiB0bCAtPiAoKiBcXC0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgMCA6OiB0bCAtPiAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChEb3QgYXMgdCkgOjogdGwgLT4gKCogXFwuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyAwIDo6IHRsIC0+ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3RzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChFeGNsYW1hdGlvbiBhcyB0KSA6OiB0bCAtPiAoKiBcXCEgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgMCA6OiB0bCAtPiAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXSAoRXhjbGFtYXRpb24gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXVxuICAgICAgICAoRXhjbGFtYXRpb25zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChIYXNoIGFzIHQpIDo6IHRsIC0+ICgqIFxcIyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIDAgOjogdGwgLT4gKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dXG4gICAgICAgIChHcmVhdGVydGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyAwIDo6IHRsIC0+ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dIChMZXNzdGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dXG4gICAgICAgIChMZXNzdGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCAoQmFja3NsYXNocyAwIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIlxcXFxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCAoQmFja3NsYXNocyBuIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBpZiBuIG1vZCAyID0gMCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIHRsXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIChCYWNrc2xhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2g6OltdIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtdIFtdXG4gICAgfCBfLCBCYWNrc2xhc2g6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtCYWNrc2xhc2hdIHRsXG5cbiAgICAoKiA8ICopXG4gICAgfCBfLCAoTGVzc3RoYW58TGVzc3RoYW5zIF8gYXMgdClcbiAgICAgICAgIDo6IChXb3JkKFwiaHR0cFwifFwiaHR0cHNcInxcImZ0cFwifFwiZnRwc1wifFwic3NoXCJ8XCJhZnBcInxcImltYXBcIikgYXMgdylcbiAgICAgICAgIDo6IENvbG9uOjpTbGFzaHMobik6OnRsIC0+XG4gICAgICAoKiBcInNlbWktYXV0b21hdGljXCIgVVJMcyAqKVxuICAgICAgbGV0IHJlYyByZWFkX3VybCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwgLT5cbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgR3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW4gdykgXiBcIjovL1wiXG4gICAgICAgICAgICBeIChpZiBuID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcubWFrZSAobi0xKSAnLycpXG4gICAgICAgICAgICBeIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgICBpbiBTb21lKHVybCwgdGwpXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICByZWFkX3VybCAoeDo6YWNjdSkgdGxcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3VybCBbXSB0bCB3aXRoXG4gICAgICAgIHwgU29tZSh1cmwsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IFxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IExlc3N0aGFucyAwIC0+IFRleHQgXCI8XCIgOjogclxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICc8JykgOjogclxuICAgICAgICAgICAgfCBfIC0+IHJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFVybCh1cmwsW1RleHQgdXJsXSxcIlwiKTo6cikgW10gbmV3X3RsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cblxuICAgICgqIFdvcmQodykgKilcbiAgICB8IF8sIFdvcmQgdzo6dGwgLT5cbiAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHcgOjogcikgW1dvcmQgd10gdGxcblxuICAgICgqIG5ld2xpbmUgYXQgdGhlIGVuZCAqKVxuICAgIHwgXywgW05ld2xpbmVdIC0+XG4gICAgICBOTDo6clxuXG4gICAgKCogbmFtZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKSBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHcgaHRtbGNvZGVzX3NldCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpOdW1iZXIgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogbWF5YmUgaGV4IGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6V29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgd2hlbiBpc19oZXggdyAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuXG4gICAgKCogQW1wZXJzYW5kICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW0FtcGVyc2FuZF0gdGxcblxuICAgICgqIDIgQW1wZXJzYW5kcyAqKVxuICAgIHwgXywgQW1wZXJzYW5kcygwKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kOjp0bClcblxuICAgICgqIFNldmVyYWwgQW1wZXJzYW5kcyAobW9yZSB0aGFuIDIpICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKG4pOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmRzKG4tMSk6OnRsKVxuXG4gICAgKCogYmFja3F1b3RlcyAqKVxuICAgIHwgXywgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBiY29kZSB+ZGVmYXVsdF9sYW5nIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MICopXG4gICAgKCogPGJyLz4gYW5kIDxoci8+IHdpdGggb3Igd2l0aG91dCBzcGFjZShzKSAqKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OihTcGFjZXxTcGFjZXMgXyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZyB3aXRoXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl1cbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIHRsXG4gICAgICBlbmRcblxuICAgICgqIGF3YWl0ZWQgb3JwaGFuIGh0bWwgY2xvc2luZyB0YWcgKilcbiAgICB8IF8sIExlc3N0aGFuOjpTbGFzaDo6V29yZCh3KTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bFxuICAgICAgd2hlbiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSAtPlxuICAgICAgcmFpc2UgKE9ycGhhbl9jbG9zaW5nKHcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW46OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSk6OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0bCkpKVxuXG4gICAgKCogYmxvY2sgaHRtbCAqKVxuICAgIHwgKFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX3xUYWcoXCJIVE1MQkxPQ0tcIiwgXyldKSxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbV29yZCBcIlwiXSBsZXhlbWVzXG4gICAgICBlbHNlIGlmIG5vdCAoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KSB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsID1cbiAgICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0ID8oaHRtbD1odG1sKSBsID1cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGxldCBmX2EgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGEgaW5cbiAgICAgICAgICAgICAgICAgIGlmIGZfYSAhPSBhIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICBmX2EsXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAgICAgIChtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDpmYWxzZSAoTGlzdC5yZXYgYykpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsIGZfYSwgbWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6dHJ1ZSAoTGlzdC5yZXYgYykpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kQG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpSVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0XG4gICAgICAgICAgICAgICAgICAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgKExpc3QucmV2IHQyKSk6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBpZiBodG1sIHRoZW5cbiAgICAgICAgICAgICAgICAgIFJhdyhMLnN0cmluZ19vZl90b2tlbnMgdCkgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYWluX2xvb3Agfmh0bWwgW10gW1dvcmQgXCJcIl0gdFxuICAgICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2IHQpIDo6IHRsKVxuICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0IGwgPSBtZF9vZl9pbnRlcm1fbGlzdCB0cnVlIGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7Qi9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7Qi9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgIHwgVC5SVE9LRU5TIHIgOjogYm9keSAtPiBULlJUT0tFTlMoeDo6cik6OmJvZHlcbiAgICAgICAgICAgIHwgXyAtPiBULlJUT0tFTlNbeF0gOjogYm9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzMzMyBCSFRNTCBsb29wIGJvZHk9JVMgdGFnc3RhdHVzPSVTICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDAxIEJIVE1MIE5vdCBlbm91Z2ggdG8gcmVhZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpIDo6IHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQxOSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgU2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyBvcGVuZXIgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzUgQkhUTUwgcHJvcGVybHkgY2xvc2luZyAlU1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlJUT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzODMgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBpZiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKE9ycGhhbl9jbG9zaW5nKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW46OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbnMobi0xKTo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSkpXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgM1xcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCA8V29yZCglcykuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgYXR0cnMgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk2IEJIVE1MIHRhZyAlUyBidXQgYXR0cnMgPD4gW11cXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQyMSBCSFRNTCB0YWcgJVMsIHRhZ3N0YXR1cz0lUywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzPVtdLCB0b2tlbnM9JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWUgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQzMyBCSFRNTCB0YWdzdGF0dXM9JVMgdG9rZW5zPSVTXFxuJSFcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKSBhdHRycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IHQgOjogIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUobWFpbl9pbXBsX3JldiB+aHRtbCBbXSBbXSB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUyNCBCSFRNTCBjbG9zaW5nIHRhZyBub3QgZm91bmQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gJVNcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNsb3NpbmcgdGFnIGAlcycgbm90IGZvdW5kIGZvciB0ZXh0L29tZCB6b25lLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSBMaXN0LnRsICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGggT3JwaGFuX2Nsb3NpbmcodGFnbmFtZSwgZGVsaW1pdGVyLCBhZnRlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGYgciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFuOjpfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGVzc3RoYW46OnRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuOjpyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFucyhuLTEpOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCA9PSBkZWxpbWl0ZXIgfHwgbCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgKGU6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGYgW10gdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU1MiBCSFRNTCB0b2tlbnM9JXMgZGVsaW1pdGVyPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyPSVzIGJlZm9yZT0lcyAodGFnbmFtZT10KT0lYlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgZGVsaW1pdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGFmdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWduYW1lID0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggIW1lZGlhdHlwZXRleHRvbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiB0bCAtPiBtZWRpYXR5cGV0ZXh0b21kIDo9IHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGFnbmFtZSA9IHQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuTURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5faW1wbCB+aHRtbCBbXSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnX3NldGV4dCBtYWluX2xvb3AgYmVmb3JlKSldKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM1NzEgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUxOSBCSFRNTCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShib2R5LCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5OCBCSFRNTCBGb3VuZCBhIGNsb3NpbmcgdGFnICVzXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0LCBhdHRycywgYm9keSldIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoW1QuSFRNTCh0LCBhdHRycywgYm9keSldLCBsKVxuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSAzNTkxIEJIVE1MIFNvbWUgYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSBHcmVhdGVydGhhbiBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU0MiBCSFRNTCB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjI4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjEgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjU0IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5MCBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjk4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjIgQkhUTUwgJXM9JVMgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IHg6OnRva2VucyBhcyBkZ3RzXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjAgQkhUTUwgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBkZ3RzKTtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzczNyBCSFRNTCBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZXMgXyBhcyB4KSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzODI3IEJIVE1MIG5ld2xpbmVzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICB3YXJuIFwidGhlcmUgYXJlIGVtcHR5IGxpbmVzIGluIHdoYXQgbWF5IGJlIGFuIEhUTUwgYmxvY2tcIjtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzQyIEJIVE1MIGZhbGxiYWNrIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFwiTm9uZVwiXG4gICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBcIkF3YWl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT4gXCJPcGVuIChjYW4ndCBiZSlcIik7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtUYWcoXCJIVE1MQkxPQ0tcIiwgZW1wdHlfZXh0ZW5zaW9uKV0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgYmxvY2sgSFRNTC4gKilcblxuXG4gICAgKCogaW5saW5lIEhUTUwgKilcbiAgICB8IF8sXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgKHN0cmljdF9odG1sICYmIG5vdChTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCkpXG4gICAgICB8fCBub3QoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KVxuICAgICAgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgSHRtbCh0LCBhLCBtZF9vZl9pbnRlcm1fbGlzdChMaXN0LnJldiBjKSk6Om1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+IG1kIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdDE6OlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGwgfmh0bWwgW10gW1dvcmQgXCJcIl0gKHQpXG4gICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntJL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntJL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIFQuVE9LRU5TW3hdOjpib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKCogZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSBib2R5PSglcykgJXNcXG4lIVwiICopXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpICopXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KTo6XyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTm90IGVub3VnaCB0byByZWFkIGZvciBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSk6OnRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW47U2xhc2hdOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogbXVsdGlwbGUgbmV3bGluZXMgYXJlIG5vdCB0byBiZSBzZWVuIGluIGlubGluZSBIVE1MICopXG4gICAgICAgICAgICB8IE5ld2xpbmVzIF8gOjogXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBNdWx0aXBsZSBsaW5lcyBpbiBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgXyAtPiB3YXJuIFwibXVsdGlwbGUgbmV3bGluZXMgaW4gaW5saW5lIEhUTUxcIjsgTm9uZSlcbiAgICAgICAgICAgICgqIG1heWJlIGNvZGUgKilcbiAgICAgICAgICAgIHwgKEJhY2txdW90ZSB8IEJhY2txdW90ZXMgXyBhcyBiKTo6dGwgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBubyBjb2RlXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBub25lXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGxldCdzIHRyeVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBiY29kZSBbXSBbU3BhY2VdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChDb2RlIF86Ol8pIGFzIGMpLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULk1EIGM6OmJvZHkpIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBmYWlsZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2JdOjpib2R5KSBbXSB0YWdzdGF0dXMgdGxcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDEzNiBwcm9wZXJseSBjbG9zaW5nICVTIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNTQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nIG5vdGhpbmcgd2l0aCAlUyAzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgKHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBpbmxpbmVfaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAgIHx8IChub3Qgc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgPCVzLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc5NiB0YWcgJXMsIGF0dHJzPVtdXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t3b3JkO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NSBlbmQgb2Ygb3BlbmluZyB0YWcgdG9rZW5zPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIGFzIHRzIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg2IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDQxOTIgRm91bmQgYSBjbG9zaW5nIHRhZyAlcyB0cz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vdGU6IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnNdIGhlcmUgYmVjYXVzZSBpbiB3ZSBoYXZlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWdzdGF0dXNdIG1hdGNoZXMgW1QuT3BlbiBfIDo6IF9dIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZmlsdGVyIHRoYXQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBjYXJlIG9mIGF0dHJzIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIFR1cm5zIG91dCBhbiBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuXTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQyMDIgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDM5NTcpICVzPSVTICVzXFxuJSFcIiBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaDt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAmJiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2hzKG4pO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0MTYxKSBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zICh4Ojp0b2tlbnMpKTtcbiAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAoNDI4OSkgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0Mjk0KSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrIHdpdGggdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGh0bWwsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtHcmVhdGVydGhhbl0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgaW5saW5lIEhUTUwuICopXG5cbiAgICAoKiA8IDogZW1haWxzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9hdXRvZW1haWwgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBsaW5lIGJyZWFrcyAqKVxuICAgIHwgXywgTmV3bGluZTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpyKSBbTmV3bGluZV0gdGxcbiAgICB8IF8sIE5ld2xpbmVzIF86OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6Tkw6OnIpIFtOZXdsaW5lXSB0bFxuXG4gICAgKCogWyAqKVxuICAgIHwgXywgKE9icmFja2V0IGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfbGluayBtYWluX2xvb3AgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1hdGNoIG1heWJlX3JlZmVyZW5jZSBtYWluX2xvb3AgcmMgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXSgvcGF0aC90by9pbWcuanBnKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgbGV0IGIsIHRsID0gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgdGwgaW5cbiAgICAgICAgICAgKCogbmV3IGxpbmVzIHRoZXJlIGFyZSBhbGxvd2VkICopXG4gICAgICAgICAgIGxldCByICgqIHVwZGF0ZWQgcmVzdWx0ICopID0gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICB0cnkgU29tZShyZWFkX3VudGlsX3NwYWNlIH5icTpmYWxzZSB+bm9fbmw6dHJ1ZSBiKVxuICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBOb25lXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHVybCwgdGxzKSAtPlxuICAgICAgICAgICAgIGxldCB0aXRsZSwgc2hvdWxkX2JlX2VtcHR5X2xpc3QgPVxuICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kIChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRscykpIGluXG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyBiIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgXCJcIikgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBpbWcgcmVmICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb24gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIHJlZiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW11bcmVmXSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGlkLCB0bCA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOnRydWUgdGwgaW5cbiAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHRsIGxleGVtZXMgaW5cbiAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIFwiXCIsIGZhbGxiYWNrKSA6OiByKSBbQ2JyYWNrZXRdIHRsXG4gICAgICAgd2l0aCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KTo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBcImFsdFwiICopXG4gICAgICAoKiAhW0FsdCB0ZXh0XSgvcGF0aC90by9pbWcuanBnIFwiT3B0aW9uYWwgdGl0bGVcIikgKilcbiAgICAgICh0cnlcbiAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgdGwgd2l0aFxuICAgICAgICAgfCBhbHQsIE9wYXJlbnRoZXNpczo6bnRsIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGhfdGl0bGUsIHJlc3QgPVxuICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCwgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9zcGFjZSB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSBwYXRoX3RpdGxlXG4gICAgICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IHBhdGhfdGl0bGUsIFtdIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgbm90aGluZyA9XG4gICAgICAgICAgICAgICAgaWYgdGl0bGUgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGl0bGUpKVxuICAgICAgICAgICAgICAgIGVsc2UgW10sIFtdIGluXG4gICAgICAgICAgICAgIGlmIG5vdGhpbmcgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvbjsgKCogY2F1Z2h0IHJpZ2h0IGJlbG93ICopXG4gICAgICAgICAgICAgIGxldCByID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCA9IEwuc3RyaW5nX29mX3Rva2VucyBwYXRoIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoYWx0LCBwYXRoLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOTF9leGNlcHRpb25cbiAgICAgICAgICAgICgqIGlmIE5MX2V4Y2VwdGlvbiB3YXMgcmFpc2VkLCB0aGVuIGZhbGwgYmFjayB0byBcInRleHRcIiAqKVxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgICA6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXyk6OkNicmFja2V0OjpudGwgLT5cbiAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgbnRsIGxleGVtZXMgaW5cbiAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKSBbQ2JyYWNrZXRdIG50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF98V29yZCBffE51bWJlciBfKTo6X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbnRsKSAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCB3aXRoXG4gICAgICAgICAgICAgIHwgW10sIHJlc3QgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgICB8IGlkLCByZXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVzdCBsZXhlbWVzIGluXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpXG4gICAgICAgICAgICAgICAgICBbQ2JyYWNrZXRdXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgfCBfLFxuICAgICAgKEF0fEJhcnxDYXJldHxDYnJhY2V8Q29sb258Q29tbWF8Q3BhcmVudGhlc2lzfENicmFja2V0fERvbGxhclxuICAgICAgfERvdHxEb3VibGVxdW90ZXxFeGNsYW1hdGlvbnxFcXVhbHxNaW51c3xPYnJhY2V8T3BhcmVudGhlc2lzXG4gICAgICB8UGVyY2VudHxQbHVzfFF1ZXN0aW9ufFF1b3RlfFNlbWljb2xvbnxTbGFzaHxUYWJ8VGlsZGVcbiAgICAgIHxHcmVhdGVydGhhbiBhcyB0KTo6dGxcbiAgICAgIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcbiAgICB8IF8sIChOdW1iZXIgXyAgYXMgdCk6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICB8IF8sIChBdHMgXyB8IEJhcnMgXyB8IENhcmV0cyBfIHwgQ2JyYWNlcyBfIHwgQ2JyYWNrZXRzIF8gfCBDb2xvbnMgX1xuICAgICAgICAgfCBDb21tYXMgXyB8IENwYXJlbnRoZXNpc3MgXyB8IERvbGxhcnMgXyB8IERvdHMgXyB8IERvdWJsZXF1b3RlcyBfXG4gICAgICAgICB8IEVxdWFscyBfIHwgRXhjbGFtYXRpb25zIF8gfCBHcmVhdGVydGhhbnMgXyB8IExlc3N0aGFucyBfXG4gICAgICAgICB8IE1pbnVzcyBfIHwgT2JyYWNlcyBfIHwgT2JyYWNrZXRzIF8gfCBPcGFyZW50aGVzaXNzIF9cbiAgICAgICAgIHwgUGVyY2VudHMgXyB8IFBsdXNzIF8gfCBRdWVzdGlvbnMgXyB8IFF1b3RlcyBfIHwgU2VtaWNvbG9ucyBfXG4gICAgICAgICB8IFNsYXNocyBfIHwgU3RhcnMgXyB8IFRhYnMgXyB8IFRpbGRlcyBfIHwgVW5kZXJzY29yZXMgXyBhcyB0aylcbiAgICAgICAgIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgdGswLCB0a3MgPSBMLnNwbGl0X2ZpcnN0IHRrIGluXG4gICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0azAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHRleHQgOjogcikgW3RrMF0gKHRrcyA6OiB0bClcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cblxuICBhbmQgbWFpbl9pbXBsIH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsIGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgTGlzdC5yZXYgKG1haW5fbG9vcF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzKVxuXG4gIGFuZCBtYWluX2xvb3AgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsIH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG4gIGFuZCBtYWluX2xvb3BfcmV2ID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cblxuICBsZXQgbWFpbl9wYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX2xvb3AgW10gW10gKHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMpXG5cbiAgbGV0IHBhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fcGFyc2UgbGV4ZW1lc1xuXG5lbmRcblxubGV0IGRlZmF1bHRfcGFyc2UgPyhleHRlbnNpb25zPVtdKSA/KGRlZmF1bHRfbGFuZz1cIlwiKSBsZXhlbWVzID1cbiAgbGV0IGUgPSBleHRlbnNpb25zIGFuZCBkID0gZGVmYXVsdF9sYW5nIGluXG4gIGxldCBtb2R1bGUgRSA9IERlZmF1bHRfZW52KFVuaXQpIGluXG4gIGxldCBtb2R1bGUgTSA9XG4gICAgTWFrZShzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBlXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gZFxuICAgIGVuZClcbiAgaW5cbiAgTS5tYWluX3BhcnNlIGxleGVtZXNcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogWW91IHNob3VsZCBlaXRoZXIgdXNlIHRoaXMgbW9kdWxlIG9yIE9tZF9sZXhlciwgbm90IGJvdGguXG4gICAgVGhpcyBtb2R1bGUgaW5jbHVkZXMgT21kX2xleGVyLlxuKilcblxuaW5jbHVkZSBPbWRfbGV4ZXJcblxubGV0IGxleF9mcm9tX2luY2hhbm5lbCBpYyA9XG4gICgqIE1haW50ZW5hbmNlLWVhc2luZXNzLWRyaXZlbiBpbXBsZW1lbnRhdGlvbi4gKilcbiAgbGV0IGljX2NvbnRlbnQgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgKGlucHV0X2NoYXIgaWMpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgbGV4IGljX2NvbnRlbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIE9NRDogTWFya2Rvd24gdG9vbCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2U6ICBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBodG1sID0gaHRtbF9ub2RlIGxpc3RcblxuYW5kIGh0bWxfbm9kZSA9XG4gIHwgTm9kZSBvZiBub2RlbmFtZSAqIGF0dHJpYnV0ZXMgKiBodG1sXG4gIHwgRGF0YSBvZiBzdHJpbmdcbiAgfCBSYXdkYXRhIG9mIHN0cmluZ1xuICB8IENvbW1lbnQgb2Ygc3RyaW5nXG5cbmFuZCBub2RlbmFtZSA9IHN0cmluZ1xuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBhdHRyaWJ1dGUgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbmxldCB0b19zdHJpbmcgaHRtbCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBwcCBmID0gUHJpbnRmLmJwcmludGYgYiBmIGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBOb2RlKG5vZGVuYW1lLCBhdHRyaWJ1dGVzLCBodG1sKSAtPlxuICAgICAgcHAgXCI8JXNcIiBub2RlbmFtZTtcbiAgICAgIHBwYSBhdHRyaWJ1dGVzO1xuICAgICAgcHAgXCI+XCI7XG4gICAgICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICAgICAgcHAgXCI8LyVzPlwiIG5vZGVuYW1lXG4gICAgfCBEYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IFJhd2RhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgQ29tbWVudCBjIC0+IHBwIFwiPCEtLSAlcyAtLT5cIiBjXG4gIGFuZCBwcGEgYXR0cnMgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgICAgZWxzZSBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHBwIFwiICVzPVxcXCJcIiBhO1xuICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB2IC0gMSBkb1xuICAgICAgICAgICAgICAgIG1hdGNoIHYuW2ldIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdcIicgLT4gcHAgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgIHwgYyAgICAtPiBwcCBcIiVjXCIgY1xuICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICBwcCBcIlxcXCJcIlxuICAgICAgICAgICAgKVxuICAgICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRyc1xuICBpblxuICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuaW5jbHVkZSBPbWRfcmVwcmVzZW50YXRpb25cbmluY2x1ZGUgT21kX2JhY2tlbmRcblxubGV0IG9mX2lucHV0IGxleCA/ZXh0ZW5zaW9uczplID9kZWZhdWx0X2xhbmc6ZCBzID1cbiAgbGV0IG1vZHVsZSBFID0gT21kX3BhcnNlci5EZWZhdWx0X2VudihzdHJ1Y3QgZW5kKSBpblxuICBsZXQgbW9kdWxlIFBhcnNlciA9IE9tZF9wYXJzZXIuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBtYXRjaCBlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZXh0ZW5zaW9uc1xuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IG1hdGNoIGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5kZWZhdWx0X2xhbmdcbiAgICBlbmRcbiAgKSBpblxuICBsZXQgbWQgPVxuICAgIFBhcnNlci5wYXJzZSAobGV4IHMpXG4gIGluXG4gIFBhcnNlci5tYWtlX3BhcmFncmFwaHMgbWRcblxubGV0IG9mX3N0cmluZyA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhcbmxldCBvZl9iaWdhcnJheSA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhfYmlnYXJyYXlcblxubGV0IHRvX2h0bWwgOlxuICA/b3ZlcnJpZGU6KE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50IC0+IHN0cmluZyBvcHRpb24pIC0+XG4gID9waW5kZW50OmJvb2wgLT5cbiAgP25sMmJyOmJvb2wgLT5cbiAgP2NzOmNvZGVfc3R5bGlzdCAtPlxuICB0IC0+XG4gIHN0cmluZ1xuICA9XG4gIGh0bWxfb2ZfbWRcblxubGV0IHRvX3RleHQgOiB0IC0+IHN0cmluZyA9IHRleHRfb2ZfbWRcblxubGV0IHRvX21hcmtkb3duIDogdCAtPiBzdHJpbmcgPSBtYXJrZG93bl9vZl9tZFxuXG5sZXQgaHRtbF9vZl9zdHJpbmcgKGh0bWw6c3RyaW5nKSA6IHN0cmluZyA9XG4gIGh0bWxfb2ZfbWQgKE9tZF9wYXJzZXIuZGVmYXVsdF9wYXJzZSAoT21kX2xleGVyLmxleCBodG1sKSlcblxuXG5sZXQgcmVjIHNldF9kZWZhdWx0X2xhbmcgbGFuZyA9IGZ1bmN0aW9uXG4gIHwgQ29kZShcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlKGxhbmcsIGNvZGUpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IENvZGVfYmxvY2soXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZV9ibG9jayhsYW5nLCBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIFJlY3Vyc2Ugb24gYWxsIGVsZW1lbnRzIGV2ZW4gdGhvdWdoIGNvZGUgKGJsb2NrcykgYXJlIG5vdCBhbGxvd2VkXG4gICAgIGV2ZXJ5d2hlcmUuICopXG4gIHwgSDEgdCA6OiB0bCAtPiBIMShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDIgdCA6OiB0bCAtPiBIMihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDMgdCA6OiB0bCAtPiBIMyhzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDQgdCA6OiB0bCAtPiBINChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDUgdCA6OiB0bCAtPiBINShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDYgdCA6OiB0bCAtPiBINihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgUGFyYWdyYXBoIHQgOjogdGwgLT4gUGFyYWdyYXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgRW1waCB0IDo6IHRsIC0+IEVtcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJvbGQgdCA6OiB0bCAtPiBCb2xkKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbCB0IDo6IHRsIC0+IFVsKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9sIHQgOjogdGwgLT4gT2woTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWxwIHQgOjogdGwgLT4gVWxwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbHAgdCA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVybChocmVmLCB0LCB0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsIHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0LCB0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQmxvY2txdW90ZSB0IDo6IHRsIC0+IEJsb2NrcXVvdGUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIEVsZW1lbnRzIHRoYXQgZG8gbm90IGNvbnRhaW4gTWFya2Rvd24uICopXG4gIHwgKFRleHQgX3xDb2RlIF98Q29kZV9ibG9jayBffEJyfEhyfE5MfFJlZiBffEltZ19yZWYgX3xSYXcgX3xSYXdfYmxvY2sgX1xuICAgIHxIdG1sIF98SHRtbF9ibG9jayBffEh0bWxfY29tbWVudCBffEltZyBffFggXykgYXMgZSA6OiB0bCAtPlxuICAgICBlIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFtdIC0+IFtdXG5cblxuKCogVGFibGUgb2YgY29udGVudHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogR2l2ZW4gYSBsaXN0IG9mIGhlYWRlcnMg4oCUIGluIHRoZSBvcmRlciBvZiB0aGUgZG9jdW1lbnQg4oCUIGdvIHRvIHRoZVxuICAgcmVxdWVzdGVkIHN1YnNlY3Rpb24uICBXZSBmaXJzdCBzZWVrIGZvciB0aGUgW251bWJlcl10aCBoZWFkZXIgYXRcbiAgIFtsZXZlbF0uICAqKVxubGV0IHJlYyBmaW5kX3N0YXJ0IGhlYWRlcnMgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoSDEgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAxIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgyIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMyBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDMgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDQgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA0IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg1IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDYgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmFuZCBkZWFsX3dpdGhfaGVhZGVyIGhfbGV2ZWwgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBpZiBoX2xldmVsID4gbGV2ZWwgdGhlbiAoKiBTa2lwLCByaWdodCBbbGV2ZWxdLWhlYWRlciBub3QgeWV0IHJlYWNoZWQuICopXG4gICAgaWYgbnVtYmVyID0gMCB0aGVuXG4gICAgICAoKiBBc3N1bWUgZW1wdHkgc2VjdGlvbiBhdCBbbGV2ZWxdLCBkbyBub3QgY29uc3VtZSB0b2tlbi4gKilcbiAgICAgIChtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICAgfCBbXSAtPiBoZWFkZXJzICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IGhlYWRlcnMgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9ucylcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIGVsc2UgaWYgaF9sZXZlbCA9IGxldmVsIHRoZW4gKFxuICAgICgqIEF0IHByb3BlciBbbGV2ZWxdLiAgSGF2ZSB3ZSByZWFjaGVkIHRoZSBbbnVtYmVyXSBvbmU/ICopXG4gICAgaWYgbnVtYmVyIDw9IDEgdGhlbiAoXG4gICAgICBtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICB8IFtdIC0+IHRsICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgdGwgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9uc1xuICAgIClcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgKG51bWJlciAtIDEpIHN1YnNlY3Rpb25zXG4gIClcbiAgZWxzZSAoKiBoX2xldmVsIDwgbGV2ZWwgKilcbiAgICBbXSAoKiBTb3VnaHQgW2xldmVsXSBoYXMgbm90IGJlZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbiAqKVxuXG4oKiBBc3N1bWUgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgaGVhZGVycyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cbiAgIFJldHVybiB0aGUgbGlzdCBvZiBUT0MgZW50cmllcyBmb3IgW21pbl9sZXZlbF0gYW5kIHRoZSBbaGVhZGVyc11cbiAgIG5vdCB1c2VkIGZvciB0aGUgVE9DIGVudHJpZXMuICopXG5sZXQgcmVjIG1ha2VfdG9jIChoZWFkZXJzOihlbGVtZW50KnN0cmluZypzdHJpbmcpbGlzdCkgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgbWluX2xldmVsID4gbWF4X2xldmVsIHRoZW4gW10sIGhlYWRlcnNcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IChIMSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgyIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAyIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDMgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDMgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINCB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg1IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA1IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDYgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDYgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgKVxuYW5kIHRvY19lbnRyeSBoZWFkZXJzIGhfbGV2ZWwgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBoX2xldmVsID4gbWF4X2xldmVsIHRoZW4gKCogdG9vIGRlZXAsIHNraXAgKilcbiAgICBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgZWxzZSBpZiBoX2xldmVsIDwgbWluX2xldmVsIHRoZW5cbiAgICAoKiBzZWN0aW9uIHdlIHdhbnRlZCB0aGUgVE9DIGZvciBpcyBmaW5pc2hlZCwgZG8gbm90IGNvbXN1bWUgdGhlIHRva2VuICopXG4gICAgW10sIGhlYWRlcnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbWluX2xldmVsIHRoZW4gKFxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jX2VudHJ5ID0gbWF0Y2ggc3ViX3RvYyB3aXRoXG4gICAgICB8IFtdIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MXVxuICAgICAgfCBfIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MOyBVbCBzdWJfdG9jOyBOTF0gaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIHRvY19lbnRyeSA6OiB0b2MsIHRsXG4gICkgZWxzZSAoKiBoX2xldmVsID4gbWluX2xldmVsICopXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgaGVhZGVycyB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICBbVWwgc3ViX3RvY10gOjogdG9jLCB0bFxuXG5sZXQgdG9jID8oc3RhcnQ9W10pID8oZGVwdGg9MikgbWQgPVxuICBpZiBkZXB0aCA8IDEgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZC50b2M6IH5kZXB0aCBtdXN0IGJlID49IDFcIjtcbiAgbGV0IGhlYWRlcnMgPSBPbWRfYmFja2VuZC5oZWFkZXJzX29mX21kIH5yZW1vdmVfaGVhZGVyX2xpbmtzOnRydWUgbWQgaW5cbiAgbGV0IGhlYWRlcnMgPSBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBbXSAtPiBoZWFkZXJzXG4gICAgfCBudW1iZXIgOjogc3Vic2VjdGlvbnMgLT5cbiAgICAgICBpZiBudW1iZXIgPCAwIHRoZW4gaW52YWxpZF9hcmcoXCJPbWQudG9jOiBsZXZlbCAxIHN0YXJ0IG11c3QgYmUgPj0gMFwiKTtcbiAgICAgICBmaW5kX3N0YXJ0IGhlYWRlcnMgMSBudW1iZXIgc3Vic2VjdGlvbnMgaW5cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHN0YXJ0IGluXG4gIGxldCB0b2MsIF8gPSBtYWtlX3RvYyBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB+bWluX2xldmVsOihsZW4gKyAxKSB+bWF4X2xldmVsOihsZW4gKyBkZXB0aCkgaW5cbiAgbWF0Y2ggdG9jIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IF8gLT4gW1VsKHRvYyldXG5cbmxldCBhZGRfdG9jID9zdGFydCA/ZGVwdGggP3RpdGxlIG1kID1cbiAgbGV0IHRvYyA9IHRvYyA/c3RhcnQgP2RlcHRoIG1kIGluXG4gICgqIFJlcGxhY2UgXCIqVGFibGUgb2YgY29udGVudHMqXCIgd2l0aCB0aGUgYWN0dWFsIFRPQy4gKilcbiAgdG9jXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEVuc3VyZSB0aGF0IFthdF9leGl0XSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHByb2dyYW0gKilcblxubGV0IF8gPSBkb19hdF9leGl0KClcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiVmRvbVRodW5rIiwiYXJncyIsIkdlbmVyaWNIb29rIiwiaW5pdCIsInVwZGF0ZSIsImRlc3Ryb3kiLCJleHRyYSIsImhvb2tfc3RhdGVfa2V5IiwiU3ltYm9sIiwic3RhdGUiLCJmcm9tIiwidG8iLCJCYXNlX2FtX3Rlc3RpbmciLCJCYXNlX2NhbWxfZXhuX2lzX21vc3RfcmVjZW50X2V4biIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF9pc19jb250aW51YXRpb25fdGFnIiwiY2FtbF9tdWwiLCJjYW1sX2hhc2hfbWl4X2ludCIsImNhbWxfaGFzaF9taXhfanNieXRlcyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkiLCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQiLCJpc0Zpbml0ZSIsImlzTmFOIiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9pbnQ2NF9sbzMyIiwidiIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9zdHJpbmciLCJjYW1sX2hhc2hfbWl4X2J5dGVzX2FyciIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJqc29vX2lzX2FzY2lpIiwiY2FtbF91dGYxNl9vZl91dGY4IiwiYzEiLCJjMiIsIk1sQnl0ZXMiLCJjb250ZW50cyIsImNvbnRlbnQiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IiwiZmxvYXQzMmEiLCJGbG9hdDMyQXJyYXkiLCJpbnQzMmEiLCJJbnQzMkFycmF5IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfYmFfc2VyaWFsaXplIiwid3JpdGVyIiwiYmEiLCJzeiIsImNvbXBsZXgiLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UiLCJleG4iLCJmb3JjZSIsImNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZSIsImNhbWxfcmFpc2Vfd2l0aF9hcmciLCJhcmciLCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzIiwiY2FtbF9yYWlzZV93aXRoX3N0cmluZyIsIm1zZyIsImNhbWxfaW52YWxpZF9hcmd1bWVudCIsImNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQiLCJraW5kIiwiY2FtbF9iYV9jcmVhdGVfYnVmZmVyIiwic2l6ZSIsInZpZXciLCJGbG9hdDY0QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9vZl9ieXRlcyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsInJlcyIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2FycmF5X2JvdW5kX2Vycm9yIiwiY2FtbF9iYV9jdXN0b21fbmFtZSIsIk1sX0JpZ2FycmF5IiwibGF5b3V0IiwiYnVmZmVyIiwib2ZzIiwiaW0iLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX2JhX2Rlc2VyaWFsaXplIiwicmVhZGVyIiwibnVtX2RpbXMiLCJzaXplX2RpbSIsInNpemVfZGltX2hpIiwic2l6ZV9kaW1fbG8iLCJzaXh0eSIsImludDY0IiwiY2FtbF9iYV9jb21wYXJlIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJjYW1sX2ludDMyX3VubWFyc2hhbCIsImNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCIsImNhbWxfaW50NjRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF9tYXJzaGFsIiwic2l6ZXMiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9pc19tbF9zdHJpbmciLCJjYW1sX2lzX21sX2J5dGVzIiwiY2FtbF9oYXNoIiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsIm51bSIsImhoIiwiQmFzZV9oYXNoX2RvdWJsZSIsIkJhc2VfaGFzaF9zdHJpbmciLCJCYXNlX2ludF9tYXRoX2ludDMyX2NseiIsIkJhc2VfaW50X21hdGhfaW50MzJfY3R6IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfaW50NjRfdG9faW50MzIiLCJCYXNlX2ludF9tYXRoX2ludDY0X2NseiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsIkJhc2VfaW50X21hdGhfaW50NjRfY3R6IiwiaXNfemVybyIsImxhbmQiLCJzbWFsbF9pbnQ2NCIsImNhbWxfaW50NjRfbXVsIiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiIsImJhc2UiLCJleHBvbmVudCIsIm9uZSIsIm11bCIsIkJhc2VfaW50X21hdGhfaW50X2NseiIsIkJhc2VfaW50X21hdGhfaW50X2N0eiIsIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50IiwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHoiLCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jdHoiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmciLCJCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZSIsImNhbWxfY3JlYXRlX2J5dGVzIiwiQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzIiwidl9sZW4iLCJjYW1sX3N0cmluZ19vZl9hcnJheSIsImNhbWxfYmFfZ2V0XzEiLCJpMCIsIkJpZ1N0cmluZ1JlYWRlciIsImJzIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJwYXRoIiwiZXJybm8iLCJ2YXJpYW50IiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiTWxGYWtlRmQiLCJmaWxlIiwiTWxGYWtlRGV2aWNlIiwiY29tcCIsIm5hbWVfc2xhc2giLCJtb2RlIiwicmFpc2VfdW5peCIsInBhcmVudCIsInNlZW4iLCJtIiwiZW50cnkiLCJvayIsImJ5dGVzIiwiTWxGYWtlRmRfb3V0IiwiZmQiLCJzcmMiLCJNbE11dGV4IiwiTWxOYXQiLCJjYW1sX21sX3N0cmluZ19sZW5ndGgiLCJjYW1sX3N0cmluZ191bnNhZmVfZ2V0IiwiY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmciLCJjYW1sX2J5dGVzX2JvdW5kX2Vycm9yIiwiY2FtbF9ieXRlc191bnNhZmVfc2V0IiwiY2FtbF9ieXRlc19zZXQiLCJNbE5vZGVGZCIsImJ1Zl9vZmZzZXQiLCJyZWFkIiwiTWxOb2RlRGV2aWNlIiwiY29uc3RzIiwiaXNDaGFyYWN0ZXJEZXZpY2UiLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiTWxTdHJpbmdSZWFkZXIiLCJVSW50OEFycmF5UmVhZGVyIiwiaW5jcl9uYXQiLCJuYXQiLCJjYXJyeV9pbiIsImNhcnJ5IiwiYWRkX25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibGVuMiIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfY3JlYXRlIiwiZGltc19tbCIsImJpZ3N0cmluZ19hbGxvYyIsIl8iLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzIiwiYmExIiwicG9zMSIsImJ5dGVzMiIsInBvczIiLCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYSIsInN0cjEiLCJiYTIiLCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImJpZ3N0cmluZ19ibGl0X3N0dWIiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX2ZpbmQiLCJjaHIiLCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJ2X3MxIiwidl9zMV9wb3MiLCJ2X3MyIiwidl9zMl9wb3MiLCJiaWdzdHJpbmdfbWVtY21wX3N0dWIiLCJiaWdzdHJpbmdfbWVtbWVtX2J5dGVjb2RlIiwiaGF5c3RhY2siLCJoYXlzdGFja19wb3MiLCJoYXlzdGFja19sZW4iLCJuZWVkbGVfcG9zIiwibmVlZGxlX2xlbiIsImxpbSIsIm1hdGNoZXMiLCJjYW1sX2JhX3NldF8xIiwiYmlnc3RyaW5nX21lbXNldF9zdHViIiwiYmlnc3RyaW5nIiwidl9wb3MiLCJ2X2NoYXIiLCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIiwiYWIiLCJ0YSIsImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSIsImJpZ3N0cmluZ19yZWFsbG9jIiwibmV3X2RhdGEiLCJuZXdfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJpZ3N0cmluZ190b190eXBlZF9hcnJheSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzIiwiYmlnc3RyaW5nYWZfbWVtY2hyIiwiYmFfb2ZmIiwiY2FtbF9pbnRfY29tcGFyZSIsImJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmciLCJiYTFfb2ZmIiwiYmEyX29mZiIsImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmciLCJzdHJfb2ZmIiwiYmluX3Byb3RfYmxpdF9idWZfYnl0ZXNfc3R1YiIsImNhbWxfY2hlY2tfYm91bmQiLCJhcnJheSIsImNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nIiwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YiIsImJpbl9wcm90X2JsaXRfYnVmX3N0dWIiLCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJibGFrZTJiIiwiQURENjRBQSIsIm8wIiwibzEiLCJBREQ2NEFDIiwiYjAiLCJiMSIsIkIyQl9HRVQzMiIsIkIyQl9HIiwiaXgiLCJpeSIsIngwIiwieDEiLCJ5MCIsInkxIiwieG9yMCIsInhvcjEiLCJCTEFLRTJCX0lWMzIiLCJVaW50MzJBcnJheSIsIlNJR01BOCIsIlNJR01BODIiLCJibGFrZTJiQ29tcHJlc3MiLCJjdHgiLCJsYXN0IiwicGFyYW1ldGVyQmxvY2siLCJibGFrZTJiSW5pdCIsIm91dGxlbiIsImJsYWtlMmJVcGRhdGUiLCJpbnB1dCIsImJsYWtlMmJGaW5hbCIsIm91dCIsImJsaXRfbmF0IiwiY2FtbF9NRDVUcmFuc2Zvcm0iLCJhZGQiLCJ4eCIsImZmIiwiZ2ciLCJjYW1sX01ENUZpbmFsIiwiaW5fYnVmIiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJiOCIsImNhbWxfTUQ1VXBkYXRlIiwiaW5wdXRfbGVuIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfYWNvc2hfZmxvYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsIm5hcmdzIiwiZXh0cmFfYXJncyIsImNhbWxfYWxsb2NfZHVtbXlfaW5maXgiLCJjYW1sX2FsbG9jX3N0YWNrIiwiaHYiLCJoeCIsImhmIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJwIiwiYXJnczIiLCJjYW1sX2FycmF5X2FwcGVuZCIsImExIiwiYTIiLCJsMSIsImwyIiwiY2FtbF9hcnJheV9ibGl0IiwiY2FtbF9hcnJheV9jb25jYXQiLCJjYW1sX2FycmF5X2ZpbGwiLCJjYW1sX2FycmF5X2dldCIsImNhbWxfYXJyYXlfb2ZfYnl0ZXMiLCJjYW1sX2FycmF5X29mX3N0cmluZyIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hcnJheV9zdWIiLCJjYW1sX2FzaW5oX2Zsb2F0IiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfYXRvbWljX2NhcyIsInJlZiIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9iYV9ibGl0IiwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0IiwibmV3X2RpbXMiLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfYmFfZGltXzMiLCJjYW1sX2JhX2ZpbGwiLCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX2dldF8zIiwiY2FtbF9iYV9nZXRfZ2VuZXJpYyIsImNhbWxfYmFfaW5pdCIsImNhbWxfYmFfa2luZCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9iYV9tYXBfZmlsZSIsInZmZCIsInNoYXJlZCIsImNhbWxfYmFfbWFwX2ZpbGVfYnl0ZWNvZGUiLCJhcmduIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiY2FtbF9iYV9zZXRfMiIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9iYV9zbGljZSIsIm51bV9pbmRzIiwic3ViX2RpbXMiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJiMiIsImNhbWxfYmFfdWludDhfZ2V0MzIiLCJiMyIsImI0IiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImI1IiwiYjYiLCJiNyIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2JhX3VpbnQ4X3NldDMyIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfYmFja3RyYWNlX3N0YXR1cyIsIl91bml0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9ibGFrZTJfY3JlYXRlIiwiaGFzaGxlbiIsImNhbWxfYmxha2UyX2ZpbmFsIiwiY2FtbF9ibGFrZTJfdXBkYXRlIiwiY2FtbF9ibGFrZTJfc3RyaW5nIiwiY2FtbF9ibGl0X3N0cmluZyIsImNhbWxfYnN3YXAxNiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiY2FtbF9idWlsZF9zeW1ib2xzIiwic3ltYiIsImNhbWxfYnl0ZXNfY29tcGFyZSIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2J5dGVzX2dldDE2IiwiY2FtbF9ieXRlc19nZXQzMiIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2J5dGVzX2xlc3NlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2J5dGVzX25vdGVxdWFsIiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfYnl0ZXNfc2V0MTYiLCJpMTYiLCJjYW1sX2J5dGVzX3NldDMyIiwiaTMyIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfY2FsbGJhY2siLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9tbF9jaGFubmVsX2dldCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2hhbmlkIiwiY2hhbiIsImNhbWxfY2xhc3NpZnlfZmxvYXQiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfY29tcGFyZSIsImNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4YyIsImNvbnQiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90IiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfY29zaF9mbG9hdCIsImZzX25vZGVfc3VwcG9ydGVkIiwibWFrZV9wYXRoX2lzX2Fic29sdXRlIiwicG9zaXgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwibmNvbXAiLCJjYW1sX2dldF9yb290IiwiY2FtbF9yb290IiwianNvb19tb3VudF9wb2ludCIsInJlc29sdmVfZnNfZGV2aWNlIiwiY2FtbF9jcmVhdGVfZmlsZSIsImNhbWxfY3JlYXRlX3N0cmluZyIsImNhbWxfY3NlbF92YWx1ZSIsInZfY29uZCIsInZfdHJ1ZSIsInZfZmFsc2UiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsInpzdGRfZGVjb21wcmVzcyIsInU4IiwidTE2IiwidTMyIiwic2xjIiwiZmlsbCIsImNwdyIsImVjIiwiaW5kIiwibnQiLCJyYiIsInJ6ZmgiLCJkYXQiLCJuMyIsImZsZyIsInNzIiwiY2MiLCJkZiIsImZjZiIsImJ0IiwiZGIiLCJkaSIsImZzYiIsImZzcyIsIndzIiwid2IiLCJtc2IiLCJ2YWwiLCJiaXRzIiwicmZzZSIsIm1hbCIsInRwb3MiLCJhbCIsInByb2JzIiwic3ltIiwiaHQiLCJmcmVxIiwiZHN0YXRlIiwibnN0YXRlIiwiYmIxIiwic3ltcyIsIm5iaXRzIiwiY2J0IiwibXNrIiwibXNrMWZiIiwibXN2Iiwic3ZhbCIsInJidCIsInN5bXBvcyIsInNzdGVwIiwic21hc2siLCJzZiIsIm5iIiwicmh1Iiwid2MiLCJoYiIsImh3IiwicmMiLCJyaSIsIl9hIiwiZWJ0IiwiZmR0IiwiZXBvcyIsImxiIiwic3QxIiwic3QyIiwiYnRyMSIsImJ0cjIiLCJmcG9zIiwiYnl0ZSIsIndlcyIsInd0IiwibWIiLCJ0cyIsInJlbSIsImhidWYiLCJwdiIsImRsbHQiLCJkbWx0IiwiZG9jdCIsImIyYmwiLCJibCIsImxsYiIsImxsYmwiLCJtbGIiLCJtbGJsIiwiZGh1IiwiaHUiLCJlYiIsInN0IiwiYnRyIiwiZGh1NCIsInN6MSIsInN6MiIsInN6MyIsInJ6YiIsImJ0eXBlIiwibGJ0IiwibHNzIiwibGNzIiwiczQiLCJzcGwiLCJodWQiLCJzY20iLCJkdHMiLCJtZCIsInJidWYiLCJfYiIsIm1sdCIsIm9jdCIsImxsdCIsInNwb3MiLCJvdWJ0IiwibHN0Iiwib3N0IiwibXN0IiwibGxjIiwibGJ0ciIsIm1sYyIsIm1idHIiLCJvZmMiLCJvYnRyIiwib2ZwIiwibWwiLCJsbCIsImlkeCIsInN0aW4iLCJjY3QiLCJidWZzIiwib2wiLCJjaGsiLCJibGsiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2RpdiIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19jb21wYXJlX2FuZF9zZXQiLCJjYW1sX2RvbWFpbl9kbHNfZ2V0IiwidW5pdCIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX2RvbWFpbl9pZCIsImNhbWxfbWxfbXV0ZXhfdW5sb2NrIiwiY2FtbF9kb21haW5fbGF0ZXN0X2lkeCIsImNhbWxfZG9tYWluX3NwYXduIiwidGVybV9zeW5jIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF9lcGhlX2tleV9vZmZzZXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9rZXkiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJjYW1sX2VwaGVfZ2V0X2RhdGEiLCJjYW1sX29ial9kdXAiLCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSIsImNhbWxfZXBoZV9nZXRfa2V5IiwiY2FtbF9lcGhlX2dldF9rZXlfY29weSIsInoiLCJjYW1sX2VwaGVfc2V0X2tleSIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjYW1sX2VxdWFsIiwiY2FtbF9lcmZfZmxvYXQiLCJhMyIsImE0IiwiYTUiLCJjYW1sX2VyZmNfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9ldmVudGxvZ19yZXN1bWUiLCJjYW1sX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZXhwbTFfZmxvYXQiLCJjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uIiwiY2FtbF9mb3JtYXRfZXhjZXB0aW9uIiwiYnVja2V0Iiwic3RhcnQiLCJjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImhhbmRsZXIiLCJhdF9leGl0IiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9mbG9hdF9vZl9zdHJpbmciLCJtMyIsIm1hbnRpc3NhIiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsImZzIiwiY2FtbF9wYXJzZV9mb3JtYXQiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX2Zvcm1hdF9pbnQiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX2ZyZXNoX29vX2lkIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImpzb29fY3JlYXRlX2ZpbGUiLCJjYW1sX2ZzX2luaXQiLCJ0bXAiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9nY19nZXQiLCJjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnQiLCJjYW1sX2djX21ham9yIiwiY2FtbF9nY19tYWpvcl9zbGljZSIsIndvcmsiLCJjYW1sX2djX21pbm9yIiwiY2FtbF9nY19taW5vcl93b3JkcyIsImNhbWxfZ2NfcXVpY2tfc3RhdCIsImNhbWxfZ2Nfc2V0IiwiX2NvbnRyb2wiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrIiwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2siLCJjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2dldF9nbG9iYWxfZGF0YSIsImNhbWxfZ2V0X21ham9yX2J1Y2tldCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImNhbWxfZ2V0X21pbm9yX2ZyZWUiLCJjYW1sX21ldGhvZF9jYWNoZSIsImNhbWxfZ2V0X3B1YmxpY19tZXRob2QiLCJjYWNoZWlkIiwibWV0aHMiLCJsaSIsImNhbWxfZ3JfYXJjX2F1eCIsImN4IiwiY3kiLCJyeSIsInJ4Iiwicm90IiwieFBvcyIsInlQb3MiLCJ4UG9zX3ByZXYiLCJ5UG9zX3ByZXYiLCJzcGFjZSIsImRlbHRhIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9ibGl0X2ltYWdlIiwiaW0yIiwiY2FtbF9ncl9jbGVhcl9ncmFwaCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX2dyX2Nsb3NlX3N1YndpbmRvdyIsImNhbWxfZ3JfY3JlYXRlX2ltYWdlIiwiY2FtbF9ncl9jdXJyZW50X3giLCJjYW1sX2dyX2N1cnJlbnRfeSIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX2dyX2RyYXdfYXJjIiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X2NoYXIiLCJjYW1sX2dyX2RyYXdfaW1hZ2UiLCJjYW52YXMiLCJpbWFnZSIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2dyX2ZpbGxfcG9seSIsImFyIiwiY2FtbF9ncl9maWxsX3JlY3QiLCJjYW1sX2dyX2xpbmV0byIsImNhbWxfZ3JfbWFrZV9pbWFnZSIsImNhbWxfZ3JfbW92ZXRvIiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9ncl9zZXRfbGluZV93aWR0aCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfZ3Jfc2V0X2ZvbnQiLCJjYW1sX2dyX3NldF9jb2xvciIsImNvbG9yIiwiY29udmVydCIsImNfc3RyIiwiY2FtbF9ncl9yZXNpemVfd2luZG93IiwiY2FtbF9ncl9zdGF0ZV9pbml0IiwiY2FtbF9ncl9zdGF0ZV9zZXQiLCJjYW1sX2dyX3N0YXRlX2NyZWF0ZSIsImNvbnRleHQiLCJjYW1sX2dyX29wZW5fZ3JhcGgiLCJpbmZvIiwiZ2V0Iiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX2dyX29wZW5fc3Vid2luZG93IiwiY2FtbF9ncl9wbG90IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImNhbWxfZ3JfcmVtZW1iZXJfbW9kZSIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfZ3Jfc2lnaW9fc2lnbmFsIiwiY2FtbF9ncl9zaXplX3giLCJjYW1sX2dyX3NpemVfeSIsImNhbWxfZ3Jfc3luY2hyb25pemUiLCJjYW1sX2dyX3RleHRfc2l6ZSIsInR4dCIsImNhbWxfZ3Jfd2FpdF9ldmVudCIsIl9ldmwiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9ncmVhdGVydGhhbiIsImNhbWxfaGFzaF9taXhfYmlnc3RyaW5nIiwibnVtX2RpZ2l0c19uYXQiLCJjYW1sX2hhc2hfbmF0IiwiY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQiLCJzdHlsZSIsImV4cF9zaWduIiwic2lnbl9zdHIiLCJjc3QiLCJ4X3N0ciIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUiLCJjYW1sX3JlZmlsbCIsInN0cl9hIiwibnJlYWQiLCJjYW1sX3JhaXNlX2VuZF9vZl9maWxlIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsImludGVybl9vYmpfdGFibGUiLCJvYmpfY291bnRlciIsImludGVybl9yZWMiLCJoZWFkZXIiLCJvcHMiLCJleHBlY3RlZF9zaXplIiwib2xkX3BvcyIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfaW50NjRfZGl2IiwiY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSIsImNhbWxfaW50NjRfbmVnIiwiY2FtbF9pbnQ2NF9mb3JtYXQiLCJ3YmFzZSIsImN2dGJsIiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0IiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfaW50NjRfc3ViIiwiY2FtbF9pbnQ2NF90b19mbG9hdCIsImNhbWxfaW50NjRfeG9yIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9pc19qcyIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9qc19jYWxsIiwiY2FtbF9qc19kZWxldGUiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImNhbWxfanNfZXhwciIsImNhbWxfanNfZnJvbV9ib29sIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9qc19mcm9tX3N0cmluZyIsImNhbWxfanNfZnVuX2NhbGwiLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc19nZXQiLCJjYW1sX2pzX2dldF9jb25zb2xlIiwiY2FtbF9qc19odG1sX2VudGl0aWVzIiwiZW50aXR5IiwidGVtcCIsImNhbWxfanNfcmVnZXhwcyIsImNhbWxfanNfaHRtbF9lc2NhcGUiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2pzX21ldGhfY2FsbCIsImNhbWxfanNfbmV3IiwiRiIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjYW1sX2pzX3NldCIsImNhbWxfanNfc3RyaWN0X2VxdWFscyIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF9qc190b19mbG9hdCIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX2pzX3RvX3N0cmluZyIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9qc192YXIiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2siLCJGdW5jdGlvbiIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IiwiYXJpdHkiLCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3RhZyIsImNhbWxfbGF6eV9yZWFkX3Jlc3VsdCIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2xlc3NlcXVhbCIsImNhbWxfbGVzc3RoYW4iLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsImJhY2t0cmsiLCJjYW1sX2xpc3RfbW91bnRfcG9pbnQiLCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXkiLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfbmV3X3N0cmluZyIsImNhbWxfbHhtX25leHQiLCJzaGlmdF9sIiwic2hpZnRfciIsIm9yIiwieG9yIiwicm90bCIsInNldCIsIk0iLCJkYWJhIiwicTAiLCJxMSIsImNhbWxfbWFrZV9mbG9hdF92ZWN0IiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21ha2VfbG9jYWxfdmVjdCIsInZfZWx0IiwiY2FtbF9tYXJzaGFsX2NvbnN0YW50cyIsImNhbWxfbWF5YmVfcHJpbnRfc3RhdHMiLCJjYW1sX21kNV9ieXRlcyIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWQ1X2NoYW4iLCJ0b3JlYWQiLCJjYW1sX21kNV9zdHJpbmciLCJjYW1sX21lbXByb2ZfZGlzY2FyZCIsImNhbWxfbWVtcHJvZl9zZXQiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdCIsImNhcHR1cmVkIiwiaW50byIsInRvX3Jlc3RvcmUiLCJuZXdfIiwiY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmUiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZSIsImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0IiwiY2FtbF9zeXNfZmRzIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9tbF9jbG9zZV9jaGFubmVsIiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX3J1bnRpbWVfd2FybmluZ3MiLCJjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwiYm9vbCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX21sX2lucHV0X2JpZ2FycmF5IiwiY2FtbF9tbF9pbnB1dF9jaGFyIiwiY2FtbF9tbF9pbnB1dF9pbnQiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsInByZXZfbWF4IiwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZSIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX21sX211dGV4X2xvY2siLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2siLCJjYW1sX3N5c19vcGVuX2Zvcl9ub2RlIiwiZmQyIiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzIiwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IiwiYnVmZmVyZWQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFncyIsImNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QiLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9tbF9wb3NfaW5fNjQiLCJjYW1sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXQiLCJjYW1sX21sX3Bvc19vdXRfNjQiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX2FyZV9hY3RpdmUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3N0YXJ0IiwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQiLCJjYW1sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX21sX3NlZWtfaW5fNjQiLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfbWxfc2V0X2J1ZmZlcmVkIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfbW9kIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9tb3VudF9hdXRvbG9hZCIsImNhbWxfbGV4X3J1bl9tZW0iLCJtZW0iLCJjdXJyX3BvcyIsImNhbWxfbGV4X3J1bl90YWciLCJjYW1sX25ld19sZXhfZW5naW5lIiwibGV4X21lbSIsImxleF9iYXNlX2NvZGUiLCJsZXhfYmFja3Rya19jb2RlIiwibGV4X2RlZmF1bHRfY29kZSIsImxleF90cmFuc19jb2RlIiwibGV4X2NoZWNrX2NvZGUiLCJsZXhfY29kZSIsInBjX29mZiIsInBzdGF0ZSIsImJhc2VfY29kZSIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiY2FtbF9ub3RlcXVhbCIsImNhbWxfb2JqX2FkZF9vZmZzZXQiLCJjYW1sX29ial9ibG9jayIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNhbWxfb2JqX21ha2VfZm9yd2FyZCIsImNhbWxfb2JqX3Jhd19maWVsZCIsImNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfb2pzX25ld19hcnIiLCJjYW1sX291dF9jaGFubmVsX3Bvc19mZCIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsIm1lbW8iLCJleGlzdGluZ19vZmZzZXQiLCJleHRlcm5fcmVjIiwic3pfMzJfNjQiLCJoZWFkZXJfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIiLCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9wYXJzZV9lbmdpbmUiLCJ0YWJsZXMiLCJlbnYiLCJjbWQiLCJFUlJDT0RFIiwibG9vcCIsInRlc3RzaGlmdCIsInNoaWZ0Iiwic2hpZnRfcmVjb3ZlciIsInJlZHVjZSIsIlJFQURfVE9LRU4iLCJSQUlTRV9QQVJTRV9FUlJPUiIsIkdST1dfU1RBQ0tTXzEiLCJHUk9XX1NUQUNLU18yIiwiQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04iLCJDQUxMX0VSUk9SX0ZVTkNUSU9OIiwiZW52X3Nfc3RhY2siLCJlbnZfdl9zdGFjayIsImVudl9zeW1iX3N0YXJ0X3N0YWNrIiwiZW52X3N5bWJfZW5kX3N0YWNrIiwiZW52X3N0YWNrc2l6ZSIsImVudl9zdGFja2Jhc2UiLCJlbnZfY3Vycl9jaGFyIiwiZW52X2x2YWwiLCJlbnZfc3ltYl9zdGFydCIsImVudl9zeW1iX2VuZCIsImVudl9hc3AiLCJlbnZfcnVsZV9sZW4iLCJlbnZfcnVsZV9udW1iZXIiLCJlbnZfc3AiLCJlbnZfc3RhdGUiLCJlbnZfZXJyZmxhZyIsInRibF90cmFuc2xfY29uc3QiLCJ0YmxfdHJhbnNsX2Jsb2NrIiwidGJsX2xocyIsInRibF9sZW4iLCJ0YmxfZGVmcmVkIiwidGJsX2Rnb3RvIiwidGJsX3NpbmRleCIsInRibF9yaW5kZXgiLCJ0YmxfZ2luZGV4IiwidGJsX3RhYmxlc2l6ZSIsInRibF90YWJsZSIsInRibF9jaGVjayIsInRibF9uYW1lc19jb25zdCIsInRibF9uYW1lc19ibG9jayIsImxvZyIsInRva2VuX25hbWUiLCJuYW1lcyIsInByaW50X3Rva2VuIiwidG9rIiwidG9rZW4iLCJuMSIsIm4yIiwic3RhdGUxIiwic3AiLCJlcnJmbGFnIiwiYXNwIiwiY2FtbF9wdXJlX2pzX2V4cHIiLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZSIsImNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIiwiX2NoYW5uZWwiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiY2FtbF9yb3VuZF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjdXJzb3IiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImNhbGxiYWNrcyIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfcnVudGltZV92YXJpYW50IiwiY2FtbF9zZXRfb29faWQiLCJjYW1sX3NldF9wYXJzZXJfdHJhY2UiLCJvbGRmbGFnIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfc2lnbmJpdF9mbG9hdCIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfc3BhY2V0aW1lX2VuYWJsZWQiLCJjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZSIsImNhbWxfc3RyX2luaXRpYWxpemUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2NvbmNhdCIsImNhbWxfc3RyaW5nX2VxdWFsIiwiY2FtbF9zdHJpbmdfZ2V0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX3N0cmluZ19nZXQzMiIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9zdHJpbmdfbGVzc2VxdWFsIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3RyaW5nX3NldDE2IiwiY2FtbF9zdHJpbmdfc2V0MzIiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9zeXNfY2hkaXIiLCJkaXIiLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIiwiY2FtbF9zeXNfY29uc3RfaW50X3NpemUiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIm9zX3R5cGUiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXgiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3N5c19leGVjdXRhYmxlX25hbWUiLCJjYW1sX3N5c19leGl0IiwiY2FtbF9zeXNfZmlsZV9leGlzdHMiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX3N5c19nZXRlbnYiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImNhbWxfc3lzX21rZGlyIiwicGVybSIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9zeXNfcmFuZG9tX3NlZWQiLCJub3ciLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3lzX3JlbmFtZSIsIm9fcm9vdCIsIm5fcm9vdCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQiLCJjaGlsZF9wcm9jZXNzIiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9zeXNfdW5zYWZlX2dldGVudiIsImNhbWxfdGFuaF9mbG9hdCIsImNhbWxfdG9fanNfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfdW5peF9jbG9zZWRpciIsImRpcl9oYW5kbGUiLCJjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3JlYWRkaXIiLCJjYW1sX3VuaXhfZmluZGZpcnN0IiwicGF0aF9qcyIsImZpcnN0X2VudHJ5IiwiY2FtbF91bml4X2ZpbmRuZXh0IiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF9nZXR1aWQiLCJjYW1sX3VuaXhfZ210aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyIsImNhbWxfdW5peF9pc2F0dHkiLCJmaWxlRGVzY3JpcHRvciIsInR0eSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9sc3RhdCIsImNhbWxfdW5peF9sc3RhdF82NCIsImNhbWxfdW5peF9ta2RpciIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfdW5peF9yZWFkbGluayIsImNhbWxfdW5peF9yZXdpbmRkaXIiLCJuZXdfZGlyX2hhbmRsZSIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfdW5peF9zdGFydHVwIiwiY2FtbF91bml4X3N0YXQiLCJjYW1sX3VuaXhfc3RhdF82NCIsImNhbWxfdW5peF9zeW1saW5rIiwic3JjX3Jvb3QiLCJkc3Rfcm9vdCIsImNhbWxfdW5peF90aW1lIiwiY2FtbF91bml4X3VubGluayIsImNhbWxfdW5tb3VudCIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX3hkZ19kZWZhdWx0cyIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF96c3RkX2luaXRpYWxpemUiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjb21wYXJlX25hdCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjb21wbGVtZW50X25hdCIsImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvcmVfZ2NfY29tcGFjdGlvbnMiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY29yZV9nY19oZWFwX3dvcmRzIiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNvcmVfZ2NfbWFqb3Jfd29yZHMiLCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zIiwiY29yZV9nY19taW5vcl93b3JkcyIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyIsImNvcmVfZ2NfdG9wX2hlYXBfd29yZHMiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY29yZV9tZDVfZmQiLCJpYyIsImNvcmVfdGltZV9uc19mb3JtYXQiLCJ0aW1lIiwiZm9ybWF0anMiLCJqc3RyaW5nIiwiY3JlYXRlX25hdCIsImRlY3JfbmF0IiwiYm9ycm93IiwiZGVzZXJpYWxpemVfbmF0IiwiZGl2X2hlbHBlciIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJ3cmFwIiwic2hpZnRfcmlnaHRfbmF0Iiwic2V0X3RvX3plcm9fbmF0IiwibmF0X29mX2FycmF5IiwibXVsdF9kaWdpdF9uYXQiLCJuYXQzIiwib2ZzMyIsIngyIiwieDMiLCJzdWJfbmF0IiwiZGl2X25hdCIsInF1byIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3QiLCJ2c3Rkb3V0IiwidnN0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdCIsInZvdXRwdXQiLCJzZXJpYWxpemVfbmF0IiwiaW5pdGlhbGl6ZV9uYXQiLCJpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmciLCJpc19kaWdpdF9pbnQiLCJpc19kaWdpdF9vZGQiLCJpc19kaWdpdF96ZXJvIiwianNfcGVyZm9ybWFuY2UiLCJwZXJmX2hvb2tzIiwiX2UiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImpzX3Byb2ZfbWFyayIsImpzX3Byb2ZfbWVhc3VyZSIsImVuZCIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImxhbmRfZGlnaXRfbmF0IiwibGVuZ3RoX25hdCIsImxvcl9kaWdpdF9uYXQiLCJseG9yX2RpZ2l0X25hdCIsIm11bHRfbmF0IiwibGVuMyIsIm50aF9kaWdpdF9uYXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInJlX21hdGNoIiwicmVfd29yZF9sZXR0ZXJzIiwib3Bjb2RlcyIsImlzX3dvcmRfbGV0dGVyIiwiaW5fYml0c2V0IiwicmVfbWF0Y2hfaW1wbCIsInBhcnRpYWwiLCJwcm9nIiwiY3Bvb2wiLCJub3JtdGFibGUiLCJudW1ncm91cHMiLCJudW1yZWdpc3RlcnMiLCJzdGFydGNoYXJzIiwicGMiLCJxdWl0IiwiZ3JvdXBzIiwicmVfcmVnaXN0ZXIiLCJiYWNrdHJhY2siLCJwdXNoIiwiYWNjZXB0IiwicHJlZml4X21hdGNoIiwib3AiLCJzYXJnIiwidWFyZyIsImdyb3VwIiwicmVfcGFydGlhbF9tYXRjaCIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsInJlX3NlYXJjaF9mb3J3YXJkIiwicmVfc3RyaW5nX21hdGNoIiwic2V0X2RpZ2l0X25hdCIsImRpZ2l0Iiwic2V0X2RpZ2l0X25hdF9uYXRpdmUiLCJzcXVhcmVfbmF0IiwibXNfdG9fbmFubyIsInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyIsIm1zIiwibXNfaTYzIiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0Iiwic3ltYm9sX2NvbmNhdCIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJzMSIsImwiLCJpIiwiaSQwIiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN5bWJvbCIsImwxIiwibDIiLCJoMSIsImgyIiwidGwiLCJoMyIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwib3Blbl9vdXRfZ2VuIiwibW9kZSIsInBlcm0iLCJuYW1lIiwiYyIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwiZmx1c2hfYWxsIiwiYSIsIm91dHB1dF9ieXRlcyIsIm9jIiwib3V0cHV0X3N0cmluZyIsIm91dHB1dCIsIm9mcyIsImxlbiIsIm91dHB1dF9zdWJzdHJpbmciLCJvdXRwdXRfdmFsdWUiLCJjaGFuIiwidiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwiciIsImxlbiQxIiwib2ZzJDEiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfbGluZSIsImJ1aWxkX3Jlc3VsdCIsImJ1ZiIsInBvcyQwIiwiaGQiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQwIiwic3RyMiIsInN0cjEiLCJzMiIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJmX3lldF90b19ydW4kMCIsIm9sZF9leGl0JDAiLCJuZXdfZXhpdCIsInN1Y2Nlc3MiLCJkb19kb21haW5fbG9jYWxfYXRfZXhpdCIsImRvX2F0X2V4aXQiLCJleGl0IiwicmV0Y29kZSIsImxlZnQiLCJyaWdodCIsImlzX2xlZnQiLCJpc19yaWdodCIsImZpbmRfbGVmdCIsImZpbmRfcmlnaHQiLCJtYXBfbGVmdCIsImUiLCJtYXBfcmlnaHQiLCJtYXAiLCJ2JDAiLCJmb2xkIiwiZXF1YWwiLCJlMSIsImUyIiwidjEiLCJ2MiIsInYxJDAiLCJ2MiQwIiwiY29tcGFyZSIsIm9jYW1sX3ZlcnNpb24iLCJvY2FtbF9yZWxlYXNlIiwiZXhlY3V0YWJsZV9uYW1lIiwib3NfdHlwZSIsImJhY2tlbmRfdHlwZSIsInVuaXgiLCJ3aW4zMiIsImN5Z3dpbiIsIm1heF9hcnJheV9sZW5ndGgiLCJtYXhfZmxvYXRhcnJheV9sZW5ndGgiLCJtYXhfc3RyaW5nX2xlbmd0aCIsImdldGVudl9vcHQiLCJpbnRlcmFjdGl2ZSIsInNldF9zaWduYWwiLCJzaWdfbnVtIiwic2lnX2JlaCIsImNhdGNoX2JyZWFrIiwib24iLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsIm1ha2UiLCJ1aWQiLCJBIiwicHJvdmFibHlfZXF1YWwiLCJCIiwic2V0IiwiaW5jciIsImRlY3IiLCJmb3JjZV9nZW5fbGF6eV9ibG9jayIsIm9ubHlfdmFsIiwiYmxrIiwiY2xvc3VyZSQwIiwicmVzdWx0JDAiLCJjbG9zdXJlIiwicmVzdWx0IiwiZSQwIiwiZm9yY2VfbGF6eV9ibG9jayIsImZvcmNlX2dlbiIsImx6diIsInQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJpc19lbXB0eSIsInhzIiwidW5jb25zIiwieHMkMCIsInhzJDEiLCJpdGVyaSIsImZvbGRfbGVmdGkiLCJhY2N1JDEiLCJmb3JfYWxsIiwicCIsImV4aXN0cyIsImZpbmQiLCJmaW5kX2luZGV4IiwiZmluZF9tYXAiLCJmaW5kX21hcGkiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJzb21lIiwidmFsdWUiLCJkZWZhdWx0JDAiLCJnZXQiLCJiaW5kIiwiam9pbiIsIm5vbmUiLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJzZWVkZWRfaGFzaCIsInNlZWQiLCJoYXNoIiwiZXNjYXBlZCIsImxvd2VyY2FzZV9hc2NpaSIsInVwcGVyY2FzZV9hc2NpaSIsImMxIiwiYzIiLCJlcnJfbm9fcHJlZCIsImVycl9ub19zdWNjIiwibG9fYm91bmQiLCJoaV9ib3VuZCIsInN1Y2MiLCJwcmVkIiwiaXNfdmFsaWQiLCJvZl9pbnQiLCJpc19jaGFyIiwib2ZfY2hhciIsInRvX2NoYXIiLCJ1bnNhZmVfdG9fY2hhciIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwibGFzdCIsImkkMSIsInIyIiwiZmxhdHRlbiIsImExIiwicjEkMCIsImEyIiwicmV2X21hcCIsImZvbGRfcmlnaHQiLCJiMiIsImIxIiwiYjEkMCIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwidDEiLCJzdGFibGVfc29ydCIsInNvcnQiLCJ4MiIsIngxIiwidGwkMSIsIngzIiwieDIkMCIsIngxJDAiLCJuMSIsIm4yIiwicmV2X3NvcnQiLCJ0bCQwIiwic29ydF91bmlxIiwiYyQwIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiYWNjdSQyIiwiY29tcGFyZV9sZW5ndGhzIiwiY29tcGFyZV9sZW5ndGhfd2l0aCIsImF1eCIsInRhaWwiLCJvZl9zZXEiLCJzZXEkMSIsImxvZ25vdCIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwidXRmXzhfdWNoYXJfNCIsImIzIiwiZ2V0X3V0Zl84X3VjaGFyIiwiYjEkNCIsImIyJDMiLCJpJDQiLCJiMSQyIiwiaSQ1IiwiYjIkMSIsImkkNiIsImIzJDEiLCJpJDEwIiwiaSQxMSIsImkkMTIiLCJpJDciLCJiMSQxIiwiaSQ4IiwiYjIkMCIsImkkOSIsImIzJDAiLCJpJDEzIiwiYjEkNSIsImkkMTQiLCJiMiQ0IiwiaSQyIiwiYjEkMyIsImkkMyIsImIyJDIiLCJpJDE1Iiwic2V0X3V0Zl84X3VjaGFyIiwibGFzdCQxIiwibGFzdCQwIiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiZGF0YV9zaXplIiwidG90YWxfc2l6ZSIsImZyb21fYnl0ZXMiLCJmcm9tX3N0cmluZyIsIm1ha2VfbWF0cml4Iiwic3giLCJzeSIsImluaXRfbWF0cml4Iiwicm93IiwibWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJsYSIsImxiIiwicmVzJDAiLCJsaXN0X2xlbmd0aCIsIm9mX2xpc3QiLCJpbnB1dF9hcnJheSIsImVsdCIsIm91dHB1dF9hcnJheSIsImVsdCQwIiwiYWNjJDIiLCJhMCIsImJpIiwiYWkiLCJuYSIsIm5iIiwibWF4c29uIiwiaTMxIiwiZSQxIiwiaiQwIiwiZmF0aGVyIiwic3JjMW9mcyIsInNyYzFsZW4iLCJzcmMyIiwic3JjMm9mcyIsInNyYzJsZW4iLCJkc3RvZnMiLCJzcmMxciIsInNyYzJyIiwiczIkMSIsInMxJDEiLCJpMSIsImkyIiwiaTIkMCIsImQkMCIsInMyJDAiLCJpMSQwIiwiZCQxIiwiczEkMCIsImlzb3J0dG8iLCJzcmNvZnMiLCJzb3J0dG8iLCJzaHVmZmxlIiwicmFuZCIsInNpZ25hbGluZ19uYW4iLCJpc19maW5pdGUiLCJpc19pbmZpbml0ZSIsImlzX25hbiIsImVwc2lsb24iLCJvZl9zdHJpbmdfb3B0IiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwiemVybyIsIm9uZSIsIm1pbnVzX29uZSIsIm1pbl9pbnQiLCJtYXhfaW50IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9sdCIsInVuc2lnbmVkX2RpdiIsInEiLCJ1bnNpZ25lZF9yZW0iLCJzaXplIiwiZHVtbXlfcG9zIiwiemVyb19wb3MiLCJlbmdpbmUiLCJ0YmwiLCJzdGF0ZSIsIm5ld19lbmdpbmUiLCJmcm9tX2Z1bmN0aW9uIiwicmVhZF9mdW4iLCJ3aXRoX3Bvc2l0aW9ucyIsImF1eF9idWZmZXIiLCJsZXhidWYiLCJyZWFkIiwibmV3bGVuIiwibmV3YnVmIiwiZnJvbV9jaGFubmVsIiwic2V0X3Bvc2l0aW9uIiwicG9zaXRpb24iLCJzZXRfZmlsZW5hbWUiLCJmbmFtZSIsImxleGVtZSIsInN1Yl9sZXhlbWUiLCJzdWJfbGV4ZW1lX29wdCIsInN1Yl9sZXhlbWVfY2hhciIsInN1Yl9sZXhlbWVfY2hhcl9vcHQiLCJsZXhlbWVfY2hhciIsImxleGVtZV9zdGFydCIsImxleGVtZV9lbmQiLCJsZXhlbWVfc3RhcnRfcCIsImxleGVtZV9lbmRfcCIsIm5ld19saW5lIiwibGNwIiwiZmx1c2hfaW5wdXQiLCJlbnYiLCJncm93X3N0YWNrcyIsIm9sZHNpemUiLCJuZXdzaXplIiwibmV3X3MiLCJuZXdfdiIsIm5ld19zdGFydCIsIm5ld19lbmQiLCJjbGVhcl9wYXJzZXIiLCJjdXJyZW50X2xvb2thaGVhZF9mdW4iLCJ5eXBhcnNlIiwidGFibGVzIiwic3RhcnQiLCJsZXhlciIsImluaXRfYXNwIiwiaW5pdF9zcCIsImluaXRfc3RhY2tiYXNlIiwiaW5pdF9zdGF0ZSIsImluaXRfY3Vycl9jaGFyIiwiaW5pdF9sdmFsIiwiaW5pdF9lcnJmbGFnIiwiY21kIiwiYXJnIiwiYXJnJDAiLCJleG4kMCIsImV4biIsImN1cnJfY2hhciIsInRvayIsInBlZWtfdmFsIiwic3ltYm9sX3N0YXJ0X3BvcyIsInN0IiwiZW4iLCJzeW1ib2xfZW5kX3BvcyIsInJoc19zdGFydF9wb3MiLCJyaHNfZW5kX3BvcyIsInN5bWJvbF9zdGFydCIsInN5bWJvbF9lbmQiLCJyaHNfc3RhcnQiLCJyaHNfZW5kIiwiaXNfY3VycmVudF9sb29rYWhlYWQiLCJwYXJzZV9lcnJvciIsImhlaWdodCIsImhsIiwiaCQwIiwiaHIiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJyciIsInJ2IiwicmwiLCJybHIiLCJybHYiLCJybGwiLCJhZGQiLCJzaW5nbGV0b24iLCJhZGRfbWluX2VsZW1lbnQiLCJhZGRfbWF4X2VsZW1lbnQiLCJyaCIsImxoIiwibWluX2VsdCIsIm1pbl9lbHRfb3B0IiwibWF4X2VsdCIsIm1heF9lbHRfb3B0IiwicmVtb3ZlX21pbl9lbHQiLCJyJDAiLCJwcmVzIiwicHJlcyQwIiwicmVtb3ZlIiwidW5pb24iLCJyMiQwIiwiaW50ZXIiLCJzcGxpdF9iaXMiLCJkaXNqb2ludCIsImNvbnNfZW51bSIsImUyJDIiLCJlMSQyIiwiZTIkMCIsImUxJDAiLCJlMiQxIiwiZTEkMSIsInN1YnNldCIsInB2IiwibGYiLCJsdCIsInJmIiwicnQiLCJjYXJkaW5hbCIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiZmluZF9maXJzdCIsInYwJDEiLCJ2MCQwIiwiZmluZF9maXJzdF9vcHQiLCJmaW5kX2xhc3QiLCJmaW5kX2xhc3Rfb3B0IiwidHJ5X2pvaW4iLCJ2JDEiLCJ4MCIsImwkMyIsImwkNCIsIngwJDAiLCJsJDUiLCJ4MCQxIiwibmwiLCJtaWQiLCJsJDIiLCJ4NCIsImFkZF9zZXEiLCJzZXFfb2ZfZW51bSIsInNub2NfZW51bSIsInJldl9zZXFfb2ZfZW51bSIsInRvX3Jldl9zZXEiLCJ0b19zZXFfZnJvbSIsImxvdyIsImxkIiwibHJkIiwicmQiLCJybGQiLCJkYXRhIiwiZDAkMSIsImQwIiwiZDAkMCIsIm1pbl9iaW5kaW5nIiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJyZW1vdmVfbWluX2JpbmRpbmciLCJ1cGRhdGUiLCJkYXRhJDAiLCJhZGRfdG9fbGlzdCIsIm0kMCIsImFkZF9taW5fYmluZGluZyIsImsiLCJhZGRfbWF4X2JpbmRpbmciLCJjb25jYXRfb3Jfam9pbiIsImQxIiwiZDIiLCJkMiQwIiwiZDEkMCIsImQyJDEiLCJkMSQxIiwicHZkIiwiZnZkIiwibTEiLCJtMiIsImJpbmRpbmdzX2F1eCIsImJpbmRpbmdzIiwiYnMiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJwcm90ZWN0IiwicmVsZWFzZSIsImFjcXVpcmUiLCJ0cnlfYWNxdWlyZSIsInJldCIsImdldF92YWx1ZSIsIm1ha2UkMCIsInJlbGVhc2UkMCIsImFjcXVpcmUkMCIsInRyeV9hY3F1aXJlJDAiLCJjcHVfcmVsYXgiLCJjcmVhdGVfZGxzIiwia2V5X2NvdW50ZXIiLCJwYXJlbnRfa2V5cyIsIm5ld19rZXkiLCJzcGxpdF9mcm9tX3BhcmVudCIsImluaXRfb3JwaGFuIiwiaWR4Iiwia2kiLCJtYXliZV9ncm93Iiwic3oiLCJuZXdfc3oiLCJuZXdfc3QiLCJvbGR2YWwiLCJuZXdfb2JqIiwic3QkMCIsImN1cnZhbCIsInVwZGF0ZWRfb2JqIiwiZ2V0X2lkIiwiZG9tYWluIiwic2VsZiIsImlzX21haW5fZG9tYWluIiwiZmlyc3RfZG9tYWluX3NwYXduZWQiLCJmaXJzdF9zcGF3bl9mdW5jdGlvbiIsImJlZm9yZV9maXJzdF9zcGF3biIsIm9sZF9mIiwibmV3X2YiLCJhdF9leGl0X2tleSIsInNwYXduIiwicGsiLCJ0ZXJtX3N5bmMiLCJib2R5IiwibG9vcCIsImV4IiwicmVjb21tZW5kZWRfZG9tYWluX2NvdW50Iiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwieCQxIiwieCQyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwieCQ3IiwieCQ4IiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJ4JDkiLCJ4JDEwIiwieCQxMSIsIngkMTIiLCJ4JDEzIiwieCQxNCIsIngkMTUiLCJ4JDE2Iiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJ4JDE3IiwicmVzdCQyNiIsIngkMTgiLCJyZXN0JDI3IiwieCQxOSIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiZW5kX2luZCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImYkMCIsImludmFsaWRfc3RhdGVfZGVzY3JpcHRpb24iLCJuZWdhdGl2ZV9sZW5ndGhfcmVxdWVzdGVkIiwibmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIiwibWlzc2luZ19lbGVtZW50IiwidW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IiwiY2hlY2tfc2FtZV9sZW5ndGgiLCJsZW5ndGhfYSIsImNoZWNrX3ZhbGlkX2xlbmd0aCIsImFyciIsImNhcGFjaXR5IiwidW5zYWZlX2dldCIsImdldF9sYXN0IiwicG9wX2xhc3QiLCJwb3BfbGFzdF9vcHQiLCJyZW1vdmVfbGFzdCIsImVuc3VyZV9jYXBhY2l0eSIsImNhcGFjaXR5X3JlcXVlc3QiLCJjdXJfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfYXJyIiwiZW5zdXJlX2V4dHJhX2NhcGFjaXR5IiwiZXh0cmFfY2FwYWNpdHlfcmVxdWVzdCIsImZpdF9jYXBhY2l0eSIsInNldF9jYXBhY2l0eSIsImFkZF9sYXN0X2lmX3Jvb20iLCJlbGVtIiwiYWRkX2xhc3QiLCJhcHBlbmRfbGlzdCIsImxpIiwibGkkMCIsImFwcGVuZF9pdGVyIiwiYXBwZW5kX3NlcSIsImFwcGVuZF9hcnJheV9pZl9yb29tIiwibGVuZ3RoX2IiLCJhcHBlbmRfYXJyYXkiLCJhcHBlbmRfaWZfcm9vbSIsImFycl9hIiwiYXJyX2IiLCJpdGVyJDAiLCJvZl9hcnJheSIsInRvX2FycmF5IiwidG9fc2VxX3JlZW50cmFudCIsInRvX3NlcV9yZXYiLCJ0b19zZXFfcmV2X3JlZW50cmFudCIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwib3B0IiwiZm9sbG93JDAiLCJrZXl3b3JkIiwiZm9sbG93JDIiLCJub19hcmciLCJnZXRfYXJnIiwiY29uc3VtZV9hcmciLCJ0cmVhdF9hY3Rpb24iLCJub19hcmckMCIsImdldF9hcmckMCIsImNvbnN1bWVfYXJnJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJyJDMiLCJhcmckNCIsInNwZWNzIiwidHJlYXRfYWN0aW9uJDAiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsIm1heF9hcmdfbGVuIiwiY3VyIiwia3dkIiwicmVwbGFjZV9sZWFkaW5nX3RhYiIsInNlZW4iLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwic3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvIiwiY29uc3RydWN0b3IiLCJmaWVsZHNfb3B0IiwiY29uc3RydWN0b3IkMCIsInRvX3N0cmluZ19kZWZhdWx0IiwiY2hhciQwIiwibGluZSIsImNoYXIkMSIsImxpbmUkMCIsImZpbGUkMCIsImNoYXIkMiIsImxpbmUkMSIsImZpbGUkMSIsInByaW50IiwiZmN0IiwiY2F0Y2gkMCIsInJhd19iYWNrdHJhY2VfZW50cmllcyIsImJ0IiwiY29udmVydF9yYXdfYmFja3RyYWNlIiwiZm9ybWF0X2JhY2t0cmFjZV9zbG90IiwiaW5mbyIsImlzX3JhaXNlIiwibGluZXMiLCJwcmludF9yYXdfYmFja3RyYWNlIiwib3V0Y2hhbiIsInJhd19iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJwcmludF9iYWNrdHJhY2UiLCJyYXdfYmFja3RyYWNlX3RvX3N0cmluZyIsImJhY2t0cmFjZV9zbG90X2lzX3JhaXNlIiwicGFyYW0iLCJiYWNrdHJhY2Vfc2xvdF9pc19pbmxpbmUiLCJiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiIsImJhY2t0cmFjZV9zbG90X2RlZm5hbWUiLCJiYWNrdHJhY2Vfc2xvdHMiLCJiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IiwiZW50cnkiLCJyYXdfYmFja3RyYWNlX2xlbmd0aCIsImdldF9iYWNrdHJhY2UiLCJyZWdpc3Rlcl9wcmludGVyIiwiZm4iLCJvbGRfcHJpbnRlcnMiLCJuZXdfcHJpbnRlcnMiLCJleG5fc2xvdCIsImV4bl9zbG90X2lkIiwiZXhuX3Nsb3RfbmFtZSIsImVycm9ycyIsImRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbiIsInN0YXR1cyIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwic2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIiwiZW1wdHlfYmFja3RyYWNlIiwiaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiIsImRlYnVnZ2VyX2luX3VzZSIsImV4biQxIiwicmF3X2JhY2t0cmFjZSQwIiwiY29uc3QkMCIsImNvbXBvc2UiLCJmbGlwIiwibmVnYXRlIiwiZmluYWxseSQwIiwid29yayIsImZpbmFsbHlfbm9fZXhuIiwid29ya19leG4kMCIsIndvcmtfZXhuIiwid29ya19idCIsImV2ZW50bG9nX3BhdXNlIiwiZXZlbnRsb2dfcmVzdW1lIiwicHJpbnRfc3RhdCIsImFsbG9jYXRlZF9ieXRlcyIsIm1hIiwicHJvIiwibWkiLCJkZWxldGVfYWxhcm0iLCJjcmVhdGVfYWxhcm0iLCJudWxsX3RyYWNrZXIiLCJzYW1wbGluZ19yYXRlIiwidHJhY2tlciIsImNhbGxzdGFja19zaXplIiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpZ2FycmF5IiwicmVhbGx5X2lucHV0X2JpZ2FycmF5IiwicmVhZF91cHRvIiwiZW5zdXJlIiwibmV3X2xlbiQwIiwibmV3X2xlbiQxIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImluaXRpYWxfc2l6ZSIsImluaXRpYWxfc2l6ZSQwIiwiaW5pdGlhbF9zaXplJDEiLCJucmVhZCIsImJ1ZiQyIiwiYnVmJDAiLCJidWYkMSIsInJlbSIsImlucHV0X2xpbmVzIiwiZm9sZF9saW5lcyIsInNldF9iaW5hcnlfbW9kZSIsImZsdXNoIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfYnl0ZSIsIm91dHB1dF9iaWdhcnJheSIsImhleF9vZl9zdHJpbmciLCJjaGFyX2hleCIsInN0cmluZ19vZl9oZXgiLCJkaWdpdCIsImhhc2hfbGVuZ3RoIiwic3RyaW5nIiwiYnl0ZXMiLCJzdWJzdHJpbmciLCJzdWJieXRlcyIsImNoYW5uZWwiLCJ0b3JlYWQiLCJidWZfc2l6ZSIsImN0eCIsInRvcmVhZCQwIiwidG9yZWFkJDEiLCJmaWxlbmFtZSIsImRpZ2VzdCIsInRvX2hleCIsIm9mX2hleCIsImtpbmRfc2l6ZV9pbl9ieXRlcyIsImNsb29wIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJiYSIsImNyZWF0ZSQxIiwiZGltMSIsImRpbTIiLCJzaXplX2luX2J5dGVzJDIiLCJzbGljZV9sZWZ0Iiwic2xpY2VfcmlnaHQiLCJpbml0JDEiLCJvZl9hcnJheSQwIiwiY3JlYXRlJDIiLCJkaW0zIiwic2l6ZV9pbl9ieXRlcyQzIiwic2xpY2VfbGVmdF8xIiwic2xpY2VfcmlnaHRfMSIsInNsaWNlX2xlZnRfMiIsInNsaWNlX3JpZ2h0XzIiLCJpbml0JDIiLCJvZl9hcnJheSQxIiwiYXJyYXkwX29mX2dlbmFycmF5IiwiYXJyYXkxX29mX2dlbmFycmF5IiwiYXJyYXkyX29mX2dlbmFycmF5IiwiYXJyYXkzX29mX2dlbmFycmF5IiwicmVzaGFwZV8wIiwicmVzaGFwZV8xIiwicmVzaGFwZV8yIiwicmVzaGFwZV8zIiwic2VyaWFsaXphdGlvbl9wcmVmaXgiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiIsInRvX2JpbmFyeV9zdHJpbmciLCJvZl9iaW5hcnlfc3RyaW5nIiwicmVpbml0IiwibWFrZV9zZWxmX2luaXQiLCJtYXhfaW50MzEiLCJtYXhfaW50MzIiLCJiaXRzIiwiaW50X2F1eCIsImludCQwIiwiYm91bmQiLCJmdWxsX2ludCIsImludF9pbl9yYW5nZV9hdXgiLCJuYml0cyIsInNwYW4iLCJpbnRfaW5fcmFuZ2UiLCJiaXRzMzIiLCJpbnQzMmF1eCIsImludDMyIiwiaW50MzJfaW5fcmFuZ2UiLCJiaXRzNjQiLCJpbnQ2NGF1eCIsImludDY0IiwiaW50NjRfaW5fcmFuZ2UiLCJuYXRpdmViaXRzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X2luX3JhbmdlIiwiZmxvYXQkMCIsImJvb2wiLCJta19kZWZhdWx0IiwicmFuZG9tX2tleSIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludF9pbl9yYW5nZSQwIiwiaW50MzIkMCIsImludDMyX2luX3JhbmdlJDAiLCJuYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9pbl9yYW5nZSQwIiwiaW50NjQkMCIsImludDY0X2luX3JhbmdlJDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJiaXRzMzIkMCIsImJpdHM2NCQwIiwibmF0aXZlYml0cyQwIiwiZnVsbF9pbml0Iiwic2VsZl9pbml0Iiwic3BsaXQkMCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZ19rZXkiLCJwb3dlcl8yX2Fib3ZlIiwicmFuZG9tIiwiY29weV9idWNrZXRsaXN0Iiwia2V5JDAiLCJuZXh0JDAiLCJpbnNlcnRfYWxsX2J1Y2tldHMiLCJpbmRleGZ1biIsImlucGxhY2UiLCJvZGF0YSIsIm5kYXRhIiwibnNpemUiLCJuZGF0YV90YWlsIiwibmlkeCIsIm1hdGNoJDAiLCJvc2l6ZSIsIm9sZF90cmF2IiwiZmlsdGVyX21hcF9pbnBsYWNlIiwiYnVja2V0X2xlbmd0aCIsInN0YXRzIiwibWJsIiwiaGlzdG8iLCJ0YmxfZGF0YSIsImJ1Y2siLCJidWNrJDAiLCJidWNrJDEiLCJ0b19zZXFfa2V5cyIsInRvX3NlcV92YWx1ZXMiLCJrZXlfaW5kZXgiLCJidWNrZXQiLCJrMSIsIm5leHQxIiwiazIiLCJuZXh0MiIsImszIiwiZDMiLCJuZXh0MyIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsImhhc2hfcGFyYW0iLCJyZWJ1aWxkIiwiZ2V0X2NvcHkiLCJhciIsImVtcHR5YnVja2V0IiwiZ2V0X2luZGV4Iiwic3okMCIsInN6JDEiLCJjb3VudF9idWNrZXQiLCJjb3VudCIsImFkZF9hdXgiLCJzZXR0ZXIiLCJidWNrZXQkMCIsImhhc2hlcyIsIm5ld3N6IiwibmV3YnVja2V0JDAiLCJuZXdoYXNoZXMiLCJoYnVja2V0IiwicHJldl9sZW4iLCJsaXZlIiwiaiQyIiwibmV3YnVja2V0Iiwib2xkbGVuIiwibmV3dCIsIm9iIiwib2kiLCJvaCIsIm9pJDAiLCJuaSIsImZpbmRfYXV4IiwiZm91bmQiLCJub3Rmb3VuZCIsImxlbnMiLCJ0b3RsZW4iLCJ1bmtub3duIiwicHBfZW5xdWV1ZSIsInRva2VuIiwicHBfaW5maW5pdHkiLCJwcF9vdXRwdXRfc3RyaW5nIiwicHBfb3V0cHV0X25ld2xpbmUiLCJmb3JtYXRfcHBfdGV4dCIsInRleHQiLCJmb3JtYXRfc3RyaW5nIiwiYnJlYWtfbmV3X2xpbmUiLCJyZWFsX2luZGVudCIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfc2V0X3ByaW50X3RhZ3MiLCJwcF9zZXRfbWFya190YWdzIiwicHBfZ2V0X3ByaW50X3RhZ3MiLCJwcF9nZXRfbWFya190YWdzIiwicHBfc2V0X3RhZ3MiLCJwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb24iLCJwY3QiLCJwb3QiLCJtY3QiLCJtb3QiLCJwcF9yaW5pdCIsInBwX2ZsdXNoX3F1ZXVlIiwiZW5kX3dpdGhfbmV3bGluZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfcHJpbnRfbm90aGluZyIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJzdGRidWZfa2V5Iiwic3RyX2Zvcm1hdHRlcl9rZXkiLCJidWZmZXJlZF9vdXRfc3RyaW5nIiwiYnVmZmVyZWRfb3V0X2ZsdXNoIiwic3RkX2J1Zl9rZXkiLCJlcnJfYnVmX2tleSIsInN0ZF9mb3JtYXR0ZXJfa2V5IiwiZXJyX2Zvcm1hdHRlcl9rZXkiLCJnZXRfc3RkX2Zvcm1hdHRlciIsImdldF9lcnJfZm9ybWF0dGVyIiwiZ2V0X3N0cl9mb3JtYXR0ZXIiLCJnZXRfc3RkYnVmIiwiZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciIsImZsdXNoX3N0cl9mb3JtYXR0ZXIiLCJtYWtlX3N5bmNocm9uaXplZF9mb3JtYXR0ZXIiLCJvdXRwdXQkMCIsImZsdXNoJDAiLCJzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF8iLCJtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwic29iIiwiZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJmbHVzaF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiaXRlbXMiLCJhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0iLCJpdGVtIiwiZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9iIiwib3Blbl9oYm94Iiwib3Blbl92Ym94Iiwib3Blbl9odmJveCIsIm9wZW5faG92Ym94Iiwib3Blbl9ib3giLCJjbG9zZV9ib3giLCJvcGVuX3N0YWciLCJjbG9zZV9zdGFnIiwicHJpbnRfYXMiLCJwcmludF9ib29sIiwicHJpbnRfYnJlYWsiLCJwcmludF9jdXQiLCJwcmludF9zcGFjZSIsImZvcmNlX25ld2xpbmUiLCJwcmludF9mbHVzaCIsInByaW50X2lmX25ld2xpbmUiLCJvcGVuX3Rib3giLCJjbG9zZV90Ym94IiwicHJpbnRfdGJyZWFrIiwic2V0X3RhYiIsInByaW50X3RhYiIsInNldF9tYXJnaW4iLCJnZXRfbWFyZ2luIiwic2V0X21heF9pbmRlbnQiLCJnZXRfbWF4X2luZGVudCIsInNldF9nZW9tZXRyeSIsInNhZmVfc2V0X2dlb21ldHJ5IiwiZ2V0X2dlb21ldHJ5IiwidXBkYXRlX2dlb21ldHJ5Iiwic2V0X21heF9ib3hlcyIsImdldF9tYXhfYm94ZXMiLCJvdmVyX21heF9ib3hlcyIsInNldF9lbGxpcHNpc190ZXh0IiwiZ2V0X2VsbGlwc2lzX3RleHQiLCJzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIiwic2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwiZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIiwic2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJzZXRfcHJpbnRfdGFncyIsImdldF9wcmludF90YWdzIiwic2V0X21hcmtfdGFncyIsImdldF9tYXJrX3RhZ3MiLCJzZXRfdGFncyIsInBwX3ByaW50X2l0ZXIiLCJwcF92IiwicHBfc2VwIiwiaXNfZmlyc3QiLCJwcF92JDAiLCJwcF9wcmludF9saXN0IiwicHBfcHJpbnRfYXJyYXkiLCJwcF9wcmludF9zZXEiLCJwcF9wcmludF90ZXh0IiwicHBfcHJpbnRfb3B0aW9uIiwicHBfcHJpbnRfcmVzdWx0IiwicHBfcHJpbnRfZWl0aGVyIiwiY29tcHV0ZV90YWciLCJ0YWdfYWNjIiwib3V0cHV0X2Zvcm1hdHRpbmdfbGl0IiwiYnR5IiwicCQ2IiwicCQ3Iiwic2l6ZSQxIiwicCQ4Iiwia2RwcmludGYiLCJkcHJpbnRmIiwia2FzcHJpbnRmIiwiYXNwcmludGYiLCJmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzIiwiZnMiLCJmcyQwIiwibnVsbF9jaGFyIiwibmV4dF9jaGFyIiwiaWIiLCJwZWVrX2NoYXIiLCJjaGVja2VkX3BlZWtfY2hhciIsImVuZF9vZl9pbnB1dCIsImJlZ2lubmluZ19vZl9pbnB1dCIsIm5hbWVfb2ZfaW5wdXQiLCJjaGFyX2NvdW50IiwiaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIiLCJ0b2tlbl9zdHJpbmciLCJ0b2tlbl9idWZmZXIiLCJpZ25vcmVfY2hhciIsInN0b3JlX2NoYXIiLCJkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplIiwiaW5hbWUiLCJzY2FuX2Nsb3NlX2F0X2VuZCIsInNjYW5fcmFpc2VfYXRfZW5kIiwiZnJvbV9pYyIsInNjYW5fY2xvc2VfaWMiLCJlb2YiLCJvcGVuX2luX2ZpbGUiLCJjbG9zZV9pbiIsImljJDAiLCJiYWRfaW5wdXQiLCJiYWRfaW5wdXRfZXNjYXBlIiwiYmFkX3Rva2VuX2xlbmd0aCIsIm1lc3NhZ2UiLCJiYWRfaGV4X2Zsb2F0IiwiY2hhcmFjdGVyX21pc21hdGNoIiwiY2kiLCJjaGVja19jaGFyIiwiY2hlY2tfdGhpc19jaGFyIiwidG9rZW5fY2hhciIsInRva2VuX2Jvb2wiLCJpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciIsInRva2VuX2ludF9saXRlcmFsIiwiY29udiIsInRva2VuX2Zsb2F0Iiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIiLCJzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyIsInNjYW5fZGlnaXRfcGx1cyIsImJhc2lzIiwiZGlnaXRwIiwid2lkdGgkMyIsImlzX2JpbmFyeV9kaWdpdCIsImlzX29jdGFsX2RpZ2l0IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwibG93ZXJjYXNlIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsInNjYW5fYmFja3NsYXNoX2NoYXIiLCJjMCIsImdldF9kaWdpdCQwIiwiYzEkMCIsImMyJDAiLCJnZXRfZGlnaXQiLCJzY2FuX2NhbWxfc3RyaW5nIiwiZmluZF9zdG9wJDAiLCJza2lwX3NwYWNlcyIsImZpbmRfc3RvcCIsInNjYW5fY2hhcnNfaW5fY2hhcl9zZXQiLCJzY2FuX2luZGljIiwic2Nhbl9jaGFycyIsInNjYW5mX2JhZF9pbnB1dCIsIndpZHRoX29mX3BhZF9vcHQiLCJzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IiwiZm10aW5nIiwidGFrZV9mb3JtYXRfcmVhZGVycyQwIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyQwIiwicmVhZGVyIiwibmV3X2siLCJyZWFkZXJzX3Jlc3QiLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzIiwidGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyIsIm1ha2Vfc2NhbmYiLCJyZWFkZXJzIiwic2NhbiQwIiwic3RyX3Jlc3QiLCJwYWRfcHJlY19zY2FuZiIsInNjYW4kMSIsInNjYW4kMiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mX2dlbiIsImVmIiwiYXJncyQxIiwiZXhjJDAiLCJleGMiLCJhcmdzJDAiLCJrc2NhbmYiLCJrc2NhbmZfb3B0IiwiYnNjYW5mIiwiYnNjYW5mX29wdCIsImtzc2NhbmYiLCJzc2NhbmYiLCJzc2NhbmZfb3B0Iiwic2NhbmYiLCJzY2FuZl9vcHQiLCJic2NhbmZfZm9ybWF0IiwiZm9ybWF0Iiwic3NjYW5mX2Zvcm1hdCIsImZvcm1hdF9mcm9tX3N0cmluZyIsInVuZXNjYXBlZCIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJpbml0aWFsX29iamVjdF9zaXplIiwiZml0X3NpemUiLCJuZXdfdGFibGUiLCJwdWJfbGFiZWxzIiwibWV0aG9kcyIsImFycmF5IiwibmV3X3NpemUiLCJvbGRfc2l6ZSIsIm5ld19idWNrIiwibWV0aG9kX2NvdW50IiwiaW5zdF92YXJfY291bnQiLCJuZXdfbWV0aG9kIiwidGFibGUiLCJnZXRfbWV0aG9kX2xhYmVsIiwibGFiZWwiLCJnZXRfbWV0aG9kX2xhYmVscyIsIm5hbWVzIiwic2V0X21ldGhvZCIsImVsZW1lbnQiLCJnZXRfbWV0aG9kIiwibmFycm93IiwidmFycyIsInZpcnRfbWV0aHMiLCJjb25jcl9tZXRocyIsInZhcnMkMCIsInZpcnRfbWV0aHMkMCIsImNvbmNyX21ldGhzJDAiLCJ2aXJ0X21ldGhfbGFicyIsImNvbmNyX21ldGhfbGFicyIsImxhYiIsInR2YXJzIiwiYnlfbmFtZSIsImJ5X2xhYmVsIiwibWV0IiwiaG0iLCJ3aWRlbiIsInNhdmVkX3ZhcnMiLCJzYXZlZF9oaWRkZW5fbWV0aHMiLCJuZXdfdmFyaWFibGUiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJvYmoiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJnZXRfZGF0YSIsImJ1aWxkX3BhdGgiLCJrZXlzIiwibG9va3VwX3RhYmxlcyIsInJvb3QiLCJyb290X2RhdGEiLCJ0YWJsZXMkMCIsInRhYmxlcyQxIiwidGFibGVzX2RhdGEiLCJuZXdfY2FjaGUiLCJzZXRfbWV0aG9kcyIsImNsbyIsIngkMjAiLCJjbG8kMCIsIm4kMzgiLCJlJDEwIiwibiQzNyIsIm4kMzYiLCJuJDIiLCJuJDM1IiwiZiQyMCIsIm4kMyIsImYkMTkiLCJuJDM0IiwibiQ0IiwiZiQxOCIsImUkOSIsIm4kMzMiLCJuJDUiLCJmJDE3IiwibiQzMiIsImYkMTYiLCJ5JDAiLCJuJDYiLCJmJDE1IiwibiQzMSIsIm4kNyIsImYkMTQiLCJlJDgiLCJuJDMwIiwibiQ4IiwiZiQxMyIsIm4kMjkiLCJuJDkiLCJmJDEyIiwibiQyOCIsImYkOCIsImUkMiIsIm4kMTAiLCJmJDExIiwiZSQ3IiwibiQyNyIsImYkOSIsIm4kMTEiLCJmJDEwIiwibiQyNiIsIm4kMTIiLCJuJDI1IiwibiQxMyIsIm4kMjQiLCJtJDEyIiwibiQxNCIsImUkMyIsIm4kMjMiLCJlJDYiLCJtJDExIiwibiQxNSIsIm0kMSIsIm4kMjIiLCJtJDEwIiwibSQyIiwibSQ5IiwibSQzIiwibiQxNiIsIm0kOCIsIm4kMjEiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ3IiwiZSQ1IiwibiQyMCIsIm0kNSIsIm4kMTgiLCJtJDYiLCJuJDE5IiwiaW5pdF9tb2RfYmxvY2siLCJjb21wcyQwIiwibW9kdSIsInNoYXBlIiwiZm4kMCIsImNvbXBzIiwiaW5pdF9tb2QiLCJ1cGRhdGVfbW9kX2Jsb2NrIiwiY2wiLCJ1cGRhdGVfbW9kIiwicHJuZyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJmaW5kX2luX2J1Y2tldCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsInNldF9kYXRhIiwiZXBoIiwicXVlcnkiLCJzZXRfa2V5X2RhdGEiLCJ0ZXN0X2tleSIsInQkMCIsImdldF9rZXkxIiwic2V0X2tleTEiLCJnZXRfa2V5MiIsInNldF9rZXkyIiwiZ2V0X2RhdGEkMCIsInNldF9kYXRhJDAiLCJtYWtlJDEiLCJrZXkxIiwia2V5MiIsInF1ZXJ5JDAiLCJrMiQwIiwiazEkMCIsImVxdWFsJDAiLCJzZWVkZWRfaGFzaCQwIiwibWFrZSQyIiwiYWRkJDAiLCJ0ZXN0X2tleXMiLCJyZW1vdmUkMCIsImZpbmQkMCIsImxlbmd0aCQwIiwiY2xlYXIkMCIsImxlbmd0aCQxIiwiZ2V0X2tleSQwIiwic2V0X2tleSQwIiwiZ2V0X2RhdGEkMSIsInNldF9kYXRhJDEiLCJtYWtlJDMiLCJxdWVyeSQxIiwibWFrZSQ0IiwiYWRkJDEiLCJ0ZXN0X2tleXMkMCIsInJlbW92ZSQxIiwiZmluZCQxIiwibGVuZ3RoJDIiLCJjbGVhciQxIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicmFuZG9tX3N0YXRlIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwicGVybXMiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93IiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwiY29lcmNlIiwidGFnIiwicGFyYW0iLCJrZXkiLCJ2YWx1ZSIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF90X3NleHBfZ3JhbW1hciIsImVtcHR5X3NleHBfZ3JhbW1hciIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ3MiLCJncmFtbWFyIiwidGFncyIsInNleHBfZ3JhbW1hcl93aXRoX3RhZ19saXN0IiwicmVmX3NleHBfZ3JhbW1hciIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJoYW5kbGVyIiwiYXJnIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJhYnNlbnQiLCJjb21iaW5lIiwicGFyc2VfdmFsdWVfbWFsZm9ybWVkIiwibWFsZm9ybWVkIiwic3RhdGUiLCJwb3MiLCJwYXJzZV92YWx1ZXMiLCJtYWxmb3JtZWQkMCIsIm90aGVyIiwiY29udiIsImtpbmQiLCJzZXhwJDUiLCJkZWZhdWx0JDAiLCJzZXhwJDQiLCJzZXhwJDAiLCJzZXhwJDEiLCJzZXhwJDIiLCJzZXhwJDMiLCJwYXJzZV9zcGluZV9tYWxmb3JtZWQiLCJleHRyYSIsInNlZW4iLCJzZXhwcyIsInBhcnNlX3NwaW5lX3Nsb3ciLCJzZXhwcyQwIiwic2V4cHMkMiIsInNleHBzJDEiLCJwYXJzZV9yZWNvcmRfc2xvdyIsInVuc2VlbiIsInBhcnNlX3NwaW5lX2Zhc3QiLCJvdGhlcnMiLCJhcmdzIiwiYXRvbSIsInJlY29yZF9vZl9zZXhwcyIsImNhbGxlciIsImNvbnRleHQkMCIsImluZGV4X29mX2ZpZWxkIiwiYWxsb3dfZXh0cmFfZmllbGRzIiwiY3JlYXRlIiwiYWxsb3dfZXh0cmFfZmllbGRzJDAiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwibWF5YmVfY29udGV4dCIsImNvbnRleHQiLCJyZWNvcmRfb2Zfc2V4cCIsImdsb2JhbGl6ZV9ib29sIiwiYiIsImdsb2JhbGl6ZV9jaGFyIiwiYyIsImdsb2JhbGl6ZV91bml0IiwidSIsImdsb2JhbGl6ZV9hcnJheSIsImEiLCJnbG9iYWxpemVfbGlzdCIsImYiLCJ4cyIsIngiLCJnbG9iYWxpemVfb3B0aW9uIiwiZ2xvYmFsaXplX3Jlc3VsdCIsImdsb2JhbGl6ZV9hIiwiZ2xvYmFsaXplX2IiLCJ0IiwiZ2xvYmFsaXplX3JlZiIsInIiLCJkZXNjZW5kaW5nIiwieSIsIm1heCIsIm1pbiIsIm1heF9pbnQiLCJtaW5faW50IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwiY2hhcl9vZl9pbnQiLCJzdHJpbmdfb2ZfYm9vbCIsImJvb2xfb2Zfc3RyaW5nX29wdCIsImJvb2xfb2Zfc3RyaW5nIiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc3RyaW5nX29wdCIsInN0ZGluIiwic3Rkb3V0Iiwic3RkZXJyIiwicHJpbnRfY2hhciIsInByaW50X3N0cmluZyIsInByaW50X2J5dGVzIiwicHJpbnRfaW50IiwicHJpbnRfZmxvYXQiLCJwcmludF9lbmRsaW5lIiwicHJpbnRfbmV3bGluZSIsInByZXJyX2NoYXIiLCJwcmVycl9zdHJpbmciLCJwcmVycl9ieXRlcyIsInByZXJyX2ludCIsInByZXJyX2Zsb2F0IiwicHJlcnJfZW5kbGluZSIsInByZXJyX25ld2xpbmUiLCJyZWFkX2xpbmUiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2ludCIsInJlYWRfZmxvYXRfb3B0IiwicmVhZF9mbG9hdCIsIm9wZW5fb3V0Iiwib3Blbl9vdXRfYmluIiwib3Blbl9vdXRfZ2VuIiwiZmx1c2giLCJmbHVzaF9hbGwiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXQiLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X2J5dGUiLCJvdXRwdXRfYmluYXJ5X2ludCIsIm91dHB1dF92YWx1ZSIsInNlZWtfb3V0IiwicG9zX291dCIsIm91dF9jaGFubmVsX2xlbmd0aCIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsInNldF9iaW5hcnlfbW9kZV9vdXQiLCJvcGVuX2luIiwib3Blbl9pbl9iaW4iLCJvcGVuX2luX2dlbiIsImlucHV0X2NoYXIiLCJpbnB1dF9saW5lIiwiaW5wdXQiLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfc3RyaW5nIiwiaW5wdXRfYnl0ZSIsImlucHV0X2JpbmFyeV9pbnQiLCJpbnB1dF92YWx1ZSIsInNlZWtfaW4iLCJwb3NfaW4iLCJpbl9jaGFubmVsX2xlbmd0aCIsImNsb3NlX2luIiwiY2xvc2VfaW5fbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfaW4iLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sIiwiZXhpdCIsImF0X2V4aXQiLCJ2YWxpZF9mbG9hdF9sZXhlbSIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJkb19hdF9leGl0IiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJib29sX3RvX2ludCIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJzeW1ib2wkNCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJzeW1ib2wkMTEiLCJhc2NlbmRpbmciLCJtYXgkMCIsIm1pbiQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJtYXgkMSIsIm1pbiQxIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2Iiwic3ltYm9sJDE3IiwiYXNjZW5kaW5nJDEiLCJkZXNjZW5kaW5nJDEiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgkMiIsIm1pbiQyIiwiYXNjZW5kaW5nJDIiLCJkZXNjZW5kaW5nJDIiLCJtYXgkMyIsIm1pbiQzIiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwiYXNjZW5kaW5nJDMiLCJkZXNjZW5kaW5nJDMiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwibWF4JDQiLCJtaW4kNCIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsInN5bWJvbCQyOSIsImFzY2VuZGluZyQ0IiwiZGVzY2VuZGluZyQ0IiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsIm1heCQ1IiwibWluJDUiLCJzeW1ib2wkMzAiLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJhc2NlbmRpbmckNSIsImRlc2NlbmRpbmckNSIsImNvbXBhcmUkMiIsImVxdWFsJDIiLCJtYXgkNiIsIm1pbiQ2IiwiaSIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsImFzY2VuZGluZyQ2IiwiZGVzY2VuZGluZyQ2IiwiY29tcGFyZSQzIiwiZXF1YWwkMyIsIm1heCQ3IiwibWluJDciLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJzeW1ib2wkNDciLCJhc2NlbmRpbmckNyIsImRlc2NlbmRpbmckNyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJtYXgkOCIsIm1pbiQ4Iiwic3ltYm9sJDQ4Iiwic3ltYm9sJDQ5Iiwic3ltYm9sJDUwIiwic3ltYm9sJDUxIiwic3ltYm9sJDUyIiwic3ltYm9sJDUzIiwiYXNjZW5kaW5nJDgiLCJkZXNjZW5kaW5nJDgiLCJjb21wYXJlJDUiLCJlcXVhbCQ1IiwibWF4JDkiLCJtaW4kOSIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsImFzY2VuZGluZyQ5IiwiZGVzY2VuZGluZyQ5IiwiY29tcGFyZSQ2IiwiZXF1YWwkNiIsIm1heCQxMCIsIm1pbiQxMCIsInN5bWJvbCQ2MCIsInN5bWJvbF9jb25jYXQkMCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImFzciIsImxhbmQiLCJsbm90JDAiLCJsb3IiLCJsc2wiLCJsc3IiLCJseG9yIiwibW9kIiwiYWJzJDAiLCJmYWlsd2l0aCQwIiwiZnN0IiwiaW52YWxpZF9hcmckMCIsInNuZCIsInBoeXNfZXF1YWwiLCJmbG9hdF9vZl9zdHJpbmciLCJhbV90ZXN0aW5nIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwib2Zfc3RyaW5nX29wdCIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJzdWNjIiwicHJlZCIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsInJlcyIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwiZm9sZF9yaWdodCIsIml0ZXIiLCJpdGVyaSIsIm1hcCIsIm1hcGkiLCJzdGFibGVfc29ydCIsInN3YXAiLCJqIiwiZWx0X2kiLCJlbHRfaiIsImVzY2FwZWQiLCJsb3dlcmNhc2UiLCJ0b19pbnQiLCJ1bnNhZmVfb2ZfaW50IiwidXBwZXJjYXNlIiwiaW50X2lzX29rIiwib2ZfaW50Iiwib2ZfaW50X2V4biIsInQxIiwidDIiLCJoZF9leG4iLCJsZW5ndGgiLCJyZXZfYXBwZW5kIiwidGxfZXhuIiwidW56aXAiLCJleGlzdHMiLCJ0JDAiLCJleGlzdHMyX29rIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwibDIkMSIsImEyIiwibDEkMSIsImExIiwiaW5pdCQwIiwibCIsImluaXQkMSIsImZvbGQyX29rIiwiZm9yX2FsbCIsImZvcl9hbGwyX29rIiwiaXRlcjJfb2siLCJub250YWlsX21hcCIsIm5vbnRhaWxfbWFwaSIsInBhcnRpdGlvbiIsInJldl9tYXAiLCJsJDAiLCJhY2N1IiwicmV2X21hcDJfb2siLCJhY2N1JDAiLCJzb3J0IiwicmV2IiwicmVzdCIsImZvbGRfcmlnaHQyX29rIiwiaGFzaF9mb2xkX3VuaXQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mb2xkX3N0cmluZyIsImFzX2ludCIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9mb2xkX2Jvb2wiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiaGFzaF9mb2xkX29wdGlvbiIsImhhc2hfZm9sZF9lbGVtIiwiaGFzaF9mb2xkX2xpc3QiLCJzJDEiLCJsaXN0JDEiLCJzJDIiLCJsaXN0IiwibGlzdCQwIiwicyQwIiwiaGFzaF9mb2xkX2xhenlfdCIsImhhc2hfZm9sZF9yZWZfZnJvemVuIiwiaGFzaF9mb2xkX2FycmF5X2Zyb3plbiIsImFycmF5IiwiZSIsImkkMCIsImhhc2hfbmF0aXZlaW50IiwiaGFzaF9pbnQ2NCIsImhhc2hfaW50MzIiLCJoYXNoX2NoYXIiLCJoYXNoX2ludCIsImhhc2hfYm9vbCIsImhhc2hfc3RyaW5nIiwiaGFzaF9mbG9hdCIsImhhc2hfdW5pdCIsInNlZWQiLCJvZl9mb2xkIiwiaGFzaF9mb2xkX3QiLCJydW4iLCJmb2xkZXIiLCJjb21wYXJlX3N0YXRlIiwic3RhdGVfdG9fc3RyaW5nIiwic3RhdGUiLCJ0JDEiLCJ0JDIiLCJ0JDMiLCJ0JDQiLCJ0JDUiLCJjb21wYXJlX2Fic3RyYWN0IiwidHlwZV9uYW1lIiwiZXF1YWxfYWJzdHJhY3QiLCJjb21wYXJlX2Jvb2wiLCJjb21wYXJlX2NoYXIiLCJjb21wYXJlX2Zsb2F0IiwiY29tcGFyZV9pbnQiLCJjb21wYXJlX2ludDMyIiwiY29tcGFyZV9pbnQ2NCIsImNvbXBhcmVfbmF0aXZlaW50IiwiY29tcGFyZV9zdHJpbmciLCJjb21wYXJlX3VuaXQiLCJjb21wYXJlX2FycmF5IiwiY29tcGFyZV9lbHQiLCJsZW5fYSIsImxlbl9iIiwicmV0IiwiY29tcGFyZV9saXN0IiwiYSQwIiwiYiQwIiwieXMiLCJjb21wYXJlX29wdGlvbiIsImNvbXBhcmVfcmVmIiwiZXF1YWxfYm9vbCIsImVxdWFsX2NoYXIiLCJlcXVhbF9pbnQiLCJlcXVhbF9pbnQzMiIsImVxdWFsX2ludDY0IiwiZXF1YWxfbmF0aXZlaW50IiwiZXF1YWxfc3RyaW5nIiwiZXF1YWxfdW5pdCIsImVxdWFsX2Zsb2F0IiwiZXF1YWxfYXJyYXkiLCJlcXVhbF9lbHQiLCJlcXVhbF9saXN0IiwiZXF1YWxfb3B0aW9uIiwiZXF1YWxfcmVmIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2IiwiaHN2IiwiYXJnIiwiYTAiLCJoc3YkMCIsImEwJDAiLCJoc3YkMSIsImhhc2giLCJmdW5jIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJyYWlzZV93aXRob3V0X2JhY2t0cmFjZSIsImluaXRpYWxpemVfbW9kdWxlIiwiY2xlYXJfYmFja3RyYWNlIiwid2l0aF9yZXR1cm4iLCJpc19hbGl2ZSIsInJldHVybiQwIiwid2l0aF9yZXR1cm5fb3B0aW9uIiwicHJlcGVuZCIsInBhcmFtIiwiY29uc3QkMCIsIm5vbiIsImZvcmV2ZXIiLCJlJDAiLCJjb21wb3NlIiwiZyIsImZsaXAiLCJhcHBseV9uX3RpbWVzIiwibiIsIm4kMCIsIngkMCIsIngkMSIsIm4kMSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwidG9fbW9uYWQiLCJvZl9tb25hZCIsImRlcml2ZWRfbWFwIiwibWFwMiIsInRhIiwidGIiLCJtYXAzIiwidGMiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwidGYiLCJmYWIiLCJtYXAkMCIsImFwcGx5IiwibWYiLCJteCIsInR4IiwiY3VzdG9tX21hcCIsInJldHVybiQxIiwiYXBwbHkkMCIsIm1ha2UiLCJjb21wYXJhdG9yIiwiZXJyb3Jfc291cmNlXzAxMSIsImNtcF9mIiwiY21wX3MiLCJoYXNoX2ZvbGRfZiIsImhhc2hfZm9sZF9zIiwidF9vZl9zZXhwIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsInNleHBfMDEzIiwidGFnXzAxNCIsInNleHBfYXJnc18wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJvZl9mXzAyNSIsIm9mX3NfMDI2IiwiYXJnMF8wMjciLCJyZXMwXzAyOCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJmX3NleHBfZ3JhbW1hciIsInNfc2V4cF9ncmFtbWFyIiwib3BhcXVlX2lkZW50aXR5IiwibmFtZSIsImdldCIsImZzZXQiLCJzZXR0ZXIiLCJ1cGRhdGVyIiwiZmllbGQiLCJzeW1ib2xfY29uY2F0IiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInVuc2FmZV9ibGl0Iiwic3BsaXRfb25fY2hhciIsInNlcCIsImhzdiQyIiwicG9zX2NudW1fMDEwIiwicG9zX2JvbF8wMDgiLCJwb3NfbG51bV8wMDYiLCJwb3NfZm5hbWVfMDA0IiwiYXJnXzAxMSIsImJuZHNfMDAzIiwiYXJnXzAwOSIsImJuZHNfMDAzJDAiLCJhcmdfMDA3IiwiYm5kc18wMDMkMSIsImFyZ18wMDUiLCJibmRzXzAwMyQyIiwiaGFzaF9mb2xkX3QkMCIsImhhc2gkMCIsIm1ha2VfbG9jYXRpb25fc3RyaW5nIiwicG9zX2ZuYW1lIiwicG9zX2xudW0iLCJwb3NfY251bSIsInBvc19ib2wiLCJpc19lbXB0eSIsInBhcnRpdGlvbl9tYXAiLCJmc3QkMCIsInkkMCIsInNuZCQwIiwiZXJyb3Jfc291cmNlXzAwNSIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwNyIsInRhZ18wMDgiLCJzZXhwX2FyZ3NfMDA5IiwiYXJnMF8wMTAiLCJyZXMwXzAxMSIsInNleHBfYXJnc18wMTQiLCJhcmcwXzAxNSIsInJlczBfMDE2Iiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJhX3NleHBfZ3JhbW1hciIsImJfc2V4cF9ncmFtbWFyIiwiY21wX2EiLCJjbXBfYiIsImFfMDI3IiwiYl8wMjgiLCJhXzAyOSIsImJfMDMwIiwiYV8wMzEiLCJiXzAzMiIsImFfMDMzIiwiYl8wMzQiLCJhXzAzNSIsImJfMDM2IiwiYV8wMzciLCJiXzAzOCIsImhhc2hfZm9sZF9hIiwiaGFzaF9mb2xkX2IiLCJnbG9iYWxpemUiLCJjaGVja19vayIsImNoZWNrX2Vycm9yIiwib2siLCJlcnJvciIsImZhaWwiLCJmYWlsZiIsIm1hcF9lcnJvciIsImJpbmQkMSIsIm1hcCQxIiwicmV0dXJuJDIiLCJpc19vayIsImlzX2Vycm9yIiwib2Zfb3B0aW9uIiwib3B0IiwiaXRlcl9lcnJvciIsInRvX2VpdGhlciIsIm9mX2VpdGhlciIsIm9rX2lmX3RydWUiLCJib29sIiwidHJ5X3dpdGgiLCJva19leG4iLCJva19vcl9mYWlsd2l0aCIsImNvbWJpbmUiLCJlcnIiLCJvazEiLCJvazIiLCJlcnIxIiwiZXJyMiIsImNvbWJpbmVfZXJyb3JzIiwiZXJycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJjb3VudCIsInN1bSIsIk0iLCJmb2xkX3Jlc3VsdCIsImFjYyIsIml0ZW0iLCJmb2xkX3VudGlsIiwiZmluaXNoIiwibWluX2VsdCIsImVsdCIsIm1heF9lbHQiLCJtZW0iLCJmaW5kX21hcCIsImZpbmQiLCJ0b19hcnJheSIsIml0ZXIkMCIsIml0ZXIkMSIsImxlbmd0aCQwIiwibGVuZ3RoJDEiLCJpc19lbXB0eSQwIiwibWVtJDAiLCJzdW0kMCIsIm0iLCJjb3VudCQwIiwiZXhpc3RzJDAiLCJmb3JfYWxsJDAiLCJmaW5kX21hcCQwIiwiZmluZCQwIiwidG9fbGlzdCQwIiwidG9fYXJyYXkkMCIsIm1pbl9lbHQkMCIsIm1heF9lbHQkMCIsImZvbGRfcmVzdWx0JDAiLCJmb2xkX3VudGlsJDAiLCJvZl9hcnJheSIsImNvbmNhdF9vZl9hcnJheSIsImNvbmNhdF9tYXAiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiZWl0aGVyIiwicGFydGl0aW9uX3RmIiwiZm9sZCQwIiwib2ZfbGlzdCQwIiwib2ZfYXJyYXkkMCIsImNvbmNhdCQwIiwiZm9sZGkiLCJhY2MkMCIsImNvdW50aSIsImV4aXN0c2kiLCJmb3JfYWxsaSIsImZpbmRfbWFwaSIsImZpbmRpIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImRlcml2ZWRfaW5pdCIsImRlcml2ZWRfaW5pdCQwIiwiZGVyaXZlZF9jb25jYXRfbWFwaSIsImNvbmNhdF9tYXBpIiwiY29uY2F0X21hcGkkMCIsImZpbHRlcl9tYXBpIiwiZmlsdGVyaSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJwZWVrIiwic2V4cF9vZl9hIiwic2xvd19jaGVja19wb3NfbGVuX2V4biIsInBvcyIsInRvdGFsX2xlbmd0aCIsImNoZWNrX3Bvc19sZW5fZXhuIiwic3RvcCIsImdldF9wb3NfbGVuX2V4biIsImxlbiQwIiwib2Zfc3RhdGUiLCJhc3NpZ24iLCJkc3QiLCJzcmMiLCJkc3QkMCIsInNyYyQwIiwibWFrZV9kZWZhdWx0IiwiZGVmYXVsdCQwIiwic3BsaXRfZnJvbV9wYXJlbnQiLCJnZXRfc3RhdGUiLCJyYW5kb21fa2V5IiwiZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIiwiYWxsb3dfaW5fdGVzdHMiLCJiaXRzIiwiaW50JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiY2hhciQwIiwiYXNjaWkiLCJtYWtlX3NlbGZfaW5pdCIsImludF9vbl82NGJpdHMiLCJib3VuZCIsImludF9vbl8zMmJpdHMiLCJpbnQkMSIsImJpdHMkMCIsImZ1bGxfcmFuZ2VfaW50NjQiLCJmdWxsX3JhbmdlX2ludDMyIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIiwiZnVsbF9yYW5nZV9pbnRfb25fNjRiaXRzJDAiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX25hdGl2ZWludCIsInJhaXNlX2Nyb3NzZWRfYm91bmRzIiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsInN0cmluZ19vZl9ib3VuZCIsImludF9pbmNsIiwibG8iLCJoaSIsImRpZmYiLCJpbnQzMl9pbmNsIiwibmF0aXZlaW50X2luY2wiLCJpbnQ2NF9pbmNsIiwiZmxvYXQkMCIsInNjYWxlIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQxIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwibnVtX3N3YXBzIiwidGhpc19pIiwicmFuZG9tX2kiLCJzZXhwXzAwNiIsImVycm9yX3NvdXJjZV8wMzIiLCJmb2xkX2xlZnQiLCJhXzAxMCIsImJfMDExIiwiYV8wMTIiLCJiXzAxMyIsIm9mX2FfMDE0IiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwiaGQiLCJ0bCIsIm50aCIsIm50aF9leG4iLCJ1bm9yZGVyZWRfYXBwZW5kIiwib2ZfbGlzdHMiLCJzaGFyZWRfbGVuZ3RoIiwic2hhcmVkX2xlbmd0aCQwIiwiY2hlY2tfbGVuZ3RoMl9leG4iLCJ0YWlsX29mX2IiLCJ0YWlsX29mX2EiLCJjaGVja19sZW5ndGgyIiwib2ZfbGlzdHMkMCIsImwzIiwiYyQwIiwiY2hlY2tfbGVuZ3RoM19leG4iLCJ0YWlsX29mX2MiLCJuMSIsIm4yIiwibjMiLCJjaGVja19sZW5ndGgzIiwiaXRlcjIiLCJpdGVyMl9leG4iLCJyZXZfbWFwMiIsInJldl9tYXAyX2V4biIsImZvbGQyIiwiZm9sZDJfZXhuIiwiZm9sZF9yaWdodDIiLCJmb2xkX3JpZ2h0Ml9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsIm5vdF9mb3VuZCIsImZpbmRfbWFwX2V4biIsIm5vdF9mb3VuZCQwIiwiZmluZF9leG4iLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDMkMCIsImFjIiwibDMkMSIsImFjJDAiLCJyZXZfbWFwMyIsInJldl9tYXAzX2V4biIsIm1hcDNfb2siLCJtYXAzX2V4biIsInJldl9tYXBfYXBwZW5kIiwiaCIsImxpc3QkMiIsInVuemlwMyIsInoiLCJ6aXBfZXhuIiwiemlwIiwicmV2X21hcGkiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcGkiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicmVkdWNlX2JhbGFuY2VkIiwic3RlcF9hY2N1bSIsIm51bSIsIm51bSQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwibGFzdF9leG4iLCJsYXN0IiwiaXNfcHJlZml4IiwicHJlZml4IiwicHJlZml4JDAiLCJwcmVmaXgkMSIsImhkJDAiLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsImExJDAiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwicmV2X2ZpbHRlcl9tYXBpIiwiaSQxIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzMiLCJzZXhwXzAzMSIsImFyZzFfMDI4IiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsInNleHBfb2ZfdCQxIiwib2ZfYV8wMzQiLCJvZl9iXzAzNSIsInhfMDQwIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsInJlbW92ZSIsImFkZCIsImludmVyc2UiLCJtYXAkMiIsImVsIiwic3BsaXRfbiIsInRfb3JpZyIsInRha2UiLCJkcm9wIiwiY2h1bmtzX29mIiwibCQxIiwic3VibGlzdCIsInNwbGl0X3doaWxlIiwidGFrZV93aGlsZSIsImRyb3Bfd2hpbGUiLCJkcm9wX2xhc3QiLCJkcm9wX2xhc3RfZXhuIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJsaXN0MSIsImxpc3QyIiwiY29uY2F0X25vX29yZGVyIiwiY29ucyIsImlzX3NvcnRlZCIsImlzX3NvcnRlZF9zdHJpY3RseSIsImFyciIsInJhbmRvbV9lbGVtZW50X2V4biIsInJhbmRvbV9lbGVtZW50IiwiY21wIiwiZXF1YWxfbG9jYWwiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsInJlczJfMDE0IiwiYXJnMV8wMTYiLCJyZXMxXzAxOCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczFfMDIzIiwicmVzMl8wMjQiLCJhcmcxXzAyNiIsImFyZzBfMDI1IiwicmVzMF8wMjciLCJyZXMxXzAyOCIsImFyZzFfMDMwIiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInRvX3N0cmluZ3NfaHVtIiwic3RyaW5nIiwic2V4cCQwIiwic2V4cCQxIiwidGFnIiwidGFnJDAiLCJzZXhwJDIiLCJ0YWckMSIsImJvZHkiLCJ0cnVuY19hZnRlciIsInRzJDAiLCJ0cyQxIiwiYWMkMSIsInRvX3NleHBzX2h1bSIsInN0cmluZyQwIiwiaGVyZSIsImhlcmUkMCIsInRvX3NleHBfaHVtIiwic2V4cHMiLCJ0b19tZXNzYWdlIiwiaW5mbyIsIm9mX21lc3NhZ2UiLCJ0b19zdHJpbmdfaHVtIiwibWVzc2FnZSIsInRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCIsIm9mX2xhenkiLCJvZl9sYXp5X3NleHAiLCJvZl9sYXp5X3QiLCJsYXp5X3QiLCJjcmVhdGVmIiwib2ZfdGh1bmsiLCJzdHJpY3QiLCJzZXhwX29mX3giLCJ0YWdfc19sYXp5IiwidGFnX3MiLCJ0YWdfYXJnIiwidG9fZXhuIiwib2ZfZXhuIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImJhY2t0cmFjZSQyIiwicmFpc2UiLCJyYWlzZV9zIiwidG9faW5mbyIsIm9mX2luZm8iLCJjaGVja19maWVsZCIsImFfMDA3IiwiYl8wMDgiLCJvZl9hXzAxMyIsInhfMDE1Iiwib2ZfYV8wMTYiLCJ4XzAxNyIsImludmFyaWFudF9hIiwiZTEiLCJlMiIsInRyeV93aXRoX2pvaW4iLCJvZl9leG5fcmVzdWx0IiwiZXJyb3JfcyIsImVycm9yX3N0cmluZyIsImVycm9yZiIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2ludGVybmFsIiwib25fb2siLCJvbl9lcnJvciIsImlnbm9yZV91bml0X2xpc3QiLCJlcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeSIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImNvbXBhcmVfcmV2ZXJzZWQiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImhhc2hfcGFyYW0iLCJwb2x5Iiwib2Zfa2V5IiwiS2V5IiwidG9fa2V5IiwiaGFzaF9wYXJhbSQwIiwicG9seSQwIiwib2Zfa2V5JDAiLCJ0b19rZXkkMCIsImhhc2hhYmxlIiwiZ2V0X3Bvc19sZW4iLCJmaW5kX2ZpcnN0X3NhdGlzZnlpbmciLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsImJsaXRfc3RyaW5nIiwic3JjX3BvcyIsImRzdF9wb3MiLCJibGl0byIsInNyY19sZW4iLCJzdWJvIiwiY3JlYXRlX2xpa2UiLCJ1bnNhZmVfYmxpdCQwIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJ2YWx1ZV9tYXAiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZm9jdXMiLCJjb21iaW5lX2FsbCIsIm1hdGNoJDAiLCJtYXRjaCIsImNvbWJpbmVfYWxsX3VuaXQiLCJ0b19vcHRpb24iLCJmb2N1cyQwIiwiY29tYmluZSQwIiwiYmluZCQwIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJvIiwiY2FsbCIsInZhbHVlX2V4biIsImVycm9yJDAiLCJtJDAiLCJtJDEiLCJ2YWx1ZV9vcl90aHVuayIsInNvbWUiLCJmaXJzdF9zb21lIiwic29tZV9pZiIsImNvbmQiLCJlcnJvcl9zb3VyY2VfMDI3Iiwib2Zfc18wMDIiLCJzdGF0ZV8wMDQiLCJzdGF0ZV8wMDkiLCJ2YWx1ZV8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMyIsImJfMDE0IiwiYV8wMTUiLCJiXzAxNiIsImFfMDE3IiwiYl8wMTgiLCJhXzAyMSIsImFfMDE5IiwiYl8wMjIiLCJiXzAyMCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIzIiwib2ZfYl8wMjQiLCJzZXhwXzAyOSIsInRhZ18wMzAiLCJzZXhwX2FyZ3NfMDM2IiwiYXJnMF8wMzciLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wNDEiLCJhcmcxXzA0MyIsImFyZzBfMDQyIiwicmVzMF8wNDQiLCJyZXMxXzA0NSIsIm9mX2FfMDQ4Iiwib2ZfYl8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsImFfb2Zfc2V4cCIsImJfb2Zfc2V4cCIsInNleHBfb2ZfYiIsImNfb2Zfc2V4cCIsInNleHBfb2ZfYyIsInNldCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25fbWFwaSIsImZpcnN0cyIsInNlY29uZHMiLCJwYXJ0aXRpb25pX3RmIiwidG9fc2VxdWVuY2VfbXV0YWJsZSIsInRvX3NlcXVlbmNlIiwiaTEiLCJpMiIsInR0Iiwid2lkdGgiLCJkZXB0aCIsImQiLCJ3IiwidHQkMCIsImdldCQwIiwiemVyb19vYmoiLCJjcmVhdGVfemVybyIsInVuc2FmZV9nZXQiLCJ1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkiLCJvYmoiLCJzZXRfd2l0aF9jYW1sX21vZGlmeSIsInVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbiIsIm9sZF9vYmoiLCJ1bnNhZmVfc2V0IiwidW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlIiwidW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfIiwidW5zYWZlX3NldF9pbnQiLCJ1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciIsImkkMiIsInVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCIsImNyZWF0ZV9vYmpfYXJyYXkiLCJncmFtbWFyIiwiY2VpbCIsImZsb29yIiwibW9kX2Zsb2F0IiwibW9kZiIsIm1heF9maW5pdGVfdmFsdWUiLCJjbGFzc2lmeV9mbG9hdCIsImFic19mbG9hdCIsImlzX2ludGVnZXIiLCJmcmV4cCIsImxkZXhwIiwiaXNfbmFuIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXIiLCJ0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlcl9leG4iLCJvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlciIsIm9uZV91bHAiLCJkaXIiLCJ1cHBlcl9ib3VuZF9mb3JfaW50IiwiZXhwIiwiaXNfeF9taW51c19vbmVfZXhhY3QiLCJsb3dlcl9ib3VuZF9mb3JfaW50IiwibWluX2ludF9hc19mbG9hdCIsImJveCIsImlzX2xvd2VyY2FzZSIsImlzX3VwcGVyY2FzZSIsImlzX3ByaW50IiwiaXNfd2hpdGVzcGFjZSIsImlzX2RpZ2l0IiwiaXNfYWxwaGEiLCJpc19hbHBoYW51bSIsImdldF9kaWdpdF91bnNhZmUiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0IiwiaXNfaGV4X2RpZ2l0X2xvd2VyIiwiaXNfaGV4X2RpZ2l0X3VwcGVyIiwiZ2V0X2hleF9kaWdpdF9leG4iLCJnZXRfaGV4X2RpZ2l0IiwidF9vZl9zZXhwJDEiLCJjMSIsImMyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRyX2NyZWF0ZV9tYXAiLCJ0YXJnZXQiLCJyZXBsYWNlbWVudCIsInRyX21hcCIsImkkMyIsImluZGV4JDAiLCJsYXN0X3JlcGxhY2VtZW50IiwiaW5kZXgiLCJmaXJzdF90YXJnZXQiLCJzdGFnZSIsInVuc3RhZ2UiLCJ1bnNhZmVfc3ViIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwia21wX2FycmF5XzAxMiIsImNhc2Vfc2Vuc2l0aXZlXzAxMCIsInBhdHRlcm5fMDA4IiwiYXJnXzAxMyIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsImJuZHNfMDA3JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJkcm9wX3ByZWZpeCIsImRyb3Bfc3VmZml4IiwibGZpbmRpIiwicmZpbmRpIiwibGFzdF9ub25fZHJvcCIsInJzdHJpcCIsImZpcnN0X25vbl9kcm9wIiwibHN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY29uY2F0X2FycmF5IiwiYXIiLCJjb25jYXRfbGluZXMiLCJsaW5lcyQzIiwiY3JsZiIsIm5ld2xpbmVfbGVuIiwibGluZXMiLCJsaW5lcyQwIiwiYnVmIiwibGluZXMkMSIsIndyaXR0ZW4iLCJsaW5lcyQyIiwibGluZSQwIiwib3V0Iiwib3V0X3BvcyIsIm91dCQwIiwiY2hvcF9wcmVmaXgiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9leG4iLCJjaG9wX3N1ZmZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3Bfc3VmZml4X2V4biIsInNob3J0ZXIiLCJzaG9ydGVzdCIsInBvc19mcm9tX2xlZnQiLCJwb3NfZnJvbV9yaWdodCIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCIsImdldF9wb3MiLCJtYXhfbGVuIiwibGVuX3NvX2ZhciIsImxlbl9zb19mYXIkMCIsImxlbl9zb19mYXIkMSIsImNvbW1vbl9nZW5lcmljMl9sZW5ndGgiLCJjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCIsImZpcnN0JDAiLCJtYXhfbGVuJDAiLCJtYXhfbGVuJDEiLCJjb21tb25fZ2VuZXJpY19sZW5ndGgiLCJjb21tb25fZ2VuZXJpYzIiLCJjb21tb25fZ2VuZXJpYyIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeDIiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeF9sZW5ndGgiLCJjb21tb25fcHJlZml4Ml9sZW5ndGgiLCJjb21tb25fc3VmZml4Ml9sZW5ndGgiLCJvZl9jaGFyIiwib2ZfY2hhcl9saXN0IiwicGFkX3JpZ2h0IiwicGFkX2xlZnQiLCJsb2NhbF9jb3B5X3ByZWZpeCIsImJ1ZmZlcl9sZW4iLCJsb2NhbF9jb3B5X3RvX3N0cmluZyIsInNyY19wb3MkMCIsImRzdF9wb3MkMCIsInBhcnRpdGlvbl9tYXBfZGlmZmVyZW5jZSIsImZzdF9wb3MkMCIsInNuZF9wb3MkMCIsImZzdHMiLCJzbmRzIiwiYyQxIiwic25kX3BvcyQxIiwiZnN0X3BvcyQxIiwiYyQyIiwic25kX3BvcyQyIiwic3JjX3BvcyQxIiwiZnN0X3BvcyIsInNuZF9wb3MiLCJjMSQxIiwiZWl0aGVyJDEiLCJjMiQxIiwiYzIkMiIsImMxJDAiLCJlaXRoZXIkMCIsImMyJDAiLCJwb3MkMiIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsIm1hcGkkMCIsIm9jYW1sX2xleF90YWJsZXMiLCJwYXJzZV9oZXgiLCJsZXhidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsImNvbnZlcnRfZmFpbHVyZSIsIm51bV9iaXRzX2ludCIsIm51bV9iaXRzX25hdGl2ZWludCIsIm51bV9iaXRzX2ludDMyIiwibnVtX2JpdHNfaW50NjQiLCJtaW5faW50MzIiLCJtYXhfaW50MzIiLCJtaW5faW50NjQiLCJtYXhfaW50NjQiLCJtaW5fbmF0aXZlaW50IiwibWF4X25hdGl2ZWludCIsImludDY0X3RvX3N0cmluZyIsIm5hdGl2ZWludF90b19zdHJpbmciLCJpbnQzMl90b19pbnRfdHJ1bmMiLCJpbnRfdG9faW50MzJfdHJ1bmMiLCJpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiIsImludF90b19pbnQzMiIsImludDMyX3RvX2ludCIsImludF90b19pbnQzMl9leG4iLCJpbnQzMl90b19pbnRfZXhuIiwiaW50X3RvX2ludDY0IiwiaW50NjRfdG9faW50X3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQiLCJpbnQ2NF90b19pbnQiLCJpbnQ2NF90b19pbnRfZXhuIiwiaW50X3RvX25hdGl2ZWludCIsIm5hdGl2ZWludF90b19pbnRfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50IiwibmF0aXZlaW50X3RvX2ludF9leG4iLCJpbnQzMl90b19pbnQ2NCIsImludDY0X3RvX2ludDMyX3RydW5jIiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzIiwiaW50NjRfdG9faW50MzIiLCJpbnQ2NF90b19pbnQzMl9leG4iLCJpbnQzMl90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMiLCJuYXRpdmVpbnRfdG9faW50MzIiLCJuYXRpdmVpbnRfdG9faW50MzJfZXhuIiwiaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludDY0IiwiaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpIiwiaW50NjRfdG9fbmF0aXZlaW50IiwiaW50NjRfdG9fbmF0aXZlaW50X2V4biIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NiIsImludDY0X2ZpdF9vbl9pbnQ2M19leG4iLCJpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IiwiZGVsaW1pdGVyIiwiY2hhcnNfcGVyX2RlbGltaXRlciIsImlucHV0X2xlbmd0aCIsImhhc19zaWduIiwibnVtX2RpZ2l0cyIsIm51bV9kZWxpbWl0ZXJzIiwib3V0cHV0X2xlbmd0aCIsImlucHV0X3BvcyIsIm91dHB1dF9wb3MiLCJudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyIiwiZmlyc3RfZGlnaXRfcG9zIiwiaW5zZXJ0X2RlbGltaXRlciIsImluc2VydF91bmRlcnNjb3JlcyIsInNleHBfb2ZfaW50X3N0eWxlIiwiZGVsaW1pdGVyJDAiLCJtYWtlX3N1ZmZpeCIsInRvX3N0cmluZyQwIiwiaW52YWxpZCIsIm9mX3N0cmluZ193aXRoX2RlbGltaXRlciIsImxleCIsImJvZHkkMCIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbiIsIm92ZXJmbG93X2JvdW5kX21heF9pbnQ2NF92YWx1ZSIsImludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsIm92ZXJmbG93X2JvdW5kX21heF9pbnRfdmFsdWUiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50MzJfdmFsdWUiLCJpbnRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsIiwiaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwiaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIiwibmVnYXRpdmVfZXhwb25lbnQiLCJvdmVyZmxvdyIsImludF9wb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpbnQ2NF9wb3ciLCJpbnQ2M19wb3dfb25faW50NjQiLCJydmFsIiwib25lIiwicm91bmRfZG93biIsIm1vZHVsdXMiLCJyb3VuZF91cCIsInJlbWFpbmRlciIsInJvdW5kX3Rvd2FyZHNfemVybyIsInRvX211bHRpcGxlX29mIiwicm91bmRfbmVhcmVzdCIsIm1vZHVsdXNfbWludXNfcmVtYWluZGVyIiwicm91bmQiLCJoMDEiLCJtYXNrIiwiaW50NjRfcG9wY291bnQiLCJ4JDIiLCJpbnQzMl9wb3Bjb3VudCIsIm5hdGl2ZWludF9wb3Bjb3VudCIsIm1vZHVsZV9uYW1lJDAiLCJvZl9zdHJpbmckMCIsImZsb2F0X2xvd2VyX2JvdW5kIiwiZmxvYXRfdXBwZXJfYm91bmQiLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJ6ZXJvIiwiZnVuYyQwIiwibmVnIiwib2Zfc3RyaW5nJDEiLCJvZl9pbnQzMiIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjQiLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnQiLCJhYnMiLCJyZW0iLCJpbmNyIiwiZGVjciIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJzaGlmdF9sZWZ0IiwiYml0X25vdCIsImJpdF9vciIsImJpdF9hbmQiLCJiaXRfeG9yIiwicG93Iiwibm9uX3Bvc2l0aXZlX2FyZ3VtZW50IiwiY2VpbF9wb3cyIiwieCQzIiwieCQ0IiwieCQ1IiwieCQ2IiwiZmxvb3JfcG93MiIsImlzX3BvdzIiLCJmbG9vcl9sb2cyIiwiY2VpbF9sb2cyIiwicG9wY291bnQiLCJsbm90Iiwic3VjY19leG4iLCJtc2ciLCJwcmVkX2V4biIsIm9mX3NjYWxhciIsIm9mX3NjYWxhcl9leG4iLCJ0b19zY2FsYXIiLCJ0b19jaGFyIiwidG9fY2hhcl9leG4iLCJ1dGY4X2J5dGVfbGVuZ3RoIiwidWNoYXIiLCJjb2RlcG9pbnQiLCJzb21lX3QiLCJzeW0iLCJ0cmFucyIsImNvbnYiLCJkZXR1cGxlMiIsInR1cGxlMiIsIndpdG5lc3MiLCJ2XzAwNSIsInRvX3NleHAiLCJ1aWQiLCJzYW1lX3dpdG5lc3MiLCJzYW1lIiwic2FtZV93aXRuZXNzX2V4biIsIm5vbmVfc3Vic3RpdHV0ZSIsIm5vbmUiLCJ2YWx1ZV91bnNhZmUiLCJvZl9zZXhwYWJsZSIsInRvX3NleHBhYmxlIiwieF8wMDMiLCJvZl9hXzAwNCIsInhfMDA1IiwiaW5pdF9zb21lIiwiZ2V0X3NvbWVfZXhuIiwiaXNfbm9uZSQwIiwiaXNfc29tZSQwIiwic2V0X3NvbWUiLCJzZXRfbm9uZSIsInVuc2FmZV9nZXRfc29tZV9leG4iLCJ1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSIsInVuc2FmZV9pc19zb21lIiwidW5zYWZlX3NldF9zb21lIiwidW5zYWZlX3NldF9ub25lIiwiY2xlYXIiLCJlbGVtIiwibWFwX3NvbWUiLCJvZl9hcnJheV9zb21lIiwiY2FwYWNpdHkiLCJlbHRzIiwibGVuZ3RoXzAwMyIsImVsdHNfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJyZXNpemUiLCJzaXplIiwic2V0X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5JDAiLCJwdXNoIiwicG9wX25vbmVtcHR5IiwicG9wX2Vycm9yIiwicG9wIiwicG9wX2V4biIsInRvcF9ub25lbXB0eSIsInRvcF9lcnJvciIsInRvcCIsInRvcF9leG4iLCJ1bnRpbF9lbXB0eSIsInRfcmVzdWx0IiwiZmlsdGVyX2lucGxhY2UiLCJ3cml0ZV9pbmRleCIsInJlYWRfaW5kZXgiLCJoYXNoX292ZXJyaWRlIiwib2ZfcG9zIiwib2Zfc2lnbiIsInRvX3NpZ25fZXhuIiwidG9faW50X2V4biIsImVycm9yX3NvdXJjZV8wMDYiLCJpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW0iLCJhbGxfb2ZfYSIsImVudW1lcmF0ZV8wMDIiLCJlbnVtZXJhdGVfMDAxIiwiYWNjJDIiLCJvZl9hXzAwMyIsInNleHBfMDA4IiwidGFnXzAwOSIsInNleHBfYXJnc18wMTAiLCJhcmcwXzAxMSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwiYV8wMTEiLCJiXzAxMiIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDE4IiwibGVmdF8wMTciLCJyaWdodF8wMjIiLCJsZWZ0XzAyMSIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwicmlnaHRfMDIwIiwibGVmdF8wMTkiLCJ0XzAzMCIsInRfMDI5IiwidF8wMzIiLCJ0XzAzMSIsInJpZ2h0XzAzNCIsImxlZnRfMDMzIiwicmlnaHRfMDM4IiwibGVmdF8wMzciLCJ0XzA0MCIsInRfMDM5IiwidF8wNDIiLCJ0XzA0MSIsInJpZ2h0XzAzNiIsImxlZnRfMDM1Iiwib2Zfa18wNDMiLCJvZl92XzA0NCIsInNleHBfMDcxIiwiYXJnMV8wNjgiLCJhcmcwXzA2NyIsInJlczBfMDY5IiwiYXRvbV8wNDciLCJzZXhwX2FyZ3NfMDUwIiwiYXRvbV8wNDckMCIsImFyZzBfMDU4IiwiYXJnMV8wNTMiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwicmVzMF8wNTkiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsInJlczFfMDcwIiwib2Zfa18wNzIiLCJvZl92XzA3MyIsImFyZzFfMDgyIiwiYXJnMF8wODEiLCJyZXMwXzA4MyIsInZfMDc0IiwicmVzMV8wODQiLCJ2XzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwidl8wNzUiLCJrX3NleHBfZ3JhbW1hciIsInZfc2V4cF9ncmFtbWFyIiwiY21wX2xlZnQiLCJjbXBfcmlnaHQiLCJhXzA4NSIsImJfMDg2IiwicmlnaHRfMDkyIiwibGVmdF8wOTEiLCJ0XzA5NCIsInRfMDkzIiwidF8wOTYiLCJ0XzA5NSIsInJpZ2h0XzA4OCIsImxlZnRfMDg3IiwicmlnaHRfMDkwIiwibGVmdF8wODkiLCJhXzA5NyIsImJfMDk4IiwicmlnaHRfMTA0IiwibGVmdF8xMDMiLCJ0XzEwNiIsInRfMTA1IiwidF8xMDgiLCJ0XzEwNyIsInJpZ2h0XzEwMCIsImxlZnRfMDk5IiwicmlnaHRfMTAyIiwibGVmdF8xMDEiLCJvZl9sZWZ0XzEwOSIsIm9mX3JpZ2h0XzExMCIsInZfMTEzIiwiYXJnMV8xMTUiLCJhcmcwXzExNCIsInJlczBfMTE2IiwicmVzMV8xMTciLCJ2XzExMSIsInZfMTEyIiwic2V4cF9vZl90JDMiLCJoZWlnaHQiLCJpbl9yYW5nZSIsImhsIiwiaHIiLCJsb3dlciQxIiwiaW52YXJpYW50cyIsImgkMSIsImgkMCIsInNsIiwic3IiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2siLCJrbCIsImskMSIsImtsJDAiLCJrJDIiLCJrciIsImxlZnRfbGVuZ3RoIiwicmlnaHRfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCIsImFycmF5X2xlbmd0aCIsIm9mX3NvcnRlZF9hcnJheSIsImluY3JlYXNpbmciLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYkMCIsImxybCIsImxydiIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiQwIiwicmxsIiwicmx2IiwiYXV4IiwiYWRkX21pbiIsImFkZF9tYXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsInNwbGl0X2xlX2d0Iiwic3BsaXRfbHRfZ2UiLCJlbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW8iLCJyZW1vdmVfaW5kZXgiLCJsX3NpemUiLCJ1bmlvbiIsInYxJDAiLCJ2MiQwIiwicjIkMCIsInIxJDAiLCJ1bmlvbl9saXN0IiwidG9fdHJlZSIsImludGVyIiwib3RoZXJfc2V0IiwiZSQxIiwiY29uc19yaWdodCIsIm9mX3NldCIsImVudW0kMCIsInRyZWUiLCJzeW1tZXRyaWNfZGlmZiIsImVsdCQwIiwiZW51bTEiLCJ0cmVlMSIsImVudW0yIiwidHJlZTIiLCJjb21wYXJlX3Jlc3VsdCIsIm5leHRfc3RhdGUiLCJncmVhdGVyX29yX2VxdWFsX3RvIiwibGVzc19vcl9lcXVhbF90byIsImluY2x1c2l2ZV9ib3VuZCIsInNpZGUiLCJtYXliZSIsInYkMSIsInYkMiIsInYkMyIsInYkNCIsImUkMiIsIm1lcmdlX3RvX3NlcXVlbmNlIiwiZTIkMiIsImUxJDIiLCJlMiQwIiwiZTEkMCIsImUyJDEiLCJlMSQxIiwidDIkMiIsInQxJDIiLCJpc19zdWJzZXQiLCJhcmVfZGlzam9pbnQiLCJhY2N1JDEiLCJmaWx0Iiwia2VlcF92IiwibF9mIiwibF90Iiwia2VlcF92X3QiLCJyX2YiLCJyX3QiLCJtayIsImVsZW1lbnRzX2F1eCIsImVsZW1lbnRzIiwiY2hvb3NlIiwiY2hvb3NlX2V4biIsInBvc19yZWYiLCJncm91cF9ieSIsImVxdWl2Iiwic2V0JDAiLCJlcXVpdl9jbGFzc2VzIiwibm90X2VxdWl2X3giLCJlcXVpdl94IiwiZXF1aXZfY2xhc3NlcyQwIiwic3RhYmxlX2RlZHVwX2xpc3QiLCJsZWZ0b3ZlcnMiLCJhbHJlYWR5X3NlZW4iLCJhbHJlYWR5X3NlZW4kMCIsImxlZnRvdmVycyQwIiwidF9vZl9zZXhwX2RpcmVjdCIsImVsdF9sc3QiLCJlbF9zZXhwIiwiaXNfc3Vic2V0JDAiLCJzdWJzZXQiLCJzdXBlcnNldCIsInNleHBfb2ZfZWx0IiwiaW52YWxpZF9lbGVtZW50cyIsImludmFsaWRfZWxlbWVudHNfc2V4cCIsImxpa2UiLCJsaWtlX21heWJlX25vX29wIiwib2xkX3QiLCJvbGRfdHJlZSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsIm5hbWVkIiwiaXNfc3Vic2V0JDIiLCJwYXJ0aXRpb25fdGYkMCIsInRyZWVfZiIsInRyZWVfdCIsInNwbGl0X2xlX2d0JDAiLCJzcGxpdF9sdF9nZSQwIiwiZ3JvdXBfYnkkMCIsIm50aCQwIiwicmVtb3ZlX2luZGV4JDAiLCJ0b19zZXF1ZW5jZSQwIiwiYmluYXJ5X3NlYXJjaCQwIiwiYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQkMCIsIm1lcmdlX3RvX3NlcXVlbmNlJDAiLCJoYXNoX2ZvbGRfZGlyZWN0IiwidF9vZl9zZXhwX2RpcmVjdCQwIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImVsZW1lbnRzJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImNob29zZSQxIiwiY2hvb3NlX2V4biQxIiwidG9fYXJyYXkkMSIsIml0ZXIkMiIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiY291bnQkMSIsInN1bSQxIiwiZmluZCQxIiwiZmluZF9leG4kMSIsImZpbmRfbWFwJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmaWx0ZXIkMSIsImZpbHRlcl9tYXAkMCIsInBhcnRpdGlvbl90ZiQxIiwiaXRlcjIkMSIsIm1lbSQxIiwiYWRkJDEiLCJyZW1vdmUkMSIsInVuaW9uJDEiLCJpbnRlciQxIiwiZGlmZiQxIiwic3ltbWV0cmljX2RpZmYkMSIsImNvbXBhcmVfZGlyZWN0JDAiLCJpc19zdWJzZXQkMyIsImFyZV9kaXNqb2ludCQxIiwib2Zfc2VxdWVuY2UkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJzcGxpdF9sZV9ndCQxIiwic3BsaXRfbHRfZ2UkMSIsIm50aCQxIiwicmVtb3ZlX2luZGV4JDEiLCJvZl90cmVlIiwidG9fc2VxdWVuY2UkMSIsImJpbmFyeV9zZWFyY2gkMSIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDEiLCJtZXJnZV90b19zZXF1ZW5jZSQxIiwiaXNfc3Vic2V0JDQiLCJ0b190cmVlJDAiLCJvZl90cmVlJDAiLCJ0X29mX3NleHBfZGlyZWN0JDEiLCJlbXB0eSQwIiwic2luZ2xldG9uJDAiLCJ1bmlvbl9saXN0JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX3NvcnRlZF9hcnJheSQxIiwib2ZfbGlzdCQxIiwib2Zfc2VxdWVuY2UkMSIsIm9mX2FycmF5JDEiLCJzdGFibGVfZGVkdXBfbGlzdCQxIiwiZmlsdGVyX21hcCQxIiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwidW5pb25fbGlzdCQyIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9zb3J0ZWRfYXJyYXkkMiIsIm9mX2xpc3QkMiIsIm9mX3NlcXVlbmNlJDIiLCJvZl9hcnJheSQyIiwic3RhYmxlX2RlZHVwX2xpc3QkMiIsImZpbHRlcl9tYXAkMiIsIm9mX3RyZWUkMSIsInNleHBfb2ZfbV90IiwiRWx0IiwibV90X29mX3NleHAiLCJtX3Rfc2V4cF9ncmFtbWFyIiwiY29tcGFyZV9tX3QiLCJlcXVhbF9tX3QiLCJoYXNoX2ZvbGRfbV90IiwiaGFzaF9tX3QiLCJjb21wYXJhdG9yJDAiLCJlbXB0eSQyIiwic2luZ2xldG9uJDIiLCJ1bmlvbl9saXN0JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2FycmF5JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl90cmVlJDIiLCJ0b190cmVlJDEiLCJyZXBsYWNlIiwic2V0X3RlbXBvcmFyaWx5IiwicmVzdG9yZV90byIsInNldHMiLCJzbmFwc2hvdCIsInNldHNfdGVtcG9yYXJpbHkiLCJhbmRfdmFsdWVzIiwiaW5jX251bV9tdXRhdGlvbnMiLCJlbHRzX2luZGV4IiwiY2hlY2tfaW5kZXhfZXhuIiwiZW5zdXJlX25vX211dGF0aW9uIiwibnVtX211dGF0aW9ucyIsIm51bV9tdXRhdGlvbnNfMDAzIiwiZnJvbnRfMDA1IiwibWFza18wMDciLCJsZW5ndGhfMDA5IiwiZWx0c18wMTEiLCJhcmdfMDEyIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwic2V0X2NhcGFjaXR5X2ludGVybmFsIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9hbmRfaWdub3JlX2V4biIsImZyb250X25vbmVtcHR5IiwibGFzdF9ub25lbXB0eSIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwiZmlsdGVyaV9pbnBsYWNlIiwidW5yZWFjaGFibGVfY29kZSIsInplcm8kMCIsIm1pbnVzX29uZSIsInplcm8kMSIsInRvX2ludF90cnVuYyIsInRvX2ludDMyX3RydW5jIiwib2ZfaW50NjRfdHJ1bmMiLCJuYW1lJDAiLCJvZl9jb250aW51ZV9vcl9zdG9wIiwidG9fY29udGludWVfb3Jfc3RvcCIsImxlZnRfdmFsdWUiLCJyaWdodF92YWx1ZSIsInZhbHVlcyIsImxlZnRfZGVmYXVsdCIsInJpZ2h0X2RlZmF1bHQiLCJyaWdodCQwIiwiY29tcGFyZV9rZXkiLCJ2bCIsInZsJDAiLCJ2ciIsImswIiwiazEiLCJsZCIsImxyZCIsImxyZCQwIiwicmQiLCJybGQiLCJybGQkMCIsInJhaXNlX2tleV9hbHJlYWR5X3ByZXNlbnQiLCJzZXhwX29mX2tleSIsImZpbmRfYW5kX2FkZF9vcl9zZXQiLCJkYXRhIiwiYWRkX29yX3NldCIsInRyZWUkMCIsInRyZWUkMSIsImxlbmd0aCQyIiwidHJlZSQyIiwiZCQwIiwidHJlZSQzIiwibGVuZ3RoJDMiLCJ0cmVlJDQiLCJsZW5ndGgkNCIsInRyZWUkNSIsInNldF9taW4iLCJzZXRfbWF4IiwiYWRkX2V4biIsImFkZF9leG5faW50ZXJuYWwiLCJzaW5nbGV0b25fdG9fdHJlZV9leG4iLCJjb2xsYXBzZSIsImdvIiwiYWRkX3VuY2hlY2tlZCIsImdvJDAiLCJ0b190cmVlX3VuY2hlY2tlZCIsIm1heF9rZXkiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIiwiYnVpbGRlciIsInByZXZfa2V5Iiwiam9pbiQwIiwibGQkMCIsImxrJDAiLCJyayIsInJkJDAiLCJyayQwIiwibGsiLCJjbXAkMCIsIm1heWJlJDAiLCJzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkiLCJpbnRvIiwiYm91bmRhcnlfb3B0Iiwic3BsaXRfcmFuZ2UiLCJtaWRfYW5kX3JpZ2h0IiwibGIkMSIsImxiJDIiLCJtaWRfYW5kX3JpZ2h0JDAiLCJsYiIsImxiJDAiLCJtaWQkMCIsImFkZF9tdWx0aSIsImRhdGEkMCIsImZpbmRfbXVsdGkiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm1pbl91cHBlciIsIm1heF9sb3dlciIsInVwcGVyX3BhcnRfd2l0aG91dF9taW4iLCJnbyQxIiwiY19taW4iLCJjX21heCIsImluaXQkMiIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwicmFuZ2VfdG9fYWxpc3QiLCJjb25jYXRfdW5jaGVja2VkIiwiY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkNSIsImxlbmd0aCQ2IiwidHJlZSQ2IiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwibmV3X2RhdGEiLCJuZXdfZGF0YSQwIiwibmV3X2RhdGEkMSIsImtlZXBfZGF0YSIsImZpbHRlcl9rZXlzIiwia2VlcF9kYXRhX3QiLCJzdGVwX2RlZXBlcl9leG4iLCJkcm9wX3BoeXNfZXF1YWxfcHJlZml4IiwiYWNjMSIsImFjYzIiLCJ0cmVlMSQwIiwiYWNjMSQwIiwidHJlZTIkMCIsImFjYzIkMCIsImFjYzEkMSIsInRyZWUxJDEiLCJhY2MyJDEiLCJ0cmVlMiQxIiwiYWNjMiQyIiwidHJlZTIkMiIsImFjYzEkMiIsInRyZWUxJDIiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMSIsImVudW0yJDAiLCJlbnVtMSQwIiwia2V5cyIsIm9mX2ZvbGRhYmxlIiwiZm9sZGFibGUiLCJwcmV2X2RhdGEiLCJvZl9mb2xkYWJsZV9mb2xkIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwib2ZfZm9sZGFibGUkMCIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfZm9sZGFibGVfbXVsdGkiLCJvZl9hbGlzdF9mb2xkIiwib2ZfYWxpc3RfcmVkdWNlIiwib2ZfYWxpc3QiLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9saXN0X3dpdGhfa2V5IiwiZ2V0X2tleSIsIm5ld19sZW5ndGgiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwidG9fYWxpc3QiLCJrZXlfb3JkZXIiLCJtZXJnZV9sYXJnZV9maXJzdCIsImxlbmd0aF9sYXJnZSIsInRfbGFyZ2UiLCJ0X3NtYWxsIiwibWVyZ2Vfc2tld2VkIiwibGVuZ3RoMSIsImxlbmd0aDIiLCJyZXBhY2thZ2UiLCJtYXJrZXIiLCJjbG9zZXN0X2tleSIsImZvdW5kX21hcmtlciIsImZvdW5kX2tleSIsImZvdW5kX3ZhbHVlIiwiZm91bmRfdmFsdWUkMCIsImZvdW5kX2tleSQwIiwicmFuayIsIm51bV90b19zZWFyY2giLCJwYWlyIiwicGFpciQwIiwiYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQiLCJtYXliZV9ib3VuZCIsImlmX2V4Y2x1c2l2ZSIsImlmX2luY2x1c2l2ZSIsImZpbmRfYm91bmQiLCJib3VuZCQwIiwiYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIiwibG93ZXJfYm91bmQkMCIsInVwcGVyX2JvdW5kJDAiLCJvZl9pdGVyaSIsIm9mX2l0ZXJpX2V4biIsImtleV9vZl9zZXhwIiwidmFsdWVfb2Zfc2V4cCIsImFsaXN0X3NleHBzIiwiZm91bmRfZmlyc3RfayIsImsyX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwiZXJyb3JzIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJ0cmFuc3Bvc2Vfa2V5cyIsIm91dGVyX2NvbXBhcmF0b3IiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfdCIsIm91dGVyX2tleSIsImlubmVyX3QiLCJpbm5lcl9rZXkiLCJhY2NfbGVuIiwiZWx0X2xlbiIsInRyZWVfZmlsdGVyX21hcGkiLCJyX2xlbiIsImxfbGVuIiwid2l0aF9zYW1lX2xlbmd0aCIsIm9mX2xpa2VfdHJlZSIsIm9mX2xpa2VfdHJlZV9tYXliZV9ub19vcCIsImFkZF9leG4kMCIsImFkZF9tdWx0aSQwIiwicmVtb3ZlX211bHRpJDAiLCJmaW5kX211bHRpJDAiLCJjaGFuZ2UkMCIsInVwZGF0ZSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaV91bnRpbCQwIiwiZm9sZCQzIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDAiLCJmaWx0ZXJpJDAiLCJmaWx0ZXJfbWFwaSQwIiwib2ZfbGlrZV90cmVlMiIsIm9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSQwIiwic3VicmFuZ2UiLCJoX2wiLCJoX3IiLCJvdXRlcl9qb2luZWRfaGVpZ2h0IiwibWlkX2xlbmd0aCIsImFwcGVuZCQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMCIsInJhbmdlX3RvX2FsaXN0JDAiLCJjbG9zZXN0X2tleSQwIiwicmFuayQwIiwic2V4cF9vZl9rIiwic2V4cF9vZl92IiwiaGFzaF9mb2xkX2tleSIsImhhc2hfZm9sZF9kYXRhIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsIm5ld190cmVlIiwibmV3X3RyZWVfd2l0aF9sZW5ndGgiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsIm9mX2xpc3Rfd2l0aF9rZXkkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMCIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDAiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDAiLCJzZXQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiaXRlcl9rZXlzJDEiLCJpdGVyaV91bnRpbCQxIiwibWFwaSQxIiwiZm9sZCQ0IiwiZm9sZDIkMiIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXJpJDEiLCJmaWx0ZXJfbWFwaSQxIiwicGFydGl0aW9uX21hcGkkMSIsInBhcnRpdGlvbl9tYXAkMSIsInBhcnRpdGlvbmlfdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJrZXlzJDEiLCJkYXRhJDEiLCJ0b19hbGlzdCQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwiZm9yX2FsbGkkMSIsImV4aXN0c2kkMSIsImNvdW50aSQxIiwiYXBwZW5kJDEiLCJzdWJyYW5nZSQwIiwiZm9sZF9yYW5nZV9pbmNsdXNpdmUkMSIsInJhbmdlX3RvX2FsaXN0JDEiLCJjbG9zZXN0X2tleSQxIiwibnRoJDIiLCJudGhfZXhuJDAiLCJyYW5rJDEiLCJrX29mX3NleHAiLCJ2X29mX3NleHAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJtYXBfa2V5cyQwIiwiZHVwIiwibWFwX2tleXNfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiYWRkX2V4biQyIiwib2ZfdHJlZTAiLCJvZl9hbGlzdCQxIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMSIsIm9mX2FsaXN0X2V4biQxIiwib2ZfYWxpc3RfbXVsdGkkMSIsIm9mX2FsaXN0X2ZvbGQkMSIsIm9mX2FsaXN0X3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsInRyZWVfbGVuZ3RoIiwib2ZfaXRlcmlfZXhuJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwidHJhbnNwb3NlX2tleXMkMSIsIm9mX3RyZWUkMyIsIm9mX2FsaXN0JDIiLCJvZl9hbGlzdF9vcl9lcnJvciQyIiwib2ZfYWxpc3RfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQyIiwib2Zfc2VxdWVuY2VfZXhuJDIiLCJvZl9zZXF1ZW5jZV9tdWx0aSQyIiwib2Zfc2VxdWVuY2VfZm9sZCQyIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm9mX2xpc3Rfd2l0aF9rZXkkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IkMyIsIm9mX2xpc3Rfd2l0aF9rZXlfZXhuJDMiLCJvZl9saXN0X3dpdGhfa2V5X211bHRpJDMiLCJtYXBfa2V5cyQzIiwibWFwX2tleXNfZXhuJDMiLCJ0cmFuc3Bvc2Vfa2V5cyQzIiwidHJhbnNmZXIiLCJjYW1sX2l0ZXIiLCJjYW1sX2ZvbGQiLCJxIiwicSQwIiwiZmxvYXRfb2ZfYml0cyIsImJpdHNfb2ZfZmxvYXQiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJ0b19uYXRpdmVpbnRfZXhuIiwid3JhcF9leG4iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsIm9mX3N0cmluZ19yYXciLCJzaWduZWRuZXNzIiwicG9zX3N0ciIsImludDYzIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsIm9mX2ludF90cnVuYyIsInJlcHIiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwib2Zfc3RyaW5nX29wdCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkiLCJzdGFydF9pZHgiLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfcmFuZG9tbHlfZXhuIiwiaW52YXJpYW50X2tleSIsImludmFyaWFudF9kYXRhIiwicmVhbF9sZW4iLCJuZXdfdCIsInQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2RhdGEiLCJkdXBlcyIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsInNleHBfb2ZfZGF0YSIsImRfb2Zfc2V4cCIsImtfZ3JhbW1hciIsInJvdyIsIm9sZCIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJtYXliZV9zZXQiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibWVyZ2VfaW50byIsImRzdF9kYXRhJDAiLCJhY3Rpb24iLCJkc3RfZGF0YSIsInRvX3JlbW92ZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwibWFwX3Jlc3VsdHMiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJzaW1pbGFyIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDEiLCJjcmVhdGVfbWFwcGVkJDEiLCJjcmVhdGVfd2l0aF9rZXkkMSIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQxIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQxIiwiZ3JvdXAkMSIsImhhc2hhYmxlX3MiLCJwb2x5X2hhc2hhYmxlIiwic3RyaWN0X2FkZCIsInN0cmljdF9hZGRfZXhuIiwic3RyaWN0X3JlbW92ZSIsInN0cmljdF9yZW1vdmVfZXhuIiwic2V4cF9vZl9lIiwibGFyZ2VyIiwic21hbGxlciIsIm9mX2hhc2h0Ymxfa2V5cyIsImhhc2h0YmwiLCJ0b19oYXNodGJsIiwiZV9vZl9zZXhwIiwiZXJyb3Jfc291cmNlXzAwNyIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwib2ZfaW50NjMiLCJpcm91bmRfbGJvdW5kIiwiaXJvdW5kX3Vib3VuZCIsImlyb3VuZF91cCIsImlyb3VuZF91cF9leG4iLCJpcm91bmRfZG93biIsImlyb3VuZF9kb3duX2V4biIsImlyb3VuZF90b3dhcmRzX3plcm8iLCJpcm91bmRfdG93YXJkc196ZXJvX2V4biIsInJvdW5kX25lYXJlc3RfbGIiLCJyb3VuZF9uZWFyZXN0X3ViIiwib25lX3VscF9sZXNzX3RoYW5faGFsZiIsImFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IiwiaXJvdW5kX25lYXJlc3RfMzIiLCJpcm91bmRfbmVhcmVzdF82NCIsInBpIiwic3FydF9waSIsInNxcnRfMnBpIiwiZXVsZXIiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzcXVhcmUiLCJmcmFjdGlvbmFsIiwiaW50ZWdyYWwiLCJyb3VuZF9uZWFyZXN0X2lubGluZSIsInJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIiwiY2VpbF9vcl9zdWNjIiwiZGlmZl9mbG9vciIsImRpZmZfY2VpbCIsImludDYzX3JvdW5kX2xib3VuZCIsImludDYzX3JvdW5kX3Vib3VuZCIsImludDYzX3JvdW5kX3VwX2V4biIsImludDYzX3JvdW5kX2Rvd25fZXhuIiwiaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hIiwiaW50NjNfcm91bmRfbmVhcmVzdF9leG4iLCJjbGFzc2lmeSIsInN0cmlwX3plcm8iLCJkZWNpbWFscyIsImV4cGxpY2l0X3BsdXMiLCJ0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG8iLCJraWxvIiwibWVnYSIsImdpZ2EiLCJ0ZXJhIiwicGV0YSIsIm1hZyIsIm51bWVyYXRvciIsImRlbm9taW5hdG9yIiwiaGlnaGVyIiwiZGlmZl9yaWdodCIsImRpZmZfbGVmdCIsInBldGEkMCIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZyIsInJvdW5kX2dlbiIsInNkIiwiZGQiLCJkZCQwIiwic2QkMCIsImRkJDEiLCJzZCQxIiwiYWJzX2RkIiwicm91bmRfc2lnbmlmaWNhbnQiLCJzaWduaWZpY2FudF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsIiwiZGVjaW1hbF9kaWdpdHMiLCJzaWduX2V4biIsInNpZ25fb3JfbmFuIiwiaWVlZV9uZWdhdGl2ZSIsIm1hbnRpc3NhX2JpdHMiLCJleHBvbmVudF9tYXNrNjQiLCJleHBvbmVudF9tYXNrIiwibWFudGlzc2FfbWFzayIsIm1hbnRpc3NhX21hc2s2NCIsImllZWVfZXhwb25lbnQiLCJpZWVlX21hbnRpc3NhIiwiY3JlYXRlX2llZWVfZXhuIiwibmVnYXRpdmUiLCJtYW50aXNzYSIsInNpZ25fYml0cyIsImV4cHRfYml0cyIsIm1hbnRfYml0cyIsImNyZWF0ZV9pZWVlIiwic3BlY2lhbGl6ZWRfaGFzaCIsImFkZF9zdWJzdHJpbmciLCJhZGRfc3ViYnl0ZXMiLCJjYW1sX2J1ZmZlcl9sZW5ndGgiLCJjYW1sX2J1ZmZlcl9ibGl0IiwiZWxpZGVkX21lc3NhZ2UiLCJlbGlkZSIsImF0X21vc3RfbnVtX2ZyYW1lcyIsInRvX3N0cmluZ19saXN0Iiwic2V0X3JlY29yZGluZyIsImFtX3JlY29yZGluZyIsIm1vc3RfcmVjZW50IiwibW9zdF9yZWNlbnRfZm9yX2V4biIsIndpdGhfcmVjb3JkaW5nIiwic2F2ZWQiLCJvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmEiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImdsb2JhbGl6ZV9mbG9hdCIsImZ1bmMkMSIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludCIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX2ludDMyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJnbG9iYWxpemVfaW50NjQiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZ2xvYmFsaXplX25hdGl2ZWludCIsImZ1bmMkNSIsIm5hdGl2ZWludF9vZl9zZXhwIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwib3B0aW9uX29mX3NleHAiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsImdsb2JhbGl6ZV9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwiZnVuYyQ2IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJmYWlsd2l0aCIsImludmFsaWRfYXJnIiwiY29tcGFyZV9hcnJheSQwIiwiZXF1YWxfYXJyYXkkMCIsImdsb2JhbGl6ZV9hcnJheSQwIiwiYXJyYXlfb2Zfc2V4cCQwIiwic2V4cF9vZl9hcnJheSQwIiwiYXJyYXlfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2Jvb2wkMCIsImVxdWFsX2Jvb2wkMCIsImdsb2JhbGl6ZV9ib29sJDAiLCJoYXNoX2ZvbGRfYm9vbCQwIiwiaGFzaF9ib29sJDAiLCJib29sX29mX3NleHAkMCIsInNleHBfb2ZfYm9vbCQwIiwiYm9vbF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfY2hhciQwIiwiZXF1YWxfY2hhciQwIiwiZ2xvYmFsaXplX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJnbG9iYWxpemVfZmxvYXQkMCIsImhhc2hfZm9sZF9mbG9hdCQwIiwiaGFzaF9mbG9hdCQwIiwiZmxvYXRfb2Zfc2V4cCQwIiwic2V4cF9vZl9mbG9hdCQwIiwiZmxvYXRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludCQwIiwiZXF1YWxfaW50JDAiLCJnbG9iYWxpemVfaW50JDAiLCJoYXNoX2ZvbGRfaW50JDAiLCJoYXNoX2ludCQwIiwiaW50X29mX3NleHAkMCIsInNleHBfb2ZfaW50JDAiLCJpbnRfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDMyJDAiLCJlcXVhbF9pbnQzMiQwIiwiZ2xvYmFsaXplX2ludDMyJDAiLCJoYXNoX2ZvbGRfaW50MzIkMCIsImhhc2hfaW50MzIkMCIsImludDMyX29mX3NleHAkMCIsInNleHBfb2ZfaW50MzIkMCIsImludDMyX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQ2NCQwIiwiZXF1YWxfaW50NjQkMCIsImdsb2JhbGl6ZV9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiZ2xvYmFsaXplX2xpc3QkMCIsImhhc2hfZm9sZF9saXN0JDAiLCJsaXN0X29mX3NleHAkMCIsInNleHBfb2ZfbGlzdCQwIiwibGlzdF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbmF0aXZlaW50JDAiLCJlcXVhbF9uYXRpdmVpbnQkMCIsImdsb2JhbGl6ZV9uYXRpdmVpbnQkMCIsImhhc2hfZm9sZF9uYXRpdmVpbnQkMCIsImhhc2hfbmF0aXZlaW50JDAiLCJuYXRpdmVpbnRfb2Zfc2V4cCQwIiwic2V4cF9vZl9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfb3B0aW9uJDAiLCJlcXVhbF9vcHRpb24kMCIsImdsb2JhbGl6ZV9vcHRpb24kMCIsImhhc2hfZm9sZF9vcHRpb24kMCIsIm9wdGlvbl9vZl9zZXhwJDAiLCJzZXhwX29mX29wdGlvbiQwIiwib3B0aW9uX3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9yZWYkMCIsImVxdWFsX3JlZiQwIiwiZ2xvYmFsaXplX3JlZiQwIiwicmVmX29mX3NleHAkMCIsInNleHBfb2ZfcmVmJDAiLCJyZWZfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3N0cmluZyQwIiwiZXF1YWxfc3RyaW5nJDAiLCJnbG9iYWxpemVfc3RyaW5nJDAiLCJoYXNoX2ZvbGRfc3RyaW5nJDAiLCJoYXNoX3N0cmluZyQwIiwic3RyaW5nX29mX3NleHAkMCIsInNleHBfb2Zfc3RyaW5nJDAiLCJzdHJpbmdfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2J5dGVzJDAiLCJlcXVhbF9ieXRlcyQwIiwiZ2xvYmFsaXplX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiZ2xvYmFsaXplX3VuaXQkMCIsImhhc2hfZm9sZF91bml0JDAiLCJoYXNoX3VuaXQkMCIsInVuaXRfb2Zfc2V4cCQwIiwic2V4cF9vZl91bml0JDAiLCJ1bml0X3NleHBfZ3JhbW1hciQwIiwicmFpc2VfcyQwIiwidG9fc3RyaW5nIiwibWFwIiwiZiIsIm8iLCJ2Iiwic2V0X2lucHV0X25hbWUiLCJuYW1lIiwic2V0X2lucHV0X2xleGJ1ZiIsImxleGJ1Zl9vcHQiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInByaW50X2xvbmdpZGVudCIsImxvbmdwcmVmaXgiLCJzJDAiLCJ5IiwibG9uZ2lkZW50X2xvYyIsImNvbnN0YW50IiwiaSIsIm0iLCJpJDAiLCJpJDEiLCJkZWxpbSIsImkkMiIsIm0kMCIsIm11dGFibGVfZmxhZyIsInZpcnR1YWxfZmxhZyIsInJlY19mbGFnIiwicmYiLCJub25yZWNfZmxhZyIsImRpcmVjdGlvbl9mbGFnIiwicHJpdmF0ZV9mbGFnIiwiY29uc3RhbnRfc3RyaW5nIiwidHl2YXIiLCJ0eXZhcl9sb2MiLCJzdHJpbmdfcXVvdCIsImNsYXNzX3BhcmFtc19kZWYiLCJsIiwidHlwZV9wYXJhbSIsInR5cGVfd2l0aF9sYWJlbCIsImxhYmVsIiwiY29yZV90eXBlMSIsImNvcmVfdHlwZSIsImF0dHJpYnV0ZXMiLCJjdDIiLCJjdDEiLCJjdCIsInNsIiwiY3QkMCIsImN0JDEiLCJsJDAiLCJsaSIsImwkMSIsImNvcmVfZmllbGRfdHlwZSIsImZpZWxkX3ZhciIsImwkMiIsImxpJDAiLCJsb3ciLCJjbG9zZWQiLCJsJDMiLCJmaXJzdF9pc19pbmhlcml0IiwidHlwZV92YXJpYW50X2hlbHBlciIsImN0bCIsImNzdHJzIiwibGlkIiwiYXV4IiwiZXh0ZW5zaW9uIiwicGF0dGVybiQxIiwicGF0dGVybiIsInAiLCJwMiIsInAxIiwib3JwYXRzIiwicGF0dGVybjEiLCJwYXR0ZXJuMSQwIiwicGF0dGVybl9saXN0X2hlbHBlciIsInBhdDIiLCJwYXQxIiwic2ltcGxlX3BhdHRlcm4iLCJzaW1wbGVfcGF0dGVybiQwIiwicG8iLCJ2bCIsImMyIiwiYzEiLCJsb25naWRlbnRfeF9wYXR0ZXJuIiwicCQwIiwicCQxIiwicCQyIiwid2l0aF9wYXJlbiIsImxhYmVsX2V4cCIsIm9wdCIsInJlc3QiLCJ0eHQkMCIsIm8kMCIsInN1Z2FyX2V4cHIiLCJhcmdzIiwiaWQiLCJsYWIiLCJwcmludF9pbmRleG9wIiwicGF0aF9wcmVmaXgiLCJhc3NpZ24iLCJsZWZ0IiwicHJpbnRfaW5kZXgiLCJpbmRpY2VzIiwicmVtX2FyZ3MiLCJwcmludF9wYXRoIiwic2ltcGxlX2V4cHIiLCJlJDAiLCJwYXRoIiwiZnVuYyIsIm90aGVyX2FyZ3MiLCJhJDAiLCJhc3NpZ24kMCIsInJlc3QkMCIsInJlc3QkMSIsInJlc3QkMiIsImluZGV4ZXMiLCJyZXN0JDMiLCJpMyIsImkyIiwiaTEiLCJyZXN0JDQiLCJpMiQwIiwiaTEkMCIsInJlc3QkNSIsImkxJDEiLCJtdWx0aV9pbmRpY2VzIiwibiIsImtpbmQiLCJyaWdodCQwIiwibGVmdCQwIiwibCQ1IiwiZSQ3IiwiYXJnMSIsImFyZzIiLCJsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0iLCJzJDEiLCJzJDIiLCJleHByZXNzaW9uMiIsImVvJDAiLCJlbyQxIiwibCQ2IiwiZTIkMSIsImUxJDEiLCJsaSQxIiwiZSQ4IiwicyQzIiwibCQ3Iiwic3RyaW5nX3hfZXhwcmVzc2lvbiIsImUkOSIsImUkMTAiLCJlJDExIiwiZSQxMiIsImNhc2VfbGlzdCIsImUwIiwiZSQxIiwibCQ0IiwiZSQyIiwiZSQzIiwibWUiLCJtb2R1bGVfZXhwciIsImUkNCIsImNkIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiZSQ1IiwiZSQ2IiwiYm9keSIsImFuZHMiLCJsZXQkMCIsImJpbmRpbmdfb3AiLCJlbyIsImUyIiwiZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIiwiZTIkMCIsImUxJDAiLCJsc3QiLCJiaW5kaW5ncyIsImNzIiwiY2xhc3Nfc3RydWN0dXJlIiwiZXhwcmVzc2lvbjIkMCIsInNpbXBsZV9leHByJDAiLCJsb25naWRlbnRfeF9leHByZXNzaW9uIiwiZTMiLCJkZiIsImV4cHJlc3Npb24iLCJjdG8xIiwicGF5bG9hZCIsIml0ZW1fYXR0cmlidXRlcyIsImZsb2F0aW5nX2F0dHJpYnV0ZSIsInZhbHVlX2Rlc2NyaXB0aW9uIiwiaXRlbV9leHRlbnNpb24iLCJleGNlcHRpb25fZGVjbGFyYXRpb24iLCJjbGFzc190eXBlX2ZpZWxkIiwiY2xhc3NfdHlwZSIsInZmIiwibWYiLCJ2ZiQwIiwicGYiLCJjbGFzc19zaWduYXR1cmUiLCJjbCIsImNvIiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IiwiY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImt3ZCIsImNsYXNzX2ZpZWxkIiwic28iLCJjZSIsIm92ZiIsImNsYXNzX2V4cHIiLCJvdmYkMCIsIm92ZiQxIiwiYmluZCIsImJpbmRpbmciLCJjZSQwIiwiY2UkMSIsIm1vZHVsZV90eXBlJDEiLCJtb2R1bGVfdHlwZSIsIm10MiQwIiwibXQyIiwibXQxIiwibW9kdWxlX3R5cGUxIiwibXQiLCJ0ZCIsImxzJDAiLCJ0eXBlX2RlY2xhcmF0aW9uIiwibGkyIiwibXR5IiwibXR5JDAiLCJsaSQyIiwidGQkMCIsImxzJDEiLCJsaSQzIiwibHMkMiIsImxpMiQwIiwibGkkNCIsIm1vZHVsZV90eXBlMSQwIiwic2lnbmF0dXJlX2l0ZW0iLCJzaWduYXR1cmUiLCJ2ZCIsImludHJvIiwidHlwZV9kZWZfbGlzdCIsInRlIiwidHlwZV9leHRlbnNpb24iLCJlZCIsInBtZCIsImFsaWFzIiwicG1zIiwiZGVjbHMiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsIm1pZ3JhdGlvbl9lcnJvciIsIm1pc3NpbmdfZmVhdHVyZSIsIm1rX2dob3N0X2F0dHIiLCJjb25jYXRfbGlzdF9saXQiLCJhcmdfZXhwciIsImhkIiwibWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGgiLCJoaWRkZW4iLCJ2aXNpYmxlIiwibWlncmF0aW9uX2F0dHIiLCJleHByJDAiLCJtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyIsImZpZWxkcyIsImxpZGVudF9sb2MiLCJtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQiLCJzdHJpIiwibmV3X2ZpZWxkcyIsIm5ld19leHByIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJ4MCIsImNvcHlfc3RydWN0dXJlIiwieDAkMCIsImNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIiwicGRpcl9sb2MiLCJjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCIsImNvcHlfbG9jIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MiLCJ4MSIsIngwJDEiLCJjb3B5X0xvbmdpZGVudF90IiwieDAkMiIsImNvcHlfZXhwcmVzc2lvbiIsInBleHBfYXR0cmlidXRlcyIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9sb2MiLCJwZXhwX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZXMiLCJjb3B5X2xvY2F0aW9uX3N0YWNrIiwiY29weV9leHByZXNzaW9uX2Rlc2MiLCJjb3B5X2NvbnN0YW50IiwieDIiLCJjb3B5X3ZhbHVlX2JpbmRpbmciLCJjb3B5X3JlY19mbGFnIiwidGNvbnN0cmFpbnQiLCJwYXJhbXMiLCJhdHRyIiwiZXhwciQzIiwiY2FzZXMiLCJjb3B5X2Nhc2UiLCJjb3B5X2NvcmVfdHlwZSIsImMxJDAiLCJleHByJDEiLCJleHByJDIiLCJwYXJhbSIsInBwYXJhbV9sb2MiLCJleHAwIiwiY29weV9wYXR0ZXJuIiwiY29weV9hcmdfbGFiZWwiLCJwZXhwX2Rlc2MkMCIsIngxJDAiLCJ4MSQxIiwieDAkMyIsIngxJDIiLCJ4MCQ0IiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDEkNCIsIngwJDciLCJ4MSQ1IiwieDAkOCIsIngxJDYiLCJ4MCQ5IiwieDIkMCIsIngxJDciLCJ4MCQxMCIsIngwJDExIiwieDIkMSIsIngxJDgiLCJ4MCQxMiIsIngxJDkiLCJ4MCQxMyIsIngxJDEwIiwieDAkMTQiLCJ4NCIsIngzIiwieDIkMiIsIngxJDExIiwieDAkMTUiLCJjb3B5X2RpcmVjdGlvbl9mbGFnIiwieDEkMTIiLCJ4MCQxNiIsIngyJDMiLCJ4MSQxMyIsIngwJDE3IiwieDEkMTQiLCJ4MCQxOCIsImNvcHlfbGFiZWwiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJ4MCQyMSIsIngyJDQiLCJ4MSQxNiIsIngwJDIyIiwiY29weV9tb2R1bGVfZXhwciIsIngxJDE3IiwieDAkMjMiLCJjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciIsIngwJDI0IiwieDAkMjUiLCJ4MSQxOCIsIngwJDI2IiwieDAkMjciLCJjb3B5X2NsYXNzX3N0cnVjdHVyZSIsIngxJDE5IiwieDAkMjgiLCJ4MCQyOSIsIngxJDIwIiwieDAkMzAiLCJjb3B5X29wZW5faW5mb3MiLCJ4MCQzMSIsImNvcHlfbGV0b3AiLCJ4MCQzMiIsImNvcHlfZXh0ZW5zaW9uIiwiY29weV9iaW5kaW5nX29wIiwicGJvcF9sb2MiLCJwYm9wX2V4cCIsInBib3BfcGF0IiwicGJvcF9vcCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9jb25zdHJhaW50IiwicHZiX2V4cHIiLCJwdmJfcGF0IiwiY29weV92YWx1ZV9jb25zdHJhaW50IiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsImNvcHlfcGF0dGVybl9kZXNjIiwiY29weV9jbG9zZWRfZmxhZyIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsImNvZXJjaW9uIiwiZ3JvdW5kIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X2xvY2F0aW9uIiwiY29weV9vYmplY3RfZmllbGQiLCJjb3B5X3Jvd19maWVsZCIsImNvcHlfcGFja2FnZV90eXBlIiwicHJmX2F0dHJpYnV0ZXMiLCJwcmZfbG9jIiwiY29weV9yb3dfZmllbGRfZGVzYyIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsImNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MiLCJjb3B5X2F0dHJpYnV0ZSIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiY29weV9wYXlsb2FkIiwiY29weV9zaWduYXR1cmUiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MiLCJjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9leGNlcHRpb24iLCJjb3B5X21vZHVsZV9iaW5kaW5nIiwiY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X2luY2x1ZGVfaW5mb3MiLCJjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24iLCJjb3B5X2NsYXNzX2luZm9zIiwiY29weV9jbGFzc19leHByIiwicGNsX2F0dHJpYnV0ZXMiLCJwY2xfbG9jIiwicGNsX2Rlc2MiLCJjb3B5X2NsYXNzX2V4cHJfZGVzYyIsImNvcHlfY2xhc3NfdHlwZSIsImNvcHlfb3Blbl9kZXNjcmlwdGlvbiIsInBjc3RyX2ZpZWxkcyIsInBjc3RyX3NlbGYiLCJjb3B5X2NsYXNzX2ZpZWxkIiwicGNmX2F0dHJpYnV0ZXMiLCJwY2ZfbG9jIiwicGNmX2Rlc2MiLCJjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MiLCJjb3B5X292ZXJyaWRlX2ZsYWciLCJjb3B5X2NsYXNzX2ZpZWxkX2tpbmQiLCJjb3B5X211dGFibGVfZmxhZyIsImNvcHlfcHJpdmF0ZV9mbGFnIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwiY29weV9tb2R1bGVfZXhwcl9kZXNjIiwiY29weV9mdW5jdG9yX3BhcmFtZXRlciIsImNvcHlfbW9kdWxlX3R5cGUiLCJwbXR5X2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfZGVzYyIsImNvcHlfbW9kdWxlX3R5cGVfZGVzYyIsImNvcHlfd2l0aF9jb25zdHJhaW50IiwiY29weV9zaWduYXR1cmVfaXRlbSIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwiY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIiwiY29weV9tb2R1bGVfZGVjbGFyYXRpb24iLCJjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24iLCJjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJjb3B5X2NsYXNzX3R5cGVfZGVzYyIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwiY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MiLCJjb3B5X3ZpcnR1YWxfZmxhZyIsIngzJDAiLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsImNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwiZXh0cmFjdF9hdHRyIiwicSIsIm90aGVyX2F0dHJzIiwib3B0X2RlZmF1bHQiLCJhcmdfbGFiZWwiLCJ0YWtlX2JvZHkiLCJhcmdfbGFiZWwkMSIsIm9wdF9kZWZhdWx0JDEiLCJwYXQkMSIsInBwYXJhbV9kZXNjIiwiYWNjJDEiLCJhcmdfbGlzdCIsImMyJDAiLCJ0eXBlX2NvbnN0cmFpbnQiLCJvcHRfZGVmYXVsdCQwIiwiYXJnX2xhYmVsJDAiLCJ4MCQzMyIsIngyJDUiLCJ4MSQyMSIsIngwJDM0IiwibWVyZ2VfbG9jIiwiZ2hvc3RfbG9jIiwiZ2hvc3RfY29uc3RyYWludCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiQwIiwicHR5cF9sb2MkMCIsInR5cCQzIiwicHZiX3BhdCQzIiwiZ3JvdW5kJDAiLCJwZXhwX2xvYyQwIiwicHZiX2V4cHIkMyIsInB2Yl9leHByJDEiLCJwdmJfcGF0JDEiLCJ0eXAkMiIsInR5cCQxIiwidHlwX3BvbHkiLCJwdmJfcGF0JDIiLCJwdmJfZXhwciQyIiwidmFyJDAiLCJsb2MkMCIsImVtcHR5X3N0cnVjdCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJjb3B5X3Bvc2l0aW9uIiwicG9zX2NudW0iLCJwb3NfYm9sIiwicG9zX2xudW0iLCJwb3NfZm5hbWUiLCJyZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIiwidHlfZXh0IiwicnQkMCIsInZhbHVlX3BhdHRlcm4iLCJ2YWx1ZV9leHAiLCJpbm5lcl9lIiwiZXh0ZXJuX2N0IiwiZXh0ZXJuX2N0JDAiLCJwdF90eXZhcnMkMCIsIndpdGhfY29uc3RyYWludCIsInR5X3ZhcnMiLCJwdmJfY29uc3RyYWludCQwIiwiY29lcmNlIiwiZ3IiLCJwdmJfY29uc3RyYWludCQxIiwiaXNfdW5pdCIsImNvcHlfZXhwciIsImNvcHlfY2FzZXMiLCJjb3B5X3BhdCIsImNvcHlfdHlwIiwibWFwX29wdGlvbiIsImNvcHlfb3B0aW9uIiwiY29weV9ib29sIiwiY29weV9sb25naWRlbnQiLCJ4MF9sb2MiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwid3JhcCIsImN0eSIsImxvYyQxIiwibm9sb2MiLCJmcm9tX2xvYyIsInBvcyIsImluamVjdF9wcmVkZWZfb3B0aW9uIiwiZCIsImlkZW50IiwidHlwZV9kZWNsYXJhdGlvbnMiLCJyZWNmbGFnIiwidHlwZXMiLCJleHRyYWN0X3ByZWRlZl9vcHRpb24iLCJpc19ub25yZWMiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImkkMCIsImludDMyIiwic3VmZml4JDAiLCJpbnQ2NCIsIm5hdGl2ZWludCIsImZsb2F0JDAiLCJjaGFyJDAiLCJjIiwic3RyaW5nIiwicXVvdGF0aW9uX2RlbGltaXRlciIsInMiLCJsb2MiLCJtayIsIm5hbWUiLCJwYXlsb2FkIiwibWskMCIsImQiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwidHJ5JDAiLCJ0dXBsZSQxIiwiY29uc3RydWN0JDAiLCJ2YXJpYW50JDEiLCJyZWNvcmQkMCIsInNldGZpZWxkIiwiYXJyYXkkMCIsImlmdGhlbmVsc2UiLCJzZXF1ZW5jZSIsIndoaWxlJDAiLCJmb3IkMCIsImNvbnN0cmFpbnQkMCIsImNvZXJjZSIsInNlbmQiLCJuZXckMCIsInNldGluc3R2YXIiLCJvdmVycmlkZSIsImxldG1vZHVsZSIsImxldGV4Y2VwdGlvbiIsImFzc2VydCIsImxhenkkMCIsInBvbHkkMCIsIm9iamVjdCQwIiwibmV3dHlwZSIsInBhY2siLCJvcGVuJDAiLCJsZXRvcCIsImFuZHMiLCJib2R5IiwiZXh0ZW5zaW9uJDEiLCJ1bnJlYWNoYWJsZSIsImNhc2UkMCIsImxocyIsImd1YXJkIiwicmhzIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwibWskMyIsImF0dHIkMiIsImlkZW50JDAiLCJhbGlhcyQxIiwic2lnbmF0dXJlIiwiZnVuY3RvciIsIndpdGgkMCIsInR5cGVvZiQwIiwiZXh0ZW5zaW9uJDIiLCJtayQ0IiwiYXR0ciQzIiwiaWRlbnQkMSIsInN0cnVjdHVyZSIsImZ1bmN0b3IkMCIsImFwcGx5JDAiLCJtMSIsIm0yIiwiY29uc3RyYWludCQxIiwibSIsIm10eSIsInVucGFjayQwIiwiZXh0ZW5zaW9uJDMiLCJtayQ1IiwidmFsdWUiLCJ0eXBlJDAiLCJyZWNfZmxhZyIsInR5cGVfc3Vic3QiLCJ0eXBlX2V4dGVuc2lvbiIsImV4Y2VwdGlvbiQwIiwibW9kdWxlIiwibW9kX3N1YnN0IiwicmVjX21vZHVsZSIsIm1vZHR5cGUiLCJvcGVuJDEiLCJpbmNsdWRlIiwiY2xhc3MkMSIsImNsYXNzX3R5cGUiLCJleHRlbnNpb24kNCIsImF0dHJpYnV0ZSIsIm1rJDYiLCJldmFsJDAiLCJ2YWx1ZSQwIiwicHJpbWl0aXZlIiwidHlwZSQxIiwidHlwZV9leHRlbnNpb24kMCIsImV4Y2VwdGlvbiQxIiwibW9kdWxlJDAiLCJyZWNfbW9kdWxlJDAiLCJtb2R0eXBlJDAiLCJvcGVuJDIiLCJjbGFzcyQyIiwiY2xhc3NfdHlwZSQwIiwiaW5jbHVkZSQwIiwiZXh0ZW5zaW9uJDUiLCJhdHRyaWJ1dGUkMCIsIm1rJDciLCJhdHRyJDQiLCJjb25zdHIkMCIsInN0cnVjdHVyZSQwIiwiZnVuJDAiLCJhcHBseSQxIiwibGV0JDEiLCJjb25zdHJhaW50JDIiLCJleHRlbnNpb24kNiIsIm9wZW4kMyIsIm1rJDgiLCJhdHRyJDUiLCJjb25zdHIkMSIsInNpZ25hdHVyZSQwIiwiYXJyb3ckMCIsImV4dGVuc2lvbiQ3Iiwib3BlbiQ0IiwibWskOSIsImluaGVyaXQiLCJ2YWwiLCJtZXRob2QiLCJjb25zdHJhaW50JDMiLCJleHRlbnNpb24kOCIsImF0dHJpYnV0ZSQxIiwiYXR0ciQ2IiwibWskMTAiLCJpbmhlcml0JDAiLCJ2YWwkMCIsIm1ldGhvZCQwIiwiY29uc3RyYWludCQ0IiwiaW5pdGlhbGl6ZXIiLCJleHRlbnNpb24kOSIsImF0dHJpYnV0ZSQyIiwidmlydHVhbCIsImN0IiwiY29uY3JldGUiLCJhdHRyJDciLCJtayQxMSIsInByaW0iLCJtayQxMiIsIm1rJDEzIiwic3luIiwibWskMTQiLCJtayQxNSIsImV4cHIiLCJtayQxNiIsIm1rJDE3IiwibWV4cHIiLCJtayQxOCIsIm1rJDE5IiwidmlydCIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsImtpbmQiLCJwcml2IiwiY29uc3RydWN0b3IiLCJyZXMiLCJ2YXJzIiwiYXJncyIsImZpZWxkJDAiLCJtdXQiLCJtayQyMSIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJta19leGNlcHRpb24iLCJjb25zdHJ1Y3RvciQwIiwiZGVjbCIsInJlYmluZCIsImxpZCIsIm1rJDIyIiwic2VsZiIsImZpZWxkcyIsIm1rJDIzIiwibWskMjQiLCJ0YWciLCJjb25zdCQwIiwidHlzIiwiaW5oZXJpdCQxIiwidHkiLCJtayQyNSIsInRhZyQwIiwiaW5oZXJpdCQyIiwic3RyaW5nX3ZlcnNpb24iLCJzdHJpbmdfdmVyc2lvbiQwIiwic3RyaW5nX3ZlcnNpb24kMSIsInN0cmluZ192ZXJzaW9uJDIiLCJzdHJpbmdfdmVyc2lvbiQzIiwic3RyaW5nX3ZlcnNpb24kNCIsInN0cmluZ192ZXJzaW9uJDUiLCJzdHJpbmdfdmVyc2lvbiQ2Iiwic3RyaW5nX3ZlcnNpb24kNyIsInN0cmluZ192ZXJzaW9uJDgiLCJzdHJpbmdfdmVyc2lvbiQ5Iiwic3RyaW5nX3ZlcnNpb24kMTAiLCJzdHJpbmdfdmVyc2lvbiQxMSIsInN0cmluZ192ZXJzaW9uJDEyIiwic3RyaW5nX3ZlcnNpb24kMTMiLCJzdHJpbmdfdmVyc2lvbiQxNCIsIm1pZ3JhdGlvbl9pbmZvIiwiaWQiLCJtaWdyYXRpb25faWRlbnRpdHkiLCJjb21wb3NlIiwiZyIsIm1pZ3JhdGlvbl9mdW5jdGlvbnMiLCJpc191bmRlZmluZWQiLCJpbW1lZGlhdGVfbWlncmF0aW9uIiwiQSIsImRpcmVjdGlvbiIsInZlcnNpb24iLCJ0byIsImZ1bnMiLCJCIiwibSQxIiwiVG8iLCJhYiIsInRvMiIsImJjIiwibSQwIiwiY29weV9zdHJ1Y3R1cmVfaXRlbSIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJjb3B5X21vZHVsZV90eXBlIiwiY29weV9tb2R1bGVfZXhwciIsImNvcHlfY2xhc3NfdHlwZV9maWVsZCIsImNvcHlfY2xhc3Nfc2lnbmF0dXJlIiwiY29weV9jbGFzc190eXBlIiwiY29weV9jbGFzc19maWVsZCIsImNvcHlfY2xhc3NfZXhwciIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwiY29weV90eXBlX2V4dGVuc2lvbiIsImNvcHlfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfY2FzZSIsImNvcHlfcGF0dGVybiIsImNvcHlfZXhwcmVzc2lvbiIsImNvcHlfY29yZV90eXBlIiwiY29weV90b3BsZXZlbF9waHJhc2UiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlIiwibWlncmF0aW9uX2luZm8kMCIsInZlcnNpb24kMCIsIm1pZ3JhdGlvbl9pbmZvJDEiLCJ2ZXJzaW9uJDEiLCJtaWdyYXRpb25faW5mbyQyIiwidmVyc2lvbiQyIiwibWlncmF0aW9uX2luZm8kMyIsInZlcnNpb24kMyIsIm1pZ3JhdGlvbl9pbmZvJDQiLCJ2ZXJzaW9uJDQiLCJtaWdyYXRpb25faW5mbyQ1IiwidmVyc2lvbiQ1IiwibWlncmF0aW9uX2luZm8kNiIsInZlcnNpb24kNiIsIm1pZ3JhdGlvbl9pbmZvJDciLCJ2ZXJzaW9uJDciLCJtaWdyYXRpb25faW5mbyQ4IiwidmVyc2lvbiQ4IiwibWlncmF0aW9uX2luZm8kOSIsInZlcnNpb24kOSIsIm1pZ3JhdGlvbl9pbmZvJDEwIiwidmVyc2lvbiQxMCIsIm1pZ3JhdGlvbl9pbmZvJDExIiwidmVyc2lvbiQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwidmVyc2lvbiQxMiIsIm1pZ3JhdGlvbl9pbmZvJDEzIiwidmVyc2lvbiQxMyIsIm1pZ3JhdGlvbl9pbmZvJDE0IiwidmVyc2lvbiQxNCIsImFsbF92ZXJzaW9ucyIsImZyb21fbWFnaWMiLCJtYWdpYyIsImFsbF92ZXJzaW9uc190b3BfZG93biIsInRhaWwiLCJWZXJzaW9uIiwib2Zfb2NhbWwiLCJub2RlIiwieSIsInRvX29jYW1sIiwib2Zfb2NhbWxfbWFwcGVyIiwiaXRlbSIsImN0eHQiLCJ0b19vY2FtbF9tYXBwZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxleGJ1ZiIsImludGVyZmFjZSQwIiwidG9wbGV2ZWxfcGhyYXNlIiwidXNlX2ZpbGUiLCJleHByZXNzaW9uIiwicGF0dGVybiIsImRlZmF1bHRfcHJpbnRfd2FybmluZyIsImFib3V0X2l0ZV9icmFuY2hfcmVmIiwiY2FyZV9hYm91dF9pdGVfYnJhbmNoIiwiYWJvdXRfaXRlX2JyYW5jaCIsInNlbGZfMSIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2ZuYW1lJDAiLCJwb3NfbG51bSQwIiwicG9zX2JvbCQwIiwicG9zX2NudW0kMCIsImxvY19naG9zdCIsImxvY19lbmQiLCJsb2Nfc3RhcnQiLCJsb2Nfc3RhcnQkMCIsImxvY19lbmQkMCIsImxvY19naG9zdCQwIiwidHh0IiwidHh0JDAiLCJsb2MkMCIsImEkMCIsImEkMSIsImEkMiIsImIkMCIsImIkMSIsImEkMyIsImEkNCIsImIkMiIsImMkMCIsImIkMyIsImEkNSIsImEkNiIsImIkNCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfbG9jIiwicHR5cF9kZXNjIiwicHR5cF9kZXNjJDAiLCJwdHlwX2xvYyQwIiwicHR5cF9sb2Nfc3RhY2skMCIsInB0eXBfYXR0cmlidXRlcyQwIiwiYSQ3IiwiYSQ4IiwiYiQ1IiwiYSQ5IiwiYSQxMCIsImIkNiIsImIkNyIsImEkMTEiLCJhJDEyIiwiYiQ4IiwiYyQxIiwiYiQ5IiwiYSQxMyIsImEkMTQiLCJiJDEwIiwiYyQyIiwiYiQxMSIsImEkMTUiLCJhJDE2IiwiYiQxMiIsImEkMTciLCJhJDE4IiwiYSQxOSIsImEkMjAiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJwcmZfZGVzYyQwIiwicHJmX2xvYyQwIiwicHJmX2F0dHJpYnV0ZXMkMCIsInBvZl9hdHRyaWJ1dGVzIiwicG9mX2xvYyIsInBvZl9kZXNjJDAiLCJwb2ZfbG9jJDAiLCJwb2ZfYXR0cmlidXRlcyQwIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2xvYyIsInBwYXRfZGVzYyIsInBwYXRfZGVzYyQwIiwicHBhdF9sb2MkMCIsInBwYXRfbG9jX3N0YWNrJDAiLCJwcGF0X2F0dHJpYnV0ZXMkMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImEkMjciLCJhJDI4IiwiYSQyOSIsImEkMzAiLCJiJDEzIiwiYSQzMSIsImEkMzIiLCJiJDE0IiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsImQkMCIsImIkMTUiLCJiJDE2IiwiYyQzIiwiYiQxNyIsImIkMTgiLCJjJDQiLCJjJDUiLCJiJDE5IiwiYiQyMCIsImMkNiIsImIkMjEiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImQkMSIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJkJDIiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImFuZHMkMCIsImJvZHkkMCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwYm9wX29wJDAiLCJwYm9wX3BhdCQwIiwicGJvcF9leHAkMCIsInBib3BfbG9jJDAiLCJwdmFsX2xvYyIsInB2YWxfYXR0cmlidXRlcyIsInB2YWxfcHJpbSIsInB2YWxfdHlwZSIsInB2YWxfbmFtZSIsInB2YWxfbmFtZSQwIiwicHZhbF90eXBlJDAiLCJwdmFsX3ByaW0kMCIsInB2YWxfYXR0cmlidXRlcyQwIiwicHZhbF9sb2MkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMiLCJwdHlleHRfbG9jIiwicHR5ZXh0X3ByaXZhdGUiLCJwdHlleHRfY29uc3RydWN0b3JzIiwicHR5ZXh0X3BhcmFtcyIsInB0eWV4dF9wYXRoIiwicHR5ZXh0X3BhdGgkMCIsInB0eWV4dF9wYXJhbXMkMCIsInB0eWV4dF9jb25zdHJ1Y3RvcnMkMCIsInB0eWV4dF9wcml2YXRlJDAiLCJwdHlleHRfbG9jJDAiLCJwdHlleHRfYXR0cmlidXRlcyQwIiwicGV4dF9hdHRyaWJ1dGVzIiwicGV4dF9sb2MiLCJwZXh0X2tpbmQiLCJwZXh0X25hbWUiLCJwZXh0X25hbWUkMCIsInBleHRfa2luZCQwIiwicGV4dF9sb2MkMCIsInBleHRfYXR0cmlidXRlcyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMiLCJwdHlleG5fbG9jIiwicHR5ZXhuX2NvbnN0cnVjdG9yIiwicHR5ZXhuX2NvbnN0cnVjdG9yJDAiLCJwdHlleG5fbG9jJDAiLCJwdHlleG5fYXR0cmlidXRlcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJwY3NpZ19zZWxmJDAiLCJwY3NpZ19maWVsZHMkMCIsInBjdGZfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9kZXNjIiwicGN0Zl9kZXNjJDAiLCJwY3RmX2xvYyQwIiwicGN0Zl9hdHRyaWJ1dGVzJDAiLCJwY2lfYXR0cmlidXRlcyIsInBjaV9sb2MiLCJwY2lfZXhwciIsInBjaV9uYW1lIiwicGNpX3BhcmFtcyIsInBjaV92aXJ0IiwicGNpX3ZpcnQkMCIsInBjaV9wYXJhbXMkMCIsInBjaV9uYW1lJDAiLCJwY2lfZXhwciQwIiwicGNpX2xvYyQwIiwicGNpX2F0dHJpYnV0ZXMkMCIsInBjbF9hdHRyaWJ1dGVzIiwicGNsX2xvYyIsInBjbF9kZXNjIiwicGNsX2Rlc2MkMCIsInBjbF9sb2MkMCIsInBjbF9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsInBjZl9kZXNjJDAiLCJwY2ZfbG9jJDAiLCJwY2ZfYXR0cmlidXRlcyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG1kX2xvYyIsInBtZF9hdHRyaWJ1dGVzIiwicG1kX3R5cGUiLCJwbWRfbmFtZSIsInBtZF9uYW1lJDAiLCJwbWRfdHlwZSQwIiwicG1kX2F0dHJpYnV0ZXMkMCIsInBtZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMiLCJwb3Blbl9sb2MiLCJwb3Blbl9vdmVycmlkZSIsInBvcGVuX2V4cHIiLCJwb3Blbl9leHByJDAiLCJwb3Blbl9vdmVycmlkZSQwIiwicG9wZW5fbG9jJDAiLCJwb3Blbl9hdHRyaWJ1dGVzJDAiLCJwaW5jbF9hdHRyaWJ1dGVzIiwicGluY2xfbG9jIiwicGluY2xfbW9kIiwicGluY2xfbW9kJDAiLCJwaW5jbF9sb2MkMCIsInBpbmNsX2F0dHJpYnV0ZXMkMCIsInBtb2RfYXR0cmlidXRlcyIsInBtb2RfbG9jIiwicG1vZF9kZXNjIiwicG1vZF9kZXNjJDAiLCJwbW9kX2xvYyQwIiwicG1vZF9hdHRyaWJ1dGVzJDAiLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsInBzdHJfZGVzYyQwIiwicHN0cl9sb2MkMCIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwicG1iX2xvYyIsInBtYl9hdHRyaWJ1dGVzIiwicG1iX2V4cHIiLCJwbWJfbmFtZSIsInBtYl9uYW1lJDAiLCJwbWJfZXhwciQwIiwicG1iX2F0dHJpYnV0ZXMkMCIsInBtYl9sb2MkMCIsInBkaXJfbG9jIiwicGRpcl9hcmciLCJwZGlyX25hbWUiLCJwZGlyX25hbWUkMCIsInBkaXJfYXJnJDAiLCJwZGlyX2xvYyQwIiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwic2VsZl8yIiwic2VsZl8zIiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImFjYyQ1IiwiYWNjJDYiLCJhY2MkNyIsImFjYyQ4IiwiYWNjJDkiLCJhY2MkMTAiLCJhY2MkMTEiLCJhY2MkMTIiLCJhY2MkMTMiLCJhY2MkMTQiLCJhY2MkMTUiLCJhY2MkMTYiLCJhY2MkMTciLCJhY2MkMTgiLCJhY2MkMTkiLCJhY2MkMjAiLCJhY2MkMjEiLCJhY2MkMjIiLCJhY2MkMjMiLCJhY2MkMjQiLCJhY2MkMjUiLCJhY2MkMjYiLCJhY2MkMjciLCJhY2MkMjgiLCJhY2MkMjkiLCJhY2MkMzAiLCJhY2MkMzEiLCJhY2MkMzIiLCJhY2MkMzMiLCJhY2MkMzQiLCJhY2MkMzUiLCJhY2MkMzYiLCJhY2MkMzciLCJhY2MkMzgiLCJhY2MkMzkiLCJhY2MkNDAiLCJhY2MkNDEiLCJhY2MkNDIiLCJhY2MkNDMiLCJhY2MkNDQiLCJhY2MkNDUiLCJhY2MkNDYiLCJhY2MkNDciLCJhY2MkNDgiLCJhY2MkNDkiLCJhY2MkNTAiLCJhY2MkNTEiLCJhY2MkNTIiLCJhY2MkNTMiLCJhY2MkNTQiLCJhY2MkNTUiLCJzZWxmXzQiLCJhY2MkNTYiLCJhY2MkNTciLCJhY2MkNTgiLCJhY2MkNTkiLCJhY2MkNjAiLCJhY2MkNjEiLCJhY2MkNjIiLCJhY2MkNjMiLCJhY2MkNjQiLCJhY2MkNjUiLCJhY2MkNjYiLCJhY2MkNjciLCJhY2MkNjgiLCJzZWxmXzUiLCJjdHgiLCJzZWxmXzYiLCJzZWxmXzciLCJ0b19leHRlbnNpb24iLCJlcnJvciIsInN1Yl9tc2dzIiwibWFpbl9tc2ciLCJta19zdHJpbmdfY29uc3RhbnQiLCJleHRlbnNpb25fb2Zfc3ViX21zZyIsInN1Yl9tc2ciLCJyZWdpc3Rlcl9lcnJvcl9vZl9leG4iLCJtZXNzYWdlIiwic2V0X21lc3NhZ2UiLCJtYWtlIiwic3ViIiwic3ViJDAiLCJ1cGRhdGVfbG9jIiwiZ2V0X2xvY2F0aW9uIiwib2ZfZXhuIiwicmFpc2UiLCJwcmludCIsImRpZmZfY29tbWFuZCIsImZpbGUxIiwiZmlsZTIiLCJleHRyYV9wYXRkaWZmX2FyZ3MiLCJ1c2VfY29sb3IiLCJleGVjIiwiY21kIiwiY21kJDAiLCJuIiwicyIsImFyZ3MiLCJlcnJfY29kZSIsImFsbCIsInJlZ2lzdGVyIiwibmFtZSIsImRlcml2ZXIiLCJsb29rdXAiLCJkcnYiLCJkZXJpdmVycyIsImFjYyIsIngiLCJzZWxmXzEiLCJmIiwieCQwIiwic2VsZl8yIiwiYWNjIiwic2VsZl8zIiwibG9vcCIsImwiLCJsJDAiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwiYSIsInIiLCJpIiwic2VsZl80IiwieCQxIiwibGVuIiwiYSQwIiwic2VsZl81IiwiY3R4Iiwic2VsZl82Iiwic2VsZl83IiwicmVzIiwicmVzX2hlYWQiLCJyZXNfdGFpbCIsImZsYWdzJDAiLCJmbGFncyIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJtaW4iLCJtYXgiLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsIm1pbiQwIiwibWF4JDAiLCJ0b19zdHJpbmciLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwibWluJDEiLCJtYXgkMSIsInN1Yl9zdHJpbmciLCJ0IiwicG9zIiwibGVuIiwiYmxpdF9zdHJpbmciLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNvbXBhcmUkMyIsImVxdWFsJDMiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJtaW4kMiIsIm1heCQyIiwicHJvdGVjdHgiLCJ4IiwiZiIsImZpbmFsbHkkMCIsInkiLCJleG4kMCIsImV4biIsInRvX3N0cmluZyQxIiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsInN5bWJvbCQyMyIsInN5bWJvbCQyNCIsInN5bWJvbCQyNSIsInN5bWJvbCQyNiIsInN5bWJvbCQyNyIsInN5bWJvbCQyOCIsIm1pbiQzIiwibWF4JDMiLCJpZCIsInNldCIsImtleSIsImRhdGEiLCJhZGQiLCJhZGRfZXhuIiwiZmluZF9vcHQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsImRhdGEkMCIsImFkZF9hbGlzdCIsImFsaXN0IiwiYWxpc3QkMCIsImFsaXN0JDEiLCJvZl9hbGlzdCIsInNpemUiLCJzaXplJDAiLCJzaXplJDEiLCJlcnJvciIsIm9mX2FsaXN0X2V4biIsImNyZWF0ZSQwIiwiZmlsZSIsImJpbmFyeSIsIndpdGhfZmlsZSIsImZpbGVuYW1lIiwiaW5wdXRfYWxsIiwiYnVmIiwiY2hhciQwIiwicmVhZF9hbGwiLCJtYXhfaW50IiwidG9fc3RyaW5nJDIiLCJjb21wYXJlJDUiLCJlcXVhbCQ1Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwic3ltYm9sJDMxIiwic3ltYm9sJDMyIiwic3ltYm9sJDMzIiwic3ltYm9sJDM0IiwibWluJDQiLCJtYXgkNCIsInJldl9tYXBpIiwibGlzdCIsImxpc3QkMCIsImkiLCJhY2MiLCJ0YWlsIiwiaGVhZCIsImFjYyQwIiwiaSQwIiwiZm9sZF9yaWdodDIiLCJsaXN0MSIsImxpc3QyIiwiaW5pdCIsIm1hcCQwIiwibWFwaSQwIiwiZm9sZF9yaWdodCQwIiwiYXBwZW5kIiwiY29uY2F0JDAiLCJyZXZfY29tYmluZSIsImNvbWJpbmUiLCJzcGxpdCIsInlzIiwieHMiLCJtYXAyIiwicGFydGl0aW9uX21hcCIsInAiLCJsIiwibGVmdCIsInJpZ2h0IiwibCQwIiwidiIsInYkMCIsImluaXQkMCIsInBvcyQwIiwiaXNfZW1wdHkiLCJyZXZfZmlsdGVyX29wdCIsIm9wdGlvbiIsImZpbHRlcl9vcHQiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwic29tZSIsImZpbmRfbWFwX2V4biIsImxhc3QiLCJyZXN0Iiwic3BsaXRfd2hpbGUiLCJmaW5kX2FfZHVwIiwic2V0JDEiLCJzZXQkMCIsImFzc29jX29wdCIsIml0ZXIkMiIsImlzX3NvbWUiLCJpdGVyJDMiLCJtYXAkMSIsInZhbHVlIiwidG9fbGlzdCIsImJpbmQiLCJhIiwiZSIsIm1hcCQyIiwibWFwX2Vycm9yIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiaGFuZGxlX2Vycm9yIiwic3ltYm9sJDM1IiwicTIiLCJ0MiIsInExIiwidDEiLCJoZCQwIiwidG9fbGlzdCQwIiwicSIsIm1hcCQzIiwiY3JlYXRlJDEiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsIndpdGhfZmlsZSQwIiwid3JpdGVfYWxsIiwiaXNfZW1wdHkkMCIsInByZWZpeCIsInN1ZmZpeCIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJpc19wcmVmaXgiLCJpc19zdWZmaXgiLCJzdWZmaXhfb2Zmc2V0IiwicG9zJDEiLCJleGlzdHMkMSIsImZvcl9hbGwkMSIsImluZGV4X29wdCQwIiwicmluZGV4X29wdCQwIiwiaW5kZXhfZnJvbV9vcHQkMCIsInJpbmRleF9mcm9tX29wdCQwIiwibHNwbGl0MiIsIm9uIiwiY2FwaXRhbGl6ZV9hc2NpaSQwIiwibG93ZXJjYXNlX2FzY2lpJDEiLCJ1bmNhcGl0YWxpemVfYXNjaWkkMCIsInNwbGl0X29uX2NoYXIkMCIsInNlcCIsImNvbXBhcmUkNyIsImVxdWFsJDciLCJzeW1ib2wkMzYiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJtaW4kNSIsIm1heCQ1IiwiZmluZF9vcHQkMSIsInN5bWJvbCQ0MiIsIm91dHB1dCIsIm9jIiwiYnl0ZXMiLCJvdXRwdXRfc3Vic3RyaW5nIiwic3RyaW5nIiwiaW5fZmlsZSIsIm5hbWUiLCJsb2MiLCJzZXRfZmlsZW5hbWUiLCJmbiIsImxvY19zdGFydCIsImxvY19lbmQiLCJub25lIiwiaW5pdCIsImxleGJ1ZiIsImZuYW1lIiwicmFpc2VfZXJyb3JmIiwiZm10IiwicmVwb3J0X2V4Y2VwdGlvbiIsIm9mX2xleGJ1ZiIsInByaW50IiwicHBmIiwidCIsImNvbXBhcmVfcG9zIiwicDEiLCJwMiIsImNvbHVtbiIsInAiLCJuIiwibWluX3BvcyIsIm1heF9wb3MiLCJjb21wYXJlIiwibG9jMSIsImxvYzIiLCJjcmVhdGVmIiwic3RyIiwiZXJyb3JfZXh0ZW5zaW9uZiIsImUiLCJmYWlsIiwiZXhwZWN0ZWQiLCJhdHRyaWJ1dGUiLCJwYXlsb2FkIiwiYmluZGluZ19vcCIsIm9wIiwicGF0IiwiZXhwIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJwY2xfY29uc3RyIiwieDAiLCJ4MSIsInBjbF9zdHJ1Y3R1cmUiLCJwY2xfZnVuIiwieDIiLCJ4MyIsInBjbF9hcHBseSIsInBjbF9sZXQiLCJwY2xfY29uc3RyYWludCIsInBjbF9leHRlbnNpb24iLCJwY2xfb3BlbiIsInBjZl9pbmhlcml0IiwicGNmX3ZhbCIsInBjZl9tZXRob2QiLCJwY2ZfY29uc3RyYWludCIsInBjZl9pbml0aWFsaXplciIsInBjZl9hdHRyaWJ1dGUiLCJwY2ZfZXh0ZW5zaW9uIiwiY2xhc3NfaW5mb3MiLCJ2aXJ0IiwicGFyYW1zIiwiZXhwciIsImNsYXNzX3NpZ25hdHVyZSIsInNlbGYiLCJmaWVsZHMiLCJjbGFzc19zdHJ1Y3R1cmUiLCJwY3R5X2NvbnN0ciIsInBjdHlfc2lnbmF0dXJlIiwicGN0eV9hcnJvdyIsInBjdHlfZXh0ZW5zaW9uIiwicGN0eV9vcGVuIiwicGN0Zl9pbmhlcml0IiwicGN0Zl92YWwiLCJwY3RmX21ldGhvZCIsInBjdGZfY29uc3RyYWludCIsInBjdGZfYXR0cmlidXRlIiwicGN0Zl9leHRlbnNpb24iLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInZhcnMiLCJhcmdzIiwicmVzIiwicHR5cF9hbnkiLCJwdHlwX3ZhciIsInB0eXBfYXJyb3ciLCJwdHlwX3R1cGxlIiwicHR5cF9jb25zdHIiLCJwdHlwX29iamVjdCIsInB0eXBfY2xhc3MiLCJwdHlwX2FsaWFzIiwicHR5cF92YXJpYW50IiwicHR5cF9wb2x5IiwicHR5cF9wYWNrYWdlIiwicHR5cF9leHRlbnNpb24iLCJwZGlyX3N0cmluZyIsInBkaXJfaW50IiwicGRpcl9pZGVudCIsInBkaXJfYm9vbCIsInBleHBfaWRlbnQiLCJwZXhwX2NvbnN0YW50IiwicGV4cF9sZXQiLCJwZXhwX2Z1bmN0aW9uIiwicGV4cF9mdW4iLCJwZXhwX2FwcGx5IiwicGV4cF9tYXRjaCIsInBleHBfdHJ5IiwicGV4cF90dXBsZSIsInBleHBfY29uc3RydWN0IiwicGV4cF92YXJpYW50IiwicGV4cF9yZWNvcmQiLCJwZXhwX2ZpZWxkIiwicGV4cF9zZXRmaWVsZCIsInBleHBfYXJyYXkiLCJwZXhwX2lmdGhlbmVsc2UiLCJwZXhwX3NlcXVlbmNlIiwicGV4cF93aGlsZSIsInBleHBfZm9yIiwieDQiLCJwZXhwX2NvbnN0cmFpbnQiLCJwZXhwX2NvZXJjZSIsInBleHBfc2VuZCIsInBleHBfbmV3IiwicGV4cF9zZXRpbnN0dmFyIiwicGV4cF9vdmVycmlkZSIsInBleHBfbGV0bW9kdWxlIiwicGV4cF9sZXRleGNlcHRpb24iLCJwZXhwX2Fzc2VydCIsInBleHBfbGF6eSIsInBleHBfcG9seSIsInBleHBfb2JqZWN0IiwicGV4cF9uZXd0eXBlIiwicGV4cF9wYWNrIiwicGV4cF9vcGVuIiwicGV4cF9sZXRvcCIsInBleHBfZXh0ZW5zaW9uIiwicGV4cF91bnJlYWNoYWJsZSIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImtpbmQiLCJpbmNsdWRlX2luZm9zIiwibW9kIiwibGFiZWxfZGVjbGFyYXRpb24iLCJtdXRhYmxlIiwidHlwZSIsImxldG9wIiwibGV0JDAiLCJhbmRzIiwiYm9keSIsImxvY2F0aW9uIiwic3RhcnQiLCJlbmQiLCJnaG9zdCIsIm1vZHVsZV9iaW5kaW5nIiwibW9kdWxlX2RlY2xhcmF0aW9uIiwicG1vZF9pZGVudCIsInBtb2Rfc3RydWN0dXJlIiwicG1vZF9mdW5jdG9yIiwicG1vZF9hcHBseSIsInBtb2RfY29uc3RyYWludCIsInBtb2RfdW5wYWNrIiwicG1vZF9leHRlbnNpb24iLCJtb2R1bGVfc3Vic3RpdHV0aW9uIiwibWFuaWZlc3QiLCJwbXR5X2lkZW50IiwicG10eV9zaWduYXR1cmUiLCJwbXR5X2Z1bmN0b3IiLCJwbXR5X3dpdGgiLCJwbXR5X3R5cGVvZiIsInBtdHlfZXh0ZW5zaW9uIiwicG10eV9hbGlhcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwib3RhZyIsIm9pbmhlcml0Iiwib3Blbl9pbmZvcyIsIm92ZXJyaWRlIiwicHBhdF9hbnkiLCJwcGF0X3ZhciIsInBwYXRfYWxpYXMiLCJwcGF0X2NvbnN0YW50IiwicHBhdF9pbnRlcnZhbCIsInBwYXRfdHVwbGUiLCJwcGF0X2NvbnN0cnVjdCIsInBwYXRfdmFyaWFudCIsInBwYXRfcmVjb3JkIiwicHBhdF9hcnJheSIsInBwYXRfb3IiLCJwcGF0X2NvbnN0cmFpbnQiLCJwcGF0X3R5cGUiLCJwcGF0X2xhenkiLCJwcGF0X3VucGFjayIsInBwYXRfZXhjZXB0aW9uIiwicHBhdF9leHRlbnNpb24iLCJwcGF0X29wZW4iLCJwb3NpdGlvbiIsImxudW0iLCJib2wiLCJjbnVtIiwicnRhZyIsInJpbmhlcml0IiwicHNpZ192YWx1ZSIsInBzaWdfdHlwZSIsInBzaWdfdHlwZXN1YnN0IiwicHNpZ190eXBleHQiLCJwc2lnX2V4Y2VwdGlvbiIsInBzaWdfbW9kdWxlIiwicHNpZ19tb2RzdWJzdCIsInBzaWdfcmVjbW9kdWxlIiwicHNpZ19tb2R0eXBlIiwicHNpZ19tb2R0eXBlc3Vic3QiLCJwc2lnX29wZW4iLCJwc2lnX2luY2x1ZGUiLCJwc2lnX2NsYXNzIiwicHNpZ19jbGFzc190eXBlIiwicHNpZ19hdHRyaWJ1dGUiLCJwc2lnX2V4dGVuc2lvbiIsInBzdHJfZXZhbCIsInBzdHJfdmFsdWUiLCJwc3RyX3ByaW1pdGl2ZSIsInBzdHJfdHlwZSIsInBzdHJfdHlwZXh0IiwicHN0cl9leGNlcHRpb24iLCJwc3RyX21vZHVsZSIsInBzdHJfcmVjbW9kdWxlIiwicHN0cl9tb2R0eXBlIiwicHN0cl9vcGVuIiwicHN0cl9jbGFzcyIsInBzdHJfY2xhc3NfdHlwZSIsInBzdHJfaW5jbHVkZSIsInBzdHJfYXR0cmlidXRlIiwicHN0cl9leHRlbnNpb24iLCJ0b3BsZXZlbF9kaXJlY3RpdmUiLCJhcmciLCJ0eXBlX2RlY2xhcmF0aW9uIiwiY3N0cnMiLCJwcml2YXRlJDAiLCJ0eXBlX2V4Y2VwdGlvbiIsImNvbnN0cnVjdG9yIiwidHlwZV9leHRlbnNpb24iLCJwYXRoIiwiY29uc3RydWN0b3JzIiwidmFsdWVfYmluZGluZyIsInZhbHVlX2Rlc2NyaXB0aW9uIiwicHJpbSIsInR4dCIsIm1ha2UiLCJtYXAiLCJmIiwiaXNfbm9ybWFsX2lkZW50X2NoYXIiLCJzaG9ydF9uYW1lIiwic3RyaW5nIiwicyIsImIiLCJhIiwiYiQwIiwiYSQwIiwic2V4cF9vZl90IiwiZmxhdHRlbl9leG4iLCJsaWQkMCIsImFjY3UiLCJzJDAiLCJsaWQiLCJsYXN0X2V4biIsInVuZmxhdHRlbiIsImwiLCJhY2MiLCJwYXJzZSIsImludmFsaWQiLCJvcGVuX3BhciIsImNsb3NlX3BhciIsInIiLCJsJDAiLCJncm91cCIsImJlZm9yZSIsImwkMSIsInMkMSIsIngiLCJtayIsIm1hcF9saWRlbnQiLCJsaWRlbnQiLCJ4JDAiLCJwcGF0X2NvbnN0cnVjdCQwIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb24kMCIsInBzdHJfdmFsdWVfbGlzdCIsInJlY19mbGFnIiwidmJzIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24iLCJlaW50IiwiZWNoYXIiLCJlc3RyaW5nIiwiZWZsb2F0IiwiZWludDMyIiwiZWludDY0IiwiZW5hdGl2ZWludCIsInBpbnQiLCJwY2hhciIsInBzdHJpbmciLCJwZmxvYXQiLCJwaW50MzIiLCJwaW50NjQiLCJwbmF0aXZlaW50IiwiZWJvb2wiLCJwYm9vbCIsImV2YXIiLCJ2IiwicHZhciIsImV1bml0IiwicHVuaXQiLCJwZXhwX3R1cGxlJDAiLCJwcGF0X3R1cGxlJDAiLCJwdHlwX3R1cGxlJDAiLCJwZXhwX3R1cGxlX29wdCIsInBwYXRfdHVwbGVfb3B0IiwicHR5cF9wb2x5JDAiLCJ0eSIsInBleHBfYXBwbHkkMCIsImVsIiwiZSQwIiwiZWFwcGx5IiwiZWFic3RyYWN0IiwicHMiLCJlc2VxdWVuY2UiLCJ0bCIsImhkIiwicGNvbnN0cnVjdCIsImNkIiwiZWNvbnN0cnVjdCIsImVsaXN0IiwicGxpc3QiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXQiLCJpZGVudCIsIm4kMCIsInR5cGVfY29uc3RyX2NvbnYiLCJhcHBseV9sb2MiLCJsb25naWRlbnQiLCJsb2MkMCIsIm1vZHVsZV9wYXRoIiwic3VmZml4X24iLCJmdW5jdG9yIiwiZnVuY3Rvcl9hcmdzIiwicmVzdCIsImZ1bmN0b3IkMCIsImZ1bmN0b3JfcGF0aCIsImlkZW50JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiIsImdhdGhlcl9hcmdzIiwiYXJncyQwIiwiYm9keSQwIiwiZXRhX3JlZHVjZSIsImV4cHIkMCIsInN1YnBhdCIsImxhYmVsIiwiYWNjJDAiLCJuYW1lJDAiLCJhY2MkMSIsImZfaWRlbnQiLCJwYXJhbV9sYWJlbCIsImFyZ19sYWJlbCIsInBhcmFtJDAiLCJ0eSQwIiwidHlfb3B0IiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSIsImV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbiIsIm5vbnJlY190eXBlX2RlY2xhcmF0aW9uJDAiLCJwZXhwX3R1cGxlX29wdCQwIiwicHBhdF90dXBsZV9vcHQkMCIsImVpbnQkMCIsImVjaGFyJDAiLCJlc3RyaW5nJDAiLCJlZmxvYXQkMCIsImVpbnQzMiQwIiwiZWludDY0JDAiLCJlbmF0aXZlaW50JDAiLCJlYm9vbCQwIiwiZXZhciQwIiwicGludCQwIiwicGNoYXIkMCIsInBzdHJpbmckMCIsInBmbG9hdCQwIiwicGludDMyJDAiLCJwaW50NjQkMCIsInBuYXRpdmVpbnQkMCIsInBib29sJDAiLCJwdmFyJDAiLCJldW5pdCQwIiwicHVuaXQkMCIsImVhcHBseSQwIiwiZWFic3RyYWN0JDAiLCJlc2VxdWVuY2UkMCIsImVsaXN0JDAiLCJwbGlzdCQwIiwidHlwZV9jb25zdHJfY29udiQwIiwidW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnYkMCIsImdldCIsInNraXAiLCJza2lwJDAiLCJzdGFjayIsImxlbiIsInBvcyIsInBvcyQwIiwibGV2ZW5zaHRlaW5fZGlzdGFuY2UiLCJjdXRvZmYiLCJtIiwiZCIsImkkMCIsImokMCIsImxpbmVfbWluIiwiaiIsImkiLCJ2YWx1ZSIsImRpc3RhbmNlIiwic3BlbGxjaGVjayIsIm5hbWVzIiwic3VnZ2VzdGlvbnMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJyZXZfcmVzdCIsImxhc3QiLCJmb2xkX2RvdF9zdWZmaXhlcyIsImNvbGxhcHNlX2FmdGVyX2F0IiwicGFydHMiLCJwYXJ0IiwicGFydHMkMSIsInBhcnRzJDAiLCJkb3Rfc3VmZml4ZXMiLCJzcGxpdF9wYXRoIiwiaSQyIiwiaSQ0IiwiaSQzIiwiaSQxIiwibWF0Y2hlcyIsIm1hdGNoZWQiLCJzcGxpdF9vdXRlcl9uYW1lc3BhY2UiLCJiZWZvcmVfZG90IiwiYWZ0ZXJfZG90IiwiY3JlYXRlX3NldCIsImZ1bGx5X3F1YWxpZmllZF9uYW1lcyIsImF0dHJpYnV0ZXMiLCJleHRlbnNpb25zIiwiaXNfYWxsb3dsaXN0ZWQiLCJnZXRfYXR0cmlidXRlX2xpc3QiLCJnZXRfZXh0ZW5zaW9uX2xpc3QiLCJjcmVhdGVfcmVzZXJ2ZWQiLCJ0YmwiLCJyZXNlcnZlIiwibnMkMCIsIm5zIiwidGJsJDAiLCJyZXN0X25zIiwib3V0ZXJfbnMiLCJyZXN0X3RibCIsImlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMiLCJpZ25vcmVfY2hlY2tzIiwiY3JlYXRlIiwiY3VycmVudF9maWxlIiwic3RyaW5nX29mX2NvbnRleHQiLCJnZXRfYWxsX2Zvcl9jb250ZXh0IiwiY29udGV4dCIsImNoZWNrX2NvbGxpc2lvbnNfbG9jYWwiLCJjYWxsZXIiLCJhbGxfZm9yX2NvbnRleHQiLCJkZWNsYXJlZF9hdCIsImNvbnRleHQkMCIsImNoZWNrX2NvbGxpc2lvbnMiLCJyZWdpc3RlciIsImtpbmQkMSIsImxpc3QiLCJraW5kJDAiLCJhbGwiLCJ0JDAiLCJhbGxvd2xpc3QiLCJrZXkiLCJvdGhlcl9jb250ZXh0cyIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJwcF90ZXh0IiwiY3VycmVudF9jb250ZXh0IiwiYV9vcl9hbiIsInkiLCJjIiwicmV2X290aGVycyIsIm90aGVycyIsIm1zZyIsInJhaXNlX2Vycm9yZiQwIiwiY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24iLCJ0ZCIsImNob3AiLCJvcl9tb3JlIiwidGFyZ2V0IiwiY250IiwiZ2VuX3N5bWJvbCIsInByZWZpeCIsInByZWZpeCQwIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMiLCJuYW1lX3BhcmFtIiwidmFyaWFuY2UiLCJ0cCIsInB0eXBfZGVzYyIsIm8iLCJlcnJvcnMiLCJwdHlwZV9wYXJhbXMiLCJxIiwibmFtZV90eXBlX3BhcmFtc19pbl90ZCIsImVyciIsImNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhciIsInRkJDAiLCJyZXN1bHRfdHlwZSIsInN0cmluZ19vZl9jb3JlX3R5cGUiLCJjdCIsImJ1ZiIsImdldF90eXBlX3BhcmFtX25hbWVfcmVzIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZSIsInNlbGZfMSIsImN0eXBlIiwiaWQiLCJ0ZHMiLCJyZWFsbHlfcmVjdXJzaXZlIiwieCQxIiwibG9jX29mX25hbWVfYW5kX3BheWxvYWQiLCJsb2Nfb2ZfcGF5bG9hZCIsImF0dHJfcGF5bG9hZCIsImF0dHJfbmFtZSIsImxvY19vZl9hdHRyaWJ1dGUiLCJsb2Nfb2ZfZXh0ZW5zaW9uIiwiY3VycnlfYXBwbGljYXRpb25zIiwib3JpZ19mb3J3YXJkX2FyZ3MiLCJsb29wIiwicmV2X2Zyb250X2FyZ3MiLCJsYXN0X2FyZyIsImF0dHIiLCJhdHRyaWJ1dGVzX2Vycm9ycyIsInNlbGZfMiIsImNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMiLCJhc3NlcnRfbm9fYXR0cmlidXRlcyIsInNlbGZfMyIsImFzc2VydF9ub19hdHRyaWJ1dGVzX2luIiwiYXR0cmlidXRlX29mX3dhcm5pbmciLCJpc19wb2x5bW9ycGhpY192YXJpYW50Iiwic2lnIiwidHlwJDAiLCJ0eXAiLCJta19uYW1lZF9zaWciLCJzZ19uYW1lIiwiaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJhcml0eSIsIm10eSIsImZvcl9zdWJzdCIsImV4bl90b19sb2NfZXJyb3IiLCJleG4iLCJlcnJvciIsInJldHVybiQwIiwic3ltYm9sX2JpbmQiLCJlcnJvcnMxIiwiZXJyb3JzMiIsInN5bWJvbF9tYXAiLCJvZl9yZXN1bHQiLCJyZXN1bHQiLCJkZWZhdWx0JDAiLCJjb21iaW5lX2Vycm9ycyIsIm5vbGFiZWwiLCJrIiwibGFiZWxsZWQiLCJmMCIsImskMCIsIm9wdGlvbmFsIiwiayQxIiwiayQyIiwicGNsX2xvYyIsImYyIiwiZjEiLCJwY2xfYXR0cmlidXRlcyIsImYzIiwiayQzIiwicGNmX2xvYyIsInBjZl9hdHRyaWJ1dGVzIiwiY2ZrX3ZpcnR1YWwiLCJjZmtfY29uY3JldGUiLCJjbGFzc19pbmZvc19hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfYXR0cmlidXRlcyIsImNsb3NlZCIsIm9wZW4iLCJwY29uc3RfaW50ZWdlciIsInBjb25zdF9jaGFyIiwicGNvbnN0X3N0cmluZyIsInBjb25zdF9mbG9hdCIsInBjc3RyX3R1cGxlIiwicGNzdHJfcmVjb3JkIiwiY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmliIiwicHR5cF9sb2MiLCJwdHlwX2F0dHJpYnV0ZXMiLCJ1cHRvIiwiZG93bnRvIiwicGRpcmFfbG9jIiwicGV4cF9sb2MiLCJwZXhwX2F0dHJpYnV0ZXMiLCJmNCIsImskNCIsImV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dCIsInBleHRfZGVjbCIsInBleHRfcmViaW5kIiwidW5pdCIsIm5hbWVkIiwiaW5jbHVkZV9pbmZvc19hdHRyaWJ1dGVzIiwiaW5qZWN0aXZlIiwibm9pbmplY3Rpdml0eSIsImxhYmVsX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJsZG90IiwibGFwcGx5IiwibW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyIsIm1vZHVsZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2F0dHJpYnV0ZXMiLCJtb2R1bGVfc3Vic3RpdHV0aW9uX2F0dHJpYnV0ZXMiLCJwbXR5X2xvYyIsInBtdHlfYXR0cmlidXRlcyIsIm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uX2F0dHJpYiIsImltbXV0YWJsZSIsInBvZl9sb2MiLCJwb2ZfYXR0cmlidXRlcyIsIm9wZW5faW5mb3NfYXR0cmlidXRlcyIsImZyZXNoIiwicHBhdF9sb2MiLCJwcGF0X2F0dHJpYnV0ZXMiLCJwc3RyIiwicHNpZyIsInB0eXAiLCJwcGF0IiwicHVibGljJDAiLCJub25yZWN1cnNpdmUiLCJyZWN1cnNpdmUiLCJwcmZfbG9jIiwicHJmX2F0dHJpYnV0ZXMiLCJwc2lnX2xvYyIsInBzdHJfbG9jIiwicHRvcF9kZWYiLCJwdG9wX2RpciIsInR5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImskNSIsInR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMiLCJ0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIiwicHR5cGVfYWJzdHJhY3QiLCJwdHlwZV92YXJpYW50IiwicHR5cGVfcmVjb3JkIiwicHR5cGVfb3BlbiIsInZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyIsInZhbHVlX2Rlc2NyaXB0aW9uX2F0dHJpYnV0ZXMiLCJjb3ZhcmlhbnQiLCJjb250cmF2YXJpYW50Iiwibm92YXJpYW5jZSIsInZpcnR1YWwiLCJjb25jcmV0ZSIsInB3aXRoX3R5cGUiLCJwd2l0aF9tb2R1bGUiLCJwd2l0aF9tb2R0eXBlIiwicHdpdGhfbW9kdHlwZXN1YnN0IiwicHdpdGhfdHlwZXN1YnN0IiwicHdpdGhfbW9kc3Vic3QiLCJyZXN0b3JlX2NvbnRleHQiLCJiYWNrdXAiLCJpbmNyX21hdGNoZWQiLCJwYXJzZV9yZXMiLCJvbl9lcnJvciIsImYkMCIsInIkMCIsInBhcnNlX3JlcyQwIiwicGFyc2UkMCIsInN5bWJvbCIsInN5bWJvbCQwIiwiZHJvcCIsImFzIiwiY3N0IiwidG9fc3RyaW5nIiwiZXF1YWwiLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiYm9vbCIsImJvb2wkMCIsImZ1bmMiLCJmYWxzZSQwIiwidHJ1ZSQwIiwibmlsIiwic3ltYm9sJDEiLCJzb21lIiwicGFpciIsInRyaXBsZSIsImFsdCIsImUxJDAiLCJlMSIsIm0xIiwiZTIkMCIsImUyIiwibTIiLCJtYXAkMCIsIm1hcF9yZXN1bHQiLCJtYXAwIiwibWFwMSIsIm1hcDIiLCJtYXAwJDAiLCJtYXAxJDAiLCJtYXAyJDAiLCJtYXBfdmFsdWUiLCJtYXBfdmFsdWUkMCIsImFsdF9vcHRpb24iLCJtYW55IiwiYXV4IiwieHMiLCJwYWNrMCIsInBhY2syIiwicGFjazMiLCJ6IiwiY29uc3RfaW50IiwiY29uc3RfaW50MzIiLCJjb25zdF9pbnQ2NCIsImNvbnN0X25hdGl2ZWludCIsInNpbmdsZV9leHByX3BheWxvYWQiLCJub19sYWJlbCIsImV4dGVuc2lvbiIsIm5leHQiLCJleHByJDEiLCJvZl9mdW5jIiwidG9fZnVuYyIsInBvbHlfZXF1YWwiLCJnZXRfcHN0cl9ldmFsIiwic3QiLCJnZXRfcHN0cl9leHRlbnNpb24iLCJnZXRfcHNpZ19leHRlbnNpb24iLCJnZXRfYXR0cmlidXRlcyIsInNldF9hdHRyaWJ1dGVzIiwiYXR0cnMiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJwYXR0ZXJuIiwiZGVjbGFyZSIsImRlY2xhcmVfd2l0aF9uYW1lX2xvYyIsIm5hbWVfbG9jIiwiZGVjbGFyZV93aXRoX2F0dHJfbG9jIiwiYXR0cl9sb2MiLCJkZWNsYXJlX2ZsYWciLCJwYXlsb2FkX3BhdHRlcm4iLCJjb250aW51YXRpb24iLCJub3JtYWxpemUiLCJoYXNoIiwibm90X3NlZW4iLCJtYXJrX2FzX3NlZW4iLCJleHBsaWNpdGx5X2Ryb3AiLCJnZXRfaW50ZXJuYWwiLCJhdHRyaWJ1dGVzJDEiLCJsb25nZXN0X21hdGNoIiwiYXR0cmlidXRlcyQwIiwibGVuJDAiLCJsb25nZXN0X21hdGNoJDAiLCJsb25nZXN0X21hdGNoJDEiLCJjb252ZXJ0IiwiZG9fbWFya19hc19zZWVuIiwicGF0dGVybiQwIiwiZ2V0X3JlcyIsImhhc19mbGFnX3JlcyIsImhhc19mbGFnIiwiY29uc3VtZV9yZXMiLCJhdHRycyQwIiwiYXR0ciQwIiwiY29uc3VtZSIsInJlbW92ZV9zZWVuX3JlcyIsInBhY2tlZHMiLCJyZW1vdmVfc2VlbiIsInBhdHRlcm5fcmVzIiwiZGVjbGFyZSQwIiwiY29udmVydF9yZXMiLCJ0cyIsImNvbnZlcnQkMCIsImNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY2xvc2VkX2ZsYWciLCJlcnJvcnMkMCIsImZpZWxkcyQwIiwiaXRlbSIsIml0ZW0kMCIsIml0ZW0kMSIsImVycm9yczIkMCIsIml0ZW0kMiIsImNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJybyIsInJhaXNlX2lmX25vbl9lbXB0eSIsImNoZWNrX3VudXNlZCIsInJlc2V0X2NoZWNrcyIsInNlbGZfNCIsImNvbGxlY3QiLCJjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMiLCJjaGVja19hbGxfc2VlbiIsInJlbW92ZV9hdHRyaWJ1dGVzX3ByZXNlbnRfaW4iLCJ0YWJsZSIsInNlbGZfNSIsImNvcHlfb2Zfbm90X3NlZW4iLCJjb3B5IiwiZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIiwiZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIiwic2ciLCJ0b3BfbGV2ZWwiLCJmaWxlX3BhdGgiLCJtYWluX21vZHVsZV9uYW1lIiwiZW5jbG9zaW5nX21vZHVsZSIsImVuY2xvc2luZ192YWx1ZSIsInN1Ym1vZHVsZV9wYXRoIiwibG9jYXRlZCIsImZ1bGx5X3F1YWxpZmllZF9wYXRoIiwidmFsdWUkMCIsImVudGVyX2V4cHIiLCJlbnRlcl9tb2R1bGUiLCJtb2R1bGVfbmFtZSIsImVudGVyX3ZhbHVlIiwidmFsdWVfbmFtZSIsInRvX3N0cmluZ19wYXRoIiwid2l0aF9zdHJpbmdfcGF0aCIsInRvb2xfbmFtZSIsImlucHV0X25hbWUiLCJjb2RlX3BhdGgiLCJleHRlbnNpb25fcG9pbnRfbG9jIiwiYmFzZSIsImNvZGVfcGF0aCQwIiwiaW5wdXRfbmFtZSQwIiwidG9vbF9uYW1lJDAiLCJ3aXRoX2xvY19hbmRfcGF0aCIsImN0eHQiLCJtYWtlJDAiLCJkZXJpdmVkX2l0ZW1fbG9jIiwiaW5saW5lIiwiY29kZV9wYXRoJDEiLCJpbnB1dF9uYW1lJDEiLCJ0b29sX25hbWUkMSIsIndpdGhfbG9jX2FuZF9wYXRoJDAiLCJlbnRlciIsImVudGVyX29wdCIsIm5hbWVfb3B0IiwibWIiLCJtZCIsIm10ZCIsInZhcl9uYW1lc19vZiIsImVjX2VudGVyX21vZHVsZV9vcHQiLCJkb19ub3RfZW50ZXJfdmFsdWVfYmluZGluZyIsImRvX25vdF9lbnRlcl92YWx1ZV9kZXNjcmlwdGlvbiIsImRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyIsImRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpbyIsImRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYSIsImRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIiwidGFnIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2Rlc2MiLCJ3aXRoX3ZhbHVlIiwiY3R4dCQwIiwibW9kdWxlX2V4cHIiLCJuYW1lX2Vycm9ycyIsIndpdGhfbGV0X21vZHVsZSIsIm1vZHVsZV9leHByX2Vycm9ycyIsIm1vZHVsZV9leHByJDAiLCJib2R5X2Vycm9ycyIsImRlc2NfZXJyb3JzJDAiLCJwZXhwX2Rlc2MkMSIsImRlc2NfZXJyb3JzIiwicGV4cF9kZXNjJDAiLCJsb2NfZXJyb3JzIiwicGV4cF9sb2MkMCIsImxvY19zdGFja19lcnJvcnMiLCJwZXhwX2xvY19zdGFjayQwIiwicGV4cF9hdHRyaWJ1dGVzJDAiLCJtZSIsIndpdGhfbW9kdWxlX2V4cHIiLCJ3aXRoX21vZHVsZV9iaW5kaW5nIiwid2l0aF9tb2R1bGVfZGVjbGFyYXRpb24iLCJ3aXRoX21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwidmIiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfZXhwciIsInB2Yl9wYXQiLCJ2YXJfbmFtZSIsImluX2JpbmRpbmdfY3R4dCIsInBhdF9lcnJvcnMiLCJwdmJfcGF0JDAiLCJleHByX2Vycm9ycyIsInB2Yl9leHByJDAiLCJwdmJfYXR0cmlidXRlcyQwIiwicHZiX2xvYyQwIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJzZXRfaW5wdXRfbGV4YnVmIiwiaWMiLCJzb3VyY2UiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFsbF9zb3VyY2UiLCJhc3QiLCJleG4kMCIsIklucHV0X3ZlcnNpb24iLCJhc3QkMCIsIklucHV0X3ZlcnNpb24kMCIsImFzdCQxIiwiYXN0JDIiLCJyZWFkIiwiaW5wdXRfc291cmNlIiwid3JpdGUiLCJvYyIsImFkZF9wcHhfY29udGV4dCIsInNnJDAiLCJzdCQwIiwicmVhZF9iaW5hcnkiLCJzaWduYXR1cmUiLCJzdHJ1Y3R1cmUiLCJnZXRfYXN0IiwiZ2V0X2lucHV0X25hbWUiLCJydW5fcHJlcHJvY2Vzc29yIiwicHAiLCJpbnB1dCIsIm91dHB1dCIsImNvbW1hbmQiLCJlbmRfbWFya2VyX3NpZyIsImVuZF9tYXJrZXJfc3RyIiwiZXh0cmFjdF9wcmVmaXgiLCJyZW1vdmVfbG9jIiwicmVtb3ZlX2xvYyQwIiwicHJldiQwIiwicHJldiQxIiwiZGlmZl9hc3RzIiwiZ2VuZXJhdGVkIiwicm91bmRfdHJpcCIsIndpdGhfdGVtcF9maWxlIiwiZm4xIiwiZm4yIiwib3V0IiwiZHVtcCIsImNtZCIsIm9rIiwiY21kJDAiLCJwYXJzZV9zdHJpbmciLCJtYXRjaF9sb29wIiwiZW5kX3BvcyIsIm1pc21hdGNoX2hhbmRsZXIiLCJleHBlY3RlZCQwIiwic291cmNlJDAiLCJsb2MkMSIsInNvdXJjZSQxIiwiZXhwZWN0ZWQkMSIsInkkMCIsImRvX21hdGNoIiwiZ2V0X2xvYyIsImFwcGx5IiwidG9fc2V4cCIsImdldF9sb2MkMCIsInBwJDAiLCJ0b19zZXhwJDAiLCJtYXRjaF9zdHJ1Y3R1cmVfcmVzIiwibWF0Y2hfc3RydWN0dXJlIiwibWF0Y2hfc2lnbmF0dXJlX3JlcyIsIm1hdGNoX3NpZ25hdHVyZSIsImRlc2MiLCJlcSIsImdldF9leHRlbnNpb24iLCJ0eXBlX2RlY2wiLCJlJDEiLCJlJDIiLCJhJDMiLCJlJDMiLCJhJDQiLCJlJDQiLCJhJDUiLCJlJDUiLCJhJDYiLCJlJDYiLCJhJDciLCJlJDciLCJhJDgiLCJlJDgiLCJhJDkiLCJlJDkiLCJ2aXJ0dWFsX3BheWxvYWQiLCJtZXJnZV9hdHRyaWJ1dGVzX3JlcyIsInEkMCIsInQkMSIsInEkMSIsInQkMiIsIm1lcmdlX2F0dHJpYnV0ZXMiLCJ3aXRoX2FyZyIsImZpbmQiLCJleHQiLCJhcmckMCIsInNoaWZ0IiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnIiwicGF0dCIsImNvbnZlcnRfcmVzJDAiLCJmb3VuZCIsImNvbnZlcnRfaW5saW5lX3JlcyIsImNvbnZlcnRfaW5saW5lIiwiY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIiwiZmlsdGVyX2J5X2NvbnRleHQiLCJleHBhbmRlcnMiLCJleHBhbmRlcnMkMCIsImV4cGFuZGVycyQxIiwidW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciIsImNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lciIsImVycm9yX2xpc3RfdG9fZXhjZXB0aW9uIiwiZGVjbGFyZV9pbmxpbmUiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmciLCJkZWNsYXJlJDEiLCJkZWNsYXJlX2lubGluZSQwIiwiZGVjbGFyZV93aXRoX3BhdGhfYXJnJDEiLCJkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnJDAiLCJkZWNsYXJlX3BweF9pbXBvcnQiLCJleHBhbmQiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCIsImF0dHJfbmFtZSQwIiwic3BsaXRfbm9ybWFsX2FuZF9leHBlY3QkMCIsImZpbHRlciIsImZpZWxkIiwiZmllbGQkMCIsInNwZWNpYWxfZnVuY3Rpb24iLCJjb25zdGFudCIsInN1ZmZpeCIsImF0dHJfc3RyX3R5cGVfZGVjbCIsImF0dHJfc2lnX3R5cGVfZGVjbCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIiwiYXR0cl9zdHJfdHlwZV9leHQiLCJhdHRyX3NpZ190eXBlX2V4dCIsImF0dHJfc3RyX2V4Y2VwdGlvbiIsImF0dHJfc2lnX2V4Y2VwdGlvbiIsImF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlIiwiYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCIsImF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3QiLCJub3AiLCJyZXBsYWNlIiwiaW5zZXJ0X2FmdGVyIiwiZXhuX3RvX2V4dGVuc2lvbiIsImV4bl90b19lcnJvcl9leHRlbnNpb24iLCJvcmlnaW5hbF9ub2RlIiwicHR5cGVfbWFuaWZlc3QiLCJleG5fdG9fc3RyaSIsImV4bl90b19zaWdpIiwibWFwX25vZGVfcmVjIiwic3VwZXJfY2FsbCIsImJhc2VfY3R4dCIsImVtYmVkX2Vycm9ycyIsImNvbnZlcnRlZCIsIm1hcF9ub2RlcyIsImhvb2siLCJpbl9nZW5lcmF0ZWRfY29kZSIsImdlbmVyYXRlZF9jb2RlIiwiY29kZSIsImdldF9ncm91cCIsImF0dHIyIiwidmFscyIsInZhbHMkMCIsInJldl9jb25jYXQiLCJzb3J0X2F0dHJfZ3JvdXBfaW5saW5lIiwic29ydF9hdHRyX2lubGluZSIsImNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpYyIsIm5vcCQwIiwid2l0aF9jb250ZXh0Iiwib3B0aW9uIiwiZXhwYW5kZWQiLCJleHBhbmRfY29uc3RhbnQiLCJ0ZXh0IiwiYyQwIiwiZXhuJDEiLCJpZCQwIiwiZ2VuZXJhdGVkX2NvZGUkMCIsImV4biQyIiwiZnVuYyQwIiwibGFiIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJvcHQiLCJzdGgiLCJzdGgkMCIsInJ1bGVzIiwic3BlY2lhbF9mdW5jdGlvbnMiLCJzcGVjaWFsX2Z1bmN0aW9ucyQwIiwiY29uc3RhbnRzIiwiY2xhc3NfZXhwciIsImNsYXNzX2ZpZWxkIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwibW9kdWxlX3R5cGUiLCJzaWduYXR1cmVfaXRlbSIsInN0cnVjdHVyZV9pdGVtIiwicHB4X2ltcG9ydCIsImF0dHJfc3RyX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9kZWNscyIsImF0dHJfc2lnX3R5cGVfZGVjbHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9kZWNscyIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzX2V4cCIsImF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zdHJfdHlwZV9leHRzIiwiYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZXh0cyIsImF0dHJfc3RyX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zdHJfZXhjZXB0aW9ucyIsImF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9ucyIsIm1hcF9ub2RlIiwibWFwX25vZGVzJDAiLCJoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUiLCJleHBhbmRlZF9pdGVtcyIsImNvbnZlcnRfZXhuIiwiZzEiLCJnMiIsInZhbHVlcyIsImVycm9yX2l0ZW0iLCJnZW5lcmF0ZWRfY29kZV9iZWdpbiIsImdlbmVyYXRlZF9jb2RlX2VuZCIsInBhcmVuIiwic3RvcCIsIm1ha2VfdGV4dCIsImJsb2NrIiwicHJpbnRlciIsImlkeCIsImNvdW50X25ld2xpbmVzIiwic2tpcF9ibGFua19lb2wiLCJjb250ZW50cyIsImNudW0kMSIsImNudW0kMCIsInJlY29uY2lsZSIsInN0eWxlciIsInJlcGxzJDMiLCJpbnB1dF9maWxlbmFtZSIsInJlcGxzIiwicmVwbHMkMiIsInJlcGwkMCIsInByZXYiLCJyZXBscyQwIiwicmVwbHMkMSIsInJlcGxzJDQiLCJvdXRwdXRfbmFtZSIsImNvcHlfaW5wdXQiLCJ1cF90byIsImxpbmUiLCJsYXN0X2lzX3RleHQiLCJpc190ZXh0IiwibGluZSQwIiwibGluZSQxIiwibG9vcCQwIiwibGluZSQyIiwibG9vcF9jb25zZWN1dGl2ZV9yZXBscyQwIiwibGFzdF9pc190ZXh0JDAiLCJlbmRfY29uc2VjdXRpdmVfcmVwbHMiLCJwb3MkMSIsImxhc3RfaXNfdGV4dCQxIiwicG9zJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzIiwidG1wX2ZuIiwic2FuaXRpemUiLCJiaW5kaW5ncyIsIkFzdCIsInF1b3RlIiwicXVvdGVkX2V4cHIkMCIsImJpbmRpbmdfZXhwciQwIiwiYmluZGluZ19leHByIiwicXVvdGVkX2V4cHIiLCJiaW5kaW5nIiwibWtfYXR0cl9ub2xvYyIsImhpZGVfYXR0cmlidXRlIiwiZm9jdXNfYXR0cmlidXRlIiwiaGlkZV9wYXR0ZXJuIiwiZm9jdXNfcGF0dGVybiIsImhpZGVfZXhwcmVzc2lvbiIsImZvY3VzX2V4cHJlc3Npb24iLCJlbXB0eSIsInJhbmdlcyIsIm5vZGVfbG9jIiwibm9kZV9uYW1lIiwieF9sb2MiLCJ4X25hbWUiLCJwMiQwIiwicDEkMCIsImluc2VydCIsImFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IiwiZmlsZSIsInNhbWVfZmlsZV9zb19mYXIiLCJzaG91bGRfaWdub3JlIiwib3JpZ19mbmFtZSIsImV4dHJhY3RfY29uc3RyYWludCIsImRvX2NoZWNrIiwiY2hpbGRyZW5zX2xvY3MiLCJzaWJsaW5nc19sb2NzIiwibWF4X3BvcyQwIiwibWluX3BvcyQwIiwiY2hpbGRfbG9jIiwiY2hpbGRfbmFtZSIsImwyIiwibDEiLCJ5cyIsInlzJDAiLCJ4cyQwIiwiZW5mb3JjZV9pbnZhcmlhbnRzIiwic2libGluZ3MiLCJjdGUiLCJjdHAiLCJvdXRtb3N0X2xvYyIsImluaXRpYWxfcmVzJDAiLCJyZXMkMSIsImluaXRpYWxfcmVzIiwicmVzJDAiLCJjaGlsZHNfbG9jcyIsImF0dHJzX2xvY3MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImV4cHJfbyIsImxhYmVscyIsImFjYyQyIiwib3BuIiwiZV9sb2MiLCJjZSIsIm9kIiwiYWNjJDMiLCJhY2MkNCIsImV4ZV9uYW1lIiwiYWRkX2FyZyIsInNwZWMiLCJkb2MiLCJsb2NfZm5hbWUiLCJwZXJmb3JtX2NoZWNrcyIsInBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMiLCJwZXJmb3JtX2xvY2F0aW9uc19jaGVjayIsImRlYnVnX2F0dHJpYnV0ZV9kcm9wIiwiYXBwbHlfbGlzdCIsInByZXByb2Nlc3NvciIsIm5vX21lcmdlIiwicmVxdWVzdF9wcmludF9wYXNzZXMiLCJyZXF1ZXN0X3ByaW50X3RyYW5zZm9ybWF0aW9ucyIsInVzZV9jb2xvciIsImRpZmZfY29tbWFuZCIsInByZXR0eSIsIm91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSIsImNvcnJlY3RlZF9zdWZmaXgiLCJnZXRfZGVmYXVsdF9wYXRoIiwiZm5hbWUkMCIsImdldF9kZWZhdWx0X3BhdGhfc3RyIiwiZ2V0X2RlZmF1bHRfcGF0aF9zaWciLCJvZl9zdHJpbmciLCJnaXZlbl90aHJvdWdoX2NsaSIsInNldCIsImhhbmRsZXJzIiwiYWRkX2hhbmRsZXIiLCJhZGRfc2ltcGxlX2hhbmRsZXIiLCJhY2tub3dsZWRnZV9jb29raWVzIiwicG9zdF9oYW5kbGVycyIsImFkZF9wb3N0X2hhbmRsZXIiLCJjYWxsX3Bvc3RfaGFuZGxlcnMiLCJ0cmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWF0aW9uJDAiLCJoYXNfbmFtZSIsInByaW50X2NhbGxlcl9pZCIsImNhbGxlcl9pZCIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uIiwiZW5jbG9zZV9pbXBsIiwiZW5jbG9zZV9pbnRmIiwiaW1wbCIsImludGYiLCJsaW50X2ltcGwiLCJsaW50X2ludGYiLCJwcmVwcm9jZXNzX2ltcGwiLCJwcmVwcm9jZXNzX2ludGYiLCJpbnN0cnVtZW50IiwiYWxpYXNlcyIsInJ1bGVzJDAiLCJpbXBsJDAiLCJpbnRmJDAiLCJwcmVwcm9jZXNzX2ltcGwkMCIsInByZXByb2Nlc3NfaW50ZiQwIiwiY3QkMCIsImxvY19vZl9saXN0IiwibCQyIiwiZmlyc3QiLCJtZXJnZV9pbnRvX2dlbmVyaWNfbWFwcGVycyIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIiwiZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIiwid2hvbGVfbG9jIiwiZm9vdGVyIiwiaGVhZGVyIiwibG9jX2hlYWRlciIsImxvY19mb290ZXIiLCJtYXBfaW1wbCIsInN0X3dpdGhfYXR0cnMiLCJtYXBfaW50ZiIsInNnX3dpdGhfYXR0cnMiLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ18iLCJhZGRfY3R4dF9hcmciLCJyZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiQwIiwibGludF9pbXBsJDAiLCJsaW50X2ludGYkMCIsImVuY2xvc2VfaW1wbCQwIiwiZW5jbG9zZV9pbnRmJDAiLCJyZWdpc3Rlcl9jb2RlX3RyYW5zZm9ybWF0aW9uIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfJDAiLCJnZXRfd2hvbGVfYXN0X3Bhc3NlcyIsImN0cyIsImFmdF9pIiwiYmVmX2kiLCJyZWR1Y2VkX3QiLCJpbnN0ciIsInRyYW5zZiIsInRyYW5zZiQwIiwidHJhbnNmb3JtcyIsImFmdGVyX2luc3RycyIsImJlZm9yZV9pbnN0cnMiLCJwcmVwcm9jZXNzIiwibGludGVycyIsImdldF9lbmNsb3NlcnMiLCJpbXBsX2VuY2xvc2VycyIsImludGZfZW5jbG9zZXJzIiwibWVyZ2VfZW5jbG9zZXIiLCJlbmNsb3NlcnMiLCJmb290ZXJzIiwiaGVhZGVycyIsImhlYWRlcnMkMCIsImZvb3RlcnMkMCIsImFwcGx5X3RyYW5zZm9ybXMiLCJsaW50X2ZpZWxkIiwiZHJvcHBlZF9zb19mYXIiLCJsaW50X2Vycm9ycyIsIm9sZF9kcm9wcGVkIiwibGludF9lcnJvcnMkMCIsImVycm9ycyQxIiwibW9yZV9lcnJvcnMiLCJuZXdfZHJvcHBlZCIsInByaW50X2RpZmYiLCJ3aGF0IiwiZGlmZiIsImRyb3BwZWQiLCJlcnJvcl90b19leHRlbnNpb24iLCJleHQkMCIsInNvcnRfZXJyb3JzX2J5X2xvYyIsImVycm9yJDAiLCJtYXBfc3RydWN0dXJlX2dlbiIsIndpdGhfZXJyb3JzIiwic29ydGVkIiwic3QkMSIsInVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyIsInVudXNlZF9leHRlbnNpb25fZXJyb3JzIiwibm90X3NlZW5fZXJyb3JzIiwibWFwX3NpZ25hdHVyZV9nZW4iLCJzZyQxIiwibWFwX3NpZ25hdHVyZSIsInZlcnNpb25lZF9lcnJvcmYiLCJpbnB1dF9maWxlX25hbWUiLCJyZW1vdmVfbm9fZXJyb3IiLCJuZXdfZm4iLCJvbGRfZm4iLCJyZWxvY2F0ZV9tYXBwZXIiLCJzZXRfaW5wdXRfbmFtZSIsImV4dHJhY3RfY29va2llcyIsInByZWZpeCQxIiwicHJlZml4JDIiLCJjb3JyZWN0aW9ucyIsImFkZF90b19saXN0IiwicmVnaXN0ZXJfY29ycmVjdGlvbiIsInByb2Nlc3NfZmlsZV9ob29rcyIsInJlZ2lzdGVyX3Byb2Nlc3NfZmlsZV9ob29rIiwiYWxsJDAiLCJwcm9jZXNzX2FzdCIsIm91dHB1dF9tb2RlIiwic2V0X2lucHV0Iiwic2V0X2tpbmQiLCJzZXRfb3V0cHV0X21vZGUiLCJtb2RlIiwibWF0Y2giLCJhcmdfb2Zfb3V0cHV0X21vZGUiLCJwYXJzZV9hcHBseV9saXN0IiwibWFzayIsImhhbmRsZV9hcHBseSIsImhhbmRsZV9kb250X2FwcGx5IiwiaW50ZXJwcmV0X21hc2siLCJzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSIsImlzX2NhbmRpZGF0ZSIsIm5hbWVzJDAiLCJpc19zZWxlY3RlZCIsInNldF9jb29raWUiLCJzaGFyZWRfYXJncyIsImFzX3BwIiwic3RhbmRhbG9uZV9hcmdzIiwiZ2V0X2FyZ3MiLCJzdGFuZGFsb25lX2FyZ3MkMCIsInN0YW5kYWxvbmVfbWFpbiIsInVzYWdlIiwicmVsb2NhdGUiLCJvdXRwdXQkMCIsImVtYmVkX2Vycm9ycyQwIiwib3V0cHV0X21vZGUkMCIsInJlcGxhY2VtZW50cyIsImhvb2skMCIsImV4cGVjdF9taXNtYXRjaF9oYW5kbGVyJDAiLCJhc3RfaW5wdXRfbmFtZSIsImFzdF9raW5kIiwiZmFsbF9iYWNrX3ZlcnNpb24iLCJ1bmtub3duX21hZ2ljIiwiZmFsbF9iYWNrX3ZlcnNpb24kMCIsInRtcGZpbGUiLCJmYWlsZWRfY29tbWFuZCIsInByZXByb2Nlc3NlZF9hbmRfbG9hZGVkIiwiaW5wdXRfZm5hbWUiLCJpbnB1dF92ZXJzaW9uJDAiLCJpbnB1dF92ZXJzaW9uJDEiLCJpbnB1dF92ZXJzaW9uJDIiLCJtZXRhZGF0YSIsImlucHV0X2NvbnRlbnRzIiwidGVzdCIsIm1hZ2ljX251bWJlciIsImNvcnJlY3RlZCIsImNvcnJlY3Rpb25zJDAiLCJtaXNtYXRjaGVzX2ZvdW5kIiwibnVsbF9hc3QiLCJwYXJzZV9pbnB1dCIsInBhc3NlZF9pbl9hcmdzIiwidmFsaWRfYXJncyIsImluY29ycmVjdF9pbnB1dF9tc2ciLCJtc2ckMCIsInJ1bl9hc19wcHhfcmV3cml0ZXJfbWFpbiIsImZsYWdzX2FuZF9wcm9nX25hbWUiLCJpbnB1dF9mbiIsIm91dHB1dF9mbiIsInByb2dfbmFtZV9hbmRfZmxhZ3MiLCJhc3QkNCIsImFzdCQzIiwic3RhbmRhbG9uZSIsImFyZ3YiLCJydW5fYXNfcHB4X3Jld3JpdGVyIiwicHJldHR5JDAiLCJlbmFibGVfY2hlY2tzIiwiZW5hYmxlX2xvY2F0aW9uX2NoZWNrIiwiZGlzYWJsZV9sb2NhdGlvbl9jaGVjayIsIm1hcF9zdHJ1Y3R1cmUiLCJ2YXIkMCIsInZhcnNfb2YiLCJpZ24iLCJhZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzIiwibXMiLCJmcCIsImJpbmRzX21vZHVsZV9uYW1lcyIsIndhcm5pbmdzIiwiZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpIiwia2VlcF93MzJfaW1wbCIsImtlZXBfdzMyX2ludGYiLCJrZWVwX3czMl9zcGVjIiwiY29udl93MzJfc3BlYyIsImtlZXBfdzMyX2ltcGwkMCIsImtlZXBfdzYwX2ltcGwiLCJrZWVwX3c2MF9pbnRmIiwia2VlcF93NjBfc3BlYyIsImFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwiYXBwbHlfYWxsIiwiZW50cnkiLCJnZW5lcmF0b3JzIiwiZXh0X3RvX2l0ZW0iLCJlbXB0eV9sYWJlbF9lcnJvciIsImR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciIsImFjY2VwdGVkX2FyZ3MiLCJwYXJhbSIsInVuYWNjZXB0ZWRfYXJndW1lbnQiLCJzcGVsbGNoZWNrX21zZyIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImxfZXJyIiwiYWN0dWFsX2Rlcml2ZXJfbmFtZSIsImR1cF9lcnJvciIsImRlcCIsImRlcF9uYW1lIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJkZWZhdWx0JDAiLCJ4IiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJ2YXJzIiwiaSIsImJpbmRpbmdzIiwidmFyJDAiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ2YXJzJDAiLCJ0eHQiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsImJvZHkkMCIsInRwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJpbnRlcm5hbCIsIm4iLCJhcmdzJDAiLCJhcmciLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJmaWVsZF9yZWZzIiwiaW5pdCIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9rZXlzIiwiYXJyYXlfY29uc3RydWN0b3IiLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9tYXAiLCJpZHgiLCJhcnJheV9tYXBpIiwic3RyX2FycmF5IiwibWF0Y2hfcmVzdWx0IiwiZGF0ZV9jb25zdHIiLCJtYXRoIiwiZXJyb3JfY29uc3RyIiwiZXhuX3dpdGhfanNfYmFja3RyYWNlIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInJhaXNlX2pzX2Vycm9yIiwiZSIsInN0cmluZ19vZl9lcnJvciIsIkpTT04iLCJkZWNvZGVVUkkiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwidW5lc2NhcGUiLCJpc05hTiIsImkiLCJwYXJzZUludCIsInMkMCIsInBhcnNlRmxvYXQiLCJleHBvcnRfanMiLCJmaWVsZCIsImV4cG9ydCQwIiwiZXhwb3J0X2FsbCIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJ0MSIsImFjYyQwIiwiaSQwIiwiaGFzIiwidCIsIm1hc2siLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwiaW5zZXJ0QmVmb3JlIiwibm9kZVR5cGUiLCJ0MTMiLCJjYXN0IiwidDE0IiwiZWxlbWVudCIsInRleHQiLCJhdHRyIiwibm9faGFuZGxlciIsImhhbmRsZXIiLCJyZXMiLCJmdWxsX2hhbmRsZXIiLCJ0aGlzJDAiLCJpbnZva2VfaGFuZGxlciIsImV2ZW50IiwiZXZlbnRUYXJnZXQiLCJtYWtlIiwiYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwidDQ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInR5cCIsImgiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwieCQxIiwiYXJyYXlCdWZmZXIiLCJpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJhIiwidiIsInVuc2FmZV9nZXQiLCJkYXRhVmlldyIsIm9mX2FycmF5QnVmZmVyIiwidWludDgiLCJvZl9hcnJheUJ1ZmZlciQwIiwiZmlsdGVyX21hcCIsInEiLCJ2JDAiLCJibG9iX3JhdyIsImNvbnRlbnRUeXBlIiwiZW5kaW5ncyIsIm9wdGlvbnMiLCJibG9iX2Zyb21fc3RyaW5nIiwiYmxvYl9mcm9tX2FueSIsImwiLCJsJDAiLCJhJDAiLCJiIiwiZmlsZW5hbWUiLCJuYW1lJDAiLCJkb2NfY29uc3RyIiwiZG9jdW1lbnQiLCJibG9iIiwic3RyaW5nIiwibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImxvYWRlbmQiLCJmaWxlUmVhZGVyIiwibmFtZSQ1NiIsIm5hbWUkNTUiLCJuYW1lJDU0IiwibmFtZSQ1MyIsIm5hbWUkNTIiLCJuYW1lJDUxIiwibmFtZSQ1MCIsIm5hbWUkNDkiLCJuYW1lJDQ4IiwibmFtZSQ0NyIsIm5hbWUkNDYiLCJuYW1lJDQ1IiwibmFtZSQ0NCIsIm5hbWUkNDMiLCJuYW1lJDQyIiwibmFtZSQ0MSIsIm5hbWUkNDAiLCJuYW1lJDM5IiwibmFtZSQzOCIsIm5hbWUkMzciLCJuYW1lJDM2IiwibmFtZSQzNSIsIm5hbWUkMzQiLCJuYW1lJDMzIiwibmFtZSQzMiIsIm5hbWUkMzEiLCJuYW1lJDMwIiwibmFtZSQyOSIsIm5hbWUkMjgiLCJuYW1lJDI3IiwibmFtZSQyNiIsIm5hbWUkMjUiLCJuYW1lJDI0IiwibmFtZSQyMyIsIm5hbWUkMjIiLCJuYW1lJDIxIiwibmFtZSQyMCIsIm5hbWUkMTkiLCJuYW1lJDE4IiwibmFtZSQxNyIsIm5hbWUkMTYiLCJuYW1lJDE1IiwibmFtZSQxNCIsIm5hbWUkMTMiLCJuYW1lJDEyIiwibmFtZSQxMSIsIm5hbWUkMTAiLCJuYW1lJDkiLCJuYW1lJDgiLCJuYW1lJDciLCJuYW1lJDYiLCJuYW1lJDUiLCJuYW1lJDQiLCJuYW1lJDMiLCJuYW1lJDIiLCJuYW1lJDEiLCJvbklFIiwiY2FuY2VsIiwiY2xpY2siLCJjbG9zZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm8iLCJ3aW5kb3ciLCJnZXRFbGVtZW50QnlJZCIsInBub2RlIiwiZ2V0RWxlbWVudEJ5SWRfZXhuIiwiZ2V0RWxlbWVudEJ5SWRfb3B0IiwiZ2V0RWxlbWVudEJ5SWRfY29lcmNlIiwiY3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZG9jIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaWFsb2ciLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwIiwicHJlIiwic2NyaXB0Iiwic2VsZWN0JDAiLCJzdHlsZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRleHRhcmVhIiwidGZvb3QiLCJ0aCIsInRoZWFkIiwidGl0bGUiLCJ0ciIsInVsIiwiYXVkaW8iLCJ2aWRlbyIsInVuc2FmZUNvZXJjZUV2ZW50IiwiY29uc3RyIiwiZXYiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsImV2ZW50UmVsYXRlZFRhcmdldCIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiIsImV2ZW50QWJzb2x1dGVQb3NpdGlvbiQwIiwiZWxlbWVudENsaWVudFBvc2l0aW9uIiwiZ2V0RG9jdW1lbnRTY3JvbGwiLCJidXR0b25QcmVzc2VkIiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoIiwiZHgiLCJkeSIsImFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyIiwidHJ5X2NvZGUiLCJ0cnlfa2V5X2NvZGVfbm9ybWFsIiwibWFrZV91bmlkZW50aWZpZWQiLCJvZl9ldmVudCIsInZhbHVlIiwidmFsdWUkMyIsInZhbHVlJDIiLCJ2YWx1ZSQxIiwidmFsdWUkMCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicmVxIiwiYyIsImNhbGxiYWNrIiwibm93IiwibGFzdCIsImR0IiwiaGFzUHVzaFN0YXRlIiwiaGFzUGxhY2Vob2xkZXIiLCJoYXNSZXF1aXJlZCIsIm92ZXJmbG93X2xpbWl0Iiwic2V0VGltZW91dCIsImxvb3AiLCJyZW1haW4iLCJzdGVwIiwiY2IiLCJjbGVhclRpbWVvdXQiLCJqc19hcnJheV9vZl9jb2xsZWN0aW9uIiwiZm9ybURhdGEiLCJmb3JtRGF0YV9mb3JtIiwiaGF2ZV9jb250ZW50IiwiZ2V0X2VsZW1lbnRfY29udGVudCIsImZpbGUiLCJmb3JtX2VsZW1lbnRzIiwiaSQxIiwidDMxIiwiYXBwZW5kIiwiZm9ybV9jb250ZW50cyIsImZvcm1fZWx0IiwibGlzdCIsImVtcHR5X2Zvcm1fY29udGVudHMiLCJwb3N0X2Zvcm1fY29udGVudHMiLCJjb250ZW50cyIsImdldF9mb3JtX2NvbnRlbnRzIiwicmVhZHlzdGF0ZWNoYW5nZSIsInRpbWVvdXQiLCJjcmVhdGUiLCJpbXBvcnRfc2NyaXB0cyIsInNjcmlwdHMiLCJzZXRfb25tZXNzYWdlIiwianNfaGFuZGxlciIsInBvc3RfbWVzc2FnZSIsIndlYlNvY2tldCIsImlzX3N1cHBvcnRlZCIsImRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCJnZXRDb250ZXh0IiwiY3R4IiwiZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIiwicmVnZXhwIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF93aXRoX2ZsYWciLCJibHVudF9zdHJfYXJyYXlfZ2V0Iiwic3RyaW5nX21hdGNoIiwic2VhcmNoIiwicmVzX3ByZSIsIm1hdGNoZWRfc3RyaW5nIiwiciIsIm1hdGNoZWRfZ3JvdXAiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImxpc3Rfb2ZfanNfYXJyYXkiLCJpZHgkMSIsImFjY3UiLCJpZHgkMCIsImFjY3UkMCIsInNwbGl0IiwiYm91bmRlZF9zcGxpdCIsInF1b3RlIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiaW50ZXJydXB0IiwicGx1c19yZSIsInVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIiwidDE2IiwidXJsZGVjb2RlIiwidXJsZW5jb2RlIiwid2l0aF9wbHVzIiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsIm4iLCJkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyIsImxlbiIsInQzIiwiZGVjb2RlX2FyZ3VtZW50cyIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwYXRoX3N0ciIsInNzbCIsInVybCIsInVybF9vZl9zdHJpbmciLCJzdHJpbmdfb2ZfdXJsIiwiZnJhZyIsImFyZ3MiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJmcmFnJDAiLCJhcmdzJDAiLCJwYXRoJDAiLCJwb3J0JDAiLCJob3N0JDAiLCJmcmFnJDEiLCJhcmdzJDEiLCJwYXRoJDEiLCJkZWZhdWx0X2h0dHBfcG9ydCIsImRlZmF1bHRfaHR0cHNfcG9ydCIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJvYnNlcnZlIiwiYm94IiwiZW50cnlfdHlwZXMiLCJlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0IiwiY2hpbGRfbGlzdCIsImF0dHJpYnV0ZXMiLCJjaGFyYWN0ZXJfZGF0YSIsInN1YnRyZWUiLCJhdHRyaWJ1dGVfb2xkX3ZhbHVlIiwiY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIiwiYXR0cmlidXRlX2ZpbHRlciIsInJlbW92ZSIsImZpbmQiLCJrZXlzIiwicmV2aXZlciIsInVuc2FmZV9pbnB1dCIsIm1sSW50NjRfY29uc3RyIiwib3V0cHV0X3Jldml2ZXIiLCJvdXRwdXQiLCJzdHJpbmdfb2ZfbmFtZSIsIm5hbWVfb2Zfc3RyaW5nIiwicmdiX29mX25hbWUiLCJyZ2IiLCJoc2wiLCJzdHJpbmdfb2ZfdCIsImIkMCIsImckMCIsInIkMCIsImIkMSIsImckMSIsInIkMSIsImIkMiIsImckMiIsInIkMiIsImEkMSIsImgkMCIsImhleF9vZl9yZ2IiLCJibHVlIiwiZ3JlZW4iLCJyZWQiLCJpbl9yYW5nZSIsImpzX3Rfb2ZfanNfc3RyaW5nIiwidDEyIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwiY3JlYXRlQWx0R2x5cGgiLCJjcmVhdGVBbHRHbHlwaERlZiIsImNyZWF0ZUFsdEdseXBoSXRlbSIsImNyZWF0ZUFuaW1hdGUiLCJjcmVhdGVBbmltYXRlQ29sb3IiLCJjcmVhdGVBbmltYXRlTW90aW9uIiwiY3JlYXRlQW5pbWF0ZVRyYW5zZm9ybSIsImNyZWF0ZUNpcmNsZSIsImNyZWF0ZUNsaXBQYXRoIiwiY3JlYXRlQ3Vyc29yIiwiY3JlYXRlRGVmcyIsImNyZWF0ZURlc2MiLCJjcmVhdGVFbGxpcHNlIiwiY3JlYXRlRmlsdGVyIiwiY3JlYXRlRm9udCIsImNyZWF0ZUZvbnRGYWNlIiwiY3JlYXRlRm9udEZhY2VGb3JtYXQiLCJjcmVhdGVGb250RmFjZU5hbWUiLCJjcmVhdGVGb250RmFjZVNyYyIsImNyZWF0ZUZvbnRGYWNlVXJpIiwiY3JlYXRlRm9yZWlnbk9iamVjdCIsImNyZWF0ZUciLCJjcmVhdGVHbHlwaCIsImNyZWF0ZUdseXBoUmVmIiwiY3JlYXRlaGtlcm4iLCJjcmVhdGVJbWFnZSIsImNyZWF0ZUxpbmVFbGVtZW50IiwiY3JlYXRlTGluZWFyRWxlbWVudCIsImNyZWF0ZU1hc2siLCJjcmVhdGVNZXRhRGF0YSIsImNyZWF0ZU1pc3NpbmdHbHlwaCIsImNyZWF0ZU1QYXRoIiwiY3JlYXRlUGF0aCIsImNyZWF0ZVBhdHRlcm4iLCJjcmVhdGVQb2x5Z29uIiwiY3JlYXRlUG9seWxpbmUiLCJjcmVhdGVSYWRpYWxncmFkaWVudCIsImNyZWF0ZVJlY3QiLCJjcmVhdGVTZXQiLCJjcmVhdGVTdG9wIiwiY3JlYXRlU3ZnIiwiY3JlYXRlU3dpdGNoIiwiY3JlYXRlU3ltYm9sIiwiY3JlYXRlVGV4dEVsZW1lbnQiLCJjcmVhdGVUZXh0cGF0aCIsImNyZWF0ZVRyZWYiLCJjcmVhdGVUc3BhbiIsImNyZWF0ZVVzZSIsImNyZWF0ZVZpZXciLCJjcmVhdGV2a2VybiIsInN2Z19lbGVtZW50IiwidDgiLCJhbHRHbHlwaCIsImFsdEdseXBoRGVmIiwiYWx0R2x5cGhJdGVtIiwiYW5pbWF0ZSIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVNb3Rpb24iLCJhbmltYXRlVHJhbnNmb3JtIiwiY2lyY2xlIiwiY2xpcFBhdGgiLCJjdXJzb3IiLCJkZWZzIiwiZGVzYyIsImVsbGlwc2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udEZhY2UiLCJmb250RmFjZUZvcm1hdCIsImZvbnRGYWNlTmFtZSIsImZvbnRGYWNlU3JjIiwiZm9udEZhY2VVcmkiLCJmb3JlaWduT2JqZWN0IiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lRWxlbWVudCIsImxpbmVhckVsZW1lbnQiLCJtZXRhRGF0YSIsIm1pc3NpbmdHbHlwaCIsIm1QYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbGdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJzdmciLCJzd2l0Y2gkMCIsInN5bWJvbCIsInRleHRFbGVtZW50IiwidGV4dHBhdGgiLCJ0cmVmIiwidHNwYW4iLCJ1c2UiLCJ2aWV3Iiwidmtlcm4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJldmVudFNvdXJjZSIsImV2ZW50U291cmNlX29wdGlvbnMiLCJjb25zb2xlIiwiZW1wdHlfcG9zaXRpb25fb3B0aW9ucyIsImdlb2xvY2F0aW9uIiwiZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wIiwiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlIiwib2JqZWN0X29wdGlvbnMiLCJvcHRpb25zJDAiLCJvcHRpb25zJDEiLCJvcHRpb25zJDIiLCJpbnRsIiwiY29sbGF0b3JfY29uc3RyIiwiZGF0ZVRpbWVGb3JtYXRfY29uc3RyIiwibnVtYmVyRm9ybWF0X2NvbnN0ciIsInBsdXJhbFJ1bGVzX2NvbnN0ciIsInRvX2FycmF5ZiIsImYiLCJhIiwib2ZfYXJyYXlmIiwidG9fbGlzdCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdGYiLCJvZl9saXN0ZiIsIm9wdGRlZiIsIngiLCJ0b19vcHRkZWYiLCJ4JDAiLCJ1bm9wdGRlZl9mIiwiZGVmIiwidW5vcHRkZWYiLCJjb252ZGVmIiwidG9fb3B0Iiwib3B0IiwiY29udm9wdCIsImpzX2xvZyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwiYXNzaWduIiwiYXNzaWduX2xpc3QiLCJyZW1vdmVfdW5kZWZpbmVkIiwibyIsImsiLCJjcmVhdGUiLCJhZGQiLCJ2IiwiYWRkX2xpc3QiLCJhZGRfbGlzdGYiLCJtYWtlIiwibWFrZWYiLCJyZW1vdmUiLCJmaW5kIiwia2V5cyIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwianRoZW4wIiwiZXJyb3IiLCJleG4kMCIsImVmIiwiZXJyb3IkMCIsImp0aGVuIiwianRoZW4wX29wdCIsInByb20iLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibG9nX3N0cjIiLCJzMSIsInMyIiwibG9nX3N0cjMiLCJzMyIsImRlYnVnIiwiZGVidWcyIiwiZGVidWczIiwiZGVidWdfc3RyIiwiZGVidWdfc3RyMiIsImRlYnVnX3N0cjMiLCJ3YXJuIiwid2FybjIiLCJ3YXJuMyIsIndhcm5fc3RyIiwid2Fybl9zdHIyIiwid2Fybl9zdHIzIiwiZXJyb3IyIiwiZXJyb3IzIiwiZXJyb3Jfc3RyIiwiZXJyb3Jfc3RyMiIsImVycm9yX3N0cjMiLCJiaWdJbnQiLCJvZl9zdHJpbmciLCJvZl9pbnQiLCJpIiwib2ZfaW50NjQiLCJvZl9uYXRpdmUiLCJvZl9mbG9hdCIsInRvX2xvY2FsZV9zdHJpbmciLCJvcHRpb25zIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsImxpc3RlbiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwiY3JlYXRlIiwic3RvcmUiLCJhZGQiLCJrZXkiLCJ4IiwicHV0IiwicmFuZ2UiLCJvbG93ZXIiLCJvdXBwZXIiLCJsb3dlciIsInVwcGVyIiwidXBwZXIkMSIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY291bnQiLCJrIiwiZ2V0Iiwib2ZfanMiLCJqcyIsImpzJDAiLCJnZXRfYWxsIiwiZ2V0X2tleSIsImdldF9hbGxfa2V5cyIsImRlbGV0ZSQwIiwiaXRlciIsImRpcmVjdGlvbiIsImMiLCJmb2xkIiwic3RhcnQiLCJhY2MiLCJjYWxsYmFjayQwIiwiaXRlcl9rZXlzIiwiZm9sZF9rZXlzIiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4IiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJmaWxlIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiY2h1bmtfc2l6ZSIsImJ1ZmZlciIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJhcHBlbmQiLCJmYWlsX2lmX2V4aXN0cyIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMTk0IiwiZXJyb3Jfc291cmNlXzI2MyIsImVycm9yX3NvdXJjZV8yNzUiLCJlcnJvcl9zb3VyY2VfMzE3IiwiZXJyb3Jfc291cmNlXzQxNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVxdWFsIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXF1YWwkMCIsImV2YWxfZmFpbCIsImxvYyIsImZtdCIsInMiLCJjdXN0b21fcHJpbnRmXzAwMSIsImVxdWFsX29wdGlvbiIsImEiLCJiIiwieSIsIngiLCJjb21wYXJlJDAiLCJjbXBfYSIsImFfMDAyIiwiYl8wMDMiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJuIiwic2V4cF9vZl90JDEiLCJvZl9hXzAxOSIsInNvcnRlZF8wMjEiLCJhcmdfMDIyIiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJibmRzXzAyMCIsImNyZWF0ZSIsImVxIiwieHMkMSIsInNvcnRlZCIsInMyIiwiczEiLCJ4cyQwIiwibGFzdF92YWx1ZSQxIiwibGFzdF9rZXkkMSIsImFjYyIsImxhc3Rfa2V5IiwibGFzdF92YWx1ZSIsInhzIiwibGFzdF92YWx1ZSQwIiwibGFzdF9rZXkkMCIsInNvcnRlZCQwIiwiZXhwb3NlIiwidCIsIm1hcCIsImYiLCJ2IiwiayIsInRvX21kNSIsIm9mX21kNSIsInNleHBfb2ZfdCQyIiwidF9vZl9zZXhwJDEiLCJ1dWlkIiwidSIsImludCQwIiwicGFpciIsImxpc3QiLCJsIiwiY29uc3RydWN0b3IiLCJzZXhwX29mX3QkMyIsIm9mX2FfMDk2IiwiYXJnMV8wOTgiLCJhcmcwXzA5NyIsInJlczBfMDk5IiwicmVzMV8xMDAiLCJhcmcxXzEwMiIsImFyZzBfMTAxIiwicmVzMF8xMDMiLCJyZXMxXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJhcmcwXzExMSIsInJlczBfMTEyIiwiYXJnMV8xMDgiLCJhcmcwXzEwNyIsInJlczBfMTA5IiwicmVzMV8xMTAiLCJhcmcwXzExNyIsInJlczBfMTE4IiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiYXJnMV8xMjIiLCJhcmcwXzEyMSIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJhcmcxXzEyNiIsImFyZzBfMTI1IiwicmVzMF8xMjciLCJyZXMxXzEyOCIsImFyZzBfMTI5IiwicmVzMF8xMzAiLCJjb21wYXJlJDIiLCJhXzEzMiIsImJfMTMzIiwiYV8xMzQiLCJiXzEzNyIsImJfMTM1IiwiYV8xMzYiLCJhXzE0MCIsImFfMTM4IiwiYl8xNDEiLCJiXzEzOSIsIm4kMCIsImFfMTQyIiwiYl8xNDMiLCJhXzE0NCIsImJfMTQ1IiwiYV8xNDYiLCJiXzE0NyIsImFfMTQ4IiwiYl8xNDkiLCJhXzE1MCIsImJfMTUxIiwidF8xNTMiLCJ0XzE1MiIsInRfMTU1IiwidF8xNTQiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsInRfMTYxIiwidF8xNjAiLCJ0XzE2MyIsInRfMTYyIiwiYV8xNjQiLCJiXzE2NSIsImFfMTY2IiwiYl8xNjciLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsImFfMTc0IiwiYV8xNzIiLCJiXzE3NSIsImJfMTczIiwibiQxIiwiYV8xNzYiLCJiXzE3NyIsImFfMTgwIiwiYV8xNzgiLCJiXzE4MSIsImJfMTc5IiwibiQyIiwiYV8xODIiLCJiXzE4MyIsImFfMTg0IiwiYl8xODUiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJ0b19kaWdlc3QiLCJ0b19kaWdlc3QkMCIsIngkMiIsImVxdWFsJDEiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTg2IiwiYl8xODciLCJiXzE4OSIsImFfMTg4IiwiYV8xOTAiLCJiXzE5MSIsInNleHBfb2ZfdDAiLCJhcmcwXzIwMSIsInJlczBfMjAyIiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkNCIsIm9mX3N0cmluZyQxIiwidG9fc3RyaW5nJDIiLCJzeW1ib2wiLCJjb21wYXJlJDMiLCJlcXVhbCQyIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkNSIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDMiLCJjb21wYXJhdG9yIiwiZXF1YWwkMyIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ2IiwiY3JlYXRlJDMiLCJ0cmlwcyIsImdpZCIsIm1lbWJlcnMiLCJ2cyIsImxvb2t1cCIsImciLCJjdXN0b21fcHJpbnRmXzM0NSIsInNjaGVtZSIsImVxdWFsJDUiLCJhXzM0NiIsImJfMzQ3IiwiYV8zNDYkMCIsImJfMzQ3JDAiLCJhXzM0OCIsImJfMzUxIiwiYl8zNDkiLCJhXzM1MCIsImFfMzU0IiwiYV8zNTIiLCJiXzM1NSIsImJfMzUzIiwiYV8zNTYiLCJiXzM1NyIsImFfMzU4IiwiYl8zNTkiLCJhXzM2MCIsImJfMzYxIiwidF8zNjMiLCJ0XzM2MiIsInRfMzY1IiwidF8zNjQiLCJhXzM2NiIsImJfMzY3IiwiYV8zNjgiLCJiXzM2OSIsInRfMzcxIiwidF8zNzAiLCJ0XzM3MyIsInRfMzcyIiwiYV8zNzQiLCJiXzM3NSIsImFfMzc2IiwiYl8zNzciLCJhXzM3OCIsImJfMzc5IiwiYV8zODAiLCJiXzM4MSIsInRfMzgzIiwidF8zODIiLCJ0XzM4NSIsInRfMzg0IiwiYV8zODYiLCJiXzM4NyIsInJpZ2h0XzIzOCIsImxlZnRfMjM3IiwidF8yNDAiLCJ0XzIzOSIsInRfMjQyIiwidF8yNDEiLCJhXzI0MyIsImJfMjQ0IiwicmlnaHRfMjQ2IiwibGVmdF8yNDUiLCJ0XzI0OCIsInRfMjQ3IiwidF8yNTAiLCJ0XzI0OSIsImFfMzkwIiwiYl8zOTEiLCJ0XzM5MyIsInRfMzkyIiwidF8zOTUiLCJ0XzM5NCIsImFfMzk4IiwiYV8zOTYiLCJiXzM5OSIsImJfMzk3IiwiYV80MDAiLCJiXzQwMSIsImFfNDA2IiwiYV80MDQiLCJhXzMwMSIsImJfNDA3IiwiYl80MDUiLCJiXzQwMyIsImFfMzAzIiwiYl8zMDQiLCJ0XzMwNiIsInRfMzA1IiwidF8zMDgiLCJ0XzMwNyIsInRfMzEwIiwidF8zMDkiLCJ0XzMxMiIsInRfMzExIiwiYV8zMTMiLCJiXzMxNCIsImFfNDEwIiwiYl80MTEiLCJ0X29mX3NleHAkNSIsInNleHBfNDE2IiwidGFnXzQxNyIsInNleHBfYXJnc180MTgiLCJhcmcxXzQyMCIsImFyZzBfNDE5IiwicmVzMF80MjEiLCJyZXMxXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcxXzQyNyIsImFyZzBfNDI2IiwicmVzMF80MjgiLCJyZXMxXzQyOSIsInNleHBfYXJnc180NTciLCJhcmcwXzQ2MyIsImFyZzFfNDU5IiwiYXJnMF80NTgiLCJyZXMwXzQ2MCIsInJlczFfNDYxIiwic2V4cF8yNTUiLCJhdG9tXzI1MyIsInNleHBfYXJnc18yNTYiLCJhdG9tXzI1MyQwIiwiYXJnMF8yNjQiLCJhcmcxXzI1OSIsImFyZzBfMjU4IiwicmVzMF8yNjAiLCJyZXMxXzI2MSIsInJlczBfMjY1IiwiYXJnMF8yNzIiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNjkiLCJyZXMxXzI3MCIsInJlczBfMjczIiwicmVzMF80NjQiLCJzZXhwX2FyZ3NfNDc3IiwiYXJnMV80NzkiLCJhcmcwXzQ3OCIsInJlczBfNDgwIiwicmVzMV80ODEiLCJzZXhwX2FyZ3NfNDMyIiwiYXJnMF80MzgiLCJyZXMwXzQzOSIsInNleHBfNDM3IiwiYXJnMV80MzQiLCJhcmcwXzQzMyIsInJlczBfNDM1IiwicmVzMV80MzYiLCJzZXhwX2FyZ3NfNDg0IiwiYXJnMl80ODciLCJhcmcxXzQ4NiIsImFyZzBfNDg1Iiwic2V4cF8zMjciLCJhcmcxXzMyNCIsImFyZzBfMzIzIiwicmVzMF8zMjUiLCJhcmcxXzMxOSIsImFyZzBfMzE4IiwicmVzMF8zMjAiLCJyZXMxXzMyMSIsInJlczFfMzI2IiwicmVzMF80ODgiLCJyZXMxXzQ4OSIsInJlczJfNDkwIiwic2V4cF9hcmdzXzQ1MiIsImFyZzBfNDUzIiwicmVzMF80NTQiLCJzZXhwX2FyZ3NfNDY3IiwiYXJnMF80NzMiLCJhcmcxXzQ2OSIsImFyZzBfNDY4IiwicmVzMF80NzAiLCJyZXMxXzQ3MSIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0MiIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwXzQ0NyIsImFyZzFfNDQ0IiwiYXJnMF80NDMiLCJyZXMwXzQ0NSIsInJlczFfNDQ2Iiwic2V4cF9vZl90JDciLCJhcmcxXzQ5MiIsImFyZzBfNDkxIiwicmVzMF80OTMiLCJyZXMxXzQ5NCIsImFyZzFfNDk2IiwiYXJnMF80OTUiLCJyZXMwXzQ5NyIsInJlczFfNDk4IiwiYXJnMF81MDMiLCJyZXMwXzUwNCIsImFyZzFfNTAwIiwiYXJnMF80OTkiLCJyZXMwXzUwMSIsInJlczFfNTAyIiwiYXJnMF81MDkiLCJyZXMwXzUxMCIsImFyZzFfNTA2IiwiYXJnMF81MDUiLCJyZXMwXzUwNyIsInJlczFfNTA4IiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsImFyZzBfNTE3IiwiYXJnMV81MTQiLCJhcmcwXzUxMyIsInJlczBfNTE1IiwicmVzMV81MTYiLCJ2XzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwidl8yODIiLCJhcmcxXzI4NCIsImFyZzBfMjgzIiwicmVzMF8yODUiLCJyZXMxXzI4NiIsInJlczBfNTE4IiwiYXJnMF81MjMiLCJhcmcxXzUyMCIsImFyZzBfNTE5IiwicmVzMF81MjEiLCJyZXMxXzUyMiIsInJlczBfNTI0IiwiYXJnMV81MjYiLCJhcmcwXzUyNSIsInJlczBfNTI3IiwicmVzMV81MjgiLCJhcmcyXzUzMSIsImFyZzFfNTMwIiwiYXJnMF81MjkiLCJtZW1iZXJzXzMzNSIsImxvY18zMzMiLCJnaWRfMzMxIiwiYXJnXzMzNiIsImFyZzFfMzQyIiwiYXJnMF8zNDEiLCJyZXMwXzM0MyIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzMzOSIsInJlczFfMzQwIiwicmVzMV8zNDQiLCJibmRzXzMzMCIsImFyZ18zMzQiLCJibmRzXzMzMCQwIiwiYXJnXzMzMiIsImJuZHNfMzMwJDEiLCJyZXMwXzUzMiIsInJlczFfNTMzIiwicmVzMl81MzQiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImlzX2N5Y2xpYyIsImlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nXyIsImxvb2t1cCQwIiwiYV81MzUiLCJiXzUzNiIsInRfNTM4IiwidF81MzciLCJ0XzU0MCIsInRfNTM5IiwiYXJnMV81NDIiLCJhcmcwXzU0MSIsInJlczBfNTQzIiwicmVzMV81NDQiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl81NDUiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJzdGFibGVfd2l0bmVzc19hcnJheSIsInN0YWJsZV93aXRuZXNzX2xhenlfdCIsInN0YWJsZV93aXRuZXNzX2xpc3QiLCJzdGFibGVfd2l0bmVzc19vcHRpb24iLCJzdGFibGVfd2l0bmVzc19yZWYiLCJvZl9zZXJpYWxpemFibGUiLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfYXJyYXkiLCJhciIsImVsc19wb3NfcmVmIiwiaSIsImJpbl93cml0ZV9oYXNodGJsIiwiYmluX3dyaXRlX2tleSIsImJpbl93cml0ZV92YWwiLCJwbGVuIiwiY250X3JlZiIsImNvbGxfaHRibCIsInJlc19wb3MiLCJiaW5fd3JpdGVfZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVfZmxvYXQ2NF92ZWMiLCJiaW5fd3JpdGVfZmxvYXQzMl9tYXQiLCJtIiwibGVuMSIsImxlbjIiLCJwb3MkMSIsImJpbl93cml0ZV9mbG9hdDY0X21hdCIsImJpbl93cml0ZV9iaWdzdHJpbmciLCJzIiwiYmluX3dyaXRlX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlX2ludF84Yml0IiwiYmluX3dyaXRlX2ludF8xNmJpdCIsImJpbl93cml0ZV9pbnRfMzJiaXQiLCJiaW5fd3JpdGVfaW50XzY0Yml0IiwiYmluX3dyaXRlX2ludDY0X2JpdHMiLCJiaW5fd3JpdGVfbmV0d29yazE2X2ludCIsImJpbl93cml0ZV9uZXR3b3JrMzJfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZV9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfYXJyYXkiLCJlbCQxIiwibWF5YmVfZmxvYXQiLCJlbCQwIiwiZmlyc3QiLCJyZXMiLCJiaW5fcmVhZF9oYXNodGJsIiwiYmluX3JlYWRfa2V5IiwiYmluX3JlYWRfdmFsIiwicmVhZF9rdl9wYWlyIiwiZWxzIiwiYmluX3JlYWRfZmxvYXQzMl92ZWMiLCJ2ZWMiLCJiaW5fcmVhZF9mbG9hdDY0X3ZlYyIsImJpbl9yZWFkX2Zsb2F0MzJfbWF0IiwibWF0IiwiYmluX3JlYWRfZmxvYXQ2NF9tYXQiLCJiaW5fcmVhZF9iaWdzdHJpbmciLCJiaW5fcmVhZF92YXJpYW50X2ludCIsImJpbl9yZWFkX2ludF84Yml0IiwiYmluX3JlYWRfaW50XzE2Yml0IiwiYmluX3JlYWRfaW50XzMyYml0IiwiYmluX3JlYWRfaW50XzY0Yml0IiwiYmluX3JlYWRfaW50NjRfYml0cyIsImJpbl9yZWFkX25ldHdvcmsxNl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRfbmV0d29yazY0X2ludCIsImJpbl9yZWFkX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkX21kNSIsImJpbl9zaGFwZV91bml0IiwiYmluX3NoYXBlX2Jvb2wiLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2hhcGVfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NoYXBlX2ludDYzIiwiYmluX3NoYXBlX2ludDY0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaGFwZV9uYXQwIiwiYmluX3NoYXBlX2RpZ2VzdCIsImJpbl9zaGFwZV9mbG9hdDMyX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDY0X3ZlYyIsImJpbl9zaGFwZV92ZWMiLCJiaW5fc2hhcGVfZmxvYXQzMl9tYXQiLCJiaW5fc2hhcGVfZmxvYXQ2NF9tYXQiLCJiaW5fc2hhcGVfbWF0IiwiYmluX3NoYXBlX2JpZ3N0cmluZyIsImJpbl9zaGFwZV9mbG9hdGFycmF5IiwiYmluX3NoYXBlX3ZhcmlhbnRfaW50IiwiYmluX3NoYXBlX2ludF84Yml0IiwiYmluX3NoYXBlX2ludF8xNmJpdCIsImJpbl9zaGFwZV9pbnRfMzJiaXQiLCJiaW5fc2hhcGVfaW50XzY0Yml0IiwiYmluX3NoYXBlX2ludDY0X2JpdHMiLCJiaW5fc2hhcGVfbmV0d29yazE2X2ludCIsImJpbl9zaGFwZV9uZXR3b3JrMzJfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaGFwZV9uZXR3b3JrNjRfaW50IiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2hhcGVfb3B0aW9uIiwiYmluX3NoYXBlX2xpc3QiLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2hhcGVfaGFzaHRibCIsInkiLCJiaW5fc2hhcGVfbGF6eSIsImJpbl9zaGFwZV9wYWlyIiwiYmluX3NoYXBlX3RyaXBsZSIsInoiLCJiaW5fc2l6ZV91bml0IiwiYmluX3NpemVfYm9vbCIsImJpbl9zaXplX2NoYXIiLCJiaW5fc2l6ZV9tZDUiLCJiaW5fc2l6ZV9pbnRfbmF0MCIsImJpbl9zaXplX2ludF9uZWdhdGl2ZSIsImJpbl9zaXplX2ludCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9pbnQkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfdW5pdCQwIiwiYmluX3NpemVfYm9vbCQwIiwiYmluX3NpemVfY2hhciQwIiwiYmluX3NpemVfaW50JDEiLCJiaW5fc2l6ZV9uYXQwJDAiLCJiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMiLCJzaXplX2xlbiIsImJpbl9zaXplX3N0cmluZyIsImJpbl9zaXplX2J5dGVzIiwiYmluX3NpemVfbWQ1JDEiLCJiaW5fc2l6ZV9mbG9hdCQwIiwiZiIsImJpbl9zaXplX2ludDMyIiwiYmluX3NpemVfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX3JlZiIsImJpbl9zaXplX2xhenlfdCIsImJpbl9zaXplX29wdGlvbiIsImJpbl9zaXplX2ludDMyJDAiLCJiaW5fc2l6ZV9pbnQ2NCQwIiwiYmluX3NpemVfbmF0aXZlaW50IiwiYmluX3NpemVfcmVmJDAiLCJiaW5fc2l6ZV9lbCIsImJpbl9zaXplX2xhenlfdCQwIiwiYmluX3NpemVfb3B0aW9uJDAiLCJiaW5fc2l6ZV9wYWlyJDAiLCJiaW5fc2l6ZV9hIiwiYmluX3NpemVfYiIsImJpbl9zaXplX3RyaXBsZSQwIiwiYmluX3NpemVfYyIsImJpbl9zaXplX2xpc3QiLCJzaXplX2FjYyIsImxlbl9hY2MiLCJsZW5fYWNjJDAiLCJzaXplX2FjYyQwIiwiYmluX3NpemVfZmxvYXRhcnJheSIsImJpbl9zaXplX2FycmF5IiwibGVuJDAiLCJ0b3RhbF9sZW4iLCJ0b3RhbF9sZW5fcmVmIiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfdmFyaWFudF9pbnQiLCJiaW5fcmVhZGVyX3ZhcmlhbnRfaW50IiwiYmluX3ZhcmlhbnRfaW50IiwiYmluX3dyaXRlcl9pbnRfOGJpdCIsImJpbl9yZWFkZXJfaW50XzhiaXQiLCJiaW5faW50XzhiaXQiLCJiaW5fd3JpdGVyX2ludF8xNmJpdCIsImJpbl9yZWFkZXJfaW50XzE2Yml0IiwiYmluX2ludF8xNmJpdCIsImJpbl93cml0ZXJfaW50XzMyYml0IiwiYmluX3JlYWRlcl9pbnRfMzJiaXQiLCJiaW5faW50XzMyYml0IiwiYmluX3dyaXRlcl9pbnRfNjRiaXQiLCJiaW5fcmVhZGVyX2ludF82NGJpdCIsImJpbl9pbnRfNjRiaXQiLCJiaW5fd3JpdGVyX2ludDY0X2JpdHMiLCJiaW5fcmVhZGVyX2ludDY0X2JpdHMiLCJiaW5faW50NjRfYml0cyIsImJpbl93cml0ZXJfbmV0d29yazE2X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazE2X2ludCIsImJpbl9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50IiwiYmluX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQzMiIsImJpbl9yZWFkZXJfbmV0d29yazMyX2ludDMyIiwiYmluX25ldHdvcmszMl9pbnQzMiIsImJpbl93cml0ZXJfbmV0d29yazY0X2ludCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludCIsImJpbl9uZXR3b3JrNjRfaW50IiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50NjQiLCJiaW5fcmVhZGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9uZXR3b3JrNjRfaW50NjQiLCJjbnZfd3JpdGVyIiwiY252IiwidHBfY2xhc3MiLCJjbnZfcmVhZGVyIiwidnRhZyIsImZvcl9zaGFwZSIsImZvcl93cml0ZXIiLCJmb3JfcmVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX3dyaXRlX3NpemVfaGVhZGVyIiwiYmluX3JlYWRfc2l6ZV9oZWFkZXIiLCJiaW5fZHVtcCIsIndyaXRlciIsImhlYWRlciIsInBvc19sZW4iLCJ0b3RfbGVuIiwicG9zX2xlbiQwIiwiYnVmJDAiLCJidWYkMSIsImJpbl9yZWFkX3N0cmVhbSIsIm1heF9zaXplIiwicmVhZCIsInJlYWRlciIsIm1heF9zaXplJDAiLCJtc2ciLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsIm1heWJlX2Fubm90YXRlX3NoYXBlIiwibWF5YmVfdXVpZCIsInNoYXBlIiwidXVpZCIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInQiLCJiaW5fd3JpdGVfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fc2l6ZV90JDAiLCJiaW5fd3JpdGVfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaGFwZV9lbCIsImJpbl93cml0ZXIiLCJiaW5fcmVhZGVyIiwidHlwZV9jbGFzcyIsImJpbl9zaGFwZV9lbDEiLCJiaW5fc2hhcGVfZWwyIiwiYmluX3NpemVfZWwxIiwiYmluX3NpemVfZWwyIiwiYmluX3dyaXRlX2VsMSIsImJpbl93cml0ZV9lbDIiLCJiaW5fcmVhZF9lbDEiLCJiaW5fcmVhZF9lbDIiLCJiaW5fd3JpdGVyMSIsImJpbl93cml0ZXIyIiwiYmluX3JlYWRlcjEiLCJiaW5fcmVhZGVyMiIsInR5cGVfY2xhc3MxIiwidHlwZV9jbGFzczIiLCJiaW5fc2hhcGVfZWwzIiwiYmluX3NpemVfZWwzIiwiYmluX3dyaXRlX2VsMyIsImJpbl9yZWFkX2VsMyIsImJpbl93cml0ZXIzIiwiYmluX3JlYWRlcjMiLCJ0eXBlX2NsYXNzMyIsIm1heWJlX2NhbGxlcl9pZGVudGl0eSIsIndpdGhfbW9kdWxlX25hbWUiLCJtb2R1bGVfbmFtZSIsImZ1bmN0aW9uX25hbWUiLCJtb2R1bGVfbmFtZSQwIiwic2l6ZV9yZWYiLCJpZHgiLCJyZXN1bHQiLCJ0MSIsInQyIiwidDMiLCJiaW5fcmVhZF91bml0JDAiLCJ2aW50IiwiYmluX3JlYWRfYm9vbCQwIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRfaW50JDAiLCJiaW5fcmVhZF9mbG9hdCQwIiwiYmluX3JlYWRfZmxvYXRhcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJzdGFibGVfd2l0bmVzcyIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJzZXhwX29mX3QiLCJvZl9hXzAwMyIsInN0YXJ0X2EiLCJlbmRfYSIsIndyaXR0ZW4iLCJleHBlY3RlZF9zaXplIiwib2ZfYmluYWJsZSIsInRvX2JpbmFibGUiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsInRvX29wYXF1ZSIsImJsb2IiLCJvZl9vcGFxdWVfZXhuIiwiY29tcGFyZSQwIiwic2V4cF9vZl90JDAiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwic3RyaW5nX29mX2JpZ3N0cmluZyIsImJpbl9yZWFkX3QkNyIsImJpbl9yZWFkX3QkOCIsInRvX29wYXF1ZSQwIiwiYmluX3dyaXRlcl92Iiwib2Zfb3BhcXVlX2V4biQwIiwiYmluX3JlYWRlcl92IiwiZXJyb3IiLCJjb21wYXJlJDEiLCJzZXhwX29mX3QkMSIsImJpbl9zaXplX3QkNSIsImJpbl9yZWFkX3QkMTEiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRlcl90JDIiLCJwcmVfdGVzdF9ob29rIiwibmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCIsInQiLCJpbml0aWFsIiwiYW1fcnVubmluZ19lbnZfdmFyIiwidG9fc3RyaW5nIiwiY29tYmluZSIsInQxIiwidDIiLCJjb21iaW5lX2FsbCIsInRzIiwidGVzdF9tb2R1bGVzX3JhbiIsInRlc3RfbW9kdWxlc19mYWlsZWQiLCJ0ZXN0c19yYW4iLCJ0ZXN0c19mYWlsZWQiLCJkeW5hbWljX2xpYiIsImFjdGlvbiIsImZvcmNlX2Ryb3AiLCJnZXQiLCJjdXJyZW50IiwiZm91bmRfdGVzdCIsImlzX2N1cnJlbnQiLCJwIiwiY3VycmVudCQwIiwiY3VycmVudF90YWdzIiwidCIsIm0iLCJ2ZXJib3NlIiwic3RyaWN0Iiwic2hvd19jb3VudHMiLCJsaXN0X3Rlc3RfbmFtZXMiLCJkZWxheWVkX2Vycm9ycyIsInN0b3Bfb25fZXJyb3IiLCJsb2ciLCJ0aW1lX3NlYyIsInVzZV9jb2xvciIsImluX3BsYWNlIiwiZGlmZl9jb21tYW5kIiwic291cmNlX3RyZWVfcm9vdCIsImRpZmZfcGF0aF9wcmVmaXgiLCJkaXNwbGF5ZWRfZGVzY3IiLCJkZXNjciIsImZpbGVuYW1lIiwibGluZSIsInN0YXJ0X3BvcyIsImVuZF9wb3MiLCJkZXNjciQwIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJsIiwiaSIsInRhZyIsInMiLCJzdHIiLCJmaWxlIiwiaW5kZXgiLCJpbmRleCQwIiwiZmlsZW5hbWUkMCIsImluZGV4X3N0cmluZyIsImluZGV4JDEiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nIiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiY29tcGxldGVfdGFncyIsInVzZWQiLCJsaW5lX251bWJlcl9vcHQiLCJwb3NpdGlvbl9zdGFydCIsImVuZF9vZl9kZWZfZmlsZW5hbWUiLCJsaW5lX251bWJlciIsImZvdW5kIiwicmVxIiwiZHJvcHBlZCIsImRlc2NyJDEiLCJzdWJzdHJpbmciLCJzaG91bGRfcnVuIiwiZGVzY3IkMiIsImNoIiwicmVzdWx0JDAiLCJjYW1sX3JhbmRvbV9zdGF0ZSIsImJhc2VfcmFuZG9tX3N0YXRlIiwicmVzdWx0IiwiYmFja3RyYWNlJDAiLCJleG5fc3RyIiwic2VwIiwic2V0X2xpYl9hbmRfcGFydGl0aW9uIiwic3RhdGljX2xpYiIsIndoaWNoX3Rlc3RzIiwicmVxdWlyZXNfcGFydGl0aW9uIiwidW5zZXRfbGliIiwidGVzdCIsImIiLCJ0ZXN0X3VuaXQiLCJ0ZXN0X21vZHVsZSIsInBhcnRpYWxfdGFncyIsInByZXYiLCJ4IiwiZSQwIiwiZSIsInN1bW1hcml6ZSIsImsiLCJhY2MiLCJjb3VudCIsImNvdW50X3Rlc3RfbW9kdWxlcyIsInVudXNlZF90ZXN0cyIsImVycm9ycyIsInVzZV9jb2xvciQwIiwiaW5fcGxhY2UkMCIsImRpZmZfY29tbWFuZCQwIiwiZGlmZl9wYXRoX3ByZWZpeCQwIiwic291cmNlX3RyZWVfcm9vdCQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJsaXN0JDAiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxlZnRfY29sdW1uX3dpZHRoIiwid2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwiY29udiIsIngiLCJsaWZ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJ1aWQiLCJuZXh0IiwibmFtZSIsImNvZGUiLCJoYXNoIiwic3RhdGljJDAiLCJjb21wYXJlJDAiLCJrMSIsImsyIiwiY21wIiwiYiQwIiwiYSQwIiwieXMiLCJ5IiwieHMiLCJuIiwiZXF1YWwkMCIsImhhc2gkMCIsInN0YXRpYyQxIiwia2V5IiwidCIsInVpZCQwIiwibmFtZSQwIiwiY3JlYXRlIiwic2FtZSIsIm5tMSIsIm5tMiIsInNhbWVfd2l0bmVzcyIsInNhbWVfd2l0bmVzc19leG4iLCJpbnQkMCIsIm1lbSIsInRhYmxlIiwic2V0IiwiZGF0YSIsImZpbmQiLCJkYXRhJDAiLCJmYWlsIiwidWlkX2EiLCJ1aWRfYiIsIm1zZyIsInQkMCIsIndpdG5lc3MiLCJ0eXBlbmFtZV9vZl90IiwiYyIsImQiLCJlIiwibGFiZWwiLCJhcml0eSIsImFyZ3NfbGFiZWxzIiwiaW5kZXgiLCJvY2FtbF9yZXByIiwidHlpZCIsInRyYXZlcnNlIiwiaW50ZXJuYWxfdXNlX29ubHkiLCJsZW5ndGgiLCJ0YWciLCJpc19wb2x5bW9ycGhpYyIsInZhbHVlIiwiZm9sZCIsImluaXQiLCJmIiwiaW50ZXJuYWxfdXNlX29ubHkkMCIsImxhYmVsJDAiLCJpbmRleCQwIiwiZ2V0IiwiaXNfbXV0YWJsZSIsInR5aWQkMCIsInRyYXZlcnNlJDAiLCJpbnRlcm5hbF91c2Vfb25seSQxIiwidHlwZW5hbWVfb2ZfdCQwIiwibGVuZ3RoJDAiLCJmaWVsZCIsImhhc19kb3VibGVfYXJyYXlfdGFnIiwiY3JlYXRlJDAiLCJmb2xkJDAiLCJpbnRlcm5hbF91c2Vfb25seSQyIiwibmFtZSQxIiwibmFtZSQyIiwibmFtZSQzIiwibmFtZSQ0IiwibmFtZSQ1IiwibmFtZSQ2IiwibmFtZSQ3IiwibmFtZSQ4IiwibmFtZSQ5IiwibmFtZSQxMCIsIm5hbWUkMTEiLCJuYW1lJDEyIiwibmFtZSQxMyIsIm5hbWUkMTQiLCJuYW1lJDE1IiwibmFtZSQxNiIsIm5hbWUkMTciLCJuYW1lJDE4IiwibmFtZSQxOSIsInR5cGVuYW1lX29mX2ludCIsInR5cGVuYW1lX29mX2ludDMyIiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9uYXRpdmVpbnQiLCJ0eXBlbmFtZV9vZl9jaGFyIiwidHlwZW5hbWVfb2ZfZmxvYXQiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl91bml0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfZnVuY3Rpb24iLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJyZXAiLCJyZXAkMCIsInJlcCQxIiwicmVwJDIiLCJyZXAkMyIsInJlcCQ0IiwibmFtZSQyMCIsImFyaXR5JDAiLCJjJDAiLCJiJDEiLCJhJDEiLCJkJDAiLCJjJDEiLCJiJDIiLCJhJDIiLCJ0eXBlbmFtZV9vZl90JDEiLCJybmciLCJkb20iLCJyZXAkNSIsInJlcCQ2IiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwicjEiLCJyMiQwIiwicjEkMCIsInIyJDEiLCJ4JDAiLCJyMSQxIiwicjIkMiIsIngkMSIsInIxJDIiLCJyMiQzIiwieCQyIiwicjEkMyIsInIyJDQiLCJ4JDMiLCJybmcxIiwiZG9tMSIsInJuZzIiLCJkb20yIiwidDEkMSIsInQyJDIiLCJiMiIsImEyIiwiYjEiLCJhMSIsImMyIiwiYjIkMCIsImEyJDAiLCJjMSIsImIxJDAiLCJhMSQwIiwiZDIiLCJjMiQwIiwiYjIkMSIsImEyJDEiLCJkMSIsImMxJDAiLCJiMSQxIiwiYTEkMSIsImUyIiwiZDIkMCIsImMyJDEiLCJiMiQyIiwiYTIkMiIsImUxIiwiZDEkMCIsImMxJDEiLCJiMSQyIiwiYTEkMiIsInIxJDQiLCJyMiQ1IiwicjEkNSIsInIyJDYiLCJuYW1lMSIsInIyJDciLCJuYW1lMiIsInIxJDciLCJ4JDQiLCJ0MSQzIiwidDIkMyIsInQyJDQiLCJyMSQ2IiwidDEkMiIsInIyIiwidDIkMSIsInByb29mIiwiaGVhZCIsInQkMSIsInR5cGVyZXBfb2ZfaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2Zfb3B0aW9uIiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9hcnJheSIsInR5cGVyZXBfb2ZfbGF6eV90IiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl90dXBsZTIiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTUiLCJ0eXBlcmVwX29mX2ludDMyIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl90dXBsZTAiLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfaW50NjMiLCJyZXByX29mX3BvbHlfdmFyaWFudCIsInZhcmlhbnQiLCJzaXplIiwicmVwciIsImhhc2hfdmFyaWFudCIsInMiLCJhY2N1IiwiaSIsImRvdWJsZV9hcnJheV92YWx1ZSIsImRvdWJsZSQwIiwic2ltcGxlIiwibWFwX3ZhcmlhbnQiLCJtYXAiLCJ0eXBlbmFtZSIsInBvbHltb3JwaGljIiwidGFncyIsInRhZyQwIiwiZmN0IiwiayIsImF0YWciLCJidGFnIiwibWFwX3JlY29yZCIsInJlY29yZCIsImZpZWxkcyIsImZpZWxkJDAiLCJnZXQkMCIsImFmaWVsZCIsImJmaWVsZCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwic2hhcmVkIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXB1dGF0aW9uIiwiY29tcGlsZXRpbWVfZGVyZWZlcmVuY2UiLCJzaGFyZSIsInJlcXVpcmVkIiwidGFibGUkMCIsImNoZWNrX2RlcGVuZGVuY2llcyIsImltcGxlbWVudHMkMCIsIm1lc3NhZ2UiLCJyZXBsYWNlJDAiLCJtZW0kMCIsInRhYmxlMCIsInRhYmxlMSIsInRhYmxlMiIsInRhYmxlMyIsInRhYmxlNCIsInRhYmxlNSIsImlzX3JlZ2lzdGVyZWQiLCJpZGVudCIsInVuaXQiLCJyZWdpc3RlcjAiLCJjb21wdXRlIiwicmVnaXN0ZXIxIiwicmVnaXN0ZXIyIiwicmVnaXN0ZXIzIiwicmVnaXN0ZXI0IiwicmVnaXN0ZXI1IiwicmVnaXN0ZXIiLCJ0eXBlcmVwX29mX2EiLCJvZl90eXBlcmVwIiwiY29udGV4dCIsIm1lbW9fdGFibGUiLCJyZXAkMTEiLCJyZXAkMTIiLCJyZXAkMTMiLCJyZXAkMTQiLCJyZXAkMTUiLCJ0dXBsZSIsInJhIiwicmIiLCJyYSQwIiwicmIkMCIsInJjIiwicmEkMSIsInJiJDEiLCJyYyQwIiwicmQiLCJyYSQyIiwicmIkMiIsInJjJDEiLCJyZCQwIiwicmUiLCJjb250ZW50IiwibmFtZWQiLCJjdXN0b20iLCJjdXN0b20kMCIsImN1c3RvbSQxIiwicmVwJDciLCJjdXN0b20kMiIsImN1c3RvbSQzIiwicmVwJDgiLCJjdXN0b20kNCIsImN1c3RvbSQ1IiwicmVwJDkiLCJ0eXBlbmFtZV9vZl90JDIiLCJjdXN0b20kNiIsImN1c3RvbSQ3IiwicmVwJDEwIiwidHlwZW5hbWVfb2ZfdCQzIiwiY3VzdG9tJDgiLCJjdXN0b20kOSIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInR5cGVuYW1lX29mX25hbWVkIiwib2ZfcDEiLCJvZl9wMiIsIm9mX3AzIiwib2ZfcDQiLCJvZl9wNSIsInR5cGVyZXBfb2ZfdCIsImVycm9yX3NvdXJjZV8wMDIiLCJoYXNoX2ZvbGRfdCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiZXF1YWwiLCJyZWxhdGl2ZV90byIsImRpciIsInQiLCJ2IiwiZXhuJDAiLCJleG4iLCJkaXJfb3JfZXJyb3IiLCJpbml0aWFsX2RpciIsInRfb2Zfc2V4cCQwIiwieF8wMDMiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwibGluZV9zdGFydCIsImxpbmVfbnVtYmVyIiwiZmlsZW5hbWUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDEzIiwic3RhcnRfcG9zXzAxMSIsImxpbmVfc3RhcnRfMDA5IiwibGluZV9udW1iZXJfMDA3IiwiZmlsZW5hbWVfMDA1IiwiYXJnXzAxNCIsImJuZHNfMDA0IiwiYXJnXzAxMiIsImJuZHNfMDA0JDAiLCJhcmdfMDEwIiwiYm5kc18wMDQkMSIsImFyZ18wMDgiLCJibmRzXzAwNCQyIiwiYXJnXzAwNiIsImJuZHNfMDA0JDMiLCJjb21wYXJlJDAiLCJhXzAxNSIsImJfMDE2IiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwib2Zfc291cmNlX2NvZGVfcG9zaXRpb24iLCJwb3MiLCJzZXhwX29mX3QkMSIsImNvbXBhcmUkMiIsInRvX3N0cmluZyQwIiwib2Zfc3RyaW5nJDAiLCJzIiwiaSIsIm9mX2FfMDAxIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJjbXBfYSIsImFfMDA3IiwiYl8wMDgiLCJhXzAwOSIsImJfMDEwIiwiYV8wMTEiLCJiXzAxMiIsImFfMDEzIiwiYl8wMTQiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiYW1fcnVubmluZ19leHBlY3RfdGVzdCIsImdldF9jdXJyZW50Iiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0IiwibG9jYXRpb24iLCJwb3MiLCJwcmV2X3BvcyIsInByZXZfcG9zJDAiLCJsZW4iLCJmbHVzaCIsInNhdmVfYW5kX3JldHVybl9vdXRwdXQiLCJpbnN0YW5jZSIsInRlc3RzX3J1biQwIiwiZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIiwicyIsImdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIiwibGFzdF9vZnMiLCJuZXh0X29mcyIsImxvYyIsImFjYyIsIm9mcyIsIm91dHB1dHMiLCJ0cmFpbGluZ19vdXRwdXQiLCJzYXZlX291dHB1dCIsInRyYWlsaW5nIiwiYmxvY2tzIiwicnVuIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4Iiwic2FuaXRpemUiLCJzIiwicnVuIiwiZiIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzIiwidG9jcyQwIiwidG9jIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJnZXRfbWFueSIsInN0YWNrJDAiLCJzdGFjayIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImMkMSIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJjJDIiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5YWN0IiwiY2FtbF9wYXJzZXJfZW52IiwiXzIiLCJfMSIsInl5dGFibGVzIiwic2V4cCIsImxleGZ1biIsImxleGJ1ZiIsInNleHBfb3B0Iiwic2V4cHMiLCJyZXZfc2V4cHMiLCJzZXhwc19hYnMiLCJvY2FtbF9sZXhfdGFibGVzIiwiYnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJzY2FuX3N0cmluZyIsImxvY3MiLCJsb2NzJDAiLCJvY2FtbF9sZXhfc3RhdGUkMSIsIm9jYW1sX2xleF9zdGF0ZSQyIiwibG9jcyQxIiwibG9jcyQyIiwic3RhcnQiLCJnZW5fbG9hZF9zZXhwX2xvYyIsInVuaXQiLCJvZl9pbnRfc3R5bGUiLCJvZl9mbG9hdF9zdHlsZSIsInRvX3N0cmluZyIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsInBwIiwicHBfbWFjaCIsInBwX2h1bV9pbmRlbnQiLCJwcF9odW0iLCJkZWZhdWx0X2luZGVudCIsIm1lc3NhZ2UiLCJjb21wYXJlIiwiZXF1YWwiLCJ0X3NleHBfZ3JhbW1hciIsIndpdGhfbmV3X2J1ZmZlciIsIm9jIiwib3V0cHV0X2h1bSIsIm91dHB1dF9odW1faW5kZW50IiwiaW5kZW50Iiwib3V0cHV0X21hY2giLCJwcm5nIiwidGVtcF9maWxlX25hbWUiLCJwcmVmaXgiLCJzdWZmaXgiLCJ2IiwicmFuZF9zdGF0ZSIsInJldCIsInJuZCIsIm9wZW5fdGVtcF9maWxlIiwicGVybSIsImNvdW50ZXIiLCJuYW1lIiwiZSQwIiwiZSIsImNvdW50ZXIkMCIsInNhdmVfb2Zfb3V0cHV0Iiwib3V0cHV0X2Z1bmN0aW9uIiwiZmlsZSIsInRtcF9uYW1lIiwib3V0cHV0X3NleHBfbmwiLCJkb19vdXRwdXQiLCJzYXZlX2h1bSIsInNhdmVfbWFjaCIsIm91dHB1dF9zZXhwc19ubCIsInNhdmVfc2V4cHNfaHVtIiwic2F2ZV9zZXhwc19tYWNoIiwic2Nhbl9zZXhwIiwic2Nhbl9zZXhwX29wdCIsInNjYW5fc2V4cHMiLCJzY2FuX3Jldl9zZXhwcyIsImdldF9tYWluX2J1ZiIsImJ1ZiQwIiwiYnVmJDEiLCJzY2FuX2ZvbGRfc2V4cHMiLCJpbml0IiwibWFpbiIsImFjYyIsImFjYyQwIiwic2Nhbl9pdGVyX3NleHBzIiwic2Nhbl9zZXhwc19jb252IiwiY29sbCIsInNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlIiwiY29udGFpbmluZ19zZXhwIiwibG9jYXRpb24iLCJpbnZhbGlkX3NleHAiLCJleG4iLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJnZXRfc2V4cCIsImdldF9yYW5nZSIsInJhbmdlIiwic2V4cF9vZl9jb252Iiwic2V4cF9vZl9hIiwiYSIsImZpbmRfc2V4cCIsImFubm90X3NleHAiLCJsb29wIiwic3ViX3NleHAiLCJhbm5vdHMiLCJyZXMiLCJleG4kMCIsImludmFsaWRfc2V4cCQwIiwiY3JlYXRlIiwidGV4dF9saW5lIiwidGV4dF9jaGFyIiwiYnVmX3BvcyIsImdsb2JhbF9vZmZzZXQiLCJmYWlsIiwibXNnIiwid2l0aF9idWZfcG9zIiwicGUiLCJwcG9zIiwiYW5ub3RhdGVfc2V4cCIsIml0ZXIiLCJzdGFydF9wb3MkMCIsImFubm90IiwiZW5kX3BvcyQwIiwicmFpc2VfZm91bmQiLCJzdGF0ZSIsInJhaXNlX2ZvdW5kJDAiLCJwb3NpdGlvbnMiLCJwYXJzZV9wb3Nfb2Zfc3RhdGUiLCJydW5fZmVlZF9sb29wIiwic3RhY2siLCJsZW4iLCJzdHIiLCJzdHJfbGVuIiwicG9zX2xlbiIsIm1heF9wb3MiLCJwcmV2aW91c19vZmZzZXQiLCJzdGFjayQwIiwicmVzdWx0Iiwib2Zmc2V0IiwibmV4dF9wb3MiLCJlcnIiLCJwYXJzZV9zdGF0ZSIsInBhcnNlX2Vycm9yIiwidXNlZF9yZWYiLCJwYXJzZV9mdW4iLCJjb250X3N0YXRlIiwicGFyc2UiLCJwYXJzZV9wb3MiLCJsZW4kMCIsInJhaXNlX2ZvdW5kJDEiLCJsZW5ndGgiLCJ1bnNhZmVfZmVlZF9sb29wIiwic3RhY2skMSIsInBvcyQxIiwicGFyc2Vfc3RyIiwicmFpc2VfZm91bmQkMiIsImxlbmd0aCQwIiwidW5zYWZlX2ZlZWRfbG9vcCQwIiwicGFyc2Vfc3RyX2Fubm90IiwicmFpc2VfZm91bmQkMyIsImxlbmd0aCQxIiwidW5zYWZlX2ZlZWRfbG9vcCQxIiwicGFyc2VfYmlnc3RyaW5nIiwicmFpc2VfZm91bmQkNCIsImxlbmd0aCQyIiwidW5zYWZlX2ZlZWRfbG9vcCQyIiwicGFyc2VfYmlnc3RyaW5nX2Fubm90IiwibWtfdGhpc19wYXJzZSIsIm15X3BhcnNlIiwicGFyc2VfcG9zJDAiLCJwYXJzZV9wb3MkMSIsImZlZWRfZW5kX29mX2lucHV0IiwidGhpc19wYXJzZSIsIndzX2J1ZiIsImdlbl9pbnB1dF9zZXhwIiwiaWMiLCJ0aGlzX3BhcnNlJDEiLCJzZXhwJDAiLCJ0aGlzX3BhcnNlJDAiLCJpbnB1dF9zZXhwIiwiZ2VuX2lucHV0X3Jldl9zZXhwcyIsInJldl9zZXhwc19yZWYiLCJidWZfbGVuIiwibGVuJDIiLCJ0aGlzX3BhcnNlJDIiLCJuX3BhcnNlZCIsIm5ld19sZW4iLCJsZW4kMSIsImlucHV0X3Jldl9zZXhwcyIsImlucHV0X3NleHBzIiwib2Zfc3RyaW5nX2JpZ3N0cmluZyIsImxvYyIsImdldF9sZW4iLCJnZXRfc3ViIiwiY29udF9zdGF0ZV9zdHIiLCJvZl9zdHJpbmciLCJvZl9zdHJpbmdfbWFueSIsImdldF9ic3RyX3N1Yl9zdHIiLCJic3RyIiwiaSIsImJzdHJfd3NfYnVmIiwib2ZfYmlnc3RyaW5nIiwiZ2VuX2xvYWRfcmV2X3NleHBzIiwiZXhjJDAiLCJleGMiLCJsb2FkX3Jldl9zZXhwcyIsImxvYWRfc2V4cHMiLCJnZW5fbG9hZF9zZXhwIiwic3RyaWN0IiwidGhpc19wYXJzZSQ0Iiwic2V4cCQxIiwidGhpc19wYXJzZSQzIiwiY29udF9zdGF0ZSQwIiwibG9hZF9zZXhwIiwiZ2V0X3NleHAkMCIsImdldF9yYW5nZSQwIiwic2V4cF9vZl9jb252JDAiLCJmaW5kX3NleHAkMCIsImlucHV0X3Jldl9zZXhwcyQwIiwiaW5wdXRfc2V4cCQwIiwiaW5wdXRfc2V4cHMkMCIsIm9mX3N0cmluZyQwIiwib2ZfYmlnc3RyaW5nJDAiLCJsb2FkX3Jldl9zZXhwcyQwIiwibG9hZF9zZXhwcyQwIiwibG9hZF9zZXhwJDAiLCJjb252IiwiYmFkX3NleHAiLCJiYWRfYW5ub3Rfc2V4cCIsImdldF9jb252X2V4biIsImxpbmUiLCJsb2FkX3NleHBfY29udiIsInN0cmljdCQwIiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwiZm9yZ2V0X3QiLCJ0b2NzJDAiLCJmb3JnZXRfdG9jcyIsImZvcmdldF90b2MkMCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfb2Zfc2V4cCIsImZsb2F0X3ZlY19vZl9zZXhwIiwiZW1wdHlfZmxvYXRfdmVjIiwiY3JlYXRlX2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdDMyX3ZlYyIsImNyZWF0ZV9mbG9hdDY0X3ZlYyIsImVtcHR5X2Zsb2F0MzJfdmVjIiwiZW1wdHlfZmxvYXQ2NF92ZWMiLCJmbG9hdDMyX3ZlY19vZl9zZXhwIiwiZmxvYXQ2NF92ZWNfb2Zfc2V4cCIsInZlY19vZl9zZXhwIiwiY2hlY2tfdG9vX211Y2hfZGF0YSIsImRhdGEiLCJmbG9hdF9tYXRfb2Zfc2V4cCIsImNyZWF0ZV9mbG9hdF9tYXQiLCJzbiIsInNtIiwiZGF0YSQwIiwiZGF0YSQxIiwiY29sJDAiLCJjcmVhdGVfZmxvYXQzMl9tYXQiLCJjcmVhdGVfZmxvYXQ2NF9tYXQiLCJmbG9hdDMyX21hdF9vZl9zZXhwIiwiZmxvYXQ2NF9tYXRfb2Zfc2V4cCIsIm1hdF9vZl9zZXhwIiwic3RyaW5nX29mX29mX3NleHBfb2YiLCJ0b19zZXhwIiwib2Zfc3RyaW5nX29mX29mX3NleHAiLCJvZl9zZXhwIiwidF9vZl9zZXhwIiwidF9vZl9zZXhwJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdW5pdCIsInVuaXRfb2Zfc2V4cCIsInVuaXRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9ib29sIiwiYm9vbF9vZl9zZXhwIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfY2hhciIsImNoYXJfb2Zfc2V4cCIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQiLCJpbnRfb2Zfc2V4cCIsImludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsImZsb2F0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X29mX3NleHAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9vZl9zZXhwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfcmVmIiwicmVmX29mX3NleHAiLCJyZWZfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfb2Zfc2V4cCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9hcnJheSIsImFycmF5X29mX3NleHAiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2V4biIsImV4bl9zZXhwX2dyYW1tYXIiLCJjb2VyY2UiLCJ0YWciLCJkb2NfY29tbWVudF90YWciLCJ0eXBlX25hbWVfdGFnIiwiYXNzb2NfdGFnIiwiYXNzb2Nfa2V5X3RhZyIsImFzc29jX3ZhbHVlX3RhZyIsImNvbXBsZXRpb25fc3VnZ2VzdGVkIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwicmVwciIsInNleHAxIiwicmVnaXN0ZXIyIiwic2V4cF9vZl9hcmcyIiwic2V4cDIiLCJyZWdpc3RlcjMiLCJzZXhwX29mX2FyZzMiLCJzZXhwMyIsInJlZ2lzdGVyNCIsInNleHBfb2ZfYXJnNCIsInNleHA0IiwicmVnaXN0ZXI1Iiwic2V4cF9vZl9hcmc1Iiwic2V4cDUiLCJyZWdpc3RlcjYiLCJzZXhwX29mX2FyZzYiLCJzZXhwNiIsInJlZ2lzdGVyNyIsInNleHBfb2ZfYXJnNyIsInNleHA3IiwicmVnaXN0ZXI4Iiwic2V4cF9vZl9hcmc4Iiwic2V4cDgiLCJyZWdpc3RlcjkiLCJzZXhwX29mX2FyZzkiLCJzZXhwOSIsInJlZ2lzdGVyMTAiLCJzZXhwX29mX2FyZzEwIiwic2V4cDEwIiwiaW50NjQkMCIsImdvbGRlbl9nYW1tYSIsInBvcGNvdW50Iiwib2ZfaW50Iiwic2VlZCIsImNvcHkiLCJvZGRfZ2FtbWEiLCJtaXhfYml0cyIsInoiLCJuIiwibWl4NjQiLCJ6JDAiLCJ6JDEiLCJuZXh0X3NlZWQiLCJ0IiwibmV4dCIsIm9mX3NlZWRfYW5kX2dhbW1hIiwiZ2FtbWEiLCJzZWVkJDAiLCJyYW5kb21faW50NjQiLCJyYW5kb21fc3RhdGUiLCJjcmVhdGUiLCJzcGxpdCIsIm5leHRfaW50NjQiLCJwZXJ0dXJiIiwic2FsdCIsImJvb2wiLCJzdGF0ZSIsIngiLCJpbnQ2NCIsImxvIiwiaGkiLCJyZW1haW5kZXJfbWF4aW11bSIsImRyYXckMCIsInJlbWFpbmRlciIsImRyYXdfbWF4aW11bSIsImRyYXciLCJpbnQkMCIsImxvJDAiLCJoaSQwIiwiaW50MzIiLCJuYXRpdmVpbnQiLCJpbnQ2MyIsImRvdWJsZV91bHAiLCJ1bml0X2Zsb2F0X2Zyb21faW50NjQiLCJ1bml0X2Zsb2F0IiwiZmxvYXQkMCIsInJhbmdlIiwibWlkIiwiZiIsImJpdHNfdG9fcmVwcmVzZW50IiwidCQwIiwibG9nX3VuaWZvcm0iLCJtaW5fYml0cyIsIm1heF9iaXRzIiwiYml0cyIsInRfc2V4cF9ncmFtbWFyIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsIm9mX2ludF9leG4iLCJ0b19pbnRfZXhuIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwidF9vZl9zZXhwIiwic2V4cF9vZl90Iiwib2Zfc3RyaW5nIiwidG9fc3RyaW5nIiwiZXF1YWwiLCJjb21wYXJlIiwibWluIiwibWF4IiwiYXNjZW5kaW5nIiwiZGVzY2VuZGluZyIsImJldHdlZW4iLCJjbGFtcF9leG4iLCJjbGFtcCIsImNvbXBhcmF0b3IiLCJwcCIsImhhc2hhYmxlIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsInNpZ24iLCJpbnZhcmlhbnQiLCJvZl9zdHJpbmdfb3B0IiwidG9fc3RyaW5nX2h1bSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsImRlY3IiLCJpbmNyIiwib2ZfaW50MzJfZXhuIiwidG9faW50MzJfZXhuIiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50X2V4biIsIm9mX2Zsb2F0X3VuY2hlY2tlZCIsIm51bV9iaXRzIiwibWF4X3ZhbHVlIiwibWluX3ZhbHVlIiwic2hpZnRfcmlnaHRfbG9naWNhbCIsImNlaWxfcG93MiIsImZsb29yX3BvdzIiLCJjZWlsX2xvZzIiLCJmbG9vcl9sb2cyIiwiaXNfcG93MiIsImNseiIsImN0eiIsInN5bWJvbCIsImxub3QiLCJhYnMiLCJ6ZXJvIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDMiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzMyIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM0Iiwic3ltYm9sJDM1Iiwic3ltYm9sJDM2IiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5Iiwic3VtIiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwicmVjX2xpc3QiLCJ3IiwibiIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm1pbl9sZW5ndGgiLCJtYXhfbGVuZ3RoIiwidXBwZXJfYm91bmQiLCJtYXhfbGVuZ3RoJDAiLCJsZW4iLCJyZW1haW5pbmciLCJtYXhfaW5kZXgiLCJ1bml0IiwiYm9vbCIsIm9wdGlvbiIsInZhbHVlX3QiLCJlaXRoZXIiLCJmc3RfdCIsInNuZF90IiwicmVzdWx0Iiwib2tfdCIsImVycl90Iiwib2siLCJlcnIiLCJsaXN0X2dlbmVyaWMiLCJlbHRfZ2VuIiwibGlzdF9ub25fZW1wdHkiLCJsaXN0X3dpdGhfbGVuZ3RoIiwibGVuZ3RoIiwibGlzdF9maWx0ZXJlZCIsImVsdHMiLCJlbHRzJDAiLCJsZW5ndGhfb2ZfaW5wdXQiLCJsZW5ndGhfb2Zfb3V0cHV0IiwiaW5kaWNlcyIsImxpc3RfcGVybXV0YXRpb25zIiwicmVmIiwiY2hhcl91bmlmb3JtX2luY2x1c2l2ZSIsImNoYXJfdXBwZXJjYXNlIiwiY2hhcl9sb3dlcmNhc2UiLCJjaGFyX2RpZ2l0IiwiY2hhcl9wcmludF91bmlmb3JtIiwiY2hhcl91bmlmb3JtIiwiY2hhcl9hbHBoYSIsImNoYXJfYWxwaGFudW0iLCJjaGFyX3doaXRlc3BhY2UiLCJjaGFyX3ByaW50IiwiY2hhciQwIiwic21hbGxfaW50IiwiYWxsb3dfemVybyIsImxvd2VyX2JvdW5kIiwid2VpZ2h0ZWRfbG93Iiwid2VpZ2h0ZWRfaGlnaCIsInNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50Iiwic21hbGxfc3RyaWN0bHlfcG9zaXRpdmVfaW50IiwiZ2VvbWV0cmljIiwicCIsImRlbm9taW5hdG9yIiwidW5pZm9ybSIsImV4cG9uZW50aWFsIiwiZmxvYXQkMCIsImludCQwIiwiaW50JDEiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsImxvZ191bmlmb3JtIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2dlb21ldHJpYyIsInVuaWZvcm0kMCIsImxvZ191bmlmb3JtJDAiLCJpbnQzMiIsImludDMyX3VuaWZvcm0iLCJpbnQzMl9pbmNsdXNpdmUiLCJpbnQzMl91bmlmb3JtX2luY2x1c2l2ZSIsImludDMyX2xvZ19pbmNsdXNpdmUiLCJpbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQzMl9nZW9tZXRyaWMiLCJ1bmlmb3JtJDEiLCJsb2dfdW5pZm9ybSQxIiwiaW50NjMiLCJpbnQ2M191bmlmb3JtIiwiaW50NjNfaW5jbHVzaXZlIiwiaW50NjNfdW5pZm9ybV9pbmNsdXNpdmUiLCJpbnQ2M19sb2dfaW5jbHVzaXZlIiwiaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjNfZ2VvbWV0cmljIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX2Zsb2F0JDIiLCJ0b19mbG9hdCQyIiwib2ZfaW50X2V4biQyIiwidG9faW50X2V4biQyIiwiaGFzaF9mb2xkX3QkMiIsImhhc2gkMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJvZl9zdHJpbmckMiIsInRvX3N0cmluZyQyIiwiZXF1YWwkMiIsImNvbXBhcmUkMiIsIm1pbiQyIiwibWF4JDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsImJldHdlZW4kMiIsImNsYW1wX2V4biQyIiwiY2xhbXAkMiIsImNvbXBhcmF0b3IkMiIsInBwJDIiLCJoYXNoYWJsZSQyIiwiaXNfcG9zaXRpdmUkMiIsImlzX25vbl9uZWdhdGl2ZSQyIiwiaXNfbmVnYXRpdmUkMiIsImlzX25vbl9wb3NpdGl2ZSQyIiwic2lnbiQyIiwiaW52YXJpYW50JDIiLCJvZl9zdHJpbmdfb3B0JDIiLCJ0b19zdHJpbmdfaHVtJDIiLCJvbmUkMiIsIm1pbnVzX29uZSQyIiwicmVtJDIiLCJyb3VuZCQyIiwicm91bmRfdG93YXJkc196ZXJvJDIiLCJyb3VuZF9kb3duJDIiLCJyb3VuZF91cCQyIiwicm91bmRfbmVhcmVzdCQyIiwic3VjYyQyIiwicHJlZCQyIiwicG93JDIiLCJiaXRfYW5kJDIiLCJiaXRfb3IkMiIsImJpdF94b3IkMiIsImJpdF9ub3QkMiIsInBvcGNvdW50JDIiLCJzaGlmdF9sZWZ0JDIiLCJzaGlmdF9yaWdodCQyIiwiZGVjciQyIiwiaW5jciQyIiwib2ZfaW50MzJfZXhuJDIiLCJ0b19pbnQzMl9leG4kMiIsIm9mX2ludDY0X2V4biQyIiwidG9faW50NjQkMiIsIm9mX25hdGl2ZWludF9leG4kMiIsInRvX25hdGl2ZWludF9leG4kMiIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQyIiwibnVtX2JpdHMkMiIsIm1heF92YWx1ZSQyIiwibWluX3ZhbHVlJDIiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDIiLCJjZWlsX3BvdzIkMiIsImZsb29yX3BvdzIkMiIsImNlaWxfbG9nMiQyIiwiZmxvb3JfbG9nMiQyIiwiaXNfcG93MiQyIiwiY2x6JDIiLCJjdHokMiIsInN5bWJvbCQzNiIsImxub3QkMiIsImFicyQyIiwiemVybyQyIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5IiwidW5pZm9ybSQyIiwibG9nX3VuaWZvcm0kMiIsImludDY0IiwiaW50NjRfdW5pZm9ybSIsImludDY0X2luY2x1c2l2ZSIsImludDY0X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50NjRfbG9nX2luY2x1c2l2ZSIsImludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2dlb21ldHJpYyIsInVuaWZvcm0kMyIsImxvZ191bmlmb3JtJDMiLCJuYXRpdmVpbnQiLCJuYXRpdmVpbnRfdW5pZm9ybSIsIm5hdGl2ZWludF9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX2luY2x1c2l2ZSIsIm5hdGl2ZWludF9sb2dfdW5pZm9ybV9pbmNsdXNpdiIsIm5hdGl2ZWludF9nZW9tZXRyaWMiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X25vcm1hbF9tYW50aXNzYSIsIm51bV9iaXRzIiwiYml0cyIsImZsb2F0X2V4cG9uZW50IiwiZmxvYXRfemVybyIsImxldF9zeW50YXhfMDEyIiwibGV0X3N5bnRheF8wMTMiLCJmbG9hdF9zdWJub3JtYWwiLCJtYW50aXNzYSIsImV4cG9uZW50IiwiZmxvYXRfbm9ybWFsIiwiZmxvYXRfaW5maW5pdGUiLCJsZXRfc3ludGF4XzAyMSIsImxldF9zeW50YXhfMDIyIiwiZmxvYXRfbmFuIiwiZmxvYXRfb2ZfY2xhc3MiLCJjIiwiZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyIsImZsb2F0X2Zpbml0ZSIsImZsb2F0X3dpdGhvdXRfbmFuIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiZWRpdF9pbnNlcnQiLCJwb3MiLCJzdHIiLCJlZGl0Iiwibl90aW1lcyIsInN0cmluZ19saWtlIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJiaWdhcnJheTJfZGltIiwibWF4X3RvdGFsX3NpemUiLCJhIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImIiLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsImRpbTIkMCIsInYiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImRyb3Bfa2V5cyIsImsiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsImhhbmRsZXJzIiwia2V5IiwiaW5wIiwiY2FsbGJhY2siLCJ2YWx1ZSIsImluamVjdCIsInYiLCJjYWxsZWQiLCJjYWxsYmFjayQwIiwiYSIsImhhbmRsZSIsInMiLCJwcmludF9zIiwiTmV2ZXIiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm9mX2Z1biIsImxhenkiLCJtYXAiLCJldmFsJDAiLCJ0JDAiLCJ0JDEiLCJsIiwiZiQwIiwidCQyIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDIiLCJoYW5kbGUkMCIsImhhbmRsZSQxIiwib25fcmVzcG9uc2UiLCJvZl9zeW5jX2Z1biIsIm1ha2UiLCJyZXF1ZXN0IiwicmVzcG9uZF90byIsInJlc3BvbnNlIiwibWFrZSQwIiwiZXZhbHVhdG9yIiwiY3JlYXRlIiwidXBvbiIsImhhbmRsZXIiLCJtYXRjaCIsIngiLCJmaWxsX2lmX2VtcHR5IiwicGVlayIsImhhbmRsZSQyIiwib2Zfc3Zhcl9mdW4iLCJjcmVhdGUkMCIsInF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSIsInF1ZXJ5IiwibWF5YmVfcmVzcG9uZCIsInJlc3AiLCJvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIiwicXJ0IiwibW9kX25hbWUiLCJtb2RfbmFtZSQwIiwibW9kX25hbWUkMSIsIm1vZF9uYW1lJDIiLCJtb2RfbmFtZSQzIiwibW9kX25hbWUkNCIsIm1vZF9uYW1lJDUiLCJtb2RfbmFtZSQ2IiwibW9kX25hbWUkNyIsIm1vZF9uYW1lJDgiLCJtb2RfbmFtZSQ5IiwibWF4X3ZhbHVlJDEyIiwibW9kX25hbWUkMTAiLCJyYWlzZV9jYW5ub3RfcmVwciIsInRvX3N0cmluZyIsIngiLCJ0cnVuY191bnNpZ25lZCIsImNvbnYiLCJsb2dhbmQiLCJtYXNrIiwiZXhuX3Vuc2lnbmVkIiwiZXF1YWwiLCJ5IiwidHJ1bmNfc2lnbmVkIiwic2hpZnRfbGVmdCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnQiLCJleG5fc2lnbmVkIiwiaWRlbnRpdHlfaWZfcG9zaXRpdmUiLCJncmVhdGVyX2VxdWFsIiwiemVybyIsIm9mX3NleHBfZXJyb3IiLCJ3aGF0Iiwic2V4cCIsInRvX2ludDMyIiwidG9faW50NjQiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJmdW5jIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsInR5cGVuYW1lX29mX3QiLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJ0cnVuYyIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwieCQwIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwibG9nYW5kNjQiLCJtYXNrNjQiLCJlcXVhbCQwIiwiZXF1YWw2NCIsInRvX3N0cmluZyQwIiwidG9fc3RyaW5nNjQiLCJ0cnVuYyQwIiwiZXhuIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50X2V4biQwIiwidG9fYmFzZV9pbnQkMCIsIm9mX3VpbnQxNl90cnVuYyIsIm9mX3VpbnQxNl9leG4iLCJvZl91aW50MzJfdHJ1bmMiLCJvZl91aW50MzJfZXhuIiwib2ZfdWludDYzX3RydW5jIiwib2ZfdWludDYzX2V4biIsIm9mX3VpbnQ2NF90cnVuYyIsIm9mX3VpbnQ2NF9leG4iLCJvZl9pbnQ4X3dyYXAiLCJvZl9pbnQ4X2V4biIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJxdWlja2NoZWNrX29ic2VydmVyJDAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJzeW1ib2wkMjkiLCJzeW1ib2wkMzAiLCJjb21wYXJlJDMiLCJoYXNoX2ZvbGRfdCQxIiwiZnVuYyQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwidHlwZW5hbWVfb2ZfdCQxIiwiemVybyQxIiwibWluX3ZhbHVlJDEiLCJtYXhfdmFsdWUkMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJ0cnVuYyQxIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50X2V4biQxIiwidG9fYmFzZV9pbnQkMSIsIm9mX2ludDgiLCJvZl9pbnQzMl90cnVuYyQwIiwib2ZfaW50MzJfZXhuJDAiLCJvZl9pbnQ2M190cnVuYyQwIiwib2ZfaW50NjNfZXhuJDAiLCJvZl9pbnQ2NF90cnVuYyQwIiwib2ZfaW50NjRfZXhuJDAiLCJvZl91aW50MTZfd3JhcCIsIm9mX3VpbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJjb21wYXJlJDUiLCJoYXNoX2ZvbGRfdCQyIiwiZnVuYyQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwidHlwZW5hbWVfb2ZfdCQyIiwiemVybyQyIiwibWluX3ZhbHVlJDIiLCJtYXhfdmFsdWUkMiIsImNvbnYkMCIsImxvZ2FuZCQwIiwibG9nYW5kNjQkMCIsIm1hc2skMCIsIm1hc2s2NCQwIiwiZXF1YWwkMiIsImVxdWFsNjQkMCIsInRvX3N0cmluZyQyIiwidG9fc3RyaW5nNjQkMCIsInRydW5jJDIiLCJleG4kMCIsIm9mX2Jhc2VfaW50X3RydW5jJDIiLCJvZl9iYXNlX2ludF9leG4kMiIsInRvX2Jhc2VfaW50JDIiLCJvZl91aW50OCIsIm9mX3VpbnQzMl90cnVuYyQwIiwib2ZfdWludDMyX2V4biQwIiwib2ZfdWludDYzX3RydW5jJDAiLCJvZl91aW50NjNfZXhuJDAiLCJvZl91aW50NjRfdHJ1bmMkMCIsIm9mX3VpbnQ2NF9leG4kMCIsIm9mX2ludDE2X3dyYXAiLCJvZl9pbnQxNl9leG4kMCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDIiLCJxdWlja2NoZWNrX3Nocmlua2VyJDIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJzeW1ib2wkNTUiLCJzeW1ib2wkNTYiLCJzeW1ib2wkNTciLCJzeW1ib2wkNTgiLCJzeW1ib2wkNTkiLCJzeW1ib2wkNjAiLCJzeW1ib2wkNjEiLCJzeW1ib2wkNjIiLCJjb21wYXJlJDciLCJoYXNoX2ZvbGRfdCQzIiwiZnVuYyQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsInR5cGVyZXBfb2ZfdCQzIiwidHlwZW5hbWVfb2ZfdCQzIiwiemVybyQzIiwibWluX3ZhbHVlJDMiLCJtYXhfdmFsdWUkMyIsInNoaWZ0X2xlZnQkMSIsInNoaWZ0X3JpZ2h0JDEiLCJzaGlmdCQxIiwidG9fc3RyaW5nJDMiLCJ0cnVuYyQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwibG9nYW5kJDEiLCJsb2dhbmQ2NCQxIiwibWFzayQxIiwibWFzazY0JDEiLCJlcXVhbCQ0IiwiZXF1YWw2NCQxIiwidG9fc3RyaW5nJDQiLCJ0b19zdHJpbmc2NCQxIiwidHJ1bmMkNCIsImV4biQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsIm9mX2Jhc2VfaW50X2V4biQzIiwidG9fYmFzZV9pbnRfZXhuIiwib2ZfdWludDgkMCIsIm9mX3VpbnQxNiIsIm9mX3VpbnQ2M190cnVuYyQxIiwib2ZfdWludDYzX2V4biQxIiwib2ZfdWludDY0X3RydW5jJDEiLCJvZl91aW50NjRfZXhuJDEiLCJvZl9pbnQzMl93cmFwIiwib2ZfaW50MzJfZXhuJDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ0IiwicXVpY2tjaGVja19vYnNlcnZlciQ0IiwicXVpY2tjaGVja19zaHJpbmtlciQ0Iiwic3ltYm9sJDg1Iiwic3ltYm9sJDg2Iiwic3ltYm9sJDg3Iiwic3ltYm9sJDg4Iiwic3ltYm9sJDg5Iiwic3ltYm9sJDkwIiwic3ltYm9sJDkxIiwic3ltYm9sJDkyIiwic3ltYm9sJDkzIiwic3ltYm9sJDk0IiwiY29tcGFyZSQxMSIsImhhc2hfZm9sZF90JDUiLCJmdW5jJDUiLCJoYXNoJDUiLCJ0X29mX3NleHAkNSIsInNleHBfb2ZfdCQ1IiwicXVpY2tjaGVja19nZW5lcmF0b3IkNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNSIsInR5cGVyZXBfb2ZfdCQ1IiwidHlwZW5hbWVfb2ZfdCQ1IiwiemVybyQ1IiwibWluX3ZhbHVlJDUiLCJtYXhfdmFsdWUkNSIsInRvX3N0cmluZyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2Iiwib2ZfYmFzZV9pbnQzMl90cnVuYyQwIiwib2ZfYmFzZV9pbnQzMl9leG4kMCIsInRvX2Jhc2VfaW50MzJfdHJ1bmMkMCIsInRvX2Jhc2VfaW50MzJfZXhuJDAiLCJvZl9iYXNlX2ludDY0X3RydW5jJDAiLCJvZl9iYXNlX2ludDY0X2V4biQwIiwidG9fYmFzZV9pbnQ2NCQwIiwib2ZfYmFzZV9pbnRfZXhuJDQiLCJ0b19iYXNlX2ludF9leG4kMCIsIm9mX3VpbnQ4JDEiLCJvZl91aW50MTYkMCIsIm9mX3VpbnQ2M190cnVuYyQyIiwib2ZfdWludDYzX2V4biQyIiwib2ZfdWludDY0X3RydW5jJDIiLCJvZl91aW50NjRfZXhuJDIiLCJvZl9pbnQzMl93cmFwJDAiLCJvZl9pbnQzMl9leG4kMiIsInNleHBfb2ZfdCQ2IiwidF9vZl9zZXhwJDYiLCJzIiwic3ltYm9sJDExMSIsInN5bWJvbCQxMTIiLCJzeW1ib2wkMTEzIiwic3ltYm9sJDExNCIsInN5bWJvbCQxMTUiLCJzeW1ib2wkMTE2Iiwic3ltYm9sJDExNyIsInN5bWJvbCQxMTgiLCJzeW1ib2wkMTE5Iiwic3ltYm9sJDEyMCIsInNpZ25lZCIsIm51bV9iaXRzIiwibnVtX2J5dGVzIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJzaWduZWQkMSIsIm51bV9iaXRzJDEiLCJudW1fYnl0ZXMkMSIsInNpZ25lZCQyIiwibnVtX2JpdHMkMiIsIm51bV9ieXRlcyQyIiwic2lnbmVkJDMiLCJudW1fYml0cyQzIiwibnVtX2J5dGVzJDMiLCJzaWduZWQkNCIsIm51bV9iaXRzJDQiLCJudW1fYnl0ZXMkNCIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsImltcGwiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ3IiwicXVpY2tjaGVja19vYnNlcnZlciQ3IiwicXVpY2tjaGVja19zaHJpbmtlciQ3IiwidF9vZl9zZXhwJDciLCJzZXhwX29mX3QkNyIsInR5cGVyZXBfb2ZfdCQ3IiwidHlwZW5hbWVfb2ZfdCQ3Iiwic2lnbmVkJDciLCJudW1fYml0cyQ3IiwibnVtX2J5dGVzJDciLCJ6ZXJvJDciLCJtaW5fdmFsdWUkNyIsIm1heF92YWx1ZSQ3IiwiaGFzaF9mb2xkX3QkNyIsImhhc2gkNyIsInN5bWJvbCQxMjciLCJzeW1ib2wkMTI4Iiwic3ltYm9sJDEyOSIsInN5bWJvbCQxMzAiLCJzeW1ib2wkMTMxIiwic3ltYm9sJDEzMiIsImVxdWFsJDciLCJjb21wYXJlJDE1IiwibWluJDciLCJtYXgkNyIsIm9mX2Jhc2VfaW50MzIkMSIsInRvX2Jhc2VfaW50MzIkMSIsIm9mX2ludDgkMiIsIm9mX2ludDE2JDEiLCJvZl9pbnQ2M190cnVuYyQzIiwib2ZfaW50NjNfZXhuJDMiLCJvZl9pbnQ2NF90cnVuYyQzIiwib2ZfaW50NjRfZXhuJDMiLCJvZl91aW50MzJfd3JhcCQxIiwib2ZfdWludDMyX2V4biQzIiwicXVpY2tjaGVja19nZW5lcmF0b3IkOCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF9vZl90JDgiLCJ0eXBlcmVwX29mX3QkOCIsInR5cGVuYW1lX29mX3QkOCIsInNpZ25lZCQ4IiwibnVtX2JpdHMkOCIsIm51bV9ieXRlcyQ4IiwiemVybyQ4IiwibWluX3ZhbHVlJDgiLCJtYXhfdmFsdWUkOCIsImhhc2hfZm9sZF90JDgiLCJoYXNoJDgiLCJzeW1ib2wkMTMzIiwic3ltYm9sJDEzNCIsInN5bWJvbCQxMzUiLCJzeW1ib2wkMTM2Iiwic3ltYm9sJDEzNyIsInN5bWJvbCQxMzgiLCJlcXVhbCQ4IiwiY29tcGFyZSQxNiIsIm1pbiQ4IiwibWF4JDgiLCJvZl9iYXNlX2ludDMyX3RydW5jJDEiLCJvZl9iYXNlX2ludDMyX2V4biQxIiwidG9fYmFzZV9pbnQzMl90cnVuYyQxIiwidG9fYmFzZV9pbnQzMl9leG4kMSIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50NjRfZXhuJDEiLCJ0b19iYXNlX2ludDY0JDEiLCJvZl9iYXNlX2ludF9leG4kNSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwib2ZfaW50OCQzIiwib2ZfaW50MTYkMiIsIm9mX2ludDMyIiwib2ZfaW50NjRfdHJ1bmMkNCIsIm9mX2ludDY0X2V4biQ0Iiwib2ZfdWludDYzX3dyYXAiLCJvZl91aW50NjNfZXhuJDQiLCJzeW1ib2wkMTQ1Iiwic3ltYm9sJDE0NiIsInN5bWJvbCQxNDciLCJzeW1ib2wkMTQ4Iiwic3ltYm9sJDE0OSIsInN5bWJvbCQxNTAiLCJzeW1ib2wkMTUxIiwic3ltYm9sJDE1MiIsInN5bWJvbCQxNTMiLCJzeW1ib2wkMTU0IiwiaGFzaF9mb2xkX3QkMTAiLCJmdW5jJDgiLCJoYXNoJDEwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTAiLCJxdWlja2NoZWNrX29ic2VydmVyJDEwIiwicXVpY2tjaGVja19zaHJpbmtlciQxMCIsImNvbXBhcmUkMTkiLCJ0eXBlcmVwX29mX3QkMTAiLCJ0eXBlbmFtZV9vZl90JDEwIiwiemVybyQxMCIsIm1pbl92YWx1ZSQxMCIsIm1heF92YWx1ZSQxMCIsImdyZWF0ZXJfZXF1YWwkMiIsInRvX3N0cmluZyQ4Iiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQyIiwib2ZfYmFzZV9pbnQ2NF9leG4kMiIsInRvX2Jhc2VfaW50NjQkMiIsIm9mX3VpbnQ4JDMiLCJvZl91aW50MTYkMiIsIm9mX3VpbnQzMiIsIm9mX3VpbnQ2NF90cnVuYyQ0Iiwib2ZfdWludDY0X2V4biQ0Iiwib2ZfaW50NjNfd3JhcCIsIm9mX2ludDYzX2V4biQ0Iiwic2V4cF9vZl90JDEwIiwidF9vZl9zZXhwJDEwIiwic3ltYm9sJDE1NSIsInN5bWJvbCQxNTYiLCJzeW1ib2wkMTU3Iiwic3ltYm9sJDE1OCIsInN5bWJvbCQxNTkiLCJzeW1ib2wkMTYwIiwic3ltYm9sJDE2MSIsInN5bWJvbCQxNjIiLCJzeW1ib2wkMTYzIiwic3ltYm9sJDE2NCIsImNvbXBhcmUkMjEiLCJoYXNoX2ZvbGRfdCQxMSIsImZ1bmMkOSIsImhhc2gkMTEiLCJ0X29mX3NleHAkMTEiLCJzZXhwX29mX3QkMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDExIiwidHlwZXJlcF9vZl90JDExIiwidHlwZW5hbWVfb2ZfdCQxMSIsInplcm8kMTEiLCJtaW5fdmFsdWUkMTEiLCJtYXhfdmFsdWUkMTEiLCJncmVhdGVyX2VxdWFsJDMiLCJ0b19zdHJpbmckOSIsIm9mX2ludDgkNCIsIm9mX2ludDE2JDMiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMyIsIm9mX2Jhc2VfaW50NjRfZXhuJDMiLCJ0b19iYXNlX2ludDY0X3RydW5jIiwidG9fYmFzZV9pbnQ2NF9leG4iLCJvZl91aW50OCQ0Iiwib2ZfdWludDE2JDMiLCJvZl91aW50MzIkMCIsIm9mX3VpbnQ2MyIsIm9mX2ludDY0X3dyYXAiLCJvZl9pbnQ2NF9leG4kNSIsInNleHBfb2ZfdCQxMiIsInRfb2Zfc2V4cCQxMiIsInN5bWJvbCQxODciLCJzeW1ib2wkMTg4Iiwic3ltYm9sJDE4OSIsInN5bWJvbCQxOTAiLCJzeW1ib2wkMTkxIiwic3ltYm9sJDE5MiIsInN5bWJvbCQxOTMiLCJzeW1ib2wkMTk0Iiwic3ltYm9sJDE5NSIsInN5bWJvbCQxOTYiLCJnZXRfaW50OCIsInQiLCJwb3MiLCJnZXRfdWludDgiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfdWludDE2X2xlIiwiZ2V0X3VpbnQxNl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQzMl9iZSIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwiZ2V0X3VpbnQ2NF9sZSIsImdldF91aW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfaW50OCIsInNldF91aW50MTZfbGUiLCJzZXRfdWludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDE2X2JlIiwic2V0X2ludDMyX2xlIiwieCQxIiwic2V0X2ludDMyX2JlIiwic2V0X3VpbnQzMl9sZSIsInNldF91aW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDY0X2xlIiwic2V0X3VpbnQ2NF9iZSIsImdldF9pbnQ4JDAiLCJnZXRfdWludDgkMCIsImdldF9pbnQxNl9sZSQwIiwiZ2V0X2ludDE2X2JlJDAiLCJnZXRfdWludDE2X2xlJDAiLCJnZXRfdWludDE2X2JlJDAiLCJnZXRfaW50MzJfbGUkMCIsImdldF9pbnQzMl9iZSQwIiwiZ2V0X3VpbnQzMl9sZSQwIiwiZ2V0X3VpbnQzMl9iZSQwIiwiZ2V0X2ludDY0X2xlJDAiLCJnZXRfaW50NjRfYmUkMCIsImdldF91aW50NjRfbGUkMCIsImdldF91aW50NjRfYmUkMCIsInNldF9pbnQ4JDAiLCJzZXRfdWludDgkMCIsInNldF9pbnQxNl9sZSQwIiwic2V0X2ludDE2X2JlJDAiLCJzZXRfdWludDE2X2xlJDAiLCJzZXRfdWludDE2X2JlJDAiLCJzZXRfaW50MzJfbGUkMCIsInNldF9pbnQzMl9iZSQwIiwic2V0X3VpbnQzMl9sZSQwIiwic2V0X3VpbnQzMl9iZSQwIiwic2V0X2ludDY0X2xlJDAiLCJzZXRfaW50NjRfYmUkMCIsInNldF91aW50NjRfbGUkMCIsInNldF91aW50NjRfYmUkMCIsImdldF9pbnQ4JDEiLCJnZXRfdWludDgkMSIsImdldF9pbnQxNl9sZSQxIiwiZ2V0X2ludDE2X2JlJDEiLCJnZXRfdWludDE2X2xlJDEiLCJnZXRfdWludDE2X2JlJDEiLCJnZXRfaW50MzJfbGUkMSIsImdldF9pbnQzMl9iZSQxIiwiZ2V0X3VpbnQzMl9sZSQxIiwiZ2V0X3VpbnQzMl9iZSQxIiwiZ2V0X2ludDY0X2xlJDEiLCJnZXRfaW50NjRfYmUkMSIsImdldF91aW50NjRfbGUkMSIsImdldF91aW50NjRfYmUkMSIsImdldF9pbnQ4JDIiLCJnZXRfdWludDgkMiIsImdldF9pbnQxNl9sZSQyIiwiZ2V0X2ludDE2X2JlJDIiLCJnZXRfdWludDE2X2xlJDIiLCJnZXRfdWludDE2X2JlJDIiLCJnZXRfaW50MzJfbGUkMiIsImdldF9pbnQzMl9iZSQyIiwiZ2V0X3VpbnQzMl9sZSQyIiwiZ2V0X3VpbnQzMl9iZSQyIiwiZ2V0X2ludDY0X2xlJDIiLCJnZXRfaW50NjRfYmUkMiIsImdldF91aW50NjRfbGUkMiIsImdldF91aW50NjRfYmUkMiIsImxvYyQwIiwibG9jIiwic3ByaW50ZiIsImFyY2hfc2l4dHlmb3VyIiwiYXJjaF9iaWdfZW5kaWFuIiwibm90X29uXzMyYml0IiwiY3JlYXRlIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic2l6ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyQwIiwibGVuZ3RoIiwiaW5pdCIsIm4iLCJmIiwidCIsImkiLCJjaGVja19hcmdzIiwicG9zIiwibGVuIiwiYnN0ciIsImJzdHJfbGVuJDAiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwiY2hyIiwibGVuJDAiLCJyZXMiLCJtZW1tZW0iLCJoYXlzdGFjayIsIm5lZWRsZSIsImhheXN0YWNrX2xlbiIsIm5lZWRsZV9sZW4iLCJoYXlzdGFja19wb3MiLCJuZWVkbGVfcG9zIiwiaGF5c3RhY2tfbGVuJDAiLCJuZWVkbGVfbGVuJDAiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsInVuc2FmZV9yZWFkX2ludDY0X2xvY2FsIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCIsInJlYWRfaW50NjRfbG9jYWwiLCJyZWFkX2ludDY0X3N3YXBfbG9jYWwiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCQwIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCQwIiwicmVhZF9pbnQ2NF9sb2NhbCQwIiwiZ2V0X2ludDY0X3RfbGUiLCJnZXRfaW50NjRfdF9iZSIsInJlYWRfaW50NjRfc3dhcCQwIiwic2V0X2ludDY0X3RfYmUiLCJzZXRfaW50NjRfdF9sZSIsImludDY0X2NvbnZfZXJyb3IiLCJ1aW50NjRfY29udl9lcnJvciIsImludDY0X3RvX2ludF9leG4iLCJ1aW50NjRfdG9faW50X2V4biIsInVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9sZV9leG4iLCJnZXRfaW50NjRfYmVfZXhuIiwiZ2V0X2ludDY0X2xlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2JlX2V4biIsInVuc2FmZV9nZXRfdWludDY0X2xlX2V4biIsImdldF91aW50NjRfYmVfZXhuIiwiZ2V0X3VpbnQ2NF9sZV9leG4iLCJzZXRfdWludDY0X2JlX2V4biIsInNldF91aW50NjRfbGVfZXhuIiwidW5zYWZlX3NldF91aW50OCIsInVuc2FmZV9zZXRfaW50OCIsIm4kMCIsInVuc2FmZV9nZXRfdWludDgiLCJ1bnNhZmVfZ2V0X2ludDgiLCJzZXRfdWludDhfZXhuIiwic2V0X2ludDhfZXhuIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDgiLCJ1aW50MzJfb2ZfaW50MzJfdCIsInVuc2FmZV9zZXRfdWludDMyX2xlIiwidW5zYWZlX3NldF91aW50MzJfYmUiLCJ1bnNhZmVfZ2V0X3VpbnQzMl9sZSIsInVuc2FmZV9nZXRfdWludDMyX2JlIiwic2V0X3VpbnQzMl9sZV9leG4iLCJzZXRfdWludDMyX2JlX2V4biIsImdldF91aW50MzJfbGUiLCJnZXRfdWludDMyX2JlIiwiZ2V0X3VpbnQ4JDAiLCJzZXRfdWludDgiLCJnZXRfdWludDE2X25lIiwic2V0X3VpbnQxNl9uZSIsImdldF9pbnQzMl9uZSIsInNldF9pbnQzMl9uZSIsImdldF9pbnQ2NF9uZSIsInNldF9pbnQ2NF9uZSIsImdldF91aW50OCQyIiwic2V0X3VpbnQ4JDEiLCJnZXRfdWludDE2X25lJDAiLCJzZXRfdWludDE2X25lJDAiLCJnZXRfaW50MzJfbmUkMCIsInNldF9pbnQzMl9uZSQwIiwiZ2V0X2ludDY0X25lJDAiLCJzZXRfaW50NjRfbmUkMCIsImVsdDEiLCJlbHQyIiwiZXF1YWwiLCJvZl9ib29sIiwibGVuZ3RoIiwiY3JlYXRlX2Jvb2wiLCJnZXQiLCJzZXQiLCJvdmVybGFwcGluZ19zcmNfZHN0IiwibGVuZ3RoJDAiLCJnZXQkMCIsInNldCQwIiwiY3JlYXRlX2Jvb2wkMCIsInJvb3QiLCJjb21wYXJhdG9yIiwiY2xhbXAiLCJjbGFtcF9leG4iLCJiZXR3ZWVuIiwiZGVzY2VuZGluZyIsImFzY2VuZGluZyIsIm1heCIsIm1pbiIsImNvbXBhcmUiLCJlcXVhbCIsInN5bWJvbCIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJ0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfdCIsInRfb2Zfc2V4cCIsImhhc2giLCJoYXNoX2ZvbGRfdCIsImNoZWNrX3N1ZmZpeCIsImNob3BfZXh0ZW5zaW9uIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAiLCJjb25jYXQiLCJwMSIsInAyIiwicyQxIiwicyQyIiwicyIsInMkMCIsInRvX2Fic29sdXRlX2V4biIsInJlbGF0aXZlX3RvIiwic3BsaXQiLCJpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQiLCJzcGxpdF9leHRlbnNpb24iLCJmbiIsImZuJDAiLCJwYXRoIiwiZm4kMSIsImRpciIsImV4dCIsImJhc2VfZm4iLCJleHQkMCIsImZuJDIiLCJkaXIkMCIsImZuJDMiLCJwYXJ0cyIsImZpbGVuYW1lIiwiYWNjIiwiZmlsZW5hbWUkMCIsImZpbGVuYW1lJDEiLCJhY2MkMCIsIm9mX3BhcnRzIiwicmVzdCIsIm9mX2Fic29sdXRlX2V4biIsImEiLCJiIiwiYV9wYXJ0cyIsImJfcGFydHMiLCJhX3N1ZmZpeCIsImJfc3VmZml4IiwidDIiLCJoMiIsInQxIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJzZXhwX29mX3QiLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwieF8wMDMiLCJ0eXBlX2lkMSIsInR5cGVfaWQyIiwibmFtZV9vZl9rZXkiLCJrZXkiLCJ1aWRfb2Zfa2V5Iiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJkYXRhIiwidHlwZV9pZF9uYW1lIiwidHlwZV9pZF91aWQiLCJjb21wYXJlIiwidDEiLCJ0MiIsImMiLCJ0b19hbGlzdCIsInQiLCJzZXhwX29mX3QkMSIsInhfMDA4IiwicGFja2VkIiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsInNldCIsIm1lbV9ieV9pZCIsImlkIiwibWVtIiwicmVtb3ZlX2J5X2lkIiwicmVtb3ZlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJpc19lbXB0eSIsImZpbmQiLCJ2YWx1ZSIsImtleSQwIiwiZmluZF9leG4iLCJhZGQiLCJhZGRfZXhuIiwidCQwIiwiY2hhbmdlX2V4biIsInVwZGF0ZSIsImNoYW5nZSIsIm9yaWciLCJuZXh0IiwiZiIsIm9mX2FsaXN0X2V4biIsInAiLCJvZl9hXzAxMSIsIm9mX2FfMDEyIiwieF8wMTMiLCJ4XzAxNCIsIm9mX2FfMDE3IiwidHlwZV9lcXVhbCIsImNyZWF0ZSIsImRlZmF1bHQkMCIsIm5hbWUiLCJzZXhwX29mIiwiZmluZCQwIiwic2V0JDAiLCJjaGFuZ2UkMCIsImNyZWF0ZSQwIiwiaW5pdCIsImlkJDAiLCJmaW5kJDEiLCJzZXQkMSIsImNoYW5nZSQxIiwiYWRkJDAiLCJhY2MiLCJjcmVhdGUkMSIsInhzIiwieCIsImlkJDEiLCJtZXJnZSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsImRhdGEkMCIsImVwcmludGYiLCJwcmludGYiLCJwcmludF9zIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfZW5kbGluZSIsInByZXJyX2VuZGxpbmUiLCJzcHJpbnRmIiwiZmFpbHdpdGhmIiwia3NwcmludGYiLCJhbGwiLCJjb21wYXJlIiwic2V4cF9vZl90IiwidG9fc3RyaW5nIiwidCIsImZsYWdfbmFtZSIsImVycm9yX3NvdXJjZV8wMjIiLCJlcnJvcl9zb3VyY2VfMDY3IiwiZXJyb3Jfc291cmNlXzA4OCIsImVycm9yX3NvdXJjZV8xMDQiLCJlcnJvcl9zb3VyY2VfMTE4IiwiZXJyb3Jfc291cmNlXzE0NSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMjA2IiwiZXJyb3Jfc291cmNlXzIyMiIsImVycm9yX3NvdXJjZV8yMzYiLCJlcnJvcl9zb3VyY2VfMjYxIiwiZXJyb3Jfc291cmNlXzI5MCIsImVycm9yX3NvdXJjZV8zMjIiLCJlcnJvcl9zb3VyY2VfMzQ3IiwiZXJyb3Jfc291cmNlXzM3MiIsImVycm9yX3NvdXJjZV80MTEiLCJlcnJvcl9zb3VyY2VfNDU2IiwiZW51bWVyYXRlXzQ3NCIsImVudW1lcmF0ZV80NzUiLCJuYW1lcyIsIm1heWJlX21pc3NpbmdfcHJlZml4IiwibWF5YmVfbWlzc2luZ19zdWZmaXgiLCJtYXliZV9tb3JlX3N1ZmZpeCIsIm5hbWVzJDAiLCJlcnJvcl9zb3VyY2VfNDk5IiwiaW5kZW50YXRpb24iLCJzcGFjaW5nX2RvdCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfNTE3IiwibmFtZXMkMiIsImVycm9yX3NvdXJjZV81NDYiLCJuYW1lcyQzIiwiZXJyb3Jfc291cmNlXzU3NCIsImVycm9yX3NvdXJjZV82MDMiLCJ0X29mX3NleHAiLCJjb21wYXJlJDAiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDYkMCIsImJfMDA3JDAiLCJhXzAwOCIsImJfMDA5IiwiYV8wMTAiLCJiXzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsImFfMDE4IiwiYl8wMTkiLCJ0X29mX3NleHAkMCIsInNleHBfMDI0IiwidGFnXzAyNSIsInNleHBfYXJnc18wNDYiLCJhcmcwXzA0NyIsInJlczBfMDQ4Iiwic2V4cF9hcmdzXzA0MSIsImFyZzBfMDQyIiwicmVzMF8wNDMiLCJzZXhwX2FyZ3NfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsInNleHBfYXJnc18wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4Iiwic2V4cF9hcmdzXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQ5IiwicmVzMF8wNTAiLCJhcmcwXzA1MSIsInJlczBfMDUyIiwiYXJnMF8wNTMiLCJyZXMwXzA1NCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4Iiwic3RhYmxlX3dpdG5lc3MiLCJpbnZhcmlhbnQiLCJ0JDAiLCJ0JDEiLCJ0cyIsInRfb2Zfc2V4cCQxIiwic2V4cCIsInVzYWdlIiwidXNhZ2UkMCIsInVzYWdlJDEiLCJjb21wYXJlJDEiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImFfMDYzIiwiYl8wNjQiLCJ0X29mX3NleHAkMiIsInNleHBfMDY5IiwidGFnXzA3MCIsInNleHBfYXJnc18wNzEiLCJhcmcwXzA3MiIsInJlczBfMDczIiwic2V4cF9hcmdzXzA3NiIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJzZXhwX29mX3QkMSIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJhcmcwXzA4MSIsInJlczBfMDgyIiwic3RhYmxlX3dpdG5lc3MkMCIsImNvbXBhcmUkMiIsImFfMDgzIiwiYl8wODQiLCJuIiwibiQwIiwiYV8wODUiLCJiXzA4NiIsInRfb2Zfc2V4cCQzIiwieF8wODkiLCJhbGlhc2VzIiwiZG9jIiwibmFtZSIsInNleHBfb2ZfdCQyIiwiYWxpYXNlc18wOTUiLCJkb2NfMDkzIiwibmFtZV8wOTEiLCJhcmdfMDk2IiwiYm5kc18wOTAiLCJhcmdfMDk0IiwiYm5kc18wOTAkMCIsImFyZ18wOTIiLCJibmRzXzA5MCQxIiwic3RhYmxlX3dpdG5lc3MkMSIsImNvbXBhcmUkMyIsImFfMDk3IiwiYl8wOTgiLCJhXzA5OSIsImJfMTAwIiwibiQxIiwiYV8xMDEiLCJiXzEwMiIsInRfb2Zfc2V4cCQ0IiwieF8xMDUiLCJmbGFncyIsImFub25zIiwicmVhZG1lIiwic3VtbWFyeSIsInNleHBfb2ZfdCQzIiwiZmxhZ3NfMTE1IiwiYW5vbnNfMTEzIiwicmVhZG1lXzEwOSIsInN1bW1hcnlfMTA3IiwiYXJnXzExNiIsImJuZHNfMTA2IiwiYXJnXzExNCIsImJuZHNfMTA2JDAiLCJ2XzExMCIsImFyZ18xMTIiLCJibmRfMTExIiwiYm5kc18xMDYkMSIsImFyZ18xMDgiLCJibmRzXzEwNiQyIiwic3RhYmxlX3dpdG5lc3MkMiIsInRfb2Zfc2V4cCQ1IiwieF8xMTkiLCJzZXhwX29mX3QkNCIsImZsYWdzXzEyOSIsInVzYWdlXzEyNyIsInJlYWRtZV8xMjMiLCJzdW1tYXJ5XzEyMSIsImFyZ18xMzAiLCJibmRzXzEyMCIsImFyZ18xMjgiLCJibmRzXzEyMCQwIiwidl8xMjQiLCJhcmdfMTI2IiwiYm5kXzEyNSIsImJuZHNfMTIwJDEiLCJhcmdfMTIyIiwiYm5kc18xMjAkMiIsInN0YWJsZV93aXRuZXNzJDMiLCJ0b19sYXRlc3QiLCJvZl9sYXRlc3QiLCJncmFtbWFyIiwiZ3JvdXAiLCJjb21wYXJlJDQiLCJjbXBfYSIsImFfMTMxIiwiYl8xMzIiLCJhXzEzMyIsImJfMTM0IiwiYV8xMzUiLCJiXzEzNiIsImFfMTM3IiwiYl8xMzgiLCJ0XzE0MCIsInRfMTM5IiwidF8xNDIiLCJ0XzE0MSIsInRfb2Zfc2V4cCQ2Iiwib2ZfYV8xNDMiLCJ4XzE1MSIsInNleHBfMTUwIiwiYXJnMV8xNDciLCJhcmcwXzE0NiIsInJlczBfMTQ4IiwicmVzMV8xNDkiLCJzdWJjb21tYW5kcyIsInNleHBfb2ZfdCQ1Iiwib2ZfYV8xNTIiLCJzdWJjb21tYW5kc18xNjAiLCJyZWFkbWVfMTU2Iiwic3VtbWFyeV8xNTQiLCJhcmdfMTYxIiwiYXJnMV8xNjMiLCJhcmcwXzE2MiIsInJlczBfMTY0IiwicmVzMV8xNjUiLCJibmRzXzE1MyIsInZfMTU3IiwiYXJnXzE1OSIsImJuZF8xNTgiLCJibmRzXzE1MyQwIiwiYXJnXzE1NSIsImJuZHNfMTUzJDEiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYV9zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYiLCJ0X29mX3NleHAkNyIsIm9mX2FfMTc2IiwieF8xODQiLCJzZXhwXzE4MyIsImFyZzFfMTgwIiwiYXJnMF8xNzkiLCJyZXMwXzE4MSIsInJlczFfMTgyIiwic2V4cF9vZl90JDYiLCJvZl9hXzE4NSIsInN1YmNvbW1hbmRzXzE5MyIsInJlYWRtZV8xODkiLCJzdW1tYXJ5XzE4NyIsImFyZ18xOTQiLCJhcmcxXzE5NiIsImFyZzBfMTk1IiwicmVzMF8xOTciLCJyZXMxXzE5OCIsImJuZHNfMTg2Iiwidl8xOTAiLCJhcmdfMTkyIiwiYm5kXzE5MSIsImJuZHNfMTg2JDAiLCJhcmdfMTg4IiwiYm5kc18xODYkMSIsIm1hcCQwIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImFic19wYXRoIiwiZGlyIiwicGF0aCIsImNvbXBhcmUkNSIsImFfMTk5IiwiYl8yMDAiLCJhXzIwMSIsImJfMjAyIiwibiQyIiwiYV8yMDMiLCJiXzIwNCIsInRfb2Zfc2V4cCQ4IiwieF8yMDciLCJjaGlsZF9zdWJjb21tYW5kIiwicGF0aF90b19leGUiLCJ3b3JraW5nX2RpciIsInNleHBfb2ZfdCQ3IiwiY2hpbGRfc3ViY29tbWFuZF8yMTkiLCJwYXRoX3RvX2V4ZV8yMTciLCJ3b3JraW5nX2Rpcl8yMTUiLCJyZWFkbWVfMjExIiwic3VtbWFyeV8yMDkiLCJhcmdfMjIwIiwiYm5kc18yMDgiLCJhcmdfMjE4IiwiYm5kc18yMDgkMCIsImFyZ18yMTYiLCJibmRzXzIwOCQxIiwidl8yMTIiLCJhcmdfMjE0IiwiYm5kXzIxMyIsImJuZHNfMjA4JDIiLCJhcmdfMjEwIiwiYm5kc18yMDgkMyIsInN0YWJsZV93aXRuZXNzJDUiLCJ0b19sYXRlc3QkMSIsIm9mX2xhdGVzdCQxIiwidF9vZl9zZXhwJDkiLCJ4XzIyMyIsInNleHBfb2ZfdCQ4IiwicGF0aF90b19leGVfMjMzIiwid29ya2luZ19kaXJfMjMxIiwicmVhZG1lXzIyNyIsInN1bW1hcnlfMjI1IiwiYXJnXzIzNCIsImJuZHNfMjI0IiwiYXJnXzIzMiIsImJuZHNfMjI0JDAiLCJ2XzIyOCIsImFyZ18yMzAiLCJibmRfMjI5IiwiYm5kc18yMjQkMSIsImFyZ18yMjYiLCJibmRzXzIyNCQyIiwic3RhYmxlX3dpdG5lc3MkNiIsInRvX3YzIiwib2ZfdjMiLCJ0b19sYXRlc3QkMiIsIm9mX2xhdGVzdCQyIiwidF9vZl9zZXhwJDEwIiwieF8yMzciLCJzZXhwX29mX3QkOSIsInBhdGhfdG9fZXhlXzI0NSIsInJlYWRtZV8yNDEiLCJzdW1tYXJ5XzIzOSIsImFyZ18yNDYiLCJibmRzXzIzOCIsInZfMjQyIiwiYXJnXzI0NCIsImJuZF8yNDMiLCJibmRzXzIzOCQwIiwiYXJnXzI0MCIsImJuZHNfMjM4JDEiLCJzdGFibGVfd2l0bmVzcyQ3IiwidG9fdjIiLCJvZl92MiIsInRvX2xhdGVzdCQzIiwib2ZfbGF0ZXN0JDMiLCJjb21wYXJlJDYiLCJhXzI0NyIsImJfMjQ4IiwiYV8yNDckMCIsImJfMjQ4JDAiLCJhXzI0OSIsImJfMjUwIiwiYV8yNTEiLCJiXzI1MiIsImFfMjUzIiwiYl8yNTQiLCJhXzI1NyIsImFfMjU1IiwiYl8yNTgiLCJiXzI1NiIsInRfb2Zfc2V4cCQxMSIsInNleHBfMjYzIiwidGFnXzI2NCIsInNleHBfYXJnc18yNzAiLCJhcmcwXzI3MSIsInJlczBfMjcyIiwic2V4cF9hcmdzXzI3NSIsImFyZzFfMjc3IiwiYXJnMF8yNzYiLCJyZXMwXzI3OCIsInJlczFfMjc5Iiwic2V4cF9hcmdzXzI2NSIsImFyZzBfMjY2IiwicmVzMF8yNjciLCJzZXhwX29mX3QkMTAiLCJhcmcwXzI4MCIsInJlczBfMjgxIiwiYXJnMF8yODIiLCJyZXMwXzI4MyIsImFyZzFfMjg1IiwiYXJnMF8yODQiLCJyZXMwXzI4NiIsInJlczFfMjg3Iiwic3RhYmxlX3dpdG5lc3MkOCIsInRfb2Zfc2V4cCQxMiIsInNleHBfMjkyIiwidGFnXzI5MyIsInNleHBfYXJnc18zMDkiLCJhcmcwXzMxMCIsInJlczBfMzExIiwic2V4cF9hcmdzXzI5OSIsImFyZzBfMzAwIiwicmVzMF8zMDEiLCJzZXhwX2FyZ3NfMzA0IiwiYXJnMF8zMDUiLCJyZXMwXzMwNiIsInNleHBfYXJnc18yOTQiLCJhcmcwXzI5NSIsInJlczBfMjk2Iiwic2V4cF9vZl90JDExIiwiYXJnMF8zMTIiLCJyZXMwXzMxMyIsImFyZzBfMzE0IiwicmVzMF8zMTUiLCJhcmcwXzMxNiIsInJlczBfMzE3IiwiYXJnMF8zMTgiLCJyZXMwXzMxOSIsInRfb2Zfc2V4cCQxMyIsInNleHBfMzI0IiwidGFnXzMyNSIsInNleHBfYXJnc18zMzEiLCJhcmcwXzMzMiIsInJlczBfMzMzIiwic2V4cF9hcmdzXzMzNiIsImFyZzBfMzM3IiwicmVzMF8zMzgiLCJzZXhwX2FyZ3NfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsInNleHBfb2ZfdCQxMiIsImFyZzBfMzM5IiwicmVzMF8zNDAiLCJhcmcwXzM0MSIsInJlczBfMzQyIiwiYXJnMF8zNDMiLCJyZXMwXzM0NCIsInRvX2xhdGVzdCQ0IiwiYiIsImciLCJlIiwib2ZfbGF0ZXN0JDQiLCJ0aHVuayIsInRfb2Zfc2V4cCQxNCIsInNleHBfMzQ5IiwidGFnXzM1MCIsInNleHBfYXJnc18zNTYiLCJhcmcwXzM1NyIsInJlczBfMzU4Iiwic2V4cF9hcmdzXzM2MSIsImFyZzBfMzYyIiwicmVzMF8zNjMiLCJzZXhwX2FyZ3NfMzUxIiwiYXJnMF8zNTIiLCJyZXMwXzM1MyIsInNleHBfb2ZfdCQxMyIsImFyZzBfMzY0IiwicmVzMF8zNjUiLCJhcmcwXzM2NiIsInJlczBfMzY3IiwiYXJnMF8zNjgiLCJyZXMwXzM2OSIsInRvX2xhdGVzdCQ1Iiwib2ZfbGF0ZXN0JDUiLCJ0X29mX3NleHAkMTUiLCJzZXhwXzM3NCIsInRhZ18zNzUiLCJzZXhwX2FyZ3NfMzg2IiwiYXJnMF8zODciLCJyZXMwXzM4OCIsInNleHBfYXJnc18zODEiLCJhcmcwXzM4MiIsInJlczBfMzgzIiwic2V4cF9hcmdzXzM3NiIsImFyZzBfMzc3IiwicmVzMF8zNzgiLCJzZXhwX29mX3QkMTQiLCJhcmcwXzM4OSIsInJlczBfMzkwIiwiYXJnMF8zOTEiLCJyZXMwXzM5MiIsImFyZzBfMzkzIiwicmVzMF8zOTQiLCJ2MSIsInYwIiwidjIiLCJ2MyIsInYxJDAiLCJ2MiQwIiwidjMkMCIsIm9mX3ZlcnNpb25lZCIsImNvbXBhcmUkNyIsImFfMzk1IiwiYl8zOTYiLCJhXzM5NSQwIiwiYl8zOTYkMCIsImFfMzk3IiwiYl8zOTgiLCJhXzM5OSIsImJfNDAwIiwiYV80MDEiLCJiXzQwMiIsImFfNDAzIiwiYl80MDQiLCJhXzQwNSIsImJfNDA2IiwiYV80MDciLCJiXzQwOCIsInRfb2Zfc2V4cCQxNiIsInNleHBfNDEzIiwidGFnXzQxNCIsInNleHBfYXJnc180MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3Iiwic2V4cF9hcmdzXzQzMCIsImFyZzBfNDMxIiwicmVzMF80MzIiLCJzZXhwX2FyZ3NfNDIwIiwiYXJnMF80MjEiLCJyZXMwXzQyMiIsInNleHBfYXJnc180MjUiLCJhcmcwXzQyNiIsInJlczBfNDI3Iiwic2V4cF9hcmdzXzQxNSIsImFyZzBfNDE2IiwicmVzMF80MTciLCJzZXhwX29mX3QkMTUiLCJhcmcwXzQzOCIsInJlczBfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsImFyZzBfNDQyIiwicmVzMF80NDMiLCJhcmcwXzQ0NCIsInJlczBfNDQ1IiwiYXJnMF80NDYiLCJyZXMwXzQ0NyIsImNvbXBhcmUkOCIsImFfNDQ4IiwiYl80NDkiLCJhXzQ1MCIsImJfNDUxIiwiYV80NTIiLCJiXzQ1MyIsInRfb2Zfc2V4cCQxNyIsInNleHBfNDU4IiwidGFnXzQ1OSIsInNleHBfYXJnc180NjAiLCJhcmcwXzQ2MSIsInJlczBfNDYyIiwic2V4cF9hcmdzXzQ2NSIsImFyZzBfNDY2IiwicmVzMF80NjciLCJzZXhwX29mX3QkMTYiLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImNvbXBhcmUkOSIsImFfNDcyIiwiYl80NzMiLCJhY2MiLCJlbnVtZXJhdGVfNDc4IiwiZW51bWVyYXRlXzQ3OSIsImVudW1lcmF0ZV80NzciLCJlbnVtZXJhdGVfNDgwIiwiZW51bWVyYXRlXzQ3NiIsImFjYyQwIiwiZW51bWVyYXRlXzQ4MCQwIiwiYXRfbW9zdF9vbmNlIiwiciIsImF0X2xlYXN0X29uY2UiLCJhdF9tb3N0X29uY2UkMCIsInYiLCJhdF9sZWFzdF9vbmNlJDAiLCJtYWtlX2NyZWF0b3IiLCJhdF9sZWFzdF9vbmNlX2Z1biIsImF0X21vc3Rfb25jZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJhdF9sZWFzdF9vbmNlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJhdF9tb3N0X29uY2VfZ2VuIiwiY3JlYXRlIiwibWFwJDEiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJzZXhwX29mX3QkMTciLCJhdF9tb3N0X29uY2VfNDg0IiwiYXRfbGVhc3Rfb25jZV80ODIiLCJhcmdfNDg1IiwiYm5kc180ODEiLCJhcmdfNDgzIiwiYm5kc180ODEkMCIsInRvX2hlbHBfc3RyaW5nIiwiZGVzY3JpcHRpb24iLCJvZl9oZWxwX3N0cmluZyIsIm5hbWUkMCIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsInhfNDg2IiwicyIsImZsYWdfbmFtZSQwIiwieF80ODciLCJjb21wYXJlJDEwIiwiYV80OTQiLCJiXzQ5NSIsImFfNDk2IiwiYl80OTciLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJjb21waWxlX2FjYyQyIiwiYWxpYXNlc19nZW4iLCJjcmVhdGUkMCIsIm1hcCQzIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxOCIsInhfNTAwIiwic2V4cF9vZl90JDE4IiwiYWxpYXNlc181MDYiLCJkb2NfNTA0IiwibmFtZV81MDIiLCJhcmdfNTA3IiwiYm5kc181MDEiLCJhcmdfNTA1IiwiYm5kc181MDEkMCIsImFyZ181MDMiLCJibmRzXzUwMSQxIiwicGFyc2VfbmFtZSIsIm51bV9vY2N1cnJlbmNlcyIsInJlcXVpcmVzX2FyZyIsImhlbHBfc2NyZWVuX2NvbXBhcmUiLCJhIiwic29ydCIsIndvcmRfd3JhcF9hbmRfc3RyaXAiLCJ0ZXh0Iiwid2lkdGgiLCJjaHVua3MiLCJ3b3JkcyIsIndvcmQiLCJsaW5lIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4IiwieCIsInNsYWNrIiwiaW5kZW50X2FuZF9uZXdsaW5lIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImxoc19wYWQiLCJmbGFnIiwiZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyIsImRvY3VtZW50YXRpb24iLCJmbGFnX3dpZHRoIiwiZmxhZ19vbl9pdHNfb3duX2xpbmUiLCJ3cmFwcGVkX2RvY3VtZW50YXRpb24iLCJkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIiwiZG9jX3dyYXBwZWRfZmlyc3RfbGluZSIsIndyYXBwZWRfZG9jX2xpbmVzIiwicHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfIiwidG9fc3RyaW5nJDAiLCJsb29rdXBfZXhwYW5kIiwiYWxpc3QiLCJwcmVmaXgiLCJrZXlfdHlwZSIsImlzX2Rhc2giLCJhbGlzdCQwIiwiZGF0YSIsImtleSIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzUwOCIsImRhdGEkMCIsImtleSQwIiwibWF0Y2hpbmdfa2V5cyIsImN1c3RvbV9wcmludGZfNTA5IiwiY29tcGFyZSQxMSIsImFfNTEwIiwiYl81MTEiLCJhXzUxMiIsImJfNTEzIiwiYV81MTQiLCJiXzUxNSIsImZsYWdzJDAiLCJhbm9ucyQwIiwicmVhZG1lJDAiLCJzdW1tYXJ5JDAiLCJtYWtlX2NyZWF0b3IkMSIsInN1bW1hcnlfZnVuIiwicmVhZG1lX2Z1biIsImFub25zX2Z1biIsImZsYWdzX2Z1biIsInN1bW1hcnlfZ2VuIiwicmVhZG1lX2dlbiIsImFub25zX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJmbGFnc19nZW4iLCJjcmVhdGUkMSIsIm1hcCQ1IiwiaXRlciQzIiwiZm9sZCQzIiwibWFwX3BvbHkkMSIsImZvcl9hbGwkMyIsImV4aXN0cyQzIiwidG9fbGlzdCQzIiwiaXRlciQ0IiwiZm9sZCQ0IiwiZm9yX2FsbCQ0IiwiZXhpc3RzJDQiLCJ0b19saXN0JDQiLCJtYXAkNiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMSIsInRfb2Zfc2V4cCQxOSIsInhfNTE4Iiwic2V4cF9vZl90JDE5IiwiZmxhZ3NfNTI4IiwiYW5vbnNfNTI2IiwicmVhZG1lXzUyMiIsInN1bW1hcnlfNTIwIiwiYXJnXzUyOSIsImJuZHNfNTE5IiwiYXJnXzUyNyIsImJuZHNfNTE5JDAiLCJ2XzUyMyIsImFyZ181MjUiLCJibmRfNTI0IiwiYm5kc181MTkkMSIsImFyZ181MjEiLCJibmRzXzUxOSQyIiwiZmluZF9mbGFnIiwiZmxhZ19pbmZvIiwiY2hvaWNlcyIsImdldF91c2FnZSIsImNvbXBhcmUkMTIiLCJhXzUzMiIsImJfNTMzIiwiYV81MzQiLCJiXzUzNSIsImFfNTM2IiwiYl81MzciLCJhXzUzOCIsImJfNTM5IiwidF81NDEiLCJ0XzU0MCIsInRfNTQzIiwidF81NDIiLCJyZWFkbWUkMSIsInN1bW1hcnkkMSIsInN1YmNvbW1hbmRzJDAiLCJyZWFkbWUkMiIsInN1bW1hcnkkMiIsIm1ha2VfY3JlYXRvciQyIiwic3ViY29tbWFuZHNfZnVuIiwic3ViY29tbWFuZHNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkNyIsIml0ZXIkNSIsImZvbGQkNSIsIm1hcF9wb2x5JDIiLCJmb3JfYWxsJDUiLCJleGlzdHMkNSIsInRvX2xpc3QkNSIsIml0ZXIkNiIsImZvbGQkNiIsImZvcl9hbGwkNiIsImV4aXN0cyQ2IiwidG9fbGlzdCQ2IiwibWFwJDgiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDIiLCJ0X29mX3NleHAkMjAiLCJvZl9hXzU0NCIsInhfNTUyIiwic2V4cF81NTEiLCJhcmcxXzU0OCIsImFyZzBfNTQ3IiwicmVzMF81NDkiLCJyZXMxXzU1MCIsInNleHBfb2ZfdCQyMCIsIm9mX2FfNTUzIiwic3ViY29tbWFuZHNfNTYxIiwicmVhZG1lXzU1NyIsInN1bW1hcnlfNTU1IiwiYXJnMV81NjQiLCJhcmcwXzU2MyIsInJlczBfNTY1IiwicmVzMV81NjYiLCJhcmdfNTYyIiwiYm5kc181NTQiLCJ2XzU1OCIsImFyZ181NjAiLCJibmRfNTU5IiwiYm5kc181NTQkMCIsImFyZ181NTYiLCJibmRzXzU1NCQxIiwiZmluZF9zdWJjb21tYW5kIiwiY29tcGFyZSQxMyIsImFfNTY3IiwiYl81NjgiLCJhXzU2OSIsImJfNTcwIiwiYV81NzEiLCJiXzU3MiIsInJlYWRtZSQzIiwic3VtbWFyeSQzIiwiY2hpbGRfc3ViY29tbWFuZCQwIiwicGF0aF90b19leGUkMCIsIndvcmtpbmdfZGlyJDAiLCJyZWFkbWUkNCIsInN1bW1hcnkkNCIsIm1ha2VfY3JlYXRvciQzIiwid29ya2luZ19kaXJfZnVuIiwicGF0aF90b19leGVfZnVuIiwiY2hpbGRfc3ViY29tbWFuZF9mdW4iLCJ3b3JraW5nX2Rpcl9nZW4iLCJwYXRoX3RvX2V4ZV9nZW4iLCJjb21waWxlX2FjYyQ0IiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMjEiLCJ4XzU3NSIsInNleHBfb2ZfdCQyMSIsImNoaWxkX3N1YmNvbW1hbmRfNTg3IiwicGF0aF90b19leGVfNTg1Iiwid29ya2luZ19kaXJfNTgzIiwicmVhZG1lXzU3OSIsInN1bW1hcnlfNTc3IiwiYXJnXzU4OCIsImJuZHNfNTc2IiwiYXJnXzU4NiIsImJuZHNfNTc2JDAiLCJhcmdfNTg0IiwiYm5kc181NzYkMSIsInZfNTgwIiwiYXJnXzU4MiIsImJuZF81ODEiLCJibmRzXzU3NiQyIiwiYXJnXzU3OCIsImJuZHNfNTc2JDMiLCJjb21wYXJlJDE0IiwiYV81ODkiLCJiXzU5MCIsImFfNTg5JDAiLCJiXzU5MCQwIiwiYV81OTEiLCJiXzU5MiIsImFfNTkzIiwiYl81OTQiLCJhXzU5NSIsImJfNTk2IiwiYV81OTkiLCJhXzU5NyIsImJfNjAwIiwiYl81OTgiLCJ0X29mX3NleHAkMjIiLCJzZXhwXzYwNSIsInRhZ182MDYiLCJzZXhwX2FyZ3NfNjEyIiwiYXJnMF82MTMiLCJyZXMwXzYxNCIsInNleHBfYXJnc182MTciLCJhcmcxXzYxOSIsImFyZzBfNjE4IiwicmVzMF82MjAiLCJyZXMxXzYyMSIsInNleHBfYXJnc182MDciLCJhcmcwXzYwOCIsInJlczBfNjA5Iiwic2V4cF9vZl90JDIyIiwiYXJnMF82MjIiLCJyZXMwXzYyMyIsImFyZzBfNjI0IiwicmVzMF82MjUiLCJhcmcxXzYyNyIsImFyZzBfNjI2IiwicmVzMF82MjgiLCJyZXMxXzYyOSIsImV4cGFuZGVkX3N1YmNvbW1hbmRzIiwiZXhwYW5kIiwic2V4cF9vZl90JDIzIiwiYXJnMF82MzAiLCJyZXMwXzYzMSIsImFyZzBfNjMyIiwicmVzMF82MzMiLCJhcmcwXzYzNCIsInJlczBfNjM1IiwiYXJnMF82MzYiLCJyZXMwXzYzNyIsImV4dHJhY3Rpb25fdmFyIiwiaSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsInhzIiwiZGllIiwiZm10IiwibXNnIiwia2V5X2NyZWF0ZSIsIm11bHRpX2FkZCIsInNldF93aXRoX2RlZmF1bHQiLCJhcHBseSIsImVycl8xIiwiaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhIiwicmV0dXJuX25vX2FyZyIsInJldHVybl93aXRoX2FyZyIsImVycm9yIiwiaGFzX2FyZyIsImVyciIsInJlc3VsdCIsInJ1bl9hbmRfZXhpdCIsImVudiIsInBhcnQiLCJjb21wbGV0aW9ucyIsImV4dHJhX2RvYyIsInBhcnNlIiwiY29tcGxldGUiLCJvZl9zdHJpbmciLCJvZl9sYXp5Iiwic3RyIiwiZXh0cmFfZG9jJDAiLCJzdHJpbmciLCJpbnQkMCIsImNoYXIkMCIsImZsb2F0JDAiLCJzZXhwX2NvbnYiLCJvZl9zZXhwIiwib2ZfYWxpc3RfZXhuIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJtYWtlIiwiY21wIiwiayIsImR1cGxpY2F0ZV9rZXlzIiwiUyIsInVuaXZfbWFwIiwic3VmZml4IiwidmFsdWVzIiwiYXJnIiwidiQwIiwidmFsaWRfYXJndW1lbnRzX2V4dHJhIiwiY29tcGxldGUkMCIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImJvb2wiLCJjb21tYV9zZXBhcmF0ZWQiLCJhbGxvd19lbXB0eSIsInN0cmlwX3doaXRlc3BhY2UiLCJ1bmlxdWVfdmFsdWVzIiwic3RyaXAiLCJjb21wbGV0ZV9lbHQiLCJ0bCIsImhkIiwicHJlZml4ZXMiLCJzZWVuX2FscmVhZHkiLCJpc19hbGxvd2VkIiwiY2hvaWNlIiwiY2hvaWNlcyQwIiwic3RyaW5nJDAiLCJlbnVtZXJhdGVfMDEyIiwiZW51bWVyYXRlXzAxMyIsImVudW1lcmF0ZV8wMTEiLCJlbnVtZXJhdGVfMDE0IiwiZW51bWVyYXRlXzAxMCIsImVudW1lcmF0ZV8wMTQkMCIsInBhcnNlJDAiLCJhY3Rpb24iLCJhcmdfZG9jIiwiZG9jJDEiLCJhcmdfZG9jJDAiLCJjb25jYXQiLCJ3cmFwX2lmX29wdGlvbmFsIiwiaGVscCIsImFsaWduIiwiYV8wMjAiLCJiXzAyMSIsImFyZ19mbGFnIiwiYXJnX3R5cGUiLCJyZWFkIiwid3JpdGUiLCJ1cGRhdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJpbnB1dCIsIndyaXRlX29wdGlvbiIsInJlcXVpcmVkX3ZhbHVlIiwiZGVmYXVsdCQwIiwicmVxdWlyZWQiLCJvcHRpb25hbF93aXRoX2RlZmF1bHQiLCJvcHRpb25hbCIsInZhbHVlIiwibm9fYXJnX2dlbmVyYWwiLCJpc19yZXF1aXJlZCIsImtleV92YWx1ZSIsImRlcHJlY2F0ZWRfaG9vayIsImFjdGlvbiQwIiwibm9fYXJnIiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3JlZ2lzdGVyIiwibm9fYXJnX3NvbWUiLCJsaXN0ZWQiLCJ4XzAyMiIsInZhbHVlX2xpc3QiLCJsaXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsInhfMDIzIiwicmVzdCIsImZpcnN0IiwicSIsIm9uZV9vcl9tb3JlX2FzX2xpc3QiLCJlc2NhcGVfZ2VuZXJhbCIsInhfMDI0IiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsImVtcHR5JDAiLCJhcHBlbmQiLCJzdWJjb21tYW5kIiwicGFydHMiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJsZW5ndGgiLCJyZXBsYWNlX2ZpcnN0IiwiZnJvbSIsInRvIiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJsYXN0IiwiaXNfZW1wdHkiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsInMkMCIsInplcm8iLCJjb25jYXQkMCIsImNkciIsImNhciIsInQyIiwidDEiLCJjZHIkMCIsImNhciQwIiwicGFyc2VfbW9yZSIsImZvcl9jb21wbGV0aW9uIiwidXBkYXRlX2VudiIsInBhcnNlciIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInN5bWJvbCQwIiwidF9sZWZ0IiwidF9yaWdodCIsImZfb3V0Y29tZSIsInhfb3V0Y29tZSIsIm1vcmUiLCJ0ciIsInRlc3QiLCJtb3JlJDAiLCJ0ZXN0JDAiLCJyZXR1cm4kMSIsInN5bWJvbF9tYXAiLCJmcm9tX2VudiIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQxIiwicmV0dXJuJDIiLCJyZXR1cm5fd2l0aF9hcmckMCIsIm9uZSIsImFub24iLCJzZXF1ZW5jZSIsImxvb3AiLCJjb25zdW1lIiwicGFja2VkIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsImExIiwiYTIiLCJ0MyIsImEzIiwidDQiLCJhNCIsIm5vcm1hbGl6ZSIsInN0cmxlbiIsInNwZWNpYWxfY2hhcnMiLCJoYXNfc3BlY2lhbF9jaGFycyIsInN5bWJvbCQyIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI5IiwiYV8wMjciLCJiXzAzMCIsImJfMDI4IiwiYV8wMzEiLCJiXzAzMiIsIm9mX2xpc3QiLCJhcmdzIiwieCQwIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiYyIsImN1c3RvbV9wcmludGZfMDMzIiwiY3VzdG9tX3ByaW50Zl8wMzQiLCJzdWJjb21tYW5kX2NtcF9mc3QiLCJzaGFwZSIsInBhdGhfa2V5IiwiYXJnc19rZXkiLCJoZWxwX2tleSIsInJ1bl9leG4iLCJleG4iLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwiZXhuX3N0ciIsInZlcmJvc2UiLCJlcnJvcl9tc2ciLCJydW4iLCJ3aGVuX3BhcnNpbmdfc3VjY2VlZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0Iiwib25fZmFpbHVyZSIsInBhcnNlciQxIiwiZW52JDEiLCJjbWRsaW5lJDAiLCJhcmdzJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwibmFtZV9tYXRjaGluZyIsImFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIiwiYWxpYXMiLCJzMiIsInMxIiwiZmxhZyQwIiwiZmxhZyQxIiwiZiQxIiwiaW5mbyIsImNvbXBsZXRpbmciLCJjb21wIiwiZiQyIiwiZSQwIiwiY29tcCQwIiwiZiQzIiwiYXJnX2xpc3QiLCJjbWRsaW5lJDIiLCJlbnYkMiIsInBhcnNlX2ZsYWdzMiIsImVudiQzIiwicGFyc2VfZmxhZ3MkMCIsInBhcnQkMCIsIm1haW4iLCJmJDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJ0JDciLCJ3cmFwX3ZhbHVlIiwiYXBwbHkkMSIsImVtcHR5X3NwZWMiLCJtYXBfb3V0Y29tZSIsImxvb2t1cCIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiZmxvYXQkMSIsImJvb2wkMCIsInNleHAkMCIsInNleHBfY29udiQwIiwic3BlYyIsIm91dGNvbWUiLCJlc2NhcGVfYW5vbiIsImZpbmFsX2Fub24iLCJmdWxsX2ZsYWdfcmVxdWlyZWQiLCJtb2RlIiwiY2hlY2tfYXZhaWxhYmxlIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJyZXR1cm4kMyIsIm9wdGlvbmFsX3RvX3JlcXVpcmVkIiwiYm90aCIsImFyZ19uYW1lcyIsImZsYWdfbmFtZXMiLCJhbm9uX25hbWVzIiwiYV8wMzYiLCJiXzAzNyIsImFfMDM4IiwiYl8wMzkiLCJhXzA0MCIsImJfMDQxIiwieF8wNDIiLCJjcmVhdGVfZXhuIiwicmVxdWlyZWRfYXJncyIsIm5hbWVzX3dpdGhfY29tbWFzIiwieF8wNDMiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsIiwiaWZfbm90aGluZ19jaG9zZW4iLCJuZXdfYmVoYXZpb3IiLCJuYW1lX29mX3RoZV9ncm91cCIsImZsYWdfaW50ZXJuYWwiLCJleGNlcHQiLCJsIiwidHMkMCIsImFyZ19jb3VudGVyIiwibW9yZV90aGFuX29uZV9lcnJvciIsInBhc3NlZCIsImN1c3RvbV9wcmludGZfMDQ0IiwiZXJyb3JfbGlzdCIsInN1Y2Nlc3NfbGlzdCIsInZhbHVlJDAiLCJjdXN0b21fcHJpbnRmXzA0NSIsImNob29zZV9vbmUiLCJjaG9vc2Vfb25lX25vbl9vcHRpb25hbCQwIiwibHN0IiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInBhcnNlJDEiLCJwYXJhbXMiLCJzeW1ib2wkNiIsImYxIiwiZjIiLCJzeW1ib2wkNyIsInAyIiwic3ltYm9sJDgiLCJzdGVwIiwiY29uc3QkMCIsIndyYXAiLCJvZl9wYXJhbSIsInAiLCJ0b19wYXJhbSIsIm0iLCJzdHJpbmckMSIsImludCQyIiwiY2hhciQyIiwiZmxvYXQkMiIsImJvb2wkMSIsInNleHAkMSIsInNleHBfY29udiQxIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJnZW4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0Iiwic2V0X2Jvb2wiLCJyJDAiLCJyJDEiLCJyJDIiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1Iiwic2hhcGUkMCIsInN1YmNvbW1hbmRfdG9fc2hhcGUiLCJjb21wX2N3b3JkIiwic2hhcGUkMSIsInNleHBhYmxlX3NoYXBlIiwiYmFzZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwibWVtIiwiYWRkIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljIiwiZmxhZ3MkMSIsImJhc2UkMCIsImJhc2ljX3NwZWMiLCJzdWJzX2tleSIsImxhenlfZ3JvdXAiLCJwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIiwiYm9keSIsInAkMCIsInAkMSIsInAkMiIsIm9mX2xhenkkMCIsInByb3h5X29mX3NleHBhYmxlIiwic2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQiLCJraW5kIiwia2luZF9vZl9zZXhwYWJsZSIsInBhdGhfdG9fc3ViY29tbWFuZCQwIiwicHJveHkiLCJwcmludF92ZXJzaW9uIiwidmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsImFkZCQwIiwidW52ZXJzaW9uZWQiLCJiYXNlJDEiLCJub3JtYWxpemVfdmVyc2lvbl9saW5lcyIsImRlZmF1bHRfdmVyc2lvbiIsImRlZmF1bHRfYnVpbGRfaW5mbyIsInJlcHJpbnRfYnVpbGRfaW5mbyIsInRvX3NleHAiLCJ4JDEiLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsImgiLCJwYXRoJDEiLCJiYXNpYyQwIiwicGFyYW0iLCJiYXNpY19vcl9lcnJvciIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsImdldHBpZCIsImNsb3NlIiwiaW5fY2hhbm5lbF9vZl9kZXNjciIsIndhaXQiLCJnZXRlbnZfYW5kX2NsZWFyIiwidmFyJDAiLCJvZl9leHRlcm5hbCIsImhlbHBfc2V4cCIsInByb2ciLCJjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHIiLCJlbnZfdmFyIiwiYXJndjAiLCJwcm9nX3NlYXJjaF9wYXRoIiwibGlzdCQwIiwibGlzdCQxIiwicHJvY2Vzc19pbmZvIiwic3RhcnRfcmVhZGluZyIsImRlc2NyIiwib3V0cHV0IiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsImV4biQwIiwic2hhcGVfb2ZfcHJveHkiLCJzaGFwZV9vZl9wcm94eV9raW5kIiwic2hhcGVfb2ZfZXhlIiwic2hhcGUkMiIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImxvb3AkMCIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsIm1heWJlX25ld19jb21wX2N3b3JkIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJhcmdzJDEiLCJkaWVfc2hvd2luZ19oZWxwIiwiYXJncyQyIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQkMCIsIm1heWJlX25ld19jb21wX2N3b3JkJDEiLCJyZXNvbHZlIiwic3ViIiwic3VicyQwIiwiYm9keSQwIiwidG9fb3V0cHV0IiwicmVzdF9vZl9yZXN0IiwiZmlyc3Rfb2ZfcmVzdCIsImFyZ3MkMyIsIm5ld192YWx1ZSQwIiwibmV3X3ZhbHVlIiwicnVuJDAiLCJhcmd2IiwiYnVpbGRfaW5mbyQwIiwidmVyc2lvbiQwIiwic3VwcG9ydGVkX3ZlcnNpb25zJDAiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMSIsInBhdGhfdG9fc3ViY29tbWFuZCQyIiwiZm5hbWUiLCJhcmd2XzAiLCJjb21wX2N3b3JkJDAiLCJkZXByZWNhdGVkX3J1biIsImlzX2hlbHAiLCJpc19oZWxwX3JlYyIsImlzX2hlbHBfcmVjX2ZsYWdzIiwiaXNfZXhwYW5kX2RvdHMiLCJwYXRoX3N0cmluZ3MiLCJhcmdzJDQiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsImNyZWF0ZSIsInYiLCJjcmVhdGVfZXhuIiwidmFsdWUiLCJ0IiwiYnl0ZXNfcGVyX3dvcmQiLCJieXRlcyIsInBhc3MiLCJmYWlscyIsIm1lc3NhZ2UiLCJhIiwic2V4cF9vZl9hIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwiZmFpbF9zIiwic2V4cCIsImNvbWJpbmUiLCJ0MSIsInQyIiwib2ZfbGlzdCIsIm5hbWUiLCJ0IiwiZXJyb3IiLCJwYXRoIiwibmFtZV9saXN0IiwibiIsImwiLCJmYWlsX2ZuIiwicGFzc19ib29sIiwicGFzc191bml0IiwicHJvdGVjdCIsImYiLCJ2IiwiZXhuJDAiLCJleG4iLCJ0cnlfd2l0aCIsInBhdGhfc3RyaW5nIiwiZXJyb3JzIiwicmVzdWx0IiwieF8wMDUiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsIm1heWJlX3JhaXNlIiwidmFsaWRfb3JfZXJyb3IiLCJjaGVjayIsIngiLCJmaWVsZF9kaXJlY3QiLCJmbGQiLCJyZWNvcmQiLCJmaWVsZCIsImZpZWxkX2ZvbGRlciIsImFjYyIsImZpZWxkX2RpcmVjdF9mb2xkZXIiLCJhbGwiLCJjaGVja3MiLCJjaGVja3MkMCIsImVycnMiLCJjaGVja3MkMSIsImVyciIsImVycnMkMCIsIm9mX3Jlc3VsdCIsIm9mX2Vycm9yIiwiYm9vbHRlc3QiLCJpZl9mYWxzZSIsInBhaXIiLCJmc3QiLCJzbmQiLCJzbmRfdmFsdWUiLCJmc3RfdmFsdWUiLCJsaXN0X2luZGV4ZWQiLCJsaXN0IiwiaSIsImVsIiwiZXh0cmFjdF9uYW1lIiwiYWxpc3QiLCJsaXN0JDAiLCJrZXkiLCJmaXJzdF9mYWlsdXJlIiwib2ZfZXJyb3Jfb3B0IiwiYm91bmRlZCIsImxvd2VyIiwidXBwZXIiLCJjb21wYXJlIiwiaW5jbCIsImV4Y2wiLCJpbmNsJDAiLCJleGNsJDAiLCJzeW1ib2wiLCJuYW1lIiwic2V4cF9vZl9iaWdzdHJpbmciLCJiaWdzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2ZfbWF0IiwibWF0X29mX3NleHAiLCJzZXhwX29mX3ZlYyIsInZlY19vZl9zZXhwIiwic2V4cF9vZl9vcGFxdWUiLCJvcGFxdWVfb2Zfc2V4cCIsInNleHBfb2ZfcGFpciIsInBhaXJfb2Zfc2V4cCIsIm9mX3NleHBfZXJyb3IiLCJvZl9zZXhwX2Vycm9yX2V4biIsImdyb3VwIiwiYmluX3NoYXBlX3NleHBfb3BhcXVlIiwiYSIsImJpbl9zaXplX3NleHBfb3BhcXVlIiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3NleHBfb3BhcXVlIiwid3JpdGVfYSIsImJpbl93cml0ZXJfc2V4cF9vcGFxdWUiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfc2V4cF9vcGFxdWUiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSQwIiwiYmluX3JlYWRlcl9zZXhwX29wYXF1ZSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fc2V4cF9vcGFxdWUiLCJiaW5fYSIsImNvbXBhcmVfc2V4cF9vcGFxdWUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJoYXNoX2ZvbGRfc2V4cF9vcGFxdWUiLCJoYXNoX2ZvbGRfYSIsImhzdiIsImFyZyIsInR5cGVuYW1lX29mX3NleHBfb3BhcXVlIiwidHlwZXJlcF9vZl9zZXhwX29wYXF1ZSIsIm5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlbmFtZV9vZl90dXBsZTUiLCJ0eXBlbmFtZV9vZl90dXBsZTQiLCJ0eXBlbmFtZV9vZl90dXBsZTMiLCJ0eXBlbmFtZV9vZl90dXBsZTIiLCJ0eXBlbmFtZV9vZl90dXBsZTAiLCJ0eXBlbmFtZV9vZl9mdW5jdGlvbiIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX2FycmF5IiwidHlwZW5hbWVfb2ZfbGlzdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX3VuaXQiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9zdHJpbmciLCJ0eXBlbmFtZV9vZl9mbG9hdCIsInR5cGVuYW1lX29mX2NoYXIiLCJ0eXBlbmFtZV9vZl9pbnQ2MyIsInR5cGVuYW1lX29mX25hdGl2ZWludCIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfaW50MzIiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlcmVwX29mX3R1cGxlNSIsInR5cGVyZXBfb2ZfdHVwbGU0IiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlMiIsInR5cGVyZXBfb2ZfdHVwbGUwIiwidHlwZXJlcF9vZl9mdW5jdGlvbiIsInR5cGVyZXBfb2ZfcmVmIiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9saXN0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ2YWx1ZV90dXBsZTAiLCJ0eXBlcmVwX29mX3VuaXQiLCJ0eXBlcmVwX29mX2Jvb2wiLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9jaGFyIiwidHlwZXJlcF9vZl9pbnQ2MyIsInR5cGVyZXBfb2ZfbmF0aXZlaW50IiwidHlwZXJlcF9vZl9pbnQ2NCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludCIsIndpdGhfcmV0dXJuIiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJ0X3NleHBfZ3JhbW1hciIsIm9mX3N0cmluZyIsIngiLCJ0b19zdHJpbmciLCJ0b19iaW5hYmxlIiwib2ZfYmluYWJsZSIsImNhbGxlcl9pZGVudGl0eSIsImJpbl9zaGFwZV90IiwiYmluX3NpemVfdCIsInYxIiwidjEkMCIsImJpbl93cml0ZV90IiwicG9zIiwicG9zJDAiLCJwb3MkMSIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJhcmdfMSIsImFyZ18xJDAiLCJ4JDAiLCJvZl9iaWdzdHJpbmciLCJtIiwiYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2xlbmd0aCIsInRvX2JpZ3N0cmluZyIsInByZWZpeF93aXRoX2xlbmd0aCIsInRfbGVuZ3RoIiwiZXByaW50ZiIsImZwcmludGYiLCJrZnByaW50ZiIsInByaW50ZiIsImV4aXRmIiwiZm10IiwiY29sbGVjdF90b19zdHJpbmciLCJmIiwiZG9uZSIsIm91dHB1dCIsImVyciQzIiwiZXJyJDIiLCJlcnIkMSIsImVyciQwIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNCIsImVycm9yX3NvdXJjZV8wMDkiLCJuYW1lJDAiLCJlcnJvcl9zb3VyY2VfMDE4IiwiZXJyb3Jfc291cmNlXzAyMCIsIm5hbWUkMSIsImVycm9yX3NvdXJjZV8wMzMiLCJlcnJvcl9zb3VyY2VfMDM1IiwibmFtZSQyIiwiZXJyb3Jfc291cmNlXzA1MSIsImVycm9yX3NvdXJjZV8wNTMiLCJuYW1lJDMiLCJlcnJvcl9zb3VyY2VfMDY0IiwibmFtZSQ0IiwiZXJyb3Jfc291cmNlXzA4MiIsImVycm9yX3NvdXJjZV8wODQiLCJuYW1lJDUiLCJiaW5fd3JpdGVyX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsImNvbXBhcmUiLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ4XzAwNSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInhfMDEwIiwic2V4cF9vZl90JDAiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl9yZWFkX3QkMyIsImJpbl9yZWFkX3QkNCIsImJpbl9yZWFkZXJfdCQxIiwiYmluX3QkMSIsImNvbXBhcmUkMSIsImFfMDExIiwiYl8wMTIiLCJoYXNoX2ZvbGRfdCQxIiwiaGFzaCQxIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAxNiIsImF0b21fMDE0IiwiYXRvbV8wMTQkMCIsInRfb2Zfc2V4cCQyIiwic2V4cF8wMTkiLCJzZXhwX29mX3QkMSIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImJpbl93cml0ZV90JDIiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDIxIiwiYl8wMjIiLCJyaWdodF8wMjQiLCJsZWZ0XzAyMyIsImhhc2hfZm9sZF90JDIiLCJoc3YkMCIsImhhc2gkMiIsInRfb2Zfc2V4cCQzIiwic2V4cF8wMjgiLCJhdG9tXzAyNiIsInNleHBfYXJnc18wMjkiLCJhdG9tXzAyNiQwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInRfb2Zfc2V4cCQ0Iiwic2V4cF8wMzQiLCJzZXhwX29mX3QkMiIsInZfMDM2IiwiZ3JvdXAkMyIsImJpbl9zaGFwZV90JDMiLCJiaW5fc2l6ZV90JDMiLCJiaW5fd3JpdGVfdCQzIiwiYmluX3dyaXRlcl90JDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImJpbl90JDMiLCJjb21wYXJlJDMiLCJhXzAzNyIsImJfMDM4IiwicmlnaHRfMDQyIiwibGVmdF8wNDEiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDUiLCJzZXhwXzA1MiIsImF0b21fMDQ0Iiwic2V4cF9hcmdzXzA0NyIsImF0b21fMDQ0JDAiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwic2V4cF9vZl90JDMiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsInN0YWJsZV93aXRuZXNzIiwiZ2xvYmFsaXplIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9ub2JvZHkiLCJiaW5fc2l6ZV9ub2JvZHkiLCJiaW5fd3JpdGVfbm9ib2R5IiwiYmluX3dyaXRlcl9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkiLCJiaW5fcmVhZF9ub2JvZHkkMCIsImJpbl9yZWFkZXJfbm9ib2R5IiwiYmluX25vYm9keSIsImNvbXBhcmVfbm9ib2R5IiwiaGFzaF9mb2xkX25vYm9keSIsImZ1bmMiLCJoYXNoX25vYm9keSIsIm5vYm9keV9vZl9zZXhwIiwic2V4cF9vZl9ub2JvZHkiLCJzdGFibGVfd2l0bmVzc19ub2JvZHkiLCJncm91cCQ3IiwiYmluX3NoYXBlX21lIiwiYmluX3NpemVfbWUiLCJiaW5fd3JpdGVfbWUiLCJiaW5fd3JpdGVyX21lIiwiYmluX3JlYWRfbWUiLCJiaW5fcmVhZF9tZSQwIiwiYmluX3JlYWRlcl9tZSIsImJpbl9tZSIsImNvbXBhcmVfbWUiLCJoYXNoX2ZvbGRfbWUiLCJmdW5jJDAiLCJoYXNoX21lIiwibWVfb2Zfc2V4cCIsInNleHBfb2ZfbWUiLCJzdGFibGVfd2l0bmVzc19tZSIsImdyb3VwJDgiLCJiaW5fc2hhcGVfdCQ1IiwiYmluX3NpemVfdCQ1IiwiYmluX3dyaXRlX3QkNSIsImJpbl93cml0ZXJfdCQ1IiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkX3QkMTMiLCJiaW5fcmVhZGVyX3QkNSIsImJpbl90JDUiLCJjb21wYXJlJDUiLCJhXzEwMSIsImJfMTAyIiwiYV8xMDMiLCJiXzEwNCIsInJpZ2h0XzA3MiIsImxlZnRfMDcxIiwiaGFzaF9mb2xkX3Blcm1zIiwicGVybXNfb2Zfc2V4cCIsIm9mX2FfMTA3IiwieF8xMDkiLCJzZXhwXzA3NCIsImF0b21fMDc1Iiwic2V4cF9hcmdzXzA3OCIsImF0b21fMDc1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwic2V4cF9vZl9wZXJtcyIsIm9mX2FfMTEwIiwieF8xMTEiLCJ2XzA4NyIsImdsb2JhbGl6ZV9wZXJtcyIsImdyb3VwJDkiLCJiaW5fc2hhcGVfcmVhZCIsImJpbl9zaXplX3JlYWQiLCJiaW5fd3JpdGVfcmVhZCIsImJpbl93cml0ZXJfcmVhZCIsImJpbl9yZWFkX3JlYWQiLCJiaW5fcmVhZF9yZWFkJDAiLCJiaW5fcmVhZGVyX3JlYWQiLCJiaW5fcmVhZCIsImNvbXBhcmVfcmVhZCIsImdsb2JhbGl6ZV9yZWFkIiwiaGFzaF9mb2xkX3JlYWQiLCJmdW5jJDEiLCJoYXNoX3JlYWQiLCJyZWFkX29mX3NleHAiLCJzZXhwX29mX3JlYWQiLCJzdGFibGVfd2l0bmVzc19yZWFkIiwiY29tcGFyZV93cml0ZSIsImhhc2hfZm9sZF93cml0ZSIsImZ1bmMkMiIsImhhc2hfd3JpdGUiLCJnbG9iYWxpemVfd3JpdGUiLCJ3cml0ZV9vZl9zZXhwIiwic2V4cF9vZl93cml0ZSIsInN0YWJsZV93aXRuZXNzX3dyaXRlIiwiZ3JvdXAkMTAiLCJiaW5fc2hhcGVfaW1tdXRhYmxlIiwiYmluX3NpemVfaW1tdXRhYmxlIiwiYmluX3dyaXRlX2ltbXV0YWJsZSIsImJpbl93cml0ZXJfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlIiwiYmluX3JlYWRfaW1tdXRhYmxlJDAiLCJiaW5fcmVhZGVyX2ltbXV0YWJsZSIsImJpbl9pbW11dGFibGUiLCJjb21wYXJlX2ltbXV0YWJsZSIsImdsb2JhbGl6ZV9pbW11dGFibGUiLCJoYXNoX2ZvbGRfaW1tdXRhYmxlIiwiZnVuYyQzIiwiaGFzaF9pbW11dGFibGUiLCJpbW11dGFibGVfb2Zfc2V4cCIsInNleHBfb2ZfaW1tdXRhYmxlIiwic3RhYmxlX3dpdG5lc3NfaW1tdXRhYmxlIiwiZ3JvdXAkMTEiLCJiaW5fc2hhcGVfcmVhZF93cml0ZSIsImJpbl9zaXplX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVfcmVhZF93cml0ZSIsImJpbl93cml0ZXJfcmVhZF93cml0ZSIsImJpbl9yZWFkX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlJDAiLCJiaW5fcmVhZGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF93cml0ZSIsImNvbXBhcmVfcmVhZF93cml0ZSIsImdsb2JhbGl6ZV9yZWFkX3dyaXRlIiwiaGFzaF9mb2xkX3JlYWRfd3JpdGUiLCJmdW5jJDQiLCJoYXNoX3JlYWRfd3JpdGUiLCJyZWFkX3dyaXRlX29mX3NleHAiLCJzZXhwX29mX3JlYWRfd3JpdGUiLCJzdGFibGVfd2l0bmVzc19yZWFkX3dyaXRlIiwiZ3JvdXAkMTIiLCJiaW5fc2hhcGVfcGVybXMiLCJiaW5fc2l6ZV9wZXJtcyIsImJpbl93cml0ZV9wZXJtcyIsImJpbl93cml0ZXJfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyIsImJpbl9yZWFkX3Blcm1zJDAiLCJiaW5fcmVhZGVyX3Blcm1zIiwiYmluX3Blcm1zIiwiY29tcGFyZV9wZXJtcyIsImFfMTI4IiwiYl8xMjkiLCJhXzEzMCIsImJfMTMxIiwic3RhYmxlX3dpdG5lc3NfcGVybXMiLCJhX3N0YWJsZV93aXRuZXNzIiwibWFrZSIsImVycm9yX3NvdXJjZV8wMTEiLCJzaXplX29mX2YiLCJzaXplX29mX3MiLCJ3cml0ZV9mIiwid3JpdGVfcyIsImJpbl93cml0ZXJfZiIsImJpbl93cml0ZXJfcyIsIm9mX2YiLCJvZl9zIiwiYmluX3JlYWRlcl9mIiwiYmluX3JlYWRlcl9zIiwiYmluX2YiLCJiaW5fcyIsImNtcF9mIiwiY21wX3MiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsInYwIiwidGFnMCIsInRhZzEiLCJ0eXBlbmFtZSIsInRhZ3MiLCJ2YWx1ZSIsInYwJDAiLCJmX3N0YWJsZV93aXRuZXNzIiwic19zdGFibGVfd2l0bmVzcyIsIm1hcCIsImYxIiwiZjIiLCJ4MSIsIngyIiwiY21wX2IiLCJhXzAzNiIsImJfMDM3IiwiYV8wMzgiLCJiXzAzOSIsImFfMDQwIiwiYl8wNDEiLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwibmFtZXMiLCJ2NCIsInYzIiwidjIiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwicG9zJDIiLCJ2X3Bvc19mbmFtZSIsInZfcG9zX2xudW0iLCJ2X3Bvc19ib2wiLCJ2X3Bvc19jbnVtIiwibiIsIm4kMCIsIm4kMSIsInBvc19jbnVtIiwiciIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19jbnVtJDAiLCJwb3NfYm9sJDAiLCJwb3NfbG51bSQwIiwicG9zX2ZuYW1lJDAiLCJtYWtlX2NyZWF0b3IiLCJwb3NfZm5hbWVfZnVuIiwicG9zX2xudW1fZnVuIiwicG9zX2JvbF9mdW4iLCJwb3NfY251bV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJwb3NfZm5hbWVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsInBvc19sbnVtX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJwb3NfYm9sX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJwb3NfY251bV9nZW4iLCJhY2MiLCJjcmVhdGUiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwicG9zX2NudW1fMDEzIiwicG9zX2JvbF8wMTEiLCJwb3NfbG51bV8wMDkiLCJwb3NfZm5hbWVfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiYTAiLCJhMCQwIiwic3RhYmxlX3dpdG5lc3MkMCIsInN0YWJsZV93aXRuZXNzX2NoZWNrc19mb3JfdCIsInYxJDEiLCJ2MSQyIiwidjEkMyIsInYyJDAiLCJ2MSQ0IiwidjMkMCIsInYyJDEiLCJ2MSQ1Iiwic2l6ZSQyIiwic2l6ZSQzIiwidjIkMiIsInYxJDYiLCJzaXplJDQiLCJ2MiQzIiwidjEkNyIsInNpemUkNSIsInBvcyQzIiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMSIsImFyZ18xJDIiLCJhcmdfMSQzIiwiYXJnXzIiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInN0YWJsZV93aXRuZXNzJDEiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMCIsInN0YWJsZV93aXRuZXNzJDIiLCJzdGFibGVfd2l0bmVzc19jaGVja3NfZm9yX3QkMSIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJ0X3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl90JDYiLCJ0X3NleHBfZ3JhbW1hciQxIiwic3RhYmxlX3dpdG5lc3MkMyIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJzdGFibGVfd2l0bmVzcyQ0IiwiYmluX3NoYXBlX3QkNiIsImJpbl9zaXplX3QkNiIsImJpbl93cml0ZV90JDYiLCJmYWlsd2l0aHMiLCJzdHJpY3QiLCJoZXJlIiwibWVzc2FnZSIsImZhaWx3aXRocCIsInRlc3RzIiwiYiIsInNpemVfb2ZfYiIsIndyaXRlX2IiLCJiaW5fd3JpdGVyX2IiLCJvZl9iIiwiYmluX3JlYWRlcl9iIiwiYmluX2IiLCJvZl9hXzAxNCIsIm9mX2JfMDE1Iiwic2V4cF8wMjAiLCJ0YWdfMDIxIiwic2V4cF9hcmdzXzAyMiIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvZl9hXzAzMiIsIm9mX2JfMDMzIiwiYXJnMF8wMzQiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYl9zdGFibGVfd2l0bmVzcyIsInhfMDQ3IiwieF8wNDgiLCJlcXVhbCIsInhfMDQ5IiwieF8wNTAiLCJhXzA0MiIsImJfMDQzIiwiYV8wNDQiLCJiXzA0NSIsInJ1biIsInNhbml0aXplIiwidXBvbl91bnJlbGVhc2FibGVfaXNzdWUiLCJvZl9hXzAwNyIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxMSIsImFfMDEyIiwiYl8wMTMiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsIm9mX2FfMDE4IiwieF8wMjAiLCJvZl9hXzAyMSIsInhfMDIyIiwibWFwJDEiLCJ2X3N0YXRlIiwidl92YWx1ZSIsInZfc3RhdGUkMCIsIm1lcmdlX2FsbCIsIkhlYXAiLCJub3RfeWV0X2luX2hlYXAiLCJoZWFwIiwiaGVhcCQwIiwic2VxJDIiLCJlbHQkMCIsIm5vdF95ZXRfaW5faGVhcCQwIiwic2VxIiwic2VxJDAiLCJzZXEkMSIsImVsdCIsImRlZmF1bHRfc2VlZCIsImRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDIiLCJnZW5lcmF0b3JfMDEyIiwiZ2VuZXJhdG9yXzAxMyIsInNpemVfMDE2IiwicmFuZG9tXzAxNyIsInNpemVfMDE0IiwicmFuZG9tXzAxNSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDIiLCJvYnNlcnZlcl8wMDUiLCJvYnNlcnZlcl8wMDYiLCJ4XzAwNyIsInNpemVfMDA4IiwiaGFzaF8wMDkiLCJoYXNoXzAwOSQwIiwiaGFzaF8wMDkkMSIsImhhc2hfMDA5JDIiLCJoYXNoXzAwOSQzIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50MiIsInNocmlua2VyXzAwMSIsInNocmlua2VyXzAwMiIsInhfMDA0IiwieF8wMDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MyIsImdlbmVyYXRvcl8wMzMiLCJnZW5lcmF0b3JfMDM0IiwiZ2VuZXJhdG9yXzAzNSIsInNpemVfMDQwIiwicmFuZG9tXzA0MSIsInNpemVfMDM4IiwicmFuZG9tXzAzOSIsInNpemVfMDM2IiwicmFuZG9tXzAzNyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDMiLCJvYnNlcnZlcl8wMjQiLCJvYnNlcnZlcl8wMjUiLCJvYnNlcnZlcl8wMjYiLCJ4XzAyNyIsInNpemVfMDI4IiwiaGFzaF8wMjkiLCJ4XzAzMCIsImhhc2hfMDI5JDAiLCJoYXNoXzAyOSQxIiwieF8wMzEiLCJoYXNoXzAyOSQyIiwiaGFzaF8wMjkkMyIsInhfMDMyIiwiaGFzaF8wMjkkNCIsImhhc2hfMDI5JDUiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQzIiwic2hyaW5rZXJfMDE4Iiwic2hyaW5rZXJfMDE5Iiwic2hyaW5rZXJfMDIwIiwieF8wMjEiLCJ4XzAyMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0IiwiZ2VuZXJhdG9yXzA2MSIsImdlbmVyYXRvcl8wNjIiLCJnZW5lcmF0b3JfMDYzIiwiZ2VuZXJhdG9yXzA2NCIsInNpemVfMDcxIiwicmFuZG9tXzA3MiIsInNpemVfMDY5IiwicmFuZG9tXzA3MCIsInNpemVfMDY3IiwicmFuZG9tXzA2OCIsInNpemVfMDY1IiwicmFuZG9tXzA2NiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDQiLCJvYnNlcnZlcl8wNTAiLCJvYnNlcnZlcl8wNTEiLCJvYnNlcnZlcl8wNTIiLCJvYnNlcnZlcl8wNTMiLCJ4XzA1NCIsInNpemVfMDU1IiwiaGFzaF8wNTYiLCJ4XzA1NyIsImhhc2hfMDU2JDAiLCJoYXNoXzA1NiQxIiwieF8wNTgiLCJoYXNoXzA1NiQyIiwiaGFzaF8wNTYkMyIsInhfMDU5IiwiaGFzaF8wNTYkNCIsImhhc2hfMDU2JDUiLCJ4XzA2MCIsImhhc2hfMDU2JDYiLCJoYXNoXzA1NiQ3IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NCIsInNocmlua2VyXzA0MiIsInNocmlua2VyXzA0MyIsInNocmlua2VyXzA0NCIsInNocmlua2VyXzA0NSIsInhfMDQ2IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDUiLCJnZW5lcmF0b3JfMDk2IiwiZ2VuZXJhdG9yXzA5NyIsImdlbmVyYXRvcl8wOTgiLCJnZW5lcmF0b3JfMDk5IiwiZ2VuZXJhdG9yXzEwMCIsInNpemVfMTA5IiwicmFuZG9tXzExMCIsInNpemVfMTA3IiwicmFuZG9tXzEwOCIsInNpemVfMTA1IiwicmFuZG9tXzEwNiIsInNpemVfMTAzIiwicmFuZG9tXzEwNCIsInNpemVfMTAxIiwicmFuZG9tXzEwMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDUiLCJvYnNlcnZlcl8wODMiLCJvYnNlcnZlcl8wODQiLCJvYnNlcnZlcl8wODUiLCJvYnNlcnZlcl8wODYiLCJvYnNlcnZlcl8wODciLCJ4XzA4OCIsInNpemVfMDg5IiwiaGFzaF8wOTAiLCJ4XzA5MSIsImhhc2hfMDkwJDAiLCJoYXNoXzA5MCQxIiwieF8wOTIiLCJoYXNoXzA5MCQyIiwiaGFzaF8wOTAkMyIsImhhc2hfMDkwJDQiLCJoYXNoXzA5MCQ1IiwiaGFzaF8wOTAkNiIsImhhc2hfMDkwJDciLCJ4XzA5NSIsImhhc2hfMDkwJDgiLCJoYXNoXzA5MCQ5IiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NSIsInNocmlua2VyXzA3MyIsInNocmlua2VyXzA3NCIsInNocmlua2VyXzA3NSIsInNocmlua2VyXzA3NiIsInNocmlua2VyXzA3NyIsInhfMDc4IiwieF8wNzkiLCJ4XzA4MCIsInhfMDgxIiwieF8wODIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NiIsImdlbmVyYXRvcl8xMzgiLCJnZW5lcmF0b3JfMTM5IiwiZ2VuZXJhdG9yXzE0MCIsImdlbmVyYXRvcl8xNDEiLCJnZW5lcmF0b3JfMTQyIiwiZ2VuZXJhdG9yXzE0MyIsInNpemVfMTU0IiwicmFuZG9tXzE1NSIsInNpemVfMTUyIiwicmFuZG9tXzE1MyIsInNpemVfMTUwIiwicmFuZG9tXzE1MSIsInNpemVfMTQ4IiwicmFuZG9tXzE0OSIsInNpemVfMTQ2IiwicmFuZG9tXzE0NyIsInNpemVfMTQ0IiwicmFuZG9tXzE0NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDYiLCJvYnNlcnZlcl8xMjMiLCJvYnNlcnZlcl8xMjQiLCJvYnNlcnZlcl8xMjUiLCJvYnNlcnZlcl8xMjYiLCJvYnNlcnZlcl8xMjciLCJvYnNlcnZlcl8xMjgiLCJ4XzEyOSIsInNpemVfMTMwIiwiaGFzaF8xMzEiLCJ4XzEzMiIsImhhc2hfMTMxJDAiLCJoYXNoXzEzMSQxIiwieF8xMzMiLCJoYXNoXzEzMSQyIiwiaGFzaF8xMzEkMyIsInhfMTM0IiwiaGFzaF8xMzEkNCIsImhhc2hfMTMxJDUiLCJ4XzEzNSIsImhhc2hfMTMxJDYiLCJoYXNoXzEzMSQ3IiwieF8xMzYiLCJoYXNoXzEzMSQ4IiwiaGFzaF8xMzEkOSIsInhfMTM3IiwiaGFzaF8xMzEkMTAiLCJoYXNoXzEzMSQxMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDYiLCJzaHJpbmtlcl8xMTEiLCJzaHJpbmtlcl8xMTIiLCJzaHJpbmtlcl8xMTMiLCJzaHJpbmtlcl8xMTQiLCJzaHJpbmtlcl8xMTUiLCJzaHJpbmtlcl8xMTYiLCJ4XzExNyIsInhfMTE4IiwieF8xMTkiLCJ4XzEyMCIsInhfMTIxIiwieF8xMjIiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTIiLCJnZW5lcmF0b3JfMTY2IiwiZ2VuZXJhdG9yXzE2NyIsInNpemVfMTY4IiwicmFuZG9tXzE2OSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUyIiwib2JzZXJ2ZXJfMTYwIiwib2JzZXJ2ZXJfMTYxIiwic2l6ZV8xNjQiLCJoYXNoXzE2NSIsInhfMTYzIiwieF8xNjIiLCJoYXNoXzE2NSQwIiwiaGFzaF8xNjUkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUyIiwic2hyaW5rZXJfMTU2Iiwic2hyaW5rZXJfMTU3IiwieF8xNTkiLCJ4XzE1OCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMyIsImdlbmVyYXRvcl8xODQiLCJnZW5lcmF0b3JfMTg1IiwiZ2VuZXJhdG9yXzE4NiIsInNpemVfMTg3IiwicmFuZG9tXzE4OCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzIiwib2JzZXJ2ZXJfMTc2Iiwib2JzZXJ2ZXJfMTc3Iiwib2JzZXJ2ZXJfMTc4Iiwic2l6ZV8xODIiLCJoYXNoXzE4MyIsInhfMTgxIiwieF8xODAiLCJ4XzE3OSIsImhhc2hfMTgzJDAiLCJoYXNoXzE4MyQxIiwiaGFzaF8xODMkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzIiwic2hyaW5rZXJfMTcwIiwic2hyaW5rZXJfMTcxIiwic2hyaW5rZXJfMTcyIiwieF8xNzUiLCJ4XzE3NCIsInhfMTczIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0IiwiZ2VuZXJhdG9yXzIwNyIsImdlbmVyYXRvcl8yMDgiLCJnZW5lcmF0b3JfMjA5IiwiZ2VuZXJhdG9yXzIxMCIsInNpemVfMjExIiwicmFuZG9tXzIxMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0Iiwib2JzZXJ2ZXJfMTk3Iiwib2JzZXJ2ZXJfMTk4Iiwib2JzZXJ2ZXJfMTk5Iiwib2JzZXJ2ZXJfMjAwIiwic2l6ZV8yMDUiLCJoYXNoXzIwNiIsInhfMjA0IiwieF8yMDMiLCJ4XzIwMiIsInhfMjAxIiwiaGFzaF8yMDYkMCIsImhhc2hfMjA2JDEiLCJoYXNoXzIwNiQyIiwiaGFzaF8yMDYkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU0Iiwic2hyaW5rZXJfMTg5Iiwic2hyaW5rZXJfMTkwIiwic2hyaW5rZXJfMTkxIiwic2hyaW5rZXJfMTkyIiwieF8xOTYiLCJ4XzE5NSIsInhfMTk0IiwieF8xOTMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTUiLCJnZW5lcmF0b3JfMjM1IiwiZ2VuZXJhdG9yXzIzNiIsImdlbmVyYXRvcl8yMzciLCJnZW5lcmF0b3JfMjM4IiwiZ2VuZXJhdG9yXzIzOSIsInNpemVfMjQwIiwicmFuZG9tXzI0MSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU1Iiwib2JzZXJ2ZXJfMjIzIiwib2JzZXJ2ZXJfMjI0Iiwib2JzZXJ2ZXJfMjI1Iiwib2JzZXJ2ZXJfMjI2Iiwib2JzZXJ2ZXJfMjI3Iiwic2l6ZV8yMzMiLCJoYXNoXzIzNCIsInhfMjMyIiwieF8yMzEiLCJ4XzIzMCIsInhfMjI5IiwieF8yMjgiLCJoYXNoXzIzNCQwIiwiaGFzaF8yMzQkMSIsImhhc2hfMjM0JDIiLCJoYXNoXzIzNCQzIiwiaGFzaF8yMzQkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU1Iiwic2hyaW5rZXJfMjEzIiwic2hyaW5rZXJfMjE0Iiwic2hyaW5rZXJfMjE1Iiwic2hyaW5rZXJfMjE2Iiwic2hyaW5rZXJfMjE3IiwieF8yMjIiLCJ4XzIyMSIsInhfMjIwIiwieF8yMTkiLCJ4XzIxOCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNiIsImdlbmVyYXRvcl8yNjgiLCJnZW5lcmF0b3JfMjY5IiwiZ2VuZXJhdG9yXzI3MCIsImdlbmVyYXRvcl8yNzEiLCJnZW5lcmF0b3JfMjcyIiwiZ2VuZXJhdG9yXzI3MyIsInNpemVfMjc0IiwicmFuZG9tXzI3NSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2Iiwib2JzZXJ2ZXJfMjU0Iiwib2JzZXJ2ZXJfMjU1Iiwib2JzZXJ2ZXJfMjU2Iiwib2JzZXJ2ZXJfMjU3Iiwib2JzZXJ2ZXJfMjU4Iiwib2JzZXJ2ZXJfMjU5Iiwic2l6ZV8yNjYiLCJoYXNoXzI2NyIsInhfMjY1IiwieF8yNjQiLCJ4XzI2MyIsInhfMjYyIiwieF8yNjEiLCJ4XzI2MCIsImhhc2hfMjY3JDAiLCJoYXNoXzI2NyQxIiwiaGFzaF8yNjckMiIsImhhc2hfMjY3JDMiLCJoYXNoXzI2NyQ0IiwiaGFzaF8yNjckNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2Iiwic2hyaW5rZXJfMjQyIiwic2hyaW5rZXJfMjQzIiwic2hyaW5rZXJfMjQ0Iiwic2hyaW5rZXJfMjQ1Iiwic2hyaW5rZXJfMjQ2Iiwic2hyaW5rZXJfMjQ3IiwieF8yNTMiLCJ4XzI1MiIsInhfMjUxIiwieF8yNTAiLCJ4XzI0OSIsInhfMjQ4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4yIiwib2JzZXJ2ZXJfMjgyIiwib2JzZXJ2ZXJfMjgzIiwiZ2VuZXJhdG9yXzI4NCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuMyIsIm9ic2VydmVyXzI5MyIsIm9ic2VydmVyXzI5NCIsIm9ic2VydmVyXzI5NSIsImdlbmVyYXRvcl8yOTYiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjQiLCJvYnNlcnZlcl8zMDciLCJvYnNlcnZlcl8zMDgiLCJvYnNlcnZlcl8zMDkiLCJvYnNlcnZlcl8zMTAiLCJnZW5lcmF0b3JfMzExIiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm41Iiwib2JzZXJ2ZXJfMzI0Iiwib2JzZXJ2ZXJfMzI1Iiwib2JzZXJ2ZXJfMzI2Iiwib2JzZXJ2ZXJfMzI3Iiwib2JzZXJ2ZXJfMzI4IiwiZ2VuZXJhdG9yXzMyOSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNiIsIm9ic2VydmVyXzM0NCIsIm9ic2VydmVyXzM0NSIsIm9ic2VydmVyXzM0NiIsIm9ic2VydmVyXzM0NyIsIm9ic2VydmVyXzM0OCIsIm9ic2VydmVyXzM0OSIsImdlbmVyYXRvcl8zNTAiLCJvZl9oYXNoIiwiTSIsIm9mX3ByZWRpY2F0ZSIsInNpbmdsZXRvbiIsImRvdWJsZXRvbiIsImVudW0kMCIsIm9mX2xpc3QiLCJsaXN0IiwieSIsImkiLCJvZl9mdW4iLCJjb21wYXJpc29uIiwiZXEiLCJsdCIsImd0IiwiYyIsInJldHVybiQwIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJzaW5nbGV0b24kMCIsImRvdWJsZXRvbiQwIiwicmFuZG9tIiwib2ZfZnVuJDAiLCJvZl9zZXF1ZW5jZSIsInAiLCJrIiwiZ2VvbWV0cmljIiwibGlzdF93aXRoX2xlbmd0aCIsImxlbmd0aCIsImNvbXBhcmVfZm4iLCJkb20iLCJnZXRfaW5kZXgiLCJiXzM1MiIsImFfMzUxIiwiZXF1YWxfZm4iLCJjbXAiLCJlbXB0eSIsIm5vbmRldGVybWluaXN0aWNfc3RhdGUiLCJyYW5kb21fc3RhdGVfb2Zfc2VlZCIsInNlZWQiLCJzdHIiLCJtYWtlX3NlZWQiLCJzdHJpbmciLCJtYWtlX3Nocmlua19jb3VudCIsIm1ha2VfY29uZmlnIiwic2l6ZXMiLCJ0cmlhbHMiLCJzaHJpbmtfYXR0ZW1wdHMiLCJtYWtlX3Rlc3RfbSIsImdlbiIsInNocmlua2VyIiwic2V4cF9vZiIsInJhbmRvbV92YWx1ZSIsInJhbmRvbV9zZXF1ZW5jZSIsImNvbmZpZyIsInNlcXVlbmNlIiwidGVzdCIsImV4YW1wbGVzIiwidGVzdF9tIiwidGVzdF9vcl9lcnJvciIsInRlc3RfZGlzdGluY3RfdmFsdWVzIiwiZGlzdGluY3RfdmFsdWVzIiwic2V4cF9vZiQwIiwic2V0Iiwic2V0JDAiLCJhY3R1YWxfY291bnQiLCJzZXhwX29mX2VsdCIsInhfMzUzIiwidmFsdWVzIiwibWF0Y2giLCJyZXMiLCJoIiwidGVzdF9jYW5fZ2VuZXJhdGUiLCJzZXhwX29mX3ZhbHVlIiwieF8zNTQiLCJkZWZhdWx0X3RyaWFsX2NvdW50IiwiZGVmYXVsdF9zaXplcyIsImdlbmVyYXRlX2EiLCJvYnNlcnZlX2EiLCJzaHJpbmtfYSIsIm5vcm1hbGl6ZSIsImxlbmd0aF9mdW4iLCJzbGljZSIsInN1Yl9mdW4iLCJzdGFydCIsInN0b3AiLCJzdG9wJDAiLCJsZW4iLCJnZW5lcmF0b3JfMDAzIiwib2JzZXJ2ZXJfMDAyIiwiYmluYXJ5X3NlYXJjaCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIiwib2ZfYXJyYXkiLCJhcHBlbmQiLCJmaWx0ZXIiLCJmaWx0ZXJfbWFwIiwiY29uY2F0X21hcCIsInBhcnRpdGlvbl90ZiIsInBhcnRpdGlvbl9tYXAiLCJtZW0iLCJpc19lbXB0eSIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRpIiwiaXRlcmkiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJjb3VudGkiLCJmaW5kaSIsImZpbmRfbWFwaSIsIm1hcGkiLCJmaWx0ZXJpIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImNyZWF0ZV9sb2NhbCIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwibWFrZV9tYXRyaXgiLCJjb3B5X21hdHJpeCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiYmxpdCIsImJsaXRvIiwidW5zYWZlX2JsaXQiLCJzdWIiLCJzdWJvIiwiZm9sZGluZ19tYXAiLCJmb2xkaW5nX21hcGkiLCJmb2xkX21hcCIsImZvbGRfbWFwaSIsImZvbGRfcmlnaHQiLCJzb3J0Iiwic3RhYmxlX3NvcnQiLCJpc19zb3J0ZWQiLCJpc19zb3J0ZWRfc3RyaWN0bHkiLCJtZXJnZSIsInBhcnRpdGlvbmlfdGYiLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsInRyYW5zcG9zZSIsInRyYW5zcG9zZV9leG4iLCJmaWx0ZXJfb3B0IiwiaXRlcjJfZXhuIiwibWFwMl9leG4iLCJmb2xkMl9leG4iLCJmb3JfYWxsMl9leG4iLCJleGlzdHMyX2V4biIsInN3YXAiLCJyZXZfaW5wbGFjZSIsInJldiIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kX2V4biIsImZpbmRfbWFwX2V4biIsImZpbmRpX2V4biIsImZpbmRfbWFwaV9leG4iLCJmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSIsInJlZHVjZSIsInJlZHVjZV9leG4iLCJwZXJtdXRlIiwicmFuZG9tX2VsZW1lbnQiLCJyYW5kb21fZWxlbWVudF9leG4iLCJ6aXAiLCJ6aXBfZXhuIiwidW56aXAiLCJzb3J0ZWRfY29weSIsImxhc3QiLCJ0b19zZXF1ZW5jZSIsInRvX3NlcXVlbmNlX211dGFibGUiLCJuZ2V0IiwibnNldCIsImdldCIsImNvbXBhcmVfdCIsImFfMDA0IiwiYl8wMDUiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiY29tcGFyZV9hIiwiY29tcGFyZV9iIiwidF8wMDYiLCJ0XzAwNSIsInRfMDA4IiwidF8wMDciLCJnZW5fbm9uX2VtcHR5IiwiZ2VuX3dpdGhfbGVuZ3RoIiwiZ2VuX2ZpbHRlcmVkIiwiZ2VuX3Blcm11dGF0aW9ucyIsIm1vZHVsZV9uYW1lJDAiLCJtb2R1bGVfbmFtZSIsImhhc2hhYmxlX3MiLCJmaW5kX211bHRpIiwicmVtb3ZlX211bHRpIiwiYWRkX211bHRpIiwiZGVjciIsImluY3IiLCJ0b19hbGlzdCIsInNpbWlsYXIiLCJmaWx0ZXJfbWFwaV9pbnBsYWNlIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwibWFwaV9pbnBsYWNlIiwiZmlsdGVyaV9pbnBsYWNlIiwiZmlsdGVyX2lucGxhY2UiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZGF0YSIsImtleXMiLCJtZXJnZV9pbnRvIiwiZmluZF9hbmRfcmVtb3ZlIiwiZmluZGlfYW5kX2NhbGwyIiwiZmluZGlfYW5kX2NhbGwxIiwiZmluZGlfYW5kX2NhbGwiLCJmaW5kX2FuZF9jYWxsMiIsImZpbmRfYW5kX2NhbGwxIiwiZmluZF9hbmRfY2FsbCIsImZpbmRpX29yX2FkZCIsImZpbmRfb3JfYWRkIiwicGFydGl0aW9uX21hcGkiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9yYW5kb21seV9leG4iLCJjaG9vc2VfcmFuZG9tbHkiLCJjaG9vc2VfZXhuIiwiY2hvb3NlIiwicmVtb3ZlIiwiaXRlcl9rZXlzIiwiY2xlYXIiLCJzZXhwX29mX2tleSIsImNyZWF0ZV93aXRoX2tleV9leG4iLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfbWFwcGVkIiwib2ZfYWxpc3RfbXVsdGkiLCJvZl9hbGlzdF9leG4iLCJvZl9hbGlzdF9vcl9lcnJvciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyIsIm9mX2FsaXN0IiwiaGFzaF9wYXJhbSIsInZhbGlkYXRlIiwiZ3Jvd3RoX2FsbG93ZWQiLCJoYXNoYWJsZSIsIm9mX2FsaXN0JDAiLCJsIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzJDAiLCJvZl9hbGlzdF9vcl9lcnJvciQwIiwib2ZfYWxpc3RfZXhuJDAiLCJvZl9hbGlzdF9tdWx0aSQwIiwiY3JlYXRlX21hcHBlZCQwIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsImNvbWJpbmUiLCJiaW5fc2hhcGVfZWwiLCJiaW5fc2l6ZV9lbCIsImJpbl93cml0ZV9lbCIsImJpbl9yZWFkX2VsIiwiaXRlciQxIiwia2V5IiwibmV4dCIsImludmFyaWFudF9rZXkiLCJzZXhwX29mX3YiLCJ2X29mX3NleHAiLCJkYXRhX3N0YWJsZV93aXRuZXNzIiwiZXF1YWxfbV90IiwibV90X3NleHBfZ3JhbW1hciIsIm1fdF9vZl9zZXhwIiwic2V4cF9vZl9tX3QiLCJvZl9hbGlzdF9vcHRpb24iLCJhbGlzdCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fdCIsIktleSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGEiLCJzaXplXzAwNCIsInJhbmRvbV8wMDUiLCJxdWlja2NoZWNrX29ic2VydmVyX21fdCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXJfZGF0YSIsInhfMDA2IiwicXVpY2tjaGVja19zaHJpbmtlcl9tX3QiLCJxdWlja2NoZWNrX3Nocmlua2VyX2RhdGEiLCJoYXNoYWJsZSQwIiwib2ZfbGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzMSIsInNpemVfb2ZfayIsInNpemVfb2ZfdiIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJ3cml0ZV9rIiwid3JpdGVfdiIsImJpbl93cml0ZXJfayIsImJpbl93cml0ZXJfdiIsIm9mX2siLCJvZl92IiwiYmluX3JlYWRlcl9rIiwiYmluX3JlYWRlcl92IiwiYmluX2siLCJiaW5fdiIsImNtcF9rIiwiY21wX3YiLCJ0XzAwNCIsInRfMDAzIiwicmlnaHRfMDA4IiwibGVmdF8wMDciLCJyaWdodF8wMTIiLCJsZWZ0XzAxMSIsInRfMDE0IiwidF8wMTMiLCJ0XzAxNiIsInRfMDE1IiwicmlnaHRfMDEwIiwibGVmdF8wMDkiLCJvZl9rXzAxNyIsIm9mX3ZfMDE4Iiwic2V4cF8wNDUiLCJhcmcxXzA0MiIsImFyZzBfMDQxIiwicmVzMF8wNDMiLCJhdG9tXzAyMSIsInNleHBfYXJnc18wMjQiLCJhdG9tXzAyMSQwIiwiYXJnMF8wMzIiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJyZXMwXzAzMyIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzOCIsInJlczFfMDQ0Iiwib2Zfa18wNDYiLCJvZl92XzA0NyIsImFyZzFfMDU2IiwiYXJnMF8wNTUiLCJyZXMwXzA1NyIsInZfMDQ4IiwicmVzMV8wNTgiLCJ2XzA1MCIsImFyZzFfMDUyIiwiYXJnMF8wNTEiLCJyZXMwXzA1MyIsInJlczFfMDU0Iiwidl8wNDkiLCJrX3N0YWJsZV93aXRuZXNzIiwidl9zdGFibGVfd2l0bmVzcyIsImRpZmYiLCJrJDAiLCJkaWZmJDAiLCJ2JDAiLCJtYXBfZGF0YSIsImxlZnQiLCJyaWdodCIsImdlbl90cmVlIiwiY29tcGFyYXRvciIsImtfZ2VuIiwidl9nZW4iLCJvYnNfdHJlZSIsImtfb2JzIiwidl9vYnMiLCJzaHJfdHJlZSIsImtfc2hyIiwidl9zaHIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwiaGFzaF9mb2xkX2RpcmVjdCIsIm9mX2hhc2h0YmxfZXhuIiwiaGFzaHRibCIsInRyZWVfb2ZfaGFzaHRibF9leG4iLCJrZXlfc2V0Iiwia2V5X3NldF9vZl90cmVlIiwib2Zfa2V5X3NldCIsInRyZWVfb2Zfa2V5X3NldCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJ0b190cmVlJDAiLCJyYW5rIiwibnRoX2V4biIsIm50aCIsImNsb3Nlc3Rfa2V5IiwicmFuZ2VfdG9fYWxpc3QiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInN1YnJhbmdlIiwic3BsaXRfbHRfZ2UiLCJzcGxpdF9sZV9ndCIsInNwbGl0IiwibWF4X2VsdF9leG4iLCJtaW5fZWx0X2V4biIsImZvbGRfc3ltbWV0cmljX2RpZmYiLCJzeW1tZXRyaWNfZGlmZiIsIm1lcmdlX3NrZXdlZCIsImtleXMkMCIsImNvbXBhcmVfZGlyZWN0IiwiY29tYmluZV9lcnJvcnMiLCJmb2xkMiIsIml0ZXIyIiwiaXRlcmlfdW50aWwiLCJpbnZhcmlhbnRzIiwidmFsaWRhdGVpIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwia2V5X3NldCQwIiwia2V5X3NldCQxIiwiY29tcGFyYXRvcl9zIiwiaW52YXJpYW50cyQwIiwiZW1wdHkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDAiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMCIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQwIiwib2Zfc2VxdWVuY2VfZXhuJDAiLCJvZl9zZXF1ZW5jZV9tdWx0aSQwIiwib2Zfc2VxdWVuY2VfZm9sZCQwIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDAiLCJvZl9saXN0X3dpdGhfa2V5JDAiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDAiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQwIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJ0cmFuc3Bvc2Vfa2V5cyQwIiwiZm9yX2FsbGkkMCIsImV4aXN0c2kkMCIsImNvdW50JDAiLCJjb3VudGkkMCIsInNwbGl0JDAiLCJzcGxpdF9sZV9ndCQwIiwic3BsaXRfbHRfZ2UkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2xpc3Rfd2l0aF9rZXkiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIiwib2ZfbGlzdF93aXRoX2tleV9leG4iLCJvZl9saXN0X3dpdGhfa2V5X211bHRpIiwib2ZfaXRlcmkiLCJvZl9pdGVyaV9leG4iLCJ0b190cmVlIiwiZGF0YV9lcXVhbCIsImxvd2VyX3BhcnQiLCJ1cHBlcl9wYXJ0IiwibG93ZXJfYm91bmQiLCJ1cHBlcl9ib3VuZCIsIm1pbiIsIm1heCIsIm9yZGVyIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiaG93Iiwic2VnbWVudF9vZiIsIm1hcF9rZXlzIiwibWFwX2tleXNfZXhuIiwidHJhbnNwb3NlX2tleXMiLCJpbml0X2Zvcl9iaW5fcHJvdCIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsIm1hcF9rZXlzJDEiLCJtYXBfa2V5c19leG4kMSIsInRyYW5zcG9zZV9rZXlzJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMSIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQxIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZV9vcl9lcnJvciQxIiwib2Zfc2VxdWVuY2VfZXhuJDEiLCJvZl9zZXF1ZW5jZV9tdWx0aSQxIiwib2Zfc2VxdWVuY2VfZm9sZCQxIiwib2Zfc2VxdWVuY2VfcmVkdWNlJDEiLCJvZl9saXN0X3dpdGhfa2V5JDEiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDEiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQxIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9saXN0X3dpdGhfa2V5JDIiLCJvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yJDIiLCJvZl9saXN0X3dpdGhfa2V5X2V4biQyIiwib2ZfbGlzdF93aXRoX2tleV9tdWx0aSQyIiwib2ZfaXRlcmkkMiIsIm9mX2l0ZXJpX2V4biQyIiwib2Zfa2V5X3NldCQxIiwidG9fdHJlZSQyIiwiaW52YXJpYW50cyQxIiwiaXNfZW1wdHkkMSIsImxlbmd0aCQxIiwic2V0JDEiLCJhZGQkMSIsImFkZF9leG4kMSIsImFkZF9tdWx0aSQxIiwicmVtb3ZlX211bHRpJDEiLCJmaW5kX211bHRpJDEiLCJjaGFuZ2UkMSIsInVwZGF0ZSQxIiwiZmluZF9leG4kMSIsImZpbmQkMSIsInJlbW92ZSQxIiwibWVtJDEiLCJpdGVyX2tleXMkMSIsIml0ZXIkMiIsIml0ZXJpJDEiLCJpdGVyaV91bnRpbCQxIiwiaXRlcjIkMSIsIm1hcCQyIiwibWFwaSQxIiwiZm9sZCQxIiwiZm9sZF91bnRpbCQxIiwiZm9sZF9yaWdodCQxIiwiZm9sZDIkMSIsImZpbHRlcl9rZXlzJDEiLCJmaWx0ZXIkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXAkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwicGFydGl0aW9uX3RmJDEiLCJjb21iaW5lX2Vycm9ycyQxIiwiY29tcGFyZV9kaXJlY3QkMSIsImtleXMkMiIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGVpJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQxIiwibWVyZ2UkMSIsIm1lcmdlX3NrZXdlZCQxIiwibWluX2VsdCQxIiwibWluX2VsdF9leG4kMSIsIm1heF9lbHQkMSIsIm1heF9lbHRfZXhuJDEiLCJmb3JfYWxsJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzJDEiLCJleGlzdHNpJDEiLCJjb3VudCQxIiwiY291bnRpJDEiLCJzcGxpdCQxIiwic3BsaXRfbGVfZ3QkMSIsInNwbGl0X2x0X2dlJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwidHJhbnNwb3NlX2tleXMkMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJzdGFibGVfd2l0bmVzc19tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxNiIsImVycm9yX3NvdXJjZV8wNjYiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsIm9mX2FfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5Iiwic2V4cF9hcmdzXzAyNSIsInJlczBfMDI3Iiwib2ZfYV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwieCQxIiwiYV8wNDEiLCJiXzA0MiIsImFfMDQzIiwiYl8wNDQiLCJhXzA0NSIsImJfMDQ2IiwiZ2VuZXJhdG9yXzA1NiIsInNpemVfMDYxIiwicmFuZG9tXzA2MiIsInNpemVfMDU5IiwicmFuZG9tXzA2MCIsInNpemVfMDU3IiwicmFuZG9tXzA1OCIsInhfMDUxIiwic2l6ZV8wNTIiLCJoYXNoXzA1MyIsImhhc2hfMDUzJDAiLCJoYXNoXzA1MyQxIiwiaGFzaF8wNTMkMiIsInhfMDU1IiwiaGFzaF8wNTMkMyIsImhhc2hfMDUzJDQiLCJzaHJpbmtlcl8wNDciLCJvZl9hXzA2MyIsInNleHBfMDY4IiwidGFnXzA2OSIsInNleHBfYXJnc18wNzAiLCJhcmcwXzA3MSIsInJlczBfMDcyIiwic2V4cF9hcmdzXzA3NSIsImFyZzBfMDc2IiwicmVzMF8wNzciLCJvZl9hXzA3OSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImFfMDg1IiwiYl8wODYiLCJhXzA4NyIsImJfMDg4IiwiZXF1YWwkMiIsImFfMDg5IiwiYl8wOTAiLCJhXzA5MSIsImJfMDkyIiwiZWx0X2dlbiIsImVsdF9vYnMiLCJlbHRfc2hyIiwiZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvIiwidG9fbWFwIiwib2ZfbWFwX2tleXMiLCJvZl9oYXNoX3NldCIsImhzZXQiLCJvZl9oYXNodGJsX2tleXMiLCJ1bmlvbiQwIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMCIsInN1bSQwIiwiZmluZF9tYXAkMCIsInJlbW92ZV9pbmRleCQwIiwiaXNfc3Vic2V0JDAiLCJhcmVfZGlzam9pbnQkMCIsIm9mX2FycmF5JDAiLCJ0b19hcnJheSQwIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDAiLCJlbGVtZW50cyQwIiwiY2hvb3NlJDAiLCJjaG9vc2VfZXhuJDAiLCJncm91cF9ieSQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQwIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwic3RhYmxlX2RlZHVwX2xpc3QiLCJ4cyIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwibWFwJDMiLCJmaWx0ZXJfbWFwJDMiLCJvZl9saXN0JDMiLCJvZl9zZXF1ZW5jZSQzIiwib2ZfaGFzaF9zZXQkMyIsIm9mX2hhc2h0Ymxfa2V5cyQzIiwib2ZfYXJyYXkkMyIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMyIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQzIiwib2Zfc29ydGVkX2FycmF5JDMiLCJ1bmlvbl9saXN0JDMiLCJzdGFibGVfZGVkdXBfbGlzdCQzIiwib2ZfdHJlZSQzIiwib2ZfbWFwX2tleXMkMyIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwidCQwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhX3NleHBfZ3JhbW1hciIsImFfMDEwIiwiYl8wMTEiLCJub25lIiwic29tZSIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInVuaW9uIiwicjEiLCJ0MSQwIiwicjIiLCJ0MiQwIiwibjEiLCJuMiIsImlzX2NvbXByZXNzZWQiLCJwaHlzX2VxdWFsIiwidW5pb25fZmluZF9nZXRfY2hlY2tfbm9fcGVuZGluIiwiY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIiwiaW5jcl9sZW5ndGgiLCJpbmNyX3BlbmRpbmdfaXRlcnMiLCJkZWNyX3BlbmRpbmdfaXRlcnMiLCJ3aXRoX2l0ZXJhdGlvbl8ybCIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiZmlyc3RfZXhuIiwibGFzdF9leG4iLCJpc19maXJzdCIsImlzX2xhc3QiLCJtZW1fZWx0IiwicHJldiQwIiwiaW5zZXJ0X2FmdGVyJDAiLCJpbnNlcnRfYmVmb3JlJDAiLCJuZXdfZWx0IiwiaW5zZXJ0X2VtcHR5IiwiaW5zZXJ0X2xhc3QiLCJpbnNlcnRfZmlyc3QiLCJyZW1vdmVfbGFzdCIsInJlbW92ZV9maXJzdCIsInNlY29uZCIsIm5ld190IiwidmFsdWUkMCIsIm1vdmVfYmVmb3JlIiwiYW5jaG9yIiwiYWZ0ZXJfZWx0IiwibW92ZV90b19mcm9udCIsIm1vdmVfYWZ0ZXIiLCJtb3ZlX3RvX2JhY2siLCJhXzAxNSIsImJfMDE2Iiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJhXzAxNyIsImJfMDE4IiwiYV8wMTkiLCJiXzAyMCIsInRfMDI0IiwidF8wMjMiLCJ0XzAyNiIsInRfMDI1IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdGV4dCIsIm9mX3RleHQiLCJ2YWx1ZV9vZl9zZXhwIiwidGV4dCIsImZpbGVuYW1lIiwiYW5ub3RhdGVkIiwidF9zZXhwX2dyYW1tYXIkMiIsIm9mX3ZhbHVlIiwiYmluX3NoYXBlX25vX3JhaXNlIiwiYmluX3NpemVfbm9fcmFpc2UiLCJiaW5fd3JpdGVfbm9fcmFpc2UiLCJiaW5fd3JpdGVyX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UiLCJiaW5fcmVhZF9ub19yYWlzZSQwIiwiYmluX3JlYWRlcl9ub19yYWlzZSIsImJpbl9ub19yYWlzZSIsIm5vX3JhaXNlX29mX3NleHAiLCJvZl9hXzAyNyIsInNleHBfb2Zfbm9fcmFpc2UiLCJvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWMiLCJvZl9zZXhwIiwic2V4cF9vZl9kYXRhIiwiYXJnMV8wMDIiLCJyZXMwXzAwMyIsInJlczFfMDA0Iiwia3YiLCJyZWFkIiwiZW5zdXJlX2Nhbl9tb2RpZnkiLCJsb29rdXAiLCJsb29rdXBfZXhuIiwiZW5xdWV1ZV91bmNoZWNrZWQiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlIiwiZW5xdWV1ZV9iYWNrIiwiZW5xdWV1ZV9mcm9udCIsImVucXVldWVfZXhuIiwiZW5xdWV1ZV9iYWNrX2V4biIsImVucXVldWVfZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2tfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2JhY2siLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIiwibG9va3VwX2FuZF9tb3ZlX3RvX2Zyb250IiwiZGVxdWV1ZV93aXRoX2tleSIsIm1heWJlX2t2IiwiZGVxdWV1ZV93aXRoX2tleV9leG4iLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXkiLCJkZXF1ZXVlX2JhY2tfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleSIsImRlcXVldWVfZnJvbnRfd2l0aF9rZXlfZXhuIiwiZGVxdWV1ZSIsImRlcXVldWVfYmFjayIsImRlcXVldWVfZnJvbnQiLCJsYXN0X3dpdGhfa2V5IiwiZmlyc3Rfd2l0aF9rZXkiLCJkZXF1ZXVlX2V4biIsImRlcXVldWVfYmFja19leG4iLCJkZXF1ZXVlX2Zyb250X2V4biIsImFjIiwiZmluaXNoIiwiZGVxdWV1ZV9hbGwiLCJyZW1vdmVfZXhuIiwibG9va3VwX2FuZF9yZW1vdmUiLCJyZXBsYWNlIiwicmVwbGFjZV9vcl9lbnF1ZXVlIiwicmVwbGFjZV9vcl9lbnF1ZXVlX2Zyb250IiwicmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2siLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwidW5zYWZlX3N1YiIsInN5bWJvbF9jb25jYXQiLCJlc2NhcGVkIiwiY29udGFpbnMiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwidW5jYXBpdGFsaXplIiwiaW5kZXgiLCJpbmRleF9leG4iLCJpbmRleF9mcm9tIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXgiLCJyaW5kZXhfZXhuIiwicmluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbV9leG4iLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0IiwidG9fbGlzdF9yZXYiLCJpc19zdWZmaXgiLCJpc19wcmVmaXgiLCJsc3BsaXQyX2V4biIsInJzcGxpdDJfZXhuIiwibHNwbGl0MiIsInJzcGxpdDIiLCJzcGxpdF9vbl9jaGFycyIsInNwbGl0X2xpbmVzIiwibGZpbmRpIiwicmZpbmRpIiwibHN0cmlwIiwicnN0cmlwIiwic3RyaXAiLCJ0ciIsInRyX211bHRpIiwiY2hvcF9zdWZmaXhfZXhuIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3ByZWZpeCIsImNob3Bfc3VmZml4X2lmX2V4aXN0cyIsImNob3BfcHJlZml4X2lmX2V4aXN0cyIsInN1ZmZpeCIsInByZWZpeCIsImRyb3Bfc3VmZml4IiwiZHJvcF9wcmVmaXgiLCJjb21tb25fc3VmZml4IiwiY29tbW9uX3ByZWZpeCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeF9sZW5ndGgiLCJjb21tb25fc3VmZml4MiIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29uY2F0X2FycmF5IiwiY29uY2F0X2xpbmVzIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsInBhZF9sZWZ0IiwicGFkX3JpZ2h0IiwiaXNfc3VmZml4JDAiLCJpc19wcmVmaXgkMCIsImlzX3N1YnN0cmluZyQwIiwiaXNfc3Vic3RyaW5nX2F0JDAiLCJzdWJzdHJfaW5kZXgkMCIsInN1YnN0cl9pbmRleF9leG4kMCIsInN1YnN0cl9pbmRleF9hbGwkMCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0JDAiLCJzdWJzdHJfcmVwbGFjZV9hbGwkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInNleHBfMDA0IiwidGFnMiIsInZhbGlkYXRlX29yZGluYXJ5Iiwicm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIiwicm9idXN0bHlfY29tcGFyZSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsInN5bWJvbCQxNyIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsInJvYnVzdGx5X2NvbXBhcmUkMCIsInJvYnVzdF9zaWduIiwidG9fc3RyaW5nXzEyIiwiZ2VuX3VuaWZvcm1fZXhjbCIsImdlbl9pbmNsIiwiZ2VuX3dpdGhvdXRfbmFuIiwiZ2VuX2Zpbml0ZSIsImdlbl9wb3NpdGl2ZSIsImdlbl9uZWdhdGl2ZSIsImdlbl96ZXJvIiwiZ2VuX25hbiIsImdlbl9zdWJub3JtYWwiLCJnZW5fbm9ybWFsIiwiZ2VuX2luZmluaXRlIiwib2ZfZmxvYXQiLCJ0b19mbG9hdCIsInRvX2ludF9leG4iLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwib2Zfc3RyaW5nX29wdCIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwiYmluX25hbWUiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJiaW5kIiwiam9pbiIsImlnbm9yZV9tIiwiYWxsX3VuaXQiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwicGVlayIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsImJwcmludGYiLCJjb25zdCQwIiwiZXJyb3IiLCJlcnJvcl9zIiwiZm9yY2UiLCJpbnZhbGlkX2FyZ2YiLCJpZnByaW50ZiIsImlzX25vbmUiLCJpc19zb21lIiwia3NwcmludGYiLCJva19leG4iLCJwcmludF9zIiwiZXByaW50X3MiLCJwcm90ZWN0IiwicHJvdGVjdHgiLCJyYWlzZV9zIiwic3ltYm9sJDExIiwic3ByaW50ZiIsInN0YWdlIiwidW5zdGFnZSIsIndpdGhfcmV0dXJuX29wdGlvbiIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaXplX2FycmF5IiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlcl9hcnJheSIsImJpbl9yZWFkX2FycmF5IiwiYmluX3JlYWRfYXJyYXkkMCIsImJpbl9yZWFkZXJfYXJyYXkiLCJiaW5fYXJyYXkiLCJjb21wYXJlX2FycmF5IiwiZXF1YWxfYXJyYXkiLCJnbG9iYWxpemVfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwic2V4cF9vZl9hcnJheSIsImFycmF5X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImdsb2JhbGl6ZV9ib29sIiwiYm9vbF9vZl9zZXhwIiwic2V4cF9vZl9ib29sIiwiYm9vbF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Jvb2wiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaXplX2NoYXIiLCJiaW5fd3JpdGVfY2hhciIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkX2NoYXIiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZGVyX2NoYXIiLCJiaW5fY2hhciIsImNvbXBhcmVfY2hhciIsImhhc2hfZm9sZF9jaGFyIiwiaGFzaF9jaGFyIiwiZXF1YWxfY2hhciIsImdsb2JhbGl6ZV9jaGFyIiwiY2hhcl9vZl9zZXhwIiwic2V4cF9vZl9jaGFyIiwiY2hhcl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2NoYXIiLCJiaW5fc2hhcGVfZmxvYXQiLCJiaW5fc2l6ZV9mbG9hdCIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZXJfZmxvYXQiLCJiaW5fcmVhZF9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZGVyX2Zsb2F0IiwiYmluX2Zsb2F0IiwiY29tcGFyZV9mbG9hdCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZmxvYXQiLCJlcXVhbF9mbG9hdCIsImdsb2JhbGl6ZV9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0IiwiZmxvYXRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2l6ZV9pbnQiLCJiaW5fd3JpdGVfaW50IiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZF9pbnQiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkZXJfaW50IiwiYmluX2ludCIsImNvbXBhcmVfaW50IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfaW50IiwiZXF1YWxfaW50IiwiZ2xvYmFsaXplX2ludCIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDMyJDAiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiY29tcGFyZV9pbnQzMiIsImhhc2hfZm9sZF9pbnQzMiIsImhhc2hfaW50MzIiLCJlcXVhbF9pbnQzMiIsImdsb2JhbGl6ZV9pbnQzMiIsImludDMyX29mX3NleHAiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQzMiIsImJpbl9zaGFwZV9pbnQ2NCIsImJpbl9zaXplX2ludDY0IiwiYmluX3dyaXRlX2ludDY0IiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfaW50NjQkMCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJjb21wYXJlX2ludDY0IiwiaGFzaF9mb2xkX2ludDY0IiwiaGFzaF9pbnQ2NCIsImVxdWFsX2ludDY0IiwiZ2xvYmFsaXplX2ludDY0IiwiaW50NjRfb2Zfc2V4cCIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2ludDY0IiwiYmluX3NoYXBlX2xhenlfdCIsImJpbl9zaXplX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRlcl9sYXp5X3QiLCJiaW5fbGF6eV90IiwiY29tcGFyZV9sYXp5X3QiLCJhXzA1NCIsImJfMDU1IiwiaGFzaF9mb2xkX2xhenlfdCIsImxhenlfdF9vZl9zZXhwIiwic2V4cF9vZl9sYXp5X3QiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9sYXp5X3QiLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaXplX2xpc3QiLCJiaW5fd3JpdGVfbGlzdCIsImJpbl93cml0ZXJfbGlzdCIsImJpbl9yZWFkX2xpc3QiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZGVyX2xpc3QiLCJiaW5fbGlzdCIsImNvbXBhcmVfbGlzdCIsImFfMDYzIiwiYl8wNjQiLCJhXzA2NSIsImJfMDY2IiwiaGFzaF9mb2xkX2xpc3QiLCJlcXVhbF9saXN0IiwiYV8wNjciLCJiXzA2OCIsImFfMDY5IiwiYl8wNzAiLCJnbG9iYWxpemVfbGlzdCIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJnbG9iYWxpemVfbmF0aXZlaW50IiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImZ1bmMkNSIsImhhc2hfbmF0aXZlaW50IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX25hdGl2ZWludCIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlcl9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9vcHRpb24kMCIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImNvbXBhcmVfb3B0aW9uIiwiYV8wODYiLCJiXzA4NyIsImVxdWFsX29wdGlvbiIsImFfMDkyIiwiYl8wOTMiLCJnbG9iYWxpemVfb3B0aW9uIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImdsb2JhbGl6ZV9zdHJpbmciLCJoYXNoX2ZvbGRfc3RyaW5nIiwiZnVuYyQ2IiwiaGFzaF9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInNleHBfb2Zfc3RyaW5nIiwic3RyaW5nX3NleHBfZ3JhbW1hciIsIm5hbWVfb2Zfc3RyaW5nIiwiYmluX3NoYXBlX2J5dGVzIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fd3JpdGVfYnl0ZXMiLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyQwIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImNvbXBhcmVfYnl0ZXMiLCJlcXVhbF9ieXRlcyIsImdsb2JhbGl6ZV9ieXRlcyIsImJ5dGVzX29mX3NleHAiLCJzZXhwX29mX2J5dGVzIiwiYnl0ZXNfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ieXRlcyIsImJpbl9zaGFwZV9yZWYiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fcmVhZF9yZWYiLCJiaW5fcmVhZF9yZWYkMCIsImJpbl9yZWFkZXJfcmVmIiwiYmluX3JlZiIsImNvbXBhcmVfcmVmIiwiYV8xMTUiLCJiXzExNiIsImFfMTE3IiwiYl8xMTgiLCJlcXVhbF9yZWYiLCJhXzExOSIsImJfMTIwIiwiYV8xMjEiLCJiXzEyMiIsImdsb2JhbGl6ZV9yZWYiLCJyZWZfb2Zfc2V4cCIsInNleHBfb2ZfcmVmIiwicmVmX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfcmVmIiwiZ3JvdXAkMTMiLCJiaW5fc2hhcGVfdW5pdCIsImJpbl9zaXplX3VuaXQiLCJiaW5fd3JpdGVfdW5pdCIsImJpbl93cml0ZXJfdW5pdCIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF91bml0JDAiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImNvbXBhcmVfdW5pdCIsImVxdWFsX3VuaXQiLCJnbG9iYWxpemVfdW5pdCIsImhhc2hfZm9sZF91bml0IiwiZnVuYyQ3IiwiaGFzaF91bml0IiwidW5pdF9vZl9zZXhwIiwic2V4cF9vZl91bml0IiwidW5pdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3VuaXQiLCJncm91cCQxNCIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwic3RhYmxlX3dpdG5lc3NfdF9mcm96ZW4iLCJtYXhfbWVtX3dhaXRpbmdfZ2MiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMiLCJzdWJfc2hhcmVkIiwiYnN0ciIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIiwid3JpdGUiLCJkYXRhX2xlbiIsInRvdGFsX2xlbiIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInZfMDA1IiwicmVzMF8wMTEiLCJ2XzAwNiIsInJlczFfMDEyIiwidl8wMDciLCJyZXMyXzAxMyIsInBvc19hZnRlcl9zaXplX2hlYWRlciIsInBvc19hZnRlcl9kYXRhIiwiYXJnNF8wMjMiLCJhcmczXzAyMiIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInZfMDE0Iiwidl8wMTUiLCJyZXMxXzAyNSIsInZfMDE2IiwicmVzMl8wMjYiLCJ2XzAxNyIsInJlczNfMDI3Iiwidl8wMTgiLCJyZXM0XzAyOCIsIndyaXRlX2Jpbl9wcm90Iiwid3JpdGVyIiwibGFzdF9ub25tYXRjaF9wbHVzX29uZSIsIm1pbl9wb3MiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsImRhdGFfZW5kIiwiZ2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZ19sIiwic2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIiwiaGVhZF9vcl90YWlsIiwic2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyIsInNsZW4iLCJmaXJzdF9ub25tYXRjaCIsIm1heF9wb3MiLCJzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwiZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImRhdGFfYmVnaW4iLCJnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2wiLCJ0b19ieXRlcyIsIm9mX2J5dGVzIiwiYnl0ZXMiLCJ0b19oZXgiLCJvZl9oZXhfZXhuIiwib2ZfYmluYXJ5X2V4biIsImFjY3VtIiwidG9fYmluYWJsZSQwIiwiZGlnZXN0X3N0cmluZyIsImRpZ2VzdF9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAyMiIsImVycm9yX3NvdXJjZV8wMzAiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsImFiYnJ2IiwiaXNfZHN0IiwidXRjX29mZnNldF9pbl9zZWNvbmRzIiwiYWJicnZfMDExIiwiaXNfZHN0XzAwOSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDciLCJ2X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInZfc2Vjb25kcyIsInhfMDE1Iiwic2Vjb25kcyIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHNfMDE5IiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzAxIiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJuZXdfcmVnaW1lIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwIiwibmV3X3JlZ2ltZV8wMjciLCJhcmdfMDI4IiwiYm5kc18wMjQiLCJhcmdfMDI2IiwiYm5kc18wMjQkMCIsInY1IiwidjciLCJ2NiIsInZfbmFtZSIsInZfb3JpZ2luYWxfZmlsZW5hbWUiLCJ2X2RpZ2VzdCIsInZfdHJhbnNpdGlvbnMiLCJ2X2xhc3RfcmVnaW1lX2luZGV4Iiwidl9kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSIsInZfbGVhcF9zZWNvbmRzIiwibGVhcF9zZWNvbmRzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJsYXN0X3JlZ2ltZV9pbmRleCIsInRyYW5zaXRpb25zIiwiZGlnZXN0Iiwib3JpZ2luYWxfZmlsZW5hbWUiLCJ0cmFuc2l0aW9uc18wMzkiLCJkaWdlc3RfMDM3Iiwib3JpZ2luYWxfZmlsZW5hbWVfMDM1IiwibmFtZV8wMzMiLCJsYXN0X3JlZ2ltZV9pbmRleF8wNDEiLCJsZWFwX3NlY29uZHNfMDQ1IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDQzIiwiYXJnXzA0NiIsImJuZHNfMDMyIiwiYXJnXzA0NCIsImJuZHNfMDMyJDAiLCJhcmdfMDQyIiwiYm5kc18wMzIkMSIsImFyZ18wNDAiLCJibmRzXzAzMiQyIiwiYXJnXzAzOCIsImJuZHNfMDMyJDMiLCJhcmdfMDM2IiwiYm5kc18wMzIkNCIsImFyZ18wMzQiLCJibmRzXzAzMiQ1Iiwiem9uZSIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsImFiYnJ2X2luZGV4IiwiaW5wdXRfdHpfZmlsZV9nZW4iLCJpbnB1dF90cmFuc2l0aW9uIiwiaW5wdXRfbGVhcF9zZWNvbmQiLCJ1dGNfbG9jYWxfY291bnQiLCJzdGRfd2FsbF9jb3VudCIsImxlYXBfY291bnQiLCJ0cmFuc2l0aW9uX2NvdW50IiwidHlwZV9jb3VudCIsImFiYnJ2X2NoYXJfY291bnQiLCJ0cmFuc2l0aW9uX3RpbWVzIiwidHJhbnNpdGlvbl9pbmRpY2VzIiwicmVnaW1lcyIsInJhd19hYmJydnMiLCJpbmRleGVkX2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsInJlZ2ltZXMkMCIsInJhd190cmFuc2l0aW9ucyIsInRpbWUiLCJyZWdpbWUiLCJyZXN0IiwibHR0IiwiaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIiwicmVhZF9oZWFkZXIiLCJtYWdpYyIsImJhZF92ZXJzaW9uIiwidmVyc2lvbiIsImlucHV0X3R6X2ZpbGVfdjEiLCJpbnB1dF90el9maWxlIiwiem9uZW5hbWUiLCJtYWtlX3pvbmUiLCJyZWFzb24iLCJvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUiLCJvZl91dGNfb2Zmc2V0IiwibGlrZWx5X21hY2hpbmVfem9uZXMiLCJ1dGMiLCJyZXNldF90cmFuc2l0aW9uX2NhY2hlIiwiZ2V0X3JlZ2ltZV9leG4iLCJlZmZlY3RpdmVfc3RhcnRfdGltZSIsIm1vZGUiLCJpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWMiLCJpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWMiLCJiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHMiLCJ0cmFuc2l0aW9uIiwiaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCIsImluZGV4JDAiLCJpbmRleCQxIiwiaW5kZXgkMiIsImluZGV4JDMiLCJpbmRleCQ0Iiwib2ZfaW50NjNfc2Vjb25kcyIsInRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leCIsIm9mX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zcGFuX3NpbmNlX2Vwb2NoIiwib2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJ0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCIsImluZGV4X29mX2RhdGVfYW5kX29mZGF5IiwiaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQiLCJpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leCIsImluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50XyIsImFmdGVyIiwiYmVmb3JlIiwiaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfIiwiaW5kZXhfYWJicmV2aWF0aW9uX2V4biIsImluZGV4X29mZnNldF9mcm9tX3V0Y19leG4iLCJyYXciLCJ2YWxpZGF0aW9uX2ZhaWxlZCIsImFyZzJfMDAzIiwicmVzMF8wMDQiLCJyZXMxXzAwNSIsInJlczJfMDA2IiwiY3JlYXRlX2V4biIsImNyZWF0ZV9zdGFibGVfd2l0bmVzcyIsInJhd19zdGFibGVfd2l0bmVzcyIsInR5cGVfZXF1YWwiLCJyYWNlX2ZyZWVfY3JlYXRlX2xvb3AiLCJjZWxsIiwibmV3X3giLCJjdXJyZW50IiwidHlwZW5hbWUkMSIsImFsbG93ZWRfaW50cyIsImFsbG93ZWRfaW50cyQwIiwidHlwZW5hbWUkMCIsImltbWVkaWFjeSIsIm5ldmVyX3dpdGhfbmFtZSIsIm5ldmVyIiwidW5rbm93biIsIm9wdGlvbiIsImxpc3QkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwicmVmIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGU0IiwidHVwbGU1IiwiZnVuY3Rpb24kMCIsImludCQwIiwicmVmJDAiLCJhcnJheSQwIiwidHVwbGUyJDAiLCJ0dXBsZTMkMCIsInR1cGxlNCQwIiwidHVwbGU1JDAiLCJmdW5jdGlvbiQxIiwib3B0aW9uJDAiLCJsYXp5X3QiLCJwb3NzaWJseV91bmJveGVkIiwiY2hpbGRfdHlwZSIsInRoZV9vbmx5X2ZpZWxkIiwidmFyaWFudCIsInRhZyIsIm1vcmUiLCJubyIsIm1vcmVfYXJnX2xpc3QiLCJvbmVfYXJnX2xpc3QiLCJub19hcmdfbGlzdCIsIm5vX2FyZ19jb3VudCIsImhhc2hfc2V0IiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9iXzAxMSIsImFyZzFfMDEzIiwiYXJnMF8wMTIiLCJyZXMxXzAxNSIsImN1cnJ5IiwidW5jdXJyeSIsIm1hcF9mc3QiLCJtYXBfc25kIiwibWFwX2JvdGgiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYV8wMTkiLCJvZl9iXzAyMCIsIm9mX2NfMDIxIiwic2V4cF8wMjkiLCJhcmcyXzAyNSIsInJlczBfMDI2IiwicmVzMV8wMjciLCJyZXMyXzAyOCIsIm9mX2FfMDMxIiwib2ZfYl8wMzIiLCJvZl9jXzAzMyIsImFyZzJfMDM2IiwiYXJnMV8wMzUiLCJyZXMxXzAzOCIsInJlczJfMDM5Iiwib2ZfYyIsImN1cnJ5JDAiLCJ1bmN1cnJ5JDAiLCJtYXBfZnN0JDAiLCJtYXBfc25kJDAiLCJtYXBfdHJkIiwibWFwX2FsbCIsImYzIiwibWFwMiQwIiwiejIiLCJ6MSIsImdldDMiLCJjbXAzIiwieiQwIiwiYzEiLCJjMiIsImVxMyIsImFyZzFfMDQ4IiwiYXJnMF8wNDciLCJyZXMwXzA0OSIsInJlczFfMDUwIiwiYV8wNTEiLCJiXzA1MiIsInRfMDU0IiwidF8wNTMiLCJ0XzA1NiIsInRfMDU1Iiwic2V4cF8wNjIiLCJhcmcxXzA1OSIsImFyZzBfMDU4IiwicmVzMF8wNjAiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwiYXJnMF8wNjQiLCJyZXMwXzA2NiIsInJlczFfMDY3IiwiczIiLCJzMSIsInMyJDAiLCJzMSQwIiwid2Vla2RheXMiLCJ3ZWVrZW5kcyIsInNpemVfMDE4IiwicmFuZG9tXzAxOSIsInNpemVfMDEyIiwicmFuZG9tXzAxMyIsInNpemVfMDEwIiwicmFuZG9tXzAxMSIsInJhbmRvbV8wMDkiLCJzaXplXzAwNiIsInJhbmRvbV8wMDciLCJoYXNoXzAwNSIsImhhc2hfMDA1JDAiLCJoYXNoXzAwNSQxIiwiaGFzaF8wMDUkMiIsImhhc2hfMDA1JDMiLCJoYXNoXzAwNSQ0IiwiaGFzaF8wMDUkNSIsImhhc2hfMDA1JDYiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidG9fc3RyaW5nX2xvbmciLCJhdG9tIiwidW5zdWdnZXN0ZWQiLCJpbnRfY2xhdXNlIiwic2hvcnRfY2xhdXNlIiwibG9uZ19jbGF1c2UiLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwNCIsImN1c3RvbV9wcmludGZfMDAzIiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDA3IiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsIm9mX2ludF91bmNoZWNrZWQiLCJkYXlzX2luX21vbnRoIiwiaW52YWxpZCIsIm1zZyIsImN1c3RvbV9wcmludGZfMDA1IiwiZGF5c19pbl9tb250aCQwIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJ4XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsIm9wdCIsInZhbHVlX2V4biIsImRlZmF1bHQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludCQwIiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsInJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkiLCJyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSIsInJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwic2hpZnRfZGVjaW1hbF9wb2ludCIsImJ5IiwicyQwIiwicyQxIiwibm90X3plcm8iLCJ1bmRlcnNjb3JlIiwidW5kZXJzY29yZSQwIiwiZSQxIiwiZXhwIiwiZXhwJDAiLCJuZWciLCJzaWduZWQiLCJzJDMiLCJkJDIiLCJzdWYiLCJwcmVmIiwicyQ0IiwiYnkkMCIsImJ5JDEiLCJzJDUiLCJzJDYiLCJieSQyIiwicyQ3IiwicyQyIiwiZmxvYXRfdG9fc3RyaW5nIiwieF9hYnMiLCJ0b19zdHJpbmdfcm91bmRfdHJpcHBhYmxlIiwicmVhbGx5X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsInN0ciQwIiwic3RyJDEiLCJzdHIkMiIsIm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiIsIm9mX211bHQiLCJ0b19tdWx0Iiwib2ZfcGVyY2VudGFnZSIsInRvX3BlcmNlbnRhZ2UiLCJvZl9icCIsInRvX2JwIiwib2ZfYnBfaW50IiwidG9fYnBfaW50Iiwic2hpZnRfZGVjaW1hbF9wb2ludF9pbl9mbG9hdCIsIm9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsInRvX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYSIsIm9mX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInRvX2JwX3Nsb3dfbW9yZV9hY2N1cmF0ZSIsInJvdW5kX3NpZ25pZmljYW50Iiwic2lnbmlmaWNhbnRfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9tdWx0IiwiZGVjaW1hbF9kaWdpdHMiLCJyb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UiLCJyb3VuZF9kZWNpbWFsX2JwIiwiYXJnMF8wMTAiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxOCIsInJlczBfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJleHBvbmVudCIsInByZWNpc2lvbiIsImV4cG9uZW50X0UiLCJkZWNpbWFsIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwidG9fc3RyaW5nJDEiLCJiaW5fc2hhcGVfdCQ3IiwidW5jaGVja2VkX3ZhbHVlIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImJpbl9zaGFwZV90JDgiLCJiaW5fc2hhcGVfdCQ5IiwiYmluX3NoYXBlX3QkMTAiLCJiaW5fd3JpdGVyX3QkNiIsImJpbl9yZWFkZXJfdCQ2IiwiYmluX3QkNiIsInR5cGVuYW1lX29mX3QkMSIsIm5hbWVfb2ZfdCQxIiwidHlwZXJlcF9vZl90JDEiLCJiaW5fc2hhcGVfdCQxMSIsImJpbl9zaGFwZV90JDEyIiwiaXNfemVybyIsImFwcGx5IiwiaXNfbmFuIiwiaXNfaW5mIiwic2lnbl9leG4iLCJzeW1ib2wkMTgiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYkMCIsInRfb2Zfc2V4cF9hbGxvd19uYW5fYW5kX2luZiIsImZvcm1hdCQwIiwidG9fc3RyaW5nJDIiLCJiaW5fc2hhcGVfdCQxMyIsInRvX3N0cmluZyQzIiwiYmluX3NoYXBlX3QkMTQiLCJiaW5fd3JpdGVyX3QkNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsInRvX3N0cmluZyQ0Iiwic2V4cF9vZl90JDciLCJyYW5kb21pemUiLCJzcGFuIiwicmFuZG9tX3N0YXRlIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJuJDIiLCJuJDMiLCJuJDQiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwiYXJnXzAxNiIsImJuZHNfMDA2JDMiLCJibmRzXzAwNiQ0IiwiYm5kc18wMDYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50MzJfc2Vjb25kcyIsIm9mX21pbiIsIm9mX2hyIiwib2ZfZGF5Iiwib2ZfaW50X25zIiwib2ZfaW50X3VzIiwib2ZfaW50X21zIiwib2ZfaW50X3NlYyIsIm9mX2ludF9taW4iLCJvZl9pbnRfaHIiLCJvZl9pbnRfZGF5IiwiZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSIsInVuaXRfb2ZfdGltZSIsInNjYWxlX2J5X3VuaXRfb2ZfdGltZSIsImRheSQwIiwieCQyIiwidG9fc2hvcnRfc3RyaW5nIiwidF9vZl9zZXhwX3YxX3YyIiwiaXNfdjIiLCJzZXhwX29mX3RfdjFfdjIiLCJhYnNfdCIsInRvX3VuaXRfb2ZfdGltZSIsIm9mX3VuaXRfb2ZfdGltZSIsInN1ZmZpeF9vZl91bml0X29mX3RpbWUiLCJwYXJzZV9zdWZmaXgiLCJ1bml0X29mX3RpbWVfbGlzdCQxIiwidW5pdF9vZl90aW1lX2xpc3QiLCJ1bml0X29mX3RpbWVfbGlzdCQwIiwic3RhdGVfaXNfZmluYWwiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfZGF5Iiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm9mX2ludDYzX2V4biQwIiwidG9faW50NjMkMCIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNleHBfb2Zfc3BhbiIsInNwYW5fb2Zfc2V4cCIsImZsb2F0JDIiLCJzaW5jZV91bml4X2Vwb2NoIiwiaGFsZl9taWNyb3NlY29uZCIsInRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfciIsIm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taSIsIm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlIiwibWF4X3ZhbHVlX3JlcHJlc2VudGFibGUiLCJvZl9pbnQ2M19leG4kMSIsInRvX2ludDYzJDEiLCJmYWlsIiwib2ZfaW50NjNfZXhuJDIiLCJ0b19pbnQ2MyQyIiwiY29tcGFyZSQ2IiwiYXJnX3R5cGUiLCJpc19pbnZhbGlkIiwib2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0Iiwic3ViX2V4biIsInRvX3N0cmluZ193aXRoX3VuaXQiLCJzaXh0eSIsInRob3VzYW5kIiwidW5pdCQwIiwibnVtX2RpZ2l0cyIsInRvX21pY3Jvc2Vjb25kX3N0cmluZyIsImV2ZXJ5Iiwic3RhcnQkMSIsInRvX2ludDYzX25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50NjNfbnNfc2luY2VfZXBvY2giLCJvdmVyZmxvdyIsImFkZF9vdmVyZmxvd2VkIiwic3ViX292ZXJmbG93ZWQiLCJhZGRfc2F0dXJhdGluZyIsInN1Yl9zYXR1cmF0aW5nIiwidG9faW50X25zX3NpbmNlX2Vwb2NoIiwib2ZfaW50X25zX3NpbmNlX2Vwb2NoIiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IiwidG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwibWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluIiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0Iiwib2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwidG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwibnNfc2luY2VfZXBvY2giLCJuc19wZXJfZGF5IiwiYXBwcm94X2RheXNfZnJvbV9lcG9jaCIsIm5zX3NpbmNlX3N0YXJ0X29mX2RheSIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5Iiwib2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vIiwic3Bhbl9pbl9kYXlzX3NpbmNlX2Vwb2NoIiwic3Bhbl9zaW5jZV9lcG9jaCIsInR3b19kaWdpdF9vZl9zdHJpbmciLCJuc19vZl8xMDBfbXMiLCJuc19vZl8xMF9tcyIsIm5zX29mXzFfbXMiLCJuc19vZl8xMDBfdXMiLCJuc19vZl8xMF91cyIsIm5zX29mXzFfdXMiLCJuc19vZl8xMDBfbnMiLCJuc19vZl8xMF9ucyIsIm5zX29mXzFfbnMiLCJzZWNvbmRzX3NwYW4iLCJzdWJfc2Vjb25kX3NwYW4iLCJvZmRheV9zdHJpbmdfd2l0aF96b25lIiwiZGF0ZV9zdHJpbmciLCJvZmRheV9zdHJpbmciLCJwcmVmaXhfbGVuIiwic3VmZml4X2xlbiIsInNlY29uZHNfc3RyaW5nIiwic3ViX3NlY29uZF9zdHJpbmciLCJzX3N0cmluZyIsIm1fc3RyaW5nIiwiaF9zdHJpbmciLCJtdWx0aXBsaWVyIiwiZGF5c19mcm9tX2Vwb2NoJDAiLCJkYXlzX2Zyb21fZXBvY2hfaW5fbnMiLCJhdHRlbXB0Iiwic3Bhbl9vZl9kdXJhdGlvbiIsInRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCIsImR1cmF0aW9ucyIsInNwYW5zIiwic3RyaW5nX2J5dGVzIiwic3JjX3BvcyIsInNyY19sZW4iLCJkc3RfcG9zIiwic3JjX3BvcyQwIiwiYnl0ZXNfYnl0ZXMiLCJzdHJpbmdfYmlnc3RyaW5nIiwiYnl0ZXNfYmlnc3RyaW5nIiwiYmlnc3RyaW5nX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19zdHJpbmciLCJiaWdzdHJpbmdfYnl0ZXMiLCJzaXplXzAwOSIsInJhbmRvbV8wMTAiLCJzaXplXzAwNyIsImhhc2hfMDA4IiwiaGFzaF8wMDgkMCIsImhhc2hfMDA4JDEiLCJoYXNoXzAwOCQyIiwiYmFzZV9sZW4iLCJnZXRfbm9fYm91bmRzX2NoZWNrIiwiZm9sZGkkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImJsaXRfdG8iLCJibGl0X3RvX3N0cmluZyIsImJsaXRfdG9fYnl0ZXMiLCJibGl0X3RvX2JpZ3N0cmluZyIsImJsaXRfYmFzZSIsImJsaXRfZnJvbSIsImJsaXRfZnJvbV9zdHJpbmciLCJibGl0X2Zyb21fYmlnc3RyaW5nIiwib2ZfYmFzZSIsImNvbmNhdF9nZW4iLCJjcmVhdGVfZHN0IiwiYmxpdF9kc3QiLCJ0cyIsImNvbmNhdF9zdHJpbmciLCJjb25jYXRfYmlnc3RyaW5nIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsInV1aWQiLCJnbG9iYWxpemUkMCIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsImdsb2JhbGl6ZSQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJnbG9iYWxpemUkMiIsInR5cGVuYW1lX29mX3QkMiIsInR5cGVyZXBfb2ZfdCQyIiwiY2hlY2skMiIsInBwJDIiLCJvZl9zdHJpbmckMiIsImluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIiwiYXJnX3R5cGUkMCIsInNleHBfYXNfc3RyaW5nIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInZfMDAxIiwicmVzMV8wMTEiLCJzZXJpYWxpemVkX3NleHAiLCJhcmcxXzAxNSIsInZfMDEyIiwidl8wMTMiLCJyZXMxXzAxNyIsImV4cGVjdGVkX2Jpbl9pbyIsImJpbmFibGVfbSIsInNlcmlhbGl6ZWRfYmluX2lvIiwiYXJnMl8wMjIiLCJhcmcxXzAyMSIsInJlczFfMDI0Iiwidl8wMTkiLCJyZXMyXzAyNSIsImFyZzFfMDI5Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJsb29wIiwicmV2X3NraXBwZWQiLCJzdHJpbmdzJDAiLCJjb250aW51ZSQwIiwic3RyaW5nJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJ2XzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4IiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInBlcm11dGF0YXRpb25zIiwiZWxlbWVudHMiLCJhcmcxXzA1NyIsImFyZzBfMDU2Iiwidl8wNTQiLCJyZXMwXzA1OCIsInJlczFfMDU5IiwiYmxhbmciLCJjbXBfYSQwIiwiYV8wMDEkMCIsImJfMDAyJDAiLCJjbXBfYSQ1IiwiY21wX2EkMSIsImNtcF9hJDIiLCJjbXBfYSQzIiwiYV8wMjciLCJhXzAyNSIsImFfMDIzIiwiYl8wMjgiLCJiXzAyNiIsImJfMDI0IiwiYV8wMzEiLCJiXzAzMiIsImNtcF9hJDQiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3JDAiLCJiXzAzOCQwIiwiYV8wMzkiLCJiXzA0MCIsImFfMDQ5IiwiYV8wNDciLCJiXzA1MCIsImJfMDQ4IiwiYV8wNTMiLCJiXzA1NCIsImFfMDU1IiwiYl8wNTYiLCJhXzA1NyIsImJfMDU4IiwiYV8wNjEiLCJhXzA1OSIsImJfMDYyIiwiYl8wNjAiLCJhXzA3MSIsImJfMDcyIiwiYXJnJDAiLCJhcmckMSIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ2MCQxIiwidjAkMiIsInYwJDMiLCJzdWJ0ZXJtcyIsInQzIiwidDEkMSIsImNvbnRhaW5zX25vX2NvbnN0YW50cyIsInRydWUkMCIsImZhbHNlJDAiLCJub3QiLCJhbmRhbHNvIiwib3RoZXIiLCJ0MWIiLCJ0MWEiLCJvcmVsc2UiLCJpZiQwIiwib2ZfYV8wNzMiLCJhcmcxXzA3NSIsImFyZzBfMDc0IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMl8wODYiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODciLCJyZXMxXzA4OCIsInJlczJfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsImdhdGhlcl9jb25qdW5jdHMiLCJ0cyQxIiwidHMkMCIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJ3b3JkIiwia2lsb2J5dGVzIiwibWVnYWJ5dGVzIiwiZ2lnYWJ5dGVzIiwidGVyYWJ5dGVzIiwicGV0YWJ5dGVzIiwiZXhhYnl0ZXMiLCJ3b3Jkc19pbnRfZXhuIiwid29yZHNfZmxvYXQiLCJvZl9raWxvYnl0ZXMiLCJvZl9tZWdhYnl0ZXMiLCJvZl9naWdhYnl0ZXMiLCJvZl90ZXJhYnl0ZXMiLCJvZl9wZXRhYnl0ZXMiLCJvZl9leGFieXRlcyIsIm9mX3dvcmRzX2ludCIsIm9mX3dvcmRzX2Zsb2F0X2V4biIsImJhc2Vfc3RyIiwiZXh0X2NoYXIiLCJsYXJnZXN0X21lYXN1cmUiLCJ0X2FicyIsIm5vX21hdGNoIiwidmFsX3NleHAiLCJ1bml0X25hbWUiLCJ0JDUiLCJ0JDQiLCJ0JDMiLCJ0JDIiLCJjdXN0b21fcHJpbnRmXzAwNiIsImN1c3RvbV9wcmludGZfMDA3IiwiY3VzdG9tX3ByaW50Zl8wMDgiLCJjdXN0b21fcHJpbnRmXzAwOSIsImN1c3RvbV9wcmludGZfMDEwIiwiY3VzdG9tX3ByaW50Zl8wMTEiLCJ0b19zdHJpbmdfc2hvcnQiLCJ0b191bml0c19zdHIiLCJ0b191bml0IiwiZXh0IiwiZl9hYnMiLCJjdXN0b21fcHJpbnRmXzAxNCIsImN1c3RvbV9wcmludGZfMDE1IiwiY3VzdG9tX3ByaW50Zl8wMTYiLCJjdXN0b21fcHJpbnRmXzAxNyIsImN1c3RvbV9wcmludGZfMDE4IiwiY3VzdG9tX3ByaW50Zl8wMTkiLCJjdXN0b21fcHJpbnRmXzAyMCIsImN1c3RvbV9wcmludGZfMDIxIiwiY3VzdG9tX3ByaW50Zl8wMjIiLCJjdXN0b21fcHJpbnRmXzAyMyIsImN1c3RvbV9wcmludGZfMDI0IiwiY3VzdG9tX3ByaW50Zl8wMjUiLCJjdXN0b21fcHJpbnRmXzAyNiIsIm5fZnJvbnQiLCJuX2JhY2siLCJmcm9udCIsImJhY2siLCJyZXZfYmFjayIsImZyb250JDAiLCJyZXZfZnJvbnQiLCJiYWNrJDAiLCJyYWlzZV9mcm9udF9pbnZhcmlhbnQiLCJyYWlzZV9iYWNrX2ludmFyaWFudCIsInBlZWtfZnJvbnRfZXhuIiwicGVla19iYWNrX2V4biIsImRyb3BfZnJvbnRfZXhuIiwiZHJvcF9iYWNrX2V4biIsIm9wdGlvbmFsIiwicGVla19mcm9udCIsInBlZWtfYmFjayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJ0b19saXN0JDEiLCJ0b19saXN0JDIiLCJ0b19saXN0JDMiLCJzdW0kMSIsImZpbmRfbWFwJDEiLCJ0b19hcnJheSQxIiwiZm9sZF9yZXN1bHQkMSIsImJ1aWxkIiwiZXJyb3Jfc291cmNlXzA1NCIsImVycm9yX3NvdXJjZV8wOTYiLCJuYW1lcyQwIiwidjE2IiwidjE1IiwidjE0IiwidjEzIiwidjEyIiwidjExIiwidjEwIiwidjkiLCJ2OCIsInNpemUkNiIsInNpemUkNyIsInNpemUkOCIsInNpemUkOSIsInNpemUkMTAiLCJzaXplJDExIiwic2l6ZSQxMiIsInNpemUkMTMiLCJ2X21pbm9yX3dvcmRzIiwidl9wcm9tb3RlZF93b3JkcyIsInZfbWFqb3Jfd29yZHMiLCJ2X21pbm9yX2NvbGxlY3Rpb25zIiwidl9tYWpvcl9jb2xsZWN0aW9ucyIsInZfaGVhcF93b3JkcyIsInZfaGVhcF9jaHVua3MiLCJ2X2xpdmVfd29yZHMiLCJ2X2xpdmVfYmxvY2tzIiwidl9mcmVlX3dvcmRzIiwidl9mcmVlX2Jsb2NrcyIsInZfbGFyZ2VzdF9mcmVlIiwidl9mcmFnbWVudHMiLCJ2X2NvbXBhY3Rpb25zIiwidl90b3BfaGVhcF93b3JkcyIsInZfc3RhY2tfc2l6ZSIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJoc3YkMTAiLCJoc3YkMTEiLCJoc3YkMTIiLCJoc3YkMTMiLCJoc3YkMTQiLCJzdGFja19zaXplIiwidG9wX2hlYXBfd29yZHMiLCJjb21wYWN0aW9ucyIsImZyYWdtZW50cyIsImxhcmdlc3RfZnJlZSIsImZyZWVfYmxvY2tzIiwiZnJlZV93b3JkcyIsImxpdmVfYmxvY2tzIiwibGl2ZV93b3JkcyIsImhlYXBfY2h1bmtzIiwiaGVhcF93b3JkcyIsIm1ham9yX2NvbGxlY3Rpb25zIiwibWlub3JfY29sbGVjdGlvbnMiLCJtYWpvcl93b3JkcyIsInByb21vdGVkX3dvcmRzIiwibWlub3Jfd29yZHMiLCJzdGFja19zaXplXzA0NyIsInRvcF9oZWFwX3dvcmRzXzA0NSIsImNvbXBhY3Rpb25zXzA0MyIsImZyYWdtZW50c18wNDEiLCJsYXJnZXN0X2ZyZWVfMDM5IiwiZnJlZV9ibG9ja3NfMDM3IiwiZnJlZV93b3Jkc18wMzUiLCJsaXZlX2Jsb2Nrc18wMzMiLCJsaXZlX3dvcmRzXzAzMSIsImhlYXBfY2h1bmtzXzAyOSIsImhlYXBfd29yZHNfMDI3IiwibWFqb3JfY29sbGVjdGlvbnNfMDI1IiwibWlub3JfY29sbGVjdGlvbnNfMDIzIiwibWFqb3Jfd29yZHNfMDIxIiwicHJvbW90ZWRfd29yZHNfMDE5IiwibWlub3Jfd29yZHNfMDE3IiwiYXJnXzA0OCIsImJuZHNfMDE2JDEiLCJibmRzXzAxNiQyIiwiYm5kc18wMTYkMyIsImJuZHNfMDE2JDQiLCJibmRzXzAxNiQ1IiwiYm5kc18wMTYkNiIsImFyZ18wMzIiLCJibmRzXzAxNiQ3IiwiYXJnXzAzMCIsImJuZHNfMDE2JDgiLCJibmRzXzAxNiQ5IiwiYm5kc18wMTYkMTAiLCJhcmdfMDI0IiwiYm5kc18wMTYkMTEiLCJhcmdfMDIyIiwiYm5kc18wMTYkMTIiLCJibmRzXzAxNiQxMyIsImJuZHNfMDE2JDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwibiQxNCIsImhzdiQxNSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18wODkiLCJzdGFja19zaXplXzA4NyIsInRvcF9oZWFwX3dvcmRzXzA4NSIsImNvbXBhY3Rpb25zXzA4MyIsImZyYWdtZW50c18wODEiLCJsYXJnZXN0X2ZyZWVfMDc5IiwiZnJlZV9ibG9ja3NfMDc3IiwiZnJlZV93b3Jkc18wNzUiLCJsaXZlX2Jsb2Nrc18wNzMiLCJsaXZlX3dvcmRzXzA3MSIsImhlYXBfY2h1bmtzXzA2OSIsImhlYXBfd29yZHNfMDY3IiwibWFqb3JfY29sbGVjdGlvbnNfMDY1IiwibWlub3JfY29sbGVjdGlvbnNfMDYzIiwibWFqb3Jfd29yZHNfMDYxIiwicHJvbW90ZWRfd29yZHNfMDU5IiwibWlub3Jfd29yZHNfMDU3IiwiYXJnXzA5MCIsImJuZHNfMDU2IiwiYXJnXzA4OCIsImJuZHNfMDU2JDAiLCJhcmdfMDg2IiwiYm5kc18wNTYkMSIsImFyZ18wODQiLCJibmRzXzA1NiQyIiwiYXJnXzA4MiIsImJuZHNfMDU2JDMiLCJhcmdfMDgwIiwiYm5kc18wNTYkNCIsImFyZ18wNzgiLCJibmRzXzA1NiQ1IiwiYXJnXzA3NiIsImJuZHNfMDU2JDYiLCJhcmdfMDc0IiwiYm5kc18wNTYkNyIsImFyZ18wNzIiLCJibmRzXzA1NiQ4IiwiYXJnXzA3MCIsImJuZHNfMDU2JDkiLCJhcmdfMDY4IiwiYm5kc18wNTYkMTAiLCJhcmdfMDY2IiwiYm5kc18wNTYkMTEiLCJhcmdfMDY0IiwiYm5kc18wNTYkMTIiLCJhcmdfMDYyIiwiYm5kc18wNTYkMTMiLCJhcmdfMDYwIiwiYm5kc18wNTYkMTQiLCJhcmdfMDU4IiwiYm5kc18wNTYkMTUiLCJ2X21pbm9yX2hlYXBfc2l6ZSIsInZfbWFqb3JfaGVhcF9pbmNyZW1lbnQiLCJ2X3NwYWNlX292ZXJoZWFkIiwidl92ZXJib3NlIiwidl9tYXhfb3ZlcmhlYWQiLCJ2X3N0YWNrX2xpbWl0Iiwidl9hbGxvY2F0aW9uX3BvbGljeSIsInZfd2luZG93X3NpemUiLCJ2X2N1c3RvbV9tYWpvcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX3JhdGlvIiwidl9jdXN0b21fbWlub3JfbWF4X3NpemUiLCJhXzA5MyIsImJfMDk0IiwieF8wOTciLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJ2ZXJib3NlIiwic3BhY2Vfb3ZlcmhlYWQiLCJtYWpvcl9oZWFwX2luY3JlbWVudCIsIm1pbm9yX2hlYXBfc2l6ZSIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8xMTkiLCJjdXN0b21fbWlub3JfcmF0aW9fMTE3IiwiY3VzdG9tX21ham9yX3JhdGlvXzExNSIsIndpbmRvd19zaXplXzExMyIsImFsbG9jYXRpb25fcG9saWN5XzExMSIsInN0YWNrX2xpbWl0XzEwOSIsIm1heF9vdmVyaGVhZF8xMDciLCJ2ZXJib3NlXzEwNSIsInNwYWNlX292ZXJoZWFkXzEwMyIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzEwMSIsIm1pbm9yX2hlYXBfc2l6ZV8wOTkiLCJhcmdfMTIwIiwiYm5kc18wOTgiLCJhcmdfMTE4IiwiYm5kc18wOTgkMCIsImFyZ18xMTYiLCJibmRzXzA5OCQxIiwiYXJnXzExNCIsImJuZHNfMDk4JDIiLCJhcmdfMTEyIiwiYm5kc18wOTgkMyIsImFyZ18xMTAiLCJibmRzXzA5OCQ0IiwiYXJnXzEwOCIsImJuZHNfMDk4JDUiLCJhcmdfMTA2IiwiYm5kc18wOTgkNiIsImFyZ18xMDQiLCJibmRzXzA5OCQ3IiwiYXJnXzEwMiIsImJuZHNfMDk4JDgiLCJhcmdfMTAwIiwiYm5kc18wOTgkOSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNTYiLCJzdGFja19zaXplXzE1NCIsInRvcF9oZWFwX3dvcmRzXzE1MiIsImNvbXBhY3Rpb25zXzE1MCIsImZyYWdtZW50c18xNDgiLCJsYXJnZXN0X2ZyZWVfMTQ2IiwiZnJlZV9ibG9ja3NfMTQ0IiwiZnJlZV93b3Jkc18xNDIiLCJsaXZlX2Jsb2Nrc18xNDAiLCJsaXZlX3dvcmRzXzEzOCIsImhlYXBfY2h1bmtzXzEzNiIsImhlYXBfd29yZHNfMTM0IiwibWFqb3JfY29sbGVjdGlvbnNfMTMyIiwibWlub3JfY29sbGVjdGlvbnNfMTMwIiwibWFqb3Jfd29yZHNfMTI4IiwicHJvbW90ZWRfd29yZHNfMTI2IiwibWlub3Jfd29yZHNfMTI0IiwiYXJnXzE1NyIsImJuZHNfMTIzIiwiYXJnXzE1NSIsImJuZHNfMTIzJDAiLCJhcmdfMTUzIiwiYm5kc18xMjMkMSIsImFyZ18xNTEiLCJibmRzXzEyMyQyIiwiYXJnXzE0OSIsImJuZHNfMTIzJDMiLCJhcmdfMTQ3IiwiYm5kc18xMjMkNCIsImFyZ18xNDUiLCJibmRzXzEyMyQ1IiwiYXJnXzE0MyIsImJuZHNfMTIzJDYiLCJhcmdfMTQxIiwiYm5kc18xMjMkNyIsImFyZ18xMzkiLCJibmRzXzEyMyQ4IiwiYXJnXzEzNyIsImJuZHNfMTIzJDkiLCJhcmdfMTM1IiwiYm5kc18xMjMkMTAiLCJhcmdfMTMzIiwiYm5kc18xMjMkMTEiLCJhcmdfMTMxIiwiYm5kc18xMjMkMTIiLCJhcmdfMTI5IiwiYm5kc18xMjMkMTMiLCJhcmdfMTI3IiwiYm5kc18xMjMkMTQiLCJhcmdfMTI1IiwiYm5kc18xMjMkMTUiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMkMCIsInN0YWNrX3NpemUkMCIsInRvcF9oZWFwX3dvcmRzJDAiLCJjb21wYWN0aW9ucyQwIiwiZnJhZ21lbnRzJDAiLCJsYXJnZXN0X2ZyZWUkMCIsImZyZWVfYmxvY2tzJDAiLCJmcmVlX3dvcmRzJDAiLCJsaXZlX2Jsb2NrcyQwIiwibGl2ZV93b3JkcyQwIiwiaGVhcF9jaHVua3MkMCIsImhlYXBfd29yZHMkMCIsIm1ham9yX2NvbGxlY3Rpb25zJDAiLCJtaW5vcl9jb2xsZWN0aW9ucyQwIiwibWFqb3Jfd29yZHMkMCIsInByb21vdGVkX3dvcmRzJDAiLCJtaW5vcl93b3JkcyQwIiwibWlub3Jfd29yZHNfZnVuIiwicHJvbW90ZWRfd29yZHNfZnVuIiwibWFqb3Jfd29yZHNfZnVuIiwibWlub3JfY29sbGVjdGlvbnNfZnVuIiwibWFqb3JfY29sbGVjdGlvbnNfZnVuIiwiaGVhcF93b3Jkc19mdW4iLCJoZWFwX2NodW5rc19mdW4iLCJsaXZlX3dvcmRzX2Z1biIsImxpdmVfYmxvY2tzX2Z1biIsImZyZWVfd29yZHNfZnVuIiwiZnJlZV9ibG9ja3NfZnVuIiwibGFyZ2VzdF9mcmVlX2Z1biIsImZyYWdtZW50c19mdW4iLCJjb21wYWN0aW9uc19mdW4iLCJ0b3BfaGVhcF93b3Jkc19mdW4iLCJzdGFja19zaXplX2Z1biIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19mdW4iLCJtaW5vcl93b3Jkc19nZW4iLCJwcm9tb3RlZF93b3Jkc19nZW4iLCJtYWpvcl93b3Jkc19nZW4iLCJtaW5vcl9jb2xsZWN0aW9uc19nZW4iLCJtYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJoZWFwX3dvcmRzX2dlbiIsImhlYXBfY2h1bmtzX2dlbiIsImxpdmVfd29yZHNfZ2VuIiwibGl2ZV9ibG9ja3NfZ2VuIiwiZnJlZV93b3Jkc19nZW4iLCJmcmVlX2Jsb2Nrc19nZW4iLCJsYXJnZXN0X2ZyZWVfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJmcmFnbWVudHNfZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJjb21wYWN0aW9uc19nZW4iLCJjb21waWxlX2FjYyQxNCIsInRvcF9oZWFwX3dvcmRzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwic3RhY2tfc2l6ZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc19nZW4iLCJmbG9hdF9mIiwiaW50X2YiLCJhXzE1OCIsImJfMTU5IiwiY3VzdG9tX21pbm9yX21heF9zaXplXzE4MSIsImN1c3RvbV9taW5vcl9yYXRpb18xNzkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMTc3Iiwid2luZG93X3NpemVfMTc1IiwiYWxsb2NhdGlvbl9wb2xpY3lfMTczIiwic3RhY2tfbGltaXRfMTcxIiwibWF4X292ZXJoZWFkXzE2OSIsInZlcmJvc2VfMTY3Iiwic3BhY2Vfb3ZlcmhlYWRfMTY1IiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfMTYzIiwibWlub3JfaGVhcF9zaXplXzE2MSIsImFyZ18xODIiLCJibmRzXzE2MCIsImFyZ18xODAiLCJibmRzXzE2MCQwIiwiYXJnXzE3OCIsImJuZHNfMTYwJDEiLCJhcmdfMTc2IiwiYm5kc18xNjAkMiIsImFyZ18xNzQiLCJibmRzXzE2MCQzIiwiYXJnXzE3MiIsImJuZHNfMTYwJDQiLCJhcmdfMTcwIiwiYm5kc18xNjAkNSIsImFyZ18xNjgiLCJibmRzXzE2MCQ2IiwiYXJnXzE2NiIsImJuZHNfMTYwJDciLCJhcmdfMTY0IiwiYm5kc18xNjAkOCIsImFyZ18xNjIiLCJibmRzXzE2MCQ5IiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWFrZV9jcmVhdG9yJDAiLCJtaW5vcl9oZWFwX3NpemVfZnVuIiwibWFqb3JfaGVhcF9pbmNyZW1lbnRfZnVuIiwic3BhY2Vfb3ZlcmhlYWRfZnVuIiwidmVyYm9zZV9mdW4iLCJtYXhfb3ZlcmhlYWRfZnVuIiwic3RhY2tfbGltaXRfZnVuIiwiYWxsb2NhdGlvbl9wb2xpY3lfZnVuIiwid2luZG93X3NpemVfZnVuIiwiY3VzdG9tX21ham9yX3JhdGlvX2Z1biIsImN1c3RvbV9taW5vcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfbWF4X3NpemVfZnVuIiwibWlub3JfaGVhcF9zaXplX2dlbiIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2dlbiIsInNwYWNlX292ZXJoZWFkX2dlbiIsInZlcmJvc2VfZ2VuIiwibWF4X292ZXJoZWFkX2dlbiIsInN0YWNrX2xpbWl0X2dlbiIsImFsbG9jYXRpb25fcG9saWN5X2dlbiIsIndpbmRvd19zaXplX2dlbiIsImN1c3RvbV9tYWpvcl9yYXRpb19nZW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2dlbiIsIm1hcF9wb2x5JDAiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsImNvbXBhcmUkNyIsImVxdWFsJDUiLCJ0dW5lIiwibG9nZ2VyIiwib2xkX2NvbnRyb2xfcGFyYW1zIiwiZmllbGQiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJuZXdfY29udHJvbF9wYXJhbXMiLCJkaXNhYmxlX2NvbXBhY3Rpb24iLCJwb2xpY3kiLCJzdGF0X3NpemVfbGF6eSIsInN0YXRfc2l6ZSIsImtlZXBfYWxpdmUiLCJvIiwiaXNfemVyb19hbGxvYyIsIm1pbm9yX3dvcmRzX2JlZm9yZSIsIm1ham9yX3dvcmRzX2JlZm9yZSIsIm1pbm9yX3dvcmRzX2FmdGVyIiwibWFqb3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWQiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMTkwIiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzE4OCIsImFyZ18xOTEiLCJibmRzXzE4NyIsImFyZ18xODkiLCJibmRzXzE4NyQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzE5NyIsImlzX21ham9yXzE5NSIsInNpemVfaW5fd29yZHNfMTkzIiwiYXJnXzE5OCIsImJuZHNfMTkyIiwiYXJnXzE5NiIsImJuZHNfMTkyJDAiLCJhcmdfMTk0IiwiYm5kc18xOTIkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImluZm8iLCJiYWNrdHJhY2UiLCJiYWNrdHJhY2UkMCIsImluZm8kMCIsInRyYWNrZXIiLCJhZGRfZmluYWxpemVyIiwiYWRkX2ZpbmFsaXplcl9leG4iLCJhZGRfZmluYWxpemVyX2xhc3QiLCJhZGRfZmluYWxpemVyX2xhc3RfZXhuIiwiZmluYWxpemVfcmVsZWFzZSIsInNleHBfb2ZfdCQ4IiwiZXhwZWN0IiwiZXhwZWN0JDAiLCJzZXhwXzAwNiIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwidHlwZV9pZCIsInRvX3N0YWJsZV9mb3JtYXQiLCJvZl9zdGFibGVfZm9ybWF0Iiwib2ZfcXVpY2tjaGVja2FibGUiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwic2lnbmFsIiwiZiQwIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJvZl9hXzAwOSIsIm9mX2FfMDEyIiwieF8wMTMiLCJvZl9mb3JtYXQiLCJ0b19mb3JtYXQiLCJzZXRfYXQiLCJzZXRfaW50ZXJuYWwiLCJzZXRfaWZfbm9uZSIsInNldF9leG4iLCJnZXRfZXhuIiwicHJpbnQiLCJjYXRjaCQwIiwicHJpbnRfYmFja3RyYWNlIiwiZ2V0X2JhY2t0cmFjZSIsInJlY29yZF9iYWNrdHJhY2UiLCJiYWNrdHJhY2Vfc3RhdHVzIiwiY2FwdHVyZSIsImdlbmVyYWwiLCJoYXNoYWJsZSQxIiwiY2FjaGVfc2l6ZV9ib3VuZCIsImNhY2hlIiwicmVhbGx5X2NhbGxfZiIsIm1heF9jYWNoZV9zaXplIiwiY2FjaGUkMCIsInJlY3Vyc2l2ZSIsImZfb25lc3RlcCIsIm1lbW9pemVkIiwib2ZfY29tcGFyYWJsZSIsInYkMSIsImluaXRpYWxfbGVuZ3RoIiwibmV2ZXJfc2hyaW5rIiwibmV2ZXJfc2hyaW5rJDAiLCJpbml0aWFsX2xlbmd0aCQwIiwiYXJyX2xlbmd0aCIsImFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90XyIsImFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZSIsImFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbSIsImFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcCIsImNoZWNrZWQiLCJhcHBhcmVudF9mcm9udF9pbmRleCIsImFwcGFyZW50X2JhY2tfaW5kZXgiLCJkaXIiLCJhcHBhcmVudF9mcm9udCIsImFwcGFyZW50X2JhY2siLCJhY3R1YWxfZnJvbnQiLCJhY3R1YWxfYmFjayIsImFwcGFyZW50X2kiLCJyZWFsX2kiLCJzdG9wX3BvcyIsImFwcGFyZW50X2kkMCIsInJlYWxfaSQwIiwicmVhbF9pJDEiLCJhcHBhcmVudF9pJDEiLCJhY2MkMSIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsIml0ZXJpX2ludGVybmFsIiwibmV3X2FyciIsIm9sZF9hcnIiLCJicmVha19wb3MiLCJtYXliZV9zaHJpbmtfdW5kZXJseWluZyIsImdyb3dfdW5kZXJseWluZyIsInBlZWtfZnJvbnRfbm9uZW1wdHkiLCJwZWVrX2JhY2tfbm9uZW1wdHkiLCJkZXF1ZXVlX2Zyb250X25vbmVtcHR5IiwiZGVxdWV1ZV9iYWNrX25vbmVtcHR5IiwiZHJvcF9nZW4iLCJhc3NlcnRfbm90X2VtcHR5IiwidHJ1ZV9pbmRleF9leG4iLCJpX2Zyb21femVybyIsInRydWVfaSIsImdldF9vcHQiLCJiYWNrX2luZGV4X2V4biIsImZyb250X2luZGV4X2V4biIsImdldCQwIiwidW50cmFuc2xhdGVkX2kiLCJlcHJpbnQiLCJlcHJpbnRzIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwic2V4cF9vZl9hcmciLCJzZXhwX29mX3Jlc3VsdCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwibWVzc2FnZSQwIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsInF1b3RlIiwiY29uY2F0X3F1b3RlZCIsInNwbGl0X2NvbW1hbmQiLCJzb3J0X2FuZF9hbGlnbiIsImFkZF91bml0IiwidW50aWxfZW1wdHkiLCJic3RyXzAwMiIsInBvc18wMDQiLCJsZW5fMDA2IiwiaW5pdF8wMDgiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJyZXNpemUiLCJtaW5fbGVuIiwibmV3X2xlbiIsIm5ld19idWYiLCJpbnRlcm5hbCIsImNvbnRlbnRzX2J5dGVzIiwiYmlnX2NvbnRlbnRzIiwidm9sYXRpbGVfY29udGVudHMiLCJhZGRfY2hhciIsInJlc2V0IiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3MiLCJhZGRfc3ViYnl0ZXMiLCJhZGRfYmlnc3RyaW5nIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJidWZfZHN0IiwiYnVmX3NyYyIsImFkZF9iaW5fcHJvdCIsImFkZF9zdWJzdGl0dXRlIiwibGltIiwic3Vic3QiLCJwcmV2aW91cyIsImkkNCIsInByZXZpb3VzJDAiLCJpJDUiLCJwcmV2aW91cyQxIiwiaSQ2Iiwib3BlbmluZyIsImxpbSQxIiwiaSQyIiwiaSQzIiwibmV3X3N0YXJ0IiwiayQyIiwiY2xvc2luZyIsImxpbSQwIiwiaSQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJpJDkiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwiZXJyb3Jfc291cmNlXzAxNyIsInZfaW5kZXgiLCJ2X21pbl9pbmRleCIsInZfbWF4X2luZGV4IiwiYXJnNV8wMDkiLCJhcmc0XzAwOCIsImFyZzNfMDA3IiwiYXJnMl8wMDYiLCJyZXMyXzAxMiIsInJlczNfMDEzIiwicmVzNF8wMTQiLCJyZXM1XzAxNSIsImFyZzVfMDIzIiwiYXJnNF8wMjIiLCJhcmczXzAyMSIsImFyZzJfMDIwIiwiYXJnMV8wMTkiLCJyZXM1XzAyOSIsIm9mIiwibGFiZWwiLCJjcmVhdGVfYWxsIiwibWF4X2luZGV4IiwibWluX2luZGV4IiwiemVyb19iYXNlZF9pbmRleCIsIm51bV9pbmRleGVzIiwiaG9zdF9hbmRfcG9ydCIsInBhcnNlJDAiLCJtYXBfYW5vbnMiLCJ0NCIsIm1heWJlX3dpdGhfZGVmYXVsdCIsIm1heWJlIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciIsIm1hcF9mbGFnIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlIiwiZXNjYXBlIiwibm9fYXJnX2Fib3J0Iiwibm9fYXJnX3JlcXVpcmVkIiwibm9fYXJnX3NvbWUiLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmciLCJvbmVfb3JfbW9yZV9hc19saXN0Iiwib25lX29yX21vcmVfYXNfcGFpciIsImxpc3RlZCIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsInJlcXVpcmVkIiwib3B0aW9uYWxfdG9fcmVxdWlyZWQiLCJhcmdfbmFtZXMiLCJhbmRfYXJnX25hbWUiLCJhbmRfYXJnX25hbWVzIiwiY2hvb3NlX29uZV9ub25fb3B0aW9uYWwiLCJjaG9vc2Vfb25lIiwiZXNjYXBlX2Fub24iLCJhbm9uIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwiZmxhZyIsImhlbHAiLCJtYXAzIiwiYm90aCIsInBlcmNlbnQkMCIsImhvc3RfYW5kX3BvcnQkMCIsIm9mX3BhcmFtIiwidG9fcGFyYW0iLCJtYXBfYW5vbnMkMCIsInQ0JDAiLCJ0MyQwIiwibWF5YmVfd2l0aF9kZWZhdWx0JDAiLCJtYXliZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QkMCIsIm5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyJDAiLCJzZXF1ZW5jZSQwIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJtYXBfZmxhZyQwIiwiZXNjYXBlX3dpdGhfYXV0b2NvbXBsZXRlJDAiLCJlc2NhcGUkMCIsIm5vX2FyZ19hYm9ydCQwIiwibm9fYXJnX3JlcXVpcmVkJDAiLCJub19hcmdfc29tZSQwIiwibm9fYXJnX3JlZ2lzdGVyJDAiLCJub19hcmckMCIsIm9uZV9vcl9tb3JlX2FzX2xpc3QkMCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIkMCIsImxpc3RlZCQwIiwib3B0aW9uYWxfd2l0aF9kZWZhdWx0JDAiLCJvcHRpb25hbCQwIiwicmVxdWlyZWQkMCIsIndyYXAiLCJwYWlyIiwiYXJnX25hbWVzJDAiLCJhbmRfYXJnX25hbWUkMCIsImFuZF9hcmdfbmFtZXMkMCIsImNob29zZV9vbmVfbm9uX29wdGlvbmFsJDAiLCJjaG9vc2Vfb25lJDAiLCJlc2NhcGVfYW5vbiQwIiwiYW5vbiQwIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jJDAiLCJmbGFnJDAiLCJwYXRoJDAiLCJoZWxwJDAiLCJhbGxfdW5pdCQwIiwiYWxsJDAiLCJtYXAzJDAiLCJhcHBseSQwIiwic3ltYm9sX21hcCQwIiwiYm90aCQwIiwicmV0dXJuJDEiLCJwZXJjZW50JDEiLCJob3N0X2FuZF9wb3J0JDEiLCJkb2VzX3JhaXNlIiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJ2X3N1bW1hcnkiLCJ2X3JlYWRtZSIsInZfYW5vbnMiLCJ2X2ZsYWdzIiwiYmluX3NoYXBlX2EiLCJ2X3N1YmNvbW1hbmRzIiwidl93b3JraW5nX2RpciIsInZfcGF0aF90b19leGUiLCJ2X2NoaWxkX3N1YmNvbW1hbmQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwidiQzIiwidiQ0IiwidiQ1IiwidiQwIiwidiQxIiwidiQyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzAzMyIsImVycm9yX3NvdXJjZV8wNDkiLCJlcnJvcl9zb3VyY2VfMDcyIiwiZXJyb3Jfc291cmNlXzA4NiIsImVycm9yX3NvdXJjZV8xMTkiLCJlcnJvcl9zb3VyY2VfMTUxIiwiZXJyb3Jfc291cmNlXzE5OSIsImVycm9yX3NvdXJjZV8yMDEiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwieF8wMzQiLCJhIiwiZyIsInNleHBfb2ZfdCQwIiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJhcmdfMDQzIiwiYm5kc18wMzUiLCJhcmdfMDQxIiwiYm5kc18wMzUkMCIsImFyZ18wMzkiLCJibmRzXzAzNSQxIiwiYXJnXzAzNyIsImJuZHNfMDM1JDIiLCJncm91cCQxIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsInY0IiwidjMiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwidl9yIiwidl9nIiwidl9iIiwidl9hIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wNDQiLCJiXzA0NSIsIm4kMCIsIm4kMSIsImFfMDQ2IiwiYl8wNDciLCJ0X29mX3NleHAkMSIsInhfMDUwIiwibCIsImgiLCJzZXhwX29mX3QkMSIsImFfMDU4IiwibF8wNTYiLCJzXzA1NCIsImhfMDUyIiwiYXJnXzA1OSIsImJuZHNfMDUxIiwiYXJnXzA1NyIsImJuZHNfMDUxJDAiLCJhcmdfMDU1IiwiYm5kc18wNTEkMSIsImFyZ18wNTMiLCJibmRzXzA1MSQyIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ2X2giLCJ2X3MiLCJ2X2wiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzA2MCIsImJfMDYxIiwiYV8wNjIiLCJiXzA2MyIsImNyZWF0ZSQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzA2NyIsImF0b21fMDY1Iiwic2V4cF9hcmdzXzA2OCIsImF0b21fMDY1JDAiLCJhcmcwXzA4MCIsInJlczBfMDgxIiwiYXJnMF8wNzQiLCJyZXMwXzA3NSIsImFyZzBfMDc3IiwicmVzMF8wNzgiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwiYXJnMF8wODMiLCJyZXMwXzA4NCIsInRfb2Zfc2V4cCQzIiwic2V4cF8wODUiLCJzZXhwX29mX3QkMiIsInZfMDkyIiwidl8wOTEiLCJ2XzA4NyIsInZfMDg5Iiwidl8wODgiLCJ2XzA5MCIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMDkzIiwiYl8wOTQiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInJpZ2h0XzA5NiIsImxlZnRfMDk1IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8wOTgiLCJsZWZ0XzA5NyIsInJpZ2h0XzEwMiIsImxlZnRfMTAxIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTE0IiwiYXRvbV8xMTIiLCJzZXhwX2FyZ3NfMTE1IiwiYXRvbV8xMTIkMCIsImFyZzBfMTI3IiwicmVzMF8xMjgiLCJhcmcwXzEyNCIsInJlczBfMTI1IiwiYXJnMF8xNDgiLCJyZXMwXzE0OSIsImFyZzBfMTQyIiwicmVzMF8xNDMiLCJhcmcwXzEyMSIsInJlczBfMTIyIiwiYXJnMF8xMTciLCJyZXMwXzExOCIsImFyZzBfMTQ1IiwicmVzMF8xNDYiLCJhcmcwXzEzOSIsInJlczBfMTQwIiwiYXJnMF8xMzYiLCJyZXMwXzEzNyIsImFyZzBfMTMzIiwicmVzMF8xMzQiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE1MCIsInNleHBfb2ZfdCQzIiwidl8xNjMiLCJ2XzE2MSIsInZfMTU5Iiwidl8xNTYiLCJ2XzE1NCIsInZfMTUyIiwidl8xNjIiLCJ2XzE2MCIsInZfMTU4Iiwidl8xNTUiLCJ2XzE1MyIsInZfMTU3IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzE2NCIsImJfMTY1IiwicmlnaHRfMTc1IiwibGVmdF8xNzQiLCJyaWdodF8xNzEiLCJsZWZ0XzE3MCIsInJpZ2h0XzE2NyIsImxlZnRfMTY2IiwicmlnaHRfMTg3IiwibGVmdF8xODYiLCJyaWdodF8xODUiLCJsZWZ0XzE4NCIsInJpZ2h0XzE4MSIsImxlZnRfMTgwIiwicmlnaHRfMTgzIiwibGVmdF8xODIiLCJyaWdodF8xNzkiLCJsZWZ0XzE3OCIsInJpZ2h0XzE3MyIsImxlZnRfMTcyIiwicmlnaHRfMTY5IiwibGVmdF8xNjgiLCJyaWdodF8xNzciLCJsZWZ0XzE3NiIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMTkwIiwiYl8xOTEiLCJ0X29mX3NleHAkNiIsInNleHBfMTk3IiwiYXRvbV8xOTUiLCJhdG9tXzE5NSQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzIwMCIsInNleHBfb2ZfdCQ0Iiwidl8yMDIiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiZW1wdHkiLCJpc19lbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsImxpbmVfaGVpZ2h0Iiwid2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfd2lkdGgiLCJoZWlnaHQiLCJtaW5faGVpZ2h0IiwibWF4X2hlaWdodCIsInBhZGRpbmdfdG9wIiwicGFkZGluZ19ib3R0b20iLCJwYWRkaW5nX2xlZnQiLCJwYWRkaW5nX3JpZ2h0IiwicGFkZGluZyIsInVuaWZvcm1fcGFkZGluZyIsIm1hcmdpbl90b3AiLCJtYXJnaW5fYm90dG9tIiwibWFyZ2luX2xlZnQiLCJtYXJnaW5fcmlnaHQiLCJtYXJnaW4iLCJ1bmlmb3JtX21hcmdpbiIsInJvd19nYXAiLCJjb2x1bW5fZ2FwIiwiY29uY2F0MnYiLCJjb25jYXQzdiIsImJvcmRlcl92YWx1ZSIsInN0eWxlJDAiLCJ3aWR0aCQwIiwiY29sb3IkMCIsImNyZWF0ZV9ib3JkZXIiLCJzaWRlIiwiYm9yZGVyX3RvcCIsImJvcmRlcl9ib3R0b20iLCJib3JkZXJfbGVmdCIsImJvcmRlcl9yaWdodCIsImJvcmRlciIsIm91dGxpbmUiLCJib3JkZXJfY29sbGFwc2UiLCJib3JkZXJfc3BhY2luZyIsImJvcmRlcl9yYWRpdXMiLCJ0ZXh0X2RlY29yYXRpb24iLCJsaW5lIiwibGluZSQwIiwiaXRlbV9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyIsImZsZXhfY29udGFpbmVyIiwiYWxpZ25faXRlbXMiLCJhbGlnbl9jb250ZW50IiwianVzdGlmeV9jb250ZW50IiwicmciLCJjZyIsImlubGluZSIsIndyYXAiLCJkaXJlY3Rpb24kMCIsIndyYXAkMCIsImFsaWduX2l0ZW1zJDAiLCJhbGlnbl9jb250ZW50JDAiLCJhJDEiLCJqdXN0aWZ5X2NvbnRlbnQkMCIsInJvd19nYXAkMCIsImNvbHVtbl9nYXAkMCIsImZsZXhfaXRlbSIsIm9yZGVyIiwiZ3JvdyIsImJhc2lzIiwic2hyaW5rIiwib3JkZXIkMCIsImJhc2lzJDAiLCJmbGV4IiwiYWxpZ25fc2VsZiIsInJlc2l6ZSIsInZhbHVlJDAiLCJhbmltYXRpb24iLCJkdXJhdGlvbiIsImRlbGF5IiwiZmlsbF9tb2RlIiwiaXRlcl9jb3VudCIsInRpbWluZ19mdW5jdGlvbiIsInNwYW5fdG9fc3RyaW5nIiwiZCIsImZpbGxfbW9kZSQwIiwidXNlcl9zZWxlY3QiLCJjc3MiLCJzMiIsIngiLCJ0b19qc19zdHJpbmciLCJ0b19qc19zdHJpbmdfZml4ZWQiLCJ0b19qc19zdHJpbmdfcHJlY2lzaW9uIiwidG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX2ZpeGVkIiwidG9fc3RyaW5nX3ByZWNpc2lvbiIsInRvX3N0cmluZ19leHBvbmVudGlhbCIsInByaW50IiwiZiIsInZpc2liaWxpdHlfaGFuZGxlcnMiLCJzZXF1ZW5jZV9hc19zaWJsaW5nIiwibGVmdCIsInVubGVzc19zdG9wcGVkIiwiY29udGFpbnNfc3RvcCIsImVzIiwiY3VycmVudF9kb21fZXZlbnQiLCJoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4iLCJoYW5kbGUiLCJkb21fZXZlbnQiLCJldmVudCIsIm9sZCIsInNleHBfb2ZfdCIsInZhbHVlIiwidHlwZV9pZCIsImdlbmVyaWNfaG9vayIsInBhY2siLCJpZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJpbml0IiwiaW5wdXRfaWQiLCJpbnB1dCIsImEiLCJpbml0JDAiLCJhJDAiLCJ1cGRhdGUkMCIsImRlc3Ryb3kkMCIsImdlbmVyaWNfaG9vayQwIiwiZXh0cmEiLCJjb21iaW5lIiwicmlnaHQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImVsZW1lbnQiLCJzdGF0ZSIsImFuaW1hdGlvbl9pZCIsIm9sZF9pbnB1dCIsImNyZWF0ZSIsImNvbWJpbmVfaW5wdXRzIiwic2V0IiwiZ2V0IiwiZGVsZXRlJDAiLCJzZXRfcHJvcF9hc2NpaSIsInQiLCJuYW1lIiwiZ2V0X3Byb3BfYXNjaWkiLCJoYXNfcHJvcGVydHkiLCJzZXRfcHJvcGVydHkiLCJoYXNfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZSIsInRvX2RvbSIsIm5vZGUiLCJ0YWciLCJhdHRycyIsImNoaWxkcmVuIiwia2V5Iiwia2V5JDAiLCJzdmciLCJ0ZXh0IiwicyIsInBhdGNoIiwiY3JlYXRlJDAiLCJwcmV2aW91cyIsImN1cnJlbnQiLCJpc19lbXB0eSIsImZfaWQiLCJpZF9zZXhwIiwiY3JlYXRlJDEiLCJ2ZG9tX2Zvcl90ZXN0aW5nIiwiZWx0IiwiZG9tX25vZGUiLCJzMCIsInByZXZfc3RhdGUiLCJkb21fbm9kZSQwIiwibmFtZSQyIiwibmFtZSQxIiwibmFtZSQwIiwiZW1wdHkiLCJyaGFuZGxlciIsInhfMDAyIiwibGhhbmRsZXIiLCJ4XzAwMSIsImNyZWF0ZV9mbG9hdCIsInByb3BlcnR5Iiwic3RyaW5nX3Byb3BlcnR5IiwiYm9vbF9wcm9wZXJ0eSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzIiwiY3JlYXRlX2hvb2siLCJob29rIiwibWFueSIsIm1hbnlfd2l0aG91dF9tZXJnZSIsImNvbWJpbmUkMCIsIndhcm5pbmdfY291bnQiLCJ3YXJuX3MiLCJxdW90YSIsIndhcm5pbmdfY291bnQkMCIsInJlc2V0X3dhcm5pbmdfY291bnQiLCJjb21iaW5pbmdfbWFwX2FkZCIsIm1hcCIsImV4aXN0aW5nX3ZhbHVlIiwiZW1wdHlfbWVyZ2UiLCJzdHlsZSIsImNzcyIsImNsYXNzJDAiLCJjbGFzc25hbWUiLCJjbGFzc2VzIiwiY2xhc3NlcyQwIiwiY2xhc3NuYW1lcyIsImhyZWYiLCJyIiwibGFiZWwiLCJ0YXJnZXQiLCJjaGVja2VkIiwic2VsZWN0ZWQiLCJoaWRkZW4iLCJyZWFkb25seSIsImRpc2FibGVkIiwicGxhY2Vob2xkZXIiLCJ4IiwiYXV0b2ZvY3VzIiwiZm9yJDAiLCJ0eXBlIiwidmFsdWVfcHJvcCIsInRhYmluZGV4IiwidGl0bGUiLCJhbHQiLCJzcmMiLCJvcGVuIiwic3RhcnQiLCJtaW4iLCJtYXgiLCJtaW5fZGF0ZSIsIm1heF9kYXRlIiwibWluX2RhdGVfdGltZSIsIm1heF9kYXRlX3RpbWUiLCJjb2xzcGFuIiwicm93c3BhbiIsImRyYWdnYWJsZSIsImIiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJjbGlwYm9hcmQiLCJkcmFnIiwicG9pbnRlciIsImFuaW1hdGlvbiIsIm9uIiwiaGFuZGxlciIsIm9uX2ZvY3VzIiwib25fYmx1ciIsIm9uX2NsaWNrIiwib25fY29udGV4dG1lbnUiLCJvbl9kb3VibGVfY2xpY2siLCJvbl9kcmFnIiwib25fZHJhZ3N0YXJ0Iiwib25fZHJhZ2VuZCIsIm9uX2RyYWdlbnRlciIsIm9uX2RyYWdsZWF2ZSIsIm9uX2RyYWdvdmVyIiwib25fZHJvcCIsIm9uX21vdXNlbW92ZSIsIm9uX21vdXNldXAiLCJvbl9tb3VzZWRvd24iLCJvbl9tb3VzZWVudGVyIiwib25fbW91c2VsZWF2ZSIsIm9uX21vdXNlb3ZlciIsIm9uX21vdXNlb3V0Iiwib25fa2V5dXAiLCJvbl9rZXlwcmVzcyIsIm9uX2tleWRvd24iLCJvbl9zY3JvbGwiLCJvbl9sb2FkIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fd2hlZWwiLCJvbl9jb3B5Iiwib25fY3V0Iiwib25fcGFzdGUiLCJvbl9yZXNldCIsIm9uX2FuaW1hdGlvbmVuZCIsImNvbnN0X2lnbm9yZSIsInJ1bl9jb2VyY2lvbiIsImNvZXJjaW9uIiwicHJldiIsIm9uX2lucHV0X2V2ZW50Iiwib25fY2hhbmdlIiwib25faW5wdXQiLCJ0b19yYXciLCJhdHRyIiwiYXR0cnNfb2JqIiwidGFrZV9zZWNvbmRfc3R5bGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJ0YWtlX3NlY29uZF9jbGFzc2VzIiwiZmlyc3QkMCIsImFfMDAzIiwiYl8wMDQiLCJzZWNvbmQkMCIsImFfMDA1IiwiYl8wMDYiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwic2V4cF9vZl90JDAiLCJ4XzAxMyIsImFyZzFfMDEwIiwiYXJnMF8wMDkiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiY29tYmluZSQyIiwib25fbW91bnQkMCIsIm5ld19pbnB1dCIsImFfMDE2IiwiYl8wMTciLCJ0XzAxOSIsInRfMDE4IiwidF8wMjEiLCJ0XzAyMCIsImNzc192YXJzX25vX2tlYmFicyIsImFsaXN0IiwiY3NzX3ZhciIsImZpbHRlcl9ieV9raW5kIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsImV2ZW50X2tpbmQkMSIsImV2ZW50X2tpbmQkMiIsImV2ZW50X2tpbmQkMyIsImV2ZW50X2tpbmQkNCIsImV2ZW50X2tpbmQkNSIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJjbGljayIsImNvbnRleHRtZW51Iiwia2V5ZG93biIsImJlZm9yZXVubG9hZCIsImYkMCIsInZpc2liaWxpdHljaGFuZ2UiLCJtb3VzZXVwX3R5cGVfaWQiLCJtb3VzZW1vdmVfdHlwZV9pZCIsImtleWRvd25fdHlwZV9pZCIsImNsaWNrX3R5cGVfaWQiLCJjb250ZXh0bWVudV90eXBlX2lkIiwidmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkIiwiYmVmb3JldW5sb2FkX3R5cGVfaWQiLCJ2ZG9tX3RodW5rIiwiYXJnIiwia2V5JDEiLCJyZXMxXzAwOSIsIndpdGhfa2V5IiwibWFwX2F0dHJzIiwicmF3X2F0dHJzIiwiYWRkX2NsYXNzZXMiLCJ0X3RvX2pzIiwidyIsInRfdG9fanNfbGF6eSIsImtpbmQiLCJvdGhlciIsImxhenkiLCJlbGVtZW50X2V4cGVydCIsIndpZGdldCIsInZkb21fZm9yX3Rlc3RpbmckMCIsImNyZWF0ZV9jaGlsZGxlc3MiLCJjcmVhdGVfc3ZnIiwidGV4dGYiLCJmb3JtYXQiLCJ3aWRnZXRfb2ZfbW9kdWxlIiwibSIsImFyZzBfMDA2Iiwic3RhdGVfMDA0IiwiaW5wdXRfMDAyIiwiYXJnXzAwNSIsImJuZHNfMDAxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDAiLCJyZXMwXzAwOCIsInByZXZfaW5wdXQiLCJlbGVtZW50JDAiLCJzdGF0ZSQwIiwiaSIsIndpZGdldCQwIiwiY29udGVudCIsIm92ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmciLCJwcmV2X2F0dHIiLCJwcmV2X3RhZyIsInByZXZfY29udGVudCIsImlubmVyX2h0bWxfc3ZnIiwiaW5uZXJfaHRtbCIsImFiYnIiLCJib2R5IiwiYnV0dG9uIiwiY29kZSIsImRhdGFsaXN0IiwiZGV0YWlscyIsImRpdiIsIm1haW4iLCJmaWVsZHNldCIsImxlZ2VuZCIsImZvb3RlciIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsImhlYWRlciIsImh0bWwiLCJpbWciLCJpbnB1dF9kZXByZWNhdGVkIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJvcHRncm91cCIsIm9wdGlvbiIsImxpIiwicCIsInByZSIsInNlY3Rpb24iLCJzcGFuIiwic3Ryb25nIiwiZW0iLCJibG9ja3F1b3RlIiwic3VtbWFyeSIsImlmcmFtZSIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwiZGwiLCJkdCIsImRkIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsImFwcGx5IiwiY3JlYXRlJDIiLCJjcmVhdGVfc3ZnJDAiLCJoZXJlIiwiZXJyb3Jfc291cmNlXzAwNCIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInZhbGlkYXRlIiwidCIsImVxdWFsIiwidDEiLCJ0MiIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJzZXhwX29mX3QkMSIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJzZXhwX29mX3QiLCJ2XzAwNiIsInNsb3RzX3Blcl90dXBsZV8wMDIiLCJhcmdfMDAzIiwiYm5kc18wMDEiLCJzZXhwX29mX3QkMCIsIm9mX3R1cGxlXzAwNyIsIm9mX3ZhcmlhbnRfMDA4Iiwic2xvdHNfcGVyX3R1cGxlIiwibiIsInNleHBfb2ZfdDEiLCJvZl9hMF8wMDkiLCJzZXhwX29mX3QyIiwib2ZfYTBfMDEwIiwib2ZfYTFfMDExIiwic2V4cF9vZl90MyIsIm9mX2EwXzAxMiIsIm9mX2ExXzAxMyIsIm9mX2EyXzAxNCIsInNleHBfb2ZfdDQiLCJvZl9hMF8wMTUiLCJvZl9hMV8wMTYiLCJvZl9hMl8wMTciLCJvZl9hM18wMTgiLCJzZXhwX29mX3Q1Iiwib2ZfYTBfMDE5Iiwib2ZfYTFfMDIwIiwib2ZfYTJfMDIxIiwib2ZfYTNfMDIyIiwib2ZfYTRfMDIzIiwic2V4cF9vZl90NiIsIm9mX2EwXzAyNCIsIm9mX2ExXzAyNSIsIm9mX2EyXzAyNiIsIm9mX2EzXzAyNyIsIm9mX2E0XzAyOCIsIm9mX2E1XzAyOSIsInNleHBfb2ZfdDciLCJvZl9hMF8wMzAiLCJvZl9hMV8wMzEiLCJvZl9hMl8wMzIiLCJvZl9hM18wMzMiLCJvZl9hNF8wMzQiLCJvZl9hNV8wMzUiLCJvZl9hNl8wMzYiLCJzZXhwX29mX3Q4Iiwib2ZfYTBfMDM3Iiwib2ZfYTFfMDM4Iiwib2ZfYTJfMDM5Iiwib2ZfYTNfMDQwIiwib2ZfYTRfMDQxIiwib2ZfYTVfMDQyIiwib2ZfYTZfMDQzIiwib2ZfYTdfMDQ0Iiwic2V4cF9vZl90OSIsIm9mX2EwXzA0NSIsIm9mX2ExXzA0NiIsIm9mX2EyXzA0NyIsIm9mX2EzXzA0OCIsIm9mX2E0XzA0OSIsIm9mX2E1XzA1MCIsIm9mX2E2XzA1MSIsIm9mX2E3XzA1MiIsIm9mX2E4XzA1MyIsInNleHBfb2ZfdDEwIiwib2ZfYTBfMDU0Iiwib2ZfYTFfMDU1Iiwib2ZfYTJfMDU2Iiwib2ZfYTNfMDU3Iiwib2ZfYTRfMDU4Iiwib2ZfYTVfMDU5Iiwib2ZfYTZfMDYwIiwib2ZfYTdfMDYxIiwib2ZfYThfMDYyIiwib2ZfYTlfMDYzIiwic2V4cF9vZl90MTEiLCJvZl9hMF8wNjQiLCJvZl9hMV8wNjUiLCJvZl9hMl8wNjYiLCJvZl9hM18wNjciLCJvZl9hNF8wNjgiLCJvZl9hNV8wNjkiLCJvZl9hNl8wNzAiLCJvZl9hN18wNzEiLCJvZl9hOF8wNzIiLCJvZl9hOV8wNzMiLCJvZl9hMTBfMDc0Iiwic2V4cF9vZl90MTIiLCJvZl9hMF8wNzUiLCJvZl9hMV8wNzYiLCJvZl9hMl8wNzciLCJvZl9hM18wNzgiLCJvZl9hNF8wNzkiLCJvZl9hNV8wODAiLCJvZl9hNl8wODEiLCJvZl9hN18wODIiLCJvZl9hOF8wODMiLCJvZl9hOV8wODQiLCJvZl9hMTBfMDg1Iiwib2ZfYTExXzA4NiIsInNleHBfb2ZfdDEzIiwib2ZfYTBfMDg3Iiwib2ZfYTFfMDg4Iiwib2ZfYTJfMDg5Iiwib2ZfYTNfMDkwIiwib2ZfYTRfMDkxIiwib2ZfYTVfMDkyIiwib2ZfYTZfMDkzIiwib2ZfYTdfMDk0Iiwib2ZfYThfMDk1Iiwib2ZfYTlfMDk2Iiwib2ZfYTEwXzA5NyIsIm9mX2ExMV8wOTgiLCJvZl9hMTJfMDk5Iiwic2V4cF9vZl90MTQiLCJvZl9hMF8xMDAiLCJvZl9hMV8xMDEiLCJvZl9hMl8xMDIiLCJvZl9hM18xMDMiLCJvZl9hNF8xMDQiLCJvZl9hNV8xMDUiLCJvZl9hNl8xMDYiLCJvZl9hN18xMDciLCJvZl9hOF8xMDgiLCJvZl9hOV8xMDkiLCJvZl9hMTBfMTEwIiwib2ZfYTExXzExMSIsIm9mX2ExMl8xMTIiLCJvZl9hMTNfMTEzIiwibmFtZSQxIiwicHJlZml4IiwibmFtZSQwIiwibmFtZSIsImZhaWx3aXRocyIsImFyY2hfc2l4dHlmb3VyIiwibnVtX2JpdHMiLCJtYXhfdmFsdWUiLCJ0b19zdHJpbmciLCJzcHJpbnRmIiwiY29uY2F0IiwibCIsIm9mX3Nsb3RzXzAwNyIsIm9mX2FfMDA4IiwiZXF1YWwiLCJtYXhfc2xvdCIsImFycmF5X2luZGV4X251bV9iaXRzIiwibWFza2VkX3R1cGxlX2lkX251bV9iaXRzIiwibWF4X2FycmF5X2xlbmd0aCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInQiLCJwaHlzX2VxdWFsIiwicGh5c19jb21wYXJlIiwibnVsbCQwIiwiaXNfbnVsbCIsImNyZWF0ZSIsImhlYWRlcl9pbmRleCIsInR1cGxlX2lkIiwiaGVhZGVyX2luZGV4X21hc2siLCJpbnZhcmlhbnQiLCJzbG90X2luZGV4Iiwic2xvdCIsImZpcnN0X3Nsb3RfaW5kZXgiLCJ0b19pbnQ2MyIsIm9mX2ludDYzIiwibnVsbCQxIiwiaXNfbnVsbCQwIiwiaXNfZnJlZSIsImlzX3VzZWQiLCJ0dXBsZV9pZCQwIiwibWV0YWRhdGFfaW5kZXgiLCJzdGFydF9vZl90dXBsZXNfaW5kZXgiLCJtYXhfY2FwYWNpdHkiLCJkdW1teSIsInIiLCJmaXJzdF9mcmVlIiwic2V0X2ZpcnN0X2ZyZWUiLCJ2IiwibmV4dF9pZCIsInNldF9uZXh0X2lkIiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImNhcGFjaXR5IiwiZHVtbXkkMCIsImZpcnN0X2ZyZWUkMCIsIm5leHRfaWQkMCIsImxlbmd0aCQwIiwiY2FwYWNpdHkkMCIsInNsb3RzX3Blcl90dXBsZSQwIiwiaW5pdCIsImFycmF5X2luZGljZXNfcGVyX3R1cGxlIiwiYXJyYXlfbGVuZ3RoIiwidHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCIsInR1cGxlX251bSIsInR1cGxlX251bV90b19maXJzdF9zbG90X2luZGV4IiwibWV0YWRhdGEiLCJsZW5ndGgkMSIsInNleHBfb2ZfdCQzIiwic2V4cF9vZl90eSIsImNhcGFjaXR5XzAxOCIsInNsb3RzX3Blcl90dXBsZV8wMTYiLCJsZW5ndGhfMDIwIiwibmV4dF9pZF8wMjIiLCJmaXJzdF9mcmVlXzAyNCIsImR1bW15XzAyNiIsImFyZ18wMjciLCJibmRzXzAxNSIsImFyZ18wMjUiLCJibmRzXzAxNSQwIiwiYXJnXzAyMyIsImJuZHNfMDE1JDEiLCJhcmdfMDIxIiwiYm5kc18wMTUkMiIsImFyZ18wMTkiLCJibmRzXzAxNSQzIiwiYXJnXzAxNyIsImJuZHNfMDE1JDQiLCJ1bnNhZmVfaGVhZGVyIiwidW5zYWZlX3NldF9oZWFkZXIiLCJoZWFkZXIiLCJoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIiwidW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSIsInBvaW50ZXIiLCJ0JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMSIsImlkIiwic2hvdWxkX2VxdWFsIiwieF8wMDkiLCJleG4kMCIsImV4biIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsImFyZzBfMDI4IiwicmVzMF8wMzEiLCJyZXMxXzAzMiIsInJlczJfMDMzIiwiaW52YXJpYW50JDAiLCJpbnZhcmlhbnRfYSIsImZyZWUiLCJoZWFkZXJfaW5kZXgkMCIsInR1cGxlX251bSQwIiwiZmlyc3Rfc2xvdCIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiY2FwYWNpdHkkMSIsImlzX2Z1bGwiLCJ1bnNhZmVfYWRkX3RvX2ZyZWVfbGlzdCIsIm5leHRfZnJlZV9oZWFkZXJfaW5kZXgiLCJzZXRfbWV0YWRhdGEiLCJjcmVhdGVfYXJyYXkiLCJ1bnNhZmVfaW5pdF9yYW5nZSIsImxvIiwiaGkiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJ0cyIsImFyZyIsInNleHBfb2ZfYXJnIiwic2V4cF9vZl9yZXN1bHQiLCJmIiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ2XzA2OCIsInhfMDY5IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2Iiwib2Zfc2xvdHNfMDc3IiwiaXNfdmFsaWRfMDc5IiwicG9pbnRlcl8wODEiLCJhcmdfMDgyIiwiYm5kc18wNzgiLCJhcmdfMDgwIiwiYm5kc18wNzgkMCIsImZpZWxkMCIsImZpZWxkMSIsInR5cGVuYW1lIiwiaGFzX2RvdWJsZV9hcnJheV90YWciLCJmaWVsZHMiLCJpc192YWxpZCIsImZvbGxvdyIsInhfMDgzIiwiaW52YWxpZGF0ZSIsInBvcyQ5IiwicG9zJDgiLCJwb3MkNyIsInBvcyQ2IiwiYXJnXzA4NyIsInBvcyQ1IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsImVycm9yX3NvdXJjZV8wMTkiLCJtYXhfdGltZSIsIm1pbl90aW1lIiwibWF4X251bV9iaXRzIiwibWluX3ZhbHVlIiwiaW52YXJpYW50IiwidCIsIm9mX2ludCIsImkiLCJzeW1ib2wkMiIsInQxIiwidDIiLCJzeW1ib2wkMyIsInBvdzIiLCJzZXhwX29mX3QkMCIsInhfMDA3IiwibnVtX2JpdHNfaW50ZXJuYWwiLCJudW1fYml0cyIsImludmFyaWFudCQwIiwibnVtX2tleV9iaXRzIiwidF9vZl9zZXhwJDAiLCJ4XzAwNiIsImNyZWF0ZV9leG4iLCJ4XzAwOCIsImV4dGVuZF90b19tYXhfbnVtX2JpdHMiLCJiaXRzIiwiaW50cyIsImxldmVsX2JpdHNfZGVmYXVsdCIsImNvbXBhcmUiLCJlcXVhbCQwIiwieF8wMTIiLCJ4XzAxMyIsInRvX3NleHBhYmxlIiwic2V4cF9vZl90JDEiLCJhYm91dF9vbmVfbWljcm9zZWNvbmQiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJsZXZlbF9iaXRzJDAiLCJ2IiwidF9vZl9zZXhwJDIiLCJ4XzAyMSIsImNhcGFjaXR5IiwiYWxhcm1fcHJlY2lzaW9uIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wMjciLCJsZXZlbF9iaXRzXzAyNSIsImFsYXJtX3ByZWNpc2lvbl8wMjMiLCJibmRzXzAyMiIsInZfMDI4IiwiYXJnXzAzMCIsImJuZF8wMjkiLCJibmRzXzAyMiQwIiwiYXJnXzAyNiIsImJuZHNfMDIyJDEiLCJhcmdfMDI0IiwiYm5kc18wMjIkMiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJsb29wIiwicmVtYWluaW5nIiwidCQwIiwiYiIsIm1pY3Jvc2Vjb25kX3ByZWNpc2lvbiIsImR1cmF0aW9ucyIsIm51bV9iaXRzX2FjY3VtIiwibGV2ZWxfbnVtX2JpdHMiLCJudW1fYml0c19hY2N1bSQwIiwiZHVyYXRpb24iLCJjb21wYXJlJDAiLCJzZXhwX29mX3QkNCIsImNyZWF0ZSQwIiwiY3JlYXRlJDEiLCJiaXRzX3Blcl9zbG90IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsInNjYWxlX2ludCIsInNleHBfb2ZfdCQ3Iiwib2ZfaW50NjMkMCIsInRvX2ludDYzJDAiLCJhZGQiLCJhZGRfY2xhbXBfdG9fbWF4Iiwic3ViIiwiZGlmZiIsInNleHBfb2ZfcG9vbF9zbG90cyIsIm9mX2FfMDMzIiwieF8wMzQiLCJzZXhwX29mX3QkOCIsIm9mX2FfMDM1IiwieF8wMzYiLCJudWxsJDAiLCJudWxsJDEiLCJpc19udWxsIiwiZnJlZSIsImtleSIsInAiLCJhdCIsInZhbHVlIiwibGV2ZWxfaW5kZXgiLCJwcmV2Iiwic2V0X3ByZXYiLCJ4IiwibmV4dCIsInNldF9uZXh0IiwiaXNfdmFsaWQiLCJncm93IiwiaXNfZnVsbCIsIm9mX2V4dGVybmFsX2V4biIsInBvb2wiLCJsaW5rIiwiaXRlciIsImZpcnN0IiwiZiIsImN1cnJlbnQiLCJjb250aW51ZSQwIiwibmV4dCQwIiwic2xvdHMiLCJtYXhfYWxsb3dlZF9rZXkiLCJzZXRfbWF4X2FsbG93ZWRfa2V5IiwibWluX2FsbG93ZWRfa2V5Iiwic2V0X21pbl9hbGxvd2VkX2tleSIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrIiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDQ0IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA1OCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDU2Iiwia2V5c19wZXJfc2xvdF8wNTQiLCJiaXRzX3Blcl9zbG90XzA1MiIsInNsb3RzX21hc2tfMDUwIiwiYml0c18wNDgiLCJpbmRleF8wNDYiLCJsZW5ndGhfMDYwIiwibWluX2FsbG93ZWRfa2V5XzA2MiIsIm1heF9hbGxvd2VkX2tleV8wNjQiLCJzbG90c18wNjYiLCJhcmdfMDY3IiwiYm5kc18wNDUiLCJhcmdfMDY1IiwiYm5kc18wNDUkMCIsImFyZ18wNjMiLCJibmRzXzA0NSQxIiwiYXJnXzA2MSIsImJuZHNfMDQ1JDIiLCJhcmdfMDU5IiwiYm5kc18wNDUkMyIsImFyZ18wNTciLCJibmRzXzA0NSQ0IiwiYXJnXzA1NSIsImJuZHNfMDQ1JDUiLCJhcmdfMDUzIiwiYm5kc18wNDUkNiIsImFyZ18wNTEiLCJibmRzXzA0NSQ3IiwiYXJnXzA0OSIsImJuZHNfMDQ1JDgiLCJhcmdfMDQ3IiwiYm5kc18wNDUkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsImNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkiLCJsZXZlbHMiLCJlbHRfa2V5X2xvd2VyX2JvdW5kIiwic2V0X2VsdF9rZXlfbG93ZXJfYm91bmQiLCJtaW5fZWx0Iiwic2V0X21pbl9lbHQiLCJzZXRfcG9vbCIsImxlbmd0aCQxIiwic2V0X2xlbmd0aCQwIiwibGV2ZWxzJDAiLCJlbHRfa2V5X2xvd2VyX2JvdW5kJDAiLCJtaW5fZWx0JDAiLCJwb29sJDAiLCJsZW5ndGgkMiIsImlzX2VtcHR5IiwibnVtX2xldmVscyIsIm1pbl9hbGxvd2VkX2tleSQxIiwibWF4X2FsbG93ZWRfa2V5JDEiLCJpbnRlcm5hbF9pdGVyIiwibGV2ZWwiLCJzbG90X2luZGV4IiwiZWx0IiwiY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rIiwibWluX2VsdCQxIiwibWluX2VsdF9hbHJlYWR5X2ZvdW5kIiwibWluX2tleV9hbHJlYWR5X2ZvdW5kIiwibnVtX2xldmVscyQwIiwic2xvdF9taW5fa2V5Iiwic2xvdCQwIiwiY3VycmVudF9rZXkiLCJhZGRfZWx0IiwieF8xMTQiLCJ0b19hZGQiLCJrZXkkMCIsImVsdHNfMDk0IiwibWF4X2FsbG93ZWRfa2V5XzA5MiIsIm1pbl9hbGxvd2VkX2tleV8wOTAiLCJhcmdfMDk1Iiwia2V5XzA4NCIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJyJDAiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTQ2Iiwic3RhcnRfMTQ0IiwiY29uZmlnXzE0MiIsIm5vd18xNDgiLCJhbGFybSIsImFsYXJtc18xNTAiLCJhcmdfMTUxIiwidmFsdWVfMTM4IiwiYXRfMTM2IiwiYXJnXzEzOSIsImJuZHNfMTM1IiwiYXJnXzEzNyIsImJuZHNfMTM1JDAiLCJibmRzXzE0MSIsImFyZ18xNDkiLCJibmRzXzE0MSQwIiwiYXJnXzE0NyIsImJuZHNfMTQxJDEiLCJhcmdfMTQ1IiwiYm5kc18xNDEkMiIsImFyZ18xNDMiLCJibmRzXzE0MSQzIiwibGVuZ3RoJDMiLCJpc19lbXB0eSQwIiwicG9vbCQxIiwiaW50ZXJ2YWxfbnVtX2ludGVybmFsIiwidGltZSIsImludGVydmFsX251bV91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW0kMCIsImludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQiLCJpbnRlcnZhbF9udW1fc3RhcnQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2ludGVybmFsIiwibmV4dF9hbGFybV9maXJlc19hdCIsIm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIiwieF8xNTMiLCJjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtIiwibWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIiwiaW50ZXJ2YWxfc3RhcnQiLCJpbnZhcmlhbnQkMiIsImludmFyaWFudF9hIiwieF8xNTUiLCJjaGVjayIsInByaW9yaXR5X3F1ZXVlX2Z1biIsInhfMTA5Iiwib2ZfYV8wNjgiLCJsZW5ndGhfMDcwIiwicG9vbF8wNzIiLCJtaW5fZWx0XzA3NCIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDc2IiwibGV2ZWxzXzA3OCIsImFyZ18wNzkiLCJibmRzXzA2OSIsImFyZ18wNzciLCJibmRzXzA2OSQwIiwiYXJnXzA3NSIsImJuZHNfMDY5JDEiLCJhcmdfMDczIiwiYm5kc18wNjkkMiIsImFyZ18wNzEiLCJibmRzXzA2OSQzIiwibGV2ZWxzX2Z1biIsInhfMDk4Iiwic2xvdHNfZnVuIiwieF8wNDEiLCJuIiwibWF4X2FsbG93ZWRfa2V5X2Z1biIsImV4cGVjdCIsImNvbXBhcmF0b3IiLCJhXzEwNyIsImJfMTA4IiwibWluX2FsbG93ZWRfa2V5X2Z1biIsImdvdCIsInNleHBpZmllciIsImFfMTA1IiwiYl8xMDYiLCJsZW5ndGhfZnVuIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5X2Z1biIsImV0YSIsImFfMTAzIiwiYl8xMDQiLCJtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrX2Z1biIsImtleXNfcGVyX3Nsb3RfZnVuIiwiYV8xMDEiLCJiXzEwMiIsImJpdHNfcGVyX3Nsb3RfZnVuIiwiZXhwZWN0JDAiLCJzbG90c19tYXNrX2Z1biIsImFfMDk5IiwiYl8xMDAiLCJiaXRzX2Z1biIsImluZGV4X2Z1biIsInByZXZfbGV2ZWwiLCJnb3QkMCIsImFfMTEwIiwiYl8xMTEiLCJjb21wYXJhdG9yJDAiLCJhXzExMiIsImJfMTEzIiwiZWx0X2tleV9sb3dlcl9ib3VuZF9mdW4iLCJtaW5fZWx0X2Z1biIsInBvb2xfZnVuIiwibWF4X2FsbG93ZWRfYWxhcm1fdGltZV9mdW4iLCJhXzE2MiIsImJfMTYzIiwibm93X2ludGVydmFsX251bV9zdGFydF9mdW4iLCJhXzE2MCIsImJfMTYxIiwibm93X2Z1biIsIm1heF9pbnRlcnZhbF9udW1fZnVuIiwiYV8xNTYiLCJiXzE1NyIsInNleHBpZmllciQwIiwiYV8xNTgiLCJiXzE1OSIsInN0YXJ0X2Z1biIsImNvbmZpZ19mdW4iLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJ0JDEiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTY0IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTY1IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE2NiIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMDYiLCJlcnJvcl9zb3VyY2VfMDE1IiwiZXJyb3Jfc291cmNlXzAyOCIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDM2IiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzAzOSIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInhfMDA3IiwiaG93X3RvX2R1bXAiLCJkdW1wX2lmX2RlbGF5ZWRfYnkiLCJzZXhwX29mX3dhdGNoIiwiaG93X3RvX2R1bXBfMDExIiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOSIsImFyZ18wMTIiLCJibmRzXzAwOCIsImFyZ18wMTAiLCJibmRzXzAwOCQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzAxNyIsInRhZ18wMTgiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfb2ZfdCQ3IiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsInRfb2Zfc2V4cCQ4Iiwic2V4cF8wMjkiLCJzZXhwX29mX3QkOCIsImVxdWFsJDAiLCJ4XzAzMCIsInhfMDMxIiwidF9vZl9zZXhwJDkiLCJzZXhwXzAzNyIsInNleHBfb2ZfdCQ5IiwidF9vZl9zZXhwJDEwIiwic2V4cF9vZl90JDEwIiwidGltaW5nX3doZWVsX2NvbmZpZyIsInIiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyIsIm1heF9udW1fdGhyZWFkcyIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0IiwiZmlsZV9kZXNjcl93YXRjaGVyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIiLCJjaGVja19pbnZhcmlhbnRzIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfIiwidGltaW5nX3doZWVsX2NvbmZpZyQwIiwidiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eSQwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQwIiwicmVjb3JkX2JhY2t0cmFjZXMkMCIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQwIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQkMCIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQwIiwibWF4X251bV90aHJlYWRzJDAiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMCIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMCIsImVwb2xsX21heF9yZWFkeV9ldmVudHMkMCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMCIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQwIiwiY2hlY2tfaW52YXJpYW50cyQwIiwiYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfJDAiLCJzZXhwX29mX3QkMTEiLCJ0aW1pbmdfd2hlZWxfY29uZmlnXzEwMiIsInRocmVhZF9wb29sX2NwdV9hZmZpbml0eV8wOTgiLCJyZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXzAiLCJyZWNvcmRfYmFja3RyYWNlc18wOTAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDg2IiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXRfMDgyIiwibWF4X251bV90aHJlYWRzXzA3NCIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc18wNzAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dF8wNjYiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNTgiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5XzA1NCIsImNoZWNrX2ludmFyaWFudHNfMDQ2IiwiYm5kc18wNDEiLCJ2XzEwMyIsImFyZ18xMDUiLCJibmRfMTA0IiwiYm5kc18wNDEkMCIsInZfMDk5IiwiYXJnXzEwMSIsImJuZF8xMDAiLCJibmRzXzA0MSQxIiwidl8wOTUiLCJhcmdfMDk3IiwiYm5kXzA5NiIsImJuZHNfMDQxJDIiLCJ2XzA5MSIsImFyZ18wOTMiLCJibmRfMDkyIiwiYm5kc18wNDEkMyIsInZfMDg3IiwiYXJnXzA4OSIsImJuZF8wODgiLCJibmRzXzA0MSQ0Iiwidl8wODMiLCJhcmdfMDg1IiwiYm5kXzA4NCIsImJuZHNfMDQxJDUiLCJ2XzA3OSIsImFyZ18wODEiLCJibmRfMDgwIiwiYm5kc18wNDEkNiIsInZfMDc1IiwiYXJnXzA3NyIsImJuZF8wNzYiLCJibmRzXzA0MSQ3Iiwidl8wNzEiLCJhcmdfMDczIiwiYm5kXzA3MiIsImJuZHNfMDQxJDgiLCJ2XzA2NyIsImFyZ18wNjkiLCJibmRfMDY4IiwiYm5kc18wNDEkOSIsInZfMDYzIiwiYXJnXzA2NSIsImJuZF8wNjQiLCJibmRzXzA0MSQxMCIsInZfMDU5IiwiYXJnXzA2MSIsImJuZF8wNjAiLCJibmRzXzA0MSQxMSIsInZfMDU1IiwiYXJnXzA1NyIsImJuZF8wNTYiLCJibmRzXzA0MSQxMiIsInZfMDUxIiwiYXJnXzA1MyIsImJuZF8wNTIiLCJibmRzXzA0MSQxMyIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MSQxNCIsInZfMDQzIiwiYXJnXzA0NSIsImJuZF8wNDQiLCJibmRzXzA0MSQxNSIsImNyZWF0ZSQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2ZvIiwid29yZF9zaXplIiwibGV2ZWxfYml0cyQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJkZWZhdWx0JDEiLCJleGFtcGxlIiwidXNhZ2UiLCJmaWVsZCIsInRvX3NleHAiLCJkZXNjcmlwdGlvbiIsImFjIiwiZCIsImZpZWxkcyIsInhfMTA2IiwibmFtZTIiLCJuYW1lMSIsIm5hbWUiLCJzdHJpbmciLCJ4XzA0MCIsInQiLCJ0JDAiLCJleG4iLCJ0JDEiLCJ0JDIiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMSIsInRhZyIsImwiLCJhbGwiLCJkZWJ1ZyIsImNsb2NrIiwiZmQiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMSIsImZpbmFsaXplcnMiLCJpbnRlcnJ1cHRvciIsIm1vbml0b3IiLCJtb25pdG9yX3NlbmRfZXhuIiwicGFyYWxsZWwiLCJyZWFkZXIiLCJzY2hlZHVsZXIiLCJzaHV0ZG93biIsInRocmVhZF9wb29sIiwidGhyZWFkX3NhZmUiLCJ3cml0ZXIiLCJzeW1ib2wiLCJhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja18kMSIsImNoZWNrX2ludmFyaWFudHMkMSIsImRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RociQxIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyQxIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5JDEiLCJmaWxlX2Rlc2NyX3dhdGNoZXIkMiIsIm1heF9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMkMSIsIm1heF9udW1fdGhyZWFkcyQxIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dCQxIiwicmVjb3JkX2JhY2t0cmFjZXMkMSIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMSIsInRpbWluZ193aGVlbF9jb25maWckMSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXkkMSIsInQkMyIsInRhc2tfaWQiLCJub25lIiwiY3JlYXRlIiwiaXNfbm9uZSIsIngiLCJpc19zb21lIiwiZ2V0X3NvbWVfZXhuIiwiZ2V0IiwidCIsInVuc2FmZV9nZXQiLCJzZXRfc29tZSIsInYiLCJzZXRfbm9uZSIsInNldCIsInYkMCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ4XzAwMiIsImVtcHR5IiwiaXNfZW1wdHkiLCJlcXVhbCIsImR1bW15X2lkIiwiY2hpbGQiLCJ0IiwicG9vbCIsInNpYmxpbmciLCJwcmV2IiwiaWQiLCJzZXRfY2hpbGQiLCJ2Iiwic2V0X3NpYmxpbmciLCJzZXRfcHJldiIsInZhbHVlX2V4biIsImFsbG9jYXRlIiwidmFsdWUiLCJmcmVlIiwiZGlzY29ubmVjdF9zaWJsaW5nIiwic2libGluZyQwIiwiZGlzY29ubmVjdF9jaGlsZCIsImNoaWxkJDAiLCJkZXRhY2giLCJwcmV2JDAiLCJyZWxhdGlvbl90b19wcmV2IiwiY3JlYXRlIiwiY2FwYWNpdHkiLCJpbnZhcmlhbnQiLCJ0b192aXNpdCQyIiwidG9fdmlzaXQiLCJ0b192aXNpdCQwIiwibWF5YmVfcGFyZW50X3ZhbHVlIiwiZXhwZWN0ZWRfcHJldiIsIm5vZGUiLCJ0aGlzX3ZhbHVlIiwidGhpc192YWx1ZSQwIiwicGFyZW50X3ZhbHVlIiwidG9fdmlzaXQkMSIsImNyZWF0ZSQwIiwiY21wIiwibWluX3NpemUiLCJjb3B5IiwicG9vbCQwIiwic3RhcnQiLCJudW1fb2ZfYWxsb2NhdGVkX25vZGVzIiwiY29weV9ub2RlIiwibmV3X25vZGUiLCJuZXdfc3RhcnQiLCJyZXN0Iiwibm9kZV90b19jb3B5Iiwic2xvdCIsIm5vZGVfdG9fdXBkYXRlIiwibWVyZ2UiLCJyb290MSIsInJvb3QyIiwiYWRkX2NoaWxkIiwibmV3X2NoaWxkIiwiY3VycmVudF9jaGlsZCIsInYxIiwidjIiLCJ0b3BfZXhuIiwidG9wIiwiYWRkX25vZGUiLCJ0JDEiLCJ0JDAiLCJhZGQiLCJtYXhfc3RhY2tfZGVwdGgiLCJsb29wIiwiZGVwdGgiLCJoZWFkJDAiLCJuZXh0MSQwIiwibmV4dDIkMCIsImFjYyIsImhlYWQiLCJuZXh0MSIsIm5leHQyIiwiYWNjJDAiLCJoIiwieHMiLCJoZWFwIiwicmVtb3ZlX25vbl9lbXB0eSIsIm1lcmdlZF9jaGlsZHJlbiIsIm5ld19yb290IiwicmVtb3ZlX3RvcCIsImNsZWFyIiwibm9kZSQwIiwicG9wX2V4biIsInIiLCJwb3AiLCJwb3BfaWYiLCJmIiwiZm9sZCIsImluaXQiLCJpdGVyIiwibGVuZ3RoIiwiaXRlciQwIiwibGVuZ3RoJDAiLCJpc19lbXB0eSQwIiwibWVtIiwiZXhpc3RzIiwiZm9yX2FsbCIsImNvdW50Iiwic3VtIiwiZmluZCIsImZpbmRfbWFwIiwidG9fbGlzdCIsInRvX2FycmF5IiwibWluX2VsdCIsIm1heF9lbHQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJvZl9hcnJheSIsImFyciIsIm9mX2xpc3QiLCJsIiwic2V4cF9vZl90IiwiaXNfbm9kZV92YWxpZCIsInZhbHVlX2V4biQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX2EiLCJ4XzAwMSIsInJlbW92ZSIsInRva2VuIiwiYWRkX3JlbW92YWJsZSIsInVwZGF0ZSIsImZpbmRfZWx0Iiwibm9kZXMkMiIsIm5vZGVzIiwibm9kZXMkMCIsIm5vZGVzJDEiLCJ1cGRhdGUkMCIsImVsdCIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsImJ1ZiIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl90IiwiYmluX2EiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiZXF1YWwiLCJhXzAwMyIsImJfMDA0IiwidF9vZl9zZXhwIiwib2ZfYV8wMDUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJwb3MiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA4IiwiYl8wMDkiLCJlcXVhbCQwIiwiYV8wMTIiLCJiXzAxMyIsImFtX3J1bm5pbmdfdGVzdCIsIm5vbmUiLCJzb21lIiwieCIsInVuc2FmZV92YWx1ZSIsImlzX25vbmUiLCJ0IiwiaXNfc29tZSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwidmFsdWVfZXhuIiwidG9fb3B0aW9uIiwib2Zfb3B0aW9uIiwiYSIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwibmV4dF8wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImNyZWF0ZSIsInVudXNlZF9lbHRzIiwiciIsInNldF91bnVzZWRfZWx0cyIsInYiLCJiYWNrIiwic2V0X2JhY2siLCJmcm9udCIsInNldF9mcm9udCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJ1bnVzZWRfZWx0cyQwIiwiYmFjayQwIiwiZnJvbnQkMCIsImxlbmd0aCQwIiwic2V4cF9vZl90JDAiLCJvZl9hXzAwNyIsImxlbmd0aF8wMDkiLCJmcm9udF8wMTEiLCJiYWNrXzAxMyIsInVudXNlZF9lbHRzXzAxNSIsImFyZ18wMTYiLCJibmRzXzAwOCIsImFyZ18wMTQiLCJibmRzXzAwOCQwIiwiYXJnXzAxMiIsImJuZHNfMDA4JDEiLCJhcmdfMDEwIiwiYm5kc18wMDgkMiIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidCIsInhfMDE3IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsImNyZWF0ZSQwIiwiZW5xdWV1ZSIsImEiLCJuZXdfYmFjayIsImRlcXVldWVfZXhuIiwieF8wMTgiLCJjbGVhcl9pbnRlcm5hbF9wb29sIiwiYWZ0ZXIiLCJ0Iiwic3BhbiIsInJlc3VsdCIsImxvZyIsImFyZzJfMDAzIiwiYXJnM18wMDQiLCJzZXhwX29mX2EiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInJlczJfMDA3IiwicmVzM18wMDgiLCJsb2dfc3RyaW5nIiwibWVzc2FnZSIsImNvbmNhdCIsImVwcmludCIsImVwcmludF9zIiwiZXByaW50cyIsInByaW50X3MiLCJzZXhwIiwic2VjIiwiYWxsIiwic2V4cF9vZl90IiwidG9fcmVwciIsIm9mX3JlcHIiLCJuYW1lcyIsImRlYnVnIiwiZm9yd2FyZGluZyIsInIiLCJzZXRfZm9yd2FyZGluZyIsInYiLCJoYXNfc2Vlbl9lcnJvciIsInNldF9oYXNfc2Vlbl9lcnJvciIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzIiwic2V0X3RhaWxzX2Zvcl9hbGxfZXJyb3JzIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMiLCJuZXh0X2Vycm9yIiwic2V0X25leHRfZXJyb3IiLCJpZCIsImhlcmUiLCJuYW1lIiwiZm9yd2FyZGluZyQwIiwiaGFzX3NlZW5fZXJyb3IkMCIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzJDAiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyQwIiwibmV4dF9lcnJvciQwIiwiaWQkMCIsImhlcmUkMCIsIm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsIm5hbWVfZnVuIiwiaGVyZV9mdW4iLCJpZF9mdW4iLCJuZXh0X2Vycm9yX2Z1biIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2Z1biIsImhhc19zZWVuX2Vycm9yX2Z1biIsImZvcndhcmRpbmdfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwibmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwiaGVyZV9nZW4iLCJjb21waWxlX2FjYyQyIiwiaWRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsIm5leHRfZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJ0YWlsc19mb3JfYWxsX2Vycm9yc19nZW4iLCJjb21waWxlX2FjYyQ2IiwiaGFzX3NlZW5fZXJyb3JfZ2VuIiwiY29tcGlsZV9hY2MkNyIsImZvcndhcmRpbmdfZ2VuIiwiYWNjIiwiY3JlYXRlIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9ucyIsInQkMSIsImFjIiwiYWMkMCIsInQkMCIsInhfMDAxIiwibmV4dF9pZCIsImNyZWF0ZV93aXRoX3BhcmVudCIsImluZm8iLCJwYXJlbnQiLCJpIiwicyIsInMkMCIsInhfMDAyIiwicGFyZW50JDAiLCJtYWluIiwiYmFja3RyYWNlX2hpc3RvcnkiLCJsb2NhbF9zdG9yYWdlIiwicHJpb3JpdHkiLCJtb25pdG9yIiwiYmFja3RyYWNlX2hpc3RvcnkkMCIsImxvY2FsX3N0b3JhZ2UkMCIsInByaW9yaXR5JDAiLCJtb25pdG9yJDAiLCJtb25pdG9yX2Z1biIsInByaW9yaXR5X2Z1biIsImxvY2FsX3N0b3JhZ2VfZnVuIiwiYmFja3RyYWNlX2hpc3RvcnlfZnVuIiwibW9uaXRvcl9nZW4iLCJwcmlvcml0eV9nZW4iLCJsb2NhbF9zdG9yYWdlX2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5X2dlbiIsImJhY2t0cmFjZV9oaXN0b3J5XzAwOCIsImxvY2FsX3N0b3JhZ2VfMDA2IiwicHJpb3JpdHlfMDA0IiwibW9uaXRvcl8wMDIiLCJhcmdfMDA5IiwiYm5kc18wMDEiLCJhcmdfMDA3IiwiYm5kc18wMDEkMCIsImFyZ18wMDUiLCJibmRzXzAwMSQxIiwiYXJnXzAwMyIsImJuZHNfMDAxJDIiLCJpbnZhcmlhbnQiLCJjcmVhdGVfbGlrZSIsImZpbmRfbG9jYWwiLCJrZXkiLCJ3aXRoX2xvY2FsIiwiZGF0YSIsInJlY29yZF9iYWNrdHJhY2UiLCJkdW1teV9lIiwiZHVtbXlfZiIsImR1bW15X2EiLCJzZXhwX29mX3Nsb3RzIiwib2ZfZXZlbnQiLCJldmVudCIsIm9mX2pvYiIsImpvYiIsImlzX2V2ZW50IiwiaXNfam9iIiwia2luZCIsInByb2plY3QiLCJqb2Jfb3JfZXZlbnQiLCJldmVudHMiLCJzZXRfZXhlY3V0aW9uX2NvbnRleHQiLCJleGVjdXRpb25fY29udGV4dCIsImxlbmd0aCIsInNldF9sZW5ndGgiLCJmcm9udCIsInNldF9mcm9udCIsIm1hc2siLCJzZXRfbWFzayIsImpvYnMiLCJzZXRfam9icyIsImpvYnNfbGVmdF90aGlzX2N5Y2xlIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIiwibnVtX2pvYnNfcnVuIiwic2V0X251bV9qb2JzX3J1biIsImxlbmd0aCQwIiwiZnJvbnQkMCIsIm1hc2skMCIsImpvYnMkMCIsImpvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJudW1fam9ic19ydW4kMCIsIm51bV9qb2JzX3J1bl8wMDIiLCJqb2JzX2xlZnRfdGhpc19jeWNsZV8wMDQiLCJqb2JzXzAwNiIsIm1hc2tfMDA4IiwiZnJvbnRfMDEwIiwibGVuZ3RoXzAxMiIsImJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXzAxNCIsImFyZ18wMTUiLCJhcmdfMDEzIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJibmRzXzAwMSQ0IiwiYm5kc18wMDEkNSIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUiLCJjbGVhciIsInNldCIsImEiLCJvZmZzZXQkMCIsImVucXVldWUiLCJvbGRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJvbGRfam9icyIsIm9sZF9mcm9udCIsImxlbjEiLCJsZW4yIiwibmV3X2pvYnMiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm4iLCJjYW5fcnVuX2Ffam9iIiwicnVuX2pvYiIsInNjaGVkdWxlciIsInJ1bl9leHRlcm5hbF9qb2JzIiwiZXh0ZXJuYWxfam9icyIsInJ1bl9qb2JzIiwidGhpc19qb2IiLCJleG4kMCIsImV4biIsImJhY2t0cmFjZSIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwibmFtZXMkMCIsImlzX251bGwiLCJkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWciLCJjb21wYXJlJDAiLCJlcXVhbCQwIiwic2V4cF9vZl90JDEiLCJ0cmFuc2l0aW9uX2lzX2FsbG93ZWQiLCJmcm9tIiwidG8iLCJzZXhwX29mX2V2ZW50IiwiYXQiLCJpbnRlcnZhbCIsInN0YXR1cyIsIm1hdGNoIiwibm9uZSIsInNvbWUiLCJpc19ub25lIiwiaXNfc29tZSIsImZpcnN0X3NvbWUiLCJ0MSIsInQyIiwidW5zYWZlX3ZhbHVlIiwic2V4cF9vZl90JDIiLCJwcHhfb3B0aW9uYWxfZV8wIiwidmFsdWUkMCIsImRlZmF1bHQkMCIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInNldF9zdGF0dXMiLCJwcmV2X2ZpcmVkIiwic2V0X3ByZXZfZmlyZWQiLCJuZXh0X2ZpcmVkIiwic2V0X25leHRfZmlyZWQiLCJzZXRfaW50ZXJ2YWwiLCJjYWxsYmFjayIsImF0JDAiLCJzZXRfYXQiLCJhbGFybSIsInNldF9hbGFybSIsInN0YXR1cyQwIiwicHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQwIiwiaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsYmFjayQwIiwiYXQkMSIsImFsYXJtJDAiLCJhbGFybV9mdW4iLCJhdF9mdW4iLCJjYWxsYmFja19mdW4iLCJleGVjdXRpb25fY29udGV4dF9mdW4iLCJpbnRlcnZhbF9mdW4iLCJuZXh0X2ZpcmVkX2Z1biIsInByZXZfZmlyZWRfZnVuIiwic3RhdHVzX2Z1biIsImFsYXJtX2dlbiIsImF0X2dlbiIsImNhbGxiYWNrX2dlbiIsImV4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImludGVydmFsX2dlbiIsIm5leHRfZmlyZWRfZ2VuIiwicHJldl9maXJlZF9nZW4iLCJzdGF0dXNfZ2VuIiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiZXhwZWN0IiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJ4XzAxNiIsInBweF9vcHRpb25hbF9lXzAkMCIsImFfMDE3IiwiYl8wMTgiLCJnb3QkMCIsInNleHBpZmllciQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsImludmFyaWFudCQwIiwic2V4cF9vZl90JDUiLCJ4XzAyMSIsImludmFyaWFudCQxIiwiaW52YXJpYW50X3dpdGhfam9icyQwIiwic2V4cF9vZl90JDYiLCJ4XzAyMiIsImlkJDEiLCJpc193YWxsX2Nsb2NrJDEiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwicmVhZF9vbmx5IiwiZmlyZSIsImNvbnRpbnVlJDAiLCJuZXh0JDAiLCJjb250aW51ZSQxIiwicHB4X29wdGlvbmFsX2VfMCQxIiwibmV4dCIsInBweF9vcHRpb25hbF9lXzAkMiIsInByZXYiLCJhbGFybV9wcmVjaXNpb24iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0IiwibmV4dF9hbGFybV9ydW5zX2F0Iiwibm93JDAiLCJ0aW1pbmdfd2hlZWxfbm93JDAiLCJzY2hlZHVsZSIsInJlbW92ZV9mcm9tX2ZpcmVkIiwibmV3X3N0YXR1cyIsInNleHBfb2ZfZXZlbnQkMCIsInN0YXR1cyQxIiwicHJldl9maXJlZCQxIiwic2V0X3ByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMSIsInNldF9uZXh0X2ZpcmVkJDAiLCJpbnRlcnZhbCQxIiwic2V0X2ludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQxIiwiY2FsbGJhY2skMSIsInNldF9hdCQwIiwiYWxhcm0kMSIsInNldF9hbGFybSQwIiwic2V4cF9vZl90JDciLCJpbnZhcmlhbnQkMiIsInNldF9zdGF0dXMkMSIsInNldF9zdGF0dXNfaWYkMCIsInNjaGVkdWxlZF9hdCIsImNyZWF0ZV9pbnRlcm5hbCIsImFkZCQwIiwiY3JlYXRlX2FuZF9hZGQiLCJhdCQyIiwiYWZ0ZXIkMCIsInJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wciIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXRfaW50ZXJ2YWxzIiwic2V4cF9vZl90JDgiLCJhYm9ydCIsImFib3J0X2lmX3Bvc3NpYmxlIiwiYWJvcnRfZXhuIiwicmVhc29uIiwiY3JlYXRlJDEiLCJpc19zY2hlZHVsZWQiLCJzY2hlZHVsZV9hdF9pbnRlcm5hbCIsInNjaGVkdWxlX2F0Iiwic2NoZWR1bGVfYWZ0ZXIiLCJzY2hlZHVsZV9hdF9pbnRlcnZhbHMiLCJyZXNjaGVkdWxlX2F0IiwicmVzY2hlZHVsZV9hZnRlciIsInJ1bl9hZnRlciIsInJ1bl9hdCIsInJ1bl9hdF9pbnRlcnZhbHMiLCJydW5fZmlyZWRfZXZlbnRzIiwic2VuZF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0Iiwic2VuZF9leG4kMCIsImFueV9maXJlZF9ldmVudHNfdG9fcnVuIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X2FsYXJtc19ieSIsImJ5IiwiYWR2YW5jZV9ieV9tYXhfYWxhcm1zX2luX2VhY2hfIiwiYWR2YW5jZV9kaXJlY3RseSIsImFkdmFuY2VfZGlyZWN0bHlfYnkiLCJkdXJhdGlvbl9vZiIsInN0YXJ0IiwiZHVyYXRpb24iLCJtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3ciLCJoYXNfZXZlbnRzX3RvX3J1biIsImNyZWF0ZV93aXRoX2NlbGwiLCJjZWxsIiwiY3JlYXRlX2Z1bGwiLCJleGVjIiwiZXhlYyQwIiwiZXhlY19mdW4iLCJleGVjX2dlbiIsInNleHBfb2ZfdCQwIiwiZXhlY3V0aW9uX2NvbnRleHRfMDAyIiwicmVjb3JkX2JhY2t0cmFjZXMiLCJzZXRfcmVjb3JkX2JhY2t0cmFjZXMiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV8iLCJjaGVja19pbnZhcmlhbnRzIiwic2V0X2NoZWNrX2ludmFyaWFudHMiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInNldF95aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiIsInlpZWxkJDAiLCJzZXRfeWllbGQiLCJldmVudF9hZGRlZF9ob29rIiwic2V0X2V2ZW50X2FkZGVkX2hvb2siLCJqb2JfcXVldWVkX2hvb2siLCJzZXRfam9iX3F1ZXVlZF9ob29rIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2siLCJzZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2giLCJ0aW1lX3NvdXJjZSIsInNldF90aW1lX3NvdXJjZSIsInRvdGFsX2N5Y2xlX3RpbWUiLCJzZXRfdG90YWxfY3ljbGVfdGltZSIsImxhc3RfY3ljbGVfbnVtX2pvYnMiLCJzZXRfbGFzdF9jeWNsZV9udW1fam9icyIsImxhc3RfY3ljbGVfdGltZSIsInNldF9sYXN0X2N5Y2xlX3RpbWUiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInNldF9ydW5fZXZlcnlfY3ljbGVfZW5kIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Iiwic2V0X3J1bl9ldmVyeV9jeWNsZV9zdGFydCIsImluX2N5Y2xlIiwic2V0X2luX2N5Y2xlIiwiY3ljbGVfc3RhcnQiLCJzZXRfY3ljbGVfc3RhcnQiLCJjeWNsZV9jb3VudCIsInNldF9jeWNsZV9jb3VudCIsInVuY2F1Z2h0X2V4bl91bndyYXBwZWQiLCJzZXRfdW5jYXVnaHRfZXhuIiwic2V0X2N1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0Iiwic2V0X21haW5fZXhlY3V0aW9uX2NvbnRleHQiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIiwibG93X3ByaW9yaXR5X2pvYnMiLCJub3JtYWxfcHJpb3JpdHlfam9icyIsImpvYl9wb29sIiwic2V0X2pvYl9wb29sIiwiY2hlY2tfYWNjZXNzIiwic2V0X2NoZWNrX2FjY2VzcyIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsImNoZWNrX2ludmFyaWFudHMkMCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluJDAiLCJ5aWVsZCQxIiwiZXZlbnRfYWRkZWRfaG9vayQwIiwiam9iX3F1ZXVlZF9ob29rJDAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayQwIiwiZXh0ZXJuYWxfam9icyQwIiwidGltZV9zb3VyY2UkMCIsInRvdGFsX2N5Y2xlX3RpbWUkMCIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMCIsImxhc3RfY3ljbGVfdGltZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZCQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlJDAiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnQkMCIsImluX2N5Y2xlJDAiLCJjeWNsZV9zdGFydCQwIiwiY3ljbGVfY291bnQkMCIsInVuY2F1Z2h0X2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMCIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHQkMCIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMkMCIsImxvd19wcmlvcml0eV9qb2JzJDAiLCJub3JtYWxfcHJpb3JpdHlfam9icyQwIiwiam9iX3Bvb2wkMCIsImNoZWNrX2FjY2VzcyQwIiwiY2hlY2tfYWNjZXNzX2Z1biIsImpvYl9wb29sX2Z1biIsIm5vcm1hbF9wcmlvcml0eV9qb2JzX2Z1biIsImxvd19wcmlvcml0eV9qb2JzX2Z1biIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfZnVuIiwibWFpbl9leGVjdXRpb25fY29udGV4dF9mdW4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0X2Z1biIsInVuY2F1Z2h0X2V4bl9mdW4iLCJjeWNsZV9jb3VudF9mdW4iLCJjeWNsZV9zdGFydF9mdW4iLCJpbl9jeWNsZV9mdW4iLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2Z1IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9mdW4iLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2Z1biIsImxhc3RfY3ljbGVfdGltZV9mdW4iLCJsYXN0X2N5Y2xlX251bV9qb2JzX2Z1biIsInRvdGFsX2N5Y2xlX3RpbWVfZnVuIiwidGltZV9zb3VyY2VfZnVuIiwiZXh0ZXJuYWxfam9ic19mdW4iLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18iLCJqb2JfcXVldWVkX2hvb2tfZnVuIiwiZXZlbnRfYWRkZWRfaG9va19mdW4iLCJ5aWVsZF9mdW4iLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl9mdW4iLCJjaGVja19pbnZhcmlhbnRzX2Z1biIsInJlY29yZF9iYWNrdHJhY2VzX2Z1biIsImNoZWNrX2FjY2Vzc19nZW4iLCJqb2JfcG9vbF9nZW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19nZW4iLCJsb3dfcHJpb3JpdHlfam9ic19nZW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2dlbiIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9nZW4iLCJ1bmNhdWdodF9leG5fZ2VuIiwiY3ljbGVfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImN5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEwIiwiaW5fY3ljbGVfZ2VuIiwiY29tcGlsZV9hY2MkMTEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGVfZ2UiLCJjb21waWxlX2FjYyQxMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlX2dlbiIsImNvbXBpbGVfYWNjJDE1IiwibGFzdF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE2IiwibGFzdF9jeWNsZV9udW1fam9ic19nZW4iLCJjb21waWxlX2FjYyQxNyIsInRvdGFsX2N5Y2xlX3RpbWVfZ2VuIiwiY29tcGlsZV9hY2MkMTgiLCJ0aW1lX3NvdXJjZV9nZW4iLCJjb21waWxlX2FjYyQxOSIsImV4dGVybmFsX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMjAiLCJ0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va18kMCIsImNvbXBpbGVfYWNjJDIxIiwiam9iX3F1ZXVlZF9ob29rX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwiZXZlbnRfYWRkZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMyIsInlpZWxkX2dlbiIsImNvbXBpbGVfYWNjJDI0IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZ2VuIiwiY29tcGlsZV9hY2MkMjUiLCJjaGVja19pbnZhcmlhbnRzX2dlbiIsImNvbXBpbGVfYWNjJDI2IiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDEiLCJjb21waWxlX2FjYyQyNyIsInJlY29yZF9iYWNrdHJhY2VzX2dlbiIsImNyZWF0ZSQyIiwiY2hlY2tfYWNjZXNzXzAwNyIsImpvYl9wb29sXzAwOSIsInZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnNfMDE1IiwibG93X3ByaW9yaXR5X2pvYnNfMDEzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfMDExIiwibWFpbl9leGVjdXRpb25fY29udGV4dF8wMTciLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XzAxOSIsInVuY2F1Z2h0X2V4bl8wMjEiLCJjeWNsZV9jb3VudF8wMjciLCJjeWNsZV9zdGFydF8wMjkiLCJpbl9jeWNsZV8wMzEiLCJydW5fZXZlcnlfY3ljbGVfc3RhcnRfMDMzIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXzAzIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF8wMzciLCJydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlXzAzOSIsImxhc3RfY3ljbGVfdGltZV8wNDEiLCJsYXN0X2N5Y2xlX251bV9qb2JzXzA0MyIsInRvdGFsX2N5Y2xlX3RpbWVfMDQ1IiwidGltZV9zb3VyY2VfMDQ3IiwiZXh0ZXJuYWxfam9ic18wNDkiLCJqb2JfcXVldWVkX2hvb2tfMDUzIiwiZXZlbnRfYWRkZWRfaG9va18wNTUiLCJ5aWVsZF8wNTciLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbl8wNTkiLCJjaGVja19pbnZhcmlhbnRzXzA2MSIsInJlY29yZF9iYWNrdHJhY2VzXzA2NSIsImFyZ18wNjYiLCJibmRzXzAwNiIsImFyZ18wNjQiLCJibmRzXzAwNiQwIiwiYXJnXzA2MiIsImJuZHNfMDA2JDEiLCJhcmdfMDYwIiwiYm5kc18wMDYkMiIsImFyZ18wNTgiLCJibmRzXzAwNiQzIiwiYXJnXzA1NiIsImJuZHNfMDA2JDQiLCJhcmdfMDU0IiwiYm5kc18wMDYkNSIsImFyZ18wNTIiLCJibmRzXzAwNiQ2IiwiYXJnXzA1MCIsImJuZHNfMDA2JDciLCJhcmdfMDQ4IiwiYm5kc18wMDYkOCIsImFyZ18wNDYiLCJibmRzXzAwNiQ5IiwiYXJnXzA0NCIsImJuZHNfMDA2JDEwIiwiYXJnXzA0MiIsImJuZHNfMDA2JDExIiwiYXJnXzA0MCIsImJuZHNfMDA2JDEyIiwiYXJnXzAzOCIsImJuZHNfMDA2JDEzIiwiYXJnXzAzNiIsImJuZHNfMDA2JDE0IiwiYXJnXzAzNCIsImJuZHNfMDA2JDE1IiwiYXJnXzAzMiIsImJuZHNfMDA2JDE2IiwiYXJnXzAzMCIsImJuZHNfMDA2JDE3IiwiYXJnXzAyOCIsImJuZHNfMDA2JDE4IiwiYXJnXzAyMiIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYm5kc18wMDYkMTkiLCJhcmdfMDIwIiwiYm5kc18wMDYkMjAiLCJhcmdfMDE4IiwiYm5kc18wMDYkMjEiLCJhcmdfMDE2IiwiYm5kc18wMDYkMjIiLCJhcmdfMDE0IiwiYm5kc18wMDYkMjMiLCJhcmdfMDEyIiwiYm5kc18wMDYkMjQiLCJhcmdfMDEwIiwiYm5kc18wMDYkMjUiLCJhcmdfMDA4IiwiYm5kc18wMDYkMjYiLCJ1bmNhdWdodF9leG4kMCIsImFyZzFfMDY4IiwiYXJnMF8wNjciLCJyZXMwXzA2OSIsInJlczFfMDcwIiwibnVtX3BlbmRpbmdfam9icyIsImxhc3RfY3ljbGVfbnVtX2pvYnMkMSIsInVub3JkZXJlZF9pc19zdWJsaXN0IiwiZXF1YWwiLCJzbWFsbCIsImxhcmdlIiwibGFyZ2UkMCIsIngiLCJsJDAiLCJ5IiwibCIsImNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50IiwidGFibGUiLCJhcnJheSIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIiwidF9yZWYiLCJjaGVja19hY2Nlc3MkMSIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQkMSIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQxIiwidG1wX2NvbnRleHQiLCJvbGRfY29udGV4dCIsIndpdGhfZXhlY3V0aW9uX2NvbnRleHQiLCJjcmVhdGVfam9iIiwiZ290X3VuY2F1Z2h0X2V4biIsImFyZzFfMDcyIiwiYXJnMF8wNzEiLCJyZXMwXzA3MyIsInJlczFfMDc0Iiwic3RhcnRfY3ljbGUiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IiwiZSIsImUkMCIsInN0YWJpbGl6ZSIsImNyZWF0ZV90aW1lX3NvdXJjZSIsInRpbWluZ193aGVlbF9jb25maWciLCJ3YWxsX2Nsb2NrIiwic2V0X3ByZXYiLCJwYXJhbSIsInNldF9uZXh0IiwicnVuIiwiY3JlYXRlMiIsInJ1bjEiLCJleGVjdXRpb25fY29udGV4dDEiLCJydW4yIiwiZXhlY3V0aW9uX2NvbnRleHQyIiwic2NoZWR1bGVfam9icyIsImFkZCIsIm9mX2xpc3QiLCJmaXJzdCIsImwkMSIsImwkMiIsInJ1biQwIiwicHJldiQwIiwiYWNjJDAiLCJjZWxsX29mX2hhbmRsZXIiLCJpbmRpciIsInNxdWFzaCIsInQkMyIsInQkNCIsImluZGlyJDEiLCJ0JDUiLCJpbmRpciQwIiwidCQyIiwiYV9pbnZhcmlhbnQiLCJoYW5kbGVyIiwicGVlayIsInZhbHVlIiwiaWZfZW1wdHlfdGhlbl9mYWlsd2l0aCIsImlzX2VtcHR5IiwiaXNfZnVsbCIsImZpbGwiLCJyZW1vdmVfaGFuZGxlciIsIngkMCIsImFkZF9oYW5kbGVyIiwiaGFuZGxlciQxIiwiaGFuZGxlciQyIiwicnVuJDEiLCJoYW5kbGVyJDAiLCJoYXNfaGFuZGxlcnMiLCJ1cG9uIiwidXBvbiQwIiwiY29ubmVjdCIsImJpbmRfcmVzdWx0IiwiYmluZF9yaHMiLCJiaW5kX3Jlc3VsdCQwIiwiaXZhciIsImJpbmRfcmhzX2NvbnRlbnRzIiwiaXZhciQwIiwibGFzdDEiLCJsYXN0MiIsImhhbmRsZXIxIiwiZXhlY3V0aW9uX2NvbnRleHQyJDAiLCJydW4yJDAiLCJoYW5kbGVyMSQwIiwidiQwIiwib2ZfaXZhciIsImludmFyaWFudF9hIiwicmV0dXJuJDAiLCJpc19kZXRlcm1pbmVkIiwiYmluZCIsImgiLCJyZWFkIiwiZmlsbF9pZl9lbXB0eSIsInRvX2JpbmFibGUiLCJvZl9iaW5hYmxlIiwic2V4cF9vZl9ob3ciLCJ2XzAwMSIsIm5ldmVyIiwicmV0dXJuJDEiLCJyZXR1cm4kMiIsInJldHVybiQzIiwidW5pdCIsImJvdGgkMCIsImExIiwiYTIiLCJkb25fdF93YWl0X2ZvciIsImYyIiwiZjEiLCJwcm9jZXNzIiwicmVzdCIsImNob2ljZSIsImVuYWJsZWQiLCJjaG9pY2VzIiwidW5yZWdpc3RlcnMiLCJyZWFkeSIsImNob29zZV9yZXN1bHQiLCJjaG9pY2VzJDAiLCJjaG9pY2VzJDEiLCJnZW5lcmljX2Nob29zZSIsInVucmVnaXN0ZXJzJDAiLCJjaG9vc2UyIiwiZmEiLCJiIiwiZmIiLCJhX2hhbmRsZXIiLCJiX2hhbmRsZXIiLCJhdiIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsInhzIiwic2VxbWFwIiwiYnMiLCJkcyIsImFsbF91bml0IiwiZCIsIm9rIiwib2ZfYV8wMDUiLCJ4XzAwNiIsImFyZzBfMDAyIiwicmVzMF8wMDMiLCJ4XzAwNyIsImNvbGxlY3QiLCJpc19jbG9zZWQiLCJmaWxsX2V4biIsImNsb3NlX2V4biIsImNsb3NlX2lmX29wZW4iLCJleHRlbmQiLCJkZWZlcnJlZDAiLCJkZWZlcnJlZDEiLCJpbXBvcnQwIiwiZXJyb3IiLCJkZXRhY2giLCJkZXRhY2hfYW5kX2l0ZXJfZXJyb3JzIiwiaGFuZGxlcl9zdGF0ZV9yZWYiLCJydW5fZiIsImJhZ19lbHQiLCJpbm5lcl9leG4kMCIsImlubmVyX2V4biIsImRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSIsInRhaWwiLCJnZXRfbmV4dF9lcnJvciIsImRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IiLCJleHRyYWN0X2V4biIsImNvbHVtbiIsIm1vbml0b3IkMSIsIm5hbWUkMSIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlJDEiLCJyZXN0JDAiLCJyZXN0JDEiLCJ0MyIsInJlc3QkMiIsInJlc3QkMyIsInRyYWNlcyIsInJlc3QkNCIsInQxJDAiLCJyZXN0JDUiLCJ0MiQwIiwicmVzdCQ2IiwidDIkMSIsImJhY2t0cmFjZSQyIiwibGlzdF9pZl9ub3RfZW1wdHkiLCJtYXRjaCQyIiwibWF0Y2gkMyIsImV4dHJhY3RfZXhuJDAiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJ3aXRoaW5fY29udGV4dCIsImNvbnRleHQiLCJ3aXRoaW5fZ2VuIiwid2l0aGluIiwid2l0aGluX3YiLCJ3aXRoaW4kMCIsInNjaGVkdWxlX3dpdGhfZGF0YSIsIndvcmsiLCJ1cG9uX3dvcmtfZmlsbF9pIiwic2NoZWR1bGUkMCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0IiwicHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQkMCIsImNhbGxfYW5kX2ZpbGwiLCJzdHJlYW1faXRlciIsInN0cmVhbSIsImV4bnMiLCJmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm8iLCJyZXN1bHRfZmlsbGVyIiwiaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IiwidHJ5X3dpdGhfbG9nX2V4biIsInRyeV93aXRoIiwiZG9fZXh0cmFjdF9leG4iLCJoYW5kbGVfZXhuIiwicmVzIiwidHJ5X3dpdGhfb3JfZXJyb3IiLCJ0cnlfd2l0aF9qb2luX29yX2Vycm9yIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsImZyIiwiciQwIiwiZmluYWxseV9leG4iLCJoYW5kbGVfZXJyb3JzIiwiY2F0Y2hfc3RyZWFtIiwiY2F0Y2gkMCIsImNhdGNoX2Vycm9yIiwiZGVwdGgiLCJuJDAiLCJmaXJzdF9leG4iLCJsb29wJDAiLCJsb29wX25leHQiLCJsb29wX25leHQkMCIsImNsb3NlZCIsInVuZm9sZCIsImNvcHlfdG9fdGFpbCIsImFwcGVuZCIsImZpbHRlcl9kZXByZWNhdGVkIiwiZmlsdGVyX21hcF9kZXByZWNhdGVkIiwiZmlyc3RfbiIsImF2YWlsYWJsZV9ub3ciLCJzcGxpdCIsInN0b3AiLCJyZWFzb25fZm9yX3N0b3BwaW5nIiwicHJlZml4IiwiZmluaXNoIiwibyIsImZpbmQiLCJmb3VuZCIsInVuZ3JvdXAiLCJpbnRlcmxlYXZlIiwibnVtX29wZW4iLCJjbG9zZSIsIm91dGVyX2Nsb3NlZCIsInRha2VfdW50aWwiLCJ6IiwiaXRlcl9kdXJhYmx5IiwiaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQiLCJpdGVyX2R1cmFibHkkMCIsIm9mX2Z1biIsInNldF9pdmFyIiwiaGFzX2FueV93YWl0ZXJzIiwic2V0X2hhc19hbnlfd2FpdGVycyIsImhhc19hbnlfd2FpdGVycyQwIiwicmVwciIsIm9mX2FfMDAxIiwiaGFzX2FueV93YWl0ZXJzXzAwMyIsIml2YXJfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJicm9hZGNhc3QiLCJ3YWl0IiwiaGFzX2FueV93YWl0ZXJzJDEiLCJ4XzAwMyIsImJpbmRfdW5pdCIsIndhaXRfZm9yIiwicnVuX3F1ZXVlZF9hbGFybXMiLCJ3YWxrX2FsYXJtcyIsIm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCIsImFkdmFuY2VfdG8iLCJuZXh0X2FsYXJtX2ZpcmVzX2F0JDAiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsInNwYW5fdG9fdGltZSIsInJ1bl9hdF9pbnRlcm5hbCIsInRpbWUiLCJyZW1vdmVfYWxhcm0iLCJvZl9hXzAwNyIsIm9mX2hfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsImFyZzBfMDExIiwicmVzMF8wMTIiLCJzZXRfc2NoZWR1bGVkX2F0IiwibnVtX2ZpcmVzX3RvX3NraXAiLCJzZXRfbnVtX2ZpcmVzX3RvX3NraXAiLCJmaXJlZCIsInNjaGVkdWxlZF9hdCQwIiwibnVtX2ZpcmVzX3RvX3NraXAkMCIsImZpcmVkJDAiLCJvZl9hXzAxNSIsIm9mX2hfMDE2IiwiYWxhcm1fMDE4IiwiZmlyZWRfMDIyIiwibnVtX2ZpcmVzX3RvX3NraXBfMDI0Iiwic2NoZWR1bGVkX2F0XzAyNiIsInRpbWVfc291cmNlXzAyOCIsImFyZ18wMjkiLCJibmRzXzAxNyIsImFyZ18wMjciLCJibmRzXzAxNyQwIiwiYXJnXzAyNSIsImJuZHNfMDE3JDEiLCJhcmdfMDIzIiwiYm5kc18wMTckMiIsImFyZ18wMjEiLCJibmRzXzAxNyQzIiwiYXJnXzAxOSIsImJuZHNfMDE3JDQiLCJzZXhwX29mX3RfdW5pdCIsInhfMDMwIiwiZmlyZWQkMSIsImludmFyaWFudF9oIiwieF8wMzEiLCJzY2hlZHVsZWRfYXRfZnVuIiwiYV8wMzIiLCJiXzAzMyIsIm51bV9maXJlc190b19za2lwX2Z1biIsImZpcmVkX2Z1biIsIm9mX2FfMDM0Iiwib2ZfaF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJvZl9hXzA0NCIsIm9mX2hfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJ4XzA1MiIsImEkMCIsIm9mX2FfMDUzIiwib2ZfaF8wNTQiLCJhcmcwXzA1NSIsInJlczBfMDU2IiwiYXJnMF8wNTciLCJyZXMwXzA1OCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0IiwiaXNfaW5fdGltaW5nX3doZWVsIiwiYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlIiwicnVuX2F0JDAiLCJydW5fYWZ0ZXIkMCIsImF0X3RpbWVzIiwibmV4dF90aW1lIiwiYXRfdmFyeWluZ19pbnRlcnZhbHMiLCJjb21wdXRlX3NwYW4iLCJzdGFydCQwIiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsImFkdmFuY2VfZGlyZWN0bHlfaWZfcXVpZXNjZW50IiwiaXNfcXVlc2NlbnQiLCJ3aGVlbCIsIm5leHRfYWxhcm0iLCJoYXNfdXBjb21pbmdfZXZlbnQiLCJuZXh0X3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudF9leG4iLCJldmVudF9wcmVjaXNpb24iLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayIsImhhbmRsZSIsImFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayIsInJlbW92ZV9zaW5nbGVfY3ljbGVfaG9vayIsImFyciIsImciLCJpZHgiLCJhcnIkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJlbnF1ZXVlJDAiLCJxdWV1ZSIsInJ1bm5pbmciLCJleGVjX2N0eCIsInNlbWFwaG9yZSIsImFwcGx5IiwidF9mIiwiZGYiLCJkdiIsIm1heF9jb25jdXJyZW50X2pvYnMiLCJ3YWl0ZXIiLCJhYm9ydGVkIiwicGFyZW50X21vbml0b3IiLCJlcnIiLCJvZl90aHVuayIsInRodW5rIiwic3ltYm9sJDEiLCJkMSIsImQyIiwib2ZfYV8wMDIiLCJyZXMwXzAwNCIsImxlbmd0aF8wMDYiLCJibmRzXzAwNSIsImxpc3QiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwiY2xlYW5lZCQwIiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCQwIiwiY2FwYWNpdHlfYXZhaWxhYmxlJDAiLCJudW1fam9ic19ydW5uaW5nJDAiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnQkMCIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSQwIiwibWF4X2NvbmN1cnJlbnRfam9icyQwIiwib2ZfYV8wMTEiLCJqb2JzX3dhaXRpbmdfdG9fc3RhcnRfMDE5Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXzAxNyIsIm1heF9jb25jdXJyZW50X2pvYnNfMDE1IiwiY29udGludWVfb25fZXJyb3JfMDEzIiwibnVtX2pvYnNfcnVubmluZ18wMjEiLCJjYXBhY2l0eV9hdmFpbGFibGVfMDIzIiwiaXNfZGVhZF8wMjUiLCJjbGVhbnNfMDI3IiwibnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF8wMjkiLCJjbGVhbmVkXzAzMSIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJhcmdfMDI2IiwiYm5kc18wMTIkMiIsImFyZ18wMjQiLCJibmRzXzAxMiQzIiwiYm5kc18wMTIkNCIsIm91dGNvbWVfMDA5Iiwic3RhcnRfMDA2Iiwidl8wMDgiLCJibmRzXzAwNSQwIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2Zfa2luZF8wMzUiLCJ4XzAzNiIsIm51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQiLCJjbGVhbl9yZXNvdXJjZSIsImtpbGwiLCJhdF9raWxsIiwiY2xlYW5lZCQxIiwic3RhcnRfam9iIiwiam9iX3Jlc291cmNlIiwiam9iX3Jlc291cmNlcyIsImNyZWF0ZV93aXRoIiwib3V0Y29tZSIsImludGVybmFsX2pvYiIsImhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCIsImVucXVldWVfZXhjbHVzaXZlIiwiZG9uZSIsImZfcGxhY2Vob2xkZXIiLCJzbG90IiwibW9uYWRfc2VxdWVuY2VfaG93IiwiaG93IiwibW9uYWRfc2VxdWVuY2VfaG93MiIsInByaW9yX2pvYnNfZG9uZSIsImFsbF9kdW1teV9qb2JzX3J1bm5pbmciLCJkdW1teV9qb2JzX3J1bm5pbmciLCJjYXBhY2l0eV9hdmFpbGFibGUkMSIsInRocmVhZF9zYWZlX2VucXVldWVfam9iIiwiY3ljbGVfc3RhcnRfbnMiLCJjeWNsZV90aW1lc19ucyIsImN5Y2xlX3RpbWVzIiwiZXZlbnRfcHJlY2lzaW9uX25zIiwiYm9vbCIsImFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rJDAiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2skMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyQwIiwicmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSQwIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsInJpZ2h0XzAwNCIsImxlZnRfMDAzIiwidl8wMDYiLCJmb2xkaSIsInNlcW1hcGkiLCJpdGVyaSIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJmaWx0ZXJfbWFwaSIsImNvbmNhdF9tYXBpIiwiZmluZF9tYXBpIiwiYXV4IiwiZmluZGkiLCJlbHQiLCJleGlzdHNpIiwiZm9yX2FsbGkiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyIiwiY29uY2F0X21hcCIsImZpbmRfbWFwIiwiam9iX2NvdW50IiwiZ2VuX2NvbXB1dGF0aW9uIiwieXMiLCJ0bCIsImhkIiwiY2hhbmdlIiwib3B0IiwidXBkYXRlIiwiaXRlcl9rZXlzIiwiYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIiLCJhbGlzdCIsImZvbGRfcmlnaHQiLCJhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciIsImNvbXB1dGF0aW9uIiwiam9iX21hcCIsInNlcXVlbmNlIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInJlcmFpc2UiLCJnZW5lcmFsIiwiaGFzaGFibGUiLCJnZW5lcmFsJDAiLCJyZWN1cnNpdmUiLCJmX29uZXN0ZXAiLCJtZW1vaXplZCIsImNvbWJpbmUiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImUxIiwiZTIiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwib2tfZXhuIiwib2ZfZXhuIiwib2ZfZXhuX3Jlc3VsdCIsIm1zZyIsInNleHBfb2YiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsInVuaW1wbGVtZW50ZWQiLCJjb21iaW5lX2Vycm9ycyIsImNvbWJpbmVfZXJyb3JzX3VuaXQiLCJmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIiwiZmluZF9tYXBfb2siLCJjdXJyZW50X2Vycm9yIiwiZXJyb3JzJDAiLCJva191bml0IiwidHJ5X3dpdGgkMCIsInRyeV93aXRoX2pvaW4iLCJzdGF0ZSQwIiwiZm9sZF9tYXBpIiwibWFwaV9mIiwiZm9sZF9mIiwidGhyb3R0bGUiLCJjIiwiYyQxIiwiYyQwIiwiaSQwIiwiYWNjdW0iLCJtYXliZV92Iiwic2hvd19kZWJ1Z19tZXNzYWdlcyIsImNoZWNrX2ludmFyaWFudCIsInhfMDA0IiwidmFsdWVzX3JlYWQiLCJzZXRfdmFsdWVzX3JlYWQiLCJ2YWx1ZXNfcmVhZCQwIiwicGlwZV9pZF8wMDkiLCJ2YWx1ZXNfcmVhZF8wMTEiLCJibmRzXzAwOCIsInZfMDEzIiwiYm5kc18wMDgkMCIsImJuZHNfMDA4JDEiLCJ2YWx1ZXNfc2VudF9kb3duc3RyZWFtIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1Iiwid2hlbl9zZW50X2Rvd25zdHJlYW0iLCJjb25zdW1lciIsIndhbnRzIiwiY29uc3VtZXIkMCIsIndhbnRzJDAiLCJvZl9hXzAyOSIsImNvbnN1bWVyXzAzMyIsIndhbnRzXzAzMSIsImJuZHNfMDMwIiwiYXJnMF8wMTgiLCJyZXMwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJ2XzAyMCIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwidl8wMjMiLCJibmRzXzAzMCQwIiwiZmlsbF93aXRoX2VvZiIsImkkMSIsImZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQiLCJyZWFkeV8wMzkiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXzAzNyIsImJuZHNfMDM2IiwiYm5kc18wMzYkMCIsImNvbnN1bWVycyIsInNldF9jb25zdW1lcnMiLCJibG9ja2VkX3JlYWRzIiwiYmxvY2tlZF9mbHVzaGVzIiwicHVzaGJhY2siLCJzZXRfcHVzaGJhY2siLCJyZXNlcnZlZF9zcGFjZSIsInNldF9yZXNlcnZlZF9zcGFjZSIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJyZXNlcnZlZF9zcGFjZSQwIiwic2l6ZV9idWRnZXQkMCIsInNleHBfb2ZfcGlwZSIsIm9mX2FfMDQxIiwib2ZfcGhhbnRvbV8wNDIiLCJpZF8wNDQiLCJpbmZvXzA0NiIsImJ1ZmZlcl8wNTAiLCJzaXplX2J1ZGdldF8wNTIiLCJyZXNlcnZlZF9zcGFjZV8wNTQiLCJwdXNoYmFja18wNTYiLCJudW1fdmFsdWVzX3JlYWRfMDU4IiwicmVhZF9jbG9zZWRfMDY2IiwiY2xvc2VkXzA2NCIsImJsb2NrZWRfcmVhZHNfMDYyIiwiYmxvY2tlZF9mbHVzaGVzXzA2MCIsImNvbnN1bWVyc18wNjgiLCJ1cHN0cmVhbV9mbHVzaGVkc18wNzAiLCJhcmdfMDcxIiwiYm5kc18wNDMiLCJhcmdfMDY5IiwiYm5kc18wNDMkMCIsImFyZ18wNjciLCJibmRzXzA0MyQxIiwiYXJnXzA2NSIsImJuZHNfMDQzJDIiLCJhcmdfMDYzIiwiYm5kc18wNDMkMyIsImFyZ18wNjEiLCJibmRzXzA0MyQ0IiwiYXJnXzA1OSIsImJuZHNfMDQzJDUiLCJhcmdfMDU3IiwiYm5kc18wNDMkNiIsImFyZ18wNTUiLCJibmRzXzA0MyQ3IiwiYXJnXzA1MyIsImJuZHNfMDQzJDgiLCJhcmdfMDUxIiwiYm5kc18wNDMkOSIsInZfMDQ3IiwiYXJnXzA0OSIsImJuZF8wNDgiLCJibmRzXzA0MyQxMCIsImFyZ18wNDUiLCJibmRzXzA0MyQxMSIsImVmZmVjdGl2ZV9zaXplX2J1ZGdldCIsImhhc2giLCJpc19yZWFkX2Nsb3NlZCIsInB1c2hiYWNrJDEiLCJ1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIiwiZGVsdGEiLCJ4XzA3NSIsInhfMDM1IiwiaSQyIiwic2V4cF9vZl9waGFudG9tIiwib2ZfYV8wNzYiLCJ4XzA3NyIsInNleHBfb2ZfcGhhbnRvbSQwIiwib2ZfYV8wNzgiLCJ4XzA3OSIsImlkX3JlZiIsImluaXRpYWxfYnVmZmVyIiwidmFsaWRhdGVfc2l6ZV9idWRnZXQiLCJ1cGRhdGVfcHVzaGJhY2siLCJ4XzA4MCIsImNsb3NlX3JlYWQiLCJ4XzA4MSIsImZsdXNoIiwiY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjIiwidyIsImNyZWF0ZV9yZWFkZXIiLCJjbG9zZV9vbl9leGNlcHRpb24iLCJjcmVhdGVfd3JpdGVyIiwidmFsdWVzX3dlcmVfcmVhZCIsImZsdXNoJDAiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInJlc2VydmVfc3BhY2UiLCJkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZSIsInN0YXJ0X3dyaXRlIiwieF8wODMiLCJzaXplIiwieF8wODIiLCJmaW5pc2hfd3JpdGUiLCJibG9ja2VkX3JlYWQiLCJpdmFyJDEiLCJ0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIiwidHJhbnNmZXJfaW4iLCJ3cml0ZSIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2siLCJ3cml0ZSQwIiwid3JpdGVfd2hlbl9yZWFkeSIsIndyaXRlX2lmX29wZW4iLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4iLCJlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyIsInhfMDg1Iiwic3RhcnRfcmVhZCIsImxhYmVsIiwieF8wODYiLCJnZW5fcmVhZF9ub3ciLCJnZXRfbWF4X3F1ZXVlX2xlbmd0aCIsIm1heF9xdWV1ZV9sZW5ndGgkMCIsInJlYWRfbm93IiwicmVhZF9ub3ckMCIsInJlYWQkMCIsInJlYWRfZXhuIiwidmFsdWVzX2F2YWlsYWJsZSIsInJlYWRfY2hvaWNlIiwicmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4IiwicmVhZF9leGFjdGx5IiwibnVtX3ZhbHVlcyIsImFscmVhZHlfcmVhZCIsImRvd25zdHJlYW1fZmx1c2hlZCIsInVwc3RyZWFtX2ZsdXNoZWQiLCJhZGRfY29uc3VtZXIiLCJwaXBlX2lkIiwiY29uc3VtZXIkMSIsInVwc3RyZWFtIiwiZG93bnN0cmVhbSIsInVwc3RyZWFtX2ZsdXNoZWQkMCIsImFyZzBfMDg3IiwicmVzMF8wODgiLCJmb2xkX2dlbiIsImZsdXNoZWQiLCJmb2xkX3dpdGhvdXRfcHVzaGJhY2siLCJ3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciIsIml0ZXJfd2l0aG91dF9wdXNoYmFjayIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDAiLCJtYXhfaXRlcmF0aW9uc19wZXJfam9iJDEiLCJyZW1haW5pbmciLCJyZW1haW5pbmckMCIsImRyYWluIiwiZHJhaW5fYW5kX2NvdW50Iiwic3VtIiwicmVhZF9hbGwiLCJpbnB1dCIsInRvX3N0cmVhbV9kZXByZWNhdGVkIiwib2Zfc3RyZWFtX2RlcHJlY2F0ZWQiLCJ0cmFuc2ZlciIsIm5leHRfZGVmZXJyZWQiLCJjaGVja19jbG9zZWRfbG9vcF9uZXh0IiwidHJhbnNmZXJfZ2VuIiwib3V0cHV0IiwibGluayIsInVubGluayIsImlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvcyIsIm91dHB1dF9jbG9zZWQiLCJ0cmFuc2ZlciQwIiwidHJhbnNmZXJfaWQiLCJtYXBfZ2VuIiwiY29uY2F0X21hcF9saXN0IiwiZmlsdGVyX21hcCQwIiwiZm9sZGluZ19maWx0ZXJfbWFwIiwiZm9sZGluZ19maWx0ZXJfbWFwJDAiLCJmb2xkaW5nX21hcCIsImFjY3VtJDAiLCJvZl9xdWV1ZV9pbnRlcm5hbCIsIm9mX3F1ZXVlIiwiZW1wdHkiLCJzaW5nbGV0b24iLCJ3cml0ZXIiLCJyZWFkZXIiLCJvZl9zZXF1ZW5jZSIsInNlcXVlbmNlJDEiLCJzZXF1ZW5jZSQwIiwidG9fc2VxdWVuY2UiLCJpbnRlcmxlYXZlX3BpcGUiLCJpbnB1dHMiLCJvdXRwdXRfd3JpdGVyIiwibnVtX3BpcGVzX3JlbWFpbmluZyIsImRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyIsImhlYXAiLCJoYW5kbGVfcmVhZCIsImVvZl9vcl9vayIsInBvcF9oZWFwX2FuZF9sb29wIiwiaW5pdGlhbF9wdXNoIiwiY29uY2F0X3BpcGUiLCJmb3JrIiwicHVzaGJhY2tfdXNlcyIsIndyaXRlcjAiLCJyZWFkZXIwIiwid3JpdGVyMSIsInJlYWRlcjEiLCJzb21lX3JlYWRlcl93YXNfY2xvc2VkIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCQwIiwic3RpbGxfb3BlbiIsImZpbHRlcl9vcGVuIiwic3RpbGxfb3BlbiQwIiwic2V0X2luZm8iLCJ2YWx1ZV9hdmFpbGFibGUiLCJzZXRfdmFsdWVfYXZhaWxhYmxlIiwidGFrZW4iLCJjdXJyZW50X3ZhbHVlIiwidmFsdWVfYXZhaWxhYmxlJDAiLCJ0YWtlbiQwIiwiY3VycmVudF92YWx1ZSQwIiwidmFsdWVfYXZhaWxhYmxlJDEiLCJ4XzAxMCIsInRha2VuXzAwNiIsImN1cnJlbnRfdmFsdWVfMDA0IiwidmFsdWVfYXZhaWxhYmxlXzAwOCIsImJuZHNfMDAzIiwiYm5kc18wMDMkMCIsImJuZHNfMDAzJDEiLCJ2YWx1ZV9hdmFpbGFibGVfZnVuIiwiYV8wMTEiLCJiXzAxMiIsInRha2VuX2Z1biIsImN1cnJlbnRfdmFsdWVfZnVuIiwicGVla19leG4iLCJ4XzAxMyIsIm9mX2FfMDE0IiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3Iiwid3JpdGVfb25seSIsInRha2Vfbm9uZW1wdHkiLCJ0YWtlX25vd19leG4iLCJ0YWtlX25vdyIsInRha2UiLCJ1cGRhdGVfZXhuIiwidGFrZW4kMSIsInB1dCIsInBpcGVfd2hlbl9yZWFkeSIsInJlc3RfZXhuIiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sIiwic3ltYm9sJDAiLCJzZXhwX29mX3QiLCJyZXR1cm4kMCIsImJpbmQiLCJ0IiwiZiIsIm1hcCIsInNleHBfb2ZfdCQwIiwiY3JlYXRlIiwiZG9uX3Rfd2FpdF9mb3IiLCJpbnZhcmlhbnQiLCJpc19kZXRlcm1pbmVkIiwibmV2ZXIiLCJwZWVrIiwidW5pdCIsInZhbHVlX2V4biIsInVwb24iLCJib3RoIiwidDEiLCJ0MiIsInJlc3VsdCIsImExIiwiYTIiLCJvayIsImlnbm9yZV9tIiwiYW55IiwidHMiLCJ4IiwiYW55X3VuaXQiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwibG9vcCIsImZvbGRpIiwiaW5pdCIsImkiLCJiIiwieHMiLCJmb2xkIiwiYSIsInNlcW1hcGkiLCJicyIsImFsbCQwIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJpdGVyaSIsImhvdyIsIm1hcGkiLCJmaWx0ZXJpIiwiYm9vbHMiLCJhYyIsImZpbHRlcl9tYXBpIiwiY29uY2F0X21hcGkiLCJmaW5kX21hcGkiLCJ0bCIsImhkIiwic29tZSIsImZpbmRpIiwiZWx0IiwiZmluZCIsImV4aXN0c2kiLCJmb3JfYWxsaSIsIml0ZXIiLCJtYXAkMSIsImZpbHRlciIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJleGlzdHMiLCJmb3JfYWxsIiwibiIsImFsbF91bml0JDAiLCJjb21iaW5lIiwiZXJyIiwiZXJyb3IiLCJyIiwiZmFpbCIsImZhaWxmIiwiZm9ybWF0IiwibWFwX2Vycm9yIiwiam9pbiIsInN5bWJvbF9iaW5kIiwiYXBwbHkiLCJlMSIsImUyIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsIm9rX2V4biIsIm9mX2V4biIsImJhY2t0cmFjZSIsImV4biIsIm9mX2V4bl9yZXN1bHQiLCJtc2ciLCJ2Iiwic2V4cF9vZiIsImVycm9yX3MiLCJzZXhwIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidGFnIiwidGFnX3MiLCJ0YWdfc19sYXp5IiwidGFnX2FyZyIsIm1lc3NhZ2UiLCJzZXhwX29mX2EiLCJ1bmltcGxlbWVudGVkIiwiY29tYmluZV9lcnJvcnMiLCJsIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImVycm9ycyIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCIsImV4dHJhY3RfZXhuIiwicnVuJDAiLCJyZXN0IiwiaGVyZSIsIm5hbWUiLCJydW4iLCJ0cnlfd2l0aF9qb2luIiwibGlzdCIsImFjYyIsInN0YXRlJDAiLCJ1cG9uJDEiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwicG9zJDAiLCJwb3MiLCJhbGwiLCJzZXhwX29mX3QiLCJzZXhwX29mX3QkMCIsImNhbGxiYWNrIiwiciIsImNhbGxiYWNrJDAiLCJ2Iiwic2V4cF9vZl90JDEiLCJleHRyYWN0X2V4biIsInN1YnNjcmliZXJzX2luZGV4Iiwic3Vic2NyaWJlZF9mcm9tIiwib25fY2FsbGJhY2tfcmFpc2UiLCJtYXRjaCQxIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJyZXMiLCJoIiwiY2FsbGJhY2tzIiwic2V0X2NhbGxiYWNrcyIsInN1YnNjcmliZXJzIiwic2V0X3N1YnNjcmliZXJzIiwibnVtX3N1YnNjcmliZXJzIiwic2V0X251bV9zdWJzY3JpYmVycyIsImNhbGxiYWNrX2FyaXR5IiwiY2FsbGJhY2tzJDAiLCJzdWJzY3JpYmVycyQwIiwibnVtX3N1YnNjcmliZXJzJDAiLCJzZXhwX29mX2J1cyIsIm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93ciIsImNyZWF0ZWRfZnJvbSIsIm5hbWUiLCJzdGF0ZSIsIndyaXRlX2V2ZXJfY2FsbGVkIiwiaSIsIm1hdGNoIiwicmVhZF9vbmx5IiwidCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwieF8wMTEiLCJjaGVjayIsImYiLCJjYWxsYmFja3NfZnVuIiwic3Vic2NyaWJlcnNfZnVuIiwic3Vic2NyaWJlciIsInN1YnNjcmliZXIkMCIsInhfMDA1IiwiY2FsbGJhY2tfZnVuIiwibnVtX3N1YnNjcmliZXJzX2Z1biIsImlzX2Nsb3NlZCIsInNleHBfb2ZfdCQyIiwib2ZfY2FsbGJhY2tfMDEyIiwieF8wMTMiLCJpbnZhcmlhbnQkMCIsInNleHBfb2ZfdCQzIiwib2ZfY2FsbGJhY2tfMDE0IiwieF8wMTUiLCJpbnZhcmlhbnQkMSIsInN0YXJ0X3dyaXRlX2ZhaWxpbmciLCJ4XzAxNiIsInhfMDE3IiwiY2FwYWNpdHkiLCJtYXliZV9zaHJpbmtfY2FwYWNpdHkiLCJkZXNpcmVkX2NhcGFjaXR5IiwiY29weV9hbmRfc2hyaW5rIiwiYXJyYXkiLCJuZXdfYXJyYXkiLCJhZGRfc3Vic2NyaWJlciIsImF0X3N1YnNjcmliZXJzX2luZGV4IiwicmVtb3ZlX3N1YnNjcmliZXIiLCJ1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWIiLCJzdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyX2luZGV4IiwibGFzdF9zdWJzY3JpYmVyIiwidW5zdWJzY3JpYmUiLCJ0byIsInVuc3Vic2NyaWJlX2FsbCIsIm9uX2Nsb3NlIiwiZmluaXNoX3dyaXRlIiwiY2xvc2UiLCJjYWxsX29uX2NhbGxiYWNrX3JhaXNlIiwiZXJyb3IiLCJleG4kMCIsImV4biIsImNhbGxiYWNrX3JhaXNlZCIsImJhY2t0cmFjZSQwIiwiYmFja3RyYWNlIiwidW5zYWZlX2dldF9jYWxsYmFjayIsImEiLCJ3cml0ZSIsImExIiwibGVuIiwibGFzdF92YWx1ZSIsIndyaXRlX2xvY2FsIiwid3JpdGUyIiwiYTIiLCJ3cml0ZTMiLCJhMyIsIndyaXRlNCIsImE0Iiwid3JpdGU1IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCJjcmVhdGVfZXhuIiwiY2FuX3N1YnNjcmliZSIsInN1YnNjcmliZV9leG4iLCJ4XzAxOSIsImJ1c19pZCQwIiwiYnVzX2lkIiwiY2FwYWNpdHkkMCIsIm5ld19jYXBhY2l0eSIsImNvcHlfYW5kX2RvdWJsZSIsImFyZzEkMCIsImFyZzEkMSIsImFyZzIkMCIsImFyZzEkMiIsImFyZzIkMSIsImFyZzMkMCIsImFyZzEkMyIsImFyZzIkMiIsImFyZzMkMSIsImFyZzQkMCIsIml0ZXJfZXhuIiwieF8wMjAiLCJzZXhwX29mX3QkNCIsImZvbGRfZXhuIiwiZm9sZF9hcml0eSIsImluaXQiLCJ4XzAzMCIsImE1IiwiYXNzZXJ0X25vX2FsbG9jYXRpb24iLCJidXNfciIsInN0YXJ0aW5nX21pbm9yX3dvcmRzIiwic3RhcnRpbmdfbWFqb3Jfd29yZHMiLCJlbmRpbmdfbWlub3Jfd29yZHMiLCJlbmRpbmdfbWFqb3Jfd29yZHMiLCJnb3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMzEiLCJiXzAzMiIsImdvdCQwIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJhXzAzMyIsImJfMDM0IiwiY3JlYXRlIiwiYXJpdHkiLCJidXMxIiwiYnVzMiIsImJ1czMiLCJidXM0IiwiYnVzNSIsImR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbiIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJlIiwiY29ubiIsIm9uX2V2ZW50IiwiYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0IiwiY3VycmVudF9jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsImlzX2Nsb3NlZCQwIiwiY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0Iiwic2V4cF9vZl90JDEiLCJwYXJhbSIsImNvbm5fMDIzIiwibmV4dF9jb25uZWN0X3Jlc3VsdF8wMjYiLCJkb25fdF9yZWNvbm5lY3RfMDM2IiwiY2xvc2VfZmluaXNoZWRfMDM0IiwiY2xvc2Vfc3RhcnRlZF8wMzIiLCJldmVudF9idXNfMDMwIiwiZXZlbnRfaGFuZGxlcl8wMjgiLCJhcmdfMDQxIiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYXJnXzAxNCIsImJuZHNfMDEwIiwiYXJnXzAxMiIsImJuZHNfMDEwJDAiLCJhcmdfMDI5IiwiYm5kc18wMTYkNSIsImFyZ18wMjciLCJibmRzXzAxNiQ2IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiZXZlbnRfYnVzIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwicmFuZG9tX3N0YXRlIiwidGltZV9zb3VyY2UiLCJldmVudF9oYW5kbGVyIiwiZGVmYXVsdF9yZXRyeV9kZWxheSIsIm5vbl9yYW5kb21pemVkX2RlbGF5IiwicmV0cnlfZGVsYXlfc3BhbiIsInJhbmRvbV9zdGF0ZSQwIiwic3BhbiIsInNwYW4kMCIsImRpc3RhbmNlIiwid2FpdCIsInJldHJ5X2RlbGF5IiwicHJldmlvdXNfYWRkcmVzcyIsInByZXZpb3VzX2Vycm9yIiwiYWRkciIsInByZXZpb3VzX2FkZHJlc3MkMCIsInNhbWVfYXNfcHJldmlvdXNfYWRkcmVzcyIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJzYW1lX2FzX3ByZXZpb3VzX2Vycm9yIiwiYWxsIiwiZXJyb3Jfc291cmNlXzAwNSIsInJldGlyZWRfa3JiX3dvcmQiLCJjb21wYXJlIiwidF9vZl9zZXhwIiwic2V4cF8wMDYiLCJzZXhwX29mX3QiLCJncm91cCIsIm1hZ2ljX3dvcmQiLCJnZW5fbWFnaWNfbnVtYmVyIiwid29yZCIsImFjYyIsImMiLCJtYWdpY19udW1iZXIiLCJ0IiwicCIsImJ5X21hZ2ljX251bWJlciIsImFsbF9tYWdpY19udW1iZXJzX2luY2x1ZGluZ19yZSIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJtYXhfc3VwcG9ydGVkX3ZlcnNpb24iLCJvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl8iLCJudW0iLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJrbm93bl9wcm90b2NvbF9tYWdpY19udW1iZXJzIiwiY3JlYXRlX2V4biIsInByb3RvY29sIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwiYWRkaXRpb25hbF9tYWdpY19udW1iZXJzIiwicHJvdG9jb2xfbWFnaWNfbnVtYmVyIiwicmF3X3ZlcnNpb25fbGlzdCIsImdldF9wcm90b2NvbCIsInZlcnNpb25zIiwicHJvdG9jb2xzIiwibmVnb3RpYXRlIiwiYWxsb3dfbGVnYWN5X3BlZXIiLCJ1cyIsInBlZXIiLCJ1c192ZXJzaW9ucyIsInVzX3Byb3RvY29sIiwicGVlcl92ZXJzaW9ucyIsInBlZXJfcHJvdG9jb2wiLCJ2ZXJzaW9uIiwieCIsIm1hdGNoZXNfbWFnaWNfcHJlZml4IiwiY29udGFpbnNfbWFnaWNfcHJlZml4IiwiZiIsImFueV9tYWdpY19wcmVmaXgiLCJncm91cCQwIiwiYmluX3NpemVfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRlcl90JDAiLCJhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGUkMCIsImJvdW5kZWRfbGlzdF9iaW5fc2l6ZSIsImJpbl9zaGFwZV90IiwiYmluX3QiLCJiaW5fc2l6ZV90IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYnVmIiwicG9zX3JlZiIsInZuYXQwIiwib2ZfaW50X2V4biIsIm9mX3dyaXRlciIsIndyaXRlIiwic2l6ZSIsIndyaXRlJDAiLCJwb3MiLCJhIiwibGVuIiwicG9zJDAiLCJzaXplJDAiLCJvZl90eXBlX2NsYXNzIiwiYmluX2EiLCJ0ZXN0IiwicyIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ192ZXJzaW9uIiwid3JpdGVyX3dpdGhfbGVuZ3RoIiwid2l0aF9sZW5ndGhfdmVyc2lvbiIsInBvdyIsIngiLCJkZXNjcmlwdGlvbnMiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZ3JvdXAiLCJ2MiIsInYxIiwidmludCIsInZfbmFtZSIsInZfdmVyc2lvbiIsImVxdWFsIiwiYV8wMDEiLCJiXzAwMiIsImNvbXBhcmUiLCJhXzAwMyIsImJfMDA0IiwibiIsImhhc2hfZm9sZF90IiwiaHN2IiwiYXJnIiwiaHN2JDAiLCJoYXNoIiwidF9vZl9zZXhwIiwieF8wMDciLCJ2ZXJzaW9uIiwibmFtZSIsInNleHBfb2ZfdCIsInZlcnNpb25fMDExIiwibmFtZV8wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsInN1bW1hcml6ZSIsInRzIiwic3VtbWFyeSIsImJpbmQiLCJ0IiwiZiIsImJpbmRfZGVmZXJyZWQiLCJtYXBfZGVmZXJyZWQiLCJsaWZ0X2RlZmVycmVkIiwiZXJyJDAiLCJlcnIiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsInY1Iiwic2l6ZSQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQwIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQxIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDIiLCJ2X21ldGFkYXRhIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDkyIiwibWV0YWRhdGFfMDkwIiwiaWRfMDg4IiwidmVyc2lvbl8wODYiLCJ0YWdfMDg0IiwiYXJnXzA5MyIsImJuZHNfMDgzIiwiYXJnXzA5MSIsImJuZHNfMDgzJDAiLCJhcmdfMDg5IiwiYm5kc18wODMkMSIsImFyZ18wODciLCJibmRzXzA4MyQyIiwiYXJnXzA4NSIsImJuZHNfMDgzJDMiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsInRvX3YxIiwiZGF0YSIsImlkIiwidGFnIiwib2ZfdjEiLCJtZXRhZGF0YSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDEiLCJvZl9hXzA5NCIsImRhdGFfMDk4IiwiaWRfMDk2IiwiYXJnXzA5OSIsImJuZHNfMDk1IiwiYXJnXzA5NyIsImJuZHNfMDk1JDAiLCJiaW5fcmVhZF90JDkiLCJiaW5fcmVhZF90JDEwIiwiYmluX3JlYWRlcl90JDQiLCJncm91cCQ1IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQyIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDUiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkNiIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDIiLCJiaW5fbmVlZHNfbGVuZ3RoJDIiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3JlYWRfbmF0MF90IiwiYmluX3JlYWRfbmF0MF90JDAiLCJiaW5fcmVhZGVyX25hdDBfdCIsImJpbl9zaXplX25hdDBfdCIsImJpbl93cml0ZV9uYXQwX3QiLCJiaW5fd3JpdGVyX25hdDBfdCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfdCQyIiwicmVzcG9uc2UiLCJlcnJvciIsImJpbl9zaXplX3QkMiIsInNpemVfb2ZfcmVzcG9uc2UiLCJzaXplX29mX2Vycm9yIiwiYmluX3dyaXRlX3QkMiIsIndyaXRlX3Jlc3BvbnNlIiwid3JpdGVfZXJyb3IiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl93cml0ZXJfcmVzcG9uc2UiLCJiaW5fd3JpdGVyX2Vycm9yIiwiYmluX3JlYWRfdCQxMyIsIm9mX3Jlc3BvbnNlIiwib2ZfZXJyb3IiLCJiaW5fcmVhZF90JDE0Iiwidl91bnVzZWRfcXVlcnlfaWQiLCJ2X2luaXRpYWwiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkZXJfcmVzcG9uc2UiLCJiaW5fcmVhZGVyX2Vycm9yIiwiYmluX3QkMiIsImJpbl9yZXNwb25zZSIsImJpbl9lcnJvciIsInNleHBfb2ZfdCQyIiwib2ZfcmVzcG9uc2VfMTAwIiwib2ZfZXJyb3JfMTAxIiwiaW5pdGlhbF8xMDUiLCJ1bnVzZWRfcXVlcnlfaWRfMTAzIiwiYXJnXzEwNiIsImJuZHNfMTAyIiwiYXJnXzEwNCIsImJuZHNfMTAyJDAiLCJncm91cCQ3IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQzIiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDciLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkOCIsImJpbl9yZWFkZXJfbmVlZHNfbGVuZ3RoJDMiLCJiaW5fbmVlZHNfbGVuZ3RoJDMiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDEiLCJiaW5fcmVhZF9uYXQwX3QkMiIsImJpbl9yZWFkZXJfbmF0MF90JDAiLCJiaW5fc2l6ZV9uYXQwX3QkMCIsImJpbl93cml0ZV9uYXQwX3QkMCIsImJpbl93cml0ZXJfbmF0MF90JDAiLCJncm91cCQ4IiwiYmluX3NoYXBlX25lZWRzX2xlbmd0aCQ0IiwiYmluX3NpemVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVfbmVlZHNfbGVuZ3RoJDQiLCJiaW5fd3JpdGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDkiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMTAiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQ0IiwiYmluX25lZWRzX2xlbmd0aCQ0Iiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMiIsIm9mX2FfMTA3IiwiYXJnMF8xMDgiLCJyZXMwXzEwOSIsImFyZzBfMTEwIiwicmVzMF8xMTEiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZGVyX3QkOCIsImJpbl9yZWFkX25hdDBfdCQzIiwiYmluX3JlYWRfbmF0MF90JDQiLCJiaW5fcmVhZGVyX25hdDBfdCQxIiwiYmluX3NpemVfbmF0MF90JDEiLCJiaW5fd3JpdGVfbmF0MF90JDEiLCJiaW5fd3JpdGVyX25hdDBfdCQxIiwicXVlcnlfaWQiLCJ2MV9xdWVyeSIsInYxX3N0ciIsInYyX3N0ciIsImNhbGxlcl9pZGVudGl0eSIsInYyJDAiLCJ2X3F1ZXJ5Iiwidl9yZXNwb25zZSIsInZfbXNnIiwidl9xdWVyeSQwIiwidl9pbml0aWFsX3Jlc3BvbnNlIiwidl91cGRhdGVfcmVzcG9uc2UiLCJ2X2Vycm9yIiwidF9vZl9zZXhwJDAiLCJzZXhwc18wMTAiLCJ1cGRhdGVfcmVzcG9uc2UiLCJpbml0aWFsX3Jlc3BvbnNlIiwicXVlcnkiLCJzZXhwc18wMDYiLCJzZXhwc18wMDgiLCJtc2ciLCJyZXNwb25zZV8wMTQiLCJxdWVyeV8wMTIiLCJhcmdfMDE1IiwiYm5kc18wMTEiLCJhcmdfMDEzIiwiYm5kc18wMTEkMCIsIm1zZ18wMTciLCJhcmdfMDE4IiwiYm5kc18wMTYiLCJlcnJvcl8wMjYiLCJ1cGRhdGVfcmVzcG9uc2VfMDI0IiwiaW5pdGlhbF9yZXNwb25zZV8wMjIiLCJxdWVyeV8wMjAiLCJhcmdfMDI3IiwiYm5kc18wMTkiLCJhcmdfMDI1IiwiYm5kc18wMTkkMCIsImFyZ18wMjMiLCJibmRzXzAxOSQxIiwiYXJnXzAyMSIsImJuZHNfMDE5JDIiLCJyZXNwb25zZV8wMzEiLCJxdWVyeV8wMjkiLCJhcmdfMDMyIiwiYm5kc18wMjgiLCJhcmdfMDMwIiwiYm5kc18wMjgkMCIsIm1zZ18wMzQiLCJhcmdfMDM1IiwiYm5kc18wMzMiLCJlcnJvcl8wNDMiLCJ1cGRhdGVfcmVzcG9uc2VfMDQxIiwiaW5pdGlhbF9yZXNwb25zZV8wMzkiLCJxdWVyeV8wMzciLCJhcmdfMDQ0IiwiYm5kc18wMzYiLCJhcmdfMDQyIiwiYm5kc18wMzYkMCIsImFyZ18wNDAiLCJibmRzXzAzNiQxIiwiYXJnXzAzOCIsImJuZHNfMDM2JDIiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJieXRlc19yZWFkIiwicmVhZF9mb3JldmVyIiwib25fbWVzc2FnZSIsIm9uX2VuZF9vZl9iYXRjaCIsInJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QiLCJiaW5fcmVhZGVyIiwicGFjayQwIiwiY2xvc2UkMCIsImlzX2Nsb3NlZCQwIiwibW9uaXRvciIsImJ5dGVzX3RvX3dyaXRlIiwiYnl0ZXNfd3JpdHRlbiIsImZsdXNoZWQiLCJyZWFkeV90b193cml0ZSIsInNlbmRfYmluX3Byb3QiLCJiaW5fd3JpdGVyIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIiwic2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vIiwic3RvcHBlZCIsImNhbl9zZW5kIiwidHJhbnNmZXIiLCJwaXBlIiwibWF4X251bV92YWx1ZXNfcGVyX3JlYWQiLCJjb25zdW1lciIsImVuZF9vZl9waXBlIiwiaXZhciIsIml0ZXIiLCJxIiwid3JpdGVyXzAwNiIsInJlYWRlcl8wMDQiLCJhcmdfMDA3IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiY2xvc2UkMSIsImNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuXyIsImNhbGxiYWNrXzAwMiIsImNsb3NlX2Nvbm5lY3Rpb24iLCJjb250aW51ZSQwIiwiaGFuZGxlX2V4biIsImNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciIsImV4biIsImNhbGxiYWNrIiwid3JpdGVyXzAwNCIsInF1ZXJ5X2lkXzAwMiIsInJlc3BvbmRlZF8wMDYiLCJibmRzXzAwMSQxIiwiY3JlYXRlIiwid3JpdGVyIiwibGlmdCIsImltcGwiLCJiaW5fbXNnIiwiaW1wbCQwIiwic3RhdGUiLCJzdHIiLCJhdXRob3JpemVkX3N0YXRlIiwiaW1wbCQxIiwiaW1wbCQyIiwiYmluX3F1ZXJ5IiwiaW1wbCQzIiwiaW1wbCQ0IiwiaW1wbCQ1IiwiaW1wbCQ2IiwicmVzcCIsImltcGwkNyIsImltcGwkOCIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciIsImltcGwkOSIsImltcGwkMTAiLCJpbXBsJDExIiwidyIsIm9mX2Nvbm5lY3Rpb25fc3RhdGVfMDE0Iiwib25fZXhjZXB0aW9uXzAyNCIsInNoYXBlc18wMjIiLCJmXzAyMCIsInZlcnNpb25fMDE4IiwidGFnXzAxNiIsImJuZHNfMDE1IiwiYm5kc18wMTUkMCIsImJuZHNfMDE1JDEiLCJhcmdfMDE5IiwiYm5kc18wMTUkMiIsImFyZ18wMTciLCJibmRzXzAxNSQzIiwiZGVzY3JpcHRpb24iLCJzaGFwZXMiLCJsaWZ0JDAiLCJiIiwid2l0aF9hdXRob3JpemF0aW9uIiwibGlmdF9kZWZlcnJlZCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsImxvY2FsX3N0b3JhZ2Vfa2V5IiwiZ2V0Iiwid2l0aF9tZXRhZGF0YSIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiYWRkX2xlbiQwIiwiYWRkX2xlbiQxIiwiZSQwIiwiZSIsInN5bWJvbCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAyNCIsImFyZzFfMDI2IiwiYXJnMF8wMjUiLCJyZXMwXzAyNyIsInJlczFfMDI4IiwiYXJnXzAyMiIsImJuZHNfMDA4JDEiLCJhcmdfMDIwIiwiYm5kc18wMDgkMiIsImJuZHNfMDA4JDMiLCJhcmdfMDE2IiwiYm5kc18wMDgkNCIsImFyZ18wMTQiLCJibmRzXzAwOCQ1IiwiYm5kc18wMDgkNiIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJyZXN1bHQiLCJzZXhwIiwieF8wMzQiLCJ3cml0ZV9tZXNzYWdlIiwiYmluX3dyaXRlcl9kYXRhIiwiYmluX3dyaXRlX3ZvaWQiLCJidWZmZXIiLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXMiLCJiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCIsInN0cl9sZW4iLCJuZXh0IiwiYmluX3NpemVfbmF0MF9oZWFkZXIiLCJoZWFkZXJfcHJlZml4IiwiZGF0YV9sZW4iLCJzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiIsImJpbl93cml0ZV9uYXQwX2hlYWRlciIsImJpbl93cml0ZXJfbmF0MF9oZWFkZXIiLCJiaW5fc2l6ZV9tZXNzYWdlIiwiYmluX3dyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX21lc3NhZ2UiLCJiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyIsImJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmciLCJwcmVwX3dyaXRlIiwiY2xvc2VkIiwiaW5zdGFuY2UiLCJ3cml0ZV9lb2YiLCJ3cml0ZV9tZXNzYWdlJDAiLCJjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW4iLCJncm91cHMiLCJlbGVtZW50X2luX2dyb3VwIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2skMCIsInQkMCIsIm1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiIsIm9uX2V4Y2VwdGlvbiIsImF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQiLCJycGNfa2luZCIsImFwcGx5X2ltcGxlbWVudGF0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJmJDMiLCJiaW5fcXVlcnlfcmVhZGVyJDAiLCJxdWVyeV9jb250ZW50cyIsImV4biQwIiwiZiQ0IiwibGVuJDAiLCJyZXN1bHRfbW9kZSIsImYkNSIsImJpbl9yZXNwb25zZV93cml0ZXIiLCJiaW5fcXVlcnlfcmVhZGVyJDEiLCJxdWVyeV9jb250ZW50cyQwIiwib3Jfbm90X2F1dGhvcml6ZWRfdG9fcnBjX3Jlc3VsIiwiZGF0YSQwIiwiZGF0YSQxIiwiZXhuJDEiLCJiYWNrdHJhY2UiLCJyZXN1bHRfbW9kZSQwIiwiZiQ2IiwicmVzcG9uZGVyIiwiZCIsImNvbXB1dGF0aW9uX2ZhaWx1cmVfcmVzdWx0IiwicmVzdWx0JDAiLCJjaGVja19yZXNwb25kZWQiLCJkJDAiLCJyIiwic3RyZWFtaW5nX3JwYyIsInN0cmVhbV9xdWVyeSIsImxlbiQxIiwic3RyZWFtX3dyaXRlciIsImltcGxfd2l0aF9zdGF0ZSIsImYkMiIsIndyaXRlciQwIiwicnVuX2ltcGwiLCJzcGxpdF9vayIsImhhbmRsZV9vayIsImVycm9yJDAiLCJvayIsImluaXRpYWwiLCJmJDAiLCJwaXBlX3IiLCJmJDEiLCJmbHVzaCIsInByb2R1Y2Vyc19mbHVzaGVkIiwiYWNjIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsImltcGxlbWVudGF0aW9uJDEiLCJvbl9leGNlcHRpb24kMCIsImltcGxlbWVudGF0aW9uJDIiLCJpX3MiLCJkdXBzIiwiaSIsImluc3RhbnRpYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsInVucGFja2VkIiwiY3JlYXRlX2V4biIsIm51bGwkMCIsImFkZF9leG4iLCJkZXNjIiwiYWRkIiwiaW1wbGVtZW50YXRpb25zJDAiLCJvbl91bmtub3duX3JwYyQwIiwiY2FsbCIsImV4cGVydCIsImNhbm5vdF9zZW5kIiwieF8wMzkiLCJtYXJrX3Jlc3BvbmRlZCIsInNjaGVkdWxlIiwiaGVhZGVyIiwiaGFuZGxlX3NlbmRfcmVzdWx0JDAiLCJ3cml0ZV9iaWdzdHJpbmciLCJ3cml0ZV9iaW5fcHJvdCIsImVycm9yX3NvdXJjZV8wMzgiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInN1cHBvcnRlZF92ZXJzaW9ucyIsImRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciIsInF1ZXJ5X21lc3NhZ2UiLCJzZW5kX2V2ZXJ5IiwidGltZW91dCIsInNlbmRfZXZlcnlfMDQzIiwidGltZW91dF8wNDEiLCJibmRzXzA0MCIsImJuZHNfMDQwJDAiLCJ2X3RpbWVvdXQiLCJ2X3NlbmRfZXZlcnkiLCJjcmVhdGUkMCIsInNleHBfb2ZfdCQzIiwiaGVhcnRiZWF0X2NvbmZpZ18wNTMiLCJkZXNjcmlwdGlvbl8wNTEiLCJoZWFydGJlYXRfY2FsbGJhY2tzXzA1NSIsImxhc3Rfc2Vlbl9hbGl2ZV8wNTciLCJuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25fMDciLCJoZWFydGJlYXRfZXZlbnRfMDc1IiwidGltZV9zb3VyY2VfMDczIiwiaW1wbGVtZW50YXRpb25zX2luc3RhbmNlXzA3MSIsImNsb3NlX2ZpbmlzaGVkXzA2OSIsImNsb3NlX3N0YXJ0ZWRfMDY3Iiwib3Blbl9xdWVyaWVzXzA2NSIsIndyaXRlcl8wNjMiLCJyZWFkZXJfMDYxIiwibWF4X21ldGFkYXRhX3NpemVfMDU5IiwiYXJnXzA3OCIsImJuZHNfMDUwIiwiYXJnXzA3NiIsImJuZHNfMDUwJDAiLCJhcmdfMDc0IiwiYm5kc18wNTAkMSIsImFyZ18wNzIiLCJibmRzXzA1MCQyIiwiYXJnXzA3MCIsImJuZHNfMDUwJDMiLCJhcmdfMDY4IiwiYm5kc18wNTAkNCIsImFyZ18wNjYiLCJibmRzXzA1MCQ1Iiwid3JpdGVyXzAzNSIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbl8wMyIsImFyZ18wMzYiLCJibmRzXzAzMiIsImFyZ18wMzQiLCJibmRzXzAzMiQwIiwiYXJnXzA2NCIsImJuZHNfMDUwJDYiLCJhcmdfMDYyIiwiYm5kc18wNTAkNyIsImFyZ18wNjAiLCJibmRzXzA1MCQ4IiwiYXJnXzA1OCIsImJuZHNfMDUwJDkiLCJhcmdfMDU2IiwiYm5kc18wNTAkMTAiLCJ0aW1lb3V0XzA0NiIsInNlbmRfZXZlcnlfMDQ4IiwiYXJnXzA0OSIsImJuZHNfMDQ1IiwiYXJnXzA0NyIsImJuZHNfMDQ1JDAiLCJhcmdfMDU0IiwiYm5kc18wNTAkMTEiLCJhcmdfMDUyIiwiYm5kc18wNTAkMTIiLCJzZXhwX29mX3RfaHVtX3dyaXRlciIsInhfMDc5IiwiZGlzcGF0Y2giLCJyZXNwb25zZV9oYW5kbGVyIiwiYmluX3dyaXRlcl9xdWVyeSIsInF1ZXJ5JDAiLCJtZXNzYWdlIiwibWFrZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImR1bW15X2J1ZmZlciIsImR1bW15X3JlZiIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5IiwiY3JlYXRlJDEiLCJoYW5kc2hha2VfdGltZW91dCIsImhlYXJ0YmVhdF9jb25maWciLCJtYXhfbWV0YWRhdGFfc2l6ZSIsInRpbWVfc291cmNlIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsIm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiIsImhlYXJ0YmVhdF9mcm9tX25vd19vbiIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODIiLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJxdWVyeSQxIiwiaW5zdGFuY2UkMCIsInBlZXIiLCJ3aXRoX2Nsb3NlIiwidHJhbnNwb3J0IiwiZGlzcGF0Y2hfcXVlcmllcyIsIm9uX2hhbmRzaGFrZV9lcnJvciIsImhhbmRsZV9oYW5kc2hha2VfZXJyb3IiLCJzZXJ2ZXJfd2l0aF9jbG9zZSIsIm9uX2hhbmRzaGFrZV9lcnJvciQwIiwid2l0aF9hc3luY19leGVjdXRpb25fY29udGV4dCIsImNvbnRleHQiLCJlcnJvcl9zb3VyY2VfMDA5IiwiZXJyb3Jfc291cmNlXzAyNCIsInN5bWJvbCQwIiwiZGlzcGF0Y2hfcmF3IiwiY29ubiIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInF1ZXJ5X3R5cGVfaWQiLCJyZXNwb25zZV90eXBlX2lkIiwiaW1wbGVtZW50IiwiaW1wbGVtZW50JDAiLCJyZXNwb25zZSQwIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciIsImRpc3BhdGNoJDAiLCJkaXNwYXRjaF9leG4iLCJtYWtlX2Rpc3BhdGNoIiwiZG9fZGlzcGF0Y2giLCJycGNfdGFnIiwiaGFuZGxlX3Jlc3BvbnNlIiwiaGFuZGxlX2Vycm9yIiwieF8wMDIiLCJkaXNwYXRjaCQxIiwic2NoZWR1bGVfZGlzcGF0Y2giLCJkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIiwiYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiIsImltcGxlbWVudCQxIiwiaW1wbGVtZW50JDIiLCJpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uJDAiLCJ2ZXJzaW9uJDAiLCJuYW1lJDAiLCJtc2dfdHlwZV9pZCIsInNoYXBlcyQwIiwiZGVzY3JpcHRpb24kMCIsImltcGxlbWVudCQzIiwiZGlzcGF0Y2gkMiIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IkMCIsImRpc3BhdGNoJDMiLCJkaXNwYXRjaF9leG4kMCIsImltcGxlbWVudCQ0IiwiZGlzcGF0Y2gkNCIsInNjaGVkdWxlX2Rpc3BhdGNoJDAiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNsaWVudF9wdXNoZXNfYmFjayIsImJpbl9pbml0aWFsX3Jlc3BvbnNlIiwiYmluX3VwZGF0ZV9yZXNwb25zZSIsImFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZSIsImNsaWVudF9wdXNoZXNfYmFjayQwIiwiaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkIiwidXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQiLCJlcnJvcl9yZXNwb25zZV90eXBlX2lkIiwibWFrZV9pbml0aWFsX21lc3NhZ2UiLCJpbXBsZW1lbnRfZ2VuIiwiaW1wbGVtZW50JDUiLCJjIiwiaW1wbGVtZW50X2RpcmVjdCIsImFib3J0IiwicmVhZF9lcnJvciIsImhhbmRsZXIiLCJjb3JlX2VyciIsImRpc3BhdGNoX2dlbiIsIm1ha2VfdXBkYXRlX2hhbmRsZXIiLCJpbml0aWFsX3N0YXRlIiwiaW5pdGlhbF9oYW5kbGVyIiwiZXJyJDEiLCJpbml0aWFsX21zZyIsImluaXRpYWwkMCIsImV4dHJhIiwiaGFuZGxlciQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJlcnIkNCIsImVyciQzIiwiZXJyJDIiLCJkaXNwYXRjaCQ1IiwicGlwZV93IiwiaW5pdCIsInBpcGVfbWV0YWRhdGEiLCJjcmVhdGUkMiIsImJpbl9xdWVyeSQwIiwiYmluX3Jlc3BvbnNlJDAiLCJpbXBsZW1lbnQkNiIsImNyZWF0ZSQzIiwiaW5pdGlhbF9zaXplIiwiY3JlYXRlJDQiLCJidWZmZXIkMCIsImxlbmd0aCIsIm9uZSIsIm9uZSQwIiwid3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAiLCJncm91cF9lbGVtZW50X2luX3dyaXRlciIsInJlbW92ZSIsInRvX2xpc3QiLCJmbHVzaGVkX29yX2Nsb3NlZCIsImRpcmVjdF9zdHJlYW1fd3JpdGVyIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQxIiwid3JpdGUkMSIsImltcGxlbWVudF9kaXJlY3QkMCIsImRpc3BhdGNoJDYiLCJkaXNwYXRjaF9leG4kMSIsInBpcGVfYW5kX2lkIiwiZGlzcGF0Y2hfaXRlciIsIm5hbWUkMSIsInZlcnNpb24kMSIsImRlc2NyaXB0aW9uJDEiLCJxdWVyeV90eXBlX2lkJDAiLCJlcnJvcl90eXBlX2lkIiwicmVzcG9uc2VfdHlwZV9pZCQwIiwiY3JlYXRlJDUiLCJiaW5fc3RhdGUiLCJiaW5fdXBkYXRlIiwiYmluX3F1ZXJ5JDEiLCJiaW5fZXJyb3IkMCIsImRpc3BhdGNoJDciLCJ1cGRhdGVfciIsIm5hbWUkMiIsInZlcnNpb24kMiIsImRlc2NyaXB0aW9uJDIiLCJxdWVyeV90eXBlX2lkJDEiLCJzdGF0ZV90eXBlX2lkIiwidXBkYXRlX3R5cGVfaWQiLCJlcnJvcl90eXBlX2lkJDAiLCJkZXNjcmlwdGlvbiQzIiwicnBjIiwicnBjJDAiLCJycGMkMSIsInJwYyQyIiwidGhlX3JwYyIsIm5vdF90aGVfcnBjIiwicnBjX25hbWUkMCIsImlucHV0IiwiY29udmVydCIsImZhaWxlZF9jb252ZXJzaW9uIiwiYXJnM18wMDYiLCJhcmcyXzAwNSIsImFyZzFfMDA0IiwiYXJnMF8wMDMiLCJyZXMwXzAwNyIsInZfMDAxIiwicmVzMV8wMDgiLCJ2XzAwMiIsInJlczJfMDA5IiwicmVzM18wMTAiLCJtdWx0aXBsZV9yZWdpc3RyYXRpb25zIiwiYXJnMV8wMTQiLCJ2XzAxMSIsInZfMDEyIiwicmVzMV8wMTYiLCJhZGFwdGVyIiwiYWRhcHRlcnMiLCJhcmcxXzAyMiIsImFyZzBfMDIxIiwicmVzMV8wMjQiLCJhZGFwdGVycyQwIiwiYWRkX3JwY192ZXJzaW9uIiwib2xkX3JwYyIsInVwZ3JhZGUiLCJkb3duZ3JhZGUiLCJhZGFwdCIsImZuIiwiYWRhcHRlZCIsIm9sZF9xdWVyeSIsImFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJ1cGdyYWRlX29yX2Vycm9yIiwiZG93bmdyYWRlX29yX2Vycm9yIiwidmFsdWUiLCJhZGRfdmVyc2lvbiIsImFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSIsInJlZ2lzdHJ5IiwiaW1wbGVtZW50X211bHRpIiwibG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvIiwibG9nX3ZlcnNpb24iLCJycGNzIiwidmVyc2lvbnMiLCJxJDAiLCJyJDAiLCJpbXBsZW1lbnRfbXVsdGlfZ2VuIiwiaW1wbGVtZW50X2RpcmVjdF9tdWx0aSIsIndyYXBwZWRfbW9kZWxfb2ZfcXVlcnkiLCJ3cmFwcGVkX2Vycm9yX29mX21vZGVsIiwiY29udmVydF9lbHQiLCJjb252ZXJ0X3BpcGUiLCJtb2RlbF9zdGF0ZSIsInN0YXRlJDAiLCJiaW5fc2hhcGVfcXVlcnkiLCJiaW5fc2l6ZV9xdWVyeSIsImJpbl93cml0ZV9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5IiwiYmluX3JlYWRfcXVlcnkkMCIsImJpbl9yZWFkZXJfcXVlcnkiLCJiaW5fc2hhcGVfc3RhdGUiLCJiaW5fc2l6ZV9zdGF0ZSIsImJpbl93cml0ZV9zdGF0ZSIsImJpbl93cml0ZXJfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSIsImJpbl9yZWFkX3N0YXRlJDAiLCJiaW5fcmVhZGVyX3N0YXRlIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3NoYXBlX2Vycm9yIiwiYmluX3NpemVfZXJyb3IiLCJiaW5fd3JpdGVfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciIsImJpbl9yZWFkX2Vycm9yJDAiLCJtb2RlbF9vZl9xdWVyeSIsInN0YXRlX29mX21vZGVsIiwiZXJyb3Jfb2ZfbW9kZWwiLCJ1cGRhdGVfb2ZfbW9kZWwiLCJiaW5fc2hhcGVfcmVzcG9uc2UiLCJiaW5fc2l6ZV9yZXNwb25zZSIsImJpbl93cml0ZV9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlIiwiYmluX3JlYWRfcmVzcG9uc2UkMCIsInJlc3BvbnNlX29mX21vZGVsIiwiYWRkJDAiLCJpbXBscyIsIm1lbnUiLCJtZW51X2ltcGxzIiwic3VwcG9ydGVkX3JwY3MiLCJvZl9lbnRyaWVzIiwiZW50cmllcyIsImF1eF9yZXF1ZXN0IiwicmVxdWVzdCIsInJlcXVlc3QkMCIsImltcGxlbWVudF9tdWx0aSQwIiwiYmluX3NoYXBlX3F1ZXJ5JDAiLCJiaW5fc2l6ZV9xdWVyeSQwIiwiYmluX3dyaXRlX3F1ZXJ5JDAiLCJiaW5fd3JpdGVyX3F1ZXJ5JDAiLCJiaW5fcmVhZF9xdWVyeSQxIiwiYmluX3JlYWRfcXVlcnkkMiIsImJpbl9yZWFkZXJfcXVlcnkkMCIsImJpbl9zaGFwZV9yZXNwb25zZSQwIiwiYmluX3NpemVfcmVzcG9uc2UkMCIsImJpbl93cml0ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlcl9yZXNwb25zZSQwIiwiYmluX3JlYWRfcmVzcG9uc2UkMSIsImJpbl9yZWFkX3Jlc3BvbnNlJDIiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlJDAiLCJtb2RlbF9vZl9xdWVyeSQwIiwicmVzcG9uc2Vfb2ZfbW9kZWwkMCIsImFkZCQxIiwic2hhcGVfbWVudSIsInNoYXBlX21lbnVfaW1wbHMiLCJyZXF1ZXN0JDEiLCJjb25uZWN0aW9uIiwiY3JlYXRlX2RpcmVjdGx5IiwibW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24iLCJjYWxsZXJfdmVyc2lvbnMiLCJjYWxsZWVfdmVyc2lvbnMiLCJjYWxsZWVfbWVudSIsIndpdGhfc3BlY2lmaWNfdmVyc2lvbiIsImRpc3BhdGNoZXIiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMV8wMjAiLCJ3aXRoX3ZlcnNpb25fbWVudSIsImRpc3BhdGNoX211bHRpIiwiY29ubl93aXRoX21lbnUiLCJtcSIsInF1ZXJ5X29mX21vZGVsIiwibW9kZWxfb2ZfcmVzcG9uc2UiLCJkaXNwYXRjaF9pdGVyX211bHRpIiwiYWJvcnRfbXVsdGkiLCJ3cmFwcGVkX3F1ZXJ5X29mX21vZGVsIiwiY29udmVydF9yZXN1bHQiLCJjb252ZXJ0X29rIiwidSIsInJzIiwibW9kZWxfb2Zfc3RhdGUiLCJtb2RlbF9vZl9lcnJvciIsIm1vZGVsX29mX3VwZGF0ZSIsImNhbGxlZV9tb2RlbF9vZl9xdWVyeSIsInJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCIsInF1ZXJ5X29mX2NhbGxlcl9tb2RlbCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsImVycm9yX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJzdGF0ZV9vZl9jYWxsZWVfbW9kZWwiLCJ1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3N0YXRlJDAiLCJiaW5fc2l6ZV9zdGF0ZSQwIiwiYmluX3dyaXRlX3N0YXRlJDAiLCJiaW5fd3JpdGVyX3N0YXRlJDAiLCJiaW5fcmVhZF9zdGF0ZSQxIiwiYmluX3JlYWRfc3RhdGUkMiIsImJpbl9yZWFkZXJfc3RhdGUkMCIsImJpbl9zdGF0ZSQwIiwiYmluX3NoYXBlX3VwZGF0ZSQwIiwiYmluX3NpemVfdXBkYXRlJDAiLCJiaW5fd3JpdGVfdXBkYXRlJDAiLCJiaW5fd3JpdGVyX3VwZGF0ZSQwIiwiYmluX3JlYWRfdXBkYXRlJDEiLCJiaW5fcmVhZF91cGRhdGUkMiIsImJpbl9yZWFkZXJfdXBkYXRlJDAiLCJiaW5fdXBkYXRlJDAiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwicGlwZV9yZWFkIiwieF8wMDkiLCJvZl9hXzAwMSIsImJ1ZmZlcl8wMDUiLCJwaXBlXzAwMyIsImJ5dGVzX3JlYWRfMDA3IiwiYXJnXzAwOCIsImJuZHNfMDAyIiwiYXJnXzAwNiIsImJuZHNfMDAyJDAiLCJhcmdfMDA0IiwiYm5kc18wMDIkMSIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJwcm9jZXNzX3F1ZXVlIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSQwIiwidG90YWxfbGVuIiwiY29udGludWVfb3Jfd2FpdCIsImxlbmd0aCQwIiwic2V0X2J1ZmZlciIsInByb2Nlc3NfZGF0YSIsInNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE5Iiwib2ZfYV8wMTEiLCJtb25pdG9yXzAxNSIsInBpcGVfMDEzIiwiYnl0ZXNfd3JpdHRlbl8wMTciLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiaW5jcl9ieXRlc193cml0dGVuIiwibnVtX2J5dGVzIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJvbl9tZXNzYWdlX2NvdW50IiwiZ290Iiwic2V4cGlmaWVyIiwiY29tcGFyYXRvciIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJhXzAyMiIsImJfMDIzIiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImNvbXBhcmF0b3IkMCIsImFfMDI0IiwiYl8wMjUiLCJ3cml0ZV8xX21zZ18xX2NodW5rIiwid3JpdGVfMV9tc2dfM19jaHVuayIsIm1zZ19sZW4iLCJzcGxpdF9hdCIsInBhcnQxIiwicGFydDIiLCJ3cml0ZV8yX21zZ18xX2NodW5rIiwib25lX21zZyIsInR3b19tc2ciLCJ3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWUiLCJudW0iLCJzdG9wX2FmdGVyX29uX21lc3NhZ2UiLCJhXzAyNiIsImJfMDI3IiwiYV8wMzAiLCJiXzAzMSIsIm9uZV9tZXNzYWdlIiwidHdvX21lc3NhZ2VzIiwib25lX21lc3NhZ2VfcDEiLCJvbmVfbWVzc2FnZV9wMiIsInJwY19jb25uZWN0aW9uIiwiY2xvc2VfZmluaXNoZWQkMCIsInN0cmluZ19hZnRlciIsInMiLCJuIiwicXVvdGUiLCJsZW4iLCJidWYiLCJpIiwiYyIsIm9mX2NoYXIiLCJmdWxsX3NwbGl0Iiwic3RyIiwib24iLCJzZXAiLCJsb29wIiwiYWNjIiwib2Zmc2V0IiwiaW5kZXgiLCJ0b2tlbiIsInNwbGl0IiwibWF4IiwibWF4JDAiLCJ0b2tlbnMiLCJsb29wJDAiLCJ0cmltX2xlZnRfc3ViIiwibGFzdF9jaGFyIiwiY2hhcnMiLCJmaW5hbCQwIiwibGFzdF9jaGFyJDAiLCJpJDAiLCJsYXN0X2NoYXIkMSIsIm5ld19sZW4iLCJzcGxpdF90cmltX2xlZnQiLCJ0cmltIiwidHJpbV9sZWZ0Iiwibm9uX3NwYWNlIiwiZmluZF9mcm9tIiwicGF0dGVybiIsInN0YXJ0Iiwic3RhcnQkMCIsInJlcGxhY2VfYWxsIiwid2l0aCQwIiwicGxlbiIsInNsZW4iLCJqIiwicmVwbGFjZV9hbGxfYXNzb2MiLCJ0YmwiLCJmb3VuZCIsImZvdW5kJDAiLCJmIiwieHMkMCIsIngkMSIsIngiLCJmeCIsInhzIiwieCQwIiwiZngkMCIsImUiLCJqJDEiLCJ3aXRoJDIiLCJwYXR0ZXJuJDEiLCJyIiwid2l0aCQxIiwicGF0dGVybiQwIiwiaiQwIiwib2ZfbGlzdCIsImwiLCJ0b19saXN0IiwiaSQxIiwiYWNjJDAiLCJvZl9hcnJheSIsImEiLCJieXRlcyIsInRvX2FycmF5IiwiY3V0Iiwic2VwX21heCIsInNfbWF4IiwiayIsImxlZnRfZW5kIiwicmlnaHRfc3RhcnQiLCJyY3V0Iiwic2VwX3N0YXJ0IiwiY2hvcF9wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXhfbCIsInN0cmluZ19sIiwiZHJvcCIsInRha2UiLCJjcmVhdGUiLCJzaXplIiwiZW1wdHkiLCJsZW5ndGgiLCJzdWIiLCJpbnZhbGlkX2JvdW5kcyIsIm9wIiwiYnVmZmVyX2xlbiIsIm9mZiIsImxlbiIsIm1lc3NhZ2UiLCJpbnZhbGlkX2JvdW5kc19ibGl0Iiwic3JjX2xlbiIsInNyY19vZmYiLCJkc3RfbGVuIiwiZHN0X29mZiIsImludmFsaWRfYm91bmRzX21lbWNtcCIsImJ1ZjFfbGVuIiwiYnVmMV9vZmYiLCJidWYyX2xlbiIsImJ1ZjJfb2ZmIiwiY29weSIsInQiLCJkc3QiLCJzdWJzdHJpbmciLCJiIiwidG9fc3RyaW5nIiwib2Zfc3RyaW5nIiwicyIsImJsaXQiLCJzcmMiLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2J5dGVzIiwiYmxpdF90b19ieXRlcyIsIm1lbWNtcCIsImJ1ZjEiLCJidWYyIiwibWVtY21wX3N0cmluZyIsIm1lbWNociIsImJ1ZiIsImJ1Zl9vZmYiLCJjaHIiLCJidWZfbGVuIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzE2IiwiYnMiLCJpIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfc2V0XzY0IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQiLCJ4Iiwic2V0X2ludDE2X2JlIiwic2V0X2ludDE2X2xlIiwic2V0X2ludDMyX2JlIiwic2V0X2ludDMyX2xlIiwic2V0X2ludDY0X2JlIiwic2V0X2ludDY0X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwJDAiLCJnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSIsImdldF9pbnQzMl9iZSIsImdldF9pbnQzMl9sZSIsImdldF9pbnQ2NF9iZSIsImdldF9pbnQ2NF9sZSIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCIsInVuc2FmZV9zZXRfaW50MTZfYmUiLCJ1bnNhZmVfc2V0X2ludDE2X2xlIiwidW5zYWZlX3NldF9pbnQzMl9iZSIsInVuc2FmZV9zZXRfaW50MzJfbGUiLCJ1bnNhZmVfc2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDE2X2xlIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwidW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQzMl9sZSIsInVuc2FmZV9nZXRfaW50NjRfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwic3RhdGVfdG9fb3B0aW9uIiwieCIsInYiLCJmYWlsX3RvX3N0cmluZyIsIm1hcmtzIiwiZXJyIiwic3RhdGVfdG9fcmVzdWx0IiwiY3JlYXRlIiwiYnVmZmVyIiwib2ZmIiwibGVuIiwiY29tbWl0dGVkX2J5dGVzIiwibGVuZ3RoIiwidCIsImNsaWVudF9jb21taXR0ZWRfYnl0ZXMiLCJwYXJzZXJfY29tbWl0dGVkX2J5dGVzIiwiYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQiLCJwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMiLCJpbnZhcmlhbnQiLCJvZmZzZXRfaW5fYnVmZmVyIiwicG9zIiwiYXBwbHkiLCJmIiwidW5zYWZlX2dldF9jaGFyIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2xlIiwidW5zYWZlX2dldF9pbnQxNl9iZSIsInVuc2FmZV9nZXRfaW50MzJfYmUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwiY291bnRfd2hpbGUiLCJpIiwibGltaXQiLCJjb21taXQiLCJmYWlsX2siLCJpbnB1dCIsIm1zZyIsInN1Y2NlZWRfayIsInRvX2V4cG9ydGVkX3N0YXRlIiwiY29udGludWUkMCIsImNvbW1pdHRlZCIsImJzIiwibW9yZSIsIngkMCIsInMiLCJzbCIsImkkMCIsInBhcnNlIiwicCIsInBhcnNlX2JpZ3N0cmluZyIsImlucHV0JDAiLCJyZXR1cm4kMCIsImZhaWwiLCJzdWNjIiwic3ltYm9sX2JpbmQiLCJzdWNjJDAiLCJzeW1ib2xfbWFwIiwic3ltYm9sIiwibSIsInN5bWJvbCQwIiwic3VjYzAiLCJpbnB1dDAiLCJwb3MwIiwibW9yZTAiLCJzdWNjMSIsImlucHV0MSIsInBvczEiLCJtb3JlMSIsImxpZnQiLCJsaWZ0MiIsIm0xIiwibTIiLCJzdWNjMiIsImlucHV0MiIsInBvczIiLCJtb3JlMiIsImxpZnQzIiwibTMiLCJzdWNjMyIsImlucHV0MyIsInBvczMiLCJtb3JlMyIsImxpZnQ0IiwibTQiLCJzdWNjNCIsImlucHV0NCIsInBvczQiLCJtb3JlNCIsInN5bWJvbCQxIiwiYSIsImIiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwibWFyayIsImZhaWwkMCIsInN5bWJvbCQ0IiwicSIsInBvcyQwIiwibW9yZSQwIiwicmV0dXJuJDEiLCJzeW1ib2xfYmluZCQwIiwic3ltYm9sX21hcCQwIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsImxpZnQyJDAiLCJsaWZ0MyQwIiwibGlmdDQkMCIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJvZl9iaWdzdHJpbmciLCJidWYiLCJ3cml0YWJsZV9zcGFjZSIsImVuc3VyZSIsInRvX2NvcHkiLCJvbGRfbGVuIiwibmV3X2xlbiIsInNwYWNlIiwibmV3X2J1ZiIsIndyaXRlX3BvcyIsImZlZWRfc3RyaW5nIiwic3RyIiwiZmVlZF9iaWdzdHJpbmciLCJmZWVkX2lucHV0Iiwic2hpZnQiLCJuIiwiZm9yX3JlYWRpbmciLCJ1bmNvbnN1bWVkIiwib2ZfdW5jb25zdW1lZCIsImZyb21fdW5idWZmZXJlZF9zdGF0ZSIsImJ1ZmZlcmluZyIsImNvbnN1bWVkIiwiY29uc3VtZWQkMCIsInVuY29uc3VtZWQkMCIsInBhcnNlJDAiLCJpbml0aWFsX2J1ZmZlcl9zaXplIiwiZmVlZCIsInN0YXRlIiwiayIsImJ1ZmZlcmluZyQwIiwic3RhdGVfdG9fb3B0aW9uJDAiLCJzdGF0ZV90b19yZXN1bHQkMCIsInN0YXRlX3RvX3VuY29uc3VtZWQiLCJwcm9tcHQiLCJkZW1hbmRfaW5wdXQiLCJlbnN1cmVfc3VzcGVuZGVkIiwiZ28iLCJ1bnNhZmVfYXBwbHkiLCJhdF9lbmRfb2ZfaW5wdXQiLCJlbmRfb2ZfaW5wdXQiLCJhZHZhbmNlIiwiYXZhaWxhYmxlIiwidW5zYWZlX2xvb2thaGVhZCIsInBlZWtfY2hhciIsInBlZWtfY2hhcl9mYWlsIiwic2F0aXNmeSIsImMiLCJjaGFyJDAiLCJub3RfY2hhciIsImMkMCIsImFueV9jaGFyIiwiaW50OCIsInAkMCIsImFueV91aW50OCIsInAkMSIsImFueV9pbnQ4Iiwic2tpcCIsImluaXQiLCJ3aXRoX2J1ZmZlciIsImlucHV0X2xlbiIsImluaXQkMCIsImNvdW50X3doaWxlMSIsInN1Y2MkMSIsImZhaWwkMSIsInN0cmluZyIsImYkMCIsImUiLCJzdHJpbmckMCIsInN0cmluZ19jaSIsInNraXBfd2hpbGUiLCJ0YWtlIiwibiQwIiwidGFrZV9iaWdzdHJpbmciLCJ0YWtlX2JpZ3N0cmluZ193aGlsZSIsInRha2VfYmlnc3RyaW5nX3doaWxlMSIsInRha2VfYmlnc3RyaW5nX3RpbGwiLCJwZWVrX3N0cmluZyIsInRha2Vfd2hpbGUiLCJ0YWtlX3doaWxlMSIsInRha2VfdGlsbCIsImNob2ljZSIsInBzIiwiZmFpbHVyZV9tc2ciLCJmaXhfZGlyZWN0IiwiciIsImZpeF9sYXp5IiwibWF4X3N0ZXBzIiwic3RlcHMiLCJmaXgiLCJvcHRpb24iLCJjb25zIiwieHMiLCJsaXN0IiwicHMkMCIsImNvdW50IiwibG9vcCIsIm1hbnkiLCJtYW55MSIsIm1hbnlfdGlsbCIsInNlcF9ieTEiLCJzZXBfYnkiLCJza2lwX21hbnkiLCJza2lwX21hbnkxIiwiZW5kX29mX2xpbmUiLCJzY2FuIiwic3RhdGUkMCIsInBhcnNlciIsInNjYW4kMCIsInNjYW5fc3RhdGUiLCJzY2FuX3N0cmluZyIsImNvbnN1bWVfd2l0aCIsImNvbnN1bWVkX2JpZ3N0cmluZyIsImJvdGgiLCJtYXAiLCJiaW5kIiwibWFwMiIsIm1hcDMiLCJtYXA0IiwiZCIsImludDE2IiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJ4IiwieCQwIiwiY3N0JDE1IiwiY3N0JDEzIiwiY3N0JDEyIiwiY3N0JDAiLCJpdGVyX2NvbmNhdCIsImZuIiwic2VwIiwiYnVmIiwibGFzdCIsInJlc3QiLCJjb21wYXJlX29wdCIsImMiLCJ0JDAiLCJ0IiwiYSIsImIiLCJjb21wYXJlX2xpc3QiLCJmIiwidCQyIiwidCQxIiwieHMiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwidXNlcmluZm8iLCJob3N0IiwicXVlcnlfa2V5IiwicXVlcnlfdmFsdWUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJ4JDEiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfaG9zdCIsImgxIiwiaDIiLCJpcDIiLCJpcDEiLCJpcDIkMCIsImlwMSQwIiwiaDIkMCIsImgxJDAiLCJjb21wYXJlJDAiLCJjJDIiLCJjJDMiLCJjJDQiLCJrdmwkMCIsImt2bCIsInJhdyIsInJhdyQwIiwiYyQxIiwidmwiLCJ2bCQwIiwiayQwIiwiZXF1YWwiLCJ1bmNhc3Rfb3B0Iiwibm9ybWFsaXplIiwic2NoZW0iLCJpbml0IiwiaG9zdCQwIiwiaG9zdCQxIiwidG9fc3RyaW5nIiwidXJpIiwiYWRkX3BjdF9zdHJpbmciLCJmaXJzdF9zZWdtZW50IiwieCQyIiwicSIsImdldF9kZWNvZGVkX29wdCIsIndpdGhfc2NoZW1lIiwiaCQwIiwiaG9zdF93aXRoX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJ3aXRoX3VzZXJpbmZvIiwidXNlcmluZm8kMCIsInVzZXIiLCJwYXNzd29yZCIsInBhc3MiLCJ3aXRoX3Bhc3N3b3JkIiwicmVzdWx0Iiwid2l0aF9wb3J0Iiwid2l0aF9wYXRoIiwicGF0aCQwIiwid2l0aF9mcmFnbWVudCIsImZyYWciLCJxdWVyeSIsInZlcmJhdGltX3F1ZXJ5IiwiZ2V0X3F1ZXJ5X3BhcmFtIiwiZ2V0X3F1ZXJ5X3BhcmFtJDAiLCJ3aXRoX3F1ZXJ5IiwicV9zIiwid2l0aF9xdWVyeSQwIiwiYWRkX3F1ZXJ5X3BhcmFtIiwiYWRkX3F1ZXJ5X3BhcmFtJDAiLCJhZGRfcXVlcnlfcGFyYW1zIiwiYWRkX3F1ZXJ5X3BhcmFtcyQwIiwicmVtb3ZlX3F1ZXJ5X3BhcmFtIiwicGF0aF9hbmRfcXVlcnkiLCJtYXRjaCIsInNjaGVtZSQwIiwicmVzb2x2ZSIsImJhc2UiLCJzY2hlbWUkMSIsInNjaGVtJDAiLCJwYXRoX3N0ciIsInJlbHBhdGgiLCJicGF0aCIsImJob3N0IiwicmJwYXRoIiwiY2Fub25pY2FsaXplIiwidXJpJDAiLCJwcCIsInBwZiIsInBwX2h1bSIsInN0cmluZ19vZl9jaGFyIiwic3RyaW5nX29mX2NoYXJfbGlzdCIsImNoYXJzIiwiaXNfZGlnaXQiLCJoZXhfZGlnaXQiLCJoZXhhZGVjaW1hbCIsImNfZG90IiwiY19hdCIsImNfY29sb24iLCJkZWNfb2N0ZXQiLCJudW0iLCJpcHY0X2FkZHJlc3MiLCJ0aHJlZSIsIm9uZSIsImFmdGVyX2RvdWJsZV9jb2xvbiIsImRvdWJsZV9jb2xvbiIsImNvdW50IiwiZmlsbGVyX2xlbmd0aCIsInBhcnQiLCJoZXhfcGFydCIsInNwbGl0X3dpdGgiLCJ0cyIsInpzIiwiZm9ybWF0X2FkZHIiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJiZWZvcmVfZG91YmxlX2NvbG9uIiwiYmVmb3JlIiwicmVzIiwiaXB2NiIsImlwdjZfYWRkcmVzcyIsInBjdF9lbmNvZGVkIiwicGN0IiwiZGlnaXRzIiwic3ViX2RlbGltcyQwIiwidW5yZXNlcnZlZCIsInJlZ19uYW1lIiwicG9ydCQwIiwiZGVjb2RlZCIsImF1dGhvcml0eSIsInF1ZXJ5JDAiLCJmcmFnbWVudCQwIiwidXJpX3JlZmVyZW5jZSIsInVyaV9yZWZlcmVuY2UkMCIsImRlY29kZV9ob3N0IiwicGFyc2VkIiwicGFyc2VkJDAiLCJtYWtlIiwicGF0aCQxIiwid2l0aF9ob3N0Iiwid2l0aF91cmkiLCJ3aXRoJDAiLCJvIiwib2Zfc3RyaW5nIiwibGV0JDAiLCJ0b191cmkiLCJvZl91cmkiLCJ1bnN1cHBvcnRlZF9zY2hlbWUiLCJvZl9zdHJpbmckMCIsImVycm9yIiwidG9fc3RyaW5nJDAiLCJtYWtlJDAiLCJob3N0JDIiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxOCIsImRlZmF1bHRfMDM0IiwiZXJyb3Jfc291cmNlXzAyNyIsImRlZmF1bHRfMDYyIiwiY29tcG9uZW50X29mX3NleHAiLCJzZXhwXzAxNyIsImF0b21fMDAyIiwic2V4cF9hcmdzXzAwNSIsImF0b21fMDAyJDAiLCJhcmcwXzAxNSIsImFyZzJfMDEwIiwiYXJnMV8wMDkiLCJhcmcwXzAwOCIsInJlczBfMDExIiwicmVzMV8wMTIiLCJyZXMyXzAxMyIsInJlczBfMDE2Iiwic2V4cF9vZl9jb21wb25lbnQiLCJ2XzAxOSIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJhcmcwXzAyMCIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJyZXMyXzAyNSIsImRlZmF1bHRfMDI4IiwiZGVmYXVsdF8wMzUiLCJkZWZhdWx0XzAzNiIsImRlZmF1bHRfMDM3IiwiZGVmYXVsdF8wMzgiLCJkZWZhdWx0XzA0MiIsImRlZmF1bHRfMDQ3IiwiZGVmYXVsdF8wNTIiLCJkZWZhdWx0XzA1NyIsImRlZmF1bHRfMDc1IiwidF9vZl9zZXhwIiwieF8wMzkiLCJzZXhwXzAzMyIsImFyZzFfMDMwIiwiYXJnMF8wMjkiLCJyZXMwXzAzMSIsInJlczFfMDMyIiwidCIsImZyYWdtZW50IiwicXVlcnkiLCJwYXRoIiwicG9ydCIsImhvc3QiLCJ1c2VyaW5mbyIsInNjaGVtZSIsInNleHBfb2ZfdCIsImZyYWdtZW50XzA3NiIsInF1ZXJ5XzA2NyIsInBhdGhfMDYzIiwicG9ydF8wNTgiLCJob3N0XzA1MyIsInVzZXJpbmZvXzA0OCIsInNjaGVtZV8wNDMiLCJibmRzXzA0MCIsImFyZ18wNzgiLCJibmRzXzA0MCQwIiwiYm5kXzA3NyIsImJuZHNfMDQwJDEiLCJhcmdfMDczIiwiYXJnMV8wNjkiLCJhcmcwXzA2OCIsInJlczBfMDcwIiwicmVzMV8wNzEiLCJibmRfMDcyIiwiYXJnXzA2NSIsImJuZHNfMDQwJDIiLCJibmRfMDY0IiwiYXJnXzA2MCIsImJuZHNfMDQwJDMiLCJibmRfMDU5IiwiYXJnXzA1NSIsImJuZHNfMDQwJDQiLCJibmRfMDU0IiwiYXJnXzA1MCIsImJuZHNfMDQwJDUiLCJibmRfMDQ5IiwiYXJnXzA0NSIsImJuZHNfMDQwJDYiLCJibmRfMDQ0IiwiY29tcGFyZSIsImEiLCJiIiwiZXF1YWwiLCJpc192YWxpZF9maWVsZF9uYW1lIiwic2VlbiIsIm5hbWUiLCJhbnlfb2Zfc2V4cCIsInMiLCJsaXN0JDAiLCJ2JDAiLCJuYW1lJDEiLCJzZWVuJDIiLCJyZXZfYWNjIiwibGlzdCIsInJlc3QiLCJyZXZfYWNjJDAiLCJzZWVuJDAiLCJyZXN0JDAiLCJ2IiwibmFtZSQwIiwicmV2X2FjYyQxIiwic2VlbiQxIiwibCIsImxvZ19zIiwic2V4cCIsImxvZ19zX2FzX3N0cmluZyIsInNleHBfb2ZfdCIsImZpZWxkMl8wMTYiLCJmaWVsZDFfMDE0IiwiYXJnXzAxNyIsImJuZHNfMDEzIiwic29tZV9uYW1lXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwNCIsImFyZ18wMTUiLCJibmRzXzAxMyQwIiwidG9fc3RyaW5nIiwic2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzIiwieF8wMjIiLCJpIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsInJlczBfMDIwIiwicmVzMV8wMjEiLCJjb21wYXJlX2Nsb3NlX2V2ZW50X2NvZGUiLCJzZXhwX29mX2Nsb3NlX2V2ZW50X2NvZGUiLCJhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImNvbXBhcmUiLCJhXzAwNCIsImJfMDA1IiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhY2MiLCJsJDAiLCJlbnVtZXJhdGVfMDExIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsImwkMiIsImVudW1lcmF0ZV8wMTAiLCJhY2MkMiIsImFsbCIsIm9mX2ludCIsImNvZGUiLCJ0b19pbnQiLCJjb2RlJDAiLCJ4XzAzMSIsInhfMDMwIiwibm9ybWFsX2Nsb3N1cmUiLCJjbGllbnQiLCJoZWFydGJlYXRfY29uZmlnIiwiZGVzY3JpcHRpb24iLCJpbXBsZW1lbnRhdGlvbnMiLCJ1cmkiLCJzY2hlbWUiLCJwb3J0IiwicG9ydCQwIiwiaG9zdCIsIm1hdGNoJDEiLCJyZXMiLCJoIiwiZGVzY3JpcHRpb24kMCIsImZyb21fc2VydmVyX3ciLCJmcm9tX3NlcnZlcl9yIiwidG9fc2VydmVyX3ciLCJ0b19zZXJ2ZXJfciIsImVycm9yIiwidHJhbnNwb3J0IiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImNvbm5lY3Rpb24iLCJleG4iLCJpbXBsZW1lbnRhdGlvbnMkMCIsImV4biQxIiwiZXhuJDAiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQiLCJjbGllbnRfZXhuIiwiY3JlYXRlX2Zyb21fdXJpIiwiZXF1YWwkMCIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0Iiwic2V4cF9vZl90JDEiLCJ4XzAwNyIsImNyZWF0ZV9mcm9tX3VyaV9vcHRpb24iLCJtZXRob2Rfc3RyaW5nJDAiLCJyZXF1ZXN0Iiwib25fcHJvZ3Jlc3MiLCJvbl91cGxvYWRfcHJvZ3Jlc3MiLCJ1cmwiLCJyZXNwb25zZV90eXBlIiwibWV0aG9kX3dpdGhfYXJncyIsImhlYWRlcnMiLCJhcmdzIiwibWV0aG9kX3N0cmluZyQxIiwidXJsJDAiLCJ2YWx1ZSIsInJlc3BvbnNlIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJjb250ZW50IiwiZ2V0X2hlYWRlciIsImJvZHkiLCJib2R5JDAiLCJnZXQiLCJhcmd1bWVudHMkMCIsInJlc3AiLCJwb3N0IiwicmVhZHlfc3RhdGVfY2hhbmdlIiwiY29tcGxldGUiLCJzbGVlcCIsImQiLCJ5aWVsZCQwIiwiZXh0cmFjdF9qc19lcnJvciIsIm1zZyIsImpzX2Vycm9yIiwibWVzc2FnZXMiLCJqc19lcnJvciQwIiwicHJldHR5X3ByaW50X2V4Y2VwdGlvbiIsImVyciIsImNsYXNzaWZpY2F0aW9uIiwiZXJyJDIiLCJlcnIkMCIsImV4biQyIiwiaGQiLCJtZXNzYWdlIiwic3RhdGUiLCJ0aW1lb3V0cyIsInJ1bl9hZnRlciIsImYiLCJtcyIsImxvb3AiLCJ0IiwibmV4dF93YWtldXAiLCJuZXh0Iiwibm93IiwiZF9tcyQwIiwiZF9tcyIsImF0IiwicnVuX3RpbWVvdXQiLCJydW4iLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0X2NoaWxkX2luZGV4JDAiLCJyaWdodCIsImxlZnRfaXNfbm9uZSIsInJpZ2h0X2lzX25vbmUiLCJjcmVhdGVfZXhuIiwibnVtX2xlYXZlcyIsInJlZHVjZSIsIm51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbCIsInZhbGlkYXRlX2luZGV4IiwibGVuZ3RoIiwic2V0X2V4biIsImNoaWxkX2luZGV4IiwicGFyZW50IiwiZ2V0X2V4biIsInhfMDAyIiwiY29tcHV0ZV9leG4iLCJzZXhwX29mX3QiLCJzdGVwcyIsInIiLCJpbml0Iiwic2V4cF9vZl90JDAiLCJvZl9hXzAwMSIsInN0ZXBzXzAwNSIsImluaXRfMDAzIiwiYXJnXzAwNiIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsImludmFyaWFudCIsImludmFyaWFudF9hIiwidmFsdWUiLCJ0JDAiLCJhdCIsInN0ZXBzJDEiLCJpbml0JDEiLCJzdGVwcyQwIiwiaW5pdCQwIiwidCIsImNvbnN0YW50IiwiY3JlYXRlX2V4biIsInRpbWUyIiwidGltZTEiLCJ4XzAxMSIsImNyZWF0ZV9mcm9tX3NlcXVlbmNlIiwiY3JlYXRlIiwibGVuIiwibGVuZ3RoIiwidCIsInNldCIsInNldF9leG4iLCJpIiwieCIsImdldCIsImlzX3NvbWUiLCJpc19ub25lIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpdGVyIiwiZiIsInYiLCJpdGVyaSIsImJsaXQiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNyZWF0ZSIsImluZGV4IiwiZ2V0IiwidCIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInhfMDAxIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJzZXQiLCJibG9jayIsInNleHBfb2ZfdCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJrZXlzX3dpdGhfdW51c2VkX2RhdGFfMDA2IiwiZW50cnlfYnlfa2V5XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYXJnXzAwNSIsImJuZHNfMDAzJDEiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJjbGVhbnVwIiwicmVwbGFjZSIsImFkZF9leG4iLCJ4XzAxMCIsImZpbmQiLCJmaW5kX29yX2FkZCIsImRlZmF1bHQkMCIsInYiLCJzZXhwX29mX3QiLCJjb25jYXQiLCJ0YWciLCJhcmcwXzAwMSIsImFyZzFfMDAyIiwic2V4cF9vZl9hIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsInJlYWxsb2MiLCJ0IiwibGVuIiwiYSIsIm5ld190IiwicmVhbGxvYyQwIiwicmVzMF8wMDUiLCJyZXMwXzAwNyIsImludmFyaWFudCIsInhfMDA5IiwiY3JlYXRlIiwiZiIsIm9mX2NvbXBhcmUiLCJvZl9lcXVhbCIsInBvbHlfZXF1YWwiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwicmVyYWlzZV93aXRoX21lc3NhZ2UiLCJtc2ciLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsInhfMDExIiwiY2hlY2siLCJ3YXRjaF9mdW4iLCJ0JDAiLCJzZXRfYXRfZnVuIiwidmFsdWVfZnVuIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsInhfMDI4IiwiZm9sZF92YWx1ZV9mdW4iLCJnb3QiLCJleHBlY3QiLCJzZXhwaWZpZXIiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInVwZGF0ZSQwIiwiZl9pbnZlcnNlIiwidXBkYXRlIiwiY29tcHV0ZSIsInJlc3VsdCIsImZvcmNlX2Z1bGxfY29tcHV0ZSIsImNoaWxkX2NoYW5nZWQiLCJ4XzAzMSIsImNoaWxkX2luZGV4Iiwib2xkX3ZhbHVlX29wdCIsImNoaWxkX2F0X2luZGV4IiwieF8wMDEiLCJudWxsJDAiLCJhbGFybV92YWx1ZSIsInNldF9hbGFybV92YWx1ZSIsImFsYXJtIiwic2V0X2FsYXJtIiwiYWxhcm1fdmFsdWUkMCIsImFsYXJtJDAiLCJtYWluXzAwMyIsImNoaWxkXzAwNSIsImV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fYyIsInZhbHVlXzAwOSIsInVwY29taW5nX3N0ZXBzXzAxMSIsImFsYXJtXzAxNyIsImFsYXJtX3ZhbHVlXzAxOSIsImNsb2NrXzAyMSIsImFyZ18wMTgiLCJhcmdfMDEyIiwiYXJnMV8wMTQiLCJyZXMxXzAxNiIsImJuZHNfMDAyJDMiLCJibmRzXzAwMiQ0IiwiYm5kc18wMDIkNSIsImJuZHNfMDAyJDYiLCJ4XzAyMyIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsImFkdmFuY2UiLCJ0byIsInN0ZXBzJDAiLCJhMSQwIiwiYTEiLCJzdGVwcyIsInN0ZXBzMiIsImEyIiwic3RlcF9hdCIsIm9mX2FjY18wMDIiLCJjaGlsZHJlbl8wMDgiLCJpbml0XzAwNCIsImFyZ18wMDkiLCJibmRzXzAwMyIsImFyZ18wMDciLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInhfMDEwIiwiYXRfMDA0IiwibWFpbl8wMDIiLCJhbGFybV8wMDYiLCJjbG9ja18wMDgiLCJibmRzXzAwMSQxIiwiYm5kc18wMDEkMiIsImludGVydmFsIiwiaW50ZXJ2YWwkMCIsImludGVydmFsXzAwNiIsImJhc2VfMDA0IiwiYWxhcm1fMDA4IiwiY2xvY2tfMDEwIiwiYXJnXzAxMSIsImJuZHNfMDAxJDMiLCJpbnRlcnZhbF9mdW4iLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJzZXRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwicmhzX3Njb3BlIiwic2V0X3Joc19zY29wZSIsImxoc19jaGFuZ2UiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMkMCIsInJoc19zY29wZSQwIiwibGhzX2NoYW5nZSQwIiwib2ZfYl8wMDIiLCJtYWluXzAwNCIsImxoc19jaGFuZ2VfMDEwIiwibGhzXzAwOCIsInJoc18wMTIiLCJyaHNfc2NvcGVfMDE0IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXzAxNiIsImJuZHNfMDAzJDIiLCJibmRzXzAwMyQzIiwiYm5kc18wMDMkNCIsImJuZHNfMDAzJDUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsInhfMDE4IiwiYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzX2Z1biIsIm5vZGUiLCJyaHNfc2NvcGVfZnVuIiwibGhzX2NoYW5nZV9mdW4iLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsInhfMDE1IiwiY3VycmVudF9icmFuY2hfZnVuIiwidGVzdF9jaGFuZ2VfZnVuIiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsInhfMDEzIiwiYmVmb3JlX2Z1biIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiaXRlcmlfY2hpbGRyZW4iLCJyaHMiLCJpJDAiLCJ0ZXN0IiwibGhzIiwicmhzJDAiLCJub2RlMCIsImNoaWxkJDAiLCJjaGlsZHJlbiQxIiwiaSQxIiwibm9kZTEiLCJub2RlMCQwIiwibm9kZTIiLCJub2RlMSQwIiwibm9kZTAkMSIsIm5vZGUzIiwibm9kZTIkMCIsIm5vZGUxJDEiLCJub2RlMCQyIiwibm9kZTQiLCJub2RlMyQwIiwibm9kZTIkMSIsIm5vZGUxJDIiLCJub2RlMCQzIiwibm9kZTUiLCJub2RlNCQwIiwibm9kZTMkMSIsIm5vZGUyJDIiLCJub2RlMSQzIiwibm9kZTAkNCIsIm5vZGU2Iiwibm9kZTUkMCIsIm5vZGU0JDEiLCJub2RlMyQyIiwibm9kZTIkMyIsIm5vZGUxJDQiLCJub2RlMCQ1Iiwibm9kZTciLCJub2RlNiQwIiwibm9kZTUkMSIsIm5vZGU0JDIiLCJub2RlMyQzIiwibm9kZTIkNCIsIm5vZGUxJDUiLCJub2RlMCQ2Iiwibm9kZTgiLCJub2RlNyQwIiwibm9kZTYkMSIsIm5vZGU1JDIiLCJub2RlNCQzIiwibm9kZTMkNCIsIm5vZGUyJDUiLCJub2RlMSQ2Iiwibm9kZTAkNyIsIm5vZGU5Iiwibm9kZTgkMCIsIm5vZGU3JDEiLCJub2RlNiQyIiwibm9kZTUkMyIsIm5vZGU0JDQiLCJub2RlMyQ1Iiwibm9kZTIkNiIsIm5vZGUxJDciLCJub2RlMCQ4Iiwibm9kZTEwIiwibm9kZTkkMCIsIm5vZGU4JDEiLCJub2RlNyQyIiwibm9kZTYkMyIsIm5vZGU1JDQiLCJub2RlNCQ1Iiwibm9kZTMkNiIsIm5vZGUyJDciLCJub2RlMSQ4Iiwibm9kZTAkOSIsIm5vZGUxMSIsIm5vZGUxMCQwIiwibm9kZTkkMSIsIm5vZGU4JDIiLCJub2RlNyQzIiwibm9kZTYkNCIsIm5vZGU1JDUiLCJub2RlNCQ2Iiwibm9kZTMkNyIsIm5vZGUyJDgiLCJub2RlMSQ5Iiwibm9kZTAkMTAiLCJub2RlMTIiLCJub2RlMTEkMCIsIm5vZGUxMCQxIiwibm9kZTkkMiIsIm5vZGU4JDMiLCJub2RlNyQ0Iiwibm9kZTYkNSIsIm5vZGU1JDYiLCJub2RlNCQ3Iiwibm9kZTMkOCIsIm5vZGUyJDkiLCJub2RlMSQxMCIsIm5vZGUwJDExIiwibm9kZTEzIiwibm9kZTEyJDAiLCJub2RlMTEkMSIsIm5vZGUxMCQyIiwibm9kZTkkMyIsIm5vZGU4JDQiLCJub2RlNyQ1Iiwibm9kZTYkNiIsIm5vZGU1JDciLCJub2RlNCQ4Iiwibm9kZTMkOSIsIm5vZGUyJDEwIiwibm9kZTEkMTEiLCJub2RlMCQxMiIsIm5vZGUxNCIsIm5vZGUxMyQwIiwibm9kZTEyJDEiLCJub2RlMTEkMiIsIm5vZGUxMCQzIiwibm9kZTkkNCIsIm5vZGU4JDUiLCJub2RlNyQ2Iiwibm9kZTYkNyIsIm5vZGU1JDgiLCJub2RlNCQ5Iiwibm9kZTMkMTAiLCJub2RlMiQxMSIsIm5vZGUxJDEyIiwibm9kZTAkMTMiLCJzbG93X2dldF9jaGlsZCIsImluZGV4IiwiYXJnMV8zMDYiLCJhcmcwXzMwNSIsInJlczBfMzA3IiwicmVzMV8zMDgiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW4iLCJzZXRfbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2EiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4iLCJzZXRfbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2EiLCJvYnNlcnZlcnMiLCJzZXRfb2JzZXJ2ZXJzIiwic2V0X29sZF92YWx1ZV9vcHQiLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWEiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsInNldF9oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfcHJldl9pbl9yZWNvbXB1dGVfaGVhcCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCIsInNldF9oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0IiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJzZXRfbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUiLCJjcmVhdGVkX2luIiwic2V0X2NyZWF0ZWRfaW4iLCJwYXJlbnQwIiwic2V0X3BhcmVudDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQiLCJzZXRfcGFyZW50MV9hbmRfYmV5b25kIiwibnVtX3BhcmVudHMiLCJzZXRfbnVtX3BhcmVudHMiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzIiwic2V0X251bV9vbl91cGRhdGVfaGFuZGxlcnMiLCJjaGFuZ2VkX2F0Iiwic2V0X2NoYW5nZWRfYXQiLCJjdXRvZmYiLCJzZXRfY3V0b2ZmIiwia2luZCIsInNldF9raW5kIiwidmFsdWVfb3B0Iiwic2V0X3ZhbHVlX29wdCIsInJlY29tcHV0ZWRfYXQiLCJzZXRfcmVjb21wdXRlZF9hdCIsImlkIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luJDAiLCJteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW4kMCIsIm9ic2VydmVycyQwIiwib2xkX3ZhbHVlX29wdCQwIiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwJDAiLCJoZWlnaHQkMCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlJDAiLCJjcmVhdGVkX2luJDAiLCJwYXJlbnQwJDAiLCJwYXJlbnQxX2FuZF9iZXlvbmQkMCIsIm51bV9wYXJlbnRzJDAiLCJudW1fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJjaGFuZ2VkX2F0JDAiLCJjdXRvZmYkMCIsImtpbmQkMCIsInZhbHVlX29wdCQwIiwicmVjb21wdXRlZF9hdCQwIiwiaWQkMCIsInN0YXRlXzAwNSIsImlkXzAwMyIsInJlY29tcHV0ZWRfYXRfMDA3IiwidmFsdWVfb3B0XzAwOSIsImtpbmRfMDExIiwiY3V0b2ZmXzAxMyIsImNoYW5nZWRfYXRfMDE1IiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc18wMTciLCJudW1fcGFyZW50c18wMTkiLCJwYXJlbnQxX2FuZF9iZXlvbmRfMDIxIiwicGFyZW50MF8wMjMiLCJjcmVhdGVkX2luXzAyNSIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlXzAyNyIsImhlaWdodF8wMjkiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBfMDMxIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF8wMzMiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwXzAzNSIsImhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXyIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8wMyIsIm9sZF92YWx1ZV9vcHRfMDQxIiwib2JzZXJ2ZXJzXzA0MyIsImlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aSIsIm9uX3VwZGF0ZV9oYW5kbGVyc18wNDciLCJmb3JjZV9uZWNlc3NhcnlfMDUzIiwidXNlcl9pbmZvXzA1NSIsImNyZWF0aW9uX2JhY2t0cmFjZV8wNTciLCJhcmdfMDU4IiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImFyZ18wNDgiLCJhcmdfMDQ2IiwiYXJnXzA0NCIsImFyZ18wNDIiLCJibmRzXzAwMiQ3IiwiYXJnXzA0MCIsImJuZHNfMDAyJDgiLCJhcmdfMDM4IiwiYm5kc18wMDIkOSIsImFyZ18wMzYiLCJibmRzXzAwMiQxMCIsImFyZ18wMzQiLCJibmRzXzAwMiQxMSIsImFyZ18wMzIiLCJibmRzXzAwMiQxMiIsImFyZ18wMzAiLCJibmRzXzAwMiQxMyIsImFyZ18wMjgiLCJibmRzXzAwMiQxNCIsImJuZHNfMDAyJDE1IiwiYm5kc18wMDIkMTYiLCJibmRzXzAwMiQxNyIsImJuZHNfMDAyJDE4IiwiYm5kc18wMDIkMTkiLCJibmRzXzAwMiQyMCIsImJuZHNfMDAyJDIxIiwiYm5kc18wMDIkMjIiLCJibmRzXzAwMiQyMyIsImJuZHNfMDAyJDI0IiwiYm5kc18wMDIkMjUiLCJibmRzXzAwMiQyNiIsInNhbWUiLCJ1c2VyX2luZm8iLCJvdGhlciIsInNldF91c2VyX2luZm8iLCJhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IiwiYXR0cnMiLCJlZGdlX2lzX3N0YWxlIiwicGFyZW50IiwiaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpIiwiaXNfc3RhbGUiLCJmb3JjZV9zdGFsZSIsImZvcmNlX3N0YWxlJDAiLCJuZWVkc190b19iZV9jb21wdXRlZCIsImlzX2luX3JlY29tcHV0ZV9oZWFwIiwiaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCIsImdldF9wYXJlbnQiLCJpdGVyaV9wYXJlbnRzIiwiaGFzX2NoaWxkIiwiaGFzIiwiaGFzX3BhcmVudCIsInBhcmVudCQwIiwic2hvdWxkX2JlX2ludmFsaWRhdGVkIiwibGhzJDAiLCJmb2xkX29ic2VydmVycyIsImFjIiwib2JzZXJ2ZXIiLCJ4XzA1OSIsInQxJDAiLCJhXzA2MCIsImJfMDYxIiwiYV8wNzAiLCJiXzA3MSIsInBhcmVudF9pbmRleCIsIngiLCJhXzA2OCIsImJfMDY5Iiwib2JzZXJ2ZXJzX2Z1biIsInN0YXRlIiwib2JzZXJ2aW5nIiwib2xkX3ZhbHVlX29wdF9mdW4iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfZnUiLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldiIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJoZWlnaHRfZnVuIiwibmV4dF9ub2RlX2luX3NhbWVfc2NvcGVfZnVuIiwiY3JlYXRlZF9pbl9mdW4iLCJwYXJlbnQwX2Z1biIsImFfMDY2IiwiYl8wNjciLCJwYXJlbnQxX2FuZF9iZXlvbmRfZnVuIiwiYV8wNjQiLCJiXzA2NSIsIm51bV9wYXJlbnRzX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVycyIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwiZXRhIiwiYV8wNjIiLCJiXzA2MyIsImNoYW5nZWRfYXRfZnVuIiwiY3V0b2ZmX2Z1biIsImtpbmRfZnVuIiwidmFsdWVfb3B0X2Z1biIsInJlY29tcHV0ZWRfYXRfZnVuIiwiaWRfZnVuIiwidW5zYWZlX3ZhbHVlIiwidmFsdWVfZXhuIiwieF8wNzIiLCJnZXRfY3V0b2ZmIiwic2V0X2N1dG9mZiQwIiwiaXNfY29uc3QiLCJvbl91cGRhdGUiLCJvbl91cGRhdGVfaGFuZGxlciIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMiLCJyZXN0JDAiLCJvbl91cGRhdGVfaGFuZGxlciQwIiwiciQwIiwiciQxIiwicmVzdCIsInNldF9raW5kJDAiLCJtYXhfbnVtX3BhcmVudHMiLCJzZXRfcGFyZW50IiwibGluayIsImFkZF9wYXJlbnQiLCJuZXdfbWF4X251bV9wYXJlbnRzIiwibWF4X251bV9jaGlsZHJlbiIsIm5ld19tYXhfbnVtX2NoaWxkcmVuIiwicmVtb3ZlX3BhcmVudCIsImxhc3RfcGFyZW50X2luZGV4Iiwic3dhcF9jaGlsZHJlbl9leGNlcHRfaW5fa2luZCIsImNoaWxkMSIsImNoaWxkMiIsInQyJDAiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJ4XzAyMCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjIiLCJ4XzAyMSIsIm9uX3VwZGF0ZV9leG4iLCJ4XzAyNCIsInByZXYkMCIsIm5leHQkMCIsInhfMDI1IiwieF8wMDIiLCJuYW1lcyIsIm5hbWVzJDAiLCJuYW1lcyQxIiwiZXJyb3Jfc291cmNlXzA3OSIsInNleHBfb2Zfc3RhdHVzIiwiYXJnMV8wMDQiLCJyZXMxXzAwNiIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiIsInNldF9leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdSIsImN1cnJlbnRseV9ydW5uaW5nX25vZGUiLCJzZXRfY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSQwIiwibWFrZV9jcmVhdG9yIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW4kMSIsImFjYyIsIm1hcCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsInJlY29yZCQwIiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZV8wMDgiLCJibmRzXzAwNyIsImJuZHNfMDA3JDAiLCJzZXhwX29mX3QkMSIsIm51bV92YXJfc2V0cyIsInNldF9udW1fdmFyX3NldHMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8iLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWQiLCJzZXRfbnVtX25vZGVzX3JlY29tcHV0ZWQiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJzZXRfbnVtX25vZGVzX2ludmFsaWRhdGVkIiwibnVtX25vZGVzX2NyZWF0ZWQiLCJzZXRfbnVtX25vZGVzX2NyZWF0ZWQiLCJudW1fbm9kZXNfY2hhbmdlZCIsInNldF9udW1fbm9kZXNfY2hhbmdlZCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkiLCJzZXRfbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2EiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UiLCJzZXRfa2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmEiLCJ3ZWFrX2hhc2h0YmxzIiwib25seV9pbl9kZWJ1ZyIsInNldF9vbmx5X2luX2RlYnVnIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24iLCJkaXNhbGxvd2VkX29ic2VydmVycyIsIm5ld19vYnNlcnZlcnMiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzIiwiYWxsX29ic2VydmVycyIsInNldF9hbGxfb2JzZXJ2ZXJzIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJzZXRfbnVtX2FjdGl2ZV9vYnNlcnZlcnMiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSIsImFkanVzdF9oZWlnaHRzX2hlYXAiLCJjdXJyZW50X3Njb3BlIiwic2V0X2N1cnJlbnRfc2NvcGUiLCJzdGFiaWxpemF0aW9uX251bSIsInNldF9zdGFiaWxpemF0aW9uX251bSIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCIsInN0YXR1cyIsInNldF9zdGF0dXMiLCJudW1fdmFyX3NldHMkMCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQxIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDIiLCJudW1fbm9kZXNfcmVjb21wdXRlZCQwIiwibnVtX25vZGVzX2ludmFsaWRhdGVkJDAiLCJudW1fbm9kZXNfY3JlYXRlZCQwIiwibnVtX25vZGVzX2NoYW5nZWQkMCIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkkMCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5JDAiLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlJDAiLCJ3ZWFrX2hhc2h0YmxzJDAiLCJvbmx5X2luX2RlYnVnJDAiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzJDAiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQwIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uJDAiLCJkaXNhbGxvd2VkX29ic2VydmVycyQwIiwibmV3X29ic2VydmVycyQwIiwiZmluYWxpemVkX29ic2VydmVycyQwIiwiYWxsX29ic2VydmVycyQwIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnMkMCIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDAiLCJhZGp1c3RfaGVpZ2h0c19oZWFwJDAiLCJyZWNvbXB1dGVfaGVhcCQwIiwiY3VycmVudF9zY29wZSQwIiwic3RhYmlsaXphdGlvbl9udW0kMCIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQwIiwic3RhdHVzJDAiLCJtYWtlX2NyZWF0b3IkMCIsInN0YXR1c19mdW4iLCJzdGFiaWxpemF0aW9uX251bV9mdW4iLCJjdXJyZW50X3Njb3BlX2Z1biIsInJlY29tcHV0ZV9oZWFwX2Z1biIsImFkanVzdF9oZWlnaHRzX2hlYXBfZnVuIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZnVuIiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZnVuIiwiYWxsX29ic2VydmVyc19mdW4iLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2Z1biIsIm5ld19vYnNlcnZlcnNfZnVuIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZnVuIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2Z1biIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uX2Z1biIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZnVuIiwib25seV9pbl9kZWJ1Z19mdW4iLCJ3ZWFrX2hhc2h0YmxzX2Z1biIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZiIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2Z1biIsIm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnlfZiIsIm51bV9ub2Rlc19jaGFuZ2VkX2Z1biIsIm51bV9ub2Rlc19jcmVhdGVkX2Z1biIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZF9mdW4iLCJudW1fbm9kZXNfcmVjb21wdXRlZF9mdW4iLCJudW1fdmFyX3NldHNfZnVuIiwic3RhdHVzX2dlbiIsImJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZCQxIiwiY29tcGlsZV9hY2MkMiIsInN0YWJpbGl6YXRpb25fbnVtX2dlbiIsImNvbXBpbGVfYWNjJDMiLCJjdXJyZW50X3Njb3BlX2dlbiIsImNvbXBpbGVfYWNjJDQiLCJyZWNvbXB1dGVfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ1IiwiYWRqdXN0X2hlaWdodHNfaGVhcF9nZW4iLCJjb21waWxlX2FjYyQ2IiwicHJvcGFnYXRlX2ludmFsaWRpdHlfZ2VuIiwiY29tcGlsZV9hY2MkNyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJhbGxfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDkiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEwIiwibmV3X29ic2VydmVyc19nZW4iLCJjb21waWxlX2FjYyQxMSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzX2dlbiIsImNvbXBpbGVfYWNjJDE1Iiwib25seV9pbl9kZWJ1Z19nZW4iLCJjb21waWxlX2FjYyQxNiIsIndlYWtfaGFzaHRibHNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlX2ciLCJjb21waWxlX2FjYyQxOCIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5X2dlbiIsImNvbXBpbGVfYWNjJDE5IiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9nIiwiY29tcGlsZV9hY2MkMjAiLCJudW1fbm9kZXNfY2hhbmdlZF9nZW4iLCJjb21waWxlX2FjYyQyMSIsIm51bV9ub2Rlc19jcmVhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIyIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2dlbiIsImNvbXBpbGVfYWNjJDIzIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjQiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMyIsImNvbXBpbGVfYWNjJDI1IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDQiLCJjb21waWxlX2FjYyQyNiIsIm51bV92YXJfc2V0c19nZW4iLCJjcmVhdGUkMSIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQyIiwic3RhdHVzXzAxNSIsInN0YWJpbGl6YXRpb25fbnVtXzAxOSIsImN1cnJlbnRfc2NvcGVfMDIxIiwicHJvcGFnYXRlX2ludmFsaWRpdHlfMDI3IiwiYWRqdXN0X2hlaWdodHNfaGVhcF8wMjUiLCJyZWNvbXB1dGVfaGVhcF8wMjMiLCJudW1fYWN0aXZlX29ic2VydmVyc18wMjkiLCJhbGxfb2JzZXJ2ZXJzXzAzMSIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfMDQzIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fMDQxIiwic2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXzAzOSIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzXzAzNyIsIm5ld19vYnNlcnZlcnNfMDM1IiwiZmluYWxpemVkX29ic2VydmVyc18wMzMiLCJvbmx5X2luX2RlYnVnXzA0NSIsIndlYWtfaGFzaHRibHNfMDQ3Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV8wIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfMDUxIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV8wIiwibnVtX25vZGVzX2NoYW5nZWRfMDU1IiwibnVtX25vZGVzX2NyZWF0ZWRfMDU3IiwibnVtX25vZGVzX2ludmFsaWRhdGVkXzA1OSIsIm51bV9ub2Rlc19yZWNvbXB1dGVkXzA2MSIsIm51bV92YXJfc2V0c18wNjciLCJhcmdfMDY4IiwiYm5kc18wMTQiLCJhcmdfMDY2IiwiYm5kc18wMTQkMCIsImFyZ18wNjQiLCJibmRzXzAxNCQxIiwiYXJnXzA2MiIsImJuZHNfMDE0JDIiLCJhcmdfMDYwIiwiYm5kc18wMTQkMyIsImJuZHNfMDE0JDQiLCJibmRzXzAxNCQ1IiwiYm5kc18wMTQkNiIsImJuZHNfMDE0JDciLCJibmRzXzAxNCQ4IiwiYm5kc18wMTQkOSIsImJuZHNfMDE0JDEwIiwiYm5kc18wMTQkMTEiLCJibmRzXzAxNCQxMiIsImJuZHNfMDE0JDEzIiwiYm5kc18wMTQkMTQiLCJibmRzXzAxNCQxNSIsImJuZHNfMDE0JDE2IiwiYm5kc18wMTQkMTciLCJibmRzXzAxNCQxOCIsImJuZHNfMDE0JDE5IiwiYm5kc18wMTQkMjAiLCJibmRzXzAxNCQyMSIsImJuZHNfMDE0JDIyIiwiYm5kc18wMTQkMjMiLCJibmRzXzAxNCQyNCIsImJuZHNfMDE0JDI1IiwiZmlyZWRfYWxhcm1fdmFsdWVzIiwic2V0X2ZpcmVkX2FsYXJtX3ZhbHVlcyIsImhhbmRsZV9maXJlZCIsInRpbWluZ193aGVlbCIsImZpcmVkX2FsYXJtX3ZhbHVlcyQwIiwiaGFuZGxlX2ZpcmVkJDAiLCJub3ckMCIsInRpbWluZ193aGVlbCQwIiwibWFrZV9jcmVhdG9yJDEiLCJ0aW1pbmdfd2hlZWxfZnVuIiwibm93X2Z1biIsImhhbmRsZV9maXJlZF9mdW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZnVuIiwidGltaW5nX3doZWVsX2dlbiIsIm5vd19nZW4iLCJoYW5kbGVfZmlyZWRfZ2VuIiwiZmlyZWRfYWxhcm1fdmFsdWVzX2dlbiIsImNyZWF0ZSQyIiwibWFwJDMiLCJpdGVyJDMiLCJmb2xkJDMiLCJtYXBfcG9seSQxIiwiZm9yX2FsbCQzIiwiZXhpc3RzJDMiLCJ0b19saXN0JDMiLCJpdGVyJDQiLCJmb2xkJDQiLCJmb3JfYWxsJDQiLCJleGlzdHMkNCIsInRvX2xpc3QkNCIsIm1hcCQ0Iiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQxIiwic2V4cF9vZl90JDMiLCJub3dfMDcyIiwidGltaW5nX3doZWVsXzA3MCIsImZpcmVkX2FsYXJtX3ZhbHVlc18wNzYiLCJhcmdfMDc3IiwiYm5kc18wNjkiLCJhcmdfMDc1IiwiYm5kc18wNjkkMCIsImFyZ18wNzMiLCJibmRzXzA2OSQxIiwiYXJnXzA3MSIsImJuZHNfMDY5JDIiLCJpbnZhcmlhbnQkMSIsIm5vdyQxIiwiY2xvY2siLCJ0aW1pbmdfd2hlZWxfbGVuZ3RoIiwibnVtX3N0YWJpbGl6ZXMiLCJpdGVyX29ic2VydmVycyIsImRpcmVjdGx5X29ic2VydmVkIiwiaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyIsInRfb2Zfc2V4cCIsInhfMDg1Iiwic2V4cF8wODQiLCJhcmcxXzA4MSIsImFyZzBfMDgwIiwicmVzMF8wODIiLCJyZXMxXzA4MyIsInBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhciIsInNleHBfb2ZfdCQ0IiwibWF4X251bV9wYXJlbnRzXzA4NyIsImFyZ18wOTAiLCJhcmcxXzA5MiIsImFyZzBfMDkxIiwicmVzMF8wOTMiLCJyZXMxXzA5NCIsImJuZHNfMDg2IiwiYXJnXzA4OCIsImJuZHNfMDg2JDAiLCJzdGF0cyIsIm51bV9uZWNlc3Nhcnlfbm9kZXMiLCJtYXhfbnVtX3BhcmVudHMkMCIsIm51bV9ub2Rlc19ieV9udW1fcGFyZW50cyIsIm51bV9ub2RlcyIsImFtX3N0YWJpbGl6aW5nIiwicmFpc2VkX2V4biIsImludmFyaWFudCQyIiwiaW50ZXJuYWxfb2JzZXJ2ZXIiLCJ4XzA5NSIsInBhY2tlZCIsImVuc3VyZV9ub3Rfc3RhYmlsaXppbmciLCJhbGxvd19pbl91cGRhdGVfaGFuZGxlciIsImJhY2t0cmFjZSQwIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24kMSIsInJlbW92ZV9jaGlsZHJlbiIsInJlbW92ZV9jaGlsZCIsImNoZWNrX2lmX3VubmVjZXNzYXJ5IiwiYmVjYW1lX3VubmVjZXNzYXJ5IiwicCIsInUiLCJyZW1vdmVfYWxhcm0iLCJpbnZhbGlkYXRlX25vZGUiLCJpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmgiLCJyZXNjb3BlX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiZmlyc3Rfbm9kZV9vbl9yaHMiLCJuZXdfc2NvcGUiLCJwcm9wYWdhdGVfaW52YWxpZGl0eSQxIiwiZXhwZXJ0IiwiYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oIiwid2FzX25lY2Vzc2FyeSIsInhfMDk2IiwiYmVjYW1lX25lY2Vzc2FyeSIsInJ1bl93aXRoX3Njb3BlIiwic2NvcGUiLCJzYXZlZCIsImV4biQwIiwid2l0aGluX3Njb3BlIiwiY2hhbmdlX2NoaWxkIiwib2xkX2NoaWxkIiwibmV3X2NoaWxkIiwib2xkX2NoaWxkJDAiLCJhZGRfYWxhcm0iLCJyZWNvbXB1dGUiLCJtYXliZV9jaGFuZ2VfdmFsdWUiLCJvbGRfcmhzIiwib2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsImNvcHlfY2hpbGQiLCJvbmx5X2ZyZWV6ZV93aGVuIiwiZWxzZSQwIiwidGhlbiIsImRlc2lyZWRfYnJhbmNoIiwibWFpbiQxIiwib2xkX3JocyQwIiwicmhzJDEiLCJyaHMkMiIsIm4xIiwiY2xvY2skMCIsImF0JDAiLCJjbG9jayQxIiwiY2hpbGQkMSIsInN0ZXBfZnVuY3Rpb24iLCJzdGVwX2Z1bmN0aW9uX3ZhbHVlIiwiYXQkMSIsIm4yIiwibjEkMCIsIm4zIiwibjIkMCIsIm4xJDEiLCJmJDIiLCJuNCIsIm4zJDAiLCJuMiQxIiwibjEkMiIsImYkMyIsIm41IiwibjQkMCIsIm4zJDEiLCJuMiQyIiwibjEkMyIsImYkNCIsIm42IiwibjUkMCIsIm40JDEiLCJuMyQyIiwibjIkMyIsIm4xJDQiLCJmJDUiLCJuNyIsIm42JDAiLCJuNSQxIiwibjQkMiIsIm4zJDMiLCJuMiQ0IiwibjEkNSIsImYkNiIsIm44IiwibjckMCIsIm42JDEiLCJuNSQyIiwibjQkMyIsIm4zJDQiLCJuMiQ1IiwibjEkNiIsImYkNyIsIm45IiwibjgkMCIsIm43JDEiLCJuNiQyIiwibjUkMyIsIm40JDQiLCJuMyQ1IiwibjIkNiIsIm4xJDciLCJmJDgiLCJuMTAiLCJuOSQwIiwibjgkMSIsIm43JDIiLCJuNiQzIiwibjUkNCIsIm40JDUiLCJuMyQ2IiwibjIkNyIsIm4xJDgiLCJmJDkiLCJuMTEiLCJuMTAkMCIsIm45JDEiLCJuOCQyIiwibjckMyIsIm42JDQiLCJuNSQ1IiwibjQkNiIsIm4zJDciLCJuMiQ4IiwibjEkOSIsImYkMTAiLCJuMTIiLCJuMTEkMCIsIm4xMCQxIiwibjkkMiIsIm44JDMiLCJuNyQ0IiwibjYkNSIsIm41JDYiLCJuNCQ3IiwibjMkOCIsIm4yJDkiLCJuMSQxMCIsImYkMTEiLCJuMTMiLCJuMTIkMCIsIm4xMSQxIiwibjEwJDIiLCJuOSQzIiwibjgkNCIsIm43JDUiLCJuNiQ2IiwibjUkNyIsIm40JDgiLCJuMyQ5IiwibjIkMTAiLCJuMSQxMSIsImYkMTIiLCJuMTQiLCJuMTMkMCIsIm4xMiQxIiwibjExJDIiLCJuMTAkMyIsIm45JDQiLCJuOCQ1IiwibjckNiIsIm42JDciLCJuNSQ4IiwibjQkOSIsIm4zJDEwIiwibjIkMTEiLCJuMSQxMiIsImYkMTMiLCJuMTUiLCJuMTQkMCIsIm4xMyQxIiwibjEyJDIiLCJuMTEkMyIsIm4xMCQ0IiwibjkkNSIsIm44JDYiLCJuNyQ3IiwibjYkOCIsIm41JDkiLCJuNCQxMCIsIm4zJDExIiwibjIkMTIiLCJuMSQxMyIsImYkMTQiLCJjaGlsZF9pbmRleCQwIiwidSQwIiwiY2FuX3JlY29tcHV0ZV9ub3ciLCJiIiwiaiIsInJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbiIsInhfMDk3IiwidW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSIsImRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMiLCJvYnNlcnZlcl9maW5hbGl6ZXIiLCJjcmVhdGVfb2JzZXJ2ZXIiLCJzaG91bGRfZmluYWxpemUiLCJhZGRfbmV3X29ic2VydmVycyIsIm9sZF9hbGxfb2JzZXJ2ZXJzIiwib2xkX29ic2VydmVycyIsIm9ic2VydmVyX3ZhbHVlX2V4biIsInhfMDk4Iiwib2JzZXJ2ZXJfdmFsdWUiLCJub2RlX29uX3VwZGF0ZSIsIm9ic2VydmVyX29uX3VwZGF0ZV9leG4iLCJzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyIsInNldF92YXIiLCJyZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMiLCJ3ZWFrX2hhc2h0YmwiLCJzdGFiaWxpemVfc3RhcnQiLCJzdGFiaWxpemVfZW5kIiwibWF0Y2gkMCIsIm5vZGVfdXBkYXRlJDAiLCJyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiIsInJhaXNlZCIsInN0YWJpbGl6ZSIsInNleHBfb2ZfdCQ1IiwiZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIiwiY3JlYXRlX25vZGVfaW4iLCJjcmVhdGVfbm9kZSIsImNyZWF0ZV9ub2RlX3RvcCIsImNyZWF0ZV92YXIiLCJ1c2VfY3VycmVudF9zY29wZSIsImNvbnN0JDAiLCJtYXAkNSIsIm1hcDIiLCJib3RoIiwibWFwMyIsIm1hcDQiLCJtYXA1IiwibWFwNiIsIm1hcDciLCJtYXA4IiwibWFwOSIsIm1hcDEwIiwibWFwMTEiLCJtYXAxMiIsIm1hcDEzIiwibWFwMTQiLCJtYXAxNSIsInByZXNlcnZlX2N1dG9mZiIsImlucHV0Iiwib3V0cHV0IiwiZGVwZW5kX29uIiwibmVjZXNzYXJ5X2lmX2FsaXZlIiwiYmluZDIiLCJ2MSIsInYyIiwiYmluZDMiLCJ2MyIsImJpbmQ0IiwidjQiLCJpZiQwIiwibGF6eV9mcm9tX2Z1biIsImRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpeiIsIm1lbW9pemVfZnVuX2J5X2tleSIsImhhc2hhYmxlIiwicHJvamVjdF9rZXkiLCJpbml0aWFsX3NpemUiLCJ0YWJsZSIsImtleSIsImIkMCIsImFsbCIsIm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCIsIm51bV9pbnZhbGlkIiwiYWNjdW0iLCJ4JDAiLCJmX2ludmVyc2UkMCIsImF0X2xlYXN0X2tfb2YiLCJib29sX3RvX2ludCIsIm51bV90cnVlIiwiZXhpc3RzJDUiLCJmb3JfYWxsJDUiLCJzdW0iLCJ6ZXJvIiwic3ViIiwib3B0X3N1bSIsInN1bV9pbnQiLCJzdW1fZmxvYXQiLCJzZXRfZnJlZXplIiwidGltZSIsImFmdGVyIiwic3BhbiIsIm5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IiwiYmFzZSIsInZhbHVlX2F0IiwiaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiIsImFkdmFuY2VfY2xvY2siLCJtYWluJDIiLCJjcmVhdGVfY2xvY2siLCJ0aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQiLCJjcmVhdGUkMyIsIkNvbmZpZyIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5IiwiZXhwZXJ0X2tpbmRfb2Zfbm9kZSIsInhfMDk5IiwiY3JlYXRlJDQiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biIsImN1cnJlbnQiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8iLCJ4XzEwMSIsInhfMTAwIiwiYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfJDAiLCJ4XzEwMyIsInhfMTAyIiwibWFrZV9zdGFsZSQwIiwiZV9vcHQiLCJpbnZhbGlkYXRlIiwiYWRkX2RlcGVuZGVuY3kiLCJkZXAiLCJyZW1vdmVfZGVwZW5kZW5jeSIsImVkZ2UiLCJlZGdlX2luZGV4IiwibGFzdF9lZGdlIiwibGFzdF9lZGdlX2luZGV4Iiwib25fY2hhbmdlIiwicmVkdWNlIiwicmVkdWNlciIsImxldmVsX2JpdHMiLCJjcmVhdGVfaW50ZXJuYWwiLCJkZWZhdWx0X21heF9oZWlnaHRfYWxsb3dlZCIsInNleHBfb2Zfc3RhdGVfd2l0bmVzcyIsIndpdGhpbiIsInBhY2siLCJyZXR1cm4kMCIsIm1hcDIkMCIsIm1hcDMkMCIsIm1hcDQkMCIsIm1hcDUkMCIsIm1hcDYkMCIsIm1hcDckMCIsIm1hcDgkMCIsIm1hcDkkMCIsIm1hcDEwJDAiLCJtYXAxMSQwIiwibWFwMTIkMCIsIm1hcDEzJDAiLCJtYXAxNCQwIiwibWFwMTUkMCIsImJpbmQyJDAiLCJiaW5kMyQwIiwiYmluZDQkMCIsInN5bWJvbF9tYXAiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDAiLCJsYXp5X2Zyb21fZnVuJDAiLCJtZW1vaXplX2Z1biIsImFycmF5X2ZvbGQkMCIsInJlZHVjZV9iYWxhbmNlZCIsInJlcGxhY2UiLCJ4XzAxNyIsImRpc2FsbG93X2Z1dHVyZV91c2UkMCIsImluY3Jfc3RhdGUkMSIsImFsYXJtX3ByZWNpc2lvbiIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyIsInN0YXJ0JDAiLCJhbGFybV9wcmVjaXNpb24kMCIsIndhdGNoX25vdyIsImFkdmFuY2VfY2xvY2tfYnkiLCJmcmVlemUkMCIsIndoZW4iLCJkZXBlbmRfb24kMCIsInN0YWJpbGl6ZSQwIiwiYW1fc3RhYmlsaXppbmckMCIsIm9mX2FfMDE4IiwiYXJnMF8wMTkiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwibm9kZV92YWx1ZSIsInNleHBfb2ZfdCQ2IiwiYm90aCQwIiwieDEiLCJ4MiIsIm1hcDIkMSIsIm1hcDMkMSIsIm1hcDQkMSIsIm1hcDUkMSIsIm1hcDYkMSIsIm1hcDckMSIsIm1hcDgkMSIsIm1hcDkkMSIsIm1hcDEwJDEiLCJtYXAxMSQxIiwibWFwMTIkMSIsIm1hcDEzJDEiLCJtYXAxNCQxIiwibWFwMTUkMSIsImJpbmQyJDEiLCJiaW5kMyQxIiwiYmluZDQkMSIsIndlYWtfbWVtb2l6ZV9mdW4iLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUkMCIsImNvbnN0JDEiLCJyZXR1cm4kMSIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1IiwiZGVidWciLCJub19pbnN0cnVtZW50YXRpb24iLCJmIiwid2l0aF9vbGQiLCJpbnN0cnVtZW50YXRpb24iLCJpIiwib2xkIiwiYSIsImIiLCJjdXRvZmYiLCJtYXAiLCJkYXRhX2VxdWFsIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiY3VyIiwib2xkJDAiLCJhY2MiLCJjaGFuZ2UiLCJrZXkiLCJuZXckMCIsInVub3JkZXJlZF9mb2xkIiwidXBkYXRlIiwic3BlY2lhbGl6ZWRfaW5pdGlhbCIsImluaXQiLCJhZGQiLCJyZW1vdmUiLCJmaW5hbGl6ZSIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJvbGRfb3V0Iiwib2xkX2luIiwiaW5pdCQwIiwibmV3JDEiLCJpbml0aWFsIiwidW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHMiLCJpbmNyX21hcCIsInVwZGF0ZSQxIiwib3V0ZXJfa2V5IiwiaW5uZXJfa2V5Iiwib2xkX2lubmVyX21hcCIsIm5ld19pbm5lcl9tYXAiLCJkaWZmIiwiZGF0YV9yZW1vdmVkIiwiZGF0YV9hZGRlZCIsImlubmVyX21hcCIsImRhdGEiLCJ3aXRoX2NvbXBhcmF0b3IiLCJnZXRfY29tcGFyYXRvciIsIngiLCJ3aXRoX2NvbXBhcmF0b3IkMCIsIm9mX3NldCIsInNldCIsImNvbXBhcmF0b3IiLCJvbGRfaW5wdXQiLCJvbGRfb3V0cHV0IiwibmV3X2lucHV0IiwibmV3X291dHB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJnZW5lcmljX21hcGkiLCJ3aXRuZXNzIiwiaW5wdXQiLCJyZXMiLCJvdXRwdXRfZGF0YSIsIm1hcGkiLCJmaWx0ZXJfbWFwaSIsImZpbHRlcl9tYXAiLCJ3aXRoX29sZDIiLCJpMSIsImkyIiwiYTEiLCJhMiIsInVub3JkZXJlZF9mb2xkX3dpdGhfZXh0cmEiLCJleHRyYSIsImV4dHJhX2NoYW5nZWQiLCJleHRyYV9lcXVhbCIsIm5ld19leHRyYSIsIm9sZF9leHRyYSIsImFjYyQwIiwibWFwaV9jb3VudCIsIm5ld19rZXkiLCJuIiwicHJldl9rZXkiLCJtYXBfY291bnQiLCJtaW5faGVscGVyIiwibWluIiwibWF4X2hlbHBlciIsIm1heCIsImJvdW5kc19oZWxwZXIiLCJtYXBpX21pbiIsIm1hcGlfbWF4IiwibWFwaV9ib3VuZHMiLCJtYXBfbWluIiwibWFwX21heCIsIm1pbl92YWx1ZSIsIm1heF92YWx1ZSIsIm1hcF9ib3VuZHMiLCJ2YWx1ZV9ib3VuZHMiLCJtZXJnZV9zaGFyZWRfaW1wbCIsIm5ld19sZWZ0X21hcCIsIm5ld19yaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0Iiwib2xkX3JpZ2h0X21hcCIsIm9sZF9sZWZ0X21hcCIsIm9sZF9sZWZ0X21hcCQwIiwibGVmdF9kaWZmIiwicmlnaHRfZGlmZiIsInJpZ2h0X2tleSIsImxlZnRfa2V5IiwiZGlmZl9lbGVtZW50Iiwia2V5JDAiLCJuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJyaWdodF9kYXRhX29wdCQwIiwibGVmdF9kYXRhX29wdCIsInJpZ2h0X2RpZmYkMCIsImxlZnRfZGlmZiQwIiwicmlnaHRfZGF0YV9vcHQkMiIsImxlZnRfZGF0YV9vcHQkMCIsInkiLCJvdXRwdXRfZGF0YV9vcHQiLCJ5JDAiLCJtZXJnZV9ib3RoX3NvbWUiLCJvdXRfZXF1YWwiLCJlbXB0eSIsImxlZnRfYW5kX3JpZ2h0X2RhdGFfb3B0IiwibGVmdF9kYXRhIiwicmlnaHRfZGF0YSIsInByZXZfb3V0IiwicHJldl9vdXQkMCIsImdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3IiLCJsaHMiLCJpbmNyZW1lbnRhbF9zdGF0ZSIsImVtcHR5X21hcCIsInByZXZfbWFwIiwicHJldl9ub2RlcyIsInJlc3VsdCIsIm9uX2lubmVyX2NoYW5nZSIsIm9wdCIsImxoc19jaGFuZ2UiLCJuZXdfbm9kZXMiLCJub2RlcyIsImNoYW5nZWQiLCJkZXAiLCJub2RlIiwibm9kZXMkMCIsIm5vZGUkMCIsIm5vZGUkMSIsImMiLCJ1c2VyX2Z1bmN0aW9uX2RlcCIsImZpbHRlcl9tYXBpJDAiLCJtYXBpJDAiLCJtYXAkMCIsImZpbHRlcl9tYXAkMCIsIm1lcmdlJDAiLCJtYXAxIiwibWFwMiIsInVuemlwX21hcGkiLCJsZWZ0X3Jlc3VsdF9lcXVhbCIsInJpZ2h0X3Jlc3VsdF9lcXVhbCIsInBhaXIiLCJkYXRhX2VxdWFsJDAiLCJsZWZ0X3Jlc3VsdF9lcXVhbCQwIiwicmlnaHRfcmVzdWx0X2VxdWFsJDAiLCJsZWZ0X2FjYyIsImxlZnRfcmVzdWx0IiwicmlnaHRfYWNjIiwicmlnaHRfcmVzdWx0IiwiaW5wdXRfY2hhbmdlIiwibGVmdCQwIiwibCIsInJpZ2h0JDAiLCJyIiwicmlnaHQiLCJsZWZ0IiwicHJldiIsInByZXZfYiIsInByZXZfYSIsIm5ld19iIiwibmV3X2EiLCJlbGVtZW50IiwidW56aXAiLCJ1bnppcF9tYXBpJDAiLCJyaWdodF9kZXAiLCJsZWZ0X2RlcCIsInJpZ2h0X2luY3IiLCJsZWZ0X2luY3IiLCJsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwIiwicmlnaHRfdXNlcl9mdW5jdGlvbl9kZXAiLCJrZXlzIiwicGFydGl0aW9uX21hcGkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsInBhcnRpdGlvbl9tYXBpJDAiLCJmbGF0dGVuIiwic3RhdGUiLCJpbmNyIiwiam9pbiIsIm1hcF9pbmNyIiwicmVzdWx0X21hcCIsIm9sZF9tYXBfb2ZfaW5jcnMiLCJjdXJyZW50X2RlcGVuZGVuY2llcyIsImFkZF9zdWJub2RlIiwiZGF0YV9ub2RlIiwibmV3X2RlcCIsInJlbW92ZV9zdWJub2RlIiwibWFwX29mX2luY3JzIiwibmV3X2RlcGVuZGVuY3lfbWFwIiwiZGF0YV9ub2RlJDAiLCJzZXBhcmF0ZSIsImlucHV0X21hcCIsIm91dHB1dF9tYXBfbm9kZSIsIm1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwXyIsImlucHV0X21hcF9jaGFuZ2VkIiwiZGVwZW5kZW5jeSIsInByZXZfaW5wdXRfbWFwIiwib3V0cHV0X21hcCIsImV4cGVydF9ub2RlcyIsIm9sZF9ub2RlIiwic3VicmFuZ2UiLCJyYW5nZSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heWJlX2JvdW5kX2VxdWFsIiwiYV8wMDgiLCJiXzAwOSIsImFfMDEwIiwiYl8wMTEiLCJhXzAxMiIsImJfMDEzIiwicmFuZ2VfaXNfZW1wdHkiLCJtaW4kMCIsIm1heCQwIiwibWF4JDEiLCJtaW4kMSIsInJhbmdlX2luY2x1ZGVzIiwicmFuZ2UkMCIsImZyb21fc2NyYXRjaCIsIm9sZF9yYW5nZSIsIm9sZF9taW4iLCJvbGRfbWFwIiwib2xkX21heCIsIm9sZF9yZXMiLCJvbGRfbWF4JDAiLCJwYXJhbSIsImFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIiwib3V0c2lkZSIsIm91dHNpZGUkMCIsIm91dHNpZGVfY3V0b2ZmIiwid2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlIiwid2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSIsIm1hcF9hcHBlbmRfZXhuIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJvbGRfbWluJDAiLCJvbGRfbWluJDEiLCJvbGRfbWF4JDEiLCJ3aXRoX25ld19rZXlzX25vd19pbl9yYW5nZSIsInJla2V5Iiwib3V0ZXJfY29tcGFyYXRvciIsImFkZHMiLCJvdXRwdXQkMCIsIm5ld19lbnRyeSIsImluZGV4X2J5aSIsImluZGV4IiwiaW5uZXJfY29tcGFyYXRvciIsIm91dGVyX21hcCIsImlubmVyX21hcCQwIiwiaW5kZXhfYnkiLCJpc19rbm93biIsInRvX29wdGlvbiIsImZpbmRfa2V5X3JhbmdlX2xpbmVhciIsImZyb20iLCJ0byIsImxlbiIsImJlZ2luX2tleSIsImVuZF9rZXkiLCJmaW5kX2tleXMiLCJmb2xkIiwic3RhcnRfcG9zIiwiYWR2YW5jZV9wb3MiLCJwb3MiLCJiZWdpbl9rZXkkMCIsImVuZF9rZXkkMCIsImZpbmRfb2Zmc2V0IiwiY2hhbmdlZF9rZXkiLCJyYW5rIiwiY29tcGFyZV9rZXkiLCJzYW1lX2tleSIsInByb2Nlc3MiLCJuZXdfbWFwIiwib2xkX3JhbmsiLCJvbGRfa2V5Iiwib2xkX3JhbmskMCIsImRpZmZfa2V5Iiwib2xkX3JhbmskMSIsIm9sZCQxIiwidXBwZXJfYm91bmQiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kJDAiLCJsb3dlcl9ib3VuZCQwIiwic3VicmFuZ2UkMCIsInN1YnJhbmdlX2J5X3JhbmsiLCJmaW5kX2tleV9yYW5nZSIsImVuZF9rZXlfb3B0JDAiLCJvbGRfdG8iLCJvbGRfZnJvbSIsInJhbmdlX29mZnNldF9iZWdpbiIsInJhbmdlX29mZnNldF9lbmQiLCJhZGp1c3RfYW5kX29mZnNldCIsImJ5JDEiLCJrZXkkMSIsImJ5JDIiLCJieSIsImNsb3Nlc3RfZGlyIiwiYnkkMCIsIm9mZnNldF9lbmQiLCJvZmZzZXRfYmVnaW4iLCJtYXBfb2Zmc2V0X2VuZCIsIm1hcF9vZmZzZXRfYmVnaW4iLCJlbmRfa2V5X29wdCQyIiwiYmVnaW5fa2V5X29wdCIsIm1hcF9vZmZzZXRfYmVnaW4kMCIsImVuZF9rZXlfb3B0IiwiYmVnaW5fa2V5X29wdCQwIiwic3ltYm9sIiwiYm91bmQiLCJyZXR1cm4kMCIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxNCIsImxiIiwicGF0dGVybl9zeW50YXhfMDE1IiwidSIsInBhdHRlcm5fc3ludGF4XzAxNiIsInViIiwicGF0dGVybl9zeW50YXhfMDE3IiwibGV0X3N5bnRheF8wMjIiLCJsJDAiLCJwYXR0ZXJuX3N5bnRheF8wMTgiLCJsYiQwIiwicGF0dGVybl9zeW50YXhfMDE5IiwibGV0X3N5bnRheF8wMjYiLCJ1JDAiLCJwYXR0ZXJuX3N5bnRheF8wMjAiLCJ1YiQwIiwicGF0dGVybl9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjkiLCJ0cmFuc3Bvc2UiLCJrMl9jb21wYXJhdG9yIiwibSIsImsxX2NvbXBhcmF0b3IiLCJrMSIsImsyIiwidmFsdWUiLCJhY2NfaW5uZXIiLCJhY2NfaW5uZXIkMCIsImNvbGxhcHNlX2J5IiwibWVyZ2Vfa2V5cyIsImNvbGxhcHNlIiwiaW5uZXJfY29tcGFyYXRvciQwIiwiZXhwYW5kIiwiY291bnRpIiwiY291bnQiLCJleGlzdHNpIiwiZXhpc3RzIiwic3VtIiwiR3JvdXAiLCJ2IiwiZm9yX2FsbGkiLCJmb3JfYWxsIiwidW5vcmRlcmVkX2ZvbGQkMCIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzJDAiLCJjcmVhdGUiLCJzZWxmIiwidXBkYXRlcl9ub2RlIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJpbmZvX3Blcl9rZXkiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsIm1hdGNoJDAiLCJzYXZlZF92YWx1ZSIsIm1hdGNoJDIiLCJtYXRjaCQzIiwidiQwIiwibWF0Y2gkNCIsInYkMSIsIm1hdGNoJDUiLCJ2JDIiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJjb250ZW50c19iaWdzdHIiLCJjcmVhdGUkMCIsImdldF9kb3dubG9hZCIsImJ1dHRvbl90ZXh0IiwiZW5hYmxlZCIsIm9uX2NsaWNrIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMDMiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wMTkiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInhfMDA0IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwic2V4cF9vZl90Iiwib2ZfYV8wMDUiLCJyaWdodF8wMTMiLCJib3R0b21fMDExIiwibGVmdF8wMDkiLCJ0b3BfMDA3IiwiYXJnXzAxNCIsImJuZHNfMDA2IiwiYXJnXzAxMiIsImJuZHNfMDA2JDAiLCJhcmdfMDEwIiwiYm5kc18wMDYkMSIsImFyZ18wMDgiLCJibmRzXzAwNiQyIiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwidjQiLCJ2MyIsInYyIiwidjEiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwicG9zIiwicG9zJDAiLCJwb3MkMSIsInBvcyQyIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X3RvcCIsInZfbGVmdCIsInZfYm90dG9tIiwidl9yaWdodCIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImNtcF9hIiwiYV8wMTUiLCJiXzAxNiIsIm4iLCJuJDAiLCJuJDEiLCJyaWdodCQwIiwiYm90dG9tJDAiLCJsZWZ0JDAiLCJ0b3AkMCIsIm1ha2VfY3JlYXRvciIsInRvcF9mdW4iLCJsZWZ0X2Z1biIsImJvdHRvbV9mdW4iLCJyaWdodF9mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJ0b3BfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImxlZnRfZ2VuIiwiY29tcGlsZV9hY2MkMiIsImJvdHRvbV9nZW4iLCJjb21waWxlX2FjYyQzIiwicmlnaHRfZ2VuIiwiYWNjIiwibWFwIiwiaXRlciIsImZvbGQiLCJpbml0IiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwibWFwJDEiLCJ0IiwiZiIsImludF9oZWlnaHQiLCJpbnRfd2lkdGgiLCJmbG9hdF9oZWlnaHQiLCJmbG9hdF93aWR0aCIsInJvdW5kX2Zsb2F0X3JlY3QiLCJyb3VuZCIsInJvd3Nfb3JfY29sdW1uc19vZl9zZXhwIiwic2V4cF8wMjAiLCJzZXhwX29mX3Jvd3Nfb3JfY29sdW1ucyIsImdyb3VwJDAiLCJiaW5fc2hhcGVfcm93c19vcl9jb2x1bW5zIiwiYmluX3NpemVfcm93c19vcl9jb2x1bW5zIiwiYmluX3dyaXRlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZXJfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zIiwiYmluX3JlYWRfcm93c19vcl9jb2x1bW5zJDAiLCJiaW5fcmVhZGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yb3dzX29yX2NvbHVtbnMiLCJyb3dzIiwiY29sdW1ucyIsImlzX3Jvd3MiLCJpc19jb2x1bW5zIiwicm93c192YWwiLCJjb2x1bW5zX3ZhbCIsInJvd3MkMCIsImNvbHVtbnMkMCIsImZvbGQkMSIsInJvd3NfZnVuIiwiY29sdW1uc19mdW4iLCJpdGVyJDEiLCJtYXAkMiIsIm1ha2VfbWF0Y2hlciIsInJvd3NfZ2VuIiwiY29sdW1uc19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsImNvbXBhcmVfcm93c19vcl9jb2x1bW5zIiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZWxlbWVudF9pc19pbl92aWV3cG9ydCIsInNjcm9sbCIsImlkIiwidmlld3BvcnRfcmVjdF9vZl9lbGVtZW50Iiwidmlld3BvcnRfcmVjdCIsImNsaWVudF9yZWN0X29mX2VsZW1lbnQiLCJib3VuZGluZ19yZWN0IiwiY2xpZW50X3JlY3QiLCJmaW5kX3Zpc2libGVfcmFuZ2UiLCJsZW5ndGgiLCJudGhfZWxlbWVudF9pZCIsImxheW91dCIsImVsZW1lbnRfc2VhcmNoIiwic2VhcmNoX2J5IiwibW9kZSIsIngiLCJudGhfZWxlbWVudCIsImVsdCIsImZpcnN0IiwibGFzdCIsImdldCIsImlzX2FzY2VuZGluZyIsImxlbmd0aCQwIiwidmlld3BvcnRfcmVjdCQwIiwidGFyZ2V0IiwidGFyZ2V0JDAiLCJzZWFyY2hfYnkkMCIsImdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lciIsImVsIiwiZmlsZW5hbWUiLCJwcmludF9lcnJvcmYiLCJmbXQiLCJzIiwicmVxdWVzdF9hbmltYXRpb25fZnJhbWUiLCJjYWxsYmFjayIsImN1cnJlbnRfY29udGV4dCIsInJlcXVlc3RfaWRzIiwiY2FsbGJhY2skMCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsInNldF90aW1lb3V0X2lkIiwiYXNfZm9jdXNhYmxlIiwibWFya19kaXJ0eSIsImlzX2RpcnR5IiwieF8wMDIiLCJ4XzAwMyIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3Iiwic2V0X2xvZ2dpbmdfZmlsdGVyIiwibG9nZ2luZ19maWx0ZXIiLCJnbG9iYWxfaXNfaW5pdGlhbGl6ZWQiLCJhcHBfc3RhdGVzIiwic2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QiLCJzdHJpbmdzIiwic3RyIiwibXVsdGlfbGluZV9zdHJpbmdfbGlzdCIsImdldF90YWdfbmFtZSIsIm5vZGUiLCJub2RlJDAiLCJlIiwibm9kZSQxIiwic3RhcnRfYm9uc2FpIiwiYmluZF90b19lbGVtZW50X3dpdGhfaWQiLCJpbml0aWFsX21vZGVsIiwiQXBwIiwiZGVidWciLCJzdG9wIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsImN1dG9mZiIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJuYW1lZF9sb2dnaW5nX2ZpbHRlcnMkMCIsImZpbHRlcl9uYW1lcyIsImFwcF9pbml0X21lc3NhZ2UiLCJ3aXRoX2FwcF9pZF9vcHQiLCJ1cGRhdGVfc3RhdGUiLCJhcHBfaWRfb3B0IiwiYXBwX2lkX29wdCQwIiwiYXBwX2lkIiwic3RhdGUiLCJ1cGRhdGVfbG9nZ2luZ19maWx0ZXIiLCJ1cGRhdGVfc2hvdWxkX3Byb2ZpbGUiLCJzaG91bGRfcHJvZmlsZSIsInVwZGF0ZV9zaG91bGRfZGVidWciLCJzaG91bGRfZGVidWciLCJibGFuZ19zdHIiLCJibGFuZ19zdHIkMCIsImFwcF9zdGF0ZSIsImJsYW5nIiwiaW52YWxpZF9uYW1lcyIsIm5hbWUiLCJmaWx0ZXIiLCJmaWx0ZXIkMCIsImFjdGlvbl9zZXhwIiwiY29udGVudHMiLCJsb2ciLCJodG1sIiwiaHRtbF9kb20iLCJwYXJlbnQiLCJjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQiLCJldmVudF9uYW1lIiwid2hlcmUiLCJwcmV2X2h0bWwiLCJwcmV2X2VsdCIsInJlZm9jdXNfcm9vdF9lbGVtZW50IiwiZWxlbWVudCIsInRpbWVyX3N0YXJ0IiwicHJvZmlsZSIsInRpbWVyX3N0b3AiLCJiZWZvcmUiLCJhZnRlciIsInJlbGF0ZWRfdGFyZ2V0Iiwic2FmZV9maWx0ZXIiLCJzaG91bGRfbG9nIiwiZXJyIiwiY3VzdG9tX3ByaW50Zl8wMTAiLCJuYW1lZF9maWx0ZXJfYmxhbmdfY2FjaGUiLCJjdXN0b21fcHJpbnRmXzAxMiIsInBlcmZvcm1fdXBkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsInJvb3QiLCJhZGRfbmV3X2F0dHJzIiwiYXR0cnMiLCJwYXRjaCIsIm9sZF90YWdfbmFtZSIsIm5ld190YWdfbmFtZSIsInRhZ3NfdGhlX3NhbWUiLCJzdGFydCIsImFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIiwib2xkX21vZGVsIiwiaW5qZWN0IiwiY29tcG9uZW50Iiwic2NoZWR1bGVfZXZlbnQiLCJzY2hlZHVsZV9hY3Rpb24iLCJlcnJvcl9zb3VyY2VfMDE0IiwiaW52YXJpYW50IiwidCIsIm9mX3N0cmluZyIsInMiLCJ0b19zdHJpbmciLCJlcXVhbCIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImFfMDA1IiwiYl8wMDYiLCJhXzAwOSIsImJfMDEwIiwidXBkYXRlX29mX3NleHAiLCJvZl9hXzAxMSIsInNleHBfMDE2Iiwic2V4cHNfMDE3IiwidmFsdWUiLCJpbnB1dCIsInNleHBzXzAxOSIsImVycm9yIiwibGFzdF92YWxpZCIsInNleHBfb2ZfdXBkYXRlIiwib2ZfYV8wMjEiLCJ2YWx1ZV8wMjUiLCJpbnB1dF8wMjMiLCJhcmdfMDI2IiwiYm5kc18wMjIiLCJhcmdfMDI0IiwiYm5kc18wMjIkMCIsImVycm9yXzAzMiIsImxhc3RfdmFsaWRfMDMwIiwiaW5wdXRfMDI4IiwiYXJnXzAzMyIsImJuZHNfMDI3IiwiYXJnXzAzMSIsImJuZHNfMDI3JDAiLCJhcmdfMDI5IiwiYm5kc18wMjckMSIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInYyIiwidjEiLCJzaXplIiwidjMiLCJ2MiQwIiwidjEkMCIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QiLCJiaW5fd3JpdGVyX2EiLCJ2IiwiYmluX3JlYWRfdCIsIm9mX2EiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3QkMCIsInZfaW5wdXQiLCJ2X3ZhbHVlIiwidl9pbnB1dCQwIiwidl9sYXN0X3ZhbGlkIiwidl9lcnJvciIsImJpbl9yZWFkZXJfdCIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCIsImJpbl9hIiwiY29tcGFyZSIsImFfMDM1IiwiYl8wMzYiLCJuIiwiYV8wMzkiLCJiXzA0MCIsIm4kMCIsIm4kMSIsImFfMDQzIiwiYl8wNDQiLCJlcXVhbF91cGRhdGUiLCJhXzA0NSIsImJfMDQ2IiwiYV8wNDciLCJiXzA0OCIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdXBkYXRlIiwiYmluX3NpemVfdXBkYXRlIiwiYmluX3dyaXRlX3VwZGF0ZSIsImJpbl93cml0ZXJfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlIiwiYmluX3JlYWRfdXBkYXRlJDAiLCJiaW5fcmVhZGVyX3VwZGF0ZSIsImJpbl91cGRhdGUiLCJjb21wYXJlX3VwZGF0ZSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1NiIsImJfMDU3IiwibGlmdCIsIk0iLCJpbnB1dCQxIiwiaW5wdXQkMCIsImV4biQwIiwiZXhuIiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwiZ2V0X2Vycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJtZXJnZSIsInN0cnVjdHVyYWxfbGlzdCIsImNoaWxkcmVuIiwib3JpZW50YXRpb24iLCJtZXJnZV9iZWhhdmlvciIsImxheW91dF9zdHlsZSIsImNoaWxkIiwic2V4cF9vZl90IiwiY29tYmluZSIsImxlZnQiLCJyaWdodCIsImluaXQiLCJlbGVtZW50IiwiZiIsImRvY3VtZW50X2FjdGl2ZV9lbGVtZW50IiwidmFsdWUkMCIsImNoYW5nZV9oYW5kbGVyIiwibm9ybWFsaXplZCIsImNoYW5nZV9oYW5kbGVyJDAiLCJldmVudF9pZCIsIm9uX21vdW50Iiwic3RhdGUiLCJkZXN0cm95IiwidXBkYXRlJDAiLCJvbGRfaW5wdXQiLCJuZXdfaW5wdXQiLCJjcmVhdGUiLCJpbXBsIiwidmFsdWVzIiwic2VsZWN0ZWQiLCJvbl9jaGFuZ2UiLCJleHRyYV9hdHRycyIsImV4dHJhX29wdGlvbl9hdHRycyIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInBsYWNlaG9sZGVyIiwidmFsdWVzJDAiLCJleHRyYV9vcHRpb25fYXR0cnMkMCIsImFfMDU4IiwiYl8wNTkiLCJhXzA2MCIsImJfMDYxIiwib2ZfZW51bSIsIm9mX2VudW1fb3B0IiwiYV8wNjIiLCJiXzA2MyIsImFfMDY0IiwiYl8wNjUiLCJiYXJlYm9uZXNfYnV0dG9uX2xpa2UiLCJjaGVja2VkIiwiaGlkZV9uYXRpdmVfaW5wdXRzIiwic2ltcGxlIiwiZXh0cmFfYXR0cnMkMCIsImRpc2FibGVkJDAiLCJpc19jaGVja2VkIiwibGFiZWwiLCJvbl90b2dnbGUiLCJldiIsImltcGwkMCIsImxheW91dCIsInN0eWxlIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJpdGVtIiwib2ZfdmFsdWVzJDAiLCJvZl9lbnVtJDAiLCJpbXBsJDEiLCJyZXBlYXRlZF9jbGlja19iZWhhdmlvciIsInRhcmdldCIsIm9wdGlvbnMiLCJzZWxlY3RlZF92YWx1ZXMiLCJpc19zZWxlY3RlZCIsIndhc19yZXBlYXRlZF9jbGljayIsIm9mX3ZhbHVlcyQxIiwib2ZfZW51bSQxIiwibGlzdGVuZXIiLCJub3JtYWxpemUiLCJtYXliZV9vbl9yZXR1cm4iLCJvbl9yZXR1cm4iLCJvbl9yZXR1cm4kMCIsImlucHV0X25vZGUiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwidHlwZV9hdHRycyIsImNhbGxfb25faW5wdXRfd2hlbiIsInNob3VsZF9ub3JtYWxpemUiLCJ2YWx1ZSQxIiwib2Zfc3RyaW5nYWJsZSIsInZhbGlkYXRlZCIsIlYiLCJ2YWx1ZV9hdHRyIiwidGV4dCIsInBhc3N3b3JkIiwibnVtYmVyIiwic3RlcCIsInJhbmdlIiwidGltZSIsImRhdGUiLCJkYXRldGltZV9sb2NhbCIsInV0Y19vZmZzZXQiLCJob3VycyIsInpvbmUiLCJwYXJ0cyIsImhyIiwibWluIiwib2ZkYXkiLCJab25lZF90aW1lIiwidGV4dF9hcmVhIiwiY29sb3JfcGlja2VyIiwiZXh0cmFfYXR0ciIsIndpdGhfdmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJvbl9jbGljayIsInJlc3VsdCIsInJlYXNvbiIsInNpbXBsZSQwIiwiaW1wbCQyIiwibmFtZSIsIm9mX3ZhbHVlcyQyIiwiRSIsIm9mX3ZhbHVlc19ob3Jpem9udGFsIiwiYWNjZXB0X2F0dHJzIiwiYWNjZXB0cyIsInMkMCIsImxpc3QiLCJhY2NlcHQiLCJmaWxlcyIsInNpbmdsZSIsImZpbGUiLCJlbXB0eSIsImlzX2VtcHR5IiwidCIsInplcm9fYml0IiwiayIsIm0iLCJtZW0iLCJqIiwiciIsImwiLCJsJDAiLCJmaW5kIiwieCIsImZpbmRfb3B0IiwiZmluZF9maXJzdF9vcHQiLCJmIiwicnYiLCJyayIsImx2IiwibGsiLCJ2JDAiLCJmaW5kX2ZpcnN0IiwiZmluZF9sYXN0X29wdCIsImZpbmRfbGFzdCIsIm1hc2siLCJwIiwiam9pbiIsInQxIiwicDEiLCJ0MCIsInAwIiwibWF0Y2hfcHJlZml4IiwiYWRkIiwiaW5zIiwic2luZ2xldG9uIiwidiIsImJyYW5jaCIsInQkMCIsInJlbW92ZSIsInJtdiIsImNhcmRpbmFsIiwiaXRlciIsIm1hcCIsIm1hcGkiLCJmb2xkIiwicyIsImFjY3UiLCJzJDAiLCJhY2N1JDAiLCJhY2N1JDEiLCJmb3JfYWxsIiwiZXhpc3RzIiwiZmlsdGVyIiwicHIiLCJmaWx0ZXJfbWFwIiwicGFydGl0aW9uIiwicGFydCIsImFjYyQwIiwiY2hvb3NlIiwiY2hvb3NlX29wdCIsInNwbGl0IiwiY29sbCIsImIiLCJtaW5fYmluZGluZyIsImJzIiwia3MiLCJidCIsImt0IiwibWluX2JpbmRpbmdfb3B0IiwibWF4X2JpbmRpbmciLCJtYXhfYmluZGluZ19vcHQiLCJiaW5kaW5ncyIsImFjYyIsImNvbXBhcmUiLCJjbXAiLCJ0MiIsImNvbXBhcmVfYXV4IiwidDEkMCIsInQyJDAiLCJ4MSIsImsxIiwieDIiLCJrMiIsImMiLCJyMSIsImwxIiwibTEiLCJyMiIsImwyIiwibTIiLCJwMiIsImMkMCIsImMkMSIsImMkMiIsImVxdWFsIiwiZXEiLCJlcXVhbF9hdXgiLCJtZXJnZSIsImFkZCQwIiwidjEiLCJ2MiIsInVwZGF0ZSIsInoiLCJ1bnNpZ25lZF9sdCIsIm4iLCJ0JDIiLCJzMSIsInMwIiwiayQwIiwicSIsInQkMSIsInVuaW9uIiwidG9fc2VxIiwicHJlcGVuZF9zZXEiLCJtJDAiLCJzJDEiLCJ0b19zZXFfZnJvbSIsImtleSIsImFkZF9zZXEiLCJvZl9zZXEiLCJ1dGY4X29mX2NvZGUiLCJidWYiLCJ4IiwiYWRkIiwibWF4Yml0cyIsIm4iLCJ1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIiwiaSIsImoiLCJoaWdoMTAiLCJsb3cxMCIsInZlcnNpb24iLCJqc29uX2Vycm9yIiwicyIsImluaXRfbGV4ZXIiLCJmbmFtZSIsImxudW0iLCJidWYkMCIsImJ1ZiQxIiwib2NhbWxfbGV4X3RhYmxlcyIsInJlYWRfanVuayQwIiwibGV4YnVmIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMkMCIsInJlYWRfanVuayIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJzcHJpbnRmIiwid3JpdGVfZmxvYXRfcHJlYyIsIndyaXRlX3N0ZF9mbG9hdCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjIiwiaXRlcjIiLCJmX2VsdCIsImZfc2VwIiwibCQwIiwieSQwIiwibCIsInkiLCJ3cml0ZV9qc29uIiwid3JpdGVfYXNzb2MiLCJ3cml0ZV9saXN0IiwiYiIsImYiLCJ3cml0ZV9zdGRfanNvbiIsInRvX2J1ZmZlciIsInN1ZiIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJsJDEiLCJhIiwicHBfbGlzdCIsInNlcCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwieCQyIiwicyQwIiwieCQwIiwieCQxIiwibmFtZSIsInBwIiwidG9fc3RyaW5nJDAiLCJwcCQwIiwiZm10IiwieHMiLCJ2YWx1ZSIsImtleSIsInhzJDAiLCJzaG93IiwiZXF1YWwiLCJiJDAiLCJhJDAiLCJ5cyIsInJlc3VsdCIsInlzJDAiLCJjb21wYXJlX2tleXMiLCJrZXkkMCIsInhzJDEiLCJ5cyQxIiwicmVzdWx0JDAiLCJ2YWx1ZSQwIiwiYiQxIiwiYSQxIiwiYiQyIiwiYSQyIiwiYiQzIiwiYSQzIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwid3JpdGVfaW50bGl0Iiwid3JpdGVfZmxvYXRsaXQiLCJ3cml0ZV9zdHJpbmdsaXQiLCJ3cml0ZV90dXBsZSIsIm8iLCJ3cml0ZV92YXJpYW50IiwicyQxIiwicyQyIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ2JDAiLCJsJDIiLCJ4JDMiLCJvcCIsInJlcHJlc2VudGF0aW9uIiwieCQ0IiwicmVwcmVzZW50YXRpb24kMCIsInR1cCIsImIkNCIsImEkNCIsIm5hbWUkMCIsInRvX2Jhc2ljIiwieCQ2IiwieCQ1IiwiYiQ1IiwiYSQ1IiwicyQzIiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicyQ0IiwieW9qc29uX29mX3VuaXQiLCJ5b2pzb25fb2ZfYm9vbCIsImIiLCJ5b2pzb25fb2Zfc3RyaW5nIiwic3RyIiwieW9qc29uX29mX2J5dGVzIiwiYnl0ZXMiLCJ5b2pzb25fb2ZfY2hhciIsImMiLCJ5b2pzb25fb2ZfaW50IiwibiIsInlvanNvbl9vZl9mbG9hdCIsInlvanNvbl9vZl9pbnQzMiIsInlvanNvbl9vZl9pbnQ2NCIsInlvanNvbl9vZl9uYXRpdmVpbnQiLCJ5b2pzb25fb2ZfcmVmIiwieW9qc29uX29mX2EiLCJyZiIsInlvanNvbl9vZl9sYXp5X3QiLCJsdiIsInlvanNvbl9vZl9vcHRpb24iLCJ4IiwieW9qc29uX29mX3BhaXIiLCJ5b2pzb25fb2ZfYiIsImEiLCJ5b2pzb25fb2ZfdHJpcGxlIiwieW9qc29uX29mX2MiLCJ5b2pzb25fb2ZfbGlzdCIsImxzdCIsInlvanNvbl9vZl9hcnJheSIsImFyIiwibHN0X3JlZiIsImkiLCJ5b2pzb25fb2ZfaGFzaHRibCIsInlvanNvbl9vZl9rZXkiLCJ5b2pzb25fb2ZfdmFsIiwiaHRibCIsImNvbGwiLCJrIiwidiIsImFjYyIsInlvanNvbl9vZl9vcGFxdWUiLCJ5b2pzb25fb2ZfZnVuIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3lvanNvbl9lcnJvcl9leG4iLCJleGMiLCJ5b2pzb24iLCJvZl95b2pzb25fZXJyb3IiLCJ3aGF0IiwidW5pdF9vZl95b2pzb24iLCJib29sX29mX3lvanNvbiIsInN0cmluZ19vZl95b2pzb24iLCJieXRlc19vZl95b2pzb24iLCJjaGFyX29mX3lvanNvbiIsImludF9vZl95b2pzb24iLCJmbG9hdF9vZl95b2pzb24iLCJpbnQzMl9vZl95b2pzb24iLCJpbnQ2NF9vZl95b2pzb24iLCJuYXRpdmVpbnRfb2ZfeW9qc29uIiwicmVmX29mX3lvanNvbiIsImFfb2ZfeW9qc29uIiwibGF6eV90X29mX3lvanNvbiIsIm9wdGlvbl9vZl95b2pzb24iLCJwYWlyX29mX3lvanNvbiIsImJfb2ZfeW9qc29uIiwiYl95b2pzb24iLCJhX3lvanNvbiIsInRyaXBsZV9vZl95b2pzb24iLCJjX29mX3lvanNvbiIsImNfeW9qc29uIiwibGlzdF9vZl95b2pzb24iLCJyZXZfbHN0IiwiYXJyYXlfb2ZfeW9qc29uIiwidCIsImgiLCJsZW4iLCJyZXMiLCJ0JDAiLCJoJDAiLCJoYXNodGJsX29mX3lvanNvbiIsImtleV9vZl95b2pzb24iLCJ2YWxfb2ZfeW9qc29uIiwiYWN0Iiwidl95b2pzb24iLCJrX3lvanNvbiIsIm9wYXF1ZV9vZl95b2pzb24iLCJmdW5fb2ZfeW9qc29uIiwic3ByaW50ZiIsInR1cGxlX29mX3NpemVfbl9leHBlY3RlZCIsImxvYyIsInN0YWdfbm9fYXJncyIsInN0YWdfaW5jb3JyZWN0X25fYXJncyIsInRhZyIsIm1zZyIsInN0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIiwiZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSIsInVuZXhwZWN0ZWRfc3RhZyIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsInJlc3QiLCJmaWVsZCIsInJlc3QkMCIsInJlY29yZF91bmRlZmluZWRfZWxlbWVudHMiLCJ1bmRlZmluZWQkMCIsInJlY29yZF9saXN0X2luc3RlYWRfYXRvbSIsInJlY29yZF9wb2x5X2ZpZWxkX3ZhbHVlIiwibm9fdmFyaWFudF9tYXRjaCIsIm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQiLCJwdGFnX25vX2FyZ3MiLCJwdGFnX2luY29ycmVjdF9uX2FyZ3MiLCJjbnN0ciIsInB0YWdfdGFrZXNfYXJncyIsIm5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIiLCJlbXB0eV90eXBlIiwic3ltYm9sIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwibWVtIiwicyQwIiwicmVtIiwiaGFzaF9yZWMiLCJqIiwiaGFzaCIsInByaW50X29uZSIsImNoIiwiaXRlciIsInQiLCJmIiwidCQwIiwieHMiLCJvbmVfY2hhciIsInYiLCJ1IiwiZm9sZF9yaWdodCIsImluaXQiLCJjc2luZ2xlIiwiaXNfZW1wdHkiLCJwcmVwZW5kIiwieCQwIiwiZCIsImQkMCIsInBpY2siLCJnZW4iLCJlcHNfZXhwciIsImhhc2hfY29tYmluZSIsImgiLCJhY2N1IiwiZW1wdHkiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJkdW1teSIsIm1rIiwiY2F0IiwiZGVzYyIsImNyZWF0ZSIsImVxdWFsJDAiLCJoYXNoJDEiLCJjcmVhdGVfd29ya2luZ19hcmVhIiwiaW5kZXhfY291bnQiLCJ3IiwibWFya191c2VkX2luZGljZXMiLCJ0YmwiLCJmcmVlX2luZGV4IiwidGJsX3JlZiIsImxlbiIsImlkeCQwIiwicmVtb3ZlX21hdGNoZXMiLCJzcGxpdF9hdF9tYXRjaCIsInJlbW92ZV9kdXBsaWNhdGVzIiwicHJldiIsInByZXYkMCIsInByZXYkMSIsInByZXYkMiIsInIkMiIsInIkMyIsIngkMSIsInByZXYkMyIsInIkNCIsInNldF9pZHgiLCJmaWx0ZXJfbWFya3MiLCJkZWx0YV8xJDAiLCJuZXh0X2NhdCIsInByZXZfY2F0IiwiZGVsdGFfMiQwIiwiZGVsdGFfMSIsImRlbHRhX3NlcSQwIiwieSQxIiwia2luZCQwIiwicmVwX2tpbmQiLCJ5JDIiLCJtYXJrcyQxIiwieSQzIiwibWFya3MkMiIsImNhdCQwIiwibWFya3MkMyIsImRlbHRhXzIiLCJkZWx0YV9zZXEiLCJkZWx0YV80IiwicmVtJDAiLCJkZWx0YSIsImNoYXIkMCIsInN0IiwiZXhwciQwIiwicmVkX3RyIiwidHIyIiwic3QyIiwiczIiLCJ0cjEiLCJzdDEiLCJzMSIsInByZXBlbmRfZGVyaXYiLCJyZXN0cmljdCIsInMkMSIsInByZXBlbmRfbWFya3NfZXhwcl9sc3QiLCJtJDEiLCJkZXJpdl8xJDAiLCJhbGxfY2hhcnMiLCJjYXRlZ29yaWVzIiwicmVtJDEiLCJkZXJpdl8yJDAiLCJkZXJpdl8xIiwiZGVyaXZfc2VxIiwieiQwIiwicmVtJDIiLCJjYXQkMSIsImRlcml2XzIiLCJ4bCIsInokMSIsImRlcml2XzQiLCJkZXJpdiIsImRlciIsImV4cHIkMSIsInN0YXR1cyIsIm1hIiwic3QkMCIsIm1ha2UiLCJmbGF0dGVuIiwiY20iLCJjb2xvcl9yZXByIiwic3BsaXQiLCJkdW1teV9vZmZzZXQiLCJtMSIsInAxIiwicDIiLCJnZXQiLCJzdGFydCIsInN1YnMiLCJzdG9wIiwidGVzdCIsImdldF9vcHQiLCJhbGxfb2Zmc2V0IiwiYWxsIiwib2Zmc2V0cyIsInN0cnMiLCJtYXRjaGVzIiwicHBfbWF0Y2giLCJzdHIiLCJuYl9ncm91cHMiLCJuIiwibiQwIiwidiQwIiwidiQxIiwibiQxIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJicmVhayQwIiwiZmluZF9zdGF0ZSIsIm5jb2wiLCJicmVha19zdGF0ZSIsImluZm8iLCJwb3MiLCJ2YWxpZGF0ZSIsImdldF9jb2xvciIsInNsZW4iLCJzY2FuX3N0ciIsImluaXRpYWxfc3RhdGUiLCJncm91cHMiLCJwb3MkMyIsImxhc3QiLCJpbmZvJDAiLCJzdCQ1IiwicG9zJDQiLCJzdCQzIiwicmVhbF9jIiwic3QkNCIsInBvcyQwIiwicG9zJDEiLCJzdCQxIiwic3QkMiIsInBvcyQyIiwiZmluYWxfYm91bmRhcnlfY2hlY2siLCJmaW5hbF9jYXQiLCJyZXMkMCIsIm1hdGNoX3N0ciIsInBhcnRpYWwiLCJpbml0aWFsX2NhdCIsInN0YXR1cyQwIiwicG1hcmtzIiwibm9fbWF0Y2hfc3RhcnRzX2JlZm9yZSIsImNzZXEiLCJjYWRkIiwidmlldyIsInZhciQwIiwicmVsIiwic3EiLCJyZSQwIiwicmUkMSIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImlzX2NoYXJzZXQiLCJjdXBwZXIiLCJjbG93ZXIiLCJjYWxwaGEiLCJjZGlnaXQiLCJjYWxudW0iLCJjd29yZCIsIngxIiwieDIiLCJ4MSQwIiwieDIkMCIsImVxX2xpc3QiLCJqMiIsImkyIiwieDIkMSIsImoxIiwiaTEiLCJ4MSQxIiwieDIkMiIsInNlbTIiLCJ4MSQyIiwic2VtMSIsIngyJDMiLCJrMiIsIngxJDMiLCJrMSIsIngyJDQiLCJ4MSQ0IiwieDIkNSIsIngxJDUiLCJ4MiQ2IiwieDEkNiIsIngyJDciLCJ4MSQ3IiwibDIkMiIsImwxJDIiLCJ4MiQ4IiwieDIkOSIsIngxJDgiLCJ4MSQ5IiwibTIiLCJzZXF1ZW5jZSIsIm1lcmdlX3NlcXVlbmNlcyIsImVuZm9yY2Vfa2luZCIsImNyIiwidHJhbnNsYXRlIiwiaWduX2Nhc2UiLCJuYW1lcyIsImNhY2hlIiwiaWduX2dyb3VwJDAiLCJncmVlZHkkMCIsInRyYW5zX3NlcSIsIm1lcmdlZF9zZXF1ZW5jZXMiLCJraW5kJDEiLCJjciQwIiwiaiQwIiwia2luZCQyIiwia2luZCQzIiwiY3IkMSIsImdyZWVkeSQxIiwicCIsIm5hbWUiLCJraW5kJDQiLCJjciQyIiwiciQ1Iiwia2luZCQ1IiwiY3IkMyIsInIkNiIsImkkMSIsImtpbmQkNiIsImNyJDQiLCJpZ25fZ3JvdXAiLCJncmVlZHkiLCJhc19zZXQiLCJoYW5kbGVfY2FzZSIsImlnbl9jYXNlJDAiLCJyJDciLCJyJDgiLCJyJDkiLCJyJDEwIiwiciQxMSIsInIkMTIiLCJsJDUiLCJyJDEzIiwiciQxNCIsInIkMTUiLCJhbmNob3JlZCIsImVwc2lsb24iLCJyZXBuIiwicmVwMSIsIm9wdCIsImJvdyIsImVvdyIsIndvcmQiLCJib3MiLCJlb3MiLCJ3aG9sZV9zdHJpbmciLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsImV4ZWMiLCJzdWJzdHIiLCJleGVjX29wdCIsImV4ZWNwIiwiZXhlY19wYXJ0aWFsIiwiZXhlY19wYXJ0aWFsX2RldGFpbGVkIiwibWFya2VkIiwibWFya19zZXQiLCJhbGxfc2VxIiwibGltaXQiLCJhdXgiLCJtYXRjaGVzX3NlcSIsInN1YiIsInNwbGl0X2Z1bGxfc2VxIiwic3RhdGUiLCJvbGRfaSIsInRleHQiLCJ0ZXh0JDAiLCJzdGF0ZSQwIiwic3BsaXRfc2VxIiwiZmlsdGVyIiwic2VxJDAiLCJ0bCIsInNlcSQxIiwibGlzdF9vZl9zZXEiLCJzcGxpdF9mdWxsIiwiZ2VuX29mX3NlcSIsInNwbGl0X2dlbiIsInNwbGl0X2Z1bGxfZ2VuIiwiYWxsX2dlbiIsIm1hdGNoZXNfZ2VuIiwicmVwbGFjZSIsImJ1ZiIsInJlcGxhY2luZyIsInJlcGxhY2Vfc3RyaW5nIiwiYnkiLCJ3aXRuZXNzIiwiZnJvbSIsImdldF9vZnMiLCJnZXRfYWxsIiwiZ2V0X2FsbF9vZnMiLCJ0ZXN0MiIsImFjY2VwdCIsImFjY2VwdDIiLCJsZWZ0IiwiYnJhbmNoIiwibGVmdCQwIiwibGVmdCQxIiwiYnJhY2tldCIsInMkMiIsImNvbXBpbGVfcGF0IiwiY29tcGlsZV9yZWdleHAiLCJzdHJpbmdfbWF0Y2giLCJzdHJpbmdfcGFydGlhbF9tYXRjaCIsInNlYXJjaF9mb3J3YXJkIiwic2VhcmNoX2JhY2t3YXJkIiwicCQwIiwicCQxIiwidmFsaWRfZ3JvdXAiLCJvZmZzZXRfZ3JvdXAiLCJyZXBsYWNlbWVudF90ZXh0IiwicmVwbCIsIm9yaWciLCJxIiwicSQwIiwicSQxIiwicCQyIiwibGVuJDAiLCJwJDMiLCJxJDIiLCJxJDMiLCJwJDQiLCJiJDAiLCJxJDUiLCJwJDYiLCJxJDQiLCJwJDUiLCJxJDYiLCJwJDciLCJzdHJpbmdfYmVmb3JlIiwic3RyaW5nX2FmdGVyIiwiZmlyc3RfY2hhcnMiLCJsYXN0X2NoYXJzIiwicmVnZXhwX2Nhc2VfZm9sZCIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImdyb3VwX2JlZ2lubmluZyIsImdyb3VwX2VuZCIsIm1hdGNoZWRfZ3JvdXAiLCJ0eHQiLCJyZXBsYWNlX21hdGNoZWQiLCJtYXRjaGVkIiwibWF0Y2hfYmVnaW5uaW5nIiwibWF0Y2hfZW5kIiwibWF0Y2hlZF9zdHJpbmciLCJzdWJzdGl0dXRlX2ZpcnN0IiwicmVwbF9mdW4iLCJnbG9iYWxfc3Vic3RpdHV0ZSIsImxhc3Rfd2FzX2VtcHR5Iiwic3RhcnRwb3MiLCJlbmRfcG9zIiwicmVwbF90ZXh0IiwibGFzdF93YXNfZW1wdHkkMCIsImdsb2JhbF9yZXBsYWNlIiwicmVwbGFjZV9maXJzdCIsInNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIiwiYm91bmRlZF9zcGxpdCIsIm51bSIsImJvdW5kZWRfc3BsaXRfZGVsaW0iLCJzcGxpdF9kZWxpbSIsImJvdW5kZWRfZnVsbF9zcGxpdCIsImZ1bGxfc3BsaXQiLCJiZWciLCJtdWwiLCJleHBsaWNpdF9wZXJpb2QiLCJzbGFzaGVzIiwiYXBwZW5kIiwicGllY2UiLCJhbV9hdF9zdGFydF9vZl9jb21wb25lbnQiLCJuZXh0IiwicmVtYWluaW5nIiwib25lIiwiZXhwbGljaXRfc2xhc2giLCJlbmNsb3NlZCIsImhpZ2giLCJsb3ciLCJlbmNsb3NlZF9zZXQiLCJzZXQkMCIsImVuY2xvc3VyZSIsImV4YWN0bHkiLCJzbGFzaGVzJDAiLCJjaGFycyIsIm1hbnlfbWFueSIsImV4cGxpY2l0X3BlcmlvZCQwIiwiZmlyc3RfZXhwbGljaXRfcGVyaW9kIiwibWF0Y2hfY29tcG9uZW50IiwiZ2xvYiIsInBhdGhuYW1lIiwibWF0Y2hfYmFja3NsYXNoZXMiLCJwZXJpb2QiLCJleHBhbmRfYnJhY2VzIiwiZG91YmxlX2FzdGVyaXNrIiwidG9fcmUiLCJyZWFkIiwicGllY2VzIiwiZm91bmQiLCJwaWVjZXMkMCIsInN0YXRlJDgiLCJzdGF0ZSQ5IiwiZXhwbGljaXRfcGVyaW9kJDEiLCJzbGFzaGVzJDEiLCJzdGF0ZSQxMCIsImV4cGxpY2l0X3NsYXNoJDAiLCJub3RfZW1wdHkiLCJtYXliZV9lbXB0eSIsIm5vdF9lbXB0eSQxIiwiZW5jbG9zZWRfc2V0JDAiLCJzdGF0ZSQyIiwic3RhdGUkNCIsIm5vdF9lbXB0eSQwIiwic3RhdGUkNSIsInN0YXRlJDYiLCJlbmNsb3NlZCQwIiwic3RhdGUkNyIsImVuY2xvc2VkJDEiLCJzdGF0ZSQzIiwic3RhdGUkMSIsImVuY2xvc2VkJDIiLCJlbmNsb3NlZCQzIiwiZXhwbCIsImlubmVyIiwiYWNjIiwiYmVnJDAiLCJhY2MkMCIsImJlZyQxIiwiYWNjJDEiLCJpJDMiLCJiZWckMiIsImkkNCIsImkkMiIsImdsb2IkMCIsImdsb2J4IiwiZ2xvYngkMCIsInBvc2l4X2NsYXNzX3N0cmluZ3MiLCJvcHRzIiwidW5ncmVlZHkiLCJkb3RhbGwiLCJkb2xsYXJfZW5kb25seSIsIm11bHRpbGluZSIsImFjY2VwdF9zIiwidW5nZXQiLCJncmVlZHlfbW9kIiwiZ3IiLCJnciQwIiwiYXRvbSIsImludGVnZXIiLCJoZXhkaWdpdCIsImNvZGUiLCJzJDMiLCJzJDQiLCJjbGFzcyQwIiwicG9zaXhfY2xhc3MiLCJwYXQiLCJmbGFncyIsImV4dHJhY3QiLCJyZXgiLCJnZXRfc3Vic3RyaW5nIiwiZ2V0X25hbWVkX3N1YnN0cmluZyIsImdldF9zdWJzdHJpbmdfb2ZzIiwicG1hdGNoIiwic3Vic3RpdHV0ZSIsInN1YnN0Iiwic3MiLCJmaW4iLCJtYXgiLCJyZXN1bHRzIiwiZGVsaW0iLCJuZXdsaW5lIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsInNpbmdsZXRvbiIsInBvcyIsIngiLCJ1bmlvbiIsImYiLCJ0MSIsInQyIiwieHMyIiwieDIiLCJwMiIsInhzMSIsIngxIiwicDEiLCJtYXAiLCJyZXN0IiwibWFwaSIsIm1hcGsiLCJmb2xkX2xlZnQiLCJ6JDAiLCJlcnJvcl9zb3VyY2VfMDAyIiwiemVybyIsInRfb2Zfc2V4cCIsInhfMDAzIiwiY29sIiwicm93Iiwic2V4cF9vZl90IiwiY29sXzAwNyIsInJvd18wMDUiLCJhcmdfMDA4IiwiYm5kc18wMDQiLCJhcmdfMDA2IiwiYm5kc18wMDQkMCIsImNvbXBhcmUiLCJwb3MxIiwicG9zMiIsImVycm9yX3NvdXJjZV8wMDQiLCJvZl9hbm5vdF8wMDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMjUiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInNleHBfYXJnc18wMTMiLCJhcmcxXzAxNSIsImFyZzBfMDE0IiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInNleHBfYXJnc18wMDgiLCJhcmcwXzAwOSIsInJlczBfMDEwIiwib2ZfYW5ub3RfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNiIsInJlczFfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJyZXMwXzA0MiIsInJlczFfMDQzIiwiYWxpZ24iLCJsIiwiYW5ub3QiLCJyZW1vdmVfYW5ub3RzIiwibGF5b3V0IiwibGF5b3V0JDAiLCJzdHJpbmciLCJsMiIsImwxIiwibGF5b3V0JDEiLCJta19vZl9sYXlvdXQiLCJ0ZXh0IiwiY29sdW1uIiwiZ28iLCJpbmRlbnQiLCJpbmRlbnQkMCIsImltcDEiLCJpbXAyIiwiaW5kZW50JDEiLCJzdHJpbmdfb2ZfbGF5b3V0IiwicmVjb3JkIiwiczEiLCJzMiIsImltcCIsInN0cmluZ3Nfb2ZfbGF5b3V0IiwicmVzdDIiLCJmaXJzdF9zdHJpbmdfMiIsImZpcnN0X2luZGVudF8yIiwicmVzdDEiLCJsYXN0X3N0cmluZ18xIiwibGFzdF9pbmRlbnRfMSIsInNwbGl0X2ZpcnN0IiwieHMiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfbGFzdF9vcHQiLCJ5cyIsInkiLCJzcGxpdF9sYXN0IiwiciIsImJveCIsImVycm9yX3NvdXJjZV8wMTEiLCJlcnJvcl9zb3VyY2VfMDE2IiwiYm94X29mX3NleHAiLCJ3aWR0aCIsImhlaWdodCIsInNleHBfb2ZfYm94Iiwid2lkdGhfMDA3IiwiaGVpZ2h0XzAwNSIsIm9mX2Fubm90XzAwOSIsInhfMDEyIiwidF9vZl9zZXhwJDAiLCJtZXRyaWNzIiwib2ZfYW5ub3RfMDEzIiwic2V4cF8wMTgiLCJ0YWdfMDE5IiwicmVzMF8wMjciLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMV8wMzkiLCJyZXMwXzA0MCIsInJlczFfMDQxIiwic2V4cF9hcmdzXzAzMCIsImFyZzFfMDMyIiwiYXJnMF8wMzEiLCJyZXMxXzAzNCIsIm9mX2Fubm90XzA0MyIsIm1ldHJpY3NfMDQ3IiwibGF5b3V0XzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImFyZ18wNDYiLCJzZXhwX29mX3QkMCIsImJuZHNfMDQ0JDAiLCJvZl9hbm5vdF8wNDkiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiYXJnMF8wNTIiLCJyZXMwXzA1MyIsImFyZzFfMDU1IiwiYXJnMF8wNTQiLCJyZXMwXzA1NiIsInJlczFfMDU3IiwiYXJnMV8wNTkiLCJhcmcwXzA1OCIsInJlczBfMDYwIiwicmVzMV8wNjEiLCJtIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsIm1pZCIsInRhYmxlIiwibWsiLCJtaWRfYm94IiwibCQwIiwiYm91bmRpbmdfYm94IiwiYnciLCJiaCIsImwkMSIsIm0kMiIsIm92ZXJmbG93X2Nvc3QiLCJoZWlnaHRfY29zdCIsIm1rX2hlaWdodCIsIm1rX292ZXJmbG93IiwiaW5mIiwiYWRkIiwiYzEiLCJjMiIsImVxIiwibHQiLCJsZXEiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAwOCIsImVycm9yX3NvdXJjZV8wNjgiLCJlcnJvcl9zb3VyY2VfMDczIiwiaGFzaCIsImVxdWFsIiwidzIiLCJ3MSIsIm9mX2Fubm90XzA2NiIsInhfMDY5IiwiZG9jIiwibWVtIiwib2ZfYW5ub3RfMDcwIiwic2V4cF8wNzUiLCJ0YWdfMDc2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJzZXhwX2FyZ3NfMDgyIiwiYXJnMV8wODQiLCJhcmcwXzA4MyIsInJlczBfMDg1IiwicmVzMV8wODYiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMV8xMDMiLCJhcmcwXzEwMiIsInJlczBfMTA0IiwicmVzMV8xMDUiLCJzZXhwX2FyZ3NfMDc3IiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsIm9mX2Fubm90XzEwNyIsImRvY18xMTEiLCJtZW1fMTA5IiwiYXJnXzExMiIsImJuZHNfMTA4IiwiYXJnXzExMCIsImJuZHNfMTA4JDAiLCJvZl9hbm5vdF8xMTMiLCJhcmcwXzExNCIsInJlczBfMTE1IiwiYXJnMV8xMTciLCJhcmcwXzExNiIsInJlczBfMTE4IiwicmVzMV8xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwiYXJnMV8xMjMiLCJhcmcwXzEyMiIsInJlczBfMTI0IiwicmVzMV8xMjUiLCJhcmcxXzEyNyIsImFyZzBfMTI2IiwicmVzMF8xMjgiLCJyZXMxXzEyOSIsInRfb2ZfdCIsInQiLCJmYWlsIiwiZW1wdHkiLCJzcGFjZSIsImluZGVudF9hbmRfYWxpZ24iLCJoY2F0IiwiaGNhdHMiLCJkb2NzIiwiaHNlcCIsImhzZXBzIiwidnNlcCIsInZzZXBzIiwiY2hvaWNlIiwiY2hvaWNlcyIsIm1hcF90IiwiZCIsIm1hcF9hbm5vdCIsImQyIiwiZDEiLCJkJDAiLCJkJDEiLCJkMiQwIiwiZDEkMCIsImFsbCIsImxzMSIsImxzMiIsIm1fdW5pb24iLCJjb3N0X3VuaW9uIiwiY29zdDIiLCJjb3N0MSIsImxheW91dF9vZl9kb2MiLCJoIiwicG9zJDAiLCJrZXkiLCJ2YWx1ZSIsInZhbHVlJDAiLCJjb3N0Iiwib3ZlcmZsb3ciLCJ6IiwibGF5b3V0MSIsImxheW91dHMiLCJsYXlvdXQyIiwicCIsImMiLCJsMSQwIiwibGF5b3V0X29mX2RvYyQwIiwieF9jb3N0IiwieF9wb3MiLCJzZXhwX2FyZ3NfMDE4IiwiYXJnMF8wMTkiLCJyZXMwXzAyMCIsInJlczBfMDE1Iiwic2V4cF9hcmdzXzAyMyIsImFyZzFfMDI1IiwiYXJnMF8wMjQiLCJyZXMwXzAyNiIsInJlczFfMDI3Iiwib2ZfYW5ub3RfMDI5IiwiYXJnMF8wMzAiLCJyZXMwXzAzMSIsInJlczBfMDM1IiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJib3gxJDAiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhcHBlbmRfbGFzdCQwIiwiYm94MSQxIiwiYW5ub3QkMCIsImJveGVzIiwiYm94ZXMxIiwibGVhZGluZyQwIiwiYm94ZXMyIiwiZXJyb3Jfc291cmNlXzAwMiIsInRwX2xvYyIsImVycm9yX3NvdXJjZV8wMTEiLCJ0cF9sb2MkMCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJ4XzAwMyIsInBlcmNlbnRhZ2UiLCJyZXN1bHRzIiwic2V4cF9vZl9zeW50YXhfcmVzdWx0IiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsImFyZ18wMDgiLCJibmRzXzAwNCIsImFyZ18wMDYiLCJibmRzXzAwNCQwIiwic3ludGF4X3Jlc3VsdF9vZl95b2pzb24iLCJ5b2pzb24iLCJmaWVsZF95b2pzb25zIiwicmVzdWx0c19maWVsZCIsInBlcmNlbnRhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwicGVyY2VudGFnZV92YWx1ZSIsInJlc3VsdHNfdmFsdWUiLCJ5b2pzb25fb2Zfc3ludGF4X3Jlc3VsdCIsInZfcGVyY2VudGFnZSIsInZfcmVzdWx0cyIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsImZpbmRfdmFyX3VwYXQiLCJuYW1lIiwidXBhdCIsInVwYXQkMCIsInVwYXQkMSIsInVwMSIsInVwYXQkMiIsInVwYXQkMyIsInVwMSQwIiwidXBhdCQ0IiwibCIsImFjYyIsInVwIiwiZmluZF9pbl9sZXQiLCJkZWYiLCJkZWYkMCIsInBsIiwidWwiLCJ1ZSIsImRlZiQyIiwiZGVmJDEiLCJmaW5kX2ZuIiwidWV4cCIsInVleHAkMCIsImwkMCIsImJvZHkkMCIsImwkMSIsImFyZ3MiLCJmbiIsInUiLCJ1ZXhwJDMiLCJ1MiIsInUxJDAiLCJsJDIiLCJ1ZXhwJDEiLCJ1ZXhwJDIiLCJ1MSIsInVsJDAiLCJ1MSQxIiwiYm9keSIsImwkMyIsInZhcl9tZW50aW9uX3VwYXQiLCJ2YXJfbWVudGlvbiIsInAiLCJ1cyIsImciLCJwZSIsImUiLCJ2YXJfYXBwbGllZCIsIngkMSIsInVleHAkNCIsInVleHAkNSIsIngkMiIsInVleHAkNiIsInVleHAkNyIsInUxJDIiLCJpc19yZWN1cnNpdmUiLCJmbl9ib2RpZXMiLCJ0YWlsX2NoZWNrIiwiYXJncyQwIiwidTIkMCIsInUyJDEiLCJpc190YWlsX3JlY3Vyc2l2ZSIsImNoZWNrIiwicHJlZGljYXRlcyIsInByZWQiLCJsZW5ndGgiLCJwYXNzaW5nIiwicmVzIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDE1IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsInNleHBfYXJnc18wMzAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wMzMiLCJyZXMwXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJhcmcwXzAzNyIsInJlczBfMDM4IiwiYXJnMF8wMzkiLCJyZXMwXzA0MCIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDAzIiwiZXJyb3Jfc291cmNlXzAxMyIsImVycm9yX3NvdXJjZV8wMjgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wMzgiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8wNDkiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8wNjAiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8wOTQiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8xMDEiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8xMjAiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8xMzMiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8xNDgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwid3JvbmdfaW1wbF9vZl9zZXhwIiwib2ZfY29kZV8wMDEiLCJ4XzAwNCIsImhpbnQiLCJpbXBsIiwic2V4cF9vZl93cm9uZ19pbXBsIiwib2ZfY29kZV8wMDUiLCJoaW50XzAwOSIsImltcGxfMDA3IiwiYXJnXzAxMCIsImJuZHNfMDA2IiwiYm5kc18wMDYkMCIsIndyb25nX2ltcGxfb2ZfeW9qc29uIiwib2ZfY29kZSIsImltcGxfZmllbGQiLCJoaW50X2ZpZWxkIiwiaGludF92YWx1ZSIsImltcGxfdmFsdWUiLCJ5b2pzb25fb2Zfd3JvbmdfaW1wbCIsInZfaGludCIsInZfaW1wbCIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMTEiLCJ4XzAxNCIsImhpbnRzIiwidGVzdHMiLCJzZXhwX29mX2hpZGRlbl90ZXN0cyIsIm9mX2NvZGVfMDE1IiwiaGludHNfMDE5IiwidGVzdHNfMDE3IiwiYXJnXzAyMCIsImJuZHNfMDE2IiwiYXJnXzAxOCIsImJuZHNfMDE2JDAiLCJoaWRkZW5fdGVzdHNfb2ZfeW9qc29uIiwidGVzdHNfZmllbGQiLCJoaW50c19maWVsZCIsImhpbnRzX3ZhbHVlIiwidGVzdHNfdmFsdWUiLCJ5b2pzb25fb2ZfaGlkZGVuX3Rlc3RzIiwidl9oaW50cyIsInZfdGVzdHMiLCJoaW50X29mX3NleHAiLCJzZXhwX29mX2hpbnQiLCJoaW50X29mX3lvanNvbiIsInlvanNvbl9vZl9oaW50Iiwic3ludGF4X3Rlc3Rfb2Zfc2V4cCIsInNleHBfMDI3IiwiYXJnMV8wMjQiLCJhcmcwXzAyMyIsInJlczBfMDI1IiwicmVzMV8wMjYiLCJzZXhwX29mX3N5bnRheF90ZXN0IiwiYXJnMV8wMzAiLCJhcmcwXzAyOSIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzeW50YXhfdGVzdF9vZl95b2pzb24iLCJ2MSIsInYxJDAiLCJ5b2pzb25fb2Zfc3ludGF4X3Rlc3QiLCJzeW50YXhfdGVzdHNfb2Zfc2V4cCIsInhfMDM0Iiwic2V4cF9vZl9zeW50YXhfdGVzdHMiLCJ4XzAzNSIsInN5bnRheF90ZXN0c19vZl95b2pzb24iLCJ0IiwieW9qc29uX29mX3N5bnRheF90ZXN0cyIsInYiLCJ5b3VyX3Rlc3RzX29mX3NleHAiLCJvZl9jb2RlXzAzNiIsInhfMDM5IiwicHJvdmlkZWQiLCJyZXF1aXJlZCIsInNleHBfb2ZfeW91cl90ZXN0cyIsIm9mX2NvZGVfMDQwIiwicHJvdmlkZWRfMDQ2IiwicmVxdWlyZWRfMDQ0IiwidGVzdHNfMDQyIiwiYXJnXzA0NyIsImJuZHNfMDQxIiwiYXJnXzA0NSIsImJuZHNfMDQxJDAiLCJhcmdfMDQzIiwiYm5kc18wNDEkMSIsInlvdXJfdGVzdHNfb2ZfeW9qc29uIiwicmVxdWlyZWRfZmllbGQiLCJwcm92aWRlZF9maWVsZCIsImZ2YWx1ZSQxIiwicHJvdmlkZWRfdmFsdWUiLCJyZXF1aXJlZF92YWx1ZSIsInlvanNvbl9vZl95b3VyX3Rlc3RzIiwidl9wcm92aWRlZCIsInZfcmVxdWlyZWQiLCJhcmckMSIsImJuZHMkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwieF8wNTAiLCJpbXBsX2dyYWRpbmciLCJtdXRhdGlvbl90ZXN0aW5nIiwidGVzdF92YWxpZGF0aW9uIiwic2V4cF9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJpbXBsX2dyYWRpbmdfMDU2IiwibXV0YXRpb25fdGVzdGluZ18wNTQiLCJ0ZXN0X3ZhbGlkYXRpb25fMDUyIiwiYXJnXzA1NyIsImJuZHNfMDUxIiwiYXJnXzA1NSIsImJuZHNfMDUxJDAiLCJhcmdfMDUzIiwiYm5kc18wNTEkMSIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl95b2pzb24iLCJ0ZXN0X3ZhbGlkYXRpb25fZmllbGQiLCJtdXRhdGlvbl90ZXN0aW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX2ZpZWxkIiwiaW1wbF9ncmFkaW5nX3ZhbHVlIiwibXV0YXRpb25fdGVzdGluZ192YWx1ZSIsInRlc3RfdmFsaWRhdGlvbl92YWx1ZSIsInlvanNvbl9vZl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X2ltcGxfZ3JhZGluZyIsInZfbXV0YXRpb25fdGVzdGluZyIsInZfdGVzdF92YWxpZGF0aW9uIiwidmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uIiwicF9vZl9zZXhwIiwib2ZfY29kZV8wNTgiLCJ4XzA2MSIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJzZXhwX29mX3AiLCJvZl9jb2RlXzA2MiIsInN5bnRheF90ZXN0c18wODYiLCJoaWRkZW5fdGVzdHNfMDg0IiwiaGlkZGVuX2J1Z3NfMDgyIiwieW91cl9pbXBsXzA4MCIsInlvdXJfdGVzdHNfMDc4IiwiY29ycmVjdF9pbXBsXzA3NiIsInByZWx1ZGVfMDc0IiwicG9pbnRfZGlzdHJpYnV0aW9uXzA3MiIsInByb21wdF8wNzAiLCJtb2R1bGVfbmFtZV8wNjgiLCJ2ZXJzaW9uXzA2NiIsInRpdGxlXzA2NCIsImFyZ18wODciLCJibmRzXzA2MyIsImFyZ18wODUiLCJibmRzXzA2MyQwIiwiYXJnXzA4MyIsImJuZHNfMDYzJDEiLCJhcmdfMDgxIiwiYm5kc18wNjMkMiIsImFyZ18wNzkiLCJibmRzXzA2MyQzIiwiYXJnXzA3NyIsImJuZHNfMDYzJDQiLCJhcmdfMDc1IiwiYm5kc18wNjMkNSIsImFyZ18wNzMiLCJibmRzXzA2MyQ2IiwiYXJnXzA3MSIsImJuZHNfMDYzJDciLCJhcmdfMDY5IiwiYm5kc18wNjMkOCIsImFyZ18wNjciLCJibmRzXzA2MyQ5IiwiYXJnXzA2NSIsImJuZHNfMDYzJDEwIiwicF9vZl95b2pzb24iLCJ0aXRsZV9maWVsZCIsInZlcnNpb25fZmllbGQiLCJtb2R1bGVfbmFtZV9maWVsZCIsInByb21wdF9maWVsZCIsInBvaW50X2Rpc3RyaWJ1dGlvbl9maWVsZCIsInByZWx1ZGVfZmllbGQiLCJjb3JyZWN0X2ltcGxfZmllbGQiLCJ5b3VyX3Rlc3RzX2ZpZWxkIiwieW91cl9pbXBsX2ZpZWxkIiwiaGlkZGVuX2J1Z3NfZmllbGQiLCJoaWRkZW5fdGVzdHNfZmllbGQiLCJzeW50YXhfdGVzdHNfZmllbGQiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJmdmFsdWUkOCIsImZ2YWx1ZSQ5IiwiZnZhbHVlJDEwIiwic3ludGF4X3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX3Rlc3RzX3ZhbHVlIiwiaGlkZGVuX2J1Z3NfdmFsdWUiLCJ5b3VyX2ltcGxfdmFsdWUiLCJ5b3VyX3Rlc3RzX3ZhbHVlIiwiY29ycmVjdF9pbXBsX3ZhbHVlIiwicHJlbHVkZV92YWx1ZSIsInBvaW50X2Rpc3RyaWJ1dGlvbl92YWx1ZSIsInByb21wdF92YWx1ZSIsIm1vZHVsZV9uYW1lX3ZhbHVlIiwidmVyc2lvbl92YWx1ZSIsInRpdGxlX3ZhbHVlIiwieW9qc29uX29mX3AiLCJ2X3N5bnRheF90ZXN0cyIsInZfaGlkZGVuX3Rlc3RzIiwidl9oaWRkZW5fYnVncyIsInZfeW91cl9pbXBsIiwidl95b3VyX3Rlc3RzIiwidl9jb3JyZWN0X2ltcGwiLCJ2X3ByZWx1ZGUiLCJ2X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInZfcHJvbXB0Iiwidl9tb2R1bGVfbmFtZSIsInZfdmVyc2lvbiIsInZfdGl0bGUiLCJhcmckMiIsImJuZHMkMiIsImFyZyQzIiwiYm5kcyQzIiwiYXJnJDQiLCJibmRzJDQiLCJhcmckNSIsImJuZHMkNSIsImFyZyQ2IiwiYm5kcyQ2IiwiYXJnJDciLCJibmRzJDciLCJhcmckOCIsImJuZHMkOCIsImFyZyQ5IiwiYm5kcyQ5IiwiYXJnJDEwIiwiYm5kcyQxMCIsImtleV9vZl9zZXhwIiwic2V4cF8wOTMiLCJhcmcxXzA5MCIsImFyZzBfMDg5IiwicmVzMF8wOTEiLCJyZXMxXzA5MiIsInNleHBfb2Zfa2V5IiwiYXJnMV8wOTYiLCJhcmcwXzA5NSIsInJlczBfMDk3IiwicmVzMV8wOTgiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBvc19vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX29mX3BvcyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJwb3Nfb2ZfeW9qc29uIiwieW9qc29uX29mX3BvcyIsInNwZWNfb2Zfc2V4cCIsInhfMTExIiwic2V4cF9vZl9zcGVjIiwieF8xMTIiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwidHJhbnNpdGlvbmFyeV9zcGVjX29mX3NleHAiLCJ4XzExNCIsInNleHBfb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwieF8xMTUiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2ZfeW9qc29uIiwieW9qc29uX29mX3RyYW5zaXRpb25hcnlfc3BlYyIsIm1hcCIsImYiLCJ3cm9uZ19pbXBsIiwiZWRzX29mX3NleHAiLCJ4XzExNyIsInNleHBfb2ZfZWRzIiwieF8xMTgiLCJlZHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2VkcyIsInN0YXRlX29mX3NleHAiLCJ4XzEyMSIsImVkcyIsInBvcyIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMTI1IiwicG9zXzEyMyIsImFyZ18xMjYiLCJibmRzXzEyMiIsImFyZ18xMjQiLCJibmRzXzEyMiQwIiwic3RhdGVfb2ZfeW9qc29uIiwicG9zX2ZpZWxkIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwicG9zX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJ2X3BvcyIsImtleV9vZl9zdGF0ZSIsImExIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwic2V4cF8xMzgiLCJhcmcxXzEzNSIsImFyZzBfMTM0IiwicmVzMF8xMzYiLCJyZXMxXzEzNyIsInNleHBfMTMyIiwiYXJnMV8xMjkiLCJhcmcwXzEyOCIsInJlczBfMTMwIiwicmVzMV8xMzEiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJhcmcxXzE0NCIsImFyZzBfMTQzIiwicmVzMF8xNDUiLCJyZXMxXzE0NiIsImFyZzFfMTQwIiwiYXJnMF8xMzkiLCJyZXMwXzE0MSIsInJlczFfMTQyIiwicGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZSIsImVkaXRvcl9vZl9zdGF0ZSIsImkiLCJwdXRfZWRpdG9yIiwic3RhdGUiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJpZHhfb2ZfcG9zIiwicG9zX29mX2lkeCIsImlkeCIsInN3aXRjaF9lZGl0b3IiLCJpbnN0cnVjdG9yX21vZGUiLCJleGVyY2lzZSIsInppcHBlcl9vZl9jb2RlIiwiY29kZSIsInppcHBlciIsInRyYW5zaXRpb24iLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInlvdXJfdGVzdHMkMCIsInlvdXJfaW1wbCQwIiwiaGlkZGVuX2J1Z3MkMCIsImltcGwkMCIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZHNfb2Zfc3BlYyIsInNldHRpbmdzIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwidGVybV9vZiIsInN0aXRjaDMiLCJlZDEiLCJlZDIiLCJlZDMiLCJzdGl0Y2hfdGVybSIsImluc3RydWN0b3IiLCJ5b3VyX2ltcGxfdGVybSIsInByZWx1ZGVfdGVybSIsInVzZXJfaW1wbF90ZXJtIiwidGVzdF92YWxpZGF0aW9uX3Rlcm0iLCJ1c2VyX3Rlc3RzX3Rlcm0iLCJoaWRkZW5fdGVzdHNfdGVybSIsInN0aXRjaF90ZXJtJDAiLCJzdGl0Y2hfc3RhdGljIiwibWsiLCJpbmZvX21hcCIsInN0aXRjaF9zdGF0aWMkMCIsImhpZGRlbl9idWdzX2tleSIsImtleV9mb3Jfc3RhdGljcyIsInNwbGljZWRfZWxhYnMiLCJ1c2VyX3Rlc3RzIiwidXNlcl9pbXBsIiwiZWxhYiIsInMiLCJoaWRkZW5fYnVnIiwiZW1wdHkiLCJzdGF0aWNzX29ubHkiLCJzdGF0aWNzIiwic3RhdGljc19vZl9zdGljaGVkX2R5bmFtaWNzIiwic3RpdGNoX2R5bmFtaWMiLCJyZXN1bHRfb2YiLCJyZXN1bHRzJDAiLCJ0ZXN0X3ZhbGlkYXRpb24kMCIsInVzZXJfaW1wbCQwIiwidXNlcl90ZXN0cyQwIiwiaW5zdHJ1Y3RvciQwIiwic3RpdGNoX2R5bmFtaWMkMCIsImVkaXRvcl9wcCIsInNlcmlhbGl6YXRpb24iLCJleHBvcnRfbW9kdWxlIiwicmVjb3JkIiwiZGF0YSIsInRyYW5zaXRpb25hcnlfZWRpdG9yX3BwIiwiZXhwb3J0X3RyYW5zaXRpb25hcnlfbW9kdWxlIiwiZXhwb3J0X2dyYWRpbmdfbW9kdWxlIiwiaGVhZGVyIiwiYmxhbmtfc3BlYyIsInJlcXVpcmVkX3Rlc3RzIiwicHJvdmlkZWRfdGVzdHMiLCJudW1fd3JvbmdfaW1wbHMiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInhfMTU0Iiwic2V4cF8xNTMiLCJhcmcxXzE1MCIsImFyZzBfMTQ5IiwicmVzMF8xNTEiLCJyZXMxXzE1MiIsImV4ZXJjaXNlX2RhdGEiLCJjdXJfZXhlcmNpc2UiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMTU4IiwiY3VyX2V4ZXJjaXNlXzE1NiIsImFyZ18xNTkiLCJhcmcxXzE2MSIsImFyZzBfMTYwIiwicmVzMF8xNjIiLCJyZXMxXzE2MyIsImJuZHNfMTU1IiwiYXJnXzE1NyIsImJuZHNfMTU1JDAiLCJleGVyY2lzZV9leHBvcnRfb2ZfeW9qc29uIiwiY3VyX2V4ZXJjaXNlX2ZpZWxkIiwiZXhlcmNpc2VfZGF0YV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfdmFsdWUiLCJjdXJfZXhlcmNpc2VfdmFsdWUiLCJ5b2pzb25fb2ZfZXhlcmNpc2VfZXhwb3J0Iiwidl9leGVyY2lzZV9kYXRhIiwidl9jdXJfZXhlcmNpc2UiLCJzZXJpYWxpemVfZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwZXJjZW50YWdlX29mX3NleHAiLCJzZXhwX29mX3BlcmNlbnRhZ2UiLCJwZXJjZW50YWdlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJjZW50YWdlIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJyZXBvcnQiLCJudW1fdGVzdHMiLCJudW1fcGFzc2luZyIsInRlc3Rfc3VtbWFyeV9zdHIiLCJoaWRkZW5fYnVnX3N0YXR1cyIsInRlc3RfdmFsaWRhdGlvbl9kYXRhIiwiaGlkZGVuX2J1Z19kYXRhIiwiaGlkZGVuX2J1Z19kYXRhJDAiLCJ0ZXN0X3ZhbGlkYXRpb25fZGF0YSQwIiwidmFsaWRhdGlvbl90ZXN0X21hcCIsImhpZGRlbl9idWdfdGVzdF9tYXAiLCJmb3VuZCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwibWskMCIsImhpZGRlbl9idWdzX3N0YXRlIiwicGVyY2VudGFnZSQwIiwibnVtX3Bhc3NlZCIsInN1bW1hcnlfc3RyIiwidG90YWwiLCJtayQxIiwiaCIsInN5bnRheF9yZXN1bHRzIiwiciIsIm1rJDIiLCJ0ZXN0X3Jlc3VsdHMkMCIsInN0YXR1c2VzIiwiaGludGVkX3Jlc3VsdHMiLCJwZXJjZW50YWdlJDEiLCJzeW50YXhfcmVwb3J0IiwidGVzdF9zdW1tYXJ5X3N0ciQwIiwibWskMyIsInN0aXRjaGVkX2R5bmFtaWNzIiwib3ZlcmFsbF9zY29yZSIsImltcGxfZ3JhZGluZ19yZXBvcnQiLCJtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCIsInRlc3RfdmFsaWRhdGlvbl9yZXBvcnQiLCJ0dl9tYXgiLCJ0dl9wb2ludHMiLCJtdF9tYXgiLCJtdF9wb2ludHMiLCJpZ19tYXgiLCJpZ19wb2ludHMiLCJ0b3RhbF9wb2ludHMiLCJvdXRwdXRfaGVhZGVyIiwiREVCVUciLCJPTURfREVCVUciLCJkZWJ1ZyIsIndhcm4iLCJtc2ciLCJ3ZSIsInRyYWNrZml4IiwicmFpc2UiLCJlIiwib2ZfbGlzdCIsImwiLCJyIiwiZnNwbGl0X3JldiIsImYiLCJleGNsIiwiYWNjdSIsImwkMCIsInRsIiwicmlnaHQiLCJsZWZ0JDAiLCJ0bCQwIiwibGVmdCIsInJpZ2h0JDAiLCJsZWZ0JDIiLCJ0bCQxIiwibGVmdCQxIiwiZnNwbGl0IiwicmV2IiwiaWRfb2Zfc3RyaW5nIiwiaWRzIiwicyIsIm4iLCJvdXQiLCJzdGFydGVkIiwiaSIsImMiLCJpJDIiLCJpJDAiLCJpJDEiLCJzJDAiLCJpJDQiLCJsYXN0X3RyYWlsaW5nIiwiaSQzIiwiaHRtbGVudGl0aWVzIiwibWQiLCJiIiwiaiQxIiwiaiIsImokMCIsImokNCIsImokMiIsImokMyIsIm1pbmltYWxpemVfYmxhbmtzIiwiZiQwIiwiZWF0IiwiZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMiLCJodG1sIiwiaHRtbCQwIiwiY3V0X29uX2NoYXJfZnJvbSIsInJlbW92ZV9wcmVmaXhfc3BhY2VzIiwiaHRtbCQyIiwicmVzIiwiYWZ0ZXJfZXEiLCJuYW1lIiwibmFtZSQwIiwiYWZ0ZXJfZXEkMCIsInJlc3QiLCJ2YWx1ZSIsIm5ld19zIiwiYSIsInJlcyQwIiwiaHRtbCQxIiwiZXh0cmFjdF9pbm5lcl9odG1sIiwicCIsImh0bWxfdm9pZF9lbGVtZW50cyIsInN5bWJvbCIsImwxIiwibDIiLCJzZWxmXzEiLCJ0aXRsZSIsInVybCIsImxuIiwibG9vc2VfY29tcGFyZSIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsImUxIiwidGwyJDAiLCJlMiQwIiwidGwxJDAiLCJlMSQwIiwidGwyIiwiZTIiLCJ0bDEiLCJ0bDIkMSIsImUyJDEiLCJ0bDEkMSIsImUxJDEiLCJ0bDEkMiIsImMxIiwidGwyJDIiLCJjMiIsImkkNSIsInRsMSQzIiwidGl0bGUxIiwidDEkMSIsImhyZWYxIiwidGwyJDMiLCJ0aXRsZTIiLCJ0MiQxIiwiaHJlZjIiLCJpJDYiLCJpJDciLCJpJDgiLCJ0bDIkNCIsImZhbGxiYWNrMiIsIngyIiwibmFtZTIiLCJyZWZfY29udGFpbmVyMiIsInRsMSQ0IiwiZmFsbGJhY2sxIiwieDEiLCJuYW1lMSIsInJlZl9jb250YWluZXIxIiwiZTEkMiIsInRsMiQ1IiwiZTIkMiIsInRsMSQ1IiwiaSQxMSIsImkkMTIiLCJpJDkiLCJjZmYiLCJpJDEwIiwibDEkMCIsImwyJDAiLCJ0bDIkNiIsImUyJDMiLCJ0bDEkNiIsImUxJDMiLCJpJDEzIiwic2VsZl8yIiwiZW1wdHlfZXh0ZW5zaW9uIiwibm9ybWFsaXNlX21kIiwibG9vcCIsInYiLCJ0bCQyIiwidiQwIiwibG9vcCQwIiwidGwkMyIsInYkMSIsInRsJDQiLCJ2JDIiLCJ0bCQ1IiwidiQzIiwidGwkNiIsInYkNCIsInRsJDciLCJ2JDUiLCJ0bCQxMCIsInRsJDkiLCJ0bCQ4IiwidGwkMTEiLCJ0bCQxMiIsInYkNiIsInRsJDEzIiwidiQ3IiwidGwkMTQiLCJ2JDgiLCJ0bCQxNSIsInYkOSIsInRsJDE2IiwidiQxMCIsInRsJDE3IiwidiQxMSIsInRsJDE4IiwidiQxMiIsImhyZWYiLCJ0bCQxOSIsInYkMTMiLCJzZWxmXzMiLCJ2aXNpdCIsImwkMSIsImwkMiIsImwkMyIsImwkNCIsImwkNSIsImwkNiIsImwkNyIsImwkOCIsImwkOSIsImwkMTAiLCJsJDExIiwibCQxMiIsImwkMTMiLCJsJDE0IiwibCQxNSIsImwkMTYiLCJsJDE3IiwibCQxOCIsImwkMTkiLCJ0bCQyMCIsImwkMjAiLCJ0bCQyMSIsImwkMjEiLCJ0bCQyMiIsImwkMjIiLCJ0bCQyMyIsImwkMjMiLCJ0bCQyNCIsImwkMjQiLCJ0bCQyNSIsImwkMjUiLCJ0bCQyNiIsImwkMjYiLCJ0bCQyNyIsImwkMjciLCJ0bCQyOCIsImwkMjgiLCJkZWZhdWx0X2xhbmd1YWdlIiwidGV4dF9vZl9tZCIsIm1kJDAiLCJ0IiwibWQkMSIsIm1kJDIiLCJjJDAiLCJib2R5IiwiYm9keSQwIiwidCQwIiwidCQxIiwicSIsImFsdCIsIml0ZW0iLCJkZWZhdWx0X2NvZGVfc3R5bGlzdCIsImxhbmciLCJjb2RlIiwiZmlsdGVyX3RleHRfb21kX3JldiIsInJlbW92ZV9saW5rcyIsImh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQiLCJyZW1vdmVfaGVhZGVyX2xpbmtzIiwib3ZlcnJpZGUiLCJwaW5kZW50IiwibmwyYnIiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJodG1sX29mX21kIiwibWQkMyIsIm1kJDQiLCJlJDIiLCJtZCQ1IiwiZSQzIiwicyQzIiwiaWgkMCIsImlkJDAiLCJtZCQ2IiwibWQkNyIsImUkNCIsIm1kJDgiLCJlJDUiLCJzJDQiLCJpaCQxIiwiaWQkMSIsIm1kJDkiLCJtZCQxMCIsImUkNiIsIm1kJDExIiwiZSQ3IiwicyQ1IiwiaWgkMiIsImlkJDIiLCJtZCQxMiIsIm1kJDEzIiwiZSQ4IiwibWQkMTQiLCJlJDkiLCJzJDYiLCJpaCQzIiwiaWQkMyIsIm1kJDE1IiwibWQkMTYiLCJlJDEwIiwibWQkMTciLCJlJDExIiwicyQ3IiwiaWgkNCIsImlkJDQiLCJtZCQxOCIsInMkOCIsInMkOSIsInMkMTAiLCJtZCQxOSIsInMkMTEiLCJtZCQyMCIsInMkMTIiLCJzJDE0IiwibmV3X2MiLCJsYW5nJDAiLCJzJDE1IiwibmV3X2MkMCIsInMkMTYiLCJzJDE3IiwicyQxOCIsImZhbGxiYWNrIiwidGV4dCIsInJjIiwicyQxOSIsInRpdGxlJDAiLCJocmVmJDAiLCJmYWxsYmFjayQwIiwicmMkMCIsInMkMjAiLCJ0aXRsZSQxIiwic3JjIiwidGFnbmFtZSIsImF0dHJzJDEiLCJhdHRycyQyIiwicyQyMiIsInN0cmluZ19vZl9hdHRycyIsImF0dHJzIiwiYXR0cnMkMCIsInMkMjEiLCJhdHRycyQzIiwidGFnbmFtZSQwIiwiYXR0cnMkNCIsInMkMjMiLCJzJDI0IiwicyQyNSIsInMkMjYiLCJzJDI3IiwicyQyOCIsInMkMjkiLCJzJDMwIiwidGl0bGUkMiIsInNyYyQwIiwiYWx0JDAiLCJzJDMxIiwieCIsInMkMzIiLCJzJDMzIiwicyQxMyIsImxpIiwiY3MiLCJoZWFkZXJzX29mX21kIiwic2V4cHJfb2ZfbWQiLCJ0bCQyOSIsInRsJDMwIiwiZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMiLCJtYXJrZG93bl9vZl9tZCIsImFkZF9zcGFjZXMiLCJyZWZlcmVuY2VzIiwibGlzdF9pbmRlbnQiLCJmc3RfcF9pbl9saSIsImlzX2luX2xpc3QiLCJmc3RfcF9pbl9saSQwIiwiaXNfaW5fbGlzdCQwIiwiYyQxIiwiYyQyIiwiZmlsdGVyIiwiYiQxIiwiYiQyIiwieCQwIiwiaGQiLCJjJDMiLCJmaWx0ZXIkMCIsImIkMyIsImIkNCIsImhkJDAiLCJuJDAiLCJvdXRwdXRfaW5kZW50ZWRfYmxvY2siLCJwJDAiLCJwJDEiLCJuZWVkc19uZXdsaW5lcyIsImEkMCIsImIkMCIsIm5sIiwieCQxIiwic3RyaW5nX29mX3Rva2VuIiwibiQxIiwibiQyIiwibiQzIiwibiQ0IiwibiQ1IiwibiQ2IiwibiQ3IiwibiQ4IiwibiQ5IiwibiQxMCIsIm4kMTEiLCJuJDEyIiwibiQxMyIsIm4kMTQiLCJuJDE1IiwibiQxNiIsIm4kMTciLCJuJDE4IiwibiQxOSIsIm4kMjAiLCJuJDIxIiwibiQyMiIsIm4kMjMiLCJuJDI0IiwibiQyNSIsIm4kMjYiLCJuJDI3IiwibiQyOCIsIm4kMjkiLCJuJDMwIiwibiQzMSIsIm4kMzIiLCJuJDMzIiwibyIsImxlbmd0aCIsInNwbGl0X2ZpcnN0IiwibGV4IiwicmVzdWx0Iiwid29yZCIsInN0YXJ0Iiwibl9vY2MiLCJyJDAiLCJybiIsInciLCJnZXQiLCJsZW5ndGgkMCIsInN1YiIsImFyciIsInBvcyIsImxlbiIsImxleF9iaWdhcnJheSIsIm1ha2Vfc3BhY2UiLCJzdHJpbmdfb2ZfdG9rZW5zIiwiZGVzdHJpbmdfb2ZfdG9rZW5zIiwidGxpc3QiLCJsaW1pdCIsInRsaXN0JDAiLCJ0bGlzdCQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQxMSIsInByZXZpb3VzJDEwIiwicHJldmlvdXMkMTMiLCJwcmV2aW91cyQxMiIsInByZXZpb3VzJDE1IiwicHJldmlvdXMkMTQiLCJwcmV2aW91cyQxNyIsInByZXZpb3VzJDE2IiwicHJldmlvdXMkMTkiLCJwcmV2aW91cyQxOCIsInByZXZpb3VzJDIxIiwicHJldmlvdXMkMjAiLCJwcmV2aW91cyQyMyIsInByZXZpb3VzJDIyIiwicHJldmlvdXMkMjUiLCJwcmV2aW91cyQyNCIsInByZXZpb3VzJDI3IiwicHJldmlvdXMkMjYiLCJwcmV2aW91cyQyOSIsInByZXZpb3VzJDI4IiwicHJldmlvdXMkMzEiLCJwcmV2aW91cyQzMCIsInByZXZpb3VzJDMzIiwicHJldmlvdXMkMzIiLCJwcmV2aW91cyQzNSIsInByZXZpb3VzJDM0IiwicHJldmlvdXMkMzciLCJwcmV2aW91cyQzNiIsInByZXZpb3VzJDM5IiwicHJldmlvdXMkMzgiLCJwcmV2aW91cyQ0MSIsInByZXZpb3VzJDQwIiwicHJldmlvdXMkNDMiLCJwcmV2aW91cyQ0MiIsInByZXZpb3VzJDkiLCJwcmV2aW91cyQ0NCIsInByZXZpb3VzJDQ4IiwicHJldmlvdXMkNDkiLCJwcmV2aW91cyQ3IiwicHJldmlvdXMkNiIsInByZXZpb3VzJDgiLCJwcmV2aW91cyQ1IiwicHJldmlvdXMkNCIsInByZXZpb3VzJDMiLCJwcmV2aW91cyQyIiwicHJldmlvdXMkMCIsInByZXZpb3VzJDEiLCJwcmV2aW91cyQ0NyIsInByZXZpb3VzJDQ2IiwicHJldmlvdXMkNDUiLCJpbmRlbnRzJDEiLCJpbmRlbnRzJDAiLCJpbmRlbnRzJDIiLCJpbmRlbnRzIiwiZGVmYXVsdF9sYW5nIiwiZXh0ZW5zaW9ucyIsImdoX3VlbXBoX29yX2JvbGRfc3R5bGUiLCJibGluZF9odG1sIiwic3RyaWN0X2h0bWwiLCJ3YXJuX2Vycm9yIiwiaHRtbGNvZGVzX3NldCIsImlubGluZV9odG1sdGFnc19zZXQiLCJub3RpbmJvZHl0YWdzIiwiaHRtbHRhZ3Nfc2V0IiwiZml4IiwiYWNjdSQwIiwidGwkMzEiLCJ0bCQzMiIsInRsJDMzIiwidGwkMzQiLCJ0bCQzNSIsInRsJDM2IiwidGwkMzciLCJ0bCQzOCIsInRsJDM5IiwidGwkNDAiLCJ0bCQ0MSIsInRsJDQyIiwidGwkNDMiLCJ0bCQ0NCIsInRsJDQ1IiwidGwkNDYiLCJ0bCQ0NyIsInRsJDQ4IiwidGwkNDkiLCJ0bCQ1MCIsInRsJDUxIiwidGwkNTIiLCJ0bCQ1MyIsInRsJDU0IiwidGwkNTUiLCJ0bCQ1NiIsInRsJDU3IiwidGwkNTgiLCJ0bCQ1OSIsInRsJDYwIiwidGwkNjEiLCJ0bCQ2MiIsInRsJDYzIiwidGwkNjQiLCJ0bCQ2NSIsInRsJDY2IiwidGwkNjciLCJ0bCQ2OCIsInRsJDY5IiwibiQzNCIsInRsJDcwIiwidGwkNzEiLCJuJDM1IiwidGwkNzIiLCJ0bCQ3MyIsIm4kMzYiLCJ0bCQ3NCIsInRsJDc1IiwibiQzNyIsInRsJDc2IiwidGwkNzciLCJuJDM4IiwidGwkNzgiLCJ0bCQ3OSIsIm4kMzkiLCJ0bCQ4MCIsInRsJDgxIiwibiQ0MCIsInRsJDgyIiwidGwkODMiLCJiJDUiLCJuJDQxIiwidGwkODQiLCJ0bCQ4NSIsImIkNiIsIm4kNDIiLCJ0bCQ4NiIsInRsJDg3IiwiYiQ3IiwibiQ0MyIsInRsJDg4IiwidGwkODkiLCJiJDgiLCJuJDQ0IiwidGwkOTAiLCJ0bCQ5MSIsImIkOSIsIm4kNDUiLCJ0bCQ5MiIsInRsJDkzIiwiYiQxMCIsIm4kNDYiLCJ0bCQ5NCIsInRsJDk1IiwiYiQxMSIsIm4kNDciLCJ0bCQ5NiIsInRsJDk3IiwiYiQxMiIsIm4kNDgiLCJ0bCQ5OCIsInRsJDk5IiwiYiQxMyIsIm4kNDkiLCJ0bCQxMDAiLCJ0bCQxMDEiLCJiJDE0IiwibiQ1MCIsInRsJDEwMiIsInRsJDEwMyIsImIkMTUiLCJuJDUxIiwidGwkMTA0IiwidGwkMTA1IiwiYiQxNiIsIm4kNTIiLCJ0bCQxMDYiLCJ0bCQxMDciLCJiJDE3IiwibiQ1MyIsInRsJDEwOCIsInRsJDEwOSIsImIkMTgiLCJuJDU0IiwidGwkMTEwIiwidGwkMTExIiwiYiQxOSIsIm4kNTUiLCJ0bCQxMTIiLCJ0bCQxMTMiLCJiJDIwIiwibiQ1NiIsInRsJDExNCIsInRsJDExNSIsImIkMjEiLCJuJDU3IiwidGwkMTE2IiwidGwkMTE3IiwiYiQyMiIsIm4kNTgiLCJ0bCQxMTgiLCJ0bCQxMTkiLCJiJDIzIiwibiQ1OSIsInRsJDEyMCIsInRsJDEyMSIsImIkMjQiLCJuJDYwIiwidGwkMTIyIiwidGwkMTIzIiwiYiQyNSIsIm4kNjEiLCJ0bCQxMjQiLCJ0bCQxMjUiLCJiJDI2IiwibiQ2MiIsInRsJDEyNiIsInRsJDEyNyIsImIkMjciLCJuJDYzIiwidGwkMTI4IiwidGwkMTI5IiwiYiQyOCIsIm4kNjQiLCJ0bCQxMzAiLCJ0bCQxMzEiLCJiJDI5IiwibiQ2NSIsInRsJDEzMiIsInRsJDEzMyIsImIkMzAiLCJuJDY2IiwidGwkMTM0IiwidGwkMTM1IiwiYiQzMSIsIm4kNjciLCJ0bCQxMzYiLCJ0bCQxMzciLCJiJDMyIiwibiQ2OCIsInRsJDEzOCIsInRsJDEzOSIsImIkMzMiLCJyZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyIsIm1ha2VfcGFyYWdyYXBocyIsImNwJDAiLCJjcCQ1IiwiYWNjdSQxNyIsImIxIiwiYjIiLCJjbGVhbl9wYXJhZ3JhcGhzIiwiYXNzZXJ0X3dlbGxfZm9ybWVkIiwiZXh0cmFjdF9mYWxsYmFjayIsIm1haW5fbG9vcCIsInJlbWFpbnMiLCJyJDEiLCJhY2N1JDIiLCJyJDIiLCJtIiwiYWNjdSQzIiwidW5pbmRlbnRfcmV2IiwibGV4ZW1lcyIsImNsJDAiLCJ5IiwidW5pbmRlbnQiLCJzbmQiLCJmc3QiLCJpc19ibGFuayIsInNlbXBoX29yX2JvbGQiLCJzbV91ZW1waF9vcl9ib2xkIiwiZ2hfdWVtcGhfb3JfYm9sZCIsInVlbXBoX29yX2JvbGQiLCJlYXRfYmxhbmsiLCJzZXRleHRfdGl0bGUiLCJkZXRlY3RfYmFsYW5jZWRfYnFzIiwiciQzIiwiciQ0IiwiciQ1IiwiciQ2IiwiciQ3IiwiYmwiLCJibCQwIiwidGFnX21heWJlX2gxIiwidGFnX21heWJlX2gyIiwidGFnX21kIiwic2VsZl80IiwidGFnX3NldGV4dCIsInBsJDAiLCJybGVmdCQwIiwicmlnaHQkMSIsInJpZ2h0JDIiLCJybGVmdCIsImhyX20iLCJocl9zIiwiaHIiLCJiY29kZSIsImRlZmF1bHRfbGFuZyQwIiwiYWNjdSQxIiwiY2IiLCJjb2RlJDAiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDEiLCJjbGVhbl9iY29kZSIsImNvZGUkNCIsInJlYWRfdW50aWxfZ3QiLCJicSIsIm5vX25sIiwiYWNjdSQxOSIsImFjY3UkMjAiLCJ4JDIiLCJyZWFkX3VudGlsX2x0IiwiYWNjdSQxNiIsInJlYWRfdW50aWxfY3BhcmVudGgiLCJyZWFkX3VudGlsX29wYXJlbnRoIiwicmVhZF91bnRpbF9kcSIsInJlYWRfdW50aWxfcSIsInJlYWRfdW50aWxfb2JyYWNrZXQiLCJyZWFkX3VudGlsX2NicmFja2V0IiwicmVhZF91bnRpbF9zcGFjZSIsInJlYWRfdW50aWxfbmV3bGluZSIsInJlYWRfdGl0bGUiLCJoIiwiaCQwIiwibWF5YmVfZXh0ZW5zaW9uIiwibnAiLCJuciIsImsiLCJlbWFpbHN0eWxlX3F1b3RpbmciLCJibG9jayQwIiwiY2wkMiIsImJsb2NrIiwibWF5YmVfcmVmZXJlbmNlIiwibWF5YmVfZGVmIiwicmVtYWlucyQwIiwicmVtYWlucyQxIiwicmVtYWlucyQyIiwidXJsJDAiLCJ1cmwkMSIsImJsYW5rIiwiZmxhZyIsInJlbWFpbnMkMyIsInRleHQkMCIsImZhbGxiYWNrJDEiLCJtYXliZV9saW5rIiwicmVhZF91cmwiLCJyX2NwIiwibF9jcCIsInJfZHEiLCJsX2RxIiwicmVzdCQwIiwiaGFzX3BhcmFncmFwaHMiLCJwYXJzZV9saXN0IiwiZW5kX29mX2l0ZW0iLCJzZWxmXzYiLCJzZWxmXzUiLCJibG9jayQ1IiwicmVzdCQ2IiwiYmxvY2skNiIsInJlc3QkNyIsImJsb2NrJDciLCJyZXN0JDUiLCJibG9jayQ4IiwicmVzdCQ5IiwiYmxvY2skOSIsInJlc3QkMTAiLCJibG9jayQxMCIsInJlc3QkOCIsInJlc3QkMSIsImJsb2NrJDEiLCJibG9jayQyIiwicmVzdCQzIiwiYmxvY2skMyIsInJlc3QkNCIsImJsb2NrJDQiLCJyZXN0JDIiLCJyZXZfdG9fdCIsImFkZCIsInN1Ymxpc3QiLCJpdGVtcyIsIml0ZW0kMCIsIm1ha2VfdXAiLCJpdGVtcyQwIiwibGlzdF9pdGVtcyIsImluZGVudHMkMyIsImluZGVudHMkNCIsIm5ld19pdGVtJDAiLCJwJDIiLCJpdGVtcyQ1IiwiaXRlbXMkMyIsIml0ZW1zJDQiLCJuZXdfaXRlbSQxIiwicCQzIiwiaXRlbXMkOCIsIml0ZW1zJDYiLCJzdWJsaXN0JDAiLCJpdGVtcyQ3IiwibmV3X2l0ZW0iLCJpdGVtcyQxIiwiaXRlbXMkMiIsIm5ld19pdGVtJDIiLCJwJDQiLCJpdGVtcyQ5IiwiaXRlbXMkMTAiLCJuZXdfaXRlbSQzIiwicCQ1IiwiaXRlbXMkMTEiLCJzdWJsaXN0JDEiLCJpdGVtcyQxMiIsIml0ZW1zJDEzIiwiaW5kZW50cyQ1IiwibmV3X2l0ZW0kNCIsInAkNiIsIml0ZW1zJDE0Iiwic3VibGlzdCQyIiwiaXRlbXMkMTUiLCJpdGVtcyQxNiIsImluZGVudHMkNiIsInN0cmluZ19vZl9pdGVtcyIsImluZGVudCQwIiwicnAiLCJpY29kZSIsInNlbGZfNyIsImR1bW15X3RhZyIsInNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSIsInNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbiIsIm5ld2xpbmVzIiwibWF5YmVfYXV0b2VtYWlsIiwiZG9tYWluIiwiZW1haWwiLCJpc19oZXgiLCJtZWRpYXR5cGV0ZXh0b21kIiwibWFpbl9pbXBsX3JldiIsInByZXZpb3VzJDUwIiwicHJldmlvdXMkNTEiLCJsZXhlbWVzJDAiLCJsZXhlbWVzJDEiLCJsZXhlbWVzJDIiLCJwcmV2aW91cyQ1MiIsImxleGVtZXMkMyIsInByZXZpb3VzJDUzIiwibGV4ZW1lcyQ0IiwicHJldmlvdXMkNTQiLCJ3JDAiLCJsZXhlbWVzJDUiLCJwcmV2aW91cyQ1NSIsImxleGVtZXMkNiIsInByZXZpb3VzJDU2IiwiciQ4IiwibGV4ZW1lcyQ3IiwicHJldmlvdXMkNTciLCJyJDkiLCJ3JDEiLCJsZXhlbWVzJDgiLCJyJDEzIiwicHJldmlvdXMkNTgiLCJyJDEwIiwibGV4ZW1lcyQ5IiwicHJldmlvdXMkNTkiLCJyJDExIiwibGV4ZW1lcyQxMCIsInByZXZpb3VzJDYwIiwiciQxMiIsImxleGVtZXMkNjEiLCJyJDExNiIsInQkMyIsImxleGVtZXMkNjIiLCJwcmV2aW91cyQxMDciLCJyJDY1IiwibGV4ZW1lcyQ2MyIsInByZXZpb3VzJDEwOCIsInIkNjYiLCJsZXhlbWVzJDY0IiwicHJldmlvdXMkMTA5IiwiciQ2NyIsImxleGVtZXMkNjUiLCJwcmV2aW91cyQxMTAiLCJyJDY4IiwibGV4ZW1lcyQ2NiIsInByZXZpb3VzJDExMSIsInIkNjkiLCJsZXhlbWVzJDY3IiwicHJldmlvdXMkMTEyIiwiciQ3MCIsImxleGVtZXMkNjgiLCJwcmV2aW91cyQxMTMiLCJyJDcxIiwibGV4ZW1lcyQ2OSIsInByZXZpb3VzJDExNCIsInIkNzIiLCJsZXhlbWVzJDcwIiwicHJldmlvdXMkMTE1IiwiciQ3MyIsImxleGVtZXMkNzEiLCJwcmV2aW91cyQxMTYiLCJyJDc0IiwibGV4ZW1lcyQ3MiIsInByZXZpb3VzJDExNyIsInIkNzUiLCJsZXhlbWVzJDczIiwicHJldmlvdXMkMTE4IiwiciQ3NiIsImxleGVtZXMkNzQiLCJwcmV2aW91cyQxMTkiLCJyJDc3IiwibGV4ZW1lcyQ3NSIsInByZXZpb3VzJDEyMCIsInIkNzgiLCJsZXhlbWVzJDc2IiwicHJldmlvdXMkMTIxIiwiciQ3OSIsImxleGVtZXMkNzciLCJwcmV2aW91cyQxMjIiLCJyJDgwIiwibGV4ZW1lcyQ3OCIsInByZXZpb3VzJDEyMyIsInIkODEiLCJsZXhlbWVzJDc5IiwiciQ4MiIsImxleGVtZXMkODAiLCJyJDgzIiwibGV4ZW1lcyQ4MSIsInIkODQiLCJsZXhlbWVzJDgyIiwiciQ4NSIsImxleGVtZXMkODMiLCJyJDg2IiwibGV4ZW1lcyQ4NCIsInIkODciLCJsZXhlbWVzJDg1IiwiciQ4OCIsImxleGVtZXMkODYiLCJyJDg5IiwibGV4ZW1lcyQ4NyIsInIkOTAiLCJsZXhlbWVzJDg4IiwiciQ5MSIsImxleGVtZXMkODkiLCJyJDkyIiwibGV4ZW1lcyQ5MCIsInIkOTMiLCJsZXhlbWVzJDkxIiwiciQ5NCIsImxleGVtZXMkOTIiLCJyJDk1IiwibGV4ZW1lcyQ5MyIsInIkOTYiLCJsZXhlbWVzJDk0IiwiciQ5NyIsImxleGVtZXMkOTUiLCJyJDk4IiwibGV4ZW1lcyQ5NiIsInIkOTkiLCJsZXhlbWVzJDk3IiwiciQxMDAiLCJsZXhlbWVzJDk4IiwiciQxMDEiLCJsZXhlbWVzJDk5IiwiciQxMDIiLCJsZXhlbWVzJDEwMCIsInIkMTAzIiwibGV4ZW1lcyQxMDEiLCJyJDEwNCIsImxleGVtZXMkMTAyIiwiciQxMDUiLCJsZXhlbWVzJDEwMyIsInIkMTA2IiwibGV4ZW1lcyQxMDQiLCJyJDEwNyIsImxleGVtZXMkMTA1IiwiciQxMDgiLCJsZXhlbWVzJDEwNiIsInIkMTA5IiwibGV4ZW1lcyQxMDciLCJyJDExMCIsImxleGVtZXMkMTA4IiwiciQxMTEiLCJsZXhlbWVzJDEwOSIsInIkMTEyIiwibGV4ZW1lcyQxMTAiLCJyJDExMyIsImxleGVtZXMkMTExIiwiciQxMTQiLCJsZXhlbWVzJDExMiIsInIkMTE1IiwiciQ2NCIsImxleGVtZXMkMTEzIiwibGV4ZW1lcyQxMTQiLCJwcmV2aW91cyQxMjQiLCJyJDExNyIsInByZXZpb3VzJDEyNSIsInIkMTE4IiwibGV4ZW1lcyQxMTkiLCJnIiwibGV4ZW1lcyQxMjMiLCJjb21tZW50cyIsInIkMTMyIiwibGV4ZW1lcyQxMjQiLCJwcmV2aW91cyQxMzIiLCJyJDEzMyIsInByZXZpb3VzJDEzMyIsInIkMTM0IiwidyQ1IiwidyQ2IiwibGV4ZW1lcyQxMjUiLCJnJDAiLCJsZXhlbWVzJDEyNiIsInIkMTM2IiwibGV4ZW1lcyQxMjciLCJyJDEzNyIsInIkMTM1IiwibGV4ZW1lcyQxMjgiLCJyJDEzOCIsImxleGVtZXMkMTI5IiwibGV4ZW1lcyQxMzAiLCJwcmV2aW91cyQxMzQiLCJyJDEzOSIsImxleGVtZXMkMTMxIiwicHJldmlvdXMkMTM1IiwiciQxNDAiLCJsZXhlbWVzJDEzMiIsInByZXZpb3VzJDEzNiIsInIkMTQxIiwicHJldmlvdXMkMTM3IiwiciQxNDIiLCJsZXhlbWVzJDEzMyIsImxleGVtZXMkMTM0IiwieCQzIiwicHJldmlvdXMkMTM4IiwiciQxNDMiLCJtYWluX2ltcGwiLCJsZXhlbWVzJDEzNSIsInByZXZpb3VzJDEzOSIsInIkMTQ0IiwicHJldmlvdXMkMTQwIiwiciQxNDUiLCJsZXhlbWVzJDEzNiIsInIkMTQ2IiwibGV4ZW1lcyQxMzciLCJyJDE0NyIsImxleGVtZXMkMTM4IiwicHJldmlvdXMkMTQxIiwiciQxNDgiLCJsZXhlbWVzJDEzOSIsInByZXZpb3VzJDE0MiIsInIkMTQ5IiwibGV4ZW1lcyQxNDAiLCJwcmV2aW91cyQxNDMiLCJyJDE1MCIsImxleGVtZXMkMTQxIiwiciQxNTEiLCJsZXhlbWVzJDE0MiIsImxleGVtZXMkMTQzIiwieCQ0IiwicHJldmlvdXMkMTQ0IiwiciQxNTIiLCJwcmV2aW91cyQxNDUiLCJyJDE1MyIsImxleGVtZXMkMTQ0IiwicHJldmlvdXMkMTQ2IiwiciQxNTQiLCJwcmV2aW91cyQxNDciLCJyJDE1NSIsImxleGVtZXMkMTQ1IiwidyQ3IiwicHJldmlvdXMkMTQ4IiwiciQxNTYiLCJsZXhlbWVzJDE0NiIsImxleGVtZXMkMTQ3IiwicHJldmlvdXMkMTQ5IiwiciQxNTciLCJsZXhlbWVzJDU4IiwibGV4ZW1lcyQ1OSIsInByZXZpb3VzJDEwNCIsInIkNjEiLCJsZXhlbWVzJDYwIiwicHJldmlvdXMkMTA1IiwiciQ2MiIsInByZXZpb3VzJDEwNiIsInIkNjMiLCJ3JDQiLCJsZXhlbWVzJDEyMCIsInVybCQyIiwibGV4ZW1lcyQxMjIiLCJwcmV2aW91cyQxMzAiLCJyJDEzMCIsInByZXZpb3VzJDEzMSIsInIkMTMxIiwibGV4ZW1lcyQxMjEiLCJ1cmwkMyIsInIkMTI4IiwiciQxMjkiLCJsZXhlbWVzJDExNSIsImxleGVtZXMkMTE2IiwiciQxMjEiLCJ0bHMiLCJsZXhlbWVzJDExNyIsInByZXZpb3VzJDEyNiIsInIkMTE5IiwicHJldmlvdXMkMTI3IiwiciQxMjAiLCJudGwkMCIsIm50bCQxIiwiYWx0JDIiLCJhbHQkMSIsInIkMTI3IiwibnRsIiwicGF0aF90aXRsZSIsInBhdGgiLCJub3RoaW5nIiwiciQxMjUiLCJwYXRoJDAiLCJ0aXRsZSQzIiwiciQxMjQiLCJyJDEyNiIsImxleGVtZXMkMTE4IiwicHJldmlvdXMkMTI4IiwiciQxMjIiLCJwcmV2aW91cyQxMjkiLCJyJDEyMyIsInNwIiwibGV4ZW1lcyQzNyIsInByZXZpb3VzJDg4IiwiciQ0MyIsImxleGVtZXMkMzgiLCJwcmV2aW91cyQ4OSIsInIkNDQiLCJsZXhlbWVzJDQ1IiwicHJldmlvdXMkOTUiLCJsZXhlbWVzJDQ3IiwibGV4ZW1lcyQ1MSIsInIkNTYiLCJsZXhlbWVzJDUyIiwicHJldmlvdXMkOTkiLCJsZXhlbWVzJDQ4IiwiciQ1MiIsImxleGVtZXMkNDkiLCJwcmV2aW91cyQ5NiIsInIkNTMiLCJsZXhlbWVzJDUwIiwicHJldmlvdXMkOTciLCJyJDU0IiwicHJldmlvdXMkOTgiLCJyJDU1IiwibGV4ZW1lcyQ1MyIsInR0bCIsImxleGVtZXMkNTQiLCJwcmV2aW91cyQxMDAiLCJyJDU3IiwicHJldmlvdXMkMTAxIiwiciQ1OCIsImxleGVtZXMkNTUiLCJwcmV2aW91cyQxMDIiLCJyJDU5IiwibGV4ZW1lcyQ1NiIsInByZXZpb3VzJDEwMyIsImxleGVtZXMkNTciLCJyJDYwIiwibGV4ZW1lcyQzOSIsImxleGVtZXMkNDIiLCJyJDQ4IiwibGV4ZW1lcyQ0MyIsInByZXZpb3VzJDkyIiwibGV4ZW1lcyQ0NCIsInByZXZpb3VzJDkzIiwiciQ0OSIsInByZXZpb3VzJDk0IiwiciQ1MCIsImxleGVtZXMkNDAiLCJyJDQ1IiwibGV4ZW1lcyQ0MSIsInByZXZpb3VzJDkwIiwiciQ0NiIsInByZXZpb3VzJDkxIiwiciQ0NyIsImZvbyQxIiwibGV4ZW1lcyQ0NiIsImZvbyQwIiwiZm9vIiwibmV3X3IiLCJyJDUxIiwibGV4ZW1lcyQzNSIsInIkNDEiLCJsZXhlbWVzJDM2IiwicHJldmlvdXMkODciLCJyJDQyIiwidGsiLCJsZXhlbWVzJDMwIiwibGV4ZW1lcyQzMSIsInByZXZpb3VzJDgxIiwiciQzNSIsInByZXZpb3VzJDgyIiwiciQzNiIsImxleGVtZXMkMzIiLCJsZXhlbWVzJDMzIiwicHJldmlvdXMkODMiLCJyJDM3IiwicHJldmlvdXMkODQiLCJyJDM4IiwibGV4ZW1lcyQzNCIsInByZXZpb3VzJDg1IiwiciQzOSIsInByZXZpb3VzJDg2IiwiciQ0MCIsImxleGVtZXMkMjgiLCJwcmV2aW91cyQ3OSIsInIkMzMiLCJ0a3MiLCJ0azAiLCJ0ZXh0JDEiLCJsZXhlbWVzJDI5IiwicHJldmlvdXMkODAiLCJyJDM0IiwibGV4ZW1lcyQyNSIsImxleGVtZXMkMjYiLCJwcmV2aW91cyQ3NiIsInIkMzAiLCJsZXhlbWVzJDI3IiwicHJldmlvdXMkNzciLCJyJDMxIiwicHJldmlvdXMkNzgiLCJyJDMyIiwibGV4ZW1lcyQyMCIsImxleGVtZXMkMjEiLCJwcmV2aW91cyQ3MSIsInIkMjUiLCJwcmV2aW91cyQ3MiIsInIkMjYiLCJsZXhlbWVzJDIyIiwibGV4ZW1lcyQyMyIsInByZXZpb3VzJDczIiwiciQyNyIsInByZXZpb3VzJDc0IiwiciQyOCIsImxleGVtZXMkMjQiLCJwcmV2aW91cyQ3NSIsInIkMjkiLCJsZXhlbWVzJDExIiwidyQyIiwiaHRtbF9zdHVmZiIsInRhZ25hbWV0b3AiLCJtZF9vZl9pbnRlcm1fbGlzdCIsIm1kX29mX2ludGVybV9saXN0JDAiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInN0cmluZ19vZl90YWdzdGF0dXMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsImFkZF90b2tlbl90b19ib2R5IiwidCQ2IiwiYWRkX3Rva2VuX3RvX2JvZHkkMCIsImRlbGltaXRlciIsImJlZm9yZSIsInRhZ25hbWUkMiIsImxleGVtZXMkMTgiLCJoJDEiLCJwcmV2aW91cyQ2NyIsInIkMjEiLCJwcmV2aW91cyQ2OCIsInIkMjIiLCJsZXhlbWVzJDEyIiwibGV4ZW1lcyQxMyIsInByZXZpb3VzJDYxIiwiciQxNCIsImxleGVtZXMkMTQiLCJwcmV2aW91cyQ2MiIsInIkMTUiLCJwcmV2aW91cyQ2MyIsInIkMTYiLCJtYWluX2xvb3BfcmV2IiwibWFpbl9wYXJzZSIsInBhcnNlIiwiZGVmYXVsdF9wYXJzZSIsImQiLCJ3YXJuaW5nIiwibGV4X2Zyb21faW5jaGFubmVsIiwiaWMiLCJpY19jb250ZW50IiwidG9fc3RyaW5nIiwicHAiLCJhdHRyaWJ1dGVzIiwibm9kZW5hbWUiLCJvZl9pbnB1dCIsIm9mX3N0cmluZyIsIm9mX2JpZ2FycmF5Iiwic2V0X2RlZmF1bHRfbGFuZyIsInQkNyIsInQkOCIsInQkOSIsInQkMTAiLCJ0JDExIiwidCQxMiIsInQkMTMiLCJmaW5kX3N0YXJ0JDAiLCJsZXZlbCIsIm51bWJlciIsInN1YnNlY3Rpb25zIiwiZGVhbF93aXRoX2hlYWRlciIsImZpbmRfc3RhcnQiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJtYWtlX3RvYyQwIiwibWluX2xldmVsIiwibWF4X2xldmVsIiwidG9jX2VudHJ5IiwibWFrZV90b2MiLCJzdWJfdG9jIiwidG9jIiwic3ViX3RvYyQwIiwidG9jJDAiLCJkZXB0aCIsImhlYWRlcnMkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdGh1bmsuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK29iai5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8raWVlZV83NTQuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rZmFpbC5qcyIsIi9idWlsdGluLytzdGRsaWIuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytiaWdhcnJheS5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3VuaXguanMiLCIvYnVpbHRpbi8rZnMuanMiLCIvYnVpbHRpbi8rZnNfZmFrZS5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK25hdC5qcyIsIi9idWlsdGluLytmc19ub2RlLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfYmlnc3RyaW5nL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaWdzdHJpbmdhZi9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLythcnJheS5qcyIsIi9idWlsdGluLytibGFrZTIuanMiLCIvYnVpbHRpbi8rbWQ1LmpzIiwiL2J1aWx0aW4vK2VmZmVjdC5qcyIsIi9idWlsdGluLytkb21haW4uanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rcnVudGltZV9ldmVudHMuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9idWlsdGluLyt3ZWFrLmpzIiwiL2J1aWx0aW4vK2djLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytncmFwaGljcy5qcyIsIi9idWlsdGluLytqc2xpYl9qc19vZl9vY2FtbC5qcyIsIi9idWlsdGluLytsZXhpbmcuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGVhcF9ibG9jay9ydW50aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2phdmFzY3JpcHRfcHJvZmlsaW5nL3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYXRvbWljLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NhbWxpbnRlcm5hbExhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbWFyc2hhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9uYXRpdmVpbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3BhcnNpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9zdGFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2VtYXBob3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2RvbWFpbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2R5bmFycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9wcmludGV4Yy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mdW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9kaWdlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvYmlnYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvd2Vhay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvc2NhbmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FsbGJhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwvY2FtbGludGVybmFsTW9kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VwaGVtZXJvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnZfZ3JhbW1hci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliMC9zZXhwX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9yZWNvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9nbG9iYWxpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9wb2x5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ltcG9ydDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3lzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2NvbXBhcmVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcHB4X2hhc2hfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3dvcmRfc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3ByZXR0eV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXhuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvd2l0aF9yZXR1cm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9mbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW5kZXhlZF9jb250YWluZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9yYW5kb21fcmVwci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5X3Blcm11dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlczAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb2JqX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdW5pZm9ybV9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2Zsb2F0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ieXRlc190ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0YWdlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGV4X2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50X2NvbnZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG93X292ZXJmbG93X2JvdW5kcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludF9tYXRoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcG9wY291bnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zaWduLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvdWNoYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvb3B0aW9uX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9tYXBfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2Uvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9ub3RoaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbGlua2VkX3F1ZXVlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjNfZW11bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2ludDMyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9oYXNodGJsX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9hdmx0cmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9idWZmZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYWNrdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZS9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbG9uZ2lkZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL3BwcmludGFzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDJfNTAxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV81MDFfNTAyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAxXzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzUwMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNTAwXzQxNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDE0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF80MTMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxM180MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDEyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTJfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDExXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDA5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDlfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQwOC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA4XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwN180MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA2Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDZfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA1XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDAzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDNfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAyXzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0bGliL2tleXdvcmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0X2hlbHBlcl9saXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvdmVyc2lvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdC93YXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvYXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3QvbG9jYXRpb25fZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb2NhbWwtY29tcGlsZXItbGlicy9zaGFkb3cvb2NhbWxfc2hhZG93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcmludF9kaWZmL3BweGxpYl9wcmludF9kaWZmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmVycy9wcHhfZGVyaXZlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3RyYXZlcnNlX2J1aWx0aW5zL3BweGxpYl90cmF2ZXJzZV9idWlsdGlucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3RkcHB4L3N0ZHBweC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXJfZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9sb2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvbmdpZGVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvYXN0X2J1aWxkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NhbGxlcl9pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc3BlbGxjaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybl9nZW5lcmF0ZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9hdHRyaWJ1dGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2NvZGVfcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZXhwYW5zaW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2FzdF90cmF2ZXJzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvc2tpcF9oYXNoX2JhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9jb2RlX21hdGNoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4dGVuc2lvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvY29udGV4dF9mcmVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9yZWNvbmNpbGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL3F1b3Rlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvbWVybGluX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2xvY2F0aW9uX2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9kcml2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2lnbm9yZV91bnVzZWRfd2FybmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhsaWIvZGVyaXZpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweGxpYi9wcHhsaWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL2F0dHJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9sYWJlbF93aXRoX25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252L2V4cGFuZGVyL3BweF95b2pzb25fY29udl9leHBhbmRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZV9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sLWNvbXBpbGVyL3J1bnRpbWUvanNvb19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC90eXBlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2Zvcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwveG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3dlYlNvY2tldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvd2ViR0wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL3VybC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9zeXNfanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvcGVyZm9ybWFuY2VPYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9tdXRhdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvanNvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9jU1MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbC9kb21fc3ZnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2V2ZW50U291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvZ2VvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50ZXJzZWN0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi90YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9wcm9taXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfbWluL2xvZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9lempzX21pbi9iaWdJbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvZXpqc19taW4vZG9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2V6anNfaWRiL2V6anNfaWRiLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3N0ZGlvL2luX2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc3RkaW8vb3V0X2NoYW5uZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3NleHBfY29udi9ydW50aW1lLWxpYi9wcHhfc2V4cF9jb252X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZW51bWVyYXRlL3J1bnRpbWUtbGliL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9hc3NlcnQvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfYmVuY2gvcnVudGltZS1saWIvYmVuY2htYXJrX2FjY3VtdWxhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2UvbWQ1L21kNV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUvYmluX3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzL3N0YWJsZV93aXRuZXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3dyaXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L3JlYWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc2l6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC90eXBlX2NsYXNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3QvdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmluX3Byb3Qvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jpbl9wcm90L21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iaW5fcHJvdC9ibG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9jb25maWcvaW5saW5lX3Rlc3RfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3RpbWVfbm93L3RpbWVfbm93Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9wcHhfaW5saW5lX3Rlc3RfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdWlfZWZmZWN0L3VpX2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9qc19vZl9vY2FtbF9wYXRjaGVzL2pzX29mX29jYW1sX3BhdGNoZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZmlsZW5hbWVfYmFzZS9maWxlbmFtZV9iYXNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdl9tYXAvdW5pdl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmQvc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZWFwX2Jsb2NrL2hlYXBfYmxvY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS92YWxpZGF0ZS92YWxpZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHBhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmluYWJsZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9wZXJtcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbXBhcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGVfbW9kdWxlX3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2hhc2hfc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYXliZV9ib3VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS91bmlvbl9maW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZG91Ymx5X2xpbmtlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oYXNoX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaGFzaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9oZXhkdW1wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaWRlbnRpZmlhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdHJpbmcubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NpZ24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ludDYzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc3RhYmxlX2ludDYzYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25ldmVyX3JldHVybnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0cmluZ19pZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3N0YWJsZV91bml0X3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9ibGFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVfdW5pdHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9maWxlbmFtZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2ZxdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvaG9zdF9hbmRfcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL21ha2Vfc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcGlkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL3NldF9vbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZS9jb21tYW5kX2ludGVybmFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmUvY29yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlL2NvbW1hbmRfc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZG9tX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2VmZmVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ob29rcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9qc19tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vcmF3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2F0dHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vZ2xvYmFsX2xpc3RlbmVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS90aHVuay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi92aXJ0dWFsX2RvbS9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL3Zkb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdmlydHVhbF9kb20vdmlydHVhbF9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5L3RocmVhZF9wb29sX2NwdV9hZmZpbml0eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3R5cGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdHVwbGVfcG9vbC90dXBsZV9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3RpbWluZ193aGVlbC90aW1pbmdfd2hlZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2NvbmZpZy9hc3luY19rZXJuZWxfY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL21vcHRpb24vbW9wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC9wYWlyaW5nX2hlYXAvcGFpcmluZ19oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3NleHBfaGlkZGVuX2luX3Rlc3Qvc2V4cF9oaWRkZW5faW5fdGVzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9jb3JlX2tlcm5lbC91b3B0L3VvcHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvdGhyZWFkX3NhZmVfcXVldWUvdGhyZWFkX3NhZmVfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2V4ZWN1dGlvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9leHRlcm5hbF9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9wb29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9qb2IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2pvYl9vcl9ldmVudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvam9iX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zeW5jaHJvbm91c190aW1lX3NvdXJjZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlcjEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2l2YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbmFkX3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvaXZhcl9maWxsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3RhaWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL21vbml0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYnZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3NjaGVkdWxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9zdGFja19vcl9jb3VudGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC90aHJvdHRsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2tlcm5lbC9lYWdlcl9kZWZlcnJlZC9lYWdlcl9kZWZlcnJlZDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19rZXJuZWwvZWFnZXJfZGVmZXJyZWQvZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL2VhZ2VyX2RlZmVycmVkL2VhZ2VyX2RlZmVycmVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2J1cy9idXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9rbm93bl9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9saXN0X3dpdGhfbWF4X2xlbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci9wcm90b2NvbF92ZXJzaW9uX2hlYWRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL25hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC93cml0ZXJfd2l0aF9sZW5ndGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9kZXNjcmlwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29yX25vdF9hdXRob3JpemVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9ycGNfc2hhcGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC90cmFuc3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbl90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL29uX2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL2ltcGxlbWVudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX21ldGFkYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdmVyc2lvbmVkX3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BpcGVfdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvYXN5bmNfcnBjX2tlcm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9zdHJpbmdleHQvc3RyaW5nZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2JpZ3N0cmluZ2FmL2JpZ3N0cmluZ2FmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2V4cG9ydGVkX3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL2lucHV0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FuZ3N0cm9tL3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hbmdzdHJvbS9idWZmZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYW5nc3Ryb20vYW5nc3Ryb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdXJpL3VyaS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91cmktc2V4cC91cmlfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9kZWJ1Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9hc3luY19qcy9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvcGVyc2lzdGVudF9jb25uZWN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2h0dHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYXN5bmNfanMvYXN5bmNfanMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL2JhbGFuY2VkX3JlZHVjZXIvYmFsYW5jZWRfcmVkdWNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uL2luY3JlbWVudGFsX3N0ZXBfZnVuY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19hcnJheS93ZWFrX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfcG9pbnRlci93ZWFrX3BvaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvY29yZV9rZXJuZWwvd2Vha19oYXNodGJsL3dlYWtfaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9iZWZvcmVfb3JfYWZ0ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2N1dG9mZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9kb3RfdXNlcl9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGVfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhYmlsaXphdGlvbl9udW0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb25fdXBkYXRlX2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmFpc2VkX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC90eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC92YXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvdW5vcmRlcmVkX2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWxhcm0ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RlcF9mdW5jdGlvbl9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2FycmF5X2ZvbGQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYXRfaW50ZXJ2YWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2JpbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL3Njb3BlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL2ZyZWV6ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9pZl90aGVuX2Vsc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvam9pbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9raW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JlbWVudGFsL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvcmVjb21wdXRlX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvYWRqdXN0X2hlaWdodHNfaGVhcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9hbGFybV92YWx1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW50ZXJuYWxfb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvb2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvZXhwZXJ0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyZW1lbnRhbC9yZWR1Y2VfYmFsYW5jZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvYWJzdHJhY3RfYWxnZWJyYS9hYnN0cmFjdF9hbGdlYnJhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfbWFwL2luY3JfbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9tYXAvaW5jcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9zZWxlY3QvaW5jcl9zZWxlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vamF2YXNjcmlwdF9wcm9maWxpbmcvamF2YXNjcmlwdF9wcm9maWxpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vdmRvbV9maWxlX2Rvd25sb2FkL3Zkb21fZmlsZV9kb3dubG9hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9pbmNyX2RvbS91aV9pbmNyL3VpX2luY3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vY29tcG9uZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2FwcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL2luY3JfZG9tL2pzX21pc2MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvaW5jcl9kb20vc3RhcnRfYXBwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3ZpcnR1YWxfZG9tL2lucHV0X3dpZGdldHMvdmRvbV9pbnB1dF93aWRnZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3B0bWFwL3B0bWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9jb2RlYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3lvanNvbi9sZXhlcl91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vYmFzaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIveW9qc29uL3Jhdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vc2FmZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi95b2pzb24vdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3lvanNvbl9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi9wcHhfeW9qc29uX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3BweF9kZXJpdmluZy9ydW50aW1lL3BweF9kZXJpdmluZ19ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvVW5pY29kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L1Bvc01hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkUG9zaXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9MaXN0VXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L01lYXN1cmVkTGF5b3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQ29zdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0RvYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dE9mRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvQm94LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9TeW50YXhUZXN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9FeGVyY2lzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xzY2hvb2wvR3JhZGVQcmVsdWRlLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfdXRpbHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9yZXByZXNlbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2JhY2tlbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjIuMC9saWIvb21kL29tZF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kX2xleGVyX2ZzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29tZC9vbWRfaHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMi4wL2xpYi9vbWQvb21kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4yLjAvbGliL29jYW1sL3N0ZF9leGl0Lm1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QSxDOztHOzs7UTtTOzs7RztJO0k7STtHO0U7Ozs7R0FXQyxDQUFDO01BRUU7T0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJBQyxzQkFBc0JDLFNBQVNGO09BQy9CRyxvQkFBb0JDO09BQ3BCQztNQUdKLEdBQUlGLFdBQVk7T0FDWkUsWUFBWUQsaUJBQWlCRTtP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O09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O09BNkpFMnRHO09BQ0FDO09BRUFDO09BU0FDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BT0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSUFDO09BR0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BV0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BRUNDO09BU0RDO09BSUFDO09BSUFDO09BU0FDO09BVUFDO09BSUFDO09BSUFDO09BVUFDO09BQ0FDO09BRUFDO09BT0FDO09BSUFDO09BSUFDO09BU0FDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDO09BTURDO09BQ0FDO09BRUNDO09BSURDO09BQ0FDO09BQ0NDO09BT0RDO09BQ0FDO09BRUNDO09BSUFDO09BS0FDO09BS0RDO09BQ0FDO09BQ0NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRDFzRztPQVlBd1k7T0FDQUU7T0FPQTlYO09BQ0FFO09BQ0E2ckc7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7SSxVO0ksVTtJLFU7SSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSSxNOzs7OztJO0ssSSxNOzs7Ozs7Ozs7Rzs7STs7OztJOzs7Szs7Ozs7Ozs7Ozs7O0ksaUIsc0I7SSxxQixzQjtJLHNCLHNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7eUIsTzs7eUIsTzs7eUIsTzs7Ozs7O0ssTzs7STtJO0ksTztHOztJO0s7SyxRO2dCOztJOzs7OzJCO21DOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTyw0QyxnQjtHOztJLFU7STtLO2U7OztpQjs7O21CO21CO0k7STtJLE87Rzs7SSxVOztLO0s7O08sVztNLEksSSwyQjs7Ozs7O1k7WTtXOzZCO1MsTztRO1MsTTtTOzs7O1k7O1k7O1k7O1EsTzs7O3NDLE87TTtNOzs7STtJO0c7O0k7Ozs7SztJLE87OztJLEksZ0I7OzsyQixPOzs7STtLLGlCO0s7Tzs7Ozs7SztLOzs7OztNOzs7Ozs7STtHOzs7SyxZOztLO0k7SSxVO0ksTyxXO0c7O0k7O0ssbUI7Szs0Qzs7SyxNO0k7SSxZO0ksSSxVOzs7OztLOztJO0c7O0ksWTs7Ozs7O3dDOztLO007UTtrQjs7O0ksZ0I7STs7Tzs7Ozs7SSxXOzs7SSxVO0ksTzs7MkI7O0c7O0ksVTtJLE87OzJCOztHOztJO2dCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssTztJLE87OztjLE07YTs7O0c7NkIsTyxtQzs7OytDLE87b0QsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07Ozs7SSxTO0k7O0ksTTtHOztJLE87OztjOzs7YTs7RztHO0k7O087O3lCLGtCLG9COztJO0ksTzs0Qyx3QjtHOztJLFM7SSw0QjtJLFc7Rzs7STs7aUI7Szs7O00sYTs7OztHOztJLFk7SSxrQyxNO0k7OztJO0k7OztPOzs7OztRLE87TyxXOzs7Ozs7cUI7Szs7Rzs7STtHOztJLFk7O0ksTzs7O0k7SyxNOzttQjtJOztLOzs7STtHOztJO0k7OztnQjtLLGdDLEk7SyxZOzs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7OztxQjtLOztHOztJO0k7Z0IsVzs7O00sTTtLOzs7TSxJO007Ozs7O0c7O0k7STs7OztPOzs7Ozs7OzttQjtLLE07O0c7O0k7STtlLFc7O2lCO0ssOEI7Ozs7Rzs7STtJO21CLFc7O00sTTtLLDRCLHFCOzs7OztHOztJO0ssTTtJO0ssYzs7OztJO3lCLE87d0IsTztLO007Ozs7TTs7Ozs7Rzs7STtJOzs7Z0I7SyxrQyxPO0ssVzs7OztHOztJO0k7OztNLEc7Tzs7Ozs7OztLO2E7Ozs7Rzs7SSxRLE87O0ksTztHO0c7STs7O0k7O0s7O0k7aUI7SyxHLHFDO0s7OztHOztJO0k7aUI7SyxLLDRCO0s7OztHOztJO0s7OztTOzs7WSxZOztZO1c7O0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7O00sVyxjO007Ozs7O0c7NEIsTyxzQzs7SSxLO0ssRyw0QjtLLE07OztJO2lCLE07Szs7O00sVztLLEcsZ0M7OztHOztJO0s7SztNO08sTztPLE07TSxlO007TztPLE87Ozs7STs7STtpQixNO0s7OztNLG9CO0ssRyxnQzs7O0c7OztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7O0ksVTtJOzs7TztPLE87TTs7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7Ozs7Rzs7STtLLEk7SyxPO0k7SyxRO0ssWSxPO0s7O0c7O0k7O0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOzs7O0ksYztJO2lDLE8sZ0M7aUMsNkI7NkIsTyx1QjtHO29CLHdDOztJO0c7O0ksb0I7Rzs7SSxZO0c7O0k7Ozs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLE87SyxTOztJLGM7SSxXO0ksTztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STsrQjtHOztJOytCO0c7O0k7O0c7O0k7K0I7Rzs7SSxHLGtCO0ksSTtJO2dDOzs7Ozs7Yzs7Ozs7O087USxZOzs7Ozs7OztHOztJLGM7Ozs7O0s7O007Ozs7Szs7Ozs7TyxxQjs7Ozs7Ozs7TTs7O0k7Rzs7SSxRO0ksVztJLE87Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO3VCOztLOzs7OzRCOzs7Rzs7STtJO3lDOztNLE07SyxXO1EsMEM7OztHOztJO0k7SyxJOzs7O007TztTOzs7OztPLE87TSxPOztLO00sUztzQjtNOzs7O0c7O0k7STt1QztLLFc7Ozs7Ozs7TTs7Ozs7Tzs7UyxXO1EsVzs7Ozs7UTs7Ozs7TTtPO08sWTs7Ozs7Szs7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7SyxNO0s7Tzs7Ozs7SSxXO0c7O0k7Ozs7OztRLFc7O1EsVztnQixXOztJO0c7Ryx5Qjs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztLLGtCO0ssTzs7SSxvQjtJLE87Rzs7STs7TTtPLE87Yzs7Ozs7OztJLFc7SSxPO0c7RztJO0k7Ozs7Ozs7STs4QixxQjswQiw0Qjs7STs7Ozs7Ozs7dUIsTTs7STtHOztJOztJO0ksTztHOztJO0c7O0k7SyxZOzs7Szs7O1M7VTtXOztVOzs7O2lDLE87Ozs7O1M7VTtXOztVOzs7O2lDLE87Ozs7OztJO0k7STtHO0c7STtJOzs7O0c7STs7TyxJLEksTzs7Ozs7O087TztRO1M7UyxjOzs7Tzs7TztlOztHOztJOztLO0s7Ozs7Ozs7STtHOztJOzs7SyxPO0ssVztrQixxQztJO1M7STtJOzs7O007TTs7Ozs7STs7OztNO007Ozs7O0k7Ozs7TTtPLE87TyxPOzs7O1E7UyxPO2dCO1M7UztTO1M7Ozs7O1M7Uzs7Uzs7b0I7UyxPOzs7O1UsVzthO1csVztXLEc7WTthO2E7YTs7Ozs7c0I7Ozs7Ozs7UTtROzs7OztNOzs7OztJOzs7Rzs7STs7Ozs7STs7Tzs7MEIsTyxzQzs7SSxPOzs7ZTsyQjtlLHFCOzs7Ozs7Ozs7OztHOztJO0ksYztrQjtJLEk7STtLLE87STtJOztLLE87SSxPOzs7Ozs7Ozs7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TyxJOzs7Ozs7Ozs7Tzs7USxlOzs7Ozs7Ozs7TztPLEk7Ozs7O007Ozs7UTs7O1U7UTs7Ozs7Ozs7OztLLE87O0c7O0k7O0s7Tzs7O1U7VSxPLGdDO1M7OztLLFc7Ozs7OztPO1E7Ozs7Ozs7Ozs7STtJOzs7TztnQztxRDtPLE87Ozs7Ozs7O007O0ksTzs7O0k7SSxPO0c7O0ksWTtnQixPOztJO0ksTztHO0csSSxpQjs7STs7O0ssSSxrQjs7Ozs7O0ssWTs7Ozs7OEI7OztHOztJLGdCO0k7Z0I7O0ksTzs7O2MsZTtjOzs7O2UsTztlLE87YyxXO2E7OztHOztJLFk7STtHOztJOztPOztnQyxPLHFDOztJLE87RztHO0k7STtNOzt1QixpQjs7SSxNO0k7TTs7dUIsaUI7O0ksTTtJLFk7O0k7Ozs7Ozt5QjtxQztxQztxQztxQzs7OztxQzs7c0M7c0M7c0M7c0M7Ozs7O007O0s7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Ozs7O0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Rzs7STtJO0c7O0k7OztROztROztROztROztROztROztRO2dCOzs7Syx1QjtLLE87O0kseUI7SSxPO0c7RyxJOztJOzs7Ozs7STs7Tzs7SSxPO0c7O0k7SztNO1E7OztTO1U7VSxPO1MsTzs7O1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOzs7SyxNOztHOztJO0s7Ozs7TTtNO007TTtLLE87O0k7Ozs7OztLO0s7SSxPO0c7OztJLEc7SztJOzs7O0k7NkM7STs7SyxPO0s7eUI7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7O00sSTtLLGlCOzs7O0ssTzs7O0s7OztNLE07TSxVO0ssTzs7O0s7Ozs7O00sTTtLOzs7O0ssTzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssTzs7O2U7ZSxPO2M7OztJOztLLE87OztlO3VDOzs7ZSxPOzs7OzttQjs7Ozs7Ozs7OzswQjtlLE87Yzs7O0k7O0ssTzs7O2U7OzRCO2U7Yzs7O0k7Z0MsMkI7OztNOzs7USxXOzs7Ozs7TTtLO0ssTztJOztLLEksVSx3Qjs7OzRCOzs7STs7SyxVO0s7Yzs7O2lCO2lCLFc7Z0I7O0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SyxPOztzQyxPLDZCOzs7STs7SyxVO0ssTywwQztJOztLLE87OztlLE8sbUI7Yzs7O0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNO1MsTzs7bUMsTyx3Qjs7O1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7O21CO2tCOzs7UTs7UyxRO1M7OztZO1ksTztXOztTO1E7MkIsaUQ7O1MsUSxtQjtTO3FDLE8sMkI7UztROztTO1UsSSxVLDRCOzs7O1csUTtXO1c7VztROztTO1MsYztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLDBCO0ksTztHO3NCLFM7RztJOzs7Ozs7SSw4QjtJLE87RztHO0k7TSx1QjtJO007UTs7Ozs7Ozs7STtXO2M7O0ksTztHO3dCLFM7Ozs7NEIsTyx5QztzQixPLGtDOzBCLHNCO0c7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Qix5Qzs7UztROztTOzs7VSxNO1M7UTs7UztROztTO1E7O1MsVTtTO1E7UTs7OztTO1UsTTtVO1k7YzsrQzs7VTtZOzs7ZTtnQjswQjs7Ozs7O2dCLEksWTs7O2lCLE07O2dCOztlLGE7OztpQixNOzs7OztnQjs7bUI7Z0IsSSxZOzs7aUIsTTs7O2dCOzttQjs7Ozs7Z0IsSSxjOzs7aUIsTTs7O2dCOztlLE07Yzs7Ozs7UTs7UyxJOzs7OztVOztXLE07VyxNO1U7VSxPOztTO1E7O1MsSTs7Ozs7O1U7O1M7UTs7UztVLGM7VTs7Ozs7OzBDO1U7VyxjO1c7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7OzRCLDBCOztJO0ssTzs7O2U7O3lCOzs7Ozs7Yzs7SSxNO0c7O3lCLE8seUI7SSxjO0k7SyxNOztJO0c7O0k7STtLLE07O0k7Rzs7STs7Tzs7O1U7O1csZ0I7OztVO1M7OztJO0c7O0k7SyxNOztJOzs7Tzs7O007O0ksTzs7O2M7O2dDLGlDOzs7O2E7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7SSxzQjtJLGU7SSxxQjtvQixZO3FCLFk7c0IsWTs7SSxPO2tCOztHOztJLFc7O0ssTzttQjs7STtJLE87Rzs7STtLO007TSxNOzs7Ozs7OztJLGlCO0c7RztJLGU7SSxjOztJLE07RztHO0k7Ozs7OztJLG1CO0ssTTtJO0k7STtJOzs7OztHOztJO0c7O0ksVTtJLE87Rzs7SSxVO0ksVztHOztJLE87OztjO2UsSztlLFc7O3lCOzt3Qjs7eUI7O3dCOzthOztHOztJOzs7SztzQzs7O0s7c0M7STtJOzs7Rzs7SSxtQjtLLE07STtLO087O3FCLDRCOztLO087O3FCLDRCOztpQjs7O2lCOzs7Ozs7YztjOztHOztJLG1CO0ssTTs7SyxlO00sTztLLGM7O2U7O0k7STs7O08sUztPO08sWTtPO007Ozs7O0c7aUMsZ0M7O0ksbUI7SyxNO0k7Ozs7Z0I7Ozs7Z0I7O0c7O0ksTztHO0c7SSxTO0k7TTs7O1M7Ozs7bUI7K0IsbUI7O1E7Ozs7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJO0ssYztLOzs7OztNLFc7OztHOztJLG1CO0ssTTtJOzs7Ozs7O00sSSw4Qjs7Szs7Ozs7TSxPOzs7Rzs7SSxtQjtLLE07STs7Ozs7OztZOzs7TTtPOztRLFU7Ozs7Ozs7O2tCOzs7Szs7Ozs7SyxlO0s7YTs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7SSxzQjtJLFU7SSxPO0c7O0k7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJOzs7Ozs7Ozs7O0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtVO0k7VTtJO1U7STtJO0k7STtJO0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7TTtROzt3Qjs7TTs7Ozs7OztHO0c7STtJO0k7STs7O1E7OztPOztROztXOztXO21COztPOzs7STtJOzs7UTs7O087dUIsMEM7OztJO3lCLE8sc0M7O0k7O087O087O087O087ZTs7Rzs7STs7Ozs7Ozs7Ozs7O0c7O0k7O087O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7TztTOzs7WTs7YTthO1k7OztLLE0sVztJLE8sVztHOztJO0ksTztHOztJLFksTztJO0ksTztHOztJO0ssTTtLLFU7STtLOzs7UztVO1UsUTs7OztvQjs7UztRO00sSztLO007O087TyxROzs7OztXOzs7Ozs7O0c7Rzs7STt5Qzs7Z0I7SSxxQjtJO0c7Rzs7STtHOztJO0s7Tzs7dUI7O0s7OztHO0csSSxtQjs7STs7O0c7O0ksTzs7O2M7YztlO3VCO2U7ZTtlLFU7ZTs7Ozs7OzZCOztnQjs7O2E7O0c7O0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0s7SztJLFc7RztHOzBCLFEsNEI7O0k7Ozs7O0c7NEIsTyxvQztHO0k7STs7Ozs7O0k7OztHOztJOztLO0s7Ozs7SyxJLFU7Ozs7TTtPLGE7Ozs7OztLOzs7O0s7TSxlO007Ozs7SSxPOzs7O2U7ZTtnQjtnQjs7ZSxPOzs7OztjOzs7OztJOytDLE8saUI7Rzs7STtLLE87STs7SztLLE87STs7SyxPO0k7STtHO2tDLHVDO0c7STtLO0ssWTtLLFE7SyxlOztLLGtCO0ksTztHO0c7STs7OztJLEksK0I7O2dDO0ssb0I7SyxXOztHOzs7SztNOzs7d0I7TTtLLE87STs7Szs7TTtROzs7OztPLHFCO087Ozs7OztLO0k7STtHOztJO0s7Tzs7MkIseUI7OztLO087OztVOztTOzs7OztLLEksZ0I7Szs7O1EsbUI7OztPOzs7O1E7O0k7SSxPOzs7Yzs7Ozs7O2U7Ozs7O2UsUTs7O2U7O2M7YTs7Rzs7SSxjOzs7Ozs7STtLO0s7OztLOzs7Syx3QixrQixzQjtLO2E7OztnQjs7OztnRDs7OzhDO2dCO2dCOzt1QztlOzs7STtJOzs7OzswQzs7O0ksVztJOztLOzs7UTtRLE87OztpQiw2QjtPOztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7O0s7OztROztTO1E7UyxnQztRO087O0ssTzs7STs7Szs7OztNO1E7VTs7O2E7WTs7TSxROzs7SyxHLHdDLFM7TSxVO007O0ssVTtLLE87NkM7O0ksTzs0QztHO0c7STtNO3VDO0ksTTtJO007Ozs7Ozs7O0k7TTt1Qzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxJLEksTTs7Ozs7O0ksd0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0s7SztLOztJLFU7O0ssTTtJO0c7aUMsa0IsUzs7STtLO087c0MsNEI7SyxTO0ssSTs7O0s7Ozs7SztNLFE7OztLOzttQixPLHlDOztLO0s7O3VCLE8sbUM7SyxPOztJO0c7O0k7SztPO3NDLDRCO0s7Tzs7cUIsTyw4Qjs7STtHOztJLFk7O0ksTztHOzs7Ozs7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssTTtLLGlDO0ssTTtLLE07OztLOzs7OzhCOzs7Ozs7Ozs7UTs7OztJOzs7Uzs7Ozs7Ozs7Ozs7OztJO0ssUTtLO00sWTtNLGE7TztNO08sVTtPOzs7Z0IsMkI7O0k7OztJO0kscUI7SSxvQjs7SztLLGU7OztLLE07STtJO2E7O0c7O0ksTzs7Ozs7Yzs7Ozs7O21CO3FCOzs7d0IsSzt5Qjt3Qjt5Qjt5QjsyQjs7Ozs7eUIsTTt5QixVO3dCO3lCLFU7eUI7Ozs7K0M7Ozt1Qjs7O2U7Z0I7OztvQjtzQjs7O3lCOzt3QzswQjs7NkI7Ozs7OzBCLE87OytDLHlCOzs7eUI7d0I7O2dCLGtDO2dCLE07O2tCOzs7O2U7Z0I7Z0IsTTtnQixNO2dCLGlDO2dCLE07Ozs7Ozs7Ozs7Ozs7bUIsTTs7Ozs7a0I7Ozs7Ozs7Ozs7O2M7YTtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztnQyxvQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSTtHOzs7TTtNLE87OztnQixPO2U7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLE8sb0M7O0k7O0ssTTs7O08sdUIsNkM7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7STs7O1E7UTs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7cUI7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFM7OztPLE07O00sUztNO00sa0IsTzs7TTs7STtJO0c7O0ksSSx5QjtJO0c7O0k7SyxRO0ssUzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLO00sZ0MsSztNOzs7O007TSxPOzs4Qjs7O0s7Ozs7TSxPOzs7O087Tzs7Ozs7O0k7O0s7TSxNOztLO0s7TTtNOzJDO2Msb0M7TztRO2dDOzs7O0s7O007TTs7USxPO08sWTs7Ozs7Ozs7UztVO1UsbUI7Ozs7Ozs7VSxJO1U7VyxPOzs7VTs7Ozs7O1ksSTtZO2EsTzs7O1k7OztZLEk7WTthLE87OztZOzs7Tzs7Szs4Qjs7TSxvQztNLFc7OztRLEk7OztTO3lCOzttQjtzQjtVO1c7OztzQjs7Ozs7O1E7OztTO1E7UyxPOztROzs7O087UTtRLGU7TztRLE87O087O007SztLO0s7SztNOztTLE87O1MsTztpQixPOzs7SztNLHNCLFc7TTs7Szs7OztPOztNOztLO007UTs7O007SywwQjtLOztNO0s7TTs7Uzs7O1ksVztZLE87Vzs7O00sMEI7SztLO007UTs7OEIsc0IsVzs7TTtROzs7Ozs7VyxPOzs7cUI7OztnQzs7Z0M7Ozs7OztzQixPOzs7cUI7c0IsWTs7cUIsTzs7O1U7O0s7STtJOzs7O0s7Ozs7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0c7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7USxPOztROztROztROztROztROztROztROztRO2dCOzs7Ozt3QjtPLFc7TyxPOzs7O1EsTTs7UTtTLE87UyxPO1EsTzs7Tzs7USxPO08sTzs7OztRLE07Ozs7USxPOzs7Ozs7O08sVztPLE87Ozs7aUI7OztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OzJCOztPOztRLE87TyxPOzs7TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPLG9CLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VTs7YTtVLE87OztPOzs7O1E7USxPO1EsTztPOztVLE87O1UsTzs7O1UsTzs7Ozs7O1E7O1MsTztTLE87USxPOzs7USxNO087USxPO1EsTztRLE87USxPO08sTzs7OztROzs7O1M7Vzs7UyxPO1MsTztTLE87USxPOzs7O1EsTTtPOztRO1U7USxPO1EsTztPLE87O087O1EsTztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87OztPLE87O087O1EsTztRLGE7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7OztPLGtCO08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxTO087USxNOzs7UTtTLFM7UyxPO1MsTzs0Qjs7UTtTLE87UyxPOzRCO08sTzs7Ozs7Ozs7TyxPOztPLHFCLE87TyxPOzt5QixPOztPOztRLE87TyxPOzs7TyxPOztPLHFCLE87TyxPOztPLHFCLE87TyxPOzs7OztVLFc7VSxPOztVO2tCO1UsTzs7VSxXO1UsTzs7O08sa0IsTztPLE87O0c7RztJOzs7OztJLG1CO0k7STtLO0s7SztLO087O3lCLG1EOzs7O0s7Ozs7a0M7Ozs7Z0I7O0k7Rzs7STs7Ozs7O2dCOzs7a0I7Ozs7Ozs7O1E7OztJO0ksYzs7Ozs7Ozs7Ozs7OztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCLHlCOztJOzs7SSxNO0c7O0k7OztPOzs7OztPO1E7O1MsTztnQjs7O08sTzs7Ozs7OztpQixPOzs7Ozs7Ozs7Z0I7O007O0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxVO1MsTzs7O21CO29COzJCO3FCO29COzs7OzBDOzs7a0I7OztROztTLE87OzttQjtvQjsyQjtxQixNO29COzs7OztxQixPOzs7a0I7OztROztTO1M7OztZO2EsVTs7O1c7O1MsTzs7O21CO29CLEs7b0I7O2tCOztROzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7VTtZLDJDO1U7VTtVOzs7O1csbUI7cUI7Vzs7Ozs7Uzs7VTtZOzs7O2U7ZSxPOzs7eUIsSSxJLE07Ozs7O2tDOzt5Qjt3Qjs7O2M7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7O2tCLFE7O1M7OztVLGE7Uzs7O1ksTzs7O3NCOztzQjtxQjs7Vzs7UztVLFc7VSxhO1U7O1U7b0I7VTs7VTtVO1UsTztTO1M7Ozs7Vzs7WTs7O1c7Ozs7O1M7O1UsOEI7VSxrQjtTOzs7WTs7Ozs7WTthO2E7WTthOzs7Z0I7Z0IsTztlOzs7WTtXOztTOztZO1MsTzs7O21CO29CLE07Ozs7b0I7OztvQjs7NkI7OztnQzsrQjs7OzttQjtvQjs7b0I7b0I7c0I7OzttQjtrQjs7UTs7UztTLE87a0Q7UTs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7OztLLE07Ozs7USxrRDtRLE87Tzs7d0IsUzt3QixTOztvQixjOzBCLE8sNEM7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixTOzBCLFM7c0IsYzs7SSxPO0c7Ozs7Ozs7O3NCOzJCOzJCOzs7Ozs7Ozs7OzsyQjsyQjsyQjs7MkI7MkI7MkI7c0I7O3NCO3NCO3NCOzs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksOEI7OztPOztRO1U7Ozs7YSxRO2EsTztZO1EsTTtPLE87OztPLE87OzJCLE87O0c7RztJOzs7O0k7Ozs7SyxNOzRCOzs7OztROzs7O0k7SywwQiwwQjtLLE87O0c7O0k7STsyQjtLLFE7VztLOzs7Rzs7STt5QixPLDhCO0c7O0ksVTtJO0k7Rzs7SSxPLHVCO0c7NkIsd0I7OztJO2M7Yzs7OztJO2M7Yzs7O0ksSSw2QixROztLLE07K0I7O0k7Rzs7O0k7YztjOzs7STs7O0c7O0ksWTtnQixNOztJO0c7O0k7STtHOzs7STs7Ozs7Ozs7O0s7O0k7Rzs7O0s7O0k7STtHOzs7OzswQiw0Qjt5QixPLHVDOzs7Ozs7OztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O2M7YzthOztHOztJO0k7SyxVO0ssVTtLLFU7SyxVO0ssVzs7Ozs7Ozs7Ozs7Ozs7TTtNO087TyxVOzs7Ozs7Ozs7OztPLE07OEI7O00sSTs7Ozs7OzswQztTOzs7Ozs7O007TztPO087TztPO3lCO087OztVO1c7Vzs7OztXO1k7WTtZO1k7OztVO1M7TyxnQjtPOzs7WSxZOztZO1c7OztPOzs7Ozs7UTs7UTtROzs7Vzs7WTs7WSxTO1k7VztVO29COzs7TTtPOztVO1c7VztzQjs7VTs7Tzs7VTtXO1c7VSxPOztNOzs7O087TztRO1EsNEI7TztPO1E7USxVO087USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0I7aUI7O3dCOztZO29COztzQjtpQztXOzs4QjtPOzs7VyxPOzs7cUI7cUI7b0I7OztPOzs7OztNO007TztPLEk7Ozs7Ozs7Ozs7TyxVOzs7Ozs7Ozs7O1E7UztTO1M7UztTO1M7UztRLEc7OztTO1U7Z0M7VTtTOzs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7OzthOztjO2M7OztjO2M7O2M7Ozs7O2M7Ozs7O2E7Ozs7Ozs7O1k7VSxXO1M7OztVO1c7Ozs7O2M7Yzs7Ozs7Ozs7YTt3Qjs7UTs7OztVLE07Uzs7VTs7VztXO1c7OztjOztlOztlOztlO2M7YTs7cUI7Ozs7OztRO1M7O1k7d0I7WTs7OzthO2U7OztZLFc7O1M7O1k7WSxPOztROztPLE07MkM7O00sTTsyQzs7O0ksTTtHOztJO0s7TSxLO007UTs7MEIsTywyQjswQixhOzs7OzRCOzs7Szs7STtHOzs7SSxPOzs7O0ksTzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7O0k7OzsyQjs7eUIsTTs7O08sSSxROzs7O1EsTTs7O087O0c7O0k7dUI7O0k7Rzs7STs7O3lCOzt5QixNO2lDOztHO3NCLG1COzZCLG1COzZCLG1CO3VCLGM7O0k7OzsyQjs7eUIsTTs7O08sSSxVOzs7O1EsTTs7Ozs7O0c7O0k7STtpQjs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7Ozs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOztTLE87OzsrQix5QjtROztTLE87OzsrQix5QjtROztTO1E7O1M7UTs7UztROzBCLHVCOztTO1M7UztTO1E7O1M7Ozs7bUI7bUI7a0I7UTs7UztVO1U7O1U7Ozs7VyxzQjs7OzthOzs7Ozs7Ozs7YTtjOzs7OztlOzs7Ozs7O2E7Ozs7O1c7Ozs7Ozs7VSxNOzs7O3FDO1U7O1csTTs7VTs7Ozs7OztVOzs7O1E7OztVOzs7b0I7Ozs4QjsrQjsrQixNOytCOzhCOzs7Ozt1Qzs7NkI7bUI7Uzs7VTs7O29COzs7OEI7K0I7K0IsTTsrQjs4Qjs7Ozs7dUM7OzZCO21CO1M7OztXLE87Ozs7cUI7OzsrQjsrQjt1Qzs7OEI7b0I7VTtVO1csa0QsYztXO1c7MEQsYztXO1c7YTs7OztnQixPOzs7OzBCLE87Ozs7b0MsWTs7O3FDOzs7b0M7bUM7eUI7ZTtXO1c7VTtXOzthOzs7Ozs7O2M7Z0I7OzthOzs7Ozs7VztVO1U7bUI7O29COzs7OztxQixRO29CO21CO1M7O1Usd0I7Ozs7O3NCO1U7Uzs7VTs7O1c7YTs7VzthOzs7OztXOztjOzs7Ozs7VTs7VTtXO1k7WTtZOztZOzs7O2Esa0I7Ozs7O2U7OztrQjs7Ozs7O2lCO2U7Ozs7O2E7Ozs7OztnRTs7Vzs7O2UsTzs7Ozt5QixPOzs7O21DO29DOzs7a0M7d0I7YztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7O2tCLFU7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7Ozs7a0I7aUI7OztrQjtrQjtpQjs7Ozs7O2tCO21CLFE7OzttQjtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87OytCLDRCOztHOztJOzs7Ozs7O0k7SyxVO0s7SyxPOzs0QixPLHNDOzs7STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07Ozs7MEI7OzswQzs7OztzQjs7dUIsTTt1Qjs7OzswQjs7OzBDOzs7Ozs7c0I7Ozt1QixLO3VCLEs7dUI7eUI7Ozt1Qjs7OzBCOzs7MEM7Ozs7bUIsVzs7OztxQjs7Ozs7Ozs7O21COzs7OztzQixvQjs7O3NCOztzQjs7Ozt1QixLO3VCLEs7dUI7dUIsUTs7Ozs7O3lCOzs7Ozs7OzswQixVOzBCLFU7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7O2tCO2tCLE87aUI7Ozs7OztFOzs7Ozs7O0c7Ozs7SSx3Qjs7Z0MsTyxzQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLCtCOztJOzs7Rzs7STtLOzs7Vzs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxZO2dCLE87STs7SyxVOztrQjtjO0c7O0k7SztNLE87TSxjO0s7STtJLFk7Z0I7STs7SyxVO2tCO0ksYztnQjtJLE07Rzs7SSxHO0s7TSxPO1k7OztJO0k7SztLO007TyxPO08sTTtNLGU7TTtPO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7Szs7Ozs7SztJO0ssaUM7STs7SyxhO0ssTztJO0k7Ozs7Ozs7Ozs7STtLO0s7O0k7STtLO0s7O0s7Szs7O0s7Szs7Ozs7STtLO0s7Szs7SSxPO0c7O0ksTzs7OztlLE87Yzs7OztHOztJLE87OztjOzs7ZSxPO2UsYztjO2E7O0c7O0k7Szs7a0IsTTtLLEk7Ozs7aUI7Tzs7Ozs7SyxXOzBCLE07SztLO0s7SztLLHVDOzs7O2tCOztPO1M7O3lCLG1DOztROztPO1M7O3lCLG1DOztRO08sUTtPOztPOzs7OztLO0s7SyxXO0s7Ozs7NEI7OztHOztJO0k7SztLO0s7SyxJOztLO00sVztNOzs7OztJO0k7O00sWTs7O087b0I7O087OztNOzs7O0c7OztJLE87K0MscUI7OztJOzs7Szs7SztNO007OztJO0c7O0k7Ozs7Ozs7Ozs7OztLOzs7OztpQjtLO0ssVztLO007TTtROzs7Vzs7WTtXO1U7O007UTs7O1c7Ozs7Ozs7VyxPOzs7VTs7TSxPO007UTtVOzs7YTthLG1CLDJCO2E7YSxPO1k7O007UTs7O1c7Ozs7O1c7O2E7O1k7OztZLE07OzZCOztXO1U7Ozs7O007SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7Ozs7Ozs7Ozs7OztRO1M7UyxxQix1Qjs7O1ksVztpQztZLFE7WTtZO1c7Ozs7OzsyQyxxQjtPO1E7Uzs0Qiw0Qjs7O1ksc0I7WSxRO1k7WTtXOzs7Ozs7OztLO007UTtVOzs7YTs7O3FDO2M7Z0I7OzttQjs7Ozs7OzttQjtxQixnQztvQjttQjtxQixnQztvQjttQjtrQjs7Ozs7O2E7WTs7TTtROzs7Vzs7Ozs7VyxXOzt3QjtXOztZO1c7VTs7Ozs7Ozs7Ozs7VTs7O2E7YTtZOzs7Ozs7Szs7UTtVOzs7YTs7Ozs7YTs7cUI7O1k7O0s7Ozs7Ozs7O1E7UTs7USx5RDs7Ozs7Ozs7O2E7OztnQjtnQixPO2U7O1c7VTtXOztXLFM7WTs7WTs7Ozs7YTs7O2dCO2dCLE87ZTs7VztVOzs7OztROzs7OztNOztTOzs7WTs7OzthO2U7OztrQjtpQjs7WTtXOztNLFc7OztLLE87STtJLE87O0c7RztJLE87Rzs7STtJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7Ozs7O0k7STs7Ozs7Ozs7O0k7OztLLE87O0ssTzs7O0ssTzs7SyxPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHO0c7STtLLE87Ozt5QixPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ryw2QztHO0csNEMsd0I7RztJLE87OztjLFc7YyxPO2E7O0c7RztJOzs7SyxPO0ssTztJLE87O0c7STs7RztHLDhDLHdCO0c7STs7Ozs7Ozs7Ozs7OztLO0s7TTtROzswQixvQixXOztNO007UTtLO0ssTztJO0ksOEMsUztJO0s7O2U7O0k7STs7Ozs7Ozs7O0c7O0ksZ0M7Ozs7Szs7STtHOztJOzs7RztHOztJLGM7SSxPO0c7bUMsa0M7OztJLE87OzRCOzs7O0k7Ozs7YyxPO2E7Ozs7SSx1QyxPLHVCOzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLHFCLE8sd0M7STtJO0ssTztLO0s7Tzs7O1U7VTtTOztJO0c7OEIsb0M7RztHO0k7O0c7O0ksTztHO0c7O0k7Z0I7O0k7Rzs7STtHOzhCLG9DO0c7RztJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO2dCOztJO0c7O0k7Rzs7O0k7OztJO0c7O0k7SyxNOzs7SyxNOzs7SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7O0s7OztROzs7STtHOztJO0ssTTs7SyxNOztLLE07SztPOzs7Ozs7Ozs7OztLOzs7UTs7O0k7RztHO3FDLGtDOzs7Ozs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7Ozs7O2UsTTs7bUM7O0s7O0c7RztHOztNLHVCOztNO0s7OztJLE87OztjLE07O2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OzJCLFk7dUIsWTtzQixZO3dCLE8saUM7Ozs7Ozs7Ozs7Ozs7O0ksZTs7O0ssSSxjOzs7Ozs7O2U7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOztvQjtLLFEsTzs7Ozs7STtHOztJO2M7SSxJLHFCLE07SSxPO0c7O0k7O0s7SztJLGtCO0k7OzZCLFk7d0IsWTt5QixZO3dCLE8sc0M7O0k7STtHOztJLGdCLE07STtHOztJLGdCLG1CLE07STtHO21CLCtCO21CLCtCO21CLCtCO21CLGtDO21CLCtCO29CLGdDO3FCLGlDOzZCLHlDOzZCLHdDOztJO0ssUzs7SyxNO0k7Rzs7SSx5QjtJLE87Rzs7SSxhO0ksTztHO3NCLE8sZ0Q7O0k7SyxXO0ssYTtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7OzswQjs7USxvQzs7OztnQixPOztHOztJOzt5Qjs7MkI7ZSxPOztHOztJO0s7TSxNO007TSxVO0s7Ozs7O007Yzs7Ozs7Ozs7Rzs7SSxROztJO1k7OEMsaUI7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0k7Ozs7O0ksVTtJLFU7SSxVO0ksTzs7O2M7O2lCLE87O2lCOztxQzs7YTs7RztpQywrQixVO3lCLGlEOytCLGE7OEIsYTtHOztJOztLO0s7SztJO0c7O0k7Ozs7Ozs7OztJOzs7Ozs7TztRO2tCOzs7Ozs7STtHOztJOzs7TTtNLE87OztJO0c7Rzs7STs7SztLO0s7STtHOztJO0s7Tzs7eUIsZ0M7O0ssTTtJLE87Rzs7STtJO2lCOzswRDs7OztHOztJOztpQixPOzs7Ozs7Ozs7TTs7Ozs7Rzs7SSxPOzswQiwrQzs7RztHLGdCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLLFU7SztLOzs7OzJCOzs7RztHLGlCOztJO2lCO0c7O0k7SyxVO0s7SztLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7RyxxQjs7STtpQjtHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHNCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7Ryx1Qjs7STs7Yzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSx3QjtJLHdCO0c7O0k7SyxLO0ssSztJOzthO2E7O0c7O0ksYztJLHNCO0c7O0ksYztJLHNCO0c7O0ksZ0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksVTtJLDJCO0c7O0ksZ0I7Rzs7SSxxQjtHOztJLFk7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSwwQjtHOztJLDJCO0c7O0ksNEM7STs7OztJOzthO2E7Ozs7STtJO0c7O0k7O2E7YTs7Rzs7O0k7STtJOzs7STtJO0k7RztrQyx3QjsrQix3QjtvQywwQjs7SSwyQjtHOzRCLHFCO2lDLDBCOztJLDJCO0c7OEM7Rzs2QztHO3NDLCtCO3VDLGdDOztJO0k7STtJO0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Rzs7OztJO0k7cUMsa0IsUzs7SSxNO0c7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOztJLE87RzsrQixzQjs7SSxVO0k7Rzs7STs7SyxNO0s7STs7O0k7O0ssTTtLO0k7OztJOztLLE07SztJOzsrQixzQjtzQixjOzs7STs7OztJOztHOzs7STs7O0ksVztJO0c7bUMsMkI7aUMsZ0M7dUMsc0M7aUMsZ0M7cUMsbUM7cUMsbUM7c0MsbUM7b0MsbUM7O0k7RzttQyxtQzs7STtHO3FDLGlDOztJO0c7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7STs7Tyx3QyxZOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7OztTOzt1QiwrQzs7Ozs7Ozs7Ozs7OztjOzs7aUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7OztJOzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQztxQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO2lDLGdDO3NDLGdDO3VDLHNDOzRDO0c7b0MsbUM7b0MsbUM7bUMsZ0M7MEMsbUM7d0MsbUM7dUMsb0M7b0Msb0M7O0k7RzttQyxpQzs0QztHO3VDLG9DO3NDLG9DOztJO0c7MkM7Rzs7STtHO21DLG9DO2lDLGlDO3lDLG9DO29DLGlDOztJO0c7MkM7RztrQyxpQztrQyxpQztxQyxvQztvQyxpQztzQyxvQztnQyxpQztxQyxvQzs7STtHO3VDLGlDOzJDLDJCO29DLDRCOzBDLDhCOzs7STs7O0ksVztJO0c7bUMsZ0M7bUMsZ0M7cUMsZ0M7c0MsbUM7cUMsbUM7b0MsZ0M7dUMsZ0M7Rzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzt1QyxpQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7OztJOzswQix5QjtxQyxtQzsrQix5QjttQyx5QjtnQyx5QjsyQix5Qjs4Qix5QjsrQix5Qjs0Qix5QjtrQyx5QjsyQiwwQjs0QiwwQjs0QiwwQjsrQiwwQjs7O0k7OzhCLDBCOztJOztPOztzQixPLDhDOztJLE87OztjLFc7YyxxQjthOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7K0IsNEI7OEIseUI7cUMsbUM7cUMseUI7Z0MseUI7NkIseUI7aUMseUI7OEIseUI7MkIseUI7NEIsMEI7aUMsMEI7OEIsMEI7OztJOztnQywwQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztJLFc7STtHO3VDLG1DO3VDLGdDOztJO0c7c0MsbUM7dUMsc0M7MkM7Rzt1QyxnQztxQyxtQztHOzs7Ozs7Ozs7Ozs7Ozs7STs7O0ksVztJO0c7dUMsbUM7dUMsZ0M7O0k7Rzt1QyxnQztxQyxtQztHOzs7Ozs7OztJLG1COzttQyxtQzs7STtHOztJO0c7O0k7Rzt1QyxtQztnQywrQjs7STs7Tzs7c0IsTyw4Qzs7SSxPOzs7YyxXO2MsdUI7YTs7Rzs7SSxXO0k7Rzs7Ozs7O0ksbUI7OztJO0c7O0k7Rzs7STtHOztJO0c7dUMsb0M7dUMsb0M7Z0MsZ0M7O0k7O087O3NCLE8sOEM7O0ksTzs7O2MsVztjLHVCO2E7O0c7d0IsZTsyQixpQjs7SSxXO0k7Rzs7Ozs7OztJLDRCOztHOztJOzs7OztLLE87SSxzQjs7Rzs7STs7Ozs7SyxPO0ksc0I7O0c7O0k7Ozs7O0ssTztJLHNCOztHOztJOzs7OztLLE87SSx1Qjs7Rzs7Ozs7OztJLGdDOztHOzs7Ozs7SSx1Qjs7Rzs7STs7Ozs7SyxNO0k7Ozs7WTs7O0c7O0k7Ozs7Ozs7SyxNO0k7Ozs7OztZOztHLEk7O0k7Ozs7Ozs7OztLLE07STs7Ozs7OztZOzs7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7OztJLGdDOztHLEk7Ozs7Ozs7O0k7Ozs7OztZOzs7Ozs7O0ksNkI7OztJOzs7OztLLE07SSw0Qjs7O0k7Ozs7Ozs7SyxNO0k7Ozs7WTs7O0k7Ozs7O0ssTTtJLGdDOztHO2dDLHlCO0c7Z0MseUI7Rzs7O0k7OztJO0c7K0IsOEI7Rzs7O0k7OztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21DLG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7aUQsTztpRCxPOzs7STtJLE87OztJLFk7O0ksTzs7OztJLE87Ozs7STtJOztLLHNCLE87SyxPOzs7SSxPOzs7O0k7STs7O0ssTzs7O0ksTzs7OztJO0k7Ozs7O1E7USxPOztRLG1CLE87USxPOzs7UTtRLFc7USxPOzs7USxPOztnQzs7OztRO1EsVztRLE87O3lCLE87OztRLE87O2dDOzs7MkIsTzs7O1E7UTtTLE87UyxzQjtRLE87O2dDOzs7O1E7USxPOzt5QixPOztJOzs7Ozs7Ozs7OztJO0ksVztJOztxQjs7STtLLEs7SyxLO0ssSztJOzs7O087TztPLE87OztJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJOztxQjs7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7O0s7dUM7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFU7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxVO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OzJCLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE07TyxPOzt5QixPOztPLGlCLE07TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE07TyxPOzswQixPOzswQixPOztPLG1CLE07TyxPOztPLG1CLE07TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGtDLE07TztPLE87OztPOzs7O1U7OztXLFM7VyxPOzs7VTs7Ozs7OztTOzs7O1MsUztTOzs7MEMsTzs7TztPO08sTzs7O087TyxVO08sTzsrQzs7O087TyxPOzs7TztPLE87O08sa0IsTTtPLE87OztPO08sZ0I7O3lCLGdCOztPOzs7USxNO1Esb0I7Tzs7dUI7O08sZ0I7OztPO087OztPO087TyxPOztPLG9CLE07TyxPOzs7TztPO08sZ0I7OztPO08sTzs7O087TyxPOzs7TztPO087TyxPOzs7TztPLE87OztPO08sUztPLE87OzBCLE87OzRCOzs7TztPLE87O087O1EsTTtRLG9CO08sTzs7OEI7Ozs7TztPO08sTzs7O087TyxPOzsyQixPOzsyQixPOzs7TztPLGdCOzswQixPOzsyQixPOzsyQixPOzs7TztPLE87Ozs7Ozs7TztPLFU7TztPLE87a0MsTzs7Ozs7Ozs7O0k7STtJO0ksTzs7OztJO0k7aUM7Ozt3Qjs7O087Tzs7Tzs7Tzs7TyxrQixNO08sTzs7O087aUI7O087d0M7TyxPOzswQixnQjs7Tzs7USxNO1Esb0I7TyxPOzs4Qjs7O08sb0IsTTtPLE87OztPO08sTzs7O087TyxPOzswQjs7MEIsTzs7MEI7OzBCLE87O3dCLE87OztPO08sTzs7Ozs7STtJOzs7O087TyxVO08sTzs7d0IsTzs7O08sUztPO08sTzs7O087TyxVO08sTzsrQzs7TyxtQyxNO087TyxPOzs7TztPLE87O3dCLE87OztPO08sTzs7OztJLHFDLE87O0ksTzs7OztJO0k7Ozt5QixPOzs7TztPOzs7TztPOzs7TztPLE87O3dCLE87O3dCLE87a0MsTzs7Ozs7STtJLFU7SSxPOzs7Ozs7Ozs7SyxNO0ksMEM7STtJO0k7SSxPOztHO0k7OztRO1E7O087O1EsVTtRLE87Tzs7O1E7UTtRLFM7USxPO087O1EsVTtRLE87Tzs7USxVO1EscUI7Tzs7USxVO1EscUI7Tzs7Ozs7OztRLFU7USxxQjtPOzs7UTs7Ozs7OztRO1E7O3dCOztRO1EsUztRO1EsTztPOzJCLDRDOzs7UTtRO1EsTztPOzs7UTs7OztRO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7OztRO1E7UTtRLE87TzsyQixTOztROzs7OztRO1E7UTtRLE87Tzs7UTs7Ozs7UTtRO1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7O1E7Ozs7O1E7USxTO1E7USxPO087O1E7Ozs7UTtRO1EsTztPOztROzs7O1E7UTtRLE87Tzs7O1E7OzZCLE87OytCLE87OytCLE87OztXO1csZ0I7O087O1EsVTtRLE87Tzs7O1EsVTtRLE87Tzs7O1E7O1EsUzs7Tzs7UTs7UyxPOzs7USxPO087Ozs7Ozs7OztROzs7Ozs7UTtRO1E7OztXOztZOzs0Qjs7WSxPOztXOzs7WSxNO1c7VyxPO1U7O1E7USxPO087O1E7Ozs7O1E7UTtRO1EsTztPOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7O0ksTztHOztJLFE7O0c7O0k7SyxPO0ssTztLLFM7SSxPOzs7YyxPO2E7O0c7RyxzQjtHOzs7TSxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEM7Ozs7UTtpQjs7Ozs7SSxXO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozt1Qjs7UTs7Ozs7STtHOztJO2dCOztJO0c7O0ksSTs7O0ssTzs7Ozs7O2dCLE07Ozs7Ozs7Tzs7O1E7VTs7Ozs7Yzs7dUIsTztzQjs7Ozs7Yzs7dUIsTztzQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MEIsTzt5Qjs7Ozs7O2E7O3NCLE87cUI7Ozs7TyxPOzs7Ozs7Ozs7SSxPO0c7O0ksdUI7STs7Ozs7Ozs7O00sVztNOzs7Ozs7STs7O0k7SztLO0k7Rzs7SSxPO0c7O0ksTzs7O2M7YzthOztHOztJLE87OztjO2M7YTs7Rzs7STtLO0s7OztTO1MsTztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7O0k7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7OztJO0c7O0ksZ0I7SSxVO0ksTztHOztJO0s7SSwwQztJO2dCOztJO0c7O0ksVTtJLE87OztjOztlOztnQzs7ZTtjO2MsTzthOzs7Rzs7STtJLE87OztjO2MsTzthOztHOztJLEksOEI7SSxPOzs7YyxjO3dCO2M7YyxPOzthOztHOztJO0k7bUI7O0s7TTs7OztHOztJO2dCO0k7O0s7SyxNO0ksTztHOztJO0s7SztJO0s7O007TSxNO0ssTzs7STtHOztJOzs7O007OztJO0c7OEIseUM7O0k7Ozs7TTs7O0k7RzsrQiwwQzs7SSxPO0c7Ozs7SztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLO0s7TTtLO007Szs7Ozs7Ozs7Ozs7OztVO1UsSSxVLDRCOzs7Ozs7Vzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7OztLLFU7Ozs7Ozs7Ozs7Ozs7UztTLE87Ozs7O0s7Szt3RTs7O0ksVztJO0s7TSxNO007SztLLFU7SztLOzs7O0s7SyxNOztHOztJLE87OztjO2E7O0c7O0ksTzs7O2MsTzs7O3dCOzs7eUI7eUI7O3VCOzthOztHOztJO0c7O0k7Rzs2QiwyQzsrQiw2QzsrQix5Qzs2Qix1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COzs7O0c7O0k7STtnQjs7SyxTLHVCOzs7Rzs7SSxTOztJO0c7O0ksaUI7Rzs7STs7Ozs7Ozs7Z0I7OztHOztJOzs7Ozs7OztnQjs7SSxPO0c7O0k7SyxhOztNLFk7bUI7bUI7TSxPO0s7SyxPLG9DO0c7O0k7O00sWTtNLE87SztLLE8sNEI7Rzs7STs2QixzQixhOzZCLHVCLGM7NkIscUIsWTs7Rzs7STsyQyxnQzs7RztHO0k7STtJO0k7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7O0ssTTs7Syx3QixPO0ssTzs7STs7O0ssTztLLE87SSxPO0c7O0k7O0ssTTs7STtHOztJO0k7OzthLFk7YTthO1k7Rzs7STtJOzs7YTtjLFM7OzthO2E7WTtHOztJOzs7Szs7O0k7SyxXO0s7Ozs7K0I7Ozs7O0ksTzs0Qyx3QjtHOztJO0ssSTtLLEk7Ozs7STtnQixPO0ssSSxpQixJLDhCOzs7Ozs7O007TTs7Ozs7O0ssMEI7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0ssSTs7STtnQixPO0ssSSxpQixJO0s7bUIsTTtNOzs7TztRLE07OztPOzs7dUIsTTtNO087UztXO08sTztNOzs7Ozs7TTs7Ozs7Rzs7STtJO0c7O0k7SyxJO0ssTztLLE87STtJLGE7STtHOztJOzs7Rzs7Ozs7Ozs7O0ksUyxPO0k7O0s7OztJLE87O29CLGMsNkI7O0ksVSxNO0ksa0I7OztLOztPLGM7Tzs7Ozs7Ozs7O0c7c0IsYyxtQjs7STtJOzs7RztzQixZO3NCLGtEOztJOztLO087OztVOztXOzs7Ozs7Ozs7Ozs7O1UsTztTOzs7STs7TSxNO0s7OztNLEk7TTtNOzs7O08sSSx3Qzs7OztTOzs7Vzs7Uzs7Ozs7Tzs7Ozs7SyxjOzs7SyxNO0k7Ozs7SyxNO0s7Szs7Ozs7TSxJLFk7Ozs7Ozs7O1M7Ozs7O1E7Ozs7O00sdUI7TTs7Ozs7SSxjO0c7O0k7OztrQjs7STtHOztJLGdDOzs7O1E7Ozs7OzJCOztROzs7Ozs2Qjs7UTs7OztRLHFCOzs7Ozs7SyxNO0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O0c7O0k7SyxNO0ksc0I7Ozs7O08sTTtNOzs7Ozs7SyxJO0s7Z0I7TTtNLEc7O087UTs7Ozs7Ozs7STtJLFc7STs7O087O007O0ksSSxlLHNCO0k7OztPOzs7UTs7Ozs7Ozs7O1k7Ozs7YyxNOzthO2EsSyxrQzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7OztROzs7TTs7STtHOzs7O0s7OztNOztLLE07O0ksTTs7O0k7OztLLFc7Ozs7STs7SztLO087Ozs7VTs7O1U7UztLOztLLE07STtLO0s7SztPOzs7O1U7Vzs7WTs7WTs7O2E7Ozs7WTs7Ozs7UztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7STs0Qjs0Qjs7O0csSSxtQjt1QixXO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1UsUTs7Uzs7VSxPOztTOztVO1c7O1ksTztZLE87VyxPOzs7Ozs7Ozs7O2tCO1U7Uzs7VSxRO1U7Ozs7VztXO1U7Uzs7VSxLLHlCO2tCOztVO1M7O1UsUTtVLEksWTs7OzhCOzs7VTtXLFU7VztVO1M7O1UsUTtVO1U7Uzs7VTs7O1U7VTtTOztVOztXO1k7YTs7OztjLE87YTs7WTtZOztVLE87Uzs7VTtVO1c7OztjOzs7Yzs7OztlLE87Ozs7Ozt5QixHLDhCO2tDOzs7OzBCOzt5QixNOzs7O3lCLFE7Ozs7Ozt5QiwyQjt5QixxQjsyQzt5Qjt5Qjs7O2MsTTs7VSxPO1M7O1U7VztZLFE7WTs7VyxnQztTOztVO1U7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7OztTOztVO1U7Ozs7ZTtnQixTO2dCLGU7Ozs7d0MsTzs7O2U7Ozs7VyxPOztTOztVOzs7Ozs7VyxNOzs7O1c7WTs7ZTtnQixTO2dCLGE7Ozs7dUMsTzs7O2U7Ozs7VyxPOztTOztVO1U7Ozs7MEM7O2U7Ozs7ZTs7VyxNOztTOztVO1c7VyxlOztTOztVOzs7cUM7bUI7bUI7O1M7NkIsNEI7O1UsbUI7Ozs7Uzs7VTs7VztZLE87bUI7OztVO1M7O1U7Uzs7O1U7OztVLE87Ozt1QyxTO2lDLFM7O1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7Ozs7Uzs7VTtzQjs7VTtTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTs7WTtZOzs7OzRCOztZO1k7Ozs7O1M7O1Usb0IsVztVLE87Uzs7Ozs7OztVO1csUTtXLFU7OztXO1c7VyxPOztVO1M7O1U7O1M7O1UsbUMsTztVO1U7VSxpQjs7OzJDLGtDO3lDLGlDOztVO1UsWTs7Vzs7WSxPO1ksTztXO1c7VyxXO1csTzs7VTs7Uzs7VTtVOztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtrQztrQzs7OztVO1csTTs7VTtvQjtvQjtTOztVO1UsRyxXO1c7VSxNO1M7O1UsRyxXO1c7VSxNO1M7O1U7VTtTOztVO1U7Uzs7VTs7OzhCOztXOzs7K0I7O1U7UztvRCx5Qjs7Ozs7Ozs7VTs7O1U7VztXO1c7VTtTOztVO1UsTztTOztVO1UsTztTOzhCLHVDOztVO1c7VztVLE87Uzs7VTtXLE07O1M7O1U7VTtTOztVLEksYztVO1M7O1U7Ozs7OztVO1M7O1U7VTt5QjtXLEksUzs7OztTOztVO1U7Ozs7b0IsTyxjO21COztTOztVO1U7Ozs7b0I7OzhCLGM7bUI7O1M7O1UsTztTO29DLHVCO2dDLHVCOztVO1c7O1k7O1csTzs7Ozs7O3FCO3FCO29COzs7OztVOztXOztXLFE7c0I7VTs7VztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLFM7OztVO1U7dUI7VyxJLFM7Ozs7Uzs7VTtVLE07UztzQyx5QixTO3FDLHlCLFM7O1U7VTtvQjtvQjtTO2lDLDJCOztVOztXOztZOzs7VyxlLE87O1csTzs7O3NCLE87VSxNO1M7O1Usa0I7VTtTOztVO1M7O1Usa0I7VTtVLE07Uzs7O1U7VTtTOztVO1U7Vzs7cUI7Ozs7OztvRSxTO3dELCtCO2dELFM7O29COztVOztTOzs7VTtvQjs7Uzs7VTtvQjtVOztXO1UsTztTOztVO29CO1U7O1c7VSxPO1M7O1U7b0I7VTs7Vzs7VztVLE87Uzs7VSxlO1M7O1UsZTtTOztVO29COztTO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7STtJLE87Rzs7STtJLE87Rzs0QixPLHNDOzRCLE8sdUM7NkIsZ0M7O0ksaUIsNkI7STtHOztJO0c7Z0MseUM7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7MEIsOEI7O0k7SSxPO0c7O0k7Rzs7SSwwQzs7O0ksTztHOztJOzs7Ozs7Ozs7O087Ozs7Ozs7Tzs7OztJOzRCOztHOztJOzs7Ozs7Ozs7Ozs7O0s7O0k7NEI7O0c7O0k7SSxPO0c7O0k7Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7SSwrQjs7STtHOztJO0c7O0ksWTs7STs7O0ksWTs7STs7O0ksTTtHOztJO0s7SztJLE07Rzs7STtJLE07Rzs7STtJLE07Rzs7STs7O3dCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7USxNOzs7O0k7Rzs7SSxxQjs7Ozs7Ozs7Ozs7O2dCOztnQjs7O007OztJO0c7RztJOzs7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7STs7Ozs7STs7Ozs7O0s7SyxROzs7SyxLO0k7Ozs7SSxXO0k7OztJLEk7STtHOztJO0ksVztHOztJO0k7Rzt5QixpQzs7STs7NEIsVyw4QjtJLE87Rzs7SSxtQyxjO0ksTztHOztJO0ksTztHOztJOztLO087O2dDLHNDOzs7STs7Ozs7O2U7Rzs7STtLOzs7SyxPO0s7SSxVOzs7Rzs7STtLOzs7SyxPO0s7SSxVOztJO0c7O0kscUM7Yzs7STs7O0kscUM7YztJOztLO0s7SSxPOzs7STs7Ozs7O0ssUztLO0k7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLLE87SyxPO0ksTzs0Qyx3QjtHOztJO0s7TSxhO00sYztNLE87TSxPO00sTztLLE87O0k7SyxPO0ssZ0I7SyxPO0ssTztJLE87Rzs7STtHOztJO0c7O0k7Rzs7STs7OztjLFc7YyxPOztxQyx3Qjs7YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7Ozs7SztxQztJOzs7Ozs7WTs7Ozs7STthO0k7Rzs7STtJO0c7OztJOztHOztJLHlCOztJOzs7SSxrQjtJOztLO087Yzs7Z0I7OztLOztNO007TTtxQjs7O0k7O087OztVOzs7VztVO1M7OztJO0c7O0k7SyxNO0k7O0ssbUI7SyxxQzt1Qjt1Qjt1Qjs7TSxNOztNLE07OztNLE07O0s7STtJOzs7MkI7Ozs7USwwQztRLGtCOzs7O0k7RztxQyw2Qjs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7OztTO1M7UTtPOztROztTOzs7OztTO1MsSTtRO087O1E7Ozs7Ozs7OztTLE87UyxPO1M7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtRO087O1E7O1M7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7O1MsTztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7OztTLE07UTtTLE87UztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsSztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTLE87Uzs7O2lCOzs7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7O1M7Uzs7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7Ozs7O1M7UyxPO1M7OztpQjs7O1E7OztROztTOzs7Ozs7O1M7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7UztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOztTLE87Uzs7O2lCOzs7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7OztTO1MsTztTOzs7aUI7OztROzs7UTs7Uzs7Ozs7OztTO1MsTztTO1E7OztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTLEs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLEs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UyxLO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7Ozs7Ozs7Ozs7O1M7UztTLE07UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1MsSztTO1MsSztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Uzs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7UztRO087O1E7O1M7Ozs7O1M7O1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7UztROzs7UTs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTLE07UztRO087O1E7Ozs7Ozs7OztTO1MsTTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7O1M7Uzs7Uyw0QjtROzs7O1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1MsUztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1MsTztTLFM7UztTO1M7UTs7O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTLE87UztTO1c7O1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsTztTO1M7Vzs7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTtRO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7Ozs7O1MsSztTO1M7Uzs7UTtTO1U7Ozs7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztRO087O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7OztTO1M7Vzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UyxLO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7O1M7UztXLHlDLGM7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztROzs7UTs7Ozs7OztTO1M7Uzs7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UyxPO1M7UztTO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLE87UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEs7UztTO1M7UTtPOztROztTOzs7OztTLEs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7O2E7O1M7UyxPO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1MsTztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7Uzs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7OztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO1MsTTtROztTO1c7O3lCLHdCOztROzs7UTs7Uzs7Ozs7UztTOzs7UztRO087O1E7O1M7Ozs7O1MsSTtRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7Ozs7OztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7UyxLO1M7UTs7O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7OztTLEs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTOzs7UyxPO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7Uzs7O1k7Ozs7Ozs7Ozs7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7UTtPOztROztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTOzs7UztTLE87UztTO1c7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7O1M7UyxtQjs7O2M7UyxXO1M7UztXOztROzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7O1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7UTs7O1E7O1M7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7O1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7O1E7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O1MsTztTO1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1MsUTtTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztROzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UTtPOztROztTOzs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Uzs7O1M7O1M7UztTO1E7Ozs7Ozs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UyxPO1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1MsTztTO1c7Ozs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTLE87UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UyxRO1MsTztTLE87UztXOzs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UyxPO1M7UyxPO1M7Vzs7Ozs7Ozs7UztROzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsUTtTO1M7UztTOzs7UyxPO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7OztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxRO1M7UztTO1M7OztTLE87UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UyxLO1E7UTtTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1MsTztTLE87UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7O1M7UyxJO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1MsSTtTO1E7OztROztTOzs7Ozs7O1M7UztTLEk7UztRO087O1E7O1M7Ozs7Ozs7O1E7UTtTO1MsSTtTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTOztTO1E7OztROzs7Ozs7Ozs7UyxJO1E7Tzs7UTs7Ozs7Ozs7Ozs7UyxJO1E7OztROzs7Ozs7Ozs7UztTO1MsTztTLEk7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsbUI7OztjO1MsTztTLFE7UztTO1c7Uzs7UztROzs7UTs7Ozs7Ozs7OztTO1M7UyxPO1M7O1M7UTtPOztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxtQjs7O2M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7Ozs7O1M7UztTLE87UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UyxPO1MsUTtTO1M7VztTO1E7OztROztTOzs7OztTO1M7UyxPO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7O1M7UztTOzs7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7Ozs7OztTO1M7Uzs7O1M7UztROzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTOztTO1M7O1E7USxNO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7Ozs7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7Ozs7O1M7Vzs7O2M7YzthOzs7UyxPO1M7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7OztTO1E7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1c7OztjO2M7YTs7O1MsTztTO1E7OztROztTOzs7Ozs7OztTO1M7UTs7O1E7O1M7Ozs7Ozs7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTLGU7UztTO1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7O1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7Ozs7Ozs7UTs7O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7OztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7O1k7OztROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7Tzs7UTs7Ozs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtRO087O1E7Ozs7Ozs7Ozs7UyxPO1MsTztTLE87UyxJO1E7OztROztTOzs7Ozs7OztTLE87UyxPO1MsTztTLEk7UTtPOztROzs7Ozs7Ozs7O1MsTztTLE87UyxPO1MsSTtROzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTO1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzs7O1M7UztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UyxLO1M7UztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztRO1E7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1MsSztTO1M7UztTO1E7UTtTO1M7UztROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7OztTO1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7OztTO1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1MsVztTO1M7UTtPOztROzs7Ozs7OztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1MsSztTO1M7UztROzs7UTs7Uzs7Ozs7UTtPOztROzs7Ozs7Ozs7UyxPO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87Uzs7WTs7Ozs7Ozs7O1E7OztROztTO1M7UTtPOztROztTOzs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1M7UTs7Ozs7O087O1E7Ozs7Ozs7OztTO1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7UztROzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7OztTOzs7Ozs7O1M7Vzs7Ozs7Ozs7OztTO1E7OztROztTOzs7Ozs7O1M7Ozs7Ozs7UztXOzs7Ozs7Ozs7O1M7UTs7O1E7O1M7UztRO087O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7UyxJO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7Ozs7Ozs7O1E7Ozs7Ozs7OztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTLE87UztTO1M7UztTO1M7UTs7Ozs7Ozs7UTs7Ozs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTO1MsSTtRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztRO087O1E7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7Uzs7OztTO1U7OztRLEksdUI7UTtPOztROztTOzs7Ozs7Ozs7UztTOzs7O1M7VTs7O1EsSSx1QjtRO087O1E7Ozs7Ozs7Ozs7OztTO1M7Ozs7UztVOzs7USxJLHVCO1E7OztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7UztRO087O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7OztTO1U7Ozs7UTtTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UztTO1M7Ozs7Ozs7O1M7VTs7OztRO1M7UztROzs7UTs7Ozs7Ozs7Ozs7Ozs7OztTO1M7Uzs7Ozs7Ozs7UztVOzs7O1E7UztTO1E7OztROztTOzs7OztRO087O1E7O1M7Ozs7Ozs7Ozs7UyxLO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTOzs7UztTLE87UyxXO1M7Vzs7Ozs7Ozs7OztTO2U7UTs7O1E7O1M7Ozs7O1MsUTtTO1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLHlCO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTOztTOzs7UztTO1M7UTtPOztROztTOzs7Ozs7O1M7O1M7OztRO1MsTTtRO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxRO1M7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsTztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7OztTO1MsUTtTO1MsTztTO1c7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7UztTLFE7UztTLE87UztXOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7Uzs7UyxRO1E7Tzs7UTs7Uzs7Ozs7O1M7O1MsUTtRO087O1E7O1M7Ozs7OztTOztTO1E7Tzs7UTs7Uzs7Ozs7O1M7O1M7UTtPOztROztTOzs7Ozs7O1M7O1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7OztTOztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1MsaUI7O1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTLFc7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7UztTO1M7UztTOztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UyxLO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UTtRO1M7UztTO1M7Uzs7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7O1M7UztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7O1M7UztRO087O1E7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTLEs7UyxLO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UyxLO1MsSztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Uzs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7Uzs7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7OztTO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7UztTO1M7UztRO087O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7OztTO1M7UztTO1MsSztTLEs7Uzs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7O1M7UztTO1M7UztTO1MsSztTLEs7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1MsSztTLEs7UztTOzs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROzs7Ozs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7UztTO1M7UztTO1E7Tzs7UTs7Ozs7Ozs7OztTO1M7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1M7UztTO1E7OztROzs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7O1M7UztTO1M7UTs7O1E7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTOzs7O1M7UTtRO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UyxPO1MsVztTO1c7O1M7ZTtROzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UyxLO1MsSztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7OztTLEs7UztTO1MsSztRO1E7UyxPO1M7UTs7O1E7O1M7Ozs7O1M7UztXOzs7Yzs7Ozs7Ozs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7OzthOztTLE87UztTOzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7OztTO1MsTztTLGdCO1M7UztRO087O1E7O1M7Ozs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7UztTO1M7UTtPOztROztTOzs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Uzs7Uzs7O1M7UztTO1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1E7UTtTO1MsTztTLFE7Uzs7WTs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Uzs7Ozs7OztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UyxPO1M7UyxRO1M7Vzs7Ozs7Ozs7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UztTLFE7UyxPO1M7Vzs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7OztTOztTO1M7UztRO087O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTO1c7Ozs7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Uzs7UztTO1M7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UztTLFE7UztTLE87UztXOztTO1M7UztROzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7Ozs7Ozs7Ozs7UyxLO1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7O1M7UztTO1MsTztTLFE7UztTLEk7UTs7O1E7O1M7Ozs7Ozs7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7O1M7O1M7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1M7UTs7O1E7O1M7Ozs7Ozs7Ozs7UztTO1M7UztTO1M7UztROzs7UTs7Uzs7Ozs7Ozs7OztTO1M7UztTO1M7UztTO1E7OztROztTOzs7Ozs7Ozs7UztTO1MsTztTO1M7UTtPOztROztTOzs7Ozs7O1MsSztTO1M7UTtPOztROztTOzs7Ozs7UTtPOzRCLE0sMkM7O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UyxNO1M7UztTO1E7Tzs7UTs7Uzs7Ozs7O1M7UTtPOztROzs7Ozs7Ozs7O1M7UTtPOztROztTOzs7Ozs7UztRO087O1E7O1M7Ozs7O1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7UztTO1E7Tzs7UTs7Uzs7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7Ozs7O1M7UTtPOztROztTO1M7UTtPOztROztTOzs7OztTO1E7Tzs7UTs7Uzs7Ozs7OztTLEk7UTtPOztROztTOzs7Ozs7UztTO1M7UTtPOztROztTOzs7O1M7UztRO087O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UztTOzs7O1E7Tzs7UTs7Uzs7Ozs7OztTLEs7UyxLO1M7UTtPOztROztTOzs7Ozs7Ozs7OztTLEs7UztTO1M7UyxLO1MsTztTO1E7OztROztTOzs7Ozs7O1E7Tzs7UTs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7UztTO1E7Tzs7UTs7Ozs7Ozs7UztTO1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROzs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UztTOzs7Ozs7Ozs7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1MsUTtTO1MsTztTOztZOzs7UTs7O1E7O1M7UztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7UTtPOztROztTOzs7OztRO087O1E7O1M7Ozs7O1E7Tzs7UTs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTLEs7UztTO1M7UztTO1M7OztZOzs7Ozs7Ozs7Ozs7UTs7O1E7Ozs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztTOzs7WTs7Ozs7Ozs7Ozs7O1E7OztROzs7Ozs7Ozs7Ozs7O1M7UztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7OztTO1M7UztTO1M7UTs7O1E7Ozs7Ozs7Ozs7OztTO1M7UztROzs7UTs7Ozs7Ozs7Ozs7O1M7UztTO1E7OztROztTOzs7O1E7Tzs7UTs7Uzs7Ozs7UTtPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7d0QsTztHOztJLE87Rzs7SSxPO0c7dUQsTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7Rzs7STtJLGM7STtJLE87RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7SztLOzs7Ozs7STs7O0k7STs7OzBCO0ksYzs7O0k7STtHOztJLGdCOztJO0ksSSxVLDZCO0k7STtHOztJLE07MEI7Rzs7SSxNO0c7O0k7Ozs7TSxVOzs7Ozs7Ozs7O08sTTs7O08sTTs7TTs7Ozs7O0c7O0k7Ozs7Uzs7Uzs7Uzs7O3NCO0k7Rzs7SSxnQjtJLE07OEI7Rzs7STsyQixPO0k7O3FDO0c7O0k7MkIsTztJOztxQztHOztJO0ksTztHOztJLE87Rzs7STtJO0c7O0k7STs7Ozs7OztHO0c7STtJOzs7SSxXO0ksTzs7RztHO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztHOztJO0c7Rzs7O00sdUI7Ozs7bUI7O1E7UyxVO2dCOzs7O1U7O1csTztrQjs7Ozs7OzthOzs7Ozs7O2dCLGtCOztnQixPO2U7Ozs7Ozs7YTs7Ozs7OztnQixvQjs7Z0IsTztlOzs7cUI7O1U7O1csZTtrQjs7Ozs7a0I7Ozs7O2tCOzs7Ozs7O2E7Ozs7Ozs7Z0Isb0I7O2dCLE87ZTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxhO0k7STtLLE87O0k7RzswQjs7STtJO0s7O1E7Ozs7Ozs7VTs7VTs7VTs7VTs7YTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVLG1CO1U7Ozs7UyxTO3FDO1M7UztVLE87O1M7O1MsZ0M7O1M7VSxPOztTOztTOztTOztTOztTOztZOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7WTs7UztTOztTOztZOztTO1M7O1M7O1k7O1M7O1M7bUI7UztVLFc7VTs7OztpQzs7OztTO21CO1M7Uzs7UzttQjtTOztTO21CO1M7Uzs7UztnQjtTOztTO1U7WTs7VSxRO1M7O1M7a0I7Uzs7UztVO1k7O1UsVTtTOztTOztZO1M7O1M7VTs7O1M7O1M7VTtZOztVOzs2Qjs7O1M7O1M7VTtZOztVLFc7VTs7NkI7OztVO1M7O1M7VTtVO1k7O1U7VSxVO1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1k7O1UsYTtVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTLGdDOztTLFE7Uzs7UyxVO1M7O1M7O1M7O1M7O1M7O1k7O1M7O1M7O1M7VTs7O1M7O1M7VTs7Ozt3Qjs0Qjs7UztVO1k7O1U7OztlLGE7ZTtjOzs7O1M7OztVLFc7VTs7UztVOzs7Uzs7Uzs7WTs7UztVLFc7VSxZOztTLHlCOztTLFk7Uzs7OztTOztTO1Msc0I7Uzt1Qjs7VTs7VTtXOztjOzs7Ozs7Vzs7O1U7VztXO1csTTtXO1c7VyxVO1c7VyxZOzs7VyxJLGU7Ozs7Ozs7a0I7Ozs7Vzs7O1U7Ozs7b0M7Ozs7Uzs7Uzs7Uzs7Uzs7Uzs7Uzs7UztpQjs7O0s7OztHOztJO2tCOztLO007O1M7OztNOzs7Ozs7bUM7UTs7Ozs7UyxNOzs7UyxPOzs7O1E7Ozs4QjtROzs7WTs7Ozs7O1csd0I7O1ksTTtXOztZLE87WSxROztXOzs7Ozs7O1E7OztROztTO1MsUTs4QjtROzs7WTs7Ozs7O1csNEI7O1ksTTtXOztZLE87WSxVOztXOzs7Ozs7O1E7UTtROzs7UTs7UTs7Vzs7UTtRO1E7UTs7O1E7O1E7O1E7O1E7O1E7Ozs7UyxNO1E7O1MsTztTLFU7O1E7O1E7Z0I7UTtROzs7UTtnQjs7O0c7O0k7a0I7O0s7TTs7Uzs7O007Ozs7Ozs7UTtTO1MsSzs7UztTLFE7UTtRO1M7UztTOzs7O1EsUTtROzs7UTs7UTs7UTs7O1E7UyxNO1MsTTtTOzs7Ozs7UztVO1U7WTtlO3NDO1E7Uzs7Uzs7OztTLFU7Uzs7UTs7O1E7Z0I7UTtROzs7NkI7O1EsVTtROzs7Rzs7STs7SztNOztTOzs7TTs7Ozs7USxTO1E7UTs7OzZCOztROztXOztRO1E7OztRLFE7UTs7O0c7O0k7STtLOztROzs7OztTOztTO2lCOztLOzs7Rzs7STtjOztJLE87Rzs7SSxlOztLO0s7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7VTtXLE07VyxNO1csVTtVO1UsRzs7Ozs7Ozs7OzsrQjs7Ozs7Ozs7Ozs7Ozs7OzswQjs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7TSxjOzs7OztTLFU7UztTLFU7Uzs7O1MsVTtTO1M7Ozs7OztTLFU7UztTO1UsTTtVLE07UztTO1UsTTtVLE07UztTLFU7Uzs7O1MsVTtTO1M7VSxNO1UsTTtTO1MsVTtTO1MsVTtTO1M7OztNOztJO0k7Rzs7STs7OztjOztJLE87Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7O0c7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjtJLEc7SztJLFc7SSxHO0s7SSxXO0ksRztLO0ksVSx1Qjs7Ozs7eUI7OzBCOzsyQjs7UztVLE87aUI7Ozs7Ozs7Ozs7Ozs7OztJLFM7Ozs7O3dCOzswQjs7MkI7O1M7VSxPOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLO0ssYztJO0c7O0k7SztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPO08sVztPLFc7TyxPOzs7OztJO0c7O0k7STtHOztJOztPOzs7SSxPO0c7c0MsZ0M7NEIsMkI7O0k7Ozs7OzBCOzsyQjs4Qjs2Qjs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1ksbUM7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix5Qzs7STs7O2E7aUMsTztJOzs7O00sTTs7b0Isd0IsTzs7SztLOzs7Rzs7STs7SSxROztJO0k7SSxPO0c7O0k7STtlOztjO2M7YztjO2M7Rzs7STs7eUI7OztPOzs7bUI7Ozs7Ozs7bUI7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7TyxPOzs7OztJLE87Rzs7STs7OztROzs7OzZCLE8sdUI7Ozs7Tzs7Ozs7aUI7aUIsTztnQjs7OzsyQixPOzs7cUIsTzs7TyxPOzs7O1E7Ozs7NkIsTyx1Qjs7OztPOzs7OztpQjtpQixPO2dCOzs7OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO2M7Yzs7O2dCO0c7O0k7SSxPO0c7OEIsd0I7O0ksTztHOztJLFE7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7Ozs7bUM7Ozs7SSxPOzs7Ozs7a0M7Ozs7STtJOztNLE87Ozs7b0M7O29DOzs7Ozs7O1MsTzs7Ozs7bUI7Ozt1Qzs7OztTLE87Ozs7dUM7Ozs7Ozs7O1UsTzs7Ozs7b0IsUTs7b0IsTzs7Ozs7OEI7OzttQjs7d0M7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7OztPLE87Ozs7O2lCLFE7O2tCOzs7O2dEOzs7O2lCLE87Ozs7K0M7O2dCOzs7Ozs7Ozs7O1c7OztZLE87Ozs7OzswQzs7MEM7Ozs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOzs7WSxPOzs7Ozs7c0IsTzs7OztzQixRO3NCO3VCOzswQjtzQixPOzs7OztnQzs7O3FCOzswQzs7OztXO1U7TyxPOzs7OztpQix3Qjs7aUI7a0I7Ozs7Ozs7O2lCLE87Z0I7OztpQjs7OzttQixPOzs7Ozs2Qjs7Ozs7aUI7Z0I7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7OztPLE87Ozs7OztxQzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7SyxPOzs7O21DOzttQzs7Ozs7SyxPOzs7O21DOzs7Ozs7Ozs7O0s7Ozs7O00sZ0M7Ozs7OztJOzs7TSw0QjtNOztLLE87Ozs7O2U7Ozs7O0k7SyxPOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7OztxQzs7Ozs7OztLOzs7SztNLE87O0s7Ozs7Ozs7Ozs7Ozs7O1M7VSxPOztTOzs7USxHO1MsTztpQixPOzs7O1MsTzs7Ozs7OzttQjs7OzttQjs7Ozs7USxPOzs7Ozs7O2tCOzs7Ozs7O1MsTzs7Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7OztJO0s7TSxPOztLOzs7a0MsTzs7OzhCOzt5QixPOzs7TyxPOzs7O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxhLE87Ozs7VyxPOzs7Ozs7eUM7OztPOztRLE87Ozs7O2tCOzs7Ozs7TyxPOzs7OztpQjs7Ozs7OztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7O08sTzs7OztxQzs7cUM7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRLDRCOzs7TyxPOzs7Ozs7O2lCOzs7O0k7Ozs7a0M7OztHOztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sZSxPOzs7SyxPOzs7Ozs7bUM7OztJLGlCOzs7OztLO2UsTzs7SyxPOzs7Ozs7bUM7Ozs7SyxPOzs7Ozs7bUM7OztJLE87Ozs7OztrQzs7a0M7Ozs7SSxlOzs7Ozs7OztNOztROzswQiw2Qzs7O007Ozs7Ozs7Ozs7Ozs7VyxZOztXLE87O1U7O3FEO1k7Ozs7bUM7Ozs7OztlOzs7O21DOztZOzs7O21DO1c7Ozs7a0M7Ozs7OztjOzs7O1c7O1U7O087UywyQzs7Ozs7Ozs7Vzs7OztrQzs7Vzs7Ozs7Ozs7OztZOzs7YTthO1k7Ozs7Ozs7Ozs7Ozs7K0M7Ozs7Ozs7Ozs7Ozs7OzhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7OzsrQzs7Ozs7OztZOzs7Ozs7Ozs7OztTO1U7VyxnQjtXOzs7OztZOzs7O1U7VztXLEk7Vzs7Z0I7Z0I7Ozs7Ozs7WSxNOzs7Ozs7O1U7c0I7VyxTOzs7cUM7cUM7VTs7Ozs7Ozs7Ozs7Ozs7TTs7O0k7OztJOztLOzs7SSxPOzs7O2tDOztrQzs7Rzs7STs7SyxPOzs7O21DOzs7O0ksMEI7STtJLE87Ozs7O2M7OztrQzs7Rzs7O0k7SSwwQjtRO0k7Ozs7TTs7O0ssTzs7UTtJLE87Ozs7O2M7Ozs7Yzs7OztrQzs7Rzs7STs7TSxPOzs7O29DOztvQzs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlLE87Ozs7O3lCOzs7Ozt5Qjs7Ozs7OztZOztlOztZOzs7VyxPOzs7O3lDOzs7cUI7Ozs7Ozs7O1ksRzs7Ozs7Ozs7Ozs7OztpQjs7Ozs7Ozs7OztXOzs7O2EsTzs7Ozs7MkM7Ozs7O1k7O2U7O1k7OztXLE87Ozs7eUM7OztxQjs7Ozs7UyxPOzs7OzttQjttQjtvQjs7dUI7bUIsTzs7OztpRDs7OzZCOzs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozt1Qzs7OztTLE87OztTLE87Ozs7Ozt1Qzs7Ozs7Ozs7YSxPOzs7Ozs7MkM7Ozs7O1MsTzs7Ozs7bUI7Ozs7OztTLE87Ozs7dUM7Ozs7UyxPOzs7O3VDOzs7OztVLE87Ozs7d0M7OztTLE87Ozs7dUM7O3VDOzs7OEI7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVOzs7O3dDOzs7Ozs7Ozs7O1U7VyxPOzs7OztxQjs7b0I7Ozs7VyxPOzs7OztxQjs7OztxQjs7OztVOztXO1c7a0M7OztVLE87Ozs7O29COzs7OztVLE87Ozs7d0M7O3dDOzs7O1UsTzs7Ozt3Qzs7d0M7Ozs7VSxPOzs7O21COztvQjs7O3dDOzs7O1UsTzs7Ozs7b0I7Ozt3Qzs7OztVLE87Ozs7Ozt3Qzs7OztVLE87Ozs7O3dDOzt3Qzs7Ozs7Ozs7Vyw0QjtXOztVLE87Ozs7d0M7OztvQjs7O3dDOzs7OztXOzs7O3lDOzs7Ozs7YTs7OztjO2M7cUM7YSxPOzs7Ozs7Ozs7dUIsUztzQzt1QixPOzs7O3FEOztzQjs7Ozs7Ozs7Ozs7OztlLG9DOzs7Ozs7YTtjLE07YztjLDRCO2M7O2EsTzs7Ozs7dUI7Ozs7Ozs7TSxPOzs7O29DOztvQzs7Ozs7OztPLE87Ozs7O2lCOzs7O007TyxPOztNOzs7Rzs0Qjs7STs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7O1MsTzs7Ozt1Qzs7Ozs7SztNLE87O0s7O0ksa0IsTzs7STtHOztJOzs7STtLLGtCLE87O0s7Ozs7OzsyQjs7MEI7Ozs7Uyw0QjtTOztRLE87Ozs7O2tCOzs7O1E7Uzs7O3FDLE87cUMsTzs7O21DLE87b0MsTzs7Ozs7OztZO1ksNEI7WTs7VyxPOzs7OztxQjs7Ozs7O1c7OztTLE07Ozs7OztTLE87Ozs7Ozs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7a0I7Ozs7Ozs7UztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7c0M7OztROzs7Ozs7UyxrQztRLE87Ozs7c0M7Ozs7Ozs7Ozs7OztRLE87Ozs7c0M7O3NDOzs7UTs7OztTLDRCO1EsTzs7OztzQzs7O2tCOzs7c0M7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7O0k7OztJLE87OztjLE87Ozs7OzRDOzs7O0c7O0ksTzs7O2MsTzs7Ozs7NEM7Ozs7Rzs7SSxPOzs7OztrQzs7Rzs7SSxPOzs7O2tDOzs7Yzs7O2MsTzs7Ozs7d0I7OzthOztHOzs7SSxPOzs7OztrQzs7Ozs7SSxPOzs7OztrQzs7OztJLE87Ozs7O2M7OztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7O3lCOzs7Tzs7O0c7O0k7Ozs7TyxPOzs7OztpQixRO2lCO2tCOztxQjtpQixPOzs7OzsyQjs7O2dCOzs7O3FDOzs7Ozs7O1E7K0I7UTs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7OztVOzs7Ozs7TyxPOzs7OztpQjs7O3FDOzs7O087Ozs7TyxPOzs7Ozs7O3FDOzs7Rzs7O0s7SyxPOzs7Ozs7O21DOzs7O21DOzttQzs7STtJLFE7O2U7O0k7Szs7UTtJLE87Ozs7O2M7Ozs7Yzs7O0c7O0k7OztPLGtEO08sTzs7Ozs7cUM7OztpQixTOztpQixPO2dCOzs7aUI7Ozs7Ozs7USxPOzs7Ozs7OztzQzs7O2tCOzs7O08sd0M7TyxPOzs7Ozs7Ozs7cUM7OztpQjs7Ozs7OztRLE87Ozs7Ozs7O3NDOzs7a0I7Ozs7Tzs7Ozs7Vzs7OztVO1E7TyxPOzs7Ozs7OztpQjs7Ozs7OzttQixPOzs7Ozs7aUQ7O2lEOzs7O2tCOzs7Z0I7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozt5Qjs7O087OztHOzs7SSwwQjtRO0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Yzs7Ozs7STtLLE87Ozs7bUM7O21DOzs7Ozs7TyxPOzs7OztpQjs7aUI7a0I7O3FCO2lCLE87Ozs7OzJCOzs7Z0I7Ozs7OzBCOzs7TyxPOzs7O3FDOztxQzs7Ozs7O1E7O1c7O1E7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOztxQzs7OztPLE87Ozs7cUM7O3FDOzs7MkI7OztPLE87Ozs7Ozs7cUM7OztHOztJO0k7O00sTzs7OztvQzs7b0M7Ozs7Ozs7O1MsTzs7Ozt1Qzs7O1EsaUQ7O1MsTzs7Ozt1Qzs7dUM7OztRLE87Ozs7O3NDOztzQzs7Ozs7OztVOzthOzs7Z0IsTzs7Ozs4Qzs7Ozs7MEI7Ozs7O2dCLE87Ozs7Z0IsTzs7Ozs7OzhDOzs7O2dCLE87Ozs7Ozs4Qzs7OztnQixPOzs7OzhDOzs7OzswQjs7Ozs7Z0IsTzs7OztVOztTLE87Ozs7dUM7OzttQjs7Ozs7OztRO1MsTzs7UTs7O0c7O0k7OztJOzs7OzJCLE87Ozs7Uyw0QjtTOzs7USxPOzs7OztrQjs7Ozs7USxPOzs7O3NDOzs7MEI7OztRLE87O1E7Ozs7c0M7Ozs7O0k7SyxPOztJO0c7O0k7OztJOzs7O2tDOzs7Rzs7STs7OztPLE87Ozs7Ozs7O2lCOzs7O2lCOzs7OztPOzsyQjs7MEI7OzBCOzs7O1EscUI7USxPOzs7O2lCOzs7O2tCOzs7O08sSTtPLE87Ozs7Z0I7cUM7OztpQjs7Ozs7TyxPOzs7Ozs7OztpQjs7Ozs7OztRLFU7O1E7O1M7Ozs7VztnQzs7Z0M7Ozs7O1M7Ozs7VztnQzs7Z0M7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7aUIsUzs7aUI7aUIsTzs7OzsrQzs7Z0I7OztpQjs7Ozs7Ozs7O087USxNOztPLE87Ozs7O3FDOzs7aUI7Ozs7TyxtQjtPLE87Ozs7Ozs7O2lCOzs7OztPLE87Ozs7cUM7OztpQjs7Ozs7Ozs7O1csTzs7Ozs7Ozs7cUI7Ozs7O3lDOzs7cUI7Ozs7TyxVOztvQjs7O1E7O1c7O1E7O08sTzs7Ozs7aUI7Ozs7aUI7Ozs7MkI7O3lCOzs7TztPOztHOztJO0ssTzs7OzttQzs7bUM7Ozs7OzBCLE87Ozs7USw0QjtROztPLE87Ozs7O2lCOzs7Ozs7O1EsTzs7OztpQjtzQzs7c0M7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzs7O08sTzs7OztxQzs7cUM7Ozs7TyxPOzs7O3FDOzttQzs7Rzs7STs7OztrQzs7O0c7O0k7Ozs7Ozs7UyxPOzs7O3VDOzs7bUI7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7OztTLE87Ozs7Ozs7OztLLE87Ozs7bUM7O0k7Ozs7OztPOztRLE8sd0MsWTs7OztPLE87Ozs7cUM7OztpQjs7O3FDOztxQzs7OztNLE87Ozs7b0M7O29DOztvQzs7Ozs7O00sTzs7OztvQzs7b0M7O29DOztvQzs7OztLLE87Ozs7bUM7O21DOzttQzs7Ozs7OztLLE87Ozs7bUM7Ozs7O0ksTzs7OztrQzs7a0M7Ozs7OztLLE87Ozs7Ozs7bUM7O21DOztJO0ksUTs7ZTs7SSwwQjtRO0ksTzs7OztrQzs7O2M7Ozs7O0k7Ozs7Ozs7Ozs7TSxpQixPOzs7OztJLE87Ozs7O2tDOztrQzs7Rzs7STs7OztPLE87Ozs7cUM7OztpQjs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7Ozs7OztpQjs7OztpQjs7Ozs7O1EsTTs7Tzs7MEI7OzBCOzs7TyxPOzs7O2dCOztpQjs7OztrQjs7Ozs7bUI7O29COzs7O3NCOzJDOzs7O29COzs7OztpQjs7OzttQixPOzs7O2lEOztpRDs7O2lCLE87Ozs7K0M7O2dCOzs7aUI7Ozs7Ozs7Ozs7WSxxQztZLE87Ozs7cUI7MEM7OzBDOzs7c0I7Ozs7VyxJO1csTzs7OztvQjt5Qzs7O3FCOzs7O087USxNOzs7Ozs7OztRLE87Ozs7aUI7c0M7O3NDOzs7a0I7Ozs7a0IsTzsyRDtpQjs7OztPLE87Ozs7Z0I7cUM7OztpQjs7OztpQixPOzBEO2dCOzs7Ozs7OztPLE87Ozs7OztpQixTOztpQjtpQixPOzs7OytDOztnQjs7O2lCOzs7O08sbUI7TyxPOzs7OztxQzs7O2lCOzs7Ozs7OztXLE87Ozs7eUM7O1U7OztXLDhCOzs7Ozs7Ozs7YTs7Ozs7Yzs7Ozs7O1csSSxPOzs7Ozs7Ozs7O1csMEI7ZTtXLE87Ozs7Ozs7O3FCOzs7Ozs7cUI7Ozs7cUI7Ozt5Qzs7O3FCOzs7O08sVTs7b0I7OztROztXOztROztPLE87Ozs7O2lCOzs7O2lCOzs7OzJCOzs7TyxPOzs7O3FDOzs7aUI7Ozs7eUI7OztPO087O0c7OztJLDBCOzs7Ozs7Ozs7SSxPOzs7SSxRO0ksMEI7SSxPOzs7OztjOzs7Ozs7O0s7Ozs7O0ssTzs7Ozs7OzttQzs7Ozs7bUM7O21DOztJO0ksUSxNOztlOztJLDBCO1E7SSxPOzs7O2tDOzs7Yzs7Ozs7O0ssTzs7Ozs7Ozs7bUM7O21DOztJOztJLE87Ozs7O2M7OztHOztxQixrQix3Qjs7SztpQjs7O2U7Ozs7O3FDOztlOzs7O3FDOztJOztLO0s7O0k7O3VCLHdCLHdCO0s7OytCOzs7Ozs7VSxhLE87O1UsTzs7Ozs7b0I7Ozs7UztNLE87OztLLE87Ozs7Ozs7ZTs7O0k7O0ssTzs7O2U7ZSxPOzs7OzZDOzs2Qzs7Yzs7STtJLE87Rzs7O0ssTzs7Ozs7ZTs7O0k7O0ksTzs7Ozs7YyxRO2MsMEI7YyxPOzs7Ozt3Qjs7O2E7Ozs7Ozs7Yzs7OztrQzs7Rzs7Ozs7Ozs7OztLLFM7O0ssTzs7Ozs7ZTs7O0k7STtLLE87Ozs7OztlOztnQixPOzs7OzswQjs7Ozs7dUI7ZSwwQjttQjtlLE87Ozs7O3lCOzs7Yzs7bUM7OztJLE87Ozs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs2Qzs7Ozs7YywwQjtrQjtjLE87Ozs7O3dCOzs7NEM7O2E7O2tDOzs7O0k7OztLOzs7SSxPOzs7Ozs7O2tDOztHOzs7Ozs7O007SywwQjtLO0ssTzs7OzttQzs7O2U7OzttQzs7O0k7Rzs7SSxnQzs7Ozs7Ozs7Ozs7OztJLDBCO0k7O0ssTztlO2U7Ozs7OztxQzs7OztJLE87YztjOzs7Ozs7b0M7Ozs7STs7O3lCLE87OztxQixPOztPLE87OzBCLE87OztPLE8sd0I7O0c7O0k7OztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TztPO08sTTs7Ozs7O08sVTtPLG9DO08sTTs7TTtPO08sTTs7Ozs7Rzs7Ryw2QjtHO0csMEI7RztHLDhCO0c7Ryx1QjtHO0csd0I7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDBCO0c7Ryx3QjtHO0csd0I7RztHLDJCO0c7RyxtQztHO0csaUM7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHlCO0c7OztNLDhCOzs7O1M7Ozs7OztVOzs7Yzs7OztZOzs7Ozs7O1k7Ozs7Ozs7WTs7Ozs7OztZOzs7Ozs7Ozs7OztTOzs7O1UsTTs7WTs7Ozs7O2dCOzs7Ozs7Z0I7OztTOzs7VTs7YTs7Z0IsTzs7Z0IsTzs7Z0IsTzs7Z0IsTzs7O2dCLE87OztZO2dCOzs7Ozs7WTs7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7SSxJO0k7Ozs7MkI7OzJCOzs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7SSxPOzs7Yzs7YTs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7Ozs7UTtROzs7UTtROzs7UTtRO1EsTzs7O2tCOzs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7Ozs7OztRO1E7OztROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztROzs7Ozs7USxPOzs7USxPOzs7O1E7UTs7O1E7aUI7O1E7O1E7UTtTLE87O1E7OztRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7OzRCOzs7USxPOzs0Qjs7Ozs7OztRO1E7UyxPOztROzs7UTs7Ozs7Rzs7STs7O0k7STs7SztLO0ssSSxtQjttQzs7OztRLE87OztRLE87OztRO1E7Ozs7OztRO1E7OztTOzs7O1U7VTs7OztVO1U7VTs7OztTOzs7UztTO1M7OztROzs7Ozs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRO1E7Ozs7OztRO1E7UTtTLE87O1E7OztRO1E7UTtRO1MsTzs7UTs7O1E7Ozs7OztRLE87OztROzs7Ozs7UTtROzs7UTtROzs7Ozs7UTtROzs7Ozs7UTs7Ozs7O1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7O1E7UTtTLE87O1E7OztHOztJOzs7O0k7O0s7SztLO0s7OztJLE87OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJO0ksTzs7O2M7YztjO2E7O0c7O0k7O3lCOzsyQjs7O087USxPOztPOzs7OztRO1E7O1E7UyxPOztROztPO1EsTzs7Tzs7OztJOzs7STtJO0ksSTtJO0k7STtJO0k7OztHOztJO0k7STtJO0k7STtHOztJO0k7STtJLEk7STtJO0ksZ0I7OztLO0ssTzs7O0k7Z0I7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7UTs7OztRO1E7UTs7Ozs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7Ozs7UTtRO1E7OztRO1E7Ozs7OztRO1E7UTs7O1E7UTs7O1E7Ozs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztRO1E7Ozs7O1M7Uzs7Ozs7O1M7Ozs7Ozs7UTtRO1E7OztRO1E7UyxPOztROzs7Ozs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087O087OztPO087OztPO087Tzs7O087TztPOzs7Tzs7Ozs7O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7Ozs7Ozs7O087TztPOztHOztJLFk7O0k7OztJOzs7TztPOzs7TyxPOzs7Ozs7OztPO087OztPO087OztPO087OztPLE87Ozs7Ozs7Rzs7STtJOztLO0s7SyxJLG1COzs7O1EsTzs7O1E7UTs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1MsTzs7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7STs7O087USxPO087Tzs7VTtPOztRO1E7UTs7Ozs7UTtROzs7Tzs7OztHOztJO0k7STs7Rzs7O0k7STs7OztJO0k7Ozs7STtJO0k7OztJOztLOzs7O00sTzs7SztLO0s7OztJO0k7RztnQyx1QzttQyx1Qzs7STs7O0s7Szs7Ozs7OztJO21COzs7OzZCLE87OztxQixPOztPLE87OztPLE87O08sb0IsTztPLE87O0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFc7Ozs7SSxjOzs7SSxnQyxPO0ksVzs7O0ksWTs7SSxXOzs7O0ksZ0I7OztJLGU7STs7OztLLFE7SSxPO0c7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOzs7TyxPOztPOzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO1E7TyxPOzs7Tzs7O1E7VTs7O2E7Ozs7YyxNO2MsUTthO2M7OztlLE87Ozs7OzBCO2EsTzs7O08sTzs7Tzs7O1EsTztRLE87UTtPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRO1U7OzthOzs7O2MsTTtjLFE7YTtjOzs7O2UsTztlLE87Ozs4QzthLE87OztPLE87OztPOzs7USxPO1E7VTs0QztPLE87OztPOzs7O1EsTztRLHNCO1E7VTs7MkI7O1E7TyxPOzs7Tzs7O1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7O1E7OztXOzs7O1ksTztZLE87VyxXOzs7SyxPO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Ozs7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJO0ssa0IsTztLLFc7O0ksb0IsTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0ssTztLO0ssTztLOztROzt5Qjs7SSxPOzs7Ozs7Ozs7OztJOzs7O0ssTTtLLFE7SyxPO0ksTzs7O0k7Ozs7O0ssTTtLLFE7O0s7Ozs7TSxlO007OztTOzJDOzs7OztJO0ksTzs7OztJOzs7O0ssUTtLLFU7STs7Tzs7O1EsTztRLE87UTtPLE87OztPLGlCLE87TyxPOztPOzs7O1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7OztJOzs7O0ssUTtLLFU7STs7TyxrQixPO08sTzs7Tzs7Ozs7O1EsTztRO08sTzs7O087Ozs7OztRLE87UTtPLE87Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztLLE87SSxPOzs7SSxZO0ksaUMsTztJOzs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87USxPO08sTzs7O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUI7TyxPOzs7O0k7O08sa0MsTztPOztPLHVDO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPOzs7USxPO087O08sb0M7Tzs7OztJOzs7SyxRO0k7O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STs7TyxpQjtPLE87O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPLG1CLE87TyxPOzs7O0k7OztLLFE7STs7Tzs7O1EsVTtRLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O087OztRLE87USxPO08sTzs7TyxrQixPO08sTzs7TyxrQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7O1EsVTtRLE87TyxPOzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7TyxtQixPO08sTzs7Tzs7OztRLE87USxPO1EsTztPLE87Ozs7O29DOztROzs7O1MsVTtTLFE7UyxlOztPO1E7OzthOztjLFc7O2EsNEIsTzthLG1COzs7UTtVOzs7YTs7O2MsUTthO2M7Ozs7ZSxPO3lDOzs7YTs7O08sTzs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1EsZTtRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsZTtRLE87USxzQjtRO1U7OzJCOztPLE87OztPOzs7UTtRLE87TyxPOzs7Tzs7OztRLE87UTtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087Ozs7USxlO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7O1EsTztRLE87USxPO1EsTztPLE87Ozs7Ozs7Ozs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxlO1EsTztPLE87OztPOzs7UTtRLE87TyxPOzs7TyxxQjtPLE87O087OztRLE87UTtPLE87OztPOztRLE87USxzQjtRO1U7OzJCOztPLE87O087Ozs7USxPO1EsTztRO08sTzs7O087OztRLE87USxPO08sTzs7O08sb0IsTztPLE87O08sb0IsTztPLE87O087OztRLGU7USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87UTtPLE87OztPLG9CLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7OztRLE87USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7OztJOzs7OztLO0ssTTtLLE07SyxNO0ksTzs7O0k7Ozs7SyxRO0ssVTtJO0ssTztJOztPLGlCO08sTzs7Tzs7O1E7USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7UTs7O2E7OztjLE87YTtxQjs7c0M7OztZOztRO08sTzs7O087OztRLGU7TyxPOzs7Tzs7O1EsTztRLHNCO1E7VTs7MkI7O08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxtQjtPLE87O08sbUIsTztPLE87O08saUIsTztPLE87O087OztRLE87UTtPLE87Ozs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7USxPO1EsTztRO08sTzs7O08saUIsTztPLE87O087Ozs7O1EsTztRLE87USxlO08sTzs7Ozs7Ozs7O087OztRLE87UTtVOzRDO1EsTztPLE87OztPOzs7O1EsTztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08saUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7SyxXOzs7SSxjOzs7STs7OztLLFE7SyxVO0k7O087Ozs7USw4QjtRLE87TyxPOzs7Tzs7Ozs7UTtRO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxPO0ssTztJLFc7OztJOzs7Ozs7O0ssTTtLLFE7SyxPO0s7SyxPO0s7O1E7MEM7SSxPOzs7Ozs7Ozs7OztHO0k7OztRO1MsTztTLE87UTtPOztRLFc7USxPO087OztROzs7O1MsTztTLGU7USxXO087O1EsVztRLE87Tzs7USxXO1Esc0I7Tzs7USxXO1Esc0I7Tzs7Ozs7OztRLFc7USxzQjtPOzs7O1E7Ozs7Ozs7UztTLGU7UztTOztZOzs2Qjs7UyxXO1MsVztRLE87O087O1EsVztRO087OztROzs7UyxPO1E7Tzs7O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7UyxPO1MsVztTLFc7USxPO087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Ozs7Ozs7TzsyQixTOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTLE87UztTLFc7UyxXO1EsTztPOztROzs7OztTO1M7UyxXO1MsVztRLE87Tzs7OztROzs7OztTO1MsZTtTLFc7UyxXO1EsTztPOztROzs7OztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7O1M7UyxXO1MsVztRLE87O087OztROzs2QixXOzs7VyxXOzs7VyxXOztXOzs7WSxlO1csVzs7Tzs7USxXO1EsTztPOzs7USxXO1EsTztPOzs7UTtTLE87O1MsZTtRO087O1E7O1MsVzs7O1EsVztPOzs7Ozs7O1E7Ozs7Ozs7UztVOzs7VyxPO1U7a0I7O21DOzs7O1M7OztVLE87VSxPO1MsVztRO1E7UyxPO1MsTztTLE87UyxXO1MsVztRLE87O087O1E7Ozs7OztTLE87UztTLFc7UyxXO1EsTzs7Tzs7Ozs7Ozs7Ozs7SyxNOztJO0ssTztJO0k7SztPOzs7VTs7VztXLE87VyxlO1UsTzs7Ozs7Uzs7O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3QjtzQixtQzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTztHOztJO0s7Ozs7TSxXO00sVztNO0ssTzs7STtJLE87Rzs7STs7O2dCO0ssVztJLE87OztxQixTO0k7Ozt3QjtTO0k7Rzs7STtLO0ssTztLLGU7STtHOztJO0ssUTs7OztLOztLOztLOztLOztLOztLOztLOztLOzs7O0s7O007TTthOztLO007YTtJOztLOztLOzt3Qjt3Qjs7O0s7O0s7O0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztROzs7OztJLE87Rzs7SSxPOzs7YzttQzs7O2U7Ozs7Ozs7Z0I7O2UsTztjOztlOzs7Ozs7Ozs7aUI7OztnQjs7ZSxPO2M7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7OztpQjs7O2tCO2lCLFc7Ozs7ZSxPOzs7Ozs7Ozs7OztnQixnQyxPO2dCLFc7O2UsTzs7Ozs7O2dCOzs7OztnQjs7Ozs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7Ozs7O2dCO2dCLGE7Ozs7O2dCO21DLFM7aUI7O29DOzs7aUI7OztvQjtvQixPO21COzs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O2dCOzs7OztnQjs7Ozs7Z0I7aUI7O29CO3FCLE07b0I7b0IsTzttQjtpQjs7bUM7bUM7Ozs7Z0IsTzs7O2dCOzs7OztjO2E7O0c7O0k7SztPOzs7VTt1RDtVO1M7O0s7SSxPO0c7O0ksWTtnQixNOzs7Szs7STtHOzs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7TTtPLFc7TyxNOzs7O007O087OztLLEksbUM7SyxXO0k7STtLLEs7SztPLDJCOztLLFU7O0ssVTtLO0s7TSxRO00sSztLO0s7SztLLE87STtJOzs7OztpQjs7Z0I7Rzs7STs7Ozs7O08sYztPOzs7O0k7OztJOzs7Ozs7TyxjO087Ozs7STs7O0k7SSxXO0c7O0k7SSxXO0c7O0ksa0QsYztHOztJO0ssa0M7SztNOzs7VTtXO1ksTTtZLE0sbUI7Vzs7O1c7O1k7bUMsTSxvQztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPO087OztNO2dCOztLOzs7Szs7TSxNO0s7SyxPOztHO0csOEMsbUI7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7STs7Ozs7Ozs7OztJO0s7SyxRO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7Ozs7Ozs7Ozs7STtJLGlCOztLLE87STtHOztJO0ksaUI7Ozs7OztRLE87OztRLE87OztrQjtrQjtpQjs7O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs7USxPOzsyQjs7OztrQjs7O29CO29CO21COztrQjs7STtHOztJOzs7Ozs7Ozs7USxLO1E7Ozs7O0s7O0ksa0I7Ozs7OztRLE87Ozs7UTs7Vzs7NkIsaUM7O1E7a0I7Ozs7USxPOzs7O1EsTzs7OztrQjs7O29CO29CO21COztrQjs7Ozs7Ozs7OztLOztJO0c7O0k7O3VCOztJO0c7O0k7SSxpQjs7OzBCOzs7USxPOzs7STtHOztJOzt1Qjs7STtHO0c7SSxPO0c7O0k7a0I7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7b0IsTzs7OztRLE87OztJO0c7O0k7SSxpQjs7OztRLE87Ozs7USxPOzs7STtHOztJOzs7Ozs7O2dCO0c7O0k7Ozs7Ozs7Z0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLHVDOzBCLE8sdUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7STtJOztJO0ksVztHO3lCLGtDOztJOzs7SztPOzZDO0ksVzs7OztJLE87OztjO2MsTzthOzs7OztJLFEsTTtJOzs7SyxROzs7SSxJLGlDOzs7MkI7OztHOztJOzt1QixPOzs7TyxPO2UsTTs7RztHOztJO0s7O0c7Ozs7Ozs7O1EsSSxJOzs7O29COztROztRLHNDOzs7Ozs7UTs7Ozs7OztJLEk7Ozs7SztLOzs7STtJLE87Rzs7STt1Qjs7STtHO3FDLCtCOztJO2lEO0ksVTtJLE07Rzs7STtJOzttQzs7O1E7OztROzs7OztRLE87OytCOzs7O1E7USxPOzsrQjs7OztRLE87OztrQjtrQjs7bUI7OztrQjtpQjs7OztRO1EsTzs7K0I7Ozs7OztRLE87OztrQjtrQjs7bUIsTzs7MEM7Ozs7a0I7aUI7Ozs7OztRO1E7O1c7OEMsa0IsUztRLE87OytCOzs7UTs7O1M7Ozs7a0M7OztHOztJLFk7O0ksTzs7O0k7O0ssTzs2Qzs7O0ksTzswQywwQjs7O0k7OztPO087TztNOztJO0k7Ozs7SyxPOzs7ZTtlLE87O3NDOzs7Ozs7SSxPOzsyQiw0Qjs7Rzs7STs7O0s7SyxPOzhDOzs7STtHOztJO0ksTzs7MkI7O0c7O0k7RztHOztJO0k7O21DOzs7UTs7Ozs7USxPO2dEOzs7UTtrQjs7USxrQixPOztROzsyQjs7O1EsTzs7O2tCO2tCO2tCO2lCOzs7O1EsTztnRDs7O1E7Ozs7O1E7UTs7MkI7Ozs7O1EsTzs7O2tCO21COztpQjs7Ozs7MEI7O1Esb0M7Ozs7Z0I7OztHO3lCOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7OztROzs7O1MsTzs7Ozs7VTs7OztVO1U7OzsrQzs7Ozs7OztRO1EsTzs7aUMsa0IseUI7Ozs7UTtROzs7UTtROzs7USxPOzsrQjs7OztRO1E7OytCOzs7UTs7O1c7VztXO1U7O1E7OztRO1E7OztRO1E7Ozs7O1EsTzs7K0I7Ozs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7OztRLE87O2lDLGtCLHlCOzs7UTs7OztTO1M7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7OztTO1EsTzs7K0I7Ozs7OztRO1MsTzs7UTs7USxxQzs7Ozs7UTs7Ozs7Uzs7UTs7Vzs7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOzhCOztJO3VCOztJO0k7Rzs7SSxPOzs7Yzs7OztlO2M7Yzs7O0c7O0k7SztPOzt5Qiw2Qjs7O0s7O0ssdUM7O0s7dUM7SztJOzs7SztLLE87O0k7STtHOztJOztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7OztRO1EsTzs7O2tCOzt3Qzs7eUM7O3lDOzsyQzs7O3FCOzsyQzs7aUI7Ozs7UTtTLE87O1E7OzBCO29DOzs7Rzs7STs7O0k7STtJLEksZ0M7Ozs7OzBDO0s7Szs7Rzs7STs7O3lCOzs0Qjs7eUI7ZSxzQjs7RztrQywrQixTOztJLE87OztHOztJLGlDOzs7MEIscUI7Ozs7OzswQiw0Qjs7NEIsOEI7O087O1E7OztXO3VCOztXLE87VTtRO087O087O1E7USxRO1EsTTtPLFc7O087O1E7VTs7O2E7eUI7O2EsTztZOztRLE87USxNO087O3VCLGlDOztPOzswQjs7Tzs7UTs7O087TztRLFE7USxNO08sVzs7O087O3VCOztPOzs7Tzs7eUI7O087O087O3lCLHFCOztPLGtCO3lDO087O0k7O29COztJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7OzswQjs7MEIsd0I7OztROztTOzs7OztpQjs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7UyxPOztRO29DOzs7Rzs7STs7O0k7STs7Ozs7UTtRLE87OytCOzs7O1E7USxPOzs7Ozs7eUM7OzJDOzs2Qzs7O3FCO3FCOztxQjsrQzs7Ozs7O1E7Ozs7MEI7O1Esb0M7Ozs7O0c7NkM7Rzs7STtLOzs7STtJO0c7O0ksTzs7Ozs7Rzs7SSxpQzs7O3lCLGlCOztPLG1DO087OzBCLHFCOzs7Tzs7dUI7O087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtVOzs7YTt5Qjs7YSxPO1k7O1EsTztRLE07Tzs7cUIsbUM7O087O08sb0I7eUM7Tzs7MEI7OztPOzt3Qjs7Tzs7O087O3lCOztPOztPOztROzs7MEIsbUI7TztRLFE7USxNO08sVzs7TzttQyx1Qjs7OztJO0k7RztzQyw4QixTOzhDO0c7O0ksbUI7O0k7OztJO0k7Ozs7O1E7USxPOzsrQjs7O1E7Ozs7UztRLE87OytCOzs7O1E7UTs7Ozs7O1E7USxPOztpQyxrQix5Qjs7O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1EsbUM7Ozs7O0c7O0k7Ozs7OzJCOzs7Ozs7Ozs7Ozs7O1E7UTs7NEI7O1E7b0M7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGU7SSxjOzs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0k7O0ssTzs7O0k7STtHOztJOzs4QixPOzs4Qjs7Tzs7O1EsTTtRLE07TyxPOztHOztJLHdDO0k7OztLLE07SyxNO0ksTztHOzhCLDhCOztJOzs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7Ozs7Ozs7O1M7Ozs7O0s7OztHOztJOztPOzs2Qjs7O0c7RztJOzs7Ozs7Ozs7O0k7OztHOzBCLDRCOzZCLDhCOztJO0s7Ozs7O2dDO1EsTzs7UTs7OztTLG1COzs0QjtRLE87OztRLE87Ozs7Ozs0QjtRLE87TTtHO3NDLHVCOzJCLHVCOzs7Ozs7Ozs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7Ozs7SyxJO0k7Ozs7Ozs7O0ksWSxPOzs7O0s7OztJO0c7O0ksUTtJOzs7Ozs7O0ssSTtJOztNOzs7Szs7OztrQzthO2E7O0k7aUIsTTs7K0I7Ozs7Ozs7bUIsTTtLOzs7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7bUIsTTtLOzs7OztNLEk7SyxZOzs7Ozs7SSxZO0ksa0I7STtHOzs7O21CO0s7Ozs7O00sSTtLLFkseUI7Ozs7OztJO0k7aUI7Szs7Ozs7TSxJO0s7O007OztlOztrQjs7Z0Msa0M7ZSxPOzs7Ozs7Rzs7Ozs7TTs7OztPLFM7Tzs7Ozs7O29COzs7Ozs7O0k7eUIsaUM7Rzs7SSxRO0ksYztJLE87Rzs7STs7YztjLHFCO2E7Ozs7Rzs7OzttQjs7SztLOzs7OztJO0k7Szs7TSxPOzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7O0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7OztVLE87Ozs7O1U7Ozs7O1c7VSxVOzs7Ozs7OztVOzs7OztXO1UsVTs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztVLGlCOzs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7O1MsTzs7Ozs7O1ksa0M7WSxpQjs7Ozs7Ozs7WSxvQztZLGM7Ozs7Ozs7Ozs7Ozs7O1ksa0M7WSxjOzs7Ozs7TTs7Szs7Rzs7STs7YTs7SSxPO0c7Ozs7OztRLHFCLE07USxPOztRLHNDO2dCOzs7Ozs7Z0MscUM7O0k7STs7OzZCLE87O1E7OztTO1M7USxPOzs7RzswQixTOztJLE8sMEI7Rzs7Ozs7Ozs2QixvQjs7OztROzs7UztTLE07UyxNO1M7USxPOzs7O1M7Ozs7Ozs7SztLLEc7TTtPLE07YTs7Z0I7SztLLE87Ozs7Ozs7OzZCLE87Ozs7O1EsTzs7Ozs7O0ssTzs7OztJO0k7Ozs2Qjs7USxNOzs7Rzs7STs7OzsyQjs7OztROzs7Ozs7Szs7OztHOztJO0s7Szs7OzBCOztTLDhCOzs7Ozs7STtJO0c7O0k7STs7Ozs7OEIsTzs7Ozs7Ozs7Ozs7OztLOztHO3FDLDBCO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHlDO0k7Rzs7SSw2QztJO0c7O0ksNEM7STtHOztJO0c7O0k7Rzs7STs7WTs7Ozs7Rzs7STtLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3lCO0k7SztNLE07TTs7OztZLE07Ozs7O0ssTTtJO0k7Szs7O0s7O0k7STtLO00sTTtNOzs7O1ksTTtJOzs7Ozs7Ozs7STs7Ozs7OztHOztJOzs7O007Ozs7OztPO007Ozs7TTs7OzsrQzs7O0k7TSx3Qyx1QjtLO0ksTTtHOztJO0s7SyxNO0s7SyxNO0s7O0s7Ozs7O0s7OztTOzs7OztJO0k7SztLLE07SyxhO0s7STtHOzJCLG9DO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SztLLG1COztHOztJOztPLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O0c7Rzs7O00sdUI7O00sVztLOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7OztJOzs7OztJOzs7Ozs7NEI7Ozs7OztnQjs7STtHOztJO0ssUTtLLFU7O0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OzBCLHFCOzZCLFMsZ0M7O0ksTztLLFU7Szs7SSxXO0c7O0ksTztLLFU7Szs7SSxXO0c7Ozs7Ozs7Ozs7OztJLGdEO0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJLHlCO0k7RztHO0k7Ozs2Qzs2QzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4QjtzQixXLDhCO3VCLFcsOEI7NEIsVyw4Qjs7SSxXO0c7d0IsVyw4QjsyQixXLDhCOztJOzs7SyxNO0ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Tzs7OztVO1M7OztLO00sVTtNLE87O0s7O1Esa0IsTTtRLE87OztROzs7Uzs7WTs7O2M7OztlOzs7Yzs7O1k7VztTOzs7Uzs7WSxtQjtZO2EsTztZO1ksTzs7Ozs7O1c7USxPOzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7WSxPOzs7c0IsTzs7cUI7VztRLE87a0I7a0I7Ozs7Ozs7Ozs7USxPOzs7O1E7UyxPOzs7USxPOzs7Ozs7Ozs7Ozs7USxPOzt5QixPOzs7O2M7YztHOztJO0k7OztLOztHOztJOztLLFE7STs7RyxnQzsyQixpQztrQyxxQzswQiw2QjswQiwyQjtzQiwyQjtzQiwwQjs7STtrQzt1Qjs7SSxJLFUsa0M7OzsyQjs7O0c7NkIsZ0M7O0k7OztLOztJO0c7Rzs7O0s7Szs7OzhCLE87O1M7OztVO1M7O1Msc0M7Uzs7O1M7O1U7Ozs7O0k7STtHOztJO3VDOzs7Rzs7STtHOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7STtJLE87Rzs7SSxJLGlCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtCO0ksTztHOztJO0ksTztHOztJLEksbUI7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLHdCO0ksTztHOztJO0ksTztHOztJLEksa0M7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLG9CO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSx1QjtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCLHlCO29CLFk7MEIseUI7O0k7O087O087O087O087O087O087ZTs7RzswQixlOzBCLGU7MkIsZ0M7dUIseUI7dUIsbUM7NEIseUI7O0k7SSxzQjtHO0c7OztJO0k7Ozs7Ozs7Ozs7STtJO0c7O0ksSSxnQjtJO0c7O0k7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCO0k7OztLLEksa0I7SSxJLGtCOzs7OztJO0s7SztLO0s7STs7O0ssSSxrQjtJLEksa0I7STs7O0ssSSxrQjtJLE87OztjO2M7YTs7Ozs7Ozs7O0c7MEIsa0Q7eUIscUIsMkI7O0ksSSxpQjtJO0c7O0k7SSxPO0c7eUIseUI7O0ksc0IsaUIsa0I7O0c7O0k7SSxPO0c7d0IscUQ7O0k7O08sTzs7TyxPO2UsTzs7OztJO0ssTztJO0ksVTtJLE87Rzs7STtJLE87Rzs7STtnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7VSxNO1U7Ozs7STtHOztJOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0k7Rzs7STtJO21COzs7Ozs7Uzs7Ozs7UTs7OztTOzs7OztROzs7OztHO3FDLG1CLFU7RyxZLHlDOztJOzs7O0c7O0k7STs7Ozs7Ozs7Szs7Rzs7STs7RztpQyxjOzs7Ozs7Ozs7Ozs7OzZCLGM7Ozs7Ozs7Ozs7Uzs7Ozs7OztLOztLOzs7Ozs7Ozs7O1Esc0M7Ozt3Qjs7STs7O0k7Ozs7O1Esc0M7Ozs0Qjs7STtHO3dCLGtCO3lCLGtCO3lCLGtCO3NCLGtCO2dEO0c7NEIsb0I7O0ksSztLLE07OztHOzhCLHFCOzhCLHFCO3VCLFU7MEIsVTs7STs7OztLLEk7O0c7O0k7SSxPO0c7MEQ7Rzs7STs7SyxzQjtLLE87OztHOztJO0k7Szs7O0s7O0c7MEIsa0M7NEIsa0M7MkIsa0M7MEIsa0M7O0k7STs7Szs7O00saUI7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sVzs7Ozs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7STs7OztJO0c7O0ksWTs7STtHOztJO0k7Rzs7SSxXO0k7SSxPOzBDLDBCO0c7O0ksMEIsTztpQyxPO0k7Ozs7O0s7OztJLE87RztHLGE7O0k7O0k7RztnQyxzQzs7STs7MkM7OytDOzs4Qzs7OEM7Ozs7Ozs7Ozs7O0c7RztJLGdCOzs7Ozs7O0k7O0c7O0ksSSxtQjtzQjtJOztJOzs7Ozs7Szs7Ozs7SztLOztJO0c7O0ksSTs7Rzs7SSxJOztvQztJO0c7O0ksSTs7b0M7STtHOztJOzs7Rzs0QixnRDs7STtJOzs7bUQ7Ozs7SyxPOztHOztJO0k7O00sTzs7O007Tzs7Ozs7OztHOztJO0k7O00sTzs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0c7NEIsd0I7O0k7O0k7Rzs7SSw0Qzs7O2U7O0k7Ozs7O08sTTtNOzs7Ozs7SyxvQzs7Szs7Ozs7O0ksd0I7a0M7O0k7Ozs7dUM7O0k7Ozs7TSxxQjs7Ozs7O0ksTzs7O2M7Ozs7Ozs7OztnQzs7O2M7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHLHFCO0cscUI7RywyQjs7SSxPOzs0QjtHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLDBCO3VCLDBCOzRCLDBCOztJLE87OzRCO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxPOzs0QjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXO0ksTzthOzs7Z0I7OztpQixPO2dCLE8sa0I7ZTs7RztHO0k7OztRLE07TztJOzs7Ozs7Ozs7OzsyQixPLDJDO21DLDJCOztJLE87Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7SSxZO29EO0k7Rzs7STtrRDtJO0c7O0k7MkU7STtHOztJOzs7Ozs7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087O007O0s7O0k7Rzs7SSxRO1U7SSxJLEssNEIsUTs7OzswQjs7UTs7O1EsTTs7STtHOzBCLE8sbUM7O0k7Rzs7SSxXO0ksVztJLFc7SSxPOzs7YyxrQixROzhEO2M7YTs7Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTs7STtHOztJLFk7Ozs7OztRLGdCLG1COzs7NEI7OztJO0c7O0k7Z0I7SSxtQixVOzs7SztNLFk7TSxPOzs7STtHOztJO0ssTztLO087OztVLG1CLFE7Ozs7WSxPOzs7NEMsTzs7VTtTOzs7SyxPO0ssUTs7Ozs7Ozs7USxNOztJO0ssTztLO087OztVO1UsTztTOztrQjs7STtHOztJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7O08sTzs7O2lCO2lCLE87Z0I7OztlLE07O0c7O0kseUMsTyxpQjtHOzs7O3FDOzs7TTtNOzs7Ozs7O0k7O0ssTzs7O0ksTzswQyxPLG9COzs7STs7SyxXOzs7STtZOzs7ZTs7OztnQixPO2U7Yzs7OztJLDhCOzs7Tzs7O08sTzs7NEIsTyxvQjs7OztPLE87OztpQjtpQixPO2dCOzs7OztJLFc7SSxPO0c7O0k7OzBCLE87OzBCLE87OzRCLE87OzBCLE87OzJCLE87OzBCLE87bUMsTzs7OztJO0c7O0ksa0IsTztJO0ksa0IsTztJOztHOztJO0ksa0IsTztJOztJLHlCO0ksa0IsTztJLE87RzswQztHOztJLG1CLE87SSxPO0c7O0ksaUIsTTtJO0k7SSxrQixPO0k7O0c7O0ksa0IsTTtJO0k7O0c7O0ksWTs7SSxPOzs7STs7MEIsTzs7O087TyxPO2lDLE87Ozs7STs7O087TyxVO087TyxPOzs7TztPO087OztVO1UsTztTOztPLE87OztpQjtpQixPO2dCOzs7O087TyxPOzs7O0ksMkI7Rzs7SSxlO0ksWTs7Ozs7OztRLG9CLE07USxPOzs7a0I7a0IsTztpQjs7Ozs7OztLLE87O0k7Rzt1QixTOztJO0ssUTs7Ozs7SztPOzs7VSxpQyxROzs7O1c7O1ksTTtrQjs7Vzs7OztZO1k7WSxPO2tCO1U7Uzs7STs7Ozs7MkI7OztJO0ksTztHOzs7OztrQzs7Ozs7UTs7Ozs7UyxNLHFDO1MsTTtRLGM7O3lCLFc7OztRLGdCOzs7a0IsVztROzs7O1MsdUI7USxXOztROzs7OztTLE07UyxNO1EsZ0I7O1Esb0IsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7UTs7Z0I7OzttQjttQixjO2tCOzs7Ozs7SSxXOztJLE87Rzs7SSxJLGdCLE07STs7O087TyxPO007O0k7RztHOzs7O3FDOzs7OztNLFUsNkI7Ozs7Ozs7RyxXOztJO3NDLHNCOzs7Rzs7STs7O0c7O0ksNEI7Ozs7SyxNOzs7SSxHLG1DOztJO0c7O0k7OzsyQjs7O0c7Rzs7SSxZOzs7O0ksZ0Q7STtHOztJLDhCOztJO0c7O0ksOEI7OztLLE87OztJLE87Rzs7STs7aUI7O0s7TTswQztLOzs7O0c7O0k7STs7Ozs7K0I7OztHOztJO0k7OztROztROzs7Rzs7STtJO3dCOzs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7c0Msb0I7OztHOztJLE87OztjO2M7YTs7O0c7O0ksTzs7O2M7YyxZO2E7OztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtJOztHOztJO0k7STs7eUIsa0Isc0I7O0ksTzs7Z0Msa0Isc0I7O0c7O0ksTztHOztJLFk7c0U7SSxNO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJLEksVyx5Qjs7OzJCLE87OztHOztJO2M7O2dCO2dCO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUzs7Ozs7Ozs7O0k7Rzs7STtjO2M7O2dCO2dCO0c7O0ksYzs7cUI7SSxTO1k7OztLO00sSzs7YTs7Vzs7O0k7Z0IsTztLLFk7Ozs7TTs7Szs7O0c7O0ksVTtJO21CO0c7O0k7Ozs7SyxPOztJO0c7OztLOzs7Ozs7O29COzs7Ozs7O3NCOzs7b0I7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7UyxPOzs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07Ozs7USxPOzs7OztrQjs7Ozs7USxPOzswQzs7O1EsbUI7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7USxPOzs7OztrQjs7OzsyQixPOztROztTO1M7Ozs7eUI7Ozs7Ozs2QjthOzs7Ozs7O2dCOzs7Ozs7O1EsTzs7OztzQzs7OztRO1M7O1UsVzs7O2U7O1M7VTs7VSxjOztXLG9CLFU7Ozs7OztVO1c7WTs7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthOzs7Ozs7OztZLFE7O1ksK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2UsVzs7O2U7O2tCOzs7ZSxXOzs7O2M7Ozs7O3VCOztXOzs7Vzs7Ozt3QjtTOzs7OztVLE87Ozs7MkIsTzs7O1EsTzs7Ozs7a0I7Ozs7OztTLE87Ozs7SyxPOzs7O21DOzs7O0s7Szs7Ozs0Qjs7Z0M7Z0I7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7bUI7O3NCLE87O0s7Szs7OztxQixPLHlDO3dCLE8sNEM7RyxnQztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kscUI7SSxPO0c7cUIsTyx5QztHLDZCOztJLDRCOzs7SyxPOzs7SSxPO0c7O0k7Ozs7USxPOzs7Ozs7c0M7Ozs7USxPOzs7Ozs7Ozs7STs7O0k7O0s7SztLO0s7SztLO0ssTzs7STs7O0k7O0ssTzs7Ozs7ZTs7OztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7UTtRO1E7USxPOzs7USxPOzs7OztrQjs7OzswQjs7dUIsTzs7MEM7O1E7Ozs7Uzs7WTs7O2MsTzs7WTs7OztZOzthOzs7dUIsTztzQjs7Ozs7WTs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtROzs7Vzs7OztXLE87O1U7O1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJLE87Ozs7Ozs7MkI7O2U7ZTs7Ozs7Rzs7Ozs7d0I7Ozs7TSxPOzs7Ozs7OztnQjs7Ozs7Szs7a0I7Ozs7Ozs7SztlOzs7aUI7aUI7STtJLE87Ozs7Ozs7O2M7Ozs7Ozs7bUI7O3NCLE87O0s7SztLOzs7OztJLFU7O0s7SztLO0s7SztLLE87OztJO0ksTzs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Yzs7Ozs7Ozs7OztLO0ksMEI7Ozs7Ozs7OztJLE87OztJLFU7dUIsTywwQztJLE87Ozs7O2M7Ozs7O0k7Ozs7Ozs7VyxVOztXLE87Ozs7O3FCOzs7O08sTzs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7TyxPOzs7Ozs7O2lCOzs7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7O0c7STs7STs7O1EsTztPOztJOzt1QixPLCtDOztJOzs7USxPO087O0k7OztRLE87Tzs7STs7O1EsTztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dEO0c7O0k7OztNLG9DOzs7OztLLGE7SyxPOzs7Ozs7Ozs7Rzs7O0ssWSxPO0s7OztNLE87SyxPOzs7O0ssNEI7Ozs7OztPLE87Ozs7Ozs7Ozs7SztNLFE7OztLOzs7Ozs7Uzs7O1U7Ozs7Ozs7TTtPLE87TztTOztNLE87Ozs7STtHOztJLG1DOzs7TyxPOzs7Ozs7OztPLE87OztPO2lCOztpQjs7O08sTzs7OztJLFk7O21CLE87Ozs7Szs7O007OztLOzs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO00sTzs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0k7SyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7Ozs7O2dCLE87ZTs7Ozs7aUI7Ozs7Ozs7c0I7Ozs7Ozs7VyxPOzs7OztxQjs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1csTzs7O3FCO3FCLE87Ozs7Ozs7O29COztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXOzs7Ozs7cUI7Ozs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQixPOzs7Ozs0Qjs7O2lCO2MsTzs7Ozs7Ozs7O2MsTzs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O087OztROztXLFk7O1c7VyxPOzs7cUIsTztvQjs7O08sTzs7Ozs7Ozs7Ozs7O2lCLE87OzsyQixPOzBCO2dCOzs7OztJOzs7OztJOztlOzs7Ozs7aUI7Ozs7ZTs7STtjOzs7Ozs7Z0I7Ozs7OztjOzs7Ozs7O0c7OztLOzs7O00sTzs7Ozs7Z0I7Ozs7O3dCLE8sMEM7Ozs0Qjs7Ozs7O21DOzs7O0k7dUIsTywwQztJO0k7Szs7O0ksTzs7Ozs7Ozs7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOzs7Szs7O007OztLOzs7Ozs7O1E7OztTOzs7Ozs7TTtPLE87TztNOzs7Z0I7Ozs7OztJOztLOzs7O0s7OztjOzs7O0k7OztPLE87Ozs7Ozs7Ozs7O2lCOzs7OztRLE87NkIsTzs7USxPO08sWTs7USxPOztPLE87OztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0k7STtZOzs7OztHOytCLG9DOztJO0k7WTs7Ozs7Rzs7STs7OztLLE87STtHO2lDLHNDOztJLDhCLE87STtHO21DLHdDOzBCLHNDO2dDLDZDOztJO2dDO2tDO0k7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0c7O0k7OztnQjs7Ozs7O0ssTztJO0c7O0ksSSxXLHNDOzs7Ozs7Uzs7dUM7O1MsZ0M7UztpQixPOzs7O0c7O0ksSSxVOzs7Ozs7Uzs7dUM7aUIsTzs7OztxQixPOztJO0c7O0ksSSxVOzs7Ozs7UTs7O1E7O1EsTzs7O1EsVTs7Ozs7Ozs4Qjs7UTs7OztLLE07O0k7Rzs7SSxJLFU7Ozs0Qjs7OztHO0c7SSxTOzs7Ozs7OztvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7O0ksVztJO0s7OztRLHVDOztZLGtDOzs7OzRCOzs7USxrQiwyQjs7OztTO1UsTztpQjtRO1E7O0k7SyxLO0ssVzs0Qjs7OztLLEksTyxrQztJOzs7O00sWTs7OztROzs7O1M7Vzs7OzthOzs7OztNLE07Ozs7O1M7OztVO1k7OzZCOzs7O1UsSSxVOzs7Ozs7Ozs7Ozs7Ozs7ZTs7O2tCOzs7cUIsTzs7b0I7Ozs7bUI7c0I7b0IsTTs7bUIsVzs7OzsyQzs7dUI7O3dCLE87d0IsTTt1Qjt1QixJLE8sNEI7MEI7d0IsTTs7dUIsWTs7O3dCOzs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7OzswQzs7MEIsTTs7Ozs7d0IsWTs7Ozs7MEIsSzsyQjs0QixVOzs7Ozs7OEI7Ozs7Ozs7d0I7Ozs7K0I7O3VCO3VCOzttQjtvQixPO29CLEk7bUI7bUIsYTttQjttQjtrQjtrQjtpQjs7Ozs7O1M7OztVO1U7OztVOzs7VztZO2M7OytCOzs7Ozs7Ozs7OztTLFM7Ozs7OztTOztVLE87VSxROzs7VTs7OztZOzs7Ozs7Ozs7Vzs7WSxPO1c7OztZO2EsTzthLGM7Ozs7OztZOzs7Ozs7Ozs7ZSxVOzZCOzs7Ozs7WSxNOzs7O1U7VTtXO2E7OzhCOzs7OztXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7O1U7WTs7O2U7ZTtjOzs7Ozs7O1E7Ozt5Qjs7O0k7STtHOztJLE87O2tDLGlDO0c7O0k7O0s7SztLO0k7Rzs7STs7SzthOzs4Qjs7OztJO1k7OzZCOzs7O0k7Ozs7SztLOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7NkI7Ozs7Ozs7Ozs7WTs7O2U7O2dCO2dCO2dCO2tCOzttQzs7Z0I7ZTs7Ozs7O0k7WTs7NkI7Ozs7Ozs7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7STs7Tzs7OztRO1E7VTs7MkI7O1E7Tzs7Tzs7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtZOztRO087O087Ozs7UTtPOzs7O0k7O0s7Szs7Ozs7OztJLEksOEI7STtZOzs2Qjs7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOztJOztLO0s7O0s7SztLO0k7WTs7NkI7Ozs7Ozs7OztHOztJLE87OztjO2E7Rzs7SSxPOztrQywrQjtHOztJOztLO0s7O0k7Rzs7SSxPOzs7YzthO0c7O0k7O0s7OztLO087O3dCOztLO0s7Tzs7d0I7O0k7Rzs7SSxPOzs7YzthO0c7O0ksTzs7O2MsVTtjLE87YTs7O0c7O0k7STtHOztJO0s7SztLO0k7Rzs7STtJO0c7O0k7O3lCOzswQixXOzs7O1E7Ozs7UztROzs7TzttQzs7Rzs7STs7O08sSSxVOzs7Ozs7WTs7c0M7b0IsTzs7OztPOzswQjs7Ozs7UTs7OztROzs7O1MsTztTO1E7O087OztRO087bUM7Ozs7STs7eUI7OzBCOzs7Tzs7Ozs7OztPO21DOztHOztJLGdCO0k7Rzs7SSxrQixzQjtJO1k7OzRCOzs7OztHOztJLGU7STtHOztJLFk7OztLLE87Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO2E7Rzs7STs7SyxPOzs7STtHOztJOzs7O0s7Ozs7Ozs7O1c7WSxNO1ksTTtXLE87VTs7Ozs7O1MsVTtTLE87UTs7Ozs7OztROzs7OztTLE87Uzs7Ozs7UTs7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxPO1M7Ozs7O1E7Ozs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7O1MsTztTO1M7Ozs7OztROzs7Ozs7UyxRO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7SSxPOzs7YztzQjs7O3lCOzs7O2E7OztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Tzs7O087OztPOztHOztJOzs7Tzs7O087OztPOzs7Ozs7OztPOzs7Ozs7OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7Rzs7SSxvQjt3QjtJOzs7Ozs7O0s7O3VCO0s7O3VCO0k7OztlOztnQjs7O2UsTzs7O3lCOzBCOzRCOzs0Qzs7MEI7eUI7d0I7Ozs7Ozs7O0c7O0ksTzs7O2M7YTtHOzZCLE8sdUM7O0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7RztJLFM7O0k7O0c7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJLFc7SSxZO0ksYTtJLGE7SSxZO0ksWTtJLFc7O0ksTztHOztJLE87Rzs7SSxPO0c7RztJLGlCO0ksYTtJLGE7O0ksTztHO0c7SSxjO0k7TTtJLGtCO0k7STtJO0k7STtJO0k7STtJO0k7STtJOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0ksVTtJO0c7RztJO0k7STtJO0k7STtJOzs7Ozs7Ozs7OztJO0s7OztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzRDLFc7TSxRO00sTTs7O007Ozs7Uzs7Ozs7Ozs7Ozs7O0ssTzs7O0s7TSxNO00sTTtNLFU7SyxPOzs7O0k7SSwwQix1QjtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O2E7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2U7Yzs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7RztJO007O3FCLFcsK0I7O0ksbUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsVzs7OztNLE87O0k7STtJOzs7O0ksTztHOztJOzs7OztZLHdDLFk7STtLOztNLDRCO007TSxNO3FCOzs7STtHOztJO0s7OztJLHlDO0k7O0ssOEI7SyxjO0ssUTtLLE07OztLLE07Szs7Ozs7OztROzs7Ozs7Ozs7STs7OztHOztJOzs7OztJO0s7Ozs7Ozs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7Ozs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7O1U7Ozs7OztLOztHOztJOztLOzs7TTtNO007Szs7O1E7USxPOzs7Tzs7Ozs7UyxZOzs7Ozs7Ozs7O1M7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztVO1c7O1c7Ozs7UztVLFk7VTtVOzs7Ozs7Ozs7Ozs7OztVOzs7Ozs7YTs7Ozs7Ozs7OztTOztLOztJO0c7O0k7O0s7OztNO007TTtRO1U7OztTLFk7Uzs7O1U7Ozs7O1U7O2E7Ozs7Ozs7Ozs7O1M7UztTOztLOztJO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLLE87SyxRO0k7Rzs7SSxTO0k7SztlO0s7TTtNO007O0s7Szs7TSxNO0ssRztNLE07Szs7UTs7O0ssTTs7Ozs7OztNO00sTTs7SztLLE07O0c7O0k7STtJO0k7SyxNO0s7STtJO0k7Rzs7STs7Tyx5QixNO08sTzs7Tzs7O1EsTTtPLE87OztPLDJCLE07TyxPOzs7Rzs7O00sdUI7O00sVztLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzt1QixNLGdEO0c7STs7O1E7O1M7VTtXLE07VyxNOzs7Ozs7OztTO1U7OzttQjs7O1UseUI7O1E7TztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SztLO0ksVztHOztJOzs7Ozs7STs7O0k7O0k7Rzs7STs7SztPOztnQyxzQzs7O0ssTTtJLE87Ozs7d0I7Ozs7OztLOzs7OztJLEksVTs7OzJCOzs7Yzs7STs7O0k7OztLLFc7O0s7SyxPOztJLE87RztnQyxrQjs2QywrQjs7STtLLE07SztPOzs7eUIsTyxpQjtJO0k7Rzs7O0ksTzs7O2MsVTs7YyxPO2E7Ozs7O0k7Ozs7SztLO0s7SztJLHNCO0k7OztPLDhCOzs7O007OztLLEk7Ozs7O007OztJO0k7Rzs7STtJLHVCLE07SSxJLFU7Ozs7NkIsTTtLLFk7OztNO007TyxLO087TTs7O007SyxNOztjLE07OztLLE07STtHOztJO0ssVTtLLFc7STtJO0ssTTtLO0ssSztJO0k7Rzs7STtHOztJOztLLFU7O0s7SyxVO0s7TSxPOzs7Z0I7aUI7aUI7aUI7Ozs7O2tCO2tCLE87OztrQjs7bUI7cUI7bUI7a0IsTzs7Ozs7aUI7O29COzs7Ozs7cUIsTTs7dUI7Ozs7Ozs7Ozs7O29CLE07Ozs7Ozt1Qjs7aUI7aUIsTzs7ZTs7Ozs7STtHOztJO0ksSSxXOzs7O00sTTs7O0ksVyxNOztJO0c7O0k7OztLLE07SSxPOzs7O0ksTzs7OztJLE87Ozs7SSxPOzs7STs7Ozs7SyxRO0s7STtHOztJO0ksTzs7O2lDLE8sK0I7O2M7Ozs7ZTtpQjs7Ozs7b0IsTzttQjtlOzs7Ozs7Ozs7ZTtjOzs7OztjOzs7aUI7OztnQjs7YztjO2E7Rzs7STtLOztROzs7Ozs7UyxNO1EsTzs7Ozs7Ozs7Ozs7UTs7Ozs7UyxNO1MsTTtRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7O007RztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7Ozs7OztJOzs7Ozs7Ozs7RztzQyxvQjs7STs7OztzQztJO0c7RztJLG9CO0ksYzs7SSw4Qjs7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7OztPLFc7O3lDLFc7OzJCLFk7OztPLFk7OztPLFk7OztPLFk7OztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O2lCLE07Ozs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNO087Uzs7O1k7Ozs7O2lCLFcsTzs7aUIsTztnQjs7O1k7Vzs7Z0I7Ozs7OztJO0ssTztLO087O3lCLHFCLDBCOztJLE87RztHOztJO0ksVztHOztJO0k7SyxJLFcscUM7Ozs7O29DLE07OztPLE87Ozs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7UTs7O1c7VyxjO1U7O0k7SyxPO0s7Tzs7O1U7VTtTOztJLE87Rzs7STtLLE87SztPO1M7OzJCLG1CLGU7OztLO21DOzs7TSxPOzs7K0I7Ozs7SztJO0ksTztHOztJO0k7O0s7TTtROzs7VyxPLGM7VTs7O007bUM7Ozs7TTs7UztXOzs7YyxPO3VEO2E7Ozs7Ozs7Ozs7OztVO1UsTyw4QjtTOzs7Ozs7Rzs7STtJOztLOzswQixPLHNDOzs7bUM7Ozs7TTs7O1M7VSxhO1UsMkI7UyxPLGM7UTs7Ozs7Ozs7OztVO1UsTyw0QjtTOzs7OztHOztJO0k7SztNO1E7O21DLG9COzs7TTs7Ozs7O0ksTzs7O2MsSSx1QixjOzs7c0M7OzthOztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQzs7STs7Ozs7Ozs7RztHO0k7OztRLE07Tzs7STs7O1EsTTtPO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLO007UTs7bUMsb0I7OztNOzs7Ozs7STtLO087OztVLEk7Ozs7O1k7Ozs7OztVLFc7YyxxQixjOzs7a0M7OztTOztLLE87SztJLE87Rzs2QixTOzRCLGdCOzZCLGdCO0c7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7d0IsaUQ7O0k7SyxtQixPO0ssTzs7O0ksTzs7RztJOztpQyx1QjtnQyxpQztxQix1Qzs7SSxXO0ksaUI7Rzs7SSxPO0s7SSxpQjs7Ozs7TTtPOztRLGdDOzs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7OztHOztJOzs7WTs7Rzs7STs7SztLO0s7SyxLO0s7SztPOzs7VSw4Qjs7VTtTOzs7SyxPO0s7SyxjO0ssTztLLGtCO0ssWTtLLE07STtLOztNLFc7Yzs7O0k7Ozs7Ozs7Ozs7O0k7OztHLGdDO0c7SSxpQjs7Ozs7SSxPO0c7O0k7Rzs7SSxPO0c7O0k7STtLO0c7O0ksTzs7Rzs7SSxPO0c7O0ksTztHOztJO0k7STtJO0k7STtHOztJO0k7STtJO0c7O0k7STtJO0c7O0ksWTs7OztJLE87O0c7O0k7dUI7O0k7Rzs7STtxQjtJLEksVyw2Qzs7OztLLEksUSxrQzs7Ozs7O29COzs7Ozs7SyxZO0s7Szs7Rzs7STs7USxJOzs7Syx3Qjs7OztLLHFCO3VCLE07O0k7Rzs7STs7eUI7O08sOEI7TyxPOztPOzs7UTtRLE07TyxPOztlLE07O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPO2UsTTs7Rzs7STtLO0ssTTtJLE87Rzs7STs7TyxrQjswQixNOztPOztPLDhCO08sTztlLE07O0c7Ozs7SyxNO0k7O0ssTztLO08sMkM7Szs7O0s7Szs7SSxNOzs7SSxJLFc7Ozs7Ozs0Qjs7UTs7O1M7USxPOztRLE07OztRO1M7O1U7VTs7VTs7VzthOzs4QiwrQjs7VTs7UyxNOzs7Ozs7Vzs7O1k7WSxRO1ksTzs7VyxNO21CLE07O1E7OztJO0kscUI7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs4QixpQztxQyxpQzs7STs7eUI7O08sOEI7TyxtQjtlLE07O0c7O0k7O0s7OztJO0c7O0ksTztHOztJO0c7O0k7Rzs7STs7TyxrQiwrQjtxQixNOztPOztPOzs7UTtnQjtPO29CLE07USxxQztvQzs7OztlLE07O0c7O0k7O087O1EsTzs7OztPOzs7UTtRLFU7O2UsTTs7Rzs7SSxPOzs7Yzs7aUI7O2tCLE07O2lCOztpQjs7Ozs7aUI7aUIsTzs7aUIsSTs7O2tCOzt1QjttQixXO21CLE87Ozs7O2tCLFc7a0IsTzs7O2tCLE07OztpQjs7aUI7O2lCOztpQjt5Qjs7OztHOztJLFksTzs7STs7RztJLG1COzs7OzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7TztlLE07Ozs7STs7O00sc0I7OztPO1EsTztRLE87TztRO1MsTztvQjs7O2dCOzs7Ozs7O0s7Ozs7OztNOztxQzs7Ozs7TTs7OztHOztJLEksK0M7Ozs7O00sTTs7Szs7Rzs7STs7Tzs7Tyw4Qjs7O08sTTs7Tzs7O1E7OztHOztJO0k7Szs7O00sSTs7Ozs7Ozs7Ozs7Szs7Rzs7STs7TyxrQjtPLE87O087OztRO1EsUztPLE87O08sZ0M7TztlLE07O0c7O0k7Rzs7SSxJLDZCOzs7O0s7O1UsaUM7O0s7O0ksTTtHOztJLEksNkI7Z0IsTTs7STtHOztJO2dCLE07O0k7Rzs7STtJLE87Rzs7STtJOzs7O1EsSSxtQyxjOzs7Z0M7Ozs7UTs7O0c7O0ksVztJO0ssbUI7Szs7TTs7Ozs7O0s7TTtPLE87TyxPOzs7Ozs7TTtPLEs7TyxPO007OztLO0s7STtJLEksZ0I7STtLOzs7Ozs7Ozs7Ozs7c0I7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO0ksd0MsTyxpQjtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLLG9DLHVCOzs7TyxZOzs7OztPLFk7Tzs0Qjs7Tzs7d0IsaUQ7O08sTzs7O2lCO2dCOztNOzs7SztLOzs7ZTtlO2dCO2lCLFU7aUI7bUI7NEI7O2dCOztlLG1COztlO2M7O0c7O0k7Ozs7Rzs7SSxPOzs7K0IsTyxxQzs7Rzs7SSxrQzt1Qjs7STtLO00sTztNLEk7TSwwQjtLOzs7OzRCOzs7OztJOztPOztRO1EsK0I7TyxPOzs7aUI7aUIsK0Q7aUI7Z0I7OztPOzs7UTsrQixnQjtRO1U7OzthOzs7TyxPO2U7O0c7OzBCLGdCOzs7Ozs7eUM7OztPOzs7UTtRO1U7OzthOzs7ZTs7OztJLE8sMkM7Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztPO1Esb0I7UTtROzs7VztXO1csTztVO087OztVO1U7O2E7OztjLFM7Yzs7OzswQjs7Ozs7YTtjLE87YyxZO2M7YztjLE87b0I7OzthOzs7YyxhO2MsTzthOzs7Ozs7Ozs7aUI7O2tCLE87a0I7b0I7c0Q7aUI7OztvQjs7bUI7Ozs7O2lCOztrQjtvQjtrQjtvQjtzRDtpQjs7O29CO3FCLFk7cUI7OzttQjs7OzthO2MsTztjLFk7YztjO2MsTztvQjthOztjO2dDOzs7Yzs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7OztjLFE7YyxRO2M7YyxPO2MsWTtjO2M7K0I7OzthOzs7O2MsVztjLE87YTs7O2UsTTs7O3dCOzs7O2E7YyxTO2MsTztjLFE7Yzs7Ozs7Ozs7OztjO2M7YyxPO29COzs7OzthOzs7YyxXO2M7Z0I7YyxPO2MsVTtjO2M7YyxPO29COzs7O2E7OztjLFM7YztjLE87YyxVO2M7YztjLE87b0I7OzthOzs7YyxTO2MsTztjLFU7YztjO2MsTztvQjs7O1M7O087O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0s7SztrRCxzQjtLO0s7Ozs7cUI7OEI7OztNLE87OztnQjs7Z0IsVztnQixPO2U7Ozs7OztHOztJOztLLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLGdEOzs7O2lCLDBCO087Ozs7Ozs7Ozs7Rzs7STtJLGlCO0k7STs7O087TTs7STtLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtJO0s7Ozs7bUIsZTs7SSxJLHFCOzs7Ozs7OztROztTLFM7UztXOzs7YztjOzs7OztpQjs7O2lDOzs7aUI7a0I7bUIsVTttQjttQjttQjttQjttQjttQixXOzttQjttQjs7Ozs7c0I7Ozs7Ozs7Ozs7OzttQjttQjs7OzttQzs0Qzs7O29CLE87Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7OzhCLE87Ozt3Qzs7a0Q7O3VDOzs2Qjs7Ozs7Ozs7OztnQjtjOytCO2M7Ozs7Ozs7Ozs7ZTtjOzs7Ozs7Ozs7Ozs7O2E7Ozs7OztZOzhDOzs7O1E7O1M7VztTO1c7OztjO2M7Ozs7O2lCOzs7aUM7OztpQjtrQjttQixVO21CO21CO21CO21CO21CO3lCOzttQjttQjs7OztvQzttQjtvQjtvQix1Qjs7O29CLE87Ozs4Qjs4QixPOzs7d0M7O2tEOzt1Qzs7NkI7Ozs7Ozs7Ozs7Z0I7YztjO2M7ZSxZOzs7Ozs7Ozs7OztlO2M7Ozs7Ozs7Ozs7Ozs7YTs7O1M7O1k7OEM7Ozs7O0k7STtJOzs7Szs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOztLLE87SztJO0k7STs7Ozs7Tzs7O3VCOzs7TztROztTLGU7UztTO1MsVzs7UztTOzs7OzBCO1MsTzs7O21CO21CLE87Ozs2Qjs7dUM7Ozs0Qjs7a0I7Ozs7OztPO007STs7O0s7Ozs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJLHVDO0k7OztPO007O0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7Ozs7STtJO0s7OztLOzs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7Ozs7SztvQyxlOzs7bUMsZTs7OztJO0ssTztLO0s7SztJOzs7STtLO0ssUTtLOzs7STtHOztJO0ksNEI7Rzs7SSxZO0k7Rzs7STtLO0s7STtHOztJO0k7Rzs7STtHOztJO0k7Rzs7SSxvQixPO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJLFEsK0I7SSxPO0c7O0k7SyxLO0s7SzswQztJO0c7O0k7SyxLO0ssZ0M7STtHOztJO0ssSztLO0ssUTtLO0k7Rzs7SSxTO0k7OztHOztJO0ssSztLLFE7Syw2QjtJO0c7O0k7SyxLO0s7SyxvQztJO0c7O0k7SyxLO0ssK0I7STtHOztJO0c7Ozs7O0ssVzs7Ozs7O1Msa0I7Uzs7VSxRO1MsVztRO0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7O0k7SyxPO0s7OztJO0c7O0k7Szs7O0k7RzsrRTtHOzs7O0s7O0c7RztJOztHO0c7STs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7O0c7STs7O0k7STtHOztJO0ssSzs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SyxLOzs7Szs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSTs7OzRCOzs7cUI7O3VCOzs7Szs7Ozs0QixPLGlCLHFCOzs7SztJOztLOzs7OzRCLE8saUIscUI7OztLO0k7STtLO3lCLHlCO0ssMkIsd0I7Syx5QiwwQjtLLHdCLHlCO0ssMkIseUI7SywwQiwwQjtLLDBCLHlCO0ssMEIsMEI7STs7Ozs7Ozs7Ozs7Ozs7Rzs7O0s7TSxNOzBCOztLLEcsOEI7SyxNO0k7SSxJOzs7NEI7Ozs7Szs7O00sRzs7TyxXOzs7SyxNO0k7O0s7OztNLEc7O08sVzs7O0ssTTtJO0k7Ozs7SztLO0s7SztLO0s7SztJOzs7Ozs7Ozs7Ozs7OztHOztJLHFCOztLLE07STtHOztJOzs7O0s7O2U7ZTtLLGM7SyxpQjtLLGlCOzs7O0s7TTs7O1M7O3NDOztRO0s7TTs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztpQjs7Ozs7OztXOzs7Ozs7UTtLOztJOzs7STtLO087SyxLO0s7O0ssTTs7STtHOztJLEcsZ0Q7SSxjO0ksTztHOztJO0ssTztLLE87SztPLFc7SSxPO0c7O0k7STtJO0ssTztLLE87SyxPO0s7Tzs7UztLLFc7Szs7STtJO0c7O0k7MkIsVztHOzsrQiw0QztJO0c7Rzs7O0k7TTs7Ozs7VTs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOztJLE87Ozs7NkIsTywwQjtHOztJLGtCO0ksTTtHOztJLFU7O0k7SSxPOzs7YztlOzs7b0I7ZSxPO2UsTztjLE87YTs7Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVOztJO0ksVztJLE87Rzs7SSxVO0ksVztJLE87Rzs7SSxVO0ksb0I7OztLLEksVzs7Ozs7O0s7O0ksVztJLE87Rzs7SSxVOzs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJOzs7TSxZOzs7Tzs7O1EsSSxXOzs7Ozs7UTs7Tzs7Tzs7Ozs7TSxNOzs7O0k7Rzs7SSxVO0ksYztJOzs7SztNLFc7Ozs7Ozs7Szs7O0c7O0k7Rzs7STs7O1MsSTs7O007TyxJLFc7Ozs7Ozs7Ozs7Ozs7STtLLGtCOztLOzs7Ozs7Szs7SSxJOzs7O007OztJO0k7Rzs7STs7Yzs7O2dCOztpQjtpQixPO2dCO2dCO2U7OztHOztJOztPOztROzs7Tzs7Tzs7O1E7OztPOztPO1E7Ozs7UTtVOztPOztHOztJO0s7OztLOzs7O007O0s7OztrQjs7STtHOztJOzs7Szs7O007OztNOzs7O0k7SztPOzs7VTtVO1M7O0s7Ozs7O0s7Ozs7OztPLHVCOzs7Ozs7Ozs7Ozs7Ozs7OztZO007Ozs7Ozs7Ozs7O0s7STs7O2lCLE87OztNOzs7Tzs7Ozs7TTs7Szs7OztNOzs7OztNO1E7Ozs7Ozs7TTs7Ozs7Rzs7STs7Tzs7UTs7O1EsTztPOztPOzs7UTs7O1EsTztPOztPO1E7Ozs7UTtPOztHOztJO0s7OztJLEksVTs7OztNOzs7STtJO0k7Rzs7STs7O08sSTs7OztTOzs7Ozs7UTtROztPLHVCOzs7O1c7O1c7bUI7O087Ozs7UTtPOztPOzs7UTs7O08sSSxZOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7Ozs7OztPOzs7O087OztROzs7TyxJLFU7Ozs7Ozs7TztPOzs7O08sTTs7O0k7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksVTs7OztTOzs7TztPO087O08sTTs7Rzs7STtLOzs7SSxpQjtHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxhOzs7O1M7OztPO087Tzs7TyxNOztHOztJOzs7TyxJOzs7O1M7Ozs7TztPOztPOzs7UTs7O08sSSxjOzs7O1M7OztPO087Tzs7TyxNOztHOztJOztPLGdCOztpQjs7O21COztvQjtvQixPO21CO21CO2tCOzs7Ozs7Ozs7O1EsSSxhOzs7Ozs7O1MsTzs7OztvQjttQjttQjtrQjs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7UyxPOzs7O29CO21CO21CO2tCOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFc7SSxtQjtJOztLLFE7O0ssTzs7STtZLDBDLGlCO0ksTyxXO0c7c0Msa0M7cUMsa0M7dUMsa0M7d0Msa0M7c0Msa0M7dUMsa0M7Ozs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Ozs7STs7OztJLGlCO0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7OztJOzs7O0ksSTs7Ozs7OztPOzs7OztJOzs7O0ksc0I7Ozs7SSxJOzs7NEI7Ozs7O0ssTzs7OztnQjtlO2U7Yzs7O0k7Ozs7SSxJOzs7Ozs7O087Ozs7O0k7Ozs7SSxzQjs7OztJLEk7Ozs0Qjs7Ozs7SyxPOzs7O2dCO2U7ZTtjOzs7STs7OztJLEk7Ozs0Qjs7Ozs7Ozs7O1M7O1M7aUI7O0s7O0ksb0IsZTs7O0s7Szs7STs7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7Szs7O2U7ZSxPO2M7Yzs7STs7Szs7O0s7eUI7SSxvQixPO0ksTzs7O2MsTyw0QjthOzs7Rzs7STtLOzs7TTswQjtLLG9CLE87SyxPOzs7ZSxZOztlLE87Yzs7OztJLFk7NEIsTyx5Qjs7STtLO007UTs7O1cscUIsTztVOzs7TTtnQjtLOzs7O007UTtVOzsyQix3Qzs7Ozs7O0c7O0k7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7OztJOztLOzs7Szt5Qjs7SSxPOzs7YyxTO2MsTzthOzs7Rzs7O0ssZ0I7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7NEIsTywyQjtzQixhO3VCLGM7STtLO0c7O3NCLGE7dUIsYztJO0s7Rzs7a0MsTyxpQztzQixhO3VCLGM7STtLO0c7O0k7SztLLE8sdUI7STtzQixhO3VCLGM7STtLO0c7O21DLE8sa0M7c0IsYTt1QixjO0k7SztHOzs7SyxPO0k7c0IsYTt1QixjO0k7SztHOztJOzs7OztVO1U7b0I7OztzQjsyQjs7d0I7O1M7OztJO0s7SztNLEcsd0M7O087OztRLE87TyxHO1E7UyxPO1MsUTs7Ozs7O007MkIsZ0M7O0k7STs7O0s7Ozs7OztLO087OztVLEksSztVLFc7Uzs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxPO0c7RztJLFc7SSxtQjs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPOztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssVztLLE87STtJOzs7TyxPOytDLHFCOzs7TyxPOytDLDRCO2U7O0c7O0ksTzs7OztjLFc7YyxPO2E7Rzs7STsrQyxzQjs7Rzs7STsrQyxzQjs7Rzs7STs4QyxzQjs7OztHOztJLDZDLHlCOztHOztJLHVDLHlCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOytDLHNCOztHOztJOztlOztnQjtlO2M7O0c7O0k7SyxPOzs7Tzs7O1EsTztPO087a0I7cUM7TyxPOzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087Tzs7Tzs7USxPO087TyxJOzs7O1M7OztPLFc7TyxPOzs7Ozs7OztPOztRLE87TztPLEk7Ozs7Uzs7O08sVztPLE87Ozs7Ozs7O087O1EsTztPO08sSTs7OztTOzs7TyxXO08sTzs7Ozs7Ozs7Tzs7USxPO087Tzs7O087Tzs7O087Tzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O087O1EsTztPLE87O087O1EsTztPLE87Ozs7TztRO1EsTztRLE87TyxPOzs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTzs7UyxPO1E7OztPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O08sTzs7O087OztHOzs7TSx1QjtNOztPO087Uzs7WTtNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJLE87OztjOztpQzs7Ozs7a0IsbUI7Ozs7Yzs7O0c7cUQ7Rzs7STs7dUI7Ozs7Ozs7Vzs7O1c7Ozs7Ozs7O1M7OztROzs7O3FDOztJOzswQixPLHlDOztJO0ssTTtJO0c7O0k7SyxNO0k7Rzs7STtLLE07STtHOzBDOztJO0ssTTtJO0c7O0ksTzs7K0M7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7STtHOztJLDhCOzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TyxrQztPOzs7O2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7O1EsTzs7O2tCO2tCLE87aUI7Ozs7USxPOzs0QixPOzs0QixPOzs0QixPOzs7UTtRLE87O0k7OztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7O1E7Z0I7OzttQjttQixtQjtrQjs7Ozs7USxXOzt5QixXOztzQixXOzt3QixZOztRLHlDLE07USxZOztJO0c7O0k7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7O1MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O0ksTzs7NkIsbUIsVTs7Rzs7STtJLE87Rzs7STtHOztJO0k7Szs7STtJOzttQixxQzs7O0c7O0k7SSxPO0c7O0k7RzsrQixPLHFDOztJOzs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7O1E7O1E7Ozs7O1M7UTtTOzs7Ozs7VTs7Ozs7Ozs7Uzs7OzsrQjs7OztJOzs7eUIseUI7STtHOzs7STtLOzsrQixXOzs7bUI7SztJO0k7SztJOztLOzs7OzZCOztTOzs7VTs7O1U7OztVOztpQztTOztzQzs7Ozs7O0s7STtJO0c7O0k7STs7d0I7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Szs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7dUIsdUI7O0kscUM7O0k7Rzs7SSxZOzs7Ozs7Ozs7Ozs7Ozs7O08sTTs7ZSxNOzs7OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TTs7Ozs7TSxJO007TztxQjtPOzs7O1E7O1E7Ozs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztVLFU7VSxPO1M7TTtNOzs7TyxVOztNOztTOzs7O0s7Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZLE87O0ksTzs7O0k7STs7OztRLE87Ozs7O1EsTzs7Ozs7Ozs7Ozs7OztLLE87O0c7O0ksTztHOztJOztxQixPOztxQixPOzs7O1EsTzs7TyxPOzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7STtjO2M7Rzs7SSxlO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSw4Qjs7O0ssTzs7O0ksTzs7O0ksTzs7O2M7O2E7O0c7O0k7STs7Rzs7STtJLE87OztjO2M7YyxPO2E7O0c7O0k7STs7SztLO0ssSSxtQjttQzs7OzBCLE87OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTs7O1E7UTtRLE87OztrQjtrQjs7bUI7bUI7bUI7OztrQjtrQjtpQjs7OztRO1E7OztROzs7Ozs7UTtRO2tCOztROztRLDRCOzs7O1E7OztXLE87OztxQixPO29CO1U7Ozs7Ozs7UTtROzs7UTs7Ozs7Rzs7O0k7STs7O0k7STs7SztLO0ssSSxtQjs7TTtNOztNOzs7O1M7VTs7O2E7YTthOzs7YTthOzs7YTthOztTO1M7Ozs7O21DOzs7O1EsTzs7O1E7Ozs7OztRLE87OztRO1E7OztRO1E7a0I7O1E7UTs7OztTO1c7OztjOztlLE87ZSxPO2MsTzthOztTLE87UTtROzs7UTtROzs7UTtROzs7UTtROzs0Qjs7NEI7OzRCOzs7UTtROzs7OztHOztJOzs7TztPO087OztPO087TztPOzs7TztPO087OztPO087O0c7O0k7STs7SztLO0ssSSxtQjs7TTs7TTs7O1M7UztROzs7O21DOzs7O1EsTzs7O1EsTzs7O1E7O1E7OztXOzs7Ozs7Ozs7UTtROzs7Ozs7OztTOztTO1M7O3VCLGdEOztTOzs7UTs7Ozs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7OztRO1E7OztRO1E7Ozs7OztRO1E7UTtROztTOztTOztTOzs7OytCOztZO1k7OztTOztRO1E7OztVOztVOzs7OztZOzs7O1k7Ozs7WTs7UTtROzs7UTtRO1E7OztRO1E7UTs7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtROzs7Ozs7Ozs7Vzs7Ozs7O1c7Ozs7OztXOzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7OztRO1E7OztRO1E7Ozs7OztRO1E7Ozs7OzRCOzs7UTs7Ozs7O1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7Ozs7Rzs7STs7O0k7STtJO0k7O0c7O0k7STs7Rzs7STtJOzs7O0s7Szs7O0k7STtJO0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7OztROzs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7OztPOztPOzs7Ozs7OztPOzs7Ozs7O087OztPO087Tzs7eUI7O0c7O0k7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJO0ksSTtJO0k7STs7STtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTs7O1E7UTtROzs7Ozs7UTtRO1E7OztROztROzs7Vzs7OztROzs7Ozs7OztTO1M7Uzs7Ozs7OztROzs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7eUI7O0c7O0k7O0s7Szs7O0k7STs7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7Ozs7Uzs7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7OztRLE87OztHOztJOzs7STtJO0ksSSxpQjs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPOztPOzs7TztPO087OztPO087OztPO087O3lCOztHOztJO0k7STs7Rzs7STtJO0k7O0c7O0ksWTs7STs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7O2tDOzs7OztRO1E7Ozs7OztROzs7Ozs7OztTO1M7UztVLE87O1M7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJO0k7SSxJLGlCOzs7O087TztPOzs7TztPOzs7aUI7Ozs7OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7O2dCOztrQyxtQixVOzs7O087Tzs7OztnQjs7a0MsbUIsVTs7OztPO087Tzs7eUI7O0c7OztJOzs7OztPO087O3VCLE87OztPO087OztPO087OztPLE87OztPO087Ozs7O0k7STtJOzs7Ozs7Ozs7O0k7STs7SztJO0k7STs7O0kscUM7O0k7Ozs7Ozs7OztJO0k7STtJO0k7Ozs7STtJOzs7O0k7STs7O0s7Szs7O0k7SyxPOztJOzs7STs7O0k7O2MseUI7O0s7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7O0k7O08sTTs7TyxNO2UsTTs7RzswQyxrQztpQywwQztHOzs7eUIsb0I7NkIsaUM7O0ksTTtHOztJLE07RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7OztNLHNCOztNO08sTztNO007TyxhO08sVztNO2M7O0s7RztJO0k7STtJOztJO0k7SSxnQjtJLGU7SSxlO0ksYztxQyx3Qjs7STs7O0c7O0k7Ozs7O0c7O0k7SyxROzs7cUI7Ozs7Rzs7STs7Rzs0QixPLHdDOztJO0k7STtvQyxPLHNCO0k7Rzs7SSwrQztHOztJO0ksSTtJO0k7Rzs7SSwrQztHOztJO0c7O0k7Rzs7STtJO0k7STtHOztJLHFDO0c7O0k7OztJO0k7b0MsTyxzQjtJO0c7O0k7OztJO0c7O0k7O0c7O0k7O0k7RztxQywrQjtHOztJOztLO00sTztNOzt5Qzs7OztJO0c7O0k7O0c7O0ksSSxxQyxJO0k7STtHO0csSTs7STtLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztrRTtHOztJOzs7O0k7RzsrQix3QjtHO0k7Ozs7Ozs7OztJLHVDOztJO0c7O0ksa0IsTzs7SSxPO0c7bUMsOEI7O0k7Yzs7Rzs7SSxXO1c7Rzs7SSxXO0ksUztzQjtJO0ksTztHOztJLG1COztJO0c7O0ksK0I7STtHOztJOzs7O00sTzs7O0ksTztHOztJLGtCOztJO0c7O0k7O0c7O0k7STs7O1E7OztnQjs7Rzs7STtrRDtJO0c7O0ksWTsyRTtJLE07Rzs7STs7O0s7TSxZOzs7TTs7Ozs7Tzs7Ozs7STtZOzs7ZTtlLE87Yzs7O0c7O0ksTzs7O2M7YyxPO2E7Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Ozs7YTtNOzs7OztNOzs7O087Ozs7O0c7O0k7STtLLFk7Ozs7Ozs7O0s7O0c7O0ksSSx1QixROzs0QztJO0c7O0ksSSx1QixRO29EO0k7Rzs7SSxjOzs7O1E7OztRO1MsWTs7OzthLE87Ozs7O1MsTTs7O0ksTztHOztJLFk7Ozs7UTs7MkIsTzs7SSxPO0c7Rzs7TTs7O1M7UyxPO1E7O0k7OztNLEs7Tzs7OztNLEs7Tzs7SztNLFE7TSxROzs7Ozs7Szs7TyxXO08sVzs7O08sVztPLFc7Ozs7Ozs7Ozs7O00sRztPOzs7OztjO087Ozs7Vzs7O0k7Rzs7SSxZO0k7Ozs7SztLLFE7a0M7O0s7Szs7STs7Rzs7O0s7SztNLEssNkI7TSxZOzs7O1U7Ozs7OztZLEksVTs7Ozs7Ozs7Ozs7O2U7Ozs7OztXLE87O3lDOzs7Ozs7OztVLG9DOzs7Ozs7OztVOzthOztvQzs7O1UsRyw0QjtVLFc7Ozs7OztNLE87O29DOzs7O0k7STtHOztJO0s7SyxLLDJDO0k7STtHOztJO2dCOztJLE07Rzs7STtLOzs7Ozs7O1M7d0MseUI7Ozs7Uzs7O1k7WSxXOzs7YSxPOzs7WSxPOztpQyx5Qjs7Vzs7Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7STs7O0k7STtJO0s7OztROztRLEksNEI7Ozs7O1MsTTs7O087O0s7SztLO0s7Ozs7OztLO0s7Szs7RzsrQixPLG9DOztJO0ssUTs7OztJO0ksWTs7OztLOzs7SSxPO0c7NkIsdUIsc0I7O0ksSSxROztROzs7O00sWTs7OztNO00sTzs7Ozs7OztHOztJO0k7Rzs7STtJO0ssWTs7TSxZOzs7OztVO1U7Ozs7O1U7VSxPOzs7VTs7VSxPOzs7VTs7Ozs7VTtVLE87OztvQjtvQjttQjs7O007O0s7O0c7Rzs7OztRLE07Tzs7STtJO0ssSSxJLE87Ozs7OztLOzs7O3NCO0ssNkIsTztLLEcsK0I7Szs7O0c7O0k7STtLO00sYTtNLE87SyxXO2dCLDZCO0ssWTs7Ozs7b0I7VSxJLFc7OztzQzs7Ozs7Ozs7O29CO1U7VSxHLCtCO1UsVzs7Ozs7O0ssTzt3Qzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sTzs7OEI7Ozs7Ozs7Rzs7SSxJLG9DOzs7OztLOztHOztJO0ssbUI7Z0I7Z0IsMkI7SyxZOzs7OztvQjtVO1csVztXO1c7Vzs7OztzQzs7OztVLEksSSxPOzs7Ozs7YztpRCxvQjs7VTs7OztjOzs7aUI7a0IsTztrQjttQztpQjtnQjs7O1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csTzs7bUM7Ozs7Ozs7OztxQjtXOzs7Ozs7O3dDO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLE87O2lDOzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SyxPOzs2Qjs7O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJO0k7Syx1Qjs7OztPO1EsTztRLGM7Ozs7Ozs7O00sSTs7OztLLGlCO0ssVztLO0ssWTs7Ozt5Qjs7Ozs7Ozs7d0I7OztVO1csTTtXLE87Ozs7Ozs7Ozs7O2E7Z0Qsb0I7OztTO1c7OzRCOztVOzs7OzthLE87Ozt1QixPOztpQzs7OztzQjs7O1k7UyxtQjtTLEksVzs7O3FDOzs7Ozs7O1MsTzs7O21COztrQjs7O0ssTzs7O2U7Ozs7Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7UTs7O1c7VyxPO1U7O1EsTzs7O2tCO2tCLE87aUI7Ozs7UTs7Ozs7STtHOztJO0c7K0IsMEI7O0ksSSxRLDZCOztLLFk7OzttQjs7O0s7TSxROzs7Szs7O3FCO0s7SztLLE87d0M7STs7Szs7Ozs7bUI7O007TSxjLE87TTs7dUI7O00sWTs7Tzs7USxPO1EsSztRLE87UTs7cUI7Ozs7OztLO0k7STs7STs7cUI7O0ksTzs7O2M7ZTtlLE87O2E7O0c7O0k7NEI7Rzs7STtLLFk7Z0I7Ozs7Ozs7SztLO0s7SyxPOzs2Qjs7O0c7O0ksZTtJO0ksbUI7STtLLFk7O007O08sTztPLE87TSxHLHlDOztLO007TyxRO08sVzs7Ozs7YztZOzs2Qjs7O007Ozs7O00sZTtNO00sTzs7OEI7OztJO0k7OztPLFc7TztNOztJO0s7TSxXO007Ozs7OztNO0c7O0k7SyxXO0ssVztLO1E7TSxNO0s7SyxPO0k7SSxJLFMsSTs7Ozs7O0k7STtHO0c7STs7Ozs7Ozs7OztJLG9CO0ksVztzRTtJLFk7NEM7Ozs7O00sTTtLOzs7O00sTztNO1E7Ozs7OzRCLE87SSxnQjtJOzs7Ozs7Uzs7O1U7Ozs7Ozs7Ozs7O2MsRzs7Ozs7Ozs7Ozs7Ozs7OztXLEs7Ozs7Ozs7Ozs7cUI7Ozs7OztTOzs7Ozs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjOztpQixrQixRO2lFO2lCOztjLFM7YTtlLGtDO2MsVztjO2dCO3FCO2U7Z0I7Z0IsTzt3Qjs7Ozs7Ozs7Ozs7VTt5Qjs7Ozs7a0I7O0k7STs7O0k7Ozs7SSxPOzs7YzthO0c7O0k7O0k7O0k7Rzs7SSxPOzs7YyxPOzttQyxtQzs7YTtHOzs7Szs7OztrQjtNO0ssTztJOztLLEksNkI7Ozs2Qjs7O0s7STtJLFk7STtHOzs7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTs7O0ksTzs7O2M7Yzs7Ozs7bUI7O29CO29CO29CLFE7Ozs7Ozs7Ozs7b0IsVztvQjs7O21CO29CLFM7b0I7b0I7c0I7OzttQjttQjtvQjtvQjttQixLO29CLE07O21CO21CO2tCOzs7Ozs7aUM7YztlLFE7ZTs7O2U7aUI7O2tDOztjO2E7Rzs7SSxPOzs7YztlO2lCOzsrQiw0Qzs7ZTtjO2E7Rzs7SSw4Qjs7O3lCOzs7TztlOzs7a0I7Ozs7bUIsTztrQjtpQjs7Ozs7TztlOzs7a0I7Ozs7bUIsTzttQixPO2tCO2lCOzs7Ozs7SSxPOzs7Yzs7Ozs7Ozs7Ozs7O2U7aUI7O2tDOzs7OztlOzs7b0I7Ozs7OztjO3NCOzt1Qzs7Ozs7Ozs7Ozs7Ozs7O2E7Rzs7STs7STs7STtHOzs7Szs7UTs7Ozs7O1M7Vzs7NEI7O1M7UTs7UTs7UztXOzs7YztjO2E7O1M7Vzs7O2M7YzthOztTO1E7O1E7Ozs7UztROzs7SSxPOzs7Yzs7O2U7aUI7O2tDOztlO2M7YTtHOzs7SyxZOzs7TTs7SyxNO0k7STtLLE87SyxVO0ssTztJO0ksSSw2Qjs7Szs7O1E7USxPO087OztJOztLOztVO00sZ0I7TSxJLFcsdUM7Ozs7TyxrQjtPO08sVzs7Ozs7O1k7Ozs7O2E7YTs2Qjs7O1k7O2EsTzthLE87WTs7O3FCOzs7WTthOzs7O2E7YTtjO2UsTztlLGtCOzs7YTs7YztnQjs7aUM7Ozs7Ozs7Ozs7Ozs7VzswQzs7TztPOzs7SztRLG9DO0ssZ0I7SztLO0k7STtJOztzQixPLHFCOztJO0c7OztJLE87OztjOzthOzs7SSxPOzs7YyxZOzs7Ozs7Ozs7Ozs7ZTtnQjs7OztjO2M7YTtHO0c7STs7O1EsTTtPOzs7SSxXO087SyxNOzs7STs7O0s7TSxpQixROztPOzs7UTtPOzs7MEIsTyxzQzs7O00sTTs7dUMsTzs7O0k7Szs7OztJO0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOzs7OztJO0s7Szs7Ozs7TSxNOzs7O0c7STs7OztJLFk7OztZO007OztLO00sUTtNLFE7TTtNLFU7OztNOzhCO087TyxJOzs7OztPOzs7Ozs7O0ssdUM7SyxJLFU7Ozs7TSxhO00sRztPLE07TSxPOzs7SztNO087Ozs7Ozs7O0s7TSxPO00sVTtLO0s7Szs7SSxNOzs7STtHOztJLEksbUM7Ozs7O0ssTTs7Rzs7SSxXO0ksSSx3QixjOzs7Z0MsNkI7O0s7SztLOztHOztJLFk7O0s7SSxNO0c7O0ksVztJLEkscUM7Ozs7SztLO0ssTTs7Rzs7SSxXO0ksSSxpRDs7O2dDOzs7Rzs7SSxJLHNEOzs7K0I7OztLOztHOztJLEksc0Q7OztnQzs7O0c7Ozs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7O1MsSyw2QjtTLEk7OztxQzs7O1M7OztTOzs7OztTOzs7UyxNOztLOztHOztJO0c7O0ksWTs7SztJLE07Rzs7SSxXO0ksSSx5Qzs7OztLO0ssTTs7Rzs7SSxJLDBEOzs7O2dDOzs7Rzs7STtLLEksSTs7Ozs7OztXOztZO2E7O2E7Ozs7d0M7OztXOzs7O0ksWTs7Ozs7OztPLEc7USxXO1EsTzs7Ozs7STtHOztJO0s7YTs7TSxPO0s7Ozs7NEI7OztHOztJO0ssSSxPLDZCO0s7VSxnQyxJOzs7Ozs7OztLO007Ozs7Ozs0Qjs7O0c7Rzs7SSxHO0ssTTtJLFk7Ozs7O1EsOEM7UTtTLEc7VSxNO1M7VSxZO1U7WTs7O2U7OztTOzs7OztTO1U7VztXO1U7Ozs7O1csTTs7Ozs7O1E7O0ksMEI7SyxnQjtLLE87OztlOzs7O0k7RztHLEk7d0IsdUI7O0k7SztLO0s7STs7O2E7Tzs0QiwwQjs7Ozs7SztLLE07O0c7O0ksSSxxQjs7O3dCOzs7Rzs7SSxJLDRCLGM7Ozt3Qjs7O0c7O0k7SyxPO0ssVzs7SyxZOzs7OztTLEc7VSxNO1Msc0Q7UyxvQjtTO1U7Ozs7Ozs7OztVOzs7Ozs7VSxJLEksTzs7Ozs7O1UsTzs7O29CLDZCO29CO21COzs7Ozs7UyxhOztLOztNLEksZ0I7TSxPOzs7Z0I7Ozs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1MsTzs7O21CO21CLE87a0I7O1E7TTtNOzs7Ozs7USxHLGdDOzs7Ozs7UTtRLE87Ozs7O0ssTTs7OztJLEksK0M7Ozs7TTs7O0c7O0ksaUM7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLOzs7SyxZOzs7Ozt3Qjs7UztVO1csSztXO2E7OztnQjs7O3NCOzBCOztlOzs7VTs7Ozs7OztvQjs7b0M7Ozs7O1MsZTs7O1M7OztVLFU7UztVLE87O1M7O0ssTzt3QztJOztLOztJLE87O2lDLGlDOzs2QixrQzs7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHO0c7O007OztTO1MsTztROztJOzs7Szs7OzttQjs7UyxPOzs7b0I7b0IsTzttQjs7bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTtjOzs7aUIsZTs7Z0I7OztXOzs7OztZLE87Ozs7VSxXO1U7OztVO1k7OzBCLE8sb0M7O1c7Ozs7TSxPOztJO0k7Rzs7STs7SztPOzs7VTtVLE87Uzs7O0k7TTs7b0IsTywyQzs7SztJO007O29CLE8sMkM7O0s7STtLO08sd0Msc0I7SztPLHdDLHNCOztJLE87O2lDLHdDOzs2QixPLHNCO0c7O0k7SztLOzs7Ozs7Szs7RztHO0k7Ozs7Ozs7STtLO087O3dCOztLO087O3dCOztJLE87OztjO2U7aUI7OztvQixZOzs7d0I7c0I7c0I7c0I7OztvQjs7O2U7ZSxPO2UsTztlLE87ZSxXO2M7YTtHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7VSx1Qjs7RztpQyx3Qzs7SSxPO2lDO0c7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJLE87Rzs7STtZOzs2Qjs7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7O0k7O0s7Z0M7OztLO007TTtNOztNLFE7OztNO00sSTtLO0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STs7SyxJLFc7Ozs7Ozs7O0k7Rzs7SSxJLDZCOztHOztJO0s7TSxPO00sTztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7NEI7OztHOztJLFk7OztLO007TyxtQjtPO007Ozs7OztNOzs7STtHOzs7O0ssRyxtQztLO00sUTtNLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQixHLGlDOzs7Ozs7Ozs7OztNOztLLEksbUM7SyxHLG1DO0ssZTtnQjtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7OzJDOzs7Ozs7Ozs7Ozs7Ozs7O3VCO21CO3VCLCtCOzs7O2tCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7Ozt3QjsyRCxTOztvQjtxQixPOzt1Qjs7OzBCOzBCO3lCOzs7OztvQjtxQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEI7Ozs7Ozs7Ozs7OzhCLEs7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7OEI7OzhCOzs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7O2tDLE07Ozs7Ozs7OztvQzs7Ozs7Ozs7b0M7Ozs7a0MsTTs7aUMsVztpQyxHO2tDLE07Ozs7Ozs7K0IsTTs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07a0IsTzs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7OzttQzs7OztrQyxPOzswRDs7Ozs7Ozs7Ozs7Ozs7O2tDLE87OzBEOzs7Ozs7Ozs7Ozs7Ozs7OzZCLE07OzRCOzJCOzs7Ozs7OztpQjtrQjtrQjs7Ozs7bUIsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksTzs7a0M7OztHOztJO0s7Szs7SyxNO0k7Szs7O0s7OztLOzs7O0s7Tzs7O1U7dUI7UztJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07SSxPOzs7Yzs7Ozs7ZSxPO2UsTzs7O2U7Ozs7Ozs7ZSxNOztjO2E7O0c7OztLO0s7Ozs7UTtRLFc7VztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJO0k7SztJLEkscUI7STs7Szs7c0I7O0ssSTs7Ozs7OztJLFc7STtLO0s7SyxPO0ssa0I7SSxJLFc7Ozs7TSxNOzs7STtLLGM7Szs7O0ksZ0I7SSxPO0c7O0ksVztJLFM7STtLO0s7SSxPO0c7RztJOzs7USxNO087O0k7OztRLE07TztJOzs7OztJO0s7OzBCOzs7UTs7O1E7TTtHOztJOztLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7Ozs7O1E7UyxTOzs7Ozs7VTs7Ozs7Ozs7OzRCLE07Ozs7UTs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7OztJO0s7SztLLE8sMkM7STs7TSwyQzs7OztLO087VTs7SyxNOztJO0c7RztJOzs7Ozs7Ozs7OztJLEs7SyxNO0k7STtJLEk7OztLLG9EOzs7STtLLGtCO0ssYTs7Ozs7O0s7O0k7STtHOztJO0ksSTs7O0s7TTtNO007TTs7Ozs7Ozs7SSxPO0c7O0ksMkI7STtJOztLLEksUSwwQixVOzs7Ozs7Ozs7Vzs7O1k7OztXO1c7Ozs7Ozs7Ozs7Z0I7Z0I7Ozs7O2lCO21COzs7OztrQixXO2tCO2tCLG9CO2tCOzs7O2dCO2dCLEs7Z0I7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7SSwyQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7TztTOzs7Ozs7Ozs7USxXO1E7USxvQjtROzs7TyxJLHFCOztROztROztNOztLLE07Ozs7Z0M7OztHOztJO0k7STtJO0s7SztLLE87SyxPO0ssSztLLE87SyxPO0ssUTtJO0k7STtJO0ksK0I7Ozs7Ozs7TSxZOzs7Ozs7TSxjOzs7Ozs7Ozs7OztJO0ssSSxzQzs7Ozs7TSwwQjs7STtHOztJO0ssTTtLO0ssSztLLFc7Ozs7SztNOztTOzs7OztZOzs7Ozs7Ozs7WTtZLE87Ozs7Ozs7TTs7STs7TTs7TTtNOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7O2tCO2tCO3NCLCtCOzs7OztnQjtnQjtnQjtpQixVO2lCLFU7OytCOzs7aUI7O2lCOzs7Ozs7Ozs7OztpQzs7Ozs7Ozs7Ozs7YyxHOzs7Ozs7O2dCOztrQjs7a0I7a0I7OztpQjtrQjtrQjs7b0I7O3FDOzttQjtvQjtxQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7O3VCOzBELFM7O21CLFc7bUI7OztzQjtzQixNOzt1QixXO3VCLEksOEI7Ozs7O3dCO3dCO3dCOztzQjs7OztxQjs7Ozs7O2lCOzs7O2dCOzs7Ozs7Yzs7ZTtlO2M7ZTtnQjtnQjs7OztlLFc7eUI7Ozs7ZTtlOzs7O2E7OztjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0I7aUIsVztpQixJOzs7OztrQjtrQjtrQjtrQjttQjttQjs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7OztpQjs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7d0M7Ozs7Ozs7Ozs7OztpRDtpQixXO2lCOzs7b0I7b0I7bUI7Ozs7Ozs7Ozs7O1U7Ozs7OztXO1c7Vzs7Ozs7Ozs7UTtRO1E7UTtRO1E7Ozs7O1EsSztTO3NCO1MsWTs7O1E7Uzs7Uzs7Uzs7Ozs7aUQ7O3FEO007Ozs7TSxZOzs7O087TztPO08sSSxtQixJOzs7Ozs7TztPO2tCOzs7O0s7Ozs7OztLO0s7Ozs7SSxXO08sMEM7SSxPOztrQzs7O0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxVO0ssaUI7Szs7O1E7Ozs7OztRO1E7Ozs7O1UsVztVO1Usb0I7O1M7Uzs7Ozs7O1M7eUI7O087O0s7Ozs7SztLO0ssTTs7OztJLEksUSwwQixVOzs7dUIsTzs7OztVLE87O1U7Ozs7SSxNO0c7O0k7SyxROzs7OztLLFU7Ozs7O0ksNkI7STtLOzs7Ozs7O0s7TSxPO00sSztLOzs7USxrQixPO1EsTztPOztLOzs7UTtRO1MsVztTLE07OEI7Ozs7Z0M7OztPOzs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJO0ssTzs7O2U7OztnQixROzs7NkI7c0M7O2M7O0k7STtLLE87OztlOzRCO2M7O0k7STtLLEksa0I7O007TztPOzs7WTs7O2M7Ozs0QjtxQzs7YTs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTs7O1k7OEM7UTs7Ozs7OztxQjtNLFM7O0s7TSxLO007OztNO08sTztPLE87TTs7SyxLO007TyxXO08sSztPLE87TTtNLG9CO00sTzs7SyxHLGlDO0ssTztlOztJO0k7SyxNO0ssTTtLOztJO0s7SztLOzs7UTtRO1M7O1M7Ozs7OztTOztPOztLLEc7TSxTO00sRztPO1EsTztRLE87Tzs7O0s7Ozs7SztLO0ssTTs7OztJO0s7Ozs7UyxZLE87UyxvQjtTOztNO007Ozs7OzttQjtLO00sUTtNLFU7O3NDOztPOztnQyxPLDhCO007Ozs7Ozs7Ozs7OzJDOzs7O1U7OztvQixRO29CO29CLFc7b0I7b0Isb0I7b0I7cUI7O3dCOzt5Qzs7cUI7Ozs7cUI7cUIsTTs7bUI7Ozs7OzsyQjs7O1U7O21DLE8sOEI7Ozs7OztTOztrQyxPLDhCOzs7OztTLEcsK0I7UyxJO1M7VSxXO2E7VyxRO1c7VztXLE87O3lDOzs7OztTOzs7Ozs7Ozs7O3lCO2tDOzs7OztVLGM7OztXLFc7Ozs7Yzs7OztpQixPOzt5Qzs7Z0I7Ozs7Ozs7O1M7UztVOzthLE87Ozt1QixXO3VCLFc7c0I7WTtVLFE7VSxRO1U7VTtZOzs2Qjs7OztVO1k7OzZCOzs7Ozs7VTs7O1ksc0IsTztZOzs2Qjs7Ozs7OztVOzs7OzthO2EsTzs7O3VCLHlCO3VCLDJCO3NCO1k7UztTO1M7VSxPO1UsTztTO1MsTzs7OztVOzttQyxPLDhCOzs7Ozs7VTs7O29CLFE7b0I7b0IsVztvQjtvQixvQjtvQjtxQjs7d0I7O3VDLDJCOztxQjs7OztxQjtxQixNOzttQjs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OztNOztLOzs7O0ksVztJLEksZ0M7Ozs7O0s7SyxNOzs7Rzs7STtJO0ssZ0I7SztLLDBDO0k7STtHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0ssSSxxQjtLO007TSx5QjtNLG9CO007TTtNOzs7Ozs7TTtNLE07Ozs7Ozs7STtHOzt1QyxrQzs7STtJO0c7aUMscUM7O0k7Rzs7STtLO0s7STtJO0c7Rzs7Ozs7SztNO007TSxJO0s7STtJLEk7Ozs7NkM7SyxNOzs7Ozs7O0ksWTs7OztRO1Msd0I7Ozs7UTtROzs7O2E7UyxrQzs7UyxNOzs7UTs7SSxNO0c7Rzs7OztJO0k7Ozs7UztVO1U7VSxLO1M7UTtLLEk7Ozs7TTs7TyxROztNLE07Ozs7Ozs7O0ssWTs7OztTO1UsVTtVOzs7UztTOzs7UyxjLDRCOzs7O0ssTTs7Rzs7O0s7TTtNLEs7TTtLO0k7SSxJOzs7O0s7O00sUTtNLFE7O0ssTTs7Ozs7Ozs7SSxZOzs7O1E7UyxVO1MsVTtTOzs7UTtROzswQjs7SSxNO0c7RztJOzs7O0ksSSw2QixROztLO00sTTtjLE07SyxJLFEsNkI7Szs7OztPO1EsVTtRO1E7Ozs7UTtTLFM7Uzs7O087ZTtPO087OztPOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7RztJOzs7Ozs7UyxZOzs7O00sSTs7OztRLE07Ozs7TSxJOzs7OztPLE07Ozs7Ozs7O0s7O007Yzs7VTs7O1UsTTs7Ozs7Ozs7OztLO0ssSTs7Ozs7TSxNOzs7O0k7ZTs7OztHOzs7O0k7OztLLEksVTs7Ozs7OztLOzs7O007Szs7OztPLE07OztNLEk7Ozs7O08sTTs7Ozs7O0ksYTs7O0c7RztJOzs7Ozs7Ozs7Ozs7SSwyQjtJLEk7Ozs7Ozs7Ozs7UTs7O1MsUTtTO1EsTTs7Ozs7SyxNOzs7STs7O087Tzs7USxTO1MsTTs7Ozs7TyxJOzs7OztRLHNCO1EsTTs7O087TTs7SSxPOzs7YztjO2U7Ozs7OztlLHNCO2UsTTs7O2M7YTs7Rzs7STtLO0s7OztLO087OztVOzs7Ozs7O1U7VztVLEksVTs7OztrQjs7YztlO2lCO2U7Ozs7O2M7ZSxVO2U7Ozs7Ozs7OztXOztVOzs7O1csUTs7VztZLFU7WTs7Ozs7VTtTOzs7Ozs7OztJO0c7O0k7Szs7SSxPOzs7YztxQjs7d0I7YTs7Rzs7STtLO0s7O0k7SyxJLDZCLFE7bUM7OztRO1MsUTtTLE87UTtROzs7USxxQjs7Ozs7USxNOzs7Rzs7STtJOzs0QixtQiw0Qjs7STs7Tzs7O1U7VTtTOztJOzs7TztPO007Ozs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCO2lCO21COzs7c0I7b0M7c0I7dUIsUTt1QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MkI7NEI7NEI7Ozs7Ozs7NEI7Ozs7Ozt1RTs7eUI7O3dCOzs7Ozs7OzJCLE87Ozs7OzsyQjs0Qjs2Qjs2Qjs7Z0M7OzttQztrQzs7NkI7Ozs7Ozs7NkI7Ozs7eUI7Ozt3Qjt5QixlOzs7bUM7MEIsVzswQjswQixXOzZCOzs7OEI7OztpQzs7Ozs7Ozs7OEI7OztpQztnQzs7Ozs7Ozs7Ozt5Qjs7Ozs7Ozt5Qjs7O29DLE87O3NCO3FCOzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0I7Ozs7cUI7OztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJLE87OztjOzs7O0c7O0k7Szs7O0s7OztLOzs7O0ksK0I7STs7Ozs7TSx3QjtJLE87OztjOzs7Ozs7ZSxRO2UsVTs7Ozs7a0M7Ozs7O3FCLE07Ozs7Ozs7ZSxNOztjO2U7ZTs7Ozs7OztlOytCOzthOztHOztJO0k7Rzs7STs7SSxJLG1DOztJO0ksTzs7aUMsdUM7OztjO2U7OztpQztlOzs7Ozs7OztlO2UsTTs7O2E7Rzs7SSxJOzs7NkI7OztJO0c7O0k7STtLLFc7SyxXO0ssWTs7OztTO1UsVzs7OzBCOzs7O1M7O1UsVTs7OztVLE87VSxrQjs7VTtXLE87VyxPO1csUztXLFE7VyxPO1csTztVOztTO3FDO1MsZTtvQjtTLFc7Ozs7SyxPOzs2Qjs7O0c7O0k7STtJOztHOztJO0ksTzs7O2M7YyxPOzs7OzBCO3dCO2E7O0c7O0ksSSxPLDBCO0k7SSxJOzs7OztLO0ssTTs7O0ssTztJOzs7Ozs7SSxNOzs7O2E7O0c7O0ksSTs7O3FDOzs7STtHOztJOztJOztJO0c7O0ksTzs7O2U7OztnQixTO2dCLFM7b0M7d0M7ZTtjOzs7Ozs7YztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7Ozs7Ozs7O1csSzs7Ozs7O007TztPO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUI7ZTs7c0IsK0I7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2MsSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlO2dCO2lCLDhCO2lCLFU7Ozs7Ozs7YztlLE87ZSwyQjs7OztlLE87aUI7ZSxXO2U7O3FCOztnQjsyQjtjO3VCO2M7dUI7cUI7ZSxXO2U7Ozs7O2lCOzs7OztpQjs7OztrQztvQjtxQixRO3FCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QjswQjswQjs7Ozs7OzswQjs7Ozs7O3FFOzt1Qjs7Ozs7Ozs7Ozs7OzsyQjs0Qjs0Qjs2QixPOzsrQjtrQzs7O29DOzs7O21DOzs7cUM7OztrQzs7O3FDO29DOzs0Qjs7Ozs7Ozs0Qjs7Ozs7Ozs7O3lDOzs7O3VCOzs7O3FCOztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7OztjO2U7Z0IsTztnQjs7OztxQjs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7Ozs7SSxXO08sMEM7SSxPOzs7Yzs7OztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7O00sTzs7O2dCOzs7Ozs7aUIsTztpQixPOzs7O2lCOztvQjs7OztpQjs7O2dCO2lCO2lCOzs7Ozs7O2lCO2lDOztlOzs7Szs7OztJO0ksVztJLE87O2lDLE8sNEI7OztjO2E7Rzs7STtHOztJO0k7Szs7O2tCO0s7Ozs7OztLLE07OztHOztJLEk7Ozs4Qjs7O0k7Rzs7STtJO0s7TSxXO00sYzs7Ozs7TSxJOzs7a0MsTTs7Ozs7O0s7O0c7RztJOzs7Ozs7Ozs7O0k7SztPOzs7VTtVLEksVTs7O2tDOzs7O1U7Z0M7O3dCOzJCO1U7Uzs7O0s7Tzs7O1U7VSxHLDBDOztVO1M7OztLO087OztVO1UsSSxVOzs7a0M7Ozs7NkI7MkI7VTtTOzs7SSxPOzs7YztjLGlCO2U7YzthOzs7Rzs7STs7Ozs7Ozs7VTs7Ozs7Ozs7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7O2E7OztnQjtnQixJLFU7Ozs7a0IsTTs7Ozs7Z0IsSTs7Ozs7O2lCLE07Ozs7Ozs7O2dCO2U7Ozs7Ozs7Ozs7Ozs7YSxHO2M7YyxJOzs7Ozs7ZSxNOzs7Ozs7Ozs7OztjOzs7OztPLE07OztNOztLOzs7Ozs7OztNLE07Ozs7Ozs7STs7SyxRO0ssUTtLO0ksVzs7O0k7O0ssTzs7STs7SyxhO0ssVTtLLFU7SztLO0s7SztJO0k7OztLLEk7Ozs7OztNOzs7Ozs7O0k7Ozs7STtLLFE7SyxRO0s7SSxXO0k7SztNO00sYTtNO007TTtNO0s7SztLO00sSztNLEs7O00sTTtLOzs7USxJLG9EOzs7Ozs7UyxNOzs7Ozs7Ozs7OztPOzs7SztNOzs7UztTLEksVTs7OztXLE07Ozs7UyxJOzs7Ozs7VSxNOzs7Ozs7Ozs7OztTO1E7O007OztTO1MsSSxVOzs7O1csTTs7OztTLEk7Ozs7OztVLE07Ozs7Ozs7Ozs7O1M7UTs7Ozs7Ozs7SztNO1E7NkMsMEI7TSxPO007O3FCO0s7Ozs7OztLOzs7RztJOzs7Ozs7Ozs0Qix5Qzs7STs7aUM7O0s7O0k7Rzs7SSxPOzs7YztjO2E7OztHOztJO0k7ZTs7aUU7Ozs7Rzs7SSxPO0c7O0ksSSxVLDZCOztLLE07SSxtQixVOzs7OztNLEcsNkI7OztJLE07Rzs7STtJLE87Rzs7SSxZOztjLHNCOztLOzs7O2tCO087UTtTLE87UyxNOztRO1E7Ozs7K0I7Ozs7Tzs7OztRLEs7TywyQjtPO1E7UTs7O1E7OztRO087O08sc0IsTztPLDZCO087UTtRO1U7OzthOzs7UTtPOzs7O29CO3NEOzs7OztPOzs7OztROzs7Ozs7O1E7UyxjO1M7OztVO1c7OztVO1c7Ozs7Ozs7WSxNOzs7VSxjOzs7OztZLEc7YTtlOztnQzs7YyxNO2E7YTtjO2Msa0I7YztjOzs7c0I7Ozs7Ozs7YSxLO2MsTTs7O2M7OzthO2EsSTs7OztlLE07OzthO2E7Ozs7VSxNOztTLE07Ozs7O1M7VTs7O1M7OztPLHFCLE87Tyw2QjtPO087USxJLE87O1M7UztVO1c7Vzs7Ozs7OztRO1M7Vzs7O2M7ZSxROzs7Yzs7Ozs7OzthOzs7UztTOzs7OztnQjtrRDs7O1E7Ozs7K0I7Ozs7TyxxQixPO087UTtTOztTO1M7OztROztPOztPOzs7O1E7OztROzs7UTtPOzs7O08sb0IsTztPLGlDO1E7Uzs7UztTLDhCO1M7Vzs7O2MsOEIsUTs7Ozs7cUM7O2U7O2dCOzs7Ozs7OzJCOzs7MEI7O2U7O2MsTTthOztTOzhCO1M7UztXOzZDO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RztJLFc7Ozs7OztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCO2lCLE87OzsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQixHLGlDOzs7Ozs7Ozs7Ozs7Ozs7aUIsc0I7aUIsRztrQjtrQixHO21COzs7O2lCO2tCOzs7a0I7OztrQjs7OztpQixTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7dUI7c0M7Ozs7aUI7OztrQjs7bUI7Ozs7Ozt1QjtzQzs7O2lCLE87OzsyQjsyQjs7MEI7Ozs7Ozs7Ozs7Ozs7OztpQjtrQjttQixVOzs7O21CLFU7Ozs7bUI7Ozs7bUI7bUI7bUIsVTttQixXOzs7Ozs7Ozs7Ozt5QixHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO3lCOzs7Ozs7OzsyQjs7OzhCOzs7K0IsUTsrQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDOzs7OzsrQjs7OEIsTTs2Qjs7Ozs7Ozs7Ozs7O3dCOzs7MkI7Ozs0QixROzRCLFU7eUQ7Ozs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs4Qjs7Ozs7Ozs7NkI7OzJCLE07MEI7Ozs7OzttQixNOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7O21CO3FCOzs7d0Isa0M7d0I7O2dDOzs7dUI7Ozs7bUI7b0IsYTs7O3FCO3NCOzs7eUI7eUI7d0I7Ozs7Ozs7O3FCO3VCO3NCO2lDOzs7O29CO29CLE07OzhCOztrQjs7Ozs7bUI7Ozs7Ozs7Ozs7OztROzs7O1E7Uzs7Ozs7Ozs7TztROzs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPO1c7YTs7O2dCOzs7aUIsUTs7O2dCOzs7Ozs7aUI7O2dCOztpQixPO2lCLE87aUIsTztnQjs7O3lCOzs7O2U7Ozs7VTs7Ozs7Vzs7OztPO1EsSSxROzs7Ozs7Ozs7OztrQjs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTOzs7Ozs7O0s7Ozs7STs7STtJO0k7SyxXO0ssTzs7O2U7Ozs7O2UsSSw0Qzs7OztpQjt1Qzs7O2M7b0I7Rzs7SSxJLFEsMkIsTzs7OztROztROzs7OztTO1EsTzs7UTs7O1EsTTs7SSxPO0c7O0ksSSxRLDJCLE87Ozs7UTs7O1M7USxPOztROztTLFE7Ozs7OztTLE87UyxPO1MsTztTLFc7USxPOzs7UTs7SSxPO0c7O0ksWTs7STtHOzs7OztLLEcseUM7SztNLFk7TSxROzs7O1M7WTtVLHNCOzs7UztVO1k7O21DOzs7OztVO1M7VTs7Ozs7O1U7Ozs7cUM7Ozs7O2tCOzs7Ozs7Ozs7Uzs7Ozs7Uzs7VTtZOzttQzs7Ozs7UyxHLDRCO1M7VSxPO1U7Ozs7O0ssTzs7bUM7Ozs7OztJO0k7Rzs7STtJLE87Rzs7STtHO0c7OztLOztJLE87Rzs7STs7SztPOzs7VTs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7O1M7OztVOzs7Ozs7OztROzs7Vzs7Ozs7SSxPO0c7O0ksZTtlO2lCO0ksUzs7O0ssSyw2QjtNLGM7Ozs7UTs7OztTO1c7c0M7UTs7OztNLE07O0ssWTs7Ozs7UyxrQzs7Ozs7VyxrQjtZOztZLGM7O2E7Ozs7O3dCOzs7OztXOztTLFk7O1U7Vzs7O1csTztXLE87VTs7OztTOztVLFU7Ozs7OztVO1k7OztlOzs7Z0IsUTs7Ozs7Ozs7bUI7Ozs7b0I7c0I7Ozt5QixPOzs7b0M7bUM7Ozs7d0I7OztvQixPO3NCO29CO3FCLE87NEI7Ozs7Ozs7Ozs7ZTtjOztVO1k7OztlOzRCO2M7O1U7WTs7O2U7ZSxPO2M7O1U7Z0I7Uzs7OztJLE87OzRCOztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7SSx1QyxRO2tFO0ksSSxXLDJDOzs7O0ssSSxPLDJCLE87SztLO00sVzs7Ozs7OztXO1ksYzs7O2EsTTs7O1k7O2E7OztnQjs7O21COzs7Ozs7Ozs7O1k7YTtjLE87YyxJOzs7OztjOzs7Ozs7YyxNOzs7Ozs7O1csa0M7OztZLEc7Ozs7Ozs7OztrQjs7O3FCOzs7Ozs7Ozs7O1csbUIsTztXO1ksVTtZO1ksSTs7Ozs7WTtZO2EsVzthOztrQjs7O2E7ZTs7Z0M7Ozs7O2EsVTs7Ozs7YyxHOzhCOzs7Ozs7Ozs7Ozs7VyxHO1k7YTthLFU7OzthLE07Ozs7Ozs7Z0I7Ozt5Qjs7Ozs7Ozs7VTs7OzJCOzs7Ozs7TTtNLE07O0s7Szs7OztJO0s7SztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7O0k7Szs7TTtROzt5Qjs7OztNOztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOztPO1M7OzBCOzs7OztLOztNO1E7O3lCOzs7TTtROzt5Qjs7SztLOzs7Ozs7Ozs7OztLOzs7Ozs7SztLLE07O0c7Ozs7Ozs7USxLO1M7Ozs7VTtTOztpQjs7O29COzs7Ozs7OztROztTO1c7OztjO2M7YTs7UztXOzs7YztjO2E7O1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7O0s7O1E7O3lCOzs7Ozs7Ozs7STtJO0c7O0ksRztLLE07STs7Ozs7Szs7Szs7Szs7UTs7eUI7Ozs7Ozs7OztJO0k7Rzs7SSxTO0ksRywwQztJLEksOEIsUTs7SyxvQixPO0s7OztRLG1CLFE7Ozs7Ozs7VyxPOzttQzs7Ozs7UTtPOztLLE87OzZCOzs7SSxPOzs0Qjs7Rzs7STtJLE87OzRCOztHOztJO0s7SztLLFE7SyxVOzs7OztLLE87O0k7Rzs7O0ksWTs7Ozs7UTtTLEksWSw2QjtTOzs7O2dDOzs7OztRLEc7UyxXO1M7O1c7OztjLGtCLFE7Ozs7Ozs7ZTs7YzthOztVOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCLGM7cUIsWTtHLEksK0I7O0k7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7SSxXO0ksTztHOztJLHVCO0c7RztJOzs7UTtRLHNCOztRO1Esc0I7O1E7USxzQjs7UTtRLHNCOztRO1Esc0I7O0ksdUIsTSwwQztHOztJO0k7Ozs7Ozs7cUM7O3FDOztxQzs7cUM7O3FDOzs7Ozs7OztLO0s7Ozs7NEI7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtnQjtJOztLLG1DOztLOztHOztJLHFDLE87Ozs7Ozs7Ozs7Rzs7SSxXO0ksTztHO3lCLCtDOztJO0k7STtLLE87SztPO1MsMkM7SSxPLFc7Rzs7SSwwQiw0QztJO0s7SyxROzs7STtLO0k7SyxPO0k7STtLLE87STtJO0s7Tyx3Qyx1QjtLLG9CO0ssVTtJOzs7Tzs7UTtRO1E7TztPO007O0ksTzs7O2MsWTs7O2UsTzs7Ozs7Ozs7OztjO2U7aUI7bUQ7ZSxPO2MsTzs7Ozs7Ozs7Ozs7O0c7O0ksVztHO0c7c0IseUI7RztJO0k7OztJO0ssa0IsTztLLE87STtJO2U7SSxPO0c7O0k7Ozs7TTs7TyxPO2M7OztLO00sVztNLE87O0s7TTs7Uzs7WSxPOztZLE87O1ksTzs7WSxPOztZLE87b0I7O1E7TTtNLE87TSxROzs7TSxHOzs7TztRO3lDOztVOzZDOzs7Ozs7d0M7SyxjOztpQjs7TTtPO2tCO08sVztjO0s7TSxZO007TTs7ZTs7OztNO2E7OztRLEk7Ozs7Ozs7O1M7Ozs7O0ssTzs7SSxXO0ksTztHOztJLEksMEIsTztJLE87Rzs7STtJLE87RztHO0ksZTs7Ozs7Ozs7STtJOzRCO0ssVSxnQztNO0s7OztHOztJOztPOztRLE87UTtxQjtPOztRO1U7Ozs7O1EsTztRLHFCO08sSSxZOzs7K0I7Ozs7Tzs7O1MsSSxVOzs7Ozs7Ozs7VSx1QixPO1U7Ozs7OztROzs7NkM7O08sc0M7Tzs7O087O0c7bUQ7Rzs7OztLO0k7STtJOzs2Qjs7Ozs7Ozs7VTs7O1csTztVO2M7Ozs7Ozs7cUI7Ozs7OztPLFMsVzs7Tzs7Tzs7O1E7UTtPOzs7TyxZOztPOzs7O0k7Ozs7Rzs7STtJLE87Rzs7SSxPO0c7O0k7O0s7Tzs7d0I7O0ssTztJLE87Rzs7Ozs7Ozs7Ozs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOztJLE87Ozs7Ozs7YyxPOzs7d0IsTzt1Qjs7YTs7RztJOzs7O0k7STtxQzs7O007Ozs7O0c7O0ksWSxPOztJLE87OztJLDhCO3lDOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxJLEs7Ozs7TSxHO007Ozs7O0ssTzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7Rzs7O0s7SyxPOztJO0ksc0I7Rzs7STtLLE87Ozs7TyxPOztPOzs7OztRLE87UTtPLE87Ozs7Ozs7Ozs7OztPLE87O087Ozs7UTtPLE87Ozs7Ozs7O3FDOzs7O08sTzs7Ozs7OztpQjs0QixPOztpQixPOztnQjs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXO1csTztVO08sTzs7Ozs7cUM7Ozs7Ozs7Ozs7OztpQixhLE87O2lCLE87O2dCOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7SSxPOzs7YyxZLE87O2MsTzthOztjLE87YTs7YyxPOzs7Ozs7Ozs7d0IsUSxPOzt3QixPOzt1QjthOztHOztJOztJOzs7O0c7OztJLGdEO0k7Rzs7SSxjOytCOzs7SyxXOztJLGdCLE87SSxPO0c7RztJO0k7STtJO0k7Ozs7Ozs7SSxRLE07O0ksTztHOzs7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1k7Yzs7K0I7O1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7Ozs7STtJOzs7UTs7UyxTO1MsSTs7O1MseUI7OztROzs7O1E7OztTOzs7UTs7Ozs7O0ssSTtLOztHOztJO0ssWTtLLE87STtjOztHOztJO0k7Ozs7O3dCOzs7Szs7UTs7O1c7O1k7Ozs7O1c7WTthLEk7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O1U7Ozs7O0k7Rzs7STtJLE87O2lDLGdDOzs7Rzs7STtjLG1DOztHOztJO0k7Ozs2QixXOzs7O1Esd0M7UTs7Ozs7O0s7O0c7O0ksK0I7dUI7STtLOzs7O0ssUTtLOzsyQzs7YyxNOztNOzs7Uzs7VSxvQjtVLEcsa0Q7O1M7O1UsSTtVLE87VSxPOzs7VTs7OztZOzs7OzJCLDRDO2E7YTtlOzs7a0I7a0IsTztpQjs7WTs7O2E7YztjO2dCOzs4QixPLCtCOzthO2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7Uzs7UTs7O0k7Ozs7Ozs7Ozs7Ozs7O007TyxXOztRLDJDOzs7OztLLEksSTs7Ozs7O0s7O0c7O0ksTzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksVztJO2lDOzs7STtHOztJLGlCOztJLFc7SSxPOzs7YyxrQixROztlOzs7Z0IsTztlOztpQzs7Ozs7O2M7YTs7Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87O3FCO1EsTzs7O2tCOzs7Z0M7Z0M7aUI7Ozs7aUIsNEI7USxPOztRLG9CLFU7OztTLHNCLE87O1EsTzs7SSxPO0c7Rzs7SSxlO0k7O0ssTztnQjswQjt3Qjs7RztHO0k7STtJO0k7STtJO0k7STs7O0k7SyxNO0s7SyxXO2U7Ozs7Ozs7Ozs7Ozs7OzthLE87Ozs7OztROztJO0c7O0k7STtLLEksVzs7OzZCOzs7OztHOztJLFc7STs7O0s7O1E7OztXO1c7VTs7Szs7OztJO0c7O0k7SyxXO0s7SyxpQzs7Rzs7SSxjO0k7SztNLE87TSxPO0s7Szs7Tzt3QjtNOzs7Rzs7STtJLEksVyw4Qzs7OztLO00sVztNOzs7Ozs7Ozs7Ozs7OztZOzthOztnQixPOzs7MEI7MEI7eUI7O2U7WTs7O2E7OztpQixXO2lCLE87Z0I7YztnQjt3Qyw4Qjs7Ozs7OztrQjs7TTtNOzs7Rzs7SSxZOztLOzs7UTtRLFc7Tzs7O0c7O0ksNEI7OztJLE87Ozs7ZTs7O2M7OztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJLFc7SSx3QjtJOzs7Rzs7STtJLHNCO0c7O0ksWTs7OzswQjs7OztROztJO0c7O0k7STtLO0ssRztNO0s7TSxNO007TTs7Ozs7Uzs7Ozs7O1MsRztVO1MsWTs7Ozs7O3lCOzs2Qzs7Ozs7UztTO2lDOzs7Szs2Qjs7RzsyQiw2Qjs2QixtQixzQjs7STs7Ozs7Rzs7STs7Ozs7STs7O0c7MkIsVSwrQjs7STtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtNO1c7SztNLDZCO007O3lCO0s7OztLLEksTSw4Qjs7OztTO1U7VSwwQjtTOzs7OztVLDBCOzs7UyxHO1UsYzs7Ozs7OzthLEc7Ozs7Ozs7Ozs7OztTOzs2Qjs7Uzs7O1U7OztVOztVLDRCO1M7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7VTs7ZTs7O2lCOzhCO2dCOzs7VTtZOzs7ZSxrQixROytEO2U7Yzs7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDOzs7Ozs7aUI7bUQ7Vzs7O1M7VTtZOzs7ZTs7O2dCLFE7NkM7Ozs7Ozs7aUI7Ozs7Ozs7aUI7OztlOzs7VTs7OztlO2lEO1M7O1M7Ozt3Qjs7UyxnQjtTO1UsUTtVO1M7UztVO1k7OzZCOztVO1M7O1M7O1M7OztVO1k7OztlOzs7Z0I7Z0IsTztlLFc7Yzs7Uzs7SztJO0ksRzs7TTs7dUI7O0ksWTs7Ozs7O1Esc0I7UTs7O0k7SywrQjtLO0s7Ozt5QjtLOztJO0c7O0ksTzs7NEI7O0c7O0k7SztNLFU7OztNO1E7OztXO3dCO1U7OztNO1E7OztXO1csTztVOztNOzs7Szs7O2dCLE87STs7O0s7Szs7O0ksWTtJLE07Rzs7STtLOzs7OztNO007OztLOztJLGM7Ozs7Ozs7OzsrQjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7RzswQywwQjs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0ksTzs7O2MsSSxPLDRCO3FDO2M7YzthOzs7Rzs7STs7Tzs7O1UsVztVLE87d0I7O1M7OztJLE87Rzs7STs7SyxPOzs7SSxPOzBDLDBCO0c7O0ksSTtJLFc7Rzs7SSxxQzs7SSxlO0c7O0k7SyxPOztLO087O3dCOztLO0k7Rzs7STs7K0Isc0M7O0c7O0ksSSxpQzs7SyxtQixPO0s7OztRLFcsVztRO1M7VSxPO2lCOzs7USxjO087OztJO0k7STs7cUI7Ozs7Syx1QixVOzs7O08sc0IsVTs7Ozs7OztVLEc7VztZLFc7bUI7Ozs7Ozs7Ozs7OztLOzs7OztJOzs7Ozs7UTt1QywwQjs7OztROzs7Vzs7VTs7O0k7Rzs7STtLOzs7O0ssa0I7O0s7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs0QywyQjs7O0k7SztPOzs7VSxhO1Usc0I7VSxXO1U7VyxXO1c7Ozs7O2M7ZSxPO3NCOzs7Ozs7Ozs7Ozs7OztVO1csVTs7O1c7O1U7Uzs7O0s7Tzs7O1U7OztXOztVO1M7OztLLE87Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7OztpQjs7O1E7Ozs7O1M7OztjOzs7OztJOzs7OztZOzs7Rzs7STs7Rzs7STtJLE87Rzs7STtJO0k7Rzs7STtJO0k7SSxPO0c7O0k7STtJO0c7O0k7SSxPO0c7cUQsd0I7Rzs7SSxJLHVCO0ksTztHOztJO0ksTztHOztJOztLO087O3dCOztLO0k7Rzs7STtJO0k7STs7Rzs7STtLLFU7Szs7Szs7c0I7O0ssTzs7O2U7bUY7ZTtjOztJO0k7O0ssTztLOzs7SztJOzs7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtJO0k7STtLLE87Szs7O0ksTzs7Ozs7O0c7O0k7SyxPO0s7SztLOzs7OytCOzs7OztJO0c7O0k7SSxPO0c7O0ksWTs7O0s7O0k7Rzs7O0k7Ozs7Ozs7UTs7O1MsTTtTO1M7UTs7VTthO1MsVztTLEs7VSxPOzs7OztRLHVCO1EsRztTOzs7UTs7Z0MsbUIsd0I7Ozs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztZLE07OztTO1M7Ozs7O1E7O1M7Uzs7UztTO1c7OztjO2M7YTs7O1M7Vzs7O2M7YzthOzs7UyxhO1M7Vzs7O2M7Yzs7Ozs7OzthOzs7UztXOzs7YztjO2E7OztTLGM7UztXOzs7Yzs7Ozs7ZTs7O2U7YyxhOztjO2E7OztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssYztLOzs7Szs7STtHO0c7O007OztTO1U7VTtZO2U7O1M7UTs7STtJO0k7STtJLGU7STtJOztxQjs7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STs7cUI7O0k7STtLLE87SztPOzs7VTs7Uzs7O0s7Tzs7O1U7O1M7OztLO0s7SyxPO0ssTztLLE87SztJO0c7O0k7SSxPO0c7O0k7O0s7SztLO0s7SSxpQjtJLFc7Ozs7Ozs7Ozs7STtJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztpQixjO2tCLFc7a0IsTzs7aUI7Z0I7Z0IsTzs7OEI7O0c7O0ksVztJLE87Rzs7Ozs7eUI7O08sbUI7Tzs7Ozs7O1M7O1UsUTs7cUI7O1MsSSxzQixXOzs7O3VDLFM7Tzs7UTs7UTs7Z0M7TzttQzs7OztJOzJCLFc7O2M7YyxPOzs7d0I7d0IsTztpRTt1Qjs7YTs7Rzs7STtLLE87SyxhOztLOztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1U7WTs7O2U7OytDOztlO2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO0s7SztNLFE7TTs7TTs7Tzs7O007O087Uzs7O1k7OzthOzs7WTtXOztPOzs7O1ksTztXOzthOztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7O0ssTzs7OztlLG9COzs7O0k7SSxPLFc7Rzs7SSxPO0c7O0k7SSxPO0c7O0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7STs7O0ssTztLLE87SSxPOzs7STs7Tzs7d0I7SSxPO0c7OztJLEcsK0I7STtJOzs7STs7SyxPOztJOzs7SyxPO0ssTztJLE87OztJLFk7O2dCOztJLE87Ozs7Ozs7OztrQzs7Ozs7Ozs7Ozs7SSxLLGtDLDhCLCtDLFU7STs7O0k7O3lCOzs7NEM7OztJO0c7OztLLE87O1E7O29COztLO0k7SSxTOztJLGdCO0c7O0k7OEI7Rzs7OzttQjs7OztNOzs7TTs7Ozs7O0c7STtNOzs7O1UsTztTOzs7O0ksWTs7Szs7TSxVOzs7Ozs7SyxlO0s7TSxPO00sTztNLFc7TSxPO0ssTzs7STtHOztJOzs7SztJO3NDO0k7OztJLFc7SSxPO0c7O0ksTztHO0c7SSxhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87OztJO0k7STs7SyxPOztLLE87Ozs7Ozs7Ozs7Rzs7STs7Tzs7OztROztRLFE7USxVOzs7UTtTOztrQixPOztpQjs7OztRO1M7O2tCLE87O2lCOztPOzs7O1EsVzs7OztVLFc7O1U7OztXO2E7K0M7VTtrQjs7Ozs7Ozs7OytDOzs7OztpQjtnQzs7O1c7VztZLE87O2M7Ozs7Vzs7WTtjOzs7aUI7aUI7aUIsTzswQjs7Z0I7O2M7O1U7a0I7OztVOzs7O1csTztVO2tCOzs7Ozs7Ozs7O1Usa0IsTztVO2tCOzs7Ozs7Ozs7OztRLFc7OztRO2dCOzs7Ozs7Ozs7TyxXOzs7Ozs7UTtRO1MsTztlOzs7Ozs7Ozs7Ozs7O2lDOzs7Z0M7OztVLG1CLE87VSxXOzs7VTtVLFc7VSxXOztVLG1CLE87VSxXOzs7VTtVLFc7VTtrQjs7Ozs7Ozs7OztPOzs7TztPO08sYzs7Ozs7Vzs7b0I7b0I7b0I7b0I7cUIsTztxQixPO29CLE87O21COztPLDBCOzs7O0ksTzs7OytCLHdDO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSxXOzs7O00sVztNLE87O2lCO0ssYzs7TSxXO00sTzs7Szs7STtHOzs7OztnRSxTO0k7Ozs7YztjO2U7aUI7OztvQjtvQjttQjs7O2U7aUI7OztvQjs7O3FCLE87b0IsVzttQjs7OEI7YztlOzs7b0I7b0I7bUI7O2U7YztlLE07O2M7O2U7Z0I7Ozs7Ozs7b0I7Ozt1Qjs7O3dCLFE7Ozs7O3dDLG1COzt1Qjs7Ozs7ZTtnQixPO2dCLE87O2dCOztpQjttQjs7b0M7OzttQjs7Ozs7Ozs7OztnRDtlO2dCLE87Z0Isc0I7Ozs7Ozs7O2U7ZTs7Ozs7O3NDOzs7a0I7O2dCO2dCOztlOztrQjs7O3FCO3FCLEksVzs7OzZDOzs7cUIsWTttRDtxQjs7c0IsTztzQixTO3NCO3FCLE87b0I7OztlOzs7a0IsaUI7OzttQjs7O29CLE87b0IsTztvQixPO29CO3NCOzs7OzBCLE87eUI7O21CLE87Ozs7Ozs7Ozs7O2tCOzttQixPO2tCLE87Ozs7Ozs7O2lCOztlOzs7Ozs7OztlLE07O2E7Ozs7STtLOzs7Ozs7O0s7O0k7Szs7O2tCO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7SSxZOztJOzs7STs7O0ksbUI7eUI7STtZOzs2Qjs7Rzs7SSxxQjtJO1k7OzZCOztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2lCOzs7Ozs7Ozs7OztlLE87YztlOzttQjs7O2MsTzs7Ozs7d0I7Ozs7Ozs7Ozs7c0M7O2E7OztJOzs7O2M7YztjO2UsTTs7ZTs7a0I7O2UsTzs7Ozs7Ozs7Ozs7YyxpQjtjLE87Ozs7Ozs7Ozs7YTtHOztHLDhCO0csaUM7O0k7Rzs7STs7NkIsK0M7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7OztpQixPOzs7Ozs7Ozs7Z0I7OztPLE87Ozs7Ozs7aUIsVTtpQixPO2dCOztpQixPO2dCOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7OztJLFk7OztLLE87OztlLE87Ozs7MkM7O2M7O0k7SSxPOzs7O2dDOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7SSxJLDRCLDhCOzs7OzRCOzs7Rzs7SSxpQjtJLGdCO0ksTztHOztJLE87Rzs7STs7O087O1EsTztRO08sVzs7Ozs7Ozs7VSxZO1U7Ozs7Ozs7O1U7VyxPO1csVTtVOzs7Ozs7OztJO0c7Ozs7Z0I7Ozs7O1E7Ozs7O1MscUIsTztTLEs7Ozs7Ozs7Ozs7Ozs7O1M7O1Usa0I7VSxZO1U7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1E7O1E7Ozs7Ozs7Uzs7d0M7UyxRO1E7Ozs7Ozs7Ozs7O1M7Ozs7Ozs7NEI7Ozs7O1EsWTtROzs7OztROzs7UTs7Ozs7STtxQjtrQjs7STtHOzs7O0k7NkM7SSxPO0c7O0k7OzRDO0ksTztHOztJOztPOzt3Qjs7O087ZTs7Rzs7SSxTOzs7Szs7Ozs7OztNOzs7TTtLOzs7OztJO0c7O0k7STs7O1Esa0IsUTtvQjs7USxJLGdCOzs7O1UsTTs7Ozs7O1E7O1MsUTtTLFU7OztTOztZOzs2Qjs7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztROzs7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7Uzs7OzthOzs4Qjs7Ozs7O1E7Ozs7O2UsTTtROzs7O08saUI7OztPLGlCOzs7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZO0ksSSxnQjs7OzJCOzs7aUM7STtLLE07SyxVO0ssTTtLLFM7SyxRO0ksSTs7OzRCOzs7SSxnQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxpQjs7STtZOzs7ZTs7Ozs7OztrQjs7O3dDOzs7Ozs7Ozs7Ozs7OztrQjs7Ozs7eUM7Ozs7OzswQjs7OztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRLFk7Ozs7OztROzs7O0c7cUMsdUM7Ozs7Ozs7UTtTLFk7cUIsTTtTLG9CO1M7Ozs7O1UsTTs7Ozs7USxPO2lCOzs7b0I7Ozs7Ozs7Ozs7Ozs7OytDOzs7O3FCLE07O29COzs7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7UTs7O1M7UztTLE07UztTLE07USxPOzs7Rzs7STtJO0ssSSxjLHVDOzs7Ozs7Uyw2QjtTLEcsK0I7Uzs7OztTLG1DO1MsRyxpQztTOzs7aUI7OztHOztJOzs7STtLO00sbUM7Ozs7Ozs7O0ksTztHOztJO0s7SyxROzs7Ozs7OztPO1EsUTtRO1U7Ozs7Ozs7O0c7O0ksUzs7Ozs7Ozs7Ozs7Ozs7OztTLEc7Ozs7Ozs7Ozs7OztPOzs7WTtPOzs7OztPOzs7aUI7O3dCOztHOzs7SyxJLDZCLGE7Ozs0Qjs7O0k7O0k7Rzs7STtLO007TTtNOzs7UyxvQjtvQjs7UTs7O1M7Ozs7OzthLE87Ozt1QixtQjt1Qjs7d0I7d0IsbUI7a0M7O3NCOzs7OzJCOzs7O1M7UTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO007UTs7O1c7VyxPO1U7OztNLDBCLE8sbUM7TSw4QixXOztLOzs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7SSxZOzs7Ozs7Ozs7OztJO0ksTztHOztJO0ssVTtLOzs7Ozs7Ozs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7O1U7VSxTO1UsUTs7O1csTTtVLE07Ozs7Ozs7Ozs7Ozs7VSxHO1c7WTtZLE07a0I7Ozs7UyxNOztTOzs7VTs7WTs7O2U7Z0IsTTtnQixNO2UsTztjOzs7OztTOztVO2dCOzs7Uzs7O1U7Z0I7OztTOzs7O1U7Z0I7OztTOzs7O1U7Z0I7O0s7Szs7Rzs7SSxPO0c7O0ksa0IsTTtJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXOzs7Ozs7Ozs7Ozs7Ozs7b0I7O00sTTs7SztLOzs7SyxNO0k7Rzs7SSxZOztLO00sTztNLFU7O3dDO0s7O0k7Rzt1Qyw0Qjs7STtHOztJLDhCOzZCLGlCLGtCOztHOzt1QixPLHlDO0k7Z0M7OztLLE87Ozs7Ozs0QixPLHlDOzRCLE8seUM7OztxQixPLHlDO0k7Szs7UTs7UTs7UTtnQjs7STtLOztNOztNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxPOzs7Ozs7MkIsTyx5QzsyQixPLHlDO0c7O0k7Ozs7USxPOzs7Ozs7Ozs7O087Ozs7USxPO1EsTztPLE87Ozs7Ozs7Ozs7O2lCOztrQjs7aUI7O2tCO2tCO2tCLE87aUIsTzs7OztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O08sVztPLE87Ozs7Ozs7Ozs7O0c7O0ksd0IsTyx5QztJLCtCLFM7O0s7O00sTztLLE87O0k7SztPO0ssTztJLE87Rzs7cUIsTyx5QztJLDRCO0k7OzJCOzs7Tzs7O087O1E7UTtRLE87TyxPOztPOztRO1E7USxPO08sTzs7Rzs7STs7OztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O08sTzs7Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7Ozs7Rzs7cUIsTyx5QztJLFU7STs7Ozs7SyxPO0ssYztJLE87Ozs7Ozs7Yzs7OztHOzt1QixPLHlDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztROztXOztjOztjOztjO3NCOztVO1E7UTtRLE87TyxPO2dCOzs7Ozs7O087Tzs7NkI7O087OzJCLE8seUM7UTs7VyxPO1U7TztROztXOzs7WTs7VyxPOztXLHFCLE87VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTztpQjs7O087OztPOztROzs7TyxvQjtPLE87Z0I7Ozs7OztPOzs7TyxzQjtPLE87OztPOztRLFU7TztpQjtpQjs7Rzs7STs7Szs7STtLLE07SyxNO0ksSTs7Ozs7Szs7STtHOztJOzs7OztJOzs7Tzs7Ozs7USxPO08sRyx3QztPLFc7Tzs7K0Q7TztRO1E7Ozs7Ozs7OzBCO0s7O0c7RztJOzs7Ozs7Ozs7O0ksZTs7STs7O0k7O087O087O087Ozs7RzttQixtQzs7STtLOzs7Ozs7TSxRO00sUTtLOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7O0ksTztpRCxvQjtHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7VztZO2M7OztpQjtpQjtnQjs7WSxVOzs7VztZO2EsTzthLE87WTs7Ozs7Ozs7Ozs7Ozt5Qjs7VTs7Ozs7OztTLGtCO1UsZTtVLEs7VyxNO1U7VyxPO1csTztXLFE7Ozs7VyxjO1csYzs7O1c7VyxjOzs7Ozs7Ozs7Ozs7O1c7O2M7OztpQixrQixRO2lFO2lCO2dCOztXOzs7O1c7O1k7O2E7Ozs7OztjLFU7YyxVOzs7Ozs7Ozs7OztnQixXO21CO2lCO2tCLFE7a0IsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7aUI7OztrQjtrQjs7Ozs7Ozs7Ozs7O2M7O2dCOzs7aUI7aUI7Ozs7Ozs7Ozs7Ozs7O1ksSTs7Ozs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7OztNLGM7Ozs7Ozs7O3NDOzs7OztzQzs7Ozs7Ozs7OztJOztNOztNO08sTztPLE87TTs7Ozs7OztLOztJO0c7OztJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7Ozs7O1U7O2dDOzs7Vzs7WSxRO1ksVTs7OztlLHFCLE87ZSxHOzs7ZSxzQixPO2UsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7O2UsVztlLE87Yzs7Vzt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLE07Ozs7Ozs7Ozs7O1c7WTs7Ozs7Ozs7OztVO1c7WTs7ZSxXO2UsTztjOztXO3dCOztVOzs7VyxPO1csTzs7O2dCOzs7a0I7bUIsTzttQixPO2tCO21CLFc7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7a0I7aUI7Ozs7VTs7O1c7WSxrQixtQztZOztlOzs7Ozs7Z0IsUTtnQixRO2U7Ozs7Ozs7Z0I7O2U7Ozs7MkI7O2U7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNOzs7SSxnQjtJO0ssTztLO0k7SyxjOzs7Ozs7Ozs7SSxnQjtJOzs7Ozs7SSxvQjtJO0s7OztLLE87SSxPOzs7ZTtlO2dCOztlO2U7Z0IsUTs7O2dCLFU7Ozs7O2dCLEksc0I7O2dCLG1COzs7OzswQjtlO2dCLFU7Ozs7Z0IsVTs7OztnQjtlO2dCLEksb0I7OztlO2M7Ozs7Ozs7STs7Szs7STtLLE07SyxNO0s7SztJLEk7Ozs7O0s7O0k7Ozs7SSxzQjs7MEI7STtHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksTzs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixPLDRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksTzs2QztHOztJOzs7SyxNO0k7SSxPOzs7STtJO0k7STs7c0IsbUIsTyw2Qjs7O0c7O0k7STtJO0k7SSxnQixNO0ksTztHOztJOzs7OztJO0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJO0k7Rzs7O0k7STtJLE87OztJO0ksd0I7Rzs7STtJLHdCO0c7OztJO0k7Ozs7TztPLE87OztPLE87OzRCLE87OztPLE87OzZCLE87OzhCLE87OzZCLE87O08sMEIsTTtPLE87OzRCLE87OzZCLE87OztPLE87OztpQjtpQixPO2dCOzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TywwQjt1QyxPOzs7O0k7STtJO0k7O0c7Ozs7Ozs7STtJO0k7STtJLE87OztJO0ssa0IsTTtLLE87OztJLE87OzJCOzs7O0k7OztLLE87OztlO2U7ZTtlO2U7OytCOztlO2UsZ0IsTTtlLE87Ozs7O0ksTzs7MkI7Ozs7STtJO0k7STtJOzs7TztPO087TyxPO007O0k7SSxnQixNO0k7SSxPOzs7YztjLE87YTs7Rzs7SSxxQixNO0ksTzs7O0k7STtJO0k7O3NCLGtCLE8sNEI7O0ksZ0IsTTtJLE87Rzs7Ozs7O0k7STtJLE87OztJOzs7OztJO0k7STtJOzs7SztzQztLO0ssVTtLLE87OztJO0c7Ozs7Ozs7O0k7STtJO0k7Ozs7TztPO2lDOzs7eUIsTzs7MEI7OztVO1UsTzs7OztxQzs7OzRCOzs7TztPOztPOztPLHFCLE07TyxPOzs7TztPLFU7TztPLE87OztpQjtpQjs7aUM7O2lCLE87Z0I7OztPLHNCLE07TyxPOzs7TyxPOzs7aUI7aUI7aUIsTztnQjs7O08sdUIsTTtPLE87OzhCLE87OzhCLE87OzhCLE87OztPO08sTzs7OztJOzsyQixPOztPLHNDLE07TztPLE87O08sb0IsTTtPLE87ZTs7Ozs7Ozs7OztJO0k7STs7O087TztPLE87TTs7STtxQzs7OzhCOztPOzs7TztPLE87OztPOzs7VTs7OztXLE87OztVO1UsTzs7Ozs7USxPOztPOzs7OztRLE07TztPO087eUM7TyxPOzs7TztPLE87OztpQixrQixNO2lCLE87Z0I7Ozs7TztPLFU7TyxPOzs7TztPLFU7TyxPOztPLDBCLE07TyxPOzs7TztPLFU7TyxPOztPLHdCLE07TyxPOzs7Tzs7O1U7NkI7O1U7VSxPO1M7O08sVTtPLE87OztPO08sTzs7O087TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztnQzs7NEI7OztPO08sTzs7O08sTzs7O2lCO2lCO2lCLE87Z0I7Ozs7TztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O2dDOzs7TztPLE87Ozs7O0k7OztPO087TyxPO007O0k7Ozs7STtJO0ksTzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08sMEI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJO0ksd0I7Rzs7SSxZOztJO0ksTzs7Ozs7Ozs7STtJO0k7Ozs4Qjs7NkIsTzs7O087TyxPOzs7TztPLE87OztpQjtpQjtpQixPO2dCOzs7Z0MsTzt3Qzs7OztJOzs0QixPOzsyQjs7MkIsTzs7OEIsTzs7NkI7cUMsTzs7Ozs7Ozs7O0k7STs7O0ksTzs7Ozs7Ozs7STtJO0k7SSxPOzs7SSw4Qjs7OztPOzs7VTtVLE87Uzs7TyxPOzs7aUI7aUIsTztnQjs7OztPO08sTzs7O087TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OzhCOzs2QixPOzs7TztPLE87OztPO087TyxPOztrQyxPOzs7OztRO1E7USxPOzs7TztPLE87c0MsTzs7Ozs7Ozs7O0k7STtJO0k7SSxPOzs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87OytCLE87OztPO087OztVO1UsTztTOztPLE87OztPO08sTzs7O2lCLGtCLE07aUIsTztnQjs7Ozs7Ozs7TztPOzs7VTtVLE87Uzs7TyxPOzs7TztPLFU7TyxPOzs7TztPLE87Ozs7Ozs7OztJO0k7STs7OztPO08sVTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO3VDLE87Ozs7Ozs7OztJO0k7STtzQzs7O087OztPO08sTzs7Tyx5QixNO08sTzs7O087TyxVO08sTzs7TywyQixNO08sTzs7O087TyxVO08sTzs7OEIsTzs7TywyQixNO08sTzs7Z0MsTzs7Z0MsTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STtJOzs7SztLLFU7SyxPOzs7SSxPOzs7O0k7STs7O0s7SyxPOzs7SSxPOzs7STs7SyxPOzs7SSxPOzs7O0k7STs7OzRCLE87OztPO087OztPO087OztPO08sTzs7NkIsTztzQyxPOzs7O0kscUIsTTtJLE87Ozs7STtJLFU7STtJLE87Ozs7Ozs7O0k7STtJO0k7SSxPOzs0QixTO3lDLFM7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7a0IsUzs7SSxnQyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7Ozs7SSxnQjs7NkIsUzs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEIsTyw0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SyxPO0k7OztJLE87NkM7Rzs7STs7OztLLE87SyxPO0ksVzs7O0k7SyxPO0ssTzs7O0ssTzs7OztLOztLLE87SztPOzt3Qjs7STs7Ozs7Ozs7Ozs7O0c7O0k7SyxVO0s7SztLLE87SyxXO0ssaUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SztLO0ssZ0I7STtHOztJO0ssVztLLGtCOztJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0ssWTtJOztPOzs7USxPO3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7Ozs7O1EsTzs7O1c7OzRCOzs7O087O1EsTztRLHNCOzs7Vzs7NEI7Ozs7Ozs2Qzs7Ozs7MEI7O0k7OztJO0ssVTtLO0ssVztLLGlCO0k7Rzs7STtLLFM7SztLLFU7SyxnQjtJO0c7O0k7SyxrQixPO0ssVzs7O0k7WTs7NkI7Ozs7STs7O0s7YTs7O2dCO2lCLFM7aUI7aUI7bUI7O29DOztpQjtpQjtpQixPO2lCLFM7aUIsZ0I7Z0I7Ozs7Ozs7Ozs7Ozs7STtZOzs2Qjs7OztJO0ssVTtLO0s7SyxPO0ssTztLLE87SztPOzt3Qjs7SyxXO0s7SyxPO0ssZTtLO0ssTztLO087O3dCOztLLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7STtLLFk7SztLO0ssTztLO087O3dCOztLO0ssTztLLHFCO0ssbUI7STs7Ozs7Ozs7Rzs7STtLLFk7SyxvQjtLLG1CO0k7Rzs7STtLLFU7SztLOztLOzs7O00sTztNLE87TTs7O1M7MkM7Ozs7Ozs7O0kscUI7STtHOztJO0ssVTtLLFU7SztLLE87STtLLDBCOzs7dUIsVzs7cUM7O1E7Ozs7UyxPO1E7OztJO0s7Tzs7d0I7O0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7VTt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7O1U7WTs7O2U7OztnQixPO2U7dUI7O3dDOzs7Yzs7VSxPO1UsTzs7OztTOzs7O1UsTzs4Qjs7O1M7OztVLE87VSxzQjs7O2E7OzhCOzs7OztTOztVLE87eUI7Ozs0Qzs7O1M7O1UsTztxQjs7OzZDOzs7Uzs7OztVLE87MEI7Ozs7O0kscUI7STtHOztJOzt1QixXOztPOzs7USxPO1EsTztPLFc7O08sZ0IsTztPLFc7ZTs7Ozt3QixxQjtJO0ssVTtLO0ssTztLO087O3dCOztLLFU7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7UyxROzs7NEM7OztROzs7UztXOzs7Ozs7OzhCOztlOzs7Z0IsUTtnQixTOztjLGE7Yzs7Ozs0Qzs7Uzs7Ozs7OztVLFE7VSxPO1UsVTtVO1k7OzZCOztVLGU7Ozs7OztROzs7UyxPO1MsTztTO1c7OzRCOzt3Qjs7O1E7Ozs7UyxPO1MsTzt3Qjs7O1E7OztTLE87UyxPO3dCOzs7UTs7UyxPO3dCOzs7UTs7OztTLE87UyxPOzs7O1E7OztTLE87MkI7OztROzs7O1M7Vzs7O2M7OztlOztjOzs7ZSxPO2M7YTs7UyxPOzs7OztZOzs7UTs7OztTO3lCOzs7UTs7Ozs7UyxPO1M7eUI7OztROztTLE87eUI7OztROzs7O1MsTztTLE87UyxPO3lCOzs7UTs7O1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7Ozs7O1MsTztTLE87OzJCOzs7Ozs7eUI7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7O1MsTzs7OztROzs7UyxPO1Msc0I7Ozs7WTs7NkI7Ozs7UTs7Ozs7O1MsTztTLE87Ozs7UTs7O1MsTzt5Qjs7Ozs7O3lCOzs7MEM7Ozs7Ozt5Qjs7Ozs7eUI7OztROzs7Ozs7UyxPO1MsTztTLE87OztZOzs7Ozs7Ozs7Ozs7O1E7OztTLE87eUI7O0kscUI7STtHOztJO0s7SztLLE87SSxvQjtJOztPOzt3Qjs7STtHOztJO0ssVTtLO0ssTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJO0ssVTtLLFU7Szs7O3dDOztPOzs7USxVOzs7Ozs7OztpQjs7Ozt5Qzs7MEM7OzswQzs7OzBDOzs7Tzs7USxPO3VCOzs7MEM7OzswQzs7OzBDOzs7OzsyQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OzRDOztJO0c7O0ksd0I7Rzs7SSxZO0k7Ozs7SyxPO0k7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxPOzs7O087OztRLE87USxzQjtRO1U7OzJCOzt1Qjs7OzRDOzs7Ozs7OztJLHFCO0k7Rzs7STs7NEIsVzs7O087OzJCLFc7OzhCLFc7OztPOzs2QixXOzs7O0k7SyxPO0ssTztLLE87OztJO3NDOzs7Ozs7Rzs7STtLLE87SyxPO0ssTzs7O0ksVztHOztJLDhCOzs7Tzs7O1E7VTs7O2E7YSxjO1k7O1E7VTs7O2E7YSxrQjtZOztPOztPLGtDLE07TyxXOztPOztRLE07USxNO087O087Ozs7USxPO08sVzs7OztJO0ssVTtLLFU7Szs7Ozs7Ozs7O3lDOztPOzs7USxNOzs7O087Ozs7USxNO1EsTTt1Qjs7Ozs7dUI7Ozs7O1E7OztTLE07UyxVO21COztROztTLE07bUI7Ozs7Ozs7dUI7O0kscUI7STtHOztJO0ssUztLO0ssVTtLLGdCO0k7Rzs7STtLLFM7SyxTO0s7OztPOzs7O1EsTTtRLE07Ozs7MkM7OztPOzs7Ozs7USxNO1EsTTtRO1U7OzBCOzs2Qjs7O087OztRLE07USxNO1E7VTs7MEI7O3NCOzs7Tzs7Ozs7USxVOzs7USxNO1EsTTs7Ozs7Vzs7MkI7Ozs7O087Ozs7OztRLE07USxNO3NCOzs7Tzs7O1EsTTtzQjs7SSxvQjtJO0c7O0k7SyxZO0ssWTtLOzs7Tzs7OztRLE07USxNOzs7OzRDOzs7Tzs7OztRLE07Z0M7OztPOzs7USxNO3lCOztJLHVCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFUsZ0M7Ozt5Qzs7Ozs7Ozs7eUM7Ozs7Ozs7Ozs4Qzs7O087Ozs7USxNOzJCOzs7MkM7O0kscUI7STtHOztJO0ssVztLLFc7Szs7Ozs7O1M7Ozs7VSxNO2lDOzs7Uzs7VSxNOzBCOzs7Uzs7OztVLE07VSxNOzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTtVLE07Ozs7Ozs7MEI7OztTOzs7O1UsTTs7Z0I7Ozs7Ozs4Qjs7OzBDOzs7Uzs7OztVLE07Ozs7OztJLHNCO0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7SSxJLFMsZ0M7O0s7Ozs7TSxNO00sTTs7O3NDO0ksb0I7STtHOztJLEksUyxnQzs7Szs7O00sTTs7O3dDO0ksb0I7STtHOztJOztLLFc7OztJLGdCOzs7SSxJLFMsZ0M7Ozs7Ozs7OzsyQjs7O087Ozs7OztROzs7O087Ozs7UTs7OztPOzs7USxNO3NCOzs7eUM7OzswQzs7SSxvQjtJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7OztJO0ssUztLLFM7SyxVO0ssZ0I7SztJO0c7d0IsUztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RztJO0k7Ozs7Ozs7Ozs7OztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLO007TTtROzt5QixpQzs7Ozs7O0s7Ozs7TTs7Ozs7O0s7OztROzs7Ozs7O1csRztZO1k7O1c7Ozs7Ozs7O1c7VztXOzs7VyxHO1k7WTs7Vzs7WTtZO1k7Ozs7WTtZO1k7WTtZOzs7O1k7WTtZO1k7WTs7VztXO21COztRLEc7UztTOztROzs7Ozs7O1M7OztRO1E7Ozs7O1csTztVO1E7USxRO1E7UTtROzs7O0s7STtJOztLOzs7Szs7O0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7OztPLE87OzttQixPOztPLE87O0c7OzJCLDRCOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxNO0s7STs7Syx3QjtLOzhDO0k7OztLOzs7O0ssOEIsc0I7Syx3Qiw2Qjs7TTtNOzs7USwyQjs7OztPOztLOztNOztLO3FCOzttQzs7OztRLEksVTs7OztTLEksVTs7O2dDOzs7UyxPOzs7O2tCO1Esa0I7OztROzs7UztROztROzs7UztTOztTOzs7O1U7VTs7Ozs7Uzs7UTtROztROztTO1c7OzJCOztROzs0Qjs7UTs7O1M7aUMsa0M7Uzs7O1MsSSxXOzs7Z0M7OztTOztROztRLDBCLFU7c0I7O1E7a0M7Ozs7Szt3QztJOztLLGlCO0s7STs7O007TTtLO0ssNkI7Szs7eUI7O1Esa0M7UTs7dUM7OztRLFc7OzRCOzs7UTs7eUI7bUM7O0k7STs7SztPO3VDOztLO087dUM7O0s7TTtNO007Ozs7Ozs7O0k7O0s7Szs7b0M7OztTOztTOztTOztTOzs7O2lCOzs7STs7Szs7Ozs7O087O1E7Tzs7a0I7O3NCO0s7STs7SztNO007TTs7Ozs7OztNO0s7OztJO0k7O21DLFM7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJOzt5QixPOzsyQixPOzt5QixPOzt5QixPOzswQixPOzsyQixPOzsyQixPO21DLE87Ozs7STs7Tzs7eUIsTzs7MkIsTzs7O08sTzs7OEI7Ozs7TyxPOzs4Qjs7Ozs7O0k7SSxJOzs7Ozs7O0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7MEIsTyxtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7eUIsVzs7MkIsVzs7eUIsVzs7O08scUI7OzBCLFc7OzJCLFc7OzJCLFc7OzJCLFc7O0c7RzswQixPLCtCOztJLFM7SSxPOztpQyxPLDJCOzs7YztjOzs7ZTtnQixNOztlLFk7ZTtnQjtnQjtpQixJOzs7Ozs7OztjO2E7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHO0csSSxzQjt5QixnRDs7STs7RzttQyxzQjsrQiw2Qjs7STtLLE07Szs7Rzs7STs7SyxVO0s7Ozs7O1E7Ozt5Qjs7O1EsaUI7O1M7VTtVOzthLDJCO2E7YyxJLGlCOzs7cUM7Ozs7OzsyRDs7YyxhOzs7Ozs7O1k7VTs7YSxZOzs7Yzs7YTtZOzs7Ozs7Yzs7OztjOztlLEs7Yzs7YTs7YzthLE87O3FDLDhCOzs7OzthOzs7YzthLE87O3FDLDhCOzs7O1M7Ozs7O2E7Ozs7YzthO2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthO2E7O2M7O2EsTztZOzs7OzthOzs7Yzs7O2lCOzs7O2lCOzs7O2lCOzs7b0I7OztvQixxQzs7Ozs7O29COzs7O3VCOzBCO3FCO3FCOztvQjttQjs7Ozs7aUI7OztpQjs7O2tCO2lCOzs7aUI7OztrQjtpQjs7OztpQjs7O29COzs7cUI7b0I7bUI7Ozs7O2lCOzs7OztpQjs7O2EsTztZOzs7Ozs7OzthO2E7O2M7O2EsTztZOzthO2E7OztnQjs7OztnQjs7OzttQjs7OztzQjs4Qjs7Ozs7OztnQjs7O2EsTztZOzs7O2E7OztjOzs7aUI7Ozs7aUI7OztvQjs7O3FCOzs7O3dCOzJCOzs7Ozs7OztvQjttQjs7OzthOzs7Z0I7Z0I7aUI7OztvQjs7O29COztnQjtlOzthLE87WTs7Ozs7YTs7Ozs7YTthLE87WTs7O2E7Ozs7Ozs7O2dCOzs7Ozs7aUI7Ozs7Ozs7OztnQjs7O2EsTztZOzs7YTs7Ozs7Ozs7Z0I7Ozs7OztpQjs7Ozs7YSxPO1k7O2E7OztjOzs7aUI7Ozs7aUI7Ozs7Ozs7aUI7Ozs7aUI7OzthLE87WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bUM7Ozs7O21DOzs7Ozs7bUI7Ozs7OzttQjs7OztRLHNCO1E7UyxPO1E7UTtROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOztpQzs7ZTs7Z0IsZTtlLE87O3dDLG9CLG9COzs7ZTs7Z0IsTTtnQixVOzs7aUM7O2lDOztpQzs7aUM7O2lDOztpQzs7a0M7O21DO3lDOztXOztRO1M7VztTLE07UyxNOzs7Yzs7UyxNO1MsTTtTLE07O1MsTTs7Uzs7WTs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTztPOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7OztNLFU7TTs7O0ssTztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CLE8sOEI7Rzs7STtJLE8sd0MsZTtHOztJLE87OztjO2M7ZTs7Z0I7Ozs7YzthOztHOztJLFU7SSxPO0c7O0k7STtLO0ssTztJOztLO0s7SyxPO0k7O0s7Ozs7O1M7O1UsWTtVLG9CO1M7VTtXLE87Vzs7Ozs7Ozs7O1M7Ozs7O1U7Ozs7VTs7Ozs7Uzs7Ozs7O2E7OztZOzs7Ozs0Qjs7MkI7O1M7OztVO1UsTTtTOzs7SztLLE87STs7SyxjO0s7SyxPO0k7O0ssa0I7Ozs7Ozs7O1k7VztRO1M7MkMscUI7Ozs7UTs7OzRCO1E7O3dCOzs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0M7OztJO0k7OztPO08sTzs7O087OztVOzs2QixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPOzsrQixPO3VDLE87Ozs7TyxPO2U7O0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztVOztJO0c7O0k7STs7OzZCLFc7Ozs7USxzQztROzs7Ozs7Szs7Rzs7O0ksZ0I7OztJLFk7Ozs7Ozs7Tzs7O1E7OztPOzs7OztLLFk7SztLO0k7STtJO0c7O0k7O3lCLFc7O3lCOzt1RDs7eUI7OzJCLFc7OzJCLFc7OztPLFc7O0c7O0k7STtHOztJLFc7SSxPO0c7O0ksbUIsTztJLE87Rzs7STtLLE07SyxROzs7Rzs7STtLLE07SyxRO0ssTztJLE87O0c7O0ksSSxNLG1DOzs7Ozs7bUI7OztPOzs7USxPOzZCOzs7cUM7O087OztRLE87K0I7Ozt3Qzs7O3NDOztxQzs7Tzs7USxPO21COzs7c0M7O3FDOzs7Ozs7Vzs7O2M7YyxPO2E7Ozs7Ozs7O1c7OztjO2MsTzthOzs7O3dDOzs7O0ksTztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOztHOzs7SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztLLFc7Szs7UTs7O1c7Ozs7WSxPO1ksTztXLFc7VTs7Szs7UTs7eUI7O0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLO0s7O1E7O3lCOztJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7VzthOzs7Z0I7Z0IsVztlOzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2dCOzs7aUIsTztnQjtlOzs7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7OztJO0ssTTtLLFE7SyxPO0ssTztJLE87O0c7O0k7SyxNO0ssUTtLOzs7Ozs7Ozs7O1E7Ozs7UyxPO1MsTzs4Qjs7Ozs7Ozs7dUI7O1M7Ozs7O1UsTztVLFU7Ozs7Ozs7Ozs7OEI7OztjOzs7ZSxPO2UsTzs4Qjs7Ozs7Ozs7Ozs7OztRO1M7Vzs7O2M7Ozs7ZTs7O2dCOzs7YztlLFE7ZSxPO2UsZ0I7ZTtpQjs7K0IseUI7O2U7YzthOzs7OztROzs7UztXOzs7YztjLFc7O2Msc0I7YTs7O29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzJCOzs7UTs7O1M7Vzs7O2M7aUM7O2Msb0I7YTs7O1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87MkI7Ozs7UTs7OzttQjs7O1c7O1ksTzttQjs7O1c7O1ksTzttQjs7d0I7Ozs7O1E7OztTLE87Ozs7UTs7O1MsTzs7Ozs7Ozs7WTs7O2U7OztnQixPO2U7Yzs7OztROzs7O1MsTzs2Qjs7O1E7OztTLE87cUI7OzswQzs7OzJDOzs7dUM7Ozs7cUI7OztROzs7O1M7UztrQzs7O1MsUTtTLE87UyxTO1MsUzs7OztROztTO1MsTzs7Ozs7cUI7OztROzs7UyxPO3FCOztJLFc7SSxPOzs7Yzs7OztlLFE7ZSxVO2M7Ozs7b0M7OztpQjs7O2tCLE87a0IsTzs7K0I7OztpQjs7a0IsTztvQzs7Ozs7OEI7O2MsTzs7Ozs7Rzs7STs7SyxXO0ssVztLO0k7Rzs7STs7Tzs7O1U7VSxjO1M7O0k7Rzs7STtLLE07SyxRO0s7O0ssTztLLE87SSxPOztHOztJLGtCLE87SSxPO0c7O0ksSSxNLG1DOzs7b0M7O087OztRLE87NkI7OztPOztRLE87bUI7Ozt3Qzs7O3NDOztxQzs7cUM7O087O1EsTzttQjs7O3NDOzt3Qzs7O3NDOzt3Qzs7O087O1EsTztvQjs7O087O1EsTztvQjs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0s7SztJLE87O0c7O0k7SyxNO0ssUTtLLE87SSxPO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtLLE07SyxRO0ssTztLO0s7O1E7O3lCOztJLE87Ozs7Ozs7Ozs7Rzs7STtJLHNCO0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7SSxZOztJLGlCOzs7STtLLE07SyxRO0s7Ozs7O3FDOztPOzs7USxPOzs7O087OztRLE87USxPO21COzs7d0M7Ozs7SSxPO0c7OztJOztPLG9CLE07Tzs7TyxvQjtPOztPLG1CLFE7Tzs7TyxzQixNO087O08sc0I7Tzs7TyxxQixRO087Ozs7STtLLE07SyxRO0s7OztLLE87Ozs7Ozs7cUM7O087OztRLE07Ozs7Tzs7O1EsTTttQjs7OzBDOzs7OztRLE07Tzs7USxNO21COzs4Qzs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7TyxNOzt3Qzs7O087Ozs7USxNOzZCOzs7Tzs7O1E7VTs7O2E7YSxXOzthLHNCO1k7OzttQjs7O087Ozs7USxNO1EsTTs2Qjs7Ozs7OztTOzs7VSxNO1UsTTs7Ozs7O1MsTTtROztTLE07bUI7Ozs7O087OztRLE07bUI7O0ksTztHOztJO0ssTTtLLFE7Szs7O087OztRLE07USxNOzs7O3NDOztPOzs7O1EsTTswQjs7O087OztRLE07bUI7O0ksTztHOztJOztLLE07SyxNO0ksVztHOztJO0ssTTtLLFE7Szs7O3FDOztPOzs7Ozs7USxNO3VCOzs7Tzs7Ozs7O1EsTTs7a0I7OztPOzs7O1EsTTt1Qjs7OztJLE87Rzs7STtLLE07SyxRO0s7Ozs7Ozs7O1E7Ozs7UyxNOzJCOzs7UTs7UyxNO29COzs7UTs7O1MsTTtTLE07Ozs7UTs7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7Ozs7O29COzs7UTs7OztTLE07b0I7OztROzs7UztXOzt5QixPLGtDOzs0Qjs7O3dDOzs7Ozs7Z0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7Ozs7Ozs7Ozs7Ozs7O3lDOzs7OztLO3lEO0s7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7O1E7VTs7d0IsTyxrQzs7d0I7Ozs7Ozs7cUM7Ozs7O3dDOzs7Ozs7Ozt3Qzs7UTs7O1M7O3lDOzs7O087OztRLE07dUI7OztPOztRO21COzs7O0ksTztHOzZCLFM7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLE87Ozs7Ozs7MkI7OzhCLE87O2U7ZTs7Ozs7Rzs7cUIsTyx5QztJLDBCO0k7OztPLE87OztpQjs7OztpQjs7Ozs7TyxPOztPOzs7O1E7O08sTzs7O08sTzs7Rzs7O0ksTzs7O0k7Ozs7SyxPO0ksTzs7OztJLFc7SSxTO0k7SyxPO0ssTztLLE87SSxPO0c7O0k7Ozs7USxnQjtvQixXOzs7OztRLFc7O1Esa0M7Ozs7O1Esa0I7O1MsVzs7OztHOztJLE87K0MscUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7b0I7SSxvQixTO0k7Rzs7Ozs7Ozs7OztVO1csTztXO3dCOzs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7Uzs7Ozs7WTs7YTs7OzRCOztZOztZOzs7Ozs7OztZOzs7YTs7Ozs7O2EsVTs7Ozs7Ozs7O2E7YyxXOzs7YyxjOzs7WTs7Ozs7Ozs7Ozs7Ozs7OztxQjtlOzs7Ozs7Ozs7OztvQjtjOzs7Ozs7OztlOztnQjs7O2dCOzs7Z0I7Ozs7ZTs7Ozs7O2E7O1k7YTs7O2E7OzthOzs7O1k7Ozs7Ozs7O1UsRyxnQztVLFc7VTs7O1c7WSxPO1ksTztZLE87bUI7VTs7UyxJLFc7Ozs7Ozs7WTs7Ozs7UztzRDtTOztVOzs7Ozs7Ozs7Ozs7d0I7O1M7OztPOztRLE87USxPO1E7OzJCO087UTtRO087OztLO007TTtNO0s7Ozs7STs7TTs7Ozs7TyxTO087Ozs7OztNO087OztNOzs7c0I7STtHOztJOzs7TSxXO0ssb0IsTztLLFc7O2dCO0k7O0ssUTtLLE87SSxXO0c7OztJOztLLDRDOztJLGE7STtHOztJO0ssTztLLFU7O087OztXOzs7WTs7VztXO1U7Ozs7Ozs7Ozs7OztLOzs7O1E7Ozs7O007Tzs7O08sTTs7Ozs7Ozs7STtLO087OztVOzs7a0I7VztVO1M7Ozs7Ozs7Ozs7O0s7OztNOzs7Ozs7O08sRzs7Ozs7WTs7Ozs7Ozs7Ozs7SyxJLFU7Ozs7Ozs7Ozs7Szs7d0I7O3dCOzt3Qjs7OztLOzs7OztJO0ssTztLOzs7Ozs7Ozs7OztLOzs7Ozs7O2tCOzs7TTs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztVO1k7OzhCLHFCOztVOzs7Ozs7UztVLGM7Ozs7Ozs7Ozs7Uzs7OztVOzs7VTtVLGM7Ozs7Ozs7Ozs7Uzs7OztVO1UsTztVO1k7Ozs7Ozs7UztVO1U7WTs7Ozs7Ozs7OztTOzs7Ozs7VSxPO1UsZTtVLE87Uzs7Ozs7Ozs7UztTLDBCO1M7Ozs7Ozs7Ozs7Ozs7Ozs7VTtXLFk7O2E7Ozs7VTs7VzthO1c7Ozs7Ozs7OzthLE07Ozs7ZTs7NkIsdUI7Ozs7Ozs7Ozs7OztTO1U7Ozs7Ozs7Ozs7Uzs7OztVLE87Uzs7Ozs7Ozs7UztVLFU7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OztTOzs7O1M7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFU7VSxXOzs7VTtZO1U7Ozs7Ozs7Ozs7Uzs7OztVLFE7VSxTOztVO1U7WTs7Ozs7Ozs7SyxNOzs7STtLOztNOzs7O0k7Ozs7STtLOzs7Ozs7Ozs7Ozs7O0ssTztLLE87OztJO1k7Ozs7Ozs7STtJOzs7SztNOztJOzs7Ozs7Tzs7O0s7Ozs7Ozs7OztLOzs7OzBDOztJO0c7O0k7STs7Ozs7Ozs7SyxzQjtLOztHO0c7STtJOztJO0s7Szs7O0ksTzthLDRDOztHOztJO3VCOztJO0c7Ozs7Ozs7Ozs7O0k7Ozs7SztpQixNOztLOzs7TTtNLE07Szs7STtLLFE7SyxTO0s7SSxNOztHOzs7O0k7O0s7OztTOzs7Ozs7O3lDO0ksd0I7SSxNO0c7RyxJOztJLFk7O0k7Rzs7STs7Tzs7Tzs7Tzs7O1E7UTs7O1M7OztVLE87VSxPO1MsTzs7OzBCO087ZTs7Rzs7SSw4Qix5Qjs7Rzs7STtJO0s7O007OztNOztPLE87Ozs7Ozs7a0I7O0k7Rzs7STtJOzs7Ozs7O1U7Ozs7VyxRO1c7Ozs7VTs7Ozs7UTs7OztTOzs7Ozs7Ozs7VTs7O1csTTtXLE07VTs7OztLOztHOzs7STtLO007O0s7STtJOztLLFM7SyxTO0s7SztJLE87O0c7STs7Ozs7OztJOztPOztPOztPOzs7UTtRO3FDLFk7Ozs7Uzs7O1UsTTtVLE07UyxHLHdDOztrQjs7TztlOztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Yzs7O2lCO2tCLFE7a0IsUTtpQixPO2dCOztZLFE7Vzs7Ozs7O1M7OztVLFE7VSxRO1U7VSxNO1UsTTtTOzs7Ozs7Ozs7OztLOztJO0ssTTtLLE07STtHOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7O0s7O0k7O0ssUztLLFc7SztLO0ksTztHOztJOzs7Szs7O0ksTTtHOztJOzZDOztJLE07Rzs7STs7OzZDOztJLE07Rzs7STs7dUI7OztLLE07O0ksTTs7Rzs7O0k7Ozs7O007OztLO00sTTs7O2dEOztJLE07Rzs7STs7SyxNOzs7STtHOztJO3VCOztJLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TTs7O087Ozs7cUI7OztRLE07Tzs7O1EsbUI7Ozs7OztJLE07Rzs7SSxZLE87Ozs7O08sTzs7OztPLE87Ozs7Ozs7OztPLG9DO08sTzs7O08sc0M7TyxPOzs7OztJO0ssTztJOzs7STs7OztRLGdDO1EsTzs7O1Esb0M7USxPOzs7SSxPOzs7SSxZOztnQjs7SSxPO0c7O0ksYztJO007eUMsOEI7SztNO00sTztLLE87O0ksVztJLE87Rzs7SSxjO0k7TTt5Qyw4QjtLO007TSxPO0ssTzs7SSxXO0ksTztHOztJLDhCOzs7TyxzQzs7Ozs7Ozs7OzsyQjs7Ozs7OztPOzs7UTs7YTs7Ozs7ZSxNOztHOztJOzs7OzttQjs7O007OztPOztZOzs7Ozs7SyxvQjs7Ozs7O0k7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7OztJO0ksTztHOztJOzs7SyxPOztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7VyxxQzs7Ozs7Ozs7OztXLG9DOzs7Ozs7Ozs7UyxlLFU7dUIsTTs7Ozs7TSxNOzs7Ozs0QixPOzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPOztjO0c7OztJO0k7OztJLFc7SSxPO0c7O0ksTztHO2lDLG1COztJOzs7OztLOztJO0c7O0k7Z0I7O0k7Rzs7SSxxQyxPOztJLE87OztJO2dCLE87O0ksK0M7STs7OztLO0ksTztHOztJO2dCLE87O0k7Rzs7STtnQixPOzs7Szs7O007TSxPO0ssTzs7Ozs7O00sTzs7STtHOztJOztLOztNOztNO0ssTzs7OztPO087O1E7O087Ozs7UTtPLE87O08sTztlLE87O0c7O0k7Ozs7UTtROztRLE87Z0IsTzs7O0kscUIsTyxnQztHOztJO3dDO0k7Rzs7O0s7OztNLE87TSxNO007TSxPO0ssTzs7Ozs7Ozs7O0k7SztPLDJDO0ssUyxXO0ksTztHOzs7Szs7UTs7Ozs7SztJO0k7Rzs7STtLLGE7Ozs7TTs7Ozs7OzthOzs7OztLOzttQjs7bUI7OztLO0k7O0s7Szs7Ozs7Ozs7O1E7Ozs7Uzs7OztROzs7O1M7OztLO0k7SSxPO0c7O0k7SSxPO0c7O0k7OztRLE87O1EsTTs7SSxPO0c7O0k7OztLO0s7Tzs7Ozt5QixtRDs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7O007UTs7OzswQixPLDRDO0s7YTs7Ozs7aUI7OztLOztNOzs7O0k7O0s7SSxPOzs4Qix5Qzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7STtLLE87SztPOzs7MEIsTyxzQjtJLE87Rzs7STs7Tzs7UTtROztRLE87USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTtROztRO1U7Ozs7OztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7O1EsSztRLEs7UTtRLE87TyxPOzs7Ozs7Ozs7OztHOztJO0ssUTs7OztLLE87SyxPO0ksTzs7Ozs7Ozs7Yzs7O0c7O0k7OztLLE87O0ssTztJLE87Ozs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7Ozs7OztHOztJO0ssTztJLGlCLE87SSxXO0c7OztJOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7OztLO0s7STtLLE87Ozs7STs7Rzs7STs7Ozs7STs7TyxxQjttQjs7TyxXOzs7Tzs7Ozs7UTs7O087USxPOzs7O087OztPOztRLE87USxVO087OztPO1EsTzs7OztPOzs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87OztJLE87Ozs7O2M7O2U7ZTtnQixVOzs7Z0I7O2dCLE87Z0IsTztnQixPO2UsTzs7O2UsTTs7Yzs7O2lCOztpQjs7a0I7Ozs7O3VCOzs7d0IsTzs7d0IsTzt1QixPOzs7O2tCO2tCOzs7OztxQixNOzs7b0I7Ozs7bUQ7Ozs7b0I7O3FCLGU7b0I7Ozs7Ozs7O29COztxQixlO29COzs7Ozs7OztvQjs7Ozs7Ozs7OztpQjs7Ozs7Ozs7YTtHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO08sTzs7Ozs7K0I7O0c7O0k7O08sc0I7TyxPOzs2Qjs7TyxnQzs7Ozs7O1U7O1c7MEI7Ozs7MEM7O087TyxPOzs7Z0Q7Tzs7UTtRO1E7TyxPOzs7OzsrQjs7Rzs7O0k7SSxPOzs7OztjOztpQjs7a0I7b0I7Ozs7Ozs7Ozs7Ozs7OztvQjs7cUI7cUI7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0I7NkI7OztpQixtQjs7a0IsTTs7Ozs2Qjs7YyxhOzJCLHNCOztlLE87Ozt5QyxPLHNCOzs7YztjO2E7OztJLE87OztjO2U7O2dCO2dCLFc7ZSxXOzs4Qzs7Ozs7OztjO3NCOzs7Ozt5Qjs7O29DO3lCOzs7Ozs7NkIsaUI7NkIsTzs7Ozs0Qix1Qzs7OztxQzs0Qjs2Qjs2Qjs2QjsrQjs7Ozs7Z0Q7NEIsTzs7Ozt5Qjs7NEI7OzhDLGlDOzt5QjswQjs7OzhCOytCLE87OytCOztnQyxPOytCLE87OzhCOzsrQixPOzhCLE87OzZCOzJCOzs4QixlOzs4Qjs2QjsyQjsyQjsyQjsyQixNOzBCLE87Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7O3lCLE87d0I7YTtHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7O0k7SSxPO0c7RztJO0k7STs7O0k7TTs7d0Isa0IseUI7OztJLE07RztHO0k7Ozs7Ozs7STs7O0c7O0k7Rzs7STtLLE07O0s7O0c7O0ksNEIsSztJLE87OztjOzs7YTs7Rzs7SSxPOzs7YyxxQjthOztHOztJLE87OztjLFk7OztrQjtnQjtnQjs7O2M7YTs7O0c7O0k7TTs7d0Isa0IsTyw0Qjs7STs7TztTOzs7WTs7O2EsSTthLFE7OztnQjtjO2M7OztZLE07O1c7O0k7Szs7TTtRLDJDO0s7O0ksTztHOztJO0k7TTs7O1MsWTs7O1UsTzs7UyxNO1E7O0k7Rzs7O0k7Ozs7OztJO0s7TSxJO007O1MsTztRO1k7Ozs7Ozs7SyxXO0ssTzs7Rzs7STtLLE07O0s7O0c7O0ksZTtJO0ssTTs7Ozs7SSxTO0k7STtHOztJLGlEO0k7OztPOzs7OztPO1EsSSxJLDZCLE87USxJLG1DLEk7b0I7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO1U7VztZOztlOzs2QjtjO1k7YztXLE07Ozs7O3dCOzs7VSxTOztVOzs7Ozs7TztNOzs7STtLLE87OztlO2UsSSxXLG9DOzs7Ozs7O2dCLE07OztjO29COztHO0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087Ozs7aUMscUM7O0ksUTs7STtLLEksSTs7Ozs7Ozs7OztLLFM7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STtLO0sscUI7O0c7O0ksTzs7Ozs7YyxtQjs7ZTtlOzs7ZSxNOzs7ZSxnQjtlLE07OztjO2UsTTtjO2M7YzthO0c7RztJOzs7USxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7OztjO2E7Ozs7O0s7STtJOzs7O00sTTtLO0s7Ozs7OztRLGdCO1EsTTs7TyxJLEk7Ozs7UTtROzs7Tzs7Tzs7OztRO1E7UTtRO1U7YTs7USxPO087OztPLE87USxNO087UTtVOzswQjs7UTs7VywyQyxlO1EsTztPOztPOzs7USxVOzs7OztROzs7OzthLDRDLFM7Ozs7OztPO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxTO1E7Ozs7O2dCOzs7O08sVztPOzs7VTtVO1csVztXOzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxTO087O087OztRLFk7OztXO1ksVztZLEs7YSxJOzs7O2UsTTs7OztZOzs7OzthLE87OztVOzs7Ozs7Ozs7WTthOztjO2MsUTs7Ozs7O2E7YyxJO2MsVTs7Ozs7O2tCLE07Ozs7O2lCLHFCLFU7Ozs7Ozs7a0IsRzttQixNOzs7a0I7bUIsYzs7Ozs7O29CLE07OzttQjs7Ozs7O2EsTTs7O1k7OzthO2U7Ozs7O2tCOzs7OzsyQjtpQjthO1k7OztXOztRLGdCO1E7VTs7K0IsMEI7OztRLG1DO1E7VTs7O2E7YSxPO1k7OztPLG1DOztPOzs7USxVOzs7UTtRO1U7USxXO1EsTTs7O087UTtVOzswQjs7USxPO1EsVTs7O1EsTztPOzs7VTtVLEksVyx3Qzs7OztXLGtCLFE7VyxNOzs7Uzs7O087UTtVLDJDLGU7USxPO1EsVTs7a0M7UTtROztPLE07OztPO1E7UztTO1EsSTs7OztTLGtCLFE7UyxNOzs7Ozs7OztRO1M7Vzs7O2M7YztjO2MsSTs7Ozs7ZSxrQixRO2UsTTs7O2M7YTs7YztjLE87YTs7O1MsTTtTLEs7UyxVOzs7Ozs7YTs7Ozs7O2E7Ozs7Ozs7Tzs7Tzs7OztRO1E7O1c7WTtZO2tCO1csTztVO1EsVTs7O1csUTtXO1k7YSxROzs7WTthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTtRO1E7UTtVOzs7YTs7YztjOzs7O2U7O2dCO2dCO2dCLFU7Ozs7Ozs7Ozs7OztlOzZCOztlO2dCLE87Z0IsVTs7Ozs7O29CLE07Ozs7OzttQixHO29CLFM7b0I7Ozt1Qjs7O3dCOzt5QixLOzBCLFk7O3FEOzs7MEIsTTs7Ozs7O3VCO3NCOzs7Ozs7O2UsTTs7Ozs7Yzs7aUI7Ozs7O29CLE87Ozs4Qjs7O21COzs7ZTs7Z0IsSztpQjtrQjtvQjtxRCxjO3NCOzs7OzsyQjs7O2dCLE07OztvQzs7d0I7O2M7OzthOzs7UTtVOztrQyxpQjs7O1EsVztPOztROzs7VyxlOztZLE07O1c7VTs7O087Ozs7VyxPOztVO1E7UTtVO2E7OztPLEksNEIsTztPOztPOzs7USxTLHdDLFk7UTtVOzs7NkIsb0IsNEI7O2E7K0IsOEM7YTs7MEI7YTs7Z0I7O2tDLG1DOzthO1k7OztRO1E7UTtVOzt3QixPLCtCOztRLE87UTtPO087O087Ozs7UTtRO1U7OzthO2EsRztjLE07O2EsTztZOztRLE07UTs7NEIsTyx3QztRO1U7OzthO2E7WTs7UTs7O2E7O1EsUztROzs7Vzs7O2M7YzthOztRLFE7Tzs7Tzs7O1EsVTs7O1E7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7TTtROzs7Vyx3QixROzs7WSxjOztXO1U7O007O1M7SztLLE87O0ksTztHOzJDO0c7O0k7SSxPO0c7O0k7STs7SztJO0k7STtHOztJOztJO0s7Tzs7OztVO1U7VTtTO0s7STtJOzs7O0ssTztLLE87STtHOztJO0k7SztPOzs7MEIsb0IsNEI7O1U7VTtVO1U7Uzs7O0ksZ0I7Rzs7STs7Szs7O00sUyx3QyxZO007UTs7OzJCLG9CLDRCOztXO1c7WTtZO1c7VTs7O0s7Szs7SSxPOzs7O2M7YzthO0c7O0ksTztHOztJOztlO2U7Ozs7TyxPOzs7Ozs7OztpQixPO2dCOztPLGtCLE07TyxPOztPOzs7O1EsTTtPLE87OztPLHVCLE07TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7OztPLE87Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O08sTzs7Tzs7USxNOzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOzs7UTs7VyxPO1U7TyxPOzs7OztpQjtpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7TyxxQixPO087TyxZOzs7OztTLE87Ozs7bUIsVztrQjs7O087O087OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7USxPO087TyxHO1E7ZTtROztRLFc7UTs7TyxPOztPLG9CLE87TyxPOzs7TyxPOzs7OztpQjtrQixPO2tCLE87aUIsTzs7Ozs7Ozs7OztnQjs7O08sTzs7Ozs7aUIsWSxPO2lCOztrQixPO2lCLE87Z0I7OztPLHFCLE87TyxPOzs7Rzs7O007O087ZTs7OztvQzs7O3FDOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkIsa0M7O0k7O3FCLE87O3VCLE87O3FCLE87O3FCLE87O3VCLE87O3VCLE87K0IsTzs7Rzs7STs7Szs7O007O0s7TSxPO0s7O1EsTzs7USxPOztRLE87Ozs7O0ssTzs7O08sb0IsTztPLE87OztPLE87OztPLG9CO08sTzs7O08sTzs7OztxQzs7Ozs7OztRLE87OztPOzs7O1E7Ozs7O1MsTzs7Ozs7Ozs7Ozs7USxPOzs7OztzQzs7OztRLE87Ozs7O3NDOztPO1E7VTs7d0IsbUM7O1EsTztPLE87Ozs7OztxQzs7OztxQixPOztPLE87O087O1E7VTs7NEIsK0M7O08sbUIsTzs7Ozs7O1csZTs7cUI7O1U7TyxPOzs7Ozs7Ozs7TyxPOzs7O3FDOzs7O08sTzs7O08sTzs7O08sTztlLE87O0c7O0k7Ozs7Ozs7TztRLE87Ozs7STtHOztJOzs7Ozs7O087USxPOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SyxPOztJO0c7O0k7OztLLE87OztJO0c7O0ksWTs7bUI7O0ksTzs7Ozs7OztnQzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7STs7O08sTztNOztJLE87Rzs7STtXO0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7STs7c0IsaUQ7O0ksTyw0QyxhO0c7O0k7SyxNOztJO0c7OztJLFc7O0c7STtJO0k7STs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0k7Ozs7O087O08sd0I7Ozs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7UTtVOzs0QixvQixXOztRO1U7OzRCLG9CLFc7Ozs7OzswQjs7Ozs7Ozs7Ozs7Ozs7OztVO1csTTtXLFE7bUY7VSxNO1M7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozt5Qjs7Tzs7eUIsTzs7K0I7aUM7O0c7O3NCLHlDO0k7Ozs7OztROztTOzs7Ozs7OztROztTO1c7OztjO2M7YTs7Ozs7UTs7OztTOzs7OztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7Ozs7Ozs7SSxtQjs7O0k7RztHOzs7Ozs7O0ksTTtJO21COztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7UTs7O1c7a0Q7VztVOzs7Ozs0Qjs7O0ksTzs7NEI7O0c7O0ksTzs7NkIsd0IsWTs7Rzs7SSxXO2lCO0c7O0k7OztLOztJO0c7O0k7Ozs7O1EsTzs7Ozs7O1EsZSxPO1EsTywyQjs7OztJLE87Rzs7STtJOzs7Ozs7USxJLHVCOzs7Ozs7USxJLG9COzs7Ozs7USxJLG9COzs7Ozs7OztPLEksdUI7Ozs7Ozs7OztPLFc7TyxXOztNOzs7TztPOzs7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DOzs7Ozs7Ozs7Ozs7OztpQjs7O2tCLE87aUI7Ozs7Ozs7Ozs7Ozs7O2lCLG1DO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7MEI7O0s7OztPLGtCLE87O087OzttQjtLO0k7O0s7Szs7O1E7Ozs7O1M7USxXOzs7Ozs7c0I7TTs7STtJOzswQiwyQztHOzs7O0k7Ozs7Ozs7OztJO0s7O087O1U7SyxPO0ssUTt5RTtJLE07Rzs7STs7Ozs7Ozs7Ozs7O1csTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7OztxRDs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07UztRLE87OztrQjtrQjttQjs7c0I7Ozt5Qjs7d0I7Ozs7Ozs7OztrQjtpQjs7O0k7Rzs7SSxZLGtDOzs7Ozs7O2tCO00sNEM7Ozs7Ozs7VTs7VztXO2E7OztnQixPOztzQywrQjs7OztlOzs7Vzs7Ozs7O2tCOztNOzs7STtHOztJLFM7WSxPO0k7Ozs7Szs7O0k7Rzs7STs7OztROztTOzs7UTs7UTs7OztTOzs7UTs7Ozs7VSxNOzs7OztROztROzs7Uzs7Ozs7UTs7O21COzs7c0I7c0I7O2dDOztzQjtxQjs7Ozs7Ozs7UTs7Uzs7O1M7UTs7Z0IsTzs7UTs7Z0IsTzs7STtHOzJCLDRCO3lDLDRCOzs7SztLO007TyxPO08sTzs7Tzs7OztROzs7OztNLE87O2U7Ozs7OztJO0k7Rzs7SSxZOzs7SyxNOztJLDhCLDBCO0k7Rzs7O0s7SztvQjs7Ozs7Ozs7TTtPO087ZTs7Ozs7O0k7STtHOzs7SyxVO0s7STs7SyxZOztLOzs7OztLLE87OztlO2U7Yzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7OztNO0s7TTs7Ozs7Szs7OztJO0ssWTtLO087SztPO1M7OztZO1ksa0I7Vzs7STtHO0c7STs7STtNOzs7UyxtQjtTLHVDOztVO1csTTs7eUIsVzs7VTtTOztxQixXOztTO1E7Ozs7O0ksVTtJLHVCOzs7Ozs7O3VEOztTLE87Ozt5Qjs7O1M7O1U7WTs7O2Usa0I7bUY7ZSxNO2M7O1UsTTtTLGdCO1UsVztVLE87OztvQjs7O3FCLFE7Ozs7cUIsTzs7b0I7bUI7OztTLFc7UyxXO1MsVztTLE87OzttQjs7O2lDOzs7NkI7a0I7Ozs7O007OztNLE07O0k7Rzs7STs7Ozs7O0ssTztJO2dCOzs7Ozs7Rzs7STtLLE07O21CO0ksbUI7STtHOztJLFk7O0s7TTtPLE87TyxVOzs7Tzs7cUIsbUI7Ozs7O007Ozs7OztNLGM7Ozs7VTs7VzthOzs7Z0IsVztlOztVOzs7VTtnQjs7O2EseUMsYTs7VTtVLE87O2tDOzs7TTs7O0k7Rzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7O0ssUTs7Ozs7O08scUIsVTs7cUI7Ozs7bUI7O0k7SyxpQjtLO087OztVLFc7Uzs7SztPOzt5Qiw4Qjs7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7TTtROzs7Vzs2RTtXLE87VTs7TTtNLFM7SyxnQixNO0s7Yzs7K0I7OztJO0c7O0k7SztPOzt5QixrQixPLHVCOzs7STtLLEs7O00sZ0I7O0ssVTs7O0c7O0k7STs7Ozs7Ozs7Ozs7OztVLG9COzs7Ozs7VTttQjs7cUMsa0IsUzs7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTtPLE87OztpQjs7O2tCOzRCO2lCO2lCLHdCO2dCOzs7Ozs7OztPOzs7O1E7TyxTO087Ozs7OztRLG9COztPO1E7UTtRLFU7OztPLGlEO087UTtRO1EsTztROzs7Ozs7Rzs7SSxVO2E7STs7O0ssTztLLE87O0s7Syx3QztLO007OztTO1MsTztnRCxrQjtRO007Ozs7Ozs7O1M7O1k7OztlO2UscUI7ZTtnQjtnQjs7eUI7Z0IsTTtlLE87O3VDOztjOztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksTzs7NEI7O0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNOzs7VTs7OztZOzs7VTtTOztNOzs7OztNOzs7O087TSxTO007Ozs7TTtPO08sVTs7O087TyxPO087Ozs7O0c7O0k7SyxXO0ssTzs7O2U7ZTtJOzs7SyxPO0ksTzthOzs7Z0I7aUI7O2tCO2lCLE87O3dDLHFCOzs7Z0I7OztnQixPOzs7MEIsVzswQixPO3lCOztlOztHOztJO0ksd0M7STtLO0s7OztLOzs7O1M7Ozs7VztZLE07Vyx1Qjs7O2EsTTs7Ozs7WTthO29COzs7Ozs7O1UsVzs7UztTOzs7Vyx1Qjs7Ozs7O2dCO2lCOzs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7Ozs7Ozt3Qjs7OEQ7O3dCLE07O3VCO21DLG1COztzQzs7Ozs7a0I7bUI7cUI7Ozt3QixrQjs7OzhEOzt3QixNOzt1Qjs7bUIsTzs7Ozs7Ozs7eUM7a0I7Ozs7Ozs7bUI7O29COztzQixNO3FCLFM7cUIsSzs7OztvQixJOzs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjs7OzswQixPOzs7d0IsTTs7dUI7O3dCO3dCO29DO3VCOztzQzs7Ozs7Ozs7O3dCOzs7OzBCLE87Ozt3QixNOzt1QjttQyxlLDRCOzttQyxjOzs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7Ozs7d0I7OzhEOzt3QixNOzt1QjttQyxtQjs7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsa0I7eUY7cUIsTTs7b0I7Ozs7bUI7bUI7a0I7Z0IsTTtnQixPO2dCO2tCOzs7cUI7cUIsRyx3QztxQixZO21EOzs7c0I7OztxQjtvQjs7Ozs7Ozs7bUI7OztzQjtxQjs7Ozs7ZSxHOzs7O2dCO2lCLEs7aUIsWTs7Ozs7Ozs7ZTtnQjtrQjs7O3FCLGtCO3lGO3FCLE07O29COzs7ZTtnQixLO2dCOzs7Ozs7bUM7Ozs7Ozs7Ozs7NkIsTzs7O1MsTzs7aUMsc0I7O1E7TTtROzsrQix1Qjs7TSxPO00sTztLLE87Yzs7O2lCLFk7Ozs7O2lCLHFCO2lCO2tCO2tCOzs7O3VCO2tCLE07aUIsTzs7eUM7O2dCOzs7STtLO0ssTztJLE87OzJCLHNCOztHOztJO0ksTzthOzs7Z0IsMEM7Z0IsTTtlOztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VSxZO1U7OztXO1c7VztVO1M7O007Tzs7TztPOzs7UTtTLE87Ozs7OztRLHlDOzs7UywyQixNOztjO1U7VyxROzs7Ozs7VzthOzs7Z0I7Ozs7aUIsUTs7Ozs0QjtnQjtlOzs7OztXO1c7O1c7O3lCLDBCO1ksVztZLE87Vzs7Ozs7Ozs7Tzs7Ozs7Ozs7O3lCLHFCOztJOztLLE07O0k7Rzs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJLE87Rzs7SSxZO0kscUM7O0ssTTs7STtLO0k7STs7RzsyQix5Qzs7O0ssWTtLOzs7TTs7TSxPO0ssZTs7O0c7O0k7STs7OztPO087aUI7Ozs7TSxJLFU7O08sVzs7USxNO087OztRLEksd0MsaUI7USxPLDJDLGlCO2U7Ozs7O1UsNEMsUztNLE87OztnQixpQzs7Ozs7aUI7Ozs7Ozs7OztrQixNOzs7aUI7OztrQjtrQjtrQjtrQjtrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Z0M7Ozs7Ozs7OztvQixXOzsrQjs7O2tCOztpQjs7Z0IsTTtlOzs7OztLOzs7TSxPO00sTzs7TTtROzs7Vzs7WSxNO1c7O1ksTztZLE87NEQ7VztVOztPO1E7USxNOzs7OztPLEkseUI7Ozs7Ozs7OztRLEkseUI7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCLG9DO2dCLFc7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7VTs7Ozs7Ozs7Yzs7ZTs7O2M7Ozs7Ozs7Ozs7Yzs7ZSxPO2UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztHOztJO0k7O007Ozs7O087TSxXOzs7OztLOztHOzs7OztvQjs7O007UTt3QyxPLHdCOztXOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7OztnQixlOzs7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7b0IsUzs2Qjs7Ozs7Ozs7Ozs7OztxQjs7cUI7b0I7b0I7bUI7aUI7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLHFCLE87bUI7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7O2dCLG9CO2dCOzs7Ozs7Ozs7UTs7Ozs7O1E7UyxPOztROztPOzs7O087USxPOztPOzs7SyxNOztHO3NCOztJO0s7SztNOzs7Ozs7Tzs7Ozs7Ozs7Szs7Ozs7SyxrQixPOztLOztHOztJO0s7Ozs7O007Szs7STtHOztJOztNO3FDLDZCO0k7Rzs7STtLLFk7O0s7STtJO0s7Tzs7O1U7OztXLFE7OztXO1U7Uzs7Ozs7STtJO0c7O0k7STttQjs7OztNOzs7OztHOztJO0k7bUI7Ozs7TTs7Ozs7Rzs7SSxZOztJLE87OztJO0k7Ozs7Ozs7Ozs7OztVOztXO1csTztVOzs7VyxXO1c7OztZO2EsTzthLGU7O1U7VSxPOzs7Ozs7VSxPOzs7b0I7b0I7bUI7Ozs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7STtLLE87SztlLHlDLGE7SSxXOzs7aUI7Szs7Ozs7O007Szs7TTtPLE87Ozs7VzthOzs7O087Tzs0Qjs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTO1U7WTs7O2UsMEM7ZSxNO2M7O1U7VTs7O1UsSztXOzs7Ozs7Ozs7OztnQjs7OztROztzQixPLGtDOzs7Ozs7Ozs7TSxNOzs7O1U7O0c7NkIsMEI7O0ksYztJO0s7Szs7Ozs7Ozs7OztXOzs7Ozs7Ozs7Ozs7VyxPOzs7cUI7Ozs7O29COzs7VyxvQztXLFc7Ozs7O1c7OztRLE8sd0MsZTs7Ozs7TTs7STtJO0c7O0ksSSw2Qjs7Szs7TSx5QjtNLG1CLFc7TSxROzs7TSxHO087UTtTLE07UyxNO1E7UTtTO1E7VTs7O2E7Ozs7Yzs7YTtZOztTO1EsSSxPOzs7Tzs7Ozs7Ozs7SyxZO007Ozs7O21CO0k7Szs7UTs7eUIsdUM7Ozs7O007OztTOztxQztZLDBCO1MsZTtTLE87UTs7OztJO0c7O0ksWTs7Ozs7TTs7Ozs7Tzs7OztVO1U7VyxXOzs7O2E7Ozs7Yzs7Ozs7O2E7OztjO2dCOzs7Ozs7YTs7OztjO2dCOzs7Ozs7VztZO1k7Yzs7O1c7O1M7TTs7Ozs7O007Ozs7TyxnQywrQjtNOzs7O0ksTTtHOztJOzs7TSxXOzs7Ozs7STtHOztJLGlCOzs7OztLO00sbUQ7OztTOzs7VSxNOzs7UyxZLE07UyxNO1E7SztNLG1COzs7O3NDOzs7SyxROzs7Ozs0Qjs7K0I7SzthOzs7SSw0Qiw4QjtJLEcsc0Q7STtJLG9DO0k7Szs7TSxlOzs7SyxXOztJO0s7Szs7O0s7TywyQztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjtTO1U7O1cscUIsTztXLE87OztxQixTOztvQjs7O1UsTztTO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxNO1UsTztVLE07Z0I7VTs7O2U7O2dDLHNCOzs7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7SztPOzs7VTtVLE87Uzs7O0k7SztNO1E7OztXO1csZTtVOzs7TTtROzs7VztXLE87Ozs7O3FCLE87b0I7VTs7OztLO00sTTtNO1E7OztXOzs7O1ksVztXLE87VTs7O0ssRzs7O0k7OztPO08sTztNOzs7STtHOztJLFUsNEMsUztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7SSxJLFcsMEM7Ozs7OztHOzs7SztLO007TSxHLDBDO00sYTttQjs7TTtPLDhCO08sUTs7Ozs7VSxxQjs7Ozs7O1UsTzs7O1UsZTtVO1c7WSxPO1k7Yzs7O2lCOzBCO2dCOzs7Vzs7Ozs7O1csTzs7bUM7Ozs7Ozs7Ozs7OztVLE07Ozs7VSxXO1U7OzthLGtCLFE7OztlOztnQixJO2UsTzs7dUM7Ozs7Ozs7OzthO1k7O1UsVzs7Ozs7OztVOztXLEk7VSxPOzs7b0I7b0I7bUI7OztNOztJO0k7Rzs7STtLLE07SyxNO0ksTztHO0csZ0I7O0k7OztLLG9CO0s7Tzs7O1U7Ozs7Vzt5QjtVO1M7O0s7SztJOzs7Tzs7OztPO007OztLOzs7USxLO1M7UyxLO1U7Vzs7O2M7YztlLEcsNEM7NEI7ZTtlLEcsbUM7ZSxZOzs7O21CLE07OzttQjtvQixVO29COzs7Ozs7O29CLFc7b0IsRztxQixNOzs7OztlLE87O2E7VTtXO1c7Vzs7OztpQzs7Ozs7UTtPOzs7Syx3QjtLOzs7UTtRO1E7UztTLFE7OztTLEs7UyxNO1E7Ozs7OztTLE07Ozs7Ozs7Tzs7O0s7TSxPO00sTTtNO1E7OztXLFU7VyxXO1U7O0s7TTtNOzs7UztTLEcsMkI7Ozs7O2U7UztROzs7TTtPOzs7VSxHLDBDO1UsZ0I7O1U7VztXLE87VzthOzs7Z0IsTzswQjs7ZTs7O1U7VTtXLFE7OztXLFU7Ozs7Vzs7O1U7VyxNO1csVTt3QixPOzs7Ozs7Ozs7VTtVLE07Ozs7OztTO007O3dCLG1CLG1COzs7O0ksTzs7O2M7OztlO2U7ZSxZOzs7ZSxlOzs7YztlO2UsTTtjLGM7Ozs7O3FCO2UsTzs7YzthOzs7O0c7SSxZLHlDLGtCOzs7OztJLHFDLE87O0ksTzs7O2M7YzthOztHOzs7Ozs7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQyxROztLOztNLE07TSxNO0s7OztRO1E7UyxNO1EsaUM7O1M7VSxPO1UsUTs7OztXO1ksTTtZLE07a0I7Ozs7Ozs7OztRLFEsTTtRO087Ozs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7SztPO3dDLHFCO0ssYTs7Ozs7TSxPOzs7Z0I7Ozs7aUI7aUI7Z0I7ZTs7Ozs7STs7Ozs7O1M7O1U7WTs7O2U7ZTtjOzs7O3dDOzs7O1M7VzswQywwQjtVO1c7YTs0Qyx3QjtXLE07Ozt5Qzs7VTtXLE07VzthOzs7Z0IsVTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7VzthOzs7O2dCOzs7O1csVTs7VyxNO1U7OztXLE07aUI7Ozs7Ozs7SSwyQjtJLE87OztJLEksc0M7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7SyxVO0s7O2U7RztHO0ksTztHO0c7SSxPOzhDLG9CO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7Ozs7O0c7RztJOzs7Ozs7Ozs7Ozs7STs7O0k7O087d0M7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7STtLO087OztVOzs7Ozs7VTs7O1M7Ozs7O0s7TztJLE87OztjOzs7O2U7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7O0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxjOzs7Ozs7TztRO1EsTzs7Ozs7TTs7Szs7Rzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7STs7O0k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs4QixPLGlDOzs7OztLLGM7bUI7O0ssTzs7STtHOztHLGdDLGdCO0cseUIsUztHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RztJO0ssa0I7SyxRO3VCOztJLE07RztHOztJLE87Rzs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7NEIsOEM7Rzs7STtNOztnQyxXLDhCOzs7O0k7STtLLFk7bUM7d0I7SyxzQzs7OztHOztJLFU7SSxPO2E7OztnQixZOzs7aUIsaUI7O2dCLE07ZTs7RztHOztJOzs7Ozs7STs7STtHOztJLE87OztjLEksbUI7YyxXO2E7OztHOzs7Ozs7O0k7OztJLEksVSxtQzs7Ozs7O0c7OztLO0s7TSxJLDZCLFU7O087O1EsTTtxQjs7O007Ozs7OztVO1UsTztTO00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7Ozs7YTtjOzs7a0IsbUIsUTs7OztvQixPOzs7b0Q7O2tCOztlLE07ZSxRO2UsUTtlLFU7Ozs7Ozs7Ozs7Ozs7dUM7Ozs7O1ksTTs7Ozs7Ozs7VyxPO1U7TyxPOzs7O0k7STtHOztJLE8sNEMsUztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssTzs7K0I7Ozs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7VSx1QixVOztVLE07Ozs7Ozs7Ozs7Ozs7Ozs7aUI7bUQsUzs7O0ssOEI7OztJLDhCOztHOztJLGU7SSxJLGdDOzs7MEI7OztHOztJO0ssTTtLLE07O0c7RyxrQyxnQjtHLHlCLHVCO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHLHFDLFM7Rzs7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztLO00sTTtNLE87TSxVOzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7OztPLGM7cUI7O087O007O0s7O0k7Rzs7STtJLE87Rzs7STs7O0s7O0k7Rzs7STs7O0ssTzs7STtHOztJOztPOztPOzs7Ozs7O0c7O0k7SSxvQjtHOytCLDBDOztJO0ksd0M7SSxZOzs7OztRLEcsb0M7USxHLG9DO1E7O1U7OztXOzs7WTs7O2E7OztjO21CO1M7VSxVOzs7Ozs7VTs7OztnQzs7O1E7OztROzs7OztRLE07O0k7Rzs7SSxJLDJCLEk7Ozs7K0I7Ozs7Ozs7Ozs7TyxHOzs7Vzs7Ozs7bUI7Ozs7YSxvQzs7STtHOzRCLHVDO29DLHVDOztJOzs7Ozs7O08sRztRLEksVSw2Qzs7OzsrQjs7Ozs7O0k7Rzs7STs7Ozs7Ozs7UTs7O1M7UTs7Ozs7STtHOztJO0ksZ0Isb0M7SSxZOzs7SyxHLG9DO0ssRyxvQztLLEcsb0M7SyxHLG9DOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxPOzs7OztjLE87YTtHOzs7STs7Ozs7OztNOzs7UztrQixNOztROzs7O0s7TSxPO2U7O0ksWTtJLGE7Ozs7Ozs7OzsyQjs7OztJOzs7O0ssTztLLE87O0s7O1E7OzBCLE8sMkI7Ozs7Ozs7Ozs7Ozs7OztJOzs7STtrQjs7Ozs7O007Ozs7Ozs7Ozs7Ozs7O1E7O087Ozs7Ozs7O0c7O0k7O0ssTTtJOztLLEs7SyxVOzs7OztRLHFCLEk7ZTtTLE07Ozs7UTs7UyxVOzs7OztTLFc7UTtRLEc7UyxNOzs7OztLLE87O0ksTTtHOzs7O0ssSSxlLHVDOzs7O08sTTs7OztJLE87Rzs7STtLLE07STtJOzs7TztPLEc7USxNO3VCOztNOzs7Ozs7Ozs7SyxPOzs7OztlO2dCLFE7Z0IsTTtnQixPO2dCLE87ZTt1Qjs7Ozs7OztjOztJO0ssUztLO087OztVLG1CLFE7Ozs7OztVO1M7O0k7Rzs7STtLOztNLE87TSxNO0s7aUIsd0MsWTs7O0k7O0s7OztJOzs7O0k7O0ssTzs7O2U7O2dCO2tCOzs7O3FCO3FCO3NCO3dCO3VELFk7c0IsYztzQjtzQjs7OztzQjt3QjtzQjtzQixVOzs7c0IsRzt1Qjs7cUI7c0IsTztzQixZO3NCLGdCO3FCLE07O29COztxQjs7OztxQjtxQjtxQjtxQixzQixPLDhCO3FCO3FCO29COzs7OztlO2M7O0k7Szs7O0k7RztHO0k7TTs7O1M7UyxPO1E7O0k7TTs7O1M7Uzs7OztTO1UsaUI7VSxPO1MsTyxXO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Z0I7O0ksTztHOztJO0k7SyxHLDRDO2tCO0ssWTs7Ozs7UyxJLFc7Ozs7VyxNOzs7UztVLE87VSxPO1MsSTs7Ozs7VSxNOzs7UyxPOzs7bUI7Ozs7Ozs7aUI7Ozs7SyxPOzs7ZTs7OztHOztJLE87OztjOzs7ZSxTOzs7O2dCLE07O2U7Z0I7OzthOztHOzs7Ozs7OztNLG1CLFU7OztPO1E7UyxTO1MsTzs7Vzs7O1MsSTs7Ozs7OztTO1UsTztVLE87VSxPOztZOzs7OztTLE07Ozs7Ozs7UyxNOzs7O00sTTs7O0k7Ozs7O0s7SztNLEs7O1EsVztRLEc7OztTLGdCO3NCOzs7Ozs7O3FCOzs7Z0I7TyxjOzs7Ozs7WTs7YTsyQjs7Ozs7Ozs7O08sVztPO1EsWTtRLFU7O1E7OztTLGE7UTs7Uzs7MEI7OztRLEksVzs7Ozs7O21COzs7cUI7Ozs7O1E7Ozs7OztPLE87OztpQjs7Ozs7TyxNOzs7OztROzs7UyxVOzs7O3FDOzs7Ozs7OzswQjs7Ozs7O3dCOzs7OztnQjtnQjtNLE07O0k7O0s7STtJLFc7STtLOzs7TTtROzs7eUI7O0s7Ozs7OEIsTzs7O0c7O0k7SztLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxPOzs7O2dDO21CO1E7O0ssTztJLE87Rzs7SSxrQjtJOztLO0s7TSxlO2lCO21CO00sWTs7Ozs7VSxHO2tCO1ksVztZLE07Ozs7cUM7Ozs7O1c7WSxPO1k7eUI7O1k7YTtjLFU7OztjLFU7OzthO2MsVztjOzs7Ozs7O2MsTTs7O2E7Ozs7Ozs7Ozs7Ozs7VSxPOzs7b0I7Ozs7Ozs7O2tCOzs7O00sTzs7O2dCOzs7O0k7O0s7SztJO0ksTzs7O2M7ZSxROzs7OztjOzs7aUI7OztjO2E7O0c7O0k7Ozs7Ozs7SztLO00sTztNLE87TSxPO0ssSyxpQztLO007TSxPO00sTztLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLHFCLE87OztJO0c7O0ksTzs7O2M7YzthOzs7O0c7O0k7STtLLGM7SztPOzs7VTs7VztXLE87VyxhO1c7VztVOzs7Ozs7Ozs7Uzs7SyxlO0ssUTtLO087OztVO1csTztXLE87VSxXO1M7O0s7Tzs7O1U7O1c7YTs7O2dCOzs7OztXO1csYzs7OztZLEksZSxLO1k7Ozs7ZTs7Ozs7O2UsVztlO2UsTztjO1k7O1c7Ozs7O1csTzs7Ozs7cUI7cUIsTzs7OzsrQjsrQjtnQztnQztrQzs7b0Qsb0IsYzs7Z0M7a0M7OztxQzs7OztzQyxPO3FDOzZDOzs7b0M7O2dDLFU7Z0MsUTsrQjs7aUMsTTs7Ozs7Ozs7Z0M7OztvQyxNOzttQztpQzs7O2tDOztrQzs7O2lDOzs7bUM7Ozs7OztpRDs7O3FDOzs7Ozs7O3NDO3NEOzs7cUM7Ozs7O2tDOzs7O2lDOzs7bUM7bUQ7OztrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7a0M7b0M7a0M7b0M7Ozs7Ozs7Ozs7Ozs7Ozs7a0M7O21ELDZCOzs7O2lDOztnQztnQzs7O21DO21DLEc7b0MsTTs7O29DOztrQzs7Z0M7aUM7aUM7bUM7O2tELE8sa0M7OzBDO2lDLE07O2dDO2lDOztvQyxPOzs7Ozs4QzsrQyxPOytDOzs7Ozs7Ozs7Ozs7OytDOzs7K0MsTzsrQyxPOytDOzs7Ozs7Ozs7OytDOzs4Qzs2QzttQztpQztpQyxPO2lDLFU7Ozs7Ozs7Z0M7O2lDOzs7aUM7OztzQzs7O3lDOzswQyxRO3FEO3lDLG1CLFU7OzswQyxPOzt5Qzt3Qzs7OztpQztpQzs7Ozs7Z0M7O2lDO2lDLE07Ozs7OytCO2dDLFE7Ozs7Z0MsTztnQyxPO2dDOzs7Ozs7Ozs7Ozs7Ozs7OytCOzs7a0M7Ozs7bUM7bUM7a0M7bUMsVzttQzs7Ozs7OzttQyxNOzs7aUM7OytCO2dDO2lDO2tDLE87a0MsVztrQyxVOzs7OztrQyxNOzs7OztnQzs7K0I7Z0M7Ozs7Ozs7Ozs7Ozs7Z0M7O2dEOztnQzs7aUMsTzs2Qzs7Z0M7O2lDLE87NkM7K0I7OEI7b0I7O1U7VyxPO1c7YTs7VzthOzs7Z0I7Z0I7ZTs7VyxROzs7O1U7VyxTO1csVTtVOzs7YTs7OztjLE87Ozt3Qjt5QjswQixPOzBCOzRCOzs7O3lCOzs7OzswQixPOzs7O3VCOzs7O2EsTzs7O3VCO3VCO3dCO3lCLE87eUI7MkI7Ozs7d0I7Ozs7O3lCLE87Ozs7c0I7O1k7O1U7VTs7a0I7b0Q7Uzs7Ozs7O0s7Tzs7Z0MsbUIseUI7OztLO087OztVOzs7OztJOzs7Tzs7O1E7USxNO3lCO087UTtVOzs0QixPLDRCOztRO1EsTztPOzs7OztnQjs7O007OztLLG1COztLLE87STtJOzs7TztPOzs7Z0I7Ozs7TTs7STs7O08sdUM7Tzs7O2dCOzs7O007O0k7OztPOztRO1EsUTttQjs7TyxNOztNOzs7STs7O08sdUI7Tzs7O1U7VTtTOzs7Ozs7OztXLGtCOzs7WTs7O1csTTs7VyxvQjs7WTs7YTs7Z0IsTztlO2E7ZTtZOzs7ZTtlO2dCO2lCLE87aUIsUTs7Ozs7aUIsTTs7Ozs7OztnQjs7OztrQjs7O3FCO29COzs7Ozs7Ozs7O2tCOzs7O2dCLE07Ozs7Z0I7O2U7Yzs7OztXLE07OztxQjtPLHFCOztRLE07O087Ozs7STtLO007UTs7O1c7VztVOzs7TTtRLFc7TSxPLFc7TSxVLFc7Ozs7OztNLE07Ozs7TSxNOzs7OztLLE07O0k7STs7OztPOzs7O0k7O087OztVO1U7Ozs7Ozs7Ozs7O1M7OztJO0c7O0ksSSxLOzs7O007O087TyxTO08sVTs7OztPO1EsUztRLE07USxpQjs7OztPO1EsUTs7O00sSTs7Ozs7TyxNOzs7O087USxPO1EsTztPOzs7VSxXLG1CO1U7VztZLE87bUI7OztVLGM7Uzs7O007TyxpQjtPLG1CO087O1U7O087O1U7O2E7TyxNOzs7TyxNOzs7Tyx1Qjs7OztTOztVLFU7Ozs7OztXOztZLFM7WSxPO2M7WSxNO1csc0IsTztXOzs7Ozs7Ozs7VyxNOzs7UyxNOzs7O087UTs7Ozs7O00sTTs7Szs7OztNOzs7Ozs7Ozs7OztJO0ssTztLLE87Szs7Ozs7Ozs7OztLO0s7Ozs7OztvQzs7Ozs7O0ksWTtJOzs7O0ksTzs7Ozs7Yzs7Ozs7Ozs7YTtHOzJCLCtCOztJLE87Ozs7O2M7O2UsUTs7OztlLE07Ozs7ZTtnQjs7bUI7O3FDLGlDOzs7Ozs7Ozs7ZSxNOzs7YztlO2lCOzs7b0I7cUIsUTs7O29CO21COztlLE87Ozs7ZTtnQixPO2dCO2tCOzs7c0I7Ozs7O3VCO3VCOzs7Ozs7cUI7Ozs7O2M7O2UsTTs7O2M7ZSxRO2U7aUI7Ozs7cUI7cUI7cUIsTzs7OytCOytCOzs4Qjs7b0I7O29CO29CO3FCO3FCO3VCOzt5QyxvQixjOztxQixPO3FCLE87b0I7b0I7OztxQjt1Qjs7OzBCOzs7O29CO21COzs7Yzs7O2lCLG9CLFE7NkI7O2lCLE07O2dCOztjOzs7aUI7aUI7a0I7O3FCOzs7Ozs7a0I7Ozs7Ozs7a0IsTTs7O2dCOztjO2U7aUI7OztvQjs7O3FCO29CLE87O21COzs7ZSxVOzs7ZTs7Ozs7Ozs7O2M7YTtHOztJO0ssUTtLO087Ozs7VztXOztVOztVO1U7O1M7OztLLFU7OztLLE07OztJO0s7SyxTO0k7Rzs7STtLO087Ozs7eUIsbUM7Ozs7STtHOztJO0ssUTtLLFU7OztvQzs7Ozs7d0I7O007O3VCOzs7SSxNO0c7O0k7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7VSxPOztTLE07O1E7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7TTs7bUM7Ozs7TSxHO00sRztNLEc7TSxHOzs7OztLLE07OztJO0c7O0k7STtLOztNLFU7TTs7Ozs7Ozs7Ozs7O1csTTs7O1U7OztXO1c7OztVOzs7Ozs7Ozs7OztNOztLLE07O0c7O0ksTzs7Ozs7YyxJLE0sMEM7O2U7Ozs7O2U7Z0I7Ozs7O2dCO2tCOzs7O2dCO2lCO2lCO21DOzs7O2dCLE07Ozs7Ozs7OztlO2dCLE07O2U7OzttQixXO21CO29CLFk7Ozs7c0I7O3VCLFM7MkM7Ozs7OztvQjs7OzsyQzs7O2tCO2dCO2tCO2U7OztrQixnQjtrQixPO2lCOzs7ZTtnQixPO2dCLE87Ozs7ZSxLO2dCLE07O2U7Z0IsTztnQixPOzs7YztlO2lCOzttQyxlOzs7Ozs7ZTs7Ozs7Ozs7O2M7YTtHOzs7STtJLE87O2dDLGdDOztjO2M7ZTtlO2U7aUI7O21DLG9CLGM7O2UsUTtlO2lCOzs7b0I7Ozs7cUIsTTtxQixRO29CO21COztlOzs7ZTs7Z0IsTTs7Ozs7Ozs7OztjO2UsYTs7YztlOzs7a0I7a0I7bUIsVzttQjs7Ozs7OzttQixNOzs7aUI7OztjOzs7aUI7aUI7a0IsVztrQjs7Ozs7OztrQixNOzs7Z0I7O2Msd0I7Ozs7O2U7Ozs7Yzs7Ozs7OztlOzs7Ozs7OztjO2UsTztlLE87OztlOzs7Ozs7OztrQjs7Ozs7Ozs7Yzs7O2lCO2dCOztjLGM7OztlLE07OztjO2U7ZSxXO2M7ZTs7a0I7Ozs7Ozs7Ozs7OztlLE07OztjOztpQjtjO2U7O2tCOzs7Ozs7O2UsTTs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7OztHOztJO0ssTztLLE87Szs7SyxxQjtJOzs7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLFc7SztLLFc7STtJLE87Ozs7Yzs7OztlLE87ZSxPO2M7Ozs7Ozs7Ozs7Ozs7OzthO0c7O0ksWTtJLE87OztjOztlOzs4QjtjLFc7YTs7Rzs7NEIsTyxzQztJO0k7STtHOztJO0s7TTtROzs7VyxXO1csTztVOztNLE07TSxXO0s7SztNLE87TSxPO0s7Szs7Ozs0Qjs7O0c7O0k7Ozs7Ozs7YztlLE87ZTtlLE87YyxPOzthO0c7O0ksc0M7O0ksTyx3QyxZO0c7O0k7SztLO29COzs7Ozs7Ozs7Ozs7OztNOztJO0k7Rzs7SSxPOzs7YztjLE87O2E7O0c7O0k7SztNOzs7TyxPO08sTztNLE87O0s7OztNLE87TSxPO0ssTzs7STtLLE87STtJLE87YTs7O0c7O0ksTztHOztJOzs7USxPOztRLE87Ozs7Ozs7USxPOztRLE87O1EsTzs7USxPOzs7Ozs7Ozs7USxPOztRLE87Ozs7OztPLE87OztPLE87O087Ozs7UTtPLE87Z0I7O2lCO2lCO2lCLE87Ozs7Ozs7O2dCOztPOzs7O1E7TyxPO2dCOztpQjtpQjtpQixPOzs7Ozs7OztnQjs7OztROztTO1c7Ozs7OztTLE87USxPOzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7O087Tzs7Ozs7O3VCLE8sMEM7dUIsTywwQztPLE87OztPO087Ozs7Ozt1QixPLDBDO3VCLE8sMEM7TyxPOzs7TyxPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087Ozs7O1E7UTs7VyxPO1U7TztPO087USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7OztpQiw2Qiw4QjtpQixPOzsyQjs7MkI7Z0I7OztPOzs7Ozs7O1k7Ozs7Z0I7Ozs7cUMsUzs7eUMsVztlO2EsUTs7Ozs7O2lCOztrQixVOzs7aUIsRyxpQztpQjs7OzttQyxrQixTOzs7b0I7b0IsTzttQjs7O2lCLG9CLE87aUIsRyxtQztpQjs7O21COztvQixrQixROzs7OytEOztzQixPOzs7cUQ7O29CLE87bUI7OztvQjs7cUIsTztvQixPO21COzs7YTs7Ozs7OztXOzs7O3lCLFk7OztjLFc7YyxPO2E7Ozs7Vzs7Ozs7YztjLE87YTs7O2M7Ozs7Ozs7O2E7OztPLE87OztPLE87Ozs7Ozs7O08sdUIsTztPLE87Ozs7Ozs7OztPOzs7O1E7VTs7Ozs7O1EsTztPLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7aUIsVztpQixPO2dCOztpQixPO2dCOztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7O087Ozs7UTs7Vzs7OztZO1c7O3VCO3VCOzt1Qjs7O087USxnQixPO1E7Ozs7Ozs7Ozs7O1E7Ozs7VztXO1ksTztZLE87Vzs7Ozs7Ozs7OztXO1csVztXOzs7Ozs7Ozs7O1c7VyxXO1c7Ozs7Ozs7Ozs7VyxXO1c7Ozs7Ozs7Ozs7O1csVztXOzs7Ozs7Ozs7OztXLFc7Vzs7Ozs7Ozs7Ozs7Z0M7TyxJLHFCO08sTzs7TyxvQixPO08sTzs7O087TztPOzs7O3FCLFM7O3lCLGE7TyxPOzs7aUI7O2lCOzs7Ozs7Ozs7Ozs7O08scUI7TyxPOzs7TztpQjs7Ozs7Ozs7aUI7Ozs7Ozs7OztPOztROztXLFksTztXLG9CLE87VyxPOztPLE87Ozs7Ozs7Ozs7TyxPOztPOztROztXLE87VTtRLE87USxPO08sTzs7OztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozt1Qjs7O0k7RztxQyx3Qjs7STtJOzttQzs7OzZCOzs7O1E7OztZOzthLG1CO2EsTzs7WTtXO1M7Vzs7Ozs7UTs7O2lGLGU7O1EsTzs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UTs7OztTOzs7O1U7VSxROzs7Ozs7OztRLG9CLFU7OztpQzs7O1E7OztRO1MsTzs7O1E7Ozs7Ozs7OztROzs7OztRO2dCOzs7O0c7O0k7OztJLG1COztJLEksVywrQjs7OzRCOzs7OztJO0k7Ozs7NkI7O1E7O1E7O1E7O1E7OztRO1M7O1k7O1k7O1ksTzs7WSxPOzs7Ozs7UTtTLE87O1E7OztHOztJOzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHO0k7O0ksVTs7SSxJLFcsNEI7Ozs0Qjs7O0c7OztJLE87OztjLEkscUI7YyxPO2E7OztHOztJLE87Rzs7SSxPLGlDO0c7O0ksTzs7O2M7YzthOztHOzs7SSxPOzsrQixPLDBCOzs7Rzs7SSxtQjtHOztJLE87Rzs7STs7SSxPO0c7O0ksTzs7aUMsbUIsd0I7OztHOztJO2E7NEMsd0I7RzsyQixhOztJO0ssTywrQztHOztJO2tDOzs7MkI7O087O087Ozs7UTtPO1E7O087OztROztXO2tEOztXO1U7OztXOzhCOztXO1U7USxXO1EsVzs7Ozs7O1M7Vzs7K0IsMEI7O2lDO087UTtRLDBCO087UTtRLHFDOzs7Ozs7Ozs7OztRLGU7OztPOztROzs7OzBCOzs7YTs7O2M7OzthOzs7Ozs7Ozs7UTs7O1E7OztpQzs7OztpQzs7UTtPLHNCOzs7TztRO1M7VzswQyx1QjtTLFE7OztTLE87UztRLHVDOztPOzs7USwwQix1QjtROzs7OEI7TyxzQjs7O08sNkI7O08seUM7Ozs7Ozs7Ozs7O1E7Ozs7a0M7O08sc0I7OztPLDZCOzs7OztRO1M7Ozs7Ozs7O2lDOztROzs7O2MsTzs7O3dCO3dCOzs7O3dCO3VCOzs7Ozs7TyxzQjs7MkI7Ozs7OztRO08sc0I7O087O1EsVTs7TzsrQjs7Ozs7Ozs7Ozs4QjtRO08sc0I7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7Ozs7Ozs7O1E7TyxzQjs7NEI7TyxzQjs7NkI7Ozs7OztRO08sc0I7Ozs7OztRO08sc0I7O087OztRLDRDOztvQztRO08sc0I7O087Ozs7UTtRO087UTs7TywwQztPLG1CLE87OzJCOztPLG9CLFU7Ozs7OztPOztnQzs7O08sa0IsTzs7Tzs7Ozs7O1E7c0M7UTs7aUM7O08sc0I7OzZCOztPLG1DO087UTs7Rzs0Qjs7SSxzQztJLHFCO0c7O0k7SSxxQjtHOztJOzs7MEI7OzJCOzs2Qjs7Tzs7eUI7ZTs7Rzs7SSxpQjs7STtHOztJOzs7MkI7OztPO1EsTzs7O2tCOzs7cUIsa0I7cUI7OztxQjs7cUI7O3FCOztxQjs7c0I7d0I7OzBDLG1CLFU7O3NCO3FCOztxQjs7c0IsTTtxQjs7Ozs7O3FCOztxQjs7c0I7d0I7OzsyQjsyQjswQjs7c0I7d0I7eUQ7Ozs7eUI7MEI7OzJCOzJCOzs7O3lCOztzQjtxQjs7d0M7O3FCOztzQixpRDtzQixZOzs7O3lCOztzQjtxQjs7cUI7Ozs7c0IsZTtzQjtxQjs2Qjs7aUI7Ozs7eUI7Ozs7OztRO08scUI7OzJCOzs7OzswQixpQzs7O087c0M7OztXOzs7O2lDLDRCOzs7O21COzs7Ozs7TztRLE87O087O0c7eUI7O0k7STs7OztRLHNCOzswQjs7Ozs7O1M7USxxQjs7O0c7O0k7O0s7O00sTTtNO007TTs7OztLO007OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7OzRCOzsyQjs7UTs7O1M7VywwQztTO1EsbUI7Ozs7Ozs7O1kscUI7OztvQztTO1EscUI7O1E7Ozs7UztRO1M7Ozs7OztHOztJO3VCOztJO0c7O0k7SztPLHlDLGE7SztJO0s7OztTOzs7VTtVO1U7OztVOztTO1UsZTtVO1M7O00sTTtNLFE7Ozs7Szs7TTs7O1U7OztxQjtTO08sUTtNLEc7Ozs7Ozs7O1M7OztVO1M7OztJO0c7O0k7Ozs7O0s7OzZCOztJO0ssMEI7Syx3QztHOztJO0s7SyxNO0s7TztTLHlDLHFCOztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7STtLO007Ozs7OztZOzs7ZTtlO2M7Ozs7Ozs7SztNOztJO0c7OztLO0s7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7OztJOztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7O0k7OztRLE07Tzs7STs7O1EsTTtPOztJOzs7USxNO087O0k7OztRLE07Tzs7STs7O1EsTTtPOzs7Ozs7cUIsc0MsWTtxQix5QyxZO3lDLDRCOzZCLHdCOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPO2UsTzs7Rzs7STs7OztRLEksbUIsOEI7OzttQzs7Ozs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7O1ksSSxtQiw4Qjs7O3VDOzs7Ozs7USxJLG1CLDhCOzs7bUM7OztPOzsyQjs7O087OzttQjs7Tzs7Rzs7STt5Qzs7SSxNO0c7O0ksTztHOztJO0c7O0ksWTtJLGlCO0c7O0k7SyxRO0s7O0s7STtpQjs7OztHOztJO0ssTztLLFE7Ozs7O00sRyx1Qzs7O0ksTTtHOztJLE8sMkI7Rzs7STtJLE87Rzs7STs0Qzs7Ozs7TTs7O0k7Rzs7STs0Qzs7O3FDO2tEOztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7O0ksSSxXLHNDOzs7OztNLE07Ozs7SyxNOzs7RztHO0ksa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7VztZO0s7Ozs7OztNLE07Ozs7O0ssTTs7O0c7O0k7STtHOztJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJLE87Ozs7ZTs2RDtlO2M7O0c7O0ksTzs7OztlOztnQjs7OztpQixPO2lCLFE7Ozs7aUI7a0IsSTtrQixVO2lEOzs7O21CLHFCO29CLFc7b0IsTzs7Ozs7OztvQixLO3FCLFc7cUI7O3NCLE07OztxQixPOzs2Qzs7Ozs7a0IsbUI7bUIsVzttQixPOzs7aUI7O2dCLE07O2U7Yzs7Rzs7STs7OztJO0c7Ozs7OztJOzs7O0k7TTs7O1Msc0I7UyxPO1E7O0ssTTs7Ozs7O08sTTtpQjs7O007OztPLE87TyxPO087OytCOzs7Ozs7OztjO0k7SyxPO0ssUzs7STs7O0ksTzs7O2MsK0IsTztjLE87dUI7YTs7Rzs7STs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7VTtXLE87O1U7O1U7O1c7YTs7OEI7O1UsTzs7Ozs7Ozs7Ozs7OztVO1U7VzthOzs4Qjs7VyxVOzs7VyxPO1U7OzthOzs7Yzs7YSxzQjtZOzs7VTs7VTs7O1c7YTs7OEI7O1csb0I7VyxPO1csVztVLE87O1U7O1csTztXLE07O1U7VyxPO1c7YTs7O2dCO2dCO2U7Ozs7YztlLFE7OztjOzs7O2UsVztlO2dCLGM7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE07OztnQjtlOzs7Ozs7YztlLFU7OztjO2M7YTtVO1U7OztVO1c7O1ksVTs7OztZLE87WSxXO1csTzs7VSxJLGdDO1U7VTs7Ozs7OztNLFM7TyxPO007TztPO1M7OzsyQixPLDZCO08sTztPLE87TTtNOzs7Ozs7O0k7OztJO0s7Tzs7eUIsTywyQjs7SyxLO0ssZ0I7STtJO0c7Ozs7Ozs7Ozs7STtLO00sTztNLE87TSxPO00sTztNLEs7Szs7O0s7Ozs7OztLOztJO0k7SztPOzs7VSxvQjs7Vzs7OztZO1ksVTs7OztZOztZO2M7OztpQjtrQixPO2tCO29COzs7O2lCO2lCO2dCOztZO2M7Ozs7a0I7a0IsTztpQjtnQyxPLHNDOzs7OztXO1ksTTtZLE07VztZLE07Ozs7YSxXO2E7YTtjLE87YyxVOzthLE07OztZOzs7O1k7YTtlLHdDLFk7YTtlOzs7a0IsWTs7Ozs7b0IsRztxQixPOzs7a0IsTTs7aUI7Ozs7YSxNOzs7VztZOzs7Ozs7O1c7WSxVOzs7WTs7Ozs7O1c7VTs7O1M7Ozs7O0s7OztLOztNOzs7UztTO1M7UztVLE87VSxjO1U7b0I7Uzs7WTs7UztTLE07UTs7Ozs7Ozs7STtHOzs7SSxPOzs7YztlLFE7OztjO2U7Ozs7O2lCOzs7Ozs7OztpQixNOzs7Ozs7O2M7YTs7Rzs7STtLLFM7SyxnQjtJO3dCO0k7Rzs7STtLLEs7SyxPO0kseUM7STtHOztJO2lDO0ssc0I7STtLLE87STtJO0ssZTtLLGdCO0k7Szt5QjtJLFc7SSw4QjtHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7SSxZO3NFO0ksTTtHOzs7Syw0QjtJOztLO00sUztNO3dCLE07O0s7TTs7Uzs7O1k7WSxPO1c7Ozs7OztNOztTOzsyQixtQixPLHdCOztNLE07Ozs7Ozs7O0s7SztJOzs7O29CLE87TSxzQyxPO00sRzs7Vzs7OztLO007TTtROzswQixvQiwwQjs7TTs7K0I7OzsrQjtLLE87Ozs7O2U7ZSxPO2M7STs7SyxrQixNOzs7TSxvQjtNOztLLE87STs7SyxHO007TTtPO08sWTs7Tzs7bUI7TyxPOzs7O0k7O0s7TSxPO00sTztNLFc7SyxPO0k7O0ssVztLLFc7SztNO1E7Ozs7MEIsTywrQjtNLHdCO0ssTztJOztLOzt1RDs7SyxnQjtLLE87STs7Syx3Qzs7SyxPO0k7Ozs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTtVO1k7OztlOztnQjtnQjtlO2M7O1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzBCLGM7MEIsYzs7SSxPO0c7O0k7Ozs7Szs7STtHOzs7Ozs7SSxPOzs7YyxPO3lDLE8sMEI7YTs7O2MsTyxjO2E7O0c7OztJO0s7Tzs7O1U7VSxPO1M7O0s7SztLO0s7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxPO0k7O0ssWTtLOztPLG9CLE87Tzs7dUIsTywrQzs7TyxXO08sTzs7O08sb0I7Tzs7Ozs7Z0I7Tzs7TSxhO21CO00sZTs7O0s7Ozs7Ozs7OztJO0k7SztPOzs7VTs7Uzs7SztPOzs7VTs2Qjs7VTtTOztLO087OztVOztXOztVLHNDOzs7Ozs7Ozs7Ozs7VTtTOzs7O0s7O0ssVTs7TTs7OztPO1M7OztZO1k7Vzs7TyxPO08seUM7TyxPO007UTs7eUI7O08sZ0I7Tzs7O087OztVO1UsTztTOzs7OztLLFc7Szs7STs7Tzs7O1U7O1M7O0ksTztHOzZCLGU7NkIsZTs7SSxRO1U7YyxnRDtJO0s7NEM7O0k7SSxPO0c7NEIsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7O1MsTzs7O21CO21CO2tCOzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7Rzs7SSxrQjtHOztJLHdCO0c7O0ksTzs7Ozs7Yzs7YTtHOzs7OztLO007O0k7O0ssVztLO0s7STs7SztnQjs7STtvQiw4QjtJOzs7Szs7Ozs7ZTs7Ozs7O087O1EsTztROzs7Tzs7Tzs7O1E7O1E7VTs7OzRCLG1DO1E7Ozs7Tzs7Ozs7Ozs7O087O1E7UTs7Tzs7Ozs7Ozs7Uzs7O1U7VTs7YTtjLE87YTtjLFk7YyxPO2EsTztZOztVO1M7OztPLE07OztPLE87USxNO087UTs7UTtVOzs7Ozs7OztROztRLFcsd0MsWTtPO3FDOztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087USxhOzs7Ozs7UTs7Ozs7Ozs7O1E7O1EsOEI7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7O3VCOzs7Ozs7Vyx1Qjs7Ozs7Ozs7Ozs7Ozs7TyxHO1E7b0I7OztTOzs7O1U7USxXO1EsTTs7O087UTs7Ozs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTtROzs7VztXO1U7OztPOztRO1U7Ozs7Ozs7O1E7O087Ozs7O2lCOzs7OztPO1EsTTtPOztROzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7TztRLE07Tzs7O1M7UyxNOzs7d0I7OztROzs7UyxjO1M7OztPOzs7Vzs7OztZOzs7Vzs7O1E7O1E7Ozs7O2E7Ozs7Ozs7Ozs7OztROztTO1MsVTs7O1ksc0I7WTthLE07OztZO1k7O1E7Ozt1QjtRO1MsSSxpRDs7Ozs7Ozs7Vzs7Ozs7O1U7VyxPO1csSTtVOzs7Ozs7Tzs7Ozs7O21COzs7O087O1E7UTtVOzt3QixzQzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7UTtRO1E7VTs7Ozs7YzthO2E7YyxXO2MsUTtjLFE7YztjO2E7WTs7Ozs7UTtRO1EsWTtPOzs7VTtVO1M7O087OztVO1U7Uzs7Tzs7UTtROzs7VztXO1k7OztnQixPOzt5QyxzQixhOztlO1k7Ozs7Ozs7Ozs7YyxLO2U7Z0IsTztnQjtrQjtxQjs7O2UsTTs7OztjO2UsVztlO2U7Ozs7Ozs7ZSxNOzs7Yzs7OzsrQjtZLE07OztVO1E7O1EsTzs7OztPO1EsTztROztPOzs7OztpQjs7Ozs7Ozs7O1M7Ozs7O1UsUTs7OztTOzRCOztTLGM7O1U7Ozs7YTs7OztpQixPO2dCOztXOzs7VTs7Ozs7Ozs7O1MsTTs7OztPOzs7UTtVOzs7O2M7YyxPO2E7NEIsTyxzQzs7Ozs7TyxXO087MkI7TztRO1E7Tzs7OztTOzs7Ozs7Ozs7Ozs7O087O087OztRLFU7OztRO1U7OzRCLE8sNEI7O1EsTztRLE87USxVOzs7USxHO1M7VSxPO1U7WTs7O2U7Ozs7O2dCLFE7Ozs7aUI7O2tCLE07aUI7Ozs7Z0IsVTtnQjs7ZTtjOzs7OztVLFc7VTs7O2EsTztZO1Usb0I7VSxPO1U7VSxtQjtVO1k7OztlO2U7Yzs7UztVLE07O1M7OztVO1k7OztlO2M7OztVOzs7Ozs7Ozs7Ozs7O08sTTs7O087O1E7UTtROztPOzs7OztpQjs7OztPOztRLEk7UTs7UTs7Ozs7Ozs7Tzs7UTtROzs7Tzs7Ozs7Ozs7O087OztRO1E7b0I7TyxNOzs7TyxNO2tDOztPOzs7USxXOzs7TztPO1E7O1EsVzs7USxNOztPO087Ozs7Ozs7Ozs7SSxPOzs7YztjLE87YTtHOztJLE87OztjOzs7Ozs7O2U7YyxPOzs7Ozs7YTs7O0c7O0k7OztJLE87OztjOzs7OztjLE87Ozt3Qjt5QjsyQjt5QjsyQjt5QixPO3lCLFE7Ozs7eUI7d0IsTzs7dUI7YTs7O0c7O0k7SztHOztJO0s7SyxLO0ssa0I7SyxXO0s7STtLO0s7O0ksd0MsTyxpQjtJLEc7Syx1QztJO0s7Tzs7O1U7Ozs7Ozs7OztVLGtCLHFDO1U7VyxLO1csTztXLFU7VzthOzs7Ozs7VzthOzs7Ozs7VTtTOzs7Ozs7STtHOztJO0ssaUI7SyxTO0s7SyxLO0ssa0I7SyxXO0s7SSx3QyxPLGlCO0k7RztHO0k7STs7Ozs7OztJO0ksVztHOztJOztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOzs7O0s7TTs7SSxJOzs7Syx5Qjs7SSxnQyxPLGtDO0k7Ozs7Ozs7STs7Ozs0Qjs7UTs7UyxPO1M7UztTLE87UTtRLE87OztRLE87UyxNO1E7Uzs7UyxVO1E7O2tCLGdDO2tCOzs7aUI7OztrQjs7O3NCLHdDLFk7a0Isa0I7aUI7O1E7Ozs7Uzs7O1MsTTtRO1M7Ozs7O1E7O2tCLGdDO2tCOzs7aUI7aUI7O2tCOztpQjs7UTs7OztTOzs7Ozs7O1k7Vzs7O1MsNEMsbUI7O1E7O1E7OztTLFk7OztZOzs7O2E7OztZOzs7O3NCLE87cUI7O1E7OztrQyxzQzs7UTs7UztROztrQjtrQjs7O2lCOzs4QiwwQjs7UTs7UztRO3VDLDBCOztROzs7O1M7Ozs7YTthO1k7WTtXO1EsZTtROzs7WTthLE07WTtZO2E7OzsrQyxTOzs7O3lDO3VDOzs7WTtXO1Msc0I7UyxzQjs7O1M7Ozs7O2EsTTs7Ozs7Ozs7Ozs7O1U7VyxNO1U7Ozs7O1U7Ozs7USxPOzt3Qix3QjtxQjt5QixxQztJLGM7a0IsTTs7O3NCOzs7Szs7STtLLE07STs7Tzs7O1U7Ozs7Ozs7Uzs7O0k7OztJOztLLE87SztLO0k7SztNO007Ozs7Ozs7c0IsUztLO0s7Szs7Ozs7O0s7Szs7Ozs2Qjs7O0k7SSxPOzs7Yzs7Ozs7Ozs2QjtJLE87OztjOzs7ZTtnQixNOzs7YzthOzs7RztJOzs7d0MsZ0M7O0k7bUM7O0c7O0k7SyxPO0ssUTtLLE87STs7O087TztPLE87TTs7STtJO0ksTztHOztJO0k7Ozs7Ozs7O1U7OztXO2E7OzRCLDhCOztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7O2U7aUQ7WSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLHNDO1U7b0I7OztzQjs7Ozt1QjtzQjt1Qjt3Qjt3Qjs7Ozs2Qjs7OztpQztnRjtpQztnQzs7Ozs7c0I7cUI7Ozs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7VzthOzs7Z0I7Z0Isd0I7OztlOztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7VztXO2E7OztnQjs7O21COzs7b0Q7O21CO21COzttQjs7bUI7O3VDOzJCOztlOztVO1c7WTtjOzs7aUI7aUI7OztnQjs7O1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7OztJO0k7Ozs7O1EsTzs7O2tCOzs7O3FCLE87OzJDLDhCOzs7O3FCLE87OzhDLGlDOzs7Ozs7OztxQixPOzs7K0I7K0I7OEI7OztxQjs7cUI7Ozs7NkI7O2tCO2lCOzs7Ozs7UTtTLE87O1E7OztRO2dCOzs7Rzs7STs7O0ksWTs7STtLLE87O0k7Rzs7STs7K0IsOEI7O0ksVTtJLE87OztjOzs7OztlLFE7O2UsTTs7O2M7YTs7Rzs7SSxPOzs7YyxlOztlLE07O2M7YTs7Rzs7STs7Ozs7TTs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VTs7YTs7OEI7O1MsTzs7Uzs7O1UsVTs7O1U7WTtVLE87Uzs7WTs7NkI7O1MsTzs7OztLLE87O0c7O0k7Szs7TTtLLEksOEM7Ozs7O00sTTs7Ozs7Ozs7MEI7STtJLEksZ0Q7Ozs7O0ssTTs7O0c7O0k7STtLLHFCOzs7Ozs7O1M7Ozs7Ozs7O1M7O1U7O2E7OzhCOztTLE87Ozs7OztTLGtDO1M7O1M7Ozs7VTtTOztLLE87O0c7O0k7Ozs7OztPOzs7UTtRLGM7ZTs7a0I7Ozt3Qjs7Szs7O3lCLE87STs7Ozs7Szs7Ozs7Ozs7Yzs7OztLOztNLHVCO007Ozs7OztJLE87Rzs7STtJLE87Ozs7O2M7ZSxTO2UsRztnQixXO2UsWTs7Z0I7OztpQjtpQixZOzs7Ozs7ZSxXO2UsVzs7OztHOzs7STtJO0k7STtLLE07SztPOzs7VSxZOztXOzs7aUI7WSxVOzs7VztXOztVLE07Uzs7OztLLFU7OztLO2U7STtLLGM7SyxXO0ssa0I7SSxNO0c7OztLO0s7TSxPO00sSztLO007O1M7OztTLEcsb0M7Ozs7Ozs7O087Tzs7Ozs7Ozs7Ozs7OztLOztROzswQixpQzs7O0ssTztJOztLO00sTztNLEs7Szs7Ozs7Ozs7OztXO2E7OytCLGlDOztZOzs7Ozs7OztlLE87O3dDLHNCLG9COzs7O2U7ZSxPOzt3QyxzQixvQjs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7O0k7SztLO007Ozs7VTs7O2E7MkQ7YTtZOztpQjs7b0M7Ozs7O1M7O1Msa0M7UyxXOzs7aUI7OztJO0k7Rzs7O0ssVztLLFc7UTtNLE07SztLLE87STtJLEksVywyQixjOzs7O0s7Szs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87OztTLE87O2tDLGtCLGU7Ozs4QixPOzs7UztTLGtCLE87O1M7Ozs7Ozs7Ozs7TSxrQixPOztNOztLO0k7cUI7SSxJOzs7d0I7OztJO0c7O0k7O2M7OytDO2M7YTs7Rzs7STs7Yzs0RDtjO2E7O0c7O0k7O2M7NkQ7YzthOztHOztJO0k7Ozs0Qzs7OztHOzs7O21CLE87SyxzQzs7Ozs0Qjs7OEI7Ozs7OztJOzthLHdDLFk7Rzs7STtJO0s7Szs7Ozs7Ozs7OztPLE07Ozs7OztHOztJO0k7Ozs7Ozs7VSx3QztVLFc7Ozs7Ozs7Ozs7Ozs7OztTOztLOztHOztJLFk7Ozs7SyxnQyxVOzs7Ozs7TSxjOzs7O08sc0MsTztPO1EsVztRO1MsVztTO1UsVztVO1csVztXLFMsTzs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLGtCLE87O0ksSSxXLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7RzswQztHOztJLHlCOztHOzs7SSxTOzs7Szs7O007TTtLLE87Ozs7O0s7OztNO00sUztNLE07SyxPOzs0Qjs7OztJLHNCO2tEO0ksb0I7SSxPOzs7SSw4Qjs7Ozs7Ozs7O1E7O1MsVztTLEk7O1M7Z0I7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7OztJOzs7SSxTO0k7Rzs7STtLLHVCO0s7Tzs7Ozs7VTtTO0k7STtHOztJOztLOztLO0s7O0s7OztRLFc7UTtPO0s7STtJOztLOzZCOztJOztPOztROzs7UTs7Ozs7O1k7O2EsVzt5QjthOzthLE07Ozs7OztZOzthLFc7c0I7Ozs7OztPO087Ozs7O2lCOzs7Ozs7USxJLDBDO1E7O087O1E7UTtRLFM7UTs7ZTs7USxVOzs7OztTLEc7Ozs7O21COzs7bUI7Ozs7Ozs7Tzs7UTs7Ozs7a0I7Ozs7TztPO1E7MEMsbUM7OztZO1k7Ozs7Ozs7WTtXO1MsdUIsNEI7Uzt1QixrQixtQzttQyxrQztpQyx3Qjs7O1k7WTtXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7O2U7dUI7O1c7OztZOztlOztlO3VCOztXOzs7WTthLGtCO2E7O1k7WTtXOzs7WTthOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7OztlOzs7ZTs7O2U7OztXOzs7WSw0Qjs7O2E7OztZO1c7OztZOzs7OztZO1c7OztZO2E7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7ZTs7O2U7Ozs7OztlOzs7Ozs7ZTs7Ozs7Ozs7ZTs7Ozs7Ozs7O2U7Ozs7ZTs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlOzs7ZTs7Ozs7Ozs7ZTs7Ozs7OztlOzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7ZSxNOztXOzs7Vzs7Uzs7Ozs7OztRLE07OztPO087Ozs7Ozs7OztVO1c7WTs7OztXOzs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7VTs7MEIsbUM7O1EsYztRO1U7Ozs7YTtjO2UsUTs7OzthO2M7Ozs7Ozs7Ozs7O2M7Yzs7Ozs7OztjOzs7aUI7aUI7aUI7a0IsaUI7a0I7a0IsWTtpQjs7Z0I7O2E7WTs7YTthLG1DO1k7OztPOzs7Ozs7Ozs7Tzs7OztRO1E7Ozs7Ozs7O087O29COztTO1U7VSxPO1UsYztpQjtROztXOzs7YyxJLGlCLE87YyxPO2E7OztRLEk7Ozs7Uzs7VTtVLGtCO1U7UyxNOzs7O087Ozs7aUI7OztvQjtvQjttQjs7Ozs7OztPO1EsTTtPOzs7Vzs7WTtjOzs7OztpQjtrQixTO2tCLEcsc0M7a0IsWTs7O21CLEk7Ozs7cUIsTTs7OzttQixhOzs7OztrQjs7O1csTzs7O3FCO3NCO3dCOzswQyxnQzs7c0IsSztxQjtvQjs7VTtRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO1c7WTs7Ozs7Ozs7Ozs7Ozs7O1U7VztZOzs7Ozs7Ozs7O087UTs7VyxPOzs7cUI7cUIsTzs7b0I7OztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQjs0QztnQjtlO1k7Ozs7Ozs7NEI7Ozs7O1c7WTs7Z0I7Ozs7O1ksVTs7O2E7Yzs7O2M7YTtjLE07OztZLE07OztXO1k7YztnQjs7O21COzhCOzttQjtrQjs7O1k7WSxPO1k7OztlOzs7O1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7VTtZOzswQixXLHlCOztVLE87VSxPOztVOzthOzsrQix5Qzs7VTtXOztjOzZDLHVCO1c7WTthO2U7O2dDOzthLFc7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7TztRO1E7VTs7OzthOzs7ZSxzQjtlOztpQixXO2lCO2lCLEk7Ozs7Ozs7Ozs7ZTtnQjtpQixPO2lCLFU7OztpQjtnQjtnQjs7OzthOztjLFk7Ozs7Ozs7Ozs7a0I7bUI7cUI7Ozs7Ozs7bUIsTzttQjtxQjs7O3dCO21DOzt3QixrQjt1Qjs7bUI7bUIsWTtrQjtpQjtjLGdCO2M7ZSxXO2UsUTtlLE87ZSxVOzs7Ozs7Ozs7Ozs7O2UsRztnQixTOztnQjs7O29COzs7Ozs7Ozs4Qzs7bUI7aUIsTztpQixXOzs7Ozs7Ozs7O29CLG1CO3FCO3FCO3NCO3NCOzs7eUY7O29CO3FCLG1EO21COzs7b0I7OztvQjtxQjtxQjttQyxzQzttQjs7OztrQixNOzs7Ozs7Ozs0Qjs7OzttQjs7cUI7Ozt3Qjt3QixpQjt1Qjs7O3NCOzs7eUI7d0I7O29CO3FCOzs7Ozs7a0IsTTs7O2lCO2tCOzs7OztpQixjOzs7Ozs7OztrQixhOzs7aUM7a0I7bUIsZ0I7bUI7O2tCO21COzs7Ozs7O21CLGU7Ozs7bUI7Ozs7Ozs7O2dCOzs7Ozs7OztjOztZOzs7Tzs7Tzs7O1E7VTs7OzRCOzRCLGdDO1E7Ozs7TztTOzt1Qiw0Qzs7UTs7Tzs7Ozs7aUI7Ozs7Tzs7O1E7Ozs7O087OztPLE87USxNO087UTtVOzs0QixPLDJCOztRLFc7Ozs7VTt1QztTO087UTtVOzsrQiw2Qzs7O1E7UTtjLHdDLFk7Tzt1Qzs7O087OztPOzs7UTtRLGU7TztRO1MsTztTLFU7UyxPO1MsVTs7Ozs7Ozs7Uzs7OztVLE87VSxVO1UsTztVLFU7Ozs7Ozs7OztZOzthO2E7O1k7Ozs7UyxNOztRLE07Ozs7O1E7O1M7Vzs7NEI7O1M7VywyQyxjO1MsTztTLGtCO1MsTTtTO1E7Ozs7O2tCOzs7Ozs7TztRLE07O1E7O1M7Vzs7NkIsMEM7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7UTs7UyxPO1M7Vzs7OztjLFc7YyxPO2E7Ozs7Tzs7O1E7O1c7O1E7UTs7Ozs7YTs7Ozs7OztVLFc7VTs2QjtTOztPOzs7Ozs7VSxNOzs7Ozs7TztjO1E7O1csTzs7O3FCOztvQjs7VTtPO1E7O1MsVzs7O1k7YSxROzs7WTtZLEk7Ozs7O2E7YyxVOzs7YTs7OztnQjttQztlO2E7OztZO1c7UyxvQjs7Ozs7O1E7UztXOzs7YyxJOzs7OztlO2dCO2tCOztvQyxvQixjOztnQjs7Z0IsTTtlOztnQjtrQjtpRCxZO2dCOzs7O2tDOztvQixLO3FCO29COzs7OztnQjtlLE07Ozs7YzthOzs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O1E7VTs7aUMsdUI7OztRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Ozs7VTt5QztTO087UTtVOzsyQiwrQzs7UTtPOzs7OztpQjs7OztPOzs7OztRO087UTs7UztTO1E7UTs7Ozs7Ozs7O087O1E7Tzs7Tzs7O1E7UTtPOztPOzs7O1E7UTs7OztpRzt5Qjs7TztPOztPOzs7Ozs7O1E7O1E7OztnQzs7O1MsTTtROztTLE87UyxPO1MsVzs7O3VDLGU7Ozs7OztPLEksaUQ7Tzs7Ozs7aUI7Ozs7Tzs7O1E7OztROztxQztRO1EsTztPOzs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7O087Ozs7Ozs7OztPOzs7UTtVOzs7YSxJOzs7Ozs7Ozs7Ozs7b0IsSSxTOzs7OztxQjs7d0I7O29ELHFCOzs7cUIsTTs7O29CO3FCLFE7Ozs7OztvQixJLFc7Ozs7OztxQjtzQixPO3NCLE87O3NCO3FCO3FCOzs7O29CO3FCLFE7Ozs7Ozs7Ozs7O21CLEksVzs7Ozs7b0I7O3VCOzttRCxxQjs7O29CLE07OzttQjtvQixRO29CLFc7Z0M7Ozs7OztjLEksVTs7Ozs7O2U7Z0I7aUIsTztpQixROzs7O2tCOzs4QjttQjs7O3NCLGE7Ozs7OztzQjs7Ozs7Ozs7Ozs7ZSxNOzs7YyxJOzthO1k7O2E7YSxPO1k7Ozs7USxXOzs7OztXO1ksTztZLE87WSxPO1c7Ozs7OztZLHNCOzs7O3FCOzs7cUI7dUI7Ozt1Qjs7Ozs7UTs7TyxNOztPOztRLFc7OztROztRLE07O08seUI7Tzs7Ozs7aUI7Ozs7Tzs7O1EsVzs7Ozs7TztRLE07O087USxRO1E7USxXO29CO1E7Tzs7Ozs7aUI7Ozs7O087OztVO1U7WTsyQyw4QjtXLE07O1U7Uzs7O087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2MsTztjO2E7Ozs7OzthOztnQjs7NkMsc0I7OzthLE07Ozs7UyxTO1E7OztPLE07O087Ozs7USxLO1E7VTs7OztjO2MsTzthOzthO2M7Z0I7OzttQjtvQixROzs7bUI7bUI7O29CLFE7b0IsTztvQixTO29CLGE7b0I7OztvQjs7cUI7dUI7Ozs7Ozs7O21CO2tCOzs7OztjO2E7WTs7Ozs7Tzs7Ozs7Ozs7O087OztRLFc7OztRO087O087OztRO1E7Ozs7OzswQjs7O3lCOzs7Ozs7O087Ozs7Ozs7Ozs7OztROzs7Tzs7USxRO1EsYTs7OztVO3lDO1M7TyxJLGlEO087Ozs7O2lCOzs7O087OztRO1U7OzthLFk7YTs7YyxRO2MsTTthO1k7O2E7YSxPO1k7Ozs7Ozs7VyxXO1c7OEI7VTtPO1EsTztRLFc7Ozs7O1c7WTs7O1ksTztZO1c7Ozs7OztZOzs7ZTs7OztvQjtvQjs7bUI7O21CO29CO3NCOzs7eUIsTzt3Qjs7eUI7eUIsTzt3Qjs7O29CO21CO2tCOzs7O2EsTzs7O1k7YTs7O2EsTzs7Ozs7O1E7Ozs7Ozs7OztPLE07O087O1EsVzs7O087OztPOzs7UTs7Ozs7O2E7YTtZOzs7Tzs7Ozs7Ozs7O087O1EsTztRLE87USxXOzs7O1csTTs7Vyx5Qzs7WTs7YTthLE87b0I7OztvQjtXO1ksVzs7O1k7Vzs7Ozs7cUI7Ozs7TyxNOzs7Tzs7O1EsSztRLFc7OztRO087Tzs7Tzs7Ozs7UTtVOzs7YTs7Yzs7O2MsVTtjLFc7Ozs7O2E7O2M7OztlLEs7O2U7ZTtpQjs7Ozs7ZSxTOzs7OzthO2MsaUI7YztnQjs7YyxZO2MsWTtjO2M7Ozs7aUI7O2MsUTthLEk7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7Ozs7Ozs7VztZO1c7Ozs7OztZO2M7OztpQjtrQjs7O2tCLFU7a0IsUztrQixVO2tCLFk7a0I7b0I7a0I7b0I7O2lCLEk7Ozs7OztrQixNOzs7aUI7OztnQjs7Ozs7Ozs7WTs7O1k7VztZO2EsTzthLE87WTs7Ozs7O1ksTTs7O1c7Vzs7UTs0Qjs7O1EsTztRLFE7UTs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7OztXOztZLE87WTs7WSwwQjtZOzs7OztzQjs7OztXLE07Ozs7O08sTTs7OztJOzthO2E7WTs7YTsyQztZOzthOzs7NEQ7O2E7WTtHOzs7Ozs7STtLOztNO1E7OztXO1ksUTs7OztZLFU7Ozs7Vzs7O1U7Ozs7Ozs7O0s7TTtPLE87TyxPO08sVTtNO007TTs7Ozs7O00sTTs7SyxXO0s7YTs7OztJO0ssVTs7OztLLEs7SztPOzs7O1c7VyxPO1U7O1U7VyxROzs7VTtTOzs7O0s7SyxVOzs7Ozs7Ozs7TSxHLDRCLDBEOztLO2E7Z0I7TTtPO1EsTztlO087UTtRO1EsSTs7Ozs7UTs7Ozs7TTtPLGM7TztPOztnQjs7Ozs7OztPLE07OztLO00sVTs7O0s7SyxJOzs7O00sc0IsVztNLE07Ozs7O0k7OztJOztPOzsyQixxQzt5QixPLHdDO0k7Rzs7O0k7Szs7TTs7Ozs7WTs7Ozs7Ozs7Ozs7Ozs7SSxnQztJO0c7O0k7O087VTtVO0ksTzs7OztjO2UsTztlLFE7ZSxROzs7ZSxVOzs7ZSxPOztlLFc7ZSxHLDJDO2UsVztlO2UsWTs7Ozs7aUMsTzs7O2UsTztjO2MsVTtjO2M7YTtHOztJOztLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJOzs7STs7SyxNO0s7OztLOzs7Ozs7c0I7OztTOztVLFc7bUI7Ozs7OztJO0c7O0k7Ozs7O0s7SyxtQjtJLE87Ozs7YztlO2dCLE87Z0IsUTs7Ozs7OztlOzs7Ozs7Ozs7Ozs7OztlLE07Ozs7YyxHO2UsUztlO2dCO2dCOzs7OztpQixNOzs7Ozs7OztjO2E7O0c7Ozs7Ozs7Ozs7STs7Ozs7O0k7OztNO087O1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7O1k7YSxjOzs7Ozs7O1k7Vzs7WTs7Ozs7O1k7VzsyQixTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Tzs7Ozs7Ozs7Ozs7Szs7OztLOzs7TTs7Ozs7O1c7WTs7Ozs7O2dCOzs7Ozs7OztXO1U7Ozs7Ozs7Szs7O1E7dUM7TztLOzs7Ozs7O0k7Ozs7O0s7Ozs7OztLLEs7TSxNO0ssaUI7SztNO007Ozs7O08sTTs7Ozs7OztPOztRO1E7O1U7Ozs7O0s7TTs7Ozs7O0k7Szs7Ozs7Ozs7OztVO1c7Ozs7Ozs7Ozs7Ozs7VztVO1M7Ozs7Szs7Ozs7Ozs7TSxPO00sVztLOzs7UTtxQztPO0ssVztLO007Tzs7O087Uzs7MEI7O087Ozs7SyxTOzs7O2tCOzs7TTtPO087OztLOzs7Ozs7Ozs7SSxNOzs7STtLO087O3lCLG9DOztLO0s7OztNO00sTTs7Ozs7Ozs7O0k7SyxTOzs7O0s7Ozs7Ozs7OztJO0c7O0k7Ozs7SztLLG1CO0s7Tzs7OztVO1c7YTs7OztnQjtpQjttQjs7OztzQjt1QixJOzs7c0I7cUI7Ozs7O2dCO2lCO2tCLE87a0IsTztpQjs7Ozs7OztpQixNOzs7Z0IsZTtnQjtlOzs7OztXO3dDO1k7O3lDO1c7OztXLE07O1UsTTs7Uzs7Ozs7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7Szs7SztNO007TztTOzs2QixPLG1DOzJCLDhCO087Uzs7OzthOztZOztZOzs7YSxPO2E7WSx1QjtZO1c7OztPLE87Tzs7Ozs7Ozs7USxNOztNLE07OztJOzs7OztLO007OztNO2dCOztLLE87OzZCOztJO0k7Ozs7UztVLEs7VSxROzs7O1Usd0IsTztVOztTO1E7SyxHO007TyxPOztTOzsrQixPLDRCOzs7Ozs7Ozs7STtLOztLO0s7O0k7Ozs7SztPOzt5Qiw4Qjs7Ozs7Ozs7Ozs7O087UTtTLE87UyxVOzs7Ozs7O1csSztXOztZLHNCO1k7Ozs7Ozs7OztPO1E7c0I7Ozt3Qjs7Ozs7STs7Ozs7O0ssTztLOztLO0s7Ozs7Ozs7Ozs7Yzs7OztJO0ssVztLLE87SyxVOzs7OztLOzs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7O1M7OzBCOzs7Ozs7O1E7TTs7O007O1M7OztZO1ksTztXOztLO2M7SztNOzs7Ozs7Ozs7OztNOzs7O1U7Ozs7OztNO007TTtNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07OztJOzs7Szs7O007TztPO087TSxNOzs7Ozs7Ozs7STtLLFU7Ozs7O0s7Ozs7Ozs7OztJOzs7Ozs7O08sdUI7Ozs7Ozs7Ozs7O0k7TztLLFc7SyxNOzs7STs7d0I7SztPOzs7O1U7VzthOzs7O2dCO2lCLFE7OztpQjs7Z0I7ZTs7Z0I7Z0I7Z0I7OzswQjsyQixPOzs7MkIsTzswQjs7Ozs7eUI7ZTs7OztVO1M7Ozs7O0ssVTs7SyxNO0k7OztLOztLLDBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0k7SyxPO0s7Tzs7O1U7VTtTOzs7O0s7Ozs7Ozs7OztLLE07O0ksTTs7O0k7O087dUMsOEI7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssSztLLE87STtLO00sTztNLGM7Ozs7Ozs7Ozs7Ozs7OzthOztLLGtCO0s7O3VCLDZDO0s7O0k7STtJO0c7Ozs7Ozs7Ozs7O0k7SztPOzt5QixrQixZOztLO087STtLOzs7UyxXO1MsVztTLFk7OztpQjtXLFc7Vzs7O2Msa0IsUTs7ZSxNO2M7YTs7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7SztPO0s7TztLOzs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7OztJLGtCO0ksTzs7OztjO2UsTTtlO2U7ZTtpQjs7OztxQjtxQjtxQixPOzs7K0I7K0IsTzs7OEI7O29COztvQjtxQjtxQjt1Qjs7OzBCOzs7OzJCOzZCOzs7Z0M7aUM7bUM7Ozs7c0MsTzs7cUM7aUM7aUMsVztpQzs7aUM7Ozs7O2lDO2dDO2dDOzs7Ozs7Ozt3Qzs7Ozs0Qzt5SDs0QzsyQzs7K0I7O2dDO2dDLE87OytCOzBCOzBCOzs7Ozs7Ozs7OzsyQixPOzBCOzs7Ozs7Ozs7eUI7O3FCO3VCOzt5QywwQixpQjs7cUI7dUI7OzswQjswQjt5Qjs7Ozs7c0I7dUIsa0I7O2tDOzs7cUI7c0IsOEIsVzs7OztvQixhOztxQixPOzs7K0I7K0I7OEI7O29CO29CO29CLEc7cUI7O3dCOzt5Qzs7cUI7cUI7O29COztrQyxPLGlCOzs7cUIsVztvQjs7O3VCO3VCLE87NEQ7O3NCOztvQjs7Ozs7bUI7Ozs7O2UsVztlO2lCOzs7b0IsTzs7OzhCOzs7Ozs7OytCO2lEOytCOzttRCxlO21ELGU7OzsrQjs7OztrRDs7Ozs7OEIsTzs7Ozs7Ozs7NkI7O21CO2tDO2U7YztlO2dCLE87K0I7Ozs7ZTtnQjtrQjtnQjs7bUIsWTs7bUI7O2dCO2tCOzs7cUI7Ozs7O3NCO3NCLFE7OztzQixNOztxQixtQjtxQjtvQjs7Ozs7O2U7Z0I7a0I7OztxQjtxQjtvQjs7Ozs7YztlO2lCOztrQzs7ZTtpQjs7a0M7Ozs7O2UsTTs7Ozs7OztlOzs7a0I7OzttQjtrQixPOzJCOzs7OytCOztnQzs7OztpQztpQyxPOzs7O2tDOzs7cUM7OztzQztzQyxvQjs7b0M7O2lDOzttQzt3Qzs7Ozs7Z0Q7OztpQztrQzs7OztzQzs7a0MsTztrQyxRO2tDLE87OztrQyxPO2lDOzs7Ozs7Z0M7OytCOzhCOztpQjs7ZSxPOzs7Ozt5Qjt5Qjt3QjtjO2M7ZSxrQyx1Qjs7ZTs7O2U7ZTs7Yzs7O2M7eUM7YTs7OztJOzs7SztPOzs7VSxXO1M7O0k7OztlOztrQjs7O3FCO3FCO29COztlLE87Yzs7Ozs7Ozs7YztjOzs7Ozs7OztjOzs7O2M7Ozs7YTs7Rzs7O0ksTzs7Ozs7YztlOzs7O2U7Ozs7ZSxPO2UsUztjO2tDO2M7YTtHOzs7Ozs7Ozs7STtLLFE7SztPLDJDOztLO087Ozs7VztXOzs7YyxvQjtjLGM7YTs7O1c7VyxPOzs7cUI7cUI7O3FCLHlCO3FCOztvQjs7O1U7O1UsOEI7VTtXO2E7OztnQjtpQjttQjs7cUMsTyw0Qjs7aUI7aUIsa0I7aUIsVzs7OztpQixPOzs7OzsyQjs7OzBCOztnQjtpQjttQjtpQjs7O2lCOztnQjtpQjs7O29CLFk7Ozs7c0I7Ozs7O3VCLE87Ozs7OztvQjtvQjs7bUI7OztnQjs7O21CO21COzhCOzs7O2tCOztnQjtlOztnQjtnQjtnQixPOzt1QyxxQzs7ZTs7Ozs7O1c7VzthOzs7Z0I7OztpQixPO2dCO2U7O1U7eUMsTyxpQjs7O29ELGU7OzBELGU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVO1c7VzthOzs7Z0IsTzs7Ozs7MEI7MkIsTzsyQixPOzBCOzs7MkI7NEIsTzs0QixPOzJCOzs7Ozs7OzBCO3lCO2U7O1U7VyxxQjt5RDtXOzs7O1c7OztnQjs7YSxNOzs7O2U7OztrQixzQixPO2tCLE87OzRCO2lCOzs7Ozs7O1U7VztXO1c7YTs7O2dCLE87Ozs7OzBCLGlDOzBCOzJCOzJCOzJCLE87MEI7Ozs2Qjs4QixLOzhCLE87OEI7OEI7NkI7Ozs7NkM7c0Q7OzhCOztpQzs7aUM7O2tDLE87aUMsTztnQzs2QixPOzs7O3VDOzs7Ozs7O3VDLFc7dUM7Ozs7c0M7NEI7OzBCO3lCO2U7OztXO2E7OztnQjtnQjtnQjs7aUI7aUIsUTs7aUI7OztrQjtvQjs7O3VCO3NCOzt1Qjt1QixPO3NCOzs7a0I7b0I7Ozs7O3VCO3NCO2lCOztnQjs7bUI7Ozs7O3NCO3NCO3FCO2dCO2U7Ozs7OztXO1ksVTs7O1c7Ozs7NkIsTyx5Qzs7VTs7YTs7O2dCO2dCO2U7OztVOzs7YTthLE87Ozs7O3VCO3dCO3dCLFM7dUI7dUI7c0I7WTs7O1U7Ozs7O2tCOzs7cUI7Ozs7O3NCLE87cUI7b0I7O1M7Ozs7O0ssSTtLO087OztVO1U7Uzs7O0k7Szs7O1Esb0I7Ozs7WTs7K0M7O1EsTTtPOztJOzs7TztPO007O0k7STs7O0k7Szs7eUIsZTt5QixlOzs7Ozs7OztJO0c7O0k7Szs7O0k7Rzs7STtLO087Ozt5Qjs7VTtVO1M7Szs7Szs7TTthO0s7O0k7Rzs7SSxPOzs7O2MsTzthO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Ozs7YyxtQjs7YzthO0c7O0ksWTtJLG1CLFE7Ozs7Ozs7SztNO1E7O1c7OzthOzs7ZTtNOzs7UyxPOzs7TTs7O08sTztNLFc7O0s7O0k7OztJLFc7OztLLE87STtJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7OztJLE87Ozs7O2M7Ozs7Ozs7O2E7O0c7O0ksSztLLE87STtLLE87SyxPO0ksTztHOztJOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOzs7USxPOztRLE87O1EsTzs7USxPOztRLE87Ozs7Ozs7O1EsTzs7USxPOzs7USxPOzs7USxPOztRLE87Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7Ozs7O2lCLFc7aUIsTztnQjs7aUIsTztnQjs7Tzs7O1E7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsVztpQixPOztnQjs7aUIsTztnQjs7O08sTzs7O08sTzs7Ozs7aUI7O2tCLE87aUI7Ozs7Ozs7O2lCO3lCO2lCLHVCO2dCOzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OzthLG9CLFE7OzhCOzs7Ozs7Ozs7Tzs7Ozs7OztrQjs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztRLE87UTtVOzs7YSxtQjs7YTtZOztPOzs7Ozs7Tzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7aUI7a0IsTztrQixPO2lCLE87O2dCOztPOzs7Ozs7USxVOztRLGM7Ozs7OzswQjs7Ozs7UTtTOztZO1c7Uzs7UztTO1M7O2tCOztTLFc7UyxNO1EsTzs7Ozs7Ozs7OztPLFc7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROztXLFc7VyxPO1U7UTs7VzttQjtXLE87VTtPLE87OztPLHNCLE87TyxPOzs7Ozs7Ozs7O08sTzs7Ozs7aUIsTzs7Ozs7MkI7MkIsRzs0QixXOzRCOzs7Ozs7Ozs7OzRCOzZCLE87Ozs2QixPOzZCLE87NEI7Ozs7Ozs7OytCOzs7Ozs7OzsyQjswQjtnQjs7O087Ozs7O1EsWTtRLFM7TyxPOzs7OztpQixPOzs7Ozs7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLFc7MkIsTzs7Ozs7Ozs7MEI7OzJCLE87OzBCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsVztpQjtpQjtnQjs7OztPLE87Ozs7O2lCLE87Ozs7OzJCOzs0QixPOzJCOzsrQzs7MkI7MEI7Z0I7Ozs7TyxPOzs7OztpQjtpQjtnQjs7O08sbUIsTztPLE87O08scUIsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87TyxPOzs7Ozs7Ozs7OztPLE87Ozs7O2lCO2lCO2dCOzs7O08sTzs7O08sTzs7Ozs7aUIsTzs7Z0I7Ozs7TyxPOzs7TyxPOzs7OztpQjs7Ozs7OztvQjtxQixXO3FCLE87cUIsTztvQixPOzttQjs7b0IsTzttQjs7MkI7Ozs7Ozs7Z0I7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7USxPO08sTzs7Ozs7Ozs7aUI7OztPOzs7OztROztXO1ksTzs7WSxXO1ksTzs7O1csVztXLE87Ozs7Ozs7TztRLDRCOzs7USxPO08sTzs7Ozs7Ozs7aUI7O3FDOzs7Ozs7Tzs7OztRLE87TyxPOzs7Ozs7Ozs7Ozs7TyxzQixPO08sTzs7O087Ozs7Ozs7aUIsTztnQjs7aUIsTztnQjs7TyxxQixPO08sTzs7O087OzJCOzs7O2E7OzsyQjs7MkI7OzJCOzsyQjttQzs7TyxPOzs7Ozs7Ozs7TyxzQixPO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOzs7UTs7O1csTzs7USxPO1EsTztPLE87Ozs7Tzs7Ozs7OztpQixPOztnQjs7aUIsTztnQjs7O087Ozs7Ozs7aUIsTzs7Z0I7O2lCLE87Z0I7OztPOzs7Ozs7O2lCLE87Z0I7O2lCLE87Z0I7O087OztROztXLFc7VyxPO1U7UTs7Vzs7O1k7WTtjO1csTzs7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxXO08sTzs7Ozs7Ozs7OztpQjs7O08sc0IsTztPLE87Ozs7SSxPOzs7OzZCLDJCO0c7Rzs7O007O087O3FDOztNO0s7Ozs7STsyQjtHO3NDLGtDOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOztJOzs7USxNO087SSxvQjs7Ozs7O0k7SyxPO0ssTztLLE87SSxXO0c7cUIsc0MsWTs7O0k7SyxROzs7O0ssTTs7Ozs7OztrQjtHOztJO0ksTztHOztJLFc7STtHOztJLFc7STtLLFE7SyxRO0ksdUI7SSxNOztHOztJO0k7OztNOzs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxNO0ksTzs7Ozs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7O2U7YztjOzs7aUI7OztrQixVOzs7aUIsRztrQixNOztpQjtrQixVOzs7a0IsTztpQjtpQixXO29CO2tCO21CLE87bUIsTztrQixNOzs7aUI7a0I7b0I7Ozt1Qjt3QixNO3dCO3VCLEksc0M7Ozs7Ozt3QixNOzs7c0I7OztrQjtpQjtpQjs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsVztrQjtpQixJOzs7O21CLE07Ozs7aUI7O29COzs7Ozt1QixPOzs7O3NELDhCOztrQyxPOzs7OzJELGEsa0I7aUM7aUM7Ozs7b0M7OzhDOzhDOzhDOzhDOzZDOzs7Ozs7OztvQzs7OEM7K0MsTTsrQzs4Qzs4Qzs2Qzs7Ozs7Ozs7b0M7OzhDOytDLE07K0M7Ozs7K0M7O2dELGM7K0M7K0M7Z0QsTTtnRDtnRDs7O2lEOzs7b0QsSSxNLHFDO29ELEk7Ozs7OztxRCxNOzs7Ozs7bUQ7OytDOzs4QzsrQyxNOytDOzhDOzhDOzZDOzs7Ozs7b0M7OzhDOytDOzs7OEM7NkM7OztvQztvQzs7O29DLE07K0Q7Ozs7O3NCO2lCO2lCO2tCO2tCO2lCOztpQjs7OztrQixNO2tCO2tCO29CO3VCOztrQjtrQjtpQjs7O2lCLE07NEM7OztpQjs7O2tCLFU7OztrQjtpQjs7YTtHOztJO0k7SztLLE87STs7Ozs7Ozs7OztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7SztPOzs7VTs7OztXLE87VztXO1U7Uzs7Ozs7SSxJOzs7O00sTTs7OztJO0s7SztLO0s7SztLOzs7Ozs7Ozs7O0s7Tzs7Ozs7VSxPOzs7b0I7Ozs7Ozs7OztxQjtxQjtvQjtxQixPO29CO29COzs7Ozs7O3VCOztpQzs7O2lDO2lDO2lDO2tDLGM7a0MscUI7a0Msb0I7a0M7b0M7a0M7b0M7aUM7Ozs2RDs7O3lDO21DOztxRDttQzs7eUM7bUM7MEQ7bUM7Ozs7a0M7bUMsTzttQyxjO2tDO21DLE07OztpQztrQztvQztrQztvQztrQztvQzs7O3VDOzs7Ozt3Qzt3Qzt3QyxLO3dDO3dDLFM7dUM7c0M7Ozs7Ozs7a0M7b0M7Ozt1QyxzQjtzQzs7OztrQzs7bUM7bUM7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7O2tDO2lDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7O2tDOztxQzs7O3dDLE87dUM7cUQscUM7a0M7Ozs7dUMsVzs7Ozs7b0M7O3FDO3FDO3FDLEs7cUMsUzs7Ozs7Ozs7Ozs7Ozs7O2tDO21DOzs7Ozs7Ozs7bUM7a0M7Ozs7Ozs7OztpQzs7O3VCOztpQyxHO2tDLE07Ozs7Ozs7aUMsRzs7bUM7OztrQyxNOzs7Ozs7O2lDOztvQzs7O3VDLE87c0M7O2lDOzs7O3NDLFc7Ozs7O21DOztvQztvQztvQyxLO29DLFM7Ozs7Ozs7Ozs7Ozs7OztpQztrQzs7Ozs7Ozs7OztrQztrQztvQztrQztvQztpQzs7Ozs7Ozs7O2dDOzs7Ozs7Ozs7d0I7O2tDO21DLFE7bUMsTTttQztrQztrQzttQzttQztrQzs7Ozs7Ozs7O2lDOzs7dUI7O2lDLEc7a0MsTTs7O2lDLEc7O21DOzs7a0MsTTs7Ozs7Ozs7O3FDOztpQzs7O2tDO21DOztvQyxRO29DLE07Ozs0QztrQzs7O21DLGM7Ozs7O3VDO3dDLE87d0MsTzt1Qzt1QyxXO3VDOzs7dUM7OztnRDt3QyxNO3VDOzs7Ozs7bUMsTTs7Ozs7Ozs7bUMsTTs7Ozs7Ozs7a0M7bUM7bUMsZ0I7bUM7Ozs7Ozs7OzttQzttQztxQzttQztxQztrQzs7Ozs7Ozs7OztpQyxNOztnQzs7Ozs7O3VCOztpQztrQzs7O2tDO2tDO2lDOzs7Ozs7Ozs7Z0M7Ozt1Qjs7aUM7a0M7a0MsZ0I7a0M7a0M7aUM7Ozs7Ozs7OztnQzs7O3VCO3VCO3dCO3dCO3VCOzs7Ozs7Ozs7Ozt1QixNO2tEOzs7Ozs7UztLO0ssUzs7STtJO0k7O087OztVLFc7VSxPO1M7Ozt3QjtLLE07O0k7STs7SztPOzs7VTs7Ozs7Ozs7NEIsZTs0QixlO1c7VyxPO1c7Ozs7OztjO1UsTztTOzs7O087OztXO1c7O2M7Ozs7Ozs7O2U7aUI7OztvQjtvQjs7bUI7OztjO2U7O2dCO2tCOzs7cUI7cUIsTztvQjs7O2dCLEs7Z0Isb0IsZTtnQjtnQixPO2dCLDZCOztrQjs7OztjO2U7Ozs7O2M7Ozs7Ozs7O2U7Ozs7O2U7ZTs7OztjOzs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7ZTtlOzs7O2M7Ozs7OztlO2U7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsSztxQjtxQixPO3FCLFk7cUI7dUI7OzswQixPOzt5QjtxQjtxQjtvQjttQjs7O2M7Ozs7O2U7Ozs7Ozs7Ozs7aUI7Ozs7b0I7cUIsWTtxQjtxQjt1Qjs7cUIsWTtxQjt1Qjs7OzBCLE87eUI7cUI7b0I7bUI7OztjOzs7O2U7Ozs7VztVOzs7O0ssVztJOzs7OztJOzs7SSxPOzs7OztjOzthO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPO1E7VTs7MEIsTyw0Qzs7USxVOzs7USxTO1EsTztPO08sVztVO1E7UyxPO1MsTztRLE07OztPOzs7VTtVO1csVztXOzs7Ozs7VyxNOzs7Uzs7O087TztRO1E7Ozs7Tzs7Ozs7Ozs7Tzs7UTs7O087Ozs7UTs7OztTO1MsTztTLE87b0I7UyxPO1MsTztTLE87UyxrQjtTLE87UyxPO1MsYTtTLE87UyxPO1MsUztTO2U7UyxPO1MsTztTLE87UztXO1E7O087OztRO1U7OzthLE87O1k7O2E7YTs7YyxPOzthLE87WTs7Ozs7UTtVOzs7YTs7O2M7YyxLO2MsTzs7YyxXO2E7OztnQzs7Ozs7O1k7O1EsTztRLFE7UTtVOzs7Ozs7O1E7VTs7O2E7O1k7USxPO087Ozs7OztVOzs7Ozs7Ozs7Ozs7Ozs7TyxTO087OztRLGM7Tzs7Ozs7Ozs7O087USxNO087UTtVOzs7YTs7WTt5QixvQzs7Ozs7O1E7OztTLEc7O2M7O1E7UyxPO1MsTzs7Uzs7WTs7OEIseUM7O1M7VTs7YTs0Qyx1QjtVO1c7WTtjOzsrQjs7WSxXO1c7Ozs7Ozs7Ozs7Ozs7O29COzs7Ozs7Ozs7OztROzs7OztTO1M7VSxPO1UsVzs7Ozs7YTs7YyxtQjtlO2dCLEs7Z0IsTTtnQixNO3VCOzs7eUI7O2E7WTs7O2EsVztZOzs7O1csTTs7Ozs7OztxQjs7OztZOztjOzs7aUI7aUIsaUI7Z0I7Ozs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7UztXOzs7YztjO2E7OztTLFM7UTs7O087USxNOztPLE07OztPOzs7O1EsVTs7O1EsTztRO1U7OzthOzs7O2M7YyxLO2M7Z0I7OztrQyx1Qzs7YyxXO2M7OzJCOzs7Ozs7YztjLE87YyxPO2E7O3FCO1k7Ozs7O1E7O1Esb0I7Tzs7Ozs7Ozs7Tzs7O1E7VTs7OztjOzs7ZSxPO2M7YyxXO2MsTzthOzthO2M7Z0I7OzttQjs7OzttQjttQjtrQjtjO2dCOzs7bUI7bUI7bUI7a0I7YTtZOzs7USxROztRLE07O087UTs7OztRLE87USxPO087Tzs7Ozs7Ozs7O08sTTtrQzs7Tzs7O1E7UTtVOzs7O1U7UTs7Tzs7O0c7SSxNO0ksYTs7Ozs7STtJOzs7O1E7OztTO1c7YztjO1M7UztRLE87Ozs7O2dCLE87OztHOztJO3VCLE87STs7O0s7TztVO1U7SztLO0ksTztHOztJLEksaUI7Ozs7O3NCO007Ozs7O0k7SyxPO0ssSzs7SyxPO0ssTztLOzs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1c7Ozs7WSxPO1c7VyxPO1U7O1U7OztXO1ksZTtZOzs7OzthLE07Ozs7VTtXLFk7VzthOzsrQixvQixjOztXO1U7OztXO1ksTTtZLE87Ozs7OztXLE07O1UsaUMsTztVO1M7Ozs7Ozs7SyxVOzs7SyxTO0ssTTtLLE87STtJO0ssVztLOzs7OztNLE07Ozs7O0ksUztJLEk7Ozs7SywyQjtLLE07O0ksVztJO0k7SyxVOzs7SyxPO0k7SyxXO0s7Ozs7O00sTTs7OztJLEk7Ozs7SyxrQjtLLE07OztJO0s7TSxPO007Szs7Ozs7O0ssTTs7O0k7SyxPO0ssZTtLOzs7Szs7O1E7Ozs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7Ozt3QjtLOztLLFU7Szs7O0ssTztLOzs7Ozs7O1E7Ozs7Ozs7OztLLE87SyxVOzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7O0s7OztROzs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Ozs7Ozs7O0k7Ozs7STs7Ozs7Ozs7Ozs7Ozs7STtLLFE7SztPOzs7VTtXLE87VyxPO1csTztXLE87VTs7a0I7Ozs7Uzs7SztPOzs7O1U7VzthOzs7Z0I7Ozs7Ozs7O2lCLFE7aUI7Ozs7aUIsUTtpQjs7OztpQjttQjs7cUMsaUM7O2lCLGdCO2lCOzs7O2lCOzs7Ozs7Ozs7O2lCOztzQjs7aUI7bUI7Ozs7Ozs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXO2E7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7Ozs7VTtTOzs7SztPOzs7VTs7Ozs7Ozs7Ozs7OztXO1UsSTs7Ozs7VyxNOzs7VTtVO1U7VTtVO1U7VTtVLFc7VTtZOzs7ZSxrQjtlLE07O2M7O1U7VyxPO1csUTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7Vzs7OEIsTyx3Qzs7O2dCLE87ZTtVLE07Ozs7SyxRO0ksSSxjOzs7Ozs7SyxNOztJO0ssUTtLO087Ozs7Ozs7Ozs7VTtXO1ksTzttQjs7O1U7VyxPO1csTztXLE87VSxPOzs7O0s7Tzs7O1U7Ozs7Ozs7Ozs7OztXOzs7VyxrQjs7WTs7O2EsVTs7O2EsVTs7O2EsTztZO1ksSTs7Ozs7O2EsTTs7O21CO2EsTTs7OztXLE07O1U7Ozs7Ozs7Ozs7Ozs7O0k7RztHOztJO0k7SyxhO0s7O1M7Ozs7OztJO0k7Rzs7STtLLGE7SztJO0k7Rzs7STtLOzs7SztPO3VDLDZCO0ssVTs7O0k7STtHOztJO0c7O0k7Szs7O0k7WTs7O2U7Ozs7Ozs7O2M7OztHOztJO0k7O0s7O1M7Ozs7Ozs7O0k7SSxZO0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7UTtROzs7USxPOzs7a0I7cUM7O2tCO2lCOzs7OztROzs7OztpQjs7Ozs7Rzs7STtLLE87SyxPO0ssTztJO0c7O0k7Szs7Yzs7O0k7O3NCOztJO0c7O0k7O087O087ZTs7Rzs7SSxPOzs7OztjO2U7Z0IsTztnQixTO2UsTztjO2M7dUI7d0IsTzs7OzswQjswQjs7Ozs7Ozs2QixPOzRCOzs2QixPOzRCOzBCLE87OzswQixPOzs7Ozs7O29DLE87O21DOztvQyxPO21DOzswQjs7OzsyQixPOzBCLE87OzswQjs7MkIsTzswQixPOzswQixPOzswQjs7MkI7OzhCOytCLE87OEIsVzs4QixPOzs7MEIsTzs7OzBCOzsyQixPOzBCLE87Ozs7Ozs7OzBCOzsyQixPOzBCLE87OzBCOzsyQixPOzBCLE87Ozs7OzswQjs7MEI7MkIsTzsyQixPOzJCLE87MkIsTzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsVztvQyxPOzttQzs7b0MsTzttQzs7MEI7Ozs7MkI7MkI7Ozs7MkIsTzsyQjs2Qjs7MEIsTzs7Ozs7Ozs7OzswQjs7OzJCOzJCOzZCOzswQixPOzs7MEI7Ozs7MkIsTzswQixPOzs7Ozs7Ozs7OzBCLE87Ozs7Ozs7b0MsTzttQzs7b0MsTzttQzs7MEI7Ozs7MkIsTzswQjswQixXOzBCLE87Ozs7Ozs7Ozs7OzBCOzs7OzJCOzs4QixPOzs2QjsyQixPOzBCOzBCLFc7MEIsTzs7Ozs7Ozs7Ozs7OzBCLE87OzswQixPOzs7MEI7OzsyQjs7OEI7Ozs7K0I7OytCLG1COzhCOzhCOzhCOytCLE87OEI7OEI7K0IsTzsrQixPOzhCLE87Ozs7Ozs7Ozs7OzBCLE87Ozs7Ozs7Ozs7OzswQjswQjs7MkIsTzsyQjs2Qjs7OztpQyxPO2dDOzsyQixPOzJCLE87MEIsTzs7Ozs7Ozs7Ozs7MEI7OzJCLE87MEIsTzs7MEI7Ozs7MkIsTzsyQixPOzBCLE87Ozs7Ozs7b0MsTzs7Ozs7Ozs4QyxPOzZDOzs4QyxPOzZDO21DOzs7MEIsTzs7Ozs7OztvQyxPO21DOztvQyxPO21DOzs7Ozs7OzBCLE87Ozs7OzJCLE87OzswQixPOzs7OzBCLE87OzswQjs7MkI7MkIsTzswQixPOztzQjs7YTtHO0c7OztNOztPO2U7Ozs7c0M7OztxQzs7TTtLOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7STs7d0Isc0I7O2lDOztPLE07OztPOztHOztJLFk7OzswQjs7O08sTTtlLE07O0c7O0ksWTs7OzBCOzs7TyxNOztPLE07O0c7O0k7SyxPO0s7Tzs2QztJLFM7STtJLE07Rzs7STs7SztNLFM7TSxPO0s7SyxVO0s7STtJO0ssTzs7O2UsVztlLE87Yzs7O0k7STtLLE87SyxROzs7Szs7O08sSztROzs7Ozs7OzJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksWTtJLE87O0c7O0k7SztPOzs7OztVO1M7OztLO0k7RztHO0k7OztRLE07Tzs7OztJOztPLDJDO0ksTzs7O2M7OztlLE87YyxPOzs7d0IsVzt3QixPOzt1Qjs7YTs7Rzs7STtLLFc7SztLLE07O0s7O00sbUI7TSxROzs7OztJO0ssWTtLLFM7SyxPO0ssTztLLFE7STs7O2M7OztJLFk7STtJLE87OztJO0k7OztROzs7OztRO1E7USxPOztRLE07O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7Ozs7STtHOztJLEkseUI7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7OztjLGlCLE87Yyx1QztjOztlOzs7Ozs7Ozs7Ozs7Ozs7bUIsTzs7OztjOzs7YTs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OzJCLFM7O0ksTztHOzs7Ozs7Ozs7Ozs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEc7UTs7TSxxQjs7OztJOzs7OztNOztLO0s7Ozs7Ozs7Ozs7OztZOzs7Ozs7Z0I7bUI7YTtjLFE7YyxPO2MsTzs7O2MsTztjO2dCOzs7bUI7Ozs7Ozs7O21COzs7O29CLE87b0IsTzttQixPO2tCOztjOztpQjs7bUMsTywyQjs7Ozs7Ozs7Ozs7Ozs7O2MsTztjLFM7YztnQjtjLFk7YztnQjs7Ozs7Ozs7YztjOzs7O2E7Ozs7Ozs7O2E7Yzs7Ozs7Ozs7Ozs7Ozs7OztjO2M7Z0I7Ozs7YTs7Ozs7Ozs7Ozs7WSxHOzs7O2EsTTs7O1ksYztZOztZOzs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7UyxHO1U7VyxVO1c7YTs7Vzs7Vzs7OztXLFc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHO2M7ZSxZO2U7ZSxRO2U7ZSxVO2M7Yzs7Ozs7Ozs7YSxHO2M7ZSxZO2UsZ0I7Yzs7O2M7Ozs7OztTLEc7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7Ozs7O1ksRzthO2MsWTtjOzs7Yzs7O2E7YztlLE87ZSxPO2U7Yzs7Ozs7YTs7OzthOzs7Ozs7O0s7OztLOztROzs7Vzs7OztNLE07OztLO0k7STtLO00sUTtNOzs7Szs7Ozs7TztROzs7USxVOztRLE07Tzs7O1E7O1EsTTs7Ozs7OztjOzs7O2dCO2tCOzs7cUI7b0I7O2lCO2tCOzs7Ozs7Ozs7O2lCLE07Ozs7O2MsTzthOzs7Ozs7Ozs7Ozs7Ozs7Yzs7O3dCOzsyQjs7NEMsd0M7Ozs7eUI7Ozs7Ozs7OzswQjsyQixjOzJCLFU7MkIsUTs7Ozs0Qjs7NkI7K0I7Ozs7NkIsTTs7Ozs7Ozs7Ozs7OzBCLE07Ozs7O3dCO3VCO2E7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7Ozs7OztVO1csTTs7Ozs7Ozs7YTs7O2MsTztnQjthO2M7OztpQixrQjs7Ozs7O21CLGE7Ozs7O2lCLE07Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxJLGM7Ozs7YSxNOzs7Ozs7O2UsTztjOzs7VztZLE87O1c7WSxNOzs7OztlLE87Yzs7VTtXLE07VzthOztrQjs7O1U7O1csUTtXO2E7OztnQixPO2U7OztrQjs7O1U7O1cscUIsTyxvQztXLFE7VyxRO2tCOzs7Ozs7Ozs7Szs7SztLOzs7Ozs7SyxNOzs7OztJO0s7SztPOzs7VTs7OztVO1M7OztLLFE7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztJLFk7STs7O0ssTztLLE87SSxXO0c7O0ksWTtJOzs7SztLLE87SyxPO0ksVztHOztJLFk7SSxrQyxPO0ksSztLO0k7SSxXO0c7O0ksVztJOzs7SyxPO0ssTztJLFc7Rzs7STs7O087O1EsTztPOzsyQjs7OztROzs7UztTOztTOztVLE87VSxRO1UsVTs7Ozs7Ozs7OztPO087O08sOEM7Tzs7O1U7OzthO2E7OzthO2E7cUI7O1M7O087Ozs7YztPOzs7TyxNO2tDOztPOztRLFM7Tzs7Rzs7STtJO0c7O0k7STtpQjtLLHNDOzs7UTs7O1MsUTtTO1E7OztrQjtrQjtpQjs7Ozs7Ozs7UztVLFE7VTs7VSxPO1UsVTs7O1M7Ozs7O1E7O1MsVTtnQjs7O1c7Ozs7OztROztTLFU7UztXOzs7YyxPOzs7d0I7d0IsVzt1Qjs7YTs7UztXOzs7YztjLE87YTs7O1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7O1E7O1M7UztTLFU7UztTLFU7OztTO1EsTzs7O1E7O1MsVTs7O1M7Uzs7O2M7OzthOzs7USxPOzs7O0c7O0k7STtZOzs2Qjs7Ozs7Rzs7STtLO0ssTztLLE87SyxPO0ssTztLLE87SyxPO0k7O2E7Ozs7Ozs7O0c7O0k7Ozs7Tzs7Ozs7Ozs7eUI7Ozs7O3lCO3lCOzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxRO2dCLE87OztLLE07OztJO0k7SSxPOzs7YztlOzs7Ozs7YTs7Rzs7STs7OztJO0c7OztJOzs7O0k7Ozs7STs7OztJOzs7O0k7Ozs7STs7O0k7OzBCOzs0Qjs7NEI7OzRCOzs0Qjs7NEI7b0M7O0c7O0ksVztJLE87OztjO2UsTztlLE07ZTtpQjttRDtjLE87Ozt3Qjs7Ozs7d0I7dUI7Ozs7Rzs7STs7SztPOzs7VTtVLE87Uzs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGlEOzs7O2E7TztRLG9CLGU7USxPO1E7VSx5QyxlO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOztJLE87Ozs7O2MsbUI7OztpQjs7a0I7aUI7OztpQixvQjtpQjs7OztrQjs7O21COzs7bUI7O29CLFE7b0IsTztvQixPO29CO29CO3NCOzs7Ozs7Ozs7Ozs7OztpQjtpQjs7O2lCOzs7a0I7a0I7a0I7O2tCO29COzs7Ozs7Ozs7Ozs7OzBCOzs7MkIsVTs7Ozs7OzswQjs7OzJCOzs7OzswQjs7OzJCOzs7Ozs7Ozs7Ozs7MEI7OzsyQixVOzs7MkI7Ozs7dUI7d0I7Ozs7Ozt3QixVO3VCOzs7Ozs7a0IsVTtrQjtrQixPO2lCO29DOzs7Ozs7aUI7O2tCLFE7a0I7b0I7OztpQjs7O2lCLE07NEM7OztpQjs7a0I7a0IsTztpQjs7YTtHOztJO0s7Ozs7SyxPO0k7Rzs7SSxpQzs7SyxTO0ssZ0MsZTs7O1E7O1MsVTs7O1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7O1E7O3VCLDBDOztRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7UTs7O1c7Ozs7Ozs7O1ksTTs7VztZLE07Vzs7WSxPO1ksUTtZO1c7VTs7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTs7d0IsOEM7O1E7Uzs7OztTOzsrQixrQzs7O1E7Ozs7O1E7O1MsVTs7O1M7UTtRO1M7Ozs7UztROztROztTLFE7UztXOzs7OzZCLG1DOztTLE87UyxPO1M7OztTOztVLFc7OztTOzs7OztRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7Uzs7OztROzs7Ozs7Ozs7OztROztTOzs7UztXOzs7YyxtQzswQjs7YzthOztROzs7VztXO1U7O1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O1E7Ozs7b0I7O3NDLG1CLFU7Ozs7Ozs7O1E7O1M7Ozs7UTtRO1M7Ozs7UztROztROztTOzs7Uzs7UyxNO1E7O1M7UyxRO1M7Ozs7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztTO1c7Ozs7NkIsaUM7UztTLFU7UztTLFc7Ozs7O1E7O3lCOztRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7UTs7O1c7VztXOztVOztRO1M7Ozs7Uzs7O2M7Ozs7O2E7OztTLE87Uzs7OztlO2lELGdCOzs7O1E7O1E7O1MsVzs7O1E7OztXO1c7O1U7O1E7Uzs7OztTOzs7Yzs7O2E7OztTLE87Uzs7OztlO2lELGU7Ozs7UTs7O1E7USxpQzt1QjtRO1M7Ozs7UTs7Ozs7O1EsTTttQzs7OztJLDJCO0ksTzs7Ozs7YztlLG1COzs7O2U7ZTtjO2M7YTs7O0ksTzs7Ozs7Yzs7Ozs7ZSxPO2U7aUI7O2tDOztlLE87ZSxPO2U7O2tCO2tELFk7Ozs7ZSxRO2UsUTs7O2U7O2M7YTtHOzs7SyxPOzs7ZTtlLE87Ozs7eUI7eUIsTzs7d0I7O2M7OztJOztLLE87OztlOzs7O2dCO2tCOzs7O29DLHFDO2dCO2U7Yzs7O0k7STtLLE87OztlO2UsTzs7d0MsbUIsbUI7O2M7O0k7STtLLFE7SztPOzs7VSxvQixPO1UsTztTOztLO087OztVLE87Ozs7b0IsVztvQixPO21CO1M7OztLO087OztVO1csTztXLFM7Ozs7Vzs7Yzs2Qyw2Qjs7OztXO2E7OzRCLGUsa0M7O1U7Uzs7O0s7SztPO3NDLDhCO0s7STtJLEksK0I7STtJOztPOzs7VTs7Ozs7Vzs7O1c7O2M7aUQ7Ozs7Ozs7VzthO2dEO1U7Uzs7O0k7RztHO0k7OztJO0k7Ozs7MEI7Ozs7UztTOzs7Ozs7SyxNOztHOztJLEksc0M7Ozs2Qjs7O0c7Ozs7OztROztRLHFCLFE7USxPOzs7a0I7O3FCOztzQixPO3FCLE87OEI7aUUsdUI7Ozt3Qzs2Qjs7Ozs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7OztnQjs7OztJO0ksTzthOzs7Z0I7OztpQixTO2lCO2dCLE07O2U7O0c7O0ksTzs7O2M7O2lCOztrQixPO2lCLE87MEI7Ozs2Qjs4QixTOzhCOzZCLE07OzRCOzs7O2lCO3lCOzs7O0c7RztJO00sMEMsZTs7O0k7O0ssTzs7STtHOztJLGtCO0ksWTs7OztPLE07OztPO2U7OztrQjs7OztzQjs7Ozt1QixXO3NCLEc7dUI7d0IsVzt3QixLO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3dCOzBCO3VCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7O3NCOzt5Qjt5Qjt3Qzs7Ozs7OzRCLFE7NkI7Ozs7Ozt3Qjs7OztzQjtzQjs7Ozs7O3FCOztrQjtpQjs7ZSxNOztHOztJOzs7Ozs7Uzs7O1ksZ0MsTztZLFc7Vzs7SSxPO0c7OztLOztROzs7Vzt3QjtVOztLO0k7USxJLHVCOzs7OztxRDs7Ozs7OztLLEksVTs7Ozs7O2lDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtnQjs7ZTtrQjs7STtHOzs7SSxPOzs7OztjOzthOzs7Ozs7Tzs7USxPO1E7USxnQjtRLFE7Ozs7dUI7Ozs7Ozs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7O087OztROzs7UTtROzs7OztPOzs7O087O1E7VTs7NEIsTyxvQzs7USxPO1EsVTs7OztXLE07Ozs7VzthOzs7Z0I7NkI7ZTs7WSxNOzs7Ozs7cUI7O29CO1c7WTtZLG9CO1c7WSxNO1c7Ozs7TyxNOzs7O08sTTtrQzs7OztPOzs7O1c7OztZOzs7WTtZOzs7Ozs7b0I7WTs7Ozs7Vzs7WTtZOzs7Ozs7O087UTs7O2dDO1c7O1E7O2E7O1E7OztPLE87OztpQjs7O2tCLGM7Ozs7O3FCLGdDOzs7O3VCLE07O3NCO3dCOzt5QixPO3dCOzs7OzsyQjs7cUI7c0IsTTs7cUIsVztxQjs7OztvQjs7Ozs7O3dCO3lCOzJCO3lCO3lCOzs7Ozt3QixNOzs7dUI7cUI7OzsrQjs7Ozs7O29CO3FCO3NCO3dCOzs7Ozs7Ozs7b0I7cUIsd0IsUTtxQjs7OytCOzs7O2lDOzs7O3NCOzt1QixRO3NCOztzQjt1Qjt3QixPOzs7Ozs7Ozt1Qjt1QixNOzs7Ozs7OztzQjt1Qjs7MEI7Ozs7Ozs7dUI7Ozs7dUI7Ozs7b0I7O29COzs7Ozs7OzRCOzs7b0IsTTs7O29CO3FCO3VCO3FCO3FCOzs7OztvQixNOzs7Ozs7Ozs7O0ksTzs7Ozs7Yzs7ZTs7Z0I7Ozs7Z0I7Z0I7ZTs7YztlOzs7ZSxRO2U7ZTtpQjs7Ozs7Ozs7Ozs7Yzs7O2lCOzs7YztlO2lCOzs7b0I7Ozt1Qjs7O3VCOzs7dUI7Ozs7Ozs7dUI7Ozt1Qjs7O3VCOzs7dUI7O21COztlO2M7YTtHOztJLGlDOzs7Szs7UTs7O1M7Vzs7Ozs2QixPLHVDO1E7O1E7OztTLFE7OztTLG9CO1MsTztTO1c7OztjOzs7OztjO2MsUztjOztzQjthOzs7OztROztnQjs7OztROztTLFU7OztRO1E7Z0I7UTs7Ozs7O1E7OztTLFU7Ozs7UTs7dUIsMEM7O1E7Uzs7O2dDLG9DOzs7UztXOzs7YztjLE87YTs7Ozs7Ozs7WTs7O2U7OztnQixjO2dCLFM7ZSxPO2M7Ozs7O1E7O1E7O1MsVTs7OztTO1M7Vzs7O2M7YyxPO2E7Ozs7UTs7O29DLGtDOzs7Ozs7UTs7UyxVOzs7O1M7UTtRO2dCO1E7Ozs7OztROzs7Ozs7UyxjO1MsVTtTO1c7Ozs7O2M7Ozs7Ozs7Ozs7OztjO2E7Ozs7UyxPO1MsUztTOzs7Ozs7UyxhO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7UztXOzs7Yzs7ZSxNOzs7Ozs7OztjO2E7O1M7OzthOzs7Z0I7Ozs7O2dCO2U7Ozs7UTs7O1c7VyxPOzs7cUI7OztVOztRO1M7Vzs7O2M7Ozs7Ozs7OztlO2lCOzs7OztvQjs7Ozs2Qjs7O21COzs7ZTtjO2E7OztTO1c7OztjOzs7Ozs7O2MsYTtjLG9CO2MsTzthOzs7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7O1M7O1k7OztlOzs7O2dCO2tCOzs7cUIsVztxQixlO29COztlO2M7OztTO1U7WTs7O2U7ZSxVO2U7Ozs7Z0I7Ozs7O2UsTzs7Yzs7O1U7WTs7O2U7ZSxVOztlLE87Yzs7Ozs7Ozs7O1E7OztZOzs7Ozs7Ozs7O2EsYTthOztZO2E7O2dCOzs7Ozs7Ozs7Ozs7OzthLE07OztZOzs7YTs7Ozs7OzthO1k7O1MsWTtTO1c7OztjO2MsTzs7b0MsK0I7O2E7O1M7Vzs7O2M7YyxPO2E7OztTOzs7YztjO2E7OztROztpQjs7bUMsbUIsVTs7Ozs7O1E7O1M7Ozs7UTtROztTLE07UTs7UTs7Uzs7Ozs7UTs7UTs7UyxXOzs7UztXOzs7YztjO2M7YztjOzs7O2UsUTs7O2UsUTtlLEk7OztjLE87YTs7O1M7OztjOzs7OzthOzs7UyxPO1E7O2lCOztpQyw2Qjs7Ozs7O1E7O1MsVzs7O1M7Vzs7O2M7YztjO2M7Ozs7ZSxRO2UsSTs7O2MsTzthOzs7Uzs7O2M7OzthOzs7UyxPO1E7O2lCOztnQyxnQzs7Ozs7O1E7O1M7UztXOzs7OztjO2E7OztTLFU7UztTO1c7Ozs7O1E7O3lCOztRO1E7OztRO3lDO3VCO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7OztJO0k7Rzs7RztJOzs7RztJOztHO0k7Ozs7OztHO0k7OztJLE87Rzs7STs7OEIsTzs7O087Ozs4Qjs7O21COzs7ZTs7Rzs7STtLO0s7O0s7O00sVTs7Ozs7O0ksVTtJO0k7Rzs7STtLOzsyQjs7O1E7O1EsTTtNO0c7O0k7SztPOzs7VSxPOzs7O29COztxQixRO29CO21CO1M7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTtRLFU7OztRO1U7OzthOztnQjs7aUI7O2lCLE87aUIsVTtnQjs7Z0I7O2lCOztpQixPO2lCO21CO2dCO3dCOztZOzs7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNLEk7O0s7TTtROzs7VztXLEk7OzttQzs7O1csSSxXOzs7bUM7OzsyQjtXLFE7VztVOzs7Ozs7Ozs7O0k7OztPO087UTtTLE87UyxPO1E7Ozs7O1MsTTs7OztNOztJO0ssTztLLE87O0s7STtLO2lCOzs7Ozs7SyxNOzs7STs7O0k7Rzs7STtHOztJO0c7Ozs7Ozs7SztNOzs7OztLO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxRO0ssTztLLFc7SSxPO0c7O0ksaUI7STtLLFc7SztLO0k7STtJLE87Ozs7O2U7Z0IsTztnQixhO2U7Yzs7YztjOztlO2M7Ozs7Ozs7ZSxPO2UsSztlLE87ZSxVO2U7O2U7ZSxjO2U7Ozs7O2tCO21CLE87bUIsTztrQixPOzs7Ozs7aUI7ZTtlOztjLGtCO2MsNkI7ZTtnQixPO2dCLE87ZTtlO2dCO2tCOzs7Ozs7Ozs7OztlO2U7ZTtlLGM7O2dCO2lCLFM7aUIsTztpQixNO2lCO2dCOzs7ZTs7Ozs7O3FDOztlO2dCO2lCLE87Ozs7Ozs7Z0I7Z0IsTTs7O3lCOzs7OztjO2UsUztlO2lCOzs7Ozs7Ozs7OztjO2M7ZSxVO2U7YztjO2E7Rzs7SSxXO0ksTztHO3FDLHVDOztJO0c7O0k7O087OztVO1csVztXLE87VyxLO1csTztXLGtCOztXLE07O1UsVztTOztJO0k7SztPOzs7VTs7O1csUTtXLFE7VTtTOztLO087OztVO1UsTztTOzs7SztPOzs7VTs7O1csTztXLE87VyxPO1c7VTtTOztLLFM7SyxPO0ssVztLO087OztVOztXLEs7VyxPO1UsTztTOzs7SyxRLFc7SyxNO0ksRztZLHFCO007TSxNO3lCOztLO00sUzs7UTs7Ozs7Ozs7OztNLE87Szs7Szs7STtLO08sMkM7SyxPO0s7Tzs7O1U7VSxXO1M7OztLO00sTTtNO00sTztLOztJO0c7O0k7OztRLE87O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87Ozs7TyxvQixPO08sTzs7Tzs7USxPO08sTzs7TyxzQixPO08sTzs7TyxzQixPO08sTzs7TyxvQixPO08sTzs7Ozs7Ozs7OztPOzs7USxTO1EsTztPLE87Ozs7Ozs7Ozs7O087Ozs7USxTO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Tzs7OztRLE87TyxPOzs7TztPO087O1EsTztRO1U7Ozs7YyxPO2E7O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7TztPO087USxPO1E7VTtZOzs7O2dCLE87ZTs7O1EsTztROztXOzs7TyxPOzs7Ozs7Ozs7OztPLE87Ozs7TyxPOzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7TyxrQixPO08sTzs7TyxvQixPO08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7UztXO1MsVztTLHVCOztTLE87UztXOzs7UyxPOztTLE87UztXOzs7Ozs7Ozs7USxPOzs7Ozs7Ozs7OztPOzs7Ozs7USxxQjtRLFk7O1EsTzs7USxPO1E7VTs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087O1E7USxPO08sTzs7Ozs7Ozs7OztPOzs7OztXLHlCLE87VyxPO1U7UTtRLE87TyxPOzs7Ozs7Ozs7Ozs7OztJLE87Ozs7NkIsMEI7RztHOzs7TTs7Tzs7cUM7O007Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksc0I7Rzs7Ozs7O0ssWTs7Ozs7Ozs7Ozs7TTtPLE07YTs7Ozs7OztJLGE7SSxxQixNO0ksTzs7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzs7Ozs7Ozs7Ozs7OzsyQixxQjs7SSxVO0k7SztPOzs7VTtTOztLLE07SyxNO0ksTztHOztJLFk7O0ksRztLLE07STtLLGU7Szs7Ozs7O0k7Ozs7Ozs7Ozs7O0c7O0ksWTtJOztLO0s7STtHOytCLE8sbUM7O0k7SyxRO0ssUTs7O0k7OztlO0s7OztNLEk7SyxHLHFEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEOzs7O0c7O0ksTzs7O2MsTzthOzs7Rzs7STtJOzs7O1M7O1MsVTtTOzs7UTtLLFU7O2tCOztLO0s7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7RztJO0k7OzZCLDBDOztJO087SztJLE07Rzs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7OztJO0s7SztLLFc7O0s7Szs7d0IsTTs7Ozs7VSxNO1M7O1M7Ozs7O1U7Uzs7Ozs7OztXLEc7O1U7Ozs7O1c7VyxJO1U7Ozs7O3lCOztTOzs7O1U7VSxROzs7OztTOzs7OztVO1UsTTtTOzs7O3dCOztzQzs7Uzs7OztVO1U7WTs7O2U7ZTtjOzs7VTtZOzs7ZTtlO2M7O1U7Uzs7Uzs7OztVO1U7WTs7O2U7ZTtjOztTOzt3Qzs7UywyQztTOztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOzt5Qzs7Uzs7Ozs7VTtVO1M7OztTOzs7O1MsSSxXLGtDOzs7aUM7OztpQixNOzs7STs7SyxPOzhDO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O00sc0I7Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7TztPLE87OztpQjtpQixPO2dCOzs7Ozs7Ozs7O1U7VSxPOzs7OztPLE87OztPO087OztVO1UsTztTOztPOzs7VTtVLE87Uzs7Ozs7TztPOzt5QixvQixPLHNCOztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7UztXOzZDO1MsTztTO1EsTzs7Ozs7O1E7OztTO1c7OzZCLG9CLGdCOztTO1M7Vzs7NkIsbUIsVTs7UyxPO1EsTzs7O1E7O1E7OztTO1csMkM7UztXLDJDO1M7OztTO3NCO1EsNkI7USxPOztROzs7O1M7VywyQztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7UztXOzZDO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7O0ksTzs7O2M7YyxPO2E7OztHO0c7STs7Ozs7O29DLHdDOztJO0k7Ozs7Ozt5RDs7Ozs7Szs7Rzs7STs7Ozs7Ozs7Tzs7Ozs7UTs7Ozs7Tzs7SSxPOzs7STs7SyxPOzs7STs7O0ksSSxXOzs7O0s7TSxPO00sTztLLE87O0k7Rzs7STtHOztJO0c7a0Q7Rzs7STtHOztJO0ssTztLLE07SztJLEksVTs7OztLO00sTztNLE87SyxPOzs7STtHOztJOzttQixPO0ksb0IsTTtJOzs7O0k7SyxxQztLLGlCO0k7STtLLE87OztlOzs7OztnQjs7O2U7Yzs7O0k7O0s7OztRLEksVzs7OztTLEksVSxpQzs7O2dDOzs7O1E7OztRLEksVzs7OztTLEksVSxtQzs7O2dDOzs7O1E7O1E7O1E7Ozs7OztTO1E7O3lCOztROzs7Ozs7Uzs7O1M7UTs7UTs7Ozs7Uzs7O1M7UTs7UTs7O1M7Vzs7O2M7OztlOzs7YzthOzs7OztTO1E7Z0I7OzttQjttQjs7Ozs7O1E7O1E7Ozs7UztTO1c7OzRCOzs7UztXOzs0Qjs7UztROztROzs7OztTO1M7Vzs7OztjOzs7UTs7O1E7O1E7Ozs7OztTOzs7UztROztROzs7O1M7OztTO1E7O1E7Ozs7UztTO1E7O1Esa0M7UTs7USxrQztROztROzs7Ozs7Uzs7O1M7UztROzs7USxHO1MsTTtRLEksSSxPOzs7Ozs7UTs7UTs7Ozs7O1M7UztROztROzs7UztTO3dCLE8sc0M7UztXOzs7Yzs7OzswQixJOzs7a0Q7OzswQixPOzs7O2MsTzs7Ozt5QixJOzs7aUQ7Ozt5QixPOzthOzs7UztXOzt1QyxPLHdCOzs7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssTzs2QztJOztLO007Ozs7O007SztJOzs7Szs7O0ssWTs7Szs7STswQixrQzsyQix3Qzs7O0k7Rzs7O0ssWTtLLE87STtJOztPLDBDLG1CO0k7RztHO0k7O21DLFc7Ozs7OztJOzs7Ozs7O0ssUztJOzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7OzBCOztPOzs7Ozs7USxNO08sc0I7O087Ozs7O1EsTTtPLHFCOztPLGtDLE07TztlOzs7a0I7a0I7aUI7Ozs7O08sYzs7Tzs7OztRLE07UTtVOzs7YTthLGM7WTs7O1E7VTs7O2E7YSxjO1k7O1E7TyxXOztPOzs7OztRLE07UTtVOzs7YTthLGM7WTs7TyxZOzs7TyxlOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO08sWTs7Tzs7OztRLE07USxNO08sWTs7TyxrQyxNO08sWTs7TyxrQyxNO08sWTs7Tzs7Ozs7O1EsTTtRLE07TyxpQjs7dUMsaUI7O087Ozs7OztRLE07USxNO08saUI7O29DLFk7O3VDLGlCO2U7Ozs7b0IsTyxtQztJO0c7OztJOztLLEcscUM7O0k7OztJO0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJLDRDO2dEO0ksTztHO3NDLHVCOztJO3NCOzs7Ozs7OzswQjs7O21COzttQyxnQjs7Ozs7Ozs7OzBCOzs7Ozs7O0k7Rzt5Qiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7VSxPOzs7O3FCLE87Tzs7O1E7O1csTzs7O3FCLE87O29COztVO08sTzs7Ozs7Ozs7Ozs7cUIsTztPOzs7UTs7VyxPOzs7cUIsTztvQjs7VTtPLE87OztPLE87Ozs7STs7Tzs7Tzs7TztlOztHOztJOztPOztPO2U7O0c7O0k7OztROztRLE87Z0IsTzs7SSxtQjtJLE87OztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1E7Z0I7OztJO0c7O0k7O2tCOztrQjswQjs7SSxPO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtJLE87Rzs7STs7ZTtlOzs7O2lCO2lCOztxQixPOzs7TyxPOztHOztJOzs7O007UTs7eUI7O087OztPLGM7TztPOzs7VTtVLE87Uzs7TyxPOztNO00sTzs7O0k7Rzs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOzs7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTztnQixPOzs7Ozs7NkI7Ozs7Ozs7Ozs7Ozs2Qjs7NkI7OzZCOzs2Qjs7OEI7OzhCOzs7OztXOztXOztXOztXOztXO21COzs7O1E7OztROzs7USxPOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7O1E7a0I7a0I7Ozs7O08sTzs7O08sTzs7Ozs7USxPOzs7O08sTzs7O087Ozs7UTtPLE87O087Ozs7UTtPOzs7Ozs7O08sTzs7Tzs7O1E7Tzs7Ozs7OztPLE87OztPLE87OztPOzs7Ozs7O08sTzs7O08sTzs7O08sTzs7TyxrQixPO08sTzs7O2lCO2lCOzs7aUI7aUI7OzJCOztPLG1CO08sTzs7O08sTzs7O08sTzs7NkI7Ozs7UTtRLE87O087TyxPOzs7O1E7USxPOztPO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOzs0Qjs7NEI7O087OztRO1E7TyxPOzs0Qjs7NEI7OzRCOzs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7Ozs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7UTs7O1E7Ozs7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0ksUzthOzs7OztROztROztROzsyQjs7O087O087Ozs7Tzs7Tzs7YTtzQjtHOztJOzs7Z0I7Z0I7Ozs7STs7O1EsTzs7USxPOztRLE87Z0I7OztJLE87OztJOztPLE87O08sTztlOzs7Ozs7Ozt5QixPOzs7USxPOzswQjs7UTs7Uzs7WSxPOzs7c0IsTztxQjs7VztRLE87Ozs7Ozs7Ozs7Ozs7OzsyQjs7Ozs7O1E7OztTOztZO1ksTzs7O3NCOzt1Qjs7O3NCLE87Ozs7Ozs7O3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLE87OztzQixPO3FCOztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZO1k7OztlOztnQjs7O2UsTztjOztZOzs7ZTs7Z0I7OztlLE87Yzs7O3dCOzs7YTs7O1ksTztXOztRLE87Ozs7Ozs7OztZO1k7OztlOztnQjs7O2UsVztlLE87Yzs7NEI7OzthOzs7WSxPO1c7USxPOzs7UTs7O1M7O1ksTzs7O3NCLE87cUI7O1c7USxPOzs7Ozs7OztRLE87Ozs7Ozs7O2tCLE87Ozs0Qjs0QixPOzsyQjs7aUI7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7Ozs7O1EsTzs7O1E7Ozs7O1M7O1ksTzs7O3NCLE87cUI7O1c7UztRLE87Ozs7Ozs7Ozs7OztRLGtDOzs7Ozs7Ozs7OztROzs7UyxPO1E7Ozs7Ozs7O1MsTztRLE87Ozs7Ozs7Ozs7Ozs7OztRLE87OztLO007O1M7OztZOztlOztlO3VCOzs7WTs7WSxNOztRO007Szs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsTzs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7O0ksTzs7Ozs7Ozs7Ozs7SztNLE87OztnQjtnQixPOzs7Ozs7OztlOztLO0s7Szs7O1E7Ozs7UztRO1E7Tzs7SyxPO0k7SSxPOzs7Ozs7Ozs7Ozs7O3FEOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007O1M7OzJCLG9CLFc7O00sTztLOztNO087Uzs7O1k7WTtXOztPLE87TTs7O1M7UztTOzRCOztTO1M7UTs7TTtLO21CO0s7OztrQztrQztJO0k7Ozs7O3NCOzs7aUMsWTs7Ozs7O1M7UztRO1E7O1M7OztROzs7Ozs7Ozs7Uzs7O1M7OztROztTOztVO1k7UyxjO1E7O1M7Ozs7VTtZOztVLEs7OztTOzs7OztVOztXOzs7O1c7Ozs7VSxHO1c7WTtjOztZO1k7Ozs7YTthO2E7Ozs7OztZO2E7O2lCOzs7Ozs7bUI7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1c7Vyx5Qjs7OzthOztjO2E7YTs7Ozs7Ozs7VztZLE07WTtZOzs7O2E7YTthOzs7OztXO1cseUI7Ozs7YTs7YzthO2E7Ozs7Ozs7O3NCOztTOzs7aUI7OztRO1EsSSxJLHNDOztTLEksZTs7Ozs7OztZO1k7Ozs7Ozs7VyxHLHVCOzs7OztVLE87OztTOztVLFU7VTtXOzs7OztXO1c7O1U7VTtTO1M7O1U7Ozs7VTtVO1MsSSxXLHVDOzs7OztVO1csTTtVOztXO1c7Ozs7OztZOzthLEksdUIsTzthOzs7Ozs7Ozs7VTs7O1c7O1k7WTtZO1k7Ozs7YTtjOzs7YztjOzs7Ozs7O2E7YTthO2M7O2M7YTs7OzthOzs7Ozs7O1k7YTthO2E7YTthOzs7Ozs7OztnQjtpQjs7Ozs7Ozs7Ozs7O2lCOztpQjtnQjtnQjtnQjtpQjs7aUI7Z0I7Ozs7O2dCOzs7OztjOzs7Ozs7Ozs7Ozs7OztZO2E7YTthO2E7YTs7OztjO2U7Ozs7OztlOzs7Ozs7O2dCO2dCO2U7ZTtlO2dCOztnQjtlOzs7Ozs7Yzs7Ozs7Ozs7OztXLEksaUM7Vzs7Ozs7OztXOztZOzs7Ozs7OztZLEc7YTtjOzs7Ozs7Ozs7Ozs7Yzs7YzthO2E7YTtjOztjOzs7Ozs7O1k7YTs7O1c7WTs7Ozs7O1U7VTs7UTs7Uzs7O1U7OztVO1U7Ozs7Ozs7UztTO1MseUIsd0I7UztROztTO1Usb0I7VSxPO1MsTztROztTLFc7UyxPO1E7O1MsVztTLE87UTs7UyxrQztTO1UsTTs7VTtVLE87OztTO1U7VSxPOztTO1U7OztXOzs7Ozs7OztXO1k7YTthOzs7WTs7VztZO1k7OztXOztVOztvQyx1QztvQyxzQzs7OztZLEksb0I7WSxxQjs7VyxVO1csTzs7OztxQjtzQjtzQjtzQjtxQixxQjtvQjs7O3FDLHNDO3FDLHVDOzs7O1csSSxzQjtXLHNCOztVLFU7VSxPOzs7O29CO3FCO3FCO3FCO29COzZCO21COztTOztVOzs7Ozs7VTtVOzs7Ozs7O2E7YztjOztjLE07YSxPOzs7VztZO1k7O1ksTTtXLE87OztTO1U7VztXOzs7Ozs7O1M7VTtVOzs7Ozs7OztTOzs7VTtVLE07c0I7O29DO1M7O1UsZTtVLEk7UztVO1M7UyxJOzs7O1c7Ozs7Ozs7Ozs7Ozs7OzRCOzs7Ozs7ZTtnQjs7Ozs7O2dCOzs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7O2E7YztlOzs7OztjO2M7Yzs7YTs7Ozs7Vzs7Ozs7Uzs7VTtVO1UsSTtVLE07VTtVO1U7VTs7O1M7VTs7VztZOzs7O1c7c0I7Ozs7OztZOztZOzs7Ozs7O2dCO2U7OztXOzs7Vzs7Ozs7WSxNO1ksTTtZOzs7O2E7Yzs7OzthO2M7ZSxNOzs7Ozs7O2M7Yzs7Ozs7OztlO2U7Ozs7O2E7Ozs7O1c7WTtZLE87O1c7OztjO2M7YzthOzs7Ozs7ZTtnQixPO2U7c0I7ZSxPOzs7O3lCLE87d0I7Yzs7Vzs7VztXOzs7VSxJLG1COzs7O1M7O1k7OztlLE07YztTOzs7WTtZO1k7Vzs7UztTOzs7UztVLDJCLFM7VTtZOzs7ZTtnQjs7aUIsUTs7O2lCOzsrQixPLGMscUI7Z0IsTzs7O2U7Yzs7UztROztTO1UsTTtTO1UsWTtVOzs7UyxPO1E7O1M7VSxNO1M7VSxZO1U7OztVOztvQztTOzs7O2E7OzZCLHVCLFcsRTs7UyxPO1E7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtjO2M7Ozs7Ozs7Ozs7O0ksVyxPO0k7O0s7Tzs7O1U7VSxXO1M7O0k7OztPO087TztNOztJLE87Rzs7STs7O2dCLE87Ozs7Ozs7O0s7aUI7Ozs7Ozs7STtHOztJLFE7SSxPO0c7O0k7Rzs7O0ksVzs7O0ksTzs2QztHOzs7STs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7Ozs7UTs7O1M7UTs7UTs7OztTO1M7USxPOzs7O2dCOztJO0c7RztJOztvQixPLGlDOztJLE87MkMsNEI7Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssTztLLFM7SyxROzs7d0IsTyxrQztJLG1CLE0sd0M7c0IsMEI7SSxJOztvQjtxQztpQjs7Ozs7Ozs7O1MsYTs7UTs7Ozs7OzRCOztROzs7Ozs7OztROzs7OztTLHNCLE87UyxhOztROzs7OztTOzs7VTtVOzs7UTs7Ozs7Ozs7UTs7SSxPO0c7O0ksWTs7SSxPO0c7OztJLE87Ozs7Ozs7Ozs7SSxXO0k7Rzs7O0k7SyxNOztJOzs7O0k7SyxNOztJOzs7O0ksVyxNOztJOzs7O0ksVyxNOztJLGU7Ozs7Ozs7O3FCLGtCLGdDOzRCLHFCOztJLE87O0c7O0k7TztLLE87SSxXO0ksTztHOzBCLE8seUM7O0ksTzs7O2M7OztlOzs7YyxtQjs7O0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7OztNO00sSTs7Ozs7OztNLGlCO007O0k7STtHOztJLE87OztjO2M7ZSxPOztjO2U7eUM7ZTs7Ozt3Qzs7O2E7O0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJLE87OztjOztlOztjLE87YTs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7SztLO29COzs0QjtNOzs7Tzs7VTtXLE07O1U7UztPLFE7OztVO1U7eUI7Vzs7Ozs7WSxNO1k7Ozs7OztjOztlO2UsTzs7Ozs7Ozs7O2E7YztjOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7O1c7VyxJLGtCOzs7Ozs7O1csVztjO1k7VyxNOztTO29DLHdDOztNOzs7OztJO0k7Rzs7STthO2tDOztHOztJLFk7O0k7Rzs7SSxPOzs7OztjO3dCO3dCOzs7OzBCOzBCLE87O3lCOzs7YTs7Rzs7STtjO2M7Ozs7Z0I7Z0IsTztlOzs7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOztJLE87OztjO2MsYzthOztHO0c7O0k7O3lCLGtCOztJO0k7Ozs7Ozs2Qzs7Szs7Rzs7STtnQyw0QixXO0ksVTtJOzs7YSxtQjs7O1k7Rzs7SSxZOztzQztJOzs7SyxXO21COzs7SyxPLFc7O0ksTztHOzs7SSxPOzs7Yzs7Ozs7ZSxRO2UsVTs7Ozs7Ozt3Qjs7Ozs7Yzs7O2U7Z0IsVzs7OzttQiw0QjtjO2E7Ozs7SSxvQjs7Ozs7Ozs7OztNOzs7VTs7OztTOzs7VTs7O1M7TztxQzs7OztROzs7O1M7MEI7Ozs7O21CO1E7O1M7UTs7Ozs7UTtTLFEsbUM7Uzs7UztROzs7Ozs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHOzs7Ozs7Ozs7Ozs7Ozs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7STs7Tzs7O1U7VSxXO1M7O0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7O2E7Ozs7aUI7OztvQjtvQjttQjs7Ozs7YTtlOzs7a0Isb0IsTztrQixPO2lCOzs7YSxPO2E7ZTtpQjs7O29CO29CLE87bUI7O2E7ZTtpQjs7O29CO29CLGU7bUI7O2EsUzthLFc7YTtlOztnQzs7OztnQjtnQjtpQjs7O3FCLGU7b0I7a0I7Ozs7O21COzs7O21COzs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCO3dCOzJDLE8sa0M7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Z0Q7Ozs7Ozs7Ozs7Ozs7OzsrQjs7OztrQzs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7Ozs7Ozs7Ozs7Ozs4Qjs7K0M7Ozs7dUI7d0I7d0IsTzt3Qjs7OzJCOzBELGM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7OztpQjs7OztlO2E7YTtlO2lCOzs7b0I7b0I7bUI7O2E7O2E7OztZO29COzs7VztZOzs7Vzs7Ozs7Ozs7UTs7O1EscUI7USxXO087Ozs7O007Tzs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WTs7Ozs7Vzs7Ozs7Ozs7Ozs7OztROztXOzs7Yzs7Ozs7ZSxNO2U7O2U7ZTs7YzthOztROzs7O1k7OztlO2UscUI7Yzs7Ozs7UTs7OztjOzs7Ozs7Ozs7Ozs7O087Ozs7OztJO0c7OztLOzs7Ozs7O087USxRO1EsSztPOzs7OztPOzs7a0M7UTs7Ozs7OztNO087Ozs7Ozs7Ozs7Ozs7O007O1EsTTtPLFU7Tzs7TTs7OztJOztLOzs7Ozs7Ozs7SyxTO0s7TTs7Ozs7O00sTztLOzs7OztJO0k7Rzs7SSxXLE07Ozs7OzswQjtNO087TztTOzs7WTtZO2EsTTtZLEk7OztXOztPLDJDLFc7Tzs7Ozs7TSxZO007OztVOztnQzs7YTtzQzs7UztPO1M7OztZOzs7YTtZLHNCO1c7OztPO087Uzs7O1k7WTtXOzs7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJOztPOzt5QixrQixPLDJCOzs7Ozs7OztLLGE7Ozs7STtHOzs7Szs7Ozs7TTtNLE07TSxXO00sTzs7Szs7ZTs7Ozs7OztJLE87Rzs7O0s7Ozs7O00sTTtNLGtCOztLOzs7O0s7OztNO29COztnQjtJLFc7SSxpQjtHO2lDLFc7MEMsVzs7STs7O2MsYTthOzs7a0Y7YyxPOzs7OztHOztJO3lFO0ksTTtHOztJOzs7SyxPOztJLE07Rzs7STs7Rzs7STtrQzs7SyxNOztJO0c7RztJLGU7Ozs7Ozs7Ozs7STs7YTtjLFk7YyxNO2MsUTs7O2EsSSxVOzs7O2UsTzs7OzthLE87O0c7RztJOztJOzs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOztHOztJOztNO08sVTtPO087O087TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNLFE7TTtNLE07OztTO1E7TTs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJLDhCOzs7Ozs7OztJO0c7O0ksVztJOzs7TztPO087TTs7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7Ozs7Ozs7Ozs7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7O2MsTzs7O3dCO3dCOzs7Ozs7O3VCOzs7YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7STtLO087OztVO1UsZ0I7Uzs7SyxPO0s7OztLLFM7STs7OztJOztPOzs7VTtVO1M7O0k7Rzs7STtJOzs7OztPLFM7UTtPOzs7OztLOztHOztJOztPOzs7VTtVLE87Uzs7STtHOztJLFk7O0k7Ozs7OztJLFksTzs7OztLOzs7Ozs7STs7O0k7SztLOzs7OztLLFE7TTtPOztXOzs7O087TztNOzs7Ozs0Qjs7Ozs7a0I7O0s7STtJLE87RzsrQix1Qjs7STtHOztJOzs7SztNLFc7OztJLFc7SSxPO0c7MEIsd0I7K0IsdUM7OEIsOEM7O0k7Rzs2QixXO3VDLCtCOztJO0ssVzs7Szs7OztNO087TztPO007TTs7Ozs7STtLLDRCLFc7O0s7Ozs7O087UTs7O087Ozs7c0IsYyxpQzs7TTs7Ozs7SSxJLFk7Ozs7TSxpQjs7TTs7Ozs7SSxPOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7YztjLE87O3dCO2E7O0c7O0k7STtLOztNLFE7TTsyQixRLDhCLFM7Ozs7Ozs7Ozs7O1U7Ozs7O1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QjtVOzs7OztXO1U7Vzs7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7OztNLE07Ozs7Ozs7OztROzs7Ozs7Ozs7Ozs7Ozs7OztLOztlLGlDO0s7TSxNO0s7TTtpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtLOzs7OztJLE87Rzs7SSxZLE87O21COzs7Ozs7OztJO0c7O0k7Z0I7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJOzs7Rzs7OztJOztLOztJOztLO007OztNO1E7TTs7UyxZO1M7Ozs7O1U7OztTOzs7Ozs7UyxNO1E7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sTTs7Ozs7Ozs7O007TyxNO087Uzs7O1k7OzthLE07WTtXOzs7Ozs7Szs7UTs7O1c7OztZLE07VztVOzs7Szs7STtLLFM7Ozs7OztLOztROzs7VztXO1U7Ozs7TSxNO0s7O00sbUMsbUI7TTs7UyxPOzs7Ozs7Ozs7UTtNLE87TSxPO00sWTtNO1E7TTtPO1M7O3lCLCtCOzs7OztNO087Ozs7Ozs7Ozs7TztRO1U7OzthO2EsTzs7O3VCO3VCLE87OzZDLE8sZ0M7O3NCOztZOzs7O087UTs7Ozs7YSwyQzs7Ozs7Ozs7O007TztTOzs7WTs7Ozs7YTthO2U7OztrQjtpQjs7O2E7O2EsVTs7YSxPOzt1Qjs7OztZO1k7WTtXOzs7OztPO1M7TTs7Ozs7Ozs7Ozs7OztNO087OztNOzs7OztTLGEsTzs7UyxPO1E7Ozs7Ozs7Ozs7O0k7SyxzQjtLOztTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7O1c7Ozs7Ozs7OztNOzs7Ozs7Ozs7TyxvQyxROzs2Qzs7O087UTtVOzs7YTthLGM7WTs7UTtVOzs7YTthLGM7WTs7USxPO1E7OztRLFM7Tzs7Ozs7O087UTtVOzs7YTthO1k7O1E7OztXOzs7YztjO2E7Ozs7Ozs7OztRO1MsSTs7O1ksa0I7d0I7O1ksSSxJLE87Ozs7Ozs7WSxPOztRO1E7USxJLGlCO1E7OztXOzs7O1U7OztTOztVO1k7OztlLG9COzJCOzs7YztVO1UsTzs7VSxPOzs7OztrQjs7Ozs7O0k7OztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTtnQixPOztJO0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztpQjtLOzs7Ozs7O007O0s7OztTLE87OzttQjs7O29COzs7bUIsSSxZOzs7NkM7OzttQjsrQjs7O1E7TSxPO00sTTtLLEksVTs7OztvQjtNOzs7Ozs7bUI7SyxZOzs7Ozs7OztNO007TywwQjtPO087Ozs7OztJO0s7SywwQjtLLE87SSxXO0c7O0k7SyxXO0s7Ozs7O08sbUI7Tzs7cUI7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7c0I7Ozs7O3FCO087UTs7OztPOzs7bUI7Ozs7O0k7aUIsTztJLEk7Z0IsTTs7STtHOzs7Ozs7NkIsTzs7UTs7O1Msc0M7UyxTOzs7Ozs7O1EsTzs7K0IsOEI7Ozs7USxPOzsrQiw4Qjs7O0s7Ozs7STs7OztRO2tCOzs7Ozs7Ozs7UztVOzs7O1c7VTs7Ozs7Ozs7Ozs7O1M7VTs7VztVOzs7Ozs7Tzs7OztRO1E7UTtPOzs7USxXOztPLE87O0ksTztHOztJO2dCLE87O0k7Rzs7O0k7STs7TSxPOzs7O0ssSSxZOzs7O007Ozs7Ozs7Ozs7OztrQjs7TTtNO087OztNOzs7O08sSSxVOzs7O1E7Ozs7OztPOzs7UTtROzs7Ozs7O0c7O0k7Ozs7O00sRztPO1E7Ozs7OzhCOzs7O007OztTLFc7UyxjO1E7TTs7OztJOzs7Ozs7Yzs7O0c7O0kscUI7OztLLE07STs7Ozs7Szs7Ozs7Ozs7Ozs7OztTLDBDOzs7OztrQjs7Ozs7Ozs7OztJOzs7SztLO087O3dCOztLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjs0Qzs7OEIsb0I7OEI7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7OztvQjs7OEIsb0I7Ozs7Ozt1Qzs7OEI7Ozs7Z0M7Ozs7OytCOytCOzhCO2lEOzs7Ozs7Ozs7OzhCOzZCOzs7Ozs7O29COzs7Ozs7O1U7O29COzs7OztvQjs7O3FCOzs7b0I7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozs7Ozs7O3VCO3dCOzBCOzs7NkI7OzhCLE07Ozs2Qjs0Qjs7Ozs7Ozt1Qjt3Qjt3QjswQjs7OzZCOzZCOzhCLE07Ozs2Qjs0Qjs7d0I7Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQjs7Ozs7VTs7O29CLFk7b0I7NEM7OzhCOzsrQjsrQixROzsrQjs7Ozs7OEI7OEI7Ozs7OytCLFc7K0IsTzs7OytCLE07Ozs4QixPOzs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7NEM7OzhCOzsrQjsrQjs7OztnQzs7aUM7OztvQztvQztxQztxQyxNO3FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQzttQztnQzs7OzhCLE07Ozs7OzsrQjsrQixPOzs7K0IsTTs7OEI7OytCOzhCLE87Ozs7Ozs7Ozs7Ozs7VTs7b0I7Ozs7OztxQixZO3FCOzs7Ozs7O3NCOztzQjs7Ozt1Qjt1Qjt1QixPO3NCLFMsNkI7c0IsVTtzQjt1Qjs7aUM7Ozs7OztzQjs7dUI7OzBCLG9COzBCOztzQjs7Z0M7Ozs7Ozs7cUIsTTs7O29COzs7b0I7OztxQjtvQixHO3FCLFc7cUI7Ozt3QixrQixROzs7Ozs7O3dCO3VCOzs7Ozs7cUI7b0I7b0I7cUI7cUI7dUI7cUI7OztxQjs7Ozs7Ozs7Ozs7Ozs7b0I7cUI7Ozs7Ozs7Ozs7Ozs7O3VCOzs7Ozt1Qjs7Ozs7O3dCLE07dUI7Ozs7Ozs7Ozs7dUI7Ozs7dUI7Ozs7Ozs7Ozs7cUI7c0I7Ozs7Ozs7O3NCOzs7Ozs7b0I7Ozs7O1UsVztVOztvQjs7OztvQjs7OEIsb0I7OytCOztnQzs7O21DOzs7Ozs7O2tDOytCOzs4QixNOzs7a0Q7Ozs7Ozs7b0I7OztxQjs7O3FCLFM7cUI7OztxQjt1Qjs7Ozs7O29COzs7Ozs7Rzs7O0k7SyxROzs7Szs7O0k7Rzs7STtrRDtJO0c7d0IsTyx5Qzs7STs7O0ssTzs7OEIsMEM7OztJO0c7O0ksTztHOztJLFk7STs7OztPOzs7VTs7O1csTztVO1csVztXOzs7OztVO1M7O0s7STs7O0k7SztHOzs7O0s7SyxhO0s7SztJOztLO007TTs7O0ssd0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJOzs7O00sTTs7OztJLHNCOzs7O0s7TSxPO00sTztNLFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7O0k7SztLO0s7TzttQyxtQjtJOzs7Ozs7OztjOzthO0c7O0k7O0c7O0k7O0c7O0k7O0c7O0k7Ozs7O1E7OztROztzQzs7Ozs7O1E7Ozs7OztZLE87OztzQjtzQjtxQjs7VztTO1c7OzRCOztTOztTO1E7O1E7Ozs7O1M7Vzs7NEI7O1E7O2dCOzs7bUI7bUI7a0I7Ozs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7aUM7Ozs7Ozs7OztLO007TSxTO00sWTtNO1E7OztXO1csZTtVOztNO1E7OzBCLG1CLFU7O007Ozs7WTs7Ozs7Ozs7Ozs7MkMsa0M7aUIsTzs7Ozs7Ozs7O2lCLE87Ozs7O1k7YSxVO2E7ZTs7OEIsZSwyQjs7WTs7O3FCOzs7VztXO1k7WSxjO1c7O1ksTzs7Vzs7WSxPOztXO2tCO1csdUIsVyxnQztXOzs7O2U7OztZOztXLE87Ozs7Ozs7SSxRO0k7Rzs7STtLLE87OztTOzs7O0s7Tzt1Qyx1Qjs7Ozs7Ozs7O2M7Ozs7NkI7O2E7Rzs7STtrQyxPO3VCLE07O0k7Rzs7STs7SztPOzs7VTtVO1M7OztJO1k7OztlOztnQixPOzs7OEI7Ozs7Z0I7aUIsTzsyQjs7Z0IsTTs7O2U7Yzs7OztHOztJOztPOzs7O1E7VTs7OzthOzs7Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJO0ssVztLO087O3lCLGtCLGM7O0s7SyxPO0s7SztLO08sbUMsaUI7Ozs7Ozs7Ozs7VTs7O1c7O2M7OytCOzs7O1c7OztXLE87VzthOzs7Z0IsbUIsTzs7Z0I7ZTs7VzthOzZDLHVCO1c7VzthOzs7Z0I7Z0I7ZTs7Vzs7O2dCO2lCOzs7O2tCOzs7O2lCOzsyQjs7Ozs7Ozs7Z0I7Ozs7Ozs7O1csTztVO2tCOztTO0ksTztHOzs7STs7OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STs7OztLOztJO0c7O0ksVTs7SSxpQjtHOzs7Ozs7Ozs7Ozs7O0k7O087O1EsUTtROztRO1E7VTs7UTtPOzs7O087O1EsWTtRLGtCO1E7VTs7O2E7Ozs7Yzs7Ozs7YTs7cUI7O1k7Ozs7OztRO1U7O3NDLFc7Ozs7Ozs7OztRO1U7UTtROzs7Vzs7Tzs7Ozs7Ozs7Tzs7O2tCOzsrQiwyQzs7O087OztrQjs7K0Isd0M7O087OztRO1U7OzthO2EsTztZOzs7Tzs7K0IsMkI7OztvRDs7O087Ozs7UTtRO1E7VTs7O2E7Ozs7O1E7Ozs7VTs7Ozs7OztXOzs7WTs7Ozs7Vzs7O1M7Ozs7O1M7Ozs7O08sTzs7Tzs7Ozs7UTtRO1U7OzthOzs7Tzs7O1MsTztROzs7Ozs7Uzs7O087O087O087Ozs7OztRO1E7VTs7O2E7YSxPO1k7OztROztPOzs7a0I7Ozt5Qjs7Tzs7Tzs7OztRO1E7OztZOztPOzs7a0I7OzsyQjs7Tzs7Tzs7OztRO1E7Tzs7O2tCOzs7dUI7O087OztPOzs2QixvQjs7O087OzhCLHNCOztJLE87Rzs7SSxXO0k7Ozs7O0s7SztJOzs7ZTs7O2M7O0k7RztHO0ksYTtJO007SSxjOzs7Ozs7STtLO087OztVO1UsTztTOzs7SztPOzs7VTtVO1c7Ozs7O1c7Vzs7OztlLGtCLFE7MkI7O2UsTzs7O3lCO3lCO3dCOzs7ZTs7ZTs7ZTs7ZTs7ZTs7OztnQixNO2dCLFE7Ozs7Ozs7ZTs7O2dCO2tCOzs7cUIsbUIsTTtxQixPO29COzs7Ozs7Ozs7Ozs7Ozs7b0IsZTs7O29CO3FCLGlCOzs7cUIsTztvQjs7b0I7O29CLGlCLFM7b0I7Ozs7Ozs7b0IsTzs7b0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCOztlOztlLG1COzs7OztlOzs7O2U7Ozs7OztlOzs7ZTs7O2U7Ozs7ZTs7OztlOzs7O2U7O3VCOztVOztXLE87OztxQjs7b0I7OztVOztXLE87OztxQixPOzs7K0I7K0I7OzhCOzs7b0I7OztVO1U7OztXOzs7Ozs7Vzs7Yzs7MEMsVzs7OztXOzs7Ozs7O1c7Ozs7O1U7VyxTO1c7O1csTztVOzs7OztXO1c7O1U7Uzs7O0s7Tzs7O1U7OztXO1U7Uzs7O0s7O0s7TTtROzs7VztXO1U7Ozs7O0k7SztPOzs7VTtVO1M7OztLO087OztVOzs7Ozs7OztVOzs7O3NCOztVO1M7OztJO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFM7OztJOztLO00sSSxjLDJDOzs7OztPLFM7TztPOzs7STtHO0c7STtJO0k7STs7STtJO0k7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2Esa0M7YSxVOzs7Ozs7Ozs7TTs7Szs7Rzs7SSxzQjs7SyxtQjtLO00sUTtNO08sSSxlOzs7OztPOzs7O007Ozs7O007O007OztJO0c7O0k7Ozs7RztxQix3QjtHO0ksaUI7Ozs7OztJO0ssUTs7O0s7Tzs7K0IsbUM7OztJO0k7Rzs7STtLLE07O0ssTTs7SSxXOzs7O0s7O007Ozs7Ozs7Ozs7O007OztJO0s7aUQsMkI7OztJO0c7O0ksc0I7O0ssTTtJLHNCOztJLEksUTs7Ozs7Ozs7Ozs7OztJOzZCLHlCO0c7RztJO0k7STtJOzs7STtJO0c7O0k7OztnQjtnQjs7O2lDLE8saUI7Yzs7OztnQjs7O2dCO2lCLFE7OztpQjttQjs7O3NCOzs7Ozs7Ozs7cUI7OztnQjtlO0c7O0k7O3lDLFcscUI7O0k7Rzs7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STtJOztJLHVCO0k7Ozs7TTs7Ozs7Ozs7O0k7Rzs7STtLOzs7Ozs7USxPOzs7O0ssVztHOztJO0ssaUM7SztLLE8sb0Q7Rzs7STs7Ozs7O0s7O0k7Rzs7STs7Ozs7OztLLEksUTs7OytCOzs7Szs7STtHOztJOzs7OztNOzs7VTtTOzs7Ozs7Ozs7OztJLE87Rzs7O0s7TSxJO007UTtVO3lDLE87O00sTSxXO00sTSxXO0s7O0k7STt1Qjs7a0I7SSxxQixVO2tCOztJO0c7O0ksVzs7Ozs7OztJLEs7SztJOzZDO0k7STtHOztJLFc7Ozs7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7ZTs7Ozs7OztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7Ozs7SyxPOztJO0c7O0k7MkIsTztJO0c7Ozs7Ozs7O0ksTzs7O0k7OztNO29EOzs7OztPOztNOzs7Ozs7Ozs7OztNO007TTs7O0k7Rzs7STs7O007MEI7c0I7TTs7Ozs7Ozs7Ozs7TTs7O0k7Rzs7STs7O007cUI7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007OztJO0c7O0k7STtHOzs7SztNO007TTs7TSxtQjs7Ozs7Ozs7OztLO0k7STtHOztJO0k7Rzs7STtJLFc7STs7Ozs7O0s7O0s7Szs7O3dCO0k7Rzs7STtLO0s7Szs7Szs7TTtLO3NCO007O087Ozs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O2U7c0I7TTs7Ozs7Ozs7Ozs7TTtNO007Ozs7Ozs7Ozs7O007OztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLGtCOztLO0k7Rzs7STtLO0k7RztHLHNCOztJO0c7O0ksTzs7d0Msc0I7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxXO0s7Ozs7Ozs7MkI7O00sTTtLOztHOztJOzs7Ozs7TztRLFM7USxPO1EsTztROztpQjs7O087Ozs7Szs7STtHOztJOzs7Ozs7Ozs7Ozs2Qjs7Ozs2Qjs7Ozs4Qzs7Szs7STtHOztJLFk7O0s7Ozs7TSxVOzs7Ozs7Ozs7STtLO0s7Ozs7Ozs7WTs7OzthLE87YSxRO2E7ZTs7K0IseUI7O1k7OztZOzs7O2EsVTs7Ozt1Qjs7O1k7Ozs7Ozs7Ozs7OzttQjs7Ozs7O1k7Ozs7YSwrQjs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7OztZOzs7O2E7bUM7Ozs7Ozs7O1k7Ozs7O2EsVTs7OzJCO1k7Ozs7O1k7Ozs7O2EsVTs7OytCO1k7OztZLHVCLFU7Ozs7eUI7OztZOzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztVLFM7O1M7O1c7OztZO3FCO1UsTzs7b0I7OztzQjs7O3dCOzs7MEI7Ozs0Qjs7OztTOzs7O0k7RztHO0ksYTtJLG9CO0ksbUI7SSxnQjtJO007STtNO0ksaUI7STtNO0k7TTtJLGdCO0k7TTtJO007SSxvQjtJO007STtNO0ksbUI7STtNO0k7TTtJLGU7STtNO0k7TTs7STs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7OztVOztVOztVOztVOztVOztVOztVO2tCOzs7Rzs7STtLLE07SztLLFE7Ozs7SztPOztVOztJOztPOztPOztPO1EsVztRLE87TztRO1MsTzt1Qjs7O087O087Z0I7Tzs7Tzs7Ozs7Ozs7O08saUI7Tzs7RztHO0k7TTtJLFU7O0ksTztHOztJLE87Rzs7STs7Ozs7Ozs7O1M7OztVLE87OztVOzs7Ozs7Ozs7OztXLE07Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O1MsTzs7Ozs7OztTOzs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxXOzs7OztTOzs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7cUI7Uzs7OztRLE87OzswQjs7Ozs7Ozs7VSxtQjtVOzs7Ozs7Ozs7Ozs7VyxHOzs7Ozs7VTs7Ozs7O1csTTs7OztTOzs7OzttQjs7UyxxQjtTOzs7O0ksTTt1QjtHOztJO0k7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7O0k7YSxNO0k7Rzs7STtLOztTO0s7O0k7SyxXO0s7SyxlO0k7STtLO0s7Tzs7eUIsbUIsZTs7SztJO2M7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOztJO0c7OztJOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOztLLE87OztJLE87O0c7OztNLHVCOztNLFc7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7O1EsTTtPOztJOzs7USxNO087SSx1Qjs7O0k7SztPOzs7OztVLFc7VSxPO1M7Szs7OztNOztPLE87Yzs7aUI7Ozs7Z0I7SSxJLE0sNkM7Ozs7O3VDOztLOzs7Ozs7SSxPO0c7RztJOzs7OztJLG1CLE07O0k7Rzs7STs7MEM7O0ksTztHOztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SyxROzs7O0ssUTtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZO1ksTztJOzs7Szs7O0k7Rzs7STtJOzs7Ozs0QixPOzs7Uzs7OztLOztHOztJOzs7OztRLE87O1EsTzs7USxNOzJCOztJLE87Rzs7STtJO0ssTzs7STtHOztJOzs7STs7Ozs7OztJO0ssTzs7Ozs2Qjs7STtLLE87OztJO0c7O0k7Ozs7O0ssTTs7OztPO2dCOzs7Ozs7MkI7O087Ozs7UTtPOztPOzs7USxtQztROzs7OzthOzs7Ozs7Ozs7O2dCOztrQjs7b0MsaUM7Ozs7OztvQjs7Ozs7Ozs7YTs7WTs7Ozs7O1EsUztRO1U7Ozs7Ozs7O1E7VTs7O2E7YTt1Qjs7WTs7O08sTzs7Ozs7OztTOzs7OztVO1M7bUI7O1k7OzhCLDZDOztVO1c7OztXO2E7OztnQjs7aUIsTTs7O2dCO2U7O1c7Vzs7VyxPO1c7YTs7Ozs7Ozs7OztVLHFCO1U7VyxhO1csWTtXLGdCO1c7VTs7Ozs7Ozs7OztxQjs7Ozs7O087O1EsVztRLFU7USxjO1E7USxPO087Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7OzhCO1c7WSxROzs7Vzs7YSxNO1k7O2E7O1k7Ozs7WTtZOzs7VztZLE07VyxVO1c7WTs7b0I7b0QsZTtXO1c7WSxXO1k7Yzs7Z0MsbUIsVTs7WTtjOzs7aUI7aUIsZTtnQjs7WSxPO1ksTztZLE87VztXO1k7Yzs7O2lDLHlDOzs7aUI7Z0I7WTtXOzs7OztRO1U7Ozs7USxrQjtRLFk7USxZOzs7VztZO2M7Z0Q7WSxLO1ksc0I7Vzs7OztvQjs7O1U7UTs7Ozs7O1U7VzthOzs7Z0IsVztnQixXO2U7O1c7YTs7K0IsbUIsZTs7VzthOzs7O1csTTtVO1c7O2E7Ozs7OztTO1U7WTs4QztVLFM7VSxJO1U7WTs7Ozs7O1M7VSxNO1M7VTs7WTs7O08sTzs7O2lCOzs7O2lCO2dCOzs7O087OztRLEs7UTtVOzt3Qiw2Qjs7UTtVOzsyQjs7USxPO087O087O1E7OztPO1E7MkI7UTs7Ozs7Uzs7O2lCOzs7O087OztROzs7Ozs7OztnQyxXOzs7WTthOzs7MEI7YTs7Ozs7Yzs7O3NCOzs7O1k7Ozs7YSxPO2EsUTtZOzs7OztzQjs7K0M7USxNOzs4QztPLE07O08sb0MsTTtPLFksVztPLHNCO087UTs7UyxzQjtROzs7OztRLFc7UTs7d0I7Ozs7Tzs7Ozs7OztROztRO1MsVTs7OztZLHdCOzs7O2E7Yzs7O2M7O2lCLE07OztpQjtrQixPOzs7O2E7YyxPOzs7WSxXO1k7Ozs7Ozs7UTtTLE07UTs7UztXO1MsTztROzs7Ozs7Ozs7O087USxVO1E7VTs7O2E7YTtjOztlLGU7Yzs7YTs7O2MsYTs7O2M7ZTs7O2U7O2tCLE07Ozs7O29DOzs7a0M7O2E7Ozs7c0I7O1k7O1EsTztRLFU7OztRO1U7OzZCLGdEOzs7O087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVTs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtRO1U7OzthO2E7OztZOzs7Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7O1UsYTtVLGdCO1M7Ozs7UTs7OztTLFE7UztROzs7O2lCOzs7O087USxPOztPOztPOzs7UTtRO087Ozs7Ozs7UTs7OzBCO08sSSx3QztPOztPLG9CLFU7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1EsZTtRO1U7Ozs7Ozs7O1EsTztPOztPOzs7UTtRLE87TyxPOzs7Ozs7OztPLE87O087Ozs7Ozs7OztXLFk7Vzs7O1ksVTtZLFc7Ozs7WTs7Z0I7Ozs7O1k7WTs7Ozs7Z0I7Ozs7WSxNO1k7VyxPOzs7Ozs7UTs7WTs7Ozs7UTtROzs7OzthLHdCO2E7Ozs7OztZOzs7Ozs7USxTO1E7VTs7Ozs7Ozs7Tzs7Ozs7OztrQjs7Ozs7Tzs7O1EsTztPLE87O08sbUM7O1E7UyxPOztROztPO1EsTTtRLE87UTs7VTs7O2M7Yzs7Ozs7Ozs7d0I7OzthOzs7O087Ozs7ZTs7Ozs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLE87OzRCOztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJO0ksTzs7OzhCLDRDOzs7YzthOzs7Ozs7OztLOztROzs7OztTLE87UTs7O1EsMkI7Ozs7Ozs7OztTOzs7O2lCOzs7OztLO0k7Ozs7O087O2dCO2tEOzs7Tzs7O1E7UTs7Vzs7O2M7O2MsUzs7Yzs7VTtPO1M7OzJCLG9CLFc7Ozs7O087Ozs7OztjO2dEO1E7UTtVOzs7YTthO1k7O1E7VTs7O2E7YTtxQjs7c0M7OztZOztRLFM7UTs7Ozs7OztVOzs7Ozs7VyxPO2E7OztjOzs7Ozs7Ozs7Ozs7OztXOzs7TyxPOzs7aUI7aUI7Z0I7Ozs7TTs7OztPOzs7OztJOzs7YTs7O2dCOzs7aUIsTTtnQjt3Qjs7d0M7OztlOzs7O0k7OztpQjs7OzttQzs7Ozs7Ozs7Ozs7O1E7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1EsVTtXO1M7VTtXLE87VzthOzs7Z0I7Z0I7d0I7OztlOztVO1csTTtVOzs7VzthOzs2Qiw4Qzs7VzthOzs7Z0I7Z0IsTzs7OzBCLFU7MEIsTzt5Qjs7O2U7OztXO2E7OztnQixXO2U7O1c7YTs4QztXO2E7OytCLDRDOztXO2E7OztnQjtnQjtlOztXOzs7YztVOzs7OztXOzs7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7OztLO007OztPLE07O1M7OztZLG9CLE07WSxPO1c7Ozs7O0s7TTtROztzQiw2Qjs7TTtROzt3Qjs7TTtROztNOzs7O0k7SyxrQjtLO087OztVOzs7VztXO1c7O1c7O1ksTztZO2M7Ozs7Ozs7O1c7O1U7OztXOzs7VzthOzs7Ozs7OztVO1M7Ozs7O0ssTTtLLFU7O0s7OztNO1E7OztXOzs7WSxRO1k7Yzs7Ozs7Ozs7VztVOzs7Ozs7Ozs7Ozs7Ozs7OztJO0c7NEM7Rzs7STs7Ozs7O0ksWTs7O0s7TSx5Qjs7STtHOzs7STtLO007UTs7O1csb0I7Ozs7a0M7O3dFOzs7VyxNO1U7Ozs7Uzs7Ozs7O1U7VSxRO1M7O007UTtLO00sTyxpRDs7O0ssWSxzQixZO0s7Ozs7Ozs7TTtNLFE7TTtLO007TSxPLHlEO0k7STs7O0k7SSxlO0c7O0k7YztjOztHOzs7TSx1Qjs7TSxXO0s7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7Ozs7O087USxPO1EsTztXO1EsVztRLE87Ozs7O0ksTztHOzs7STs7O0ksTztHO3lCLDRDOzRCLE8saUM7O0ksYyxXO0k7Ozs7USwwQyxnQjtJLE87Rzs7STs7Ozt5QjtJLGU7Rzs7SSxPOzs7Yzs7O2U7O2M7Ozs7aUM7O2E7OztHOzs7STs7Ozs7YTs7O2dCO2dCO2U7Ozs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjtTO1c7OztjOzs7O2U7OztpQjs7a0I7Ozs7Ozs7c0Msa0I7Ozs7aUI7Ozs7O2tCOzs7Ozs7O2lCOztjO2E7Ozs7OztTO1c7OztjO2M7O2E7OztRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7UztXOzs7Yzs7Ozs7ZTs7O2lCOzs7O2tCOztrQjs7Ozs7Ozt1Qjs7OzBCOzBCOzJCOzRCOzs7dUM7NEI7Ozs7OzJDOzsyQjs7OztrRDs7O3lCOzs7Ozs7Ozs7O2lCOztpQjs7OztrQjtpQjs7OztrQjs7bUIsVzttQjtxQjtrQzs7O21COzs4QjtvQjtxQixPO3FCLE07Ozs7Ozs7eUI7Ozs7Ozs7a0I7OzswQjs7a0I7OzswQjs7Ozs7aUI7O2tCOzs7cUI7a0M7aUI7Ozs7Z0M7Ozs7O2lCOztjO2E7Ozs7Ozs7Uzs7UztXOzttQyw2Qjs7O1MsTTtTLFE7Ozs7OzthOzs7Z0I7Z0I7Ozs7OzhCOzs7Ozs7Ozs7OztTLEksTSxnQzs7OztVO1c7OztnQjtrRDs7OztTO1UsTztVO1k7OztlO2U7ZTtjOzs7VTs7Ozs7Z0I7a0Q7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7UztXOzs7YyxXO2E7O1MsZ0I7OztTOzs7UTs7Ozs7Ozs7OztROzs7Ozs7Ozs7UyxLO1UsTTtTO1UsTTtVLE07OztVO1k7OztlO2U7Ozs7OztjOzs7VTtZOzs7ZTtlOzs7Ozs7Yzs7O1U7VTs7VSwrQjtVLE87Uzs7Ozs7OzZCOzs7Ozs7WTs7Ozs7Ozs7OztXO1EsUztRO1M7Ozs7b0I7Ozs7UTs7Ozt1Qjs7Ozs7OztJOztLLHlDLG9CO0k7Ozs7Szs7O0k7OzthLEk7YTtxQjs7WTtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLOztLO007O1M7OztZLFc7O1k7Ozs7YSxvQixLO2EsTzs7a0MsVyxnQzs7Ozs7Uzs7OztTLG9COzs7Ozs7Ozs7Ozs7OztnQixHO2lCOztnRDs7Ozs7Ozs7Ozs7OztnQixHO2lCOzs7Ozs7Ozs7YyxHO2U7Ozs7O1MsTTtROztLOzs7Ozs7OztXO1k7YTs7O2EsTzthLE87WSxXOztXO1ksSTtZO29COzs7Ozs7VSxJO1UsVzs7Ozs7Ozs7O1U7OztXOzs7Ozs7Ozs7bUIsRztvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CO3FCO3dCO29COzs7OztlLE07OztVOzs7USxNOzs7OztTLEc7VTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsSzthLEk7YTtxQjs7Ozs7OztZLEc7YTs7Ozs7WTs7O2E7OztZO29COzs7Ozs7Ozs7YTs7O2M7OzthO3FCOzs7Ozs7O0ssSTtLLFc7O0c7O0k7SztNLGE7TSxTO007OztNOzs7Ozs7TyxNOzs7O0s7TTs7O007UTtLOzs7TTtPLE07TyxXO08sVztPLFE7TyxTOzs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEcsMkM7STtLLFc7SyxNO0ssTTtLLFM7SyxVOzs7SztLOzs7SyxvQjtLLE87Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzsyQixtQjs7Ozs7Ozs7SztNLE87TSxPO007SztNOzs7O1MsTzs7O21CLFE7O2tCOzs7Ozs7OztTLE87OzttQjsyQjs7a0I7Ozs7UyxPOzs7bUI7MkI7O2tCOzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLOztLO0s7TSxPO00sTzs7SztNO1E7TSxPO00sTztvQjtLO0ssTzs7O2U7ZTtlLE87Yzs7O0k7STtJLHlDLFc7O0s7Ozs7Ozs7Uzs7OztVLE07Uzs7O1U7VztvQjtTOzttQixNO1U7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxtQjtXOztVLE07Ozs7O1U7VyxPO1c7VzthOzs7Ozs7OztVOzs7Ozs7SyxNOztJO0s7SyxPO0ssUzs7Szs7Ozs7Ozs7STtJLEksVztJOzs7Szs7O00sVzs7OztJO0ssTztLLE87SztLO0s7Ozs7O0s7Ozs7O0s7TTtNLE07O007OztJO0s7SyxhO0s7Ozs7Ozs7Ozs7Ozs7STtLLE07STtLLFU7SyxNO0ssTTtLLGE7SyxhO0ssYTtLO087OztVLFc7VSxPLHlCO1M7O0ssTztLLFU7STs7O087USxTO1E7TztRLE07O087TTs7OztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7O3NCOzs7Ozs7O0s7Ozs7WTs7Ozs7Ozs7OztNLEs7SztPOztzQixXLGlDOztNO087O3dCOztNOztPOzs7OztPOzs7O2E7Ozs7Ozs7Ozs7Ozs7OztLOzs7SztNOzs7O1M7OztLOztJO0ssUztLLFM7Ozs7OztJOzs7Ozs7VTswQyxlOzs7Ozs7Ozs7VzsyQyxlOztLLE07SztPOzs7VTtVO1M7OztLO0s7Ozs7d0I7O0k7STtLO087OztVLHFCLE87VSxPO1M7O0s7Tzs7O1U7VTtTOzs7SztJO0k7SztNO007Ozs7WTs7Ozs7OztLO007Ozs7TTttQjs7TTs7Ozs7O1M7OztLOztNOzs7OztVOzs7Ozs7Ozs7Ozs7STs7O0ssSTs7Ozs7Ozs7Ozs7OztJOzs7O0s7SztLOzs7Ozs7Ozs7YTs7O0k7OztJLE87Ozs7MkI7O0c7OztLO0s7STs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNLFc7Szs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7OEIsc0I7O0ksVzs7STtHOztJLFc7O0ksa0I7Rzs7SSxPOzs7YztlO2UsTTtjO2E7OztHOztJLDhCOzs7O08sTzs7Ozs7O2tCOzs7aUI7aUI7Ozs7cUI7Ozs7d0I7Ozs7aUI7Z0I7O087OztRLFE7UTtRO1E7Ozs7UTs7O1M7OztVLFU7VTtVO1U7Ozs7OztPLE87Ozs7O2lCOztrQjs7a0I7Ozs7Ozs7O3dCOzs7OztrQixPOztnQjs7Ozs7OztPLE87O087Ozs7USxNO08sTzs7OztnQyx1Qzs7Rzs7STtLLEs7SztPOzs7VTs7Ozs7OztVLEssa0M7VTtXLE87VyxPO1csZ0M7VyxTO1csTztVOztrQjs7Uzs7Ozs7dUM7Rzs7SSwyQjs7Ozs7Ozs7OztZOzs7YSxLO2E7ZTs7O2tCO2tCLGE7a0I7bUI7OztrQjtpQjs7YSxPO1k7b0I7Ozt1QjttRTt1Qjs7d0I7Ozt1QjtzQjs7Ozs7Ozs7Ozs7O1k7OzthO1k7Ozs7O2dDOzs7TTs7O0ksTztHO0c7O0k7OztLOzs7O0k7RztHO0ksVztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO087OztVOzs7Ozs7ZSxZOzs7O2tCOztrQixNOzs7a0IsTTs7O2M7OztlO2U7MkI7Ozs7Ozs7Ozs7b0I7OztxQixPO3FCLFU7Ozs7O3FDOzs7d0IsSztxQzs7OztxQjs7b0I7b0IsTTs7OztvQixNOzs7Ozs7bUI7Ozs7b0IsUTs7Ozs7O21CLE07Ozs7O29COzs7cUI7O3lCO29COzs7O21COzs7b0IsUTs7Ozs7bUI7Ozs7b0IsUTs7Ozs7bUIscUI7bUIsVzs7OztjO1c7WTthOzthLFE7Ozs7d0I7YTs7Ozs7Ozs7d0I7Ozs7Ozs7Ozs7Ozs7VztZLFE7WTs7O1UsVztVO1M7O0s7Tzs7eUIsbUIsVTs7SyxLO0s7Tzs7eUIsb0IsVzs7SyxNO0s7Tzs7eUIscUIsWTs7SyxPO0s7Tzs7eUIsb0IsVzs7SyxNO0ssSztLO0ssUztLOztLOztNOzs7O1U7O1csTTtVLGtCOztXLE07O1U7Uzs7O007Tzs7Ozs7O1U7VSxNOzs7Ozs7O1M7Ozs7OztPLE07OztpQjs7OztLO007TSxJLDZCOzs7O1E7OztTOztVO1MsRztVOzs7O1E7Ozs7OztLOztNO007Ozs7Ozs7Ozs7Ozs7SztLO0k7SSxJLDZCOzs7O007O08sTTtrQjtNOzs7Ozs7O0s7Szs7Ozs7O1E7Ozs7OztTO1E7Ozs7OztrQjs7Ozs7Ozs7Ozs7Ozs7STs7SztLOzs7Ozs7UTs7Ozs7Tzs7Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7O087O3lCLG1CLGE7O0k7O1k7OztlOzs7Ozs7Z0I7a0I7OztlO2M7O0c7O0k7STtLO00sTTtNOzs7O1E7Ozs7aUI7OztROztRLE87Ozs7O2tCOzs7Ozs7a0I7bUI7O21COzs7b0IscUI7Ozs7Ozs7Ozs7Ozs7O21CLFk7Ozs7Ozs7OztxQjtzQixPOzs7OztrQzttQjs7c0I7OztvQixNO3VDO21COztvQjs7Ozs7Ozs7a0IsTzttQixNOztrQjttQjs7bUI7cUI7Ozt3Qjs7Ozs7O3lCLFU7eUI7eUI7eUI7d0I7dUI7Ozs7O2tCLE87Ozs7Ozs7O2lCOzs7UTs7OztTO1E7Ozs7UTs7O1E7OztTOzs7Ozs7UTttQzs7O0c7O0k7SyxvQjs7Szs7Ozs7Ozs7O0ksTzs7Ozs0Qjs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87Ozs7O1cseUMsZTs7O087OztRLE87USxJO1E7O1c7OztVO1EsUTtROzs7Vzs7O2M7YztlOzs7OztnQixPO2UsTzs7YzthOzs7UTtVOzs7YTthLFc7WTs7USxVO1E7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Syx5Qzs7O1E7O1M7Ozs7USxnQjs7UTs7O1M7VztTLE87UyxhO1M7Ozs7O1EsVzs7O1E7Ozs7OztROztTO1c7NEMsYztTOzs7O2E7Ozs7Ozs7UTs7Ozs7UTs7O1M7Uzs7Ozs7UTs7Ozs7aUI7Ozs7Ozs7Uzs7O3VCOzs7Uzs7VTs7OztjOzs7K0I7O1U7WTs7Ozs7UztVOzs7O1M7VTs7Ozs7b0I7Ozs7Uzs7a0I7Ozs7Ozs7Ozs7UTs7UztXLHlDLGE7UyxlO1M7Ozs7O1M7Ozs7YyxTO2Msa0I7Yzt1QjthOzs7UTs7USxtQixPOztRO1MsUTtTLE07OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UTs7OztROztTOzs7Uzs7OzthOzs7Ozs7O1E7Z0I7OztROztTLFE7UztTLFE7OztZOzs7WTs7O2E7OztZOzs7Ozs7OztzQjs7OztTOzs7UztRO29COzs7Ozs7OztJOztLOzs7Ozs7TyxVO29COzs7O0s7STtJOzs7SyxnQix5QztLLE87STtJO0ssTzs7SztPOzs7VSxrQjtTOzs7SyxPO0ssYTtJO0k7STtHOzs7STs7STtJO0ssWTtLLFM7SztPOzs7VTtTOzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7OztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztROztTO1MsTztRLE87O1E7O1M7UztXOzs2QixtQixhOztRLE87Ozs7UTs7UztTLE87USxPOzs7O0c7O0k7STttQjtLLHlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7Ozs7USxtQjs2QjtRLHdCO1EsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTLEkseUI7UyxPOzs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTO1M7Vzs0QyxjO1EsTzs7USxvQjtROzs7Ozs7Ozs7Ozs7Ozs7OztVLEksd0I7VSxPOztTOzs7OztROztTO1M7Vyx5QyxhO1EsTzs7OztRLG1COztTOztVO1UsTztVLE87UyxPOztRLFc7USxPOztROztTO1M7Vzs7NkIsbUIsYTs7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztTOztVO1U7VSxPO1UsTztTLE87O1EsSSx3QixPO1EsTzs7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7O0k7SyxZOzs7Ozs7Ozs7Ozs7O1EsbUM7UTs7Ozs7SyxNOzs7OztLO00sTztNLE87SyxPOztHOztJO0s7SyxNO0k7SztLO007Ozs7Ozs7UyxPOztTOzs7O1UsTTtTOztLO29FO0c7OztJOztJO0k7SyxZO0s7SztJOzs7b0I7TTs7O08sUTtPOzs7Ozs7Ozs7Szs7TSxVOzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Ozs7OztVOzs7OztXOzs7Ozs7O007OztPO08sVTtPLFE7Tzs7Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRLFc7USxPOzs0QyxXOzs7Ozs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VzthOzhDLGM7VztXOztXOzs7VTtrQjs7O1U7OztXO1csTTtXLFE7Vzs7O1c7VTs7Ozs7bUI7Ozs7Ozs7Ozs7ZTs7O2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7Z0I7OzttQjttRCxlOztlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7Ozs7VTs7VzthOzZDLGE7Vzs7O1U7OztvQjtxQjs7c0I7OzswQjs7O29CLE87bUI7Ozs7OztXOztZOztZLFE7WTtZLFE7WSxPO1k7OztlOzs7ZTs7O2dCO2dCO2U7Ozs7Ozs7WTtXOzttQjs7VSxXOztVO1csUTtXLE07VyxROzs7Yzs7O2M7OztlO2M7Ozs7Ozs7VztXO1U7Ozs7a0I7OztVOztXOzs7VztXLFE7Vzs7O1U7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztXOzs7WTtZO1k7MkI7WSxTOzs7ZTs7aUI7Ozs7O2tCO2tCOztpQzs7a0I7aUI7Ozs7eUI7Ozs7Ozs7Ozs7O2UsTTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxNOztZO2EsTzs7ZTtvRCxpQjs7Vzs7VTtXLFE7VztXLFE7Vzs7O2M7OztjOzs7ZTtlOzs4Qjs7Yzs7Ozs7Ozt1Qjs7O1c7VztVOzs7O2tCOzs7Ozs7O007TztRLFE7OztRO1E7Ozs7O087Ozs7O087USxPO1EsTztPLE87O0s7O00sTzs7OEI7O0s7O007TztRLFE7Ozs7OztXOzs7Ozs7O1MsTTs7O087Ozs7O1EsTTs7O0s7O00sTzs7b0M7OztLOzs7TTs7Ozs7O2lCOzs7Ozs7TTs7Ozs7TyxXO087TTs7Ozs7SztNLFU7O007SyxPO0k7SSxPOzs7STtLLE87SyxTO0k7Rzs7SSxzQzs7STtLLGU7SyxTO0s7Ozs7STs7RztJLGdCO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4QixPO3dCOztHOztJLEksVyw4Qzs7OzRCLE87OztHOztJO0k7Ozs7Ozs7Ozs7O0c7b0MscUM7O0k7STs7SSxPOzs7Yzs7aUI7OztxQjs7O3NCOzs7Ozs7Ozs7Ozs7O3lCOzswQixTOzBCLE07OzRCOzs7Ozt5Qjs7Ozt5Qjs7MEI7NEI7NkQsYzt5Qjs7eUI7MEIsTTs7Ozs7eUI7eUI7MEIsTTs7Ozs7Ozs7MkI7MkI7NEI7O2dDOzs7Ozs7Ozs7Ozs7Ozs7Ozt5Qjs7MEI7NEI7NEQsYTs7Ozs7K0IsUzs7K0I7d0M7Ozs7OEI7OzhCOzs7eUIsbUIsTzs7eUI7MEIsTTswQixNOzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7eUI7OzBCOzs7eUI7eUI7MEIsTzs7NEI7Ozt5Qjs7MEIsUTswQjswQixROzs7NkIsWTs2Qjs7OzhCOzZCOzs7OzswQjs7Ozs7O2lDOztxQjtvQjs7ZSxNO2MsTzs7O3dCO3dCOzs7Ozs7Ozs7Ozs7Ozs7O3VCOzs7OztHOztJLFk7O0k7Rzs7STtnQjs7O00sTTtpQzs7STs7Ozs7Ozs7ZTs7Rzs7STs7OztROztJOzs7O0c7O0k7SyxVO0ssOEI7SyxZO0k7O0s7Ozs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07Szs7O1U7Ozs7OztTOzs7SztJLFc7Rzs7STtLLGtCLE07SyxPOztJO0ssTztJO0k7SyxNO0ssTTtLLE07SSxPOztHOzs7STtLLE07OztLO00sTTs7TSxNO007UTtLLE87STtJOztPOztPOztPO2U7Ozs7STtLLE87STs7SztLLFU7SSxPOzs7Ozs7Ozs7O0c7OztNLHVCOztNO0s7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJO0s7SyxhLFc7STtHOzs7Ozs7Ozs7O0k7Szs7OztLLGtCO0s7SyxZO0k7Ozs7O1k7O0c7O0k7SztPO1M7OztZOzs7Ozs7WSxTO1k7YTtlO2EsSTtZO1c7O0ssUTs7O0ssTztJLE87OztjLGM7O2M7YTs7O0c7O0k7SztPOzs2Qix3Qjs7Ozs7OztJO0c7RywyQyxTOztJLDJCLE8sK0I7Rzs7STs7YSxjLE87Ozs7O3VCLFc7dUI7c0I7WTs7Rzs7STs7O2M7YTs7NEIsUzs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87OztJOzs7YyxXO2MsVzthOzs7YSxXO2EsVztZOzs7OztHO0ksbUMsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7YyxPLGM7YTs7NEIsTyxjLHFCOzs7O0c7d0IseUI7O0ksUSxxQyxTOztJOzs7YztjO2E7Rzs7SSxPOzs7YztjO2E7OztHOztJLHVEO0k7Rzs7SSxzQztnQjtJOztLLFE7SyxPO0ssTztLLFM7SztLO0ksVzs7O0k7O087Ozs7OztROzs7UTtPOztPOzs7UTs7O087O08sTzsyQzs7OztJO0s7Szs7Szs7TTs7UTs7O1c7VztVOzs7O0k7Rzs7STtLO087OztVO1U7Uzs7O0s7Tzs7Ozs7Vzs7O29COztxQzs7O1U7VSxPOzs7b0I7b0I7bUI7Ozs7STtHOztJLEksVTs7Szs7USxvQjs7Ozt1QixNOzs7OztTOzhCLE07O1MsSSxrQjs7Ozs7VyxVO1c7O1UsTTs7UztVOztVLFU7dUIsTTtTOztVLDBCLHNCOzs7YTs7O2M7Ozs7YTs7Ozs7Ozs7WTtVO1U7Ozs7Yyx3QztjOzthOzs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTtTOztpQyw2Qjs7Ozs7O1E7Ozs7OztTOzs7UTs7Z0MscUM7O1E7Ozs7O1M7UTs7Z0MscUM7O1E7OztTOzs7UTs7Z0MsNkI7Ozs7Ozs7Ozs7O3NCOztVOztnQyxnQzs7OztTOzs7O1U7VTtZOzs0Qjs7VSw0QiwwQjtVLDBCLFk7OzthOzs7ZSxNOzs7O2U7ZTs7O3VCOztjOzs7O1k7VTtZOzJDLHdCO1M7O1c7WTtjO1k7Ozs7Ozs7Ozs7NEI7Ozs7WTs7WTs7Ozs7YTs7Ozs7Z0I7Ozs7YSxNOzs7Ozs7OztnQjs7Ozs0Qjs0QjsyQjs7ZTs7WTs7O3NCLGU7Ozs7OztnQzs4Qzs7Ozs7OzBDOzs7Ozs7Ozs7MEMsTzt5QzsrQjtxQjs7Ozs7OztZOzs7YTs7O2dDLDZDOzs7Z0IsaUIsaUI7Z0I7Ozs7b0I7Z0IsTTs7O3lCOzs7ZTs7Ozs7WTs7O1E7UTs7UTs7OztTLFU7OztTLFU7OztTO1M7O1E7OztrQjs7Ozs7bUI7cUI7bUI7cUI7bUI7O2tCO2lCOztROzs7OztTLFU7OztTO1M7UTs7O2tCOzs7bUIsUTtrQjtpQjs7USwwQjtROztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UTs7O2tCO2tCO2lCOztROzs7O1M7UztROzs7a0I7a0I7aUI7O1EsOEI7UTs7OEIsc0I7OztROzsrQixzQjs7O1E7OytCLG9CO2dCLDRCOztJOztLO2M7OzhCOztJOztLOztROzBDO2UscUMsUzs7Syw0QixjO0k7OztLLFU7Szs7STs7Ozs7O0s7SztPO0s7SyxTO0ssUTtLOzs7Szs7SztPOzs7Ozs7OztLLFE7SztJO0c7O0ksTzs7MkI7O0c7dUIsNEIsd0I7Rzs7O00sdUI7OztPOztROztXLE87Ozs7OztVO1E7O1csVTtXLE87VTtRO1U7WSx3QyxZOztRLE07UTtVO1ksMkMsZTtRLFMsVztPO2U7OztNO08sTzs7Ozs7Ozs7OztNO007TyxVO08sTztNO007TztTO1csd0MsWTs7TyxNO08sVyxXO007Yzs7Szs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Z0MsTztJLEc7SyxNO0k7SyxPO0ssTztJLFMsTTtJO0c7O0k7OztPLEc7USxNO087O087Ozs7OztRO1U7OzJCOztPOzswQixpQzs7Tzs7Ozs7O1E7Tzs7Tzs7Ozs7UTtPOzs7Tzs7c0Isd0M7O087Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7Ozs7Tzs7ZTs7Z0M7Ozs7Tzs7OztRO1U7OzJCOztRO1U7OzthO2E7WTs7O1E7VTs7O2E7YTtZOztRO087O087Ozs7O1E7VTs7MkI7O1E7VTs7O2E7YTtZOztPOzs7Tzs7ZTs7Z0M7OztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7UTtVOzsyQjs7UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7O0ksTzs7O2M7YzthOzs7O0c7O0k7STs7O1E7O1E7O1E7O1Esc0I7Ozs7VSxXO1U7OztROzs7OztRO1MsTzs7O1E7Ozs7Ozs7O1E7OztXO1c7VTs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROztRO2tEOzs7UTtrRDs7USxPOztnQzs7OztRO1E7OztXO1c7VTs7USxPOztnQzs7OztRLE87OztROzs7OztROzs7OztRO1E7Ozs7O1E7Ozs7O1E7Ozs7OztRO1E7Ozs7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztJOzs7SSxPOzt5QixnQyxrQjtHOztJLE87OzRCO0c7O0k7Ozs7O0c7O0k7Ozs7O0s7Ozs7Ozs7Ozs7OztXO2E7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7Szs7O1EsbUIsTztRLFMsTTtRO087O0s7TSxPO00sTztNLFc7SztNLEksVyxxQzs7OzhCOzs7SztLO007UTs7MEIsa0IseUI7O007TTtRLDJDO00sZTtNLFU7TTtROzs7VyxPO1U7Ozs7TSxTO007USx5QyxrQjtNLFk7Szs7STtLO007Ozs7TTs7OztVOztLOzs7OztNOzs7ZTs7OztHOzhCO0c7STs7Ozs7Ozs7OztJO0ssUTtLLFk7SyxXO0s7SztJO0s7O0ssVztLLE87STs7Szs7eUIsTzs7OztTOzs7VSxVOzs7Ozs7Ozs7OztXOzs7OzthOzs7OztZOzs7OztTLE87Ozs7eUIsa0I7Ozs7Uzs7OztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VTtVO1U7VSxjOzs7O1k7O2EsSzs7WTtZOzs7O1U7VTs7Ozs7SyxPO0k7MkIsNEI7O0s7OztLOzs7STs7Szs7Szs7O0k7STs7Szs7Ozs7OztVLEc7VztZLEs7WSxPO1k7O1ksTTs7OzJCOzs7Ozs7O1MsRzs7O2dCOztLLFc7SyxPOzs7ZSxrQztlO2M7OztJO0ksYTtHOztJOzs7K0I7Ozs7O0ksSSxvQixRO0k7SyxJLFcseUM7Ozs2Qjs7O0k7O0ssWTs7OzthOzs7SztLLE87STs7Ozs7OztTO1MsTzs7aUM7Ozs7Ozs7Ozs7Uzs7O1k7WTtXOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQiwyQjs7UyxPOzs7bUI7bUI7a0I7Ozs7UztTOzsyQixrQiwyQjs7aUI7OzZCOzs7OztTO1MsTzs7aUM7Ozs7Ozs7O1c7VztZO1ksTztXOzs7O1M7Ozs7Ozs7Uzs7Ozs7UztTOzs7OztTOzs7OztTOzs7OztTO1M7Ozs7Ozs7UyxPOztpQzs7Ozs7O2lCOztNOzs7O0k7SSxZOzs7Ozs7Uzs7Ozs7O1U7WTs7NkI7O1M7Ozs7UztpQjs7a0M7OztTOzs7Ozs7VTtTOztTOzs7OztVO1M7O1M7OztVO1k7OztlOzs7Ozs7OztnQjtnQjtrQjs7ZTtjOztTOztTOzs7O1U7WTs7NkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1M7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1U7WTs7NkI7O1M7Ozs7O1M7Ozs7O1U7WTs7NkI7O1U7WTs7O2U7ZTtjOztTOzs7O1U7MkI7Ozs7O2tDOzs7Uzs7VTtZOzs2Qjs7UztVO1csUTs7O1c7YTs7O2dCO2dCLFc7ZTs7VzthOzs7Z0I7Z0IsTztlOzs7O1csTztXO2E7OztnQjtnQjtlOzs7O1U7Ozs7aUM7Ozs7Ozs7O1c7Vzs7Ozs7Uzs7O1U7OztTOzs7WSxNO1c7Vzs7OztVO1U7Ozs7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOztTLGtDO1M7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzs7Uzs7Uzs7Ozs7O1U7WTs7NkI7O1U7Uzs7O1M7OztTO2lCOzs7STtLOzs7SyxNO0k7SyxJLFcsMEM7Ozs2Qjs7O0k7O0s7SztLLE87STs7SztNLFU7Ozs7Ozs7O007TyxROzs7Ozs7OzhCOzs7O0k7Ozs7Ozs2Qjs7Uzs7Uzs7Ozs7OzthO2EsTzs7cUM7O1k7Uzs7VTtXO3lCOzs7Ozs7Uzs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7O1M7OzJCLG9CLDZCOzs7Ozs7UyxPOztpQzs7Ozs7O1U7O1csVTtXLFU7O1c7Vzs7OztXLE07VTs7UztTOzsyQixrQix3Qjs7UyxPOztrQyxrQix3Qjs7OztTOztTOzsyQixrQixzQjs7aUI7OzZCOzs7OztTLE87O2lDOzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7OztTO1M7Ozs7Ozs7OztTLE87O2lDOzs7Ozs7Ozs7Ozs7O0k7SSxjO0k7Szs7TSxlLDZCOztLO0k7STtLOztNLGUsNkI7O0s7STs7Ozs7OztTLEksVSwyQzs7O2dDOzs7Ozs7Ozs7YTs7Ozs7YyxNO2E7WTtTOztVO1c7dUI7Vzs7WTs7Ozs7Uzs7Uzs7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7WTthLE07YSxNO2dCO2EsVTthLE87Ozs7OztTLE87Ozs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7WTs7O2UsVTtlO2M7O1M7OztTLGM7O1M7Ozs7VTtVO1k7OztlO2U7Yzs7VTtZOzs7ZTtlO2M7O1UsVztTOzs7OztTOzs7OztVLE07VTtZOzs7ZTtlO2M7O1M7OztTLGU7O1M7Ozs7OztVO1M7O1M7Ozs7VTtTOztTOzs7O1U7VTtTOzs7O1UsbUI7VTs7O1M7VTtVOzs7OztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7eUM7O1M7Ozs7OztVLE07VTtTOzt3Qzs7O1MseUI7OztpQjs7O0k7SztLLFE7SztLLGE7SSxRO0k7Rzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHdCOzRCOzRCOzRCOzRCOzRCOzRCOzRCOzRCO2E7SztJO0c7O0k7OztROztROztROztROztROztROztROztRO2dCOzs7STtHO0c7STs7Ozs7SSxVO0k7Rzs7SSxVO21CO0k7Ozs7Rzs7SSxvQjtJOzs7Tzs7O1EsUztnQjtRLE07TztPLE87TTs7SSxVO0k7SSxPO0c7Rzs7OztJLGtCO0k7STtLLGU7SyxTLDJCO0k7SyxNOztJO0ksSSw0Qjs7OztNO08sTTtPLE87TyxNOztNOzs7OztJO0s7Tzs7O1U7Ozs7O1c7VTtTOzs7OztJO0c7bUIsWTtpQyxZOztJO0k7aUIsTTs7Ozs7OztLLEc7TTtNOzs7O0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7STtJOzs7O0ksaUI7O0c7O0k7Szs7bUIsVyxxQzs7O0c7O0ksRztLLE87STs7UztLOztROztLLE87O0k7Rzs7SSxPOzs7YyxXO2M7ZTtnQixhO2dCO2tCO3FCOzs7Ozs7Ozs7OztjO3lCOzt1QzswQjs7O2UsWTs7Ozs7O2U7O2dCLE07Z0IsTTtnQixNO2UsTzs7YyxJLFU7Ozs7O2U7O2dCLE07Z0IsTTtlLE87O2M7Ozs7b0I7Ozs7O0c7O0k7OztPOzBCOztPLE87TTs7OztHOztJOztpQjs7OztNLEcsdUM7TTs7Ozs7TTs7O08sTztNOzttQztPOztNOzs7OztHO0c7STs7OztJOztJLGlCOztJLE07Rzs7STs7O0s7SztNO08sTTtPLEs7TTs7O3NCOzs7Ozs7Tzs7Ozs7Ozs7Ozs7SyxJLFE7Ozs7Ozs7ZTs7cUI7O0c7O0k7STtLLE07SyxNOztLO3NDLDRCOzs7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCOzZCLE87NEIsTztHOzs7OztJOzs7Ozs7STs7OzswQiw0Qzs7SSxXO0ksTztHOztJO0s7SyxPOztJO0ksTzs7O0ksVztJLE87O2M7RztHOzs7OztJOztJOzJCLHFDOztLOzRCO0s7STs7Szs7SztJO0k7O0c7OztJO0k7O0k7Rzs7STtLO0s7Ozs7O00sTTs7O0c7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Rzs7SSxJLHdEOzs7OztNLFk7a0IsTTs7b0I7TSx1QjtNO007O0s7O0c7O0k7a0I7O0k7Rzs7SSxXO0k7OztPO087TTs7STtHOztJO0ksTztHOztJLEksK0IsTTtJLE87Rzs7SSxJLHFEOzs7O007TTtNOzs7OztJO0k7STtJO0k7SSwrQjs7OztNO007TTs7Ozs7STtJO0k7STtJO0ksK0I7Ozs7TTtNO007Ozs7O0ksTztHOztJOzs7Ozs0Qjs7NEI7OzRCOzs0QixPOzs4Qjs7OEI7c0M7OztPOzs7UTtVLDRCOzs2QixvQyxTO087Tzs7Tzs7UTtVLCtCO087OztVLE8sK0I7Uzs7TzttQzs7Rzs7STs7O08sTztRO087UTtRO1E7Ozs7OztROzs7TTs7O0ssUztLLE87O2tDLE8sMkI7OztlLEksUSxlOzs7dUM7OztjO0k7Ozs7SyxPO0ksZTtJLE87O2lDLE8sK0I7OztjOztpQjs7Ozs7OztpQzt1QjtlLE07O2M7YTtHOztJO0k7STtJLE87Rzs7SSxPOzs7Yzs7O2lCOzs7a0I7O2lCOztpQixxQztpQjs7aUIscUM7aUI7O2lCLHVDO2lCOzs7aUI7O2E7O0c7O0ksVztJOzs7TztPO087TTs7O0k7Rzs7STtHO21DLHVCOztJO087SztJLFc7STs7O087TztPO007Ozs7Rzs7SSxXOzs7STtJOztHOztJO0ksd0I7Rzs7STtJLGlCO0k7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7SSxPOzs7YztpQzs7YzthOzs7Rzs7STs7O0ssaUI7Szs7TTtNLFU7O2EsTTtLOztJLE87RztpQyx1Qjs4QiwrQjs7STtLOzs7Rzs7STtJOzs7TztRLE07UTs7MEI7OztNOztJO0c7O0k7RzttRDtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7Rzs7O00sdUI7O00sVztLOztJOzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STtLLFU7SyxNO0ssTzthLDRCO0k7SSxNO0c7O0k7Z0I7O0ksTzs7Ozs7Yzs7O0c7O0ksd0I7RztpQzs7SSxJLEssNEI7STtJO0k7SSxPO0c7O0ksUztJLE87Ozs7ZTs7Yzs7O2M7ZTtlO2lCLDJCO2M7ZSxNO2MsVTs7YyxPO2E7Rzs7SSxTO0k7STtLLE07SztPOzs7VTtXO1csUztXLE07VyxNO1csTztzQjtVOztXO1csTTs7aUI7VyxNO1UsUztVO1c7WSxNOzs7Ozs7OztVO1UscUI7VTtVLE07Ozs7STtHOztJLGdDO2U7STs7O2tCLFc7SyxRLFc7STtJOzs7SSxnQztlO0k7OztrQixXO0ssUSxXO0k7STs7O0k7OztHO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFM7STtLO2U7Szs7O00sVTtNLEc7TyxNOzs7Ozs7Ozs7O1c7Ozs7STtHOztJLGMsK0I7Rzs7STtLLFM7SyxTOztJO0c7OztJO0s7Szs7O0kseUIsTywyQjtJO0s7O1E7VTs7VyxVOztXO1k7Ozs7Ozs7OztZLFU7WTs7VyxPO1U7OEI7Ozs7Szs7UTtVOztXO1c7VTtLOzs7UTs7OzswQixPLDhCOztJLE87Ozs7O2M7YTtHOztJOzs7OzsyQjs7Rzs7STs7SyxPOzs7SSxPOztHOzs7TSx1Qjs7TSxXO0s7OztJO0k7SSxPOztpQyxzQzs7O2MsTzt1Qjs7d0I7Ozs7Ozs7dUI7YTtHOztJO0k7OzsyQjs7O0c7O0k7STs7OzJCOzs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7STs7Ozs7Ozs7SSxPO0c7O0k7STtJO0k7STtJO0ksTTtHOztJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJLE07Rzs7SSxZOztJO0c7O0ksWTs7STtHO0c7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87O0c7O0k7O3NCLE07Ozs7O0s7O1E7O3NCLE8sOEI7O0s7Ozs7O00sTzs7OEI7Ozs7OztHOztJLGdCOztLLE87OzZCOzs7OztHOztJOzs7aUI7O2lDOzs7Ozs7O0c7O0k7SyxTO0ssTztLLFE7a0MsTztJLFc7STs7cUI7Ozs7O0k7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0ksTyxXO0c7OztLLCtCLFM7STs7SywrQixhO0k7Ozs7Ozs7Ozs7USxvQjs7O1MsTzs7aUM7Ozs7Ozs7OzBCOzs7O1U7O1U7O1U7O1U7O1M7OzBCOzs7VTs7Uzs7UTs7Ozs7O1M7Ozs7O2E7O3dCOzt3Qzs7OztZO1M7Ozs7Uzs7OztTOztVOzs7VSxPOzs7Ozs7UTs7eUI7O1E7Uyx5QixTO1M7UztvQjtRLHFCOzs7O21COzttQzs7Ozs7Ozs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOztROzs7TTtPO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOytCOztTLGM7dUI7UyxzQixPO1MsTzs7aUM7Ozs7OztTLE87Ozs7Ozs7O1M7O1M7Ozs7UyxjOztVLE87O2tDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7OztTOzs7Ozs7Ozs7OztTOzs7O1UsYzs7VyxPOzttQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs4QixPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7OEI7Ozs7SSxlOzs7OztjOzsrQjs7OztHOztJOzs7O0k7O087O0ksRztLLEksUzs7TTs7TyxNO08sVztPLE87TSxXO00sTTs7SztNLE07Ozs7SztNO087O1U7Ozs7O2E7YTtZOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7UTs7O1c7O1U7Ozs7OztROzs7O1csYztXOztZLGE7WSxZO1c7OztJOzs7TztPO007O0k7SyxRO0s7OztPOzs7USxROzs7Ozs7Ozs7b0I7OztTO1UsTTtnQjs7Ozs7Tzs7Ozs7O1UsSSxjOzs7O1ksTTs7O3FCOzs7O1U7Vzs7Ozs7Vzs7Ozs7OztVO1csTTs7Ozs7OztPO1EsTTs7TztRLE07USxNOzs7Ozs7OztPOzs7Ozs7OztNOzs7UztTO1E7Ozs7Ozs7O0ksVzs7SSxXOzs7Rzs7STtJO0ssTTtLLE07SSxPO0c7RyxJOztJO0s7SyxNO0ssTTtJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0c7O0k7O0s7O087WTtNLEc7TSxHOzs7Ozs7STtHOzJCLDRCOzJCLDRCOztJOzs7Szs7UTs7MEIsNEI7O1k7TTs7O0s7Tzs7O1UsbUI7O1UsTztTOztNOzt1QztJLFU7STs7Ozs7Ozs7OztRO1E7UTtROztTLFU7OztPO087O2dDOzs7VTtVO1U7OztXOztZLFU7Ozs7Ozs7OztVOzs7Ozs7O21CO1csTTs7Ozs7VTs7WTtpQjs7YTs7Ozs7Vzs7YTtrQjtZOzs7aUI7Ozs7WSxjOzs7O2E7O1k7O2U7WSxNOzs7Ozs7Ozs7VTs7VyxNOzs7O1U7O1csTTs7Ozs7Ozs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7OztJO0s7WTtLOzs7OztNOztPLFk7TyxNLFc7TyxNO08sWTtNO00sTTs7O0s7O00sTSxXO00sWSxXO00sVztLO0ssTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiwrQzs7SSw4QjtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7RztvQix3RDs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O08sNEMsUztJOzs7O0c7O0k7Rzs7STtHO29CLHdEOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7RztHOztJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7STs7OzJCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzJCLDZDOztJO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0ksTTs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0ksMEI7Rzs7STs7O1k7Rzs7STtHOztJLG9DO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJO0c7O0k7Rzs7STtHOztJO0c7eUIsbUQ7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG9EOztJO0c7dUIsa0Q7dUIsa0Q7O0k7Rzt1QixrRDt3QixtRDt5QixvRDt5QixvRDs7STtHOztJO0c7eUIsb0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7RztrQiwwRDs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJO0ksTzs7O2M7O2U7OzswQyxpQzs7NEM7ZTtnQjsyQjs7ZTsyQyxXLGM7ZTs7O2tCLHVCLGtCLGlCOzs7a0I7OzJCOzJCLHVCOzBCOzs7a0IsMkIsWSxpQjs7O2tCLDJCLFksaUI7OztrQjtzQyxvQiwwQjs7O2tCO3NDLFksMEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7OztrQjs7MkI7MkIsdUI7MEI7Ozs4QjtrQjs7O21CO21CO3FCOztzQzs7a0I7OztrQjs7c0Msb0IsMEI7OztrQjs7MkI7b0U7MkI7MEI7OztrQjs7MkI7MkI7MkIsTzswQjs2Qzs7YztjO2E7O0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csMEI7RztHLDZCO0c7Ryw0QjtHO0csNEI7RztHLDJCO0c7RyxpQztHO0csa0M7RztHLGdDO0c7Ryx3QjtHO0csd0I7RztHLHdCO0c7RyxxQjtvQixrRDs7Ryx5QjtHO0csd0I7RztHLDhCO0c7RywyQjtHO0csOEI7RztHLCtCO0c7Ryw2Qjs7STtLLE87SyxPO0ksTyxXO0c7O21CLG9EO21CLG9EO0c7SSxRO0k7Ryx1QjtHO0csMEI7RztHLDBCO0c7Ryx1QjtHO0csMEI7RztHLHNCO0c7RywyQjtHO0csOEI7RztHLDBCO0c7Ryw2QjtHO0ksYztJO0csNEI7bUIsa0Q7O0csc0I7O0k7SyxPO0ssTztJLE8sVztHOztHLGlCO2tDLDhCO29DLDhCOztHLHVCO0c7RyxzQjtHO0csd0I7RztHLG9CO0c7RywrQjtHO0csd0I7RztHLG9CO0c7Ryx3QjtHO0csbUM7Z0Msc0M7O0csc0M7O0k7STtHOztHLHlCO0c7Ryx1QjtHO0csdUI7eUIsNkI7O0csdUI7RztHLDJCO0c7RywyQjtHO0csdUI7RztHLDJCO0c7RyxvQjtHO0csc0I7RztHLHNCOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO087Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLG9DO0c7RyxpQjtrQixrQzs7SSxlO0ksTztHO3FCLGdEO3dCLGtDOzs0Qix1Qzs0QixpQzs7Ryw4Qjt3QixtQzt3QixrQzs7RyxpQjtHO0csb0I7RztHLGlCO0csSTsyQiw0Qjs7Ryx5QjtHO0cseUI7RztHLHVCO2tDLDZCOztHLDRCO0c7Ryw0QjtHO0csMEI7aUIsa0M7O0csc0I7O0k7OztHLG9CO3NCLDZCO2tCLGtDOytCLDhCOztJLFk7Z0I7SSx1Qjs7OztlOzs7OztHOztJLFk7Z0I7O0ksTztHOztHLHNCO0c7Ryx5QjsyQixPLDBCO3dCLE8sMEI7eUIsTywwQjs7Ryw0QjtHO0csK0I7MEIsVzsyQixXO29CLGtDOztHLDBCO0c7RyxzQjtHO0csc0I7RztHLHdCOzs7Ozs7O0k7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7Ozs7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOzs7Ozs7RywwQjs7SSxPO0c7MEIsbUQ7cUIsTyxpRDt1QixTO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOzs7O0csd0I7O0ksTztHOztHLHlCO0c7MkI7RyxJO0cseUI7RztHLHNCO0c7RywwQjtHO0csd0I7O0ksZTtJLE87Rzs7SSxXOzs7Rzs7STs7OztHOztHLDhCOztJOzs7O0c7O0k7OztHOztJOzs7Rzt5Qiw2QjsyQiw2Qjt1QixPLHFDOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7OztLO087Ozs7O0ssTTtLLFk7SyxNO0ssTTs7SyxZO0s7SyxNO0ssUztJO0ksTzs7O0k7STtJOztLLE07SyxNO0ksTztHOzs7STtLLFksa0I7Ozs7Z0I7Szs7OzsyQjs7Ozs7STtJLFU7STtLLFk7Ozs7Ozs7STtJO0k7Rzs7SSxHLG1DO0ksZTtJO0k7Rzs7STtLLFU7Szs7O2M7YyxPO2E7STs7O0s7O00sTSxXO0ssZTtLO00sTTtXOzs7Ozs7SztNLE07b0I7Ozs7SztNLDBCO007OztJLE87Ozs7NkIsTyx3QjtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7dUIsZ0M7a0MsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87TTtROzt3QixPLHFDOztNLFE7TSxPO007UTs7d0IsTyxtQzs7O0s7a0IsTTtNOzs7Ozs7O1UsVztVLHFCO1M7TyxVOzs7O0s7O007OztXOzs7OzRCOzs7STtLLFc7SyxXO0ssVztLO087OztVLE8scUI7Uzs7SztPOzs7VSxPLHFCO1M7O0k7Ozs7TTtPOzt1QjtLOzs7OztNLE87SyxXOzs7Ozs7Ozs7OztJOztZOzs7STtLO007OztXO3lDLHlCOzs7O0ksSztLLE87O0k7O0ssVTtNLEk7Ozs7VTs7STtLO087OztJOztNLE87SyxVO007TTtNLEk7Ozs7O00sMEI7TSxJOzs7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0s7TSxhO007UTtVOzs0QixPLGtDOztXO1k7Yzs7WSxPO1k7Yzs7O2lCO2tCLFM7a0IsTztpQjtpQixVO2lCLE87Z0I7OztZLEk7VztVO0s7Ozs7Szs7TTtNOzs7SztNO1E7O1M7O1MsYTtTO1M7VTs7VztZLFk7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCO2lCLGM7O2lCOzs7Ozs7Ozs7OztjOzs7O2dCOztpQixPOzs7Ozs7Ozs7Ozs7Ozs7O1E7O3dEO0s7O0c7Ozs7Ozs7O0s7SztLOzs7UTs7UyxZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CLDRCOztPOztLLE87OztLO00sYTs7O1E7O2dDOzs7O00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXO0k7TTs7O1MsTyxxQjtROzs7Ozs7Szs7TTs7O0k7O0s7Tzs7OEI7Ozs7OztLLFc7SztPOzs7O0ssVztLO087OztNLFc7TTtlOzs7Ozs7Ozs7STtLLGMsZSx3QixTO0ssVztLLE87STs7Ozs7O0k7O0c7O0k7OztJOztHOztJOztJOztLLE87SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOztJLE87OztjOzs7ZSxJO2MsRztlLFc7ZSxPOzs7Ozs2Qzs7O2MsVztjLE87YTs7Rzs7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0ssYztLLEc7TTtjO007O0ssUzs7TTtjO007Ozs7O1MsVztTLE87UTs2Qjs7O0s7TSxPO00sTzs7TTs7Ozs7Szs7Ozs7TTs7O1M7Ozs7TTs7O1M7O0k7Rzs7STtJLE87Rzs7STtJLE87Rzs7STs7SyxxQztJOztJO0s7Szs7Ozt3QixjO3dCLG1CO3dCLG1COzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDOzs7OzttQzs7Ozs7OztxQzs7Ozs7c0M7Ozs7O3VDOzs7Ozs7O3VCOzs7Ozs7Ozt3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEM7Ozs7OzRDLDZCOzs7Ozs2QyxrQzs7Ozs7aUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt3QixpQjtLOzs7O3NCOztLLGU7SztLOztNOztPLEk7TztPO1M7OztZOzs7OzthLFU7YTthO1k7WTtZO1c7O007OztTOzs7Ozs7VTtTO1M7OztZO2EsRztjO2EsVzthOztZLEc7YTtZLFc7WTtXOzs7O1UsVTtVLFE7Ozs7O1M7UTs7TTs7Ozs7OztPOzs7VTtXLFE7OztXOztVOzs7YSxVO2E7WTs7Ozs7O29CO29COztTOzs7O087YztPLFc7TztPOztvQyxzQzs7Tzs7VTs7O2E7YSxPO1k7O087OztVO1U7VTs7O2E7OztjO2EsTztZOztVO1UsTztTOztPOztNOzs7TSxVO007O0s7Szs7OzsrQztLO0s7O0c7O0k7SSxPO0c7O0k7SztLOztJOzs7ZTtLO0ssYztLLE87SztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7SyxTO0ssTTtJO0k7SyxNO0s7TztJLE87YTs7YyxPOzthO0c7O0k7SyxNO0ssTTtLO08sVztJLE87YTtHOztJLE87YTs7YztlLE0sVztlO2lCO21COztlOztlOzs7OztrQjttQixNO21CLE07a0IsTzsyQjs7OztpQjtjO2M7YztjO2M7YTtHOztJO0ssUztLLE07SyxLO0ksTztHOztJLFU7SSxPO2E7O2M7YyxHLDZCO2MsSTs7YTtHOztJO0ssYTtLLE07SztPLFc7SSxPO2E7Rzs7STtLLE07SztPO1MsVztLO08sVztJLE87YTs7Ozs7Z0I7Z0IsTztlOztHOztJLFU7SSxPO2E7OztlOzs7OztlLE87Ozt5QjswQixNOzBCLE07eUIsTzt3Qjs7YztjLE87Ozs7O3dCO3dCLEs7eUI7eUIsSzswQjs7d0I7d0IsTzt1QjthO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0dtR3JvQk07Ozs7SUFBQTtJQThITTtJQU1abzZIO0lBRUFDO0lBcENPLGtCQWtDUEQsU0FFQUM7SUE0Qko7R0FFUTtHQUVlLFNBQW5CQyxXLFU7R0FQQTtJQUFBOztPQU9BQTs7OztJQVMwQjtJQW9DWDtJQWxCQTtJQWlDTjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFaE5EOzs7OztJQUFBO1lBbUNSQyxJQUFLQyxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDQyxJQUFLRixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUEscUNBaUJuQ0YsS0FFQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFiOztHQUF3QjtZQUM1RHlDO0lBQVUsT0FBQTtHQUEyQjtHQUp3QjtJQUFBLGFBRzdERCxTQUNBQzs7O09BalFGNUU7T0FLQUM7T0FNQUM7T0FDQUM7T0FFQUM7T0FFQUM7T0FRQVE7T0FRQUU7T0FLQUM7T0FXQU87T0FFQUM7T0FLQUc7T0FJQUU7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCOztROzs7USxPOztRLHNDO1EsUTs7OztROzs7O1E7OztnQjs7O0c7O0k7STs7Ozs7Ozs7Ozs7NEI7OztRLHFDOzs7UTs7O1Esa0IsTzs7UTs7USxzQztROzs7Ozs7Ozs7Ozs7Rzt5Qjs7STtJOzs7Ozs7UyxtQztTOztTLG1DO1M7O1Msa0IsTzs7Uzs7Ozs7Rzs2Qjs7STs7Ozs7Ozs7O0s7O007SyxPOztJLE07RztHO0ksSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzs7O1Esa0IsUTt3Qjs7OztrRDt1QztRO1MsUTtTO1M7UztTOzs7Ozs7Ozs7dUI7Ozs7O1E7OztTO1M7UTsyQzs7O1E7dUI7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Ozs7O2lCLHVCO2lCO2lCOzs7Ozs7Ozs7Uzs7Ozs7USxrQztRO1EsSSw2QjtROztRO1E7O1E7O1M7Uzt1QjtRO3VCO1E7O1E7O1E7O1M7UztRO3lCO1E7eUI7UTs7UTs7USxvQjtROztROzs7UTtRO1E7dUI7Ozs7UTt1Qjs7O0k7O0ssa0I7SztLO0k7STtJO0ksSSxtQjtJLEc7OztLLFE7SyxpQixPLHdCO2lDOztJLG1CO0k7OztPO087TTs7Ozs7O0k7WTs7Ozs7Ozs7SSxRO0k7O29COzs7c0I7Ozs7O0c7Rzs7SSxvQzs7SyxJO0s7TTs7O2dCO29CO087UTs7O1E7Ozs7O007O0k7O0ssSSxVO0s7OztPLGtDO1E7UyxNOzs7OztPLFU7Ozs7Ozs7OzthOzs7Yyx1QjtlO2dCOzs7Ozs7YztlOzs7Ozs7Ozs7Ozs7YTs7Ozs7YyxVOzs7Ozs7OztnQjs7Ozs7Ozs7aUI7aUI7a0I7OztpQjs7OzJCOzhCOzs7OzJCOzs7O2UsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsZTs7O1UsSSxtQjs7Ozs7VSxJLG1COzs7O2MsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O087Ozs7TTtNOzs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O00sb0QsVzs7SSxVO0k7O0c7O0ksVTtJOztHOztJLFU7STs2QixNO0k7Rzs7SSxVO0k7NkIsTTtJO0c7O0k7SztPOzs7SztLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtLLGUsTTtLOztJLE87Rzs7STtLO087OztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0k7O087SSxPO0c7O0k7SztNOztnQjtNO00sTTtLOzs7OzJCOzs7Rzs7SSxJLDJDOzs7MkI7OztHOztJO0k7O1E7OztNOztPOztRO1EsWTs7UTs7OztZOzs7Ozs7Ozs7SyxVO0ssTzs7Rzs7STtpQztHOztJO2lDO0c7O0k7Z0I7Ozs7Ozs7O0c7O0k7Szs7OztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7OEIsb0M7O0ksa0I7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3JFRWdEOzs7Ozs7OztZQVBGQyxNQUFPQyxJQUFRQyxJQUFLLE9BQWJELE9BQVFDLFdBQXFCOztJQUNwQ0M7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMsWUFBd0JDO0lBRTFCLElBRldDLDJCQUVQQyxVQUZPRCxnQkFDUFYsU0FBQUE7SUFFSixPQUFBLHVCQURJVyxZQUZzQkY7O09BTXhCRztZQUNBQyxVQUFXSCxRQUFPRCxNQUFNSztJQUFpQixVQVB6Q04sT0FPV0UsUUFBT0Q7b0NBQU1LLFFBRHhCRjtHQUNnRjtZQUVoRkcsUUFBUUQ7SUFDVixJQUFJLGNBQUssV0FEQ0EsUUFDTjs7OzRCQUNhOzs7R0FBSTtZQUduQkUsTUFBTUMsR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBZ0M7WUFDbkRDLGFBQWFILEdBQUdDLEtBQUtiLEtBQUtjO0lBQU0sT0FOaENKOzZCQU1tRCxPQUFuQix1QkFBbkJFLEdBQUdDLEtBQUtiLEtBQUtjLEtBQTBEO0dBQUM7WUFDckZFLGlCQUFpQkosR0FBR0MsS0FBS2IsS0FBS2M7SUFBTSxPQUFBLHVCQUFuQkYsR0FBR0MsS0FBS2IsS0FBS2M7R0FBdUM7WUFDckVH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O09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkVBUztPQTdFQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BRUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdEVBVDtPQXNFQVM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FHQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BVUFDO09BOUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQXVEQU07T0FVQUM7T0FqRUFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkVBUTtPQTNFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxRkFTO09BckZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThGQVU7T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQTBEQU07T0E5RkFWO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0dBVztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVVBQztPQXBCQUY7T0FVQUM7T0FvQkFFO09BOUJBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQVZBRDtPQXdDQUk7T0FXQUM7T0FuREFMO09BQUFBO09BQUFBO09BQUFBO09BNkRBTTtPQVdBQztPQXhFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FtRkFRO09BbkZBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRGQVM7T0E1RkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUdBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBDQUo7T0FvQ0FJO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0JBRTtPQXBCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU1BQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQU5BRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWVBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWZBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BMkJBRztPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQTJCQUc7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BU0FDO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXJOQXhCO09BcU5Bd0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FsQkFGO09Ba0JBRTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZDQUs7T0E3Q0FMO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FBQUE7T0ErREFPO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdFQVE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F4RUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUZBUztPQWpGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EwRkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXpNQXZCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb09BMEI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwT0ExQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTZPQTJCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BN09BM0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BaUxBb0I7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BU0FDO09BL0RBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0F0REFOO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUE0Mk5BaUI7O09BcnlOQVQ7T0FFQUM7T0FFQUM7T0FHQUM7T0FBQUE7T0FBQUE7T0FPQUM7T0FPQUM7T0FPQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7SUFzeU5BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW55TkFGLGFBb3dOQUMsaUJBK0JBQzs7OztFOzs7Ozs7Ozs7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RW9CVSxPQUZWaEI7S0FDdkI7VUFDOENPO01BQy9DO09BQU07UUFEeUNDO1VBQ3pDOytCQXBYSkgsa0JBbVg2Q0UsaUJBRnZCUDtlQUV1QlE7T0ErSXhCLFdBakpDUixXQUFBQTtPQUV1Qk8sa0JBQUFDOzthQUFBQTs7UyxvQkFGakNGLEtBQVVOLFM7O1MscUJBQUFBO1MsY0FBQUE7UyxvQkFBVk0sS0FBVU47OztTLHVCQUFBQTtTLGNBQUFBO1Msb0JBQVZNLEtBQVVOOzs7U0FrQ3hCLFFBQUEsOEJBbEN3QkEsUUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FnRHhCO1VBQUEsS0FBQSw4QkFoRHdCQSxRQUFBQTtVQXFEeEIsS0FBQSw4QkFyRHdCQSxRQUFBQTtVQTBEeEIsS0FBQSw4QkExRHdCQSxRQUFBQTs7Ozs7O1U7VyxRLDhCQUFBQTs7OztXO2E7Ozs7Ozs7O1U7O1MsVTtTLG9CQUFWTTtTLG9CQUFBQSxLQUFVTjs7O1NBa0Z4QjtVQUFBLE9BQUEsOEJBbEZ3QkEsUUFBQUE7VUF1RnhCLE9BQUEsOEJBdkZ3QkEsUUFBQUE7VTs7OztVOzs7OztVLE07UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OztTQXNHeEIsVUFBQSw4QkF0R3dCQSxRQUFBQTtTLG9CQUFWTTtTLG9CQUFBQTtTLG9CQUFBQSxLQUFVTjs7O1MsY0FBQUE7UyxvQkFBVk07UyxvQkFBQUEsS0FBVU47OzttQkFBQUEsbUJBQUFBO1Msb0JBQVZNLEtBQVVOO1Msb0JBQVZNLEtBQVVOOzs7Uzs7WTtxQ0FFVWdCLFVBQUFBLFdBQUFBO1MsTzs7O0lBRGM7O0s7O007a0I7OztrQjtLLHFCO0k7STs7Ozs7OzttQyxTO3lCLFM7NkIsYzs7SSxXO0c7a0QsTztHOzZDLE87Rzs7Ozs7Ozs7SSxVO0ksVztHOztJLHFCO0c7OEIsTyx3Qzs7SSxPO0c7O0ksVTtJLE87Rzs7STs7RzsrQixzQjs7STs7O0ssbUI7SSxlOzs7O0ksZTs7Z0QseUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0lDb1A5Q0M7SUFxTUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBLzJCQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7OztJQUFBQztJQUFBQzs7Ozs7Ozs7Ozs7SUFPQUM7WUFJQUMsZ0JBQWdCQyxJQUFHekY7SUFDWCxJQUFONkQsTUFBTTtJQUNWLFdBRnFCN0QsR0FDakI2RDtJQUNKLE9BQUEsOEJBRmtCNEIsSUFDZDVCO0dBRXVCO1lBR3pCNkIsV0FBV0QsSUFBR3BDO0lBQU8sT0FOckJtQzthQU1XQztzQkFBa0M1QixLQUFPLE9BQS9CLDBCQUF3QkEsUUFBL0JSLE1BQTZEO0dBQUM7WUFFNUVzQyxrQkFBa0JDLFFBQU9ILElBQUdwQztJQUM5QixPQVRFbUM7YUFReUJDO3NCQUNINUI7Y0FBTyxPQUEvQiwwQkFBd0JBLFNBREorQixTQUFVdkM7YUFDZ0M7R0FBQztZQUc3RHdDLFlBQVlKLElBQUdwQztJQUFPLE9BWnRCbUM7YUFZWUMsYUFBa0M1QixLQUFPLE9BQS9CLDJCQUF3QkEsS0FBL0JSLE1BQThEO0dBQUM7R0FXckU7SUFBUHlDOzs7WUFFQUMsZUFBZUMsUUFBT0M7SUFDeEIsWUFIRUg7O1NBS09JLGNBRkxDLGFBRUtEOztLQUVLLElBQU5FLE1BQU07S0FQWk4sY0FPTU07U0FKSkQsYUFJSUM7O0lBSUUsSUFBTkMsTUFBTSxpQ0FSTkY7SUFTSixPQUFBLGtDQVZpQkgsUUFTYkssS0FUb0JKO0dBVW1CO1lBSXpDSyxvQkFBK0JOLFFBQU9DO1FBQXJCTSwyQkFDRkM7SUFDZjtLQUFXLElBQVBDLE9BaEJKVixlQWMrQkMsUUFBT0M7S0FHdEM7TUFFSSxJQURFUixLQUNGLDRCQUxhYyxNQUViRSxPQUtGLFdBTEVBLE1BRUVoQjtNQUdKOztXQUVlaUI7VUFBQUMsd0JBQUFEO1NBQUFDLHVEQUFBQTtpQkFSRkgsU0FRK0IsTUFBQSw0QkFBN0JHO01BQTBDLElBUjVDQyxZQUFBSjtNQUFBQSxVQUFBSTs7OztHQWxCSDtJQUFBLGVBQ1pkLE1BRUFDLGdCQWNBTzs7Ozs7WUFlRk8sZUFBZ0JOLE1BQUtPLGlCQUFnQkMsTUFBSzFEO0lBQzVDO0tBQW1CLFFBQUEsd0JBRERrRCxNQUFxQlE7S0FDekJ0QjtLQUFWdUI7SUFDSixJQUNHLFdBSG9CRixpQkFDVHJCLElBRDhCcEMsT0FJekMsdUJBSFdvQztVQUtYaUI7U0FBQUMsd0JBQUFEO0tBQ0EsdUJBTldqQjtLQU1YLElBQ0ssd0JBUEp1QjtLQVNELE1BQUEsNEJBSkFMOztJQUtILE9BQUEsd0JBVklLLFVBRG1DRDtHQVdmO1lBR3RCRSxlQUFlQyxXQUFVekIsSUFBR3BDO0lBQzlCLFdBRGlCNkQsV0FBVXpCLElBQUdwQztJQUM5QixPQUFBLHVCQUQyQm9DO0dBRU47WUFHbkIwQixTQUFVWixNQUFLUSxNQUFLMUQ7SUFBTyxPQW5CM0J3RDthQW1CVU47O2MsT0FMVlUsZUE5REF2Qjs7YUFtRWVxQjthQUFLMUQ7R0FBaUU7WUFDckYrRCxVQUFXYixNQUFLUSxNQUFLMUQ7SUFBTyxPQXBCNUJ3RCxlQW9CV04sTUE5RFhWLGFBOERnQmtCLE1BQUsxRDtHQUFpRDtZQUV0RWdFLGdCQUFnQkgsV0FBVXpCLElBQUdoQztJQUFRLE9BQUE7OzRCLE9BUnJDd0QsZUFRZ0JDLFdBQVV6QjthQUFHaEM7R0FBcUQ7WUFFbEY2RCxlQUFnQmYsTUFBS1EsTUFBS3REO0lBQzVCLE9BekJFb0Q7YUF3QmdCTjs7YyxPQUZoQmMsZ0JBdEVBM0I7O2FBd0VxQnFCO2FBQUt0RDtHQUNnQztZQUcxRDhELGdCQUFpQmhCLE1BQUtRLE1BQUt0RDtJQUM3QixPQTdCRW9EO2FBNEJpQk47O2MsT0FOakJjLGdCQWhFQXhCOzthQXNFc0JrQjthQUFLdEQ7R0FDZ0M7WUFPM0QrRCxVQUFXM0QsS0FBSU47SUFBcUIsV0FBQSw2QkFBekJNO0lBQWEsT0FBQSxvQ0FBVE47R0FBNkM7WUFDNURrRSxjQUFlNUQsS0FBSU47SUFBeUIsV0FBQSw2QkFBN0JNO0lBQWEsT0FBQSxvQ0FBVE47R0FBaUQ7WUFDcEVtRSxXQUFZN0QsS0FBSU47SUFBc0IsV0FBQSw2QkFBMUJNO0lBQWEsT0FBQSxvQ0FBVE47R0FBOEM7WUFDOURvRSxlQUFnQjlELEtBQUlOO0lBQTBCLFdBQUEsNkJBQTlCTTtJQUFhLE9BQUEsb0NBQVROO0dBQWtEO1lBRXRFcUUsYUFBYS9EO0lBQ2YsR0FEZUE7U0FJTmdFLFFBSk1oRSxRQUNYaUUsUUFHS0Q7O1NBSExDLFFBRVE7SUFHQSxPQUFBLGlDQUxSQTtHQUtXO1lBR2JDLGdCQUFpQmxFLEtBQUs3RCxHQUVYZ0ksTUFGbUJ6RTtJQUNoQyxJQUFJMEUsT0FWRkwsYUFTaUIvRCxNQUVOcUUsTUFBQUY7SUFDWDtLQUFNLFlBQUEsOEJBRkpDLE1BRDRCMUU7aUJBSXBCLE9BRkMyRTtLQUdTLElBQWI3RSxpQkFISThFLFFBR1MsV0FMRW5JLEdBRVhrSSxLQUdKN0U7S0FISTZFLE1BQUFDOztHQUtKO1lBR1BDLGdCQUFpQnZFLEtBQUs3RCxHQUFFdUQ7SUFDMUIsT0FYRXdFO2FBVWlCbEU7NkJBQzZCUixNQUFRLE9BQUEsV0FEaENyRCxHQUN3QnFELE1BQWM7O2FBRHBDRTtHQUNxQztZQUc3RDhFLGdCQUFpQnhFLEtBQUs3RCxHQUFFdUQ7YUFDdEIrRSxLQUFLSixLQUFJN0UsTUFBTyxXQUFBLFdBRElyRCxHQUNYcUQsT0FBSjZFLEtBQXdCO0lBQ3hCLFdBaEJQSCxnQkFjaUJsRSxLQUNmeUUsU0FEc0IvRTtJQUVqQixPQUFBO0dBQThDO1lBR3JEZ0Y7SUFBK0JDLGlCQUFpQkMsVUFBVUMscUJBQWlCQztJQUM3RTtPQURpQ0g7U0FnQmxCM0gsSUFoQmtCMkgsZ0RBZ0JsQjNIOzs7O09BaEI2QzZIO1NBYTdDRSxNQWI2Q0YsNkNBYTdDRTs7OztPQWI4REQ7U0FReERFLE1BUndERixtQkFReERFOztnQkFDSCxtQ0FUMkRGOztPQUEzQkY7U0FNbkNLLE1BTm1DTCw0QkFNbkNLOzs7SUFMZixXQUNFO0dBZUs7R0EwQlA7SUFBQTs7R0FHRTs7Ozs7O01BQXlFO09BRWhFLE1BQUE7VUFEZUgsZ0JBQVZGO01BQWtCLE9BL0NoQ0YscUNBK0NjRSxpQkFBVUU7S0FDRjs7WUFRcEJJO0lBQVcsSUFDRjFGO0lBQTZCLE9BQTdCQTtHQUFpQztZQUcxQzJGLGlCQUFZLElBQ05DLGtCQUFrQyxPQUFsQ0EsTUFBdUM7WUFHN0NDLGFBQWFDO0k7U0FDTEM7S0FBSyx3QkFBMkIsV0FEM0JELFdBQ0xDOzs7O0tBQ0tySjtLQUFMNEk7Z0JBVlJJLFNBVWFoSjtJQUNiOzs7eUJBQTRCLG1DQURwQjRJOztHQUlaOzs7WUFFSVUsVUFBVUMsWUFBV2pHO2FBQ2ZrRyxLQUFLRDtLQUNYLElBQ1lFLGlCQUZERixnQkFBQUEsZ0JBQUFBO1FBRFVqRyxTQUdUbUc7TUFDVixNQUFBLDRDQUhTRjtjQUFBQSxlQUtDO1NBRERHLFNBSkFIO0tBSWMsT0FBQSw0QkFKbkJDLE1BSUtFO0lBQ0c7SUFFaEIsSUFQUUYsS0FESUQsYUFTVixjQUFBOzs7O1NBR1dJO0tBQU8sV0FBUEE7O0dBQWU7R0E5RGpCO0lBQUE7b0JBa0NUWCxVQUlBQyxXQUlBRSwwQkFRQUc7O0dBaUJKOzs7Ozs7TUFBOEU7T0FPMUUsTUFBQTtVQUplVjtTQUFBQTtXQUZnQ0QseUJBQU5pQixRQUUxQmhCLFFBRmdCRixXQUVoQkU7T0FEZixPQTNGRko7dUJBMEZpQ0UsZUFBZ0JDLGtCQUFOaUI7O1VBRXJCQztNQUNwQixPQTdGRnJCLHdDQTRGc0JxQixvQkFBTGpCO0tBSUY7Ozs7Ozs7WUFXYmtCOztLQUFTQztLQUFpQkM7S0FBaUJDO0tBQWVDO0lBQzVELFNBQUlDLEtBQUtDO0tBQWUsV0FBQSx1REFBZkE7S0FBZSxPQUFBO0lBQXlDO0lBQ2pFLFlBRldMOztpQkFBaUJDOzttQkFBZ0NFOztxQkFBZkQ7d0JBQWxDRixXQUFpQkMsV0FBZ0NFLGVBQWZEO29CQUN6Q0U7a0JBQUFBO2dCQUFBQTtjQUFBQTs7WUFZRkUsYUFBYXJLLEdBQUVpSyxTQUFVLFdBQVpqSyxNQUFBQSxNQUFBQSxNQUFFaUssU0FBNEI7R0FyQjlCO0lBQUEsZ0JBUWJILFFBYUFPO0lBa0JOOzs7Ozs7OztHQUdFOzs7Ozs7TUFBNEU7T0FnQm5FLE1BQUE7O09BZk9DO09BQ1JDLE9BRFFEOzs7MkJBWW1CLG1DQVgzQkM7Ozs7MkJBVWlDLG1DQVZqQ0E7Ozs7MkJBUzZCLG1DQVQ3QkE7Ozs7MkJBUTZCLG1DQVI3QkE7O01BSUo7OztnREFMWUQ7S0FlTTtZQTZCZEUsY0FBY2xILE1BWU9tSDtJQVgzQixTQURvQm5IO0tBR0Y7TUFBWjFCLFlBQVkscUNBU1M2STtNQVJyQi9JLFVBQVUscUNBUVcrSTtLQVB6QixlQUZJN0ksV0FDQUYsVUFKYzRCOztJQU9GO0tBS0dJLFFBWkRKO0tBT2RvSCxjQUFZLHFDQUtTRDtLQUNsQjtPQUFBOztrQkFBbUJuSCxNQUFRLE9BYjlCa0gsY0Fhc0JsSCxNQUREbUgsTUFDZ0M7U0FEdEMvRztLQUpmaUgsUUFLRztLQUpIQyxZQUFVLHFDQUdXSDtJQUZ6QixlQUhJQyxhQUVBRSxZQURBRCxPQVJjckg7R0FVOEI7R0FXbEQ7Ozs7O1lBRUl1SCxZQUFZQyxPQUFPeEgsTUFBTyxpQkFBUEEsTUFBaUM7R0FReEQ7Ozs7O1lBRUl5SCxjQUFZRDtJQUNGO0tBRGdCRTtLQUFOMUg7S0FDbEJxSDtPQWxDQUgsY0FpQ2tCbEgsTUFDUyxxQ0FESDBIO0lBRTVCLG1CQURJTDs7R0EvQ0o7SUFBQTs7OEJBb0NFRTtnQ0FVQUU7Ozs7Ozs7O2FBNEJGRSxtQkFBbUJILE9BQU1iO0tBQzNCO01BRTRCLE9BQUEsdUJBSFBhO01BRUcsT0FBQSx1QkFGSEE7S0FDckIsV0FBd0IsdUJBREhBLG9CQUFNYjtJQUsxQjthQXlCS2lCLGNBWVVKLE9BWlVLLE9BQU8xSixLQUFLMkosS0FBSUM7S0FDMUMsR0FEaUM1SixTQXJCakI7UUFxQnNCMkosU0FwQnRCO0tBQ0YsSUFBVkUsVUFBVSxpQkFtQjRCRCxNQWxCdENFLFVBa0I2QjlKLE1BQUsySjtRQW5CbENFLFVBQ0FDLFNBQ3NCO0tBQUE7TUFrQnRCQyxVQW5CQUQ7TUFvQkFFLGtCQUFrQix1QkFVTlg7S0FUaEIsSUFBTSxJQVNnQlksVUFUaEIsaUJBU1VaLE9BWlVLLE9BQWdCRSxLQUN0Q0csU0FENkIvSjs7OztPQU1sQjtRQURLa0s7UUFDZEMsU0FBUyx1QkFNQ2Q7UUFMVmUsV0FQMkJwSyxPQU0zQm1LLFNBSkZIO09BTUYsV0FIa0JFLFFBbkNsQlYsbUJBMENjSCxPQUxWZTs7OztNQWJJO09BRHVCQztPQUFKNUosUUFPSVQsT0FVSSx1QkFFckJxSixTQVZaVztPQWYwQnJCLE1BT3BCLG1DQUR1QjBCO3FCQUUzQixzQ0FGMkJBO09BSW5CLE9BQUEsc0JBVmdCMUI7TUFDWjtPQUFkMkIsa0JBbEJGZCxtQkEwQ2NILE9BbkJhNUk7T0FKekI4SixrQkFGMEI1QixvQkFDMUIyQjtNQUVKLE1BQUEsNkNBRElDOztLQXlCYSxJQUFYQztjQURGQyxVQUVHekssS0FBSzJKLEtBQUlDO01BQ1osT0FGRVk7Z0JBR0c7aUJBSEhBOzs7Z0JBZEFmLGNBWVVKLE9BQU1ZLFNBR2ZqSyxLQUFLMkosS0FBSUM7S0FLOEI7S0FFN0IsSUFBYmMsYUFBYSx1QkFWRHJCO0tBV2hCLFdBRElxQixZQVRBRDtJQUhrRjthQWdCcEZFLFdBQTBDaEIsS0FBSUM7S0FDaEQ7TUFEVWdCLDJCQUFZO01BRWR0QyxZQUZFc0M7TUFFbUJyQyxZQUZuQnFDO01BRThCbkMsZ0JBRjlCbUM7TUFDRHBDLFVBRENvQztNQUNONUssVUFDSXNJLFdBQXFCQyxXQUFXRTtNQUlwQ1ksUUFBUSwyQkFMUnJKO01BTUEwSjtLQUNKLEdBUjRDQztVQVVuQ3RLLElBVm1Dc0ssUUFReENrQixRQUVLeEw7O1VBRkx3TCxRQUdRLGlCQVhvQ2pCLE9BQ3ZDcEI7S0FZVCxPQXZDTWlCLGNBZ0NGSixPQUNBSyxPQU5LbEIsU0FPTHFDLE9BUjRDakI7O0lBekQ5QyxXQXlEQWU7Ozs7OztJQXZJRkc7SUE4SklDO1lBRUlDLGlCQUFpQjNCLE9BQU1LLE9BQU1FLEtBQUtHLFNBQVMvSjtJQUNqRCxJQUQ2QmlLLFVBQUFQLE9BQW9CakosUUFBQVQ7SUFDakQ7UUFEaURTLFFBQVRzSixTQUtuQyxPQUx3QkU7S0FHZjtNQUhlZ0I7UUFHZjttQkFIUzVCLDhCQUFZTyxLQUFjbkosUUFBcEJ3SjtNQUFvQmlCLFFBQUF6SztLQUFwQndKLFVBQUFnQjtLQUFvQnhLLFFBQUF5Szs7R0FLdkM7OztxQ0FyS1pKLGVBOEpJQyxRQUVJQztJQVNSRztJQUNBUjs7OztJQTFLQVM7SUFpTElDO1lBRUlDLG1CQUFpQmpDLE9BQU1LLE9BQU1FLEtBQUtHLFNBQVMvSjtJQUNqRCxJQUQ2QmlLLFVBQUFQLE9BQW9CakosUUFBQVQ7SUFDakQ7UUFEaURTLFFBQVRzSixTQUtuQyxPQUx3QkU7S0FHZjtNQUhlZ0I7UUFHZjtxQkFIUzVCLDhCQUFZTyxLQUFjbkosUUFBcEJ3SjtNQUFvQmlCLFFBQUF6SztLQUFwQndKLFVBQUFnQjtLQUFvQnhLLFFBQUF5Szs7R0FLdkM7Ozs7NkJBeExaRSxlQWlMSUMsVUFFSUM7SUFTUkM7Ozs7SUE1TEFDO0lBbU1JQztZQUVJQyxtQkFBaUJyQyxPQUFNSyxPQUFPRSxLQUFjRyxTQUFTL0o7SUFDM0QsSUFENkJpSyxVQUFBUCxPQUE4QmpKLFFBQUFUO0lBQzNEO1FBRDJEUyxRQUFUc0osU0FLN0MsT0FMd0JFO0tBR0M7TUFBQSxPQUFBLGNBSE1MLEtBQXVCbko7TUFBOUJ3SyxVQUdmLHNCQUhTNUIsYUFBTVk7TUFBOEJpQixRQUFBeks7S0FBOUJ3SixVQUFBZ0I7S0FBOEJ4SyxRQUFBeUs7O0dBS2pEOzs7OzZCQTFNWk0sZUFtTUlDLFVBRUlDO0lBU1JDOzs7O0lBOU1BQztJQXFOSUM7WUFFSUMsbUJBQWlCekMsT0FBTUssT0FBT0UsS0FBY0csU0FBUy9KO0lBQzNELElBRDZCaUssVUFBQVAsT0FBOEJqSixRQUFBVDtJQUMzRDtRQUQyRFMsUUFBVHNKLFNBSzdDLE9BTHdCRTtLQUdDO01BQUEsT0FBQSxjQUhNTCxLQUF1Qm5KO01BQTlCd0ssVUFHZixzQkFIUzVCLGFBQU1ZO01BQThCaUIsUUFBQXpLO0tBQTlCd0osVUFBQWdCO0tBQThCeEssUUFBQXlLOztHQUtqRDs7Ozs2QkE1TlpVLGVBcU5JQyxVQUVJQztJQVNSQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFJQUMsY0FBZXBCLFdBQVVxQjtJQUMzQixnQkFDS2pNLEtBQUsySixLQUFJQztLQUNaLEdBSGVnQjtVQU1Oc0IsY0FOTXRCO01BTU5zQixpQkFKTmxNO1VBQ0NtTSxjQUdLRDs7O1VBSExDLGNBRVEsbUNBSFRuTTtLQVFILE9BQUEsV0FWeUJpTSxjQUdyQkUsa0JBREl4QyxNQUFJQyxLQVE0QztHQUFBO1lBSXhEd0Msa0JBQW1CQyxZQUFZQztJQUkzQixZQUFBLFdBSmVELGtCQUFZQzsyQkFLekJ6SyxpQkFBWSxXQUFaQTtRQUNBNkk7SUFBa0IsV0FBbEJBO0dBQWtDO1lBR3hDNkIsZUFBZU4sVUFBVXJCLFdBQVU0QjtJQUNyQztLQUFJbkssTUFBTTtLQUNHb0ssZUF6QlhULGNBdUJ5QnBCLFdBQVZxQjtLQUVKSSxhQUFBSTtJQUNYO0tBQUEsSUFBTSxJQUtKbk4sSUFMSSx1QkFINkJrTjs7OztNQUsxQixZQWRUSixrQkFXV0M7eUJBS0ssTUFBQTtVQURSeEs7TUFBUSxPQUFSQTs7S0FHTixlQVJBUSxRQU9BL0M7S0FFTzs7UUFBQSxXQVJFK00sa0JBUXVCLDZCQVRoQ2hLOzhCQVVTcUsscUJBQVksT0FBWkE7U0FUQUM7S0FBQU4sYUFBQU07O0dBWTJCO1lBR3RDQyxXQUFZaEMsV0FBVTRCO0lBQUssT0FqQjNCRCxlQWpGQTVCLE9Ba0dZQyxXQUFVNEI7R0FBdUM7WUFFN0RLLG9CQUFvQlosVUFBVUssUUFBUTFCLGdCQUFxQzRCO0lBQ3pEO0tBRGdDbksscUJBQU07S0FDdER5SztLQUNBQyxVQUFKLHFCQUZvRDFLO0tBR3RCMkssUUF1QnBCLHVCQTFCbUVSLElBQXpCbkssUUFFaEQwSztLQUNTRSxlQTdDWGpCLGNBMENzQ3BCLFdBQWxCcUI7S0FHVEksYUFBQVk7S0FBWWpOO0tBQUsySixNQUFBcUQ7SUFDNUI7YUFENEJyRDtNQWVwQixjQTlDUnlDLGtCQStCV0MsWUFIbUJDOztXQW1CdkJJO09BQVEsV0FBUkEsUUFsQkxJOztVQW9CUXBDO1dBQUFBLG1CQXBCUm9DO01BdUJPO09BQUEsT0FBQSw2Q0FIQ3BDO09BRUosT0FBQTtNQUFBLE9BQUE7O0tBakJFOztRQUFBLFdBSEcyQixZQUFZck0sS0FBSzJKLEtBR0MsNkJBTnFCdEg7O1VBT0w2Six3QkFBbkNySyxpQkFKYTJHLFVBSXNCMEQ7TUFOM0NZLHVCQU1RakwsTUFOUmlMO01BU21CO09BRGJJLFdBTmUxRSxVQUFBeEk7T0FBWjJNLGVBN0NYWCxrQkFpRDZDRSxjQVB6QkQ7U0FTWmlCLGFBTm9CdkQ7T0FVUixJQVZRd0QsVUFVUix1QkFidURYLElBQXpCbkssUUFFaEQwSztPQUNTVixhQUFBTTtPQUFZM007T0FBSzJKLE1BQUF3RDs7O1dBQUF0QyxRQUFBbEIsTUFNcEJ1RDtPQU5HYixhQUFBTTtPQUFZM00sTUFBQXdJO09BQUttQixNQUFBa0I7Ozs7TUFhNEI7T0FiN0M0QjtPQUFpQlcsUUFhNEIsdUJBaEJtQlosSUFBekJuSyxRQUVoRDBLO01BQ1NWLGFBQUFJO01BQVl6TTtNQUFLMkosTUFBQXlEOzs7O1lBNEI1QkMsZ0JBQWlCekMsV0FBV3ZJLEtBQUltSztJQUNsQyxPQWhDRUssb0JBcEdBbEMsY0FtSWlCQyxXQUFXdkksS0FBSW1LO0dBQ3NCO1lBR3REYyxZQUppQjFDLFdBQVd2SSxLQUFJbUs7SUFDbEMsV0FoQ0VLLG9CQXBHQWxDLGNBbUlpQkMsV0FBV3ZJLEtBQUltSztJQUlVLE9BQUE7R0FBb0M7WUFJOUVlLG9CQUFvQkMsS0FBSXZCLFVBQVNLLFFBQU9tQixTQUFRQyxTQUFROUQ7SUFDcEQsWUFBQSxXQURvQnFDLGdCQUFnQ3JDOztLQUdqRDtNQURLZ0I7TUFBTi9JO01BQ0MsVUFBQSxXQUhpQm9LLGNBRVpyQixlQUY0Q2hCOztNQU1uRCxVQUFBLG9DQU5lNEQ7TUFNZixPQUFBOztzQkFHa0QsT0FQakQzTDtLQVlELFVBQUEsb0NBZGUyTCxLQUVSNUM7S0FZUCxPQUFBOztJQUtFO0tBREV5QjtLQUNGLFVBdEZQRCxrQkFxRlNDLFlBbEJ3QkM7NkJBb0IzQkkscUJBQVEsT0FBUkE7SUFFa0I7S0FEZmhDO0tBQ0ZpRCxpQkFBaUIsNkNBRGZqRDtLQU9ELE9BQUEsV0E1QndDZ0QsU0FBUTlELFFBNEJqQyxXQTVCaUI2RCxTQUFnQjdEO0tBd0JuRCxPQUFBLG9DQXhCZTRELEtBc0JiRztJQUVGLE9BQUE7R0FJa0M7WUFHdkNDLFVBQVVoRTtJQUFNLE9BL0JoQjJEOzthQTNJQTVDOzs7O2FBMEtVZjtHQUE0RTtZQUN0RmlFLGVBQWVqRSxLQUFNLE9BQUEsMkJBQU5BLEtBQXVDO1lBRXREa0UsaUJBQWlCQyxNQUFLL04sS0FBSTJKO0lBQzVCLElBQUlDLE1BQU0sa0JBRGtCRCxNQUU1QixNQUY0QkEsYUFDbEI7O1NBQ1ZxRTs7TUFDRSxlQUZFcEUsS0FDSm9FLEdBQ2tCLGNBSENELE1BQUsvTixNQUV4QmdPO01BQ0UsVUFERkE7aUJBQUFBO01BQUFBOzs7SUFHQSxPQUFBLDZCQUpJcEU7R0FJc0I7R0FHVjtJQUFkcUU7TUFBYzs7R0FDVCxzQkFETEE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBR0FDLGFBQWFIO0lBQ2YsT0E5Q0VSOzthQXZHQTVCO2FBaUpBc0M7O2FBUkFIO2FBV2FDO0dBT1Q7WUFLSkksbUJBQW1CZCxpQkFBaUJoTCxLQUFJa0Q7SUFDakMsSUFBTGlILEtBQUssdUJBRGlDakg7SUFFMUM7S0FDYyxJQUFSdEQsUUFBUSxXQUhPb0wsb0JBQWlCaEwsS0FDbENtSztLQUdGLHVCQUhFQTtLQUdGLE9BREl2Szs7VUFJSm1NO1NBQUFDLDBCQUFBRDtLQUNBLHVCQVBFNUI7S0FRRixNQUFBLDRCQUZBNkI7O0dBRVM7WUFHVEMsZUFBZ0JqTSxLQUFJa0Q7SUFBTyxPQVozQjRJLG1CQWpFQWQsaUJBNkVnQmhMLEtBQUlrRDtHQUFtRDtZQUN2RWdKLFdBRGdCbE0sS0FBSWtEO0lBQU8sVUFaM0I0SSxtQkFqRUFkLGlCQTZFZ0JoTCxLQUFJa0Q7SUFDWSxPQUFBO0dBQTBCO1lBRzFEaUosY0FBY3ZDLG9CQUFxRDFHO0lBQ3JFO0tBRDJCa0o7S0FBaUJwTSxxQkFBTTtLQUM5QzBLLFVBQUoscUJBRDRDMUs7S0FFeENtSyxLQUFLLHVCQUY0RGpIO0lBNENyRTtLQUNrQixJQTFDTG1KLGVBN0pYMUMsaUJBMEpjQzs7O1VBR0hJLGFBQUFxQztNQUNYO09BQVUsSUFBTi9FLE1BQU0sdUJBRlI2QyxJQUZ3Q25LLFFBQ3hDMEs7T0FJRixTQURJcEQ7UUFHSSxZQW5KUnlDLGtCQStJV0M7K0JBS0p4SyxpQkFxQ0g4TSxTQXJDRzlNO1FBT0U7U0FOQzZJO1NBTUQsTUFBQSw2Q0FOQ0E7U0FFSjtXQUFBLG9DQWJOMUgsbUJBRW1FdUM7U0E2Qy9Eb0osU0FsQ0U7OztPQU1FOztVQUFBLFdBZEd0QyxlQUNQMUMsS0FhMkIsNkJBakJXdEg7O1dBRy9CdU07T0FBQXZDLGFBQUF1Qzs7VUFzQ0RsQyxxQkF2Qm1DOUIsd0JBQ1RwQyxVQURTb0M7TUFBaUIsR0FsQnJDNkQ7T0F1Q0o7UUFwQkd4QixlQTdLeEJqQixrQkE0SzZDcEIsWUFsQi9CcUI7UUFtQjJCZSxRQWZyQ3JELE1BZWdDbkI7UUFBWm1FLGVBQUFNO1FBQVlqTixNQUFBd0k7UUFBS3FDLFFBQUFtQztPQUNuQztRQUFNOztXQUFBO2FBRFlMLGNBQVkzTSxLQUFLNkssT0FDUiw2QkFwQlN4STs7U0F1QmhDO1VBQUEsTUFBQSxvQ0F6QlZXLG1CQUVtRXVDO1VBNkMvRG9KLFNBdEJNOzs7UUFFUTtTQU5NbEM7U0FLVm9DO1NBQ0Z6QixRQUFNLHVCQXZCaEJaLElBRndDbkssUUFDeEMwSztRQXlCTSxRQURJSztrQkFERXlCLGtCQXFCVkYsU0FKTWpDO1NBTEs7VUFBQSxNQUFBLDZDQVpEbUM7VUFRRjtZQUFBOzs7Y0FsQ1o3TDs7O2NBRW1FdUM7VUE2Qy9Eb0osU0FiUTs7O1FBYlloQyxlQUFBRjtRQUFZek07UUFBSzZLLFFBTTdCdUM7Ozs7V0FvQlJ1QixTQUpNakM7O0tBS1YsdUJBNUNFRjtLQTRDRixPQURJbUM7O1VBSUpQO1NBQUFDLDBCQUFBRDtLQUNBLHVCQWhERTVCO0tBaURGLE1BQUEsNEJBRkE2Qjs7O1lBS0FTLFVBQVdMLFFBQVFwTSxLQUFJa0Q7SUFBTyxPQXREOUJpSixjQXBOQTdELE9BMFFXOEQsUUFBUXBNLEtBQUlrRDtHQUE0Qzs7O0lBcGlCakV3SjtJQUlBQztJQUlBQzs7SUFRQUM7Ozs7Ozs7WUE0aEJBQyxrQkFBaUJ2RSxXQUFXdkksS0FBSW1LO0lBQ2xDLE9BL0tBSyxvQkFsRkF0Qix3QkFnUW1CWCxXQUFXdkksS0FBSW1LO0dBQ3NCO1lBR3RENEMsYUFBWXhFLFdBQVU0QjtJQUFLLE9Bck03QkQsZUEvREFoQixpQkFvUWNYLFdBQVU0QjtHQUF1QztZQUM3RDZDLGNBTGlCekUsV0FBV3ZJLEtBQUltSztJQUNsQyxVQS9LQUssb0JBbEZBdEIsd0JBZ1FtQlgsV0FBV3ZJLEtBQUltSztJQUtVLE9BQUE7R0FBb0M7WUFFOUU4QyxZQUFVMUY7SUFDWixPQS9JQTJEOzthQXpIQWhDOzs7O2FBdVFZM0I7R0FDb0U7WUFHOUUyRixlQUFheEI7SUFDZixPQW5KQVI7O2FBckZBeEI7YUErSEFrQzs7YUFSQUg7YUFnSGVDO0dBT1Q7WUFHSnlCLGlCQUFnQm5OLEtBQUlrRDtJQUFPLE9Bbkc3QjRJLG1CQThFRWdCLG1CQXFCZ0I5TSxLQUFJa0Q7R0FBbUQ7WUFDdkVrSyxhQURnQnBOLEtBQUlrRDtJQUFPLFVBbkc3QjRJLG1CQThFRWdCLG1CQXFCZ0I5TSxLQUFJa0Q7SUFDWSxPQUFBO0dBQTBCO1lBQzFEbUssWUFBV2pCLFFBQVFwTSxLQUFJa0Q7SUFBTyxPQXJGaENpSixjQWxNQWpELGlCQXVSYWtELFFBQVFwTSxLQUFJa0Q7R0FBNEM7WUFFbkVvSyxLQUFLblIsR0FBRXNKO0lBQ0UsSUFBUGpHLE9BQU8sV0F0a0JUa04sWUFxa0JPakg7SUFFVCxJQUFJLDBCQUFRLFdBRkx0SixHQUNIcUQsUUFDQTtVQUMrQnFEO1NBQUFDLHdCQUFBRDtRQUFBQywwREFBQUE7S0FDMUI7TUFEYXlLLFdBQWF6SztNQUFsQmtKLE1BQWtCbEo7TUFDMUIsUUFBQSxXQXpqQlArSixhQXFqQk9wSCxZQUdhOEg7aUJBRVQsTUFBQSw0QkFGc0J6SztTQUd6QjBLO0tBQWtCLDBCQUhYeEIsS0FHUHdCOztHQUErQztZQUd2REMsYUFBY3ZLLE1BQU04SSxLQUFJdkc7SUFDMUI7S0FBSUwsUUFBUSxXQTNrQlZ1SCxhQTBrQndCbEg7S0FFMUIsUUFESUw7S0FDc0JsSztLQUFOd1M7S0FDaEJ2QyxNQUFNLG9DQUhNakksTUFFSXdLLE1BQU14UztLQUVnQixNQUFBLFdBbGxCeEN3UixZQThrQndCakg7SUFJMUIsd0NBREkwRixLQUhrQmE7R0FJd0M7R0E1Qy9DOzs7O09BdGlCYlU7T0FJQUM7T0FJQUM7O09BUUFDO09BNFJGM0Q7T0FvQ0FRO09BNE5Fb0Q7T0FJQUM7T0FDQUM7T0FFQUM7T0FJQUM7T0FVQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FTQUc7WUFRRkUseUJBbER1QnpLLE1Ba0R5Qy9HO0lBQ3BDO0tBRFhpUTtLQUFpQnBNLHFCQUFNO0tBbERyQmdFLFlBa0RlaEU7S0FsRHZCNE4sZUFrRE14QjtLQUNmNU0sT0F6R0YyTSxjQXBOQTdELE9BMFFXc0YsVUFBUTVKLE9BQUlkO0lBb0R6QixJQUFJLDBCQUFRLFdBRnNEL0csR0FDOURxRCxRQUNBOzs7O0tBQ2tDLFVBQUEsOEJBSG5CNE0sYUFBaUJwTSxNQWxEWGtEO0tBcURhLE9BQUEsMEJBSDRCL0c7OztZQU1oRTBSLGVBQWdCM0s7SSwrQkFDUjJDLGdCQUFPLE9BQVBBOzBCQUNLSix1QkFBTHVHO0lBQTBCLE1BQUE7WUFBQSwwQkFGbEI5SSxNQUVSOEksS0FBS3ZHOztZQUdicUksbUJBQW9CMUIsUUFBUXBNLEtBQUlrRCxNQUFLL0c7SUFDdkMsT0FORTBSLGVBS2dDM0ssTUFYaEN5SyxlQVdvQnZCLFFBQVFwTSxLQUFJa0QsTUFBSy9HO0dBQ2tCO1lBR3ZENFIscUJBM0hvQjdLLE1BMkg0Qi9HO0lBQ2xCO0tBRFo2RCxxQkFBTTtLQTNIUmdFLFlBMkhFaEU7S0FDaEJILFlBeElGaU0sbUJBakVBZCxpQkE2RWdCaEgsT0FBSWQ7SUE2SHRCO0tBQUk7O1FBQUE7O21CQUFrQjFELE1BQVEsdUJBQVEsV0FGWXJELEdBRTVCcUQsT0FBd0I7VUFEMUNLO0tBQ0E7O1VBQ2lCZ0Q7U0FBQUMsd0JBQUFEO1FBQUFDLDBEQUFBQTtLQUNaLElBSUprTCxrQkFKSSw4QkFKV2hPLE1BM0hFa0Q7UUFtSWpCOEs7TUFDQSxPQUFBOzt3QkFBa0J2STtnQkFBYyxPQUFBLDBCQVRhdEosR0FTM0JzSjtlQUF5QztlQUQzRHVJO0tBREEsTUFBQSw0QkFKZ0JsTDs7O1lBU25CbUwseUJBdklvQi9LLE1BdUlnQy9HO0lBQ3RCO0tBRFI2RCxxQkFBTTtLQXZJWmdFLFlBdUlNaEU7S0FDcEJILFlBcEpGaU0sbUJBakVBZCxpQkE2RWdCaEgsT0FBSWQ7SUF5SXRCLElBQUksVUFBQSw0QkFGa0QvRyxHQUNsRDBELFlBQ0E7VUFDaUJnRDtTQUFBQyx3QkFBQUQ7UUFBQUMsMERBQUFBO0tBQ1osSUFJSmtMLGtCQUpJLDhCQUplaE8sTUF2SUZrRDtRQStJakI4SztNQUNBLE9BQUE7O3dCQUNPdkk7Z0JBQWMsT0EvQnhCb0k7eUJBbEhvQjNLLE1BaUp5QiwwQkFWTy9HLEdBVTFDc0o7ZUFBZ0U7ZUFGdkV1STtLQURBLE1BQUEsNEJBSmdCbEw7OztZQVduQm9MLG1CQUFtQjNDLFdBQVU0QyxpQkFBZ0I1RyxLQUFJcEw7SUFDeEMsSUFBUHFELE9BQU8sV0FEVStMLFdBQTBCaEU7SUFFL0MsSUFBSSwwQkFBUSxXQUZ1Q3BMLEdBQy9DcUQsUUFDQTs7OztLQUNrQyxVQUFBLFdBSFAyTyxpQkFBZ0I1RztLQUdULE9BQUEsMEJBSGFwTDs7R0FHUTtZQUd6RGlTLGVBQWU3RyxLQUFJcEw7SUFBSSxPQU52QitSLG1CQTNMQTNDLDBCQWlNZWhFLEtBQUlwTDtHQUEwRDtZQUU3RWtTLGtCQUFrQjNDLE1BQUt2UDtJQUN6QixPQVRFK1IsbUJBN0tBckMsNkJBcUxrQkgsTUFBS3ZQO0dBQ29DO0dBVTdEO0lBQUE7O0dBR0U7Ozs7OztNQUFrRTtPQU96RCxNQUFBO1VBTkhtUztNQUNGLE9BL3NCSjVKO21CQThzQk00SixpQkFBQUEsYUFBQUE7S0FNZ0I7R0FqQkU7SUFBQTs7Ozs7WUFxQnhCQyx1QkFBdUJoRCxXQUFVaEUsS0FBSXBMO0lBQzVCLElBQVBxRCxPQUFPLFdBRGMrTCxXQUFVaEU7SUFFbkMsSUFBSSxVQUFBLFdBRm1DcEwsR0FDbkNxRCxPQUNBOzs7O1NBQ2tCbUcsbUJBQUxxRztLQUNmLE1BQUE7NENBRGVBLEtBRmJ4TSxNQUVrQm1HOztHQUNtRDtZQUd2RTZJLG1CQUFtQmpILEtBQUlwTDtJQUFJLE9BUDNCb1MsdUJBNU5BaEQsV0FtT21CaEUsS0FBSXBMO0dBQTBDO1lBQ2pFc1Msc0JBQXNCL0MsTUFBS3ZQO0lBQUksT0FSL0JvUyx1QkE5TUExQyxjQXNOc0JILE1BQUt2UDtHQUE4QztZQUV6RXVTLHdCQUF3Qm5ILEtBQUlwTDtJQUNsQixJQUFSeUQsUUF0T0Y0TCxlQXFPd0JqRTtJQUUxQixPQUFBOztzQkFBYy9IO2NBQVEsT0FacEIrTyxnQ0FZZ0R2UixHQUFLLE9BQUxBLEVBQU0sR0FBMUN3QyxNQUZnQnJEO2FBRWtDO2FBRDVEeUQ7R0FDbUU7WUFPckUrTztJQUFVLGlDQUNDO0lBQ047R0FBSztZQWtCTkMsZ0JBQWdCcFAsTUFBTXFQO0lBQzVCLEdBRHNCclAsU0FBTXFQLFdBRXZCO2FBRmlCclAsU0FLUjtRQUNMc1AsTUFOYXRQLFNBT0xtTSxlQURSbUQ7O2lCQUVLO0tBRUksSUFETDVTLGNBQUw2UyxjQUNJbEosTUFWTitJLGdCQVNFRyxHQVRvQkY7ZUFVaEJoSixnQ0FBQUE7Z0JBSEs4RjtNQUFBQTtjQUVKelA7OztLQUlpQix3QkFOYnlQLEdBR0w5Rjs7R0FLRztZQUdUbUosWUFBWXhQLE1BQU15UDtJLDhCQUNaLE9BRFlBOzBCQUVYQyxrQkFBTHZSO0lBQ04sU0FIZ0I2QjtLQUlILE9BQUE7UUFDTHNQLE1BTFF0UCxTQU1BNkUsU0FBSWpHLFFBSmRULGVBR0VtUjs7O01BRUssT0FBQTtTQUNOQyxnQkFBSzdTO0tBQU8sU0FGQ2tDO01BR3VCLElBQS9CK1Esa0JBQStCLFVBVHZDSCxZQVFHRCxHQVJlRSxPQUVYQyxRQU9DQztNQUFLLFdBQUssNEJBSE45Szs7S0FFb0IsWUFGaEJqRyxlQUVnQixZQUE3QjJRLEdBRlMxSztLQUFBQTtLQUFJakc7ZUFFUmxDOzs7Ozs7T0EvNUJadUY7T0FBQUQ7OztPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDs7Ozs7Ozs7OztPQU9BYTtPQUlBQztPQU1BRTtPQUVBQztPQUlBRTtPQUFBQTs7T0EwQ0FnQjtPQWNBSTtPQUtBRTtPQUNBQztPQUFBQTtPQUVBQztPQUVBQztPQUlBQztPQUFBQTtPQVFBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVNBRztPQVVBSztPQUlBQztPQUtBRTs7Ozs7OztPQWlWQW9FO09BQ0FSOztPQWtCQVk7O09Ba0JBSTs7T0FrQkFJO09BSUFDO09BY0FJO09BU0FHO09BaUJBSztPQUVBQztPQStCQVE7T0FJQUM7T0FJQUM7T0ErQkFLO09BQ0FDO09BRUFDO09BUUFHO09BR0FDO09BWUFDO09BWUFHO09BQ0FDO09BQ0F2TDtPQUVBd0w7T0FzREFNOztPQWtEQWtCO09BTUFFO09BS0FDO09BSUFDO09BWUFFO09BY0FDO09BTUFFO09BRUFDOztPQXlCQUU7T0FPQUM7T0FDQUM7T0FFQUM7T0FPQTlOO09BRUErTjtPQW9CSUM7T0FrQkFJOzs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztZQ242QkZySSxLQUFLekssR0FBR0MsR0FBSSxPQUFBLDRCQUFKQSxHQUFIRCxHQUFvQjtZQUN6QkQsSUFBSUMsR0FBR0M7SUFBYSxVQUFBLDRCQUFiQSxHQUFIRDtJQUFnQixPQUFBO0dBQWtCO0dBRjlCO0lBQUEsV0FDUnlLLE1BQ0ExSzs7Ozs7OztJQVVGbVQ7SUFHRWhMO0lBRFMsWUFDVEE7O1lBMEJBaUwsU0FBTzlKLEdBQUUrSixNQUFNQyxJQUFNLE9BQWRoSyxFQUFlO1lBQ3RCaUssS0FBS0MsR0FBR3RULEdBQUVtVCxNQUFLQztJQUFLLE9BQUEsV0FBWnBULEdBQWMsV0FBakJzVCxHQUFLSCxNQUFLQyxLQUFMRCxNQUFLQztHQUEwQjtZQUV6Q0csSUFBSUosTUFBS0c7SUFDWCxPQUVFO2FBSFNBLEdBQUxIO0dBT0g7WUFHREssVUFBVUwsTUFBS0MsSUFBR3RTO0lBQ3BCLFlBRGlCc1MsT0FDWHJVLGdCQUFhQztJQUNuQixXQUZZbVUsTUFBUXJTO2tCQUFBQTtlQUFIc1MsZ0JBQ0VwVTtlQURGb1UsWUFDRXBVLFNBQWJEO0dBSTJDO1lBRy9DMFUsWUFBWU4sTUFBS0MsSUFBR2hJO0lBQ3RCLElBQUlzSSwwQkFEa0J0SSxNQUV0QixNQURJc0k7O1NBQ0psRTs7TUFWRWdFLFVBUVlMLE1BQUtDLElBR0MsZ0JBSEVoSSxLQUV0Qm9FO01BQ0UsVUFERkE7aUJBQUFBO01BQUFBOzs7O0dBRUk7WUFHRm1FLFdBQVdSLE1BQUtDLElBQUd0UyxHQUFHNFM7SUFBSSxPQVAxQkQsWUFPV04sTUFBS0MsSUFBOEIsNkJBQXhCTSxHQUFINVM7R0FBNEM7WUFFL0Q4UyxRQUFRVCxNQUFNVSxRQUFPVCxJQUFPVSxPQUFPQyxnQkFBZ0JDO0lBQ3JEO1dBRHVCWjtLQUNHLE1BQUEsa0NBRFZTLFFBQWNDO0tBQzFCRyxVQUFVO0lBQ2QsR0FGcUNGO2VBQWRYOztNQU9uQjs7T0FEZ0NjO09BQXpCQztPQUNQLE1BQUEsV0FOQUYsU0FLT0U7T0FBeUJDLHlCQUFBRjtPQUFBRyxtQkFBQUQ7O1VBQUFDO1NBSmhDQyxpQ0FJZ0NEOzs7U0FKaENDLGlDQUZpQ1A7SUFhOUI7S0FGSFEsNkJBVkFOLGVBRG1CYjtLQWFoQixVQUFBLGtDQVpIYSxTQURtQmI7S0FZbkJvQjtjQURBRCw4QkFUQUQ7T0FVQUU7O01BU0lDLGNBckJlckI7TUFzQmZzQixZQURBRCxVQXBCSlI7TUFnQldVLGdCQUlQRixTQXBCSlI7TUFnQkFXLGNBS0lGOztTQUxPQyxZQWhCWFYsU0FnQkFXO09BakJtQnhCLFdBaUJSdUI7U0FZVGpCLElBWlNpQixlQWpCUXZCO0tBRnJCTyxXQUVRUixNQUFhQyxRQTZCakJNOztPQTdCaUJOLFdBaUJSdUI7U0FnQlRFLE1BaEJTRixlQWpCUXZCO0tBRnJCTyxXQUVRUixNQUFhQyxRQWlDakJ5Qjs7SUFFQyxLQUFBLFdBbEJRRixXQWpCUXZCO0tBbUN2QixNQUFBO09BbkNxRFksY0FBOUJaLFFBQUFBO0lBQUFBLFlBQUFBLFdBaUJuQndCLGlCQWpCbUJ4Qjs7R0FzQ29EO1lBR3JFMEIsU0FBUzNCLE1BQU1VLFFBQVFULElBQVlyVDtJQUN6QyxTQUR5Q0E7U0FZZGdWLFlBWmNoVixNQVlwQjJCLE9BWm9CM0IsTUFZakNpVixjQVppQ2pWO0tBekN2QzZULFFBeUNhVCxNQUFNVSxRQUFRVCxJQVlyQjRCO0tBRWEsSUFBZkMsZUFBZSxrQ0FkUTdCLE9BQUFBO0tBMUQzQkksVUEwRGFMLE1BQWNDO0tBZ0IzQjs7T0FKbUIxUjtnQkFJSUUsS0FBTyxPQUs5QnNULFdBckJhL0IsTUFjVDhCLGNBZHVCN0IsSUFnQkp4UixLQUFrRDtLQXpEekVnUyxRQXlDYVQsTUFBTVUsUUFBUVQsSUFZRjJCO0tBdEV6QnZCLFVBMERhTCxNQUFjQztLQWtCM0I7O1FBaEJtQitCLFdBRm9CcFYsTUFFMUJxVixPQUYwQnJWLE1BRWpDK1QsUUFGaUMvVDs7O0tBR3ZDLEdBRG1Cb1Y7VUFJVkUsU0FKVUY7U0FJVkUsbUJBSExDLGFBR0tEOztTQUhMQyxhQUVrQixpQ0FIVEY7O1FBTVRHLG1CQUFZLGdCQUxaRDtJQTVDSjFCLFFBeUNhVCxNQUFNVSxRQUFRVCxJQUVyQlUsT0FNRnlCO0lBMURKOUIsWUFrRGFOLE1BQWNDLElBR3ZCa0M7SUFIdUJsQyxnQkFBQUEsT0FRdkJtQzs7R0FXRjtZQUVGTCxXQUFXL0IsTUFBTVUsUUFBT1Q7STtTQUNuQnJUO0tBQUssT0F0Qk4rVSxTQXFCTzNCLE1BQU1VLFFBQU9ULElBQ25CclQ7O1FBQ0dlO0lBQUssT0FFYjBVLFNBSldyQyxNQUFNVSxRQUFPVCxJQUVoQnRTOztZQUVSMFUsU0FBU3JDLE1BQU1VLFFBQU9UO0k7O01BQ0FnQztNQUFQdEI7Z0JBQ2Ysc0JBRHNCc0I7TUFDbEJwQiw0QkFBeUMsZ0JBRHZCb0I7S0FuRXRCeEIsUUFrRVNULE1BQU1VLFFBQU9ULElBQ1BVLFVBQ1hFO0tBQ0osT0E5RUFQLFlBMkVTTixNQUFhQyxJQUNBZ0M7O1FBSUdyVixjQUFKaUMsZUFBUHlUO0lBdkVkN0IsUUFrRVNULE1BQU1VLFFBQU9ULElBS1JxQztJQWhGZGhDLFlBMkVTTixNQUFhQztJQVF0QjtlQUhxQnBSLGtCLE9BTHJCd1QsU0FBU3JDLE1BQU1VLFFBQU9UO0lBUXRCLE9BakNJMEIsU0F5QkszQixNQUFNVSxRQUFPVCxJQUtHclQ7O1lBT3pCMlYsT0FBT0MsT0FBTXhDLE1BQUtDO0lBQUssT0FoQnZCOEIsV0FnQmEvQiw2QkFBS0MsSUFBWHVDO0dBQStEO0dBakk1RDs7O09BcUJWekM7T0FDQUc7T0FFQUU7T0FVQUM7T0FRQUM7T0FPQUU7T0FFQUM7T0F5Q0lrQjtPQXFCSkk7T0FJQU07T0FZQUU7T0FBQUE7WUFhTUUsb0JBQVM3VixHQUFFOFY7SUFDakIsU0FEZTlWLFVBRUpjLElBRklkLE1BRU8sT0FBQSxXQUZMOFYsT0FFTmhWO1FBQ0FhLE9BSEkzQjtJQUdRLGFBQXNCSyxJQUFNLE9BQUUsV0FIcEN5VixPQUc0QnpWLEtBQXNCO0lBQTNCO0tBQUEsT0FBQSx1QkFFdEMwVixtQkFGU3BVOztJQUE2QixPQUV0Q29VLHlCQUZTcFU7R0FBeUQ7WUFIOURxVSxTQUFTaFcsR0FBRThWLEcsdUJBQVhELGNBQVM3VixHQUFFOFY7WUFLZkMsdUJBQVlwVSxNQUFLbVU7SUFDbkIsS0FEY25VLE1BRU4sT0FBQSxXQUZXbVU7UUFHVkcsU0FIS3RVLFNBR1pFLE1BSFlGOztLQUlHLFlBQWYsT0FKQXVVLFlBR09ELFFBSFVIO1NBTVJoVjtLQUFzQixPQU4vQm9WO2NBR09ELGlCQUc2QjVWLElBQU0sT0FBRSxXQU4zQnlWLE9BTVJoVixHQUEyQlQsS0FBaUI7SUFBRTtJQUZ4QztLQUFBLE9BQUEsdUJBSWY4VixrQkFMQXRVOztJQUNlLE9BSWZzVSx3QkFMQXRVO0dBR3VEO1lBTnZEcVUsWUFBWXZVLE1BQUttVTtJLHVCQUFqQkMsaUJBQVlwVSxNQUFLbVU7O1lBUWpCSyxzQkFBV3RVLEtBQUlpVTtJQUNqQixTQURhalUsUUFFRSxPQUFBLFdBRkVpVTtRQUdWOVYsSUFITTZCO0lBR0QsYUFBZ0JmLEdBQUssT0FBRSxXQUhsQmdWLE9BR1doVixJQUFlO0lBQXBCLGtCQUFBLE9BQUEsdUJBaEJqQitVLGdCQWdCQzdWOztJQUFnQixPQWhCakI2VixzQkFnQkM3VjtHQUFxQztZQUgxQ29XLFdBQVd2VSxLQUFJaVU7SSx1QkFBZkssZ0JBQVd0VSxLQUFJaVU7O0dBZGYsY0FDSUUsVUFhSkksWUFSQUY7WUFlRmxXLEVBQUVjLEdBQUksT0FBZSxtQkFBbkJBLFlBQXdCdVYsR0FBSyxPQUFMQSxFQUFNLEdBQUM7WUFDakNDLGFBQWF4VjtJQUFJLE9BQWlCLG1CQUFyQkEsWUFBMEJ1VixHQUFLLE9BQUxBLEVBQU07R0FBQztZQUM5Q0UsY0FBY3pWO0lBQUksT0FBa0IsbUJBQXRCQSxZQUEyQnVWLEdBQUssT0FBTEEsRUFBTTtHQUFDO0dBL0J0QztJQUFBLGtCQTZCVnJXLEdBQ0FzVyxjQUNBQzs7Ozs7Ozs7OztPQTVLRnJEOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0lEQ0EzTjtJQUFBRDtJQUFBRjtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDs7Ozs7O0lBT0FXO0lBVUFHO0lBRUFDO0lBSUFFO0lBQ0EwUTtJQTREQXBQO0lBQ0FDO0lBQ0FvUDtJQUdBbFA7SUFJQUM7SUFJQWtQO0lBSUFqUDtJQUNBQztJQUNBQztJQUNBQztJQVdBSTtJQVVBSztJQUlBQzs7O0lBdVZBOEQ7SUFvQ0FnQjtJQThEQWlCO0lBaUNBUztJQUlBQztJQW1DQU07SUFDQUM7SUFhQUs7SUF3QkFJO0lBQ0FDO0lBeURBTzs7SUFrREFrQjtJQVdBRztJQUlBQztJQVlBRTtJQW9CQUc7SUFFQUM7O0lBZ0NBRztJQUNBQztJQUVBQztJQU9BOU47SUFFQStOO0lBb0JJQztJQWtCQUk7Ozs7O09BdjVCSnhOO09BQUFDO09BQUFIOztPQXFHQXFDO09BRUFFO09BQ0FDO09BRkFGO09BdUJBVztPQVZBTDtPQWNBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXVWQThEO09Bb0NBZ0I7T0E4REFpQjtPQXFDQVU7T0FKQUQ7T0F1SUF5QjtPQXpEQVA7T0FEQUQ7T0E0R0EwQjtPQVdBRztPQUlBQztPQVlBRTtPQTl4QkFwTTtPQUVBQztPQUlBRTtPQUNBMFE7T0E0REFwUDtPQUNBQztPQUNBb1A7T0FHQWxQO09BSUFDO09BSUFrUDtPQWpHQXZSO09BQUFEO09BQUFEO09BQUFEOztPQWtvQkFxSztPQUNBQztPQWdNQTRDO09BcUNBTTtPQUhBRjtPQXJOQTNDO09BcUxBd0M7T0FpQ0FJO09BdDJCQXhOO09BQUFEO09BQUFEOzs7OztPQSsyQkFIO09BRUErTjtxQjtxQjtPQTEyQkFqTjtPQTgzQklrTjtPQWtCQUk7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJRTcwQko2RDtJQXdDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBcEhBQyxrQkFBa0JDO0lBQ3BCLElBQUlDLGtCQUNJLE1BQUEsY0FGWUQ7O1NBRXBCckg7O2dCQURJc0g7TUFBQUEsaUJBRVMsMEJBQWMsY0FIUEQsS0FFcEJySDtNQUFRLFVBQVJBO2VBQUFBO01BQUFBOzs7SUFHQSxXQUpJc0g7R0FJUztZQUdYQyxrQkFBbUJ4SDtJQUNyQjtLQUFJbUUsSUFBSSxjQURhbkU7S0FFakJuRSxNQUFNLDBCQUROc0k7S0FFSixNQUZJQTtLQUNNOztTQUNWbEU7O01BQ0UsdUJBRkVwRSxLQUNKb0UsR0FDa0IsY0FKR0QsTUFHckJDO01BQ0UsVUFERkE7aUJBQUFBO01BQUFBOzs7SUFHQSxXQUFLLDZCQUpEcEU7R0FJNkI7WUFHL0I0TCxvQkFBcUJILEtBQXFCLE9BakIxQ0Qsa0JBaUJxQkMsS0FBMEM7WUFDL0RJLG9CQUFxQkosS0FBcUIsT0FsQjFDRCxrQkFrQnFCQyxLQUEwQztZQUMvREssWUFBYUwsS0FBYSxPQW5CMUJELGtCQW1CYUMsS0FBa0M7WUFFL0NNLGtCQUFrQkM7SUFDcEI7S0FBSTlELElBQUksY0FEWThEO0tBRWhCMUQsSUFBSSxzQkFGWTBEO0tBR2hCTjtPQURBcEQ7U0FLSjFVLE1BTEkwVTs7U0FEQUo7V0FPRnZVLE1BUEV1VTs7a0JBRUF3RDtRQUFBQTs7VUFNVywwQkFBYyxzQkFUVE0sS0FRbEJyWSxLQURGQzs7UUFDRSxVQUFBRDtpQkFBQUE7UUFBQUE7OztNQURGLFVBQUFDO2VBQUFBO01BQUFBOzs7SUFLdUIsVUFUbkI4WCxZQVNtQixVQUFBLHdCQVZuQnBEO0lBVUosZUFBTSx3QkFYRko7R0FXNkM7WUFHL0MrRCxvQkFBcUJELEtBQXFCLE9BZjFDRCxrQkFlcUJDLEtBQTBDO1lBQy9ERSxvQkFBcUJGLEtBQXFCLE9BaEIxQ0Qsa0JBZ0JxQkMsS0FBMEM7WUFDL0RHLFlBQWFILEtBQWEsT0FqQjFCRCxrQkFpQmFDLEtBQWtDOzs7O1lBRy9DSSxrQkFBa0JuVTtJQUNwQixTQURvQkE7S0FTUixPQUFBLDBEQVRRQTtJQUdsQjtLQURLK0gsTUFGYS9IO0tBR2Q4SCxNQUFKLDhCQURLQztLQUVEbUU7T0FBTzs7OztTQURQcEU7S0FFSixNQUZJQTtLQUNPOztTQUNYcUU7O01BQ0UsY0FGRUQsTUFDSkMsR0FDYyx3QkFKVHBFLEtBR0xvRTtNQUNFLFVBREZBO2lCQUFBQTtNQUFBQTs7O0lBR0EsT0FKSUQ7R0FLeUQ7WUFHN0RrSSxrQkFBa0JDLGlCQUFnQkMsa0JBQWlCdFU7SUFDckQsU0FEcURBO0tBYXpDLE9BQUEsMERBYnlDQTtRQUc5Q3NQLE1BSDhDdFA7U0FHOUNzUCxLQURNLE9BRk8rRTtJQUlSO0tBQU52TSxNQUFNLDJCQURMd0g7S0FFRGpKLE1BQU0sV0FMd0JpTyxrQkFJOUJ4TTtLQUVTcUU7YUFIUm1EOztpQkFHTCxPQURJako7U0FHSzNKLGNBQUw2UztLQUNBLGNBSkFsSixLQUNTOEYsR0FHRSwwQkFEWG9EO2VBRlNwRDtLQUFBQTthQUVKelA7O0dBS29EO0dBR3hDO0lBQXJCNlg7TUFBcUI7O0lBQ3JCQztNQUFxQjs7SUFDckJDLG9CQUFvQixXQUZwQkY7SUFHQUcsb0JBQW9CLFdBRnBCRjs7Ozs7R0FHc0IsU0FBdEJHO0ksT0FwQkFQLGtCQWtCQUssbUJBRkFGOztHQUtzQixTQUF0Qks7SSxPQXJCQVIsa0JBbUJBTSxtQkFGQUY7O0dBS2MsU0FBZEs7SSxPQXRCQVQsa0JBbUJBTSxtQkFGQUY7O1lBVUFNLG9CQUFvQjlVLE1BQUsrVSxNQUFLMU87SUFDaEMsYUFEMkIwTztjQUFLMU87Y0FDTCwwREFETHJHO0dBQzBEO1lBRzlFZ1Ysa0JBQWtCQyxrQkFBaUJqVjtJQUNyQyxTQURxQ0E7S0F1QnpCLE9BQUEsMERBdkJ5QkE7Y0FBQUE7Ozs7TUFHM0I7T0FNZ0IrVTtPQVBaRztPQUFOQztPQUNGbEYsSUFBSSx3QkFERmtGO09BRUY5RSxJQUFJLHdCQUZJNkU7T0FHUjdPLE1BQU0sV0FMUTRPLGtCQUdkaEYsR0FDQUk7ZUFEQUosV0FDQUk7V0FLZ0IzVSxTQUFJMFosU0FBQUw7T0FDcEI7UUFBVTtTQUFOdkIsTUFBTSxtQ0FMVm5OLEtBSWdCM0s7U0FFRUM7aUJBRkV5Wjs7OztrRUFUV3BWO2FBYXRCcVYsbUJBQUw5RjtTQUNBLGNBSkFpRSxLQUNjN1gsS0FHRCwwQkFEYjRUO1lBRmM1VCxRQVJsQnNVO3FCQVFrQnRVO1NBQUFBO2lCQUVUMFo7O1dBSk8zWixRQUxoQjJVLEdBSUMsT0FaTHlFLG9CQUltQzlVLE1BYXRCcVYsUUFSVGhQO1FBTUEsSUFGZ0JpUCxRQUFBNVo7UUFBQUEsTUFBQTRaO1FBQUlGLFNBSVhDOzs7TUFOUixPQVhMUCxvQkFJbUM5VSxNQVNYK1UsTUFKcEIxTzs7O0lBaUJNLE9BQUEsMERBdEJ5QnJHO0dBdUIwQjtHQUd4QztJQUFyQnVWO01BQXFCOztJQUNyQkM7TUFBcUI7Ozs7OztHQUNDLFNBQXRCQztJLE9BNUJBVCxrQkEwQkFPOztHQUdzQixTQUF0Qkc7SSxPQTdCQVYsa0JBMkJBUTs7R0FHYyxTQUFkRztJLE9BOUJBWCxrQkEyQkFROztZQVdBSSxxQkFBdUJDLFNBQVFyWTtJQUFtQixVQUFBLFdBQTNCcVksU0FBUXJZO0lBQW1CLE9BQUE7R0FBVztZQUU3RHNZLHFCQUF1QkMsU0FBUTdYO0lBQ2pDO0tBQ2E7TUFBUDhCLE9BQU8sNkJBRm9COUI7TUFHL0IsTUFBQSxXQUh1QjZYLFNBRW5CL1Y7S0FDSjs7VUFFQXFEO0tBRWtFO01BRmxFQyx3QkFBQUQ7TUFFa0UsTUFBQSx3QkFGbEVDO01BRThDLE1BQUE7TUFBNUMsTUFBQSxrQ0FQNkJwRjtLQU83QixPQUFBOztHQUFpRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTNIbkZ3VjtPQVNBQztPQUNBQztPQUNBQztPQWlCQUc7T0FDQUM7T0FDQUM7T0FvRkEwQjs7T0FqRkF6QjtPQW1DQWQ7T0FIQXNCO09BR0F0QjtPQUZBdUI7T0FFQXZCO09BREF3QjtPQXlDQXZCO09BSkFtQztPQUlBbkM7T0FIQW9DO09BR0FwQztPQUZBcUM7T0FVQUc7OztFOzs7Ozs7O0dDeklhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBR1hyYTtJQUNBdWE7SUFKVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1h2YTtPQUNBdWE7Ozs7Ozs7O0lBTUFDO0lBQ0FDO0lBQ0FoVTtJQUxROzs7Ozs7Ozs7T0FHUitUO09BQ0FDO09BQ0FoVTtJQUdGaVU7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7O09BM0NBM0M7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7OztFOzs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0lDMEhBQztJQUVBQztJQUtBQztJQUdBQztJQUlBQztJQUlBQztJQUlBQztJQUlBQztZQTNNQUMsK0JBQW1DdkQsV0FBVzlULGdCQUNoRCxXQURxQzhULFdBQVc5VDtHQUN2Qjs7OztPQWdMdkI2VztPQUVBQztPQUtBQztPQUdBQztPQUlBQztPQUlBQztPQUlBQztPQUlBQztPQTNNQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0lHbVJFMkY7SUFsUEFDOzs7Ozs7Ozs7Ozs7Ozs7O0lBVEZDOzs7Ozs7Ozs7Ozs7WUFXRUMsT0FBT0MsTUFDVCxXQUFjLG9CQURMQSxPQUZQSCxjQUtEO1lBRUNJO1FBQU9ELGlCQUFPRTtJQUFjLFdBQXJCRixNQUFPRTs7WUFFZEMsU0FBU0MsR0FBRUM7SUFDYixPQUFBLGVBRFdELEdBQ0osK0JBRElBLEdBQUVDO0dBQ0c7WUFFZEMsTUFBTUY7SUFDUjtLQUFJRyxNQUFJLGVBSk5KLFNBR01DO0tBRUpJLE1BQUksZUFMTkwsU0FJRUk7SUFFSixPQU5FSixTQUtFSztHQUNTO1lBOEJYQyxVQUFVQztJQUNELElBQVBDLE9BQU8sZUFEQ0QsTUFBQUE7SUFBQUEsT0FDUkM7SUFFSixPQUZJQTtHQUVBO1lBRUZDLGtCQUFtQlosTUFBTWE7SUFDM0I7S0FBSUMsU0F2Q0ZSLE1Bc0NtQk47S0FoQ2pCSSxJQUFJLGVBVE5ELFNBeUN5QlU7S0EvQnZCTixNQUFJLGVBVk5KLFNBU0VDO0tBS0FJLE1BQUksY0FkTkwsU0FVRUk7S0FLQUY7T0FBSTtTQWpDUlA7U0FpQ2lCLGVBRGJVLEtBQ3FCLCtCQURyQkE7S0E2QkFOLGtCQTVCQUcsSUFEQUcsTUFTQyxlQVREQTtJQThCSixXQUZJTSxRQUNBWjtHQUNlO1lBRWpCYSxhQUFhQztJQUNmLE9BQUE7O2FBRGVBOzs7R0FDcUQ7WUFFbEVDLE9BQU9EO0lBQ1QsSUFBSWhCLE9BSkZlLGFBR09DLGVBRUxILFFBTEZFLGFBR09DO0lBR1QsT0FYRUosa0JBU0VaLE1BQ0FhO0dBQzBCO1lBRTVCSyxNQUFNUjtJQUNSLElBQUlWLE9BbkJGUyxVQWtCTUMsSUFFSkcsUUFwQkZKLFVBa0JNQztJQUdSLE9BaEJFRSxrQkFjRVosTUFDQWE7R0FDMEI7WUFFNUJNLFdBQVdULEdBQUksT0F4RGZKLE1BaUNBRyxVQXVCV0MsSUFBdUI7WUFJbENVLFFBQVFWLEdBQUVXO0lBQ1o7S0FBb0IsT0E3RGxCZixNQTZEd0Isb0JBRGRlO0tBQ1JWLE9BQU8sZUFEREQ7SUFBQUEsT0FDTkM7O0dBQ1U7WUFJZFcsS0FBS0M7SUFBZSxJQXpGYkMsSUErRUxMLFdBVUdJO0lBekZNLE9BQUEsV0FBQSxjQUFKQyxTQUFBQTtHQXlGcUM7WUFzQzVDQyxNQW1CRUYsT0FBT0csSUFBSUM7SUFDYixHQUFHLGlCQURNRCxJQUFJQzs7d0RBQUFBO3dEQUFKRDs7Ozs7O0tBQ087O0lBR0wsSUFmb0JFLG9CQWVwQixlQUpFRCxJQUFKRDtJQUtOLEdBQUEsV0FoQjRCRTs7S0FpQjFCLE9BQUEsZUFBQSxlQXpFSFQsV0FtRUFJLGVBQU9HOztJQU9ELEdBQUEsa0JBbEJ1QkU7S0FDL0I7TUFBQTtPQUFBO09BekNHQyxTQXlDUSxlQXpEVFYsV0FtRUFJO09BVDZCLE9BQUEsMkJBRkFLO09BdkM1QkUsWUF5Q2EsMkJBMUNiRDtPQUVBRTtNQXlDQTtRQXJDTDtVQUFBLGVBTktGLFFBQ0FDO1VBS2UsZUFKZkMsY0FzQzRCSDtPQW1CMUIsT0FBQSxlQTFERkUsV0FrRE1KOzs7S0FoQlQ7TUFBVyxJQUFQTSxPQW5ERmIsV0FtRUFJO01BZmUsR0FBZCxlQWVNRyxJQWhCTE0sU0FDYSxlQURiQSxNQWdCU0wsS0FkUixPQUZESzs7R0F5QnNCO1lBRTFCQyxNQUFJVixPQUFPRyxJQUFJQztJQUNqQixJQUFJTyxPQUFLLG9CQURJUixLQUVUUyxPQUFLLG9CQUZRUjtJQUlFLE9BQUEsb0JBbENqQkYsTUE4QklGLE9BQ0ZXLE1BQ0FDO0dBRW9DO1lBRXRDQyxNQUFNYixPQUFPRyxJQUFJQztJQUNuQixJQUFJTyxPQUFLLG9CQURNUixLQUVYUyxPQUFLLG9CQUZVUjtJQUluQixPQUFBLG9CQXhDRUYsTUFvQ01GLE9BQ0pXLE1BQ0FDO0dBRXNDO1lBRXhDRSxVQUFVZCxPQUFPRyxJQUFJQztJQUN2QjtLQUFJTyxPQUFLLDJCQURVUjtLQUVmUyxPQUFLLDJCQUZjUjtJQUl2QixPQUFBLG9CQTlDRUYsTUEwQ1VGLE9BQ1JXLE1BQ0FDO0dBRTBDO1lBRTVDRyxNQUFNZixPQUFPRyxJQUFJQztJQUNuQjtLQUFJTyxPQUFLLDJCQURNUjtLQUVYUyxPQUFLLDJCQUZVUjtLQUlFLE9BcERuQkYsTUFnRE1GLE9BQ0pXLE1BQ0FDO0lBRWlCLE9BQUE7R0FBcUI7R0FFM0I7SUFBYkksYUFBYTs7Ozs7OztZQWNiQyxzQkFBc0JmO0lBQ3hCOztPQUFBLDBCQUFnQiwrQkFEUUE7SUFkVCxPQUFBLDRCQUFiYztHQWUyQztZQVMzQ0UsV0FBV2xCO0lBQ2IsT0FYRWlCLHNCQXBIRXJCLFdBOEhTSTtHQUNpQztZQVU1Q21CLFFBbUJFbkIsT0FBT1csTUFBSUM7SUFDYjtLQUFRLE9BQUEsMkJBRENEO0tBQ0QsY0FBc0IsMkJBRGpCQzs7O3dEQUFBQTt3REFBSkQ7Ozs7OztLQUVKOztJQU1GLEdBQUEsMkJBUk1BLE1BQUlDOzt3REFBQUE7d0RBQUpEOzs7Ozs7S0FTSjs7UUEzQnFCUixLQWtCakJRLE1BbEJxQlAsS0FrQmpCUTtJQWpCYjtLQUFZLElBQVJRLFFBQVEsc0JBRGtCaEIsSUFBSkQ7S0FFdkIsR0FBQSwyQkFEQ2lCO01BRVMsSUFBQSxPQWZiRixXQThCRWxCLFFBZlUsT0FBQSw0QkFGUm9CO01BRVEsT0FBQSxzQkFIY2pCOztLQU9kO01BQUEsT0FBQSxzQkFQa0JDLElBQUpEO01BQUFrQixNQU9kO0tBQ1AsR0F4SUx0QixLQWtKRUMsUUFsQjRCSSxLQUFKaUIsVUFBQWxCLEtBQUFrQjs7R0FpQ0E7Ozs7Ozs7Ozs7S0FFOUJDOztRQUNFLHVCQUNVLE9BM0RSTCxzQkEwREU1QyxTQUNpQztPQUFBOzs7Ozs7Ozs7O1VBRnZDaUQ7OzthQVVRQyxrQkFBa0JwQztLQUNwQixLQUFPLGtCQURhQTtNQUNwQixNQUFBO0tBQ1EsSUFBSnFDLFVBRmdCckMsSUFHaEJMO0tBR0Y7TUFGSSxLQUFBLGtCQUZGMEMsdUJBQ0ExQztNQURBMEMsU0FHRyxrQkFISEE7TUFJRix5QkFIRTFDOztJQUtGO2FBK0NBMkMsWUFBWXpCLE9BQU9HLElBQUlDO0tBQ3pCO01BQUlzQixXQXhERkgsa0JBdURtQnBCO01BRWpCd0IsV0F6REZKLGtCQXVEdUJuQjtNQWRHd0IsT0FsSjlCbEIsTUFnS2dCVixPQUNWMEIsVUFDQUM7TUFmQyxPQUFBLHlCQUR1QkM7TUFDdkIsT0FBQTtNQW1CQyxPQUFBLFdBQW1DLGtCQU5oQnhCO0tBN0J0QixHQUFBLHlCQWV5QndCOzs7TUFiUjtPQUFBLE9BQUEseUJBYVFBO2NBYlI7S0FnQ2QsV0FBQSxXQUFtQyxrQkFMcEJ6QjtLQU1mLE9BQUEsa0JBTlFIO0lBTWtDO0lBaEU5QyxXQTBEQXlCOzs7SUF4QkVJO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFVTkM7SUFVQUM7SUFDQUM7SUFFQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7U0ExQk0zRTtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs4Qjs4Qjs4Qjs4Qjs4Qjs4QjtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7U0FBQUM7U0FBQUM7U0F1Qk4wQztTQXZCTXpDO1NBQUFDOzhCOzhCOztTQVVOcUM7d0I7d0I7U0FlQUs7U0FEQUQ7O1NBeEJNeEM7U0EwQk4wQzs4Qjs2Qjs0QjtTQU5BTDs0Qjs0QjtTQXBCTXBDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBcUJOaUM7U0FyQk1oQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs0QjtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7NkI7NkI7Ozt3Qjs7NkI7NkI7NkI7NkI7NkI7NkI7O3dCOzs7Ozs2Qjs2Qjs2Qjs7NkI7NkI7NkI7U0F4SU52Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQU1BRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVlBRTtJQzlMSTBGO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFB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OzhCOzhCOzs7d0I7d0I7Ozs7Ozs4Qjs4Qjs4Qjs7OEI7OEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCOzs7Ozs7Ozs7OytCOytCOzs7eUI7OytCOytCOytCOytCOytCOytCOzt5Qjs7Ozs7K0I7K0I7K0I7OytCOytCOytCO1NBREFkO1NBQ0FjO0lBR0pYO0lBQ0FZO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBREFEO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lDcGFJQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBV05DO0lBVUFDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lEOFlNQztJQUNBQzs7OztTQzFhQTdFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOzs7Ozs7O1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQXdCTjBDO1NBeEJNekM7U0FBQUM7Ozs7U0FXTnFDOzs7U0FlQUs7U0FEQUQ7O1NBekJNeEM7U0EyQk4wQzs7OztTQU5BTDs7O1NBckJNcEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUM7U0FzQk5pQztTQXRCTWhDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDOztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NEeWFBUTtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUtFO1FBRUFFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0FFO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQUtFO1FBR0dFO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFyRTtRQUFBZDtRQUFBVTtRQUFBVDtRQUFRdUY7OztTQTdCSHZJO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBQ0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUtLRTtVQUFSQztVQUFBQztVQUFBRztVQUFBRDtVQUFBRDtVQUFBRztVQUFBQztVQUFBQztVQXVCRk87VUFBQUM7VUFBQVM7VUFyQk01RDs7U0FVRGtFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0xDO1NBQUFDO1NBQUFFO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUtFO1NBRUFFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NBR0FFO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQUtFO1NB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTRCVnArRDtJQUNBbXFLO0lBQ0FsckQ7SUFDQWhzQztHQU9LO0dBR2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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R0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFBQUc7Z0JBQUFBO2dCQUFBQTs7SUFEQWlxQzs7dUJBQUEsU0FBcUI7O1dBQXJCcEM7T0FBQUQ7Z0JBQUE1bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFIO2dCQUFBRztnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQWtxQzs7dUJBQUEsU0FBaUI7O1dBQWpCbkM7T0FBQUQ7Z0JBQUE5bkMsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUg7Z0JBQUFHO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTs7SUFEQW1xQzs7dUJBQUEsU0FBaUI7O1dBQWpCbEM7T0FBQUQ7Z0JBQUFob0MsR0FBQUg7UUFBQTtnQkFBQUc7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBQTtnQkFBQUE7Z0JBQUFBO2dCQUFBSDtnQkFB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O1NBT2dCLE9BQUEsV0FBaEJzQyxLQUFXRDs7Ozs7bUJBUFR0QyxtQ0FBQUE7WUFLUzRDLE1BTFQ1QyxRQUtGNkMsTUFMQTVDO1FBS2dCLE9BQUEsV0FBaEI0QyxLQUFXRDs7O0tBOEJkOztHQUFLO1lBRVozQixhQUFjL0QsS0FBSU8sS0FBSTFFLEdBQUksT0E3SDFCdUcsR0E2SGNwQyxLQUFJTyxLQUFJMUUsR0FBd0I7WUFDOUNtSSxpQkFBa0JoRSxLQUFJbkUsR0FBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkUsR0FBMkI7WUFDakRvSSxrQkFBbUJqRSxLQUFJSyxJQUFHeEU7SUF4SGxCLElBQU4wRyxNQUFNLCtCQXdIZWxDO0lBdkh6QixPQUFBOzthQURJa0M7O2tDLE9BUEZILEdBK0htQnBDO2FBQU9uRTtHQUErQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0s7SyxNO0k7SSxpQjtJO2E7OztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7STs7SztLO0s7Szs7Ozt3QixNO00sUTs7TTs7Ozs7O0ksTTtHOztJOztLO0s7SztLOzs7O3dCLE07TSxROztNOzs7OztpQixNOztHOztJOzs7Rzs7STtJLE87Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztRO1E7O1E7UztTOzs7OztVLHVCOzs7O1E7UztTOzs7OztVLHVCOzs7O1E7O2dCLHFCOztRO1E7UztTO1M7UztTO1M7Ozs7VTtVO1U7VTtVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1M7Uzs7OztVO1U7VTs7Ozs7Ozs7VSxzQjs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STs7SztNOztTOztNOzs7Ozs7O1E7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7O1EsYyxPO1EsTyxjOztROztRO2dCOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sUTtPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPO1EsSTtRLEk7USxNO1EsSTtRO1E7UTs7OztRO1M7O1k7O1M7Ozs7O1c7WSxNO1ksTTtZLE07WSxNO1k7WTtZOzs7WSxPO1c7O1c7O1c7OztPLE87O087ZTs7Rzs7STtJO0s7O1E7Ozs7Uzs7VSxJO1M7UztTLE87O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxvQzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztRO2lDO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxJLHlDOzs7O1c7Ozs7UyxJLHlDOzs7O1c7Ozs7UztTO1MsSSxXLHVCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7VSxXLG1CO1U7O3FCOztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcscUI7VTs7cUI7O1M7UztTLEksVyx5Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTLE8scUI7O1M7UztTLEksVyx5Qjs7Ozs7Ozs7Ozs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1Msb0M7O1MsUTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7O1MsTzs7a0I7Ozs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO2lCOztTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROztLOzs7OztPO087UTtROztxQjs7UztTO1M7O3NCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O08sSSxjO087UTtRO2lCOzs7UztTO1M7a0I7Ozs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7aUI7UyxNOztpQixNO1M7aUI7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztpQjtTLE07O2lCLE07Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROztLOzs7OztPO087UTtRO1EsaUI7UTtRO1E7aUI7O1M7UztTO1MsbUI7UztTO1M7a0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O00sTTtpQztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7UyxNOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROztROztROztROztROztROztROztRO1M7UztTO1M7UztTO1M7UztVO1U7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7UztTO1M7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7O1E7O1E7OztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTOztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1M7UztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7O1M7VTs7YTs7VztXLE07OztVOzs7UztTO1U7O1U7Vzs7Yzs7Vzs7Ozs7YTs7YTthLE07O2E7cUI7O1U7VTs7Ozs7dUM7Ozs7O1E7UTtRO1E7O1E7Uzs7WTs7Uzs7Ozs7VztXO1c7O1c7WTs7ZTs7OztnQixPOztnQjs7Z0I7O1k7Ozs7O1csTzs7Vzs7Vzs7OztROztRO1E7OztRLHlDOztROztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USwwQjs7UTtROzs7USx5Qzs7UTtnQjs7O0c7O0k7STtLOztROzs7O1MsTzs7Uzs7Uzs7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxPOztROztRLHlDO2dCOzs7Rzs7STsyQixPO0k7Rzs7STtJLE87Rzs7STtZO0k7OztLLE07SyxJO0s7Szs7OztNLFc7TTthO007Ozs7O0k7Rzs7STtLO0c7Ozs7STtJO0ssTTtJOztLOztNOztJOzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJO0s7TSxTO00sSTtNO0s7Ozs7O00sTzs7O0c7O0ksUztJO0s7SztLOzs7O0s7SyxNOztHO0c7OzZDLE87O0ssSSxtRDs7O2lDLG9CO00sSTs7O08sTTs7TSxNOztJO0k7OztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs0QyxPOztLLG1COztLO007TztRLE87UTtROzs7O087Ozs7O2tCOztPO0k7STs7O0ksUztJLG9CLE8sMkI7STtJO0c7cUJBRHZDbUU7SSxJQUFJbkU7SUFBSSxPQTNIMUJ3RyxZQTJIa0JyQyxLQUFJbkU7Rzs7SSxPQXRXdEJvRTtHO0c7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzRCO0c7Rzs7STs7SyxJLFcsd0M7Ozs2Qjs7OztJLFc7SSxjOzs7STtJO2U7Ozs7TSxJLFk7Ozs4Qjs7Ozs7OztLOztHOztJO0s7O00sTTtNOztNLE87SztNLE87TSxPO0ssTTs0Qjs7STtLLE87SyxPO0ksYzs7O0k7O0ssc0I7O0k7OztJLG1FO0k7Rzs7SSw2QztJLFc7OztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJOzt5QzsyQzs7STtHOztJOzBCOzs7O3lDOzJDOztJO0c7O0ksaUU7STtHOztJOzBCOztnRDtJO0c7O0ksK0Q7STtHOztJOzBCOzs4QztJO0c7O0ksaUU7STtHOztJLGtFO0k7Rzs7STswQjs7aUQ7STtHOztJOztLLE87O0k7OztJO0k7YSxPO0sseUIsUTs7TSxrQjs7Ozs7OztHOztJO0k7YSxPOzs7TSxlLFE7Ozs7Ozs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7ZTtnQixlO2dCOzsyQjs7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7YywwRTtjO2E7O0c7O0k7O2Msd0U7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yzs7c0Q7MEQ7O2M7YTs7Rzs7STs7YywyRTtjO2E7O0c7O0k7SSxPO2E7OytCLG9CLFc7O0c7O0k7SSxPO2E7OytCLHNCLGE7O0c7O0k7Ozs7OztLLHNCOztJLE07O0c7Ozs7T0FtUElxQztPQTBFSk07T0FHSUM7T0F4b0JB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LEk7STtJO0k7O0s7SztLO0s7O0k7STtJO0k7STtLLEk7SztLO0s7SztLO0s7SztLO0s7Szs7Szs7Ozs7O087O1EsTTtjO2M7YztPO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7Ozs7UTs7Uzs7Uzs7UztROzs7TztROzs7Ozs7OztPOzs7Ozs7Ozs7TTs7Ozs7SSxROztLO0s7SztLO0s7STtJO0k7STtJO0k7SSxPOzs7STtLLE0sbUI7SyxNO0ssSTtrQzsrQjtJLE87RztzQiwrQjtzQixpQzs7STtLLEk7ZTtnQjtJO0k7SSxPO0c7O0ksdUIsTyxvQztHO0csd0I7O0k7SyxLO0ssSztLLEs7SyxLO0ssSztLLEk7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJO0ksdUIsb0M7Rzs7SSw4Qjs7O0s7OztJO0c7MEIsYSxvQzs7Ozt3QixTOztJLDRCLE07NkI7Z0M7SSxXOzs7STtLLFE7SyxxQjtLO0s7STtJLFE7STtJO0k7STtJLE87RztxQyxzQjs7STtnQjs7STtHOytCLFM7K0IsUzs7SSw0QixNO0k7OztjOztlOztnQjttQjtLO007TyxJO087TztPOztVLFcsTTtzQjtxQixNO3NCO3FCLE07c0IsTTtVO1M7Tzs7VSxlO3NCO1M7OztPO087Ozs7Ozs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7USxjO1E7O087Tzs7Ozs7Ozs0Qjs7O0k7OztJLDhCO0ksdUIsNEM7STtLLEk7SztLOztLOzs7STs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7O0ssVTtLOzs7Ozs7b0IsTztLLFU7Szs7Ozs7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDbFZVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBK3VGdUJLO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOztJQUFBQztJQUFBQztJQUFBQzs7Ozs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7OztJQUFBQzs7O0lBQUFDOzs7Ozs7O0lBdlZYQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7OztJQW41RXBCQzs7Ozs7Ozs7Ozs7Ozs7SUFMUTs7UUFHUjFMO0lBRG9DLFdBQ3BDQSxPQUVBMEw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7Ozs7OztHQ3RJSTtHQUFBOzs7RSIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vLyBzdHJmdGltZVxuLy8gZ2l0aHViLmNvbS9zYW1zb25qcy9zdHJmdGltZVxuLy8gQF9zanNcbi8vXG4vLyBDb3B5cmlnaHQgMjAxMCAtIDIwMTUgU2FtaSBTYW1odXJpIDxzYW1pQHNhbWh1cmkubmV0PlxuLy9cbi8vIE1JVCBMaWNlbnNlXG4vLyBodHRwOi8vc2pzLm1pdC1saWNlbnNlLm9yZ1xuLy9cblxuOyhmdW5jdGlvbigpIHtcblxuICAgIHZhciBEZWZhdWx0TG9jYWxlID0ge1xuICAgICAgICAgICAgZGF5czogWydTdW5kYXknLCAnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheSddLFxuICAgICAgICAgICAgc2hvcnREYXlzOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddLFxuICAgICAgICAgICAgbW9udGhzOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSxcbiAgICAgICAgICAgIHNob3J0TW9udGhzOiBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sXG4gICAgICAgICAgICBBTTogJ0FNJyxcbiAgICAgICAgICAgIFBNOiAnUE0nLFxuICAgICAgICAgICAgYW06ICdhbScsXG4gICAgICAgICAgICBwbTogJ3BtJyxcbiAgICAgICAgICAgIGZvcm1hdHM6IHtcbiAgICAgICAgICAgICAgICBEOiAnJW0vJWQvJXknLFxuICAgICAgICAgICAgICAgIEY6ICclWS0lbS0lZCcsXG4gICAgICAgICAgICAgICAgUjogJyVIOiVNJyxcbiAgICAgICAgICAgICAgICBUOiAnJUg6JU06JVMnLFxuICAgICAgICAgICAgICAgIFg6ICclVCcsXG4gICAgICAgICAgICAgICAgYzogJyVhICViICVkICVYICVZJyxcbiAgICAgICAgICAgICAgICByOiAnJUk6JU06JVMgJXAnLFxuICAgICAgICAgICAgICAgIHY6ICclZS0lYi0lWScsXG4gICAgICAgICAgICAgICAgeDogJyVEJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0U3RyZnRpbWUgPSBuZXcgU3RyZnRpbWUoRGVmYXVsdExvY2FsZSwgMCwgZmFsc2UpLFxuICAgICAgICBpc0NvbW1vbkpTID0gdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgICAgIG5hbWVzcGFjZTtcblxuICAgIC8vIENvbW1vbkpTIC8gTm9kZSBtb2R1bGVcbiAgICBpZiAoaXNDb21tb25KUykge1xuICAgICAgICBuYW1lc3BhY2UgPSBtb2R1bGUuZXhwb3J0cyA9IGFkYXB0ZWRTdHJmdGltZTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gZGVwcmVjYXRlZFN0cmZ0aW1lO1xuICAgICAgICBpZihqb29fZ2xvYmFsX29iamVjdCkgam9vX2dsb2JhbF9vYmplY3Quc3RyZnRpbWUgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgfVxuICAgIC8vIEJyb3dzZXJzIGFuZCBvdGhlciBlbnZpcm9ubWVudHNcbiAgICBlbHNlIHtcbiAgICAgICAgLy8gR2V0IHRoZSBnbG9iYWwgb2JqZWN0LiBXb3JrcyBpbiBFUzMsIEVTNSwgYW5kIEVTNSBzdHJpY3QgbW9kZS5cbiAgICAgICAgbmFtZXNwYWNlID0gam9vX2dsb2JhbF9vYmplY3QgfHwgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB8fCAoMSxldmFsKSgndGhpcycpOyB9KCkpO1xuICAgICAgICBuYW1lc3BhY2Uuc3RyZnRpbWUgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgfVxuXG4gICAgLy8gRGVwcmVjYXRlZCBBUEksIHRvIGJlIHJlbW92ZWQgaW4gdjEuMFxuICAgIHZhciBfcmVxdWlyZSA9IGlzQ29tbW9uSlMgPyBcInJlcXVpcmUoJ3N0cmZ0aW1lJylcIiA6IFwic3RyZnRpbWVcIjtcbiAgICB2YXIgX2RlcHJlY2F0aW9uV2FybmluZ3MgPSB7fTtcbiAgICBmdW5jdGlvbiBkZXByZWNhdGlvbldhcm5pbmcobmFtZSwgaW5zdGVhZCkge1xuICAgICAgICBpZiAoIV9kZXByZWNhdGlvbldhcm5pbmdzW25hbWVdKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIltXQVJOSU5HXSBcIiArIG5hbWUgKyBcIiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAxLjAuIEluc3RlYWQsIHVzZSBgXCIgKyBpbnN0ZWFkICsgXCJgLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9kZXByZWNhdGlvbldhcm5pbmdzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5hbWVzcGFjZS5zdHJmdGltZVRaID0gZGVwcmVjYXRlZFN0cmZ0aW1lVFo7XG4gICAgbmFtZXNwYWNlLnN0cmZ0aW1lVVRDID0gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDO1xuICAgIG5hbWVzcGFjZS5sb2NhbGl6ZWRTdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZUxvY2FsaXplZDtcblxuICAgIC8vIEFkYXB0IHRoZSBvbGQgQVBJIHdoaWxlIHByZXNlcnZpbmcgdGhlIG5ldyBBUEkuXG4gICAgZnVuY3Rpb24gYWRhcHRGb3J3YXJkcyhmbikge1xuICAgICAgICBmbi5sb2NhbGl6ZSA9IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnRpbWV6b25lID0gZGVmYXVsdFN0cmZ0aW1lLnRpbWV6b25lLmJpbmQoZGVmYXVsdFN0cmZ0aW1lKTtcbiAgICAgICAgZm4udXRjID0gZGVmYXVsdFN0cmZ0aW1lLnV0Yy5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgfVxuXG4gICAgYWRhcHRGb3J3YXJkcyhhZGFwdGVkU3RyZnRpbWUpO1xuICAgIGZ1bmN0aW9uIGFkYXB0ZWRTdHJmdGltZShmbXQsIGQsIGxvY2FsZSkge1xuICAgICAgICAvLyBkIGFuZCBsb2NhbGUgYXJlIG9wdGlvbmFsLCBjaGVjayBpZiB0aGlzIGlzIChmb3JtYXQsIGxvY2FsZSlcbiAgICAgICAgaWYgKGQgJiYgZC5kYXlzKSB7XG4gICAgICAgICAgICBsb2NhbGUgPSBkO1xuICAgICAgICAgICAgZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdLCBbbG9jYWxlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiBkZWZhdWx0U3RyZnRpbWU7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoZGVwcmVjYXRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZShmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZShmb3JtYXQsIFtkYXRlXSlgXCIsIF9yZXF1aXJlICsgXCIoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWVUWihmbXQsIGQsIGxvY2FsZSwgdGltZXpvbmUpIHtcbiAgICAgICAgLy8gbG9jYWxlIGlzIG9wdGlvbmFsLCBjaGVjayBpZiB0aGlzIGlzIChmb3JtYXQsIGRhdGUsIHRpbWV6b25lKVxuICAgICAgICBpZiAoKHR5cGVvZiBsb2NhbGUgPT0gJ251bWJlcicgfHwgdHlwZW9mIGxvY2FsZSA9PSAnc3RyaW5nJykgJiYgdGltZXpvbmUgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGltZXpvbmUgPSBsb2NhbGU7XG4gICAgICAgICAgICBsb2NhbGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVFooZm9ybWF0LCBkYXRlLCBsb2NhbGUsIHR6KWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGB2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzLnRpbWV6b25lKHR6KShmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVFooZm9ybWF0LCBkYXRlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopOyBzKGZvcm1hdCwgW2RhdGVdKWAgb3IgYFwiICsgX3JlcXVpcmUgKyBcIi50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gKGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lKS50aW1lem9uZSh0aW1lem9uZSk7XG4gICAgICAgIHJldHVybiBzdHJmdGltZShmbXQsIGQpO1xuICAgIH1cblxuICAgIHZhciB1dGNTdHJmdGltZSA9IGRlZmF1bHRTdHJmdGltZS51dGMoKTtcbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWVVVEMoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIGRhdGUsIGxvY2FsZSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS51dGMoKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLnN0cmZ0aW1lVVRDKGZvcm1hdCwgW2RhdGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi51dGMoKTsgcyhmb3JtYXQsIFtkYXRlXSlcIik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gbG9jYWxlID8gdXRjU3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IHV0Y1N0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQobG9jYWxlKSB7XG4gICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemVkU3RyZnRpbWUobG9jYWxlKWBcIiwgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpXCIpO1xuICAgICAgICByZXR1cm4gZGVmYXVsdFN0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSk7XG4gICAgfVxuICAgIC8vIEVuZCBvZiBkZXByZWNhdGVkIEFQSVxuXG4gICAgLy8gUG9seWZpbGwgRGF0ZS5ub3cgZm9yIG9sZCBicm93c2Vycy5cbiAgICBpZiAodHlwZW9mIERhdGUubm93ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIERhdGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuICtuZXcgRGF0ZSgpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFN0cmZ0aW1lKGxvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y1RpbWV6b25lKSB7XG4gICAgICAgIHZhciBfbG9jYWxlID0gbG9jYWxlIHx8IERlZmF1bHRMb2NhbGUsXG4gICAgICAgICAgICBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBjdXN0b21UaW1lem9uZU9mZnNldCB8fCAwLFxuICAgICAgICAgICAgX3VzZVV0Y0Jhc2VkRGF0ZSA9IHVzZVV0Y1RpbWV6b25lIHx8IGZhbHNlLFxuXG4gICAgICAgICAgICAvLyB3ZSBzdG9yZSB1bml4IHRpbWVzdGFtcCB2YWx1ZSBoZXJlIHRvIG5vdCBjcmVhdGUgbmV3IERhdGUoKSBlYWNoIGl0ZXJhdGlvbiAoZWFjaCBtaWxsaXNlY29uZClcbiAgICAgICAgICAgIC8vIERhdGUubm93KCkgaXMgMiB0aW1lcyBmYXN0ZXIgdGhhbiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICAvLyB3aGlsZSBtaWxsaXNlY29uZCBwcmVjaXNlIGlzIGVub3VnaCBoZXJlXG4gICAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIHZlcnkgaGVscGZ1bCB3aGVuIHN0cmZ0aW1lIHRyaWdnZXJlZCBhIGxvdCBvZiB0aW1lcyBvbmUgYnkgb25lXG4gICAgICAgICAgICBfY2FjaGVkRGF0ZVRpbWVzdGFtcCA9IDAsXG4gICAgICAgICAgICBfY2FjaGVkRGF0ZTtcblxuICAgICAgICBmdW5jdGlvbiBfc3RyZnRpbWUoZm9ybWF0LCBkYXRlKSB7XG4gICAgICAgICAgICB2YXIgdGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lc3RhbXAgPiBfY2FjaGVkRGF0ZVRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZVRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IF9jYWNoZWREYXRlVGltZXN0YW1wO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBob3cgdG8gYXZvaWQgZHVwbGljYXRpb24gb2YgZGF0ZSBpbnN0YW50aWF0aW9uIGZvciB1dGMgaGVyZT9cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIHRpZWQgdG8gZ2V0VGltZXpvbmVPZmZzZXQgb2YgdGhlIGN1cnJlbnQgZGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGUgPSBuZXcgRGF0ZShfY2FjaGVkRGF0ZVRpbWVzdGFtcCArIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKF9jYWNoZWREYXRlKSArIF9jdXN0b21UaW1lem9uZU9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0ZSA9IF9jYWNoZWREYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSArIF9jdXN0b21UaW1lem9uZU9mZnNldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gX3Byb2Nlc3NGb3JtYXQoZm9ybWF0LCBkYXRlLCBfbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gX3Byb2Nlc3NGb3JtYXQoZm9ybWF0LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdFN0cmluZyA9ICcnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmcgPSBudWxsLFxuICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxlbmd0aCA9IGZvcm1hdC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudENoYXJDb2RlID0gZm9ybWF0LmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNJblNjb3BlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICctJ1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSA0NSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJ18nXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gOTUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnICc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA0OCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9ICcwJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICc6J1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDU4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dGVuZGVkVFopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUud2FybiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIltXQVJOSU5HXSBkZXRlY3RlZCB1c2Ugb2YgdW5zdXBwb3J0ZWQgJTo6IG9yICU6OjogbW9kaWZpZXJzIHRvIHN0cmZ0aW1lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBleHRlbmRlZFRaID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY3VycmVudENoYXJDb2RlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4YW1wbGVzIGZvciBuZXcgRGF0ZSgwKSBpbiBHTVRcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1RodXJzZGF5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuZGF5c1tkYXRlLmdldERheSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbnVhcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdCJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5tb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihNYXRoLmZsb29yKGRhdGUuZ2V0RnVsbFllYXIoKSAvIDEwMCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEvMDEvNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdEJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLkQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE5NzAtMDEtMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdGJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLkYsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdJJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGhvdXJzMTIoZGF0ZS5nZXRIb3VycygpKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwzKE1hdGguZmxvb3IodGltZXN0YW1wICUgMTAwMCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdNJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0TWludXRlcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ2FtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5hbSA6IGxvY2FsZS5wbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnUic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5SLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRTZWNvbmRzKCksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDA6MDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdUJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlQsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg1OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMih3ZWVrTnVtYmVyKGRhdGUsICdzdW5kYXknKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnbW9uZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTY6MDA6MDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdYJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLlgsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdZJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0dNVCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSAmJiBfY3VzdG9tVGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IFwiR01UXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhtZSBvcHRpbWl6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHpTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCkubWF0Y2goL1xcKChbXFx3XFxzXSspXFwpLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSB0elN0cmluZyAmJiB0elN0cmluZ1sxXSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHUnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydERheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdiJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5jLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJyAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXREYXRlKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLnNob3J0TW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdqJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF5ID0gTWF0aC5jZWlsKChkYXRlLmdldFRpbWUoKSAtIHkuZ2V0VGltZSgpKSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwzKGRheSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2snOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0SG91cnMoKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxMidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGhvdXJzMTIoZGF0ZS5nZXRIb3VycygpKSwgcGFkZGluZyA9PSBudWxsID8gJyAnIDogcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0TW9udGgoKSArIDEsIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnXFxuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxc3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTExOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpICsgb3JkaW5hbChkYXRlLmdldERhdGUoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdBTSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRhdGUuZ2V0SG91cnMoKSA8IDEyID8gbG9jYWxlLkFNIDogbG9jYWxlLlBNO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTI6MDA6MDAgQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5yLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gTWF0aC5mbG9vcih0aW1lc3RhbXAgLyAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcdCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXHQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGRheSA9PT0gMCA/IDcgOiBkYXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIDEgLSA3LCBNb25kYXkgaXMgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMS1KYW4tMTk3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IF9wcm9jZXNzRm9ybWF0KGxvY2FsZS5mb3JtYXRzLnYsIGRhdGUsIGxvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd3JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAwIC0gNiwgU3VuZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTIvMzEvNjknXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy54LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc3MCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICgnJyArIGRhdGUuZ2V0RnVsbFllYXIoKSkuc2xpY2UoMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcrMDAwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3onOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBleHRlbmRlZFRaID8gXCIrMDA6MDBcIiA6IFwiKzAwMDBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfY3VzdG9tVGltZXpvbmVPZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IF9jdXN0b21UaW1lem9uZU9mZnNldCAvICg2MCAqIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IG9mZiA8IDAgPyAnLScgOiAnKyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXAgPSBleHRlbmRlZFRaID8gJzonIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBob3VycyA9IE1hdGguZmxvb3IoTWF0aC5hYnMob2ZmIC8gNjApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1pbnMgPSBNYXRoLmFicyhvZmYgJSA2MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBzaWduICsgcGFkVGlsbDIoaG91cnMpICsgc2VwICsgcGFkVGlsbDIobWlucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBmb3JtYXRbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaXNJblNjb3BlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vICclJ1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDM3KSB7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBmb3JtYXRbaV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRTdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBfc3RyZnRpbWU7XG5cbiAgICAgICAgc3RyZnRpbWUubG9jYWxpemUgPSBmdW5jdGlvbihsb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUobG9jYWxlIHx8IF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgX3VzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudGltZXpvbmUgPSBmdW5jdGlvbih0aW1lem9uZSkge1xuICAgICAgICAgICAgdmFyIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gX2N1c3RvbVRpbWV6b25lT2Zmc2V0O1xuICAgICAgICAgICAgdmFyIHVzZVV0Y0Jhc2VkRGF0ZSA9IF91c2VVdGNCYXNlZERhdGU7XG5cbiAgICAgICAgICAgIHZhciB0aW1lem9uZVR5cGUgPSB0eXBlb2YgdGltZXpvbmU7XG4gICAgICAgICAgICBpZiAodGltZXpvbmVUeXBlID09PSAnbnVtYmVyJyB8fCB0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdXNlVXRjQmFzZWREYXRlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIC8vIElTTyA4NjAxIGZvcm1hdCB0aW1lem9uZSBzdHJpbmcsIFstK11ISE1NXG4gICAgICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSB0aW1lem9uZVswXSA9PT0gJy0nID8gLTEgOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG91cnMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgxLCAzKSwgMTApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlcyA9IHBhcnNlSW50KHRpbWV6b25lLnNsaWNlKDMsIDUpLCAxMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSBzaWduICogKCg2MCAqIGhvdXJzKSArIG1pbnV0ZXMpICogNjAgKiAxMDAwO1xuICAgICAgICAgICAgICAgICAgICAvLyBpbiBtaW51dGVzOiA0MjBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZXpvbmVUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICBjdXN0b21UaW1lem9uZU9mZnNldCA9IHRpbWV6b25lICogNjAgKiAxMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJmdGltZShfbG9jYWxlLCBjdXN0b21UaW1lem9uZU9mZnNldCwgdXNlVXRjQmFzZWREYXRlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHJmdGltZS51dGMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgX2N1c3RvbVRpbWV6b25lT2Zmc2V0LCB0cnVlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gc3RyZnRpbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFkVGlsbDIobnVtYmVyVG9QYWQsIHBhZGRpbmdDaGFyKSB7XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PT0gJycgfHwgbnVtYmVyVG9QYWQgPiA5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhZGRpbmdDaGFyID09IG51bGwpIHtcbiAgICAgICAgICAgIHBhZGRpbmdDaGFyID0gJzAnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYWRkaW5nQ2hhciArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwzKG51bWJlclRvUGFkKSB7XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDk5KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyVG9QYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuICcwJyArIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnMDAnICsgbnVtYmVyVG9QYWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaG91cnMxMihob3VyKSB7XG4gICAgICAgIGlmIChob3VyID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaG91ciA+IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91ciAtIDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBob3VyO1xuICAgIH1cblxuICAgIC8vIGZpcnN0V2Vla2RheTogJ3N1bmRheScgb3IgJ21vbmRheScsIGRlZmF1bHQgaXMgJ3N1bmRheSdcbiAgICAvL1xuICAgIC8vIFBpbGZlcmVkICYgcG9ydGVkIGZyb20gUnVieSdzIHN0cmZ0aW1lIGltcGxlbWVudGF0aW9uLlxuICAgIGZ1bmN0aW9uIHdlZWtOdW1iZXIoZGF0ZSwgZmlyc3RXZWVrZGF5KSB7XG4gICAgICAgIGZpcnN0V2Vla2RheSA9IGZpcnN0V2Vla2RheSB8fCAnc3VuZGF5JztcblxuICAgICAgICAvLyBUaGlzIHdvcmtzIGJ5IHNoaWZ0aW5nIHRoZSB3ZWVrZGF5IGJhY2sgYnkgb25lIGRheSBpZiB3ZVxuICAgICAgICAvLyBhcmUgdHJlYXRpbmcgTW9uZGF5IGFzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgIHZhciB3ZWVrZGF5ID0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgaWYgKGZpcnN0V2Vla2RheSA9PT0gJ21vbmRheScpIHtcbiAgICAgICAgICAgIGlmICh3ZWVrZGF5ID09PSAwKSAvLyBTdW5kYXlcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gNjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB3ZWVrZGF5LS07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZmlyc3REYXlPZlllYXJVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpLFxuICAgICAgICAgICAgZGF0ZVV0YyA9IERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSksXG4gICAgICAgICAgICB5ZGF5ID0gTWF0aC5mbG9vcigoZGF0ZVV0YyAtIGZpcnN0RGF5T2ZZZWFyVXRjKSAvIDg2NDAwMDAwKSxcbiAgICAgICAgICAgIHdlZWtOdW0gPSAoeWRheSArIDcgLSB3ZWVrZGF5KSAvIDc7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Iod2Vla051bSk7XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBvcmRpbmFsIHN1ZmZpeCBmb3IgYSBudW1iZXI6IHN0LCBuZCwgcmQsIG9yIHRoXG4gICAgZnVuY3Rpb24gb3JkaW5hbChudW1iZXIpIHtcbiAgICAgICAgdmFyIGkgPSBudW1iZXIgJSAxMDtcbiAgICAgICAgdmFyIGlpID0gbnVtYmVyICUgMTAwO1xuXG4gICAgICAgIGlmICgoaWkgPj0gMTEgJiYgaWkgPD0gMTMpIHx8IGkgPT09IDAgfHwgaSA+PSA0KSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RoJztcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuICdzdCc7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiAnbmQnO1xuICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gJ3JkJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFRpbWVzdGFtcFRvVXRjT2Zmc2V0Rm9yKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIChkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgfHwgMCkgKiA2MDAwMDtcbiAgICB9XG5cbn0oKSk7XG4iLCIoZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlIT09XCJ1bmRlZmluZWRcIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PVwidW5kZWZpbmVkXCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT1cInVuZGVmaW5lZFwiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5WaXJ0dWFsRG9tID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkoezE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKFwiLi92ZG9tL2NyZWF0ZS1lbGVtZW50LmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlRWxlbWVudFxuXG59LHtcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiOjI0fV0sMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZGlmZiA9IHJlcXVpcmUoXCIuL3Z0cmVlL2RpZmYuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbn0se1wiLi92dHJlZS9kaWZmLmpzXCI6NDd9XSwzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbi8qIVxuICogQ3Jvc3MtQnJvd3NlciBTcGxpdCAxLjEuMVxuICogQ29weXJpZ2h0IDIwMDctMjAxMiBTdGV2ZW4gTGV2aXRoYW4gPHN0ZXZlbmxldml0aGFuLmNvbT5cbiAqIEF2YWlsYWJsZSB1bmRlciB0aGUgTUlUIExpY2Vuc2VcbiAqIEVDTUFTY3JpcHQgY29tcGxpYW50LCB1bmlmb3JtIGNyb3NzLWJyb3dzZXIgc3BsaXQgbWV0aG9kXG4gKi9cblxuLyoqXG4gKiBTcGxpdHMgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdHJpbmdzIHVzaW5nIGEgcmVnZXggb3Igc3RyaW5nIHNlcGFyYXRvci4gTWF0Y2hlcyBvZiB0aGVcbiAqIHNlcGFyYXRvciBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHQgYXJyYXkuIEhvd2V2ZXIsIGlmIGBzZXBhcmF0b3JgIGlzIGEgcmVnZXggdGhhdCBjb250YWluc1xuICogY2FwdHVyaW5nIGdyb3VwcywgYmFja3JlZmVyZW5jZXMgYXJlIHNwbGljZWQgaW50byB0aGUgcmVzdWx0IGVhY2ggdGltZSBgc2VwYXJhdG9yYCBpcyBtYXRjaGVkLlxuICogRml4ZXMgYnJvd3NlciBidWdzIGNvbXBhcmVkIHRvIHRoZSBuYXRpdmUgYFN0cmluZy5wcm90b3R5cGUuc3BsaXRgIGFuZCBjYW4gYmUgdXNlZCByZWxpYWJseVxuICogY3Jvc3MtYnJvd3Nlci5cbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgU3RyaW5nIHRvIHNwbGl0LlxuICogQHBhcmFtIHtSZWdFeHB8U3RyaW5nfSBzZXBhcmF0b3IgUmVnZXggb3Igc3RyaW5nIHRvIHVzZSBmb3Igc2VwYXJhdGluZyB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHtOdW1iZXJ9IFtsaW1pdF0gTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdG8gaW5jbHVkZSBpbiB0aGUgcmVzdWx0IGFycmF5LlxuICogQHJldHVybnMge0FycmF5fSBBcnJheSBvZiBzdWJzdHJpbmdzLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBCYXNpYyB1c2VcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnKTtcbiAqIC8vIC0+IFsnYScsICdiJywgJ2MnLCAnZCddXG4gKlxuICogLy8gV2l0aCBsaW1pdFxuICogc3BsaXQoJ2EgYiBjIGQnLCAnICcsIDIpO1xuICogLy8gLT4gWydhJywgJ2InXVxuICpcbiAqIC8vIEJhY2tyZWZlcmVuY2VzIGluIHJlc3VsdCBhcnJheVxuICogc3BsaXQoJy4ud29yZDEgd29yZDIuLicsIC8oW2Etel0rKShcXGQrKS9pKTtcbiAqIC8vIC0+IFsnLi4nLCAnd29yZCcsICcxJywgJyAnLCAnd29yZCcsICcyJywgJy4uJ11cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24gc3BsaXQodW5kZWYpIHtcblxuICB2YXIgbmF0aXZlU3BsaXQgPSBTdHJpbmcucHJvdG90eXBlLnNwbGl0LFxuICAgIGNvbXBsaWFudEV4ZWNOcGNnID0gLygpPz8vLmV4ZWMoXCJcIilbMV0gPT09IHVuZGVmLFxuICAgIC8vIE5QQ0c6IG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwXG4gICAgc2VsZjtcblxuICBzZWxmID0gZnVuY3Rpb24oc3RyLCBzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBgbmF0aXZlU3BsaXRgXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzZXBhcmF0b3IpICE9PSBcIltvYmplY3QgUmVnRXhwXVwiKSB7XG4gICAgICByZXR1cm4gbmF0aXZlU3BsaXQuY2FsbChzdHIsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH1cbiAgICB2YXIgb3V0cHV0ID0gW10sXG4gICAgICBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/IFwiaVwiIDogXCJcIikgKyAoc2VwYXJhdG9yLm11bHRpbGluZSA/IFwibVwiIDogXCJcIikgKyAoc2VwYXJhdG9yLmV4dGVuZGVkID8gXCJ4XCIgOiBcIlwiKSArIC8vIFByb3Bvc2VkIGZvciBFUzZcbiAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gXCJ5XCIgOiBcIlwiKSxcbiAgICAgIC8vIEZpcmVmb3ggMytcbiAgICAgIGxhc3RMYXN0SW5kZXggPSAwLFxuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHNlcGFyYXRvciA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLnNvdXJjZSwgZmxhZ3MgKyBcImdcIiksXG4gICAgICBzZXBhcmF0b3IyLCBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoO1xuICAgIHN0ciArPSBcIlwiOyAvLyBUeXBlLWNvbnZlcnRcbiAgICBpZiAoIWNvbXBsaWFudEV4ZWNOcGNnKSB7XG4gICAgICAvLyBEb2Vzbid0IG5lZWQgZmxhZ3MgZ3ksIGJ1dCB0aGV5IGRvbid0IGh1cnRcbiAgICAgIHNlcGFyYXRvcjIgPSBuZXcgUmVnRXhwKFwiXlwiICsgc2VwYXJhdG9yLnNvdXJjZSArIFwiJCg/IVxcXFxzKVwiLCBmbGFncyk7XG4gICAgfVxuICAgIC8qIFZhbHVlcyBmb3IgYGxpbWl0YCwgcGVyIHRoZSBzcGVjOlxuICAgICAqIElmIHVuZGVmaW5lZDogNDI5NDk2NzI5NSAvLyBNYXRoLnBvdygyLCAzMikgLSAxXG4gICAgICogSWYgMCwgSW5maW5pdHksIG9yIE5hTjogMFxuICAgICAqIElmIHBvc2l0aXZlIG51bWJlcjogbGltaXQgPSBNYXRoLmZsb29yKGxpbWl0KTsgaWYgKGxpbWl0ID4gNDI5NDk2NzI5NSkgbGltaXQgLT0gNDI5NDk2NzI5NjtcbiAgICAgKiBJZiBuZWdhdGl2ZSBudW1iZXI6IDQyOTQ5NjcyOTYgLSBNYXRoLmZsb29yKE1hdGguYWJzKGxpbWl0KSlcbiAgICAgKiBJZiBvdGhlcjogVHlwZS1jb252ZXJ0LCB0aGVuIHVzZSB0aGUgYWJvdmUgcnVsZXNcbiAgICAgKi9cbiAgICBsaW1pdCA9IGxpbWl0ID09PSB1bmRlZiA/IC0xID4+PiAwIDogLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgIGxpbWl0ID4+PiAwOyAvLyBUb1VpbnQzMihsaW1pdClcbiAgICB3aGlsZSAobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdHIpKSB7XG4gICAgICAvLyBgc2VwYXJhdG9yLmxhc3RJbmRleGAgaXMgbm90IHJlbGlhYmxlIGNyb3NzLWJyb3dzZXJcbiAgICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgaWYgKGxhc3RJbmRleCA+IGxhc3RMYXN0SW5kZXgpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goc3RyLnNsaWNlKGxhc3RMYXN0SW5kZXgsIG1hdGNoLmluZGV4KSk7XG4gICAgICAgIC8vIEZpeCBicm93c2VycyB3aG9zZSBgZXhlY2AgbWV0aG9kcyBkb24ndCBjb25zaXN0ZW50bHkgcmV0dXJuIGB1bmRlZmluZWRgIGZvclxuICAgICAgICAvLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cHNcbiAgICAgICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZyAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgbWF0Y2hbMF0ucmVwbGFjZShzZXBhcmF0b3IyLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDI7IGkrKykge1xuICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZikge1xuICAgICAgICAgICAgICAgIG1hdGNoW2ldID0gdW5kZWY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMSAmJiBtYXRjaC5pbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShvdXRwdXQsIG1hdGNoLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0TGVuZ3RoID0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICBsYXN0TGFzdEluZGV4ID0gbGFzdEluZGV4O1xuICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW1pdCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2VwYXJhdG9yLmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHtcbiAgICAgICAgc2VwYXJhdG9yLmxhc3RJbmRleCsrOyAvLyBBdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdExlbmd0aCB8fCAhc2VwYXJhdG9yLnRlc3QoXCJcIikpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goXCJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltaXQgPyBvdXRwdXQuc2xpY2UoMCwgbGltaXQpIDogb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufSkoKTtcblxufSx7fV0sNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBPbmVWZXJzaW9uQ29uc3RyYWludCA9IHJlcXVpcmUoJ2luZGl2aWR1YWwvb25lLXZlcnNpb24nKTtcblxudmFyIE1ZX1ZFUlNJT04gPSAnNyc7XG5PbmVWZXJzaW9uQ29uc3RyYWludCgnZXYtc3RvcmUnLCBNWV9WRVJTSU9OKTtcblxudmFyIGhhc2hLZXkgPSAnX19FVl9TVE9SRV9LRVlAJyArIE1ZX1ZFUlNJT047XG5cbm1vZHVsZS5leHBvcnRzID0gRXZTdG9yZTtcblxuZnVuY3Rpb24gRXZTdG9yZShlbGVtKSB7XG4gICAgdmFyIGhhc2ggPSBlbGVtW2hhc2hLZXldO1xuXG4gICAgaWYgKCFoYXNoKSB7XG4gICAgICAgIGhhc2ggPSBlbGVtW2hhc2hLZXldID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc2g7XG59XG5cbn0se1wiaW5kaXZpZHVhbC9vbmUtdmVyc2lvblwiOjZ9XSw1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbid1c2Ugc3RyaWN0JztcblxuLypnbG9iYWwgd2luZG93LCBnbG9iYWwqL1xuXG52YXIgcm9vdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID9cbiAgICB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/XG4gICAgZ2xvYmFsIDoge307XG5cbm1vZHVsZS5leHBvcnRzID0gSW5kaXZpZHVhbDtcblxuZnVuY3Rpb24gSW5kaXZpZHVhbChrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSBpbiByb290KSB7XG4gICAgICAgIHJldHVybiByb290W2tleV07XG4gICAgfVxuXG4gICAgcm9vdFtrZXldID0gdmFsdWU7XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7fV0sNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBJbmRpdmlkdWFsID0gcmVxdWlyZSgnLi9pbmRleC5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9uZVZlcnNpb247XG5cbmZ1bmN0aW9uIE9uZVZlcnNpb24obW9kdWxlTmFtZSwgdmVyc2lvbiwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIGtleSA9ICdfX0lORElWSURVQUxfT05FX1ZFUlNJT05fJyArIG1vZHVsZU5hbWU7XG4gICAgdmFyIGVuZm9yY2VLZXkgPSBrZXkgKyAnX0VORk9SQ0VfU0lOR0xFVE9OJztcblxuICAgIHZhciB2ZXJzaW9uVmFsdWUgPSBJbmRpdmlkdWFsKGVuZm9yY2VLZXksIHZlcnNpb24pO1xuXG4gICAgaWYgKHZlcnNpb25WYWx1ZSAhPT0gdmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBvbmx5IGhhdmUgb25lIGNvcHkgb2YgJyArXG4gICAgICAgICAgICBtb2R1bGVOYW1lICsgJy5cXG4nICtcbiAgICAgICAgICAgICdZb3UgYWxyZWFkeSBoYXZlIHZlcnNpb24gJyArIHZlcnNpb25WYWx1ZSArXG4gICAgICAgICAgICAnIGluc3RhbGxlZC5cXG4nICtcbiAgICAgICAgICAgICdUaGlzIG1lYW5zIHlvdSBjYW5ub3QgaW5zdGFsbCB2ZXJzaW9uICcgKyB2ZXJzaW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gSW5kaXZpZHVhbChrZXksIGRlZmF1bHRWYWx1ZSk7XG59XG5cbn0se1wiLi9pbmRleC5qc1wiOjV9XSw3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbihmdW5jdGlvbiAoZ2xvYmFsKXtcbnZhciB0b3BMZXZlbCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDpcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHt9XG52YXIgbWluRG9jID0gcmVxdWlyZSgnbWluLWRvY3VtZW50Jyk7XG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudDtcbn0gZWxzZSB7XG4gICAgdmFyIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXTtcblxuICAgIGlmICghZG9jY3kpIHtcbiAgICAgICAgZG9jY3kgPSB0b3BMZXZlbFsnX19HTE9CQUxfRE9DVU1FTlRfQ0FDSEVANCddID0gbWluRG9jO1xuICAgIH1cblxuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jY3k7XG59XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJtaW4tZG9jdW1lbnRcIjoxN31dLDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcblxudmFyIENvbW1lbnQgPSByZXF1aXJlKFwiLi9kb20tY29tbWVudC5qc1wiKVxudmFyIERPTVRleHQgPSByZXF1aXJlKFwiLi9kb20tdGV4dC5qc1wiKVxudmFyIERPTUVsZW1lbnQgPSByZXF1aXJlKFwiLi9kb20tZWxlbWVudC5qc1wiKVxudmFyIERvY3VtZW50RnJhZ21lbnQgPSByZXF1aXJlKFwiLi9kb20tZnJhZ21lbnQuanNcIilcbnZhciBFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50LmpzXCIpXG52YXIgZGlzcGF0Y2hFdmVudCA9IHJlcXVpcmUoXCIuL2V2ZW50L2Rpc3BhdGNoLWV2ZW50LmpzXCIpXG52YXIgYWRkRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudDtcblxuZnVuY3Rpb24gRG9jdW1lbnQoKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERvY3VtZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IERvY3VtZW50KCk7XG4gICAgfVxuXG4gICAgdGhpcy5oZWFkID0gdGhpcy5jcmVhdGVFbGVtZW50KFwiaGVhZFwiKVxuICAgIHRoaXMuYm9keSA9IHRoaXMuY3JlYXRlRWxlbWVudChcImJvZHlcIilcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImh0bWxcIilcbiAgICB0aGlzLmRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhlYWQpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5ib2R5KVxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFt0aGlzLmRvY3VtZW50RWxlbWVudF1cbiAgICB0aGlzLm5vZGVUeXBlID0gOVxufVxuXG52YXIgcHJvdG8gPSBEb2N1bWVudC5wcm90b3R5cGU7XG5wcm90by5jcmVhdGVUZXh0Tm9kZSA9IGZ1bmN0aW9uIGNyZWF0ZVRleHROb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVFbGVtZW50TlMgPSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWdOYW1lKSB7XG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSBudWxsID8gbnVsbCA6IFN0cmluZyhuYW1lc3BhY2UpXG4gICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUsIHRoaXMsIG5zKVxufVxuXG5wcm90by5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0YWdOYW1lKSB7XG4gICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUsIHRoaXMpXG59XG5cbnByb3RvLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQgPSBmdW5jdGlvbiBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkge1xuICAgIHJldHVybiBuZXcgRG9jdW1lbnRGcmFnbWVudCh0aGlzKVxufVxuXG5wcm90by5jcmVhdGVFdmVudCA9IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50KGZhbWlseSkge1xuICAgIHJldHVybiBuZXcgRXZlbnQoZmFtaWx5KVxufVxuXG5wcm90by5jcmVhdGVDb21tZW50ID0gZnVuY3Rpb24gY3JlYXRlQ29tbWVudChkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBDb21tZW50KGRhdGEsIHRoaXMpXG59XG5cbnByb3RvLmdldEVsZW1lbnRCeUlkID0gZnVuY3Rpb24gZ2V0RWxlbWVudEJ5SWQoaWQpIHtcbiAgICBpZCA9IFN0cmluZyhpZClcblxuICAgIHZhciByZXN1bHQgPSBkb21XYWxrKHRoaXMuY2hpbGROb2RlcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKFN0cmluZyhub2RlLmlkKSA9PT0gaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlc3VsdCB8fCBudWxsXG59XG5cbnByb3RvLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lXG5wcm90by5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IERPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lXG5wcm90by5jb250YWlucyA9IERPTUVsZW1lbnQucHJvdG90eXBlLmNvbnRhaW5zXG5cbnByb3RvLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSByZW1vdmVFdmVudExpc3RlbmVyXG5wcm90by5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lclxucHJvdG8uZGlzcGF0Y2hFdmVudCA9IGRpc3BhdGNoRXZlbnRcblxufSx7XCIuL2RvbS1jb21tZW50LmpzXCI6OSxcIi4vZG9tLWVsZW1lbnQuanNcIjoxMCxcIi4vZG9tLWZyYWdtZW50LmpzXCI6MTEsXCIuL2RvbS10ZXh0LmpzXCI6MTIsXCIuL2V2ZW50LmpzXCI6MTMsXCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiOjE0LFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiOjE1LFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIjoxNixcImRvbS13YWxrXCI6MTh9XSw5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gQ29tbWVudFxuXG5mdW5jdGlvbiBDb21tZW50KGRhdGEsIG93bmVyKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENvbW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCBvd25lcilcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgPSBkYXRhXG4gICAgdGhpcy5ub2RlVmFsdWUgPSBkYXRhXG4gICAgdGhpcy5sZW5ndGggPSBkYXRhLmxlbmd0aFxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbn1cblxuQ29tbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSA4XG5Db21tZW50LnByb3RvdHlwZS5ub2RlTmFtZSA9IFwiI2NvbW1lbnRcIlxuXG5Db21tZW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9Db21tZW50X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgQ29tbWVudF1cIlxufVxuXG59LHt9XSwxMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9tV2FsayA9IHJlcXVpcmUoXCJkb20td2Fsa1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgc2VyaWFsaXplTm9kZSA9IHJlcXVpcmUoXCIuL3NlcmlhbGl6ZS5qc1wiKVxuXG52YXIgaHRtbG5zID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcblxubW9kdWxlLmV4cG9ydHMgPSBET01FbGVtZW50XG5cbmZ1bmN0aW9uIERPTUVsZW1lbnQodGFnTmFtZSwgb3duZXIsIG5hbWVzcGFjZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBET01FbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IERPTUVsZW1lbnQodGFnTmFtZSlcbiAgICB9XG5cbiAgICB2YXIgbnMgPSBuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCA/IGh0bWxucyA6IChuYW1lc3BhY2UgfHwgbnVsbClcblxuICAgIHRoaXMudGFnTmFtZSA9IG5zID09PSBodG1sbnMgPyBTdHJpbmcodGFnTmFtZSkudG9VcHBlckNhc2UoKSA6IHRhZ05hbWVcbiAgICB0aGlzLm5vZGVOYW1lID0gdGhpcy50YWdOYW1lXG4gICAgdGhpcy5jbGFzc05hbWUgPSBcIlwiXG4gICAgdGhpcy5kYXRhc2V0ID0ge31cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLnN0eWxlID0ge31cbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG4gICAgdGhpcy5uYW1lc3BhY2VVUkkgPSBuc1xuICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSB7fVxuXG4gICAgaWYgKHRoaXMudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgdGhpcy50eXBlID0gJ3RleHQnXG4gICAgfVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS50eXBlID0gXCJET01FbGVtZW50XCJcbkRPTUVsZW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gMVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IGZ1bmN0aW9uIF9FbGVtZW50X2FwcGVuZENoaWxkKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkLnBhcmVudE5vZGUpIHtcbiAgICAgICAgY2hpbGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjaGlsZClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChjaGlsZClcbiAgICBjaGlsZC5wYXJlbnROb2RlID0gdGhpc1xuXG4gICAgcmV0dXJuIGNoaWxkXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfcmVwbGFjZUNoaWxkKGVsZW0sIG5lZWRsZSkge1xuICAgICAgICAvLyBUT0RPOiBUaHJvdyBOb3RGb3VuZEVycm9yIGlmIG5lZWRsZS5wYXJlbnROb2RlICE9PSB0aGlzXG5cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgbmVlZGxlLnBhcmVudE5vZGUgPSBudWxsXG4gICAgICAgIHRoaXMuY2hpbGROb2Rlc1tpbmRleF0gPSBlbGVtXG4gICAgICAgIGVsZW0ucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgICAgICByZXR1cm4gbmVlZGxlXG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUNoaWxkKGVsZW0pIHtcbiAgICAvLyBUT0RPOiBUaHJvdyBOb3RGb3VuZEVycm9yIGlmIGVsZW0ucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZWxlbSlcbiAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGluZGV4LCAxKVxuXG4gICAgZWxlbS5wYXJlbnROb2RlID0gbnVsbFxuICAgIHJldHVybiBlbGVtXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmluc2VydEJlZm9yZSA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfaW5zZXJ0QmVmb3JlKGVsZW0sIG5lZWRsZSkge1xuICAgICAgICAvLyBUT0RPOiBUaHJvdyBOb3RGb3VuZEVycm9yIGlmIHJlZmVyZW5jZUVsZW1lbnQgaXMgYSBkb20gbm9kZVxuICAgICAgICAvLyBhbmQgcGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gbmVlZGxlID09PSBudWxsIHx8IG5lZWRsZSA9PT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgIC0xIDpcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKG5lZWRsZSlcblxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMCwgZWxlbSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGVsZW0pXG4gICAgICAgIH1cblxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG4gICAgICAgIHJldHVybiBlbGVtXG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICB2YXIgcHJlZml4ID0gbnVsbFxuICAgICAgICB2YXIgbG9jYWxOYW1lID0gbmFtZVxuICAgICAgICB2YXIgY29sb25Qb3NpdGlvbiA9IG5hbWUuaW5kZXhPZihcIjpcIilcbiAgICAgICAgaWYgKGNvbG9uUG9zaXRpb24gPiAtMSkge1xuICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHIoMCwgY29sb25Qb3NpdGlvbilcbiAgICAgICAgICAgIGxvY2FsTmFtZSA9IG5hbWUuc3Vic3RyKGNvbG9uUG9zaXRpb24gKyAxKVxuICAgICAgICB9XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdIHx8ICh0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV0gPSB7fSlcbiAgICAgICAgYXR0cmlidXRlc1tsb2NhbE5hbWVdID0ge3ZhbHVlOiB2YWx1ZSwgcHJlZml4OiBwcmVmaXh9XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdO1xuICAgICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzICYmIGF0dHJpYnV0ZXNbbmFtZV0gJiYgYXR0cmlidXRlc1tuYW1lXS52YWx1ZVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUyA9XG4gICAgZnVuY3Rpb24gX0VsZW1lbnRfcmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdO1xuICAgICAgICBpZiAoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgZGVsZXRlIGF0dHJpYnV0ZXNbbmFtZV1cbiAgICAgICAgfVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXVxuICAgICAgICByZXR1cm4gISFhdHRyaWJ1dGVzICYmIG5hbWUgaW4gYXR0cmlidXRlcztcbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnNldEF0dHJpYnV0ZU5TKG51bGwsIG5hbWUsIHZhbHVlKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9nZXRBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuaGFzQXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfaGFzQXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxuRE9NRWxlbWVudC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbi8vIFVuLWltcGxlbWVudGVkXG5ET01FbGVtZW50LnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uIF9FbGVtZW50X2ZvY3VzKCkge1xuICAgIHJldHVybiB2b2lkIDBcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfRWxlbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gc2VyaWFsaXplTm9kZSh0aGlzKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWVzKSB7XG4gICAgdmFyIGNsYXNzZXMgPSBjbGFzc05hbWVzLnNwbGl0KFwiIFwiKTtcbiAgICB2YXIgZWxlbXMgPSBbXVxuXG4gICAgZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc05hbWUgPSBub2RlLmNsYXNzTmFtZSB8fCBcIlwiXG4gICAgICAgICAgICB2YXIgbm9kZUNsYXNzZXMgPSBub2RlQ2xhc3NOYW1lLnNwbGl0KFwiIFwiKVxuXG4gICAgICAgICAgICBpZiAoY2xhc3Nlcy5ldmVyeShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlQ2xhc3Nlcy5pbmRleE9mKGl0ZW0pICE9PSAtMVxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBlbGVtcy5wdXNoKG5vZGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGVsZW1zXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSkge1xuICAgIHRhZ05hbWUgPSB0YWdOYW1lLnRvTG93ZXJDYXNlKClcbiAgICB2YXIgZWxlbXMgPSBbXVxuXG4gICAgZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxICYmICh0YWdOYW1lID09PSAnKicgfHwgbm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUpKSB7XG4gICAgICAgICAgICBlbGVtcy5wdXNoKG5vZGUpXG4gICAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGVsZW1zXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gX0VsZW1lbnRfY29udGFpbnMoZWxlbWVudCkge1xuICAgIHJldHVybiBkb21XYWxrKHRoaXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50ID09PSBub2RlXG4gICAgfSkgfHwgZmFsc2Vcbn1cblxufSx7XCIuL2V2ZW50L2FkZC1ldmVudC1saXN0ZW5lci5qc1wiOjE0LFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiOjE1LFwiLi9ldmVudC9yZW1vdmUtZXZlbnQtbGlzdGVuZXIuanNcIjoxNixcIi4vc2VyaWFsaXplLmpzXCI6MTksXCJkb20td2Fsa1wiOjE4fV0sMTE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIERPTUVsZW1lbnQgPSByZXF1aXJlKFwiLi9kb20tZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50RnJhZ21lbnRcblxuZnVuY3Rpb24gRG9jdW1lbnRGcmFnbWVudChvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQoKVxuICAgIH1cblxuICAgIHRoaXMuY2hpbGROb2RlcyA9IFtdXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbFxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbn1cblxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRG9jdW1lbnRGcmFnbWVudFwiXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDExXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5ub2RlTmFtZSA9IFwiI2RvY3VtZW50LWZyYWdtZW50XCJcblxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgID0gRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZCA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZFxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgID0gRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRcblxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPVxuICAgIGZ1bmN0aW9uIF9Eb2N1bWVudEZyYWdtZW50X3RvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLm1hcChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhub2RlKVxuICAgICAgICB9KS5qb2luKFwiXCIpXG4gICAgfVxuXG59LHtcIi4vZG9tLWVsZW1lbnQuanNcIjoxMH1dLDEyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRE9NVGV4dFxuXG5mdW5jdGlvbiBET01UZXh0KHZhbHVlLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBET01UZXh0KSkge1xuICAgICAgICByZXR1cm4gbmV3IERPTVRleHQodmFsdWUpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gdmFsdWUgfHwgXCJcIlxuICAgIHRoaXMubGVuZ3RoID0gdGhpcy5kYXRhLmxlbmd0aFxuICAgIHRoaXMub3duZXJEb2N1bWVudCA9IG93bmVyIHx8IG51bGxcbn1cblxuRE9NVGV4dC5wcm90b3R5cGUudHlwZSA9IFwiRE9NVGV4dE5vZGVcIlxuRE9NVGV4dC5wcm90b3R5cGUubm9kZVR5cGUgPSAzXG5ET01UZXh0LnByb3RvdHlwZS5ub2RlTmFtZSA9IFwiI3RleHRcIlxuXG5ET01UZXh0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIF9UZXh0X3RvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFcbn1cblxuRE9NVGV4dC5wcm90b3R5cGUucmVwbGFjZURhdGEgPSBmdW5jdGlvbiByZXBsYWNlRGF0YShpbmRleCwgbGVuZ3RoLCB2YWx1ZSkge1xuICAgIHZhciBjdXJyZW50ID0gdGhpcy5kYXRhXG4gICAgdmFyIGxlZnQgPSBjdXJyZW50LnN1YnN0cmluZygwLCBpbmRleClcbiAgICB2YXIgcmlnaHQgPSBjdXJyZW50LnN1YnN0cmluZyhpbmRleCArIGxlbmd0aCwgY3VycmVudC5sZW5ndGgpXG4gICAgdGhpcy5kYXRhID0gbGVmdCArIHZhbHVlICsgcmlnaHRcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbn1cblxufSx7fV0sMTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBFdmVudFxuXG5mdW5jdGlvbiBFdmVudChmYW1pbHkpIHt9XG5cbkV2ZW50LnByb3RvdHlwZS5pbml0RXZlbnQgPSBmdW5jdGlvbiBfRXZlbnRfaW5pdEV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlXG4gICAgdGhpcy5idWJibGVzID0gYnViYmxlc1xuICAgIHRoaXMuY2FuY2VsYWJsZSA9IGNhbmNlbGFibGVcbn1cblxuRXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0ID0gZnVuY3Rpb24gX0V2ZW50X3ByZXZlbnREZWZhdWx0KCkge1xuICAgIFxufVxuXG59LHt9XSwxNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGFkZEV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVyc1t0eXBlXSkge1xuICAgICAgICBlbGVtLmxpc3RlbmVyc1t0eXBlXSA9IFtdXG4gICAgfVxuXG4gICAgaWYgKGVsZW0ubGlzdGVuZXJzW3R5cGVdLmluZGV4T2YobGlzdGVuZXIpID09PSAtMSkge1xuICAgICAgICBlbGVtLmxpc3RlbmVyc1t0eXBlXS5wdXNoKGxpc3RlbmVyKVxuICAgIH1cbn1cblxufSx7fV0sMTU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBkaXNwYXRjaEV2ZW50XG5cbmZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXYpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcbiAgICB2YXIgdHlwZSA9IGV2LnR5cGVcblxuICAgIGlmICghZXYudGFyZ2V0KSB7XG4gICAgICAgIGV2LnRhcmdldCA9IGVsZW1cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIGVsZW0ubGlzdGVuZXJzID0ge31cbiAgICB9XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cblxuICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RlbmVycy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0ZW5lcikge1xuICAgICAgICAgICAgZXYuY3VycmVudFRhcmdldCA9IGVsZW1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcihldilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuaGFuZGxlRXZlbnQoZXYpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICBlbGVtLnBhcmVudE5vZGUuZGlzcGF0Y2hFdmVudChldilcbiAgICB9XG59XG5cbn0se31dLDE2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxuXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGxpc3QgPSBlbGVtLmxpc3RlbmVyc1t0eXBlXVxuICAgIHZhciBpbmRleCA9IGxpc3QuaW5kZXhPZihsaXN0ZW5lcilcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGxpc3Quc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbn1cblxufSx7fV0sMTc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIERvY3VtZW50ID0gcmVxdWlyZSgnLi9kb2N1bWVudC5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBEb2N1bWVudCgpO1xuXG59LHtcIi4vZG9jdW1lbnQuanNcIjo4fV0sMTg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gaXRlcmF0aXZlbHlXYWxrXG5cbmZ1bmN0aW9uIGl0ZXJhdGl2ZWx5V2Fsayhub2RlcywgY2IpIHtcbiAgICBpZiAoISgnbGVuZ3RoJyBpbiBub2RlcykpIHtcbiAgICAgICAgbm9kZXMgPSBbbm9kZXNdXG4gICAgfVxuICAgIFxuICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlcylcblxuICAgIHdoaWxlKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzLnNoaWZ0KCksXG4gICAgICAgICAgICByZXQgPSBjYihub2RlKVxuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmNoaWxkTm9kZXMgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgbm9kZXMgPSBzbGljZS5jYWxsKG5vZGUuY2hpbGROb2RlcykuY29uY2F0KG5vZGVzKVxuICAgICAgICB9XG4gICAgfVxufVxuXG59LHt9XSwxOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHNlcmlhbGl6ZU5vZGVcblxudmFyIHZvaWRFbGVtZW50cyA9IC9hcmVhfGJhc2V8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxrZXlnZW58bGlua3xtZW51aXRlbXxtZXRhfHBhcmFtfHNvdXJjZXx0cmFja3x3YnIvaTtcblxuZnVuY3Rpb24gc2VyaWFsaXplTm9kZShub2RlKSB7XG4gICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKSB7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiBlc2NhcGVUZXh0KG5vZGUuZGF0YSlcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIFwiPCEtLVwiICsgbm9kZS5kYXRhICsgXCItLT5cIlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUVsZW1lbnQobm9kZSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUVsZW1lbnQoZWxlbSkge1xuICAgIHZhciBzdHJpbmdzID0gW11cblxuICAgIHZhciB0YWduYW1lID0gZWxlbS50YWdOYW1lXG5cbiAgICBpZiAoZWxlbS5uYW1lc3BhY2VVUkkgPT09IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKSB7XG4gICAgICAgIHRhZ25hbWUgPSB0YWduYW1lLnRvTG93ZXJDYXNlKClcbiAgICB9XG5cbiAgICBzdHJpbmdzLnB1c2goXCI8XCIgKyB0YWduYW1lICsgcHJvcGVydGllcyhlbGVtKSArIGRhdGFzZXRpZnkoZWxlbSkpXG5cbiAgICBpZiAodm9pZEVsZW1lbnRzLnRlc3QodGFnbmFtZSkpIHtcbiAgICAgICAgc3RyaW5ncy5wdXNoKFwiIC8+XCIpXG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RyaW5ncy5wdXNoKFwiPlwiKVxuXG4gICAgICAgIGlmIChlbGVtLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2guYXBwbHkoc3RyaW5ncywgZWxlbS5jaGlsZE5vZGVzLm1hcChzZXJpYWxpemVOb2RlKSlcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0KSB7XG4gICAgICAgICAgICBzdHJpbmdzLnB1c2goZXNjYXBlVGV4dChlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0KSlcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtLmlubmVySFRNTCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVsZW0uaW5uZXJIVE1MKVxuICAgICAgICB9XG5cbiAgICAgICAgc3RyaW5ncy5wdXNoKFwiPC9cIiArIHRhZ25hbWUgKyBcIj5cIilcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5ncy5qb2luKFwiXCIpXG59XG5cbmZ1bmN0aW9uIGlzUHJvcGVydHkoZWxlbSwga2V5KSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgZWxlbVtrZXldXG5cbiAgICBpZiAoa2V5ID09PSBcInN0eWxlXCIgJiYgT2JqZWN0LmtleXMoZWxlbS5zdHlsZSkubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICh0eXBlID09PSBcInN0cmluZ1wiIHx8IHR5cGUgPT09IFwiYm9vbGVhblwiIHx8IHR5cGUgPT09IFwibnVtYmVyXCIpICYmXG4gICAgICAgIGtleSAhPT0gXCJub2RlTmFtZVwiICYmIGtleSAhPT0gXCJjbGFzc05hbWVcIiAmJiBrZXkgIT09IFwidGFnTmFtZVwiICYmXG4gICAgICAgIGtleSAhPT0gXCJ0ZXh0Q29udGVudFwiICYmIGtleSAhPT0gXCJpbm5lclRleHRcIiAmJiBrZXkgIT09IFwibmFtZXNwYWNlVVJJXCIgJiYgIGtleSAhPT0gXCJpbm5lckhUTUxcIlxufVxuXG5mdW5jdGlvbiBzdHlsaWZ5KHN0eWxlcykge1xuICAgIGlmICh0eXBlb2Ygc3R5bGVzID09PSAnc3RyaW5nJykgcmV0dXJuIHN0eWxlc1xuICAgIHZhciBhdHRyID0gXCJcIlxuICAgIE9iamVjdC5rZXlzKHN0eWxlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlc1trZXldXG4gICAgICAgIGtleSA9IGtleS5yZXBsYWNlKC9bQS1aXS9nLCBmdW5jdGlvbihjKSB7XG4gICAgICAgICAgICByZXR1cm4gXCItXCIgKyBjLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIGF0dHIgKz0ga2V5ICsgXCI6XCIgKyB2YWx1ZSArIFwiO1wiXG4gICAgfSlcbiAgICByZXR1cm4gYXR0clxufVxuXG5mdW5jdGlvbiBkYXRhc2V0aWZ5KGVsZW0pIHtcbiAgICB2YXIgZHMgPSBlbGVtLmRhdGFzZXRcbiAgICB2YXIgcHJvcHMgPSBbXVxuXG4gICAgZm9yICh2YXIga2V5IGluIGRzKSB7XG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBcImRhdGEtXCIgKyBrZXksIHZhbHVlOiBkc1trZXldIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShsaXN0KSB7XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBbXVxuICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAodHVwbGUpIHtcbiAgICAgICAgdmFyIG5hbWUgPSB0dXBsZS5uYW1lXG4gICAgICAgIHZhciB2YWx1ZSA9IHR1cGxlLnZhbHVlXG5cbiAgICAgICAgaWYgKG5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgdmFsdWUgPSBzdHlsaWZ5KHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgYXR0cmlidXRlcy5wdXNoKG5hbWUgKyBcIj1cIiArIFwiXFxcIlwiICsgZXNjYXBlQXR0cmlidXRlVmFsdWUodmFsdWUpICsgXCJcXFwiXCIpXG4gICAgfSlcblxuICAgIHJldHVybiBhdHRyaWJ1dGVzLmxlbmd0aCA/IFwiIFwiICsgYXR0cmlidXRlcy5qb2luKFwiIFwiKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gcHJvcGVydGllcyhlbGVtKSB7XG4gICAgdmFyIHByb3BzID0gW11cbiAgICBmb3IgKHZhciBrZXkgaW4gZWxlbSkge1xuICAgICAgICBpZiAoaXNQcm9wZXJ0eShlbGVtLCBrZXkpKSB7XG4gICAgICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZToga2V5LCB2YWx1ZTogZWxlbVtrZXldIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBucyBpbiBlbGVtLl9hdHRyaWJ1dGVzKSB7XG4gICAgICBmb3IgKHZhciBhdHRyaWJ1dGUgaW4gZWxlbS5fYXR0cmlidXRlc1tuc10pIHtcbiAgICAgICAgdmFyIHByb3AgPSBlbGVtLl9hdHRyaWJ1dGVzW25zXVthdHRyaWJ1dGVdXG4gICAgICAgIHZhciBuYW1lID0gKHByb3AucHJlZml4ID8gcHJvcC5wcmVmaXggKyBcIjpcIiA6IFwiXCIpICsgYXR0cmlidXRlXG4gICAgICAgIHByb3BzLnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZTogcHJvcC52YWx1ZSB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbGVtLmNsYXNzTmFtZSkge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJjbGFzc1wiLCB2YWx1ZTogZWxlbS5jbGFzc05hbWUgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHMubGVuZ3RoID8gc3RyaW5naWZ5KHByb3BzKSA6IFwiXCJcbn1cblxuZnVuY3Rpb24gZXNjYXBlVGV4dChzKSB7XG4gICAgdmFyIHN0ciA9ICcnO1xuXG4gICAgaWYgKHR5cGVvZihzKSA9PT0gJ3N0cmluZycpIHsgXG4gICAgICAgIHN0ciA9IHM7IFxuICAgIH0gZWxzZSBpZiAocykge1xuICAgICAgICBzdHIgPSBzLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0clxuICAgICAgICAucmVwbGFjZSgvJi9nLCBcIiZhbXA7XCIpXG4gICAgICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgICAgICAucmVwbGFjZSgvPi9nLCBcIiZndDtcIilcbn1cblxuZnVuY3Rpb24gZXNjYXBlQXR0cmlidXRlVmFsdWUoc3RyKSB7XG4gICAgcmV0dXJuIGVzY2FwZVRleHQoc3RyKS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxufVxuXG59LHt9XSwyMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5cInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc09iamVjdCh4KSB7XG5cdHJldHVybiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiB4ICE9PSBudWxsO1xufTtcblxufSx7fV0sMjE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIG5hdGl2ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5XG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nXG5cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlSXNBcnJheSB8fCBpc0FycmF5XG5cbmZ1bmN0aW9uIGlzQXJyYXkob2JqKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiXG59XG5cbn0se31dLDIyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBwYXRjaCA9IHJlcXVpcmUoXCIuL3Zkb20vcGF0Y2guanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaFxuXG59LHtcIi4vdmRvbS9wYXRjaC5qc1wiOjI3fV0sMjM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZShcImlzLW9iamVjdFwiKVxudmFyIGlzSG9vayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12aG9vay5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UHJvcGVydGllc1xuXG5mdW5jdGlvbiBhcHBseVByb3BlcnRpZXMobm9kZSwgcHJvcHMsIHByZXZpb3VzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXVxuXG4gICAgICAgIGlmIChwcm9wVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShub2RlLCBwcm9wTmFtZSwgcHJvcFZhbHVlLCBwcmV2aW91cylcbiAgICAgICAgICAgIGlmIChwcm9wVmFsdWUuaG9vaykge1xuICAgICAgICAgICAgICAgIHByb3BWYWx1ZS5ob29rKG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIHByb3BOYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyA/IHByZXZpb3VzW3Byb3BOYW1lXSA6IHVuZGVmaW5lZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc09iamVjdChwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcGF0Y2hPYmplY3Qobm9kZSwgcHJvcHMsIHByZXZpb3VzLCBwcm9wTmFtZSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBwcm9wVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpIHtcbiAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzVmFsdWUgPSBwcmV2aW91c1twcm9wTmFtZV1cblxuICAgICAgICBpZiAoIWlzSG9vayhwcmV2aW91c1ZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGF0dHJOYW1lIGluIHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3R5bGVbaV0gPSBcIlwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJldmlvdXNWYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gXCJcIlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwcmV2aW91c1ZhbHVlLnVuaG9vaykge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZS51bmhvb2sobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcGF0Y2hPYmplY3Qobm9kZSwgcHJvcHMsIHByZXZpb3VzLCBwcm9wTmFtZSwgcHJvcFZhbHVlKSB7XG4gICAgdmFyIHByZXZpb3VzVmFsdWUgPSBwcmV2aW91cyA/IHByZXZpb3VzW3Byb3BOYW1lXSA6IHVuZGVmaW5lZFxuXG4gICAgLy8gU2V0IGF0dHJpYnV0ZXNcbiAgICBpZiAocHJvcE5hbWUgPT09IFwiYXR0cmlidXRlc1wiKSB7XG4gICAgICAgIGZvciAodmFyIGF0dHJOYW1lIGluIHByb3BWYWx1ZSkge1xuICAgICAgICAgICAgdmFyIGF0dHJWYWx1ZSA9IHByb3BWYWx1ZVthdHRyTmFtZV1cblxuICAgICAgICAgICAgaWYgKGF0dHJWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCBhdHRyVmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZihwcmV2aW91c1ZhbHVlICYmIGlzT2JqZWN0KHByZXZpb3VzVmFsdWUpICYmXG4gICAgICAgIGdldFByb3RvdHlwZShwcmV2aW91c1ZhbHVlKSAhPT0gZ2V0UHJvdG90eXBlKHByb3BWYWx1ZSkpIHtcbiAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBwcm9wVmFsdWVcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFpc09iamVjdChub2RlW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSB7fVxuICAgIH1cblxuICAgIHZhciByZXBsYWNlciA9IHByb3BOYW1lID09PSBcInN0eWxlXCIgPyBcIlwiIDogdW5kZWZpbmVkXG5cbiAgICBmb3IgKHZhciBrIGluIHByb3BWYWx1ZSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwcm9wVmFsdWVba11cbiAgICAgICAgbm9kZVtwcm9wTmFtZV1ba10gPSAodmFsdWUgPT09IHVuZGVmaW5lZCkgPyByZXBsYWNlciA6IHZhbHVlXG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRQcm90b3R5cGUodmFsdWUpIHtcbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5fX3Byb3RvX18pIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLl9fcHJvdG9fX1xuICAgIH0gZWxzZSBpZiAodmFsdWUuY29uc3RydWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICAgIH1cbn1cblxufSx7XCIuLi92bm9kZS9pcy12aG9vay5qc1wiOjM4LFwiaXMtb2JqZWN0XCI6MjB9XSwyNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKFwiZ2xvYmFsL2RvY3VtZW50XCIpXG5cbnZhciBhcHBseVByb3BlcnRpZXMgPSByZXF1aXJlKFwiLi9hcHBseS1wcm9wZXJ0aWVzXCIpXG5cbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxudmFyIGhhbmRsZVRodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2hhbmRsZS10aHVuay5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh2bm9kZSwgb3B0cykge1xuICAgIHZhciBkb2MgPSBvcHRzID8gb3B0cy5kb2N1bWVudCB8fCBkb2N1bWVudCA6IGRvY3VtZW50XG4gICAgdmFyIHdhcm4gPSBvcHRzID8gb3B0cy53YXJuIDogbnVsbFxuXG4gICAgdm5vZGUgPSBoYW5kbGVUaHVuayh2bm9kZSkuYVxuXG4gICAgaWYgKGlzV2lkZ2V0KHZub2RlKSkge1xuICAgICAgICByZXR1cm4gdm5vZGUuaW5pdCgpXG4gICAgfSBlbHNlIGlmIChpc1ZUZXh0KHZub2RlKSkge1xuICAgICAgICByZXR1cm4gZG9jLmNyZWF0ZVRleHROb2RlKHZub2RlLnRleHQpXG4gICAgfSBlbHNlIGlmICghaXNWTm9kZSh2bm9kZSkpIHtcbiAgICAgICAgaWYgKHdhcm4pIHtcbiAgICAgICAgICAgIHdhcm4oXCJJdGVtIGlzIG5vdCBhIHZhbGlkIHZpcnR1YWwgZG9tIG5vZGVcIiwgdm5vZGUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9ICh2bm9kZS5uYW1lc3BhY2UgPT09IG51bGwpID9cbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnQodm5vZGUudGFnTmFtZSkgOlxuICAgICAgICBkb2MuY3JlYXRlRWxlbWVudE5TKHZub2RlLm5hbWVzcGFjZSwgdm5vZGUudGFnTmFtZSlcblxuICAgIHZhciBwcm9wcyA9IHZub2RlLnByb3BlcnRpZXNcbiAgICBhcHBseVByb3BlcnRpZXMobm9kZSwgcHJvcHMpXG5cbiAgICB2YXIgY2hpbGRyZW4gPSB2bm9kZS5jaGlsZHJlblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGROb2RlID0gY3JlYXRlRWxlbWVudChjaGlsZHJlbltpXSwgb3B0cylcbiAgICAgICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZE5vZGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVuay5qc1wiOjM2LFwiLi4vdm5vZGUvaXMtdm5vZGUuanNcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0LmpzXCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4vYXBwbHktcHJvcGVydGllc1wiOjIzLFwiZ2xvYmFsL2RvY3VtZW50XCI6N31dLDI1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbi8vIE1hcHMgYSB2aXJ0dWFsIERPTSB0cmVlIG9udG8gYSByZWFsIERPTSB0cmVlIGluIGFuIGVmZmljaWVudCBtYW5uZXIuXG4vLyBXZSBkb24ndCB3YW50IHRvIHJlYWQgYWxsIG9mIHRoZSBET00gbm9kZXMgaW4gdGhlIHRyZWUgc28gd2UgdXNlXG4vLyB0aGUgaW4tb3JkZXIgdHJlZSBpbmRleGluZyB0byBlbGltaW5hdGUgcmVjdXJzaW9uIGRvd24gY2VydGFpbiBicmFuY2hlcy5cbi8vIFdlIG9ubHkgcmVjdXJzZSBpbnRvIGEgRE9NIG5vZGUgaWYgd2Uga25vdyB0aGF0IGl0IGNvbnRhaW5zIGEgY2hpbGQgb2Zcbi8vIGludGVyZXN0LlxuXG52YXIgbm9DaGlsZCA9IHt9XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tSW5kZXhcblxuZnVuY3Rpb24gZG9tSW5kZXgocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzKSB7XG4gICAgaWYgKCFpbmRpY2VzIHx8IGluZGljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGljZXMuc29ydChhc2NlbmRpbmcpXG4gICAgICAgIHJldHVybiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2RlcywgMClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlY3Vyc2Uocm9vdE5vZGUsIHRyZWUsIGluZGljZXMsIG5vZGVzLCByb290SW5kZXgpIHtcbiAgICBub2RlcyA9IG5vZGVzIHx8IHt9XG5cblxuICAgIGlmIChyb290Tm9kZSkge1xuICAgICAgICBpZiAoaW5kZXhJblJhbmdlKGluZGljZXMsIHJvb3RJbmRleCwgcm9vdEluZGV4KSkge1xuICAgICAgICAgICAgbm9kZXNbcm9vdEluZGV4XSA9IHJvb3ROb2RlXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdkNoaWxkcmVuID0gdHJlZS5jaGlsZHJlblxuXG4gICAgICAgIGlmICh2Q2hpbGRyZW4pIHtcblxuICAgICAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSByb290Tm9kZS5jaGlsZE5vZGVzXG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJvb3RJbmRleCArPSAxXG5cbiAgICAgICAgICAgICAgICB2YXIgdkNoaWxkID0gdkNoaWxkcmVuW2ldIHx8IG5vQ2hpbGRcbiAgICAgICAgICAgICAgICB2YXIgbmV4dEluZGV4ID0gcm9vdEluZGV4ICsgKHZDaGlsZC5jb3VudCB8fCAwKVxuXG4gICAgICAgICAgICAgICAgLy8gc2tpcCByZWN1cnNpb24gZG93biB0aGUgdHJlZSBpZiB0aGVyZSBhcmUgbm8gbm9kZXMgZG93biBoZXJlXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIG5leHRJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjdXJzZShjaGlsZE5vZGVzW2ldLCB2Q2hpbGQsIGluZGljZXMsIG5vZGVzLCByb290SW5kZXgpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcm9vdEluZGV4ID0gbmV4dEluZGV4XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbn1cblxuLy8gQmluYXJ5IHNlYXJjaCBmb3IgYW4gaW5kZXggaW4gdGhlIGludGVydmFsIFtsZWZ0LCByaWdodF1cbmZ1bmN0aW9uIGluZGV4SW5SYW5nZShpbmRpY2VzLCBsZWZ0LCByaWdodCkge1xuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICB2YXIgbWluSW5kZXggPSAwXG4gICAgdmFyIG1heEluZGV4ID0gaW5kaWNlcy5sZW5ndGggLSAxXG4gICAgdmFyIGN1cnJlbnRJbmRleFxuICAgIHZhciBjdXJyZW50SXRlbVxuXG4gICAgd2hpbGUgKG1pbkluZGV4IDw9IG1heEluZGV4KSB7XG4gICAgICAgIGN1cnJlbnRJbmRleCA9ICgobWF4SW5kZXggKyBtaW5JbmRleCkgLyAyKSA+PiAwXG4gICAgICAgIGN1cnJlbnRJdGVtID0gaW5kaWNlc1tjdXJyZW50SW5kZXhdXG5cbiAgICAgICAgaWYgKG1pbkluZGV4ID09PSBtYXhJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtID49IGxlZnQgJiYgY3VycmVudEl0ZW0gPD0gcmlnaHRcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SXRlbSA8IGxlZnQpIHtcbiAgICAgICAgICAgIG1pbkluZGV4ID0gY3VycmVudEluZGV4ICsgMVxuICAgICAgICB9IGVsc2UgIGlmIChjdXJyZW50SXRlbSA+IHJpZ2h0KSB7XG4gICAgICAgICAgICBtYXhJbmRleCA9IGN1cnJlbnRJbmRleCAtIDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gICAgcmV0dXJuIGEgPiBiID8gMSA6IC0xXG59XG5cbn0se31dLDI2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBhcHBseVByb3BlcnRpZXMgPSByZXF1aXJlKFwiLi9hcHBseS1wcm9wZXJ0aWVzXCIpXG5cbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBWUGF0Y2ggPSByZXF1aXJlKFwiLi4vdm5vZGUvdnBhdGNoLmpzXCIpXG5cbnZhciB1cGRhdGVXaWRnZXQgPSByZXF1aXJlKFwiLi91cGRhdGUtd2lkZ2V0XCIpXG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHlQYXRjaFxuXG5mdW5jdGlvbiBhcHBseVBhdGNoKHZwYXRjaCwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciB0eXBlID0gdnBhdGNoLnR5cGVcbiAgICB2YXIgdk5vZGUgPSB2cGF0Y2gudk5vZGVcbiAgICB2YXIgcGF0Y2ggPSB2cGF0Y2gucGF0Y2hcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFZQYXRjaC5SRU1PVkU6XG4gICAgICAgICAgICByZXR1cm4gcmVtb3ZlTm9kZShkb21Ob2RlLCB2Tm9kZSlcbiAgICAgICAgY2FzZSBWUGF0Y2guSU5TRVJUOlxuICAgICAgICAgICAgcmV0dXJuIGluc2VydE5vZGUoZG9tTm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZURVhUOlxuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ1BhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guV0lER0VUOlxuICAgICAgICAgICAgcmV0dXJuIHdpZGdldFBhdGNoKGRvbU5vZGUsIHZOb2RlLCBwYXRjaCwgcmVuZGVyT3B0aW9ucylcbiAgICAgICAgY2FzZSBWUGF0Y2guVk5PREU6XG4gICAgICAgICAgICByZXR1cm4gdk5vZGVQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLk9SREVSOlxuICAgICAgICAgICAgcmVvcmRlckNoaWxkcmVuKGRvbU5vZGUsIHBhdGNoKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guUFJPUFM6XG4gICAgICAgICAgICBhcHBseVByb3BlcnRpZXMoZG9tTm9kZSwgcGF0Y2gsIHZOb2RlLnByb3BlcnRpZXMpXG4gICAgICAgICAgICByZXR1cm4gZG9tTm9kZVxuICAgICAgICBjYXNlIFZQYXRjaC5USFVOSzpcbiAgICAgICAgICAgIHJldHVybiByZXBsYWNlUm9vdChkb21Ob2RlLFxuICAgICAgICAgICAgICAgIHJlbmRlck9wdGlvbnMucGF0Y2goZG9tTm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkb21Ob2RlKVxuICAgIH1cblxuICAgIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdk5vZGUpO1xuXG4gICAgcmV0dXJuIG51bGxcbn1cblxuZnVuY3Rpb24gaW5zZXJ0Tm9kZShwYXJlbnROb2RlLCB2Tm9kZSwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodk5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKG5ld05vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudE5vZGVcbn1cblxuZnVuY3Rpb24gc3RyaW5nUGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB2VGV4dCwgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoZG9tTm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICBkb21Ob2RlLnJlcGxhY2VEYXRhKDAsIGRvbU5vZGUubGVuZ3RoLCB2VGV4dC50ZXh0KVxuICAgICAgICBuZXdOb2RlID0gZG9tTm9kZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG4gICAgICAgIG5ld05vZGUgPSByZW5kZXJPcHRpb25zLnJlbmRlcih2VGV4dCwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICBpZiAocGFyZW50Tm9kZSAmJiBuZXdOb2RlICE9PSBkb21Ob2RlKSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gd2lkZ2V0UGF0Y2goZG9tTm9kZSwgbGVmdFZOb2RlLCB3aWRnZXQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdXBkYXRpbmcgPSB1cGRhdGVXaWRnZXQobGVmdFZOb2RlLCB3aWRnZXQpXG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmICh1cGRhdGluZykge1xuICAgICAgICBuZXdOb2RlID0gd2lkZ2V0LnVwZGF0ZShsZWZ0Vk5vZGUsIGRvbU5vZGUpIHx8IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIod2lkZ2V0LCByZW5kZXJPcHRpb25zKVxuICAgIH1cblxuICAgIHZhciBwYXJlbnROb2RlID0gZG9tTm9kZS5wYXJlbnROb2RlXG5cbiAgICBpZiAocGFyZW50Tm9kZSAmJiBuZXdOb2RlICE9PSBkb21Ob2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgfVxuXG4gICAgaWYgKCF1cGRhdGluZykge1xuICAgICAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIGxlZnRWTm9kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZVxufVxuXG5mdW5jdGlvbiB2Tm9kZVBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgIHZhciBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodk5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICBpZiAocGFyZW50Tm9kZSAmJiBuZXdOb2RlICE9PSBkb21Ob2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld05vZGUsIGRvbU5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gZGVzdHJveVdpZGdldChkb21Ob2RlLCB3KSB7XG4gICAgaWYgKHR5cGVvZiB3LmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIiAmJiBpc1dpZGdldCh3KSkge1xuICAgICAgICB3LmRlc3Ryb3koZG9tTm9kZSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBtb3Zlcykge1xuICAgIHZhciBjaGlsZE5vZGVzID0gZG9tTm9kZS5jaGlsZE5vZGVzXG4gICAgdmFyIGtleU1hcCA9IHt9XG4gICAgdmFyIG5vZGVcbiAgICB2YXIgcmVtb3ZlXG4gICAgdmFyIGluc2VydFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb3Zlcy5yZW1vdmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlbW92ZSA9IG1vdmVzLnJlbW92ZXNbaV1cbiAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbcmVtb3ZlLmZyb21dXG4gICAgICAgIGlmIChyZW1vdmUua2V5KSB7XG4gICAgICAgICAgICBrZXlNYXBbcmVtb3ZlLmtleV0gPSBub2RlXG4gICAgICAgIH1cbiAgICAgICAgZG9tTm9kZS5yZW1vdmVDaGlsZChub2RlKVxuICAgIH1cblxuICAgIHZhciBsZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aFxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbW92ZXMuaW5zZXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICBpbnNlcnQgPSBtb3Zlcy5pbnNlcnRzW2pdXG4gICAgICAgIG5vZGUgPSBrZXlNYXBbaW5zZXJ0LmtleV1cbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgd2VpcmRlc3QgYnVnIGkndmUgZXZlciBzZWVuIGluIHdlYmtpdFxuICAgICAgICBkb21Ob2RlLmluc2VydEJlZm9yZShub2RlLCBpbnNlcnQudG8gPj0gbGVuZ3RoKysgPyBudWxsIDogY2hpbGROb2Rlc1tpbnNlcnQudG9dKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVJvb3Qob2xkUm9vdCwgbmV3Um9vdCkge1xuICAgIGlmIChvbGRSb290ICYmIG5ld1Jvb3QgJiYgb2xkUm9vdCAhPT0gbmV3Um9vdCAmJiBvbGRSb290LnBhcmVudE5vZGUpIHtcbiAgICAgICAgb2xkUm9vdC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdSb290LCBvbGRSb290KVxuICAgIH1cblxuICAgIHJldHVybiBuZXdSb290O1xufVxuXG59LHtcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiOjQxLFwiLi4vdm5vZGUvdnBhdGNoLmpzXCI6NDQsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcIi4vdXBkYXRlLXdpZGdldFwiOjI4fV0sMjc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKFwieC1pcy1hcnJheVwiKVxuXG52YXIgcmVuZGVyID0gcmVxdWlyZShcIi4vY3JlYXRlLWVsZW1lbnRcIilcbnZhciBkb21JbmRleCA9IHJlcXVpcmUoXCIuL2RvbS1pbmRleFwiKVxudmFyIHBhdGNoT3AgPSByZXF1aXJlKFwiLi9wYXRjaC1vcFwiKVxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaFxuXG5mdW5jdGlvbiBwYXRjaChyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHJlbmRlck9wdGlvbnMgPSByZW5kZXJPcHRpb25zIHx8IHt9XG4gICAgcmVuZGVyT3B0aW9ucy5wYXRjaCA9IHJlbmRlck9wdGlvbnMucGF0Y2ggJiYgcmVuZGVyT3B0aW9ucy5wYXRjaCAhPT0gcGF0Y2hcbiAgICAgICAgPyByZW5kZXJPcHRpb25zLnBhdGNoXG4gICAgICAgIDogcGF0Y2hSZWN1cnNpdmVcbiAgICByZW5kZXJPcHRpb25zLnJlbmRlciA9IHJlbmRlck9wdGlvbnMucmVuZGVyIHx8IHJlbmRlclxuXG4gICAgcmV0dXJuIHJlbmRlck9wdGlvbnMucGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIHBhdGNoUmVjdXJzaXZlKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIGluZGljZXMgPSBwYXRjaEluZGljZXMocGF0Y2hlcylcblxuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcm9vdE5vZGVcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBkb21JbmRleChyb290Tm9kZSwgcGF0Y2hlcy5hLCBpbmRpY2VzKVxuICAgIHZhciBvd25lckRvY3VtZW50ID0gcm9vdE5vZGUub3duZXJEb2N1bWVudFxuXG4gICAgaWYgKCFyZW5kZXJPcHRpb25zLmRvY3VtZW50ICYmIG93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50KSB7XG4gICAgICAgIHJlbmRlck9wdGlvbnMuZG9jdW1lbnQgPSBvd25lckRvY3VtZW50XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlSW5kZXggPSBpbmRpY2VzW2ldXG4gICAgICAgIHJvb3ROb2RlID0gYXBwbHlQYXRjaChyb290Tm9kZSxcbiAgICAgICAgICAgIGluZGV4W25vZGVJbmRleF0sXG4gICAgICAgICAgICBwYXRjaGVzW25vZGVJbmRleF0sXG4gICAgICAgICAgICByZW5kZXJPcHRpb25zKVxuICAgIH1cblxuICAgIHJldHVybiByb290Tm9kZVxufVxuXG5mdW5jdGlvbiBhcHBseVBhdGNoKHJvb3ROb2RlLCBkb21Ob2RlLCBwYXRjaExpc3QsIHJlbmRlck9wdGlvbnMpIHtcbiAgICBpZiAoIWRvbU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIG5ld05vZGVcblxuICAgIGlmIChpc0FycmF5KHBhdGNoTGlzdCkpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRjaExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5ld05vZGUgPSBwYXRjaE9wKHBhdGNoTGlzdFtpXSwgZG9tTm9kZSwgcmVuZGVyT3B0aW9ucylcblxuICAgICAgICAgICAgaWYgKGRvbU5vZGUgPT09IHJvb3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3QsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKGRvbU5vZGUgPT09IHJvb3ROb2RlKSB7XG4gICAgICAgICAgICByb290Tm9kZSA9IG5ld05vZGVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290Tm9kZVxufVxuXG5mdW5jdGlvbiBwYXRjaEluZGljZXMocGF0Y2hlcykge1xuICAgIHZhciBpbmRpY2VzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBwYXRjaGVzKSB7XG4gICAgICAgIGlmIChrZXkgIT09IFwiYVwiKSB7XG4gICAgICAgICAgICBpbmRpY2VzLnB1c2goTnVtYmVyKGtleSkpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5kaWNlc1xufVxuXG59LHtcIi4vY3JlYXRlLWVsZW1lbnRcIjoyNCxcIi4vZG9tLWluZGV4XCI6MjUsXCIuL3BhdGNoLW9wXCI6MjYsXCJnbG9iYWwvZG9jdW1lbnRcIjo3LFwieC1pcy1hcnJheVwiOjIxfV0sMjg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHVwZGF0ZVdpZGdldFxuXG5mdW5jdGlvbiB1cGRhdGVXaWRnZXQoYSwgYikge1xuICAgIGlmIChpc1dpZGdldChhKSAmJiBpc1dpZGdldChiKSkge1xuICAgICAgICBpZiAoXCJuYW1lXCIgaW4gYSAmJiBcIm5hbWVcIiBpbiBiKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pZCA9PT0gYi5pZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGEuaW5pdCA9PT0gYi5pbml0XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MX1dLDI5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBBdHRyaWJ1dGVIb29rO1xuXG5mdW5jdGlvbiBBdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQXR0cmlidXRlSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVIb29rKG5hbWVzcGFjZSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBwcmV2KSB7XG4gICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgcHJldi52YWx1ZSA9PT0gdGhpcy52YWx1ZSAmJlxuICAgICAgICBwcmV2Lm5hbWVzcGFjZSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5vZGUuc2V0QXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIHByb3AsIHRoaXMudmFsdWUpO1xufTtcblxuQXR0cmlidXRlSG9vay5wcm90b3R5cGUudW5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3AsIG5leHQpIHtcbiAgICBpZiAobmV4dCAmJiBuZXh0LnR5cGUgPT09ICdBdHRyaWJ1dGVIb29rJyAmJlxuICAgICAgICBuZXh0Lm5hbWVzcGFjZSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjb2xvblBvc2l0aW9uID0gcHJvcC5pbmRleE9mKCc6Jyk7XG4gICAgdmFyIGxvY2FsTmFtZSA9IGNvbG9uUG9zaXRpb24gPiAtMSA/IHByb3Auc3Vic3RyKGNvbG9uUG9zaXRpb24gKyAxKSA6IHByb3A7XG4gICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGVOUyh0aGlzLm5hbWVzcGFjZSwgbG9jYWxOYW1lKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnR5cGUgPSAnQXR0cmlidXRlSG9vayc7XG5cbn0se31dLDMwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIEV2U3RvcmUgPSByZXF1aXJlKCdldi1zdG9yZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2SG9vaztcblxuZnVuY3Rpb24gRXZIb29rKHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEV2SG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBFdkhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuRXZIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIHZhciBlcyA9IEV2U3RvcmUobm9kZSk7XG4gICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlOYW1lLnN1YnN0cigzKTtcblxuICAgIGVzW3Byb3BOYW1lXSA9IHRoaXMudmFsdWU7XG59O1xuXG5Fdkhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIHZhciBlcyA9IEV2U3RvcmUobm9kZSk7XG4gICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlOYW1lLnN1YnN0cigzKTtcblxuICAgIGVzW3Byb3BOYW1lXSA9IHVuZGVmaW5lZDtcbn07XG5cbn0se1wiZXYtc3RvcmVcIjo0fV0sMzE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNvZnRTZXRIb29rO1xuXG5mdW5jdGlvbiBTb2Z0U2V0SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTb2Z0U2V0SG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTb2Z0U2V0SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5Tb2Z0U2V0SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICBpZiAobm9kZVtwcm9wZXJ0eU5hbWVdICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGVbcHJvcGVydHlOYW1lXSA9IHRoaXMudmFsdWU7XG4gICAgfVxufTtcblxufSx7fV0sMzI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIFZOb2RlID0gcmVxdWlyZSgnLi4vdm5vZGUvdm5vZGUuanMnKTtcbnZhciBWVGV4dCA9IHJlcXVpcmUoJy4uL3Zub2RlL3Z0ZXh0LmpzJyk7XG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZub2RlJyk7XG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXZ0ZXh0Jyk7XG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy13aWRnZXQnKTtcbnZhciBpc0hvb2sgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12aG9vaycpO1xudmFyIGlzVlRodW5rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdGh1bmsnKTtcblxudmFyIHBhcnNlVGFnID0gcmVxdWlyZSgnLi9wYXJzZS10YWcuanMnKTtcbnZhciBzb2Z0U2V0SG9vayA9IHJlcXVpcmUoJy4vaG9va3Mvc29mdC1zZXQtaG9vay5qcycpO1xudmFyIGV2SG9vayA9IHJlcXVpcmUoJy4vaG9va3MvZXYtaG9vay5qcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGg7XG5cbmZ1bmN0aW9uIGgodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IFtdO1xuICAgIHZhciB0YWcsIHByb3BzLCBrZXksIG5hbWVzcGFjZTtcblxuICAgIGlmICghY2hpbGRyZW4gJiYgaXNDaGlsZHJlbihwcm9wZXJ0aWVzKSkge1xuICAgICAgICBjaGlsZHJlbiA9IHByb3BlcnRpZXM7XG4gICAgICAgIHByb3BzID0ge307XG4gICAgfVxuXG4gICAgcHJvcHMgPSBwcm9wcyB8fCBwcm9wZXJ0aWVzIHx8IHt9O1xuICAgIHRhZyA9IHBhcnNlVGFnKHRhZ05hbWUsIHByb3BzKTtcblxuICAgIC8vIHN1cHBvcnQga2V5c1xuICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eSgna2V5JykpIHtcbiAgICAgICAga2V5ID0gcHJvcHMua2V5O1xuICAgICAgICBwcm9wcy5rZXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydCBuYW1lc3BhY2VcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ25hbWVzcGFjZScpKSB7XG4gICAgICAgIG5hbWVzcGFjZSA9IHByb3BzLm5hbWVzcGFjZTtcbiAgICAgICAgcHJvcHMubmFtZXNwYWNlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIGZpeCBjdXJzb3IgYnVnXG4gICAgaWYgKHRhZyA9PT0gJ0lOUFVUJyAmJlxuICAgICAgICAhbmFtZXNwYWNlICYmXG4gICAgICAgIHByb3BzLmhhc093blByb3BlcnR5KCd2YWx1ZScpICYmXG4gICAgICAgIHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgIWlzSG9vayhwcm9wcy52YWx1ZSlcbiAgICApIHtcbiAgICAgICAgcHJvcHMudmFsdWUgPSBzb2Z0U2V0SG9vayhwcm9wcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtUHJvcGVydGllcyhwcm9wcyk7XG5cbiAgICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCAmJiBjaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgICBhZGRDaGlsZChjaGlsZHJlbiwgY2hpbGROb2RlcywgdGFnLCBwcm9wcyk7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gbmV3IFZOb2RlKHRhZywgcHJvcHMsIGNoaWxkTm9kZXMsIGtleSwgbmFtZXNwYWNlKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2hpbGQoYywgY2hpbGROb2RlcywgdGFnLCBwcm9wcykge1xuICAgIGlmICh0eXBlb2YgYyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKG5ldyBWVGV4dChjKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKG5ldyBWVGV4dChTdHJpbmcoYykpKTtcbiAgICB9IGVsc2UgaWYgKGlzQ2hpbGQoYykpIHtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKGMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFkZENoaWxkKGNbaV0sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChjID09PSBudWxsIHx8IGMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50KHtcbiAgICAgICAgICAgIGZvcmVpZ25PYmplY3Q6IGMsXG4gICAgICAgICAgICBwYXJlbnRWbm9kZToge1xuICAgICAgICAgICAgICAgIHRhZ05hbWU6IHRhZyxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wcykge1xuICAgICAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cbiAgICAgICAgICAgIGlmIChpc0hvb2sodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwcm9wTmFtZS5zdWJzdHIoMCwgMykgPT09ICdldi0nKSB7XG4gICAgICAgICAgICAgICAgLy8gYWRkIGV2LWZvbyBzdXBwb3J0XG4gICAgICAgICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZXZIb29rKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNDaGlsZCh4KSB7XG4gICAgcmV0dXJuIGlzVk5vZGUoeCkgfHwgaXNWVGV4dCh4KSB8fCBpc1dpZGdldCh4KSB8fCBpc1ZUaHVuayh4KTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpIHx8IGlzQ2hpbGQoeCk7XG59XG5cbmZ1bmN0aW9uIFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudChkYXRhKSB7XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcigpO1xuXG4gICAgZXJyLnR5cGUgPSAndmlydHVhbC1oeXBlcnNjcmlwdC51bmV4cGVjdGVkLnZpcnR1YWwtZWxlbWVudCc7XG4gICAgZXJyLm1lc3NhZ2UgPSAnVW5leHBlY3RlZCB2aXJ0dWFsIGNoaWxkIHBhc3NlZCB0byBoKCkuXFxuJyArXG4gICAgICAgICdFeHBlY3RlZCBhIFZOb2RlIC8gVnRodW5rIC8gVldpZGdldCAvIHN0cmluZyBidXQ6XFxuJyArXG4gICAgICAgICdnb3Q6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEuZm9yZWlnbk9iamVjdCkgK1xuICAgICAgICAnLlxcbicgK1xuICAgICAgICAnVGhlIHBhcmVudCB2bm9kZSBpczpcXG4nICtcbiAgICAgICAgZXJyb3JTdHJpbmcoZGF0YS5wYXJlbnRWbm9kZSlcbiAgICAgICAgJ1xcbicgK1xuICAgICAgICAnU3VnZ2VzdGVkIGZpeDogY2hhbmdlIHlvdXIgYGgoLi4uLCBbIC4uLiBdKWAgY2FsbHNpdGUuJztcbiAgICBlcnIuZm9yZWlnbk9iamVjdCA9IGRhdGEuZm9yZWlnbk9iamVjdDtcbiAgICBlcnIucGFyZW50Vm5vZGUgPSBkYXRhLnBhcmVudFZub2RlO1xuXG4gICAgcmV0dXJuIGVycjtcbn1cblxuZnVuY3Rpb24gZXJyb3JTdHJpbmcob2JqKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgbnVsbCwgJyAgICAnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcob2JqKTtcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCIuLi92bm9kZS9pcy12bm9kZVwiOjM5LFwiLi4vdm5vZGUvaXMtdnRleHRcIjo0MCxcIi4uL3Zub2RlL2lzLXdpZGdldFwiOjQxLFwiLi4vdm5vZGUvdm5vZGUuanNcIjo0MyxcIi4uL3Zub2RlL3Z0ZXh0LmpzXCI6NDUsXCIuL2hvb2tzL2V2LWhvb2suanNcIjozMCxcIi4vaG9va3Mvc29mdC1zZXQtaG9vay5qc1wiOjMxLFwiLi9wYXJzZS10YWcuanNcIjozMyxcIngtaXMtYXJyYXlcIjoyMX1dLDMzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIHNwbGl0ID0gcmVxdWlyZSgnYnJvd3Nlci1zcGxpdCcpO1xuXG52YXIgY2xhc3NJZFNwbGl0ID0gLyhbXFwuI10/W2EtekEtWjAtOVxcdTAwN0YtXFx1RkZGRl86LV0rKS87XG52YXIgbm90Q2xhc3NJZCA9IC9eXFwufCMvO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlVGFnO1xuXG5mdW5jdGlvbiBwYXJzZVRhZyh0YWcsIHByb3BzKSB7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgICAgcmV0dXJuICdESVYnO1xuICAgIH1cblxuICAgIHZhciBub0lkID0gIShwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG5cbiAgICB2YXIgdGFnUGFydHMgPSBzcGxpdCh0YWcsIGNsYXNzSWRTcGxpdCk7XG4gICAgdmFyIHRhZ05hbWUgPSBudWxsO1xuXG4gICAgaWYgKG5vdENsYXNzSWQudGVzdCh0YWdQYXJ0c1sxXSkpIHtcbiAgICAgICAgdGFnTmFtZSA9ICdESVYnO1xuICAgIH1cblxuICAgIHZhciBjbGFzc2VzLCBwYXJ0LCB0eXBlLCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHRhZ1BhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhcnQgPSB0YWdQYXJ0c1tpXTtcblxuICAgICAgICBpZiAoIXBhcnQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHlwZSA9IHBhcnQuY2hhckF0KDApO1xuXG4gICAgICAgIGlmICghdGFnTmFtZSkge1xuICAgICAgICAgICAgdGFnTmFtZSA9IHBhcnQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJy4nKSB7XG4gICAgICAgICAgICBjbGFzc2VzID0gY2xhc3NlcyB8fCBbXTtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaChwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcjJyAmJiBub0lkKSB7XG4gICAgICAgICAgICBwcm9wcy5pZCA9IHBhcnQuc3Vic3RyaW5nKDEsIHBhcnQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbGFzc2VzKSB7XG4gICAgICAgIGlmIChwcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaChwcm9wcy5jbGFzc05hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLm5hbWVzcGFjZSA/IHRhZ05hbWUgOiB0YWdOYW1lLnRvVXBwZXJDYXNlKCk7XG59XG5cbn0se1wiYnJvd3Nlci1zcGxpdFwiOjN9XSwzNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBERUZBVUxUX05BTUVTUEFDRSA9IG51bGw7XG52YXIgRVZfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyc7XG52YXIgWExJTktfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xudmFyIFhNTF9OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJztcblxuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHVGlueTEyL2F0dHJpYnV0ZVRhYmxlLmh0bWxcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9hdHRpbmRleC5odG1sXG52YXIgU1ZHX1BST1BFUlRJRVMgPSB7XG4gICAgJ2Fib3V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY2VudC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWNjdW11bGF0ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhZGRpdGl2ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbGlnbm1lbnQtYmFzZWxpbmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhbXBsaXR1ZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXJhYmljLWZvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZU5hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXR0cmlidXRlVHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhemltdXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JhbmR3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlRnJlcXVlbmN5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VQcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jhc2VsaW5lLXNoaWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Jib3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmlhcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdieSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjYWxjTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjYXAtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsYXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcC1wYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwUGF0aFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXByb2ZpbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29sb3ItcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudFNjcmlwdFR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY29udGVudFN0eWxlVHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjdXJzb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkYXRhdHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZWZhdWx0QWN0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rlc2NlbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlmZnVzZUNvbnN0YW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpcmVjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXNwbGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Rpdmlzb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZG9taW5hbnQtYmFzZWxpbmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZHVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VkZ2VNb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VkaXRhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2VsZXZhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbmFibGUtYmFja2dyb3VuZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZXY6ZXZlbnQnOiBFVl9OQU1FU1BBQ0UsXG4gICAgJ2V2ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V4cG9uZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWxsLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1ydWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXJSZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmxvb2QtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmxvb2Qtb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb2N1c0hpZ2hsaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb2N1c2FibGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1mYW1pbHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZS1hZGp1c3QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC1zdHJldGNoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3R5bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9udC12YXJpYW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtd2VpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zvcm1hdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmcm9tJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Z4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Z5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2cxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2cyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW5hbWUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaFJlZic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdncmFkaWVudFRyYW5zZm9ybSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdncmFkaWVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmRsZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGFuZ2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaG9yaXotYWR2LXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaG9yaXotb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaG9yaXotb3JpZ2luLXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaWRlb2dyYXBoaWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW1hZ2UtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2luMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbml0aWFsVmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbnRlcmNlcHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnayc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrMyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrNCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuZWxNYXRyaXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsVW5pdExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXJuaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVBvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlTcGxpbmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tleVRpbWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xhbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbGVuZ3RoQWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xldHRlci1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xpZ2h0aW5nLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xpbWl0aW5nQ29uZUFuZ2xlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xvY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1lbmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLW1pZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItc3RhcnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VySGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlcldpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza0NvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWF0aGVtYXRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21heCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNoYXJhY3RlckVuY29kaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhQ29udGVudEVuY29kaW5ncyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYVNpemUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFUaW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21ldGhvZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWRvd24tcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LW5leHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXByZXYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi11cCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAtbGVmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAtcmlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbnVtT2N0YXZlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvYnNlcnZlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcGVyYXRvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmRlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvcmllbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJmbG93JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxpbmUtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3ZlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Bhbm9zZS0xJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0aExlbmd0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuQ29udGVudFVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5UcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVyblVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BoYXNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BsYXliYWNrT3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRlci1ldmVudHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRaJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQWxwaGEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJlc2VydmVBc3BlY3RSYXRpbyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmltaXRpdmVVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcm9wYWdhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGVydHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyYWRpdXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWZZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZW5kZXJpbmctaW50ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcGVhdENvdW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcGVhdER1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEV4dGVuc2lvbnMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGZWF0dXJlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRm9ybWF0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXNvdXJjZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Jlc3VsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm9sZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyb3RhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncngnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2NhbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2VlZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzaGFwZS1yZW5kZXJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2xvcGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc25hcHNob3RUaW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGVjdWxhckV4cG9uZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwcmVhZE1ldGhvZCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGFydE9mZnNldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdGREZXZpYXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RlbWgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RlbXYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RpdGNoVGlsZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdG9wLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNoYXJyYXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWxpbmVjYXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3Ryb2tlLWxpbmVqb2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1taXRlcmxpbWl0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS13aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdXJmYWNlU2NhbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY0JlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvckRlZmF1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY01hc3Rlcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNUb2xlcmFuY2VEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5c3RlbUxhbmd1YWdlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhYmxlVmFsdWVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRYJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RhcmdldFknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1hbmNob3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGV4dC1kZWNvcmF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGltZWxpbmVCZWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0aXRsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0byc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0cmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtQmVoYXZpb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0eXBlb2YnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndTInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5kZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmljb2RlLWJpZGknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1yYW5nZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bml0cy1wZXItZW0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1hbHBoYWJldGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtaGFuZ2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWlkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtbWF0aGVtYXRpY2FsJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJzaW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtYWR2LXknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdCb3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlld1RhcmdldCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aXNpYmlsaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dpZHRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dpZHRocyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3b3JkLXNwYWNpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd3JpdGluZy1tb2RlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneC1oZWlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneDEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneDInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneENoYW5uZWxTZWxlY3Rvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4bGluazphY3R1YXRlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazphcmNyb2xlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazpocmVmJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazpyb2xlJzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazpzaG93JzogWExJTktfTkFNRVNQQUNFLFxuICAgICd4bGluazp0aXRsZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dHlwZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneG1sOmJhc2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6aWQnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6bGFuZyc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3htbDpzcGFjZSc6IFhNTF9OQU1FU1BBQ0UsXG4gICAgJ3knOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneTEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneTInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneUNoYW5uZWxTZWxlY3Rvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3pvb21BbmRQYW4nOiBERUZBVUxUX05BTUVTUEFDRVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTVkdBdHRyaWJ1dGVOYW1lc3BhY2U7XG5cbmZ1bmN0aW9uIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSh2YWx1ZSkge1xuICBpZiAoU1ZHX1BST1BFUlRJRVMuaGFzT3duUHJvcGVydHkodmFsdWUpKSB7XG4gICAgcmV0dXJuIFNWR19QUk9QRVJUSUVTW3ZhbHVlXTtcbiAgfVxufVxuXG59LHt9XSwzNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgneC1pcy1hcnJheScpO1xuXG52YXIgaCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxuXG52YXIgU1ZHQXR0cmlidXRlTmFtZXNwYWNlID0gcmVxdWlyZSgnLi9zdmctYXR0cmlidXRlLW5hbWVzcGFjZScpO1xudmFyIGF0dHJpYnV0ZUhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2F0dHJpYnV0ZS1ob29rJyk7XG5cbnZhciBTVkdfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcblxubW9kdWxlLmV4cG9ydHMgPSBzdmc7XG5cbmZ1bmN0aW9uIHN2Zyh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbikge1xuICAgIGlmICghY2hpbGRyZW4gJiYgaXNDaGlsZHJlbihwcm9wZXJ0aWVzKSkge1xuICAgICAgICBjaGlsZHJlbiA9IHByb3BlcnRpZXM7XG4gICAgICAgIHByb3BlcnRpZXMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCB7fTtcblxuICAgIC8vIHNldCBuYW1lc3BhY2UgZm9yIHN2Z1xuICAgIHByb3BlcnRpZXMubmFtZXNwYWNlID0gU1ZHX05BTUVTUEFDRTtcblxuICAgIHZhciBhdHRyaWJ1dGVzID0gcHJvcGVydGllcy5hdHRyaWJ1dGVzIHx8IChwcm9wZXJ0aWVzLmF0dHJpYnV0ZXMgPSB7fSk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAoIXByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmFtZXNwYWNlID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlKGtleSk7XG5cbiAgICAgICAgaWYgKG5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkKSB7IC8vIG5vdCBhIHN2ZyBhdHRyaWJ1dGVcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcGVydGllc1trZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5hbWVzcGFjZSAhPT0gbnVsbCkgeyAvLyBuYW1lc3BhY2VkIGF0dHJpYnV0ZVxuICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gYXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXR0cmlidXRlc1trZXldID0gdmFsdWVcbiAgICAgICAgcHJvcGVydGllc1trZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIGgodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiBpc0NoaWxkcmVuKHgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IGlzQXJyYXkoeCk7XG59XG5cbn0se1wiLi9ob29rcy9hdHRyaWJ1dGUtaG9va1wiOjI5LFwiLi9pbmRleC5qc1wiOjMyLFwiLi9zdmctYXR0cmlidXRlLW5hbWVzcGFjZVwiOjM0LFwieC1pcy1hcnJheVwiOjIxfV0sMzY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi9pcy12bm9kZVwiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4vaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuL2lzLXRodW5rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaGFuZGxlVGh1bmtcblxuZnVuY3Rpb24gaGFuZGxlVGh1bmsoYSwgYikge1xuICAgIHZhciByZW5kZXJlZEEgPSBhXG4gICAgdmFyIHJlbmRlcmVkQiA9IGJcblxuICAgIGlmIChpc1RodW5rKGIpKSB7XG4gICAgICAgIHJlbmRlcmVkQiA9IHJlbmRlclRodW5rKGIsIGEpXG4gICAgfVxuXG4gICAgaWYgKGlzVGh1bmsoYSkpIHtcbiAgICAgICAgcmVuZGVyZWRBID0gcmVuZGVyVGh1bmsoYSwgbnVsbClcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBhOiByZW5kZXJlZEEsXG4gICAgICAgIGI6IHJlbmRlcmVkQlxuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyVGh1bmsodGh1bmssIHByZXZpb3VzKSB7XG4gICAgdmFyIHJlbmRlcmVkVGh1bmsgPSB0aHVuay52bm9kZVxuXG4gICAgaWYgKCFyZW5kZXJlZFRodW5rKSB7XG4gICAgICAgIHJlbmRlcmVkVGh1bmsgPSB0aHVuay52bm9kZSA9IHRodW5rLnJlbmRlcihwcmV2aW91cylcbiAgICB9XG5cbiAgICBpZiAoIShpc1ZOb2RlKHJlbmRlcmVkVGh1bmspIHx8XG4gICAgICAgICAgICBpc1ZUZXh0KHJlbmRlcmVkVGh1bmspIHx8XG4gICAgICAgICAgICBpc1dpZGdldChyZW5kZXJlZFRodW5rKSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGh1bmsgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCBub2RlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZFRodW5rXG59XG5cbn0se1wiLi9pcy10aHVua1wiOjM3LFwiLi9pcy12bm9kZVwiOjM5LFwiLi9pcy12dGV4dFwiOjQwLFwiLi9pcy13aWRnZXRcIjo0MX1dLDM3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNUaHVua1xyXG5cclxuZnVuY3Rpb24gaXNUaHVuayh0KSB7XHJcbiAgICByZXR1cm4gdCAmJiB0LnR5cGUgPT09IFwiVGh1bmtcIlxyXG59XHJcblxufSx7fV0sMzg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc0hvb2tcblxuZnVuY3Rpb24gaXNIb29rKGhvb2spIHtcbiAgICByZXR1cm4gaG9vayAmJlxuICAgICAgKHR5cGVvZiBob29rLmhvb2sgPT09IFwiZnVuY3Rpb25cIiAmJiAhaG9vay5oYXNPd25Qcm9wZXJ0eShcImhvb2tcIikgfHxcbiAgICAgICB0eXBlb2YgaG9vay51bmhvb2sgPT09IFwiZnVuY3Rpb25cIiAmJiAhaG9vay5oYXNPd25Qcm9wZXJ0eShcInVuaG9va1wiKSlcbn1cblxufSx7fV0sMzk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gaXNWaXJ0dWFsTm9kZVxuXG5mdW5jdGlvbiBpc1ZpcnR1YWxOb2RlKHgpIHtcbiAgICByZXR1cm4geCAmJiB4LnR5cGUgPT09IFwiVmlydHVhbE5vZGVcIiAmJiB4LnZlcnNpb24gPT09IHZlcnNpb25cbn1cblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQwOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbFRleHRcblxuZnVuY3Rpb24gaXNWaXJ0dWFsVGV4dCh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxUZXh0XCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzV2lkZ2V0XG5cbmZ1bmN0aW9uIGlzV2lkZ2V0KHcpIHtcbiAgICByZXR1cm4gdyAmJiB3LnR5cGUgPT09IFwiV2lkZ2V0XCJcbn1cblxufSx7fV0sNDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBcIjJcIlxuXG59LHt9XSw0MzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxudmFyIGlzVkhvb2sgPSByZXF1aXJlKFwiLi9pcy12aG9va1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IFZpcnR1YWxOb2RlXG5cbnZhciBub1Byb3BlcnRpZXMgPSB7fVxudmFyIG5vQ2hpbGRyZW4gPSBbXVxuXG5mdW5jdGlvbiBWaXJ0dWFsTm9kZSh0YWdOYW1lLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbiwga2V5LCBuYW1lc3BhY2UpIHtcbiAgICB0aGlzLnRhZ05hbWUgPSB0YWdOYW1lXG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcyB8fCBub1Byb3BlcnRpZXNcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW4gfHwgbm9DaGlsZHJlblxuICAgIHRoaXMua2V5ID0ga2V5ICE9IG51bGwgPyBTdHJpbmcoa2V5KSA6IHVuZGVmaW5lZFxuICAgIHRoaXMubmFtZXNwYWNlID0gKHR5cGVvZiBuYW1lc3BhY2UgPT09IFwic3RyaW5nXCIpID8gbmFtZXNwYWNlIDogbnVsbFxuXG4gICAgdmFyIGNvdW50ID0gKGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCkgfHwgMFxuICAgIHZhciBkZXNjZW5kYW50cyA9IDBcbiAgICB2YXIgaGFzV2lkZ2V0cyA9IGZhbHNlXG4gICAgdmFyIGhhc1RodW5rcyA9IGZhbHNlXG4gICAgdmFyIGRlc2NlbmRhbnRIb29rcyA9IGZhbHNlXG4gICAgdmFyIGhvb2tzXG5cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1twcm9wTmFtZV1cbiAgICAgICAgICAgIGlmIChpc1ZIb29rKHByb3BlcnR5KSAmJiBwcm9wZXJ0eS51bmhvb2spIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhvb2tzKSB7XG4gICAgICAgICAgICAgICAgICAgIGhvb2tzID0ge31cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBob29rc1twcm9wTmFtZV0gPSBwcm9wZXJ0eVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSkge1xuICAgICAgICAgICAgZGVzY2VuZGFudHMgKz0gY2hpbGQuY291bnQgfHwgMFxuXG4gICAgICAgICAgICBpZiAoIWhhc1dpZGdldHMgJiYgY2hpbGQuaGFzV2lkZ2V0cykge1xuICAgICAgICAgICAgICAgIGhhc1dpZGdldHMgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGFzVGh1bmtzICYmIGNoaWxkLmhhc1RodW5rcykge1xuICAgICAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFkZXNjZW5kYW50SG9va3MgJiYgKGNoaWxkLmhvb2tzIHx8IGNoaWxkLmRlc2NlbmRhbnRIb29rcykpIHtcbiAgICAgICAgICAgICAgICBkZXNjZW5kYW50SG9va3MgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1dpZGdldHMgJiYgaXNXaWRnZXQoY2hpbGQpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIGhhc1dpZGdldHMgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc1RodW5rcyAmJiBpc1RodW5rKGNoaWxkKSkge1xuICAgICAgICAgICAgaGFzVGh1bmtzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY291bnQgPSBjb3VudCArIGRlc2NlbmRhbnRzXG4gICAgdGhpcy5oYXNXaWRnZXRzID0gaGFzV2lkZ2V0c1xuICAgIHRoaXMuaGFzVGh1bmtzID0gaGFzVGh1bmtzXG4gICAgdGhpcy5ob29rcyA9IGhvb2tzXG4gICAgdGhpcy5kZXNjZW5kYW50SG9va3MgPSBkZXNjZW5kYW50SG9va3Ncbn1cblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsTm9kZS5wcm90b3R5cGUudHlwZSA9IFwiVmlydHVhbE5vZGVcIlxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdmhvb2tcIjozOCxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtd2lkZ2V0XCI6NDEsXCIuL3ZlcnNpb25cIjo0Mn1dLDQ0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5WaXJ0dWFsUGF0Y2guTk9ORSA9IDBcblZpcnR1YWxQYXRjaC5WVEVYVCA9IDFcblZpcnR1YWxQYXRjaC5WTk9ERSA9IDJcblZpcnR1YWxQYXRjaC5XSURHRVQgPSAzXG5WaXJ0dWFsUGF0Y2guUFJPUFMgPSA0XG5WaXJ0dWFsUGF0Y2guT1JERVIgPSA1XG5WaXJ0dWFsUGF0Y2guSU5TRVJUID0gNlxuVmlydHVhbFBhdGNoLlJFTU9WRSA9IDdcblZpcnR1YWxQYXRjaC5USFVOSyA9IDhcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsUGF0Y2hcblxuZnVuY3Rpb24gVmlydHVhbFBhdGNoKHR5cGUsIHZOb2RlLCBwYXRjaCkge1xuICAgIHRoaXMudHlwZSA9IE51bWJlcih0eXBlKVxuICAgIHRoaXMudk5vZGUgPSB2Tm9kZVxuICAgIHRoaXMucGF0Y2ggPSBwYXRjaFxufVxuXG5WaXJ0dWFsUGF0Y2gucHJvdG90eXBlLnZlcnNpb24gPSB2ZXJzaW9uXG5WaXJ0dWFsUGF0Y2gucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxQYXRjaFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsVGV4dFxuXG5mdW5jdGlvbiBWaXJ0dWFsVGV4dCh0ZXh0KSB7XG4gICAgdGhpcy50ZXh0ID0gU3RyaW5nKHRleHQpXG59XG5cblZpcnR1YWxUZXh0LnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFRleHQucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxUZXh0XCJcblxufSx7XCIuL3ZlcnNpb25cIjo0Mn1dLDQ2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmUHJvcHNcblxuZnVuY3Rpb24gZGlmZlByb3BzKGEsIGIpIHtcbiAgICB2YXIgZGlmZlxuXG4gICAgZm9yICh2YXIgYUtleSBpbiBhKSB7XG4gICAgICAgIGlmICghKGFLZXkgaW4gYikpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2FLZXldID0gdW5kZWZpbmVkXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYVZhbHVlID0gYVthS2V5XVxuICAgICAgICB2YXIgYlZhbHVlID0gYlthS2V5XVxuXG4gICAgICAgIGlmIChhVmFsdWUgPT09IGJWYWx1ZSkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChhVmFsdWUpICYmIGlzT2JqZWN0KGJWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChnZXRQcm90b3R5cGUoYlZhbHVlKSAhPT0gZ2V0UHJvdG90eXBlKGFWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNIb29rKGJWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgb2JqZWN0RGlmZiA9IGRpZmZQcm9wcyhhVmFsdWUsIGJWYWx1ZSlcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0RGlmZikge1xuICAgICAgICAgICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gb2JqZWN0RGlmZlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBiS2V5IGluIGIpIHtcbiAgICAgICAgaWYgKCEoYktleSBpbiBhKSkge1xuICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgIGRpZmZbYktleV0gPSBiW2JLZXldXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlmZlxufVxuXG5mdW5jdGlvbiBnZXRQcm90b3R5cGUodmFsdWUpIHtcbiAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpXG4gIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgcmV0dXJuIHZhbHVlLl9fcHJvdG9fX1xuICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZVxuICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2tcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sNDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKFwieC1pcy1hcnJheVwiKVxuXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaFwiKVxudmFyIGlzVk5vZGUgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZ0ZXh0XCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCIpXG52YXIgaXNUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy10aHVua1wiKVxudmFyIGhhbmRsZVRodW5rID0gcmVxdWlyZShcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiKVxuXG52YXIgZGlmZlByb3BzID0gcmVxdWlyZShcIi4vZGlmZi1wcm9wc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRpZmZcblxuZnVuY3Rpb24gZGlmZihhLCBiKSB7XG4gICAgdmFyIHBhdGNoID0geyBhOiBhIH1cbiAgICB3YWxrKGEsIGIsIHBhdGNoLCAwKVxuICAgIHJldHVybiBwYXRjaFxufVxuXG5mdW5jdGlvbiB3YWxrKGEsIGIsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBhcHBseSA9IHBhdGNoW2luZGV4XVxuICAgIHZhciBhcHBseUNsZWFyID0gZmFsc2VcblxuICAgIGlmIChpc1RodW5rKGEpIHx8IGlzVGh1bmsoYikpIHtcbiAgICAgICAgdGh1bmtzKGEsIGIsIHBhdGNoLCBpbmRleClcbiAgICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkge1xuXG4gICAgICAgIC8vIElmIGEgaXMgYSB3aWRnZXQgd2Ugd2lsbCBhZGQgYSByZW1vdmUgcGF0Y2ggZm9yIGl0XG4gICAgICAgIC8vIE90aGVyd2lzZSBhbnkgY2hpbGQgd2lkZ2V0cy9ob29rcyBtdXN0IGJlIGRlc3Ryb3llZC5cbiAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBhZGRpbmcgdHdvIHJlbW92ZSBwYXRjaGVzIGZvciBhIHdpZGdldC5cbiAgICAgICAgaWYgKCFpc1dpZGdldChhKSkge1xuICAgICAgICAgICAgY2xlYXJTdGF0ZShhLCBwYXRjaCwgaW5kZXgpXG4gICAgICAgICAgICBhcHBseSA9IHBhdGNoW2luZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guUkVNT1ZFLCBhLCBiKSlcbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUoYikpIHtcbiAgICAgICAgaWYgKGlzVk5vZGUoYSkpIHtcbiAgICAgICAgICAgIGlmIChhLnRhZ05hbWUgPT09IGIudGFnTmFtZSAmJlxuICAgICAgICAgICAgICAgIGEubmFtZXNwYWNlID09PSBiLm5hbWVzcGFjZSAmJlxuICAgICAgICAgICAgICAgIGEua2V5ID09PSBiLmtleSkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wc1BhdGNoID0gZGlmZlByb3BzKGEucHJvcGVydGllcywgYi5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAgIGlmIChwcm9wc1BhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFZQYXRjaC5QUk9QUywgYSwgcHJvcHNQYXRjaCkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFwcGx5ID0gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChWUGF0Y2guVk5PREUsIGEsIGIpKVxuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dChiKSkge1xuICAgICAgICBpZiAoIWlzVlRleHQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZURVhULCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoYS50ZXh0ICE9PSBiLnRleHQpIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZURVhULCBhLCBiKSlcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKCFpc1dpZGdldChhKSkge1xuICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLldJREdFVCwgYSwgYikpXG4gICAgfVxuXG4gICAgaWYgKGFwcGx5KSB7XG4gICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGx5XG4gICAgfVxuXG4gICAgaWYgKGFwcGx5Q2xlYXIpIHtcbiAgICAgICAgY2xlYXJTdGF0ZShhLCBwYXRjaCwgaW5kZXgpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBkaWZmQ2hpbGRyZW4oYSwgYiwgcGF0Y2gsIGFwcGx5LCBpbmRleCkge1xuICAgIHZhciBhQ2hpbGRyZW4gPSBhLmNoaWxkcmVuXG4gICAgdmFyIG9yZGVyZWRTZXQgPSByZW9yZGVyKGFDaGlsZHJlbiwgYi5jaGlsZHJlbilcbiAgICB2YXIgYkNoaWxkcmVuID0gb3JkZXJlZFNldC5jaGlsZHJlblxuXG4gICAgdmFyIGFMZW4gPSBhQ2hpbGRyZW4ubGVuZ3RoXG4gICAgdmFyIGJMZW4gPSBiQ2hpbGRyZW4ubGVuZ3RoXG4gICAgdmFyIGxlbiA9IGFMZW4gPiBiTGVuID8gYUxlbiA6IGJMZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgdmFyIGxlZnROb2RlID0gYUNoaWxkcmVuW2ldXG4gICAgICAgIHZhciByaWdodE5vZGUgPSBiQ2hpbGRyZW5baV1cbiAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgIGlmICghbGVmdE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChyaWdodE5vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBFeGNlc3Mgbm9kZXMgaW4gYiBuZWVkIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSxcbiAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guSU5TRVJULCBudWxsLCByaWdodE5vZGUpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2FsayhsZWZ0Tm9kZSwgcmlnaHROb2RlLCBwYXRjaCwgaW5kZXgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNWTm9kZShsZWZ0Tm9kZSkgJiYgbGVmdE5vZGUuY291bnQpIHtcbiAgICAgICAgICAgIGluZGV4ICs9IGxlZnROb2RlLmNvdW50XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3JkZXJlZFNldC5tb3Zlcykge1xuICAgICAgICAvLyBSZW9yZGVyIG5vZGVzIGxhc3RcbiAgICAgICAgYXBwbHkgPSBhcHBlbmRQYXRjaChhcHBseSwgbmV3IFZQYXRjaChcbiAgICAgICAgICAgIFZQYXRjaC5PUkRFUixcbiAgICAgICAgICAgIGEsXG4gICAgICAgICAgICBvcmRlcmVkU2V0Lm1vdmVzXG4gICAgICAgICkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcGx5XG59XG5cbmZ1bmN0aW9uIGNsZWFyU3RhdGUodk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIC8vIFRPRE86IE1ha2UgdGhpcyBhIHNpbmdsZSB3YWxrLCBub3QgdHdvXG4gICAgdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG4gICAgZGVzdHJveVdpZGdldHModk5vZGUsIHBhdGNoLCBpbmRleClcbn1cblxuLy8gUGF0Y2ggcmVjb3JkcyBmb3IgYWxsIGRlc3Ryb3llZCB3aWRnZXRzIG11c3QgYmUgYWRkZWQgYmVjYXVzZSB3ZSBuZWVkXG4vLyBhIERPTSBub2RlIHJlZmVyZW5jZSBmb3IgdGhlIGRlc3Ryb3kgZnVuY3Rpb25cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNXaWRnZXQodk5vZGUpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygdk5vZGUuZGVzdHJveSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUkVNT1ZFLCB2Tm9kZSwgbnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWTm9kZSh2Tm9kZSkgJiYgKHZOb2RlLmhhc1dpZGdldHMgfHwgdk5vZGUuaGFzVGh1bmtzKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSB2Tm9kZS5jaGlsZHJlblxuICAgICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgICAgICAgICBpbmRleCArPSAxXG5cbiAgICAgICAgICAgIGRlc3Ryb3lXaWRnZXRzKGNoaWxkLCBwYXRjaCwgaW5kZXgpXG5cbiAgICAgICAgICAgIGlmIChpc1ZOb2RlKGNoaWxkKSAmJiBjaGlsZC5jb3VudCkge1xuICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGh1bmsodk5vZGUpKSB7XG4gICAgICAgIHRodW5rcyh2Tm9kZSwgbnVsbCwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuLy8gQ3JlYXRlIGEgc3ViLXBhdGNoIGZvciB0aHVua3NcbmZ1bmN0aW9uIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICB2YXIgbm9kZXMgPSBoYW5kbGVUaHVuayhhLCBiKVxuICAgIHZhciB0aHVua1BhdGNoID0gZGlmZihub2Rlcy5hLCBub2Rlcy5iKVxuICAgIGlmIChoYXNQYXRjaGVzKHRodW5rUGF0Y2gpKSB7XG4gICAgICAgIHBhdGNoW2luZGV4XSA9IG5ldyBWUGF0Y2goVlBhdGNoLlRIVU5LLCBudWxsLCB0aHVua1BhdGNoKVxuICAgIH1cbn1cblxuZnVuY3Rpb24gaGFzUGF0Y2hlcyhwYXRjaCkge1xuICAgIGZvciAodmFyIGluZGV4IGluIHBhdGNoKSB7XG4gICAgICAgIGlmIChpbmRleCAhPT0gXCJhXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuLy8gRXhlY3V0ZSBob29rcyB3aGVuIHR3byBub2RlcyBhcmUgaWRlbnRpY2FsXG5mdW5jdGlvbiB1bmhvb2sodk5vZGUsIHBhdGNoLCBpbmRleCkge1xuICAgIGlmIChpc1ZOb2RlKHZOb2RlKSkge1xuICAgICAgICBpZiAodk5vZGUuaG9va3MpIHtcbiAgICAgICAgICAgIHBhdGNoW2luZGV4XSA9IGFwcGVuZFBhdGNoKFxuICAgICAgICAgICAgICAgIHBhdGNoW2luZGV4XSxcbiAgICAgICAgICAgICAgICBuZXcgVlBhdGNoKFxuICAgICAgICAgICAgICAgICAgICBWUGF0Y2guUFJPUFMsXG4gICAgICAgICAgICAgICAgICAgIHZOb2RlLFxuICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWRLZXlzKHZOb2RlLmhvb2tzKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2Tm9kZS5kZXNjZW5kYW50SG9va3MgfHwgdk5vZGUuaGFzVGh1bmtzKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB2Tm9kZS5jaGlsZHJlblxuICAgICAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldXG4gICAgICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdW5ob29rKGNoaWxkLCBwYXRjaCwgaW5kZXgpXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gY2hpbGQuY291bnRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVGh1bmsodk5vZGUpKSB7XG4gICAgICAgIHRodW5rcyh2Tm9kZSwgbnVsbCwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdW5kZWZpbmVkS2V5cyhvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge31cblxuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIExpc3QgZGlmZiwgbmFpdmUgbGVmdCB0byByaWdodCByZW9yZGVyaW5nXG5mdW5jdGlvbiByZW9yZGVyKGFDaGlsZHJlbiwgYkNoaWxkcmVuKSB7XG4gICAgLy8gTyhNKSB0aW1lLCBPKE0pIG1lbW9yeVxuICAgIHZhciBiQ2hpbGRJbmRleCA9IGtleUluZGV4KGJDaGlsZHJlbilcbiAgICB2YXIgYktleXMgPSBiQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGJGcmVlID0gYkNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGJGcmVlLmxlbmd0aCA9PT0gYkNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE4pIHRpbWUsIE8oTikgbWVtb3J5XG4gICAgdmFyIGFDaGlsZEluZGV4ID0ga2V5SW5kZXgoYUNoaWxkcmVuKVxuICAgIHZhciBhS2V5cyA9IGFDaGlsZEluZGV4LmtleXNcbiAgICB2YXIgYUZyZWUgPSBhQ2hpbGRJbmRleC5mcmVlXG5cbiAgICBpZiAoYUZyZWUubGVuZ3RoID09PSBhQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjaGlsZHJlbjogYkNoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE8oTUFYKE4sIE0pKSBtZW1vcnlcbiAgICB2YXIgbmV3Q2hpbGRyZW4gPSBbXVxuXG4gICAgdmFyIGZyZWVJbmRleCA9IDBcbiAgICB2YXIgZnJlZUNvdW50ID0gYkZyZWUubGVuZ3RoXG4gICAgdmFyIGRlbGV0ZWRJdGVtcyA9IDBcblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBhIGFuZCBtYXRjaCBhIG5vZGUgaW4gYlxuICAgIC8vIE8oTikgdGltZSxcbiAgICBmb3IgKHZhciBpID0gMCA7IGkgPCBhQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGFJdGVtID0gYUNoaWxkcmVuW2ldXG4gICAgICAgIHZhciBpdGVtSW5kZXhcblxuICAgICAgICBpZiAoYUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICBpZiAoYktleXMuaGFzT3duUHJvcGVydHkoYUl0ZW0ua2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIE1hdGNoIHVwIHRoZSBvbGQga2V5c1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGJLZXlzW2FJdGVtLmtleV1cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGJDaGlsZHJlbltpdGVtSW5kZXhdKVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBvbGQga2V5ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBNYXRjaCB0aGUgaXRlbSBpbiBhIHdpdGggdGhlIG5leHQgZnJlZSBpdGVtIGluIGJcbiAgICAgICAgICAgIGlmIChmcmVlSW5kZXggPCBmcmVlQ291bnQpIHtcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiRnJlZVtmcmVlSW5kZXgrK11cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGJDaGlsZHJlbltpdGVtSW5kZXhdKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbm8gZnJlZSBpdGVtcyBpbiBiIHRvIG1hdGNoIHdpdGhcbiAgICAgICAgICAgICAgICAvLyB0aGUgZnJlZSBpdGVtcyBpbiBhLCBzbyB0aGUgZXh0cmEgZnJlZSBub2Rlc1xuICAgICAgICAgICAgICAgIC8vIGFyZSBkZWxldGVkLlxuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IGkgLSBkZWxldGVkSXRlbXMrK1xuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYXN0RnJlZUluZGV4ID0gZnJlZUluZGV4ID49IGJGcmVlLmxlbmd0aCA/XG4gICAgICAgIGJDaGlsZHJlbi5sZW5ndGggOlxuICAgICAgICBiRnJlZVtmcmVlSW5kZXhdXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYiBhbmQgYXBwZW5kIGFueSBuZXcga2V5c1xuICAgIC8vIE8oTSkgdGltZVxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgYkNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuZXdJdGVtID0gYkNoaWxkcmVuW2pdXG5cbiAgICAgICAgaWYgKG5ld0l0ZW0ua2V5KSB7XG4gICAgICAgICAgICBpZiAoIWFLZXlzLmhhc093blByb3BlcnR5KG5ld0l0ZW0ua2V5KSkge1xuICAgICAgICAgICAgICAgIC8vIEFkZCBhbnkgbmV3IGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGFkZGluZyBuZXcgaXRlbXMgdG8gdGhlIGVuZCBhbmQgdGhlbiBzb3J0aW5nIHRoZW1cbiAgICAgICAgICAgICAgICAvLyBpbiBwbGFjZS4gSW4gZnV0dXJlIHdlIHNob3VsZCBpbnNlcnQgbmV3IGl0ZW1zIGluIHBsYWNlLlxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuLnB1c2gobmV3SXRlbSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChqID49IGxhc3RGcmVlSW5kZXgpIHtcbiAgICAgICAgICAgIC8vIEFkZCBhbnkgbGVmdG92ZXIgbm9uLWtleWVkIGl0ZW1zXG4gICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2ltdWxhdGUgPSBuZXdDaGlsZHJlbi5zbGljZSgpXG4gICAgdmFyIHNpbXVsYXRlSW5kZXggPSAwXG4gICAgdmFyIHJlbW92ZXMgPSBbXVxuICAgIHZhciBpbnNlcnRzID0gW11cbiAgICB2YXIgc2ltdWxhdGVJdGVtXG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGJDaGlsZHJlbi5sZW5ndGg7KSB7XG4gICAgICAgIHZhciB3YW50ZWRJdGVtID0gYkNoaWxkcmVuW2tdXG4gICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG5cbiAgICAgICAgLy8gcmVtb3ZlIGl0ZW1zXG4gICAgICAgIHdoaWxlIChzaW11bGF0ZUl0ZW0gPT09IG51bGwgJiYgc2ltdWxhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBudWxsKSlcbiAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNpbXVsYXRlSXRlbSB8fCBzaW11bGF0ZUl0ZW0ua2V5ICE9PSB3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgLy8gaWYgd2UgbmVlZCBhIGtleSBpbiB0aGlzIHBvc2l0aW9uLi4uXG4gICAgICAgICAgICBpZiAod2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgYW4gaW5zZXJ0IGRvZXNuJ3QgcHV0IHRoaXMga2V5IGluIHBsYWNlLCBpdCBuZWVkcyB0byBtb3ZlXG4gICAgICAgICAgICAgICAgICAgIGlmIChiS2V5c1tzaW11bGF0ZUl0ZW0ua2V5XSAhPT0gayArIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSByZW1vdmUgZGlkbid0IHB1dCB0aGUgd2FudGVkIGl0ZW0gaW4gcGxhY2UsIHdlIG5lZWQgdG8gaW5zZXJ0IGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNpbXVsYXRlSXRlbSB8fCBzaW11bGF0ZUl0ZW0ua2V5ICE9PSB3YW50ZWRJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlbXMgYXJlIG1hdGNoaW5nLCBzbyBza2lwIGFoZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0ZUluZGV4KytcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydHMucHVzaCh7a2V5OiB3YW50ZWRJdGVtLmtleSwgdG86IGt9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaysrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBhIGtleSBpbiBzaW11bGF0ZSBoYXMgbm8gbWF0Y2hpbmcgd2FudGVkIGtleSwgcmVtb3ZlIGl0XG4gICAgICAgICAgICBlbHNlIGlmIChzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkge1xuICAgICAgICAgICAgICAgIHJlbW92ZXMucHVzaChyZW1vdmUoc2ltdWxhdGUsIHNpbXVsYXRlSW5kZXgsIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICBrKytcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlbW92ZSBhbGwgdGhlIHJlbWFpbmluZyBub2RlcyBmcm9tIHNpbXVsYXRlXG4gICAgd2hpbGUoc2ltdWxhdGVJbmRleCA8IHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0gJiYgc2ltdWxhdGVJdGVtLmtleSkpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG9ubHkgbW92ZXMgd2UgaGF2ZSBhcmUgZGVsZXRlcyB0aGVuIHdlIGNhbiBqdXN0XG4gICAgLy8gbGV0IHRoZSBkZWxldGUgcGF0Y2ggcmVtb3ZlIHRoZXNlIGl0ZW1zLlxuICAgIGlmIChyZW1vdmVzLmxlbmd0aCA9PT0gZGVsZXRlZEl0ZW1zICYmICFpbnNlcnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IG5ld0NoaWxkcmVuLFxuICAgICAgICAgICAgbW92ZXM6IG51bGxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgbW92ZXM6IHtcbiAgICAgICAgICAgIHJlbW92ZXM6IHJlbW92ZXMsXG4gICAgICAgICAgICBpbnNlcnRzOiBpbnNlcnRzXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZShhcnIsIGluZGV4LCBrZXkpIHtcbiAgICBhcnIuc3BsaWNlKGluZGV4LCAxKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogaW5kZXgsXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufVxuXG5mdW5jdGlvbiBrZXlJbmRleChjaGlsZHJlbikge1xuICAgIHZhciBrZXlzID0ge31cbiAgICB2YXIgZnJlZSA9IFtdXG4gICAgdmFyIGxlbmd0aCA9IGNoaWxkcmVuLmxlbmd0aFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuXG4gICAgICAgIGlmIChjaGlsZC5rZXkpIHtcbiAgICAgICAgICAgIGtleXNbY2hpbGQua2V5XSA9IGlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZyZWUucHVzaChpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5czoga2V5cywgICAgIC8vIEEgaGFzaCBvZiBrZXkgbmFtZSB0byBpbmRleFxuICAgICAgICBmcmVlOiBmcmVlICAgICAgLy8gQW4gYXJyYXkgb2YgdW5rZXllZCBpdGVtIGluZGljZXNcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFwcGVuZFBhdGNoKGFwcGx5LCBwYXRjaCkge1xuICAgIGlmIChhcHBseSkge1xuICAgICAgICBpZiAoaXNBcnJheShhcHBseSkpIHtcbiAgICAgICAgICAgIGFwcGx5LnB1c2gocGF0Y2gpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcHBseSA9IFthcHBseSwgcGF0Y2hdXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXBwbHlcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGF0Y2hcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaGFuZGxlLXRodW5rXCI6MzYsXCIuLi92bm9kZS9pcy10aHVua1wiOjM3LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaFwiOjQ0LFwiLi9kaWZmLXByb3BzXCI6NDYsXCJ4LWlzLWFycmF5XCI6MjF9XSw0ODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdmRvbSA9IHtcbiAgVk5vZGU6IHJlcXVpcmUoJ3ZpcnR1YWwtZG9tL3Zub2RlL3Zub2RlJyksXG4gIFZUZXh0OiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92dGV4dCcpLFxuICBkaWZmOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS9kaWZmJyksXG4gIHBhdGNoOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS9wYXRjaCcpLFxuICBjcmVhdGVFbGVtZW50OiByZXF1aXJlKCd2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudCcpLFxuICBzdmc6IHJlcXVpcmUoXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiKSxcbn07XG5cbmdsb2JhbC5WaXJ0dWFsRG9tID0gdmRvbTtcbm1vZHVsZS5leHBvcnRzID0gdmRvbTtcblxufSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHtcInZpcnR1YWwtZG9tL2NyZWF0ZS1lbGVtZW50XCI6MSxcInZpcnR1YWwtZG9tL2RpZmZcIjoyLFwidmlydHVhbC1kb20vcGF0Y2hcIjoyMixcInZpcnR1YWwtZG9tL3ZpcnR1YWwtaHlwZXJzY3JpcHQvc3ZnXCI6MzUsXCJ2aXJ0dWFsLWRvbS92bm9kZS92bm9kZVwiOjQzLFwidmlydHVhbC1kb20vdm5vZGUvdnRleHRcIjo0NX1dfSx7fSxbNDhdKSg0OClcbn0pO1xuIiwiZnVuY3Rpb24gVmRvbVRodW5rKGZuLCBhcmdzLCBrZXkpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVmRvbVRodW5rKSkge1xuICAgICAgICByZXR1cm4gbmV3IFZkb21UaHVuayhmbiwgYXJncywga2V5KTtcbiAgICB9XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICB0aGlzLmtleSA9IGtleTtcbiAgICB9XG5cbiAgICB0aGlzLmZuID0gZm47XG4gICAgdGhpcy5hcmdzID0gYXJncztcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlZkb21UaHVuayA9IFZkb21UaHVuaztcblxuVmRvbVRodW5rLnByb3RvdHlwZS50eXBlID0gJ1RodW5rJztcblZkb21UaHVuay5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHByZXYpIHtcbiAgaWYgKHByZXYgJiYgdGhpcy5hcmdzID09PSBwcmV2LmFyZ3MgJiYgdGhpcy5mbiA9PT0gcHJldi5mbikge1xuICAgIHJldHVybiBwcmV2LnZub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZm4odGhpcy5hcmdzKTtcbn07XG5cblxuIiwiLy8gVXNlZCBieSB3b3JrYXJvdW5kIGZvciBpbnB1dCBlbGVtZW50IHZhbHVlIGZpZWxkXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvOTQ3ZWNmOTJiNjdkMjViYjY5M2EwZjYyNWZhOGU5MGMwOTk4ODdkNS92aXJ0dWFsLWh5cGVyc2NyaXB0L2hvb2tzL3NvZnQtc2V0LWhvb2suanNcblxuam9vX2dsb2JhbF9vYmplY3QuU29mdFNldEhvb2sgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTb2Z0U2V0SG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTb2Z0U2V0SG9vayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufTtcblxuam9vX2dsb2JhbF9vYmplY3QuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cblxudmFyIEdlbmVyaWNIb29rID0gZnVuY3Rpb24gKGluaXQsIHVwZGF0ZSwgZGVzdHJveSwgaWQsIGV4dHJhKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEdlbmVyaWNIb29rKSkge1xuICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNIb29rKGluaXQsIHVwZGF0ZSwgZGVzdHJveSwgaWQsIGV4dHJhKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXQgPSBpbml0O1xuICAgIHRoaXMudXBkYXRlID0gdXBkYXRlO1xuICAgIHRoaXMuZGVzdHJveSA9IGRlc3Ryb3k7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZXh0cmEgPSBleHRyYTtcbn07XG5cbnZhciBob29rX3N0YXRlX2tleSA9IFwidmRvbV9ob29rX3N0YXRlX2tleVwiO1xuXG5pZiAodGhpcy5TeW1ib2wpIHtcbiAgICBob29rX3N0YXRlX2tleSA9IFN5bWJvbChob29rX3N0YXRlX2tleSk7XG59XG5cbkdlbmVyaWNIb29rLndyaXRlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSkge1xuICAgIGlmICghbm9kZVtob29rX3N0YXRlX2tleV0pIHtcbiAgICAgICAgbm9kZVtob29rX3N0YXRlX2tleV0gPSB7fTtcbiAgICB9XG4gICAgbm9kZVtob29rX3N0YXRlX2tleV1bcHJvcE5hbWVdID0gc3RhdGU7XG59XG5cbkdlbmVyaWNIb29rLnJlYWRfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUpIHtcbiAgICByZXR1cm4gbm9kZVtob29rX3N0YXRlX2tleV1bcHJvcE5hbWVdO1xufVxuXG5HZW5lcmljSG9vay5yZW1vdmVfc3RhdGUgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUpIHtcbiAgICBkZWxldGUgbm9kZVtob29rX3N0YXRlX2tleV1bcHJvcE5hbWVdO1xufVxuXG5HZW5lcmljSG9vay5jYW5UcmFuc2l0aW9uID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgcmV0dXJuIGZyb20gaW5zdGFuY2VvZiB0aGlzICYmIHRvIGluc3RhbmNlb2YgdGhpcyAmJiBmcm9tLmlkID09PSB0by5pZCAmJiB0by51cGRhdGU7XG59O1xuXG5HZW5lcmljSG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgcHJldikge1xuICAgIGlmIChHZW5lcmljSG9vay5jYW5UcmFuc2l0aW9uKHByZXYsIHRoaXMpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IEdlbmVyaWNIb29rLnJlYWRfc3RhdGUobm9kZSwgcHJvcE5hbWUpO1xuICAgICAgICBzdGF0ZSA9IHRoaXMudXBkYXRlKHN0YXRlLCBub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sud3JpdGVfc3RhdGUobm9kZSwgcHJvcE5hbWUsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLmluaXQobm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfVxufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgbmV4dCkge1xuICAgIGlmIChHZW5lcmljSG9vay5jYW5UcmFuc2l0aW9uKHRoaXMsIG5leHQpKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcsIHRoZSBpbXBlbmRpbmcgW2hvb2tdIHdpbGwgaGFuZGxlIHRoZSBjYWxsIHRvIHVwZGF0ZS5cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgdGhpcy5kZXN0cm95KHN0YXRlLCBub2RlKTtcbiAgICAgICAgR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICB9XG59O1xuXG5qb29fZ2xvYmFsX29iamVjdC5HZW5lcmljSG9vayA9IEdlbmVyaWNIb29rO1xuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50KHYpIHtcbiAgdiA9IHYgLSAoKHYgPj4+IDEpICYgMHg1NTU1NTU1NSk7XG4gIHYgPSAodiAmIDB4MzMzMzMzMzMpICsgKCh2ID4+PiAyKSAmIDB4MzMzMzMzMzMpO1xuICByZXR1cm4gKCh2ICsgKHYgPj4+IDQpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEwMSkgPj4+IDI0O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3BvcyBjb25zdFxuZnVuY3Rpb24gQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4gY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuKHgpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KSB7XG4gIHZhciBuID0gMzI7XG4gIHZhciB5O1xuICB5ID0geCA+PjE2OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gODsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDQ7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0geCA+PiAyOyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMTsgaWYgKHkgIT0gMCkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIHg7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHooeCkge1xuICB2YXIgbiA9IDY0O1xuICB2YXIgeTtcbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMzI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSBjYW1sX2ludDY0X3RvX2ludDMyKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCkge1xuICBpZiAoeCA9PT0gMCkgeyByZXR1cm4gMzI7IH1cbiAgdmFyIG4gPSAxO1xuICBpZiAoICh4ICYgMHgwMDAwRkZGRikgPT09IDApIHsgbiA9IG4gKyAxNjsgeCA9IHggPj4gMTY7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwRkYpID09PSAwKSB7IG4gPSBuICsgIDg7IHggPSB4ID4+ICA4OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDBGKSA9PT0gMCkgeyBuID0gbiArICA0OyB4ID0geCA+PiAgNDsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwMykgPT09IDApIHsgbiA9IG4gKyAgMjsgeCA9IHggPj4gIDI7IH1cbiAgcmV0dXJuIG4gLSAoeCAmIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYW5kLCBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHooeCkge1xuICBpZiAoY2FtbF9pbnQ2NF9pc196ZXJvKHgpKSB7IHJldHVybiA2NDsgfVxuICB2YXIgbiA9IDE7XG4gIGZ1bmN0aW9uIGlzX3plcm8gKHgpICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfaXNfemVybyh4KTsgfVxuICBmdW5jdGlvbiBsYW5kICh4LHkpICAgICB7IHJldHVybiBjYW1sX2ludDY0X2FuZCh4LCB5KTsgfVxuICBmdW5jdGlvbiBzbWFsbF9pbnQ2NCh4KSB7IHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSh4LDAsMCk7IH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgweEZGRkZGRiwgMHgwMDAwRkYsIDB4MDAwMCkpKSkge1xuICAgIG4gPSBuICsgMzI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDBGRkZGKSkpKSB7XG4gICAgbiA9IG4gKyAxNjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwRkYpKSkpIHtcbiAgICBuID0gbiArICA4OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDBGKSkpKSB7XG4gICAgbiA9IG4gKyAgNDsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMykpKSkge1xuICAgIG4gPSBuICsgIDI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICB9XG4gIHJldHVybiBuIC0gKGNhbWxfaW50NjRfdG9faW50MzIoY2FtbF9pbnQ2NF9hbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDEpKSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IDE7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghZXhwb25lbnQ9PTApIHtcbiAgICBtdWxbMV0gPSAobXVsWzFdICogbXVsWzNdKSB8IDA7XG4gICAgbXVsWzJdID0gKG11bFsxXSAqIG11bFsxXSkgfCAwO1xuICAgIG11bFszXSA9IChtdWxbMl0gKiBtdWxbMV0pIHwgMDtcbiAgICByZXMgPSAocmVzICogbXVsW2V4cG9uZW50ICYgM10pIHwgMDtcbiAgICBleHBvbmVudCA9IGV4cG9uZW50ID4+IDI7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkoMSwwKTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFjYW1sX2ludDY0X2lzX3plcm8oZXhwb25lbnQpKSB7XG4gICAgbXVsWzFdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbM10pO1xuICAgIG11bFsyXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzFdKTtcbiAgICBtdWxbM10gPSBjYW1sX2ludDY0X211bChtdWxbMl0sIG11bFsxXSk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9tdWwocmVzLCBtdWxbY2FtbF9pbnQ2NF9sbzMyKGV4cG9uZW50KSAmIDNdKTtcbiAgICBleHBvbmVudCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoZXhwb25lbnQsIDIpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxzKVxufVxuLy9Qcm92aWRlczogQmFzZV9oYXNoX2RvdWJsZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfZG91YmxlKGQpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxkKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9hbV90ZXN0aW5nIGNvbnN0XG4vL1dlYWtkZWZcbmZ1bmN0aW9uIEJhc2VfYW1fdGVzdGluZyh4KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NzZWxfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfY3NlbF92YWx1ZSh2X2NvbmQsIHZfdHJ1ZSwgdl9mYWxzZSkge1xuICAgIGlmICh2X2NvbmQpXG4gICAgICAgIHJldHVybiB2X3RydWU7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4gdl9mYWxzZTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2NyZWF0ZV9ieXRlc1xuZnVuY3Rpb24gQmFzZV91bnNhZmVfY3JlYXRlX2xvY2FsX2J5dGVzKHZfbGVuKSB7XG4gICAgLy8gVGhpcyBkb2VzIGEgcmVkdW5kYW50IGJvdW5kcyBjaGVjayBhbmQgKHNpbmNlIHRoaXMgaXNcbiAgICAvLyBqYXZhc2NyaXB0KSBkb2Vzbid0IGFsbG9jYXRlIGxvY2FsbHksIGJ1dCB0aGF0J3MgZmluZS5cbiAgICByZXR1cm4gY2FtbF9jcmVhdGVfYnl0ZXModl9sZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfbG9jYWxfdmVjdFxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3ZlY3RcbmZ1bmN0aW9uIGNhbWxfbWFrZV9sb2NhbF92ZWN0KHZfbGVuLCB2X2VsdCkge1xuICAgIC8vIEluIGphdmFzY3JpcHQgdGhlcmUncyBubyBsb2NhbCBhbGxvY2F0aW9uLlxuICAgIHJldHVybiBjYW1sX21ha2VfdmVjdCAodl9sZW4sIHZfZWx0KTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2NfZHVtbXlfaW5maXhcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfYWxsb2NfZHVtbXlfaW5maXggKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZiAoeCkgeyByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgW3hdKSB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcbmZ1bmN0aW9uIGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAoeCxpLG9sZCxuKXtcbiAgaWYoeFtpKzFdID09IG9sZCkge1xuICAgIHhbaSsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfc2hhcmVkXG5mdW5jdGlvbiBjYW1sX29ial9pc19zaGFyZWQoeCl7XG4gIHJldHVybiAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLG8sbikge1xuICAgIGlmKGJbMF09PW8pIHsgYlswXSA9IG47IHJldHVybiAxIH1cbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmICgobyBpbnN0YW5jZW9mIEFycmF5KSAmJiBvWzBdID09IChvWzBdID4+PiAwKSAmJlxuICAgICAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDYsIDI0NCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbiAgZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkKG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZXNldF90b19sYXp5XG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eShvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjQ2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZWFkX3Jlc3VsdFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVhZF9yZXN1bHQobykge1xuICByZXR1cm4gKGNhbWxfb2JqX3RhZyhvKSA9PSAyNTApP29bMV06bztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAodCA9PSAyNDUpID8gMSA6IDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkge1xuICBpZiAoeCA+PSAwKSB7XG4gICAgdmFyIHkgPSBNYXRoLmZsb29yKHgpO1xuICAgIHJldHVybiAoeCAtIHkgPj0gMC41KT8oeSArIDEpOnlcbiAgfSBlbHNlIHtcbiAgICB2YXIgeSA9IE1hdGguY2VpbCh4KTtcbiAgICByZXR1cm4gKHkgLSB4ID49IDAuNSk/KHkgLSAxKTp5XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1JhaXNlIGV4Y2VwdGlvblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2NvbnN0YW50IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfY29uc3RhbnQgKHRhZykgeyB0aHJvdyB0YWc7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZyAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX3N0cmluZyAodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG1zZykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhaWx3aXRoIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmFpbHdpdGggKG1zZykge1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlKVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZT1bMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJGYWlsdXJlXCIpLC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfaW52YWxpZF9hcmd1bWVudCAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkVuZF9vZl9maWxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5EaXZpc2lvbl9ieV96ZXJvKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogIWVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYuYXBwbHkobnVsbCxhcmdzLnNsaWNlKDAsbikpO1xuICAgIGlmKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsYXJncy5zbGljZShuKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAxKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSBuYXJnc1thcmdzLmxlbmd0aCtpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZDtcbiAgICByZXR1cm4gZztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6IGVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMCkge1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW4gLSAxXTtcbiAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICBhcmdzW24gLSAxXSA9IGZ1bmN0aW9uIChnKSB7XG4gICAgICBpZiAodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGsoZyk7XG4gICAgICB2YXIgYXJncyA9IHJlc3Quc2xpY2UoKTtcbiAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLCBhcmdzKTsgfTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuXTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHksIHope1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDMpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyBleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApXG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIGldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlc1xudmFyIGNhbWxfbmFtZWRfdmFsdWVzID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUgKGNvbnN0LG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J1aWxkX3N5bWJvbHMoc3ltYikge1xuICB2YXIgciA9IHt9O1xuICBpZihzeW1iKSB7XG4gICAgZm9yKHZhciBpID0gMTsgaSA8IHN5bWIubGVuZ3RoOyBpKyspe1xuICAgICAgcltjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzeW1iW2ldWzFdKV0gPSBzeW1iW2ldWzJdXG4gICAgfVxuICB9XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9jYWxsYmFjaywgY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZihnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpIHtcbiAgICAgIG4gPSBjYW1sX2NhbGxiYWNrKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYywgW25hbWVdKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKSB7XG4gICAgICBpZighY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgpIHtcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHggPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKVxuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMC0yMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIEFuIE9DYW1sIHN0cmluZyBpcyBhbiBvYmplY3Qgd2l0aCB0aHJlZSBmaWVsZHM6XG4vLyAtIHRhZyAndCdcbi8vIC0gbGVuZ3RoICdsJ1xuLy8gLSBjb250ZW50cyAnYydcbi8vXG4vLyBUaGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBjYW4gYmUgZWl0aGVyIGEgSmF2YVNjcmlwdCBhcnJheSBvclxuLy8gYSBKYXZhU2NyaXB0IHN0cmluZy4gVGhlIGxlbmd0aCBvZiB0aGlzIHN0cmluZyBjYW4gYmUgbGVzcyB0aGFuIHRoZVxuLy8gbGVuZ3RoIG9mIHRoZSBPQ2FtbCBzdHJpbmcuIEluIHRoaXMgY2FzZSwgcmVtYWluaW5nIGJ5dGVzIGFyZVxuLy8gYXNzdW1lZCB0byBiZSB6ZXJvZXMuIEFycmF5cyBhcmUgbXV0YWJsZSBidXQgY29uc3VtZXMgbW9yZSBtZW1vcnlcbi8vIHRoYW4gc3RyaW5ncy4gQSBjb21tb24gcGF0dGVybiBpcyB0byBzdGFydCBmcm9tIGFuIGVtcHR5IHN0cmluZyBhbmRcbi8vIHByb2dyZXNzaXZlbHkgZmlsbCBpdCBmcm9tIHRoZSBzdGFydC4gUGFydGlhbCBzdHJpbmdzIG1ha2VzIGl0XG4vLyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgdGhpcyBlZmZpY2llbnRseS5cbi8vXG4vLyBXaGVuIGNvbnZlcnRpbmcgdG8gYW5kIGZyb20gVVRGLTE2LCB3ZSBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhlXG4vLyBzdHJpbmcgaXMgY29tcG9zZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzIChpbiB3aGljaCBjYXNlLCBub1xuLy8gY29udmVyc2lvbiBuZWVkcyB0byBiZSBwZXJmb3JtZWQpIG9yIG5vdC5cbi8vXG4vLyBUaGUgc3RyaW5nIHRhZyBjYW4gdGh1cyB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuLy8gICBmdWxsIHN0cmluZyAgICAgQllURSB8IFVOS05PV046ICAgICAgMFxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IEFTQ0lJOiAgICAgICAgOVxuLy8gICAgICAgICAgICAgICAgICAgQllURSB8IE5PVF9BU0NJSTogICAgOFxuLy8gICBzdHJpbmcgcHJlZml4ICAgUEFSVElBTDogICAgICAgICAgICAgMlxuLy8gICBhcnJheSAgICAgICAgICAgQVJSQVk6ICAgICAgICAgICAgICAgNFxuLy9cbi8vIE9uZSBjYW4gdXNlIGJpdCBtYXNraW5nIHRvIGRpc2NyaW1pbmF0ZSB0aGVzZSBkaWZmZXJlbnQgY2FzZXM6XG4vLyAgIGtub3duX2VuY29kaW5nKHgpID0geCY4XG4vLyAgIGlzX2FzY2lpKHgpID0gICAgICAgeCYxXG4vLyAgIGtpbmQoeCkgPSAgICAgICAgICAgeCY2XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9zdHJfcmVwZWF0KG4sIHMpIHtcbiAgaWYobiA9PSAwKSByZXR1cm4gXCJcIjtcbiAgaWYgKHMucmVwZWF0KSB7cmV0dXJuIHMucmVwZWF0KG4pO30gLy8gRUNNQXNjcmlwdCA2IGFuZCBGaXJlZm94IDI0K1xuICB2YXIgciA9IFwiXCIsIGwgPSAwO1xuICBmb3IoOzspIHtcbiAgICBpZiAobiAmIDEpIHIgKz0gcztcbiAgICBuID4+PSAxO1xuICAgIGlmIChuID09IDApIHJldHVybiByO1xuICAgIHMgKz0gcztcbiAgICBsKys7XG4gICAgaWYgKGwgPT0gOSkge1xuICAgICAgcy5zbGljZSgwLDEpOyAvLyBmbGF0dGVuIHRoZSBzdHJpbmdcbiAgICAgIC8vIHRoZW4sIHRoZSBmbGF0dGVuaW5nIG9mIHRoZSB3aG9sZSBzdHJpbmcgd2lsbCBiZSBmYXN0ZXIsXG4gICAgICAvLyBhcyBpdCB3aWxsIGJlIGNvbXBvc2VkIG9mIGxhcmdlciBwaWVjZXNcbiAgICB9XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG4vL1dlYWtkZWZcbi8vIFByZSBFQ01BU2NyaXB0IDUsIFthcHBseV0gd291bGQgbm90IHN1cHBvcnQgYXJyYXktbGlrZSBvYmplY3QuXG4vLyBJbiBzdWNoIHNldHVwLCBUeXBlZF9hcnJheSB3b3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBwb2x5ZmlsbCwgYW5kIFtmLmFwcGx5XSB3b3VsZFxuLy8gZmFpbCBoZXJlLiBNYXJrIHRoZSBwcmltaXRpdmUgYXMgV2Vha2RlZiwgc28gdGhhdCBwZW9wbGUgY2FuIG92ZXJyaWRlIGl0IGVhc2lseS5cbmZ1bmN0aW9uIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAoYSwgaSwgbGVuKSB7XG4gIHZhciBmID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbiAgaWYgKGkgPT0gMCAmJiBsZW4gPD0gNDA5NiAmJiBsZW4gPT0gYS5sZW5ndGgpIHJldHVybiBmLmFwcGx5IChudWxsLCBhKTtcbiAgdmFyIHMgPSBcIlwiO1xuICBmb3IgKDsgMCA8IGxlbjsgaSArPSAxMDI0LGxlbi09MTAyNClcbiAgICBzICs9IGYuYXBwbHkgKG51bGwsIGEuc2xpY2UoaSxpICsgTWF0aC5taW4obGVuLCAxMDI0KSkpO1xuICByZXR1cm4gcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGY4X29mX3V0ZjE2XG5mdW5jdGlvbiBjYW1sX3V0Zjhfb2ZfdXRmMTYocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IGIsIGMsIGQsIGkgPSAwLCBsID0gcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjID0gcy5jaGFyQ29kZUF0KGopKSA8IDB4ODA7IGorKyk7XG4gICAgICBpZiAoaiAtIGkgPiA1MTIpIHsgdC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7IGIgKz0gcy5zbGljZShpLCBqKSB9XG4gICAgICBlbHNlIHQgKz0gcy5zbGljZShpLCBqKTtcbiAgICAgIGlmIChqID09IGwpIGJyZWFrO1xuICAgICAgaSA9IGo7XG4gICAgfVxuICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGMwIHwgKGMgPj4gNikpO1xuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9IGVsc2UgaWYgKGMgPCAweGQ4MDAgfHwgYyA+PSAweGRmZmYpIHtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGUwIHwgKGMgPj4gMTIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjID49IDB4ZGJmZiB8fCBpICsgMSA9PSBsIHx8XG4gICAgICAgICAgICAgICAoZCA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGQgPiAweGRmZmYpIHtcbiAgICAgIC8vIFVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpciwgcmVwbGFjZWQgYnkgXFx1ZmZmZCAocmVwbGFjZW1lbnQgY2hhcmFjdGVyKVxuICAgICAgdCArPSBcIlxceGVmXFx4YmZcXHhiZFwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgICBjID0gKGMgPDwgMTApICsgZCAtIDB4MzVmZGMwMDtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGYwIHwgKGMgPj4gMTgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoYyAmIDB4M2YpKTtcbiAgICB9XG4gICAgaWYgKHQubGVuZ3RoID4gMTAyNCkge3Quc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiO31cbiAgfVxuICByZXR1cm4gYit0O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3V0ZjE2X29mX3V0ZjhcbmZ1bmN0aW9uIGNhbWxfdXRmMTZfb2ZfdXRmOChzKSB7XG4gIGZvciAodmFyIGIgPSBcIlwiLCB0ID0gXCJcIiwgYywgYzEsIGMyLCB2LCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYzEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGMxIDwgMHg4MCkge1xuICAgICAgZm9yICh2YXIgaiA9IGkgKyAxOyAoaiA8IGwpICYmIChjMSA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICB2ID0gMTtcbiAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgYyA9IGMyICsgKGMxIDw8IDYpO1xuICAgICAgaWYgKGMxIDwgMHhlMCkge1xuICAgICAgICB2ID0gYyAtIDB4MzA4MDtcbiAgICAgICAgaWYgKHYgPCAweDgwKSB2ID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSAyO1xuICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSkge1xuICAgICAgICAgIGMgPSBjMiArIChjIDw8IDYpO1xuICAgICAgICAgIGlmIChjMSA8IDB4ZjApIHtcbiAgICAgICAgICAgIHYgPSBjIC0gMHhlMjA4MDtcbiAgICAgICAgICAgIGlmICgodiA8IDB4ODAwKSB8fCAoKHYgPj0gMHhkN2ZmKSAmJiAodiA8IDB4ZTAwMCkpKSB2ID0gMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdiA9IDM7XG4gICAgICAgICAgICBpZiAoKCsraSA8IGwpICYmICgoKGMyID0gcy5jaGFyQ29kZUF0KGkpKSAmIC02NCkgPT0gMTI4KSAmJlxuICAgICAgICAgICAgICAgIChjMSA8IDB4ZjUpKSB7XG4gICAgICAgICAgICAgIHYgPSBjMiAtIDB4M2M4MjA4MCArIChjIDw8IDYpO1xuICAgICAgICAgICAgICBpZiAodiA8IDB4MTAwMDAgfHwgdiA+IDB4MTBmZmZmKSB2ID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHYgPCA0KSB7IC8vIEludmFsaWQgc2VxdWVuY2VcbiAgICAgIGkgLT0gdjtcbiAgICAgIHQgKz0gXCJcXHVmZmZkXCI7XG4gICAgfSBlbHNlIGlmICh2ID4gMHhmZmZmKVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZDdjMCArICh2ID4+IDEwKSwgMHhkYzAwICsgKHYgJiAweDNGRikpXG4gICAgZWxzZVxuICAgICAgdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1xuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczoganNvb19pc19hc2NpaVxuZnVuY3Rpb24ganNvb19pc19hc2NpaSAocykge1xuICAvLyBUaGUgcmVndWxhciBleHByZXNzaW9uIGdldHMgYmV0dGVyIGF0IGFyb3VuZCB0aGlzIHBvaW50IGZvciBhbGwgYnJvd3NlcnNcbiAgaWYgKHMubGVuZ3RoIDwgMjQpIHtcbiAgICAvLyBTcGlkZXJtb25rZXkgZ2V0cyBtdWNoIHNsb3dlciB3aGVuIHMubGVuZ3RoID49IDI0IChvbiA2NCBiaXQgYXJjaHMpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSBpZiAocy5jaGFyQ29kZUF0KGkpID4gMTI3KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZVxuICAgIHJldHVybiAhL1teXFx4MDAtXFx4N2ZdLy50ZXN0KHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHN3aXRjaCAocy50ICYgNikge1xuICBkZWZhdWx0OiAvKiBQQVJUSUFMICovXG4gICAgaWYgKGkgPj0gcy5jLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jLmNoYXJDb2RlQXQoaSk7XG4gIGNhc2UgNDogLyogQVJSQVkgKi9cbiAgICByZXR1cm4gcy5jW2ldXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYykge1xuICAvLyBUaGUgT0NhbWwgY29tcGlsZXIgdXNlcyBDaGFyLnVuc2FmZV9jaHIgb24gaW50ZWdlcnMgbGFyZ2VyIHRoYW4gMjU1IVxuICBjICY9IDB4ZmY7XG4gIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykge1xuICAgIGlmIChpID09IHMuYy5sZW5ndGgpIHtcbiAgICAgIHMuYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgIGlmIChpICsgMSA9PSBzLmwpIHMudCA9IDA7IC8qQllURVMgfCBVTktPV04qL1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheSAocyk7XG4gIH1cbiAgcy5jW2ldID0gYztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcImluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldCAocywgaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDE2KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAxKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpO1xuICByZXR1cm4gKGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSAtIDMpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpLFxuICAgICAgYjIgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDMpO1xuICByZXR1cm4gKGI0IDw8IDI0IHwgYjMgPDwgMTYgfCBiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MzIocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSksXG4gICAgICBiMyA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDIpLFxuICAgICAgYjQgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDY0KHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSA3KSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCwgY2FtbF9ieXRlc19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IG5ldyBBcnJheSg4KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKyl7XG4gICAgYVs3IC0gal0gPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyBqKTtcbiAgfVxuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyhhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldCwgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3Jcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAxKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMiA9IDB4RkYgJiBpMTYgPj4gOCxcbiAgICAgIGIxID0gMHhGRiAmIGkxNjtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMCwgYjEpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAxLCBiMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDE2KHMsaSxpMTYpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MTZcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDE2XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MTYocyxpLGkxNik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjQgPSAweEZGICYgaTMyID4+IDI0LFxuICAgICAgYjMgPSAweEZGICYgaTMyID4+IDE2LFxuICAgICAgYjIgPSAweEZGICYgaTMyID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMzI7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAyLCBiMyk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDMsIGI0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MzIocyxpLGkzMil7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ19zZXQzMlwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfc2V0MzJcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICByZXR1cm4gY2FtbF9ieXRlc19zZXQzMihzLGksaTMyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpe1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSA3KSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBhID0gY2FtbF9pbnQ2NF90b19ieXRlcyhpNjQpO1xuICBmb3IodmFyIGogPSAwOyBqIDwgODsgaisrKSB7XG4gICAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgNyAtIGosIGFbal0pO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDY0KHMsaSxpNjQpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0NjRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDY0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0NjQocyxpLGk2NCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0IChzLCBpLCBjKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpLCBjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nIChzKSB7XG4gIHZhciB0YWcgPSA5IC8qIEJZVEVTIHwgQVNDSUkgKi87XG4gIGlmICghanNvb19pc19hc2NpaShzKSlcbiAgICB0YWcgPSA4IC8qIEJZVEVTIHwgTk9UX0FTQ0lJICovLCBzID0gY2FtbF91dGY4X29mX3V0ZjE2KHMpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGFnLCBzLCBzLmxlbmd0aCk7XG59XG5cblxuLy9Qcm92aWRlczogTWxCeXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBNbEJ5dGVzICh0YWcsIGNvbnRlbnRzLCBsZW5ndGgpIHtcbiAgdGhpcy50PXRhZzsgdGhpcy5jPWNvbnRlbnRzOyB0aGlzLmw9bGVuZ3RoO1xufVxuTWxCeXRlcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICBzd2l0Y2ggKHRoaXMudCkge1xuICBjYXNlIDk6IC8qQllURVMgfCBBU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHRoaXMpO1xuICBjYXNlIDA6IC8qQllURVMgfCBVTktPV04qL1xuICAgIGlmIChqc29vX2lzX2FzY2lpKHRoaXMuYykpIHtcbiAgICAgIHRoaXMudCA9IDk7IC8qQllURVMgfCBBU0NJSSovXG4gICAgICByZXR1cm4gdGhpcy5jO1xuICAgIH1cbiAgICB0aGlzLnQgPSA4OyAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgY2FzZSA4OiAvKkJZVEVTIHwgTk9UX0FTQ0lJKi9cbiAgICByZXR1cm4gdGhpcy5jO1xuICB9XG59O1xuTWxCeXRlcy5wcm90b3R5cGUudG9VdGYxNiA9IGZ1bmN0aW9uICgpe1xuICB2YXIgciA9IHRoaXMudG9TdHJpbmcoKTtcbiAgaWYodGhpcy50ID09IDkpIHJldHVybiByXG4gIHJldHVybiBjYW1sX3V0ZjE2X29mX3V0Zjgocik7XG59XG5NbEJ5dGVzLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uICgpe1xuICB2YXIgY29udGVudCA9IHRoaXMudCA9PSA0ID8gdGhpcy5jLnNsaWNlKCkgOiB0aGlzLmM7XG4gIHJldHVybiBuZXcgTWxCeXRlcyh0aGlzLnQsY29udGVudCx0aGlzLmwpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyAocykge1xuICAvKiBBc3N1bWVzIG5vdCBCWVRFUyAqL1xuICBpZiAocy50ID09IDIgLyogUEFSVElBTCAqLylcbiAgICBzLmMgKz0gY2FtbF9zdHJfcmVwZWF0KHMubCAtIHMuYy5sZW5ndGgsICdcXDAnKVxuICBlbHNlXG4gICAgcy5jID0gY2FtbF9zdWJhcnJheV90b19qc2J5dGVzIChzLmMsIDAsIHMuYy5sZW5ndGgpO1xuICBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQVJSQVkgKi9cbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShzLmwpO1xuICB2YXIgYiA9IHMuYywgbCA9IGIubGVuZ3RoLCBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBiLmNoYXJDb2RlQXQoaSk7XG4gIGZvciAobCA9IHMubDsgaSA8IGw7IGkrKykgYVtpXSA9IDA7XG4gIHMuYyA9IGE7XG4gIHMudCA9IDQ7IC8qIEFSUkFZICovXG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyAocykge1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgcmV0dXJuIHMuYztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciBsID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpO1xuICB2YXIgYSA9IG5ldyBVaW50OEFycmF5KGwpO1xuICB2YXIgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLGkpO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgaWYobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKSB7XG4gIGlmIChsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCeXRlcy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGEpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGEsMCxhLmxlbmd0aCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2FycmF5IChhKSB7XG4gIGlmKCEgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgIGEgPSBuZXcgVWludDhBcnJheShhKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sQnl0ZXMoNCxhLGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19jb21wYXJlIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfY29tcGFyZShzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/LTE6KHMxLmMgPiBzMi5jKT8xOjA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19lcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2VxdWFsKHMxLCBzMikge1xuICBpZihzMSA9PT0gczIpIHJldHVybiAxO1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPT0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19lcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ub3RlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX2J5dGVzX2VxdWFsKHMxLCBzMik7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzZXF1YWwgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW4gbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19sZXNzdGhhbihzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDwgczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMyLHMxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMixzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzdGhhbihzMiwgczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbGxfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyX3JlcGVhdCwgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG4vL0FsaWFzOiBjYW1sX2ZpbGxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2ZpbGxfYnl0ZXMocywgaSwgbCwgYykge1xuICBpZiAobCA+IDApIHtcbiAgICBpZiAoaSA9PSAwICYmIChsID49IHMubCB8fCAocy50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsID49IHMuYy5sZW5ndGgpKSkge1xuICAgICAgaWYgKGMgPT0gMCkge1xuICAgICAgICBzLmMgPSBcIlwiO1xuICAgICAgICBzLnQgPSAyOyAvKiBQQVJUSUFMICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLmMgPSBjYW1sX3N0cl9yZXBlYXQgKGwsIFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICAgICAgICBzLnQgPSAobCA9PSBzLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gICAgICBmb3IgKGwgKz0gaTsgaSA8IGw7IGkrKykgcy5jW2ldID0gYztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmxpdF9ieXRlcyhzMSwgaTEsIHMyLCBpMiwgbGVuKSB7XG4gIGlmIChsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGlmICgoaTIgPT0gMCkgJiZcbiAgICAgIChsZW4gPj0gczIubCB8fCAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbGVuID49IHMyLmMubGVuZ3RoKSkpIHtcbiAgICBzMi5jID0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSBpZiAoczIudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgaTIgPT0gczIuYy5sZW5ndGgpIHtcbiAgICBzMi5jICs9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2Uge1xuICAgIGlmIChzMi50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzMik7XG4gICAgdmFyIGMxID0gczEuYywgYzIgPSBzMi5jO1xuICAgIGlmIChzMS50ID09IDQgLyogQVJSQVkgKi8pIHtcbiAgICAgIGlmIChpMiA8PSBpMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSBjMiBbaTIgKyBpXSA9IGMxIFtpMSArIGldO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbCA9IE1hdGgubWluIChsZW4sIGMxLmxlbmd0aCAtIGkxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSBjMiBbaTIgKyBpXSA9IGMxLmNoYXJDb2RlQXQoaTEgKyBpKTtcbiAgICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxpdF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYmxpdF9zdHJpbmcoYSxiLGMsZCxlKSB7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX3N0cmluZyhhKSxiLGMsZCxlKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19sZW5ndGggY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpIHsgcmV0dXJuIHMubCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbmNhdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19jb25jYXQoYSxiKSB7IHJldHVybiBhICsgYiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbmNhdFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywgTWxCeXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29uY2F0KHMxLHMyKXtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHMxLnQsczEuYytzMi5jLHMxLmwrczIubClcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ191bnNhZmVfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIHMubGVuZ3RoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmUgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8tMTooczEgPiBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPD0gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0Zjhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykge1xuICBpZihqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBzO1xuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocylcbiAgZWxzZSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3V0Zjhfb2ZfdXRmMTYocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7IHJldHVybiBuZXcgTWxCeXRlcygwLHMscy5sZW5ndGgpOyB9XG5cblxuLy8gVGhlIHNlY3Rpb24gYmVsb3cgc2hvdWxkIGJlIHVzZWQgd2hlbiB1c2UtanMtc3RyaW5nPWZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsaSxjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19lcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgeyByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIHMuYyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocyl7XG4gIHJldHVybiBzLnRvVXRmMTYoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfYnl0ZXMocykge1xuICByZXR1cm4gKHMgaW5zdGFuY2VvZiBNbEJ5dGVzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHMuY1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuICh0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiAhL1teXFx4MDAtXFx4ZmZdLy50ZXN0KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaXNfbWxfYnl0ZXMocyk7XG59XG5cbi8vIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGRlcHJlY2F0ZWRcblxuLy9Qcm92aWRlczogY2FtbF9qc190b19ieXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9qc190b19ieXRlX3N0cmluZyhzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX25ld19zdHJpbmcgKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF90b19qc19zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF90b19qc19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc190b19zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3RvX3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KSB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIFN5c1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3N5c19lcnJvciAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5TeXNfZXJyb3IsIG1zZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4aXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9zeXNfZXhpdCAoY29kZSkge1xuICBpZihnbG9iYWxUaGlzLnF1aXQpIGdsb2JhbFRoaXMucXVpdChjb2RlKTtcbiAgLy9ub2RlanNcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KVxuICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5leGl0KGNvZGUpO1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJGdW5jdGlvbiAnZXhpdCcgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4bil7XG4gIHN3aXRjaChleG5bMl0pIHtcbiAgY2FzZSAtODogLy8gTWF0Y2hfZmFpbHVyZVxuICBjYXNlIC0xMTogLy8gQXNzZXJ0X2ZhaWx1cmVcbiAgY2FzZSAtMTI6IC8vIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlXG4gICAgcmV0dXJuIDE7XG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9leGNlcHRpb24oZXhuKXtcbiAgdmFyIHIgPSBcIlwiO1xuICBpZihleG5bMF0gPT0gMCkge1xuICAgIHIgKz0gZXhuWzFdWzFdO1xuICAgIGlmKGV4bi5sZW5ndGggPT0gMyAmJiBleG5bMl1bMF0gPT0gMCAmJiBjYW1sX2lzX3NwZWNpYWxfZXhjZXB0aW9uKGV4blsxXSkpIHtcblxuICAgICAgdmFyIGJ1Y2tldCA9IGV4blsyXTtcbiAgICAgIHZhciBzdGFydCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFydCA9IDJcbiAgICAgIHZhciBidWNrZXQgPSBleG47XG4gICAgfVxuICAgIHIgKz0gXCIoXCI7XG4gICAgZm9yKHZhciBpID0gc3RhcnQ7IGkgPCBidWNrZXQubGVuZ3RoOyBpICsrKXtcbiAgICAgIGlmKGkgPiBzdGFydCkgcis9XCIsIFwiO1xuICAgICAgdmFyIHYgPSBidWNrZXRbaV1cbiAgICAgIGlmKHR5cGVvZiB2ID09IFwibnVtYmVyXCIpXG4gICAgICAgIHIrPSB2LnRvU3RyaW5nKCk7XG4gICAgICBlbHNlIGlmKHYgaW5zdGFuY2VvZiBNbEJ5dGVzKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSBpZih0eXBlb2YgdiA9PSBcInN0cmluZ1wiKXtcbiAgICAgICAgcis9ICdcIicgKyB2LnRvU3RyaW5nKCkgKyAnXCInO1xuICAgICAgfVxuICAgICAgZWxzZSByICs9IFwiX1wiO1xuICAgIH1cbiAgICByICs9IFwiKVwiXG4gIH0gZWxzZSBpZiAoZXhuWzBdID09IDI0OCl7XG4gICAgciArPSBleG5bMV1cbiAgfVxuICByZXR1cm4gclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9mb3JtYXRfZXhjZXB0aW9uLCBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpe1xuICBpZihlcnIgaW5zdGFuY2VvZiBBcnJheSAmJiAoZXJyWzBdID09IDAgfHwgZXJyWzBdID09IDI0OCkpIHtcbiAgICB2YXIgaGFuZGxlciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQcmludGV4Yy5oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uXCIpO1xuICAgIGlmKGhhbmRsZXIpIGNhbWxfY2FsbGJhY2soaGFuZGxlciwgW2VycixmYWxzZV0pO1xuICAgIGVsc2Uge1xuICAgICAgdmFyIG1zZyA9IGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgdmFyIGF0X2V4aXQgPSBjYW1sX25hbWVkX3ZhbHVlKFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIpO1xuICAgICAgaWYoYXRfZXhpdCkgY2FtbF9jYWxsYmFjayhhdF9leGl0LCBbMF0pO1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gXCIgKyBtc2cpO1xuICAgICAgaWYoZXJyLmpzX2Vycm9yKSB0aHJvdyBlcnIuanNfZXJyb3I7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IGVyclxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3N0YXRpY19lbnZcbmZ1bmN0aW9uIGNhbWxfc2V0X3N0YXRpY19lbnYoayx2KXtcbiAgaWYoIWdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52KVxuICAgIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52ID0ge31cbiAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZba10gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNvb19zeXNfZ2V0ZW52IChjb25zdClcbmZ1bmN0aW9uIGpzb29fc3lzX2dldGVudihuKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICAvL25vZGVqcyBlbnZcbiAgaWYocHJvY2Vzc1xuICAgICAmJiBwcm9jZXNzLmVudlxuICAgICAmJiBwcm9jZXNzLmVudltuXSAhPSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIHByb2Nlc3MuZW52W25dO1xuICBpZihnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudlxuICAgICAmJiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXSlcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnZbbl1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0ZW52IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgaWYociA9PT0gdW5kZWZpbmVkKVxuICAgIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdW5zYWZlX2dldGVudlxuLy9SZXF1aXJlczogY2FtbF9zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52KG5hbWUpe1xuICByZXR1cm4gY2FtbF9zeXNfZ2V0ZW52IChuYW1lKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIGNhbWxfYXJndiA9ICgoZnVuY3Rpb24gKCkge1xuICB2YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbiAgdmFyIG1haW4gPSBcImEub3V0XCI7XG4gIHZhciBhcmdzID0gW11cblxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuYXJndlxuICAgICAmJiBwcm9jZXNzLmFyZ3YubGVuZ3RoID4gMSkge1xuICAgIHZhciBhcmd2ID0gcHJvY2Vzcy5hcmd2XG4gICAgLy9ub2RlanNcbiAgICBtYWluID0gYXJndlsxXTtcbiAgICBhcmdzID0gYXJndi5zbGljZSgyKTtcbiAgfVxuXG4gIHZhciBwID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobWFpbik7XG4gIHZhciBhcmdzMiA9IFswLCBwXTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspXG4gICAgYXJnczIucHVzaChjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhhcmdzW2ldKSk7XG4gIHJldHVybiBhcmdzMjtcbn0pKCkpXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhlY3V0YWJsZV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbnZhciBjYW1sX2V4ZWN1dGFibGVfbmFtZSA9IGNhbWxfYXJndlsxXVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfYXJndiAoYSkge1xuICByZXR1cm4gWzAsIGNhbWxfYXJndlsxXSwgY2FtbF9hcmd2XTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfYXJndlxuLy9SZXF1aXJlczogY2FtbF9hcmd2XG5mdW5jdGlvbiBjYW1sX3N5c19hcmd2IChhKSB7XG4gIHJldHVybiBjYW1sX2FyZ3Y7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX21vZGlmeV9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX21vZGlmeV9hcmd2KGFyZyl7XG4gIGNhbWxfYXJndiA9IGFyZztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbmZ1bmN0aW9uIGNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZShhKXtcbiAgcmV0dXJuIGNhbWxfZXhlY3V0YWJsZV9uYW1lXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmQoY21kKXtcbiAgdmFyIGNtZCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGNtZCk7XG4gIGlmICh0eXBlb2YgcmVxdWlyZSAhPSBcInVuZGVmaW5lZFwiKXtcbiAgICB2YXIgY2hpbGRfcHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKTtcbiAgICBpZihjaGlsZF9wcm9jZXNzICYmIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMpXG4gICAgICB0cnkge1xuICAgICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGNtZCx7c3RkaW86ICdpbmhlcml0J30pO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfVxuICB9XG4gIGVsc2UgcmV0dXJuIDEyNztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c190aW1lIG11dGFibGVcbnZhciBjYW1sX2luaXRpYWxfdGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKiAwLjAwMTtcbmZ1bmN0aW9uIGNhbWxfc3lzX3RpbWUgKCkge1xuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgcmV0dXJuIG5vdyAqIDAuMDAxIC0gY2FtbF9pbml0aWFsX3RpbWU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlblxuLy9SZXF1aXJlczogY2FtbF9zeXNfdGltZVxuZnVuY3Rpb24gY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuKGIpIHtcbiAgcmV0dXJuIGNhbWxfc3lzX3RpbWUoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmFuZG9tX3NlZWQgbXV0YWJsZVxuLy9UaGUgZnVuY3Rpb24gbmVlZHMgdG8gcmV0dXJuIGFuIGFycmF5IHNpbmNlIE9DYW1sIDQuMC4uLlxuZnVuY3Rpb24gY2FtbF9zeXNfcmFuZG9tX3NlZWQgKCkge1xuICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8pIHtcbiAgICAgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgICAgIHZhciBhID0gZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDQpKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9IGVsc2UgaWYgKGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKSB7XG4gICAgICAgdmFyIGEgPSBuZXcgSW50MzJBcnJheShnbG9iYWxUaGlzLmNyeXB0by5yYW5kb21CeXRlcygxNikuYnVmZmVyKTtcbiAgICAgICByZXR1cm4gWzAsIGFbMF0sIGFbMV0sIGFbMl0sIGFbM11dO1xuICAgICB9XG4gIH1cbiAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIHZhciB4ID0gbm93XjB4ZmZmZmZmZmYqTWF0aC5yYW5kb20oKTtcbiAgcmV0dXJuIFswLHhdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iaWdfZW5kaWFuICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIGNvbnN0XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfaW50X3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2ludF9zaXplICgpIHsgcmV0dXJuIDMyOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X21heF93b3NpemUgY29uc3Rcbi8vIG1heF9pbnQgLyA0IHNvIHRoYXQgdGhlIGZvbGxvd2luZyBkb2VzIG5vdCBvdmVyZmxvd1xuLy9sZXQgbWF4X3N0cmluZ19sZW5ndGggPSB3b3JkX3NpemUgLyA4ICogbWF4X2FycmF5X2xlbmd0aCAtIDE7O1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSAoKSB7IHJldHVybiAoMHg3RkZGRkZGRi80KSB8IDA7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3VuaXggKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIlVuaXhcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIgY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiAoKSB7IHJldHVybiBvc190eXBlID09IFwiV2luMzJcIiA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luIGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfY3lnd2luICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJDeWd3aW5cIiA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JhY2tlbmRfdHlwZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwianNfb2Zfb2NhbWxcIildO1xufVxuXG4vL1Byb3ZpZGVzOiBvc190eXBlXG52YXIgb3NfdHlwZSA9IChnbG9iYWxUaGlzLnByb2Nlc3MgJiZcbiAgICAgICAgICAgICAgIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09IFwid2luMzJcIikgPyBcIkN5Z3dpblwiIDogXCJVbml4XCI7XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0X2NvbmZpZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0X2NvbmZpZyAoKSB7XG4gIHJldHVybiBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhvc190eXBlKSwgMzIsIDBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzYXR0eShfY2hhbikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3ZhcmlhbnRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV92YXJpYW50KF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX3BhcmFtZXRlcnNcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9wYXJhbWV0ZXJzKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcigpe3JldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbnZhciBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2VuYWJsZV9ydW50aW1lX3dhcm5pbmdzXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MgKGJvb2wpIHtcbiAgY2FtbF9ydW50aW1lX3dhcm5pbmdzID0gYm9vbDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXG4vL1JlcXVpcmVzOiBjYW1sX3J1bnRpbWVfd2FybmluZ3NcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIChfdW5pdCkge1xuICByZXR1cm4gY2FtbF9ydW50aW1lX3dhcm5pbmdzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3BhY2V0aW1lX2VuYWJsZWQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfZW5hYmxlZChfdW5pdCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZSBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2NoYW5uZWxfZm9yX3NwYWNldGltZShfY2hhbm5lbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiU3BhY2V0aW1lIHByb2ZpbGluZyBvbmx5IHdvcmtzIGZvciBuYXRpdmUgY29kZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF94ZGdfZGVmYXVsdHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX3hkZ19kZWZhdWx0cyhfdW5pdCkge1xuICByZXR1cm4gMDsgLy8gZW1wdHkgbGlzdFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGVcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByZXR1cm4gcm9vdC5kZXZpY2UuaXNGaWxlKHJvb3QucmVzdCk7XG59XG4vL0Fsd2F5c1xuLy9SZXF1aXJlczogY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICBpZihwcm9jZXNzICYmIHByb2Nlc3Mub24pIHtcbiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGZ1bmN0aW9uIChlcnIsIG9yaWdpbikge1xuICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXJyKTtcbiAgICAgIHByb2Nlc3MuZXhpdCAoMik7XG4gICAgfSlcbiAgfVxuICBlbHNlIGlmKGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcil7XG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgIGlmKGV2ZW50LmVycm9yKXtcbiAgICAgICAgY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb24oZXZlbnQuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5jYW1sX3NldHVwX3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyKCk7XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG52YXIgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBGTEFHKFwid2l0aC1qcy1lcnJvclwiKTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoXCJPQ0FNTFJVTlBBUkFNXCIpXG4gIGlmKHIgIT09IHVuZGVmaW5lZCl7XG4gICAgdmFyIGwgPSByLnNwbGl0KFwiLFwiKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKyl7XG4gICAgICBpZihsW2ldID09IFwiYlwiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gMTsgYnJlYWsgfVxuICAgICAgZWxzZSBpZiAobFtpXS5zdGFydHNXaXRoKFwiYj1cIikpIHtcbiAgICAgICAgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSArKGxbaV0uc2xpY2UoMikpfVxuICAgICAgZWxzZSBjb250aW51ZTtcbiAgICB9XG4gIH1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1cyAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2JhY2t0cmFjZV9zdGF0dXNcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX2JhY2t0cmFjZV9zdGF0dXMgKF91bml0KSB7IHJldHVybiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA/IDEgOiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fYmFja3RyYWNlICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfcmVjb3JkX2JhY2t0cmFjZSAoYikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IGI7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbGVuZ3RoKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3QgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90OiBpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlKGV4biwgYnQpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrICgpIHsgcmV0dXJuIFswXTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90KCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90XCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfcHVyZV9leHByIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3B1cmVfZXhwciAoZikgeyByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbMF0pOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfanNfc2V0KG8sZix2KSB7IG9bZl09djtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZ2V0IChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZ2V0KG8sZikgeyByZXR1cm4gb1tmXTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19kZWxldGUgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19kZWxldGUobyxmKSB7IGRlbGV0ZSBvW2ZdOyByZXR1cm4gMH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19pbnN0YW5jZW9mIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2luc3RhbmNlb2YobyxjKSB7IHJldHVybiAobyBpbnN0YW5jZW9mIGMpID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc190eXBlb2YgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190eXBlb2YobykgeyByZXR1cm4gdHlwZW9mIG87IH1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVcbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZShyZXMpIHtcbiAgdmFyIGMgPSAxO1xuICB3aGlsZShyZXMgJiYgcmVzLmpvb190cmFtcCl7XG4gICAgcmVzID0gcmVzLmpvb190cmFtcC5hcHBseShudWxsLCByZXMuam9vX2FyZ3MpO1xuICAgIGMrKztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbmZ1bmN0aW9uIGNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKSB7XG4gIHJldHVybiB7am9vX3RyYW1wOmYsam9vX2FyZ3M6YXJnc307XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19kZXB0aFxuLy9JZjogZWZmZWN0c1xudmFyIGNhbWxfc3RhY2tfZGVwdGggPSAwO1xuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfY2hlY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aFxuZnVuY3Rpb24gY2FtbF9zdGFja19jaGVja19kZXB0aCgpIHtcbiAgICByZXR1cm4gLS1jYW1sX3N0YWNrX2RlcHRoID4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogIWVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9jYWxsX2dlblxudmFyIGNhbWxfY2FsbGJhY2sgPSBjYW1sX2NhbGxfZ2VuO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGgsIGNhbWxfY2FsbF9nZW4sIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrLCBjYW1sX3dyYXBfZXhjZXB0aW9uLCBjYW1sX3Jlc3VtZV9zdGFjaywgY2FtbF9mcmVzaF9vb19pZCwgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudFxuZnVuY3Rpb24gY2FtbF9jYWxsYmFjayhmLGFyZ3MpIHtcbiAgZnVuY3Rpb24gdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXIoZWZmLGssbXMpIHtcbiAgICAvLyBSZXN1bWVzIHRoZSBjb250aW51YXRpb24gayBieSByYWlzaW5nIGV4Y2VwdGlvbiBVbmhhbmRsZWQuXG4gICAgY2FtbF9yZXN1bWVfc3RhY2soa1sxXSxtcyk7XG4gICAgdmFyIGV4biA9IGNhbWxfbmFtZWRfdmFsdWUoXCJFZmZlY3QuVW5oYW5kbGVkXCIpO1xuICAgIGlmKGV4bikgY2FtbF9yYWlzZV93aXRoX2FyZyhleG4sIGVmZik7XG4gICAgZWxzZSB7XG4gICAgICBleG4gPSBbMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJFZmZlY3QuVW5oYW5kbGVkXCIpLCBjYW1sX2ZyZXNoX29vX2lkKDApXTtcbiAgICAgIGNhbWxfcmFpc2VfY29uc3RhbnQoZXhuKTtcbiAgICB9XG4gIH1cbiAgdmFyIHNhdmVkX3N0YWNrX2RlcHRoID0gY2FtbF9zdGFja19kZXB0aDtcbiAgdmFyIHNhdmVkX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrO1xuICB2YXIgc2F2ZWRfZmliZXJfc3RhY2sgPSBjYW1sX2ZpYmVyX3N0YWNrO1xuICB0cnkge1xuICAgIGNhbWxfZXhuX3N0YWNrID0gMDtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOlswLCAwLCAwLCB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcl0sIHI6e2s6MCwgeDowLCBlOjB9fTtcbiAgICB2YXIgcmVzID0ge2pvb190cmFtcDogZixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBhcmdzLmNvbmNhdChmdW5jdGlvbiAoeCl7cmV0dXJuIHg7fSl9O1xuICAgIGRvIHtcbiAgICAgIGNhbWxfc3RhY2tfZGVwdGggPSA0MDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcyA9IGNhbWxfY2FsbF9nZW4ocmVzLmpvb190cmFtcCwgcmVzLmpvb19hcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogSGFuZGxlIGV4Y2VwdGlvbiBjb21pbmcgZnJvbSBKYXZhU2NyaXB0IG9yIGZyb20gdGhlIHJ1bnRpbWUuICovXG4gICAgICAgIGlmICghY2FtbF9leG5fc3RhY2spIHRocm93IGU7XG4gICAgICAgIHZhciBoYW5kbGVyID0gY2FtbF9leG5fc3RhY2tbMV07XG4gICAgICAgIGNhbWxfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2tbMl07XG4gICAgICAgIHJlcyA9IHtqb29fdHJhbXA6IGhhbmRsZXIsXG4gICAgICAgICAgICAgICBqb29fYXJnczogW2NhbWxfd3JhcF9leGNlcHRpb24oZSldfTtcbiAgICAgIH1cbiAgICB9IHdoaWxlKHJlcyAmJiByZXMuam9vX2FyZ3MpXG4gIH0gZmluYWxseSB7XG4gICAgY2FtbF9zdGFja19kZXB0aCA9IHNhdmVkX3N0YWNrX2RlcHRoO1xuICAgIGNhbWxfZXhuX3N0YWNrID0gc2F2ZWRfZXhuX3N0YWNrO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPSBzYXZlZF9maWJlcl9zdGFjaztcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2pzXG5mdW5jdGlvbiBjYW1sX2lzX2pzKCkge1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcInVzZS1qcy1zdHJpbmdcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNvb19mbGFnc19lZmZlY3RzKHVuaXQpe1xuICByZXR1cm4gRkxBRyhcImVmZmVjdHNcIilcbn1cblxuLy9Qcm92aWRlczogY2FtbF93cmFwX2V4Y2VwdGlvbiBjb25zdCAobXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsY2FtbF9uYW1lZF92YWx1ZVxuZnVuY3Rpb24gY2FtbF93cmFwX2V4Y2VwdGlvbihlKSB7XG4gIGlmIChGTEFHKFwiZXhjd3JhcFwiKSkge1xuICAgIGlmKGUgaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIGU7XG4gICAgdmFyIGV4bjtcbiAgICAvL1N0YWNrX292ZXJmbG93OiBjaHJvbWUsIHNhZmFyaVxuICAgIGlmKGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL21heGltdW0gY2FsbCBzdGFjay9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9TdGFja19vdmVyZmxvdzogZmlyZWZveFxuICAgIGVsc2UgaWYoZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvdG9vIG11Y2ggcmVjdXJzaW9uL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1dyYXAgRXJyb3IgaW4gSnMuRXJyb3IgZXhjZXB0aW9uXG4gICAgZWxzZSBpZihlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvciAmJiBjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSlcbiAgICAgIGV4biA9IFswLGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpLGVdO1xuICAgIGVsc2VcbiAgICAgIC8vZmFsbGJhY2s6IHdyYXBwZWQgaW4gRmFpbHVyZVxuICAgICAgZXhuID0gWzAsY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChTdHJpbmcoZSkpXTtcbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgYW4gZXJyb3IgYXQgaGFuZCwgbGV0J3MgdXNlIGl0LlxuICAgIGlmIChlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5FcnJvcilcbiAgICAgIGV4bi5qc19lcnJvciA9IGU7XG4gICAgcmV0dXJuIGV4bjtcbiAgfSBlbHNlXG4gICAgcmV0dXJuIGU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICBpZihjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZylcbiAgICByZXR1cm4gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSk7XG4gIGVsc2UgcmV0dXJuIGV4blxufVxuXG4vLyBFeHBlcmltZW50YWxcbi8vUHJvdmlkZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIC8vbmV2ZXIgcmVyYWlzZSBmb3IgY29uc3RhbnQgZXhuXG4gIGlmKCFleG4uanNfZXJyb3IgfHwgZm9yY2UgfHwgZXhuWzBdID09IDI0OCkgZXhuLmpzX2Vycm9yID0gbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJKcyBleGNlcHRpb24gY29udGFpbmluZyBiYWNrdHJhY2VcIik7XG4gIHJldHVybiBleG47XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb24oZXhuKSB7XG4gIGlmKGV4bi5qc19lcnJvcikgeyByZXR1cm4gWzAsIGV4bi5qc19lcnJvcl07IH1cbiAgcmV0dXJuIDA7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYm9vbCh4KSB7IHJldHVybiAhIXg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYm9vbCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Jvb2woeCkgeyByZXR1cm4gK3g7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9mbG9hdCBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21faW50MzJcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Zsb2F0IGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19pbnQzMiBjb25zdCAoY29uc3QpXG4vL0FsaWFzOiBjYW1sX2pzX3RvX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc190b19pbnQzMih4KSB7IHJldHVybiB4fDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fYXJyYXkoYSkge1xuICByZXR1cm4gYS5zbGljZSgxKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYXJyYXkoYSkge1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYlswXSA9IDA7XG4gIGZvcih2YXIgaT0wO2k8bGVuO2krKykgYltpKzFdID0gYVtpXTtcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF9vZl9qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF9vZl9qc19hcnJheShhKXtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGk9YS5sZW5ndGggLSAxOyBpPj0wOyBpLS0pe1xuICAgIHZhciBlID0gYVtpXTtcbiAgICBsID0gWzAsZSxsXTtcbiAgfVxuICByZXR1cm4gbFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3RfdG9fanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3RfdG9fanNfYXJyYXkobCl7XG4gIHZhciBhID0gW107XG4gIGZvcig7IGwgIT09IDA7IGwgPSBsWzJdKSB7XG4gICAgYS5wdXNoKGxbMV0pO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3ZhciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc192YXIoeCkge1xuICB2YXIgeCA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHgpO1xuICAvL0NoZWNrcyB0aGF0IHggaGFzIHRoZSBmb3JtIGlkZW50Wy5pZGVudF0qXG4gIGlmKCF4Lm1hdGNoKC9eW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKFxcLlthLXpBLVpfJF1bYS16QS1aXyQwLTldKikqJC8pKXtcbiAgICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc192YXI6IFxcXCJcIiArIHggKyBcIlxcXCIgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCB2YXJpYWJsZS4gY29udGludWluZyAuLlwiKTtcbiAgICAvL2NvbnNvbGUuZXJyb3IoXCJKcy5VbnNhZmUuZXZhbF9zdHJpbmdcIilcbiAgfVxuICByZXR1cm4gZXZhbCh4KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfY2FsbCAoY29uc3QsIG11dGFibGUsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfY2FsbChmLCBvLCBhcmdzKSB7IHJldHVybiBmLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuX2NhbGwgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2Z1bl9jYWxsKGYsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBmKCk7XG4gIGNhc2UgMjogcmV0dXJuIGYgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBmIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIHJldHVybiBmLmFwcGx5KG51bGwsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX21ldGhfY2FsbCAobXV0YWJsZSwgY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX21ldGhfY2FsbChvLCBmLCBhcmdzKSB7XG4gIHJldHVybiBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGYpXS5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19uZXcgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX25ldyhjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIGNhc2UgODogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfb2pzX25ld19hcnIgKGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX29qc19uZXdfYXJyKGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDA6IHJldHVybiBuZXcgYztcbiAgY2FzZSAxOiByZXR1cm4gbmV3IGMgKGFbMF0pO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGEpOyB9XG4gIEYucHJvdG90eXBlID0gYy5wcm90b3R5cGU7XG4gIHJldHVybiBuZXcgRjtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGlmKGxlbiA+IDApe1xuICAgICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MgPSBbdW5kZWZpbmVkXTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFthcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2soZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsW3RoaXMsYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5ICsgMSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZSBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIC0gMTtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7IH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICByZXR1cm4gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgLy8gRnVuY3Rpb25zIGhhdmUgYW4gYWRkaXRpb25hbCBjb250aW51YXRpb24gcGFyYW1ldGVyLiBUaGlzIHNob3VsZFxuICAvLyBub3QgYmUgdmlzaWJsZSB3aGVuIGNhbGxpbmcgdGhlbSBmcm9tIEphdmFTY3JpcHRcbiAgcmV0dXJuICgoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpKSAtIDFcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19zdHJpY3RfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXZhbF9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXZhbF9zdHJpbmcgKHMpIHtyZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V4cHIgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZXhwcihzKSB7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9wdXJlX2pzX2V4cHIgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcHVyZV9qc19leHByIChzKXtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfcHVyZV9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb2JqZWN0IChvYmplY3RfbGl0ZXJhbClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX29iamVjdCAoYSkge1xuICB2YXIgbyA9IHt9O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcCA9IGFbaV07XG4gICAgb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwWzFdKV0gPSBwWzJdO1xuICB9XG4gIHJldHVybiBvO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9jb25zdGFudHNcbnZhciBjYW1sX21hcnNoYWxfY29uc3RhbnRzID0ge1xuICBQUkVGSVhfU01BTExfQkxPQ0s6ICAgICAgICAgMHg4MCxcbiAgUFJFRklYX1NNQUxMX0lOVDogICAgICAgICAgIDB4NDAsXG4gIFBSRUZJWF9TTUFMTF9TVFJJTkc6ICAgICAgICAweDIwLFxuICBDT0RFX0lOVDg6ICAgICAgICAgICAgICAgICAgMHgwMCxcbiAgQ09ERV9JTlQxNjogICAgICAgICAgICAgICAgIDB4MDEsXG4gIENPREVfSU5UMzI6ICAgICAgICAgICAgICAgICAweDAyLFxuICBDT0RFX0lOVDY0OiAgICAgICAgICAgICAgICAgMHgwMyxcbiAgQ09ERV9TSEFSRUQ4OiAgICAgICAgICAgICAgIDB4MDQsXG4gIENPREVfU0hBUkVEMTY6ICAgICAgICAgICAgICAweDA1LFxuICBDT0RFX1NIQVJFRDMyOiAgICAgICAgICAgICAgMHgwNixcbiAgQ09ERV9CTE9DSzMyOiAgICAgICAgICAgICAgIDB4MDgsXG4gIENPREVfQkxPQ0s2NDogICAgICAgICAgICAgICAweDEzLFxuICBDT0RFX1NUUklORzg6ICAgICAgICAgICAgICAgMHgwOSxcbiAgQ09ERV9TVFJJTkczMjogICAgICAgICAgICAgIDB4MEEsXG4gIENPREVfRE9VQkxFX0JJRzogICAgICAgICAgICAweDBCLFxuICBDT0RFX0RPVUJMRV9MSVRUTEU6ICAgICAgICAgMHgwQyxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzogICAgIDB4MEQsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6ICAweDBFLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzogICAgMHgwRixcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6IDB4MDcsXG4gIENPREVfQ09ERVBPSU5URVI6ICAgICAgICAgICAweDEwLFxuICBDT0RFX0lORklYUE9JTlRFUjogICAgICAgICAgMHgxMSxcbiAgQ09ERV9DVVNUT006ICAgICAgICAgICAgICAgIDB4MTIsXG4gIENPREVfQ1VTVE9NX0xFTjogICAgICAgICAgICAweDE4LFxuICBDT0RFX0NVU1RPTV9GSVhFRDogICAgICAgICAgMHgxOVxufVxuXG5cbi8vUHJvdmlkZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBVSW50OEFycmF5UmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IHM7IHRoaXMuaSA9IGk7IH1cblVJbnQ4QXJyYXlSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK10gPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCA4KSB8IHNbaSArIDFdXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCA+PiAxNikgfCBzW2kgKyAxXTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAgICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM107XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbik7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbFN0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gTWxTdHJpbmdSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKTsgdGhpcy5pID0gaTsgfVxuTWxTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zLmNoYXJDb2RlQXQodGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQgPj4gMTYpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMykpID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHRoaXMucy5zdWJzdHJpbmcoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHZhciBzID0gdGhpcy5zO1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgYltqXSA9IHMuY2hhckNvZGVBdChpICsgaik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGI7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogQmlnU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gQmlnU3RyaW5nUmVhZGVyIChicywgaSkgeyB0aGlzLnMgPSBiczsgdGhpcy5pID0gaTsgfVxuQmlnU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbWxfYmFfZ2V0XzEodGhpcy5zLHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgOCkgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDI0ID4+IDE2KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpICAgICAgICAgKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIGFyciA9IG5ldyBBcnJheShsZW4pXG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKXtcbiAgICAgIGFycltqXSA9IGNhbWxfYmFfZ2V0XzEodGhpcy5zLCBpK2opO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0KGkpO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5kYXRhLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgfVxufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzLCBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX2J5dGVzIChhKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKGNhbWxfaW50NjRfb2ZfYnl0ZXMgKGEpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlclxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3N0cmluZyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChzLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyLCBjYW1sX3N0cmluZ19vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKGNhbWxfc3RyaW5nX29mX2J5dGVzKHMpLCB0eXBlb2Ygb2ZzPT1cIm51bWJlclwiP29mczpvZnNbMF0pO1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICBzaXplWzBdID0gODtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMgKHQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbWFyc2hhbCh3cml0ZXIsIHYsIHNpemVzKSB7XG4gIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyAodik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB3cml0ZXIud3JpdGUgKDgsIGJbaV0pO1xuICBzaXplc1swXSA9IDg7IHNpemVzWzFdID0gODtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl91bm1hcnNoYWxcbmZ1bmN0aW9uIGNhbWxfaW50MzJfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHNpemVbMF0gPSA0O1xuICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsKHJlYWRlciwgc2l6ZSl7XG4gIHN3aXRjaCAocmVhZGVyLnJlYWQ4dSAoKSkge1xuICBjYXNlIDE6XG4gICAgc2l6ZVswXSA9IDQ7XG4gICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICBjYXNlIDI6XG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBuYXRpdmUgaW50ZWdlciB2YWx1ZSB0b28gbGFyZ2VcIik7XG4gIGRlZmF1bHQ6IGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBuYXRpdmUgaW50ZWdlclwiKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsLCBjYW1sX2ludDY0X21hcnNoYWwsIGNhbWxfaW50NjRfY29tcGFyZSwgY2FtbF9pbnQ2NF9oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX3VubWFyc2hhbCwgY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3NlcmlhbGl6ZSwgY2FtbF9iYV9kZXNlcmlhbGl6ZSwgY2FtbF9iYV9jb21wYXJlLCBjYW1sX2JhX2hhc2hcbnZhciBjYW1sX2N1c3RvbV9vcHMgPVxuICAgIHtcIl9qXCI6IHtcbiAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQ2NF91bm1hcnNoYWwsXG4gICAgICBzZXJpYWxpemUgIDogY2FtbF9pbnQ2NF9tYXJzaGFsLFxuICAgICAgZml4ZWRfbGVuZ3RoIDogOCxcbiAgICAgIGNvbXBhcmUgOiBjYW1sX2ludDY0X2NvbXBhcmUsXG4gICAgICBoYXNoIDogY2FtbF9pbnQ2NF9oYXNoXG4gICAgfSxcbiAgICAgXCJfaVwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDMyX3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9uXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbCxcbiAgICAgICBmaXhlZF9sZW5ndGggOiA0LFxuICAgICB9LFxuICAgICBcIl9iaWdhcnJheVwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyYXlcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyMDJcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycjAyXCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH1cbiAgICB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9mbG9hdF9vZl9ieXRlcywgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpIHtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG4gIHZhciBtYWdpYyA9IHJlYWRlci5yZWFkMzJ1ICgpXG4gIHN3aXRjaChtYWdpYyl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAwO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSBkYXRhX2xlbjtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gcmVhZGVyLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDE7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIGEgMzItYml0IHBsYXRmb3JtXCIpO1xuICAgIGJyZWFrXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWs7XG4gIH1cbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gKG51bV9vYmplY3RzID4gMCk/W106bnVsbDtcbiAgdmFyIG9ial9jb3VudGVyID0gMDtcbiAgZnVuY3Rpb24gaW50ZXJuX3JlYyAocmVhZGVyKSB7XG4gICAgdmFyIGNvZGUgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgIGlmIChjb2RlID49IDB4NDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovKSB7XG4gICAgICBpZiAoY29kZSA+PSAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovKSB7XG4gICAgICAgIHZhciB0YWcgPSBjb2RlICYgMHhGO1xuICAgICAgICB2YXIgc2l6ZSA9IChjb2RlID4+IDQpICYgMHg3O1xuICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gKGNvZGUgJiAweDNGKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNvZGUgPj0gMHgyMC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcgKi8pIHtcbiAgICAgICAgdmFyIGxlbiA9IGNvZGUgJiAweDFGO1xuICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoKGNvZGUpIHtcbiAgICAgICAgY2FzZSAweDAwOiAvL2NzdC5DT0RFX0lOVDg6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkOHMgKCk7XG4gICAgICAgIGNhc2UgMHgwMTogLy9jc3QuQ09ERV9JTlQxNjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQxNnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMjogLy9jc3QuQ09ERV9JTlQzMjpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gICAgICAgIGNhc2UgMHgwMzogLy9jc3QuQ09ERV9JTlQ2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGludGVnZXIgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDQ6IC8vY3N0LkNPREVfU0hBUkVEODpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNTogLy9jc3QuQ09ERV9TSEFSRUQxNjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQxNnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDY6IC8vY3N0LkNPREVfU0hBUkVEMzI6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA4OiAvL2NzdC5DT0RFX0JMT0NLMzI6XG4gICAgICAgICAgdmFyIGhlYWRlciA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgIHZhciB0YWcgPSBoZWFkZXIgJiAweEZGO1xuICAgICAgICAgIHZhciBzaXplID0gaGVhZGVyID4+IDEwO1xuICAgICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMzogLy9jc3QuQ09ERV9CTE9DSzY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGRhdGEgYmxvY2sgdG9vIGxhcmdlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MDk6IC8vY3N0LkNPREVfU1RSSU5HODpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEE6IC8vY3N0LkNPREVfU1RSSU5HMzI6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQzogLy9jc3QuQ09ERV9ET1VCTEVfTElUVExFOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbNyAtIGldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBCOiAvL2NzdC5DT0RFX0RPVUJMRV9CSUc6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFtpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRTogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBEOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MDc6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbNyAtIGpdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdltpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBGOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEwOiAvL2NzdC5DT0RFX0NPREVQT0lOVEVSOlxuICAgICAgICBjYXNlIDB4MTE6IC8vY3N0LkNPREVfSU5GSVhQT0lOVEVSOlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGNvZGUgcG9pbnRlclwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDEyOiAvL2NzdC5DT0RFX0NVU1RPTTpcbiAgICAgICAgY2FzZSAweDE4OiAvL2NzdC5DT0RFX0NVU1RPTV9MRU46XG4gICAgICAgIGNhc2UgMHgxOTogLy9jc3QuQ09ERV9DVVNUT01fRklYRUQ6XG4gICAgICAgICAgdmFyIGMsIHMgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlICgoYyA9IHJlYWRlci5yZWFkOHUgKCkpICE9IDApIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tzXTtcbiAgICAgICAgICB2YXIgZXhwZWN0ZWRfc2l6ZTtcbiAgICAgICAgICBpZighb3BzKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB1bmtub3duIGN1c3RvbSBibG9jayBpZGVudGlmaWVyXCIpO1xuICAgICAgICAgIHN3aXRjaChjb2RlKXtcbiAgICAgICAgICBjYXNlIDB4MTI6IC8vIGNzdC5DT0RFX0NVU1RPTSAoZGVwcmVjYXRlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxOTogLy8gY3N0LkNPREVfQ1VTVE9NX0ZJWEVEXG4gICAgICAgICAgICBpZighb3BzLmZpeGVkX2xlbmd0aClcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBleHBlY3RlZCBhIGZpeGVkLXNpemUgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IG9wcy5maXhlZF9sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTg6IC8vIGNzdC5DT0RFX0NVU1RPTV9MRU5cbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICAgIC8vIFNraXAgc2l6ZTY0XG4gICAgICAgICAgICByZWFkZXIucmVhZDMycygpOyByZWFkZXIucmVhZDMycygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBvbGRfcG9zID0gcmVhZGVyLmk7XG4gICAgICAgICAgdmFyIHNpemUgPSBbMF07XG4gICAgICAgICAgdmFyIHYgPSBvcHMuZGVzZXJpYWxpemUocmVhZGVyLCBzaXplKTtcbiAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZihleHBlY3RlZF9zaXplICE9IHNpemVbMF0pXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW5jb3JyZWN0IGxlbmd0aCBvZiBzZXJpYWxpemVkIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGggKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbWVzc2FnZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZihjb21wcmVzc2VkKSB7XG4gICAgaWYoY2FtbF9kZWNvbXByZXNzX2lucHV0KSB7XG4gICAgICB2YXIgZGF0YSA9IHJlYWRlci5yZWFkdWludDhhcnJheShkYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkodW5jb21wcmVzc2VkX2RhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBjYW1sX2RlY29tcHJlc3NfaW5wdXQoZGF0YSwgcmVzKTtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgVUludDhBcnJheVJlYWRlcihyZXMsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNvbXByZXNzZWQgb2JqZWN0LCBjYW5ub3QgZGVjb21wcmVzc1wiKTtcbiAgICB9XG4gIH1cbiAgdmFyIHJlcyA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHNpemUgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgdiA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciBkID0gdi5sZW5ndGg7XG4gICAgaWYgKGQgPCBzaXplKSBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgIHZbZF0gPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB9XG4gIGlmICh0eXBlb2Ygb2ZzIT1cIm51bWJlclwiKSBvZnNbMF0gPSByZWFkZXIuaTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAyMFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPj0gNS4xLjBcbnZhciBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgPSAxNlxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAocywgb2ZzKSB7XG4gIHZhciByID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIoY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzKSwgb2ZzKTtcbiAgZnVuY3Rpb24gcmVhZHZscShvdmVyZmxvdykge1xuICAgIHZhciBjID0gci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICBzd2l0Y2goci5yZWFkMzJ1KCkpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBkYXRhX2xlbiA9IHIucmVhZDMydSgpO1xuICAgIGJyZWFrO1xuICBjYXNlIDB4ODQ5NUE2QkQ6IC8qIEludGV4dF9tYWdpY19udW1iZXJfY29tcHJlc3NlZCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIG92ZXJmbG93ID0gW2ZhbHNlXTtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICBpZihvdmVyZmxvd1swXSl7XG4gICAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTWFyc2hhbC5kYXRhX3NpemU6IGJhZCBvYmplY3RcIik7XG4gICAgYnJlYWtcbiAgfVxuICByZXR1cm4gaGVhZGVyX2xlbiAtIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSArIGRhdGFfbGVuO1xufVxuXG4vL1Byb3ZpZGVzOiBNbE9iamVjdFRhYmxlXG52YXIgTWxPYmplY3RUYWJsZTtcbmlmICh0eXBlb2YgZ2xvYmFsVGhpcy5NYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvKiBwb2x5ZmlsbCAodXNpbmcgbGluZWFyIHNlYXJjaCkgKi9cbiAgICBmdW5jdGlvbiBOYWl2ZUxvb2t1cChvYmpzKSB7IHRoaXMub2JqcyA9IG9ianM7IH1cbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24odikge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9ianMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub2Jqc1tpXSA9PT0gdikgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfTtcbiAgICBOYWl2ZUxvb2t1cC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEbyBub3RoaW5nIGhlcmUuIFtNbE9iamVjdFRhYmxlLnN0b3JlXSB3aWxsIHB1c2ggdG8gW3RoaXMub2Jqc10gZGlyZWN0bHkuXG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IE5haXZlTG9va3VwKHRoaXMub2Jqcyk7XG4gICAgfTtcbiAgfSgpO1xufVxuZWxzZSB7XG4gIE1sT2JqZWN0VGFibGUgPSBmdW5jdGlvbiBNbE9iamVjdFRhYmxlKCkge1xuICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBnbG9iYWxUaGlzLk1hcCgpO1xuICB9O1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5zdG9yZSA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5sb29rdXAuc2V0KHYsIHRoaXMub2Jqcy5sZW5ndGgpO1xuICB0aGlzLm9ianMucHVzaCh2KTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUucmVjYWxsID0gZnVuY3Rpb24odikge1xuICB2YXIgaSA9IHRoaXMubG9va3VwLmdldCh2KTtcbiAgcmV0dXJuIChpID09PSB1bmRlZmluZWQpXG4gICAgPyB1bmRlZmluZWQgOiB0aGlzLm9ianMubGVuZ3RoIC0gaTsgICAvKiBpbmRleCBpcyByZWxhdGl2ZSAqL1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWxcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9ieXRlcywgY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogTWxPYmplY3RUYWJsZSwgY2FtbF9saXN0X3RvX2pzX2FycmF5LCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbnZhciBjYW1sX291dHB1dF92YWwgPSBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gV3JpdGVyICgpIHsgdGhpcy5jaHVuayA9IFtdOyB9XG4gIFdyaXRlci5wcm90b3R5cGUgPSB7XG4gICAgY2h1bmtfaWR4OjIwLCBibG9ja19sZW46MCwgb2JqX2NvdW50ZXI6MCwgc2l6ZV8zMjowLCBzaXplXzY0OjAsXG4gICAgd3JpdGU6ZnVuY3Rpb24gKHNpemUsIHZhbHVlKSB7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9hdDpmdW5jdGlvbiAocG9zLCBzaXplLCB2YWx1ZSkge1xuICAgICAgdmFyIHBvcyA9IHBvcztcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3BvcysrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9jb2RlOmZ1bmN0aW9uIChzaXplLCBjb2RlLCB2YWx1ZSkge1xuICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9IGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1t0aGlzLmNodW5rX2lkeCsrXSA9ICh2YWx1ZSA+PiBpKSAmIDB4RkY7XG4gICAgfSxcbiAgICB3cml0ZV9zaGFyZWQ6ZnVuY3Rpb24gKG9mZnNldCkge1xuICAgICAgaWYgKG9mZnNldCA8ICgxIDw8IDgpKSB0aGlzLndyaXRlX2NvZGUoOCwgMHgwNCAvKmNzdC5DT0RFX1NIQVJFRDgqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgaWYgKG9mZnNldCA8ICgxIDw8IDE2KSkgdGhpcy53cml0ZV9jb2RlKDE2LCAweDA1IC8qY3N0LkNPREVfU0hBUkVEMTYqLywgb2Zmc2V0KTtcbiAgICAgIGVsc2UgdGhpcy53cml0ZV9jb2RlKDMyLCAweDA2IC8qY3N0LkNPREVfU0hBUkVEMzIqLywgb2Zmc2V0KTtcbiAgICB9LFxuICAgIHBvczpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmNodW5rX2lkeCB9LFxuICAgIGZpbmFsaXplOmZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuYmxvY2tfbGVuID0gdGhpcy5jaHVua19pZHggLSAyMDtcbiAgICAgIHRoaXMuY2h1bmtfaWR4ID0gMDtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCAweDg0OTVBNkJFKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLmJsb2NrX2xlbik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5vYmpfY291bnRlcik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzMyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfNjQpO1xuICAgICAgcmV0dXJuIHRoaXMuY2h1bms7XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbiAodiwgZmxhZ3MpIHtcbiAgICBmbGFncyA9IGNhbWxfbGlzdF90b19qc19hcnJheShmbGFncyk7XG5cbiAgICB2YXIgbm9fc2hhcmluZyA9IChmbGFncy5pbmRleE9mKDAgLypNYXJzaGFsLk5vX3NoYXJpbmcqLykgIT09IC0xKSxcbiAgICAgICAgY2xvc3VyZXMgPSAgKGZsYWdzLmluZGV4T2YoMSAvKk1hcnNoYWwuQ2xvc3VyZXMqLykgIT09IC0xKTtcbiAgICAvKiBNYXJzaGFsLkNvbXBhdF8zMiBpcyByZWR1bmRhbnQgc2luY2UgaW50ZWdlcnMgYXJlIDMyLWJpdCBhbnl3YXkgKi9cblxuICAgIGlmIChjbG9zdXJlcylcbiAgICAgIGNvbnNvbGUud2FybihcImluIGNhbWxfb3V0cHV0X3ZhbDogZmxhZyBNYXJzaGFsLkNsb3N1cmVzIGlzIG5vdCBzdXBwb3J0ZWQuXCIpO1xuXG4gICAgdmFyIHdyaXRlciA9IG5ldyBXcml0ZXIgKCk7XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGludGVybl9vYmpfdGFibGUgPSBub19zaGFyaW5nID8gbnVsbCA6IG5ldyBNbE9iamVjdFRhYmxlKCk7XG5cbiAgICBmdW5jdGlvbiBtZW1vKHYpIHtcbiAgICAgIGlmIChub19zaGFyaW5nKSByZXR1cm4gZmFsc2U7XG4gICAgICB2YXIgZXhpc3Rpbmdfb2Zmc2V0ID0gaW50ZXJuX29ial90YWJsZS5yZWNhbGwodik7XG4gICAgICBpZiAoZXhpc3Rpbmdfb2Zmc2V0KSB7IHdyaXRlci53cml0ZV9zaGFyZWQoZXhpc3Rpbmdfb2Zmc2V0KTsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGVsc2UgeyBpbnRlcm5fb2JqX3RhYmxlLnN0b3JlKHYpOyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlcm5fcmVjICh2KSB7XG4gICAgICBpZiAodi5jYW1sX2N1c3RvbSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbmFtZSA9IHYuY2FtbF9jdXN0b207XG4gICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbbmFtZV07XG4gICAgICAgIHZhciBzel8zMl82NCA9IFswLDBdO1xuICAgICAgICBpZighb3BzLnNlcmlhbGl6ZSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChDdXN0b20pXCIpO1xuICAgICAgICBpZihvcHMuZml4ZWRfbGVuZ3RoID09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE4IC8qY3N0LkNPREVfQ1VTVE9NX0xFTiovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBoZWFkZXJfcG9zID0gd3JpdGVyLnBvcyAoKTtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zLCAzMiwgc3pfMzJfNjRbMF0pO1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgNCwgMzIsIDApOyAvLyB6ZXJvXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA4LCAzMiwgc3pfMzJfNjRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOSAvKmNzdC5DT0RFX0NVU1RPTV9GSVhFRCovKTtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIG5hbWUuY2hhckNvZGVBdChpKSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlKDgsIDApO1xuICAgICAgICAgIHZhciBvbGRfcG9zID0gd3JpdGVyLnBvcygpO1xuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgaWYgKG9wcy5maXhlZF9sZW5ndGggIT0gd3JpdGVyLnBvcygpIC0gb2xkX3BvcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGluY29ycmVjdCBmaXhlZCBzaXplcyBzcGVjaWZpZWQgYnkgXCIgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAyICsgKChzel8zMl82NFswXSArIDMpID4+IDIpO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAyICsgKChzel8zMl82NFsxXSArIDcpID4+IDMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFycmF5ICYmIHZbMF0gPT09ICh2WzBdfDApKSB7XG4gICAgICAgIGlmICh2WzBdID09IDI1MSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChBYnN0cmFjdClcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSlcbiAgICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJvdXRwdXRfdmFsdWU6IGNvbnRpbnVhdGlvbiB2YWx1ZVwiKTtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSAmJiBtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIGlmICh2WzBdIDwgMTYgJiYgdi5sZW5ndGggLSAxIDwgOClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8gKyB2WzBdICsgKCh2Lmxlbmd0aCAtIDEpPDw0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwOCAvKmNzdC5DT0RFX0JMT0NLMzIqLywgKCh2Lmxlbmd0aC0xKSA8PCAxMCkgfCB2WzBdKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gdi5sZW5ndGg7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IHYubGVuZ3RoO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxKSBzdGFjay5wdXNoICh2LCAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyh2KSkge1xuICAgICAgICBpZighKGNhbWxfaXNfbWxfYnl0ZXMoY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKSkpKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogW0J5dGVzLnRdIGNhbm5vdCBzYWZlbHkgYmUgbWFyc2hhbGVkIHdpdGggWy0tZW5hYmxlIHVzZS1qcy1zdHJpbmddXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX2J5dGVzX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh2KSkge1xuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldCh2LGkpKTtcbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMSArICgoKGxlbiArIDQpIC8gNCl8MCk7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDEgKyAoKChsZW4gKyA4KSAvIDgpfDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHYgIT0gKHZ8MCkpe1xuICAgICAgICAgIHZhciB0eXBlX29mX3YgPSB0eXBlb2YgdjtcbiAgICAgICAgICBpZih0eXBlX29mX3YgIT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vIElmIGEgZmxvYXQgaGFwcGVucyB0byBiZSBhbiBpbnRlZ2VyIGl0IGlzIHNlcmlhbGl6ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgIC8vIChKc19vZl9vY2FtbCBjYW5ub3QgdGVsbCB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuIGludGVnZXIgbnVtYmVyIGlzXG4gICAgICAgICAgLy8gZmxvYXQgb3IgaW50ZWdlci4pIFRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGNyYXNoZXMgd2hlblxuICAgICAgICAgIC8vIHVubWFyc2hhbGxpbmcgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bnRpbWUuXG4gICAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgICB2YXIgdCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHYpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MEMgLypjc3QuQ09ERV9ET1VCTEVfTElUVExFKi8pO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGk8ODsgaSsrKXt3cml0ZXIud3JpdGUoOCx0WzcgLSBpXSl9XG4gICAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gM1xuICAgICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDJcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ID49IDAgJiYgdiA8IDB4NDApIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDBYNDAgLypjc3QuUFJFRklYX1NNQUxMX0lOVCovICsgdik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHYgPj0gLSgxIDw8IDcpICYmIHYgPCAoMSA8PCA3KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDgsIDB4MDAgLypjc3QuQ09ERV9JTlQ4Ki8sIHYpO1xuICAgICAgICAgIGVsc2UgaWYgKHYgPj0gLSgxIDw8IDE1KSAmJiB2IDwgKDEgPDwgMTUpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMTYsIDB4MDEgLypjc3QuQ09ERV9JTlQxNiovLCB2KTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgzMiwgMHgwMiAvKmNzdC5DT0RFX0lOVDMyKi8sIHYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV4dGVybl9yZWMgKHYpO1xuICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIHZhciB2ID0gc3RhY2sucG9wICgpO1xuICAgICAgaWYgKGkgKyAxIDwgdi5sZW5ndGgpIHN0YWNrLnB1c2ggKHYsIGkgKyAxKTtcbiAgICAgIGV4dGVybl9yZWMgKHZbaV0pO1xuICAgIH1cbiAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgd3JpdGVyLm9ial9jb3VudGVyID0gaW50ZXJuX29ial90YWJsZS5vYmpzLmxlbmd0aDtcbiAgICB3cml0ZXIuZmluYWxpemUoKTtcbiAgICByZXR1cm4gd3JpdGVyLmNodW5rO1xuICB9XG59ICgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfYmxpdF9ieXRlc1xuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnVmZmVyIChzLCBvZnMsIGxlbiwgdiwgZmxhZ3MpIHtcbiAgdmFyIHQgPSBjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKTtcbiAgaWYgKHQubGVuZ3RoID4gbGVuKSBjYW1sX2ZhaWx3aXRoIChcIk1hcnNoYWwudG9fYnVmZmVyOiBidWZmZXIgb3ZlcmZsb3dcIik7XG4gIGNhbWxfYmxpdF9ieXRlcyh0LCAwLCBzLCBvZnMsIHQubGVuZ3RoKTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCA9IGNhbWxfaGFzaF9taXhfaW50NjQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCA9IGNhbWxfaGFzaF9taXhfaW50O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXQgPSBjYW1sX2hhc2hfbWl4X2Zsb2F0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmcgPSBjYW1sX2hhc2hfbWl4X3N0cmluZztcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG5mdW5jdGlvbiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZShzZWVkKSB7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChzZWVkKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF9nZXR0aW1lb2ZkYXlcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkge1xuICByZXR1cm4gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF90aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF90aW1lICgpIHtcbiAgcmV0dXJuIE1hdGguZmxvb3IoY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nbXRpbWVcbi8vQWxpYXM6IHVuaXhfZ210aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ210aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0VVRDU2Vjb25kcygpLCBkLmdldFVUQ01pbnV0ZXMoKSwgZC5nZXRVVENIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXRlKCksIGQuZ2V0VVRDTW9udGgoKSwgZC5nZXRVVENGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIGZhbHNlIHwgMCAvKiBmb3IgVVRDIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpcyBmYWxzZSAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9sb2NhbHRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9sb2NhbHRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHZhciBqYW4gPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICB2YXIganVsID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCA2LCAxKTtcbiAgdmFyIHN0ZFRpbWV6b25lT2Zmc2V0ID0gTWF0aC5tYXgoamFuLmdldFRpbWV6b25lT2Zmc2V0KCksIGp1bC5nZXRUaW1lem9uZU9mZnNldCgpKTtcbiAgcmV0dXJuIEJMT0NLKDAsIGQuZ2V0U2Vjb25kcygpLCBkLmdldE1pbnV0ZXMoKSwgZC5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgZC5nZXREYXRlKCksIGQuZ2V0TW9udGgoKSwgZC5nZXRGdWxsWWVhcigpIC0gMTkwMCxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF5KCksIGRveSxcbiAgICAgICAgICAgICAgIChkLmdldFRpbWV6b25lT2Zmc2V0KCkgPCBzdGRUaW1lem9uZU9mZnNldCkgfCAwIC8qIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAgZmllbGQuICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWt0aW1lXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X21rdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X21rdGltZSh0bSl7XG4gIHZhciBkID0gKG5ldyBEYXRlKHRtWzZdKzE5MDAsdG1bNV0sdG1bNF0sdG1bM10sdG1bMl0sdG1bMV0pKS5nZXRUaW1lKCk7XG4gIHZhciB0ID0gTWF0aC5mbG9vcihkIC8gMTAwMCk7XG4gIHZhciB0bTIgPSBjYW1sX3VuaXhfbG9jYWx0aW1lKHQpO1xuICByZXR1cm4gQkxPQ0soMCx0LHRtMik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhcnR1cCBjb25zdFxuLy9BbGlhczogd2luX3N0YXJ0dXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGFydHVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2NsZWFudXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9jbGVhbnVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xlYW51cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQgY29uc3Rcbi8vQWxpYXM6IHdpbl9oYW5kbGVfZmRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maWxlZGVzY3Jfb2ZfZmQoeCkge3JldHVybiB4O31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG4gICAgcmV0dXJuIHR0eS5pc2F0dHkoZmlsZURlc2NyaXB0b3IpPzE6MDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vQWxpYXM6IHVuaXhfaXNhdHR5XG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3VuaXhfaXNhdHR5KGZpbGVEZXNjcmlwdG9yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBtYWtlX3VuaXhfZXJyX2FyZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgdW5peF9lcnJvciA9IFtcbiAgLyogPT09VW5peC5lcnJvcj09PVxuICAgKlxuICAgKiBUaGlzIGFycmF5IGlzIGluIG9yZGVyIG9mIHRoZSB2YXJpYW50IGluIE9DYW1sXG4gICAqL1xuICBcIkUyQklHXCIsIFwiRUFDQ0VTXCIsIFwiRUFHQUlOXCIsIFwiRUJBREZcIiwgXCJFQlVTWVwiLCBcIkVDSElMRFwiLCBcIkVERUFETEtcIiwgXCJFRE9NXCIsXG4gIFwiRUVYSVNUXCIsIFwiRUZBVUxUXCIsIFwiRUZCSUdcIiwgXCJFSU5UUlwiLCBcIkVJTlZBTFwiLCBcIkVJT1wiLCBcIkVJU0RJUlwiLCBcIkVNRklMRVwiLFxuICBcIkVNTElOS1wiLCBcIkVOQU1FVE9PTE9OR1wiLCBcIkVORklMRVwiLCBcIkVOT0RFVlwiLCBcIkVOT0VOVFwiLCBcIkVOT0VYRUNcIiwgXCJFTk9MQ0tcIixcbiAgXCJFTk9NRU1cIiwgXCJFTk9TUENcIiwgXCJFTk9TWVNcIiwgXCJFTk9URElSXCIsIFwiRU5PVEVNUFRZXCIsIFwiRU5PVFRZXCIsIFwiRU5YSU9cIixcbiAgXCJFUEVSTVwiLCBcIkVQSVBFXCIsIFwiRVJBTkdFXCIsIFwiRVJPRlNcIiwgXCJFU1BJUEVcIiwgXCJFU1JDSFwiLCBcIkVYREVWXCIsIFwiRVdPVUxEQkxPQ0tcIixcbiAgXCJFSU5QUk9HUkVTU1wiLCBcIkVBTFJFQURZXCIsIFwiRU5PVFNPQ0tcIiwgXCJFREVTVEFERFJSRVFcIiwgXCJFTVNHU0laRVwiLFxuICBcIkVQUk9UT1RZUEVcIiwgXCJFTk9QUk9UT09QVFwiLCBcIkVQUk9UT05PU1VQUE9SVFwiLCBcIkVTT0NLVE5PU1VQUE9SVFwiLFxuICBcIkVPUE5PVFNVUFBcIiwgXCJFUEZOT1NVUFBPUlRcIiwgXCJFQUZOT1NVUFBPUlRcIiwgXCJFQUREUklOVVNFXCIsIFwiRUFERFJOT1RBVkFJTFwiLFxuICBcIkVORVRET1dOXCIsIFwiRU5FVFVOUkVBQ0hcIiwgXCJFTkVUUkVTRVRcIiwgXCJFQ09OTkFCT1JURURcIiwgXCJFQ09OTlJFU0VUXCIsIFwiRU5PQlVGU1wiLFxuICBcIkVJU0NPTk5cIiwgXCJFTk9UQ09OTlwiLCBcIkVTSFVURE9XTlwiLCBcIkVUT09NQU5ZUkVGU1wiLCBcIkVUSU1FRE9VVFwiLCBcIkVDT05OUkVGVVNFRFwiLFxuICBcIkVIT1NURE9XTlwiLCBcIkVIT1NUVU5SRUFDSFwiLCBcIkVMT09QXCIsIFwiRU9WRVJGTE9XXCJcbl07XG5mdW5jdGlvbiBtYWtlX3VuaXhfZXJyX2FyZ3MoY29kZSwgc3lzY2FsbCwgcGF0aCwgZXJybm8pIHtcbiAgdmFyIHZhcmlhbnQgPSB1bml4X2Vycm9yLmluZGV4T2YoY29kZSk7XG4gIGlmICh2YXJpYW50IDwgMCkge1xuICAgIC8vIERlZmF1bHQgaWYgdW5kZWZpbmVkXG4gICAgaWYgKGVycm5vID09IG51bGwpIHtcbiAgICAgIGVycm5vID0gLTk5OTlcbiAgICB9XG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgYWJvdmUgdmFyaWFudHMsIGZhbGxiYWNrIHRvIEVVTktOT1dORVJSKGludClcbiAgICB2YXJpYW50ID0gQkxPQ0soMCwgZXJybm8pO1xuICB9XG4gIHZhciBhcmdzID0gW1xuICAgIHZhcmlhbnQsXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoc3lzY2FsbCB8fCBcIlwiKSxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoIHx8IFwiXCIpXG4gIF07XG4gIHJldHVybiBhcmdzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uuc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9zdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X3N0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9sc3RhdFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5sc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbHN0YXQ6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubHN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sc3RhdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxuLy9BbGlhczogdW5peF9sc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X2xzdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfbHN0YXQobmFtZSk7XG4gIHJbOV0gPSBjYW1sX2ludDY0X29mX2ludDMyKHJbOV0pO1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ta2RpclxuZnVuY3Rpb24gY2FtbF91bml4X21rZGlyKG5hbWUsIHBlcm0pIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ta2Rpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfbWtkaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LCBwZXJtLCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JtZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcm1kaXIobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJtZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ybWRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ybWRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zeW1saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3ltbGluayh0b19kaXIsIHNyYywgZHN0KSB7XG4gIHZhciBzcmNfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHNyYyk7XG4gIHZhciBkc3Rfcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKGRzdCk7XG4gIGlmKHNyY19yb290LmRldmljZSAhPSBkc3Rfcm9vdC5kZXZpY2UpXG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBjYW5ub3Qgc3ltbGluayBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtc1wiKTtcbiAgaWYgKCFzcmNfcm9vdC5kZXZpY2Uuc3ltbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiBzcmNfcm9vdC5kZXZpY2Uuc3ltbGluayh0b19kaXIsIHNyY19yb290LnJlc3QsIGRzdF9yb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcmVhZGxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkbGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UucmVhZGxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JlYWRsaW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJlYWRsaW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3VubGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfdW5saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfdW5saW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS51bmxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3VubGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS51bmxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXR1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXR1aWQodW5pdCkge1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCl7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQoKTtcbiAgfVxuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0cHd1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHB3dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0cHd1aWQodW5pdCkge1xuICBjYW1sX3JhaXNlX25vdF9mb3VuZCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaGFzX3N5bWxpbmtcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2hhc19zeW1saW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfaGFzX3N5bWxpbmsodW5pdCkge1xuICByZXR1cm4gZnNfbm9kZV9zdXBwb3J0ZWQoKT8xOjBcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X29wZW5kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X29wZW5kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShwYXRoKTtcbiAgaWYgKCFyb290LmRldmljZS5vcGVuZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9vcGVuZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgdmFyIGRpcl9oYW5kbGUgPSByb290LmRldmljZS5vcGVuZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbiAgcmV0dXJuIHsgcG9pbnRlciA6IGRpcl9oYW5kbGUsIHBhdGg6IHBhdGggfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfcmVhZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSkge1xuICB2YXIgZW50cnk7XG4gIHRyeSB7XG4gICAgICBlbnRyeSA9IGRpcl9oYW5kbGUucG9pbnRlci5yZWFkU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJyZWFkZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG4gIGlmIChlbnRyeSA9PT0gbnVsbCkge1xuICAgICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGVudHJ5Lm5hbWUpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9jbG9zZWRpclxuZnVuY3Rpb24gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpIHtcbiAgdHJ5IHtcbiAgICAgIGRpcl9oYW5kbGUucG9pbnRlci5jbG9zZVN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3Jld2luZGRpclxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyLCBjYW1sX3VuaXhfb3BlbmRpclxuLy9BbGlhczogdW5peF9yZXdpbmRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZXdpbmRkaXIoZGlyX2hhbmRsZSkge1xuICBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG4gIHZhciBuZXdfZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKGRpcl9oYW5kbGUucGF0aCk7XG4gIGRpcl9oYW5kbGUucG9pbnRlciA9IG5ld19kaXJfaGFuZGxlLnBvaW50ZXI7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGZpcnN0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9vcGVuZGlyLCBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRmaXJzdFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRmaXJzdChwYXRoKSB7XG4gIC8vIFRoZSBXaW5kb3dzIGNvZGUgYWRkcyB0aGlzIGdsb2IgdG8gdGhlIHBhdGgsIHNvIHdlIG5lZWQgdG8gcmVtb3ZlIGl0XG4gIHZhciBwYXRoX2pzID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocGF0aCk7XG4gIHBhdGhfanMgPSBwYXRoX2pzLnJlcGxhY2UoLyhefFtcXFxcXFwvXSlcXCpcXC5cXCokLywgXCJcIik7XG4gIHBhdGggPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhwYXRoX2pzKTtcbiAgLy8gKi4qIGlzIG5vdyBzdHJpcHBlZFxuICB2YXIgZGlyX2hhbmRsZSA9IGNhbWxfdW5peF9vcGVuZGlyKHBhdGgpO1xuICB2YXIgZmlyc3RfZW50cnkgPSBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbiAgLy8gVGhlIFdpbmRvd3MgYmluZGluZ3MgdHlwZSBkaXJfaGFuZGxlIGFzIGFuIGBpbnRgIGJ1dCBpdCdzIG5vdCBpbiBKU1xuICByZXR1cm4gWzAsIGZpcnN0X2VudHJ5LCBkaXJfaGFuZGxlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRuZXh0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfcmVhZGRpclxuLy9BbGlhczogd2luX2ZpbmRuZXh0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZG5leHQoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpclxuLy9BbGlhczogd2luX2ZpbmRjbG9zZVxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRjbG9zZShkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgY29uc3Rcbi8vQWxpYXM6IHVuaXhfaW5ldF9hZGRyX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmcgKCkge3JldHVybiAwO31cblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGNhc2UgXCJcIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX3N5c19mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgTWxGYWtlRmQsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpICYmICF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG5cbiAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gIHZhciBjID0gZmFsc2U7XG4gIHZhciBpID0gMDtcbiAgcmV0dXJuIHsgcmVhZFN5bmMgOiAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaSA9PSBhLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICBpKys7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkgfVxuICB9KVxuICAgICwgY2xvc2VTeW5jOiAoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYyA9IHRydWU7XG4gICAgICBhID0gW107XG4gICAgfSlcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVnaXN0ZXI9IGZ1bmN0aW9uIChuYW1lLGNvbnRlbnQpe1xuICB2YXIgZmlsZTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVdKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICBpZihjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjb250ZW50KTtcbiAgaWYoY2FtbF9pc19tbF9zdHJpbmcoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50IGluc3RhbmNlb2YgQXJyYXkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICBlbHNlIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQudG9TdHJpbmcpIHtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2J5dGVzX29mX3N0cmluZyhjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjb250ZW50LnRvU3RyaW5nKCkpKTtcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoYnl0ZXMpO1xuICB9XG4gIGlmKGZpbGUpe1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gZmlsZTtcbiAgfVxuICBlbHNlIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCB0aGlzLmRhdGEsIG9mZnNldCwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgbGVuID0gY2xlbiAtIG9mZnNldDtcbiAgfVxuICBpZihsZW4pIHtcbiAgICB2YXIgZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGRhdGEsIDAsIGxlbik7XG4gICAgYnVmLnNldChjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGRhdGEpLCBwb3MpO1xuICB9XG4gIHJldHVybiBsZW5cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZF9vdXQoZmQsZmxhZ3MpIHtcbiAgTWxGYWtlRmlsZS5jYWxsKHRoaXMsIGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgdGhpcy5sb2cgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIDAgfSk7XG4gIGlmKGZkID09IDEgJiYgdHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICBlbHNlIGlmKGZkID09IDIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5lcnJvcjtcbiAgZWxzZSBpZih0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2dcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgfVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5sb2cpIHtcbiAgICBpZihsZW4gPiAwXG4gICAgICAgJiYgcG9zID49IDBcbiAgICAgICAmJiBwb3MrbGVuIDw9IGJ1Zi5sZW5ndGhcbiAgICAgICAmJiBidWZbcG9zK2xlbi0xXSA9PSAxMClcbiAgICAgIGxlbiAtLTtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICB2YXIgc3JjID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHNyYywgMCwgbGVuKTtcbiAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBpcyB3cml0ZSBvbmx5XCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZChuYW1lLCBmaWxlLGZsYWdzKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cblxuTWxGYWtlRmQucHJvdG90eXBlLmVycl9jbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubmFtZSAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUubGVuZ3RoICgpXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LGJ1Zixwb3MsbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUucmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG59XG4iLCJcbi8vUHJvdmlkZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIE1sTXV0ZXgoKSB7XG4gIHRoaXMubG9ja2VkID0gZmFsc2Vcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9uZXdcbi8vUmVxdWlyZXM6IE1sTXV0ZXhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbmV3KHVuaXQpIHtcbiAgcmV0dXJuIG5ldyBNbE11dGV4KCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbG9ja1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9sb2NrKHQpIHtcbiAgaWYodC5sb2NrZWQpXG4gICAgY2FtbF9mYWlsd2l0aChcIk11dGV4LmxvY2s6IG11dGV4IGFscmVhZHkgbG9ja2VkLiBDYW5ub3Qgd2FpdC5cIik7XG4gIGVsc2UgdC5sb2NrZWQgPSB0cnVlO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF90cnlfbG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF90cnlfbG9jayh0KSB7XG4gIGlmKCF0LmxvY2tlZCkge1xuICAgIHQubG9ja2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHQpIHtcbiAgdC5sb2NrZWQgPSBmYWxzZTtcbiAgcmV0dXJuIDA7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBJbnQzMkFycmF5KHgpO1xuICAvLyBGb3IgbnVtIDwgMS41XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuXG4gIC8vIFdlIGFkZCArMiB0byB0aGUgYXJyYXkgbGVuZ3RoOlxuICAvLyAtICsxIGZvciB0aGUgdGFnXG4gIC8vIC0gKzEgZm9yIHRoZSBjdXN0b21fb3BzIHNsb3RcbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogbGVuZ3RoX25hdFxuZnVuY3Rpb24gbGVuZ3RoX25hdCh4KSB7XG4gIHJldHVybiB4LmRhdGEubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+PTE2OyB9XG4gIGlmKGEgJiAweEZGMDApICAgICB7IGIgKz0gODsgYSA+Pj49IDg7IH1cbiAgaWYoYSAmIDB4RjApICAgICAgIHsgYiArPSA0OyBhID4+Pj0gNDsgfVxuICBpZihhICYgMTIpICAgICAgICAgeyBiICs9IDI7IGEgPj4+PSAyOyB9XG4gIGlmKGEgJiAyKSAgICAgICAgICB7IGIgKz0gMTsgYSA+Pj49IDE7IH1cbiAgaWYoYSAmIDEpICAgICAgICAgIHsgYiArPSAxOyB9XG4gIHJldHVybiAzMiAtIGI7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X2ludFxuZnVuY3Rpb24gaXNfZGlnaXRfaW50KG5hdCwgb2ZzKSB7XG4gIGlmIChuYXQuZGF0YVtvZnNdID49IDApIHJldHVybiAxXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF96ZXJvXG5mdW5jdGlvbiBpc19kaWdpdF96ZXJvKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gPT0gMCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpc19kaWdpdF9vZGRcbmZ1bmN0aW9uIGlzX2RpZ2l0X29kZChuYXQsIG9mcykge1xuICBpZihuYXQuZGF0YVtvZnNdICYgMSkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbmNyX25hdFxuZnVuY3Rpb24gaW5jcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoeCB8IDApO1xuICAgIGlmKHggPT0gKHggPj4+IDApKSB7XG4gICAgICBjYXJyeSA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogYWRkX25hdFxuLy9SZXF1aXJlczogaW5jcl9uYXRcbmZ1bmN0aW9uIGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGNhcnJ5ID0gY2FycnlfaW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICsgY2Fycnk7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FycnkgPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5jcl9uYXQobmF0MSwgb2ZzMStsZW4yLCBsZW4xLWxlbjIsIGNhcnJ5KTtcbn1cblxuLy9Qcm92aWRlczogY29tcGxlbWVudF9uYXRcbmZ1bmN0aW9uIGNvbXBsZW1lbnRfbmF0KG5hdCwgb2ZzLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0gKC0xID4+PiAwKSAtIChuYXQuZGF0YVtvZnMraV0gPj4+IDApO1xuICB9XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vL1Byb3ZpZGVzOiBkZWNyX25hdFxuZnVuY3Rpb24gZGVjcl9uYXQobmF0LCBvZnMsIGxlbiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgeCA9IChuYXQuZGF0YVtvZnMraV0gPj4+MCkgLSBib3Jyb3c7XG4gICAgbmF0LmRhdGFbb2ZzK2ldID0geDtcbiAgICBpZiAoeCA+PSAwKSB7XG4gICAgICBib3Jyb3cgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAoYm9ycm93ID09IDEpID8gMCA6IDE7XG59XG5cbi8vIG9jYW1sIGZsaXBzIGNhcnJ5X2luXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IHN1Yl9uYXRcbi8vUmVxdWlyZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBzdWJfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIGNhcnJ5X2luKSB7XG4gIHZhciBib3Jyb3cgPSAoY2FycnlfaW4gPT0gMSkgPyAwIDogMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSAtIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgLSBib3Jyb3c7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvcnJvdyA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgKGJvcnJvdz09MSk/MDoxKTtcbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1tvZnMzXVxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBtdWx0X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogYWRkX25hdCwgbmF0X29mX2FycmF5XG5mdW5jdGlvbiBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBhID0gKG5hdDMuZGF0YVtvZnMzXSA+Pj4gMCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4yOyBpKyspIHtcbiAgICB2YXIgeDEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApICsgKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAqIChhICYgMHgwMDAwRkZGRikgKyBjYXJyeTtcbiAgICB2YXIgeDIgPSAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgPj4+IDE2KTtcbiAgICBjYXJyeSA9IE1hdGguZmxvb3IoeDIvNjU1MzYpO1xuICAgIHZhciB4MyA9IHgxICsgKHgyICUgNjU1MzYpICogNjU1MzY7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSB4MztcbiAgICBjYXJyeSArPSBNYXRoLmZsb29yKHgzLzQyOTQ5NjcyOTYpO1xuICB9XG5cbiAgaWYobGVuMiA8IGxlbjEgJiYgY2FycnkpIHtcbiAgICByZXR1cm4gYWRkX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgbmF0X29mX2FycmF5KFtjYXJyeV0pLCAwLCAxLCAwKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2Fycnk7XG4gIH1cbn1cblxuLy8gbmF0MSArPSBuYXQyICogbmF0M1xuLy8gbGVuMSA+PSBsZW4yICsgbGVuMy5cbi8vUHJvdmlkZXM6IG11bHRfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X2RpZ2l0X25hdFxuZnVuY3Rpb24gbXVsdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMywgbGVuMykge1xuICB2YXIgY2FycnkgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMzsgaSsrKSB7XG4gICAgY2FycnkgKz0gbXVsdF9kaWdpdF9uYXQobmF0MSwgb2ZzMStpLCBsZW4xLWksIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMraSk7XG4gIH1cbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG4vLyBuYXQxID0gMiAqIG5hdDEgKyBuYXQyICogbmF0MlxuLy8gbGVuMSA+PSAyICogbGVuMlxuLy9Qcm92aWRlczogc3F1YXJlX25hdFxuLy9SZXF1aXJlczogbXVsdF9uYXQsIGFkZF9uYXRcbmZ1bmN0aW9uIHNxdWFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgY2FycnkgPSAwO1xuICBjYXJyeSArPSBhZGRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDEsIG9mczEsIGxlbjEsIDApO1xuICBjYXJyeSArPSBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKTtcbiAgcmV0dXJuIGNhcnJ5O1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfbGVmdF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X2xlZnRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIG5iaXRzKSB7XG4gIGlmKG5iaXRzID09IDApIHtcbiAgICBuYXQyLmRhdGFbb2ZzMl0gPSAwO1xuICAgIHJldHVybiAwO1xuICB9XG4gIHZhciB3cmFwID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjE7IGkrKykge1xuICAgIHZhciBhID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhIDw8IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPj4+ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy8gQXNzdW1pbmcgYyA+IGEsIHJldHVybnMgW3F1b3RpZW50LCByZW1haW5kZXJdIG9mIChhPDwzMiArIGIpL2Ncbi8vUHJvdmlkZXM6IGRpdl9oZWxwZXJcbmZ1bmN0aW9uIGRpdl9oZWxwZXIoYSwgYiwgYykge1xuICB2YXIgeCA9IGEgKiA2NTUzNiArIChiPj4+MTYpO1xuICB2YXIgeSA9IE1hdGguZmxvb3IoeC9jKSAqIDY1NTM2O1xuICB2YXIgeiA9ICh4ICUgYykgKiA2NTUzNjtcbiAgdmFyIHcgPSB6ICsgKGIgJiAweDAwMDBGRkZGKTtcbiAgcmV0dXJuIFt5ICsgTWF0aC5mbG9vcih3L2MpLCB3ICUgY107XG59XG5cbi8vIG5hdDFbb2ZzMStsZW5dIDwgbmF0MltvZnMyXVxuLy9Qcm92aWRlczogZGl2X2RpZ2l0X25hdFxuLy9SZXF1aXJlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2RpZ2l0X25hdChuYXRxLCBvZnNxLCBuYXRyLCBvZnNyLCBuYXQxLCBvZnMxLCBsZW4sIG5hdDIsIG9mczIpIHtcbiAgdmFyIHJlbSA9IChuYXQxLmRhdGFbb2ZzMStsZW4tMV0gPj4+MCk7XG4gIC8vIG5hdHFbb2ZzcStsZW4tMV0gaXMgZ3VhcmFudGVlZCB0byBiZSB6ZXJvIChkdWUgdG8gdGhlIE1TRCByZXF1aXJlbWVudCksXG4gIC8vIGFuZCBzaG91bGQgbm90IGJlIHdyaXR0ZW4gdG8uXG4gIGZvcih2YXIgaSA9IGxlbi0yOyBpID49IDA7IGktLSkge1xuICAgIHZhciB4ID0gZGl2X2hlbHBlcihyZW0sIChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQyLmRhdGFbb2ZzMl0gPj4+IDApKTtcbiAgICBuYXRxLmRhdGFbb2ZzcStpXSA9IHhbMF07XG4gICAgcmVtID0geFsxXTtcbiAgfVxuICBuYXRyLmRhdGFbb2Zzcl0gPSByZW07XG4gIHJldHVybiAwO1xufVxuXG4vLyBuYXQxW25hdDI6XSA6PSBuYXQxIC8gbmF0MlxuLy8gbmF0MVs6bmF0Ml0gOj0gbmF0MSAlIG5hdDJcbi8vIGxlbjEgPiBsZW4yLCBuYXQyW29mczIrbGVuMi0xXSA+IG5hdDFbb2ZzMStsZW4xLTFdXG4vL1Byb3ZpZGVzOiBkaXZfbmF0XG4vL1JlcXVpcmVzOiBkaXZfZGlnaXRfbmF0LCBkaXZfaGVscGVyLCBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQsIHNoaWZ0X2xlZnRfbmF0LCBzaGlmdF9yaWdodF9uYXQsIGNyZWF0ZV9uYXQsIHNldF90b196ZXJvX25hdCwgbXVsdF9kaWdpdF9uYXQsIHN1Yl9uYXQsIGNvbXBhcmVfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIGRpdl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICBpZihsZW4yID09IDEpIHtcbiAgICBkaXZfZGlnaXRfbmF0KG5hdDEsIG9mczErMSwgbmF0MSwgb2ZzMSwgbmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMik7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgcyA9IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdChuYXQyLCBvZnMyK2xlbjItMSk7XG4gIHNoaWZ0X2xlZnRfbmF0KG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuXG4gIHZhciBkID0gKG5hdDIuZGF0YVtvZnMyK2xlbjItMV0gPj4+IDApICsgMTtcbiAgdmFyIGEgPSBjcmVhdGVfbmF0KGxlbjIrMSk7XG4gIGZvciAodmFyIGkgPSBsZW4xIC0gMTsgaSA+PSBsZW4yOyBpLS0pIHtcbiAgICAvLyBEZWNlbnQgbG93ZXIgYm91bmQgb24gcXVvXG4gICAgdmFyIHF1byA9IGQgPT0gNDI5NDk2NzI5NiA/IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgOiBkaXZfaGVscGVyKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCksIChuYXQxLmRhdGFbb2ZzMStpLTFdID4+PjApLCBkKVswXTtcbiAgICBzZXRfdG9femVyb19uYXQoYSwgMCwgbGVuMisxKTtcbiAgICBtdWx0X2RpZ2l0X25hdChhLCAwLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdF9vZl9hcnJheShbcXVvXSksIDApO1xuICAgIHN1Yl9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIrMSwgYSwgMCwgbGVuMisxLCAxKTtcblxuICAgIHdoaWxlIChuYXQxLmRhdGFbb2ZzMStpXSAhPSAwIHx8IGNvbXBhcmVfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yLCBuYXQyLCBvZnMyLCBsZW4yKSA+PSAwKSB7XG4gICAgICBxdW8gPSBxdW8gKyAxO1xuICAgICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBuYXQyLCBvZnMyLCBsZW4yLCAxKTtcbiAgICB9XG5cbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHF1bztcbiAgfVxuXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHNoaWZ0IHJlbWFpbmRlclxuICBzaGlmdF9yaWdodF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpOyAvLyByZXN0b3JlXG4gIHJldHVybiAwO1xufVxuXG5cbi8vIDAgPD0gc2hpZnQgPCAzMlxuLy9Qcm92aWRlczogc2hpZnRfcmlnaHRfbmF0XG5mdW5jdGlvbiBzaGlmdF9yaWdodF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSBsZW4xLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGEgPSBuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMDtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IChhID4+PiBuYml0cykgfCB3cmFwO1xuICAgIHdyYXAgPSBhIDw8ICgzMiAtIG5iaXRzKTtcbiAgfVxuICBuYXQyLmRhdGFbb2ZzMl0gPSB3cmFwO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPiBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAxO1xuICBpZihuYXQxLmRhdGFbb2ZzMV0gPCBuYXQyLmRhdGFbb2ZzMl0pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0XG4vL1JlcXVpcmVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gY29tcGFyZV9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMikge1xuICB2YXIgYSA9IG51bV9kaWdpdHNfbmF0KG5hdDEsIG9mczEsIGxlbjEpO1xuICB2YXIgYiA9IG51bV9kaWdpdHNfbmF0KG5hdDIsIG9mczIsIGxlbjIpO1xuICBpZihhID4gYikgcmV0dXJuIDE7XG4gIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gIGZvcih2YXIgaSA9IGxlbjEgLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICgobmF0MS5kYXRhW29mczEraV0gPj4+IDApID4gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSkgcmV0dXJuIDE7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPCAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zLm5vZGUgIT09ICd1bmRlZmluZWQnKVxufVxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIGZhbHNlXG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2Uocm9vdCkge1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNGaWxlID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRmlsZSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSwgbW9kZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMubWtkaXJTeW5jKHRoaXMubm0obmFtZSkse21vZGU6bW9kZX0pO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ybWRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnJlYWRkaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0RpcmVjdG9yeSgpPzE6MDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYiA9IHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gICAgdGhpcy5mcy51bmxpbmtTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiBiO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmLCByYWlzZV91bml4KSB7XG4gIHZhciBjb25zdHMgPSByZXF1aXJlKCdjb25zdGFudHMnKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIga2V5IGluIGYpe1xuICAgIHN3aXRjaChrZXkpe1xuICAgIGNhc2UgXCJyZG9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fUkRPTkxZOyBicmVhaztcbiAgICBjYXNlIFwid3Jvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1dST05MWTsgYnJlYWs7XG4gICAgY2FzZSBcImFwcGVuZFwiICA6XG4gICAgICByZXMgfD0gY29uc3RzLk9fV1JPTkxZIHwgY29uc3RzLk9fQVBQRU5EO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNyZWF0ZVwiICAgOiByZXMgfD0gY29uc3RzLk9fQ1JFQVQ7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0cnVuY2F0ZVwiIDogcmVzIHw9IGNvbnN0cy5PX1RSVU5DOyAgICBicmVhaztcbiAgICBjYXNlIFwiZXhjbFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19FWENMOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJpbmFyeVwiICAgOiByZXMgfD0gY29uc3RzLk9fQklOQVJZOyAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0ZXh0XCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX1RFWFQ7ICAgICBicmVhaztcbiAgICBjYXNlIFwibm9uYmxvY2tcIiA6IHJlcyB8PSBjb25zdHMuT19OT05CTE9DSzsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRyeSB7XG4gICAgdmFyIGZkID0gdGhpcy5mcy5vcGVuU3luYyh0aGlzLm5tKG5hbWUpLCByZXMpO1xuICAgIHZhciBpc0NoYXJhY3RlckRldmljZSA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzQ2hhcmFjdGVyRGV2aWNlKCk7XG4gICAgZi5pc0NoYXJhY3RlckRldmljZSA9IGlzQ2hhcmFjdGVyRGV2aWNlO1xuICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGYpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVuYW1lID0gZnVuY3Rpb24obywgbiwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucmVuYW1lU3luYyh0aGlzLm5tKG8pLCB0aGlzLm5tKG4pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubHN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHNfZnJvbV9qcyhqc19zdGF0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3ltbGluayA9IGZ1bmN0aW9uKHRvX2RpciwgdGFyZ2V0LCBwYXRoLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5zeW1saW5rU3luYyh0aGlzLm5tKHRhcmdldCksIHRoaXMubm0ocGF0aCksIHRvX2RpciA/ICdkaXInIDogJ2ZpbGUnKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZWFkbGluayA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgbGluayA9IHRoaXMuZnMucmVhZGxpbmtTeW5jKHRoaXMubm0obmFtZSksICd1dGY4Jyk7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGxpbmspO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMub3BlbmRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmFpc2Vfbm9kZWpzX2Vycm9yID0gZnVuY3Rpb24oZXJyLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZShcIlVuaXguVW5peF9lcnJvclwiKTtcbiAgaWYgKHJhaXNlX3VuaXggJiYgdW5peF9lcnJvcikge1xuICAgIHZhciBhcmdzID0gbWFrZV91bml4X2Vycl9hcmdzKGVyci5jb2RlLCBlcnIuc3lzY2FsbCwgZXJyLnBhdGgsIGVyci5lcnJubyk7XG4gICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXRzX2Zyb21fanMgPSBmdW5jdGlvbihqc19zdGF0cykge1xuICAvKiA9PT1Vbml4LmZpbGVfa2luZD09PVxuICAgKiB0eXBlIGZpbGVfa2luZCA9XG4gICAqICAgICBTX1JFRyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFJlZ3VsYXIgZmlsZSAqKVxuICAgKiAgIHwgU19ESVIgICAgICAgICAgICAgICAgICAgICAgICgqKiBEaXJlY3RvcnkgKilcbiAgICogICB8IFNfQ0hSICAgICAgICAgICAgICAgICAgICAgICAoKiogQ2hhcmFjdGVyIGRldmljZSAqKVxuICAgKiAgIHwgU19CTEsgICAgICAgICAgICAgICAgICAgICAgICgqKiBCbG9jayBkZXZpY2UgKilcbiAgICogICB8IFNfTE5LICAgICAgICAgICAgICAgICAgICAgICAoKiogU3ltYm9saWMgbGluayAqKVxuICAgKiAgIHwgU19GSUZPICAgICAgICAgICAgICAgICAgICAgICgqKiBOYW1lZCBwaXBlICopXG4gICAqICAgfCBTX1NPQ0sgICAgICAgICAgICAgICAgICAgICAgKCoqIFNvY2tldCAqKVxuICAgKi9cbiAgdmFyIGZpbGVfa2luZDtcbiAgaWYgKGpzX3N0YXRzLmlzRmlsZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZV9raW5kID0gMTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0NoYXJhY3RlckRldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMjtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAzO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA0O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRklGTygpKSB7XG4gICAgZmlsZV9raW5kID0gNTtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1NvY2tldCgpKSB7XG4gICAgZmlsZV9raW5kID0gNjtcbiAgfVxuICAvKiA9PT1Vbml4LnN0YXRzPT09XG4gICAqIHR5cGUgc3RhdHMgPVxuICAgKiAgeyBzdF9kZXYgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIERldmljZSBudW1iZXIgKilcbiAgICogICAgc3RfaW5vIDogaW50OyAgICAgICAgICAgICAgICgqKiBJbm9kZSBudW1iZXIgKilcbiAgICogICAgc3Rfa2luZCA6IGZpbGVfa2luZDsgICAgICAgICgqKiBLaW5kIG9mIHRoZSBmaWxlICopXG4gICAqICAgIHN0X3Blcm0gOiBmaWxlX3Blcm07ICAgICAgICAoKiogQWNjZXNzIHJpZ2h0cyAqKVxuICAgKiAgICBzdF9ubGluayA6IGludDsgICAgICAgICAgICAgKCoqIE51bWJlciBvZiBsaW5rcyAqKVxuICAgKiAgICBzdF91aWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIFVzZXIgaWQgb2YgdGhlIG93bmVyICopXG4gICAqICAgIHN0X2dpZCA6IGludDsgICAgICAgICAgICAgICAoKiogR3JvdXAgSUQgb2YgdGhlIGZpbGUncyBncm91cCAqKVxuICAgKiAgICBzdF9yZGV2IDogaW50OyAgICAgICAgICAgICAgKCoqIERldmljZSBJRCAoaWYgc3BlY2lhbCBmaWxlKSAqKVxuICAgKiAgICBzdF9zaXplIDogaW50OyAgICAgICAgICAgICAgKCoqIFNpemUgaW4gYnl0ZXMgKilcbiAgICogICAgc3RfYXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IGFjY2VzcyB0aW1lICopXG4gICAqICAgIHN0X210aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBtb2RpZmljYXRpb24gdGltZSAqKVxuICAgKiAgICBzdF9jdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3Qgc3RhdHVzIGNoYW5nZSB0aW1lICopXG4gICAqICB9XG4gICAqL1xuICByZXR1cm4gQkxPQ0soXG4gICAgMCxcbiAgICBqc19zdGF0cy5kZXYsXG4gICAganNfc3RhdHMuaW5vLFxuICAgIGZpbGVfa2luZCxcbiAgICBqc19zdGF0cy5tb2RlLFxuICAgIGpzX3N0YXRzLm5saW5rLFxuICAgIGpzX3N0YXRzLnVpZCxcbiAgICBqc19zdGF0cy5naWQsXG4gICAganNfc3RhdHMucmRldixcbiAgICBqc19zdGF0cy5zaXplLFxuICAgIGpzX3N0YXRzLmF0aW1lTXMsXG4gICAganNfc3RhdHMubXRpbWVNcyxcbiAgICBqc19zdGF0cy5jdGltZU1zXG4gICk7XG59XG5cbk1sTm9kZURldmljZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVEZXZpY2VcblxuLy9Qcm92aWRlczogTWxOb2RlRGV2aWNlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVEZXZpY2UoKSB7XG59XG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL1JlcXVpcmVzOiBNbEZpbGUsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX3NldCwgY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sTm9kZUZkKGZkLCBmbGFncyl7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLmZkID0gZmQ7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cbk1sTm9kZUZkLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbE5vZGVGZC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbE5vZGVGZDtcblxuTWxOb2RlRmQucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmZ0cnVuY2F0ZVN5bmModGhpcy5mZCxsZW58MCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5mc3RhdFN5bmModGhpcy5mZCkuc2l6ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxhLGJ1Zl9vZmZzZXQsbGVuKXtcbiAgdHJ5IHtcbiAgICBpZih0aGlzLmZsYWdzLmlzQ2hhcmFjdGVyRGV2aWNlKVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdmFyIHJlYWQgPSB0aGlzLmZzLnJlYWRTeW5jKHRoaXMuZmQsIGEsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgICByZXR1cm4gcmVhZDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIHRoaXMuZnMuY2xvc2VTeW5jKHRoaXMuZmQpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZUZkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBNbE5vZGVGZCgpe1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vUmVxdWlyZXM6IE1sTm9kZUZkXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIGlmKGZsYWdzLm5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGZzID0gcmVxdWlyZShcImZzXCIpO1xuICAgICAgdmFyIGZkMiA9IGZzLm9wZW5TeW5jKGZsYWdzLm5hbWUsIFwicnNcIik7XG4gICAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkMiwgZmxhZ3MpO1xuICAgIH0gY2F0Y2goZSkgeyAgfVxuICB9XG4gIHJldHVybiBuZXcgTWxOb2RlRmQoZmQsIGZsYWdzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2FsbG9jXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZVxuZnVuY3Rpb24gYmlnc3RyaW5nX2FsbG9jKF8sc2l6ZSl7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZSgxMiwgMCwgWzAsc2l6ZV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXG5mdW5jdGlvbiBiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViKHgpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfc3R1YihzMSwgaTEsIHMyLCBpMiwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmEoczEsaTEsczIsaTIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLGRzdCxkc3RfcG9zLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1zZXRfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbXNldF9zdHViKGJpZ3N0cmluZywgdl9wb3MsIHZfbGVuLCB2X2NoYXIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgY2FtbF9iYV9zZXRfMShiaWdzdHJpbmcsIHZfcG9zICsgaSwgdl9jaGFyKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1jbXBfc3R1Yih2X3MxLCB2X3MxX3Bvcywgdl9zMiwgdl9zMl9wb3MsIHZfbGVuKXtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2X2xlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHZfczEsdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEodl9zMix2X3MyX3BvcyArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19tZW1jbXBfYnl0ZXNfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMSwgY2FtbF9ieXRlc19nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1jbXBfYnl0ZXNfc3R1Yih2X3MxLCB2X3MxX3Bvcywgdl9zMiwgdl9zMl9wb3MsIHZfbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLCB2X3MxX3BvcyArIGkpO1xuICAgIHZhciBiID0gY2FtbF9ieXRlc19nZXQodl9zMiwgdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbnZhciBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmcgPSBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZ1xuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfZmluZFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX2ZpbmQoYnMsIGNociwgcG9zLCBsZW4pe1xuICB3aGlsZShsZW4gPiAwKXtcbiAgICBpZihjYW1sX2JhX2dldF8xKGJzLHBvcykgPT0gY2hyKSByZXR1cm4gcG9zO1xuICAgIHBvcysrO1xuICAgIGxlbi0tO1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbW1lbV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nX21lbW1lbV9ieXRlY29kZShoYXlzdGFjaywgbmVlZGxlLCBoYXlzdGFja19wb3MsIGhheXN0YWNrX2xlbiwgbmVlZGxlX3BvcywgbmVlZGxlX2xlbil7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxpbSA9IGhheXN0YWNrX2xlbiAtIG5lZWRsZV9sZW47XG4gIGZvcih2YXIgaSA9IDA7IGkgPD0gbGltOyArK2kpIHtcbiAgICB2YXIgbWF0Y2hlcyA9IHRydWU7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBuZWVkbGVfbGVuOyArK2opIHtcbiAgICAgIGlmIChjYW1sX2JhX2dldF8xKGhheXN0YWNrLCBoYXlzdGFja19wb3MgKyBpICsgaikgIT0gY2FtbF9iYV9nZXRfMShuZWVkbGUsbmVlZGxlX3BvcyArIGopKSB7XG4gICAgICAgIG1hdGNoZXMgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChtYXRjaGVzKSByZXR1cm4gKGhheXN0YWNrX3BvcyArIGkpO1xuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLy8vLy8vLy8gQ09SRVxuXG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG52YXIgY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXQgPSBjYW1sX2FycmF5X2JsaXRcbi8vUHJvdmlkZXM6IGNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXQgPSBjYW1sX2FycmF5X2JsaXRcblxuLy9Qcm92aWRlczogY29yZV90aW1lX25zX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY29yZV90aW1lX25zX2Zvcm1hdCh0aW1lLGZvcm1hdCl7XG4gIHZhciBkID0gbmV3IERhdGUodGltZSAqIDEwMDApO1xuICB2YXIgZm9ybWF0anMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZvcm1hdCk7XG4gIHZhciBqc3RyaW5nID0gam9vX2dsb2JhbF9vYmplY3Quc3RyZnRpbWUoZm9ybWF0anMsIGQpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc3RyaW5nKTtcbn1cblxuLy9Qcm92aWRlczogY29yZV9nY19jb21wYWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19jb21wYWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfaGVhcF9jaHVua3NcbmZ1bmN0aW9uIGNvcmVfZ2NfaGVhcF9jaHVua3MgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWFqb3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWFqb3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcHJvbW90ZWRfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfcHJvbW90ZWRfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3RvcF9oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3RvcF9oZWFwX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19ydW5fbWVtcHJvZl9jYWxsYmFja3NcbmZ1bmN0aW9uIGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzICgpIHsgcmV0dXJuIDAgfVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9mZFxuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4sIGNhbWxfbWQ1X2NoYW4sIGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuZnVuY3Rpb24gY29yZV9tZDVfZmQoZmQpe1xuICAgIHZhciBpYyA9IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gY2FtbF9tZDVfY2hhbihpYywgLTEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChpYyk7XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21kNV9zdHJpbmcsIGNhbWxfYmxpdF9zdHJpbmcsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmcoYnVmLCBvZnMsIGxlbiwgcmVzKXtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKGJ1Ziwgb2ZzLCBieXRlcywgMCwgbGVuKTtcbiAgICB2YXIgcmVzMiA9IGNhbWxfbWQ1X3N0cmluZyhjYW1sX3N0cmluZ19vZl9ieXRlcyhieXRlcyksIDAsIGxlbik7XG4gICAgY2FtbF9ibGl0X3N0cmluZyhyZXMyLCAwLCByZXMsIDAsIDE2KTtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9CaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBiaWdzdHJpbmdfZGVzdHJveV9zdHViKHZfYnN0cikge1xuICBpZiAodl9ic3RyLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfZGVzdHJveTogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gIH1cbiAgLy8gTXV0YXRlIHRoZSBvcmlnaW5hbCBiaWdzdHJpbmcgaW4tcGxhY2UsIHRvIHNpbXVsYXRlIHdoYXQgdGhlIEMgdmVyc2lvbiBkb2VzXG4gIHZfYnN0ci5fX2lzX2RlYWxsb2NhdGVkID0gdHJ1ZTtcbiAgdl9ic3RyLmRhdGEgPSBuZXcgdl9ic3RyLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKDApO1xuICB2X2JzdHIuZGltcyA9IFsgMCBdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3JlYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG5mdW5jdGlvbiBiaWdzdHJpbmdfcmVhbGxvYyhiaWdzdHJpbmcsIHNpemUpIHtcbiAgICBpZiAoYmlnc3RyaW5nLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX3JlYWxsb2M6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICAgIH1cblxuICAgIHZhciBuZXdfZGF0YSA9IG5ldyBiaWdzdHJpbmcuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3Ioc2l6ZSk7XG4gICAgbmV3X2RhdGEuc2V0KGJpZ3N0cmluZy5kYXRhLnNsaWNlKDAsIHNpemUpKTtcbiAgICB2YXIgbmV3X2JpZ3N0cmluZyA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiaWdzdHJpbmcua2luZCwgYmlnc3RyaW5nLmxheW91dCwgW3NpemVdLCBuZXdfZGF0YSk7XG4gICAgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YihiaWdzdHJpbmcpO1xuXG4gICAgcmV0dXJuIG5ld19iaWdzdHJpbmc7XG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgSW5oYWJpdGVkIFR5cGUgTExDLlxuXG4gICAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uc1xuICAgIGFyZSBtZXQ6XG5cbiAgICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cblxuICAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZVxuICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cbiAgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBoaXMgY29udHJpYnV0b3JzXG4gICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlXG4gICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uXG5cbiAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU1xuICAgIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gICAgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICAgIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUlxuICAgIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbiAgICBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICAgIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKVxuICAgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCxcbiAgICBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU5cbiAgICBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEVcbiAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX2JsaXRfdG9fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX29mZixkc3QsZHN0X29mZixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmcoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pIHtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2ludF9jb21wYXJlXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nKGJhMSwgYmExX29mZiwgYmEyLCBiYTJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhMSwgYmExX29mZiArIGkpLCBjYW1sX2JhX2dldF8xKGJhMiwgYmEyX29mZiArIGkpKTtcbiAgICBpZiAoYyAhPSAwKSByZXR1cm4gY1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xLCBjYW1sX2ludF9jb21wYXJlLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nKGJhLCBiYV9vZmYsIHN0ciwgc3RyX29mZiwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGNhbWxfaW50X2NvbXBhcmUoY2FtbF9iYV9nZXRfMShiYSwgYmFfb2ZmICsgaSksIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQoc3RyLCBzdHJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNoclxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuZnVuY3Rpb24gYmlnc3RyaW5nYWZfbWVtY2hyKGJhLCBiYV9vZmYsIGNociwgbGVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoY2FtbF9iYV9nZXRfMShiYSwgYmFfb2ZmICsgaSkgPT0gY2hyKSB7XG4gICAgICByZXR1cm4gKGJhX29mZiArIGkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vLy8vLy8vLyBCSU5fUFJPVFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoYmlnc3RyaW5nLCBpKXtcbiAgaWYgKGkgPj4+IDAgPj0gYmlnc3RyaW5nLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MpOyAvLyBmaXJzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3BvcytsZW4tMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3Bvcyk7ICAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICB2YXIgdmlldyA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkobGVuKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KHZpZXcuYnVmZmVyKTtcbiAgYnVmZmVyLnNldChzcmMuZGF0YS5zdWJhcnJheShzcmNfcG9zLCBzcmNfcG9zICsgKGxlbiAqIDgpKSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwIFxuICAgIGRzdFtkc3RfcG9zK2krMV0gPSB2aWV3W2ldO1xuICB9XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViKHNyY19wb3Msc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMCBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zKTsgLy8gZmlyc3QgcG9zIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MgKyBsZW4gLSAxKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zKTsgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwXG4gIHNyY19wb3MgPSBzcmNfcG9zICsgMVxuICB2YXIgZmxvYXQ2NCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkoc3JjLnNsaWNlKHNyY19wb3Msc3JjX3BvcyArIGxlbikpO1xuICB2YXIgZmxvYXQ2NF91aW50OCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KGZsb2F0NjQuYnVmZmVyKTtcbiAgdmFyIHZpZXcgPSBkc3QuZGF0YS5zdWJhcnJheShkc3RfcG9zLCBkc3RfcG9zICsgKGxlbiAqIDgpKTtcbiAgdmlldy5zZXQoZmxvYXQ2NF91aW50OCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSwgYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgLy8gW2Jpbl9wcm90X2JsaXRfYnVmX3N0dWJdIGlzIHVzZWQgd2l0aCBtaXhlZCBiaWdhcnJheSBraW5kcy5cbiAgLy8gQ29udmVydGVyIGV2ZXJ5dGhpbmcgdG8gYmlnYXJyYXkgb2YgY2hhciBiZWZvcmUgdGhlIGJsaXQuXG4gIGlmKHNyYy5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgc3JjID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KHNyYy5kYXRhKTtcbiAgaWYoZHN0LmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBkc3QgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoZHN0LmRhdGEpO1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvL1Byb3ZpZGVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGJsYWtlMmIgPSAoZnVuY3Rpb24gKCkge1xuLy8gQmxha2UyQiBpbiBwdXJlIEphdmFzY3JpcHRcbi8vIEFkYXB0ZWQgZnJvbSB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGluIFJGQzc2OTNcbi8vIFBvcnRlZCB0byBKYXZhc2NyaXB0IGJ5IERDIC0gaHR0cHM6Ly9naXRodWIuY29tL2RjcG9zY2hcblxuLy8gNjQtYml0IHVuc2lnbmVkIGFkZGl0aW9uXG4vLyBTZXRzIHZbYSxhKzFdICs9IHZbYixiKzFdXG4vLyB2IHNob3VsZCBiZSBhIFVpbnQzMkFycmF5XG5mdW5jdGlvbiBBREQ2NEFBICh2LCBhLCBiKSB7XG4gIGNvbnN0IG8wID0gdlthXSArIHZbYl1cbiAgbGV0IG8xID0gdlthICsgMV0gKyB2W2IgKyAxXVxuICBpZiAobzAgPj0gMHgxMDAwMDAwMDApIHtcbiAgICBvMSsrXG4gIH1cbiAgdlthXSA9IG8wXG4gIHZbYSArIDFdID0gbzFcbn1cblxuLy8gNjQtYml0IHVuc2lnbmVkIGFkZGl0aW9uXG4vLyBTZXRzIHZbYSxhKzFdICs9IGJcbi8vIGIwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiBiLCBiMSByZXByZXNlbnRzIHRoZSBoaWdoIDMyIGJpdHNcbmZ1bmN0aW9uIEFERDY0QUMgKHYsIGEsIGIwLCBiMSkge1xuICBsZXQgbzAgPSB2W2FdICsgYjBcbiAgaWYgKGIwIDwgMCkge1xuICAgIG8wICs9IDB4MTAwMDAwMDAwXG4gIH1cbiAgbGV0IG8xID0gdlthICsgMV0gKyBiMVxuICBpZiAobzAgPj0gMHgxMDAwMDAwMDApIHtcbiAgICBvMSsrXG4gIH1cbiAgdlthXSA9IG8wXG4gIHZbYSArIDFdID0gbzFcbn1cblxuLy8gTGl0dGxlLWVuZGlhbiBieXRlIGFjY2Vzc1xuZnVuY3Rpb24gQjJCX0dFVDMyIChhcnIsIGkpIHtcbiAgcmV0dXJuIGFycltpXSBeIChhcnJbaSArIDFdIDw8IDgpIF4gKGFycltpICsgMl0gPDwgMTYpIF4gKGFycltpICsgM10gPDwgMjQpXG59XG5cbi8vIEcgTWl4aW5nIGZ1bmN0aW9uXG4vLyBUaGUgUk9UUnMgYXJlIGlubGluZWQgZm9yIHNwZWVkXG5mdW5jdGlvbiBCMkJfRyAoYSwgYiwgYywgZCwgaXgsIGl5KSB7XG4gIGNvbnN0IHgwID0gbVtpeF1cbiAgY29uc3QgeDEgPSBtW2l4ICsgMV1cbiAgY29uc3QgeTAgPSBtW2l5XVxuICBjb25zdCB5MSA9IG1baXkgKyAxXVxuXG4gIEFERDY0QUEodiwgYSwgYikgLy8gdlthLGErMV0gKz0gdltiLGIrMV0gLi4uIGluIEpTIHdlIG11c3Qgc3RvcmUgYSB1aW50NjQgYXMgdHdvIHVpbnQzMnNcbiAgQURENjRBQyh2LCBhLCB4MCwgeDEpIC8vIHZbYSwgYSsxXSArPSB4IC4uLiB4MCBpcyB0aGUgbG93IDMyIGJpdHMgb2YgeCwgeDEgaXMgdGhlIGhpZ2ggMzIgYml0c1xuXG4gIC8vIHZbZCxkKzFdID0gKHZbZCxkKzFdIHhvciB2W2EsYSsxXSkgcm90YXRlZCB0byB0aGUgcmlnaHQgYnkgMzIgYml0c1xuICBsZXQgeG9yMCA9IHZbZF0gXiB2W2FdXG4gIGxldCB4b3IxID0gdltkICsgMV0gXiB2W2EgKyAxXVxuICB2W2RdID0geG9yMVxuICB2W2QgKyAxXSA9IHhvcjBcblxuICBBREQ2NEFBKHYsIGMsIGQpXG5cbiAgLy8gdltiLGIrMV0gPSAodltiLGIrMV0geG9yIHZbYyxjKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDI0IGJpdHNcbiAgeG9yMCA9IHZbYl0gXiB2W2NdXG4gIHhvcjEgPSB2W2IgKyAxXSBeIHZbYyArIDFdXG4gIHZbYl0gPSAoeG9yMCA+Pj4gMjQpIF4gKHhvcjEgPDwgOClcbiAgdltiICsgMV0gPSAoeG9yMSA+Pj4gMjQpIF4gKHhvcjAgPDwgOClcblxuICBBREQ2NEFBKHYsIGEsIGIpXG4gIEFERDY0QUModiwgYSwgeTAsIHkxKVxuXG4gIC8vIHZbZCxkKzFdID0gKHZbZCxkKzFdIHhvciB2W2EsYSsxXSkgcm90YXRlZCByaWdodCBieSAxNiBiaXRzXG4gIHhvcjAgPSB2W2RdIF4gdlthXVxuICB4b3IxID0gdltkICsgMV0gXiB2W2EgKyAxXVxuICB2W2RdID0gKHhvcjAgPj4+IDE2KSBeICh4b3IxIDw8IDE2KVxuICB2W2QgKyAxXSA9ICh4b3IxID4+PiAxNikgXiAoeG9yMCA8PCAxNilcblxuICBBREQ2NEFBKHYsIGMsIGQpXG5cbiAgLy8gdltiLGIrMV0gPSAodltiLGIrMV0geG9yIHZbYyxjKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDYzIGJpdHNcbiAgeG9yMCA9IHZbYl0gXiB2W2NdXG4gIHhvcjEgPSB2W2IgKyAxXSBeIHZbYyArIDFdXG4gIHZbYl0gPSAoeG9yMSA+Pj4gMzEpIF4gKHhvcjAgPDwgMSlcbiAgdltiICsgMV0gPSAoeG9yMCA+Pj4gMzEpIF4gKHhvcjEgPDwgMSlcbn1cblxuLy8gSW5pdGlhbGl6YXRpb24gVmVjdG9yXG5jb25zdCBCTEFLRTJCX0lWMzIgPSBuZXcgVWludDMyQXJyYXkoW1xuICAweGYzYmNjOTA4LCAweDZhMDllNjY3LCAweDg0Y2FhNzNiLCAweGJiNjdhZTg1LCAweGZlOTRmODJiLCAweDNjNmVmMzcyLFxuICAweDVmMWQzNmYxLCAweGE1NGZmNTNhLCAweGFkZTY4MmQxLCAweDUxMGU1MjdmLCAweDJiM2U2YzFmLCAweDliMDU2ODhjLFxuICAweGZiNDFiZDZiLCAweDFmODNkOWFiLCAweDEzN2UyMTc5LCAweDViZTBjZDE5XG5dKVxuXG5jb25zdCBTSUdNQTggPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE0LCAxMCwgNCwgOCwgOSwgMTUsIDEzLFxuICA2LCAxLCAxMiwgMCwgMiwgMTEsIDcsIDUsIDMsIDExLCA4LCAxMiwgMCwgNSwgMiwgMTUsIDEzLCAxMCwgMTQsIDMsIDYsIDcsIDEsXG4gIDksIDQsIDcsIDksIDMsIDEsIDEzLCAxMiwgMTEsIDE0LCAyLCA2LCA1LCAxMCwgNCwgMCwgMTUsIDgsIDksIDAsIDUsIDcsIDIsIDQsXG4gIDEwLCAxNSwgMTQsIDEsIDExLCAxMiwgNiwgOCwgMywgMTMsIDIsIDEyLCA2LCAxMCwgMCwgMTEsIDgsIDMsIDQsIDEzLCA3LCA1LFxuICAxNSwgMTQsIDEsIDksIDEyLCA1LCAxLCAxNSwgMTQsIDEzLCA0LCAxMCwgMCwgNywgNiwgMywgOSwgMiwgOCwgMTEsIDEzLCAxMSwgNyxcbiAgMTQsIDEyLCAxLCAzLCA5LCA1LCAwLCAxNSwgNCwgOCwgNiwgMiwgMTAsIDYsIDE1LCAxNCwgOSwgMTEsIDMsIDAsIDgsIDEyLCAyLFxuICAxMywgNywgMSwgNCwgMTAsIDUsIDEwLCAyLCA4LCA0LCA3LCA2LCAxLCA1LCAxNSwgMTEsIDksIDE0LCAzLCAxMiwgMTMsIDAsIDAsXG4gIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE0LCAxMCwgNCwgOCwgOSwgMTUsIDEzLCA2LFxuICAxLCAxMiwgMCwgMiwgMTEsIDcsIDUsIDNcbl1cblxuLy8gVGhlc2UgYXJlIG9mZnNldHMgaW50byBhIHVpbnQ2NCBidWZmZXIuXG4vLyBNdWx0aXBseSB0aGVtIGFsbCBieSAyIHRvIG1ha2UgdGhlbSBvZmZzZXRzIGludG8gYSB1aW50MzIgYnVmZmVyLFxuLy8gYmVjYXVzZSB0aGlzIGlzIEphdmFzY3JpcHQgYW5kIHdlIGRvbid0IGhhdmUgdWludDY0c1xuY29uc3QgU0lHTUE4MiA9IG5ldyBVaW50OEFycmF5KFxuICBTSUdNQTgubWFwKGZ1bmN0aW9uICh4KSB7XG4gICAgcmV0dXJuIHggKiAyXG4gIH0pXG4pXG5cbi8vIENvbXByZXNzaW9uIGZ1bmN0aW9uLiAnbGFzdCcgZmxhZyBpbmRpY2F0ZXMgbGFzdCBibG9jay5cbi8vIE5vdGUgd2UncmUgcmVwcmVzZW50aW5nIDE2IHVpbnQ2NHMgYXMgMzIgdWludDMyc1xuY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheSgzMilcbmNvbnN0IG0gPSBuZXcgVWludDMyQXJyYXkoMzIpXG5mdW5jdGlvbiBibGFrZTJiQ29tcHJlc3MgKGN0eCwgbGFzdCkge1xuICBsZXQgaSA9IDBcblxuICAvLyBpbml0IHdvcmsgdmFyaWFibGVzXG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgdltpXSA9IGN0eC5oW2ldXG4gICAgdltpICsgMTZdID0gQkxBS0UyQl9JVjMyW2ldXG4gIH1cblxuICAvLyBsb3cgNjQgYml0cyBvZiBvZmZzZXRcbiAgdlsyNF0gPSB2WzI0XSBeIGN0eC50XG4gIHZbMjVdID0gdlsyNV0gXiAoY3R4LnQgLyAweDEwMDAwMDAwMClcbiAgLy8gaGlnaCA2NCBiaXRzIG5vdCBzdXBwb3J0ZWQsIG9mZnNldCBtYXkgbm90IGJlIGhpZ2hlciB0aGFuIDIqKjUzLTFcblxuICAvLyBsYXN0IGJsb2NrIGZsYWcgc2V0ID9cbiAgaWYgKGxhc3QpIHtcbiAgICB2WzI4XSA9IH52WzI4XVxuICAgIHZbMjldID0gfnZbMjldXG4gIH1cblxuICAvLyBnZXQgbGl0dGxlLWVuZGlhbiB3b3Jkc1xuICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgIG1baV0gPSBCMkJfR0VUMzIoY3R4LmIsIDQgKiBpKVxuICB9XG5cbiAgLy8gdHdlbHZlIHJvdW5kcyBvZiBtaXhpbmdcbiAgLy8gdW5jb21tZW50IHRoZSBEZWJ1Z1ByaW50IGNhbGxzIHRvIGxvZyB0aGUgY29tcHV0YXRpb25cbiAgLy8gYW5kIG1hdGNoIHRoZSBSRkMgc2FtcGxlIGRvY3VtZW50YXRpb25cbiAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICBCMkJfRygwLCA4LCAxNiwgMjQsIFNJR01BODJbaSAqIDE2ICsgMF0sIFNJR01BODJbaSAqIDE2ICsgMV0pXG4gICAgQjJCX0coMiwgMTAsIDE4LCAyNiwgU0lHTUE4MltpICogMTYgKyAyXSwgU0lHTUE4MltpICogMTYgKyAzXSlcbiAgICBCMkJfRyg0LCAxMiwgMjAsIDI4LCBTSUdNQTgyW2kgKiAxNiArIDRdLCBTSUdNQTgyW2kgKiAxNiArIDVdKVxuICAgIEIyQl9HKDYsIDE0LCAyMiwgMzAsIFNJR01BODJbaSAqIDE2ICsgNl0sIFNJR01BODJbaSAqIDE2ICsgN10pXG4gICAgQjJCX0coMCwgMTAsIDIwLCAzMCwgU0lHTUE4MltpICogMTYgKyA4XSwgU0lHTUE4MltpICogMTYgKyA5XSlcbiAgICBCMkJfRygyLCAxMiwgMjIsIDI0LCBTSUdNQTgyW2kgKiAxNiArIDEwXSwgU0lHTUE4MltpICogMTYgKyAxMV0pXG4gICAgQjJCX0coNCwgMTQsIDE2LCAyNiwgU0lHTUE4MltpICogMTYgKyAxMl0sIFNJR01BODJbaSAqIDE2ICsgMTNdKVxuICAgIEIyQl9HKDYsIDgsIDE4LCAyOCwgU0lHTUE4MltpICogMTYgKyAxNF0sIFNJR01BODJbaSAqIDE2ICsgMTVdKVxuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICBjdHguaFtpXSA9IGN0eC5oW2ldIF4gdltpXSBeIHZbaSArIDE2XVxuICB9XG59XG5cbi8vIHJldXNhYmxlIHBhcmFtZXRlckJsb2NrXG5jb25zdCBwYXJhbWV0ZXJCbG9jayA9IG5ldyBVaW50OEFycmF5KFtcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gIDA6IG91dGxlbiwga2V5bGVuLCBmYW5vdXQsIGRlcHRoXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vICA0OiBsZWFmIGxlbmd0aCwgc2VxdWVudGlhbCBtb2RlXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vICA4OiBub2RlIG9mZnNldFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAxMjogbm9kZSBvZmZzZXRcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMTY6IG5vZGUgZGVwdGgsIGlubmVyIGxlbmd0aCwgcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDIwOiByZnVcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gMjQ6IHJmdVxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyAyODogcmZ1XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDMyOiBzYWx0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDM2OiBzYWx0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDQwOiBzYWx0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDQ0OiBzYWx0XG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAsIC8vIDQ4OiBwZXJzb25hbFxuICAwLFxuICAwLFxuICAwLFxuICAwLCAvLyA1MjogcGVyc29uYWxcbiAgMCxcbiAgMCxcbiAgMCxcbiAgMCwgLy8gNTY6IHBlcnNvbmFsXG4gIDAsXG4gIDAsXG4gIDAsXG4gIDAgLy8gNjA6IHBlcnNvbmFsXG5dKVxuXG4vLyBDcmVhdGVzIGEgQkxBS0UyYiBoYXNoaW5nIGNvbnRleHRcbi8vIFJlcXVpcmVzIGFuIG91dHB1dCBsZW5ndGggYmV0d2VlbiAxIGFuZCA2NCBieXRlc1xuLy8gVGFrZXMgYW4gb3B0aW9uYWwgVWludDhBcnJheSBrZXlcbmZ1bmN0aW9uIGJsYWtlMmJJbml0IChvdXRsZW4sIGtleSkge1xuICBpZiAob3V0bGVuID09PSAwIHx8IG91dGxlbiA+IDY0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIG91dHB1dCBsZW5ndGgsIGV4cGVjdGVkIDAgPCBsZW5ndGggPD0gNjQnKVxuICB9XG4gIGlmIChrZXkubGVuZ3RoID4gNjQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwga2V5LCBleHBlY3RlZCBVaW50OEFycmF5IHdpdGggMCA8IGxlbmd0aCA8PSA2NCcpXG4gIH1cblxuICAvLyBzdGF0ZSwgJ3BhcmFtIGJsb2NrJ1xuICBjb25zdCBjdHggPSB7XG4gICAgYjogbmV3IFVpbnQ4QXJyYXkoMTI4KSxcbiAgICBoOiBuZXcgVWludDMyQXJyYXkoMTYpLFxuICAgIHQ6IDAsIC8vIGlucHV0IGNvdW50XG4gICAgYzogMCwgLy8gcG9pbnRlciB3aXRoaW4gYnVmZmVyXG4gICAgb3V0bGVuOiBvdXRsZW4gLy8gb3V0cHV0IGxlbmd0aCBpbiBieXRlc1xuICB9XG5cbiAgLy8gaW5pdGlhbGl6ZSBwYXJhbWV0ZXJCbG9jayBiZWZvcmUgdXNhZ2VcbiAgcGFyYW1ldGVyQmxvY2suZmlsbCgwKVxuICBwYXJhbWV0ZXJCbG9ja1swXSA9IG91dGxlblxuICBwYXJhbWV0ZXJCbG9ja1sxXSA9IGtleS5sZW5ndGhcbiAgcGFyYW1ldGVyQmxvY2tbMl0gPSAxIC8vIGZhbm91dFxuICBwYXJhbWV0ZXJCbG9ja1szXSA9IDEgLy8gZGVwdGhcblxuICAvLyBpbml0aWFsaXplIGhhc2ggc3RhdGVcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgY3R4LmhbaV0gPSBCTEFLRTJCX0lWMzJbaV0gXiBCMkJfR0VUMzIocGFyYW1ldGVyQmxvY2ssIGkgKiA0KVxuICB9XG5cblxuXG4gIGlmKGtleS5sZW5ndGggPiAwKXtcbiAgICBibGFrZTJiVXBkYXRlKGN0eCwga2V5KVxuICAgIC8vIGF0IHRoZSBlbmRcbiAgICBjdHguYyA9IDEyOFxuICB9XG5cbiAgcmV0dXJuIGN0eFxufVxuXG4vLyBVcGRhdGVzIGEgQkxBS0UyYiBzdHJlYW1pbmcgaGFzaFxuLy8gUmVxdWlyZXMgaGFzaCBjb250ZXh0IGFuZCBVaW50OEFycmF5IChieXRlIGFycmF5KVxuZnVuY3Rpb24gYmxha2UyYlVwZGF0ZSAoY3R4LCBpbnB1dCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGN0eC5jID09PSAxMjgpIHtcbiAgICAgIC8vIGJ1ZmZlciBmdWxsID9cbiAgICAgIGN0eC50ICs9IGN0eC5jIC8vIGFkZCBjb3VudGVyc1xuICAgICAgYmxha2UyYkNvbXByZXNzKGN0eCwgZmFsc2UpIC8vIGNvbXByZXNzIChub3QgbGFzdClcbiAgICAgIGN0eC5jID0gMCAvLyBjb3VudGVyIHRvIHplcm9cbiAgICB9XG4gICAgY3R4LmJbY3R4LmMrK10gPSBpbnB1dFtpXVxuICB9XG59XG5cbi8vIENvbXBsZXRlcyBhIEJMQUtFMmIgc3RyZWFtaW5nIGhhc2hcbi8vIFJldHVybnMgYSBVaW50OEFycmF5IGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgZGlnZXN0XG5mdW5jdGlvbiBibGFrZTJiRmluYWwgKGN0eCkge1xuICBjdHgudCArPSBjdHguYyAvLyBtYXJrIGxhc3QgYmxvY2sgb2Zmc2V0XG5cbiAgd2hpbGUgKGN0eC5jIDwgMTI4KSB7XG4gICAgLy8gZmlsbCB1cCB3aXRoIHplcm9zXG4gICAgY3R4LmJbY3R4LmMrK10gPSAwXG4gIH1cbiAgYmxha2UyYkNvbXByZXNzKGN0eCwgdHJ1ZSkgLy8gZmluYWwgYmxvY2sgZmxhZyA9IDFcblxuICAvLyBsaXR0bGUgZW5kaWFuIGNvbnZlcnQgYW5kIHN0b3JlXG4gIGNvbnN0IG91dCA9IG5ldyBVaW50OEFycmF5KGN0eC5vdXRsZW4pXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY3R4Lm91dGxlbjsgaSsrKSB7XG4gICAgb3V0W2ldID0gY3R4LmhbaSA+PiAyXSA+PiAoOCAqIChpICYgMykpXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuICByZXR1cm4ge0luaXQ6Ymxha2UyYkluaXQsIFVwZGF0ZTpibGFrZTJiVXBkYXRlLCBGaW5hbDpibGFrZTJiRmluYWx9XG59KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGJsYWtlMmJcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl9jcmVhdGUoaGFzaGxlbiwga2V5KXtcbiAga2V5ID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoa2V5KTtcbiAgaWYoa2V5Lmxlbmd0aCA+IDY0KSB7XG4gICAga2V5LnN1YmFycmF5KDAsNjQpO1xuICB9XG4gIHJldHVybiBibGFrZTJiLkluaXQoaGFzaGxlbiwga2V5KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGFrZTJfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBibGFrZTJiXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9ibGFrZTJfZmluYWwoY3R4LCBoYXNobGVuKSB7XG4gIHZhciByID0gYmxha2UyYi5GaW5hbChjdHgpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkocik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmxha2UyX3VwZGF0ZVxuLy9SZXF1aXJlczogYmxha2UyYlxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2JsYWtlMl91cGRhdGUoY3R4LCBidWYsIG9mcywgbGVuKXtcbiAgdmFyIGlucHV0ID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoYnVmKTtcbiAgaW5wdXQgPSBpbnB1dC5zdWJhcnJheShvZnMsIG9mcyArIGxlbik7XG4gIGJsYWtlMmIuVXBkYXRlKGN0eCwgaW5wdXQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsYWtlMl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmxha2UyX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ibGFrZTJfdXBkYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2JsYWtlMl9maW5hbFxuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfYmxha2UyX3N0cmluZyhoYXNobGVuLCBrZXksIGJ1Ziwgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfYmxha2UyX2NyZWF0ZSAoaGFzaGxlbiwga2V5KTtcbiAgY2FtbF9ibGFrZTJfdXBkYXRlKGN0eCwgYnVmLCBvZnMsIGxlbik7XG4gIHJldHVybiBjYW1sX2JsYWtlMl9maW5hbChjdHgsIGhhc2hsZW4pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvKlxuVG8gZGVhbCB3aXRoIGVmZmVjdHMsIHRoZSBleGVjdXRpb24gY29udGV4dCBpcyBpbnR1aXRpdmVseSBjb21wb3NlZCBvZlxuYSBzdGFjayBvZiBmaWJlcnMuIEVhY2ggZmliZXIgaGFzIGEgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4ob25lLWFyZ3VtZW50IEphdmFTY3JpcHQgZnVuY3Rpb24pLCBhIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmRcbmEgdHJpcGxlIG9mIGhhbmRsZXJzLCB3aGljaCBhcmUgaW52b2tlZCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzXG4oZWl0aGVyIHdpdGggYSB2YWx1ZSBvciBhbiBleGNlcHRpb24pIG9yIHdoZW4gYW4gZWZmZWN0IGlzIHBlcmZvcm1lZC5cblRoZSBsb3ctbGV2ZWwgY29udGludWF0aW9uIG9mIHRoZSB0b3Btb3N0IGZpYmVyICh3aGljaCBpcyBjdXJyZW50bHlcbmV4ZWN1dGluZykgaXMgcGFzc2VkIGZyb20gZnVuY3Rpb24gdG8gZnVuY3Rpb24gYXMgYW4gYWRkaXRpb25hbFxuYXJndW1lbnQuIEl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgaXMgc3RvcmVkIGluXG5bY2FtbF9leG5fc3RhY2tdLiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlIHB1c2hlZCBpbnRvIHRoaXMgc3RhY2sgd2hlblxuZW50ZXJpbmcgYSBbdHJ5IC4uLiB3aXRoIC4uLl0gYW5kIHBvcHBlZCBvbiBleGl0LiBUaGVuLCBoYW5kbGVycyBhbmRcbnRoZSByZW1haW5pbmcgZmliZXJzIGFyZSBzdG9yZWQgaW4gW2NhbWxfZmliZXJfc3RhY2tdLiBUbyBpbnN0YWxsIGFuXG5lZmZlY3QgaGFuZGxlciwgd2UgcHVzaCBhIG5ldyBmaWJlciBpbnRvIHRoZSBleGVjdXRpb24gY29udGV4dC5cblxuV2UgaGF2ZSBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyB0eXBlIGZvciByZWlmaWVkIGNvbnRpbnVhdGlvbnMgKHR5cGVcbltjb250aW51YXRpb25dIGluIG1vZHVsZSBbRWZmZWN0XSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSk6XG5cbiAgdHlwZSAoJ2EsICdiKSBjb250aW51YXRpb24gPSAoJ2EsICdiKSBzdGFjayByZWZcblxuICBhbmQgKF8sIF8pIHN0YWNrID1cbiAgICAgIENvbnMgOiAoJ2IgLT4gdW5pdCkgKiAgICAgICAgICAgICAoKiBsb3ctbGV2ZWwgY29udGludWF0aW9uICopXG4gICAgICAgICAgICAgKGV4biAtPiB1bml0KSBsaXN0ICogICAgICAgKCogZXhjZXB0aW9uIGhhbmRsZXJzICopXG4gICAgICAgICAgICAgKCdiLCAnYykgaGFuZGxlciAqXG4gICAgICAgICAgICAgKCdhLCAnYikgc3RhY2tcbiAgICAgICAgICAgICAtPiAoJ2EsICdjKSBzdGFja1xuICAgIHwgRW1wdHkgOiAoJ2EsICdhKSBzdGFja1xuXG4gIGFuZCAoJ2EsJ2IpIGhhbmRsZXIgPSAgICgqIEFzIGluIG1vZHVsZSBFZmZlY3QgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyBFZmZlY3QudCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbkNvbnRpbnVhdGlvbnMgYXJlIG9uZS1zaG90LiBBIGNvbnRpbnVhdGlvbiBbcmVmIEVtcHR5XSBoYXMgYWxyZWFkeVxuYmVlbiByZXN1bWVkLlxuXG5BIGNvbnRpbnVhdGlvbiBpcyBiYXNpY2FsbHkgY29tcG9zZWQgb2YgYSBsaXN0IG9mIGZpYmVycywgd2hpY2ggZWFjaFxuaGFzIGl0cyBsb3ctbGV2ZWwgY29udGludWF0aW9uLCBpdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZCBhXG50cmlwbGUgb2YgaGFuZGxlcnMgdG8gZGVhbCB3aXRoIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXMgb3IgYW5cbmVmZmVjdCBpcyBwZXJmb3JtZWQuIFdoZW4gcmVzdW1pbmcgYSBjb250aW51YXRpb24sIHRoZSBpbm5lcm1vc3QgZmliZXJcbmlzIHJlc3VtZWQgZmlyc3QuXG5cblRoZSBoYW5kbGVycyBhcmUgQ1BTLXRyYW5zZm9ybWVkIGZ1bmN0aW9uczogdGhleSBhY3R1YWxseSB0YWtlIGFuXG5hZGRpdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uLlxuKi9cblxuLy9Qcm92aWRlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaXMgYW4gT0NhbWwgbGlzdCBvZiBleGNlcHRpb24gaGFuZGxlcnNcbnZhciBjYW1sX2V4bl9zdGFjayA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVzaF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2V4bl9zdGFjaz1bMCxoYW5kbGVyLGNhbWxfZXhuX3N0YWNrXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX3RyYXAoKSB7XG4gIGlmICghY2FtbF9leG5fc3RhY2spIHJldHVybiBmdW5jdGlvbih4KXt0aHJvdyB4O31cbiAgdmFyIGggPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgY2FtbF9leG5fc3RhY2s9Y2FtbF9leG5fc3RhY2tbMl07XG4gIHJldHVybiBoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aCwgcjp7aywgeCwgZX19IHdoZXJlIGggaXMgYSB0cmlwbGUgb2YgaGFuZGxlcnNcbi8vIChzZWUgZWZmZWN0LmpzKSBhbmQgaywgeCBhbmQgZSBhcmUgdGhlIHNhdmVkIGNvbnRpbnVhdGlvbixcbi8vIGV4Y2VwdGlvbiBzdGFjayBhbmQgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2ZpYmVyX3N0YWNrO1xuXG4vL1Byb3ZpZGVzOmNhbWxfcmVzdW1lX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9yZXN1bWVfc3RhY2soc3RhY2ssIGspIHtcbiAgaWYgKCFzdGFjaykgY2FtbF9yYWlzZV9jb25zdGFudFxuICAgICAgICAgICAgICAgICAoY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCIpKTtcbiAgLy8gVXBkYXRlIHRoZSBleGVjdXRpb24gY29udGV4dCB3aXRoIHRoZSBzdGFjayBvZiBmaWJlcnMgaW4gW3N0YWNrXSBpblxuICAvLyBvcmRlciB0byByZXN1bWUgdGhlIGNvbnRpbnVhdGlvblxuICBkbyB7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpzdGFja1szXSwgcjp7azprLCB4OmNhbWxfZXhuX3N0YWNrLCBlOmNhbWxfZmliZXJfc3RhY2t9fTtcbiAgICBrID0gc3RhY2tbMV07XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzdGFja1syXTtcbiAgICBzdGFjayA9IHN0YWNrWzRdO1xuICB9IHdoaWxlIChzdGFjaylcbiAgcmV0dXJuIGs7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfZmliZXIoKSB7XG4gIC8vIE1vdmUgdG8gdGhlIHBhcmVudCBmaWJlciwgcmV0dXJuaW5nIHRoZSBwYXJlbnQncyBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4gIHZhciByZW0gPSBjYW1sX2ZpYmVyX3N0YWNrLnI7XG4gIGNhbWxfZXhuX3N0YWNrID0gcmVtLng7XG4gIGNhbWxfZmliZXJfc3RhY2sgPSByZW0uZTtcbiAgcmV0dXJuIHJlbS5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BlcmZvcm1fZWZmZWN0XG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVybiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcGVyZm9ybV9lZmZlY3QoZWZmLCBjb250LCBrMCkge1xuICAvLyBBbGxvY2F0ZSBhIGNvbnRpbnVhdGlvbiBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICghY29udCkgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgMF07XG4gIC8vIEdldCBjdXJyZW50IGVmZmVjdCBoYW5kbGVyXG4gIHZhciBoYW5kbGVyID0gY2FtbF9maWJlcl9zdGFjay5oWzNdO1xuICAvLyBDb25zIHRoZSBjdXJyZW50IGZpYmVyIG9udG8gdGhlIGNvbnRpbnVhdGlvbjpcbiAgLy8gICBjb250IDo9IENvbnMgKGssIGV4bl9zdGFjaywgaGFuZGxlcnMsICFjb250KVxuICBjb250WzFdID0gWzAsazAsY2FtbF9leG5fc3RhY2ssY2FtbF9maWJlcl9zdGFjay5oLGNvbnRbMV1dO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9oYW5kbGVyKGVmZixjb250LGsxLGsxKVxuICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oaGFuZGxlcixbZWZmLGNvbnQsazEsazFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICBmdW5jdGlvbiBjYWxsKGksIHgpIHtcbiAgICB2YXIgZj1jYW1sX2ZpYmVyX3N0YWNrLmhbaV07XG4gICAgdmFyIGFyZ3MgPSBbeCwgY2FtbF9wb3BfZmliZXIoKV07XG4gICAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9jYW1sX2NhbGxfZ2VuKGYsYXJncylcbiAgICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKTtcbiAgfVxuICBmdW5jdGlvbiBodmFsKHgpIHtcbiAgICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDEsIHgpO1xuICB9XG4gIGZ1bmN0aW9uIGhleG4oZSkge1xuICAgIC8vIENhbGwgW2h4XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMiwgZSk7XG4gIH1cbiAgcmV0dXJuIFswLCBodmFsLCBbMCwgaGV4biwgMF0sIFswLCBodiwgaHgsIGhmXSwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpIHtcbiAgdmFyIHN0YWNrPWNvbnRbMV07XG4gIGNvbnRbMV09MDtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoY29udCwgaHZhbCwgaGV4biwgaGVmZikge1xuICB2YXIgc3RhY2sgPSBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCk7XG4gIHN0YWNrWzNdID0gWzAsIGh2YWwsIGhleG4sIGhlZmZdO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbmZ1bmN0aW9uIGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX25ld1xuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fbmV3KHVuaXQpe1xuICAgIHJldHVybiB7Y29uZGl0aW9uOjF9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl93YWl0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KHQsbXV0ZXh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsKHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyFJZjogZWZmZWN0c1xuZnVuY3Rpb24ganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfY29tcGFyZV9hbmRfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfY29tcGFyZV9hbmRfc2V0KG9sZCxuKSB7XG4gIGlmKGNhbWxfZG9tYWluX2RscyAhPT0gb2xkKSByZXR1cm4gMFxuICBjYW1sX2RvbWFpbl9kbHMgPSBuO1xuICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzX2dldFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5fZGxzXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9kbHNfZ2V0KHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfZG9tYWluX2Rscztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19sb2FkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19sb2FkKHJlZil7XG4gIHJldHVybiByZWZbMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2Nhc1xuZnVuY3Rpb24gY2FtbF9hdG9taWNfY2FzKHJlZixvLG4pIHtcbiAgaWYocmVmWzFdID09PSBvKXtcbiAgICByZWZbMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19mZXRjaF9hZGRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2ZldGNoX2FkZChyZWYsIGkpIHtcbiAgdmFyIG9sZCA9IHJlZlsxXTtcbiAgcmVmWzFdICs9IGk7XG4gIHJldHVybiBvbGQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2V4Y2hhbmdlXG5mdW5jdGlvbiBjYW1sX2F0b21pY19leGNoYW5nZShyZWYsIHYpIHtcbiAgdmFyIHIgPSByZWZbMV07XG4gIHJlZlsxXSA9IHY7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQoYSkge1xuICByZXR1cm4gWzAsIGFdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlblxuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8gPSBbMF1cbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbih1bml0KSB7XG4gIHJldHVybiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fc2V0X25hbWVcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX3NldF9uYW1lKF9uYW1lKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuZnVuY3Rpb24gY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQodW5pdCkgeyByZXR1cm4gMSB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5faWRcbnZhciBjYW1sX2RvbWFpbl9pZCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPj0gNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsdGVybV9zeW5jKXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKHRlcm1fc3luY1syXSk7XG4gICAgLy9UT0RPOiBmaXggZXhuIGNhc2VcbiAgICB0ZXJtX3N5bmNbMV0gPSBbMCwgWzAsIHJlc11dO1xuICAgIHJldHVybiBpZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA8IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLG11dGV4KXtcbiAgICB2YXIgaWQgPSBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4Kys7XG4gICAgdmFyIG9sZCA9IGNhbWxfZG9tYWluX2lkO1xuICAgIGNhbWxfZG9tYWluX2lkID0gaWQ7XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixbMF0pO1xuICAgIGNhbWxfZG9tYWluX2lkID0gb2xkO1xuICAgIGNhbWxfbWxfbXV0ZXhfdW5sb2NrKG11dGV4KTtcbiAgICByZXR1cm4gaWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9pZCh1bml0KXtcbiAgICByZXR1cm4gY2FtbF9kb21haW5faWQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgodW5pdCl7XG4gICAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIElvXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Zkc1xudmFyIGNhbWxfc3lzX2ZkcyA9IG5ldyBBcnJheSgzKTtcblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2xvc2Vcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuZnVuY3Rpb24gY2FtbF9zeXNfY2xvc2UoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlKSBmaWxlLmNsb3NlKCk7XG4gIGRlbGV0ZSBjYW1sX3N5c19mZHNbZmRdO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogTWxGYWtlRmRfb3V0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlLGlkeCkge1xuICBpZihpZHggPT0gdW5kZWZpbmVkKXtcbiAgICBpZHggPSBjYW1sX3N5c19mZHMubGVuZ3RoO1xuICB9XG4gIGNhbWxfc3lzX2Zkc1tpZHhdID0gZmlsZTtcbiAgcmV0dXJuIGlkeCB8IDA7XG59XG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuIChuYW1lLCBmbGFncywgX3Blcm1zKSB7XG4gIHZhciBmID0ge307XG4gIHdoaWxlKGZsYWdzKXtcbiAgICBzd2l0Y2goZmxhZ3NbMV0pe1xuICAgIGNhc2UgMDogZi5yZG9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMTogZi53cm9ubHkgPSAxO2JyZWFrO1xuICAgIGNhc2UgMjogZi5hcHBlbmQgPSAxO2JyZWFrO1xuICAgIGNhc2UgMzogZi5jcmVhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNDogZi50cnVuY2F0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA1OiBmLmV4Y2wgPSAxOyBicmVhaztcbiAgICBjYXNlIDY6IGYuYmluYXJ5ID0gMTticmVhaztcbiAgICBjYXNlIDc6IGYudGV4dCA9IDE7YnJlYWs7XG4gICAgY2FzZSA4OiBmLm5vbmJsb2NrID0gMTticmVhaztcbiAgICB9XG4gICAgZmxhZ3M9ZmxhZ3NbMl07XG4gIH1cbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LGYpO1xuICByZXR1cm4gY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCAoZmlsZSwgdW5kZWZpbmVkKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGZpbGUoZmQsIGZsYWdzKSB7XG4gICAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgICAgcmV0dXJuIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIG5ldyBNbEZha2VGZF9vdXQoZmQsIGZsYWdzKVxuICB9XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgwLHtyZG9ubHk6MSxhbHRuYW1lOlwiL2Rldi9zdGRpblwiLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMCk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgxLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMSk7XG4gIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSgyLHtidWZmZXJlZDoyLHdyb25seToxLGlzQ2hhcmFjdGVyRGV2aWNlOnRydWV9KSwgMik7XG59KSgpXG5cblxuLy8gb2NhbWwgQ2hhbm5lbHNcblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX25hbWUoY2hhbmlkLCBuYW1lKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBjaGFuLm5hbWUgPSBuYW1lO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsc1xudmFyIGNhbWxfbWxfY2hhbm5lbHMgPSBuZXcgQXJyYXkoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3JlZGlyZWN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfcmVkaXJlY3QgKGNhcHR1cmVkLCBpbnRvKXtcbiAgdmFyIHRvX3Jlc3RvcmUgPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNhcHR1cmVkKTtcbiAgdmFyIG5ld18gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGludG8pO1xuICBjYW1sX21sX2NoYW5uZWxzW2NhcHR1cmVkXSA9IG5ld187IC8vIFhYWFxuICByZXR1cm4gdG9fcmVzdG9yZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3Jlc3RvcmVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9yZXN0b3JlIChjYXB0dXJlZCwgdG9fcmVzdG9yZSl7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2FwdHVyZWRdID0gdG9fcmVzdG9yZTsgLy8gWFhYXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfZ2V0KGlkKSB7XG4gIHJldHVybiBjYW1sX21sX2NoYW5uZWxzW2lkXTsgLy8gWFhYXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgYnVmZmVyZWQgPSAoZmlsZS5mbGFncy5idWZmZXJlZCAhPT0gdW5kZWZpbmVkKSA/IGZpbGUuZmxhZ3MuYnVmZmVyZWQgOiAxO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6dHJ1ZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgYnVmZmVyZWQ6YnVmZmVyZWRcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luIChmZCkgIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyX21heDowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dChmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL0FsaWFzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbmZ1bmN0aW9uIGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4uZmlsZS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSA9IG1vZGVcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnlcbn1cblxuLy9JbnB1dCBmcm9tIGluX2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9jbG9zZV9jaGFubmVsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19jbG9zZVxuZnVuY3Rpb24gY2FtbF9tbF9jbG9zZV9jaGFubmVsIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmKGNoYW4ub3BlbmVkKSB7XG4gICAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgICBjYW1sX3N5c19jbG9zZShjaGFuLmZkKTtcbiAgICBjaGFuLmZkID0gLTE7XG4gICAgY2hhbi5idWZmZXIgPSBuZXcgVWludDhBcnJheSgwKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemUoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICByZXR1cm4gY2hhbi5maWxlLmxlbmd0aCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCxjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZV82NChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNoYW4uZmlsZS5sZW5ndGggKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXQoY2hhbmlkLGYpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGNoYW4ub3V0cHV0ID0gKGZ1bmN0aW9uIChzKSB7ZihzKX0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsKGNoYW5pZCxmKSB7XG4gIGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKS5yZWZpbGwgPSBmO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWZpbGxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVmaWxsIChjaGFuKSB7XG4gIGlmKGNoYW4ucmVmaWxsICE9IG51bGwpe1xuICAgIHZhciBzdHIgPSBjaGFuLnJlZmlsbCgpO1xuICAgIHZhciBzdHJfYSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cik7XG4gICAgaWYgKHN0cl9hLmxlbmd0aCA9PSAwKSB7XG4gICAgICBjaGFuLnJlZmlsbCA9IG51bGxcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlci5sZW5ndGggPCBjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpe1xuICAgICAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCk7XG4gICAgICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICAgICAgY2hhbi5idWZmZXIgPSBiO1xuICAgICAgfVxuICAgICAgY2hhbi5idWZmZXIuc2V0KHN0cl9hLGNoYW4uYnVmZmVyX21heCk7XG4gICAgICBjaGFuLm9mZnNldCArPSBzdHJfYS5sZW5ndGg7XG4gICAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gc3RyX2EubGVuZ3RoO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgbnJlYWQgPSBjaGFuLmZpbGUucmVhZChjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIGNoYW4uYnVmZmVyX21heCwgY2hhbi5idWZmZXIubGVuZ3RoIC0gY2hhbi5idWZmZXJfbWF4KTtcbiAgICBjaGFuLm9mZnNldCArPSBucmVhZDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggKz0gbnJlYWQ7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dCAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmlnYXJyYXkgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9ibG9jayAoY2hhbmlkLCBiYSwgaSwgbCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIG4gPSBsO1xuICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBpZihsIDw9IGF2YWlsKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGw7XG4gIH1cbiAgZWxzZSBpZihhdmFpbCA+IDApIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgYXZhaWwpLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGF2YWlsO1xuICAgIG4gPSBhdmFpbDtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgaWYobiA+IGF2YWlsKSBuID0gYXZhaWw7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIG4pLCBpKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IG47XG4gIH1cbiAgcmV0dXJuIG4gfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JlZmlsbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIHZhciBoZWFkZXIgPSBuZXcgVWludDhBcnJheShjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBmdW5jdGlvbiBibG9jayhidWZmZXIsIG9mZnNldCwgbikge1xuICAgIHZhciByID0gMDtcbiAgICB3aGlsZShyIDwgbil7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgICAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICAgICAgYnJlYWs7XG4gICAgICBidWZmZXJbb2Zmc2V0K3JdID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHZhciByID0gYmxvY2soaGVhZGVyLCAwLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBpZihyID09IDApXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICBlbHNlIGlmIChyIDwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdFwiKTtcbiAgdmFyIGxlbiA9IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoaGVhZGVyKSwgMCk7XG4gIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4gKyBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpO1xuICBidWYuc2V0KGhlYWRlciwwKTtcbiAgdmFyIHIgPSBibG9jayhidWYsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSwgbGVuKVxuICBpZihyIDwgbGVuKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdHJ1bmNhdGVkIG9iamVjdCBcIiArIHIgKyBcIiAgXCIgKyBsZW4pO1xuICB2YXIgb2Zmc2V0ID0gWzBdO1xuICB2YXIgcmVzID0gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgb2Zmc2V0KTtcbiAgY2hhbi5vZmZzZXQgPSBjaGFuLm9mZnNldCArIG9mZnNldFswXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXBcbi8vUmVxdWlyZXM6IGNhbWxfaW5wdXRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwKGMpIHtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWUoYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfY2hhciAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heCl7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgfVxuICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICB2YXIgcmVzID0gY2hhbi5idWZmZXJbY2hhbi5idWZmZXJfY3Vycl07XG4gIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfY2hhciwgY2FtbF9tbF9jaGFubmVsX2dldFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9pbnQgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgdmFyIHJlcyA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCA0OyBpKyspe1xuICAgIHJlcyA9IChyZXMgPDwgOCkgKyBjYW1sX21sX2lucHV0X2NoYXIoY2hhbmlkKSB8IDA7XG4gIH1cbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcykge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgaWYgKGNoYW4ucmVmaWxsICE9IG51bGwpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiSWxsZWdhbCBzZWVrXCIpO1xuICBpZihwb3MgPj0gY2hhbi5vZmZzZXQgLSBjaGFuLmJ1ZmZlcl9tYXhcbiAgICAgJiYgcG9zIDw9IGNoYW4ub2Zmc2V0XG4gICAgICYmIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkpIHtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gY2hhbi5idWZmZXJfbWF4IC0gKGNoYW4ub2Zmc2V0IC0gcG9zKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLm9mZnNldCA9IHBvcztcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luKGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCxwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19pblxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX2luXzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfcG9zX2luKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0IC0gKGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbihjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX2luKGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW5fNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0KGNhbWxfcG9zX2luKGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X3NjYW5fbGluZVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9yZWZpbGxcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpO1xuICB2YXIgcCA9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGRvIHtcbiAgICBpZihwID49IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+IDApIHtcbiAgICAgICAgY2hhbi5idWZmZXIuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIpLDApO1xuICAgICAgICBwIC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgIH1cbiAgICAgIGlmKGNoYW4uYnVmZmVyX21heCA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgICB2YXIgcHJldl9tYXggPSBjaGFuLmJ1ZmZlcl9tYXg7XG4gICAgICBjYW1sX3JlZmlsbCAoY2hhbik7XG4gICAgICBpZihwcmV2X21heCA9PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgICAgcmV0dXJuIC0oY2hhbi5idWZmZXJfbWF4KSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChjaGFuLmJ1ZmZlcltwKytdICE9IDEwKTtcbiAgcmV0dXJuIChwIC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2ZsdXNoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsX2dldFxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2ZsdXNoIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IGZsdXNoIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGlmKCFjaGFuLmJ1ZmZlciB8fCBjaGFuLmJ1ZmZlcl9jdXJyID09IDApIHJldHVybiAwO1xuICBpZihjaGFuLm91dHB1dCkge1xuICAgIGNoYW4ub3V0cHV0KGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3VycikpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uZmlsZS53cml0ZShjaGFuLm9mZnNldCwgY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICB9XG4gIGNoYW4ub2Zmc2V0ICs9IGNoYW4uYnVmZmVyX2N1cnI7XG4gIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICByZXR1cm4gMDtcbn1cblxuLy9vdXRwdXQgdG8gb3V0X2NoYW5uZWxcblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfdGFcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxfZ2V0XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCk7XG4gIGlmKCEgY2hhbi5vcGVuZWQpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiQ2Fubm90IG91dHB1dCB0byBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICBpZihjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCA+IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGgpO1xuICAgIGIuc2V0KGNoYW4uYnVmZmVyKTtcbiAgICBjaGFuLmJ1ZmZlciA9IGJcbiAgfVxuICBzd2l0Y2goY2hhbi5idWZmZXJlZCl7XG4gIGNhc2UgMDogLy8gVW5idWZmZXJlZFxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrXG4gIGNhc2UgMTogLy8gQnVmZmVyZWQgKHRoZSBkZWZhdWx0KVxuICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMjogLy8gQnVmZmVyZWQgKG9ubHkgZm9yIHN0ZG91dCBhbmQgc3RkZXJyKVxuICAgIHZhciBpZCA9IGJ1ZmZlci5sYXN0SW5kZXhPZigxMClcbiAgICBpZihpZCA8IDApIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIsIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gaWQgKyAxO1xuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGggLSBpZCAtIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheSwgY2FtbF9tbF9vdXRwdXRfdGFcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgYnVmZmVyID0gY2FtbF9iYV90b190eXBlZF9hcnJheShidWZmZXIpO1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKTtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dF9ieXRlcywgY2FtbF9ieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbil7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsY2FtbF9ieXRlc19vZl9zdHJpbmcoYnVmZmVyKSxvZmZzZXQsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfY2hhclxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2NoYXIgKGNoYW5pZCxjKSB7XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCwxKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcsIGNhbWxfbWxfb3V0cHV0LGNhbWxfbWxfc3RyaW5nX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWUgKGNoYW5pZCx2LGZsYWdzKSB7XG4gIHZhciBzID0gY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nKHYsIGZsYWdzKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCxjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICByZXR1cm4gMDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxfZ2V0LCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKXtcbiAgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0KGNoYW5pZCxwb3Mpe1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NlZWtfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfb3V0XzY0KGNoYW5pZCxwb3Mpe1xuICB2YXIgcG9zID0gY2FtbF9pbnQ2NF90b19mbG9hdChwb3MpO1xuICByZXR1cm4gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9wb3Nfb3V0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbF9nZXQoY2hhbmlkKTtcbiAgcmV0dXJuIGNoYW4ub2Zmc2V0ICsgY2hhbi5idWZmZXJfY3VyclxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3Nfb3V0KGNoYW5pZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXRfNjQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2Zsb2F0IChjYW1sX3Bvc19vdXQoY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9pbnQgKGNoYW5pZCxpKSB7XG4gIHZhciBhcnIgPSBbKGk+PjI0KSAmIDB4RkYsKGk+PjE2KSAmIDB4RkYsKGk+PjgpICYgMHhGRixpICYgMHhGRiBdO1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbF9nZXRcbmZ1bmN0aW9uIGNhbWxfbWxfaXNfYnVmZmVyZWQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX21sX2NoYW5uZWxfZ2V0KGNoYW5pZCkuYnVmZmVyZWQgPyAxIDogMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsX2dldCwgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9tbF9zZXRfYnVmZmVyZWQoY2hhbmlkLHYpIHtcbiAgY2FtbF9tbF9jaGFubmVsX2dldChjaGFuaWQpLmJ1ZmZlcmVkID0gdjtcbiAgaWYoIXYpIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgcmV0dXJuIDBcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbnZhciBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlclxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUoZXZlbnQsIGV2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlXG4vL1ZlcnNpb246ID49IDUuMlxuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX2V2ZW50c19hcmVfYWN0aXZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yKHRhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IoY3Vyc29yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoY3Vyc29yLCBjYWxsYmFja3MsIG51bSkge1xuICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjBcbi8vVmVyc2lvbjogPCA1LjEuMVxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjFcbi8vVmVyc2lvbjogPCA1LjIuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMlxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3pzdGRfaW5pdGlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xLjFcbmZ1bmN0aW9uIGNhbWxfenN0ZF9pbml0aWFsaXplKHVuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMVxufVxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gV2VhayBBUElcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfa2V5X29mZnNldCA9IDNcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0ID0gMlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9rZXkoeCwgaSwgdikge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZiAodiBpbnN0YW5jZW9mIE9iamVjdCAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdLnJlZ2lzdGVyKSB4WzFdLnJlZ2lzdGVyKHYsIHVuZGVmaW5lZCwgdik7XG4gICAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gbmV3IGdsb2JhbFRoaXMuV2Vha1JlZih2KTtcbiAgfVxuICBlbHNlIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuc2V0XCIpO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbMV0udW5yZWdpc3Rlcikge1xuICAgIHZhciBvbGQgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0uZGVyZWYoKTtcbiAgICBpZihvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvdW50ID0gMFxuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZil7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKClcbiAgICAgICAgICBpZihrZXkgPT09IG9sZCkgY291bnQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYoY291bnQgPT0gMSkgeFsxXS51bnJlZ2lzdGVyKG9sZCk7XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDBcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3dlYWtfY3JlYXRlLCBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jcmVhdGUgKG4pIHtcbiAgdmFyIHggPSBjYW1sX3dlYWtfY3JlYXRlKG4pO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudCxjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfd2Vha19jcmVhdGUgKG4pIHtcbiAgaWYgKG4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5jcmVhdGVcIik7XG4gIHZhciB4ID0gWzI1MSxcImNhbWxfZXBoZV9saXN0X2hlYWRcIl07XG4gIHgubGVuZ3RoID0gY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBuO1xuICByZXR1cm4geDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF93ZWFrX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfc2V0X2tleSwgY2FtbF9lcGhlX3Vuc2V0X2tleVxuZnVuY3Rpb24gY2FtbF93ZWFrX3NldCh4LCBpLCB2KSB7XG4gIGlmKHYgPT0gMCkgY2FtbF9lcGhlX3Vuc2V0X2tleSh4LGkpXG4gIGVsc2UgY2FtbF9lcGhlX3NldF9rZXkoeCxpLHZbMV0pXG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9rZXlcIik7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIHJldHVybiAod2Vhaz09PXVuZGVmaW5lZCk/MDpbMCwgd2Vha107XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZ2V0X2tleSxjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vQWxpYXM6IGNhbWxfd2Vha19nZXRfY29weVxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXlfY29weSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfY29weVwiKTtcbiAgdmFyIHkgPSBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKTtcbiAgaWYgKHkgPT09IDApIHJldHVybiB5O1xuICB2YXIgeiA9IHlbMV07XG4gIGlmICh6IGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHopXTtcbiAgcmV0dXJuIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19rZXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19jaGVja1xuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2tleSh4LCBpKSB7XG4gIHZhciB3ZWFrID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgaWYod2Vhaz09PXVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vQWxpYXM6IGNhbWxfd2Vha19ibGl0XG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9rZXkoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICAvLyBtaW51cyBvbmUgYmVjYXVzZSBjYW1sX2FycmF5X2JsaXQgd29ya3Mgb24gb2NhbWwgYXJyYXlcbiAgY2FtbF9hcnJheV9ibGl0KGExLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkxIC0gMSxcbiAgICAgICAgICAgICAgICAgIGEyLCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkyIC0gMSxcbiAgICAgICAgICAgICAgICAgIGxlbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfYmxpdF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9zZXRfZGF0YSwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2RhdGEoc3JjLCBkc3Qpe1xuICB2YXIgbiA9IHNyY1tjYW1sX2VwaGVfZGF0YV9vZmZzZXRdO1xuICBpZihuID09PSB1bmRlZmluZWQpIGNhbWxfZXBoZV91bnNldF9kYXRhKGRzdCk7XG4gIGVsc2UgY2FtbF9lcGhlX3NldF9kYXRhKGRzdCwgbik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9vYmpfZHVwXG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0pXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX3NldF9kYXRhKHgsIGRhdGEpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKCEgKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KSkge1xuICAgICAgeFsxXSA9IG5ldyBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KGZ1bmN0aW9uICgpIHsgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCkgfSk7XG4gICAgICAvL3JlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnJlZ2lzdGVyKGtleSwgdW5kZWZpbmVkLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IGRhdGE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2RhdGEoeCl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpe1xuICAgICAgLy91bnJlZ2lzdGVyIGFsbCBrZXlzXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgICAgICAga2V5ID0ga2V5LmRlcmVmKCk7XG4gICAgICAgICAgaWYoa2V5KSB4WzFdLnVucmVnaXN0ZXIoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cbiIsIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKHRydWUpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19mdWxsX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX2Z1bGxfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY29tcGFjdGlvblxuZnVuY3Rpb24gY2FtbF9nY19jb21wYWN0aW9uKCl7IHJldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9nY19jb3VudGVyc1xuZnVuY3Rpb24gY2FtbF9nY19jb3VudGVycygpIHsgcmV0dXJuIFsyNTQsMCwwLDBdIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfcXVpY2tfc3RhdFxuLy9WZXJzaW9uOiA+PSA0LjEyXG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG4vL1ZlcnNpb246IDwgNC4xMlxuZnVuY3Rpb24gY2FtbF9nY19xdWlja19zdGF0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG4vL1JlcXVpcmVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2Nfc3RhdCgpIHtcbiAgcmV0dXJuIGNhbWxfZ2NfcXVpY2tfc3RhdCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBGb3JtYXRcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9mb3JtYXQgKGZtdCkge1xuICBmbXQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGZtdCk7XG4gIHZhciBsZW4gPSBmbXQubGVuZ3RoO1xuICBpZiAobGVuID4gMzEpIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9uZ1wiKTtcbiAgdmFyIGYgPVxuICAgICAgeyBqdXN0aWZ5OicrJywgc2lnbnN0eWxlOictJywgZmlsbGVyOicgJywgYWx0ZXJuYXRlOmZhbHNlLFxuICAgICAgICBiYXNlOjAsIHNpZ25lZGNvbnY6ZmFsc2UsIHdpZHRoOjAsIHVwcGVyY2FzZTpmYWxzZSxcbiAgICAgICAgc2lnbjoxLCBwcmVjOi0xLCBjb252OidmJyB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBmbXQuY2hhckF0KGkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIGNhc2UgJy0nOlxuICAgICAgZi5qdXN0aWZ5ID0gJy0nOyBicmVhaztcbiAgICBjYXNlICcrJzogY2FzZSAnICc6XG4gICAgICBmLnNpZ25zdHlsZSA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJzAnOlxuICAgICAgZi5maWxsZXIgPSAnMCc7IGJyZWFrO1xuICAgIGNhc2UgJyMnOlxuICAgICAgZi5hbHRlcm5hdGUgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6XG4gICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICBmLndpZHRoID0gMDtcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi53aWR0aCA9IGYud2lkdGggKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLic6XG4gICAgICBmLnByZWMgPSAwO1xuICAgICAgaSsrO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLnByZWMgPSBmLnByZWMgKiAxMCArIGM7IGkrK1xuICAgICAgfVxuICAgICAgaS0tO1xuICAgIGNhc2UgJ2QnOiBjYXNlICdpJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAndSc6XG4gICAgICBmLmJhc2UgPSAxMDsgYnJlYWs7XG4gICAgY2FzZSAneCc6XG4gICAgICBmLmJhc2UgPSAxNjsgYnJlYWs7XG4gICAgY2FzZSAnWCc6XG4gICAgICBmLmJhc2UgPSAxNjsgZi51cHBlcmNhc2UgPSB0cnVlOyBicmVhaztcbiAgICBjYXNlICdvJzpcbiAgICAgIGYuYmFzZSA9IDg7IGJyZWFrO1xuICAgIGNhc2UgJ2UnOiBjYXNlICdmJzogY2FzZSAnZyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLmNvbnYgPSBjOyBicmVhaztcbiAgICBjYXNlICdFJzogY2FzZSAnRic6IGNhc2UgJ0cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi51cHBlcmNhc2UgPSB0cnVlO1xuICAgICAgZi5jb252ID0gYy50b0xvd2VyQ2FzZSAoKTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHJhd2J1ZmZlcikge1xuICBpZiAoZi51cHBlcmNhc2UpIHJhd2J1ZmZlciA9IHJhd2J1ZmZlci50b1VwcGVyQ2FzZSgpO1xuICB2YXIgbGVuID0gcmF3YnVmZmVyLmxlbmd0aDtcbiAgLyogQWRqdXN0IGxlbiB0byByZWZsZWN0IGFkZGl0aW9uYWwgY2hhcnMgKHNpZ24sIGV0YykgKi9cbiAgaWYgKGYuc2lnbmVkY29udiAmJiAoZi5zaWduIDwgMCB8fCBmLnNpZ25zdHlsZSAhPSAnLScpKSBsZW4rKztcbiAgaWYgKGYuYWx0ZXJuYXRlKSB7XG4gICAgaWYgKGYuYmFzZSA9PSA4KSBsZW4gKz0gMTtcbiAgICBpZiAoZi5iYXNlID09IDE2KSBsZW4gKz0gMjtcbiAgfVxuICAvKiBEbyB0aGUgZm9ybWF0dGluZyAqL1xuICB2YXIgYnVmZmVyID0gXCJcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJyAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIGlmIChmLnNpZ25lZGNvbnYpIHtcbiAgICBpZiAoZi5zaWduIDwgMCkgYnVmZmVyICs9ICctJztcbiAgICBlbHNlIGlmIChmLnNpZ25zdHlsZSAhPSAnLScpIGJ1ZmZlciArPSBmLnNpZ25zdHlsZTtcbiAgfVxuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDgpIGJ1ZmZlciArPSAnMCc7XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gMTYpIGJ1ZmZlciArPSBmLnVwcGVyY2FzZT9cIjBYXCI6XCIweFwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnMCcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcwJztcbiAgYnVmZmVyICs9IHJhd2J1ZmZlcjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnLScpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoYnVmZmVyKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnbG9iYWxUaGlzLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2x4bV9uZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfeG9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25ld19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdF9yKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gb3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfb3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfeG9yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gYWRkKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIG11bChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LGspLHNoaWZ0X3IgKHgsIDY0IC0gaykpO1xuICB9XG4gIGZ1bmN0aW9uIGdldChhLCBpKSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfZ2V0XzEoYSwgaSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KGEsIGksIHgpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9zZXRfMShhLCBpLCB4KTtcbiAgfVxuICB2YXIgTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSk7XG4gIHZhciBkYWJhID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkYWJhMGI2ZWIwOTMyMmUzXCIpKTtcbiAgdmFyIHosIHEwLCBxMTtcbiAgdmFyIHN0ID0gdjtcbiAgdmFyIGEgPSBnZXQoc3QsMCk7XG4gIHZhciBzID0gZ2V0KHN0LDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsMik7XG4gIHZhciB4MSA9IGdldChzdCwzKTtcbiAgLyogQ29tYmluaW5nIG9wZXJhdGlvbiAqL1xuICB6ID0gYWRkKHMsIHgwKTtcbiAgLyogTWl4aW5nIGZ1bmN0aW9uICovXG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LHNoaWZ0X3IoeiwzMikpO1xuICAvKiBMQ0cgdXBkYXRlICovXG4gIHNldChzdCwgMSwgYWRkIChtdWwocyxNKSwgYSkpO1xuICAvKiBYQkcgdXBkYXRlICovXG4gIHZhciBxMCA9IHgwXG4gIHZhciBxMSA9IHgxXG4gIHExID0geG9yKHExLHEwKTtcbiAgcTAgPSByb3RsKHEwLCAyNCk7XG4gIHEwID0geG9yKHhvcihxMCwgcTEpLCAoc2hpZnRfbChxMSwxNikpKTtcbiAgcTEgPSByb3RsKHExLCAzNyk7XG4gIHNldChzdCwgMiwgcTApO1xuICBzZXQoc3QsIDMsIHExKTtcbiAgLyogUmV0dXJuIHJlc3VsdCAqL1xuICByZXR1cm4gejtcbn1cbiIsIi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IFxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QgKHZvdXRwdXQsIHZzdGRvdXQsIHZzdGRlcnIpe1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyID0gY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXTtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF07XG4gIHZhciBvdXRwdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZvdXRwdXRdO1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gb3V0cHV0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gb3V0cHV0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0ICh2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczpjYW1sX291dF9jaGFubmVsX3Bvc19mZFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQoY2hhbil7XG4gIHZhciBpbmZvID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuXTtcbiAgcmV0dXJuIGluZm8ub2Zmc2V0XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIHZhciB0YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgdmFyIHRibF9uYW1lc19ibG9jayA9IDE2O1xuXG5cbiAgZnVuY3Rpb24gbG9nKHgpIHtcbiAgICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCArIFwiXFxuXCIpO1xuICAgIGNhbWxfbWxfb3V0cHV0KDIsIHMsIDAsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbl9uYW1lKG5hbWVzLCBudW1iZXIpXG4gIHtcbiAgICB2YXIgc3RyID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZXMpO1xuICAgIGlmIChzdHJbMF0gPT0gJ1xceDAwJylcbiAgICAgIHJldHVybiBcIjx1bmtub3duIHRva2VuPlwiO1xuICAgIHJldHVybiBzdHIuc3BsaXQoJ1xceDAwJylbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spXG4gIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKHRvayBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19ibG9ja10sIHRva1swXSk7XG4gICAgICBpZiAodHlwZW9mIHRva1sxXSA9PSBcIm51bWJlclwiKVxuICAgICAgICBraW5kID0gXCJcIiArIHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJzdHJpbmdcIilcbiAgICAgICAga2luZCA9IHRva1sxXVxuICAgICAgZWxzZSBpZiAodG9rWzFdIGluc3RhbmNlb2YgTWxCeXRlcylcbiAgICAgICAga2luZCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodG9rWzFdKVxuICAgICAgZWxzZVxuICAgICAgICBraW5kID0gXCJfXCJcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIG5leHQ6c3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpIHByaW50X3Rva2VuIChzdGF0ZSwgYXJnKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIlJlY292ZXJpbmcgaW4gc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWsgbmV4dDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICAgIGxvZyhcIk5vIG1vcmUgc3RhdGVzIHRvIGRpc2NhcmRcIik7XG4gICAgICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMClcbiAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVkdWNlIGJ5IHJ1bGUgXCIgKyBuKTtcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlcl90cmFjZVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKGJvb2wpIHtcbiAgdmFyIG9sZGZsYWcgPSBjYW1sX3BhcnNlcl90cmFjZTtcbiAgY2FtbF9wYXJzZXJfdHJhY2UgPSBib29sO1xuICByZXR1cm4gb2xkZmxhZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIEh1Z28gSGV1emFyZFxuLy8gQ29weXJpZ2h0IChDKSAyMDIwIC0gU2hhY2hhciBJdHpoYWt5XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvYmxvYi80LjA3L290aGVybGlicy9zdHIvc3Ryc3R1YnMuY1xuLy8gQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pzY29xL2pzY29xL2Jsb2IvdjguMTEvY29xLWpzL2pzX3N0dWIvc3RyLmpzXG5cbi8vUHJvdmlkZXM6IHJlX21hdGNoXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19nZXRcblxudmFyIHJlX21hdGNoID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlX3dvcmRfbGV0dGVycyA9IFtcbiAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgICAgICAvKiAweDAwLTB4MUY6IG5vbmUgKi9cbiAgICAweDAwLCAweDAwLCAweEZGLCAweDAzLCAgICAgICAvKiAweDIwLTB4M0Y6IGRpZ2l0cyAwLTkgKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDg3LCAgICAgICAvKiAweDQwLTB4NUY6IEEgdG8gWiwgXyAqL1xuICAgIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDcsICAgICAgIC8qIDB4NjAtMHg3RjogYSB0byB6ICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHg4MC0weDlGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHhBMC0weEJGOiBub25lICovXG4gICAgMHhGRiwgMHhGRiwgMHg3RiwgMHhGRiwgICAgICAgLyogMHhDMC0weERGOiBMYXRpbi0xIGFjY2VudGVkIHVwcGVyY2FzZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYgICAgICAgIC8qIDB4RTAtMHhGRjogTGF0aW4tMSBhY2NlbnRlZCBsb3dlcmNhc2UgKi9cbiAgXTtcblxuICB2YXIgb3Bjb2RlcyA9IHtcbiAgICBDSEFSOiAwLCBDSEFSTk9STTogMSwgU1RSSU5HOiAyLCBTVFJJTkdOT1JNOiAzLCBDSEFSQ0xBU1M6IDQsXG4gICAgQk9MOiA1LCBFT0w6IDYsIFdPUkRCT1VOREFSWTogNyxcbiAgICBCRUdHUk9VUDogOCwgRU5ER1JPVVA6IDksIFJFRkdST1VQOiAxMCxcbiAgICBBQ0NFUFQ6IDExLFxuICAgIFNJTVBMRU9QVDogMTIsIFNJTVBMRVNUQVI6IDEzLCBTSU1QTEVQTFVTOiAxNCxcbiAgICBHT1RPOiAxNSwgUFVTSEJBQ0s6IDE2LCBTRVRNQVJLOiAxNyxcbiAgICBDSEVDS1BST0dSRVNTOiAxOFxuICB9O1xuXG4gIGZ1bmN0aW9uIGlzX3dvcmRfbGV0dGVyKGMpIHtcbiAgICByZXR1cm4gKHJlX3dvcmRfbGV0dGVyc1sgIChjID4+IDMpXSA+PiAoYyAmIDcpKSAmIDE7XG4gIH1cblxuICBmdW5jdGlvbiBpbl9iaXRzZXQocyxpKSB7XG4gICAgcmV0dXJuIChjYW1sX3N0cmluZ19nZXQocywoaSA+PiAzKSkgPj4gKGkgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVfbWF0Y2hfaW1wbChyZSwgcywgcG9zLCBwYXJ0aWFsKSB7XG5cbiAgICB2YXIgcHJvZyAgICAgICAgICA9IGNhbWxfanNfZnJvbV9hcnJheShyZVsxXSksXG4gICAgICAgIGNwb29sICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMl0pLFxuICAgICAgICBub3JtdGFibGUgICAgID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhyZVszXSksXG4gICAgICAgIG51bWdyb3VwcyAgICAgPSByZVs0XSB8IDAsXG4gICAgICAgIG51bXJlZ2lzdGVycyAgPSByZVs1XSB8IDAsXG4gICAgICAgIHN0YXJ0Y2hhcnMgICAgPSByZVs2XSB8IDA7XG5cbiAgICB2YXIgcyA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHMpO1xuXG4gICAgdmFyIHBjID0gMCxcbiAgICAgICAgcXVpdCA9IGZhbHNlLFxuICAgICAgICBzdGFjayA9IFtdLFxuICAgICAgICBncm91cHMgPSBuZXcgQXJyYXkobnVtZ3JvdXBzKSxcbiAgICAgICAgcmVfcmVnaXN0ZXIgPSBuZXcgQXJyYXkobnVtcmVnaXN0ZXJzKTtcblxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspe1xuICAgICAgZ3JvdXBzW2ldID0ge3N0YXJ0OiAtMSwgZW5kOi0xfVxuICAgIH1cbiAgICBncm91cHNbMF0uc3RhcnQgPSBwb3M7XG5cbiAgICB2YXIgYmFja3RyYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBpZiAoaXRlbS51bmRvKSB7XG4gICAgICAgICAgaXRlbS51bmRvLm9ialtpdGVtLnVuZG8ucHJvcF0gPSBpdGVtLnVuZG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihpdGVtLnBvcykge1xuICAgICAgICAgIHBjID0gaXRlbS5wb3MucGM7XG4gICAgICAgICAgcG9zID0gaXRlbS5wb3MudHh0O1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVpdCA9IHRydWU7XG4gICAgfTtcblxuICAgIHZhciBwdXNoID0gZnVuY3Rpb24oaXRlbSkgeyBzdGFjay5wdXNoKGl0ZW0pOyB9O1xuXG4gICAgdmFyIGFjY2VwdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGdyb3Vwc1swXS5lbmQgPSBwb3M7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KDEgKyBncm91cHMubGVuZ3RoKjIpO1xuICAgICAgcmVzdWx0WzBdID0gMDsgLy8gdGFnXG4gICAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgdmFyIGcgPSBncm91cHNbaV07XG4gICAgICAgIGlmKGcuc3RhcnQgPCAwIHx8IGcuZW5kIDwgMCkge1xuICAgICAgICAgIGcuc3RhcnQgPSBnLmVuZCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFsyKmkgKyAxIF0gPSBnLnN0YXJ0O1xuICAgICAgICByZXN1bHRbMippICsgMSArIDEgXSA9IGcuZW5kO1xuICAgICAgfTtcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9O1xuXG4gICAgdmFyIHByZWZpeF9tYXRjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmKHBhcnRpYWwpIHJldHVybiBhY2NlcHQgKCk7XG4gICAgICBlbHNlIGJhY2t0cmFjayAoKTtcbiAgICB9XG5cbiAgICAvKiBNYWluIERGQSBpbnRlcnByZXRlciBsb29wICovXG4gICAgd2hpbGUgKCFxdWl0KSB7XG4gICAgICB2YXIgb3AgPSBwcm9nW3BjXSAmIDB4ZmYsXG4gICAgICAgICAgc2FyZyA9IHByb2dbcGNdID4+IDgsXG4gICAgICAgICAgdWFyZyA9IHNhcmcgJiAweGZmLFxuICAgICAgICAgIGMgPSBzW3Bvc10sXG4gICAgICAgICAgZ3JvdXA7XG5cbiAgICAgIHBjKys7XG5cbiAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5DSEFSOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChjID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUk5PUk06XG4gICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSB1YXJnKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKGMgPT09IGFyZy5jaGFyQ29kZUF0KGkpKVxuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIGVsc2UgeyBiYWNrdHJhY2soKTsgYnJlYWs7IH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TVFJJTkdOT1JNOlxuICAgICAgICBmb3IgKHZhciBhcmcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKGNwb29sW3VhcmddKSwgaSA9IDA7IGkgPCBhcmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgICAgaWYgKG5vcm10YWJsZS5jaGFyQ29kZUF0KGMpID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUkNMQVNTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgZWxzZSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQk9MOlxuICAgICAgICBpZihwb3MgPiAwICYmIHNbcG9zIC0gMV0gIT0gMTAgLyogXFxuICovKSB7YmFja3RyYWNrKCl9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVPTDpcbiAgICAgICAgaWYocG9zIDwgcy5sZW5ndGggJiYgc1twb3NdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5XT1JEQk9VTkRBUlk6XG4gICAgICAgIGlmKHBvcyA9PSAwKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbMF0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2soKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkpIGJyZWFrO1xuICAgICAgICAgIGJhY2t0cmFjayAoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzW3BvcyAtIDFdKSAhPSBpc193b3JkX2xldHRlcihzW3Bvc10pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQkVHR1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDonc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLnN0YXJ0fX0pO1xuICAgICAgICBncm91cC5zdGFydCA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuRU5ER1JPVVA6XG4gICAgICAgIGdyb3VwID0gZ3JvdXBzW3VhcmddO1xuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOiBncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J2VuZCcsXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ3JvdXAuZW5kfX0pO1xuICAgICAgICBncm91cC5lbmQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlJFRkdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgaWYoZ3JvdXAuc3RhcnQgPCAwIHx8IGdyb3VwLmVuZCA8IDApIHtiYWNrdHJhY2sgKCk7IGJyZWFrfVxuICAgICAgICBmb3IgKHZhciBpID0gZ3JvdXAuc3RhcnQ7IGkgPCBncm91cC5lbmQ7IGkrKyl7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmKHNbaV0gIT0gc1twb3NdKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVPUFQ6XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSBwb3MrKztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFU1RBUjpcbiAgICAgICAgd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpXG4gICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TSU1QTEVQTFVTOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKSB7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgYyA9IHNbKytwb3NdO1xuICAgICAgICAgIH0gd2hpbGUgKGluX2JpdHNldChjcG9vbFt1YXJnXSwgYykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkFDQ0VQVDpcbiAgICAgICAgcmV0dXJuIGFjY2VwdCgpO1xuICAgICAgY2FzZSBvcGNvZGVzLkdPVE86XG4gICAgICAgIHBjID0gcGMgKyBzYXJnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5QVVNIQkFDSzpcbiAgICAgICAgcHVzaCh7cG9zOiB7cGM6IHBjICsgc2FyZywgdHh0OiBwb3N9fSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNFVE1BUks6XG4gICAgICAgIHB1c2goe3VuZG86IHtvYmo6cmVfcmVnaXN0ZXIsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOiB1YXJnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlX3JlZ2lzdGVyW3VhcmddfX0pO1xuICAgICAgICByZV9yZWdpc3Rlclt1YXJnXSA9IHBvcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hFQ0tQUk9HUkVTUzpcbiAgICAgICAgaWYgKHJlX3JlZ2lzdGVyW3VhcmddID09PSBwb3MpIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnl0ZWNvZGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHJlX21hdGNoX2ltcGw7XG59KCk7XG5cblxuLy9Qcm92aWRlczogcmVfc2VhcmNoX2ZvcndhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2ZvcndhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2ZvcndhcmRcIilcbiAgd2hpbGUgKHBvcyA8PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MrKztcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9iYWNrd2FyZFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9zZWFyY2hfYmFja3dhcmQocmUsIHMsIHBvcykge1xuICBpZihwb3MgPCAwIHx8IHBvcyA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSlcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHIuc2VhcmNoX2JhY2t3YXJkXCIpXG4gIHdoaWxlIChwb3MgPj0gMCkge1xuICAgIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAwKTtcbiAgICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICAgIHBvcy0tO1xuICB9XG5cbiAgcmV0dXJuIFswXTsgIC8qIFt8fF0gOiBpbnQgYXJyYXkgKi9cbn1cblxuXG4vL1Byb3ZpZGVzOiByZV9zdHJpbmdfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc3RyaW5nX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnN0cmluZ19tYXRjaFwiKVxuICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gIGlmIChyZXMpIHJldHVybiByZXM7XG4gIGVsc2UgcmV0dXJuIFswXTtcbn1cblxuLy9Qcm92aWRlczogcmVfcGFydGlhbF9tYXRjaFxuLy9SZXF1aXJlczogcmVfbWF0Y2gsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiByZV9wYXJ0aWFsX21hdGNoKHJlLHMscG9zKXtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnBhcnRpYWxfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDEpO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3JlcGxhY2VtZW50X3RleHRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyBleHRlcm5hbCByZV9yZXBsYWNlbWVudF90ZXh0OiBzdHJpbmcgLT4gaW50IGFycmF5IC0+IHN0cmluZyAtPiBzdHJpbmdcbmZ1bmN0aW9uIHJlX3JlcGxhY2VtZW50X3RleHQocmVwbCxncm91cHMsb3JpZykge1xuICB2YXIgcmVwbCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVwbCk7XG4gIHZhciBsZW4gPSByZXBsLmxlbmd0aDtcbiAgdmFyIG9yaWcgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG9yaWcpO1xuICB2YXIgcmVzID0gXCJcIjsgLy9yZXN1bHRcbiAgdmFyIG4gPSAwOyAvLyBjdXJyZW50IHBvc2l0aW9uXG4gIHZhciBjdXI7IC8vY3VycmVudCBjaGFyXG4gIHZhciBzdGFydCwgZW5kLCBjO1xuICB3aGlsZShuIDwgbGVuKXtcbiAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgIGlmKGN1ciAhPSAnXFxcXCcpe1xuICAgICAgcmVzICs9IGN1cjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZihuID09IGxlbikgY2FtbF9mYWlsd2l0aChcIlN0ci5yZXBsYWNlOiBpbGxlZ2FsIGJhY2tzbGFzaCBzZXF1ZW5jZVwiKTtcbiAgICAgIGN1ciA9IHJlcGwuY2hhckF0KG4rKyk7XG4gICAgICBzd2l0Y2goY3VyKXtcbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICByZXMgKz0gY3VyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzpcbiAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgICAgYyA9ICtjdXI7XG4gICAgICAgIGlmIChjKjIgPj0gZ3JvdXBzLmxlbmd0aCAtIDEgKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiICk7XG4gICAgICAgIHN0YXJ0ID0gY2FtbF9hcnJheV9nZXQoZ3JvdXBzLGMqMik7XG4gICAgICAgIGVuZCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcywgYyoyICsxKTtcbiAgICAgICAgaWYgKHN0YXJ0ID09IC0xKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogcmVmZXJlbmNlIHRvIHVubWF0Y2hlZCBncm91cFwiKTtcbiAgICAgICAgcmVzKz1vcmlnLnNsaWNlKHN0YXJ0LGVuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzICs9ICgnXFxcXCcgICsgY3VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocmVzKTsgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyX2luaXRpYWxpemVcbmZ1bmN0aW9uIGNhbWxfc3RyX2luaXRpYWxpemUodW5pdCkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vUHJvdmlkZXM6IGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrXG5mdW5jdGlvbiBjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayh4KXtcbiAgcmV0dXJuICsoeCBpbnN0YW5jZW9mIEFycmF5KTtcbn1cblxuIiwiLy9Qcm92aWRlczoganNfcGVyZm9ybWFuY2VcbnZhciBqc19wZXJmb3JtYW5jZSA9IHttYXJrOiAoZnVuY3Rpb24gKCkge30pLCBtZWFzdXJlOiAoZnVuY3Rpb24gKCkge30pIH07XG5pZiAodHlwZW9mIGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2U7XG59IGVsc2Uge1xuICB0cnkge1xuICAgIHZhciBwZXJmX2hvb2tzID0gcmVxdWlyZSgncGVyZl9ob29rcycpO1xuICAgIGpzX3BlcmZvcm1hbmNlID0gcGVyZl9ob29rcy5wZXJmb3JtYW5jZTtcbiAgICBqb29fZ2xvYmFsX29iamVjdC5QZXJmb3JtYW5jZU9ic2VydmVyID0gcGVyZl9ob29rcy5QZXJmb3JtYW5jZU9ic2VydmVyO1xuICB9IGNhdGNoIChfZSkge1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihcImNvdWxkbid0IGxvYWQgcGVyZm9ybWFuY2UgaG9va3NcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tYXJrXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21hcmsobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1hcmsoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21lYXN1cmVcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWVhc3VyZShuYW1lLCBzdGFydCwgZW5kKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWVhc3VyZShcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzdGFydCksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhlbmQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWFya3Ncbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWFya3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNYXJrcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tZWFzdXJlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tZWFzdXJlcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4iLCIvLy8vLy8vLy8gVElNRV9OT1dcblxuLy9Qcm92aWRlczogdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxudmFyIG1zX3RvX25hbm8gPSBjYW1sX2ludDY0X29mX2ludDMyKDEwMDAqMTAwMCk7XG5mdW5jdGlvbiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8oKXtcbiAgICB2YXIgbXMgPSBEYXRlLm5vdygpO1xuICAgIC8vIG11bHRpcGxlIGJ5IHR3byAtIGludDYzIGludGVnZXJzIGFyZSBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICAgdmFyIG1zX2k2MyA9IGNhbWxfaW50NjRfb2ZfZmxvYXQobXMqMik7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKG1zX2k2Myxtc190b19uYW5vKTtcbn1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GOF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjICggQCApIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaDEgOjogW10gLT4gaDEgOjogbDJcbiAgfCBoMSA6OiBoMiA6OiBbXSAtPiBoMSA6OiBoMiA6OiBsMlxuICB8IGgxIDo6IGgyIDo6IGgzIDo6IHRsIC0+IGgxIDo6IGgyIDo6IGgzIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxuKCogZm9yIGF0X2V4aXQgKilcbnR5cGUgJ2EgYXRvbWljX3RcbmV4dGVybmFsIGF0b21pY19tYWtlIDogJ2EgLT4gJ2EgYXRvbWljX3QgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBhdG9taWNfZ2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgPSBcIiVhdG9taWNfbG9hZFwiXG5leHRlcm5hbCBhdG9taWNfY29tcGFyZV9hbmRfc2V0IDogJ2EgYXRvbWljX3QgLT4gJ2EgLT4gJ2EgLT4gYm9vbFxuICA9IFwiJWF0b21pY19jYXNcIlxuXG5sZXQgZXhpdF9mdW5jdGlvbiA9IGF0b21pY19tYWtlIGZsdXNoX2FsbFxuXG5sZXQgcmVjIGF0X2V4aXQgZiA9XG4gICgqIE1QUiM3MjUzLCBNUFIjNzc5NjogbWFrZSBzdXJlIFwiZlwiIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSAqKVxuICBsZXQgZl95ZXRfdG9fcnVuID0gYXRvbWljX21ha2UgdHJ1ZSBpblxuICBsZXQgb2xkX2V4aXQgPSBhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24gaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBpZiBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGZfeWV0X3RvX3J1biB0cnVlIGZhbHNlIHRoZW4gZiAoKSA7XG4gICAgb2xkX2V4aXQgKClcbiAgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBhdG9taWNfY29tcGFyZV9hbmRfc2V0IGV4aXRfZnVuY3Rpb24gb2xkX2V4aXQgbmV3X2V4aXQgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiBhdF9leGl0IGZcblxubGV0IGRvX2RvbWFpbl9sb2NhbF9hdF9leGl0ID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgKCFkb19kb21haW5fbG9jYWxfYXRfZXhpdCkgKCk7XG4gIChhdG9taWNfZ2V0IGV4aXRfZnVuY3Rpb24pICgpXG5cbmxldCBleGl0IHJldGNvZGUgPVxuICBkb19hdF9leGl0ICgpO1xuICBzeXNfZXhpdCByZXRjb2RlXG5cbmxldCBfID0gcmVnaXN0ZXJfbmFtZWRfdmFsdWUgXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIiBkb19hdF9leGl0XG5cbigqTU9EVUxFX0FMSUFTRVMqKVxubW9kdWxlIEFyZyAgICAgICAgICAgID0gQXJnXG5tb2R1bGUgQXJyYXkgICAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICAgID0gQXJyYXlMYWJlbHNcbm1vZHVsZSBBdG9taWMgICAgICAgICA9IEF0b21pY1xubW9kdWxlIEJpZ2FycmF5ICAgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgICA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgICAgICAgICA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzICAgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgICA9IEJ5dGVzTGFiZWxzXG5tb2R1bGUgQ2FsbGJhY2sgICAgICAgPSBDYWxsYmFja1xubW9kdWxlIENoYXIgICAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICAgID0gQ29tcGxleFxubW9kdWxlIENvbmRpdGlvbiAgICAgID0gQ29uZGl0aW9uXG5tb2R1bGUgRGlnZXN0ICAgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBEb21haW4gICAgICAgICA9IERvbWFpblxubW9kdWxlIER5bmFycmF5ICAgICAgID0gRHluYXJyYXlcbm1vZHVsZSBFZmZlY3QgICAgICAgICA9IEVmZmVjdFxubW9kdWxlIEVpdGhlciAgICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgICA9IEdjXG5tb2R1bGUgSGFzaHRibCAgICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW5fY2hhbm5lbCAgICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBNdXRleCAgICAgICAgICA9IE11dGV4XG5tb2R1bGUgTmF0aXZlaW50ICAgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgICA9IE9wdGlvblxubW9kdWxlIE91dF9jaGFubmVsICAgID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQYXJzaW5nICAgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQcmludGV4YyAgICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZW1hcGhvcmUgICAgICA9IFNlbWFwaG9yZVxubW9kdWxlIFNlcSAgICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJpbmcgICAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyAgID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgICAgPSBTeXNcbm1vZHVsZSBUeXBlICAgICAgICAgICA9IFR5cGVcbm1vZHVsZSBVY2hhciAgICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKiBAY29uZmlndXJlX2lucHV0QCAqKVxuIzMgXCJzeXMubWwuaW5cIlxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcbigqIFN5c3RlbSBpbnRlcmZhY2UgKilcblxuZXh0ZXJuYWwgZ2V0X2NvbmZpZzogdW5pdCAtPiBzdHJpbmcgKiBpbnQgKiBib29sID0gXCJjYW1sX3N5c19nZXRfY29uZmlnXCJcbmV4dGVybmFsIGdldF9leGVjdXRhYmxlX25hbWUgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lXCJcbmV4dGVybmFsIGFyZ3YgOiBzdHJpbmcgYXJyYXkgPSBcIiVzeXNfYXJndlwiXG5leHRlcm5hbCBiaWdfZW5kaWFuIDogdW5pdCAtPiBib29sID0gXCIlYmlnX2VuZGlhblwiXG5leHRlcm5hbCB3b3JkX3NpemUgOiB1bml0IC0+IGludCA9IFwiJXdvcmRfc2l6ZVwiXG5leHRlcm5hbCBpbnRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlaW50X3NpemVcIlxuZXh0ZXJuYWwgbWF4X3dvc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlbWF4X3dvc2l6ZVwiXG5leHRlcm5hbCB1bml4IDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3VuaXhcIlxuZXh0ZXJuYWwgd2luMzIgOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfd2luMzJcIlxuZXh0ZXJuYWwgY3lnd2luIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX2N5Z3dpblwiXG5leHRlcm5hbCBnZXRfYmFja2VuZF90eXBlIDogdW5pdCAtPiBiYWNrZW5kX3R5cGUgPSBcIiViYWNrZW5kX3R5cGVcIlxuXG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gZ2V0X2V4ZWN1dGFibGVfbmFtZSgpXG5sZXQgKG9zX3R5cGUsIF8sIF8pID0gZ2V0X2NvbmZpZygpXG5sZXQgYmFja2VuZF90eXBlID0gZ2V0X2JhY2tlbmRfdHlwZSAoKVxubGV0IGJpZ19lbmRpYW4gPSBiaWdfZW5kaWFuICgpXG5sZXQgd29yZF9zaXplID0gd29yZF9zaXplICgpXG5sZXQgaW50X3NpemUgPSBpbnRfc2l6ZSAoKVxubGV0IHVuaXggPSB1bml4ICgpXG5sZXQgd2luMzIgPSB3aW4zMiAoKVxubGV0IGN5Z3dpbiA9IGN5Z3dpbiAoKVxubGV0IG1heF9hcnJheV9sZW5ndGggPSBtYXhfd29zaXplICgpXG5sZXQgbWF4X2Zsb2F0YXJyYXlfbGVuZ3RoID0gbWF4X2FycmF5X2xlbmd0aCAvICg2NCAvIHdvcmRfc2l6ZSlcbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMVxuZXh0ZXJuYWwgcnVudGltZV92YXJpYW50IDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV92YXJpYW50XCJcbmV4dGVybmFsIHJ1bnRpbWVfcGFyYW1ldGVycyA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1wiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCBpc19yZWd1bGFyX2ZpbGUgOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNfcmVndWxhcl9maWxlXCJcbmV4dGVybmFsIHJlbW92ZTogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbW92ZVwiXG5leHRlcm5hbCByZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX3JlbmFtZVwiXG5leHRlcm5hbCBnZXRlbnY6IHN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfc3lzX2dldGVudlwiXG5cbmxldCBnZXRlbnZfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChnZXRlbnYgcylcbiAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5leHRlcm5hbCBjb21tYW5kOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFwiXG5leHRlcm5hbCB0aW1lOiB1bml0IC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9zeXNfdGltZVwiIFwiY2FtbF9zeXNfdGltZV91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGNoZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2hkaXJcIlxuZXh0ZXJuYWwgbWtkaXI6IHN0cmluZyAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfbWtkaXJcIlxuZXh0ZXJuYWwgcm1kaXI6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19ybWRpclwiXG5leHRlcm5hbCBnZXRjd2Q6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRjd2RcIlxuZXh0ZXJuYWwgcmVhZGRpciA6IHN0cmluZyAtPiBzdHJpbmcgYXJyYXkgPSBcImNhbWxfc3lzX3JlYWRfZGlyZWN0b3J5XCJcblxubGV0IGludGVyYWN0aXZlID0gcmVmIGZhbHNlXG5cbnR5cGUgc2lnbmFsX2JlaGF2aW9yID1cbiAgICBTaWduYWxfZGVmYXVsdFxuICB8IFNpZ25hbF9pZ25vcmVcbiAgfCBTaWduYWxfaGFuZGxlIG9mIChpbnQgLT4gdW5pdClcblxuZXh0ZXJuYWwgc2lnbmFsIDogaW50IC0+IHNpZ25hbF9iZWhhdmlvciAtPiBzaWduYWxfYmVoYXZpb3JcbiAgICAgICAgICAgICAgICA9IFwiY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyXCJcblxubGV0IHNldF9zaWduYWwgc2lnX251bSBzaWdfYmVoID0gaWdub3JlKHNpZ25hbCBzaWdfbnVtIHNpZ19iZWgpXG5cbmxldCBzaWdhYnJ0ID0gLTFcbmxldCBzaWdhbHJtID0gLTJcbmxldCBzaWdmcGUgPSAtM1xubGV0IHNpZ2h1cCA9IC00XG5sZXQgc2lnaWxsID0gLTVcbmxldCBzaWdpbnQgPSAtNlxubGV0IHNpZ2tpbGwgPSAtN1xubGV0IHNpZ3BpcGUgPSAtOFxubGV0IHNpZ3F1aXQgPSAtOVxubGV0IHNpZ3NlZ3YgPSAtMTBcbmxldCBzaWd0ZXJtID0gLTExXG5sZXQgc2lndXNyMSA9IC0xMlxubGV0IHNpZ3VzcjIgPSAtMTNcbmxldCBzaWdjaGxkID0gLTE0XG5sZXQgc2lnY29udCA9IC0xNVxubGV0IHNpZ3N0b3AgPSAtMTZcbmxldCBzaWd0c3RwID0gLTE3XG5sZXQgc2lndHRpbiA9IC0xOFxubGV0IHNpZ3R0b3UgPSAtMTlcbmxldCBzaWd2dGFscm0gPSAtMjBcbmxldCBzaWdwcm9mID0gLTIxXG5sZXQgc2lnYnVzID0gLTIyXG5sZXQgc2lncG9sbCA9IC0yM1xubGV0IHNpZ3N5cyA9IC0yNFxubGV0IHNpZ3RyYXAgPSAtMjVcbmxldCBzaWd1cmcgPSAtMjZcbmxldCBzaWd4Y3B1ID0gLTI3XG5sZXQgc2lneGZzeiA9IC0yOFxuXG5leGNlcHRpb24gQnJlYWtcblxubGV0IGNhdGNoX2JyZWFrIG9uID1cbiAgaWYgb24gdGhlblxuICAgIHNldF9zaWduYWwgc2lnaW50IChTaWduYWxfaGFuZGxlKGZ1biBfIC0+IHJhaXNlIEJyZWFrKSlcbiAgZWxzZVxuICAgIHNldF9zaWduYWwgc2lnaW50IFNpZ25hbF9kZWZhdWx0XG5cblxuZXh0ZXJuYWwgZW5hYmxlX3J1bnRpbWVfd2FybmluZ3M6IGJvb2wgLT4gdW5pdCA9XG4gIFwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5nc1wiXG5leHRlcm5hbCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQ6IHVuaXQgLT4gYm9vbCA9XG4gIFwiY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcIlxuXG4oKiBUaGUgdmVyc2lvbiBzdHJpbmcgaXMgZm91bmQgaW4gZmlsZSAuLi9WRVJTSU9OICopXG5cbmxldCBvY2FtbF92ZXJzaW9uID0gXCJAVkVSU0lPTkBcIlxuXG5sZXQgZGV2ZWxvcG1lbnRfdmVyc2lvbiA9IEBPQ0FNTF9ERVZFTE9QTUVOVF9WRVJTSU9OQFxuXG50eXBlIGV4dHJhX3ByZWZpeCA9IFBsdXMgfCBUaWxkZVxuXG50eXBlIGV4dHJhX2luZm8gPSBleHRyYV9wcmVmaXggKiBzdHJpbmdcblxudHlwZSBvY2FtbF9yZWxlYXNlX2luZm8gPSB7XG4gIG1ham9yIDogaW50O1xuICBtaW5vciA6IGludDtcbiAgcGF0Y2hsZXZlbCA6IGludDtcbiAgZXh0cmEgOiBleHRyYV9pbmZvIG9wdGlvblxufVxuXG5sZXQgb2NhbWxfcmVsZWFzZSA9IHtcbiAgbWFqb3IgPSBAT0NBTUxfVkVSU0lPTl9NQUpPUkA7XG4gIG1pbm9yID0gQE9DQU1MX1ZFUlNJT05fTUlOT1JAO1xuICBwYXRjaGxldmVsID0gQE9DQU1MX1ZFUlNJT05fUEFUQ0hMRVZFTEA7XG4gIGV4dHJhID0gQE9DQU1MX1JFTEVBU0VfRVhUUkFAXG59XG5cbigqIE9wdGltaXphdGlvbiAqKVxuXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHkgOiAnYSAtPiAnYSA9IFwiJW9wYXF1ZVwiXG5cbm1vZHVsZSBJbW1lZGlhdGU2NCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZShJbW1lZGlhdGUgOiBJbW1lZGlhdGUpKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuICAgIGV4dGVybmFsIG1hZ2ljIDogXyByZXByIC0+IHQgcmVwciA9IFwiJWlkZW50aXR5XCJcbiAgICBsZXQgcmVwciA9XG4gICAgICBpZiB3b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIG1hZ2ljIEltbWVkaWF0ZVxuICAgICAgZWxzZVxuICAgICAgICBtYWdpYyBOb25faW1tZWRpYXRlXG4gIGVuZFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgYWRkX29mZnNldCA6IHQgLT4gSW50MzIudCAtPiB0ID0gXCJjYW1sX29ial9hZGRfb2Zmc2V0XCJcbmV4dGVybmFsIHdpdGhfdGFnIDogaW50IC0+IHQgLT4gdCA9IFwiY2FtbF9vYmpfd2l0aF90YWdcIlxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDNcblxubGV0IGZvcmNpbmdfdGFnID0gMjQ0XG5sZXQgY29udF90YWcgPSAyNDVcbmxldCBsYXp5X3RhZyA9IDI0NlxubGV0IGNsb3N1cmVfdGFnID0gMjQ3XG5sZXQgb2JqZWN0X3RhZyA9IDI0OFxubGV0IGluZml4X3RhZyA9IDI0OVxubGV0IGZvcndhcmRfdGFnID0gMjUwXG5cbmxldCBub19zY2FuX3RhZyA9IDI1MVxuXG5sZXQgYWJzdHJhY3RfdGFnID0gMjUxXG5sZXQgc3RyaW5nX3RhZyA9IDI1MlxubGV0IGRvdWJsZV90YWcgPSAyNTNcbmxldCBkb3VibGVfYXJyYXlfdGFnID0gMjU0XG5sZXQgY3VzdG9tX3RhZyA9IDI1NVxuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbnN0cnVjdFxuICB0eXBlIHQgPSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IG9mX3ZhbCB4ID1cbiAgICBsZXQgeCA9IHJlcHIgeCBpblxuICAgIGxldCBzbG90ID1cbiAgICAgIGlmIChpc19ibG9jayB4KSAmJiAodGFnIHgpIDw+IG9iamVjdF90YWcgJiYgKHNpemUgeCkgPj0gMSB0aGVuIGZpZWxkIHggMFxuICAgICAgZWxzZSB4XG4gICAgaW5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBpZiAoaXNfYmxvY2sgc2xvdCkgJiYgKHRhZyBzbG90KSA9IG9iamVjdF90YWcgdGhlbiBmaWVsZCBzbG90IDBcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcbiAgICBpblxuICAgICAgaWYgKHRhZyBuYW1lKSA9IHN0cmluZ190YWcgdGhlbiAob2JqIHNsb3QgOiB0KVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIG5hbWUgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMCkgOiBzdHJpbmcpXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gaWQgKHNsb3QgOiB0KSA9XG4gICAgKG9iaiAoZmllbGQgKHJlcHIgc2xvdCkgMSkgOiBpbnQpXG5lbmRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIlxuICBsZXQgY3JlYXRlIGwgPVxuICAgIGlmIG5vdCAoMCA8PSBsICYmIGwgPD0gbWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uY3JlYXRlXCI7XG4gICAgY3JlYXRlIGxcblxuICBsZXQgbGVuZ3RoIHggPSBzaXplKHJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgICBpZiBub3QgKDAgPD0gbyAmJiBvIDwgbGVuZ3RoIGUpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGV4dGVybmFsIGdldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlcIlxuICBsZXQgZ2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleVwiO1xuICAgIGdldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleV9jb3B5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcIlxuICBsZXQgZ2V0X2tleV9jb3B5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5X2NvcHlcIjtcbiAgICBnZXRfa2V5X2NvcHkgZSBvXG5cbiAgZXh0ZXJuYWwgc2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuICBsZXQgc2V0X2tleSBlIG8geCA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5zZXRfa2V5XCI7XG4gICAgc2V0X2tleSBlIG8geFxuXG4gIGV4dGVybmFsIHVuc2V0X2tleTogdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG4gIGxldCB1bnNldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnVuc2V0X2tleVwiO1xuICAgIHVuc2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBjaGVja19rZXk6IHQgLT4gaW50IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19rZXlcIlxuICBsZXQgY2hlY2tfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5jaGVja19rZXlcIjtcbiAgICBjaGVja19rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgYmxpdF9rZXkgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgID0gXCJjYW1sX2VwaGVfYmxpdF9rZXlcIlxuXG4gIGxldCBibGl0X2tleSBlMSBvMSBlMiBvMiBsID1cbiAgICBpZiBsIDwgMCB8fCBvMSA8IDAgfHwgbzEgPiBsZW5ndGggZTEgLSBsXG4gICAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmJsaXRfa2V5XCJcbiAgICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXRfa2V5IGUxIG8xIGUyIG8yIGxcblxuICBleHRlcm5hbCBnZXRfZGF0YTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YVwiXG4gIGV4dGVybmFsIGdldF9kYXRhX2NvcHk6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVwiXG4gIGV4dGVybmFsIHNldF9kYXRhOiB0IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfZGF0YVwiXG4gIGV4dGVybmFsIHVuc2V0X2RhdGE6IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2RhdGFcIlxuICBleHRlcm5hbCBjaGVja19kYXRhOiB0IC0+IGJvb2wgPSBcImNhbWxfZXBoZV9jaGVja19kYXRhXCJcbiAgZXh0ZXJuYWwgYmxpdF9kYXRhIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9ibGl0X2RhdGFcIlxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVHlwZSBlcXVhbGl0eSB3aXRuZXNzICopXG5cbnR5cGUgKF8sIF8pIGVxID0gRXF1YWw6ICgnYSwgJ2EpIGVxXG5cbigqIFR5cGUgaWRlbnRpZmllcnMgKilcblxubW9kdWxlIElkID0gc3RydWN0XG4gIHR5cGUgXyBpZCA9IC4uXG4gIG1vZHVsZSB0eXBlIElEID0gc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBfIGlkICs9IElkIDogdCBpZFxuICBlbmRcblxuICB0eXBlICEnYSB0ID0gKG1vZHVsZSBJRCB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gIGxldCBtYWtlICh0eXBlIGEpICgpIDogYSB0ID1cbiAgICAobW9kdWxlIHN0cnVjdCB0eXBlIHQgPSBhIHR5cGUgXyBpZCArPSBJZCA6IHQgaWQgZW5kKVxuXG4gIGxldFtAaW5saW5lXSB1aWQgKHR5cGUgYSkgKChtb2R1bGUgQSkgOiBhIHQpID1cbiAgICBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBBLklkKVxuXG4gIGxldCBwcm92YWJseV9lcXVhbFxuICAgICAgKHR5cGUgYSBiKSAoKG1vZHVsZSBBKSA6IGEgdCkgKChtb2R1bGUgQikgOiBiIHQpIDogKGEsIGIpIGVxIG9wdGlvblxuICAgID1cbiAgICBtYXRjaCBBLklkIHdpdGggQi5JZCAtPiBTb21lIEVxdWFsIHwgXyAtPiBOb25lXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTctMjAxOCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZS4gICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAhJ2EgdFxuXG5leHRlcm5hbCBtYWtlIDogJ2EgLT4gJ2EgdCA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsIG1ha2VfY29udGVuZGVkIDogJ2EgLT4gJ2EgdCA9IFwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcIlxuZXh0ZXJuYWwgZ2V0IDogJ2EgdCAtPiAnYSA9IFwiJWF0b21pY19sb2FkXCJcbmV4dGVybmFsIGV4Y2hhbmdlIDogJ2EgdCAtPiAnYSAtPiAnYSA9IFwiJWF0b21pY19leGNoYW5nZVwiXG5leHRlcm5hbCBjb21wYXJlX2FuZF9zZXQgOiAnYSB0IC0+ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVhdG9taWNfY2FzXCJcbmV4dGVybmFsIGZldGNoX2FuZF9hZGQgOiBpbnQgdCAtPiBpbnQgLT4gaW50ID0gXCIlYXRvbWljX2ZldGNoX2FkZFwiXG5leHRlcm5hbCBpZ25vcmUgOiAnYSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxubGV0IHNldCByIHggPSBpZ25vcmUgKGV4Y2hhbmdlIHIgeClcbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEludGVybmFscyBvZiBmb3JjaW5nIGxhenkgdmFsdWVzLiAqKVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuXG4oKiBbdXBkYXRlX3RvX2ZvcmNpbmcgYmxrXSB0cmllcyB0byB1cGRhdGUgYSBbYmxrXSB3aXRoIFtsYXp5X3RhZ10gdG9cbiAgIFtmb3JjaW5nX3RhZ10gdXNpbmcgY29tcGFyZS1hbmQtc3dhcCAoQ0FTKSwgdGFraW5nIGNhcmUgdG8gaGFuZGxlIGNvbmN1cnJlbnRcbiAgIG1hcmtpbmcgb2YgdGhlIGhlYWRlciB3b3JkIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuIFJldHVybnMgWzBdIGlmIHRoZVxuICAgQ0FTIGlzIHN1Y2Nlc3NmdWwuIElmIHRoZSBDQVMgZmFpbHMsIHRoZW4gdGhlIHRhZyB3YXMgb2JzZXJ2ZWQgdG8gYmVcbiAgIHNvbWV0aGluZyBvdGhlciB0aGFuIFtsYXp5X3RhZ10gZHVlIHRvIGEgY29uY3VycmVudCBtdXRhdG9yLiBJbiB0aGlzIGNhc2UsXG4gICB0aGUgZnVuY3Rpb24gcmV0dXJucyBbMV0uICopXG5leHRlcm5hbCB1cGRhdGVfdG9fZm9yY2luZyA6IE9iai50IC0+IGludCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXCIgW0BAbm9hbGxvY11cblxuKCogW3Jlc2V0X3RvX2xhenkgYmxrXSBleHBlY3RzIFtibGtdIHRvIGJlIGEgbGF6eSBvYmplY3Qgd2l0aCBbT2JqLmZvcmNpbmdfdGFnXVxuICAgYW5kIHVwZGF0ZXMgdGhlIHRhZyB0byBbT2JqLmxhenlfdGFnXSwgdGFraW5nIGNhcmUgdG8gaGFuZGxlIGNvbmN1cnJlbnRcbiAgIG1hcmtpbmcgb2YgdGhpcyBvYmplY3QncyBoZWFkZXIgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gKilcbmV4dGVybmFsIHJlc2V0X3RvX2xhenkgOiBPYmoudCAtPiB1bml0ID0gXCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVwiIFtAQG5vYWxsb2NdXG5cbigqIFt1cGRhdGVfdG9fZm9yd2FyZCBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoXG4gICBbT2JqLmZvcmNpbmdfdGFnXSBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmouZm9yd2FyZF90YWddLCB0YWtpbmcgY2FyZSB0b1xuICAgaGFuZGxlIGNvbmN1cnJlbnQgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLlxuICopXG5leHRlcm5hbCB1cGRhdGVfdG9fZm9yd2FyZCA6IE9iai50IC0+IHVuaXQgPVxuICBcImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZFwiIFtAQG5vYWxsb2NdXG5cbigqIEFzc3VtZXMgW2Jsa10gaXMgYSBibG9jayB3aXRoIHRhZyBmb3JjaW5nICopXG5sZXQgZG9fZm9yY2VfYmxvY2sgYmxrID1cbiAgbGV0IGIgPSBPYmoucmVwciBibGsgaW5cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIGIgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoKSk7ICgqIFJlbGVhc2UgdGhlIGNsb3N1cmUgKilcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgICB1cGRhdGVfdG9fZm9yd2FyZCBiO1xuICAgIHJlc3VsdFxuICB3aXRoIGUgLT5cbiAgICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmVzZXRfdG9fbGF6eSBiO1xuICAgIHJhaXNlIGVcblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV92YWxfYmxvY2sgYmxrID1cbiAgbGV0IGIgPSBPYmoucmVwciBibGsgaW5cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIGIgMCkgOiB1bml0IC0+ICdhcmcpIGluXG4gIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoKSk7ICgqIFJlbGVhc2UgdGhlIGNsb3N1cmUgKilcbiAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByIHJlc3VsdCk7XG4gIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gIHJlc3VsdFxuXG4oKiBDYWxsZWQgYnkgW2ZvcmNlX2dlbl0gKilcbmxldCBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWwgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gICgqIFdlIGV4cGVjdCB0aGUgdGFnIHRvIGJlIFtsYXp5X3RhZ10sIGJ1dCBtYXkgYmUgb3RoZXIgdGFncyBkdWUgdG9cbiAgICAgY29uY3VycmVudCBmb3JjaW5nIG9mIGxhenkgdmFsdWVzLiAqKVxuICBtYXRjaCB1cGRhdGVfdG9fZm9yY2luZyAoT2JqLnJlcHIgYmxrKSB3aXRoXG4gIHwgMCB3aGVuIG9ubHlfdmFsIC0+IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGtcbiAgfCAwIC0+IGRvX2ZvcmNlX2Jsb2NrIGJsa1xuICB8IF8gLT4gcmFpc2UgVW5kZWZpbmVkXG5cbigqIHVzZWQgaW4gdGhlICVsYXp5X2ZvcmNlIHByaW1pdGl2ZSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgYmxrID0gZm9yY2VfZ2VuX2xhenlfYmxvY2sgfm9ubHlfdmFsOmZhbHNlIGJsa1xuXG4oKiBbZm9yY2VfZ2VuIH5vbmx5X3ZhbDpmYWxzZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpc1xuICAgZGVjbGFyZWQgYXMgYSBwcmltaXRpdmUgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzXG4gICBhcmd1bWVudCwgZXhjZXB0IHdoZW4gYWZsIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5sZXQgZm9yY2VfZ2VuIH5vbmx5X3ZhbCAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXQgY291bGQgaGF2ZSBiZWVuXG4gICAgICAgc2hvcnRjdXQgZHVyaW5nIEdDLCBzbyB0aGF0IGluZm9ybWF0aW9uIG11c3QgYmUgZm9yZ290dGVuIChzZWUgR1BSIzcxM1xuICAgICAgIGFuZCBpc3N1ZSAjNzMwMSkuIFRoaXMgaXMgbm90IGFuIGlzc3VlIGhlcmUgYXQgdGhlIG1vbWVudCBzaW5jZVxuICAgICAgIFtPYmoudGFnXSBpcyBub3Qgc2ltcGxpZmllZCBieSB0aGUgY29tcGlsZXIsIGFuZCBHUFIjNzEzIGFsc29cbiAgICAgICBlbnN1cmVzIHRoYXQgbm8gdmFsdWUgd2lsbCBiZSBrbm93biB0byBoYXZlIEZvcndhcmRfdGFnLlxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgKCogU1RBUlQgbm8gc2FmZSBwb2ludHMuIElmIGEgR0Mgb2NjdXJzIGhlcmUsIHRoZW4gdGhlIG9iamVjdCBbeF0gbWF5IGJlXG4gICAgIHNob3J0LWNpcmN1aXRlZCwgYW5kIGdldHRpbmcgdGhlIGZpcnN0IGZpZWxkIG9mIFt4XSB3b3VsZCBnZXQgdXMgdGhlIHdyb25nXG4gICAgIHZhbHVlLiBMdWNraWx5LCB0aGUgY29tcGlsZXIgZG9lcyBub3QgaW5zZXJ0IEdDIHNhZmUgcG9pbnRzIGF0IHRoaXMgcGxhY2UsXG4gICAgIHNvIGl0IGlzIG9rLiAqKVxuICBsZXQgdCA9IE9iai50YWcgeCBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHRoZW5cbiAgICAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKVxuICAoKiBFTkQgbm8gc2FmZSBwb2ludHMgKilcbiAgZWxzZSBpZiB0ID0gT2JqLmZvcmNpbmdfdGFnIHRoZW4gcmFpc2UgVW5kZWZpbmVkXG4gIGVsc2UgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWwgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogJ2EgLT4gJ2EgbGF6eV90ID0gXCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkXCJcbmV4dGVybmFsIGZvcmNlIDogJ2EgdCAtPiAnYSA9IFwiJWxhenlfZm9yY2VcIlxuXG5sZXQgZm9yY2VfdmFsIGwgPSBDYW1saW50ZXJuYWxMYXp5LmZvcmNlX2dlbiB+b25seV92YWw6dHJ1ZSBsXG5cbmxldCBmcm9tX2Z1biAoZiA6IHVuaXQgLT4gJ2FyZykgPVxuICBsZXQgeCA9IE9iai5uZXdfYmxvY2sgT2JqLmxhenlfdGFnIDEgaW5cbiAgT2JqLnNldF9maWVsZCB4IDAgKE9iai5yZXByIGYpO1xuICAoT2JqLm9iaiB4IDogJ2FyZyB0KVxuXG5sZXQgZnJvbV92YWwgKHYgOiAnYXJnKSA9XG4gIGxldCB0ID0gT2JqLnRhZyAoT2JqLnJlcHIgdikgaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB8fCB0ID0gT2JqLmxhenlfdGFnIHx8XG4gICAgIHQgPSBPYmouZm9yY2luZ190YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cbmxldCBpc192YWwgKGwgOiAnYXJnIHQpID0gT2JqLnRhZyAoT2JqLnJlcHIgbCkgPD4gT2JqLmxhenlfdGFnXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gZnJvbV92YWwgKGYgKGZvcmNlIHgpKVxuICBlbHNlIGxhenkgKGYgKGZvcmNlIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFNpbW9uIENydWFuZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW1NlcV06IGZ1bmN0aW9uYWwgaXRlcmF0b3JzICopXG5cbnR5cGUgKydhIG5vZGUgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbmFuZCAnYSB0ID0gdW5pdCAtPiAnYSBub2RlXG5cbmxldCBlbXB0eSAoKSA9IE5pbFxuXG5sZXQgcmV0dXJuIHggKCkgPSBDb25zICh4LCBlbXB0eSlcblxubGV0IGNvbnMgeCBuZXh0ICgpID0gQ29ucyAoeCwgbmV4dClcblxubGV0IHJlYyBhcHBlbmQgc2VxMSBzZXEyICgpID1cbiAgbWF0Y2ggc2VxMSgpIHdpdGhcbiAgfCBOaWwgLT4gc2VxMigpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMilcblxubGV0IHJlYyBtYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IENvbnMgKGYgeCwgbWFwIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICAgIHwgU29tZSB5IC0+IENvbnMgKHksIGZpbHRlcl9tYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlciBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGlmIGYgeFxuICAgICAgdGhlbiBDb25zICh4LCBmaWx0ZXIgZiBuZXh0KVxuICAgICAgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5cbmxldCByZWMgY29uY2F0IHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgIGFwcGVuZCB4IChjb25jYXQgbmV4dCkgKClcblxubGV0IHJlYyBmbGF0X21hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgYXBwZW5kIChmIHgpIChmbGF0X21hcCBmIG5leHQpICgpXG5cbmxldCBjb25jYXRfbWFwID0gZmxhdF9tYXBcblxubGV0IHJlYyBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGZvbGRfbGVmdCBmIGFjYyBuZXh0XG5cbmxldCByZWMgaXRlciBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgaXRlciBmIG5leHRcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IE5pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBDb25zICh4LCB1bmZvbGQgZiB1JylcblxubGV0IGlzX2VtcHR5IHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoXywgXykgLT5cbiAgICAgIGZhbHNlXG5cbmxldCB1bmNvbnMgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIFNvbWUgKHgsIHhzKVxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuXG5cblxubGV0IHJlYyBsZW5ndGhfYXV4IGFjY3UgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zIChfLCB4cykgLT5cbiAgICAgIGxlbmd0aF9hdXggKGFjY3UgKyAxKSB4c1xuXG5sZXRbQGlubGluZV0gbGVuZ3RoIHhzID1cbiAgbGVuZ3RoX2F1eCAwIHhzXG5cbmxldCByZWMgaXRlcmlfYXV4IGYgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgKClcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGYgaSB4O1xuICAgICAgaXRlcmlfYXV4IGYgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGl0ZXJpIGYgeHMgPVxuICBpdGVyaV9hdXggZiAwIHhzXG5cbmxldCByZWMgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IGkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGFjY3VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGkgeCBpblxuICAgICAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IChpKzEpIHhzXG5cbmxldFtAaW5saW5lXSBmb2xkX2xlZnRpIGYgYWNjdSB4cyA9XG4gIGZvbGRfbGVmdGlfYXV4IGYgYWNjdSAwIHhzXG5cbmxldCByZWMgZm9yX2FsbCBwIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggJiYgZm9yX2FsbCBwIHhzXG5cbmxldCByZWMgZXhpc3RzIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBwIHggfHwgZXhpc3RzIHAgeHNcblxubGV0IHJlYyBmaW5kIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeCBlbHNlIGZpbmQgcCB4c1xuXG5sZXQgZmluZF9pbmRleCBwIHhzID1cbiAgbGV0IHJlYyBhdXggaSB4cyA9IG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5vbmVcbiAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICBpZiBwIHggdGhlbiBTb21lIGkgZWxzZSBhdXggKGkrMSkgeHMgaW5cbiAgYXV4IDAgeHNcblxubGV0IHJlYyBmaW5kX21hcCBmIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgZmluZF9tYXAgZiB4c1xuICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgcmVzdWx0XG5cbmxldCBmaW5kX21hcGkgZiB4cyA9XG4gIGxldCByZWMgYXV4IGkgeHMgPSBtYXRjaCB4cygpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGF1eCAoaSsxKSB4c1xuICAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICAgIHJlc3VsdCBpblxuICBhdXggMCB4c1xuXG4oKiBbaXRlcjJdLCBbZm9sZF9sZWZ0Ml0sIFtmb3JfYWxsMl0sIFtleGlzdHMyXSwgW21hcDJdLCBbemlwXSB3b3JrIGFsc28gaW5cbiAgIHRoZSBjYXNlIHdoZXJlIHRoZSB0d28gc2VxdWVuY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHMuIFRoZXkgc3RvcCBhcyBzb29uXG4gICBhcyBvbmUgc2VxdWVuY2UgaXMgZXhoYXVzdGVkLiBUaGVpciBiZWhhdmlvciBpcyBzbGlnaHRseSBhc3ltbWV0cmljOiB3aGVuXG4gICBbeHNdIGlzIGVtcHR5LCB0aGV5IGRvIG5vdCBmb3JjZSBbeXNdOyBob3dldmVyLCB3aGVuIFt5c10gaXMgZW1wdHksIFt4c10gaXNcbiAgIGZvcmNlZCwgZXZlbiB0aG91Z2ggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gYXBwbGljYXRpb24gW3hzKCldIHR1cm5zIG91dFxuICAgdG8gYmUgdXNlbGVzcy4gKilcblxubGV0IHJlYyBpdGVyMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgpXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5O1xuICAgICAgICAgIGl0ZXIyIGYgeHMgeXNcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGFjY3VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgeCB5IGluXG4gICAgICAgICAgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXNcblxubGV0IHJlYyBmb3JfYWxsMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSAmJiBmb3JfYWxsMiBmIHhzIHlzXG5cbmxldCByZWMgZXhpc3RzMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5IHx8IGV4aXN0czIgZiB4cyB5c1xuXG5sZXQgcmVjIGVxdWFsIGVxIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgZXEgeCB5ICYmIGVxdWFsIGVxIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgIGZhbHNlXG5cbmxldCByZWMgY29tcGFyZSBjbXAgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgMFxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBsZXQgYyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjb21wYXJlIGNtcCB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXykgLT5cbiAgICAgIC0xXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgKzFcblxuXG5cbigqIFtpbml0X2F1eCBmIGkgal0gaXMgdGhlIHNlcXVlbmNlIFtmIGksIC4uLiwgZiAoai0xKV0uICopXG5cbmxldCByZWMgaW5pdF9hdXggZiBpIGogKCkgPVxuICBpZiBpIDwgaiB0aGVuIGJlZ2luXG4gICAgQ29ucyAoZiBpLCBpbml0X2F1eCBmIChpICsgMSkgailcbiAgZW5kXG4gIGVsc2VcbiAgICBOaWxcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU2VxLmluaXRcIlxuICBlbHNlXG4gICAgaW5pdF9hdXggZiAwIG5cblxubGV0IHJlYyByZXBlYXQgeCAoKSA9XG4gIENvbnMgKHgsIHJlcGVhdCB4KVxuXG5sZXQgcmVjIGZvcmV2ZXIgZiAoKSA9XG4gIENvbnMgKGYoKSwgZm9yZXZlciBmKVxuXG4oKiBUaGlzIHByZWxpbWluYXJ5IGRlZmluaXRpb24gb2YgW2N5Y2xlXSByZXF1aXJlcyB0aGUgc2VxdWVuY2UgW3hzXVxuICAgdG8gYmUgbm9uZW1wdHkuIEFwcGx5aW5nIGl0IHRvIGFuIGVtcHR5IHNlcXVlbmNlIHdvdWxkIHByb2R1Y2UgYVxuICAgc2VxdWVuY2UgdGhhdCBkaXZlcmdlcyB3aGVuIGl0IGlzIGZvcmNlZC4gKilcblxubGV0IHJlYyBjeWNsZV9ub25lbXB0eSB4cyAoKSA9XG4gIGFwcGVuZCB4cyAoY3ljbGVfbm9uZW1wdHkgeHMpICgpXG5cbigqIFtjeWNsZSB4c10gY2hlY2tzIHdoZXRoZXIgW3hzXSBpcyBlbXB0eSBhbmQsIGlmIHNvLCByZXR1cm5zIGFuIGVtcHR5XG4gICBzZXF1ZW5jZS4gT3RoZXJ3aXNlLCBbY3ljbGUgeHNdIHByb2R1Y2VzIG9uZSBjb3B5IG9mIFt4c10gZm9sbG93ZWRcbiAgIHdpdGggdGhlIGluZmluaXRlIHNlcXVlbmNlIFtjeWNsZV9ub25lbXB0eSB4c10uIFRodXMsIHRoZSBub25lbXB0aW5lc3NcbiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBqdXN0IG9uY2UuICopXG5cbmxldCBjeWNsZSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMnKSAtPlxuICAgICAgQ29ucyAoeCwgYXBwZW5kIHhzJyAoY3ljbGVfbm9uZW1wdHkgeHMpKVxuXG4oKiBbaXRlcmF0ZTEgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW2YgeCwgZiAoZiB4KSwgLi4uXS5cbiAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKGl0ZXJhdGUgZiB4KV0uXG4gICBbaXRlcmF0ZTFdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgaXRlcmF0ZTEgZiB4ICgpID1cbiAgbGV0IHkgPSBmIHggaW5cbiAgQ29ucyAoeSwgaXRlcmF0ZTEgZiB5KVxuXG4oKiBbaXRlcmF0ZSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbeCwgZiB4LCAuLi5dLiAqKVxuXG4oKiBUaGUgcmVhc29uIHdoeSB3ZSBnaXZlIHRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0sXG4gICBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIG5haXZlIGRlZmluaXRpb24gdGhhdCBtYXkgY29tZSB0byBtaW5kLCBpcyB0aGF0XG4gICB3ZSBhcmUgY2FyZWZ1bCB0byBhdm9pZCBldmFsdWF0aW5nIFtmIHhdIHVudGlsIHRoaXMgZnVuY3Rpb24gY2FsbCBpc1xuICAgYWN0dWFsbHkgbmVjZXNzYXJ5LiBUaGUgbmFpdmUgZGVmaW5pdGlvbiAobm90IHNob3duIGhlcmUpIGNvbXB1dGVzIHRoZVxuICAgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBzZXF1ZW5jZSwgW2YgeF0sIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzXG4gICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuICopXG5cbmxldCBpdGVyYXRlIGYgeCA9XG4gIGNvbnMgeCAoaXRlcmF0ZTEgZiB4KVxuXG5cblxubGV0IHJlYyBtYXBpX2F1eCBmIGkgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoZiBpIHgsIG1hcGlfYXV4IGYgKGkrMSkgeHMpXG5cbmxldFtAaW5saW5lXSBtYXBpIGYgeHMgPVxuICBtYXBpX2F1eCBmIDAgeHNcblxuKCogW3RhaWxfc2NhbiBmIHMgeHNdIGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKHNjYW4gZiBzIHhzKV0uXG4gICBbdGFpbF9zY2FuXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW3NjYW5dLiAqKVxuXG4oKiBUaGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW3NjYW5dIGlzIG1lYW50IHRvIGF2b2lkIGNvbXB1dGluZ1xuICAgZWxlbWVudHMgdG9vIGVhcmx5OyBzZWUgdGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgW2l0ZXJhdGUxXSBhbmQgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIHRhaWxfc2NhbiBmIHMgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IHMgPSBmIHMgeCBpblxuICAgICAgQ29ucyAocywgdGFpbF9zY2FuIGYgcyB4cylcblxubGV0IHNjYW4gZiBzIHhzID1cbiAgY29ucyBzICh0YWlsX3NjYW4gZiBzIHhzKVxuXG4oKiBbdGFrZV0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW3Rha2UgMCB4c10gcmV0dXJucyBbZW1wdHldXG4gICBpbW1lZGlhdGVseSwgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCByZWMgdGFrZV9hdXggbiB4cyA9XG4gIGlmIG4gPSAwIHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgIENvbnMgKHgsIHRha2VfYXV4IChuLTEpIHhzKVxuXG5sZXQgdGFrZSBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS50YWtlXCI7XG4gIHRha2VfYXV4IG4geHNcblxuKCogW2ZvcmNlX2Ryb3AgbiB4c10gaXMgZXF1aXZhbGVudCB0byBbZHJvcCBuIHhzICgpXS5cbiAgIFtmb3JjZV9kcm9wIG4geHNdIHJlcXVpcmVzIFtuID4gMF0uXG4gICBbZm9yY2VfZHJvcF0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtkcm9wXS4gKilcblxubGV0IHJlYyBmb3JjZV9kcm9wIG4geHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGV0IG4gPSBuIC0gMSBpblxuICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICB4cygpXG4gICAgICBlbHNlXG4gICAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG4oKiBbZHJvcF0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW2Ryb3AgMCB4c10gcmV0dXJucyBbeHNdIGltbWVkaWF0ZWx5LFxuICAgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCBkcm9wIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLmRyb3BcIlxuICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICB4c1xuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBmb3JjZV9kcm9wIG4geHNcblxubGV0IHJlYyB0YWtlX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gQ29ucyAoeCwgdGFrZV93aGlsZSBwIHhzKSBlbHNlIE5pbFxuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIGFzIG5vZGUgLT5cbiAgICAgIGlmIHAgeCB0aGVuIGRyb3Bfd2hpbGUgcCB4cyAoKSBlbHNlIG5vZGVcblxubGV0IHJlYyBncm91cCBlcSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChjb25zIHggKHRha2Vfd2hpbGUgKGVxIHgpIHhzKSwgZ3JvdXAgZXEgKGRyb3Bfd2hpbGUgKGVxIHgpIHhzKSlcblxuZXhjZXB0aW9uIEZvcmNlZF90d2ljZVxuXG5tb2R1bGUgU3VzcGVuc2lvbiA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egc3VzcGVuc2lvbiA9XG4gICAgdW5pdCAtPiAnYVxuXG4gICgqIENvbnZlcnNpb25zLiAqKVxuXG4gIGxldCB0b19sYXp5IDogJ2Egc3VzcGVuc2lvbiAtPiAnYSBMYXp5LnQgPVxuICAgIExhenkuZnJvbV9mdW5cbiAgICAoKiBmdW4gcyAtPiBsYXp5IChzKCkpICopXG5cbiAgbGV0IGZyb21fbGF6eSAocyA6ICdhIExhenkudCkgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBzXG5cbiAgKCogW21lbW9pemVdIHR1cm5zIGFuIGFyYml0cmFyeSBzdXNwZW5zaW9uIGludG8gYSBwZXJzaXN0ZW50IHN1c3BlbnNpb24uICopXG5cbiAgbGV0IG1lbW9pemUgKHMgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZyb21fbGF6eSAodG9fbGF6eSBzKVxuXG4gICgqIFtmYWlsdXJlXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBmYWlscyB3aGVuIGZvcmNlZC4gKilcblxuICBsZXQgZmFpbHVyZSA6IF8gc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBBIHN1c3BlbnNpb24gY3JlYXRlZCBieSBbb25jZV0gaGFzIGJlZW4gZm9yY2VkIHR3aWNlLiAqKVxuICAgICAgcmFpc2UgRm9yY2VkX3R3aWNlXG5cbiAgKCogSWYgW2ZdIGlzIGEgc3VzcGVuc2lvbiwgdGhlbiBbb25jZSBmXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBjYW4gYmUgZm9yY2VkXG4gICAgIGF0IG1vc3Qgb25jZS4gSWYgaXQgaXMgZm9yY2VkIG1vcmUgdGhhbiBvbmNlLCB0aGVuIFtGb3JjZWRfdHdpY2VdIGlzXG4gICAgIHJhaXNlZC4gKilcblxuICBsZXQgb25jZSAoZiA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgbGV0IGFjdGlvbiA9IEF0b21pYy5tYWtlIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEdldCB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHN0b3JlZCBpbiBbYWN0aW9uXSwgYW5kIHdyaXRlIHRoZVxuICAgICAgICAgZnVuY3Rpb24gW2ZhaWx1cmVdIGluIGl0cyBwbGFjZSwgc28gdGhlIG5leHQgYWNjZXNzIHdpbGwgcmVzdWx0XG4gICAgICAgICBpbiBhIGNhbGwgdG8gW2ZhaWx1cmUoKV0uICopXG4gICAgICBsZXQgZiA9IEF0b21pYy5leGNoYW5nZSBhY3Rpb24gZmFpbHVyZSBpblxuICAgICAgZigpXG5cbmVuZCAoKiBTdXNwZW5zaW9uICopXG5cbmxldCByZWMgbWVtb2l6ZSB4cyA9XG4gIFN1c3BlbnNpb24ubWVtb2l6ZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgbWVtb2l6ZSB4cylcbiAgKVxuXG5sZXQgcmVjIG9uY2UgeHMgPVxuICBTdXNwZW5zaW9uLm9uY2UgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG9uY2UgeHMpXG4gIClcblxuXG5sZXQgcmVjIHppcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKCh4LCB5KSwgemlwIHhzIHlzKVxuXG5sZXQgcmVjIG1hcDIgZiB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKGYgeCB5LCBtYXAyIGYgeHMgeXMpXG5cbmxldCByZWMgaW50ZXJsZWF2ZSB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgeXMoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoeCwgaW50ZXJsZWF2ZSB5cyB4cylcblxuKCogW3NvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIHlzXS5cblxuICAgW3NvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIHhzIChjb25zIHkgeXMpXS5cblxuICAgW3NvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSAoY29ucyB5IHlzKV0uXG5cbiAgIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyBidWlsZGluZyBibG9ja3MgaW4gdGhlIGRlZmluaXRpb25cbiAgIG9mIFtzb3J0ZWRfbWVyZ2VdLiAqKVxuXG5sZXQgcmVjIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzICgpID1cbiAgbWF0Y2ggeXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh4LCB4cylcbiAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHksIHlzKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXMgPVxuICBpZiBjbXAgeCB5IDw9IDAgdGhlblxuICAgIENvbnMgKHgsIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzKVxuICBlbHNlXG4gICAgQ29ucyAoeSwgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMpXG5cbmxldCBzb3J0ZWRfbWVyZ2UgY21wIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gICAgfCBOaWwsIE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IE5pbCwgY1xuICAgIHwgYywgTmlsIC0+XG4gICAgICAgIGNcbiAgICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5cbmxldCByZWMgbWFwX2ZzdCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoeCwgXyksIHh5cykgLT5cbiAgICAgIENvbnMgKHgsIG1hcF9mc3QgeHlzKVxuXG5sZXQgcmVjIG1hcF9zbmQgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKF8sIHkpLCB4eXMpIC0+XG4gICAgICBDb25zICh5LCBtYXBfc25kIHh5cylcblxubGV0IHVuemlwIHh5cyA9XG4gIG1hcF9mc3QgeHlzLCBtYXBfc25kIHh5c1xuXG5sZXQgc3BsaXQgPVxuICB1bnppcFxuXG4oKiBbZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgIFtmaWx0ZXJfbWFwIEVpdGhlci5maW5kX2xlZnQgKG1hcCBmIHhzKV0uICopXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgeSAtPlxuICAgICAgICAgIENvbnMgKHksIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKClcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IHogLT5cbiAgICAgICAgICBDb25zICh6LCBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMpXG5cbmxldCBwYXJ0aXRpb25fbWFwIGYgeHMgPVxuICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyxcbiAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzXG5cbmxldCBwYXJ0aXRpb24gcCB4cyA9XG4gIGZpbHRlciBwIHhzLCBmaWx0ZXIgKGZ1biB4IC0+IG5vdCAocCB4KSkgeHNcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW3BlZWwgeHNzXSBpcyBhIHBhaXIgb2ZcbiAgIHRoZSBmaXJzdCBjb2x1bW4gKGEgc2VxdWVuY2Ugb2YgZWxlbWVudHMpIGFuZCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgbWF0cml4IChhIHNlcXVlbmNlIG9mIHNob3J0ZXIgcm93cykuIFRoZXNlIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBBbiBlbXB0eSByb3cgaXMgaWdub3JlZC4gKilcblxuKCogQmVjYXVzZSBbcGVlbF0gdXNlcyBbdW56aXBdLCBpdHMgYXJndW1lbnQgbXVzdCBiZSBwZXJzaXN0ZW50LiBUaGUgc2FtZVxuICAgcmVtYXJrIGFwcGxpZXMgdG8gW3RyYW5zcG9zZV0sIFtkaWFnb25hbHNdLCBbcHJvZHVjdF0sIGV0Yy4gKilcblxubGV0IHBlZWwgeHNzID1cbiAgdW56aXAgKGZpbHRlcl9tYXAgdW5jb25zIHhzcylcblxubGV0IHJlYyB0cmFuc3Bvc2UgeHNzICgpID1cbiAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgeHNzIGluXG4gIGlmIGlzX2VtcHR5IGhlYWRzIHRoZW4gYmVnaW5cbiAgICBhc3NlcnQgKGlzX2VtcHR5IHRhaWxzKTtcbiAgICBOaWxcbiAgZW5kXG4gIGVsc2VcbiAgICBDb25zIChoZWFkcywgdHJhbnNwb3NlIHRhaWxzKVxuXG4oKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gW2RpYWdvbmFsc10gdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQsIFtyZW1haW5kZXJzXSxcbiAgIHdoaWNoIGNvbnRhaW5zIHRoZSByZW1haW5kZXJzIG9mIHRoZSByb3dzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgIGRpc2NvdmVyZWQuICopXG5cbmxldCByZWMgZGlhZ29uYWxzIHJlbWFpbmRlcnMgeHNzICgpID1cbiAgbWF0Y2ggeHNzKCkgd2l0aFxuICB8IENvbnMgKHhzLCB4c3MpIC0+XG4gICAgICBiZWdpbiBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgbm9uZW1wdHkgcm93IFt4IDo6IHhzXS4gVGh1cywgdGhlIG5leHQgZGlhZ29uYWxcbiAgICAgICAgICAgICBpcyBbeCA6OiBoZWFkc106IHRoaXMgZGlhZ29uYWwgYmVnaW5zIHdpdGggW3hdIGFuZCBjb250aW51ZXMgd2l0aFxuICAgICAgICAgICAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIGV2ZXJ5IHJvdyBpbiBbcmVtYWluZGVyc10uIEluIHRoZSByZWN1cnNpdmVcbiAgICAgICAgICAgICBjYWxsLCB0aGUgYXJndW1lbnQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIFt4cyA6OlxuICAgICAgICAgICAgIHRhaWxzXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3csIFt4c10sXG4gICAgICAgICAgICAgYW5kIHRoYXQgd2Uga2VlcCB0aGUgdGFpbHMgb2YgdGhlIHByZS1leGlzdGluZyByZW1haW5pbmcgcm93cy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoY29ucyB4IGhlYWRzLCBkaWFnb25hbHMgKGNvbnMgeHMgdGFpbHMpIHhzcylcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgZW1wdHkgcm93LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlhZ29uYWwgaXNcbiAgICAgICAgICAgICBqdXN0IFtoZWFkc10sIGFuZCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGgganVzdCBbdGFpbHNdLFxuICAgICAgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3cuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGhlYWRzLCBkaWFnb25hbHMgdGFpbHMgeHNzKVxuICAgICAgZW5kXG4gIHwgTmlsIC0+XG4gICAgICAoKiBUaGVyZSBhcmUgbm8gbW9yZSByb3dzIHRvIGJlIGRpc2NvdmVyZWQuIFRoZXJlIHJlbWFpbnMgdG8gZXhoYXVzdFxuICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgdHJhbnNwb3NlIHJlbWFpbmRlcnMgKClcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW2RpYWdvbmFscyB4c3NdIGlzXG4gICB0aGUgc2VxdWVuY2Ugb2YgaXRzIGRpYWdvbmFscy5cblxuICAgVGhlIGZpcnN0IGRpYWdvbmFsIGNvbnRhaW5zIGp1c3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBmaXJzdCByb3cuIFRoZSBzZWNvbmQgZGlhZ29uYWwgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBzZWNvbmQgcm93IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHJvdzsgYW5kIHNvIG9uLlxuICAgVGhpcyBraW5kIG9mIGRpYWdvbmFsIGlzIGluIGZhY3Qgc29tZXRpbWVzIGtub3duIGFzIGFuIGFudGlkaWFnb25hbC5cblxuICAgLSBFdmVyeSBkaWFnb25hbCBpcyBhIGZpbml0ZSBzZXF1ZW5jZS5cbiAgIC0gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBmaW5pdGUgKGluIGVpdGhlciBkaXJlY3Rpb24pLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIG11c3QgYmUgcGVyc2lzdGVudC4gKilcblxubGV0IGRpYWdvbmFscyB4c3MgPVxuICBkaWFnb25hbHMgZW1wdHkgeHNzXG5cbmxldCBtYXBfcHJvZHVjdCBmIHhzIHlzID1cbiAgY29uY2F0IChkaWFnb25hbHMgKFxuICAgIG1hcCAoZnVuIHggLT5cbiAgICAgIG1hcCAoZnVuIHkgLT5cbiAgICAgICAgZiB4IHlcbiAgICAgICkgeXNcbiAgICApIHhzXG4gICkpXG5cbmxldCBwcm9kdWN0IHhzIHlzID1cbiAgbWFwX3Byb2R1Y3QgKGZ1biB4IHkgLT4gKHgsIHkpKSB4cyB5c1xuXG5sZXQgb2ZfZGlzcGVuc2VyIGl0ID1cbiAgbGV0IHJlYyBjICgpID1cbiAgICBtYXRjaCBpdCgpIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgTmlsXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQ29ucyAoeCwgYylcbiAgaW5cbiAgY1xuXG5sZXQgdG9fZGlzcGVuc2VyIHhzID1cbiAgbGV0IHMgPSByZWYgeHMgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggKCFzKSgpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgcyA6PSB4cztcbiAgICAgICAgU29tZSB4XG5cblxuXG5sZXQgcmVjIGludHMgaSAoKSA9XG4gIENvbnMgKGksIGludHMgKGkgKyAxKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG5cbigqIFVURiBjb2RlY3MgdG9vbHMgKilcblxudHlwZSB1dGZfZGVjb2RlID0gaW50XG4oKiBUaGlzIGlzIGFuIGludCBbMHhEVVVVVVVVXSBkZWNvbXBvc2VkIGFzIGZvbGxvd3M6XG4gICAtIFtEXSBpcyBmb3VyIGJpdHMgZm9yIGRlY29kZSBpbmZvcm1hdGlvbiwgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCBpZiB0aGVcbiAgICAgZGVjb2RlIGlzIHZhbGlkLiBUaGUgdGhyZWUgbG93ZXIgYml0cyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgIGZyb20gdGhlIHNvdXJjZSB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGRlY29kZS5cbiAgIC0gW1VVVVVVVV0gaXMgdGhlIGRlY29kZWQgVW5pY29kZSBjaGFyYWN0ZXIgb3IgdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnRcbiAgICAgY2hhcmFjdGVyIFUrRkZGRCBpZiBmb3IgaW52YWxpZCBkZWNvZGVzLiAqKVxuXG5sZXQgdmFsaWRfYml0ID0gMjdcbmxldCBkZWNvZGVfYml0cyA9IDI0XG5cbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2lzX3ZhbGlkIGQgPSAoZCBsc3IgdmFsaWRfYml0KSA9IDFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2xlbmd0aCBkID0gKGQgbHNyIGRlY29kZV9iaXRzKSBsYW5kIDBiMTExXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV91Y2hhciBkID0gdW5zYWZlX29mX2ludCAoZCBsYW5kIDB4RkZGRkZGKVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGUgbiB1ID0gKCg4IGxvciBuKSBsc2wgZGVjb2RlX2JpdHMpIGxvciAodG9faW50IHUpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pbnZhbGlkIG4gPSAobiBsc2wgZGVjb2RlX2JpdHMpIGxvciByZXBcblxubGV0IHV0Zl84X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+IDFcbnwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDNcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgdXRmXzE2X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0W0B0YWlsX21vZF9jb25zXSByZWMgaW5pdCBpIGxhc3QgZiA9XG4gIGlmIGkgPiBsYXN0IHRoZW4gW11cbiAgZWxzZSBpZiBpID0gbGFzdCB0aGVuIFtmIGldXG4gIGVsc2VcbiAgICBsZXQgcjEgPSBmIGkgaW5cbiAgICBsZXQgcjIgPSBmIChpKzEpIGluXG4gICAgcjEgOjogcjIgOjogaW5pdCAoaSsyKSBsYXN0IGZcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGluaXQgMCAobGVuIC0gMSkgZlxuXG5sZXQgcmVjIGZsYXR0ZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgbDo6ciAtPiBsIEAgZmxhdHRlbiByXG5cbmxldCBjb25jYXQgPSBmbGF0dGVuXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IFthMV0gLT5cbiAgICAgIGxldCByMSA9IGYgYTEgaW5cbiAgICAgIFtyMV1cbiAgfCBhMTo6YTI6OmwgLT5cbiAgICAgIGxldCByMSA9IGYgYTEgaW5cbiAgICAgIGxldCByMiA9IGYgYTIgaW5cbiAgICAgIHIxOjpyMjo6bWFwIGYgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBtYXBpIGkgZiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW11cbiAgfCBbYTFdIC0+XG4gICAgICBsZXQgcjEgPSBmIGkgYTEgaW5cbiAgICAgIFtyMV1cbiAgfCBhMTo6YTI6OmwgLT5cbiAgICAgIGxldCByMSA9IGYgaSBhMSBpblxuICAgICAgbGV0IHIyID0gZiAoaSsxKSBhMiBpblxuICAgICAgcjE6OnIyOjptYXBpIChpKzIpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIG1hcDIgZiBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChbYTFdLCBbYjFdKSAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBiMSBpblxuICAgICAgW3IxXVxuICB8IChhMTo6YTI6OmwxLCBiMTo6YjI6OmwyKSAtPlxuICAgICAgbGV0IHIxID0gZiBhMSBiMSBpblxuICAgICAgbGV0IHIyID0gZiBhMiBiMiBpblxuICAgICAgcjE6OnIyOjptYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IGZpbmRfaW5kZXggcCA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgcCBhIHRoZW4gU29tZSBpIGVsc2UgYXV4IChpKzEpIGwgaW5cbiAgYXV4IDBcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX21hcGkgZiA9XG4gIGxldCByZWMgYXV4IGkgPSBmdW5jdGlvblxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggZiBpIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gYXV4IChpKzEpIGxcbiAgICAgZW5kIGluXG4gIGF1eCAwXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGZpbmRfYWxsIHAgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHggOjogZmluZF9hbGwgcCBsIGVsc2UgZmluZF9hbGwgcCBsXG5cbmxldCBmaWx0ZXIgPSBmaW5kX2FsbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaWx0ZXJpIHAgaSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4OjpsIC0+XG4gICAgICBsZXQgaScgPSBpICsgMSBpblxuICAgICAgaWYgcCBpIHggdGhlbiB4IDo6IGZpbHRlcmkgcCBpJyBsIGVsc2UgZmlsdGVyaSBwIGknIGxcblxubGV0IGZpbHRlcmkgcCBsID0gZmlsdGVyaSBwIDAgbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiBsIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBsXG4gICAgICB8IFNvbWUgdiAtPiB2IDo6IGZpbHRlcl9tYXAgZiBsXG5cbmxldFtAdGFpbF9tb2RfY29uc10gcmVjIGNvbmNhdF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB4Ojp4cyAtPiBwcmVwZW5kX2NvbmNhdF9tYXAgKGYgeCkgZiB4c1xuYW5kW0B0YWlsX21vZF9jb25zXSBwcmVwZW5kX2NvbmNhdF9tYXAgeXMgZiB4cyA9XG4gIG1hdGNoIHlzIHdpdGhcbiAgfCBbXSAtPiBjb25jYXRfbWFwIGYgeHNcbiAgfCB5IDo6IHlzIC0+IHkgOjogcHJlcGVuZF9jb25jYXRfbWFwIHlzIGYgeHNcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2N1IGwgPVxuICBsZXQgcmVjIGF1eCBhY2N1IGxfYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1LCByZXYgbF9hY2N1XG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGFjY3UsIHggPSBmIGFjY3UgeCBpblxuICAgICAgICBhdXggYWNjdSAoeCA6OiBsX2FjY3UpIGwgaW5cbiAgYXV4IGFjY3UgW10gbFxuXG5sZXQgcGFydGl0aW9uIHAgbCA9XG4gIGxldCByZWMgcGFydCB5ZXMgbm8gPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgeWVzLCByZXYgbm8pXG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIHBhcnQgKHggOjogeWVzKSBubyBsIGVsc2UgcGFydCB5ZXMgKHggOjogbm8pIGwgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCBwYXJ0aXRpb25fbWFwIHAgbCA9XG4gIGxldCByZWMgcGFydCBsZWZ0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAocmV2IGxlZnQsIHJldiByaWdodClcbiAgfCB4IDo6IGwgLT5cbiAgICAgYmVnaW4gbWF0Y2ggcCB4IHdpdGhcbiAgICAgICB8IEVpdGhlci5MZWZ0IHYgLT4gcGFydCAodiA6OiBsZWZ0KSByaWdodCBsXG4gICAgICAgfCBFaXRoZXIuUmlnaHQgdiAtPiBwYXJ0IGxlZnQgKHYgOjogcmlnaHQpIGxcbiAgICAgZW5kXG4gIGluXG4gIHBhcnQgW10gW10gbFxuXG5sZXQgcmVjIHNwbGl0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoW10sIFtdKVxuICB8ICh4LHkpOjpsIC0+XG4gICAgICBsZXQgKHJ4LCByeSkgPSBzcGxpdCBsIGluICh4OjpyeCwgeTo6cnkpXG5cbmxldCByZWMgY29tYmluZSBsMSBsMiA9XG4gIG1hdGNoIChsMSwgbDIpIHdpdGhcbiAgICAoW10sIFtdKSAtPiBbXVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gKGExLCBhMikgOjogY29tYmluZSBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuY29tYmluZVwiXG5cbigqKiBzb3J0aW5nICopXG5cbmxldCByZWMgbWVyZ2UgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbDIgLT4gbDJcbiAgfCBsMSwgW10gLT4gbDFcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNtcCBoMSBoMiA8PSAwXG4gICAgICB0aGVuIGgxIDo6IG1lcmdlIGNtcCB0MSBsMlxuICAgICAgZWxzZSBoMiA6OiBtZXJnZSBjbXAgbDEgdDJcblxuXG5sZXQgc3RhYmxlX3NvcnQgY21wIGwgPVxuICBsZXQgcmVjIHJldl9tZXJnZSBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgaWYgY21wIGgxIGgyID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyIDw9IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuXG4gICAgICAgICAgICBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPD0gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgZWxzZSBpZiBjbXAgeDIgeDMgPD0gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHJldl9zb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHJldl9zb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2VfcmV2IHMxIHMyIFtdLCB0bClcbiAgYW5kIHJldl9zb3J0IG4gbCA9XG4gICAgbWF0Y2ggbiwgbCB3aXRoXG4gICAgfCAyLCB4MSA6OiB4MiA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9IGlmIGNtcCB4MSB4MiA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBjbXAgeDEgeDIgPiAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDE7IHgyOyB4M11cbiAgICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA+IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgc29ydCA9IHN0YWJsZV9zb3J0XG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCogTm90ZTogb24gYSB2ZXJ5IGxvbmcgbGlzdCAobGVuZ3RoIG92ZXIgYWJvdXQgMTAwMDAwKSwgaXQgdXNlZCB0byBiZVxuICAgZmFzdGVyIHRvIGNvbnZlcnQgdGhlIGxpc3QgdG8gYW4gYXJyYXksIHNvcnQgdGhlIGFycmF5LCBhbmQgY29udmVydFxuICAgYmFjaywgdHJ1bmNhdGluZyB0aGUgYXJyYXkgb2JqZWN0IGFmdGVyIHByZXBlbmRpbmcgZWFjaCB0aG91c2FuZFxuICAgZW50cmllcyB0byB0aGUgcmVzdWx0aW5nIGxpc3QuIEltcG9zc2libGUgbm93IHRoYXQgT2JqLnRydW5jYXRlIGhhc1xuICAgYmVlbiByZW1vdmVkLiAqKVxuXG4oKiogc29ydGluZyArIHJlbW92aW5nIGR1cGxpY2F0ZXMgKilcblxubGV0IHNvcnRfdW5pcSBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZSB0MSB0MiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiByZXZfbWVyZ2UgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZSBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgcmV2X21lcmdlX3JldiBsMSBsMiBhY2N1ID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIGwyIC0+IHJldl9hcHBlbmQgbDIgYWNjdVxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgbDEgYWNjdVxuICAgIHwgaDE6OnQxLCBoMjo6dDIgLT5cbiAgICAgICAgbGV0IGMgPSBjbXAgaDEgaDIgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiByZXZfbWVyZ2VfcmV2IHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZV9yZXYgdDEgbDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIHJldl9tZXJnZV9yZXYgbDEgdDIgKGgyOjphY2N1KVxuICBpblxuICBsZXQgcmVjIHNvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxXSBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4Ml0gZWxzZSBbeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCAzLCB4MSA6OiB4MiA6OiB4MyA6OiB0bCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgbGV0IGMgPSBjbXAgeDEgeDIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDJdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzXSBlbHNlIFt4MzsgeDJdXG4gICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDE7IHgyXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgzOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgxOyB4Ml1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MyBpblxuICAgICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDI7IHgxXVxuICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgYyA9IGNtcCB4MiB4MyBpblxuICAgICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICAgIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDI7IHgzOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSBzb3J0IG4yIGwyIGluXG4gICAgICAgIChyZXZfbWVyZ2UgczEgczIgW10sIHRsKVxuICBpblxuICBsZXQgbGVuID0gbGVuZ3RoIGwgaW5cbiAgaWYgbGVuIDwgMiB0aGVuIGwgZWxzZSBmc3QgKHNvcnQgbGVuIGwpXG5cblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aHMgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgXyA6OiBsMSwgXyA6OiBsMiAtPiBjb21wYXJlX2xlbmd0aHMgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyA6OiBfIC0+IGZhbHNlXG5cbigqKiB7MSBDb21wYXJpc29ufSAqKVxuXG4oKiBOb3RlOiB3ZSBhcmUgKm5vdCogc2hvcnRjdXR0aW5nIHRoZSBsaXN0IGJ5IHVzaW5nXG4gICBbTGlzdC5jb21wYXJlX2xlbmd0aHNdIGZpcnN0OyB0aGlzIG1heSBiZSBzbG93ZXIgb24gbG9uZyBsaXN0c1xuICAgaW1tZWRpYXRlbHkgc3RhcnQgd2l0aCBkaXN0aW5jdCBlbGVtZW50cy4gSXQgaXMgYWxzbyBpbmNvcnJlY3QgZm9yXG4gICBbY29tcGFyZV0gYmVsb3csIGFuZCBpdCBpcyBiZXR0ZXIgKHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZSkgdG9cbiAgIHVzZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgYm90aCBmdW5jdGlvbnMuICopXG5sZXQgcmVjIGVxdWFsIGVxIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IFtdLCBfOjpfIHwgXzo6XywgW10gLT4gZmFsc2VcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPiBlcSBhMSBhMiAmJiBlcXVhbCBlcSBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfOjpfIC0+IC0xXG4gIHwgXzo6XywgW10gLT4gMVxuICB8IGExOjpsMSwgYTI6OmwyIC0+XG4gICAgbGV0IGMgPSBjbXAgYTEgYTIgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjXG4gICAgZWxzZSBjb21wYXJlIGNtcCBsMSBsMlxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGwgPVxuICBsZXQgcmVjIGF1eCBsICgpID0gbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBTZXEuTmlsXG4gICAgfCB4IDo6IHRhaWwgLT4gU2VxLkNvbnMgKHgsIGF1eCB0YWlsKVxuICBpblxuICBhdXggbFxuXG5sZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBvZl9zZXEgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+IFtdXG4gIHwgU2VxLkNvbnMgKHgxLCBzZXEpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBzZXEgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IFt4MV1cbiAgICAgIHwgU2VxLkNvbnMgKHgyLCBzZXEpIC0+IHgxIDo6IHgyIDo6IG9mX3NlcSBzZXFcbiAgICAgIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5leHRlcm5hbCBuZWcgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsIGFkZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIHN1YiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlc3ViaW50XCJcbmV4dGVybmFsIG11bCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsIGRpdiA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsIHJlbSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmV4dGVybmFsIHN1Y2MgOiBpbnQgLT4gaW50ID0gXCIlc3VjY2ludFwiXG5leHRlcm5hbCBwcmVkIDogaW50IC0+IGludCA9IFwiJXByZWRpbnRcIlxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcbmV4dGVybmFsIGxvZ2FuZCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsIGxvZ29yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVvcmludFwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5sZXQgbG9nbm90IHggPSBsb2d4b3IgeCAoLTEpXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc3JpbnRcIlxubGV0IGVxdWFsIDogaW50IC0+IGludCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBTdGRsaWIuY29tcGFyZVxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5leHRlcm5hbCB0b19mbG9hdCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcblxuKCpcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IG9mX3N0cmluZyBzID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcykgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxubGV0IHRvX3N0cmluZyB4ID0gZm9ybWF0X2ludCBcIiVkXCIgeFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCeXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBzdHJpbmcubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IGJ5dGVzIC0+IGludCA9IFwiJWJ5dGVzX2xlbmd0aFwiXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc19zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9maWxsX2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV90b19zdHJpbmcgOiBieXRlcyAtPiBzdHJpbmcgPSBcIiVieXRlc190b19zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX29mX3N0cmluZyA6IHN0cmluZyAtPiBieXRlcyA9IFwiJWJ5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5sZXQgbWFrZSBuIGMgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIHVuc2FmZV9maWxsIHMgMCBuIGM7XG4gIHNcblxubGV0IGluaXQgbiBmID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHMgaSAoZiBpKVxuICBkb25lO1xuICBzXG5cbmxldCBlbXB0eSA9IGNyZWF0ZSAwXG5cbmxldCBjb3B5IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHMgMCByIDAgbGVuO1xuICByXG5cbmxldCB0b19zdHJpbmcgYiA9IHVuc2FmZV90b19zdHJpbmcgKGNvcHkgYilcbmxldCBvZl9zdHJpbmcgcyA9IGNvcHkgKHVuc2FmZV9vZl9zdHJpbmcgcylcblxubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5zdWIgLyBCeXRlcy5zdWJcIlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgcyBvZnMgciAwIGxlbjtcbiAgICByXG4gIGVuZFxuXG5sZXQgc3ViX3N0cmluZyBiIG9mcyBsZW4gPSB1bnNhZmVfdG9fc3RyaW5nIChzdWIgYiBvZnMgbGVuKVxuXG4oKiBhZGRpdGlvbiB3aXRoIGFuIG92ZXJmbG93IGNoZWNrICopXG5sZXQgKCsrKSBhIGIgPVxuICBsZXQgYyA9IGEgKyBiIGluXG4gIG1hdGNoIGEgPCAwLCBiIDwgMCwgYyA8IDAgd2l0aFxuICB8IHRydWUgLCB0cnVlICwgZmFsc2VcbiAgfCBmYWxzZSwgZmFsc2UsIHRydWUgIC0+IGludmFsaWRfYXJnIFwiQnl0ZXMuZXh0ZW5kXCIgKCogb3ZlcmZsb3cgKilcbiAgfCBfIC0+IGNcblxubGV0IGV4dGVuZCBzIGxlZnQgcmlnaHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgKysgbGVmdCArKyByaWdodCBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgbGV0IChzcmNvZmYsIGRzdG9mZikgPSBpZiBsZWZ0IDwgMCB0aGVuIC1sZWZ0LCAwIGVsc2UgMCwgbGVmdCBpblxuICBsZXQgY3B5bGVuID0gSW50Lm1pbiAobGVuZ3RoIHMgLSBzcmNvZmYpIChsZW4gLSBkc3RvZmYpIGluXG4gIGlmIGNweWxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCBzIHNyY29mZiByIGRzdG9mZiBjcHlsZW47XG4gIHJcblxubGV0IGZpbGwgcyBvZnMgbGVuIGMgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5maWxsIC8gQnl0ZXMuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgcyBvZnMgbGVuIGNcblxubGV0IGJsaXQgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IHMxIG9mczEgczIgb2ZzMiBsZW5cblxubGV0IGJsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBzdHJpbmdfbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX2JsaXRfc3RyaW5nIHMxIG9mczEgczIgb2ZzMiBsZW5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkJ5dGVzLmNvbmNhdFwiXG5cbmxldCByZWMgc3VtX2xlbmd0aHMgYWNjIHNlcGxlbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjXG4gIHwgaGQgOjogW10gLT4gbGVuZ3RoIGhkICsgYWNjXG4gIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgc2VwbGVuICsgYWNjKSBhY2MpIHNlcGxlbiB0bFxuXG5sZXQgcmVjIHVuc2FmZV9ibGl0cyBkc3QgcG9zIHNlcCBzZXBsZW4gPSBmdW5jdGlvblxuICAgIFtdIC0+IGRzdFxuICB8IGhkIDo6IFtdIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpOyBkc3RcbiAgfCBoZCA6OiB0bCAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTtcbiAgICB1bnNhZmVfYmxpdCBzZXAgMCBkc3QgKHBvcyArIGxlbmd0aCBoZCkgc2VwbGVuO1xuICAgIHVuc2FmZV9ibGl0cyBkc3QgKHBvcyArIGxlbmd0aCBoZCArIHNlcGxlbikgc2VwIHNlcGxlbiB0bFxuXG5sZXQgY29uY2F0IHNlcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZW1wdHlcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluXG4gICAgICAgICAgdW5zYWZlX2JsaXRzXG4gICAgICAgICAgICAoY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgczEgczIgPVxuICBsZXQgbDEgPSBsZW5ndGggczEgaW5cbiAgbGV0IGwyID0gbGVuZ3RoIHMyIGluXG4gIGxldCByID0gY3JlYXRlIChsMSArIGwyKSBpblxuICB1bnNhZmVfYmxpdCBzMSAwIHIgMCBsMTtcbiAgdW5zYWZlX2JsaXQgczIgMCByIGwxIGwyO1xuICByXG5cblxuZXh0ZXJuYWwgY2hhcl9jb2RlOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGNoYXJfY2hyOiBpbnQgLT4gY2hhciA9IFwiJWlkZW50aXR5XCJcblxubGV0IGlzX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFwwMTInIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHQnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cbmxldCB0cmltIHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBsZXQgaiA9IHJlZiAobGVuIC0gMSkgaW5cbiAgd2hpbGUgIWogPj0gIWkgJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaikgZG9cbiAgICBkZWNyIGpcbiAgZG9uZTtcbiAgaWYgIWogPj0gIWkgdGhlblxuICAgIHN1YiBzICFpICghaiAtICFpICsgMSlcbiAgZWxzZVxuICAgIGVtcHR5XG5cbmxldCB1bnNhZmVfZXNjYXBlIHMgPVxuICAoKiBXZSBwZXJmb3JtIHR3byBwYXNzZXMgb24gdGhlIGlucHV0IHNlcXVlbmNlLCBvbmUgdG8gY29tcHV0ZSB0aGVcbiAgICAgcmVzdWx0IHNpemUgYW5kIG9uZSB0byB3cml0ZSB0aGUgcmVzdWx0LlxuXG4gICAgICMxMTUwOCwgIzExNTA5OiBUaGlzIGxvZ2ljIHdvdWxkIGJlIGluY29ycmVjdCBpbiBwcmVzZW5jZSBvZlxuICAgICBjb25jdXJyZW50IG1vZGlmaWNhdGlvbiB0byB0aGUgaW5wdXQsIG1ha2luZyB0aGUgdXNlIG9mXG4gICAgIFt1bnNhZmVfc2V0XSBiZWxvdyBtZW1vcnktdW5zYWZlLlxuXG4gICAgIFByZWNvbmRpdGlvbjogVGhpcyBmdW5jdGlvbiBtYXkgYmUgc2FmZWx5IGNhbGxlZCBvbjpcbiAgICAgLSBhbiBpbW11dGFibGUgYnl0ZSBzZXF1ZW5jZVxuICAgICAtIGEgdW5pcXVlbHktb3duZWQgYnl0ZSBzZXF1ZW5jZSAodGhlIGZ1bmN0aW9uIHRha2VzIG93bmVyc2hpcClcblxuICAgICBJbiBlaXRoZXIgY2FzZSB3ZSByZXR1cm4gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlLlxuICAqKVxuICBsZXQgbiA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBuIDo9ICFuICtcbiAgICAgIChtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICB8IF8gLT4gNClcbiAgZG9uZTtcbiAgaWYgIW4gPSBsZW5ndGggcyB0aGVuIHNcbiAgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBlc2NhcGVkIGIgPVxuICBsZXQgYiA9IGNvcHkgYiBpblxuICAoKiBXZSBjb3B5IG91ciBpbnB1dCB0byBvYnRhaW4gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlIFtiXVxuICAgICB0byBzYXRpc2Z5IFt1bnNhZmVfZXNjYXBlXSdzIHByZWNvbmRpdGlvbiAqKVxuICB1bnNhZmVfZXNjYXBlIGJcblxubGV0IG1hcCBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBtYXBpIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIHggPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgciA6PSBmICh1bnNhZmVfZ2V0IGEgaSkgIXJcbiAgZG9uZTtcbiAgIXJcblxubGV0IGV4aXN0cyBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgZm9yX2FsbCBwIHMgPVxuICBsZXQgbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIGxvb3AgKHN1Y2MgaSlcbiAgICBlbHNlIGZhbHNlIGluXG4gIGxvb3AgMFxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxubGV0IGFwcGx5MSBmIHMgPVxuICBpZiBsZW5ndGggcyA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNvcHkgcyBpblxuICAgIHVuc2FmZV9zZXQgciAwIChmKHVuc2FmZV9nZXQgcyAwKSk7XG4gICAgclxuICBlbmRcblxubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuXG50eXBlIHQgPSBieXRlc1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2J5dGVzX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzcGxpdF9vbl9jaGFyIHNlcCBzID1cbiAgbGV0IHIgPSByZWYgW10gaW5cbiAgbGV0IGogPSByZWYgKGxlbmd0aCBzKSBpblxuICBmb3IgaSA9IGxlbmd0aCBzIC0gMSBkb3dudG8gMCBkb1xuICAgIGlmIHVuc2FmZV9nZXQgcyBpID0gc2VwIHRoZW4gYmVnaW5cbiAgICAgIHIgOj0gc3ViIHMgKGkgKyAxKSAoIWogLSBpIC0gMSkgOjogIXI7XG4gICAgICBqIDo9IGlcbiAgICBlbmRcbiAgZG9uZTtcbiAgc3ViIHMgMCAhaiA6OiAhclxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2J5dGVzX2dldDMyXCJcbmV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYnl0ZXNfZ2V0NjRcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX2dldF91aW50MTZfbmUgYiBpXG4gIGVsc2Ugc3dhcDE2ICh1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGkpXG5cbmxldCBnZXRfaW50OCBiIGkgPVxuICAoKGdldF91aW50OCBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gOCkpIGFzciAoU3lzLmludF9zaXplIC0gOClcblxubGV0IGdldF91aW50MTZfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfdWludDE2X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF9pbnQxNl9uZSBiIGkgPVxuICAoKGdldF91aW50MTZfbmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9sZSBiIGkgPVxuICAoKGdldF91aW50MTZfbGUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9iZSBiIGkgPVxuICAoKGdldF91aW50MTZfYmUgYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQzMl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50MzJfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSB4XG5cbmxldCB1bnNhZmVfc2V0X3VpbnQxNl9iZSBiIGkgeCA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHggZWxzZVxuICB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuXG5sZXQgc2V0X2ludDE2X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MTZfbmUgYiBpIChzd2FwMTYgeClcbiAgZWxzZSBzZXRfaW50MTZfbmUgYiBpIHhcblxubGV0IHNldF9pbnQxNl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50MzJfbmUgYiBpIChzd2FwMzIgeClcbiAgZWxzZSBzZXRfaW50MzJfbmUgYiBpIHhcblxubGV0IHNldF9pbnQzMl9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2xlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzZXRfaW50NjRfbmUgYiBpIChzd2FwNjQgeClcbiAgZWxzZSBzZXRfaW50NjRfbmUgYiBpIHhcblxubGV0IHNldF9pbnQ2NF9iZSBiIGkgeCA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X3VpbnQ4ID0gc2V0X2ludDhcbmxldCBzZXRfdWludDE2X25lID0gc2V0X2ludDE2X25lXG5sZXQgc2V0X3VpbnQxNl9iZSA9IHNldF9pbnQxNl9iZVxubGV0IHNldF91aW50MTZfbGUgPSBzZXRfaW50MTZfbGVcblxuKCogVVRGIGNvZGVjcyBhbmQgdmFsaWRhdGlvbnMgKilcblxubGV0IGRlY19pbnZhbGlkID0gVWNoYXIudXRmX2RlY29kZV9pbnZhbGlkXG5sZXRbQGlubGluZV0gZGVjX3JldCBuIHUgPSBVY2hhci51dGZfZGVjb2RlIG4gKFVjaGFyLnVuc2FmZV9vZl9pbnQgdSlcblxuKCogSW4gY2FzZSBvZiBkZWNvZGluZyBlcnJvciwgaWYgd2UgZXJyb3Igb24gdGhlIGZpcnN0IGJ5dGUsIHdlXG4gICBjb25zdW1lIHRoZSBieXRlLCBvdGhlcndpc2Ugd2UgY29uc3VtZSB0aGUgW25dIGJ5dGVzIHByZWNlZGluZ1xuICAgdGhlIGVycm9yaW5nIGJ5dGUuXG5cbiAgIFRoaXMgbWVhbnMgdGhhdCBpZiBhIGNsaWVudCB1c2VzIGRlY29kZXMgd2l0aG91dCBjYXJpbmcgYWJvdXRcbiAgIHZhbGlkaXR5IGl0IG5hdHVyYWxseSByZXBsYWNlIGJvZ3VzIGRhdGEgd2l0aCBVY2hhci5yZXAgYWNjb3JkaW5nXG4gICB0byB0aGUgV0hBVFdHIEVuY29kaW5nIHN0YW5kYXJkLiBPdGhlciBzY2hlbWVzIGFyZSBwb3NzaWJsZSBieVxuICAgY29uc3VsdGluZyB0aGUgbnVtYmVyIG9mIHVzZWQgYnl0ZXMgb24gaW52YWxpZCBkZWNvZGVzLiBGb3IgbW9yZVxuICAgZGV0YWlscyBzZWUgaHR0cHM6Ly9oc2l2b25lbi5maS9icm9rZW4tdXRmLTgvXG5cbiAgIEZvciB0aGlzIHJlYXNvbiBpbiBbZ2V0X3V0Zl84X3VjaGFyXSB3ZSBncmFkdWFsbHkgY2hlY2sgdGhlIG5leHRcbiAgIGJ5dGUgaXMgYXZhaWxhYmxlIHJhdGhlciB0aGFuIGRvaW5nIGl0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxuICAgZmlyc3QgYnl0ZS4gQ29udHJhc3Qgd2l0aCBbaXNfdmFsaWRfdXRmXzhdLiAqKVxuXG4oKiBVVEYtOCAqKVxuXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194QkYgYiA9IGIgbHNyIDYgPD4gMGIxMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94QTBfdG9feEJGIGIgPSBiIGxzciA1IDw+IDBiMTAxXG5sZXRbQGlubGluZV0gbm90X2luX3g4MF90b194OUYgYiA9IGIgbHNyIDUgPD4gMGIxMDBcbmxldFtAaW5saW5lXSBub3RfaW5feDkwX3RvX3hCRiBiID0gYiA8IDB4OTAgfHwgMHhCRiA8IGJcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g4RiBiID0gYiBsc3IgNCA8PiAweDhcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzIgYjAgYjEgPVxuICAoKGIwIGxhbmQgMHgxRikgbHNsIDYpIGxvclxuICAoKGIxIGxhbmQgMHgzRikpXG5cbmxldFtAaW5saW5lXSB1dGZfOF91Y2hhcl8zIGIwIGIxIGIyID1cbiAgKChiMCBsYW5kIDB4MEYpIGxzbCAxMikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMgPVxuICAoKGIwIGxhbmQgMHgwNykgbHNsIDE4KSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCAxMikgbG9yXG4gICgoYjIgbGFuZCAweDNGKSBsc2wgNikgbG9yXG4gICgoYjMgbGFuZCAweDNGKSlcblxubGV0IGdldF91dGZfOF91Y2hhciBiIGkgPVxuICBsZXQgYjAgPSBnZXRfdWludDggYiBpIGluICgqIHJhaXNlcyBpZiBbaV0gaXMgbm90IGEgdmFsaWQgaW5kZXguICopXG4gIGxldCBnZXQgPSB1bnNhZmVfZ2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggQ2hhci51bnNhZmVfY2hyIGIwIHdpdGggKCogU2VlIFRoZSBVbmljb2RlIFN0YW5kYXJkLCBUYWJsZSAzLjcgKilcbiAgfCAnXFx4MDAnIC4uICdcXHg3RicgLT4gZGVjX3JldCAxIGIwXG4gIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGRlY19yZXQgMiAodXRmXzhfdWNoYXJfMiBiMCBiMSlcbiAgfCAnXFx4RTAnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3hBMF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFMScgLi4gJ1xceEVDJyB8ICdcXHhFRScgLi4gJ1xceEVGJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGRlY19yZXQgMyAodXRmXzhfdWNoYXJfMyBiMCBiMSBiMilcbiAgfCAnXFx4RUQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OUYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhGMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDkwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCAnXFx4RjQnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194OEYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBsZXQgYjMgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIzIHRoZW4gZGVjX2ludmFsaWQgMyBlbHNlXG4gICAgICBkZWNfcmV0IDQgKHV0Zl84X3VjaGFyXzQgYjAgYjEgYjIgYjMpXG4gIHwgXyAtPiBkZWNfaW52YWxpZCAxXG5cbmxldCBzZXRfdXRmXzhfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50OCBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgICBzZXRfdWludDggYiBpIHU7XG4gICAgICAxXG4gIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhDMCBsb3IgKHUgbHNyIDYpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAyKVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RTAgbG9yICh1IGxzciAxMikpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgMylcbiAgfCB1IHdoZW4gdSA8PSAweDEwRkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZVxuICAgICAgKHNldF91aW50OCBiIGkgKDB4RjAgbG9yICh1IGxzciAxOCkpO1xuICAgICAgIHNldCBiIChpICsgMSkgKDB4ODAgbG9yICgodSBsc3IgMTIpIGxhbmQgMHgzRikpO1xuICAgICAgIHNldCBiIChpICsgMikgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgbGFzdCAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSk7XG4gICAgICAgNClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzggYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgKGdldCBiIGkpIHdpdGhcbiAgICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBsb29wIG1heCBiIChpICsgMSlcbiAgICB8ICdcXHhDMicgLi4gJ1xceERGJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFMCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94QTBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDIgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhFRCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDlGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g5MF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDIpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEYxJyAuLiAnXFx4RjMnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjQnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3g4RiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkJFICopXG5cbmxldCBnZXRfdXRmXzE2YmVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2YmVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2JlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG5cbigqIFVURi0xNkxFICopXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgYiBpID1cbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IG1heCB0aGVuIGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiIGVsc2VcbiAgaWYgaSA9IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGRlY19yZXQgMiB1XG4gIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZGVjX2ludmFsaWQgMlxuICB8IGhpIC0+ICgqIGNvbWJpbmUgW2hpXSB3aXRoIGEgbG93IHN1cnJvZ2F0ZSAqKVxuICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGRlY19pbnZhbGlkIChtYXggLSBpICsgMSkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZGVjX2ludmFsaWQgMiAoKiByZXRyeSBoZXJlICopXG4gICAgICB8IGxvIC0+XG4gICAgICAgICAgbGV0IHUgPSAoKChoaSBsYW5kIDB4M0ZGKSBsc2wgMTApIGxvciAobG8gbGFuZCAweDNGRikpICsgMHgxMDAwMCBpblxuICAgICAgICAgIGRlY19yZXQgNCB1XG5cbmxldCBzZXRfdXRmXzE2bGVfdWNoYXIgYiBpIHUgPVxuICBsZXQgc2V0ID0gdW5zYWZlX3NldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuICB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICAgbGV0IGxhc3QgPSBpICsgMSBpblxuICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIDAgZWxzZSAoc2V0IGIgaSB1OyAyKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICBsZXQgdScgPSB1IC0gMHgxMDAwMCBpblxuICAgICAgbGV0IGhpID0gKDB4RDgwMCBsb3IgKHUnIGxzciAxMCkpIGluXG4gICAgICBsZXQgbG8gPSAoMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikpIGluXG4gICAgICBzZXQgYiBpIGhpOyBzZXQgYiAoaSArIDIpIGxvOyA0XG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGlzX3ZhbGlkX3V0Zl8xNmxlIGIgPVxuICBsZXQgcmVjIGxvb3AgbWF4IGIgaSA9XG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDE2X2xlIGluXG4gICAgaWYgaSA+IG1heCB0aGVuIHRydWUgZWxzZVxuICAgIGlmIGkgPSBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgfCB1IHdoZW4gdSA8IDB4RDgwMCB8fCB1ID4gMHhERkZGIC0+IGxvb3AgbWF4IGIgKGkgKyAyKVxuICAgIHwgdSB3aGVuIHUgPiAweERCRkYgLT4gZmFsc2VcbiAgICB8IF9oaSAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIGdldCBiIChpICsgMikgd2l0aFxuICAgICAgICB8IHUgd2hlbiB1IDwgMHhEQzAwIHx8IHUgPiAweERGRkYgLT4gZmFsc2VcbiAgICAgICAgfCBfbG8gLT4gbG9vcCBtYXggYiAoaSArIDQpXG4gIGluXG4gIGxvb3AgKGxlbmd0aCBiIC0gMSkgYiAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBHYWxsaXVtLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFN0cmluZyBvcGVyYXRpb25zLCBiYXNlZCBvbiBieXRlIHNlcXVlbmNlIG9wZXJhdGlvbnMgKilcblxuKCogV0FSTklORzogU29tZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIGJ5dGVzLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDogc3RyaW5nIC0+IGludCAtPiAgYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbm1vZHVsZSBCID0gQnl0ZXNcblxubGV0IGJ0cyA9IEIudW5zYWZlX3RvX3N0cmluZ1xubGV0IGJvcyA9IEIudW5zYWZlX29mX3N0cmluZ1xuXG5sZXQgbWFrZSBuIGMgPVxuICBCLm1ha2UgbiBjIHw+IGJ0c1xubGV0IGluaXQgbiBmID1cbiAgQi5pbml0IG4gZiB8PiBidHNcbmxldCBlbXB0eSA9IFwiXCJcbmxldCBvZl9ieXRlcyA9IEIudG9fc3RyaW5nXG5sZXQgdG9fYnl0ZXMgPSBCLm9mX3N0cmluZ1xubGV0IHN1YiBzIG9mcyBsZW4gPVxuICBCLnN1YiAoYm9zIHMpIG9mcyBsZW4gfD4gYnRzXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IGIgPSBib3MgcyBpblxuICAoKiBXZSBzYXRpc2Z5IFt1bnNhZmVfZXNjYXBlXSdzIHByZWNvbmRpdGlvbiBieSBwYXNzaW5nIGFuXG4gICAgIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlIFtiXS4gKilcbiAgYnRzIChCLnVuc2FmZV9lc2NhcGUgYilcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWMgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgaW5kZXhfcmVjIHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9vcHQgcyBjID0gaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICAgIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMuaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgaW5kZXhfcmVjX29wdCBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb20gLyBCeXRlcy5yaW5kZXhfZnJvbVwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjIHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5yaW5kZXhfZnJvbV9vcHRcIlxuICBlbHNlXG4gICAgcmluZGV4X3JlY19vcHQgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb250YWluc19mcm9tIC8gQnl0ZXMuY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChpbmRleF9yZWMgcyBsIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGNvbnRhaW5zIHMgYyA9IGNvbnRhaW5zX2Zyb20gcyAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5sZXQgdXBwZXJjYXNlX2FzY2lpIHMgPVxuICBCLnVwcGVyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGxvd2VyY2FzZV9hc2NpaSBzID1cbiAgQi5sb3dlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIudW5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGVuZHNfd2l0aCB+c3VmZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3N1ZiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgbGV0IGRpZmYgPSBsZW5fcyAtIGxlbl9zdWYgaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9zdWYgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgKGRpZmYgKyBpKSA8PiB1bnNhZmVfZ2V0IHN1ZmZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGRpZmYgPj0gMCAmJiBhdXggMFxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaCA6IGludCAtPiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX3N0cmluZ19oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaCAwIHhcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5leHRlcm5hbCBlcXVhbCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zdHJpbmdfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBib3MgcyB8PiBCLnRvX3NlcVxuXG5sZXQgdG9fc2VxaSBzID0gYm9zIHMgfD4gQi50b19zZXFpXG5cbmxldCBvZl9zZXEgZyA9IEIub2Zfc2VxIGcgfD4gYnRzXG5cbigqIFVURiBkZWNvZGVycyBhbmQgdmFsaWRhdG9ycyAqKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl84X3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl84IHMgPSBCLmlzX3ZhbGlkX3V0Zl84IChib3MgcylcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZiZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZiZSBzID0gQi5pc192YWxpZF91dGZfMTZiZSAoYm9zIHMpXG5cbmxldCBnZXRfdXRmXzE2bGVfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzE2bGVfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgcyA9IEIuaXNfdmFsaWRfdXRmXzE2bGUgKGJvcyBzKVxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcblxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDE2XG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgbXVzdCBub3QgZXZhbHVhdGUgW2YgMF0gd2hlbiBbbCA8PSAwXS5cbiAgICAgV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICBpZiBzeSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5Lm1ha2VfbWF0cml4XCI7XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyB4IChjcmVhdGUgc3kgaW5pdClcbiAgICBkb25lO1xuICBlbmQ7XG4gIHJlc1xuXG5sZXQgaW5pdF9tYXRyaXggc3ggc3kgZiA9XG4gICgqIFdlIHJhaXNlIGV2ZW4gaWYgW3N4ID0gMCAmJiBzeSA8IDBdOiAqKVxuICBpZiBzeSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRfbWF0cml4XCI7XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICAoKiBXZSBtdXN0IG5vdCBldmFsdWF0ZSBbZiB4IDBdIHdoZW4gW3N5IDw9IDBdOiAqKVxuICBpZiBzeSA+IDAgdGhlbiBiZWdpblxuICAgIGZvciB4ID0gMCB0byBwcmVkIHN4IGRvXG4gICAgICBsZXQgcm93ID0gY3JlYXRlIHN5IChmIHggMCkgaW5cbiAgICAgIGZvciB5ID0gMSB0byBwcmVkIHN5IGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcm93IHkgKGYgeCB5KVxuICAgICAgZG9uZTtcbiAgICAgIHVuc2FmZV9zZXQgcmVzIHggcm93XG4gICAgZG9uZTtcbiAgZW5kO1xuICByZXNcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcF9pbnBsYWNlIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IGEgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICBkb25lXG5cbmxldCBtYXBpX2lucGxhY2UgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgZG9uZVxuXG5sZXQgbWFwMiBmIGEgYiA9XG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGlmIGxhIDw+IGxiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZSBiZWdpblxuICAgIGlmIGxhID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgKGYgKHVuc2FmZV9nZXQgYSAwKSAodW5zYWZlX2dldCBiIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuICBlbmRcblxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZiAwICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHJlYyB0b2xpc3QgaSByZXMgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmVzIGVsc2UgdG9saXN0IChpIC0gMSkgKHVuc2FmZV9nZXQgYSBpIDo6IHJlcykgaW5cbiAgdG9saXN0IChsZW5ndGggYSAtIDEpIFtdXG5cbigqIENhbm5vdCB1c2UgTGlzdC5sZW5ndGggaGVyZSBiZWNhdXNlIHRoZSBMaXN0IG1vZHVsZSBkZXBlbmRzIG9uIEFycmF5LiAqKVxubGV0IHJlYyBsaXN0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2N1XG4gIHwgXzo6dCAtPiBsaXN0X2xlbmd0aCAoc3VjYyBhY2N1KSB0XG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBhID0gY3JlYXRlIChsaXN0X2xlbmd0aCAwIGwpIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaSsxKSB0bCBpblxuICAgICAgZmlsbCAxIHRsXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjYyBpbnB1dF9hcnJheSA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXRfYXJyYXkgaW5cbiAgaWYgbGVuID0gMCB0aGVuIChhY2MsIFt8fF0pIGVsc2UgYmVnaW5cbiAgICBsZXQgYWNjLCBlbHQgPSBmIGFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSAwKSBpblxuICAgIGxldCBvdXRwdXRfYXJyYXkgPSBjcmVhdGUgbGVuIGVsdCBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBhY2MnLCBlbHQgPSBmICFhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgaSkgaW5cbiAgICAgIGFjYyA6PSBhY2MnO1xuICAgICAgdW5zYWZlX3NldCBvdXRwdXRfYXJyYXkgaSBlbHQ7XG4gICAgZG9uZTtcbiAgICAhYWNjLCBvdXRwdXRfYXJyYXlcbiAgZW5kXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5mb3JfYWxsMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGV4aXN0czIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmV4aXN0czJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW0geCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbXEgeCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgeCA9PSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfb3B0IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgZWxzZSBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9pbmRleCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIFNvbWUgaVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXBpIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB4ID1cbiAgaWYgeCA9IFt8fF0gdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYTAsIGIwID0gdW5zYWZlX2dldCB4IDAgaW5cbiAgICBsZXQgbiA9IGxlbmd0aCB4IGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbiBhMCBpblxuICAgIGxldCBiID0gY3JlYXRlIG4gYjAgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBhaSwgYmkgPSB1bnNhZmVfZ2V0IHggaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgYWk7XG4gICAgICB1bnNhZmVfc2V0IGIgaSBiaVxuICAgIGRvbmU7XG4gICAgYSwgYlxuICBlbmRcblxubGV0IGNvbWJpbmUgYSBiID1cbiAgbGV0IG5hID0gbGVuZ3RoIGEgaW5cbiAgbGV0IG5iID0gbGVuZ3RoIGIgaW5cbiAgaWYgbmEgPD4gbmIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmNvbWJpbmVcIjtcbiAgaWYgbmEgPSAwIHRoZW4gW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHggPSBjcmVhdGUgbmEgKHVuc2FmZV9nZXQgYSAwLCB1bnNhZmVfZ2V0IGIgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbmEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHggaSAodW5zYWZlX2dldCBhIGksIHVuc2FmZV9nZXQgYiBpKVxuICAgIGRvbmU7XG4gICAgeFxuICBlbmRcblxuZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbmxldCBzb3J0IGNtcCBhID1cbiAgbGV0IG1heHNvbiBsIGkgPVxuICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgIXhcbiAgICBlbmQgZWxzZVxuICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICB0aGVuIGkzMSsxXG4gICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gIGluXG4gIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgYnViYmxlZG93biBsIGpcbiAgaW5cbiAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICBkb25lO1xuICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG5cbmxldCBjdXRvZmYgPSA1XG5sZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgIGVuZFxuICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICBpblxuICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICBkZWNyIGo7XG4gICAgICBkb25lO1xuICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgIGRvbmU7XG4gIGluXG4gIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICBsZXQgdCA9IG1ha2UgbDIgKGdldCBhIDApIGluXG4gICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gIGVuZFxuXG5cbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG5sZXQgc2h1ZmZsZSB+cmFuZCBhID0gKCogRmlzaGVyLVlhdGVzICopXG4gIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAxIGRvXG4gICAgbGV0IGogPSByYW5kIChpICsgMSkgaW5cbiAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgdW5zYWZlX3NldCBhIGkgKGdldCBhIGopO1xuICAgIHVuc2FmZV9zZXQgYSBqIHZcbiAgZG9uZVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9yZXZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgbGVuID0gbGlzdF9sZW5ndGggMCBsIGluXG4gICAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgICBpblxuICAgICAgZmlsbCAobGVuLTIpIHRsXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICBvZl9yZXZfbGlzdCBsXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgIE5pY29sYXMgT2plZGEgQmFyLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIG5lZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgYWRkIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCBzdWIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsIG11bCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgZGl2IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCByZW0gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZtYSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2ZtYV9mbG9hdFwiIFwiY2FtbF9mbWFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBxdWlldF9uYW4gPSBuYW5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgc2lnbmFsaW5nX25hbiA9IGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBpc19maW5pdGUgKHg6IGZsb2F0KSA9IHggLS4geCA9IDAuXG5sZXQgaXNfaW5maW5pdGUgKHg6IGZsb2F0KSA9IDEuIC8uIHggPSAwLlxubGV0IGlzX25hbiAoeDogZmxvYXQpID0geCA8PiB4XG5cbmxldCBwaSA9IDB4MS45MjFmYjU0NDQyZDE4cCsxXG5sZXQgbWF4X2Zsb2F0ID0gU3RkbGliLm1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IFN0ZGxpYi5taW5fZmxvYXRcbmxldCBlcHNpbG9uID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0XG50eXBlIGZwY2xhc3MgPSBTdGRsaWIuZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcG93IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjYnJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2JydF9mbG9hdFwiIFwiY2FtbF9jYnJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cDIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHAyX2Zsb2F0XCIgXCJjYW1sX2V4cDJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzJfZmxvYXRcIiBcImNhbWxfbG9nMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmX2Zsb2F0XCIgXCJjYW1sX2VyZlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmZjIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmY19mbG9hdFwiIFwiY2FtbF9lcmZjXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRydW5jIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdHJ1bmNfZmxvYXRcIiBcImNhbWxfdHJ1bmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcm91bmQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9yb3VuZF9mbG9hdFwiIFwiY2FtbF9yb3VuZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG5bQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgaXNfaW50ZWdlciB4ID0geCA9IHRydW5jIHggJiYgaXNfZmluaXRlIHhcblxuZXh0ZXJuYWwgbmV4dF9hZnRlciA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gID0gXCJjYW1sX25leHRhZnRlcl9mbG9hdFwiIFwiY2FtbF9uZXh0YWZ0ZXJcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgc3VjYyB4ID0gbmV4dF9hZnRlciB4IGluZmluaXR5XG5sZXQgcHJlZCB4ID0gbmV4dF9hZnRlciB4IG5lZ19pbmZpbml0eVxuXG5leHRlcm5hbCBjb3B5X3NpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpZ25fYml0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGJvb2xcbiAgPSBcImNhbWxfc2lnbmJpdF9mbG9hdFwiIFwiY2FtbF9zaWduYml0XCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbnR5cGUgdCA9IGZsb2F0XG5leHRlcm5hbCBjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgZXF1YWwgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldFtAaW5saW5lXSBtaW4gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB8fCBpc19uYW4geSB0aGVuIChuYW4sIG5hbilcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgsIHkpIGVsc2UgKHksIHgpXG5cbmxldFtAaW5saW5lXSBtaW5fbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB0aGVuICh5LHkpXG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiAoeCx4KVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCx5KSBlbHNlICh5LHgpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IGZsb2F0YXJyYXlcblxuICBleHRlcm5hbCBsZW5ndGggOiB0IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICBsZXQgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGZvciBpID0gb2ZzIHRvIG9mcyArIGxlbiAtIDEgZG8gdW5zYWZlX3NldCBhIGkgdiBkb25lXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXQ6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID1cbiAgICBcImNhbWxfZmxvYXRhcnJheV9ibGl0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IG1ha2UgbiB2ID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIG4gaW5cbiAgICB1bnNhZmVfZmlsbCByZXN1bHQgMCBuIHY7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGluaXQgbCBmID1cbiAgICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdFwiXG4gICAgZWxzZVxuICAgICAgbGV0IHJlcyA9IGNyZWF0ZSBsIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgICAgZG9uZTtcbiAgICAgIHJlc1xuXG4gIGxldCBtYWtlX21hdHJpeCBzeCBzeSB2ID1cbiAgICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgICBpZiBzeSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lm1ha2VfbWF0cml4XCI7XG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2Ugc3ggKGNyZWF0ZSAwKSBpblxuICAgIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgICBmb3IgeCA9IDAgdG8gc3ggLSAxIGRvXG4gICAgICAgIEFycmF5LnVuc2FmZV9zZXQgcmVzIHggKG1ha2Ugc3kgdilcbiAgICAgIGRvbmU7XG4gICAgZW5kO1xuICAgIHJlc1xuXG4gIGxldCBpbml0X21hdHJpeCBzeCBzeSBmID1cbiAgICAoKiBXZSByYWlzZSBldmVuIGlmIFtzeCA9IDAgJiYgc3kgPCAwXTogKilcbiAgICBpZiBzeSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRfbWF0cml4XCI7XG4gICAgbGV0IHJlcyA9IEFycmF5Lm1ha2Ugc3ggKGNyZWF0ZSAwKSBpblxuICAgIGlmIHN5ID4gMCB0aGVuIGJlZ2luXG4gICAgICBmb3IgeCA9IDAgdG8gc3ggLSAxIGRvXG4gICAgICAgIGxldCByb3cgPSBjcmVhdGUgc3kgaW5cbiAgICAgICAgZm9yIHkgPSAwIHRvIHN5IC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgcm93IHkgKGYgeCB5KVxuICAgICAgICBkb25lO1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyB4IHJvd1xuICAgICAgZG9uZTtcbiAgICBlbmQ7XG4gICAgcmVzXG5cbiAgbGV0IGFwcGVuZCBhMSBhMiA9XG4gICAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gICAgbGV0IGwyID0gbGVuZ3RoIGEyIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgICB1bnNhZmVfYmxpdCBhMSAwIHJlc3VsdCAwIGwxO1xuICAgIHVuc2FmZV9ibGl0IGEyIDAgcmVzdWx0IGwxIGwyO1xuICAgIHJlc3VsdFxuXG4gICgqIG5leHQgMyBmdW5jdGlvbnM6IG1vZGlmaWVkIGNvcHkgb2YgY29kZSBmcm9tIHN0cmluZy5tbCAqKVxuICBsZXQgZW5zdXJlX2dlICh4OmludCkgeSA9XG4gICAgaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuY29uY2F0XCJcblxuICBsZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIGFjYykgYWNjKSB0bFxuXG4gIGxldCBjb25jYXQgbCA9XG4gICAgbGV0IGxlbiA9IHN1bV9sZW5ndGhzIDAgbCBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGwgaSA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gbGVuKVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQgaGxlbiA9IGxlbmd0aCBoZCBpblxuICAgICAgICB1bnNhZmVfYmxpdCBoZCAwIHJlc3VsdCBpIGhsZW47XG4gICAgICAgIGxvb3AgdGwgKGkgKyBobGVuKVxuICAgIGluXG4gICAgbG9vcCBsIDA7XG4gICAgcmVzdWx0XG5cbiAgbGV0IHN1YiBhIG9mcyBsZW4gPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LnN1YlwiO1xuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbGVuIGluXG4gICAgdW5zYWZlX2JsaXQgYSBvZnMgcmVzdWx0IDAgbGVuO1xuICAgIHJlc3VsdFxuXG4gIGxldCBjb3B5IGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGwgaW5cbiAgICB1bnNhZmVfYmxpdCBhIDAgcmVzdWx0IDAgbDtcbiAgICByZXN1bHRcblxuICBsZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuZmlsbFwiO1xuICAgIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbiAgbGV0IGJsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuID1cbiAgICBjaGVjayBzcmMgc29mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgY2hlY2sgZHN0IGRvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIHVuc2FmZV9ibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlblxuXG4gIGxldCB0b19saXN0IGEgPVxuICAgIExpc3QuaW5pdCAobGVuZ3RoIGEpICh1bnNhZmVfZ2V0IGEpXG5cbiAgbGV0IG9mX2xpc3QgbCA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiByZXN1bHRcbiAgICAgIHwgaCA6OiB0IC0+IHVuc2FmZV9zZXQgcmVzdWx0IGkgaDsgZmlsbCAoaSArIDEpIHRcbiAgICBpblxuICAgIGZpbGwgMCBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlcjIgZiBhIGIgPVxuICAgIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaXRlcjI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICBlbHNlXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxuICBsZXQgbWFwIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBtYXBfaW5wbGFjZSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgYSBpIChmICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZVxuXG4gIGxldCBtYXAyIGYgYSBiID1cbiAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgaWYgbGEgPD4gbGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXJpIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgbGV0IG1hcGkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWFwaV9pbnBsYWNlIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZmluZF9vcHQgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgaWYgcCB4IHRoZW4gU29tZSB4XG4gICAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfaW5kZXggcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIFNvbWUgaVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZpbmRfbWFwIGYgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBmICh1bnNhZmVfZ2V0IGEgaSkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmaW5kX21hcGkgZiBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIGYgaSAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgc2h1ZmZsZSB+cmFuZCBhID0gKCogRmlzaGVyLVlhdGVzICopXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDEgZG9cbiAgICAgIGxldCBqID0gcmFuZCAoaSArIDEpIGluXG4gICAgICBsZXQgdiA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICB1bnNhZmVfc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB1bnNhZmVfc2V0IGEgaiB2XG4gICAgZG9uZVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBuID49IDBsICYmIG4gPD0gbWF4X2ludCB0aGVuXG4gICAgICAgICAgU29tZSAodG9faW50IG4pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gIHwgNjQgLT5cbiAgICAgICgqIFNvIHRoYXQgaXQgY29tcGlsZXMgaW4gMzItYml0ICopXG4gICAgICBsZXQgbWFzayA9IDB4RkZGRiBsc2wgMTYgbG9yIDB4RkZGRiBpblxuICAgICAgZnVuIG4gLT4gU29tZSAodG9faW50IG4gbGFuZCBtYXNrKVxuICB8IF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSB4ID0geVxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9XG4gIHN1YiBuIG1pbl9pbnQgPCBzdWIgbSBtaW5faW50XG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZSBiaXRuZXNzLlxuICAgU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2x0IG4gZCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfbHQgciBkIHRoZW4gcSBlbHNlIHN1Y2MgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50IHRoZW5cbiAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZyA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NCA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50NjQgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG50eXBlIHQgPSBpbnQ2NFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IHggPSB5XG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgdW5zaWduZWRfbHQgbiBtID1cbiAgc3ViIG4gbWluX2ludCA8IHN1YiBtIG1pbl9pbnRcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lIGJpdG5lc3MuXG4gICBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfbHQgbiBkIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9sdCByIGQgdGhlbiBxIGVsc2Ugc3VjYyBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCAwIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBuID49IDBuICYmIG4gPD0gbWF4X2ludCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPVxuICBzdWIgbiBtaW5faW50IDwgc3ViIG0gbWluX2ludFxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWUgYml0bmVzcy5cbiAgIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9sdCBuIGQgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2x0IHIgZCB0aGVuIHEgZWxzZSBzdWNjIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6XG4gIGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGludCA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBzZWVkZWRfaGFzaCBzZWVkIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgc2VlZCB4XG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kOiBlbHQgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9vcHQ6IGVsdCAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2ZpcnN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfbGFzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIGZvbGQ6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgICB2YWwgbWFwOiAoZWx0IC0+IGVsdCkgLT4gdCAtPiB0XG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgc3BsaXQ6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgdG9fbGlzdCA6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCB0b19saXN0ID0gZWxlbWVudHNcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkX3RvX2xpc3Q6IGtleSAtPiAnYSAtPiAnYSBsaXN0IHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPlxuICAgICAgJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBtYXA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIG1hcGk6IChrZXkgLT4gJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBmaWx0ZXI6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGZpbHRlcl9tYXA6IChrZXkgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgcGFydGl0aW9uOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBrZXkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgY29tcGFyZTogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+IChrZXkgKiAnYSkgbGlzdFxuICAgIHZhbCBvZl9saXN0IDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgYWRkX3RvX2xpc3QgeCBkYXRhIG0gPVxuICAgICAgbGV0IGFkZCA9IGZ1bmN0aW9uIE5vbmUgLT4gU29tZSBbZGF0YV0gfCBTb21lIGwgLT4gU29tZSAoZGF0YSA6OiBsKSBpblxuICAgICAgdXBkYXRlIHggYWRkIG1cblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpdGVyIGYgbDsgZiB2IGQ7IGl0ZXIgZiByXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwaSBmIGwgaW5cbiAgICAgICAgICBsZXQgZCcgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcGkgZiByIGluXG4gICAgICAgICAgTm9kZXtsPWwnOyB2OyBkPWQnOyByPXInOyBofVxuXG4gICAgbGV0IHJlYyBmb2xkIGYgbSBhY2N1ID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgZm9sZCBmIHIgKGYgdiBkIChmb2xkIGYgbCBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCAmJiBmb3JfYWxsIHAgbCAmJiBmb3JfYWxsIHAgclxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkIHx8IGV4aXN0cyBwIGwgfHwgZXhpc3RzIHAgclxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCBrIGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGtleXMgaW4gdGhlIHRyZWU7IGl0XG4gICAgICAgZG9lcyBub3QgdGVzdCBmb3IgZXF1YWxpdHkgd2l0aCB0aGUgY3VycmVudCBtaW4gKG9yIG1heCkga2V5LlxuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fYmluZGluZyBrIHggbCkgdiBkIHJcblxuICAgIGxldCByZWMgYWRkX21heF9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiBkIChhZGRfbWF4X2JpbmRpbmcgayB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiBkIHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2JpbmRpbmcgdiBkIHJcbiAgICAgIHwgKF8sIEVtcHR5KSAtPiBhZGRfbWF4X2JpbmRpbmcgdiBkIGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scjsgaD1saH0sXG4gICAgICAgICBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnI7IGg9cmh9KSAtPlxuICAgICAgICAgIGlmIGxoID4gcmggKyAyIHRoZW4gYmFsIGxsIGx2IGxkIChqb2luIGxyIHYgZCByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IGQgcmwpIHJ2IHJkIHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IGQgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCBjb25jYXQgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPlxuICAgICAgICAgIGxldCAoeCwgZCkgPSBtaW5fYmluZGluZyB0MiBpblxuICAgICAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgY29uY2F0X29yX2pvaW4gdDEgdiBkIHQyID1cbiAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgfCBTb21lIGQgLT4gam9pbiB0MSB2IGQgdDJcbiAgICAgIHwgTm9uZSAtPiBjb25jYXQgdDEgdDJcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBOb25lLCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIFNvbWUgZCwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiBkIHIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsciwgcHJlcywgcnIpID0gc3BsaXQgeCByIGluIChqb2luIGwgdiBkIGxyLCBwcmVzLCBycilcblxuICAgIGxldCByZWMgbWVyZ2UgZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSwgXykgd2hlbiBoMSA+PSBoZWlnaHQgczIgLT5cbiAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjEgKGYgdjEgKFNvbWUgZDEpIGQyKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgKF8sIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjJ9KSAtPlxuICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MiAoZiB2MiBkMSAoU29tZSBkMikpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCBfIC0+XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbiAgICBsZXQgcmVjIHVuaW9uIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgfCAoRW1wdHksIHMpIHwgKHMsIEVtcHR5KSAtPiBzXG4gICAgICB8IChOb2RlIHtsPWwxOyB2PXYxOyBkPWQxOyByPXIxOyBoPWgxfSxcbiAgICAgICAgIE5vZGUge2w9bDI7IHY9djI7IGQ9ZDI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MSBkMSByXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gY29uY2F0X29yX2pvaW4gbCB2MSAoZiB2MSBkMSBkMikgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobDEsIGQxLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgbGV0IGwgPSB1bmlvbiBmIGwxIGwyIGFuZCByID0gdW5pb24gZiByMSByMiBpblxuICAgICAgICAgICAgbWF0Y2ggZDEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGpvaW4gbCB2MiBkMiByXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gY29uY2F0X29yX2pvaW4gbCB2MiAoZiB2MiBkMSBkMikgclxuXG4gICAgbGV0IHJlYyBmaWx0ZXIgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHZkIHRoZW4gaWYgbD09bCcgJiYgcj09cicgdGhlbiBtIGVsc2Ugam9pbiBsJyB2IGQgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBmaWx0ZXJfbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW2ZdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgICBsZXQgZnZkID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXJfbWFwIGYgciBpblxuICAgICAgICAgIGJlZ2luIG1hdGNoIGZ2ZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZCcgLT4gam9pbiBsJyB2IGQnIHInXG4gICAgICAgICAgICB8IE5vbmUgLT4gY29uY2F0IGwnIHInXG4gICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbiBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKEVtcHR5LCBFbXB0eSlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHZkID0gcCB2IGQgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZkXG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IGQgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiBkIHJmKVxuXG4gICAgdHlwZSAnYSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2Yga2V5ICogJ2EgKiAnYSB0ICogJ2EgZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIG0gZSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiAwXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIGQxIGQyIGluXG4gICAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBjb21wYXJlX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgZXF1YWwgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgZXF1YWxfYXV4IGUxIGUyID1cbiAgICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgICAgKEVuZCwgRW5kKSAtPiB0cnVlXG4gICAgICAgIHwgKEVuZCwgXykgIC0+IGZhbHNlXG4gICAgICAgIHwgKF8sIEVuZCkgLT4gZmFsc2VcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgT3JkLmNvbXBhcmUgdjEgdjIgPSAwICYmIGNtcCBkMSBkMiAmJlxuICAgICAgICAgICAgZXF1YWxfYXV4IChjb25zX2VudW0gcjEgZTEpIChjb25zX2VudW0gcjIgZTIpXG4gICAgICBpbiBlcXVhbF9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGJpbmRpbmdzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9XG4gICAgICBiaW5kaW5nc19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9iaW5kaW5nXG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9iaW5kaW5nX29wdFxuXG4gICAgbGV0IHRvX2xpc3QgPSBiaW5kaW5nc1xuICAgIGxldCBvZl9saXN0IGJzID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IGJzXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCBkcm9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IF9oZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDFcbiAgfCBbXSAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IGhkXG4gIHwgW10gICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHRvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gU29tZSBoZFxuICB8IFtdICAgIC0+IE5vbmVcblxubGV0IGlzX2VtcHR5IHMgPSAocy5jID0gW10pXG5cbmxldCBsZW5ndGggcyA9IHMubGVuXG5cbmxldCBpdGVyIGYgcyA9IExpc3QuaXRlciBmIHMuY1xuXG5sZXQgZm9sZCBmIGFjYyBzID0gTGlzdC5mb2xkX2xlZnQgZiBhY2Mgcy5jXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IExpc3QudG9fc2VxIHMuY1xuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHMgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHMgZztcbiAgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBGcmFuY29pcyBQb3R0aWVyLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICBKZXJlbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gRW1wdHlcblxudHlwZSAnYSBjZWxsID1cbiAgfCBOaWxcbiAgfCBDb25zIG9mIHsgY29udGVudDogJ2E7IG11dGFibGUgbmV4dDogJ2EgY2VsbCB9XG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgbXV0YWJsZSBmaXJzdDogJ2EgY2VsbDtcbiAgbXV0YWJsZSBsYXN0OiAnYSBjZWxsXG59XG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGZpcnN0ID0gTmlsO1xuICBsYXN0ID0gTmlsXG59XG5cbmxldCBjbGVhciBxID1cbiAgcS5sZW5ndGggPC0gMDtcbiAgcS5maXJzdCA8LSBOaWw7XG4gIHEubGFzdCA8LSBOaWxcblxubGV0IGFkZCB4IHEgPVxuICBsZXQgY2VsbCA9IENvbnMge1xuICAgIGNvbnRlbnQgPSB4O1xuICAgIG5leHQgPSBOaWxcbiAgfSBpblxuICBtYXRjaCBxLmxhc3Qgd2l0aFxuICB8IE5pbCAtPlxuICAgIHEubGVuZ3RoIDwtIDE7XG4gICAgcS5maXJzdCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG4gIHwgQ29ucyBsYXN0IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggKyAxO1xuICAgIGxhc3QubmV4dCA8LSBjZWxsO1xuICAgIHEubGFzdCA8LSBjZWxsXG5cbmxldCBwdXNoID1cbiAgYWRkXG5cbmxldCBwZWVrIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IGNvbnRlbnRcblxubGV0IHBlZWtfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gU29tZSBjb250ZW50XG5cbmxldCB0b3AgPVxuICBwZWVrXG5cbmxldCB0YWtlIHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2UgRW1wdHlcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgY29udGVudFxuXG5sZXQgdGFrZV9vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgU29tZSBjb250ZW50XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoIC0gMTtcbiAgICBxLmZpcnN0IDwtIG5leHQ7XG4gICAgU29tZSBjb250ZW50XG5cbmxldCBwb3AgPVxuICB0YWtlXG5cbmxldCBjb3B5ID1cbiAgbGV0IHJlYyBjb3B5IHFfcmVzIHByZXYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gcV9yZXMubGFzdCA8LSBwcmV2OyBxX3Jlc1xuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IHJlcyA9IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gaW5cbiAgICAgIGJlZ2luIG1hdGNoIHByZXYgd2l0aFxuICAgICAgfCBOaWwgLT4gcV9yZXMuZmlyc3QgPC0gcmVzXG4gICAgICB8IENvbnMgcCAtPiBwLm5leHQgPC0gcmVzXG4gICAgICBlbmQ7XG4gICAgICBjb3B5IHFfcmVzIHJlcyBuZXh0XG4gIGluXG4gIGZ1biBxIC0+IGNvcHkgeyBsZW5ndGggPSBxLmxlbmd0aDsgZmlyc3QgPSBOaWw7IGxhc3QgPSBOaWwgfSBOaWwgcS5maXJzdFxuXG5sZXQgaXNfZW1wdHkgcSA9XG4gIHEubGVuZ3RoID0gMFxuXG5sZXQgbGVuZ3RoIHEgPVxuICBxLmxlbmd0aFxuXG5sZXQgaXRlciA9XG4gIGxldCByZWMgaXRlciBmIGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBmIGNvbnRlbnQ7XG4gICAgICBpdGVyIGYgbmV4dFxuICBpblxuICBmdW4gZiBxIC0+IGl0ZXIgZiBxLmZpcnN0XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBmb2xkIGYgYWNjdSBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBhY2N1XG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgYWNjdSA9IGYgYWNjdSBjb250ZW50IGluXG4gICAgICBmb2xkIGYgYWNjdSBuZXh0XG4gIGluXG4gIGZ1biBmIGFjY3UgcSAtPiBmb2xkIGYgYWNjdSBxLmZpcnN0XG5cbmxldCB0cmFuc2ZlciBxMSBxMiA9XG4gIGlmIHExLmxlbmd0aCA+IDAgdGhlblxuICAgIG1hdGNoIHEyLmxhc3Qgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTEubGVuZ3RoO1xuICAgICAgcTIuZmlyc3QgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuICAgIHwgQ29ucyBsYXN0IC0+XG4gICAgICBxMi5sZW5ndGggPC0gcTIubGVuZ3RoICsgcTEubGVuZ3RoO1xuICAgICAgbGFzdC5uZXh0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBxID1cbiAgbGV0IHJlYyBhdXggYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgIHwgTmlsIC0+IFNlcS5OaWxcbiAgICB8IENvbnMgeyBjb250ZW50PXg7IG5leHQ7IH0gLT4gU2VxLkNvbnMgKHgsIGF1eCBuZXh0KVxuICBpblxuICBhdXggcS5maXJzdFxuXG5sZXQgYWRkX3NlcSBxIGkgPSBTZXEuaXRlciAoZnVuIHggLT4gcHVzaCB4IHEpIGlcblxubGV0IG9mX3NlcSBnID1cbiAgbGV0IHEgPSBjcmVhdGUoKSBpblxuICBhZGRfc2VxIHEgZztcbiAgcVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgUGllcnJlIFdlaXMgYW5kIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5OSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeHRlbnNpYmxlIGJ1ZmZlcnMgKilcblxuKCogVGhlIFtpbm5lcl9idWZmZXJdIHR5cGUgZW5zdXJlcyB0aGF0IHRoZSBbbGVuZ3RoXSBhbmQgW2J1ZmZlcl0gZmllbGRzIGFyZVxuICAgYWx3YXlzIHN5bmNocm9uaXplZCwgW2xlbmd0aCA9IEJ5dGVzLmxlbmd0aCBidWZmZXJdLCBldmVuIGluIHByZXNlbmNlXG4gICBvZiBkYXRhIHJhY2VzLlxuKilcbnR5cGUgaW5uZXJfYnVmZmVyID0ge1xuICBidWZmZXI6IGJ5dGVzO1xuICBsZW5ndGg6IGludDtcbn1cblxudHlwZSB0ID1cbiB7bXV0YWJsZSBpbm5lciA6IGlubmVyX2J1ZmZlcjtcbiAgbXV0YWJsZSBwb3NpdGlvbiA6IGludDtcbiAgaW5pdGlhbF9idWZmZXIgOiBieXRlc31cbigqIEludmFyaWFudHM6IGFsbCBwYXJ0cyBvZiB0aGUgY29kZSBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyB0aGF0OlxuICAgLSBbaW5uZXIubGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGlubmVyLmJ1ZmZlcl1cbiAgIEluIGFic2VuY2Ugb2YgZGF0YSByYWNlcywgd2UgYWxzbyBoYXZlXG4gICAtIFswIDw9IGIucG9zaXRpb24gPD0gYi5pbm5lci5sZW5ndGhdXG5cbiAgIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IFtiLnBvc2l0aW9uID0gYi5pbm5lci5sZW5ndGhdIGlzIGxlZ2FsLFxuICAgaXQgbWVhbnMgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZFxuICAgYmVmb3JlIGFueSBmdXJ0aGVyIGFkZGl0aW9uLiAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuIGxldCBuID0gaWYgbiA8IDEgdGhlbiAxIGVsc2UgbiBpblxuIGxldCBuID0gaWYgbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBlbHNlIG4gaW5cbiBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4geyBpbm5lciA9IHsgYnVmZmVyID0gczsgbGVuZ3RoID0gbn07IHBvc2l0aW9uID0gMDsgaW5pdGlhbF9idWZmZXIgPSBzfVxuXG5sZXQgY29udGVudHMgYiA9IEJ5dGVzLnN1Yl9zdHJpbmcgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5sZXQgdG9fYnl0ZXMgYiA9IEJ5dGVzLnN1YiBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IHN1YiBiIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYi5wb3NpdGlvbiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLnN1YlwiXG4gIGVsc2UgQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciBvZnMgbGVuXG5cblxubGV0IGJsaXQgc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgc3Jjb2ZmIDwgMCB8fCBzcmNvZmYgPiBzcmMucG9zaXRpb24gLSBsZW5cbiAgICAgICAgICAgICB8fCBkc3RvZmYgPCAwIHx8IGRzdG9mZiA+IChCeXRlcy5sZW5ndGggZHN0KSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmJsaXRcIlxuICBlbHNlXG4gICAgQnl0ZXMuYmxpdCBzcmMuaW5uZXIuYnVmZmVyIHNyY29mZiBkc3QgZHN0b2ZmIGxlblxuXG5cbmxldCBudGggYiBvZnMgPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IHBvc2l0aW9uIHx8IHBvc2l0aW9uID4gbGVuZ3RoIHRoZW5cbiAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2UgQnl0ZXMudW5zYWZlX2dldCBidWZmZXIgb2ZzXG5cblxubGV0IGxlbmd0aCBiID0gYi5wb3NpdGlvblxuXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgbGV0IGlubmVyID1cbiAgICB7IGJ1ZmZlciA9IGIuaW5pdGlhbF9idWZmZXI7IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aCBiLmluaXRpYWxfYnVmZmVyIH1cbiAgaW5cbiAgYi5pbm5lciA8LSBpbm5lclxuXG4oKiBbcmVzaXplIGIgbW9yZV0gZW5zdXJlcyB0aGF0IFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmlubmVyLmxlbmd0aF0gaG9sZHNcbiAgIGJ5IGR5bmFtaWNhbGx5IGV4dGVuZGluZyBbYi5pbm5lcl0gaWYgbmVjZXNzYXJ5IC0tIGFuZCB0aHVzXG4gICBpbmNyZWFzaW5nIFtiLmlubmVyLmxlbmd0aF0uXG4qKVxubGV0IHJlc2l6ZSBiIG1vcmUgPVxuICBsZXQgb2xkX3BvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IG9sZF9sZW4gPSBiLmlubmVyLmxlbmd0aCBpblxuICBsZXQgbmV3X2xlbiA9IHJlZiBvbGRfbGVuIGluXG4gIHdoaWxlIG9sZF9wb3MgKyBtb3JlID4gIW5ld19sZW4gZG8gbmV3X2xlbiA6PSAyICogIW5ld19sZW4gZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiBiZWdpblxuICAgIGlmIG9sZF9wb3MgKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIHRoZW4gbmV3X2xlbiA6PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICBlbHNlIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCJcbiAgZW5kO1xuICBsZXQgbmV3X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAhbmV3X2xlbiBpblxuICAoKiBQUiM2MTQ4OiBsZXQncyBrZWVwIHVzaW5nIFtibGl0XSByYXRoZXIgdGhhbiBbdW5zYWZlX2JsaXRdIGluXG4gICAgIHRoaXMgdHJpY2t5IGZ1bmN0aW9uIHRoYXQgaXMgc2xvdyBhbnl3YXkuICopXG4gIEJ5dGVzLmJsaXQgYi5pbm5lci5idWZmZXIgMCBuZXdfYnVmZmVyIDAgYi5wb3NpdGlvbjtcbiAgYi5pbm5lciA8LSB7IGJ1ZmZlciA9IG5ld19idWZmZXI7IGxlbmd0aCA9ICFuZXdfbGVuIH1cblxuKCogTm90ZTpcbiAgICBTb21lIG9mIHRoZSBmdW5jdGlvbnMgYmVsb3cgaGF2ZSBhIGZhc3QgcGF0aCB3aGVuIHRoZSBpbm5lclxuICBidWZmZXIgZG9lc24ndCBuZWVkIHRvIGJlIGV4dGVuZGVkLlxuICAgIEluIHRoaXMgY2FzZSwgaXQgaXMgcG9zc2libGUgdG8gdXNlIHVuc2FmZSBhY2Nlc3NlcyBvbiB0aGVcbiAgY29udGVudHMgb2YgdGhlIFtpbm5lcl0gZmllbGQgc2luY2UgaXRzIGZpZWxkcyBhcmUgaW1tdXRhYmxlLlxuICBJbiBwcmVzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBtYXkgYWNjZXNzIHRoZSB3cm9uZyBpbm5lciBidWZmZXIsIGJ1dCB3ZVxuICB3aWxsIHVzZSB0aGlzIGJ1ZmZlciBzYWZlbHkuXG4gIEFzIHNvb24gYXMgd2UgbmVlZCB0byByZXNpemUgdGhlIGJ1ZmZlciwgd2UgZmFsbCBiYWNrIHRvIHNhZmUgYWNjZXNzZXMuXG4qKVxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgcG9zID49IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIEJ5dGVzLnNldCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGNcbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX3NldCBidWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG5sZXQgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4ID0gNFxubGV0IHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXggPSA0XG5cbmxldCByZWMgYWRkX3V0Zl84X3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzhfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzhfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCByZWMgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmlubmVyLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7XG4gIGxldCBuID0gQnl0ZXMuc2V0X3V0Zl8xNmJlX3VjaGFyIGIuaW5uZXIuYnVmZmVyIHBvcyB1IGluXG4gIGlmIG4gPSAwXG4gIHRoZW4gKHJlc2l6ZSBiIHVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfMTZiZV91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2bGVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgYWRkX3N1YnN0cmluZyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGlmIG9mZnNldCA8IDAgfHwgbGVuIDwgMCB8fCBvZmZzZXQgPiBTdHJpbmcubGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfc3Vic3RyaW5nL2FkZF9zdWJieXRlc1wiO1xuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyO2xlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIGxlbiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgbGVuO1xuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIHMgb2Zmc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuXG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBidWZmZXIgcG9zaXRpb24gbGVuO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7YnVmZmVyOyBsZW5ndGh9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIGxlbjtcbiAgICBCeXRlcy5ibGl0X3N0cmluZyBzIDAgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gICkgZWxzZVxuICAgIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYnVmZmVyIHBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmlubmVyLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHRoaXMgKHByaXZhdGUpIGZ1bmN0aW9uIGNvdWxkIG1vdmUgaW50byB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxubGV0IHJlYWxseV9pbnB1dF91cF90byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpYyBidWYgfmFscmVhZHlfcmVhZCB+b2ZzIH50b19yZWFkID1cbiAgICBpZiB0b19yZWFkID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gaW5wdXQgaWMgYnVmIG9mcyB0b19yZWFkIGluXG4gICAgICBpZiByID0gMCB0aGVuIGFscmVhZHlfcmVhZFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYWxyZWFkeV9yZWFkID0gYWxyZWFkeV9yZWFkICsgciBpblxuICAgICAgICBsZXQgb2ZzID0gb2ZzICsgciBpblxuICAgICAgICBsZXQgdG9fcmVhZCA9IHRvX3JlYWQgLSByIGluXG4gICAgICAgIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGluIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQ6MCB+b2ZzIH50b19yZWFkOmxlblxuXG5cbmxldCB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gPVxuICBpZiBiLnBvc2l0aW9uICsgbGVuID4gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGxldCBuID0gcmVhbGx5X2lucHV0X3VwX3RvIGljIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuIGluXG4gIGIucG9zaXRpb24gPC0gYi5wb3NpdGlvbiArIG47XG4gIG5cblxubGV0IGFkZF9jaGFubmVsIGIgaWMgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBsZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiAgICgqIFBSIzUwMDQgKilcbiAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci5hZGRfY2hhbm5lbFwiO1xuICBsZXQgbiA9IHVuc2FmZV9hZGRfY2hhbm5lbF91cF90byBiIGljIGxlbiBpblxuICAoKiBJdCBpcyBpbnRlbnRpb25hbCB0aGF0IGEgY29uc3VtZXIgY2F0Y2hpbmcgRW5kX29mX2ZpbGVcbiAgICAgd2lsbCBzZWUgdGhlIGRhdGEgd3JpdHRlbiAoc2VlICM2NzE5LCAjNzEzNikuICopXG4gIGlmIG4gPCBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZTtcbiAgKClcblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIGlmIHMuW2ldID0gb3BlbmluZyB0aGVuIGFkdmFuY2UgKGsgKyAxKSAoaSArIDEpIGxpbSBlbHNlXG4gICAgaWYgcy5baV0gPSBjbG9zaW5nIHRoZW5cbiAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW0gdGhlbiBsaW0gZWxzZVxuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyB8ICdfJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgfCBfIC0+IGkgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCBsaW0gPVxuICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0IGluXG4gICAgIGlmIHN0b3AgPSBzdGFydCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgIFN0cmluZy5zdWIgcyBzdGFydCAoc3RvcCAtIHN0YXJ0KSwgc3RvcFxuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG5sZXQgYWRkX3N1YnN0aXR1dGUgYiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbSB0aGVuIGJlZ2luXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICAgbGV0IGogPSBpICsgMSBpblxuICAgICAgICAgYmVnaW4gbWF0Y2ggZmluZF9pZGVudCBzIGogbGltIHdpdGhcbiAgICAgICAgIHwgaWRlbnQsIG5leHRfaSAtPlxuICAgICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiAnJCc7XG4gICAgICAgICAgIHN1YnN0ICcgJyBqXG4gICAgICAgICBlbmRcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzO1xuICAgICAgICAgaWYgY3VycmVudCA8PiAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICBzdWJzdCAnICcgMFxuXG5sZXQgdHJ1bmNhdGUgYiBsZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJCdWZmZXIudHJ1bmNhdGVcIlxuICAgIGVsc2VcbiAgICAgIGIucG9zaXRpb24gPC0gbGVuXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy5nZXQgYi5pbm5lci5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy5nZXQgYi5pbm5lci5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBhZGRfc2VxIGIgc2VxID0gU2VxLml0ZXIgKGFkZF9jaGFyIGIpIHNlcVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgYiA9IGNyZWF0ZSAzMiBpblxuICBhZGRfc2VxIGIgaTtcbiAgYlxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNiA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5cbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cblxubGV0IGFkZF9pbnQ4IGIgeCA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtsZW5ndGg7IGJ1ZmZlcn0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBwb3NpdGlvbiArIDEgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgc2V0X2ludDggYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50OCBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAyIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAyO1xuICAgIHNldF9pbnQxNiBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQxNiBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyA0IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiA0O1xuICAgIHNldF9pbnQzMiBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQzMiBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyA4IGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiA4O1xuICAgIHNldF9pbnQ2NCBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIHhcbiAgKSBlbHNlXG4gICAgdW5zYWZlX3NldF9pbnQ2NCBidWZmZXIgcG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgWGF2aWVyIExlcm95IGFuZCBQYXNjYWwgQ3VvcSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdFxuZXh0ZXJuYWwgY3JlYXRlOiB1bml0IC0+IHQgPSBcImNhbWxfbWxfbXV0ZXhfbmV3XCJcbmV4dGVybmFsIGxvY2s6IHQgLT4gdW5pdCA9IFwiY2FtbF9tbF9tdXRleF9sb2NrXCJcbmV4dGVybmFsIHRyeV9sb2NrOiB0IC0+IGJvb2wgPSBcImNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcIlxuZXh0ZXJuYWwgdW5sb2NrOiB0IC0+IHVuaXQgPSBcImNhbWxfbWxfbXV0ZXhfdW5sb2NrXCJcblxuKCogcHJpdmF0ZSByZS1leHBvcnQgKilcbmV4dGVybmFsIHJlcmFpc2UgOiBleG4gLT4gJ2EgPSBcIiVyZXJhaXNlXCJcblxuKCogY2Fubm90IGlubGluZSwgb3RoZXJ3aXNlIGZsYW1iZGEgbWlnaHQgbW92ZSBjb2RlIGFyb3VuZC4gKilcbmxldFtAaW5saW5lIG5ldmVyXSBwcm90ZWN0IG0gZiA9XG4gIGxvY2sgbTtcbiAgbWF0Y2ggZigpIHdpdGhcbiAgfCB4IC0+XG4gICAgdW5sb2NrIG07IHhcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgICgqIE5PVEU6IFt1bmxvY2tdIGRvZXMgbm90IHBvbGwgZm9yIGFzeW5jaHJvbm91cyBleGNlcHRpb25zICopXG4gICAgdW5sb2NrIG07XG4gICAgcmVyYWlzZSBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIENvbGzDqGdlIGRlIEZyYW5jZSBhbmQgSU5SSUEgUGFyaXMgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogU2VtYXBob3JlcyAqKVxuXG50eXBlIHNlbSA9IHtcbiAgbXV0OiBNdXRleC50OyAgICAgICAgICAgICAgICAgICAgICAgICAoKiBwcm90ZWN0cyBbdl0gKilcbiAgbXV0YWJsZSB2OiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAoKiB0aGUgY3VycmVudCB2YWx1ZSAqKVxuICBub256ZXJvOiBDb25kaXRpb24udCAgICAgICAgICAgICAgICAgICgqIHNpZ25hbGVkIHdoZW4gW3YgPiAwXSAqKVxufVxuXG5tb2R1bGUgQ291bnRpbmcgPSBzdHJ1Y3RcblxudHlwZSB0ID0gc2VtXG5cbmxldCBtYWtlIHYgPVxuICBpZiB2IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VtYXBob3JlLkNvdW50aW5nLmluaXQ6IHdyb25nIGluaXRpYWwgdmFsdWVcIjtcbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTsgdjsgbm9uemVybyA9IENvbmRpdGlvbi5jcmVhdGUoKSB9XG5cbmxldCByZWxlYXNlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBpZiBzLnYgPCBtYXhfaW50IHRoZW4gYmVnaW5cbiAgICBzLnYgPC0gcy52ICsgMTtcbiAgICBDb25kaXRpb24uc2lnbmFsIHMubm9uemVybztcbiAgICBNdXRleC51bmxvY2sgcy5tdXRcbiAgZW5kIGVsc2UgYmVnaW5cbiAgICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gICAgcmFpc2UgKFN5c19lcnJvciBcIlNlbWFwaG9yZS5Db3VudGluZy5yZWxlYXNlOiBvdmVyZmxvd1wiKVxuICBlbmRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSBzLnYgLSAxO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSBzLnYgLSAxOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5sZXQgZ2V0X3ZhbHVlIHMgPSBzLnZcblxuZW5kXG5cbm1vZHVsZSBCaW5hcnkgPSBzdHJ1Y3RcblxudHlwZSB0ID0gc2VtXG5cbmxldCBtYWtlIGIgPVxuICB7IG11dCA9IE11dGV4LmNyZWF0ZSgpO1xuICAgIHYgPSBpZiBiIHRoZW4gMSBlbHNlIDA7XG4gICAgbm9uemVybyA9IENvbmRpdGlvbi5jcmVhdGUoKSB9XG5cbmxldCByZWxlYXNlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBzLnYgPC0gMTtcbiAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgd2hpbGUgcy52ID0gMCBkbyBDb25kaXRpb24ud2FpdCBzLm5vbnplcm8gcy5tdXQgZG9uZTtcbiAgcy52IDwtIDA7XG4gIE11dGV4LnVubG9jayBzLm11dFxuXG5sZXQgdHJ5X2FjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIGxldCByZXQgPSBpZiBzLnYgPSAwIHRoZW4gZmFsc2UgZWxzZSAocy52IDwtIDA7IHRydWUpIGluXG4gIE11dGV4LnVubG9jayBzLm11dDtcbiAgcmV0XG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICBLQyBTaXZhcmFtYWtyaXNobmFuLCBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgIFN0ZXBoZW4gRG9sYW4sIFVuaXZlcnNpdHkgb2YgQ2FtYnJpZGdlICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgVG9tIEtlbGx5LCBPQ2FtbCBMYWJzIENvbnN1bHRhbmN5ICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBPQ2FtbCBMYWJzIENvbnN1bHRhbmN5IEx0ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gICgqIExvdy1sZXZlbCBwcmltaXRpdmVzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lICopXG4gIHR5cGUgdCA9IHByaXZhdGUgaW50XG5cbiAgKCogVGhlIGxheW91dHMgb2YgW3N0YXRlXSBhbmQgW3Rlcm1fc3luY10gYXJlIGhhcmQtY29kZWQgaW5cbiAgICAgW3J1bnRpbWUvZG9tYWluLmNdICopXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBSdW5uaW5nXG4gICAgfCBGaW5pc2hlZCBvZiAoJ2EsIGV4bikgcmVzdWx0IFtAd2FybmluZyBcIi11bnVzZWQtY29uc3RydWN0b3JcIl1cblxuICB0eXBlICdhIHRlcm1fc3luYyA9IHtcbiAgICAoKiBwcm90ZWN0ZWQgYnkgW211dF0gKilcbiAgICBtdXRhYmxlIHN0YXRlIDogJ2Egc3RhdGUgW0B3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXSA7XG4gICAgbXV0IDogTXV0ZXgudCA7XG4gICAgY29uZCA6IENvbmRpdGlvbi50IDtcbiAgfVxuXG4gIGV4dGVybmFsIHNwYXduIDogKHVuaXQgLT4gJ2EpIC0+ICdhIHRlcm1fc3luYyAtPiB0XG4gICAgPSBcImNhbWxfZG9tYWluX3NwYXduXCJcbiAgZXh0ZXJuYWwgc2VsZiA6IHVuaXQgLT4gdFxuICAgID0gXCJjYW1sX21sX2RvbWFpbl9pZFwiIFtAQG5vYWxsb2NdXG4gIGV4dGVybmFsIGNwdV9yZWxheCA6IHVuaXQgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcIlxuICBleHRlcm5hbCBnZXRfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50OiB1bml0IC0+IGludFxuICAgID0gXCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFwiIFtAQG5vYWxsb2NdXG5lbmRcblxubGV0IGNwdV9yZWxheCAoKSA9IFJhdy5jcHVfcmVsYXggKClcblxudHlwZSBpZCA9IFJhdy50XG5cbnR5cGUgJ2EgdCA9IHtcbiAgZG9tYWluIDogUmF3LnQ7XG4gIHRlcm1fc3luYyA6ICdhIFJhdy50ZXJtX3N5bmM7XG59XG5cbm1vZHVsZSBETFMgPSBzdHJ1Y3RcblxuICBtb2R1bGUgT2JqX29wdCA6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBub25lIDogdFxuICAgIHZhbCBzb21lIDogJ2EgLT4gdFxuICAgIHZhbCBpc19zb21lIDogdCAtPiBib29sXG5cbiAgICAoKiogW3Vuc2FmZV9nZXQgb2JqXSBtYXkgb25seSBiZSBjYWxsZWQgc2FmZWx5XG4gICAgICAgIGlmIFtpc19zb21lXSBpcyB0cnVlLlxuXG4gICAgICAgIFt1bnNhZmVfZ2V0IChzb21lIHYpXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIFtPYmoub2JqIChPYmoucmVwciB2KV0uICopXG4gICAgdmFsIHVuc2FmZV9nZXQgOiB0IC0+ICdhXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IE9iai50XG4gICAgbGV0IG5vbmUgPSBPYmoucmVwciAocmVmIDApXG4gICAgbGV0IHNvbWUgdiA9IE9iai5yZXByIHZcbiAgICBsZXQgaXNfc29tZSBvYmogPSAob2JqICE9IG5vbmUpXG4gICAgbGV0IHVuc2FmZV9nZXQgb2JqID0gT2JqLm9iaiBvYmpcbiAgZW5kXG5cbiAgdHlwZSBkbHNfc3RhdGUgPSBPYmpfb3B0LnQgYXJyYXlcblxuICBleHRlcm5hbCBnZXRfZGxzX3N0YXRlIDogdW5pdCAtPiBkbHNfc3RhdGUgPSBcIiVkbHNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXRfZGxzX3N0YXRlIDogZGxzX3N0YXRlIC0+IHVuaXQgPVxuICAgIFwiY2FtbF9kb21haW5fZGxzX3NldFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgY29tcGFyZV9hbmRfc2V0X2Rsc19zdGF0ZSA6IGRsc19zdGF0ZSAtPiBkbHNfc3RhdGUgLT4gYm9vbCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfY29tcGFyZV9hbmRfc2V0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlX2RscyAoKSA9XG4gICAgbGV0IHN0ID0gQXJyYXkubWFrZSA4IE9ial9vcHQubm9uZSBpblxuICAgIHNldF9kbHNfc3RhdGUgc3RcblxuICBsZXQgXyA9IGNyZWF0ZV9kbHMgKClcblxuICB0eXBlICdhIGtleSA9IGludCAqICh1bml0IC0+ICdhKVxuXG4gIGxldCBrZXlfY291bnRlciA9IEF0b21pYy5tYWtlIDBcblxuICB0eXBlIGtleV9pbml0aWFsaXplciA9XG4gICAgS0k6ICdhIGtleSAqICgnYSAtPiAnYSkgLT4ga2V5X2luaXRpYWxpemVyXG5cbiAgbGV0IHBhcmVudF9rZXlzID0gQXRvbWljLm1ha2UgKFtdIDoga2V5X2luaXRpYWxpemVyIGxpc3QpXG5cbiAgbGV0IHJlYyBhZGRfcGFyZW50X2tleSBraSA9XG4gICAgbGV0IGwgPSBBdG9taWMuZ2V0IHBhcmVudF9rZXlzIGluXG4gICAgaWYgbm90IChBdG9taWMuY29tcGFyZV9hbmRfc2V0IHBhcmVudF9rZXlzIGwgKGtpIDo6IGwpKVxuICAgIHRoZW4gYWRkX3BhcmVudF9rZXkga2lcblxuICBsZXQgbmV3X2tleSA/c3BsaXRfZnJvbV9wYXJlbnQgaW5pdF9vcnBoYW4gPVxuICAgIGxldCBpZHggPSBBdG9taWMuZmV0Y2hfYW5kX2FkZCBrZXlfY291bnRlciAxIGluXG4gICAgbGV0IGsgPSAoaWR4LCBpbml0X29ycGhhbikgaW5cbiAgICBiZWdpbiBtYXRjaCBzcGxpdF9mcm9tX3BhcmVudCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNwbGl0IC0+IGFkZF9wYXJlbnRfa2V5IChLSShrLCBzcGxpdCkpXG4gICAgZW5kO1xuICAgIGtcblxuICAoKiBJZiBuZWNlc3NhcnksIGdyb3cgdGhlIGN1cnJlbnQgZG9tYWluJ3MgbG9jYWwgc3RhdGUgYXJyYXkgc3VjaCB0aGF0IFtpZHhdXG4gICAqIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5LiAqKVxuICBsZXQgcmVjIG1heWJlX2dyb3cgaWR4ID1cbiAgICBsZXQgc3QgPSBnZXRfZGxzX3N0YXRlICgpIGluXG4gICAgbGV0IHN6ID0gQXJyYXkubGVuZ3RoIHN0IGluXG4gICAgaWYgaWR4IDwgc3ogdGhlbiBzdFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByZWMgY29tcHV0ZV9uZXdfc2l6ZSBzID1cbiAgICAgICAgaWYgaWR4IDwgcyB0aGVuIHMgZWxzZSBjb21wdXRlX25ld19zaXplICgyICogcylcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N6ID0gY29tcHV0ZV9uZXdfc2l6ZSBzeiBpblxuICAgICAgbGV0IG5ld19zdCA9IEFycmF5Lm1ha2UgbmV3X3N6IE9ial9vcHQubm9uZSBpblxuICAgICAgQXJyYXkuYmxpdCBzdCAwIG5ld19zdCAwIHN6O1xuICAgICAgKCogV2Ugd2FudCBhIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgc2FmZSB3aXRoIHJlc3BlY3QgdG9cbiAgICAgICAgIHNpbmdsZS1kb21haW4gbXVsdGktdGhyZWFkaW5nOiByZXRyeSBpZiB0aGUgRExTIHN0YXRlIGhhc1xuICAgICAgICAgY2hhbmdlZCB1bmRlciBvdXIgZmVldC5cbiAgICAgICAgIE5vdGUgdGhhdCB0aGUgbnVtYmVyIG9mIHJldHJpZXMgd2lsbCBiZSB2ZXJ5IHNtYWxsIGluXG4gICAgICAgICBjb250ZW5kZWQgc2NlbmFyaW9zLCBhcyB0aGUgYXJyYXkgb25seSBncm93cywgd2l0aFxuICAgICAgICAgZXhwb25lbnRpYWwgcmVzaXppbmcuICopXG4gICAgICBpZiBjb21wYXJlX2FuZF9zZXRfZGxzX3N0YXRlIHN0IG5ld19zdFxuICAgICAgdGhlbiBuZXdfc3RcbiAgICAgIGVsc2UgbWF5YmVfZ3JvdyBpZHhcbiAgICBlbmRcblxuICBsZXQgc2V0ICh0eXBlIGEpIChpZHgsIF9pbml0KSAoeCA6IGEpID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgICgqIFtTeXMub3BhcXVlX2lkZW50aXR5XSBlbnN1cmVzIHRoYXQgZmxhbWJkYSBkb2VzIG5vdCBsb29rIGF0IHRoZSB0eXBlIG9mXG4gICAgICogW3hdLCB3aGljaCBtYXkgYmUgYSBbZmxvYXRdIGFuZCBjb25jbHVkZSB0aGF0IHRoZSBbc3RdIGlzIGEgZmxvYXQgYXJyYXkuXG4gICAgICogV2UgZG8gbm90IHdhbnQgT0NhbWwncyBmbG9hdCBhcnJheSBvcHRpbWlzYXRpb24ga2lja2luZyBpbiBoZXJlLiAqKVxuICAgIHN0LihpZHgpIDwtIE9ial9vcHQuc29tZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSB4KVxuXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGFycmF5X2NvbXBhcmVfYW5kX3NldCBhIGkgb2xkdmFsIG5ld3ZhbCA9XG4gICAgKCogTm90ZTogd2UgY2Fubm90IHVzZSBbQHBvbGwgZXJyb3JdIGR1ZSB0byB0aGVcbiAgICAgICBhbGxvY2F0aW9ucyBvbiBhLihpKSBpbiB0aGUgRG91YmxlX2FycmF5IGNhc2UuICopXG4gICAgbGV0IGN1cnZhbCA9IGEuKGkpIGluXG4gICAgaWYgY3VydmFsID09IG9sZHZhbCB0aGVuIChcbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIG5ld3ZhbDtcbiAgICAgIHRydWVcbiAgICApIGVsc2UgZmFsc2VcblxuICBsZXQgZ2V0ICh0eXBlIGEpICgoaWR4LCBpbml0KSA6IGEga2V5KSA6IGEgPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgbGV0IG9iaiA9IHN0LihpZHgpIGluXG4gICAgaWYgT2JqX29wdC5pc19zb21lIG9ialxuICAgIHRoZW4gKE9ial9vcHQudW5zYWZlX2dldCBvYmogOiBhKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2IDogYSA9IGluaXQgKCkgaW5cbiAgICAgIGxldCBuZXdfb2JqID0gT2JqX29wdC5zb21lIChTeXMub3BhcXVlX2lkZW50aXR5IHYpIGluXG4gICAgICAoKiBBdCB0aGlzIHBvaW50LCBbc3RdIG9yIFtzdC4oaWR4KV0gbWF5IGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgICAgICBieSBhbm90aGVyIHRocmVhZCBvbiB0aGUgc2FtZSBkb21haW4uXG5cbiAgICAgICAgIElmIFtzdF0gY2hhbmdlZCwgaXQgd2FzIHJlc2l6ZWQgaW50byBhIGxhcmdlciB2YWx1ZSxcbiAgICAgICAgIHdlIGNhbiBqdXN0IHJldXNlIHRoZSBuZXcgdmFsdWUuXG5cbiAgICAgICAgIElmIFtzdC4oaWR4KV0gY2hhbmdlZCwgd2UgZHJvcCB0aGUgY3VycmVudCB2YWx1ZSB0byBhdm9pZFxuICAgICAgICAgbGV0dGluZyBvdGhlciB0aHJlYWRzIG9ic2VydmUgYSAncmV2ZXJ0JyB0aGF0IGZvcmdldHNcbiAgICAgICAgIHByZXZpb3VzIG1vZGlmaWNhdGlvbnMuICopXG4gICAgICBsZXQgc3QgPSBnZXRfZGxzX3N0YXRlICgpIGluXG4gICAgICBpZiBhcnJheV9jb21wYXJlX2FuZF9zZXQgc3QgaWR4IG9iaiBuZXdfb2JqXG4gICAgICB0aGVuIHZcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgKCogaWYgc3QuKGlkeCkgY2hhbmdlZCwgc29tZW9uZSBtdXN0IGhhdmUgaW5pdGlhbGl6ZWRcbiAgICAgICAgICAgdGhlIGtleSBpbiB0aGUgbWVhbnRpbWUuICopXG4gICAgICAgIGxldCB1cGRhdGVkX29iaiA9IHN0LihpZHgpIGluXG4gICAgICAgIGlmIE9ial9vcHQuaXNfc29tZSB1cGRhdGVkX29ialxuICAgICAgICB0aGVuIChPYmpfb3B0LnVuc2FmZV9nZXQgdXBkYXRlZF9vYmogOiBhKVxuICAgICAgICBlbHNlIGFzc2VydCBmYWxzZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgdHlwZSBrZXlfdmFsdWUgPSBLViA6ICdhIGtleSAqICdhIC0+IGtleV92YWx1ZVxuXG4gIGxldCBnZXRfaW5pdGlhbF9rZXlzICgpIDoga2V5X3ZhbHVlIGxpc3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIChLSSAoaywgc3BsaXQpKSAtPiBLViAoaywgKHNwbGl0IChnZXQgaykpKSlcbiAgICAgIChBdG9taWMuZ2V0IHBhcmVudF9rZXlzKVxuXG4gIGxldCBzZXRfaW5pdGlhbF9rZXlzIChsOiBrZXlfdmFsdWUgbGlzdCkgPVxuICAgIExpc3QuaXRlciAoZnVuIChLViAoaywgdikpIC0+IHNldCBrIHYpIGxcbmVuZFxuXG4oKioqKioqKiogSWRlbnRpdHkgKioqKioqKioqKilcblxubGV0IGdldF9pZCB7IGRvbWFpbjsgXyB9ID0gZG9tYWluXG5cbmxldCBzZWxmICgpID0gUmF3LnNlbGYgKClcblxubGV0IGlzX21haW5fZG9tYWluICgpID0gKHNlbGYgKCkgOj4gaW50KSA9IDBcblxuKCoqKioqKioqIENhbGxiYWNrcyAqKioqKioqKioqKVxuXG4oKiBmaXJzdCBzcGF3biwgZG9tYWluIHN0YXJ0dXAgYW5kIGF0IGV4aXQgZnVuY3Rpb25hbGl0eSAqKVxubGV0IGZpcnN0X2RvbWFpbl9zcGF3bmVkID0gQXRvbWljLm1ha2UgZmFsc2VcblxubGV0IGZpcnN0X3NwYXduX2Z1bmN0aW9uID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBiZWZvcmVfZmlyc3Rfc3Bhd24gZiA9XG4gIGlmIEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlyc3QgZG9tYWluIGFscmVhZHkgc3Bhd25lZFwiKVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG9sZF9mID0gIWZpcnN0X3NwYXduX2Z1bmN0aW9uIGluXG4gICAgbGV0IG5ld19mICgpID0gb2xkX2YgKCk7IGYgKCkgaW5cbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSBuZXdfZlxuICBlbmRcblxubGV0IGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKSA9XG4gIGlmIG5vdCAoQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCkgdGhlbiBiZWdpblxuICAgIEF0b21pYy5zZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdHJ1ZTtcbiAgICAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24oKTtcbiAgICAoKiBSZWxlYXNlIHRoZSBvbGQgZnVuY3Rpb24gKilcbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSAoZnVuICgpIC0+ICgpKVxuICBlbmRcblxubGV0IGF0X2V4aXRfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPiAoZnVuICgpIC0+ICgpKSlcblxubGV0IGF0X2V4aXQgZiA9XG4gIGxldCBvbGRfZXhpdCA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICBmICgpOyBvbGRfZXhpdCAoKVxuICBpblxuICBETFMuc2V0IGF0X2V4aXRfa2V5IG5ld19leGl0XG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgbGV0IGYgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGYgKClcblxubGV0IF8gPSBTdGRsaWIuZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgOj0gZG9fYXRfZXhpdFxuXG4oKioqKioqKiBDcmVhdGlvbiBhbmQgVGVybWluYXRpb24gKioqKioqKiopXG5cbmxldCBzcGF3biBmID1cbiAgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpO1xuICBsZXQgcGsgPSBETFMuZ2V0X2luaXRpYWxfa2V5cyAoKSBpblxuXG4gICgqIFt0ZXJtX3N5bmNdIGlzIHVzZWQgdG8gc3luY2hyb25pemUgd2l0aCB0aGUgam9pbmluZyBkb21haW5zICopXG4gIGxldCB0ZXJtX3N5bmMgPVxuICAgIFJhdy57IHN0YXRlID0gUnVubmluZyA7XG4gICAgICAgICAgbXV0ID0gTXV0ZXguY3JlYXRlICgpIDtcbiAgICAgICAgICBjb25kID0gQ29uZGl0aW9uLmNyZWF0ZSAoKSB9XG4gIGluXG5cbiAgbGV0IGJvZHkgKCkgPVxuICAgIG1hdGNoXG4gICAgICBETFMuY3JlYXRlX2RscyAoKTtcbiAgICAgIERMUy5zZXRfaW5pdGlhbF9rZXlzIHBrO1xuICAgICAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgICAgIHJlc1xuICAgIHdpdGhcbiAgICAoKiBSdW4gdGhlIFthdF9leGl0XSBjYWxsYmFja3Mgd2hlbiB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIGVpdGhlclxuICAgICAgIHRlcm1pbmF0ZXMgbm9ybWFsbHkgb3IgZXhjZXB0aW9uYWxseS4gKilcbiAgICB8IHJlcyAtPlxuICAgICAgICAoKiBJZiB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIHRlcm1pbmF0ZWQgbm9ybWFsbHksIGJ1dCB0aGVcbiAgICAgICAgICAgW2F0X2V4aXRdIGNhbGxiYWNrcyByYWlzZWQgYW4gZXhjZXB0aW9uLCB0aGVuIHJldHVybiB0aGVcbiAgICAgICAgICAgZXhjZXB0aW9uLiAqKVxuICAgICAgICBkb19hdF9leGl0ICgpO1xuICAgICAgICByZXNcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgKCogSWYgYm90aCB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIGFuZCB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrc1xuICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLCB0aGVuIGlnbm9yZSB0aGUgZXhjZXB0aW9uIGZyb20gdGhlXG4gICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgYW5kIHJldHVybiB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLiAqKVxuICAgICAgICAodHJ5IGRvX2F0X2V4aXQgKCkgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgcmFpc2UgZXhuXG4gIGluXG4gIGxldCBkb21haW4gPSBSYXcuc3Bhd24gYm9keSB0ZXJtX3N5bmMgaW5cbiAgeyBkb21haW4gOyB0ZXJtX3N5bmMgfVxuXG5sZXQgam9pbiB7IHRlcm1fc3luYyA7IF8gfSA9XG4gIGxldCBvcGVuIFJhdyBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hdGNoIHRlcm1fc3luYy5zdGF0ZSB3aXRoXG4gICAgfCBSdW5uaW5nIC0+XG4gICAgICAgIENvbmRpdGlvbi53YWl0IHRlcm1fc3luYy5jb25kIHRlcm1fc3luYy5tdXQ7XG4gICAgICAgIGxvb3AgKClcbiAgICB8IEZpbmlzaGVkIHJlcyAtPlxuICAgICAgICByZXNcbiAgaW5cbiAgbWF0Y2ggTXV0ZXgucHJvdGVjdCB0ZXJtX3N5bmMubXV0IGxvb3Agd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4IC0+IHJhaXNlIGV4XG5cbmxldCByZWNvbW1lbmRlZF9kb21haW5fY291bnQgPSBSYXcuZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgIEJlbm9pdCBWYXVnb24sIEVOU1RBICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAoKiBUb29scyB0byBtYW5pcHVsYXRlIHNjYW5uaW5nIHNldCBvZiBjaGFycyAoc2VlICVbLi4uXSkgKilcblxudHlwZSBtdXRhYmxlX2NoYXJfc2V0ID0gYnl0ZXNcblxuKCogQ3JlYXRlIGEgZnJlc2gsIGVtcHR5LCBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGNyZWF0ZV9jaGFyX3NldCAoKSA9IEJ5dGVzLm1ha2UgMzIgJ1xcMDAwJ1xuXG4oKiBBZGQgYSBjaGFyIGluIGEgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICBCeXRlcy5zZXQgY2hhcl9zZXQgc3RyX2luZFxuICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKEJ5dGVzLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsb3IgbWFzaykpXG5cbmxldCBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBCeXRlcy50b19zdHJpbmcgY2hhcl9zZXRcblxuKCogQ29tcHV0ZSB0aGUgY29tcGxlbWVudCBvZiBhIGNoYXIgc2V0LiAqKVxubGV0IHJldl9jaGFyX3NldCBjaGFyX3NldCA9XG4gIGxldCBjaGFyX3NldCcgPSBjcmVhdGVfY2hhcl9zZXQgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIDMxIGRvXG4gICAgQnl0ZXMuc2V0IGNoYXJfc2V0JyBpXG4gICAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IGkpIGx4b3IgMHhGRikpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGNoYXJfc2V0J1xuXG4oKiBSZXR1cm4gdHJ1ZSBpZiBhIGBjJyBpcyBpbiBgY2hhcl9zZXQnLiAqKVxubGV0IGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgKGludF9vZl9jaGFyIChTdHJpbmcuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxhbmQgbWFzaykgPD4gMFxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCogSWdub3JlZCBwYXJhbSBjb252ZXJzaW9uICopXG5cbigqIEdBRFQgdXNlZCB0byBhYnN0cmFjdCBhbiBleGlzdGVudGlhbCB0eXBlIHBhcmFtZXRlci4gKilcbigqIFNlZSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiID0gUGFyYW1fZm9ybWF0X0VCQiA6XG4gICAgKCd4IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYXJhbV9mb3JtYXRfZWJiXG5cbigqIENvbXB1dGUgYSBwYWRkaW5nIGFzc29jaWF0ZWQgdG8gYSBwYWRfb3B0aW9uIChzZWUgXCIlXzQyZFwiKS4gKilcbmxldCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wYWRkaW5nXG4gIHwgU29tZSB3aWR0aCAtPiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuXG4oKiBDb21wdXRlIGEgcHJlY2lzaW9uIGFzc29jaWF0ZWQgdG8gYSBwcmVjX29wdGlvbiAoc2VlIFwiJV8uNDJmXCIpLiAqKVxubGV0IHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQgPSBtYXRjaCBwcmVjX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBOb19wcmVjaXNpb25cbiAgfCBTb21lIG5kZWMgLT4gTGl0X3ByZWNpc2lvbiBuZGVjXG5cbigqIFR1cm4gYW4gaWdub3JlZCBwYXJhbSBpbnRvIGl0cyBlcXVpdmFsZW50IG5vdC1pZ25vcmVkIGZvcm1hdCBub2RlLiAqKVxuKCogVXNlZCBmb3IgZm9ybWF0IHByZXR0eS1wcmludGluZyBhbmQgU2NhbmYuICopXG5sZXQgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSBhIGIgYyBkIGUgZiB4IHkgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+ICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYXJhbV9mb3JtYXRfZWJiID1cbmZ1biBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2hhciBmbXQpXG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChDYW1sX2NoYXIgZm10KVxuICB8IElnbm9yZWRfc3RyaW5nIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEludCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2ludDMyIChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoSW50MzIgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChOYXRpdmVpbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQ2NCAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDY0IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfZmxvYXQgKHBhZF9vcHQsIHByZWNfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGbG9hdCAoKEZsb2F0X2ZsYWdfLCBGbG9hdF9mKSxcbiAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgcHJlY19vZl9wcmVjX29wdCBwcmVjX29wdCwgZm10KSlcbiAgfCBJZ25vcmVkX2Jvb2wgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKEJvb2wgKHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgZm10KSlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChSZWFkZXIgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQpKVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9uZXh0X2NoYXIgZm10KVxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUeXBlcyAqKVxuXG50eXBlICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlbiA9XG4gIHwgQWNjX29wZW5fdGFnIG9mICgnYiwgJ2MpIGFjY1xuICB8IEFjY19vcGVuX2JveCBvZiAoJ2IsICdjKSBhY2NcblxuKCogUmV2ZXJzZWQgbGlzdCBvZiBwcmludGluZyBhdG9tcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBwcmludGYgYXJndW1lbnRzLiAqKVxuYW5kICgnYiwgJ2MpIGFjYyA9XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IG9mICgnYiwgJ2MpIGFjYyAqIGZvcm1hdHRpbmdfbGl0XG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gb2YgKCdiLCAnYykgYWNjICogKCdiLCAnYykgYWNjX2Zvcm1hdHRpbmdfZ2VuXG4gICAgICAoKiBTcGVjaWFsIGZtdHRpbmcgKGJveCkgKilcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBMaXRlcmFsIHN0cmluZyAqKVxuICB8IEFjY19jaGFyX2xpdGVyYWwgICBvZiAoJ2IsICdjKSBhY2MgKiBjaGFyICAgICAgICgqIExpdGVyYWwgY2hhciAqKVxuICB8IEFjY19kYXRhX3N0cmluZyAgICBvZiAoJ2IsICdjKSBhY2MgKiBzdHJpbmcgICAgICgqIEdlbmVyYXRlZCBzdHJpbmcgKilcbiAgfCBBY2NfZGF0YV9jaGFyICAgICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBHZW5lcmF0ZWQgY2hhciAqKVxuICB8IEFjY19kZWxheSAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgKiAoJ2IgLT4gJ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBEZWxheWVkIHByaW50aW5nICglYSwgJXQpICopXG4gIHwgQWNjX2ZsdXNoICAgICAgICAgIG9mICgnYiwgJ2MpIGFjYyAgICAgICAgICAgICAgKCogRmx1c2ggKilcbiAgfCBBY2NfaW52YWxpZF9hcmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nXG4gICAgICAoKiBSYWlzZSBJbnZhbGlkX2FyZ3VtZW50IG1zZyAqKVxuICB8IEVuZF9vZl9hY2NcblxuKCogTGlzdCBvZiBoZXRlcm9nZW5lb3VzIHZhbHVlcy4gKilcbigqIFVzZWQgdG8gYWNjdW11bGF0ZSBzY2FuZiBjYWxsYmFjayBhcmd1bWVudHMuICopXG50eXBlICgnYSwgJ2IpIGhldGVyX2xpc3QgPVxuICB8IENvbnMgOiAnYyAqICgnYSwgJ2IpIGhldGVyX2xpc3QgLT4gKCdjIC0+ICdhLCAnYikgaGV0ZXJfbGlzdFxuICB8IE5pbCA6ICgnYiwgJ2IpIGhldGVyX2xpc3RcblxuKCogRXhpc3RlbnRpYWwgQmxhY2sgQm94ZXMuICopXG4oKiBVc2VkIHRvIGFic3RyYWN0IHNvbWUgZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRkaW5nIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkZGluZ19mbXR0eV9lYmIgPSBQYWRkaW5nX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXR0eS4gKilcbigqIFNlZSB0aGUgdHlwZV9wYWRwcmVjIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFkcHJlY19mbXR0eV9lYmIgPSBQYWRwcmVjX2ZtdHR5X0VCQiA6XG4gICAgICgneCwgJ3kpIHBhZGRpbmcgKiAoJ3ksICd6KSBwcmVjaXNpb24gKiAoJ3osICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHBhZGRpbmcgYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZGRpbmdfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiID0gUGFkZGluZ19mbXRfRUJCIDpcbiAgICAgKF8sICd4IC0+ICdhKSBwYWRkaW5nICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwYWRkaW5nX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcHJlY2lzaW9uIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wcmVjaXNpb25fZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmIgPSBQcmVjaXNpb25fZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3gsICdiLCAnYywgJ2UsICdmKSBwcmVjaXNpb25fZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcGFkcHJlY19mbXRfZWJiIGFuZCBwYXJzZV9mb3JtYXQgZnVuY3Rpb25zLiAqKVxudHlwZSAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmIgPSBQYWRwcmVjX2ZtdF9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAncCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAoJ3AsICdiLCAnYywgJ2UsICdmKSBwYWRwcmVjX2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgdGhlICdhIGFuZCAnZCBwYXJhbWV0ZXJzIG9mIGFuIGZtdC4gKilcbigqIE91dHB1dCB0eXBlIG9mIHRoZSBmb3JtYXQgcGFyc2luZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiID0gRm10X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdiLCAnYywgJ2UsICdmKSBmbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2Zvcm1hdF9nZW4gZnVuY3Rpb24uICopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiID0gRm10X2ZtdHR5X0VCQiA6XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBmbXQgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10dHkgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGFuIGZtdHR5IGFuZCBhbiBmbXQuICopXG4oKiBTZWUgdGhlIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYiA9IEZtdHR5X2ZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10dHkgKlxuICAgICAoJ3gsICdiLCAnYywgJ3ksICdlLCAnZikgZm10X2ZtdHR5X2ViYiAtPlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfZm10X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgZm10dHkgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIGZvcm1hdCB0eXBlcy4gKilcbnR5cGUgZm10dHlfZWJiID0gRm10dHlfRUJCIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+IGZtdHR5X2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcGFkZGluZyB0eXBlIHBhcmFtZXRlcnMuICopXG4oKiBVc2VkIHRvIGNvbXBhcmUgcGFkZGluZ3MuICopXG50eXBlIHBhZGRpbmdfZWJiID0gUGFkZGluZ19FQkIgOiAoJ2EsICdiKSBwYWRkaW5nIC0+IHBhZGRpbmdfZWJiXG5cbigqIEFic3RyYWN0IGFsbCBwcmVjaXNpb24gdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHByZWNpc2lvbnMuICopXG50eXBlIHByZWNpc2lvbl9lYmIgPSBQcmVjaXNpb25fRUJCIDogKCdhLCAnYikgcHJlY2lzaW9uIC0+IHByZWNpc2lvbl9lYmJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBDb25zdGFudHMgKilcblxuKCogRGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0IHByaW50aW5nLiAqKVxubGV0IGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252ID1cbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyB8IEZsb2F0X2ggfCBGbG9hdF9IXG4gIHwgRmxvYXRfQ0YgLT4gLTZcbiAgKCogRm9yICVoICVIIGFuZCAlI0YgZm9ybWF0cywgYSBuZWdhdGl2ZSBwcmVjaXNpb24gbWVhbnMgXCJhcyBtYW55IGRpZ2l0cyBhc1xuICAgICBuZWNlc3NhcnlcIi4gIEZvciB0aGUgb3RoZXIgRlAgZm9ybWF0cywgd2UgdGFrZSB0aGUgYWJzb2x1dGUgdmFsdWVcbiAgICAgb2YgdGhlIHByZWNpc2lvbiwgaGVuY2UgNiBkaWdpdHMgYnkgZGVmYXVsdC4gKilcbiAgfCBGbG9hdF9GIC0+IDEyXG4gICgqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBPQ2FtbCBmbG9hdCBwcmludGluZyAoJUYpLiAqKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEV4dGVybmFscyAqKVxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQ6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2ludDMyOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfbmF0aXZlaW50OiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQ2NDogc3RyaW5nIC0+IGludDY0IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQ2NF9mb3JtYXRcIlxuZXh0ZXJuYWwgaGV4c3RyaW5nX29mX2Zsb2F0OiBmbG9hdCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0XCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICgqIFRvb2xzIHRvIHByZXR0eS1wcmludCBmb3JtYXRzICopXG5cbigqIFR5cGUgb2YgZXh0ZW5zaWJsZSBjaGFyYWN0ZXIgYnVmZmVycy4gKilcbnR5cGUgYnVmZmVyID0ge1xuICBtdXRhYmxlIGluZCA6IGludDtcbiAgbXV0YWJsZSBieXRlcyA6IGJ5dGVzO1xufVxuXG4oKiBDcmVhdGUgYSBmcmVzaCBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NyZWF0ZSBpbml0X3NpemUgPSB7IGluZCA9IDA7IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGluaXRfc2l6ZSB9XG5cbigqIENoZWNrIHNpemUgb2YgdGhlIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiBuZWVkZWQuICopXG5sZXQgYnVmZmVyX2NoZWNrX3NpemUgYnVmIG92ZXJoZWFkID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYuYnl0ZXMgaW5cbiAgbGV0IG1pbl9sZW4gPSBidWYuaW5kICsgb3ZlcmhlYWQgaW5cbiAgaWYgbWluX2xlbiA+IGxlbiB0aGVuIChcbiAgICBsZXQgbmV3X2xlbiA9IEludC5tYXggKGxlbiAqIDIpIG1pbl9sZW4gaW5cbiAgICBsZXQgbmV3X3N0ciA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYuYnl0ZXMgMCBuZXdfc3RyIDAgbGVuO1xuICAgIGJ1Zi5ieXRlcyA8LSBuZXdfc3RyO1xuICApXG5cbigqIEFkZCB0aGUgY2hhcmFjdGVyIGBjJyB0byB0aGUgYnVmZmVyIGBidWYnLiAqKVxubGV0IGJ1ZmZlcl9hZGRfY2hhciBidWYgYyA9XG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiAxO1xuICBCeXRlcy5zZXQgYnVmLmJ5dGVzIGJ1Zi5pbmQgYztcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgMVxuXG4oKiBBZGQgdGhlIHN0cmluZyBgcycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX3N0cmluZyBidWYgcyA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBzdHJfbGVuO1xuICBTdHJpbmcuYmxpdCBzIDAgYnVmLmJ5dGVzIGJ1Zi5pbmQgc3RyX2xlbjtcbiAgYnVmLmluZCA8LSBidWYuaW5kICsgc3RyX2xlblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGJ1ZmZlci4gKilcbmxldCBidWZmZXJfY29udGVudHMgYnVmID1cbiAgQnl0ZXMuc3ViX3N0cmluZyBidWYuYnl0ZXMgMCBidWYuaW5kXG5cbigqKiopXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciBjb252ZXJzaW9uIHRvIGNoYXIuICopXG5sZXQgY2hhcl9vZl9pY29udiBpY29udiA9IG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCB8IEludF9DZCAtPiAnZCcgfCBJbnRfaSB8IEludF9waSB8IEludF9zaVxuICB8IEludF9DaSAtPiAnaScgfCBJbnRfeCB8IEludF9DeCAtPiAneCcgfCBJbnRfWCB8IEludF9DWCAtPiAnWCcgfCBJbnRfb1xuICB8IEludF9DbyAtPiAnbycgfCBJbnRfdSB8IEludF9DdSAtPiAndSdcblxuKCogQ29udmVydCBhIGZsb2F0IGNvbnZlcnNpb24gdG8gY2hhci4gKilcbigqIGBjRicgd2lsbCBiZSAnRicgZm9yIGRpc3BsYXlpbmcgZm9ybWF0IGFuZCAnZycgdG8gY2FsbCBsaWJjIHByaW50ZiAqKVxubGV0IGNoYXJfb2ZfZmNvbnYgPyhjRj0nRicpIGZjb252ID0gbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9mIC0+ICdmJyB8IEZsb2F0X2UgLT4gJ2UnXG4gIHwgRmxvYXRfRSAtPiAnRScgfCBGbG9hdF9nIC0+ICdnJ1xuICB8IEZsb2F0X0cgLT4gJ0cnIHwgRmxvYXRfRiAtPiBjRlxuICB8IEZsb2F0X2ggLT4gJ2gnIHwgRmxvYXRfSCAtPiAnSCdcbiAgfCBGbG9hdF9DRiAtPiAnRidcblxuXG4oKiBDb252ZXJ0IGEgc2Nhbm5pbmcgY291bnRlciB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfY291bnRlciBjb3VudGVyID0gbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyICAtPiAnbCdcbiAgfCBDaGFyX2NvdW50ZXIgIC0+ICduJ1xuICB8IFRva2VuX2NvdW50ZXIgLT4gJ04nXG5cbigqKiopXG5cbigqIFByaW50IGEgY2hhcl9zZXQgaW4gYSBidWZmZXIgd2l0aCB0aGUgT0NhbWwgZm9ybWF0IGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0ID1cbiAgbGV0IHJlYyBwcmludF9zdGFydCBzZXQgPVxuICAgIGxldCBpc19hbG9uZSBjID1cbiAgICAgIGxldCBiZWZvcmUsIGFmdGVyID0gQ2hhci4oY2hyIChjb2RlIGMgLSAxKSwgY2hyIChjb2RlIGMgKyAxKSkgaW5cbiAgICAgIGlzX2luX2NoYXJfc2V0IHNldCBjXG4gICAgICAmJiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCBiZWZvcmUgJiYgaXNfaW5fY2hhcl9zZXQgc2V0IGFmdGVyKSBpblxuICAgIGlmIGlzX2Fsb25lICddJyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nO1xuICAgIHByaW50X291dCBzZXQgMTtcbiAgICBpZiBpc19hbG9uZSAnLScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICctJztcbiAgYW5kIHByaW50X291dCBzZXQgaSA9XG4gICAgaWYgaSA8IDI1NiB0aGVuXG4gICAgICBpZiBpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IGkpIHRoZW4gcHJpbnRfZmlyc3Qgc2V0IGlcbiAgICAgIGVsc2UgcHJpbnRfb3V0IHNldCAoaSArIDEpXG4gIGFuZCBwcmludF9maXJzdCBzZXQgaSA9XG4gICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnXFwyNTUnIC0+IHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICB8ICddJyB8ICctJyAtPiBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgfCBfIC0+IHByaW50X3NlY29uZCBzZXQgKGkgKyAxKTtcbiAgYW5kIHByaW50X3NlY29uZCBzZXQgaSA9XG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuXG4gICAgICBtYXRjaCBjaGFyX29mX2ludCBpIHdpdGhcbiAgICAgIHwgJ1xcMjU1JyAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTQ7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIDI1NTtcbiAgICAgIHwgJ10nIHwgJy0nIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgICB8IF8gd2hlbiBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgKGkgKyAxKSkpIC0+XG4gICAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICAgIHByaW50X2NoYXIgYnVmIGk7XG4gICAgICAgIHByaW50X291dCBzZXQgKGkgKyAyKTtcbiAgICAgIHwgXyAtPlxuICAgICAgICBwcmludF9pbiBzZXQgKGkgLSAxKSAoaSArIDIpO1xuICAgIGVsc2UgKFxuICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgIHByaW50X291dCBzZXQgKGkgKyAxKTtcbiAgICApXG4gIGFuZCBwcmludF9pbiBzZXQgaSBqID1cbiAgICBpZiBqID0gMjU2IHx8IG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBqKSkgdGhlbiAoXG4gICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGludF9vZl9jaGFyICctJyk7XG4gICAgICBwcmludF9jaGFyIGJ1ZiAoaiAtIDEpO1xuICAgICAgaWYgaiA8IDI1NiB0aGVuIHByaW50X291dCBzZXQgKGogKyAxKTtcbiAgICApIGVsc2VcbiAgICAgIHByaW50X2luIHNldCBpIChqICsgMSk7XG4gIGFuZCBwcmludF9jaGFyIGJ1ZiBpID0gbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgfCAnJScgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIHwgJ0AnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICdAJztcbiAgICB8IGMgICAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGluXG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ1snO1xuICBwcmludF9zdGFydCAoXG4gICAgaWYgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgJ1xcMDAwJ1xuICAgIHRoZW4gKCBidWZmZXJfYWRkX2NoYXIgYnVmICdeJzsgcmV2X2NoYXJfc2V0IGNoYXJfc2V0IClcbiAgICBlbHNlIGNoYXJfc2V0XG4gICk7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ10nXG5cbigqKiopXG5cbigqIFByaW50IGEgcGFkdHkgaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wYWR0eSBidWYgcGFkdHkgPSBtYXRjaCBwYWR0eSB3aXRoXG4gIHwgTGVmdCAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSdcbiAgfCBSaWdodCAtPiAoKVxuICB8IFplcm9zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJzAnXG5cbigqIFByaW50IHRoZSAnXycgb2YgYW4gaWdub3JlZCBmbGFnIGlmIG5lZWRlZC4gKilcbmxldCBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZyA9XG4gIGlmIGlnbl9mbGFnIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXydcblxuKCoqKilcblxubGV0IGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgd2lkdGggLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIHdpZHRoKVxuXG4oKioqKVxuXG4oKiBQcmludCBwYWRkaW5nIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkZGluZyA6IHR5cGUgYSBiIC4gYnVmZmVyIC0+IChhLCBiKSBwYWRkaW5nIC0+IHVuaXQgPVxuZnVuIGJ1ZiBwYWQgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+ICgpXG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCBuKSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgYnByaW50X3BhZHR5IGJ1ZiBwYWR0eTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcqJ1xuXG4oKiBQcmludCBwcmVjaXNpb24gaW4gYSBidWZmZXIgd2l0aCB0aGUgZm9ybWF0LWxpa2Ugc3ludGF4LiAqKVxubGV0IGJwcmludF9wcmVjaXNpb24gOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcHJlY2lzaW9uIC0+IHVuaXQgPVxuICBmdW4gYnVmIHByZWMgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uIC0+ICgpXG4gIHwgTGl0X3ByZWNpc2lvbiBuIC0+XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLic7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIChJbnQudG9fc3RyaW5nIG4pO1xuICB8IEFyZ19wcmVjaXNpb24gLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIuKlwiXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBvciAnIycgYXNzb2NpYXRlZCB0byBhbiBpbnQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X3BkIHwgSW50X3BpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgSW50X3NkIHwgSW50X3NpIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgSW50X0N4IHwgSW50X0NYIHwgSW50X0NvIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEludF9kIHwgSW50X2kgfCBJbnRfeCB8IEludF9YIHwgSW50X28gfCBJbnRfdSAtPiAoKVxuXG4oKiBQcmludCBhbiBjb21wbGV0ZSBpbnQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlMy4qZFwiKS4gKilcbmxldCBicHJpbnRfaW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9pY29udiBpY29udilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIGM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqKiopXG5cbigqIFByaW50IHRoZSBvcHRpb25hbCAnKycsICcgJyBhbmQvb3IgJyMnIGFzc29jaWF0ZWQgdG8gYSBmbG9hdCBjb252ZXJzaW9uLiAqKVxubGV0IGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udiA9XG4gIGJlZ2luIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZmxhZ19wIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJysnXG4gIHwgRmxvYXRfZmxhZ19zIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyAnXG4gIHwgRmxvYXRfZmxhZ18gLT4gKCkgZW5kO1xuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X0NGIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyMnXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0dcbiAgfCBGbG9hdF9GIHwgRmxvYXRfaCB8IEZsb2F0X0ggLT4gKClcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmbG9hdCBmb3JtYXQgaW4gYSBidWZmZXIgKGV4OiBcIiUrKi4zZlwiKS4gKilcbmxldCBicHJpbnRfZmxvYXRfZm10IGJ1ZiBpZ25fZmxhZyBmY29udiBwYWQgcHJlYyA9XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICBicHJpbnRfcGFkZGluZyBidWYgcGFkO1xuICBicHJpbnRfcHJlY2lzaW9uIGJ1ZiBwcmVjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2Zjb252IGZjb252KVxuXG4oKiBDb21wdXRlIHRoZSBsaXRlcmFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEZvcm1hdHRpbmdfbGl0LiAqKVxuKCogVXNlZCBieSBQcmludGYgYW5kIFNjYW5mIHdoZXJlIGZvcm1hdHRpbmcgaXMgbm90IGludGVycHJldGVkLiAqKVxubGV0IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCA9IG1hdGNoIGZvcm1hdHRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAtPiBcIkBdXCJcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAtPiBcIkB9XCJcbiAgfCBCcmVhayAoc3RyLCBfLCBfKSAgICAtPiBzdHJcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAtPiBcIkA/XCJcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAtPiBcIkBcXG5cIlxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgIC0+IFwiQC5cIlxuICB8IE1hZ2ljX3NpemUgKHN0ciwgXykgIC0+IHN0clxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgIC0+IFwiQEBcIlxuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgIC0+IFwiQCVcIlxuICB8IFNjYW5faW5kaWMgYyAtPiBcIkBcIiBeIChTdHJpbmcubWFrZSAxIGMpXG5cbigqKiopXG5cbigqIFByaW50IGEgbGl0ZXJhbCBjaGFyIGluIGEgYnVmZmVyLCBlc2NhcGUgJyUnIGJ5IFwiJSVcIi4gKilcbmxldCBicHJpbnRfY2hhcl9saXRlcmFsIGJ1ZiBjaHIgPSBtYXRjaCBjaHIgd2l0aFxuICB8ICclJyAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlJVwiXG4gIHwgXyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmIGNoclxuXG4oKiBQcmludCBhIGxpdGVyYWwgc3RyaW5nIGluIGEgYnVmZmVyLCBlc2NhcGUgYWxsICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHIgPVxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgc3RyLltpXVxuICBkb25lXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwcmV0dHktcHJpbnRpbmcgKilcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgdHlwZSAoYW4gZm10dHkpIGluIGEgYnVmZmVyLiAqKVxubGV0IHJlYyBicHJpbnRfZm10dHkgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgICBidWZmZXIgLT4gKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwpIGZtdHR5X3JlbCAtPiB1bml0ID1cbmZ1biBidWYgZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVjXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXNcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlaVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEludDMyX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVsaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJW5pXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlTGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZsb2F0X3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVmXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQm9vbF90eSByZXN0ICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBBbHBoYV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlYVwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFRoZXRhX3R5IHJlc3QgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiV0XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQW55X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJT9cIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBSZWFkZXJfdHkgcmVzdCAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlclwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVfclwiO1xuICAgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIle1wiOyBicHJpbnRfZm10dHkgYnVmIHN1Yl9mbXR0eTtcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlfVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWJfZm10dHksIF8sIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJShcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuXG4gIHwgRW5kX29mX2ZtdHR5IC0+ICgpXG5cbigqKiopXG5cbmxldCByZWMgaW50X29mX2N1c3RvbV9hcml0eSA6IHR5cGUgYSBiIGMgLlxuICAoYSwgYiwgYykgY3VzdG9tX2FyaXR5IC0+IGludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQ3VzdG9tX3plcm8gLT4gMFxuICB8IEN1c3RvbV9zdWNjIHggLT4gMSArIGludF9vZl9jdXN0b21fYXJpdHkgeFxuXG4oKiBQcmludCBhIGNvbXBsZXRlIGZvcm1hdCBpbiBhIGJ1ZmZlci4gKilcbmxldCBicHJpbnRfZm10IGJ1ZiBmbXQgPVxuICBsZXQgcmVjIGZtdGl0ZXIgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gYm9vbCAtPiB1bml0ID1cbiAgZnVuIGZtdCBpZ25fZmxhZyAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdzJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkZGluZyBidWYgcGFkOyBidWZmZXJfYWRkX2NoYXIgYnVmICdTJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcblxuICAgIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfYWx0aW50X2ZtdCBidWYgaWduX2ZsYWcgaWNvbnYgcGFkIHByZWMgJ2wnO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICduJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdMJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWM7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdDJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICdhJzsgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAndCc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICBmb3IgX2kgPSAxIHRvIGludF9vZl9jdXN0b21fYXJpdHkgYXJpdHkgZG9cbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIGRvbmU7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBSZWFkZXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncic7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUhXCI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG5cbiAgICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIHN0cjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgICAgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRfb3B0IGJ1ZiBwYWRfb3B0OyBidWZmZXJfYWRkX2NoYXIgYnVmICd7JztcbiAgICAgIGJwcmludF9mbXR0eSBidWYgZm10dHk7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICd9JztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgd2lkdGhfb3B0OyBicHJpbnRfY2hhcl9zZXQgYnVmIGNoYXJfc2V0O1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfY291bnRlciBjb3VudGVyKTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgXCIwY1wiOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICAgIGZtdGl0ZXIgZm10JyB0cnVlO1xuXG4gICAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0KTtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZm10aW5nX2dlbiB3aXRoXG4gICAgICB8IE9wZW5fdGFnIChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkB7XCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIHwgT3Blbl9ib3ggKEZvcm1hdCAoXywgc3RyKSkgLT5cbiAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiQFtcIjsgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHN0clxuICAgICAgZW5kO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+ICgpXG5cbiAgaW4gZm10aXRlciBmbXQgZmFsc2VcblxuKCoqKilcblxuKCogQ29udmVydCBhIGZvcm1hdCB0byBzdHJpbmcuICopXG5sZXQgc3RyaW5nX29mX2ZtdCBmbXQgPVxuICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICBicHJpbnRfZm10IGJ1ZiBmbXQ7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZSBleHRyYWN0aW9uICopXG5cbnR5cGUgKF8sIF8pIGVxID0gUmVmbCA6ICgnYSwgJ2EpIGVxXG5cbigqIEludmFyaWFudDogdGhpcyBmdW5jdGlvbiBpcyB0aGUgaWRlbnRpdHkgb24gdmFsdWVzLlxuXG4gICBJbiBwYXJ0aWN1bGFyLCBpZiAodHkxLCB0eTIpIGhhdmUgZXF1YWwgdmFsdWVzLCB0aGVuXG4gICAodHJhbnMgKHN5bW0gdHkxKSB0eTIpIHJlc3BlY3RzIHRoZSAndHJhbnMnIHByZWNvbmRpdGlvbi4gKilcbmxldCByZWMgc3ltbSA6IHR5cGUgYTEgYjEgYzEgZDEgZTEgZjEgYTIgYjIgYzIgZDIgZTIgZjIgLlxuICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4tPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMixcbiAgICBhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXR0eV9yZWxcbj0gZnVuY3Rpb25cbiAgfCBDaGFyX3R5IHJlc3QgLT4gQ2hhcl90eSAoc3ltbSByZXN0KVxuICB8IEludF90eSByZXN0IC0+IEludF90eSAoc3ltbSByZXN0KVxuICB8IEludDMyX3R5IHJlc3QgLT4gSW50MzJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQ2NF90eSByZXN0IC0+IEludDY0X3R5IChzeW1tIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT4gTmF0aXZlaW50X3R5IChzeW1tIHJlc3QpXG4gIHwgRmxvYXRfdHkgcmVzdCAtPiBGbG9hdF90eSAoc3ltbSByZXN0KVxuICB8IEJvb2xfdHkgcmVzdCAtPiBCb29sX3R5IChzeW1tIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT4gU3RyaW5nX3R5IChzeW1tIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPiBUaGV0YV90eSAoc3ltbSByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT4gQWxwaGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPiBBbnlfdHkgKHN5bW0gcmVzdClcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPiBSZWFkZXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+IElnbm9yZWRfcmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIHN5bW0gcmVzdClcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyLCB0eTEsIHN5bW0gcmVzdClcbiAgfCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG5cbmxldCByZWMgZm10dHlfcmVsX2RldCA6IHR5cGUgYTEgYiBjIGQxIGUxIGYxIGEyIGQyIGUyIGYyIC5cbiAgKGExLCBiLCBjLCBkMSwgZTEsIGYxLFxuICAgYTIsIGIsIGMsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoZjEsIGYyKSBlcSAtPiAoYTEsIGEyKSBlcSlcbiAgKiAoKGExLCBhMikgZXEgLT4gKGYxLCBmMikgZXEpXG4gICogKChlMSwgZTIpIGVxIC0+IChkMSwgZDIpIGVxKVxuICAqICgoZDEsIGQyKSBlcSAtPiAoZTEsIGUyKSBlcSlcbj0gZnVuY3Rpb25cbiAgfCBFbmRfb2ZfZm10dHkgLT5cbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbClcbiAgfCBDaGFyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50MzJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBJbnQ2NF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEFueV90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZWQgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG4gIHwgRm9ybWF0X2FyZ190eSAoX3R5LCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgbGV0IGFnLCBnYSwgZGosIGpkID0gZm10dHlfcmVsX2RldCB0eSBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZyBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGdhIFJlZmwgaW4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gbGV0IFJlZmwgPSBkaiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGpkIFJlZmwgaW4gbGV0IFJlZmwgPSBkZSBSZWZsIGluIFJlZmwpXG5cbigqIFByZWNvbmRpdGlvbjogd2UgYXNzdW1lIHRoYXQgdGhlIHR3byBmbXR0eV9yZWwgYXJndW1lbnRzIGhhdmUgZXF1YWxcbiAgIHZhbHVlcyAoYXQgcG9zc2libHkgZGlzdGluY3QgdHlwZXMpOyB0aGlzIGludmFyaWFudCBjb21lcyBmcm9tIHRoZSB3YXlcbiAgIGZtdHR5X3JlbCB3aXRuZXNzZXMgYXJlIHByb2R1Y2VkIGJ5IHRoZSB0eXBlLWNoZWNrZXJcblxuICAgVGhlIGNvZGUgYmVsb3cgdXNlcyAoYXNzZXJ0IGZhbHNlKSB3aGVuIHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4uIFRoZVxuICAgY29kZSBwYXR0ZXJuIGlzIHRoZSBmb2xsb3dpbmc6XG5cbiAgICAgfCBGb28geCwgRm9vIHkgLT5cbiAgICAgICAoKiBjYXNlIHdoZXJlIGluZGVlZCBib3RoIHZhbHVlc1xuICAgICAgICAgIHN0YXJ0IHdpdGggY29uc3RydWN0b3IgRm9vICopXG4gICAgIHwgRm9vIF8sIF9cbiAgICAgfCBfLCBGb28gXyAtPlxuICAgICAgICgqIGRpZmZlcmVudCBoZWFkIGNvbnN0cnVjdG9yczogYnJva2VuIHByZWNvbmRpdGlvbiAqKVxuICAgICAgIGFzc2VydCBmYWxzZVxuKilcbmFuZCB0cmFucyA6IHR5cGVcbiAgYTEgYjEgYzEgZDEgZTEgZjFcbiAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgYTMgYjMgYzMgZDMgZTMgZjNcbi5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG4tPiAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eV9yZWxcbj0gZnVuIHR5MSB0eTIgLT4gbWF0Y2ggdHkxLCB0eTIgd2l0aFxuICB8IENoYXJfdHkgcmVzdDEsIENoYXJfdHkgcmVzdDIgLT4gQ2hhcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgU3RyaW5nX3R5IHJlc3QxLCBTdHJpbmdfdHkgcmVzdDIgLT4gU3RyaW5nX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBCb29sX3R5IHJlc3QxLCBCb29sX3R5IHJlc3QyIC0+IEJvb2xfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludF90eSByZXN0MSwgSW50X3R5IHJlc3QyIC0+IEludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50MzJfdHkgcmVzdDEsIEludDMyX3R5IHJlc3QyIC0+IEludDMyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnQ2NF90eSByZXN0MSwgSW50NjRfdHkgcmVzdDIgLT4gSW50NjRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IE5hdGl2ZWludF90eSByZXN0MSwgTmF0aXZlaW50X3R5IHJlc3QyIC0+IE5hdGl2ZWludF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRmxvYXRfdHkgcmVzdDEsIEZsb2F0X3R5IHJlc3QyIC0+IEZsb2F0X3R5ICh0cmFucyByZXN0MSByZXN0MilcblxuICB8IEFscGhhX3R5IHJlc3QxLCBBbHBoYV90eSByZXN0MiAtPiBBbHBoYV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQWxwaGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbHBoYV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgVGhldGFfdHkgcmVzdDEsIFRoZXRhX3R5IHJlc3QyIC0+IFRoZXRhX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBUaGV0YV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIFRoZXRhX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBBbnlfdHkgcmVzdDEsIEFueV90eSByZXN0MiAtPiBBbnlfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFueV90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEFueV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgUmVhZGVyX3R5IHJlc3QxLCBSZWFkZXJfdHkgcmVzdDIgLT4gUmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBSZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBSZWFkZXJfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QxLCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MiAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIElnbm9yZWRfcmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBGb3JtYXRfYXJnX3R5ICh0eTEsIHJlc3QxKSwgRm9ybWF0X2FyZ190eSAodHkyLCByZXN0MikgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0cmFucyB0eTEgdHkyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfYXJnX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgRm9ybWF0X2FyZ190eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTEyLCByZXN0MSksXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTIxLCB0eTIyLCByZXN0MikgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEyKSB0eTIxIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICBsZXQgUmVmbCA9IGYyIFJlZmwgaW5cbiAgICBsZXQgUmVmbCA9IGY0IFJlZmwgaW5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MTEsIHR5MjIsIHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZvcm1hdF9zdWJzdF90eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9zdWJzdF90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRW5kX29mX2ZtdHR5LCBFbmRfb2ZfZm10dHkgLT4gRW5kX29mX2ZtdHR5XG4gIHwgRW5kX29mX2ZtdHR5LCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEVuZF9vZl9mbXR0eSAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHJlYyBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm9ybWF0dGluZ19nZW4gLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGZvcm1hdHRpbmdfZ2VuIC0+IG1hdGNoIGZvcm1hdHRpbmdfZ2VuIHdpdGhcbiAgfCBPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBFeHRyYWN0IHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIChhbiBmbXR0eSkgb2YgYSBmb3JtYXQuICopXG5hbmQgZm10dHlfb2ZfZm10IDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmbXR0eSAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgKFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuXG4gIHwgSW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQzMiAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQzMl90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoTmF0aXZlaW50X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEludDY0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKEZsb2F0X3R5IHR5X3Jlc3QpIGluXG4gICAgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSBwYWQgcHJlY190eVxuXG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAgICAgICAgICAgLT5cbiAgICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChCb29sX3R5IChmbXR0eV9vZl9mbXQgcmVzdCkpXG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgLT4gQWxwaGFfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgIC0+IFRoZXRhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAgICAtPiBmbXR0eV9vZl9jdXN0b20gYXJpdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFJlYWRlciByZXN0ICAgICAgICAgICAgICAgIC0+IFJlYWRlcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnX3R5ICh0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0IChfLCB0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5LCB0eSwgZm10dHlfb2ZfZm10IHJlc3QpXG5cbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+IFN0cmluZ190eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT4gSW50X3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAtPiBDaGFyX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAtPiBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdFxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKGZtdGluZ19nZW4sIHJlc3QpICAtPlxuICAgIGNvbmNhdF9mbXR0eSAoZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gZm10aW5nX2dlbikgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgLT4gRW5kX29mX2ZtdHR5XG5cbmFuZCBmbXR0eV9vZl9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICh5LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gYXJpdHkgZm10dHkgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IGZtdHR5XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT4gQW55X3R5IChmbXR0eV9vZl9jdXN0b20gYXJpdHkgZm10dHkpXG5cbigqIEV4dHJhY3QgdGhlIGZtdHR5IG9mIGFuIGlnbm9yZWQgcGFyYW1ldGVyIGZvbGxvd2VkIGJ5IHRoZSByZXN0IG9mXG4gICB0aGUgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2lnbm9yZWRfZm9ybWF0IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgIChhLCBiLCBjLCBkLCB5LCB4KSBpZ25vcmVkIC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gY29uY2F0X2ZtdHR5IGZtdHR5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gSWdub3JlZF9yZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCBmbXQpXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiBmbXR0eV9vZl9mbXQgZm10XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwYWRkaW5nIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlKnNcIikuICopXG5hbmQgZm10dHlfb2ZfcGFkZGluZ19mbXR0eSA6IHR5cGUgeCBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIGEpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwYWQgZm10dHkgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAgLT4gZm10dHlcbiAgICB8IExpdF9wYWRkaW5nIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wYWRkaW5nIF8gLT4gSW50X3R5IGZtdHR5XG5cbigqIEFkZCBhbiBJbnRfdHkgbm9kZSBpZiBwcmVjaXNpb24gaXMgdGFrZW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUuKmZcIikuKilcbmFuZCBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwcmVjaXNpb24gLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+ICh4LCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG4gIGZ1biBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMgd2l0aFxuICAgIHwgTm9fcHJlY2lzaW9uICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcHJlY2lzaW9uIF8gLT4gZm10dHlcbiAgICB8IEFyZ19wcmVjaXNpb24gICAtPiBJbnRfdHkgZm10dHlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgdHlwaW5nICopXG5cbigqIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIGZvcm1hdCBkb2VzIG5vdCBtYXRjaCBhIGdpdmVuIGZvcm1hdCB0eXBlLiAqKVxuZXhjZXB0aW9uIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIHBhZGRpbmcuICopXG4oKiBUYWtlIGFuIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiB0aGUgaW50ZWdlciBzaG91bGQgYmUga2VwdCBhcyBhcmd1bWVudC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkZGluZyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRkaW5nX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCwgZm10dHkgd2l0aFxuICB8IE5vX3BhZGRpbmcsIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKE5vX3BhZGRpbmcsIGZtdHR5KVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIF8gLT4gUGFkZGluZ19mbXR0eV9FQkIgKExpdF9wYWRkaW5nIChwYWR0eSx3KSxmbXR0eSlcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgSW50X3R5IHJlc3QgLT4gUGFkZGluZ19mbXR0eV9FQkIgKEFyZ19wYWRkaW5nIHBhZHR5LHJlc3QpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIENvbnZlcnQgYSAodXBhZGRpbmcsIHVwcmVjaXNpb24pIHRvIGEgKHBhZGRpbmcsIHByZWNpc2lvbikuICopXG4oKiBUYWtlIG9uZSBvciB0d28gSW50X3R5IGZyb20gdGhlIGZtdHR5IGlmIG5lZWRlZC4gKilcbigqIFJhaXNlIFR5cGVfbWlzbWF0Y2ggaW4gY2FzZSBvZiB0eXBlIG1pc21hdGNoLiAqKVxubGV0IHR5cGVfcGFkcHJlYyA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IHogLlxuICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeikgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBwYWRwcmVjX2ZtdHR5X2ViYiA9XG5mdW4gcGFkIHByZWMgZm10dHkgLT4gbWF0Y2ggcHJlYywgdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIE5vX3ByZWNpc2lvbiwgcmVzdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAsIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIHJlc3QpIC0+XG4gICAgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgTGl0X3ByZWNpc2lvbiBwLCByZXN0KVxuICB8IEFyZ19wcmVjaXNpb24sIFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEludF90eSByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIEFyZ19wcmVjaXNpb24sIHJlc3QpXG4gIHwgXywgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVHlwZSBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBJZiB0eXBpbmcgc3VjY2VlZCwgZ2VuZXJhdGUgYSBjb3B5IG9mIHRoZSBmb3JtYXQgd2l0aCB0aGUgc2FtZVxuICAgIHR5cGUgcGFyYW1ldGVycyBhcyB0aGUgZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCByZWMgdHlwZV9mb3JtYXQgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjIgIC5cbiAgICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdFxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkgd2l0aFxuICB8IEZtdF9mbXR0eV9FQkIgKGZtdCcsIEVuZF9vZl9mbXR0eSkgLT4gZm10J1xuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXRfZ2VuIDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBmbXQgZm10dHkgLT4gbWF0Y2ggZm10LCBmbXR0eSB3aXRoXG4gIHwgQ2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXIgZm10JywgZm10dHknKVxuICB8IENhbWxfY2hhciBmbXRfcmVzdCwgQ2hhcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfY2hhciBmbXQnLCBmbXR0eScpXG4gIHwgU3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBTdHJpbmdfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKENhbWxfc3RyaW5nIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50MzJfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEludDMyIChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDY0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgRmxvYXRfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEZsb2F0IChmY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEJvb2wgKHBhZCwgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZGRpbmcgcGFkIGZtdHR5IHdpdGhcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChwYWQsIEJvb2xfdHkgZm10dHlfcmVzdCkgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICAgIEZtdF9mbXR0eV9FQkIgKEJvb2wgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBGbHVzaCBmbXRfcmVzdCwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGbHVzaCBmbXQnLCBmbXR0eScpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10JyksIGZtdHR5JylcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKENoYXJfbGl0ZXJhbCAoY2hyLCBmbXQnKSwgZm10dHknKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5LCBmbXRfcmVzdCksXG4gICAgRm9ybWF0X2FyZ190eSAoc3ViX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWJfZm10dHknIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5JywgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5MSwgX3N1Yl9mbXR0eTIsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWJfZm10dHkxKSB0aGVuXG4gICAgICByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID1cbiAgICAgIHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCAoZXJhc2VfcmVsIGZtdHR5X3Jlc3QpXG4gICAgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eTEsIGZtdCcpLCBmbXR0eScpXG4gICgqIFByaW50ZiBhbmQgRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBBbHBoYSBmbXRfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChBbHBoYSBmbXQnLCBmbXR0eScpXG4gIHwgVGhldGEgZm10X3Jlc3QsIFRoZXRhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoVGhldGEgZm10JywgZm10dHknKVxuXG4gICgqIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXRfcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCBmbXQnKSwgZm10dHknKVxuICB8IEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nX2dlbiwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9mb3JtYXR0aW5nX2dlbiBmb3JtYXR0aW5nX2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0XG5cbiAgKCogU2NhbmYgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IFJlYWRlciBmbXRfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoUmVhZGVyIGZtdCcsIGZtdHR5JylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXRfcmVzdCksIFN0cmluZ190eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIGZtdCcpLCBmbXR0eScpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpLCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXQnKSwgZm10dHknKVxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCksIGZtdHR5X3Jlc3QgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW0gaWduIHJlc3QgZm10dHlfcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdCAtPiBGbXRfZm10dHlfRUJCIChFbmRfb2ZfZm9ybWF0LCBmbXR0eV9yZXN0KVxuXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbmFuZCB0eXBlX2Zvcm1hdHRpbmdfZ2VuIDogdHlwZSBhMSBhMyBiMSBiMyBjMSBjMyBkMSBkMyBlMSBlMiBlMyBmMSBmMiBmMyAuXG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGYxLCBiMSwgYzEsIGUxLCBlMiwgZjIpIGZtdCAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXR0eSAtPlxuICAgIChhMywgYjMsIGMzLCBkMywgZTMsIGYzKSBmbXRfZm10dHlfZWJiID1cbmZ1biBmb3JtYXR0aW5nX2dlbiBmbXQwIGZtdHR5MCAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10MSwgc3RyKSkgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MiwgZm10dHkyKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQxIGZtdHR5MCBpblxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQzLCBmbXR0eTMpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDAgZm10dHkyIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdDIsIHN0cikpLCBmbXQzKSwgZm10dHkzKVxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcblxuKCogVHlwZSBhbiBJZ25vcmVkX3BhcmFtIG5vZGUgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuYW5kIHR5cGVfaWdub3JlZF9wYXJhbSA6IHR5cGUgcCBxIHggeSB6IHQgdSB2IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgeSwgeiwgdCwgcSwgcCkgaWdub3JlZCAtPlxuICAgIChwLCB5LCB6LCBxLCB1LCB2KSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10X2ZtdHR5X2ViYiA9XG5mdW4gaWduIGZtdCBmbXR0eSAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50IF8gICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50MzIgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfbmF0aXZlaW50IF8gICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfaW50NjQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZmxvYXQgXyAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgIGFzIGlnbicgLT4gdHlwZV9pZ25vcmVkX3BhcmFtX29uZSBpZ24nIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSAtPlxuICAgIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgKElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgc3ViX2ZtdHR5KSkgZm10IGZtdHR5XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5JywgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSkgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5IGZtdCBmbXR0eSBpblxuICAgIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHknKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQnKSxcbiAgICAgICAgICAgICAgICAgICBmbXR0eScpXG4gIHwgSWdub3JlZF9yZWFkZXIgLT4gKFxuICAgIG1hdGNoIGZtdHR5IHdpdGhcbiAgICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX3JlYWRlciwgZm10JyksIGZtdHR5JylcbiAgICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG5cbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIDogdHlwZSBhMSBhMiBiMSBiMiBjMSBjMiBkMSBkMiBlMSBlMiBmMSBmMiAuXG4gICAgKGEyLCBiMiwgYzIsIGQyLCBkMiwgYTIpIGlnbm9yZWQgLT5cbiAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5IC0+XG4gICAgKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdF9mbXR0eV9lYmJcbj0gZnVuIGlnbiBmbXQgZm10dHkgLT5cbiAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IGluXG4gIEZtdF9mbXR0eV9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbiwgZm10JyksIGZtdHR5JylcblxuKCogVHlwaW5nIG9mIHRoZSBjb21wbGV4IGNhc2U6IFwiJV8oLi4uJSlcIi4gKilcbmFuZCB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiA6IHR5cGUgdyB4IHkgeiBwIHMgdCB1IGEgYiBjIGQgZSBmIC5cbiAgICAodywgeCwgeSwgeiwgcywgcCkgZm10dHkgLT5cbiAgICAocCwgeCwgeSwgcywgdCwgdSkgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eV9mbXRfZWJiID1cbmZ1biBzdWJfZm10dHkgZm10IGZtdHR5IC0+IG1hdGNoIHN1Yl9mbXR0eSwgZm10dHkgd2l0aFxuICB8IENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQ2hhcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0LCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoU3RyaW5nX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEludDMyX3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnQzMl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChJbnQzMl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBOYXRpdmVpbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoTmF0aXZlaW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQ2NF90eSBzdWJfZm10dHlfcmVzdCwgSW50NjRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEZsb2F0X3R5IHN1Yl9mbXR0eV9yZXN0LCBGbG9hdF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGbG9hdF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQm9vbF90eSBzdWJfZm10dHlfcmVzdCwgQm9vbF90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChCb29sX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBBbHBoYV90eSBzdWJfZm10dHlfcmVzdCwgQWxwaGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFRoZXRhX3R5IHN1Yl9mbXR0eV9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChUaGV0YV90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0LCBSZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoUmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgSWdub3JlZF9yZWFkZXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuXG4gIHwgRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eSwgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiBzdWIyX2ZtdHR5IDw+IEZtdHR5X0VCQiBzdWIyX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gc3ViX2ZtdHR5X3Jlc3QgZm10IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5Jywgc3ViX2ZtdHR5X3Jlc3QnKSwgZm10JylcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHksICBzdWIyX2ZtdHR5LCAgc3ViX2ZtdHR5X3Jlc3QpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLCBmbXR0eV9yZXN0KSAtPlxuICAgICgqIFRPRE8gZGVmaW5lIEZtdHR5X3JlbF9FQkIgdG8gcmVtb3ZlIHRob3NlIGVyYXNlX3JlbCAqKVxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHkpIDw+IEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1YjFfZm10dHknKVxuICAgIHRoZW4gcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIyX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IHN1Yl9mbXR0eScgPSB0cmFucyAoc3ltbSBzdWIxX2ZtdHR5Jykgc3ViMl9mbXR0eScgaW5cbiAgICBsZXQgXywgZjIsIF8sIGY0ID0gZm10dHlfcmVsX2RldCBzdWJfZm10dHknIGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eV9yZXN0JywgZm10JykgPVxuICAgICAgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gKGVyYXNlX3JlbCBzdWJfZm10dHlfcmVzdCkgZm10IGZtdHR5X3Jlc3RcbiAgICBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEZvcm1hdF9zdWJzdF90eSAoc3ViMV9mbXR0eScsIHN1YjJfZm10dHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbSBzdWJfZm10dHlfcmVzdCcpLFxuICAgICAgICAgICAgICAgICAgIGZtdCcpXG4gIHwgRW5kX29mX2ZtdHR5LCBmbXR0eSAtPlxuICAgIEZtdHR5X2ZtdF9FQkIgKEVuZF9vZl9mbXR0eSwgdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSlcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgcmVjYXN0YCBpcyBhIGJpdCBkaXNhcHBvaW50aW5nLiBUaGVcbiAgIGludmFyaWFudCBwcm92aWRlZCBieSB0aGUgdHlwZSBhcmUgdmVyeSBzdHJvbmc6IHRoZSBpbnB1dCBmb3JtYXQnc1xuICAgdHlwZSBpcyBpbiByZWxhdGlvbiB0byB0aGUgb3V0cHV0IHR5cGUncyBhcyB3aXRuZXNzZWQgYnkgdGhlXG4gICBmbXR0eV9yZWwgYXJndW1lbnQuIE9uZSB3b3VsZCBhdCBmaXJzdCBleHBlY3QgdGhpcyBmdW5jdGlvbiB0byBiZVxuICAgdG90YWwsIGFuZCBpbXBsZW1lbnRhYmxlIGJ5IGV4aGF1c3RpdmUgcGF0dGVybiBtYXRjaGluZy4gSW5zdGVhZCxcbiAgIHdlIHJldXNlIHRoZSBoaWdobHkgcGFydGlhbCBhbmQgbXVjaCBsZXNzIHdlbGwtZGVmaW5lZCBmdW5jdGlvblxuICAgYHR5cGVfZm9ybWF0YCB0aGF0IGhhcyBsb3N0IGFsbCBrbm93bGVkZ2Ugb2YgdGhlIGNvcnJlc3BvbmRlbmNlXG4gICBiZXR3ZWVuIHRoZSBhcmd1bWVudCdzIHR5cGVzLlxuXG4gICBCZXNpZGVzIHRoZSBmYWN0IHRoYXQgdGhpcyBmdW5jdGlvbiByZXVzZXMgYSBsb3Qgb2YgdGhlXG4gICBgdHlwZV9mb3JtYXRgIGxvZ2ljIChlZy46IHNlZWluZyBJbnRfdHkgaW4gdGhlIGZtdHR5IHBhcmFtZXRlciBkb2VzXG4gICBub3QgbGV0IHlvdSBtYXRjaCBvbiBJbnQgb25seSwgYXMgeW91IG1heSBpbiBmYWN0IGhhdmUgRmxvYXRcbiAgIChBcmdfcGFkZGluZywgLi4uKSAoXCIlLipkXCIpIGJlZ2lubmluZyB3aXRoIGFuIEludF90eSksIGl0IGlzIGFsc29cbiAgIGEgcGFydGlhbCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgdHlwaW5nIGluZm9ybWF0aW9uIGluIGEgZm9ybWF0IGlzXG4gICBub3QgcXVpdGUgZW5vdWdoIHRvIHJlY29uc3RydWN0IGl0IHVuYW1iaWd1b3VzbHkuIEZvciBleGFtcGxlLCB0aGVcbiAgIGZvcm1hdCB0eXBlcyBvZiBcIiVkJV9yXCIgYW5kIFwiJV9yJWRcIiBoYXZlIHRoZSBzYW1lIGZvcm1hdDZcbiAgIHBhcmFtZXRlcnMsIGJ1dCB0aGV5IGFyZSBub3QgYXQgYWxsIGV4Y2hhbmdlYWJsZSwgYW5kIHB1dHRpbmcgb25lXG4gICBpbiBwbGFjZSBvZiB0aGUgb3RoZXIgbXVzdCByZXN1bHQgaW4gYSBkeW5hbWljIGZhaWx1cmUuXG5cbiAgIEdpdmVuIHRoYXQ6XG4gICAtIHdlJ2QgaGF2ZSB0byBkdXBsaWNhdGUgYSBsb3Qgb2Ygbm9uLXRyaXZpYWwgdHlwaW5nIGxvZ2ljIGZyb20gdHlwZV9mb3JtYXRcbiAgIC0gdGhpcyB3b3VsZG4ndCBldmVuIGVsaW1pbmF0ZSAoYWxsKSB0aGUgZHluYW1pYyBmYWlsdXJlc1xuICAgd2UgZGVjaWRlZCB0byBqdXN0IHJldXNlIHR5cGVfZm9ybWF0IGRpcmVjdGx5IGZvciBub3cuXG4qKVxubGV0IHJlY2FzdCA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMlxuICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdFxuPSBmdW4gZm10IGZtdHR5IC0+XG4gIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUHJpbnRpbmcgdG9vbHMgKilcblxuKCogQWRkIHBhZGRpbmcgc3BhY2VzIGFyb3VuZCBhIHN0cmluZy4gKilcbmxldCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoLCBwYWR0eSA9XG4gICAgYWJzIHdpZHRoLFxuICAgICgqIHdoaWxlIGxpdGVyYWwgcGFkZGluZyB3aWR0aHMgYXJlIGFsd2F5cyBub24tbmVnYXRpdmUsXG4gICAgICAgZHluYW1pY2FsbHktc2V0IHdpZHRocyAoQXJnX3BhZGRpbmcsIGVnLiAlKmQpIG1heSBiZSBuZWdhdGl2ZTtcbiAgICAgICB3ZSBpbnRlcnByZXQgdGhvc2UgYXMgc3BlY2lmeWluZyBhIHBhZGRpbmctdG8tdGhlLWxlZnQ7IHRoaXNcbiAgICAgICBtZWFucyB0aGF0ICcwJyBtYXkgZ2V0IGRyb3BwZWQgZXZlbiBpZiBpdCB3YXMgZXhwbGljaXRseSBzZXQsXG4gICAgICAgYnV0OlxuICAgICAgIC0gdGhpcyBpcyB3aGF0IHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24gZG9lcywgYW5kXG4gICAgICAgICB3ZSBwcmVzZXJ2ZSBjb21wYXRpYmlsaXR5IGlmIHBvc3NpYmxlXG4gICAgICAgLSB3ZSBjb3VsZCBvbmx5IHNpZ25hbCB0aGlzIGlzc3VlIGJ5IGZhaWxpbmcgYXQgcnVudGltZSxcbiAgICAgICAgIHdoaWNoIGlzIG5vdCB2ZXJ5IG5pY2UuLi4gKilcbiAgICBpZiB3aWR0aCA8IDAgdGhlbiBMZWZ0IGVsc2UgcGFkdHkgaW5cbiAgaWYgd2lkdGggPD0gbGVuIHRoZW4gc3RyIGVsc2VcbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSB3aWR0aCAoaWYgcGFkdHkgPSBaZXJvcyB0aGVuICcwJyBlbHNlICcgJykgaW5cbiAgICBiZWdpbiBtYXRjaCBwYWR0eSB3aXRoXG4gICAgfCBMZWZ0ICAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgMCBsZW5cbiAgICB8IFJpZ2h0IC0+IFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAwICYmIChzdHIuWzBdID0gJysnIHx8IHN0ci5bMF0gPSAnLScgfHwgc3RyLlswXSA9ICcgJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMCBzdHIuWzBdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzICh3aWR0aCAtIGxlbiArIDEpIChsZW4gLSAxKVxuICAgIHwgWmVyb3Mgd2hlbiBsZW4gPiAxICYmIHN0ci5bMF0gPSAnMCcgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzICh3aWR0aCAtIGxlbiArIDIpIChsZW4gLSAyKVxuICAgIHwgWmVyb3MgLT5cbiAgICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAod2lkdGggLSBsZW4pIGxlblxuICAgIGVuZDtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBBZGQgJzAnIHBhZGRpbmcgdG8gaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gKilcbmxldCBmaXhfaW50X3ByZWNpc2lvbiBwcmVjIHN0ciA9XG4gIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIG1hdGNoIHN0ci5bMF0gd2l0aFxuICB8ICgnKycgfCAnLScgfCAnICcpIGFzIGMgd2hlbiBwcmVjICsgMSA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMSkgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAwIGM7XG4gICAgU3RyaW5nLmJsaXQgc3RyIDEgcmVzIChwcmVjIC0gbGVuICsgMikgKGxlbiAtIDEpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIHdoZW4gcHJlYyArIDIgPiBsZW4gJiYgbGVuID4gMSAmJiAoc3RyLlsxXSA9ICd4JyB8fCBzdHIuWzFdID0gJ1gnKSAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIChwcmVjICsgMikgJzAnIGluXG4gICAgQnl0ZXMuc2V0IHJlcyAxIHN0ci5bMV07XG4gICAgU3RyaW5nLmJsaXQgc3RyIDIgcmVzIChwcmVjIC0gbGVuICsgNCkgKGxlbiAtIDIpO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIHdoZW4gcHJlYyA+IGxlbiAtPlxuICAgIGxldCByZXMgPSBCeXRlcy5tYWtlIHByZWMgJzAnIGluXG4gICAgU3RyaW5nLmJsaXQgc3RyIDAgcmVzIChwcmVjIC0gbGVuKSBsZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgfCBfIC0+XG4gICAgc3RyXG5cbigqIEVzY2FwZSBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGluZyBjb252ZW50aW9uLiAqKVxubGV0IHN0cmluZ190b19jYW1sX3N0cmluZyBzdHIgPVxuICBsZXQgc3RyID0gU3RyaW5nLmVzY2FwZWQgc3RyIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFxcIicgaW5cbiAgU3RyaW5nLnVuc2FmZV9ibGl0IHN0ciAwIHJlcyAxIGw7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfaW50L2ludDMyL25hdGl2ZWludC9pbnQ2NCBmaXJzdCBhcmd1bWVudFxuICAgZnJvbSBhbiBpbnRfY29udi4gKilcbmxldCBmb3JtYXRfb2ZfaWNvbnYgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWRcIiB8IEludF9wZCAtPiBcIiUrZFwiIHwgSW50X3NkIC0+IFwiJSBkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVpXCIgfCBJbnRfcGkgLT4gXCIlK2lcIiB8IEludF9zaSAtPiBcIiUgaVwiXG4gIHwgSW50X3ggLT4gXCIleFwiIHwgSW50X0N4IC0+IFwiJSN4XCJcbiAgfCBJbnRfWCAtPiBcIiVYXCIgfCBJbnRfQ1ggLT4gXCIlI1hcIlxuICB8IEludF9vIC0+IFwiJW9cIiB8IEludF9DbyAtPiBcIiUjb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIldVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZMID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVMZFwiIHwgSW50X3BkIC0+IFwiJStMZFwiIHwgSW50X3NkIC0+IFwiJSBMZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlTGlcIiB8IEludF9waSAtPiBcIiUrTGlcIiB8IEludF9zaSAtPiBcIiUgTGlcIlxuICB8IEludF94IC0+IFwiJUx4XCIgfCBJbnRfQ3ggLT4gXCIlI0x4XCJcbiAgfCBJbnRfWCAtPiBcIiVMWFwiIHwgSW50X0NYIC0+IFwiJSNMWFwiXG4gIHwgSW50X28gLT4gXCIlTG9cIiB8IEludF9DbyAtPiBcIiUjTG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJUx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udmwgPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJWxkXCIgfCBJbnRfcGQgLT4gXCIlK2xkXCIgfCBJbnRfc2QgLT4gXCIlIGxkXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVsaVwiIHwgSW50X3BpIC0+IFwiJStsaVwiIHwgSW50X3NpIC0+IFwiJSBsaVwiXG4gIHwgSW50X3ggLT4gXCIlbHhcIiB8IEludF9DeCAtPiBcIiUjbHhcIlxuICB8IEludF9YIC0+IFwiJWxYXCIgfCBJbnRfQ1ggLT4gXCIlI2xYXCJcbiAgfCBJbnRfbyAtPiBcIiVsb1wiIHwgSW50X0NvIC0+IFwiJSNsb1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbHVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252biA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlbmRcIiB8IEludF9wZCAtPiBcIiUrbmRcIiB8IEludF9zZCAtPiBcIiUgbmRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJW5pXCIgfCBJbnRfcGkgLT4gXCIlK25pXCIgfCBJbnRfc2kgLT4gXCIlIG5pXCJcbiAgfCBJbnRfeCAtPiBcIiVueFwiIHwgSW50X0N4IC0+IFwiJSNueFwiXG4gIHwgSW50X1ggLT4gXCIlblhcIiB8IEludF9DWCAtPiBcIiUjblhcIlxuICB8IEludF9vIC0+IFwiJW5vXCIgfCBJbnRfQ28gLT4gXCIlI25vXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVudVwiXG5cbigqIEdlbmVyYXRlIHRoZSBmb3JtYXRfZmxvYXQgZmlyc3QgYXJndW1lbnQgZnJvbSBhIGZsb2F0X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMgPVxuICAgIGxldCBwcmVjID0gYWJzIHByZWMgaW5cbiAgICBsZXQgc3ltYiA9IGNoYXJfb2ZfZmNvbnYgfmNGOidnJyBmY29udiBpblxuICAgIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgYnByaW50X2Zjb252X2ZsYWcgYnVmIGZjb252O1xuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBwcmVjKTtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmIHN5bWI7XG4gICAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG5sZXQgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgcyA9XG4gIG1hdGNoIGljb252IHdpdGhcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgLT5cbiAgICBsZXQgZGlnaXRzID1cbiAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICAgIHwgJzAnLi4nOScgLT4gaW5jciBuXG4gICAgICAgIHwgXyAtPiAoKVxuICAgICAgZG9uZTtcbiAgICAgICFuXG4gICAgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAoZGlnaXRzIC0gMSkgLyAzKSBpblxuICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgIGxldCBwdXQgYyA9IEJ5dGVzLnNldCBidWYgIXBvcyBjOyBpbmNyIHBvcyBpblxuICAgIGxldCBsZWZ0ID0gcmVmICgoZGlnaXRzIC0gMSkgbW9kIDMgKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgfCAnMCcuLic5JyBhcyBjIC0+XG4gICAgICAgICAgaWYgIWxlZnQgPSAwIHRoZW4gKHB1dCAnXyc7IGxlZnQgOj0gMyk7IGRlY3IgbGVmdDsgcHV0IGNcbiAgICAgIHwgYyAtPiBwdXQgY1xuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgfCBfIC0+IHNcblxuKCogQ29udmVydCBhbiBpbnRlZ2VyIHRvIGEgc3RyaW5nIGFjY29yZGluZyB0byBhIGNvbnZlcnNpb24uICopXG5sZXQgY29udmVydF9pbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50IChmb3JtYXRfb2ZfaWNvbnYgaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQzMiBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQzMiAoZm9ybWF0X29mX2ljb252bCBpY29udikgbilcbmxldCBjb252ZXJ0X25hdGl2ZWludCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9uYXRpdmVpbnQgKGZvcm1hdF9vZl9pY29udm4gaWNvbnYpIG4pXG5sZXQgY29udmVydF9pbnQ2NCBpY29udiBuID1cbiAgdHJhbnNmb3JtX2ludF9hbHQgaWNvbnYgKGZvcm1hdF9pbnQ2NCAoZm9ybWF0X29mX2ljb252TCBpY29udikgbilcblxuKCogQ29udmVydCBhIGZsb2F0IHRvIHN0cmluZy4gKilcbigqIEZpeCBzcGVjaWFsIGNhc2Ugb2YgXCJPQ2FtbCBmbG9hdCBmb3JtYXRcIi4gKilcbmxldCBjb252ZXJ0X2Zsb2F0IGZjb252IHByZWMgeCA9XG4gIGxldCBoZXggKCkgPVxuICAgIGxldCBzaWduID1cbiAgICAgIG1hdGNoIGZzdCBmY29udiB3aXRoXG4gICAgICB8IEZsb2F0X2ZsYWdfcCAtPiAnKydcbiAgICAgIHwgRmxvYXRfZmxhZ19zIC0+ICcgJ1xuICAgICAgfCBfIC0+ICctJyBpblxuICAgIGhleHN0cmluZ19vZl9mbG9hdCB4IHByZWMgc2lnbiBpblxuICBsZXQgYWRkX2RvdF9pZl9uZWVkZWQgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGlzX3ZhbGlkIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltpXSB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ2UnIHwgJ0UnIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGlzX3ZhbGlkIChpICsgMSkgaW5cbiAgICBpZiBpc192YWxpZCAwIHRoZW4gc3RyIGVsc2Ugc3RyIF4gXCIuXCIgaW5cbiAgbGV0IGNhbWxfc3BlY2lhbF92YWwgc3RyID0gbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+IHN0clxuICAgIHwgRlBfaW5maW5pdGUgLT4gaWYgeCA8IDAuMCB0aGVuIFwibmVnX2luZmluaXR5XCIgZWxzZSBcImluZmluaXR5XCJcbiAgICB8IEZQX25hbiAtPiBcIm5hblwiIGluXG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfaCAtPiBoZXggKClcbiAgfCBGbG9hdF9IIC0+IFN0cmluZy51cHBlcmNhc2VfYXNjaWkgKGhleCAoKSlcbiAgfCBGbG9hdF9DRiAtPiBjYW1sX3NwZWNpYWxfdmFsIChoZXggKCkpXG4gIHwgRmxvYXRfRiAtPlxuICAgIGxldCBzdHIgPSBmb3JtYXRfZmxvYXQgKGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjKSB4IGluXG4gICAgY2FtbF9zcGVjaWFsX3ZhbCAoYWRkX2RvdF9pZl9uZWVkZWQgc3RyKVxuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HIC0+XG4gICAgZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeFxuXG4oKiBDb252ZXJ0IGEgY2hhciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIE9DYW1sIGxleGljYWwgY29udmVudGlvbi4gKilcbmxldCBmb3JtYXRfY2FtbF9jaGFyIGMgPVxuICBsZXQgc3RyID0gQ2hhci5lc2NhcGVkIGMgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVzID0gQnl0ZXMubWFrZSAobCArIDIpICdcXCcnIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBDb252ZXJ0IGEgZm9ybWF0IHR5cGUgdG8gc3RyaW5nICopXG5sZXQgc3RyaW5nX29mX2ZtdHR5IGZtdHR5ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTtcbiAgYnVmZmVyX2NvbnRlbnRzIGJ1ZlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBwcmludGluZyBmdW5jdGlvbiAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBwcmludGluZyBmdW5jdGlvbi4gKilcbigqIFVzZWQgdG8gZ2VuZXJhdGUgUHJpbnRmIGFuZCBGb3JtYXQgcHJpbnRpbmcgZnVuY3Rpb25zLiAqKVxuKCogUGFyYW1ldGVyczpcbiAgICAgazogYSBjb250aW51YXRpb24gZmluYWxseSBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCB0aGUgYWNjdW11bGF0b3IuXG4gICAgIG86IHRoZSBvdXRwdXQgc3RyZWFtIChzZWUgaywgJWEgYW5kICV0KS5cbiAgICAgYWNjOiByZXYgbGlzdCBvZiBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzaCwgZm9ybWF0dGluZywgLi4uKS5cbiAgICAgZm10OiB0aGUgZm9ybWF0LiAqKVxubGV0IHJlYyBtYWtlX3ByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2NhbWxfY2hhciBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBtYWtlX3BhZGRpbmcgayBhY2MgcmVzdCBwYWQgKGZ1biBzdHIgLT4gc3RyKVxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ190b19jYW1sX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50IGljb252XG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDMyIGljb252XG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9uYXRpdmVpbnQgaWNvbnZcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfaW50NjQgaWNvbnZcbiAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgZmNvbnZcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIHN0cmluZ19vZl9ib29sXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIGZ1biBmIHggLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGZ1biBvIC0+IGYgbyB4KSkgcmVzdFxuICB8IFRoZXRhIHJlc3QgLT5cbiAgICBmdW4gZiAtPiBtYWtlX3ByaW50ZiBrIChBY2NfZGVsYXkgKGFjYywgZikpIHJlc3RcbiAgfCBDdXN0b20gKGFyaXR5LCBmLCByZXN0KSAtPlxuICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgKCkpXG4gIHwgUmVhZGVyIF8gLT5cbiAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICopXG4gICAgKCogSW5kZWVkLCBzaW5jZSBwcmludGYgYW5kIGNvLiB0YWtlIGEgZm9ybWF0NCBhcyBhcmd1bWVudCwgdGhlICdkIGFuZCAnZVxuICAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiBmbXQgYXJlIG9idmlvdXNseSBlcXVhbHMuIFRoZSBSZWFkZXIgaXMgdGhlXG4gICAgICAgb25seSBjb25zdHJ1Y3RvciB3aGljaCB0b3VjaCAnZCBhbmQgJ2UgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBmb3JtYXRcbiAgICAgICB0eXBlLCBpdCBhZGRzIGFuICgtPikgdG8gdGhlICdkIHBhcmFtZXRlcnMuIENvbnNlcXVlbnRseSwgYSBmb3JtYXQ0XG4gICAgICAgY2Fubm90IGNvbnRhaW4gYSBSZWFkZXIgbm9kZSwgZXhjZXB0IGluIHRoZSBzdWItZm9ybWF0IGFzc29jaWF0ZWQgdG9cbiAgICAgICBhbiAley4uLiV9LiBJdCdzIG5vdCBhIHByb2JsZW0gYmVjYXVzZSBtYWtlX3ByaW50ZiBkbyBub3QgY2FsbFxuICAgICAgIGl0c2VsZiByZWN1cnNpdmVseSBvbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvICV7Li4uJX0uICopXG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mbHVzaCBhY2MpIHJlc3RcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX3N0cmluZ19saXRlcmFsIChhY2MsIHN0cikpIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfY2hhcl9saXRlcmFsIChhY2MsIGNocikpIHJlc3RcblxuICB8IEZvcm1hdF9hcmcgKF8sIHN1Yl9mbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSBzdHJpbmdfb2ZfZm10dHkgc3ViX2ZtdHR5IGluXG4gICAgKGZ1biBzdHIgLT5cbiAgICAgIGlnbm9yZSBzdHI7XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHkpKSByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+IG1ha2VfcHJpbnRmIGsgYWNjXG4gICAgICAoY29uY2F0X2ZtdCAocmVjYXN0IGZtdCBmbXR0eSkgcmVzdClcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpIC0+XG4gICAgbGV0IG5ld19hY2MgPSBBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVbXCIpIGluXG4gICAgZnVuIF8gLT4gbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAtPlxuICAgICgqIFRoaXMgY2FzZSBzaG91bGQgYmUgcmVmdXNlZCBmb3IgUHJpbnRmLiAqKVxuICAgICgqIEFjY2VwdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqKVxuICAgICgqIEludGVycHJldCAlbCwgJW4gYW5kICVMIGFzICV1LiAqKVxuICAgIGZ1biBuIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmb3JtYXRfaW50IFwiJXVcIiBuKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfY2hhciAoYWNjLCBjKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbWFrZV9pZ25vcmVkX3BhcmFtIGsgYWNjIGlnbiByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19saXQgKGFjYywgZm10aW5nX2xpdCkpIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl90YWcga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGxldCBrJyBrYWNjID1cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19mb3JtYXR0aW5nX2dlbiAoYWNjLCBBY2Nfb3Blbl9ib3gga2FjYykpIHJlc3QgaW5cbiAgICBtYWtlX3ByaW50ZiBrJyBFbmRfb2ZfYWNjIGZtdCdcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBrIGFjY1xuXG4oKiBEZWxheSB0aGUgZXJyb3IgKEludmFsaWRfYXJndW1lbnQgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpLiAqKVxuKCogR2VuZXJhdGUgZnVuY3Rpb25zIHRvIHRha2UgcmVtYWluaW5nIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIFwiJV9cIikuICopXG5hbmQgbWFrZV9pZ25vcmVkX3BhcmFtIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT4gYSA9XG5mdW4gayBhY2MgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgZm10dHkgZm10XG4gIHwgSWdub3JlZF9yZWFkZXIgICAgICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcblxuXG4oKiBTcGVjaWFsIGNhc2Ugb2YgcHJpbnRmIFwiJV8oXCIuICopXG5hbmQgbWFrZV9mcm9tX2ZtdHR5IDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgZm10dHkgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBSZWFkZXJfdHkgXyAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBfICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAtPiBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICBmdW4gXyAtPiBtYWtlX2Zyb21fZm10dHkgayBhY2MgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogSW5zZXJ0IGFuIEFjY19pbnZhbGlkX2FyZyBpbiB0aGUgYWNjdW11bGF0b3IgYW5kIGNvbnRpbnVlIHRvIGdlbmVyYXRlXG4gICBjbG9zdXJlcyB0byBnZXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG5hbmQgbWFrZV9pbnZhbGlkX2FyZyA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGZtdCAtPlxuICBtYWtlX3ByaW50ZiBrIChBY2NfaW52YWxpZF9hcmcgKGFjYywgXCJQcmludGY6IGJhZCBjb252ZXJzaW9uICVfXCIpKSBmbXRcblxuKCogRml4IHBhZGRpbmcsIHRha2UgaXQgYXMgYW4gZXh0cmEgaW50ZWdlciBhcmd1bWVudCBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9wYWRkaW5nIDogdHlwZSB4IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHogLT4gYSkgcGFkZGluZyAtPiAoeiAtPiBzdHJpbmcpIC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCB0cmFucyAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgdHJhbnMgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3aWR0aCAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHkgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX3N0cmluZyAoYWNjLCBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyBmbXRcblxuKCogRml4IHBhZGRpbmcgYW5kIHByZWNpc2lvbiBmb3IgaW50LCBpbnQzMiwgbmF0aXZlaW50IG9yIGludDY0LiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiA6IHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IChpbnRfY29udiAtPiB6IC0+IHN0cmluZykgLT5cbiAgICBpbnRfY29udiAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgcHJlYyB0cmFucyBpY29udiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gdHJhbnMgaWNvbnYgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuXG4oKiBDb252ZXJ0IGEgZmxvYXQsIGZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gaWYgbmVlZGVkLiAqKVxuKCogVGFrZSB0aGUgZmxvYXQgYXJndW1lbnQgYW5kIG9uZSBvciB0d28gZXh0cmEgaW50ZWdlciBhcmd1bWVudHMgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfZmxvYXRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeSwgZmxvYXQgLT4gYSkgcHJlY2lzaW9uIC0+IGZsb2F0X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgZmNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgKGRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIGZjb252KSB4IGluXG4gICAgICBsZXQgc3RyJyA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgc3RyIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyJykpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChjb252ZXJ0X2Zsb2F0IGZjb252IHAgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbmFuZCBtYWtlX2N1c3RvbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgKChiLCBjKSBhY2MgLT4gZikgLT4gKGIsIGMpIGFjYyAtPlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gIChhLCB4LCB5KSBjdXN0b21fYXJpdHkgLT4geCAtPiB5ID1cbiAgZnVuIGsgYWNjIHJlc3QgYXJpdHkgZiAtPiBtYXRjaCBhcml0eSB3aXRoXG4gIHwgQ3VzdG9tX3plcm8gLT4gbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tX3N1Y2MgYXJpdHkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbWFrZV9jdXN0b20gayBhY2MgcmVzdCBhcml0eSAoZiB4KVxuXG5sZXQgY29uc3QgeCBfID0geFxuXG5sZXQgcmVjIG1ha2VfaXByaW50ZiA6IHR5cGUgYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGEgPVxuICBmdW4gayBvIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICAgIHwgQ2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBDYW1sX3N0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChMaXRfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9zdHJpbmcgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IE5hdGl2ZWludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgSW50NjQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEZsb2F0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBCb29sIChOb19wYWRkaW5nLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQm9vbCAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKEFyZ19wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IEFscGhhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgVGhldGEgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyByZXN0IGFyaXR5XG4gICAgfCBSZWFkZXIgXyAtPlxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgaW1wb3NzaWJsZSwgYnkgdHlwaW5nIG9mIGZvcm1hdHMuICBTZWUgdGhlXG4gICAgICAgICAgIG5vdGUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgY2FzZSBmb3IgbWFrZV9wcmludGYuICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHwgRmx1c2ggcmVzdCAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgLT5cbiAgICAgICAgZnVuIChGb3JtYXQgKGZtdCwgXykpIC0+XG4gICAgICAgICAgbWFrZV9pcHJpbnRmIGsgb1xuICAgICAgICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG4gICAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pZ25vcmVkX3BhcmFtIChmdW4gXyAtPiBrIG8pIChFbmRfb2ZfYWNjKSBpZ24gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIChmdW4ga29jIC0+IG1ha2VfaXByaW50ZiBrIGtvYyByZXN0KSBvIGZtdCdcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgICAgIGsgb1xuYW5kIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIDpcbiAgdHlwZSB4IHkgeiBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+IHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+IHggPVxuICBmdW4gayBvIGZtdCBwYWQgcHJlYyAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICAgIHwgTm9fcGFkZGluZyAgICwgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IE5vX3BhZGRpbmcgICAsIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTGl0X3ByZWNpc2lvbiBfIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KSlcbiAgICB8IEFyZ19wYWRkaW5nIF8sIEFyZ19wcmVjaXNpb24gICAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpKVxuYW5kIGZuX29mX2N1c3RvbV9hcml0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT5cbiAgc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHkgPVxuICBmdW4gayBvIGZtdCAtPiBmdW5jdGlvblxuICAgIHwgQ3VzdG9tX3plcm8gLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyBmbXRcbiAgICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgICAgIGNvbnN0IChmbl9vZl9jdXN0b21fYXJpdHkgayBvIGZtdCBhcml0eSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29udGludWF0aW9ucyBmb3IgbWFrZV9wcmludGYgKilcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBvIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQHtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIFwiQFtcIjsgb3V0cHV0X2FjYyBvIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X3N0cmluZyBvIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgb3V0cHV0X2NoYXIgbyBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmIG9cbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IGZsdXNoIG9cbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBvIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIGJ1ZnB1dF9hY2MgYiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQHtcIjsgYnVmcHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkBbXCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBmIGJcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gYnVmcHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IGJ1ZnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBidWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiAlYSBhbmQgJXQuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IHN0cnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiAoZiAoKSlcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgYiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEVycm9yIG1hbmFnZW1lbnQgKilcblxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBwcmV0dHktcHJpbnRlZCBlcnJvciBtZXNzYWdlLiAqKVxubGV0IGZhaWx3aXRoX21lc3NhZ2UgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IGsgYWNjID0gc3RycHV0X2FjYyBidWYgYWNjOyBmYWlsd2l0aCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdHRpbmcgdG9vbHMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhbiBvcGVuIGJsb2NrIGRlc2NyaXB0aW9uIChpbmRlbnQsIGJsb2NrX3R5cGUpICopXG5sZXQgb3Blbl9ib3hfb2Zfc3RyaW5nIHN0ciA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiAoMCwgUHBfYm94KSBlbHNlXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IGludmFsaWRfYm94ICgpID0gZmFpbHdpdGhfbWVzc2FnZSBcImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTXCIgc3RyIGluXG4gICAgbGV0IHJlYyBwYXJzZV9zcGFjZXMgaSA9XG4gICAgICBpZiBpID0gbGVuIHRoZW4gaSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIC0+IHBhcnNlX3NwYWNlcyAoaSArIDEpXG4gICAgICAgIHwgXyAtPiBpXG4gICAgYW5kIHBhcnNlX2x3b3JkIGkgaiA9XG4gICAgICBpZiBqID0gbGVuIHRoZW4gaiBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5bal0gd2l0aFxuICAgICAgICB8ICdhJyAuLiAneicgLT4gcGFyc2VfbHdvcmQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqXG4gICAgYW5kIHBhcnNlX2ludCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHBhcnNlX2ludCBpIChqICsgMSlcbiAgICAgICAgfCBfIC0+IGogaW5cbiAgICBsZXQgd3N0YXJ0ID0gcGFyc2Vfc3BhY2VzIDAgaW5cbiAgICBsZXQgd2VuZCA9IHBhcnNlX2x3b3JkIHdzdGFydCB3c3RhcnQgaW5cbiAgICBsZXQgYm94X25hbWUgPSBTdHJpbmcuc3ViIHN0ciB3c3RhcnQgKHdlbmQgLSB3c3RhcnQpIGluXG4gICAgbGV0IG5zdGFydCA9IHBhcnNlX3NwYWNlcyB3ZW5kIGluXG4gICAgbGV0IG5lbmQgPSBwYXJzZV9pbnQgbnN0YXJ0IG5zdGFydCBpblxuICAgIGxldCBpbmRlbnQgPVxuICAgICAgaWYgbnN0YXJ0ID0gbmVuZCB0aGVuIDAgZWxzZVxuICAgICAgICB0cnkgaW50X29mX3N0cmluZyAoU3RyaW5nLnN1YiBzdHIgbnN0YXJ0IChuZW5kIC0gbnN0YXJ0KSlcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT4gaW52YWxpZF9ib3ggKCkgaW5cbiAgICBsZXQgZXhwX2VuZCA9IHBhcnNlX3NwYWNlcyBuZW5kIGluXG4gICAgaWYgZXhwX2VuZCA8PiBsZW4gdGhlbiBpbnZhbGlkX2JveCAoKTtcbiAgICBsZXQgYm94X3R5cGUgPSBtYXRjaCBib3hfbmFtZSB3aXRoXG4gICAgICB8IFwiXCIgfCBcImJcIiAtPiBQcF9ib3hcbiAgICAgIHwgXCJoXCIgICAgICAtPiBQcF9oYm94XG4gICAgICB8IFwidlwiICAgICAgLT4gUHBfdmJveFxuICAgICAgfCBcImh2XCIgICAgIC0+IFBwX2h2Ym94XG4gICAgICB8IFwiaG92XCIgICAgLT4gUHBfaG92Ym94XG4gICAgICB8IF8gICAgICAgIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgKGluZGVudCwgYm94X3R5cGUpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUGFyc2luZyB0b29scyAqKVxuXG4oKiBDcmVhdGUgYSBwYWRkaW5nX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcgYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcGFkZGluZyB0byBkaXNqb2luIHRoZSB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnQgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZGRpbmdfZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcGFkZGluZ19mbXRfZWJiID1cbmZ1biBwYWQgZm10IC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAgICAgICAgIC0+IFBhZGRpbmdfZm10X0VCQiAoTm9fcGFkZGluZywgZm10KVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRkaW5nX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgZm10KVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIGZtdClcblxuKCogQ3JlYXRlIGEgcHJlY2lzaW9uX2ZtdF9lYmIgZnJvbSBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wcmVjaXNpb25fZm10X2ViYiA6IHR5cGUgeCB5IC5cbiAgICAoeCwgeSkgcHJlY2lzaW9uIC0+IChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAgIChfLCBfLCBfLCBfLCBfKSBwcmVjaXNpb25fZm10X2ViYiA9XG5mdW4gcHJlYyBmbXQgLT4gbWF0Y2ggcHJlYyB3aXRoXG4gIHwgTm9fcHJlY2lzaW9uICAgIC0+IFByZWNpc2lvbl9mbXRfRUJCIChOb19wcmVjaXNpb24sIGZtdClcbiAgfCBMaXRfcHJlY2lzaW9uIHAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKExpdF9wcmVjaXNpb24gcCwgZm10KVxuICB8IEFyZ19wcmVjaXNpb24gICAtPiBQcmVjaXNpb25fZm10X0VCQiAoQXJnX3ByZWNpc2lvbiwgZm10KVxuXG4oKiBDcmVhdGUgYSBwYWRwcmVjX2ZtdF9lYmIgZnJvbSBhIHBhZGRpbmcsIGEgcHJlY2lzaW9uIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgYW5kIHRoZSBwcmVjaXNpb24gdG8gZGlzam9pbiB0eXBlIHBhcmFtZXRlcnMgb2YgYXJndW1lbnRzXG4gICBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcGFkcHJlY19mbXRfZWJiIDogdHlwZSB4IHkgeiB0IC5cbiAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+XG4gICAgKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgIChfLCBfLCBfLCBfLCBfKSBwYWRwcmVjX2ZtdF9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdCAtPlxuICBsZXQgUHJlY2lzaW9uX2ZtdF9FQkIgKHByZWMsIGZtdCcpID0gbWFrZV9wcmVjaXNpb25fZm10X2ViYiBwcmVjIGZtdCBpblxuICBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIHByZWMsIGZtdCcpXG4gIHwgTGl0X3BhZGRpbmcgKHMsIHcpIC0+IFBhZHByZWNfZm10X0VCQiAoTGl0X3BhZGRpbmcgKHMsIHcpLCBwcmVjLCBmbXQnKVxuICB8IEFyZ19wYWRkaW5nIHMgICAgICAtPiBQYWRwcmVjX2ZtdF9FQkIgKEFyZ19wYWRkaW5nIHMsIHByZWMsIGZtdCcpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCBwYXJzaW5nICopXG5cbigqIFBhcnNlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGZvcm1hdCBhbmQgY3JlYXRlIGEgZm10X2ViYi4gKilcbigqIFJhaXNlIFtGYWlsdXJlXSBpbiBjYXNlIG9mIGludmFsaWQgZm9ybWF0LiAqKVxubGV0IGZtdF9lYmJfb2Zfc3RyaW5nID9sZWdhY3lfYmVoYXZpb3Igc3RyID1cbiAgKCogUGFyYW1ldGVycyBuYW1pbmcgY29udmVudGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gbGl0X3N0YXJ0OiBzdGFydCBvZiB0aGUgbGl0ZXJhbCBzZXF1ZW5jZS4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBzdHJfaW5kOiBjdXJyZW50IGluZGV4IGluIHRoZSBzdHJpbmcuICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGVuZF9pbmQ6IGVuZCBvZiB0aGUgY3VycmVudCAoc3ViLSlmb3JtYXQuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gcGN0X2luZDogaW5kZXggb2YgdGhlICclJyBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICopXG4gICgqICAgLSB6ZXJvOiAgaXMgdGhlICcwJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIG1pbnVzOiBpcyB0aGUgJy0nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGx1czogIGlzIHRoZSAnKycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBoYXNoOiAgaXMgdGhlICcjJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHNwYWNlOiBpcyB0aGUgJyAnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaWduOiAgIGlzIHRoZSAnXycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBwYWQ6IHBhZGRpbmcgb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHByZWM6IHByZWNpc2lvbiBvZiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3ltYjogY2hhciByZXByZXNlbnRpbmcgdGhlIGNvbnZlcnNpb24gKCdjJywgJ3MnLCAnZCcsIC4uLikuICopXG4gICgqICAgLSBjaGFyX3NldDogc2V0IG9mIGNoYXJhY3RlcnMgYXMgYml0bWFwIChzZWUgc2NhbmYgJVsuLi5dKS4gICAgKilcblxuICBsZXQgbGVnYWN5X2JlaGF2aW9yID0gbWF0Y2ggbGVnYWN5X2JlaGF2aW9yIHdpdGhcbiAgICB8IFNvbWUgZmxhZyAtPiBmbGFnXG4gICAgfCBOb25lIC0+IHRydWVcbiAgKCogIFdoZW4gdGhpcyBmbGFnIGlzIGVuYWJsZWQsIHRoZSBmb3JtYXQgcGFyc2VyIHRyaWVzIHRvIGJlaGF2ZSBhc1xuICAgICAgdGhlIDw0LjAyIGltcGxlbWVudGF0aW9ucywgaW4gcGFydGljdWxhciBpdCBpZ25vcmVzIG1vc3QgYmVuaWduXG4gICAgICBub25zZW5zaWNhbCBmb3JtYXRzLiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFydG91dCwgSU5SSUEgUGFyaXMtU2FjbGF5ICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBsZW5ndGggOiBpbnQ7XG4gIG11dGFibGUgYXJyIDogJ2Egc2xvdCBhcnJheTtcbn1cbigqIHsyIFRoZSB0eXBlIFsnYSB0XX1cblxuICAgQSBkeW5hbWljIGFycmF5IGlzIHJlcHJlc2VudGVkIHVzaW5nIGEgYmFja2luZyBhcnJheSBbYXJyXSBhbmRcbiAgIGEgW2xlbmd0aF0uIEl0IGJlaGF2ZXMgYXMgYW4gYXJyYXkgb2Ygc2l6ZSBbbGVuZ3RoXSAtLSB0aGUgaW5kaWNlc1xuICAgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdIGluY2x1ZGVkIGNvbnRhaW4gdXNlci1wcm92aWRlZCB2YWx1ZXMgYW5kXG4gICBjYW4gYmUgW2dldF0gYW5kIFtzZXRdIC0tIGJ1dCB0aGUgbGVuZ3RoIG1heSBhbHNvIGNoYW5nZSBpbiB0aGVcbiAgIGZ1dHVyZSBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgZWxlbWVudHMgYXQgdGhlIGVuZC5cblxuICAgV2UgdXNlIHRoZSBmb2xsb3dpbmcgY29uY2VwdHM7XG4gICAtIGNhcGFjaXR5OiB0aGUgbGVuZ3RoIG9mIHRoZSBiYWNraW5nIGFycmF5OlxuICAgICBbQXJyYXkubGVuZ3RoICBhcnJdXG4gICAtIGxpdmUgc3BhY2U6IHRoZSBwb3J0aW9uIG9mIHRoZSBiYWNraW5nIGFycmF5IHdpdGhcbiAgICAgaW5kaWNlcyBmcm9tIFswXSB0byBbbGVuZ3RoIC0gMV0gaW5jbHVkZWQuXG4gICAtIGVtcHR5IHNwYWNlOiB0aGUgcG9ydGlvbiBvZiB0aGUgYmFja2luZyBhcnJheVxuICAgICBmcm9tIFtsZW5ndGhdIHRvIHRoZSBlbmQgb2YgdGhlIGJhY2tpbmcgYXJyYXkuXG5cbiAgIHsyIFRoZSB0eXBlIFsnYSBzbG90XX1cblxuICAgV2Ugc2hvdWxkIG5vdCBrZWVwIGEgdXNlci1wcm92aWRlZCB2YWx1ZSBpbiB0aGUgZW1wdHkgc3BhY2UsIGFzXG4gICB0aGlzIGNvdWxkIGV4dGVuZCBpdHMgbGlmZXRpbWUgYW5kIG1heSByZXN1bHQgaW4gbWVtb3J5IGxlYWtzIG9mXG4gICBhcmJpdHJhcnkgc2l6ZS4gRnVuY3Rpb25zIHRoYXQgcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGR5bmFtaWNcbiAgIGFycmF5LCBzdWNoIGFzIFtwb3BfbGFzdF0gb3IgW3RydW5jYXRlXSwgbXVzdCByZWFsbHkgZXJhc2UgdGhlXG4gICBlbGVtZW50IGZyb20gdGhlIGJhY2tpbmcgYXJyYXkuXG5cbiAgIFRoaXMgY29uc3RyYWludCBtYWtlcyBpdCBkaWZmaWN1bHQgdG8gcmVwcmVzZW50IGFuIGR5bmFtaWMgYXJyYXkgb2ZcbiAgIGVsZW1lbnRzIG9mIHR5cGUgWydhXSB3aXRoIGEgYmFja2luZyBhcnJheSBvZiB0eXBlIFsnYSBhcnJheV06IHdoYXRcbiAgIHZhbGlkIHZhbHVlIG9mIHR5cGUgWydhXSB3b3VsZCB3ZSB1c2UgaW4gdGhlIGVtcHR5IHNwYWNlPyBUeXBpY2FsXG4gICBjaG9pY2VzIGluY2x1ZGU6XG4gICAtIGFjY2VwdGluZyBzY2VuYXJpb3Mgd2hlcmUgd2UgYWN0dWFsbHkgbGVhayB1c2VyLXByb3ZpZGVkIHZhbHVlc1xuICAgICAoYnV0IHRoaXMgY2FuIGJsb3d1cCBtZW1vcnkgdXNhZ2UgaW4gc29tZSBjYXNlcywgYW5kIGlzIGhhcmQgdG8gZGVidWcpXG4gICAtIHJlcXVpcmluZyBhIFwiZHVtbXlcIiB2YWx1ZSBhdCBjcmVhdGlvbiBvZiB0aGUgZHluYW1pYyBhcnJheVxuICAgICBvciBpbiB0aGUgcGFydHMgb2YgdGhlIEFQSSB0aGF0IGdyb3cgdGhlIGVtcHR5IHNwYWNlXG4gICAgIChidXQgdXNlcnMgZmluZCB0aGlzIHZlcnkgaW5jb252ZW5pZW50KVxuICAgLSB1c2luZyBhcmNhbmUgT2JqLm1hZ2ljIHRyaWNrc1xuICAgICAoYnV0IGV4cGVydHMgZG9uJ3QgYWdyZWUgb24gd2hpY2ggdHJpY2tzIGFyZSBzYWZlIHRvIHVzZSBhbmQvb3JcbiAgICAgIHNob3VsZCBiZSB1c2VkIGhlcmUpXG4gICAtIHVzaW5nIGEgYmFja2luZyBhcnJheSBvZiBbJ2Egb3B0aW9uXSB2YWx1ZXMsIHVzaW5nIFtOb25lXVxuICAgICBpbiB0aGUgZW1wdHkgc3BhY2VcbiAgICAgKGJ1dCB0aGlzIGdpdmVzIGEgbm90aWNlYWJseSBsZXNzIGVmZmljaWVudCBtZW1vcnkgcmVwcmVzZW50YXRpb24pXG5cbiAgIEluIHRoZSBwcmVzZW50IGltcGxlbWVudGF0aW9uLCB3ZSB1c2UgdGhlIFsnYSBvcHRpb25dIGFwcHJvYWNoLFxuICAgd2l0aCBhIHR3aXN0LiBXaXRoIFsnYSBvcHRpb25dLCBjYWxsaW5nIFtzZXQgYSBpIHhdIG11c3QgcmVhbGxvY2F0ZVxuICAgYSBuZXcgW1NvbWUgeF0gYmxvY2s6XG57W1xuICAgbGV0IHNldCBhIGkgeCA9XG4gICAgIGlmIGkgPCAwIHx8IGkgPj0gYS5sZW5ndGggdGhlbiBlcnJvciBcIm91dCBvZiBib3VuZHNcIjtcbiAgICAgYS5hcnIuKGkpIDwtIFNvbWUgeFxuXX1cbiAgIEluc3RlYWQgd2UgdXNlIHRoZSB0eXBlIFsnYSBzbG90XSBiZWxvdyxcbiAgIHdoaWNoIGJlaGF2ZXMgYXMgYW4gb3B0aW9uIHdob3NlIFtTb21lXSBjb25zdHJ1Y3RvclxuICAgKGNhbGxlZCBbRWxlbV0gaGVyZSkgaGFzIGEgX211dGFibGVfIGFyZ3VtZW50LlxuKilcbmFuZCAnYSBzbG90ID1cbnwgRW1wdHlcbnwgRWxlbSBvZiB7IG11dGFibGUgdjogJ2EgfVxuKCpcbiAgIFRoaXMgZ2l2ZXMgYW4gYWxsb2NhdGlvbi1mcmVlIGltcGxlbWVudGF0aW9uIG9mIFtzZXRdIHRoYXQgY2FsbHNcbiAgIFtBcnJheS5nZXRdIChpbnN0ZWFkIG9mIFtBcnJheS5zZXRdKSBvbiB0aGUgYmFja2luZyBhcnJheSBhbmQgdGhlblxuICAgbXV0YXRlcyB0aGUgW3ZdIHBhcmFtZXRlci4gSW4gcHNldWRvLWNvZGU6XG57W1xuICAgbGV0IHNldCBhIGkgeCA9XG4gICAgIGlmIGkgPCAwIHx8IGkgPj0gYS5sZW5ndGggdGhlbiBlcnJvciBcIm91dCBvZiBib3VuZHNcIjtcbiAgICAgbWF0Y2ggYS5hcnIuKGkpIHdpdGhcbiAgICAgfCBFbXB0eSAtPiBlcnJvciBcImludmFsaWQgc3RhdGU6IG1pc3NpbmcgZWxlbWVudFwiXG4gICAgIHwgRWxlbSBzIC0+IHMudiA8LSB4XG5dfVxuICAgV2l0aCB0aGlzIGFwcHJvYWNoLCBhY2Nlc3NpbmcgYW4gZWxlbWVudCBzdGlsbCBwYXlzIHRoZSBjb3N0IG9mIGFuXG4gICBleHRyYSBpbmRpcmVjdGlvbiAoY29tcGFyZWQgdG8gYXBwcm9hY2hlcyB0aGF0IGRvIG5vdCBib3ggZWxlbWVudHNcbiAgIGluIHRoZSBiYWNraW5nIGFycmF5KSwgYnV0IG9ubHkgb3BlcmF0aW9ucyB0aGF0IGFkZCBuZXcgZWxlbWVudHMgYXRcbiAgIHRoZSBlbmQgb2YgdGhlIGFycmF5IHBheSBleHRyYSBhbGxvY2F0aW9ucy5cblxuICAgVGhlcmUgYXJlIHNvbWUgc2l0dWF0aW9ucyB3aGVyZSBbJ2Egb3B0aW9uXSBpcyBiZXR0ZXI6IGl0IG1ha2VzXG4gICBbcG9wX2xhc3Rfb3B0XSBtb3JlIGVmZmljaWVudCBhcyB0aGUgdW5kZXJseWluZyBvcHRpb24gY2FuIGJlXG4gICByZXR1cm5lZCBkaXJlY3RseSwgYW5kIGl0IGFsc28gbGV0cyB1cyB1c2UgW0FycmF5LmJsaXRdIHRvXG4gICBpbXBsZW1lbnQgW2FwcGVuZF0uIFdlIGJlbGlldmUgdGhhdCBvcHRpbWl6aW5nIFtnZXRdIGFuZCBbc2V0XSBpc1xuICAgbW9yZSBpbXBvcnRhbnQgZm9yIGR5bmFtaWMgYXJyYXlzLlxuXG4gICB7MiBJbnZhcmlhbnRzIGFuZCB2YWxpZCBzdGF0ZXN9XG5cbiAgIFdlIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IFtsZW5ndGggPj0gMF0gYXQgYWxsIHRpbWVzLlxuICAgd2UgcmVseSBvbiB0aGlzIGludmFyaWFudCBmb3Igb3B0aW1pemF0aW9uLlxuXG4gICBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgZGVmaW5lIHdoYXQgd2UgY2FsbCBhIFwidmFsaWRcIiBkeW5hcnJheTpcbiAgIC0gdmFsaWQgbGVuZ3RoOiBbbGVuZ3RoIDw9IEFycmF5Lmxlbmd0aCBhcnJdXG4gICAtIG5vIG1pc3NpbmcgZWxlbWVudCBpbiB0aGUgbGl2ZSBzcGFjZTpcbiAgICAgZm9yYWxsIGksIFswIDw9IGkgPCBsZW5ndGhdIGltcGxpZXMgW2Fyci4oaSkgPD4gRW1wdHldXG4gICAtIG5vIGVsZW1lbnQgaW4gdGhlIGVtcHR5IHNwYWNlOlxuICAgICBmb3JhbGwgaSwgW2xlbmd0aCA8PSBpIDwgQXJyYXkubGVuZ3RoIGFycl0gaW1wbGllcyBbYXJyLihpKSA9IEVtcHR5XVxuXG4gICBVbmZvcnR1bmF0ZWx5LCB3ZSBjYW5ub3QgZWFzaWx5IGVuZm9yY2UgdmFsaWRpdHkgYXMgYW4gaW52YXJpYW50IGluXG4gICBwcmVzZW5jZSBvZiBjb25jdXJyZW50IHVwZGF0ZXMuIFdlIGNhbiB0aHVzIG9ic2VydmUgZHluYXJyYXlzIGluXG4gICBcImludmFsaWQgc3RhdGVzXCIuIE91ciBpbXBsZW1lbnRhdGlvbiBtYXkgcmFpc2UgZXhjZXB0aW9ucyBvciByZXR1cm5cbiAgIGluY29ycmVjdCByZXN1bHRzIG9uIG9ic2VydmluZyBpbnZhbGlkIHN0YXRlcywgYnV0IG9mIGNvdXJzZSBpdFxuICAgbXVzdCBwcmVzZXJ2ZSBtZW1vcnkgc2FmZXR5LlxuKilcblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIGxldFtAaW5saW5lIG5ldmVyXSBpbmRleF9vdXRfb2ZfYm91bmRzIGYgfmkgfmxlbmd0aCA9XG4gICAgaWYgbGVuZ3RoID0gMCB0aGVuXG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmdcbiAgICAgICAgXCJEeW5hcnJheS4lczogaW5kZXggJWQgb3V0IG9mIGJvdW5kcyAoZW1wdHkgZHluYXJyYXkpXCJcbiAgICAgICAgZiBpXG4gICAgZWxzZVxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiRHluYXJyYXkuJXM6IGluZGV4ICVkIG91dCBvZiBib3VuZHMgKDAuLiVkKVwiXG4gICAgICAgIGYgaSAobGVuZ3RoIC0gMSlcblxuICBsZXRbQGlubGluZSBuZXZlcl0gbmVnYXRpdmVfbGVuZ3RoX3JlcXVlc3RlZCBmIG4gPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogbmVnYXRpdmUgbGVuZ3RoICVkIHJlcXVlc3RlZFwiXG4gICAgICBmIG5cblxuICBsZXRbQGlubGluZSBuZXZlcl0gbmVnYXRpdmVfY2FwYWNpdHlfcmVxdWVzdGVkIGYgbiA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIkR5bmFycmF5LiVzOiBuZWdhdGl2ZSBjYXBhY2l0eSAlZCByZXF1ZXN0ZWRcIlxuICAgICAgZiBuXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIHJlcXVlc3RlZF9sZW5ndGhfb3V0X29mX2JvdW5kcyBmIHJlcXVlc3RlZF9sZW5ndGggPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogY2Fubm90IGdyb3cgdG8gcmVxdWVzdGVkIGxlbmd0aCAlZCAobWF4X2FycmF5X2xlbmd0aCBpcyAlZClcIlxuICAgICAgZiByZXF1ZXN0ZWRfbGVuZ3RoIFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbiAgKCogV2hlbiBvYnNlcnZpbmcgYW4gaW52YWxpZCBzdGF0ZSAoW21pc3NpbmdfZWxlbWVudF0sXG4gICAgIFtpbnZhbGlkX2xlbmd0aF0pLCB3ZSBkbyBub3QgZ2l2ZSB0aGUgbmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvblxuICAgICBpbiB0aGUgZXJyb3IgbWVzc2FnZSwgYXMgdGhlIGVycm9yIGlzIHJlbGF0ZWQgdG8gaW52YWxpZCBvcGVyYXRpb25zXG4gICAgIHBlcmZvcm1lZCBlYXJsaWVyLCBhbmQgbm90IHRvIHRoZSBjYWxsc2l0ZSBvZiB0aGUgZnVuY3Rpb25cbiAgICAgaXRzZWxmLiAqKVxuXG4gIGxldCBpbnZhbGlkX3N0YXRlX2Rlc2NyaXB0aW9uID1cbiAgICBcIkludmFsaWQgZHluYXJyYXkgKHVuc3luY2hyb25pemVkIGNvbmN1cnJlbnQgbGVuZ3RoIGNoYW5nZSlcIlxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBtaXNzaW5nX2VsZW1lbnQgfmkgfmxlbmd0aCA9XG4gICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICBcIiVzOiBtaXNzaW5nIGVsZW1lbnQgYXQgcG9zaXRpb24gJWQgPCBsZW5ndGggJWRcIlxuICAgICAgaW52YWxpZF9zdGF0ZV9kZXNjcmlwdGlvblxuICAgICAgaSBsZW5ndGhcblxuICBsZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9sZW5ndGggfmxlbmd0aCB+Y2FwYWNpdHkgPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCIlczogbGVuZ3RoICVkID4gY2FwYWNpdHkgJWRcIlxuICAgICAgaW52YWxpZF9zdGF0ZV9kZXNjcmlwdGlvblxuICAgICAgbGVuZ3RoIGNhcGFjaXR5XG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGxlbmd0aF9jaGFuZ2VfZHVyaW5nX2l0ZXJhdGlvbiBmIH5leHBlY3RlZCB+b2JzZXJ2ZWQgPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogYSBsZW5ndGggY2hhbmdlIGZyb20gJWQgdG8gJWQgb2NjdXJyZWQgZHVyaW5nIGl0ZXJhdGlvblwiXG4gICAgICBmIGV4cGVjdGVkIG9ic2VydmVkXG5cbiAgKCogV2hlbiBhbiBbRW1wdHldIGVsZW1lbnQgaXMgb2JzZXJ2ZWQgdW5leHBlY3RlZGx5IGF0IGluZGV4IFtpXSxcbiAgICAgaXQgbWF5IGJlIGVpdGhlciBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBhbiBpbnZhbGlkLXN0YXRlIHNpdHVhdGlvblxuICAgICBkZXBlbmRpbmcgb24gd2hldGhlciBbaSA8PSBsZW5ndGhdLiAqKVxuICBsZXRbQGlubGluZSBuZXZlcl0gdW5leHBlY3RlZF9lbXB0eV9lbGVtZW50IGYgfmkgfmxlbmd0aCA9XG4gICAgaWYgaSA8IGxlbmd0aCB0aGVuXG4gICAgICBtaXNzaW5nX2VsZW1lbnQgfmkgfmxlbmd0aFxuICAgIGVsc2VcbiAgICAgIGluZGV4X291dF9vZl9ib3VuZHMgZiB+aSB+bGVuZ3RoXG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGVtcHR5X2R5bmFycmF5IGYgPVxuICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZ1xuICAgICAgXCJEeW5hcnJheS4lczogZW1wdHkgYXJyYXlcIiBmXG5lbmRcblxuKCogRGV0ZWN0aW5nIGl0ZXJhdG9yIGludmFsaWRhdGlvbi5cblxuICAgU2VlIHshaXRlcn0gYmVsb3cgZm9yIGEgZGV0YWlsZWQgdXNhZ2UgZXhhbXBsZS5cbiopXG5sZXQgY2hlY2tfc2FtZV9sZW5ndGggZiBhIH5sZW5ndGggPVxuICBsZXQgbGVuZ3RoX2EgPSBhLmxlbmd0aCBpblxuICBpZiBsZW5ndGggPD4gbGVuZ3RoX2EgdGhlblxuICAgIEVycm9yLmxlbmd0aF9jaGFuZ2VfZHVyaW5nX2l0ZXJhdGlvbiBmXG4gICAgICB+ZXhwZWN0ZWQ6bGVuZ3RoIH5vYnNlcnZlZDpsZW5ndGhfYVxuXG4oKiogQ2FyZWZ1bCB1bnNhZmUgYWNjZXNzLiAqKVxuXG4oKiBQb3N0Y29uZGl0aW9uIG9uIG5vbi1leGNlcHRpb25hbCByZXR1cm46XG4gICBbbGVuZ3RoIDw9IEFycmF5Lmxlbmd0aCBhcnJdICopXG5sZXRbQGlubGluZSBhbHdheXNdIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyID1cbiAgbGV0IGNhcGFjaXR5ID0gQXJyYXkubGVuZ3RoIGFyciBpblxuICBpZiBsZW5ndGggPiBjYXBhY2l0eSB0aGVuXG4gICAgRXJyb3IuaW52YWxpZF9sZW5ndGggfmxlbmd0aCB+Y2FwYWNpdHlcblxuKCogUHJlY29uZGl0aW9uOiBbMCA8PSBpIDwgbGVuZ3RoIDw9IEFycmF5Lmxlbmd0aCBhcnJdXG5cbiAgIFRoaXMgcHJlY29uZGl0aW9uIGlzIHR5cGljYWxseSBndWFyYW50ZWVkIGJ5IGtub3dpbmdcbiAgIFswIDw9IGkgPCBsZW5ndGhdIGFuZCBjYWxsaW5nIFtjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycl0uKilcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCA9XG4gIG1hdGNoIEFycmF5LnVuc2FmZV9nZXQgYXJyIGkgd2l0aFxuICB8IEVtcHR5IC0+IEVycm9yLm1pc3NpbmdfZWxlbWVudCB+aSB+bGVuZ3RoXG4gIHwgRWxlbSB7dn0gLT4gdlxuXG5cbigqKiB7MTpkeW5hcnJheXMgRHluYW1pYyBhcnJheXN9ICopXG5cbmxldCBjcmVhdGUgKCkgPSB7XG4gIGxlbmd0aCA9IDA7XG4gIGFyciA9IFt8IHxdO1xufVxuXG5sZXQgbWFrZSBuIHggPVxuICBpZiBuIDwgMCB0aGVuIEVycm9yLm5lZ2F0aXZlX2xlbmd0aF9yZXF1ZXN0ZWQgXCJtYWtlXCIgbjtcbiAge1xuICAgIGxlbmd0aCA9IG47XG4gICAgYXJyID0gQXJyYXkuaW5pdCBuIChmdW4gXyAtPiBFbGVtIHt2ID0geH0pO1xuICB9XG5cbmxldCBpbml0IG4gZiA9XG4gIGlmIG4gPCAwIHRoZW4gRXJyb3IubmVnYXRpdmVfbGVuZ3RoX3JlcXVlc3RlZCBcImluaXRcIiBuO1xuICB7XG4gICAgbGVuZ3RoID0gbjtcbiAgICBhcnIgPSBBcnJheS5pbml0IG4gKGZ1biBpIC0+IEVsZW0ge3YgPSBmIGl9KTtcbiAgfVxuXG5sZXQgZ2V0IGEgaSA9XG4gICgqIFRoaXMgaW1wbGVtZW50YXRpb24gd2lsbCBwcm9wYWdhdGUgYW4gW0ludmFsaWRfYXJndW1lbnRdIGV4Y2VwdGlvblxuICAgICBmcm9tIGFycmF5IGxvb2t1cCBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIHRoZSBiYWNraW5nIGFycmF5LFxuICAgICBpbnN0ZWFkIG9mIHVzaW5nIG91ciBvd24gW0Vycm9yLmluZGV4X291dF9vZl9ib3VuZHNdLiBUaGlzIGlzXG4gICAgIGFsbG93ZWQgYnkgb3VyIHNwZWNpZmljYXRpb24sIGFuZCBtb3JlIGVmZmljaWVudCAtLSBubyBuZWVkIHRvXG4gICAgIGNoZWNrIHRoYXQgW2xlbmd0aCBhIDw9IGNhcGFjaXR5IGFdIGluIHRoZSBmYXN0IHBhdGguICopXG4gIG1hdGNoIGEuYXJyLihpKSB3aXRoXG4gIHwgRWxlbSBzIC0+IHMudlxuICB8IEVtcHR5IC0+XG4gICAgICBFcnJvci51bmV4cGVjdGVkX2VtcHR5X2VsZW1lbnQgXCJnZXRcIiB+aSB+bGVuZ3RoOmEubGVuZ3RoXG5cbmxldCBzZXQgYSBpIHggPVxuICAoKiBTZWUgeyFnZXR9IGNvbW1lbnQgb24gdGhlIHVzZSBvZiBjaGVja2VkIGFycmF5XG4gICAgIGFjY2VzcyB3aXRob3V0IG91ciBvd24gYm91bmQgY2hlY2tpbmcuICopXG4gIG1hdGNoIGEuYXJyLihpKSB3aXRoXG4gIHwgRWxlbSBzIC0+IHMudiA8LSB4XG4gIHwgRW1wdHkgLT5cbiAgICAgIEVycm9yLnVuZXhwZWN0ZWRfZW1wdHlfZWxlbWVudCBcInNldFwiIH5pIH5sZW5ndGg6YS5sZW5ndGhcblxubGV0IGxlbmd0aCBhID0gYS5sZW5ndGhcblxubGV0IGlzX2VtcHR5IGEgPSAoYS5sZW5ndGggPSAwKVxuXG5sZXQgY29weSB7bGVuZ3RoOyBhcnJ9ID1cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIHVzZSBbbGVuZ3RoXSBhcyB0aGUgbmV3IGNhcGFjaXR5IHRvIG1ha2VcbiAgICAgdGhpcyBhbiBPKGxlbmd0aCkgb3BlcmF0aW9uLiAqKVxuICB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgICBFbGVtIHt2fVxuICAgICk7XG4gIH1cblxubGV0IGdldF9sYXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA8PSBjYXBhY2l0eSBhXS4gKilcbiAgaWYgbGVuZ3RoID0gMCB0aGVuIEVycm9yLmVtcHR5X2R5bmFycmF5IFwiZ2V0X2xhc3RcIjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoID4gMF0uICopXG4gIHVuc2FmZV9nZXQgYXJyIH5pOihsZW5ndGggLSAxKSB+bGVuZ3RoXG5cbmxldCBmaW5kX2xhc3QgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgKCogV2Uga25vdyBbbGVuZ3RoIDw9IGNhcGFjaXR5IGFdLiAqKVxuICBpZiBsZW5ndGggPSAwIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgKCogV2Uga25vdyBbbGVuZ3RoID4gMF0uICopXG4gICAgU29tZSAodW5zYWZlX2dldCBhcnIgfmk6KGxlbmd0aCAtIDEpIH5sZW5ndGgpXG5cbigqKiB7MTpyZW1vdmluZyBSZW1vdmluZyBlbGVtZW50c30gKilcblxubGV0IHBvcF9sYXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gICgqIFdlIGtub3cgW2xlbmd0aCA8PSBjYXBhY2l0eSBhXS4gKilcbiAgaWYgbGVuZ3RoID0gMCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IGxhc3QgPSBsZW5ndGggLSAxIGluXG4gICgqIFdlIGtub3cgW2xlbmd0aCA+IDBdIHNvIFtsYXN0ID49IDBdLiAqKVxuICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IGFyciBsYXN0IHdpdGhcbiAgfCBFbXB0eSAtPlxuICAgICAgRXJyb3IubWlzc2luZ19lbGVtZW50IH5pOmxhc3Qgfmxlbmd0aFxuICB8IEVsZW0gcyAtPlxuICAgICAgQXJyYXkudW5zYWZlX3NldCBhcnIgbGFzdCBFbXB0eTtcbiAgICAgIGEubGVuZ3RoIDwtIGxhc3Q7XG4gICAgICBzLnZcblxubGV0IHBvcF9sYXN0X29wdCBhID1cbiAgbWF0Y2ggcG9wX2xhc3QgYSB3aXRoXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG4gIHwgeCAtPiBTb21lIHhcblxubGV0IHJlbW92ZV9sYXN0IGEgPVxuICBsZXQgbGFzdCA9IGxlbmd0aCBhIC0gMSBpblxuICBpZiBsYXN0ID49IDAgdGhlbiBiZWdpblxuICAgIGEubGVuZ3RoIDwtIGxhc3Q7XG4gICAgYS5hcnIuKGxhc3QpIDwtIEVtcHR5O1xuICBlbmRcblxubGV0IHRydW5jYXRlIGEgbiA9XG4gIGlmIG4gPCAwIHRoZW4gRXJyb3IubmVnYXRpdmVfbGVuZ3RoX3JlcXVlc3RlZCBcInRydW5jYXRlXCIgbjtcbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGlmIGxlbmd0aCA8PSBuIHRoZW4gKClcbiAgZWxzZSBiZWdpblxuICAgIGEubGVuZ3RoIDwtIG47XG4gICAgQXJyYXkuZmlsbCBhcnIgbiAobGVuZ3RoIC0gbikgRW1wdHk7XG4gIGVuZFxuXG5sZXQgY2xlYXIgYSA9IHRydW5jYXRlIGEgMFxuXG5cbigqKiB7MTpjYXBhY2l0eSBCYWNraW5nIGFycmF5IGFuZCBjYXBhY2l0eX0gKilcblxubGV0IGNhcGFjaXR5IGEgPSBBcnJheS5sZW5ndGggYS5hcnJcblxubGV0IG5leHRfY2FwYWNpdHkgbiA9XG4gIGxldCBuJyA9XG4gICAgKCogRm9yIGxhcmdlIHZhbHVlcyBvZiBuLCB3ZSB1c2UgMS41IGFzIG91ciBncm93dGggZmFjdG9yLlxuXG4gICAgICAgRm9yIHNtYWxsZXIgdmFsdWVzIG9mIG4sIHdlIGdyb3cgbW9yZSBhZ2dyZXNzaXZlbHkgdG8gYXZvaWRcbiAgICAgICByZWFsbG9jYXRpbmcgdG9vIG11Y2ggd2hlbiBhY2N1bXVsYXRpbmcgZWxlbWVudHMgaW50byBhbiBlbXB0eVxuICAgICAgIGFycmF5LlxuXG4gICAgICAgVGhlIGNvbnN0YW50cyBcIjUxMiB3b3Jkc1wiIGFuZCBcIjggd29yZHNcIiBiZWxvdyBhcmUgdGFrZW4gZnJvbVxuICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZvbGx5L2Jsb2IvXG4gICAgICAgICAgIGMwNmMwZjQxZDkxZGFmMWE2YTVmM2ZjMWNkNDY1MzAyYWMyNjA0NTkvZm9sbHkvRkJWZWN0b3IuaCNMMTEyOC1MMTE1N1xuICAgICopXG4gICAgaWYgbiA8PSA1MTIgdGhlbiBuICogMlxuICAgIGVsc2UgbiArIG4gLyAyXG4gIGluXG4gICgqIGp1bXAgZGlyZWN0bHkgZnJvbSAwIHRvIDggKilcbiAgbWluIChtYXggOCBuJykgU3lzLm1heF9hcnJheV9sZW5ndGhcblxubGV0IGVuc3VyZV9jYXBhY2l0eSBhIGNhcGFjaXR5X3JlcXVlc3QgPVxuICBsZXQgYXJyID0gYS5hcnIgaW5cbiAgbGV0IGN1cl9jYXBhY2l0eSA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgaWYgY2FwYWNpdHlfcmVxdWVzdCA8IDAgdGhlblxuICAgIEVycm9yLm5lZ2F0aXZlX2NhcGFjaXR5X3JlcXVlc3RlZCBcImVuc3VyZV9jYXBhY2l0eVwiIGNhcGFjaXR5X3JlcXVlc3RcbiAgZWxzZSBpZiBjdXJfY2FwYWNpdHkgPj0gY2FwYWNpdHlfcmVxdWVzdCB0aGVuXG4gICAgKCogVGhpcyBpcyB0aGUgZmFzdCBwYXRoLCB0aGUgY29kZSB1cCB0byBoZXJlIG11c3QgZG8gYXMgbGl0dGxlIGFzXG4gICAgICAgcG9zc2libGUuIChUaGlzIGlzIHdoeSB3ZSBkb24ndCB1c2UgW2xldCB7YXJyOyBsZW5ndGh9ID0gYV0gYXNcbiAgICAgICB1c3VhbCwgdGhlIGxlbmd0aCBpcyBub3QgbmVlZGVkIGluIHRoZSBmYXN0IHBhdGguKSopXG4gICAgKClcbiAgZWxzZSBiZWdpblxuICAgIGlmIGNhcGFjaXR5X3JlcXVlc3QgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuXG4gICAgICBFcnJvci5yZXF1ZXN0ZWRfbGVuZ3RoX291dF9vZl9ib3VuZHMgXCJlbnN1cmVfY2FwYWNpdHlcIiBjYXBhY2l0eV9yZXF1ZXN0O1xuICAgIGxldCBuZXdfY2FwYWNpdHkgPVxuICAgICAgKCogV2UgdXNlIGVpdGhlciB0aGUgbmV4dCBleHBvbmVudGlhbC1ncm93dGggc3RyYXRlZ3ksXG4gICAgICAgICBvciB0aGUgcmVxdWVzdGVkIHN0cmF0ZWd5LCB3aGljaGV2ZXIgaXMgYmlnZ2VyLlxuXG4gICAgICAgICBDb21wYXJlZCB0byBvbmx5IHVzaW5nIHRoZSBleHBvbmVudGlhbC1ncm93dGggc3RyYXRlZ3ksIHRoaXNcbiAgICAgICAgIGxldHMgdXMgdXNlIGxlc3MgbWVtb3J5IGJ5IGF2b2lkaW5nIGFueSBvdmVyc2hvb3Qgd2hlbmV2ZXJcbiAgICAgICAgIHRoZSBjYXBhY2l0eSByZXF1ZXN0IGlzIG5vdGljZWFibHkgbGFyZ2VyIHRoYW4gdGhlIGN1cnJlbnRcbiAgICAgICAgIGNhcGFjaXR5LlxuXG4gICAgICAgICBDb21wYXJlZCB0byBvbmx5IHVzaW5nIHRoZSByZXF1ZXN0ZWQgY2FwYWNpdHksIHRoaXMgYXZvaWRzXG4gICAgICAgICBsb3NpbmcgdGhlIGFtb3J0aXplZCBndWFyYW50ZWU6IHdlIGFsbG9jYXRlZCBcImV4cG9uZW50aWFsbHlcbiAgICAgICAgIG9yIG1vcmVcIiwgc28gdGhlIGFtb3J0aXphdGlvbiBob2xkcy4gSW4gcGFydGljdWxhciwgbm90aWNlXG4gICAgICAgICB0aGF0IHJlcGVhdGVkIGNhbGxzIHRvIFtlbnN1cmVfY2FwYWNpdHkgYSAobGVuZ3RoIGEgKyAxKV1cbiAgICAgICAgIHdpbGwgaGF2ZSBhbW9ydGl6ZWQtbGluZWFyIHJhdGhlciB0aGFuIHF1YWRyYXRpYyBjb21wbGV4aXR5LlxuICAgICAgKilcbiAgICAgIG1heCAobmV4dF9jYXBhY2l0eSBjdXJfY2FwYWNpdHkpIGNhcGFjaXR5X3JlcXVlc3QgaW5cbiAgICBsZXQgbmV3X2FyciA9IEFycmF5Lm1ha2UgbmV3X2NhcGFjaXR5IEVtcHR5IGluXG4gICAgQXJyYXkuYmxpdCBhcnIgMCBuZXdfYXJyIDAgYS5sZW5ndGg7XG4gICAgYS5hcnIgPC0gbmV3X2FycjtcbiAgICAoKiBwb3N0Y29uZGl0aW9uOiAqKVxuICAgIGFzc2VydCAoMCA8PSBjYXBhY2l0eV9yZXF1ZXN0KTtcbiAgICBhc3NlcnQgKGNhcGFjaXR5X3JlcXVlc3QgPD0gQXJyYXkubGVuZ3RoIG5ld19hcnIpO1xuICBlbmRcblxubGV0IGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIGV4dHJhX2NhcGFjaXR5X3JlcXVlc3QgPVxuICBlbnN1cmVfY2FwYWNpdHkgYSAobGVuZ3RoIGEgKyBleHRyYV9jYXBhY2l0eV9yZXF1ZXN0KVxuXG5sZXQgZml0X2NhcGFjaXR5IGEgPVxuICBpZiBjYXBhY2l0eSBhID0gYS5sZW5ndGhcbiAgdGhlbiAoKVxuICBlbHNlIGEuYXJyIDwtIEFycmF5LnN1YiBhLmFyciAwIGEubGVuZ3RoXG5cbmxldCBzZXRfY2FwYWNpdHkgYSBuID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIEVycm9yLm5lZ2F0aXZlX2NhcGFjaXR5X3JlcXVlc3RlZCBcInNldF9jYXBhY2l0eVwiIG47XG4gIGxldCBhcnIgPSBhLmFyciBpblxuICBsZXQgY3VyX2NhcGFjaXR5ID0gQXJyYXkubGVuZ3RoIGFyciBpblxuICBpZiBuIDwgY3VyX2NhcGFjaXR5IHRoZW4gYmVnaW5cbiAgICBhLmxlbmd0aCA8LSBtaW4gYS5sZW5ndGggbjtcbiAgICBhLmFyciA8LSBBcnJheS5zdWIgYXJyIDAgbjtcbiAgZW5kXG4gIGVsc2UgaWYgbiA+IGN1cl9jYXBhY2l0eSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19hcnIgPSBBcnJheS5tYWtlIG4gRW1wdHkgaW5cbiAgICBBcnJheS5ibGl0IGFyciAwIG5ld19hcnIgMCBhLmxlbmd0aDtcbiAgICBhLmFyciA8LSBuZXdfYXJyO1xuICBlbmRcblxubGV0IHJlc2V0IGEgPVxuICBhLmxlbmd0aCA8LSAwO1xuICBhLmFyciA8LSBbfHxdXG5cbigqKiB7MTphZGRpbmcgQWRkaW5nIGVsZW1lbnRzfSAqKVxuXG4oKiBXZSBjaG9zZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBbYWRkX2xhc3QgYSB4XSB0aGF0IGJlaGF2ZXMgY29ycmVjdGx5XG4gICBpbiBwcmVzZW5jZSBvZiBhc3luY2hyb25vdXMgLyByZS1lbnRyYW50IGNvZGUgZXhlY3V0aW9uIGFyb3VuZFxuICAgYWxsb2NhdGlvbnMgYW5kIHBvbGwgcG9pbnRzOiBpZiBhbm90aGVyIHRocmVhZCBvciBhIGNhbGxiYWNrIGdldHNcbiAgIGV4ZWN1dGVkIG9uIGFsbG9jYXRpb24sIHdlIGFkZCB0aGUgZWxlbWVudCBhdCB0aGUgbmV3IGVuZCBvZiB0aGVcbiAgIGR5bmFtaWMgYXJyYXkuXG5cbiAgIChXZSBkbyBub3QgZ2l2ZSB0aGUgc2FtZSBndWFyYW50ZWVzIGluIHByZXNlbmNlIG9mIGNvbmN1cnJlbnRcbiAgIHBhcmFsbGVsIHVwZGF0ZXMsIHdoaWNoIGFyZSBtdWNoIG1vcmUgZXhwZW5zaXZlIHRvIHByb3RlY3RcbiAgIGFnYWluc3QuKVxuKilcblxuKCogW2FkZF9sYXN0X2lmX3Jvb20gYSBlbGVtXSBvbmx5IHdyaXRlcyB0aGUgc2xvdCBpZiB0aGVyZSBpcyByb29tLCBhbmRcbiAgIHJldHVybnMgW2ZhbHNlXSBvdGhlcndpc2UuICopXG5sZXRbQGlubGluZV0gYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW0gPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgKCogd2Uga25vdyBbMCA8PSBsZW5ndGhdICopXG4gIGlmIGxlbmd0aCA+PSBBcnJheS5sZW5ndGggYXJyIHRoZW4gZmFsc2VcbiAgZWxzZSBiZWdpblxuICAgICgqIHdlIGtub3cgWzAgPD0gbGVuZ3RoIDwgQXJyYXkubGVuZ3RoIGFycl0gKilcbiAgICBhLmxlbmd0aCA8LSBsZW5ndGggKyAxO1xuICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyIGxlbmd0aCBlbGVtO1xuICAgIHRydWVcbiAgZW5kXG5cbmxldCBhZGRfbGFzdCBhIHggPVxuICBsZXQgZWxlbSA9IEVsZW0ge3YgPSB4fSBpblxuICBpZiBhZGRfbGFzdF9pZl9yb29tIGEgZWxlbSB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICAoKiBzbG93IHBhdGggKilcbiAgICBsZXQgcmVjIGdyb3dfYW5kX2FkZCBhIGVsZW0gPVxuICAgICAgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgMTtcbiAgICAgIGlmIG5vdCAoYWRkX2xhc3RfaWZfcm9vbSBhIGVsZW0pXG4gICAgICB0aGVuIGdyb3dfYW5kX2FkZCBhIGVsZW1cbiAgICBpbiBncm93X2FuZF9hZGQgYSBlbGVtXG4gIGVuZFxuXG5sZXQgcmVjIGFwcGVuZF9saXN0IGEgbGkgPVxuICBtYXRjaCBsaSB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCB4IDo6IHhzIC0+IGFkZF9sYXN0IGEgeDsgYXBwZW5kX2xpc3QgYSB4c1xuXG5sZXQgYXBwZW5kX2l0ZXIgYSBpdGVyIGIgPVxuICBpdGVyIChmdW4geCAtPiBhZGRfbGFzdCBhIHgpIGJcblxubGV0IGFwcGVuZF9zZXEgYSBzZXEgPVxuICBTZXEuaXRlciAoZnVuIHggLT4gYWRkX2xhc3QgYSB4KSBzZXFcblxuKCogYXBwZW5kX2FycmF5OiBzYW1lIFsuLi5faWZfcm9vbV0gYW5kIGxvb3AgbG9naWMgYXMgW2FkZF9sYXN0XS4gKilcblxubGV0IGFwcGVuZF9hcnJheV9pZl9yb29tIGEgYiA9XG4gIGxldCB7YXJyOyBsZW5ndGggPSBsZW5ndGhfYX0gPSBhIGluXG4gIGxldCBsZW5ndGhfYiA9IEFycmF5Lmxlbmd0aCBiIGluXG4gIGlmIGxlbmd0aF9hICsgbGVuZ3RoX2IgPiBBcnJheS5sZW5ndGggYXJyIHRoZW4gZmFsc2VcbiAgZWxzZSBiZWdpblxuICAgIGEubGVuZ3RoIDwtIGxlbmd0aF9hICsgbGVuZ3RoX2I7XG4gICAgKCogTm90ZTogd2UgaW50ZW50aW9uYWxseSB1cGRhdGUgdGhlIGxlbmd0aCAqYmVmb3JlKiBmaWxsaW5nIHRoZVxuICAgICAgIGVsZW1lbnRzLiBUaGlzIFwicmVzZXJ2ZSBiZWZvcmUgZmlsbFwiIGFwcHJvYWNoIHByb3ZpZGVzIGJldHRlclxuICAgICAgIGJlaGF2aW9yIHRoYW4gXCJmaWxsIHRoZW4gbm90aWZ5XCIgaW4gcHJlc2VuY2Ugb2YgcmVlbnRyYW50XG4gICAgICAgbW9kaWZpY2F0aW9ucyAod2hpY2ggbWF5IG9jY3VyIGJlbG93LCBvbiBhIHBvbGwgcG9pbnQgaW4gdGhlIGxvb3Agb3JcbiAgICAgICB0aGUgW0VsZW1dIGFsbG9jYXRpb24pOlxuXG4gICAgICAgLSBJZiBzb21lIGNvZGUgYXN5bmNocm9ub3VzbHkgYWRkcyBuZXcgZWxlbWVudHMgYWZ0ZXIgdGhpc1xuICAgICAgICAgbGVuZ3RoIHVwZGF0ZSwgdGhleSB3aWxsIGdvIGFmdGVyIHRoZSBzcGFjZSB3ZSBqdXN0IHJlc2VydmVkLFxuICAgICAgICAgYW5kIGluIHBhcnRpY3VsYXIgbm8gYWRkaXRpb24gd2lsbCBiZSBsb3N0LiBJZiBpbnN0ZWFkIHdlXG4gICAgICAgICB1cGRhdGVkIHRoZSBsZW5ndGggYWZ0ZXIgdGhlIGxvb3AsIGFueSBhc3luY2hyb25vdXMgYWRkaXRpb25cbiAgICAgICAgIGR1cmluZyB0aGUgbG9vcCBjb3VsZCBiZSBlcmFzZWQgb3IgZXJhc2Ugb25lIG9mIG91ciBhZGRpdGlvbnMsXG4gICAgICAgICBzaWxlbnRseSwgd2l0aG91dCB3YXJuaW5nIHRoZSB1c2VyLlxuXG4gICAgICAgLSBJZiBzb21lIGNvZGUgYXN5bmNocm9ub3VzbHkgaXRlcmF0ZXMgb24gdGhlIGR5bmFycmF5LCBvclxuICAgICAgICAgcmVtb3ZlcyBlbGVtZW50cywgb3Igb3RoZXJ3aXNlIHRyaWVzIHRvIGFjY2VzcyB0aGVcbiAgICAgICAgIHJlc2VydmVkLWJ1dC1ub3QteWV0LWZpbGxlZCBzcGFjZSwgaXQgd2lsbCBnZXQgYSBjbGVhbiBcIm1pc3NpbmdcbiAgICAgICAgIGVsZW1lbnRcIiBlcnJvci4gVGhpcyBpcyB3b3JzZSB0aGFuIHdpdGggdGhlIGZpbGwtdGhlbi1ub3RpZnlcbiAgICAgICAgIGFwcHJvYWNoIHdoZXJlIHRoZSBuZXcgZWxlbWVudHMgd291bGQgb25seSBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgKHRvIGl0ZXJhdG9ycywgZm9yIHJlbW92YWwsIGV0Yy4pIGFsbHRvZ2V0aGVyIGF0IHRoZSBlbmQgb2ZcbiAgICAgICAgIGxvb3AuXG5cbiAgICAgICBUbyBzdW1tYXJpc2UsIFwicmVzZXJ2ZSBiZWZvcmUgZmlsbFwiIGlzIGJldHRlciBvbiBhZGQtYWRkIHJhY2VzLFxuICAgICAgIGFuZCBcImZpbGwgdGhlbiBub3RpZnlcIiBpcyBiZXR0ZXIgb24gYWRkLXJlbW92ZSBvciBhZGQtaXRlcmF0ZVxuICAgICAgIHJhY2VzLiBCdXQgdGhlIGtleSBkaWZmZXJlbmNlIGlzIHRoZSBmYWlsdXJlIG1vZGU6XG4gICAgICAgcmVzZXJ2ZS1iZWZvcmUgZmFpbHMgb24gYWRkLXJlbW92ZSBvciBhZGQtaXRlcmF0ZSByYWNlcyB3aXRoXG4gICAgICAgYSBjbGVhbiBlcnJvciwgd2hpbGUgbm90aWZ5LWFmdGVyIGZhaWxzIG9uIGFkZC1hZGQgcmFjZXMgd2l0aFxuICAgICAgIHNpbGVudGx5IGRpc2FwcGVhcmluZyBkYXRhLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfYiAtIDEgZG9cbiAgICAgIGxldCB4ID0gQXJyYXkudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyIChsZW5ndGhfYSArIGkpIChFbGVtIHt2ID0geH0pXG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIGVuZFxuXG5sZXQgYXBwZW5kX2FycmF5IGEgYiA9XG4gIGlmIGFwcGVuZF9hcnJheV9pZl9yb29tIGEgYiB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICAoKiBzbG93IHBhdGggKilcbiAgICBsZXQgcmVjIGdyb3dfYW5kX2FwcGVuZCBhIGIgPVxuICAgICAgZW5zdXJlX2V4dHJhX2NhcGFjaXR5IGEgKEFycmF5Lmxlbmd0aCBiKTtcbiAgICAgIGlmIG5vdCAoYXBwZW5kX2FycmF5X2lmX3Jvb20gYSBiKVxuICAgICAgdGhlbiBncm93X2FuZF9hcHBlbmQgYSBiXG4gICAgaW4gZ3Jvd19hbmRfYXBwZW5kIGEgYiAgZW5kXG5cbigqIGFwcGVuZDogc2FtZSBbLi4uX2lmX3Jvb21dIGFuZCBsb29wIGxvZ2ljIGFzIFthZGRfbGFzdF0sXG4gICBzYW1lIHJlc2VydmUtYmVmb3JlLWZpbGwgbG9naWMgYXMgW2FwcGVuZF9hcnJheV0uICopXG5cbigqIEl0IGlzIGEgcHJvZ3JhbW1pbmcgZXJyb3IgdG8gbXV0YXRlIHRoZSBsZW5ndGggb2YgW2JdIGR1cmluZyBhIGNhbGxcbiAgIHRvIFthcHBlbmQgYSBiXS4gVG8gZGV0ZWN0IHRoaXMgbWlzdGFrZSB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBsZW5ndGhcbiAgIG9mIFtiXSB0aHJvdWdob3V0IHRoZSBjb21wdXRhdGlvbiBhbmQgY2hlY2sgaXQgdGhhdCBkb2VzIG5vdFxuICAgY2hhbmdlLlxuKilcbmxldCBhcHBlbmRfaWZfcm9vbSBhIGIgfmxlbmd0aF9iID1cbiAgbGV0IHthcnIgPSBhcnJfYTsgbGVuZ3RoID0gbGVuZ3RoX2F9ID0gYSBpblxuICBpZiBsZW5ndGhfYSArIGxlbmd0aF9iID4gQXJyYXkubGVuZ3RoIGFycl9hIHRoZW4gZmFsc2VcbiAgZWxzZSBiZWdpblxuICAgIGEubGVuZ3RoIDwtIGxlbmd0aF9hICsgbGVuZ3RoX2I7XG4gICAgbGV0IGFycl9iID0gYi5hcnIgaW5cbiAgICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoX2IgYXJyX2I7XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aF9iIC0gMSBkb1xuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGFycl9iIH5pIH5sZW5ndGg6bGVuZ3RoX2IgaW5cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYXJyX2EgKGxlbmd0aF9hICsgaSkgKEVsZW0ge3YgPSB4fSlcbiAgICBkb25lO1xuICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwiYXBwZW5kXCIgYiB+bGVuZ3RoOmxlbmd0aF9iO1xuICAgIHRydWVcbiAgZW5kXG5cbmxldCBhcHBlbmQgYSBiID1cbiAgbGV0IGxlbmd0aF9iID0gbGVuZ3RoIGIgaW5cbiAgaWYgYXBwZW5kX2lmX3Jvb20gYSBiIH5sZW5ndGhfYiB0aGVuICgpXG4gIGVsc2UgYmVnaW5cbiAgICAoKiBzbG93IHBhdGggKilcbiAgICBsZXQgcmVjIGdyb3dfYW5kX2FwcGVuZCBhIGIgfmxlbmd0aF9iID1cbiAgICAgIGVuc3VyZV9leHRyYV9jYXBhY2l0eSBhIGxlbmd0aF9iO1xuICAgICAgKCogRWxpZGluZyB0aGUgW2NoZWNrX3NhbWVfbGVuZ3RoXSBjYWxsIGJlbG93IHdvdWxkIGJlIHdyb25nIGluXG4gICAgICAgICB0aGUgY2FzZSB3aGVyZSBbYV0gYW5kIFtiXSBhcmUgYWxpYXNlcyBvZiBlYWNoIG90aGVyLCB3ZVxuICAgICAgICAgd291bGQgZ2V0IGludG8gYW4gaW5maW5pdGUgbG9vcCBpbnN0ZWFkIG9mIGZhaWxpbmcuXG5cbiAgICAgICAgIFdlIGNvdWxkIHB1c2ggdGhlIGNhbGwgdG8gW2FwcGVuZF9pZl9yb29tXSBpdHNlbGYsIGJ1dCB3ZVxuICAgICAgICAgcHJlZmVyIHRvIGtlZXAgaXQgaW4gdGhlIHNsb3cgcGF0aC4gICopXG4gICAgICBjaGVja19zYW1lX2xlbmd0aCBcImFwcGVuZFwiIGIgfmxlbmd0aDpsZW5ndGhfYjtcbiAgICAgIGlmIG5vdCAoYXBwZW5kX2lmX3Jvb20gYSBiIH5sZW5ndGhfYilcbiAgICAgIHRoZW4gZ3Jvd19hbmRfYXBwZW5kIGEgYiB+bGVuZ3RoX2JcbiAgICBpbiBncm93X2FuZF9hcHBlbmQgYSBiIH5sZW5ndGhfYlxuICBlbmRcblxuXG5cbigqKiB7MTppdGVyYXRpb24gSXRlcmF0aW9ufSAqKVxuXG4oKiBUaGUgaW1wbGVtZW50YXRpb24gY2hvaWNlIHRoYXQgd2UgbWFkZSBmb3IgaXRlcmF0b3JzIGlzIHRoZSBvbmVcbiAgIHRoYXQgbWF4aW1pemVzIGVmZmljaWVuY3kgYnkgYXZvaWRpbmcgcmVwZWF0ZWQgYm91bmQgY2hlY2tpbmc6IHdlXG4gICBjaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBkeW5hbWljIGFycmF5IG9uY2UgYXQgdGhlIGJlZ2lubmluZywgYW5kXG4gICB0aGVuIG9ubHkgb3BlcmF0ZSBvbiB0aGF0IHBvcnRpb24gb2YgdGhlIGR5bmFycmF5LCBpZ25vcmluZ1xuICAgZWxlbWVudHMgYWRkZWQgaW4gdGhlIG1lYW50aW1lLlxuXG4gICBUaGUgc3BlY2lmaWNhdGlvbiBzdGF0ZXMgdGhhdCBpdCBpcyBhIHByb2dyYW1taW5nIGVycm9yIHRvIG11dGF0ZVxuICAgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgZHVyaW5nIGl0ZXJhdGlvbi4gV2UgY2hlY2sgZm9yIHRoaXMgYW5kXG4gICByYWlzZSBhbiBlcnJvciBvbiBzaXplIGNoYW5nZS5cbiAgIE5vdGUgdGhhdCB3ZSBtYXkgc3RpbGwgbWlzcyBzb21lIHRyYW5zaWVudCBzdGF0ZSBjaGFuZ2VzIHRoYXQgY2FuY2VsXG4gICBlYWNoIG90aGVyIGFuZCBsZWF2ZSB0aGUgbGVuZ3RoIHVuY2hhbmdlZCBhdCB0aGUgbmV4dCBjaGVjay5cbiopXG5cbmxldCBpdGVyXyBmIGsgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICAoKiBbY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnJdIGlzIHVzZWQgZm9yIG1lbW9yeSBzYWZldHksIGl0XG4gICAgIGd1YXJhbnRlZXMgdGhhdCB0aGUgYmFja2luZyBhcnJheSBoYXMgY2FwYWNpdHkgYXQgbGVhc3QgW2xlbmd0aF0sXG4gICAgIGFsbG93aW5nIHVuc2FmZSBhcnJheSBhY2Nlc3MuXG5cbiAgICAgW2NoZWNrX3NhbWVfbGVuZ3RoXSBpcyB1c2VkIGZvciBjb3JyZWN0bmVzcywgaXQgbGV0cyB0aGUgZnVuY3Rpb25cbiAgICAgZmFpbCBtb3JlIG9mdGVuIGlmIHdlIGRpc2NvdmVyIHRoZSBwcm9ncmFtbWluZyBlcnJvciBvZiBtdXRhdGluZ1xuICAgICB0aGUgbGVuZ3RoIGR1cmluZyBpdGVyYXRpb24uXG5cbiAgICAgV2UgY291bGQsIG5haXZlbHksIGNhbGwgW2NoZWNrX3NhbWVfbGVuZ3RoXSBhdCBlYWNoIGl0ZXJhdGlvbiBvZlxuICAgICB0aGUgbG9vcCAoYmVmb3JlIG9yIGFmdGVyLCBvciBib3RoKS4gSG93ZXZlciwgbm90aWNlIHRoYXQgdGhpcyBpc1xuICAgICBub3QgbmVjZXNzYXJ5IHRvIGRldGVjdCB0aGUgcmVtb3ZhbCBvZiBlbGVtZW50cyBmcm9tIFthXTogaWZcbiAgICAgZWxlbWVudHMgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHRpbWUgdGhlIFtmb3JdIGxvb3AgcmVhY2hlc1xuICAgICB0aGVtLCB0aGVuIFt1bnNhZmVfZ2V0XSB3aWxsIGl0c2VsZiBmYWlsIHdpdGggYW4gW0ludmFsaWRfYXJndW1lbnRdXG4gICAgIGV4Y2VwdGlvbi4gV2Ugb25seSBuZWVkIHRvIGRldGVjdCB0aGUgYWRkaXRpb24gb2YgbmV3IGVsZW1lbnRzIHRvXG4gICAgIFthXSBkdXJpbmcgaXRlcmF0aW9uLCBhbmQgZm9yIHRoaXMgaXQgaXMgZW5vdWdoIHRvIGNhbGxcbiAgICAgW2NoZWNrX3NhbWVfbGVuZ3RoXSBvbmNlIGF0IHRoZSBlbmQuXG5cbiAgICAgQ2FsbGluZyBbY2hlY2tfc2FtZV9sZW5ndGhdIG1vcmUgb2Z0ZW4gY291bGQgY2F0Y2ggbW9yZVxuICAgICBwcm9ncmFtbWluZyBlcnJvcnMsIGJ1dCB0aGUgb25seSBlcnJvcnMgdGhhdCB3ZSBtaXNzIHdpdGggdGhpc1xuICAgICBvcHRpbWl6YXRpb24gYXJlIHRob3NlIHRoYXQga2VlcCB0aGUgYXJyYXkgc2l6ZSBjb25zdGFudCAtLVxuICAgICBhZGRpdGlvbnMgYW5kIGRlbGV0aW9ucyB0aGF0IGNhbmNlbCBlYWNoIG90aGVyLiBXZSBjb25zaWRlciB0aGlzXG4gICAgIGFuIGFjY2VwdGFibGUgdHJhZGVvZmYuXG4gICopXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGsgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpO1xuICBkb25lO1xuICBjaGVja19zYW1lX2xlbmd0aCBmIGEgfmxlbmd0aFxuXG5sZXQgaXRlciBrIGEgPVxuICBpdGVyXyBcIml0ZXJcIiBrIGFcblxubGV0IGl0ZXJpIGsgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBrIGkgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpO1xuICBkb25lO1xuICBjaGVja19zYW1lX2xlbmd0aCBcIml0ZXJpXCIgYSB+bGVuZ3RoXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVzID0ge1xuICAgIGxlbmd0aDtcbiAgICBhcnIgPSBBcnJheS5pbml0IGxlbmd0aCAoZnVuIGkgLT5cbiAgICAgIEVsZW0ge3YgPSBmICh1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoKX0pO1xuICB9IGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwibWFwXCIgYSB+bGVuZ3RoO1xuICByZXNcblxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZXMgPSB7XG4gICAgbGVuZ3RoO1xuICAgIGFyciA9IEFycmF5LmluaXQgbGVuZ3RoIChmdW4gaSAtPlxuICAgICAgRWxlbSB7diA9IGYgaSAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCl9KTtcbiAgfSBpblxuICBjaGVja19zYW1lX2xlbmd0aCBcIm1hcGlcIiBhIH5sZW5ndGg7XG4gIHJlc1xuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgIHIgOj0gZiAhciB2O1xuICBkb25lO1xuICBjaGVja19zYW1lX2xlbmd0aCBcImZvbGRfbGVmdFwiIGEgfmxlbmd0aDtcbiAgIXJcblxubGV0IGZvbGRfcmlnaHQgZiBhIGFjYyA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHIgPSByZWYgYWNjIGluXG4gIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgIHIgOj0gZiB2ICFyO1xuICBkb25lO1xuICBjaGVja19zYW1lX2xlbmd0aCBcImZvbGRfcmlnaHRcIiBhIH5sZW5ndGg7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGxvb3AgcCBhcnIgaSBsZW5ndGggPVxuICAgIGlmIGkgPSBsZW5ndGggdGhlbiBmYWxzZVxuICAgIGVsc2VcbiAgICAgIHAgKHVuc2FmZV9nZXQgYXJyIH5pIH5sZW5ndGgpXG4gICAgICB8fCBsb29wIHAgYXJyIChpICsgMSkgbGVuZ3RoXG4gIGluXG4gIGxldCByZXMgPSBsb29wIHAgYXJyIDAgbGVuZ3RoIGluXG4gIGNoZWNrX3NhbWVfbGVuZ3RoIFwiZXhpc3RzXCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVjIGxvb3AgcCBhcnIgaSBsZW5ndGggPVxuICAgIGlmIGkgPSBsZW5ndGggdGhlbiB0cnVlXG4gICAgZWxzZVxuICAgICAgcCAodW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aClcbiAgICAgICYmIGxvb3AgcCBhcnIgKGkgKyAxKSBsZW5ndGhcbiAgaW5cbiAgbGV0IHJlcyA9IGxvb3AgcCBhcnIgMCBsZW5ndGggaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJmb3JfYWxsXCIgYSB+bGVuZ3RoO1xuICByZXNcblxubGV0IGZpbHRlciBmIGEgPVxuICBsZXQgYiA9IGNyZWF0ZSAoKSBpblxuICBpdGVyXyBcImZpbHRlclwiIChmdW4geCAtPiBpZiBmIHggdGhlbiBhZGRfbGFzdCBiIHgpIGE7XG4gIGJcblxubGV0IGZpbHRlcl9tYXAgZiBhID1cbiAgbGV0IGIgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcl8gXCJmaWx0ZXJfbWFwXCIgKGZ1biB4IC0+XG4gICAgbWF0Y2ggZiB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeSAtPiBhZGRfbGFzdCBiIHlcbiAgKSBhO1xuICBiXG5cblxuKCoqIHsxOmNvbnZlcnNpb25zIENvbnZlcnNpb25zIHRvIG90aGVyIGRhdGEgc3RydWN0dXJlc30gKilcblxuKCogVGhlIGVhZ2VyIFt0b18qXSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBiZWhhdmUgc2ltaWxhcmx5IHRvIGl0ZXJhdG9yc1xuICAgaW4gcHJlc2VuY2Ugb2YgdXBkYXRlcyBkdXJpbmcgY29tcHV0YXRpb24uIFRoZSBbKl9yZWVudHJhbnRdXG4gICBmdW5jdGlvbnMgb2JleSB0aGVpciBtb3JlIHBlcm1pc3NpdmUgc3BlY2lmaWNhdGlvbiwgd2hpY2ggdG9sZXJhdGVzXG4gICBhbnkgY29uY3VycmVudCB1cGRhdGUuICopXG5cbmxldCBvZl9hcnJheSBhID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIHtcbiAgICBsZW5ndGg7XG4gICAgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+IEVsZW0ge3YgPSBBcnJheS51bnNhZmVfZ2V0IGEgaX0pO1xuICB9XG5cbmxldCB0b19hcnJheSBhID1cbiAgbGV0IHthcnI7IGxlbmd0aH0gPSBhIGluXG4gIGNoZWNrX3ZhbGlkX2xlbmd0aCBsZW5ndGggYXJyO1xuICBsZXQgcmVzID0gQXJyYXkuaW5pdCBsZW5ndGggKGZ1biBpIC0+XG4gICAgdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aClcbiAgaW5cbiAgY2hlY2tfc2FtZV9sZW5ndGggXCJ0b19hcnJheVwiIGEgfmxlbmd0aDtcbiAgcmVzXG5cbmxldCBvZl9saXN0IGxpID1cbiAgbGV0IGEgPSBjcmVhdGUgKCkgaW5cbiAgTGlzdC5pdGVyIChmdW4geCAtPiBhZGRfbGFzdCBhIHgpIGxpO1xuICBhXG5cbmxldCB0b19saXN0IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCBsID0gcmVmIFtdIGluXG4gIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGwgOj0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCA6OiAhbFxuICBkb25lO1xuICBjaGVja19zYW1lX2xlbmd0aCBcInRvX2xpc3RcIiBhIH5sZW5ndGg7XG4gICFsXG5cbmxldCBvZl9zZXEgc2VxID1cbiAgbGV0IGluaXQgPSBjcmVhdGUoKSBpblxuICBhcHBlbmRfc2VxIGluaXQgc2VxO1xuICBpbml0XG5cbmxldCB0b19zZXEgYSA9XG4gIGxldCB7YXJyOyBsZW5ndGh9ID0gYSBpblxuICBjaGVja192YWxpZF9sZW5ndGggbGVuZ3RoIGFycjtcbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGNoZWNrX3NhbWVfbGVuZ3RoIFwidG9fc2VxXCIgYSB+bGVuZ3RoO1xuICAgIGlmIGkgPj0gbGVuZ3RoIHRoZW4gU2VxLk5pbFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB2ID0gdW5zYWZlX2dldCBhcnIgfmkgfmxlbmd0aCBpblxuICAgICAgU2VxLkNvbnMgKHYsIGF1eCAoaSArIDEpKVxuICAgIGVuZFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxX3JlZW50cmFudCBhID1cbiAgbGV0IHJlYyBhdXggaSA9IGZ1biAoKSAtPlxuICAgIGlmIGkgPj0gbGVuZ3RoIGEgdGhlbiBTZXEuTmlsXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSBnZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpICsgMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFfcmV2IGEgPVxuICBsZXQge2FycjsgbGVuZ3RofSA9IGEgaW5cbiAgY2hlY2tfdmFsaWRfbGVuZ3RoIGxlbmd0aCBhcnI7XG4gIGxldCByZWMgYXV4IGkgPSBmdW4gKCkgLT5cbiAgICBjaGVja19zYW1lX2xlbmd0aCBcInRvX3NlcV9yZXZcIiBhIH5sZW5ndGg7XG4gICAgaWYgaSA8IDAgdGhlbiBTZXEuTmlsXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHYgPSB1bnNhZmVfZ2V0IGFyciB+aSB+bGVuZ3RoIGluXG4gICAgICBTZXEuQ29ucyAodiwgYXV4IChpIC0gMSkpXG4gICAgZW5kXG4gIGluXG4gIGF1eCAobGVuZ3RoIC0gMSlcblxubGV0IHRvX3NlcV9yZXZfcmVlbnRyYW50IGEgPVxuICBsZXQgcmVjIGF1eCBpID0gZnVuICgpIC0+XG4gICAgaWYgaSA8IDAgdGhlbiBTZXEuTmlsXG4gICAgZWxzZSBpZiBpID49IGxlbmd0aCBhIHRoZW5cbiAgICAgICgqIElmIHNvbWUgZWxlbWVudHMgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG1lYW50aW1lLCB3ZSBza2lwXG4gICAgICAgICB0aG9zZSBlbGVtZW50cyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV3IGVuZCBvZiB0aGUgYXJyYXkuICopXG4gICAgICBhdXggKGxlbmd0aCBhIC0gMSkgKClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgdiA9IGdldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICh2LCBhdXggKGkgLSAxKSlcbiAgICBlbmRcbiAgaW5cbiAgYXV4IChsZW5ndGggYSAtIDEpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcuc3RhcnRzX3dpdGggfnByZWZpeDpcIi1cIiBzIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IGFjdGlvbiwgZm9sbG93ID1cbiAgICAgICAgICB0cnkgYXNzb2MzIHMgIXNwZWNsaXN0LCBOb25lXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBrZXl3b3JkLCBhcmcgPSBzcGxpdCBzIGluXG4gICAgICAgICAgICBhc3NvYzMga2V5d29yZCAhc3BlY2xpc3QsIFNvbWUgYXJnXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFN0b3AgKFVua25vd24gcykpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub19hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJubyBhcmd1bWVudFwiKSkpIGluXG4gICAgICAgIGxldCBnZXRfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiAhY3VycmVudCArIDEgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSB0aGVuICFhcmd2LighY3VycmVudCArIDEpXG4gICAgICAgICAgICAgIGVsc2UgcmFpc2UgKFN0b3AgKE1pc3NpbmcgcykpXG4gICAgICAgICAgfCBTb21lIGFyZyAtPiBhcmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVfYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbmNyIGN1cnJlbnRcbiAgICAgICAgICB8IFNvbWUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIHRyZWF0X2FjdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVW5pdCBmIC0+IG5vX2FyZyAoKTsgZiAoKTtcbiAgICAgICAgfCBCb29sIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBib29sX29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGJvb2xlYW5cIikpKVxuICAgICAgICAgICAgfCBTb21lIHMgLT4gZiBzXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXQgciAtPiBub19hcmcgKCk7IHIgOj0gdHJ1ZTtcbiAgICAgICAgfCBDbGVhciByIC0+IG5vX2FyZyAoKTsgciA6PSBmYWxzZTtcbiAgICAgICAgfCBTdHJpbmcgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU3ltYm9sIChzeW1iLCBmKSAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGlmIExpc3QubWVtIGFyZyBzeW1iIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwib25lIG9mOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAobWFrZV9zeW1saXN0IFwiXCIgXCIgXCIgXCJcIiBzeW1iKSkpKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgU2V0X3N0cmluZyByIC0+XG4gICAgICAgICAgICByIDo9IGdldF9hcmcgKCk7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBJbnQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9pbnQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGludF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYW4gaW50ZWdlclwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEZsb2F0IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldF9mbG9hdCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBUdXBsZSBzcGVjcyAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgTGlzdC5pdGVyIHRyZWF0X2FjdGlvbiBzcGVjcztcbiAgICAgICAgfCBSZXN0IGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgLSAxIGRvXG4gICAgICAgICAgICAgIGYgIWFyZ3YuKCFjdXJyZW50ICsgMSk7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgfCBSZXN0X2FsbCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IEFycmF5Lmxlbmd0aCAhYXJndiAtIDEgZG9cbiAgICAgICAgICAgICAgYWNjIDo9ICFhcmd2LighY3VycmVudCArIDEpIDo6ICFhY2M7XG4gICAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgIGYgKExpc3QucmV2ICFhY2MpXG4gICAgICAgIHwgRXhwYW5kIGYgLT5cbiAgICAgICAgICAgIGlmIG5vdCBhbGxvd19leHBhbmQgdGhlblxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkFyZy5FeHBhbmQgaXMgaXMgb25seSBhbGxvd2VkIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZy5wYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY1wiKTtcbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBsZXQgbmV3YXJnID0gZiBhcmcgaW5cbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IEFycmF5LnN1YiAhYXJndiAwICghY3VycmVudCArIDEpXG4gICAgICAgICAgICBhbmQgYWZ0ZXIgPVxuICAgICAgICAgICAgICBBcnJheS5zdWIgIWFyZ3YgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICgoQXJyYXkubGVuZ3RoICFhcmd2KSAtICFjdXJyZW50IC0gMSkgaW5cbiAgICAgICAgICAgIGFyZ3Y6PSBBcnJheS5jb25jYXQgW2JlZm9yZTtuZXdhcmc7YWZ0ZXJdO1xuICAgICAgICBpblxuICAgICAgICB0cmVhdF9hY3Rpb24gYWN0aW9uIGVuZFxuICAgICAgZWxzZSBhbm9uZnVuIHNcbiAgICB3aXRoIHwgQmFkIG0gLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgKE1lc3NhZ2UgbSkpO1xuICAgICAgICAgfCBTdG9wIGUgLT4gcmFpc2UgKGNvbnZlcnRfZXJyb3IgZSk7XG4gICAgZW5kO1xuICAgIGluY3IgY3VycmVudFxuICBkb25lXG5cbmxldCBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggdHJ1ZSBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2dcblxubGV0IHBhcnNlX2FyZ3ZfZHluYW1pYyA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBmYWxzZSBjdXJyZW50IChyZWYgYXJndikgc3BlY2xpc3QgYW5vbmZ1blxuICAgIGVycm1zZ1xuXG5cbmxldCBwYXJzZV9hcmd2ID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYXJndl9keW5hbWljIH5jdXJyZW50OmN1cnJlbnQgYXJndiAocmVmIHNwZWNsaXN0KSBhbm9uZnVuIGVycm1zZ1xuXG5cbmxldCBwYXJzZSBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndiBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBwYXJzZV9keW5hbWljIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2X2R5bmFtaWMgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxubGV0IHBhcnNlX2V4cGFuZCBsIGYgbXNnID1cbiAgdHJ5XG4gICAgbGV0IGFyZ3YgPSByZWYgU3lzLmFyZ3YgaW5cbiAgICBsZXQgc3BlYyA9IHJlZiBsIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgKCFjdXJyZW50KSBpblxuICAgIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5cbmxldCBzZWNvbmRfd29yZCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgbiA9XG4gICAgaWYgbiA+PSBsZW4gdGhlbiBsZW5cbiAgICBlbHNlIGlmIHMuW25dID0gJyAnIHRoZW4gbG9vcCAobisxKVxuICAgIGVsc2UgblxuICBpblxuICBtYXRjaCBTdHJpbmcuaW5kZXggcyAnXFx0JyB3aXRoXG4gIHwgbiAtPiBsb29wIChuKzEpXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggU3RyaW5nLmluZGV4IHMgJyAnIHdpdGhcbiAgICAgIHwgbiAtPiBsb29wIChuKzEpXG4gICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gbGVuXG4gICAgICBlbmRcblxuXG5sZXQgbWF4X2FyZ19sZW4gY3VyIChrd2QsIHNwZWMsIGRvYykgPVxuICBtYXRjaCBzcGVjIHdpdGhcbiAgfCBTeW1ib2wgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QpXG4gIHwgXyAtPiBJbnQubWF4IGN1ciAoU3RyaW5nLmxlbmd0aCBrd2QgKyBzZWNvbmRfd29yZCBkb2MpXG5cblxubGV0IHJlcGxhY2VfbGVhZGluZ190YWIgcyA9XG4gIGxldCBzZWVuID0gcmVmIGZhbHNlIGluXG4gIFN0cmluZy5tYXAgKGZ1bmN0aW9uICdcXHQnIHdoZW4gbm90ICFzZWVuIC0+IHNlZW4gOj0gdHJ1ZTsgJyAnIHwgYyAtPiBjKSBzXG5cbmxldCBhZGRfcGFkZGluZyBsZW4ga3NkID1cbiAgbWF0Y2gga3NkIHdpdGhcbiAgfCAoXywgXywgXCJcIikgLT5cbiAgICAgICgqIERvIG5vdCBwYWQgdW5kb2N1bWVudGVkIG9wdGlvbnMsIHNvIHRoYXQgdGhleSBzdGlsbCBkb24ndCBzaG93IHVwIHdoZW5cbiAgICAgICAqIHJ1biB0aHJvdWdoIFt1c2FnZV0gb3IgW3BhcnNlXS4gKilcbiAgICAgIGtzZFxuICB8IChrd2QsIChTeW1ib2wgXyBhcyBzcGVjKSwgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlICgoSW50Lm1heCAwIChsZW4gLSBjdXRjb2wpKSArIDMpICcgJyBpblxuICAgICAgKGt3ZCwgc3BlYywgXCJcXG5cIiBeIHNwYWNlcyBeIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICB8IChrd2QsIHNwZWMsIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBrd2RfbGVuID0gU3RyaW5nLmxlbmd0aCBrd2QgaW5cbiAgICAgIGxldCBkaWZmID0gbGVuIC0ga3dkX2xlbiAtIGN1dGNvbCBpblxuICAgICAgaWYgZGlmZiA8PSAwIHRoZW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSBkaWZmICcgJyBpblxuICAgICAgICBsZXQgcHJlZml4ID0gU3RyaW5nLnN1YiAocmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpIDAgY3V0Y29sIGluXG4gICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3ViIG1zZyBjdXRjb2wgKFN0cmluZy5sZW5ndGggbXNnIC0gY3V0Y29sKSBpblxuICAgICAgICAoa3dkLCBzcGVjLCBwcmVmaXggXiBzcGFjZXMgXiBzdWZmaXgpXG5cblxubGV0IGFsaWduID8obGltaXQ9bWF4X2ludCkgc3BlY2xpc3QgPVxuICBsZXQgY29tcGxldGVkID0gYWRkX2hlbHAgc3BlY2xpc3QgaW5cbiAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IG1heF9hcmdfbGVuIDAgY29tcGxldGVkIGluXG4gIGxldCBsZW4gPSBJbnQubWluIGxlbiBsaW1pdCBpblxuICBMaXN0Lm1hcCAoYWRkX3BhZGRpbmcgbGVuKSBjb21wbGV0ZWRcblxubGV0IHRyaW1fY3IgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbGVuID4gMCAmJiBTdHJpbmcuZ2V0IHMgKGxlbiAtIDEpID0gJ1xccicgdGhlblxuICAgIFN0cmluZy5zdWIgcyAwIChsZW4gLSAxKVxuICBlbHNlXG4gICAgc1xuXG5sZXQgcmVhZF9hdXggdHJpbSBzZXAgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIGxldCB3b3JkcyA9IHJlZiBbXSBpblxuICBsZXQgc3Rhc2ggKCkgPVxuICAgIGxldCB3b3JkID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGxldCB3b3JkID0gaWYgdHJpbSB0aGVuIHRyaW1fY3Igd29yZCBlbHNlIHdvcmQgaW5cbiAgICB3b3JkcyA6PSB3b3JkIDo6ICF3b3JkcztcbiAgICBCdWZmZXIuY2xlYXIgYnVmXG4gIGluXG4gIGJlZ2luXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgbGV0IGMgPSBpbnB1dF9jaGFyIGljIGluXG4gICAgICAgIGlmIGMgPSBzZXAgdGhlbiBzdGFzaCAoKSBlbHNlIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgICAgZG9uZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gKClcbiAgZW5kO1xuICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA+IDAgdGhlbiBzdGFzaCAoKTtcbiAgY2xvc2VfaW4gaWM7XG4gIEFycmF5Lm9mX2xpc3QgKExpc3QucmV2ICF3b3JkcylcblxubGV0IHJlYWRfYXJnID0gcmVhZF9hdXggdHJ1ZSAnXFxuJ1xuXG5sZXQgcmVhZF9hcmcwID0gcmVhZF9hdXggZmFsc2UgJ1xceDAwJ1xuXG5sZXQgd3JpdGVfYXV4IHNlcCBmaWxlIGFyZ3MgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZmlsZSBpblxuICBBcnJheS5pdGVyIChmdW4gcyAtPiBmcHJpbnRmIG9jIFwiJXMlY1wiIHMgc2VwKSBhcmdzO1xuICBjbG9zZV9vdXQgb2NcblxubGV0IHdyaXRlX2FyZyA9IHdyaXRlX2F1eCAnXFxuJ1xuXG5sZXQgd3JpdGVfYXJnMCA9IHdyaXRlX2F1eCAnXFx4MDAnXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgdCA9IGV4biA9IC4uXG5cbmxldCBwcmludGVycyA9IEF0b21pYy5tYWtlIFtdXG5cbmxldCBsb2NmbXQgPSBmb3JtYXRfb2Zfc3RyaW5nIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOiAlc1wiXG5cbmxldCBmaWVsZCB4IGkgPVxuICBsZXQgZiA9IE9iai5maWVsZCB4IGkgaW5cbiAgaWYgbm90IChPYmouaXNfYmxvY2sgZikgdGhlblxuICAgIHNwcmludGYgXCIlZFwiIChPYmoubWFnaWMgZiA6IGludCkgICAgICAgICAgICgqIGNhbiBhbHNvIGJlIGEgY2hhciAqKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5zdHJpbmdfdGFnIHRoZW5cbiAgICBzcHJpbnRmIFwiJVNcIiAoT2JqLm1hZ2ljIGYgOiBzdHJpbmcpXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLmRvdWJsZV90YWcgdGhlblxuICAgIHN0cmluZ19vZl9mbG9hdCAoT2JqLm1hZ2ljIGYgOiBmbG9hdClcbiAgZWxzZVxuICAgIFwiX1wiXG5cbmxldCByZWMgb3RoZXJfZmllbGRzIHggaSA9XG4gIGlmIGkgPj0gT2JqLnNpemUgeCB0aGVuIFwiXCJcbiAgZWxzZSBzcHJpbnRmIFwiLCAlcyVzXCIgKGZpZWxkIHggaSkgKG90aGVyX2ZpZWxkcyB4IChpKzEpKVxuXG5sZXQgZmllbGRzIHggPVxuICBtYXRjaCBPYmouc2l6ZSB4IHdpdGhcbiAgfCAwIC0+IFwiXCJcbiAgfCAxIC0+IFwiXCJcbiAgfCAyIC0+IHNwcmludGYgXCIoJXMpXCIgKGZpZWxkIHggMSlcbiAgfCBfIC0+IHNwcmludGYgXCIoJXMlcylcIiAoZmllbGQgeCAxKSAob3RoZXJfZmllbGRzIHggMilcblxubGV0IHVzZV9wcmludGVycyB4ID1cbiAgbGV0IHJlYyBjb252ID0gZnVuY3Rpb25cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBoZCB4IHdpdGhcbiAgICAgICAgIHwgTm9uZSB8IGV4Y2VwdGlvbiBfIC0+IGNvbnYgdGxcbiAgICAgICAgIHwgU29tZSBzIC0+IFNvbWUgcylcbiAgICB8IFtdIC0+IE5vbmUgaW5cbiAgY29udiAoQXRvbWljLmdldCBwcmludGVycylcblxubGV0IGRlc3RydWN0X2V4dF9jb25zdHJ1Y3RvciB4ID1cbiAgaWYgT2JqLnRhZyB4IDw+IDAgdGhlblxuICAgICgoT2JqLm1hZ2ljIChPYmouZmllbGQgeCAwKSA6IHN0cmluZyksIE5vbmUpXG4gIGVsc2VcbiAgICBsZXQgY29uc3RydWN0b3IgPVxuICAgICAgKE9iai5tYWdpYyAoT2JqLmZpZWxkIChPYmouZmllbGQgeCAwKSAwKSA6IHN0cmluZykgaW5cbiAgICAoY29uc3RydWN0b3IsIFNvbWUgKGZpZWxkcyB4KSlcblxubGV0IHN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgdCA9XG4gIGxldCBjb25zdHJ1Y3RvciwgZmllbGRzX29wdCA9IGRlc3RydWN0X2V4dF9jb25zdHJ1Y3RvciB0IGluXG4gIG1hdGNoIGZpZWxkc19vcHQgd2l0aFxuICB8IE5vbmUgLT4gY29uc3RydWN0b3JcbiAgfCBTb21lIGYgLT4gY29uc3RydWN0b3IgXiBmXG5cbmxldCB0b19zdHJpbmdfZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgT3V0X29mX21lbW9yeSAtPiBcIk91dCBvZiBtZW1vcnlcIlxuICB8IFN0YWNrX292ZXJmbG93IC0+IFwiU3RhY2sgb3ZlcmZsb3dcIlxuICB8IE1hdGNoX2ZhaWx1cmUoZmlsZSwgbGluZSwgY2hhcikgLT5cbiAgICAgIHNwcmludGYgbG9jZm10IGZpbGUgbGluZSBjaGFyIChjaGFyKzUpIFwiUGF0dGVybiBtYXRjaGluZyBmYWlsZWRcIlxuICB8IEFzc2VydF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIkFzc2VydGlvbiBmYWlsZWRcIlxuICB8IFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis2KSBcIlVuZGVmaW5lZCByZWN1cnNpdmUgbW9kdWxlXCJcbiAgfCB4IC0+XG4gICAgICBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIChPYmoucmVwciB4KVxuXG5sZXQgdG9fc3RyaW5nIGUgPVxuICBtYXRjaCB1c2VfcHJpbnRlcnMgZSB3aXRoXG4gIHwgU29tZSBzIC0+IHNcbiAgfCBOb25lIC0+IHRvX3N0cmluZ19kZWZhdWx0IGVcblxubGV0IHByaW50IGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBmbHVzaCBzdGRlcnI7XG4gICAgcmFpc2UgeFxuXG5sZXQgY2F0Y2ggZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZmx1c2ggc3Rkb3V0O1xuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBleGl0IDJcblxudHlwZSByYXdfYmFja3RyYWNlX3Nsb3RcbnR5cGUgcmF3X2JhY2t0cmFjZV9lbnRyeSA9IHByaXZhdGUgaW50XG50eXBlIHJhd19iYWNrdHJhY2UgPSByYXdfYmFja3RyYWNlX2VudHJ5IGFycmF5XG5cbmxldCByYXdfYmFja3RyYWNlX2VudHJpZXMgYnQgPSBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZTpcbiAgdW5pdCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZVwiXG5cbmV4dGVybmFsIHJhaXNlX3dpdGhfYmFja3RyYWNlOiBleG4gLT4gcmF3X2JhY2t0cmFjZSAtPiAnYVxuICA9IFwiJXJhaXNlX3dpdGhfYmFja3RyYWNlXCJcblxuKCogRGlzYWJsZSB3YXJuaW5nIDM3OiB2YWx1ZXMgYXJlIGNvbnN0cnVjdGVkIGluIHRoZSBydW50aW1lICopXG50eXBlW0B3YXJuaW5nIFwiLTM3XCJdIGJhY2t0cmFjZV9zbG90ID1cbiAgfCBLbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgOiBzdHJpbmc7XG4gICAgICBzdGFydF9sbnVtIDogaW50O1xuICAgICAgc3RhcnRfY2hhciA6IGludDtcbiAgICAgIGVuZF9vZmZzZXQgOiBpbnQ7ICgqIFJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiBzdGFydF9sbnVtICopXG4gICAgICBlbmRfbG51bSAgIDogaW50O1xuICAgICAgZW5kX2NoYXIgICA6IGludDsgKCogUmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIGVuZF9sbnVtIGxpbmUgKilcbiAgICAgIGlzX2lubGluZSAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICA6IHN0cmluZztcbiAgICB9XG4gIHwgVW5rbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSA6IGJvb2xcbiAgICB9XG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgbGV0IGxpbmVzID1cbiAgICAgICAgaWYgbC5zdGFydF9sbnVtID0gbC5lbmRfbG51bSB0aGVuXG4gICAgICAgICAgUHJpbnRmLnNwcmludGYgXCIgJWRcIiBsLnN0YXJ0X2xudW1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwicyAlZC0lZFwiIGwuc3RhcnRfbG51bSBsLmVuZF9sbnVtXG4gICAgICBpblxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lJXMsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAoaW5mbyBsLmlzX3JhaXNlKSBsLmRlZm5hbWUgbC5maWxlbmFtZVxuICAgICAgICAgICAgICAoaWYgbC5pc19pbmxpbmUgdGhlbiBcIiAoaW5saW5lZClcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgIGxpbmVzIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xuICBlbmRfbGluZSA6IGludDtcbiAgZW5kX2NvbCA6IGludDtcbn1cblxubGV0IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT5cbiAgICBTb21lIHtcbiAgICAgIGZpbGVuYW1lICAgID0gbC5maWxlbmFtZTtcbiAgICAgIGxpbmVfbnVtYmVyID0gbC5zdGFydF9sbnVtO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX29mZnNldDtcbiAgICAgIGVuZF9saW5lICAgID0gbC5lbmRfbG51bTtcbiAgICAgIGVuZF9jb2wgICAgID0gbC5lbmRfY2hhcjtcbiAgICB9XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF9cbiAgfCBLbm93bl9sb2NhdGlvbiB7IGRlZm5hbWUgPSBcIlwiIH0gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gU29tZSBsLmRlZm5hbWVcblxubGV0IGJhY2t0cmFjZV9zbG90cyByYXdfYmFja3RyYWNlID1cbiAgKCogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgU29tZSBpc1xuICAgICByZXR1cm5lZCBvbmx5IGlmIGEgcGFydCBvZiB0aGUgdHJhY2UgaXMgdXNhYmxlLiBUaGlzIGdpdmVzIHVzXG4gICAgIGEgYml0IG1vcmUgd29yayB0aGFuIGp1c3QgY29udmVydF9yYXdfYmFja3RyYWNlLCBidXQgaXQgbWFrZXMgdGhlXG4gICAgIEFQSSBtb3JlIHVzZXItZnJpZW5kbHkgLS0gb3RoZXJ3aXNlIG1vc3QgdXNlcnMgd291bGQgaGF2ZSB0b1xuICAgICByZWltcGxlbWVudCB0aGUgXCJQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgc29ycnlcIiBsb2dpY1xuICAgICB0aGVtc2VsdmVzLiAqKVxuICBtYXRjaCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYmFja3RyYWNlIC0+XG4gICAgICBsZXQgdXNhYmxlX3Nsb3QgPSBmdW5jdGlvblxuICAgICAgICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuICAgICAgICB8IEtub3duX2xvY2F0aW9uIF8gLT4gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBleGlzdHNfdXNhYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCAoLTEpIC0+IGZhbHNlXG4gICAgICAgIHwgaSAtPiB1c2FibGVfc2xvdCBiYWNrdHJhY2UuKGkpIHx8IGV4aXN0c191c2FibGUgKGkgLSAxKSBpblxuICAgICAgaWYgZXhpc3RzX3VzYWJsZSAoQXJyYXkubGVuZ3RoIGJhY2t0cmFjZSAtIDEpXG4gICAgICB0aGVuIFNvbWUgYmFja3RyYWNlXG4gICAgICBlbHNlIE5vbmVcblxubGV0IGJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkgZW50cnkgPVxuICBiYWNrdHJhY2Vfc2xvdHMgW3wgZW50cnkgfF1cblxubW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGZvcm1hdCA9IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdFxuICBsZXQgaXNfcmFpc2UgPSBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZVxuICBsZXQgaXNfaW5saW5lID0gYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lXG4gIGxldCBsb2NhdGlvbiA9IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uXG4gIGxldCBuYW1lID0gYmFja3RyYWNlX3Nsb3RfZGVmbmFtZVxuZW5kXG5cbmxldCByYXdfYmFja3RyYWNlX2xlbmd0aCBidCA9IEFycmF5Lmxlbmd0aCBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZSAtPiBpbnQgLT4gcmF3X2JhY2t0cmFjZV9zbG90ID0gXCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiByYXdfYmFja3RyYWNlX3Nsb3Qgb3B0aW9uXG4gID0gXCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XCJcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6XG4gICByZXR1cm5zIHRoZSAqc3RyaW5nKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBnZXRfYmFja3RyYWNlICgpID0gcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5leHRlcm5hbCByZWNvcmRfYmFja3RyYWNlOiBib29sIC0+IHVuaXQgPSBcImNhbWxfcmVjb3JkX2JhY2t0cmFjZVwiXG5leHRlcm5hbCBiYWNrdHJhY2Vfc3RhdHVzOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfYmFja3RyYWNlX3N0YXR1c1wiXG5cbmxldCByZWMgcmVnaXN0ZXJfcHJpbnRlciBmbiA9XG4gIGxldCBvbGRfcHJpbnRlcnMgPSBBdG9taWMuZ2V0IHByaW50ZXJzIGluXG4gIGxldCBuZXdfcHJpbnRlcnMgPSBmbiA6OiBvbGRfcHJpbnRlcnMgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IHByaW50ZXJzIG9sZF9wcmludGVycyBuZXdfcHJpbnRlcnMgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiByZWdpc3Rlcl9wcmludGVyIGZuXG5cbmV4dGVybmFsIGdldF9jYWxsc3RhY2s6IGludCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFja1wiXG5cbmxldCBleG5fc2xvdCB4ID1cbiAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai50YWcgeCA9IDAgdGhlbiBPYmouZmllbGQgeCAwIGVsc2UgeFxuXG5sZXQgZXhuX3Nsb3RfaWQgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMSkgOiBpbnQpXG5cbmxldCBleG5fc2xvdF9uYW1lIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDApIDogc3RyaW5nKVxuXG5leHRlcm5hbCBnZXRfZGVidWdfaW5mb19zdGF0dXMgOiB1bml0IC0+IGludCA9IFwiY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1c1wiXG5cbigqIERlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHN0YXJ0dXAuaC4gU2VlIGFsc28gYmFja3RyYWNlLmMgKilcbmxldCBlcnJvcnMgPSBbfCBcIlwiO1xuICAoKiBGSUxFX05PVF9GT1VORCAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgbm90IGZvdW5kKVwiO1xuICAoKiBCQURfQllURUNPREUgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdClcIjtcbiAgKCogV1JPTkdfTUFHSUMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGhhcyB3cm9uZyBtYWdpYyBudW1iZXIpXCI7XG4gICgqIE5PX0ZEUyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgY2Fubm90IGJlIG9wZW5lZDtcXG4gXFxcbiAgICAgIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpXCJcbnxdXG5cbmxldCBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlID1cbiAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIGxldCBzdGF0dXMgPSBnZXRfZGVidWdfaW5mb19zdGF0dXMgKCkgaW5cbiAgaWYgc3RhdHVzIDwgMCB0aGVuXG4gICAgcHJlcnJfZW5kbGluZSBlcnJvcnMuKGFicyBzdGF0dXMpO1xuICBmbHVzaCBzdGRlcnJcblxubGV0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyID0gcmVmIGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXJcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBmbiA9IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIDo9IGZuXG5cbmxldCBlbXB0eV9iYWNrdHJhY2UgOiByYXdfYmFja3RyYWNlID0gW3wgfF1cblxubGV0IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSA9XG4gIHRyeVxuICAgIGdldF9yYXdfYmFja3RyYWNlICgpXG4gIHdpdGggXyAoKiBPdXRfb2ZfbWVtb3J5PyAqKSAtPlxuICAgIGVtcHR5X2JhY2t0cmFjZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgICgqIEdldCB0aGUgYmFja3RyYWNlIG5vdywgaW4gY2FzZSBvbmUgb2YgdGhlIFthdF9leGl0XSBmdW5jdGlvblxuICAgICAgIGRlc3Ryb3lzIGl0LiAqKVxuICAgIGxldCByYXdfYmFja3RyYWNlID1cbiAgICAgIGlmIGRlYnVnZ2VyX2luX3VzZSAoKiBTYW1lIHRlc3QgYXMgaW4gW3J1bnRpbWUvcHJpbnRleGMuY10gKikgdGhlblxuICAgICAgICBlbXB0eV9iYWNrdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpXG4gICAgaW5cbiAgICAodHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgdHJ5XG4gICAgICAhdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2VcbiAgICB3aXRoIGV4bicgLT5cbiAgICAgIGxldCByYXdfYmFja3RyYWNlJyA9IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yIGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyOiBleGNlcHRpb24gJXNcXG5cIlxuICAgICAgICAodG9fc3RyaW5nIGV4bicpO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZSc7XG4gICAgICBmbHVzaCBzdGRlcnJcbiAgd2l0aFxuICAgIHwgT3V0X29mX21lbW9yeSAtPlxuICAgICAgICBwcmVycl9lbmRsaW5lXG4gICAgICAgICAgXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFtjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbl0gaW5cbiAgIFtydW50aW1lL3ByaW50ZXhjLmNdIHdoaWNoIGV4cGVjdHMgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlXG4gIHdpdGggXyAtPlxuICAgICgqIFRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50ICopXG4gICAgKClcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiXG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IGZsaXAgZiB4IHkgPSBmIHkgeFxubGV0IG5lZ2F0ZSBwIHYgPSBub3QgKHAgdilcblxuZXhjZXB0aW9uIEZpbmFsbHlfcmFpc2VkIG9mIGV4blxuXG5sZXQgKCkgPSBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIEBAIGZ1bmN0aW9uXG58IEZpbmFsbHlfcmFpc2VkIGV4biAtPiBTb21lIChcIkZ1bi5GaW5hbGx5X3JhaXNlZDogXCIgXiBQcmludGV4Yy50b19zdHJpbmcgZXhuKVxufCBfIC0+IE5vbmVcblxubGV0IHByb3RlY3QgfihmaW5hbGx5IDogdW5pdCAtPiB1bml0KSB3b3JrID1cbiAgbGV0IGZpbmFsbHlfbm9fZXhuICgpID1cbiAgICB0cnkgZmluYWxseSAoKSB3aXRoIGUgLT5cbiAgICAgIGxldCBidCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSAoRmluYWxseV9yYWlzZWQgZSkgYnRcbiAgaW5cbiAgbWF0Y2ggd29yayAoKSB3aXRoXG4gIHwgcmVzdWx0IC0+IGZpbmFsbHlfbm9fZXhuICgpIDsgcmVzdWx0XG4gIHwgZXhjZXB0aW9uIHdvcmtfZXhuIC0+XG4gICAgICBsZXQgd29ya19idCA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgICBmaW5hbGx5X25vX2V4biAoKSA7XG4gICAgICBQcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB3b3JrX2V4biB3b3JrX2J0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIEphY3F1ZXMtSGVucmkgSm91cmRhbiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFBhcmlzICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2LTIwMTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSAgICopXG4oKiAgICAgZXQgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc3RhdCA9IHtcbiAgbWlub3Jfd29yZHMgOiBmbG9hdDtcbiAgcHJvbW90ZWRfd29yZHMgOiBmbG9hdDtcbiAgbWFqb3Jfd29yZHMgOiBmbG9hdDtcbiAgbWlub3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIG1ham9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBoZWFwX3dvcmRzIDogaW50O1xuICBoZWFwX2NodW5rcyA6IGludDtcbiAgbGl2ZV93b3JkcyA6IGludDtcbiAgbGl2ZV9ibG9ja3MgOiBpbnQ7XG4gIGZyZWVfd29yZHMgOiBpbnQ7XG4gIGZyZWVfYmxvY2tzIDogaW50O1xuICBsYXJnZXN0X2ZyZWUgOiBpbnQ7XG4gIGZyYWdtZW50cyA6IGludDtcbiAgY29tcGFjdGlvbnMgOiBpbnQ7XG4gIHRvcF9oZWFwX3dvcmRzIDogaW50O1xuICBzdGFja19zaXplIDogaW50O1xuICBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM6IGludDtcbn1cblxudHlwZSBjb250cm9sID0ge1xuICBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50O1xuICBzcGFjZV9vdmVyaGVhZCA6IGludDtcbiAgdmVyYm9zZSA6IGludDtcbiAgbWF4X292ZXJoZWFkIDogaW50O1xuICBzdGFja19saW1pdCA6IGludDtcbiAgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuXG5sZXQgZXZlbnRsb2dfcGF1c2UgKCkgPSAoKVxubGV0IGV2ZW50bG9nX3Jlc3VtZSAoKSA9ICgpXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBwcmludF9zdGF0IGMgPVxuICBsZXQgc3QgPSBzdGF0ICgpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWlub3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIm1ham9yX2NvbGxlY3Rpb25zOiAgICAgICVkXFxuXCIgc3QubWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcImNvbXBhY3Rpb25zOiAgICAgICAgICAgICVkXFxuXCIgc3QuY29tcGFjdGlvbnM7XG4gIGZwcmludGYgYyBcImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogJWRcXG5cIiBzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDEgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJS4wZlwiIHN0Lm1pbm9yX3dvcmRzKSBpblxuICBmcHJpbnRmIGMgXCJtaW5vcl93b3JkczogICAgJSouMGZcXG5cIiBsMSBzdC5taW5vcl93b3JkcztcbiAgZnByaW50ZiBjIFwicHJvbW90ZWRfd29yZHM6ICUqLjBmXFxuXCIgbDEgc3QucHJvbW90ZWRfd29yZHM7XG4gIGZwcmludGYgYyBcIm1ham9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1ham9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgbGV0IGwyID0gU3RyaW5nLmxlbmd0aCAoc3ByaW50ZiBcIiVkXCIgc3QudG9wX2hlYXBfd29yZHMpIGluXG4gIGZwcmludGYgYyBcInRvcF9oZWFwX3dvcmRzOiAlKmRcXG5cIiBsMiBzdC50b3BfaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwiaGVhcF93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmhlYXBfd29yZHM7XG4gIGZwcmludGYgYyBcImxpdmVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5saXZlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJmcmVlX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuZnJlZV93b3JkcztcbiAgZnByaW50ZiBjIFwibGFyZ2VzdF9mcmVlOiAgICUqZFxcblwiIGwyIHN0Lmxhcmdlc3RfZnJlZTtcbiAgZnByaW50ZiBjIFwiZnJhZ21lbnRzOiAgICAgICUqZFxcblwiIGwyIHN0LmZyYWdtZW50cztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGZwcmludGYgYyBcImxpdmVfYmxvY2tzOiAlZFxcblwiIHN0LmxpdmVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJmcmVlX2Jsb2NrczogJWRcXG5cIiBzdC5mcmVlX2Jsb2NrcztcbiAgZnByaW50ZiBjIFwiaGVhcF9jaHVua3M6ICVkXFxuXCIgc3QuaGVhcF9jaHVua3NcblxuXG5sZXQgYWxsb2NhdGVkX2J5dGVzICgpID1cbiAgbGV0IChtaSwgcHJvLCBtYSkgPSBjb3VudGVycyAoKSBpblxuICAobWkgKy4gbWEgLS4gcHJvKSAqLiBmbG9hdF9vZl9pbnQgKFN5cy53b3JkX3NpemUgLyA4KVxuXG5cbmV4dGVybmFsIGZpbmFsaXNlIDogKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZmluYWxfcmVnaXN0ZXJcIlxuZXh0ZXJuYWwgZmluYWxpc2VfbGFzdCA6ICh1bml0IC0+IHVuaXQpIC0+ICdhIC0+IHVuaXQgPVxuICBcImNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZmluYWxpc2VfcmVsZWFzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWxlYXNlXCJcblxuXG50eXBlIGFsYXJtID0gYm9vbCBBdG9taWMudFxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgQXRvbWljLmdldCBhcmVjLmFjdGl2ZSB0aGVuIGJlZ2luXG4gICAgbGV0IGZpbmFsbHkgKCkgPSBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWMgaW5cbiAgICBGdW4ucHJvdGVjdCB+ZmluYWxseSBhcmVjLmZcbiAgZW5kXG5cbmxldCBkZWxldGVfYWxhcm0gYSA9IEF0b21pYy5zZXQgYSBmYWxzZVxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gQXRvbWljLm1ha2UgdHJ1ZTsgZiA9IGYgfSBpblxuICBEb21haW4uYXRfZXhpdCAoZnVuICgpIC0+IGRlbGV0ZV9hbGFybSBhcmVjLmFjdGl2ZSk7XG4gIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgYXJlYy5hY3RpdmVcblxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG5cbiAgICBleHRlcm5hbCBkaXNjYXJkIDogdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2ZfZGlzY2FyZFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBpbl9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZGluID0gU3RkbGliLnN0ZGluXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9pbl9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9pblxubGV0IG9wZW5fZ2VuID0gU3RkbGliLm9wZW5faW5fZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgaWMgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2VfaW5fbm9lcnIgaWMpXG4gICAgKGZ1biAoKSAtPiBmIGljKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW5fYmluIHMgZlxuXG5sZXQgd2l0aF9vcGVuX3RleHQgcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX2luIHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5faW5fZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19pblxubGV0IHBvcyA9IFN0ZGxpYi5MYXJnZUZpbGUucG9zX2luXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX2luXG5sZXQgY2xvc2Vfbm9lcnIgPSBTdGRsaWIuY2xvc2VfaW5fbm9lcnJcblxubGV0IGlucHV0X2NoYXIgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfY2hhciBpYyB3aXRoXG4gIHwgYyAtPiBTb21lIGNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXRfYnl0ZSBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9ieXRlIGljIHdpdGhcbiAgfCBuIC0+IFNvbWUgblxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9saW5lIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0ID0gU3RkbGliLmlucHV0XG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dF9iaWdhcnJheSA6XG4gIHQgLT4gXyBCaWdhcnJheS5BcnJheTEudCAtPiBpbnQgLT4gaW50IC0+IGludFxuICA9IFwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheVwiXG5cbmxldCBpbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCaWdhcnJheS5BcnJheTEuZGltIGJ1ZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRfYmlnYXJyYXlcIlxuICBlbHNlIHVuc2FmZV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0IGljIGJ1ZiBwb3MgbGVuID1cbiAgbWF0Y2ggU3RkbGliLnJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiB3aXRoXG4gIHwgKCkgLT4gU29tZSAoKVxuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gU29tZSAoKSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSB1bnNhZmVfaW5wdXRfYmlnYXJyYXkgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgKG9mcyArIHIpIChsZW4gLSByKVxuICBlbmRcblxubGV0IHJlYWxseV9pbnB1dF9iaWdhcnJheSBpYyBidWYgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCaWdhcnJheS5BcnJheTEuZGltIGJ1ZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0X2JpZ2FycmF5IGljIGJ1ZiBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG4oKiBSZWFkIHVwIHRvIFtsZW5dIGJ5dGVzIGludG8gW2J1Zl0sIHN0YXJ0aW5nIGF0IFtvZnNdLiBSZXR1cm4gdG90YWwgYnl0ZXNcbiAgIHJlYWQuICopXG5sZXQgcmVhZF91cHRvIGljIGJ1ZiBvZnMgbGVuID1cbiAgbGV0IHJlYyBsb29wIG9mcyBsZW4gPVxuICAgIGlmIGxlbiA9IDAgdGhlbiBvZnNcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IFN0ZGxpYi5pbnB1dCBpYyBidWYgb2ZzIGxlbiBpblxuICAgICAgaWYgciA9IDAgdGhlblxuICAgICAgICBvZnNcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcCAob2ZzICsgcikgKGxlbiAtIHIpXG4gICAgZW5kXG4gIGluXG4gIGxvb3Agb2ZzIGxlbiAtIG9mc1xuXG4oKiBCZXN0IGVmZm9ydCBhdHRlbXB0IHRvIHJldHVybiBhIGJ1ZmZlciB3aXRoID49IChvZnMgKyBuKSBieXRlcyBvZiBzdG9yYWdlLFxuICAgYW5kIHN1Y2ggdGhhdCBpdCBjb2luY2lkZXMgd2l0aCBbYnVmXSBhdCBpbmRpY2VzIDwgW29mc10uXG5cbiAgIFRoZSByZXR1cm5lZCBidWZmZXIgaXMgZXF1YWwgdG8gW2J1Zl0gaXRzZWxmIGlmIGl0IGFscmVhZHkgaGFzIHN1ZmZpY2llbnRcbiAgIGZyZWUgc3BhY2UuXG5cbiAgIFRoZSByZXR1cm5lZCBidWZmZXIgbWF5IGhhdmUgKmZld2VyKiB0aGFuIFtvZnMgKyBuXSBieXRlcyBvZiBzdG9yYWdlIGlmIHRoaXNcbiAgIG51bWJlciBpcyA+IFtTeXMubWF4X3N0cmluZ19sZW5ndGhdLiBIb3dldmVyIHRoZSByZXR1cm5lZCBidWZmZXIgd2lsbFxuICAgKmFsd2F5cyogaGF2ZSA+IFtvZnNdIGJ5dGVzIG9mIHN0b3JhZ2UuIEluIHRoZSBsaW1pdGluZyBjYXNlIHdoZW4gW29mcyA9IGxlblxuICAgPSBTeXMubWF4X3N0cmluZ19sZW5ndGhdIChzbyB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZXNpemUgdGhlIGJ1ZmZlciBhdFxuICAgYWxsKSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcblxubGV0IGVuc3VyZSBidWYgb2ZzIG4gPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPj0gb2ZzICsgbiB0aGVuIGJ1ZlxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5ld19sZW4gPSByZWYgbGVuIGluXG4gICAgd2hpbGUgIW5ld19sZW4gPCBvZnMgKyBuIGRvXG4gICAgICBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiArIDFcbiAgICBkb25lO1xuICAgIGxldCBuZXdfbGVuID0gIW5ld19sZW4gaW5cbiAgICBsZXQgbmV3X2xlbiA9XG4gICAgICBpZiBuZXdfbGVuIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIG5ld19sZW5cbiAgICAgIGVsc2UgaWYgb2ZzIDwgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgICBlbHNlXG4gICAgICAgIGZhaWx3aXRoIFwiSW5fY2hhbm5lbC5pbnB1dF9hbGw6IGNoYW5uZWwgY29udGVudCBcXFxuICAgICAgICAgICAgICAgICAgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bSBzdHJpbmcgbGVuZ3RoXCJcbiAgICBpblxuICAgIGxldCBuZXdfYnVmID0gQnl0ZXMuY3JlYXRlIG5ld19sZW4gaW5cbiAgICBCeXRlcy5ibGl0IGJ1ZiAwIG5ld19idWYgMCBvZnM7XG4gICAgbmV3X2J1ZlxuICBlbmRcblxubGV0IGlucHV0X2FsbCBpYyA9XG4gIGxldCBjaHVua19zaXplID0gNjU1MzYgaW4gKCogSU9fQlVGRkVSX1NJWkUgKilcbiAgbGV0IGluaXRpYWxfc2l6ZSA9XG4gICAgdHJ5XG4gICAgICBTdGRsaWIuaW5fY2hhbm5lbF9sZW5ndGggaWMgLSBTdGRsaWIucG9zX2luIGljXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgLTFcbiAgaW5cbiAgbGV0IGluaXRpYWxfc2l6ZSA9IGlmIGluaXRpYWxfc2l6ZSA8IDAgdGhlbiBjaHVua19zaXplIGVsc2UgaW5pdGlhbF9zaXplIGluXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIGlmIGluaXRpYWxfc2l6ZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgaW5pdGlhbF9zaXplXG4gICAgZWxzZVxuICAgICAgU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gIGluXG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgaW5pdGlhbF9zaXplIGluXG4gIGxldCBucmVhZCA9IHJlYWRfdXB0byBpYyBidWYgMCBpbml0aWFsX3NpemUgaW5cbiAgaWYgbnJlYWQgPCBpbml0aWFsX3NpemUgdGhlbiAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIHBhcnRpYWxseSBmaWxsZWQgKilcbiAgICBCeXRlcy5zdWJfc3RyaW5nIGJ1ZiAwIG5yZWFkXG4gIGVsc2UgYmVnaW4gKCogbnJlYWQgPSBpbml0aWFsX3NpemUsIG1heWJlIEVPRiByZWFjaGVkICopXG4gICAgbWF0Y2ggU3RkbGliLmlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAgICgqIEVPRiByZWFjaGVkLCBidWZmZXIgaXMgY29tcGxldGVseSBmaWxsZWQgKilcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWZcbiAgICB8IGMgLT5cbiAgICAgICAgKCogRU9GIG5vdCByZWFjaGVkICopXG4gICAgICAgIGxldCByZWMgbG9vcCBidWYgb2ZzID1cbiAgICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBvZnMgY2h1bmtfc2l6ZSBpblxuICAgICAgICAgIGxldCByZW0gPSBCeXRlcy5sZW5ndGggYnVmIC0gb2ZzIGluXG4gICAgICAgICAgKCogW3JlbV0gY2FuIGJlIDwgW2NodW5rX3NpemVdIGlmIGJ1ZmZlciBzaXplIGNsb3NlIHRvXG4gICAgICAgICAgICAgW1N5cy5tYXhfc3RyaW5nX2xlbmd0aF0gKilcbiAgICAgICAgICBsZXQgciA9IHJlYWRfdXB0byBpYyBidWYgb2ZzIHJlbSBpblxuICAgICAgICAgIGlmIHIgPCByZW0gdGhlbiAoKiBFT0YgcmVhY2hlZCAqKVxuICAgICAgICAgICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCAob2ZzICsgcilcbiAgICAgICAgICBlbHNlICgqIHIgPSByZW0gKilcbiAgICAgICAgICAgIGxvb3AgYnVmIChvZnMgKyByZW0pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBidWYgPSBlbnN1cmUgYnVmIG5yZWFkIChjaHVua19zaXplICsgMSkgaW5cbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiBucmVhZCBjO1xuICAgICAgICBsb29wIGJ1ZiAobnJlYWQgKyAxKVxuICBlbmRcblxubGV0IFtAdGFpbF9tb2RfY29uc10gcmVjIGlucHV0X2xpbmVzIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IGxpbmUgLT4gbGluZSA6OiBpbnB1dF9saW5lcyBpY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBbXVxuXG5sZXQgcmVjIGZvbGRfbGluZXMgZiBhY2N1IGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2xpbmUgaWMgd2l0aFxuICB8IGxpbmUgLT4gZm9sZF9saW5lcyBmIChmIGFjY3UgbGluZSkgaWNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gYWNjdVxuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9pblxuXG5leHRlcm5hbCBpc19iaW5hcnlfbW9kZSA6IGluX2NoYW5uZWwgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19iaW5hcnlfbW9kZVwiXG5cbmV4dGVybmFsIGlzYXR0eSA6IHQgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNhdHR5XCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gb3V0X2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3Rkb3V0ID0gU3RkbGliLnN0ZG91dFxubGV0IHN0ZGVyciA9IFN0ZGxpYi5zdGRlcnJcbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX291dF9iaW5cbmxldCBvcGVuX3RleHQgPSBTdGRsaWIub3Blbl9vdXRcbmxldCBvcGVuX2dlbiA9IFN0ZGxpYi5vcGVuX291dF9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBvYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnIgb2MpXG4gICAgKGZ1biAoKSAtPiBmIG9jKVxuXG5sZXQgd2l0aF9vcGVuX2JpbiBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0X2JpbiBzIGZcblxubGV0IHdpdGhfb3Blbl90ZXh0IHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9vdXQgcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0pIHMgZlxuXG5leHRlcm5hbCB1bnNhZmVfb3V0cHV0X2JpZ2FycmF5IDpcbiAgdCAtPiBfIEJpZ2FycmF5LkFycmF5MS50IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICA9IFwiY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcIlxuXG5sZXQgc2VlayA9IFN0ZGxpYi5MYXJnZUZpbGUuc2Vla19vdXRcbmxldCBwb3MgPSBTdGRsaWIuTGFyZ2VGaWxlLnBvc19vdXRcbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX291dFxubGV0IGNsb3NlX25vZXJyID0gU3RkbGliLmNsb3NlX291dF9ub2VyclxubGV0IGZsdXNoID0gU3RkbGliLmZsdXNoXG5sZXQgZmx1c2hfYWxsID0gU3RkbGliLmZsdXNoX2FsbFxubGV0IG91dHB1dF9jaGFyID0gU3RkbGliLm91dHB1dF9jaGFyXG5sZXQgb3V0cHV0X2J5dGUgPSBTdGRsaWIub3V0cHV0X2J5dGVcbmxldCBvdXRwdXRfc3RyaW5nID0gU3RkbGliLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBTdGRsaWIub3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gU3RkbGliLm91dHB1dFxubGV0IG91dHB1dF9zdWJzdHJpbmcgPSBTdGRsaWIub3V0cHV0X3N1YnN0cmluZ1xubGV0IG91dHB1dF9iaWdhcnJheSBvYyBidWYgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBCaWdhcnJheS5BcnJheTEuZGltIGJ1ZiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X2JpZ2FycmF5XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X2JpZ2FycmF5IG9jIGJ1ZiBvZnMgbGVuXG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxuXG5leHRlcm5hbCBpc19iaW5hcnlfbW9kZSA6IG91dF9jaGFubmVsIC0+IGJvb2wgPSBcImNhbWxfbWxfaXNfYmluYXJ5X21vZGVcIlxuXG5leHRlcm5hbCBzZXRfYnVmZmVyZWQgOiB0IC0+IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZXRfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc19idWZmZXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19idWZmZXJlZFwiXG5cbmV4dGVybmFsIGlzYXR0eSA6IHQgLT4gYm9vbCA9IFwiY2FtbF9zeXNfaXNhdHR5XCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVXRpbGl0eSBmdW5jdGlvbnMgKilcblxubGV0IGhleF9vZl9zdHJpbmcgZCA9XG4gIGxldCBjaGFyX2hleCBuID1cbiAgICBDaGFyLmNociAoaWYgbiA8IDEwIHRoZW4gQ2hhci5jb2RlICcwJyArIG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQ2hhci5jb2RlICdhJyArIG4gLSAxMCkgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggZCBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIChsZW4gKiAyKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBzdHJpbmdfb2ZfaGV4IHMgPVxuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5vZl9oZXhcIiBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIFN0cmluZy5pbml0IChTdHJpbmcubGVuZ3RoIHMgLyAyKSAoZnVuIGkgLT4gQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpXG5cbigqIEdlbmVyaWMgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIHZhbCBoYXNoX2xlbmd0aCA6IGludFxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIHN0cmluZyA6IHN0cmluZyAtPiB0XG4gIHZhbCBieXRlcyA6IGJ5dGVzIC0+IHRcbiAgdmFsIHN1YnN0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgdmFsIHN1YmJ5dGVzIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB0XG4gIHZhbCBjaGFubmVsIDogaW5fY2hhbm5lbCAtPiBpbnQgLT4gdFxuICB2YWwgZmlsZSA6IHN0cmluZyAtPiB0XG4gIHZhbCBvdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiB0IC0+IHVuaXRcbiAgdmFsIGlucHV0IDogaW5fY2hhbm5lbCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgb2ZfaGV4IDogc3RyaW5nIC0+IHRcbmVuZFxuXG4oKiBCTEFLRTIgaGFzaGluZywgcGFyYW1ldGVyaXplZCBieSBoYXNoIHNpemUgKilcblxubW9kdWxlIEJMQUtFMiAoWDogc2lnIHZhbCBoYXNoX2xlbmd0aCA6IGludCBlbmQpIDogUyA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IHN0cmluZ1xuXG4gIGxldCBoYXNoX2xlbmd0aCA9XG4gICAgaWYgWC5oYXNoX2xlbmd0aCA8IDEgfHwgWC5oYXNoX2xlbmd0aCA+IDY0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5CTEFLRTI6IHdyb25nIGhhc2ggc2l6ZVwiO1xuICAgIFguaGFzaF9sZW5ndGhcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG4gIHR5cGUgc3RhdGVcblxuICBleHRlcm5hbCBjcmVhdGVfZ2VuOiBpbnQgLT4gc3RyaW5nIC0+IHN0YXRlID0gXCJjYW1sX2JsYWtlMl9jcmVhdGVcIlxuICBleHRlcm5hbCB1cGRhdGU6IHN0YXRlIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYmxha2UyX3VwZGF0ZVwiXG4gIGV4dGVybmFsIGZpbmFsOiBzdGF0ZSAtPiBpbnQgLT4gdCA9IFwiY2FtbF9ibGFrZTJfZmluYWxcIlxuICBleHRlcm5hbCB1bnNhZmVfc3RyaW5nOiBpbnQgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsYWtlMl9zdHJpbmdcIlxuXG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfZ2VuIGhhc2hfbGVuZ3RoIFwiXCJcblxuICBsZXQgc3RyaW5nIHN0ciA9XG4gICAgdW5zYWZlX3N0cmluZyBoYXNoX2xlbmd0aCBcIlwiIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuICBsZXQgYnl0ZXMgYiA9XG4gICAgc3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpXG5cbiAgbGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5zdWJzdHJpbmdcIjtcbiAgICB1bnNhZmVfc3RyaW5nIGhhc2hfbGVuZ3RoIFwiXCIgc3RyIG9mcyBsZW5cblxuICBsZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID1cbiAgICBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG4gIGxldCBjaGFubmVsIGljIHRvcmVhZCA9XG4gICAgbGV0IGJ1Zl9zaXplID0gNDA5NiBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgY3R4ID0gY3JlYXRlICgpIGluXG4gICAgaWYgdG9yZWFkIDwgMCB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGRvX3JlYWQgKCkgPVxuICAgICAgICBsZXQgbiA9IEluX2NoYW5uZWwuaW5wdXQgaWMgYnVmIDAgYnVmX3NpemUgaW5cbiAgICAgICAgaWYgbiA9IDBcbiAgICAgICAgdGhlbiBmaW5hbCBjdHggaGFzaF9sZW5ndGhcbiAgICAgICAgZWxzZSAodXBkYXRlIGN0eCAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIDAgbjsgZG9fcmVhZCAoKSlcbiAgICAgIGluIGRvX3JlYWQgKClcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBkb19yZWFkIHRvcmVhZCA9XG4gICAgICAgIGlmIHRvcmVhZCA9IDAgdGhlbiBmaW5hbCBjdHggaGFzaF9sZW5ndGggZWxzZSBiZWdpblxuICAgICAgICAgIGxldCBuID0gSW5fY2hhbm5lbC5pbnB1dCBpYyBidWYgMCAoSW50Lm1pbiBidWZfc2l6ZSB0b3JlYWQpIGluXG4gICAgICAgICAgaWYgbiA9IDBcbiAgICAgICAgICB0aGVuIHJhaXNlIEVuZF9vZl9maWxlXG4gICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgdXBkYXRlIGN0eCAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIDAgbjtcbiAgICAgICAgICAgIGRvX3JlYWQgKHRvcmVhZCAtIG4pXG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgaW4gZG9fcmVhZCB0b3JlYWRcbiAgICBlbmRcblxuICBsZXQgZmlsZSBmaWxlbmFtZSA9XG4gICAgSW5fY2hhbm5lbC53aXRoX29wZW5fYmluIGZpbGVuYW1lIChmdW4gaWMgLT4gY2hhbm5lbCBpYyAoLTEpKVxuXG4gIGxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPSBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbiAgbGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gaGFzaF9sZW5ndGhcblxuICBsZXQgdG9faGV4IGQgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggZCA8PiBoYXNoX2xlbmd0aCB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICAgIGhleF9vZl9zdHJpbmcgZFxuXG4gIGxldCBvZl9oZXggcyA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IGhhc2hfbGVuZ3RoICogMiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0Lm9mX2hleFwiO1xuICAgIHN0cmluZ19vZl9oZXggc1xuXG5lbmRcblxubW9kdWxlIEJMQUtFMTI4ID0gQkxBS0UyKHN0cnVjdCBsZXQgaGFzaF9sZW5ndGggPSAxNiBlbmQpXG5tb2R1bGUgQkxBS0UyNTYgPSBCTEFLRTIoc3RydWN0IGxldCBoYXNoX2xlbmd0aCA9IDMyIGVuZClcbm1vZHVsZSBCTEFLRTUxMiA9IEJMQUtFMihzdHJ1Y3QgbGV0IGhhc2hfbGVuZ3RoID0gNjQgZW5kKVxuXG4oKiBNRDUgaGFzaGluZyAqKVxuXG5tb2R1bGUgTUQ1ID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGhhc2hfbGVuZ3RoID0gMTZcblxuICBsZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG4gIGxldCBlcXVhbCA9IFN0cmluZy5lcXVhbFxuXG4gIGV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG4gIGV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG4gIGxldCBzdHJpbmcgc3RyID1cbiAgICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxuICBsZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG4gIGxldCBzdWJzdHJpbmcgc3RyIG9mcyBsZW4gPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgICBlbHNlIHVuc2FmZV9zdHJpbmcgc3RyIG9mcyBsZW5cblxuICBsZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxuICBsZXQgZmlsZSBmaWxlbmFtZSA9XG4gICAgSW5fY2hhbm5lbC53aXRoX29wZW5fYmluIGZpbGVuYW1lIChmdW4gaWMgLT4gY2hhbm5lbCBpYyAoLTEpKVxuXG4gIGxldCBvdXRwdXQgY2hhbiBkaWdlc3QgPSBvdXRwdXRfc3RyaW5nIGNoYW4gZGlnZXN0XG5cbiAgbGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxuICBsZXQgdG9faGV4IGQgPVxuICAgIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICAgIGhleF9vZl9zdHJpbmcgZFxuXG4gIGxldCBvZl9oZXggcyA9XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgICBzdHJpbmdfb2ZfaGV4IHNcblxuZW5kXG5cbigqIERlZmF1bHQgZXhwb3J0ZWQgaW1wbGVtZW50YXRpb24gaXMgTUQ1ICopXG5cbmluY2x1ZGUgTUQ1XG5cbmxldCBmcm9tX2hleCA9IG9mX2hleFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIE1hbnVlbCBTZXJyYW5vIGV0IFhhdmllciBMZXJveSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0JpZ2FycmF5XTogbGFyZ2UsIG11bHRpLWRpbWVuc2lvbmFsLCBudW1lcmljYWwgYXJyYXlzICopXG5cbigqIFRoZXNlIHR5cGVzIGluIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIHRhYmxlcyBpblxuICAgLi4vdHlwaW5nL3R5cGVvcHQubWwgKilcblxudHlwZSBmbG9hdDE2X2VsdCA9IEZsb2F0MTZfZWx0XG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG4oKiBLZWVwIHRoZSBvcmRlciBvZiB0aGVzZSBjb25zdHJ1Y3RvcnMgaW4gc3luYyB3aXRoIHRoZSBjYW1sX2JhX2tpbmRcbiAgIGVudW1lcmF0aW9uIGluIGJpZ2FycmF5LmggKilcblxudHlwZSAoJ2EsICdiKSBraW5kID1cbiAgfCBGbG9hdDMyIDogKGZsb2F0LCBmbG9hdDMyX2VsdCkga2luZFxuICB8IEZsb2F0NjQgOiAoZmxvYXQsIGZsb2F0NjRfZWx0KSBraW5kXG4gIHwgSW50OF9zaWduZWQgOiAoaW50LCBpbnQ4X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3Vuc2lnbmVkIDogKGludCwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl9zaWduZWQgOiAoaW50LCBpbnQxNl9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfdW5zaWduZWQgOiAoaW50LCBpbnQxNl91bnNpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQzMiA6IChpbnQzMiwgaW50MzJfZWx0KSBraW5kXG4gIHwgSW50NjQgOiAoaW50NjQsIGludDY0X2VsdCkga2luZFxuICB8IEludCA6IChpbnQsIGludF9lbHQpIGtpbmRcbiAgfCBOYXRpdmVpbnQgOiAobmF0aXZlaW50LCBuYXRpdmVpbnRfZWx0KSBraW5kXG4gIHwgQ29tcGxleDMyIDogKENvbXBsZXgudCwgY29tcGxleDMyX2VsdCkga2luZFxuICB8IENvbXBsZXg2NCA6IChDb21wbGV4LnQsIGNvbXBsZXg2NF9lbHQpIGtpbmRcbiAgfCBDaGFyIDogKGNoYXIsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgRmxvYXQxNiA6IChmbG9hdCwgZmxvYXQxNl9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG5sZXQgZmxvYXQxNiA9IEZsb2F0MTZcbmxldCBmbG9hdDMyID0gRmxvYXQzMlxubGV0IGZsb2F0NjQgPSBGbG9hdDY0XG5sZXQgaW50OF9zaWduZWQgPSBJbnQ4X3NpZ25lZFxubGV0IGludDhfdW5zaWduZWQgPSBJbnQ4X3Vuc2lnbmVkXG5sZXQgaW50MTZfc2lnbmVkID0gSW50MTZfc2lnbmVkXG5sZXQgaW50MTZfdW5zaWduZWQgPSBJbnQxNl91bnNpZ25lZFxubGV0IGludDMyID0gSW50MzJcbmxldCBpbnQ2NCA9IEludDY0XG5sZXQgaW50ID0gSW50XG5sZXQgbmF0aXZlaW50ID0gTmF0aXZlaW50XG5sZXQgY29tcGxleDMyID0gQ29tcGxleDMyXG5sZXQgY29tcGxleDY0ID0gQ29tcGxleDY0XG5sZXQgY2hhciA9IENoYXJcblxubGV0IGtpbmRfc2l6ZV9pbl9ieXRlcyA6IHR5cGUgYSBiLiAoYSwgYikga2luZCAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEZsb2F0MTYgLT4gMlxuICB8IEZsb2F0MzIgLT4gNFxuICB8IEZsb2F0NjQgLT4gOFxuICB8IEludDhfc2lnbmVkIC0+IDFcbiAgfCBJbnQ4X3Vuc2lnbmVkIC0+IDFcbiAgfCBJbnQxNl9zaWduZWQgLT4gMlxuICB8IEludDE2X3Vuc2lnbmVkIC0+IDJcbiAgfCBJbnQzMiAtPiA0XG4gIHwgSW50NjQgLT4gOFxuICB8IEludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IE5hdGl2ZWludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IENvbXBsZXgzMiAtPiA4XG4gIHwgQ29tcGxleDY0IC0+IDE2XG4gIHwgQ2hhciAtPiAxXG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9sYXlvdXQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGNfbGF5b3V0ID0gQ19sYXlvdXRcbmxldCBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBHZW5hcnJheSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0XG4gIGV4dGVybmFsIGNyZWF0ZTogKCdhLCAnYikga2luZCAtPiAnYyBsYXlvdXQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgID0gXCJjYW1sX2JhX2NyZWF0ZVwiXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhXG4gICAgID0gXCJjYW1sX2JhX2dldF9nZW5lcmljXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9zZXRfZ2VuZXJpY1wiXG5cbiAgbGV0IHJlYyBjbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sID0gQXJyYXkubGVuZ3RoIGlkeCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMCB0byBwcmVkIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgY2xvb3AgYXJyIGlkeCBmIChzdWNjIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCByZWMgZmxvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA8IDAgdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDEgdG8gbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBmbG9vcCBhcnIgaWR4IGYgKHByZWQgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbXMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW1zIGluXG4gICAgbGV0IGRsZW4gPSBBcnJheS5sZW5ndGggZGltcyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAwKSBmIDAgZGltczsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmbG9vcCBhcnIgKEFycmF5Lm1ha2UgZGxlbiAxKSBmIChwcmVkIGRsZW4pIGRpbXM7IGFyclxuXG4gIGV4dGVybmFsIG51bV9kaW1zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcImNhbWxfYmFfbnVtX2RpbXNcIlxuICBleHRlcm5hbCBudGhfZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX2JhX2RpbVwiXG4gIGxldCBkaW1zIGEgPVxuICAgIGxldCBuID0gbnVtX2RpbXMgYSBpblxuICAgIGxldCBkID0gQXJyYXkubWFrZSBuIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbi0xIGRvIGQuKGkpIDwtIG50aF9kaW0gYSBpIGRvbmU7XG4gICAgZFxuXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoQXJyYXkuZm9sZF9sZWZ0ICggKiApIDEgKGRpbXMgYXJyKSlcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc2xpY2VfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgc2xpY2VfcmlnaHQ6ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5lbmRcblxubW9kdWxlIEFycmF5MCA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8fF1cbiAgbGV0IGdldCBhcnIgPSBHZW5hcnJheS5nZXQgYXJyIFt8fF1cbiAgbGV0IHNldCBhcnIgPSBHZW5hcnJheS5zZXQgYXJyIFt8fF1cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPSBraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKVxuXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG5cbiAgbGV0IG9mX3ZhbHVlIGtpbmQgbGF5b3V0IHYgPVxuICAgIGxldCBhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGluXG4gICAgc2V0IGEgdjtcbiAgICBhXG4gIGxldCBpbml0ID0gb2ZfdmFsdWVcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0gYXJyKVxuXG4gIGV4dGVybmFsIHN1YjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCAnYykgdCA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2UgKHR5cGUgdCkgKGEgOiAoXywgXywgdCkgR2VuYXJyYXkudCkgbiA9XG4gICAgbWF0Y2ggbGF5b3V0IGEgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XSA6IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gKEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF06IChfLCBfLCB0KSBHZW5hcnJheS50KVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0gZiA9XG4gICAgZm9yIGkgPSAxIHRvIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbSBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbSBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IChBcnJheS5sZW5ndGggZGF0YSkgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkYXRhIC0gMSBkbyB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSBkYXRhLihpKSBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MiA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTJ8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8yXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8yXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzJcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdCBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0IGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIChmIGkgailcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkyLm9mX2FycmF5OiBub24tcmVjdGFuZ3VsYXIgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgcm93LihqKVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkzID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yOyBkaW0zfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzNcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3NldF8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfM1wiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwgZGltMzogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fM1wiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbTEgYXJyKSAqIChkaW0yIGFycikgKiAoZGltMyBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzEgYSBuIG0gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9sZWZ0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xufF1cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICBmb3IgayA9IDAgdG8gcHJlZCBkaW0zIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBrID0gMSB0byBkaW0zIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gZGltMiBkb1xuICAgICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBkaW0xID0gQXJyYXkubGVuZ3RoIGRhdGEgaW5cbiAgICBsZXQgZGltMiA9IGlmIGRpbTEgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKSBpblxuICAgIGxldCBkaW0zID0gaWYgZGltMiA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApLigwKSBpblxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIGxldCBjb2wgPSByb3cuKGopIGluXG4gICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjb2wgPD4gZGltMyB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhXCIpO1xuICAgICAgICBmb3IgayA9IDAgdG8gZGltMyAtIDEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGJhIChpICsgb2ZzKSAoaiArIG9mcykgKGsgKyBvZnMpIGNvbC4oaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTA6ICgnYSwgJ2IsICdjKSBBcnJheTAudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTE6ICgnYSwgJ2IsICdjKSBBcnJheTEudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTI6ICgnYSwgJ2IsICdjKSBBcnJheTIudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBnZW5hcnJheV9vZl9hcnJheTM6ICgnYSwgJ2IsICdjKSBBcnJheTMudCAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcIiVpZGVudGl0eVwiXG5sZXQgYXJyYXkwX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMCB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MF9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkxX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMSB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5MV9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkyX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMiB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheVwiXG5sZXQgYXJyYXkzX29mX2dlbmFycmF5IGEgPVxuICBpZiBHZW5hcnJheS5udW1fZGltcyBhID0gMyB0aGVuIGFcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkJpZ2FycmF5LmFycmF5M19vZl9nZW5hcnJheVwiXG5cbmV4dGVybmFsIHJlc2hhcGU6XG4gICAoJ2EsICdiLCAnYykgR2VuYXJyYXkudCAtPiBpbnQgYXJyYXkgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCJjYW1sX2JhX3Jlc2hhcGVcIlxubGV0IHJlc2hhcGVfMCBhID0gcmVzaGFwZSBhIFt8fF1cbmxldCByZXNoYXBlXzEgYSBkaW0xID0gcmVzaGFwZSBhIFt8ZGltMXxdXG5sZXQgcmVzaGFwZV8yIGEgZGltMSBkaW0yID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yfF1cbmxldCByZXNoYXBlXzMgYSBkaW0xIGRpbTIgZGltMyA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMjtkaW0zfF1cblxuKCogRm9yY2UgY2FtbF9iYV9nZXRfezEsMiwzLE59IHRvIGJlIGxpbmtlZCBpbiwgc2luY2Ugd2UgZG9uJ3QgcmVmZXJcbiAgIHRvIHRob3NlIHByaW1pdGl2ZXMgZGlyZWN0bHkgaW4gdGhpcyBmaWxlICopXG5cbmxldCBfID1cbiAgbGV0IF8gPSBHZW5hcnJheS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTEuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkyLmdldCBpblxuICBsZXQgXyA9IEFycmF5My5nZXQgaW5cbiAgKClcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cbmV4dGVybmFsIGdldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMVwiXG5leHRlcm5hbCBnZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzJcIlxuZXh0ZXJuYWwgZ2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8zXCJcbmV4dGVybmFsIHNldDE6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMVwiXG5leHRlcm5hbCBzZXQyOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzJcIlxuZXh0ZXJuYWwgc2V0MzogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8zXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENhbWJpdW0sIENvbGxlZ2UgZGUgRnJhbmNlIGFuZCBJbnJpYSAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yICopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICBvcGVuIEJpZ2FycmF5XG5cbiAgdHlwZSB0ID0gKGludDY0LCBpbnQ2NF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG4gIGV4dGVybmFsIG5leHQ6IHQgLT4gKGludDY0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2x4bV9uZXh0XCIgXCJjYW1sX2x4bV9uZXh0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID1cbiAgICBBcnJheTEuY3JlYXRlIEludDY0IENfbGF5b3V0IDRcblxuICBsZXQgc2V0IHMgaTEgaTIgaTMgaTQgPVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMCAoSW50NjQubG9nb3IgaTEgMUwpOyAoKiBtdXN0IGJlIG9kZCAqKVxuICAgIEFycmF5MS51bnNhZmVfc2V0IHMgMSBpMjtcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDIgKGlmIGkzIDw+IDBMIHRoZW4gaTMgZWxzZSAxTCk7ICgqIG11c3Qgbm90IGJlIDAgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDMgKGlmIGk0IDw+IDBMIHRoZW4gaTQgZWxzZSAyTCkgKCogbXVzdCBub3QgYmUgMCAqKVxuXG4gIGxldCBtayBpMSBpMiBpMyBpNCA9XG4gICAgbGV0IHMgPSBjcmVhdGUgKCkgaW5cbiAgICBzZXQgcyBpMSBpMiBpMyBpNDsgc1xuXG4gIGxldCBzZXJpYWxpemF0aW9uX3ByZWZpeCA9XG4gICAgXCJseG0xOlwiXG4gICAgKCogXCJseG1cIiBkZW5vdGVzIHRoZSBhbGdvcml0aG0gY3VycmVudGx5IGluIHVzZSwgYW5kICcxJyBpc1xuICAgICAgIGEgdmVyc2lvbiBudW1iZXIuIFdlIHNob3VsZCB1cGRhdGUgdGhpcyBwcmVmaXggaWYgd2UgY2hhbmdlXG4gICAgICAgdGhlIFJhbmRvbSBhbGdvcml0aG0gb3IgdGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0LCBzbyB0aGF0IHVzZXJzXG4gICAgICAgZ2V0IGEgY2xlYW4gZXJyb3IgaW5zdGVhZCBvZiBiZWxpZXZpbmcgdGhhdCB0aGV5IGZhaXRoZnVsbHlcbiAgICAgICByZXByb2R1Y2UgdGhlaXIgcHJldmlvdXMgc3RhdGUgYW5kIGluIGZhY3QgZ2V0IGEgZGlmZmVyZW50XG4gICAgICAgc3RyZWFtLlxuXG4gICAgICAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNvbnN0cmFpbnQgdG8ga2VlcCB0aGUgc2FtZVxuICAgICAgIFwiPG5hbWU+PHZlcj46PGRhdGE+XCIgZm9ybWF0IG9yIG1lc3NhZ2Ugc2l6ZSBpbiBmdXR1cmUgdmVyc2lvbnMsXG4gICAgICAgd2UgY291bGQgY2hhbmdlIHRoZSBmb3JtYXQgY29tcGxldGVseSBpZiB3ZSB3YW50ZWQgYXMgbG9uZ1xuICAgICAgIGFzIHRoZXJlIGlzIG5vIGNvbmZ1c2lvbiBwb3NzaWJsZSB3aXRoIHRoZSBwcmV2aW91cyBmb3JtYXRzLiAqKVxuXG4gIGxldCBzZXJpYWxpemF0aW9uX3ByZWZpeF9sZW4gPVxuICAgIFN0cmluZy5sZW5ndGggc2VyaWFsaXphdGlvbl9wcmVmaXhcblxuICBsZXQgdG9fYmluYXJ5X3N0cmluZyBzID1cbiAgICBsZXQgcHJlZml4ID0gc2VyaWFsaXphdGlvbl9wcmVmaXggaW5cbiAgICBsZXQgcHJlZmxlbiA9IHNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgKHByZWZsZW4gKyA0ICogOCkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyBwcmVmaXggMCBidWYgMCBwcmVmbGVuO1xuICAgIGZvciBpID0gMCB0byAzIGRvXG4gICAgICBCeXRlcy5zZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgaSAqIDgpIChBcnJheTEuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG5cbiAgbGV0IG9mX2JpbmFyeV9zdHJpbmcgYnVmID1cbiAgICBsZXQgcHJlZml4ID0gc2VyaWFsaXphdGlvbl9wcmVmaXggaW5cbiAgICBsZXQgcHJlZmxlbiA9IHNlcmlhbGl6YXRpb25fcHJlZml4X2xlbiBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggYnVmIDw+IHByZWZsZW4gKyA0ICogOFxuICAgICAgIHx8IG5vdCAoU3RyaW5nLnN0YXJ0c193aXRoIH5wcmVmaXggYnVmKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChcIlJhbmRvbS5TdGF0ZS5vZl9iaW5hcnlfc3RyaW5nOiBleHBlY3RlZCBhIGZvcm1hdCBcXFxuICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBPQ2FtbCBcIiBeIFN5cy5vY2FtbF92ZXJzaW9uKTtcbiAgICBsZXQgaTEgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDAgKiA4KSBpblxuICAgIGxldCBpMiA9IFN0cmluZy5nZXRfaW50NjRfbGUgYnVmIChwcmVmbGVuICsgMSAqIDgpIGluXG4gICAgbGV0IGkzID0gU3RyaW5nLmdldF9pbnQ2NF9sZSBidWYgKHByZWZsZW4gKyAyICogOCkgaW5cbiAgICBsZXQgaTQgPSBTdHJpbmcuZ2V0X2ludDY0X2xlIGJ1ZiAocHJlZmxlbiArIDMgKiA4KSBpblxuICAgIG1rIGkxIGkyIGkzIGk0XG5cbiAgbGV0IGFzc2lnbiAoZHN0OiB0KSAoc3JjOiB0KSA9XG4gICAgQXJyYXkxLmJsaXQgc3JjIGRzdFxuXG4gIGxldCBjb3B5IHMgPVxuICAgIGxldCBzJyA9IGNyZWF0ZSgpIGluIGFzc2lnbiBzJyBzOyBzJ1xuXG4gICgqIFRoZSBzZWVkIGlzIGFuIGFycmF5IG9mIGludGVnZXJzLiAgSXQgY2FuIGJlIGp1c3Qgb25lIGludGVnZXIsXG4gICAgIGJ1dCBpdCBjYW4gYWxzbyBiZSAxMiBvciBtb3JlIGJ5dGVzLiAgVG8gaGlkZSB0aGUgZGlmZmVyZW5jZSxcbiAgICAgd2Ugc2VyaWFsaXplIHRoZSBhcnJheSBhcyBhIHNlcXVlbmNlIG9mIGJ5dGVzLCB0aGVuIGhhc2ggdGhlXG4gICAgIHNlcXVlbmNlIHdpdGggTUQ1IChEaWdlc3QuYnl0ZXMpLiAgTUQ1IGdpdmVzIG9ubHkgMTI4IGJpdHMgd2hpbGVcbiAgICAgd2UgbmVlZCAyNTYgYml0cywgc28gd2UgaGFzaCB0d2ljZSB3aXRoIGRpZmZlcmVudCBzdWZmaXhlcy4gKilcbiAgbGV0IHJlaW5pdCBzIHNlZWQgPVxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSAobiAqIDggKyAxKSBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG9cbiAgICAgIEJ5dGVzLnNldF9pbnQ2NF9sZSBiIChpICogOCkgKEludDY0Lm9mX2ludCBzZWVkLihpKSlcbiAgICBkb25lO1xuICAgIEJ5dGVzLnNldCBiIChuICogOCkgJ1xceDAxJztcbiAgICBsZXQgZDEgPSBEaWdlc3QuYnl0ZXMgYiBpblxuICAgIEJ5dGVzLnNldCBiIChuICogOCkgJ1xceDAyJztcbiAgICBsZXQgZDIgPSBEaWdlc3QuYnl0ZXMgYiBpblxuICAgIHNldCBzIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQxIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgOClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMiAwKVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDgpXG5cbiAgbGV0IG1ha2Ugc2VlZCA9XG4gICAgbGV0IHMgPSBjcmVhdGUoKSBpbiByZWluaXQgcyBzZWVkOyBzXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID1cbiAgICBtYWtlIChyYW5kb21fc2VlZCAoKSlcblxuICBsZXQgbWluX2ludDMxID0gLTB4NDAwMF8wMDAwXG4gICAgICAoKiA9IC0ye14zMH0sIHdoaWNoIGlzIFttaW5faW50XSBmb3IgMzEtYml0IGludGVnZXJzICopXG4gIGxldCBtYXhfaW50MzEgPSAweDNGRkZfRkZGRlxuICAgICAgKCogPSAgMnteMzB9LTEsIHdoaWNoIGlzIFttYXhfaW50XSBmb3IgMzEtYml0IGludGVnZXJzICopXG4gICgqIGF2b2lkIGludGVnZXIgbGl0ZXJhbHMgZm9yIHRoZXNlLCAzMi1iaXQgT0NhbWwgd291bGQgcmVqZWN0IHRoZW06ICopXG4gIGxldCBtaW5faW50MzIgPSAtKDEgbHNsIDMxKVxuICAgICAgKCogPSAtMHg4MDAwXzAwMDAgb24gcGxhdGZvcm1zIHdoZXJlIFtTeXMuaW50X3NpemUgPj0gMzJdICopXG4gIGxldCBtYXhfaW50MzIgPSAoMSBsc2wgMzEpIC0gMVxuICAgICAgKCogPSAgMHg3RkZGX0ZGRkYgb24gcGxhdGZvcm1zIHdoZXJlIFtTeXMuaW50X3NpemUgPj0gMzJdICopXG5cbiAgKCogUmV0dXJuIDMwIHJhbmRvbSBiaXRzIGFzIGFuIGludGVnZXIgMCA8PSB4IDwgMl4zMCAqKVxuICBsZXQgYml0cyBzID1cbiAgICBJbnQ2NC50b19pbnQgKG5leHQgcykgbGFuZCBtYXhfaW50MzFcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW25dIChleGNsdWRlZCkuXG4gICAgIFtib3VuZF0gbWF5IGJlIGFueSBwb3NpdGl2ZSBbaW50XS4gIFttYXNrXSBtdXN0IGJlIG9mIHRoZSBmb3JtIFsye15pfS0xXVxuICAgICBhbmQgZ3JlYXRlciBvciBlcXVhbCB0byBbbl0uICBMYXJnZXIgdmFsdWVzIG9mIFttYXNrXSBtYWtlIHRoZSBmdW5jdGlvblxuICAgICBydW4gZmFzdGVyIChmZXdlciBzYW1wbGVzIGFyZSByZWplY3RlZCkuICBTbWFsbGVyIHZhbHVlcyBvZiBbbWFza11cbiAgICAgYXJlIHVzYWJsZSBvbiBhIHdpZGVyIHJhbmdlIG9mIE9DYW1sIGltcGxlbWVudGF0aW9ucy4gICopXG4gIGxldCByZWMgaW50X2F1eCBzIG4gbWFzayA9XG4gICAgKCogV2Ugc3RhcnQgYnkgZHJhd2luZyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIGluIHRoZSBbIFswLCBtYXNrXSBdIHJhbmdlICopXG4gICAgbGV0IHIgPSBJbnQ2NC50b19pbnQgKG5leHQgcykgbGFuZCBtYXNrIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgKCogRm9yIHVuaWZvcm0gZGlzdHJpYnV0aW9uIG9mIHRoZSByZXN1bHQgYmV0d2VlbiAwIGluY2x1ZGVkIGFuZCBbbl1cbiAgICAgKiBleGNsdWRlZCwgdGhlIHJhbmRvbSBudW1iZXIgW3JdIG11c3QgaGF2ZSBiZWVuIGRyYXduIHVuaWZvcm1seSBpblxuICAgICAqIGFuIGludGVydmFsIHdob3NlIGxlbmd0aCBpcyBhIG11bHRpcGxlIG9mIFtuXS4gVG8gYWNoaWV2ZSB0aGlzLFxuICAgICAqIHdlIHVzZSByZWplY3Rpb24gc2FtcGxpbmcgb24gdGhlIGdyZWF0ZXN0IGludGVydmFsIFsgWzAsIGsqbi0xXSBdXG4gICAgICogdGhhdCBmaXRzIGluIFsgWzAsIG1hc2tdIF0uICBUaGF0IGlzLCB3ZSByZWplY3QgdGhlXG4gICAgICogc2FtcGxlIGlmIGl0IGZhbGxzIG91dHNpZGUgb2YgdGhpcyBpbnRlcnZhbCwgYW5kIGRyYXcgYWdhaW4uXG4gICAgICogVGhpcyBpcyB3aGF0IHRoZSB0ZXN0IGJlbG93IGRvZXMsIHdoaWxlIGNhcmVmdWx5IGF2b2lkaW5nXG4gICAgICogb3ZlcmZsb3dzIGFuZCBzcGFyaW5nIGEgZGl2aXNpb24gW21hc2sgLyBuXS4gKilcbiAgICBpZiByIC0gdiA+IG1hc2sgLSBuICsgMSB0aGVuIGludF9hdXggcyBuIG1hc2sgZWxzZSB2XG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgVGhlIGJvdW5kIG11c3QgZml0IGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMuXG4gICAgIFRoaXMgZnVuY3Rpb24geWllbGRzIHRoZSBzYW1lIG91dHB1dCByZWdhcmRsZXNzIG9mIHRoZSBpbnRlZ2VyIHNpemUuICopXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiBtYXhfaW50MzEgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludF9hdXggcyBib3VuZCBtYXhfaW50MzFcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLlxuICAgICBbYm91bmRdIG1heSBiZSBhbnkgcG9zaXRpdmUgW2ludF0uICopXG4gIGxldCBmdWxsX2ludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiUmFuZG9tLmZ1bGxfaW50XCJcbiAgICAoKiBXaGVuIHRoZSBib3VuZCBmaXRzIGluIDMxLWJpdCBzaWduZWQgaW50ZWdlcnMsIHdlIHVzZSB0aGUgc2FtZSBtYXNrXG4gICAgICAgYXMgaW4gZnVuY3Rpb24gW2ludF0gc28gYXMgdG8geWllbGQgdGhlIHNhbWUgb3V0cHV0IG9uIGFsbCBwbGF0Zm9ybXNcbiAgICAgICBzdXBwb3J0ZWQgYnkgT0NhbWwgKDMyLWJpdCBPQ2FtbCwgNjQtYml0IE9DYW1sLCBhbmQgSmF2YVNjcmlwdCkuXG4gICAgICAgV2hlbiB0aGUgYm91bmQgZml0cyBpbiAzMi1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgW21heF9pbnQzMl1cbiAgICAgICBhcyB0aGUgbWFzayBzbyBhcyB0byB5aWVsZCB0aGUgc2FtZSBvdXRwdXQgb24gYWxsIHBsYXRmb3JtcyB3aGVyZVxuICAgICAgIFtTeXMuaW50X3NpemUgPj0gMzJdIChpLmUuIEphdmFTY3JpcHQgYW5kIDY0LWJpdCBPQ2FtbCkuICopXG4gICAgZWxzZVxuICAgICAgaW50X2F1eCBzIGJvdW5kXG4gICAgICAgIChpZiBib3VuZCA8PSBtYXhfaW50MzEgdGhlbiBtYXhfaW50MzFcbiAgICAgICAgIGVsc2UgaWYgYm91bmQgPD0gbWF4X2ludDMyIHRoZW4gbWF4X2ludDMyXG4gICAgICAgICBlbHNlIG1heF9pbnQpXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBUaGUgW25iaXRzXSBwYXJhbWV0ZXIgaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgc2lnbmVkIGludGVnZXJzXG4gICAgIHdlIGRyYXcgZnJvbSBbc10uXG4gICAgIFdlIG11c3QgaGF2ZSBbLTJ7Xm5iaXRzIC0gMX0gPD0gbWluIDw9IG1heCA8IDJ7Xm5iaXRzIC0gMX1dLlxuICAgICBNb3Jlb3ZlciwgZm9yIHRoZSBpdGVyYXRpb24gdG8gY29udmVyZ2UgcXVpY2tseSwgdGhlIGludGVydmFsXG4gICAgIFtbbWluLCBtYXhdXSBzaG91bGQgaGF2ZSB3aWR0aCBhdCBsZWFzdCBbMntebmJpdHMgLSAxfV0uXG4gICAgIEFzIHRoZSB3aWR0aCBhcHByb2FjaGVzIHRoaXMgbG93ZXIgbGltaXQsIHRoZSBhdmVyYWdlIG51bWJlciBvZlxuICAgICBkcmF3cyBhcHByb2FjaGVzIDIsIHdpdGggYSBxdWl0ZSBoaWdoIHN0YW5kYXJkIGRldmlhdGlvbiAoMiArIGVwc2lsb24pLiAqKVxuICBsZXQgcmVjIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHMgPVxuICAgIGxldCBkcm9wID0gU3lzLmludF9zaXplIC0gbmJpdHMgaW5cbiAgICAoKiBUaGUgYml0c2hpZnRzIHJlcGxpY2F0ZSB0aGUgW25iaXRzXS10aCBiaXQgKHNpZ24gYml0KSB0byBoaWdoZXIgYml0czogKilcbiAgICBsZXQgciA9ICgoSW50NjQudG9faW50IChuZXh0IHMpKSBsc2wgZHJvcCkgYXNyIGRyb3AgaW5cbiAgICBpZiByIDwgbWluIHx8IHIgPiBtYXggdGhlbiBpbnRfaW5fbGFyZ2VfcmFuZ2UgcyB+bWluIH5tYXggfm5iaXRzIGVsc2UgclxuXG4gICgqIFJldHVybiBhbiBpbnRlZ2VyIGJldHdlZW4gW21pbl0gKGluY2x1ZGVkKSBhbmQgW21heF0gKGluY2x1ZGVkKS5cbiAgICAgW21hc2tdIGlzIGFzIGRlc2NyaWJlZCBmb3IgW2ludF9hdXhdLlxuICAgICBbbmJpdHNdIGlzIGFzIGRlc2NyaWJlZCBmb3IgW2ludF9pbl9sYXJnZV9yYW5nZV0uICopXG4gIGxldCBpbnRfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4IH5tYXNrIH5uYml0cyA9XG4gICAgbGV0IHNwYW4gPSBtYXggLSBtaW4gKyAxIGluXG4gICAgaWYgc3BhbiA8PSBtYXNrICgqIFtzcGFuXSBpcyBzbWFsbCBlbm91Z2ggKilcbiAgICAmJiBzcGFuID4gMCAgICAgKCogbm8gb3ZlcmZsb3cgb2NjdXJyZWQgd2hlbiBjb21wdXRpbmcgW3NwYW5dICopXG4gICAgdGhlblxuICAgICAgKCogSnVzdCBkcmF3IGEgbnVtYmVyIGluIFtbMCwgc3BhbildIGFuZCBzaGlmdCBpdCBieSBbbWluXS4gKilcbiAgICAgIG1pbiArIGludF9hdXggcyBzcGFuIG1hc2tcbiAgICBlbHNlXG4gICAgICAoKiBTcGFuIHRvbyBsYXJnZSwgdXNlIHRoZSBhbHRlcm5hdGl2ZSBkcmF3aW5nIG1ldGhvZC4gKilcbiAgICAgIGludF9pbl9sYXJnZV9yYW5nZSBzIH5taW4gfm1heCB+bmJpdHNcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuXG4gICAgIFdlIG11c3QgaGF2ZSBbbWluIDw9IG1heF0uICopXG4gIGxldCBpbnRfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnRfaW5fcmFuZ2VcIjtcbiAgICAoKiBXaGVuIGJvdGggYm91bmRzIGZpdCBpbiAzMS1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgcGFyYW1ldGVyc1xuICAgICAgIFttYXNrXSBhbmQgW25iaXRzXSBhcHByb3ByaWF0ZSBmb3IgMzEtYml0IGludGVnZXJzLCBzbyBhcyB0b1xuICAgICAgIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBhbGwgcGxhdGZvcm1zIHN1cHBvcnRlZCBieSBPQ2FtbC5cbiAgICAgICBXaGVuIGJvdGggYm91bmRzIGZpdCBpbiAzMi1iaXQgc2lnbmVkIGludGVnZXJzLCB3ZSB1c2UgcGFyYW1ldGVyc1xuICAgICAgIFttYXNrXSBhbmQgW25iaXRzXSBhcHByb3ByaWF0ZSBmb3IgMzItYml0IGludGVnZXJzLCBzbyBhcyB0b1xuICAgICAgIHlpZWxkIHRoZSBzYW1lIG91dHB1dCBvbiBKYXZhU2NyaXB0IGFuZCBvbiA2NC1iaXQgT0NhbWwuICopXG4gICAgaWYgbWluID49IG1pbl9pbnQzMSAmJiBtYXggPD0gbWF4X2ludDMxIHRoZW5cbiAgICAgIGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2s6bWF4X2ludDMxIH5uYml0czozMVxuICAgIGVsc2UgaWYgbWluID49IG1pbl9pbnQzMiAmJiBtYXggPD0gbWF4X2ludDMyIHRoZW5cbiAgICAgIGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2s6bWF4X2ludDMyIH5uYml0czozMlxuICAgIGVsc2VcbiAgICAgIGludF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggfm1hc2s6bWF4X2ludCB+bmJpdHM6U3lzLmludF9zaXplXG5cbiAgKCogUmV0dXJuIDMyIHJhbmRvbSBiaXRzIGFzIGFuIFtpbnQzMl0gKilcbiAgbGV0IGJpdHMzMiBzID1cbiAgICBJbnQ2NC50b19pbnQzMiAobmV4dCBzKVxuXG4gICgqIFJldHVybiBhbiBbaW50MzJdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgaW50MzJhdXggcyBuID1cbiAgICBsZXQgciA9IEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJpdHMzMiBzKSAxIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2F1eF0uICopXG4gICAgaWYgSW50MzIuKHN1YiByIHYgPiBhZGQgKHN1YiBtYXhfaW50IG4pIDFsKVxuICAgIHRoZW4gaW50MzJhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDMyIHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQzMlwiXG4gICAgZWxzZSBpbnQzMmF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQzMl0gYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBXZSBtdXN0IGhhdmUgW21pbiA8PSBtYXhdLiAqKVxuICBsZXQgcmVjIGludDMyX2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCA9XG4gICAgbGV0IHIgPSBJbnQ2NC50b19pbnQzMiAobmV4dCBzKSBpblxuICAgIGlmIHIgPCBtaW4gfHwgciA+IG1heCB0aGVuIGludDMyX2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCBlbHNlIHJcblxuICBsZXQgaW50MzJfaW5fcmFuZ2UgcyB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQzMl9pbl9yYW5nZVwiXG4gICAgZWxzZVxuICAgICAgbGV0IHNwYW4gPSBJbnQzMi5zdWNjIChJbnQzMi5zdWIgbWF4IG1pbikgaW5cbiAgICAgICgqIEV4cGxhbmF0aW9uIG9mIHRoaXMgdGVzdDogc2VlIGNvbW1lbnQgaW4gW2ludF9pbl9yYW5nZV9hdXhdLiAqKVxuICAgICAgaWYgc3BhbiA8PSBJbnQzMi56ZXJvIHRoZW5cbiAgICAgICAgaW50MzJfaW5fcmFuZ2VfYXV4IHMgfm1pbiB+bWF4XG4gICAgICBlbHNlXG4gICAgICAgIEludDMyLmFkZCBtaW4gKGludDMyYXV4IHMgc3BhbilcblxuICAoKiBSZXR1cm4gNjQgcmFuZG9tIGJpdHMgYXMgYW4gW2ludDY0XSAqKVxuICBsZXQgYml0czY0IHMgPVxuICAgIG5leHQgc1xuXG4gICgqIFJldHVybiBhbiBbaW50NjRdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCByZWMgaW50NjRhdXggcyBuID1cbiAgICBsZXQgciA9IEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJpdHM2NCBzKSAxIGluXG4gICAgbGV0IHYgPSBJbnQ2NC5yZW0gciBuIGluXG4gICAgKCogRXhwbGFuYXRpb24gb2YgdGhpcyB0ZXN0OiBzZWUgY29tbWVudCBpbiBbaW50X2F1eF0uICopXG4gICAgaWYgSW50NjQuKHN1YiByIHYgPiBhZGQgKHN1YiBtYXhfaW50IG4pIDFMKVxuICAgIHRoZW4gaW50NjRhdXggcyBuXG4gICAgZWxzZSB2XG5cbiAgbGV0IGludDY0IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDBMXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlJhbmRvbS5pbnQ2NFwiXG4gICAgZWxzZSBpbnQ2NGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiBbbWluXSAoaW5jbHVkZWQpIGFuZCBbbWF4XSAoaW5jbHVkZWQpLlxuICAgICBXZSBtdXN0IGhhdmUgW21pbiA8PSBtYXhdLiAqKVxuICBsZXQgcmVjIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heCA9XG4gICAgbGV0IHIgPSBuZXh0IHMgaW5cbiAgICBpZiByIDwgbWluIHx8IHIgPiBtYXggdGhlbiBpbnQ2NF9pbl9yYW5nZV9hdXggcyB+bWluIH5tYXggZWxzZSByXG5cbiAgbGV0IGludDY0X2luX3JhbmdlIHMgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXggdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uaW50NjRfaW5fcmFuZ2VcIlxuICAgIGVsc2VcbiAgICAgIGxldCBzcGFuID0gSW50NjQuc3VjYyAoSW50NjQuc3ViIG1heCBtaW4pIGluXG4gICAgICAoKiBFeHBsYW5hdGlvbiBvZiB0aGlzIHRlc3Q6IHNlZSBjb21tZW50IGluIFtpbnRfaW5fcmFuZ2VfYXV4XS4gKilcbiAgICAgIGlmIHNwYW4gPD0gSW50NjQuemVybyB0aGVuXG4gICAgICAgIGludDY0X2luX3JhbmdlX2F1eCBzIH5taW4gfm1heFxuICAgICAgZWxzZVxuICAgICAgICBJbnQ2NC5hZGQgbWluIChpbnQ2NGF1eCBzIHNwYW4pXG5cbiAgKCogUmV0dXJuIDMyIG9yIDY0IHJhbmRvbSBiaXRzIGFzIGEgW25hdGl2ZWludF0gKilcbiAgbGV0IG5hdGl2ZWJpdHMgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoYml0czMyIHMpXG4gICAgZWxzZSBmdW4gcyAtPiBJbnQ2NC50b19uYXRpdmVpbnQgKGJpdHM2NCBzKVxuXG4gICgqIFJldHVybiBhIFtuYXRpdmVpbnRdIGJldHdlZW4gMCAoaW5jbHVkZWQpIGFuZCBbYm91bmRdIChleGNsdWRlZCkuICopXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuICAoKiBSZXR1cm4gYSBbbmF0aXZlaW50XSBiZXR3ZWVuIFttaW5dIChpbmNsdWRlZCkgYW5kIFttYXhdIChpbmNsdWRlZCkuICopXG4gIGxldCBuYXRpdmVpbnRfaW5fcmFuZ2UgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIH5taW4gfm1heCAtPlxuICAgICAgTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMl9pbl9yYW5nZSBzXG4gICAgICAgIH5taW46KE5hdGl2ZWludC50b19pbnQzMiBtaW4pIH5tYXg6KE5hdGl2ZWludC50b19pbnQzMiBtYXgpKVxuICAgIGVsc2UgZnVuIHMgfm1pbiB+bWF4IC0+XG4gICAgICBJbnQ2NC50b19uYXRpdmVpbnQgKGludDY0X2luX3JhbmdlIHNcbiAgICAgICAgfm1pbjooSW50NjQub2ZfbmF0aXZlaW50IG1pbikgfm1heDooSW50NjQub2ZfbmF0aXZlaW50IG1heCkpXG5cbiAgKCogUmV0dXJuIGEgZmxvYXQgMCA8IHggPCAxIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhbW9uZyB0aGVcbiAgICAgbXVsdGlwbGVzIG9mIDJeLTUzICopXG4gIGxldCByZWMgcmF3ZmxvYXQgcyA9XG4gICAgbGV0IGIgPSBuZXh0IHMgaW5cbiAgICBsZXQgbiA9IEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgYiAxMSBpblxuICAgIGlmIG4gPD4gMEwgdGhlbiBJbnQ2NC50b19mbG9hdCBuICouIDB4MS5wLTUzIGVsc2UgcmF3ZmxvYXQgc1xuXG4gICgqIFJldHVybiBhIGZsb2F0IGJldHdlZW4gMCBhbmQgW2JvdW5kXSAqKVxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICAoKiBSZXR1cm4gYSByYW5kb20gQm9vbGVhbiAqKVxuICBsZXQgYm9vbCBzID0gbmV4dCBzIDwgMExcblxuICAoKiBTcGxpdCBhIG5ldyBQUk5HIG9mZiB0aGUgZ2l2ZW4gUFJORyAqKVxuICBsZXQgc3BsaXQgcyA9XG4gICAgbGV0IGkxID0gYml0czY0IHMgaW4gbGV0IGkyID0gYml0czY0IHMgaW5cbiAgICBsZXQgaTMgPSBiaXRzNjQgcyBpbiBsZXQgaTQgPSBiaXRzNjQgcyBpblxuICAgIG1rIGkxIGkyIGkzIGk0XG5lbmRcblxubGV0IG1rX2RlZmF1bHQgKCkgPVxuICAoKiBUaGlzIGlzIHRoZSBzdGF0ZSBvYnRhaW5lZCB3aXRoIFtTdGF0ZS5tYWtlIFt8IDMxNDE1OTI2NSB8XV0uICopXG4gIFN0YXRlLm1rICgtNjE5Njg3NDI4OTU2NzcwNTA5N0wpXG4gICAgICAgICAgIDU4NjU3MzI0OTgzMzcxMzE4OUxcbiAgICAgICAgICAgKC04NTkxMjY4ODAzODY1MDQzNDA3TClcbiAgICAgICAgICAgNjM4ODYxMzU5NTg0OTc3MjA0NExcblxubGV0IHJhbmRvbV9rZXkgPVxuICBEb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50OlN0YXRlLnNwbGl0IG1rX2RlZmF1bHRcblxubGV0IGJpdHMgKCkgPSBTdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBmdWxsX2ludCBib3VuZCA9IFN0YXRlLmZ1bGxfaW50IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludF9pbl9yYW5nZSB+bWluIH5tYXggPVxuICBTdGF0ZS5pbnRfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IGludDMyIGJvdW5kID0gU3RhdGUuaW50MzIgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgaW50MzJfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUuaW50MzJfaW5fcmFuZ2UgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIH5taW4gfm1heFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBuYXRpdmVpbnRfaW5fcmFuZ2Ugfm1pbiB+bWF4ID1cbiAgU3RhdGUubmF0aXZlaW50X2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGludDY0X2luX3JhbmdlIH5taW4gfm1heCA9XG4gIFN0YXRlLmludDY0X2luX3JhbmdlIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSB+bWluIH5tYXhcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzY2FsZVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHMzMiAoKSA9IFN0YXRlLmJpdHMzMiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBiaXRzNjQgKCkgPSBTdGF0ZS5iaXRzNjQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgbmF0aXZlYml0cyAoKSA9IFN0YXRlLm5hdGl2ZWJpdHMgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLnJlaW5pdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc2VlZFxubGV0IGluaXQgc2VlZCA9IGZ1bGxfaW5pdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBTcGxpdHRpbmcgKilcblxubGV0IHNwbGl0ICgpID0gU3RhdGUuc3BsaXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5cbigqIE1hbmlwdWxhdGluZyB0aGUgY3VycmVudCBzdGF0ZS4gKilcblxubGV0IGdldF9zdGF0ZSAoKSA9IFN0YXRlLmNvcHkgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSGFzaCB0YWJsZXMgKilcblxuKCogV2UgZG8gZHluYW1pYyBoYXNoaW5nLCBhbmQgcmVzaXplIHRoZSB0YWJsZSBhbmQgcmVoYXNoIHRoZSBlbGVtZW50c1xuICAgd2hlbiB0aGUgbG9hZCBmYWN0b3IgYmVjb21lcyB0b28gaGlnaC4gKilcblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgIG11dGFibGUgZGF0YTogKCdhLCAnYikgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgbXV0YWJsZSBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gIH1cblxuYW5kICgnYSwgJ2IpIGJ1Y2tldGxpc3QgPVxuICAgIEVtcHR5XG4gIHwgQ29ucyBvZiB7IG11dGFibGUga2V5OiAnYTtcbiAgICAgICAgICAgICAgbXV0YWJsZSBkYXRhOiAnYjtcbiAgICAgICAgICAgICAgbXV0YWJsZSBuZXh0OiAoJ2EsICdiKSBidWNrZXRsaXN0IH1cblxuKCogVGhlIHNpZ24gb2YgaW5pdGlhbF9zaXplIGVuY29kZXMgdGhlIGZhY3QgdGhhdCBhIHRyYXZlcnNhbCBpc1xuICAgb25nb2luZyBvciBub3QuXG5cbiAgIFRoaXMgZGlzYWJsZXMgdGhlIGVmZmljaWVudCBpbiBwbGFjZSBpbXBsZW1lbnRhdGlvbiBvZiByZXNpemluZy5cbiopXG5cbmxldCBvbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gIHx8IGguaW5pdGlhbF9zaXplIDwgMFxuXG5sZXQgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoID1cbiAgaC5pbml0aWFsX3NpemUgPC0gLSBoLmluaXRpYWxfc2l6ZVxuXG4oKiBUbyBwaWNrIHJhbmRvbSBzZWVkcyBpZiByZXF1ZXN0ZWQgKilcblxubGV0IHJhbmRvbWl6ZWRfZGVmYXVsdCA9XG4gIGxldCBwYXJhbXMgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJDQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiIGluXG4gIFN0cmluZy5jb250YWlucyBwYXJhbXMgJ1InXG5cbmxldCByYW5kb21pemVkID0gQXRvbWljLm1ha2UgcmFuZG9taXplZF9kZWZhdWx0XG5cbmxldCByYW5kb21pemUgKCkgPSBBdG9taWMuc2V0IHJhbmRvbWl6ZWQgdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWRcblxubGV0IHBybmdfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBpbml0aWFsX3NpemUgPVxuICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gIGxldCBzZWVkID1cbiAgICBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcHJuZ19rZXkpIGVsc2UgMFxuICBpblxuICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbmxldCBjbGVhciBoID1cbiAgaWYgaC5zaXplID4gMCB0aGVuIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgQXJyYXkuZmlsbCBoLmRhdGEgMCAoQXJyYXkubGVuZ3RoIGguZGF0YSkgRW1wdHlcbiAgZW5kXG5cbmxldCByZXNldCBoID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpIDwgNCAoKiBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGhhc2ggdGFibGVzICopXG4gICAgfHwgbGVuID0gYWJzIGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICBjbGVhciBoXG4gIGVsc2UgYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSAoYWJzIGguaW5pdGlhbF9zaXplKSBFbXB0eVxuICBlbmRcblxubGV0IGNvcHlfYnVja2V0bGlzdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgQ29ucyBwcmVjIC0+ICBwcmVjLm5leHQgPC0gclxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgbG9vcCByIG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgciA9IENvbnMge2tleTsgZGF0YTsgbmV4dH0gaW5cbiAgICAgIGxvb3AgciBuZXh0O1xuICAgICAgclxuXG5sZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5Lm1hcCBjb3B5X2J1Y2tldGxpc3QgaC5kYXRhIH1cblxubGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbmxldCBpbnNlcnRfYWxsX2J1Y2tldHMgaW5kZXhmdW4gaW5wbGFjZSBvZGF0YSBuZGF0YSA9XG4gIGxldCBuc2l6ZSA9IEFycmF5Lmxlbmd0aCBuZGF0YSBpblxuICBsZXQgbmRhdGFfdGFpbCA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGFzIGNlbGwgLT5cbiAgICAgICAgbGV0IGNlbGwgPVxuICAgICAgICAgIGlmIGlucGxhY2UgdGhlbiBjZWxsXG4gICAgICAgICAgZWxzZSBDb25zIHtrZXk7IGRhdGE7IG5leHQgPSBFbXB0eX1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5pZHggPSBpbmRleGZ1biBrZXkgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbmRhdGFfdGFpbC4obmlkeCkgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IG5kYXRhLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gY2VsbDtcbiAgICAgICAgZW5kO1xuICAgICAgICBuZGF0YV90YWlsLihuaWR4KSA8LSBjZWxsO1xuICAgICAgICBpbnNlcnRfYnVja2V0IG5leHRcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBvZGF0YSAtIDEgZG9cbiAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICBkb25lO1xuICBpZiBpbnBsYWNlIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbnNpemUgLSAxIGRvXG4gICAgICBtYXRjaCBuZGF0YV90YWlsLihpKSB3aXRoXG4gICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICB8IENvbnMgdGFpbCAtPiB0YWlsLm5leHQgPC0gRW1wdHlcbiAgICBkb25lXG5cbmxldCByZXNpemUgaW5kZXhmdW4gaCA9XG4gIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBiZWdpblxuICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICBsZXQgaW5wbGFjZSA9IG5vdCAob25nb2luZ190cmF2ZXJzYWwgaCkgaW5cbiAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICAgICgqIHNvIHRoYXQgaW5kZXhmdW4gc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgIGluc2VydF9hbGxfYnVja2V0cyAoaW5kZXhmdW4gaCkgaW5wbGFjZSBvZGF0YSBuZGF0YVxuICBlbmRcblxubGV0IGl0ZXIgZiBoID1cbiAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKClcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBmIGtleSBkYXRhOyBkb19idWNrZXQgbmV4dCBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBkb19idWNrZXQgZC4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCByZWMgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBFbXB0eVxuICAgICAgZW5kXG4gIHwgKENvbnMgKHtrZXk7IGRhdGE7IG5leHR9IGFzIGMpKSBhcyBzbG90IC0+XG4gICAgICBiZWdpbiBtYXRjaCBmIGtleSBkYXRhIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyBuZXh0XG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBzbG90XG4gICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIHNsb3RcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgYy5kYXRhIDwtIGRhdGE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBzbG90IG5leHRcbiAgICAgIGVuZFxuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIGYgaCA9XG4gIGxldCBkID0gaC5kYXRhIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIEVtcHR5IGguZGF0YS4oaSlcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaFxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IGZvbGQgZiBoIGluaXQgPVxuICBsZXQgcmVjIGRvX2J1Y2tldCBiIGFjY3UgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgICAgRW1wdHkgLT5cbiAgICAgICAgYWNjdVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGRvX2J1Y2tldCBuZXh0IChmIGtleSBkYXRhIGFjY3UpIGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICBhY2N1IDo9IGRvX2J1Y2tldCBkLihpKSAhYWNjdVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgICFhY2N1XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG50eXBlIHN0YXRpc3RpY3MgPSB7XG4gIG51bV9iaW5kaW5nczogaW50O1xuICBudW1fYnVja2V0czogaW50O1xuICBtYXhfYnVja2V0X2xlbmd0aDogaW50O1xuICBidWNrZXRfaGlzdG9ncmFtOiBpbnQgYXJyYXlcbn1cblxubGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBDb25ze25leHR9IC0+IGJ1Y2tldF9sZW5ndGggKGFjY3UgKyAxKSBuZXh0XG5cbmxldCBzdGF0cyBoID1cbiAgbGV0IG1ibCA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aCAwIGIpKSAwIGguZGF0YSBpblxuICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gIEFycmF5Lml0ZXJcbiAgICAoZnVuIGIgLT5cbiAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgIGguZGF0YTtcbiAgeyBudW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgdGJsID1cbiAgKCogY2FwdHVyZSBjdXJyZW50IGFycmF5LCBzbyB0aGF0IGV2ZW4gaWYgdGhlIHRhYmxlIGlzIHJlc2l6ZWQgd2VcbiAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgbGV0IHRibF9kYXRhID0gdGJsLmRhdGEgaW5cbiAgKCogc3RhdGU6IGluZGV4ICogbmV4dCBidWNrZXQgdG8gdHJhdmVyc2UgKilcbiAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRibF9kYXRhXG4gICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICBlbHNlIGF1eChpKzEpIHRibF9kYXRhLihpKSAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBTZXEuQ29ucyAoKGtleSwgZGF0YSksIGF1eCBpIG5leHQpXG4gIGluXG4gIGF1eCAwIEVtcHR5XG5cbmxldCB0b19zZXFfa2V5cyBtID0gU2VxLm1hcCBmc3QgKHRvX3NlcSBtKVxuXG5sZXQgdG9fc2VxX3ZhbHVlcyBtID0gU2VxLm1hcCBzbmQgKHRvX3NlcSBtKVxuXG4oKiBGdW5jdG9yaWFsIGludGVyZmFjZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBoYXNoOiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc2VlZGVkX2hhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBhZGQgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG4gICAgbGV0IHJlYyByZW1vdmVfYnVja2V0IGggaSBrZXkgcHJlYyA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgKClcbiAgICAgIHwgKENvbnMge2tleT1rOyBuZXh0fSkgYXMgYyAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGJlZ2luXG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIG1hdGNoIHByZWMgd2l0aFxuICAgICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICAgICAgZW5kXG4gICAgICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBkMyBlbHNlIGZpbmRfcmVjIGtleSBuZXh0M1xuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazEgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazIgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGszIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgW11cbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YT1kOyBuZXh0fSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwgayBrZXlcbiAgICAgICAgICB0aGVuIGQgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgICAgIGVsc2UgZmluZF9pbl9idWNrZXQgbmV4dCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiAoc2xvdC5rZXkgPC0ga2V5OyBzbG90LmRhdGEgPC0gZGF0YTsgZmFsc2UpXG4gICAgICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnN7a2V5OyBkYXRhOyBuZXh0PWx9O1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgICAgIEguZXF1YWwgayBrZXkgfHwgbWVtX2luX2J1Y2tldCBrZXkgbmV4dFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBtZW1faW5fYnVja2V0IGtleSBoLmRhdGEuKGtleV9pbmRleCBoIGtleSlcblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICBsZXQgZmlsdGVyX21hcF9pbnBsYWNlID0gZmlsdGVyX21hcF9pbnBsYWNlXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBzdGF0cyA9IHN0YXRzXG4gICAgbGV0IHRvX3NlcSA9IHRvX3NlcVxuICAgIGxldCB0b19zZXFfa2V5cyA9IHRvX3NlcV9rZXlzXG4gICAgbGV0IHRvX3NlcV92YWx1ZXMgPSB0b19zZXFfdmFsdWVzXG4gIGVuZFxuXG5tb2R1bGUgTWFrZShIOiBIYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXRbQHRhaWxfbW9kX2NvbnNdIHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IHJlYyBtZW1faW5fYnVja2V0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQga2V5IG5leHRcblxubGV0IG1lbSBoIGtleSA9XG4gIG1lbV9pbl9idWNrZXQga2V5IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlclxuICogICAgLSBMaW5rXG4gKiAgICAtIERhdGEgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDIgKCogQ0FNTF9FUEhFX0ZJUlNUX0tFWSBpbiB3ZWFrLmggKilcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYWNjIC0+ICdhY2MpIC0+IHQgLT4gJ2FjYyAtPiAnYWNjXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG4gICgqIEdlbmVyYWwgYXV4aWxpYXJ5IGZ1bmN0aW9uIGZvciBzZWFyY2hpbmcgZm9yIGEgcGFydGljdWxhciB2YWx1ZVxuICAgKiBpbiBhIGhhc2gtc2V0LCBhbmQgYWN0aW5nIGFjY29yZGluZyB0byB3aGV0aGVyIG9yIG5vdCBpdCdzIGZvdW5kICopXG5cbiAgbGV0IGZpbmRfYXV4IHQgZCBmb3VuZCBub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIG5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiBhcyBvcHQgd2hlbiBILmVxdWFsIHYgZCAtPiBmb3VuZCBidWNrZXQgaSBvcHQgdlxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gIGxldCBmaW5kX29wdCB0IGQgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSAgbyBfdiAtPiBvKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gTm9uZSlcblxuICBsZXQgbWVyZ2UgdCBkICAgID0gZmluZF9hdXggdCBkIChmdW4gX2IgX2kgX28gIHYgLT4gdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuICBoICBpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIGk7IGQpXG5cbiAgbGV0IGZpbmQgdCBkICAgICA9IGZpbmRfYXV4IHQgZCAoZnVuIF9iIF9pIF9vICB2IC0+IHYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfaCBfaSAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IHJlbW92ZSB0IGQgICA9IGZpbmRfYXV4IHQgZCAoZnVuICBiICBpIF9vIF92IC0+IHNldCBiIGkgTm9uZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF9oIF9pIC0+ICgpKVxuXG4gIGxldCBtZW0gdCBkICAgICAgPSBmaW5kX2F1eCB0IGQgKGZ1biBfYiBfaSBfbyBfdiAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gX2ggX2kgLT4gZmFsc2UpXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gbG9vcCAoaSArIDEpICh2IDo6IGFjY3UpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmUgPVxuICBjbGVhcl90YWdfc3RhY2sgc3RhdGU7XG4gIHdoaWxlIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIGRvXG4gICAgcHBfY2xvc2VfYm94IHN0YXRlICgpXG4gIGRvbmU7XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHBwX2luZmluaXR5O1xuICBhZHZhbmNlX2xlZnQgc3RhdGU7XG4gIGlmIGVuZF93aXRoX25ld2xpbmUgdGhlbiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgcHBfcmluaXQgc3RhdGVcblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGZvcm1hdCB2YWx1ZXMgYW5kIHVzZSBib3hlcy5cblxuKilcblxuKCogVG8gZm9ybWF0IGEgc3RyaW5nLiAqKVxubGV0IHBwX3ByaW50X2FzX3NpemUgc3RhdGUgc2l6ZSBzID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgc1xuXG5cbmxldCBwcF9wcmludF9hcyBzdGF0ZSBpc2l6ZSBzID1cbiAgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSAoU2l6ZS5vZl9pbnQgaXNpemUpIHNcblxuXG5sZXQgcHBfcHJpbnRfc3RyaW5nIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbmxldCBwcF9wcmludF9ieXRlcyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKEJ5dGVzLmxlbmd0aCBzKSAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cbigqIFRvIGZvcm1hdCBhbiBpbnRlZ2VyLiAqKVxubGV0IHBwX3ByaW50X2ludCBzdGF0ZSBpID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChJbnQudG9fc3RyaW5nIGkpXG5cbigqIFRvIGZvcm1hdCBhIGZsb2F0LiAqKVxubGV0IHBwX3ByaW50X2Zsb2F0IHN0YXRlIGYgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9mbG9hdCBmKVxuXG4oKiBUbyBmb3JtYXQgYSBib29sZWFuLiAqKVxubGV0IHBwX3ByaW50X2Jvb2wgc3RhdGUgYiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Jvb2wgYilcblxuKCogVG8gZm9ybWF0IGEgY2hhci4gKilcbmxldCBwcF9wcmludF9jaGFyIHN0YXRlIGMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAxIChTdHJpbmcubWFrZSAxIGMpXG5cbmxldCBwcF9wcmludF9ub3RoaW5nIF9zdGF0ZSAoKSA9ICgpXG5cblxuKCogT3BlbmluZyBib3hlcy4gKilcbmxldCBwcF9vcGVuX2hib3ggc3RhdGUgKCkgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9oYm94XG5hbmQgcHBfb3Blbl92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfdmJveFxuXG5hbmQgcHBfb3Blbl9odmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2h2Ym94XG5hbmQgcHBfb3Blbl9ob3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ob3Zib3hcbmFuZCBwcF9vcGVuX2JveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2JveFxuXG5cbigqIFByaW50aW5nIHF1ZXVlZCB0ZXh0LlxuXG4gICBbcHBfcHJpbnRfZmx1c2hdIHByaW50cyBhbGwgcGVuZGluZyBpdGVtcyBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYW5kXG4gICB0aGVuIGZsdXNoZXMgdGhlIGxvdyBsZXZlbCBvdXRwdXQgZGV2aWNlIG9mIHRoZSBmb3JtYXR0ZXIgdG8gYWN0dWFsbHlcbiAgIGRpc3BsYXkgcHJpbnRpbmcgbWF0ZXJpYWwuXG5cbiAgIFtwcF9wcmludF9uZXdsaW5lXSBiZWhhdmVzIGFzIFtwcF9wcmludF9mbHVzaF0gYWZ0ZXIgcHJpbnRpbmcgYW4gYWRkaXRpb25hbFxuICAgbmV3IGxpbmUuICopXG5sZXQgcHBfcHJpbnRfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIH5lbmRfd2l0aF9uZXdsaW5lOnRydWU7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuYW5kIHBwX3ByaW50X2ZsdXNoIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgfmVuZF93aXRoX25ld2xpbmU6ZmFsc2U7IHN0YXRlLnBwX291dF9mbHVzaCAoKVxuXG5cbigqIFRvIGdldCBhIG5ld2xpbmUgd2hlbiBvbmUgZG9lcyBub3Qgd2FudCB0byBjbG9zZSB0aGUgY3VycmVudCBib3guICopXG5sZXQgcHBfZm9yY2VfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogVG8gZm9ybWF0IHNvbWV0aGluZywgb25seSBpbiBjYXNlIHRoZSBsaW5lIGhhcyBqdXN0IGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3ByaW50X2lmX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGVcbiAgICAgIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9pZl9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBHZW5lcmFsaXplZCBicmVhayBoaW50IHRoYXQgYWxsb3dzIHByaW50aW5nIHN0cmluZ3MgYmVmb3JlL2FmdGVyXG4gICBzYW1lLWxpbmUgb2Zmc2V0ICh3aWR0aCkgb3IgbmV3LWxpbmUgb2Zmc2V0ICopXG5sZXQgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlIH5maXRzIH5icmVha3MgPVxuICBsZXQgYmVmb3JlLCB3aWR0aCwgYWZ0ZXIgPSBmaXRzIGluXG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IHRva2VuID0gUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIGJlZm9yZSArIHdpZHRoICsgU3RyaW5nLmxlbmd0aCBhZnRlciBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cbigqIFByaW50aW5nIGJyZWFrIGhpbnRzOlxuICAgQSBicmVhayBoaW50IGluZGljYXRlcyB3aGVyZSBhIGJveCBtYXkgYmUgYnJva2VuLlxuICAgSWYgbGluZSBpcyBicm9rZW4gdGhlbiBvZmZzZXQgaXMgYWRkZWQgdG8gdGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50XG4gICBib3ggZWxzZSAodGhlIHZhbHVlIG9mKSB3aWR0aCBibGFua3MgYXJlIHByaW50ZWQuICopXG5sZXQgcHBfcHJpbnRfYnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgcHBfcHJpbnRfY3VzdG9tX2JyZWFrIHN0YXRlXG4gICAgfmZpdHM6KFwiXCIsIHdpZHRoLCBcIlwiKSB+YnJlYWtzOihcIlwiLCBvZmZzZXQsIFwiXCIpXG5cblxuKCogUHJpbnQgYSBzcGFjZSA6XG4gICBhIHNwYWNlIGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBhIHNpbmdsZSBzcGFjZSBpZiB0aGUgYnJlYWsgZG9lcyBub3RcbiAgIHNwbGl0IHRoZSBsaW5lO1xuICAgYSBjdXQgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIG5vdGhpbmcgaWYgdGhlIGJyZWFrIGRvZXMgbm90IHNwbGl0IHRoZVxuICAgbGluZS4gKilcbmxldCBwcF9wcmludF9zcGFjZSBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDEgMFxuYW5kIHBwX3ByaW50X2N1dCBzdGF0ZSAoKSA9IHBwX3ByaW50X2JyZWFrIHN0YXRlIDAgMFxuXG5cbigqIFRhYnVsYXRpb24gYm94ZXMuICopXG5sZXQgcHBfb3Blbl90Ym94IHN0YXRlICgpID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLnplcm8gaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YmVnaW4gKFBwX3Rib3ggKHJlZiBbXSkpOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqIENsb3NlIGEgdGFidWxhdGlvbiBib3guICopXG5sZXQgcHBfY2xvc2VfdGJveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF90ZW5kOyBsZW5ndGggPSAwIH0gaW5cbiAgICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW07XG4gICAgIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCAtIDFcbiAgZW5kXG5cblxuKCogUHJpbnQgYSB0YWJ1bGF0aW9uIGJyZWFrLiAqKVxubGV0IHBwX3ByaW50X3RicmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RicmVhayAod2lkdGgsIG9mZnNldCk7IGxlbmd0aCA9IHdpZHRoIH0gaW5cbiAgICBzY2FuX3B1c2ggc3RhdGUgdHJ1ZSBlbGVtXG5cblxubGV0IHBwX3ByaW50X3RhYiBzdGF0ZSAoKSA9IHBwX3ByaW50X3RicmVhayBzdGF0ZSAwIDBcblxubGV0IHBwX3NldF90YWIgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9zdGFiOyBsZW5ndGggPSAwIH0gaW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbVxuXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBjb250cm9sIHRoZSBwcmV0dHktcHJpbnRlcnNcblxuKilcblxuKCogU2V0X21heF9ib3hlcy4gKilcbmxldCBwcF9zZXRfbWF4X2JveGVzIHN0YXRlIG4gPSBpZiBuID4gMSB0aGVuIHN0YXRlLnBwX21heF9ib3hlcyA8LSBuXG5cbigqIFRvIGtub3cgdGhlIGN1cnJlbnQgbWF4aW11bSBudW1iZXIgb2YgYm94ZXMgYWxsb3dlZC4gKilcbmxldCBwcF9nZXRfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbmxldCBwcF9vdmVyX21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX2N1cnJfZGVwdGggPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxuKCogRWxsaXBzaXMuICopXG5sZXQgcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgcyA9IHN0YXRlLnBwX2VsbGlwc2lzIDwtIHNcbmFuZCBwcF9nZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSAoKSA9IHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVG8gc2V0IHRoZSBtYXJnaW4gb2YgcHJldHR5LXByaW50ZXIuICopXG5sZXQgcHBfbGltaXQgbiA9XG4gIGlmIG4gPCBwcF9pbmZpbml0eSB0aGVuIG4gZWxzZSBwcmVkIHBwX2luZmluaXR5XG5cblxuKCogSW50ZXJuYWwgcHJldHR5LXByaW50ZXIgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdCA8LSBuO1xuICAgIHN0YXRlLnBwX21heF9pbmRlbnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfcmluaXQgc3RhdGVcblxuXG4oKiBJbml0aWFsbHksIHdlIGhhdmUgOlxuICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0LCBhbmRcbiAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW4uICopXG5sZXQgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbiA9XG4gIGlmIG4gPiAxIHRoZW5cbiAgICBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgKHN0YXRlLnBwX21hcmdpbiAtIG4pXG5cblxubGV0IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpID0gc3RhdGUucHBfbWF4X2luZGVudFxuXG5sZXQgcHBfc2V0X21hcmdpbiBzdGF0ZSBuID1cbiAgaWYgbiA+PSAxIHRoZW5cbiAgICBsZXQgbiA9IHBwX2xpbWl0IG4gaW5cbiAgICBzdGF0ZS5wcF9tYXJnaW4gPC0gbjtcbiAgICBsZXQgbmV3X21heF9pbmRlbnQgPVxuICAgICAgKCogVHJ5IHRvIG1haW50YWluIG1heF9pbmRlbnQgdG8gaXRzIGFjdHVhbCB2YWx1ZS4gKilcbiAgICAgIGlmIHN0YXRlLnBwX21heF9pbmRlbnQgPD0gc3RhdGUucHBfbWFyZ2luXG4gICAgICB0aGVuIHN0YXRlLnBwX21heF9pbmRlbnQgZWxzZVxuICAgICAgKCogSWYgcG9zc2libGUgbWFpbnRhaW4gcHBfbWluX3NwYWNlX2xlZnQgdG8gaXRzIGFjdHVhbCB2YWx1ZSxcbiAgICAgICAgIGlmIHRoaXMgbGVhZHMgdG8gYSB0b28gc21hbGwgbWF4X2luZGVudCwgdGFrZSBoYWxmIG9mIHRoZVxuICAgICAgICAgbmV3IG1hcmdpbiwgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIDEuICopXG4gICAgICAgSW50Lm1heCAoSW50Lm1heCAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfbWluX3NwYWNlX2xlZnQpXG4gICAgICAgICAgICAgICAgKHN0YXRlLnBwX21hcmdpbiAvIDIpKSAxIGluXG4gICAgKCogUmVidWlsZCBpbnZhcmlhbnRzLiAqKVxuICAgIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG5ld19tYXhfaW5kZW50XG5cblxuKCoqIEdlb21ldHJ5IGZ1bmN0aW9ucyBhbmQgdHlwZXMgKilcbnR5cGUgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ6aW50OyBtYXJnaW46IGludH1cblxubGV0IHZhbGlkYXRlX2dlb21ldHJ5IHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgaWYgbWF4X2luZGVudCA8IDIgdGhlblxuICAgIEVycm9yIFwibWF4X2luZGVudCA8IDJcIlxuICBlbHNlIGlmIG1hcmdpbiA8PSBtYXhfaW5kZW50IHRoZW5cbiAgICBFcnJvciBcIm1hcmdpbiA8PSBtYXhfaW5kZW50XCJcbiAgZWxzZSBpZiBtYXJnaW4gPj0gcHBfaW5maW5pdHkgdGhlblxuICAgIEVycm9yIFwibWFyZ2luID49IHBwX2luZmluaXR5XCJcbiAgZWxzZSBPayAoKVxuXG5sZXQgY2hlY2tfZ2VvbWV0cnkgZ2VvbWV0cnkgPVxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgT2sgKCkgLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2VcblxubGV0IHBwX2dldF9tYXJnaW4gc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXJnaW5cblxubGV0IHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIHttYXJnaW47IG1heF9pbmRlbnR9ID1cbiAgcHBfc2V0X21hcmdpbiBzdGF0ZSBtYXJnaW47XG4gIHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG1heF9pbmRlbnQ7XG4gICgpXG5cbmxldCBwcF9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIG1zZyAtPlxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcIkZvcm1hdC5wcF9zZXRfZ2VvbWV0cnk6IFwiIF4gbXNnKSlcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgX21zZyAtPlxuICAgICAoKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSA9XG4gIHsgbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKTsgbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0YXRlICgpIH1cblxubGV0IHBwX3VwZGF0ZV9nZW9tZXRyeSBzdGF0ZSB1cGRhdGUgPVxuICBsZXQgZ2VvbWV0cnkgPSBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgaW5cbiAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgKHVwZGF0ZSBnZW9tZXRyeSlcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgICBvdXRfc3RyaW5nID0gZjtcbiAgICAgIG91dF9mbHVzaCA9IGc7XG4gICAgICBvdXRfbmV3bGluZSA9IGg7XG4gICAgICBvdXRfc3BhY2VzID0gaTtcbiAgICAgIG91dF9pbmRlbnQgPSBqO1xuICAgIH0gPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSBnO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBoO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGk7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0galxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlICgpID0ge1xuICBvdXRfc3RyaW5nID0gc3RhdGUucHBfb3V0X3N0cmluZztcbiAgb3V0X2ZsdXNoID0gc3RhdGUucHBfb3V0X2ZsdXNoO1xuICBvdXRfbmV3bGluZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lO1xuICBvdXRfc3BhY2VzID0gc3RhdGUucHBfb3V0X3NwYWNlcztcbiAgb3V0X2luZGVudCA9IHN0YXRlLnBwX291dF9pbmRlbnQ7XG59XG5cblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBzdHJpbmcgb3V0cHV0IGFuZCBmbHVzaCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlIGYgZyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjsgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGdcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gpXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X25ld2xpbmUgc3RhdGUgKCkgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nIFwiXFxuXCIgMCAgMVxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgc3BhY2VzLiAqKVxubGV0IGJsYW5rX2xpbmUgPSBTdHJpbmcubWFrZSA4MCAnICdcbmxldCByZWMgZGlzcGxheV9ibGFua3Mgc3RhdGUgbiA9XG4gIGlmIG4gPiAwIHRoZW5cbiAgaWYgbiA8PSA4MCB0aGVuIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIG4gZWxzZVxuICBiZWdpblxuICAgIHN0YXRlLnBwX291dF9zdHJpbmcgYmxhbmtfbGluZSAwIDgwO1xuICAgIGRpc3BsYXlfYmxhbmtzIHN0YXRlIChuIC0gODApXG4gIGVuZFxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9pbmRlbnQgPSBkaXNwbGF5X2JsYW5rc1xuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMgYXMgcHJpbnRpbmcgdG8gYSBnaXZlblxuICAgW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCBzdGF0ZSBvYyA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gb3V0cHV0X3N1YnN0cmluZyBvYztcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIChmdW4gKCkgLT4gZmx1c2ggb2MpO1xuICBzdGF0ZS5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3Mgc3RhdGU7XG4gIHN0YXRlLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgc3RhdGVcblxuKCpcblxuICBEZWZpbmluZyBzcGVjaWZpYyBmb3JtYXR0ZXJzXG5cbiopXG5cbmxldCBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjxcIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxubGV0IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWcgPSBmdW5jdGlvblxuICB8IFN0cmluZ190YWcgcyAtPiBcIjwvXCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcblxubGV0IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcgPSBpZ25vcmVcbmxldCBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZyA9IGlnbm9yZVxuXG4oKiBCdWlsZGluZyBhIGZvcm1hdHRlciBnaXZlbiBpdHMgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy5cbiAgIE90aGVyIGZpZWxkcyBnZXQgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlcy4gKilcbmxldCBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGogPVxuICAoKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgZm9ybWF0dGVyIGNvbnRhaW5zIGEgZHVtbXkgYm94LiAqKVxuICBsZXQgcHBfcXVldWUgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHN5c190b2sgPVxuICAgIHsgc2l6ZSA9IFNpemUudW5rbm93bjsgdG9rZW4gPSBQcF9iZWdpbiAoMCwgUHBfaG92Ym94KTsgbGVuZ3RoID0gMCB9IGluXG4gIFF1ZXVlLmFkZCBzeXNfdG9rIHBwX3F1ZXVlO1xuICBsZXQgc2Nhbl9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc2Nhbl9zdGFjaztcbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAxOyBxdWV1ZV9lbGVtID0gc3lzX3RvayB9IHNjYW5fc3RhY2s7XG4gIGxldCBwcF9tYXJnaW4gPSA3OFxuICBhbmQgcHBfbWluX3NwYWNlX2xlZnQgPSAxMCBpblxuICB7XG4gICAgcHBfc2Nhbl9zdGFjayA9IHNjYW5fc3RhY2s7XG4gICAgcHBfZm9ybWF0X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3Rib3hfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGFnX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmtfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFyZ2luID0gcHBfbWFyZ2luO1xuICAgIHBwX21pbl9zcGFjZV9sZWZ0ID0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfbWF4X2luZGVudCA9IHBwX21hcmdpbiAtIHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3NwYWNlX2xlZnQgPSBwcF9tYXJnaW47XG4gICAgcHBfY3VycmVudF9pbmRlbnQgPSAwO1xuICAgIHBwX2lzX25ld19saW5lID0gdHJ1ZTtcbiAgICBwcF9sZWZ0X3RvdGFsID0gMTtcbiAgICBwcF9yaWdodF90b3RhbCA9IDE7XG4gICAgcHBfY3Vycl9kZXB0aCA9IDE7XG4gICAgcHBfbWF4X2JveGVzID0gbWF4X2ludDtcbiAgICBwcF9lbGxpcHNpcyA9IFwiLlwiO1xuICAgIHBwX291dF9zdHJpbmcgPSBmO1xuICAgIHBwX291dF9mbHVzaCA9IGc7XG4gICAgcHBfb3V0X25ld2xpbmUgPSBoO1xuICAgIHBwX291dF9zcGFjZXMgPSBpO1xuICAgIHBwX291dF9pbmRlbnQgPSBqO1xuICAgIHBwX3ByaW50X3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX3RhZ3MgPSBmYWxzZTtcbiAgICBwcF9tYXJrX29wZW5fdGFnID0gZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnO1xuICAgIHBwX21hcmtfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZztcbiAgICBwcF9wcmludF9vcGVuX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWc7XG4gICAgcHBfcHJpbnRfY2xvc2VfdGFnID0gZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWc7XG4gICAgcHBfcXVldWUgPSBwcF9xdWV1ZTtcbiAgfVxuXG5cbigqIEJ1aWxkIGEgZm9ybWF0dGVyIG91dCBvZiBpdHMgb3V0IGZ1bmN0aW9ucy4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyBvdXRfZnVucyA9XG4gIHBwX21ha2VfZm9ybWF0dGVyXG4gICAgb3V0X2Z1bnMub3V0X3N0cmluZ1xuICAgIG91dF9mdW5zLm91dF9mbHVzaFxuICAgIG91dF9mdW5zLm91dF9uZXdsaW5lXG4gICAgb3V0X2Z1bnMub3V0X3NwYWNlc1xuICAgIG91dF9mdW5zLm91dF9pbmRlbnRcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdpdGggZGVmYXVsdCBmdW5jdGlvbnMgdG8gb3V0cHV0IHNwYWNlcyxcbiAgaW5kZW50YXRpb24sIGFuZCBuZXcgbGluZXMuICopXG5sZXQgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoID1cbiAgbGV0IHBwZiA9IHBwX21ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCBpZ25vcmUgaWdub3JlIGlnbm9yZSBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIHBwZlxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtTdGRsaWIub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2VfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd3JpdGluZyB0byBhIGdpdmVuIFtCdWZmZXIudF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBiID1cbiAgbWFrZV9mb3JtYXR0ZXIgKEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGIpIGlnbm9yZVxuXG5cbigqIEFsbG9jYXRpbmcgYnVmZmVyIGZvciBwcmV0dHktcHJpbnRpbmcgcHVycG9zZXMuXG4gICBEZWZhdWx0IGJ1ZmZlciBzaXplIGlzIHBwX2J1ZmZlcl9zaXplIG9yIDUxMi5cbiopXG5sZXQgcHBfYnVmZmVyX3NpemUgPSA1MTJcbmxldCBwcF9tYWtlX2J1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemVcblxuKCogVGhlIHN0YW5kYXJkIChzaGFyZWQpIGJ1ZmZlci4gKilcbmxldCBzdGRidWYgPSBwcF9tYWtlX2J1ZmZlciAoKVxuXG4oKiBQcmVkZWZpbmVkIGZvcm1hdHRlcnMgc3RhbmRhcmQgZm9ybWF0dGVyIHRvIHByaW50XG4gICB0byBbU3RkbGliLnN0ZG91dF0sIFtTdGRsaWIuc3RkZXJyXSwgYW5kIHshc3RkYnVmfS4gKilcbmxldCBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRvdXRcbmFuZCBlcnJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsIFN0ZGxpYi5zdGRlcnJcbmFuZCBzdHJfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX2J1ZmZlciBzdGRidWZcblxuKCogSW5pdGlhbGlzZSBkb21haW4gbG9jYWwgc3RhdGUgKilcbm1vZHVsZSBETFMgPSBEb21haW4uRExTXG5cbmxldCBzdGRidWZfa2V5ID0gRExTLm5ld19rZXkgcHBfbWFrZV9idWZmZXJcbmxldCBfID0gRExTLnNldCBzdGRidWZfa2V5IHN0ZGJ1ZlxuXG5sZXQgc3RyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGZvcm1hdHRlcl9vZl9idWZmZXIgKERMUy5nZXQgc3RkYnVmX2tleSkpXG5sZXQgXyA9IERMUy5zZXQgc3RyX2Zvcm1hdHRlcl9rZXkgc3RyX2Zvcm1hdHRlclxuXG5sZXQgYnVmZmVyZWRfb3V0X3N0cmluZyBrZXkgc3RyIG9mcyBsZW4gPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyAoRG9tYWluLkRMUy5nZXQga2V5KSBzdHIgb2ZzIGxlblxuXG5sZXQgYnVmZmVyZWRfb3V0X2ZsdXNoIG9jIGtleSAoKSA9XG4gIGxldCBidWYgPSBEb21haW4uRExTLmdldCBrZXkgaW5cbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGxldCBzdHIgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIG91dHB1dF9zdWJzdHJpbmcgb2Mgc3RyIDAgbGVuIDtcbiAgU3RkbGliLmZsdXNoIG9jO1xuICBCdWZmZXIuY2xlYXIgYnVmXG5cbmxldCBzdGRfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5sZXQgZXJyX2J1Zl9rZXkgPSBEb21haW4uRExTLm5ld19rZXkgKGZ1biAoKSAtPiBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplKVxuXG5sZXQgc3RkX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgc3RkX2Zvcm1hdHRlcl9rZXkgc3RkX2Zvcm1hdHRlclxuXG5sZXQgZXJyX2Zvcm1hdHRlcl9rZXkgPSBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gIGxldCBwcGYgPVxuICAgIHBwX21ha2VfZm9ybWF0dGVyIChidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5KVxuICAgICAgKGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5KSBpZ25vcmUgaWdub3JlIGlnbm9yZVxuICBpblxuICBwcGYucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHBwZjtcbiAgcHBmLnBwX291dF9zcGFjZXMgPC0gZGlzcGxheV9ibGFua3MgcHBmO1xuICBwcGYucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBwcGY7XG4gIERvbWFpbi5hdF9leGl0IChwcF9wcmludF9mbHVzaCBwcGYpO1xuICBwcGYpXG5sZXQgXyA9IERMUy5zZXQgZXJyX2Zvcm1hdHRlcl9rZXkgZXJyX2Zvcm1hdHRlclxuXG5sZXQgZ2V0X3N0ZF9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X2Vycl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0cl9mb3JtYXR0ZXIgKCkgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5XG5sZXQgZ2V0X3N0ZGJ1ZiAoKSA9IERMUy5nZXQgc3RkYnVmX2tleVxuXG4oKiBbZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmXSBmbHVzaGVzIGZvcm1hdHRlciBbcHBmXSxcbiAgIHRoZW4gcmV0dXJucyB0aGUgY29udGVudHMgb2YgYnVmZmVyIFtidWZdIHRoYXQgaXMgcmVzZXQuXG4gICBGb3JtYXR0ZXIgW3BwZl0gaXMgc3VwcG9zZWQgdG8gcHJpbnQgdG8gYnVmZmVyIFtidWZdLCBvdGhlcndpc2UgdGhpc1xuICAgZnVuY3Rpb24gaXMgbm90IHJlYWxseSB1c2VmdWwuICopXG5sZXQgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBidWYgcHBmID1cbiAgcHBfZmx1c2hfcXVldWUgcHBmIH5lbmRfd2l0aF9uZXdsaW5lOmZhbHNlO1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgc1xuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9XG4gIGxldCBzdGRidWYgPSBETFMuZ2V0IHN0ZGJ1Zl9rZXkgaW5cbiAgbGV0IHN0cl9mb3JtYXR0ZXIgPSBETFMuZ2V0IHN0cl9mb3JtYXR0ZXJfa2V5IGluXG4gIGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxubGV0IG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBETFMubmV3X2tleSAoZnVuICgpIC0+XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgb3V0cHV0JyA9IEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBpblxuICAgIGxldCBmbHVzaCcgKCkgPVxuICAgICAgb3V0cHV0IChCdWZmZXIuY29udGVudHMgYnVmKSAwIChCdWZmZXIubGVuZ3RoIGJ1Zik7XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgZmx1c2ggKClcbiAgICBpblxuICAgIG1ha2VfZm9ybWF0dGVyIG91dHB1dCcgZmx1c2gnKVxuXG5sZXQgc3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyA9XG4gIG1ha2Vfc3luY2hyb25pemVkX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94IHYgPSBwcF9vcGVuX2hib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX3Zib3ggdiA9IHBwX29wZW5fdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faHZib3ggdiA9IHBwX29wZW5faHZib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2hvdmJveCB2ID0gcHBfb3Blbl9ob3Zib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvcGVuX2JveCB2ID0gcHBfb3Blbl9ib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9ib3ggdiA9IHBwX2Nsb3NlX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fc3RhZyB2ID0gcHBfb3Blbl9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2Vfc3RhZyB2ID0gcHBfY2xvc2Vfc3RhZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2FzIHYgdyA9IHBwX3ByaW50X2FzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9zdHJpbmcgdiA9IHBwX3ByaW50X3N0cmluZyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2J5dGVzIHYgPSBwcF9wcmludF9ieXRlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2ludCB2ID0gcHBfcHJpbnRfaW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfZmxvYXQgdiA9IHBwX3ByaW50X2Zsb2F0IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfY2hhciB2ID0gcHBfcHJpbnRfY2hhciAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2Jvb2wgdiA9IHBwX3ByaW50X2Jvb2wgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9icmVhayB2IHcgPSBwcF9wcmludF9icmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgcHJpbnRfY3V0IHYgPSBwcF9wcmludF9jdXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9zcGFjZSB2ID0gcHBfcHJpbnRfc3BhY2UgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBmb3JjZV9uZXdsaW5lIHYgPSBwcF9mb3JjZV9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfZmx1c2ggdiA9IHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfbmV3bGluZSB2ID0gcHBfcHJpbnRfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2lmX25ld2xpbmUgdiA9IHBwX3ByaW50X2lmX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIG9wZW5fdGJveCB2ID0gcHBfb3Blbl90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgY2xvc2VfdGJveCB2ID0gcHBfY2xvc2VfdGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3RicmVhayB2IHcgPSBwcF9wcmludF90YnJlYWsgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuXG5hbmQgc2V0X3RhYiB2ID0gcHBfc2V0X3RhYiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3RhYiB2ID0gcHBfcHJpbnRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWFyZ2luIHYgPSBwcF9zZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21hcmdpbiB2ID0gcHBfZ2V0X21hcmdpbiAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9pbmRlbnQgdiA9IHBwX3NldF9tYXhfaW5kZW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X21heF9pbmRlbnQgdiA9IHBwX2dldF9tYXhfaW5kZW50IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgfm1heF9pbmRlbnQgfm1hcmdpblxuYW5kIHNhZmVfc2V0X2dlb21ldHJ5IH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBwcF9zYWZlX3NldF9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgfm1heF9pbmRlbnQgfm1hcmdpblxuYW5kIGdldF9nZW9tZXRyeSB2ID0gcHBfZ2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgdXBkYXRlX2dlb21ldHJ5IHYgPSBwcF91cGRhdGVfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXhfYm94ZXMgdiA9IHBwX3NldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2JveGVzIHYgPSBwcF9nZXRfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Zlcl9tYXhfYm94ZXMgdiA9IHBwX292ZXJfbWF4X2JveGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZWxsaXBzaXNfdGV4dCB2ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZWxsaXBzaXNfdGV4dCB2ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyB2IHcgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyB2ID1cbiAgcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF9wcmludF90YWdzIHYgPVxuICBwcF9zZXRfcHJpbnRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9wcmludF90YWdzIHYgPVxuICBwcF9nZXRfcHJpbnRfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHNldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX3NldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFya190YWdzIHYgPVxuICBwcF9nZXRfbWFya190YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3RhZ3MgdiA9XG4gIHBwX3NldF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cblxuKCogQ29udmVuaWVuY2UgZnVuY3Rpb25zICopXG5cbmxldCBwcF9wcmludF9pdGVyID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBpdGVyIHBwX3YgcHBmIHYgPVxuICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICBsZXQgcHBfdiB2ID1cbiAgICBpZiAhaXNfZmlyc3QgdGhlbiBpc19maXJzdCA6PSBmYWxzZSBlbHNlIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfdiBwcGYgdlxuICBpblxuICBpdGVyIHBwX3YgdlxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcHBfcHJpbnRfbGlzdCA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgdiA9XG4gIHBwX3ByaW50X2l0ZXIgfnBwX3NlcCBMaXN0Lml0ZXIgcHBfdiBwcGYgdlxuXG4oKiBUbyBmb3JtYXQgYW4gYXJyYXkgKilcbmxldCBwcF9wcmludF9hcnJheSA/KHBwX3NlcCA9IHBwX3ByaW50X2N1dCkgcHBfdiBwcGYgdiA9XG4gIHBwX3ByaW50X2l0ZXIgfnBwX3NlcCBBcnJheS5pdGVyIHBwX3YgcHBmIHZcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIHBwX3ByaW50X2l0ZXIgfnBwX3NlcCBTZXEuaXRlciBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3N0YWcgcHBmICgpXG4gIHwgQnJlYWsgKF8sIHdpZHRoLCBvZmZzZXQpICAtPiBwcF9wcmludF9icmVhayBwcGYgd2lkdGggb2Zmc2V0XG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9mbHVzaCBwcGYgKClcbiAgfCBGb3JjZV9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX2ZvcmNlX25ld2xpbmUgcHBmICgpXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9wcmludF9uZXdsaW5lIHBwZiAoKVxuICB8IE1hZ2ljX3NpemUgKF8sIF8pICAgICAgICAgLT4gKClcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJ1xuICB8IEVzY2FwZWRfcGVyY2VudCAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJyUnXG4gIHwgU2Nhbl9pbmRpYyBjICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCc7IHBwX3ByaW50X2NoYXIgcHBmIGNcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhbiBvdXRwdXRfc3RyZWFtLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLm91dHB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgb3V0cHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgZiBwcGY7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gb3V0cHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gUHJpbnRmLmJ1ZnB1dF9hY2MgYnkgdGhlIGludGVycHJldGF0aW9uIG9mIGZvcm1hdHRpbmcuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBwcGYgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgYykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoU3RyaW5nLm1ha2UgMSBjKTtcbiAgfCBBY2NfZGVsYXkgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChmICgpKTtcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGY7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX29wZW5fc3RhZyBwcGYgKFN0cmluZ190YWcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykpXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl9ib3ggYWNjJykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIGxldCAoaW5kZW50LCBidHkpID0gb3Blbl9ib3hfb2Zfc3RyaW5nIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpIGluXG4gICAgcHBfb3Blbl9ib3hfZ2VuIHBwZiBpbmRlbnQgYnR5XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfY2hhciBwcGYgYztcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiAoZiAoKSk7XG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgfCBBY2NfaW52YWxpZF9hcmcgKHAsIG1zZykgLT4gc3RycHV0X2FjYyBwcGYgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKlxuXG4gIERlZmluaW5nIFtmcHJpbnRmXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtmcHJpbnRmXS5cblxuKilcblxubGV0IGtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIHBwZiBhY2M7IGsgcHBmKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmFuZCBpa2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBwcGYgZm10XG5cbmxldCBpZnByaW50ZiBfcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGlnbm9yZSAoKSBmbXRcblxubGV0IGZwcmludGYgcHBmID0ga2ZwcmludGYgaWdub3JlIHBwZlxuXG5sZXQgcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGVwcmludGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgKERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXkpIGFjYylcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQga2RwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gayAoZnVuIHBwZiAtPiBvdXRwdXRfYWNjIHBwZiBhY2MpKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBkcHJpbnRmIGZtdCA9IGtkcHJpbnRmIChmdW4gaSAtPiBpKSBmbXRcblxubGV0IGtzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBzdHJwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIGlkIGZtdFxuXG5sZXQga2FzcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBsZXQgYiA9IHBwX21ha2VfYnVmZmVyICgpIGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID1cbiAgICBvdXRwdXRfYWNjIHBwZiBhY2M7XG4gICAgayAoZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBiIHBwZikgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbmxldCBhc3ByaW50ZiBmbXQgPSBrYXNwcmludGYgaWQgZm10XG5cbigqIEZsdXNoaW5nIHN0YW5kYXJkIGZvcm1hdHRlcnMgYXQgZW5kIG9mIGV4ZWN1dGlvbi4gKilcblxubGV0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCkgPVxuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgKCk7XG4gIHBwX3ByaW50X2ZsdXNoIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxubGV0ICgpID0gRG9tYWluLmJlZm9yZV9maXJzdF9zcGF3biAoZnVuICgpIC0+XG4gIGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnMgKCk7XG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXl9O1xuXG4gIGxldCBmcyA9IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyICgpIGluXG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBlcnJfZm9ybWF0dGVyXG4gICAge2ZzIHdpdGggb3V0X3N0cmluZyA9IGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXk7XG4gICAgICAgICAgICAgb3V0X2ZsdXNoID0gYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXl9O1xuKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogYWxpYXMgdG8gYXZvaWQgd2FybmluZyBmb3IgYW1iaWd1aXR5IGJldHdlZW5cbiAgIFN0ZGxpYi5mb3JtYXQ2XG4gICBhbmQgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcblxuICAgKHRoZSBmb3JtZXIgaXMgaW4gZmFjdCBhbiBhbGlhcyBmb3IgdGhlIGxhdHRlcixcbiAgICBidXQgdGhlIGFtYmlndWl0eSB3YXJuaW5nIGRvZXNuJ3QgY2FyZSlcbiopXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIFN0ZGxpYi5mb3JtYXQ2XG5cblxuKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5uZXJzLiAqKVxuXG4oKiBTY2FubmluZyBidWZmZXJzLiAqKVxubW9kdWxlIHR5cGUgU0NBTk5JTkcgPSBzaWdcblxuICB0eXBlIGluX2NoYW5uZWxcblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB2YWwgc3RkaW4gOiBpbl9jaGFubmVsXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLiAqKVxuXG4gIHZhbCBuZXh0X2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLm5leHRfY2hhciBpYl0gYWR2YW5jZSB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyLlxuICAgICBJZiBubyBtb3JlIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJdIG1hcmsgdGhlIGN1cnJlbnRfY2hhciBhcyBhbHJlYWR5XG4gICAgIHNjYW5uZWQuICopXG5cbiAgdmFsIHBlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcucGVla19jaGFyIGliXSByZXR1cm5zIHRoZSBjdXJyZW50IGNoYXIgYXZhaWxhYmxlIGluXG4gICAgIHRoZSBidWZmZXIgb3IgcmVhZHMgb25lIGlmIG5lY2Vzc2FyeSAod2hlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXNcbiAgICAgYWxyZWFkeSBzY2FubmVkKS5cbiAgICAgSWYgbm8gY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGFuIGVuZCBvZiBmaWxlIGNvbmRpdGlvbiBhbmRcbiAgICAgcmV0dXJucyAnXFwwMDAnLiAqKVxuXG4gIHZhbCBjaGVja2VkX3BlZWtfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBTYW1lIGFzIFtTY2FubmluZy5wZWVrX2NoYXJdIGFib3ZlIGJ1dCBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGNoYXIgb3JcbiAgICAgZmFpbHM6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgbnVsbCBjaGFyIHdoZW4gdGhlIHJlYWRpbmcgbWV0aG9kIG9mIHRoZVxuICAgICBpbnB1dCBidWZmZXIgaGFzIHJlYWNoZWQgYW4gZW5kIG9mIGZpbGUsIHRoZSBmdW5jdGlvbiByYWlzZXMgZXhjZXB0aW9uXG4gICAgIFtFbmRfb2ZfZmlsZV0uICopXG5cbiAgdmFsIHN0b3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBjaGFyIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc3RvcmVfY2hhciBsaW0gaWIgY10gYWRkcyBbY10gdG8gdGhlIHRva2VuIGJ1ZmZlclxuICAgICBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyIFtpYl0uIEl0IGFsc28gYWR2YW5jZXMgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3RlciBhbmQgcmV0dXJucyBbbGltIC0gMV0sIGluZGljYXRpbmcgdGhlIG5ldyBsaW1pdCBmb3IgdGhlXG4gICAgIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0b2tlbi4gKilcblxuICB2YWwgc2tpcF9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5za2lwX2NoYXIgbGltIGliXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gKilcblxuICB2YWwgaWdub3JlX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmlnbm9yZV9jaGFyIGliIGxpbV0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kXG4gICAgIGRlY3JlbWVudHMgdGhlIGxpbWl0LiAqKVxuXG4gIHZhbCB0b2tlbiA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy50b2tlbiBpYl0gcmV0dXJucyB0aGUgc3RyaW5nIHN0b3JlZCBpbnRvIHRoZSB0b2tlblxuICAgICBidWZmZXIgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlcjogaXQgcmV0dXJucyB0aGUgdG9rZW4gbWF0Y2hlZCBieSB0aGVcbiAgICAgZm9ybWF0LiAqKVxuXG4gIHZhbCByZXNldF90b2tlbiA6IHNjYW5idWYgLT4gdW5pdFxuICAoKiBbU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWJdIHJlc2V0cyB0aGUgdG9rZW4gYnVmZmVyIG9mXG4gICAgIHRoZSBnaXZlbiBzY2FubmluZyBidWZmZXIuICopXG5cbiAgdmFsIGNoYXJfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuY2hhcl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnNcbiAgICAgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBsaW5lX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmxpbmVfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBuZXcgbGluZVxuICAgICBjaGFyYWN0ZXJzIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgdG9rZW5fY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcudG9rZW5fY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiB0b2tlbnMgcmVhZFxuICAgICBzbyBmYXIgZnJvbSBbaWJdLiAqKVxuXG4gIHZhbCBlb2YgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVvZiBpYl0gcmV0dXJucyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBlbmRfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlciAoaWYgbm8gY2hhciBoYXMgZXZlciBiZWVuIHJlYWQsIGFuIGF0dGVtcHQgdG9cbiAgICAgcmVhZCBvbmUgaXMgcGVyZm9ybWVkKS4gKilcblxuICB2YWwgYmVnaW5uaW5nX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5iZWdpbm5pbmdfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBiZWdpbm5pbmcgb2YgaW5wdXRcbiAgICAgY29uZGl0aW9uIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIG5hbWVfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcubmFtZV9vZl9pbnB1dCBpYl0gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY2hhcmFjdGVyXG4gICAgIHNvdXJjZSBmb3IgaW5wdXQgYnVmZmVyIFtpYl0uICopXG5cbiAgdmFsIG9wZW5faW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgb3Blbl9pbl9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZV9iaW4gOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9mdW5jdGlvbiA6ICh1bml0IC0+IGNoYXIpIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcblxuICB2YWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXRcblxuZW5kXG5cblxubW9kdWxlIFNjYW5uaW5nIDogU0NBTk5JTkcgPSBzdHJ1Y3RcblxuICAoKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2NhbmYuICopXG5cbiAgdHlwZSBmaWxlX25hbWUgPSBzdHJpbmdcblxuICB0eXBlIGluX2NoYW5uZWxfbmFtZSA9XG4gICAgfCBGcm9tX2NoYW5uZWwgb2YgU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZmlsZSBvZiBmaWxlX25hbWUgKiBTdGRsaWIuaW5fY2hhbm5lbFxuICAgIHwgRnJvbV9mdW5jdGlvblxuICAgIHwgRnJvbV9zdHJpbmdcblxuXG4gIHR5cGUgaW5fY2hhbm5lbCA9IHtcbiAgICBtdXRhYmxlIGljX2VvZiA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jdXJyZW50X2NoYXIgOiBjaGFyO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDogYm9vbDtcbiAgICBtdXRhYmxlIGljX2NoYXJfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBpY19saW5lX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfdG9rZW5fY291bnQgOiBpbnQ7XG4gICAgaWNfZ2V0X25leHRfY2hhciA6IHVuaXQgLT4gY2hhcjtcbiAgICBpY190b2tlbl9idWZmZXIgOiBCdWZmZXIudDtcbiAgICBpY19pbnB1dF9uYW1lIDogaW5fY2hhbm5lbF9uYW1lO1xuICB9XG5cblxuICB0eXBlIHNjYW5idWYgPSBpbl9jaGFubmVsXG5cbiAgbGV0IG51bGxfY2hhciA9ICdcXDAwMCdcblxuICAoKiBSZWFkcyBhIG5ldyBjaGFyYWN0ZXIgZnJvbSBpbnB1dCBidWZmZXIuXG4gICAgIE5leHRfY2hhciBuZXZlciBmYWlscywgZXZlbiBpbiBjYXNlIG9mIGVuZCBvZiBpbnB1dDpcbiAgICAgaXQgdGhlbiBzaW1wbHkgc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uLiAqKVxuICBsZXQgbmV4dF9jaGFyIGliID1cbiAgICB0cnlcbiAgICAgIGxldCBjID0gaWIuaWNfZ2V0X25leHRfY2hhciAoKSBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gdHJ1ZTtcbiAgICAgIGliLmljX2NoYXJfY291bnQgPC0gc3VjYyBpYi5pY19jaGFyX2NvdW50O1xuICAgICAgaWYgYyA9ICdcXG4nIHRoZW4gaWIuaWNfbGluZV9jb3VudCA8LSBzdWNjIGliLmljX2xpbmVfY291bnQ7XG4gICAgICBjIHdpdGhcbiAgICB8IEVuZF9vZl9maWxlIC0+XG4gICAgICBsZXQgYyA9IG51bGxfY2hhciBpblxuICAgICAgaWIuaWNfY3VycmVudF9jaGFyIDwtIGM7XG4gICAgICBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWQgPC0gZmFsc2U7XG4gICAgICBpYi5pY19lb2YgPC0gdHJ1ZTtcbiAgICAgIGNcblxuXG4gIGxldCBwZWVrX2NoYXIgaWIgPVxuICAgIGlmIGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZFxuICAgIHRoZW4gaWIuaWNfY3VycmVudF9jaGFyXG4gICAgZWxzZSBuZXh0X2NoYXIgaWJcblxuXG4gICgqIFJldHVybnMgYSB2YWxpZCBjdXJyZW50IGNoYXIgZm9yIHRoZSBpbnB1dCBidWZmZXIuIEluIHBhcnRpY3VsYXJcbiAgICAgbm8gaXJyZWxldmFudCBudWxsIGNoYXJhY3RlciAoYXMgc2V0IGJ5IFtuZXh0X2NoYXJdIGluIGNhc2Ugb2YgZW5kXG4gICAgIG9mIGlucHV0KSBpcyByZXR1cm5lZCwgc2luY2UgW0VuZF9vZl9maWxlXSBpcyByYWlzZWQgd2hlblxuICAgICBbbmV4dF9jaGFyXSBzZXRzIHRoZSBlbmQgb2YgZmlsZSBjb25kaXRpb24gd2hpbGUgdHJ5aW5nIHRvIHJlYWQgYVxuICAgICBuZXcgY2hhcmFjdGVyLiAqKVxuICBsZXQgY2hlY2tlZF9wZWVrX2NoYXIgaWIgPVxuICAgIGxldCBjID0gcGVla19jaGFyIGliIGluXG4gICAgaWYgaWIuaWNfZW9mIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICAgY1xuXG5cbiAgbGV0IGVuZF9vZl9pbnB1dCBpYiA9XG4gICAgaWdub3JlIChwZWVrX2NoYXIgaWIpO1xuICAgIGliLmljX2VvZlxuXG5cbiAgbGV0IGVvZiBpYiA9IGliLmljX2VvZlxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfaW5wdXQgaWIgPSBpYi5pY19jaGFyX2NvdW50ID0gMFxuXG4gIGxldCBuYW1lX29mX2lucHV0IGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBfaWMgLT4gXCJ1bm5hbWVkIFN0ZGxpYiBpbnB1dCBjaGFubmVsXCJcbiAgICB8IEZyb21fZmlsZSAoZm5hbWUsIF9pYykgLT4gZm5hbWVcbiAgICB8IEZyb21fZnVuY3Rpb24gLT4gXCJ1bm5hbWVkIGZ1bmN0aW9uXCJcbiAgICB8IEZyb21fc3RyaW5nIC0+IFwidW5uYW1lZCBjaGFyYWN0ZXIgc3RyaW5nXCJcblxuXG4gIGxldCBjaGFyX2NvdW50IGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2NoYXJfY291bnQgLSAxXG4gICAgZWxzZSBpYi5pY19jaGFyX2NvdW50XG5cblxuICBsZXQgbGluZV9jb3VudCBpYiA9IGliLmljX2xpbmVfY291bnRcblxuICBsZXQgcmVzZXRfdG9rZW4gaWIgPSBCdWZmZXIucmVzZXQgaWIuaWNfdG9rZW5fYnVmZmVyXG5cbiAgbGV0IGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliID0gaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgbGV0IHRva2VuIGliID1cbiAgICBsZXQgdG9rZW5fYnVmZmVyID0gaWIuaWNfdG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHRvayA9IEJ1ZmZlci5jb250ZW50cyB0b2tlbl9idWZmZXIgaW5cbiAgICBCdWZmZXIuY2xlYXIgdG9rZW5fYnVmZmVyO1xuICAgIGliLmljX3Rva2VuX2NvdW50IDwtIHN1Y2MgaWIuaWNfdG9rZW5fY291bnQ7XG4gICAgdG9rXG5cblxuICBsZXQgdG9rZW5fY291bnQgaWIgPSBpYi5pY190b2tlbl9jb3VudFxuXG4gIGxldCBza2lwX2NoYXIgd2lkdGggaWIgPVxuICAgIGludmFsaWRhdGVfY3VycmVudF9jaGFyIGliO1xuICAgIHdpZHRoXG5cblxuICBsZXQgaWdub3JlX2NoYXIgd2lkdGggaWIgPSBza2lwX2NoYXIgKHdpZHRoIC0gMSkgaWJcblxuICBsZXQgc3RvcmVfY2hhciB3aWR0aCBpYiBjID1cbiAgICBCdWZmZXIuYWRkX2NoYXIgaWIuaWNfdG9rZW5fYnVmZmVyIGM7XG4gICAgaWdub3JlX2NoYXIgd2lkdGggaWJcblxuXG4gIGxldCBkZWZhdWx0X3Rva2VuX2J1ZmZlcl9zaXplID0gMTAyNFxuXG4gIGxldCBjcmVhdGUgaW5hbWUgbmV4dCA9IHtcbiAgICBpY19lb2YgPSBmYWxzZTtcbiAgICBpY19jdXJyZW50X2NoYXIgPSBudWxsX2NoYXI7XG4gICAgaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkID0gZmFsc2U7XG4gICAgaWNfY2hhcl9jb3VudCA9IDA7XG4gICAgaWNfbGluZV9jb3VudCA9IDA7XG4gICAgaWNfdG9rZW5fY291bnQgPSAwO1xuICAgIGljX2dldF9uZXh0X2NoYXIgPSBuZXh0O1xuICAgIGljX3Rva2VuX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZTtcbiAgICBpY19pbnB1dF9uYW1lID0gaW5hbWU7XG4gIH1cblxuXG4gIGxldCBmcm9tX3N0cmluZyBzID1cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpID49IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2VcbiAgICAgIGxldCBjID0gcy5bIWldIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjIGluXG4gICAgY3JlYXRlIEZyb21fc3RyaW5nIG5leHRcblxuXG4gIGxldCBmcm9tX2Z1bmN0aW9uID0gY3JlYXRlIEZyb21fZnVuY3Rpb25cblxuICAoKiBTY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwuICopXG5cbiAgKCogUG9zaXRpb24gb2YgdGhlIHByb2JsZW06XG5cbiAgICAgV2UgY2Fubm90IHByZXZlbnQgdGhlIHNjYW5uaW5nIG1lY2hhbmlzbSB0byB1c2Ugb25lIGxvb2thaGVhZCBjaGFyYWN0ZXIsXG4gICAgIGlmIG5lZWRlZCBieSB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmljYXRpb25zIChlLmcuIGFcbiAgICAgdHJhaWxpbmcgJ3NraXAgc3BhY2UnIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm1hdCBzdHJpbmcpOyBpbiB0aGlzIGNhc2UsXG4gICAgIHRoZSBtYW5kYXRvcnkgbG9va2FoZWFkIGNoYXJhY3RlciBpcyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBpbnB1dCBhbmQgbm90XG4gICAgIHVzZWQgdG8gcmV0dXJuIHRoZSB0b2tlbiByZWFkLiBJdCBpcyB0aHVzIG1hbmRhdG9yeSB0byBiZSBhYmxlIHRvIHN0b3JlXG4gICAgIGFuIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIHNvbWV3aGVyZSB0byBnZXQgaXQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlclxuICAgICBvZiB0aGUgbmV4dCBzY2FuLlxuXG4gICAgIFRvIGNpcmN1bXZlbnQgdGhpcyBwcm9ibGVtLCBhbGwgdGhlIHNjYW5uaW5nIGZ1bmN0aW9ucyBnZXQgYSBsb3cgbGV2ZWxcbiAgICAgaW5wdXQgYnVmZmVyIGFyZ3VtZW50IHdoZXJlIHRoZXkgc3RvcmUgdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXIgd2hlblxuICAgICBuZWVkZWQ7IGFkZGl0aW9uYWxseSwgdGhlIGlucHV0IGJ1ZmZlciBpcyB0aGUgb25seSBzb3VyY2Ugb2YgY2hhcmFjdGVyIG9mXG4gICAgIGEgc2Nhbm5lci4gVGhlIFtzY2FuYnVmXSBpbnB1dCBidWZmZXJzIGFyZSBkZWZpbmVkIGluIG1vZHVsZSB7IVNjYW5uaW5nfS5cblxuICAgICBOb3cgd2UgdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGV4dHJlbWVseSBpbXBvcnRhbnQgdGhhdCByZWxhdGVkIGFuZFxuICAgICBzdWNjZXNzaXZlIGNhbGxzIHRvIHNjYW5uZXJzIGluZGVlZCByZWFkIGZyb20gdGhlIHNhbWUgaW5wdXQgYnVmZmVyLlxuICAgICBJbiBlZmZlY3QsIGlmIGEgc2Nhbm5lciBbc2NhbjFdIGlzIHJlYWRpbmcgZnJvbSBbaWIxXSBhbmQgc3RvcmVzIGFuXG4gICAgIHVudXNlZCBsb29rYWhlYWQgY2hhcmFjdGVyIFtjMV0gaW50byBpdHMgaW5wdXQgYnVmZmVyIFtpYjFdLCB0aGVuXG4gICAgIGFub3RoZXIgc2Nhbm5lciBbc2NhbjJdIG5vdCByZWFkaW5nIGZyb20gdGhlIHNhbWUgYnVmZmVyIFtpYjFdIHdpbGwgbWlzc1xuICAgICB0aGUgY2hhcmFjdGVyIFtjMV0sIHNlZW1pbmdseSB2YW5pc2hlZCBpbiB0aGUgYWlyIGZyb20gdGhlIHBvaW50IG9mIHZpZXdcbiAgICAgb2YgW3NjYW4yXS5cblxuICAgICBUaGlzIG1lY2hhbmlzbSB3b3JrcyBwZXJmZWN0bHkgdG8gcmVhZCBmcm9tIHN0cmluZ3MsIGZyb20gZmlsZXMsIGFuZCBmcm9tXG4gICAgIGZ1bmN0aW9ucywgc2luY2UgaW4gdGhvc2UgY2FzZXMsIGFsbG9jYXRpbmcgdHdvIGJ1ZmZlcnMgcmVhZGluZyBmcm9tIHRoZVxuICAgICBzYW1lIHNvdXJjZSBpcyB1bm5hdHVyYWwuXG5cbiAgICAgU3RpbGwsIHRoZXJlIGlzIGEgZGlmZmljdWx0eSBpbiB0aGUgY2FzZSBvZiBzY2FubmluZyBmcm9tIGFuIGlucHV0XG4gICAgIGNoYW5uZWwuIEluIGVmZmVjdCwgd2hlbiBzY2FubmluZyBmcm9tIGFuIGlucHV0IGNoYW5uZWwgW2ljXSwgdGhpcyBjaGFubmVsXG4gICAgIG1heSBub3QgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHdpdGhpbiB0aGlzIGxpYnJhcnkuIEhlbmNlLCBpdCBtYXkgYmVcbiAgICAgc2hhcmVkICh0d28gZnVuY3Rpb25zIG9mIHRoZSB1c2VyJ3MgcHJvZ3JhbSBtYXkgc3VjY2Vzc2l2ZWx5IHJlYWQgZnJvbVxuICAgICBbaWNdKS4gVGhpcyBpcyBoaWdobHkgZXJyb3IgcHJvbmUgc2luY2UsIG9uZSBvZiB0aGUgZnVuY3Rpb24gbWF5IHNlZWsgdGhlXG4gICAgIGlucHV0IGNoYW5uZWwsIHdoaWxlIHRoZSBvdGhlciBmdW5jdGlvbiBoYXMgc3RpbGwgYW4gdW51c2VkIGxvb2thaGVhZFxuICAgICBjaGFyYWN0ZXIgaW4gaXRzIGlucHV0IGJ1ZmZlci4gSW4gY29uY2x1c2lvbiwgeW91IHNob3VsZCBuZXZlciBtaXggZGlyZWN0XG4gICAgIGxvdyBsZXZlbCByZWFkaW5nIGFuZCBoaWdoIGxldmVsIHNjYW5uaW5nIGZyb20gdGhlIHNhbWUgaW5wdXQgY2hhbm5lbC5cblxuICAqKVxuXG4gICgqIFBlcmZvcm0gYnVmZmVyaXplZCBpbnB1dCB0byBpbXByb3ZlIGVmZmljaWVuY3kuICopXG4gIGxldCBmaWxlX2J1ZmZlcl9zaXplID0gcmVmIDEwMjRcblxuICAoKiBUaGUgc2Nhbm5lciBjbG9zZXMgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0LiAqKVxuICBsZXQgc2Nhbl9jbG9zZV9hdF9lbmQgaWMgPSBTdGRsaWIuY2xvc2VfaW4gaWM7IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgKCogVGhlIHNjYW5uZXIgZG9lcyBub3QgY2xvc2UgdGhlIGlucHV0IGNoYW5uZWwgYXQgZW5kIG9mIGlucHV0OlxuICAgICBpdCBqdXN0IHJhaXNlcyBbRW5kX29mX2ZpbGVdLiAqKVxuICBsZXQgc2Nhbl9yYWlzZV9hdF9lbmQgX2ljID0gcmFpc2UgRW5kX29mX2ZpbGVcblxuICBsZXQgZnJvbV9pYyBzY2FuX2Nsb3NlX2ljIGluYW1lIGljID1cbiAgICBsZXQgbGVuID0gIWZpbGVfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbGltID0gcmVmIDAgaW5cbiAgICBsZXQgZW9mID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWkgPCAhbGltIHRoZW4gYmVnaW4gbGV0IGMgPSBCeXRlcy5nZXQgYnVmICFpIGluIGluY3IgaTsgYyBlbmQgZWxzZVxuICAgICAgaWYgIWVvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlIGVsc2UgYmVnaW5cbiAgICAgICAgbGltIDo9IGlucHV0IGljIGJ1ZiAwIGxlbjtcbiAgICAgICAgaWYgIWxpbSA9IDAgdGhlbiBiZWdpbiBlb2YgOj0gdHJ1ZTsgc2Nhbl9jbG9zZV9pYyBpYyBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgIGkgOj0gMTtcbiAgICAgICAgICBCeXRlcy5nZXQgYnVmIDBcbiAgICAgICAgZW5kXG4gICAgICBlbmQgaW5cbiAgICBjcmVhdGUgaW5hbWUgbmV4dFxuXG5cbiAgbGV0IGZyb21faWNfY2xvc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX2Nsb3NlX2F0X2VuZFxuICBsZXQgZnJvbV9pY19yYWlzZV9hdF9lbmQgPSBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG5cbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIE9uZSBjb3VsZCB0cnkgdG8gZGVmaW5lIFtzdGRpbl0gYXMgYSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBhIGNoYXJhY3RlclxuICAgICBhdCBhIHRpbWUgKG5vIGJ1ZmZlcml6YXRpb24gYXQgYWxsKSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlIHRvcC1sZXZlbFxuICAgICBpbnRlcmFjdGlvbiB3b3VsZCBiZSB3cm9uZy4gVGhpcyBpcyBkdWUgdG8gc29tZSBraW5kIG9mXG4gICAgICdyYWNlIGNvbmRpdGlvbicgd2hlbiByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0sXG4gICAgIHNpbmNlIHRoZSBpbnRlcmFjdGl2ZSBjb21waWxlciBhbmQgW1NjYW5mLnNjYW5mXSB3aWxsIHNpbXVsdGFuZW91c2x5XG4gICAgIHJlYWQgdGhlIG1hdGVyaWFsIHRoZXkgbmVlZCBmcm9tIFtTdGRsaWIuc3RkaW5dOyB0aGVuLCBjb25mdXNpb25cbiAgICAgd2lsbCByZXN1bHQgZnJvbSB3aGF0IHNob3VsZCBiZSByZWFkIGJ5IHRoZSB0b3AtbGV2ZWwgYW5kIHdoYXQgc2hvdWxkIGJlXG4gICAgIHJlYWQgYnkgW1NjYW5mLnNjYW5mXS5cbiAgICAgVGhpcyBpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgYnkgdGhlIG9uZSBjaGFyYWN0ZXIgbG9va2FoZWFkIHRoYXRcbiAgICAgW1NjYW5mLnNjYW5mXSBpcyBzb21ldGltZXMgb2JsaWdlZCB0byBtYWludGFpbjogdGhlIGxvb2thaGVhZCBjaGFyYWN0ZXJcbiAgICAgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IFtTY2FuZi5zY2FuZl0gZW50cnksIHNlZW1pbmdseSBjb21pbmcgZnJvbVxuICAgICBub3doZXJlLlxuICAgICBBbHNvIG5vIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW4gcmVhZGluZyBmcm9tIHN0ZGluOiBpZiBub3QgZW5vdWdoXG4gICAgIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHJlYWQsIHdlIHNpbXBseSBhc2sgdG8gcmVhZCBtb3JlLiAqKVxuICBsZXQgc3RkaW4gPVxuICAgIGZyb21faWMgc2Nhbl9yYWlzZV9hdF9lbmRcbiAgICAgIChGcm9tX2ZpbGUgKFwiLVwiLCBTdGRsaWIuc3RkaW4pKSBTdGRsaWIuc3RkaW5cblxuICBsZXQgb3Blbl9pbl9maWxlIG9wZW5faW4gZm5hbWUgPVxuICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICB8IFwiLVwiIC0+IHN0ZGluXG4gICAgfCBmbmFtZSAtPlxuICAgICAgbGV0IGljID0gb3Blbl9pbiBmbmFtZSBpblxuICAgICAgZnJvbV9pY19jbG9zZV9hdF9lbmQgKEZyb21fZmlsZSAoZm5hbWUsIGljKSkgaWNcblxuXG4gIGxldCBvcGVuX2luID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luXG4gIGxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9maWxlID0gb3Blbl9pblxuICBsZXQgZnJvbV9maWxlX2JpbiA9IG9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fY2hhbm5lbCBpYyA9XG4gICAgZnJvbV9pY19yYWlzZV9hdF9lbmQgKEZyb21fY2hhbm5lbCBpYykgaWNcblxuXG4gIGxldCBjbG9zZV9pbiBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgaWMgLT5cbiAgICAgIFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9maWxlIChfZm5hbWUsIGljKSAtPiBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZnVuY3Rpb24gfCBGcm9tX3N0cmluZyAtPiAoKVxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXJfb3B0ID1cbiAgICAgKCdhLCBTY2FubmluZy5pbl9jaGFubmVsLCAnYiwgJ2MsICdhIC0+ICdkIG9wdGlvbiwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuKCogUmVwb3J0aW5nIGVycm9ycy4gKilcbmV4Y2VwdGlvbiBTY2FuX2ZhaWx1cmUgb2Ygc3RyaW5nXG5cbmxldCBiYWRfaW5wdXQgcyA9IHJhaXNlIChTY2FuX2ZhaWx1cmUgcylcblxubGV0IGJhZF9pbnB1dF9lc2NhcGUgYyA9XG4gIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbGxlZ2FsIGVzY2FwZSBjaGFyYWN0ZXIgJUNcIiBjKVxuXG5cbmxldCBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgdGhlIHNwZWNpZmllZCBsZW5ndGggd2FzIHRvbyBzaG9ydCBmb3IgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICBwcmVtYXR1cmUgZW5kIG9mIGZpbGUgb2NjdXJyZWQgYmVmb3JlIGVuZCBvZiB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm8gZG90IG9yIGV4cG9uZW50IHBhcnQgZm91bmQgaW4gZmxvYXQgdG9rZW5cIlxuXG5cbmxldCBiYWRfaGV4X2Zsb2F0ICgpID1cbiAgYmFkX2lucHV0IFwibm90IGEgdmFsaWQgZmxvYXQgaW4gaGV4YWRlY2ltYWwgbm90YXRpb25cIlxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kgPVxuICBQcmludGYuc3ByaW50ZiBcImxvb2tpbmcgZm9yICVDLCBmb3VuZCAlQ1wiIGMgY2lcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoIGMgY2kgPVxuICBiYWRfaW5wdXQgKGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSlcblxuXG5sZXQgcmVjIHNraXBfd2hpdGVzIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW4gYmVnaW5cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPlxuICAgICAgU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IHNraXBfd2hpdGVzIGliXG4gICAgfCBfIC0+ICgpXG4gIGVuZFxuXG5cbigqIENoZWNraW5nIHRoYXQgW2NdIGlzIGluZGVlZCBpbiB0aGUgaW5wdXQsIHRoZW4gc2tpcHMgaXQuXG4gICBJbiB0aGlzIGNhc2UsIHRoZSBjaGFyYWN0ZXIgW2NdIGhhcyBiZWVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZVxuICAgZm9ybWF0IGFzIGJlaW5nIG1hbmRhdG9yeSBpbiB0aGUgaW5wdXQ7IGhlbmNlIHdlIHNob3VsZCBmYWlsIHdpdGhcbiAgIFtFbmRfb2ZfZmlsZV0gaW4gY2FzZSBvZiBlbmRfb2ZfaW5wdXQuXG4gICAoUmVtZW1iZXIgdGhhdCBbU2Nhbl9mYWlsdXJlXSBpcyByYWlzZWQgb25seSB3aGVuICh3ZSBjYW4gcHJvdmUgYnlcbiAgIGV2aWRlbmNlKSB0aGF0IHRoZSBpbnB1dCBkb2VzIG5vdCBtYXRjaCB0aGUgZm9ybWF0IHN0cmluZyBnaXZlbi4gV2UgbXVzdFxuICAgdGh1cyBkaWZmZXJlbnRpYXRlIFtFbmRfb2ZfZmlsZV0gYXMgYW4gZXJyb3IgZHVlIHRvIGxhY2sgb2YgaW5wdXQsIGFuZFxuICAgW1NjYW5fZmFpbHVyZV0gd2hpY2ggaXMgZHVlIHRvIHByb3ZhYmx5IHdyb25nIGlucHV0LiBJIGFtIG5vdCBzdXJlIHRoaXMgaXNcbiAgIHdvcnRoIHRoZSBidXJkZW46IGl0IGlzIGNvbXBsZXggYW5kIHNvbWVob3cgc3VibGltaW5hbDsgc2hvdWxkIGJlIGNsZWFyZXJcbiAgIHRvIGZhaWwgd2l0aCBTY2FuX2ZhaWx1cmUgXCJOb3QgZW5vdWdoIGlucHV0IHRvIGNvbXBsZXRlIHNjYW5uaW5nXCIhKVxuXG4gICBUaGF0J3Mgd2h5LCB3YWl0aW5nIGZvciBhIGJldHRlciBzb2x1dGlvbiwgd2UgdXNlIGNoZWNrZWRfcGVla19jaGFyIGhlcmUuXG4gICBXZSBhcmUgYWxzbyBjYXJlZnVsIHRvIHRyZWF0IFwiXFxyXFxuXCIgaW4gdGhlIGlucHV0IGFzIGFuIGVuZCBvZiBsaW5lIG1hcmtlcjpcbiAgIGl0IGFsd2F5cyBtYXRjaGVzIGEgJ1xcbicgc3BlY2lmaWNhdGlvbiBpbiB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZy4gKilcbmxldCByZWMgY2hlY2tfY2hhciBpYiBjID1cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJyAnIC0+IHNraXBfd2hpdGVzIGliXG4gIHwgJ1xcbicgLT4gY2hlY2tfbmV3bGluZSBpYlxuICB8IGMgLT4gY2hlY2tfdGhpc19jaGFyIGliIGNcblxuYW5kIGNoZWNrX3RoaXNfY2hhciBpYiBjID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgY2kgPSBjIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWIgZWxzZVxuICBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5hbmQgY2hlY2tfbmV3bGluZSBpYiA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGNpIHdpdGhcbiAgfCAnXFxuJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICB8ICdcXHInIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBjaGVja190aGlzX2NoYXIgaWIgJ1xcbidcbiAgfCBfIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxuJyBjaVxuXG5cbigqIEV4dHJhY3RpbmcgdG9rZW5zIGZyb20gdGhlIG91dHB1dCB0b2tlbiBidWZmZXIuICopXG5cbmxldCB0b2tlbl9jaGFyIGliID0gKFNjYW5uaW5nLnRva2VuIGliKS5bMF1cblxubGV0IHRva2VuX3N0cmluZyA9IFNjYW5uaW5nLnRva2VuXG5cbmxldCB0b2tlbl9ib29sIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcudG9rZW4gaWIgd2l0aFxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCBzIC0+IGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJpbnZhbGlkIGJvb2xlYW4gJyVzJ1wiIHMpXG5cblxuKCogVGhlIHR5cGUgb2YgaW50ZWdlciBjb252ZXJzaW9ucy4gKilcbnR5cGUgaW50ZWdlcl9jb252ZXJzaW9uID1cbiAgfCBCX2NvbnZlcnNpb24gKCogVW5zaWduZWQgYmluYXJ5IGNvbnZlcnNpb24gKilcbiAgfCBEX2NvbnZlcnNpb24gKCogU2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IElfY29udmVyc2lvbiAoKiBTaWduZWQgaW50ZWdlciBjb252ZXJzaW9uICopXG4gIHwgT19jb252ZXJzaW9uICgqIFVuc2lnbmVkIG9jdGFsIGNvbnZlcnNpb24gKilcbiAgfCBVX2NvbnZlcnNpb24gKCogVW5zaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgWF9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGhleGFkZWNpbWFsIGNvbnZlcnNpb24gKilcblxuXG5sZXQgaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgPSBmdW5jdGlvblxuICB8ICdiJyAtPiBCX2NvbnZlcnNpb25cbiAgfCAnZCcgLT4gRF9jb252ZXJzaW9uXG4gIHwgJ2knIC0+IElfY29udmVyc2lvblxuICB8ICdvJyAtPiBPX2NvbnZlcnNpb25cbiAgfCAndScgLT4gVV9jb252ZXJzaW9uXG4gIHwgJ3gnIHwgJ1gnIC0+IFhfY29udmVyc2lvblxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cblxuKCogRXh0cmFjdCBhbiBpbnRlZ2VyIGxpdGVyYWwgdG9rZW4uXG4gICBTaW5jZSB0aGUgZnVuY3Rpb25zIFN0ZGxpYi4qaW50Kl9vZl9zdHJpbmcgZG8gbm90IGFjY2VwdCBhIGxlYWRpbmcgKyxcbiAgIHdlIHNraXAgaXQgaWYgbmVjZXNzYXJ5LiAqKVxubGV0IHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIgPVxuICBsZXQgdG9rID1cbiAgICBtYXRjaCBjb252IHdpdGhcbiAgICB8IERfY29udmVyc2lvbiB8IElfY29udmVyc2lvbiAtPiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgVV9jb252ZXJzaW9uIC0+IFwiMHVcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBPX2NvbnZlcnNpb24gLT4gXCIwb1wiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFhfY29udmVyc2lvbiAtPiBcIjB4XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgQl9jb252ZXJzaW9uIC0+IFwiMGJcIiBeIFNjYW5uaW5nLnRva2VuIGliIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCB0b2sgaW5cbiAgaWYgbCA9IDAgfHwgdG9rLlswXSA8PiAnKycgdGhlbiB0b2sgZWxzZSBTdHJpbmcuc3ViIHRvayAxIChsIC0gMSlcblxuXG4oKiBBbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIgcmFpc2UgdGhlIGV4Y2VwdGlvblxuICAgRmFpbHVyZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS5cbiAgIFRoaXMgZXhjZXB0aW9uIGlzIHRoZW4gdHJhcHBlZCBpbiBba3NjYW5mXS4gKilcbmxldCB0b2tlbl9pbnQgY29udiBpYiA9IGludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbmxldCB0b2tlbl9mbG9hdCBpYiA9IGZsb2F0X29mX3N0cmluZyAoU2Nhbm5pbmcudG9rZW4gaWIpXG5cbigqIFRvIHNjYW4gbmF0aXZlIGludHMsIGludDMyIGFuZCBpbnQ2NCBpbnRlZ2Vycy5cbiAgIFdlIGNhbm5vdCBhY2Nlc3MgdG8gY29udmVyc2lvbnMgdG8vZnJvbSBzdHJpbmdzIGZvciB0aG9zZSB0eXBlcyxcbiAgIE5hdGl2ZWludC5vZl9zdHJpbmcsIEludDMyLm9mX3N0cmluZywgYW5kIEludDY0Lm9mX3N0cmluZyxcbiAgIHNpbmNlIHRob3NlIG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgdG8gW1NjYW5mXS5cbiAgIEhvd2V2ZXIsIHdlIGNhbiBiaW5kIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcHJpbWl0aXZlcyB0aGF0IGFyZVxuICAgYXZhaWxhYmxlIGluIHRoZSBydW50aW1lLiAqKVxuZXh0ZXJuYWwgbmF0aXZlaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDMyX29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQ2NF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxuXG5sZXQgdG9rZW5fbmF0aXZlaW50IGNvbnYgaWIgPSBuYXRpdmVpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDMyIGNvbnYgaWIgPSBpbnQzMl9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50NjQgY29udiBpYiA9IGludDY0X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxuKCogU2Nhbm5pbmcgbnVtYmVycy4gKilcblxuKCogRGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzdXBwb3NlIHRoYXQgb25lIGNoYXJhY3RlciBoYXMgYmVlbiBjaGVja2VkIGFuZFxuICAgaXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJldHVybiBhdCBlbmQgb2YgZmlsZSB3aXRoIHRoZSBjdXJyZW50bHkgZm91bmRcbiAgIHRva2VuIHNlbGVjdGVkLlxuXG4gICBQdXQgaXQgaW4gYW5vdGhlciB3YXksIHRoZSBkaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHNjYW4gZm9yIGEgcG9zc2libHlcbiAgIGVtcHR5IHNlcXVlbmNlIG9mIGRpZ2l0cywgKGhlbmNlLCBhIHN1Y2Nlc3NmdWwgc2Nhbm5pbmcgZnJvbSBvbmUgb2YgdGhvc2VcbiAgIGZ1bmN0aW9ucyBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSB0b2tlbiBpcyBhIHdlbGwtZm9ybWVkIG51bWJlcjogdG8gZ2V0IGFcbiAgIHRydWUgbnVtYmVyLCBpdCBpcyBtYW5kYXRvcnkgdG8gY2hlY2sgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgaXNcbiAgIGF2YWlsYWJsZSBiZWZvcmUgY2FsbGluZyBvbmUgb2YgdGhlIGRpZ2l0IHNjYW5uaW5nIGZ1bmN0aW9ucykuICopXG5cbigqIFRoZSBkZWNpbWFsIGNhc2UgaXMgdHJlYXRlZCBlc3BlY2lhbGx5IGZvciBvcHRpbWl6YXRpb24gcHVycG9zZXMuICopXG5sZXQgcmVjIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgJ18nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGVjaW1hbCBkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgZGVjaW1hbCBkaWdpdFwiIGMpXG5cblxuKCogVG8gc2NhbiBudW1iZXJzIGZyb20gb3RoZXIgYmFzZXMsIHdlIHVzZSBhIHByZWRpY2F0ZSBhcmd1bWVudCB0b1xuICAgc2NhbiBkaWdpdHMuICopXG5sZXQgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9kaWdpdHMgd2lkdGggaWIgPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8IGMgd2hlbiBkaWdpdHAgYyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgJ18nIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8IF8gLT4gd2lkdGggaW5cbiAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9kaWdpdF9wbHVzIGJhc2lzIGRpZ2l0cCB3aWR0aCBpYiA9XG4gICgqIEVuc3VyZSB3ZSBoYXZlIGdvdCBlbm91Z2ggd2lkdGggbGVmdCxcbiAgICAgYW5kIHJlYWQgYXQgbGVhc3Qgb25lIGRpZ2l0LiAqKVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGRpZ2l0cCBjIHRoZW5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliXG4gIGVsc2VcbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIHZhbGlkICVzIGRpZ2l0XCIgYyBiYXNpcylcblxuXG5sZXQgaXNfYmluYXJ5X2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzEnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fYmluYXJ5X2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImJpbmFyeVwiIGlzX2JpbmFyeV9kaWdpdFxuXG5sZXQgaXNfb2N0YWxfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnNycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9vY3RhbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJvY3RhbFwiIGlzX29jdGFsX2RpZ2l0XG5cbmxldCBpc19oZXhhX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9oZXhhZGVjaW1hbF9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJoZXhhZGVjaW1hbFwiIGlzX2hleGFfZGlnaXRcblxuKCogU2NhbiBhIGRlY2ltYWwgaW50ZWdlci4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50ID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXNcblxubGV0IHNjYW5fc2lnbiB3aWR0aCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJysnIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8ICctJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW4gYW4gdW5zaWduZWQgaW50ZWdlciB0aGF0IGNvdWxkIGJlIGdpdmVuIGluIGFueSAoY29tbW9uKSBiYXNpcy5cbiAgIElmIGRpZ2l0cyBhcmUgcHJlZml4ZWQgYnkgb25lIG9mIDB4LCAwWCwgMG8sIG9yIDBiLCB0aGUgbnVtYmVyIGlzXG4gICBhc3N1bWVkIHRvIGJlIHdyaXR0ZW4gcmVzcGVjdGl2ZWx5IGluIGhleGFkZWNpbWFsLCBoZXhhZGVjaW1hbCxcbiAgIG9jdGFsLCBvciBiaW5hcnkuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgYmVnaW4gbWF0Y2ggYyB3aXRoXG4gICAgfCAneCcgfCAnWCcgLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdvJyAtPiBzY2FuX29jdGFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ2InIC0+IHNjYW5fYmluYXJ5X2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgXyAtPiBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBlbmRcbiAgfCBfIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl91bnNpZ25lZF9pbnQgd2lkdGggaWJcblxuXG5sZXQgc2Nhbl9pbnRfY29udmVyc2lvbiBjb252IHdpZHRoIGliID1cbiAgbWF0Y2ggY29udiB3aXRoXG4gIHwgQl9jb252ZXJzaW9uIC0+IHNjYW5fYmluYXJ5X2ludCB3aWR0aCBpYlxuICB8IERfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgSV9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliXG4gIHwgT19jb252ZXJzaW9uIC0+IHNjYW5fb2N0YWxfaW50IHdpZHRoIGliXG4gIHwgVV9jb252ZXJzaW9uIC0+IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBYX2NvbnZlcnNpb24gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FubmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqKVxuXG4oKiBGcmFjdGlvbmFsIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIEV4cCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJ2UnIHwgJ0UnIGFzIGMgLT5cbiAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbigqIFNjYW4gdGhlIGludGVnZXIgcGFydCBvZiBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgKG5vdCB1c2luZyB0aGVcbiAgIE9DYW1sIGxleGljYWwgY29udmVudGlvbiBzaW5jZSB0aGUgaW50ZWdlciBwYXJ0IGNhbiBiZSBlbXB0eSk6XG4gICBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBhIHBvc3NpYmx5IGVtcHR5IHNlcXVlbmNlIG9mIGRlY2ltYWxcbiAgIGRpZ2l0cyAoZS5nLiAtLjEpLiAqKVxubGV0IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG5cblxuKCpcbiAgIEZvciB0aGUgdGltZSBiZWluZyB3ZSBoYXZlIChhcyBmb3VuZCBpbiBzY2FuZi5tbGkpOlxuICAgdGhlIGZpZWxkIHdpZHRoIGlzIGNvbXBvc2VkIG9mIGFuIG9wdGlvbmFsIGludGVnZXIgbGl0ZXJhbFxuICAgaW5kaWNhdGluZyB0aGUgbWF4aW1hbCB3aWR0aCBvZiB0aGUgdG9rZW4gdG8gcmVhZC5cbiAgIFVuZm9ydHVuYXRlbHksIHRoZSB0eXBlLWNoZWNrZXIgbGV0IHRoZSB1c2VyIHdyaXRlIGFuIG9wdGlvbmFsIHByZWNpc2lvbixcbiAgIHNpbmNlIHRoaXMgaXMgdmFsaWQgZm9yIHByaW50ZiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGh1cywgdGhlIG5leHQgc3RlcCBmb3IgU2NhbmYgaXMgdG8gc3VwcG9ydCBhIGZ1bGwgd2lkdGggYW5kIHByZWNpc2lvblxuICAgaW5kaWNhdGlvbiwgbW9yZSBvciBsZXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBmb3IgcHJpbnRmLCBwb3NzaWJseSBleHRlbmRlZFxuICAgdG8gdGhlIHNwZWNpZmljYXRpb24gb2YgYSBbbWF4LCBtaW5dIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWRcbiAgIGZvciBzdHJpbmdzLiBTb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIHNjYW5mLm1saTpcblxuICAgVGhlIG9wdGlvbmFsIFt3aWR0aF0gaXMgYW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsXG4gICB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC4gRm9yIGluc3RhbmNlLCBbJTZkXSByZWFkcyBhbiBpbnRlZ2VyLFxuICAgaGF2aW5nIGF0IG1vc3QgNiBjaGFyYWN0ZXJzLlxuXG4gICBUaGUgb3B0aW9uYWwgW3ByZWNpc2lvbl0gaXMgYSBkb3QgWy5dIGZvbGxvd2VkIGJ5IGFuIGludGVnZXI6XG5cbiAgIC0gaW4gdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBjb252ZXJzaW9ucyAoWyVmXSwgWyVlXSwgWyVnXSwgWyVGXSwgWyVFXSxcbiAgIGFuZCBbJUZdIGNvbnZlcnNpb25zLCB0aGUgW3ByZWNpc2lvbl0gaW5kaWNhdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZlxuICAgZGlnaXRzIHRoYXQgbWF5IGZvbGxvdyB0aGUgZGVjaW1hbCBwb2ludC4gRm9yIGluc3RhbmNlLCBbJS40Zl0gcmVhZHMgYVxuICAgW2Zsb2F0XSB3aXRoIGF0IG1vc3QgNCBmcmFjdGlvbmFsIGRpZ2l0cyxcblxuICAgLSBpbiB0aGUgc3RyaW5nIGNvbnZlcnNpb25zIChbJXNdLCBbJVNdLCBbJVxcWyByYW5nZSBcXF1dKSwgYW5kIGluIHRoZVxuICAgaW50ZWdlciBudW1iZXIgY29udmVyc2lvbnMgKFslaV0sIFslZF0sIFsldV0sIFsleF0sIFslb10sIGFuZCB0aGVpclxuICAgW2ludDMyXSwgW2ludDY0XSwgYW5kIFtuYXRpdmVfaW50XSBjb3JyZXNwb25kZW50KSwgdGhlIFtwcmVjaXNpb25dXG4gICBpbmRpY2F0ZXMgdGhlIHJlcXVpcmVkIG1pbmltdW0gd2lkdGggb2YgdGhlIHRva2VuIHJlYWQsXG5cbiAgIC0gb24gYWxsIG90aGVyIGNvbnZlcnNpb25zLCB0aGUgd2lkdGggYW5kIHByZWNpc2lvbiBzcGVjaWZ5IHRoZSBbbWF4LCBtaW5dXG4gICByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLlxuKilcbmxldCBzY2FuX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5faW50ZWdlcl9wYXJ0IHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliKSBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG4gIHwgXyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiwgcHJlY2lzaW9uXG5cblxubGV0IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGVycm9yIHN0ciA9XG4gIGxldCBsb3dlcmNhc2UgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnQScgLi4gJ1onIC0+XG4gICAgICBjaGFyX29mX2ludCAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIGludF9vZl9jaGFyICdhJylcbiAgICB8IF8gLT4gYyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHdpZHRoID0gcmVmIHdpZHRoIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBsb3dlcmNhc2UgYyA8PiBsb3dlcmNhc2Ugc3RyLltpXSB0aGVuIGVycm9yICgpO1xuICAgIGlmICF3aWR0aCA9IDAgdGhlbiBlcnJvciAoKTtcbiAgICB3aWR0aCA6PSBTY2FubmluZy5zdG9yZV9jaGFyICF3aWR0aCBpYiBjO1xuICBkb25lO1xuICAhd2lkdGhcblxuXG5sZXQgc2Nhbl9oZXhfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgbGV0IHdpZHRoID0gY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcInhcIiBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgICApXG4gICAgICAgICAgfCBfIC0+IHdpZHRoIGluXG4gICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICAgIHwgXyAtPiB3aWR0aFxuICApXG4gIHwgJ24nIHwgJ04nIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwiYW5cIlxuICB8ICdpJyB8ICdJJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcIm5maW5pdHlcIlxuICB8IF8gLT4gYmFkX2hleF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAoKiBUaGUgZWZmZWN0aXZlIHdpZHRoIGF2YWlsYWJsZSBmb3Igc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBpc1xuICAgICAgIHRoZSBtaW5pbXVtIG9mIGRlY2xhcmVkIHByZWNpc2lvbiBhbmQgd2lkdGggbGVmdC4gKilcbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAoKiBBZnRlciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHdpdGggW3ByZWNpc2lvbl0gcHJvdmlzaW9uYWwgd2lkdGgsXG4gICAgICAgW3dpZHRoX3ByZWNpc2lvbl0gaXMgbGVmdC4gKilcbiAgICBsZXQgd2lkdGhfcHJlY2lzaW9uID0gc2Nhbl9mcmFjdGlvbmFsX3BhcnQgcHJlY2lzaW9uIGliIGluXG4gICAgKCogSGVuY2UsIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdG9vayBleGFjdGx5XG4gICAgICAgW3ByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbl0gY2hhcnMuICopXG4gICAgbGV0IGZyYWNfd2lkdGggPSBwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb24gaW5cbiAgICAoKiBBbmQgbmV3IHByb3Zpc2lvbmFsIHdpZHRoIGlzIFt3aWR0aCAtIHdpZHRoX3ByZWNpc2lvbi4gKilcbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIGZyYWNfd2lkdGggaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCAnZScgfCAnRScgLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWJcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbmxldCBzY2FuX2NhbWxfZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICB8ICd4JyB8ICdYJyBhcyBjIC0+IChcbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgYXMgYyAtPiAoXG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgIClcbiAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGJhZF9mbG9hdCAoKSBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgfCBfIC0+IHdpZHRoXG4gICAgKVxuICAgIHwgXyAtPlxuICAgICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4gIClcbiAgfCAnMScgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuKCogU3BlY2lhbCBjYXNlIG9mIG5hbiBhbmQgaW5maW5pdHk6XG4gIHwgJ2knIC0+XG4gIHwgJ24nIC0+XG4qKVxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxuKCogU2NhbiBhIHJlZ3VsYXIgc3RyaW5nOlxuICAgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgYSBzcGFjZSwgaWYgbm8gc2Nhbm5pbmcgaW5kaWNhdGlvbiBoYXMgYmVlbiBnaXZlbjtcbiAgIG90aGVyd2lzZSwgc3RvcHMgd2hlbiBlbmNvdW50ZXJpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHNjYW5uaW5nXG4gICBpbmRpY2F0aW9uIFtzdHBdLlxuICAgSXQgYWxzbyBzdG9wcyBhdCBlbmQgb2YgZmlsZSBvciB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGhhc1xuICAgYmVlbiByZWFkLiAqKVxubGV0IHNjYW5fc3RyaW5nIHN0cCB3aWR0aCBpYiA9XG4gIGxldCByZWMgbG9vcCB3aWR0aCA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbWF0Y2ggc3RwIHdpdGhcbiAgICAgIHwgU29tZSBjJyB3aGVuIGMgPSBjJyAtPiBTY2FubmluZy5za2lwX2NoYXIgd2lkdGggaWJcbiAgICAgIHwgU29tZSBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IGxvb3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaW5cbiAgbG9vcCB3aWR0aFxuXG5cbigqIFNjYW4gYSBjaGFyOiBwZWVrIHN0cmljdGx5IG9uZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LCB3aGF0c29ldmVyLiAqKVxubGV0IHNjYW5fY2hhciB3aWR0aCBpYiA9XG4gICgqIFRoZSBjYXNlIHdpZHRoID0gMCBjb3VsZCBub3QgaGFwcGVuIGhlcmUsIHNpbmNlIGl0IGlzIHRlc3RlZCBiZWZvcmVcbiAgICAgY2FsbGluZyBzY2FuX2NoYXIsIGluIHRoZSBtYWluIHNjYW5uaW5nIGZ1bmN0aW9uLlxuICAgIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJhIGNoYXJhY3RlclwiIGVsc2UgKilcbiAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIpXG5cblxubGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gIHwgJ24nIC0+ICdcXDAxMCdcbiAgfCAncicgLT4gJ1xcMDEzJ1xuICB8ICdiJyAtPiAnXFwwMDgnXG4gIHwgJ3QnIC0+ICdcXDAwOSdcbiAgfCBjIC0+IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPSBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG5cbmxldCBjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTAwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMwICtcbiAgICAgMTAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJiYWQgY2hhcmFjdGVyIGRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWMlY1wiIGMwIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBUaGUgaW50ZWdlciB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNpYWwgdmFsdWUgb2YgYSB2YWxpZFxuICAgaGV4YWRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9XG4gIGxldCBkID0gaW50X29mX2NoYXIgYyBpblxuICAoKiBDb3VsZCBhbHNvIGJlOlxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJzknIHRoZW4gZCAtIGludF9vZl9jaGFyICcwJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnRicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnQScgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ2YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ2EnIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICopXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ2EnIHRoZW5cbiAgICBkIC0gODcgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICopIGVsc2VcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnQScgdGhlblxuICAgIGQgLSA1NSAgKCogMTAgKyBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICopIGVsc2VcbiAgICBkIC0gaW50X29mX2NoYXIgJzAnXG5cblxubGV0IGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIgPVxuICBsZXQgYyA9XG4gICAgMTYgKiBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJiYWQgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjXCIgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIENhbGxlZCBpbiBwYXJ0aWN1bGFyIHdoZW4gZW5jb3VudGVyaW5nICdcXFxcJyBhcyBzdGFydGVyIG9mIGEgY2hhci5cbiAgIFN0b3BzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyAnXFwnJy4gKilcbmxldCBjaGVja19uZXh0X2NoYXIgbWVzc2FnZSB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIGJhZF9lbmRfb2ZfaW5wdXQgbWVzc2FnZSBlbHNlXG4gIGNcblxuXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBDaGFyXCJcbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyA9IGNoZWNrX25leHRfY2hhciBcImEgU3RyaW5nXCJcblxubGV0IHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIgPVxuICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICB8ICdcXFxcJyB8ICdcXCcnIHwgJ1xcXCInIHwgJ24nIHwgJ3QnIHwgJ2InIHwgJ3InIGFzIGMgLT5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChjaGFyX2Zvcl9iYWNrc2xhc2ggYylcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzAgPSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyKVxuICB8ICd4JyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMxID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgbGV0IGMyID0gZ2V0X2RpZ2l0ICgpIGluXG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciAod2lkdGggLSAyKSBpYiAoY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMilcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0X2VzY2FwZSBjXG5cblxuKCogU2NhbiBhIGNoYXJhY3RlciAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9jaGFyIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IGZpbmRfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjXG5cbiAgYW5kIGZpbmRfY2hhciB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFxcJyAtPlxuICAgICAgZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYikgaWIpXG4gICAgfCBjIC0+XG4gICAgICBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGMgaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGRlbGltaXRlZCBzdHJpbmcgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliID1cblxuICBsZXQgcmVjIGZpbmRfc3RhcnQgd2lkdGggPVxuICAgIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcXCInIGNcblxuICBhbmQgZmluZF9zdG9wIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWJcbiAgICB8ICdcXFxcJyAtPiBzY2FuX2JhY2tzbGFzaCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBzY2FuX2JhY2tzbGFzaCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xccicgLT4gc2tpcF9uZXdsaW5lIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliKVxuXG4gIGFuZCBza2lwX25ld2xpbmUgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXG4nIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliICdcXHInKVxuXG4gIGFuZCBza2lwX3NwYWNlcyB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJyAnIC0+IHNraXBfc3BhY2VzIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IF8gLT4gZmluZF9zdG9wIHdpZHRoIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBib29sZWFuIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9ib29sIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAndCcgLT4gNFxuICAgIHwgJ2YnIC0+IDVcbiAgICB8IGMgLT5cbiAgICAgIGJhZF9pbnB1dFxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJ0aGUgY2hhcmFjdGVyICVDIGNhbm5vdCBzdGFydCBhIGJvb2xlYW5cIiBjKSBpblxuICBzY2FuX3N0cmluZyBOb25lIG0gaWJcblxuXG4oKiBTY2FuIGEgc3RyaW5nIGNvbnRhaW5pbmcgZWxlbWVudHMgaW4gY2hhcl9zZXQgYW5kIHRlcm1pbmF0ZWQgYnkgc2Nhbl9pbmRpY1xuICAgaWYgcHJvdmlkZWQuICopXG5sZXQgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBzY2FuX2luZGljIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2NoYXJzIGkgc3RwID1cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGkgPiAwICYmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSAmJlxuICAgICAgIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgJiZcbiAgICAgICBpbnRfb2ZfY2hhciBjIDw+IHN0cCB0aGVuXG4gICAgICBsZXQgXyA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgbWF4X2ludCBpYiBjIGluXG4gICAgICBzY2FuX2NoYXJzIChpIC0gMSkgc3RwIGluXG4gIG1hdGNoIHNjYW5faW5kaWMgd2l0aFxuICB8IE5vbmUgLT4gc2Nhbl9jaGFycyB3aWR0aCAoLTEpO1xuICB8IFNvbWUgYyAtPlxuICAgIHNjYW5fY2hhcnMgd2lkdGggKGludF9vZl9jaGFyIGMpO1xuICAgIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuXG4gICAgICBsZXQgY2kgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICAgIGlmIGMgPSBjaVxuICAgICAgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYlxuICAgICAgZWxzZSBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaVxuXG5cbigqIFRoZSBnbG9iYWwgZXJyb3IgcmVwb3J0IGZ1bmN0aW9uIGZvciBbU2NhbmZdLiAqKVxubGV0IHNjYW5mX2JhZF9pbnB1dCBpYiA9IGZ1bmN0aW9uXG4gIHwgU2Nhbl9mYWlsdXJlIHMgfCBGYWlsdXJlIHMgLT5cbiAgICBsZXQgaSA9IFNjYW5uaW5nLmNoYXJfY291bnQgaWIgaW5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwic2NhbmY6IGJhZCBpbnB1dCBhdCBjaGFyIG51bWJlciAlaTogJXNcIiBpIHMpXG4gIHwgeCAtPiByYWlzZSB4XG5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIGEgY291bnRlciBmcm9tIGFuIGlucHV0IGJ1ZmZlci4gKilcbmxldCBnZXRfY291bnRlciBpYiBjb3VudGVyID1cbiAgbWF0Y2ggY291bnRlciB3aXRoXG4gIHwgTGluZV9jb3VudGVyIC0+IFNjYW5uaW5nLmxpbmVfY291bnQgaWJcbiAgfCBDaGFyX2NvdW50ZXIgLT4gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYlxuICB8IFRva2VuX2NvdW50ZXIgLT4gU2Nhbm5pbmcudG9rZW5fY291bnQgaWJcblxuXG4oKiBDb21wdXRlIHRoZSB3aWR0aCBvZiBhIHBhZGRpbmcgb3B0aW9uIChzZWUgXCIlNDJ7XCIgYW5kIFwiJTEyMyhcIikuICopXG5sZXQgd2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0ID0gbWF0Y2ggcGFkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBtYXhfaW50XG4gIHwgU29tZSB3aWR0aCAtPiB3aWR0aFxuXG5cbmxldCBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyA9XG4gIGlmIGZtdGluZyA9IEVzY2FwZWRfcGVyY2VudCB0aGVuICclJywgXCJcIiBlbHNlXG4gICAgbGV0IHN0ciA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgaW5cbiAgICBsZXQgc3RwID0gc3RyLlsxXSBpblxuICAgIGxldCBzdWJfc3RyID0gU3RyaW5nLnN1YiBzdHIgMiAoU3RyaW5nLmxlbmd0aCBzdHIgLSAyKSBpblxuICAgIHN0cCwgc3ViX3N0clxuXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBSZWFkZXIgbWFuYWdlbWVudCAqKVxuXG4oKiBBIGNhbGwgdG8gdGFrZV9mb3JtYXRfcmVhZGVycyBvbiBhIGZvcm1hdCBpcyBldmFsdWF0ZWQgaW50byBmdW5jdGlvbnNcbiAgIHRha2luZyByZWFkZXJzIGFzIGFyZ3VtZW50cyBhbmQgYWdncmVnYXRlIHRoZW0gaW50byBhbiBoZXRlcm9nZW5lb3VzIGxpc3QgKilcbigqIFdoZW4gYWxsIHJlYWRlcnMgYXJlIHRha2VuLCBmaW5hbGx5IHBhc3MgdGhlIGxpc3Qgb2YgdGhlIHJlYWRlcnMgdG8gdGhlXG4gICBjb250aW51YXRpb24gay4gKilcbmxldCByZWMgdGFrZV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgIGQgPVxuZnVuIGsgZm10IC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3RcbiAgfCBDaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX3N0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50MzIgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBOYXRpdmVpbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDY0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmxvYXQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBCb29sIChfLCByZXN0KSAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgVGhldGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbHVzaCByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZ19saXRlcmFsIChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChfLCByZXN0KSAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDdXN0b20gKF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX2dldF9jb3VudGVyIChfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG5cbiAgfCBGb3JtYXRfYXJnIChfLCBfLCByZXN0KSAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpICAgIC0+XG4gICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSkgcmVzdFxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgICAgICAgIC0+IHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyBrIGlnbiByZXN0XG5cbiAgfCBFbmRfb2ZfZm9ybWF0ICAgICAgICAgICAgICAgICAgICAtPiBrIE5pbFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBmbXR0eSBjb21pbmcgZnJvbSBhIEZvcm1hdF9zdWJzdCBcIiUoLi4uJSlcIi4gKilcbmFuZCB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGZtdHR5IC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgZm10dHkgZm10IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBSZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBTdHJpbmdfdHkgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBCb29sX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFRoZXRhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbnlfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEVuZF9vZl9mbXR0eSAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdHR5IHR5IHJlc3QpIGZtdFxuXG4oKiBUYWtlIHJlYWRlcnMgYXNzb2NpYXRlZCB0byBhbiBpZ25vcmVkIHBhcmFtZXRlci4gKilcbmFuZCB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgaWdub3JlZCAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX3JlYWRlciAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdFxuICB8IElnbm9yZWRfY2hhciAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9jaGFyICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgXyAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50IChfLCBfKSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfbmF0aXZlaW50IChfLCBfKSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfaW50NjQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfYm9vbCBfICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyBfICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBHZW5lcmljIHNjYW5uaW5nICopXG5cbigqIE1ha2UgYSBnZW5lcmljIHNjYW5uaW5nIGZ1bmN0aW9uLiAqKVxuKCogU2NhbiBhIHN0cmVhbSBhY2NvcmRpbmcgdG8gYSBmb3JtYXQgYW5kIHJlYWRlcnMgb2J0YWluZWQgYnlcbiAgIHRha2VfZm9ybWF0X3JlYWRlcnMsIGFuZCBhZ2dyZWdhdGUgc2Nhbm5lZCB2YWx1ZXMgaW50byBhblxuICAgaGV0ZXJvZ2VuZW91cyBsaXN0LiAqKVxuKCogUmV0dXJuIHRoZSBoZXRlcm9nZW5lb3VzIGxpc3Qgb2Ygc2Nhbm5lZCB2YWx1ZXMuICopXG5sZXQgcmVjIG1ha2Vfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZi5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+IChhLCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IENoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgc3RwKSB3aWR0aCBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAneycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ1snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgTm9uZSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG5cbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2NhbWxfc3RyaW5nIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludCBjKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQzMiBjKVxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5fbmF0aXZlaW50IGMpXG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDY0IGMpXG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfRiB8IEZsb2F0X0NGKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9jYW1sX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cpKSxcbiAgICAgICAgICAgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgRmxvYXQgKChfLCAoRmxvYXRfaCB8IEZsb2F0X0gpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2hleF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiBfIF8gaWIgPSBzY2FuX2Jvb2wgaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX2Jvb2xcbiAgfCBBbHBoYSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiVhXFxcIlwiXG4gIHwgVGhldGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIldFxcXCJcIlxuICB8IEN1c3RvbSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiU/XFxcIiAoY3VzdG9tIGNvbnZlcnRlcilcIlxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGJlZ2luIG1hdGNoIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpIC0+XG4gICAgICAgIGxldCB4ID0gcmVhZGVyIGliIGluXG4gICAgICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10X3Jlc3QgcmVhZGVyc19yZXN0KVxuICAgIHwgTmlsIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwic2NhbmY6IG1pc3NpbmcgcmVhZGVyXCJcbiAgICBlbmRcbiAgfCBGbHVzaCByZXN0IC0+XG4gICAgaWYgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgICBlbHNlIGJhZF9pbnB1dCBcImVuZCBvZiBpbnB1dCBub3QgZm91bmRcIlxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgc3RyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiBjaHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCA9XG4gICAgICB0cnkgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzIGZtdHR5XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKGZtdCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQsIGZtdCcgPVxuICAgICAgdHJ5XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10JyA9IGZtdF9lYmJfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgKCogVE9ETzogZmluZCBhIHdheSB0byBhdm9pZCByZXBhcnNpbmcgdHdpY2UgKilcblxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0eXBlLWNoZWNrcyBiZWxvdyAqY2FuKiBmYWlsIGJlY2F1c2Ugb2YgdHlwZVxuICAgICAgICAgICBhbWJpZ3VpdHkgaW4gcHJlc2VuY2Ugb2YgaWdub3JlZC1yZWFkZXJzOiBcIiVfciVkXCIgYW5kIFwiJWQlX3JcIlxuICAgICAgICAgICBhcmUgdHlwZWQgaW4gdGhlIHNhbWUgd2F5LlxuXG4gICAgICAgICAgICMgU2NhbmYuc3NjYW5mIFwiXFxcIiVfciVkXFxcIjNcIiBcIiUoJWQlX3IlKVwiIGlnbm9yZVxuICAgICAgICAgICAgIChmdW4gZm10IG4gLT4gc3RyaW5nX29mX2Zvcm1hdCBmbXQsIG4pXG4gICAgICAgICAgIEV4Y2VwdGlvbjogQ2FtbGludGVybmFsRm9ybWF0LlR5cGVfbWlzbWF0Y2guXG5cbiAgICAgICAgICAgV2Ugc2hvdWxkIHByb3Blcmx5IGNhdGNoIHRoaXMgZXhjZXB0aW9uLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCBmbXR0eSksXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCcgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2dcbiAgICBpblxuICAgIENvbnMgKEZvcm1hdCAoZm10LCBzKSxcbiAgICAgICAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycylcblxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSkgLT5cbiAgICBsZXQgc3RwLCBzdHIgPSBzdG9wcGVyX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKFNvbWUgc3RwKSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBzdHJfcmVzdCA9IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQsIHJlc3QpIC0+XG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IE5vbmUgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIGxldCBjb3VudCA9IGdldF9jb3VudGVyIGliIGNvdW50ZXIgaW5cbiAgICBDb25zIChjb3VudCwgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgcmVzdCkgLT5cbiAgICBTdHJpbmcuaXRlciAoY2hlY2tfY2hhciBpYikgKHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmb3JtYXR0aW5nX2xpdCk7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICd7JztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ1snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG5cbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgbGV0IFBhcmFtX2Zvcm1hdF9FQkIgZm10JyA9IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCBpZ24gcmVzdCBpblxuICAgIGJlZ2luIG1hdGNoIG1ha2Vfc2NhbmYgaWIgZm10JyByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKF8sIGFyZ19yZXN0KSAtPiBhcmdfcmVzdFxuICAgIHwgTmlsIC0+IGFzc2VydCBmYWxzZVxuICAgIGVuZFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgIE5pbFxuXG4oKiBDYXNlIGFuYWx5c2lzIG9uIHBhZGRpbmcgYW5kIHByZWNpc2lvbi4gKilcbigqIFJlamVjdCBmb3JtYXRzIGNvbnRhaW5pbmcgXCIlKlwiIG9yIFwiJS4qXCIuICopXG4oKiBQYXNzIHBhZGRpbmcgYW5kIHByZWNpc2lvbiB0byB0aGUgZ2VuZXJpYyBzY2FubmVyIGBzY2FuJy4gKilcbmFuZCBwYWRfcHJlY19zY2FuZiA6IHR5cGUgYSBjIGQgZSBmIHggeSB6IHQgLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKHgsIHkpIHBhZGRpbmcgLT4gKHksIHogLT4gYSkgcHJlY2lzaW9uIC0+XG4gICAgICAoaW50IC0+IGludCAtPiBTY2FubmluZy5pbl9jaGFubmVsIC0+IHQpIC0+XG4gICAgICAoU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB6KSAtPlxuICAgICAgKHgsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gdG9rZW4gLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTm9fcGFkZGluZywgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBOb19wcmVjaXNpb24gLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBtYXhfaW50IGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiB3IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoTGVmdCwgXyksIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJS1cXFwiXCJcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCBfKSwgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IEFyZ19wYWRkaW5nIF8sIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAoKiBEZWZpbmluZyBbc2NhbmZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW3NjYW5mXSAqKVxuXG5sZXQga3NjYW5mX2dlbiBpYiBlZiBhZiAoRm9ybWF0IChmbXQsIHN0cikpID1cbiAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiIC4gYSAtPiAoYSwgYikgaGV0ZXJfbGlzdCAtPiBiID1cbiAgICBmdW4gZiBhcmdzIC0+IG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgQ29ucyAoeCwgcikgLT4gYXBwbHkgKGYgeCkgclxuICAgIHwgTmlsIC0+IGZcbiAgaW5cbiAgbGV0IGsgcmVhZGVycyBmID1cbiAgICBTY2FubmluZy5yZXNldF90b2tlbiBpYjtcbiAgICBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiAoU2Nhbl9mYWlsdXJlIF8gfCBGYWlsdXJlIF8gfCBFbmRfb2ZfZmlsZSBhcyBleGMpIC0+XG4gICAgICAgIGVmIGliIGV4Y1xuICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgfCBhcmdzIC0+XG4gICAgICAgIGFmIChhcHBseSBmIGFyZ3MpXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxubGV0IGtzY2FuZiBpYiBlZiBmbXQgPVxuICBrc2NhbmZfZ2VuIGliIGVmIChmdW4geCAtPiB4KSBmbXRcblxubGV0IGtzY2FuZl9vcHQgaWIgZm10ID1cbiAga3NjYW5mX2dlbiBpYiAoZnVuIF8gXyAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KSBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgYnNjYW5mX29wdCBpYiBmbXQgPSBrc2NhbmZfb3B0IGliIGZtdFxuXG5sZXQga3NzY2FuZiBzIGVmIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGVmIGZtdFxubGV0IHNzY2FuZiBzIGZtdCA9IGtic2NhbmYgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzc2NhbmZfb3B0IHMgZm10ID0ga3NjYW5mX29wdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm10XG5cbmxldCBzY2FuZiBmbXQgPSBrc2NhbmYgU2Nhbm5pbmcuc3RkaW4gc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IHNjYW5mX29wdCBmbXQgPSBrc2NhbmZfb3B0IFNjYW5uaW5nLnN0ZGluIGZtdFxuXG4oKioqKVxuXG4oKiBTY2FubmluZyBmb3JtYXQgc3RyaW5ncy4gKilcbmxldCBic2NhbmZfZm9ybWF0IDpcbiAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIGliIGZvcm1hdCBmIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nIG1heF9pbnQgaWIgaW5cbiAgICBsZXQgc3RyID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCcgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0IHN0ciBmb3JtYXRcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZyBpblxuICAgIGYgZm10J1xuXG5cbmxldCBzc2NhbmZfZm9ybWF0IDpcbiAgc3RyaW5nIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gICgoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAnZykgLT4gJ2cgPVxuICBmdW4gcyBmb3JtYXQgZiAtPiBic2NhbmZfZm9ybWF0IChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBmb3JtYXQgZlxuXG5cbmxldCBmb3JtYXRfZnJvbV9zdHJpbmcgcyBmbXQgPVxuICBzc2NhbmZfZm9ybWF0IChcIlxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHMgXiBcIlxcXCJcIikgZm10IChmdW4geCAtPiB4KVxuXG5cbmxldCB1bmVzY2FwZWQgcyA9XG4gIHNzY2FuZiAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCIpIFwiJVMlIVwiIChmdW4geCAtPiB4KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBSZWdpc3RlcmluZyBPQ2FtbCB2YWx1ZXMgd2l0aCB0aGUgQyBydW50aW1lIGZvciBsYXRlciBjYWxsYmFja3MgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gT2JqLnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSB2ID1cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSAoT2JqLnJlcHIgdilcblxubGV0IHJlZ2lzdGVyX2V4Y2VwdGlvbiBuYW1lIChleG4gOiBleG4pID1cbiAgbGV0IGV4biA9IE9iai5yZXByIGV4biBpblxuICBsZXQgc2xvdCA9IGlmIE9iai50YWcgZXhuID0gT2JqLm9iamVjdF90YWcgdGhlbiBleG4gZWxzZSBPYmouZmllbGQgZXhuIDAgaW5cbiAgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgbmFtZSBzbG90XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICBKZXJvbWUgVm91aWxsb24sIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKioqIE9iamVjdCByZXByZXNlbnRhdGlvbiAqKioqKVxuXG5leHRlcm5hbCBzZXRfaWQ6ICdhIC0+ICdhID0gXCJjYW1sX3NldF9vb19pZFwiIFtAQG5vYWxsb2NdXG5cbigqKioqIE9iamVjdCBjb3B5ICoqKiopXG5cbmxldCBjb3B5IG8gPVxuICBsZXQgbyA9IChPYmoub2JqIChPYmouZHVwIChPYmoucmVwciBvKSkpIGluXG4gIHNldF9pZCBvXG5cbigqKioqIENvbXByZXNzaW9uIG9wdGlvbnMgKioqKilcbigqIFBhcmFtZXRlcnMgKilcbnR5cGUgcGFyYW1zID0ge1xuICAgIG11dGFibGUgY29tcGFjdF90YWJsZSA6IGJvb2w7XG4gICAgbXV0YWJsZSBjb3B5X3BhcmVudCA6IGJvb2w7XG4gICAgbXV0YWJsZSBjbGVhbl93aGVuX2NvcHlpbmcgOiBib29sO1xuICAgIG11dGFibGUgcmV0cnlfY291bnQgOiBpbnQ7XG4gICAgbXV0YWJsZSBidWNrZXRfc21hbGxfc2l6ZSA6IGludFxuICB9XG5cbmxldCBwYXJhbXMgPSB7XG4gIGNvbXBhY3RfdGFibGUgPSB0cnVlO1xuICBjb3B5X3BhcmVudCA9IHRydWU7XG4gIGNsZWFuX3doZW5fY29weWluZyA9IHRydWU7XG4gIHJldHJ5X2NvdW50ID0gMztcbiAgYnVja2V0X3NtYWxsX3NpemUgPSAxNlxufVxuXG4oKioqKiBQYXJhbWV0ZXJzICoqKiopXG5cbmxldCBpbml0aWFsX29iamVjdF9zaXplID0gMlxuXG4oKioqKiBJdGVtcyAqKioqKVxuXG50eXBlIGl0ZW0gPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbmxldCBkdW1teV9pdGVtID0gKE9iai5tYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIE9iai5tYWdpYyB0YWdcblxuKCoqKiogU3BhcnNlIGFycmF5ICoqKiopXG5cbm1vZHVsZSBWYXJzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHN0cmluZyBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSB2YXJzID0gaW50IFZhcnMudFxuXG5tb2R1bGUgTWV0aHMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIG1ldGhzID0gbGFiZWwgTWV0aHMudFxubW9kdWxlIExhYnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gbGFiZWwgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbGFicyA9IGJvb2wgTGFicy50XG5cbigqIFRoZSBjb21waWxlciBhc3N1bWVzIHRoYXQgdGhlIGZpcnN0IGZpZWxkIG9mIHRoaXMgc3RydWN0dXJlIGlzIFtzaXplXS4gKilcbnR5cGUgdGFibGUgPVxuIHsgbXV0YWJsZSBzaXplOiBpbnQ7XG4gICBtdXRhYmxlIG1ldGhvZHM6IGNsb3N1cmUgYXJyYXk7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbmFtZTogbWV0aHM7XG4gICBtdXRhYmxlIG1ldGhvZHNfYnlfbGFiZWw6IGxhYnM7XG4gICBtdXRhYmxlIHByZXZpb3VzX3N0YXRlczpcbiAgICAgKG1ldGhzICogbGFicyAqIChsYWJlbCAqIGl0ZW0pIGxpc3QgKiB2YXJzICpcbiAgICAgIGxhYmVsIGxpc3QgKiBzdHJpbmcgbGlzdCkgbGlzdDtcbiAgIG11dGFibGUgaGlkZGVuX21ldGhzOiAobGFiZWwgKiBpdGVtKSBsaXN0O1xuICAgbXV0YWJsZSB2YXJzOiB2YXJzO1xuICAgbXV0YWJsZSBpbml0aWFsaXplcnM6IChvYmogLT4gdW5pdCkgbGlzdCB9XG5cbmxldCBkdW1teV90YWJsZSA9XG4gIHsgbWV0aG9kcyA9IFt8IGR1bW15X2l0ZW0gfF07XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IDAgfVxuXG5sZXQgdGFibGVfY291bnQgPSByZWYgMFxuXG4oKiBkdW1teV9tZXQgc2hvdWxkIGJlIGEgcG9pbnRlciwgc28gdXNlIGFuIGF0b20gKilcbmxldCBkdW1teV9tZXQgOiBpdGVtID0gT2JqLm9iaiAoT2JqLm5ld19ibG9jayAwIDApXG4oKiBpZiBkZWJ1Z2dpbmcgaXMgbmVlZGVkLCB0aGlzIGNvdWxkIGJlIGEgZ29vZCBpZGVhOiAqKVxuKCogbGV0IGR1bW15X21ldCAoKSA9IGZhaWx3aXRoIFwiVW5kZWZpbmVkIG1ldGhvZFwiICopXG5cbmxldCByZWMgZml0X3NpemUgbiA9XG4gIGlmIG4gPD0gMiB0aGVuIG4gZWxzZVxuICBmaXRfc2l6ZSAoKG4rMSkvMikgKiAyXG5cbmxldCBuZXdfdGFibGUgcHViX2xhYmVscyA9XG4gIGluY3IgdGFibGVfY291bnQ7XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggcHViX2xhYmVscyBpblxuICBsZXQgbWV0aG9kcyA9IEFycmF5Lm1ha2UgKGxlbioyKzIpIGR1bW15X21ldCBpblxuICBtZXRob2RzLigwKSA8LSBPYmoubWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBPYmoubWFnaWMgKGZpdF9zaXplIGxlbiAqIFN5cy53b3JkX3NpemUgLyA4IC0gMSk7XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvIG1ldGhvZHMuKGkqMiszKSA8LSBPYmoubWFnaWMgcHViX2xhYmVscy4oaSkgZG9uZTtcbiAgeyBtZXRob2RzID0gbWV0aG9kcztcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gaW5pdGlhbF9vYmplY3Rfc2l6ZSB9XG5cbmxldCByZXNpemUgYXJyYXkgbmV3X3NpemUgPVxuICBsZXQgb2xkX3NpemUgPSBBcnJheS5sZW5ndGggYXJyYXkubWV0aG9kcyBpblxuICBpZiBuZXdfc2l6ZSA+IG9sZF9zaXplIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3X2J1Y2sgPSBBcnJheS5tYWtlIG5ld19zaXplIGR1bW15X21ldCBpblxuICAgIEFycmF5LmJsaXQgYXJyYXkubWV0aG9kcyAwIG5ld19idWNrIDAgb2xkX3NpemU7XG4gICAgYXJyYXkubWV0aG9kcyA8LSBuZXdfYnVja1xuIGVuZFxuXG5sZXQgcHV0IGFycmF5IGxhYmVsIGVsZW1lbnQgPVxuICByZXNpemUgYXJyYXkgKGxhYmVsICsgMSk7XG4gIGFycmF5Lm1ldGhvZHMuKGxhYmVsKSA8LSBlbGVtZW50XG5cbigqKioqIENsYXNzZXMgKioqKilcblxubGV0IG1ldGhvZF9jb3VudCA9IHJlZiAwXG5sZXQgaW5zdF92YXJfY291bnQgPSByZWYgMFxuXG4oKiB0eXBlIHQgKilcbnR5cGUgbWV0aCA9IGl0ZW1cblxubGV0IG5ld19tZXRob2QgdGFibGUgPVxuICBsZXQgaW5kZXggPSBBcnJheS5sZW5ndGggdGFibGUubWV0aG9kcyBpblxuICByZXNpemUgdGFibGUgKGluZGV4ICsgMSk7XG4gIGluZGV4XG5cbmxldCBnZXRfbWV0aG9kX2xhYmVsIHRhYmxlIG5hbWUgPVxuICB0cnlcbiAgICBNZXRocy5maW5kIG5hbWUgdGFibGUubWV0aG9kc19ieV9uYW1lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGxhYmVsID0gbmV3X21ldGhvZCB0YWJsZSBpblxuICAgIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBNZXRocy5hZGQgbmFtZSBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgdGFibGUubWV0aG9kc19ieV9sYWJlbCA8LSBMYWJzLmFkZCBsYWJlbCB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWw7XG4gICAgbGFiZWxcblxubGV0IGdldF9tZXRob2RfbGFiZWxzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfbWV0aG9kX2xhYmVsIHRhYmxlKSBuYW1lc1xuXG5sZXQgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBlbGVtZW50ID1cbiAgaW5jciBtZXRob2RfY291bnQ7XG4gIGlmIExhYnMuZmluZCBsYWJlbCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIHRoZW5cbiAgICBwdXQgdGFibGUgbGFiZWwgZWxlbWVudFxuICBlbHNlXG4gICAgdGFibGUuaGlkZGVuX21ldGhzIDwtIChsYWJlbCwgZWxlbWVudCkgOjogdGFibGUuaGlkZGVuX21ldGhzXG5cbmxldCBnZXRfbWV0aG9kIHRhYmxlIGxhYmVsID1cbiAgdHJ5IExpc3QuYXNzb2MgbGFiZWwgdGFibGUuaGlkZGVuX21ldGhzXG4gIHdpdGggTm90X2ZvdW5kIC0+IHRhYmxlLm1ldGhvZHMuKGxhYmVsKVxuXG5sZXQgdG9fbGlzdCBhcnIgPVxuICBpZiBhcnIgPT0gT2JqLm1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBPYmoubWFnaWMgMCB0aGVuIG5ld190YWJsZSBbfHxdIGVsc2VcbiAgKCogW3B1YmxpY19tZXRob2RzXSBtdXN0IGJlIGluIGFzY2VuZGluZyBvcmRlciBmb3IgYnl0ZWNvZGUgKilcbiAgbGV0IHRhZ3MgPSBBcnJheS5tYXAgcHVibGljX21ldGhvZF9sYWJlbCBwdWJsaWNfbWV0aG9kcyBpblxuICBsZXQgdGFibGUgPSBuZXdfdGFibGUgdGFncyBpblxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gaSBtZXQgLT5cbiAgICAgIGxldCBsYWIgPSBpKjIrMiBpblxuICAgICAgdGFibGUubWV0aG9kc19ieV9uYW1lICA8LSBNZXRocy5hZGQgbWV0IGxhYiB0YWJsZS5tZXRob2RzX2J5X25hbWU7XG4gICAgICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIExhYnMuYWRkIGxhYiB0cnVlIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwpXG4gICAgcHVibGljX21ldGhvZHM7XG4gIHRhYmxlXG5cbmxldCBpbml0X2NsYXNzIHRhYmxlID1cbiAgaW5zdF92YXJfY291bnQgOj0gIWluc3RfdmFyX2NvdW50ICsgdGFibGUuc2l6ZSAtIDE7XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBMaXN0LnJldiB0YWJsZS5pbml0aWFsaXplcnM7XG4gIHJlc2l6ZSB0YWJsZSAoMyArIE9iai5tYWdpYyB0YWJsZS5tZXRob2RzLigxKSAqIDE2IC8gU3lzLndvcmRfc2l6ZSlcblxubGV0IGluaGVyaXRzIGNsYSB2YWxzIHZpcnRfbWV0aHMgY29uY3JfbWV0aHMgKF8sIHN1cGVyLCBfLCBlbnYpIHRvcCA9XG4gIG5hcnJvdyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzO1xuICBsZXQgaW5pdCA9XG4gICAgaWYgdG9wIHRoZW4gc3VwZXIgY2xhIGVudiBlbHNlIE9iai5yZXByIChzdXBlciBjbGEpIGluXG4gIHdpZGVuIGNsYTtcbiAgQXJyYXkuY29uY2F0XG4gICAgW1t8IE9iai5yZXByIGluaXQgfF07XG4gICAgIE9iai5tYWdpYyAoQXJyYXkubWFwIChnZXRfdmFyaWFibGUgY2xhKSAodG9fYXJyYXkgdmFscykgOiBpbnQgYXJyYXkpO1xuICAgICBBcnJheS5tYXBcbiAgICAgICAoZnVuIG5tIC0+IE9iai5yZXByIChnZXRfbWV0aG9kIGNsYSAoZ2V0X21ldGhvZF9sYWJlbCBjbGEgbm0pIDogY2xvc3VyZSkpXG4gICAgICAgKHRvX2FycmF5IGNvbmNyX21ldGhzKSBdXG5cbmxldCBtYWtlX2NsYXNzIHB1Yl9tZXRocyBjbGFzc19pbml0ID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIChlbnZfaW5pdCAoT2JqLnJlcHIgMCksIGNsYXNzX2luaXQsIGVudl9pbml0LCBPYmoucmVwciAwKVxuXG50eXBlIGluaXRfdGFibGUgPSB7IG11dGFibGUgZW52X2luaXQ6IHQ7IG11dGFibGUgY2xhc3NfaW5pdDogdGFibGUgLT4gdCB9XG5bQEB3YXJuaW5nIFwiLXVudXNlZC1maWVsZFwiXVxuXG5sZXQgbWFrZV9jbGFzc19zdG9yZSBwdWJfbWV0aHMgY2xhc3NfaW5pdCBpbml0X3RhYmxlID1cbiAgbGV0IHRhYmxlID0gY3JlYXRlX3RhYmxlIHB1Yl9tZXRocyBpblxuICBsZXQgZW52X2luaXQgPSBjbGFzc19pbml0IHRhYmxlIGluXG4gIGluaXRfY2xhc3MgdGFibGU7XG4gIGluaXRfdGFibGUuY2xhc3NfaW5pdCA8LSBjbGFzc19pbml0O1xuICBpbml0X3RhYmxlLmVudl9pbml0IDwtIGVudl9pbml0XG5cbmxldCBkdW1teV9jbGFzcyBsb2MgPVxuICBsZXQgdW5kZWYgPSBmdW4gXyAtPiByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKSBpblxuICAoT2JqLm1hZ2ljIHVuZGVmLCB1bmRlZiwgdW5kZWYsIE9iai5yZXByIDApXG5cbigqKioqIE9iamVjdHMgKioqKilcblxubGV0IGNyZWF0ZV9vYmplY3QgdGFibGUgPVxuICAoKiBYWFggQXBwZWwgZGUgW29ial9ibG9ja10gfCBDYWxsIHRvIFtvYmpfYmxvY2tdICAqKVxuICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gIE9iai5zZXRfZmllbGQgb2JqIDAgKE9iai5yZXByIHRhYmxlLm1ldGhvZHMpO1xuICBPYmoub2JqIChzZXRfaWQgb2JqKVxuXG5sZXQgY3JlYXRlX29iamVjdF9vcHQgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgICBsZXQgb2JqID0gT2JqLm5ld19ibG9jayBPYmoub2JqZWN0X3RhZyB0YWJsZS5zaXplIGluXG4gICAgKCogWFhYIEFwcGVsIGRlIFtjYW1sX21vZGlmeV0gfCBDYWxsIHRvIFtjYW1sX21vZGlmeV0gKilcbiAgICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgICBPYmoub2JqIChzZXRfaWQgb2JqKVxuICBlbmRcblxubGV0IHJlYyBpdGVyX2Ygb2JqID1cbiAgZnVuY3Rpb25cbiAgICBbXSAgIC0+ICgpXG4gIHwgZjo6bCAtPiBmIG9iajsgaXRlcl9mIG9iaiBsXG5cbmxldCBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZSA9XG4gIGxldCBpbml0cyA9IHRhYmxlLmluaXRpYWxpemVycyBpblxuICBpZiBpbml0cyA8PiBbXSB0aGVuXG4gICAgaXRlcl9mIG9iaiBpbml0c1xuXG5sZXQgcnVuX2luaXRpYWxpemVyc19vcHQgb2JqXzAgb2JqIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqIGVsc2UgYmVnaW5cbiAgICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgICBpZiBpbml0cyA8PiBbXSB0aGVuIGl0ZXJfZiBvYmogaW5pdHM7XG4gICAgb2JqXG4gIGVuZFxuXG5sZXQgY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpemVycyBvYmpfMCB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9ial8wIGVsc2UgYmVnaW5cbiAgICBsZXQgb2JqID0gY3JlYXRlX29iamVjdCB0YWJsZSBpblxuICAgIHJ1bl9pbml0aWFsaXplcnMgb2JqIHRhYmxlO1xuICAgIG9ialxuICBlbmRcblxuKCogRXF1aXZhbGVudCBwcmltaXRpdmUgYmVsb3dcbmxldCBzZW5kc2VsZiBvYmogbGFiID1cbiAgKG1hZ2ljIG9iaiA6IChvYmogLT4gdCkgYXJyYXkgYXJyYXkpLigwKS4obGFiKSBvYmpcbiopXG5leHRlcm5hbCBzZW5kIDogb2JqIC0+IHRhZyAtPiAnYSA9IFwiJXNlbmRcIlxuZXh0ZXJuYWwgc2VuZGNhY2hlIDogb2JqIC0+IHRhZyAtPiB0IC0+IGludCAtPiAnYSA9IFwiJXNlbmRjYWNoZVwiXG5leHRlcm5hbCBzZW5kc2VsZiA6IG9iaiAtPiBsYWJlbCAtPiAnYSA9IFwiJXNlbmRzZWxmXCJcbmV4dGVybmFsIGdldF9wdWJsaWNfbWV0aG9kIDogb2JqIC0+IHRhZyAtPiBjbG9zdXJlXG4gICAgPSBcImNhbWxfZ2V0X3B1YmxpY19tZXRob2RcIiBbQEBub2FsbG9jXVxuXG4oKioqKiB0YWJsZSBjb2xsZWN0aW9uIGFjY2VzcyAqKioqKVxuXG50eXBlIHRhYmxlcyA9XG4gIHwgRW1wdHlcbiAgfCBDb25zIG9mIHtrZXkgOiBjbG9zdXJlOyBtdXRhYmxlIGRhdGE6IHRhYmxlczsgbXV0YWJsZSBuZXh0OiB0YWJsZXN9XG5cbmxldCBzZXRfZGF0YSB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGEgPC0gdlxubGV0IHNldF9uZXh0IHRhYmxlcyB2ID0gbWF0Y2ggdGFibGVzIHdpdGhcbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dCA8LSB2XG5sZXQgZ2V0X2tleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmtleVxubGV0IGdldF9kYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMuZGF0YVxubGV0IGdldF9uZXh0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDb25zIHRhYmxlcyAtPiB0YWJsZXMubmV4dFxuXG5sZXQgYnVpbGRfcGF0aCBuIGtleXMgdGFibGVzID1cbiAgbGV0IHJlcyA9IENvbnMge2tleSA9IE9iai5tYWdpYyAwOyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgbGV0IHIgPSByZWYgcmVzIGluXG4gIGZvciBpID0gMCB0byBuIGRvXG4gICAgciA6PSBDb25zIHtrZXkgPSBrZXlzLihpKTsgZGF0YSA9ICFyOyBuZXh0ID0gRW1wdHl9XG4gIGRvbmU7XG4gIHNldF9kYXRhIHRhYmxlcyAhcjtcbiAgcmVzXG5cbmxldCByZWMgbG9va3VwX2tleXMgaSBrZXlzIHRhYmxlcyA9XG4gIGlmIGkgPCAwIHRoZW4gdGFibGVzIGVsc2VcbiAgbGV0IGtleSA9IGtleXMuKGkpIGluXG4gIGxldCByZWMgbG9va3VwX2tleSAodGFibGVzOnRhYmxlcykgPVxuICAgIGlmIGdldF9rZXkgdGFibGVzID09IGtleSB0aGVuXG4gICAgICBtYXRjaCBnZXRfZGF0YSB0YWJsZXMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgQ29ucyBfIGFzIHRhYmxlc19kYXRhIC0+XG4gICAgICAgICAgbG9va3VwX2tleXMgKGktMSkga2V5cyB0YWJsZXNfZGF0YVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGdldF9uZXh0IHRhYmxlcyB3aXRoXG4gICAgICB8IENvbnMgXyBhcyBuZXh0IC0+IGxvb2t1cF9rZXkgbmV4dFxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBuZXh0IDogdGFibGVzID0gQ29ucyB7a2V5OyBkYXRhID0gRW1wdHk7IG5leHQgPSBFbXB0eX0gaW5cbiAgICAgICAgICBzZXRfbmV4dCB0YWJsZXMgbmV4dDtcbiAgICAgICAgICBidWlsZF9wYXRoIChpLTEpIGtleXMgbmV4dFxuICBpblxuICBsb29rdXBfa2V5IHRhYmxlc1xuXG5sZXQgbG9va3VwX3RhYmxlcyByb290IGtleXMgPVxuICBtYXRjaCBnZXRfZGF0YSByb290IHdpdGhcbiAgfCBDb25zIF8gYXMgcm9vdF9kYXRhIC0+XG4gICAgbG9va3VwX2tleXMgKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290X2RhdGFcbiAgfCBFbXB0eSAtPlxuICAgIGJ1aWxkX3BhdGggKEFycmF5Lmxlbmd0aCBrZXlzIC0gMSkga2V5cyByb290XG5cbigqKioqIGJ1aWx0aW4gbWV0aG9kcyAqKioqKVxuXG5sZXQgZ2V0X2NvbnN0IHggPSByZXQgKGZ1biBfb2JqIC0+IHgpXG5sZXQgZ2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogLT4gQXJyYXkudW5zYWZlX2dldCBvYmogbilcbmxldCBnZXRfZW52IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pXG5sZXQgZ2V0X21ldGggbiAgPSByZXQgKGZ1biBvYmogLT4gc2VuZHNlbGYgb2JqIG4pXG5sZXQgc2V0X3ZhciBuICAgPSByZXQgKGZ1biBvYmogeCAtPiBBcnJheS51bnNhZmVfc2V0IG9iaiBuIHgpXG5sZXQgYXBwX2NvbnN0IGYgeCA9IHJldCAoZnVuIF9vYmogLT4gZiB4KVxubGV0IGFwcF92YXIgZiBuICAgPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2VudiBmIGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9tZXRoIGYgbiAgPSByZXQgKGZ1biBvYmogLT4gZiAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9jb25zdCBmIHggeSA9IHJldCAoZnVuIF9vYmogLT4gZiB4IHkpXG5sZXQgYXBwX2NvbnN0X3ZhciBmIHggbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoQXJyYXkudW5zYWZlX2dldCBvYmogbikpXG5sZXQgYXBwX2NvbnN0X21ldGggZiB4IG4gPSByZXQgKGZ1biBvYmogLT4gZiB4IChzZW5kc2VsZiBvYmogbikpXG5sZXQgYXBwX3Zhcl9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSB4KVxubGV0IGFwcF9tZXRoX2NvbnN0IGYgbiB4ID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSB4KVxubGV0IGFwcF9jb25zdF9lbnYgZiB4IGUgbiA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgeCAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikpXG5sZXQgYXBwX2Vudl9jb25zdCBmIGUgbiB4ID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgZiAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgeClcbmxldCBtZXRoX2FwcF9jb25zdCBuIHggPSByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSB4KVxubGV0IG1ldGhfYXBwX3ZhciBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoQXJyYXkudW5zYWZlX2dldCBvYmogbSkpXG5sZXQgbWV0aF9hcHBfZW52IG4gZSBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXylcbiAgICAgIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBtKSlcbmxldCBtZXRoX2FwcF9tZXRoIG4gbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pIChzZW5kc2VsZiBvYmogbSkpXG5sZXQgc2VuZF9jb25zdCBtIHggYyA9XG4gIHJldCAoZnVuIG9iaiAtPiBzZW5kY2FjaGUgeCBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfdmFyIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pIDogb2JqKSBtXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX2VudiBtIGUgbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlXG4gICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICAgICAgIChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSA6IG9iailcbiAgICAgIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9tZXRoIG0gbiBjID1cbiAgcmV0IChmdW4gb2JqIC0+XG4gICAgc2VuZGNhY2hlIChzZW5kc2VsZiBvYmogbikgbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBuZXdfY2FjaGUgdGFibGUgPVxuICBsZXQgbiA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG4gbW9kIDIgPSAwIHx8IG4gPiAyICsgT2JqLm1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBPYmoubWFnaWMgYXJyLighaSkgaW5cbiAgbWF0Y2ggbmV4dCgpIHdpdGhcbiAgICBHZXRDb25zdCAtPiBsZXQgeCA6IHQgPSBuZXh0KCkgaW4gZ2V0X2NvbnN0IHhcbiAgfCBHZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfdmFyIG5cbiAgfCBHZXRFbnYgICAtPiBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBnZXRfZW52IGUgblxuICB8IEdldE1ldGggIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF9tZXRoIG5cbiAgfCBTZXRWYXIgICAtPiBsZXQgbiA9IG5leHQoKSBpbiBzZXRfdmFyIG5cbiAgfCBBcHBDb25zdCAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBhcHBfY29uc3QgZiB4XG4gIHwgQXBwVmFyICAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF92YXIgZiBuXG4gIHwgQXBwRW52ICAgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluICBsZXQgZSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2VudiBmIGUgblxuICB8IEFwcE1ldGggIC0+IGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBhcHBfbWV0aCBmIG5cbiAgfCBBcHBDb25zdENvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgeSA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2NvbnN0IGYgeCB5XG4gIHwgQXBwQ29uc3RWYXIgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfdmFyIGYgeCBuXG4gIHwgQXBwQ29uc3RFbnYgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCAoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X2VudiBmIHggZSBuXG4gIHwgQXBwQ29uc3RNZXRoIC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpblxuICAgICAgYXBwX2NvbnN0X21ldGggZiB4IG5cbiAgfCBBcHBWYXJDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF92YXJfY29uc3QgZiBuIHhcbiAgfCBBcHBFbnZDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52X2NvbnN0IGYgZSBuIHhcbiAgfCBBcHBNZXRoQ29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluXG4gICAgICBhcHBfbWV0aF9jb25zdCBmIG4geFxuICB8IE1ldGhBcHBDb25zdCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbWV0aF9hcHBfY29uc3QgbiB4XG4gIHwgTWV0aEFwcFZhciAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfdmFyIG4gbVxuICB8IE1ldGhBcHBFbnYgLT5cbiAgICAgIGxldCBuID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBtID0gbmV4dCgpIGluXG4gICAgICBtZXRoX2FwcF9lbnYgbiBlIG1cbiAgfCBNZXRoQXBwTWV0aCAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW4gbWV0aF9hcHBfbWV0aCBuIG1cbiAgfCBTZW5kQ29uc3QgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIHNlbmRfY29uc3QgbSB4IChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZFZhciAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIHNlbmRfdmFyIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRFbnYgLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBzZW5kX2VudiBtIGUgbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IFNlbmRNZXRoIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF9tZXRoIG0gbiAobmV3X2NhY2hlIHRhYmxlKVxuICB8IENsb3N1cmUgXyBhcyBjbG8gLT4gT2JqLm1hZ2ljIGNsb1xuXG5sZXQgc2V0X21ldGhvZHMgdGFibGUgbWV0aG9kcyA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggbWV0aG9kcyBpbiBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgbGV0IGxhYmVsID0gbWV0aG9kcy4oIWkpIGluIGxldCBjbG8gPSBtZXRob2RfaW1wbCB0YWJsZSBpIG1ldGhvZHMgaW5cbiAgICBzZXRfbWV0aG9kIHRhYmxlIGxhYmVsIGNsbztcbiAgICBpbmNyIGlcbiAgZG9uZVxuXG4oKioqKiBTdGF0aXN0aWNzICoqKiopXG5cbnR5cGUgc3RhdHMgPVxuICB7IGNsYXNzZXM6IGludDsgbWV0aG9kczogaW50OyBpbnN0X3ZhcnM6IGludDsgfVxuXG5sZXQgc3RhdHMgKCkgPVxuICB7IGNsYXNzZXMgPSAhdGFibGVfY291bnQ7XG4gICAgbWV0aG9kcyA9ICFtZXRob2RfY291bnQ7IGluc3RfdmFycyA9ICFpbnN0X3Zhcl9jb3VudDsgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNoYXBlID1cbiAgfCBGdW5jdGlvblxuICB8IExhenlcbiAgfCBDbGFzc1xuICB8IE1vZHVsZSBvZiBzaGFwZSBhcnJheVxuICB8IFZhbHVlIG9mIE9iai50XG5cbmxldCByZWMgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBzaGFwZSA9XG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBGdW5jdGlvbiAtPlxuICAgICAgIGxldCByZWMgZm4gKHggOiAnYSkgPVxuICAgICAgICAgbGV0IGZuJyA6ICdhIC0+ICdiID0gT2JqLm9iaiAoT2JqLmZpZWxkIG1vZHUgaSkgaW5cbiAgICAgICAgIGlmIGZuID09IGZuJyB0aGVuXG4gICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGZuJyB4IGluXG4gICAgICAgT2JqLnJlcHIgZm5cbiAgICB8IExhenkgLT5cbiAgICAgICBsZXQgcmVjIGwgPVxuICAgICAgICAgbGF6eSAoXG4gICAgICAgICAgIGxldCBsJyA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICAgIGlmIGwgPT0gbCcgdGhlblxuICAgICAgICAgICAgIHJhaXNlIChVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZSBsb2MpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBMYXp5LmZvcmNlIGwnKSBpblxuICAgICAgIE9iai5yZXByIGxcbiAgICB8IENsYXNzIC0+XG4gICAgICAgT2JqLnJlcHIgKENhbWxpbnRlcm5hbE9PLmR1bW15X2NsYXNzIGxvYylcbiAgICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gICAgfCBWYWx1ZSB2IC0+IHZcbiAgaW5cbiAgT2JqLnNldF9maWVsZCBtb2R1IGkgaW5pdFxuXG5hbmQgaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzID1cbiAgbGV0IGxlbmd0aCA9IEFycmF5Lmxlbmd0aCBjb21wcyBpblxuICBsZXQgbW9kdSA9IE9iai5uZXdfYmxvY2sgMCBsZW5ndGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCAtIDEgZG9cbiAgICBpbml0X21vZF9maWVsZCBtb2R1IGkgbG9jIGNvbXBzLihpKVxuICBkb25lO1xuICBtb2R1XG5cbmxldCBpbml0X21vZCBsb2Mgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIE9iai5yZXByIChpbml0X21vZF9ibG9jayBsb2MgY29tcHMpXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC5pbml0X21vZDogbm90IGEgbW9kdWxlXCJcblxubGV0IHJlYyB1cGRhdGVfbW9kX2ZpZWxkIG1vZHUgaSBzaGFwZSBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEZ1bmN0aW9uIHwgTGF6eSAtPlxuICAgICBPYmouc2V0X2ZpZWxkIG1vZHUgaSBuXG4gIHwgVmFsdWUgXyAtPlxuICAgICAoKSAoKiB0aGUgdmFsdWUgaXMgYWxyZWFkeSB0aGVyZSAqKVxuICB8IENsYXNzIC0+XG4gICAgIGFzc2VydCAoT2JqLnRhZyBuID0gMCAmJiBPYmouc2l6ZSBuID0gNCk7XG4gICAgIGxldCBjbCA9IE9iai5maWVsZCBtb2R1IGkgaW5cbiAgICAgZm9yIGogPSAwIHRvIDMgZG9cbiAgICAgICBPYmouc2V0X2ZpZWxkIGNsIGogKE9iai5maWVsZCBuIGopXG4gICAgIGRvbmVcbiAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgdXBkYXRlX21vZF9ibG9jayBjb21wcyAoT2JqLmZpZWxkIG1vZHUgaSkgblxuXG5hbmQgdXBkYXRlX21vZF9ibG9jayBjb21wcyBvIG4gPVxuICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA+PSBBcnJheS5sZW5ndGggY29tcHMpO1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNvbXBzIC0gMSBkb1xuICAgIHVwZGF0ZV9tb2RfZmllbGQgbyBpIGNvbXBzLihpKSAoT2JqLmZpZWxkIG4gaSlcbiAgZG9uZVxuXG5sZXQgdXBkYXRlX21vZCBzaGFwZSBvIG4gPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuXG4gIHwgXyAtPiBmYWlsd2l0aCBcIkNhbWxpbnRlcm5hbE1vZC51cGRhdGVfbW9kOiBub3QgYSBtb2R1bGVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID0gc2lnXG5cbiAgdHlwZSBrZXlcbiAgdHlwZSAhJ2EgdFxuICB2YWwgY3JlYXRlIDogP3JhbmRvbSAoKnRod2FydCB0b29scy9zeW5jX3N0ZGxpYl9kb2NzKikgOiBib29sIC0+IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0XG4gIHZhbCBjbGVhciA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGFkZCA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICB2YWwgZmluZF9vcHQgOiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICB2YWwgY2xlYW46ICdhIHQgLT4gdW5pdFxuICB2YWwgc3RhdHNfYWxpdmU6ICdhIHQgLT4gSGFzaHRibC5zdGF0aXN0aWNzXG4gICAgKCoqIHNhbWUgYXMgeyFzdGF0c30gYnV0IG9ubHkgY291bnQgdGhlIGFsaXZlIGJpbmRpbmdzICopXG5lbmRcblxubW9kdWxlIEdlbkhhc2hUYWJsZSA9IHN0cnVjdFxuXG4gIHR5cGUgZXF1YWwgPVxuICB8IEVUcnVlIHwgRUZhbHNlXG4gIHwgRURlYWQgKCoqIHRoZSBnYXJiYWdlIGNvbGxlY3RvciByZWNsYWltZWQgdGhlIGRhdGEgKilcblxuICBtb2R1bGUgTWFrZVNlZWRlZChIOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlICdhIGNvbnRhaW5lclxuICAgIHZhbCBjcmVhdGU6IHQgLT4gJ2EgLT4gJ2EgY29udGFpbmVyXG4gICAgdmFsIHNlZWRlZF9oYXNoOiBpbnQgLT4gdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICdhIGNvbnRhaW5lciAtPiB0IC0+IGVxdWFsXG4gICAgdmFsIGdldF9kYXRhOiAnYSBjb250YWluZXIgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIHNldF9rZXlfZGF0YTogJ2EgY29udGFpbmVyIC0+IHQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBjaGVja19rZXk6ICdhIGNvbnRhaW5lciAtPiBib29sXG4gIGVuZCkgOiBTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnRcbiAgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgICAgIG11dGFibGUgZGF0YTogJ2EgYnVja2V0bGlzdCBhcnJheTsgICgqIHRoZSBidWNrZXRzICopXG4gICAgICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGZvciByYW5kb21pemF0aW9uICopXG4gICAgICAgIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICAgICAgfVxuXG4gICAgYW5kICdhIGJ1Y2tldGxpc3QgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbnMgb2YgaW50ICgqIGhhc2ggb2YgdGhlIGtleSAqKSAqICdhIEguY29udGFpbmVyICogJ2EgYnVja2V0bGlzdFxuXG4gICAgKCoqIHRoZSBoYXNoIG9mIHRoZSBrZXkgaXMga2VwdCBpbiBvcmRlciB0byB0ZXN0IHRoZSBlcXVhbGl0eSBvZiB0aGUgaGFzaFxuICAgICAgYmVmb3JlIHRoZSBrZXkuIFNhbWUgcmVhc29uIGFzIGZvciBXZWFrLk1ha2UgKilcblxuICAgIHR5cGUga2V5ID0gSC50XG5cbiAgICBsZXQgcmVjIHBvd2VyXzJfYWJvdmUgeCBuID1cbiAgICAgIGlmIHggPj0gbiB0aGVuIHhcbiAgICAgIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgICAgIGVsc2UgcG93ZXJfMl9hYm92ZSAoeCAqIDIpIG5cblxuICAgIGxldCBwcm5nID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0KCkpXG5cbiAgICBsZXQgY3JlYXRlID8ocmFuZG9tID0gKEhhc2h0YmwuaXNfcmFuZG9taXplZCAoKSkpIGluaXRpYWxfc2l6ZSA9XG4gICAgICBsZXQgcyA9IHBvd2VyXzJfYWJvdmUgMTYgaW5pdGlhbF9zaXplIGluXG4gICAgICBsZXQgc2VlZCA9IGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpIGVsc2UgMCBpblxuICAgICAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG4gICAgbGV0IGNsZWFyIGggPVxuICAgICAgaC5zaXplIDwtIDA7XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgZG9uZVxuXG4gICAgbGV0IHJlc2V0IGggPVxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGlmIGxlbiA9IGguaW5pdGlhbF9zaXplIHRoZW5cbiAgICAgICAgY2xlYXIgaFxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBoLnNpemUgPC0gMDtcbiAgICAgICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgaC5pbml0aWFsX3NpemUgRW1wdHlcbiAgICAgIGVuZFxuXG4gICAgbGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5jb3B5IGguZGF0YSB9XG5cbiAgICBsZXQga2V5X2luZGV4IGggaGtleSA9XG4gICAgICBoa2V5IGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGNsZWFuIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBub3QgKEguY2hlY2tfa2V5IGMpIC0+XG4gICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgIGRvX2J1Y2tldCByZXN0XG4gICAgICAgIHwgQ29ucyhoa2V5LCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgQ29ucyhoa2V5LCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgICgqKiByZXNpemUgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdG8gZG8gdGhlIGFjdHVhbCBjbGVhbmluZyBvZiBkZWFkIGtleXNcbiAgICAgICAgKHJlbW92ZSBkb2VzIGl0IGp1c3QgYmVjYXVzZSBpdCBjb3VsZCkuXG5cbiAgICAgICAgVGhlIGdvYWwgaXMgdG86XG5cbiAgICAgICAgLSBub3QgcmVzaXplIGluZmluaXRlbHkgd2hlbiB0aGUgYWN0dWFsIG51bWJlciBvZiBhbGl2ZSBrZXlzIGlzXG4gICAgICAgIGJvdW5kZWQgYnV0IGtleXMgYXJlIGNvbnRpbnVvdXNseSBhZGRlZC4gVGhhdCB3b3VsZCBoYXBwZW4gaWZcbiAgICAgICAgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmVzaXplLlxuICAgICAgICAtIG5vdCBjYWxsIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgZWFjaCBhZGRpdGlvbiwgdGhhdCB3b3VsZCBoYXBwZW4gaWYgdGhpc1xuICAgICAgICBmdW5jdGlvbiBkb24ndCByZXNpemUgZXZlbiB3aGVuIG9ubHkgb25lIGtleSBpcyBkZWFkLlxuXG4gICAgICAgIFNvIHRoZSBhbGdvcml0aG06XG4gICAgICAgIC0gY2xlYW4gdGhlIGtleXMgYmVmb3JlIHJlc2l6aW5nXG4gICAgICAgIC0gaWYgdGhlIG51bWJlciBvZiByZW1haW5pbmcga2V5cyBpcyBsZXNzIHRoYW4gaGFsZiB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgYXJyYXksIGRvbid0IHJlc2l6ZS5cbiAgICAgICAgLSBpZiBpdCBpcyBtb3JlLCByZXNpemUuXG5cbiAgICAgICAgVGhlIHNlY29uZCBwcm9ibGVtIHJlbWFpbnMgaWYgdGhlIHRhYmxlIHJlYWNoZXMgeyFTeXMubWF4X2FycmF5X2xlbmd0aH0uXG5cbiAgICAqKVxuICAgIGxldCByZXNpemUgaCA9XG4gICAgICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICAgICAgbGV0IG5zaXplID0gb3NpemUgKiAyIGluXG4gICAgICBjbGVhbiBoO1xuICAgICAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCAmJiBoLnNpemUgPj0gb3NpemUgbHNyIDEgdGhlbiBiZWdpblxuICAgICAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgKCogc28gdGhhdCBrZXlfaW5kZXggc2VlcyB0aGUgbmV3IGJ1Y2tldCBjb3VudCAqKVxuICAgICAgICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgICAgICB8IENvbnMoaGtleSwgZGF0YSwgcmVzdCkgLT5cbiAgICAgICAgICAgICAgaW5zZXJ0X2J1Y2tldCByZXN0OyAoKiBwcmVzZXJ2ZSBvcmlnaW5hbCBvcmRlciBvZiBlbGVtZW50cyAqKVxuICAgICAgICAgICAgICBsZXQgbmlkeCA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgICAgICAgICAgbmRhdGEuKG5pZHgpIDwtIENvbnMoaGtleSwgZGF0YSwgbmRhdGEuKG5pZHgpKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gb3NpemUgLSAxIGRvXG4gICAgICAgICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgICAgICAgZG9uZVxuICAgICAgZW5kXG5cbiAgICBsZXQgYWRkIGgga2V5IGluZm8gPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29ucyhoa2V5LCBjb250YWluZXIsIGguZGF0YS4oaSkpIGluXG4gICAgICBoLmRhdGEuKGkpIDwtIGJ1Y2tldDtcbiAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgcmVtb3ZlIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWMga2V5IGhrZXkgKGguZGF0YS4oa2V5X2luZGV4IGggaGtleSkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrZXkgPSBoayAgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICB8IEVUcnVlIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgKCogVGhpcyBjYXNlIGlzIG5vdCBpbXBvc3NpYmxlIGJlY2F1c2UgdGhlIGdjIGNhbiBydW4gYmV0d2VlblxuICAgICAgICAgICAgICAgICAgICAgIEguZXF1YWwgYW5kIEguZ2V0X2RhdGEgKilcbiAgICAgICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBfIGFzIGQgLT4gZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICB8IEVGYWxzZSAtPiBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgICgqIFRPRE8gaW5saW5lIDMgaXRlcmF0aW9ucyAqKVxuICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlcGxhY2VfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgfCBDb25zKGhrLCBjLCBuZXh0KSB3aGVuIGhrZXkgPSBoayAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgICB8IEVUcnVlIC0+IEguc2V0X2tleV9kYXRhIGMga2V5IGluZm9cbiAgICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhfLF8sbmV4dCkgLT4gcmVwbGFjZV9idWNrZXQgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICB0cnlcbiAgICAgICAgcmVwbGFjZV9idWNrZXQgbFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IEguY3JlYXRlIGtleSBpbmZvIGluXG4gICAgICAgIGguZGF0YS4oaSkgPC0gQ29ucyhoa2V5LCBjb250YWluZXIsIGwpO1xuICAgICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBoXG5cbiAgICBsZXQgbWVtIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGsgPSBoa2V5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiB0cnVlXG4gICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiBtZW1faW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfaGssIF9jLCByZXN0KSAtPiBtZW1faW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG4gICAgbGV0IGxlbmd0aCBoID0gaC5zaXplXG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgcmVzdFxuXG4gICAgbGV0IHN0YXRzIGggPVxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aCAwIGIgaW5cbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSBoLnNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgcmVjIGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIEguY2hlY2tfa2V5IGMgLT5cbiAgICAgICAgICBidWNrZXRfbGVuZ3RoX2FsaXZlIChhY2N1ICsgMSkgcmVzdFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+IGJ1Y2tldF9sZW5ndGhfYWxpdmUgYWNjdSByZXN0XG5cbiAgICBsZXQgc3RhdHNfYWxpdmUgaCA9XG4gICAgICBsZXQgc2l6ZSA9IHJlZiAwIGluXG4gICAgICBsZXQgbWJsID1cbiAgICAgICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYikpIDAgaC5kYXRhXG4gICAgICBpblxuICAgICAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICAgICAgQXJyYXkuaXRlclxuICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoX2FsaXZlIDAgYiBpblxuICAgICAgICAgICBzaXplIDo9ICFzaXplICsgbDtcbiAgICAgICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgICAgIGguZGF0YTtcbiAgICAgIHsgSGFzaHRibC5udW1fYmluZGluZ3MgPSAhc2l6ZTtcbiAgICAgICAgbnVtX2J1Y2tldHMgPSBBcnJheS5sZW5ndGggaC5kYXRhO1xuICAgICAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICAgICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuICAgIGxldCBhZGRfc2VxIHRibCBpID1cbiAgICAgIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxuICAgIGxldCByZXBsYWNlX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG5cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9iakVwaCA9IE9iai5FcGhlbWVyb25cblxubGV0IF9vYmpfb3B0IDogT2JqLnQgb3B0aW9uIC0+ICdhIG9wdGlvbiA9IGZ1biB4IC0+XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgdiAtPiBTb21lIChPYmoub2JqIHYpXG5cbigqKiBUaGUgcHJldmlvdXMgZnVuY3Rpb24gaXMgdHlwZWQgc28gdGhpcyBvbmUgaXMgYWxzbyBjb3JyZWN0ICopXG5sZXQgb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPiBPYmoubWFnaWMgeFxuXG5cbm1vZHVsZSBLMSA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgMVxuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKGs6J2spIDogdW5pdCA9IE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkgZXBoIGtleTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleSA9XG4gICAgbWF0Y2ggZ2V0X2tleSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleSAtPiBnZXRfZGF0YSBlcGhcbiAgICB8IFNvbWUgXyAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggPSBILnNlZWRlZF9oYXNoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgKCogeyFnZXRfa2V5X2NvcHl9IGlzIG5vdCB1c2VkIGJlY2F1c2UgdGhlIGVxdWFsaXR5IG9mIHRoZSB1c2VyIGNhbiBiZVxuICAgICAgICAgICAgdGhlIHBoeXNpY2FsIGVxdWFsaXR5ICopXG4gICAgICAgIG1hdGNoIGdldF9rZXkgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsnIC0+XG4gICAgICAgICAgICBpZiBILmVxdWFsIGsgaycgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSA9IGNoZWNrX2tleVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSC5oYXNoIHhcbiAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrLCAnZCkgdCA9ICgnaywgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazFfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrIGQgPSBiIDo9IGsxX21ha2UgayBkIDo6ICFiXG5cbiAgICBsZXQgdGVzdF9rZXkgayBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkgZSB3aXRoXG4gICAgICB8IFNvbWUgeCB3aGVuIHggPT0gayAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXkgayBoIC0+IGIgOj0gTGlzdC5yZXZfYXBwZW5kIGFjYyB0XG4gICAgICAgIHwgaCA6OiB0IC0+IGxvb3AgdCAoaCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAhYiBbXVxuXG4gICAgbGV0IGZpbmQgYiBrID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5IGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBzZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2sxKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMCAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGdldF9rZXkyICh0OignazEsJ2syLCdkKSB0KSA6ICdrMiBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAxXG5cbiAgbGV0IGdldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleTEga2V5MiBkYXRhID1cbiAgICBsZXQgZXBoID0gY3JlYXRlICgpIGluXG4gICAgc2V0X2RhdGEgZXBoIGRhdGE7XG4gICAgc2V0X2tleTEgZXBoIGtleTE7XG4gICAgc2V0X2tleTIgZXBoIGtleTI7XG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IGtleTEpO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5MSBrZXkyID1cbiAgICBtYXRjaCBnZXRfa2V5MSBlcGggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGsgd2hlbiBrID09IGtleTEgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZ2V0X2tleTIgZXBoIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleTIgLT4gZ2V0X2RhdGEgZXBoXG4gICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBzZWVkZWRfaGFzaCBzZWVkIChrMSxrMikgPVxuICAgICAgICBIMS5zZWVkZWRfaGFzaCBzZWVkIGsxICsgSDIuc2VlZGVkX2hhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEgxLmhhc2ggeFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMi50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDIuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMi5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2sxLCAnazIsICdkKSB0ID0gKCdrMSwgJ2syLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrMl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsxIGsyIGQgPSBiIDo9IGsyX21ha2UgazEgazIgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrMSBrMiBlID1cbiAgICAgIG1hdGNoIGdldF9rZXkxIGUsIGdldF9rZXkyIGUgd2l0aFxuICAgICAgfCBTb21lIHgxLCBTb21lIHgyIHdoZW4geDEgPT0gazEgJiYgeDIgPT0gazIgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgazEgazIgPVxuICAgICAgbGV0IHJlYyBsb29wIGwgYWNjID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBoIDo6IHQgd2hlbiB0ZXN0X2tleXMgazEgazIgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgazEgazIgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGsxIGsyKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLbiA9IHN0cnVjdFxuICB0eXBlICgnaywnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSBuIDogKCdrLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSBuXG4gIGxldCBsZW5ndGggKGs6KCdrLCdkKSB0KSA6IGludCA9IE9iakVwaC5sZW5ndGgga1xuXG4gIGxldCBnZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSA6ICdrIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSAoZDonZCkgOiB1bml0ID0gT2JqRXBoLnNldF9kYXRhIHQgKE9iai5yZXByIGQpXG4gIGxldCB1bnNldF9kYXRhICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuXG4gIGxldCBtYWtlIGtleXMgZGF0YSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGgga2V5cyBpblxuICAgIGxldCBlcGggPSBjcmVhdGUgbCBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyBzZXRfa2V5IGVwaCBpIGtleXMuKGkpIGRvbmU7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXlzID1cbiAgICBsZXQgbCA9IGxlbmd0aCBlcGggaW5cbiAgICB0cnlcbiAgICAgIGlmIGwgPD4gQXJyYXkubGVuZ3RoIGtleXMgdGhlbiByYWlzZSBFeGl0O1xuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIG1hdGNoIGdldF9rZXkgZXBoIGkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2UgRXhpdFxuICAgICAgICB8IFNvbWUgayB3aGVuIGsgPT0ga2V5cy4oaSkgLT4gKClcbiAgICAgICAgfCBTb21lIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGdldF9kYXRhIGVwaFxuICAgIHdpdGggRXhpdCAtPiBOb25lXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudCBhcnJheVxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoQXJyYXkubGVuZ3RoIGspIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCBrID1cbiAgICAgICAgbGV0IGggPSByZWYgMCBpblxuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgaCA6PSBILnNlZWRlZF9oYXNoIHNlZWQgay4oaSkgKiA2NTU5OSArICFoO1xuICAgICAgICBkb25lO1xuICAgICAgICAhaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgIGxldCBsZW4gID0gQXJyYXkubGVuZ3RoIGsgaW5cbiAgICAgICAgbGV0IGxlbicgPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gIT0gbGVuJyB0aGVuIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCByZWMgZXF1YWxfYXJyYXkgayBjIGkgPVxuICAgICAgICAgICAgaWYgaSA8IDAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggZ2V0X2tleSBjIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgICAgICAgIHwgU29tZSBraSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrLihpKSBraVxuICAgICAgICAgICAgICAgICAgdGhlbiBlcXVhbF9hcnJheSBrIGMgKGktMSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXF1YWxfYXJyYXkgayBjIChsZW4tMSlcbiAgICAgIGxldCBnZXRfZGF0YSA9IGdldF9kYXRhXG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBmb3IgaT0wIHRvIEFycmF5Lmxlbmd0aCBrIC0xIGRvXG4gICAgICAgICAgc2V0X2tleSBjIGkgay4oaSk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID1cbiAgICAgICAgbGV0IHJlYyBjaGVjayBjIGkgPVxuICAgICAgICAgIGkgPCAwIHx8IChjaGVja19rZXkgYyBpICYmIGNoZWNrIGMgKGktMSkpIGluXG4gICAgICAgIGNoZWNrIGMgKGxlbmd0aCBjIC0gMSlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCBhcnJheSkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGtuX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrbl9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5cyBrIGUgPVxuICAgICAgdHJ5XG4gICAgICAgIGlmIGxlbmd0aCBlIDw+IEFycmF5Lmxlbmd0aCBrIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBrIC0gMSBkb1xuICAgICAgICAgIG1hdGNoIGdldF9rZXkgZSBpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCB3aGVuIHggPT0gay4oaSkgLT4gKClcbiAgICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgICAgICBkb25lO1xuICAgICAgICB0cnVlXG4gICAgICB3aXRoIEV4aXQgLT4gZmFsc2VcblxuICAgIGxldCByZW1vdmUgYiBrID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleXMgaykgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgRGFtaWVuIERvbGlnZXosIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ2VuZXJpY19xdW90ZSBxdW90ZXF1b3RlIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIGlmIHMuW2ldID0gJ1xcJydcbiAgICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcXVvdGVxdW90ZVxuICAgIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGIgIHMuW2ldXG4gIGRvbmU7XG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzFdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvYmFzZW5hbWUuaHRtbFxuICBJbiBzdGVwIDEgb2YgW1sxXV0sIHdlIGNob29zZSB0byByZXR1cm4gXCIuXCIgZm9yIGVtcHR5IGlucHV0LlxuICAgIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sKVxuICBJbiBzdGVwIDIsIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiAgU3RlcCA2IGlzIG5vdCBpbXBsZW1lbnRlZDogd2UgY29uc2lkZXIgdGhhdCB0aGUgW3N1ZmZpeF0gb3BlcmFuZCBpc1xuICAgIGFsd2F5cyBhYnNlbnQuICBTdWZmaXhlcyBhcmUgaGFuZGxlZCBieSBbY2hvcF9zdWZmaXhdIGFuZCBbY2hvcF9leHRlbnNpb25dLlxuKilcbmxldCBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyBmaW5kX2VuZCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gZmluZF9lbmQgKG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgbiAobiArIDEpXG4gIGFuZCBmaW5kX2JlZyBuIHAgPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgcFxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBTdHJpbmcuc3ViIG5hbWUgKG4gKyAxKSAocCAtIG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgKG4gLSAxKSBwXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIGZpbmRfZW5kIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzJdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvZGlybmFtZS5odG1sXG4gIEluIHN0ZXAgNiBvZiBbWzJdXSwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuKilcbmxldCBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIHRyYWlsaW5nX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gdHJhaWxpbmdfc2VwIChuIC0gMSlcbiAgICBlbHNlIGJhc2UgblxuICBhbmQgYmFzZSBuID1cbiAgICBpZiBuIDwgMCB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCBuXG4gICAgZWxzZSBiYXNlIChuIC0gMSlcbiAgYW5kIGludGVybWVkaWF0ZV9zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgKG4gLSAxKVxuICAgIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKG4gKyAxKVxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSB0cmFpbGluZ19zZXAgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbm1vZHVsZSB0eXBlIFNZU0RFUFMgPSBzaWdcbiAgdmFsIG51bGwgOiBzdHJpbmdcbiAgdmFsIGN1cnJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHBhcmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgZGlyX3NlcCA6IHN0cmluZ1xuICB2YWwgaXNfZGlyX3NlcCA6IHN0cmluZyAtPiBpbnQgLT4gYm9vbFxuICB2YWwgaXNfcmVsYXRpdmUgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaXNfaW1wbGljaXQgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hlY2tfc3VmZml4IDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaG9wX3N1ZmZpeF9vcHQgOiBzdWZmaXg6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCB0ZW1wX2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHF1b3RlX2NvbW1hbmQgOlxuICAgIHN0cmluZyAtPiA/c3RkaW46IHN0cmluZyAtPiA/c3Rkb3V0OiBzdHJpbmcgLT4gP3N0ZGVycjogc3RyaW5nXG4gICAgICAgICAgIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuICB2YWwgYmFzZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBkaXJuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVbml4IDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gcy5baV0gPSAnLydcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPSBTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJ1xuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDpzdWZmIG5hbWVcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiByID0gc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJUTVBESVJcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi90bXBcIlxuICBsZXQgcXVvdGUgPSBnZW5lcmljX3F1b3RlIFwiJ1xcXFwnJ1wiXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIChjbWQgOjogYXJncykpXG4gICAgXiAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlIGYpXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBXaW4zMiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIk5VTFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiXFxcXFwiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IGxldCBjID0gcy5baV0gaW4gYyA9ICcvJyB8fCBjID0gJ1xcXFwnIHx8IGMgPSAnOidcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPVxuICAgIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnXFxcXCcpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgbi5bMV0gPD4gJzonKVxuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuXFxcXFwiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi5cXFxcXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgIFN0cmluZy5sZW5ndGggbmFtZSA+PSBTdHJpbmcubGVuZ3RoIHN1ZmYgJiZcbiAgIChsZXQgcyA9IFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIHN1ZmYpIGluXG4gICAgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmKVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgciA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRFTVBcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi5cIlxuICBsZXQgcXVvdGUgcyA9XG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIicgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnXFxcIicgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgYyAgICAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjOyBsb29wIChpKzEpO1xuICAgIGFuZCBsb29wX2JzIG4gaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICAgICAgYWRkX2JzIG47XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJ1xcXCInIC0+IGFkZF9icyAoMipuKzEpOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7IGxvb3AgKGkrMSk7XG4gICAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgKG4rMSkgKGkrMSk7XG4gICAgICAgIHwgXyAgICAtPiBhZGRfYnMgbjsgbG9vcCBpXG4gICAgICBlbmRcbiAgICBhbmQgYWRkX2JzIG4gPSBmb3IgX2ogPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnOyBkb25lXG4gICAgaW5cbiAgICBsb29wIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbigqXG5RdW90aW5nIGNvbW1hbmRzIGZvciBleGVjdXRpb24gYnkgY21kLmV4ZSBpcyBkaWZmaWN1bHQuXG4xLSBFYWNoIGFyZ3VtZW50IGlzIGZpcnN0IHF1b3RlZCB1c2luZyB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlLCB0b1xuICAgcHJvdGVjdCBpdCBhZ2FpbnN0IHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSxcbiAgIHRoZW4gY21kLmV4ZSdzIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB3aXRoICdeJywgdXNpbmdcbiAgIHRoZSBcInF1b3RlX2NtZFwiIGZ1bmN0aW9uIGJlbG93LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlLzIwMTEvMDQvMjNcbjItIFRoZSBjb21tYW5kIGFuZCB0aGUgcmVkaXJlY3Rpb24gZmlsZXMsIGlmIGFueSwgbXVzdCBiZSBkb3VibGUtcXVvdGVkXG4gICBpbiBjYXNlIHRoZXkgY29udGFpbiBzcGFjZXMuICBUaGlzIHF1b3RpbmcgaXMgaW50ZXJwcmV0ZWQgYnkgY21kLmV4ZSxcbiAgIG5vdCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSwgaGVuY2UgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZVxuICAgY2Fubm90IGJlIHVzZWQuICBUaGUgdHdvIGNoYXJhY3RlcnMgd2UgZG9uJ3Qga25vdyBob3cgdG8gcXVvdGVcbiAgIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY21kLmV4ZSBzdHJpbmcgYXJlIGRvdWJsZS1xdW90ZSBhbmQgcGVyY2VudC5cbiAgIFdlIGp1c3QgZmFpbCBpZiB0aGUgY29tbWFuZCBuYW1lIG9yIHRoZSByZWRpcmVjdGlvbiBmaWxlIG5hbWVzXG4gICBjb250YWluIGEgZG91YmxlIHF1b3RlIChub3QgYWxsb3dlZCBpbiBXaW5kb3dzIGZpbGUgbmFtZXMsIGFueXdheSlcbiAgIG9yIGEgcGVyY2VudC4gIFNlZSBmdW5jdGlvbiBcInF1b3RlX2NtZF9maWxlbmFtZVwiIGJlbG93LlxuMy0gVGhlIHdob2xlIHN0cmluZyBwYXNzZWQgdG8gU3lzLmNvbW1hbmQgaXMgdGhlbiBlbmNsb3NlZCBpbiBkb3VibGVcbiAgIHF1b3Rlcywgd2hpY2ggYXJlIGltbWVkaWF0ZWx5IHN0cmlwcGVkIGJ5IGNtZC5leGUuICBPdGhlcndpc2UsXG4gICBzb21lIG9mIHRoZSBkb3VibGUgcXVvdGVzIGZyb20gc3RlcCAyIGFib3ZlIGNhbiBiZSBtaXNwYXJzZWQuXG4gICBTZWUgZS5nLiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTk2NTE0MVxuKilcbiAgbGV0IHF1b3RlX2NtZCBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIDIwKSBpblxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJygnIHwgJyknIHwgJyEnIHwgJ14nIHwgJyUnIHwgJ1xcXCInIHwgJzwnIHwgJz4nIHwgJyYnIHwgJ3wnIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXic7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjKVxuICAgICAgcztcbiAgICBCdWZmZXIuY29udGVudHMgYlxuICBsZXQgcXVvdGVfY21kX2ZpbGVuYW1lIGYgPVxuICAgIGlmIFN0cmluZy5leGlzdHMgKGZ1bmN0aW9uICdcXFwiJyB8ICclJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgZiB0aGVuXG4gICAgICBmYWlsd2l0aCAoXCJGaWxlbmFtZS5xdW90ZV9jb21tYW5kOiBiYWQgZmlsZSBuYW1lIFwiIF4gZilcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBmICcgJyB0aGVuXG4gICAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1wiXFxcIlwiOyBmOyBcIlxcXCJcIl1cbiAgICBlbHNlXG4gICAgICBmXG4gICgqIFJlZGlyZWN0aW9ucyBpbiBjbWQuZXhlOiBzZWUgaHR0cHM6Ly9zczY0LmNvbS9udC9zeW50YXgtcmVkaXJlY3Rpb24uaHRtbFxuICAgICBhbmQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvd2luZG93cy9pdC1wcm8vd2luZG93cy14cC9iYjQ5MDk4Mih2PXRlY2huZXQuMTApXG4gICopXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXG4gICAgICBcIlxcXCJcIjtcbiAgICAgIHF1b3RlX2NtZF9maWxlbmFtZSBjbWQ7XG4gICAgICBcIiBcIjtcbiAgICAgIHF1b3RlX2NtZCAoU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgYXJncykpO1xuICAgICAgKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIFwiXFxcIlwiXG4gICAgXVxuICBsZXQgaGFzX2RyaXZlIHMgPVxuICAgIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvblxuICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIGlzX2xldHRlciBzLlswXSAmJiBzLlsxXSA9ICc6J1xuICBsZXQgZHJpdmVfYW5kX3BhdGggcyA9XG4gICAgaWYgaGFzX2RyaXZlIHNcbiAgICB0aGVuIChTdHJpbmcuc3ViIHMgMCAyLCBTdHJpbmcuc3ViIHMgMiAoU3RyaW5nLmxlbmd0aCBzIC0gMikpXG4gICAgZWxzZSAoXCJcIiwgcylcbiAgbGV0IGRpcm5hbWUgcyA9XG4gICAgbGV0IChkcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgbGV0IGRpciA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aCBpblxuICAgIGRyaXZlIF4gZGlyXG4gIGxldCBiYXNlbmFtZSBzID1cbiAgICBsZXQgKF9kcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBDeWd3aW4gOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCA9IFdpbjMyLmlzX2Rpcl9zZXBcbiAgbGV0IGlzX3JlbGF0aXZlID0gV2luMzIuaXNfcmVsYXRpdmVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gV2luMzIuaXNfaW1wbGljaXRcbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IFdpbjMyLmNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gV2luMzIuY2hvcF9zdWZmaXhfb3B0XG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gVW5peC50ZW1wX2Rpcl9uYW1lXG4gIGxldCBxdW90ZSA9IFVuaXgucXVvdGVcbiAgbGV0IHF1b3RlX2NvbW1hbmQgPSBVbml4LnF1b3RlX2NvbW1hbmRcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFN5c2RlcHMgPVxuICAodmFsIChtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgfCBcIldpbjMyXCIgLT4gKG1vZHVsZSBXaW4zMjogU1lTREVQUylcbiAgICAgICB8IFwiQ3lnd2luXCIgLT4gKG1vZHVsZSBDeWd3aW46IFNZU0RFUFMpXG4gICAgICAgfCBfIC0+IChtb2R1bGUgVW5peDogU1lTREVQUykpKVxuXG5pbmNsdWRlIFN5c2RlcHNcblxubGV0IGNvbmNhdCBkaXJuYW1lIGZpbGVuYW1lID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGRpcm5hbWUgaW5cbiAgaWYgbCA9IDAgfHwgaXNfZGlyX3NlcCBkaXJuYW1lIChsLTEpXG4gIHRoZW4gZGlybmFtZSBeIGZpbGVuYW1lXG4gIGVsc2UgZGlybmFtZSBeIGRpcl9zZXAgXiBmaWxlbmFtZVxuXG5sZXQgY2hvcF9zdWZmaXggbmFtZSBzdWZmID1cbiAgaWYgY2hlY2tfc3VmZml4IG5hbWUgc3VmZlxuICB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYpXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX3N1ZmZpeFwiXG5cbmxldCBleHRlbnNpb25fbGVuIG5hbWUgPVxuICBsZXQgcmVjIGNoZWNrIGkwIGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpMCAoaSAtIDEpXG4gICAgZWxzZSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBpMFxuICBpblxuICBsZXQgcmVjIHNlYXJjaF9kb3QgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkgKGkgLSAxKVxuICAgIGVsc2Ugc2VhcmNoX2RvdCAoaSAtIDEpXG4gIGluXG4gIHNlYXJjaF9kb3QgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbmxldCBleHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbCkgbFxuXG5sZXQgY2hvcF9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX2V4dGVuc2lvblwiXG4gIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmxldCByZW1vdmVfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIG5hbWUgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxuZXh0ZXJuYWwgb3Blbl9kZXNjOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5leHRlcm5hbCBjbG9zZV9kZXNjOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuXG5sZXQgcHJuZ19rZXkgPVxuICBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbmxldCB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJhbmRvbV9zdGF0ZSA9IERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5IGluXG4gIGxldCBybmQgPSAoUmFuZG9tLlN0YXRlLmJpdHMgcmFuZG9tX3N0YXRlKSBsYW5kIDB4RkZGRkZGIGluXG4gIGNvbmNhdCB0ZW1wX2RpciAoUHJpbnRmLnNwcmludGYgXCIlcyUwNnglc1wiIHByZWZpeCBybmQgc3VmZml4KVxuXG5sZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpGdW4uaWQgKGZ1biAoKSAtPiB0ZW1wX2Rpcl9uYW1lKVxuXG5sZXQgc2V0X3RlbXBfZGlyX25hbWUgcyA9IERvbWFpbi5ETFMuc2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSBzXG5sZXQgZ2V0X3RlbXBfZGlyX25hbWUgKCkgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWVcblxubGV0IHRlbXBfZmlsZSA/KHRlbXBfZGlyID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIGNsb3NlX2Rlc2Mob3Blbl9kZXNjIG5hbWUgW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX2V4Y2xdIDBvNjAwKTtcbiAgICAgIG5hbWVcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMjAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDIwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuXG5sZXQgdGVtcF9kaXIgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSlcbiAgICA/KHBlcm1zID0gMG83MDApIHByZWZpeCBzdWZmaXggPVxuICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCBpblxuICAgIHRyeVxuICAgICAgU3lzLm1rZGlyIG5hbWUgcGVybXM7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDIwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgaW4gdHJ5X25hbWUgMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDb21wbGV4IG51bWJlcnMgKilcblxudHlwZSB0ID0geyByZTogZmxvYXQ7IGltOiBmbG9hdCB9XG5cbmxldCB6ZXJvID0geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxubGV0IG9uZSA9IHsgcmUgPSAxLjA7IGltID0gMC4wIH1cbmxldCBpID0geyByZSA9IDAuMDsgaW0gPSAxLjAgfVxuXG5sZXQgYWRkIHggeSA9IHsgcmUgPSB4LnJlICsuIHkucmU7IGltID0geC5pbSArLiB5LmltIH1cblxubGV0IHN1YiB4IHkgPSB7IHJlID0geC5yZSAtLiB5LnJlOyBpbSA9IHguaW0gLS4geS5pbSB9XG5cbmxldCBuZWcgeCA9IHsgcmUgPSAtLiB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgY29uaiB4ID0geyByZSA9IHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBtdWwgeCB5ID0geyByZSA9IHgucmUgKi4geS5yZSAtLiB4LmltICouIHkuaW07XG4gICAgICAgICAgICAgICAgaW0gPSB4LnJlICouIHkuaW0gKy4geC5pbSAqLiB5LnJlIH1cblxubGV0IGRpdiB4IHkgPVxuICBpZiBhYnNfZmxvYXQgeS5yZSA+PSBhYnNfZmxvYXQgeS5pbSB0aGVuXG4gICAgbGV0IHIgPSB5LmltIC8uIHkucmUgaW5cbiAgICBsZXQgZCA9IHkucmUgKy4gciAqLiB5LmltIGluXG4gICAgeyByZSA9ICh4LnJlICsuIHIgKi4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHguaW0gLS4gciAqLiB4LnJlKSAvLiBkIH1cbiAgZWxzZVxuICAgIGxldCByID0geS5yZSAvLiB5LmltIGluXG4gICAgbGV0IGQgPSB5LmltICsuIHIgKi4geS5yZSBpblxuICAgIHsgcmUgPSAociAqLiB4LnJlICsuIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9IChyICouIHguaW0gLS4geC5yZSkgLy4gZCB9XG5cbmxldCBpbnYgeCA9IGRpdiBvbmUgeFxuXG5sZXQgbm9ybTIgeCA9IHgucmUgKi4geC5yZSArLiB4LmltICouIHguaW1cblxubGV0IG5vcm0geCA9IEZsb2F0Lmh5cG90IHgucmUgeC5pbVxuXG5sZXQgYXJnIHggPSBhdGFuMiB4LmltIHgucmVcblxubGV0IHBvbGFyIG4gYSA9IHsgcmUgPSBjb3MgYSAqLiBuOyBpbSA9IHNpbiBhICouIG4gfVxuXG5sZXQgc3FydCB4ID1cbiAgaWYgeC5yZSA9IDAuMCAmJiB4LmltID0gMC4wIHRoZW4geyByZSA9IDAuMDsgaW0gPSAwLjAgfVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBhYnNfZmxvYXQgeC5yZSBhbmQgaSA9IGFic19mbG9hdCB4LmltIGluXG4gICAgbGV0IHcgPVxuICAgICAgaWYgciA+PSBpIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IHEgPSBpIC8uIHIgaW5cbiAgICAgICAgc3FydChyKSAqLiBzcXJ0KDAuNSAqLiAoMS4wICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IHEgPSByIC8uIGkgaW5cbiAgICAgICAgc3FydChpKSAqLiBzcXJ0KDAuNSAqLiAocSArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBpblxuICAgIGlmIHgucmUgPj0gMC4wXG4gICAgdGhlbiB7IHJlID0gdzsgIGltID0gMC41ICouIHguaW0gLy4gdyB9XG4gICAgZWxzZSB7IHJlID0gMC41ICouIGkgLy4gdzsgIGltID0gaWYgeC5pbSA+PSAwLjAgdGhlbiB3IGVsc2UgLS4gdyB9XG4gIGVuZFxuXG5sZXQgZXhwIHggPVxuICBsZXQgZSA9IGV4cCB4LnJlIGluIHsgcmUgPSBlICouIGNvcyB4LmltOyBpbSA9IGUgKi4gc2luIHguaW0gfVxuXG5sZXQgbG9nIHggPSB7IHJlID0gbG9nIChub3JtIHgpOyBpbSA9IGF0YW4yIHguaW0geC5yZSB9XG5cbmxldCBwb3cgeCB5ID0gZXhwIChtdWwgeSAobG9nIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICBLQyBTaXZhcmFtYWtyaXNobmFuLCBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMSBJbmRpYW4gSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIE1hZHJhcyAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSAuLlxuZXh0ZXJuYWwgcGVyZm9ybSA6ICdhIHQgLT4gJ2EgPSBcIiVwZXJmb3JtXCJcblxudHlwZSBleG4gKz0gVW5oYW5kbGVkOiAnYSB0IC0+IGV4blxuZXhjZXB0aW9uIENvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcblxubGV0ICgpID1cbiAgbGV0IHByaW50ZXIgPSBmdW5jdGlvblxuICAgIHwgVW5oYW5kbGVkIHggLT5cbiAgICAgICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiU3RkbGliLkVmZmVjdC5VbmhhbmRsZWQoJXMpXCJcbiAgICAgICAgICAgIChQcmludGV4Yy5zdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEBAIE9iai5yZXByIHgpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgbXNnXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBwcmludGVyXG5cbigqIFJlZ2lzdGVyIHRoZSBleGNlcHRpb25zIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIGFjY2VzcyBpdCAqKVxudHlwZSBfIHQgKz0gU2hvdWxkX25vdF9zZWVfdGhpc19fIDogdW5pdCB0XG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5VbmhhbmRsZWRcIlxuICAgICAgICAgIChVbmhhbmRsZWQgU2hvdWxkX25vdF9zZWVfdGhpc19fKVxubGV0IF8gPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJFZmZlY3QuQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFwiXG4gICAgICAgICAgQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG50eXBlICgnYSwgJ2IpIHN0YWNrIFtAQGltbWVkaWF0ZV1cbnR5cGUgbGFzdF9maWJlciBbQEBpbW1lZGlhdGVdXG5cbmV4dGVybmFsIHJlc3VtZSA6XG4gICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gbGFzdF9maWJlciAtPiAnYiA9IFwiJXJlc3VtZVwiXG5leHRlcm5hbCBydW5zdGFjayA6ICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gJ2IgPSBcIiVydW5zdGFja1wiXG5cbm1vZHVsZSBEZWVwID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuXG4gIGV4dGVybmFsIHRha2VfY29udF9ub2V4YyA6ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiAoJ2EsICdiKSBzdGFjayA9XG4gICAgXCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcIiBbQEBub2FsbG9jXVxuICBleHRlcm5hbCBhbGxvY19zdGFjayA6XG4gICAgKCdhIC0+ICdiKSAtPlxuICAgIChleG4gLT4gJ2IpIC0+XG4gICAgKCdjIHQgLT4gKCdjLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgc3RhY2sgPSBcImNhbWxfYWxsb2Nfc3RhY2tcIlxuICBleHRlcm5hbCBjb250X2xhc3RfZmliZXIgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciA9IFwiJWZpZWxkMVwiXG4gIGV4dGVybmFsIGNvbnRfc2V0X2xhc3RfZmliZXIgOlxuICAgICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDFcIlxuXG4gIGxldCBjb250aW51ZSBrIHYgPVxuICAgIHJlc3VtZSAodGFrZV9jb250X25vZXhjIGspIChmdW4geCAtPiB4KSB2IChjb250X2xhc3RfZmliZXIgaylcblxuICBsZXQgZGlzY29udGludWUgayBlID1cbiAgICByZXN1bWUgKHRha2VfY29udF9ub2V4YyBrKSAoZnVuIGUgLT4gcmFpc2UgZSkgZSAoY29udF9sYXN0X2ZpYmVyIGspXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgZSBidCA9XG4gICAgcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYnQpXG4gICAgICBlIChjb250X2xhc3RfZmliZXIgaylcblxuICB0eXBlICgnYSwnYikgaGFuZGxlciA9XG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIHQgLT4gKCgnYywnYikgY29udGludWF0aW9uIC0+ICdiKSBvcHRpb24gfVxuXG4gIGV4dGVybmFsIHJlcGVyZm9ybSA6XG4gICAgJ2EgdCAtPiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYiA9IFwiJXJlcGVyZm9ybVwiXG5cbiAgbGV0IG1hdGNoX3dpdGggY29tcCBhcmcgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgaGFuZGxlci5yZXRjIGhhbmRsZXIuZXhuYyBlZmZjIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIHR5cGUgJ2EgZWZmZWN0X2hhbmRsZXIgPVxuICAgIHsgZWZmYzogJ2IuICdiIHQgLT4gKCgnYiwnYSkgY29udGludWF0aW9uIC0+ICdhKSBvcHRpb24gfVxuXG4gIGxldCB0cnlfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYycgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgY29udF9zZXRfbGFzdF9maWJlciBrIGxhc3RfZmliZXI7XG4gICAgICAgICAgZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgKGZ1biB4IC0+IHgpIChmdW4gZSAtPiByYWlzZSBlKSBlZmZjJyBpblxuICAgIHJ1bnN0YWNrIHMgY29tcCBhcmdcblxuICBleHRlcm5hbCBnZXRfY2FsbHN0YWNrIDpcbiAgICAoJ2EsJ2IpIGNvbnRpbnVhdGlvbiAtPiBpbnQgLT4gUHJpbnRleGMucmF3X2JhY2t0cmFjZSA9XG4gICAgXCJjYW1sX2dldF9jb250aW51YXRpb25fY2FsbHN0YWNrXCJcbmVuZFxuXG5tb2R1bGUgU2hhbGxvdyA9IHN0cnVjdFxuXG4gIHR5cGUgKCdhLCdiKSBjb250aW51YXRpb25cblxuICBleHRlcm5hbCBhbGxvY19zdGFjayA6XG4gICAgKCdhIC0+ICdiKSAtPlxuICAgIChleG4gLT4gJ2IpIC0+XG4gICAgKCdjIHQgLT4gKCdjLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgc3RhY2sgPSBcImNhbWxfYWxsb2Nfc3RhY2tcIlxuXG4gIGV4dGVybmFsIGNvbnRfbGFzdF9maWJlciA6ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyID0gXCIlZmllbGQxXCJcbiAgZXh0ZXJuYWwgY29udF9zZXRfbGFzdF9maWJlciA6XG4gICAgKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gdW5pdCA9IFwiJXNldGZpZWxkMVwiXG5cbiAgbGV0IGZpYmVyIDogdHlwZSBhIGIuIChhIC0+IGIpIC0+IChhLCBiKSBjb250aW51YXRpb24gPSBmdW4gZiAtPlxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdCB0eXBlIF8gdCArPSBJbml0aWFsX3NldHVwX18gOiBhIHQgZW5kIGluXG4gICAgbGV0IGV4Y2VwdGlvbiBFIG9mIChhLGIpIGNvbnRpbnVhdGlvbiBpblxuICAgIGxldCBmJyAoKSA9IGYgKHBlcmZvcm0gTS5Jbml0aWFsX3NldHVwX18pIGluXG4gICAgbGV0IGVycm9yIF8gPSBmYWlsd2l0aCBcImltcG9zc2libGVcIiBpblxuICAgIGxldCBlZmZjIGVmZiBrIGxhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggZWZmIHdpdGhcbiAgICAgIHwgTS5Jbml0aWFsX3NldHVwX18gLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICByYWlzZV9ub3RyYWNlIChFIGspXG4gICAgICB8IF8gLT4gZXJyb3IgKClcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgZXJyb3IgZXJyb3IgZWZmYyBpblxuICAgIG1hdGNoIHJ1bnN0YWNrIHMgZicgKCkgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEUgayAtPiBrXG4gICAgfCBfIC0+IGVycm9yICgpXG5cbiAgdHlwZSAoJ2EsJ2IpIGhhbmRsZXIgPVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyB0IC0+ICgoJ2MsJ2EpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuICBleHRlcm5hbCB1cGRhdGVfaGFuZGxlciA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT5cbiAgICAoJ2IgLT4gJ2MpIC0+XG4gICAgKGV4biAtPiAnYykgLT5cbiAgICAoJ2QgdCAtPiAoJ2QsJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdjKSAtPlxuICAgICgnYSwnYykgc3RhY2sgPSBcImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcIiBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHJlcGVyZm9ybSA6XG4gICAgJ2EgdCAtPiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYyA9IFwiJXJlcGVyZm9ybVwiXG5cbiAgbGV0IGNvbnRpbnVlX2dlbiBrIHJlc3VtZV9mdW4gdiBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICBjb250X3NldF9sYXN0X2ZpYmVyIGsgbGFzdF9maWJlcjtcbiAgICAgICAgICBmIGtcbiAgICAgIHwgTm9uZSAtPiByZXBlcmZvcm0gZWZmIGsgbGFzdF9maWJlclxuICAgIGluXG4gICAgbGV0IGxhc3RfZmliZXIgPSBjb250X2xhc3RfZmliZXIgayBpblxuICAgIGxldCBzdGFjayA9IHVwZGF0ZV9oYW5kbGVyIGsgaGFuZGxlci5yZXRjIGhhbmRsZXIuZXhuYyBlZmZjIGluXG4gICAgcmVzdW1lIHN0YWNrIHJlc3VtZV9mdW4gdiBsYXN0X2ZpYmVyXG5cbiAgbGV0IGNvbnRpbnVlX3dpdGggayB2IGhhbmRsZXIgPVxuICAgIGNvbnRpbnVlX2dlbiBrIChmdW4geCAtPiB4KSB2IGhhbmRsZXJcblxuICBsZXQgZGlzY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biBlIC0+IHJhaXNlIGUpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoX2JhY2t0cmFjZSBrIHYgYnQgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biBlIC0+IFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYnQpIHYgaGFuZGxlclxuXG4gIGV4dGVybmFsIGdldF9jYWxsc3RhY2sgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+IGludCAtPiBQcmludGV4Yy5yYXdfYmFja3RyYWNlID1cbiAgICBcImNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcIlxuZW5kXG4iLCJbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqIGJsaXRfc3RyaW5nIGRvZXNuJ3QgZXhpc3QgaW4gW1N0ZExhYmVscy5CeXRlc10uLi4gICopXG5sZXQgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICBCeXRlcy5ibGl0X3N0cmluZyBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbjs7XG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIEZvcm1hdFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcblxubGV0IHNleHBfb2ZfdCB0ID0gdFxubGV0IHRfb2Zfc2V4cCB0ID0gdFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgcmVzID0gY29tcGFyZSB4IHkgaW5cbiAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCB4cyB5c1xuXG5hbmQgY29tcGFyZSBhIGIgPVxuICBpZiBhID09IGJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgQXRvbSBhLCBBdG9tIGIgLT4gU3RyaW5nLmNvbXBhcmUgYSBiXG4gICAgfCBBdG9tIF8sIF8gLT4gLTFcbiAgICB8IF8sIEF0b20gXyAtPiAxXG4gICAgfCBMaXN0IGEsIExpc3QgYiAtPiBjb21wYXJlX2xpc3QgYSBiKVxuOztcblxubGV0IGVxdWFsIGEgYiA9IGNvbXBhcmUgYSBiID0gMFxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3Mgb2YgdFxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgZXhuICogdFxuXG5tb2R1bGUgUHJpbnRpbmcgPSBzdHJ1Y3RcbiAgKCogRGVmYXVsdCBpbmRlbnRhdGlvbiBsZXZlbCBmb3IgaHVtYW4tcmVhZGFibGUgY29udmVyc2lvbnMgKilcblxuICBsZXQgZGVmYXVsdF9pbmRlbnQgPSByZWYgMVxuXG4gICgqIEVzY2FwaW5nIG9mIHN0cmluZ3MgdXNlZCBhcyBhdG9tcyBpbiBTLWV4cHJlc3Npb25zICopXG5cbiAgbGV0IG11c3RfZXNjYXBlIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGVuID0gMFxuICAgIHx8XG4gICAgbGV0IHJlYyBsb29wIHN0ciBpeCA9XG4gICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICB8ICdcIicgfCAnKCcgfCAnKScgfCAnOycgfCAnXFxcXCcgLT4gdHJ1ZVxuICAgICAgfCAnfCcgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnIycgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnIycgLT5cbiAgICAgICAgaXggPiAwXG4gICAgICAgICYmXG4gICAgICAgIGxldCBuZXh0ID0gaXggLSAxIGluXG4gICAgICAgIENoYXIuZXF1YWwgc3RyLltuZXh0XSAnfCcgfHwgbG9vcCBzdHIgbmV4dFxuICAgICAgfCAnXFwwMDAnIC4uICdcXDAzMicgfCAnXFwxMjcnIC4uICdcXDI1NScgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGl4ID4gMCAmJiBsb29wIHN0ciAoaXggLSAxKVxuICAgIGluXG4gICAgbG9vcCBzdHIgKGxlbiAtIDEpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZWQgcyA9XG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBuXG4gICAgICA6PSAhblxuICAgICAgICAgK1xuICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgICAgfCAnICcgLi4gJ34nIC0+IDFcbiAgICAgICAgIHwgXyAtPiA0XG4gICAgZG9uZTtcbiAgICBpZiAhbiA9IFN0cmluZy5sZW5ndGggc1xuICAgIHRoZW4gc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IHMnID0gQnl0ZXMuY3JlYXRlICFuIGluXG4gICAgICBuIDo9IDA7XG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnbidcbiAgICAgICAgIHwgJ1xcdCcgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnYidcbiAgICAgICAgIHwgJyAnIC4uICd+JyBhcyBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgIGxldCBhID0gQ2hhci5jb2RlIGMgaW5cbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMDApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgLyAxMCBtb2QgMTApKSk7XG4gICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzJyAhbiAoQ2hhci5jaHIgKDQ4ICsgKGEgbW9kIDEwKSkpKTtcbiAgICAgICAgaW5jciBuXG4gICAgICBkb25lO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzJylcbiAgOztcblxuICBsZXQgZXNjX3N0ciBzdHIgPVxuICAgIGxldCBlc3RyID0gZXNjYXBlZCBzdHIgaW5cbiAgICBsZXQgZWxlbiA9IFN0cmluZy5sZW5ndGggZXN0ciBpblxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKGVsZW4gKyAyKSBpblxuICAgIGJ5dGVzX2JsaXRfc3RyaW5nIH5zcmM6ZXN0ciB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjEgfmxlbjplbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIDAgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlcyAoZWxlbiArIDEpICdcIic7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcbiAgOztcblxuICBsZXQgaW5kZXhfb2ZfbmV3bGluZSBzdHIgc3RhcnQgPSBTdHJpbmcuaW5kZXhfZnJvbV9vcHQgc3RyIHN0YXJ0ICdcXG4nXG5cbiAgbGV0IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IGVuZF9wb3Nfb3B0ID1cbiAgICBsZXQgZW5kX3BvcyA9XG4gICAgICBtYXRjaCBlbmRfcG9zX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgIHwgU29tZSBlbmRfcG9zIC0+IGVuZF9wb3NcbiAgICBpblxuICAgIFN0cmluZy5zdWIgc3RyIH5wb3M6aW5kZXggfmxlbjooZW5kX3BvcyAtIGluZGV4KVxuICA7O1xuXG4gIGxldCBpc19vbmVfbGluZSBzdHIgPVxuICAgIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIGluZGV4IC0+IGluZGV4ICsgMSA9IFN0cmluZy5sZW5ndGggc3RyXG4gIDs7XG5cbiAgbGV0IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHIgPVxuICAgIGlmIG5vdCAobXVzdF9lc2NhcGUgc3RyKVxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHJcbiAgICBlbHNlIGlmIGlzX29uZV9saW5lIHN0clxuICAgIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiAoZXNjX3N0ciBzdHIpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaW5kZXggPVxuICAgICAgICBsZXQgbmV4dF9uZXdsaW5lID0gaW5kZXhfb2ZfbmV3bGluZSBzdHIgaW5kZXggaW5cbiAgICAgICAgbGV0IG5leHRfbGluZSA9IGdldF9zdWJzdHJpbmcgc3RyIGluZGV4IG5leHRfbmV3bGluZSBpblxuICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIChlc2NhcGVkIG5leHRfbGluZSk7XG4gICAgICAgIG1hdGNoIG5leHRfbmV3bGluZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgbmV3bGluZV9pbmRleCAtPlxuICAgICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFxcXCI7XG4gICAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKCk7XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxuXCI7XG4gICAgICAgICAgbG9vcCAobmV3bGluZV9pbmRleCArIDEpXG4gICAgICBpblxuICAgICAgcHBfb3Blbl9ib3ggcHBmIDA7XG4gICAgICAoKiB0aGUgbGVhZGluZyBzcGFjZSBpcyB0byBsaW5lIHVwIHRoZSBsaW5lcyAqKVxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcXFwiXCI7XG4gICAgICBsb29wIDA7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcIlwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKSlcbiAgOztcblxuICBsZXQgbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciA9IGlmIG11c3RfZXNjYXBlIHN0ciB0aGVuIGVzY19zdHIgc3RyIGVsc2Ugc3RyXG5cbiAgKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZm9ybWF0dGVycyAqKVxuXG4gIGxldCByZWMgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IHBwX2h1bV9tYXliZV9lc2Nfc3RyIHBwZiBzdHJcbiAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgIHBwX29wZW5fYm94IHBwZiBpbmRlbnQ7XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IExpc3QgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIigpXCJcblxuICBhbmQgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIHBwX3ByaW50X3NwYWNlIHBwZiAoKTtcbiAgICAgIHBwX2h1bV9pbmRlbnQgaW5kZW50IHBwZiBoO1xuICAgICAgcHBfaHVtX3Jlc3QgaW5kZW50IHBwZiB0XG4gICAgfCBbXSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIjtcbiAgICAgIHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgOztcblxuICBsZXQgcmVjIHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+XG4gICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgIGxldCBuZXdfbWF5X25lZWRfc3BhY2UgPSBzdHInID09IHN0ciBpblxuICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIiBcIjtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgc3RyJztcbiAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIihcIjtcbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdDtcbiAgICAgIGZhbHNlXG4gICAgfCBMaXN0IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIjtcbiAgICAgIGZhbHNlXG5cbiAgYW5kIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBwcF9tYWNoX2ludGVybmFsIG1heV9uZWVkX3NwYWNlIHBwZiBoIGluXG4gICAgICBwcF9tYWNoX3Jlc3QgbWF5X25lZWRfc3BhY2UgcHBmIHRcbiAgICB8IFtdIC0+IHBwX3ByaW50X3N0cmluZyBwcGYgXCIpXCJcbiAgOztcblxuICBsZXQgcHBfaHVtIHBwZiBzZXhwID0gcHBfaHVtX2luZGVudCAhZGVmYXVsdF9pbmRlbnQgcHBmIHNleHBcbiAgbGV0IHBwX21hY2ggcHBmIHNleHAgPSBpZ25vcmUgKHBwX21hY2hfaW50ZXJuYWwgZmFsc2UgcHBmIHNleHApXG4gIGxldCBwcCA9IHBwX21hY2hcblxuICAoKiBTZXhwIHNpemUgKilcblxuICBsZXQgcmVjIHNpemVfbG9vcCAoKHYsIGMpIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gdiArIDEsIGMgKyBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHwgTGlzdCBsc3QgLT4gTGlzdC5mb2xkX2xlZnQgbHN0IH5pbml0OmFjYyB+ZjpzaXplX2xvb3BcbiAgOztcblxuICBsZXQgc2l6ZSBzZXhwID0gc2l6ZV9sb29wICgwLCAwKSBzZXhwXG5cbiAgKCogQnVmZmVyIGNvbnZlcnNpb25zICopXG5cbiAgbGV0IHRvX2J1ZmZlcl9odW0gfmJ1ZiA/KGluZGVudCA9ICFkZWZhdWx0X2luZGVudCkgc2V4cCA9XG4gICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiVhQD9cIiAocHBfaHVtX2luZGVudCBpbmRlbnQpIHNleHBcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyX21hY2ggfmJ1ZiBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyAnO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIoKVwiO1xuICAgICAgICBmYWxzZVxuICAgIGFuZCBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBtYXlfbmVlZF9zcGFjZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0XG4gICAgICB8IFtdIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICBsZXQgdG9fYnVmZmVyID0gdG9fYnVmZmVyX21hY2hcblxuICBsZXQgdG9fYnVmZmVyX2dlbiB+YnVmIH5hZGRfY2hhciB+YWRkX3N0cmluZyBzZXhwID1cbiAgICBsZXQgcmVjIGxvb3AgbWF5X25lZWRfc3BhY2UgPSBmdW5jdGlvblxuICAgICAgfCBBdG9tIHN0ciAtPlxuICAgICAgICBsZXQgc3RyJyA9IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHIgaW5cbiAgICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICAgIGlmIG1heV9uZWVkX3NwYWNlICYmIG5ld19tYXlfbmVlZF9zcGFjZSB0aGVuIGFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIHN0cic7XG4gICAgICAgIG5ld19tYXlfbmVlZF9zcGFjZVxuICAgICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiAnKCc7XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgZmFsc2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdDtcbiAgICAgICAgZmFsc2VcbiAgICAgIHwgTGlzdCBbXSAtPlxuICAgICAgICBhZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gYWRkX2NoYXIgYnVmICcpJ1xuICAgIGluXG4gICAgaWdub3JlIChsb29wIGZhbHNlIHNleHApXG4gIDs7XG5cbiAgKCogVGhlIG1heGltdW0gc2l6ZSBvZiBhIHRoaW5nIG9uIHRoZSBtaW5vciBoZWFwIGlzIDI1NiB3b3Jkcy5cbiAgICAgUHJldmlvdXNseSwgdGhpcyBzaXplIG9mIHRoZSByZXR1cm5lZCBidWZmZXIgaGVyZSB3YXMgNDA5NiBieXRlcywgd2hpY2hcbiAgICAgY2F1c2VkIHRoZSBCdWZmZXIgdG8gYmUgYWxsb2NhdGVkIG9uIHRoZSAqbWFqb3IqIGhlYXAgZXZlcnkgdGltZS5cblxuICAgICBBY2NvcmRpbmcgdG8gYSBzaW1wbGUgYmVuY2htYXJrIGJ5IFJvbiwgd2UgY2FuIGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yXG4gICAgIHNtYWxsIHMtZXhwcmVzc2lvbnMgYnkgYSBmYWN0b3Igb2YgfjQgaWYgd2Ugb25seSBhbGxvY2F0ZSAxMDI0IGJ5dGVzXG4gICAgICgxMjggd29yZHMgKyBzb21lIHNtYWxsIG92ZXJoZWFkKSB3b3J0aCBvZiBidWZmZXIgaW5pdGlhbGx5LiAgQW5kIG9uZVxuICAgICBjYW4gYXJndWUgdGhhdCBpZiBpdCdzIGZyZWUgdG8gYWxsb2NhdGUgc3RyaW5ncyBzbWFsbGVyIHRoYW4gMjU2IHdvcmRzLFxuICAgICBsYXJnZSBzLWV4cHJlc3Npb25zIHJlcXVpcmluZyBsYXJnZXIgZXhwZW5zaXZlIGJ1ZmZlcnMgd29uJ3Qgbm90aWNlXG4gICAgIHRoZSBleHRyYSB0d28gZG91YmxpbmdzIGZyb20gMTAyNCBieXRlcyB0byAyMDQ4IGFuZCA0MDk2LiBBbmQgZXNwZWNpYWxseVxuICAgICBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgYXBwbGljYXRpb25zIHRvIGFsd2F5cyBwYXNzIGluIGEgbGFyZ2VyIGJ1ZmZlciB0b1xuICAgICB1c2UuICopXG4gIGxldCBidWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIDEwMjRcblxuICAoKiBTdHJpbmcgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fc3RyaW5nX2h1bSA/aW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyXG4gICAgICB3aGVuIG1hdGNoIGluZGV4X29mX25ld2xpbmUgc3RyIDAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgXyAtPiBmYWxzZSAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfaHVtID9pbmRlbnQgc2V4cCB+YnVmO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfbWFjaCA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiBtYWNoX21heWJlX2VzY19zdHIgc3RyXG4gICAgfCBzZXhwIC0+XG4gICAgICBsZXQgYnVmID0gYnVmZmVyICgpIGluXG4gICAgICB0b19idWZmZXJfbWFjaCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19tYWNoXG5lbmRcblxuaW5jbHVkZSBQcmludGluZ1xuXG5sZXQgb2ZfZmxvYXRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcbmxldCBvZl9pbnRfc3R5bGUgOiBbIGBVbmRlcnNjb3JlcyB8IGBOb191bmRlcnNjb3JlcyBdIHJlZiA9IHJlZiBgTm9fdW5kZXJzY29yZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmludGluZ1xuZW5kXG5cbmxldCBtZXNzYWdlIG5hbWUgZmllbGRzID1cbiAgbGV0IHJlYyBjb252X2ZpZWxkcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKGZuYW1lLCBmc2V4cCkgOjogcmVzdCAtPlxuICAgICAgKG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICB8IFwiXCIgLT4gZnNleHAgOjogY29udl9maWVsZHMgcmVzdFxuICAgICAgIHwgXyAtPiBMaXN0IFsgQXRvbSBmbmFtZTsgZnNleHAgXSA6OiBjb252X2ZpZWxkcyByZXN0KVxuICBpblxuICBMaXN0IChBdG9tIG5hbWUgOjogY29udl9maWVsZHMgZmllbGRzKVxuOztcbiIsIigqKiBSZXByZXNlbnRhdGlvbiBvZiBTLWV4cHJlc3Npb24gZ3JhbW1hcnMgKilcblxuKCoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSByZXByZXNlbnRhdGlvbiBmb3Igcy1leHByZXNzaW9uIGdyYW1tYXJzLiBVc2luZyBwcHhfc2V4cF9jb252XG4gICAgYW5kIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSBwcm9kdWNlcyBhIGdyYW1tYXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGRlcml2ZWRcbiAgICBbb2Zfc2V4cF0gZm9yIGEgZ2l2ZW4gdHlwZS5cblxuICAgIEFzIHdpdGggb3RoZXIgZGVyaXZlZCBkZWZpbml0aW9ucywgcG9seW1vcnBoaWMgdHlwZXMgZGVyaXZlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhXG4gICAgZ3JhbW1hciBmb3IgZWFjaCB0eXBlIGFyZ3VtZW50IGFuZCBwcm9kdWNlcyBhIGdyYW1tYXIgZm9yIHRoZSBtb25vbW9ycGhpemVkIHR5cGUuXG5cbiAgICBNb25vbW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBncmFtbWFyIGRpcmVjdGx5LiBUbyBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLFxuICAgIFtbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXSB3cmFwcyBncmFtbWFycyBpbiB0aGUgW0xhenldIGNvbnN0cnVjdG9yIGFzIG5lZWRlZC5cblxuICAgIFRoaXMgdHlwZSBtYXkgY2hhbmdlIG92ZXIgdGltZSBhcyBvdXIgbmVlZHMgZm9yIGV4cHJlc3NpdmUgZ3JhbW1hcnMgY2hhbmdlLiBXZSB3aWxsXG4gICAgYXR0ZW1wdCB0byBtYWtlIGNoYW5nZXMgYmFja3dhcmQtY29tcGF0aWJsZSwgb3IgYXQgbGVhc3QgcHJvdmlkZSBhIHJlYXNvbmFibGUgdXBncmFkZVxuICAgIHBhdGguICopXG5cbltAQEB3YXJuaW5nIFwiLTMwXCJdICgqIGFsbG93IGR1cGxpY2F0ZSBmaWVsZCBuYW1lcyAqKVxuXG4oKiogR3JhbW1hciBvZiBhIHNleHAuICopXG50eXBlIGdyYW1tYXIgPVxuICB8IEFueSBvZiBzdHJpbmcgKCoqIGFjY2VwdHMgYW55IHNleHA7IHN0cmluZyBpcyBhIHR5cGUgbmFtZSBmb3IgaHVtYW4gcmVhZGFiaWxpdHkgKilcbiAgfCBCb29sICgqKiBhY2NlcHRzIHRoZSBhdG9tcyBcInRydWVcIiBvciBcImZhbHNlXCIsIG1vZHVsbyBjYXBpdGFsaXphdGlvbiAqKVxuICB8IENoYXIgKCoqIGFjY2VwdHMgYW55IHNpbmdsZS1jaGFyYWN0ZXIgYXRvbSAqKVxuICB8IEludGVnZXIgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgaW50ZWdlciBzeW50YXgsIHJlZ2FyZGxlc3Mgb2YgYml0IHdpZHRoICopXG4gIHwgRmxvYXQgKCoqIGFjY2VwdHMgYW55IGF0b20gbWF0Y2hpbmcgb2NhbWwgZmxvYXQgc3ludGF4ICopXG4gIHwgU3RyaW5nICgqKiBhY2NlcHRzIGFueSBhdG9tICopXG4gIHwgT3B0aW9uIG9mIGdyYW1tYXIgKCoqIGFjY2VwdHMgYW4gb3B0aW9uLCBib3RoIFtOb25lXSB2cyBbU29tZSBfXSBhbmQgWygpXSB2cyBbKF8pXS4gKilcbiAgfCBMaXN0IG9mIGxpc3RfZ3JhbW1hciAoKiogYWNjZXB0cyBhIGxpc3QgKilcbiAgfCBWYXJpYW50IG9mIHZhcmlhbnQgKCoqIGFjY2VwdHMgY2xhdXNlcyBrZXllZCBieSBhIGxlYWRpbmcgb3Igc29sZSBhdG9tICopXG4gIHwgVW5pb24gb2YgZ3JhbW1hciBsaXN0ICgqKiBhY2NlcHRzIGEgc2V4cCBpZiBhbnkgb2YgdGhlIGxpc3RlZCBncmFtbWFycyBhY2NlcHRzIGl0ICopXG4gIHwgVGFnZ2VkIG9mIGdyYW1tYXIgd2l0aF90YWdcbiAgKCoqIGFubm90YXRlcyBhIGdyYW1tYXIgd2l0aCBhIGNsaWVudC1zcGVjaWZpYyBrZXkvdmFsdWUgcGFpciAqKVxuICB8IFR5dmFyIG9mIHN0cmluZ1xuICAoKiogTmFtZSBvZiBhIHR5cGUgdmFyaWFibGUsIGUuZy4gW1R5dmFyIFwiYVwiXSBmb3IgWydhXS4gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlIGJvZHkgb2ZcbiAgICAgIHRoZSBpbm5lcm1vc3QgZW5jbG9zaW5nIFtkZWZuXSBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIHZhcmlhYmxlLiAqKVxuICB8IFR5Y29uIG9mIHN0cmluZyAqIGdyYW1tYXIgbGlzdCAqIGRlZm4gbGlzdFxuICAoKiogVHlwZSBjb25zdHJ1Y3RvciBhcHBsaWVkIHRvIGFyZ3VtZW50cywgYW5kIGl0cyBkZWZpbml0aW9uLlxuXG4gICAgICBGb3IgZXhhbXBsZSwgd3JpdGluZyBbVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSwgZGVmbnMpXSByZXByZXNlbnRzIFtpbnQgdHJlZV0sIGZvclxuICAgICAgd2hhdGV2ZXIgW3RyZWVdIGlzIGRlZmluZWQgYXMgaW4gW2RlZm5zXS4gVGhlIGZvbGxvd2luZyBkZWZpbmVzIFt0cmVlXSBhcyBhIGJpbmFyeVxuICAgICAgdHJlZSB3aXRoIHRoZSBwYXJhbWV0ZXIgdHlwZSBzdG9yZWQgYXQgdGhlIGxlYXZlcy5cblxuICAgICAge1tcbiAgICAgICAgbGV0IGRlZm5zID1cbiAgICAgICAgICBbIHsgdHljb24gPSBcInRyZWVcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPVxuICAgICAgICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgWyB7IG5hbWUgPSBcIk5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoUmVjdXJzaXZlIChcIm5vZGVcIiwgW1R5dmFyIFwiYVwiXSksIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJMZWFmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFJlY3Vyc2l2ZSAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJub2RlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gTGlzdCAoTWFueSAoUmVjdXJzaXZlIFwidHJlZVwiLCBbVHl2YXIgXCJhXCJdKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHsgdHljb24gPSBcImxlYWZcIlxuICAgICAgICAgICAgOyB0eXZhcnMgPSBbXCJhXCJdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBbVHl2YXIgXCJhXCJdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICA7O1xuICAgICAgXX1cblxuICAgICAgVG8gaWxsdXN0cmF0ZSB0aGUgbWVhbmluZyBvZiBbVHljb25dIHdpdGggcmVzcGVjdCB0byBbZGVmbnNdLCBhbmQgdG8gZGVtb25zdHJhdGUgb25lXG4gICAgICB3YXkgdG8gYWNjZXNzIHRoZW0sIGl0IGlzIGVxdWl2YWxlbnQgdG8gZXhwYW5kIHRoZSBkZWZpbml0aW9uIG9mIFwidHJlZVwiIG9uZSBsZXZlbFxuICAgICAgYW5kIG1vdmUgdGhlIFtkZWZuc10gdG8gZW5jbG9zZWQgcmVjdXJzaXZlIHJlZmVyZW5jZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFR5Y29uIChcInRyZWVcIiwgWyBJbnRlZ2VyIF0sIGRlZm5zKVxuICAgICAgICAtLT5cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdLCBkZWZucyksIEVtcHR5KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOyB7IG5hbWUgPSBcIkxlYWZcIlxuICAgICAgICAgICAgICAgIDsgYXJncyA9IENvbnMgKFR5Y29uIChcImxlYWZcIiwgW1R5dmFyIFwiYVwiXSwgZGVmbnMpLCBFbXB0eSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICBdfVxuXG4gICAgICBUaGlzIHRyYW5zZm9ybWF0aW9uIGV4cG9zZXMgdGhlIHN0cnVjdHVyZSBvZiBhIGdyYW1tYXIgd2l0aCByZWN1cnNpdmUgcmVmZXJlbmNlcyxcbiAgICAgIHdoaWxlIHByZXNlcnZpbmcgdGhlIG1lYW5pbmcgb2YgcmVjdXJzaXZlbHktZGVmaW5lZCBlbGVtZW50cy4gKilcbiAgfCBSZWN1cnNpdmUgb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLiBVc2VkIHRvIGRlbm90ZSByZWN1cnNpdmUgdHlwZSByZWZlcmVuY2VzLlxuICAgICAgT25seSBtZWFuaW5nZnVsIHdoZW4gdXNlZCBpbnNpZGUgdGhlIFtkZWZuXXMgb2YgYSBbVHljb25dIGdyYW1tYXIsIHRvIHJlZmVyIHRvIGFcbiAgICAgIHR5cGUgY29uc3RydWN0b3IgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIFtkZWZuXSBsaXN0LiAqKVxuICB8IExhenkgb2YgZ3JhbW1hciBsYXp5X3RcbiAgKCoqIExhemlseSBjb21wdXRlZCBncmFtbWFyLiBVc2UgW0xhenldIHRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMuIFRvIGRlZmluZVxuICAgICAgcmVjdXJzaXZlIGdyYW1tYXJzLCB1c2UgW1JlY3Vyc2l2ZV0gaW5zdGVhZC4gKilcblxuKCoqIEdyYW1tYXIgb2YgYSBsaXN0IG9mIHNleHBzLiAqKVxuYW5kIGxpc3RfZ3JhbW1hciA9XG4gIHwgRW1wdHkgKCoqIGFjY2VwdHMgYW4gZW1wdHkgbGlzdCBvZiBzZXhwcyAqKVxuICB8IENvbnMgb2YgZ3JhbW1hciAqIGxpc3RfZ3JhbW1hclxuICAoKiogYWNjZXB0cyBhIG5vbi1lbXB0eSBsaXN0IHdpdGggaGVhZCBhbmQgdGFpbCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hcnMgKilcbiAgfCBNYW55IG9mIGdyYW1tYXIgKCoqIGFjY2VwdHMgemVybyBvciBtb3JlIHNleHBzLCBlYWNoIG1hdGNoaW5nIHRoZSBnaXZlbiBncmFtbWFyICopXG4gIHwgRmllbGRzIG9mIHJlY29yZCAoKiogYWNjZXB0cyBzZXhwcyByZXByZXNlbnRpbmcgZmllbGRzIG9mIGEgcmVjb3JkICopXG5cbigqKiBDYXNlIHNlbnNpdGl2aXR5IG9wdGlvbnMgZm9yIG5hbWVzIG9mIHZhcmlhbnQgY29uc3RydWN0b3JzLiAqKVxuYW5kIGNhc2Vfc2Vuc2l0aXZpdHkgPVxuICB8IENhc2VfaW5zZW5zaXRpdmUgKCoqIENvbXBhcmlzb24gaXMgY2FzZSBpbnNlbnNpdGl2ZS4gVXNlZCBmb3IgY3VzdG9tIHBhcnNlcnMuICopXG4gIHwgQ2FzZV9zZW5zaXRpdmUgKCoqIENvbXBhcmlzb24gaXMgY2FzZSBzZW5zaXRpdmUuIFVzZWQgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgKCoqIENvbXBhcmlzb24gaXMgY2FzZSBpbnNlbnNpdGl2ZSBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgY2FzZSBzZW5zaXRpdmUgYWZ0ZXJ3YXJkLlxuICAgICAgVXNlZCBmb3IgcmVndWxhciB2YXJpYW50cy4gKilcblxuKCoqIEdyYW1tYXIgb2YgdmFyaWFudHMuIEFjY2VwdHMgYW55IHNleHAgbWF0Y2hpbmcgb25lIG9mIHRoZSBjbGF1c2VzLiAqKVxuYW5kIHZhcmlhbnQgPVxuICB7IGNhc2Vfc2Vuc2l0aXZpdHkgOiBjYXNlX3NlbnNpdGl2aXR5XG4gIDsgY2xhdXNlcyA6IGNsYXVzZSB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHNpbmdsZSB2YXJpYW50IGNsYXVzZS4gQWNjZXB0cyBzZXhwcyBiYXNlZCBvbiB0aGUgW2NsYXVzZV9raW5kXS4gKilcbmFuZCBjbGF1c2UgPVxuICB7IG5hbWUgOiBzdHJpbmdcbiAgOyBjbGF1c2Vfa2luZCA6IGNsYXVzZV9raW5kXG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UncyBjb250ZW50cy4gW0F0b21fY2xhdXNlXSBhY2NlcHRzIGFuIGF0b20gbWF0Y2hpbmdcbiAgICB0aGUgY2xhdXNlJ3MgbmFtZS4gW0xpc3RfY2xhdXNlXSBhY2NlcHRzIGEgbGlzdCB3aG9zZSBoZWFkIGlzIGFuIGF0b20gbWF0Y2hpbmcgdGhlXG4gICAgY2xhdXNlJ3MgbmFtZSBhbmQgd2hvc2UgdGFpbCBtYXRjaGVzIFthcmdzXS4gVGhlIGNsYXVzZSdzIG5hbWUgaXMgbWF0Y2hlZCBtb2R1bG8gdGhlXG4gICAgdmFyaWFudCdzIFtuYW1lX2tpbmRdLiAqKVxuYW5kIGNsYXVzZV9raW5kID1cbiAgfCBBdG9tX2NsYXVzZVxuICB8IExpc3RfY2xhdXNlIG9mIHsgYXJncyA6IGxpc3RfZ3JhbW1hciB9XG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjb3JkLiBBY2NlcHRzIGFueSBsaXN0IG9mIHNleHBzIHNwZWNpZnlpbmcgZWFjaCBvZiB0aGUgZmllbGRzLFxuICAgIHJlZ2FyZGxlc3Mgb2Ygb3JkZXIuIElmIFthbGxvd19leHRyYV9maWVsZHNdIGlzIHNwZWNpZmllZCwgaWdub3JlcyBzZXhwcyB3aXRoIG5hbWVzXG4gICAgbm90IGZvdW5kIGluIFtmaWVsZHNdLiAqKVxuYW5kIHJlY29yZCA9XG4gIHsgYWxsb3dfZXh0cmFfZmllbGRzIDogYm9vbFxuICA7IGZpZWxkcyA6IGZpZWxkIHdpdGhfdGFnX2xpc3QgbGlzdFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjb3JkIGZpZWxkLiBBIGZpZWxkIG11c3Qgc2hvdyB1cCBleGFjdGx5IG9uY2UgaW4gYSByZWNvcmQgaWZcbiAgICBbcmVxdWlyZWRdLCBvciBhdCBtb3N0IG9uY2Ugb3RoZXJ3aXNlLiBBY2NlcHRzIGEgbGlzdCBoZWFkZWQgYnkgW25hbWVdIGFzIGFuIGF0b20sXG4gICAgZm9sbG93ZWQgYnkgc2V4cHMgbWF0Y2hpbmcgW2FyZ3NdLiAqKVxuYW5kIGZpZWxkID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgcmVxdWlyZWQgOiBib29sXG4gIDsgYXJncyA6IGxpc3RfZ3JhbW1hclxuICB9XG5cbigqKiBHcmFtbWFyIHRhZ2dlZCB3aXRoIGNsaWVudC1zcGVjaWZpYyBrZXkvdmFsdWUgcGFpci4gKilcbmFuZCAnYSB3aXRoX3RhZyA9XG4gIHsga2V5IDogc3RyaW5nXG4gIDsgdmFsdWUgOiBTZXhwLnRcbiAgOyBncmFtbWFyIDogJ2FcbiAgfVxuXG5hbmQgJ2Egd2l0aF90YWdfbGlzdCA9XG4gIHwgVGFnIG9mICdhIHdpdGhfdGFnX2xpc3Qgd2l0aF90YWdcbiAgfCBOb190YWcgb2YgJ2FcblxuKCoqIEdyYW1tYXIgb2YgYSByZWN1cnNpdmUgdHlwZSBkZWZpbml0aW9uLiBOYW1lcyB0aGUgW3R5Y29uXSBiZWluZyBkZWZpbmVkLCBhbmQgdGhlXG4gICAgW3R5dmFyc10gaXQgdGFrZXMgYXMgcGFyYW1ldGVycy4gU3BlY2lmaWVzIHRoZSBbZ3JhbW1hcl0gb2YgdGhlIFt0eWNvbl0uIFRoZSBncmFtbWFyXG4gICAgbWF5IHJlZmVyIHRvIGFueSBvZiB0aGUgW3R5dmFyc10sIGFuZCB0byBhbnkgb2YgdGhlIFt0eWNvbl1zIGZyb20gdGhlIHNhbWUgc2V0IG9mXG4gICAgW1JlY3Vyc2l2ZV0gZGVmaW5pdGlvbnMuICopXG5hbmQgZGVmbiA9XG4gIHsgdHljb24gOiBzdHJpbmdcbiAgOyB0eXZhcnMgOiBzdHJpbmcgbGlzdFxuICA7IGdyYW1tYXIgOiBncmFtbWFyXG4gIH1cblxuKCoqIFRvcC1sZXZlbCBncmFtbWFyIHR5cGUuIEhhcyBhIHBoYW50b20gdHlwZSBwYXJhbWV0ZXIgdG8gYXNzb2NpYXRlIGVhY2ggZ3JhbW1hciB3aXRoXG4gICAgdGhlIHR5cGUgaXRzIHNleHBzIHJlcHJlc2VudC4gVGhpcyBtYWtlcyBpdCBoYXJkZXIgdG8gYXBwbHkgZ3JhbW1hcnMgdG8gdGhlIHdyb25nXG4gICAgdHlwZSwgd2hpbGUgZ3JhbW1hcnMgY2FuIHN0aWxsIGJlIGVhc2lseSBjb2VyY2VkIHRvIGEgbmV3IHR5cGUgaWYgbmVlZGVkLiAqKVxudHlwZSBfIHQgPSB7IHVudHlwZWQgOiBncmFtbWFyIH0gW0BAdW5ib3hlZF1cblxubGV0IGNvZXJjZSAodHlwZSBhIGIpICh7IHVudHlwZWQgPSBfIH0gYXMgdCA6IGEgdCkgOiBiIHQgPSB0XG5cbmxldCB0YWcgKHR5cGUgYSkgKHsgdW50eXBlZCA9IGdyYW1tYXIgfSA6IGEgdCkgfmtleSB+dmFsdWUgOiBhIHQgPVxuICB7IHVudHlwZWQgPSBUYWdnZWQgeyBrZXk7IHZhbHVlOyBncmFtbWFyIH0gfVxuOztcblxuKCoqIFRoaXMgcmVzZXJ2ZWQga2V5IGlzIHVzZWQgZm9yIGFsbCB0YWdzIGdlbmVyYXRlZCBmcm9tIGRvYyBjb21tZW50cy4gKilcbmxldCBkb2NfY29tbWVudF90YWcgPSBcInNleHBfZ3JhbW1hci5kb2NfY29tbWVudFwiXG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBjYW4gYmUgdXNlZCB0byBhc3NvY2lhdGUgYSB0eXBlIG5hbWUgd2l0aCBhIGdyYW1tYXIuICopXG5sZXQgdHlwZV9uYW1lX3RhZyA9IFwic2V4cF9ncmFtbWFyLnR5cGVfbmFtZVwiXG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpbmRpY2F0ZXMgdGhhdCBhIHNleHAgcmVwcmVzZW50cyBhIGtleS92YWx1ZSBhc3NvY2lhdGlvbi4gVGhlIHRhZydzXG4gICAgdmFsdWUgaXMgaWdub3JlZC4gKilcbmxldCBhc3NvY190YWcgPSBcInNleHBfZ3JhbW1hci5hc3NvY1wiXG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpbmRpY2F0ZXMgdGhhdCBhIHNleHAgaXMgYSBrZXkgaW4gYSBrZXkvdmFsdWUgYXNzb2NpYXRpb24uIFRoZSB0YWcnc1xuICAgIHZhbHVlIGlzIGlnbm9yZWQuICopXG5sZXQgYXNzb2Nfa2V5X3RhZyA9IFwic2V4cF9ncmFtbWFyLmFzc29jLmtleVwiXG5cbigqKiBUaGlzIHJlc2VydmVkIGtleSBpbmRpY2F0ZXMgdGhhdCBhIHNleHAgaXMgYSB2YWx1ZSBpbiBhIGtleS92YWx1ZSBhc3NvY2lhdGlvbi4gVGhlXG4gICAgdGFnJ3MgdmFsdWUgaXMgaWdub3JlZC4gKilcbmxldCBhc3NvY192YWx1ZV90YWcgPSBcInNleHBfZ3JhbW1hci5hc3NvYy52YWx1ZVwiXG5cbigqKiBXaGVuIHRoZSBrZXkgaXMgc2V0IHRvIFtBdG9tIFwiZmFsc2VcIl0gZm9yIGEgdmFyaWFudCBjbGF1c2UsIHRoYXQgY2xhdXNlIHNob3VsZCBub3QgYmVcbiAgICBzdWdnZXN0ZWQgaW4gYXV0by1jb21wbGV0aW9uIGJhc2VkIG9uIHRoZSBzZXhwIGdyYW1tYXIuICopXG5sZXQgY29tcGxldGlvbl9zdWdnZXN0ZWQgPSBcInNleHBfZ3JhbW1hci5jb21wbGV0aW9uLXN1Z2dlc3RlZFwiXG4iLCJvcGVuIFN0ZExhYmVsc1xuXG5sZXQgc2V4cF9ncmFtbWFyX3dpdGhfdGFncyBncmFtbWFyIH50YWdzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IHRhZ3MgfmluaXQ6Z3JhbW1hciB+ZjooZnVuIChrZXksIHZhbHVlKSBncmFtbWFyIC0+XG4gICAgU2V4cF9ncmFtbWFyLlRhZ2dlZCB7IGtleTsgdmFsdWU7IGdyYW1tYXIgfSlcbjs7XG5cbmxldCBzZXhwX2dyYW1tYXJfd2l0aF90YWdfbGlzdCB4IH50YWdzID1cbiAgTGlzdC5mb2xkX3JpZ2h0IHRhZ3MgfmluaXQ6eCB+ZjooZnVuIChrZXksIHZhbHVlKSBncmFtbWFyIC0+XG4gICAgU2V4cF9ncmFtbWFyLlRhZyB7IGtleTsgdmFsdWU7IGdyYW1tYXIgfSlcbjs7XG5cbmxldCB1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IEVtcHR5IH1cbmxldCBib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBCb29sIH1cbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQ2hhciB9XG5sZXQgaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gRmxvYXQgfVxubGV0IGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgc2V4cF90X3NleHBfZ3JhbW1hciA6IFNleHAudCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIlNleHAudFwiIH1cbmxldCByZWZfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcblxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIG9wdGlvbiBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IE9wdGlvbiB1bnR5cGVkIH1cbjs7XG5cbmxldCBsaXN0X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gbGlzdCBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGFycmF5X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gYXJyYXkgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBlbXB0eV9zZXhwX2dyYW1tYXIgOiBfIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxubGV0IG9wYXF1ZV9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbmxldCBmdW5fc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG4iLCIoKiBVdGlsaXR5IE1vZHVsZSBmb3IgUy1leHByZXNzaW9uIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBcblxuKCogQ29udmVyc2lvbiBvZiBPQ2FtbC12YWx1ZXMgdG8gUy1leHByZXNzaW9ucyAqKVxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiAnJS4xN2cnIGlzIGd1YXJhbnRlZWQgdG8gYmUgcm91bmQtdHJpcHBhYmxlLlxuXG4gICAnJS4xNWcnIHdpbGwgYmUgcm91bmQtdHJpcHBhYmxlIGFuZCBub3QgaGF2ZSBub2lzZSBhdCB0aGUgbGFzdCBkaWdpdCBvciB0d28gZm9yIGEgZmxvYXRcbiAgIHdoaWNoIHdhcyBjb252ZXJ0ZWQgZnJvbSBhIGRlY2ltYWwgKHN0cmluZykgd2l0aCA8PSAxNSBzaWduaWZpY2FudCBkaWdpdHMuICBTbyBpdCdzXG4gICB3b3J0aCB0cnlpbmcgZmlyc3QgdG8gYXZvaWQgdGhpbmdzIGxpa2UgXCIzLjE0MDAwMDAwMDAwMDAwMDFcIi5cblxuICAgU2VlIGNvbW1lbnQgYWJvdmUgW3RvX3N0cmluZ19yb3VuZF90cmlwcGFibGVdIGluIHshQ29yZS5GbG9hdH0gZm9yXG4gICBkZXRhaWxlZCBleHBsYW5hdGlvbiBhbmQgZXhhbXBsZXMuICopXG5sZXQgZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgPVxuICByZWYgKGZ1biB4IC0+XG4gICAgbGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1R1wiIHggaW5cbiAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4KVxuOztcblxubGV0IHJlYWRfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IHdyaXRlX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCBsaXN0X21hcCBmIGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGwgfmYpXG5sZXQgc2V4cF9vZl91bml0ICgpID0gTGlzdCBbXVxubGV0IHNleHBfb2ZfYm9vbCBiID0gQXRvbSAoc3RyaW5nX29mX2Jvb2wgYilcbmxldCBzZXhwX29mX3N0cmluZyBzdHIgPSBBdG9tIHN0clxubGV0IHNleHBfb2ZfYnl0ZXMgYnl0ZXMgPSBBdG9tIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgc2V4cF9vZl9jaGFyIGMgPSBBdG9tIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgc2V4cF9vZl9pbnQgbiA9IEF0b20gKHN0cmluZ19vZl9pbnQgbilcbmxldCBzZXhwX29mX2Zsb2F0IG4gPSBBdG9tICghZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgbilcbmxldCBzZXhwX29mX2ludDMyIG4gPSBBdG9tIChJbnQzMi50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX2ludDY0IG4gPSBBdG9tIChJbnQ2NC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX25hdGl2ZWludCBuID0gQXRvbSAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfcmVmIHNleHBfb2ZfX2EgcmYgPSBzZXhwX29mX19hICFyZlxubGV0IHNleHBfb2ZfbGF6eV90IHNleHBfb2ZfX2EgbHYgPSBzZXhwX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgWyBzZXhwX29mX19hIHggXVxuICB8IFNvbWUgeCAtPiBMaXN0IFsgQXRvbSBcInNvbWVcIjsgc2V4cF9vZl9fYSB4IF1cbiAgfCBOb25lIHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgW11cbiAgfCBOb25lIC0+IEF0b20gXCJub25lXCJcbjs7XG5cbmxldCBzZXhwX29mX3BhaXIgc2V4cF9vZl9fYSBzZXhwX29mX19iIChhLCBiKSA9IExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYiBdXG5cbmxldCBzZXhwX29mX3RyaXBsZSBzZXhwX29mX19hIHNleHBfb2ZfX2Igc2V4cF9vZl9fYyAoYSwgYiwgYykgPVxuICBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGI7IHNleHBfb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgc2V4cF9vZl9saXN0IHNleHBfb2ZfX2EgbHN0ID0gTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBsc3QgfmY6c2V4cF9vZl9fYSkpXG5cbmxldCBzZXhwX29mX2FycmF5IHNleHBfb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2hhc2h0Ymwgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IExpc3QgWyBzZXhwX29mX2tleSBrOyBzZXhwX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgc2V4cF9vZl9vcGFxdWUgXyA9IEF0b20gXCI8b3BhcXVlPlwiXG5sZXQgc2V4cF9vZl9mdW4gXyA9IEF0b20gXCI8ZnVuPlwiXG5cbigqIEV4Y2VwdGlvbiBjb252ZXJ0ZXIgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgKilcblxubW9kdWxlIEV4bl9jb252ZXJ0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhlc2UgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgY29udGV4dC1zd2l0Y2hlc1xuICAgICBjYW5ub3QgaGFwcGVuIHVubGVzcyB0aGVyZSBpcyBhbiBhbGxvY2F0aW9uLiAgSXQgaXMgcmVhc29uYWJsZSB0byBleHBlY3RcbiAgICAgdGhhdCB0aGlzIHdpbGwgcmVtYWluIHRydWUgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICBUaGF0IHdheSB3ZVxuICAgICBhdm9pZCB1c2luZyBtdXRleGVzIGFuZCB0aHVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgdGhyZWFkcyBsaWJyYXJ5LiAqKVxuXG4gICgqIEZhc3QgYW5kIGF1dG9tYXRpYyBleGNlcHRpb24gcmVnaXN0cmF0aW9uICopXG5cbiAgbW9kdWxlIFJlZ2lzdHJhdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNleHBfb2ZfZXhuIDogZXhuIC0+IFNleHAudFxuICAgICAgOyAoKiBJZiBbcHJpbnRleGMgPSB0cnVlXSB0aGVuIHRoaXMgc2V4cCBjb252ZXJ0ZXIgaXMgdXNlZCBmb3IgUHJpbnRleGMudG9fc3RyaW5nICopXG4gICAgICAgIHByaW50ZXhjIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgRXhuX3RhYmxlID0gRXBoZW1lcm9uLksxLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG5cbiAgICAgIGxldCBlcXVhbCA9ICggPT0gKVxuICAgICAgbGV0IGhhc2ggPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgZW5kKVxuXG4gIGxldCB0aGVfZXhuX3RhYmxlIDogUmVnaXN0cmF0aW9uLnQgRXhuX3RhYmxlLnQgPSBFeG5fdGFibGUuY3JlYXRlIDE3XG5cbiAgKCogRXBoZW1lcm9ucyBhcmUgdXNlZCBzbyB0aGF0IFtzZXhwX29mX2V4bl0gY2xvc3VyZSBkb24ndCBrZWVwIHRoZVxuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgbGl2ZS4gKilcbiAgbGV0IGFkZCA/KHByaW50ZXhjID0gdHJ1ZSkgP2ZpbmFsaXNlOl8gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHNleHBfb2ZfZXhuID1cbiAgICBFeG5fdGFibGUuYWRkIHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH1cbiAgOztcblxuICBsZXQgZmluZF9hdXRvIH5mb3JfcHJpbnRleGMgZXhuID1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhuIGluXG4gICAgbWF0Y2ggRXhuX3RhYmxlLmZpbmRfb3B0IHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9IC0+XG4gICAgICAobWF0Y2ggZm9yX3ByaW50ZXhjLCBwcmludGV4YyB3aXRoXG4gICAgICAgfCBmYWxzZSwgXyB8IF8sIHRydWUgLT4gU29tZSAoc2V4cF9vZl9leG4gZXhuKVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3VuaXRfdGVzdHNfb25seSA9IHN0cnVjdFxuICAgIGxldCBzaXplICgpID0gKEV4bl90YWJsZS5zdGF0c19hbGl2ZSB0aGVfZXhuX3RhYmxlKS5udW1fYmluZGluZ3NcbiAgZW5kXG5lbmRcblxubGV0IHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4Yzp0cnVlIGV4blxubGV0IHNleHBfb2ZfZXhuX29wdCBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOmZhbHNlIGV4blxuXG5sZXQgc2V4cF9vZl9leG4gZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBMaXN0IFsgQXRvbSAoUHJpbnRleGMudG9fc3RyaW5nIGV4bikgXVxuICB8IFNvbWUgc2V4cCAtPiBzZXhwXG47O1xuXG5sZXQgZXhuX3RvX3N0cmluZyBlID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKVxuXG4oKiB7W2V4Y2VwdGlvbiBCbGFoIFtAQGRlcml2aW5nIHNleHBdXX0gZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgZnVuY3Rpb25cbiAgIFtFeG5fY29udmVydGVyLmFkZF0gZGVmaW5lZCBpbiB0aGlzIGZpbGUuICBTbyB3ZSBhcmUgZ3VhcmFudGVkIHRoYXQgYXMgc29vbiBhcyB3ZVxuICAgbWFyayBhbiBleGNlcHRpb24gYXMgc2V4cGFibGUsIHRoaXMgbW9kdWxlIHdpbGwgYmUgbGlua2VkIGluIGFuZCB0aGlzIHByaW50ZXIgd2lsbCBiZVxuICAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiAqKVxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGV4biAtPlxuICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBzZXhwIC0+IFNvbWUgKFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cCkpXG47O1xuXG5sZXQgcHJpbnRleGNfcHJlZmVyX3NleHAgZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBQcmludGV4Yy50b19zdHJpbmcgZXhuXG4gIHwgU29tZSBzZXhwIC0+IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cFxuOztcblxuKCogQ29udmVyc2lvbiBvZiBTLWV4cHJlc3Npb25zIHRvIE9DYW1sLXZhbHVlcyAqKVxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IFNleHAuT2Zfc2V4cF9lcnJvclxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhjIHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSlcbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuXG5sZXQgdW5pdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+ICgpXG4gIHwgQXRvbSBfIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJ1bml0X29mX3NleHA6IGVtcHR5IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJvb2xfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSAoXCJ0cnVlXCIgfCBcIlRydWVcIikgLT4gdHJ1ZVxuICB8IEF0b20gKFwiZmFsc2VcIiB8IFwiRmFsc2VcIikgLT4gZmFsc2VcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogdW5rbm93biBzdHJpbmdcIiBzZXhwXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHN0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInN0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBieXRlc19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJieXRlc19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjaGFyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHNleHA7XG4gICAgc3RyLlswXVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGludF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgZmxvYXRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiZmxvYXRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDMyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQzMi5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQzMl9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50MzJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50NjRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDY0Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDY0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQ2NF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJuYXRpdmVpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm5hdGl2ZWludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCByZWZfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSByZWYgKGFfX29mX3NleHAgc2V4cClcbmxldCBsYXp5X3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSBMYXp5LmZyb21fdmFsIChhX19vZl9zZXhwIHNleHApXG5cbmxldCBvcHRpb25fb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBpZiAhcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdFxuICB0aGVuIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgW10gfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgZWwgXSB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IHJlcHJlc2VudCBvcHRpb25hbCB2YWx1ZVwiIHNleHBcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHApXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgYmUgKHNvbWUgZWwpXCIgc2V4cClcbjs7XG5cbmxldCBwYWlyX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgYSwgYlxuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHRyaXBsZV9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBjX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHA7IGNfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBsZXQgYyA9IGNfX29mX3NleHAgY19zZXhwIGluXG4gICAgYSwgYiwgY1xuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aHJlZSBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGxpc3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl9zZXhwIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwibGlzdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBhcnJheV9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gW3x8XVxuICB8IExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3NleHAgaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYXJyYXlfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaGFzaHRibF9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBMaXN0IFsga19zZXhwOyB2X3NleHAgXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl9zZXhwIGtfc2V4cCkgfmRhdGE6KHZhbF9vZl9zZXhwIHZfc2V4cClcbiAgICAgIHwgTGlzdCBfIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IHR1cGxlIGxpc3QgbmVlZGVkXCIgc2V4cFxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBvcGFxdWVfb2Zfc2V4cCBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciBcIm9wYXF1ZV9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgc2V4cFxuOztcblxubGV0IGZ1bl9vZl9zZXhwIHNleHAgPSBvZl9zZXhwX2Vycm9yIFwiZnVuX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHNleHBcblxuKCogU2V4cCBHcmFtbWFycyAqKVxuXG5pbmNsdWRlIFNleHBfY29udl9ncmFtbWFyXG5cbigqIFJlZ2lzdGVyaW5nIGRlZmF1bHQgZXhjZXB0aW9uIHByaW50ZXJzICopXG5cbmxldCBnZXRfZmxjX2Vycm9yIG5hbWUgKGZpbGUsIGxpbmUsIGNocikgPSBBdG9tIChzcHJpbnRmIFwiJXMgJXM6JWQ6JWRcIiBuYW1lIGZpbGUgbGluZSBjaHIpXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4YzpmYWxzZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFzc2VydF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFzc2VydF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiQXNzZXJ0X2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4aXRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRXhpdCAtPiBBdG9tIFwiRXhpdFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFbmRfb2ZfZmlsZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFbmRfb2ZfZmlsZSAtPiBBdG9tIFwiRW5kX29mX2ZpbGVcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBGYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZCAtPiBBdG9tIFwiTm90X2ZvdW5kXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEludmFsaWRfYXJndW1lbnRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhcmcgLT4gTGlzdCBbIEF0b20gXCJJbnZhbGlkX2FyZ3VtZW50XCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hdGNoX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTWF0Y2hfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIk1hdGNoX2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF9zXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZF9zIGFyZyAtPiBMaXN0IFsgQXRvbSBcIk5vdF9mb3VuZF9zXCI7IGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXNfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzX2Vycm9yIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlN5c19lcnJvclwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuSGVscF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuSGVscCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuSGVscFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuQmFkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5CYWQgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkJhZFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBMYXp5LlVuZGVmaW5lZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBMYXp5LlVuZGVmaW5lZCAtPiBBdG9tIFwiTGF6eS5VbmRlZmluZWRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2luZy5QYXJzZV9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEF0b20gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFF1ZXVlLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFF1ZXVlLkVtcHR5IC0+IEF0b20gXCJRdWV1ZS5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTY2FuZi5TY2FuX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlNjYW5mLlNjYW5fZmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTdGFjay5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTdGFjay5FbXB0eSAtPiBBdG9tIFwiU3RhY2suRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzLkJyZWFrXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5cy5CcmVhayAtPiBBdG9tIFwiU3lzLkJyZWFrXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOnRydWUgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkgLT5cbiAgICAgICAgICBMaXN0IFsgQXRvbSBcIlNleHBsaWIuQ29udi5PZl9zZXhwX2Vycm9yXCI7IHNleHBfb2ZfZXhuIGV4Yzsgc2V4cCBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFMtZXhwcmVzc2lvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBfY29udlxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3JcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4gc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlc19vZl9zZXhwOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgc2V4cCA9XG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgc2V4cFxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc2V4cF9ib29sX3dpdGhfcGF5bG9hZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvYyBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBhIFtzZXhwLmJvb2xdIGZpZWxkIHdhcyBnaXZlbiBhIHBheWxvYWQuXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogb25seSBwYWlycyBleHBlY3RlZCwgdGhlaXIgZmlyc3QgZWxlbWVudCBtdXN0IGJlIGFuIFxcXG4gICAgICAgYXRvbVwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHNleHAgbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl9zZXhwOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHNleHAgPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2Zfc2V4cDogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBmaWVsZHNcIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHNleHBcbjs7XG4iLCJvcGVuISBTdGRMYWJlbHNcbm9wZW4hIFNleHBfY29udlxub3BlbiEgU2V4cF9jb252X2Vycm9yXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgKF8sIF8pIHQgPVxuICAgIHwgRGVmYXVsdCA6ICh1bml0IC0+ICdhKSAtPiAoJ2EsIFNleHAudCAtPiAnYSkgdFxuICAgIHwgT21pdF9uaWwgOiAoJ2EsIFNleHAudCAtPiAnYSkgdFxuICAgIHwgUmVxdWlyZWQgOiAoJ2EsIFNleHAudCAtPiAnYSkgdFxuICAgIHwgU2V4cF9hcnJheSA6ICgnYSBhcnJheSwgU2V4cC50IC0+ICdhKSB0XG4gICAgfCBTZXhwX2Jvb2wgOiAoYm9vbCwgdW5pdCkgdFxuICAgIHwgU2V4cF9saXN0IDogKCdhIGxpc3QsIFNleHAudCAtPiAnYSkgdFxuICAgIHwgU2V4cF9vcHRpb24gOiAoJ2Egb3B0aW9uLCBTZXhwLnQgLT4gJ2EpIHRcbmVuZFxuXG5tb2R1bGUgRmllbGRzID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEVtcHR5IDogdW5pdCB0XG4gICAgfCBGaWVsZCA6XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGtpbmQgOiAoJ2EsICdjb252KSBLaW5kLnRcbiAgICAgICAgOyBjb252IDogJ2NvbnZcbiAgICAgICAgOyByZXN0IDogJ2IgdFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAqICdiKSB0XG5cbiAgbGV0IGxlbmd0aCA9XG4gICAgbGV0IHJlYyBsZW5ndGhfbG9vcCA6IHR5cGUgYS4gYSB0IC0+IGludCAtPiBpbnQgPVxuICAgICAgZnVuIHQgYWNjIC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpZWxkIHsgcmVzdDsgXyB9IC0+IGxlbmd0aF9sb29wIHJlc3QgKGFjYyArIDEpXG4gICAgICAgIHwgRW1wdHkgLT4gYWNjXG4gICAgaW5cbiAgICBmdW4gdCAtPiBsZW5ndGhfbG9vcCB0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFsZm9ybWVkID0gc3RydWN0XG4gICgqIFJlcHJlc2VudHMgZXJyb3JzIHRoYXQgY2FuIG9jY3VyIGR1ZSB0byBtYWxmb3JtZWQgcmVjb3JkIHNleHBzLiBBY2N1bXVsYXRlZCBhcyBhXG4gICAgIHZhbHVlIHNvIHdlIGNhbiByZXBvcnQgbXVsdGlwbGUgbmFtZXMgYXQgb25jZSBmb3IgZXh0cmEgZmllbGRzLCBkdXBsaWNhdGUgZmllbGRzLCBvclxuICAgICBtaXNzaW5nIGZpZWxkcy4gKilcbiAgdHlwZSB0ID1cbiAgICB8IEJvb2xfcGF5bG9hZFxuICAgIHwgRXh0cmFzIG9mIHN0cmluZyBsaXN0XG4gICAgfCBEdXBzIG9mIHN0cmluZyBsaXN0XG4gICAgfCBNaXNzaW5nIG9mIHN0cmluZyBsaXN0XG4gICAgfCBOb25fcGFpciBvZiBTZXhwLnQgb3B0aW9uXG5cbiAgbGV0IGNvbWJpbmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAoKiBjaG9vc2UgdGhlIGZpcnN0IGJvb2wtcGF5bG9hZCBvciBub24tcGFpciBlcnJvciB0aGF0IG9jY3VycyAqKVxuICAgIHwgKChCb29sX3BheWxvYWQgfCBOb25fcGFpciBfKSBhcyB0KSwgXyAtPiB0XG4gICAgfCBfLCAoKEJvb2xfcGF5bG9hZCB8IE5vbl9wYWlyIF8pIGFzIHQpIC0+IHRcbiAgICAoKiBjb21iaW5lIGxpc3RzIG9mIHNpbWlsYXIgZXJyb3JzICopXG4gICAgfCBFeHRyYXMgYSwgRXh0cmFzIGIgLT4gRXh0cmFzIChhIEAgYilcbiAgICB8IER1cHMgYSwgRHVwcyBiIC0+IER1cHMgKGEgQCBiKVxuICAgIHwgTWlzc2luZyBhLCBNaXNzaW5nIGIgLT4gTWlzc2luZyAoYSBAIGIpXG4gICAgKCogb3RoZXJ3aXNlLCBkdXBzID4gZXh0cmFzID4gbWlzc2luZyAqKVxuICAgIHwgKER1cHMgXyBhcyB0KSwgXyB8IF8sIChEdXBzIF8gYXMgdCkgLT4gdFxuICAgIHwgKEV4dHJhcyBfIGFzIHQpLCBfIHwgXywgKEV4dHJhcyBfIGFzIHQpIC0+IHRcbiAgOztcblxuICBsZXQgcmFpc2UgdCB+Y2FsbGVyIH5jb250ZXh0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEJvb2xfcGF5bG9hZCAtPiByZWNvcmRfc2V4cF9ib29sX3dpdGhfcGF5bG9hZCBjYWxsZXIgY29udGV4dFxuICAgIHwgRXh0cmFzIG5hbWVzIC0+IHJlY29yZF9leHRyYV9maWVsZHMgY2FsbGVyIChMaXN0LnJldiBuYW1lcykgY29udGV4dFxuICAgIHwgRHVwcyBuYW1lcyAtPiByZWNvcmRfZHVwbGljYXRlX2ZpZWxkcyBjYWxsZXIgKExpc3QucmV2IG5hbWVzKSBjb250ZXh0XG4gICAgfCBNaXNzaW5nIG5hbWVzIC0+XG4gICAgICBMaXN0Lm1hcCBuYW1lcyB+ZjooZnVuIG5hbWUgLT4gdHJ1ZSwgbmFtZSlcbiAgICAgIHw+IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgY2FsbGVyIGNvbnRleHRcbiAgICB8IE5vbl9wYWlyIG1heWJlX2NvbnRleHQgLT5cbiAgICAgIGxldCBjb250ZXh0ID0gT3B0aW9uLnZhbHVlIG1heWJlX2NvbnRleHQgfmRlZmF1bHQ6Y29udGV4dCBpblxuICAgICAgcmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWQgY2FsbGVyIGNvbnRleHRcbiAgOztcbmVuZFxuXG5leGNlcHRpb24gTWFsZm9ybWVkIG9mIE1hbGZvcm1lZC50XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBTdG9yZXMgc2V4cHMgY29ycmVzcG9uZGluZyB0byByZWNvcmQgZmllbGRzLCBpbiB0aGUgb3JkZXIgdGhlIGZpZWxkcyB3ZXJlIGRlY2xhcmVkLlxuICAgICBFeGNsdWRlcyBmaWVsZHMgYWxyZWFkeSBwYXJzZWQgaW4gdGhlIGZhc3QgcGF0aC5cblxuICAgICBMaXN0IHNleHBzIHJlcHJlc2VudCBhIGZpZWxkIHRoYXQgaXMgcHJlc2VudCwgc3VjaCBhcyAoeCAxKSBmb3IgYSBmaWVsZCBuYW1lZCBcInhcIi5cbiAgICAgQXRvbSBzZXhwcyByZXByZXNlbnQgYSBmaWVsZCB0aGF0IGlzIGFic2VudCwgb3IgYXQgbGVhc3Qgbm90IHlldCBzZWVuLiAqKVxuICB0eXBlIHQgPSB7IHN0YXRlIDogU2V4cC50IGFycmF5IH0gW0BAdW5ib3hlZF1cblxuICBsZXQgdW5zYWZlX2dldCB0IHBvcyA9IEFycmF5LnVuc2FmZV9nZXQgdC5zdGF0ZSBwb3NcbiAgbGV0IHVuc2FmZV9zZXQgdCBwb3Mgc2V4cCA9IEFycmF5LnVuc2FmZV9zZXQgdC5zdGF0ZSBwb3Mgc2V4cFxuICBsZXQgYWJzZW50ID0gU2V4cC5BdG9tIFwiXCJcbiAgbGV0IGNyZWF0ZSBsZW4gPSB7IHN0YXRlID0gQXJyYXkubWFrZSBsZW4gYWJzZW50IH1cbmVuZFxuXG4oKiBQYXJzaW5nIGZpZWxkIHZhbHVlcyBmcm9tIHN0YXRlLiAqKVxuXG5sZXQgcmVjIHBhcnNlX3ZhbHVlX21hbGZvcm1lZFxuICA6IHR5cGUgYSBiLiBNYWxmb3JtZWQudCAtPiBmaWVsZHM6KGEgKiBiKSBGaWVsZHMudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IHBvczppbnQgLT4gYVxuICA9XG4gIGZ1biBtYWxmb3JtZWQgfmZpZWxkcyB+c3RhdGUgfnBvcyAtPlxuICBsZXQgKEZpZWxkIGZpZWxkKSA9IGZpZWxkcyBpblxuICBsZXQgbWFsZm9ybWVkID1cbiAgICBtYXRjaCBwYXJzZV92YWx1ZXMgfmZpZWxkczpmaWVsZC5yZXN0IH5zdGF0ZSB+cG9zOihwb3MgKyAxKSB3aXRoXG4gICAgfCAoXyA6IGIpIC0+IG1hbGZvcm1lZFxuICAgIHwgZXhjZXB0aW9uIE1hbGZvcm1lZCBvdGhlciAtPiBNYWxmb3JtZWQuY29tYmluZSBtYWxmb3JtZWQgb3RoZXJcbiAgaW5cbiAgcmFpc2UgKE1hbGZvcm1lZCBtYWxmb3JtZWQpXG5cbmFuZCBwYXJzZV92YWx1ZSA6IHR5cGUgYSBiLiBmaWVsZHM6KGEgKiBiKSBGaWVsZHMudCAtPiBzdGF0ZTpTdGF0ZS50IC0+IHBvczppbnQgLT4gYSAqIGIgPVxuICBmdW4gfmZpZWxkcyB+c3RhdGUgfnBvcyAtPlxuICBsZXQgKEZpZWxkIHsgbmFtZTsga2luZDsgY29udjsgcmVzdCB9KSA9IGZpZWxkcyBpblxuICBsZXQgdmFsdWUgOiBhID1cbiAgICBtYXRjaCBraW5kLCBTdGF0ZS51bnNhZmVfZ2V0IHN0YXRlIHBvcyB3aXRoXG4gICAgKCogd2VsbC1mb3JtZWQgKilcbiAgICB8IFJlcXVpcmVkLCBMaXN0IFsgXzsgc2V4cCBdIC0+IGNvbnYgc2V4cFxuICAgIHwgRGVmYXVsdCBfLCBMaXN0IFsgXzsgc2V4cCBdIC0+IGNvbnYgc2V4cFxuICAgIHwgT21pdF9uaWwsIExpc3QgWyBfOyBzZXhwIF0gLT4gY29udiBzZXhwXG4gICAgfCBTZXhwX29wdGlvbiwgTGlzdCBbIF87IHNleHAgXSAtPiBTb21lIChjb252IHNleHApXG4gICAgfCBTZXhwX2xpc3QsIExpc3QgWyBfOyBzZXhwIF0gLT4gbGlzdF9vZl9zZXhwIGNvbnYgc2V4cFxuICAgIHwgU2V4cF9hcnJheSwgTGlzdCBbIF87IHNleHAgXSAtPiBhcnJheV9vZl9zZXhwIGNvbnYgc2V4cFxuICAgIHwgU2V4cF9ib29sLCBMaXN0IFsgXyBdIC0+IHRydWVcbiAgICAoKiBpbGwtZm9ybWVkICopXG4gICAgfCAoIChSZXF1aXJlZCB8IERlZmF1bHQgXyB8IE9taXRfbmlsIHwgU2V4cF9vcHRpb24gfCBTZXhwX2xpc3QgfCBTZXhwX2FycmF5KVxuICAgICAgLCAoTGlzdCAoXyA6OiBfIDo6IF8gOjogXykgYXMgc2V4cCkgKSAtPlxuICAgICAgcGFyc2VfdmFsdWVfbWFsZm9ybWVkIChOb25fcGFpciAoU29tZSBzZXhwKSkgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgIHwgKCAoUmVxdWlyZWQgfCBEZWZhdWx0IF8gfCBPbWl0X25pbCB8IFNleHBfb3B0aW9uIHwgU2V4cF9saXN0IHwgU2V4cF9hcnJheSlcbiAgICAgICwgTGlzdCAoW10gfCBbIF8gXSkgKSAtPiBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgKE5vbl9wYWlyIE5vbmUpIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICB8IFNleHBfYm9vbCwgTGlzdCAoW10gfCBfIDo6IF8gOjogXykgLT5cbiAgICAgIHBhcnNlX3ZhbHVlX21hbGZvcm1lZCBCb29sX3BheWxvYWQgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICAgICgqIGFic2VudCAqKVxuICAgIHwgUmVxdWlyZWQsIEF0b20gXyAtPiBwYXJzZV92YWx1ZV9tYWxmb3JtZWQgKE1pc3NpbmcgWyBuYW1lIF0pIH5maWVsZHMgfnN0YXRlIH5wb3NcbiAgICB8IERlZmF1bHQgZGVmYXVsdCwgQXRvbSBfIC0+IGRlZmF1bHQgKClcbiAgICB8IE9taXRfbmlsLCBBdG9tIF8gLT4gY29udiAoTGlzdCBbXSlcbiAgICB8IFNleHBfb3B0aW9uLCBBdG9tIF8gLT4gTm9uZVxuICAgIHwgU2V4cF9saXN0LCBBdG9tIF8gLT4gW11cbiAgICB8IFNleHBfYXJyYXksIEF0b20gXyAtPiBbfHxdXG4gICAgfCBTZXhwX2Jvb2wsIEF0b20gXyAtPiBmYWxzZVxuICBpblxuICB2YWx1ZSwgcGFyc2VfdmFsdWVzIH5maWVsZHM6cmVzdCB+c3RhdGUgfnBvczoocG9zICsgMSlcblxuYW5kIHBhcnNlX3ZhbHVlcyA6IHR5cGUgYS4gZmllbGRzOmEgRmllbGRzLnQgLT4gc3RhdGU6U3RhdGUudCAtPiBwb3M6aW50IC0+IGEgPVxuICBmdW4gfmZpZWxkcyB+c3RhdGUgfnBvcyAtPlxuICBtYXRjaCBmaWVsZHMgd2l0aFxuICB8IEZpZWxkIF8gLT4gcGFyc2VfdmFsdWUgfmZpZWxkcyB+c3RhdGUgfnBvc1xuICB8IEVtcHR5IC0+ICgpXG47O1xuXG4oKiBQb3B1bGF0aW5nIHN0YXRlLiBIYW5kbGVzIHNsb3cgcGF0aCBjYXNlcyB3aGVyZSB0aGVyZSBtYXkgYmUgcmVvcmRlcmVkLCBkdXBsaWNhdGVkLFxuICAgbWlzc2luZywgb3IgZXh0cmEgZmllbGRzLiAqKVxuXG5sZXQgcmVjIHBhcnNlX3NwaW5lX21hbGZvcm1lZCBtYWxmb3JtZWQgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcyA9XG4gIGxldCBtYWxmb3JtZWQgPVxuICAgIG1hdGNoIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcyB3aXRoXG4gICAgfCAoKSAtPiBtYWxmb3JtZWRcbiAgICB8IGV4Y2VwdGlvbiBNYWxmb3JtZWQgb3RoZXIgLT4gTWFsZm9ybWVkLmNvbWJpbmUgbWFsZm9ybWVkIG90aGVyXG4gIGluXG4gIHJhaXNlIChNYWxmb3JtZWQgbWFsZm9ybWVkKVxuXG5hbmQgcGFyc2Vfc3BpbmVfc2xvdyB+aW5kZXggfmV4dHJhIH5zZWVuIH5zdGF0ZSB+bGVuIHNleHBzID1cbiAgbWF0Y2ggKHNleHBzIDogU2V4cC50IGxpc3QpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IChMaXN0IChBdG9tIG5hbWUgOjogXykgYXMgZmllbGQpIDo6IHNleHBzIC0+XG4gICAgbGV0IGkgPSBpbmRleCBuYW1lIGluXG4gICAgKG1hdGNoIHNlZW4gPD0gaSAmJiBpIDwgbGVuIHdpdGhcbiAgICAgfCB0cnVlIC0+XG4gICAgICAgKCogdmFsaWQgZmllbGQgZm9yIHNsb3ctcGF0aCBwYXJzaW5nICopXG4gICAgICAgbGV0IHBvcyA9IGkgLSBzZWVuIGluXG4gICAgICAgKG1hdGNoIFN0YXRlLnVuc2FmZV9nZXQgc3RhdGUgcG9zIHdpdGhcbiAgICAgICAgfCBBdG9tIF8gLT5cbiAgICAgICAgICAoKiBmaWVsZCBub3Qgc2VlbiB5ZXQgKilcbiAgICAgICAgICBTdGF0ZS51bnNhZmVfc2V0IHN0YXRlIHBvcyBmaWVsZDtcbiAgICAgICAgICBwYXJzZV9zcGluZV9zbG93IH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbiAgICAgICAgfCBMaXN0IF8gLT5cbiAgICAgICAgICAoKiBmaWVsZCBhbHJlYWR5IHNlZW4gKilcbiAgICAgICAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKER1cHMgWyBuYW1lIF0pIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMpXG4gICAgIHwgZmFsc2UgLT5cbiAgICAgICAobWF0Y2ggMCA8PSBpICYmIGkgPCBzZWVuIHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKCogZmllbGQgc2VlbiBpbiBmYXN0IHBhdGggKilcbiAgICAgICAgICBwYXJzZV9zcGluZV9tYWxmb3JtZWQgKER1cHMgWyBuYW1lIF0pIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgICgqIGV4dHJhIGZpZWxkICopXG4gICAgICAgICAgKG1hdGNoIGV4dHJhIHdpdGhcbiAgICAgICAgICAgfCB0cnVlIC0+IHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChFeHRyYXMgWyBuYW1lIF0pIH5pbmRleCB+ZXh0cmEgfnNlZW4gfnN0YXRlIH5sZW4gc2V4cHMpKSlcbiAgfCBzZXhwIDo6IHNleHBzIC0+XG4gICAgcGFyc2Vfc3BpbmVfbWFsZm9ybWVkIChOb25fcGFpciAoU29tZSBzZXhwKSkgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwc1xuOztcblxuKCogU2xvdyBwYXRoIGZvciByZWNvcmQgcGFyc2luZy4gVXNlcyBzdGF0ZSB0byBzdG9yZSBmaWVsZHMgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4gKilcblxubGV0IHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcyA9XG4gIGxldCB1bnNlZW4gPSBGaWVsZHMubGVuZ3RoIGZpZWxkcyBpblxuICBsZXQgc3RhdGUgPSBTdGF0ZS5jcmVhdGUgdW5zZWVuIGluXG4gIGxldCBsZW4gPSBzZWVuICsgdW5zZWVuIGluXG4gICgqIHBvcHVsYXRlIHN0YXRlICopXG4gIHBhcnNlX3NwaW5lX3Nsb3cgfmluZGV4IH5leHRyYSB+c2VlbiB+c3RhdGUgfmxlbiBzZXhwcztcbiAgKCogcGFyc2UgdmFsdWVzIGZyb20gc3RhdGUgKilcbiAgcGFyc2VfdmFsdWVzIH5maWVsZHMgfnN0YXRlIH5wb3M6MFxuOztcblxuKCogRmFzdCBwYXRoIGZvciByZWNvcmQgcGFyc2luZy4gRGlyZWN0bHkgcGFyc2VzIGFuZCByZXR1cm5zIGZpZWxkcyBpbiB0aGUgb3JkZXIgdGhleSBhcmVcbiAgIGRlY2xhcmVkLiBGYWxscyBiYWNrIG9uIHNsb3cgcGF0aCBpZiBhbnkgZmllbGRzIGFyZSBhYnNlbnQsIHJlb3JkZXJlZCwgb3IgbWFsZm9ybWVkLiAqKVxuXG5sZXQgcmVjIHBhcnNlX2ZpZWxkX2Zhc3RcbiAgOiB0eXBlIGEgYi5cbiAgICBmaWVsZHM6KGEgKiBiKSBGaWVsZHMudFxuICAgIC0+IGluZGV4OihzdHJpbmcgLT4gaW50KVxuICAgIC0+IGV4dHJhOmJvb2xcbiAgICAtPiBzZWVuOmludFxuICAgIC0+IFNleHAudCBsaXN0XG4gICAgLT4gYSAqIGJcbiAgPVxuICBmdW4gfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzIC0+XG4gIGxldCAoRmllbGQgeyBuYW1lOyBraW5kOyBjb252OyByZXN0IH0pID0gZmllbGRzIGluXG4gIG1hdGNoIHNleHBzIHdpdGhcbiAgfCBMaXN0IChBdG9tIGF0b20gOjogYXJncykgOjogb3RoZXJzIHdoZW4gU3RyaW5nLmVxdWFsIGF0b20gbmFtZSAtPlxuICAgIChtYXRjaCBraW5kLCBhcmdzIHdpdGhcbiAgICAgfCBSZXF1aXJlZCwgWyBzZXhwIF0gLT5cbiAgICAgICBjb252IHNleHAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnNcbiAgICAgfCBEZWZhdWx0IF8sIFsgc2V4cCBdIC0+XG4gICAgICAgY29udiBzZXhwLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgIHwgT21pdF9uaWwsIFsgc2V4cCBdIC0+XG4gICAgICAgY29udiBzZXhwLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgIHwgU2V4cF9vcHRpb24sIFsgc2V4cCBdIC0+XG4gICAgICAgKCBTb21lIChjb252IHNleHApXG4gICAgICAgLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzIClcbiAgICAgfCBTZXhwX2xpc3QsIFsgc2V4cCBdIC0+XG4gICAgICAgKCBsaXN0X29mX3NleHAgY29udiBzZXhwXG4gICAgICAgLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzIClcbiAgICAgfCBTZXhwX2FycmF5LCBbIHNleHAgXSAtPlxuICAgICAgICggYXJyYXlfb2Zfc2V4cCBjb252IHNleHBcbiAgICAgICAsIHBhcnNlX3NwaW5lX2Zhc3QgfmZpZWxkczpyZXN0IH5pbmRleCB+ZXh0cmEgfnNlZW46KHNlZW4gKyAxKSBvdGhlcnMgKVxuICAgICB8IFNleHBfYm9vbCwgW10gLT5cbiAgICAgICB0cnVlLCBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHM6cmVzdCB+aW5kZXggfmV4dHJhIH5zZWVuOihzZWVuICsgMSkgb3RoZXJzXG4gICAgICgqIG1hbGZvcm1lZCBmaWVsZCBvZiBzb21lIGtpbmQsIGRpc3BhdGNoIHRvIHNsb3cgcGF0aCAqKVxuICAgICB8IF8sIF8gLT4gcGFyc2VfcmVjb3JkX3Nsb3cgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzKVxuICAoKiBtYWxmb3JtZWQgb3Igb3V0LW9mLW9yZGVyIGZpZWxkLCBkaXNwYXRjaCB0byBzbG93IHBhdGggKilcbiAgfCBfIC0+IHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwc1xuXG5hbmQgcGFyc2Vfc3BpbmVfZmFzdFxuICA6IHR5cGUgYS5cbiAgICBmaWVsZHM6YSBGaWVsZHMudFxuICAgIC0+IGluZGV4OihzdHJpbmcgLT4gaW50KVxuICAgIC0+IGV4dHJhOmJvb2xcbiAgICAtPiBzZWVuOmludFxuICAgIC0+IFNleHAudCBsaXN0XG4gICAgLT4gYVxuICA9XG4gIGZ1biB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgfnNlZW4gc2V4cHMgLT5cbiAgbWF0Y2ggZmllbGRzIHdpdGhcbiAgfCBGaWVsZCBfIC0+IHBhcnNlX2ZpZWxkX2Zhc3QgfmZpZWxkcyB+aW5kZXggfmV4dHJhIH5zZWVuIHNleHBzXG4gIHwgRW1wdHkgLT5cbiAgICAobWF0Y2ggc2V4cHMgd2l0aFxuICAgICB8IFtdIC0+ICgpXG4gICAgIHwgXyA6OiBfIC0+XG4gICAgICAgKCogZXh0cmEgc2V4cHMsIGRpc3BhdGNoIHRvIHNsb3cgcGF0aCAqKVxuICAgICAgIHBhcnNlX3JlY29yZF9zbG93IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbiBzZXhwcylcbjs7XG5cbmxldCBwYXJzZV9yZWNvcmRfZmFzdCB+ZmllbGRzIH5pbmRleCB+ZXh0cmEgc2V4cHMgPVxuICBwYXJzZV9zcGluZV9mYXN0IH5maWVsZHMgfmluZGV4IH5leHRyYSB+c2VlbjowIHNleHBzXG47O1xuXG4oKiBFbnRyeSBwb2ludHMuICopXG5cbmxldCByZWNvcmRfb2Zfc2V4cHNcbiAgICAgIH5jYWxsZXJcbiAgICAgIH5jb250ZXh0XG4gICAgICB+ZmllbGRzXG4gICAgICB+aW5kZXhfb2ZfZmllbGRcbiAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgIH5jcmVhdGVcbiAgICAgIHNleHBzXG4gID1cbiAgbGV0IGFsbG93X2V4dHJhX2ZpZWxkcyA9XG4gICAgYWxsb3dfZXh0cmFfZmllbGRzIHx8IG5vdCAhU2V4cF9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgaW5cbiAgbWF0Y2hcbiAgICBwYXJzZV9yZWNvcmRfZmFzdCB+ZmllbGRzIH5pbmRleDppbmRleF9vZl9maWVsZCB+ZXh0cmE6YWxsb3dfZXh0cmFfZmllbGRzIHNleHBzXG4gIHdpdGhcbiAgfCB2YWx1ZSAtPiBjcmVhdGUgdmFsdWVcbiAgfCBleGNlcHRpb24gTWFsZm9ybWVkIG1hbGZvcm1lZCAtPiBNYWxmb3JtZWQucmFpc2UgbWFsZm9ybWVkIH5jYWxsZXIgfmNvbnRleHRcbjs7XG5cbmxldCByZWNvcmRfb2Zfc2V4cCB+Y2FsbGVyIH5maWVsZHMgfmluZGV4X29mX2ZpZWxkIH5hbGxvd19leHRyYV9maWVsZHMgfmNyZWF0ZSBzZXhwID1cbiAgbWF0Y2ggKHNleHAgOiBTZXhwLnQpIHdpdGhcbiAgfCBBdG9tIF8gYXMgY29udGV4dCAtPiByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gY2FsbGVyIGNvbnRleHRcbiAgfCBMaXN0IHNleHBzIGFzIGNvbnRleHQgLT5cbiAgICByZWNvcmRfb2Zfc2V4cHNcbiAgICAgIH5jYWxsZXJcbiAgICAgIH5jb250ZXh0XG4gICAgICB+ZmllbGRzXG4gICAgICB+aW5kZXhfb2ZfZmllbGRcbiAgICAgIH5hbGxvd19leHRyYV9maWVsZHNcbiAgICAgIH5jcmVhdGVcbiAgICAgIHNleHBzXG47O1xuIiwiKCogVGhlIFtnbG9iYWxpemVfe2Jvb2wsY2hhcix1bml0fV0gZnVuY3Rpb25zIGFyZSB3cml0dGVuIGFzIG1hdGNoZXMgcGx1cyB0aGUgaWRlbnRpdHlcbiAgIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIHR5cGUgY2hlY2tlciBjYW4gZ2l2ZSB0aGVtIHRoZSBkZXNpcmVkIHR5cGUsIHdpdGhvdXQgaGF2aW5nIHRvIGRvXG4gICBhbnl0aGluZyBzcGVjaWFsLiAgSG93ZXZlciwgW2dsb2JhbGl6ZV9pbnRdIGNhbm5vdCBiZSB3cml0dGVuIHRoaXMgd2F5LCBzbyB3ZSByZXNvcnQgdG9cbiAgIHVzaW5nIGFuIFtleHRlcm5hbF0uICopXG5cbmxldCBnbG9iYWxpemVfYm9vbCA9IGZ1bmN0aW9uXG4gIHwgKHRydWUgfCBmYWxzZSkgYXMgYiAtPiBiXG47O1xuXG5sZXQgZ2xvYmFsaXplX2NoYXIgPSBmdW5jdGlvblxuICB8ICdcXHgwMCcgLi4gJ1xceEZGJyBhcyBjIC0+IGNcbjs7XG5cbmV4dGVybmFsIGdsb2JhbGl6ZV9mbG9hdCA6IChmbG9hdFtAbG9jYWxdKSAtPiBmbG9hdCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGdsb2JhbGl6ZV9pbnQgOiAoaW50W0Bsb2NhbF0pIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdsb2JhbGl6ZV9pbnQzMiA6IChpbnQzMltAbG9jYWxdKSAtPiBpbnQzMiA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGdsb2JhbGl6ZV9pbnQ2NCA6IChpbnQ2NFtAbG9jYWxdKSAtPiBpbnQ2NCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGdsb2JhbGl6ZV9uYXRpdmVpbnQgOiAobmF0aXZlaW50W0Bsb2NhbF0pIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGdsb2JhbGl6ZV9ieXRlcyA6IChieXRlc1tAbG9jYWxdKSAtPiBieXRlcyA9IFwiY2FtbF9vYmpfZHVwXCJcbmV4dGVybmFsIGdsb2JhbGl6ZV9zdHJpbmcgOiAoc3RyaW5nW0Bsb2NhbF0pIC0+IHN0cmluZyA9IFwiY2FtbF9vYmpfZHVwXCJcblxubGV0IGdsb2JhbGl6ZV91bml0ICgoKSBhcyB1KSA9IHVcblxuZXh0ZXJuYWwgZ2xvYmFsaXplX2FycmF5JyA6ICgnYSBhcnJheVtAbG9jYWxdKSAtPiAnYSBhcnJheSA9IFwiY2FtbF9vYmpfZHVwXCJcblxubGV0IGdsb2JhbGl6ZV9hcnJheSBfIGEgPSBnbG9iYWxpemVfYXJyYXknIGFcblxubGV0IHJlYyBnbG9iYWxpemVfbGlzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT4gZiB4IDo6IGdsb2JhbGl6ZV9saXN0IGYgeHNcbjs7XG5cbmxldCBnbG9iYWxpemVfb3B0aW9uIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG47O1xuXG5sZXQgZ2xvYmFsaXplX3Jlc3VsdCBnbG9iYWxpemVfYSBnbG9iYWxpemVfYiB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgT2sgYSAtPiBPayAoZ2xvYmFsaXplX2EgYSlcbiAgfCBFcnJvciBiIC0+IEVycm9yIChnbG9iYWxpemVfYiBiKVxuOztcblxubGV0IGdsb2JhbGl6ZV9yZWYnIHIgPSByZWYgIXJcbmxldCBnbG9iYWxpemVfcmVmIF8gciA9IGdsb2JhbGl6ZV9yZWYnIHJcbiIsIigqKiBQcmltaXRpdmVzIGZvciBwb2x5bW9ycGhpYyBjb21wYXJlLiAqKVxuXG4oKl8gUG9seW1vcnBoaWMgY29tcGlsZXIgcHJpbWl0aXZlcyBjYW4ndCBiZSBhbGlhc2VzIGFzIHRoaXMgZG9lc24ndCBwbGF5IHdlbGwgd2l0aFxuICBpbmxpbmluZy4gKElmIGFsaWFzZWQgd2l0aG91dCBhIHR5cGUgYW5ub3RhdGlvbiwgdGhlIGNvbXBpbGVyIHdvdWxkIGltcGxlbWVudCB0aGVtXG4gIHVzaW5nIHRoZSBnZW5lcmljIGNvZGUgZG9pbmcgYSBDIGNhbGwsIGFuZCBpdCdzIHRoaXMgY29kZSB0aGF0IHdvdWxkIGJlIGlubGluZWQuKSBBcyBhXG4gIHJlc3VsdCB3ZSBoYXZlIHRvIGNvcHkgdGhlIFtleHRlcm5hbCAuLi5dIGRlY2xhcmF0aW9uIGhlcmUuICopXG5leHRlcm5hbCAoIDwgKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoID0gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA+ICkgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPj0gKSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmV4dGVybmFsIGFzY2VuZGluZyA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAoJ2FbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBlcXVhbCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG5sZXQgZGVzY2VuZGluZyB4IHkgPSBjb21wYXJlIHkgeFxubGV0IG1heCB4IHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG5sZXQgbWluIHggeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbiIsIigqIFRoaXMgbW9kdWxlIGlzIGluY2x1ZGVkIGluIFtJbXBvcnRdLiAgSXQgaXMgYWltZWQgYXQgbW9kdWxlcyB0aGF0IGRlZmluZSB0aGUgc3RhbmRhcmRcbiAgIGNvbWJpbmF0b3JzIGZvciBbc2V4cF9vZl0sIFtvZl9zZXhwXSwgW2NvbXBhcmVdIGFuZCBbaGFzaF0gYW5kIGFyZSBpbmNsdWRlZCBpblxuICAgW0ltcG9ydF0uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gIHdpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0IDo9ICgnYSwgJ2IsICdjKSBmb3JtYXRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA6PSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICgqIFRoZXNlIG1vZHVsZXMgYXJlIHJlZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgUHJpbnRmIDo9IFNoYWRvd19zdGRsaWIuUHJpbnRmXG4gIHdpdGggbW9kdWxlIFF1ZXVlIDo9IFNoYWRvd19zdGRsaWIuUXVldWVcbiAgd2l0aCBtb2R1bGUgUmFuZG9tIDo9IFNoYWRvd19zdGRsaWIuUmFuZG9tXG4gIHdpdGggbW9kdWxlIFJlc3VsdCA6PSBTaGFkb3dfc3RkbGliLlJlc3VsdFxuICB3aXRoIG1vZHVsZSBTZXQgOj0gU2hhZG93X3N0ZGxpYi5TZXRcbiAgd2l0aCBtb2R1bGUgU3RhY2sgOj0gU2hhZG93X3N0ZGxpYi5TdGFja1xuICB3aXRoIG1vZHVsZSBTdHJpbmcgOj0gU2hhZG93X3N0ZGxpYi5TdHJpbmdcbiAgd2l0aCBtb2R1bGUgU3lzIDo9IFNoYWRvd19zdGRsaWIuU3lzXG4gIHdpdGggbW9kdWxlIFVjaGFyIDo9IFNoYWRvd19zdGRsaWIuVWNoYXJcbiAgd2l0aCBtb2R1bGUgVW5pdCA6PSBTaGFkb3dfc3RkbGliLlVuaXQpXG4gIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbnR5cGUgJ2EgcmVmID0gJ2EgU3RkbGliLnJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cblxuKCogUmVzaHVmZmxlIFtTdGRsaWJdIHNvIHRoYXQgd2UgY2hvb3NlIHRoZSBtb2R1bGVzIHVzaW5nIGxhYmVscyB3aGVuIGF2YWlsYWJsZS4gKilcbm1vZHVsZSBTdGRsaWIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWJcbiAgaW5jbHVkZSBTdGRsaWIuU3RkTGFiZWxzXG4gIGluY2x1ZGUgU3RkbGliLk1vcmVMYWJlbHNcbmVuZFxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gZ2V0IHRoZSBsYXp5IGJlaGF2aW9yICopXG5leHRlcm5hbCAoICYmICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCBub3QgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4oKiBXZSB1c2UgW09iai5tYWdpY10gaGVyZSBhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZ2VuZXJhdGUgYSBjb25kaXRpb25hbCBqdW1wIGFuZCB0aGVcbiAgIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMgbm90aWNlYWJsZS4gKilcbmxldCBib29sX3RvX2ludCAoeCA6IGJvb2wpIDogaW50ID0gU3RkbGliLk9iai5tYWdpYyB4XG5cbigqIFRoaXMgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBmb3IgdGhlIHdhcm5pbmdzIHRvIHdvcmsgcHJvcGVybHkgKilcbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbmxldCAoICE9ICkgPSBTdGRsaWIuKCAhPSApXG5sZXQgKCAqICkgPSBTdGRsaWIuKCAqIClcbmxldCAoICoqICkgPSBTdGRsaWIuKCAqKiApXG5sZXQgKCAqLiApID0gU3RkbGliLiggKi4gKVxubGV0ICggKyApID0gU3RkbGliLiggKyApXG5sZXQgKCArLiApID0gU3RkbGliLiggKy4gKVxubGV0ICggLSApID0gU3RkbGliLiggLSApXG5sZXQgKCAtLiApID0gU3RkbGliLiggLS4gKVxubGV0ICggLyApID0gU3RkbGliLiggLyApXG5sZXQgKCAvLiApID0gU3RkbGliLiggLy4gKVxuXG5tb2R1bGUgUG9seSA9IFBvbHkwICgqKiBAY2Fub25pY2FsIEJhc2UuUG9seSAqKVxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICAoKiBEZWNsYXJlZCBhcyBleHRlcm5hbHMgc28gdGhhdCB0aGUgY29tcGlsZXIgc2tpcHMgdGhlIGNhbWxfYXBwbHlfWCB3cmFwcGluZyBldmVuIHdoZW5cbiAgICAgY29tcGlsaW5nIHdpdGhvdXQgY3Jvc3MgbGlicmFyeSBpbmxpbmluZy4gKilcbiAgZXh0ZXJuYWwgKCA9ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXF1YWxcIlxuICBleHRlcm5hbCAoIDw+ICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA8PSApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuICBleHRlcm5hbCBjb21wYXJlIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY29tcGFyZVwiXG4gIGV4dGVybmFsIGVxdWFsIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogaW50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgSW50MzJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBTdGRsaWIuSW50MzIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5JbnQzMi50KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgKCogRGVjbGFyZWQgYXMgZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX2FwcGx5X1ggd3JhcHBpbmcgZXZlbiB3aGVuXG4gICAgIGNvbXBpbGluZyB3aXRob3V0IGNyb3NzIGxpYnJhcnkgaW5saW5pbmcuICopXG4gIGV4dGVybmFsICggPSApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApXG4gICAgOiAgKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiBib29sXG4gICAgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoID4gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoID49IClcbiAgICA6ICAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKFN0ZGxpYi5JbnQ2NC50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGJvb2xcbiAgICA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZVxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gaW50XG4gICAgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbFxuICAgIDogIChTdGRsaWIuSW50NjQudFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoU3RkbGliLkludDY0LnRbQGxvY2FsX29wdF0pXG4gICAgLT4gYm9vbFxuICAgID0gXCIlZXF1YWxcIlxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5JbnQ2NC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgbWF4ICh4IDogU3RkbGliLkludDY0LnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuSW50NjQudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBTdGRsaWIuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogU3RkbGliLk5hdGl2ZWludC50KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IFN0ZGxpYi5OYXRpdmVpbnQudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBib29sKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJvb2wpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJvb2wpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYm9vbCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGJvb2wpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxubW9kdWxlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogY2hhcikgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogY2hhcikgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBjaGFyKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGNoYXIpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBjaGFyKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0IGkgeCA9IFN0ZGxpYi5VY2hhci50b19pbnQgeFxuICBsZXQgKCA8ICkgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD0gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD4gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPSApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChpIHgpIChpIHkpXG4gIGxldCAoID4gKSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA+PSApICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSAoaSB4KSAoaSB5KVxuXG4gIGxldCBhc2NlbmRpbmcgKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5hc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmRlc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgY29tcGFyZSAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlIChpIHgpIChpIHkpXG4gIGxldCBlcXVhbCAoeCA6IFN0ZGxpYi5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCAoaSB4KSAoaSB5KVxuICBsZXQgbWF4ICh4IDogU3RkbGliLlVjaGFyLnQpIHkgPSBCb29sMC5zZWxlY3QgKHggPj0geSkgeCB5XG4gIGxldCBtaW4gKHggOiBTdGRsaWIuVWNoYXIudCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA8PSB5KSB4IHlcbmVuZFxuXG5tb2R1bGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGZsb2F0KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IGZsb2F0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGZsb2F0KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBmbG9hdCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBmbG9hdCkgeSA9IEJvb2wwLnNlbGVjdCAoeCA+PSB5KSB4IHlcbiAgbGV0IG1pbiAoeCA6IGZsb2F0KSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogc3RyaW5nKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogc3RyaW5nKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogc3RyaW5nKSB5ID0gQm9vbDAuc2VsZWN0ICh4IDw9IHkpIHggeVxuZW5kXG5cbm1vZHVsZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJ5dGVzKSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJ5dGVzKSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogYnl0ZXMpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJ5dGVzKSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IGJ5dGVzKSB5ID0gQm9vbDAuc2VsZWN0ICh4ID49IHkpIHggeVxuICBsZXQgbWluICh4IDogYnl0ZXMpIHkgPSBCb29sMC5zZWxlY3QgKHggPD0geSkgeCB5XG5lbmRcblxuKCogVGhpcyBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIHNvIHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBzcGVjaWFsaXplIGl0IGFzIGFcbiAgIGRpcmVjdCBzZXQgb3IgY2FtbF9tb2RpZnkgKilcbmV4dGVybmFsICggOj0gKSA6ICgnYSByZWZbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlZmluZWQgYXMgYW4gZXh0ZXJuYWwgb3RoZXJ3aXNlIHRoZSBjb21waWxlciB3b24ndCB1bmJveFxuICAgcmVmZXJlbmNlcyAqKVxuZXh0ZXJuYWwgKCAhICkgOiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCByZWYgOiAnYSAtPiAoJ2EgcmVmW0Bsb2NhbF9vcHRdKSA9IFwiJW1ha2VtdXRhYmxlXCJcblxubGV0ICggQCApID0gU3RkbGliLiggQCApXG5sZXQgKCBeICkgPSBTdGRsaWIuKCBeIClcbmxldCAoIH4tICkgPSBTdGRsaWIuKCB+LSApXG5sZXQgKCB+LS4gKSA9IFN0ZGxpYi4oIH4tLiApXG5sZXQgKCBhc3IgKSA9IFN0ZGxpYi4oIGFzciApXG5sZXQgKCBsYW5kICkgPSBTdGRsaWIuKCBsYW5kIClcbmxldCBsbm90ID0gU3RkbGliLmxub3RcbmxldCAoIGxvciApID0gU3RkbGliLiggbG9yIClcbmxldCAoIGxzbCApID0gU3RkbGliLiggbHNsIClcbmxldCAoIGxzciApID0gU3RkbGliLiggbHNyIClcbmxldCAoIGx4b3IgKSA9IFN0ZGxpYi4oIGx4b3IgKVxubGV0ICggbW9kICkgPSBTdGRsaWIuKCBtb2QgKVxubGV0IGFicyA9IFN0ZGxpYi5hYnNcbmxldCBmYWlsd2l0aCA9IFN0ZGxpYi5mYWlsd2l0aFxubGV0IGZzdCA9IFN0ZGxpYi5mc3RcbmxldCBpbnZhbGlkX2FyZyA9IFN0ZGxpYi5pbnZhbGlkX2FyZ1xubGV0IHNuZCA9IFN0ZGxpYi5zbmRcblxuKCogW3JhaXNlXSBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIGFzIHRoZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHJlcGxhY2VzXG4gICAnJXJhaXNlJyBieSAnJXJlcmFpc2UnIHdoZW4gYXBwcm9wcmlhdGUuICopXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG5sZXQgcGh5c19lcXVhbCA9IFN0ZGxpYi4oID09IClcblxuZXh0ZXJuYWwgZGVjciA6IChpbnQgcmVmW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlZGVjclwiXG5leHRlcm5hbCBpbmNyIDogKGludCByZWZbQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpbmNyXCJcblxuKCogdXNlZCBieSBzZXhwX2NvbnYsIHdoaWNoIGZsb2F0MCBkZXBlbmRzIG9uIHRocm91Z2ggb3B0aW9uICopXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ1xuXG4oKiBbYW1fdGVzdGluZ10gaXMgdXNlZCBpbiBhIGZldyBwbGFjZXMgdG8gYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4gaW4gdGVzdGluZyBtb2RlLCBzdWNoXG4gICBhcyBpbiBbcmFuZG9tLm1sXS4gIFthbV90ZXN0aW5nXSBpcyBpbXBsZW1lbnRlZCB1c2luZyBbQmFzZV9hbV90ZXN0aW5nXSwgYSB3ZWFrIEMvanNcbiAgIHByaW1pdGl2ZSB0aGF0IHJldHVybnMgW2ZhbHNlXSwgYnV0IHdoZW4gbGlua2luZyBhbiBpbmxpbmUtdGVzdC1ydW5uZXIgZXhlY3V0YWJsZSwgaXNcbiAgIG92ZXJyaWRkZW4gYnkgYW5vdGhlciBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFt0cnVlXS4gKilcbmV4dGVybmFsIGFtX3Rlc3RpbmcgOiB1bml0IC0+IGJvb2wgPSBcIkJhc2VfYW1fdGVzdGluZ1wiXG5cbmxldCBhbV90ZXN0aW5nID0gYW1fdGVzdGluZyAoKVxuIiwiKCogW0ludDBdIGRlZmluZXMgaW50ZWdlciBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5XG4gICBkZWZpbmVkIGluIHRlcm1zIG9mIFtTdGRsaWJdLiBbSW50MF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZVxuICAgcGFydCBvZiBbU3RkbGliXSB0aGF0IFtCYXNlXSB1c2VzIGZvciBpbnRlZ2VycyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gaW50MC5tbCBzaG91bGQgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSB0aHJvdWdoIFtTdGRsaWJdLiBbSW50MF0gaGFzXG4gICBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBpbnRzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5JbnRdIGluIGJ1aWxkXG4gICBvcmRlciBzaG91bGQgZG86XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBJbnQgID0gSW50MFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBJbnQgPSBJbnQwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwXG4gICBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkludF0uICopXG5cbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2ludFxubGV0IG9mX3N0cmluZyA9IFN0ZGxpYi5pbnRfb2Zfc3RyaW5nXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5pbnRfb2Zfc3RyaW5nX29wdFxubGV0IHRvX2Zsb2F0ID0gU3RkbGliLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0ID0gU3RkbGliLmludF9vZl9mbG9hdFxubGV0IG1heF92YWx1ZSA9IFN0ZGxpYi5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gU3RkbGliLm1pbl9pbnRcbmxldCBzdWNjID0gU3RkbGliLnN1Y2NcbmxldCBwcmVkID0gU3RkbGliLnByZWRcbiIsIm9wZW4hIEltcG9ydDBcbmluY2x1ZGUgU3RkbGliLlByaW50ZlxuXG4oKiogZmFpbHdpdGgsIGludmFsaWRfYXJnLCBhbmQgZXhpdCBhY2NlcHRpbmcgcHJpbnRmJ3MgZm9ybWF0LiAqKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gZmFpbHdpdGhmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBmYWlsd2l0aCBzKSBmbXRcbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2FyZ2YgZm10ID0ga3NwcmludGYgKGZ1biBzICgpIC0+IGludmFsaWRfYXJnIHMpIGZtdFxuIiwiKCogW1N5czBdIGRlZmluZXMgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluXG4gICB0ZXJtcyBvZiBbU3RkbGliLlN5c10uICBbU3lzMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mXG4gICBbU3RkbGliLlN5c10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzeXMubWxcbiAgIHNob3VsZCB1c2UgW1N0ZGxpYi5TeXNdLiBbU3lzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGVcbiAgIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgdGhlc2VcbiAgIGZ1bmN0aW9ucyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuU3lzXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgU3lzID0gU3lzMF0uICBEZWZpbmluZyBbbW9kdWxlIFN5cyA9IFN5czBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2VcbiAgIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuU3lzXS4gKilcblxub3BlbiEgSW1wb3J0MFxuXG50eXBlIGJhY2tlbmRfdHlwZSA9IFN0ZGxpYi5TeXMuYmFja2VuZF90eXBlID1cbiAgfCBOYXRpdmVcbiAgfCBCeXRlY29kZVxuICB8IE90aGVyIG9mIHN0cmluZ1xuXG5sZXQgYmFja2VuZF90eXBlID0gU3RkbGliLlN5cy5iYWNrZW5kX3R5cGVcbmxldCBpbnRlcmFjdGl2ZSA9IFN0ZGxpYi5TeXMuaW50ZXJhY3RpdmVcbmxldCBvc190eXBlID0gU3RkbGliLlN5cy5vc190eXBlXG5sZXQgdW5peCA9IFN0ZGxpYi5TeXMudW5peFxubGV0IHdpbjMyID0gU3RkbGliLlN5cy53aW4zMlxubGV0IGN5Z3dpbiA9IFN0ZGxpYi5TeXMuY3lnd2luXG5sZXQgd29yZF9zaXplX2luX2JpdHMgPSBTdGRsaWIuU3lzLndvcmRfc2l6ZVxubGV0IGludF9zaXplX2luX2JpdHMgPSBTdGRsaWIuU3lzLmludF9zaXplXG5sZXQgYmlnX2VuZGlhbiA9IFN0ZGxpYi5TeXMuYmlnX2VuZGlhblxubGV0IG1heF9zdHJpbmdfbGVuZ3RoID0gU3RkbGliLlN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IG1heF9hcnJheV9sZW5ndGggPSBTdGRsaWIuU3lzLm1heF9hcnJheV9sZW5ndGhcbmxldCBydW50aW1lX3ZhcmlhbnQgPSBTdGRsaWIuU3lzLnJ1bnRpbWVfdmFyaWFudFxubGV0IHJ1bnRpbWVfcGFyYW1ldGVycyA9IFN0ZGxpYi5TeXMucnVudGltZV9wYXJhbWV0ZXJzXG5sZXQgYXJndiA9IFN0ZGxpYi5TeXMuYXJndlxubGV0IGdldF9hcmd2ICgpID0gU3RkbGliLlN5cy5hcmd2XG5sZXQgb2NhbWxfdmVyc2lvbiA9IFN0ZGxpYi5TeXMub2NhbWxfdmVyc2lvblxubGV0IGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzID0gU3RkbGliLlN5cy5lbmFibGVfcnVudGltZV93YXJuaW5nc1xubGV0IHJ1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCA9IFN0ZGxpYi5TeXMucnVudGltZV93YXJuaW5nc19lbmFibGVkXG5cbmxldCBnZXRlbnZfZXhuIHZhciA9XG4gIHRyeSBTdGRsaWIuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IFN0ZGxpYi5Ob3RfZm91bmQgLT5cbiAgICBQcmludGYuZmFpbHdpdGhmIFwiU3lzLmdldGVudl9leG46IGVudmlyb25tZW50IHZhcmlhYmxlICVzIGlzIG5vdCBzZXRcIiB2YXIgKClcbjs7XG5cbmxldCBnZXRlbnYgdmFyID1cbiAgbWF0Y2ggU3RkbGliLlN5cy5nZXRlbnYgdmFyIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJW9wYXF1ZVwiXG5leHRlcm5hbCBvcGFxdWVfaWRlbnRpdHlfZ2xvYmFsIDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5leGNlcHRpb24gQnJlYWsgPSBTdGRsaWIuU3lzLkJyZWFrXG4iLCIoKiBbQXJyYXkwXSBkZWZpbmVzIGFycmF5IGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpbiB0ZXJtc1xuICAgb2YgW1N0ZGxpYi5BcnJheV0uICBbQXJyYXkwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW1N0ZGxpYi5BcnJheV1cbiAgIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gYXJyYXkwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5BcnJheV0uXG4gICBbQXJyYXkwXSBoYXMgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGxcbiAgIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBhcnJheXMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkFycmF5XSBpbiBidWlsZCBvcmRlciBzaG91bGRcbiAgIGRvIFttb2R1bGUgQXJyYXkgPSBBcnJheTBdLiAgVGhpcyBpbmNsdWRlcyB1c2VzIG9mIHN1YnNjcmlwdCBzeW50YXggKFt4LihpKV0sIFt4LihpKSA8LVxuICAgZV0pLCB3aGljaCB0aGUgT0NhbWwgcGFyc2VyIGRlc3VnYXJzIGludG8gY2FsbHMgdG8gW0FycmF5LmdldF0gYW5kIFtBcnJheS5zZXRdLlxuICAgRGVmaW5pbmcgW21vZHVsZSBBcnJheSA9IEFycmF5MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tXG4gICBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5BcnJheV0uICopXG5cblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfbG9jYWwgOiBpbnQgLT4gJ2EgLT4gKCdhIGFycmF5W0Bsb2NhbF0pID0gXCJjYW1sX21ha2VfdmVjdFwiXG4gIGV4dGVybmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG4gIGV4dGVybmFsIGdldCA6ICgnYSBhcnJheVtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgnYSBhcnJheVtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcblxuICBleHRlcm5hbCBzZXRcbiAgICA6ICAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3NhZmVfc2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfZ2V0XG4gICAgOiAgKCdhIGFycmF5W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRcbiAgICA6ICAoJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgOiAgc3JjOignYSBhcnJheVtAbG9jYWxfb3B0XSlcbiAgICAtPiBzcmNfcG9zOmludFxuICAgIC0+IGRzdDooJ2EgYXJyYXlbQGxvY2FsX29wdF0pXG4gICAgLT4gZHN0X3BvczppbnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gdW5pdFxuICAgID0gXCJjYW1sX2FycmF5X2JsaXRcIlxuZW5kXG5cbmluY2x1ZGUgQXJyYXlcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gIHRyeSBjcmVhdGUgbGVuIHggd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGUgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBjcmVhdGVfbG9jYWwgfmxlbiB4ID1cbiAgXG4gICAgKHRyeSBjcmVhdGVfbG9jYWwgbGVuIHggd2l0aFxuICAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgIGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZV9sb2NhbCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKSlcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuID1cbiAgdHJ5IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIGxlbiB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgaW52YWxpZF9hcmdmIFwiQXJyYXkuY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgfmxlbjolZDogaW52YWxpZCBsZW5ndGhcIiBsZW4gKClcbjs7XG5cbmxldCBhcHBlbmQgPSBTdGRsaWIuQXJyYXkuYXBwZW5kXG5sZXQgYmxpdCA9IFN0ZGxpYi5BcnJheS5ibGl0XG5sZXQgY29uY2F0ID0gU3RkbGliLkFycmF5LmNvbmNhdFxubGV0IGNvcHkgPSBTdGRsaWIuQXJyYXkuY29weVxubGV0IGZpbGwgPSBTdGRsaWIuQXJyYXkuZmlsbFxuXG5sZXQgaW5pdCBsZW4gfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBpZiBsZW4gPSAwXG4gIHRoZW4gW3x8XVxuICBlbHNlIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmluaXRcIlxuICBlbHNlIChcbiAgICBsZXQgcmVzID0gY3JlYXRlIH5sZW4gKGYgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gSW50MC5wcmVkIGxlbiBkb1xuICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgcmVzKVxuOztcblxubGV0IG1ha2VfbWF0cml4ID0gU3RkbGliLkFycmF5Lm1ha2VfbWF0cml4XG5sZXQgb2ZfbGlzdCA9IFN0ZGxpYi5BcnJheS5vZl9saXN0XG5sZXQgc3ViID0gU3RkbGliLkFycmF5LnN1YlxubGV0IHRvX2xpc3QgPSBTdGRsaWIuQXJyYXkudG9fbGlzdFxuXG5sZXQgZm9sZCB0IH5pbml0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IGZvbGRfcmlnaHQgdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5pbml0ID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IGxlbmd0aCB0IC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCB0IGkpICFyXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgaXRlciB0IH5mOigoZiA6IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBtYXAgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IGNyZWF0ZSB+bGVuIChmICh1bnNhZmVfZ2V0IHQgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gICAgZG9uZTtcbiAgICByKVxuOztcblxubGV0IG1hcGkgdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIH5sZW4gKGYgMCAodW5zYWZlX2dldCB0IDApKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHQgaSkpXG4gICAgZG9uZTtcbiAgICByKVxuOztcblxubGV0IHN0YWJsZV9zb3J0IHQgfmNvbXBhcmUgPSBTdGRsaWIuQXJyYXkuc3RhYmxlX3NvcnQgdCB+Y21wOmNvbXBhcmVcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgZWx0X2kgPSB0LihpKSBpblxuICBsZXQgZWx0X2ogPSB0LihqKSBpblxuICB1bnNhZmVfc2V0IHQgaSBlbHRfajtcbiAgdW5zYWZlX3NldCB0IGogZWx0X2lcbjs7XG4iLCIoKiBbQ2hhcjBdIGRlZmluZXMgY2hhciBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtTdGRsaWIuQ2hhcl0uICBbQ2hhcjBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZiBbU3RkbGliLkNoYXJdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGNoYXIwLm1sIHNob3VsZCB1c2UgW1N0ZGxpYi5DaGFyXS5cbiAgIFtDaGFyMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgY2hhcnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkNoYXJdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBDaGFyID0gQ2hhcjBdLiAgRGVmaW5pbmcgW21vZHVsZSBDaGFyID0gQ2hhcjBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuQ2hhcl0uICopXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcbmxldCBlc2NhcGVkID0gU3RkbGliLkNoYXIuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IFN0ZGxpYi5DaGFyLmxvd2VyY2FzZV9hc2NpaVxubGV0IHRvX2ludCA9IFN0ZGxpYi5DaGFyLmNvZGVcbmxldCB1bnNhZmVfb2ZfaW50ID0gU3RkbGliLkNoYXIudW5zYWZlX2NoclxubGV0IHVwcGVyY2FzZSA9IFN0ZGxpYi5DaGFyLnVwcGVyY2FzZV9hc2NpaVxuXG4oKiBXZSB1c2Ugb3VyIG93biByYW5nZSB0ZXN0IHdoZW4gY29udmVydGluZyBpbnRlZ2VycyB0byBjaGFycyByYXRoZXIgdGhhblxuICAgY2FsbGluZyBbU3RkbGliLkNoYXIuY2hyXSBiZWNhdXNlIGl0J3Mgc2ltcGxlIGFuZCBpdCBzYXZlcyB1cyBhIGZ1bmN0aW9uIGNhbGxcbiAgIGFuZCB0aGUgdHJ5LXdpdGggKGV4Y2VwdGlvbnMgY29zdCwgZXNwZWNpYWxseSBpbiB0aGUgd29ybGQgd2l0aCBiYWNrdHJhY2VzKS4gKilcbmxldCBpbnRfaXNfb2sgaSA9IDAgPD0gaSAmJiBpIDw9IDI1NVxubGV0IG1pbl92YWx1ZSA9IHVuc2FmZV9vZl9pbnQgMFxubGV0IG1heF92YWx1ZSA9IHVuc2FmZV9vZl9pbnQgMjU1XG5sZXQgb2ZfaW50IGkgPSBpZiBpbnRfaXNfb2sgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9pbnRfZXhuIGkgPVxuICBpZiBpbnRfaXNfb2sgaVxuICB0aGVuIHVuc2FmZV9vZl9pbnQgaVxuICBlbHNlIGZhaWx3aXRoZiBcIkNoYXIub2ZfaW50X2V4biBnb3QgaW50ZWdlciBvdXQgb2YgcmFuZ2U6ICVkXCIgaSAoKVxuOztcblxubGV0IGVxdWFsICh0MSA6IGNoYXIpIHQyID0gUG9seS5lcXVhbCB0MSB0MlxuIiwiKCogW0xpc3QwXSBkZWZpbmVzIGxpc3QgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbU3RkbGliLkxpc3RdLiAgW0xpc3QwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW1N0ZGxpYi5MaXN0XSB0aGF0XG4gICBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBsaXN0MC5tbCBzaG91bGQgdXNlIFtTdGRsaWIuTGlzdF0uXG4gICBbTGlzdDBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGxpc3RzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5MaXN0XSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgTGlzdCA9IExpc3QwXS4gIERlZmluaW5nIFttb2R1bGUgTGlzdCA9IExpc3QwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkxpc3RdLiAqKVxuXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGhkX2V4biA9IFN0ZGxpYi5MaXN0LmhkXG5sZXQgbGVuZ3RoID0gU3RkbGliLkxpc3QubGVuZ3RoXG5sZXQgcmV2X2FwcGVuZCA9IFN0ZGxpYi5MaXN0LnJldl9hcHBlbmRcbmxldCB0bF9leG4gPSBTdGRsaWIuTGlzdC50bFxubGV0IHVuemlwID0gU3RkbGliLkxpc3Quc3BsaXRcblxuKCogU29tZSBvZiB0aGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcblxubGV0IHJlYyBleGlzdHMgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IHggOjogeHMgLT4gaWYgZiB4IHRoZW4gdHJ1ZSBlbHNlIGV4aXN0cyB4cyB+ZlxuOztcblxubGV0IHJlYyBleGlzdHMyX29rIGwxIGwyIH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiBmYWxzZVxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBmIGExIGEyIHx8IGV4aXN0czJfb2sgbDEgbDIgfmZcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5leGlzdHMyXCJcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBpbml0XG4gIHwgYSA6OiBsIC0+IGZvbGQgbCB+aW5pdDooZiBpbml0IGEpIH5mXG47O1xuXG5sZXQgcmVjIGZvbGQyX29rIGwxIGwyIH5pbml0IH5mOigoZiA6IF8gLT4gXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IGluaXRcbiAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gZm9sZDJfb2sgbDEgbDIgfmYgfmluaXQ6KGYgaW5pdCBhMSBhMilcbiAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmY6KGYgW0Bsb2NhbF0pID0gbm90IChleGlzdHMgdCB+ZjooZnVuIHggLT4gbm90IChmIHgpKSlcblxubGV0IHJlYyBmb3JfYWxsMl9vayBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IGExIDo6IGwxLCBhMiA6OiBsMiAtPiBmIGExIGEyICYmIGZvcl9hbGwyX29rIGwxIGwyIH5mXG4gIHwgXywgXyAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9yX2FsbDJcIlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmY6KChmIDogXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGEgOjogbCAtPlxuICAgIGYgYTtcbiAgICBpdGVyIGwgfmZcbjs7XG5cbmxldCByZWMgaXRlcjJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IHVuaXQpIFtAbG9jYWxdKSA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+ICgpXG4gIHwgYTEgOjogbDEsIGEyIDo6IGwyIC0+XG4gICAgZiBhMSBhMjtcbiAgICBpdGVyMl9vayBsMSBsMiB+ZlxuICB8IF8sIF8gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lml0ZXIyXCJcbjs7XG5cbmxldCByZWMgbm9udGFpbF9tYXAgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IHggOjogeHMgLT5cbiAgICBsZXQgeSA9IGYgeCBpblxuICAgIHkgOjogbm9udGFpbF9tYXAgeHMgfmZcbjs7XG5cbmxldCBub250YWlsX21hcGkgdCB+ZiA9IFN0ZGxpYi5MaXN0Lm1hcGkgdCB+ZlxubGV0IHBhcnRpdGlvbiB0IH5mID0gU3RkbGliLkxpc3QucGFydGl0aW9uIHQgfmZcblxubGV0IHJldl9tYXAgPVxuICBsZXQgcmVjIHJtYXBfZiBmIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYSA6OiBsIC0+IHJtYXBfZiBmIChmIGEgOjogYWNjdSkgbFxuICBpblxuICBmdW4gbCB+ZjooZiBbQGxvY2FsXSkgLT4gcm1hcF9mIGYgW10gbFxuOztcblxubGV0IHJldl9tYXAyX29rID1cbiAgbGV0IHJlYyBybWFwMl9mIGYgYWNjdSBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBhY2N1XG4gICAgfCBhMSA6OiBsMSwgYTIgOjogbDIgLT4gcm1hcDJfZiBmIChmIGExIGEyIDo6IGFjY3UpIGwxIGwyXG4gICAgfCBfLCBfIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZXZfbWFwMlwiXG4gIGluXG4gIGZ1biBsMSBsMiB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIC0+IHJtYXAyX2YgZiBbXSBsMSBsMlxuOztcblxubGV0IHNvcnQgbCB+Y29tcGFyZSA9IFN0ZGxpYi5MaXN0LnNvcnQgbCB+Y21wOmNvbXBhcmVcbmxldCBzdGFibGVfc29ydCBsIH5jb21wYXJlID0gU3RkbGliLkxpc3Quc3RhYmxlX3NvcnQgbCB+Y21wOmNvbXBhcmVcblxubGV0IHJldiA9IGZ1bmN0aW9uXG4gIHwgKFtdIHwgWyBfIF0pIGFzIHJlcyAtPiByZXNcbiAgfCB4IDo6IHkgOjogcmVzdCAtPiByZXZfYXBwZW5kIHJlc3QgWyB5OyB4IF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0IGwgfmY6KChmIDogXyAtPiBfIC0+IF8pIFtAbG9jYWxdKSB+aW5pdCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGluaXQgKCogYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgW35mXSBiZWxvdyAqKVxuICB8IF8gLT4gZm9sZCB+ZjooZnVuIGEgYiAtPiBmIGIgYSkgfmluaXQgKHJldiBsKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yaWdodDJfb2sgbDEgbDIgfmY6KChmIDogXyAtPiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5pbml0ID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gaW5pdCAoKiBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBbfmZdIGJlbG93ICopXG4gIHwgXywgXyAtPiBmb2xkMl9vayB+ZjooZnVuIGEgYiBjIC0+IGYgYiBjIGEpIH5pbml0IChyZXYgbDEpIChyZXYgbDIpIFtAbm9udGFpbF1cbjs7XG4iLCIoKlxuICAgVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIFtwcHhfaGFzaF0uXG5cbiAgIFRoZSBbcHB4X2hhc2hdIHN5bnRheCBleHRlbnNpb24gc3VwcG9ydHM6IFtAQGRlcml2aW5nIGhhc2hdIGFuZCBbJWhhc2hfZm9sZDogVFlQRV0gYW5kXG4gICBbJWhhc2g6IFRZUEVdXG5cbiAgIEZvciB0eXBlIFt0XSBhIGZ1bmN0aW9uIFtoYXNoX2ZvbGRfdF0gb2YgdHlwZSBbSGFzaC5zdGF0ZSAtPiB0IC0+IEhhc2guc3RhdGVdIGlzXG4gICBnZW5lcmF0ZWQuXG5cbiAgIFRoZSBnZW5lcmF0ZWQgW2hhc2hfZm9sZF88VD5dIGZ1bmN0aW9uIGlzIGNvbXBvc2l0aW9uYWwsIGZvbGxvd2luZyB0aGUgc3RydWN0dXJlIG9mIHRoZVxuICAgdHlwZTsgYWxsb3dpbmcgdXNlciBvdmVycmlkZXMgYXQgZXZlcnkgbGV2ZWwuIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gb2NhbWwncyBidWlsdGluXG4gICBwb2x5bW9ycGhpYyBoYXNoaW5nIFtIYXNodGJsLmhhc2hdIHdoaWNoIGlnbm9yZXMgdXNlciBvdmVycmlkZXMuXG5cbiAgIFRoZSBnZW5lcmF0b3IgYWxzbyBwcm92aWRlcyBhIGRpcmVjdCBoYXNoLWZ1bmN0aW9uIFtoYXNoXSAobmFtZWQgW2hhc2hfPFQ+XSB3aGVuIDxUPiAhPVxuICAgXCJ0XCIpIG9mIHR5cGU6IFt0IC0+IEhhc2guaGFzaF92YWx1ZV0uXG5cbiAgIFRoZSBmb2xkaW5nIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaF9mb2xkOiBUWVBFXVxuICAgVGhlIGRpcmVjdCBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2g6IFRZUEVdXG4qKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEhhc2hfaW50ZlxuXG4oKiogQnVpbHRpbiBmb2xkaW5nLXN0eWxlIGhhc2ggZnVuY3Rpb25zLCBhYnN0cmFjdGVkIG92ZXIgW0hhc2hfaW50Zi5TXSAqKVxubW9kdWxlIEZvbGRpbmcgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuQnVpbHRpbl9pbnRmXG4gIHdpdGggdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgaGFzaF9mb2xkX3VuaXQgcyAoKSA9IHNcbiAgbGV0IGhhc2hfZm9sZF9pbnQgPSBIYXNoLmZvbGRfaW50XG4gIGxldCBoYXNoX2ZvbGRfaW50NjQgPSBIYXNoLmZvbGRfaW50NjRcbiAgbGV0IGhhc2hfZm9sZF9mbG9hdCA9IEhhc2guZm9sZF9mbG9hdFxuICBsZXQgaGFzaF9mb2xkX3N0cmluZyA9IEhhc2guZm9sZF9zdHJpbmdcbiAgbGV0IGFzX2ludCBmIHMgeCA9IGhhc2hfZm9sZF9pbnQgcyAoZiB4KVxuXG4gICgqIFRoaXMgaWdub3JlcyB0aGUgc2lnbiBiaXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGxlYWQgdG9cbiAgICAgZnJlcXVlbnQgY29sbGlzaW9ucyAobWluX3ZhbHVlIGNvbGxpZGluZyB3aXRoIDAgaXMgdGhlIG1vc3QgbGlrZWx5IG9uZSkuICAqKVxuICBsZXQgaGFzaF9mb2xkX2ludDMyID0gYXNfaW50IFN0ZGxpYi5JbnQzMi50b19pbnRcbiAgbGV0IGhhc2hfZm9sZF9jaGFyID0gYXNfaW50IENoYXIudG9faW50XG5cbiAgbGV0IGhhc2hfZm9sZF9ib29sID1cbiAgICBhc19pbnQgKGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gMVxuICAgICAgfCBmYWxzZSAtPiAwKVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbmF0aXZlaW50IHMgeCA9IGhhc2hfZm9sZF9pbnQ2NCBzIChTdGRsaWIuSW50NjQub2ZfbmF0aXZlaW50IHgpXG5cbiAgbGV0IGhhc2hfZm9sZF9vcHRpb24gaGFzaF9mb2xkX2VsZW0gcyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGhhc2hfZm9sZF9pbnQgcyAwXG4gICAgfCBTb21lIHggLT4gaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9pbnQgcyAxKSB4XG4gIDs7XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfbGlzdF9ib2R5IGhhc2hfZm9sZF9lbGVtIHMgbGlzdCA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBzXG4gICAgfCB4IDo6IHhzIC0+IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gKGhhc2hfZm9sZF9lbGVtIHMgeCkgeHNcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICAoKiBUaGUgW2xlbmd0aF0gb2YgdGhlIGxpc3QgbXVzdCBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgaGFzaC1zdGF0ZSBzbyB2YWx1ZXMgb2ZcbiAgICAgICB0eXBlcyBzdWNoIGFzIFt1bml0IGxpc3RdIC0gKFtdLCBbKCldLCBbKCk7KCldLC4uKSBhcmUgaGFzaGVkIGRpZmZlcmVudGx5LiAqKVxuICAgICgqIFRoZSBbbGVuZ3RoXSBtdXN0IGNvbWUgYmVmb3JlIHRoZSBlbGVtZW50cyB0byBhdm9pZCBhIHZpb2xhdGlvbiBvZiB0aGUgcnVsZVxuICAgICAgIGVuZm9yY2VkIGJ5IFBlcmZlY3RfaGFzaC4gKilcbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9pbnQgcyAoTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBsZXQgcyA9IGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0IGluXG4gICAgc1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGF6eV90IGhhc2hfZm9sZF9lbGVtIHMgeCA9IGhhc2hfZm9sZF9lbGVtIHMgKFN0ZGxpYi5MYXp5LmZvcmNlIHgpXG4gIGxldCBoYXNoX2ZvbGRfcmVmX2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzICF4XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gcyBhcnJheSBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIGFycmF5XG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZSA9IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSBpblxuICAgICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIGUpIGFycmF5IChpICsgMSkpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9hcnJheV9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyBhcnJheSA9XG4gICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pXG4gICAgICAoKiBbbGVuZ3RoXSBtdXN0IGJlIGluY29ycG9yYXRlZCBmb3IgYXJyYXlzLCBhcyBpdCBpcyBmb3IgbGlzdHMuIFNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBoYXNoX2ZvbGRfZWxlbVxuICAgICAgKGhhc2hfZm9sZF9pbnQgcyAoQXJyYXkubGVuZ3RoIGFycmF5KSlcbiAgICAgIGFycmF5XG4gICAgICAwXG4gIDs7XG5cbiAgKCogdGhlIGR1cGxpY2F0aW9uIGhlcmUgaXMgYmVjYXVzZSB3ZSB0aGlua1xuICAgICBvY2FtbCBjYW4ndCBlbGltaW5hdGUgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgb3RoZXJ3aXNlLiAqKVxuICBsZXQgaGFzaF9uYXRpdmVpbnQgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX25hdGl2ZWludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfaW50NjQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQ2NCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludDMyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50MzIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9jaGFyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfY2hhciAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2Jvb2wgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9ib29sIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcblxuICBsZXQgaGFzaF9zdHJpbmcgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3N0cmluZyAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZmxvYXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9mbG9hdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX3VuaXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF91bml0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbmVuZFxuXG5tb2R1bGUgRiAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5GdWxsXG4gIHdpdGggdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gICBhbmQgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIHNlZWQgPSBIYXNoLnNlZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IEZvbGRpbmcgKEhhc2gpXG5cbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChIYXNoLnJlc2V0ID9zZWVkIChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxoYXNoIDogc2lnXG4gIGluY2x1ZGVcbiAgICBIYXNoX2ludGYuU1xuICAgIHdpdGggdHlwZSBzdGF0ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnN0YXRlXG4gICAgICgqIFdlIGdpdmUgYSBjb25jcmV0ZSB0eXBlIGZvciBbc3RhdGVdLCBhbGJlaXQgb25seSBwYXJ0aWFsbHkgZXhwb3NlZCAoc2VlXG4gICAgICAgIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzKSwgc28gdGhhdCBpdCB1bmlmaWVzIHdpdGggdGhlIHNhbWUgdHlwZSBpbiBbQmFzZV9ib290XSxcbiAgICAgICAgYW5kIHRvIGFsbG93IG9wdGltaXphdGlvbnMgZm9yIHRoZSBpbW1lZGlhdGUgdHlwZS4gKilcbiAgICAgYW5kIHR5cGUgc2VlZCA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnNlZWRcbiAgICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLmhhc2hfdmFsdWVcblxuICBleHRlcm5hbCBmb2xkX2ludDY0IDogc3RhdGUgLT4gaW50NjQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfaW50IDogc3RhdGUgLT4gaW50IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9mbG9hdCA6IHN0YXRlIC0+IGZsb2F0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX3N0cmluZyA6IHN0YXRlIC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGdldF9oYXNoX3ZhbHVlIDogc3RhdGUgLT4gaGFzaF92YWx1ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcIlxuICBbQEBub2FsbG9jXVxuZW5kID0gc3RydWN0XG4gIGxldCBkZXNjcmlwdGlvbiA9IFwiaW50ZXJuYWxoYXNoXCJcblxuICBpbmNsdWRlIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzXG5cbiAgbGV0IGFsbG9jICgpID0gY3JlYXRlX3NlZWRlZCAwXG4gIGxldCByZXNldCA/KHNlZWQgPSAwKSBfdCA9IGNyZWF0ZV9zZWVkZWQgc2VlZFxuXG4gIG1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGFyZV9zdGF0ZSAoYSA6IHN0YXRlKSAoYiA6IHN0YXRlKSA9IGNvbXBhcmUgKGEgOj4gaW50KSAoYiA6PiBpbnQpXG4gICAgbGV0IHN0YXRlX3RvX3N0cmluZyAoc3RhdGUgOiBzdGF0ZSkgPSBJbnQudG9fc3RyaW5nIChzdGF0ZSA6PiBpbnQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgSW50ZXJuYWxoYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPSBnZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChyZXNldCA/c2VlZCAoYWxsb2MgKCkpKSB4KVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9sZGluZyA9IEZvbGRpbmcgKEludGVybmFsaGFzaClcbiAgICBpbmNsdWRlIEZvbGRpbmdcblxuICAgICgqIFtGb2xkaW5nXSBwcm92aWRlcyBzb21lIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgW2hhc2hfKl0gZnVuY3Rpb25zIGJlbG93LFxuICAgICAgIGJ1dCB0aGV5IGFyZSBpbmVmZmljaWVudCBmb3Igc29tZSB1c2UtY2FzZXMgYmVjYXVzZSBvZiB0aGUgdXNlIG9mIHRoZSBbaGFzaF9mb2xkXVxuICAgICAgIGZ1bmN0aW9ucy4gQXQgdGhpcyBwb2ludCwgdGhlIFtoYXNoX3ZhbHVlXSB0eXBlIGhhcyBiZWVuIGZpeGVkIHRvIFtpbnRdLCBzbyB0aGlzXG4gICAgICAgbW9kdWxlIGNhbiBwcm92aWRlIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucy4gKilcblxuICAgIGxldCBoYXNoX2NoYXIgPSBDaGFyMC50b19pbnRcblxuICAgICgqIFRoaXMgaGFzaCB3YXMgY2hvc2VuIGZyb20gaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYmFkYm95LzYyNjc3NDNcblxuICAgICAgIEl0IGF0dGVtcHRzIHRvIGZ1bGZpbGwgdGhlIHByaW1hcnkgZ29hbHMgb2YgYSBub24tY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uOlxuXG4gICAgICAgLSBhIGJpdCBjaGFuZ2UgaW4gdGhlIGlucHV0IHNob3VsZCBjaGFuZ2UgfjEvMiBvZiB0aGUgb3V0cHV0IGJpdHNcbiAgICAgICAtIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIG91dHB1dCByYW5nZVxuICAgICAgIC0gaW5wdXRzIHRoYXQgYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgc2hvdWxkbid0IGxlYWQgdG8gb3V0cHV0cyB0aGF0IGFyZSBjbG9zZSB0b1xuICAgICAgICAgZWFjaCBvdGhlci5cbiAgICAgICAtIGFsbCBiaXRzIG9mIHRoZSBpbnB1dCBhcmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBvdXRwdXRcblxuICAgICAgIEluIG91ciBjYXNlIHdlIGFsc28gd2FudCBpdCB0byBiZSBmYXN0LCBub24tYWxsb2NhdGluZywgYW5kIGlubGluYWJsZS4gICopXG4gICAgbGV0W0BpbmxpbmUgYWx3YXlzXSBoYXNoX2ludCAodCA6IGludCkgPVxuICAgICAgbGV0IHQgPSBsbm90IHQgKyAodCBsc2wgMjEpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMykgKyAodCBsc2wgOCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAxNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAyKSArICh0IGxzbCA0KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI4KSBpblxuICAgICAgdCArICh0IGxzbCAzMSlcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfYm9vbCB4ID0gaWYgeCB0aGVuIDEgZWxzZSAwXG5cbiAgICBleHRlcm5hbCBoYXNoX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCJCYXNlX2hhc2hfZG91YmxlXCIgW0BAbm9hbGxvY11cblxuICAgIGxldCBoYXNoX3VuaXQgKCkgPSAwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuIiwib3BlbiBJbXBvcnQwXG5cbmxldCBjb21wYXJlX2Fic3RyYWN0IH50eXBlX25hbWUgXyBfID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgZmFpbHdpdGhcbiAgICBcIkNvbXBhcmUgY2FsbGVkIG9uIHRoZSB0eXBlICVzLCB3aGljaCBpcyBhYnN0cmFjdCBpbiBhbiBpbXBsZW1lbnRhdGlvbi5cIlxuICAgIHR5cGVfbmFtZVxuOztcblxubGV0IGVxdWFsX2Fic3RyYWN0IH50eXBlX25hbWUgXyBfID1cbiAgUHJpbnRmLmtzcHJpbnRmXG4gICAgZmFpbHdpdGhcbiAgICBcIkVxdWFsIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbnR5cGUgJ2EgY29tcGFyZSA9ICdhIC0+ICdhIC0+IGludFxudHlwZSAnYSBlcXVhbCA9ICdhIC0+ICdhIC0+IGJvb2xcblxubW9kdWxlIENvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgY29tcGFyZSAtPiAnYSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgY29tcGFyZSAtPiAnYiBjb21wYXJlIC0+ICgnYSwgJ2IpIHQgY29tcGFyZVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBjb21wYXJlIDogJ2EgY29tcGFyZSAtPiAnYiBjb21wYXJlIC0+ICdjIGNvbXBhcmUgLT4gKCdhLCAnYiwgJ2MpIHQgY29tcGFyZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRXF1YWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGVxdWFsIDogdCBlcXVhbFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2EgdCBlcXVhbFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGVxdWFsIDogJ2EgZXF1YWwgLT4gJ2IgZXF1YWwgLT4gKCdhLCAnYikgdCBlcXVhbFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICdjIGVxdWFsIC0+ICgnYSwgJ2IsICdjKSB0IGVxdWFsXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCdWlsdGluID0gc3RydWN0XG4gIGxldCBjb21wYXJlX2Jvb2wgOiBib29sIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfY2hhciA6IGNoYXIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9mbG9hdCA6IGZsb2F0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50IDogaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfaW50MzIgOiBpbnQzMiBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDY0IDogaW50NjQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9zdHJpbmcgOiBzdHJpbmcgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV91bml0IDogdW5pdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGNvbXBhcmVfYXJyYXkgY29tcGFyZV9lbHQgYSBiID1cbiAgICBpZiBwaHlzX2VxdWFsIGEgYlxuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgICBsZXQgbGVuX2IgPSBBcnJheTAubGVuZ3RoIGIgaW5cbiAgICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgICBpZiByZXQgPD4gMFxuICAgICAgdGhlbiByZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgICAgaWYgaSA9IGxlbl9hXG4gICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbCA9IEFycmF5MC51bnNhZmVfZ2V0IGEgaVxuICAgICAgICAgICAgYW5kIHIgPSBBcnJheTAudW5zYWZlX2dldCBiIGkgaW5cbiAgICAgICAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCBsIHIgaW5cbiAgICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgICBpblxuICAgICAgICBsb29wIDApKVxuICA7O1xuXG4gIGxldCByZWMgY29tcGFyZV9saXN0IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgW10sIF8gLT4gLTFcbiAgICB8IF8sIFtdIC0+IDFcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICAgIGxldCByZXMgPSBjb21wYXJlX2VsdCB4IHkgaW5cbiAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IGNvbXBhcmVfZWx0IHhzIHlzXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfb3B0aW9uIGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IDBcbiAgICB8IE5vbmUsIFNvbWUgXyAtPiAtMVxuICAgIHwgU29tZSBfLCBOb25lIC0+IDFcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGNvbXBhcmVfZWx0IGEgYlxuICA7O1xuXG4gIGxldCBjb21wYXJlX3JlZiBjb21wYXJlX2VsdCBhIGIgPSBjb21wYXJlX2VsdCAhYSAhYlxuICBsZXQgZXF1YWxfYm9vbCA6IGJvb2wgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9jaGFyIDogY2hhciBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludCA6IGludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX2ludDMyIDogaW50MzIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQ2NCA6IGludDY0IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfbmF0aXZlaW50IDogbmF0aXZlaW50IGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfc3RyaW5nIDogc3RyaW5nIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfdW5pdCA6IHVuaXQgZXF1YWwgPSBQb2x5LmVxdWFsXG5cbiAgKCogW1BvbHkuZXF1YWxdIGlzIElFRUUgY29tcGxpYW50LCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50IGhlcmUuICopXG4gIGxldCBlcXVhbF9mbG9hdCB4IHkgPSBlcXVhbF9pbnQgKGNvbXBhcmVfZmxvYXQgeCB5KSAwXG5cbiAgbGV0IGVxdWFsX2FycmF5IGVxdWFsX2VsdCBhIGIgPVxuICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgfHxcbiAgICBsZXQgbGVuX2EgPSBBcnJheTAubGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBBcnJheTAubGVuZ3RoIGIgaW5cbiAgICBlcXVhbCBsZW5fYSBsZW5fYlxuICAgICYmXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaSA9IGxlbl9hXG4gICAgICB8fFxuICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICBlcXVhbF9lbHQgbCByICYmIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG4gIDs7XG5cbiAgbGV0IHJlYyBlcXVhbF9saXN0IGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gZmFsc2VcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT4gZXF1YWxfZWx0IHggeSAmJiBlcXVhbF9saXN0IGVxdWFsX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBlcXVhbF9vcHRpb24gZXF1YWxfZWx0IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBhLCBTb21lIGIgLT4gZXF1YWxfZWx0IGEgYlxuICA7O1xuXG4gIGxldCBlcXVhbF9yZWYgZXF1YWxfZWx0IGEgYiA9IGVxdWFsX2VsdCAhYSAhYlxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgaXMgZm9yIHVzZSBieSBwcHhfaGFzaCwgYW5kIGlzIHRodXMgbm90IGluIHRoZSBpbnRlcmZhY2Ugb2YgQmFzZS4gKilcbm1vZHVsZSBTdGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhhc2ggPSBIYXNoICgqKiBAY2Fub25pY2FsIEJhc2UuSGFzaCAqKVxuZW5kXG5cbnR5cGUgJ2EgaGFzaF9mb2xkID0gU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gU3RkLkhhc2guc3RhdGVcblxubW9kdWxlIEhhc2hhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6IHQgaGFzaF9mb2xkXG4gICAgdmFsIGhhc2ggOiB0IC0+IFN0ZC5IYXNoLmhhc2hfdmFsdWVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYSB0IGhhc2hfZm9sZFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGhhc2hfZm9sZF90IDogJ2EgaGFzaF9mb2xkIC0+ICdiIGhhc2hfZm9sZCAtPiAoJ2EsICdiKSB0IGhhc2hfZm9sZFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdFxuICAgICAgOiAgJ2EgaGFzaF9mb2xkXG4gICAgICAtPiAnYiBoYXNoX2ZvbGRcbiAgICAgIC0+ICdjIGhhc2hfZm9sZFxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHQgaGFzaF9mb2xkXG4gIGVuZFxuZW5kXG4iLCJvcGVuIEhhc2guQnVpbHRpblxub3BlbiBQcHhfY29tcGFyZV9saWIuQnVpbHRpblxuaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9IFNleHBsaWIwLlNleHAudCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbmxldCByZWMgY29tcGFyZSA9XG4gIChmdW4gYV9fMDAxXyBiX18wMDJfIC0+XG4gICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDAxXyBiX18wMDJfXG4gICAgIHRoZW4gMFxuICAgICBlbHNlIChcbiAgICAgICBtYXRjaCBhX18wMDFfLCBiX18wMDJfIHdpdGhcbiAgICAgICB8IEF0b20gX2FfXzAwM18sIEF0b20gX2JfXzAwNF8gLT4gY29tcGFyZV9zdHJpbmcgX2FfXzAwM18gX2JfXzAwNF9cbiAgICAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICAgICB8IExpc3QgX2FfXzAwNV8sIExpc3QgX2JfXzAwNl8gLT4gY29tcGFyZV9saXN0IGNvbXBhcmUgX2FfXzAwNV8gX2JfXzAwNl8pXG4gICAgICAgOiB0IC0+IHQgLT4gaW50KVxuOztcblxubGV0IHJlYyAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQXRvbSBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IF9hMFxuICAgICB8IExpc3QgX2EwIC0+XG4gICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfdCBoc3YgX2EwXG4gICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG5cbmFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9jb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbmxldCBvZl9zdHJpbmcgPSAoKVxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFN5cyA9IFN5czBcblxudHlwZSB0ID1cbiAgfCBXMzJcbiAgfCBXNjRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBXMzIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVzMyXCJcbiAgICB8IFc2NCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXNjRcIlxuICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbnVtX2JpdHMgPSBmdW5jdGlvblxuICB8IFczMiAtPiAzMlxuICB8IFc2NCAtPiA2NFxuOztcblxubGV0IHdvcmRfc2l6ZSA9XG4gIG1hdGNoIFN5cy53b3JkX3NpemVfaW5fYml0cyB3aXRoXG4gIHwgMzIgLT4gVzMyXG4gIHwgNjQgLT4gVzY0XG4gIHwgXyAtPiBmYWlsd2l0aCBcInVua25vd24gd29yZCBzaXplXCJcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHIgPSByZWYgWyBcIkJhc2UuU2V4cC5wcF9odW1cIiBdXG5sZXQgYWxsICgpID0gIXJcbmxldCByZWdpc3RlciBwID0gciA6PSBwIDo6ICFyXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHBwIDogRm9ybWF0dGVyLnQgLT4gdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX3BwIChNIDogc2lnXG4gICAgaW5jbHVkZSBTXG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgbGV0ICgpID0gcmVnaXN0ZXIgKE0ubW9kdWxlX25hbWUgXiBcIi5wcFwiKVxuZW5kXG5cbm1vZHVsZSBSZWdpc3RlciAoTSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuICBSZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBsZXQgcHAgZm9ybWF0dGVyIHQgPSBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmb3JtYXR0ZXIgKE0udG9fc3RyaW5nIHQpXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBleG4gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9leG4gOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuW0BAQGVuZF1cblxubGV0IGV4aXQgPSBTdGRsaWIuZXhpdFxuXG5leGNlcHRpb24gRmluYWxseSBvZiB0ICogdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEZpbmFsbHldIChmdW5jdGlvblxuICAgIHwgRmluYWxseSAoYXJnMF9fMDAxXywgYXJnMV9fMDAyXykgLT5cbiAgICAgIGxldCByZXMwX18wMDNfID0gc2V4cF9vZl90IGFyZzBfXzAwMV9cbiAgICAgIGFuZCByZXMxX18wMDRfID0gc2V4cF9vZl90IGFyZzFfXzAwMl8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImV4bi5tbC5GaW5hbGx5XCI7IHJlczBfXzAwM187IHJlczFfXzAwNF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gUmVyYWlzZWQgb2Ygc3RyaW5nICogdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFJlcmFpc2VkXSAoZnVuY3Rpb25cbiAgICB8IFJlcmFpc2VkIChhcmcwX18wMDVfLCBhcmcxX18wMDZfKSAtPlxuICAgICAgbGV0IHJlczBfXzAwN18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDVfXG4gICAgICBhbmQgcmVzMV9fMDA4XyA9IHNleHBfb2ZfdCBhcmcxX18wMDZfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuUmVyYWlzZWRcIjsgcmVzMF9fMDA3XzsgcmVzMV9fMDA4XyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmV4Y2VwdGlvbiBTZXhwIG9mIFNleHAudFxuXG4oKiBXZSBpbnN0YWxsIGEgY3VzdG9tIGV4bi1jb252ZXJ0ZXIgcmF0aGVyIHRoYW4gdXNlOlxuXG4gICB7W1xuICAgICBleGNlcHRpb24gU2V4cCBvZiBTZXhwLnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG4gICAgICgqIC4uLiAqKVxuICAgICBbQEBAZW5kXVxuICAgXX1cblxuICAgdG8gZWxpbWluYXRlIHRoZSBleHRyYSB3cmFwcGluZyBvZiBbKFNleHAgLi4uKV0uICopXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V4cF0gKGZ1bmN0aW9uXG4gICAgfCBTZXhwIHQgLT4gdFxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgY3JlYXRlX3Mgc2V4cCA9IFNleHAgc2V4cFxuXG5sZXQgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgdCBiYWNrdHJhY2UgPVxuICBTdGRsaWIuUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgdCBiYWNrdHJhY2Vcbjs7XG5cbmV4dGVybmFsIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgOiB0IC0+IGJvb2wgPSBcIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuXCJcblxubGV0IHJlcmFpc2UgZXhuIHN0ciA9XG4gIGxldCBleG4nID0gUmVyYWlzZWQgKHN0ciwgZXhuKSBpblxuICBpZiBpc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4blxuICB0aGVuIChcbiAgICBsZXQgYnQgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4nIGJ0KVxuICBlbHNlIHJhaXNlIGV4bidcbjs7XG5cbmxldCByZXJhaXNlZiBleGMgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyICgpIC0+IHJlcmFpc2UgZXhjIHN0cikgZm9ybWF0XG5sZXQgdG9fc3RyaW5nIGV4YyA9IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgKHNleHBfb2ZfZXhuIGV4YylcbmxldCB0b19zdHJpbmdfbWFjaCBleGMgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX2V4biBleGMpXG5sZXQgc2V4cF9vZl90ID0gc2V4cF9vZl9leG5cblxubGV0IHByb3RlY3R4IH5mIHggfihmaW5hbGx5IDogXyAtPiB1bml0KSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgcmVzIC0+XG4gICAgZmluYWxseSB4O1xuICAgIHJlc1xuICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICBsZXQgYnQgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAobWF0Y2ggZmluYWxseSB4IHdpdGhcbiAgICAgfCAoKSAtPiByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4gYnRcbiAgICAgfCBleGNlcHRpb24gZmluYWxfZXhuIC0+XG4gICAgICAgKCogVW5mb3J0dW5hdGVseSwgdGhlIGJhY2t0cmFjZSBvZiB0aGUgW2ZpbmFsX2V4bl0gaXMgZGlzY2FyZGVkIGhlcmUuICopXG4gICAgICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKEZpbmFsbHkgKGV4biwgZmluYWxfZXhuKSkgYnQpXG47O1xuXG5sZXQgcHJvdGVjdCB+ZiB+ZmluYWxseSA9IHByb3RlY3R4IH5mICgpIH5maW5hbGx5XG5cbmxldCBkb2VzX3JhaXNlICh0eXBlIGEpIChmIDogdW5pdCAtPiBhKSA9XG4gIHRyeVxuICAgIGlnbm9yZSAoZiAoKSA6IGEpO1xuICAgIGZhbHNlXG4gIHdpdGhcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgdCA9IGV4blxuXG4gICAgbGV0IHBwIHBwZiB0ID1cbiAgICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdCB0IHdpdGhcbiAgICAgIHwgU29tZSBzZXhwIC0+IFNleHAucHBfaHVtIHBwZiBzZXhwXG4gICAgICB8IE5vbmUgLT4gU3RkbGliLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIChTdGRsaWIuUHJpbnRleGMudG9fc3RyaW5nIHQpXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FeG5cIlxuICBlbmQpXG5cbmxldCBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSA9XG4gIFN0ZGxpYi5Gb3JtYXQuZXByaW50ZiBcIkBbPDI+VW5jYXVnaHQgZXhjZXB0aW9uOkBcXG5AXFxuQFslYUBdQF1AXFxuQC5cIiBwcCBleGM7XG4gIGlmIFN0ZGxpYi5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzICgpXG4gIHRoZW4gU3RkbGliLlByaW50ZXhjLnByaW50X3Jhd19iYWNrdHJhY2UgU3RkbGliLnN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZGVyclxuOztcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKSA9XG4gIFN0ZGxpYi5QcmludGV4Yy5zZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgcHJpbnRfd2l0aF9iYWNrdHJhY2Vcbjs7XG5cbmxldCBoYW5kbGVfdW5jYXVnaHRfYXV4IH5kb19hdF9leGl0IH5leGl0IGYgPVxuICB0cnkgZiAoKSB3aXRoXG4gIHwgZXhjIC0+XG4gICAgbGV0IHJhd19iYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAoKiBPbmUgcmVhc29uIHRvIHJ1biBbZG9fYXRfZXhpdF0gaGFuZGxlcnMgYmVmb3JlIHByaW50aW5nIG91dCB0aGUgZXJyb3IgbWVzc2FnZSBpc1xuICAgICAgIHRoYXQgaXQgaGVscHMgY3Vyc2VzIGFwcGxpY2F0aW9ucyBicmluZyB0aGUgdGVybWluYWwgaW4gYSBnb29kIHN0YXRlLCBvdGhlcndpc2UgdGhlXG4gICAgICAgZXJyb3IgbWVzc2FnZSBtaWdodCBnZXQgY29ycnVwdGVkLiAgQWxzbywgdGhlIE9DYW1sIHRvcC1sZXZlbCB1bmNhdWdodCBleGNlcHRpb25cbiAgICAgICBoYW5kbGVyIGRvZXMgdGhlIHNhbWUuICopXG4gICAgaWYgZG9fYXRfZXhpdFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgKHRyeSBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgIHwgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBTdGRsaWIuUHJpbnRmLmVwcmludGYgXCJFeG4uaGFuZGxlX3VuY2F1Z2h0IGNvdWxkIG5vdCBwcmludDsgZXhpdGluZyBhbnl3YXlcXG4lIVwiXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBfIC0+ICgpKSk7XG4gICAgZXhpdCAxXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPSBoYW5kbGVfdW5jYXVnaHRfYXV4IGYgfmV4aXQgfmRvX2F0X2V4aXQ6dHJ1ZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0IH5leGl0Om11c3RfZXhpdCBmID1cbiAgaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0OihpZiBtdXN0X2V4aXQgdGhlbiBleGl0IGVsc2UgaWdub3JlKSB+ZG9fYXRfZXhpdDptdXN0X2V4aXRcbjs7XG5cbmxldCByZXJhaXNlX3VuY2F1Z2h0IHN0ciBmdW5jID1cbiAgdHJ5IGZ1bmMgKCkgd2l0aFxuICB8IGV4biAtPlxuICAgIGxldCBidCA9IFN0ZGxpYi5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChSZXJhaXNlZCAoc3RyLCBleG4pKSBidFxuOztcblxuZXh0ZXJuYWwgY2xlYXJfYmFja3RyYWNlIDogdW5pdCAtPiB1bml0ID0gXCJCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3Bvc1wiIFtAQG5vYWxsb2NdXG5cbmxldCByYWlzZV93aXRob3V0X2JhY2t0cmFjZSBlID1cbiAgKCogV2UgY2xlYXIgdGhlIGJhY2t0cmFjZSB0byByZWR1Y2UgY29uZnVzaW9uLCBzbyB0aGF0IHBlb3BsZSBkb24ndCB0aGluayB3aGF0ZXZlclxuICAgICBpcyBzdG9yZWQgY29ycmVzcG9uZHMgdG8gdGhpcyByYWlzZS4gKilcbiAgY2xlYXJfYmFja3RyYWNlICgpO1xuICBTdGRsaWIucmFpc2Vfbm90cmFjZSBlXG47O1xuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGNsZWFyX2JhY2t0cmFjZSA9IGNsZWFyX2JhY2t0cmFjZVxuZW5kXG4iLCIoKiBiZWxvbmdzIGluIENvbW1vbiwgYnV0IG1vdmVkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHJldHVybiA9IHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxubGV0IHdpdGhfcmV0dXJuICh0eXBlIGEpIGYgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAoKiBSYWlzZWQgdG8gaW5kaWNhdGUgfnJldHVybiB3YXMgY2FsbGVkLiAgTG9jYWwgc28gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHRpZWQgdG8gYVxuICAgICAgIHBhcnRpY3VsYXIgY2FsbCBvZiBbd2l0aF9yZXR1cm5dLiAqKVxuICAgIGV4Y2VwdGlvbiBSZXR1cm4gb2YgYVxuICBlbmRcbiAgaW5cbiAgbGV0IGlzX2FsaXZlID0gcmVmIHRydWUgaW5cbiAgbGV0IHJldHVybiBhID1cbiAgICBpZiBub3QgIWlzX2FsaXZlXG4gICAgdGhlbiBmYWlsd2l0aCBcInVzZSBvZiBbcmV0dXJuXSBmcm9tIGEgW3dpdGhfcmV0dXJuXSB0aGF0IGFscmVhZHkgcmV0dXJuZWRcIjtcbiAgICBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgKE0uUmV0dXJuIGEpXG4gIGluXG4gIHRyeVxuICAgIGxldCBhID0gZiB7IHJldHVybiB9IGluXG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgYVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgKG1hdGNoIGV4biB3aXRoXG4gICAgIHwgTS5SZXR1cm4gYSAtPiBhXG4gICAgIHwgXyAtPiByYWlzZSBleG4pXG47O1xuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uIGYgPVxuICB3aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgIGYgeyByZXR1cm4gPSAoZnVuIGEgLT4gcmV0dXJuLnJldHVybiAoU29tZSBhKSkgfTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcHJlcGVuZCB7IHJldHVybiB9IH5mID0geyByZXR1cm4gPSAoZnVuIHggLT4gcmV0dXJuIChmIHgpKSB9XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGNvbnN0IGMgXyA9IGNcblxuZXh0ZXJuYWwgaWdub3JlIDogKF9bQGxvY2FsX29wdF0pIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiB0aGlzIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBbU3RkbGliLmlnbm9yZV0gKilcblxubGV0IG5vbiBmIHggPSBub3QgKGYgeClcblxubGV0IGZvcmV2ZXIgZiA9XG4gIGxldCByZWMgZm9yZXZlciAoKSA9XG4gICAgZiAoKTtcbiAgICBmb3JldmVyICgpXG4gIGluXG4gIHRyeSBmb3JldmVyICgpIHdpdGhcbiAgfCBlIC0+IGVcbjs7XG5cbmV4dGVybmFsIGlkIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGUgdHlwaWNhbCB1c2UgY2FzZSBmb3IgdGhlc2UgZnVuY3Rpb25zIGlzIHRvIHBhc3MgaW4gZnVuY3Rpb25hbCBhcmd1bWVudHMgYW5kIGdldFxuICAgZnVuY3Rpb25zIGFzIGEgcmVzdWx0LiAqKVxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgcmVjIGFwcGx5X25fdGltZXMgfm4gZiB4ID0gaWYgbiA8PSAwIHRoZW4geCBlbHNlIGFwcGx5X25fdGltZXMgfm46KG4gLSAxKSBmIChmIHgpXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgQmFzaWNfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCwgJ2IgdCkgZl9sYWJlbGVkX2ZuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgaWRlbnRpdGllcyBvdWdodCB0byBob2xkIChmb3Igc29tZSB2YWx1ZSBvZiA9KTpcblxuICAgICAgLSBbcmV0dXJuIHggPj49IGYgPSBmIHhdXG4gICAgICAtIFt0ID4+PSBmdW4geCAtPiByZXR1cm4geCA9IHRdXG4gICAgICAtIFsodCA+Pj0gZikgPj49IGcgPSB0ID4+PSBmdW4geCAtPiAoZiB4ID4+PSBnKV1cblxuICAgICAgTm90ZTogWz4+PV0gaXMgdGhlIGluZml4IG5vdGF0aW9uIGZvciBbYmluZF0pICopXG5cbiAgKCoqIFRoZSBbbWFwXSBhcmd1bWVudCB0byBbTW9uYWQuTWFrZV0gc2F5cyBob3cgdG8gaW1wbGVtZW50IHRoZSBtb25hZCdzIFttYXBdIGZ1bmN0aW9uLlxuICAgICAgW2BEZWZpbmVfdXNpbmdfYmluZF0gbWVhbnMgdG8gZGVmaW5lIFttYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC5cblxuICAgICAgU29tZSBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW01vbmFkLk1ha2VdIGFyZSBkZWZpbmVkIGluIHRlcm1zIG9mIFttYXBdLCBzb1xuICAgICAgcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFttYXBdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBtYXAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiAoJ2EgLT4gJ2IsICdiIHQpIGZfbGFiZWxlZF9mbiBdXG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY19nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2xvY2FsID1cbiAgQmFzaWNfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjooJ2FbQGxvY2FsXSkgLT4gJ2JcblxubW9kdWxlIHR5cGUgSW5maXhfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG5cbiAgKCoqIFt0ID4+PSBmXSByZXR1cm5zIGEgY29tcHV0YXRpb24gdGhhdCBzZXF1ZW5jZXMgdGhlIGNvbXB1dGF0aW9ucyByZXByZXNlbnRlZCBieSB0d29cbiAgICAgIG1vbmFkIGVsZW1lbnRzLiAgVGhlIHJlc3VsdGluZyBjb21wdXRhdGlvbiBmaXJzdCBkb2VzIFt0XSB0byB5aWVsZCBhIHZhbHVlIFt2XSwgYW5kXG4gICAgICB0aGVuIHJ1bnMgdGhlIGNvbXB1dGF0aW9uIHJldHVybmVkIGJ5IFtmIHZdLiAqKVxuICB2YWwgKCA+Pj0gKSA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZuXG5cbiAgKCoqIFt0ID4+fCBmXSBpcyBbdCA+Pj0gKGZ1biBhIC0+IHJldHVybiAoZiBhKSldLiAqKVxuICB2YWwgKCA+PnwgKSA6ICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmblxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhfZ2VuIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxubW9kdWxlIHR5cGUgSW5maXhfbG9jYWwgPSBJbmZpeF9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXhfZ2VuID0gc2lnXG4gICgqKiBPcGVuaW5nIGEgbW9kdWxlIG9mIHRoaXMgdHlwZSBhbGxvd3Mgb25lIHRvIHVzZSB0aGUgWyViaW5kXSBhbmQgWyVtYXBdIHN5bnRheFxuICAgICAgZXh0ZW5zaW9ucyBkZWZpbmVkIGJ5IHBweF9sZXQsIGFuZCBicmluZ3MgW3JldHVybl0gaW50byBzY29wZS4gKilcblxuICB0eXBlICdhIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgKCoqIFRoZXNlIGFyZSBjb252ZW5pZW50IHRvIGhhdmUgaW4gc2NvcGUgd2hlbiBwcm9ncmFtbWluZyB3aXRoIGEgbW9uYWQ6ICopXG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9nZW4gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQsICdiIHQpIGZfbGFiZWxlZF9mblxuICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBib3RoIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG5cbiAgICAgIG1vZHVsZSBPcGVuX29uX3JocyA6IHNpZyBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4ID1cbiAgU3ludGF4X2dlblxuICB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9sb2NhbCA9XG4gIFN5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXhfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgaW5jbHVkZSBJbmZpeF9nZW4gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6XG4gICAgSW5maXhfZ2VuIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cblxuICAoKiogW2JpbmQgdCB+Zl0gPSBbdCA+Pj0gZl0gKilcbiAgdmFsIGJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0LCAnYiB0KSBmX2xhYmVsZWRfZm5cblxuICAoKiogW3JldHVybiB2XSByZXR1cm5zIHRoZSAodHJpdmlhbCkgY29tcHV0YXRpb24gdGhhdCByZXR1cm5zIHYuICopXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFttYXAgdCB+Zl0gaXMgdCA+PnwgZi4gKilcbiAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiLCAnYiB0KSBmX2xhYmVsZWRfZm5cblxuICAoKiogW2pvaW4gdF0gaXMgW3QgPj49IChmdW4gdCcgLT4gdCcpXS4gKilcbiAgdmFsIGpvaW4gOiAnYSB0IHQgLT4gJ2EgdFxuXG4gICgqKiBbaWdub3JlX20gdF0gaXMgW21hcCB0IH5mOihmdW4gXyAtPiAoKSldLiAgW2lnbm9yZV9tXSB1c2VkIHRvIGJlIGNhbGxlZCBbaWdub3JlXSxcbiAgICAgIGJ1dCB3ZSBkZWNpZGVkIHRoYXQgd2FzIGEgYmFkIG5hbWUsIGJlY2F1c2UgaXQgc2hhZG93ZWQgdGhlIHdpZGVseSB1c2VkXG4gICAgICBbU3RkbGliLmlnbm9yZV0uICBTb21lIG1vbmFkcyBzdGlsbCBkbyBbbGV0IGlnbm9yZSA9IGlnbm9yZV9tXSBmb3IgaGlzdG9yaWNhbFxuICAgICAgcmVhc29ucy4gKilcbiAgdmFsIGlnbm9yZV9tIDogJ2EgdCAtPiB1bml0IHRcblxuICB2YWwgYWxsIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuXG4gICgqKiBMaWtlIFthbGxdLCBidXQgZW5zdXJlcyB0aGF0IGV2ZXJ5IG1vbmFkaWMgdmFsdWUgaW4gdGhlIGxpc3QgcHJvZHVjZXMgYSB1bml0IHZhbHVlLFxuICAgICAgYWxsIG9mIHdoaWNoIGFyZSBkaXNjYXJkZWQgcmF0aGVyIHRoYW4gYmVpbmcgY29sbGVjdGVkIGludG8gYSBsaXN0LiAqKVxuICB2YWwgYWxsX3VuaXQgOiB1bml0IHQgbGlzdCAtPiB1bml0IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID1cbiAgU193aXRob3V0X3N5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAnYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsID1cbiAgU193aXRob3V0X3N5bnRheF9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfbG9jYWwgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTeW50YXhfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMl9nZW4gPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2V0cyB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlIGNvbXB1dGF0aW9uLlxuICAgICAgVGhpcyBpcyB1c2VkIHRvIGVuY29kZSBtb25hZHMgd29ya2luZyBvbiBhIG11bHRpIHBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBsaWtlXG4gICAgICAoWygnYSwnYikgcmVzdWx0XSkuICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZFxuICAgICAgfCBgQ3VzdG9tIG9mICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiLCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWMyID0gQmFzaWMyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6J2EgLT4gJ2JcblxubW9kdWxlIHR5cGUgQmFzaWMyX2xvY2FsID1cbiAgQmFzaWMyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIEluZml4Ml9nZW4gPSBzaWdcbiAgKCoqIFNhbWUgYXMgeyFJbmZpeH0sIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG4gIHR5cGUgKCdhLCAnYikgZm5cblxuICB2YWwgKCA+Pj0gKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2UpIHQsICgnYiwgJ2UpIHQpIGZuXG4gIHZhbCAoID4+fCApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZuXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnYikgZm4gOj0gJ2EgLT4gJ2Jcbm1vZHVsZSB0eXBlIEluZml4Ml9sb2NhbCA9IEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXgyX2dlbiA9IHNpZ1xuICB0eXBlICgnYSwgJ2UpIHRcbiAgdHlwZSAoJ2EsICdiKSBmblxuICB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuXG4gICAgaW5jbHVkZVxuICAgICAgSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAnYiwgKCdiLCAnZSkgdCkgZl9sYWJlbGVkX2ZuXG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2UpIHQgLT4gKCdiLCAnZSkgdCAtPiAoJ2EgKiAnYiwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXgyID1cbiAgU3ludGF4Ml9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiXG4gICBhbmQgdHlwZSAoJ2EsICdiKSBmX2xhYmVsZWRfZm4gOj0gZjonYSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBTeW50YXgyX2xvY2FsID1cbiAgU3ludGF4Ml9nZW5cbiAgd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYVtAbG9jYWxdKSAtPiAnYlxuICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9IGY6KCdhW0Bsb2NhbF0pIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFMyX2dlbiA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuICB0eXBlICgnYSwgJ2IpIGZuXG4gIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuXG5cbiAgaW5jbHVkZVxuICAgIEluZml4Ml9nZW4gd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdCBhbmQgdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2EsICdiKSBmblxuXG4gIGluY2x1ZGVcbiAgICBTeW50YXgyX2dlblxuICAgIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcbiAgICAgYW5kIHR5cGUgKCdhLCAnYikgZm4gOj0gKCdhLCAnYikgZm5cbiAgICAgYW5kIHR5cGUgKCdhLCAnYikgZl9sYWJlbGVkX2ZuIDo9ICgnYSwgJ2IpIGZfbGFiZWxlZF9mblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6XG4gICAgSW5maXgyX2dlbiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSB0IGFuZCB0eXBlICgnYSwgJ2IpIGZuIDo9ICgnYSwgJ2IpIGZuXG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdlKSB0IC0+ICgnYSAtPiAoJ2IsICdlKSB0LCAoJ2IsICdlKSB0KSBmX2xhYmVsZWRfZm5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gJ2IsICgnYiwgJ2UpIHQpIGZfbGFiZWxlZF9mblxuICB2YWwgam9pbiA6ICgoJ2EsICdlKSB0LCAnZSkgdCAtPiAoJ2EsICdlKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnZSkgdCAtPiAodW5pdCwgJ2UpIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2UpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdlKSB0IGxpc3QgLT4gKHVuaXQsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPVxuICBTMl9nZW4gd2l0aCB0eXBlICgnYSwgJ2IpIGZuIDo9ICdhIC0+ICdiIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOidhIC0+ICdiXG5cbm1vZHVsZSB0eXBlIFMyX2xvY2FsID1cbiAgUzJfZ2VuXG4gIHdpdGggdHlwZSAoJ2EsICdiKSBmbiA6PSAoJ2FbQGxvY2FsXSkgLT4gJ2JcbiAgIGFuZCB0eXBlICgnYSwgJ2IpIGZfbGFiZWxlZF9mbiA6PSBmOignYVtAbG9jYWxdKSAtPiAnYlxuXG5tb2R1bGUgdHlwZSBCYXNpYzMgPSBzaWdcbiAgKCoqIE11bHRpIHBhcmFtZXRlciBtb25hZC4gVGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBnZXQgdW5pZmllZCBhY3Jvc3MgYWxsIHRoZVxuICAgICAgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4MyA9IHNpZ1xuICAoKiogU2FtZSBhcyBJbmZpeCwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIGFyZVxuICAgICAgYWx3YXlzIGp1c3QgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICgnYiwgJ2QsICdlKSB0KSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXgzID0gc2lnXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2QsICdlKSB0IC0+ICgnYiwgJ2QsICdlKSB0IC0+ICgnYSAqICdiLCAnZCwgJ2UpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZFxuICAgICAgYW5kIHRoaXJkIGFyZSBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG4gIGluY2x1ZGUgU3ludGF4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgbW9kdWxlIE1vbmFkX2luZml4IDogSW5maXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8sIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuICB2YWwgam9pbiA6ICgoJ2EsICdkLCAnZSkgdCwgJ2QsICdlKSB0IC0+ICgnYSwgJ2QsICdlKSB0XG4gIHZhbCBpZ25vcmVfbSA6IChfLCAnZCwgJ2UpIHQgLT4gKHVuaXQsICdkLCAnZSkgdFxuICB2YWwgYWxsIDogKCdhLCAnZCwgJ2UpIHQgbGlzdCAtPiAoJ2EgbGlzdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZCwgJ2UpIHQgbGlzdCAtPiAodW5pdCwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQmFzaWNfaW5kZXhlZCA9IHNpZ1xuICAoKiogSW5kZXhlZCBtb25hZCwgaW4gdGhlIHN0eWxlIG9mIEF0a2V5LiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGFyZSBjb21wb3NlZFxuICAgICAgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gVG8gc2VlIHRoaXMgbW9yZSBjbGVhcmx5LCB5b3UgY2FuIGxvb2sgYXQgdGhlIHR5cGUgb2YgYmluZDpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIF19XG5cbiAgICAgIGFuZCBpc29sYXRlIHNvbWUgb2YgdGhlIHR5cGUgdmFyaWFibGVzIHRvIHNlZSB0aGVpciBpbmRpdmlkdWFsIGJlaGF2aW9yczpcblxuICAgICAge1tcbiAgICAgICAgdmFsIGJpbmQgOiAnYSAgICAgICAgICAgICAtPiBmOignYSAtPiAgJ2IgICAgICAgICAgICkgLT4gICdiXG4gICAgICAgIHZhbCBiaW5kIDogICAgICAnaSwgJ2ogICAgLT4gICAgICAgICAgICAgICAnaiwgJ2sgICAgIC0+ICAgICAnaSwgJ2tcbiAgICAgIF19XG5cbiAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEF0a2V5LXN0eWxlIGluZGV4ZWQgbW9uYWRzLCBzZWU6XG5cbiAgICAgIHt2XG4gICAgICAgIFBhcmFtZXRlcmlzZWQgTm90aW9ucyBvZiBDb21wdXRhdGlvblxuICAgICAgICBSb2JlcnQgQXRrZXlcbiAgICAgICAgaHR0cDovL2JlbnRuaWIub3JnL3BhcmFtbm90aW9ucy1qZnAucGRmXG4gICAgICB2fSAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHQgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZml4X2luZGV4ZWQgPSBzaWdcbiAgKCoqIFNhbWUgYXMgeyFJbmZpeH0sIGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kIGFuZFxuICAgICAgdGhpcmQgYXJlIGNvbXBvc2VkIGFjcm9zcyBhbGwgY29tcHV0YXRpb24uICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXhfaW5kZXhlZCA9IHNpZ1xuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcblxuICAgIGluY2x1ZGUgSW5maXhfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2kpIHRcbiAgICAgIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gICAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gICAgICB2YWwgYm90aCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYiwgJ2osICdrKSB0IC0+ICgnYSAqICdiLCAnaSwgJ2spIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2luZGV4ZWQgPSBzaWdcbiAgKCoqIFRoZSBzYW1lIGFzIHshU30gZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBpbmNsdWRlIFN5bnRheF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICB2YWwgbWFwIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2osICdrKSB0LCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2spIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdpLCAnaikgdCAtPiAodW5pdCwgJ2ksICdqKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdpLCAnaSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnaSwgJ2kpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdpLCAnaSkgdCBsaXN0IC0+ICh1bml0LCAnaSwgJ2kpIHRcbmVuZFxuXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MzIChYIDogUzIpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnRcbmVuZFxuXG5tb2R1bGUgU190b19TX2luZGV4ZWQgKFggOiBTKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TIChYIDogUzIpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIFNfaW5kZXhlZF90b19TMiAoWCA6IFNfaW5kZXhlZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnQgPVxuc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsICdlKSBYLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNb25hZCA9IHNpZ1xuICAoKiogQSBtb25hZCBpcyBhbiBhYnN0cmFjdGlvbiBvZiB0aGUgY29uY2VwdCBvZiBzZXF1ZW5jaW5nIG9mIGNvbXB1dGF0aW9ucy4gIEEgdmFsdWUgb2ZcbiAgICAgIHR5cGUgWydhIG1vbmFkXSByZXByZXNlbnRzIGEgY29tcHV0YXRpb24gdGhhdCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSBbJ2FdLiAqKVxuXG4gIG1vZHVsZSB0eXBlIEJhc2ljID0gQmFzaWNcbiAgbW9kdWxlIHR5cGUgQmFzaWMyID0gQmFzaWMyXG4gIG1vZHVsZSB0eXBlIEJhc2ljMyA9IEJhc2ljM1xuICBtb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gQmFzaWNfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBCYXNpY19sb2NhbCA9IEJhc2ljX2xvY2FsXG4gIG1vZHVsZSB0eXBlIEJhc2ljMl9sb2NhbCA9IEJhc2ljMl9sb2NhbFxuICBtb2R1bGUgdHlwZSBJbmZpeCA9IEluZml4XG4gIG1vZHVsZSB0eXBlIEluZml4MiA9IEluZml4MlxuICBtb2R1bGUgdHlwZSBJbmZpeDMgPSBJbmZpeDNcbiAgbW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IEluZml4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgSW5maXhfbG9jYWwgPSBJbmZpeF9sb2NhbFxuICBtb2R1bGUgdHlwZSBJbmZpeDJfbG9jYWwgPSBJbmZpeDJfbG9jYWxcbiAgbW9kdWxlIHR5cGUgU3ludGF4ID0gU3ludGF4XG4gIG1vZHVsZSB0eXBlIFN5bnRheDIgPSBTeW50YXgyXG4gIG1vZHVsZSB0eXBlIFN5bnRheDMgPSBTeW50YXgzXG4gIG1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gU3ludGF4X2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2xvY2FsID0gU3ludGF4X2xvY2FsXG4gIG1vZHVsZSB0eXBlIFN5bnRheDJfbG9jYWwgPSBTeW50YXgyX2xvY2FsXG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXggPSBTX3dpdGhvdXRfc3ludGF4XG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zeW50YXhfbG9jYWwgPSBTX3dpdGhvdXRfc3ludGF4X2xvY2FsXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG4gIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgbW9kdWxlIHR5cGUgUzMgPSBTM1xuICBtb2R1bGUgdHlwZSBTX2luZGV4ZWQgPSBTX2luZGV4ZWRcbiAgbW9kdWxlIHR5cGUgU19sb2NhbCA9IFNfbG9jYWxcbiAgbW9kdWxlIHR5cGUgUzJfbG9jYWwgPSBTMl9sb2NhbFxuXG4gIG1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnRcbiAgbW9kdWxlIE1ha2UyIChYIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudFxuICBtb2R1bGUgTWFrZTMgKFggOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnRcblxuICBtb2R1bGUgTWFrZV9pbmRleGVkIChYIDogQmFzaWNfaW5kZXhlZCkgOlxuICAgIFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2xvY2FsIChYIDogQmFzaWNfbG9jYWwpIDogU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnRcbiAgbW9kdWxlIE1ha2UyX2xvY2FsIChYIDogQmFzaWMyX2xvY2FsKSA6IFMyX2xvY2FsIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIFgudFxuXG4gICgqKiBEZWZpbmUgYSBtb25hZCB0aHJvdWdoIGFuIGlzb21vcnBoaXNtIHdpdGggYW4gZXhpc3RpbmcgbW9uYWQuIEZvciBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlICdhIHQgPSB7IHZhbHVlIDogJ2EgfVxuXG4gICAgICAgIGluY2x1ZGUgTW9uYWQuT2ZfbW9uYWQgKE1vbmFkLklkZW50KSAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgICAgICBsZXQgdG9fbW9uYWQgeyB2YWx1ZSB9ID0gdmFsdWVcbiAgICAgICAgICAgIGxldCBvZl9tb25hZCB2YWx1ZSA9IHsgdmFsdWUgfVxuICAgICAgICAgIGVuZClcbiAgICAgIF19ICopXG4gIG1vZHVsZSBPZl9tb25hZFxuICAgICAgKE1vbmFkIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICdhIE1vbmFkLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDJcbiAgICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnRcblxuICBtb2R1bGUgT2ZfbW9uYWQzXG4gICAgICAoTW9uYWQgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2IsICdjKSBNb25hZC50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZF9pbmRleGVkXG4gICAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFNfaW5kZXhlZCB3aXRoIHR5cGUgKCdhLCAnaSwgJ2opIHQgOj0gKCdhLCAnaSwgJ2opIE0udFxuXG4gICgqKiBBbiBlYWdlciBpZGVudGl0eSBtb25hZCB3aXRoIGZ1bmN0aW9ucyBoZWF2aWx5IGFubm90YXRlZCB3aXRoXG4gICAgICBbQGlubGluZWRdIG9yIFtAaW5saW5lIGhpbnRdLlxuXG4gICAgICBUaGUgaW1wbGVtZW50YXRpb24gaXMgbWFudWFsbHkgd3JpdHRlbiwgcmF0aGVyIHRoYW4gYmVpbmdcbiAgICAgIGNvbnN0cnVjdGVkIGJ5IFtNb25hZC5NYWtlXS4gVGhpcyBnaXZlcyBiZXR0ZXIgaW5saW5pbmdcbiAgICAgIGd1YXJhbnRlZXMuXG4gICopXG4gIG1vZHVsZSBJZGVudCA6IFNfbG9jYWwgd2l0aCB0eXBlICdhIHQgPSAnYVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTW9uYWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBCYXNpY19nZW5lcmFsID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gIHZhbCBiaW5kXG4gICAgOiAgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gIHZhbCBtYXBcbiAgICA6IFsgYERlZmluZV91c2luZ19iaW5kXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgXVxuXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuZXJhbCAoTSA6IEJhc2ljX2dlbmVyYWwpID0gc3RydWN0XG4gIGxldCBiaW5kID0gTS5iaW5kXG4gIGxldCByZXR1cm4gPSBNLnJldHVyblxuICBsZXQgbWFwX3ZpYV9iaW5kIG1hIH5mID0gTS5iaW5kIG1hIH5mOihmdW4gYSAtPiBNLnJldHVybiAoZiBhKSlcblxuICBsZXQgbWFwID1cbiAgICBtYXRjaCBNLm1hcCB3aXRoXG4gICAgfCBgRGVmaW5lX3VzaW5nX2JpbmQgLT4gbWFwX3ZpYV9iaW5kXG4gICAgfCBgQ3VzdG9tIHggLT4geFxuICA7O1xuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIGEgYiA9IGEgPj49IGZ1biBhIC0+IGIgPj58IGZ1biBiIC0+IGEsIGJcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgam9pbiB0ID0gdCA+Pj0gZnVuIHQnIC0+IHQnXG4gIGxldCBpZ25vcmVfbSB0ID0gbWFwIHQgfmY6KGZ1biBfIC0+ICgpKVxuXG4gIGxldCBhbGwgPVxuICAgIGxldCByZWMgbG9vcCB2cyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgdnMpXG4gICAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuIHYgLT4gbG9vcCAodiA6OiB2cykgdHNcbiAgICBpblxuICAgIGZ1biB0cyAtPiBsb29wIFtdIHRzXG4gIDs7XG5cbiAgbGV0IHJlYyBhbGxfdW5pdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICB8IHQgOjogdHMgLT4gdCA+Pj0gZnVuICgpIC0+IGFsbF91bml0IHRzXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaW5kZXhlZCAoTSA6IEJhc2ljX2luZGV4ZWQpIDpcbiAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTMgKE0gOiBCYXNpYzMpIDogUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBNLnQgPVxuICBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMiAoTSA6IEJhc2ljMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZCkgdCA6PSAoJ2EsICdkKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UgKE0gOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTJfbG9jYWwgKE0gOiBCYXNpYzJfbG9jYWwpID0gc3RydWN0XG4gIGxldCBiaW5kID0gTS5iaW5kXG4gIGxldCByZXR1cm4gPSBNLnJldHVyblxuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPVxuICAgIGxldCByZXMgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKSBpblxuICAgIHJlc1xuICA7O1xuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuXG4gICAgICBsZXQgYm90aCBhIGIgPVxuICAgICAgICBsZXQgcmVzID1cbiAgICAgICAgICBiaW5kIGEgfmY6KGZ1biBhIC0+XG4gICAgICAgICAgICBsZXQgcmVzID0gbWFwIGIgfmY6KGZ1biBiIC0+IGEsIGIpIGluXG4gICAgICAgICAgICByZXMpXG4gICAgICAgIGluXG4gICAgICAgIHJlc1xuICAgICAgOztcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgam9pbiB0ID0gdCA+Pj0gRm4uaWRcblxuICBsZXQgaWdub3JlX20gdCA9XG4gICAgbGV0IHJlcyA9IG1hcCB0IH5mOihmdW4gXyAtPiAoKSkgaW5cbiAgICByZXNcbiAgOztcblxuICBsZXQgYWxsID1cbiAgICBsZXQgcmVjIGxvb3AgdnMgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKExpc3QucmV2IHZzKVxuICAgICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biB2IC0+IGxvb3AgKHYgOjogdnMpIHRzXG4gICAgaW5cbiAgICBmdW4gdHMgLT4gbG9vcCBbXSB0c1xuICA7O1xuXG4gIGxldCByZWMgYWxsX3VuaXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV0dXJuICgpXG4gICAgfCB0IDo6IHRzIC0+IHQgPj49IGZ1biAoKSAtPiBhbGxfdW5pdCB0c1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2xvY2FsIChNIDogQmFzaWNfbG9jYWwpIDogU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPVxuICBNYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfZ2VuZXJhbCAoTW9uYWQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBiaW5kXG4gICAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICAtPiBmOignYSAtPiAoJ2IsICdqLCAnaywgJ2QsICdlKSB0KVxuICAgICAgLT4gKCdiLCAnaSwgJ2ssICdkLCAnZSkgdFxuXG4gICAgdmFsIG1hcCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCAnaSwgJ2ksICdkLCAnZSkgdFxuICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnRcbiAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2osICdkLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBNLm9mX21vbmFkIChNb25hZC5yZXR1cm4gYSlcbiAgICBsZXQgYmluZCB0IH5mID0gTS5vZl9tb25hZCAoTW9uYWQuYmluZCAoTS50b19tb25hZCB0KSB+ZjooZnVuIGEgLT4gTS50b19tb25hZCAoZiBhKSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gKGZ1biB0IH5mIC0+IE0ub2ZfbW9uYWQgKE1vbmFkLm1hcCAoTS50b19tb25hZCB0KSB+ZikpXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAoTW9uYWQgOiBTX2luZGV4ZWQpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdpLCAnaikgTW9uYWQudCAtPiAoJ2EsICdpLCAnaikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkM1xuICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCwgJ2UpIE0udFxuICAgIGVuZClcblxubW9kdWxlIE9mX21vbmFkMlxuICAgIChNb25hZCA6IFMyKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYikgTW9uYWQudCAtPiAoJ2EsICdiKSB0XG4gICAgICAgICAgICAgICAgICBlbmQpID1cbiAgT2ZfbW9uYWRfZ2VuZXJhbFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTW9uYWRcblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTW9uYWQudFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1cblxuICAgICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRcbiAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgJ2EgdFxuXG4gICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogJ2EgdCAtPiAnYSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAnYSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldFtAaW5saW5lXSBiaW5kIGEgfmYgPSAoZiBbQGlubGluZWQgaGludF0pIGFcbiAgbGV0W0BpbmxpbmVdIG1hcCBhIH5mID0gKGYgW0BpbmxpbmVkIGhpbnRdKSBhXG5cbiAgZXh0ZXJuYWwgcmV0dXJuIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldFtAaW5saW5lXSAoID4+fCApIGEgZiA9IG1hcCBhIH5mXG4gICAgbGV0W0BpbmxpbmVdICggPj49ICkgYSBmID0gYmluZCBhIH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldFtAaW5saW5lXSBib3RoIGEgYiA9IGEsIGJcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICBlbmRcblxuICBleHRlcm5hbCBqb2luIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBpZ25vcmVfbSA6IChfW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbiAgZXh0ZXJuYWwgYWxsX3VuaXQgOiAodW5pdCBsaXN0W0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcbiAgZXh0ZXJuYWwgYWxsIDogKCdhIGxpc3RbQGxvY2FsX29wdF0pIC0+ICgnYSBsaXN0W0Bsb2NhbF9vcHRdKSA9IFwiJWlkZW50aXR5XCJcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcblxuKCoqIFRoaXMgbW9kdWxlIHNlcnZlcyBtb3N0bHkgYXMgYSBwYXJ0aWFsIGNoZWNrIHRoYXQgW1MyXSBhbmQgW1NdIGFyZSBpbiBzeW5jLCBidXRcbiAgICBhY3R1YWxseSBjYWxsaW5nIGl0IGlzIG9jY2FzaW9uYWxseSB1c2VmdWwuICopXG5tb2R1bGUgU190b19TMiAoWCA6IFMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFQgOiBULlQpIChYIDogUzIpIDogUyB3aXRoIHR5cGUgJ2EgdCA9ICgnYSwgVC50KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCBULnQpIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChUIDogVC5UKSAoWCA6IFMzKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgVC50KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgVC50KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUyAoVDEgOiBULlQpIChUMiA6IFQuVCkgKFggOiBTMykgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCBUMS50LCBUMi50KSBYLnQgPVxuc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIHR5cGUgJ2EgdCA9ICgnYSwgVDEudCwgVDIudCkgWC50XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYXBwbHkgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IG1hcDIgdGEgdGIgfmYgPSBtYXAgfmYgdGEgPCo+IHRiXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwIH5mIHRhIDwqPiB0YiA8Kj4gdGNcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgKCAqPiApIHUgdiA9IHJldHVybiAoZnVuICgpIHkgLT4geSkgPCo+IHUgPCo+IHZcbiAgbGV0ICggPCogKSB1IHYgPSByZXR1cm4gKGZ1biB4ICgpIC0+IHgpIDwqPiB1IDwqPiB2XG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTMgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4M1xuICAgIChYIDogRm9yX2xldF9zeW50YXgzKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gSW1wbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4MlxuICAgIChYIDogRm9yX2xldF9zeW50YXgyKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4M1xuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgJ2QsIF8pIHQgPSAoJ2EsICdkKSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXhcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4KSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbigqKiBUaGlzIGZ1bmN0b3IgY2xvc2VseSByZXNlbWJsZXMgW01ha2UzXSwgYW5kIGluZGVlZCBpdCBjb3VsZCBiZSBpbXBsZW1lbnRlZFxuICAgIG11Y2ggc2hvcnRlciBpbiB0ZXJtcyBvZiBbTWFrZTNdLiBIb3dldmVyLCB3ZSBpbXBsZW1lbnQgaXQgYnkgaGFuZCBzbyB0aGF0XG4gICAgdGhlIHJlc3VsdGluZyBmdW5jdGlvbnMgYXJlIG1vcmUgZWZmaWNpZW50LCBlLmcuIHVzaW5nIFttYXAyXSBkaXJlY3RseSBpbnN0ZWFkIG9mXG4gICAgZGVmaW5pbmcgW2FwcGx5XSBpbiB0ZXJtcyBvZiBpdCBhbmQgdGhlbiBbbWFwMl0gaW4gdGVybXMgb2YgdGhhdC4gRm9yIG1vc3RcbiAgICBhcHBsaWNhdGl2ZXMgdGhpcyBkb2VzIG5vdCBtYXR0ZXIsIGJ1dCBmb3Igc29tZSAoc3VjaCBhcyBCb25zYWkuVmFsdWUudCksIGl0IGhhcyBhXG4gICAgbGFyZ2VyIGltcGFjdC4gKilcbm1vZHVsZSBNYWtlM191c2luZ19tYXAyIChYIDogQmFzaWMzX3VzaW5nX21hcDIpIDpcbiAgUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0IGFwcGx5IHRmIHRhID0gbWFwMiB0ZiB0YSB+ZjooZnVuIGYgYSAtPiBmIGEpXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAyIChtYXAyIHRhIHRiIH5mKSB0YyB+ZjooZnVuIGZhYiBjIC0+IGZhYiBjKVxuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0ICggKj4gKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuICgpIHkgLT4geSlcbiAgbGV0ICggPCogKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuIHggKCkgLT4geClcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMl91c2luZ19tYXAyIChYIDogQmFzaWMyX3VzaW5nX21hcDIpIDpcbiAgUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTNfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfbWFwMiAoWCA6IEJhc2ljX3VzaW5nX21hcDIpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPVxuICBNYWtlMl91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlM191c2luZ19tYXAyX2xvY2FsIChYIDogQmFzaWMzX3VzaW5nX21hcDJfbG9jYWwpIDpcbiAgUzNfbG9jYWwgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0IGFwcGx5IHRmIHRhID0gbWFwMiB0ZiB0YSB+ZjooZnVuIGYgYSAtPiBmIGEpXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSBtYXAyIH5mOihmdW4gKCkgLT4gZikgKHJldHVybiAoKSkgdCBbQG5vbnRhaWxdXG5cbiAgbGV0IG1hcCA9XG4gICAgbWF0Y2ggWC5tYXAgd2l0aFxuICAgIHwgYERlZmluZV91c2luZ19tYXAyIC0+IGRlcml2ZWRfbWFwXG4gICAgfCBgQ3VzdG9tIG1hcCAtPiBtYXBcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcblxuICBsZXQgbWFwMyB0YSB0YiB0YyB+ZiA9XG4gICAgbGV0IHJlcyA9IG1hcDIgKGJvdGggdGEgdGIpIHRjIH5mOihmdW4gKGEsIGIpIGMgLT4gZiBhIGIgYykgaW5cbiAgICByZXNcbiAgOztcblxuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0ICggKj4gKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuICgpIHkgLT4geSlcbiAgbGV0ICggPCogKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuIHggKCkgLT4geClcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMl91c2luZ19tYXAyX2xvY2FsIChYIDogQmFzaWMyX3VzaW5nX21hcDJfbG9jYWwpIDpcbiAgUzJfbG9jYWwgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTNfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfbWFwMl9sb2NhbCAoWCA6IEJhc2ljX3VzaW5nX21hcDJfbG9jYWwpIDpcbiAgU19sb2NhbCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBNYWtlMl91c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDIgKE0gOiBNb25hZC5TMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBNLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgICBsZXQgYXBwbHkgbWYgbXggPSBNLmJpbmQgbWYgfmY6KGZ1biBmIC0+IE0ubWFwIG14IH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIE0ubWFwXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkIChNIDogTW9uYWQuUykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE9mX21vbmFkMiAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgXykgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBDb21wb3NlIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRy5yZXR1cm4gKEYucmV0dXJuIGEpXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBHLmFwcGx5IChHLm1hcCB+ZjpGLmFwcGx5IHRmKSB0eFxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEcubWFwIH5mOihGLm1hcCB+ZikgdFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgUGFpciAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBGLnJldHVybiBhLCBHLnJldHVybiBhXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBGLmFwcGx5IChmc3QgdGYpIChmc3QgdHgpLCBHLmFwcGx5IChzbmQgdGYpIChzbmQgdHgpXG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRi5tYXAgfmYgKGZzdCB0KSwgRy5tYXAgfmYgKHNuZCB0KVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAnd2l0bmVzcykgdCA9XG4gIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICB9XG5cbnR5cGUgKCdhLCAnYikgY29tcGFyYXRvciA9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSB0LCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2ZjID0gc2lnXG4gIHR5cGUgY29tcGFyYWJsZV90XG5cbiAgaW5jbHVkZSBTIHdpdGggdHlwZSB0IDo9IGNvbXBhcmFibGVfdFxuZW5kXG5cbm1vZHVsZSBNb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2IpXG5lbmRcblxubGV0IG1ha2UgKHR5cGUgdCkgfmNvbXBhcmUgfnNleHBfb2ZfdCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBjb21wYXJhYmxlX3QgPSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0geyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBlbmQgOiBTX2ZjXG4gICAgd2l0aCB0eXBlIGNvbXBhcmFibGVfdCA9IHQpXG47O1xuXG5tb2R1bGUgU190b19TMSAoUyA6IFMpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IFMudFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgb3BlbiBTXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gTS57IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIE1ha2UxIChNIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgc2V4cF9vZl90IDogJ2EgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgaW5jbHVkZSBNYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICBsZXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gU2V4cC5BdG9tIFwiX1wiXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWQgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgISdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIGNvbXBhcmF0b3IgLT4gKCdhIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAhJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZDIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCEnY21wX2EsICEnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wX2EpIGNvbXBhcmF0b3JcbiAgICAtPiAoJ2IsICdjbXBfYikgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsICdiKSB0LCAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkMiAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2EsICdiKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCEnY21wX2EsICEnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgYiA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICA7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IGIuc2V4cF9vZl90XG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIERlcml2ZWRfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wKSBjb21wYXJhdG9yXG4gICAgLT4gKCgnYSwgXykgdCwgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3MpIGNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgRGVyaXZlZF9waGFudG9tIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdhLCBfKSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICdjbXBfYSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhID1cbiAgICB7IGNvbXBhcmUgPSBNLmNvbXBhcmUgYS5jb21wYXJlOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCB9XG4gIDs7XG5lbmRcblxubW9kdWxlIHR5cGUgRGVyaXZlZDJfcGhhbnRvbSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgKCEnY21wX2EsICEnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wX2EpIGNvbXBhcmF0b3JcbiAgICAtPiAoJ2IsICdjbXBfYikgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsICdiLCBfKSB0LCAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkMl9waGFudG9tIChNIDogc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXBhcmVcbiAgICAgIDogICgnYSAtPiAnYSAtPiBpbnQpXG4gICAgICAtPiAoJ2IgLT4gJ2IgLT4gaW50KVxuICAgICAgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiLCBfKSB0IC0+IFNleHAudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICghJ2NtcF9hLCAhJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdmLCAncykgdCA9XG4gIHwgRmlyc3Qgb2YgJ2ZcbiAgfCBTZWNvbmQgb2YgJ3NcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDpcbiAgJ2YgJ3MuICgnZiAtPiAnZiAtPiBpbnQpIC0+ICgncyAtPiAncyAtPiBpbnQpIC0+ICgnZiwgJ3MpIHQgLT4gKCdmLCAncykgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fZiBfY21wX19zIGFfXzAwMV8gYl9fMDAyXyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgfCBGaXJzdCBfYV9fMDAzXywgRmlyc3QgX2JfXzAwNF8gLT4gX2NtcF9fZiBfYV9fMDAzXyBfYl9fMDA0X1xuICAgIHwgRmlyc3QgXywgXyAtPiAtMVxuICAgIHwgXywgRmlyc3QgXyAtPiAxXG4gICAgfCBTZWNvbmQgX2FfXzAwNV8sIFNlY29uZCBfYl9fMDA2XyAtPiBfY21wX19zIF9hX18wMDVfIF9iX18wMDZfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBmIHMuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHMgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChmLCBzKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfZiBfaGFzaF9mb2xkX3MgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IEZpcnN0IF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9mIGhzdiBfYTBcbiAgfCBTZWNvbmQgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX3MgaHN2IF9hMFxuOztcblxubGV0IHRfb2Zfc2V4cCA6XG4gICdmICdzLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdmKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdzKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdmLCAncykgdFxuICA9XG4gIGZ1biAodHlwZSBmX18wMjNfIHNfXzAyNF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBmX18wMjNfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IHNfXzAyNF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChmX18wMjNfLCBzX18wMjRfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAxMV8gPSBcImVpdGhlcjAubWwudFwiIGluXG4gICAgZnVuIF9vZl9mX18wMDdfIF9vZl9zX18wMDhfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2ZfXzAwN18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgICBGaXJzdCByZXMwX18wMTdfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBfdGFnX18wMTlfKSA6OiBzZXhwX2FyZ3NfXzAyMF8pIGFzXG4gICAgICAgIF9zZXhwX18wMThfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyMF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAyMV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9zX18wMDhfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgICAgU2Vjb25kIHJlczBfXzAyMl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE5X1xuICAgICAgICAgICAgIF9zZXhwX18wMThfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IHNleHBfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdmICdzLlxuICAoJ2YgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2YsICdzKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBmX18wMzFfIHNfXzAzMl8pXG4gICAgICA6ICAoKGZfXzAzMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDMyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGZfXzAzMV8sIHNfXzAzMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfZl9fMDI1XyBfb2Zfc19fMDI2XyAtPiBmdW5jdGlvblxuICAgICAgfCBGaXJzdCBhcmcwX18wMjdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2ZfXzAyNV8gYXJnMF9fMDI3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJGaXJzdFwiOyByZXMwX18wMjhfIF1cbiAgICAgIHwgU2Vjb25kIGFyZzBfXzAyOV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMF8gPSBfb2Zfc19fMDI2XyBhcmcwX18wMjlfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNlY29uZFwiOyByZXMwX18wMzBfIF1cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6XG4gICdmICdzLlxuICAnZiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAncyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAtPiAoJ2YsICdzKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgZnVuIF8nZl9zZXhwX2dyYW1tYXIgXydzX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRmlyc3RcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlNlY29uZFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nc19zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cbiIsIigqIFRoZSB0eXBlIFt0XSBzaG91bGQgYmUgYWJzdHJhY3QgdG8gbWFrZSB0aGUgZnNldCBhbmQgc2V0IGZ1bmN0aW9ucyB1bmF2YWlsYWJsZVxuICAgZm9yIHByaXZhdGUgdHlwZXMgYXQgdGhlIGxldmVsIG9mIHR5cGVzIChhbmQgbm90IGJ5IHB1dHRpbmcgTm9uZSBpbiB0aGUgZmllbGQpLlxuICAgVW5mb3J0dW5hdGVseSwgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0IG1lYW5zIHRoYXQgd2hlbiBjcmVhdGluZyBmaWVsZHMgKHRocm91Z2hcbiAgIGEgW2NyZWF0ZV0gZnVuY3Rpb24pIHZhbHVlIHJlc3RyaWN0aW9uIGtpY2tzIGluLiBUaGlzIGlzIHdvcmtlZCBhcm91bmQgYnkgaW5zdGVhZFxuICAgbm90IG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCwgYnV0IGZvcmNpbmcgYW55b25lIGJyZWFraW5nIHRoZSBhYnN0cmFjdGlvbiB0byB1c2VcbiAgIHRoZSBbRm9yX2dlbmVyYXRlZF9jb2RlXSBtb2R1bGUsIG1ha2luZyBpdCBvYnZpb3VzIHRvIGFueSByZWFkZXIgdGhhdCBzb21ldGhpbmcgdWdseVxuICAgaXMgZ29pbmcgb24uXG4gICB0X3dpdGhfcGVybSAoYW5kIGRlcml2YXRpdmVzKSBpcyB0aGUgdHlwZSB0aGF0IHVzZXJzIHJlYWxseSB1c2UuIEl0IGlzIGEgY29uc3RydWN0b3JcbiAgIGJlY2F1c2U6XG4gICAxLiBpdCBtYWtlcyB0eXBlIGVycm9ycyBtb3JlIHJlYWRhYmxlIChsZXNzIGFsaWFzaW5nKVxuICAgMi4gdGhlIHR5cGVyIGluIG9jYW1sIDQuMDEgYWxsb3dzIHRoaXM6XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBBID0gc3RydWN0XG4gICAgICAgdHlwZSB0ID0ge2EgOiBpbnR9XG4gICAgIGVuZFxuICAgICB0eXBlIHQgPSBBLnRcbiAgICAgbGV0IGYgKHggOiB0KSA9IHguYVxuICAgXX1cblxuICAgKGFsdGhvdWdoIHdpdGggV2FybmluZyA0MDogYSBpcyB1c2VkIG91dCBvZiBzY29wZSlcbiAgIHdoaWNoIG1lYW5zIHRoYXQgaWYgW3Rfd2l0aF9wZXJtXSB3YXMgcmVhbGx5IGFuIGFsaWFzIG9uIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0sXG4gICBwZW9wbGUgY291bGQgc2F5IFt0LnNldHRlcl0gYW5kIGJyZWFrIHRoZSBhYnN0cmFjdGlvbiB3aXRoIG5vIGluZGljYXRpb24gdGhhdFxuICAgc29tZXRoaW5nIHVnbHkgaXMgZ29pbmcgb24gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgVGhlIHdhcm5pbmcgaXMgKEkgdGhpbmspIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gbWFrZSB0aGVpciBjb2RlIGNvbXBhdGlibGUgd2l0aFxuICAgcHJldmlvdXMgdmVyc2lvbnMgb2Ygb2NhbWwsIHNvIHdlIG1heSB2ZXJ5IHdlbGwgdHVybiBpdCBvZmYuXG5cbiAgIFRoZSB0eXBlIHRfd2l0aF9wZXJtIGNvdWxkIGFsc28gaGF2ZSBiZWVuIGEgW3VuaXQgLT4gRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHRvIHdvcmtcbiAgIGFyb3VuZCB2YWx1ZSByZXN0cmljdGlvbiBhbmQgdGhlbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHdvdWxkIGhhdmUgYmVlbiBhIHByb3BlclxuICAgYWJzdHJhY3QgdHlwZSwgYnV0IGl0IGxvb2tzIGxpa2UgaXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIChmb3IgZXhhbXBsZSwgYSBmb2xkIG9uIGFcbiAgIHJlY29yZCB0eXBlIHdpdGggNDAgZmllbGRzIHdvdWxkIGFjdHVhbGx5IGFsbG9jYXRlIHRoZSA0MCBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdJ3MgYXRcbiAgIGV2ZXJ5IHNpbmdsZSBmb2xkLikgKilcblxubW9kdWxlIEZvcl9nZW5lcmF0ZWRfY29kZSA9IHN0cnVjdFxuICB0eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICB7IGZvcmNlX3ZhcmlhbmNlIDogJ3Blcm0gLT4gdW5pdFxuICAgIDsgKCogZm9yY2UgW3RdIHRvIGJlIGNvbnRyYXZhcmlhbnQgaW4gWydwZXJtXSwgYmVjYXVzZSBwaGFudG9tIHR5cGUgdmFyaWFibGVzIG9uXG4gICAgICAgICBjb25jcmV0ZSB0eXBlcyBkb24ndCB3b3JrIHRoYXQgd2VsbCBvdGhlcndpc2UgKHVzaW5nIDo+IGNhbiByZW1vdmUgdGhlbSBlYXNpbHkpICopXG4gICAgICBuYW1lIDogc3RyaW5nXG4gICAgOyBzZXR0ZXIgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBnZXR0ZXIgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgIDsgZnNldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkIC0+ICdyZWNvcmRcbiAgICB9XG5cbiAgbGV0IG9wYXF1ZV9pZGVudGl0eSA9IFN5czAub3BhcXVlX2lkZW50aXR5XG5lbmRcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gPVxuICB8IEZpZWxkIG9mICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSBGb3JfZ2VuZXJhdGVkX2NvZGUudFxuW0BAdW5ib3hlZF1cblxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID0gKFsgYFJlYWQgfCBgU2V0X2FuZF9jcmVhdGUgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSByZWFkb25seV90ID0gKFsgYFJlYWQgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxuXG5sZXQgbmFtZSAoRmllbGQgZmllbGQpID0gZmllbGQubmFtZVxubGV0IGdldCAoRmllbGQgZmllbGQpIHIgPSBmaWVsZC5nZXR0ZXIgclxubGV0IGZzZXQgKEZpZWxkIGZpZWxkKSByIHYgPSBmaWVsZC5mc2V0IHIgdlxubGV0IHNldHRlciAoRmllbGQgZmllbGQpID0gZmllbGQuc2V0dGVyXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAncmVzdWx0KSB1c2VyID1cbiAgeyBmIDogJ2ZpZWxkLiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gLT4gJ3Jlc3VsdCB9XG5cbmxldCBtYXAgKEZpZWxkIGZpZWxkKSByIH5mID0gZmllbGQuZnNldCByIChmIChmaWVsZC5nZXR0ZXIgcikpXG5cbmxldCB1cGRhdGVyIChGaWVsZCBmaWVsZCkgPVxuICBtYXRjaCBmaWVsZC5zZXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgc2V0dGVyIC0+IFNvbWUgKGZ1biByIH5mIC0+IHNldHRlciByIChmIChmaWVsZC5nZXR0ZXIgcikpKVxuOztcbiIsIigqIFtTdHJpbmcwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtTdGRsaWIuU3RyaW5nXS4gW1N0cmluZzBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzcyB0aGUgcGFydCBvZlxuICAgW1N0ZGxpYi5TdHJpbmddIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gc3RyaW5nMC5tbCBzaG91bGRcbiAgIHVzZSBbU3RkbGliLlN0cmluZ10uICBbU3RyaW5nMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzXG4gICBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzLCBpbmNsdWRpbmcgdGhlIHN1YnNjcmlwdCBzeW50YXggW3guW2ldXSB3aGljaFxuICAgdGhlIE9DYW1sIHBhcnNlciBkZXN1Z2FycyBpbnRvIGNhbGxzIHRvIFtTdHJpbmddLCBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuU3RyaW5nXSBpblxuICAgYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG5cbiAgIHtbXG4gICAgIG1vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXG4gICBdfVxuXG4gICBEZWZpbmluZyBbbW9kdWxlIFN0cmluZyA9IFN0cmluZzBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXQgcHJldmVudHNcbiAgIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuU3RyaW5nXS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiAoc3RyaW5nW0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKHN0cmluZ1tAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogIChzdHJpbmdbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBjaGFyXG4gICAgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5lbmRcblxuaW5jbHVkZSBTdHJpbmdcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCAoIF4gKSA9ICggXiApXG5sZXQgY2FwaXRhbGl6ZSA9IFN0ZGxpYi5TdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IGNvbXBhcmUgPSBTdGRsaWIuU3RyaW5nLmNvbXBhcmVcbmxldCBlc2NhcGVkID0gU3RkbGliLlN0cmluZy5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gU3RkbGliLlN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBtYWtlID0gU3RkbGliLlN0cmluZy5tYWtlXG5sZXQgc3ViID0gU3RkbGliLlN0cmluZy5zdWJcbmxldCB1bmNhcGl0YWxpemUgPSBTdGRsaWIuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxubGV0IHVuc2FmZV9ibGl0ID0gU3RkbGliLlN0cmluZy51bnNhZmVfYmxpdFxubGV0IHVwcGVyY2FzZSA9IFN0ZGxpYi5TdHJpbmcudXBwZXJjYXNlX2FzY2lpXG5sZXQgc3BsaXRfb25fY2hhciA9IFN0ZGxpYi5TdHJpbmcuc3BsaXRfb25fY2hhclxuXG5sZXQgY29uY2F0ID8oc2VwID0gXCJcIikgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiXCJcbiAgKCogVGhlIHN0ZGxpYiBkb2VzIG5vdCBzcGVjaWFsaXplIHRoaXMgY2FzZSBiZWNhdXNlIGl0IGNvdWxkIGJyZWFrIGV4aXN0aW5nIHByb2plY3RzLiAqKVxuICB8IFsgeCBdIC0+IHhcbiAgfCBsIC0+IFN0ZGxpYi5TdHJpbmcuY29uY2F0IH5zZXAgbFxuOztcblxubGV0IGl0ZXIgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgZiAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGRsaWIuTGV4aW5nLnBvc2l0aW9uID1cbiAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgIDsgcG9zX2xudW0gOiBpbnRcbiAgICA7IHBvc19ib2wgOiBpbnRcbiAgICA7IHBvc19jbnVtIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9XG4gICAgKGZ1biBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICAgICAgIHRoZW4gMFxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbWF0Y2ggY29tcGFyZV9zdHJpbmcgYV9fMDAxXy5wb3NfZm5hbWUgYl9fMDAyXy5wb3NfZm5hbWUgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19sbnVtIGJfXzAwMl8ucG9zX2xudW0gd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19ib2wgYl9fMDAyXy5wb3NfYm9sIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMDFfLnBvc19jbnVtIGJfXzAwMl8ucG9zX2NudW1cbiAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgZnVuIGhzdiBhcmcgLT5cbiAgICAgIGxldCBoc3YgPVxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IGFyZy5wb3NfZm5hbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfbG51bVxuICAgICAgICBpblxuICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2JvbFxuICAgICAgaW5cbiAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfY251bVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW4geyBwb3NfZm5hbWUgPSBwb3NfZm5hbWVfXzAwNF9cbiAgICAgICAgIDsgcG9zX2xudW0gPSBwb3NfbG51bV9fMDA2X1xuICAgICAgICAgOyBwb3NfYm9sID0gcG9zX2JvbF9fMDA4X1xuICAgICAgICAgOyBwb3NfY251bSA9IHBvc19jbnVtX18wMTBfXG4gICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAzXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDExXyA9IHNleHBfb2ZfaW50IHBvc19jbnVtX18wMTBfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfY251bVwiOyBhcmdfXzAxMV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwOV8gPSBzZXhwX29mX2ludCBwb3NfYm9sX18wMDhfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfYm9sXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IHBvc19sbnVtX18wMDZfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfbG51bVwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwNV8gPSBzZXhwX29mX3N0cmluZyBwb3NfZm5hbWVfXzAwNF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19mbmFtZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAzX1xuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIFRoaXMgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMgUHB4X2hlcmUubGlmdF9wb3NpdGlvbl9hc19zdHJpbmcuICopXG5sZXQgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFsgcG9zX2ZuYW1lOyBcIjpcIjsgSW50LnRvX3N0cmluZyBwb3NfbG51bTsgXCI6XCI7IEludC50b19zdHJpbmcgKHBvc19jbnVtIC0gcG9zX2JvbCkgXVxuOztcblxubGV0IHRvX3N0cmluZyB7IFN0ZGxpYi5MZXhpbmcucG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgfSA9XG4gIG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbFxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaXN0MFxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mOihmIFtAbG9jYWxdKSA9XG4gIGxldCByZWMgbG9vcCB0IGZzdCBzbmQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmV2IGZzdCwgcmV2IHNuZFxuICAgIHwgeCA6OiB0IC0+XG4gICAgICAobWF0Y2ggKGYgeCA6IF8gRWl0aGVyMC50KSB3aXRoXG4gICAgICAgfCBGaXJzdCB5IC0+IGxvb3AgdCAoeSA6OiBmc3QpIHNuZFxuICAgICAgIHwgU2Vjb25kIHkgLT4gbG9vcCB0IGZzdCAoeSA6OiBzbmQpKVxuICBpblxuICBsb29wIHQgW10gW10gW0Bub250YWlsXVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU3RkbGliLnJlc3VsdCA9XG4gIHwgT2sgb2YgJ2FcbiAgfCBFcnJvciBvZiAnYlxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG5cbmxldCB0X29mX3NleHAgOlxuICAnYSAnYi5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYikgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnYSwgJ2IpIHRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDE3XyBiX18wMThfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE3XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoYV9fMDE3XywgYl9fMDE4XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJyZXN1bHQubWwudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcIm9rXCIgfCBcIk9rXCIpIGFzIF90YWdfXzAwOF8pIDo6IHNleHBfYXJnc19fMDA5XykgYXNcbiAgICAgICAgX3NleHBfXzAwN18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDA5XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDEwXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTFfID0gX29mX2FfXzAwMV8gYXJnMF9fMDEwXyBpblxuICAgICAgICAgICBPayByZXMwX18wMTFfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAwOF9cbiAgICAgICAgICAgICBfc2V4cF9fMDA3XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgX3RhZ19fMDEzXykgOjogc2V4cF9hcmdzX18wMTRfKSBhc1xuICAgICAgICBfc2V4cF9fMDEyXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTRfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTVfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYl9fMDAyXyBhcmcwX18wMTVfIGluXG4gICAgICAgICAgIEVycm9yIHJlczBfXzAxNl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDEzX1xuICAgICAgICAgICAgIF9zZXhwX18wMTJfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwib2tcIiB8IFwiT2tcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBzZXhwX18wMDRfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDI1XyBiX18wMjZfKVxuICAgICAgOiAgKChhX18wMjVfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMjVfLCBiX18wMjZfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxOV8gX29mX2JfXzAyMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDIxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDIyXyBdXG4gICAgICB8IEVycm9yIGFyZzBfXzAyM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyNF8gPSBfb2ZfYl9fMDIwXyBhcmcwX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkVycm9yXCI7IHJlczBfXzAyNF8gXVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgJ2EgJ2IuXG4gICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJPa1wiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXJyb3JcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAyN18gYl9fMDI4XyAtPlxuICBpZiBTdGRsaWIuKCA9PSApIGFfXzAyN18gYl9fMDI4X1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDI3XywgYl9fMDI4XyB3aXRoXG4gICAgfCBPayBfYV9fMDI5XywgT2sgX2JfXzAzMF8gLT4gX2NtcF9fYSBfYV9fMDI5XyBfYl9fMDMwX1xuICAgIHwgT2sgXywgXyAtPiAtMVxuICAgIHwgXywgT2sgXyAtPiAxXG4gICAgfCBFcnJvciBfYV9fMDMxXywgRXJyb3IgX2JfXzAzMl8gLT4gX2NtcF9fYiBfYV9fMDMxXyBfYl9fMDMyXylcbjs7XG5cbmxldCBlcXVhbCA6XG4gICdhICdiLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG4gID1cbiAgZnVuIF9jbXBfX2EgX2NtcF9fYiBhX18wMzNfIGJfXzAzNF8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMzNfIGJfXzAzNF9cbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAzM18sIGJfXzAzNF8gd2l0aFxuICAgIHwgT2sgX2FfXzAzNV8sIE9rIF9iX18wMzZfIC0+IF9jbXBfX2EgX2FfXzAzNV8gX2JfXzAzNl9cbiAgICB8IE9rIF8sIF8gLT4gZmFsc2VcbiAgICB8IF8sIE9rIF8gLT4gZmFsc2VcbiAgICB8IEVycm9yIF9hX18wMzdfLCBFcnJvciBfYl9fMDM4XyAtPiBfY21wX19iIF9hX18wMzdfIF9iX18wMzhfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBhIGIuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChhLCBiKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IE9rIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9hIGhzdiBfYTBcbiAgfCBFcnJvciBfYTAgLT5cbiAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgbGV0IGhzdiA9IGhzdiBpblxuICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZ2xvYmFsaXplID0gZ2xvYmFsaXplX3Jlc3VsdFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICAgIHwgT2sgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCByZXR1cm4geCA9IE9rIHhcbiAgZW5kKVxuXG5sZXQgaW52YXJpYW50IGNoZWNrX29rIGNoZWNrX2Vycm9yIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBvayAtPiBjaGVja19vayBva1xuICB8IEVycm9yIGVycm9yIC0+IGNoZWNrX2Vycm9yIGVycm9yXG47O1xuXG5sZXQgZmFpbCB4ID0gRXJyb3IgeFxubGV0IGZhaWxmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBmYWlsIGZvcm1hdFxuXG5sZXQgbWFwX2Vycm9yIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBfIGFzIHggLT4geFxuICB8IEVycm9yIHggLT4gRXJyb3IgKGYgeClcbjs7XG5cbm1vZHVsZSBFcnJvciA9IE1vbmFkLk1ha2UyX2xvY2FsIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IGJpbmQgeCB+ZiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT2sgXyBhcyBvayAtPiBva1xuICAgICAgfCBFcnJvciBlIC0+IGYgZVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBfZXJyb3JcbiAgICBsZXQgcmV0dXJuIGUgPSBFcnJvciBlXG4gIGVuZClcblxubGV0IGlzX29rID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfZXJyb3IgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gZmFsc2VcbiAgfCBFcnJvciBfIC0+IHRydWVcbjs7XG5cbmxldCBvayA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBTb21lIHhcbiAgfCBFcnJvciBfIC0+IE5vbmVcbjs7XG5cbmxldCBlcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBOb25lXG4gIHwgRXJyb3IgeCAtPiBTb21lIHhcbjs7XG5cbmxldCBvZl9vcHRpb24gb3B0IH5lcnJvciA9XG4gIG1hdGNoIG9wdCB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+IEVycm9yIGVycm9yXG47O1xuXG5sZXQgaXRlciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgeCAtPiBmIHhcbiAgfCBFcnJvciBfIC0+ICgpXG47O1xuXG5sZXQgaXRlcl9lcnJvciB2IH5mID1cbiAgbWF0Y2ggdiB3aXRoXG4gIHwgT2sgXyAtPiAoKVxuICB8IEVycm9yIHggLT4gZiB4XG47O1xuXG5sZXQgdG9fZWl0aGVyIDogXyB0IC0+IF8gRWl0aGVyLnQgPSBmdW5jdGlvblxuICB8IE9rIHggLT4gRmlyc3QgeFxuICB8IEVycm9yIHggLT4gU2Vjb25kIHhcbjs7XG5cbmxldCBvZl9laXRoZXIgOiBfIEVpdGhlci50IC0+IF8gdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBPayB4XG4gIHwgU2Vjb25kIHggLT4gRXJyb3IgeFxuOztcblxubGV0IG9rX2lmX3RydWUgYm9vbCB+ZXJyb3IgPSBpZiBib29sIHRoZW4gT2sgKCkgZWxzZSBFcnJvciBlcnJvclxuXG5sZXQgdHJ5X3dpdGggZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBva19leG4gPSBmdW5jdGlvblxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbmxldCBva19vcl9mYWlsd2l0aCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3Igc3RyIC0+IGZhaWx3aXRoIHN0clxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlICgnb2ssICdlcnIpIF9yZXN1bHQgPSAoJ29rLCAnZXJyKSB0ID1cbiAgICB8IE9rIG9mICdva1xuICAgIHwgRXJyb3Igb2YgJ2VyclxuXG4gIGxldCBpc19lcnJvciA9IGlzX2Vycm9yXG4gIGxldCBpc19vayA9IGlzX29rXG5lbmRcblxubGV0IGNvbWJpbmUgdDEgdDIgfm9rIH5lcnIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IE9rIF8sIEVycm9yIGUgfCBFcnJvciBlLCBPayBfIC0+IEVycm9yIGVcbiAgfCBPayBvazEsIE9rIG9rMiAtPiBPayAob2sgb2sxIG9rMilcbiAgfCBFcnJvciBlcnIxLCBFcnJvciBlcnIyIC0+IEVycm9yIChlcnIgZXJyMSBlcnIyKVxuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0MS5wYXJ0aXRpb25fbWFwIGwgfmY6dG9fZWl0aGVyIGluXG4gIG1hdGNoIGVycnMgd2l0aFxuICB8IFtdIC0+IE9rIG9rXG4gIHwgXyA6OiBfIC0+IEVycm9yIGVycnNcbjs7XG5cbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBtYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmcgZm9yIGV4cG9ydCBvbmx5ICopXG5sZXQgb2tfZnN0ID0gdG9fZWl0aGVyXG4iLCIoKiogUHJvdmlkZXMgZ2VuZXJpYyBzaWduYXR1cmVzIGZvciBjb250YWluZXIgZGF0YSBzdHJ1Y3R1cmVzLlxuXG4gICAgVGhlc2Ugc2lnbmF0dXJlcyBpbmNsdWRlIGZ1bmN0aW9ucyAoW2l0ZXJdLCBbZm9sZF0sIFtleGlzdHNdLCBbZm9yX2FsbF0sIC4uLikgdGhhdFxuICAgIHlvdSB3b3VsZCBleHBlY3QgdG8gZmluZCBpbiBhbnkgY29udGFpbmVyLiBVc2VkIGJ5IGluY2x1ZGluZyBbQ29udGFpbmVyLlMwXSBvclxuICAgIFtDb250YWluZXIuUzFdIGluIHRoZSBzaWduYXR1cmUgZm9yIGV2ZXJ5IGNvbnRhaW5lci1saWtlIGRhdGEgc3RydWN0dXJlIChbQXJyYXldLFxuICAgIFtMaXN0XSwgW1N0cmluZ10sIC4uLikgdG8gZW5zdXJlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UuICopXG5cbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICgqKiBbQ29udGludWVfb3Jfc3RvcC50XSBpcyB1c2VkIGJ5IHRoZSBbZl0gYXJndW1lbnQgdG8gW2ZvbGRfdW50aWxdIGluIG9yZGVyIHRvXG4gICAgICBpbmRpY2F0ZSB3aGV0aGVyIGZvbGRpbmcgc2hvdWxkIGNvbnRpbnVlLCBvciBzdG9wIGVhcmx5LlxuXG4gICAgICBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3BcbiAgKilcbiAgbW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgfCBDb250aW51ZSBvZiAnYVxuICAgICAgfCBTdG9wIG9mICdiXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgRXhwb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuQ29udGFpbmVyLlN1bW1hYmxlICopXG5tb2R1bGUgdHlwZSBTdW1tYWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiogVGhlIHJlc3VsdCBvZiBzdW1taW5nIG5vIHZhbHVlcy4gKilcbiAgdmFsIHplcm8gOiB0XG5cbiAgKCoqIEFuIG9wZXJhdGlvbiB0aGF0IGNvbWJpbmVzIHR3byBbdF0ncyBhbmQgaGFuZGxlcyBbemVybyArIHhdIGJ5IGp1c3QgcmV0dXJuaW5nIFt4XSxcbiAgICAgIGFzIHdlbGwgYXMgaW4gdGhlIHN5bW1ldHJpYyBjYXNlLiAqKVxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lciAtIGEgY29udGFpbmVyIGZvciBhIHNwZWNpZmljIGVsZW1lbnQgdHlwZSwgZS5nLixcbiAgICBzdHJpbmcsIHdoaWNoIGlzIGEgY29udGFpbmVyIG9mIGNoYXJhY3RlcnMgKFt0eXBlIGVsdCA9IGNoYXJdKSBhbmQgbmV2ZXIgb2YgYW55dGhpbmdcbiAgICBlbHNlLiAqKVxubW9kdWxlIHR5cGUgUzAgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgZWx0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiB0IC0+IGVsdCAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuXG4gICgqKiBbaXRlcl0gbXVzdCBhbGxvdyBleGNlcHRpb25zIHJhaXNlZCBpbiBbZl0gdG8gZXNjYXBlLCB0ZXJtaW5hdGluZyB0aGUgaXRlcmF0aW9uXG4gICAgICBjbGVhbmx5LiAgVGhlIHNhbWUgaG9sZHMgZm9yIGFsbCBmdW5jdGlvbnMgYmVsb3cgdGFraW5nIGFuIFtmXS4gKilcbiAgdmFsIGl0ZXIgOiB0IC0+IGY6KChlbHQgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gJ2FjYylbQGxvY2FsXSkgLT4gJ2FjY1xuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IHQgLT4gZjooKGVsdCAtPiAnc3VtKVtAbG9jYWxdKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSBmaXJzdCBldmFsdWF0aW9uIG9mIFtmXSB0aGF0IHJldHVybnMgW1NvbWVdLCBhbmQgcmV0dXJucyBbTm9uZV0gaWYgdGhlcmVcbiAgICAgIGlzIG5vIHN1Y2ggZWxlbWVudC4gICopXG4gIHZhbCBmaW5kX21hcCA6IHQgLT4gZjooKGVsdCAtPiAnYSBvcHRpb24pW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwLiBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBjb21wYXJlOigoZWx0IC0+IGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gY29tcGFyZTooKGVsdCAtPiBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IF8gdCAtPiBlbHQgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IF8gdCAtPiBib29sXG4gIHZhbCBpdGVyIDogXyB0IC0+IGY6KChlbHQgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiBfIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+IGVsdCAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICBfIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaF0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCB0aGUgZmluYWwgcmVzdWx0XG4gICAgICBpcyBjb21wdXRlZCBieSBbZmluaXNoXS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBtYXliZV9uZWdhdGl2ZSA9XG4gICAgICAgICAgfCBGb3VuZF9uZWdhdGl2ZSBvZiBpbnRcbiAgICAgICAgICB8IEFsbF9ub25uZWdhdGl2ZSBvZiB7IHN1bSA6IGludCB9XG5cbiAgICAgICAgKCoqIFtmaXJzdF9uZWdfb3Jfc3VtIGxpc3RdIHJldHVybnMgdGhlIGZpcnN0IG5lZ2F0aXZlIG51bWJlciBpbiBbbGlzdF0sIGlmIGFueSxcbiAgICAgICAgICAgIG90aGVyd2lzZSByZXR1cm5zIHRoZSBzdW0gb2YgdGhlIGxpc3QuICopXG4gICAgICAgIGxldCBmaXJzdF9uZWdfb3Jfc3VtID1cbiAgICAgICAgICBMaXN0LmZvbGRfdW50aWwgfmluaXQ6MFxuICAgICAgICAgICAgfmY6KGZ1biBzdW0geCAtPlxuICAgICAgICAgICAgICBpZiB4IDwgMFxuICAgICAgICAgICAgICB0aGVuIFN0b3AgKEZvdW5kX25lZ2F0aXZlIHgpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUgKHN1bSArIHgpKVxuICAgICAgICAgICAgfmZpbmlzaDooZnVuIHN1bSAtPiBBbGxfbm9ubmVnYXRpdmUgeyBzdW0gfSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeCA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IDM7IDQ7IDVdXG4gICAgICAgIHZhbCB4IDogbWF5YmVfbmVnYXRpdmUgPSBBbGxfbm9ubmVnYXRpdmUge3N1bSA9IDE1fVxuXG4gICAgICAgIGxldCB5ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgLTM7IDQ7IDVdXG4gICAgICAgIHZhbCB5IDogbWF5YmVfbmVnYXRpdmUgPSBGb3VuZF9uZWdhdGl2ZSAtM1xuICAgICAgXX0gKilcbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBfIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiBlbHQgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogXyB0IC0+IGY6KChlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiBfIHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuIFRoZSBvcmRlciBpbiB3aGljaCB0aGVcbiAgICAgIGVsZW1lbnRzIHdpbGwgYmUgc3VtbWVkIGlzIHVuc3BlY2lmaWVkLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gXyB0XG4gICAgLT4gZjooKGVsdCAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IF8gdCAtPiBmOigoZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiBfIHQgLT4gZjooKGVsdCAtPiAnYSBvcHRpb24pW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogXyB0IC0+IGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6IF8gdCAtPiBlbHQgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbiwgb3IgW05vbmVdIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGVtcHR5LiAgSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgIGVuY291bnRlcmVkIHdoaWxlIHRyYXZlcnNpbmcgdGhlIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuICopXG4gIHZhbCBtaW5fZWx0IDogXyB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogXyB0IC0+IGNvbXBhcmU6KChlbHQgLT4gZWx0IC0+IGludClbQGxvY2FsXSkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIHBvbHltb3JwaGljIGNvbnRhaW5lciwgZS5nLiwgWydhIGxpc3RdIG9yIFsnYSBhcnJheV0uICopXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGVxdWFsOigoJ2EgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmb2xkIHQgfmluaXQgfmZdIHJldHVybnMgW2YgKC4uLiBmIChmIChmIGluaXQgZTEpIGUyKSBlMyAuLi4pIGVuXSwgd2hlcmUgW2UxLi5lbl1cbiAgICAgIGFyZSB0aGUgZWxlbWVudHMgb2YgW3RdICAqKVxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2ZvbGRfcmVzdWx0IHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXSB0aGF0IHJ1bnMgaW4gdGhlXG4gICAgICBbUmVzdWx0XSBtb25hZC4gIElmIFtmXSByZXR1cm5zIGFuIFtFcnJvciBfXSwgdGhhdCB2YWx1ZSBpcyByZXR1cm5lZCB3aXRob3V0IGFueVxuICAgICAgYWRkaXRpb25hbCBpbnZvY2F0aW9ucyBvZiBbZl0uICopXG4gIHZhbCBmb2xkX3Jlc3VsdFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICdhIHRcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbmltdW0gKHJlc3AgbWF4aW11bSkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZFxuICAgICAgW2NvbXBhcmVdIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdFxuICAgICAgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5IGFzIFtmb2xkXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTMV9waGFudG9tID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuXG4gICgqKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvdmlkZWQgZWxlbWVudCBpcyB0aGVyZSwgdXNpbmcgW2VxdWFsXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBwcm92aWRlZFxuICAgICAgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXS4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIFt0cnVlXSBmb3IgYWxsXG4gICAgICBlbGVtZW50cy4gIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdGlvbi4gKilcbiAgdmFsIGZvcl9hbGwgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdzdW0pW0Bsb2NhbF0pXG4gICAgLT4gJ3N1bVxuXG4gICgqKiBSZXR1cm5zIGFzIGFuIFtvcHRpb25dIHRoZSBmaXJzdCBlbGVtZW50IGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBmaW5kIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbiAocmVzcCBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWUgY29tcGxleGl0eVxuICAgICAgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IC0+IGVxdWFsOigoJ2EgZWx0IC0+ICdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZm9sZCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gKCdhY2MsICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IGZpbmlzaDooKCdhY2MgLT4gJ2ZpbmFsKVtAbG9jYWxdKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIGVsdCAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2xpc3QgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBhcnJheVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOigoJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooKCdhIGVsdCAtPiAnYSBlbHQgLT4gaW50KVtAbG9jYWxdKSAtPiAnYSBlbHQgb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzBfd2l0aF9jcmVhdG9ycyA9IHNpZ1xuICBpbmNsdWRlIFMwXG5cbiAgdmFsIG9mX2xpc3QgOiBlbHQgbGlzdCAtPiB0XG4gIHZhbCBvZl9hcnJheSA6IGVsdCBhcnJheSAtPiB0XG5cbiAgKCoqIEUuZy4sIFthcHBlbmQgKG9mX2xpc3QgW2E7IGJdKSAob2ZfbGlzdCBbYzsgZDsgZV0pXSBpcyBbb2ZfbGlzdCBbYTsgYjsgYzsgZDsgZV1dICopXG4gIHZhbCBhcHBlbmQgOiB0IC0+IHQgLT4gdFxuXG4gICgqKiBDb25jYXRlbmF0ZXMgYSBuZXN0ZWQgY29udGFpbmVyLiBUaGUgZWxlbWVudHMgb2YgdGhlIGlubmVyIGNvbnRhaW5lcnMgYXJlXG4gICAgICBjb25jYXRlbmF0ZWQgdG9nZXRoZXIgaW4gb3JkZXIgdG8gZ2l2ZSB0aGUgcmVzdWx0LiAqKVxuICB2YWwgY29uY2F0IDogdCBsaXN0IC0+IHRcblxuICAoKiogW21hcCBmIChvZl9saXN0IFthMTsgLi4uOyBhbl0pXSBhcHBsaWVzIFtmXSB0byBbYTFdLCBbYTJdLCAuLi4sIFthbl0sIGluIG9yZGVyLCBhbmRcbiAgICAgIGJ1aWxkcyBhIHJlc3VsdCBlcXVpdmFsZW50IHRvIFtvZl9saXN0IFtmIGExOyAuLi47IGYgYW5dXS4gKilcbiAgdmFsIG1hcCA6IHQgLT4gZjooKGVsdCAtPiBlbHQpW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIGFsbCB0aGUgZWxlbWVudHMgb2YgW3RdIHRoYXQgc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXS4gKilcbiAgdmFsIGZpbHRlciA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiB0XG5cbiAgKCoqIFtmaWx0ZXJfbWFwIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGV2ZXJ5IFt4XSBpbiBbdF0uIFRoZSByZXN1bHQgY29udGFpbnMgZXZlcnkgW3ldIGZvclxuICAgICAgd2hpY2ggW2YgeF0gcmV0dXJucyBbU29tZSB5XS4gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiB0IC0+IGY6KChlbHQgLT4gZWx0IG9wdGlvbilbQGxvY2FsXSkgLT4gdFxuXG4gICgqKiBbY29uY2F0X21hcCB0IH5mXSBpcyBlcXVpdmFsZW50IHRvIFtjb25jYXQgKG1hcCB0IH5mKV0uICopXG4gIHZhbCBjb25jYXRfbWFwIDogdCAtPiBmOigoZWx0IC0+IHQpW0Bsb2NhbF0pIC0+IHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mXSByZXR1cm5zIGEgcGFpciBbdDEsIHQyXSwgd2hlcmUgW3QxXSBpcyBhbGwgZWxlbWVudHMgb2YgW3RdIHRoYXRcbiAgICAgIHNhdGlzZnkgW2ZdLCBhbmQgW3QyXSBpcyBhbGwgZWxlbWVudHMgb2YgW3RdIHRoYXQgZG8gbm90IHNhdGlzZnkgW2ZdLiBUaGUgXCJ0ZlwiXG4gICAgICBzdWZmaXggaXMgbW5lbW9uaWMgdG8gcmVtaW5kIHJlYWRlcnMgdGhhdCB0aGUgcmVzdWx0IGlzICh0cnVlcywgZmFsc2VzKS4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6IHQgLT4gZjooKGVsdCAtPiBib29sKVtAbG9jYWxdKSAtPiB0ICogdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mXSBwYXJ0aXRpb25zIFt0XSBhY2NvcmRpbmcgdG8gW2ZdLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6IHQgLT4gZjooKGVsdCAtPiAoZWx0LCBlbHQpIEVpdGhlcjAudClbQGxvY2FsXSkgLT4gdCAqIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMV93aXRoX2NyZWF0b3JzID0gc2lnXG4gIGluY2x1ZGUgUzFcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBhcnJheSAtPiAnYSB0XG5cbiAgKCoqIEUuZy4sIFthcHBlbmQgKG9mX2xpc3QgWzE7IDJdKSAob2ZfbGlzdCBbMzsgNDsgNV0pXSBpcyBbb2ZfbGlzdCBbMTsgMjsgMzsgNDsgNV1dICopXG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuXG4gICgqKiBDb25jYXRlbmF0ZXMgYSBuZXN0ZWQgY29udGFpbmVyLiBUaGUgZWxlbWVudHMgb2YgdGhlIGlubmVyIGNvbnRhaW5lcnMgYXJlXG4gICAgICBjb25jYXRlbmF0ZWQgdG9nZXRoZXIgaW4gb3JkZXIgdG8gZ2l2ZSB0aGUgcmVzdWx0LiAqKVxuICB2YWwgY29uY2F0IDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW21hcCBmIChvZl9saXN0IFthMTsgLi4uOyBhbl0pXSBhcHBsaWVzIFtmXSB0byBbYTFdLCBbYTJdLCAuLi4sIFthbl0sIGluIG9yZGVyLCBhbmRcbiAgICAgIGJ1aWxkcyBhIHJlc3VsdCBlcXVpdmFsZW50IHRvIFtvZl9saXN0IFtmIGExOyAuLi47IGYgYW5dXS4gKilcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG5cbiAgKCoqIFtmaWx0ZXIgdCB+Zl0gcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIG9mIFt0XSB0aGF0IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbZl0uICopXG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0XG5cbiAgKCoqIFtmaWx0ZXJfbWFwIHQgfmZdIGFwcGxpZXMgW2ZdIHRvIGV2ZXJ5IFt4XSBpbiBbdF0uIFRoZSByZXN1bHQgY29udGFpbnMgZXZlcnkgW3ldIGZvclxuICAgICAgd2hpY2ggW2YgeF0gcmV0dXJucyBbU29tZSB5XS4gKilcbiAgdmFsIGZpbHRlcl9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIHRcblxuICAoKiogW2NvbmNhdF9tYXAgdCB+Zl0gaXMgZXF1aXZhbGVudCB0byBbY29uY2F0IChtYXAgdCB+ZildLiAqKVxuICB2YWwgY29uY2F0X21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIHQpW0Bsb2NhbF0pIC0+ICdiIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mXSByZXR1cm5zIGEgcGFpciBbdDEsIHQyXSwgd2hlcmUgW3QxXSBpcyBhbGwgZWxlbWVudHMgb2YgW3RdIHRoYXRcbiAgICAgIHNhdGlzZnkgW2ZdLCBhbmQgW3QyXSBpcyBhbGwgZWxlbWVudHMgb2YgW3RdIHRoYXQgZG8gbm90IHNhdGlzZnkgW2ZdLiBUaGUgXCJ0ZlwiXG4gICAgICBzdWZmaXggaXMgbW5lbW9uaWMgdG8gcmVtaW5kIHJlYWRlcnMgdGhhdCB0aGUgcmVzdWx0IGlzICh0cnVlcywgZmFsc2VzKS4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHQgKiAnYSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwIHQgfmZdIHBhcnRpdGlvbnMgW3RdIGFjY29yZGluZyB0byBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogJ2EgdCAtPiBmOigoJ2EgLT4gKCdiLCAnYykgRWl0aGVyMC50KVtAbG9jYWxdKSAtPiAnYiB0ICogJ2MgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWNfd2l0aF9jcmVhdG9ycyA9IHNpZ1xuICB0eXBlIChfLCBfKSBjb25jYXRcblxuICBpbmNsdWRlIEdlbmVyaWNcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGVsdCBsaXN0IC0+ICgnYSwgXykgdFxuICB2YWwgb2ZfYXJyYXkgOiAnYSBlbHQgYXJyYXkgLT4gKCdhLCBfKSB0XG4gIHZhbCBhcHBlbmQgOiAoJ2EsICdwKSB0IC0+ICgnYSwgJ3ApIHQgLT4gKCdhLCAncCkgdFxuICB2YWwgY29uY2F0IDogKCgnYSwgJ3ApIHQsICdwKSBjb25jYXQgLT4gKCdhLCAncCkgdFxuICB2YWwgbWFwIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+ICdiIGVsdClbQGxvY2FsXSkgLT4gKCdiLCAncCkgdFxuICB2YWwgZmlsdGVyIDogKCdhLCAncCkgdCAtPiBmOigoJ2EgZWx0IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ3ApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gJ2IgZWx0IG9wdGlvbilbQGxvY2FsXSkgLT4gKCdiLCAncCkgdFxuICB2YWwgY29uY2F0X21hcCA6ICgnYSwgJ3ApIHQgLT4gZjooKCdhIGVsdCAtPiAoJ2IsICdwKSB0KVtAbG9jYWxdKSAtPiAoJ2IsICdwKSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdwKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAncCkgdCAqICgnYSwgJ3ApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnYSwgJ3ApIHRcbiAgICAtPiBmOigoJ2EgZWx0IC0+ICgnYiBlbHQsICdjIGVsdCkgRWl0aGVyMC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgJ3ApIHQgKiAoJ2MsICdwKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9nZW5fYXJnID0gc2lnXG4gIHR5cGUgKCdhLCAncGhhbnRvbSkgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBmb2xkIDogKCdhLCAncGhhbnRvbSkgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgZWx0IC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogVGhlIFtpdGVyXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2l0ZXJdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lIFtpdGVyXVxuICAgICAgdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBpdGVyIHQgfmYgPSBDb250YWluZXIuaXRlciB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtpdGVyXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtpdGVyXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeVxuICAgICAgYXMgd2VsbC4gKilcbiAgdmFsIGl0ZXJcbiAgICA6IFsgYERlZmluZV91c2luZ19mb2xkXG4gICAgICB8IGBDdXN0b20gb2YgKCdhLCAncGhhbnRvbSkgdCAtPiBmOigoJ2EgZWx0IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgICAgIF1cblxuICAoKiogVGhlIFtsZW5ndGhdIGFyZ3VtZW50IHRvIFtDb250YWluZXIuTWFrZV0gc3BlY2lmaWVzIGhvdyB0byBpbXBsZW1lbnQgdGhlXG4gICAgICBjb250YWluZXIncyBbbGVuZ3RoXSBmdW5jdGlvbi4gIFtgRGVmaW5lX3VzaW5nX2ZvbGRdIG1lYW5zIHRvIGRlZmluZVxuICAgICAgW2xlbmd0aF0gdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBsZW5ndGggdCB+ZiA9IENvbnRhaW5lci5sZW5ndGggfmZvbGQgdCB+ZlxuICAgICAgXX1cblxuICAgICAgW2BDdXN0b21dIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgcHJlc3VtYWJseSB3aXRoIHNvbWV0aGluZyBtb3JlXG4gICAgICBlZmZpY2llbnQuICBTZXZlcmFsIG90aGVyIGZ1bmN0aW9ucyByZXR1cm5lZCBieSBbQ29udGFpbmVyLk1ha2VdIGFyZSBkZWZpbmVkIGluXG4gICAgICB0ZXJtcyBvZiBbbGVuZ3RoXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtsZW5ndGhdIHdpbGwgaW1wcm92ZSB0aGVpclxuICAgICAgZWZmaWNpZW5jeSBhcyB3ZWxsLiAqKVxuICB2YWwgbGVuZ3RoIDogWyBgRGVmaW5lX3VzaW5nX2ZvbGQgfCBgQ3VzdG9tIG9mICgnYSwgJ3BoYW50b20pIHQgLT4gaW50IF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9ICdhIHQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZTBfYXJnID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIGVuZFxuXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgTWFrZV9nZW5fYXJnIHdpdGggdHlwZSAoJ2EsIF8pIHQgOj0gdCBhbmQgdHlwZSAnYSBlbHQgOj0gRWx0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2NvbW1vbl93aXRoX2NyZWF0b3JzX2FyZyA9IHNpZ1xuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZ1xuXG4gIHR5cGUgKF8sIF8pIGNvbmNhdFxuXG4gIHZhbCBvZl9saXN0IDogJ2EgZWx0IGxpc3QgLT4gKCdhLCBfKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGVsdCBhcnJheSAtPiAoJ2EsIF8pIHRcbiAgdmFsIGNvbmNhdCA6ICgoJ2EsIF8pIHQsIF8pIGNvbmNhdCAtPiAoJ2EsIF8pIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzX2FyZyA9IHNpZ1xuICBpbmNsdWRlIE1ha2VfY29tbW9uX3dpdGhfY3JlYXRvcnNfYXJnXG5cbiAgdmFsIGNvbmNhdF9vZl9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgXykgY29uY2F0XG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV93aXRoX2NyZWF0b3JzX2FyZyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlXG4gICAgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmdcbiAgICB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9ICdhIHRcbiAgICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgIGFuZCB0eXBlICgnYSwgXykgY29uY2F0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlMF93aXRoX2NyZWF0b3JzX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlXG4gICAgTWFrZV9jb21tb25fd2l0aF9jcmVhdG9yc19hcmdcbiAgICB3aXRoIHR5cGUgKCdhLCBfKSB0IDo9IHRcbiAgICAgYW5kIHR5cGUgJ2EgZWx0IDo9IEVsdC50XG4gICAgIGFuZCB0eXBlICgnYSwgXykgY29uY2F0IDo9ICdhIGxpc3RcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gICgqKiBHZW5lcmljIGRlZmluaXRpb25zIG9mIGNvbnRhaW5lciBvcGVyYXRpb25zIGluIHRlcm1zIG9mIFtmb2xkXS5cblxuICAgICAgRS5nLjogW2l0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKV0uICopXG5cbiAgdHlwZSAoJ3QsICdhLCAnYWNjKSBmb2xkID0gJ3QgLT4gaW5pdDonYWNjIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcbiAgdHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxuICB2YWwgaXRlciA6IGZvbGQ6KCd0LCAnYSwgdW5pdCkgZm9sZCAtPiAoJ3QsICdhKSBpdGVyXG4gIHZhbCBjb3VudCA6IGZvbGQ6KCd0LCAnYSwgaW50KSBmb2xkIC0+ICd0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuICB2YWwgbWluX2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYSBvcHRpb24pIGZvbGRcbiAgICAtPiAndFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGxlbmd0aCA6IGZvbGQ6KCd0LCBfLCBpbnQpIGZvbGQgLT4gJ3QgLT4gaW50XG4gIHZhbCB0b19saXN0IDogZm9sZDooJ3QsICdhLCAnYSBsaXN0KSBmb2xkIC0+ICd0IC0+ICdhIGxpc3RcblxuICB2YWwgc3VtXG4gICAgOiAgZm9sZDooJ3QsICdhLCAnc3VtKSBmb2xkXG4gICAgLT4gKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gJ3RcbiAgICAtPiBmOigoJ2EgLT4gJ3N1bSlbQGxvY2FsXSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYWNjKSBmb2xkXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdlKSBSZXN1bHQudClbQGxvY2FsXSlcbiAgICAtPiAndFxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2FjYykgZm9sZFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICgnYWNjLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAndFxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBHZW5lcmljIGRlZmluaXRpb25zIG9mIGNvbnRhaW5lciBvcGVyYXRpb25zIGluIHRlcm1zIG9mIFtpdGVyXSBhbmQgW2xlbmd0aF0uICopXG5cbiAgdmFsIGlzX2VtcHR5IDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiAnYSAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZmluZCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX21hcCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2FycmF5IDogbGVuZ3RoOid0IGxlbmd0aCAtPiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgYXJyYXlcbmVuZFxuXG5tb2R1bGUgdHlwZSBDb250YWluZXIgPSBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cG9ydFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMCA9IFMwXG4gIG1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBTMF9waGFudG9tXG4gIG1vZHVsZSB0eXBlIFMwX3dpdGhfY3JlYXRvcnMgPSBTMF93aXRoX2NyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIFMxID0gUzFcbiAgbW9kdWxlIHR5cGUgUzFfcGhhbnRvbSA9IFMxX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzFfd2l0aF9jcmVhdG9ycyA9IFMxX3dpdGhfY3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgRGVyaXZlZCA9IERlcml2ZWRcbiAgbW9kdWxlIHR5cGUgR2VuZXJpYyA9IEdlbmVyaWNcbiAgbW9kdWxlIHR5cGUgR2VuZXJpY193aXRoX2NyZWF0b3JzID0gR2VuZXJpY193aXRoX2NyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIFN1bW1hYmxlID0gU3VtbWFibGVcblxuICBpbmNsdWRlIERlcml2ZWRcblxuICAoKiogVGhlIGlkaW9tIGZvciB1c2luZyBbQ29udGFpbmVyLk1ha2VdIGlzIHRvIGJpbmQgdGhlIHJlc3VsdGluZyBtb2R1bGUgYW5kIHRvXG4gICAgICBleHBsaWNpdGx5IGltcG9ydCBlYWNoIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBvbmUgd2FudHM6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgICBsZXQgY291bnQgICAgPSBDLmNvdW50XG4gICAgICAgIGxldCBleGlzdHMgICA9IEMuZXhpc3RzXG4gICAgICAgIGxldCBmaW5kICAgICA9IEMuZmluZFxuICAgICAgICAoKiAuLi4gKilcbiAgICAgIF19XG5cbiAgICAgIFRoaXMgaXMgcHJlZmVyYWJsZSB0bzpcblxuICAgICAge1tcbiAgICAgICAgaW5jbHVkZSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICBdfVxuXG4gICAgICBiZWNhdXNlIHRoZSBbaW5jbHVkZV0gbWFrZXMgaXQgdG9vIGVhc3kgdG8gc2hhZG93IHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICAgY29udGFpbmVyIGZ1bmN0aW9ucyAoW2xlbmd0aF0gYmVpbmcgYSBjb21tb24gb25lKS5cblxuICAgICAgW0NvbnRhaW5lci5NYWtlMF0gaXMgbGlrZSBbQ29udGFpbmVyLk1ha2VdLCBidXQgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lcnMgbGlrZVxuICAgICAgW3N0cmluZ10uICopXG4gIG1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA6IFMwIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICAgIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuXG4gIG1vZHVsZSBNYWtlX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gICAgUzFfd2l0aF9jcmVhdG9ycyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcblxuICBtb2R1bGUgTWFrZTBfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gICAgUzBfd2l0aF9jcmVhdG9ycyB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgZWx0IDo9IFQuRWx0LnRcblxuICBtb2R1bGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gICAgR2VuZXJpY193aXRoX2NyZWF0b3JzXG4gICAgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50XG4gICAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgICBhbmQgdHlwZSAoJ2EsICdwaGFudG9tKSBjb25jYXQgOj0gKCdhLCAncGhhbnRvbSkgVC5jb25jYXRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBFaXRoZXIgPSBFaXRoZXIwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIENvbnRhaW5lcl9pbnRmXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5cbnR5cGUgKCd0LCAnYSwgJ2FjY3VtKSBmb2xkID1cbiAgJ3QgLT4gaW5pdDonYWNjdW0gLT4gZjooKCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pW0Bsb2NhbF0pIC0+ICdhY2N1bVxuXG50eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxudHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxubGV0IGl0ZXIgfihmb2xkIDogKF8sIF8sIF8pIGZvbGQpIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBhIC0+IGYgYSkgW0Bub250YWlsXVxubGV0IGNvdW50IH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gYSAtPiBpZiBmIGEgdGhlbiBuICsgMSBlbHNlIG4pIFtAbm9udGFpbF1cblxubGV0IHN1bSAodHlwZSBhKSB+Zm9sZCAobW9kdWxlIE0gOiBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9IGEpIHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6TS56ZXJvIH5mOihmdW4gbiBhIC0+IE0uKCArICkgbiAoZiBhKSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHQgPVxuICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBSZXN1bHQuT2tcbiAgICAgIChmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgaXRlbSAtPlxuICAgICAgICAgbWF0Y2ggZiBhY2MgaXRlbSB3aXRoXG4gICAgICAgICB8IFJlc3VsdC5PayB4IC0+IHhcbiAgICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IHJldHVybiBlKSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIH5maW5pc2ggdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIGZpbmlzaFxuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSB4IC0+IHhcbiAgICAgICAgIHwgU3RvcCB4IC0+IHJldHVybiB4KSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtaW4gLT4gaWYgY29tcGFyZSBtaW4gZWx0ID4gMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWF4IC0+IGlmIGNvbXBhcmUgbWF4IGVsdCA8IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYykgW0Bub250YWlsXVxuOztcblxubGV0IGxlbmd0aCB+Zm9sZCBjID0gZm9sZCBjIH5pbml0OjAgfmY6KGZ1biBhY2MgXyAtPiBhY2MgKyAxKVxuXG5sZXQgaXNfZW1wdHkgfml0ZXIgYyA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIF8gLT4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgbWVtIH5pdGVyIGMgeCB+ZXF1YWwgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB5IC0+IGlmIGVxdWFsIHggeSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZXhpc3RzIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9yX2FsbCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBub3QgKGYgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSkgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRfbWFwIH5pdGVyIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIHQgfmY6KGZ1biB4IC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gci5yZXR1cm4gcmVzKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiAoU29tZSB4KSk7XG4gICAgTm9uZSkgW0Bub250YWlsXVxuOztcblxubGV0IHRvX2xpc3QgfmZvbGQgYyA9IExpc3QucmV2IChmb2xkIGMgfmluaXQ6W10gfmY6KGZ1biBhY2MgeCAtPiB4IDo6IGFjYykpXG5cbmxldCB0b19hcnJheSB+bGVuZ3RoIH5pdGVyIGMgPVxuICBsZXQgYXJyYXkgPSByZWYgW3x8XSBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGl0ZXIgYyB+ZjooZnVuIHggLT5cbiAgICBpZiAhaSA9IDAgdGhlbiBhcnJheSA6PSBBcnJheS5jcmVhdGUgfmxlbjoobGVuZ3RoIGMpIHg7XG4gICAgIWFycmF5LighaSkgPC0geDtcbiAgICBpbmNyIGkpO1xuICAhYXJyYXlcbjs7XG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICBHZW5lcmljIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudCBhbmQgdHlwZSAnYSBlbHQgOj0gJ2EgVC5lbHQgPVxuc3RydWN0XG4gIGxldCBmb2xkID0gVC5mb2xkXG5cbiAgbGV0IGl0ZXIgPVxuICAgIG1hdGNoIFQuaXRlciB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXIgLT4gaXRlclxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXIgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBsZW5ndGggPVxuICAgIG1hdGNoIFQubGVuZ3RoIHdpdGhcbiAgICB8IGBDdXN0b20gbGVuZ3RoIC0+IGxlbmd0aFxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IC0+IGxlbmd0aCB+Zm9sZCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBpc19lbXB0eSB+aXRlciB0XG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IG1lbSB+aXRlciB0IHggfmVxdWFsXG4gIGxldCBzdW0gbSB0ID0gc3VtIH5mb2xkIG0gdFxuICBsZXQgY291bnQgdCB+ZiA9IGNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzIH5pdGVyIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGwgfml0ZXIgdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmQgfml0ZXIgdCB+ZlxuICBsZXQgdG9fbGlzdCB0ID0gdG9fbGlzdCB+Zm9sZCB0XG4gIGxldCB0b19hcnJheSB0ID0gdG9fYXJyYXkgfmxlbmd0aCB+aXRlciB0XG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IGZvbGRfcmVzdWx0IHQgfmZvbGQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gZm9sZF91bnRpbCB0IH5mb2xkIH5pbml0IH5mIH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTAgKFQgOiBNYWtlMF9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IHggPSBtZW0gdCB4IH5lcXVhbDpULkVsdC5lcXVhbFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlbl93aXRoX2NyZWF0b3JzIChUIDogTWFrZV9nZW5fd2l0aF9jcmVhdG9yc19hcmcpIDpcbiAgR2VuZXJpY193aXRoX2NyZWF0b3JzXG4gIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICBhbmQgdHlwZSAoJ2EsICdwaGFudG9tKSBjb25jYXQgOj0gKCdhLCAncGhhbnRvbSkgVC5jb25jYXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoVClcblxuICBsZXQgb2ZfbGlzdCA9IFQub2ZfbGlzdFxuICBsZXQgb2ZfYXJyYXkgPSBULm9mX2FycmF5XG4gIGxldCBjb25jYXQgPSBULmNvbmNhdFxuICBsZXQgY29uY2F0X29mX2FycmF5ID0gVC5jb25jYXRfb2ZfYXJyYXlcbiAgbGV0IGFwcGVuZCBhIGIgPSBjb25jYXQgKGNvbmNhdF9vZl9hcnJheSBbfCBhOyBiIHxdKVxuICBsZXQgY29uY2F0X21hcCB0IH5mID0gY29uY2F0IChjb25jYXRfb2ZfYXJyYXkgKEFycmF5Lm1hcCAodG9fYXJyYXkgdCkgfmYpKVxuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICAgIGNvbmNhdF9tYXAgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gb2ZfYXJyYXkgW3x8XVxuICAgICAgfCBTb21lIHkgLT4gb2ZfYXJyYXkgW3wgeSB8XSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gU29tZSAoZiB4KSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cblxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5tYXAgKHRvX2FycmF5IHQpIH5mIGluXG4gICAgbGV0IHhzID1cbiAgICAgIEFycmF5LmZvbGRfcmlnaHQgYXJyYXkgfmluaXQ6W10gfmY6KGZ1biBlaXRoZXIgYWNjIC0+XG4gICAgICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgICAgIHwgRmlyc3QgeCAtPiB4IDo6IGFjY1xuICAgICAgICB8IFNlY29uZCBfIC0+IGFjYylcbiAgICBpblxuICAgIGxldCB5cyA9XG4gICAgICBBcnJheS5mb2xkX3JpZ2h0IGFycmF5IH5pbml0OltdIH5mOihmdW4gZWl0aGVyIGFjYyAtPlxuICAgICAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IF8gLT4gYWNjXG4gICAgICAgIHwgU2Vjb25kIHggLT4geCA6OiBhY2MpXG4gICAgaW5cbiAgICBvZl9saXN0IHhzLCBvZl9saXN0IHlzXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgICBwYXJ0aXRpb25fbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIEZpcnN0IHggZWxzZSBTZWNvbmQgeCkgW0Bub250YWlsXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfY3JlYXRvcnMgKFQgOiBNYWtlX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgVC50XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTBfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2UwX3dpdGhfY3JlYXRvcnNfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBjb25jYXRfb2ZfYXJyYXkgPSBBcnJheS50b19saXN0XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbmluY2x1ZGUgSW5kZXhlZF9jb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgaXRlcmkgfmZvbGQgdCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgdiAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyB2IGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgY291bnRpIH5mb2xkaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaSBuIGEgLT4gaWYgZiBpIGEgdGhlbiBuICsgMSBlbHNlIG4pIFtAbm9udGFpbF1cbjs7XG5cbmxldCBleGlzdHNpIH5pdGVyaSBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlcmkgYyB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9yX2FsbGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIG5vdCAoZiBpIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcGkgfml0ZXJpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiAoU29tZSAoaSwgeCkpKTtcbiAgICBOb25lKSBbQG5vbnRhaWxdXG47O1xuXG4oKiBBbGxvd3MgW01ha2VfZ2VuXSB0byBzaGFyZSBhIFtDb250YWluZXIuR2VuZXJpY10gaW1wbGVtZW50YXRpb24gd2l0aCwgZS5nLixcbiAgIFtDb250YWluZXIuTWFrZV9nZW5fd2l0aF9jcmVhdG9yc10uICopXG5tb2R1bGUgTWFrZV9nZW5fd2l0aF9jb250YWluZXJcbiAgICAoVCA6IE1ha2VfZ2VuX2FyZylcbiAgICAoQyA6IENvbnRhaW5lci5HZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdwaGFudG9tKSB0IDo9ICgnYSwgJ3BoYW50b20pIFQudFxuICAgICAgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0KSA6XG4gIEdlbmVyaWMgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBDXG5cbiAgbGV0IGl0ZXJpID1cbiAgICBtYXRjaCBULml0ZXJpIHdpdGhcbiAgICB8IGBDdXN0b20gaXRlcmkgLT4gaXRlcmlcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+ZiAtPiBpdGVyaSB+Zm9sZCB0IH5mXG4gIDs7XG5cbiAgbGV0IGZvbGRpID1cbiAgICBtYXRjaCBULmZvbGRpIHdpdGhcbiAgICB8IGBDdXN0b20gZm9sZGkgLT4gZm9sZGlcbiAgICB8IGBEZWZpbmVfdXNpbmdfZm9sZCAtPiBmdW4gdCB+aW5pdCB+ZiAtPiBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IGNvdW50aSB0IH5mID0gY291bnRpIH5mb2xkaSB0IH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBleGlzdHNpIH5pdGVyaSB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gZm9yX2FsbGkgfml0ZXJpIHQgfmZcbiAgbGV0IGZpbmRfbWFwaSB0IH5mID0gZmluZF9tYXBpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kaSB0IH5mID0gZmluZGkgfml0ZXJpIHQgfmZcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDpcbiAgR2VuZXJpYyB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnQgYW5kIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlX2dlbiAoVClcbiAgaW5jbHVkZSBDXG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jb250YWluZXIgKFQpIChDKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW4gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIHR5cGUgKCdhLCBfKSB0ID0gJ2EgVC50XG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoXywgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCB4ID0gbWVtIHQgeCB+ZXF1YWw6VC5FbHQuZXF1YWxcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2VfZ2VuX3dpdGhfY3JlYXRvcnNfYXJnKSA6XG4gIEdlbmVyaWNfd2l0aF9jcmVhdG9yc1xuICB3aXRoIHR5cGUgKCdhLCAncGhhbnRvbSkgdCA6PSAoJ2EsICdwaGFudG9tKSBULnRcbiAgIGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuICAgYW5kIHR5cGUgKCdhLCAncGhhbnRvbSkgY29uY2F0IDo9ICgnYSwgJ3BoYW50b20pIFQuY29uY2F0ID0gc3RydWN0XG4gIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2VfZ2VuX3dpdGhfY3JlYXRvcnMgKFQpXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIE1ha2VfZ2VuX3dpdGhfY29udGFpbmVyIChUKSAoQylcblxuICBsZXQgZGVyaXZlZF9pbml0IG4gfmYgPSBvZl9hcnJheSAoQXJyYXkuaW5pdCBuIH5mKVxuXG4gIGxldCBpbml0ID1cbiAgICBtYXRjaCBULmluaXQgd2l0aFxuICAgIHwgYEN1c3RvbSBpbml0IC0+IGluaXRcbiAgICB8IGBEZWZpbmVfdXNpbmdfb2ZfYXJyYXkgLT4gZGVyaXZlZF9pbml0XG4gIDs7XG5cbiAgbGV0IGRlcml2ZWRfY29uY2F0X21hcGkgdCB+ZiA9IGNvbmNhdCAoVC5jb25jYXRfb2ZfYXJyYXkgKEFycmF5Lm1hcGkgKHRvX2FycmF5IHQpIH5mKSlcblxuICBsZXQgY29uY2F0X21hcGkgPVxuICAgIG1hdGNoIFQuY29uY2F0X21hcGkgd2l0aFxuICAgIHwgYEN1c3RvbSBjb25jYXRfbWFwaSAtPiBjb25jYXRfbWFwaVxuICAgIHwgYERlZmluZV91c2luZ19jb25jYXQgLT4gZGVyaXZlZF9jb25jYXRfbWFwaVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgICBjb25jYXRfbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gb2ZfYXJyYXkgW3x8XVxuICAgICAgfCBTb21lIHkgLT4gb2ZfYXJyYXkgW3wgeSB8XSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtYXBpIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IFNvbWUgKGYgaSB4KSkgW0Bub250YWlsXVxuXG4gIGxldCBmaWx0ZXJpIHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKSBbQG5vbnRhaWxdXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9jcmVhdG9ycyAoVCA6IE1ha2Vfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICAgIHR5cGUgKCdhLCBfKSBjb25jYXQgPSAnYSBULnRcblxuICAgICAgbGV0IGNvbmNhdF9vZl9hcnJheSA9IG9mX2FycmF5XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlMF93aXRoX2NyZWF0b3JzIChUIDogTWFrZTBfd2l0aF9jcmVhdG9yc19hcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZW5fd2l0aF9jcmVhdG9ycyAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAoXywgXykgdCA9IFQudFxuICAgICAgdHlwZSAnYSBlbHQgPSBULkVsdC50XG4gICAgICB0eXBlICgnYSwgXykgY29uY2F0ID0gJ2EgbGlzdFxuXG4gICAgICBsZXQgY29uY2F0X29mX2FycmF5ID0gQXJyYXkudG9fbGlzdFxuICAgIGVuZClcblxuICBsZXQgbWVtIHQgeCA9IG1lbSB0IHggfmVxdWFsOlQuRWx0LmVxdWFsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGRsaWIuTGF6eVxuXG50eXBlICdhIHQgPSAnYSBsYXp5X3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9IGxhenlfdF9vZl9zZXhwXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9sYXp5X3RcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBsYXp5X3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbmV4dGVybmFsIGZvcmNlIDogKCdhIHRbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBtYXAgdCB+ZiA9IGxhenkgKGYgKGZvcmNlIHQpKVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gMCBlbHNlIGNvbXBhcmVfYSAoZm9yY2UgdDEpIChmb3JjZSB0Milcbjs7XG5cbmxldCBlcXVhbCBlcXVhbF9hIHQxIHQyID0gaWYgcGh5c19lcXVhbCB0MSB0MiB0aGVuIHRydWUgZWxzZSBlcXVhbF9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxubGV0IGhhc2hfZm9sZF90ID0gSGFzaC5CdWlsdGluLmhhc2hfZm9sZF9sYXp5X3RcbmxldCBwZWVrIHQgPSBpZiBpc192YWwgdCB0aGVuIFNvbWUgKGZvcmNlIHQpIGVsc2UgTm9uZVxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuIHggPSBmcm9tX3ZhbCB4XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGxhenkgKGZvcmNlIChmIChmb3JjZSB0KSkpXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBUX3VuZm9yY2luZyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIGlzX3ZhbCB0IHRoZW4gc2V4cF9vZl9hIChmb3JjZSB0KSBlbHNlIHNleHBfb2Zfc3RyaW5nIFwiPHVuZm9yY2VkIGxhenk+XCJcbiAgOztcbmVuZFxuIiwiKCogU3BsaXQgb2ZmIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3kgd2l0aCBbT3JfZXJyb3JdLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgcG9zaXRpb246ICVkXCIgcG9zICgpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgbGVuZ3RoOiAlZFwiIGxlbiAoKTtcbiAgKCogV2UgdXNlIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiB0b3RhbF9sZW5ndGhdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicG9zICsgbGVuIHBhc3QgZW5kOiAlZCArICVkID4gJWRcIiBwb3MgbGVuIHRvdGFsX2xlbmd0aCAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gICgqIFRoaXMgaXMgYmV0dGVyIHRoYW4gW3Nsb3dfY2hlY2tfcG9zX2xlbl9leG5dIGZvciB0d28gcmVhc29uczpcblxuICAgICAtIG11Y2ggbGVzcyBpbmxpbmVkIGNvZGVcbiAgICAgLSBvbmx5IG9uZSBjb25kaXRpb25hbCBqdW1wXG5cbiAgICAgVGhlIHJlYXNvbiBpdCB3b3JrcyBpcyB0aGF0IGNoZWNraW5nIFs8IDBdIGlzIHRlc3RpbmcgdGhlIGhpZ2hlc3Qgb3JkZXIgYml0LCBzb1xuICAgICBbYSA8IDAgfHwgYiA8IDBdIGlzIHRoZSBzYW1lIGFzIFthIGxvciBiIDwgMF0uXG5cbiAgICAgW3BvcyArIGxlbl0gY2FuIG92ZXJmbG93LCBzbyBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSBpcyBub3QgZXF1aXZhbGVudCB0b1xuICAgICBbdG90YWxfbGVuZ3RoIC0gbGVuIC0gcG9zIDwgMF0sIHdlIG5lZWQgdG8gdGVzdCBmb3IgW3BvcyArIGxlbl0gb3ZlcmZsb3cgYXNcbiAgICAgd2VsbC4gKilcbiAgbGV0IHN0b3AgPSBwb3MgKyBsZW4gaW5cbiAgaWYgcG9zIGxvciBsZW4gbG9yIHN0b3AgbG9yICh0b3RhbF9sZW5ndGggLSBzdG9wKSA8IDBcbiAgdGhlbiBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGdldF9wb3NfbGVuX2V4biA/KHBvcyA9IDApID9sZW4gKCkgfnRvdGFsX2xlbmd0aCA9XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGkgLT4gaVxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIHBvcywgbGVuXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgc2xvd19jaGVja19wb3NfbGVuX2V4biA9IHNsb3dfY2hlY2tfcG9zX2xlbl9leG5cbmVuZFxuIiwiXG5tb2R1bGUgUmVwciA9IHN0cnVjdFxuICBvcGVuIFN0ZGxpYi5CaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBsZXQgb2Zfc3RhdGUgOiBTdGRsaWIuUmFuZG9tLlN0YXRlLnQgLT4gdCA9IFN0ZGxpYi5PYmoubWFnaWNcbmVuZFxuXG5sZXQgYXNzaWduIGRzdCBzcmMgPVxuICBsZXQgZHN0ID0gUmVwci5vZl9zdGF0ZSAoTGF6eS5mb3JjZSBkc3QpIGluXG4gIGxldCBzcmMgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIHNyYykgaW5cbiAgU3RkbGliLkJpZ2FycmF5LkFycmF5MS5ibGl0IHNyYyBkc3RcblxubGV0IG1ha2VfZGVmYXVsdCBkZWZhdWx0ID1cbiAgbGV0IHNwbGl0X2Zyb21fcGFyZW50IHYgPVxuICAgIFN0ZGxpYi5MYXp5Lm1hcF92YWwgU3RkbGliLlJhbmRvbS5TdGF0ZS5zcGxpdCB2XG4gIGluXG4gIFN0ZGxpYi5Eb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50IChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IGdldF9zdGF0ZSByYW5kb21fa2V5ID0gU3RkbGliLkRvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXlcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEludCA9IEludDBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcblxuKCogVW5mb3J0dW5hdGVseSwgYmVjYXVzZSB0aGUgc3RhbmRhcmQgbGlicmFyeSBkb2VzIG5vdCBleHBvc2VcbiAgIFtTdGRsaWIuUmFuZG9tLlN0YXRlLmRlZmF1bHRdLCB3ZSBoYXZlIHRvIGNvbnN0cnVjdCBvdXIgb3duLiAgV2UgdGhlbiBidWlsZCB0aGVcbiAgIFtTdGRsaWIuUmFuZG9tLmludF0sIFtTdGRsaWIuUmFuZG9tLmJvb2xdIGZ1bmN0aW9ucyBhbmQgZnJpZW5kcyB1c2luZyB0aGF0IGRlZmF1bHQgc3RhdGUgaW5cbiAgIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LlxuXG4gICBPbmUgb3RoZXIgdHJpY2tpbmVzcyBpcyB0aGF0IHdlIG5lZWQgYWNjZXNzIHRvIHRoZSB1bmV4cG9zZWQgW1N0ZGxpYi5SYW5kb20uU3RhdGUuYXNzaWduXVxuICAgZnVuY3Rpb24sIHdoaWNoIGFjY2Vzc2VzIHRoZSB1bmV4cG9zZWQgc3RhdGUgcmVwcmVzZW50YXRpb24uICBTbywgd2UgY29weSB0aGVcbiAgIFtTdGF0ZS5yZXByXSB0eXBlIGRlZmluaXRpb24gYW5kIFthc3NpZ25dIGZ1bmN0aW9uIHRvIGhlcmUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSxcbiAgIGFuZCB1c2UgW09iai5tYWdpY10gdG8gZ2V0IGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbi4gKilcblxuKCogUmVncmVzc2lvbiB0ZXN0cyBvdWdodCB0byBiZSBkZXRlcm1pbmlzdGljIGJlY2F1c2UgdGhhdCB3YXkgYW55b25lIHdobyBicmVha3MgdGhlIHRlc3RcbiAgIGtub3dzIHRoYXQgaXQncyB0aGVpciBjb2RlIHRoYXQgYnJva2UgdGhlIHRlc3QuICBJZiB0ZXN0cyBhcmUgbm9uZGV0ZXJtaW5pc3RpYywgYSB0ZXN0XG4gICBmYWlsdXJlIG1heSBpbnN0ZWFkIGhhcHBlbiBiZWNhdXNlIHRoZSB0ZXN0IHJ1bm5lciBnb3QgdW5sdWNreSBhbmQgdW5jb3ZlcmVkIGFuXG4gICBleGlzdGluZyBidWcgaW4gdGhlIGNvZGUgc3VwcG9zZWRseSBiZWluZyBcInByb3RlY3RlZFwiIGJ5IHRoZSB0ZXN0IGluIHF1ZXN0aW9uLiAqKVxubGV0IGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHMgPVxuICBpZiBhbV90ZXN0aW5nXG4gIHRoZW4gKFxuICAgIG1hdGNoIGFsbG93X2luX3Rlc3RzIHdpdGhcbiAgICB8IFNvbWUgdHJ1ZSAtPiAoKVxuICAgIHwgTm9uZSB8IFNvbWUgZmFsc2UgLT5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIFwiaW5pdGlhbGl6aW5nIFJhbmRvbSB3aXRoIGEgbm9uZGV0ZXJtaW5pc3RpYyBzZWVkIGlzIGZvcmJpZGRlbiBpbiBpbmxpbmUgdGVzdHNcIilcbjs7XG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkIDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubGV0IHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gIGZvcmJpZF9ub25kZXRlcm1pbmlzbV9pbl90ZXN0cyB+YWxsb3dfaW5fdGVzdHM7XG4gIHJhbmRvbV9zZWVkICgpXG47O1xuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgKCogV2UgYWxsb3cgbGF6aW5lc3Mgb25seSBmb3IgdGhlIGRlZmluaXRpb24gb2YgW2RlZmF1bHRdLCBiZWxvdywgd2hpY2ggbWF5IGxhemlseSBjYWxsXG4gICAgIFttYWtlX3NlbGZfaW5pdF0uIEZvciBhbGwgb3RoZXIgcHVycG9zZXMsIHdlIGNyZWF0ZSBhbmQgdXNlIFt0XSBlYWdlcmx5LiAqKVxuICB0eXBlIHQgPSBTdGRsaWIuUmFuZG9tLlN0YXRlLnQgTGF6eS50XG5cbiAgbGV0IGJpdHMgdCA9IFN0ZGxpYi5SYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSB0KVxuICBsZXQgYm9vbCB0ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5ib29sIChMYXp5LmZvcmNlIHQpXG4gIGxldCBpbnQgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50MzIgdCB4ID0gU3RkbGliLlJhbmRvbS5TdGF0ZS5pbnQzMiAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBpbnQ2NCB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLmludDY0IChMYXp5LmZvcmNlIHQpIHhcbiAgbGV0IG5hdGl2ZWludCB0IHggPSBTdGRsaWIuUmFuZG9tLlN0YXRlLm5hdGl2ZWludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBtYWtlIHNlZWQgPSBMYXp5LmZyb21fdmFsIChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2Ugc2VlZClcbiAgbGV0IGNvcHkgdCA9IExhenkuZnJvbV92YWwgKFN0ZGxpYi5SYW5kb20uU3RhdGUuY29weSAoTGF6eS5mb3JjZSB0KSlcbiAgbGV0IGNoYXIgdCA9IGludCB0IDI1NiB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcbiAgbGV0IGFzY2lpIHQgPSBpbnQgdCAxMjggfD4gQ2hhci51bnNhZmVfb2ZfaW50XG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ID9hbGxvd19pbl90ZXN0cyAoKSA9XG4gICAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgICBMYXp5LmZyb21fdmFsIChTdGRsaWIuUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuICA7O1xuXG4gIGxldCBhc3NpZ24gPSBSYW5kb21fcmVwci5hc3NpZ25cbiAgbGV0IGZ1bGxfaW5pdCB0IHNlZWQgPSBhc3NpZ24gdCAobWFrZSBzZWVkKVxuXG4gIGxldCBkZWZhdWx0ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiAoXG4gICAgICAoKiBXZSBkZWZpbmUgQmFzZSdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlIGFzIGEgY29weSBvZiBPQ2FtbCdzIGRlZmF1bHQgcmFuZG9tIHN0YXRlLlxuICAgICAgICAgVGhpcyBtZWFucyB0aGF0IHByb2dyYW1zIHRoYXQgdXNlIEJhc2UuUmFuZG9tIHdpbGwgc2VlIHRoZSBzYW1lIHNlcXVlbmNlIG9mXG4gICAgICAgICByYW5kb20gYml0cyBhcyBpZiB0aGV5IGhhZCB1c2VkIFN0ZGxpYi5SYW5kb20uIEhvd2V2ZXIsIGJlY2F1c2UgW2dldF9zdGF0ZV0gcmV0dXJuc1xuICAgICAgICAgYSBjb3B5LCBCYXNlLlJhbmRvbSBhbmQgT0NhbWwuUmFuZG9tIGFyZSBub3QgdXNpbmcgdGhlIHNhbWUgc3RhdGUuIElmIGEgcHJvZ3JhbVxuICAgICAgICAgdXNlZCBib3RoLCBlYWNoIG9mIHRoZW0gd291bGQgZ28gdGhyb3VnaCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiByYW5kb20gYml0cy4gVG9cbiAgICAgICAgIGF2b2lkIHRoYXQsIHdlIHJlc2V0IE9DYW1sJ3MgcmFuZG9tIHN0YXRlIHRvIGEgZGlmZmVyZW50IHNlZWQsIGdpdmluZyBpdCBhXG4gICAgICAgICBkaWZmZXJlbnQgc2VxdWVuY2UuICopXG4gICAgICBsZXQgdCA9IFN0ZGxpYi5SYW5kb20uZ2V0X3N0YXRlICgpIGluXG4gICAgICBTdGRsaWIuUmFuZG9tLmluaXQgMTM3O1xuICAgICAgTGF6eS5mcm9tX3ZhbCB0KVxuICAgIGVsc2VcbiAgICAgIGxhenlcbiAgICAgICAgKCogT3V0c2lkZSBvZiB0ZXN0cywgd2UgaW5pdGlhbGl6ZSByYW5kb20gc3RhdGUgbm9uZGV0ZXJtaW5pc3RpY2FsbHkgYW5kIGxhemlseS5cbiAgICAgICAgICAgV2UgZm9yY2UgdGhlIHJhbmRvbSBpbml0aWFsaXphdGlvbiB0byBiZSBsYXp5IHNvIHRoYXQgd2UgZG8gbm90IHBheSBhbnkgY29zdFxuICAgICAgICAgICBmb3IgaXQgaW4gcHJvZ3JhbXMgdGhhdCBkbyBub3QgdXNlIHJhbmRvbW5lc3MuICopXG4gICAgICAgIChMYXp5LmZvcmNlIChtYWtlX3NlbGZfaW5pdCAoKSkpXG4gIDs7XG5cbiAgbGV0IGludF9vbl82NGJpdHMgdCBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIFN0ZGxpYi5JbnQ2NC50b19pbnQgKGludDY0IHQgKFN0ZGxpYi5JbnQ2NC5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnRfb25fMzJiaXRzIHQgYm91bmQgPVxuICAgICgqIE5vdCBhbHdheXMgdHJ1ZSB3aXRoIHRoZSBKYXZhU2NyaXB0IGJhY2tlbmQuICopXG4gICAgaWYgYm91bmQgPD0gMHgzRkZGRkZGRiAoKiAoMSBsc2wgMzApIC0gMSAqKVxuICAgIHRoZW4gaW50IHQgYm91bmRcbiAgICBlbHNlIFN0ZGxpYi5JbnQzMi50b19pbnQgKGludDMyIHQgKFN0ZGxpYi5JbnQzMi5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50NjQgPVxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQ2NCBpblxuICAgIGxldCBiaXRzIHN0YXRlID0gb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGZ1biBzdGF0ZSAtPlxuICAgICAgbG9neG9yXG4gICAgICAgIChiaXRzIHN0YXRlKVxuICAgICAgICAobG9neG9yIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSAzMCkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDYwKSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQzMiA9XG4gICAgbGV0IG9wZW4gU3RkbGliLkludDMyIGluXG4gICAgbGV0IGJpdHMgc3RhdGUgPSBvZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgZnVuIHN0YXRlIC0+IGxvZ3hvciAoYml0cyBzdGF0ZSkgKHNoaWZ0X2xlZnQgKGJpdHMgc3RhdGUpIDMwKVxuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMgc3RhdGUgPSBTdGRsaWIuSW50NjQudG9faW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIHN0YXRlID0gU3RkbGliLkludDMyLnRvX2ludCAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcblxuICBsZXQgZnVsbF9yYW5nZV9pbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCBmdWxsX3JhbmdlX25hdGl2ZWludF9vbl82NGJpdHMgc3RhdGUgPVxuICAgIFN0ZGxpYi5JbnQ2NC50b19uYXRpdmVpbnQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyBzdGF0ZSA9XG4gICAgU3RkbGliLk5hdGl2ZWludC5vZl9pbnQzMiAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCByYWlzZV9jcm9zc2VkX2JvdW5kcyBuYW1lIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kIHN0cmluZ19vZl9ib3VuZCA9XG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJSYW5kb20uJXM6IGNyb3NzZWQgYm91bmRzIFslcyA+ICVzXVwiXG4gICAgICBuYW1lXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIGxvd2VyX2JvdW5kKVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCB1cHBlcl9ib3VuZClcbiAgICAgICgpXG4gIFtAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG4gIDs7XG5cbiAgbGV0IGludF9pbmNsID1cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludFwiIGxvIGhpIEludC50b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBJbnQubWF4X3ZhbHVlXG4gICAgICB0aGVuIGxvICsgKGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGxhbmQgSW50Lm1heF92YWx1ZSlcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwXG4gICAgICB0aGVuIGxvICsgaW50IHN0YXRlIChJbnQuc3VjYyBkaWZmKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQzMl9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDMyIHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQzMiBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50MzJcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMGxcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQzMiBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICBsZXQgbmF0aXZlaW50X2luY2wgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX25hdGl2ZWludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBsZXQgb3BlbiBTdGRsaWIuTmF0aXZlaW50IGluXG4gICAgZnVuIHN0YXRlIGxvIGhpIC0+XG4gICAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJuYXRpdmVpbnRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfbmF0aXZlaW50IHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBuXG4gICAgICB0aGVuIGFkZCBsbyAobmF0aXZlaW50IHN0YXRlIChzdWNjIGRpZmYpKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQ2NF9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDY0IHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIFN0ZGxpYi5JbnQ2NCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50NjRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQ2NCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICAoKiBSZXR1cm4gYSB1bmlmb3JtbHkgcmFuZG9tIGZsb2F0IGluIFswLCAxKS4gKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzdGF0ZSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHNjYWxlID0gMHgxcC0zMCBpblxuICAgICgqIDJeLTMwICopXG4gICAgbGV0IHIxID0gU3RkbGliLmZsb2F0X29mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBsZXQgcjIgPSBTdGRsaWIuZmxvYXRfb2ZfaW50IChiaXRzIHN0YXRlKSBpblxuICAgIGxldCByZXN1bHQgPSAoKHIxICouIHNjYWxlKSArLiByMikgKi4gc2NhbGUgaW5cbiAgICAoKiBXaXRoIHZlcnkgc21hbGwgcHJvYmFiaWxpdHksIHJlc3VsdCBjYW4gcm91bmQgdXAgdG8gMS4wLCBzbyBpbiB0aGF0IGNhc2UsIHdlIGp1c3RcbiAgICAgICB0cnkgYWdhaW4uICopXG4gICAgaWYgcmVzdWx0IDwgMS4wIHRoZW4gcmVzdWx0IGVsc2UgcmF3ZmxvYXQgc3RhdGVcbiAgOztcblxuICBsZXQgZmxvYXQgc3RhdGUgaGkgPSByYXdmbG9hdCBzdGF0ZSAqLiBoaVxuXG4gIGxldCBmbG9hdF9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiZmxvYXRcIiBsbyBoaSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0O1xuICAgIGxvICsuIGZsb2F0IHN0YXRlIChoaSAtLiBsbylcbiAgOztcbmVuZFxuXG5sZXQgZGVmYXVsdCA9IFJhbmRvbV9yZXByLm1ha2VfZGVmYXVsdCBTdGF0ZS5kZWZhdWx0XG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGludCB4ID0gU3RhdGUuaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDMyIHggPSBTdGF0ZS5pbnQzMiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBuYXRpdmVpbnQgeCA9IFN0YXRlLm5hdGl2ZWludCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBpbnQ2NCB4ID0gU3RhdGUuaW50NjQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgZmxvYXQgeCA9IFN0YXRlLmZsb2F0IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludF9pbmNsIHggeSA9IFN0YXRlLmludF9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgaW50MzJfaW5jbCB4IHkgPSBTdGF0ZS5pbnQzMl9pbmNsIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgbmF0aXZlaW50X2luY2wgeCB5ID0gU3RhdGUubmF0aXZlaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQ2NF9pbmNsIHggeSA9IFN0YXRlLmludDY0X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBmbG9hdF9yYW5nZSB4IHkgPSBTdGF0ZS5mbG9hdF9yYW5nZSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGJvb2wgKCkgPSBTdGF0ZS5ib29sIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBjaGFyICgpID0gU3RhdGUuY2hhciAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgYXNjaWkgKCkgPSBTdGF0ZS5hc2NpaSAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgZnVsbF9pbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCA/YWxsb3dfaW5fdGVzdHMgKCkpXG5sZXQgc2V0X3N0YXRlIHMgPSBTdGF0ZS5hc3NpZ24gKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSBzXG4iLCIoKiogQW4gaW50ZXJuYWwtb25seSBtb2R1bGUgZmFjdG9yZWQgb3V0IGR1ZSB0byBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBjb3JlX2FycmF5XG4gICAgYW5kIGNvcmVfbGlzdC4gIENvbnRhaW5zIGNvZGUgZm9yIHBlcm11dGluZyBhbiBhcnJheS4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEFycmF5MFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSA/KHBvcyA9IDApID9sZW4gdCA9XG4gICgqIENvcGllZCBmcm9tIFtPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMF0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY29tcGlsaW5nXG4gICAgIHdpdGhvdXQgZmxhbWJkYS4gKilcbiAgbGV0IHRvdGFsX2xlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiB0b3RhbF9sZW5ndGggLSBwb3NcbiAgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbjAuY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGxldCBudW1fc3dhcHMgPSBsZW4gLSAxIGluXG4gIGZvciBpID0gbnVtX3N3YXBzIGRvd250byAxIGRvXG4gICAgbGV0IHRoaXNfaSA9IHBvcyArIGkgaW5cbiAgICAoKiBbcmFuZG9tX2ldIGlzIGRyYXduIGZyb20gW3Bvcyx0aGlzX2ldICopXG4gICAgbGV0IHJhbmRvbV9pID0gcG9zICsgUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGkgKyAxKSBpblxuICAgIHN3YXAgdCB0aGlzX2kgcmFuZG9tX2lcbiAgZG9uZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IExlc3NcbiAgfCBFcXVhbFxuICB8IEdyZWF0ZXJcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IExlc3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgRXF1YWwgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgR3JlYXRlciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuOztcblxubGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5sZXQgYWxsID0gKFsgTGVzczsgRXF1YWw7IEdyZWF0ZXIgXSA6IHQgbGlzdClcblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJvcmRlcmluZy5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgLT4gTGVzc1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXF1YWxcIiB8IFwiRXF1YWxcIikgLT4gRXF1YWxcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImdyZWF0ZXJcIiB8IFwiR3JlYXRlclwiKSAtPiBHcmVhdGVyXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImxlc3NcIiB8IFwiTGVzc1wiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiZXF1YWxcIiB8IFwiRXF1YWxcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImdyZWF0ZXJcIiB8IFwiR3JlYXRlclwiKSA6OiBfKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgfCBzZXhwX18wMDRfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTGVzcyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJMZXNzXCJcbiAgICB8IEVxdWFsIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkVxdWFsXCJcbiAgICB8IEdyZWF0ZXIgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiR3JlYXRlclwiXG4gICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkxlc3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkVxdWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJHcmVhdGVyXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlIF9vcmRlcmluZyA9IHQgPVxuICAgIHwgTGVzc1xuICAgIHwgRXF1YWxcbiAgICB8IEdyZWF0ZXJcbmVuZFxuXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIExlc3MgZWxzZSBpZiBuID0gMCB0aGVuIEVxdWFsIGVsc2UgR3JlYXRlclxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBMZXNzIC0+IC0xXG4gIHwgRXF1YWwgLT4gMFxuICB8IEdyZWF0ZXIgLT4gMVxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG5cbmluY2x1ZGUgTGlzdDFcblxuKCogVGhpcyBpdHNlbGYgaW5jbHVkZXMgW0xpc3QwXS4gKilcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgICBmdW4gKHR5cGUgYV9fMDAxXylcbiAgICAgICAgOiAoKChhX18wMDFfW0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwMV8pIC0+IChhX18wMDFfIHRbQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDAxXyB0KSAtPlxuICAgICAgZ2xvYmFsaXplX2xpc3RcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGlzdF9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xpc3RcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gbGlzdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIE9yX3VuZXF1YWxfbGVuZ3RocyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IFVuZXF1YWxfbGVuZ3Roc1xuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMTBfIGJfXzAxMV8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAxMF8gYl9fMDExX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDEwXywgYl9fMDExXyB3aXRoXG4gICAgICB8IE9rIF9hX18wMTJfLCBPayBfYl9fMDEzXyAtPiBfY21wX19hIF9hX18wMTJfIF9iX18wMTNfXG4gICAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICAgIHwgXywgT2sgXyAtPiAxXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocywgVW5lcXVhbF9sZW5ndGhzIC0+IDApXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuICh0eXBlIGFfXzAxN18pIDogKChhX18wMTdfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDE3XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxNF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDE1XyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDE2XyA9IF9vZl9hX18wMTRfIGFyZzBfXzAxNV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDE2XyBdXG4gICAgICB8IFVuZXF1YWxfbGVuZ3RocyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsX2xlbmd0aHNcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5sZXQgb2ZfbGlzdCB0ID0gdFxuXG5sZXQgcmFuZ2UnIH5jb21wYXJlIH5zdHJpZGUgPyhzdGFydCA9IGBpbmNsdXNpdmUpID8oc3RvcCA9IGBleGNsdXNpdmUpIHN0YXJ0X2kgc3RvcF9pID1cbiAgbGV0IG5leHRfaSA9IHN0cmlkZSBzdGFydF9pIGluXG4gIGxldCBvcmRlciB4IHkgPSBPcmRlcmluZy5vZl9pbnQgKGNvbXBhcmUgeCB5KSBpblxuICBsZXQgcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKSA9XG4gICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWVcIlxuICBpblxuICBsZXQgaW5pdGlhbF9zdHJpZGVfb3JkZXIgPVxuICAgIG1hdGNoIG9yZGVyIHN0YXJ0X2kgbmV4dF9pIHdpdGhcbiAgICB8IEVxdWFsIC0+IHJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbWVfdmFsdWUgKClcbiAgICB8IExlc3MgLT4gYExlc3NcbiAgICB8IEdyZWF0ZXIgLT4gYEdyZWF0ZXJcbiAgaW5cbiAgbGV0IHJlYyBsb29wIGkgYWNjdW0gPVxuICAgIGxldCBpX3RvX3N0b3Bfb3JkZXIgPSBvcmRlciBpIHN0b3BfaSBpblxuICAgIG1hdGNoIGlfdG9fc3RvcF9vcmRlciwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPlxuICAgICAgKCogaGF2ZW4ndCB5ZXQgcmVhY2hlZCBbc3RvcF9pXS4gQ29udGludWUuICopXG4gICAgICBsZXQgbmV4dF9pID0gc3RyaWRlIGkgaW5cbiAgICAgIChtYXRjaCBvcmRlciBpIG5leHRfaSwgaW5pdGlhbF9zdHJpZGVfb3JkZXIgd2l0aFxuICAgICAgIHwgRXF1YWwsIF8gLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgICAgaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlJzogc3RyaWRlIGZ1bmN0aW9uIGNhbm5vdCBjaGFuZ2UgZGlyZWN0aW9uXCJcbiAgICAgICB8IExlc3MsIGBMZXNzIHwgR3JlYXRlciwgYEdyZWF0ZXIgLT4gbG9vcCBuZXh0X2kgKGkgOjogYWNjdW0pKVxuICAgIHwgTGVzcywgYEdyZWF0ZXIgfCBHcmVhdGVyLCBgTGVzcyAtPlxuICAgICAgKCogc3RlcHBlZCBwYXN0IFtzdG9wX2ldLiAgRmluaXNoZWQuICopXG4gICAgICBhY2N1bVxuICAgIHwgRXF1YWwsIF8gLT5cbiAgICAgICgqIHJlYWNoZWQgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIChtYXRjaCBzdG9wIHdpdGhcbiAgICAgICB8IGBpbmNsdXNpdmUgLT4gaSA6OiBhY2N1bVxuICAgICAgIHwgYGV4Y2x1c2l2ZSAtPiBhY2N1bSlcbiAgaW5cbiAgbGV0IHN0YXJ0X2kgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfaVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBuZXh0X2lcbiAgaW5cbiAgcmV2IChsb29wIHN0YXJ0X2kgW10pXG47O1xuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBpZiBzdHJpZGUgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LnJhbmdlOiBzdHJpZGUgbXVzdCBiZSBub24temVyb1wiO1xuICByYW5nZScgfmNvbXBhcmUgfnN0cmlkZTooZnVuIHggLT4geCArIHN0cmlkZSkgfnN0YXJ0IH5zdG9wIHN0YXJ0X2kgc3RvcF9pXG47O1xuXG5sZXQgaGQgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IF8gLT4gU29tZSB4XG47O1xuXG5sZXQgdGwgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IHQnIC0+IFNvbWUgdCdcbjs7XG5cbmxldCBudGggdCBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbnRoX2F1eCB0IG4gPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYSA6OiB0IC0+IGlmIG4gPSAwIHRoZW4gU29tZSBhIGVsc2UgbnRoX2F1eCB0IChuIC0gMSlcbiAgICBpblxuICAgIG50aF9hdXggdCBuKVxuOztcblxubGV0IG50aF9leG4gdCBuID1cbiAgbWF0Y2ggbnRoIHQgbiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJMaXN0Lm50aF9leG4gJWQgY2FsbGVkIG9uIGxpc3Qgb2YgbGVuZ3RoICVkXCIgbiAobGVuZ3RoIHQpICgpXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB1bm9yZGVyZWRfYXBwZW5kIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgbCB8IGwsIFtdIC0+IGxcbiAgfCBfIC0+IHJldl9hcHBlbmQgbDEgbDJcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBTYW1lX2xlbmd0aCBvZiBpbnRcbiAgICB8IFVuZXF1YWxfbGVuZ3RocyBvZlxuICAgICAgICB7IHNoYXJlZF9sZW5ndGggOiBpbnRcbiAgICAgICAgOyB0YWlsX29mX2EgOiAnYSBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9iIDogJ2IgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBzaGFyZWRfbGVuZ3RoID1cbiAgICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiAtPiBsb29wIGEgYiAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfIHwgXywgW10gLT4gVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYiB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoMl9leG4gbmFtZSBsMSBsMiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDIub2ZfbGlzdHMgbDEgbDIgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYiB9IC0+XG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIlxuICAgICAgbmFtZVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hKVxuICAgICAgKHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iKVxuICAgICAgKClcbjs7XG5cbmxldCBjaGVja19sZW5ndGgyIGwxIGwyIH5mID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiBPcl91bmVxdWFsX2xlbmd0aHMuT2sgKGYgbDEgbDIpXG4gIHwgVW5lcXVhbF9sZW5ndGhzIF8gLT4gVW5lcXVhbF9sZW5ndGhzXG47O1xuXG5tb2R1bGUgQ2hlY2tfbGVuZ3RoMyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIDsgdGFpbF9vZl9jIDogJ2MgbGlzdFxuICAgICAgICB9XG5cbiAgKCogSW4gdGhlIFtVbmVxdWFsX2xlbmd0aHNdIGNhc2UsIGF0IGxlYXN0IG9uZSBvZiB0aGUgdGFpbHMgd2lsbCBiZSBub24tZW1wdHkuICopXG4gIGxldCBvZl9saXN0cyBsMSBsMiBsMyA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiBjIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiwgYyB3aXRoXG4gICAgICB8IFtdLCBbXSwgW10gLT4gU2FtZV9sZW5ndGggc2hhcmVkX2xlbmd0aFxuICAgICAgfCBfIDo6IGEsIF8gOjogYiwgXyA6OiBjIC0+IGxvb3AgYSBiIGMgKHNoYXJlZF9sZW5ndGggKyAxKVxuICAgICAgfCBbXSwgXywgXyB8IF8sIFtdLCBfIHwgXywgXywgW10gLT5cbiAgICAgICAgVW5lcXVhbF9sZW5ndGhzIHsgc2hhcmVkX2xlbmd0aDsgdGFpbF9vZl9hID0gYTsgdGFpbF9vZl9iID0gYjsgdGFpbF9vZl9jID0gYyB9XG4gICAgaW5cbiAgICBsb29wIGwxIGwyIGwzIDBcbiAgOztcbmVuZFxuXG5sZXQgY2hlY2tfbGVuZ3RoM19leG4gbmFtZSBsMSBsMiBsMyA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gKClcbiAgfCBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2E7IHRhaWxfb2ZfYjsgdGFpbF9vZl9jIH0gLT5cbiAgICBsZXQgbjEgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYSBpblxuICAgIGxldCBuMiA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9iIGluXG4gICAgbGV0IG4zID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2MgaW5cbiAgICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkIHx8ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiBuMiBuMyAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgzLm9mX2xpc3RzIGwxIGwyIGwzIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMiBsMylcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbmxldCBpdGVyMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGl0ZXIyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBpdGVyMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIml0ZXIyX2V4blwiIGwxIGwyO1xuICBpdGVyMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoocmV2X21hcDJfb2sgfmYpIFtAbm9udGFpbF1cblxubGV0IHJldl9tYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwicmV2X21hcDJfZXhuXCIgbDEgbDI7XG4gIHJldl9tYXAyX29rIGwxIGwyIH5mXG47O1xuXG5sZXQgZm9sZDIgbDEgbDIgfmluaXQgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihmb2xkMl9vayB+aW5pdCB+ZikgW0Bub250YWlsXVxuXG5sZXQgZm9sZDJfZXhuIGwxIGwyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb2xkMl9leG5cIiBsMSBsMjtcbiAgZm9sZDJfb2sgbDEgbDIgfmluaXQgfmZcbjs7XG5cbmxldCBmb2xkX3JpZ2h0MiBsMSBsMiB+ZiB+aW5pdCA9XG4gIGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvbGRfcmlnaHQyX29rIH5mIH5pbml0KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9yaWdodDJfZXhuIGwxIGwyIH5mIH5pbml0ID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJmb2xkX3JpZ2h0Ml9leG5cIiBsMSBsMjtcbiAgZm9sZF9yaWdodDJfb2sgbDEgbDIgfmYgfmluaXRcbjs7XG5cbmxldCBmb3JfYWxsMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KGZvcl9hbGwyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBmb3JfYWxsMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvcl9hbGwyX2V4blwiIGwxIGwyO1xuICBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGV4aXN0czIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihleGlzdHMyX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBleGlzdHMyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiZXhpc3RzMl9leG5cIiBsMSBsMjtcbiAgZXhpc3RzMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IG1lbSB0IGEgfmVxdWFsID1cbiAgbGV0IHJlYyBsb29wIGVxdWFsIGEgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGIgOjogYnMgLT4gZXF1YWwgYSBiIHx8IGxvb3AgZXF1YWwgYSBic1xuICBpblxuICBsb29wIGVxdWFsIGEgdFxuOztcblxuKCogVGhpcyBpcyBhIGNvcHkgb2YgdGhlIGNvZGUgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCBhbiBleHRyYSBldGEtZXhwYW5zaW9uIHRvXG4gICBhdm9pZCBjcmVhdGluZyBwYXJ0aWFsIGNsb3N1cmVzIChzaG93ZWQgdXAgZm9yIFtmaWx0ZXJdKSBpbiBwcm9maWxpbmcpLiAqKVxubGV0IHJldl9maWx0ZXIgdCB+ZiA9XG4gIGxldCByZWMgZmluZCB+ZiBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBmaW5kIH5mICh4IDo6IGFjY3UpIGwgZWxzZSBmaW5kIH5mIGFjY3UgbFxuICBpblxuICBmaW5kIH5mIFtdIHRcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IHJldiAocmV2X2ZpbHRlciB0IH5mKVxuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIChtYXRjaCBmIHggd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIGxcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIGluXG4gIGxvb3AgdCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBsb29wIGxcbiAgaW5cbiAgbG9vcCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmVjIGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCB4IDo6IHQgLT4gaWYgZiB4IHRoZW4geCBlbHNlIGZpbmRfZXhuIHQgfmZcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgKGksIHgpIGVsc2UgbG9vcCAoaSArIDEpIGxcbiAgaW5cbiAgbG9vcCAwIHQgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmRpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICBmaW5kaV9leG5cbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiBpIHggd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPiByZXN1bHRcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGwpXG4gIGluXG4gIGxvb3AgMCB0IFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5maW5kX21hcGlfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXBpIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBpX2V4blxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHRydWVcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCAmJiBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHQgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCB8fCBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHQgW0Bub250YWlsXVxuOztcblxuKCoqIEZvciB0aGUgY29udGFpbmVyIGludGVyZmFjZS4gKilcbmxldCBmb2xkX2xlZnQgPSBmb2xkXG5cbmxldCBvZl9hcnJheSA9IEFycmF5LnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEFycmF5Lm9mX2xpc3RcbmxldCB0b19saXN0IHQgPSB0XG5cbmxldCBtYXhfbm9uX3RhaWxjYWxsID1cbiAgbWF0Y2ggU3lzLmJhY2tlbmRfdHlwZSB3aXRoXG4gIHwgU3lzLk5hdGl2ZSB8IFN5cy5CeXRlY29kZSAtPiAxXzAwMFxuICAoKiBXZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdGFjaywgYmV0dGVyIGJlIHNhZmUgYW5kIGFzc3VtZSBpdCdzIHNtYWxsLiBUaGlzXG4gICAgIG51bWJlciB3YXMgdGFrZW4gZnJvbSBvY2FtbCNzdGRsaWIvbGlzdC5tbCB3aGljaCBpcyBhbHNvIGVxdWFsIHRvIHRoZSBkZWZhdWx0IGxpbWl0XG4gICAgIG9mIHJlY3Vyc2l2ZSBjYWxsIGluIHRoZSBqc19vZl9vY2FtbCBjb21waWxlciBiZWZvcmUgc3dpdGNoaW5nIHRvIHRyYW1wb2xpbmUuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcbjs7XG5cbigqKiBUYWlsIHJlY3Vyc2l2ZSB2ZXJzaW9ucyBvZiBzdGFuZGFyZCBbTGlzdF0gbW9kdWxlICopXG5cbmxldCB0YWlsX2FwcGVuZCBsMSBsMiA9IHJldl9hcHBlbmQgKHJldiBsMSkgbDJcblxuKCogVGhlcmUgYXJlIGEgZmV3IG9wdGltaXplZCBsaXN0IG9wZXJhdGlvbnMgaGVyZSwgaW5jbHVkaW5nIGFwcGVuZCBhbmQgbWFwLiAgVGhlcmUgYXJlXG4gICBiYXNpY2FsbHkgdHdvIG9wdGltaXphdGlvbnMgaW4gcGxheTogbG9vcCB1bnJvbGxpbmcsIGFuZCBkeW5hbWljIHN3aXRjaGluZyBiZXR3ZWVuXG4gICBzdGFjayBhbmQgaGVhcCBhbGxvY2F0aW9uLlxuXG4gICBUaGUgbG9vcC11bnJvbGxpbmcgaXMgc3RyYWlnaHRmb3J3YXJkLCB3ZSBqdXN0IHVucm9sbCA1IGxldmVscyBvZiB0aGUgbG9vcC4gIFRoaXMgbWFrZXNcbiAgIGVhY2ggaXRlcmF0aW9uIGZhc3RlciwgYW5kIGFsc28gcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHN0YWNrIGZyYW1lcyBjb25zdW1lZCBwZXIgbGlzdFxuICAgZWxlbWVudC5cblxuICAgVGhlIGR5bmFtaWMgc3dpdGNoaW5nIGlzIGRvbmUgYnkgY291bnRpbmcgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMsIGFuZCB0aGVuXG4gICBzd2l0Y2hpbmcgdG8gdGhlIFwic2xvd1wiIGltcGxlbWVudGF0aW9uIHdoZW4gd2UgZXhjZWVkIGEgZ2l2ZW4gbGltaXQuICBUaGlzIG1lYW5zIHRoYXRcbiAgIHNob3J0IGxpc3RzIHVzZSB0aGUgZmFzdCBzdGFjay1hbGxvY2F0aW9uIG1ldGhvZCwgYW5kIGxvbmcgbGlzdHMgdXNlIGEgc2xvd2VyIG9uZSB0aGF0XG4gICBkb2Vzbid0IHJlcXVpcmUgc3RhY2sgc3BhY2UuICopXG5sZXQgcmVjIGNvdW50X2FwcGVuZCBsMSBsMiBjb3VudCA9XG4gIG1hdGNoIGwyIHdpdGhcbiAgfCBbXSAtPiBsMVxuICB8IF8gLT5cbiAgICAobWF0Y2ggbDEgd2l0aFxuICAgICB8IFtdIC0+IGwyXG4gICAgIHwgWyB4MSBdIC0+IHgxIDo6IGwyXG4gICAgIHwgWyB4MTsgeDIgXSAtPiB4MSA6OiB4MiA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MyBdIC0+IHgxIDo6IHgyIDo6IHgzIDo6IGwyXG4gICAgIHwgWyB4MTsgeDI7IHgzOyB4NCBdIC0+IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IGwyXG4gICAgIHwgeDEgOjogeDIgOjogeDMgOjogeDQgOjogeDUgOjogdGwgLT5cbiAgICAgICB4MVxuICAgICAgIDo6IHgyXG4gICAgICAgOjogeDNcbiAgICAgICA6OiB4NFxuICAgICAgIDo6IHg1XG4gICAgICAgOjpcbiAgICAgICAoaWYgY291bnQgPiBtYXhfbm9uX3RhaWxjYWxsXG4gICAgICAgIHRoZW4gdGFpbF9hcHBlbmQgdGwgbDJcbiAgICAgICAgZWxzZSBjb3VudF9hcHBlbmQgdGwgbDIgKGNvdW50ICsgMSkpKVxuOztcblxubGV0IGFwcGVuZCBsMSBsMiA9IGNvdW50X2FwcGVuZCBsMSBsMiAwXG5cbigqIEFuIG9yZGluYXJ5IHRhaWwgcmVjdXJzaXZlIG1hcCBidWlsZHMgdXAgYW4gaW50ZXJtZWRpYXRlIChyZXZlcnNlZCkgcmVwcmVzZW50YXRpb24sXG4gICB3aXRoIG9uZSBoZWFwIGFsbG9jYXRlZCBvYmplY3QgcGVyIGVsZW1lbnQuIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaW5zdGVhZCBjaHVua3NcbiAgIDkgb2JqZWN0cyBpbnRvIG9uZSBoZWFwIGFsbG9jYXRlZCBvYmplY3QsIHJlZHVjaW5nIGFsbG9jYXRpb24gYW5kIHBlcmZvcm1hbmNlIGNvc3RzXG4gICBhY2NvcmRpbmdseS4gTm90ZSB0aGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCBpcyBkb25lIGJ5IHRoZSBzdGRsaWIncyBtYXBcbiAgIGZ1bmN0aW9uLiAqKVxubGV0IHRhaWxfbWFwIHhzIH5mOihmIFtAbG9jYWxdKSA9XG4gIGxldCByZWMgcmlzZSB5cyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB5c1xuICAgIHwgKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzIC0+XG4gICAgICByaXNlICh5MCA6OiB5MSA6OiB5MiA6OiB5MyA6OiB5NCA6OiB5NSA6OiB5NiA6OiB5NyA6OiB5OCA6OiB5cykgYnNcbiAgaW5cbiAgbGV0IHJlYyBkaXZlIGJzID0gZnVuY3Rpb25cbiAgICB8IHgwIDo6IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHg2IDo6IHg3IDo6IHg4IDo6IHhzIC0+XG4gICAgICBsZXQgeTAgPSBmIHgwIGluXG4gICAgICBsZXQgeTEgPSBmIHgxIGluXG4gICAgICBsZXQgeTIgPSBmIHgyIGluXG4gICAgICBsZXQgeTMgPSBmIHgzIGluXG4gICAgICBsZXQgeTQgPSBmIHg0IGluXG4gICAgICBsZXQgeTUgPSBmIHg1IGluXG4gICAgICBsZXQgeTYgPSBmIHg2IGluXG4gICAgICBsZXQgeTcgPSBmIHg3IGluXG4gICAgICBsZXQgeTggPSBmIHg4IGluXG4gICAgICBkaXZlICgoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMpIHhzXG4gICAgfCB4cyAtPiByaXNlIChub250YWlsX21hcCB+ZiB4cykgYnNcbiAgaW5cbiAgbGV0IHJlcyA9IGRpdmUgW10geHMgaW5cbiAgcmVzXG47O1xuXG5sZXQgcmVjIGNvdW50X21hcCB+ZjooZiBbQGxvY2FsXSkgbCBjdHIgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFsgeDEgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBbIGYxIF1cbiAgfCBbIHgxOyB4MiBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBbIGYxOyBmMiBdXG4gIHwgWyB4MTsgeDI7IHgzIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBbIGYxOyBmMjsgZjMgXVxuICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBbIGYxOyBmMjsgZjM7IGY0IF1cbiAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBsZXQgZjUgPSBmIHg1IGluXG4gICAgZjFcbiAgICA6OiBmMlxuICAgIDo6IGYzXG4gICAgOjogZjRcbiAgICA6OiBmNVxuICAgIDo6IChpZiBjdHIgPiBtYXhfbm9uX3RhaWxjYWxsIHRoZW4gdGFpbF9tYXAgfmYgdGwgZWxzZSBjb3VudF9tYXAgfmYgdGwgKGN0ciArIDEpKVxuOztcblxubGV0IG1hcCBsIH5mID0gY291bnRfbWFwIH5mIGwgMFxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0ICggPj58ICkgbCBmID0gbWFwIGwgfmZcbmxldCBtYXAyX29rIGwxIGwyIH5mID0gcmV2IChyZXZfbWFwMl9vayBsMSBsMiB+ZilcbmxldCBtYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoobWFwMl9vayB+ZikgW0Bub250YWlsXVxuXG5sZXQgbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIm1hcDJfZXhuXCIgbDEgbDI7XG4gIG1hcDJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCByZXZfbWFwM19vayBsMSBsMiBsMyB+ZiA9XG4gIGxldCByZWMgbG9vcCBsMSBsMiBsMyBhYyA9XG4gICAgbWF0Y2ggbDEsIGwyLCBsMyB3aXRoXG4gICAgfCBbXSwgW10sIFtdIC0+IGFjXG4gICAgfCB4MSA6OiBsMSwgeDIgOjogbDIsIHgzIDo6IGwzIC0+IGxvb3AgbDEgbDIgbDMgKGYgeDEgeDIgeDMgOjogYWMpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsb29wIGwxIGwyIGwzIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZXZfbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KHJldl9tYXAzX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCByZXZfbWFwM19leG4gbDEgbDIgbDMgfmYgPVxuICBjaGVja19sZW5ndGgzX2V4biBcInJldl9tYXAzX2V4blwiIGwxIGwyIGwzO1xuICByZXZfbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IG1hcDNfb2sgbDEgbDIgbDMgfmYgPSByZXYgKHJldl9tYXAzX29rIGwxIGwyIGwzIH5mKVxubGV0IG1hcDMgbDEgbDIgbDMgfmYgPSBjaGVja19sZW5ndGgzIGwxIGwyIGwzIH5mOihtYXAzX29rIH5mKSBbQG5vbnRhaWxdXG5cbmxldCBtYXAzX2V4biBsMSBsMiBsMyB+ZiA9XG4gIGNoZWNrX2xlbmd0aDNfZXhuIFwibWFwM19leG5cIiBsMSBsMiBsMztcbiAgbWFwM19vayBsMSBsMiBsMyB+ZlxuOztcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZCBsMSBsMiB+ZiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgfCBbXSAtPiBsMlxuICB8IGggOjogdCAtPiByZXZfbWFwX2FwcGVuZCB+ZiB0IChmIGggOjogbDIpXG47O1xuXG5sZXQgdW56aXAgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMlxuICAgIHwgKHgsIHkpIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKVxuICBpblxuICBsb29wIChyZXYgbGlzdCkgW10gW11cbjs7XG5cbmxldCB1bnppcDMgbGlzdCA9XG4gIGxldCByZWMgbG9vcCBsaXN0IGwxIGwyIGwzID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGwxLCBsMiwgbDNcbiAgICB8ICh4LCB5LCB6KSA6OiB0bCAtPiBsb29wIHRsICh4IDo6IGwxKSAoeSA6OiBsMikgKHogOjogbDMpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXSBbXVxuOztcblxubGV0IHppcF9leG4gbDEgbDIgPVxuICB0cnkgbWFwMl9vayB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMiB3aXRoXG4gIHwgXyAtPiBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gemlwX2V4bjogJWQgPD4gJWRcIiAobGVuZ3RoIGwxKSAobGVuZ3RoIGwyKSAoKVxuOztcblxubGV0IHppcCBsMSBsMiA9IG1hcDIgfmY6KGZ1biBhIGIgLT4gYSwgYikgbDEgbDJcblxuKCoqIEFkZGl0aW9uYWwgbGlzdCBvcGVyYXRpb25zICopXG5cbmxldCByZXZfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiB0IC0+IGxvb3AgKGkgKyAxKSAoZiBpIGggOjogYWNjKSB0XG4gIGluXG4gIGxvb3AgMCBbXSBsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBpIGwgfmYgPSByZXYgKHJldl9tYXBpIGwgfmYpXG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZF9tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbGV0IHJlc3VsdCA9XG4gICAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgICAgeSlcbiAgaW5cbiAgIWFjYywgcmVzdWx0XG47O1xuXG5sZXQgaXRlcmkgbCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIGwgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgc25kIChmb2xkIHQgfmluaXQ6KDAsIGluaXQpIH5mOihmdW4gKGksIGFjYykgdiAtPiBpICsgMSwgZiBpIGFjYyB2KSlcbjs7XG5cbmxldCBmaWx0ZXJpIGwgfmYgPVxuICByZXYgKGZvbGRpIGwgfmY6KGZ1biBwb3MgYWNjIHggLT4gaWYgZiBwb3MgeCB0aGVuIHggOjogYWNjIGVsc2UgYWNjKSB+aW5pdDpbXSlcbjs7XG5cbmxldCByZWR1Y2UgbCB+ZiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBoZCA6OiB0bCAtPiBTb21lIChmb2xkIH5pbml0OmhkIH5mIHRsKVxuOztcblxubGV0IHJlZHVjZV9leG4gbCB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBsIH5mIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiTGlzdC5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHJlZHVjZV9iYWxhbmNlZCBsIH5mID1cbiAgKCogQ2FsbCB0aGUgXCJzaXplXCIgb2YgYSB2YWx1ZSB0aGUgbnVtYmVyIG9mIGxpc3QgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gY29tYmluZWQgaW50b1xuICAgICBpdCB2aWEgY2FsbHMgdG8gW2ZdLiAgV2UgcHJvY2VlZCBieSB1c2luZyBbZl0gdG8gY29tYmluZSBlbGVtZW50cyBpbiB0aGUgYWNjdW11bGF0b3JcbiAgICAgb2YgdGhlIHNhbWUgc2l6ZSB1bnRpbCB3ZSBjYW4ndCBjb21iaW5lIGFueSBtb3JlLCB0aGVuIGdldHRpbmcgYSBuZXcgZWxlbWVudCBmcm9tIHRoZVxuICAgICBpbnB1dCBsaXN0IGFuZCByZXBlYXRpbmcuXG5cbiAgICAgV2l0aCB0aGlzIHN0cmF0ZWd5LCBpbiB0aGUgYWNjdW11bGF0b3I6XG4gICAgIC0gd2Ugb25seSBldmVyIGhhdmUgZWxlbWVudHMgb2Ygc2l6ZXMgYSBwb3dlciBvZiB0d29cbiAgICAgLSB3ZSBuZXZlciBoYXZlIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBvZiBlYWNoIHNpemVcbiAgICAgLSB0aGUgc3VtIG9mIGFsbCB0aGUgZWxlbWVudCBzaXplcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkXG5cbiAgICAgVGhlc2UgY29uZGl0aW9ucyBlbmZvcmNlIHRoYXQgbGlzdCBvZiBlbGVtZW50cyBvZiBlYWNoIHNpemUgaXMgcHJlY2lzZWx5IHRoZSBiaW5hcnlcbiAgICAgZXhwYW5zaW9uIG9mIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29uc3VtZWQ6IGlmIHlvdSd2ZSBjb25zdW1lZCAxMyA9IDBiMTEwMVxuICAgICBlbGVtZW50cywgeW91IGhhdmUgb25lIGVsZW1lbnQgb2Ygc2l6ZSA4LCBvbmUgb2Ygc2l6ZSA0LCBhbmQgb25lIG9mIHNpemUgMS4gIEhlbmNlXG4gICAgIHdoZW4gYSBuZXcgZWxlbWVudCBjb21lcyBhbG9uZywgdGhlIG51bWJlciBvZiBjb21iaW5pbmdzIHlvdSBuZWVkIHRvIGRvIGlzIHRoZSBudW1iZXJcbiAgICAgb2YgdHJhaWxpbmcgMXMgaW4gdGhlIGJpbmFyeSBleHBhbnNpb24gb2YgW251bV0sIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCBoYXZlXG4gICAgIGFscmVhZHkgZ29uZSBpbnRvIHRoZSBhY2N1bXVsYXRvci4gIFRoZSBhY2N1bXVsYXRvciBpcyBpbiBhc2NlbmRpbmcgb3JkZXIgb2Ygc2l6ZSwgc29cbiAgICAgdGhlIG5leHQgZWxlbWVudCB0byBjb21iaW5lIHdpdGggaXMgYWx3YXlzIHRoZSBoZWFkIG9mIHRoZSBsaXN0LiAqKVxuICBsZXQgcmVjIHN0ZXBfYWNjdW0gbnVtIGFjYyB4ID1cbiAgICBpZiBudW0gbGFuZCAxID0gMFxuICAgIHRoZW4geCA6OiBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogTmV3IGVsZW1lbnRzIGZyb20gbGF0ZXIgaW4gdGhlIGlucHV0IGxpc3QgZ28gb24gdGhlIGZyb250IG9mIHRoZSBhY2N1bXVsYXRvciwgc29cbiAgICAgICAgIHRoZSBhY2N1bXVsYXRvciBpcyBpbiByZXZlcnNlIG9yZGVyIHdydCB0aGUgb3JpZ2luYWwgbGlzdCBvcmRlciwgaGVuY2UgW2YgeSB4XVxuICAgICAgICAgaW5zdGVhZCBvZiBbZiB4IHldLiAqKVxuICAgICAgfCB5IDo6IHlzIC0+IHN0ZXBfYWNjdW0gKG51bSBhc3IgMSkgeXMgKGYgeSB4KSlcbiAgaW5cbiAgKCogRXhwZXJpbWVudGFsbHksIGlubGluaW5nIFtmb2xkaV0gYW5kIHVucm9sbGluZyB0aGlzIGxvb3AgYSBmZXcgdGltZXMgY2FuIHJlZHVjZVxuICAgICBydW50aW1lIGRvd24gdG8gYSB0aGlyZCBhbmQgYWxsb2NhdGlvbiB0byAxLzE2dGggb3Igc28gaW4gdGhlIG1pY3JvYmVuY2htYXJrcyBiZWxvdy5cbiAgICAgSG93ZXZlciwgaW4gbW9zdCB1c2UgY2FzZXMgW2ZdIGlzIGxpa2VseSB0byBiZSBleHBlbnNpdmUgKG90aGVyd2lzZSB3aHkgZG8geW91IGNhcmVcbiAgICAgYWJvdXQgdGhlIG9yZGVyIG9mIHJlZHVjdGlvbj8pIHNvIHRoZSBvdmVyaGVhZCBvZiB0aGlzIGZ1bmN0aW9uIGl0c2VsZiBkb2Vzbid0IHJlYWxseVxuICAgICBtYXR0ZXIuIElmIHlvdSBjb21lIHVwIHdpdGggYSB1c2UtY2FzZSB3aGVyZSBpdCBkb2VzLCB0aGVuIHRoYXQncyBzb21ldGhpbmcgeW91IG1pZ2h0XG4gICAgIHdhbnQgdG8gdHJ5OiBzZWUgaGcgbG9nIC1wciA0OWVmMDY1ZjQyOWQuICopXG4gIG1hdGNoIGZvbGRpIGwgfmluaXQ6W10gfmY6c3RlcF9hY2N1bSB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogeHMgLT4gU29tZSAoZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4geCB5IC0+IGYgeSB4KSlcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWRfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2JhbGFuY2VkX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCBncm91cGkgbCB+YnJlYWsgPVxuICBsZXQgZ3JvdXBzID1cbiAgICBmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgeCAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgW10gLT4gWyBbIHggXSBdXG4gICAgICB8IGN1cnJlbnRfZ3JvdXAgOjogdGwgLT5cbiAgICAgICAgaWYgYnJlYWsgaSAoaGRfZXhuIGN1cnJlbnRfZ3JvdXApIHhcbiAgICAgICAgdGhlbiBbIHggXSA6OiBjdXJyZW50X2dyb3VwIDo6IHRsICgqIHN0YXJ0IG5ldyBncm91cCAqKVxuICAgICAgICBlbHNlICh4IDo6IGN1cnJlbnRfZ3JvdXApIDo6IHRsKVxuICAgICgqIGV4dGVuZCBjdXJyZW50IGdyb3VwICopXG4gIGluXG4gIG1hdGNoIGdyb3VwcyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBsIC0+IHJldl9tYXAgbCB+ZjpyZXZcbjs7XG5cbmxldCBncm91cCBsIH5icmVhayA9IGdyb3VwaSBsIH5icmVhazooZnVuIF8geCB5IC0+IGJyZWFrIHggeSkgW0Bub250YWlsXVxuXG5sZXQgc29ydF9hbmRfZ3JvdXAgbCB+Y29tcGFyZSA9XG4gIGwgfD4gc3RhYmxlX3NvcnQgfmNvbXBhcmUgfD4gZ3JvdXAgfmJyZWFrOihmdW4geCB5IC0+IGNvbXBhcmUgeCB5IDw+IDApXG47O1xuXG5sZXQgY29uY2F0X21hcCBsIH5mOihmIFtAbG9jYWxdKSA9XG4gIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKHJldl9hcHBlbmQgKGYgaGQpIGFjYykgdGxcbiAgaW5cbiAgbGV0IHJlcyA9IGF1eCBbXSBsIGluXG4gIHJlc1xuOztcblxubGV0IGNvbmNhdF9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBjb250IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBhdXggKGNvbnQgKyAxKSAocmV2X2FwcGVuZCAoZiBjb250IGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCAwIFtdIGwgW0Bub250YWlsXVxuOztcblxubGV0IG1lcmdlIGwxIGwyIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGFjYyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGFjYyBsMlxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgYWNjIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNvbXBhcmUgaDEgaDIgPD0gMCB0aGVuIGxvb3AgKGgxIDo6IGFjYykgdDEgbDIgZWxzZSBsb29wIChoMiA6OiBhY2MpIGwxIHQyXG4gIGluXG4gIGxvb3AgW10gbDEgbDIgW0Bub250YWlsXVxuOztcblxubW9kdWxlIENhcnRlc2lhbl9wcm9kdWN0ID0gc3RydWN0XG4gICgqIFdlIGFyZSBleHBsaWNpdCBhYm91dCB3aGF0IHdlIGV4cG9ydCBmcm9tIGZ1bmN0b3JzIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5XG4gICAgIHJlYmluZCBtb3JlIGVmZmljaWVudCBsaXN0LXNwZWNpZmljIGZ1bmN0aW9ucy4gKilcblxuICBsZXQgYmluZCA9IGNvbmNhdF9tYXBcbiAgbGV0IG1hcCA9IG1hcFxuICBsZXQgbWFwMiBhIGIgfmYgPSBjb25jYXRfbWFwIGEgfmY6KGZ1biB4IC0+IG1hcCBiIH5mOihmdW4geSAtPiBmIHggeSkpXG4gIGxldCByZXR1cm4geCA9IFsgeCBdXG4gIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBsZXQgKCA+Pj0gKSB0IChmIFtAbG9jYWxdKSA9IGJpbmQgdCB+ZlxuXG4gIG9wZW4gc3RydWN0XG4gICAgbW9kdWxlIEFwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZV91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBtYXAyID0gbWFwMlxuICAgICAgZW5kKVxuXG4gICAgbW9kdWxlIE1vbmFkID0gTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbGV0IGFsbCA9IE1vbmFkLmFsbFxuICBsZXQgYWxsX3VuaXQgPSBNb25hZC5hbGxfdW5pdFxuICBsZXQgaWdub3JlX20gPSBNb25hZC5pZ25vcmVfbVxuICBsZXQgam9pbiA9IE1vbmFkLmpvaW5cblxuICBtb2R1bGUgTW9uYWRfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcbiAgZW5kXG5cbiAgbGV0IGFwcGx5ID0gQXBwbGljYXRpdmUuYXBwbHlcbiAgbGV0IGJvdGggPSBBcHBsaWNhdGl2ZS5ib3RoXG4gIGxldCBtYXAzID0gQXBwbGljYXRpdmUubWFwM1xuICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICBsZXQgKCA8KiApID0gQXBwbGljYXRpdmUuKCA8KiApXG5cbiAgbW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPCo+ICkgPSBBcHBsaWNhdGl2ZS4oIDwqPiApXG4gICAgbGV0ICggKj4gKSA9IEFwcGxpY2F0aXZlLiggKj4gKVxuICAgIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcbiAgZW5kXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgICBsZXQgbWFwID0gbWFwXG4gICAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChDYXJ0ZXNpYW5fcHJvZHVjdCA6IE1vbmFkLlNfbG9jYWwgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuKCoqIHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3RfZXhuIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgfCBbIHggXSAtPiB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0X2V4biB0bFxuICB8IFtdIC0+IGludmFsaWRfYXJnIFwiTGlzdC5sYXN0XCJcbjs7XG5cbigqKiBvcHRpb25hbGx5IHJldHVybnMgZmluYWwgZWxlbWVudCBvZiBsaXN0ICopXG5sZXQgcmVjIGxhc3QgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IFNvbWUgeFxuICB8IF8gOjogdGwgLT4gbGFzdCB0bFxuICB8IFtdIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgaXNfcHJlZml4IGxpc3QgfnByZWZpeCB+ZXF1YWwgPVxuICBtYXRjaCBwcmVmaXggd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBoZCA6OiB0bCAtPlxuICAgIChtYXRjaCBsaXN0IHdpdGhcbiAgICAgfCBbXSAtPiBmYWxzZVxuICAgICB8IGhkJyA6OiB0bCcgLT4gZXF1YWwgaGQgaGQnICYmIGlzX3ByZWZpeCB0bCcgfnByZWZpeDp0bCB+ZXF1YWwpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgYTEgOjogdCAtPlxuICAgIGxldCByZWMgbG9vcCBhMSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGEyIDo6IHQgLT4gaWYgZXF1YWwgYTEgYTIgdGhlbiBTb21lIChhMSwgYTIpIGVsc2UgbG9vcCBhMiB0XG4gICAgaW5cbiAgICBsb29wIGExIHQgW0Bub250YWlsXVxuOztcblxuKCogcmV0dXJucyBsaXN0IHdpdGhvdXQgYWRqYWNlbnQgZHVwbGljYXRlcyAqKVxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzID8od2hpY2hfdG9fa2VlcCA9IGBMYXN0KSBsaXN0IH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCB0b19rZWVwIGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRvX2tlZXAgOjogYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBlcXVhbCBoZCB0b19rZWVwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRvX2tlZXAgPVxuICAgICAgICAgIG1hdGNoIHdoaWNoX3RvX2tlZXAgd2l0aFxuICAgICAgICAgIHwgYEZpcnN0IC0+IHRvX2tlZXBcbiAgICAgICAgICB8IGBMYXN0IC0+IGhkXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgdG9fa2VlcCBhY2N1bSB0bClcbiAgICAgIGVsc2UgbG9vcCBoZCAodG9fa2VlcCA6OiBhY2N1bSkgdGxcbiAgaW5cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiByZXYgKGxvb3AgaGQgW10gdGwpXG47O1xuXG4oKiogcmV0dXJucyBzb3J0ZWQgdmVyc2lvbiBvZiBsaXN0IHdpdGggZHVwbGljYXRlcyByZW1vdmVkICopXG5sZXQgZGVkdXBfYW5kX3NvcnQgbGlzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdCAoKiBwZXJmb3JtYW5jZSBoYWNrICopXG4gIHwgXyAtPlxuICAgIGxldCBlcXVhbCB4IHgnID0gY29tcGFyZSB4IHgnID0gMCBpblxuICAgIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGxpc3QgaW5cbiAgICByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyB+ZXF1YWwgc29ydGVkIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kX2FfZHVwIGwgfmNvbXBhcmUgPVxuICBsZXQgc29ydGVkID0gc29ydCBsIH5jb21wYXJlIGluXG4gIGxldCByZWMgbG9vcCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIHwgWyBfIF0gLT4gTm9uZVxuICAgIHwgaGQxIDo6IChoZDIgOjogXyBhcyB0bCkgLT4gaWYgY29tcGFyZSBoZDEgaGQyID0gMCB0aGVuIFNvbWUgaGQxIGVsc2UgbG9vcCB0bFxuICBpblxuICBsb29wIHNvcnRlZCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgY29udGFpbnNfZHVwIGxzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgbHN0IH5jb21wYXJlIHdpdGhcbiAgfCBTb21lIF8gLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaW5kX2FsbF9kdXBzIGwgfmNvbXBhcmUgPVxuICAoKiBXZSBhZGQgdGhpcyByZXZlcnNhbCwgc28gd2UgY2FuIHNraXAgYSBbcmV2XSBhdCB0aGUgZW5kLiBXZSBjb3VsZCBza2lwXG4gICAgIFtyZXZdIGFueXdheSBzaW5jZSB3ZSBkb24gbm90IGdpdmUgYW55IG9yZGVyaW5nIGd1YXJhbnRlZXMsIGJ1dCBpdCBpc1xuICAgICBuaWNlIHRvIGdldCByZXN1bHRzIGluIG5hdHVyYWwgb3JkZXIuICopXG4gIGxldCBjb21wYXJlIGEgYiA9IGNvbXBhcmUgYiBhIGluXG4gIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGwgaW5cbiAgKCogV2FsayB0aGUgbGlzdCBhbmQgcmVjb3JkIHRoZSBmaXJzdCBvZiBlYWNoIGNvbnNlY3V0aXZlIHJ1biBvZiBpZGVudGljYWwgZWxlbWVudHMgKilcbiAgbGV0IHJlYyBsb29wIHNvcnRlZCBwcmV2IH5hbHJlYWR5X3JlY29yZGVkIGFjYyA9XG4gICAgbWF0Y2ggc29ydGVkIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgcHJldiBoZCA8PiAwXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6ZmFsc2UgYWNjXG4gICAgICBlbHNlIGlmIGFscmVhZHlfcmVjb3JkZWRcbiAgICAgIHRoZW4gbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIGFjY1xuICAgICAgZWxzZSBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOnRydWUgKGhkIDo6IGFjYylcbiAgaW5cbiAgbWF0Y2ggc29ydGVkIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IGhkIDo6IHRsIC0+IGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6ZmFsc2UgW10gW0Bub250YWlsXVxuOztcblxubGV0IHJlYyBhbGxfZXF1YWxfdG8gdCB2IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCB4IDo6IHhzIC0+IGVxdWFsIHggdiAmJiBhbGxfZXF1YWxfdG8geHMgdiB+ZXF1YWxcbjs7XG5cbmxldCBhbGxfZXF1YWwgdCB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiB4cyAtPiBpZiBhbGxfZXF1YWxfdG8geHMgeCB+ZXF1YWwgdGhlbiBTb21lIHggZWxzZSBOb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmluaXQgJWRcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPSAwIHRoZW4gYWNjdW0gZWxzZSBsb29wIChpIC0gMSkgKGYgKGkgLSAxKSA6OiBhY2N1bSlcbiAgaW5cbiAgbG9vcCBuIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCByZXZfZmlsdGVyX21hcCBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBoZCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gbG9vcCB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCBsIFtdIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwIGwgfmYpXG5cbmxldCByZXZfZmlsdGVyX21hcGkgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIGwgYWNjdW0gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAobWF0Y2ggZiBpIGhkIHdpdGhcbiAgICAgICB8IFNvbWUgeCAtPiBsb29wIChpICsgMSkgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSB0bCBhY2N1bSlcbiAgaW5cbiAgbG9vcCAwIGwgW10gW0Bub250YWlsXVxuOztcblxubGV0IGZpbHRlcl9tYXBpIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwaSBsIH5mKVxubGV0IGZpbHRlcl9vcHQgbCA9IGZpbHRlcl9tYXAgbCB+ZjpGbi5pZFxuXG5sZXQgcGFydGl0aW9uM19tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IGZzdCBzbmQgdHJkID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmQsIHJldiB0cmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBgRnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kIHRyZFxuICAgICAgIHwgYFNuZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSB0cmRcbiAgICAgICB8IGBUcmQgeSAtPiBsb29wIHQgZnN0IHNuZCAoeSA6OiB0cmQpKVxuICBpblxuICBsb29wIHQgW10gW10gW10gW0Bub250YWlsXVxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgbGV0IGYgeCA6IF8gRWl0aGVyLnQgPSBpZiBmIHggdGhlbiBGaXJzdCB4IGVsc2UgU2Vjb25kIHggaW5cbiAgcGFydGl0aW9uX21hcCB0IH5mIFtAbm9udGFpbF1cbjs7XG5cbmxldCBwYXJ0aXRpb25fcmVzdWx0IHQgPSBwYXJ0aXRpb25fbWFwIHQgfmY6UmVzdWx0LnRvX2VpdGhlclxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBrZXkgPSAoJ2FbQHRhZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2Nfa2V5X3RhZyA9IExpc3QgW11dKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBrZXlfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2Ega2V5ID1cbiAgICBmdW4gX29mX2FfXzAxOF8gLT4gX29mX2FfXzAxOF9cbiAgOztcblxuICBsZXQgc2V4cF9vZl9rZXkgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2Ega2V5IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgZnVuIF9vZl9hX18wMjBfIC0+IF9vZl9hX18wMjBfXG4gIDs7XG5cbiAgbGV0IGtleV9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Ega2V5IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBUYWdnZWRcbiAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX2tleV90YWdcbiAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICA7IGdyYW1tYXIgPSBfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgIH1cbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgJ2EgdmFsdWUgPSAoJ2FbQHRhZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdmFsdWVfdGFnID0gTGlzdCBbXV0pXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IHZhbHVlX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHZhbHVlID1cbiAgICBmdW4gX29mX2FfXzAyMV8gLT4gX29mX2FfXzAyMV9cbiAgOztcblxuICBsZXQgc2V4cF9vZl92YWx1ZSA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB2YWx1ZSAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDIzXyAtPiBfb2ZfYV9fMDIzX1xuICA7O1xuXG4gIGxldCB2YWx1ZV9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB2YWx1ZSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBUYWdnZWRcbiAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3ZhbHVlX3RhZ1xuICAgICAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICAoKCdhIGtleSAqICdiIHZhbHVlKSBsaXN0W0B0YWcgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3RhZyA9IExpc3QgW11dKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAzMl8gPSBcImxpc3QubWwuQXNzb2MudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMjRfIF9vZl9iX18wMjVfIHhfXzAzM18gLT5cbiAgICAgIGxpc3Rfb2Zfc2V4cFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzAyN187IGFyZzFfXzAyOF8gXSAtPlxuICAgICAgICAgICAgbGV0IHJlczBfXzAyOV8gPSBrZXlfb2Zfc2V4cCBfb2ZfYV9fMDI0XyBhcmcwX18wMjdfXG4gICAgICAgICAgICBhbmQgcmVzMV9fMDMwXyA9IHZhbHVlX29mX3NleHAgX29mX2JfXzAyNV8gYXJnMV9fMDI4XyBpblxuICAgICAgICAgICAgcmVzMF9fMDI5XywgcmVzMV9fMDMwX1xuICAgICAgICAgIHwgc2V4cF9fMDMxXyAtPlxuICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAzMl9cbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICBzZXhwX18wMzFfKVxuICAgICAgICB4X18wMzNfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ2IuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9hX18wMzRfIF9vZl9iX18wMzVfIHhfXzA0MF8gLT5cbiAgICAgIHNleHBfb2ZfbGlzdFxuICAgICAgICAoZnVuIChhcmcwX18wMzZfLCBhcmcxX18wMzdfKSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDM4XyA9IHNleHBfb2Zfa2V5IF9vZl9hX18wMzRfIGFyZzBfXzAzNl9cbiAgICAgICAgICAgYW5kIHJlczFfXzAzOV8gPSBzZXhwX29mX3ZhbHVlIF9vZl9iX18wMzVfIGFyZzFfXzAzN18gaW5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMDM4XzsgcmVzMV9fMDM5XyBdKVxuICAgICAgICB4X18wNDBfXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDpcbiAgICAnYSAnYi5cbiAgICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFRhZ2dlZFxuICAgICAgICAgICAgeyBrZXkgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXIuYXNzb2NfdGFnXG4gICAgICAgICAgICA7IHZhbHVlID0gTGlzdCBbXVxuICAgICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgICAobGlzdF9zZXhwX2dyYW1tYXJcbiAgICAgICAgICAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChrZXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIpLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKCh2YWx1ZV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hcikudW50eXBlZCwgRW1wdHkpICkpXG4gICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudW50eXBlZFxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHBhaXJfb2ZfZ3JvdXAgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCAoaywgXykgOjogXyBhcyBsaXN0IC0+IGssIG1hcCBsaXN0IH5mOnNuZFxuICA7O1xuXG4gIGxldCBncm91cCBhbGlzdCB+ZXF1YWwgPVxuICAgIGdyb3VwIGFsaXN0IH5icmVhazooZnVuICh4LCBfKSAoeSwgXykgLT4gbm90IChlcXVhbCB4IHkpKSB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBzb3J0X2FuZF9ncm91cCBhbGlzdCB+Y29tcGFyZSA9XG4gICAgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmU6KGZ1biAoeCwgXykgKHksIF8pIC0+IGNvbXBhcmUgeCB5KVxuICAgIHw+IG1hcCB+ZjpwYWlyX29mX2dyb3VwXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZXF1YWwga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgfmY6KGZ1biAoa2V5JywgXykgLT4gZXF1YWwga2V5IGtleScpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgKHNuZCB4KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiTGlzdC5Bc3NvYy5maW5kX2V4bjogbm90IGZvdW5kXCIpIGluXG4gICAgbGV0IGZpbmRfZXhuIHQgfmVxdWFsIGtleSA9XG4gICAgICBtYXRjaCBmaW5kIHQga2V5IH5lcXVhbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdmFsdWUgLT4gdmFsdWVcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB+ZXF1YWwga2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgfmVxdWFsIGtleSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIF8gLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCB+ZXF1YWwga2V5ID0gZmlsdGVyIHQgfmY6KGZ1biAoa2V5JywgXykgLT4gbm90IChlcXVhbCBrZXkga2V5JykpIFtAbm9udGFpbF1cblxuICBsZXQgYWRkIHQgfmVxdWFsIGtleSB2YWx1ZSA9XG4gICAgKCogdGhlIHJlbW92ZSBkb2Vzbid0IGNoYW5nZSB0aGUgbWFwIHNlbWFudGljcywgYnV0IGtlZXBzIHRoZSBsaXN0IHNtYWxsICopXG4gICAgKGtleSwgdmFsdWUpIDo6IHJlbW92ZSB0IH5lcXVhbCBrZXlcbiAgOztcblxuICBsZXQgaW52ZXJzZSB0ID0gbWFwIHQgfmY6KGZ1biAoeCwgeSkgLT4geSwgeClcbiAgbGV0IG1hcCB0IH5mID0gbWFwIHQgfmY6KGZ1biAoa2V5LCB2YWx1ZSkgLT4ga2V5LCBmIHZhbHVlKSBbQG5vbnRhaWxdXG5lbmRcblxubGV0IHN1YiBsIH5wb3MgfmxlbiA9XG4gICgqIFdlIHVzZSBbcG9zID4gbGVuZ3RoIGwgLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiBsZW5ndGggbF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gbGVuZ3RoIGwgLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3Quc3ViXCI7XG4gIHJldlxuICAgIChmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgZWwgLT5cbiAgICAgICBpZiBpID49IHBvcyAmJiBpIDwgcG9zICsgbGVuIHRoZW4gZWwgOjogYWNjIGVsc2UgYWNjKSlcbjs7XG5cbmxldCBzcGxpdF9uIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW10sIHRfb3JpZ1xuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bSwgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZywgW10gKCogaW4gdGhpcyBjYXNlLCB0X29yaWcgPSByZXYgYWNjdW0gKilcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfbl0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZSB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxubGV0IHJlYyBkcm9wIHQgbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IF8gOjogdGwgd2hlbiBuID4gMCAtPiBkcm9wIHRsIChuIC0gMSlcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjaHVua3Nfb2YgbCB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDw9IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmNodW5rc19vZjogRXhwZWN0ZWQgbGVuZ3RoID4gMCwgZ290ICVkXCIgbGVuZ3RoICgpO1xuICBsZXQgcmVjIGF1eCBvZl9sZW5ndGggYWNjIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgc3VibGlzdCwgbCA9IHNwbGl0X24gbCBsZW5ndGggaW5cbiAgICAgIGF1eCBvZl9sZW5ndGggKHN1Ymxpc3QgOjogYWNjKSBsXG4gIGluXG4gIGF1eCBsZW5ndGggW10gbFxuOztcblxubGV0IHNwbGl0X3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgdCAtPiByZXYgYWNjLCB0XG4gIGluXG4gIGxvb3AgW10geHMgW0Bub250YWlsXVxuOztcblxuKCogY29waWVkIGZyb20gW3NwbGl0X3doaWxlXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgKilcbmxldCB0YWtlX3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgXyAtPiByZXYgYWNjXG4gIGluXG4gIGxvb3AgW10geHMgW0Bub250YWlsXVxuOztcblxubGV0IHJlYyBkcm9wX3doaWxlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gZHJvcF93aGlsZSB0bCB+ZlxuICB8IHQgLT4gdFxuOztcblxubGV0IGRyb3BfbGFzdCB0ID1cbiAgbWF0Y2ggcmV2IHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBfIDo6IGxzdCAtPiBTb21lIChyZXYgbHN0KVxuOztcblxubGV0IGRyb3BfbGFzdF9leG4gdCA9XG4gIG1hdGNoIGRyb3BfbGFzdCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTGlzdC5kcm9wX2xhc3RfZXhuOiBlbXB0eSBsaXN0XCJcbiAgfCBTb21lIGxzdCAtPiBsc3Rcbjs7XG5cbmxldCBjYXJ0ZXNpYW5fcHJvZHVjdCBsaXN0MSBsaXN0MiA9XG4gIGlmIGlzX2VtcHR5IGxpc3QyXG4gIHRoZW4gW11cbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBsb29wIGwxIGwyIGFjY3VtID1cbiAgICAgIG1hdGNoIGwxIHdpdGhcbiAgICAgIHwgW10gLT4gYWNjdW1cbiAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCB0bCBsMiAocmV2X2FwcGVuZCAobWFwIH5mOihmdW4geCAtPiBoZCwgeCkgbDIpIGFjY3VtKVxuICAgIGluXG4gICAgcmV2IChsb29wIGxpc3QxIGxpc3QyIFtdKSlcbjs7XG5cbmxldCBjb25jYXQgbCA9IGZvbGRfcmlnaHQgbCB+aW5pdDpbXSB+ZjphcHBlbmRcbmxldCBjb25jYXRfbm9fb3JkZXIgbCA9IGZvbGQgbCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBsIC0+IHJldl9hcHBlbmQgbCBhY2MpXG5sZXQgY29ucyB4IGwgPSB4IDo6IGxcblxubGV0IGlzX3NvcnRlZCBsIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gfCBbIF8gXSAtPiB0cnVlXG4gICAgfCB4MSA6OiAoeDIgOjogXyBhcyByZXN0KSAtPiBjb21wYXJlIHgxIHgyIDw9IDAgJiYgbG9vcCByZXN0XG4gIGluXG4gIGxvb3AgbCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPCAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGwgW0Bub250YWlsXVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICBtYXRjaCBsaXN0IHdpdGhcbiAgKCogc3BlY2lhbCBjYXNlcyB0byBzcGVlZCB0aGluZ3MgdXAgaW4gdHJpdmlhbCBjYXNlcyAqKVxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdFxuICB8IFsgeDsgeSBdIC0+IGlmIFJhbmRvbS5TdGF0ZS5ib29sIHJhbmRvbV9zdGF0ZSB0aGVuIFsgeTsgeCBdIGVsc2UgbGlzdFxuICB8IF8gLT5cbiAgICBsZXQgYXJyID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gICAgQXJyYXlfcGVybXV0ZS5wZXJtdXRlIGFyciB+cmFuZG9tX3N0YXRlO1xuICAgIEFycmF5LnRvX2xpc3QgYXJyXG47O1xuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICBpZiBpc19lbXB0eSBsaXN0XG4gIHRoZW4gZmFpbHdpdGggXCJMaXN0LnJhbmRvbV9lbGVtZW50X2V4bjogZW1wdHkgbGlzdFwiXG4gIGVsc2UgbnRoX2V4biBsaXN0IChSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIGxpc3QpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGxpc3QgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgbGlzdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHJlYyBjb21wYXJlIGNtcCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfIC0+IC0xXG4gIHwgXywgW10gLT4gMVxuICB8IHggOjogeHMsIHkgOjogeXMgLT5cbiAgICBsZXQgbiA9IGNtcCB4IHkgaW5cbiAgICBpZiBuID0gMCB0aGVuIGNvbXBhcmUgY21wIHhzIHlzIGVsc2UgblxuOztcblxubGV0IGhhc2hfZm9sZF90ID0gaGFzaF9mb2xkX2xpc3RcblxubGV0IGVxdWFsX2xvY2FsICgoZXF1YWwgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIHQxIHQyID1cbiAgbGV0IHJlYyBsb29wIH5lcXVhbCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCB4MSA6OiB0MSwgeDIgOjogdDIgLT4gZXF1YWwgeDEgeDIgJiYgbG9vcCB+ZXF1YWwgdDEgdDJcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCB+ZXF1YWwgdDEgdDJcbjs7XG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gZiB4IHkgLT4gZXF1YWxfbG9jYWwgZiB4IHlcbjs7XG5cbmxldCB0cmFuc3Bvc2UgPVxuICBsZXQgcmVjIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdCBjb2x1bW5fYWNjIHRyaW1tZWQgZm91bmRfZW1wdHkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gY29sdW1uX2FjYywgdHJpbW1lZCwgZm91bmRfZW1wdHlcbiAgICB8IFtdIDo6IHRsIC0+IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgY29sdW1uX2FjYyB0cmltbWVkIHRydWVcbiAgICB8ICh4IDo6IHhzKSA6OiB0bCAtPlxuICAgICAgc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiB0bCAoeCA6OiBjb2x1bW5fYWNjKSAoeHMgOjogdHJpbW1lZCkgZm91bmRfZW1wdHlcbiAgaW5cbiAgbGV0IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyA9IHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyBbXSBbXSBmYWxzZSBpblxuICBsZXQgcmVjIGxvb3Agcm93cyBjb2x1bW5zIGRvX3JldiA9XG4gICAgbWF0Y2ggc3BsaXRfb2ZmX2ZpcnN0X2NvbHVtbiByb3dzIHdpdGhcbiAgICB8IFtdLCBbXSwgXyAtPiBTb21lIChyZXYgY29sdW1ucylcbiAgICB8IGNvbHVtbiwgdHJpbW1lZF9yb3dzLCBmb3VuZF9lbXB0eSAtPlxuICAgICAgaWYgZm91bmRfZW1wdHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBpZiBkb19yZXYgdGhlbiByZXYgY29sdW1uIGVsc2UgY29sdW1uIGluXG4gICAgICAgIGxvb3AgdHJpbW1lZF9yb3dzIChjb2x1bW4gOjogY29sdW1ucykgKG5vdCBkb19yZXYpKVxuICBpblxuICBmdW4gdCAtPiBsb29wIHQgW10gdHJ1ZVxuOztcblxuZXhjZXB0aW9uIFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgb2YgaW50IGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHNdXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgYXJnMF9fMDQxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDQyXyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2ludCBhcmcwX18wNDFfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGlzdC5tbC5UcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXCJcbiAgICAgICAgICA7IHJlczBfXzA0Ml9cbiAgICAgICAgICBdXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRyYW5zcG9zZV9leG4gbCA9XG4gIG1hdGNoIHRyYW5zcG9zZSBsIHdpdGhcbiAgfCBTb21lIGwgLT4gbFxuICB8IE5vbmUgLT4gcmFpc2UgKFRyYW5zcG9zZV9nb3RfbGlzdHNfb2ZfZGlmZmVyZW50X2xlbmd0aHMgKG1hcCBsIH5mOmxlbmd0aCkpXG47O1xuXG5sZXQgaW50ZXJzcGVyc2UgdCB+c2VwID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCB4IDo6IHhzIC0+IHggOjogZm9sZF9yaWdodCB4cyB+aW5pdDpbXSB+ZjooZnVuIHkgYWNjIC0+IHNlcCA6OiB5IDo6IGFjYylcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuXG5sZXQgaXNfc3VmZml4IGxpc3QgfnN1ZmZpeCB+ZXF1YWw6KChlcXVhbF9lbHQgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGxpc3RfbGVuID0gbGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIGxpc3RfbGVuID49IHN1ZmZpeF9sZW5cbiAgJiYgZXF1YWxfbG9jYWwgZXF1YWxfZWx0IChkcm9wIGxpc3QgKGxpc3RfbGVuIC0gc3VmZml4X2xlbikpIHN1ZmZpeFxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGFzIG1hbnkgcGxhY2VzIGFzIHBvc3NpYmxlLiBQbGVhc2UgYXZvaWRcbiAgIGFkZGluZyBuZXcgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb19pbnRmXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG5tb2R1bGUgTWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IEV4biBvZiBleG5cbiAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbjAudCBvcHRpb25cbiAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgcmVjIHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgYXJnMF9fMDAxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAyXyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ291bGRfbm90X2NvbnN0cnVjdFwiOyByZXMwX18wMDJfIF1cbiAgICAgIHwgU3RyaW5nIGFyZzBfXzAwM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlN0cmluZ1wiOyByZXMwX18wMDRfIF1cbiAgICAgIHwgRXhuIGFyZzBfXzAwNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNl8gPSBzZXhwX29mX2V4biBhcmcwX18wMDVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4blwiOyByZXMwX18wMDZfIF1cbiAgICAgIHwgU2V4cCBhcmcwX18wMDdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDhfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDA3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwXCI7IHJlczBfXzAwOF8gXVxuICAgICAgfCBUYWdfc2V4cCAoYXJnMF9fMDA5XywgYXJnMV9fMDEwXywgYXJnMl9fMDExXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDlfXG4gICAgICAgIGFuZCByZXMxX18wMTNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDEwX1xuICAgICAgICBhbmQgcmVzMl9fMDE0XyA9IHNleHBfb2Zfb3B0aW9uIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgYXJnMl9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19zZXhwXCI7IHJlczBfXzAxMl87IHJlczFfXzAxM187IHJlczJfXzAxNF8gXVxuICAgICAgfCBUYWdfdCAoYXJnMF9fMDE1XywgYXJnMV9fMDE2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxN18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTVfXG4gICAgICAgIGFuZCByZXMxX18wMThfID0gc2V4cF9vZl90IGFyZzFfXzAxNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3RcIjsgcmVzMF9fMDE3XzsgcmVzMV9fMDE4XyBdXG4gICAgICB8IFRhZ19hcmcgKGFyZzBfXzAxOV8sIGFyZzFfXzAyMF8sIGFyZzJfXzAyMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE5X1xuICAgICAgICBhbmQgcmVzMV9fMDIzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAyMF9cbiAgICAgICAgYW5kIHJlczJfXzAyNF8gPSBzZXhwX29mX3QgYXJnMl9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19hcmdcIjsgcmVzMF9fMDIyXzsgcmVzMV9fMDIzXzsgcmVzMl9fMDI0XyBdXG4gICAgICB8IE9mX2xpc3QgKGFyZzBfXzAyNV8sIGFyZzFfXzAyNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9pbnQgYXJnMF9fMDI1X1xuICAgICAgICBhbmQgcmVzMV9fMDI4XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX3QgYXJnMV9fMDI2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPZl9saXN0XCI7IHJlczBfXzAyN187IHJlczFfXzAyOF8gXVxuICAgICAgfCBXaXRoX2JhY2t0cmFjZSAoYXJnMF9fMDI5XywgYXJnMV9fMDMwXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBzZXhwX29mX3QgYXJnMF9fMDI5X1xuICAgICAgICBhbmQgcmVzMV9fMDMyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzFfXzAzMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiV2l0aF9iYWNrdHJhY2VcIjsgcmVzMF9fMDMxXzsgcmVzMV9fMDMyXyBdXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcmVjIHRvX3N0cmluZ3NfaHVtIHQgYWMgPVxuICAgICgqIFdlIHVzZSBbU2V4cC50b19zdHJpbmdfbWFjaF0sIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgaW1wbGVtZW50aW5nXG4gICAgICAgW3RvX3N0cmluZ3NfaHVtXSwgYmVjYXVzZSB3ZSB3YW50IHRoZSBpbmZvIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lLCBhbmQgb25jZSB3ZSd2ZVxuICAgICAgIGhhZCB0byByZXNvcnQgdG8gc2V4cHMsIHRoZSBtZXNzYWdlIGlzIGdvaW5nIHRvIHN0YXJ0IG5vdCBsb29raW5nIHNvIHByZXR0eVxuICAgICAgIGFueXdheS4gKilcbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgc2V4cCAtPlxuICAgICAgXCJjb3VsZCBub3QgY29uc3RydWN0IGluZm86IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gU2V4cC50b19zdHJpbmdfbWFjaCAoRXhuLnNleHBfb2ZfdCBleG4pIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBfKSAtPiB0YWcgOjogXCI6IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gdGFnIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhYyBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gYm9keSBlbHNlIHRhZyA6OiBcIjogXCIgOjogYm9keVxuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKFwiXFxuQmFja3RyYWNlOlxcblwiIDo6IGJhY2t0cmFjZSA6OiBhYylcbiAgICB8IE9mX2xpc3QgKHRydW5jX2FmdGVyLCB0cykgLT5cbiAgICAgIGxldCB0cyA9XG4gICAgICAgIG1hdGNoIHRydW5jX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRzXG4gICAgICAgIHwgU29tZSBtYXggLT5cbiAgICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIHRzIGluXG4gICAgICAgICAgaWYgbiA8PSBtYXhcbiAgICAgICAgICB0aGVuIHRzXG4gICAgICAgICAgZWxzZSBMaXN0LnRha2UgdHMgbWF4IEAgWyBTdHJpbmcgKFByaW50Zi5zcHJpbnRmIFwiYW5kICVkIG1vcmUgaW5mb1wiIChuIC0gbWF4KSkgXVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPlxuICAgICAgICB0b19zdHJpbmdzX2h1bSB0IChpZiBMaXN0LmlzX2VtcHR5IGFjIHRoZW4gYWMgZWxzZSBcIjsgXCIgOjogYWMpKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IFN0cmluZy5jb25jYXQgKHRvX3N0cmluZ3NfaHVtIHQgW10pXG5cbiAgKCogTGlrZSBbU3RyaW5nLnNwbGl0X2xpbmVzXSwgYnV0IGxlc3Mgb3B0aW1pemVkIGFuZCBkb2Vzbid0IGhhbmRsZSBbXFxyXFxuXS4gQXZvaWRzIGFcbiAgICAgZGVwZW5kZW5jeSBjeWNsZS4gSW1wcm92ZXMgb24gbmFpdmUgW1N0cmluZy5zcGxpdF9vbl9jaGFyXSBieSByZW1vdmluZyBlbXB0eSBmaW5hbFxuICAgICBsaW5lLiAqKVxuICBsZXQgc3BsaXRfbGluZXMgc3RyaW5nID1cbiAgICBsZXQgc3RyaW5nID1cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICdcXG4nIChTdHJpbmcuZ2V0IHN0cmluZyAobGVuIC0gMSkpXG4gICAgICB0aGVuIFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6MCB+bGVuOihsZW4gLSAxKVxuICAgICAgZWxzZSBzdHJpbmdcbiAgICBpblxuICAgIFN0cmluZy5zcGxpdF9vbl9jaGFyIHN0cmluZyB+c2VwOidcXG4nXG4gIDs7XG5cbiAgbGV0IHJlYyB0b19zZXhwc19odW0gdCBhYyA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IF8gYXMgdCAtPiBzZXhwX29mX3QgdCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBBdG9tIHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBFeG4uc2V4cF9vZl90IGV4biA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIGhlcmUpIC0+XG4gICAgICBMaXN0XG4gICAgICAgIChBdG9tIHRhZ1xuICAgICAgICAgOjogc2V4cFxuICAgICAgICAgOjpcbiAgICAgICAgIChtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgaGVyZSAtPiBbIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZSBdKSlcbiAgICAgIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiBMaXN0IChBdG9tIHRhZyA6OiB0b19zZXhwc19odW0gdCBbXSkgOjogYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gc2V4cCA6OiB0b19zZXhwc19odW0gdCBbXSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gTGlzdCBib2R5IDo6IGFjIGVsc2UgTGlzdCAoQXRvbSB0YWcgOjogYm9keSkgOjogYWNcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICBTZXhwLkxpc3QgWyB0b19zZXhwX2h1bSB0OyBzZXhwX29mX2xpc3Qgc2V4cF9vZl9zdHJpbmcgKHNwbGl0X2xpbmVzIGJhY2t0cmFjZSkgXVxuICAgICAgOjogYWNcbiAgICB8IE9mX2xpc3QgKF8sIHRzKSAtPlxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+IHRvX3NleHBzX2h1bSB0IGFjKVxuXG4gIGFuZCB0b19zZXhwX2h1bSB0ID1cbiAgICBtYXRjaCB0b19zZXhwc19odW0gdCBbXSB3aXRoXG4gICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgfCBzZXhwcyAtPiBTZXhwLkxpc3Qgc2V4cHNcbiAgOztcblxuICAoKiBXZSB1c2UgW3Byb3RlY3RdIHRvIGd1YXJkIGFnYWluc3QgZXhjZXB0aW9ucyByYWlzZWQgYnkgdXNlci1zdXBwbGllZCBmdW5jdGlvbnMsIHNvXG4gICAgIHRoYXQgZmFpbHVyZSB0byBwcm9kdWNlIG9uZSBwYXJ0IG9mIGFuIGluZm8gZG9lc24ndCBpbnRlcmZlcmUgd2l0aCBvdGhlciBwYXJ0cy4gKilcbiAgbGV0IHByb3RlY3QgZiA9XG4gICAgdHJ5IGYgKCkgd2l0aFxuICAgIHwgZXhuIC0+IENvdWxkX25vdF9jb25zdHJ1Y3QgKEV4bi5zZXhwX29mX3QgZXhuKVxuICA7O1xuXG4gIGxldCBvZl9pbmZvIGluZm8gPSBwcm90ZWN0IChmdW4gKCkgLT4gTGF6eS5mb3JjZSBpbmZvKVxuICBsZXQgdG9faW5mbyB0ID0gbGF6eSB0XG5lbmRcblxub3BlbiBNZXNzYWdlXG5cbnR5cGUgdCA9IE1lc3NhZ2UudCBMYXp5LnRcblxubGV0IGludmFyaWFudCBfID0gKClcbmxldCB0b19tZXNzYWdlID0gTWVzc2FnZS5vZl9pbmZvXG5sZXQgb2ZfbWVzc2FnZSA9IE1lc3NhZ2UudG9faW5mb1xuXG4oKiBJdCBpcyBPSyB0byB1c2UgW01lc3NhZ2UudG9fc2V4cF9odW1dLCB3aGljaCBpcyBub3Qgc3RhYmxlLCBiZWNhdXNlIFt0X29mX3NleHBdIGJlbG93XG4gICBjYW4gaGFuZGxlIGFueSBzZXhwLiAqKVxubGV0IHNleHBfb2ZfdCB0ID0gTWVzc2FnZS50b19zZXhwX2h1bSAodG9fbWVzc2FnZSB0KVxubGV0IHRfb2Zfc2V4cCBzZXhwID0gbGF6eSAoTWVzc2FnZS5TZXhwIHNleHApXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBBbnkgXCJJbmZvLnRcIiB9XG5sZXQgY29tcGFyZSB0MSB0MiA9IFNleHAuY29tcGFyZSAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGVxdWFsIHQxIHQyID0gU2V4cC5lcXVhbCAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBTZXhwLmhhc2hfZm9sZF90IHN0YXRlIChzZXhwX29mX3QgdClcbmxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG5cbmxldCB0b19zdHJpbmdfaHVtIHQgPVxuICBtYXRjaCB0b19tZXNzYWdlIHQgd2l0aFxuICB8IFN0cmluZyBzIC0+IHNcbiAgfCBtZXNzYWdlIC0+IFNleHAudG9fc3RyaW5nX2h1bSAoTWVzc2FnZS50b19zZXhwX2h1bSBtZXNzYWdlKVxuOztcblxubGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gTWVzc2FnZS50b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgKHRvX21lc3NhZ2UgdClcbmxldCB0b19zdHJpbmdfbWFjaCB0ID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl90IHQpXG5sZXQgb2ZfbGF6eSBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV9zZXhwIGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU2V4cCAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV90IGxhenlfdCA9IExhenkuam9pbiBsYXp5X3RcbmxldCBvZl9zdHJpbmcgbWVzc2FnZSA9IExhenkuZnJvbV92YWwgKFN0cmluZyBtZXNzYWdlKVxubGV0IGNyZWF0ZWYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIG9mX3N0cmluZyBmb3JtYXRcbmxldCBvZl90aHVuayBmID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoZiAoKSkpKVxuXG5sZXQgY3JlYXRlID9oZXJlID9zdHJpY3QgdGFnIHggc2V4cF9vZl94ID1cbiAgbWF0Y2ggc3RyaWN0IHdpdGhcbiAgfCBOb25lIC0+IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpKVxuICB8IFNvbWUgKCkgLT4gb2ZfbWVzc2FnZSAoVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBMYXp5LmZyb21fdmFsIChTZXhwIHNleHApXG5sZXQgdGFnIHQgfnRhZyA9IGxhenkgKFRhZ190ICh0YWcsIHRvX21lc3NhZ2UgdCkpXG5cbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnIChcIlwiLCBMYXp5LmZvcmNlIHRhZywgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgdGFnX3MgdCB+dGFnID0gdGFnX3NfbGF6eSB0IH50YWc6KExhenkuZnJvbV92YWwgdGFnKVxuXG5sZXQgdGFnX2FyZyB0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnICh0YWcsIHNleHBfb2ZfeCB4LCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCBvZl9saXN0ID90cnVuY19hZnRlciB0cyA9IGxhenkgKE9mX2xpc3QgKHRydW5jX2FmdGVyLCBMaXN0Lm1hcCB0cyB+Zjp0b19tZXNzYWdlKSlcblxuZXhjZXB0aW9uIEV4biBvZiB0XG5cbmxldCAoKSA9XG4gICgqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2VcbiAgICAgW2V4Y2VwdGlvbiBFeG4gb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF0gLi4uIFtAQEBlbmRdXSB0byBlbGltaW5hdGUgdGhlIGV4dHJhXG4gICAgIHdyYXBwaW5nIG9mIFwiKEV4biAuLi4pXCIuICopXG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeG5dIChmdW5jdGlvblxuICAgIHwgRXhuIHQgLT4gc2V4cF9vZl90IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHRvX2V4biB0ID1cbiAgaWYgbm90IChMYXp5LmlzX3ZhbCB0KVxuICB0aGVuIEV4biB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIExhenkuZm9yY2UgdCB3aXRoXG4gICAgfCBNZXNzYWdlLkV4biBleG4gLT4gZXhuXG4gICAgfCBfIC0+IEV4biB0KVxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9XG4gIGxldCBiYWNrdHJhY2UgPVxuICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYEdldCAtPlxuICAgICAgU29tZSAoU3RkbGliLlByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gICAgfCBTb21lIChgVGhpcyBzKSAtPiBTb21lIHNcbiAgaW5cbiAgbWF0Y2ggZXhuLCBiYWNrdHJhY2Ugd2l0aFxuICB8IEV4biB0LCBOb25lIC0+IHRcbiAgfCBFeG4gdCwgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKHRvX21lc3NhZ2UgdCwgYmFja3RyYWNlKSlcbiAgfCBfLCBOb25lIC0+IExhenkuZnJvbV92YWwgKE1lc3NhZ2UuRXhuIGV4bilcbiAgfCBfLCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAoU2V4cCAoRXhuLnNleHBfb2ZfdCBleG4pLCBiYWNrdHJhY2UpKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbmZvXCJcbiAgICBsZXQgcHAgcHBmIHQgPSBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZ19odW0gdClcbiAgZW5kKVxuXG5tb2R1bGUgSW50ZXJuYWxfcmVwciA9IE1lc3NhZ2VcblxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbRXJyb3JdIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMuICBQbGVhc2UgYXZvaWQgYWRkaW5nIG5ld1xuICAgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQW55IFwiRXJyb3IudFwiIH1cbmxldCByYWlzZSB0ID0gcmFpc2UgKHRvX2V4biB0KVxubGV0IHJhaXNlX3Mgc2V4cCA9IHJhaXNlIChjcmVhdGVfcyBzZXhwKVxubGV0IHRvX2luZm8gdCA9IHRcbmxldCBvZl9pbmZvIHQgPSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXJfcHAgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuRXJyb3JcIlxuICAgIGxldCBwcCA9IHBwXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnZhcmlhbnRfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubGV0IGludmFyaWFudCBoZXJlIHQgc2V4cF9vZl90IGYgOiB1bml0ID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiaW52YXJpYW50IGZhaWxlZFwiXG4gICAgICAgICBbIFwiXCIsIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZVxuICAgICAgICAgOyBcImV4blwiLCBzZXhwX29mX2V4biBleG5cbiAgICAgICAgIDsgXCJcIiwgc2V4cF9vZl90IHRcbiAgICAgICAgIF0pXG47O1xuXG5sZXQgY2hlY2tfZmllbGQgdCBmIGZpZWxkID1cbiAgdHJ5IGYgKEZpZWxkLmdldCBmaWVsZCB0KSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJwcm9ibGVtIHdpdGggZmllbGRcIlxuICAgICAgICAgWyBcImZpZWxkXCIsIHNleHBfb2Zfc3RyaW5nIChGaWVsZC5uYW1lIGZpZWxkKTsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuIF0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnRcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDAxXyBiX18wMDJfIC0+IFJlc3VsdC5jb21wYXJlIF9jbXBfX2EgRXJyb3IuY29tcGFyZSBhX18wMDFfIGJfXzAwMl9cbjs7XG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMDdfIGJfXzAwOF8gLT4gUmVzdWx0LmVxdWFsIF9jbXBfX2EgRXJyb3IuZXF1YWwgYV9fMDA3XyBiX18wMDhfXG47O1xuXG5sZXQgaGFzaF9mb2xkX3QgOlxuICAnYS5cbiAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAtPiAnYSB0XG4gIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICA9XG4gIGZ1biBfaGFzaF9mb2xkX2EgaHN2IGFyZyAtPiBSZXN1bHQuaGFzaF9mb2xkX3QgX2hhc2hfZm9sZF9hIEVycm9yLmhhc2hfZm9sZF90IGhzdiBhcmdcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAxM18geF9fMDE1XyAtPiBSZXN1bHQudF9vZl9zZXhwIF9vZl9hX18wMTNfIEVycm9yLnRfb2Zfc2V4cCB4X18wMTVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMTZfIHhfXzAxN18gLT4gUmVzdWx0LnNleHBfb2ZfdCBfb2ZfYV9fMDE2XyBFcnJvci5zZXhwX29mX3QgeF9fMDE3X1xuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBSZXN1bHQudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hciBFcnJvci50X3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0ICggPj49ICkgPSBSZXN1bHQuKCA+Pj0gKVxubGV0ICggPj58ICkgPSBSZXN1bHQuKCA+PnwgKVxubGV0IGJpbmQgPSBSZXN1bHQuYmluZFxubGV0IGlnbm9yZV9tID0gUmVzdWx0Lmlnbm9yZV9tXG5sZXQgam9pbiA9IFJlc3VsdC5qb2luXG5sZXQgbWFwID0gUmVzdWx0Lm1hcFxubGV0IHJldHVybiA9IFJlc3VsdC5yZXR1cm5cblxubW9kdWxlIE1vbmFkX2luZml4ID0gUmVzdWx0Lk1vbmFkX2luZml4XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEVycm9yIGVycm9yIC0+IEVycm9yLmludmFyaWFudCBlcnJvclxuOztcblxubGV0IG1hcDIgYSBiIH5mID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgT2sgeCwgT2sgeSAtPiBPayAoZiB4IHkpXG4gIHwgT2sgXywgKEVycm9yIF8gYXMgZSkgfCAoRXJyb3IgXyBhcyBlKSwgT2sgXyAtPiBlXG4gIHwgRXJyb3IgZTEsIEVycm9yIGUyIC0+IEVycm9yIChFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG47O1xuXG5tb2R1bGUgRm9yX2FwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZV91c2luZ19tYXAyX2xvY2FsIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBtYXAyID0gbWFwMlxuICBlbmQpXG5cbmxldCAoICo+ICkgPSBGb3JfYXBwbGljYXRpdmUuKCAqPiApXG5sZXQgKCA8KiApID0gRm9yX2FwcGxpY2F0aXZlLiggPCogKVxubGV0ICggPCo+ICkgPSBGb3JfYXBwbGljYXRpdmUuKCA8Kj4gKVxubGV0IGFwcGx5ID0gRm9yX2FwcGxpY2F0aXZlLmFwcGx5XG5sZXQgYm90aCA9IEZvcl9hcHBsaWNhdGl2ZS5ib3RoXG5sZXQgbWFwMyA9IEZvcl9hcHBsaWNhdGl2ZS5tYXAzXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IEZvcl9hcHBsaWNhdGl2ZS5BcHBsaWNhdGl2ZV9pbmZpeFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxubGV0IG9rID0gUmVzdWx0Lm9rXG5sZXQgaXNfb2sgPSBSZXN1bHQuaXNfb2tcbmxldCBpc19lcnJvciA9IFJlc3VsdC5pc19lcnJvclxuXG5sZXQgdHJ5X3dpdGggPyhiYWNrdHJhY2UgPSBmYWxzZSkgZiA9XG4gIHRyeSBPayAoZiAoKSkgd2l0aFxuICB8IGV4biAtPiBFcnJvciAoRXJyb3Iub2ZfZXhuIGV4biA/YmFja3RyYWNlOihpZiBiYWNrdHJhY2UgdGhlbiBTb21lIGBHZXQgZWxzZSBOb25lKSlcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9iYWNrdHJhY2UgZiA9IGpvaW4gKHRyeV93aXRoID9iYWNrdHJhY2UgZilcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXJyIC0+IEVycm9yLnJhaXNlIGVyclxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IEVycm9yIChFcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5cbmxldCBvZl9leG5fcmVzdWx0ID9iYWNrdHJhY2UgPSBmdW5jdGlvblxuICB8IE9rIF8gYXMgeiAtPiB6XG4gIHwgRXJyb3IgZXhuIC0+IG9mX2V4biA/YmFja3RyYWNlIGV4blxuOztcblxubGV0IGVycm9yID9oZXJlID9zdHJpY3QgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIEVycm9yIChFcnJvci5jcmVhdGUgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGVycm9yX3Mgc2V4cCA9IEVycm9yIChFcnJvci5jcmVhdGVfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtZXNzYWdlID0gRXJyb3IgKEVycm9yLm9mX3N0cmluZyBtZXNzYWdlKVxubGV0IGVycm9yZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KEVycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3MgfnRhZylcbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBSZXN1bHQubWFwX2Vycm9yIHQgfmY6KGZ1biBlIC0+IEVycm9yLnRhZ19hcmcgZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgcyA9IGVycm9yIFwidW5pbXBsZW1lbnRlZFwiIHMgc2V4cF9vZl9zdHJpbmdcblxuXG5sZXQgY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vayB+b25fZXJyb3IgPVxuICBtYXRjaCBSZXN1bHQuY29tYmluZV9lcnJvcnMgbGlzdCB3aXRoXG4gIHwgT2sgeCAtPiBPayAob25fb2sgeClcbiAgfCBFcnJvciBlcnJzIC0+IEVycm9yIChvbl9lcnJvciBlcnJzKVxuOztcblxubGV0IGlnbm9yZV91bml0X2xpc3QgKF8gOiB1bml0IGxpc3QpID0gKClcblxubGV0IGVycm9yX29mX2xpc3RfaWZfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBbIGUgXSAtPiBlXG4gIHwgbGlzdCAtPiBFcnJvci5vZl9saXN0IGxpc3Rcbjs7XG5cbmxldCBhbGwgbGlzdCA9IGNvbWJpbmVfaW50ZXJuYWwgbGlzdCB+b25fb2s6Rm4uaWQgfm9uX2Vycm9yOmVycm9yX29mX2xpc3RfaWZfbmVjZXNzYXJ5XG5cbmxldCBhbGxfdW5pdCBsaXN0ID1cbiAgY29tYmluZV9pbnRlcm5hbCBsaXN0IH5vbl9vazppZ25vcmVfdW5pdF9saXN0IH5vbl9lcnJvcjplcnJvcl9vZl9saXN0X2lmX25lY2Vzc2FyeVxuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzIGxpc3QgPSBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOkZuLmlkIH5vbl9lcnJvcjpFcnJvci5vZl9saXN0XG5cbmxldCBjb21iaW5lX2Vycm9yc191bml0IGxpc3QgPVxuICBjb21iaW5lX2ludGVybmFsIGxpc3Qgfm9uX29rOmlnbm9yZV91bml0X2xpc3Qgfm9uX2Vycm9yOkVycm9yLm9mX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBsZXQgb2ssIGVycnMgPSBMaXN0LnBhcnRpdGlvbl9tYXAgbCB+ZjpSZXN1bHQudG9fZWl0aGVyIGluXG4gIG1hdGNoIG9rIHdpdGhcbiAgfCBbXSAtPiBFcnJvciAoRXJyb3Iub2ZfbGlzdCBlcnJzKVxuICB8IF8gLT4gT2sgb2tcbjs7XG5cbmxldCBmaW5kX29rIGwgPVxuICBtYXRjaCBMaXN0LmZpbmRfbWFwIGwgfmY6UmVzdWx0Lm9rIHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBPayBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIEVycm9yXG4gICAgICAoRXJyb3Iub2ZfbGlzdFxuICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgICAgIHwgT2sgXyBhcyB4IC0+IHJldHVybiB4XG4gICAgICAgICAgICB8IEVycm9yIGVyciAtPiBlcnIpKSkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXAgPSBSZXN1bHQubWFwXG5sZXQgaXRlciA9IFJlc3VsdC5pdGVyXG5sZXQgaXRlcl9lcnJvciA9IFJlc3VsdC5pdGVyX2Vycm9yXG4iLCIoKiBUaGlzIGlzIGJyb2tlbiBvZmYgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIFNpZ24gYW5kIENvbXBhcmFibGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5lZ1xuICB8IFplcm9cbiAgfCBQb3NcbltAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxubGV0IHRfb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduMC5tbC50XCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInBvc1wiIHwgXCJQb3NcIikgLT4gUG9zXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgfCBzZXhwX18wMDJfIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuOztcblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgTmVnIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5lZ1wiXG4gICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwiTmVnXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG5sZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gIChmdW4gaHN2IGFyZyAtPlxuICAgICBtYXRjaCBhcmcgd2l0aFxuICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IFBvcyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gIGxldCBmdW5jIGFyZyA9XG4gICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAobGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5jcmVhdGUgKCkgaW5cbiAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICBpblxuICBmdW4geCAtPiBmdW5jIHhcbjs7XG5cbmxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvcyBdIDogdCBsaXN0KVxuXG5bQEBAZW5kXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHQpIHkgPSBQb2x5LiggPCApIHggeVxuICBsZXQgKCA8PSApICh4IDogdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogdCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiB0KSB5ID0gUG9seS4oID0gKSB4IHlcbiAgbGV0ICggPiApICh4IDogdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiB0KSB5ID0gUG9seS5lcXVhbCB4IHlcbiAgbGV0IG1heCAoeCA6IHQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogdCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubGV0IG9mX3N0cmluZyBzID0gdF9vZl9zZXhwIChzZXhwX29mX3N0cmluZyBzKVxubGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gLTFcbiAgfCBaZXJvIC0+IDBcbiAgfCBQb3MgLT4gMVxuOztcblxubGV0IF8gPSBoYXNoXG5cbigqIElnbm9yZSB0aGUgaGFzaCBmdW5jdGlvbiBwcm9kdWNlZCBieSBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaF0gKilcbmxldCBoYXNoID0gdG9faW50XG5sZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnblwiXG5sZXQgb2ZfaW50IG4gPSBpZiBuIDwgMCB0aGVuIE5lZyBlbHNlIGlmIG4gPSAwIHRoZW4gWmVybyBlbHNlIFBvc1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUXG5cbiAgbGV0IGlzX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+IDBcbiAgbGV0IGlzX25vbl9uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPj0gMFxuICBsZXQgaXNfbmVnYXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDwgMFxuICBsZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSBjb21wYXJlIHQgemVybyA8PSAwXG4gIGxldCBzaWduIHQgPSBTaWduMC5vZl9pbnQgKGNvbXBhcmUgdCB6ZXJvKVxuZW5kXG5cbm1vZHVsZSBQb2x5IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgUG9seVxuICBlbmRcblxuICBpbmNsdWRlIFBvbHlcblxuICBsZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbiAgbGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxuICBsZXQgY2xhbXBfZXhuIHQgfm1pbiB+bWF4ID1cbiAgICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICAgIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuICA7O1xuXG4gIGxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gICAgaWYgbWluID4gbWF4XG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICAgIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgOztcblxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuZW5kXG5cbmxldCBndCBjbXAgYSBiID0gY21wIGEgYiA+IDBcbmxldCBsdCBjbXAgYSBiID0gY21wIGEgYiA8IDBcbmxldCBnZXEgY21wIGEgYiA9IGNtcCBhIGIgPj0gMFxubGV0IGxlcSBjbXAgYSBiID0gY21wIGEgYiA8PSAwXG5sZXQgZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPSAwXG5sZXQgbm90X2VxdWFsIGNtcCBhIGIgPSBjbXAgYSBiIDw+IDBcbmxldCBtaW4gY21wIHQgdCcgPSBpZiBsZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcbmxldCBtYXggY21wIHQgdCcgPSBpZiBnZXEgY21wIHQgdCcgdGhlbiB0IGVsc2UgdCdcblxubW9kdWxlIEluZml4IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBJbmZpeCB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbGV0ICggPiApIGEgYiA9IGd0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPCApIGEgYiA9IGx0IFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPj0gKSBhIGIgPSBnZXEgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8PSApIGEgYiA9IGxlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoID0gKSBhIGIgPSBlcXVhbCBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw+ICkgYSBiID0gbm90X2VxdWFsIFQuY29tcGFyZSBhIGJcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIENvbXBhcmlzb25zIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeCAoVClcblxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgbWluIHQgdCcgPSBtaW4gY29tcGFyZSB0IHQnXG4gIGxldCBtYXggdCB0JyA9IG1heCBjb21wYXJlIHQgdCdcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmF0b3IuY29tcGFyZVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IENvbXBhcmlzb25zIChUKVxuICBpbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHQgdCcgPSBjb21wYXJlIHQnIHRcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIFtAaW5saW5lZCBoaW50XSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIEluaGVyaXQgKEMgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSAoVCA6IHNpZ1xuICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICAgICAgW0BAQGVuZF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IChULnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjb21wYXJlIHQgdCcgPSBDLmNvbXBhcmUgKFQuY29tcG9uZW50IHQpIChULmNvbXBvbmVudCB0JylcbiAgZW5kKVxuXG4oKiBjb21wYXJlIFt4XSBhbmQgW3ldIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGZ1bmN0aW9ucyBpbiB0aGUgbGlzdCBbY21wc10gKilcbmxldCBsZXhpY29ncmFwaGljIGNtcHMgeCB5ID1cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IGNtcCA6OiBjbXBzIC0+XG4gICAgICBsZXQgcmVzID0gY21wIHggeSBpblxuICAgICAgaWYgcmVzID0gMCB0aGVuIGxvb3AgY21wcyBlbHNlIHJlc1xuICAgIHwgW10gLT4gMFxuICBpblxuICBsb29wIGNtcHNcbjs7XG5cbmxldCBsaWZ0IGNtcCB+ZiB4IHkgPSBjbXAgKGYgeCkgKGYgeSlcbmxldCByZXZlcnNlIGNtcCB4IHkgPSBjbXAgeSB4XG5cbnR5cGUgJ2EgcmV2ZXJzZWQgPSAnYVxuXG5sZXQgY29tcGFyZV9yZXZlcnNlZCBjbXAgeCB5ID0gY21wIHkgeFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaGFibGUuS2V5ICopXG5tb2R1bGUgdHlwZSBLZXkgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cblxuICAoKiogVmFsdWVzIHJldHVybmVkIGJ5IFtoYXNoXSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4gIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpbiB0aGVcbiAgICAgIGNhc2UgdGhhdCBbaGFzaF0gcmV0dXJucyBhIG5lZ2F0aXZlIHZhbHVlLiAqKVxuICB2YWwgaGFzaCA6IHQgLT4gaW50XG5lbmRcblxubW9kdWxlIEhhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBoYXNoIDogJ2EgLT4gaW50XG4gICAgOyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gICAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgKCoqIFRoaXMgZnVuY3Rpb24gaXMgc291bmQgYnV0IG5vdCBjb21wbGV0ZSwgbWVhbmluZyB0aGF0IGlmIGl0IHJldHVybnMgW3RydWVdIHRoZW4gaXQnc1xuICAgICAgc2FmZSB0byB1c2UgdGhlIHR3byBpbnRlcmNoYW5nZWFibHkuICBJZiBpdCdzIFtmYWxzZV0sIHlvdSBoYXZlIG5vIGd1YXJhbnRlZXMuICBGb3JcbiAgICAgIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgID4gdXRvcFxuICAgICAgICBvcGVuIENvcmU7O1xuICAgICAgICBsZXQgZXF1YWwgKGEgOiAnYSBIYXNodGJsX2ludGYuSGFzaGFibGUudCkgYiA9XG4gICAgICAgICAgcGh5c19lcXVhbCBhIGJcbiAgICAgICAgICB8fCAocGh5c19lcXVhbCBhLmhhc2ggYi5oYXNoXG4gICAgICAgICAgICAgICYmIHBoeXNfZXF1YWwgYS5jb21wYXJlIGIuY29tcGFyZVxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuc2V4cF9vZl90IGIuc2V4cF9vZl90KVxuICAgICAgICA7O1xuICAgICAgICBsZXQgYSA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGxldCBiID0gSGFzaHRibF9pbnRmLkhhc2hhYmxlLnsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90ID0gSW50LnNleHBfb2ZfdCB9OztcbiAgICAgICAgZXF1YWwgYSBiOzsgICgqIGZhbHNlPyEgKilcbiAgICAgIF19XG4gICopXG4gIGxldCBlcXVhbCBhIGIgPVxuICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgaGFzaF9wYXJhbSA9IFN0ZGxpYi5IYXNodGJsLmhhc2hfcGFyYW1cbiAgbGV0IGhhc2ggPSBTdGRsaWIuSGFzaHRibC5oYXNoXG4gIGxldCBwb2x5ID0geyBoYXNoOyBjb21wYXJlID0gUG9seS5jb21wYXJlOyBzZXhwX29mX3QgPSAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB9XG5cbiAgbGV0IG9mX2tleSAodHlwZSBhKSAobW9kdWxlIEtleSA6IEtleSB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICB7IGhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgOztcblxuICBsZXQgdG9fa2V5ICh0eXBlIGEpIHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kIDogS2V5XG4gICAgICB3aXRoIHR5cGUgdCA9IGEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBIYXNoYWJsZVxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBIYXNoYWJsZS50ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgcG9seSA6ICdhIHRcbiAgdmFsIG9mX2tleSA6IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpIC0+ICdhIHRcbiAgdmFsIHRvX2tleSA6ICdhIHQgLT4gKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSlcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlX2ludGZcblxubW9kdWxlIE1ha2UgKFQgOiBBcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IEFyZ193aXRoX2NvbXBhcmF0b3IpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGFsbCA9IChbICgpIF0gOiB0IGxpc3QpXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX3VuaXQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfdW5pdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfdW5pdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAodW5pdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl91bml0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHVuaXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgY29tcGFyZSBfIF8gPSAwXG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcIigpXCIgLT4gKClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJCYXNlLlVuaXQub2Zfc3RyaW5nOiAoKSBleHBlY3RlZFwiXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVW5pdFwiXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG5sZXQgaW52YXJpYW50ICgpID0gKClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMFxuXG5sZXQgZ2V0X3Bvc19sZW4gP3BvcyA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICB0cnkgUmVzdWx0Lk9rIChnZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGgpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCBhIHNlYXJjaCBmb3IgdGhlIGZpcnN0IChyZXNwLiBsYXN0KSBlbGVtZW50XG4gICBzYXRpc2Z5aW5nIGEgcHJlZGljYXRlLCBhc3N1bWluZyB0aGF0IHRoZSBwcmVkaWNhdGUgaXMgaW5jcmVhc2luZyBvblxuICAgdGhlIGNvbnRhaW5lciwgbWVhbmluZyB0aGF0LCBpZiB0aGUgY29udGFpbmVyIGlzIFt1MS4uLnVuXSwgdGhlcmUgZXhpc3RzIGFcbiAgIGsgc3VjaCB0aGF0IHAodTEpPS4uLi49cCh1aykgPSBmYWxzZSBhbmQgcCh1aysxKT0uLi4uPXAodW4pPSB0cnVlLlxuICAgSWYgdGhpcyBrID0gMSAocmVzcCBuKSwgZmluZF9sYXN0X25vdF9zYXRpc2Z5aW5nIChyZXNwIGZpbmRfZmlyc3Rfc2F0aXNmeWluZylcbiAgIHdpbGwgcmV0dXJuIE5vbmUuICopXG5cbmxldCByZWMgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgaWYgbG8gPiBoaVxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiBwcmVkIChnZXQgdCBsbylcbiAgdGhlbiBTb21lIGxvXG4gIGVsc2UgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KGxvICsgMSkgfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhIGNvbnRhaW5lciBbdF0sIGEgcHJlZGljYXRlIFtwcmVkXSBhbmQgdHdvIGluZGljZXMgW2xvIDwgaGldLCBzdWNoIHRoYXRcbiAgIFtwcmVkXSBpcyBpbmNyZWFzaW5nIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uXG5cbiAgIHJldHVybiBhIHJhbmdlIChsbywgaGkpIHdoZXJlOlxuICAgLSBsbyBhbmQgaGkgYXJlIGNsb3NlIGVub3VnaCB0b2dldGhlciBmb3IgYSBsaW5lYXIgc2VhcmNoXG4gICAtIElmIFtwcmVkXSBpcyBub3QgY29uc3RhbnRseSBbZmFsc2VdIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0sIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgIG9uIHdoaWNoIFtwcmVkXSBpcyBbdHJ1ZV0gaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldLiAqKVxuKCogSW52YXJpYW50OiB0aGUgZmlyc3QgZWxlbWVudCBzYXRpc2Z5aW5nIFtwcmVkXSwgaWYgaXQgZXhpc3RzIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXSAqKVxubGV0IHJlYyBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gICgqIFdhcm5pbmc6IHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgdGVybWluYXRlIGlmIHRoZSBjb25zdGFudCAoY3VycmVudGx5IDgpIGlzXG4gICAgIHNldCA8PSAxICopXG4gIGlmIGhpIC0gbG8gPD0gOFxuICB0aGVuIGxvLCBoaVxuICBlbHNlIChcbiAgICBsZXQgbWlkID0gbG8gKyAoKGhpIC0gbG8pIC8gMikgaW5cbiAgICBpZiBwcmVkIChnZXQgdCBtaWQpXG4gICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50IGlzIGJldHdlZW4gW2xvXSBhbmQgW21pZF0gKilcbiAgICB0aGVuXG4gICAgICBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaTptaWQgfnByZWRcbiAgICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCwgaWYgaXQgZXhpc3RzLFxuICAgICAgICAgaXMgYmV0d2VlbiBbbWlkKzFdIGFuZCBbaGldICopXG4gICAgZWxzZSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihtaWQgKyAxKSB+aGkgfnByZWQpXG47O1xuXG5sZXQgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbG8gPSBwb3MgaW5cbiAgbGV0IGhpID0gcG9zICsgbGVuIC0gMSBpblxuICBsZXQgbG8sIGhpID0gZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgaW5cbiAgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhbiBhcnJheSB3aXRoIHNoYXBlIFt0cnVlLC4uLnRydWUsZmFsc2UsLi4uZmFsc2VdIChpLmUuLCB0aGUgX3JldmVyc2VfIG9mIHdoYXRcbiAgIGlzIGRlc2NyaWJlZCBhYm92ZSkgYW5kIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRydWUgb3IgTm9uZSBpZiB0aGVyZSBhcmUgbm9cbiAgIHRydWUqKVxubGV0IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5wcmVkIH5nZXQgfmxlbmd0aCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICAoKiBUaGUgbGFzdCBzYXRpc2Z5aW5nIGlzIHRoZSBvbmUganVzdCBiZWZvcmUgdGhlIGZpcnN0IG5vdCBzYXRpc2Z5aW5nICopXG4gICAgbWF0Y2hcbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB+cG9zIH5sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IG5vdCAocHJlZCB4KSlcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgKCogVGhpcyBtZWFucyB0aGF0IGFsbCBlbGVtZW50cyBzYXRpc2Z5IHByZWQuXG4gICAgICAgVGhlcmUgaXMgYXQgbGVhc3QgYW4gZWxlbWVudCBhcyAobGVuID4gMCkgKilcbiAgICB8IFNvbWUgaSB3aGVuIGkgPSBwb3MgLT4gTm9uZSAoKiBubyBlbGVtZW50IHNhdGlzZmllcyBwcmVkICopXG4gICAgfCBTb21lIGkgLT4gU29tZSAoaSAtIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hcbiAgICAgID9wb3NcbiAgICAgID9sZW5cbiAgICAgIHRcbiAgICAgIH5sZW5ndGg6KChsZW5ndGggOiBfIC0+IF8pIFtAbG9jYWxdKVxuICAgICAgfmdldDooKGdldCA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSlcbiAgICAgIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSlcbiAgICAgIGhvd1xuICAgICAgdlxuICA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8IDApIFtAbm9udGFpbFxuICAgIF1cbiAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApIFtAbm9udGFpbFxuICAgIF1cbiAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSBbQG5vbnRhaWxcbiAgICBdXG4gIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfnByZWQ6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMCkgW0Bub250YWlsXG4gICAgXVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+c2VnbWVudF9vZiBob3cgPVxuICBsZXQgaXNfbGVmdCB4ID1cbiAgICBtYXRjaCBzZWdtZW50X29mIHggd2l0aFxuICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gIGluXG4gIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYExhc3Rfb25fbGVmdCAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19sZWZ0IFtAbm9udGFpbF1cbiAgfCBgRmlyc3Rfb25fcmlnaHQgLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5wcmVkOmlzX3JpZ2h0IFtAbm9udGFpbF1cbjs7XG4iLCIoKiogTW9kdWxlIHR5cGVzIGZvciBhIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbiBmb3IgYSBzZXF1ZW5jZSwgYW5kIGZ1bmN0b3JzIGZvciBidWlsZGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbnMuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogQW4gW0luZGV4YWJsZV0gdHlwZSBpcyBhIGZpbml0ZSBzZXF1ZW5jZSBvZiBlbGVtZW50cyBpbmRleGVkIGJ5IGNvbnNlY3V0aXZlIGludGVnZXJzXG4gICAgWzBdIC4uLiBbbGVuZ3RoIHQgLSAxXS4gIFtnZXRdIGFuZCBbbGVuZ3RoXSBtdXN0IGJlIE8oMSkgZm9yIHRoZSByZXN1bHRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gdG8gYmUgbGcobikuICopXG5tb2R1bGUgdHlwZSBJbmRleGFibGUgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGVsdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGUxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPVxuICAgIChbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICA7IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBMYXN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgXVxuICAgICA6IHQgbGlzdClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfb25fbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPSAoWyBgTGFzdF9vbl9sZWZ0OyBgRmlyc3Rfb25fcmlnaHQgXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuZW5kXG5cbnR5cGUgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gY29tcGFyZTooKCdlbHQgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gIC0+IFdoaWNoX3RhcmdldF9ieV9rZXkudFxuICAtPiAna2V5XG4gIC0+IGludCBvcHRpb25cblxudHlwZSAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gc2VnbWVudF9vZjooKCdlbHQgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVtAbG9jYWxdKVxuICAtPiBXaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gIC0+IGludCBvcHRpb25cblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHRcblxuICAoKiogU2VlIFtCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2ggOiAodCwgZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoXG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gaW4gYmluYXJ5X3NlYXJjaC5tbCAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAodCwgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKCdhIHQsICdhLCAna2V5KSBiaW5hcnlfc2VhcmNoXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICgnYSB0LCAnYSkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCaW5hcnlfc2VhcmNoYWJsZSA9IHNpZ1xuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gIG1vZHVsZSB0eXBlIEluZGV4YWJsZSA9IEluZGV4YWJsZVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUxID0gSW5kZXhhYmxlMVxuXG4gIG1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gV2hpY2hfdGFyZ2V0X2J5X2tleVxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQgPSBXaGljaF90YXJnZXRfYnlfc2VnbWVudFxuXG4gIHR5cGUgbm9ucmVjICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaCA9ICgndCwgJ2VsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID0gKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogSW5kZXhhYmxlKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IHdpdGggdHlwZSBlbHQgOj0gVC5lbHRcbiAgbW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlX2ludGZcblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgJ2EgZWx0XG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBlbHRcbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBBcmcpID0gc3RydWN0XG4gIGxldCBnZXQgPSBULmdldFxuICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcblxuICBsZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gICAgQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+Y29tcGFyZSBob3cgdlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA/cG9zID9sZW4gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5zZWdtZW50X29mIGhvd1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogSW5kZXhhYmxlKSA9IE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIHR5cGUgJ2EgZWx0ID0gVC5lbHRcbiAgICB0eXBlICdhIHQgPSBULnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZTEgKFQgOiBJbmRleGFibGUxKSA9IE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgZW5kKVxuIiwiKCogW0J5dGVzMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbU3RkbGliLkJ5dGVzXS4gW0J5dGVzMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzXG4gICB0aGUgcGFydCBvZiBbU3RkbGliLkJ5dGVzXSB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlclxuICAgdGhhbiBieXRlczAubWwgc2hvdWxkIHVzZSBbU3RkbGliLkJ5dGVzXS4gW0J5dGVzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZFxuICAgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5CeXRlc10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEJ5dGVzICA9IEJ5dGVzMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBCeXRlcyA9IEJ5dGVzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5CeXRlc10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IChieXRlc1tAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKGJ5dGVzW0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiBjaGFyXG4gICAgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCBzZXRcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoY2hhcltAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVieXRlc19zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChjaGFyW0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuXG4gICgqIFt1bnNhZmVfYmxpdF9zdHJpbmddIGlzIG5vdCBleHBvcnRlZCBpbiB0aGUgW3N0ZGxpYl0gc28gd2UgZXhwb3J0IGl0IGhlcmUgKilcbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgOiAgc3JjOihzdHJpbmdbQGxvY2FsX29wdF0pXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgIC0+IGRzdF9wb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiXG4gIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldF9pbnQ2NFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludDY0XG4gICAgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NFxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnQ2NFtAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldF9pbnQzMlxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludDMyXG4gICAgPSBcIiVjYW1sX2J5dGVzX2dldDMydVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMlxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnQzMltAbG9jYWxfb3B0XSlcbiAgICAtPiB1bml0XG4gICAgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldF9pbnQxNlxuICAgIDogIChieXRlc1tAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludFxuICAgID0gXCIlY2FtbF9ieXRlc19nZXQxNnVcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50MTZcbiAgICA6ICAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmVuZFxuXG5pbmNsdWRlIFByaW1pdGl2ZXNcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBibGl0ID0gU3RkbGliLkJ5dGVzLmJsaXRcbmxldCBibGl0X3N0cmluZyA9IFN0ZGxpYi5CeXRlcy5ibGl0X3N0cmluZ1xubGV0IGNvbXBhcmUgPSBTdGRsaWIuQnl0ZXMuY29tcGFyZVxubGV0IGNvcHkgPSBTdGRsaWIuQnl0ZXMuY29weVxubGV0IGNyZWF0ZSA9IFN0ZGxpYi5CeXRlcy5jcmVhdGVcblxuZXh0ZXJuYWwgdW5zYWZlX2NyZWF0ZV9sb2NhbCA6IGludCAtPiAoYnl0ZXNbQGxvY2FsXSkgPSBcIkJhc2VfdW5zYWZlX2NyZWF0ZV9sb2NhbF9ieXRlc1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgY3JlYXRlX2xvY2FsIGxlbiA9XG4gIFxuICAgIChpZiBsZW4gPiBTeXMwLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5jcmVhdGVfbG9jYWxcIjtcbiAgICAgdW5zYWZlX2NyZWF0ZV9sb2NhbCBsZW4pXG47O1xuXG5sZXQgZmlsbCA9IFN0ZGxpYi5CeXRlcy5maWxsXG5sZXQgbWFrZSA9IFN0ZGxpYi5CeXRlcy5tYWtlXG5cbmxldCBtYXAgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgaWYgbCA9IDBcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHQgaSkpXG4gICAgZG9uZTtcbiAgICByKVxuOztcblxubGV0IG1hcGkgdCB+ZjooKGYgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBpZiBsID0gMFxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCB0IGkpKVxuICAgIGRvbmU7XG4gICAgcilcbjs7XG5cbmxldCBzdWIgPSBTdGRsaWIuQnl0ZXMuc3ViXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0XG4gIDogIHNyYzooYnl0ZXNbQGxvY2FsX29wdF0pXG4gIC0+IHNyY19wb3M6aW50XG4gIC0+IGRzdDooYnl0ZXNbQGxvY2FsX29wdF0pXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiY2FtbF9ibGl0X2J5dGVzXCJcbltAQG5vYWxsb2NdXG5cbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuQnl0ZXMudG9fc3RyaW5nXG5sZXQgb2Zfc3RyaW5nID0gU3RkbGliLkJ5dGVzLm9mX3N0cmluZ1xuXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nXG4gIDogIG5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAtPiAoc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmdfcHJvbWlzZV9ub19tdXRhdGlvblxuICA6ICAoc3RyaW5nW0Bsb2NhbF9vcHRdKVxuICAtPiAoYnl0ZXNbQGxvY2FsX29wdF0pXG4gID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCbGl0X2ludGZcblxubW9kdWxlIHR5cGUgU2VxdWVuY2VfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBsZW5ndGggOiAoXyB0W0Bsb2NhbF0pIC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlX2dlblxuICAgIChTcmMgOiBTZXF1ZW5jZV9nZW4pIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlX2dlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZV9saWtlIDogbGVuOmludCAtPiAnYSBTcmMudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIFNyYy50LCAnYSB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIGxldCB1bnNhZmVfYmxpdCA9IERzdC51bnNhZmVfYmxpdFxuXG4gIGxldCBibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOnNyY19wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgICB+cG9zOmRzdF9wb3NcbiAgICAgIH5sZW5cbiAgICAgIH50b3RhbF9sZW5ndGg6KERzdC5sZW5ndGggZHN0KTtcbiAgICBpZiBsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgOztcblxuICBsZXQgYmxpdG9cbiAgICAgICAgfnNyY1xuICAgICAgICA/KHNyY19wb3MgPSAwKVxuICAgICAgICA/KHNyY19sZW4gPSBTcmMubGVuZ3RoIHNyYyAtIHNyY19wb3MpXG4gICAgICAgIH5kc3RcbiAgICAgICAgPyhkc3RfcG9zID0gMClcbiAgICAgICAgKClcbiAgICA9XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW46c3JjX2xlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgKCogW3N1Yl0gYW5kIFtzdWJvXSBlbnN1cmUgdGhhdCBldmVyeSBwb3NpdGlvbiBvZiB0aGUgY3JlYXRlZCBzZXF1ZW5jZSBpcyBwb3B1bGF0ZWQgYnlcbiAgICAgYW4gZWxlbWVudCBvZiB0aGUgc291cmNlIGFycmF5LiAgVGh1cyBldmVyeSBlbGVtZW50IG9mIFtkc3RdIGJlbG93IGlzIHdlbGxcbiAgICAgZGVmaW5lZC4gKilcbiAgbGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihTcmMubGVuZ3RoIHNyYyk7XG4gICAgbGV0IGRzdCA9IERzdC5jcmVhdGVfbGlrZSB+bGVuIHNyYyBpblxuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zOnBvcyB+ZHN0IH5kc3RfcG9zOjAgfmxlbjtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgc3VibyA/KHBvcyA9IDApID9sZW4gc3JjID1cbiAgICBzdWJcbiAgICAgIHNyY1xuICAgICAgfnBvc1xuICAgICAgfmxlbjpcbiAgICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICB8IFNvbWUgaSAtPiBpXG4gICAgICAgICB8IE5vbmUgLT4gU3JjLmxlbmd0aCBzcmMgLSBwb3MpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UxIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCB1bnNhZmVfYmxpdCA6ICgnYSB0LCAnYSB0KSBibGl0XG4gIGVuZCkgPVxuICBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcblxubW9kdWxlIE1ha2UxX2dlbmVyaWMgKFNlcXVlbmNlIDogU2VxdWVuY2UxKSA9IE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZSAoU2VxdWVuY2UgOiBzaWdcbiAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKHQsIHQpIGJsaXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gU2VxdWVuY2UudFxuXG4gICAgb3BlbiBTZXF1ZW5jZVxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RcbiAgICAoU3JjIDogU2VxdWVuY2UpIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKFNyYy50LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE1ha2VfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gU3JjLnRcblxuICAgICAgb3BlbiBTcmNcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBEc3QudFxuXG4gICAgICBvcGVuIERzdFxuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gICAgZW5kKVxuXG5tb2R1bGUgTWFrZV90b19zdHJpbmcgKFQgOiBzaWdcbiAgICB0eXBlIHRcbiAgZW5kKVxuICAgIChUb19ieXRlcyA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBULnQgd2l0aCB0eXBlIGRzdCA6PSBieXRlcykgPVxuc3RydWN0XG4gIG9wZW4gVG9fYnl0ZXNcblxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWIgc3JjIH5wb3MgfmxlbilcbiAgOztcblxuICBsZXQgc3VibyA/cG9zID9sZW4gc3JjID1cbiAgICBCeXRlczAudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTooc3VibyA/cG9zID9sZW4gc3JjKVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRWl0aGVyX2ludGZcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgRWl0aGVyMFxuXG5sZXQgc3dhcCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBTZWNvbmQgeFxuICB8IFNlY29uZCB4IC0+IEZpcnN0IHhcbjs7XG5cbmxldCBpc19maXJzdCA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgXyAtPiB0cnVlXG4gIHwgU2Vjb25kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19zZWNvbmQgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gZmFsc2VcbiAgfCBTZWNvbmQgXyAtPiB0cnVlXG47O1xuXG5sZXQgdmFsdWUgKEZpcnN0IHggfCBTZWNvbmQgeCkgPSB4XG5cbmxldCB2YWx1ZV9tYXAgdCB+Zmlyc3QgfnNlY29uZCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZpcnN0IHggLT4gZmlyc3QgeFxuICB8IFNlY29uZCB4IC0+IHNlY29uZCB4XG47O1xuXG5sZXQgaXRlciA9IHZhbHVlX21hcFxuXG5sZXQgbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IEZpcnN0IChmaXJzdCB4KVxuICB8IFNlY29uZCB4IC0+IFNlY29uZCAoc2Vjb25kIHgpXG47O1xuXG5sZXQgZmlyc3QgeCA9IEZpcnN0IHhcbmxldCBzZWNvbmQgeCA9IFNlY29uZCB4XG5cbmxldCBlcXVhbCBlcTEgZXEyIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IGVxMSB4IHlcbiAgfCBTZWNvbmQgeCwgU2Vjb25kIHkgLT4gZXEyIHggeVxuICB8IEZpcnN0IF8sIFNlY29uZCBfIHwgU2Vjb25kIF8sIEZpcnN0IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiBzID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IGYgeFxuICB8IFNlY29uZCB5IC0+IHMgeVxuOztcblxubW9kdWxlIEZvY3VzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBGb2N1cyBvZiB7IHZhbHVlIDogJ2EgW0BnbG9iYWxdIH1cbiAgICB8IE90aGVyIG9mIHsgdmFsdWUgOiAnYiBbQGdsb2JhbF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlX2ZvY3VzZWQgKE0gOiBzaWdcbiAgICB0eXBlICgrJ2EsICsnYikgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgIHZhbCBvdGhlciA6ICdiIC0+IChfLCAnYikgdFxuICAgIHZhbCBmb2N1cyA6ICgnYSwgJ2IpIHQgLT4gKCgnYSwgJ2IpIEZvY3VzLnRbQGxvY2FsXSlcblxuICAgIHZhbCBjb21iaW5lXG4gICAgICA6ICAoJ2EsICdkKSB0XG4gICAgICAtPiAoJ2IsICdkKSB0XG4gICAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgICAtPiBvdGhlcjooKCdkIC0+ICdkIC0+ICdkKVtAbG9jYWxdKVxuICAgICAgLT4gKCdjLCAnZCkgdFxuXG4gICAgdmFsIGJpbmQgOiAoJ2EsICdiKSB0IC0+IGY6KCgnYSAtPiAoJ2MsICdiKSB0KVtAbG9jYWxdKSAtPiAoJ2MsICdiKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuICBvcGVuIFdpdGhfcmV0dXJuXG5cbiAgbGV0IG1hcCB0IH5mID1cbiAgICBsZXQgcmVzID0gYmluZCB0IH5mOihmdW4geCAtPiByZXR1cm4gKGYgeCkpIGluXG4gICAgcmVzXG4gIDs7XG5cbiAgaW5jbHVkZSBNb25hZC5NYWtlMl9sb2NhbCAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBtb2R1bGUgQXBwID0gQXBwbGljYXRpdmUuTWFrZTJfdXNpbmdfbWFwMl9sb2NhbCAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcblxuICAgICAgbGV0IG1hcDIgOiAoJ2EsICd4KSB0IC0+ICgnYiwgJ3gpIHQgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKSAtPiAoJ2MsICd4KSB0ID1cbiAgICAgICAgZnVuIHQxIHQyIH5mIC0+XG4gICAgICAgIGJpbmQgdDEgfmY6KGZ1biB4IC0+IGJpbmQgdDIgfmY6KGZ1biB5IC0+IHJldHVybiAoZiB4IHkpKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgICA7O1xuICAgIGVuZClcblxuICBpbmNsdWRlIEFwcFxuXG4gIGxldCBjb21iaW5lX2FsbCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgKG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgICAgICAgfCBGb2N1cyBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHNcbiAgICAgICAgIHwgT3RoZXIgbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8udmFsdWUpIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgeCAtPiByZXR1cm5fbG9vcCBmICh4LnZhbHVlIDo6IGFjYykgdHNcbiAgICAgICAgIHwgT3RoZXIgbyAtPiBvdGhlcl9sb29wIGYgby52YWx1ZSB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIFtdIHRzXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsX3VuaXQgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgXyAtPiBvdGhlcl9sb29wIGYgYWNjIHRzXG4gICAgICAgICB8IE90aGVyIG8gLT4gb3RoZXJfbG9vcCBmIChmIGFjYyBvLnZhbHVlKSB0cylcbiAgICBpblxuICAgIGxldCByZWMgcmV0dXJuX2xvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIChtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICAgICAgIHwgRm9jdXMgeyB2YWx1ZSA9ICgpIH0gLT4gcmV0dXJuX2xvb3AgZiB0c1xuICAgICAgICAgfCBPdGhlciB7IHZhbHVlID0gbyB9IC0+IG90aGVyX2xvb3AgZiBvIHRzKVxuICAgIGluXG4gICAgZnVuIHRzIH5mIC0+IHJldHVybl9sb29wIGYgdHNcbiAgOztcblxuICBsZXQgdG9fb3B0aW9uIHQgPVxuICAgIG1hdGNoIGZvY3VzIHQgd2l0aFxuICAgIHwgRm9jdXMgeCAtPiBTb21lIHgudmFsdWVcbiAgICB8IE90aGVyIF8gLT4gTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCBmb2N1cyB0IHdpdGhcbiAgICB8IEZvY3VzIHggLT4geC52YWx1ZVxuICAgIHwgT3RoZXIgXyAtPiBkZWZhdWx0XG4gIDs7XG5cbiAgbGV0IHdpdGhfcmV0dXJuIGYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gcmV0IC0+IG90aGVyIChmIChXaXRoX3JldHVybi5wcmVwZW5kIHJldCB+ZjpyZXR1cm4pKSkgW0Bub250YWlsXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGaXJzdCA9IE1ha2VfZm9jdXNlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgIGxldCByZXR1cm4gPSBmaXJzdFxuICAgIGxldCBvdGhlciA9IHNlY29uZFxuXG4gICAgbGV0IGZvY3VzIHQgOiBfIEZvY3VzLnQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gRm9jdXMgeyB2YWx1ZSA9IHggfVxuICAgICAgfCBTZWNvbmQgeSAtPiBPdGhlciB7IHZhbHVlID0geSB9XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChmIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAob3RoZXIgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgXyB8IF8sIFNlY29uZCB4IC0+IFNlY29uZCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbi4gKilcbiAgICAgIHwgU2Vjb25kIF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgU2Vjb25kID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IHJldHVybiA9IHNlY29uZFxuICAgIGxldCBvdGhlciA9IGZpcnN0XG5cbiAgICBsZXQgZm9jdXMgdCA6IF8gRm9jdXMudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHggLT4gRm9jdXMgeyB2YWx1ZSA9IHggfVxuICAgICAgfCBGaXJzdCB5IC0+IE90aGVyIHsgdmFsdWUgPSB5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNvbWJpbmUgdDEgdDIgfmYgfm90aGVyID1cbiAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICB8IFNlY29uZCB4LCBTZWNvbmQgeSAtPiBTZWNvbmQgKGYgeCB5KVxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChvdGhlciB4IHkpXG4gICAgICB8IEZpcnN0IHgsIF8gfCBfLCBGaXJzdCB4IC0+IEZpcnN0IHhcbiAgICA7O1xuXG4gICAgbGV0IGJpbmQgdCB+ZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU2Vjb25kIHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbiwgbGlrZSBbRmlyc3QuYmluZF0gYWJvdmUuICopXG4gICAgICB8IEZpcnN0IF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdmLCAncykgX2VpdGhlciA9ICgnZiwgJ3MpIHQgPVxuICAgIHwgRmlyc3Qgb2YgJ2ZcbiAgICB8IFNlY29uZCBvZiAnc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9vcHRpb25cblxuICBsZXQgZ2xvYmFsaXplIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHQgPVxuICAgIGZ1biAodHlwZSBhX18wMDVfKVxuICAgICAgICA6ICgoKGFfXzAwNV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XykgLT4gKGFfXzAwNV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfIHQpIC0+XG4gICAgICBnbG9iYWxpemVfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90IDpcbiAgICAnYS5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAtPiAnYSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGhhc2hfZm9sZF9vcHRpb25cbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgICBvcHRpb25fb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIHNleHBfb2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IG9wdGlvbl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvblxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGdsb2JhbGl6ZSA6ICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHRcblxuICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICB8IE5vbmVcbiAgfCBTb21lIG9mICdhXG5cbmxldCBpc19ub25lID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgdmFsdWVfbWFwIG8gfmRlZmF1bHQgfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4gZiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0XG47O1xuXG5sZXQgaXRlciBvIH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5cbmxldCBjYWxsIHggfmYgPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgeFxuOztcblxubGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IHZhbHVlX2V4biA/aGVyZSA/ZXJyb3IgP21lc3NhZ2UgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBoZXJlLCBlcnJvciwgbWVzc2FnZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gRXJyb3Iub2Zfc3RyaW5nIFwiT3B0aW9uLnZhbHVlX2V4biBOb25lXCJcbiAgICAgIHwgTm9uZSwgTm9uZSwgU29tZSBtIC0+IEVycm9yLm9mX3N0cmluZyBtXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgTm9uZSAtPiBlXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgU29tZSBtIC0+IEVycm9yLnRhZyBlIH50YWc6bVxuICAgICAgfCBTb21lIHAsIE5vbmUsIE5vbmUgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIFwiT3B0aW9uLnZhbHVlX2V4blwiIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5jcmVhdGUgbSBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBTb21lIGUsIF8gLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgICAgKHZhbHVlIG1lc3NhZ2UgfmRlZmF1bHQ6XCJcIilcbiAgICAgICAgICAoZSwgcClcbiAgICAgICAgICAoc2V4cF9vZl9wYWlyIEVycm9yLnNleHBfb2ZfdCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90KVxuICAgIGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCB2YWx1ZV9vcl90aHVuayBvIH5kZWZhdWx0ID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGRlZmF1bHQgKClcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbfHxdXG4gIHwgU29tZSB4IC0+IFt8IHggfF1cbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSB4IC0+IFsgeCBdXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlOl8gPSB0XG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlOl8gPSB0XG5cbmxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIHZhbHVlX21hcCB0IH5kZWZhdWx0Ok0uemVybyB+ZlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhJyAtPiBlcXVhbCBhIGEnXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIF8gLT4gMVxuOztcblxubGV0IGlzX2VtcHR5ID0gaXNfbm9uZVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSB4IC0+IGYgaW5pdCB4XG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgYSAtPiBpZiBmIGEgdGhlbiAxIGVsc2UgMFxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBpZiBmIHggdGhlbiB0IGVsc2UgTm9uZVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgZXF1YWwgZiB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB4JyAtPiBmIHggeCdcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc29tZSB4ID0gU29tZSB4XG5cbmxldCBmaXJzdF9zb21lIHggeSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgXyAtPiB4XG4gIHwgTm9uZSAtPiB5XG47O1xuXG5sZXQgc29tZV9pZiBjb25kIHggPSBpZiBjb25kIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuXG5sZXQgbWVyZ2UgYSBiIH5mID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgeCB8IHgsIE5vbmUgLT4geFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKGYgYSBiKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB2IGFzIG8gd2hlbiBmIHYgLT4gb1xuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuOztcblxubW9kdWxlIE1vbmFkX2FyZyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICBsZXQgcmV0dXJuIHggPSBTb21lIHhcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgbGV0IGJpbmQgbyB+ZiA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1vbmFkLk1ha2VfbG9jYWwgKE1vbmFkX2FyZylcblxubW9kdWxlIEFwcGxpY2F0aXZlX2FyZyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICBsZXQgcmV0dXJuIHggPSBTb21lIHhcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgbGV0IG1hcDIgeCB5IH5mID1cbiAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCwgU29tZSB5IC0+IFNvbWUgKGYgeCB5KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZV91c2luZ19tYXAyX2xvY2FsIChBcHBsaWNhdGl2ZV9hcmcpXG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJvb2wwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJvb2xcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9ib29sIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIGZhbHNlOyB0cnVlIF0gOiB0IGxpc3QpXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2Jvb2wgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfYm9vbFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfYm9vbCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoYm9vbF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ib29sIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJvb2xfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcInRydWVcIiAtPiB0cnVlXG4gICAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgICB8IHMgLT4gaW52YWxpZF9hcmdmIFwiQm9vbC5vZl9zdHJpbmc6IGV4cGVjdGVkIHRydWUgb3IgZmFsc2UgYnV0IGdvdCAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9ib29sXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQm9vbFwiXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCB0b19pbnQgeCA9IGJvb2xfdG9faW50IHhcblxubW9kdWxlIE5vbl9zaG9ydF9jaXJjdWl0aW5nID0gc3RydWN0XG4gICgqIFdlIGRvbid0IGV4cG9zZSB0aGlzLCBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZSBpbnZhcmlhbnQgbWVudGlvbmVkIGJlbG93IG9mXG4gICAgICh0b19pbnQgdHJ1ZSA9IDEpIGFuZCAodG9faW50IGZhbHNlID0gMCkuICopXG4gIGxldCB1bnNhZmVfb2ZfaW50ICh4IDogaW50KSA6IGJvb2wgPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbiAgbGV0ICggfHwgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsb3IgdG9faW50IGIpXG4gIGxldCAoICYmICkgYSBiID0gdW5zYWZlX29mX2ludCAodG9faW50IGEgbGFuZCB0b19pbnQgYilcbmVuZFxuXG4oKiBXZSBkbyB0aGlzIGFzIGEgZGlyZWN0IGFzc2VydCBvbiB0aGUgdGhlb3J5IHRoYXQgaXQncyBhIGNoZWFwIHRoaW5nIHRvIHRlc3QgYW5kIGFcbiAgIHJlYWxseSBjb3JlIGludmFyaWFudCB0aGF0IHdlIG5ldmVyIGV4cGVjdCB0byBicmVhaywgYW5kIHdlIHNob3VsZCBiZSBoYXBweSBmb3IgYVxuICAgcHJvZ3JhbSB0byBmYWlsIGltbWVkaWF0ZWx5IGlmIHRoaXMgaXMgdmlvbGF0ZWQuICopXG5sZXQgKCkgPSBhc3NlcnQgKFBvbHkuKCA9ICkgKHRvX2ludCB0cnVlKSAxICYmIFBvbHkuKCA9ICkgKHRvX2ludCBmYWxzZSkgMClcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29udGFpbmVyX2ludGYuRXhwb3J0XG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBMaXN0ID0gTGlzdDFcblxubW9kdWxlIFN0ZXAgPSBzdHJ1Y3RcbiAgKCogJ2EgaXMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UsICdzIGlzIHRoZSBzdGF0ZSB0aGF0IHdpbGwgcHJvZHVjZSB0aGUgcmVtYWluZGVyIG9mXG4gICAgIHRoZSBzZXF1ZW5jZSAqKVxuICB0eXBlICgnYSwgJ3MpIHQgPVxuICAgIHwgRG9uZVxuICAgIHwgU2tpcCBvZiB7IHN0YXRlIDogJ3MgfVxuICAgIHwgWWllbGQgb2ZcbiAgICAgICAgeyB2YWx1ZSA6ICdhXG4gICAgICAgIDsgc3RhdGUgOiAnc1xuICAgICAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdzLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdzIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdzKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wMTFfIHNfXzAxMl8pXG4gICAgICAgIDogICgoYV9fMDExXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChzX18wMTJfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wMTFfLCBzX18wMTJfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2Zfc19fMDAyXyAtPiBmdW5jdGlvblxuICAgICAgICB8IERvbmUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRG9uZVwiXG4gICAgICAgIHwgU2tpcCB7IHN0YXRlID0gc3RhdGVfXzAwNF8gfSAtPlxuICAgICAgICAgIGxldCBibmRzX18wMDNfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgICAgIGxldCBibmRzX18wMDNfID1cbiAgICAgICAgICAgIGxldCBhcmdfXzAwNV8gPSBfb2Zfc19fMDAyXyBzdGF0ZV9fMDA0XyBpblxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXRlXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgICBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2tpcFwiIDo6IGJuZHNfXzAwM18pXG4gICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHZhbHVlX18wMDdfOyBzdGF0ZSA9IHN0YXRlX18wMDlfIH0gLT5cbiAgICAgICAgICBsZXQgYm5kc19fMDA2XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgICBsZXQgYXJnX18wMTBfID0gX29mX3NfXzAwMl8gc3RhdGVfXzAwOV8gaW5cbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGF0ZVwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgICBsZXQgYXJnX18wMDhfID0gX29mX2FfXzAwMV8gdmFsdWVfXzAwN18gaW5cbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ2YWx1ZVwiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIllpZWxkXCIgOjogYm5kc19fMDA2XylcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm9wZW4gU3RlcFxuXG4oKiAnYSBpcyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSwgJ3MgaXMgdGhlIHN0YXRlIHRoYXQgd2lsbCBwcm9kdWNlIHRoZSByZW1haW5kZXIgb2YgdGhlXG4gICBzZXF1ZW5jZSAqKVxudHlwZSArXyB0ID1cbiAgfCBTZXF1ZW5jZSA6XG4gICAgICB7IHN0YXRlIDogJ3NcbiAgICAgIDsgbmV4dCA6ICdzIC0+ICgnYSwgJ3MpIFN0ZXAudFxuICAgICAgfVxuICAgICAgLT4gJ2EgdFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBuZXh0X3N0ZXAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9KSA9XG4gICAgbWF0Y2ggZiBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IH1cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gfVxuICA7O1xuXG4gIGxldCBkZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgbG9vcCBzIG5leHQgZmluaXNoIGYgYWNjID1cbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gZiBhY2MgTm9uZSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBmIGFjYyAoU29tZSBhKSB+azoobG9vcCBzIG5leHQgZmluaXNoIGYpXG4gICAgaW5cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHQgZmluaXNoIGYgaW5pdFxuICA7O1xuZW5kXG5cbmxldCB1bmZvbGRfc3RlcCB+aW5pdCB+ZiA9IFNlcXVlbmNlIHsgc3RhdGUgPSBpbml0OyBuZXh0ID0gZiB9XG5cbmxldCB1bmZvbGQgfmluaXQgfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdCB+ZjooZnVuIHMgLT5cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgTm9uZSAtPiBTdGVwLkRvbmVcbiAgICB8IFNvbWUgKGEsIHMpIC0+IFN0ZXAuWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9KVxuOztcblxubGV0IHVuZm9sZF93aXRoIHMgfmluaXQgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBpbml0LCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKHNlZWQsIHMpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHNlZWQsIHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggZiBzZWVkIGEgd2l0aFxuICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzZWVkIH0gLT4gU2tpcCB7IHN0YXRlID0gc2VlZCwgcyB9XG4gICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzZWVkIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gc2VlZCwgcyB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCB1bmZvbGRfd2l0aF9hbmRfZmluaXNoIHMgfmluaXQgfnJ1bm5pbmdfc3RlcCB+aW5uZXJfZmluaXNoZWQgfmZpbmlzaGluZ19zdGVwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKGluaXQsIHMpXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gc3RhdGUgLT5cbiAgICAgICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgfCBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIG5leHQgaW5uZXJfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfZmluaXNoZWQgKGlubmVyX2ZpbmlzaGVkIHN0YXRlKSB9XG4gICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBpbm5lcl9zdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSB9XG4gICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBpbm5lcl9zdGF0ZSB9IC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggcnVubmluZ19zdGVwIHN0YXRlIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgfSAtPiBTa2lwIHsgc3RhdGUgPSBgSW5uZXJfcnVubmluZyAoc3RhdGUsIGlubmVyX3N0YXRlKSB9XG4gICAgICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlID0gYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgfSkpXG4gICAgICAgICAgICAgfCBgSW5uZXJfZmluaXNoZWQgc3RhdGUgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBmaW5pc2hpbmdfc3RlcCBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSB9IC0+IFNraXAgeyBzdGF0ZSA9IGBJbm5lcl9maW5pc2hlZCBzdGF0ZSB9XG4gICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0geTsgc3RhdGUgfSAtPlxuICAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IHk7IHN0YXRlID0gYElubmVyX2ZpbmlzaGVkIHN0YXRlIH0pKVxuICAgICAgfVxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OmwgfmY6KGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBEb25lXG4gICAgfCB4IDo6IGwgLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gbCB9KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIHYgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiB2XG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIHYgbmV4dCBmXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIChmIHYgYSkgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIGluaXQgbmV4dCBmXG47O1xuXG5sZXQgdG9fbGlzdF9yZXYgdCA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpXG5cblxubGV0IHRvX2xpc3QgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pID1cbiAgbGV0IHNhZmVfdG9fbGlzdCB0ID0gTGlzdC5yZXYgKHRvX2xpc3RfcmV2IHQpIGluXG4gIGxldCByZWMgdG9fbGlzdCBzIG5leHQgaSA9XG4gICAgaWYgaSA9IDBcbiAgICB0aGVuIHNhZmVfdG9fbGlzdCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gW11cbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IHRvX2xpc3QgcyBuZXh0IGlcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IGEgOjogdG9fbGlzdCBzIG5leHQgKGkgLSAxKSlcbiAgaW5cbiAgdG9fbGlzdCBzIG5leHQgNTAwXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfdiBzdG9wX3YgPVxuICBsZXQgc3RlcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPiBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGk7IHN0YXRlID0gaSArIHN0cmlkZSB9XG4gICAgfCBgaW5jbHVzaXZlIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpIDwgc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICAgIHwgYGV4Y2x1c2l2ZSB3aGVuIHN0cmlkZSA+PSAwIC0+XG4gICAgICBmdW4gaSAtPiBpZiBpID49IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gaTsgc3RhdGUgPSBpICsgc3RyaWRlIH1cbiAgICB8IGBleGNsdXNpdmUgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPD0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIHsgdmFsdWUgPSBpOyBzdGF0ZSA9IGkgKyBzdHJpZGUgfVxuICBpblxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF92XG4gICAgfCBgZXhjbHVzaXZlIC0+IHN0YXJ0X3YgKyBzdHJpZGVcbiAgaW5cbiAgdW5mb2xkX3N0ZXAgfmluaXQgfmY6c3RlcFxuOztcblxubGV0IG9mX2xhenkgdF9sYXp5ID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6dF9sYXp5IH5mOihmdW4gdF9sYXp5IC0+XG4gICAgbGV0IChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9IExhenkuZm9yY2UgdF9sYXp5IGluXG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+XG4gICAgICBTa2lwXG4gICAgICAgIHsgc3RhdGUgPVxuICAgICAgICAgICAgKGxldCB2ID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSBpblxuICAgICAgICAgICAgIGxhenkgdilcbiAgICAgICAgfVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gcyB9IC0+XG4gICAgICBZaWVsZFxuICAgICAgICB7IHZhbHVlID0geFxuICAgICAgICA7IHN0YXRlID1cbiAgICAgICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gaW5cbiAgICAgICAgICAgICBsYXp5IHYpXG4gICAgICAgIH0pXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzZWVkXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gc2VlZCAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gZiBhOyBzdGF0ZSA9IHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSAwLCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKGksIHMpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBmIGkgYTsgc3RhdGUgPSBpICsgMSwgcyB9KVxuICAgICAgfVxuOztcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0IH5mOihmdW4gYWNjIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBhY2MgeCBpblxuICAgIFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGFjYyB9KVxuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgaSBhY2MgeCBpblxuICAgIFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGkgKyAxLCBhY2MgfSlcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNlZWRcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzZWVkIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gZiBhIC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBtYXAgfmY6c25kIChmaWx0ZXIgKG1hcGkgdCB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpKVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbGV0IHJlYyBsb29wIGkgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBpXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBpIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgKGkgKyAxKSBzIG5leHRcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCA9IGZvbGQgdCB+aW5pdDooW10sIDApIH5mOihmdW4gKGwsIGkpIHggLT4geCA6OiBsLCBpICsgMSlcblxubGV0IHRvX2FycmF5IHQgPVxuICBsZXQgbCwgbGVuID0gdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgeCA6OiBsIC0+XG4gICAgbGV0IGEgPSBBcnJheS5jcmVhdGUgfmxlbiB4IGluXG4gICAgbGV0IHJlYyBsb29wIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gLTEpXG4gICAgICB8IHggOjogbCAtPlxuICAgICAgICBhLihpKSA8LSB4O1xuICAgICAgICBsb29wIChpIC0gMSkgbFxuICAgIGluXG4gICAgbG9vcCAobGVuIC0gMikgbDtcbiAgICBhXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBmIGEgLT4gU29tZSBhXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmXG4gICAgICAgfCBzb21lX2IgLT4gc29tZV9iKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIChtYXRjaCBmIGkgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgICAgIHwgc29tZV9iIC0+IHNvbWVfYilcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmIGlcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSB3aGVuIG5vdCAoZiBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBfIH0gd2hlbiBub3QgKGYgaSBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGV4aXN0cyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBhIC0+IHRydWVcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBpIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0IGYgMFxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICB8IERvbmUgLT4gKClcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCBmXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIGYgYTtcbiAgICAgIGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBmXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgXyAtPiBmYWxzZVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9IC0+IGxvb3Agc2VlZCBuZXh0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGEgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBfIH0gd2hlbiBlcXVhbCBhIGIgLT4gdHJ1ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gcyB9IHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGFcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCBhIFtAbm9udGFpbF1cbjs7XG5cbmxldCBlbXB0eSA9IFNlcXVlbmNlIHsgc3RhdGUgPSAoKTsgbmV4dCA9IChmdW4gKCkgLT4gRG9uZSkgfVxuXG5sZXQgYmluZCB0IH5mID1cbiAgdW5mb2xkX3N0ZXBcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSwgcmVzdCAtPlxuICAgICAgICAobWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgICAgIHwgRG9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gZW1wdHksIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgICAgICAgU2tpcCB7IHN0YXRlID0gZiBhLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IH0pKVxuICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSwgcmVzdCB9XG4gICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPlxuICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9LCByZXN0IH0pKVxuICAgIH5pbml0OihlbXB0eSwgdClcbjs7XG5cbmxldCByZXR1cm4geCA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OihTb21lIHgpIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBEb25lXG4gICAgfCBTb21lIHggLT4gWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gTm9uZSB9KVxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICBlbmQpXG5cbmxldCBudGggcyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IE5vbmVcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgaSBzIG5leHRcbiAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgaSAwIHRoZW4gU29tZSBhIGVsc2UgbG9vcCAoaSAtIDEpIHMgbmV4dFxuICAgIGluXG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgbiBzIG5leHQpXG47O1xuXG5sZXQgbnRoX2V4biBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UubnRoXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbnRoIHMgbiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UubnRoXCJcbiAgICB8IFNvbWUgeCAtPiB4KVxuOztcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDEzXyBiX18wMTRfIC0+XG4gICAgaWYgU3RkbGliLiggPT0gKSBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBMZWZ0IF9hX18wMTVfLCBMZWZ0IF9iX18wMTZfIC0+IF9jbXBfX2EgX2FfXzAxNV8gX2JfXzAxNl9cbiAgICAgIHwgTGVmdCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIExlZnQgXyAtPiAxXG4gICAgICB8IFJpZ2h0IF9hX18wMTdfLCBSaWdodCBfYl9fMDE4XyAtPiBfY21wX19iIF9hX18wMTdfIF9iX18wMThfXG4gICAgICB8IFJpZ2h0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUmlnaHQgXyAtPiAxXG4gICAgICB8IEJvdGggKF9hX18wMTlfLCBfYV9fMDIxXyksIEJvdGggKF9iX18wMjBfLCBfYl9fMDIyXykgLT5cbiAgICAgICAgKG1hdGNoIF9jbXBfX2EgX2FfXzAxOV8gX2JfXzAyMF8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX2IgX2FfXzAyMV8gX2JfXzAyMl9cbiAgICAgICAgIHwgbiAtPiBuKSlcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RcbiAgICA6IHR5cGUgYSBiLlxuICAgICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBhIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICAgIC0+IChhLCBiKSB0XG4gICAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgZnVuIF9oYXNoX2ZvbGRfYSBfaGFzaF9mb2xkX2IgaHN2IGFyZyAtPlxuICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgIHwgTGVmdCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gICAgICB8IFJpZ2h0IF9hMCAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbiAgICAgIHwgQm90aCAoX2EwLCBfYTEpIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDIgaW5cbiAgICAgICAgbGV0IGhzdiA9XG4gICAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICAgIF9oYXNoX2ZvbGRfYSBoc3YgX2EwXG4gICAgICAgIGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2ExXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA6XG4gICAgJ2EgJ2IuXG4gICAgKFNleHBsaWIwLlNleHAudCAtPiAnYSlcbiAgICAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdiKVxuICAgIC0+IFNleHBsaWIwLlNleHAudFxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA0Nl8gYl9fMDQ3XylcbiAgICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDQ2XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wNDdfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAgIC0+IChhX18wNDZfLCBiX18wNDdfKSB0KSAtPlxuICAgICAgbGV0IGVycm9yX3NvdXJjZV9fMDI3XyA9IFwic2VxdWVuY2UubWwuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudFwiIGluXG4gICAgICBmdW4gX29mX2FfXzAyM18gX29mX2JfXzAyNF8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImxlZnRcIiB8IFwiTGVmdFwiKSBhcyBfdGFnX18wMzBfKSA6OiBzZXhwX2FyZ3NfXzAzMV8pIGFzXG4gICAgICAgICAgX3NleHBfXzAyOV8gLT5cbiAgICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMzFfIHdpdGhcbiAgICAgICAgICAgfCBbIGFyZzBfXzAzMl8gXSAtPlxuICAgICAgICAgICAgIGxldCByZXMwX18wMzNfID0gX29mX2FfXzAyM18gYXJnMF9fMDMyXyBpblxuICAgICAgICAgICAgIExlZnQgcmVzMF9fMDMzX1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyN19cbiAgICAgICAgICAgICAgIF90YWdfXzAzMF9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMjlfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwicmlnaHRcIiB8IFwiUmlnaHRcIikgYXMgX3RhZ19fMDM1XykgOjogc2V4cF9hcmdzX18wMzZfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMzRfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDM2XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzdfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDM4XyA9IF9vZl9iX18wMjRfIGFyZzBfXzAzN18gaW5cbiAgICAgICAgICAgICBSaWdodCByZXMwX18wMzhfXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI3X1xuICAgICAgICAgICAgICAgX3RhZ19fMDM1X1xuICAgICAgICAgICAgICAgX3NleHBfXzAzNF8pXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJib3RoXCIgfCBcIkJvdGhcIikgYXMgX3RhZ19fMDQwXykgOjogc2V4cF9hcmdzX18wNDFfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMzlfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDQxXyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wNDJfOyBhcmcxX18wNDNfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDQ0XyA9IF9vZl9hX18wMjNfIGFyZzBfXzA0Ml9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMDQ1XyA9IF9vZl9iX18wMjRfIGFyZzFfXzA0M18gaW5cbiAgICAgICAgICAgICBCb3RoIChyZXMwX18wNDRfLCByZXMxX18wNDVfKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyN19cbiAgICAgICAgICAgICAgIF90YWdfXzA0MF9cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzlfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgc2V4cF9fMDI4XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicmlnaHRcIiB8IFwiUmlnaHRcIikgYXMgc2V4cF9fMDI4XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIHNleHBfXzAyOF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICB8IHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ2IuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA1OF8gYl9fMDU5XylcbiAgICAgICAgOiAgKChhX18wNThfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzA1OV8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzA1OF8sIGJfXzA1OV8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wNDhfIF9vZl9iX18wNDlfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTGVmdCBhcmcwX18wNTBfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1MV8gPSBfb2ZfYV9fMDQ4XyBhcmcwX18wNTBfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVmdFwiOyByZXMwX18wNTFfIF1cbiAgICAgICAgfCBSaWdodCBhcmcwX18wNTJfIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1M18gPSBfb2ZfYl9fMDQ5XyBhcmcwX18wNTJfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgcmVzMF9fMDUzXyBdXG4gICAgICAgIHwgQm90aCAoYXJnMF9fMDU0XywgYXJnMV9fMDU1XykgLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDU2XyA9IF9vZl9hX18wNDhfIGFyZzBfXzA1NF9cbiAgICAgICAgICBhbmQgcmVzMV9fMDU3XyA9IF9vZl9iX18wNDlfIGFyZzFfXzA1NV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCI7IHJlczBfXzA1Nl87IHJlczFfXzA1N18gXVxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EgJ2IuXG4gICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAnYiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnYSwgJ2IpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgXydiX3NleHBfZ3JhbW1hciAtPlxuICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICBWYXJpYW50XG4gICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJCb3RoXCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIENvbnMgKF8nYl9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubGV0IG1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMTsgbmV4dCA9IG5leHQxIH0pXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMyOyBuZXh0ID0gbmV4dDIgfSlcbiAgICAgIH5jb21wYXJlXG4gID1cbiAgbGV0IHVuc2hhZG93ZWRfY29tcGFyZSA9IGNvbXBhcmUgaW5cbiAgbGV0IG9wZW4gTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgaW5cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgU2tpcCB7IHN0YXRlID0gczEgfSwgczIgLT4gU2tpcCB7IHN0YXRlID0gbmV4dDEgczEsIHMyIH1cbiAgICB8IHMxLCBTa2lwIHsgc3RhdGUgPSBzMiB9IC0+IFNraXAgeyBzdGF0ZSA9IHMxLCBuZXh0MiBzMiB9XG4gICAgfCAoWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEnIH0gYXMgczEpLCAoWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczInIH0gYXMgczIpXG4gICAgICAtPlxuICAgICAgbGV0IGNvbXBhcmlzb24gPSB1bnNoYWRvd2VkX2NvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDwgMFxuICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gTGVmdCBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxJyB9LCBzMiB9XG4gICAgICBlbHNlIGlmIGNvbXBhcmlzb24gPSAwXG4gICAgICB0aGVuXG4gICAgICAgIFlpZWxkIHsgdmFsdWUgPSBCb3RoIChhLCBiKTsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMScgfSwgU2tpcCB7IHN0YXRlID0gczInIH0gfVxuICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gUmlnaHQgYjsgc3RhdGUgPSBzMSwgU2tpcCB7IHN0YXRlID0gczInIH0gfVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMSB9LCBEb25lIC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gTGVmdCBhOyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIERvbmUgfVxuICAgIHwgRG9uZSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IFJpZ2h0IGI7IHN0YXRlID0gRG9uZSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gIGluXG4gIFNlcXVlbmNlIHsgc3RhdGUgPSBTa2lwIHsgc3RhdGUgPSBzMSB9LCBTa2lwIHsgc3RhdGUgPSBzMiB9OyBuZXh0IH1cbjs7XG5cbmxldCBtZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWQgczEgczIgfmNvbXBhcmUgPVxuICBtYXAgKG1lcmdlX3dpdGhfZHVwbGljYXRlcyBzMSBzMiB+Y29tcGFyZSkgfmY6KGZ1bmN0aW9uXG4gICAgfCBMZWZ0IHggfCBSaWdodCB4IHwgQm90aCAoeCwgXykgLT4geClcbjs7XG5cbmxldCAobWVyZ2UgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAyMS0wN10gRm9yIGlkZW50aWNhbCBiZWhhdmlvciwgdXNlIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9kZWR1cGVkX2FuZF9zb3J0ZWRdLCBidXQgY29uc2lkZXIgdXNpbmcgXFxcbiAgICAgICAgW1NlcXVlbmNlLm1lcmdlX3NvcnRlZF0gaW5zdGVhZC5cIl0pXG4gID1cbiAgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXG47O1xuXG5sZXQgbWVyZ2Vfc29ydGVkXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSlcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KVxuICAgICAgfmNvbXBhcmVcbiAgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgICB8IChZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzMScgfSBhcyBzMSksIChZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMicgfSBhcyBzMilcbiAgICAgIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IGNvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDw9IDBcbiAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEnIH0sIHMyIH1cbiAgICAgIGVsc2UgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczEsIFNraXAgeyBzdGF0ZSA9IHMyJyB9IH1cbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgRG9uZSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgRG9uZSB9XG4gICAgfCBEb25lLCBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBzMiB9IC0+XG4gICAgICBZaWVsZCB7IHZhbHVlID0gYjsgc3RhdGUgPSBEb25lLCBTa2lwIHsgc3RhdGUgPSBzMiB9IH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH07IG5leHQgfVxuOztcblxubGV0IGhkIHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IF8gfSAtPiBTb21lIGFcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGhkX2V4biBzID1cbiAgbWF0Y2ggaGQgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcImhkX2V4blwiXG4gIHwgU29tZSBhIC0+IGFcbjs7XG5cbmxldCB0bCBzID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0XG4gICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBhIH0gLT4gU29tZSBhXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICAobWF0Y2ggbG9vcCBzIG5leHQgd2l0aFxuICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB8IFNvbWUgcyAtPiBTb21lIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSlcbjs7XG5cbmxldCB0bF9lYWdlcmx5X2V4biBzID1cbiAgbWF0Y2ggdGwgcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcIlNlcXVlbmNlLnRsX2V4blwiXG4gIHwgU29tZSBzIC0+IHNcbjs7XG5cbmxldCBsaWZ0X2lkZW50aXR5IG5leHQgcyA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgRG9uZSAtPiBEb25lXG4gIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGBJZGVudGl0eSBzIH1cbiAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYElkZW50aXR5IHMgfVxuOztcblxubGV0IG5leHQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFNvbWUgKGEsIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBmaWx0ZXJfb3B0IHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBOb25lOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBTb21lIGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHMgfmYgPSBmaWx0ZXJfb3B0IChtYXAgcyB+ZilcbmxldCBmaWx0ZXJfbWFwaSBzIH5mID0gZmlsdGVyX21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHNwbGl0X24gcyBuID1cbiAgbGV0IHJlYyBsb29wIHMgaSBhY2N1bSBuZXh0ID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIExpc3QucmV2IGFjY3VtLCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IExpc3QucmV2IGFjY3VtLCBlbXB0eVxuICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIGkgYWNjdW0gbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIChpIC0gMSkgKGEgOjogYWNjdW0pIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT4gbG9vcCBzIG4gW10gbmV4dFxuOztcblxubGV0IGNodW5rc19leG4gdCBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jaHVua3NfZXhuXCJcbiAgZWxzZVxuICAgIHVuZm9sZF9zdGVwIH5pbml0OnQgfmY6KGZ1biB0IC0+XG4gICAgICBtYXRjaCBzcGxpdF9uIHQgbiB3aXRoXG4gICAgICB8IFtdLCBfZW1wdHkgLT4gRG9uZVxuICAgICAgfCAoXyA6OiBfIGFzIHhzKSwgdCAtPiBZaWVsZCB7IHZhbHVlID0geHM7IHN0YXRlID0gdCB9KVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGkgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gXyB9IHdoZW4gZiBpIGEgLT4gU29tZSAoaSwgYSlcbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSB8IFNraXAgeyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgbmV4dCAoaSArIDEpIGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHNlZWQ7IG5leHQgfSAtPiBsb29wIHNlZWQgbmV4dCAwIGZcbjs7XG5cbmxldCBmaW5kX2V4biBzIH5mID1cbiAgbWF0Y2ggZmluZCBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UuZmluZF9leG5cIlxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgYXBwZW5kIHMxIHMyID1cbiAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczE7IG5leHQgPSBuZXh0MSB9LCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgRmlyc3RfbGlzdCBzMVxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEZpcnN0X2xpc3QgczEgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQxIHMxIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSBgU2Vjb25kX2xpc3QgczIgfVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9IC0+IFNraXAgeyBzdGF0ZSA9IGBGaXJzdF9saXN0IHMxIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSAtPlxuICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgRmlyc3RfbGlzdCBzMSB9KVxuICAgICAgICAgICAgfCBgU2Vjb25kX2xpc3QgczIgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQyIHMyIHdpdGhcbiAgICAgICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gYFNlY29uZF9saXN0IHMyIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczIgfSAtPlxuICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBgU2Vjb25kX2xpc3QgczIgfSkpXG4gICAgICB9XG47O1xuXG5sZXQgY29uY2F0X21hcCBzIH5mID0gYmluZCBzIH5mXG5sZXQgY29uY2F0IHMgPSBjb25jYXRfbWFwIHMgfmY6Rm4uaWRcbmxldCBjb25jYXRfbWFwaSBzIH5mID0gY29uY2F0X21hcCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIChpLCBzKSAtPiBmIGkgcylcblxubGV0IHppcCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSkgKFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IG5leHQyIH0pID1cbiAgbGV0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gczEgfSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGEsIGI7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gICAgfCBEb25lLCBfIHwgXywgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzMSB9LCBzMiAtPiBTa2lwIHsgc3RhdGUgPSBuZXh0MSBzMSwgczIgfVxuICAgIHwgczEsIFNraXAgeyBzdGF0ZSA9IHMyIH0gLT4gU2tpcCB7IHN0YXRlID0gczEsIG5leHQyIHMyIH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH07IG5leHQgfVxuOztcblxubGV0IHppcF9mdWxsXG4gICAgICAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gbmV4dDEgfSlcbiAgICAgIChTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBuZXh0MiB9KVxuICA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIFlpZWxkIHsgdmFsdWUgPSBiOyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBgQm90aCAoYSwgYik7IHN0YXRlID0gU2tpcCB7IHN0YXRlID0gczEgfSwgU2tpcCB7IHN0YXRlID0gczIgfSB9XG4gICAgfCBEb25lLCBEb25lIC0+IERvbmVcbiAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIHMyIC0+IFNraXAgeyBzdGF0ZSA9IG5leHQxIHMxLCBzMiB9XG4gICAgfCBzMSwgU2tpcCB7IHN0YXRlID0gczIgfSAtPiBTa2lwIHsgc3RhdGUgPSBzMSwgbmV4dDIgczIgfVxuICAgIHwgRG9uZSwgWWllbGQgeyB2YWx1ZSA9IGI7IHN0YXRlID0gczIgfSAtPlxuICAgICAgWWllbGQgeyB2YWx1ZSA9IGBSaWdodCBiOyBzdGF0ZSA9IERvbmUsIG5leHQyIHMyIH1cbiAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMxIH0sIERvbmUgLT5cbiAgICAgIFlpZWxkIHsgdmFsdWUgPSBgTGVmdCBhOyBzdGF0ZSA9IG5leHQxIHMxLCBEb25lIH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IFNraXAgeyBzdGF0ZSA9IHMxIH0sIFNraXAgeyBzdGF0ZSA9IHMyIH07IG5leHQgfVxuOztcblxubGV0IGJvdW5kZWRfbGVuZ3RoIChTZXF1ZW5jZSB7IHN0YXRlID0gc2VlZDsgbmV4dCB9KSB+YXRfbW9zdCA9XG4gIGxldCByZWMgbG9vcCBpIHNlZWQgbmV4dCA9XG4gICAgaWYgaSA+IGF0X21vc3RcbiAgICB0aGVuIGBHcmVhdGVyXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgfCBEb25lIC0+IGBJcyBpXG4gICAgICB8IFNraXAgeyBzdGF0ZSA9IHNlZWQgfSAtPiBsb29wIGkgc2VlZCBuZXh0XG4gICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHNlZWQgfSAtPiBsb29wIChpICsgMSkgc2VlZCBuZXh0KVxuICBpblxuICBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgbGVuZ3RoX2lzX2JvdW5kZWRfYnkgPyhtaW4gPSAtMSkgP21heCB0ID1cbiAgbGV0IGxlbmd0aF9pc19hdF9sZWFzdCAoU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSkgPVxuICAgIGxldCByZWMgbG9vcCBzIGFjYyA9XG4gICAgICBpZiBhY2MgPj0gbWluXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzIGFjY1xuICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBsb29wIHMgKGFjYyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIDBcbiAgaW5cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IGxlbmd0aF9pc19hdF9sZWFzdCB0XG4gIHwgU29tZSBtYXggLT5cbiAgICAobWF0Y2ggYm91bmRlZF9sZW5ndGggdCB+YXRfbW9zdDptYXggd2l0aFxuICAgICB8IGBJcyBsZW4gd2hlbiBsZW4gPj0gbWluIC0+IHRydWVcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IGl0ZXJpIHMgfmYgPSBpdGVyIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSBbQG5vbnRhaWxdXG5cbmxldCBmb2xkaSBzIH5pbml0IH5mID1cbiAgZm9sZCB+aW5pdCAobWFwaSBzIH5mOihmdW4gaSBzIC0+IGksIHMpKSB+ZjooZnVuIGFjYyAoaSwgcykgLT4gZiBpIGFjYyBzKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVkdWNlIHMgfmYgPVxuICBtYXRjaCBuZXh0IHMgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGEsIHMpIC0+IFNvbWUgKGZvbGQgcyB+aW5pdDphIH5mKVxuOztcblxubGV0IHJlZHVjZV9leG4gcyB+ZiA9XG4gIG1hdGNoIHJlZHVjZSBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UucmVkdWNlX2V4blwiXG4gIHwgU29tZSByZXMgLT4gcmVzXG47O1xuXG5sZXQgZ3JvdXAgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pIH5icmVhayA9XG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6KFNvbWUgKFtdLCBzKSlcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBEb25lXG4gICAgICB8IFNvbWUgKGFjYywgcykgLT5cbiAgICAgICAgKG1hdGNoIGFjYywgbmV4dCBzIHdpdGhcbiAgICAgICAgIHwgXywgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IFNvbWUgKGFjYywgcykgfVxuICAgICAgICAgfCBbXSwgRG9uZSAtPiBEb25lXG4gICAgICAgICB8IGFjYywgRG9uZSAtPiBZaWVsZCB7IHZhbHVlID0gTGlzdC5yZXYgYWNjOyBzdGF0ZSA9IE5vbmUgfVxuICAgICAgICAgfCBbXSwgWWllbGQgeyB2YWx1ZSA9IGN1cjsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gU29tZSAoWyBjdXIgXSwgcykgfVxuICAgICAgICAgfCAocHJldiA6OiBfIGFzIGFjYyksIFlpZWxkIHsgdmFsdWUgPSBjdXI7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICAgIGlmIGJyZWFrIHByZXYgY3VyXG4gICAgICAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IExpc3QucmV2IGFjYzsgc3RhdGUgPSBTb21lIChbIGN1ciBdLCBzKSB9XG4gICAgICAgICAgIGVsc2UgU2tpcCB7IHN0YXRlID0gU29tZSAoY3VyIDo6IGFjYywgcykgfSkpXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgKFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBsYXN0X2VsdCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBsYXN0X2VsdCBzXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIChtYXRjaCBsYXN0X2VsdCB3aXRoXG4gICAgICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU29tZSAoYiwgYSlcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gbG9vcCAoU29tZSBhKSBzKVxuICBpblxuICBsb29wIE5vbmUgcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZXMgcyB+ZXF1YWwgPVxuICB1bmZvbGRfd2l0aCBzIH5pbml0Ok5vbmUgfmY6KGZ1biBwcmV2IGEgLT5cbiAgICBtYXRjaCBwcmV2IHdpdGhcbiAgICB8IFNvbWUgYiB3aGVuIGVxdWFsIGEgYiAtPiBTa2lwIHsgc3RhdGUgPSBTb21lIGEgfVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBTb21lIGEgfSlcbjs7XG5cbmxldCBjb3VudCBzIH5mID0gZm9sZCBzIH5pbml0OjAgfmY6KGZ1biBhY2MgZWx0IC0+IGFjYyArIEJvb2wudG9faW50IChmIGVsdCkpIFtAbm9udGFpbF1cblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaSBhY2MgZWx0IC0+IGFjYyArIEJvb2wudG9faW50IChmIGkgZWx0KSkgW0Bub250YWlsXVxuOztcblxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBpbml0IG4gfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPlxuICAgIGlmIGkgPj0gbiB0aGVuIERvbmUgZWxzZSBZaWVsZCB7IHZhbHVlID0gZiBpOyBzdGF0ZSA9IGkgKyAxIH0pXG47O1xuXG5sZXQgc3ViIHMgfnBvcyB+bGVuID1cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS5zdWJcIjtcbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gMCwgc1xuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuIChpLCBzKSAtPlxuICAgICAgICAgICAgIGlmIGkgLSBwb3MgPj0gbGVuXG4gICAgICAgICAgICAgdGhlbiBEb25lXG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gd2hlbiBpID49IHBvcyAtPlxuICAgICAgICAgICAgICAgICBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBpICsgMSwgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpICsgMSwgcyB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCB0YWtlIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UudGFrZVwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSAwLCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKGksIHMpIC0+XG4gICAgICAgICAgICAgaWYgaSA+PSBsZW5cbiAgICAgICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gU2tpcCB7IHN0YXRlID0gaSwgcyB9XG4gICAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfSAtPiBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBpICsgMSwgcyB9KSlcbiAgICAgIH1cbjs7XG5cbmxldCBkcm9wIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UuZHJvcFwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSAwLCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW4gKGksIHMpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGksIHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gaSA+PSBsZW4gLT5cbiAgICAgICAgICAgICAgIFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGkgKyAxLCBzIH1cbiAgICAgICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBfOyBzdGF0ZSA9IHMgfSAtPiBTa2lwIHsgc3RhdGUgPSBpICsgMSwgcyB9KVxuICAgICAgfVxuOztcblxubGV0IHRha2Vfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gZiBhIC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IHMgfVxuICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IF87IHN0YXRlID0gXyB9IC0+IERvbmUpXG4gICAgICB9XG47O1xuXG5sZXQgZHJvcF93aGlsZSBzIH5mID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICB7IHN0YXRlID0gYERyb3BwaW5nIHNcbiAgICAgIDsgbmV4dCA9XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBEcm9wcGluZyBzIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGBEcm9wcGluZyBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IHdoZW4gZiBhIC0+IFNraXAgeyBzdGF0ZSA9IGBEcm9wcGluZyBzIH1cbiAgICAgICAgICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gcyB9IC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBJZGVudGl0eSBzIH0pXG4gICAgICAgICAgICB8IGBJZGVudGl0eSBzIC0+IGxpZnRfaWRlbnRpdHkgbmV4dCBzKVxuICAgICAgfVxuOztcblxubGV0IHNoaWZ0X3JpZ2h0IHMgeCA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzZWVkOyBuZXh0IH0gLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgeyBzdGF0ZSA9IGBDb25zaW5nIChzZWVkLCB4KVxuICAgICAgOyBuZXh0ID1cbiAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYENvbnNpbmcgKHNlZWQsIHgpIC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IGBJZGVudGl0eSBzZWVkIH1cbiAgICAgICAgICAgIHwgYElkZW50aXR5IHMgLT4gbGlmdF9pZGVudGl0eSBuZXh0IHMpXG4gICAgICB9XG47O1xuXG5sZXQgc2hpZnRfcmlnaHRfd2l0aF9saXN0IHMgbCA9IGFwcGVuZCAob2ZfbGlzdCBsKSBzXG5sZXQgc2hpZnRfbGVmdCA9IGRyb3BcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBpbnRlcnNwZXJzZSBzIH5zZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+XG4gICAgU2VxdWVuY2VcbiAgICAgIHsgc3RhdGUgPSBgSW5pdCBzXG4gICAgICA7IG5leHQgPVxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgSW5pdCBzIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGBJbml0IHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gYFJ1bm5pbmcgcyB9KVxuICAgICAgICAgICAgfCBgUnVubmluZyBzIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IFNraXAgeyBzdGF0ZSA9IGBSdW5uaW5nIHMgfVxuICAgICAgICAgICAgICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IHNlcDsgc3RhdGUgPSBgUHV0dGluZyAoYSwgcykgfSlcbiAgICAgICAgICAgIHwgYFB1dHRpbmcgKGEsIHMpIC0+IFlpZWxkIHsgdmFsdWUgPSBhOyBzdGF0ZSA9IGBSdW5uaW5nIHMgfSlcbiAgICAgIH1cbjs7XG5cbmxldCByZXBlYXQgeCA9IHVuZm9sZF9zdGVwIH5pbml0OnggfmY6KGZ1biB4IC0+IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHggfSlcblxubGV0IGN5Y2xlX2xpc3RfZXhuIHhzID1cbiAgaWYgTGlzdC5pc19lbXB0eSB4cyB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UuY3ljbGVfbGlzdF9leG5cIjtcbiAgbGV0IHMgPSBvZl9saXN0IHhzIGluXG4gIGNvbmNhdF9tYXAgfmY6KGZ1biAoKSAtPiBzKSAocmVwZWF0ICgpKVxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHNhIHNiID0gY29uY2F0X21hcCBzYSB+ZjooZnVuIGEgLT4gemlwIChyZXBlYXQgYSkgc2IpXG5sZXQgc2luZ2xldG9uIHggPSByZXR1cm4geFxuXG5sZXQgZGVsYXllZF9mb2xkIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcCBzIH5pbml0IH5maW5pc2ggfmY6KGZ1biBhY2Mgb3B0aW9uIH5rIC0+XG4gICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gayBhY2NcbiAgICB8IFNvbWUgYSAtPiBmIGFjYyBhIH5rKVxuOztcblxubGV0IGZvbGRfbSB+YmluZCB+cmV0dXJuIHQgfmluaXQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYmluZCAocmV0dXJuIGFjYykgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhY2MgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGl0ZXJfbSB+YmluZCB+cmV0dXJuIHQgfmYgPVxuICBFeHBlcnQuZGVsYXllZF9mb2xkX3N0ZXBcbiAgICB0XG4gICAgfmluaXQ6KClcbiAgICB+ZjooZnVuICgpIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gKCkpIH5mOmtcbiAgICAgIHwgU29tZSBhIC0+IGJpbmQgKGYgYSkgfmY6aylcbiAgICB+ZmluaXNoOnJldHVyblxuOztcblxubGV0IGZvbGRfdW50aWwgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGFjYyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmluaXNoIGFjY1xuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6ICgnYSwgJ2IpIENvbnRpbnVlX29yX3N0b3AudCkgd2l0aFxuICAgICAgIHwgU3RvcCB4IC0+IHhcbiAgICAgICB8IENvbnRpbnVlIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dCBmIGluaXQgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfcmVzdWx0IHMgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBSZXN1bHQucmV0dXJuIGFjY1xuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgcyBuZXh0IGYgYWNjXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIChtYXRjaCAoZiBhY2MgYSA6IChfLCBfKSBSZXN1bHQudCkgd2l0aFxuICAgICAgIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgICAgICB8IE9rIGFjYyAtPiBsb29wIHMgbmV4dCBmIGFjYylcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgfSAtPiBsb29wIHMgbmV4dCBmIGluaXRcbjs7XG5cbmxldCBmb3JjZV9lYWdlcmx5IHQgPSBvZl9saXN0ICh0b19saXN0IHQpXG5cbmxldCBtZW1vaXplICh0eXBlIGEpIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgb2YgKGEsIHQpIFN0ZXAudCBMYXp5LnRcbiAgZW5kXG4gIGluXG4gIGxldCByZWMgbWVtb2l6ZSBzID0gTS5UIChsYXp5IChmaW5kX3N0ZXAgcykpXG4gIGFuZCBmaW5kX3N0ZXAgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGZpbmRfc3RlcCBzXG4gICAgfCBZaWVsZCB7IHZhbHVlID0gYTsgc3RhdGUgPSBzIH0gLT4gWWllbGQgeyB2YWx1ZSA9IGE7IHN0YXRlID0gbWVtb2l6ZSBzIH1cbiAgaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZSA9IG1lbW9pemUgczsgbmV4dCA9IChmdW4gKE0uVCBsKSAtPiBMYXp5LmZvcmNlIGwpIH1cbjs7XG5cbmxldCBkcm9wX2VhZ2VybHkgcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaSB+bGVuIHMgbmV4dCA9XG4gICAgaWYgaSA+PSBsZW5cbiAgICB0aGVuIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gZW1wdHlcbiAgICAgIHwgU2tpcCB7IHN0YXRlID0gcyB9IC0+IGxvb3AgaSB+bGVuIHMgbmV4dFxuICAgICAgfCBZaWVsZCB7IHZhbHVlID0gXzsgc3RhdGUgPSBzIH0gLT4gbG9vcCAoaSArIDEpIH5sZW4gcyBuZXh0KVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9IC0+IGxvb3AgMCB+bGVuIHMgbmV4dFxuOztcblxubGV0IGRyb3Bfd2hpbGVfb3B0aW9uIChTZXF1ZW5jZSB7IHN0YXRlID0gczsgbmV4dCB9KSB+ZiA9XG4gIGxldCByZWMgbG9vcCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT4gbG9vcCBzXG4gICAgfCBZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSBzIH0gLT5cbiAgICAgIGlmIGYgeCB0aGVuIGxvb3AgcyBlbHNlIFNvbWUgKHgsIFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0IH0pXG4gIGluXG4gIGxvb3AgcyBbQG5vbnRhaWxdXG47O1xuXG5sZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgICB8IGBMZWZ0IF8gLT4gci5yZXR1cm4gMVxuICAgICAgfCBgUmlnaHQgXyAtPiByLnJldHVybiAoLTEpXG4gICAgICB8IGBCb3RoICh2MSwgdjIpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9hIHYxIHYyIGluXG4gICAgICAgIGlmIGMgPD4gMCB0aGVuIHIucmV0dXJuIGMpO1xuICAgIDApXG47O1xuXG5sZXQgZXF1YWwgZXF1YWxfYSB0MSB0MiA9XG4gIGZvcl9hbGwgKHppcF9mdWxsIHQxIHQyKSB+ZjooZnVuY3Rpb25cbiAgICB8IGBCb3RoIChhMSwgYTIpIC0+IGVxdWFsX2EgYTEgYTJcbiAgICB8IGBMZWZ0IF8gfCBgUmlnaHQgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCByb3VuZF9yb2JpbiBsaXN0ID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spID1cbiAgICBtYXRjaCB0b2RvX3N0YWNrIHdpdGhcbiAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IDo6IHRvZG9fc3RhY2sgLT5cbiAgICAgIChtYXRjaCBmIHMgd2l0aFxuICAgICAgIHwgWWllbGQgeyB2YWx1ZSA9IHg7IHN0YXRlID0gcyB9IC0+XG4gICAgICAgICBZaWVsZFxuICAgICAgICAgICB7IHZhbHVlID0geFxuICAgICAgICAgICA7IHN0YXRlID0gdG9kb19zdGFjaywgU2VxdWVuY2UgeyBzdGF0ZSA9IHM7IG5leHQgPSBmIH0gOjogZG9uZV9zdGFja1xuICAgICAgICAgICB9XG4gICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzIH0gLT5cbiAgICAgICAgIFNraXAgeyBzdGF0ZSA9IFNlcXVlbmNlIHsgc3RhdGUgPSBzOyBuZXh0ID0gZiB9IDo6IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2sgfVxuICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSB0b2RvX3N0YWNrLCBkb25lX3N0YWNrIH0pXG4gICAgfCBbXSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBkb25lX3N0YWNrIHRoZW4gRG9uZSBlbHNlIFNraXAgeyBzdGF0ZSA9IExpc3QucmV2IGRvbmVfc3RhY2ssIFtdIH1cbiAgaW5cbiAgbGV0IHN0YXRlID0gbGlzdCwgW10gaW5cbiAgU2VxdWVuY2UgeyBzdGF0ZTsgbmV4dCB9XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSAoU2VxdWVuY2UgeyBzdGF0ZSA9IHMxOyBuZXh0ID0gZjEgfSkgPVxuICBsZXQgbmV4dCAodG9kb19zdGFjaywgZG9uZV9zdGFjaywgczEpID1cbiAgICBtYXRjaCB0b2RvX3N0YWNrIHdpdGhcbiAgICB8IFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IGYyIH0gOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYyIHMyIHdpdGhcbiAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSB4OyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgICAgIFlpZWxkXG4gICAgICAgICAgIHsgdmFsdWUgPSB4XG4gICAgICAgICAgIDsgc3RhdGUgPSB0b2RvX3N0YWNrLCBTZXF1ZW5jZSB7IHN0YXRlID0gczI7IG5leHQgPSBmMiB9IDo6IGRvbmVfc3RhY2ssIHMxXG4gICAgICAgICAgIH1cbiAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMyIH0gLT5cbiAgICAgICAgIFNraXAgeyBzdGF0ZSA9IHRvZG9fc3RhY2ssIFNlcXVlbmNlIHsgc3RhdGUgPSBzMjsgbmV4dCA9IGYyIH0gOjogZG9uZV9zdGFjaywgczEgfVxuICAgICAgIHwgRG9uZSAtPiBTa2lwIHsgc3RhdGUgPSB0b2RvX3N0YWNrLCBkb25lX3N0YWNrLCBzMSB9KVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBmMSBzMSwgZG9uZV9zdGFjayB3aXRoXG4gICAgICAgfCBZaWVsZCB7IHZhbHVlID0gdDsgc3RhdGUgPSBzMSB9LCBfIC0+XG4gICAgICAgICBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiAodCA6OiBkb25lX3N0YWNrKSwgW10sIHMxIH1cbiAgICAgICB8IFNraXAgeyBzdGF0ZSA9IHMxIH0sIF8gLT4gU2tpcCB7IHN0YXRlID0gTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxIH1cbiAgICAgICB8IERvbmUsIF8gOjogXyAtPiBTa2lwIHsgc3RhdGUgPSBMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEgfVxuICAgICAgIHwgRG9uZSwgW10gLT4gRG9uZSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gW10sIFtdLCBzMSBpblxuICBTZXF1ZW5jZSB7IHN0YXRlOyBuZXh0IH1cbjs7XG5cbmxldCBpbnRlcmxlYXZlZF9jYXJ0ZXNpYW5fcHJvZHVjdCBzMSBzMiA9XG4gIG1hcCBzMSB+ZjooZnVuIHgxIC0+IG1hcCBzMiB+ZjooZnVuIHgyIC0+IHgxLCB4MikpIHw+IGludGVybGVhdmVcbjs7XG5cbmxldCBvZl9zZXEgKHNlcSA6IF8gU3RkbGliLlNlcS50KSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnNlcSB+ZjooZnVuIHNlcSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gRG9uZVxuICAgIHwgQ29ucyAoaGQsIHRsKSAtPiBZaWVsZCB7IHZhbHVlID0gaGQ7IHN0YXRlID0gdGwgfSlcbjs7XG5cbmxldCB0b19zZXEgKFNlcXVlbmNlIHsgc3RhdGU7IG5leHQgfSkgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIG5leHQgc3RhdGUgd2l0aFxuICAgIHwgRG9uZSAtPiBTdGRsaWIuU2VxLk5pbFxuICAgIHwgU2tpcCB7IHN0YXRlIH0gLT4gbG9vcCBzdGF0ZVxuICAgIHwgWWllbGQgeyB2YWx1ZSA9IGhkOyBzdGF0ZSB9IC0+IFN0ZGxpYi5TZXEuQ29ucyAoaGQsIGZ1biAoKSAtPiBsb29wIHN0YXRlKVxuICBpblxuICBmdW4gKCkgLT4gbG9vcCBzdGF0ZVxuOztcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlICdlbHQgc3RlcHMgPSBXcmFwIG9mICgnZWx0LCB1bml0IC0+ICdlbHQgc3RlcHMpIFN0ZXAudFxuXG4gIGxldCB1bndyYXAgKFdyYXAgc3RlcCkgPSBzdGVwXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2VsdCkgdCA9ICgnYSAtPiAnZWx0IHN0ZXBzKSAtPiAnZWx0IHN0ZXBzXG5cbiAgICBsZXQgcmV0dXJuIHggayA9IGsgeFxuXG4gICAgbGV0IGJpbmQgbSB+ZiBrID1cbiAgICAgIG0gKGZ1biBhIC0+XG4gICAgICAgIGxldCBtJyA9IGYgYSBpblxuICAgICAgICBtJyBrKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIG0gfmYgayA9IG0gKGZ1biBhIC0+IGsgKGYgYSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIE1vbmFkLk1ha2UyIChUKVxuXG4gIGxldCB5aWVsZCBlIGsgPSBXcmFwIChZaWVsZCB7IHZhbHVlID0gZTsgc3RhdGUgPSBrIH0pXG4gIGxldCB0b19zdGVwcyB0ID0gdCAoZnVuICgpIC0+IFdyYXAgRG9uZSlcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuICgpIHggfmsgZiAtPiBXcmFwIChZaWVsZCB7IHZhbHVlID0geDsgc3RhdGUgPSAoZnVuICgpIC0+IGsgKCkgZikgfSkpXG4gICAgICB+ZmluaXNoOnJldHVyblxuICA7O1xuXG4gIGxldCBydW4gdCA9XG4gICAgbGV0IGluaXQgKCkgPSB0b19zdGVwcyB0IGluXG4gICAgbGV0IGYgdGh1bmsgPSB1bndyYXAgKHRodW5rICgpKSBpblxuICAgIHVuZm9sZF9zdGVwIH5pbml0IH5mXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZVxuXG5tb2R1bGUgT2Zfc2V4cGFibGVcbiAgICAoU2V4cGFibGUgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogdCAtPiBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogU2V4cGFibGUudCAtPiB0XG4gICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTFcbiAgICAoU2V4cGFibGUgOiBTMSkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogJ2EgdCAtPiAnYSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICdhIFNleHBhYmxlLnQgLT4gJ2EgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUyXG4gICAgKFNleHBhYmxlIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgIFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlM1xuICAgIChTZXhwYWJsZSA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgaW5cbiAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3N0cmluZ2FibGUgKE0gOiBTdHJpbmdhYmxlLlMpIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcbndpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiBNLnQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2Ugc3RyaW5nX3NleHBfZ3JhbW1hclxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9IGNvbXBhcmVfYXJyYXlcblxubGV0IGdsb2JhbGl6ZSA6ICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgdFtAb2NhbWwubG9jYWxdKSAtPiAnYSB0ID1cbiAgZnVuICh0eXBlIGFfXzAwNV8pXG4gICAgICA6ICgoKGFfXzAwNV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA1XykgLT4gKGFfXzAwNV8gdFtAb2NhbWwubG9jYWxdKSAtPiBhX18wMDVfIHQpIC0+XG4gICAgZ2xvYmFsaXplX2FycmF5XG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gYXJyYXlfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfYXJyYXlcblxubGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBhcnJheV9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxuKCogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIG5ldyBpbi1wbGFjZSwgY29uc3RhbnQgaGVhcCBzb3J0aW5nIGFsZ29yaXRobSB0byByZXBsYWNlIHRoZVxuICAgb25lIHVzZWQgYnkgdGhlIHN0YW5kYXJkIGxpYnJhcmllcy4gIEl0cyBvbmx5IHB1cnBvc2UgaXMgdG8gYmUgZmFzdGVyIChob3BlZnVsbHlcbiAgIHN0cmljdGx5IGZhc3RlcikgdGhhbiB0aGUgYmFzZSBzb3J0IGFuZCBzdGFibGVfc29ydC5cblxuICAgQXQgYSBoaWdoIGxldmVsIHRoZSBhbGdvcml0aG0gaXM6XG4gICAtIHBpY2sgdHdvIHBpdm90IHBvaW50cyBieTpcbiAgIC0gcGljayA1IGFyYml0cmFyeSBlbGVtZW50cyBmcm9tIHRoZSBhcnJheVxuICAgLSBzb3J0IHRoZW0gd2l0aGluIHRoZSBhcnJheVxuICAgLSB0YWtlIHRoZSBlbGVtZW50cyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgbWlkZGxlIGVsZW1lbnQgb2YgdGhlIHNvcnQgYXMgdGhlIHBpdm90c1xuICAgLSBzb3J0IHRoZSBhcnJheSB3aXRoOlxuICAgLSBhbGwgZWxlbWVudHMgbGVzcyB0aGFuIHBpdm90MSB0byB0aGUgbGVmdCAocmFuZ2UgMSlcbiAgIC0gYWxsIGVsZW1lbnRzID49IHBpdm90MSBhbmQgPD0gcGl2b3QyIGluIHRoZSBtaWRkbGUgKHJhbmdlIDIpXG4gICAtIGFsbCBlbGVtZW50cyA+IHBpdm90MiB0byB0aGUgcmlnaHQgKHJhbmdlIDMpXG4gICAtIGlmIHBpdm90MSBhbmQgcGl2b3QyIGFyZSBlcXVhbCwgdGhlbiB0aGUgbWlkZGxlIHJhbmdlIGlzIHNvcnRlZCwgc28gaWdub3JlIGl0XG4gICAtIHJlY3Vyc2UgaW50byByYW5nZSAxLCAyIChpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgdW5lcXVhbCksIGFuZCAzXG4gICAtIGR1cmluZyByZWN1cnNpb24gdGhlcmUgYXJlIHR3byBpbmZsZWN0aW9uIHBvaW50czpcbiAgIC0gaWYgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgcmFuZ2UgaXMgc21hbGwsIHVzZSBpbnNlcnRpb24gc29ydCB0byBzb3J0IGl0XG4gICAtIGlmIHRoZSBzdGFjayBkZXB0aCBpcyBsYXJnZSwgc29ydCB0aGUgcmFuZ2Ugd2l0aCBoZWFwLXNvcnQgdG8gYXZvaWQgbl4yIHdvcnN0LWNhc2VcbiAgICAgYmVoYXZpb3JcblxuICAgU2VlIHRoZSBmb2xsb3dpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb246XG4gICAtIFwiRHVhbC1QaXZvdCBRdWlja3NvcnRcIiBieSBWbGFkaW1pciBZYXJvc2xhdnNraXkuXG4gICAgIEF2YWlsYWJsZSBhdFxuICAgICBodHRwOi8vd3d3LmtyaWNoZS5jb20uYXIvcm9vdC9wcm9ncmFtbWluZy9zcGFjZVRpbWVDb21wbGV4aXR5L0R1YWxQaXZvdFF1aWNrc29ydC5wZGZcbiAgIC0gXCJRdWlja3NvcnQgaXMgT3B0aW1hbFwiIGJ5IFNlZGdld2ljayBhbmQgQmVudGxleS5cbiAgICAgU2xpZGVzIGF0IGh0dHA6Ly93d3cuY3MucHJpbmNldG9uLmVkdS9+cnMvdGFsa3MvUXVpY2tzb3J0SXNPcHRpbWFsLnBkZlxuICAgLSBodHRwOi8vd3d3LnNvcnRpbmctYWxnb3JpdGhtcy5jb20vcXVpY2stc29ydC0zLXdheSAqKVxuXG5tb2R1bGUgU29ydGVyIChTIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgICB2YWwgc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgc3dhcCBhcnIgaSBqID1cbiAgICBsZXQgdG1wID0gZ2V0IGFyciBpIGluXG4gICAgc2V0IGFyciBpIChnZXQgYXJyIGopO1xuICAgIHNldCBhcnIgaiB0bXBcbiAgOztcblxuICBtb2R1bGUgdHlwZSBTb3J0ID0gc2lnXG4gICAgdmFsIHNvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBsZWZ0OmludCAoKiBsZWZ0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gcmlnaHQ6aW50ICgqIHJpZ2h0bW9zdCBpbmRleCBvZiBzdWItYXJyYXkgdG8gc29ydCAqKVxuICAgICAgLT4gdW5pdFxuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luc2VydGlvbl9zb3J0ICopXG4gIG1vZHVsZSBJbnNlcnRpb25fc29ydCA6IFNvcnQgPSBzdHJ1Y3RcbiAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgMS4gIHRoZSBzdWJhcnJheSBhcnJbbGVmdCAuLiBpLTFdIGlzIHNvcnRlZFxuICAgICAgIDIuICB0aGUgc3ViYXJyYXkgYXJyW2krMSAuLiBwb3NdIGlzIHNvcnRlZCBhbmQgY29udGFpbnMgb25seSBlbGVtZW50cyA+IHZcbiAgICAgICAzLiAgYXJyW2ldIG1heSBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgdlxuICAgICopXG4gICAgbGV0IHJlYyBpbnNlcnRfbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaSB2ID1cbiAgICAgIGxldCBpX25leHQgPSBpIC0gMSBpblxuICAgICAgaWYgaV9uZXh0ID49IGxlZnQgJiYgY29tcGFyZSAoZ2V0IGFyciBpX25leHQpIHYgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc2V0IGFyciBpIChnZXQgYXJyIGlfbmV4dCk7XG4gICAgICAgIGluc2VydF9sb29wIGFyciB+bGVmdCB+Y29tcGFyZSBpX25leHQgdilcbiAgICAgIGVsc2UgaVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgICgqIGxvb3AgaW52YXJpYW50OlxuICAgICAgICAgW2Fycl0gaXMgc29ydGVkIGZyb20gW2xlZnRdIHRvIFtwb3MgLSAxXSwgaW5jbHVzaXZlICopXG4gICAgICBmb3IgcG9zID0gbGVmdCArIDEgdG8gcmlnaHQgZG9cbiAgICAgICAgbGV0IHYgPSBnZXQgYXJyIHBvcyBpblxuICAgICAgICBsZXQgZmluYWxfcG9zID0gaW5zZXJ0X2xvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIHBvcyB2IGluXG4gICAgICAgIHNldCBhcnIgZmluYWxfcG9zIHZcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlYXBzb3J0ICopXG4gIG1vZHVsZSBIZWFwX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgcm9vdCdzIGNoaWxkcmVuIGFyZSBib3RoIGVpdGhlciByb290cyBvZiBtYXgtaGVhcHMgb3IgPiByaWdodCAqKVxuICAgIGxldCByZWMgaGVhcGlmeSBhcnIgfmNvbXBhcmUgcm9vdCB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHJlbGF0aXZlX3Jvb3QgPSByb290IC0gbGVmdCBpblxuICAgICAgbGV0IGxlZnRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDEgaW5cbiAgICAgIGxldCByaWdodF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMiBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiBsZWZ0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgbGVmdF9jaGlsZCkgKGdldCBhcnIgcm9vdCkgPiAwXG4gICAgICAgIHRoZW4gbGVmdF9jaGlsZFxuICAgICAgICBlbHNlIHJvb3RcbiAgICAgIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIHJpZ2h0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgcmlnaHRfY2hpbGQpIChnZXQgYXJyIGxhcmdlc3QpID4gMFxuICAgICAgICB0aGVuIHJpZ2h0X2NoaWxkXG4gICAgICAgIGVsc2UgbGFyZ2VzdFxuICAgICAgaW5cbiAgICAgIGlmIGxhcmdlc3QgPD4gcm9vdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN3YXAgYXJyIHJvb3QgbGFyZ2VzdDtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGFyZ2VzdCB+bGVmdCB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogRWxlbWVudHMgaW4gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBhcnJheSBhcmUgYWxyZWFkeSBoZWFwcyBvZiBzaXplIDEuICBXZSBtb3ZlXG4gICAgICAgICB0aHJvdWdoIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBhcnJheSBmcm9tIGJhY2sgdG8gZnJvbnQgZXhhbWluaW5nIHRoZSBlbGVtZW50IGF0XG4gICAgICAgICBoYW5kLCBhbmQgdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLCBmaXhpbmcgdGhlIGhlYXAgcHJvcGVydHkgYXMgd2UgZ28uICopXG4gICAgICBmb3IgaSA9IChsZWZ0ICsgcmlnaHQpIC8gMiBkb3dudG8gbGVmdCBkb1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBpIH5sZWZ0IH5yaWdodFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodDtcbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4uIGldIGlzIGEgbWF4LWhlYXAgSFxuICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uLiByaWdodF0gaXMgc29ydGVkIChjYWxsIGl0IFMpXG4gICAgICAgICAzLiAgZXZlcnkgZWxlbWVudCBvZiBIIGlzIGxlc3MgdGhhbiBldmVyeSBlbGVtZW50IG9mIFMgKilcbiAgICAgIGZvciBpID0gcmlnaHQgZG93bnRvIGxlZnQgKyAxIGRvXG4gICAgICAgIHN3YXAgYXJyIGxlZnQgaTtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGVmdCB+bGVmdCB+cmlnaHQ6KGkgLSAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50cm9zb3J0ICopXG4gIG1vZHVsZSBJbnRyb19zb3J0IDogc2lnXG4gICAgaW5jbHVkZSBTb3J0XG5cbiAgICB2YWwgZml2ZV9lbGVtZW50X3NvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgbTEgbTIgbTMgbTQgbTUgPVxuICAgICAgbGV0IGNvbXBhcmVfYW5kX3N3YXAgaSBqID1cbiAgICAgICAgaWYgY29tcGFyZSAoZ2V0IGFyciBpKSAoZ2V0IGFyciBqKSA+IDAgdGhlbiBzd2FwIGFyciBpIGpcbiAgICAgIGluXG4gICAgICAoKiBPcHRpbWFsIDUtZWxlbWVudCBzb3J0aW5nIG5ldHdvcms6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICAxLS1vLS0tLS1vLS0tLS1vLS0tLS0tLS0tLS0tLS0xXG4gICAgICAgICAgICAgICB8ICAgICB8ICAgICB8XG4gICAgICAgICAgICAyLS1vLS0tLS18LS1vLS18LS0tLS1vLS1vLS0tLS0yXG4gICAgICAgICAgICAgICAgICAgICB8ICB8ICB8ICAgICB8ICB8XG4gICAgICAgICAgICAzLS0tLS0tLS1vLS1vLS18LS1vLS18LS1vLS0tLS0zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICB8XG4gICAgICAgICAgICA0LS0tLS1vLS0tLS0tLS1vLS1vLS18LS0tLS1vLS00XG4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICB8XG4gICAgICAgICAgICA1LS0tLS1vLS0tLS0tLS0tLS0tLS1vLS0tLS1vLS01XG4gICAgICAgICAgdn0gKilcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTI7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMyBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgICgqIGNob29zZSBwaXZvdHMgZm9yIHRoZSBhcnJheSBieSBzb3J0aW5nIDUgZWxlbWVudHMgYW5kIGV4YW1pbmluZyB0aGUgY2VudGVyIHRocmVlXG4gICAgICAgZWxlbWVudHMuICBUaGUgZ29hbCBpcyB0byBjaG9vc2UgdHdvIHBpdm90cyB0aGF0IHdpbGwgZWl0aGVyOlxuICAgICAgIC0gYnJlYWsgdGhlIHJhbmdlIHVwIGludG8gMyBldmVuIHBhcnRpdGlvbnNcbiAgICAgICAgIG9yXG4gICAgICAgLSBlbGltaW5hdGUgYSBjb21tb25seSBhcHBlYXJpbmcgZWxlbWVudCBieSBzb3J0aW5nIGl0IGludG8gdGhlIGNlbnRlciBwYXJ0aXRpb25cbiAgICAgICAgIGJ5IGl0c2VsZlxuICAgICAgICAgVG8gdGhpcyBlbmQgd2UgbG9vayBhdCB0aGUgY2VudGVyIDMgZWxlbWVudHMgb2YgdGhlIDUgYW5kIHJldHVybiBwYWlycyBvZiBlcXVhbFxuICAgICAgICAgZWxlbWVudHMgb3IgdGhlIHdpZGVzdCByYW5nZSAqKVxuICAgIGxldCBjaG9vc2VfcGl2b3RzIGFyciB+Y29tcGFyZTooKGNvbXBhcmUgOiBfIC0+IF8gLT4gXykgW0Bsb2NhbF0pIH5sZWZ0IH5yaWdodCA9XG4gICAgICBsZXQgc2l4dGggPSAocmlnaHQgLSBsZWZ0KSAvIDYgaW5cbiAgICAgIGxldCBtMSA9IGxlZnQgKyBzaXh0aCBpblxuICAgICAgbGV0IG0yID0gbTEgKyBzaXh0aCBpblxuICAgICAgbGV0IG0zID0gbTIgKyBzaXh0aCBpblxuICAgICAgbGV0IG00ID0gbTMgKyBzaXh0aCBpblxuICAgICAgbGV0IG01ID0gbTQgKyBzaXh0aCBpblxuICAgICAgZml2ZV9lbGVtZW50X3NvcnQgYXJyIH5jb21wYXJlIG0xIG0yIG0zIG00IG01O1xuICAgICAgbGV0IG0yX3ZhbCA9IGdldCBhcnIgbTIgaW5cbiAgICAgIGxldCBtM192YWwgPSBnZXQgYXJyIG0zIGluXG4gICAgICBsZXQgbTRfdmFsID0gZ2V0IGFyciBtNCBpblxuICAgICAgaWYgY29tcGFyZSBtMl92YWwgbTNfdmFsID0gMFxuICAgICAgdGhlbiBtMl92YWwsIG0zX3ZhbCwgdHJ1ZVxuICAgICAgZWxzZSBpZiBjb21wYXJlIG0zX3ZhbCBtNF92YWwgPSAwXG4gICAgICB0aGVuIG0zX3ZhbCwgbTRfdmFsLCB0cnVlXG4gICAgICBlbHNlIG0yX3ZhbCwgbTRfdmFsLCBmYWxzZVxuICAgIDs7XG5cbiAgICBsZXQgZHVhbF9waXZvdF9wYXJ0aXRpb24gYXJyIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBwaXZvdDEsIHBpdm90MiwgcGl2b3RzX2VxdWFsID0gY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgbGVmdCA8PSBsIDwgciA8PSByaWdodFxuICAgICAgICAgMi4gIGwgPD0gcCA8PSByXG4gICAgICAgICAzLiAgbCA8PSB4IDwgcCAgICAgaW1wbGllcyBhcnJbeF0gPj0gcGl2b3QxXG4gICAgICAgICBhbmQgYXJyW3hdIDw9IHBpdm90MlxuICAgICAgICAgNC4gIGxlZnQgPD0geCA8IGwgIGltcGxpZXMgYXJyW3hdIDwgcGl2b3QxXG4gICAgICAgICA1LiAgciA8IHggPD0gcmlnaHQgaW1wbGllcyBhcnJbeF0gPiBwaXZvdDIgKilcbiAgICAgIGxldCByZWMgbG9vcCBsIHAgciA9XG4gICAgICAgIGxldCBwdiA9IGdldCBhcnIgcCBpblxuICAgICAgICBpZiBjb21wYXJlIHB2IHBpdm90MSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc3dhcCBhcnIgcCBsO1xuICAgICAgICAgIGNvbnQgKGwgKyAxKSAocCArIDEpIHIpXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZSBwdiBwaXZvdDIgPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIGxvb3AgaW52YXJpYW50czogIHNhbWUgYXMgdGhvc2Ugb2YgdGhlIG91dGVyIGxvb3AgKilcbiAgICAgICAgICBsZXQgcmVjIHNjYW5fYmFja3dhcmRzIHIgPVxuICAgICAgICAgICAgaWYgciA+IHAgJiYgY29tcGFyZSAoZ2V0IGFyciByKSBwaXZvdDIgPiAwIHRoZW4gc2Nhbl9iYWNrd2FyZHMgKHIgLSAxKSBlbHNlIHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByID0gc2Nhbl9iYWNrd2FyZHMgciBpblxuICAgICAgICAgIHN3YXAgYXJyIHIgcDtcbiAgICAgICAgICBjb250IGwgcCAociAtIDEpKVxuICAgICAgICBlbHNlIGNvbnQgbCAocCArIDEpIHJcbiAgICAgIGFuZCBjb250IGwgcCByID0gaWYgcCA+IHIgdGhlbiBsLCByIGVsc2UgbG9vcCBsIHAgciBpblxuICAgICAgbGV0IGwsIHIgPSBjb250IGxlZnQgbGVmdCByaWdodCBpblxuICAgICAgbCwgciwgcGl2b3RzX2VxdWFsXG4gICAgOztcblxuICAgIGxldCByZWMgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGxlbiA9IHJpZ2h0IC0gbGVmdCArIDEgaW5cbiAgICAgICgqIFRoaXMgdGFrZXMgY2FyZSBvZiBzb21lIGVkZ2UgY2FzZXMsIHN1Y2ggYXMgbGVmdCA+IHJpZ2h0IG9yIHZlcnkgc2hvcnQgYXJyYXlzLFxuICAgICAgICAgc2luY2UgSW5zZXJ0aW9uX3NvcnQuc29ydCBoYW5kbGVzIHRoZXNlIGNhc2VzIHByb3Blcmx5LiAgVGh1cyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICBtYWtlIHN1cmUgdGhhdCBsZWZ0IGFuZCByaWdodCBhcmUgdmFsaWQgaW4gcmVjdXJzaXZlIGNhbGxzLiAqKVxuICAgICAgaWYgbGVuIDw9IDMyXG4gICAgICB0aGVuIEluc2VydGlvbl9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSBpZiBtYXhfZGVwdGggPCAwXG4gICAgICB0aGVuIEhlYXBfc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbWF4X2RlcHRoID0gbWF4X2RlcHRoIC0gMSBpblxuICAgICAgICBsZXQgbCwgciwgbWlkZGxlX3NvcnRlZCA9IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ6KGwgLSAxKTtcbiAgICAgICAgaWYgbm90IG1pZGRsZV9zb3J0ZWQgdGhlbiBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OmwgfnJpZ2h0OnI7XG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6KHIgKyAxKSB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGhlYXBfc29ydF9zd2l0Y2hfZGVwdGggPVxuICAgICAgICAoKiBXZSBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXQgYSByZWN1cnNpb24gZGVwdGggb2YgMzIuIEdOVSBpbnRyb3NvcnQgdXNlcyAybGcobikuXG4gICAgICAgICAgIFRoZSBleHBlY3RlZCByZWN1cnNpb24gZGVwdGggZm9yIHBlcmZlY3QgMy13YXkgc3BsaXRzIGlzIGxvZ18zKG4pLlxuXG4gICAgICAgICAgIFVzaW5nIDMyIG1lYW5zIGEgYmFsYW5jZWQgMy13YXkgc3BsaXQgd291bGQgd29yayB1cCB0byAzXjMyIGVsZW1lbnRzIChyb3VnaGx5XG4gICAgICAgICAgIDJeNTAgb3IgMTBeMTUpLiBHTlUgcmVhY2hlcyBhIGRlcHRoIG9mIDMyIGF0IDY1NTM2IGVsZW1lbnRzLlxuXG4gICAgICAgICAgIEZvciBzbWFsbCBhcnJheXMsIHRoaXMgbWFrZXMgdXMgbGVzcyBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0LCBidXQgdGhlXG4gICAgICAgICAgIDMyKk4gY29zdCBiZWZvcmUgd2UgZG8gaXMgbm90IHRoYXQgbXVjaC5cblxuICAgICAgICAgICBGb3IgbGFyZ2UgYXJyYXlzLCB0aGlzIG1lYW5zIHdlIGFyZSBtb3JlIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXRcbiAgICAgICAgICAgc29tZSBwb2ludCBpZiB3ZSBnZXQgc29tZSBiYWQgc3BsaXRzIG9yIGlmIHRoZSBhcnJheSBpcyBodWdlLiBCdXQgdGhhdCdzIG9ubHkgYVxuICAgICAgICAgICBjb25zdGFudCBmYWN0b3IgY29zdCBpbiB0aGUgZmluYWwgc3RhZ2VzIG9mIHJlY3Vyc2lvbi5cblxuICAgICAgICAgICBBbGwgaW4gYWxsLCB0aGlzIHNlZW1zIHRvIGJlIGEgc21hbGwgdHJhZGVvZmYgYW5kIGF2b2lkcyBwYXlpbmcgYSBjb3N0IHRvXG4gICAgICAgICAgIGNvbXB1dGUgYSBsb2dhcml0aG0gYXQgdGhlIHN0YXJ0LiAqKVxuICAgICAgICAzMlxuICAgICAgaW5cbiAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGg6aGVhcF9zb3J0X3N3aXRjaF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgc29ydCA/cG9zID9sZW4gYXJyIH5jb21wYXJlOigoY29tcGFyZSA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIGFycilcbiAgICBpblxuICAgIEludHJvX3NvcnQuc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQ6cG9zIH5yaWdodDoocG9zICsgbGVuIC0gMSlcbiAgOztcbmVuZFxuW0BAaW5saW5lXVxuXG5tb2R1bGUgU29ydCA9IFNvcnRlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSB1bnNhZmVfZ2V0XG4gICAgbGV0IHNldCA9IHVuc2FmZV9zZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGVuZClcblxubGV0IHNvcnQgPSBTb3J0LnNvcnRcbmxldCBvZl9hcnJheSB0ID0gdFxubGV0IHRvX2FycmF5IHQgPSB0XG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaXNfc29ydGVkIHQgfmNvbXBhcmUgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPiAwICYmICFyZXN1bHQgZG9cbiAgICBsZXQgZWx0X2kgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICBsZXQgZWx0X2lfbWludXNfMSA9IHVuc2FmZV9nZXQgdCAoIWkgLSAxKSBpblxuICAgIGlmIGNvbXBhcmUgZWx0X2lfbWludXNfMSBlbHRfaSA+IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBpc19zb3J0ZWRfc3RyaWN0bHkgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID49IDAgdGhlbiByZXN1bHQgOj0gZmFsc2U7XG4gICAgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZXJnZSBhMSBhMiB+Y29tcGFyZSA9XG4gIGxldCBsMSA9IEFycmF5Lmxlbmd0aCBhMSBpblxuICBsZXQgbDIgPSBBcnJheS5sZW5ndGggYTIgaW5cbiAgaWYgbDEgPSAwXG4gIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGwyID0gMFxuICB0aGVuIGNvcHkgYTFcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGEyIDApICh1bnNhZmVfZ2V0IGExIChsMSAtIDEpKSA+PSAwXG4gIHRoZW4gYXBwZW5kIGExIGEyXG4gIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhMSAwKSAodW5zYWZlX2dldCBhMiAobDIgLSAxKSkgPiAwXG4gIHRoZW4gYXBwZW5kIGEyIGExXG4gIGVsc2UgKFxuICAgIGxldCBsZW4gPSBsMSArIGwyIGluXG4gICAgbGV0IG1lcmdlZCA9IGNyZWF0ZSB+bGVuICh1bnNhZmVfZ2V0IGExIDApIGluXG4gICAgbGV0IGExX2luZGV4ID0gcmVmIDAgaW5cbiAgICBsZXQgYTJfaW5kZXggPSByZWYgMCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgdXNlX2ExID1cbiAgICAgICAgaWYgbDEgPSAhYTFfaW5kZXhcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGlmIGwyID0gIWEyX2luZGV4XG4gICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICBlbHNlIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpIDw9IDBcbiAgICAgIGluXG4gICAgICBpZiB1c2VfYTFcbiAgICAgIHRoZW4gKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGExICFhMV9pbmRleCk7XG4gICAgICAgIGExX2luZGV4IDo9ICFhMV9pbmRleCArIDEpXG4gICAgICBlbHNlIChcbiAgICAgICAgdW5zYWZlX3NldCBtZXJnZWQgaSAodW5zYWZlX2dldCBhMiAhYTJfaW5kZXgpO1xuICAgICAgICBhMl9pbmRleCA6PSAhYTJfaW5kZXggKyAxKVxuICAgIGRvbmU7XG4gICAgbWVyZ2VkKVxuOztcblxubGV0IGNvcHlfbWF0cml4ID0gbWFwIH5mOmNvcHlcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwIHQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgIGFjYyA6PSBuZXdfYWNjO1xuICAgIHkpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxubGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBhY2MgOj0gZiBpICFhY2MgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZGluZ19tYXBpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgbWFwaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSkgW0Bub250YWlsXVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgY29uY2F0X21hcCB0IH5mID0gY29uY2F0ICh0b19saXN0IChtYXAgfmYgdCkpXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwaSB+ZiB0KSlcblxubGV0IHJldl9pbnBsYWNlIHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIHdoaWxlICFpIDwgIWogZG9cbiAgICBzd2FwIHQgIWkgIWo7XG4gICAgaW5jciBpO1xuICAgIGRlY3IgalxuICBkb25lXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgdCA9IGNvcHkgdCBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdF9yZXYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFt8fF1cbiAgfCBhIDo6IGwgLT5cbiAgICBsZXQgbGVuID0gMSArIExpc3QubGVuZ3RoIGwgaW5cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBsZXQgciA9IHJlZiBsIGluXG4gICAgKCogV2Ugc3RhcnQgYXQgW2xlbiAtIDJdIGJlY2F1c2Ugd2UgYWxyZWFkeSBwdXQgW2FdIGF0IFt0LihsZW4gLSAxKV0uICopXG4gICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICBtYXRjaCAhciB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBhIDo6IGwgLT5cbiAgICAgICAgdC4oaSkgPC0gYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB0XG47O1xuXG4oKiBbb2ZfbGlzdF9tYXBdIGFuZCBbb2ZfbGlzdF9yZXZfbWFwXSBhcmUgYmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIE9DYW1sXG4gICBkaXN0cmlidXRpb24uICopXG5cbmxldCBvZl9saXN0X21hcCB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICB1bnNhZmVfc2V0IGEgaSAoZiBoZCk7XG4gICAgICAgIGZpbGwgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCAxIHRsIFtAbm9udGFpbF1cbjs7XG5cbmxldCBvZl9saXN0X21hcGkgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiAwIGhkKSBpblxuICAgIGxldCByZWMgZmlsbCBhIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIHVuc2FmZV9zZXQgYSBpIChmIGkgaGQpO1xuICAgICAgICBmaWxsIGEgKGkgKyAxKSB0bFxuICAgIGluXG4gICAgZmlsbCBhIDEgdGwgW0Bub250YWlsXVxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcCB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXAgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcGkgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwaSB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByID0gcmVmIFt8fF0gaW5cbiAgbGV0IGsgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IHQgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBpZiAhayA9IDAgdGhlbiByIDo9IGNyZWF0ZSB+bGVuOihsZW5ndGggdCkgYTtcbiAgICAgIHVuc2FmZV9zZXQgIXIgIWsgYTtcbiAgICAgIGluY3Iga1xuICBkb25lO1xuICBpZiAhayA9IGxlbmd0aCB0IHRoZW4gIXIgZWxzZSBpZiAhayA+IDAgdGhlbiBzdWIgfnBvczowIH5sZW46IWsgIXIgZWxzZSBbfHxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIF9pIGEgLT4gZiBhKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyX29wdCB0ID0gZmlsdGVyX21hcCB0IH5mOkZuLmlkXG5cbmxldCByYWlzZV9sZW5ndGhfbWlzbWF0Y2ggbmFtZSBuMSBuMiA9XG4gIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWRcIiBuYW1lIG4xIG4yICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDJfZXhuIG5hbWUgdDEgdDIgPVxuICBsZXQgbjEgPSBsZW5ndGggdDEgaW5cbiAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjJcbjs7XG5cbmxldCBpdGVyMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lml0ZXIyX2V4blwiIHQxIHQyO1xuICBpdGVyaSB0MSB+ZjooZnVuIGkgeDEgLT4gZiB4MSAodW5zYWZlX2dldCB0MiBpKSkgW0Bub250YWlsXVxuOztcblxubGV0IG1hcDJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5tYXAyX2V4blwiIHQxIHQyO1xuICBpbml0IChsZW5ndGggdDEpIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZm9sZDJfZXhuIHQxIHQyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb2xkMl9leG5cIiB0MSB0MjtcbiAgZm9sZGkgdDEgfmluaXQgfmY6KGZ1biBpIGFjIHggLT4gZiBhYyB4ICh1bnNhZmVfZ2V0IHQyIGkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSBmaWx0ZXJfbWFwIHQgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJpIHQgfmYgPSBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSkgW0Bub250YWlsXVxuXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAhaSAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKSBbQG5vbnRhaWxdXG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICh1bnNhZmVfZ2V0IHQgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCBsZW5ndGggPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAobGVuZ3RoIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAhaSAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGV4aXN0czJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5leGlzdHMyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpIHRoZW4gcmVzdWx0IDo9IHRydWUgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGwyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZm9yX2FsbDJfZXhuXCIgdDEgdDI7XG4gIGxldCBpID0gcmVmIChsZW5ndGggdDEgLSAxKSBpblxuICBsZXQgcmVzdWx0ID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiAhcmVzdWx0IGRvXG4gICAgaWYgbm90IChmICh1bnNhZmVfZ2V0IHQxICFpKSAodW5zYWZlX2dldCB0MiAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBlcXVhbCBlcXVhbCB0MSB0MiA9IGxlbmd0aCB0MSA9IGxlbmd0aCB0MiAmJiBmb3JfYWxsMl9leG4gdDEgdDIgfmY6ZXF1YWxcblxuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHQgaSAoZiAodW5zYWZlX2dldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGZpbmRpX2ludGVybmFsIHQgfmYgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIGlmX25vdF9mb3VuZCAoKVxuICBlbHNlIChcbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHZhbHVlX2ZvdW5kID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAobm90ICFmb3VuZCkgJiYgIWkgPCBsZW5ndGggZG9cbiAgICAgIGxldCB2YWx1ZSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZiAhaSB2YWx1ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHZhbHVlX2ZvdW5kIDo9IHZhbHVlO1xuICAgICAgICBmb3VuZCA6PSB0cnVlKVxuICAgICAgZWxzZSBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmICFmb3VuZCB0aGVuIGlmX2ZvdW5kIH5pOiFpIH52YWx1ZTohdmFsdWVfZm91bmQgZWxzZSBpZl9ub3RfZm91bmQgKCkpXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mXG4gICAgfmlmX2ZvdW5kOihmdW4gfmkgfnZhbHVlIC0+IFNvbWUgKGksIHZhbHVlKSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gTm9uZSlcbjs7XG5cbmxldCBmaW5kaV9leG4gdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mXG4gICAgfmlmX2ZvdW5kOihmdW4gfmkgfnZhbHVlIC0+IGksIHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kaV9leG46IG5vdCBmb3VuZFwiKSkpXG47O1xuXG5sZXQgZmluZF9leG4gdCB+ZiA9XG4gIGZpbmRpX2ludGVybmFsXG4gICAgdFxuICAgIH5mOihmdW4gX2kgeCAtPiBmIHgpXG4gICAgfmlmX2ZvdW5kOihmdW4gfmk6XyB+dmFsdWUgLT4gdmFsdWUpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IHJhaXNlIChOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfZXhuOiBub3QgZm91bmRcIikpKVxuICBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmluZCB0IH5mID0gT3B0aW9uLm1hcCAoZmluZGkgdCB+ZjooZnVuIF9pIHggLT4gZiB4KSkgfmY6KGZ1biAoX2ksIHgpIC0+IHgpXG5cbmxldCBmaW5kX21hcCB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGZpbmRfbWFwX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwX2V4blxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgdmFsdWVfZm91bmQgPSByZWYgTm9uZSBpblxuICAgIHdoaWxlIE9wdGlvbi5pc19ub25lICF2YWx1ZV9mb3VuZCAmJiAhaSA8IGxlbmd0aCBkb1xuICAgICAgbGV0IHZhbHVlID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgICB2YWx1ZV9mb3VuZCA6PSBmICFpIHZhbHVlO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICAhdmFsdWVfZm91bmQpXG47O1xuXG5sZXQgZmluZF9tYXBpX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkFycmF5LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUgdCB+ZXF1YWwgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGlmIG4gPD0gMVxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlc3VsdCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGkgPSByZWYgMSBpblxuICAgIGxldCBwcmV2ID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjdXIgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGVxdWFsIGN1ciAhcHJldlxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlc3VsdCA6PSBTb21lICghcHJldiwgY3VyKTtcbiAgICAgICAgaSA6PSBuKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHByZXYgOj0gY3VyO1xuICAgICAgICBpbmNyIGkpXG4gICAgZG9uZTtcbiAgICAhcmVzdWx0KVxuOztcblxubGV0IHJlZHVjZSB0IH5mID1cbiAgaWYgbGVuZ3RoIHQgPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgciA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgICBkb25lO1xuICAgIFNvbWUgIXIpXG47O1xuXG5sZXQgcmVkdWNlX2V4biB0IH5mID1cbiAgbWF0Y2ggcmVkdWNlIHQgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJBcnJheS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHYgLT4gdlxuOztcblxubGV0IHBlcm11dGUgPSBBcnJheV9wZXJtdXRlLnBlcm11dGVcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkucmFuZG9tX2VsZW1lbnRfZXhuOiBlbXB0eSBhcnJheVwiXG4gIGVsc2UgdC4oUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCB0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSB0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIHQpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCB6aXAgdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyIHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1hcDJfZXhuIHQxIHQyIH5mOihmdW4geDEgeDIgLT4geDEsIHgyKSlcbjs7XG5cbmxldCB6aXBfZXhuIHQxIHQyID1cbiAgaWYgbGVuZ3RoIHQxIDw+IGxlbmd0aCB0MlxuICB0aGVuIGZhaWx3aXRoIFwiQXJyYXkuemlwX2V4blwiXG4gIGVsc2UgbWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpXG47O1xuXG5sZXQgdW56aXAgdCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB4LCB5ID0gdC4oMCkgaW5cbiAgICBsZXQgcmVzMSA9IGNyZWF0ZSB+bGVuOm4geCBpblxuICAgIGxldCByZXMyID0gY3JlYXRlIH5sZW46biB5IGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgeCwgeSA9IHQuKGkpIGluXG4gICAgICByZXMxLihpKSA8LSB4O1xuICAgICAgcmVzMi4oaSkgPC0geVxuICAgIGRvbmU7XG4gICAgcmVzMSwgcmVzMilcbjs7XG5cbmxldCBzb3J0ZWRfY29weSB0IH5jb21wYXJlID1cbiAgbGV0IHQxID0gY29weSB0IGluXG4gIHNvcnQgdDEgfmNvbXBhcmU7XG4gIHQxXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCAoYm90aCA6IF8gRWl0aGVyLnQgdCkgPSBtYXBpIHQgfmYgaW5cbiAgbGV0IGZpcnN0cyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCB4IC0+IFNvbWUgeFxuICAgICAgfCBTZWNvbmQgXyAtPiBOb25lKVxuICBpblxuICBsZXQgc2Vjb25kcyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBfIC0+IE5vbmVcbiAgICAgIHwgU2Vjb25kIHggLT4gU29tZSB4KVxuICBpblxuICBmaXJzdHMsIHNlY29uZHNcbjs7XG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIF8geCAtPiBmIHgpIFtAbm9udGFpbF1cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIF8geCAtPiBmIHgpIFtAbm9udGFpbF1cbmxldCBsYXN0IHQgPSB0LihsZW5ndGggdCAtIDEpXG5cbigqIENvbnZlcnQgdG8gYSBzZXF1ZW5jZSBidXQgZG9lcyBub3QgYXR0ZW1wdCB0byBwcm90ZWN0IGFnYWluc3QgbW9kaWZpY2F0aW9uXG4gICBpbiB0aGUgYXJyYXkuICopXG5sZXQgdG9fc2VxdWVuY2VfbXV0YWJsZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IGxlbmd0aCB0XG4gICAgdGhlbiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IHQuKGkpOyBzdGF0ZSA9IGkgKyAxIH0pXG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX3NlcXVlbmNlX211dGFibGUgKGNvcHkgdClcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IHQxIHQyID1cbiAgaWYgaXNfZW1wdHkgdDEgfHwgaXNfZW1wdHkgdDJcbiAgdGhlbiBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCBuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW46KG4xICogbjIpICh0MS4oMCksIHQyLigwKSkgaW5cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgZm9yIGkxID0gMCB0byBuMSAtIDEgZG9cbiAgICAgIGZvciBpMiA9IDAgdG8gbjIgLSAxIGRvXG4gICAgICAgIHQuKCFyKSA8LSB0MS4oaTEpLCB0Mi4oaTIpO1xuICAgICAgICBpbmNyIHJcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIHQpXG47O1xuXG5sZXQgdHJhbnNwb3NlIHR0ID1cbiAgaWYgbGVuZ3RoIHR0ID0gMFxuICB0aGVuIFNvbWUgW3x8XVxuICBlbHNlIChcbiAgICBsZXQgd2lkdGggPSBsZW5ndGggdHQgaW5cbiAgICBsZXQgZGVwdGggPSBsZW5ndGggdHQuKDApIGluXG4gICAgaWYgZXhpc3RzIHR0IH5mOihmdW4gdCAtPiBsZW5ndGggdCA8PiBkZXB0aClcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKGluaXQgZGVwdGggfmY6KGZ1biBkIC0+IGluaXQgd2lkdGggfmY6KGZ1biB3IC0+IHR0Lih3KS4oZCkpKSkpXG47O1xuXG5sZXQgdHJhbnNwb3NlX2V4biB0dCA9XG4gIG1hdGNoIHRyYW5zcG9zZSB0dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnRyYW5zcG9zZV9leG5cIlxuICB8IFNvbWUgdHQnIC0+IHR0J1xuOztcblxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGVuZClcblxuaW5jbHVkZSBCbGl0Lk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gdCA9XG4gICAgICBpZiBsZW4gPSAwXG4gICAgICB0aGVuIFt8fF1cbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIHQuKDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRfYVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgU29ydCA9IFNvcnRcbiAgbW9kdWxlIFNvcnRlciA9IFNvcnRlclxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0IGFsbCB2YWx1ZXMgb2YgdHlwZSBbdF0gZG8gbm90IGhhdmUgdGhlIHRhZ1xuICAgW2RvdWJsZV9hcnJheV90YWddLiAgU29tZSBmdW5jdGlvbnMgYmVsb3cgYXNzdW1lIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGVzdGluZyB0aGVcbiAgIHRhZywgYW5kIHdpbGwgc2VnZmF1bHQgaWYgdGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGhvbGQuICopXG50eXBlIHQgPSBTdGRsaWIuT2JqLnQgYXJyYXlcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChTdGRsaWIuT2JqLnRhZyAoU3RkbGliLk9iai5yZXByIHQpIDw+IFN0ZGxpYi5PYmouZG91YmxlX2FycmF5X3RhZylcbjs7XG5cbmxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggKCogd291bGQgY2hlY2sgZm9yIGZsb2F0IGFycmF5cyBpbiAzMiBiaXQsIGJ1dCB3aGF0ZXZlciAqKVxuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBTZXhwLkF0b21cbiAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBcIjxPYmpfYXJyYXkudCBvZiBsZW5ndGggXCI7IEludC50b19zdHJpbmcgKGxlbmd0aCB0KTsgXCI+XCIgXSlcbjs7XG5cbmxldCB6ZXJvX29iaiA9IFN0ZGxpYi5PYmoucmVwciAoMCA6IGludClcblxuKCogV2UgY2FsbCBbQXJyYXkuY3JlYXRlXSB3aXRoIGEgdmFsdWUgdGhhdCBpcyBub3QgYSBmbG9hdCBzbyB0aGF0IHRoZSBhcnJheSBkb2Vzbid0IGdldFxuICAgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAqKVxubGV0IGNyZWF0ZV96ZXJvIH5sZW4gPSBBcnJheS5jcmVhdGUgfmxlbiB6ZXJvX29ialxubGV0IGVtcHR5ID0gW3x8XVxuXG50eXBlIG5vdF9hX2Zsb2F0ID1cbiAgfCBOb3RfYV9mbG9hdF8wXG4gIHwgTm90X2FfZmxvYXRfMSBvZiBpbnRcblxubGV0IF9ub3RfYV9mbG9hdF8wID0gTm90X2FfZmxvYXRfMFxubGV0IF9ub3RfYV9mbG9hdF8xID0gTm90X2FfZmxvYXRfMSA0MlxuXG5sZXQgZ2V0IHQgaSA9XG4gICgqIE1ha2UgdGhlIGNvbXBpbGVyIGJlbGlldmUgW3RdIGlzIGFuIGFycmF5IG5vdCBjb250YWluaW5nIGZsb2F0cyBzbyBpdCBkb2VzIG5vdCBjaGVja1xuICAgICBpZiBbdF0gaXMgdGFnZ2VkIHdpdGggW0RvdWJsZV9hcnJheV90YWddLiAgSXQgaXMgTk9UIG9rIHRvIHVzZSBbaW50IGFycmF5XSBzaW5jZSAoaWZcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBpbmxpbmVkIGFuZCB0aGUgYXJyYXkgY29udGFpbnMgaW4taGVhcCBib3hlZCB2YWx1ZXMpIHdyb25nIHJlZ2lzdGVyXG4gICAgIHR5cGluZyBtYXkgcmVzdWx0LCBsZWFkaW5nIHRvIGEgZmFpbHVyZSB0byByZWdpc3RlciBuZWNlc3NhcnkgR0Mgcm9vdHMuICopXG4gIFN0ZGxpYi5PYmoucmVwclxuICAgICgqIFtTeXMub3BhcXVlX2lkZW50aXR5XSBpcyByZXF1aXJlZCBvbiB0aGUgYXJyYXkgYmVjYXVzZSB0aGlzIGNvZGUgYnJlYWtzIHRoZSB1c3VhbFxuICAgICAgIGFzc3VtcHRpb25zIGFib3V0IGFycmF5IGtpbmRzIHRoYXQgdGhlIEZsYW1iZGEgMiBvcHRpbWlzZXIgY2FuIHNlZS4gKilcbiAgICAoKFN5cy5vcGFxdWVfaWRlbnRpdHkgKFN0ZGxpYi5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSkuKGkpXG4gICAgIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG4gIFN0ZGxpYi5PYmoucmVwclxuICAgIChBcnJheS51bnNhZmVfZ2V0XG4gICAgICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9ial9sb2NhbC5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKVxuICAgICAgIGlcbiAgICAgOiBub3RfYV9mbG9hdClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmogPVxuICAoKiBTYW1lIGNvbW1lbnQgYXMgW3Vuc2FmZV9nZXRdLiBTeXMub3BhcXVlX2lkZW50aXR5IHByZXZlbnRzIHRoZSBjb21waWxlciBmcm9tXG4gICAgIHBvdGVudGlhbGx5IHdyb25nbHkgZ3Vlc3NpbmcgdGhlIHR5cGUgb2YgdGhlIGFycmF5IGJhc2VkIG9uIHRoZSB0eXBlIG9mIGVsZW1lbnQsIHRoYXRcbiAgICAgaXMgcHJldmVudCB0aGUgaW1wbGljYXRpb246IChPYmoudGFnIG9iaiA9IE9iai5kb3VibGVfdGFnKSA9PiAoT2JqLnRhZyB0ID1cbiAgICAgT2JqLmRvdWJsZV9hcnJheV90YWcpIHdoaWNoIGZsYW1iZGEgaGFzIHRyaWVkIGluIHRoZSBwYXN0IChhdCBsZWFzdCB0aGF0J3MgYXNzdW1pbmdcbiAgICAgdGhlIGNvbXBpbGVyIHJlc3BlY3RzIFN5cy5vcGFxdWVfaWRlbnRpdHksIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIGNhc2UpLiAqKVxuICBBcnJheS51bnNhZmVfc2V0XG4gICAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKE9ial9sb2NhbC5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpKVxuICAgIGlcbiAgICAoU3RkbGliLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogc2FtZSBhcyB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgYnV0IHNhZmUgKilcbiAgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKFN0ZGxpYi5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSkuKGkpXG4gIDwtIChTdGRsaWIuT2JqLm9iaiAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvYmopIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIGludCA9XG4gICgqIFRoaXMgc2tpcHMgW2NhbWxfbW9kaWZ5XSwgd2hpY2ggaXMgT0sgaWYgYm90aCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzIGFyZSBpbnRlZ2Vycy4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChTeXMub3BhcXVlX2lkZW50aXR5IChPYmpfbG9jYWwubWFnaWMgKHQgOiB0KSA6IGludCBhcnJheSkpXG4gICAgaVxuICAgIChTeXMub3BhcXVlX2lkZW50aXR5IGludClcbjs7XG5cbigqIEZvciBbc2V0XSBhbmQgW3Vuc2FmZV9zZXRdLCBpZiBhIHBvaW50ZXIgaXMgaW52b2x2ZWQsIHdlIGZpcnN0IGRvIGEgcGh5c2ljYWwtZXF1YWxpdHlcbiAgIHRlc3QgdG8gc2VlIGlmIHRoZSBwb2ludGVyIGlzIGNoYW5naW5nLiAgSWYgbm90LCB3ZSBkb24ndCBuZWVkIHRvIGRvIHRoZSBbc2V0XSwgd2hpY2hcbiAgIHNhdmVzIGEgY2FsbCB0byBbY2FtbF9tb2RpZnldLiAgV2UgdGhpbmsgdGhpcyBwaHlzaWNhbC1lcXVhbGl0eSB0ZXN0IGlzIHdvcnRoIGl0XG4gICBiZWNhdXNlIGl0IGlzIHZlcnkgY2hlYXAgKGJvdGggdmFsdWVzIGFyZSBhbHJlYWR5IGF2YWlsYWJsZSBmcm9tIHRoZSBbaXNfaW50XSB0ZXN0KVxuICAgYW5kIGJlY2F1c2UgW2NhbWxfbW9kaWZ5XSBpcyBleHBlbnNpdmUuICopXG5cbmxldCBzZXQgdCBpIG9iaiA9XG4gICgqIFdlIHVzZSBbZ2V0XSBmaXJzdCBidXQgdGhlbiB3ZSB1c2UgW0FycmF5LnVuc2FmZV9zZXRdIHNpbmNlIHdlIGtub3cgdGhhdCBbaV0gaXNcbiAgICAgdmFsaWQuICopXG4gIGxldCBvbGRfb2JqID0gZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqICYmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXQgdCBpIG9iaiA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29iaiAmJiBTdGRsaWIuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoU3RkbGliLk9iai5vYmogb2JqIDogaW50KVxuICBlbHNlIGlmIG5vdCAocGh5c19lcXVhbCBvbGRfb2JqIG9iailcbiAgdGhlbiB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBTdGRsaWIuT2JqLmlzX2ludCBvbGRfb2JqICYmIFN0ZGxpYi5PYmouaXNfaW50IG9ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIChTdGRsaWIuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGEgPSBnZXQgdCBpIGluXG4gIGxldCBiID0gZ2V0IHQgaiBpblxuICB1bnNhZmVfc2V0IHQgaSBiO1xuICB1bnNhZmVfc2V0IHQgaiBhXG47O1xuXG5sZXQgY3JlYXRlIH5sZW4geCA9XG4gICgqIElmIHdlIGNhbiwgdXNlIFtBcnJheS5jcmVhdGVdIGRpcmVjdGx5LiBFdmVuIHRob3VnaCBbaXNfaW50XSBjaGVjayBpcyBzdWJzdW1lZCBieVxuICAgICB0aGUgdGFnIGNoZWNrLCBjaGVja2luZyBpdCBpcyBtdWNoIGZhc3Rlciwgc2luY2UgaXQgYXZvaWRzIGEgQyBmdW5jdGlvbiBjYWxsLiAgKilcbiAgaWYgU3RkbGliLk9iai5pc19pbnQgeCB8fCBTdGRsaWIuT2JqLnRhZyB4IDw+IFN0ZGxpYi5PYmouZG91YmxlX3RhZ1xuICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIHhcbiAgZWxzZSAoXG4gICAgKCogT3RoZXJ3aXNlIHVzZSBbY3JlYXRlX3plcm9dIGFuZCBzZXQgdGhlIGNvbnRlbnRzICopXG4gICAgbGV0IHQgPSBjcmVhdGVfemVybyB+bGVuIGluXG4gICAgbGV0IHggPSBTeXMub3BhcXVlX2lkZW50aXR5IHggaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSB4XG4gICAgZG9uZTtcbiAgICB0KVxuOztcblxubGV0IHNpbmdsZXRvbiBvYmogPSBjcmVhdGUgfmxlbjoxIG9ialxuXG4oKiBQcmUtY29uZGl0aW9uOiB0LihpKSBpcyBhbiBpbnRlZ2VyLiAqKVxubGV0IHVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgb2JqID1cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKFN0ZGxpYi5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZVxuICAgICgqIFt0LihpKV0gaXMgYW4gaW50ZWdlciBhbmQgW29ial0gaXMgbm90LCBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBpZiB0aGV5IGFyZVxuICAgICAgIGVxdWFsLiAqKVxuICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQgdCBpIGludCA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgU3RkbGliLk9iai5pc19pbnQgb2xkX29ialxuICB0aGVuIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIGludFxuICBlbHNlIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKFN0ZGxpYi5PYmoucmVwciBpbnQpXG47O1xuXG5sZXQgdW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCBpID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBub3QgKFN0ZGxpYi5PYmouaXNfaW50IG9sZF9vYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoU3RkbGliLk9iai5yZXByIDApXG47O1xuXG4oKiogW3Vuc2FmZV9ibGl0XSBpcyBsaWtlIFtBcnJheS5ibGl0XSwgZXhjZXB0IGl0IHVzZXMgb3VyIG93biBmb3ItbG9vcCB0byBhdm9pZFxuICAgIGNhbWxfbW9kaWZ5IHdoZW4gcG9zc2libGUuICBJdHMgcGVyZm9ybWFuY2UgaXMgc3RpbGwgbm90IGNvbXBhcmFibGUgdG8gYSBtZW1jcHkuICopXG5sZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAoKiBXaGVuIFtwaHlzX2VxdWFsIHNyYyBkc3RdLCB3ZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgW2RzdF9wb3MgPCBzcmNfcG9zXSBhbmQgaGF2ZSB0aGVcbiAgICAgZm9yIGxvb3AgZ28gaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbiBzbyB0aGF0IHdlIGRvbid0IG92ZXJ3cml0ZSBkYXRhIHRoYXQgd2Ugc3RpbGwgbmVlZFxuICAgICB0byByZWFkLiAgV2hlbiBbbm90IChwaHlzX2VxdWFsIHNyYyBkc3QpXSwgZG9pbmcgdGhpcyBpcyBoYXJtbGVzcy4gIEZyb20gYVxuICAgICBtZW1vcnktcGVyZm9ybWFuY2UgcGVyc3BlY3RpdmUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgb25lIGxvb3BzIHVwIG9yIGRvd24uXG4gICAgIENvbnN0YW50LXN0cmlkZSBhY2Nlc3MsIGZvcndhcmQgb3IgYmFja3dhcmQsIHNob3VsZCBiZSBpbmRpc3Rpbmd1aXNoYWJsZSAoYXQgbGVhc3Qgb25cbiAgICAgYW4gaW50ZWwgaTcpLiAgU28sIHdlIGRvbid0IGRvIGEgY2hlY2sgZm9yIFtwaHlzX2VxdWFsIHNyYyBkc3RdIGFuZCBhbHdheXMgbG9vcCB1cCBpblxuICAgICB0aGF0IGNhc2UuICopXG4gIGlmIGRzdF9wb3MgPCBzcmNfcG9zXG4gIHRoZW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCBkc3QgKGRzdF9wb3MgKyBpKSAodW5zYWZlX2dldCBzcmMgKHNyY19wb3MgKyBpKSlcbiAgICBkb25lXG4gIGVsc2VcbiAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuOztcblxuaW5jbHVkZSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlX3plcm9cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlX3plcm8gfmxlbjoobGVuZ3RoIHNyYykgaW5cbiAgYmxpdG8gfnNyYyB+ZHN0ICgpO1xuICBkc3Rcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogV0FSTklORzpcbiAgIFdlIHVzZSBub24tbWVtb3J5LXNhZmUgdGhpbmdzIHRocm91Z2hvdXQgdGhlIFtUcnVzdGVkXSBtb2R1bGUuXG4gICBNb3N0IG9mIGl0IGlzIG9ubHkgc2FmZSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSB0eXBlIHNpZ25hdHVyZSAoZS5nLiBleHBvc2luZ1xuICAgW3ZhbCBjb3B5IDogJ2EgdCAtPiAnYiB0XSB3b3VsZCBiZSBhIGJpZyBtaXN0YWtlKS4gKilcbm1vZHVsZSBUcnVzdGVkIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIHVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCA6IGxlbjppbnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX29ial9hcnJheSA6IGxlbjppbnQgLT4gJ2EgdFxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYSB0XG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc3dhcCA6IF8gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgdW5zYWZlX3NldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzZXRfd2l0aF9jYW1sX21vZGlmeSA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGxlbmd0aCA6ICgnYSB0W0Bsb2NhbF0pIC0+IGludFxuICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgQmxpdC5ibGl0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA6IF8gdCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IE9ial9hcnJheS50XG5cbiAgbGV0IGVtcHR5ID0gT2JqX2FycmF5LmVtcHR5XG4gIGxldCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGVfb2JqX2FycmF5IH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlIH5sZW4geCA9IE9ial9hcnJheS5jcmVhdGUgfmxlbiAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCBzaW5nbGV0b24geCA9IE9ial9hcnJheS5zaW5nbGV0b24gKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgc3dhcCB0IGkgaiA9IE9ial9hcnJheS5zd2FwIHQgaSBqXG4gIGxldCBnZXQgYXJyIGkgPSBTdGRsaWIuT2JqLm9iaiAoT2JqX2FycmF5LmdldCBhcnIgaSlcbiAgbGV0IHNldCBhcnIgaSB4ID0gT2JqX2FycmF5LnNldCBhcnIgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfZ2V0IGFyciBpID0gU3RkbGliLk9iai5vYmogKE9ial9hcnJheS51bnNhZmVfZ2V0IGFyciBpKVxuICBsZXQgdW5zYWZlX3NldCBhcnIgaSB4ID0gT2JqX2FycmF5LnVuc2FmZV9zZXQgYXJyIGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX3NldF9pbnQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0X2ludCBhcnIgaSB4XG5cbiAgbGV0IHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeFxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSAoU3RkbGliLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IE9ial9hcnJheS5sZW5ndGhcbiAgbGV0IHVuc2FmZV9ibGl0ID0gT2JqX2FycmF5LnVuc2FmZV9ibGl0XG4gIGxldCBjb3B5ID0gT2JqX2FycmF5LmNvcHlcblxuICBsZXQgdW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayB0IGkgKFN0ZGxpYi5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPVxuICAgIE9ial9hcnJheS51bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPSBPYmpfYXJyYXkuc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChTdGRsaWIuT2JqLnJlcHIgeClcbiAgbGV0IHVuc2FmZV9jbGVhcl9pZl9wb2ludGVyID0gT2JqX2FycmF5LnVuc2FmZV9jbGVhcl9pZl9wb2ludGVyXG5lbmRcblxuaW5jbHVkZSBUcnVzdGVkXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAoU3RkbGliLk9iai50YWcgKFN0ZGxpYi5PYmoucmVwciB0KSA8PiBTdGRsaWIuT2JqLmRvdWJsZV9hcnJheV90YWcpXG47O1xuXG5sZXQgaW5pdCBsIH5mID1cbiAgaWYgbCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlVuaWZvcm1fYXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjpsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID0gaW5pdCB+ZjooQXJyYXkudW5zYWZlX2dldCBhcnIpIChBcnJheS5sZW5ndGggYXJyKSBbQG5vbnRhaWxdXG5sZXQgbWFwIGEgfmYgPSBpbml0IH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSkgW0Bub250YWlsXVxubGV0IG1hcGkgYSB+ZiA9IGluaXQgfmY6KGZ1biBpIC0+IGYgaSAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpIFtAbm9udGFpbF1cblxubGV0IGl0ZXIgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGZvbGRpIGEgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgfmY6KGdldCB0KSAobGVuZ3RoIHQpXG5cbmxldCBvZl9saXN0IGwgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSB4IC0+IHNldCByZXMgaSB4KTtcbiAgcmVzXG47O1xuXG4oKiBJdCBpcyBub3Qgc2FmZSBmb3IgW3RvX2FycmF5XSB0byBiZSB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYmVjYXVzZSB3ZSBoYXZlIGNvZGUgdGhhdFxuICAgcmVsaWVzIG9uIFtmbG9hdCBhcnJheV1zIGJlaW5nIHVuYm94ZWQsIGZvciBleGFtcGxlIGluIFtiaW5fd3JpdGVfYXJyYXldLiAqKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID1cbiAgICBpZiBpIDwgMCB0aGVuIGZhbHNlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCB+ZiAoaSAtIDEpXG4gIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPSBpZiBpIDwgMCB0aGVuIHRydWUgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgJiYgbG9vcCB0IH5mIChpIC0gMSkgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQxIGluXG4gIGlmIGxlbmd0aCB0MiA8PiBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDJfZXhuXCI7XG4gIGluaXQgbGVuIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAoZ3JhbW1hciA6IGVsdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBlbHQgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKEFycmF5LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5pbmNsdWRlXG4gIFNleHBhYmxlLk9mX3NleHBhYmxlMVxuICAgIChBcnJheSlcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19hcnJheVxuICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG5cbmluY2x1ZGUgQmxpdC5NYWtlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIHQgPVxuICAgICAgaWYgbGVuID0gMFxuICAgICAgdGhlbiBlbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gKGdldCB0IDApKVxuICAgIDs7XG5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSB1bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lO1xuICAhclxuOztcblxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbigqIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIHBweF9jb21wYXJlIFtjb21wYXJlX2FycmF5XSBidXQgdXNlcyBvdXIgW3Vuc2FmZV9nZXRdIGFuZCBbbGVuZ3RoXS4gKilcbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IGEgYiA9XG4gIGlmIHBoeXNfZXF1YWwgYSBiXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuX2EgPSBsZW5ndGggYSBpblxuICAgIGxldCBsZW5fYiA9IGxlbmd0aCBiIGluXG4gICAgbGV0IHJldCA9IGNvbXBhcmUgbGVuX2EgbGVuX2IgaW5cbiAgICBpZiByZXQgPD4gMFxuICAgIHRoZW4gcmV0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGwgPSB1bnNhZmVfZ2V0IGEgaVxuICAgICAgICAgIGFuZCByID0gdW5zYWZlX2dldCBiIGkgaW5cbiAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgaWYgcmVzIDw+IDAgdGhlbiByZXMgZWxzZSBsb29wIChpICsgMSkpXG4gICAgICBpblxuICAgICAgbG9vcCAwKSlcbjs7XG5cbm1vZHVsZSBTb3J0ID0gQXJyYXkuUHJpdmF0ZS5Tb3J0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IHVuc2FmZV9nZXRcbiAgICBsZXQgc2V0ID0gdW5zYWZlX3NldFxuICBlbmQpXG5cbmxldCBzb3J0ID0gU29ydC5zb3J0XG4iLCJvcGVuISBJbXBvcnRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBjZWlsID0gU3RkbGliLmNlaWxcbmxldCBmbG9vciA9IFN0ZGxpYi5mbG9vclxubGV0IG1vZF9mbG9hdCA9IFN0ZGxpYi5tb2RfZmxvYXRcbmxldCBtb2RmID0gU3RkbGliLm1vZGZcbmxldCBmbG9hdF9vZl9zdHJpbmcgPSBTdGRsaWIuZmxvYXRfb2Zfc3RyaW5nXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgbmFuID0gU3RkbGliLm5hblxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG1heF9maW5pdGVfdmFsdWUgPSBTdGRsaWIubWF4X2Zsb2F0XG5sZXQgZXBzaWxvbl9mbG9hdCA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5sZXQgY2xhc3NpZnlfZmxvYXQgPSBTdGRsaWIuY2xhc3NpZnlfZmxvYXRcbmxldCBhYnNfZmxvYXQgPSBTdGRsaWIuYWJzX2Zsb2F0XG5sZXQgaXNfaW50ZWdlciA9IFN0ZGxpYi5GbG9hdC5pc19pbnRlZ2VyXG5sZXQgKCAqKiApID0gU3RkbGliLiggKiogKVxuXG5sZXQgKCAlLiApIGEgYiA9XG4gICgqIFJhaXNlIGluIGNhc2Ugb2YgYSBuZWdhdGl2ZSBtb2R1bHVzLCBhcyBkb2VzIEludC4oICUgKS4gKilcbiAgaWYgYiA8IDAuXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIiVmICUlICVmIGluIGZsb2F0MC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIiBhIGIgKCk7XG4gIGxldCBtID0gU3RkbGliLm1vZF9mbG9hdCBhIGIgaW5cbiAgKCogUHJvZHVjZSBhIG5vbi1uZWdhdGl2ZSByZXN1bHQgaW4gYW5hbG9neSB3aXRoIEludC4oICUgKS4gKilcbiAgaWYgbSA8IDAuIHRoZW4gbSArLiBiIGVsc2UgbVxuOztcblxuKCogVGhlIGJpdHMgb2YgSU5SSUEncyBbUGVydmFzaXZlc10gdGhhdCB3ZSBqdXN0IHdhbnQgdG8gZXhwb3NlIGluIFtGbG9hdF0uIE1vc3QgYXJlXG4gICBhbHJlYWR5IGRlcHJlY2F0ZWQgaW4gW1BlcnZhc2l2ZXNdLCBhbmQgZXZlbnR1YWxseSBhbGwgb2YgdGhlbSBzaG91bGQgYmUuICopXG5pbmNsdWRlIChcbiAgU3RkbGliIDpcbiAgc2lnXG4gICAgZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5cbiAgICBleHRlcm5hbCBsZGV4cFxuICAgICAgOiAgKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICAgIC0+IChmbG9hdFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCJcbiAgICBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgZW5kKVxuXG4oKiBXZSBuZWVkIHRoaXMgaW5kaXJlY3Rpb24gYmVjYXVzZSB0aGVzZSBhcmUgZXhwb3NlZCBhcyBcInZhbFwiIGluc3RlYWQgb2YgXCJleHRlcm5hbFwiICopXG5sZXQgZnJleHAgPSBmcmV4cFxubGV0IGxkZXhwID0gbGRleHBcbmxldCBpc19uYW4geCA9ICh4IDogZmxvYXQpIDw+IHhcblxuKCogQW4gb3JkZXItcHJlc2VydmluZyBiaWplY3Rpb24gYmV0d2VlbiBhbGwgZmxvYXRzIGV4Y2VwdCBmb3IgTmFOcywgYW5kIDk5Ljk1JSBvZlxuICAgaW50NjRzLlxuXG4gICBOb3RlIHdlIGRvbid0IGRpc3Rpbmd1aXNoIDAuIGFuZCAtMC4gYXMgc2VwYXJhdGUgdmFsdWVzIGhlcmUsIHRoZXkgYm90aCBtYXAgdG8gMEwsIHdoaWNoXG4gICBtYXBzIGJhY2sgdG8gMC5cblxuICAgVGhpcyBzaG91bGQgd29yayBib3RoIG9uIGxpdHRsZS1lbmRpYW4gYW5kIGhpZ2gtZW5kaWFuIENQVXMuICBXaWtpcGVkaWEgc2F5czogXCJvblxuICAgbW9kZXJuIHN0YW5kYXJkIGNvbXB1dGVycyAoaS5lLiwgaW1wbGVtZW50aW5nIElFRUUgNzU0KSwgb25lIG1heSBpbiBwcmFjdGljZSBzYWZlbHlcbiAgIGFzc3VtZSB0aGF0IHRoZSBlbmRpYW5uZXNzIGlzIHRoZSBzYW1lIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFzIGZvciBpbnRlZ2Vyc1wiXG4gICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbmRpYW5uZXNzI0Zsb2F0aW5nLXBvaW50X2FuZF9lbmRpYW5uZXNzKS5cbiopXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXIgdCA9XG4gIGlmIGlzX25hbiB0XG4gIHRoZW4gTm9uZVxuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuICgqIGFsc28gaW5jbHVkZXMgLTAuICopXG4gICAgU29tZSAwTFxuICBlbHNlIGlmIHQgPiAwLlxuICB0aGVuIFNvbWUgKFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQpXG4gIGVsc2UgU29tZSAoU3RkbGliLkludDY0Lm5lZyAoU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgKC0udCkpKVxuOztcblxubGV0IHRvX2ludDY0X3ByZXNlcnZlX29yZGVyX2V4biB4ID0gT3B0aW9uLnZhbHVlX2V4biAodG9faW50NjRfcHJlc2VydmVfb3JkZXIgeClcblxubGV0IG9mX2ludDY0X3ByZXNlcnZlX29yZGVyIHggPVxuICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIHggMExcbiAgdGhlbiBTdGRsaWIuSW50NjQuZmxvYXRfb2ZfYml0cyB4XG4gIGVsc2Ugfi0uKFN0ZGxpYi5JbnQ2NC5mbG9hdF9vZl9iaXRzIChTdGRsaWIuSW50NjQubmVnIHgpKVxuOztcblxubGV0IG9uZV91bHAgZGlyIHQgPVxuICBtYXRjaCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0IHdpdGhcbiAgfCBOb25lIC0+IFN0ZGxpYi5uYW5cbiAgfCBTb21lIHggLT5cbiAgICBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlclxuICAgICAgKFN0ZGxpYi5JbnQ2NC5hZGRcbiAgICAgICAgIHhcbiAgICAgICAgIChtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgIHwgYFVwIC0+IDFMXG4gICAgICAgICAgfCBgRG93biAtPiAtMUwpKVxuOztcblxuKCogW3VwcGVyX2JvdW5kX2Zvcl9pbnRdIGFuZCBbbG93ZXJfYm91bmRfZm9yX2ludF0gYXJlIGZvciBjYWxjdWxhdGluZyB0aGUgbWF4L21pbiBmbG9hdFxuICAgdGhhdCBmaXRzIGluIGEgZ2l2ZW4tc2l6ZSBpbnRlZ2VyIHdoZW4gcm91bmRlZCB0b3dhcmRzIDAgKHVzaW5nIFtpbnRfb2ZfZmxvYXRdKS5cblxuICAgbWF4X2ludC9taW5faW50IGRlcGVuZCBvbiBbbnVtX2JpdHNdLCBlLmcuICsvLSAyXjMwLCArLy0gMl42MiBpZiAzMS1iaXQsIDYzLWJpdFxuICAgKHJlc3BlY3RpdmVseSkgd2hpbGUgZmxvYXQgaXMgSUVFRSBzdGFuZGFyZCBmb3IgZG91YmxlICg1MiBzaWduaWZpY2FudCBiaXRzKS5cblxuICAgSW4gYWxsIGNhc2VzLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGF0XG4gICBbbG93ZXJfYm91bmRfZm9yX2ludCA8PSB4IDw9IHVwcGVyX2JvdW5kX2Zvcl9pbnRdXG4gICBpZmYgW2ludF9vZl9mbG9hdCB4XSBmaXRzIGluIGFuIGludCB3aXRoIFtudW1fYml0c10gYml0cy5cblxuICAgWzIgKiogKG51bV9iaXRzIC0gMSldIGlzIHRoZSBmaXJzdCBmbG9hdCBncmVhdGVyIHRoYXQgbWF4X2ludCwgd2UgdXNlIHRoZSBwcmVjZWRpbmdcbiAgIGZsb2F0IGFzIHVwcGVyIGJvdW5kLlxuXG4gICBbLSAoMiAqKiAobnVtX2JpdHMgLSAxKSldIGlzIGVxdWFsIHRvIG1pbl9pbnQuXG4gICBGb3IgbG93ZXIgYm91bmQgd2UgbG9vayBmb3IgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdIHNvIHRoYXRcbiAgIFtmXSByb3VuZHMgdG93YXJkIHplcm8gdG8gW21pbl9pbnRdXG5cbiAgIFNvIGluIHBhcnRpY3VsYXIgd2Ugd2lsbCBoYXZlOlxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgeCA8PSAtICgyICoqICgxLXgpKV1cbiAgIFt1cHBlcl9ib3VuZF9mb3JfaW50IHggIDwgICAgMiAqKiAoMS14KSBdXG4qKVxubGV0IHVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHMgPVxuICBsZXQgZXhwID0gU3RkbGliLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBvbmVfdWxwIGBEb3duICgyLiAqKiBleHApXG47O1xuXG5sZXQgaXNfeF9taW51c19vbmVfZXhhY3QgeCA9XG4gICgqIFt4ID0geCAtLiAxLl0gZG9lcyBub3Qgd29yayB3aXRoIHg4NyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGJhY2tlbmQgKHdoaWNoIGlzIHVzZWRcbiAgICAgb24gMzItYml0IG9jYW1sKSBiZWNhdXNlIG9mIDgwLWJpdCByZWdpc3RlciBwcmVjaXNpb24gb2YgaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9ucy5cblxuICAgICBBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgY29tcHV0aW5nIHRoaXM6IFt4IC0uIG9uZV91bHAgYERvd24geCA8PSAxLl0gaXMgYWxzbyBwcm9uZSB0b1xuICAgICB0aGUgc2FtZSBwcmVjaXNpb24gaXNzdWVzOiB5b3UgbmVlZCB0byBtYWtlIHN1cmUgW3hdIGlzIDY0LWJpdC5cbiAgKilcbiAgbGV0IG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIG5vdCAoU3RkbGliLkludDY0LmJpdHNfb2ZfZmxvYXQgeCA9IFN0ZGxpYi5JbnQ2NC5iaXRzX29mX2Zsb2F0ICh4IC0uIDEuKSlcbjs7XG5cbmxldCBsb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IFN0ZGxpYi5mbG9hdF9vZl9pbnQgKG51bV9iaXRzIC0gMSkgaW5cbiAgbGV0IG1pbl9pbnRfYXNfZmxvYXQgPSB+LS4oMi4gKiogZXhwKSBpblxuICBsZXQgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIG51bV9iaXRzIC0gMSA8IDUzICgqIDUzID0gI2JpdHMgaW4gdGhlIGZsb2F0J3MgbWFudGlzc2Egd2l0aCBzaWduIGluY2x1ZGVkICopXG4gIHRoZW4gKFxuICAgICgqIFRoZSBzbWFsbGVzdCBmbG9hdCB0aGF0IHJvdW5kcyB0b3dhcmRzIHplcm8gdG8gW21pbl9pbnRdIGlzXG4gICAgICAgW21pbl9pbnQgLSAxICsgZXBzaWxvbl0gKilcbiAgICBhc3NlcnQgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpO1xuICAgIG9uZV91bHAgYFVwIChtaW5faW50X2FzX2Zsb2F0IC0uIDEuKSlcbiAgZWxzZSAoXG4gICAgKCogW21pbl9pbnRfYXNfZmxvYXRdIGlzIGFscmVhZHkgdGhlIHNtYWxsZXN0IGZsb2F0IFtmXSBzYXRpc2Z5aW5nIFtmID4gbWluX2ludCAtIDFdLiAqKVxuICAgIGFzc2VydCAobm90IChpc194X21pbnVzX29uZV9leGFjdCBtaW5faW50X2FzX2Zsb2F0KSk7XG4gICAgbWluX2ludF9hc19mbG9hdClcbjs7XG5cbigqIEZsb2F0IGNsYW1waW5nIGlzIHN0cnVjdHVyZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiBjbGFtcGluZyBmb3Igb3RoZXIgdHlwZXMsIHNvXG4gICB0aGF0IHdlIGdldCB0aGUgYmVoYXZpb3Igb2YgW2NsYW1wX3VuY2hlY2tlZCBuYW4gfm1pbiB+bWF4ID0gbmFuXSAoZm9yIGFueSBbbWluXSBhbmRcbiAgIFttYXhdKSBmb3IgZnJlZS5cbiopXG5sZXQgY2xhbXBfdW5jaGVja2VkICh0IDogZmxvYXQpIH5taW4gfm1heCA9XG4gIGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiBtYXggPCB0IHRoZW4gbWF4IGVsc2UgdFxuOztcblxubGV0IGJveCA9XG4gICgqIFByZXZlbnQgcG90ZW50aWFsIGNvbnN0YW50IGZvbGRpbmcgb2YgWysuIDAuXSBpbiB0aGUgbmVhciBvY2FtbG9wdCBmdXR1cmUuICopXG4gIGxldCB4ID0gU3lzMC5vcGFxdWVfaWRlbnRpdHkgMC4gaW5cbiAgZnVuIGYgLT4gZiArLiB4XG47O1xuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcbmluY2x1ZGUgQ2hhcjBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhciBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9jaGFyIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2NoYXJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2NoYXIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9jaGFyIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgbGV0IHRfb2Zfc2V4cCA9IChjaGFyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2NoYXIgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5tYWtlIDEgdFxuXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBzIHdpdGhcbiAgICB8IDEgLT4gcy5bMF1cbiAgICB8IF8gLT4gZmFpbHdpdGhmIFwiQ2hhci5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5DaGFyXCJcbiAgZW5kKVxuXG5sZXQgcHAgZm10IGMgPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgZm10IFwiJUNcIiBjXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYWxsID0gQXJyYXkuaW5pdCAyNTYgfmY6dW5zYWZlX29mX2ludCB8PiBBcnJheS50b19saXN0XG5cbmxldCBpc19sb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc191cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19wcmludCA9IGZ1bmN0aW9uXG4gIHwgJyAnIC4uICd+JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICdcXHQnIHwgJ1xcbicgfCAnXFwwMTEnICgqIHZlcnRpY2FsIHRhYiAqKSB8ICdcXDAxMicgKCogZm9ybSBmZWVkICopIHwgJ1xccicgfCAnICcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2FscGhhID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxuKCogV3JpdGluZyB0aGVzZSBvdXQsIGluc3RlYWQgb2YgY2FsbGluZyBbaXNfYWxwaGFdIGFuZCBbaXNfZGlnaXRdLCByZWR1Y2VzXG4gICBydW50aW1lIGJ5IGFwcHJveC4gMzAlICopXG5sZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9kaWdpdF91bnNhZmUgdCA9IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuXG5sZXQgZ2V0X2RpZ2l0X2V4biB0ID1cbiAgaWYgaXNfZGlnaXQgdFxuICB0aGVuIGdldF9kaWdpdF91bnNhZmUgdFxuICBlbHNlIGZhaWx3aXRoZiBcIkNoYXIuZ2V0X2RpZ2l0X2V4biAlQzogbm90IGEgZGlnaXRcIiB0ICgpXG47O1xuXG5sZXQgZ2V0X2RpZ2l0IHQgPSBpZiBpc19kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2RpZ2l0X3Vuc2FmZSB0KSBlbHNlIE5vbmVcblxubGV0IGlzX2hleF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X2xvd2VyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF91cHBlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0X2V4biA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuICB8ICdhJyAuLiAnZicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnYScgKyAxMFxuICB8ICdBJyAuLiAnRicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnQScgKyAxMFxuICB8IHQgLT5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkNoYXIuZ2V0X2hleF9kaWdpdF9leG46IG5vdCBhIGhleGFkZWNpbWFsIGRpZ2l0XCJcbiAgICAgICAgIFsgXCJjaGFyXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdCB0ID0gaWYgaXNfaGV4X2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfaGV4X2RpZ2l0X2V4biB0KSBlbHNlIE5vbmVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSBjMSBjMiA9IGNvbXBhcmUgKGxvd2VyY2FzZSBjMSkgKGxvd2VyY2FzZSBjMilcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9jaGFyIHN0YXRlIChsb3dlcmNhc2UgdClcbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnQwLkludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxuKCogQ29uc3RydWN0IGEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDI1NiwgbWFwcGluZyBldmVyeSBpbnB1dCBjaGFyYWN0ZXIgY29kZSB0b1xuICAgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0IGNoYXJhY3Rlci5cblxuICAgQmVuY2htYXJrcyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW4gdGhlIGxhbWJkYSAoaW5jbHVkaW5nIGNvc3Qgb2ZcbiAgIHRoaXMgZnVuY3Rpb24pLCBldmVuIGlmIHRhcmdldC9yZXBsYWNlbWVudCBhcmUganVzdCAyIGNoYXJhY3RlcnMgZWFjaC5cblxuICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYW5zbGF0aW9uIG1hcCBpcyBlcXVpdmFsZW50IHRvIGp1c3QgdGhlIGlkZW50aXR5LiAqKVxubGV0IHRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBsZXQgdHJfbWFwID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgLSAxIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IChTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCBpKVxuICBkb25lO1xuICBsZXQgbGFzdF9yZXBsYWNlbWVudCA9IFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50IC0gMSkgaW5cbiAgZm9yXG4gICAgaSA9IG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSB0byBTdHJpbmcubGVuZ3RoIHRhcmdldCAtIDFcbiAgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggbGFzdF9yZXBsYWNlbWVudFxuICBkb25lO1xuICBsZXQgcmVjIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgaSA9XG4gICAgaWYgaSA9IDI1NlxuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgaSkgKENoYXIub2ZfaW50X2V4biBpKVxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAoaSArIDEpXG4gIGluXG4gICgqIHF1aWNrIGNoZWNrIG9uIHRoZSBmaXJzdCB0YXJnZXQgY2hhcmFjdGVyIHdoaWNoIHdpbGwgOTklIGJlIHRydWUgKilcbiAgbGV0IGZpcnN0X3RhcmdldCA9IHRhcmdldC5bMF0gaW5cbiAgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgZmlyc3RfdGFyZ2V0KSkgZmlyc3RfdGFyZ2V0XG4gIHx8IGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgMFxuICB0aGVuIFNvbWUgKEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRyX21hcClcbiAgZWxzZSBOb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhXG5cbmxldCBzdGFnZSA9IEZuLmlkXG5sZXQgdW5zdGFnZSA9IEZuLmlkXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEJ5dGVzID0gQnl0ZXMwXG5tb2R1bGUgSW50ID0gSW50MFxuaW5jbHVkZSBTdHJpbmcwXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX3N0cmluZyA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9zdHJpbmdcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX3N0cmluZyBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoc3RyaW5nX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBzdHJpbmdfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbnR5cGUgZWx0ID0gY2hhclxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG4oKiBUaGlzIGlzIGNvcGllZC9hZGFwdGVkIGZyb20gJ2JsaXQubWwnLlxuICAgW3N1Yl0sIFtzdWJvXSBjb3VsZCBiZSBpbXBsZW1lbnRlZCB1c2luZyBbQmxpdC5NYWtlKEJ5dGVzKV0gcGx1cyB1bnNhZmUgY2FzdHMgdG8vZnJvbVxuICAgc3RyaW5nIGJ1dCB3ZXJlIGlubGluZWQgaGVyZSB0byBhdm9pZCB1c2luZyBbQnl0ZXMudW5zYWZlX29mX3N0cmluZ10gYXMgbXVjaCBhcyBwb3NzaWJsZS5cbiopXG5sZXQgdW5zYWZlX3N1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgbGVuID0gMFxuICB0aGVuIFwiXCJcbiAgZWxzZSAoXG4gICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3Bvczpwb3MgfmRzdCB+ZHN0X3BvczowIH5sZW47XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG47O1xuXG5sZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICBpZiBwb3MgPSAwICYmIGxlbiA9IFN0cmluZy5sZW5ndGggc3JjXG4gIHRoZW4gc3JjXG4gIGVsc2UgKFxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCBzcmMpO1xuICAgIHVuc2FmZV9zdWIgc3JjIH5wb3Mgfmxlbilcbjs7XG5cbmxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICBzdWJcbiAgICBzcmNcbiAgICB+cG9zXG4gICAgfmxlbjpcbiAgICAgIChtYXRjaCBsZW4gd2l0aFxuICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICB8IE5vbmUgLT4gbGVuZ3RoIHNyYyAtIHBvcylcbjs7XG5cbmxldCByZWMgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXyBjaGFyID1cbiAgcG9zIDwgZW5kX1xuICAmJiAoQ2hhci5lcXVhbCAodW5zYWZlX2dldCB0IHBvcykgY2hhciB8fCBjb250YWluc191bnNhZmUgdCB+cG9zOihwb3MgKyAxKSB+ZW5kXyBjaGFyKVxuOztcblxubGV0IGNvbnRhaW5zID8ocG9zID0gMCkgP2xlbiB0IGNoYXIgPVxuICBsZXQgdG90YWxfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGxldCBsZW4gPSBPcHRpb24udmFsdWUgbGVuIH5kZWZhdWx0Oih0b3RhbF9sZW5ndGggLSBwb3MpIGluXG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg7XG4gIGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3MgfmVuZF86KHBvcyArIGxlbikgY2hhclxuOztcblxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IHJlYyBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA+PSBsZW5cbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zICsgMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgPVxuICBpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6MCB+bGVuOihsZW5ndGggdCkgfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgaW5kZXhfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9leG4gdCBjaGFyID0gaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZXhuXG47O1xuXG5sZXQgaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgMCB8fCBwb3MgPiBsZW5cbiAgICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGluZGV4X2Zyb21fZXhuXG47O1xuXG5sZXQgcmVjIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhciA9XG4gIGlmIHBvcyA8IDBcbiAgdGhlbiByYWlzZSBub3RfZm91bmRcbiAgZWxzZSBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHN0cmluZyBwb3MpIGNoYXJcbiAgdGhlbiBwb3NcbiAgZWxzZSByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgc3RyaW5nIH5wb3M6KHBvcyAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICByaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zOihsZW4gLSAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IHJpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZXhuIHQgY2hhciA9IHJpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZXhuXG47O1xuXG5sZXQgcmluZGV4X2Zyb21fZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhciA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgcG9zIDwgLTEgfHwgcG9zID49IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuXCJcbiAgICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3MgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCBpbmRleCB0IGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZXhuIHQgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IGluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IFN0ZGxpYi5Ob3RfZm91bmQgLT4gTm9uZVxuOztcblxubGV0IHJpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAocmluZGV4X2Zyb21fZXhuIHQgcG9zIGNoYXIpIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSA9IF8gfSA6IFNleHAudCA9XG4gICAgTGlzdFxuICAgICAgWyBMaXN0IFsgQXRvbSBcInBhdHRlcm5cIjsgc2V4cF9vZl9zdHJpbmcgcGF0dGVybiBdXG4gICAgICA7IExpc3QgWyBBdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlIF1cbiAgICAgIF1cbiAgOztcblxuICBsZXQgcGF0dGVybiB0ID0gdC5wYXR0ZXJuXG4gIGxldCBjYXNlX3NlbnNpdGl2ZSB0ID0gdC5jYXNlX3NlbnNpdGl2ZVxuXG4gICgqIEZpbmQgbWF4IG51bWJlciBvZiBtYXRjaGVkIGNoYXJhY3RlcnMgYXQgW25leHRfdGV4dF9jaGFyXSwgZ2l2ZW4gdGhlIGN1cnJlbnRcbiAgICAgW21hdGNoZWRfY2hhcnNdLiBUcnkgdG8gZXh0ZW5kIHRoZSBjdXJyZW50IG1hdGNoLCBpZiBjaGFycyBkb24ndCBtYXRjaCwgdHJ5IHRvIG1hdGNoXG4gICAgIGZld2VyIGNoYXJzLiBJZiBjaGFycyBtYXRjaCB0aGVuIGV4dGVuZCB0aGUgbWF0Y2guICopXG4gIGxldCBrbXBfaW50ZXJuYWxfbG9vcCB+bWF0Y2hlZF9jaGFycyB+bmV4dF90ZXh0X2NoYXIgfnBhdHRlcm4gfmttcF9hcnJheSB+Y2hhcl9lcXVhbCA9XG4gICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgbWF0Y2hlZF9jaGFycyBpblxuICAgIHdoaWxlXG4gICAgICAhbWF0Y2hlZF9jaGFycyA+IDBcbiAgICAgICYmIG5vdCAoY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKSlcbiAgICBkb1xuICAgICAgbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoIW1hdGNoZWRfY2hhcnMgLSAxKVxuICAgIGRvbmU7XG4gICAgaWYgY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKVxuICAgIHRoZW4gbWF0Y2hlZF9jaGFycyA6PSAhbWF0Y2hlZF9jaGFycyArIDE7XG4gICAgIW1hdGNoZWRfY2hhcnNcbiAgOztcblxuICBsZXQgZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBtYXRjaCBjYXNlX3NlbnNpdGl2ZSB3aXRoXG4gICAgfCB0cnVlIC0+IENoYXIuZXF1YWxcbiAgICB8IGZhbHNlIC0+IENoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUCBwcmUtcHJvY2Vzc2luZyBvZiB0aGUgcGF0dGVybjogYnVpbGQgdGhlIGludCBhcnJheSwgd2hpY2gsIGZvciBlYWNoIGksXG4gICAgIGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgbm9uLXRyaXZpYWwgcHJlZml4IG9mIHMgd2hpY2ggaXMgZXF1YWwgdG8gYSBzdWZmaXhcbiAgICAgZW5kaW5nIGF0IHMuW2ldICopXG4gIGxldCBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIGxldCBuID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICBsZXQga21wX2FycmF5ID0gQXJyYXkuY3JlYXRlIH5sZW46biAoLTEpIGluXG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSAwIDA7XG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyOih1bnNhZmVfZ2V0IHBhdHRlcm4gaSlcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgaSAhbWF0Y2hlZF9jaGFyc1xuICAgICAgZG9uZSk7XG4gICAgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH1cbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUDogdXNlIHRoZSBwcmUtcHJvY2Vzc2VkIHBhdHRlcm4gdG8gb3B0aW1pemUgbG9vay1iZWhpbmRzIG9uIG5vbi1tYXRjaGVzLlxuICAgICBXZSByZXR1cm4gaW50IHRvIGF2b2lkIGFsbG9jYXRpb24gaW4gW2luZGV4X2V4bl0uIC0xIG1lYW5zIG5vIG1hdGNoLiAqKVxuICBsZXQgaW5kZXhfaW50ZXJuYWwgPyhwb3MgPSAwKSB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+aW5fOnRleHQgPVxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuZ3RoIHRleHQgLSBsZW5ndGggcGF0dGVyblxuICAgIHRoZW4gLTFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgaiA9IHJlZiBwb3MgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIHdoaWxlICFqIDwgbiAmJiAhbWF0Y2hlZF9jaGFycyA8IGsgZG9cbiAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0ICFqIGluXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBqIDo9ICFqICsgMVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0gayB0aGVuICFqIC0gayBlbHNlIC0xKVxuICA7O1xuXG4gIGxldCBtYXRjaGVzIHQgc3RyID0gaW5kZXhfaW50ZXJuYWwgdCB+aW5fOnN0ciA+PSAwXG5cbiAgbGV0IGluZGV4ID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSBwXG4gIDs7XG5cbiAgbGV0IGluZGV4X2V4biA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPj0gMFxuICAgIHRoZW4gcFxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIlN1YnN0cmluZyBub3QgZm91bmRcIiBbIFwic3Vic3RyaW5nXCIsIHNleHBfb2Zfc3RyaW5nIHQucGF0dGVybiBdKVxuICA7O1xuXG4gIGxldCBpbmRleF9hbGwgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfm1heV9vdmVybGFwIH5pbl86dGV4dCA9XG4gICAgaWYgbGVuZ3RoIHBhdHRlcm4gPSAwXG4gICAgdGhlbiBMaXN0LmluaXQgKDEgKyBsZW5ndGggdGV4dCkgfmY6Rm4uaWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICBsZXQgZm91bmQgPSByZWYgW10gaW5cbiAgICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0ga1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBmb3VuZCA6PSAoaiAtIGspIDo6ICFmb3VuZDtcbiAgICAgICAgICAoKiB3ZSBqdXN0IGZvdW5kIGEgbWF0Y2ggaW4gdGhlIHByZXZpb3VzIGl0ZXJhdGlvbiAqKVxuICAgICAgICAgIG1hdGNoIG1heV9vdmVybGFwIHdpdGhcbiAgICAgICAgICB8IHRydWUgLT4gbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoayAtIDEpXG4gICAgICAgICAgfCBmYWxzZSAtPiBtYXRjaGVkX2NoYXJzIDo9IDApO1xuICAgICAgICBpZiBqIDwgblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgaiBpblxuICAgICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICAgIH5jaGFyX2VxdWFsKVxuICAgICAgZG9uZTtcbiAgICAgIExpc3QucmV2ICFmb3VuZClcbiAgOztcblxuICBsZXQgcmVwbGFjZV9maXJzdCA/cG9zIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbWF0Y2ggaW5kZXggP3BvcyB0IH5pbl86cyB3aXRoXG4gICAgfCBOb25lIC0+IHNcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyBsZW5fd2l0aCAtIGxlbl90KSBpblxuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46aTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6d2l0aF8gfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmkgfmxlbjpsZW5fd2l0aDtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczooaSArIGxlbl90KVxuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOihpICsgbGVuX3dpdGgpXG4gICAgICAgIH5sZW46KGxlbl9zIC0gaSAtIGxlbl90KTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cblxuICBsZXQgcmVwbGFjZV9hbGwgdCB+aW5fOnMgfndpdGhfID1cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBtYXRjaCBtYXRjaGVzIHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IG51bV9tYXRjaGVzID0gTGlzdC5sZW5ndGggbWF0Y2hlcyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyAoKGxlbl93aXRoIC0gbGVuX3QpICogbnVtX21hdGNoZXMpKSBpblxuICAgICAgbGV0IG5leHRfZHN0X3BvcyA9IHJlZiAwIGluXG4gICAgICBsZXQgbmV4dF9zcmNfcG9zID0gcmVmIDAgaW5cbiAgICAgIExpc3QuaXRlciBtYXRjaGVzIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgbGVuID0gaSAtICFuZXh0X3NyY19wb3MgaW5cbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOiFuZXh0X3NyY19wb3MgfmRzdCB+ZHN0X3BvczohbmV4dF9kc3RfcG9zIH5sZW47XG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgICAgfnNyYzp3aXRoX1xuICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICB+ZHN0XG4gICAgICAgICAgfmRzdF9wb3M6KCFuZXh0X2RzdF9wb3MgKyBsZW4pXG4gICAgICAgICAgfmxlbjpsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9kc3RfcG9zIDo9ICFuZXh0X2RzdF9wb3MgKyBsZW4gKyBsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9zcmNfcG9zIDo9ICFuZXh0X3NyY19wb3MgKyBsZW4gKyBsZW5fdCk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6IW5leHRfc3JjX3Bvc1xuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOiFuZXh0X2RzdF9wb3NcbiAgICAgICAgfmxlbjoobGVuX3MgLSAhbmV4dF9zcmNfcG9zKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cbiAgbGV0IHNwbGl0X29uIHQgcyA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAoLXBhdHRlcm5fbGVuIDo6IG1hdGNoZXMpXG4gICAgICAobWF0Y2hlcyBAIFsgU3RyaW5nLmxlbmd0aCBzIF0pXG4gICAgICB+ZjooZnVuIGkgaiAtPiBzdWIgcyB+cG9zOihpICsgcGF0dGVybl9sZW4pIH5sZW46KGogLSBpIC0gcGF0dGVybl9sZW4pKVxuICA7O1xuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgdHlwZSBwdWJsaWMgPSB0XG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCA9XG4gICAgICAoZnVuIGFfXzAwM18gYl9fMDA0XyAtPlxuICAgICAgICAgaWYgU3RkbGliLiggPT0gKSBhX18wMDNfIGJfXzAwNF9cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBTdGRsaWIuKCAmJiApXG4gICAgICAgICAgICAgKGVxdWFsX3N0cmluZyBhX18wMDNfLnBhdHRlcm4gYl9fMDA0Xy5wYXR0ZXJuKVxuICAgICAgICAgICAgIChTdGRsaWIuKCAmJiApXG4gICAgICAgICAgICAgICAgKGVxdWFsX2Jvb2wgYV9fMDAzXy5jYXNlX3NlbnNpdGl2ZSBiX18wMDRfLmNhc2Vfc2Vuc2l0aXZlKVxuICAgICAgICAgICAgICAgIChlcXVhbF9hcnJheSBlcXVhbF9pbnQgYV9fMDAzXy5rbXBfYXJyYXkgYl9fMDA0Xy5rbXBfYXJyYXkpKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBib29sKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgIChmdW4geyBwYXR0ZXJuID0gcGF0dGVybl9fMDA4X1xuICAgICAgICAgICA7IGNhc2Vfc2Vuc2l0aXZlID0gY2FzZV9zZW5zaXRpdmVfXzAxMF9cbiAgICAgICAgICAgOyBrbXBfYXJyYXkgPSBrbXBfYXJyYXlfXzAxMl9cbiAgICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgYm5kc19fMDA3XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPVxuICAgICAgICAgIGxldCBhcmdfXzAxM18gPSBzZXhwX29mX2FycmF5IHNleHBfb2ZfaW50IGttcF9hcnJheV9fMDEyXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJrbXBfYXJyYXlcIjsgYXJnX18wMTNfIF0gOjogYm5kc19fMDA3X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmVfXzAxMF8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgYXJnX18wMTFfIF1cbiAgICAgICAgICAgOjogYm5kc19fMDA3X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwN18gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOV8gPSBzZXhwX29mX3N0cmluZyBwYXR0ZXJuX18wMDhfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBhdHRlcm5cIjsgYXJnX18wMDlfIF0gOjogYm5kc19fMDA3X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwN19cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCByZXByZXNlbnRhdGlvbiA9IEZuLmlkXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTZWFyY2hfcGF0dGVybl9oZWxwZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gU2VhcmNoX3BhdHRlcm4wXG5lbmRcblxub3BlbiBTZWFyY2hfcGF0dGVybl9oZWxwZXJcblxubGV0IHN1YnN0cl9pbmRleF9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4ID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlID9wb3MgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4X2V4biA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5tYXlfb3ZlcmxhcCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLmluZGV4X2FsbFxuICAgIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pXG4gICAgfm1heV9vdmVybGFwXG4gICAgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2ZpcnN0ID9wb3MgKFNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSB+Y2FzZV9zZW5zaXRpdmUgcGF0dGVybikgfmluXzp0XG47O1xuXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+cGF0dGVybiA9XG4gIFNlYXJjaF9wYXR0ZXJuLnJlcGxhY2VfYWxsIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnN1YnN0cmluZyA9XG4gIE9wdGlvbi5pc19zb21lIChzdWJzdHJfaW5kZXhfZ2VuIHQgfnBhdHRlcm46c3Vic3RyaW5nIH5jYXNlX3NlbnNpdGl2ZSlcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXggPSBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX2luZGV4X2FsbCA9IHN1YnN0cl9pbmRleF9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3QgPSBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcbmxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgaXNfc3Vic3RyaW5nID0gaXNfc3Vic3RyaW5nX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0X2dlbiA9XG4gIGxldCByZWMgbG9vcCB+c3RyIH5zdHJfcG9zIH5zdWIgfnN1Yl9wb3MgfnN1Yl9sZW4gfmNoYXJfZXF1YWwgPVxuICAgIGlmIHN1Yl9wb3MgPSBzdWJfbGVuXG4gICAgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBjaGFyX2VxdWFsICh1bnNhZmVfZ2V0IHN0ciBzdHJfcG9zKSAodW5zYWZlX2dldCBzdWIgc3ViX3BvcylcbiAgICB0aGVuIGxvb3AgfnN0ciB+c3RyX3Bvczooc3RyX3BvcyArIDEpIH5zdWIgfnN1Yl9wb3M6KHN1Yl9wb3MgKyAxKSB+c3ViX2xlbiB+Y2hhcl9lcXVhbFxuICAgIGVsc2UgZmFsc2VcbiAgaW5cbiAgZnVuIHN0ciB+cG9zOnN0cl9wb3MgfnN1YnN0cmluZzpzdWIgfmNoYXJfZXF1YWwgLT5cbiAgICBsZXQgc3RyX2xlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgc3ViX2xlbiA9IGxlbmd0aCBzdWIgaW5cbiAgICBpZiBzdHJfcG9zIDwgMCB8fCBzdHJfcG9zID4gc3RyX2xlblxuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIlN0cmluZy5pc19zdWJzdHJpbmdfYXQ6IGludmFsaWQgaW5kZXggJWQgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgICBzdHJfcG9zXG4gICAgICAgIHN0cl9sZW5cbiAgICAgICAgKCk7XG4gICAgc3RyX3BvcyArIHN1Yl9sZW4gPD0gc3RyX2xlblxuICAgICYmIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zOjAgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbjs7XG5cbmxldCBpc19zdWZmaXhfZ2VuIHN0cmluZyB+c3VmZml4IH5jaGFyX2VxdWFsID1cbiAgbGV0IHN0cmluZ19sZW4gPSBsZW5ndGggc3RyaW5nIGluXG4gIGxldCBzdWZmaXhfbGVuID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBzdHJpbmdfbGVuID49IHN1ZmZpeF9sZW5cbiAgJiYgaXNfc3Vic3RyaW5nX2F0X2dlblxuICAgICAgIHN0cmluZ1xuICAgICAgIH5wb3M6KHN0cmluZ19sZW4gLSBzdWZmaXhfbGVuKVxuICAgICAgIH5zdWJzdHJpbmc6c3VmZml4XG4gICAgICAgfmNoYXJfZXF1YWxcbjs7XG5cbmxldCBpc19wcmVmaXhfZ2VuIHN0cmluZyB+cHJlZml4IH5jaGFyX2VxdWFsID1cbiAgbGV0IHN0cmluZ19sZW4gPSBsZW5ndGggc3RyaW5nIGluXG4gIGxldCBwcmVmaXhfbGVuID0gbGVuZ3RoIHByZWZpeCBpblxuICBzdHJpbmdfbGVuID49IHByZWZpeF9sZW5cbiAgJiYgaXNfc3Vic3RyaW5nX2F0X2dlbiBzdHJpbmcgfnBvczowIH5zdWJzdHJpbmc6cHJlZml4IH5jaGFyX2VxdWFsXG47O1xuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCB0X29mX3NleHAgPSAoc3RyaW5nX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgYzEgYzIgPSBDaGFyLmNvbXBhcmUgKENoYXIubG93ZXJjYXNlIGMxKSAoQ2hhci5sb3dlcmNhc2UgYzIpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfbG9vcCB+cG9zIH5zdHJpbmcxIH5sZW4xIH5zdHJpbmcyIH5sZW4yID1cbiAgICAgIGlmIHBvcyA9IGxlbjFcbiAgICAgIHRoZW4gaWYgcG9zID0gbGVuMiB0aGVuIDAgZWxzZSAtMVxuICAgICAgZWxzZSBpZiBwb3MgPSBsZW4yXG4gICAgICB0aGVuIDFcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYyA9IGNoYXJfY29tcGFyZV9jYXNlbGVzcyAodW5zYWZlX2dldCBzdHJpbmcxIHBvcykgKHVuc2FmZV9nZXQgc3RyaW5nMiBwb3MpIGluXG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8IDAgLT4gY29tcGFyZV9sb29wIH5wb3M6KHBvcyArIDEpIH5zdHJpbmcxIH5sZW4xIH5zdHJpbmcyIH5sZW4yXG4gICAgICAgIHwgXyAtPiBjKVxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBzdHJpbmcxIHN0cmluZzIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzdHJpbmcxIHN0cmluZzJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZVxuICAgICAgICBjb21wYXJlX2xvb3BcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICB+c3RyaW5nMVxuICAgICAgICAgIH5sZW4xOihTdHJpbmcubGVuZ3RoIHN0cmluZzEpXG4gICAgICAgICAgfnN0cmluZzJcbiAgICAgICAgICB+bGVuMjooU3RyaW5nLmxlbmd0aCBzdHJpbmcyKVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9XG4gICAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICAgIGxldCBzdGF0ZSA9IHJlZiAoaGFzaF9mb2xkX2ludCBzdGF0ZSBsZW4pIGluXG4gICAgICBmb3IgcG9zID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIHN0YXRlIDo9IGhhc2hfZm9sZF9jaGFyICFzdGF0ZSAoQ2hhci5sb3dlcmNhc2UgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICAgICAgZG9uZTtcbiAgICAgICFzdGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICAgIGxldCBpc19zdWZmaXggcyB+c3VmZml4ID0gaXNfc3VmZml4X2dlbiBzIH5zdWZmaXggfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICAgIGxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICAgIGxldCBzdWJzdHJfaW5kZXggPSBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfZXhuID0gc3Vic3RyX2luZGV4X2V4bl9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX3JlcGxhY2VfZmlyc3QgPSBzdWJzdHJfcmVwbGFjZV9maXJzdF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2FsbCA9IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IGlzX3N1YnN0cmluZ19hdCA9IGlzX3N1YnN0cmluZ19hdF9nZW4gfmNoYXJfZXF1YWw6Q2hhci5DYXNlbGVzcy5lcXVhbFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubGV0IG9mX3N0cmluZyA9IEZuLmlkXG5sZXQgdG9fc3RyaW5nID0gRm4uaWRcblxubGV0IGluaXQgbiB+ZiA9XG4gIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiU3RyaW5nLmluaXQgJWRcIiBuICgpO1xuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0XG47O1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID0gaWYgaSA8IDAgdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpIC0gMSkgaW5cbiAgbG9vcCBbXSAobGVuZ3RoIHMgLSAxKVxuOztcblxubGV0IHRvX2xpc3RfcmV2IHMgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBpID0gaWYgaSA9IGxlbiB0aGVuIGFjYyBlbHNlIGxvb3AgKHMuW2ldIDo6IGFjYykgKGkgKyAxKSBpblxuICBsb29wIFtdIDBcbjs7XG5cbmxldCByZXYgdCA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIGkgKHVuc2FmZV9nZXQgdCAobGVuIC0gMSAtIGkpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlc1xuOztcblxuKCoqIEVmZmljaWVudCBzdHJpbmcgc3BsaXR0aW5nICopXG5cbmxldCBsc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5sc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBsc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IGluZGV4X2V4bl9pbnRlcm5hbCBsaW5lIH5ub3RfZm91bmQgZGVsaW0gaW5cbiAgICBzdWIgbGluZSB+cG9zOjAgfmxlbjpwb3MsIHN1YiBsaW5lIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBsaW5lIC0gcG9zIC0gMSlcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBsc3BsaXQyX2V4blxuOztcblxubGV0IHJzcGxpdDJfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiU3RyaW5nLnJzcGxpdDJfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJzcGxpdDJfZXhuIGxpbmUgfm9uOmRlbGltID1cbiAgICBsZXQgcG9zID0gcmluZGV4X2V4bl9pbnRlcm5hbCBsaW5lIH5ub3RfZm91bmQgZGVsaW0gaW5cbiAgICBzdWIgbGluZSB+cG9zOjAgfmxlbjpwb3MsIHN1YiBsaW5lIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBsaW5lIC0gcG9zIC0gMSlcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICByc3BsaXQyX2V4blxuOztcblxubGV0IGxzcGxpdDIgbGluZSB+b24gPVxuICB0cnkgU29tZSAobHNwbGl0Ml9leG4gbGluZSB+b24pIHdpdGhcbiAgfCBOb3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcnNwbGl0MiBsaW5lIH5vbiA9XG4gIHRyeSBTb21lIChyc3BsaXQyX2V4biBsaW5lIH5vbikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY2hhcl9saXN0X21lbSBsIChjIDogY2hhcikgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IGhkIDo6IHRsIC0+IENoYXIuZXF1YWwgaGQgYyB8fCBjaGFyX2xpc3RfbWVtIHRsIGNcbjs7XG5cbmxldCBzcGxpdF9nZW4gc3RyIH5vbiA9XG4gIGxldCBpc19kZWxpbSA9XG4gICAgbWF0Y2ggb24gd2l0aFxuICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBsYXN0X3BvcyBwb3MgPVxuICAgIGlmIHBvcyA9IC0xXG4gICAgdGhlbiBzdWIgc3RyIH5wb3M6MCB+bGVuOmxhc3RfcG9zIDo6IGFjY1xuICAgIGVsc2UgaWYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9zMSA9IHBvcyArIDEgaW5cbiAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOnBvczEgfmxlbjoobGFzdF9wb3MgLSBwb3MxKSBpblxuICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHBvcyAocG9zIC0gMSkpXG4gICAgZWxzZSBsb29wIGFjYyBsYXN0X3BvcyAocG9zIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSBsZW4gKGxlbiAtIDEpXG47O1xuXG5sZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbmxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbmxldCBzcGxpdF9saW5lcyA9XG4gIGxldCBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sID1cbiAgICBwb3MgOj0gIXBvcyAtIGlmICFwb3MgPiAwICYmIENoYXIuZXF1YWwgdC5bIXBvcyAtIDFdICdcXHInIHRoZW4gMiBlbHNlIDE7XG4gICAgZW9sIDo9ICFwb3MgKyAxXG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgIGlmIG4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgKCogSW52YXJpYW50OiBbLTEgPD0gcG9zIDwgZW9sXS4gKilcbiAgICAgIGxldCBwb3MgPSByZWYgKG4gLSAxKSBpblxuICAgICAgbGV0IGVvbCA9IHJlZiBuIGluXG4gICAgICBsZXQgYWMgPSByZWYgW10gaW5cbiAgICAgICgqIFdlIHRyZWF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzcGVjaWFsbHksIGJlY2F1c2UgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYVxuICAgICAgICAgbmV3bGluZSwgd2UgZG9uJ3Qgd2FudCBhbiBleHRyYSBlbXB0eSBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0aGUgb3V0cHV0LiAqKVxuICAgICAgaWYgQ2hhci5lcXVhbCB0LlshcG9zXSAnXFxuJyB0aGVuIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2w7XG4gICAgICB3aGlsZSAhcG9zID49IDAgZG9cbiAgICAgICAgaWYgQ2hhci4oIDw+ICkgdC5bIXBvc10gJ1xcbidcbiAgICAgICAgdGhlbiBkZWNyIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBCZWNhdXNlIFtwb3MgPCBlb2xdLCB3ZSBrbm93IHRoYXQgW3N0YXJ0IDw9IGVvbF0uICopXG4gICAgICAgICAgbGV0IHN0YXJ0ID0gIXBvcyArIDEgaW5cbiAgICAgICAgICBhYyA6PSBzdWIgdCB+cG9zOnN0YXJ0IH5sZW46KCFlb2wgLSBzdGFydCkgOjogIWFjO1xuICAgICAgICAgIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wpXG4gICAgICBkb25lO1xuICAgICAgc3ViIHQgfnBvczowIH5sZW46IWVvbCA6OiAhYWMpXG47O1xuXG5sZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbmxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0IHMgfnBvcyB+c3Vic3RyaW5nID1cbiAgaXNfc3Vic3RyaW5nX2F0X2dlbiBzIH5wb3MgfnN1YnN0cmluZyB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG47O1xuXG5sZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgZWxzZSAoXG4gICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgfCBfIC0+IG9uX2Vycm9yKVxuOztcblxubGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3ByZWZpeFwiIHQgbiB+cG9zOm4gfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3N1ZmZpeFwiIHQgbiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbmxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG5sZXQgbGZpbmRpID8ocG9zID0gMCkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpID0gbiB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgbG9vcCBwb3MgW0Bub250YWlsXVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IGYgYykgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgaSAtPiBTb21lIHQuW2ldXG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuXG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmIHQuW2ldIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByZXMpXG4gIGluXG4gIGxvb3AgMCBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcmZpbmRpID9wb3MgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpID0gaWYgaSA8IDAgdGhlbiBOb25lIGVsc2UgaWYgZiBpIHQuW2ldIHRoZW4gU29tZSBpIGVsc2UgbG9vcCAoaSAtIDEpIGluXG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgICB8IE5vbmUgLT4gbGVuZ3RoIHQgLSAxXG4gIGluXG4gIGxvb3AgcG9zIFtAbm9udGFpbF1cbjs7XG5cbmxldCBsYXN0X25vbl9kcm9wIH5kcm9wIHQgPSByZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpIFtAbm9udGFpbF1cblxubGV0IHJzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBsYXN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgaSAtPiBpZiBpID0gbGVuZ3RoIHQgLSAxIHRoZW4gdCBlbHNlIHByZWZpeCB0IChpICsgMSlcbjs7XG5cbmxldCBmaXJzdF9ub25fZHJvcCB+ZHJvcCB0ID0gbGZpbmRpIHQgfmY6KGZ1biBfIGMgLT4gbm90IChkcm9wIGMpKSBbQG5vbnRhaWxdXG5cbmxldCBsc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gIHwgTm9uZSAtPiBcIlwiXG4gIHwgU29tZSAwIC0+IHRcbiAgfCBTb21lIG4gLT4gZHJvcF9wcmVmaXggdCBuXG47O1xuXG4oKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgYmVsb3cgc2F2ZXMgKGF0IGxlYXN0KSBhIGZhY3RvciBvZiB0d28gYWxsb2NhdGlvbiwgYnkgb25seSBhbGxvY2F0aW5nIHRoZVxuICAgZmluYWwgcmVzdWx0LiAgVGhpcyBhbHNvIHNhdmVzIHNvbWUgYW1vdW50IG9mIHRpbWUuICopXG5sZXQgc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDAgfHwgbm90IChkcm9wIHQuWzBdIHx8IGRyb3AgdC5bbGVuZ3RoIC0gMV0pXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgKG1hdGNoIGxhc3Rfbm9uX2Ryb3AgdCB+ZHJvcCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgIHwgU29tZSBsYXN0IC0+IHN1YiB0IH5wb3M6Zmlyc3QgfmxlbjoobGFzdCAtIGZpcnN0ICsgMSkpKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIGkgdC5baV0pXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dCdcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgbWFwIHQgfmYgPVxuICBsZXQgbCA9IGxlbmd0aCB0IGluXG4gIGxldCB0JyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdCcgaSAoZiB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChsZW5ndGggcykgfmY6KGZ1biBpIC0+IHMuW2ldKVxuXG5sZXQgZXhpc3RzID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA8IGxlbiAmJiAoZiBzLltpXSB8fCBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb3JfYWxsID1cbiAgbGV0IHJlYyBsb29wIHMgaSB+bGVuIH5mID0gaSA9IGxlbiB8fCAoZiBzLltpXSAmJiBsb29wIHMgKGkgKyAxKSB+bGVuIH5mKSBpblxuICBmdW4gcyB+ZiAtPiBsb29wIHMgMCB+bGVuOihsZW5ndGggcykgfmZcbjs7XG5cbmxldCBmb2xkID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBhYyB0LltpXSkgfmYgfmxlblxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgMCBpbml0IH5mIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhYyB+ZiB+bGVuID1cbiAgICBpZiBpID0gbGVuIHRoZW4gYWMgZWxzZSBsb29wIHQgKGkgKyAxKSAoZiBpIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKVxuICBkb25lXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0ID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdFxubGV0IG1heF9lbHQgdCA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHRcbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHQgfmZpbmlzaFxubGV0IGZpbmRfbWFwaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZmluZF9tYXBpIH5pdGVyaSB0IH5mXG5sZXQgZmluZGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRpIH5pdGVyaSB0IH5mXG5sZXQgY291bnRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5jb3VudGkgfmZvbGRpIHQgfmZcbmxldCBmb3JfYWxsaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZm9yX2FsbGkgfml0ZXJpIHQgfmZcbmxldCBleGlzdHNpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5leGlzdHNpIH5pdGVyaSB0IH5mXG5cbmxldCBtZW0gPVxuICBsZXQgcmVjIGxvb3AgdCBjIH5wb3M6aSB+bGVuID1cbiAgICBpIDwgbGVuICYmIChDaGFyLmVxdWFsIGMgKHVuc2FmZV9nZXQgdCBpKSB8fCBsb29wIHQgYyB+cG9zOihpICsgMSkgfmxlbilcbiAgaW5cbiAgZnVuIHQgYyAtPiBsb29wIHQgYyB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGlmIENoYXIuZXF1YWwgdGFyZ2V0IHJlcGxhY2VtZW50XG4gIHRoZW4gc1xuICBlbHNlIGlmIG1lbSBzIHRhcmdldFxuICB0aGVuIG1hcCBzIH5mOihmdW4gYyAtPiBpZiBDaGFyLmVxdWFsIGMgdGFyZ2V0IHRoZW4gcmVwbGFjZW1lbnQgZWxzZSBjKVxuICBlbHNlIHNcbjs7XG5cbmxldCB0cl9tdWx0aSB+dGFyZ2V0IH5yZXBsYWNlbWVudCA9XG4gIGlmIGlzX2VtcHR5IHRhcmdldFxuICB0aGVuIHN0YWdlIEZuLmlkXG4gIGVsc2UgaWYgaXNfZW1wdHkgcmVwbGFjZW1lbnRcbiAgdGhlbiBpbnZhbGlkX2FyZyBcInRyX211bHRpIHJlcGxhY2VtZW50IGlzIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBGbi5pZFxuICAgIHwgU29tZSB0cl9tYXAgLT5cbiAgICAgIHN0YWdlIChmdW4gcyAtPlxuICAgICAgICBpZiBleGlzdHMgcyB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAodW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGMpKSlcbiAgICAgICAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gdW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50IGMpKVxuICAgICAgICBlbHNlIHMpKVxuOztcblxuKCogZmFzdCB2ZXJzaW9uLCBpZiB3ZSBldmVyIG5lZWQgaXQ6XG4gICB7W1xuICAgICBsZXQgY29uY2F0X2FycmF5IH5zZXAgYXIgPVxuICAgICAgIGxldCBhcl9sZW4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgICAgICBpZiBhcl9sZW4gPSAwIHRoZW4gXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIGxldCBzZXBfbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgbGV0IHJlc19sZW5fcmVmID0gcmVmIChzZXBfbGVuICogKGFyX2xlbiAtIDEpKSBpblxuICAgICAgICAgZm9yIGkgPSAwIHRvIGFyX2xlbiAtIDEgZG9cbiAgICAgICAgICAgcmVzX2xlbl9yZWYgOj0gIXJlc19sZW5fcmVmICsgbGVuZ3RoIGFyLihpKVxuICAgICAgICAgZG9uZTtcbiAgICAgICAgIGxldCByZXMgPSBjcmVhdGUgIXJlc19sZW5fcmVmIGluXG4gICAgICAgICBsZXQgc3RyXzAgPSBhci4oMCkgaW5cbiAgICAgICAgIGxldCBsZW5fMCA9IGxlbmd0aCBzdHJfMCBpblxuICAgICAgICAgYmxpdCB+c3JjOnN0cl8wIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MCB+bGVuOmxlbl8wO1xuICAgICAgICAgbGV0IHBvc19yZWYgPSByZWYgbGVuXzAgaW5cbiAgICAgICAgIGZvciBpID0gMSB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICAgICAgICAgICBibGl0IH5zcmM6c2VwIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6cG9zIH5sZW46c2VwX2xlbjtcbiAgICAgICAgICAgbGV0IG5ld19wb3MgPSBwb3MgKyBzZXBfbGVuIGluXG4gICAgICAgICAgIGxldCBzdHJfaSA9IGFyLihpKSBpblxuICAgICAgICAgICBsZXQgbGVuX2kgPSBsZW5ndGggc3RyX2kgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnN0cl9pIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6bmV3X3BvcyB+bGVuOmxlbl9pO1xuICAgICAgICAgICBwb3NfcmVmIDo9IG5ld19wb3MgKyBsZW5faVxuICAgICAgICAgZG9uZTtcbiAgICAgICAgIHJlc1xuICAgXX0gKilcblxubGV0IGNvbmNhdF9hcnJheSA/c2VwIGFyID0gY29uY2F0ID9zZXAgKEFycmF5LnRvX2xpc3QgYXIpXG5sZXQgY29uY2F0X21hcCA/c2VwIHMgfmYgPSBjb25jYXRfYXJyYXkgP3NlcCAoQXJyYXkubWFwICh0b19hcnJheSBzKSB+ZilcbmxldCBjb25jYXRfbWFwaSA/c2VwIHQgfmYgPSBjb25jYXRfYXJyYXkgP3NlcCAoQXJyYXkubWFwaSAodG9fYXJyYXkgdCkgfmYpXG5cbmxldCBjb25jYXRfbGluZXMgPVxuICBsZXQgcmVjIGxpbmVfbGVuZ3RocyB+bGluZXMgfm5ld2xpbmVfbGVuIH5zdW0gPVxuICAgIG1hdGNoIGxpbmVzIHdpdGhcbiAgICB8IFtdIC0+IHN1bVxuICAgIHwgbGluZSA6OiBsaW5lcyAtPlxuICAgICAgbGV0IHN1bSA9IHN1bSArIFN0cmluZy5sZW5ndGggbGluZSArIG5ld2xpbmVfbGVuIGluXG4gICAgICBsaW5lX2xlbmd0aHMgfmxpbmVzIH5uZXdsaW5lX2xlbiB+c3VtXG4gIGluXG4gIGxldCByZWMgd3JpdGVfbGluZXMgfmJ1ZiB+bGluZXMgfmNybGYgfnBvcyA9XG4gICAgbWF0Y2ggbGluZXMgd2l0aFxuICAgIHwgW10gLT4gcG9zXG4gICAgfCBsaW5lIDo6IGxpbmVzIC0+XG4gICAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmdcbiAgICAgICAgfnNyYzpsaW5lXG4gICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgfmRzdDpidWZcbiAgICAgICAgfmRzdF9wb3M6cG9zXG4gICAgICAgIH5sZW46KFN0cmluZy5sZW5ndGggbGluZSk7XG4gICAgICBsZXQgcG9zID0gcG9zICsgU3RyaW5nLmxlbmd0aCBsaW5lIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgaWYgY3JsZlxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xccic7XG4gICAgICAgICAgcG9zICsgMSlcbiAgICAgICAgZWxzZSBwb3NcbiAgICAgIGluXG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiBwb3MgJ1xcbic7XG4gICAgICBsZXQgcG9zID0gcG9zICsgMSBpblxuICAgICAgd3JpdGVfbGluZXMgfmJ1ZiB+bGluZXMgfmNybGYgfnBvc1xuICBpblxuICBmdW4gPyhjcmxmID0gZmFsc2UpIGxpbmVzIC0+XG4gICAgbGV0IG5ld2xpbmVfbGVuID0gaWYgY3JsZiB0aGVuIDIgZWxzZSAxIGluXG4gICAgbGV0IGxlbiA9IGxpbmVfbGVuZ3RocyB+bmV3bGluZV9sZW4gfmxpbmVzIH5zdW06MCBpblxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHdyaXR0ZW4gPSB3cml0ZV9saW5lcyB+YnVmIH5saW5lcyB+Y3JsZiB+cG9zOjAgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBsZW4pO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG47O1xuXG4oKiBbZmlsdGVyIHQgZl0gaXMgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0uXG5cbiAgIExldCBbbiA9IGxlbmd0aCB0XS5cblxuICAgMS4gRmluZCB0aGUgbG93ZXN0IFtpXSBzdWNoIHRoYXQgW25vdCAoZiB0LltpXSldLlxuXG4gICAyLiBJZiB0aGVyZSBpcyBubyBzdWNoIFtpXSwgdGhlbiByZXR1cm4gW3RdLlxuXG4gICAzLiBJZiB0aGVyZSBpcyBzdWNoIGFuIFtpXSwgYWxsb2NhdGUgYSBzdHJpbmcsIFtvdXRdLCB0byBob2xkIHRoZSByZXN1bHQuICBbb3V0XSBoYXNcbiAgIGxlbmd0aCBbbiAtIDFdLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwb3NzaWJsZSBvdXRwdXQgc2l6ZSBnaXZlbiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0XG4gICBvbmUgY2hhcmFjdGVyIG5vdCBzYXRpc2Z5aW5nIFtmXS5cblxuICAgNC4gQ29weSBjaGFyYWN0ZXJzIGF0IGluZGljZXMgMCAuLi4gW2kgLSAxXSBmcm9tIFt0XSB0byBbb3V0XS5cblxuICAgNS4gV2FsayB0aHJvdWdoIGNoYXJhY3RlcnMgYXQgaW5kaWNlcyBbaSsxXSAuLi4gW24tMV0gb2YgW3RdLCBjb3B5aW5nIHRob3NlIHRoYXRcbiAgIHNhdGlzZnkgW2ZdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA2LiBJZiB3ZSBjb21wbGV0ZWx5IGZpbGxlZCBbb3V0XSwgdGhlbiByZXR1cm4gaXQuICBJZiBub3QsIHJldHVybiB0aGUgcHJlZml4IG9mIFtvdXRdXG4gICB0aGF0IHdlIGRpZCBmaWxsIGluLlxuXG4gICBUaGlzIGFsZ29yaXRobSBoYXMgdGhlIHByb3BlcnR5IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSBhIG5ldyBzdHJpbmcgaWYgdGhlcmUnc1xuICAgbm90aGluZyB0byBmaWx0ZXIsIHdoaWNoIGlzIGEgY29tbW9uIGNhc2UuICopXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBuICYmIGYgdC5bIWldIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGlmICFpID0gblxuICB0aGVuIHRcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IEJ5dGVzLmNyZWF0ZSAobiAtIDEpIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpvdXQgfmRzdF9wb3M6MCB+bGVuOiFpO1xuICAgIGxldCBvdXRfcG9zID0gcmVmICFpIGluXG4gICAgaW5jciBpO1xuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGMgPSB0LlshaV0gaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXQgIW91dF9wb3MgYztcbiAgICAgICAgaW5jciBvdXRfcG9zKTtcbiAgICAgIGluY3IgaVxuICAgIGRvbmU7XG4gICAgbGV0IG91dCA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6b3V0IGluXG4gICAgaWYgIW91dF9wb3MgPSBuIC0gMSB0aGVuIG91dCBlbHNlIHN1YiBvdXQgfnBvczowIH5sZW46IW91dF9wb3MpXG47O1xuXG4oKiByZXBlYXRlZCBjb2RlIHRvIGF2b2lkIHJlcXVpcmluZyBhbiBleHRyYSBhbGxvY2F0aW9uIGZvciBhIGNsb3N1cmUgb24gZWFjaCBjYWxsLiAqKVxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiAhaSB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiAhaSBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbmxldCBjaG9wX3ByZWZpeCBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gU29tZSAoZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3BfcHJlZml4X2lmX2V4aXN0cyBzIH5wcmVmaXggPVxuICBpZiBpc19wcmVmaXggcyB+cHJlZml4IHRoZW4gZHJvcF9wcmVmaXggcyAobGVuZ3RoIHByZWZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfZXhuIHMgfnByZWZpeCA9XG4gIG1hdGNoIGNob3BfcHJlZml4IHMgfnByZWZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9wcmVmaXhfZXhuICVTICVTXCIgcyBwcmVmaXggKClcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeCBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gU29tZSAoZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkpIGVsc2UgTm9uZVxuOztcblxubGV0IGNob3Bfc3VmZml4X2lmX2V4aXN0cyBzIH5zdWZmaXggPVxuICBpZiBpc19zdWZmaXggcyB+c3VmZml4IHRoZW4gZHJvcF9zdWZmaXggcyAobGVuZ3RoIHN1ZmZpeCkgZWxzZSBzXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfZXhuIHMgfnN1ZmZpeCA9XG4gIG1hdGNoIGNob3Bfc3VmZml4IHMgfnN1ZmZpeCB3aXRoXG4gIHwgU29tZSBzdHIgLT4gc3RyXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZ2YgXCJTdHJpbmcuY2hvcF9zdWZmaXhfZXhuICVTICVTXCIgcyBzdWZmaXggKClcbjs7XG5cbm1vZHVsZSBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4ID0gc3RydWN0XG4gICgqIFdoZW4gdGFraW5nIGEgc3RyaW5nIHByZWZpeCBvciBzdWZmaXgsIHdlIGV4dHJhY3QgZnJvbSB0aGUgc2hvcnRlc3QgaW5wdXQgYXZhaWxhYmxlXG4gICAgIGluIGNhc2Ugd2UgY2FuIGp1c3QgcmV0dXJuIG9uZSBvZiBvdXIgaW5wdXRzIHdpdGhvdXQgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcuICopXG5cbiAgbGV0IHNob3J0ZXIgYSBiID0gaWYgbGVuZ3RoIGEgPD0gbGVuZ3RoIGIgdGhlbiBhIGVsc2UgYlxuXG4gIGxldCBzaG9ydGVzdCBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT4gTGlzdC5mb2xkIHJlc3QgfmluaXQ6Zmlyc3QgfmY6c2hvcnRlclxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyBmb3IgY29tbW9uIHByZWZpeC9zdWZmaXggYWJzdHJhY3Qgb3ZlciBbZ2V0X3Bvc10sIHdoaWNoIGlzXG4gICAgIGVpdGhlciBbcG9zX2Zyb21fbGVmdF0gb3IgW3Bvc19mcm9tX3JpZ2h0XS4gKilcblxuICBsZXQgcG9zX2Zyb21fbGVmdCAoXyA6IHQpIChpIDogaW50KSA9IGlcbiAgbGV0IHBvc19mcm9tX3JpZ2h0IHQgaSA9IGxlbmd0aCB0IC0gaSAtIDFcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXIgPVxuICAgIGlmIGxlbl9zb19mYXIgPj0gbWF4X2xlblxuICAgIHRoZW4gbWF4X2xlblxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbFxuICAgICAgICAgICAgICAodW5zYWZlX2dldCBhIChnZXRfcG9zIGEgbGVuX3NvX2ZhcikpXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGIgKGdldF9wb3MgYiBsZW5fc29fZmFyKSlcbiAgICB0aGVuIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBhIGIgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6KGxlbl9zb19mYXIgKyAxKVxuICAgIGVsc2UgbGVuX3NvX2ZhclxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyA9XG4gICAgbGV0IG1heF9sZW4gPSBtaW4gKGxlbmd0aCBhKSAobGVuZ3RoIGIpIGluXG4gICAgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjowXG4gIDs7XG5cbiAgbGV0IHJlYyBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCBsaXN0IH5nZXRfcG9zIH5tYXhfbGVuID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IG1heF9sZW5cbiAgICB8IHNlY29uZCA6OiByZXN0IC0+XG4gICAgICBsZXQgbWF4X2xlbiA9XG4gICAgICAgICgqIFdlIGNhbGwgW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcF0gcmF0aGVyIHRoYW4gW2NvbW1vbl9nZW5lcmljMl9sZW5ndGhdIHNvXG4gICAgICAgICAgIHRoYXQgW21heF9sZW5dIGxpbWl0cyBvdXIgdHJhdmVyc2FsIG9mIFtmaXJzdF0gYW5kIFtzZWNvbmRdLiAqKVxuICAgICAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgZmlyc3Qgc2Vjb25kIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgICAgIGluXG4gICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBzZWNvbmQgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gIGxldCBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3BvcyA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiAwXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBQcmVjb21wdXRpbmcgW21heF9sZW5dIGJhc2VkIG9uIFtzaG9ydGVzdCBsaXN0XSBzYXZlcyB1cyB3b3JrIGluIGxvbmdlciBzdHJpbmdzLFxuICAgICAgICAgYXQgdGhlIGNvc3Qgb2YgYW4gZXh0cmEgcGFzcyBvdmVyIHRoZSBzcGluZSBvZiBbbGlzdF0uXG5cbiAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3UncmUgbG9va2luZyBmb3IgdGhlIGxvbmdlc3QgcHJlZml4IG9mIHRoZSBzdHJpbmdzOlxuXG4gICAgICAgICB7dlxuICAgICAgICAgICAgbGV0IGxvbmdfYSA9IExpc3QuaW5pdCAxMDAwIH5mOihGbi5jb25zdCAnYScpXG4gICAgICAgICAgICBbIGxvbmdfYTsgbG9uZ19hOyAnYWEnIF1cbiAgICAgICAgIHZ9XG5cbiAgICAgICAgIHRoZSBhcHByb2FjaCBiZWxvdyB3aWxsIGp1c3QgY2hlY2sgdGhlIGZpcnN0IHR3byBjaGFyYWN0ZXJzIG9mIGFsbCB0aGUgc3RyaW5ncy5cbiAgICAgICopXG4gICAgICBsZXQgbWF4X2xlbiA9IGxlbmd0aCAoc2hvcnRlc3QgbGlzdCkgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgOztcblxuICAoKiBPdXIgZ2VuZXJpYyBhY2Nlc3NvcnMgdGhhdCBwcm9kdWNlIGEgc3RyaW5nIGFic3RyYWN0IG92ZXIgW3Rha2VdLCB3aGljaCBpcyBlaXRoZXJcbiAgICAgW3ByZWZpeF0gb3IgW3N1ZmZpeF0uICopXG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMiBhIGIgfmdldF9wb3MgfnRha2UgPVxuICAgIGxldCBsZW4gPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3BvcyBpblxuICAgICgqIFVzZSB0aGUgc2hvcnRlciBvZiB0aGUgdHdvIHN0cmluZ3MsIHNvIHRoYXQgaWYgdGhlIHNob3J0ZXIgb25lIGlzIHRoZSBzaGFyZWRcbiAgICAgICBwcmVmaXgsIFt0YWtlXSB3b24ndCBhbGxvY2F0ZSBhbm90aGVyIHN0cmluZy4gKilcbiAgICB0YWtlIChzaG9ydGVyIGEgYikgbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljIGxpc3QgfmdldF9wb3MgfnRha2UgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPlxuICAgICAgKCogQXMgd2l0aCBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoXSwgd2UgYmFzZSBbbWF4X2xlbl0gb24gW3Nob3J0ZXN0IGxpc3RdLiBXZSBhbHNvXG4gICAgICAgICB1c2UgdGhpcyByZXN1bHQgZm9yIFt0YWtlXSwgYmVsb3csIHRvIHBvdGVudGlhbGx5IGF2b2lkIGFsbG9jYXRpbmcgYSBzdHJpbmcuICopXG4gICAgICBsZXQgcyA9IHNob3J0ZXN0IGxpc3QgaW5cbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIHMgaW5cbiAgICAgIGlmIG1heF9sZW4gPSAwXG4gICAgICB0aGVuIFwiXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAoKiBXZSBjYWxsIGRpcmVjdGx5IGludG8gW2NvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhblxuICAgICAgICAgICAgIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdIHRvIGF2b2lkIHJlY29tcHV0aW5nIFtzaG9ydGVzdCBsaXN0XS4gKilcbiAgICAgICAgICBjb21tb25fZ2VuZXJpY19sZW5ndGhfbG9vcCBmaXJzdCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gICAgICAgIGluXG4gICAgICAgIHRha2UgcyBsZW4pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBGb3JfY29tbW9uX3ByZWZpeF9hbmRfc3VmZml4XG5cbiAgbGV0IGNvbW1vbl9wcmVmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXggbGlzdCA9IGNvbW1vbl9nZW5lcmljIGxpc3QgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnByZWZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9sZWZ0XG4gIGxldCBjb21tb25fc3VmZml4MiBhIGIgPSBjb21tb25fZ2VuZXJpYzIgYSBiIH50YWtlOnN1ZmZpeCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXhfbGVuZ3RoIGxpc3QgPSBjb21tb25fZ2VuZXJpY19sZW5ndGggbGlzdCB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuICBsZXQgY29tbW9uX3ByZWZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyX2xlbmd0aCBhIGIgPSBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIGEgYiB+Z2V0X3Bvczpwb3NfZnJvbV9yaWdodFxuZW5kXG5cbigqIFRoZXJlIHVzZWQgdG8gYmUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gdGhhdCB3YXMgZmFzdGVyIGZvciB2ZXJ5IHNob3J0IHN0cmluZ3NcbiAgIChwZWFraW5nIGF0IDQwJSBmYXN0ZXIgZm9yIDQtNiBjaGFyIGxvbmcgc3RyaW5ncykuXG4gICBUaGlzIG5ldyBmdW5jdGlvbiBpcyBhcm91bmQgMjAlIGZhc3RlciB0aGFuIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24sIGJ1dCBzbG93ZXJcbiAgIHRoYW4gdGhlIHByZXZpb3VzIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciwgdGhlIG5ldyBPQ2FtbCBmdW5jdGlvbiBpcyB3ZWxsXG4gICBiZWhhdmVkLCBhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBsZXNzIGxpa2VseSB0byBkaXZlcmdlIGZyb20gdGhlIGRlZmF1bHQgT0NhbWxcbiAgIGltcGxlbWVudGF0aW9uIGRvZXMsIHdoaWNoIGlzIGEgZGVzaXJhYmxlIHByb3BlcnR5LiAoVGhlIG9ubHkgd2F5IHRvIGF2b2lkIHRoZVxuICAgZGl2ZXJnZW5jZSBpcyB0byBleHBvc2UgdGhlIG1hY3JvIHJlZGVmaW5lZCBpbiBoYXNoX3N0dWJzLmMgaW4gdGhlIGhhc2guaCBoZWFkZXIgb2ZcbiAgIHRoZSBPQ2FtbCBjb21waWxlci4pICopXG5tb2R1bGUgSGFzaCA9IHN0cnVjdFxuICBleHRlcm5hbCBoYXNoIDogc3RyaW5nIC0+IGludCA9IFwiQmFzZV9oYXNoX3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5lbmRcblxuKCogW2luY2x1ZGUgSGFzaF0gdG8gbWFrZSB0aGUgW2V4dGVybmFsXSB2ZXJzaW9uIG92ZXJyaWRlIHRoZSBbaGFzaF0gZnJvbVxuICAgW0hhc2hhYmxlLk1ha2VfYmluYWJsZV0sIHNvIHRoYXQgd2UgZ2V0IGEgbGl0dGxlIGJpdCBvZiBhIHNwZWVkdXAgYnkgZXhwb3NpbmcgaXQgYXNcbiAgIGV4dGVybmFsIGluIHRoZSBtbGkuICopXG5sZXQgXyA9IGhhc2hcblxuaW5jbHVkZSBIYXNoXG5cbigqIGZvciBpbnRlcmFjdGl2ZSB0b3AtbGV2ZWxzIC0tIG1vZHVsZXMgZGVyaXZpbmcgZnJvbSBTdHJpbmcgc2hvdWxkIGhhdmUgU3RyaW5nJ3MgcHJldHR5XG4gICBwcmludGVyLiAqKVxubGV0IHBwIHBwZiBzdHJpbmcgPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiJVNcIiBzdHJpbmdcbmxldCBvZl9jaGFyIGMgPSBtYWtlIDEgY1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IEJ5dGVzLnNldCB0IGkgYyk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IG9mX2xpc3QgPSBvZl9jaGFyX2xpc3RcbmxldCBvZl9hcnJheSBhID0gaW5pdCAoQXJyYXkubGVuZ3RoIGEpIH5mOihBcnJheS5nZXQgYSlcbmxldCBhcHBlbmQgPSAoIF4gKVxuXG5sZXQgcGFkX3JpZ2h0ID8oY2hhciA9ICcgJykgcyB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggcyBpblxuICBpZiBzcmNfbGVuID49IGxlblxuICB0aGVuIHNcbiAgZWxzZSAoXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnMgfmRzdDpyZXMgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46c3JjX2xlbjtcbiAgICBCeXRlcy5maWxsIH5wb3M6c3JjX2xlbiB+bGVuOihsZW4gLSBzcmNfbGVuKSByZXMgY2hhcjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbmxldCBwYWRfbGVmdCA/KGNoYXIgPSAnICcpIHMgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHMgaW5cbiAgaWYgc3JjX2xlbiA+PSBsZW5cbiAgdGhlbiBzXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5kc3Q6cmVzIH5zcmNfcG9zOjAgfmRzdF9wb3M6KGxlbiAtIHNyY19sZW4pIH5sZW46c3JjX2xlbjtcbiAgICBCeXRlcy5maWxsIH5wb3M6MCB+bGVuOihsZW4gLSBzcmNfbGVuKSByZXMgY2hhcjtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnJlcylcbjs7XG5cbigqIENhbGxlZCB1cG9uIGZpcnN0IGRpZmZlcmVuY2UgZ2VuZXJhdGVkIGJ5IGZpbHRlcmluZy4gQWxsb2NhdGVzIFtidWZmZXJfbGVuXSBieXRlc1xuICAgZm9yIG5ldyByZXN1bHQsIGFuZCBjb3BpZXMgW3ByZWZpeF9sZW5dIHVuY2hhbmdlZCBjaGFyYWN0ZXJzIGZyb20gW3NyY10uXG4gICBBbHdheXMgcmV0dXJucyBhIGxvY2FsIGJ1ZmZlci4gKilcbmxldCBsb2NhbF9jb3B5X3ByZWZpeCAoc3JjIFtAbG9jYWxdKSB+cHJlZml4X2xlbiB+YnVmZmVyX2xlbiA9XG4gIGxldCBkc3QgPSBCeXRlcy5jcmVhdGVfbG9jYWwgYnVmZmVyX2xlbiBpblxuICBCeXRlcy5QcmltaXRpdmVzLnVuc2FmZV9ibGl0X3N0cmluZyB+c3JjIH5kc3QgfnNyY19wb3M6MCB+ZHN0X3BvczowIH5sZW46cHJlZml4X2xlbjtcbiAgIGRzdFxuOztcblxuKCogQ29waWVzIGEgcGVyaGFwcy1sb2NhbCBidWZmZXIgaW50byBhIGRlZmluaXRlbHktZ2xvYmFsIHN0cmluZy4gKilcbmxldCBsb2NhbF9jb3B5X3RvX3N0cmluZyAoYnVmIFtAbG9jYWxdKSB+cG9zID1cbiAgbGV0IHN0ciA9IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmIGluXG4gIHVuc2FmZV9zdWIgc3RyIH5wb3M6MCB+bGVuOnBvcyBbQG5vbnRhaWxdXG47O1xuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIHN0cnVjdFxuICAgICgqIGZpbHRlcl9tYXAgaGVscGVycyAqKVxuXG4gICAgKCogRmlsdGVycyBmcm9tIHN0cmluZyBbc3JjXSBpbnRvIGFuIGFsbG9jYXRlZCBidWZmZXIgW2RzdF07XG4gICAgICAgY29waWVzIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHRvIGEgaGVhcC1hbGxvY2F0ZWQgcmVzdWx0IHN0cmluZy5cblxuICAgICAgIFByZS1jb25kaXRpb25zOlxuICAgICAgIFtzcmNfbGVuID0gbGVuZ3RoIHNyY11cbiAgICAgICBbc3JjICE9IGRzdF1cbiAgICAgICBbMCA8PSBzcmNfcG9zIDwgc3JjX2xlbl1cbiAgICAgICBbMCA8PSBkc3RfcG9zIDwgbGVuZ3RoIGRzdF1cbiAgICAqKVxuICAgIGxldCBmaWx0ZXJfbWFwaV9pbnRvIHNyYyAoZHN0IFtAbG9jYWxdKSB+ZiB+c3JjX3BvcyB+ZHN0X3BvcyB+c3JjX2xlbiA9XG4gICAgICBsZXQgZHN0X3BvcyA9ICAocmVmIGRzdF9wb3MpIGluXG4gICAgICBmb3Igc3JjX3BvcyA9IHNyY19wb3MgdG8gc3JjX2xlbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZiBzcmNfcG9zICh1bnNhZmVfZ2V0IHNyYyBzcmNfcG9zKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgYyAtPlxuICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgZHN0ICFkc3RfcG9zIGM7XG4gICAgICAgICAgaW5jciBkc3RfcG9zXG4gICAgICBkb25lO1xuICAgICAgbG9jYWxfY29weV90b19zdHJpbmcgZHN0IH5wb3M6IWRzdF9wb3NcbiAgICA7O1xuXG4gICAgKCogRmlsdGVycyBbdF0uIElmIHRoZSByZXN1bHQgdHVybnMgb3V0IHRvIGJlIGlkZW50aWNhbCB0byB0aGUgaW5wdXQsIHJldHVybnMgW3RdXG4gICAgICAgZGlyZWN0bHkgd2l0aG91dCBuZWVkaW5nIHRvIGFsbG9jYXRlIGEgYnVmZmVyIGFuZCB0cmF2ZXJzZSB0aGUgc3RyaW5nIHR3aWNlLlxuXG4gICAgICAgUHJlLWNvbmRpdGlvbjogW2xlbiA9PSBsZW5ndGggdF1cbiAgICAgICBQcmUtY29uZGl0aW9uOiBbMCA8PSBwb3MgPD0gbGVuXSAqKVxuICAgIGxldCByZWMgZmlsdGVyX21hcGlfbWF5YmVfaWQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHQgcG9zIGluXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2MgcG9zIGluXG4gICAgICAgIG1hdGNoIGYgcG9zIGMxIHdpdGhcbiAgICAgICAgfCBTb21lIGMyIHdoZW4gQ2hhci5lcXVhbCBjMSBjMiAtPlxuICAgICAgICAgICgqIGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQsIGNvbnRpbnVlICopXG4gICAgICAgICAgZmlsdGVyX21hcGlfbWF5YmVfaWQgdCB+ZiB+cG9zOm5leHQgfmxlblxuICAgICAgICB8IG9wdGlvbiAtPlxuICAgICAgICAgICgqIElmIGEgY2hhcmFjdGVyIGhhcyBiZWVuIGNoYW5nZWQgb3IgZHJvcHBlZCwgYmVnaW4gYW4gb3V0cHV0IGJ1ZmZlciB1cCB0b1xuICAgICAgICAgICAgIFtwb3NdLCBhbmQgd3JpdGUgdGhlIG5ldyBjaGFyYWN0ZXIgaW50byBpdC4gKilcbiAgICAgICAgICBsZXQgY29weSA9IGxvY2FsX2NvcHlfcHJlZml4IHQgfnByZWZpeF9sZW46cG9zIH5idWZmZXJfbGVuOmxlbiBpblxuICAgICAgICAgIGxldCBkc3RfcG9zID1cbiAgICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcG9zXG4gICAgICAgICAgICB8IFNvbWUgYyAtPlxuICAgICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGNvcHkgcG9zIGM7XG4gICAgICAgICAgICAgIG5leHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZpbHRlcl9tYXBpX2ludG8gdCBjb3B5IH5mIH5zcmNfcG9zOm5leHQgfmRzdF9wb3MgfnNyY19sZW46bGVuIFtAbm9udGFpbF0pXG4gICAgOztcbiAgZW5kXG5cbiAgKCogZmlsdGVyX21hcCBmdW5jdGlvbnMgKilcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IGZpbHRlcl9tYXBpX21heWJlX2lkIHQgfmYgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIFtAbm9udGFpbF1cbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIHN0cnVjdFxuICAgICgqIHBhcnRpdGlvbiBoZWxwZXJzICopXG5cbiAgICBsZXQgcGFydGl0aW9uX21hcF9pbnRvIHNyYyB+ZnN0cyB+c25kcyB+ZiB+bGVuIH5zcmNfcG9zIH5mc3RfcG9zIH5zbmRfcG9zID1cbiAgICAgIGxldCBmc3RfcG9zID0gIChyZWYgZnN0X3BvcykgaW5cbiAgICAgIGxldCBzbmRfcG9zID0gIChyZWYgc25kX3BvcykgaW5cbiAgICAgIGZvciBzcmNfcG9zID0gc3JjX3BvcyB0byBsZW4gLSAxIGRvXG4gICAgICAgIG1hdGNoICAoZiAodW5zYWZlX2dldCBzcmMgc3JjX3BvcykgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBmc3RzICFmc3RfcG9zIGM7XG4gICAgICAgICAgaW5jciBmc3RfcG9zXG4gICAgICAgIHwgU2Vjb25kIGMgLT5cbiAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHNuZHMgIXNuZF9wb3MgYztcbiAgICAgICAgICBpbmNyIHNuZF9wb3NcbiAgICAgIGRvbmU7XG4gICAgICBsb2NhbF9jb3B5X3RvX3N0cmluZyBmc3RzIH5wb3M6IWZzdF9wb3MsIGxvY2FsX2NvcHlfdG9fc3RyaW5nIHNuZHMgfnBvczohc25kX3Bvc1xuICAgIDs7XG5cbiAgICBsZXQgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlIHNyYyB+ZiB+bGVuIH5wb3M6c3JjX3BvcyB+ZnN0X3BvcyB+c25kX3BvcyBlaXRoZXIgPVxuICAgICAgbGV0IGZzdHMgPSBsb2NhbF9jb3B5X3ByZWZpeCBzcmMgfnByZWZpeF9sZW46ZnN0X3BvcyB+YnVmZmVyX2xlbjpsZW4gaW5cbiAgICAgIGxldCBzbmRzID0gbG9jYWxfY29weV9wcmVmaXggc3JjIH5wcmVmaXhfbGVuOnNuZF9wb3MgfmJ1ZmZlcl9sZW46bGVuIGluXG4gICAgICBsZXQgZnN0X3Bvcywgc25kX3BvcyA9XG4gICAgICAgIG1hdGNoIChlaXRoZXIgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBmc3RzIGZzdF9wb3MgYztcbiAgICAgICAgICAgKGZzdF9wb3MgKyAxLCBzbmRfcG9zKVxuICAgICAgICB8IFNlY29uZCBjIC0+XG4gICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBzbmRzIHNuZF9wb3MgYztcbiAgICAgICAgICAgKGZzdF9wb3MsIHNuZF9wb3MgKyAxKVxuICAgICAgaW5cbiAgICAgIHBhcnRpdGlvbl9tYXBfaW50b1xuICAgICAgICBzcmNcbiAgICAgICAgfmZzdHNcbiAgICAgICAgfnNuZHNcbiAgICAgICAgfmZcbiAgICAgICAgfmxlblxuICAgICAgICB+c3JjX3Bvczooc3JjX3BvcyArIDEpXG4gICAgICAgIH5mc3RfcG9zXG4gICAgICAgIH5zbmRfcG9zIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb25fbWFwX2ZpcnN0X21heWJlX2lkIHNyYyB+ZiB+cG9zIH5sZW4gPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIHNyYywgXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgc3JjIHBvcyBpblxuICAgICAgICBtYXRjaCAgKGYgYzEgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBGaXJzdCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX2ZpcnN0X21heWJlX2lkIHNyYyB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpXG4gICAgICAgIHwgZWl0aGVyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9kaWZmZXJlbmNlXG4gICAgICAgICAgICBzcmNcbiAgICAgICAgICAgIH5mXG4gICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICB+cG9zXG4gICAgICAgICAgICB+ZnN0X3Bvczpwb3NcbiAgICAgICAgICAgIH5zbmRfcG9zOjBcbiAgICAgICAgICAgIGVpdGhlciBbQG5vbnRhaWxdKVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIHBhcnRpdGlvbl9tYXBfc2Vjb25kX21heWJlX2lkIHNyYyB+ZiB+cG9zIH5sZW4gPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIFwiXCIsIHNyY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjMSA9IHVuc2FmZV9nZXQgc3JjIHBvcyBpblxuICAgICAgICBtYXRjaCAgKGYgYzEgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgfCBTZWNvbmQgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+XG4gICAgICAgICAgcGFydGl0aW9uX21hcF9zZWNvbmRfbWF5YmVfaWQgc3JjIH5mIH5sZW4gfnBvczoocG9zICsgMSlcbiAgICAgICAgfCBlaXRoZXIgLT5cbiAgICAgICAgICBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2VcbiAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgIH5mc3RfcG9zOjBcbiAgICAgICAgICAgIH5zbmRfcG9zOnBvc1xuICAgICAgICAgICAgZWl0aGVyIFtAbm9udGFpbF0pXG4gICAgOztcbiAgZW5kXG5cbiAgKCogcGFydGl0aW9uIGZ1bmN0aW9ucyAqKVxuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHNyYyB+ZiA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBcIlwiLCBcIlwiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYzEgPSB1bnNhZmVfZ2V0IHNyYyAwIGluXG4gICAgICBtYXRjaCAgKGYgYzEgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgIHwgRmlyc3QgYzIgd2hlbiBDaGFyLmVxdWFsIGMxIGMyIC0+IHBhcnRpdGlvbl9tYXBfZmlyc3RfbWF5YmVfaWQgc3JjIH5mIH5sZW4gfnBvczoxXG4gICAgICB8IFNlY29uZCBjMiB3aGVuIENoYXIuZXF1YWwgYzEgYzIgLT5cbiAgICAgICAgcGFydGl0aW9uX21hcF9zZWNvbmRfbWF5YmVfaWQgc3JjIH5mIH5sZW4gfnBvczoxXG4gICAgICB8IGVpdGhlciAtPlxuICAgICAgICBwYXJ0aXRpb25fbWFwX2RpZmZlcmVuY2VcbiAgICAgICAgICBzcmNcbiAgICAgICAgICB+ZlxuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICB+ZnN0X3BvczowXG4gICAgICAgICAgfnNuZF9wb3M6MFxuICAgICAgICAgIGVpdGhlciBbQG5vbnRhaWxdKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gICAgcGFydGl0aW9uX21hcCB0IH5mOihmdW4gYyAtPiBpZiBmIGMgdGhlbiAgKEZpcnN0IGMpIGVsc2UgIChTZWNvbmQgYykpIFtAbm9udGFpbFxuICAgIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRXNjYXBpbmcgPSBzdHJ1Y3RcbiAgKCogSWYgdGhpcyBpcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdG8gdXBkYXRlIFtlc2NhcGVdLCB3aGljaCBhdHRlbXB0cyB0byBlbnN1cmUgYWxsIHRoZVxuICAgICBpbnZhcmlhbnRzIGNoZWNrZWQgaGVyZS4gICopXG4gIGxldCBidWlsZF9hbmRfdmFsaWRhdGVfZXNjYXBld29ydGh5X21hcCBlc2NhcGV3b3J0aHlfbWFwIGVzY2FwZV9jaGFyIGZ1bmMgPVxuICAgIGxldCBlc2NhcGV3b3J0aHlfbWFwID1cbiAgICAgIGlmIExpc3QuQXNzb2MubWVtIGVzY2FwZXdvcnRoeV9tYXAgfmVxdWFsOkNoYXIuZXF1YWwgZXNjYXBlX2NoYXJcbiAgICAgIHRoZW4gZXNjYXBld29ydGh5X21hcFxuICAgICAgZWxzZSAoZXNjYXBlX2NoYXIsIGVzY2FwZV9jaGFyKSA6OiBlc2NhcGV3b3J0aHlfbWFwXG4gICAgaW5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46MjU2ICgtMSkgaW5cbiAgICBsZXQgdmFscyA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiBmYWxzZSBpblxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IE9rIGFyclxuICAgICAgfCAoY19mcm9tLCBjX3RvKSA6OiBsIC0+XG4gICAgICAgIGxldCBrLCB2ID1cbiAgICAgICAgICBtYXRjaCBmdW5jIHdpdGhcbiAgICAgICAgICB8IGBFc2NhcGUgLT4gQ2hhci50b19pbnQgY19mcm9tLCBjX3RvXG4gICAgICAgICAgfCBgVW5lc2NhcGUgLT4gQ2hhci50b19pbnQgY190bywgY19mcm9tXG4gICAgICAgIGluXG4gICAgICAgIGlmIGFyci4oaykgPD4gLTEgfHwgdmFscy4oQ2hhci50b19pbnQgdilcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAgIFwiZXNjYXBld29ydGh5X21hcCBub3Qgb25lLXRvLW9uZVwiXG4gICAgICAgICAgICAgICBbIFwiY19mcm9tXCIsIHNleHBfb2ZfY2hhciBjX2Zyb21cbiAgICAgICAgICAgICAgIDsgXCJjX3RvXCIsIHNleHBfb2ZfY2hhciBjX3RvXG4gICAgICAgICAgICAgICA7ICggXCJlc2NhcGV3b3J0aHlfbWFwXCJcbiAgICAgICAgICAgICAgICAgLCBzZXhwX29mX2xpc3QgKHNleHBfb2ZfcGFpciBzZXhwX29mX2NoYXIgc2V4cF9vZl9jaGFyKSBlc2NhcGV3b3J0aHlfbWFwXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIF0pXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGFyci4oaykgPC0gQ2hhci50b19pbnQgdjtcbiAgICAgICAgICB2YWxzLihDaGFyLnRvX2ludCB2KSA8LSB0cnVlO1xuICAgICAgICAgIGxvb3AgbClcbiAgICBpblxuICAgIGxvb3AgZXNjYXBld29ydGh5X21hcFxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBgRXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIGNhbGN1bGF0ZSBhIGxpc3Qgb2YgKGluZGV4IG9mIGNoYXIgdG8gZXNjYXBlICogZXNjYXBlZCBjaGFyKSBmaXJzdCwgdGhlIG9yZGVyXG4gICAgICAgICAgICAgIGlzIGZyb20gdGFpbCB0byBoZWFkICopXG4gICAgICAgICAgIGxldCB0b19lc2NhcGVfbGVuID0gcmVmIDAgaW5cbiAgICAgICAgICAgbGV0IHRvX2VzY2FwZSA9XG4gICAgICAgICAgICAgZm9sZGkgc3JjIH5pbml0OltdIH5mOihmdW4gaSBhY2MgYyAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBjKSB3aXRoXG4gICAgICAgICAgICAgICB8IC0xIC0+IGFjY1xuICAgICAgICAgICAgICAgfCBuIC0+XG4gICAgICAgICAgICAgICAgICgqIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgKilcbiAgICAgICAgICAgICAgICAgaW5jciB0b19lc2NhcGVfbGVuO1xuICAgICAgICAgICAgICAgICAoaSwgQ2hhci51bnNhZmVfb2ZfaW50IG4pIDo6IGFjYylcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggdG9fZXNjYXBlIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBzcmNcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgKCogW3RvX2VzY2FwZV0gZGl2aWRlIFtzcmNdIHRvIFtMaXN0Lmxlbmd0aCB0b19lc2NhcGUgKyAxXSBwaWVjZXMgc2VwYXJhdGVkIGJ5XG4gICAgICAgICAgICAgICAgdGhlIGNoYXJzIHRvIGVzY2FwZS5cblxuICAgICAgICAgICAgICAgIExldHMgdGFrZVxuICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICBlc2NhcGVfZ2VuX2V4blxuICAgICAgICAgICAgICAgICAgICB+ZXNjYXBld29ydGh5X21hcDpbKCdhJywgJ0EnKTsgKCdiJywgJ0InKTsgKCdjJywgJ0MnKV1cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZV9jaGFyOidfJ1xuICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUsIGFuZCBhc3N1bWUgdGhlIHN0cmluZyB0byBlc2NhcGUgaXNcblxuICAgICAgICAgICAgICAgIFwiMDAwYTExMWIyMjJjMzMzXCJcblxuICAgICAgICAgICAgICAgIHRoZW4gW3RvX2VzY2FwZV0gaXMgWygxMSwgJ0MnKTsgKDcsICdCJyk7ICgzLCAnQScpXS5cblxuICAgICAgICAgICAgICAgIFRoZW4gd2UgY3JlYXRlIGEgW2RzdF0gb2YgbGVuZ3RoIFtsZW5ndGggc3JjICsgM10gdG8gc3RvcmUgdGhlXG4gICAgICAgICAgICAgICAgcmVzdWx0LCBjb3B5IHBpZWNlIFwiMzMzXCIgdG8gW2RzdF0gZGlyZWN0bHksIHRoZW4gY29weSAnXycgYW5kICdDJyB0byBbZHN0XTtcbiAgICAgICAgICAgICAgICB0aGVuIG1vdmUgb24gdG8gbmV4dDsgYWZ0ZXIgMyBpdGVyYXRpb25zLCBjb3B5IHBpZWNlIFwiMDAwXCIgYW5kIHdlIGFyZSBkb25lLlxuXG4gICAgICAgICAgICAgICAgRmluYWxseSB0aGUgcmVzdWx0IHdpbGwgYmVcblxuICAgICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCIgKilcbiAgICAgICAgICAgICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgICAgICAgICAgICBsZXQgZHN0X2xlbiA9IHNyY19sZW4gKyAhdG9fZXNjYXBlX2xlbiBpblxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgZHN0X2xlbiBpblxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBsYXN0X2lkeCBsYXN0X2RzdF9wb3MgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMDAwXCIgYXQgbGFzdCAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46bGFzdF9pZHhcbiAgICAgICAgICAgICAgIHwgKGlkeCwgZXNjYXBlZF9jaGFyKSA6OiB0b19lc2NhcGUgLT5cbiAgICAgICAgICAgICAgICAgKCpbaWR4XSA9IHRoZSBjaGFyIHRvIGVzY2FwZSopXG4gICAgICAgICAgICAgICAgICgqIHRha2UgZmlyc3QgaXRlcmF0aW9uIGZvciBleGFtcGxlICopXG4gICAgICAgICAgICAgICAgICgqIGNhbGN1bGF0ZSBsZW5ndGggb2YgXCIzMzNcIiwgbWludXMgMSBiZWNhdXNlIHdlIGRvbid0IGNvcHkgJ2MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDEgaW5cbiAgICAgICAgICAgICAgICAgKCogc2V0IHRoZSBkc3RfcG9zIHRvIGNvcHkgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiLCBzZXQgW3NyY19wb3NdIHRvIFtpZHggKyAxXSB0byBza2lwICdjJyAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOihpZHggKyAxKSB+ZHN0IH5kc3RfcG9zIH5sZW47XG4gICAgICAgICAgICAgICAgICgqIGJhY2tvZmYgW2RzdF9wb3NdIGJ5IDIgdG8gY29weSAnXycgYW5kICdDJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAyIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgZHN0X3BvcyBlc2NhcGVfY2hhcjtcbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0IGRzdCAoZHN0X3BvcyArIDEpIGVzY2FwZWRfY2hhcjtcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b19lc2NhcGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIHNldCBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSB0byBsZW5ndGggb2YgW2RzdF0gYW5kIFtzcmNdIGZpcnN0ICopXG4gICAgICAgICAgICAgbG9vcCBzcmNfbGVuIGRzdF9sZW4gdG9fZXNjYXBlO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIE9yX2Vycm9yLm9rX2V4biAoZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIpIHw+IHN0YWdlXG4gIDs7XG5cbiAgbGV0IGVzY2FwZSB+ZXNjYXBld29ydGh5IH5lc2NhcGVfY2hhciA9XG4gICAgKCogRm9yIFtlc2NhcGVfZ2VuX2V4bl0sIHdlIGRvbid0IGtub3cgaG93IHRvIGZpeCBpbnZhbGlkIGVzY2FwZXdvcnRoeV9tYXAgc28gd2UgaGF2ZVxuICAgICAgIHRvIHJhaXNlIGV4Y2VwdGlvbjsgYnV0IGluIHRoaXMgY2FzZSwgd2Uga25vdyBob3cgdG8gZml4IGR1cGxpY2F0ZWQgZWxlbWVudHMgaW5cbiAgICAgICBlc2NhcGV3b3J0aHkgbGlzdCwgc28gd2UganVzdCBmaXggaXQgaW5zdGVhZCBvZiByYWlzaW5nIGV4Y2VwdGlvbiB0byBtYWtlIHRoaXNcbiAgICAgICBmdW5jdGlvbiBlYXNpZXIgdG8gdXNlLiAgKilcbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBlc2NhcGV3b3J0aHlcbiAgICAgIHw+IExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6Q2hhci5jb21wYXJlXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGMgLT4gYywgYylcbiAgICBpblxuICAgIGVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhclxuICA7O1xuXG4gICgqIEluIGFuIGVzY2FwZWQgc3RyaW5nLCBhbnkgY2hhciBpcyBlaXRoZXIgYEVzY2FwaW5nLCBgRXNjYXBlZCBvciBgTGl0ZXJhbC4gRm9yXG4gICAgIGV4YW1wbGUsIHRoZSBlc2NhcGUgc3RhdHVzZXMgb2YgY2hhcnMgaW4gc3RyaW5nIFwiYV9hX19cIiB3aXRoIGVzY2FwZV9jaGFyID0gJ18nIGFyZVxuXG4gICAgIGEgOiBgTGl0ZXJhbFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIGEgOiBgRXNjYXBlZFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIF8gOiBgRXNjYXBlZFxuXG4gICAgIFt1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgcHJldmlvdXNfc3RhdHVzXSBnZXRzIGVzY2FwZSBzdGF0dXMgb2ZcbiAgICAgc3RyLltpXSBiYXNpbmcgb24gZXNjYXBlIHN0YXR1cyBvZiBzdHIuW2kgLSAxXSAqKVxuICBsZXQgdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpID0gZnVuY3Rpb25cbiAgICB8IGBFc2NhcGluZyAtPiBgRXNjYXBlZFxuICAgIHwgYExpdGVyYWwgfCBgRXNjYXBlZCAtPlxuICAgICAgaWYgQ2hhci5lcXVhbCBzdHIuW2ldIGVzY2FwZV9jaGFyIHRoZW4gYEVzY2FwaW5nIGVsc2UgYExpdGVyYWxcbiAgOztcblxuICBsZXQgdW5lc2NhcGVfZ2VuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBgVW5lc2NhcGUgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyB4IC0+IHhcbiAgICB8IE9rIGVzY2FwZXdvcnRoeSAtPlxuICAgICAgT2tcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICAgKCogQ29udGludWUgdGhlIGV4YW1wbGUgaW4gW2VzY2FwZV9nZW5fZXhuXSwgbm93IHdlIHVuZXNjYXBlXG5cbiAgICAgICAgICAgICAgXCIwMDBfQTExMV9CMjIyX0MzMzNcIlxuXG4gICAgICAgICAgICAgIGJhY2sgdG9cblxuICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgVGhlbiBbdG9fdW5lc2NhcGVdIGlzIFsxNDsgOTsgNF0sIHdoaWNoIGlzIGluZGV4ZXMgb2YgJ18ncy5cblxuICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIHN0cmluZyBbZHN0XSB0byBzdG9yZSB0aGUgcmVzdWx0LCBjb3B5IFwiMzMzXCIgdG8gaXQsIHRoZW4gY29weVxuICAgICAgICAgICAgICAnYycsIHRoZW4gbW92ZSBvbiB0byBuZXh0IGl0ZXJhdGlvbi4gQWZ0ZXIgMyBpdGVyYXRpb25zIGNvcHkgXCIwMDBcIiBhbmQgd2UgYXJlXG4gICAgICAgICAgICAgIGRvbmUuICAqKVxuICAgICAgICAgICAoKiBpbmRleGVzIG9mIGVzY2FwZSBjaGFycyAqKVxuICAgICAgICAgICBsZXQgdG9fdW5lc2NhcGUgPVxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBpIHN0YXR1cyBhY2MgPVxuICAgICAgICAgICAgICAgaWYgaSA+PSBsZW5ndGggc3JjXG4gICAgICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzcmMgfmVzY2FwZV9jaGFyIGkgc3RhdHVzIGluXG4gICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYEVzY2FwaW5nIC0+IGkgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgYEVzY2FwZWQgfCBgTGl0ZXJhbCAtPiBhY2MpKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbG9vcCAwIGBMaXRlcmFsIFtdXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX3VuZXNjYXBlIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBzcmNcbiAgICAgICAgICAgfCBpZHggOjogdG9fdW5lc2NhcGUnIC0+XG4gICAgICAgICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuZ3RoIHNyYyAtIExpc3QubGVuZ3RoIHRvX3VuZXNjYXBlKSBpblxuICAgICAgICAgICAgIGxldCByZWMgbG9vcCBsYXN0X2lkeCBsYXN0X2RzdF9wb3MgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMDAwXCIgYXQgbGFzdCAqKVxuICAgICAgICAgICAgICAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46bGFzdF9pZHhcbiAgICAgICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqIFtpZHhdID0gaW5kZXggb2YgZXNjYXBpbmcgY2hhciAqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIDFzdCBpdGVyYXRpb24gYXMgZXhhbXBsZSwgY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgXCIzMzNcIiwgbWludXMgMiB0b1xuICAgICAgICAgICAgICAgICAgICBza2lwICdfQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGxlbiA9IGxhc3RfaWR4IC0gaWR4IC0gMiBpblxuICAgICAgICAgICAgICAgICAoKiBwb2ludCBbZHN0X3Bvc10gdG8gdGhlIHBvc2l0aW9uIHRvIGNvcHkgXCIzMzNcIiB0byAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGxhc3RfZHN0X3BvcyAtIGxlbiBpblxuICAgICAgICAgICAgICAgICAoKiBjb3B5IFwiMzMzXCIgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMikgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAxIHRvIGNvcHkgJ2MnICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gZHN0X3BvcyAtIDEgaW5cbiAgICAgICAgICAgICAgICAgQnl0ZXMuc2V0XG4gICAgICAgICAgICAgICAgICAgZHN0XG4gICAgICAgICAgICAgICAgICAgZHN0X3Bvc1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBlc2NhcGV3b3J0aHkuKENoYXIudG9faW50IHNyYy5baWR4ICsgMV0pIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAtMSAtPiBzcmMuW2lkeCArIDFdXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBDaGFyLnVuc2FmZV9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgICgqIHVwZGF0ZSBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSAqKVxuICAgICAgICAgICAgICAgICBsb29wIGlkeCBkc3RfcG9zIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiBpZHggPCBsZW5ndGggc3JjIC0gMVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICgqIHNldCBbbGFzdF9kc3RfcG9zXSBhbmQgW2xhc3RfaWR4XSB0byBsZW5ndGggb2YgW2RzdF0gYW5kIFtzcmNdICopXG4gICAgICAgICAgICAgICBsb29wIChsZW5ndGggc3JjKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAoKiBmb3IgZXNjYXBlZCBzdHJpbmcgZW5kaW5nIHdpdGggYW4gZXNjYXBpbmcgY2hhciBsaWtlIFwiMDAwX1wiLCBqdXN0IGlnbm9yZVxuICAgICAgICAgICAgICAgICAgdGhlIGxhc3QgZXNjYXBpbmcgY2hhciAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYyAtIDEpIChCeXRlcy5sZW5ndGggZHN0KSB0b191bmVzY2FwZSc7XG4gICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIpIHw+IHN0YWdlXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlIH5lc2NhcGVfY2hhciA9IHVuZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXA6W10gfmVzY2FwZV9jaGFyXG5cbiAgbGV0IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCByZWMgbG9vcCBwIGNudCA9XG4gICAgICBpZiBwIDwgMCB8fCBDaGFyLiggPD4gKSBzdHIuW3BdIGVzY2FwZV9jaGFyIHRoZW4gY250IGVsc2UgbG9vcCAocCAtIDEpIChjbnQgKyAxKVxuICAgIGluXG4gICAgbG9vcCAocG9zIC0gMSkgMFxuICA7O1xuXG4gICgqIEluIGFuIGVzY2FwZWQgc3RyaW5nLCBhbnkgY2hhciBpcyBlaXRoZXIgYEVzY2FwaW5nLCBgRXNjYXBlZCBvciBgTGl0ZXJhbC4gRm9yXG4gICAgIGV4YW1wbGUsIHRoZSBlc2NhcGUgc3RhdHVzZXMgb2YgY2hhcnMgaW4gc3RyaW5nIFwiYV9hX19cIiB3aXRoIGVzY2FwZV9jaGFyID0gJ18nIGFyZVxuXG4gICAgIGEgOiBgTGl0ZXJhbFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIGEgOiBgRXNjYXBlZFxuICAgICBfIDogYEVzY2FwaW5nXG4gICAgIF8gOiBgRXNjYXBlZFxuXG4gICAgIFt1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIGkgcHJldmlvdXNfc3RhdHVzXSBnZXRzIGVzY2FwZSBzdGF0dXMgb2ZcbiAgICAgc3RyLltpXSBiYXNpbmcgb24gZXNjYXBlIHN0YXR1cyBvZiBzdHIuW2kgLSAxXSAqKVxuICBsZXQgdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpID0gZnVuY3Rpb25cbiAgICB8IGBFc2NhcGluZyAtPiBgRXNjYXBlZFxuICAgIHwgYExpdGVyYWwgfCBgRXNjYXBlZCAtPlxuICAgICAgaWYgQ2hhci5lcXVhbCBzdHIuW2ldIGVzY2FwZV9jaGFyIHRoZW4gYEVzY2FwaW5nIGVsc2UgYExpdGVyYWxcbiAgOztcblxuICBsZXQgZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgbGV0IG9kZCA9IHByZWNlZGluZ19lc2NhcGVfY2hhcnMgc3RyIH5lc2NhcGVfY2hhciBwb3MgbW9kIDIgPSAxIGluXG4gICAgbWF0Y2ggb2RkLCBDaGFyLmVxdWFsIHN0ci5bcG9zXSBlc2NhcGVfY2hhciB3aXRoXG4gICAgfCB0cnVlLCAodHJ1ZSB8IGZhbHNlKSAtPiBgRXNjYXBlZFxuICAgIHwgZmFsc2UsIHRydWUgLT4gYEVzY2FwaW5nXG4gICAgfCBmYWxzZSwgZmFsc2UgLT4gYExpdGVyYWxcbiAgOztcblxuICBsZXQgY2hlY2tfYm91bmQgc3RyIHBvcyBmdW5jdGlvbl9uYW1lID1cbiAgICBpZiBwb3MgPj0gbGVuZ3RoIHN0ciB8fCBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiJXM6IG91dCBvZiBib3VuZHNcIiBmdW5jdGlvbl9uYW1lICgpXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfZXNjYXBpbmcgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2VzY2FwaW5nXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBpbmcgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwZWQgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwZWQgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2VzY2FwZWRcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBFc2NhcGVkIC0+IHRydWVcbiAgICB8IGBFc2NhcGluZyB8IGBMaXRlcmFsIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGlzX2NoYXJfbGl0ZXJhbCBzdHIgfmVzY2FwZV9jaGFyIHBvcyA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImlzX2NoYXJfbGl0ZXJhbFwiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaW5kZXhfZnJvbVwiO1xuICAgIGxldCByZWMgbG9vcCBpIHN0YXR1cyA9XG4gICAgICBpZiBpID49IHBvc1xuICAgICAgJiYgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgICAgICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZSlcbiAgICAgICYmIENoYXIuZXF1YWwgc3RyLltpXSBjaGFyXG4gICAgICB0aGVuIFNvbWUgaVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBpID0gaSArIDEgaW5cbiAgICAgICAgaWYgaSA+PSBsZW5ndGggc3RyXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIGxvb3AgaSAodXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHN0YXR1cykpXG4gICAgaW5cbiAgICBsb29wIHBvcyAoZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcylcbiAgOztcblxuICBsZXQgaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIlxuICAgICAgICAgICBbIFwic3RyXCIsIHNleHBfb2ZfdCBzdHJcbiAgICAgICAgICAgOyBcImVzY2FwZV9jaGFyXCIsIHNleHBfb2ZfY2hhciBlc2NhcGVfY2hhclxuICAgICAgICAgICA7IFwicG9zXCIsIHNleHBfb2ZfaW50IHBvc1xuICAgICAgICAgICA7IFwiY2hhclwiLCBzZXhwX29mX2NoYXIgY2hhclxuICAgICAgICAgICBdKVxuICAgIHwgU29tZSBwb3MgLT4gcG9zXG4gIDs7XG5cbiAgbGV0IGluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcbiAgbGV0IGluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIDAgY2hhclxuXG4gIGxldCByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwicmluZGV4X2Zyb21cIjtcbiAgICAoKiBpZiB0aGUgdGFyZ2V0IGNoYXIgaXMgdGhlIHNhbWUgYXMgW2VzY2FwZV9jaGFyXSwgd2UgaGF2ZSBubyB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgZXNjYXBlX2NoYXIgaXMgbGl0ZXJhbCwgc28ganVzdCByZXR1cm4gTm9uZSAqKVxuICAgIGlmIENoYXIuZXF1YWwgY2hhciBlc2NhcGVfY2hhclxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHBvcyA9XG4gICAgICAgIGlmIHBvcyA8IDBcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlc2NhcGVfY2hhcnMgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGluXG4gICAgICAgICAgaWYgZXNjYXBlX2NoYXJzIG1vZCAyID0gMCAmJiBDaGFyLmVxdWFsIHN0ci5bcG9zXSBjaGFyXG4gICAgICAgICAgdGhlbiBTb21lIHBvc1xuICAgICAgICAgIGVsc2UgbG9vcCAocG9zIC0gZXNjYXBlX2NoYXJzIC0gMSkpXG4gICAgICBpblxuICAgICAgbG9vcCBwb3MpXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyID1cbiAgICBtYXRjaCByaW5kZXhfZnJvbSBzdHIgfmVzY2FwZV9jaGFyIHBvcyBjaGFyIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcInJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCByaW5kZXggc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICBpZiBpc19lbXB0eSBzdHIgdGhlbiBOb25lIGVsc2UgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICBsZXQgcmluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPVxuICAgIHJpbmRleF9mcm9tX2V4biBzdHIgfmVzY2FwZV9jaGFyIChsZW5ndGggc3RyIC0gMSkgY2hhclxuICA7O1xuXG4gICgqIFtzcGxpdF9nZW4gc3RyIH5lc2NhcGVfY2hhciB+b25dIHdvcmtzIHNpbWlsYXJseSB0byBbU3RyaW5nLnNwbGl0X2dlbl0sIHdpdGggYW5cbiAgICAgYWRkaXRpb25hbCByZXF1aXJlbWVudDogb25seSBzcGxpdCBvbiBsaXRlcmFsIGNoYXJzLCBub3QgZXNjYXBpbmcgb3IgZXNjYXBlZCAqKVxuICBsZXQgc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uID1cbiAgICBsZXQgaXNfZGVsaW0gPVxuICAgICAgbWF0Y2ggb24gd2l0aFxuICAgICAgfCBgY2hhciBjJyAtPiBmdW4gYyAtPiBDaGFyLmVxdWFsIGMgYydcbiAgICAgIHwgYGNoYXJfbGlzdCBsIC0+IGZ1biBjIC0+IGNoYXJfbGlzdF9tZW0gbCBjXG4gICAgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIHBvcyA9XG4gICAgICBpZiBwb3MgPSBsZW5cbiAgICAgIHRoZW4gTGlzdC5yZXYgKHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihsZW4gLSBsYXN0X3BvcykgOjogYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzdGF0dXMgPSB1cGRhdGVfZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBzdGF0dXMgaW5cbiAgICAgICAgaWYgKG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgfCBgTGl0ZXJhbCAtPiB0cnVlXG4gICAgICAgICAgfCBgRXNjYXBlZCB8IGBFc2NhcGluZyAtPiBmYWxzZSlcbiAgICAgICAgJiYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOmxhc3RfcG9zIH5sZW46KHBvcyAtIGxhc3RfcG9zKSBpblxuICAgICAgICAgIGxvb3AgKHN1Yl9zdHIgOjogYWNjKSBzdGF0dXMgKHBvcyArIDEpIChwb3MgKyAxKSlcbiAgICAgICAgZWxzZSBsb29wIGFjYyBzdGF0dXMgbGFzdF9wb3MgKHBvcyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBbXSBgTGl0ZXJhbCAwIDBcbiAgOztcblxuICBsZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbiAgbGV0IHNwbGl0X29uX2NoYXJzIHN0ciB+b246Y2hhcnMgPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXJfbGlzdCBjaGFycylcblxuICBsZXQgc3BsaXRfYXQgc3RyIHBvcyA9XG4gICAgc3ViIHN0ciB+cG9zOjAgfmxlbjpwb3MsIHN1YiBzdHIgfnBvczoocG9zICsgMSkgfmxlbjoobGVuZ3RoIHN0ciAtIHBvcyAtIDEpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKGluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgb24pIH5mOihmdW4geCAtPiBzcGxpdF9hdCBzdHIgeClcbiAgOztcblxuICBsZXQgcnNwbGl0MiBzdHIgfm9uIH5lc2NhcGVfY2hhciA9XG4gICAgT3B0aW9uLm1hcCAocmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgb24pIH5mOihmdW4geCAtPiBzcGxpdF9hdCBzdHIgeClcbiAgOztcblxuICBsZXQgbHNwbGl0Ml9leG4gc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPSBzcGxpdF9hdCBzdHIgKGluZGV4X2V4biBzdHIgfmVzY2FwZV9jaGFyIG9uKVxuICBsZXQgcnNwbGl0Ml9leG4gc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPSBzcGxpdF9hdCBzdHIgKHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcblxuICAoKiBbbGFzdF9ub25fZHJvcF9saXRlcmFsXSBhbmQgW2ZpcnN0X25vbl9kcm9wX2xpdGVyYWxdIGFyZSBlaXRoZXIgYm90aCBbTm9uZV0gb3IgYm90aFxuICAgICBbU29tZV0uIElmIFtTb21lXSwgdGhlbiB0aGUgZm9ybWVyIGlzID49IHRoZSBsYXR0ZXIuICopXG4gIGxldCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIHJmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICBsZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcnN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuICA7O1xuXG4gIGxldCBsc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSAwIC0+IHRcbiAgICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbiAgOztcblxuICAoKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxuICBsZXQgc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgICAoKiBwZXJmb3JtYW5jZSBoYWNrOiBhdm9pZCBjb3B5aW5nIFt0XSBpbiBjb21tb24gY2FzZXMgKilcbiAgICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG4gIDs7XG5lbmRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG4oKiBPdmVycmlkZSBbU2VhcmNoX3BhdHRlcm5dIHdpdGggZGVmYXVsdCBjYXNlLXNlbnNpdGl2aXR5IGFyZ3VtZW50IGF0IHRoZSBlbmQgb2YgdGhlXG4gICBmaWxlLCBzbyB0aGF0IGNhbGwgc2l0ZXMgYWJvdmUgYXJlIGZvcmNlZCB0byBzdXBwbHkgY2FzZS1zZW5zaXRpdml0eSBleHBsaWNpdGx5LiAqKVxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gc3RydWN0XG4gIGluY2x1ZGUgU2VhcmNoX3BhdHRlcm4wXG5cbiAgbGV0IGNyZWF0ZSA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSkgcGF0dGVybiA9IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmdfaW5saW5lIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdCkgPSAoZ2xvYmFsaXplX2J5dGVzIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcbiAgbGV0IHRfb2Zfc2V4cCA9IChieXRlc19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ieXRlcyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBieXRlc19zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGluY2x1ZGUgQnl0ZXMwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJ5dGVzXCJcbiAgbGV0IHBwIGZtdCB0ID0gU3RkbGliLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgKHRvX3N0cmluZyB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgVG9fYnl0ZXMgPSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoVCkgKFRvX2J5dGVzKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgZW5kKVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBuIDBcbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiQnl0ZXMuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBzZXQgdCBpIGMpO1xuICB0XG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCAoaSAtIDEpICh1bnNhZmVfZ2V0IHQgaSA6OiBhY2MpXG4gIGluXG4gIGxvb3AgdCAobGVuZ3RoIHQgLSAxKSBbXVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxubGV0IG1hcCB0IH5mID0gbWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBtYXBpIHQgfmZcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIHBvcyBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHMgaSkgdGFyZ2V0IHRoZW4gdW5zYWZlX3NldCBzIGkgcmVwbGFjZW1lbnRcbiAgZG9uZVxuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIDBcbiAgdGhlbiBzdGFnZSBpZ25vcmVcbiAgZWxzZSBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aTogcmVwbGFjZW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBpZ25vcmVcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgcyBpIChTdHJpbmcudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50ICh1bnNhZmVfZ2V0IHMgaSkpKVxuICAgICAgICBkb25lKSlcbjs7XG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBjb250YWlucyA/cG9zID9sZW4gdCBjaGFyID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsYXN0ID0gcG9zICsgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgbGFzdFxuICAgICYmIChDaGFyLmVxdWFsIChnZXQgdCBpKSBjaGFyIHx8IGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIiMgMSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiBcbnR5cGUgcmVzdWx0ID1cbnwgTmVnIG9mIHN0cmluZ1xufCBQb3Mgb2Ygc3RyaW5nXG5cbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwODJcXDAwMFxcMTA1XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHBhcnNlX2hleCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDEzNSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE0IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5lZyBib2R5IClcbiMgMTM5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTQ1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTUgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggUG9zIGJvZHkgKVxuIyAxNDkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGNvbnZlcnRfZmFpbHVyZSB4IGEgYiB0b19zdHJpbmcgPVxuICBQcmludGYuZmFpbHdpdGhmXG4gICAgXCJjb252ZXJzaW9uIGZyb20gJXMgdG8gJXMgZmFpbGVkOiAlcyBpcyBvdXQgb2YgcmFuZ2VcIlxuICAgIGFcbiAgICBiXG4gICAgKHRvX3N0cmluZyB4KVxuICAgICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IG51bV9iaXRzX2ludCA9IFN5cy5pbnRfc2l6ZV9pbl9iaXRzXG5sZXQgbnVtX2JpdHNfaW50MzIgPSAzMlxubGV0IG51bV9iaXRzX2ludDY0ID0gNjRcbmxldCBudW1fYml0c19uYXRpdmVpbnQgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPSA2MyB8fCBudW1fYml0c19pbnQgPSAzMSB8fCBudW1fYml0c19pbnQgPSAzMilcbmxldCBtaW5faW50MzIgPSBTdGRsaWIuSW50MzIubWluX2ludFxubGV0IG1heF9pbnQzMiA9IFN0ZGxpYi5JbnQzMi5tYXhfaW50XG5sZXQgbWluX2ludDY0ID0gU3RkbGliLkludDY0Lm1pbl9pbnRcbmxldCBtYXhfaW50NjQgPSBTdGRsaWIuSW50NjQubWF4X2ludFxubGV0IG1pbl9uYXRpdmVpbnQgPSBTdGRsaWIuTmF0aXZlaW50Lm1pbl9pbnRcbmxldCBtYXhfbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5tYXhfaW50XG5sZXQgaW50X3RvX3N0cmluZyA9IFN0ZGxpYi5zdHJpbmdfb2ZfaW50XG5sZXQgaW50MzJfdG9fc3RyaW5nID0gU3RkbGliLkludDMyLnRvX3N0cmluZ1xubGV0IGludDY0X3RvX3N0cmluZyA9IFN0ZGxpYi5JbnQ2NC50b19zdHJpbmdcbmxldCBuYXRpdmVpbnRfdG9fc3RyaW5nID0gU3RkbGliLk5hdGl2ZWludC50b19zdHJpbmdcblxuKCogaW50IDwtPiBpbnQzMiAqKVxuXG5sZXQgaW50X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50XCIgXCJpbnQzMlwiIGludF90b19zdHJpbmdcbmxldCBpbnQzMl90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQzMlwiIFwiaW50XCIgaW50MzJfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X3RydW5jID0gU3RkbGliLkludDMyLnRvX2ludFxubGV0IGludF90b19pbnQzMl90cnVuYyA9IFN0ZGxpYi5JbnQzMi5vZl9pbnRcblxubGV0IGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9faW50X3RydW5jIG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19pbnRfdHJ1bmMgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX2ludDMyX3RydW5jIEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX2ludDMyX3RydW5jIEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDMyIG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQzMiB4IG1heCA8PSAwKVxuOztcblxubGV0IGludF90b19pbnQzMiB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQzMl90b19pbnQgeCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQzMl90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIGludF90b19pbnQzMl90cnVuYyB4IGVsc2UgaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxubGV0IGludDMyX3RvX2ludF9leG4geCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQzMl90b19pbnRfdHJ1bmMgeCBlbHNlIGludDMyX3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50X3RvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX2ludFxubGV0IGludDY0X3RvX2ludF90cnVuYyA9IFN0ZGxpYi5JbnQ2NC50b19pbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgbGV0IG1pbiA9IGludF90b19pbnQ2NCBJbnQubWluX3ZhbHVlIGluXG4gIGxldCBtYXggPSBpbnRfdG9faW50NjQgSW50Lm1heF92YWx1ZSBpblxuICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwXG47O1xuXG5sZXQgaW50NjRfdG9faW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX2ludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQ2NF90b19pbnRfdHJ1bmMgeCBlbHNlIGludDY0X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwibmF0aXZlaW50XCIgXCJpbnRcIiBuYXRpdmVpbnRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludCA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50X3RvX25hdGl2ZWludCA9IFN0ZGxpYi5OYXRpdmVpbnQub2ZfaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludF90cnVuYyA9IFN0ZGxpYi5OYXRpdmVpbnQudG9faW50XG5cbmxldCBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX25hdGl2ZWludCBJbnQubWluX3ZhbHVlIGluXG4gICAgbGV0IG1heCA9IGludF90b19uYXRpdmVpbnQgSW50Lm1heF92YWx1ZSBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfbmF0aXZlaW50IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9uYXRpdmVpbnQgeCBtYXggPD0gMClcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50IHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludF9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludCB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludF90cnVuYyB4XG4gIGVsc2UgbmF0aXZlaW50X3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludDMyIDwtPiBpbnQ2NCAqKVxuXG5sZXQgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50MzJcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50MzIgPCBudW1fYml0c19pbnQ2NClcbmxldCBpbnQzMl90b19pbnQ2NCA9IFN0ZGxpYi5JbnQ2NC5vZl9pbnQzMlxubGV0IGludDY0X3RvX2ludDMyX3RydW5jID0gU3RkbGliLkludDY0LnRvX2ludDMyXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgbGV0IG1pbiA9IGludDMyX3RvX2ludDY0IG1pbl9pbnQzMiBpblxuICBsZXQgbWF4ID0gaW50MzJfdG9faW50NjQgbWF4X2ludDMyIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMiB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBpbnQ2NF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4ID1cbiAgY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludDMyXCIgbmF0aXZlaW50X3RvX3N0cmluZ1xuOztcblxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50MzJfdG9fbmF0aXZlaW50ID0gU3RkbGliLk5hdGl2ZWludC5vZl9pbnQzMlxubGV0IG5hdGl2ZWludF90b19pbnQzMl90cnVuYyA9IFN0ZGxpYi5OYXRpdmVpbnQudG9faW50MzJcblxubGV0IG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9fbmF0aXZlaW50IG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19uYXRpdmVpbnQgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9uYXRpdmVpbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX25hdGl2ZWludCB4IG1heCA8PSAwKVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMiB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeFxuICB0aGVuIFNvbWUgKG5hdGl2ZWludF90b19pbnQzMl90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gbmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHhcbiAgZWxzZSBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwibmF0aXZlaW50XCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDY0ID49IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgPSBTdGRsaWIuSW50NjQudG9fbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludDY0ID0gU3RkbGliLkludDY0Lm9mX25hdGl2ZWludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgPVxuICBpZiBudW1fYml0c19pbnQ2NCA8PSBudW1fYml0c19uYXRpdmVpbnRcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBuYXRpdmVpbnRfdG9faW50NjQgbWluX25hdGl2ZWludCBpblxuICAgIGxldCBtYXggPSBuYXRpdmVpbnRfdG9faW50NjQgbWF4X25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDApXG47O1xuXG5sZXQgaW50NjRfdG9fbmF0aXZlaW50IHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gU29tZSAoaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50IHhcbiAgdGhlbiBpbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgeFxuICBlbHNlIGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBpbnQ2MyAqKVxuXG5sZXQgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJpbnQ2NFwiIFwiaW50NjNcIiBpbnQ2NF90b19zdHJpbmdcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgPVxuICBsZXQgbWluID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IG1pbl9pbnQ2NCAxIGluXG4gIGxldCBtYXggPSBTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgbWF4X2ludDY0IDEgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X2ZpdF9vbl9pbnQ2M19leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuICgpIGVsc2UgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4XG47O1xuXG4oKiBzdHJpbmcgY29udmVyc2lvbnMgKilcblxubGV0IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlciA9XG4gIGxldCBpbnB1dF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGlmIGlucHV0X2xlbmd0aCA8PSBjaGFyc19wZXJfZGVsaW1pdGVyXG4gIHRoZW4gaW5wdXRcbiAgZWxzZSAoXG4gICAgbGV0IGhhc19zaWduID1cbiAgICAgIG1hdGNoIGlucHV0LlswXSB3aXRoXG4gICAgICB8ICcrJyB8ICctJyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBudW1fZGlnaXRzID0gaWYgaGFzX3NpZ24gdGhlbiBpbnB1dF9sZW5ndGggLSAxIGVsc2UgaW5wdXRfbGVuZ3RoIGluXG4gICAgbGV0IG51bV9kZWxpbWl0ZXJzID0gKG51bV9kaWdpdHMgLSAxKSAvIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgb3V0cHV0X2xlbmd0aCA9IGlucHV0X2xlbmd0aCArIG51bV9kZWxpbWl0ZXJzIGluXG4gICAgbGV0IG91dHB1dCA9IEJ5dGVzLmNyZWF0ZSBvdXRwdXRfbGVuZ3RoIGluXG4gICAgbGV0IGlucHV0X3BvcyA9IHJlZiAoaW5wdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgb3V0cHV0X3BvcyA9IHJlZiAob3V0cHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSByZWYgY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBmaXJzdF9kaWdpdF9wb3MgPSBpZiBoYXNfc2lnbiB0aGVuIDEgZWxzZSAwIGluXG4gICAgd2hpbGUgIWlucHV0X3BvcyA+PSBmaXJzdF9kaWdpdF9wb3MgZG9cbiAgICAgIGlmICFudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgZGVsaW1pdGVyO1xuICAgICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICAgIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgOj0gY2hhcnNfcGVyX2RlbGltaXRlcik7XG4gICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGlucHV0LlshaW5wdXRfcG9zXTtcbiAgICAgIGRlY3IgaW5wdXRfcG9zO1xuICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgZGVjciBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyXG4gICAgZG9uZTtcbiAgICBpZiBoYXNfc2lnbiB0aGVuIEJ5dGVzLnNldCBvdXRwdXQgMCBpbnB1dC5bMF07XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXRwdXQpXG47O1xuXG5sZXQgaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyID1cbiAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyOjNcbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgaW5wdXQgPSBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXI6J18nXG5sZXQgc2V4cF9vZl9pbnRfc3R5bGUgPSBTZXhwLm9mX2ludF9zdHlsZVxuXG5tb2R1bGUgTWFrZSAoSSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gSVxuXG4gIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gM1xuXG4gIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID1cbiAgICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5ICh0b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgdCBpblxuICAgIFNleHAuQXRvbVxuICAgICAgKG1hdGNoICFzZXhwX29mX2ludF9zdHlsZSB3aXRoXG4gICAgICAgfCBgVW5kZXJzY29yZXMgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBzIH5jaGFyc19wZXJfZGVsaW1pdGVyIH5kZWxpbWl0ZXI6J18nXG4gICAgICAgfCBgTm9fdW5kZXJzY29yZXMgLT4gcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9oZXggKEkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVF9oZXggPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChJLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgSS5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBJLmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSA0XG5cbiAgICBsZXQgdG9fc3RyaW5nJyA/ZGVsaW1pdGVyIHQgPVxuICAgICAgbGV0IG1ha2Vfc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEkudG9fc3RyaW5nXG4gICAgICAgIHwgU29tZSBkZWxpbWl0ZXIgLT5cbiAgICAgICAgICBmdW4gdCAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IChJLnRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gICAgICBpblxuICAgICAgaWYgSS4oIDwgKSB0IEkuemVybyB0aGVuIFwiLTB4XCIgXiBtYWtlX3N1ZmZpeCAoSS5uZWcgdCkgZWxzZSBcIjB4XCIgXiBtYWtlX3N1ZmZpeCB0XG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IHRvX3N0cmluZycgdCA/ZGVsaW1pdGVyOk5vbmVcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9IHRvX3N0cmluZycgdCB+ZGVsaW1pdGVyXG5cbiAgICBsZXQgaW52YWxpZCBzdHIgPVxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIiVzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIEkubW9kdWxlX25hbWUgc3RyICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgc3RyID1cbiAgICAgIEkub2Zfc3RyaW5nIChTdHJpbmcuZmlsdGVyIHN0ciB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAnXycpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgICBsZXQgbW9kdWxlIEwgPSBIZXhfbGV4ZXIgaW5cbiAgICAgIGxldCBsZXggPSBTdGRsaWIuTGV4aW5nLmZyb21fc3RyaW5nIHN0ciBpblxuICAgICAgbGV0IHJlc3VsdCA9IE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEwucGFyc2VfaGV4IGxleCkgaW5cbiAgICAgIGlmIGxleC5sZXhfY3Vycl9wb3MgPSBsZXgubGV4X2J1ZmZlcl9sZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaW52YWxpZCBzdHJcbiAgICAgICAgfCBTb21lIChOZWcgYm9keSkgLT4gSS5uZWcgKG9mX3N0cmluZ193aXRoX2RlbGltaXRlciBib2R5KVxuICAgICAgICB8IFNvbWUgKFBvcyBib2R5KSAtPiBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgIGVsc2UgaW52YWxpZCBzdHJcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGV4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBUX2hleFxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVF9oZXgpXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgd2FzIGF1dG9nZW5lcmF0ZWQgYnkgLi4vZ2VuZXJhdGUvZ2VuZXJhdGVfcG93X292ZXJmbG93X2JvdW5kcy5leGUgKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG4oKiBXZSBoYXZlIHRvIHVzZSBJbnQ2NC50b19pbnRfZXhuIGluc3RlYWQgb2YgaW50IGNvbnN0YW50cyB0byBtYWtlXG4gICBzdXJlIHRoYXQgZmlsZSBjYW4gYmUgcHJlcHJvY2Vzc2VkIG9uIDMyLWJpdCBtYWNoaW5lcy4gKilcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQzMl92YWx1ZSA6IGludDMyID1cbiAgMjE0NzQ4MzY0N2xcblxubGV0IGludDMyX3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDMyIGFycmF5ID1cbiAgW3wgMjE0NzQ4MzY0N2xcbiAgOyAgMjE0NzQ4MzY0N2xcbiAgOyAgNDYzNDBsXG4gIDsgIDEyOTBsXG4gIDsgIDIxNWxcbiAgOyAgNzNsXG4gIDsgIDM1bFxuICA7ICAyMWxcbiAgOyAgMTRsXG4gIDsgIDEwbFxuICA7ICA4bFxuICA7ICA3bFxuICA7ICA1bFxuICA7ICA1bFxuICA7ICA0bFxuICA7ICA0bFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAzbFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAybFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICA7ICAxbFxuICB8XVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludF92YWx1ZSA6IGludCA9XG4gICgtMSkgbHNyIDFcblxubGV0IGludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQgYXJyYXkgPVxuICBtYXRjaCBJbnRfY29udmVyc2lvbnMubnVtX2JpdHNfaW50IHdpdGhcbiAgfCAzMiAtPiBBcnJheS5tYXAgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIH5mOlN0ZGxpYi5JbnQzMi50b19pbnRcbiAgfCA2MyAtPlxuICAgIFt8IFN0ZGxpYi5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBTdGRsaWIuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgU3RkbGliLkludDY0LnRvX2ludCAyMTQ3NDgzNjQ3TFxuICAgIDsgIDE2NjQ1MTBcbiAgICA7ICA0NjM0MFxuICAgIDsgIDU0MDRcbiAgICA7ICAxMjkwXG4gICAgOyAgNDYzXG4gICAgOyAgMjE1XG4gICAgOyAgMTE4XG4gICAgOyAgNzNcbiAgICA7ICA0OVxuICAgIDsgIDM1XG4gICAgOyAgMjdcbiAgICA7ICAyMVxuICAgIDsgIDE3XG4gICAgOyAgMTRcbiAgICA7ICAxMlxuICAgIDsgIDEwXG4gICAgOyAgOVxuICAgIDsgIDhcbiAgICA7ICA3XG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCAzMSAtPlxuICAgIFt8IDEwNzM3NDE4MjNcbiAgICA7ICAxMDczNzQxODIzXG4gICAgOyAgMzI3NjdcbiAgICA7ICAxMDIzXG4gICAgOyAgMTgxXG4gICAgOyAgNjNcbiAgICA7ICAzMVxuICAgIDsgIDE5XG4gICAgOyAgMTNcbiAgICA7ICAxMFxuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgNDYxMTY4NjAxODQyNzM4NzkwM0xcblxubGV0IGludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgMjE0NzQ4MzY0N0xcbiAgOyAgMTY2NDUxMExcbiAgOyAgNDYzNDBMXG4gIDsgIDU0MDRMXG4gIDsgIDEyOTBMXG4gIDsgIDQ2M0xcbiAgOyAgMjE1TFxuICA7ICAxMThMXG4gIDsgIDczTFxuICA7ICA0OUxcbiAgOyAgMzVMXG4gIDsgIDI3TFxuICA7ICAyMUxcbiAgOyAgMTdMXG4gIDsgIDE0TFxuICA7ICAxMkxcbiAgOyAgMTBMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG5cbmxldCBpbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDMwMzcwMDA0OTlMXG4gIDsgIDIwOTcxNTFMXG4gIDsgIDU1MTA4TFxuICA7ICA2MjA4TFxuICA7ICAxNDQ4TFxuICA7ICA1MTFMXG4gIDsgIDIzNExcbiAgOyAgMTI3TFxuICA7ICA3OExcbiAgOyAgNTJMXG4gIDsgIDM4TFxuICA7ICAyOExcbiAgOyAgMjJMXG4gIDsgIDE4TFxuICA7ICAxNUxcbiAgOyAgMTNMXG4gIDsgIDExTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC0zMDM3MDAwNDk5TFxuICA7ICAtMjA5NzE1MUxcbiAgOyAgLTU1MTA4TFxuICA7ICAtNjIwOExcbiAgOyAgLTE0NDhMXG4gIDsgIC01MTFMXG4gIDsgIC0yMzRMXG4gIDsgIC0xMjdMXG4gIDsgIC03OExcbiAgOyAgLTUyTFxuICA7ICAtMzhMXG4gIDsgIC0yOExcbiAgOyAgLTIyTFxuICA7ICAtMThMXG4gIDsgIC0xNUxcbiAgOyAgLTEzTFxuICA7ICAtMTFMXG4gIDsgIC05TFxuICA7ICAtOExcbiAgOyAgLTdMXG4gIDsgIC03TFxuICA7ICAtNkxcbiAgOyAgLTZMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTFMXG4gIHxdXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBuZWdhdGl2ZV9leHBvbmVudCAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJleHBvbmVudCBjYW4gbm90IGJlIG5lZ2F0aXZlXCIgKClcbmxldCBvdmVyZmxvdyAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJpbnRlZ2VyIG92ZXJmbG93IGluIHBvd1wiICgpXG5cbigqIFRvIGltcGxlbWVudCBbaW50NjRfcG93XSwgd2UgdXNlIEMgY29kZSByYXRoZXIgdGhhbiBPQ2FtbCB0byBlbGltaW5hdGUgYWxsb2NhdGlvbi4gKilcbmV4dGVybmFsIGludF9tYXRoX2ludF9wb3cgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWJcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaW50X21hdGhfaW50NjRfcG93IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWJcIlxuXG5sZXQgaW50X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgaWYgZXhwb25lbnQgPCAwIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMVxuICAmJiAoZXhwb25lbnQgPiA2M1xuICAgICAgfHwgYWJzIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKGV4cG9uZW50KSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgSW50NjRfd2l0aF9jb21wYXJpc29ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZGxpYi5JbnQ2NFxuXG4gIGV4dGVybmFsICggPCApIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPj0gKSA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDY0W0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcbmVuZFxuXG4oKiB3ZSBkb24ndCBkbyBbYWJzXSBpbiBpbnQ2NCBjYXNlIHRvIGF2b2lkIGFsbG9jYXRpb24gKilcbmxldCBpbnQ2NF9wb3cgYmFzZSBleHBvbmVudCA9XG4gIGxldCBvcGVuIEludDY0X3dpdGhfY29tcGFyaXNvbnMgaW5cbiAgaWYgZXhwb25lbnQgPCAwTCB0aGVuIG5lZ2F0aXZlX2V4cG9uZW50ICgpO1xuICBpZiAoYmFzZSA+IDFMIHx8IGJhc2UgPCAtMUwpXG4gICYmIChleHBvbmVudCA+IDYzTFxuICAgICAgfHwgKGJhc2UgPj0gMExcbiAgICAgICAgICAmJiBiYXNlXG4gICAgICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KSlcbiAgICAgIHx8IChiYXNlIDwgMExcbiAgICAgICAgICAmJiBiYXNlXG4gICAgICAgICAgICAgPCBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KSkpXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5sZXQgaW50NjNfcG93X29uX2ludDY0IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgYWJzIGJhc2UgPiAxTFxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IGFicyBiYXNlXG4gICAgICAgICA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjNfb25faW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgIClcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50NjRfcG93IGJhc2UgZXhwb25lbnRcbjs7XG5cbm1vZHVsZSB0eXBlIE1ha2VfYXJnID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgRmxvYXRhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggfi0gKSA6IHQgLT4gdFxuXG4gIGluY2x1ZGUgQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIG9mX2ludF9leG4gOiBpbnQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoWCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBvcGVuIFhcblxuICBsZXQgKCAlICkgeCB5ID1cbiAgICBpZiB5IDw9IHplcm9cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSBYLnJlbSB4IHkgaW5cbiAgICBpZiBydmFsIDwgemVybyB0aGVuIHJ2YWwgKyB5IGVsc2UgcnZhbFxuICA7O1xuXG4gIGxldCBvbmUgPSBvZl9pbnRfZXhuIDFcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgLyUlICVzIGluIGNvcmVfaW50Lm1sOiBkaXZpc29yIHNob3VsZCBiZSBwb3NpdGl2ZVwiXG4gICAgICAgICh0b19zdHJpbmcgeClcbiAgICAgICAgKHRvX3N0cmluZyB5KVxuICAgICAgICAoKTtcbiAgICBpZiB4IDwgemVybyB0aGVuICgoeCArIG9uZSkgLyB5KSAtIG9uZSBlbHNlIHggLyB5XG4gIDs7XG5cbiAgKCoqIGZsb2F0IGRpdmlzaW9uIG9mIGludGVnZXJzICopXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgbGV0IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9IGkgLSAoaSAlIG1vZHVsdXMpXG5cbiAgbGV0IHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGlmIHJlbWFpbmRlciA9IHplcm8gdGhlbiBpIGVsc2UgaSArIG1vZHVsdXMgLSByZW1haW5kZXJcbiAgOztcblxuICBsZXQgcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mID1cbiAgICBpZiBpID0gemVyb1xuICAgIHRoZW4gemVyb1xuICAgIGVsc2UgaWYgaSA+IHplcm9cbiAgICB0aGVuIHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICBlbHNlIHJvdW5kX3VwIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5cbiAgbGV0IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2Y6bW9kdWx1cyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IGkgJSBtb2R1bHVzIGluXG4gICAgbGV0IG1vZHVsdXNfbWludXNfcmVtYWluZGVyID0gbW9kdWx1cyAtIHJlbWFpbmRlciBpblxuICAgIGlmIG1vZHVsdXNfbWludXNfcmVtYWluZGVyIDw9IHJlbWFpbmRlclxuICAgIHRoZW4gaSArIG1vZHVsdXNfbWludXNfcmVtYWluZGVyXG4gICAgZWxzZSBpIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBVcCAtPiByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGludF9wb3cgPSBpbnRfcG93XG4gIGxldCBpbnQ2NF9wb3cgPSBpbnQ2NF9wb3dcbiAgbGV0IGludDYzX3Bvd19vbl9pbnQ2NCA9IGludDYzX3Bvd19vbl9pbnQ2NFxuXG4gIG1vZHVsZSBQb3dfb3ZlcmZsb3dfYm91bmRzID0gUG93X292ZXJmbG93X2JvdW5kc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCogQyBzdHViIGZvciBpbnQgcG9wY291bnQgdG8gdXNlIHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbmV4dGVybmFsIGludF9wb3Bjb3VudCA6IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50XCIgW0BAbm9hbGxvY11cblxuKCogVG8gbWFpbnRhaW4gamF2YXNjcmlwdCBjb21wYXRpYmlsaXR5IGFuZCBlbmFibGUgdW5ib3hpbmcsIHdlIGltcGxlbWVudCBwb3Bjb3VudCBpblxuICAgT0NhbWwgcmF0aGVyIHRoYW4gdXNlIEMgc3R1YnMuIEltcGxlbWVudGF0aW9uIGFkYXB0ZWQgZnJvbTpcbiAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbW1pbmdfd2VpZ2h0I0VmZmljaWVudF9pbXBsZW1lbnRhdGlvbiAqKVxubGV0IGludDY0X3BvcGNvdW50ID1cbiAgbGV0IG9wZW4gU3RkbGliLkludDY0IGluXG4gIGxldCAoICsgKSA9IGFkZCBpblxuICBsZXQgKCAtICkgPSBzdWIgaW5cbiAgbGV0ICggKiApID0gbXVsIGluXG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbCBpblxuICBsZXQgKCBsYW5kICkgPSBsb2dhbmQgaW5cbiAgbGV0IG0xID0gMHg1NTU1NTU1NTU1NTU1NTU1TCBpblxuICAoKiAwYjAxMDEwMTAxLi4uICopXG4gIGxldCBtMiA9IDB4MzMzMzMzMzMzMzMzMzMzM0wgaW5cbiAgKCogMGIwMDExMDAxMS4uLiAqKVxuICBsZXQgbTQgPSAweDBmMGYwZjBmMGYwZjBmMGZMIGluXG4gICgqIDBiMDAwMDExMTEuLi4gKilcbiAgbGV0IGgwMSA9IDB4MDEwMTAxMDEwMTAxMDEwMUwgaW5cbiAgKCogMSBiaXQgc2V0IHBlciBieXRlICopXG4gIGZ1biBbQGlubGluZV0geCAtPlxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBwYWlyIG9mIGJpdHMgKilcbiAgICBsZXQgeCA9IHggLSAoKHggbHNyIDEpIGxhbmQgbTEpIGluXG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IDQgYml0cyAqKVxuICAgIGxldCB4ID0gKHggbGFuZCBtMikgKyAoKHggbHNyIDIpIGxhbmQgbTIpIGluXG4gICAgKCogZ2F0aGVyIHRoZSBiaXQgY291bnQgZm9yIGV2ZXJ5IGJ5dGUgKilcbiAgICBsZXQgeCA9ICh4ICsgKHggbHNyIDQpKSBsYW5kIG00IGluXG4gICAgKCogc3VtIHRoZSBiaXQgY291bnRzIGluIHRoZSB0b3AgYnl0ZSBhbmQgc2hpZnQgaXQgZG93biAqKVxuICAgIHRvX2ludCAoKHggKiBoMDEpIGxzciA1Nilcbjs7XG5cbmxldCBpbnQzMl9wb3Bjb3VudCA9XG4gICgqIE9uIDY0LWJpdCBzeXN0ZW1zLCB0aGlzIGlzIGZhc3RlciB0aGFuIGltcGxlbWVudGluZyB1c2luZyBbaW50MzJdIGFyaXRobWV0aWMuICopXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZMIGluXG4gIGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoU3RkbGliLkludDY0LmxvZ2FuZCAoU3RkbGliLkludDY0Lm9mX2ludDMyIHgpIG1hc2spXG47O1xuXG5sZXQgbmF0aXZlaW50X3BvcGNvdW50ID1cbiAgbWF0Y2ggU3RkbGliLk5hdGl2ZWludC5zaXplIHdpdGhcbiAgfCAzMiAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50MzJfcG9wY291bnQgKFN0ZGxpYi5OYXRpdmVpbnQudG9faW50MzIgeClcbiAgfCA2NCAtPiBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKFN0ZGxpYi5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTaWduMFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoU2lnbjApXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgdG9fc3RyaW5nX2h1bSA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFwibmVnYXRpdmVcIlxuICB8IFplcm8gLT4gXCJ6ZXJvXCJcbiAgfCBQb3MgLT4gXCJwb3NpdGl2ZVwiXG47O1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMS5cbiAgfCBaZXJvIC0+IDAuXG4gIHwgUG9zIC0+IDEuXG47O1xuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbjs7XG5cbmxldCAoICogKSB0IHQnID0gb2ZfaW50ICh0b19pbnQgdCAqIHRvX2ludCB0JylcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYXQgdGhlIGVuZCwgYWZ0ZXIgYW55XG4gICBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzb1xuICAgdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzXG4gICBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludF9pbnRmXG5pbmNsdWRlIEludDBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9pbnQgOiAodFtAb2NhbWwubG9jYWxdKSAtPiB0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50XG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9pbnQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gaW50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSB4IHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgeCB5XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgIHwgXyAtPiBQcmludGYuZmFpbHdpdGhmIFwiSW50Lm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuZW5kXG5cbmxldCBudW1fYml0cyA9IEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IHRvX2Zsb2F0ID0gU3RkbGliLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IFN0ZGxpYi5pbnRfb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gU3RkbGliLmludF9vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0IHplcm8gPSAwXG5sZXQgb25lID0gMVxubGV0IG1pbnVzX29uZSA9IC0xXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiV4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiV4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAoaW50MzJbQGxvY2FsX29wdF0pID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyX3RydW5jIDogKGludDMyW0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2ludDY0X3RydW5jIDogKGludDY0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX25hdGl2ZWludF90cnVuYyA6IChuYXRpdmVpbnRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVuYXRpdmVpbnRfdG9faW50XCJcblxubGV0IHByZWQgaSA9IGkgLSAxXG5sZXQgc3VjYyBpID0gaSArIDFcbmxldCB0b19pbnQgaSA9IGlcbmxldCB0b19pbnRfZXhuID0gdG9faW50XG5sZXQgb2ZfaW50IGkgPSBpXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IG1heF92YWx1ZSA9IFN0ZGxpYi5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gU3RkbGliLm1pbl9pbnRcbmxldCBtYXhfdmFsdWVfMzBfYml0cyA9IDB4M0ZGRl9GRkZGXG5sZXQgb2ZfaW50MzIgPSBDb252LmludDMyX3RvX2ludFxubGV0IG9mX2ludDMyX2V4biA9IENvbnYuaW50MzJfdG9faW50X2V4blxubGV0IHRvX2ludDMyID0gQ29udi5pbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252LmludF90b19pbnQzMl9leG5cbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgb2ZfaW50NjRfZXhuID0gQ29udi5pbnQ2NF90b19pbnRfZXhuXG5sZXQgdG9faW50NjQgPSBDb252LmludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnRfZXhuXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnRfdG9fbmF0aXZlaW50XG5sZXQgdG9fbmF0aXZlaW50X2V4biA9IHRvX25hdGl2ZWludFxubGV0IGFicyB4ID0gYWJzIHhcblxuKCogbm90ZSB0aGF0IHJlbSBpcyBub3Qgc2FtZSBhcyAlICopXG5sZXQgcmVtIGEgYiA9IGEgbW9kIGJcbmxldCBpbmNyID0gU3RkbGliLmluY3JcbmxldCBkZWNyID0gU3RkbGliLmRlY3JcbmxldCBzaGlmdF9yaWdodCBhIGIgPSBhIGFzciBiXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCBhIGIgPSBhIGxzciBiXG5sZXQgc2hpZnRfbGVmdCBhIGIgPSBhIGxzbCBiXG5sZXQgYml0X25vdCBhID0gbG5vdCBhXG5sZXQgYml0X29yIGEgYiA9IGEgbG9yIGJcbmxldCBiaXRfYW5kIGEgYiA9IGEgbGFuZCBiXG5sZXQgYml0X3hvciBhIGIgPSBhIGx4b3IgYlxubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50X3Bvd1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IC0gMSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCArIDFcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggLSAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kICh4IC0gMSkgPSAwXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogICgqIE5vdGUgdGhhdCB3ZSBwYXNzIHRoZSB0YWdnZWQgaW50IGhlcmUuIFNlZSBpbnRfbWF0aF9zdHVicy5jIGZvciBkZXRhaWxzIG9uIHdoeVxuICAgICAgICAgIHRoaXMgaXMgY29ycmVjdC4gKilcbiAgICBpbnRcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50W0B1bnRhZ2dlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2N0el91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIGlmIGkgPSAxIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChpIC0gMSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IHNpZ24gPSBTaWduLm9mX2ludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50X3BvcGNvdW50XG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWFkZGludFwiXG4gIGV4dGVybmFsICggLSApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlc3ViaW50XCJcbiAgZXh0ZXJuYWwgKCAqICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+IHQgPSBcIiVtdWxpbnRcIlxuICBleHRlcm5hbCAoIC8gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gdCA9IFwiJWRpdmludFwiXG4gIGV4dGVybmFsICggfi0gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbmVnaW50XCJcblxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiB0ID0gXCIlbmVnaW50XCJcblxuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIG1vZHVsZSBGID0gSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBGXG5cbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWJzd2FwMTZcIlxuXG4gICgqIFRoZXNlIGlubGluZWQgdmVyc2lvbnMgb2YgKCUpLCAoLyUpLCBhbmQgKC8vKSBwZXJmb3JtIGJldHRlciB0aGFuIHRoZWlyIGZ1bmN0b3JpemVkXG4gICAgIGNvdW50ZXJwYXJ0cyBpbiBbRl0gKHNlZSBiZW5jaG1hcmtzIGJlbG93KS5cblxuICAgICBUaGUgcmVhc29uIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBpbiBbSW50XSBidXQgbm90IGluIGFueSBvZiB0aGUgb3RoZXIgaW50ZWdlclxuICAgICBtb2R1bGVzIGlzIHRoYXQgdGhleSBleGlzdGVkIGluIFtJbnRdIGFuZCBbSW50XSBhbG9uZSBwcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mXG4gICAgIHRoZSBbSW50X21hdGguTWFrZV0gZnVuY3RvciwgYW5kIHdlIGRpZG4ndCB3YW50IHRvIGRlZ3JhZGUgdGhlaXIgcGVyZm9ybWFuY2UuXG5cbiAgICAgV2Ugd29uJ3QgcHJlLWVtcHRpdmVseSBkbyB0aGUgc2FtZSBmb3IgbmV3IGZ1bmN0aW9ucywgdW5sZXNzIHNvbWVvbmUgY2FyZXMsIG9uIGEgY2FzZVxuICAgICBieSBjYXNlIGZhc2hpb24uICAqKVxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSByZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuICBleHRlcm5hbCAoIGxvciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlb3JpbnRcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJXhvcmludFwiXG5cbiAgbGV0IGxub3QgPSBsbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKSA6IChpbnRbQGxvY2FsX29wdF0pIC0+IChpbnRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWxzbGludFwiXG4gIGV4dGVybmFsICggbHNyICkgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVsc3JpbnRcIlxuICBleHRlcm5hbCAoIGFzciApIDogKGludFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlYXNyaW50XCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludF0gYW5kIFtJbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgT19GID0gTy5GXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yXG4gICBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgVWNoYXIwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVjaGFyXCJcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBIYXNoLmZvbGRfaW50IHN0YXRlICh0b19pbnQgdClcbiAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgbGV0IHRvX3N0cmluZyB0ID0gUHJpbnRmLnNwcmludGYgXCJVKyUwNFhcIiAodG9faW50IHQpXG5cbiAgKCogRG8gbm90IGFjdHVhbGx5IGV4cG9ydCB0aGlzLiBTZWUgZGlzY3Vzc2lvbiBpbiB0aGUgLm1saSAqKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiVSslWFwiIChmdW4gaSAtPiBVY2hhcjAub2ZfaW50IGkpIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlVjaGFyLnRfb2Zfc2V4cDogYXRvbSBvZiB0aGUgZm9ybSBVK1hYWFggbmVlZGVkXCIgc2V4cClcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBpbnRfaXNfc2NhbGFyID0gaXNfdmFsaWRcblxubGV0IHN1Y2NfZXhuIGMgPVxuICB0cnkgVWNoYXIwLnN1Y2MgYyB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gZmFpbHdpdGhmIFwiVWNoYXIuc3VjY19leG46ICVzXCIgbXNnICgpXG47O1xuXG5sZXQgc3VjYyBjID1cbiAgdHJ5IFNvbWUgKFVjaGFyMC5zdWNjIGMpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuOztcblxubGV0IHByZWRfZXhuIGMgPVxuICB0cnkgVWNoYXIwLnByZWQgYyB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBtc2cgLT4gZmFpbHdpdGhmIFwiVWNoYXIucHJlZF9leG46ICVzXCIgbXNnICgpXG47O1xuXG5sZXQgcHJlZCBjID1cbiAgdHJ5IFNvbWUgKFVjaGFyMC5wcmVkIGMpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuOztcblxubGV0IG9mX3NjYWxhciBpID0gaWYgaW50X2lzX3NjYWxhciBpIHRoZW4gU29tZSAodW5zYWZlX29mX2ludCBpKSBlbHNlIE5vbmVcblxubGV0IG9mX3NjYWxhcl9leG4gaSA9XG4gIGlmIGludF9pc19zY2FsYXIgaVxuICB0aGVuIHVuc2FmZV9vZl9pbnQgaVxuICBlbHNlIGZhaWx3aXRoZiBcIlVjaGFyLm9mX2ludF9leG4gZ290IGEgaW52YWxpZCBVbmljb2RlIHNjYWxhciB2YWx1ZTogJTA0WFwiIGkgKClcbjs7XG5cbmxldCB0b19zY2FsYXIgdCA9IFVjaGFyMC50b19pbnQgdFxubGV0IHRvX2NoYXIgYyA9IGlmIGlzX2NoYXIgYyB0aGVuIFNvbWUgKHVuc2FmZV90b19jaGFyIGMpIGVsc2UgTm9uZVxuXG5sZXQgdG9fY2hhcl9leG4gYyA9XG4gIGlmIGlzX2NoYXIgY1xuICB0aGVuIHVuc2FmZV90b19jaGFyIGNcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci50b19jaGFyX2V4biBnb3QgYSBub24gbGF0aW4tMSBjaGFyYWN0ZXI6IFUrJTA0WFwiICh0b19pbnQgYykgKClcbjs7XG5cbmxldCB1dGY4X2J5dGVfbGVuZ3RoIHVjaGFyID1cbiAgbGV0IGNvZGVwb2ludCA9IHRvX3NjYWxhciB1Y2hhciBpblxuICBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4ODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwMFxuICB0aGVuIDJcbiAgZWxzZSBpZiBJbnQuKCA8ICkgY29kZXBvaW50IDB4MTAwMDBcbiAgdGhlbiAzXG4gIGVsc2UgNFxuOztcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFVjaGFyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdhKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90IDpcbiAgJ2EgJ2IuXG4gICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICgnYSwgJ2IpIHQgLT4gU2V4cGxpYjAuU2V4cC50XG4gID1cbiAgZnVuICh0eXBlIGFfXzAwM18gYl9fMDA0XylcbiAgICAgIDogICgoYV9fMDAzXyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wMDRfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAtPiAoYV9fMDAzXywgYl9fMDA0XykgdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIFQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVFwiXG47O1xuXG5bQEBAZW5kXVxuXG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBzeW0gKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChiLCBhKSB0ID0gVFxubGV0IHRyYW5zICh0eXBlIGEgYiBjKSAoVCA6IChhLCBiKSB0KSAoVCA6IChiLCBjKSB0KSA6IChhLCBjKSB0ID0gVFxubGV0IGNvbnYgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSAoYSA6IGEpIDogYiA9IGFcblxubW9kdWxlIExpZnQgKFggOiBzaWdcbiAgICB0eXBlICdhIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYSBiKSAoVCA6IChhLCBiKSB0KSA6IChhIFgudCwgYiBYLnQpIHQgPSBUXG5lbmRcblxubW9kdWxlIExpZnQyIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIpIHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGxpZnQgKHR5cGUgYTEgYjEgYTIgYjIpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KVxuICAgIDogKChhMSwgYTIpIFgudCwgKGIxLCBiMikgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGlmdDMgKFggOiBzaWdcbiAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyIGEzIGIzKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgKFQgOiAoYTMsIGIzKSB0KVxuICAgIDogKChhMSwgYTIsIGEzKSBYLnQsIChiMSwgYjIsIGIzKSBYLnQpIHRcbiAgICA9XG4gICAgVFxuICA7O1xuZW5kXG5cbmxldCBkZXR1cGxlMiAodHlwZSBhMSBhMiBiMSBiMikgKFQgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCkgOiAoYTEsIGIxKSB0ICogKGEyLCBiMikgdCA9XG4gIFQsIFRcbjs7XG5cbmxldCB0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExLCBiMSkgdCkgKFQgOiAoYTIsIGIyKSB0KSA6IChhMSAqIGEyLCBiMSAqIGIyKSB0ID0gVFxuXG5tb2R1bGUgdHlwZSBJbmplY3RpdmUgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIHN0cmlwIDogKCdhIHQsICdiIHQpIGVxdWFsIC0+ICgnYSwgJ2IpIGVxdWFsXG5lbmRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlMiA9IHNpZ1xuICB0eXBlICgnYTEsICdhMikgdFxuXG4gIHZhbCBzdHJpcCA6ICgoJ2ExLCAnYTIpIHQsICgnYjEsICdiMikgdCkgZXF1YWwgLT4gKCdhMSwgJ2IxKSBlcXVhbCAqICgnYTIsICdiMikgZXF1YWxcbmVuZFxuXG5tb2R1bGUgQ29tcG9zaXRpb25fcHJlc2VydmVzX2luamVjdGl2aXR5IChNMSA6IEluamVjdGl2ZSkgKE0yIDogSW5qZWN0aXZlKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBNMS50IE0yLnRcblxuICBsZXQgc3RyaXAgZSA9IE0xLnN0cmlwIChNMi5zdHJpcCBlKVxuZW5kXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBtb2R1bGUgVWlkID0gSW50XG5cbiAgbW9kdWxlIFdpdG5lc3MgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IC4uXG4gICAgICB0eXBlIHR5cGVfd2l0bmVzc19pbnQgPSBbIGB0eXBlX3dpdG5lc3Mgb2YgaW50IF0gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICAgIGxldCBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnQgPVxuICAgICAgICAoZnVuIChgdHlwZV93aXRuZXNzIHZfXzAwNV8pIC0+XG4gICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInR5cGVfd2l0bmVzc1wiOyBzZXhwX29mX2ludCB2X18wMDVfIF1cbiAgICAgICAgICAgOiB0eXBlX3dpdG5lc3NfaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIDs7XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIGxldCBzZXhwX29mX3QgX3NleHBfb2ZfYSB0ID1cbiAgICAgICAgYHR5cGVfd2l0bmVzc1xuICAgICAgICAgIChTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZFxuICAgICAgICAgICAgIChTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgdCkpXG4gICAgICAgIHw+IHNleHBfb2ZfdHlwZV93aXRuZXNzX2ludFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBfIEtleS50ICs9IEtleSA6IHQgS2V5LnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgbGV0IHNleHBfb2ZfdCAodHlwZSBhKSBzZXhwX29mX2EgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIE0uS2V5IHw+IEtleS5zZXhwX29mX3Qgc2V4cF9vZl9hXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgdCkgKCkgPVxuICAgICAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgICBlbmRcbiAgICAgIGluXG4gICAgICAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gdClcbiAgICA7O1xuXG4gICAgbGV0IHVpZCAodHlwZSBhKSAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgICAgU3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuaWQgKFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBNLktleSlcbiAgICA7O1xuXG4gICAgKCogV2Ugd2FudCBhIGNvbnN0YW50IGFsbG9jYXRlZCBvbmNlIHRoYXQgW3NhbWVdIGNhbiByZXR1cm4gd2hlbmV2ZXIgaXQgZ2V0cyB0aGUgc2FtZVxuICAgICAgIHdpdG5lc3Nlcy4gIElmIHdlIHdyaXRlIHRoZSBjb25zdGFudCBpbnNpZGUgdGhlIGJvZHkgb2YgW3NhbWVdLCB0aGUgbmF0aXZlLWNvZGVcbiAgICAgICBjb21waWxlciB3aWxsIGRvIHRoZSByaWdodCB0aGluZyBhbmQgbGlmdCBpdCBvdXQuICBCdXQgZm9yIGNsYXJpdHkgYW5kIHJvYnVzdG5lc3MsXG4gICAgICAgd2UgZG8gaXQgb3Vyc2VsdmVzLiAqKVxuICAgIGxldCBzb21lX3QgPSBTb21lIFRcblxuICAgIGxldCBzYW1lICh0eXBlIGEgYikgKGEgOiBhIHQpIChiIDogYiB0KSA6IChhLCBiKSBlcXVhbCBvcHRpb24gPVxuICAgICAgbGV0IG1vZHVsZSBBID0gKHZhbCBhIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEIgPSAodmFsIGIgOiBTIHdpdGggdHlwZSB0ID0gYikgaW5cbiAgICAgIG1hdGNoIEEuS2V5IHdpdGhcbiAgICAgIHwgQi5LZXkgLT4gc29tZV90XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdpdG5lc3MgOiAnYSBXaXRuZXNzLnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IHRvX3NleHAgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCBfIHsgd2l0bmVzczsgbmFtZTsgdG9fc2V4cCB9IDogU2V4cC50ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiBBdG9tIG5hbWVcbiAgICBlbHNlXG4gICAgICBMaXN0XG4gICAgICAgIFsgTGlzdCBbIEF0b20gXCJuYW1lXCI7IEF0b20gbmFtZSBdXG4gICAgICAgIDsgTGlzdCBbIEF0b20gXCJ3aXRuZXNzXCI7IHdpdG5lc3MgfD4gV2l0bmVzcy5zZXhwX29mX3QgdG9fc2V4cCBdXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc2V4cCB0ID0gdC50b19zZXhwXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IGNyZWF0ZSB+bmFtZSB0b19zZXhwID0geyB3aXRuZXNzID0gV2l0bmVzcy5jcmVhdGUgKCk7IG5hbWU7IHRvX3NleHAgfVxuICBsZXQgdWlkIHQgPSBXaXRuZXNzLnVpZCB0LndpdG5lc3NcbiAgbGV0IGhhc2ggdCA9IHVpZCB0XG4gIGxldCBoYXNoX2ZvbGRfdCBzIHQgPSBoYXNoX2ZvbGRfaW50IHMgKHVpZCB0KVxuICBsZXQgc2FtZV93aXRuZXNzIHQxIHQyID0gV2l0bmVzcy5zYW1lIHQxLndpdG5lc3MgdDIud2l0bmVzc1xuICBsZXQgc2FtZSB0MSB0MiA9IE9wdGlvbi5pc19zb21lIChzYW1lX3dpdG5lc3MgdDEgdDIpXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gdDEgdDIgPVxuICAgIG1hdGNoIHNhbWVfd2l0bmVzcyB0MSB0MiB3aXRoXG4gICAgfCBTb21lIHcgLT4gd1xuICAgIHwgTm9uZSAtPlxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGdvdCBkaWZmZXJlbnQgaWRzXCJcbiAgICAgICAgICAgWyAoIFwiXCJcbiAgICAgICAgICAgICAsIHNleHBfb2ZfcGFpciAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAodDEsIHQyKVxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgXSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBbJ2EgQ2hlYXBfb3B0aW9uLnRdIGlzIGxpa2UgWydhIG9wdGlvbl0sIGJ1dCBpdCBkb2Vzbid0IGJveCBbc29tZSBfXSB2YWx1ZXMuXG5cbiAgICBUaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdGhhdCBhcmUgdW5zYWZlIGFib3V0IGl0OlxuXG4gICAgLSBbZmxvYXQgdCBhcnJheV0gKG9yIGFueSBhcnJheS1iYWNrZWQgY29udGFpbmVyKSBpcyBub3QgbWVtb3J5LXNhZmVcbiAgICAgIGJlY2F1c2UgZmxvYXQgYXJyYXkgb3B0aW1pemF0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHVuYm94ZWQgb3B0aW9uXG4gICAgICBvcHRpbWl6YXRpb24uIFlvdSBoYXZlIHRvIHVzZSBbVW5pZm9ybV9hcnJheS50XSBpbnN0ZWFkIG9mIFthcnJheV0uXG5cbiAgICAtIE5lc3RlZCBvcHRpb25zIChbJ2EgdCB0XSkgZG9uJ3Qgd29yay4gVGhleSBhcmUgYmVsaWV2ZWQgdG8gYmVcbiAgICAgIG1lbW9yeS1zYWZlLCBidXQgbm90IHBhcmFtZXRyaWMuXG5cbiAgICAtIEEgcmVjb3JkIHdpdGggW2Zsb2F0IHRdcyBpbiBpdCBzaG91bGQgYmUgc2FmZSwgYnV0IGl0J3Mgb25seSBbdF0gYmVpbmdcbiAgICAgIGFic3RyYWN0IHRoYXQgZ2l2ZXMgeW91IHNhZmV0eS4gSWYgdGhlIGNvbXBpbGVyIHdhcyBzbWFydCBlbm91Z2ggdG8gcGVla1xuICAgICAgdGhyb3VnaCB0aGUgbW9kdWxlIHNpZ25hdHVyZSB0aGVuIGl0IGNvdWxkIGRlY2lkZSB0byBjb25zdHJ1Y3QgYSBmbG9hdFxuICAgICAgYXJyYXkgaW5zdGVhZC4gKilcbm1vZHVsZSBDaGVhcF9vcHRpb24gPSBzdHJ1Y3RcbiAgKCogVGhpcyBpcyB0YWtlbiBmcm9tIGNvcmUuIFJhdGhlciB0aGFuIGV4cG9zZSBpdCBpbiB0aGUgcHVibGljIGludGVyZmFjZSBvZiBiYXNlLCBqdXN0XG4gICAgIGtlZXAgYSBjb3B5IGFyb3VuZCBoZXJlLiAqKVxuICBsZXQgcGh5c19zYW1lICh0eXBlIGEgYikgKGEgOiBhKSAoYiA6IGIpID0gcGh5c19lcXVhbCBhIChTdGRsaWIuT2JqLm1hZ2ljIGIgOiBhKVxuXG4gIG1vZHVsZSBUMCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5vbmUgOiBfIHRcbiAgICB2YWwgc29tZSA6ICdhIC0+ICdhIHRcbiAgICB2YWwgaXNfbm9uZSA6IF8gdCAtPiBib29sXG4gICAgdmFsIGlzX3NvbWUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+ICdhXG4gICAgdmFsIHZhbHVlX3Vuc2FmZSA6ICdhIHQgLT4gJ2FcbiAgICB2YWwgaXRlcl9zb21lIDogJ2EgdCAtPiBmOigoJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0XG5cbiAgICAoKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICAgICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgICAgICBJdCB3b3VsZCBiZSBzaW1wbGVyIHRvIHVzZSB0aGlzIHZhbHVlIGFzIFtub25lXSwgYnV0IHdlIHVzZSBhbiBpbW1lZGlhdGUgaW5zdGVhZFxuICAgICAgIGJlY2F1c2UgaXQgbGV0cyB1cyBhdm9pZCBjYW1sX21vZGlmeSB3aGVuIHNldHRpbmcgdG8gW25vbmVdLCBtYWtpbmcgY2VydGFpblxuICAgICAgIGJlbmNobWFya3Mgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKGUuZy4gLi4vYmVuY2gvYXJyYXlfcXVldWUuZXhlKS5cblxuICAgICAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE1vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyIHBsYWNlIHdoZXJlIHdlIHdhbnRcbiAgICAgICBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxuICAgIGxldCBub25lX3N1YnN0aXR1dGUgOiBfIHQgPVxuICAgICAgU3RkbGliLk9iai5vYmogKFN0ZGxpYi5PYmoubmV3X2Jsb2NrIFN0ZGxpYi5PYmouYWJzdHJhY3RfdGFnIDEpXG4gICAgOztcblxuICAgIGxldCBub25lIDogXyB0ID1cbiAgICAgICgqIFRoZSBudW1iZXIgd2FzIHByb2R1Y2VkIGJ5XG4gICAgICAgICBbPCAvZGV2L3VyYW5kb20gdHIgLWMgLWQgJzEyMzQ1Njc4OTBhYmNkZWYnIHwgaGVhZCAtYyAxNl0uXG5cbiAgICAgICAgIFRoZSBpZGVhIGlzIHRoYXQgYSByYW5kb20gbnVtYmVyIHdpbGwgaGF2ZSBsb3dlciBwcm9iYWJpbGl0eSB0byBjb2xsaWRlIHdpdGhcbiAgICAgICAgIGFueXRoaW5nIHRoYW4gYW55IG51bWJlciB3ZSBjYW4gY2hvb3NlIG91cnNlbHZlcy5cblxuICAgICAgICAgV2UgYXJlIHVzaW5nIGEgcG9seW1vcnBoaWMgdmFyaWFudCBpbnN0ZWFkIG9mIGFuIGludGVnZXIgY29uc3RhbnQgYmVjYXVzZSB0aGVyZVxuICAgICAgICAgaXMgYSBjb21waWxlciBidWcgd2hlcmUgaXQgd3JvbmdseSBhc3N1bWVzIHRoYXQgdGhlIHJlc3VsdCBvZiBbaWYgXyB0aGVuIGMgZWxzZVxuICAgICAgICAgeV0gaXMgbm90IGEgcG9pbnRlciBpZiBbY10gaXMgYW4gaW50ZWdlciBjb21waWxlLXRpbWUgY29uc3RhbnQuICBUaGlzIGlzIGJlaW5nXG4gICAgICAgICBmaXhlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvcHVsbC81NTUuICBUaGUgXCJtZW1vcnkgY29ycnVwdGlvblwiIHRlc3RcbiAgICAgICAgIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgaXNzdWUuICAqKVxuICAgICAgU3RkbGliLk9iai5tYWdpYyBgeDZlOGVlMzQ3OGUxZDc0NDlcbiAgICA7O1xuXG4gICAgbGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgeCBub25lXG4gICAgbGV0IGlzX3NvbWUgeCA9IG5vdCAocGh5c19lcXVhbCB4IG5vbmUpXG5cbiAgICBsZXQgc29tZSAodHlwZSBhKSAoeCA6IGEpIDogYSB0ID1cbiAgICAgIGlmIHBoeXNfc2FtZSB4IG5vbmUgdGhlbiBub25lX3N1YnN0aXR1dGUgZWxzZSBTdGRsaWIuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX3Vuc2FmZSAodHlwZSBhKSAoeCA6IGEgdCkgOiBhID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgeCBub25lX3N1YnN0aXR1dGUgdGhlbiBTdGRsaWIuT2JqLm1hZ2ljIG5vbmUgZWxzZSBTdGRsaWIuT2JqLm1hZ2ljIHhcbiAgICA7O1xuXG4gICAgbGV0IHZhbHVlX2V4biB4ID1cbiAgICAgIGlmIGlzX3NvbWUgeFxuICAgICAgdGhlbiB2YWx1ZV91bnNhZmUgeFxuICAgICAgZWxzZSBmYWlsd2l0aCBcIk9wdGlvbl9hcnJheS5nZXRfc29tZV9leG46IHRoZSBlbGVtZW50IGlzIFtOb25lXVwiXG4gICAgOztcblxuICAgIGxldCBpdGVyX3NvbWUgdCB+ZiA9IGlmIGlzX3NvbWUgdCB0aGVuIGYgKHZhbHVlX3Vuc2FmZSB0KVxuICBlbmRcblxuICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQwXG5cbiAgICBsZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICB8IFNvbWUgeCAtPiBzb21lIHhcbiAgICA7O1xuXG4gICAgbGV0W0BpbmxpbmVdIHRvX29wdGlvbiB4ID0gaWYgaXNfc29tZSB4IHRoZW4gU29tZSAodmFsdWVfdW5zYWZlIHgpIGVsc2UgTm9uZVxuICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX29wdGlvblxuICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX29wdGlvblxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgICAgIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICA9XG4gICAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChPcHRpb24udF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbiAgICA7O1xuICBlbmRcblxuICBpbmNsdWRlIFQxXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUxIChPcHRpb24pIChUMSlcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBDaGVhcF9vcHRpb24udCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IHRfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgdCA9XG4gIGZ1biBfb2ZfYV9fMDAxXyB4X18wMDNfIC0+XG4gIFVuaWZvcm1fYXJyYXkudF9vZl9zZXhwIChDaGVhcF9vcHRpb24udF9vZl9zZXhwIF9vZl9hX18wMDFfKSB4X18wMDNfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMDRfIHhfXzAwNV8gLT5cbiAgVW5pZm9ybV9hcnJheS5zZXhwX29mX3QgKENoZWFwX29wdGlvbi5zZXhwX29mX3QgX29mX2FfXzAwNF8pIHhfXzAwNV9cbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT5cbiAgVW5pZm9ybV9hcnJheS50X3NleHBfZ3JhbW1hciAoQ2hlYXBfb3B0aW9uLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXIpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZW1wdHkgPSBVbmlmb3JtX2FycmF5LmVtcHR5XG5sZXQgY3JlYXRlIH5sZW4gPSBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuIENoZWFwX29wdGlvbi5ub25lXG5sZXQgaW5pdCBuIH5mID0gVW5pZm9ybV9hcnJheS5pbml0IG4gfmY6KGZ1biBpIC0+IENoZWFwX29wdGlvbi5vZl9vcHRpb24gKGYgaSkpIFtAbm9udGFpbF1cbmxldCBpbml0X3NvbWUgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24uc29tZSAoZiBpKSkgW0Bub250YWlsXVxubGV0IGxlbmd0aCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoXG5sZXRbQGlubGluZV0gZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBnZXRfc29tZV9leG4gdCBpID0gQ2hlYXBfb3B0aW9uLnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IGlzX25vbmUgdCBpID0gQ2hlYXBfb3B0aW9uLmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19zb21lIHQgaSA9IENoZWFwX29wdGlvbi5pc19zb21lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIHgpXG5sZXQgc2V0X3NvbWUgdCBpIHggPSBVbmlmb3JtX2FycmF5LnNldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgc2V0X25vbmUgdCBpID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIENoZWFwX29wdGlvbi5ub25lXG5sZXQgc3dhcCB0IGkgaiA9IFVuaWZvcm1fYXJyYXkuc3dhcCB0IGkgalxubGV0IHVuc2FmZV9nZXQgdCBpID0gQ2hlYXBfb3B0aW9uLnRvX29wdGlvbiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5cbmxldCB1bnNhZmVfZ2V0X3NvbWVfYXNzdW1pbmdfc29tZSB0IGkgPVxuICBDaGVhcF9vcHRpb24udmFsdWVfdW5zYWZlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuOztcblxubGV0IHVuc2FmZV9pc19zb21lIHQgaSA9IENoZWFwX29wdGlvbi5pc19zb21lIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIHggPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCBpIChDaGVhcF9vcHRpb24ub2Zfb3B0aW9uIHgpXG5sZXQgdW5zYWZlX3NldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLnNvbWUgeClcbmxldCB1bnNhZmVfc2V0X25vbmUgdCBpID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxuXG5sZXQgY2xlYXIgdCA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICB1bnNhZmVfc2V0X25vbmUgdCBpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyaSBpbnB1dCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggaW5wdXQgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGlucHV0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBpdGVyIGlucHV0IH5mID0gaXRlcmkgaW5wdXQgfmY6KGZ1biAoXyA6IGludCkgeCAtPiBmIHgpIFtAbm9udGFpbF1cblxubGV0IGZvbGRpIGlucHV0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGl0ZXJpIGlucHV0IH5mOihmdW4gaSBlbGVtIC0+IGFjYyA6PSBmIGkgIWFjYyBlbGVtKTtcbiAgIWFjY1xuOztcblxubGV0IGZvbGQgaW5wdXQgfmluaXQgfmYgPSBmb2xkaSBpbnB1dCB+aW5pdCB+ZjooZnVuIChfIDogaW50KSBhY2MgeCAtPiBmIGFjYyB4KSBbQG5vbnRhaWxdXG5cbmluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgXykgdCA9ICdhIHRcbiAgICB0eXBlICdhIGVsdCA9ICdhIG9wdGlvblxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGZvbGRpID0gYEN1c3RvbSBmb2xkaVxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxuXG5sZXQgbWFwaSBpbnB1dCB+ZiA9XG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbjoobGVuZ3RoIGlucHV0KSBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiB1bnNhZmVfc2V0IG91dHB1dCBpIChmIGkgZWxlbSkpO1xuICBvdXRwdXRcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIGVsZW0gLT4gZiBlbGVtKSBbQG5vbnRhaWxdXG5cbmxldCBtYXBfc29tZSBpbnB1dCB+ZiA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXQgaW5cbiAgbGV0IG91dHB1dCA9IGNyZWF0ZSB+bGVuIGluXG4gIGxldCAoKSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBvcHQgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgaW5wdXQgaSBpblxuICAgICAgQ2hlYXBfb3B0aW9uLml0ZXJfc29tZSBvcHQgfmY6KGZ1biB4IC0+IHVuc2FmZV9zZXRfc29tZSBvdXRwdXQgaSAoZiB4KSlcbiAgICBkb25lXG4gIGluXG4gIG91dHB1dFxuOztcblxubGV0IG9mX2FycmF5IGFycmF5ID0gaW5pdCAoQXJyYXkubGVuZ3RoIGFycmF5KSB+ZjooZnVuIGkgLT4gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpKVxuXG5sZXQgb2ZfYXJyYXlfc29tZSBhcnJheSA9XG4gIGluaXRfc29tZSAoQXJyYXkubGVuZ3RoIGFycmF5KSB+ZjooZnVuIGkgLT4gQXJyYXkudW5zYWZlX2dldCBhcnJheSBpKVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTFfZ2VuZXJpYyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgdW5zYWZlX2JsaXQgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgPSBVbmlmb3JtX2FycmF5LmNvcHlcblxubW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBVbnNhZmVfY2hlYXBfb3B0aW9uID0gQ2hlYXBfb3B0aW9uXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFja19pbnRmXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHNpbWlsYXIgdG8gW0RlcXVlXSBpbiB0aGF0IGl0IHVzZXMgYW4gYXJyYXkgb2YgWydhXSBhbmRcbiAgIGEgbXV0YWJsZSBbaW50XSB0byBpbmRpY2F0ZSB3aGF0IGluIHRoZSBhcnJheSBpcyB1c2VkLiAgV2UgY2hvb3NlIHRvIGltcGxlbWVudCBbU3RhY2tdXG4gICBkaXJlY3RseSByYXRoZXIgdGhhbiBvbiB0b3Agb2YgW0RlcXVlXSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIEUuZy4gYSBzaW1wbGVcbiAgIG1pY3JvYmVuY2htYXJrIHNob3dzIHRoYXQgcHVzaC9wb3AgaXMgYWJvdXQgMjAlIGZhc3Rlci4gKilcbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxXyB7IGxlbmd0aCA9IGxlbmd0aF9fMDAzXzsgZWx0cyA9IGVsdHNfXzAwNV8gfSAtPlxuICBsZXQgYm5kc19fMDAyXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgbGV0IGJuZHNfXzAwMl8gPVxuICAgIGxldCBhcmdfXzAwNl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAwNV8gaW5cbiAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWx0c1wiOyBhcmdfXzAwNl8gXSA6OiBibmRzX18wMDJfXG4gICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDAzXyBpblxuICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMDRfIF0gOjogYm5kc19fMDAyX1xuICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgaW5cbiAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwMl9cbjs7XG5cbltAQEBlbmRdXG5cbmxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbmxldCBzZXhwX29mX3QgPSBgUmVib3VuZF9sYXRlclxubGV0IF8gPSBzZXhwX29mX3RcbmxldCBjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSAoeyBsZW5ndGg7IGVsdHMgfSBhcyB0KSA6IHVuaXQgPVxuICB0cnlcbiAgICBhc3NlcnQgKDAgPD0gbGVuZ3RoICYmIGxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgICBpbnZhcmlhbnRfYSAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGkpXG4gICAgZG9uZTtcbiAgICAoKiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdW51c2VkIGVsZW1lbnRzIGFyZSB1bnNldCB0byBhdm9pZCBhIHNwYWNlXG4gICAgICAgbGVhay4gKilcbiAgICBmb3IgaSA9IGxlbmd0aCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMgLSAxIGRvXG4gICAgICBhc3NlcnQgKG5vdCAoT3B0aW9uX2FycmF5LmlzX3NvbWUgZWx0cyBpKSlcbiAgICBkb25lXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlN0YWNrLmludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcImV4blwiLCBleG4gfD4gRXhuLnNleHBfb2ZfdDsgXCJzdGFja1wiLCB0IHw+IHNleHBfb2ZfdF9pbnRlcm5hbCBzZXhwX29mX29wYXF1ZSBdKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHsgbGVuZ3RoID0gMDsgZWx0cyA9IE9wdGlvbl9hcnJheS5lbXB0eSB9XG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuKCogVGhlIG9yZGVyIGluIHdoaWNoIGVsZW1lbnRzIGFyZSB2aXNpdGVkIGhhcyBiZWVuIGNob3NlbiBzbyBhcyB0byBiZSBiYWNrd2FyZHNcbiAgIGNvbXBhdGlibGUgd2l0aCBbU3RkbGliLlN0YWNrXSAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgIXIgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmU7XG4gICFyXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSB0Lmxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICBmIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKVxuICBkb25lXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWVtID0gQy5tZW1cbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCBvZl9saXN0ICh0eXBlIGEpIChsIDogYSBsaXN0KSA9XG4gIGlmIExpc3QuaXNfZW1wdHkgbFxuICB0aGVuIGNyZWF0ZSAoKVxuICBlbHNlIChcbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBlbHRzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOigyICogbGVuZ3RoKSBpblxuICAgIGxldCByID0gcmVmIGwgaW5cbiAgICBmb3IgaSA9IGxlbmd0aCAtIDEgZG93bnRvIDAgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IGEgOjogbCAtPlxuICAgICAgICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgZWx0cyBpIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgeyBsZW5ndGg7IGVsdHMgfSlcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgcmVzaXplIHQgc2l6ZSA9XG4gIGxldCBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46c2l6ZSBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+c3JjOnQuZWx0cyB+ZHN0OmFyciB+c3JjX3BvczowIH5kc3RfcG9zOjAgfmxlbjp0Lmxlbmd0aDtcbiAgdC5lbHRzIDwtIGFyclxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IG5ld19jYXBhY2l0eSA9XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBtYXggbmV3X2NhcGFjaXR5IChsZW5ndGggdCkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHQgdGhlbiByZXNpemUgdCBuZXdfY2FwYWNpdHlcbjs7XG5cbmxldCBwdXNoIHQgYSA9XG4gIGlmIHQubGVuZ3RoID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHMgdGhlbiByZXNpemUgdCAoMiAqICh0Lmxlbmd0aCArIDEpKTtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuZWx0cyB0Lmxlbmd0aCBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBwb3Bfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gdC5sZW5ndGggLSAxIGluXG4gIGxldCByZXN1bHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaTtcbiAgdC5sZW5ndGggPC0gaTtcbiAgcmVzdWx0XG47O1xuXG5sZXQgcG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sucG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCBwb3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX25vbmVtcHR5IHQpXG5sZXQgcG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHBvcF9lcnJvciBlbHNlIHBvcF9ub25lbXB0eSB0XG5sZXQgdG9wX25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyAodC5sZW5ndGggLSAxKVxubGV0IHRvcF9lcnJvciA9IEVycm9yLm9mX3N0cmluZyBcIlN0YWNrLnRvcCBvZiBlbXB0eSBzdGFja1wiXG5sZXQgdG9wIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9ub25lbXB0eSB0KVxubGV0IHRvcF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBFcnJvci5yYWlzZSB0b3BfZXJyb3IgZWxzZSB0b3Bfbm9uZW1wdHkgdFxubGV0IGNvcHkgeyBsZW5ndGg7IGVsdHMgfSA9IHsgbGVuZ3RoOyBlbHRzID0gT3B0aW9uX2FycmF5LmNvcHkgZWx0cyB9XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmVsdHMgaVxuICAgIGRvbmU7XG4gICAgdC5sZW5ndGggPC0gMClcbjs7XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGlmIHQubGVuZ3RoID4gMFxuICAgIHRoZW4gKFxuICAgICAgZiAocG9wX25vbmVtcHR5IHQpO1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBtYXRjaCBmIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZWx0cyBpKSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gcHVzaCB0X3Jlc3VsdCB4XG4gIGRvbmU7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgIGxldCB4ID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSBpblxuICAgIGlmIGYgeCB0aGVuIHB1c2ggdF9yZXN1bHQgeFxuICBkb25lO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgd3JpdGVfaW5kZXggPSByZWYgMCBpblxuICBFeG4ucHJvdGVjdFxuICAgIH5mOihmdW4gKCkgLT5cbiAgICAgIGZvciByZWFkX2luZGV4ID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgICAgbGV0IHggPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdC5lbHRzIHJlYWRfaW5kZXggaW5cbiAgICAgICAgaWYgZiB4XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGlmICF3cml0ZV9pbmRleCA8IHJlYWRfaW5kZXhcbiAgICAgICAgICB0aGVuIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzICF3cml0ZV9pbmRleCB4O1xuICAgICAgICAgIGluY3Igd3JpdGVfaW5kZXgpXG4gICAgICBkb25lKVxuICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgIGZvciBpID0gIXdyaXRlX2luZGV4IHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHQuZWx0cyBpXG4gICAgICBkb25lO1xuICAgICAgdC5sZW5ndGggPC0gIXdyaXRlX2luZGV4KSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBwdXNoIHQgeDtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGlzIGxpZnRlZCBvdXQgb2YgW01dIGJlY2F1c2UgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uMF0gZXhwb3J0cyBbU3RyaW5nMF1cbiAgIGFzIFtTdHJpbmddLCB3aGljaCBkb2VzIG5vdCBleHBvcnQgYSBoYXNoIGZ1bmN0aW9uLiAqKVxubGV0IGhhc2hfb3ZlcnJpZGUgeyBTdGRsaWIuTGV4aW5nLnBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gPVxuICBTdHJpbmcuaGFzaCBwb3NfZm5hbWVcbiAgbHhvciBJbnQuaGFzaCBwb3NfbG51bVxuICBseG9yIEludC5oYXNoIHBvc19ib2xcbiAgbHhvciBJbnQuaGFzaCBwb3NfY251bVxuOztcblxubW9kdWxlIE0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTb3VyY2VfY29kZV9wb3NpdGlvbjBcblxuICBsZXQgaGFzaCA9IGhhc2hfb3ZlcnJpZGVcbmVuZFxuXG5pbmNsdWRlIE1cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKE0pXG5cbmxldCBvZl9wb3MgKHBvc19mbmFtZSwgcG9zX2xudW0sIHBvc19jbnVtLCBfKSA9XG4gIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2NudW07IHBvc19ib2wgPSAwIH1cbjs7XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ1xuICAgIHwgWmVyb1xuICAgIHwgUG9zXG4gICAgfCBOYW5cbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDNfID0gXCJzaWduX29yX25hbi5tbC5ULnRcIiBpblxuICAgICBmdW5jdGlvblxuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIC0+IE5lZ1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIC0+IFBvc1xuICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJuYW5cIiB8IFwiTmFuXCIpIC0+IE5hblxuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBzZXhwX18wMDJfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE5lZyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOZWdcIlxuICAgICAgfCBaZXJvIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlplcm9cIlxuICAgICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIk5lZ1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJaZXJvXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOYW5cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgKGZ1biBoc3YgYXJnIC0+XG4gICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICB8IE5lZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgICAgfCBQb3MgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgfCBOYW4gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAzXG4gICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gIDs7XG5cbiAgbGV0IChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jIGFyZyA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgICBoYXNoX2ZvbGRfdCBoc3YgYXJnKVxuICAgIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zOyBOYW4gXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuXG4gIGxldCBvZl9zdHJpbmcgcyA9IHRfb2Zfc2V4cCAoc2V4cF9vZl9zdHJpbmcgcylcbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuU2lnbl9vcl9uYW5cIlxuZW5kXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogVC50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogVC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IFQudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IFQudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBULnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IFQudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBULnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogVC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKFQpXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgb2Zfc2lnbiA9IGZ1bmN0aW9uXG4gIHwgU2lnbi5OZWcgLT4gTmVnXG4gIHwgU2lnbi5aZXJvIC0+IFplcm9cbiAgfCBTaWduLlBvcyAtPiBQb3Ncbjs7XG5cbmxldCB0b19zaWduX2V4biA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFNpZ24uTmVnXG4gIHwgWmVybyAtPiBTaWduLlplcm9cbiAgfCBQb3MgLT4gU2lnbi5Qb3NcbiAgfCBOYW4gLT4gaW52YWxpZF9hcmcgXCJCYXNlLlNpZ25fb3JfbmFuLnRvX3NpZ25fZXhuOiBOYW5cIlxuOztcblxubGV0IG9mX2ludCBuID0gb2Zfc2lnbiAoU2lnbi5vZl9pbnQgbilcbmxldCB0b19pbnRfZXhuIHQgPSBTaWduLnRvX2ludCAodG9fc2lnbl9leG4gdClcblxubGV0IGZsaXAgPSBmdW5jdGlvblxuICB8IE5lZyAtPiBQb3NcbiAgfCBaZXJvIC0+IFplcm9cbiAgfCBQb3MgLT4gTmVnXG4gIHwgTmFuIC0+IE5hblxuOztcblxubGV0ICggKiApIHQgdCcgPVxuICBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTmFuLCBfIHwgXywgTmFuIC0+IE5hblxuICB8IF8gLT4gb2Zfc2lnbiAoU2lnbi4oICogKSAodG9fc2lnbl9leG4gdCkgKHRvX3NpZ25fZXhuIHQnKSlcbjs7XG5cbmxldCB0b19zdHJpbmdfaHVtID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gXCJuZWdhdGl2ZVwiXG4gIHwgWmVybyAtPiBcInplcm9cIlxuICB8IFBvcyAtPiBcInBvc2l0aXZlXCJcbiAgfCBOYW4gLT4gXCJub3QtYS1udW1iZXJcIlxuOztcblxuKCogSW5jbHVkZSBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlciBhbnkgZnVuY3RvciBhcHBsaWNhdGlvbnMgdGhhdFxuICAgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBhbGwgOiAnYS4gJ2EgbGlzdCAtPiAnYSB0IGxpc3QgPVxuICBmdW4gX2FsbF9vZl9hIC0+XG4gIFBweF9lbnVtZXJhdGVfbGliLkxpc3QuYXBwZW5kXG4gICAgKGxldCByZWMgbWFwIGwgYWNjID1cbiAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICB8IFtdIC0+IFBweF9lbnVtZXJhdGVfbGliLkxpc3QucmV2IGFjY1xuICAgICAgIHwgZW51bWVyYXRlX18wMDFfIDo6IGwgLT4gbWFwIGwgKEluY2wgZW51bWVyYXRlX18wMDFfIDo6IGFjYylcbiAgICAgaW5cbiAgICAgbWFwIF9hbGxfb2ZfYSBbXSlcbiAgICAoUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgICAgfCBlbnVtZXJhdGVfXzAwMl8gOjogbCAtPiBtYXAgbCAoRXhjbCBlbnVtZXJhdGVfXzAwMl8gOjogYWNjKVxuICAgICAgICBpblxuICAgICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgICAgIFsgVW5ib3VuZGVkIF0pXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuICh0eXBlIGFfXzAxOF8pIDogKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XykgLT4gU2V4cGxpYjAuU2V4cC50IC0+IGFfXzAxOF8gdCkgLT5cbiAgbGV0IGVycm9yX3NvdXJjZV9fMDA2XyA9IFwibWF5YmVfYm91bmQubWwudFwiIGluXG4gIGZ1biBfb2ZfYV9fMDAzXyAtPiBmdW5jdGlvblxuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBfdGFnX18wMDlfKSA6OiBzZXhwX2FyZ3NfXzAxMF8pIGFzXG4gICAgICBfc2V4cF9fMDA4XyAtPlxuICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDEwXyB3aXRoXG4gICAgICAgfCBbIGFyZzBfXzAxMV8gXSAtPlxuICAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBfb2ZfYV9fMDAzXyBhcmcwX18wMTFfIGluXG4gICAgICAgICBJbmNsIHJlczBfXzAxMl9cbiAgICAgICB8IF8gLT5cbiAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDZfXG4gICAgICAgICAgIF90YWdfXzAwOV9cbiAgICAgICAgICAgX3NleHBfXzAwOF8pXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgIF9zZXhwX18wMTNfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTVfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDE3XyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxNl8gaW5cbiAgICAgICAgIEV4Y2wgcmVzMF9fMDE3X1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDE0X1xuICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ1bmJvdW5kZWRcIiB8IFwiVW5ib3VuZGVkXCIpIC0+IFVuYm91bmRlZFxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImluY2xcIiB8IFwiSW5jbFwiKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZXhjbFwiIHwgXCJFeGNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgOjogXykgYXNcbiAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgc2V4cF9fMDA1XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuICh0eXBlIGFfXzAyNF8pIDogKChhX18wMjRfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDI0XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgZnVuIF9vZl9hX18wMTlfIC0+IGZ1bmN0aW9uXG4gICAgfCBJbmNsIGFyZzBfXzAyMF8gLT5cbiAgICAgIGxldCByZXMwX18wMjFfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIwXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5jbFwiOyByZXMwX18wMjFfIF1cbiAgICB8IEV4Y2wgYXJnMF9fMDIyXyAtPlxuICAgICAgbGV0IHJlczBfXzAyM18gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGNsXCI7IHJlczBfXzAyM18gXVxuICAgIHwgVW5ib3VuZGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuYm91bmRlZFwiXG47O1xuXG5sZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJJbmNsXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJFeGNsXCJcbiAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiVW5ib3VuZGVkXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbltAQEBlbmRdXG5cbnR5cGUgaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIHwgQmVsb3dfbG93ZXJfYm91bmRcbiAgfCBJbl9yYW5nZVxuICB8IEFib3ZlX3VwcGVyX2JvdW5kXG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyLCBjb21wYXJlLCBoYXNoXVxuXG5sZXQgaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAyN18gPSBcIm1heWJlX2JvdW5kLm1sLmludGVydmFsX2NvbXBhcmlzb25cIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJlbG93X2xvd2VyX2JvdW5kXCIgfCBcIkJlbG93X2xvd2VyX2JvdW5kXCIpIC0+IEJlbG93X2xvd2VyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbl9yYW5nZVwiIHwgXCJJbl9yYW5nZVwiKSAtPiBJbl9yYW5nZVxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiYWJvdmVfdXBwZXJfYm91bmRcIiB8IFwiQWJvdmVfdXBwZXJfYm91bmRcIikgLT4gQWJvdmVfdXBwZXJfYm91bmRcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSA6OiBfKSBhcyBzZXhwX18wMjhfXG4gICAgIC0+IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyOF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYWJvdmVfdXBwZXJfYm91bmRcIiB8IFwiQWJvdmVfdXBwZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjdfIHNleHBfXzAyNl9cbiAgIHwgc2V4cF9fMDI2XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbilcbjs7XG5cbmxldCBzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoZnVuY3Rpb25cbiAgICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkJlbG93X2xvd2VyX2JvdW5kXCJcbiAgICB8IEluX3JhbmdlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluX3JhbmdlXCJcbiAgICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkFib3ZlX3VwcGVyX2JvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5sZXQgKGludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbWFyIDogaW50ZXJ2YWxfY29tcGFyaXNvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkJlbG93X2xvd2VyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJJbl9yYW5nZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiQWJvdmVfdXBwZXJfYm91bmRcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxubGV0IGNvbXBhcmVfaW50ZXJ2YWxfY29tcGFyaXNvbiA9XG4gIChTdGRsaWIuY29tcGFyZSA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnQpXG47O1xuXG5sZXQgKGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIDpcbiAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgIHwgSW5fcmFuZ2UgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgQWJvdmVfdXBwZXJfYm91bmQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG47O1xuXG5sZXQgKGhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF9pbnRlcnZhbF9jb21wYXJpc29uIGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IEluY2wgKGYgaW5jbClcbiAgfCBFeGNsIGV4Y2wgLT4gRXhjbCAoZiBleGNsKVxuICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbjs7XG5cbmxldCBpc19sb3dlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGluY2wgYSA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgZXhjbCBhIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfdXBwZXJfYm91bmQgdCB+b2ZfOmEgfmNvbXBhcmUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gY29tcGFyZSBhIGluY2wgPD0gMFxuICB8IEV4Y2wgZXhjbCAtPiBjb21wYXJlIGEgZXhjbCA8IDBcbiAgfCBVbmJvdW5kZWQgLT4gdHJ1ZVxuOztcblxubGV0IGJvdW5kc19jcm9zc2VkIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBtYXRjaCBsb3dlciB3aXRoXG4gIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gIHwgSW5jbCBsb3dlciB8IEV4Y2wgbG93ZXIgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBmYWxzZVxuICAgICB8IEluY2wgdXBwZXIgfCBFeGNsIHVwcGVyIC0+IGNvbXBhcmUgbG93ZXIgdXBwZXIgPiAwKVxuOztcblxubGV0IGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlID1cbiAgaWYgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZVxuICB0aGVuIGZhaWx3aXRoIFwiTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG46IGxvd2VyIGJvdW5kID4gdXBwZXIgYm91bmRcIlxuOztcblxubGV0IGNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgYSB+Y29tcGFyZSA9XG4gIGNoZWNrX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIH5jb21wYXJlO1xuICBpZiBub3QgKGlzX2xvd2VyX2JvdW5kIGxvd2VyIH5vZl86YSB+Y29tcGFyZSlcbiAgdGhlbiBCZWxvd19sb3dlcl9ib3VuZFxuICBlbHNlIGlmIG5vdCAoaXNfdXBwZXJfYm91bmQgdXBwZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEFib3ZlX3VwcGVyX2JvdW5kXG4gIGVsc2UgSW5fcmFuZ2Vcbjs7XG5cbmxldCBpbnRlcnZhbF9jb250YWluc19leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgbWF0Y2ggY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlIHdpdGhcbiAgfCBJbl9yYW5nZSAtPiB0cnVlXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgWyBgT2sgb2YgJ2FcbiAgICB8IGBEdXBsaWNhdGVcbiAgICBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMDFfIGJfXzAwMl8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwMV8gYl9fMDAyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICB8IGBPayBfbGVmdF9fMDAzXywgYE9rIF9yaWdodF9fMDA0XyAtPiBfY21wX19hIF9sZWZ0X18wMDNfIF9yaWdodF9fMDA0X1xuICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IDBcbiAgICAgIHwgeCwgeSAtPiBTdGRsaWIuY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA1XyBiX18wMDZfIC0+XG4gICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAwNV8gYl9fMDA2X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDA1XywgYl9fMDA2XyB3aXRoXG4gICAgICAgIHwgYE9rIF9sZWZ0X18wMDdfLCBgT2sgX3JpZ2h0X18wMDhfIC0+IF9jbXBfX2EgX2xlZnRfXzAwN18gX3JpZ2h0X18wMDhfXG4gICAgICAgIHwgYER1cGxpY2F0ZSwgYER1cGxpY2F0ZSAtPiB0cnVlXG4gICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuKCA9ICkgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biBfb2ZfYV9fMDA5XyAtPiBmdW5jdGlvblxuICAgICAgfCBgT2sgdl9fMDEwXyAtPiBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyBfb2ZfYV9fMDA5XyB2X18wMTBfIF1cbiAgICAgIHwgYER1cGxpY2F0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEdXBsaWNhdGVcIlxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9ICd6XG5lbmRcblxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9IGNvbXBhcmF0b3I6KCdrZXksICdjbXApIENvbXBhcmF0b3IudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IHN0cnVjdFxuICB0eXBlICgna2V5LCAnY21wLCAneikgdCA9ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICd6XG5lbmRcblxubW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID0gJ2sgKiBbIGBMZWZ0IG9mICd2IHwgYFJpZ2h0IG9mICd2IHwgYFVuZXF1YWwgb2YgJ3YgKiAndiBdXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnayAndi4gKCdrIC0+ICdrIC0+IGludCkgLT4gKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndikgdCAtPiAoJ2ssICd2KSB0IC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAxMV8gYl9fMDEyXyAtPlxuICAgIGxldCB0X18wMTNfLCB0X18wMTRfID0gYV9fMDExXyBpblxuICAgIGxldCB0X18wMTVfLCB0X18wMTZfID0gYl9fMDEyXyBpblxuICAgIG1hdGNoIF9jbXBfX2sgdF9fMDEzXyB0X18wMTVfIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIGlmIFN0ZGxpYi4oID09ICkgdF9fMDE0XyB0X18wMTZfXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCB0X18wMTRfLCB0X18wMTZfIHdpdGhcbiAgICAgICAgfCBgTGVmdCBfbGVmdF9fMDE3XywgYExlZnQgX3JpZ2h0X18wMThfIC0+IF9jbXBfX3YgX2xlZnRfXzAxN18gX3JpZ2h0X18wMThfXG4gICAgICAgIHwgYFJpZ2h0IF9sZWZ0X18wMTlfLCBgUmlnaHQgX3JpZ2h0X18wMjBfIC0+IF9jbXBfX3YgX2xlZnRfXzAxOV8gX3JpZ2h0X18wMjBfXG4gICAgICAgIHwgYFVuZXF1YWwgX2xlZnRfXzAyMV8sIGBVbmVxdWFsIF9yaWdodF9fMDIyXyAtPlxuICAgICAgICAgIGxldCB0X18wMjNfLCB0X18wMjRfID0gX2xlZnRfXzAyMV8gaW5cbiAgICAgICAgICBsZXQgdF9fMDI1XywgdF9fMDI2XyA9IF9yaWdodF9fMDIyXyBpblxuICAgICAgICAgIChtYXRjaCBfY21wX192IHRfXzAyM18gdF9fMDI1XyB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBfY21wX192IHRfXzAyNF8gdF9fMDI2X1xuICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggeSlcbiAgICB8IG4gLT4gblxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+ICdrIC0+IGJvb2wpIC0+ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2KSB0IC0+ICgnaywgJ3YpIHQgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fayBfY21wX192IGFfXzAyN18gYl9fMDI4XyAtPlxuICAgICAgbGV0IHRfXzAyOV8sIHRfXzAzMF8gPSBhX18wMjdfIGluXG4gICAgICBsZXQgdF9fMDMxXywgdF9fMDMyXyA9IGJfXzAyOF8gaW5cbiAgICAgIFN0ZGxpYi4oICYmIClcbiAgICAgICAgKF9jbXBfX2sgdF9fMDI5XyB0X18wMzFfKVxuICAgICAgICAoaWYgU3RkbGliLiggPT0gKSB0X18wMzBfIHRfXzAzMl9cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIHRfXzAzMF8sIHRfXzAzMl8gd2l0aFxuICAgICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMzNfLCBgTGVmdCBfcmlnaHRfXzAzNF8gLT4gX2NtcF9fdiBfbGVmdF9fMDMzXyBfcmlnaHRfXzAzNF9cbiAgICAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAzNV8sIGBSaWdodCBfcmlnaHRfXzAzNl8gLT4gX2NtcF9fdiBfbGVmdF9fMDM1XyBfcmlnaHRfXzAzNl9cbiAgICAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDM3XywgYFVuZXF1YWwgX3JpZ2h0X18wMzhfIC0+XG4gICAgICAgICAgICAgbGV0IHRfXzAzOV8sIHRfXzA0MF8gPSBfbGVmdF9fMDM3XyBpblxuICAgICAgICAgICAgIGxldCB0X18wNDFfLCB0X18wNDJfID0gX3JpZ2h0X18wMzhfIGluXG4gICAgICAgICAgICAgU3RkbGliLiggJiYgKSAoX2NtcF9fdiB0X18wMzlfIHRfXzA0MV8pIChfY21wX192IHRfXzA0MF8gdF9fMDQyXylcbiAgICAgICAgICAgfCB4LCB5IC0+IFN0ZGxpYi4oID0gKSB4IHkpKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdrICd2LlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2spXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAndilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzA1N18gPSBcIm1hcF9pbnRmLm1sLlN5bW1ldHJpY19kaWZmX2VsZW1lbnQudFwiIGluXG4gICAgZnVuIF9vZl9rX18wNDNfIF9vZl92X18wNDRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA2N187IGFyZzFfXzA2OF8gXSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDY5XyA9IF9vZl9rX18wNDNfIGFyZzBfXzA2N19cbiAgICAgICAgYW5kIHJlczFfXzA3MF8gPVxuICAgICAgICAgIGxldCBzZXhwX18wNjZfID0gYXJnMV9fMDY4XyBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc2V4cF9fMDY2XyB3aXRoXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIGFzIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gOjogc2V4cF9hcmdzX18wNTBfKSBhc1xuICAgICAgICAgICAgICBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIGFzIF90YWdfXzA2M18gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDY0XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjVfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDY0XyBpblxuICAgICAgICAgICAgICAgICAgICBgTGVmdCByZXMwX18wNjVfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2M19cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIGFzIF90YWdfXzA2MF8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDYxXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjJfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDYxXyBpblxuICAgICAgICAgICAgICAgICAgICBgUmlnaHQgcmVzMF9fMDYyX1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjBfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIGFzIF90YWdfXzA1MV8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDU4XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTlfID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhcmcwX18wNThfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA1Ml87IGFyZzFfXzA1M18gXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNTJfXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzMV9fMDU1XyA9IF9vZl92X18wNDRfIGFyZzFfXzA1M18gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlczBfXzA1NF8sIHJlczFfXzA1NV9cbiAgICAgICAgICAgICAgICAgICAgICB8IHNleHBfXzA1Nl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDU2X1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBgVW5lcXVhbCByZXMwX18wNTlfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA1MV9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgc2V4cF9fMDY2X1xuICAgICAgICBpblxuICAgICAgICByZXMwX18wNjlfLCByZXMxX18wNzBfXG4gICAgICB8IHNleHBfXzA3MV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBlcnJvcl9zb3VyY2VfXzA1N18gMiBzZXhwX18wNzFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9rX18wNzJfIF9vZl92X18wNzNfIChhcmcwX18wODFfLCBhcmcxX18wODJfKSAtPlxuICAgICAgbGV0IHJlczBfXzA4M18gPSBfb2Zfa19fMDcyXyBhcmcwX18wODFfXG4gICAgICBhbmQgcmVzMV9fMDg0XyA9XG4gICAgICAgIG1hdGNoIGFyZzFfXzA4Ml8gd2l0aFxuICAgICAgICB8IGBMZWZ0IHZfXzA3NF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl92X18wNzNfIHZfXzA3NF8gXVxuICAgICAgICB8IGBSaWdodCB2X18wNzVfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3ZfXzA3M18gdl9fMDc1XyBdXG4gICAgICAgIHwgYFVuZXF1YWwgdl9fMDc2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgIDsgKGxldCBhcmcwX18wNzdfLCBhcmcxX18wNzhfID0gdl9fMDc2XyBpblxuICAgICAgICAgICAgICAgbGV0IHJlczBfXzA3OV8gPSBfb2Zfdl9fMDczXyBhcmcwX18wNzdfXG4gICAgICAgICAgICAgICBhbmQgcmVzMV9fMDgwXyA9IF9vZl92X18wNzNfIGFyZzFfXzA3OF8gaW5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA3OV87IHJlczFfXzA4MF8gXSlcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wODNfOyByZXMxX18wODRfIF1cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgOlxuICAgICdrICd2LlxuICAgICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2tfc2V4cF9ncmFtbWFyIF8ndl9zZXhwX2dyYW1tYXIgLT5cbiAgICAgIHsgdW50eXBlZCA9XG4gICAgICAgICAgTGlzdFxuICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICggXydrX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAsIENvbnNcbiAgICAgICAgICAgICAgICAgICAoIFZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlVuZXF1YWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zIChfJ3Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgRW1wdHkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAsIEVtcHR5ICkgKSlcbiAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdsZWZ0LCAncmlnaHQpIHQgPVxuICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICB8IGBCb3RoIG9mICdsZWZ0ICogJ3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19sZWZ0IF9jbXBfX3JpZ2h0IGFfXzA4NV8gYl9fMDg2XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDg1XyBiX18wODZfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wODVfLCBiX18wODZfIHdpdGhcbiAgICAgIHwgYExlZnQgX2xlZnRfXzA4N18sIGBMZWZ0IF9yaWdodF9fMDg4XyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wODdfIF9yaWdodF9fMDg4X1xuICAgICAgfCBgUmlnaHQgX2xlZnRfXzA4OV8sIGBSaWdodCBfcmlnaHRfXzA5MF8gLT4gX2NtcF9fcmlnaHQgX2xlZnRfXzA4OV8gX3JpZ2h0X18wOTBfXG4gICAgICB8IGBCb3RoIF9sZWZ0X18wOTFfLCBgQm90aCBfcmlnaHRfXzA5Ml8gLT5cbiAgICAgICAgbGV0IHRfXzA5M18sIHRfXzA5NF8gPSBfbGVmdF9fMDkxXyBpblxuICAgICAgICBsZXQgdF9fMDk1XywgdF9fMDk2XyA9IF9yaWdodF9fMDkyXyBpblxuICAgICAgICAobWF0Y2ggX2NtcF9fbGVmdCB0X18wOTNfIHRfXzA5NV8gd2l0aFxuICAgICAgICAgfCAwIC0+IF9jbXBfX3JpZ2h0IHRfXzA5NF8gdF9fMDk2X1xuICAgICAgICAgfCBuIC0+IG4pXG4gICAgICB8IHgsIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5KVxuICA7O1xuXG4gIGxldCBlcXVhbCA6XG4gICAgJ2xlZnQgJ3JpZ2h0LlxuICAgICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGJvb2wpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGJvb2xcbiAgICA9XG4gICAgZnVuIF9jbXBfX2xlZnQgX2NtcF9fcmlnaHQgYV9fMDk3XyBiX18wOThfIC0+XG4gICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzA5N18gYl9fMDk4X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDk3XywgYl9fMDk4XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzA5OV8sIGBMZWZ0IF9yaWdodF9fMTAwXyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wOTlfIF9yaWdodF9fMTAwX1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMTAxXywgYFJpZ2h0IF9yaWdodF9fMTAyXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMTAxXyBfcmlnaHRfXzEwMl9cbiAgICAgICAgfCBgQm90aCBfbGVmdF9fMTAzXywgYEJvdGggX3JpZ2h0X18xMDRfIC0+XG4gICAgICAgICAgbGV0IHRfXzEwNV8sIHRfXzEwNl8gPSBfbGVmdF9fMTAzXyBpblxuICAgICAgICAgIGxldCB0X18xMDdfLCB0X18xMDhfID0gX3JpZ2h0X18xMDRfIGluXG4gICAgICAgICAgU3RkbGliLiggJiYgKSAoX2NtcF9fbGVmdCB0X18xMDVfIHRfXzEwN18pIChfY21wX19yaWdodCB0X18xMDZfIHRfXzEwOF8pXG4gICAgICAgIHwgeCwgeSAtPiBTdGRsaWIuKCA9ICkgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfbGVmdF9fMTA5XyBfb2ZfcmlnaHRfXzExMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgdl9fMTExXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl9sZWZ0X18xMDlfIHZfXzExMV8gXVxuICAgICAgfCBgUmlnaHQgdl9fMTEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2ZfcmlnaHRfXzExMF8gdl9fMTEyXyBdXG4gICAgICB8IGBCb3RoIHZfXzExM18gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCJcbiAgICAgICAgICA7IChsZXQgYXJnMF9fMTE0XywgYXJnMV9fMTE1XyA9IHZfXzExM18gaW5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMTE2XyA9IF9vZl9sZWZ0X18xMDlfIGFyZzBfXzExNF9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMTE3XyA9IF9vZl9yaWdodF9fMTEwXyBhcmcxX18xMTVfIGluXG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMTE2XzsgcmVzMV9fMTE3XyBdKVxuICAgICAgICAgIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3AgKilcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb250aW51ZVxuICAgIHwgU3RvcFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBDb250aW51ZTsgU3RvcCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoU3RkbGliLiggPSApIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvbnRpbnVlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbnRpbnVlXCJcbiAgICAgIHwgU3RvcCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdG9wXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZCAqKVxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZpbmlzaGVkXG4gICAgfCBVbmZpbmlzaGVkXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFN0ZGxpYi5jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEZpbmlzaGVkOyBVbmZpbmlzaGVkIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChTdGRsaWIuKCA9ICkgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmluaXNoZWRcIlxuICAgICAgfCBVbmZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZmluaXNoZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2NtcCBjbXBcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6IChfLCBfLCBfKSB0IC0+IGludFxuXG4gIHZhbCBhZGRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYWRkX2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzZXRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYWRkX211bHRpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICdjbXAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YgbGlzdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgY2hhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiBmOigoJ3Ygb3B0aW9uIC0+ICd2KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZpbmQgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+ICd2IG9wdGlvbikgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGZpbmRfZXhuIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndikgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIG1lbSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCgnayBrZXkgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAgIC0+IHVuaXQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBtYXAgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOigoJ3YxIC0+ICd2MilbQGxvY2FsXSkgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICB2YWwgbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIGZvbGRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6XG4gICAgICAgICAoKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgICAgICAgW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHRcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb2xkMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gaW5pdDonYWNjXG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAgIC0+ICdhY2MgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCdrIGtleSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKCd2MSAtPiAndjIgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGVxdWFsXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBrZXkgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAndiwgXykgdCAtPiAndiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiAoJ2sga2V5ICogJ3YpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KChrZXk6J2sga2V5IC0+ICgndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbWJpbmU6KChrZXk6J2sga2V5IC0+ICd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAgIC0+ICgnayBrZXksICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigoJ3YgLT4gJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAgIC0+IGluaXQ6J2FjY1xuICAgICAgLT4gZjooKCdhY2MgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYWNjKVtAbG9jYWxdKVxuICAgICAgLT4gJ2FjYyApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIG1heF9lbHQgOiAoJ2ssICd2LCBfKSB0IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCgndiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrIGtleSAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbGVfZ3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2x0X2dlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBhcHBlbmRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBsb3dlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF0gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gbWluOidrIGtleVxuICAgICAgLT4gbWF4OidrIGtleVxuICAgICAgLT4gaW5pdDonYWNjXG4gICAgICAtPiBmOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAgIC0+ICdhY2MgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCByYW5nZV90b19hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gbWluOidrIGtleSAtPiBtYXg6J2sga2V5IC0+ICgnayBrZXkgKiAndikgbGlzdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIG50aCA6ICgnaywgJ3YsICdjbXApIHQgLT4gaW50IC0+ICgnayBrZXkgKiAndikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gJ2sga2V5ICogJ3ZcbiAgdmFsIHJhbmsgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAnayBrZXkgLT4gaW50IG9wdGlvbikgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnayBrZXksICd2LCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2sga2V5XG4gICAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBzZWdtZW50X29mOigoa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlbQGxvY2FsXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClbQGxvY2FsXSlcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgbW9kdWxlIE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSA6IEFwcGxpY2F0aXZlLkxhenlfYXBwbGljYXRpdmUpIDogc2lnXG4gICAgdmFsIG1hcGlcbiAgICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcblxuICAgIHZhbCBmaWx0ZXJfbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnaywgJ3YsICdjbXApIHRcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0cmVlXG4gIHR5cGUgJ2sga2V5XG4gIHR5cGUgKCdhLCAnY21wLCAneikgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBhY2Nlc3Nfb3B0aW9uc1xuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGVtcHR5IDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2ssICdjbXAsICdrIGtleSAtPiAndiAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogKCAnazJcbiAgICAgICwgJ2NtcDJcbiAgICAgICwgKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgICAtPiBmOigoJ2sxIGtleSAtPiAnazIga2V5KVtAbG9jYWxdKVxuICAgICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHQgLT4gZjooKCdrMSBrZXkgLT4gJ2syIGtleSlbQGxvY2FsXSkgLT4gKCdrMiwgJ3YsICdjbXAyKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgdHJhbnNwb3NlX2tleXNcbiAgICA6ICggJ2sxXG4gICAgICAsICdjbXAxXG4gICAgICAsICggJ2syXG4gICAgICAgICwgJ2NtcDJcbiAgICAgICAgLCAoJ2sxLCAoJ2syLCAnYSwgJ2NtcDIpIHQsICdjbXAxKSB0IC0+ICgnazIsICgnazEsICdhLCAnY21wMSkgdCwgJ2NtcDIpIHQgKVxuICAgICAgICAgIGNyZWF0ZV9vcHRpb25zIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBsZW46aW50IC0+IGY6KChpbnQgLT4gJ2sga2V5ICogJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgbGlzdFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCgndjIgLT4gJ3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2KSBsaXN0IC0+IGY6KCgndiAtPiAndiAtPiAndilbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIGtleSBdXG4gICAgICApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIFNlcXVlbmNlLnRcbiAgICAgIC0+IGluaXQ6J3YyXG4gICAgICAtPiBmOigoJ3YyIC0+ICd2MSAtPiAndjIpW0Bsb2NhbF0pXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBmOigoJ3YgLT4gJ3YgLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdFxuICAgICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSlcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAndiBsaXN0IC0+IGdldF9rZXk6KCgndiAtPiAnayBrZXkpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfZXhuXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ3YgbGlzdCAtPiBnZXRfa2V5OigoJ3YgLT4gJ2sga2V5KVtAbG9jYWxdKSAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfbGlzdF93aXRoX2tleV9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICd2IGxpc3QgLT4gZ2V0X2tleTooKCd2IC0+ICdrIGtleSlbQGxvY2FsXSkgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooKGY6KChrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBrZXkgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOigoZjooKGtleTonayBrZXkgLT4gZGF0YTondiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2ssICdjbXAsICgnayBrZXksICd2LCAnY21wKSB0cmVlIC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZVxuICB0eXBlICdhIGtleVxuICB0eXBlICdhIGNtcFxuICB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9uc1xuICB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBDb21wYXJlX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG4gIG1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgLT4gU2V4cC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBtX190X3NleHBfZ3JhbW1hclxuICAgIDogIChtb2R1bGUgTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAndiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190XG4gICAgOiAgKG1vZHVsZSBDb21wYXJlX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGludClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGludFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoSGFzaC5zdGF0ZSAtPiAndiAtPiBIYXNoLnN0YXRlKVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2ssICd2LCBfKSB0XG4gICAgLT4gSGFzaC5zdGF0ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICAoKiogW01hcF0gaXMgYSBmdW5jdGlvbmFsIGRhdGEgc3RydWN0dXJlIChiYWxhbmNlZCBiaW5hcnkgdHJlZSkgaW1wbGVtZW50aW5nIGZpbml0ZSBtYXBzXG4gICAgICBvdmVyIGEgdG90YWxseS1vcmRlcmVkIGRvbWFpbiwgY2FsbGVkIGEgXCJrZXlcIi4gKilcblxuICB0eXBlICghJ2tleSwgKyEndmFsdWUsICEnY21wKSB0XG5cbiAgbW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE9yX2R1cGxpY2F0ZVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxuICBtb2R1bGUgRmluaXNoZWRfb3JfdW5maW5pc2hlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IFVuZmluaXNoZWRcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfZW51bWVyYXRlX2xpYi5FbnVtZXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIE1hcHMgW0NvbnRpbnVlXSB0byBbRmluaXNoZWRdIGFuZCBbU3RvcF0gdG8gW1VuZmluaXNoZWRdLiAqKVxuICAgIHZhbCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHRcblxuICAgICgqKiBNYXBzIFtGaW5pc2hlZF0gdG8gW0NvbnRpbnVlXSBhbmQgW1VuZmluaXNoZWRdIHRvIFtTdG9wXS4gKilcbiAgICB2YWwgdG9fY29udGludWVfb3Jfc3RvcCA6IHQgLT4gQ29udGludWVfb3Jfc3RvcC50XG4gIGVuZFxuXG4gIG1vZHVsZSBNZXJnZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2xlZnQsICdyaWdodCkgdCA9XG4gICAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgICB8IGBSaWdodCBvZiAncmlnaHRcbiAgICAgIHwgYEJvdGggb2YgJ2xlZnQgKiAncmlnaHRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgICB2YWwgY29tcGFyZVxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAgIC0+ICgncmlnaHQgLT4gJ3JpZ2h0IC0+IGludClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gaW50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogICgnbGVmdCAtPiAnbGVmdCAtPiBib29sKVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gYm9vbFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdsZWZ0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCBsZWZ0IDogKCdsZWZ0LCBfKSB0IC0+ICdsZWZ0IG9wdGlvblxuICAgIHZhbCByaWdodCA6IChfLCAncmlnaHQpIHQgLT4gJ3JpZ2h0IG9wdGlvblxuICAgIHZhbCBsZWZ0X3ZhbHVlIDogKCdsZWZ0LCBfKSB0IC0+IGRlZmF1bHQ6J2xlZnQgLT4gJ2xlZnRcbiAgICB2YWwgcmlnaHRfdmFsdWUgOiAoXywgJ3JpZ2h0KSB0IC0+IGRlZmF1bHQ6J3JpZ2h0IC0+ICdyaWdodFxuXG4gICAgdmFsIHZhbHVlc1xuICAgICAgOiAgKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+IGxlZnRfZGVmYXVsdDonbGVmdFxuICAgICAgLT4gcmlnaHRfZGVmYXVsdDoncmlnaHRcbiAgICAgIC0+ICdsZWZ0ICogJ3JpZ2h0XG4gIGVuZFxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3QgaWYgdGhlIGludmFyaWFudHMgb2YgdGhlIGludGVybmFsIEFWTCBzZWFyY2ggdHJlZSBob2xkLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjLlxuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBUaGUgZW1wdHkgbWFwLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBBIG1hcCB3aXRoIG9uZSAoa2V5LCBkYXRhKSBwYWlyLiAqKVxuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIC0+ICdiIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIGxpc3Qgd2l0aCB1bmlxdWUga2V5cy4gKilcbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLCByYWlzaW5nIGFuIGV4Y2VwdGlvbiBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuIFRoZSBhY2N1bXVsYXRvciBpcyBwZXIta2V5LlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICAjIGxldCBtYXAgPSBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGRcbiAgICAgICAgICAgICAgICAgICAgICBbIFwiYVwiLCAxOyBcImFcIiwgMTA7IFwiYlwiLCAyOyBcImJcIiwgMjA7IFwiYlwiLCAyMDAgXVxuICAgICAgICAgICAgICAgICAgICAgIH5pbml0OkludC5TZXQuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICB+ZjpTZXQuYWRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmludF9zIFslc2V4cCAobWFwIDogSW50LlNldC50IFN0cmluZy5NYXAudCldOztcbiAgICAgICAgKChhICgxIDEwKSkgKGIgKDIgMjAgMjAwKSkpXG4gICAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIF19XG4gICopXG4gIHZhbCBvZl9hbGlzdF9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooKCdjIC0+ICdiIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuICopXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGY6KCgnYiAtPiAnYiAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pdGVyaSB+aXRlcmldIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RdLCBleGNlcHQgdGhhdCBpbnN0ZWFkIG9mIHRha2luZyBhIGNvbmNyZXRlXG4gICAgICBkYXRhIHN0cnVjdHVyZSwgaXQgdGFrZXMgYW4gaXRlcmF0aW9uIGZ1bmN0aW9uLiAgRm9yIGluc3RhbmNlLCB0byBjb252ZXJ0IGEgc3RyaW5nIHRhYmxlXG4gICAgICBpbnRvIGEgbWFwOiBbb2ZfaXRlcmkgKG1vZHVsZSBTdHJpbmcpIH5mOihIYXNodGJsLml0ZXJpIHRhYmxlKV0uICBJdCBpcyBmYXN0ZXIgdGhhblxuICAgICAgYWRkaW5nIHRoZSBlbGVtZW50cyBvbmUgYnkgb25lLiAqKVxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooKGY6KChrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIExpa2UgW29mX2l0ZXJpXSBleGNlcHQgdGhhdCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLiAqKVxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaXRlcmk6KChmOigoa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhIHNvcnRlZCBhcnJheSBvZiBrZXktZGF0YSBwYWlycy4gVGhlIGlucHV0IGFycmF5IG11c3QgYmUgc29ydGVkXG4gICAgICAoZWl0aGVyIGluIGFzY2VuZGluZyBvciBkZXNjZW5kaW5nIG9yZGVyKSwgYXMgZ2l2ZW4gYnkgdGhlIHJlbGV2YW50IGNvbXBhcmF0b3IsIGFuZFxuICAgICAgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGUga2V5cy4gSWYgZWl0aGVyIG9mIHRoZXNlIGNvbmRpdGlvbnMgZG9lcyBub3QgaG9sZCxcbiAgICAgIGFuIGVycm9yIGlzIHJldHVybmVkLiAgKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBMaWtlIFtvZl9zb3J0ZWRfYXJyYXldIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgYSBtYXAgd2l0aCBicm9rZW4gaW52YXJpYW50cyB3aGVuIGFuXG4gICAgICBbRXJyb3JdIHdvdWxkIGhhdmUgYmVlbiByZXR1cm5lZC4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgYXJyYXlcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBjIH5sZW4gfmZdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBjXG4gICAgICAoQXJyYXkuaW5pdCBsZW4gfmYpXSwgd2l0aCB0aGUgYWRkaXRpb25hbCByZXN0cmljdGlvbiB0aGF0IGEgZGVjcmVhc2luZyBvcmRlciBpcyBub3RcbiAgICAgIHN1cHBvcnRlZC4gIFRoZSBhZHZhbnRhZ2UgaXMgbm90IHJlcXVpcmluZyB5b3UgdG8gYWxsb2NhdGUgYW4gaW50ZXJtZWRpYXRlIGFycmF5LiAgW2ZdXG4gICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIDAsIDEsIC4uLiBbbGVuIC0gMV0sIGluIG9yZGVyLiAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBsZW46aW50XG4gICAgLT4gZjooKGludCAtPiAnYSAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2Zfc29ydGVkX2FycmF5IGMgKFNlcXVlbmNlLnRvX2FycmF5XG4gICAgICBzZXEpXSwgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgYXJyYXkuXG5cbiAgICAgIFRoZSBzZXF1ZW5jZSB3aWxsIGJlIGZvbGRlZCBvdmVyIG9uY2UsIGFuZCB0aGUgYWRkaXRpb25hbCB0aW1lIGNvbXBsZXhpdHkgaXMge2UgTyhuKX0uXG4gICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdCBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuXG4gICAgICBJZiB5b3VyIHNlcXVlbmNlIGlzIGluY3JlYXNpbmcsIHVzZSBbb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZV0uXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gWyBgT2sgb2YgKCdrLCAndiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrIF1cblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9vcl9lcnJvciBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9vcl9lcnJvciBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldXG4gICAgICBidXQgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3JcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCB1bmlxdWUga2V5cywgcmFpc2luZyBhbiBleGNlcHRpb24gaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZXhuIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2V4biBjIChTZXF1ZW5jZS50b19saXN0IHNlcSldIGJ1dFxuICAgICAgZG9lcyBub3QgYWxsb2NhdGUgdGhlIGludGVybWVkaWF0ZSBsaXN0LlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfZXhuXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHBvc3NpYmx5IHJlcGVhdGVkIGtleXMuIFRoZSB2YWx1ZXMgaW5cbiAgICAgIHRoZSBtYXAgZm9yIGEgZ2l2ZW4ga2V5IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IGRpZCBpbiB0aGUgYXNzb2NpYXRpb25cbiAgICAgIGxpc3QuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9tdWx0aSBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gc2VxdWVuY2UgaW50byBhIG1hcCwgZm9sZGluZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9mb2xkIGMgc2VxIH5pbml0IH5mXSBiZWhhdmVzIGxpa2UgW29mX2FsaXN0X2ZvbGQgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpIH5pbml0IH5mXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOigoJ2MgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9yZWR1Y2UgYyBzZXEgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfcmVkdWNlIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDb25zdHJ1Y3RzIGEgbWFwIGZyb20gYSBsaXN0IG9mIHZhbHVlcywgd2hlcmUgW2dldF9rZXldIGV4dHJhY3RzIGEga2V5IGZyb20gYSB2YWx1ZS5cbiAgKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIExpa2UgW29mX2xpc3Rfd2l0aF9rZXldOyByZXR1cm5zIFtFcnJvcl0gb24gZHVwbGljYXRlIGtleS4gKilcbiAgdmFsIG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBsaXN0XG4gICAgLT4gZ2V0X2tleTooKCd2IC0+ICdrKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gICgqKiBMaWtlIFtvZl9saXN0X3dpdGhfa2V5XTsgcmFpc2VzIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X2V4blxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IGxpc3RcbiAgICAtPiBnZXRfa2V5OigoJ3YgLT4gJ2spW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFtvZl9saXN0X3dpdGhfa2V5XTsgcHJvZHVjZXMgbGlzdHMgb2YgYWxsIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBrZXkuICopXG4gIHZhbCBvZl9saXN0X3dpdGhfa2V5X211bHRpXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gJ3YgbGlzdFxuICAgIC0+IGdldF9rZXk6KCgndiAtPiAnaylbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogVGVzdHMgd2hldGhlciBhIG1hcCBpcyBlbXB0eS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbGVuZ3RoIG1hcF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFttYXBdLiAgTygxKSwgYnV0IFtUcmVlLmxlbmd0aF0gaXNcbiAgICAgIE8obikuICopXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5ldyBiaW5kaW5nOyBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IGJvdW5kLCBpdHNcbiAgICAgIHByZXZpb3VzIGJpbmRpbmcgZGlzYXBwZWFycy4gKilcbiAgdmFsIHNldCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbYWRkIHQgfmtleSB+ZGF0YV0gYWRkcyBhIG5ldyBlbnRyeSB0byBbdF0gbWFwcGluZyBba2V5XSB0byBbZGF0YV0gYW5kIHJldHVybnMgW2BPa11cbiAgICAgIHdpdGggdGhlIG5ldyBtYXAsIG9yIGlmIFtrZXldIGlzIGFscmVhZHkgcHJlc2VudCBpbiBbdF0sIHJldHVybnMgW2BEdXBsaWNhdGVdLiAqKVxuICB2YWwgYWRkIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2R1cGxpY2F0ZS50XG5cbiAgdmFsIGFkZF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogSWYgW2tleV0gaXMgbm90IHByZXNlbnQgdGhlbiBhZGQgYSBzaW5nbGV0b24gbGlzdCwgb3RoZXJ3aXNlLCBjb25zIGRhdGEgb250byB0aGVcbiAgICAgIGhlYWQgb2YgdGhlIGV4aXN0aW5nIGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIElmIHRoZSBrZXkgaXMgcHJlc2VudCwgdGhlbiByZW1vdmUgaXRzIGhlYWQgZWxlbWVudDsgaWYgdGhlIHJlc3VsdCBpcyBlbXB0eSwgcmVtb3ZlXG4gICAgICB0aGUga2V5LiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciB0aGUgZW1wdHkgbGlzdCBpZiB0aGVyZSBpcyBub25lLiAqKVxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAndiBsaXN0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIHJldHVybnMgYSBuZXcgbWFwIFttXSB0aGF0IGlzIHRoZSBzYW1lIGFzIFt0XSBvbiBhbGwga2V5cyBleGNlcHRcbiAgICAgIGZvciBba2V5XSwgYW5kIHdob3NlIHZhbHVlIGZvciBba2V5XSBpcyBkZWZpbmVkIGJ5IFtmXSwgaS5lLiwgW2ZpbmQgbSBrZXkgPSBmIChmaW5kXG4gICAgICB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gZjooKCd2IG9wdGlvbiAtPiAndiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCgndiBvcHRpb24gLT4gJ3YpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuXG4gICgqKiBSZXR1cm5zIFtTb21lIHZhbHVlXSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCBvciBbTm9uZV0gaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAndiBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgcmFpc2luZyBbU3RkbGliLk5vdF9mb3VuZF0gb3IgW05vdF9mb3VuZF9zXVxuICAgICAgaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3ZcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBhbnkgYmluZGluZyBmb3IgdGhlIGtleSBpbiBxdWVzdGlvbiByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFttZW0gbWFwIGtleV0gdGVzdHMgd2hldGhlciBbbWFwXSBjb250YWlucyBhIGJpbmRpbmcgZm9yIFtrZXldLiAqKVxuICB2YWwgbWVtIDogKCdrLCBfLCAnY21wKSB0IC0+ICdrIC0+IGJvb2xcblxuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCgnayAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyIDogKF8sICd2LCBfKSB0IC0+IGY6KCgndiAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgdW50aWwgdGhlIGZpcnN0IHRpbWUgW2ZdIHJldHVybnMgW1N0b3BdLiBJZiBbZl0gcmV0dXJucyBbU3RvcF0sIHRoZSBmaW5hbFxuICAgICAgcmVzdWx0IGlzIFtVbmZpbmlzaGVkXS4gT3RoZXJ3aXNlLCB0aGUgZmluYWwgcmVzdWx0IGlzIFtGaW5pc2hlZF0uICopXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gQ29udGludWVfb3Jfc3RvcC50KVtAbG9jYWxdKVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gICgqKiBJdGVyYXRlcyB0d28gbWFwcyBzaWRlIGJ5IHNpZGUuIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgTyhNICsgTikuICBJZiB0d29cbiAgICAgIGlucHV0cyBhcmUgW1soMCwgYSk7ICgxLCBhKV1dIGFuZCBbWygxLCBiKTsgKDIsIGIpXV0sIFtmXSB3aWxsIGJlIGNhbGxlZCB3aXRoIFtbKDAsXG4gICAgICBgTGVmdCBhKTsgKDEsIGBCb3RoIChhLCBiKSk7ICgyLCBgUmlnaHQgYildXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBib3VuZCB2YWx1ZXMgcmVwbGFjZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kIHZhbHVlcy4qKVxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooKCd2MSAtPiAndjIpW0Bsb2NhbF0pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBDb252ZXJ0IG1hcCB3aXRoIGtleXMgb2YgdHlwZSBbJ2syXSB0byBhIG1hcCB3aXRoIGtleXMgb2YgdHlwZSBbJ2syXSB1c2luZyBbZl0uICopXG4gIHZhbCBtYXBfa2V5c1xuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooKCdrMSAtPiAnazIpW0Bsb2NhbF0pXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICAoKiogTGlrZSBbbWFwX2tleXNdLCBidXQgcmFpc2VzIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCgnazEgLT4gJ2syKVtAbG9jYWxdKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogRm9sZHMgb3ZlciBrZXlzIGFuZCBkYXRhIGluIHRoZSBtYXAgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBba2V5XSwgdW50aWwgdGhlIGZpcnN0XG4gICAgICB0aW1lIHRoYXQgW2ZdIHJldHVybnMgW1N0b3AgX10uIElmIFtmXSByZXR1cm5zIFtTdG9wIGZpbmFsXSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gICAgICBpbW1lZGlhdGVseSB3aXRoIHRoZSB2YWx1ZSBbZmluYWxdLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgYW5kIHRoZSBmaW5hbFxuICAgICAgY2FsbCB0byBbZl0gcmV0dXJucyBbQ29udGludWUgbGFzdF0sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBbZmluaXNoIGxhc3RdLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOlxuICAgICAgICAgKChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICgnYWNjLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgICAgICAgW0Bsb2NhbF0pXG4gICAgLT4gZmluaXNoOigoJ2FjYyAtPiAnZmluYWwpW0Bsb2NhbF0pXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGRlY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkX3JpZ2h0XG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gICgqKiBGb2xkcyBvdmVyIHR3byBtYXBzIHNpZGUgYnkgc2lkZSwgbGlrZSBbaXRlcjJdLiAqKVxuICB2YWwgZm9sZDJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIFtmaWx0ZXJdLCBbZmlsdGVyaV0sIFtmaWx0ZXJfa2V5c10sIFtmaWx0ZXJfbWFwXSwgYW5kIFtmaWx0ZXJfbWFwaV0gcnVuIGluIE8obilcbiAgICAgIHRpbWUuXG5cbiAgICAgIFtmaWx0ZXJdLCBbZmlsdGVyaV0sIFtmaWx0ZXJfa2V5c10sIFtwYXJ0aXRpb25fdGZdIGFuZCBbcGFydGl0aW9uaV90Zl0ga2VlcCBhIGxvdFxuICAgICAgb2Ygc2hhcmluZyBiZXR3ZWVuIHRoZWlyIHJlc3VsdCBhbmQgdGhlIG9yaWdpbmFsIG1hcC4gIERyb3BwaW5nIG9yIGtlZXBpbmcgYSBydW4gb2ZcbiAgICAgIFtrXSBjb25zZWN1dGl2ZSBlbGVtZW50cyBjb3N0cyBbTyhsb2coaykpXSBleHRyYSBtZW1vcnkuIEtlZXBpbmcgdGhlIGVudGlyZSBtYXBcbiAgICAgIGNvc3RzIG5vIGV4dHJhIG1lbW9yeSBhdCBhbGw6IFtmaWx0ZXIgfmY6KGZ1biBfIC0+IHRydWUpXSByZXR1cm5zIHRoZSBvcmlnaW5hbCBtYXAuXG4gICopXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnaywgJ3YsICdjbXApIHQgLT4gZjooKCdrIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBib3VuZCB2YWx1ZXMgZmlsdGVyZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kIHZhbHVlcy4gKilcbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgndjEgLT4gJ3YyIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBMaWtlIFtmaWx0ZXJfbWFwXSwgYnV0IHRoZSBwYXNzZWQgZnVuY3Rpb24gdGFrZXMgYm90aCBba2V5XSBhbmQgW2RhdGFdIGFzXG4gICAgICBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIFtwYXJ0aXRpb25fbWFwaSB0IH5mXSByZXR1cm5zIHR3byBuZXcgW3Rdcywgd2l0aCBlYWNoIGtleSBpbiBbdF0gYXBwZWFyaW5nIGluXG4gICAgICBleGFjdGx5IG9uZSBvZiB0aGUgcmVzdWx0aW5nIG1hcHMgZGVwZW5kaW5nIG9uIGl0cyBtYXBwaW5nIGluIFtmXS4gKilcbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooKCd2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHRcblxuICAoKipcbiAgICAge1tcbiAgICAgICBwYXJ0aXRpb25pX3RmIHQgfmZcbiAgICAgICA9XG4gICAgICAgcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgIGlmIGYgfmtleSB+ZGF0YVxuICAgICAgICAgdGhlbiBGaXJzdCBkYXRhXG4gICAgICAgICBlbHNlIFNlY29uZCBkYXRhKVxuICAgICBdfSAqKVxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKV0gKilcbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBQcm9kdWNlcyBbT2tdIG9mIGEgbWFwIGluY2x1ZGluZyBhbGwga2V5cyBpZiBhbGwgZGF0YSBpcyBbT2tdLCBvciBhbiBbRXJyb3JdXG4gICAgICBpbmNsdWRpbmcgYWxsIGVycm9ycyBvdGhlcndpc2UuICopXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogUmV0dXJucyBhIHRvdGFsIG9yZGVyaW5nIGJldHdlZW4gbWFwcy4gVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgdG90YWwgb3JkZXJpbmcgdXNlZFxuICAgICAgdG8gY29tcGFyZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlcXVhbCBrZXlzIGluIHRoZSB0d28gbWFwcy4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgbWFwcyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBtKS5jb21wYXJlXSBvZiB0aGUgbWFwIFttXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdrIEhhc2guZm9sZGVyIC0+ICd2IEhhc2guZm9sZGVyIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIGNtcCBtMSBtMl0gdGVzdHMgd2hldGhlciB0aGUgbWFwcyBbbTFdIGFuZCBbbTJdIGFyZSBlcXVhbCwgdGhhdCBpcywgY29udGFpblxuICAgICAgdGhlIHNhbWUga2V5cyBhbmQgYXNzb2NpYXRlIGVhY2gga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUuICBbY21wXSBpcyB0aGUgZXF1YWxpdHlcbiAgICAgIHByZWRpY2F0ZSB1c2VkIHRvIGNvbXBhcmUgdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXMuICopXG4gIHZhbCBlcXVhbCA6ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUga2V5cyBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBsaXN0XG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBkYXRhIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICAoKiogQ3JlYXRlcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGZyb20gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAoKiogZGVmYXVsdCBpcyBbYEluY3JlYXNpbmddICopXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIHsyIEFkZGl0aW9uYWwgb3BlcmF0aW9ucyBvbiBtYXBzfSAqKVxuXG4gICgqKiBNZXJnZXMgdHdvIG1hcHMuIFRoZSBydW50aW1lIGlzIE8obGVuZ3RoKHQxKSArIGxlbmd0aCh0MikpLiBZb3Ugc2hvdWxkbid0IHVzZSB0aGlzXG4gICAgICBmdW5jdGlvbiB0byBtZXJnZSBhIGxpc3Qgb2YgbWFwczsgY29uc2lkZXIgdXNpbmcgW21lcmdlX3NrZXdlZF0gaW5zdGVhZC4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KChrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gJ3YzIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBBIHNwZWNpYWwgY2FzZSBvZiBbbWVyZ2VdLCBbbWVyZ2Vfc2tld2VkIHQxIHQyXSBpcyBhIG1hcCBjb250YWluaW5nIGFsbCB0aGVcbiAgICAgIGJpbmRpbmdzIG9mIFt0MV0gYW5kIFt0Ml0uIEJpbmRpbmdzIHRoYXQgYXBwZWFyIGluIGJvdGggW3QxXSBhbmQgW3QyXSBhcmVcbiAgICAgIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgdmFsdWUgdXNpbmcgdGhlIFtjb21iaW5lXSBmdW5jdGlvbi4gSW4gYSBjYWxsXG4gICAgICBbY29tYmluZSB+a2V5IHYxIHYyXSwgdGhlIHZhbHVlIFt2MV0gY29tZXMgZnJvbSBbdDFdIGFuZCBbdjJdIGZyb20gW3QyXS5cblxuICAgICAgVGhlIHJ1bnRpbWUgb2YgW21lcmdlX3NrZXdlZF0gaXMgW08obWluKGwxLCBsMikgKiBsb2cobWF4KGwxLCBsMikpKV0sIHdoZXJlIFtsMV0gaXNcbiAgICAgIHRoZSBsZW5ndGggb2YgW3QxXSBhbmQgW2wyXSB0aGUgbGVuZ3RoIG9mIFt0Ml0uIFRoaXMgaXMgbGlrZWx5IHRvIGJlIGZhc3RlciB0aGFuXG4gICAgICBbbWVyZ2VdIHdoZW4gb25lIG9mIHRoZSBtYXBzIGlzIGEgbG90IHNtYWxsZXIsIG9yIHdoZW4geW91IG1lcmdlIGEgbGlzdCBvZiBtYXBzLiAqKVxuICB2YWwgbWVyZ2Vfc2tld2VkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21iaW5lOigoa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA6IHNpZ1xuICAgIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdrLCAndikgdCA6PSAoJ2ssICd2KSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyXG4gICAgICA6ICAnayBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICgnaywgJ3YpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWxdIHJldHVybnMgYSBsaXN0IG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLlxuICAgICAgSXQgaXMgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnRcbiAgICAgIG9mIHN0cnVjdHVyZS4gVGhlIGtleXMgaW4gdGhlIG91dHB1dCBzZXF1ZW5jZSB3aWxsIGJlIGluIHNvcnRlZCBvcmRlci5cblxuICAgICAgSXQgaXMgYXNzdW1lZCB0aGF0IFtkYXRhX2VxdWFsXSBpcyBhdCBsZWFzdCBhcyBlcXVhdGluZyBhcyBwaHlzaWNhbCBlcXVhbGl0eTogdGhhdFxuICAgICAgW3BoeXNfZXF1YWwgeCB5XSBpbXBsaWVzIFtkYXRhX2VxdWFsIHggeV0uIE90aGVyd2lzZSwgW3N5bW1ldHJpY19kaWZmXSBtYXkgYmVoYXZlIGluXG4gICAgICB1bmV4cGVjdGVkIHdheXMuIEZvciBleGFtcGxlLCB3aXRoIFt+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiBmYWxzZSldIGl0IGlzIE5PVFxuICAgICAgbmVjZXNzYXJpbHkgdGhlIGNhc2UgdGhlIHJlc3VsdGluZyBjaGFuZ2Ugc2VxdWVuY2Ugd2lsbCBjb250YWluIGFuIGVsZW1lbnRcbiAgICAgIFsoaywgYFVuZXF1YWwgXyldIGZvciBldmVyeSBrZXkgW2tdIHNoYXJlZCBieSBib3RoIG1hcHMuXG5cbiAgICAgIFdhcm5pbmc6IEZsb2F0IGVxdWFsaXR5IHZpb2xhdGVzIHRoaXMgcHJvcGVydHkhIFtwaHlzX2VxdWFsIEZsb2F0Lm5hbiBGbG9hdC5uYW5dIGlzXG4gICAgICB0cnVlLCBidXQgW0Zsb2F0Lig9KSBGbG9hdC5uYW4gRmxvYXQubmFuXSBpcyBmYWxzZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSBmb2xkcyBhY3Jvc3MgYW4gaW1wbGljaXQgc2VxdWVuY2Ugb2YgY2hhbmdlc1xuICAgICAgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLCBpbiBzb3J0ZWQgb3JkZXIgYnkga2V5cy4gRXF1aXZhbGVudCB0b1xuICAgICAgW1NlcXVlbmNlLmZvbGQgKHN5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsKV0sIGFuZCBtb3JlIGVmZmljaWVudC4gKilcbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCgndiAtPiAndiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICgnaywgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICAoKiogW21pbl9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1pbmltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBbbWF4X2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWF4aW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgW21hcF0gaXMgZW1wdHkuICopXG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFN3YXAgdGhlIGlubmVyIGFuZCBvdXRlciBrZXlzIG9mIG5lc3RlZCBtYXBzLiBJZiBbdHJhbnNwb3NlX2tleXMgbSBhID0gYl0sIHRoZW5cbiAgICAgIFtmaW5kX2V4biAoZmluZF9leG4gYSBpKSBqID0gZmluZF9leG4gKGZpbmRfZXhuIGIgaikgaV0uICopXG4gIHZhbCB0cmFuc3Bvc2Vfa2V5c1xuICAgIDogICgnazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgKCdrMiwgJ3YsICdjbXAyKSB0LCAnY21wMSkgdFxuICAgIC0+ICgnazIsICgnazEsICd2LCAnY21wMSkgdCwgJ2NtcDIpIHRcblxuICAoKiogVGhlc2UgZnVuY3Rpb25zIGhhdmUgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHNpbWlsYXIgZnVuY3Rpb25zIGluIFtMaXN0XS4gKilcblxuICB2YWwgZm9yX2FsbCA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKCd2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOigoa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigoJ3YgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG4gIHZhbCBjb3VudGkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KChrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcblxuXG4gICgqKiBbc3BsaXQgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gW2tleV0sIHRoZSBtYXBwaW5nIG9mIFtrZXldIGlmXG4gICAgICBhbnksIGFuZCBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdFxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAna1xuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2sgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbGVfZ3QgdCBrZXldIHJldHVybnMgYSBtYXAgb2Yga2V5cyB0aGF0IGFyZSBsZXNzIG9yIGVxdWFsIHRvIFtrZXldIGFuZCBhXG4gICAgICBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRfbGVfZ3QgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICgnaywgJ3YsICdjbXApIHQgKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtzcGxpdF9sdF9nZSB0IGtleV0gcmV0dXJucyBhIG1hcCBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba2V5XSBhbmQgYSBtYXAgb2ZcbiAgICAgIGtleXMgdGhhdCBhcmUgZ3JlYXRlciBvciBlcXVhbCB0byBba2V5XS5cblxuICAgICAgUnVudGltZSBpcyBPKG0gKyBsb2cgbiksIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGlucHV0IG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZlxuICAgICAgdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBvdXRwdXQgbWFwcy4gIFRoZSBPKG0pIHRlcm0gaXMgZHVlIHRvIHRoZSBuZWVkIHRvIGNhbGN1bGF0ZVxuICAgICAgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IG1hcHMuICopXG4gIHZhbCBzcGxpdF9sdF9nZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydF0gcmV0dXJucyBbYE9rIG1hcF0gd2hlcmUgW21hcF0gY29udGFpbnMgYWxsIHRoZVxuICAgICAgWyhrZXksIHZhbHVlKV0gcGFpcnMgZnJvbSB0aGUgdHdvIGlucHV0IG1hcHMgaWYgYWxsIHRoZSBrZXlzIGZyb20gW2xvd2VyX3BhcnRdIGFyZVxuICAgICAgbGVzcyB0aGFuIGFsbCB0aGUga2V5cyBmcm9tIFt1cHBlcl9wYXJ0XS4gIE90aGVyd2lzZSBpdCByZXR1cm5zXG4gICAgICBbYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNdLlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG4pIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGxhcmdlciBpbnB1dCBtYXAuICBUaGlzIGNhbiBiZVxuICAgICAgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBbTWFwLm1lcmdlXSBvciByZXBlYXRlZCBbTWFwLmFkZF0uXG5cbiAgICAgIHtbXG4gICAgICAgIGFzc2VydCAobWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgfCBgT2sgd2hvbGVfbWFwIC0+XG4gICAgICAgICAgICBNYXAudG9fYWxpc3Qgd2hvbGVfbWFwXG4gICAgICAgICAgICA9IExpc3QuYXBwZW5kICh0b19hbGlzdCBsb3dlcl9wYXJ0KSAodG9fYWxpc3QgdXBwZXJfcGFydClcbiAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IHRydWUpO1xuICAgICAgXX0gKilcbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgKCoqIFtzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRdIHJldHVybnMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlIGVudHJpZXMgZnJvbVxuICAgICAgW3RdIHdob3NlIGtleXMgbGllIGluc2lkZSB0aGUgaW50ZXJ2YWwgaW5kaWNhdGVkIGJ5IFt+bG93ZXJfYm91bmRdIGFuZFxuICAgICAgW351cHBlcl9ib3VuZF0uICBJZiB0aGlzIGludGVydmFsIGlzIGVtcHR5LCBhbiBlbXB0eSBtYXAgaXMgcmV0dXJuZWQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBvdXRwdXQgbWFwLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlXG4gICAgICBvdXRwdXQgbWFwLiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+Zl0gZm9sZHMgW2ZdICh3aXRoIGluaXRpYWwgdmFsdWUgW35pbml0XSlcbiAgICAgIG92ZXIgYWxsIGtleXMgKGFuZCB0aGVpciBhc3NvY2lhdGVkIHZhbHVlcykgdGhhdCBhcmUgaW4gdGhlIHJhbmdlIFtbbWluLCBtYXhdXVxuICAgICAgKGluY2x1c2l2ZSkuICAqKVxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbWluOidrXG4gICAgLT4gbWF4OidrXG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgKCoqIFtyYW5nZV90b19hbGlzdCB0IH5taW4gfm1heF0gcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBsaXN0IG9mIHRoZSBlbGVtZW50cyB3aG9zZSBrZXlzXG4gICAgICBsaWUgaW4gW1ttaW4sIG1heF1dIChpbmNsdXNpdmUpLCB3aXRoIHRoZSBzbWFsbGVzdCBrZXkgYmVpbmcgYXQgdGhlIGhlYWQgb2YgdGhlXG4gICAgICBsaXN0LiAqKVxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayAtPiBtYXg6J2sgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogW2Nsb3Nlc3Rfa2V5IHQgZGlyIGtdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdIHdpdGggW2tleV0gY2xvc2VzdCB0b1xuICAgICAgW2tdIHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbiBpbmVxdWFsaXR5IGJvdW5kLlxuXG4gICAgICBGb3IgZXhhbXBsZSwgW2Nsb3Nlc3Rfa2V5IHQgYExlc3NfdGhhbiBrXSB3b3VsZCBiZSB0aGUgcGFpciB3aXRoIHRoZSBjbG9zZXN0IGtleSB0b1xuICAgICAgW2tdIHdoZXJlIFtrZXkgPCBrXS5cblxuICAgICAgW3RvX3NlcXVlbmNlXSBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIHNhbWUgcmVzdWx0cyBhcyBbY2xvc2VzdF9rZXldLiAgSXQgaXMgbGVzc1xuICAgICAgZWZmaWNpZW50IGZvciBpbmRpdmlkdWFsIGxvb2t1cHMgYnV0IG1vcmUgZWZmaWNpZW50IGZvciBmaW5kaW5nIG1hbnkgZWxlbWVudHMgc3RhcnRpbmdcbiAgICAgIGF0IHNvbWUgdmFsdWUuICopXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2tcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtudGggdCBuXSBmaW5kcyB0aGUgKGtleSwgdmFsdWUpIHBhaXIgb2YgcmFuayBuIChpLmUuLCBzdWNoIHRoYXQgdGhlcmUgYXJlIGV4YWN0bHkgblxuICAgICAga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGZvdW5kIGtleSksIGlmIG9uZSBleGlzdHMuICBPKGxvZyhsZW5ndGggdCkgKyBuKSB0aW1lLiAqKVxuICB2YWwgbnRoIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gJ2sgKiAndlxuXG4gICgqKiBbcmFuayB0IGtdIElmIFtrXSBpcyBpbiBbdF0sIHJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba10gaW5cbiAgICAgIFt0XSwgYW5kIFtOb25lXSBvdGhlcndpc2UuICopXG4gIHZhbCByYW5rIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBpbnQgb3B0aW9uXG5cblxuXG4gICgqKiBbdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XVxuICAgICAgZ2l2ZXMgYSBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgYmV0d2VlbiBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSwgcHJlc2VudGVkIGluIFtvcmRlcl0uICBJZlxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA+IGtleXNfbGVzc19vcl9lcXVhbF90b10sIHRoZSBzZXF1ZW5jZSBpc1xuICAgICAgZW1wdHkuXG5cbiAgICAgIFdoZW4gbmVpdGhlciBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBub3IgW2tleXNfbGVzc19vcl9lcXVhbF90b10gYXJlXG4gICAgICBwcm92aWRlZCwgdGhlIGNvc3QgaXMgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIHRvIHByb2R1Y2VcbiAgICAgIGVhY2ggZWxlbWVudC4gSWYgZWl0aGVyIGlzIHByb3ZpZGVkIChhbmQgaXMgdXNlZCBieSB0aGUgb3JkZXIgcGFyYW1ldGVyXG4gICAgICBwcm92aWRlZCksIHRoZW4gdGhlIHRoZSBjb3N0IGlzIE8obikgdXAgZnJvbnQsIGFuZCBhbW9ydGl6ZWQgTygxKSB0b1xuICAgICAgcHJvZHVjZSBlYWNoIGVsZW1lbnQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzona1xuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdXG4gICAgICBzcGVjaWZpZWQgYnkgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooKGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBbKGtleSwgdmFsdWUpXSBwYWlyIG9uIHRoZSBib3VuZGFyeSBvZiB0aGVcbiAgICAgIHNlZ21lbnRzIGFzIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlXG4gICAgICBsZWZ0IHNlZ21lbnQsIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC5cbiAgICAgIEl0IHJldHVybnMgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KChrZXk6J2sgLT4gZGF0YTondiAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9vbl9sZWZ0IHwgYEZpcnN0X29uX3JpZ2h0IF1cbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXSB0YWtlcyBhIFtjb21wYXJlXSBmdW5jdGlvbiB0aGF0IGRpdmlkZXMgW3RdIGludG8gdGhyZWVcbiAgICAgIChwb3NzaWJseSBlbXB0eSkgc2VnbWVudHMgd2l0aCByZXNwZWN0IHRvIFtsb3dlcl9ib3VuZF0gYW5kIFt1cHBlcl9ib3VuZF06XG5cbiAgICAgIHt2XG4gICAgICAgIHwgQmVsb3dfbG93ZXJfYm91bmQgfCBJbl9yYW5nZSB8IEFib3ZlX3VwcGVyX2JvdW5kIHxcbiAgICAgIHZ9XG5cbiAgICAgIGFuZCByZXR1cm5zIGEgbWFwIG9mIHRoZSBbSW5fcmFuZ2VdIHNlZ21lbnQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhsb2cgbSArIG4pIHdoZXJlIFttXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtYXAgYW5kIFtuXSBpcyB0aGVcbiAgICAgIGxlbmd0aCBvZiB0aGUgb3V0cHV0LiBUaGUgbGluZWFyIHRlcm0gaW4gW25dIGlzIHRvIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LlxuXG4gICAgICBCZWhhdmlvciBpcyB1bmRlZmluZWQgaWYgW2NvbXBhcmVdIGRvZXMgbm90IHNlZ21lbnQgW3RdIGFzIHNob3duIGFib3ZlLCBvciBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgaXRzIGlucHV0cy4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooKGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyB0cmF2ZXJzYWxzIHRvIHJlY29uc3RydWN0IGEgbWFwIHdpdGhpbiBhbiBhcHBsaWNhdGl2ZS4gVXNlc1xuICAgICAgW0xhenlfYXBwbGljYXRpdmVdIHNvIHRoYXQgdGhlIG1hcCBjYW4gYmUgdHJhdmVyc2VkIHdpdGhpbiB0aGUgYXBwbGljYXRpdmUsIHJhdGhlclxuICAgICAgdGhhbiBuZWVkaW5nIHRvIGJlIHRyYXZlcnNlZCBhbGwgYXQgb25jZSwgb3V0c2lkZSB0aGUgYXBwbGljYXRpdmUuICopXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA6IHNpZ1xuICAgIHZhbCBtYXBpXG4gICAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBBLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCBBLnRcblxuICAgIHZhbCBmaWx0ZXJfbWFwaVxuICAgICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uIEEudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0IEEudFxuICBlbmRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gaW50IE1hcC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IChTdHJpbmcudCwgaW50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBNYXAuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgW1N0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzc11cbiAgICAgIC0tIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuXG5cbiAgICAgIEluIGFkZGl0aW9uLCB3aGVuIHVzaW5nIFtAQGRlcml2aW5nXSwgdGhlIHJlcXVpcmVtZW50cyBvbiB0aGUga2V5IG1vZHVsZSBhcmUgb25seVxuICAgICAgdGhvc2UgbmVlZGVkIHRvIHNhdGlzZnkgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkZXJpdmUgb24gdGhlIG1hcCBpdHNlbGYuIFNheSB5b3VcbiAgICAgIHdyaXRlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHQgPSBpbnQgTWFwLk0oWCkudCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgXX1cblxuICAgICAgdGhlbiB0aGlzIHdpbGwgYmUgd2VsbCB0eXBlZCBleGFjdGx5IGlmIFtYXSBjb250YWlucyBhdCBsZWFzdDpcbiAgICAgIC0gYSB0eXBlIFt0XSB3aXRoIG5vIHBhcmFtZXRlcnNcbiAgICAgIC0gYSBjb21wYXJhdG9yIHdpdG5lc3NcbiAgICAgIC0gYSBbaGFzaF9mb2xkX3RdIGZ1bmN0aW9uIHdpdGggdGhlIHJpZ2h0IHR5cGUgKilcbiAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdrZXksICd2YWx1ZSwgJ2NtcCkgdCA6PSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0XG5cbiAgKCoqIFtVc2luZ19jb21wYXJhdG9yXSBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbTWFwXSwgZXhjZXB0IHRoZVxuICAgICAgZnVuY3Rpb25zIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRdLCB3aGVyZWFzIHRoZSBmdW5jdGlvbnMgYXQgdGhlXG4gICAgICB0b3BsZXZlbCBvZiBbTWFwXSB0YWtlIGEgWygnaywgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdrLCArJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgrJ2ssICsndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgICAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXywgXykgdFxuXG4gICAgICAoKiogW0J1aWxkX2luY3JlYXNpbmddIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIG1hcCBpbmNyZW1lbnRhbGx5IGZyb20gYVxuICAgICAgICAgIHNlcXVlbmNlIHRoYXQgaXMga25vd24gdG8gYmUgaW5jcmVhc2luZy5cblxuICAgICAgICAgIFRoZSB0b3RhbCB0aW1lIGNvbXBsZXhpdHkgb2YgY29uc3RydWN0aW5nIGEgbWFwIHRoaXMgd2F5IGlzIE8obiksIHdoaWNoIGlzIG1vcmVcbiAgICAgICAgICBlZmZpY2llbnQgdGhhbiB1c2luZyBbTWFwLmFkZF0gYnkgYSBsb2dhcml0aG1pYyBmYWN0b3IuXG5cbiAgICAgICAgICBUaGlzIGludGVyZmFjZSBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIGR1YWwgb2YgW3RvX3NlcXVlbmNlXSwgYnV0IHdlIGRvbid0IGhhdmVcbiAgICAgICAgICBhbiBlcXVhbGx5IG5lYXQgaWRpb20gZm9yIHRoZSBkdWFscyBvZiBzZXF1ZW5jZXMgKFtvZl9zZXF1ZW5jZV0gaXMgbXVjaCBsZXNzXG4gICAgICAgICAgZ2VuZXJhbCBiZWNhdXNlIGl0IGRvZXMgbm90IGFsbG93IHRoZSBzZXF1ZW5jZSB0byBiZSBwcm9kdWNlZCBhc3luY2hyb25vdXNseSkuICopXG4gICAgICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA6IHNpZ1xuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHR5cGUgKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICB2YWwgZW1wdHkgOiAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgICgqKiBUaW1lIGNvbXBsZXhpdHkgb2YgW2FkZF9leG5dIGlzIGFtb3J0aXplZCBjb25zdGFudC10aW1lIChpZiBbdF0gaXMgdXNlZFxuICAgICAgICAgICAgbGluZWFybHkpLCB3aXRoIGEgd29yc3QtY2FzZSBPKGxvZyhuKSkgdGltZS4gKilcbiAgICAgICAgdmFsIGFkZF9leG5cbiAgICAgICAgICA6ICAoJ2ssICd2LCAndykgdFxuICAgICAgICAgIC0+IGNvbXBhcmF0b3I6KCdrLCAndykgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4ga2V5OidrXG4gICAgICAgICAgLT4gZGF0YTondlxuICAgICAgICAgIC0+ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBpcyBPKGxvZyhuKSkuICopXG4gICAgICAgIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ3cpIHQgLT4gKCdrLCAndiwgJ3cpIHRyZWVcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgJ2sga2V5IDo9ICdrXG4gICAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdFxuICAgICAgOiAgJ2sgSGFzaC5mb2xkZXJcbiAgICAgIC0+ICd2IEhhc2guZm9sZGVyXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICAoKiogVG8gZ2V0IGFyb3VuZCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24sIGFwcGx5IHRoZSBmdW5jdG9yIGFuZCBpbmNsdWRlIGl0LiBZb3VcbiAgICAgICAgY2FuIHNlZSBhbiBleGFtcGxlIG9mIHRoaXMgaW4gdGhlIFtQb2x5XSBzdWJtb2R1bGUgYmVsb3cuICopXG4gICAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gICgqKiBBIHBvbHltb3JwaGljIE1hcC4gKilcbiAgbW9kdWxlIFBvbHkgOlxuICAgIFNfcG9seVxuICAgIHdpdGggdHlwZSAoJ2tleSwgKyd2YWx1ZSkgdCA9ICgna2V5LCAndmFsdWUsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICAgYW5kIHR5cGUgKCdrZXksICsndmFsdWUpIHRyZWUgPVxuICAgICAgICAgICAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgKCoqIENyZWF0ZSBhIG1hcCBmcm9tIGEgdHJlZSB1c2luZyB0aGUgZ2l2ZW4gY29tcGFyYXRvci4gKilcbiAgdmFsIG9mX3RyZWVcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogRXh0cmFjdCBhIHRyZWUgZnJvbSBhIG1hcC4gKilcbiAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG5cblxuICAoKiogezIgTW9kdWxlcyBhbmQgbW9kdWxlIHR5cGVzIGZvciBleHRlbmRpbmcgW01hcF19XG5cbiAgICAgIEZvciB1c2UgaW4gZXh0ZW5zaW9ucyBvZiBCYXNlLCBsaWtlIFtDb3JlXS4gKilcblxuICBtb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gV2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIG1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBXaXRob3V0X2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgVFxuXG5tb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gTWFwX2ludGYuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9jb21wYXJhdG9yID0gTWFwX2ludGYuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBNYXBfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHNldCA6ICdhXG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgfVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLkdlbmVyaWNcblxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuXG4gICgqKiBUaGUgW2FjY2Vzc19vcHRpb25zXSB0eXBlIGlzIHVzZWQgdG8gbWFrZSBbQWNjZXNzb3JzX2dlbmVyaWNdIGZsZXhpYmxlIGFzIHRvIHdoZXRoZXJcbiAgICAgIGEgY29tcGFyYXRvciBpcyByZXF1aXJlZCB0byBiZSBwYXNzZWQgdG8gY2VydGFpbiBmdW5jdGlvbnMuICopXG4gIHR5cGUgKCdhLCAnY21wLCAneikgYWNjZXNzX29wdGlvbnNcblxuICB0eXBlICdjbXAgY21wXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBib29sKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gICgqKiBvdmVycmlkZSBbQ29udGFpbmVyXSdzIFttZW1dICopXG4gIHZhbCBtZW0gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgYWRkIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBkaWZmIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdhIGVsdCkgRWl0aGVyLnQgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludCkgYWNjZXNzX29wdGlvbnNcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2wpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgYWNjZXNzX29wdGlvbnNcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICggJ2FcbiAgICAgICAgLCAnY21wXG4gICAgICAgICwgKCdhLCAnY21wKSB0IE5hbWVkLnQgLT4gb2ZfOignYSwgJ2NtcCkgdCBOYW1lZC50IC0+IHVuaXQgT3JfZXJyb3IudCApXG4gICAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAoICdhXG4gICAgICAgICwgJ2NtcFxuICAgICAgICAsICgnYSwgJ2NtcCkgdCBOYW1lZC50IC0+ICgnYSwgJ2NtcCkgdCBOYW1lZC50IC0+IHVuaXQgT3JfZXJyb3IudCApXG4gICAgICAgICAgYWNjZXNzX29wdGlvbnNcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSBlbHQgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZm9sZF9yaWdodCA6ICgnYSwgXykgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhIGVsdCAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gZjpcbiAgICAgICAgICAgKChbIGBMZWZ0IG9mICdhIGVsdCB8IGBSaWdodCBvZiAnYSBlbHQgfCBgQm90aCBvZiAnYSBlbHQgKiAnYSBlbHQgXSAtPiB1bml0KVxuICAgICAgICAgICAgW0Bsb2NhbF0pXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IGxpc3RcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhIGVsdFxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAnYSBlbHQgb3B0aW9uICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgc3BsaXRfbGVfZ3RcbiAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICdhIGVsdCAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIHNwbGl0X2x0X2dlXG4gICAgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAnYSBlbHQgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0KSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBncm91cF9ieVxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGVxdWl2OigoJ2EgZWx0IC0+ICdhIGVsdCAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBsaXN0XG5cbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBlbHQgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgZWx0XG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHQpIGFjY2Vzc19vcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdhLCAnY21wKSB0IC0+ICgnYSBlbHQsICdjbXAgY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAnYSBlbHQgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KCgnYSBlbHQgLT4gJ2tleSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAgIC0+ICdrZXlcbiAgICAgIC0+ICdhIGVsdCBvcHRpb24gKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooKCdhIGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhIGVsdFxuICAgICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhIGVsdCwgJ2EgZWx0KSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2EgZWx0XG4gIHR5cGUgKCdhLCAnY21wLCAneikgY3JlYXRlX29wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgc2luZ2xldG9uIDogKCdhLCAnY21wLCAnYSBlbHQgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EsICdjbXAsICdhIGVsdCBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbiAgdmFsIG9mX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCdhLCAnY21wLCBsZW46aW50IC0+IGY6KChpbnQgLT4gJ2EgZWx0KVtAbG9jYWxdKSAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfLCAnYSBlbHQgbGlzdCAtPiAnYSBlbHQgbGlzdCkgY3JlYXRlX29wdGlvbnNcblxuICAoKiogVGhlIHR5cGVzIG9mIFttYXBdIGFuZCBbZmlsdGVyX21hcF0gYXJlIHN1YnRsZS4gIFRoZSBpbnB1dCBzZXQsIFsoJ2EsIF8pIHNldF0sXG4gICAgICByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IHRoZXNlIGZ1bmN0aW9ucyB0YWtlIGEgc2V0IG9mICphbnkqIHR5cGUsIHdpdGggYW55XG4gICAgICBjb21wYXJhdG9yLCB3aGlsZSB0aGUgb3V0cHV0IHNldCwgWygnYiwgJ2NtcCkgdF0sIHJlZmxlY3RzIHRoYXQgdGhlIG91dHB1dCBzZXQgaGFzXG4gICAgICB0aGUgcGFydGljdWxhciBbJ2NtcF0gb2YgdGhlIGNyZWF0aW9uIGZ1bmN0aW9uLiAgVGhlIGNvbXBhcmF0b3IgY2FuIGNvbWUgaW4gb25lIG9mXG4gICAgICB0aHJlZSB3YXlzLCBkZXBlbmRpbmcgb24gd2hpY2ggc2V0IG1vZHVsZSBpcyB1c2VkXG5cbiAgICAgIC0gW1NldC5tYXBdIC0tIGNvbXBhcmF0b3IgY29tZXMgYXMgYW4gYXJndW1lbnRcbiAgICAgIC0gW1NldC5Qb2x5Lm1hcF0gLS0gY29tcGFyYXRvciBpcyBwb2x5bW9ycGhpYyBjb21wYXJpc29uXG4gICAgICAtIFtGb28uU2V0Lm1hcF0gLS0gY29tcGFyYXRvciBpcyBbRm9vLmNvbXBhcmF0b3JdICopXG4gIHZhbCBtYXBcbiAgICA6ICgnYiwgJ2NtcCwgKCdhLCBfKSBzZXQgLT4gZjooKCdhIC0+ICdiIGVsdClbQGxvY2FsXSkgLT4gKCdiLCAnY21wKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoICdiXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCBfKSBzZXQgLT4gZjooKCdhIC0+ICdiIGVsdCBvcHRpb24pW0Bsb2NhbF0pIC0+ICgnYiwgJ2NtcCkgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdjbXAsICgnYSBlbHQsICdjbXAgY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdCkgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdFxuICB0eXBlICgnZWx0LCAnY21wKSB0cmVlXG4gIHR5cGUgJ2VsdCBlbHRcbiAgdHlwZSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BvbHkgPSBzaWdcbiAgdHlwZSAnZWx0IHRcbiAgdHlwZSAnZWx0IHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnZWx0LCAnY21wKSB0IDo9ICdlbHQgdFxuICAgIHdpdGggdHlwZSAoJ2VsdCwgJ2NtcCkgdHJlZSA6PSAnZWx0IHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdCA6IChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsICdjbXApIHQgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gKCdlbHQsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190IDogKG1vZHVsZSBDb21wYXJlX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWxfbV9fdCA6IChtb2R1bGUgRXF1YWxfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2VsdCwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcblxuICB2YWwgaGFzaF9tX190IDogKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCBfKSB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICAoKiogU2V0cyBiYXNlZCBvbiB7IUNvbXBhcmF0b3IuU30uXG5cbiAgICAgIENyZWF0b3JzIHJlcXVpcmUgYSBjb21wYXJhdG9yIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCBpbiwgd2hlcmVhcyBhY2Nlc3NvcnMgdXNlIHRoZVxuICAgICAgY29tcGFyYXRvciBwcm92aWRlZCBieSB0aGUgaW5wdXQgc2V0LiAqKVxuXG4gICgqKiBUaGUgdHlwZSBvZiBhIHNldC4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LCBhbmRcbiAgICAgIHRoZSBzZWNvbmQgaWRlbnRpZmllcyB0aGUgY29tcGFyYXRvciwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiB0aGF0XG4gICAgICBpcyB1c2VkIGZvciBvcmRlcmluZyBlbGVtZW50cyBpbiB0aGlzIHNldC4gIE1hbnkgb3BlcmF0aW9ucyAoZS5nLiwgeyF1bmlvbn0pLFxuICAgICAgcmVxdWlyZSB0aGF0IHRoZXkgYmUgcGFzc2VkIHNldHMgd2l0aCB0aGUgc2FtZSBlbGVtZW50IHR5cGUgYW5kIHRoZSBzYW1lIGNvbXBhcmF0b3JcbiAgICAgIHR5cGUuICopXG4gIHR5cGUgKCEnZWx0LCAhJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoISdlbHQsICEnY21wKSB0IDo9ICgnZWx0LCAnY21wKSB0XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9ICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTJdIHVzZSBbQ29tcGFyYXRvci5Nb2R1bGUudF0gaW5zdGVhZFwiXVxuXG4gICgqKiBUZXN0cyBpbnRlcm5hbCBpbnZhcmlhbnRzIG9mIHRoZSBzZXQgZGF0YSBzdHJ1Y3R1cmUuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4gKilcbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgYSBmaXJzdC1jbGFzcyBtb2R1bGUgdGhhdCBjYW4gYmUgdXNlZCB0byBidWlsZCBvdGhlciBtYXAvc2V0L2V0Y1xuICAgICAgd2l0aCB0aGUgc2FtZSBub3Rpb24gb2YgY29tcGFyaXNvbi4gKilcbiAgdmFsIGNvbXBhcmF0b3JfcyA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcblxuICB2YWwgY29tcGFyYXRvciA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICgqKiBDcmVhdGVzIGFuIGVtcHR5IHNldCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29tcGFyYXRvci4gKilcbiAgdmFsIGVtcHR5IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yIHRoYXQgY29udGFpbnMgb25seSB0aGUgcHJvdmlkZWRcbiAgICAgIGVsZW1lbnQuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSBzZXQuIFtPKDEpXS4gKilcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuXG4gICgqKiBbaXNfZW1wdHkgdF0gaXMgW3RydWVdIGlmZiBbdF0gaXMgZW1wdHkuICBbTygxKV0uICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW21lbSB0IGFdIHJldHVybnMgW3RydWVdIGlmZiBbYV0gaXMgaW4gW3RdLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIG1lbSA6ICgnYSwgXykgdCAtPiAnYSAtPiBib29sXG5cbiAgKCoqIFthZGQgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSBhZGRlZCB0byBbdF0sIG9yIHJldHVybnMgW3RdIGlmIFttZW0gdCBhXS5cbiAgICAgIFtPKGxvZyBuKV0uICopXG4gIHZhbCBhZGQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtyZW1vdmUgdCBhXSByZXR1cm5zIGEgbmV3IHNldCB3aXRoIFthXSByZW1vdmVkIGZyb20gW3RdIGlmIFttZW0gdCBhXSwgb3IgcmV0dXJucyBbdF1cbiAgICAgIG90aGVyd2lzZS4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiB0MSB0Ml0gcmV0dXJucyB0aGUgdW5pb24gb2YgdGhlIHR3byBzZXRzLiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCB1bmlvbiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt1bmlvbiBjIGxpc3RdIHJldHVybnMgdGhlIHVuaW9uIG9mIGFsbCB0aGUgc2V0cyBpbiBbbGlzdF0uICBUaGVcbiAgICAgIFtjb21wYXJhdG9yXSBhcmd1bWVudCBpcyByZXF1aXJlZCBmb3IgdGhlIGNhc2Ugd2hlcmUgW2xpc3RdIGlzIGVtcHR5LlxuICAgICAgW08obWF4KExpc3QubGVuZ3RoIGxpc3QsIG4gbG9nIG4pKV0sIHdoZXJlIFtuXSBpcyB0aGUgc3VtIG9mIHNpemVzIG9mIHRoZSBpbnB1dCBzZXRzLiAqKVxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdjbXApIHQgbGlzdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ludGVyIHQxIHQyXSBjb21wdXRlcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHNldHMgW3QxXSBhbmQgW3QyXS4gIFtPKGxlbmd0aCB0MSArXG4gICAgICBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGludGVyIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2RpZmYgdDEgdDJdIGNvbXB1dGVzIHRoZSBzZXQgZGlmZmVyZW5jZSBbdDEgLSB0Ml0sIGkuZS4sIHRoZSBzZXQgY29udGFpbmluZyBhbGxcbiAgICAgIGVsZW1lbnRzIGluIFt0MV0gdGhhdCBhcmUgbm90IGluIFt0Ml0uICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3ltbWV0cmljX2RpZmYgdDEgdDJdIHJldHVybnMgYSBzZXF1ZW5jZSBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS4gSXQgaXNcbiAgICAgIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50IG9mXG4gICAgICBzdHJ1Y3R1cmUuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gICgqKiBbY29tcGFyZV9kaXJlY3QgdDEgdDJdIGNvbXBhcmVzIHRoZSBzZXRzIFt0MV0gYW5kIFt0Ml0uICBJdCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdFxuICAgICAgYXMgW2NvbXBhcmVdLCBidXQgdW5saWtlIGNvbXBhcmUsIGRvZXNuJ3QgcmVxdWlyZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIGZvciB0aGVcbiAgICAgIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgc2V0LiAgW08obGVuZ3RoIHQxICsgbGVuZ3RoIHQyKV0uICopXG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gaW50XG5cbiAgKCoqIEhhc2ggZnVuY3Rpb246IGEgYnVpbGRpbmcgYmxvY2sgdG8gdXNlIHdoZW4gaGFzaGluZyBkYXRhIHN0cnVjdHVyZXMgY29udGFpbmluZyBzZXRzIGluXG4gICAgICB0aGVtLiBbaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggW2NvbXBhcmVfZGlyZWN0XSBpZmZcbiAgICAgIFtoYXNoX2ZvbGRfa2V5XSBpcyBjb21wYXRpYmxlIHdpdGggWyhjb21wYXJhdG9yIHMpLmNvbXBhcmVdIG9mIHRoZSBzZXQgW3NdIGJlaW5nXG4gICAgICBoYXNoZWQuICopXG4gIHZhbCBoYXNoX2ZvbGRfZGlyZWN0IDogJ2EgSGFzaC5mb2xkZXIgLT4gKCdhLCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZSB0d28gc2V0cyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildICopXG4gIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbZXhpc3RzIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiB0aGVyZSBleGlzdHMgYW4gW2FdIGluIFt0XSBmb3Igd2hpY2ggW2YgYV0uICBbTyhuKV0sXG4gICAgICBidXQgcmV0dXJucyBhcyBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW2YgYV0uICopXG4gIHZhbCBleGlzdHMgOiAoJ2EsIF8pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcblxuICAoKiogW2Zvcl9hbGwgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIGZvciBhbGwgW2FdIGluIFt0XSwgW2YgYV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzXG4gICAgICBzb29uIGFzIGl0IGZpbmRzIGFuIFthXSBmb3Igd2hpY2ggW25vdCAoZiBhKV0uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG5cbiAgKCoqIFtjb3VudCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyBbdHJ1ZV0uXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gaW50XG5cbiAgKCoqIFtzdW0gdF0gcmV0dXJucyB0aGUgc3VtIG9mIFtmIHRdIGZvciBlYWNoIFt0XSBpbiB0aGUgc2V0LlxuICAgICAgW08obildLiAqKVxuICB2YWwgc3VtXG4gICAgOiAgKG1vZHVsZSBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnc3VtKVtAbG9jYWxdKVxuICAgIC0+ICdzdW1cblxuICAoKiogW2ZpbmQgdCBmXSByZXR1cm5zIGFuIGVsZW1lbnQgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyB0cnVlLCB3aXRoIG5vIGd1YXJhbnRlZSBhc1xuICAgICAgdG8gd2hpY2ggZWxlbWVudCBpcyByZXR1cm5lZC4gIFtPKG4pXSwgYnV0IHJldHVybnMgYXMgc29vbiBhcyBhIHN1aXRhYmxlIGVsZW1lbnQgaXNcbiAgICAgIGZvdW5kLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOigoJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtmaW5kX21hcCB0IGZdIHJldHVybnMgW2JdIGZvciBzb21lIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGEgPSBTb21lIGJdLiAgSWYgbm8gc3VjaFxuICAgICAgW2FdIGV4aXN0cywgdGhlbiBbZmluZF0gcmV0dXJucyBbTm9uZV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZVxuICAgICAgZWxlbWVudCBpcyBmb3VuZC4gKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiIG9wdGlvblxuXG4gICgqKiBMaWtlIFtmaW5kXSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4gKilcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYVxuXG4gICgqKiBbbnRoIHQgaV0gcmV0dXJucyB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCBvZiBbdF0sIGluIFtPKGxvZyBuKV0gdGltZS4gIFRoZVxuICAgICAgc21hbGxlc3QgZWxlbWVudCBoYXMgW2kgPSAwXS4gIFJldHVybnMgW05vbmVdIGlmIFtpIDwgMF0gb3IgW2kgPj0gbGVuZ3RoIHRdLiAqKVxuICB2YWwgbnRoIDogKCdhLCBfKSB0IC0+IGludCAtPiAnYSBvcHRpb25cblxuICAoKiogW3JlbW92ZV9pbmRleCB0IGldIHJldHVybnMgYSB2ZXJzaW9uIG9mIFt0XSB3aXRoIHRoZSBbaV10aCBzbWFsbGVzdCBlbGVtZW50IHJlbW92ZWQsXG4gICAgICBpbiBbTyhsb2cgbildIHRpbWUuICBUaGUgc21hbGxlc3QgZWxlbWVudCBoYXMgW2kgPSAwXS4gIFJldHVybnMgW3RdIGlmIFtpIDwgMF0gb3JcbiAgICAgIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtpc19zdWJzZXQgdDEgfm9mXzp0Ml0gcmV0dXJucyB0cnVlIGlmZiBbdDFdIGlzIGEgc3Vic2V0IG9mIFt0Ml0uICopXG4gIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFthcmVfZGlzam9pbnQgdDEgdDJdIHJldHVybnMgW3RydWVdIGlmZiBbaXNfZW1wdHkgKGludGVyIHQxIHQyKV0sIGJ1dCBpcyBtb3JlXG4gICAgICBlZmZpY2llbnQuICopXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcblxuICAoKiogW05hbWVkXSBhbGxvd3MgdGhlIHZhbGlkYXRpb24gb2Ygc3Vic2V0IGFuZCBlcXVhbGl0eSByZWxhdGlvbnNoaXBzIGJldHdlZW4gc2V0cy4gIEFcbiAgICAgIFtOYW1lZC50XSBpcyBhIHJlY29yZCBvZiBhIHNldCBhbmQgYSBuYW1lLCB3aGVyZSB0aGUgbmFtZSBpcyB1c2VkIGluIGVycm9yIG1lc3NhZ2VzLFxuICAgICAgYW5kIFtOYW1lZC5pc19zdWJzZXRdIGFuZCBbTmFtZWQuZXF1YWxdIHZhbGlkYXRlIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwc1xuICAgICAgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgZXJyb3IgbWVzc2FnZSBmb3IsIGUuZy4sXG4gICAgICB7W1xuICAgICAgICBOYW1lZC5pc19zdWJzZXQgeyBzZXQgPSBzZXQxOyBuYW1lID0gXCJzZXQxXCIgfSB+b2ZfOntzZXQgPSBzZXQyOyBuYW1lID0gXCJzZXQyXCIgfVxuICAgICAgXX1cblxuICAgICAgbG9va3MgbGlrZVxuICAgICAge3ZcbiAgICAgICAgKFwic2V0MSBpcyBub3QgYSBzdWJzZXQgb2Ygc2V0MlwiIChpbnZhbGlkX2VsZW1lbnRzICguLi5lbGVtZW50cyBvZiBzZXQxIC0gc2V0Mi4uLikpKVxuICAgICAgIHZ9XG5cbiAgICAgIHNvIFtuYW1lXSBzaG91bGQgYmUgYSBub3VuIHBocmFzZSB0aGF0IGRvZXNuJ3Qgc291bmQgYXdrd2FyZCBpbiB0aGUgYWJvdmUgZXJyb3JcbiAgICAgIG1lc3NhZ2UuICBFdmVuIHRob3VnaCBpdCBhZGRzIHZlcmJvc2l0eSwgY2hvb3NpbmcgW25hbWVdcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHBocmFzZVxuICAgICAgXCJ0aGUgc2V0IG9mXCIgb2Z0ZW4gbWFrZXMgdGhlIGVycm9yIG1lc3NhZ2Ugc291bmQgbW9yZSBuYXR1cmFsLlxuICAqKVxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2NtcCkgc2V0IDo9ICgnYSwgJ2NtcCkgdFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgTmFtZWQudCA9XG4gICAgICB7IHNldCA6ICdhXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIH1cblxuICAgICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGEgc3Vic2V0IG9mIFt0Ml0gYW5kIGFcbiAgICAgICAgaHVtYW4tcmVhZGFibGUgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSBzZXQgdCAtPiBvZl86KCdhLCAnY21wKSBzZXQgdCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICgqKiBbZXF1YWwgdDEgdDJdIHJldHVybnMgW09rICgpXSBpZiBbdDFdIGlzIGVxdWFsIHRvIFt0Ml0gYW5kIGEgaHVtYW4tcmVhZGFibGVcbiAgICAgICAgZXJyb3Igb3RoZXJ3aXNlLiAgKilcbiAgICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHNldCB0IC0+ICgnYSwgJ2NtcCkgc2V0IHQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gICgqKiBUaGUgbGlzdCBvciBhcnJheSBnaXZlbiB0byBbb2ZfbGlzdF0gYW5kIFtvZl9hcnJheV0gbmVlZCBub3QgYmUgc29ydGVkLiAqKVxuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt0b19saXN0XSBhbmQgW3RvX2FycmF5XSBwcm9kdWNlIHNlcXVlbmNlcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGFjY29yZGluZyB0byB0aGVcbiAgICAgIGNvbXBhcmF0b3IuICopXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogQ3JlYXRlIHNldCBmcm9tIHNvcnRlZCBhcnJheS4gIFRoZSBpbnB1dCBtdXN0IGJlIHNvcnRlZCAoZWl0aGVyIGluIGFzY2VuZGluZyBvclxuICAgICAgZGVzY2VuZGluZyBvcmRlciBhcyBnaXZlbiBieSB0aGUgY29tcGFyYXRvcikgYW5kIGNvbnRhaW4gbm8gZHVwbGljYXRlcywgb3RoZXJ3aXNlIHRoZVxuICAgICAgcmVzdWx0IGlzIGFuIGVycm9yLiAgVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBbTyhuKV0uICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFNpbWlsYXIgdG8gW29mX3NvcnRlZF9hcnJheV0sIGJ1dCB3aXRob3V0IGNoZWNraW5nIHRoZSBpbnB1dCBhcnJheS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KChpbnQgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzdGFibGVfZGVkdXBfbGlzdF0gaXMgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgW0xpc3RdIG1vZHVsZSBiZWNhdXNlIHRoZVxuICAgICAgaW1wbGVtZW50YXRpb24gcmVsaWVzIGNydWNpYWxseSBvbiBzZXRzLCBhbmQgYmVjYXVzZSBkb2luZyBzbyBhbGxvd3Mgb25lIHRvIGF2b2lkIHVzZXNcbiAgICAgIG9mIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYnkgaW5zdGFudGlhdGluZyB0aGUgZnVuY3RvciBhdCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuICAgICAgb2YgW0NvbXBhcmF0b3JdIGFuZCB1c2luZyB0aGUgcmVzdWx0aW5nIFtzdGFibGVfZGVkdXBfbGlzdF0uICopXG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6ICgnYSwgXykgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAoKiogW21hcCBjIHQgfmZdIHJldHVybnMgYSBuZXcgc2V0IGNyZWF0ZWQgYnkgYXBwbHlpbmcgW2ZdIHRvIGV2ZXJ5IGVsZW1lbnQgaW5cbiAgICAgIFt0XS4gIFRoZSByZXR1cm5lZCBzZXQgaXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIFtjb21wYXJhdG9yXS4gIFtPKG4gbG9nIG4pXS4gKilcbiAgdmFsIG1hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogTGlrZSB7IW1hcH0sIGV4Y2VwdCBlbGVtZW50cyBmb3Igd2hpY2ggW2ZdIHJldHVybnMgW05vbmVdIHdpbGwgYmUgZHJvcHBlZC4gICopXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIHRoZSBzdWJzZXQgb2YgW3RdIGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICBbTyhuIGxvZ1xuICAgICAgbildLiAqKVxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvIGxhcmdlc3QuICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LCBzaG9ydCBjaXJjdWl0aW5nIHRoZSBmb2xkIGlmIFtmIGFjY3VtIHhdIGlzIGFuIFtFcnJvciBfXSAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAoJ2FjYywgJ2UpIFJlc3VsdC50KVtAbG9jYWxdKVxuICAgIC0+ICgnYWNjLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdLiBJZiBbZl1cbiAgICAgIHJldHVybnMgW1N0b3AgX10gdGhlIGNvbXB1dGF0aW9uIGNlYXNlcyBhbmQgcmVzdWx0cyBpbiB0aGF0IHZhbHVlLiBJZiBbZl0gcmV0dXJuc1xuICAgICAgW0NvbnRpbnVlIF9dLCB0aGUgZm9sZCB3aWxsIHByb2NlZWQuICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClbQGxvY2FsXSlcbiAgICAtPiBmaW5pc2g6KCgnYWNjIC0+ICdmaW5hbClbQGxvY2FsXSlcbiAgICAtPiAnZmluYWxcblxuXG4gICgqKiBMaWtlIHshZm9sZH0sIGV4Y2VwdCB0aGF0IGl0IGdvZXMgZnJvbSB0aGUgbGFyZ2VzdCB0byB0aGUgc21hbGxlc3QgZWxlbWVudC4gKilcbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjIC0+IGY6KCgnYSAtPiAnYWNjIC0+ICdhY2MpW0Bsb2NhbF0pIC0+ICdhY2NcblxuICAoKiogW2l0ZXIgdCB+Zl0gY2FsbHMgW2ZdIG9uIGV2ZXJ5IGVsZW1lbnQgb2YgW3RdLCBnb2luZyBpbiBvcmRlciBmcm9tIHRoZSBzbWFsbGVzdCB0b1xuICAgICAgbGFyZ2VzdC4gICopXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCgnYSAtPiB1bml0KVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGUgdHdvIHNldHMgc2lkZSBieSBzaWRlLiAgQ29tcGxleGl0eSBpcyBbTyhtK24pXSB3aGVyZSBbbV0gYW5kIFtuXSBhcmUgdGhlIHNpemVzXG4gICAgICBvZiB0aGUgdHdvIGlucHV0IHNldHMuICBBcyBhbiBleGFtcGxlLCB3aXRoIHRoZSBpbnB1dHMgWzA7IDFdIGFuZCBbMTsgMl0sIFtmXSB3aWxsIGJlXG4gICAgICBjYWxsZWQgd2l0aCBbYExlZnQgMF07IFtgQm90aCAoMSwgMSldOyBhbmQgW2BSaWdodCAyXS4gKilcbiAgdmFsIGl0ZXIyXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooKFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClbQGxvY2FsXSlcbiAgICAtPiB1bml0XG5cbiAgKCoqIGlmIFthLCBiID0gcGFydGl0aW9uX3RmIHNldCB+Zl0gdGhlbiBbYV0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlZCBbdHJ1ZV0sXG4gICAgICBhbmQgW2JdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZXMgW2ZhbHNlXS4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBTYW1lIGFzIHshdG9fbGlzdH0uICopXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG5cbiAgKCoqIFJldHVybnMgdGhlIHNtYWxsZXN0IGVsZW1lbnQgb2YgdGhlIHNldC4gIFtPKGxvZyBuKV0uICopXG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWluX2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogUmV0dXJucyB0aGUgbGFyZ2VzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAgKilcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFtYXhfZWx0fSwgYnV0IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuXG4gICgqKiByZXR1cm5zIGFuIGFyYml0cmFyeSBlbGVtZW50LCBvciBbTm9uZV0gaWYgdGhlIHNldCBpcyBlbXB0eS4gKilcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IWNob29zZX0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogW3NwbGl0IHQgeF0gcHJvZHVjZXMgYSB0cmlwbGUgWyh0MSwgbWF5YmVfeCwgdDIpXS5cblxuICAgICAgW3QxXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGxlc3MgdGhhbiBbeF0sXG4gICAgICBbbWF5YmVfeF0gaXMgdGhlIG1lbWJlciAoaWYgYW55KSBvZiBbdF0gd2hpY2ggY29tcGFyZXMgZXF1YWwgdG8gW3hdLFxuICAgICAgW3QyXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGxhcmdlciB0aGFuIFt4XS4gKilcbiAgdmFsIHNwbGl0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICdhIG9wdGlvbiAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbGVfZ3QgdCB4XSBwcm9kdWNlcyBhIHBhaXIgWyh0MSwgdDIpXS5cblxuICAgICAgW3QxXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBbeF0sXG4gICAgICBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIFt4XS4gKilcbiAgdmFsIHNwbGl0X2xlX2d0IDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbc3BsaXRfbHRfZ2UgdCB4XSBwcm9kdWNlcyBhIHBhaXIgWyh0MSwgdDIpXS5cblxuICAgICAgW3QxXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHN0cmljdGx5IGxlc3MgdGhhbiBbeF0sXG4gICAgICBbdDJdIGlzIHRoZSBzZXQgb2YgZWxlbWVudHMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFt4XS4gKilcbiAgdmFsIHNwbGl0X2x0X2dlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdCAqICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBpZiBbZXF1aXZdIGlzIGFuIGVxdWl2YWxlbmNlIHByZWRpY2F0ZSwgdGhlbiBbZ3JvdXBfYnkgc2V0IH5lcXVpdl0gcHJvZHVjZXMgYSBsaXN0XG4gICAgICBvZiBlcXVpdmFsZW5jZSBjbGFzc2VzIChpLmUuLCBhIHNldC10aGVvcmV0aWMgcXVvdGllbnQpLiAgRS5nLixcblxuICAgICAge1tcbiAgICAgICAgbGV0IGNoYXJzID0gU2V0Lm9mX2xpc3QgWydBJzsgJ2EnOyAnYic7ICdjJ10gaW5cbiAgICAgICAgbGV0IGVxdWl2IGMgYycgPSBDaGFyLmVxdWFsIChDaGFyLnVwcGVyY2FzZSBjKSAoQ2hhci51cHBlcmNhc2UgYycpIGluXG4gICAgICAgIGdyb3VwX2J5IGNoYXJzIH5lcXVpdlxuICAgICAgXX1cblxuICAgICAgcHJvZHVjZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFtTZXQub2ZfbGlzdCBbJ0EnOydhJ107IFNldC5zaW5nbGV0b24gJ2InOyBTZXQuc2luZ2xldG9uICdjJ11cbiAgICAgIF19XG5cbiAgICAgIFtncm91cF9ieV0gcnVucyBpbiBPKG5eMikgdGltZSwgc28gaWYgeW91IGhhdmUgYSBjb21wYXJpc29uIGZ1bmN0aW9uLCBpdCdzIHVzdWFsbHlcbiAgICAgIG11Y2ggZmFzdGVyIHRvIHVzZSBbU2V0Lm9mX2xpc3RdLiAqKVxuICB2YWwgZ3JvdXBfYnkgOiAoJ2EsICdjbXApIHQgLT4gZXF1aXY6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gICgqKiBbdG9fc2VxdWVuY2UgdF0gY29udmVydHMgdGhlIHNldCBbdF0gdG8gYSBzZXF1ZW5jZSBvZiB0aGUgZWxlbWVudHMgYmV0d2VlblxuICAgICAgW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZCBbbGVzc19vcl9lcXVhbF90b10gaW5jbHVzaXZlIGluIHRoZSBvcmRlciBpbmRpY2F0ZWQgYnlcbiAgICAgIFtvcmRlcl0uICBJZiBbZ3JlYXRlcl9vcl9lcXVhbF90byA+IGxlc3Nfb3JfZXF1YWxfdG9dIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eS4gIENvc3QgaXNcbiAgICAgIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSBmb3IgZWFjaCBlbGVtZW50IHByb2R1Y2VkLiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgZWxlbWVudCBpbiBbdF0gc3BlY2lmaWVkIGJ5XG4gICAgICBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAna2V5IC0+IGludClbQGxvY2FsXSlcbiAgICAtPiBbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAoKiogICAgICAgIHt2IHwgPCBlbHQgWCB8ICAgICAgICAgICAgICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvICgqKiAgICAge3YgfCAgICAgIDw9IGVsdCAgICAgICBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCAgID0gZWx0IFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9lcXVhbF90byAoKiogICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8IFggPSBlbHQgICB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byAoKioge3YgICAgICAgICAgIHwgWCAgICAgICA+PSBlbHQgICAgICB8IHZ9ICopXG4gICAgICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuICgqKiAgICB7diAgICAgICAgICAgICAgICAgICAgICAgfCBYID4gZWx0IHwgdn0gKilcbiAgICAgICBdXG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiB3aGljaF0gdGFrZXMgYSBbc2VnbWVudF9vZl0gZnVuY3Rpb24gdGhhdFxuICAgICAgZGl2aWRlcyBbdF0gaW50byB0d28gKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCBzZWdtZW50X29mIGVsdCA9IGBMZWZ0IHwgc2VnbWVudF9vZiBlbHQgPSBgUmlnaHQgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSByZXR1cm5zIHRoZSBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiB0aGUgc2VnbWVudHMgYXNcbiAgICAgIHNwZWNpZmllZCBieSBbd2hpY2hdOiBbYExhc3Rfb25fbGVmdF0geWllbGRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGxlZnQgc2VnbWVudCxcbiAgICAgIHdoaWxlIFtgRmlyc3Rfb25fcmlnaHRdIHlpZWxkcyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcmlnaHQgc2VnbWVudC4gIEl0IHJldHVybnNcbiAgICAgIFtOb25lXSBpZiB0aGUgc2VnbWVudCBpcyBlbXB0eS5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hfc2VnbWVudGVkXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtzZWdtZW50X29mXSBzZWdtZW50cyBbdF0gYXMgaW4gdGhlXG4gICAgICBkaWFncmFtLCBhbmQgYmVoYXZpb3IgaXMgdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIGRvZXNuJ3Qgc2VnbWVudCBbdF0uICBCZWhhdmlvclxuICAgICAgaXMgYWxzbyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gbXV0YXRlcyBbdF0uICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCgnYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pW0Bsb2NhbF0pXG4gICAgLT4gWyBgTGFzdF9vbl9sZWZ0IHwgYEZpcnN0X29uX3JpZ2h0IF1cbiAgICAtPiAnYSBvcHRpb25cblxuICAoKiogUHJvZHVjZXMgdGhlIGVsZW1lbnRzIG9mIHRoZSB0d28gc2V0cyBiZXR3ZWVuIFtncmVhdGVyX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtsZXNzX29yX2VxdWFsX3RvXSBpbiBbb3JkZXJdLCBub3Rpbmcgd2hldGhlciBlYWNoIGVsZW1lbnQgYXBwZWFycyBpbiB0aGUgbGVmdCBzZXQsXG4gICAgICB0aGUgcmlnaHQgc2V0LCBvciBib3RoLiAgSW4gdGhlIGJvdGggY2FzZSwgYm90aCBlbGVtZW50cyBhcmUgcmV0dXJuZWQsIGluIGNhc2UgdGhlXG4gICAgICBjYWxsZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZWxlbWVudHMgdGhhdCBhcmUgZXF1YWwgdG8gdGhlIHNldHMnIGNvbXBhcmF0b3IuICBSdW5zXG4gICAgICBpbiBPKGxlbmd0aCB0ICsgbGVuZ3RoIHQnKS4gKilcbiAgbW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50ID1cbiAgICAgIHwgTGVmdCBvZiAnYVxuICAgICAgfCBSaWdodCBvZiAnYlxuICAgICAgfCBCb3RoIG9mICdhICogJ2JcbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgKCoqIGRlZmF1bHQgKikgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtNXSBpcyBtZWFudCB0byBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggT0NhbWwgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlczpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gU2V0Lk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ19zZXQgPSAoU3RyaW5nLnQsIFN0cmluZy5jb21wYXJhdG9yX3dpdG5lc3MpIFNldC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbU2V0Lk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kIHN5bnRheFxuICAgICAgZG9lc24ndCAoYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzLCBzYXksIFN0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzcyxcbiAgICAgIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuICopXG4gIG1vZHVsZSBNIChFbHQgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqIEEgcG9seW1vcnBoaWMgU2V0LiAqKVxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAoKiogVXNpbmcgY29tcGFyYXRvciBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbU2V0XSwgZXhjZXB0IHRoZSBmdW5jdGlvbnNcbiAgICAgIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdlbHQsICdjbXApIENvbXBhcmF0b3IudF0gd2hlcmUgdGhlIGZ1bmN0aW9ucyBhdCB0aGUgdG9wbGV2ZWwgb2ZcbiAgICAgIFtTZXRdIHRha2VzIGEgWygnZWx0LCAnY21wKSBjb21wYXJhdG9yXS4gKilcbiAgbW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyAoJ2VsdCwgJ2NtcCkgdCA9ICgnZWx0LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdlbHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdjbXAgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdlbHQsICdjbXApIHRcbiAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICA6ICBjb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgIC0+IFNleHAudFxuICAgICAgLT4gKCdlbHQsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICAoKiogQSBbVHJlZS50XSBjb250YWlucyBqdXN0IHRoZSB0cmVlIGRhdGEgc3RydWN0dXJlIHRoYXQgYSBzZXQgaXMgYmFzZWQgb24sIHdpdGhvdXRcbiAgICAgICAgICBpbmNsdWRpbmcgdGhlIGNvbXBhcmF0b3IuICBBY2NvcmRpbmdseSwgYW55IG9wZXJhdGlvbiBvbiBhIFtUcmVlLnRdIG11c3QgYWxzbyB0YWtlXG4gICAgICAgICAgYXMgYW4gYXJndW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgY29tcGFyYXRvci4gKilcbiAgICAgIHR5cGUgKCdhLCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICB2YWwgc2V4cF9vZl90XG4gICAgICAgIDogICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgIC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgICA6ICBjb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnZWx0KVxuICAgICAgICAtPiBTZXhwLnRcbiAgICAgICAgLT4gKCdlbHQsICdjbXApIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aF9jb21wYXJhdG9yLnRcblxuICAgICAgdmFsIGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gOiAoXywgXykgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYVxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhfY29tcGFyYXRvci50XG5cbiAgICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnZWx0IEhhc2guZm9sZGVyIC0+ICgnZWx0LCAnY21wKSB0IEhhc2guZm9sZGVyXG5cbiAgICBtb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG5cbiAgdmFsIG9mX3RyZWVcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EsICdjbXApIFVzaW5nX2NvbXBhcmF0b3IuVHJlZS50XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtTZXRdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V0X2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEVtcHR5XG4gICAgKCogKExlYWYgeCkgaXMgdGhlIHNhbWUgYXMgKE5vZGUgKEVtcHR5LCB4LCBFbXB0eSwgMSwgMSkpIGJ1dCB1c2VzIGxlc3Mgc3BhY2UuICopXG4gICAgfCBMZWFmIG9mICdhXG4gICAgKCogZmlyc3QgaW50IGlzIGhlaWdodCwgc2Vjb25kIGlzIHN1Yi10cmVlIHNpemUgKilcbiAgICB8IE5vZGUgb2YgJ2EgdCAqICdhICogJ2EgdCAqIGludCAqIGludFxuXG4gIHR5cGUgJ2EgdHJlZSA9ICdhIHRcblxuICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZSBjaGlsZHJlbiBkaWZmZXIgYnlcbiAgICAgYXQgbW9zdCAyLiAqKVxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdiA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfZWx0IGxvd2VyIHYgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9lbHQgdiB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgdiAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIGgsIG4pIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBuID0gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIHYpIGNvbXBhcmVfZWx0IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSB2KSB1cHBlciBjb21wYXJlX2VsdCByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9lbHQgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9lbHQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2VcbiAgOztcblxuICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgaWYgaCA9IDFcbiAgICB0aGVuIExlYWYgdlxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuU2V0IG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrID0gZiBpIGluXG4gICAgICAgIExlYWYga1xuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgRW1wdHlcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyID0gZiAoaSArIDIpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayAoTGVhZiBrcilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgICgqIFdlIGRvbid0IGNoZWNrIGlmIHRoZSBhcnJheSBpcyBzb3J0ZWQgb3Iga2V5cyBhcmUgZHVwbGljYXRlZCwgYmVjYXVzZSB0aGF0XG4gICAgICAgICBjaGVja2luZyBpcyBzbG93ZXIgdGhhbiB0aGUgd2hvbGUgW29mX3NvcnRlZF9hcnJheV0gZnVuY3Rpb24gKilcbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDIgfHwgY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHRcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT4gUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdClcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oaSkgYXJyYXkuKGkgKyAxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCkpXG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUsIGJ1dCBwZXJmb3JtcyBvbmUgc3RlcCBvZiByZWJhbGFuY2luZyBpZiBuZWNlc3NhcnkuXG4gICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgIHdoZXJlIG5vIHJlYmFsYW5jaW5nIGlzIHJlcXVpcmVkLiAqKVxuXG4gIGxldCBiYWwgbCB2IHIgPVxuICAgIGxldCBobCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaHIgPVxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IDBcbiAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgIHwgTm9kZSAoXywgXywgXywgaCwgXykgLT4gaFxuICAgIGluXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBiZWNhdXNlIGgobCk+aChyKSsyIGFuZCBoKGxlYWYpPTEgKilcbiAgICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBMZWFmIGxydiAtPlxuICAgICAgICAgICAgYXNzZXJ0IChpc19lbXB0eSBsbCk7XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBFbXB0eSkgbHJ2IChjcmVhdGUgRW1wdHkgdiByKVxuICAgICAgICAgIHwgTm9kZSAobHJsLCBscnYsIGxyciwgXywgXykgLT4gY3JlYXRlIChjcmVhdGUgbGwgbHYgbHJsKSBscnYgKGNyZWF0ZSBscnIgdiByKSkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChyKT5oKGwpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsXG4gICAgICAgIHRoZW4gY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgcmx2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IHJyKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBFbXB0eSkgcmx2IChjcmVhdGUgRW1wdHkgcnYgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBoID0gaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEgaW5cbiAgICAgIGxldCBzbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBsZXQgc3IgPVxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTGVhZiBfIC0+IDFcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG4gICAgICBpblxuICAgICAgaWYgaCA9IDEgdGhlbiBMZWFmIHYgZWxzZSBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgZXhjZXB0aW9uIFNhbWVcblxuICBsZXQgYWRkIHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBjcmVhdGUgKExlYWYgeCkgdiBFbXB0eVxuICAgICAgICBlbHNlIGNyZWF0ZSBFbXB0eSB2IChMZWFmIHgpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwpIHYgclxuICAgICAgICBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gICgqIHNwZWNpYWxpemF0aW9uIG9mIFthZGRdIHRoYXQgYXNzdW1lcyB0aGF0IFt4XSBpcyBsZXNzIHRoYW4gYWxsIGV4aXN0aW5nIGVsZW1lbnRzICopXG4gIGxldCByZWMgYWRkX21pbiB4IHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiB4XG4gICAgfCBMZWFmIF8gLT4gTm9kZSAoRW1wdHksIHgsIHQsIDIsIDIpXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgKGFkZF9taW4geCBsKSB2IHJcbiAgOztcblxuICAoKiBzcGVjaWFsaXphdGlvbiBvZiBbYWRkXSB0aGF0IGFzc3VtZXMgdGhhdCBbeF0gaXMgZ3JlYXRlciB0aGFuIGFsbCBleGlzdGluZyBlbGVtZW50cyAqKVxuICBsZXQgcmVjIGFkZF9tYXggdCB4ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgeFxuICAgIHwgTGVhZiBfIC0+IE5vZGUgKHQsIHgsIEVtcHR5LCAyLCAyKVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gYmFsIGwgdiAoYWRkX21heCByIHgpXG4gIDs7XG5cbiAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kXG4gICAgIHIuICopXG4gIGxldCByZWMgam9pbiBsIHYgciA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBhZGRfbWluIHYgclxuICAgIHwgXywgRW1wdHkgLT4gYWRkX21heCBsIHZcbiAgICB8IExlYWYgbHYsIF8gLT4gYWRkX21pbiBsdiAoYWRkX21pbiB2IHIpXG4gICAgfCBfLCBMZWFmIHJ2IC0+IGFkZF9tYXggKGFkZF9tYXggbCB2KSBydlxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgbGgsIF8pLCBOb2RlIChybCwgcnYsIHJyLCByaCwgXykgLT5cbiAgICAgIGlmIGxoID4gcmggKyAyXG4gICAgICB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAyXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyXG4gICAgICBlbHNlIGNyZWF0ZSBsIHYgclxuICA7O1xuXG4gICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG4gIGxldCByZWMgbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgfCBOb2RlIChFbXB0eSwgdiwgXywgXywgXykgLT4gU29tZSB2XG4gICAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxcbiAgOztcblxuICBleGNlcHRpb24gU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXQubWwuVHJlZTAuU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBleGNlcHRpb24gU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxuICBsZXQgKCkgPVxuICAgIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZFxuICAgICAgWyVleHRlbnNpb25fY29uc3RydWN0b3IgU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldF1cbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkF0b20gXCJzZXQubWwuVHJlZTAuU2V0X21heF9lbHRfZXhuX29mX2VtcHR5X3NldFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWluX2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWluX2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgU2V0X21pbl9lbHRfZXhuX29mX2VtcHR5X3NldFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPVxuICAgIGxldCByZWMgZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBhY2MgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLkNvbnRpbnVlIGFjY1xuICAgICAgfCBMZWFmIHZhbHVlIC0+IGYgYWNjIHZhbHVlIFtAbm9udGFpbF1cbiAgICAgIHwgTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAobWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgbGVmdCBhY2Mgd2l0aFxuICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgfCBDb250aW51ZSBhY2MgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgYWNjIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgU3RvcCBfYSBhcyB4IC0+IHhcbiAgICAgICAgICAgIHwgQ29udGludWUgYSAtPiBmb2xkX3VudGlsX2hlbHBlciB+ZiByaWdodCBhKSlcbiAgICBpblxuICAgIG1hdGNoIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgaW5pdCB3aXRoXG4gICAgfCBDb250aW51ZSB4IC0+IGZpbmlzaCB4IFtAbm9udGFpbF1cbiAgICB8IFN0b3AgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKF8sIHYsIEVtcHR5LCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIF8sIHIsIF8sIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBiYWwgdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcbiAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBqb2luIHQxIChtaW5fZWx0X2V4biB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gIGxldCBzcGxpdCB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHNwbGl0IHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgU29tZSB2LCBFbXB0eVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gRW1wdHksIE5vbmUsIExlYWYgdlxuICAgICAgICBlbHNlIExlYWYgdiwgTm9uZSwgRW1wdHlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBsLCBTb21lIHYsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbGwsIG1heWJlX2VsdCwgcmwgPSBzcGxpdCBsIGluXG4gICAgICAgICAgbGwsIG1heWJlX2VsdCwgam9pbiBybCB2IHIpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsciwgbWF5YmVfZWx0LCByciA9IHNwbGl0IHIgaW5cbiAgICAgICAgICBqb2luIGwgdiBsciwgbWF5YmVfZWx0LCBycilcbiAgICBpblxuICAgIHNwbGl0IHRcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0X2xlX2d0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIEVtcHR5XG4gICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID49IDAgdGhlbiBMZWFmIHYsIEVtcHR5IGVsc2UgRW1wdHksIExlYWYgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBhZGRfbWF4IGwgdiwgclxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgcmwgPSBzcGxpdF9sZV9ndCBsIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGxsLCBqb2luIHJsIHYgcilcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbHIsIHJyID0gc3BsaXRfbGVfZ3QgciB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBqb2luIGwgdiBsciwgcnIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzcGxpdF9sdF9nZSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgIHwgTGVhZiB2IC0+IGlmIGNvbXBhcmVfZWx0IHggdiA+IDAgdGhlbiBMZWFmIHYsIEVtcHR5IGVsc2UgRW1wdHksIExlYWYgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiBsLCBhZGRfbWluIHYgclxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBsbCwgcmwgPSBzcGxpdF9sdF9nZSBsIHggfmNvbXBhcmVfZWx0IGluXG4gICAgICAgIGxsLCBqb2luIHJsIHYgcilcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbHIsIHJyID0gc3BsaXRfbHRfZ2UgciB4IH5jb21wYXJlX2VsdCBpblxuICAgICAgICBqb2luIGwgdiBsciwgcnIpXG4gIDs7XG5cbiAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgcmVjIG1lbSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMFxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMCB8fCBtZW0gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gTGVhZiB4XG5cbiAgbGV0IHJlbW92ZSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgU2FtZVxuICAgICAgfCBMZWFmIHYgLT4gaWYgY29tcGFyZV9lbHQgeCB2ID0gMCB0aGVuIEVtcHR5IGVsc2UgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHIgZWxzZSBpZiBjIDwgMCB0aGVuIGJhbCAoYXV4IGwpIHYgciBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCByZW1vdmVfaW5kZXggdCBpIH5jb21wYXJlX2VsdDpfID1cbiAgICBsZXQgcmVjIGF1eCB0IGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBTYW1lXG4gICAgICB8IExlYWYgXyAtPiBpZiBpID0gMCB0aGVuIEVtcHR5IGVsc2UgRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIFNhbWVcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgbGV0IGxfc2l6ZSA9IGxlbmd0aCBsIGluXG4gICAgICAgIGxldCBjID0gUG9seS5jb21wYXJlIGkgbF9zaXplIGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBiYWwgKGF1eCBsIGkpIHYgclxuICAgICAgICBlbHNlIGJhbCBsIHYgKGF1eCByIChpIC0gbF9zaXplIC0gMSkpXG4gICAgaW5cbiAgICB0cnkgYXV4IHQgaSB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgdW5pb24gczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gczFcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgICB8IEVtcHR5LCB0IHwgdCwgRW1wdHkgLT4gdFxuICAgICAgICB8IExlYWYgdjEsIF8gLT4gdW5pb24gKE5vZGUgKEVtcHR5LCB2MSwgRW1wdHksIDEsIDEpKSBzMlxuICAgICAgICB8IF8sIExlYWYgdjIgLT4gdW5pb24gczEgKE5vZGUgKEVtcHR5LCB2MiwgRW1wdHksIDEsIDEpKVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIGgxLCBfKSwgTm9kZSAobDIsIHYyLCByMiwgaDIsIF8pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDJcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBpZiBoMiA9IDFcbiAgICAgICAgICAgIHRoZW4gYWRkIHMxIHYyIH5jb21wYXJlX2VsdFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBsMiwgXywgcjIgPSBzcGxpdCBzMiB2MSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMikpXG4gICAgICAgICAgZWxzZSBpZiBoMSA9IDFcbiAgICAgICAgICB0aGVuIGFkZCBzMiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsMSwgXywgcjEgPSBzcGxpdCBzMSB2MiB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpKSlcbiAgICBpblxuICAgIHVuaW9uIHMxIHMyXG4gIDs7XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgfnRvX3RyZWUgeHMgPVxuICAgIGxldCBjb21wYXJlX2VsdCA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgTGlzdC5mb2xkIHhzIH5pbml0OmVtcHR5IH5mOihmdW4gYWMgeCAtPiB1bmlvbiBhYyAodG9fdHJlZSB4KSB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IGludGVyIHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpbnRlciBzMSBzMiA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHMxIHMyXG4gICAgICB0aGVuIHMxXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgXyB8IF8sIEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgKExlYWYgZWx0IGFzIHNpbmdsZXRvbiksIG90aGVyX3NldCB8IG90aGVyX3NldCwgKExlYWYgZWx0IGFzIHNpbmdsZXRvbikgLT5cbiAgICAgICAgICBpZiBtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQgdGhlbiBzaW5nbGV0b24gZWxzZSBFbXB0eVxuICAgICAgICB8IE5vZGUgKGwxLCB2MSwgcjEsIF8sIF8pLCB0MiAtPlxuICAgICAgICAgIChtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICAgICB8IGwyLCBOb25lLCByMiAtPiBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgIHwgbDIsIFNvbWUgdjEsIHIyIC0+IGpvaW4gKGludGVyIGwxIGwyKSB2MSAoaW50ZXIgcjEgcjIpKSlcbiAgICBpblxuICAgIGludGVyIHMxIHMyXG4gIDs7XG5cbiAgbGV0IGRpZmYgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBFbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gLT4gRW1wdHlcbiAgICAgICAgfCB0MSwgRW1wdHkgLT4gdDFcbiAgICAgICAgfCBMZWFmIHYxLCB0MiAtPiBkaWZmIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgdDJcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgIHwgbDIsIFNvbWUgXywgcjIgLT4gY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMikpKVxuICAgIGluXG4gICAgZGlmZiBzMSBzMlxuICA7O1xuXG4gIG1vZHVsZSBFbnVtID0gc3RydWN0XG4gICAgdHlwZSBpbmNyZWFzaW5nXG4gICAgdHlwZSBkZWNyZWFzaW5nXG5cbiAgICB0eXBlICgnYSwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdhICogJ2EgdHJlZSAqICgnYSwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHMgKGUgOiAoXywgaW5jcmVhc2luZykgdCkgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnMgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgOztcblxuICAgIGxldCByZWMgY29uc19yaWdodCBzIChlIDogKF8sIGRlY3JlYXNpbmcpIHQpIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGVcbiAgICAgIHwgTGVhZiB2IC0+IE1vcmUgKHYsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBjb25zX3JpZ2h0IHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V0IHMgOiAoXywgaW5jcmVhc2luZykgdCA9IGNvbnMgcyBFbmRcbiAgICBsZXQgb2Zfc2V0X3JpZ2h0IHMgOiAoXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgcyBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAoXywgdiwgciwgXywgXykgd2hlbiBjb21wYXJlIHYga2V5IDwgMCAtPiBsb29wIHIgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgbCAoTW9yZSAodiwgciwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgc3RhcnRpbmdfYXRfZGVjcmVhc2luZyB0IGtleSBjb21wYXJlIDogKF8sIGRlY3JlYXNpbmcpIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIHQgZSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGVcbiAgICAgICAgfCBMZWFmIHYgLT4gbG9vcCAoTm9kZSAoRW1wdHksIHYsIEVtcHR5LCAxLCAxKSkgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIF8sIF8sIF8pIHdoZW4gY29tcGFyZSB2IGtleSA+IDAgLT4gbG9vcCBsIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBsb29wIHIgKE1vcmUgKHYsIGwsIGUpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCBFbmRcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgZTEgZTIgPVxuICAgICAgbGV0IHJlYyBsb29wIGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBpZiBwaHlzX2VxdWFsIHIxIHIyXG4gICAgICAgICAgdGhlbiBsb29wIGUxIGUyXG4gICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMilcbiAgICAgIGluXG4gICAgICBsb29wIGUxIGUyXG4gICAgOztcblxuICAgIGxldCByZWMgaXRlciB+ZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVuZCAtPiAoKVxuICAgICAgfCBNb3JlIChhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBmIGE7XG4gICAgICAgIGl0ZXIgKGNvbnMgdHJlZSBlbnVtKSB+ZlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcjIgY29tcGFyZV9lbHQgdDEgdDIgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIHQxIHQyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAoKVxuICAgICAgICB8IEVuZCwgXyAtPiBpdGVyIHQyIH5mOihmdW4gYSAtPiBmIChgUmlnaHQgYSkpIFtAbm9udGFpbF1cbiAgICAgICAgfCBfLCBFbmQgLT4gaXRlciB0MSB+ZjooZnVuIGEgLT4gZiAoYExlZnQgYSkpIFtAbm9udGFpbF1cbiAgICAgICAgfCBNb3JlIChhMSwgdHJlZTEsIGVudW0xKSwgTW9yZSAoYTIsIHRyZWUyLCBlbnVtMikgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYEJvdGggKGExLCBhMikpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBmIChgTGVmdCBhMSk7XG4gICAgICAgICAgICBsb29wIChjb25zIHRyZWUxIGVudW0xKSB0MilcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGYgKGBSaWdodCBhMik7XG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IHN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgc3RlcCBzdGF0ZSA6ICgoXywgXykgRWl0aGVyLnQsIF8pIFNlcXVlbmNlLlN0ZXAudCA9XG4gICAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBEb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChlbHQsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IFNlY29uZCBlbHQ7IHN0YXRlID0gRW5kLCBjb25zIHRyZWUgZW51bSB9XG4gICAgICAgIHwgTW9yZSAoZWx0LCB0cmVlLCBlbnVtKSwgRW5kIC0+XG4gICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IEZpcnN0IGVsdDsgc3RhdGUgPSBjb25zIHRyZWUgZW51bSwgRW5kIH1cbiAgICAgICAgfCAoTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChhMiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCBhMSBhMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNraXAgeyBzdGF0ZSA9IG5leHRfc3RhdGUgfSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gWWllbGQgeyB2YWx1ZSA9IEZpcnN0IGExOyBzdGF0ZSA9IGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0IH1cbiAgICAgICAgICBlbHNlIFlpZWxkIHsgdmFsdWUgPSBTZWNvbmQgYTI7IHN0YXRlID0gbGVmdCwgY29ucyB0cmVlMiBlbnVtMiB9XG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KG9mX3NldCB0MSwgb2Zfc2V0IHQyKSB+ZjpzdGVwXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0gazsgc3RhdGUgPSBFbnVtLmNvbnMgdCBlIH1cbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+XG4gICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGs7IHN0YXRlID0gRW51bS5jb25zX3JpZ2h0IHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXRfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVsdCAtPiBhZGQgdCBlbHQgfmNvbXBhcmVfZWx0XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBsZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0OmdyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpsZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDwgMCkgW0Bub250YWlsXVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKSBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPiAwKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBsZXQgaXNfbGVmdCB4ID1cbiAgICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgICB8IGBMZWZ0IC0+IHRydWVcbiAgICAgIHwgYFJpZ2h0IC0+IGZhbHNlXG4gICAgaW5cbiAgICBsZXQgaXNfcmlnaHQgeCA9IG5vdCAoaXNfbGVmdCB4KSBpblxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfbGVmdCBbQG5vbnRhaWxdXG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHQgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZVxuICAgICAgICBjb21wYXJhdG9yXG4gICAgICAgID8ob3JkZXIgPSBgSW5jcmVhc2luZylcbiAgICAgICAgP2dyZWF0ZXJfb3JfZXF1YWxfdG9cbiAgICAgICAgP2xlc3Nfb3JfZXF1YWxfdG9cbiAgICAgICAgdFxuICAgICAgICB0J1xuICAgID1cbiAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0KVxuICAgICAgKHRvX3NlcXVlbmNlIGNvbXBhcmF0b3Igfm9yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQnKVxuICAgICAgfmNvbXBhcmU6XG4gICAgICAgIChtYXRjaCBvcmRlciB3aXRoXG4gICAgICAgICB8IGBJbmNyZWFzaW5nIC0+IGNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfCBgRGVjcmVhc2luZyAtPiBGbi5mbGlwIGNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBzMSBzMiA9XG4gICAgRW51bS5jb21wYXJlIGNvbXBhcmVfZWx0IChFbnVtLm9mX3NldCBzMSkgKEVudW0ub2Zfc2V0IHMyKVxuICA7O1xuXG4gIGxldCBpdGVyMiBzMSBzMiB+Y29tcGFyZV9lbHQgfmYgPVxuICAgIEVudW0uaXRlcjIgY29tcGFyZV9lbHQgKEVudW0ub2Zfc2V0IHMxKSAoRW51bS5vZl9zZXQgczIpIH5mXG4gIDs7XG5cbiAgbGV0IGVxdWFsIHMxIHMyIH5jb21wYXJlX2VsdCA9IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPSAwXG5cbiAgbGV0IGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpc19zdWJzZXQgczEgfm9mXzpzMiA9XG4gICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgfCBFbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IExlYWYgdjEsIHQyIC0+IG1lbSB0MiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIExlYWYgdjIgLT5cbiAgICAgICAgKG1hdGNoIGwxLCByMSB3aXRoXG4gICAgICAgICB8IEVtcHR5LCBFbXB0eSAtPlxuICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkbid0IG9jY3VyIGluIHByYWN0aWNlIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgY29uc3RydWN0ZWRcbiAgICAgICAgICAgICAgYSBMZWFmIHJhdGhlciB0aGFuIGEgTm9kZSB3aXRoIHR3byBFbXB0eSBzdWJ0cmVlcyAqKVxuICAgICAgICAgICBjb21wYXJlX2VsdCB2MSB2MiA9IDBcbiAgICAgICAgIHwgXywgXyAtPiBmYWxzZSlcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIChOb2RlIChsMiwgdjIsIHIyLCBfLCBfKSBhcyB0MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgcGh5c19lcXVhbCBzMSBzMiB8fCAoaXNfc3Vic2V0IGwxIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86cjIpXG4gICAgICAgICAgKCogTm90ZSB0aGF0IGhlaWdodCBhbmQgc2l6ZSBkb24ndCBtYXR0ZXIgaGVyZS4gKilcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGlzX3N1YnNldCAoTm9kZSAobDEsIHYxLCBFbXB0eSwgMCwgMCkpIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86dDJcbiAgICAgICAgZWxzZSBpc19zdWJzZXQgKE5vZGUgKEVtcHR5LCB2MSwgcjEsIDAsIDApKSB+b2ZfOnIyICYmIGlzX3N1YnNldCBsMSB+b2ZfOnQyXG4gICAgaW5cbiAgICBpc19zdWJzZXQgczEgfm9mXzpzMlxuICA7O1xuXG4gIGxldCByZWMgYXJlX2Rpc2pvaW50IHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBlbHQsIG90aGVyX3NldCB8IG90aGVyX3NldCwgTGVhZiBlbHQgLT4gbm90IChtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQpXG4gICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICB8IGwyLCBOb25lLCByMiAtPlxuICAgICAgICAgIGFyZV9kaXNqb2ludCBsMSBsMiB+Y29tcGFyZV9lbHQgJiYgYXJlX2Rpc2pvaW50IHIxIHIyIH5jb21wYXJlX2VsdFxuICAgICAgICB8IF8sIFNvbWUgXywgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGl0ZXIgbDtcbiAgICAgICAgZiB2O1xuICAgICAgICBpdGVyIHJcbiAgICBpblxuICAgIGl0ZXIgdCBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmID0gRW51bS5zeW1tZXRyaWNfZGlmZlxuXG4gIGxldCByZWMgZm9sZCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgYWNjdSB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkIH5mIHIgfmluaXQ6KGYgKGZvbGQgfmYgbCB+aW5pdDphY2N1KSB2KVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2VsZW0gc3RhdGUgdCA9XG4gICAgZm9sZCB0IH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpIH5mOmhhc2hfZm9sZF9lbGVtXG4gIDs7XG5cbiAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5cbiAgbGV0IHJlYyBmb2xkX3JpZ2h0IHMgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gZiB2IGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGZvbGRfcmlnaHQgfmYgbCB+aW5pdDooZiB2IChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IHJlYyBmb3JfYWxsIHQgfmY6cCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgJiYgZm9yX2FsbCB+ZjpwIGwgJiYgZm9yX2FsbCB+ZjpwIHJcbiAgOztcblxuICBsZXQgcmVjIGV4aXN0cyB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gZmFsc2VcbiAgICB8IExlYWYgdiAtPiBwIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IHAgdiB8fCBleGlzdHMgfmY6cCBsIHx8IGV4aXN0cyB+ZjpwIHJcbiAgOztcblxuICBsZXQgZmlsdGVyIHMgfmY6cCA9XG4gICAgbGV0IHJlYyBmaWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTGVhZiB2IGFzIHQgLT4gaWYgcCB2IHRoZW4gdCBlbHNlIEVtcHR5XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIGFzIHQgLT5cbiAgICAgICAgbGV0IGwnID0gZmlsdCBsIGluXG4gICAgICAgIGxldCBrZWVwX3YgPSBwIHYgaW5cbiAgICAgICAgbGV0IHInID0gZmlsdCByIGluXG4gICAgICAgIGlmIGtlZXBfdiAmJiBwaHlzX2VxdWFsIGwgbCcgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIGlmIGtlZXBfdlxuICAgICAgICB0aGVuIGpvaW4gbCcgdiByJ1xuICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuICAgIGluXG4gICAgZmlsdCBzIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgIHwgU29tZSB2IC0+IGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0XG4gICAgICAgICAgKGZpbHRcbiAgICAgICAgICAgICAobWF0Y2ggcCB2IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICByXG4gICAgaW5cbiAgICBmaWx0IEVtcHR5IHMgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgcyB+ZjpwID1cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBFbXB0eSwgRW1wdHlcbiAgICAgIHwgTGVhZiB2IGFzIHQgLT4gaWYgcCB2IHRoZW4gdCwgRW1wdHkgZWxzZSBFbXB0eSwgdFxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSBhcyB0IC0+XG4gICAgICAgIGxldCBsJ3QsIGwnZiA9IGxvb3AgbCBpblxuICAgICAgICBsZXQga2VlcF92X3QgPSBwIHYgaW5cbiAgICAgICAgbGV0IHIndCwgcidmID0gbG9vcCByIGluXG4gICAgICAgIGxldCBtayBrZWVwX3YgbCcgcicgPVxuICAgICAgICAgIGlmIGtlZXBfdiAmJiBwaHlzX2VxdWFsIGwgbCcgJiYgcGh5c19lcXVhbCByIHInXG4gICAgICAgICAgdGhlbiB0XG4gICAgICAgICAgZWxzZSBpZiBrZWVwX3ZcbiAgICAgICAgICB0aGVuIGpvaW4gbCcgdiByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG4gICAgICAgIGluXG4gICAgICAgIG1rIGtlZXBfdl90IGwndCByJ3QsIG1rIChub3Qga2VlcF92X3QpIGwnZiByJ2ZcbiAgICBpblxuICAgIGxvb3AgcyBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmIHYgLT4gdiA6OiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuICA7O1xuXG4gIGxldCBlbGVtZW50cyBzID0gZWxlbWVudHNfYXV4IFtdIHNcblxuICBsZXQgY2hvb3NlIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IFNvbWUgdlxuICAgIHwgTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG4gIDs7XG5cbiAgbGV0IGNob29zZV9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlNldC5jaG9vc2VfZXhuOiBlbXB0eSBzZXRcIikgaW5cbiAgICBsZXQgY2hvb3NlX2V4biB0ID1cbiAgICAgIG1hdGNoIGNob29zZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBjaG9vc2VfZXhuXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgbHN0IH5jb21wYXJlX2VsdCA9XG4gICAgTGlzdC5mb2xkIGxzdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgfmNvbXBhcmVfZWx0ID1cbiAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCB0b19saXN0IHMgPSBlbGVtZW50cyBzXG5cbiAgbGV0IG9mX2FycmF5IGEgfmNvbXBhcmVfZWx0ID1cbiAgICBBcnJheS5mb2xkIGEgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgKCogZmFzdGVyIGJ1dCBlcXVpdmFsZW50IHRvIFtBcnJheS5vZl9saXN0ICh0b19saXN0IHQpXSAqKVxuICBsZXQgdG9fYXJyYXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gW3x8XVxuICAgIHwgTGVhZiB2IC0+IFt8IHYgfF1cbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIHMpIC0+XG4gICAgICBsZXQgcmVzID0gQXJyYXkuY3JlYXRlIH5sZW46cyB2IGluXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICAoKiBJbnZhcmlhbnQ6IG9uIGVudHJ5IGFuZCBvbiBleGl0IHRvIFtsb29wXSwgIXBvc19yZWYgaXMgdGhlIG5leHRcbiAgICAgICAgICAgYXZhaWxhYmxlIGNlbGwgaW4gdGhlIGFycmF5LiAqKVxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWZcbiAgICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICAgIGxvb3AgbDtcbiAgICAgICAgICByZXMuKCFwb3NfcmVmKSA8LSB2O1xuICAgICAgICAgIGluY3IgcG9zX3JlZjtcbiAgICAgICAgICBsb29wIHJcbiAgICAgIGluXG4gICAgICBsb29wIGw7XG4gICAgICAoKiByZXMuKCFwb3NfcmVmKSBpcyBhbHJlYWR5IGluaXRpYWxpemVkIChieSBBcnJheS5jcmVhdGUgfmxlbjphYm92ZSkuICopXG4gICAgICBpbmNyIHBvc19yZWY7XG4gICAgICBsb29wIHI7XG4gICAgICByZXNcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgfmNvbXBhcmVfZWx0ID1cbiAgICBmb2xkIHQgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgKGYgeCkgfmNvbXBhcmVfZWx0KSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IHNldCB+ZXF1aXYgPVxuICAgIGxldCByZWMgbG9vcCBzZXQgZXF1aXZfY2xhc3NlcyA9XG4gICAgICBpZiBpc19lbXB0eSBzZXRcbiAgICAgIHRoZW4gZXF1aXZfY2xhc3Nlc1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB4ID0gY2hvb3NlX2V4biBzZXQgaW5cbiAgICAgICAgbGV0IGVxdWl2X3gsIG5vdF9lcXVpdl94ID1cbiAgICAgICAgICBwYXJ0aXRpb25fdGYgc2V0IH5mOihmdW4gZWx0IC0+IHBoeXNfZXF1YWwgeCBlbHQgfHwgZXF1aXYgeCBlbHQpXG4gICAgICAgIGluXG4gICAgICAgIGxvb3Agbm90X2VxdWl2X3ggKGVxdWl2X3ggOjogZXF1aXZfY2xhc3NlcykpXG4gICAgaW5cbiAgICBsb29wIHNldCBbXSBbQG5vbnRhaWxdXG4gIDs7XG5cblxuICBsZXQgcmVjIGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiBTb21lIHZcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBmaW5kIGwgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmluZCByIH5mXG4gICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcilcbiAgOztcblxuICBsZXQgcmVjIGZpbmRfbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGYgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIChtYXRjaCBmIHYgd2l0aFxuICAgICAgIHwgU29tZSBfIGFzIHIgLT4gclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIGZpbmRfbWFwIGwgfmYgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCByIH5mXG4gICAgICAgICAgfCBTb21lIF8gYXMgciAtPiByKSlcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZCB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXQuZmluZF9leG4gZmFpbGVkIHRvIGZpbmQgYSBtYXRjaGluZyBlbGVtZW50XCJcbiAgICB8IFNvbWUgZSAtPiBlXG4gIDs7XG5cbiAgbGV0IHJlYyBudGggdCBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBpZiBpID0gMCB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIHMpIC0+XG4gICAgICBpZiBpID49IHNcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsX3NpemUgPSBsZW5ndGggbCBpblxuICAgICAgICBsZXQgYyA9IFBvbHkuY29tcGFyZSBpIGxfc2l6ZSBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIG50aCBsIGkgZWxzZSBpZiBjID0gMCB0aGVuIFNvbWUgdiBlbHNlIG50aCByIChpIC0gbF9zaXplIC0gMSkpXG4gIDs7XG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBsb29wIHhzIGxlZnRvdmVycyBhbHJlYWR5X3NlZW4gPVxuICAgICAgbWF0Y2ggeHMgd2l0aFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBsZWZ0b3ZlcnNcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgaWYgbWVtIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHRcbiAgICAgICAgdGhlbiBsb29wIHRsIGxlZnRvdmVycyBhbHJlYWR5X3NlZW5cbiAgICAgICAgZWxzZSBsb29wIHRsIChoZCA6OiBsZWZ0b3ZlcnMpIChhZGQgYWxyZWFkeV9zZWVuIGhkIH5jb21wYXJlX2VsdClcbiAgICBpblxuICAgIGxvb3AgeHMgW10gZW1wdHlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBhX29mX3NleHAgc2V4cCB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5MaXN0IGxzdCAtPlxuICAgICAgbGV0IGVsdF9sc3QgPSBMaXN0Lm1hcCBsc3QgfmY6YV9vZl9zZXhwIGluXG4gICAgICBsZXQgc2V0ID0gb2ZfbGlzdCBlbHRfbHN0IH5jb21wYXJlX2VsdCBpblxuICAgICAgaWYgbGVuZ3RoIHNldCA9IExpc3QubGVuZ3RoIGxzdFxuICAgICAgdGhlbiBzZXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2V0ID0gcmVmIGVtcHR5IGluXG4gICAgICAgIExpc3QuaXRlcjJfZXhuIGxzdCBlbHRfbHN0IH5mOihmdW4gZWxfc2V4cCBlbCAtPlxuICAgICAgICAgIGlmIG1lbSAhc2V0IGVsIH5jb21wYXJlX2VsdFxuICAgICAgICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcIlNldC50X29mX3NleHA6IGR1cGxpY2F0ZSBlbGVtZW50IGluIHNldFwiIGVsX3NleHBcbiAgICAgICAgICBlbHNlIHNldCA6PSBhZGQgIXNldCBlbCB+Y29tcGFyZV9lbHQpO1xuICAgICAgICBhc3NlcnQgZmFsc2UpXG4gICAgfCBzZXhwIC0+IG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsIGFjYyAtPiBzZXhwX29mX2EgZWwgOjogYWNjKSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICBsZXQgaXNfc3Vic2V0XG4gICAgICAgICAgKHN1YnNldCA6IF8gTmFtZWQudClcbiAgICAgICAgICB+b2ZfOihzdXBlcnNldCA6IF8gTmFtZWQudClcbiAgICAgICAgICB+c2V4cF9vZl9lbHRcbiAgICAgICAgICB+Y29tcGFyZV9lbHRcbiAgICAgID1cbiAgICAgIGxldCBpbnZhbGlkX2VsZW1lbnRzID0gZGlmZiBzdWJzZXQuc2V0IHN1cGVyc2V0LnNldCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGlzX2VtcHR5IGludmFsaWRfZWxlbWVudHNcbiAgICAgIHRoZW4gT2sgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaW52YWxpZF9lbGVtZW50c19zZXhwID0gc2V4cF9vZl90IHNleHBfb2ZfZWx0IGludmFsaWRfZWxlbWVudHMgaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAoc3Vic2V0Lm5hbWUgXiBcIiBpcyBub3QgYSBzdWJzZXQgb2YgXCIgXiBzdXBlcnNldC5uYW1lKVxuICAgICAgICAgICAgIFsgXCJpbnZhbGlkX2VsZW1lbnRzXCIsIGludmFsaWRfZWxlbWVudHNfc2V4cCBdKSlcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHMxIHMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgICBbIGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgOyBpc19zdWJzZXQgczIgfm9mXzpzMSB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnYSwgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAnYSBUcmVlMC50XG4gIH1cblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlID0gJ2EgVHJlZTAudFxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBjb21wYXJhdG9yIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciB9XG5cbmxldCBsaWtlX21heWJlX25vX29wICh7IHRyZWUgPSBvbGRfdHJlZTsgY29tcGFyYXRvciB9IGFzIG9sZF90KSB0cmVlID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IGNvbXBhcmVfZWx0IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuXG4gIGxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSB0ID0ga1xuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgICBlbmQpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudHMgdCA9IFRyZWUwLmludmFyaWFudHMgdC50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHQudHJlZVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgZWxlbWVudHMgdCA9IFRyZWUwLmVsZW1lbnRzIHQudHJlZVxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0LnRyZWVcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0LnRyZWVcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdC50cmVlXG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdC50cmVlXG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0LnRyZWVcbiAgbGV0IGNob29zZV9leG4gdCA9IFRyZWUwLmNob29zZV9leG4gdC50cmVlXG4gIGxldCB0b19saXN0IHQgPSBUcmVlMC50b19saXN0IHQudHJlZVxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHQudHJlZVxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmluaXQgfmYgfmZpbmlzaFxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEudHJlZSBiLnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQudHJlZSB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0LnRyZWUgfmZcbiAgbGV0IG1lbSB0IGEgPSBUcmVlMC5tZW0gdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlX21heWJlX25vX29wIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYpXG4gIGxldCBhZGQgdCBhID0gbGlrZSB0IChUcmVlMC5hZGQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHJlbW92ZSB0IGEgPSBsaWtlIHQgKFRyZWUwLnJlbW92ZSB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgdW5pb24gdDEgdDIgPSBsaWtlIHQxIChUcmVlMC51bmlvbiB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSkpXG4gIGxldCBpbnRlciB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmludGVyIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGRpZmYgdDEgdDIgPSBsaWtlIHQxIChUcmVlMC5kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB0MSB0MiA9IFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfZWx0IHQxKSB0MS50cmVlIHQyLnRyZWVcbiAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZTAuaXNfc3Vic2V0IHQudHJlZSB+b2ZfOm9mXy50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdClcblxuICBsZXQgYXJlX2Rpc2pvaW50IHQxIHQyID1cbiAgICBUcmVlMC5hcmVfZGlzam9pbnQgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbGV0IHRvX25hbWVkX3RyZWUgKG5hbWVkIDogKF8sIF8pIHQgTmFtZWQudCkgPSB7IG5hbWVkIHdpdGggc2V0ID0gbmFtZWQuc2V0LnRyZWUgfVxuXG4gICAgbGV0IGlzX3N1YnNldCBzdWJzZXQgfm9mXzpzdXBlcnNldCA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgKHRvX25hbWVkX3RyZWUgc3Vic2V0KVxuICAgICAgICB+b2ZfOih0b19uYW1lZF90cmVlIHN1cGVyc2V0KVxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHN1YnNldC5zZXQpXG4gICAgICAgIH5zZXhwX29mX2VsdDpzdWJzZXQuc2V0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB0MSB0MiA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0IFsgaXNfc3Vic2V0IHQxIH5vZl86dDI7IGlzX3N1YnNldCB0MiB+b2ZfOnQxIF1cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBOYW1lZFxuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxldCB0cmVlX3QsIHRyZWVfZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgdHJlZV90LCBsaWtlX21heWJlX25vX29wIHQgdHJlZV9mXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgYSA9XG4gICAgbGV0IHRyZWUxLCBiLCB0cmVlMiA9IFRyZWUwLnNwbGl0IHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkgaW5cbiAgICBsaWtlIHQgdHJlZTEsIGIsIGxpa2UgdCB0cmVlMlxuICA7O1xuXG4gIGxldCBzcGxpdF9sZV9ndCB0IGEgPVxuICAgIGxldCB0cmVlMSwgdHJlZTIgPSBUcmVlMC5zcGxpdF9sZV9ndCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpIGluXG4gICAgbGlrZSB0IHRyZWUxLCBsaWtlIHQgdHJlZTJcbiAgOztcblxuICBsZXQgc3BsaXRfbHRfZ2UgdCBhID1cbiAgICBsZXQgdHJlZTEsIHRyZWUyID0gVHJlZTAuc3BsaXRfbHRfZ2UgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID0gTGlzdC5tYXAgKFRyZWUwLmdyb3VwX2J5IHQudHJlZSB+ZXF1aXYpIH5mOihsaWtlIHQpXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQudHJlZSBpXG4gIGxldCByZW1vdmVfaW5kZXggdCBpID0gbGlrZSB0IChUcmVlMC5yZW1vdmVfaW5kZXggdC50cmVlIGkgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIHQuY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gICAgICB0Jy50cmVlXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBzdGF0ZSB0LnRyZWVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY29tcGFyZSBfIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGNlIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcikgYV9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gZSA9IFRyZWUwLnNpbmdsZXRvbiBlXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0XG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHRcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdFxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdCB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gVHJlZTAuZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdCB+aW5pdCB+ZlxuICBsZXQgbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5tYXAgdCB+ZiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUwLmZpbHRlciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPSBUcmVlMC5maWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25fdGYgdCB+ZlxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgYSBiIH5mID0gVHJlZTAuaXRlcjIgYSBiIH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5tZW0gdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5hZGQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5yZW1vdmUgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAudW5pb24gdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaW50ZXIgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5pbnRlciB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBkaWZmIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY2UgY29tcGFyYXRvcikgdDEgdDJcbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0IH5vZl8gfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBhcmVfZGlzam9pbnQgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6XyB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAudW5pb25fbGlzdCBsIH50b190cmVlOkZuLmlkIH5jb21wYXJhdG9yXG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID0gVHJlZTAuZ3JvdXBfYnkgdCB+ZXF1aXZcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgYSA9IFRyZWUwLnNwbGl0IHQgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzcGxpdF9sZV9ndCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5zcGxpdF9sZV9ndCB0IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXRfbHRfZ2UgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXRfbHRfZ2UgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdCBpXG4gIGxldCByZW1vdmVfaW5kZXggfmNvbXBhcmF0b3IgdCBpID0gVHJlZTAucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHQgPSB0XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVHJlZTAuTmFtZWRcblxuICAgIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdDEgfm9mXzp0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgdDFcbiAgICAgICAgfm9mXzp0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5lcXVhbFxuICAgICAgICB0MVxuICAgICAgICB0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLmNvbXBhcmUgYV9vZl9zZXhwIHNleHApXG4gIDs7XG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuICBlbmRcblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gZSB9XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAudW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSBsKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBsZXQgdHJlZSA9XG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgeyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZilcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5Nb25hZF9pbmZpeC4oXG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICA+PnwgZnVuIHRyZWUgLT4geyBjb21wYXJhdG9yOyB0cmVlIH0pXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yXG4gICAgOyB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfVxuICA7O1xuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbnR5cGUgKCdlbHQsICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgZWx0IGNtcCkgKChtb2R1bGUgTSkgOiAoZWx0LCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IHVuaW9uX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIH5sZW4gfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9zZXF1ZW5jZSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IHN0YWJsZV9kZWR1cF9saXN0IG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG1hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgZmlsdGVyX21hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxubGV0IHRvX3RyZWUgPSBVc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbmxldCBvZl90cmVlIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBNIChFbHQgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBlbHQpIChtb2R1bGUgRWx0IDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gZWx0KSB0ID1cbiAgc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgZWx0IGNtcClcbiAgICAgIChtb2R1bGUgRWx0IDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gZWx0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6RWx0LmNvbXBhcmF0b3IgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KVxuICA6IChlbHQsIF8pIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChsaXN0X3NleHBfZ3JhbW1hciBFbHQudF9zZXhwX2dyYW1tYXIpXG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgdDEgdDIgPSBlcXVhbCB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IEhhc2hfZm9sZF9tIHdpdGggdHlwZSB0ID0gZWx0KSBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgRWx0Lmhhc2hfZm9sZF90IHN0YXRlXG47O1xuXG5sZXQgaGFzaF9tX190IGZvbGRlciB0ID1cbiAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX21fX3QgZm9sZGVyIChIYXNoLmNyZWF0ZSAoKSkgdCBpblxuICBIYXNoLmdldF9oYXNoX3ZhbHVlIHN0YXRlXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHNldCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0ID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAnZWx0IHRyZWUgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG5cbiAgaW5jbHVkZSBVc2luZ19jb21wYXJhdG9yLkVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKENvbXBhcmF0b3IuUG9seSlcblxuICBsZXQgc2luZ2xldG9uIGEgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBhXG4gIGxldCB1bmlvbl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLnVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgYVxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9zZXF1ZW5jZSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci5zdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciBhXG4gIGxldCBtYXAgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwIH5jb21wYXJhdG9yIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXAgYSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IuZmlsdGVyX21hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgfVxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9yZWZcbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9IGVxdWFsX3JlZlxuXG4gIGxldCBnbG9iYWxpemUgOiAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIHRbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgdCA9XG4gICAgZnVuICh0eXBlIGFfXzAwOV8pXG4gICAgICAgIDogKCgoYV9fMDA5X1tAb2NhbWwubG9jYWxdKSAtPiBhX18wMDlfKSAtPiAoYV9fMDA5XyB0W0BvY2FtbC5sb2NhbF0pIC0+IGFfXzAwOV8gdCkgLT5cbiAgICAgIGdsb2JhbGl6ZV9yZWZcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gcmVmX29mX3NleHBcbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfcmVmXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IHJlZl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5FcXVhbC5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgdmFsIGdsb2JhbGl6ZSA6ICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSB0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIHRcblxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxuKCogSW4gdGhlIGRlZmluaXRpb24gb2YgW3RdLCB3ZSBkbyBub3QgaGF2ZSBbW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1dIGJlY2F1c2VcbiAgIGluIGdlbmVyYWwsIHN5bnRheCBleHRlbnNpb25zIHRlbmQgdG8gdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3aGVuIGF2YWlsYWJsZSByYXRoZXIgdGhhblxuICAgdXNpbmcgdGhlIGFsaWFzLiAgSGVyZSB0aGF0IHdvdWxkIGxlYWQgdG8gdXNlIHRoZSByZWNvcmQgcmVwcmVzZW50YXRpb24gWyB7IG11dGFibGVcbiAgIGNvbnRlbnRzIDogJ2EgfSBdIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQgKGFuZCB1bndhbnRlZCkgYmVoYXZpb3IuICAqKVxudHlwZSAnYSB0ID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG5leHRlcm5hbCBjcmVhdGUgOiAnYSAtPiAoJ2EgdFtAbG9jYWxfb3B0XSkgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbmxldCBzd2FwIHQxIHQyID1cbiAgbGV0IHRtcCA9ICF0MSBpblxuICB0MSA6PSAhdDI7XG4gIHQyIDo9IHRtcFxuOztcblxubGV0IHJlcGxhY2UgdCBmID0gdCA6PSBmICF0XG5cbmxldCBzZXRfdGVtcG9yYXJpbHkgdCBhIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSAhdCBpblxuICB0IDo9IGE7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdCA6PSByZXN0b3JlX3RvKVxuOztcblxubW9kdWxlIEFuZF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUIDogJ2EgcmVmICogJ2EgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXQgKFQgKHIsIGEpKSA9IHIgOj0gYVxuICBsZXQgc2V0cyB0cyA9IExpc3QuaXRlciB0cyB+ZjpzZXRcbiAgbGV0IHNuYXBzaG90IChUIChyLCBfKSkgPSBUIChyLCAhcilcbiAgbGV0IHNuYXBzaG90cyB0cyA9IExpc3QubWFwIHRzIH5mOnNuYXBzaG90XG5lbmRcblxubGV0IHNldHNfdGVtcG9yYXJpbHkgYW5kX3ZhbHVlcyB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gQW5kX3ZhbHVlLnNuYXBzaG90cyBhbmRfdmFsdWVzIGluXG4gIEFuZF92YWx1ZS5zZXRzIGFuZF92YWx1ZXM7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gQW5kX3ZhbHVlLnNldHMgcmVzdG9yZV90bylcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuXG4oKiBbdF0gc3RvcmVzIHRoZSBbdC5sZW5ndGhdIHF1ZXVlIGVsZW1lbnRzIGF0IGNvbnNlY3V0aXZlIGluY3JlYXNpbmcgaW5kaWNlcyBvZiBbdC5lbHRzXSxcbiAgIG1vZCB0aGUgY2FwYWNpdHkgb2YgW3RdLCB3aGljaCBpcyBbT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAgVGhlIGNhcGFjaXR5IGlzXG4gICByZXF1aXJlZCB0byBiZSBhIHBvd2VyIG9mIHR3byAodXNlci1yZXF1ZXN0ZWQgY2FwYWNpdGllcyBhcmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdFxuICAgcG93ZXIpLCBzbyB0aGF0IG1vZCBjYW4gcXVpY2tseSBiZSBjb21wdXRlZCB1c2luZyBbbGFuZCB0Lm1hc2tdLCB3aGVyZSBbdC5tYXNrID1cbiAgIGNhcGFjaXR5IHQgLSAxXS4gIFNvLCBxdWV1ZSBlbGVtZW50IFtpXSBpcyBhdCBbdC5lbHRzLiggKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayApXS5cblxuICAgW251bV9tdXRhdGlvbnNdIGlzIHVzZWQgdG8gZGV0ZWN0IG1vZGlmaWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIG51bV9tdXRhdGlvbnMgOiBpbnRcbiAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxX1xuICAgIHsgbnVtX211dGF0aW9ucyA9IG51bV9tdXRhdGlvbnNfXzAwM19cbiAgICA7IGZyb250ID0gZnJvbnRfXzAwNV9cbiAgICA7IG1hc2sgPSBtYXNrX18wMDdfXG4gICAgOyBsZW5ndGggPSBsZW5ndGhfXzAwOV9cbiAgICA7IGVsdHMgPSBlbHRzX18wMTFfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMDJfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMl8gPSBPcHRpb25fYXJyYXkuc2V4cF9vZl90IF9vZl9hX18wMDFfIGVsdHNfXzAxMV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwOV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsZW5ndGhcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDAyX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAwMl8gPVxuICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2ZfaW50IG1hc2tfXzAwN18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXNrXCI7IGFyZ19fMDA4XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNl8gPSBzZXhwX29mX2ludCBmcm9udF9fMDA1XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZyb250XCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBudW1fbXV0YXRpb25zX18wMDNfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibnVtX211dGF0aW9uc1wiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgaW5cbiAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAyX1xuOztcblxuW0BAQGVuZF1cblxubW9kdWxlIHR5cGUgUyA9IFF1ZXVlX2ludGYuU1xuXG5sZXQgaW5jX251bV9tdXRhdGlvbnMgdCA9IHQubnVtX211dGF0aW9ucyA8LSB0Lm51bV9tdXRhdGlvbnMgKyAxXG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcbmxldCBlbHRzX2luZGV4IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2tcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpXG5sZXQgdW5zYWZlX2lzX3NldCB0IGkgPSBPcHRpb25fYXJyYXkudW5zYWZlX2lzX3NvbWUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSBhID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKSBhXG5sZXQgdW5zYWZlX3Vuc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcblxubGV0IGNoZWNrX2luZGV4X2V4biB0IGkgPVxuICBpZiBpIDwgMCB8fCBpID49IHQubGVuZ3RoXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIlF1ZXVlIGluZGV4IG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgWyBcImluZGV4XCIsIGkgfD4gSW50LnNleHBfb2ZfdDsgXCJsZW5ndGhcIiwgdC5sZW5ndGggfD4gSW50LnNleHBfb2ZfdCBdKVxuOztcblxubGV0IGdldCB0IGkgPVxuICBjaGVja19pbmRleF9leG4gdCBpO1xuICB1bnNhZmVfZ2V0IHQgaVxuOztcblxubGV0IHNldCB0IGkgYSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIHVuc2FmZV9zZXQgdCBpIGFcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5sZXQgbGVuZ3RoIHsgbGVuZ3RoOyBfIH0gPSBsZW5ndGhcblxubGV0IGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMgPVxuICBpZiB0Lm51bV9tdXRhdGlvbnMgPD4gbnVtX211dGF0aW9uc1xuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJtdXRhdGlvbiBvZiBxdWV1ZSBkdXJpbmcgaXRlcmF0aW9uXCJcbiAgICAgICAgIFsgXCJcIiwgdCB8PiBzZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgXSlcbjs7XG5cbmxldCBjb21wYXJlID1cbiAgbGV0IHJlYyB1bnNhZmVfY29tcGFyZV9mcm9tIGNvbXBhcmVfZWx0IHBvcyB+dDEgfnQyIH5sZW4xIH5sZW4yIH5tdXQxIH5tdXQyID1cbiAgICBtYXRjaCBwb3MgPSBsZW4xLCBwb3MgPSBsZW4yIHdpdGhcbiAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgIHwgdHJ1ZSwgZmFsc2UgLT4gLTFcbiAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgbGV0IHggPSBjb21wYXJlX2VsdCAodW5zYWZlX2dldCB0MSBwb3MpICh1bnNhZmVfZ2V0IHQyIHBvcykgaW5cbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgfCAwIC0+IHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgKHBvcyArIDEpIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDJcbiAgICAgICB8IG4gLT4gbilcbiAgaW5cbiAgZnVuIGNvbXBhcmVfZWx0IHQxIHQyIC0+XG4gICAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICAgIHRoZW4gMFxuICAgIGVsc2VcbiAgICAgIHVuc2FmZV9jb21wYXJlX2Zyb21cbiAgICAgICAgY29tcGFyZV9lbHRcbiAgICAgICAgMFxuICAgICAgICB+dDFcbiAgICAgICAgfnQyXG4gICAgICAgIH5sZW4xOnQxLmxlbmd0aFxuICAgICAgICB+bGVuMjp0Mi5sZW5ndGhcbiAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICB+bXV0Mjp0Mi5udW1fbXV0YXRpb25zXG47O1xuXG5sZXQgZXF1YWwgPVxuICBsZXQgcmVjIHVuc2FmZV9lcXVhbF9mcm9tIGVxdWFsX2VsdCBwb3MgfnQxIH50MiB+bXV0MSB+bXV0MiB+bGVuID1cbiAgICBwb3MgPSBsZW5cbiAgICB8fFxuICAgIGxldCBiID0gZXF1YWxfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MSBtdXQxO1xuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0MiBtdXQyO1xuICAgIGIgJiYgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IChwb3MgKyAxKSB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW5cbiAgaW5cbiAgZnVuIGVxdWFsX2VsdCB0MSB0MiAtPlxuICAgIHBoeXNfZXF1YWwgdDEgdDJcbiAgICB8fFxuICAgIGxldCBsZW4xID0gdDEubGVuZ3RoIGluXG4gICAgbGV0IGxlbjIgPSB0Mi5sZW5ndGggaW5cbiAgICBsZW4xID0gbGVuMlxuICAgICYmIHVuc2FmZV9lcXVhbF9mcm9tXG4gICAgICAgICBlcXVhbF9lbHRcbiAgICAgICAgIDBcbiAgICAgICAgIH50MVxuICAgICAgICAgfnQyXG4gICAgICAgICB+bGVuOmxlbjFcbiAgICAgICAgIH5tdXQxOnQxLm51bV9tdXRhdGlvbnNcbiAgICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCB7IG51bV9tdXRhdGlvbnM7IG1hc2sgPSBfOyBlbHRzOyBmcm9udDsgbGVuZ3RoIH0gPSB0IGluXG4gIGFzc2VydCAoZnJvbnQgPj0gMCk7XG4gIGFzc2VydCAoZnJvbnQgPCBjYXBhY2l0eSB0KTtcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBhc3NlcnQgKGNhcGFjaXR5ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgYXNzZXJ0IChjYXBhY2l0eSA+PSAxKTtcbiAgYXNzZXJ0IChJbnQuaXNfcG93MiBjYXBhY2l0eSk7XG4gIGFzc2VydCAobGVuZ3RoID49IDApO1xuICBhc3NlcnQgKGxlbmd0aCA8PSBjYXBhY2l0eSk7XG4gIGZvciBpID0gMCB0byBjYXBhY2l0eSAtIDEgZG9cbiAgICBpZiBpIDwgdC5sZW5ndGhcbiAgICB0aGVuIChcbiAgICAgIGludmFyaWFudF9hICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zKVxuICAgIGVsc2UgYXNzZXJ0IChub3QgKHVuc2FmZV9pc19zZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSA/Y2FwYWNpdHkgKCkgOiBhIHQgPVxuICBsZXQgY2FwYWNpdHkgPVxuICAgIG1hdGNoIGNhcGFjaXR5IHdpdGhcbiAgICB8IE5vbmUgLT4gMlxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJjYW5ub3QgaGF2ZSBxdWV1ZSB3aXRoIG5lZ2F0aXZlIGNhcGFjaXR5XCJcbiAgICAgICAgICAgICBbIFwiY2FwYWNpdHlcIiwgY2FwYWNpdHkgfD4gSW50LnNleHBfb2ZfdCBdKVxuICAgICAgZWxzZSBpZiBjYXBhY2l0eSA9IDBcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSBJbnQuY2VpbF9wb3cyIGNhcGFjaXR5XG4gIGluXG4gIHsgbnVtX211dGF0aW9ucyA9IDBcbiAgOyBmcm9udCA9IDBcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgbGVuZ3RoID0gMFxuICA7IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46Y2FwYWNpdHlcbiAgfVxuOztcblxubGV0IGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QgPVxuICBhc3NlcnQgKHNyYy5sZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBkc3QpO1xuICBsZXQgZnJvbnRfbGVuID0gSW50Lm1pbiBzcmMubGVuZ3RoIChjYXBhY2l0eSBzcmMgLSBzcmMuZnJvbnQpIGluXG4gIGxldCByZXN0X2xlbiA9IHNyYy5sZW5ndGggLSBmcm9udF9sZW4gaW5cbiAgT3B0aW9uX2FycmF5LmJsaXQgfmxlbjpmcm9udF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczpzcmMuZnJvbnQgfmRzdCB+ZHN0X3BvczowO1xuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOnJlc3RfbGVuIH5zcmM6c3JjLmVsdHMgfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmZyb250X2xlblxuOztcblxubGV0IHNldF9jYXBhY2l0eV9pbnRlcm5hbCB0IG5ld19jYXBhY2l0eSA9XG4gIGxldCBkc3QgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46bmV3X2NhcGFjaXR5IGluXG4gIGJsaXRfdG9fYXJyYXkgfnNyYzp0IGRzdDtcbiAgdC5mcm9udCA8LSAwO1xuICB0Lm1hc2sgPC0gbmV3X2NhcGFjaXR5IC0gMTtcbiAgdC5lbHRzIDwtIGRzdFxuOztcblxubGV0IHNldF9jYXBhY2l0eSB0IGRlc2lyZWRfY2FwYWNpdHkgPVxuICAoKiBXZSBhbGxvdyBhcmd1bWVudHMgbGVzcyB0aGFuIDEgdG8gW3NldF9jYXBhY2l0eV0sIGJ1dCB0cmFuc2xhdGUgdGhlbSB0byAxIHRvIHNpbXBsaWZ5XG4gICAgIHRoZSBjb2RlIHRoYXQgcmVsaWVzIG9uIHRoZSBhcnJheSBsZW5ndGggYmVpbmcgYSBwb3dlciBvZiAyLiAqKVxuICBpbmNfbnVtX211dGF0aW9ucyB0O1xuICBsZXQgbmV3X2NhcGFjaXR5ID0gSW50LmNlaWxfcG93MiAobWF4IDEgKG1heCBkZXNpcmVkX2NhcGFjaXR5IHQubGVuZ3RoKSkgaW5cbiAgaWYgbmV3X2NhcGFjaXR5IDw+IGNhcGFjaXR5IHQgdGhlbiBzZXRfY2FwYWNpdHlfaW50ZXJuYWwgdCBuZXdfY2FwYWNpdHlcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYSA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID0gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eV9pbnRlcm5hbCB0ICgyICogdC5sZW5ndGgpO1xuICB1bnNhZmVfc2V0IHQgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZGVxdWV1ZV9ub25lbXB0eSB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IGVsdHMgPSB0LmVsdHMgaW5cbiAgbGV0IGZyb250ID0gdC5mcm9udCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGZyb250IGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSBlbHRzIGZyb250O1xuICB0LmZyb250IDwtIGVsdHNfaW5kZXggdCAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgU3RkbGliLlF1ZXVlLkVtcHR5IGVsc2UgZGVxdWV1ZV9ub25lbXB0eSB0XG5sZXQgZGVxdWV1ZSB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX25vbmVtcHR5IHQpXG5sZXQgZGVxdWV1ZV9hbmRfaWdub3JlX2V4biAodHlwZSBlbHQpICh0IDogZWx0IHQpID0gaWdub3JlIChkZXF1ZXVlX2V4biB0IDogZWx0KVxubGV0IGZyb250X25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgdC5mcm9udFxubGV0IGxhc3Rfbm9uZW1wdHkgdCA9IHVuc2FmZV9nZXQgdCAodC5sZW5ndGggLSAxKVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZnJvbnRfbm9uZW1wdHkgdClcbmxldCBwZWVrX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIFN0ZGxpYi5RdWV1ZS5FbXB0eSBlbHNlIGZyb250X25vbmVtcHR5IHRcbmxldCBsYXN0IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGxhc3Rfbm9uZW1wdHkgdClcbmxldCBsYXN0X2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIFN0ZGxpYi5RdWV1ZS5FbXB0eSBlbHNlIGxhc3Rfbm9uZW1wdHkgdFxuXG5sZXQgY2xlYXIgdCA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID4gMFxuICB0aGVuIChcbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICB1bnNhZmVfdW5zZXQgdCBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwO1xuICAgIHQuZnJvbnQgPC0gMClcbjs7XG5cbmxldCBibGl0X3RyYW5zZmVyIH5zcmMgfmRzdCA/bGVuICgpID1cbiAgaW5jX251bV9tdXRhdGlvbnMgc3JjO1xuICBpbmNfbnVtX211dGF0aW9ucyBkc3Q7XG4gIGxldCBsZW4gPVxuICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IHNyYy5sZW5ndGhcbiAgICB8IFNvbWUgbGVuIC0+XG4gICAgICBpZiBsZW4gPCAwXG4gICAgICB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgXCJRdWV1ZS5ibGl0X3RyYW5zZmVyOiBuZWdhdGl2ZSBsZW5ndGhcIlxuICAgICAgICAgICAgIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gICAgICBtaW4gbGVuIHNyYy5sZW5ndGhcbiAgaW5cbiAgaWYgbGVuID4gMFxuICB0aGVuIChcbiAgICBzZXRfY2FwYWNpdHkgZHN0IChtYXggKGNhcGFjaXR5IGRzdCkgKGRzdC5sZW5ndGggKyBsZW4pKTtcbiAgICBsZXQgZHN0X3N0YXJ0ID0gZHN0LmZyb250ICsgZHN0Lmxlbmd0aCBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAoKiBUaGlzIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gc2ltcGx5IFtlbnF1ZXVlIGRzdCAoZGVxdWV1ZV9ub25lbXB0eSBzcmMpXSAqKVxuICAgICAgbGV0IHNyY19pID0gKHNyYy5mcm9udCArIGkpIGxhbmQgc3JjLm1hc2sgaW5cbiAgICAgIGxldCBkc3RfaSA9IChkc3Rfc3RhcnQgKyBpKSBsYW5kIGRzdC5tYXNrIGluXG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lXG4gICAgICAgIGRzdC5lbHRzXG4gICAgICAgIGRzdF9pXG4gICAgICAgIChPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biBzcmMuZWx0cyBzcmNfaSk7XG4gICAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lIHNyYy5lbHRzIHNyY19pXG4gICAgZG9uZTtcbiAgICBkc3QubGVuZ3RoIDwtIGRzdC5sZW5ndGggKyBsZW47XG4gICAgc3JjLmZyb250IDwtIChzcmMuZnJvbnQgKyBsZW4pIGxhbmQgc3JjLm1hc2s7XG4gICAgc3JjLmxlbmd0aCA8LSBzcmMubGVuZ3RoIC0gbGVuKVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbCA9XG4gICgqIFRyYXZlcnNpbmcgdGhlIGxpc3QgdXAgZnJvbnQgdG8gY29tcHV0ZSBpdHMgbGVuZ3RoIGlzIHByb2JhYmx5IChidXQgbm90IGRlZmluaXRlbHkpXG4gICAgIGJldHRlciB0aGFuIGRvdWJsaW5nIHRoZSB1bmRlcmx5aW5nIGFycmF5IHNpemUgc2V2ZXJhbCB0aW1lcyBmb3IgbGFyZ2UgcXVldWVzLiAqKVxuICBzZXRfY2FwYWNpdHkgdCAoSW50Lm1heCAoY2FwYWNpdHkgdCkgKHQubGVuZ3RoICsgTGlzdC5sZW5ndGggbCkpO1xuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgbnVtX211dGF0aW9ucyA9IHQubnVtX211dGF0aW9ucyBpblxuICAgIGxldCByID0gcmVmIGluaXQgaW5cbiAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnNcbiAgICBkb25lO1xuICAgICFyKVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBhIC0+XG4gICAgbGV0IGFjYyA9IGYgIWkgYWNjIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICBhY2MpIFtAbm9udGFpbF1cbjs7XG5cblxuKCogW2l0ZXJdIGlzIGltcGxlbWVudGVkIGRpcmVjdGx5IGJlY2F1c2UgaW1wbGVtZW50aW5nIGl0IGluIHRlcm1zIG9mIFtmb2xkXSBpc1xuICAgc2xvd2VyLiAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgcmVzdWx0IDo9IHVuc2FmZV9nZXQgdCBpIDo6ICFyZXN1bHRcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5cblxuKCogRm9yIFtjb25jYXRfbWFwXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl0sIHdlIGRvbid0IGNyZWF0ZSBbdF9yZXN1bHRdIHdpdGggW3RdJ3NcbiAgIGNhcGFjaXR5IGJlY2F1c2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyBtYW55IGVsZW1lbnRzIFt0X3Jlc3VsdF0gd2lsbCB1bHRpbWF0ZWx5IGhvbGQuICopXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlciB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlcmkgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlIH5jYXBhY2l0eTpzcmMubGVuZ3RoICgpIGluXG4gIGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QuZWx0cztcbiAgZHN0Lmxlbmd0aCA8LSBzcmMubGVuZ3RoO1xuICBkc3Rcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OihMaXN0Lmxlbmd0aCBsKSAoKSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG4oKiBUaGUgcXVldWUgW3RdIHJldHVybmVkIGJ5IFtjcmVhdGVdIHdpbGwgaGF2ZSBbdC5sZW5ndGggPSAwXSwgW3QuZnJvbnQgPSAwXSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IEludC5jZWlsX3BvdzIgbGVuXS4gIFNvLCB3ZSBvbmx5IGhhdmUgdG8gc2V0IFt0Lmxlbmd0aF0gdG8gW2xlbl0gYWZ0ZXJcbiAgIHRoZSBibGl0IHRvIG1haW50YWluIGFsbCB0aGUgaW52YXJpYW50czogW3QubGVuZ3RoXSBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICBpbiB0aGUgcXVldWUsIFt0LmZyb250XSBpcyB0aGUgYXJyYXkgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAqKVxubGV0IGluaXQgbGVuIH5mID1cbiAgaWYgbGVuIDwgMFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIlF1ZXVlLmluaXQ6IG5lZ2F0aXZlIGxlbmd0aFwiIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTpsZW4gKCkgaW5cbiAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyA+PSBsZW4pO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIGkgKGYgaSlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gbGVuO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkudW5zYWZlX2dldCBhKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IHQubGVuZ3RoIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IG1hcCB0YSB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdGEubnVtX211dGF0aW9ucyBpblxuICBsZXQgdGIgPSBjcmVhdGUgfmNhcGFjaXR5OnRhLmxlbmd0aCAoKSBpblxuICB0Yi5sZW5ndGggPC0gdGEubGVuZ3RoO1xuICBmb3IgaSA9IDAgdG8gdGEubGVuZ3RoIC0gMSBkb1xuICAgIGxldCBiID0gZiAodW5zYWZlX2dldCB0YSBpKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0YSBudW1fbXV0YXRpb25zO1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdGIuZWx0cyBpIGJcbiAgZG9uZTtcbiAgdGJcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIG1hcCB0IH5mOihmdW4gYSAtPlxuICAgIGxldCByZXN1bHQgPSBmICFpIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICByZXN1bHQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBzaW5nbGV0b24geCA9XG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eToxICgpIGluXG4gIGVucXVldWUgdCB4O1xuICB0XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gdG9fbGlzdCB0IHw+IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIHw+IG9mX2xpc3RcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHxcblxuICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IGZ1bmN0aW9uXG4gICAgfCAoXyA6IHQpIC0+IC5cbiAgOztcblxuICBsZXQgYWxsID0gW11cbiAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICBsZXQgaGFzaCA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IGNvbXBhcmUgYSBfID0gdW5yZWFjaGFibGVfY29kZSBhXG4gIGxldCBzZXhwX29mX3QgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV90eXBlIFwiQmFzZS5Ob3RoaW5nLnRcIiBzZXhwXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHsgdW50eXBlZCA9IFVuaW9uIFtdIH1cbiAgbGV0IHRvX3N0cmluZyA9IHVucmVhY2hhYmxlX2NvZGVcbiAgbGV0IG9mX3N0cmluZyAoXyA6IHN0cmluZykgPSBmYWlsd2l0aCBcIkJhc2UuTm90aGluZy5vZl9zdHJpbmc6IG5vdCBzdXBwb3J0ZWRcIlxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5Ob3RoaW5nXCJcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRsaWIuTmF0aXZlaW50XG5pbmNsdWRlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID1cbiAgICAoZ2xvYmFsaXplX25hdGl2ZWludCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX25hdGl2ZWludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAobmF0aXZlaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX25hdGl2ZWludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5jb21wYXJlXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nX29wdCA9IG9mX3N0cmluZ19vcHRcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICAgIHR5cGUgdCA9IG5hdGl2ZWludCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfbmF0aXZlaW50IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9uYXRpdmVpbnRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9uYXRpdmVpbnQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9IG5lZ1xuICAgIGxldCAoIDwgKSA9ICggPCApXG4gICAgbGV0IHRvX3N0cmluZyBpID0gUHJpbnRmLnNwcmludGYgXCIlbnhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJW54XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTmF0aXZlaW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgbnVtX2JpdHMgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1pbnVzX29uZSA9IG1pbnVzX29uZVxubGV0IG9uZSA9IG9uZVxubGV0IHplcm8gPSB6ZXJvXG5sZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IG9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIG9mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiTmF0aXZlaW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5tb2R1bGUgUG93MiA9IHN0cnVjdFxuICBvcGVuISBJbXBvcnRcbiAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gU3RkbGliLk5hdGl2ZWludC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IFN0ZGxpYi5OYXRpdmVpbnQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBTdGRsaWIuTmF0aXZlaW50LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiAoeCA6IG5hdGl2ZWludCkgPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBTdGRsaWIuTmF0aXZlaW50LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLk5hdGl2ZWludC5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBTdGRsaWIuTmF0aXZlaW50LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gMG4gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kIFN0ZGxpYi5OYXRpdmVpbnQucHJlZCB4ID0gMG5cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBuYXRpdmVpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBTdGRsaWIuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgU3RkbGliLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCJcbiAgICAgICAgICAgWyBcIlwiLCBzZXhwX29mX25hdGl2ZWludCBpIF0pO1xuICAgIGlmIFN0ZGxpYi5OYXRpdmVpbnQuZXF1YWwgaSBTdGRsaWIuTmF0aXZlaW50Lm9uZVxuICAgIHRoZW4gMFxuICAgIGVsc2UgbnVtX2JpdHMgLSBjbHogKFN0ZGxpYi5OYXRpdmVpbnQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCBpbmNyIHIgPSByIDo9ICFyICsgb25lXG5sZXQgZGVjciByID0gciA6PSAhciAtIG9uZVxubGV0IG9mX25hdGl2ZWludCB0ID0gdFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgdCA9IHRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5uYXRpdmVpbnRfcG9wY291bnRcbmxldCBvZl9pbnQgPSBDb252LmludF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgdG9faW50ID0gQ29udi5uYXRpdmVpbnRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludF9leG5cbmxldCB0b19pbnRfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQzMiA9IENvbnYuaW50MzJfdG9fbmF0aXZlaW50XG5sZXQgb2ZfaW50MzJfZXhuID0gb2ZfaW50MzJcbmxldCB0b19pbnQzMiA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJfZXhuXG5sZXQgdG9faW50MzJfdHJ1bmMgPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl90cnVuY1xubGV0IG9mX2ludDY0ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X3RydW5jXG5sZXQgdG9faW50NjQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IHBvdyBiIGUgPSBvZl9pbnRfZXhuIChJbnRfbWF0aC5Qcml2YXRlLmludF9wb3cgKHRvX2ludF9leG4gYikgKHRvX2ludF9leG4gZSkpXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW05hdGl2ZWludF0gYW5kIFtOYXRpdmVpbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5leHRlcm5hbCBic3dhcCA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVic3dhcF9uYXRpdmVcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gTGlzdDBcbmluY2x1ZGUgTWFwX2ludGZcblxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXBfaW50Zi5GaW5pc2hlZF9vcl91bmZpbmlzaGVkXG5cbiAgKCogVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGVzdGVkIGluIFt0ZXN0X21hcC5tbF0gdG8gbWFrZSBzdXJlIG91ciB1c2Ugb2ZcbiAgICAgW1N0ZGxpYi5PYmoubWFnaWNdIGlzIGNvcnJlY3QgYW5kIHNhZmUuICopXG4gIGxldCBvZl9jb250aW51ZV9vcl9zdG9wIDogQ29udGludWVfb3Jfc3RvcC50IC0+IHQgPSBTdGRsaWIuT2JqLm1hZ2ljXG4gIGxldCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnQgPSBTdGRsaWIuT2JqLm1hZ2ljXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYXBfaW50Zi5NZXJnZV9lbGVtZW50XG5cbiAgbGV0IGxlZnQgPSBmdW5jdGlvblxuICAgIHwgYFJpZ2h0IF8gLT4gTm9uZVxuICAgIHwgYExlZnQgbGVmdCB8IGBCb3RoIChsZWZ0LCBfKSAtPiBTb21lIGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgfCBgUmlnaHQgcmlnaHQgfCBgQm90aCAoXywgcmlnaHQpIC0+IFNvbWUgcmlnaHRcbiAgOztcblxuICBsZXQgbGVmdF92YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBSaWdodCBfIC0+IGRlZmF1bHRcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gbGVmdFxuICA7O1xuXG4gIGxldCByaWdodF92YWx1ZSB0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBMZWZ0IF8gLT4gZGVmYXVsdFxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiByaWdodFxuICA7O1xuXG4gIGxldCB2YWx1ZXMgdCB+bGVmdF9kZWZhdWx0IH5yaWdodF9kZWZhdWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IGBMZWZ0IGxlZnQgLT4gbGVmdCwgcmlnaHRfZGVmYXVsdFxuICAgIHwgYFJpZ2h0IHJpZ2h0IC0+IGxlZnRfZGVmYXVsdCwgcmlnaHRcbiAgICB8IGBCb3RoIChsZWZ0LCByaWdodCkgLT4gbGVmdCwgcmlnaHRcbiAgOztcbmVuZFxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5leGNlcHRpb24gRHVwbGljYXRlIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRHVwbGljYXRlXSAoZnVuY3Rpb25cbiAgICB8IER1cGxpY2F0ZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJtYXAubWwuRHVwbGljYXRlXCJcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuKCogW1dpdGhfbGVuZ3RoLnRdIGFsbG93cyB1cyB0byBzdG9yZSBsZW5ndGggaW5mb3JtYXRpb24gb24gdGhlIHN0YWNrIHdoaWxlXG4gICBrZWVwaW5nIHRoZSB0cmVlIGdsb2JhbC4gVGhpcyBzYXZlcyB1cCB0byBPKGxvZyBuKSBibG9ja3Mgb2YgaGVhcCBhbGxvY2F0aW9uLiAqKVxubW9kdWxlIFdpdGhfbGVuZ3RoIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGVcbiAgICB7IHRyZWUgOiAnYVxuICAgICAgICAgICAgIFtAZ2xvYmFsXVxuICAgIDsgbGVuZ3RoIDogaW50IFtAZ2xvYmFsXVxuICAgIH1cblxuICB2YWwgd2l0aF9sZW5ndGggOiAnYSAtPiBpbnQgLT4gKCdhIHRbQGxvY2FsXSlcbiAgdmFsIHdpdGhfbGVuZ3RoX2dsb2JhbCA6ICdhIC0+IGludCAtPiAnYSB0XG4gIHZhbCBnbG9iYWxpemUgOiAoJ2EgdFtAbG9jYWxdKSAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHRyZWUgOiAnYSBbQGdsb2JhbF1cbiAgICA7IGxlbmd0aCA6IGludCBbQGdsb2JhbF1cbiAgICB9XG5cbiAgbGV0IHdpdGhfbGVuZ3RoIHRyZWUgbGVuZ3RoID0gIHsgdHJlZTsgbGVuZ3RoIH1cbiAgbGV0IHdpdGhfbGVuZ3RoX2dsb2JhbCB0cmVlIGxlbmd0aCA9IHsgdHJlZTsgbGVuZ3RoIH1cbiAgbGV0IGdsb2JhbGl6ZSAoeyB0cmVlOyBsZW5ndGggfSBbQGxvY2FsXSkgPSB7IHRyZWU7IGxlbmd0aCB9XG5lbmRcblxub3BlbiBXaXRoX2xlbmd0aFxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBMZWFmIG9mICdrICogJ3ZcbiAgICB8IE5vZGUgb2YgKCdrLCAndikgdCAqICdrICogJ3YgKiAoJ2ssICd2KSB0ICogaW50XG5cbiAgdHlwZSAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgdFxuXG4gIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIGgpIC0+IGhcbiAgOztcblxuICBsZXQgaW52YXJpYW50cyA9XG4gICAgbGV0IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGsgPVxuICAgICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgIHwgU29tZSBsb3dlciAtPiBjb21wYXJlX2tleSBsb3dlciBrIDwgMClcbiAgICAgICYmXG4gICAgICBtYXRjaCB1cHBlciB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIHVwcGVyIC0+IGNvbXBhcmVfa2V5IGsgdXBwZXIgPCAwXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgICAgfCBMZWFmIChrLCBfKSAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICB8IE5vZGUgKGwsIGssIF8sIHIsIGgpIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2tleSBrXG4gICAgICAgICYmIGxvb3AgbG93ZXIgKFNvbWUgaykgY29tcGFyZV9rZXkgbFxuICAgICAgICAmJiBsb29wIChTb21lIGspIHVwcGVyIGNvbXBhcmVfa2V5IHJcbiAgICBpblxuICAgIGZ1biB0IH5jb21wYXJlX2tleSAtPiBsb29wIE5vbmUgTm9uZSBjb21wYXJlX2tleSB0XG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAyICopXG4gIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID0gMCAmJiBociA9IDBcbiAgICB0aGVuIExlYWYgKHgsIGQpXG4gICAgZWxzZSBOb2RlIChsLCB4LCBkLCByLCBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSlcbiAgOztcblxuICBsZXQgc2luZ2xldG9uIGtleSBkYXRhID0gTGVhZiAoa2V5LCBkYXRhKVxuXG4gICgqIFdlIG11c3QgY2FsbCBbZl0gd2l0aCBpbmNyZWFzaW5nIGluZGV4ZXMsIGJlY2F1c2UgdGhlIGJpbl9wcm90IHJlYWRlciBpblxuICAgICBDb3JlLk1hcCBuZWVkcyBpdC4gKilcbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIGxldCByZWMgbG9vcCBuIH5mIGkgOiAoXywgXykgdCA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrLCB2ID0gZiBpIGluXG4gICAgICAgIExlYWYgKGssIHYpXG4gICAgICB8IDIgLT5cbiAgICAgICAgbGV0IGtsLCB2bCA9IGYgaSBpblxuICAgICAgICBsZXQgaywgdiA9IGYgKGkgKyAxKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBFbXB0eSwgMilcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIGxldCBrciwgdnIgPSBmIChpICsgMikgaW5cbiAgICAgICAgTm9kZSAoTGVhZiAoa2wsIHZsKSwgaywgdiwgTGVhZiAoa3IsIHZyKSwgMilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayB2IHJpZ2h0XG4gICAgaW5cbiAgICBsb29wIGxlbiB+ZiAwXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYXJyYXlfbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IG5leHQgPVxuICAgICAgaWYgYXJyYXlfbGVuZ3RoIDwgMlxuICAgICAgICAgfHxcbiAgICAgICAgIGxldCBrMCwgXyA9IGFycmF5LigwKSBpblxuICAgICAgICAgbGV0IGsxLCBfID0gYXJyYXkuKDEpIGluXG4gICAgICAgICBjb21wYXJlX2tleSBrMCBrMSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIFxuICAgICAgKHdpdGhfbGVuZ3RoXG4gICAgICAgICAob2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dClcbiAgICAgICAgIGFycmF5X2xlbmd0aClcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT5cbiAgICAgIFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKVxuICAgIHwgXyAtPlxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICAgIGxldCBpbmNyZWFzaW5nID1cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2tleSAoZnN0IGFycmF5LigwKSkgKGZzdCBhcnJheS4oMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPiBpIDwgMFxuICAgICAgICBpblxuICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMiBkb1xuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKGkpKSAoZnN0IGFycmF5LihpICsgMSkpIHdpdGhcbiAgICAgICAgICB8IDAgLT4gci5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX3NvcnRlZF9hcnJheTogZHVwbGljYXRlZCBlbGVtZW50c1wiKVxuICAgICAgICAgIHwgaSAtPlxuICAgICAgICAgICAgaWYgUG9seS4oIDw+ICkgKGkgPCAwKSBpbmNyZWFzaW5nXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5IHw+IGdsb2JhbGl6ZSkpXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAzICopXG4gIGxldCBiYWwgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhyICsgMiAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxkLCBsciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAobHJ2LCBscmQpIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIEVtcHR5KSBscnYgbHJkIChjcmVhdGUgRW1wdHkgeCBkIHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJkLCBscnIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhsICsgMiAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJkLCByciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAocmx2LCBybGQpIC0+IGNyZWF0ZSAoY3JlYXRlIGwgeCBkIEVtcHR5KSBybHYgcmxkIChjcmVhdGUgRW1wdHkgcnYgcmQgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxkLCBybHIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpKSlcbiAgICBlbHNlIGNyZWF0ZSBsIHggZCByXG4gIDs7XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiW01hcC5hZGRfZXhuXSBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbW9kdWxlIEFkZF9vcl9zZXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBZGRfZXhuX2ludGVybmFsXG4gICAgICB8IEFkZF9leG5cbiAgICAgIHwgU2V0XG4gIGVuZFxuXG4gIGxldCByZWMgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgfmxlbmd0aFxuICAgICAgICAgICAgfmtleTp4XG4gICAgICAgICAgICB+ZGF0YVxuICAgICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgICAgIH4oYWRkX29yX3NldCA6IEFkZF9vcl9zZXQudClcbiAgICA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmICh4LCBkYXRhKSkgKGxlbmd0aCArIDEpKVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGFkZF9vcl9zZXQgd2l0aFxuICAgICAgICB8IEFkZF9leG5faW50ZXJuYWwgLT4gIChFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlKVxuICAgICAgICB8IEFkZF9leG4gLT4gIChyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXkpXG4gICAgICAgIHwgU2V0IC0+ICAod2l0aF9sZW5ndGggKExlYWYgKHgsIGRhdGEpKSBsZW5ndGgpKVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAgKHdpdGhfbGVuZ3RoIChOb2RlIChMZWFmICh4LCBkYXRhKSwgdiwgZCwgRW1wdHksIDIpKSAobGVuZ3RoICsgMSkpXG4gICAgICBlbHNlICAod2l0aF9sZW5ndGggKE5vZGUgKEVtcHR5LCB2LCBkLCBMZWFmICh4LCBkYXRhKSwgMikpIChsZW5ndGggKyAxKSlcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHggdiBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBhZGRfb3Jfc2V0IHdpdGhcbiAgICAgICAgfCBBZGRfZXhuX2ludGVybmFsIC0+ICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIER1cGxpY2F0ZSlcbiAgICAgICAgfCBBZGRfZXhuIC0+ICAocmFpc2Vfa2V5X2FscmVhZHlfcHJlc2VudCB+a2V5OnggfnNleHBfb2Zfa2V5KVxuICAgICAgICB8IFNldCAtPiAgKHdpdGhfbGVuZ3RoIChOb2RlIChsLCB4LCBkYXRhLCByLCBoKSkgbGVuZ3RoKSlcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgbCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9XG4gICAgICAgICAgZmluZF9hbmRfYWRkX29yX3NldCB+bGVuZ3RoIH5rZXk6eCB+ZGF0YSByIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfmFkZF9vcl9zZXRcbiAgICAgICAgaW5cbiAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW3NldCddIGZvciB0aGUgY2FzZSB3aGVuIFtrZXldIGlzIGxlc3MgdGhhbiBhbGwgdGhlIGV4aXN0aW5nIGtleXMgKilcbiAgbGV0IHJlYyBzZXRfbWluIGtleSBkYXRhIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTGVhZiAoa2V5LCBkYXRhKVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTm9kZSAoTGVhZiAoa2V5LCBkYXRhKSwgdiwgZCwgRW1wdHksIDIpXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGwgPSBzZXRfbWluIGtleSBkYXRhIGwgaW5cbiAgICAgIGJhbCBsIHYgZCByXG4gIDs7XG5cbiAgKCogc3BlY2lhbGl6YXRpb24gb2YgW3NldCddIGZvciB0aGUgY2FzZSB3aGVuIFtrZXldIGlzIGdyZWF0ZXIgdGhhbiBhbGwgdGhlXG4gICAgIGV4aXN0aW5nIGtleXMgICopXG4gIGxldCByZWMgc2V0X21heCB0IGtleSBkYXRhID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKGtleSwgZGF0YSlcbiAgICB8IExlYWYgKHYsIGQpIC0+IE5vZGUgKEVtcHR5LCB2LCBkLCBMZWFmIChrZXksIGRhdGEpLCAyKVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCByID0gc2V0X21heCByIGtleSBkYXRhIGluXG4gICAgICBiYWwgbCB2IGQgclxuICA7O1xuXG4gIGxldCBhZGRfZXhuIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgPVxuICAgIFxuICAgICAgKGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgIHRcbiAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgfmFkZF9vcl9zZXQ6QWRkX2V4bilcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBcbiAgICAgIChmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICB0XG4gICAgICAgICB+bGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICAgICB+c2V4cF9vZl9rZXlcbiAgICAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG5faW50ZXJuYWwpXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIFxuICAgICAgKGZpbmRfYW5kX2FkZF9vcl9zZXRcbiAgICAgICAgIHRcbiAgICAgICAgIH5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgIH5zZXhwX29mX2tleTooZnVuIF8gLT4gTGlzdCBbXSlcbiAgICAgICAgIH5hZGRfb3Jfc2V0OlNldClcbiAgOztcblxuICBsZXQgc2V0JyB0IGtleSBkYXRhIH5jb21wYXJlX2tleSA9IChzZXQgdCB+bGVuZ3RoOjAgfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkpLnRyZWVcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBGcmFnbWVudCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9XG4gICAgICAgIHsgbGVmdF9zdWJ0cmVlIDogKCdrLCAndikgdFxuICAgICAgICA7IGtleSA6ICdrXG4gICAgICAgIDsgZGF0YSA6ICd2XG4gICAgICAgIH1cblxuICAgICAgbGV0IHNpbmdsZXRvbl90b190cmVlX2V4biA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH0gLT4gc2luZ2xldG9uIGtleSBkYXRhXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1hcC5zaW5nbGV0b25fdG9fdHJlZV9leG46IG5vdCBhIHNpbmdsZXRvblwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2luZ2xldG9uIH5rZXkgfmRhdGEgPSB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfVxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgY29sbGFwc2UgbCByID0gY3JlYXRlIGwubGVmdF9zdWJ0cmVlIGwua2V5IGwuZGF0YSByXG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQoci5sZWZ0X3N1YnRyZWUpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgam9pbiBsIHIgPSB7IHIgd2l0aCBsZWZ0X3N1YnRyZWUgPSBjb2xsYXBzZSBsIHIubGVmdF9zdWJ0cmVlIH1cbiAgICAgIGxldCBtYXhfa2V5IHQgPSB0LmtleVxuICAgIGVuZFxuXG4gICAgKCoqIEJ1aWxkIHRyZWVzIGZyb20gc2luZ2xldG9ucyBpbiBhIGJhbGFuY2VkIHdheSBieSB1c2luZyBza2V3IGJpbmFyeSBlbmNvZGluZy5cbiAgICAgICAgRWFjaCBsZXZlbCBjb250YWlucyB0cmVlcyBvZiB0aGUgc2FtZSBoZWlnaHQsIGNvbnNlY3V0aXZlIGxldmVscyBoYXZlIGNvbnNlY3V0aXZlXG4gICAgICAgIGhlaWdodHMuIFRoZXJlIGFyZSBubyBnYXBzLiBUaGUgZmlyc3QgbGV2ZWwgYXJlIHNpbmdsZSBrZXlzLlxuICAgICopXG4gICAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICAgIHwgWmVybyBvZiB1bml0XG4gICAgICAoKiBbdW5pdF0gdG8gbWFrZSBwYXR0ZXJuIG1hdGNoaW5nIGZhc3RlciAqKVxuICAgICAgfCBPbmUgb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnRcbiAgICAgIHwgVHdvIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50ICogKCdrLCAndikgRnJhZ21lbnQudFxuXG4gICAgbGV0IGVtcHR5ID0gWmVybyAoKVxuXG4gICAgbGV0IGFkZF91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHggPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IE9uZSAodCwgeClcbiAgICAgICAgfCBPbmUgKHQsIHkpIC0+IFR3byAodCwgeSwgeClcbiAgICAgICAgfCBUd28gKHQsIHosIHkpIC0+IE9uZSAoZ28gdCAoRnJhZ21lbnQuam9pbiB6IHkpLCB4KVxuICAgICAgaW5cbiAgICAgIGZ1biB0IH5rZXkgfmRhdGEgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uIH5rZXkgfmRhdGEpXG4gICAgOztcblxuICAgIGxldCB0b190cmVlX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgciA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gclxuICAgICAgICB8IE9uZSAodCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgbCByKVxuICAgICAgICB8IFR3byAodCwgbGwsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIChGcmFnbWVudC5qb2luIGxsIGwpIHIpXG4gICAgICBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBFbXB0eVxuICAgICAgfCBPbmUgKHQsIHIpIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgICAgfCBUd28gKHQsIGwsIHIpIC0+IGdvIChPbmUgKHQsIGwpKSAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgOztcblxuICAgIGxldCBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBOb25lXG4gICAgICB8IE9uZSAoXywgcikgfCBUd28gKF8sIF8sIHIpIC0+IFNvbWUgKEZyYWdtZW50Lm1heF9rZXkgcilcbiAgICA7O1xuICBlbmRcblxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXkgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgbGV0IHsgdHJlZSA9IGJ1aWxkZXI7IGxlbmd0aCB9ID1cbiAgICAgICAgU2VxdWVuY2UuZm9sZFxuICAgICAgICAgIHNlcVxuICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgQnVpbGRfaW5jcmVhc2luZy5lbXB0eSAwKVxuICAgICAgICAgIH5mOihmdW4geyB0cmVlID0gYnVpbGRlcjsgbGVuZ3RoIH0gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgIG1hdGNoIEJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSBidWlsZGVyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmVfa2V5IHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgICAgICAgIHJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZTogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgd2l0aF9sZW5ndGhfZ2xvYmFsXG4gICAgICAgICAgICAgICAgKEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCBidWlsZGVyIH5rZXkgfmRhdGEpXG4gICAgICAgICAgICAgICAgKGxlbmd0aCArIDEpKVxuICAgICAgaW5cbiAgICAgIE9rICh3aXRoX2xlbmd0aF9nbG9iYWwgKEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgYnVpbGRlcikgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBMaWtlIFtiYWxdIGJ1dCBhbGxvd3MgYW55IGRpZmZlcmVuY2UgaW4gaGVpZ2h0IGJldHdlZW4gW2xdIGFuZCBbcl0uXG5cbiAgICAgTyh8aGVpZ2h0IGwgLSBoZWlnaHQgcnwpICopXG4gIGxldCByZWMgam9pbiBsIGsgZCByID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IHNldF9taW4gayBkIHJcbiAgICB8IF8sIEVtcHR5IC0+IHNldF9tYXggbCBrIGRcbiAgICB8IExlYWYgKGxrLCBsZCksIF8gLT4gc2V0X21pbiBsayBsZCAoc2V0X21pbiBrIGQgcilcbiAgICB8IF8sIExlYWYgKHJrLCByZCkgLT4gc2V0X21heCAoc2V0X21heCBsIGsgZCkgcmsgcmRcbiAgICB8IE5vZGUgKGxsLCBsaywgbGQsIGxyLCBsaCksIE5vZGUgKHJsLCByaywgcmQsIHJyLCByaCkgLT5cbiAgICAgICgqIFtiYWxdIHJlcXVpcmVzIGhlaWdodCBkaWZmZXJlbmNlIDw9IDMuICopXG4gICAgICBpZiBsaCA+IHJoICsgM1xuICAgICAgKCogW2hlaWdodCBsciA+PSBoZWlnaHQgcl0sXG4gICAgICAgICB0aGVyZWZvcmUgW2hlaWdodCAoam9pbiBsciBrIGQgciAuLi4pXSBpcyBbaGVpZ2h0IHJsICsgMV0gb3IgW2hlaWdodCBybF1cbiAgICAgICAgIHRoZXJlZm9yZSB0aGUgaGVpZ2h0IGRpZmZlcmVuY2Ugd2l0aCBbbGxdIHdpbGwgYmUgPD0gMyAqKVxuICAgICAgdGhlbiBiYWwgbGwgbGsgbGQgKGpvaW4gbHIgayBkIHIpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAzXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIGsgZCBybCkgcmsgcmQgcnJcbiAgICAgIGVsc2UgYmFsIGwgayBkIHJcbiAgOztcblxuICBsZXRbQGlubGluZV0gcmVjIHNwbGl0X2dlbiB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5LCBOb25lLCBFbXB0eVxuICAgIHwgTGVhZiAoaywgZCkgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIEVtcHR5LCBTb21lIChrLCBkKSwgRW1wdHlcbiAgICAgIGVsc2UgaWYgY21wIDwgMFxuICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgdFxuICAgICAgZWxzZSB0LCBOb25lLCBFbXB0eVxuICAgIHwgTm9kZSAobCwgaywgZCwgciwgXykgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlX2tleSBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIGwsIFNvbWUgKGssIGQpLCByXG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIG1heWJlLCBsciA9IHNwbGl0X2dlbiBsIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGxsLCBtYXliZSwgam9pbiBsciBrIGQgcilcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmwsIG1heWJlLCByciA9IHNwbGl0X2dlbiByIHggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgIGpvaW4gbCBrIGQgcmwsIG1heWJlLCBycilcbiAgOztcblxuICBsZXQgc3BsaXQgdCB4IH5jb21wYXJlX2tleSA9IHNwbGl0X2dlbiB0IHggfmNvbXBhcmVfa2V5OihmdW4geSAtPiBjb21wYXJlX2tleSB4IHkpXG5cbiAgKCogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZWFsbHkgcmVpbnNlcnQgW3hdLCBidXQganVzdCBhcnJhbmdlcyBzbyB0aGF0IFtzcGxpdF1cbiAgICAgcHJvZHVjZXMgdGhlIGVxdWl2YWxlbnQgdHJlZSBpbiB0aGUgZmlyc3QgcGxhY2UuICopXG4gIGxldCBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50byB4IH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGxlZnQsIGJvdW5kYXJ5X29wdCwgcmlnaHQgPVxuICAgICAgc3BsaXRfZ2VuXG4gICAgICAgIHRcbiAgICAgICAgeFxuICAgICAgICB+Y29tcGFyZV9rZXk6XG4gICAgICAgICAgKG1hdGNoIGludG8gd2l0aFxuICAgICAgICAgICB8IGBMZWZ0IC0+XG4gICAgICAgICAgICAgZnVuIHkgLT5cbiAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2tleSB4IHkgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiAxXG4gICAgICAgICAgICAgICAgfCByZXMgLT4gcmVzKVxuICAgICAgICAgICB8IGBSaWdodCAtPlxuICAgICAgICAgICAgIGZ1biB5IC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9rZXkgeCB5IHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gLTFcbiAgICAgICAgICAgICAgICB8IHJlcyAtPiByZXMpKVxuICAgIGluXG4gICAgYXNzZXJ0IChPcHRpb24uaXNfbm9uZSBib3VuZGFyeV9vcHQpO1xuICAgIGxlZnQsIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IHNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfihsb3dlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH4odXBwZXJfYm91bmQgOiAnYSBNYXliZV9ib3VuZC50KVxuICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICA9XG4gICAgaWYgTWF5YmVfYm91bmQuYm91bmRzX2Nyb3NzZWRcbiAgICAgICAgIH5jb21wYXJlOmNvbXBhcmVfa2V5XG4gICAgICAgICB+bG93ZXI6bG93ZXJfYm91bmRcbiAgICAgICAgIH51cHBlcjp1cHBlcl9ib3VuZFxuICAgIHRoZW4gZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxlZnQsIG1pZF9hbmRfcmlnaHQgPVxuICAgICAgICBtYXRjaCBsb3dlcl9ib3VuZCB3aXRoXG4gICAgICAgIHwgVW5ib3VuZGVkIC0+IGVtcHR5LCB0XG4gICAgICAgIHwgSW5jbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPiBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YExlZnQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZXQgbWlkLCByaWdodCA9XG4gICAgICAgIG1hdGNoIHVwcGVyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gbWlkX2FuZF9yaWdodCwgZW1wdHlcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCBtaWRfYW5kX3JpZ2h0IGxiIH5jb21wYXJlX2tleVxuICAgICAgICB8IEV4Y2wgbGIgLT5cbiAgICAgICAgICBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgfmludG86YFJpZ2h0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgbGVmdCwgbWlkLCByaWdodClcbiAgOztcblxuICBsZXQgcmVjIGZpbmQgdCB4IH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmICh2LCBkKSAtPiBpZiBjb21wYXJlX2tleSB4IHYgPSAwIHRoZW4gU29tZSBkIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICBpZiBjID0gMCB0aGVuIFNvbWUgZCBlbHNlIGZpbmQgKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5XG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBkYXRhID0gZGF0YSA6OiBPcHRpb24udmFsdWUgKGZpbmQgdCBrZXkgfmNvbXBhcmVfa2V5KSB+ZGVmYXVsdDpbXSBpblxuICAgICAoc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleSlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBmaW5kIHQgeCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBbXVxuICAgIHwgU29tZSBsIC0+IGxcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBpZl9ub3RfZm91bmQga2V5IH5zZXhwX29mX2tleSA9XG4gICAgICByYWlzZSAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiTWFwLmZpbmRfZXhuOiBub3QgZm91bmRcIjsgc2V4cF9vZl9rZXkga2V5IF0pKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaW5kX2V4biB0IHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBkIGVsc2UgaWZfbm90X2ZvdW5kIHggfnNleHBfb2Zfa2V5XG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gZCBlbHNlIGZpbmRfZXhuIChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKSB4IH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXlcbiAgICBpblxuICAgICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgICBmaW5kX2V4blxuICA7O1xuXG4gIGxldCBtZW0gdCB4IH5jb21wYXJlX2tleSA9IE9wdGlvbi5pc19zb21lIChmaW5kIHQgeCB+Y29tcGFyZV9rZXkpXG5cbiAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChFbXB0eSwgaywgZCwgXywgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKGwsIF8sIF8sIF8sIF8pIC0+IG1pbl9lbHQgbFxuICA7O1xuXG4gIGV4Y2VwdGlvbiBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21pbl9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGV4Y2VwdGlvbiBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG4gIGxldCAoKSA9XG4gICAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkXG4gICAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcCAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuQXRvbSBcIm1hcC5tbC5UcmVlMC5NYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtaW5fZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtaW5fZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIChrLCBkKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAoXywgaywgZCwgRW1wdHksIF8pIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBfLCBfLCByLCBfKSAtPiBtYXhfZWx0IHJcbiAgOztcblxuICBsZXQgbWF4X2VsdF9leG4gdCA9XG4gICAgbWF0Y2ggbWF4X2VsdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTWFwX21heF9lbHRfZXhuX29mX2VtcHR5X21hcFxuICAgIHwgU29tZSB2IC0+IHZcbiAgOztcblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAucmVtb3ZlX21pbl9lbHRcIlxuICAgIHwgTGVhZiBfIC0+IEVtcHR5XG4gICAgfCBOb2RlIChFbXB0eSwgXywgXywgciwgXykgLT4gclxuICAgIHwgTm9kZSAobCwgeCwgZCwgciwgXykgLT4gYmFsIChyZW1vdmVfbWluX2VsdCBsKSB4IGQgclxuICA7O1xuXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCBtYXhfZWx0IGxvd2VyX3BhcnQsIG1pbl9lbHQgdXBwZXJfcGFydCB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGBPayB1cHBlcl9wYXJ0XG4gICAgfCBfLCBOb25lIC0+IGBPayBsb3dlcl9wYXJ0XG4gICAgfCBTb21lIChtYXhfbG93ZXIsIF8pLCBTb21lIChtaW5fdXBwZXIsIHYpIHdoZW4gY29tcGFyZV9rZXkgbWF4X2xvd2VyIG1pbl91cHBlciA8IDAgLT5cbiAgICAgIGxldCB1cHBlcl9wYXJ0X3dpdGhvdXRfbWluID0gcmVtb3ZlX21pbl9lbHQgdXBwZXJfcGFydCBpblxuICAgICAgYE9rIChqb2luIGxvd2VyX3BhcnQgbWluX3VwcGVyIHYgdXBwZXJfcGFydF93aXRob3V0X21pbilcbiAgICB8IF8gLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgPVxuICAgICgqIFRoaXMgYXNzdW1lcyB0aGF0IG1pbiA8PSBtYXgsIHdoaWNoIGlzIGNoZWNrZWQgYnkgdGhlIG91dGVyIGZ1bmN0aW9uLiAqKVxuICAgIGxldCByZWMgZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbml0XG4gICAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgbWluIDwgMCB8fCBjb21wYXJlX2tleSBrIG1heCA+IDBcbiAgICAgICAgdGhlbiAoKiBrIDwgbWluIHx8IGsgPiBtYXggKilcbiAgICAgICAgICBpbml0XG4gICAgICAgIGVsc2UgZiB+a2V5OmsgfmRhdGE6ZCBpbml0XG4gICAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjX21pbiA9IGNvbXBhcmVfa2V5IGsgbWluIGluXG4gICAgICAgIGlmIGNfbWluIDwgMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA8IG1pbiwgdGhlbiB0aGlzIG5vZGUgYW5kIGl0cyBsZWZ0IGJyYW5jaCBhcmUgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSBpZiBjX21pbiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPSBtaW4sIHRoZW4gdGhpcyBub2RlJ3MgbGVmdCBicmFuY2ggaXMgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdDooZiB+a2V5OmsgfmRhdGE6ZCBpbml0KSB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogayA+IG1pbiAqKVxuICAgICAgICAgIGxldCB6ID0gZ28gbCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgbGV0IGNfbWF4ID0gY29tcGFyZV9rZXkgayBtYXggaW5cbiAgICAgICAgICAoKiBpZiBrID4gbWF4LCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgaWYgY19tYXggPiAwXG4gICAgICAgICAgdGhlbiB6XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgeiA9IGYgfmtleTprIH5kYXRhOmQgeiBpblxuICAgICAgICAgICAgKCogaWYgayA9IG1heCwgdGhlbiB3ZSBmb2xkIGluIHRoaXMgb25lIGxhc3QgdmFsdWUgYW5kIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICAgIGlmIGNfbWF4ID0gMCB0aGVuIHogZWxzZSBnbyByIH5taW4gfm1heCB+aW5pdDp6IH5mIH5jb21wYXJlX2tleSkpXG4gICAgaW5cbiAgICBmdW4gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBjb21wYXJlX2tleSBtaW4gbWF4IDw9IDAgdGhlbiBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgZWxzZSBpbml0XG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgICAgdFxuICAgICAgICAgfm1pblxuICAgICAgICAgfm1heFxuICAgICAgICAgfmluaXQ6W11cbiAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBsIC0+IChrZXksIGRhdGEpIDo6IGwpXG4gICAgICAgICB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uczpcbiAgICAgLSBhbGwgZWxlbWVudHMgaW4gdDEgYXJlIGxlc3MgdGhhbiBlbGVtZW50cyBpbiB0MlxuICAgICAtIHxoZWlnaHQodDEpIC0gaGVpZ2h0KHQyKXwgPD0gMiAqKVxuICBsZXQgY29uY2F0X3VuY2hlY2tlZCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB4LCBkID0gbWluX2VsdF9leG4gdDIgaW5cbiAgICAgIGJhbCB0MSB4IGQgKHJlbW92ZV9taW5fZWx0IHQyKVxuICA7O1xuXG4gICgqIHNpbWlsYXIgdG8gW2NvbmNhdF91bmNoZWNrZWRdLCBhbmQgYmFsYW5jZXMgdHJlZXMgb2YgYXJiaXRyYXJ5IGhlaWdodCBkaWZmZXJlbmNlcyAqKVxuICBsZXQgY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB4LCBkID0gbWluX2VsdF9leG4gdDIgaW5cbiAgICAgIGpvaW4gdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBleGNlcHRpb24gUmVtb3ZlX25vX29wXG5cbiAgbGV0IHJlbW92ZSB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3ApXG4gICAgICB8IExlYWYgKHYsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IHggdiA9IDBcbiAgICAgICAgdGhlbiAgKHdpdGhfbGVuZ3RoIEVtcHR5IChsZW5ndGggLSAxKSlcbiAgICAgICAgZWxzZSAgKEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3ApXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gICh3aXRoX2xlbmd0aCAoY29uY2F0X3VuY2hlY2tlZCBsIHIpIChsZW5ndGggLSAxKSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gbDsgbGVuZ3RoIH0gPSByZW1vdmVfbG9vcCBsIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gcmVtb3ZlX2xvb3AgciB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgaW5cbiAgICB0cnkgIChyZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkpIHdpdGhcbiAgICB8IFJlbW92ZV9ub19vcCAtPiAgKHdpdGhfbGVuZ3RoIHQgbGVuZ3RoKVxuICA7O1xuXG4gICgqIFVzZSBleGNlcHRpb24gdG8gYXZvaWQgdHJlZS1yZWJ1aWxkIGluIG5vLW9wIGNhc2UgKilcbiAgZXhjZXB0aW9uIENoYW5nZV9ub19vcFxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgY2hhbmdlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKCogZXF1aXZhbGVudCB0byByZXR1cm5pbmc6IEVtcHR5ICopXG4gICAgICAgICAgICAoRXhuLnJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIENoYW5nZV9ub19vcClcbiAgICAgICAgIHwgU29tZSBkYXRhIC0+ICAod2l0aF9sZW5ndGggKExlYWYgKGtleSwgZGF0YSkpIChsZW5ndGggKyAxKSkpXG4gICAgICB8IExlYWYgKHYsIGQpIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkga2V5IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICAod2l0aF9sZW5ndGggRW1wdHkgKGxlbmd0aCAtIDEpKVxuICAgICAgICAgIHwgU29tZSBkJyAtPiAgKHdpdGhfbGVuZ3RoIChMZWFmICh2LCBkJykpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgRW1wdHkga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgRW1wdHkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSByOyBsZW5ndGggfSA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIEVtcHR5IHYgZCByKSBsZW5ndGgpKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAgKHdpdGhfbGVuZ3RoIChjb25jYXRfdW5jaGVja2VkIGwgcikgKGxlbmd0aCAtIDEpKVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+ICAod2l0aF9sZW5ndGggKE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCkpIGxlbmd0aCkpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IGw7IGxlbmd0aCB9ID0gY2hhbmdlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSBjaGFuZ2VfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIHIpIGxlbmd0aCkpXG4gICAgaW5cbiAgICB0cnkgIChjaGFuZ2VfY29yZSB0IGtleSBmKSB3aXRoXG4gICAgfCBDaGFuZ2Vfbm9fb3AgLT4gICh3aXRoX2xlbmd0aCB0IGxlbmd0aClcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHVwZGF0ZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIGxldCBkYXRhID0gZiBOb25lIGluXG4gICAgICAgICAod2l0aF9sZW5ndGggKExlYWYgKGtleSwgZGF0YSkpIChsZW5ndGggKyAxKSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZCcgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoTGVhZiAodiwgZCcpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgICh3aXRoX2xlbmd0aCAoYmFsIGwgdiBkIEVtcHR5KSBsZW5ndGgpKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyB0cmVlID0gcjsgbGVuZ3RoIH0gPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBFbXB0eSB2IGQgcikgbGVuZ3RoKSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgaCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZGF0YSA9IGYgKFNvbWUgZCkgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChOb2RlIChsLCBrZXksIGRhdGEsIHIsIGgpKSBsZW5ndGgpKVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB7IHRyZWUgPSBsOyBsZW5ndGggfSA9IHVwZGF0ZV9jb3JlIGwga2V5IGYgaW5cbiAgICAgICAgICAgKHdpdGhfbGVuZ3RoIChiYWwgbCB2IGQgcikgbGVuZ3RoKSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHsgdHJlZSA9IHI7IGxlbmd0aCB9ID0gdXBkYXRlX2NvcmUgciBrZXkgZiBpblxuICAgICAgICAgICAod2l0aF9sZW5ndGggKGJhbCBsIHYgZCByKSBsZW5ndGgpKVxuICAgIGluXG4gICAgICh1cGRhdGVfY29yZSB0IGtleSBmKVxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIFxuICAgICAgKGNoYW5nZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgIHwgTm9uZSB8IFNvbWUgKFtdIHwgWyBfIF0pIC0+IE5vbmVcbiAgICAgICAgIHwgU29tZSAoXyA6OiAoXyA6OiBfIGFzIG5vbl9lbXB0eV90YWlsKSkgLT4gU29tZSBub25fZW1wdHlfdGFpbCkpXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyX2tleXMgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgXykgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCBfLCByLCBfKSAtPlxuICAgICAgaXRlcl9rZXlzIH5mIGw7XG4gICAgICBmIHY7XG4gICAgICBpdGVyX2tleXMgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlciB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIChfLCBkKSAtPiBmIGRcbiAgICB8IE5vZGUgKGwsIF8sIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyIH5mIGw7XG4gICAgICBmIGQ7XG4gICAgICBpdGVyIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyaSB+ZiBsO1xuICAgICAgZiB+a2V5OnYgfmRhdGE6ZDtcbiAgICAgIGl0ZXJpIH5mIHJcbiAgOztcblxuICBsZXQgaXRlcmlfdW50aWwgPVxuICAgIGxldCByZWMgaXRlcmlfdW50aWxfbG9vcCB0IH5mIDogQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBpdGVyaV91bnRpbF9sb29wIH5mIGwgd2l0aFxuICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgIHwgQ29udGludWUgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgICAgIHwgQ29udGludWUgLT4gaXRlcmlfdW50aWxfbG9vcCB+ZiByKSlcbiAgICBpblxuICAgIGZ1biB0IH5mIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQub2ZfY29udGludWVfb3Jfc3RvcCAoaXRlcmlfdW50aWxfbG9vcCB0IH5mKVxuICA7O1xuXG4gIGxldCByZWMgbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXAgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICBsZXQgcicgPSBtYXAgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiB+a2V5OnYgfmRhdGE6ZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXBpIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IG1hcGkgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIGZvbGQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfbG9vcCB0IH5hY2MgfmYgOiAoXywgXykgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2xvb3AgbCB+YWNjIH5mIHdpdGhcbiAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCBhY2Mgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgICAgIHwgQ29udGludWUgYWNjIC0+IGZvbGRfdW50aWxfbG9vcCByIH5hY2MgfmYpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9sb29wIHQgfmFjYzppbml0IH5mIHdpdGhcbiAgICB8IENvbnRpbnVlIGFjYyAtPiBmaW5pc2ggYWNjIFtAbm9udGFpbF1cbiAgICB8IFN0b3Agc3RvcCAtPiBzdG9wXG4gIDs7XG5cbiAgbGV0IHJlYyBmb2xkX3JpZ2h0IHQgfmluaXQ6YWNjdSB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkIGFjY3VcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgfmtleTp2IH5kYXRhOmQgKGZvbGRfcmlnaHQgfmYgciB+aW5pdDphY2N1KSlcbiAgOztcblxuICBsZXQgcmVjIGZpbHRlcl9tYXBpIHQgfmYgfmxlbiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgIChtYXRjaCBmIH5rZXk6diB+ZGF0YTpkIHdpdGhcbiAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT4gTGVhZiAodiwgbmV3X2RhdGEpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgIEVtcHR5KVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXBpIGwgfmYgfmxlbiBpblxuICAgICAgbGV0IG5ld19kYXRhID0gZiB+a2V5OnYgfmRhdGE6ZCBpblxuICAgICAgbGV0IHInID0gZmlsdGVyX21hcGkgciB+ZiB+bGVuIGluXG4gICAgICAobWF0Y2ggbmV3X2RhdGEgd2l0aFxuICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPiBqb2luIGwnIHYgbmV3X2RhdGEgcidcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGRlY3IgbGVuO1xuICAgICAgICAgY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJylcbiAgOztcblxuICBsZXQgcmVjIGZpbHRlcmkgdCB+ZiB+bGVuID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgIHwgdHJ1ZSAtPiB0XG4gICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgZGVjciBsZW47XG4gICAgICAgICBFbXB0eSlcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgbCcgPSBmaWx0ZXJpIGwgfmYgfmxlbiBpblxuICAgICAgbGV0IGtlZXBfZGF0YSA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IGZpbHRlcmkgciB+ZiB+bGVuIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIGwgbCcgJiYga2VlcF9kYXRhICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgdGhlbiB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2gga2VlcF9kYXRhIHdpdGhcbiAgICAgICAgfCB0cnVlIC0+IGpvaW4gbCcgdiBkIHInXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBkZWNyIGxlbjtcbiAgICAgICAgICBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKVxuICA7O1xuXG4gIGxldCBmaWx0ZXIgdCB+ZiB+bGVuID0gZmlsdGVyaSB0IH5sZW4gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mIH5sZW4gPSBmaWx0ZXJpIHQgfmxlbiB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyX21hcCB0IH5mIH5sZW4gPSBmaWx0ZXJfbWFwaSB0IH5sZW4gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICAgIGxldCB0MSwgdDIgPVxuICAgICAgZm9sZFxuICAgICAgICB0XG4gICAgICAgIH5pbml0OihCdWlsZF9pbmNyZWFzaW5nLmVtcHR5LCBCdWlsZF9pbmNyZWFzaW5nLmVtcHR5KVxuICAgICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKHQxLCB0MikgLT5cbiAgICAgICAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgeCAtPiBCdWlsZF9pbmNyZWFzaW5nLmFkZF91bmNoZWNrZWQgdDEgfmtleSB+ZGF0YTp4LCB0MlxuICAgICAgICAgIHwgU2Vjb25kIHkgLT4gdDEsIEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCB0MiB+a2V5IH5kYXRhOnkpXG4gICAgaW5cbiAgICBCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHQxLCBCdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWVfdW5jaGVja2VkIHQyXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5LCBFbXB0eVxuICAgICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCB3aXRoXG4gICAgICAgICB8IHRydWUgLT4gdCwgRW1wdHlcbiAgICAgICAgIHwgZmFsc2UgLT4gRW1wdHksIHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBsJ3QsIGwnZiA9IGxvb3AgbCB+ZiBpblxuICAgICAgICBsZXQga2VlcF9kYXRhX3QgPSBmIH5rZXk6diB+ZGF0YTpkIGluXG4gICAgICAgIGxldCByJ3QsIHInZiA9IGxvb3AgciB+ZiBpblxuICAgICAgICBsZXQgbWsgbCcga2VlcF9kYXRhIHInID1cbiAgICAgICAgICBpZiBwaHlzX2VxdWFsIGwgbCcgJiYga2VlcF9kYXRhICYmIHBoeXNfZXF1YWwgciByJ1xuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2gga2VlcF9kYXRhIHdpdGhcbiAgICAgICAgICAgIHwgdHJ1ZSAtPiBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgICAgfCBmYWxzZSAtPiBjb25jYXRfYW5kX2JhbGFuY2VfdW5jaGVja2VkIGwnIHInKVxuICAgICAgICBpblxuICAgICAgICBtayBsJ3Qga2VlcF9kYXRhX3Qgcid0LCBtayBsJ2YgKG5vdCBrZWVwX2RhdGFfdCkgcidmXG4gICAgaW5cbiAgICBsb29wIHQgfmZcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdrLCAndiwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdrICogJ3YgKiAoJ2ssICd2KSB0cmVlICogKCdrLCAndiwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHQgKGUgOiAoXywgXywgaW5jcmVhc2luZykgdCkgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29ucyBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHQgKGUgOiAoXywgXywgZGVjcmVhc2luZykgdCkgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RyZWUgdHJlZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyB0cmVlIEVuZFxuICAgIGxldCBvZl90cmVlX3JpZ2h0IHRyZWUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgdHJlZSBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCBfLCByLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGVwX2RlZXBlcl9leG4gdHJlZSBlID1cbiAgICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gRW1wdHksIE1vcmUgKHYsIGQsIEVtcHR5LCBlKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPiBsLCBNb3JlICh2LCBkLCByLCBlKVxuICAgIDs7XG5cbiAgICAoKiBbZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzJdIGRyb3BzIHRoZSBsYXJnZXN0IHBoeXNpY2FsbHktZXF1YWxcbiAgICAgICBwcmVmaXggb2YgdHJlZTEgYW5kIHRyZWUyIHRoYXQgdGhleSBzaGFyZSwgYW5kIHRoZW4gcHJlcGVuZHMgdGhlIHJlbWFpbmluZyBkYXRhXG4gICAgICAgaW50byBhY2MxIGFuZCBhY2MyLCByZXNwZWN0aXZlbHkuXG4gICAgICAgVGhpcyBjYW4gYmUgYXN5bXB0b3RpY2FsbHkgZmFzdGVyIHRoYW4gW2NvbnNdIGV2ZW4gaWYgaXQgc2tpcHMgYSBzbWFsbCBwcm9wb3J0aW9uXG4gICAgICAgb2YgdGhlIHRyZWUgYmVjYXVzZSBbY29uc10gaXMgYWx3YXlzIE8obG9nKG4pKSBpbiB0aGUgc2l6ZSBvZiB0aGUgdHJlZSwgd2hpbGVcbiAgICAgICB0aGlzIGZ1bmN0aW9uIGlzIE8obG9nKG4vbSkpIHdoZXJlIFttXSBpcyB0aGUgc2l6ZSBvZiB0aGUgcGFydCBvZiB0aGUgdHJlZSB0aGF0XG4gICAgICAgaXMgc2tpcHBlZC4gKilcbiAgICBsZXQgcmVjIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgIHRoZW4gYWNjMSwgYWNjMlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBoMiA9IGhlaWdodCB0cmVlMiBpblxuICAgICAgICBsZXQgaDEgPSBoZWlnaHQgdHJlZTEgaW5cbiAgICAgICAgaWYgaDIgPSBoMVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgdHJlZTEsIGFjYzEgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTEgYWNjMSBpblxuICAgICAgICAgIGxldCB0cmVlMiwgYWNjMiA9IHN0ZXBfZGVlcGVyX2V4biB0cmVlMiBhY2MyIGluXG4gICAgICAgICAgZHJvcF9waHlzX2VxdWFsX3ByZWZpeCB0cmVlMSBhY2MxIHRyZWUyIGFjYzIpXG4gICAgICAgIGVsc2UgaWYgaDIgPiBoMVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgdHJlZTIsIGFjYzIgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTIgYWNjMiBpblxuICAgICAgICAgIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdHJlZTEsIGFjYzEgPSBzdGVwX2RlZXBlcl9leG4gdHJlZTEgYWNjMSBpblxuICAgICAgICAgIGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdHJlZTEgYWNjMSB0cmVlMiBhY2MyKSlcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gMFxuICAgICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgICB8IF8sIEVuZCAtPiAxXG4gICAgICAgIHwgTW9yZSAodjEsIGQxLCByMSwgZTEpLCBNb3JlICh2MiwgZDIsIHIyLCBlMikgLT5cbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZGF0YSBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZTEsIGUyID0gZHJvcF9waHlzX2VxdWFsX3ByZWZpeCByMSBlMSByMiBlMiBpblxuICAgICAgICAgICAgICBsb29wIGUxIGUyKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQxIHQyXG4gICAgOztcblxuICAgIGxldCBlcXVhbCBjb21wYXJlX2tleSBkYXRhX2VxdWFsIHQxIHQyID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gdHJ1ZVxuICAgICAgICB8IEVuZCwgXyB8IF8sIEVuZCAtPiBmYWxzZVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgY29tcGFyZV9rZXkgdjEgdjIgPSAwXG4gICAgICAgICAgJiYgZGF0YV9lcXVhbCBkMSBkMlxuICAgICAgICAgICYmXG4gICAgICAgICAgbGV0IGUxLCBlMiA9IGRyb3BfcGh5c19lcXVhbF9wcmVmaXggcjEgZTEgcjIgZTIgaW5cbiAgICAgICAgICBsb29wIGUxIGUyXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgcmVjIGZvbGQgfmluaXQgfmYgPSBmdW5jdGlvblxuICAgICAgfCBFbmQgLT4gaW5pdFxuICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGxldCBuZXh0ID0gZiB+a2V5IH5kYXRhIGluaXQgaW5cbiAgICAgICAgZm9sZCAoY29ucyB0cmVlIGVudW0pIH5pbml0Om5leHQgfmZcbiAgICA7O1xuXG4gICAgbGV0IGZvbGQyIGNvbXBhcmVfa2V5IHQxIHQyIH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCB0MSB0MiBjdXJyID1cbiAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiBjdXJyXG4gICAgICAgIHwgRW5kLCBfIC0+XG4gICAgICAgICAgZm9sZCB0MiB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgUmlnaHQgZGF0YSkgYWNjKSBbQG5vbnRhaWxcbiAgICAgICAgICBdXG4gICAgICAgIHwgXywgRW5kIC0+XG4gICAgICAgICAgZm9sZCB0MSB+aW5pdDpjdXJyIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gZiB+a2V5IH5kYXRhOihgTGVmdCBkYXRhKSBhY2MpIFtAbm9udGFpbFxuICAgICAgICAgIF1cbiAgICAgICAgfCBNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYEJvdGggKHYxLCB2MikpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYExlZnQgdjEpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyIG5leHQpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMiB+ZGF0YTooYFJpZ2h0IHYyKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgaW5pdCBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgPVxuICAgICAgbGV0IHN0ZXAgc3RhdGUgPVxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICAgIHwgRW5kLCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgICAgU2VxdWVuY2UuU3RlcC5ZaWVsZCB7IHZhbHVlID0ga2V5LCBgUmlnaHQgZGF0YTsgc3RhdGUgPSBFbmQsIGNvbnMgdHJlZSBlbnVtIH1cbiAgICAgICAgfCBNb3JlIChrZXksIGRhdGEsIHRyZWUsIGVudW0pLCBFbmQgLT5cbiAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrZXksIGBMZWZ0IGRhdGE7IHN0YXRlID0gY29ucyB0cmVlIGVudW0sIEVuZCB9XG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGVudW0xIHRyZWUyIGVudW0yIGluXG4gICAgICAgICAgICBpZiBkYXRhX2VxdWFsIHYxIHYyXG4gICAgICAgICAgICB0aGVuIFNlcXVlbmNlLlN0ZXAuU2tpcCB7IHN0YXRlID0gbmV4dF9zdGF0ZSB9XG4gICAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGsxLCBgVW5lcXVhbCAodjEsIHYyKTsgc3RhdGUgPSBuZXh0X3N0YXRlIH0pXG4gICAgICAgICAgZWxzZSBpZiBjb21wYXJlX3Jlc3VsdCA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrMSwgYExlZnQgdjE7IHN0YXRlID0gY29ucyB0cmVlMSBlbnVtMSwgcmlnaHQgfVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGsyLCBgUmlnaHQgdjI7IHN0YXRlID0gbGVmdCwgY29ucyB0cmVlMiBlbnVtMiB9XG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KGRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCkgfmY6c3RlcFxuICAgIDs7XG5cbiAgICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICAgbGV0IGFkZCBhY2MgayB2ID0gZiBhY2MgKGssIGBSaWdodCB2KSBpblxuICAgICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgICBsZXQgcmVjIGxvb3AgbGVmdCByaWdodCBhY2MgPVxuICAgICAgICBtYXRjaCBsZWZ0LCByaWdodCB3aXRoXG4gICAgICAgIHwgRW5kLCBlbnVtIC0+XG4gICAgICAgICAgZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpIFtAbm9udGFpbF1cbiAgICAgICAgfCBlbnVtLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIGVudW0gfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSkgW0Bub250YWlsXVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBpZiBkYXRhX2VxdWFsIHYxIHYyIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGsxLCBgVW5lcXVhbCAodjEsIHYyKSkgaW5cbiAgICAgICAgICAgIGxldCBlbnVtMSwgZW51bTIgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHRyZWUxIGVudW0xIHRyZWUyIGVudW0yIGluXG4gICAgICAgICAgICBsb29wIGVudW0xIGVudW0yIGFjYylcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgazEgdjEgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHJpZ2h0IGFjYylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsyIHYyIGluXG4gICAgICAgICAgICBsb29wIGxlZnQgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgIGluXG4gICAgICBsZXQgbGVmdCwgcmlnaHQgPSBkcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQgaW5cbiAgICAgIGxvb3AgbGVmdCByaWdodCBpbml0IFtAbm9udGFpbF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgdG9fc2VxdWVuY2VfaW5jcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPlxuICAgICAgICBTZXF1ZW5jZS5TdGVwLllpZWxkIHsgdmFsdWUgPSBrLCB2OyBzdGF0ZSA9IEVudW0uY29ucyB0IGUgfVxuICAgIGluXG4gICAgbGV0IGluaXQgPVxuICAgICAgbWF0Y2ggZnJvbV9rZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IEVudW0ub2ZfdHJlZSB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+XG4gICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgeyB2YWx1ZSA9IGssIHY7IHN0YXRlID0gRW51bS5jb25zX3JpZ2h0IHQgZSB9XG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlX3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nX2tleSlcbiAgICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfa2V5IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIChrZXksIGRhdGEpIC0+IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXlcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2xlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIGxldCBlMSwgZTIgPSBFbnVtLmRyb3BfcGh5c19lcXVhbF9wcmVmaXggdDEgRW5kIHQyIEVuZCBpblxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgZTEgZTJcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBsZXQgZTEsIGUyID0gRW51bS5kcm9wX3BoeXNfZXF1YWxfcHJlZml4IHQxIEVuZCB0MiBFbmQgaW5cbiAgICBFbnVtLmVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSBlMSBlMlxuICA7O1xuXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDJcbiAgICAgIGNvbXBhcmVfa2V5XG4gICAgICAoRW51bS5vZl90cmVlIHQxKVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MilcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKCkgLT4gZiB+a2V5IH5kYXRhKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgRW51bS5mb2xkMiBjb21wYXJlX2tleSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKSB+ZiB+aW5pdFxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgICgqIFtFbnVtLmZvbGRfZGlmZnNdIGlzIGEgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgaXMgY29uc2lkZXJhYmx5XG4gICAgICAgc2xvd2VyLCBhcyB3ZSBoYXZlIHRvIGFsbG9jYXRlIHF1aXRlIGEgbG90IG9mIHN0YXRlIHRvIHRyYWNrIGVudW1lcmF0aW9uIG9mIGEgdHJlZS5cbiAgICAgICBBdm9pZCBpZiB3ZSBjYW4uXG4gICAgKilcbiAgICBsZXQgc2xvdyB4IHkgfmluaXQgPSBFbnVtLmZvbGRfc3ltbWV0cmljX2RpZmYgeCB5IH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+ZiB+aW5pdCBpblxuICAgIGxldCBhZGQgYWNjIGsgdiA9IGYgYWNjIChrLCBgUmlnaHQgdikgaW5cbiAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICBsZXQgZGVsdGEgYWNjIGsgdiB2JyA9IGlmIGRhdGFfZXF1YWwgdiB2JyB0aGVuIGFjYyBlbHNlIGYgYWNjIChrLCBgVW5lcXVhbCAodiwgdicpKSBpblxuICAgICgqIElmIHR3byB0cmVlcyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhdCB0aGUgcm9vdCAoYW5kIHRoZSBzYW1lIGtleSwgaWYgdGhleSdyZVxuICAgICAgIFtOb2RlXXMpIHdlIGNhbiB0cml2aWFsbHkgZGlmZiBlYWNoIHN1YnBhcnQgaW4gb2J2aW91cyB3YXlzLiAqKVxuICAgIGxldCByZWMgbG9vcCB0IHQnIGFjYyA9XG4gICAgICBpZiBwaHlzX2VxdWFsIHQgdCdcbiAgICAgIHRoZW4gYWNjXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCwgdCcgd2l0aFxuICAgICAgICB8IEVtcHR5LCBuZXdfdmFscyAtPlxuICAgICAgICAgIGZvbGQgbmV3X3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIGFjYyBrZXkgZGF0YSkgW0Bub250YWlsXVxuICAgICAgICB8IG9sZF92YWxzLCBFbXB0eSAtPlxuICAgICAgICAgIGZvbGQgb2xkX3ZhbHMgfmluaXQ6YWNjIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gcmVtb3ZlIGFjYyBrZXkgZGF0YSkgW0Bub250YWlsXVxuICAgICAgICB8IExlYWYgKGssIHYpLCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IGsgaycgd2l0aFxuICAgICAgICAgICB8IHggd2hlbiB4ID0gMCAtPiBkZWx0YSBhY2MgayB2IHYnXG4gICAgICAgICAgIHwgeCB3aGVuIHggPCAwIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgayB2IGluXG4gICAgICAgICAgICAgYWRkIGFjYyBrJyB2J1xuICAgICAgICAgICB8IF8gKCogd2hlbiB4ID4gMCAqKSAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsnIHYnIGluXG4gICAgICAgICAgICAgcmVtb3ZlIGFjYyBrIHYpXG4gICAgICAgIHwgTm9kZSAobCwgaywgdiwgciwgXyksIE5vZGUgKGwnLCBrJywgdicsIHInLCBfKSB3aGVuIGNvbXBhcmVfa2V5IGsgaycgPSAwIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGxvb3AgbCBsJyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gZGVsdGEgYWNjIGsgdiB2JyBpblxuICAgICAgICAgIGxvb3AgciByJyBhY2NcbiAgICAgICAgKCogT3VyIHJvb3RzIGFyZW4ndCB0aGUgc2FtZSBrZXkuIEZhbGxiYWNrIHRvIHRoZSBzbG93IG1vZGUuIFRyZWVzIHdpdGggc21hbGxcbiAgICAgICAgICAgZGlmZnMgd2lsbCBvbmx5IGRvIHRoaXMgb24gdmVyeSBzbWFsbCBwYXJ0cyBvZiB0aGUgdHJlZSAoaG9wZWZ1bGx5IC0gaWYgdGhlXG4gICAgICAgICAgIG92ZXJhbGwgcm9vdCBpcyByZWJhbGFuY2VkLCB3ZSdsbCBlYXQgdGhlIHdob2xlIGNvc3QsIHVuZm9ydHVuYXRlbHkuKSAqKVxuICAgICAgICB8IE5vZGUgXywgTm9kZSBfIHwgTm9kZSBfLCBMZWFmIF8gfCBMZWFmIF8sIE5vZGUgXyAtPiBzbG93IHQgdCcgfmluaXQ6YWNjKVxuICAgIGluXG4gICAgbG9vcCB0MSB0MiBpbml0IFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcmVjIGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAobCwgXywgXywgciwgXykgLT4gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9rZXkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdCA9XG4gICAgZm9sZFxuICAgICAgdFxuICAgICAgfmluaXQ6KGhhc2hfZm9sZF9pbnQgc3RhdGUgKGxlbmd0aCB0KSlcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBzdGF0ZSAtPiBoYXNoX2ZvbGRfZGF0YSAoaGFzaF9mb2xkX2tleSBzdGF0ZSBrZXkpIGRhdGEpXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gbGlzdCAtPiBrZXkgOjogbGlzdCkgdCB+aW5pdDpbXVxuICBsZXQgZGF0YSB0ID0gZm9sZF9yaWdodCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgdCB+aW5pdDpbXVxuXG4gIG1vZHVsZSB0eXBlIEZvbGRhYmxlID0gc2lnXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjKVtAbG9jYWxdKSAtPiAnYWNjXG4gIGVuZFxuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gb2ZfZm9sZGFibGUnIH5mb2xkIGZvbGRhYmxlIH5pbml0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgKGZvbGQgW0BpbmxpbmVkIGhpbnRdKVxuICAgICAgZm9sZGFibGVcbiAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgIH5mOihmdW4geyB0cmVlID0gYWNjdW07IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgIGxldCBwcmV2X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluaXRcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkYXRhID0gZiBwcmV2X2RhdGEgZGF0YSBpblxuICAgICAgICAoc2V0IGFjY3VtIH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbW9kdWxlIE9mX2ZvbGRhYmxlIChNIDogRm9sZGFibGUpID0gc3RydWN0XG4gICAgbGV0IG9mX2ZvbGRhYmxlX2ZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIG9mX2ZvbGRhYmxlJyB+Zm9sZDpNLmZvbGQgZm9sZGFibGUgfmluaXQgfmYgfmNvbXBhcmVfa2V5XG4gICAgOztcblxuICAgIGxldCBvZl9mb2xkYWJsZV9yZWR1Y2UgZm9sZGFibGUgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIE0uZm9sZFxuICAgICAgICBmb2xkYWJsZVxuICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgIH5mOihmdW4geyB0cmVlID0gYWNjdW07IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgbGV0IG5ld19kYXRhID1cbiAgICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgICAgICAgfCBTb21lIHByZXYgLT4gZiBwcmV2IGRhdGFcbiAgICAgICAgICBpblxuICAgICAgICAgIChzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhOm5ld19kYXRhIH5jb21wYXJlX2tleSB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pIFtAbm9udGFpbFxuICAgICAgXVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5ID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBNLmZvbGRcbiAgICAgICAgICAgIGZvbGRhYmxlXG4gICAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgICAgIGxldCAoeyB0cmVlID0gXzsgbGVuZ3RoID0gbGVuZ3RoJyB9IGFzIGFjYykgPVxuICAgICAgICAgICAgICAgIHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJ1xuICAgICAgICAgICAgICB0aGVuIHIucmV0dXJuIChgRHVwbGljYXRlX2tleSBrZXkpXG4gICAgICAgICAgICAgIGVsc2UgZ2xvYmFsaXplIGFjYyBbQG5vbnRhaWxdKVxuICAgICAgICBpblxuICAgICAgICBgT2sgbWFwKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfb3JfZXJyb3IgZm9sZGFibGUgfmNvbXBhcmF0b3IgPVxuICAgICAgbWF0Y2ggb2ZfZm9sZGFibGUgZm9sZGFibGUgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICAgIHwgYE9rIHggLT4gUmVzdWx0Lk9rIHhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfb3JfZXJyb3I6IGR1cGxpY2F0ZSBrZXlcIilcbiAgICAgICAgICBrZXlcbiAgICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfZXhuIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IHhcbiAgICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICAgIEVycm9yLmNyZWF0ZSAoXCJNYXAub2ZfXCIgXiBNLm5hbWUgXiBcIl9leG46IGR1cGxpY2F0ZSBrZXlcIikga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICAgIHw+IEVycm9yLnJhaXNlXG4gICAgOztcblxuICAgICgqIFJldmVyc2UgdGhlIGlucHV0LCB0aGVuIGZvbGQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBUaGUgcmVzdWx0aW5nIG1hcCB1c2VzIHRoZSBmaXJzdFxuICAgICAgIGluc3RhbmNlIG9mIGVhY2gga2V5IGZyb20gdGhlIGlucHV0IGxpc3QuIFRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBlbGVtZW50cyBpbiBlYWNoXG4gICAgICAgb3V0cHV0IGxpc3QgaXMgdGhlIHNhbWUgYXMgaW4gdGhlIGlucHV0IGxpc3QuICopXG4gICAgbGV0IG9mX2ZvbGRhYmxlX211bHRpIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICBsZXQgYWxpc3QgPSBNLmZvbGQgZm9sZGFibGUgfmluaXQ6W10gfmY6KGZ1biBsIHggLT4geCA6OiBsKSBpblxuICAgICAgb2ZfZm9sZGFibGUnIGFsaXN0IH5mb2xkOkxpc3QuZm9sZCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIH5jb21wYXJlX2tleVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9hbGlzdCA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJhbGlzdFwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGZvbGQgPSBMaXN0LmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX2FsaXN0ID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2V4blxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9tdWx0aVxuXG4gIG1vZHVsZSBPZl9zZXF1ZW5jZSA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJzZXF1ZW5jZVwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFNlcXVlbmNlLnRcblxuICAgICAgbGV0IGZvbGQgPSBTZXF1ZW5jZS5mb2xkXG4gICAgZW5kKVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZm9sZFxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfcmVkdWNlXG4gIGxldCBvZl9zZXF1ZW5jZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX29yX2Vycm9yXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9leG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfbXVsdGlcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsaXN0IH5nZXRfa2V5IH5jb21wYXJlX2tleSA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgbWFwID1cbiAgICAgICAgTGlzdC5mb2xkXG4gICAgICAgICAgbGlzdFxuICAgICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgZW1wdHkgMClcbiAgICAgICAgICB+ZjooZnVuIHsgdHJlZSA9IHQ7IGxlbmd0aCB9IGRhdGEgLT5cbiAgICAgICAgICAgIGxldCBrZXkgPSBnZXRfa2V5IGRhdGEgaW5cbiAgICAgICAgICAgIGxldCAoeyB0cmVlID0gXzsgbGVuZ3RoID0gbmV3X2xlbmd0aCB9IGFzIGFjYykgPVxuICAgICAgICAgICAgICBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIHQgfmNvbXBhcmVfa2V5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbGVuZ3RoID0gbmV3X2xlbmd0aFxuICAgICAgICAgICAgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KVxuICAgICAgICAgICAgZWxzZSBnbG9iYWxpemUgYWNjIFtAbm9udGFpbF0pXG4gICAgICBpblxuICAgICAgYE9rIG1hcCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGxpc3QgfmdldF9rZXkgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG9mX2xpc3Rfd2l0aF9rZXkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHggLT4gUmVzdWx0Lk9rIHhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgXCJNYXAub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvcjogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGtleVxuICAgICAgICBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X2V4biBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB4IC0+IHhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2xpc3Rfd2l0aF9rZXlfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICB8PiBFcnJvci5yYWlzZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgbGlzdCA9IExpc3QucmV2IGxpc3QgaW5cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApIH5mOihmdW4geyB0cmVlID0gdDsgbGVuZ3RoIH0gZGF0YSAtPlxuICAgICAgbGV0IGtleSA9IGdldF9rZXkgZGF0YSBpblxuICAgICAgKHVwZGF0ZSB0IGtleSB+bGVuZ3RoIH5jb21wYXJlX2tleSB+ZjooZnVuIG9wdGlvbiAtPlxuICAgICAgICAgbGV0IGxpc3QgPSBPcHRpb24udmFsdWUgb3B0aW9uIH5kZWZhdWx0OltdIGluXG4gICAgICAgICBkYXRhIDo6IGxpc3QpXG4gICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGwgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIG5vdCAoZiBkYXRhKSB0aGVuIHIucmV0dXJuIGZhbHNlKTtcbiAgICAgIHRydWUpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBub3QgKGYgfmtleSB+ZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgZiBkYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gci5yZXR1cm4gdHJ1ZSk7XG4gICAgICBmYWxzZSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYykgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9XG4gICAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxcbiAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX2FsaXN0ID8oa2V5X29yZGVyID0gYEluY3JlYXNpbmcpIHQgPVxuICAgIG1hdGNoIGtleV9vcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPiBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIHggLT4gKGtleSwgZGF0YSkgOjogeClcbiAgICB8IGBEZWNyZWFzaW5nIC0+IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICA7O1xuXG4gIGxldCBtZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBlbHRzID0gVW5pZm9ybV9hcnJheS51bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjoobGVuZ3RoIHQxICsgbGVuZ3RoIHQyKSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyMiB0MSB0MiB+Y29tcGFyZV9rZXkgfmY6KGZ1biB+a2V5IH5kYXRhOnZhbHVlcyAtPlxuICAgICAgbWF0Y2ggZiB+a2V5IHZhbHVlcyB3aXRoXG4gICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgVW5pZm9ybV9hcnJheS5zZXQgZWx0cyAhaSAoa2V5LCB2YWx1ZSk7XG4gICAgICAgIGluY3IgaVxuICAgICAgfCBOb25lIC0+ICgpKTtcbiAgICBsZXQgbGVuID0gIWkgaW5cbiAgICBsZXQgZ2V0IGkgPSBVbmlmb3JtX2FycmF5LmdldCBlbHRzIGkgaW5cbiAgICBsZXQgdHJlZSA9IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmY6Z2V0IGluXG4gICAgICh3aXRoX2xlbmd0aCB0cmVlIGxlbilcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkID1cbiAgICBsZXQgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoX2xhcmdlIHRfbGFyZ2UgdF9zbWFsbCB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgZm9sZFxuICAgICAgICB0X3NtYWxsXG4gICAgICAgIH5pbml0Oih3aXRoX2xlbmd0aF9nbG9iYWwgdF9sYXJnZSBsZW5ndGhfbGFyZ2UpXG4gICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpkYXRhJyB7IHRyZWUgPSB0OyBsZW5ndGggfSAtPlxuICAgICAgICAgICh1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEnXG4gICAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gY2FsbCBjb21iaW5lIH5rZXkgZGF0YSBkYXRhJylcbiAgICAgICAgICAgfD4gZ2xvYmFsaXplKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgaW5cbiAgICBsZXQgY2FsbCBmIH5rZXkgeCB5ID0gZiB+a2V5IHggeSBpblxuICAgIGxldCBzd2FwIGYgfmtleSB4IHkgPSBmIH5rZXkgeSB4IGluXG4gICAgZnVuIHQxIHQyIH5sZW5ndGgxIH5sZW5ndGgyIH5jb21iaW5lIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgbGVuZ3RoMiA8PSBsZW5ndGgxXG4gICAgICB0aGVuIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDEgdDEgdDIgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDIgdDIgdDEgfmNhbGw6c3dhcCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgQ2xvc2VzdF9rZXlfaW1wbCA9IHN0cnVjdFxuICAgICgqIFttYXJrZXJdIGFuZCBbcmVwYWNrYWdlXSBhbGxvdyB1cyB0byBjcmVhdGUgXCJsb2dpY2FsXCIgb3B0aW9ucyB3aXRob3V0IGFjdHVhbGx5XG4gICAgICAgYWxsb2NhdGluZyBhbnkgb3B0aW9ucy4gUGFzc2luZyBbRm91bmQga2V5IHZhbHVlXSB0byBhIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICBwYXNzaW5nIFtTb21lIChrZXksIHZhbHVlKV07IHBhc3NpbmcgW01pc3NpbmcgKCkgKCldIGlzIGVxdWl2YWxlbnQgdG8gcGFzc2luZ1xuICAgICAgIFtOb25lXS4gKilcbiAgICB0eXBlICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXIgPVxuICAgICAgfCBNaXNzaW5nIDogKCdrLCAndiwgdW5pdCwgdW5pdCkgbWFya2VyXG4gICAgICB8IEZvdW5kIDogKCdrLCAndiwgJ2ssICd2KSBtYXJrZXJcblxuICAgIGxldCByZXBhY2thZ2VcbiAgICAgICAgICAodHlwZSBrIHYga19vcHQgdl9vcHQpXG4gICAgICAgICAgKG1hcmtlciA6IChrLCB2LCBrX29wdCwgdl9vcHQpIG1hcmtlcilcbiAgICAgICAgICAoayA6IGtfb3B0KVxuICAgICAgICAgICh2IDogdl9vcHQpXG4gICAgICA6IChrICogdikgb3B0aW9uXG4gICAgICA9XG4gICAgICBtYXRjaCBtYXJrZXIgd2l0aFxuICAgICAgfCBNaXNzaW5nIC0+IE5vbmVcbiAgICAgIHwgRm91bmQgLT4gU29tZSAoaywgdilcbiAgICA7O1xuXG4gICAgKCogVGhlIHR5cGUgc2lnbmF0dXJlIGlzIGV4cGxpY2l0IGhlcmUgdG8gYWxsb3cgcG9seW1vcnBoaWMgcmVjdXJzaW9uLiAqKVxuICAgIGxldCByZWMgbG9vcCA6XG4gICAgICAnayAndiAna19vcHQgJ3Zfb3B0LlxuICAgICAgKCdrLCAndikgdHJlZVxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2tcbiAgICAgIC0+IGNvbXBhcmVfa2V5OignayAtPiAnayAtPiBpbnQpXG4gICAgICAtPiAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyXG4gICAgICAtPiAna19vcHRcbiAgICAgIC0+ICd2X29wdFxuICAgICAgLT4gKCdrICogJ3YpIG9wdGlvblxuICAgICAgPVxuICAgICAgZnVuIHQgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gLT4gYyA+PSAwXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT4gYyA+IDBcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gYyA8PSAwXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT4gYyA8IDBcbiAgICAgICAgICB0aGVuIFNvbWUgKGsnLCB2JylcbiAgICAgICAgICBlbHNlIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTm9kZSAobCwgaycsIHYnLCByLCBfKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIGMgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGlzIGlzIGEgYmFzZSBjYXNlIChubyByZWN1cnNpdmUgY2FsbCkuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IFNvbWUgKGsnLCB2JylcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSByIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtaW5fZWx0IHJcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSBsIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtYXhfZWx0IGwpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBXZSBhcmUgZ3VhcmFudGVlZCBoZXJlIHRoYXQgaycgPD4gay4gKilcbiAgICAgICAgICAgICgqIFRoaXMgaXMgdGhlIG9ubHkgcmVjdXJzaXZlIGNhc2UuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjIDwgMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBjbG9zZXN0X2tleSB0IGRpciBrIH5jb21wYXJlX2tleSA9IGxvb3AgdCBkaXIgayB+Y29tcGFyZV9rZXkgTWlzc2luZyAoKSAoKVxuICBlbmRcblxuICBsZXQgY2xvc2VzdF9rZXkgPSBDbG9zZXN0X2tleV9pbXBsLmNsb3Nlc3Rfa2V5XG5cbiAgbGV0IHJlYyByYW5rIHQgayB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaycsIF8pIC0+IGlmIGNvbXBhcmVfa2V5IGsnIGsgPSAwIHRoZW4gU29tZSAwIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaycsIF8sIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIFNvbWUgKGxlbmd0aCBsKVxuICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgdGhlbiByYW5rIGwgayB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgT3B0aW9uLm1hcCAocmFuayByIGsgfmNvbXBhcmVfa2V5KSB+ZjooZnVuIHJhbmsgLT4gcmFuayArIDEgKyBsZW5ndGggbClcbiAgOztcblxuICAoKiB0aGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtTZXF1ZW5jZV0gaW50ZXJmYWNlIGJ1dCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uXG4gICAgIGFsbG9jYXRlcyBvbmx5IDIgd29yZHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB3cml0ZS1iYXJyaWVyICopXG4gIGxldCByZWMgbnRoJyBudW1fdG9fc2VhcmNoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+XG4gICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgIGVsc2UgKFxuICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgIE5vbmUpXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgKG1hdGNoIG50aCcgbnVtX3RvX3NlYXJjaCBsIHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHNvbWVcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgICAgbnRoJyBudW1fdG9fc2VhcmNoIHIpKVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gbnRoJyAocmVmIG4pIHRcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8IDApIFtAbm9udGFpbF1cbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID49IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgTGFzdF9lcXVhbF90byAtPlxuICAgICAgKG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApIHdpdGhcbiAgICAgICB8IFNvbWUgKGtleSwgZGF0YSkgYXMgcGFpciB3aGVuIGNvbXBhcmUgfmtleSB+ZGF0YSB2ID0gMCAtPiBwYWlyXG4gICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE5vbmUpXG4gICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIC0+XG4gICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID4gMCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgbGV0IGlzX2xlZnQgfmtleSB+ZGF0YSA9XG4gICAgICBtYXRjaCBzZWdtZW50X29mIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgICB8IGBSaWdodCAtPiBmYWxzZVxuICAgIGluXG4gICAgbGV0IGlzX3JpZ2h0IH5rZXkgfmRhdGEgPSBub3QgKGlzX2xlZnQgfmtleSB+ZGF0YSkgaW5cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfb25fbGVmdCAtPiBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOmlzX2xlZnQgW0Bub250YWlsXVxuICAgIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOmlzX3JpZ2h0IFtAbm9udGFpbF1cbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRdIGZpbmRzIHRoZSBrZXkgaW4gW3RdIHdoaWNoIHNhdGlzZmllcyBbbWF5YmVfYm91bmRdXG4gICAgIGFuZCB0aGUgcmVsZXZhbnQgb25lIG9mIFtpZl9leGNsdXNpdmVdIG9yIFtpZl9pbmNsdXNpdmVdLCBhcyBqdWRnZWQgYnkgW2NvbXBhcmVdLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSB+aWZfZXhjbHVzaXZlIH5pZl9pbmNsdXNpdmUgPVxuICAgIGxldCBmaW5kX2JvdW5kIHQgaG93IGJvdW5kIH5jb21wYXJlIDogXyBNYXliZV9ib3VuZC50IG9wdGlvbiA9XG4gICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIHQgaG93IGJvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgIHwgU29tZSAoYm91bmQsIF8pIC0+IFNvbWUgKEluY2wgYm91bmQpXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggKG1heWJlX2JvdW5kIDogXyBNYXliZV9ib3VuZC50KSB3aXRoXG4gICAgfCBFeGNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9leGNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IEluY2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2luY2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgVW5ib3VuZGVkIC0+IFNvbWUgVW5ib3VuZGVkXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kc10gZmluZHMgdGhlIChub3QgbmVjZXNzYXJpbHkgZGlzdGluY3QpIGtleXMgaW4gW3RdXG4gICAgIHdoaWNoIG1vc3QgY2xvc2VseSBhcHByb2FjaCAoYnV0IGRvIG5vdCBjcm9zcykgW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXSwgYXNcbiAgICAganVkZ2VkIGJ5IFtjb21wYXJlXS4gSXQgcmV0dXJucyBbTm9uZV0gaWYgbm8ga2V5cyBpbiBbdF0gYXJlIHdpdGhpbiB0aGF0IHJhbmdlLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGZpbmRfbG93ZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIGxldCBmaW5kX3VwcGVyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbWF0Y2ggZmluZF9sb3dlcl9ib3VuZCB0IGxvd2VyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBsb3dlcl9ib3VuZCAtPlxuICAgICAgKG1hdGNoIGZpbmRfdXBwZXJfYm91bmQgdCB1cHBlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgdXBwZXJfYm91bmQgLT4gU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSlcbiAgOztcblxuXG4gIHR5cGUgKCdrLCAndikgYWNjID1cbiAgICB7IG11dGFibGUgYmFkX2tleSA6ICdrIG9wdGlvblxuICAgIDsgbXV0YWJsZSBtYXBfbGVuZ3RoIDogKCdrLCAndikgdCBXaXRoX2xlbmd0aC50XG4gICAgfVxuXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgYWNjID0geyBiYWRfa2V5ID0gTm9uZTsgbWFwX2xlbmd0aCA9IHdpdGhfbGVuZ3RoX2dsb2JhbCBlbXB0eSAwIH0gaW5cbiAgICBpdGVyaSB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgIGxldCB7IHRyZWUgPSBtYXA7IGxlbmd0aCB9ID0gYWNjLm1hcF9sZW5ndGggaW5cbiAgICAgIGxldCAoeyB0cmVlID0gXzsgbGVuZ3RoID0gbGVuZ3RoJyB9IGFzIHBhaXIpID1cbiAgICAgICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBtYXAgfmNvbXBhcmVfa2V5XG4gICAgICBpblxuICAgICAgaWYgbGVuZ3RoID0gbGVuZ3RoJyAmJiBPcHRpb24uaXNfbm9uZSBhY2MuYmFkX2tleVxuICAgICAgdGhlbiBhY2MuYmFkX2tleSA8LSBTb21lIGtleVxuICAgICAgZWxzZSBhY2MubWFwX2xlbmd0aCA8LSBnbG9iYWxpemUgcGFpcik7XG4gICAgbWF0Y2ggYWNjLmJhZF9rZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT2sgYWNjLm1hcF9sZW5ndGhcbiAgICB8IFNvbWUga2V5IC0+IGBEdXBsaWNhdGVfa2V5IGtleVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfml0ZXJpIH4oY29tcGFyYXRvciA6IF8gQ29tcGFyYXRvci50KSA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgICBFcnJvci5jcmVhdGUgXCJNYXAub2ZfaXRlcmlfZXhuOiBkdXBsaWNhdGUga2V5XCIga2V5IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgICB8PiBFcnJvci5yYWlzZVxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IGtleV9vZl9zZXhwIHZhbHVlX29mX3NleHAgc2V4cCB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIGxldCBhbGlzdCA9IGxpc3Rfb2Zfc2V4cCAocGFpcl9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbHVlX29mX3NleHApIHNleHAgaW5cbiAgICBsZXQgY29tcGFyZV9rZXkgPSBjb21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICBtYXRjaCBvZl9hbGlzdCBhbGlzdCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgYE9rIHYgLT4gdlxuICAgIHwgYER1cGxpY2F0ZV9rZXkgayAtPlxuICAgICAgKCogZmluZCB0aGUgc2V4cCBvZiBhIGR1cGxpY2F0ZSBrZXksIHNvIHRoZSBlcnJvciBpcyBuYXJyb3dlZCB0byBhIGtleSBhbmQgbm90XG4gICAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgICBsZXQgYWxpc3Rfc2V4cHMgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBGbi5pZCBGbi5pZCkgc2V4cCBpblxuICAgICAgbGV0IGZvdW5kX2ZpcnN0X2sgPSByZWYgZmFsc2UgaW5cbiAgICAgIExpc3QuaXRlcjJfb2sgYWxpc3QgYWxpc3Rfc2V4cHMgfmY6KGZ1biAoazIsIF8pIChrMl9zZXhwLCBfKSAtPlxuICAgICAgICBpZiBjb21wYXJlX2tleSBrIGsyID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJNYXAudF9vZl9zZXhwX2RpcmVjdDogZHVwbGljYXRlIGtleVwiIGsyX3NleHBcbiAgICAgICAgICBlbHNlIGZvdW5kX2ZpcnN0X2sgOj0gdHJ1ZSk7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgbGV0IGYgfmtleSB+ZGF0YSBhY2MgPSBTZXhwLkxpc3QgWyBzZXhwX29mX2tleSBrZXk7IHNleHBfb2ZfdmFsdWUgZGF0YSBdIDo6IGFjYyBpblxuICAgIFNleHAuTGlzdCAoZm9sZF9yaWdodCB+ZiB0IH5pbml0OltdKVxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB0IH5zZXhwX29mX2tleSA9XG4gICAgbGV0IG9rcywgZXJyb3JzID0gcGFydGl0aW9uX21hcCB0IH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgICBpZiBpc19lbXB0eSBlcnJvcnNcbiAgICB0aGVuIE9rIG9rc1xuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3JfcyAoc2V4cF9vZl90IHNleHBfb2Zfa2V5IEVycm9yLnNleHBfb2ZfdCBlcnJvcnMpXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzXG4gICAgICAgIHQxXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yOih7IGNvbXBhcmUgPSBjb21wYXJlX2tleTsgc2V4cF9vZl90ID0gc2V4cF9vZl9rZXkgfSA6IF8gQ29tcGFyYXRvci50KVxuICAgID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGBPa1xuICAgICAgICAoZm9sZFxuICAgICAgICAgICB0MVxuICAgICAgICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSB7IHRyZWUgPSB0MjsgbGVuZ3RoIH0gLT5cbiAgICAgICAgICAgICBsZXQga2V5ID0gZiBrZXkgaW5cbiAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgIGFkZF9leG5faW50ZXJuYWwgdDIgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgfD4gZ2xvYmFsaXplXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgRHVwbGljYXRlIC0+IHJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KSkpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mIH5jb21wYXJhdG9yID1cbiAgICBtYXRjaCBtYXBfa2V5cyB0IH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayByZXN1bHQgLT4gcmVzdWx0XG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIk1hcC5tYXBfa2V5c19leG46IGR1cGxpY2F0ZSBrZXlcIiBbIFwia2V5XCIsIGtleSB8PiBzZXhwX29mX2tleSBdKVxuICA7O1xuXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB+b3V0ZXJfY29tcGFyYXRvciB+aW5uZXJfY29tcGFyYXRvciBvdXRlcl90ID1cbiAgICBmb2xkXG4gICAgICBvdXRlcl90XG4gICAgICB+aW5pdDood2l0aF9sZW5ndGhfZ2xvYmFsIGVtcHR5IDApXG4gICAgICB+ZjooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX3QgYWNjIC0+XG4gICAgICAgIGZvbGRcbiAgICAgICAgICBpbm5lcl90XG4gICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSB7IHRyZWUgPSBhY2M7IGxlbmd0aCA9IGFjY19sZW4gfSAtPlxuICAgICAgICAgICAgKHVwZGF0ZVxuICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICBpbm5lcl9rZXlcbiAgICAgICAgICAgICAgIH5sZW5ndGg6YWNjX2xlblxuICAgICAgICAgICAgICAgfmNvbXBhcmVfa2V5OmlubmVyX2NvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHdpdGhfbGVuZ3RoX2dsb2JhbCAoc2luZ2xldG9uIG91dGVyX2tleSBkYXRhKSAxXG4gICAgICAgICAgICAgICAgIHwgU29tZSB7IHRyZWUgPSBlbHQ7IGxlbmd0aCA9IGVsdF9sZW4gfSAtPlxuICAgICAgICAgICAgICAgICAgIChzZXRcbiAgICAgICAgICAgICAgICAgICAgICBlbHRcbiAgICAgICAgICAgICAgICAgICAgICB+a2V5Om91dGVyX2tleVxuICAgICAgICAgICAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgfmxlbmd0aDplbHRfbGVuXG4gICAgICAgICAgICAgICAgICAgICAgfmNvbXBhcmVfa2V5Om91dGVyX2NvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgIHw+IGdsb2JhbGl6ZSkgW0Bub250YWlsXSlcbiAgICAgICAgICAgICB8PiBnbG9iYWxpemUpIFtAbm9udGFpbF0pKVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIGxldCByZWMgbWFwaSB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBBLnJldHVybiBFbXB0eVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBBLm1hcCAoZiB+a2V5OnYgfmRhdGE6ZCkgfmY6KGZ1biBuZXdfZGF0YSAtPiBMZWFmICh2LCBuZXdfZGF0YSkpXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICAgIGxldCBsJyA9IEEub2ZfdGh1bmsgKGZ1biAoKSAtPiBtYXBpIH5mIGwpIGluXG4gICAgICAgIGxldCBkJyA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgICAgbGV0IHInID0gQS5vZl90aHVuayAoZnVuICgpIC0+IG1hcGkgfmYgcikgaW5cbiAgICAgICAgQS5tYXAzIGwnIGQnIHInIH5mOihmdW4gbCcgZCcgcicgLT4gTm9kZSAobCcsIHYsIGQnLCByJywgaCkpXG4gICAgOztcblxuICAgICgqIEluIHRoZW9yeSB0aGUgY29tcHV0YXRpb24gb2YgbGVuZ3RoIG9uLXRoZS1mbHkgaXMgbm90IG5lY2Vzc2FyeSBoZXJlIGJlY2F1c2UgaXQgY2FuXG4gICAgICAgYmUgZG9uZSBieSB3cmFwcGluZyB0aGUgYXBwbGljYXRpdmUgW0FdIHdpdGggbGVuZ3RoLWNvbXB1dGluZyBsb2dpYy4gSG93ZXZlcixcbiAgICAgICBpbnRyb2R1Y2luZyBhbiBhcHBsaWNhdGl2ZSB0cmFuc2Zvcm1lciBsaWtlIHRoYXQgbWFrZXMgdGhlIG1hcCBiZW5jaG1hcmtzIGluXG4gICAgICAgYXN5bmNfa2VybmVsL2JlbmNoL3NyYy9iZW5jaF9kZWZlcnJlZF9tYXAubWwgbm90aWNlYWJseSBzbG93ZXIuICopXG4gICAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgbGV0IHJlYyB0cmVlX2ZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBBLnJldHVybiAod2l0aF9sZW5ndGhfZ2xvYmFsIEVtcHR5IDApXG4gICAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgICBBLm1hcCAoZiB+a2V5OnYgfmRhdGE6ZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFNvbWUgbmV3X2RhdGEgLT4gd2l0aF9sZW5ndGhfZ2xvYmFsIChMZWFmICh2LCBuZXdfZGF0YSkpIDFcbiAgICAgICAgICAgIHwgTm9uZSAtPiB3aXRoX2xlbmd0aF9nbG9iYWwgRW1wdHkgMClcbiAgICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgICAgIEEubWFwM1xuICAgICAgICAgICAgKEEub2ZfdGh1bmsgKGZ1biAoKSAtPiB0cmVlX2ZpbHRlcl9tYXBpIGwgfmYpKVxuICAgICAgICAgICAgKGYgfmtleTp2IH5kYXRhOmQpXG4gICAgICAgICAgICAoQS5vZl90aHVuayAoZnVuICgpIC0+IHRyZWVfZmlsdGVyX21hcGkgciB+ZikpXG4gICAgICAgICAgICB+ZjpcbiAgICAgICAgICAgICAgKGZ1blxuICAgICAgICAgICAgICAgIHsgdHJlZSA9IGwnOyBsZW5ndGggPSBsX2xlbiB9IG5ld19kYXRhIHsgdHJlZSA9IHInOyBsZW5ndGggPSByX2xlbiB9IC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggbmV3X2RhdGEgd2l0aFxuICAgICAgICAgICAgICAgIHwgU29tZSBuZXdfZGF0YSAtPlxuICAgICAgICAgICAgICAgICAgd2l0aF9sZW5ndGhfZ2xvYmFsIChqb2luIGwnIHYgbmV3X2RhdGEgcicpIChsX2xlbiArIHJfbGVuICsgMSlcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHdpdGhfbGVuZ3RoX2dsb2JhbCAoY29uY2F0X2FuZF9iYWxhbmNlX3VuY2hlY2tlZCBsJyByJykgKGxfbGVuICsgcl9sZW4pKVxuICAgICAgaW5cbiAgICAgIHRyZWVfZmlsdGVyX21hcGkgdCB+ZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbnR5cGUgKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnaywgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAoJ2ssICd2KSBUcmVlMC50XG4gIDsgbGVuZ3RoIDogaW50XG4gIH1cblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcblxubGV0IGNvbXBhcmVfa2V5IHQgPSB0LmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG5cblxubGV0IGxpa2UgeyB0cmVlID0gXzsgbGVuZ3RoID0gXzsgY29tcGFyYXRvciB9ICh7IHRyZWU7IGxlbmd0aCB9IDogXyBXaXRoX2xlbmd0aC50KSA9XG4gIHsgdHJlZTsgbGVuZ3RoOyBjb21wYXJhdG9yIH1cbjs7XG5cbmxldCBsaWtlX21heWJlX25vX29wXG4gICAgICAoeyB0cmVlID0gb2xkX3RyZWU7IGxlbmd0aCA9IF87IGNvbXBhcmF0b3IgfSBhcyBvbGRfdClcbiAgICAgICh7IHRyZWU7IGxlbmd0aCB9IDogXyBXaXRoX2xlbmd0aC50KVxuICA9XG4gIGlmIHBoeXNfZXF1YWwgb2xkX3RyZWUgdHJlZSB0aGVuIG9sZF90IGVsc2UgeyB0cmVlOyBsZW5ndGg7IGNvbXBhcmF0b3IgfVxuOztcblxubGV0IHdpdGhfc2FtZV9sZW5ndGggeyB0cmVlID0gXzsgY29tcGFyYXRvcjsgbGVuZ3RoIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cbmxldCBvZl9saWtlX3RyZWUgdCB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yOyBsZW5ndGggPSBUcmVlMC5sZW5ndGggdHJlZSB9XG5cbmxldCBvZl9saWtlX3RyZWVfbWF5YmVfbm9fb3AgdCB0cmVlID1cbiAgaWYgcGh5c19lcXVhbCB0LnRyZWUgdHJlZVxuICB0aGVuIHRcbiAgZWxzZSB7IHRyZWU7IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cbjs7XG5cbmxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuKCogRXhwb3NpbmcgdGhpcyBmdW5jdGlvbiB3b3VsZCBtYWtlIGl0IHZlcnkgZWFzeSBmb3IgdGhlIGludmFyaWFudHNcbiAgIG9mIHRoaXMgbW9kdWxlIHRvIGJlIGJyb2tlbi4gKilcbmxldCBvZl90cmVlX3Vuc2FmZSB+Y29tcGFyYXRvciB+bGVuZ3RoIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCB9XG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgdCA9IHQuY29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdC50cmVlXG5cbiAgbGV0IGludmFyaWFudHMgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0LnRyZWUgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSAmJiBUcmVlMC5sZW5ndGggdC50cmVlID0gdC5sZW5ndGhcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHQudHJlZVxuICBsZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxuXG4gIGxldCBzZXQgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuc2V0IHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX2V4blxuICAgICAgICAgdC50cmVlXG4gICAgICAgICB+bGVuZ3RoOnQubGVuZ3RoXG4gICAgICAgICB+a2V5XG4gICAgICAgICB+ZGF0YVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICAgICAgICAgfnNleHBfb2Zfa2V5OnQuY29tcGFyYXRvci5zZXhwX29mX3QpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdCkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGRfZXhuX2ludGVybmFsIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCByZXN1bHQgLT4gYE9rIHJlc3VsdFxuICAgIHwgZXhjZXB0aW9uIER1cGxpY2F0ZSAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfbXVsdGkgdC50cmVlIH5sZW5ndGg6dC5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAucmVtb3ZlX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICAgIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IGtleSA9IFRyZWUwLmZpbmRfbXVsdGkgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLmNoYW5nZSB0LnRyZWUga2V5IH5mIH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9XG4gICAgbGlrZVxuICAgICAgdFxuICAgICAgKFRyZWUwLnVwZGF0ZSB0LnRyZWUga2V5IH5mIH5sZW5ndGg6dC5sZW5ndGggfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgICBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdC50cmVlXG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgdCBrZXkgPSBUcmVlMC5maW5kIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCByZW1vdmUgdCBrZXkgPVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmUgdC50cmVlIGtleSB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWVtIHQga2V5ID0gVHJlZTAubWVtIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgaXRlcl9rZXlzIHQgfmYgPSBUcmVlMC5pdGVyX2tleXMgdC50cmVlIH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQudHJlZSB+ZlxuICBsZXQgaXRlcmkgdCB+ZiA9IFRyZWUwLml0ZXJpIHQudHJlZSB+ZlxuICBsZXQgaXRlcmlfdW50aWwgdCB+ZiA9IFRyZWUwLml0ZXJpX3VudGlsIHQudHJlZSB+ZlxuICBsZXQgaXRlcjIgdDEgdDIgfmYgPSBUcmVlMC5pdGVyMiB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgbGV0IG1hcCB0IH5mID0gd2l0aF9zYW1lX2xlbmd0aCB0IChUcmVlMC5tYXAgdC50cmVlIH5mKVxuICBsZXQgbWFwaSB0IH5mID0gd2l0aF9zYW1lX2xlbmd0aCB0IChUcmVlMC5tYXBpIHQudHJlZSB+ZilcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdC50cmVlIH5pbml0IH5mIH5maW5pc2hcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MS50cmVlIHQyLnRyZWUgfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyX2tleXMgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlX21heWJlX25vX29wIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmaWx0ZXIgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyaSB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJpIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZV9tYXliZV9ub19vcCB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgICBsZXQgbGVuID0gIChyZWYgdC5sZW5ndGgpIGluXG4gICAgbGV0IHRyZWUgPSBUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+bGVuIGluXG4gICAgbGlrZSB0ICh3aXRoX2xlbmd0aCB0cmVlICFsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgbGV0IGxlbiA9ICAocmVmIHQubGVuZ3RoKSBpblxuICAgIGxldCB0cmVlID0gVHJlZTAuZmlsdGVyX21hcGkgdC50cmVlIH5mIH5sZW4gaW5cbiAgICBsaWtlIHQgKHdpdGhfbGVuZ3RoIHRyZWUgIWxlbikgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBvZl9saWtlX3RyZWUyIHQgKHQxLCB0MikgPSBvZl9saWtlX3RyZWUgdCB0MSwgb2ZfbGlrZV90cmVlIHQgdDJcblxuICBsZXQgb2ZfbGlrZV90cmVlMl9tYXliZV9ub19vcCB0ICh0MSwgdDIpID1cbiAgICBvZl9saWtlX3RyZWVfbWF5YmVfbm9fb3AgdCB0MSwgb2ZfbGlrZV90cmVlX21heWJlX25vX29wIHQgdDJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9IG9mX2xpa2VfdHJlZTIgdCAoVHJlZTAucGFydGl0aW9uX21hcGkgdC50cmVlIH5mKVxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gb2ZfbGlrZV90cmVlMiB0IChUcmVlMC5wYXJ0aXRpb25fbWFwIHQudHJlZSB+ZilcbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9IG9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AgdCAoVHJlZTAucGFydGl0aW9uaV90ZiB0LnRyZWUgfmYpXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IG9mX2xpa2VfdHJlZTJfbWF5YmVfbm9fb3AgdCAoVHJlZTAucGFydGl0aW9uX3RmIHQudHJlZSB+ZilcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjoob2ZfbGlrZV90cmVlIHQpXG4gICAgICAoVHJlZTAuY29tYmluZV9lcnJvcnMgdC50cmVlIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfZGF0YSB0MSB0MiA9IFRyZWUwLmVxdWFsIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0LnRyZWVcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdC50cmVlXG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHQudHJlZVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxLnRyZWVcbiAgICAgIHQyLnRyZWVcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mID1cbiAgICBsaWtlIHQxIChUcmVlMC5tZXJnZSB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkIHQxIHQyIH5jb21iaW5lID1cbiAgICAoKiBUaGlzIGlzIG9ubHkgYSBuby1vcCBpbiB0aGUgY2FzZSB3aGVyZSBhdCBsZWFzdCBvbmUgb2YgdGhlIG1hcHMgaXMgZW1wdHkuICopXG4gICAgbGlrZV9tYXliZV9ub19vcFxuICAgICAgKGlmIHQyLmxlbmd0aCA8PSB0MS5sZW5ndGggdGhlbiB0MSBlbHNlIHQyKVxuICAgICAgKFRyZWUwLm1lcmdlX3NrZXdlZFxuICAgICAgICAgdDEudHJlZVxuICAgICAgICAgdDIudHJlZVxuICAgICAgICAgfmxlbmd0aDE6dDEubGVuZ3RoXG4gICAgICAgICB+bGVuZ3RoMjp0Mi5sZW5ndGhcbiAgICAgICAgIH5jb21iaW5lXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQxKSlcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0LnRyZWVcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0LnRyZWVcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdC50cmVlXG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdC50cmVlXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBleGlzdHNpIHQgfmYgPSBUcmVlMC5leGlzdHNpIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdC50cmVlIH5mXG5cbiAgbGV0IHNwbGl0IHQgayA9XG4gICAgbGV0IGwsIG1heWJlLCByID0gVHJlZTAuc3BsaXQgdC50cmVlIGsgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSBpblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gICAgKCogVHJ5IHRvIHRyYXZlcnNlIHRoZSBsZWFzdCBhbW91bnQgcG9zc2libGUgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGgsXG4gICAgICAgdXNpbmcgaGVpZ2h0IGFzIGEgaGV1cmlzdGljLiAqKVxuICAgIGxldCBib3RoX2xlbiA9IGlmIE9wdGlvbi5pc19zb21lIG1heWJlIHRoZW4gdC5sZW5ndGggLSAxIGVsc2UgdC5sZW5ndGggaW5cbiAgICBpZiBUcmVlMC5oZWlnaHQgbCA8IFRyZWUwLmhlaWdodCByXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbCA9IG9mX3RyZWUgbCB+Y29tcGFyYXRvciBpblxuICAgICAgbCwgbWF5YmUsIG9mX3RyZWVfdW5zYWZlIHIgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggbCkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgciA9IG9mX3RyZWUgciB+Y29tcGFyYXRvciBpblxuICAgICAgb2ZfdHJlZV91bnNhZmUgbCB+Y29tcGFyYXRvciB+bGVuZ3RoOihib3RoX2xlbiAtIGxlbmd0aCByKSwgbWF5YmUsIHIpXG4gIDs7XG5cbiAgbGV0IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0IH5pbnRvIGsgPVxuICAgIGxldCBsLCByID1cbiAgICAgIFRyZWUwLnNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB0LnRyZWUgfmludG8gayB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBpZiBUcmVlMC5oZWlnaHQgbCA8IFRyZWUwLmhlaWdodCByXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbCA9IG9mX3RyZWUgbCB+Y29tcGFyYXRvciBpblxuICAgICAgbCwgb2ZfdHJlZV91bnNhZmUgciB+Y29tcGFyYXRvciB+bGVuZ3RoOih0Lmxlbmd0aCAtIGxlbmd0aCBsKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gb2ZfdHJlZSByIH5jb21wYXJhdG9yIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBsIH5jb21wYXJhdG9yIH5sZW5ndGg6KHQubGVuZ3RoIC0gbGVuZ3RoIHIpLCByKVxuICA7O1xuXG4gIGxldCBzcGxpdF9sZV9ndCB0IGsgPSBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50bzpgTGVmdCBrXG4gIGxldCBzcGxpdF9sdF9nZSB0IGsgPSBzcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnkgdCB+aW50bzpgUmlnaHQga1xuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBsZWZ0LCBtaWQsIHJpZ2h0ID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlIHQudHJlZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgb3V0ZXJfam9pbmVkX2hlaWdodCA9XG4gICAgICBsZXQgaF9sID0gVHJlZTAuaGVpZ2h0IGxlZnRcbiAgICAgIGFuZCBoX3IgPSBUcmVlMC5oZWlnaHQgcmlnaHQgaW5cbiAgICAgIGlmIGhfbCA9IGhfciB0aGVuIGhfbCArIDEgZWxzZSBtYXggaF9sIGhfclxuICAgIGluXG4gICAgaWYgb3V0ZXJfam9pbmVkX2hlaWdodCA8IFRyZWUwLmhlaWdodCBtaWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBtaWRfbGVuZ3RoID0gdC5sZW5ndGggLSAoVHJlZTAubGVuZ3RoIGxlZnQgKyBUcmVlMC5sZW5ndGggcmlnaHQpIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdCkgfmxlbmd0aDptaWRfbGVuZ3RoKVxuICAgIGVsc2Ugb2ZfdHJlZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdClcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYXBwZW5kXG4gICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgbG93ZXJfcGFydClcbiAgICAgICAgfmxvd2VyX3BhcnQ6bG93ZXJfcGFydC50cmVlXG4gICAgICAgIH51cHBlcl9wYXJ0OnVwcGVyX3BhcnQudHJlZVxuICAgIHdpdGhcbiAgICB8IGBPayB0cmVlIC0+XG4gICAgICBgT2tcbiAgICAgICAgKG9mX3RyZWVfdW5zYWZlXG4gICAgICAgICAgIHRyZWVcbiAgICAgICAgICAgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgbG93ZXJfcGFydClcbiAgICAgICAgICAgfmxlbmd0aDoobG93ZXJfcGFydC5sZW5ndGggKyB1cHBlcl9wYXJ0Lmxlbmd0aCkpXG4gICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmUgdC50cmVlIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0LnRyZWUgfm1pbiB+bWF4IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0LnRyZWUgZGlyIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdC50cmVlIG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgdCBrZXkgPSBUcmVlMC5yYW5rIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0LnRyZWUgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IGxpa2VfbWF5YmVfbm9fb3AgdCAod2l0aF9sZW5ndGggVHJlZTAuRW1wdHkgMCkgW0Bub250YWlsXVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEgOiBBcHBsaWNhdGl2ZS5MYXp5X2FwcGxpY2F0aXZlKSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUcmVlX3RyYXZlcnNhbHMgPSBUcmVlMC5NYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKEEpXG5cbiAgICBsZXQgbWFwaSB0IH5mID1cbiAgICAgIEEubWFwIChUcmVlX3RyYXZlcnNhbHMubWFwaSB0LnRyZWUgfmYpIH5mOihmdW4gbmV3X3RyZWUgLT5cbiAgICAgICAgd2l0aF9zYW1lX2xlbmd0aCB0IG5ld190cmVlKVxuICAgIDs7XG5cbiAgICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gICAgICBBLm1hcCAoVHJlZV90cmF2ZXJzYWxzLmZpbHRlcl9tYXBpIHQudHJlZSB+ZikgfmY6KGZ1biBuZXdfdHJlZV93aXRoX2xlbmd0aCAtPlxuICAgICAgICBsaWtlIHQgbmV3X3RyZWVfd2l0aF9sZW5ndGgpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuKCogWzBdIGlzIHVzZWQgYXMgdGhlIFtsZW5ndGhdIGFyZ3VtZW50IGV2ZXJ5d2hlcmUgaW4gdGhpcyBtb2R1bGUsIHNpbmNlIHRyZWVzIGRvIG5vdFxuICAgaGF2ZSB0aGVpciBsZW5ndGhzIHN0b3JlZCBhdCB0aGUgcm9vdCwgdW5saWtlIG1hcHMuIFRoZSB2YWx1ZXMgYXJlIGRpc2NhcmRlZCBhbHdheXMuICopXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID0gKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBrIHYgPSBUcmVlMC5zaW5nbGV0b24gayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIChUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgICAudHJlZVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBPcl9lcnJvci5tYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZCAtPiBkXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggPSBfIH0gLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yXG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKHggOiAoJ2ssICd2KSBUcmVlMC50IFdpdGhfbGVuZ3RoLnQpIC0+IHgudHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID0gKFRyZWUwLm9mX2FsaXN0X2V4biBhbGlzdCB+Y29tcGFyYXRvcikudHJlZVxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mID1cbiAgICAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpLnRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICAoVHJlZTAub2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoID0gXyB9IC0+IGBPayB0cmVlXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICA7O1xuXG4gIGxldCBvZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpID0gKFRyZWUwLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3IpLnRyZWVcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6X3JlcXVpcmVkX2J5X2ludGYgfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvclxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXEgPSAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcikudHJlZVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmYgPVxuICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgd2l0aFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgICB8IGBPayB7IHRyZWU7IGxlbmd0aCA9IF8gfSAtPiBgT2sgdHJlZVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSB+Y29tcGFyYXRvclxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICh4IDogKCdrLCAndikgVHJlZTAudCBXaXRoX2xlbmd0aC50KSAtPiB4LnRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X2V4biBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yKS50cmVlXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgKFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGlcbiAgICAgICBsaXN0XG4gICAgICAgfmdldF9rZXlcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgdG9fdHJlZSB0ID0gdFxuXG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPVxuICAgIFRyZWUwLmludmFyaWFudHMgdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGxlbmd0aCB0ID0gVHJlZTAubGVuZ3RoIHRcblxuICBsZXQgc2V0IH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLnNldCB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBhZGRfZXhuIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICB0XG4gICAgICAgfmtleVxuICAgICAgIH5kYXRhXG4gICAgICAgfmxlbmd0aDowXG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IGFkZF9leG5faW50ZXJuYWwgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuYWRkX2V4bl9pbnRlcm5hbFxuICAgICAgIHRcbiAgICAgICB+a2V5XG4gICAgICAgfmRhdGFcbiAgICAgICB+bGVuZ3RoOjBcbiAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5zZXhwX29mX3QpXG4gICAgLnRyZWVcbiAgOztcblxuICBsZXQgYWRkIH5jb21wYXJhdG9yIHQgfmtleSB+ZGF0YSA9XG4gICAgdHJ5IGBPayAoYWRkX2V4bl9pbnRlcm5hbCB0IH5jb21wYXJhdG9yIH5rZXkgfmRhdGEpIHdpdGhcbiAgICB8IF8gLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICAoVHJlZTAuYWRkX211bHRpIHQgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IHJlbW92ZV9tdWx0aSB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgKFRyZWUwLnJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IGZpbmRfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLmZpbmRfbXVsdGkgdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgKFRyZWUwLmNoYW5nZSB0IGtleSB+ZiB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKS50cmVlXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdFxuICAgICAga2V5XG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5maW5kIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCByZW1vdmUgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIChUcmVlMC5yZW1vdmUgdCBrZXkgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5tZW0gdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0IH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdCB+ZlxuXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgVHJlZTAuaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gVHJlZTAubWFwIHQgfmZcbiAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwLm1hcGkgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+ZiB+aW5pdCB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgfmNvbXBhcmF0b3IgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB0IH5mID0gVHJlZTAuZmlsdGVyX2tleXMgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyIHQgfmYgPSBUcmVlMC5maWx0ZXIgdCB+ZiB+bGVuOiggKHJlZiAwKSkgW0Bub250YWlsXVxuICBsZXQgZmlsdGVyaSB0IH5mID0gVHJlZTAuZmlsdGVyaSB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBUcmVlMC5maWx0ZXJfbWFwIHQgfmYgfmxlbjooIChyZWYgMCkpIFtAbm9udGFpbF1cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPSBUcmVlMC5maWx0ZXJfbWFwaSB0IH5mIH5sZW46KCAocmVmIDApKSBbQG5vbnRhaWxdXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gVHJlZTAucGFydGl0aW9uX21hcGkgdCB+ZlxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gVHJlZTAucGFydGl0aW9uX21hcCB0IH5mXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBUcmVlMC5wYXJ0aXRpb25pX3RmIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmZcblxuICBsZXQgY29tYmluZV9lcnJvcnMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuY29tYmluZV9lcnJvcnMgdCB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuZXF1YWwgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdFxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0XG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHRcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MVxuICAgICAgdDJcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgKFRyZWUwLm1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSkudHJlZVxuICA7O1xuXG4gIGxldCBtZXJnZV9za2V3ZWQgfmNvbXBhcmF0b3IgdDEgdDIgfmNvbWJpbmUgPVxuICAgICgqIExlbmd0aCBjb21wdXRhdGlvbiBtYWtlcyB0aGlzIHNpZ25pZmljYW50bHkgc2xvd2VyIHRoYW4gW21lcmdlX3NrZXdlZF0gb24gYSBtYXBcbiAgICAgICB3aXRoIGEgW2xlbmd0aF0gZmllbGQsIGJ1dCBkb2VzIHByZXNlcnZlIGFtb3VudCBvZiBhbGxvY2F0aW9uLiAqKVxuICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICB0MVxuICAgICAgIHQyXG4gICAgICAgfmxlbmd0aDE6KGxlbmd0aCB0MSlcbiAgICAgICB+bGVuZ3RoMjoobGVuZ3RoIHQyKVxuICAgICAgIH5jb21iaW5lXG4gICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICAgIC50cmVlXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdFxuICBsZXQgbWluX2VsdF9leG4gdCA9IFRyZWUwLm1pbl9lbHRfZXhuIHRcbiAgbGV0IG1heF9lbHQgdCA9IFRyZWUwLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHRcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IFRyZWUwLmZvcl9hbGwgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IFRyZWUwLmZvcl9hbGxpIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQgfmZcbiAgbGV0IGV4aXN0c2kgdCB+ZiA9IFRyZWUwLmV4aXN0c2kgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQgfmZcbiAgbGV0IHNwbGl0IH5jb21wYXJhdG9yIHQgayA9IFRyZWUwLnNwbGl0IHQgayB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgc3BsaXRfbGVfZ3QgfmNvbXBhcmF0b3IgdCBrID1cbiAgICBUcmVlMC5zcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnlcbiAgICAgIHRcbiAgICAgIH5pbnRvOmBMZWZ0XG4gICAgICBrXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3BsaXRfbHRfZ2UgfmNvbXBhcmF0b3IgdCBrID1cbiAgICBUcmVlMC5zcGxpdF9hbmRfcmVpbnNlcnRfYm91bmRhcnlcbiAgICAgIHRcbiAgICAgIH5pbnRvOmBSaWdodFxuICAgICAga1xuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+Y29tcGFyYXRvciB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9XG4gICAgVHJlZTAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBfLCByZXQsIF8gPVxuICAgICAgVHJlZTAuc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+bG93ZXJfYm91bmRcbiAgICAgICAgfnVwcGVyX2JvdW5kXG4gICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgcmV0XG4gIDs7XG5cbiAgbGV0IGZvbGRfcmFuZ2VfaW5jbHVzaXZlIH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4IH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgdFxuICAgICAgfm1pblxuICAgICAgfm1heFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgfmNvbXBhcmF0b3IgdCB+bWluIH5tYXggPVxuICAgIFRyZWUwLnJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjbG9zZXN0X2tleSB+Y29tcGFyYXRvciB0IGRpciBrZXkgPVxuICAgIFRyZWUwLmNsb3Nlc3Rfa2V5IHQgZGlyIGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgbnRoIHQgbiA9IFRyZWUwLm50aCB0IG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5yYW5rIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdFxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKS50cmVlXG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gRW1wdHlcbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHJlZTBfdHJhdmVyc2FscyA9IFRyZWUwLk1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSlcblxuICAgIGxldCBtYXBpIHQgfmYgPSBUcmVlMF90cmF2ZXJzYWxzLm1hcGkgdCB+ZlxuXG4gICAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICAgICAgQS5tYXBcbiAgICAgICAgKFRyZWUwX3RyYXZlcnNhbHMuZmlsdGVyX21hcGkgdCB+ZilcbiAgICAgICAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBtYXRjaCBUcmVlMC5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mIHdpdGhcbiAgICB8IGBPayB7IHRyZWUgPSB0OyBsZW5ndGggPSBfIH0gLT4gYE9rIHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9IChUcmVlMC5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZikudHJlZVxuXG4gICgqIFRoaXMgY2FsbGluZyBjb252ZW50aW9uIG9mIFt+Y29tcGFyYXRvciB+Y29tcGFyYXRvcl0gaXMgY29uZnVzaW5nLiBJdCBpcyByZXF1aXJlZFxuICAgICBiZWNhdXNlIFthY2Nlc3Nfb3B0aW9uc10gYW5kIFtjcmVhdGVfb3B0aW9uc10gYm90aCBkZW1hbmQgYSBbfmNvbXBhcmF0b3JdIGFyZ3VtZW50IGluXG4gICAgIFtNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlXS5cblxuICAgICBNYWtpbmcgaXQgbGVzcyBjb25mdXNpbmcgd291bGQgcmVxdWlyZSBzb21lIHVubmVjZXNzYXJ5IGNvbXBsZXhpdHkgaW4gc2lnbmF0dXJlcy5cbiAgICAgQmV0dGVyIHRvIGp1c3QgbGl2ZSB3aXRoIGFuIHVuZGVzaXJhYmxlIGludGVyZmFjZSBpbiBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBwcm9iYWJseVxuICAgICBuZXZlciBiZSBjYWxsZWQgZGlyZWN0bHkuICopXG4gIGxldCB0cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvcjpvdXRlcl9jb21wYXJhdG9yIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3IgdCA9XG4gICAgKFRyZWUwLnRyYW5zcG9zZV9rZXlzIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yIHQpLnRyZWVcbiAgICB8PiBtYXAgfmY6KGZ1biAoeCA6ICgnaywgJ3YpIFRyZWUwLnQgV2l0aF9sZW5ndGgudCkgLT4geC50cmVlKVxuICA7O1xuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAndykgdCA9ICgnaywgJ3YpIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudFxuXG4gICAgbGV0IGVtcHR5ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuXG4gICAgbGV0IGFkZF9leG4gdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSB0IHdpdGhcbiAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgIEVycm9yLnJhaXNlX3MgKFNleHAuQXRvbSBcIk1hcC5CdWlsZF9pbmNyZWFzaW5nLmFkZDogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICB8IF8gLT4gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQgfmtleSB+ZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZSB0ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2ID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGsgdjsgbGVuZ3RoID0gMSB9XG5cbiAgbGV0IG9mX3RyZWUwIH5jb21wYXJhdG9yICh7IHRyZWU7IGxlbmd0aCB9IDogXyBXaXRoX2xlbmd0aC50KSA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICA7O1xuXG4gIGxldCBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWUgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yICh3aXRoX2xlbmd0aCB0cmVlIChUcmVlMC5sZW5ndGggdHJlZSkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgdG9fdHJlZSA9IHRvX3RyZWVcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgICB+ZjooZnVuIHRyZWUgLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgeyB0cmVlOyBsZW5ndGggfSAtPiBgT2sgeyBjb21wYXJhdG9yOyB0cmVlOyBsZW5ndGggfVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdCA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2FsaXN0X2V4biBhbGlzdCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2ZfYWxpc3RfcmVkdWNlIGFsaXN0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpID1cbiAgICBtYXRjaCBUcmVlMC5vZl9pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfml0ZXJpIHdpdGhcbiAgICB8IGBPayB0cmVlX2xlbmd0aCAtPiBgT2sgKG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWVfbGVuZ3RoKVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyB6IC0+IHpcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkpXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKHdpdGhfbGVuZ3RoIChUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mKSBsZW4pIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgfmY6KGZ1biB4IC0+IG9mX3RyZWUwIH5jb21wYXJhdG9yIHgpXG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoIH0gLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxIH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX211bHRpIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9mb2xkIHNlcSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIG1hdGNoXG4gICAgICBUcmVlMC5vZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgd2l0aFxuICAgIHwgYE9rIHsgdHJlZTsgbGVuZ3RoIH0gLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgfmNvbXBhcmF0b3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgUmVzdWx0Lm1hcCAoVHJlZTAub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yKSB+ZjooZnVuIHRyZWUgLT5cbiAgICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIHRyZWUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9saXN0X3dpdGhfa2V5X2V4biBsaXN0IH5nZXRfa2V5IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXkgPVxuICAgIFRyZWUwLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbGlzdCB+Z2V0X2tleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICB8PiBvZl90cmVlMCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLnRfb2Zfc2V4cF9kaXJlY3Qga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBtYXRjaCBUcmVlMC5tYXBfa2V5cyB0LnRyZWUgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHBhaXIgLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciBwYWlyKVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkdXAgLT4gZHVwXG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAubWFwX2tleXNfZXhuIHQudHJlZSB+ZiB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvciB0ID1cbiAgICBsZXQgb3V0ZXJfY29tcGFyYXRvciA9IHQuY29tcGFyYXRvciBpblxuICAgIFRyZWUwLnRyYW5zcG9zZV9rZXlzIH5vdXRlcl9jb21wYXJhdG9yIH5pbm5lcl9jb21wYXJhdG9yIChUcmVlMC5tYXAgdC50cmVlIH5mOnRvX3RyZWUpXG4gICAgfD4gb2ZfdHJlZTAgfmNvbXBhcmF0b3I6aW5uZXJfY29tcGFyYXRvclxuICAgIHw+IG1hcCB+ZjooZnVuIHggLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB4KVxuICA7O1xuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgZW1wdHkgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvciA9IEsuY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGVuZFxuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbmluY2x1ZGUgQWNjZXNzb3JzXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyYXRvcl9zICh0eXBlIGsgY21wKSB0IDogKGssIGNtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHQuY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5sZXQgdG9fY29tcGFyYXRvciAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSA9IE0uY29tcGFyYXRvclxuXG5sZXQgb2ZfdHJlZSAodHlwZSBrIGNtcCkgKChtb2R1bGUgTSkgOiAoaywgY21wKSBjb21wYXJhdG9yKSB0cmVlID1cbiAgb2ZfdHJlZSB+Y29tcGFyYXRvcjpNLmNvbXBhcmF0b3IgdHJlZVxuOztcblxubGV0IGVtcHR5IG0gPSBVc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5sZXQgc2luZ2xldG9uIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdCBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG9mX2FsaXN0X2V4biBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5sZXQgb2ZfYWxpc3RfbXVsdGkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG5cbmxldCBvZl9hbGlzdF9mb2xkIG0gYSB+aW5pdCB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5pbml0IH5mXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVkdWNlIG0gYSB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2Zfc29ydGVkX2FycmF5IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9pdGVyaSBtIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG5cbmxldCBvZl9pdGVyaV9leG4gbSB+aXRlcmkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIG0gc2VxID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNlcVxuOztcblxubGV0IG9mX3NlcXVlbmNlIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZXhuIG0gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcblxubGV0IG9mX3NlcXVlbmNlX211bHRpIG0gcyA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuOztcblxubGV0IG9mX3NlcXVlbmNlX2ZvbGQgbSBzIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHMgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgbSBzIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+ZlxuOztcblxubGV0IG9mX2xpc3Rfd2l0aF9rZXkgbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGwgfmdldF9rZXlcbjs7XG5cbmxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIG0gbCB+Z2V0X2tleSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbSBsIH5nZXRfa2V5ID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBsIH5nZXRfa2V5XG47O1xuXG5sZXQgb2ZfbGlzdF93aXRoX2tleV9tdWx0aSBtIGwgfmdldF9rZXkgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgbCB+Z2V0X2tleVxuOztcblxubGV0IG1hcF9rZXlzIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdCB+ZlxubGV0IG1hcF9rZXlzX2V4biBtIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgdHJhbnNwb3NlX2tleXMgbSB0ID0gVXNpbmdfY29tcGFyYXRvci50cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBNIChLIDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gaykgc2V4cF9vZl92IHQgPVxuICBzZXhwX29mX3QgSy5zZXhwX29mX3Qgc2V4cF9vZl92IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGsgY21wKVxuICAgICAgKG1vZHVsZSBLIDogTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICB2X29mX3NleHBcbiAgICAgIHNleHBcbiAgPVxuICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3I6Sy5jb21wYXJhdG9yIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICAgICh0eXBlIGspXG4gICAgICAobW9kdWxlIEsgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGspXG4gICAgICAodl9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFRhZ2dlZFxuICAgICAgICB7IGtleSA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5hc3NvY190YWdcbiAgICAgICAgOyB2YWx1ZSA9IExpc3QgW11cbiAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgIExpc3RcbiAgICAgICAgICAgICAgKE1hbnlcbiAgICAgICAgICAgICAgICAgKExpc3RcbiAgICAgICAgICAgICAgICAgICAgKENvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgKCBUYWdnZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX2tleV90YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IGdyYW1tYXIgPSBLLnRfc2V4cF9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRhZ2dlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5ID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmFzc29jX3ZhbHVlX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgdmFsdWUgPSBMaXN0IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBncmFtbWFyID0gdl9ncmFtbWFyLnVudHlwZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5ICkgKSkpKVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX21fX3QgKG1vZHVsZSBfIDogQ29tcGFyZV9tKSBjb21wYXJlX3YgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjb21wYXJlX3YgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIGVxdWFsX3YgdDEgdDIgPSBlcXVhbCBlcXVhbF92IHQxIHQyXG5cbmxldCBoYXNoX2ZvbGRfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGspIGhhc2hfZm9sZF92IHN0YXRlID1cbiAgaGFzaF9mb2xkX2RpcmVjdCBLLmhhc2hfZm9sZF90IGhhc2hfZm9sZF92IHN0YXRlXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlIG5vbnJlYyAoJ2ssICd2KSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJhdG9yID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZXhuIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9tdWx0aSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYSB+aW5pdCB+ZlxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhIH5mXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX211bHRpIH5jb21wYXJhdG9yIHNcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3IgcyB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHMgfmZcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsIH5nZXRfa2V5ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3Rfd2l0aF9rZXkgfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIGwgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGwgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9leG4gfmNvbXBhcmF0b3IgbCB+Z2V0X2tleVxuICA7O1xuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGwgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleV9tdWx0aSB+Y29tcGFyYXRvciBsIH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG1hcF9rZXlzIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgdHJhbnNwb3NlX2tleXMgdCA9IFVzaW5nX2NvbXBhcmF0b3IudHJhbnNwb3NlX2tleXMgfmNvbXBhcmF0b3IgdFxuZW5kXG4iLCJvcGVuISBJbXBvcnQwXG5cbnR5cGUgJ2EgdCA9ICdhIFN0ZGxpYi5RdWV1ZS50XG5cbmxldCBjcmVhdGUgPSBTdGRsaWIuUXVldWUuY3JlYXRlXG5sZXQgY2xlYXIgPSBTdGRsaWIuUXVldWUuY2xlYXJcbmxldCBjb3B5ID0gU3RkbGliLlF1ZXVlLmNvcHlcbmxldCBpc19lbXB0eSA9IFN0ZGxpYi5RdWV1ZS5pc19lbXB0eVxubGV0IGxlbmd0aCA9IFN0ZGxpYi5RdWV1ZS5sZW5ndGhcbmxldCBwZWVrID0gU3RkbGliLlF1ZXVlLnBlZWtcbmxldCBwb3AgPSBTdGRsaWIuUXVldWUucG9wXG5sZXQgcHVzaCA9IFN0ZGxpYi5RdWV1ZS5wdXNoXG5sZXQgdHJhbnNmZXIgPSBTdGRsaWIuUXVldWUudHJhbnNmZXJcblxubGV0IGl0ZXIgdCB+ZjooKGYgOiBfIC0+IF8pIFtAbG9jYWxdKSA9XG4gIGxldCBjYW1sX2l0ZXIgOiAoKCdhIC0+IHVuaXQpW0Bsb2NhbF0pIC0+ICdhIHQgLT4gdW5pdCA9XG4gICAgU3RkbGliLk9iai5tYWdpYyAoU3RkbGliLlF1ZXVlLml0ZXIgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0KVxuICBpblxuICBjYW1sX2l0ZXIgZiB0XG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mOigoZiA6IF8gLT4gXyAtPiBfKSBbQGxvY2FsXSkgPVxuICBsZXQgY2FtbF9mb2xkIDogKCgnYiAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgLT4gJ2EgdCAtPiAnYiA9XG4gICAgU3RkbGliLk9iai5tYWdpYyAoU3RkbGliLlF1ZXVlLmZvbGQgOiAoJ2IgLT4gJ2EgLT4gJ2IpIC0+ICdiIC0+ICdhIHQgLT4gJ2IpXG4gIGluXG4gIGNhbWxfZm9sZCBmIGluaXQgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaW5rZWRfcXVldWUwXG5cbmxldCBlbnF1ZXVlIHQgeCA9IExpbmtlZF9xdWV1ZTAucHVzaCB4IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucG9wIHQpXG5sZXQgZGVxdWV1ZV9leG4gPSBMaW5rZWRfcXVldWUwLnBvcFxubGV0IGRlcXVldWVfYW5kX2lnbm9yZV9leG4gKHR5cGUgZWx0KSAodCA6IGVsdCB0KSA9IGlnbm9yZSAoZGVxdWV1ZV9leG4gdCA6IGVsdClcbmxldCBwZWVrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucGVlayB0KVxubGV0IHBlZWtfZXhuID0gTGlua2VkX3F1ZXVlMC5wZWVrXG5cbm1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gICAgbGV0IGZvbGRpID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGl0ZXJpID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9sZGkgPSBDLmZvbGRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5sZXQgaXRlcmkgPSBDLml0ZXJpXG5sZXQgdHJhbnNmZXIgfnNyYyB+ZHN0ID0gTGlua2VkX3F1ZXVlMC50cmFuc2ZlciBzcmMgZHN0XG5cbmxldCBjb25jYXRfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHJlcyBiKSk7XG4gIHJlc1xuOztcblxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHJlcyBiKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgcmVzIGEpO1xuICByZXNcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBlbnF1ZXVlIHJlcyAoZiBhKSk7XG4gIHJlc1xuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBlbnF1ZXVlIHJlcyAoZiBpIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlciBxIH5mIGluXG4gIGNsZWFyIHE7XG4gIHRyYW5zZmVyIH5zcmM6cScgfmRzdDpxXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHEgfmYgPVxuICBsZXQgcScgPSBmaWx0ZXJpIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBlbnF1ZXVlX2FsbCB0IGxpc3QgPSBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpXG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyYXkgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBBcnJheS5pdGVyIGFycmF5IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBpbml0IGxlbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgZW5xdWV1ZSB0IChmIGkpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggbGVuZ3RoIHQgd2l0aFxuICB8IDAgLT4gW3x8XVxuICB8IGxlbiAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbiAocGVla19leG4gdCkgaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gdiAtPlxuICAgICAgYXJyLighaSkgPC0gdjtcbiAgICAgIGluY3IgaSk7XG4gICAgYXJyXG47O1xuXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID0gb2ZfbGlzdCAobGlzdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX2EgKHRvX2xpc3QgdClcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGEpIChncmFtbWFyIDogYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiBhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG47O1xuXG5sZXQgc2luZ2xldG9uIGEgPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgYTtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkbGliLkludDY0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9pbnQ2NCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBjb21wYXJlID0gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gIGxldCBvZl9zdHJpbmdfb3B0ID0gb2Zfc3RyaW5nX29wdFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmxldCBudW1fYml0cyA9IDY0XG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF9vZl9iaXRzID0gZmxvYXRfb2ZfYml0c1xubGV0IGJpdHNfb2ZfZmxvYXQgPSBiaXRzX29mX2Zsb2F0XG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gbG9nbm90XG5sZXQgYml0X3hvciA9IGxvZ3hvclxubGV0IGJpdF9vciA9IGxvZ29yXG5sZXQgYml0X2FuZCA9IGxvZ2FuZFxubGV0IG1pbl92YWx1ZSA9IG1pbl9pbnRcbmxldCBtYXhfdmFsdWUgPSBtYXhfaW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50NjRfcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gU3RkbGliLkludDY0Lm9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIFN0ZGxpYi5JbnQ2NC5vZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDY0Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgKCAqKiApIGIgZSA9IHBvdyBiIGVcblxuZXh0ZXJuYWwgYnN3YXA2NCA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAxNiB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgNDhcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBic3dhcDMyIHggPVxuICAoKiBUaGlzIGlzIHN0cmljdGx5IGJldHRlciB0aGFuIGNvZXJjaW5nIHRvIGFuIGludDMyIHRvIHBlcmZvcm0gYnl0ZXN3YXAuIENvZXJjaW5nXG4gICAgIGZyb20gYW4gaW50MzIgd2lsbCBhZGQgdW5uZWNlc3Nhcnkgc2hpZnQgb3BlcmF0aW9ucyB0byBzaWduIGV4dGVuZCB0aGUgbnVtYmVyXG4gICAgIGFwcHJvcHJpYXRlbHkuXG4gICopXG4gIFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDMyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJzd2FwNDggeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDE2XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBpbmNyIHIgPSByIDo9IGFkZCAhciBvbmVcbmxldCBkZWNyIHIgPSByIDo9IHN1YiAhciBvbmVcblxuZXh0ZXJuYWwgb2ZfaW50NjQgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRcbmxldCB0b19pbnQ2NCB0ID0gdFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50NjRfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxuZXh0ZXJuYWwgdG9faW50X3RydW5jIDogKHRbQGxvY2FsX29wdF0pIC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IChpbnQ2NFtAbG9jYWxfb3B0XSkgLT4gKGludDMyW0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X3RvX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50X3RydW5jXG4gIDogIChpbnQ2NFtAbG9jYWxfb3B0XSlcbiAgLT4gKG5hdGl2ZWludFtAbG9jYWxfb3B0XSlcbiAgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCBvZl9pbnQgOiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIG9mX2ludDMyIDogKGludDMyW0Bsb2NhbF9vcHRdKSAtPiAoaW50NjRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gU3RkbGliLkludDY0LmxvZ29yXG4gIGxldCAoIGxzciApID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gU3RkbGliLkludDY0LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0gU3RkbGliLkludDY0LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgU3RkbGliLkludDY0LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIFN0ZGxpYi5JbnQ2NC5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IFN0ZGxpYi5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBTdGRsaWIuSW50NjQucHJlZCB4ID0gU3RkbGliLkludDY0Lnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDY0W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDY0X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBTdGRsaWIuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgU3RkbGliLkludDY0Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50NjQuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIGlmIFN0ZGxpYi5JbnQ2NC5lcXVhbCBpIFN0ZGxpYi5JbnQ2NC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChTdGRsaWIuSW50NjQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVMeFwiIEZuLmlkXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjRcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfYWRkXCJcbiAgZXh0ZXJuYWwgKCAtICkgOiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X3N1YlwiXG4gIGV4dGVybmFsICggKiApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9tdWxcIlxuICBleHRlcm5hbCAoIC8gKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfZGl2XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgPSBcIiVpbnQ2NF9uZWdcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBleHRlcm5hbCAoIGxhbmQgKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfYW5kXCJcbiAgZXh0ZXJuYWwgKCBsb3IgKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfb3JcIlxuICBleHRlcm5hbCAoIGx4b3IgKSA6ICh0W0Bsb2NhbF9vcHRdKSAtPiAodFtAbG9jYWxfb3B0XSkgLT4gKHRbQGxvY2FsX29wdF0pID0gXCIlaW50NjRfeG9yXCJcblxuICBsZXQgbG5vdCA9IGJpdF9ub3RcblxuICBleHRlcm5hbCAoIGxzbCApXG4gICAgOiAgKHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAodFtAbG9jYWxfb3B0XSlcbiAgICA9IFwiJWludDY0X2xzbFwiXG5cbiAgZXh0ZXJuYWwgKCBhc3IgKVxuICAgIDogICh0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gKHRbQGxvY2FsX29wdF0pXG4gICAgPSBcIiVpbnQ2NF9hc3JcIlxuXG4gIGV4dGVybmFsICggbHNyIClcbiAgICA6ICAodFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICh0W0Bsb2NhbF9vcHRdKVxuICAgID0gXCIlaW50NjRfbHNyXCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDY0XSBhbmQgW0ludDY0Lk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogQSA2M2JpdCBpbnRlZ2VyIGlzIGEgNjRiaXQgaW50ZWdlciB3aXRoIGl0cyBiaXRzIHNoaWZ0ZWQgdG8gdGhlIGxlZnRcbiAgIGFuZCBpdHMgbG93ZXN0IGJpdCBzZXQgdG8gMC5cbiAgIFRoaXMgaXMgdGhlIHNhbWUga2luZCBvZiBlbmNvZGluZyBhcyBPQ2FtbCBpbnQgb24gNjRiaXQgYXJjaGl0ZWN0dXJlLlxuICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZyB0aGUgbG93ZXN0IGJpdCAoaW1tZWRpYXRlIGJpdCkgc2V0IHRvIDEuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuXG5tb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcbiAgICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9pbnQ2NCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50NjRcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQ2NCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgPSAoaW50NjRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQ2NCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBDb252ID0gSW50X2NvbnZlcnNpb25zXG5cbm1vZHVsZSBXIDogc2lnXG5cbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQwXG4gIGVuZFxuXG4gIHR5cGUgdCA9IGludDY0XG5cbiAgdmFsIHdyYXBfZXhuIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgd3JhcF9tb2R1bG8gOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCB1bndyYXAgOiB0IC0+IFN0ZGxpYi5JbnQ2NC50XG5cbiAgKCoqIFJldHVybnMgYSBub24tbmVnYXRpdmUgaW50NjQgdGhhdCBpcyBlcXVhbCB0byB0aGUgaW5wdXQgaW50NjMgbW9kdWxvIDJeNjMuICopXG4gIHZhbCB1bndyYXBfdW5zaWduZWQgOiB0IC0+IFN0ZGxpYi5JbnQ2NC50XG5cbiAgdmFsIGludmFyaWFudCA6IHQgLT4gdW5pdFxuICB2YWwgYWRkIDogdCAtPiB0IC0+IHRcbiAgdmFsIHN1YiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGFicyA6IHQgLT4gdFxuICB2YWwgc3VjYyA6IHQgLT4gdFxuICB2YWwgcHJlZCA6IHQgLT4gdFxuICB2YWwgbXVsIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdyA6IHQgLT4gdCAtPiB0XG4gIHZhbCBkaXYgOiB0IC0+IHQgLT4gdFxuICB2YWwgcmVtIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvcGNvdW50IDogdCAtPiBpbnRcbiAgdmFsIGJpdF9ub3QgOiB0IC0+IHRcbiAgdmFsIGJpdF94b3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X29yIDogdCAtPiB0IC0+IHRcbiAgdmFsIGJpdF9hbmQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc2hpZnRfbGVmdCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHNoaWZ0X3JpZ2h0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIG1pbl92YWx1ZSA6IHRcbiAgdmFsIG1heF92YWx1ZSA6IHRcbiAgdmFsIHRvX2ludDY0IDogdCAtPiBTdGRsaWIuSW50NjQudFxuICB2YWwgb2ZfaW50NjQgOiBTdGRsaWIuSW50NjQudCAtPiB0IG9wdGlvblxuICB2YWwgb2ZfaW50NjRfZXhuIDogU3RkbGliLkludDY0LnQgLT4gdFxuICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBTdGRsaWIuSW50NjQudCAtPiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgY2VpbF9wb3cyIDogdCAtPiB0XG4gIHZhbCBmbG9vcl9wb3cyIDogdCAtPiB0XG4gIHZhbCBjZWlsX2xvZzIgOiB0IC0+IGludFxuICB2YWwgZmxvb3JfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBpc19wb3cyIDogdCAtPiBib29sXG4gIHZhbCBjbHogOiB0IC0+IGludFxuICB2YWwgY3R6IDogdCAtPiBpbnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFQwXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICBsZXQgd3JhcF9leG4geCA9XG4gICAgKCogUmFpc2VzIGlmIHRoZSBpbnQ2NCB2YWx1ZSBkb2VzIG5vdCBmaXQgb24gaW50NjMuICopXG4gICAgQ29udi5pbnQ2NF9maXRfb25faW50NjNfZXhuIHg7XG4gICAgU3RkbGliLkludDY0Lm11bCB4IDJMXG4gIDs7XG5cbiAgbGV0IHdyYXAgeCA9XG4gICAgaWYgQ29udi5pbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzIHggdGhlbiBTb21lIChTdGRsaWIuSW50NjQubXVsIHggMkwpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB3cmFwX21vZHVsbyB4ID0gU3RkbGliLkludDY0Lm11bCB4IDJMXG4gIGxldCB1bndyYXAgeCA9IFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCB4IDFcbiAgbGV0IHVud3JhcF91bnNpZ25lZCB4ID0gU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAxXG5cbiAgKCogVGhpcyBkb2VzIG5vdCB1c2Ugd3JhcCBvciB1bndyYXAgdG8gYXZvaWQgZ2VuZXJhdGluZyBleGNlcHRpb25zIGluIHRoZSBjYXNlIG9mXG4gICAgIG92ZXJmbG93cy4gVGhpcyBpcyB0byBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIGludCB0eXBlIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmUuICopXG4gIGxldCBmMiBmIGEgYiA9XG4gICAgU3RkbGliLkludDY0Lm11bCAoZiAoU3RkbGliLkludDY0LnNoaWZ0X3JpZ2h0IGEgMSkgKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCBiIDEpKSAyTFxuICA7O1xuXG4gIGxldCBtYXNrID0gMHhmZmZmX2ZmZmZfZmZmZl9mZmZlTFxuICBsZXQgbSB4ID0gU3RkbGliLkludDY0LmxvZ2FuZCB4IG1hc2tcbiAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChtIHQgPSB0KVxuICBsZXQgYWRkIHggeSA9IFN0ZGxpYi5JbnQ2NC5hZGQgeCB5XG4gIGxldCBzdWIgeCB5ID0gU3RkbGliLkludDY0LnN1YiB4IHlcbiAgbGV0IG5lZyB4ID0gU3RkbGliLkludDY0Lm5lZyB4XG4gIGxldCBhYnMgeCA9IFN0ZGxpYi5JbnQ2NC5hYnMgeFxuICBsZXQgb25lID0gd3JhcF9leG4gMUxcbiAgbGV0IHN1Y2MgYSA9IGFkZCBhIG9uZVxuICBsZXQgcHJlZCBhID0gc3ViIGEgb25lXG4gIGxldCBtaW5fdmFsdWUgPSBtIFN0ZGxpYi5JbnQ2NC5taW5faW50XG4gIGxldCBtYXhfdmFsdWUgPSBtIFN0ZGxpYi5JbnQ2NC5tYXhfaW50XG4gIGxldCBiaXRfbm90IHggPSBtIChTdGRsaWIuSW50NjQubG9nbm90IHgpXG4gIGxldCBiaXRfYW5kID0gU3RkbGliLkludDY0LmxvZ2FuZFxuICBsZXQgYml0X3hvciA9IFN0ZGxpYi5JbnQ2NC5sb2d4b3JcbiAgbGV0IGJpdF9vciA9IFN0ZGxpYi5JbnQ2NC5sb2dvclxuICBsZXQgc2hpZnRfbGVmdCB4IGkgPSBTdGRsaWIuSW50NjQuc2hpZnRfbGVmdCB4IGlcbiAgbGV0IHNoaWZ0X3JpZ2h0IHggaSA9IG0gKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodCB4IGkpXG4gIGxldCBzaGlmdF9yaWdodF9sb2dpY2FsIHggaSA9IG0gKFN0ZGxpYi5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggaSlcbiAgbGV0IHBvdyA9IGYyIEludF9tYXRoLlByaXZhdGUuaW50NjNfcG93X29uX2ludDY0XG4gIGxldCBtdWwgYSBiID0gU3RkbGliLkludDY0Lm11bCBhIChTdGRsaWIuSW50NjQuc2hpZnRfcmlnaHQgYiAxKVxuICBsZXQgZGl2IGEgYiA9IHdyYXBfbW9kdWxvIChTdGRsaWIuSW50NjQuZGl2IGEgYilcbiAgbGV0IHJlbSBhIGIgPSBTdGRsaWIuSW50NjQucmVtIGEgYlxuICBsZXQgcG9wY291bnQgeCA9IFBvcGNvdW50LmludDY0X3BvcGNvdW50IHhcbiAgbGV0IHRvX2ludDY0IHQgPSB1bndyYXAgdFxuICBsZXQgb2ZfaW50NjQgdCA9IHdyYXAgdFxuICBsZXQgb2ZfaW50NjRfZXhuIHQgPSB3cmFwX2V4biB0XG4gIGxldCBvZl9pbnQ2NF90cnVuYyB0ID0gd3JhcF9tb2R1bG8gdFxuICBsZXQgdF9vZl9zZXhwIHggPSB3cmFwX2V4biAoaW50NjRfb2Zfc2V4cCB4KVxuICBsZXQgc2V4cF9vZl90IHggPSBzZXhwX29mX2ludDY0ICh1bndyYXAgeClcbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGlzX3BvdzIgeCA9IEludDY0LmlzX3BvdzIgKHVud3JhcCB4KVxuXG4gIGxldCBjbHogeCA9XG4gICAgKCogV2UgcnVuIEludDY0LmNseiBkaXJlY3RseSBvbiB0aGUgd3JhcHBlZCBpbnQ2MyB2YWx1ZS4gVGhpcyBpcyBjb3JyZWN0IGJlY2F1c2UgdGhlXG4gICAgICAgYml0cyBvZiB0aGUgaW50NjNfZW11bCBhcmUgbGVmdC1hbGlnbmVkIGluIHRoZSBJbnQ2NC4gKilcbiAgICBJbnQ2NC5jbHogeFxuICA7O1xuXG4gIGxldCBjdHogeCA9IEludDY0LmN0eiAodW53cmFwIHgpXG4gIGxldCBmbG9vcl9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGNlaWxfcG93MiB4ID0gSW50NjQuZmxvb3JfcG93MiAodW53cmFwIHgpIHw+IHdyYXBfZXhuXG4gIGxldCBmbG9vcl9sb2cyIHggPSBJbnQ2NC5mbG9vcl9sb2cyICh1bndyYXAgeClcbiAgbGV0IGNlaWxfbG9nMiB4ID0gSW50NjQuY2VpbF9sb2cyICh1bndyYXAgeClcbmVuZFxuXG5vcGVuIFdcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVy50IFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKFcuZ2xvYmFsaXplIDogKHRbQG9jYW1sLmxvY2FsXSkgLT4gdClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgVy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoVy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChXLnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBXLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBXLmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBXLmNvbXBhcmVcbiAgbGV0IGludmFyaWFudCA9IFcuaW52YXJpYW50XG5cbiAgKCogV2UgZG9uJ3QgZXhwZWN0IFtoYXNoXSB0byBmb2xsb3cgdGhlIGJlaGF2aW9yIG9mIGludCBpbiA2NGJpdCBhcmNoaXRlY3R1cmUgKilcbiAgbGV0IF8gPSBoYXNoXG4gIGxldCBoYXNoICh4IDogdCkgPSBTdGRsaWIuSGFzaHRibC5oYXNoIHhcbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgaW52YWxpZF9zdHIgeCA9IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQ2My5vZl9zdHJpbmc6IGludmFsaWQgaW5wdXQgJVNcIiB4ICgpXG5cbiAgKCpcbiAgICAgXCJzaWduXCIgcmVmZXJzIHRvIHdoZXRoZXIgdGhlIG51bWJlciBzdGFydHMgd2l0aCBhICctJ1xuICAgICBcInNpZ25lZG5lc3MgPSBmYWxzZVwiIG1lYW5zIHRoZSByZXN0IG9mIHRoZSBudW1iZXIgaXMgcGFyc2VkIGFzIHVuc2lnbmVkIGFuZCB0aGVuIGNhc3RcbiAgICAgdG8gc2lnbmVkIHdpdGggd3JhcC1hcm91bmQgbW9kdWxvIDJeaVxuICAgICBcInNpZ25lZG5lc3MgPSB0cnVlXCIgbWVhbnMgbm8gc3VjaCBjcmF6aW5lc3MgaGFwcGVuc1xuXG4gICAgIFRoZSB0ZXJtaW5vbG9neSBhbmQgdGhlIGxvZ2ljIGlzIGR1ZSB0byB0aGUgY29kZSBpbiBieXRlcnVuL2ludHMuYyBpbiBvY2FtbCA0LjAzXG4gICAgIChbcGFyc2Vfc2lnbl9hbmRfYmFzZV0gZnVuY3Rpb24pLlxuXG4gICAgIFNpZ25lZG5lc3MgZXF1YWxzIHRydWUgZm9yIHBsYWluIGRlY2ltYWwgbnVtYmVyIChlLmcuIDEyMzUsIC02Nzg5KVxuXG4gICAgIFNpZ25lZG5lc3MgZXF1YWxzIGZhbHNlIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgIC0gWzB4ZmZmZl0sIFstMHhmZmZmXSAoaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24pXG4gICAgIC0gWzBiMDEwMV0sIFstMGIwMTAxXSAoYmluYXJ5IHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswbzEyMzddLCBbLTBvMTIzN10gKG9jdGFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswdTk4MTJdLCBbLTB1OTgxMl0gKHVuc2lnbmVkIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gLSBhdmFpbGFibGUgZnJvbSBPQ2FtbCA0LjAzKSAqKVxuICBsZXQgc2lnbl9hbmRfc2lnbmVkbmVzcyB4ID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCB4IGluXG4gICAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCBwb3MsIHNpZ24gPVxuICAgICAgaWYgMCA8IGxlblxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIHguWzBdIHdpdGhcbiAgICAgICAgfCAnLScgLT4gMSwgYE5lZ1xuICAgICAgICB8ICcrJyAtPiAxLCBgUG9zXG4gICAgICAgIHwgXyAtPiAwLCBgUG9zKVxuICAgICAgZWxzZSAwLCBgUG9zXG4gICAgaW5cbiAgICBpZiBwb3MgKyAyIDwgbGVuXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYzEgPSB4Lltwb3NdIGluXG4gICAgICBsZXQgYzIgPSB4Lltwb3MgKyAxXSBpblxuICAgICAgbWF0Y2ggYzEsIGMyIHdpdGhcbiAgICAgIHwgJzAnLCAnMCcgLi4gJzknIC0+IHNpZ24sIHRydWVcbiAgICAgIHwgJzAnLCBfIC0+IHNpZ24sIGZhbHNlXG4gICAgICB8IF8gLT4gc2lnbiwgdHJ1ZSlcbiAgICBlbHNlIHNpZ24sIHRydWVcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPSBTdGRsaWIuSW50NjQudG9fc3RyaW5nICh1bndyYXAgeClcblxuICBsZXQgb2Zfc3RyaW5nX3JhdyBzdHIgPVxuICAgIGxldCBzaWduLCBzaWduZWRuZXNzID0gc2lnbl9hbmRfc2lnbmVkbmVzcyBzdHIgaW5cbiAgICBpZiBzaWduZWRuZXNzXG4gICAgdGhlbiBvZl9pbnQ2NF9leG4gKFN0ZGxpYi5JbnQ2NC5vZl9zdHJpbmcgc3RyKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBvc19zdHIgPVxuICAgICAgICBtYXRjaCBzaWduIHdpdGhcbiAgICAgICAgfCBgTmVnIC0+IFN0cmluZy5zdWIgc3RyIH5wb3M6MSB+bGVuOihTdHJpbmcubGVuZ3RoIHN0ciAtIDEpXG4gICAgICAgIHwgYFBvcyAtPiBzdHJcbiAgICAgIGluXG4gICAgICBsZXQgaW50NjQgPSBTdGRsaWIuSW50NjQub2Zfc3RyaW5nIHBvc19zdHIgaW5cbiAgICAgICgqIHVuc2lnbmVkIDYzLWJpdCBpbnQgbXVzdCBwYXJzZSBhcyBhIHBvc2l0aXZlIHNpZ25lZCA2NC1iaXQgaW50ICopXG4gICAgICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaW50NjQgMEwgdGhlbiBpbnZhbGlkX3N0ciBzdHI7XG4gICAgICBsZXQgaW50NjMgPSB3cmFwX21vZHVsbyBpbnQ2NCBpblxuICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICB8IGBOZWcgLT4gbmVnIGludDYzXG4gICAgICB8IGBQb3MgLT4gaW50NjMpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzdHIgPVxuICAgIHRyeSBvZl9zdHJpbmdfcmF3IHN0ciB3aXRoXG4gICAgfCBfIC0+IGludmFsaWRfc3RyIHN0clxuICA7O1xuXG4gIGxldCBvZl9zdHJpbmdfb3B0IHN0ciA9XG4gICAgbWF0Y2ggb2Zfc3RyaW5nX3JhdyBzdHIgd2l0aFxuICAgIHwgdCAtPiBTb21lIHRcbiAgICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgYnN3YXAxNiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMTYgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwMzIgdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDMyICh1bndyYXAgdCkpXG4gIGxldCBic3dhcDQ4IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXA0OCAodW53cmFwIHQpKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbnVtX2JpdHMgPSA2M1xubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmxldCBzaGlmdF9yaWdodCA9IHNoaWZ0X3JpZ2h0XG5sZXQgc2hpZnRfbGVmdCA9IHNoaWZ0X2xlZnRcbmxldCBiaXRfbm90ID0gYml0X25vdFxubGV0IGJpdF94b3IgPSBiaXRfeG9yXG5sZXQgYml0X29yID0gYml0X29yXG5sZXQgYml0X2FuZCA9IGJpdF9hbmRcbmxldCBwb3Bjb3VudCA9IHBvcGNvdW50XG5sZXQgYWJzID0gYWJzXG5sZXQgcHJlZCA9IHByZWRcbmxldCBzdWNjID0gc3VjY1xubGV0IHBvdyA9IHBvd1xubGV0IHJlbSA9IHJlbVxubGV0IG5lZyA9IG5lZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZVxubGV0IG1pbnVzX29uZSA9IHdyYXBfZXhuIFN0ZGxpYi5JbnQ2NC5taW51c19vbmVcbmxldCBvbmUgPSB3cmFwX2V4biBTdGRsaWIuSW50NjQub25lXG5sZXQgemVybyA9IHdyYXBfZXhuIFN0ZGxpYi5JbnQ2NC56ZXJvXG5sZXQgaXNfcG93MiA9IGlzX3BvdzJcbmxldCBmbG9vcl9wb3cyID0gZmxvb3JfcG93MlxubGV0IGNlaWxfcG93MiA9IGNlaWxfcG93MlxubGV0IGZsb29yX2xvZzIgPSBmbG9vcl9sb2cyXG5sZXQgY2VpbF9sb2cyID0gY2VpbF9sb2cyXG5sZXQgY2x6ID0gY2x6XG5sZXQgY3R6ID0gY3R6XG5sZXQgdG9fZmxvYXQgeCA9IFN0ZGxpYi5JbnQ2NC50b19mbG9hdCAodW53cmFwIHgpXG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkIHggPSB3cmFwX21vZHVsbyAoU3RkbGliLkludDY0Lm9mX2Zsb2F0IHgpXG5cbmxldCBvZl9mbG9hdCB0ID1cbiAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gIGlmIHQgPj0gZmxvYXRfbG93ZXJfYm91bmQgJiYgdCA8PSBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIHdyYXBfbW9kdWxvIChTdGRsaWIuSW50NjQub2ZfZmxvYXQgdClcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50NjMub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgKClcbjs7XG5cbmxldCBvZl9pbnQ2NCA9IG9mX2ludDY0XG5sZXQgb2ZfaW50NjRfZXhuID0gb2ZfaW50NjRfZXhuXG5sZXQgb2ZfaW50NjRfdHJ1bmMgPSBvZl9pbnQ2NF90cnVuY1xubGV0IHRvX2ludDY0ID0gdG9faW50NjRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgKCAvICkgPSBkaXZcbmxldCAoICogKSA9IG11bFxubGV0ICggLSApID0gc3ViXG5sZXQgKCArICkgPSBhZGRcbmxldCAoIH4tICkgPSBuZWdcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5cbigqIFdlIGNhbiByZXVzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGZyb20vdG8gaW50NjQgaGVyZS4gKilcbmxldCBvZl9pbnQgeCA9IHdyYXBfZXhuIChDb252LmludF90b19pbnQ2NCB4KVxubGV0IG9mX2ludF9leG4geCA9IG9mX2ludCB4XG5sZXQgdG9faW50IHggPSBDb252LmludDY0X3RvX2ludCAodW53cmFwIHgpXG5sZXQgdG9faW50X2V4biB4ID0gQ29udi5pbnQ2NF90b19pbnRfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnRfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50X3RydW5jICh1bndyYXAgeClcbmxldCBvZl9pbnQzMiB4ID0gd3JhcF9leG4gKENvbnYuaW50MzJfdG9faW50NjQgeClcbmxldCBvZl9pbnQzMl9leG4geCA9IG9mX2ludDMyIHhcbmxldCB0b19pbnQzMiB4ID0gQ29udi5pbnQ2NF90b19pbnQzMiAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfZXhuIHggPSBDb252LmludDY0X3RvX2ludDMyX2V4biAodW53cmFwIHgpXG5sZXQgdG9faW50MzJfdHJ1bmMgeCA9IENvbnYuaW50NjRfdG9faW50MzJfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX25hdGl2ZWludCB4ID0gb2ZfaW50NjQgKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X2V4biB4ID0gd3JhcF9leG4gKENvbnYubmF0aXZlaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfbmF0aXZlaW50X3RydW5jIHggPSBvZl9pbnQ2NF90cnVuYyAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCB0b19uYXRpdmVpbnQgeCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50ICh1bndyYXAgeClcbmxldCB0b19uYXRpdmVpbnRfZXhuIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmMgKHVud3JhcCB4KVxuXG5pbmNsdWRlIENvbnYuTWFrZSAoVClcblxuaW5jbHVkZSBDb252Lk1ha2VfaGV4IChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChULmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgVC5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBULmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gICAgbGV0IG5lZyA9ICggfi0gKVxuICAgIGxldCAoIDwgKSA9ICggPCApXG5cbiAgICBsZXQgdG9fc3RyaW5nIGkgPVxuICAgICAgKCogdGhlIHVzZSBvZiBbdW53cmFwX3Vuc2lnbmVkXSBoZXJlIGlzIGltcG9ydGFudCBmb3IgdGhlIGNhc2Ugb2YgW21pbl92YWx1ZV0gKilcbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgKHVud3JhcF91bnNpZ25lZCBpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBvZl9zdHJpbmcgKFwiMHhcIiBeIHMpXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzLkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgeCA9IHRvX3N0cmluZyB4XG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDYzXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGxldCAoIGxhbmQgKSA9IGJpdF9hbmRcbiAgbGV0ICggbG9yICkgPSBiaXRfb3JcbiAgbGV0ICggbHhvciApID0gYml0X3hvclxuICBsZXQgbG5vdCA9IGJpdF9ub3RcbiAgbGV0ICggbHNsICkgPSBzaGlmdF9sZWZ0XG4gIGxldCAoIGFzciApID0gc2hpZnRfcmlnaHRcbiAgbGV0ICggbHNyICkgPSBzaGlmdF9yaWdodF9sb2dpY2FsXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2M10gYW5kIFtJbnQ2My5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIHR5cGUgZW11bGF0ZWQgPSB0XG5cbiAgdHlwZSAoJ3VuZGVybHlpbmdfdHlwZSwgJ2ludGVybWVkaWF0ZV90eXBlKSB0ID1cbiAgICB8IEludCA6IChpbnQsIGludCkgdFxuICAgIHwgSW50NjQgOiAoaW50NjQsIGVtdWxhdGVkKSB0XG5lbmRcblxubGV0IHJlcHIgPSBSZXByLkludDY0XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkbGliLkludDMyXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9pbnQzMiA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQzMlxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50MzIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDMyX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDMyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDMyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcbiAgbGV0IG9mX3N0cmluZ19vcHQgPSBvZl9zdHJpbmdfb3B0XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gMzJcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCBjb21wYXJlID0gY29tcGFyZVxubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDMyLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBJbmZpeF9jb21wYXJlID0gc3RydWN0XG4gIG9wZW4gUG9seVxuXG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0geCA+PSB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0geCA8PSB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0geCA+IHlcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IHggPCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0geCA8PiB5XG5lbmRcblxubW9kdWxlIENvbXBhcmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeF9jb21wYXJlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9pbnQzMiB0ID0gdFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgdCA9IHRcbmxldCB0b19pbnQzMl9leG4gPSB0b19pbnQzMlxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50MzJfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgb2ZfaW50X2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludF90cnVuYyA9IENvbnYuaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50ID0gQ29udi5pbnQzMl90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5pbnQzMl90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5pbnQzMl90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDMyIDogKHRbQGxvY2FsX29wdF0pIC0+ICh0W0Bsb2NhbF9vcHRdKSA9IFwiJWJzd2FwX2ludDMyXCJcblxubGV0IGJzd2FwMTYgeCA9IFN0ZGxpYi5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDMyIHgpIDE2XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IFN0ZGxpYi5JbnQzMi5sb2dvclxuICBsZXQgKCBsc3IgKSA9IFN0ZGxpYi5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsXG4gIGxldCAoIGxhbmQgKSA9IFN0ZGxpYi5JbnQzMi5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IFN0ZGxpYi5JbnQzMi5wcmVkIHggaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgIFN0ZGxpYi5JbnQzMi5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gU3RkbGliLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBTdGRsaWIuSW50MzIuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBTdGRsaWIuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgU3RkbGliLkludDMyLnByZWQgeCA9IFN0ZGxpYi5JbnQzMi56ZXJvXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50MzIgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKGludDMyW0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6XCIgXCJCYXNlX2ludF9tYXRoX2ludDMyX2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgaSA8PSBTdGRsaWIuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQzMi5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gU3RkbGliLkludDMyLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50MzIuY2VpbF9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgICgqIFRoZSBbaSA9IDFdIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIGNseigwKSBpcyB1bmRlZmluZWQgKilcbiAgICBpZiBTdGRsaWIuSW50MzIuZXF1YWwgaSBTdGRsaWIuSW50MzIub25lXG4gICAgdGhlbiAwXG4gICAgZWxzZSBudW1fYml0cyAtIGNseiAoU3RkbGliLkludDMyLnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQzMiA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50MzJcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVseFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlbHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMi5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDMyXCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoQ29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbSW50MzJdIGFuZCBbSW50MzIuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgUmVwciA9IEludDYzX2VtdWwuUmVwclxuXG4oKiBJbiBhIHdvcmxkIHdoZXJlIHRoZSBjb21waWxlciB3b3VsZCB1bmRlcnN0YW5kIFtAQGltbWVkaWF0ZTY0XSBhdHRyaWJ1dGVzIG9uIHR5cGVcbiAgIGRlY2xhcmF0aW9ucywgdGhpcyBtb2R1bGUgaXMgaG93IG9uZSB3b3VsZCBwcm9kdWNlIGEgW3R5cGUgdF0gd2l0aCB0aGlzIGF0dHJpYnV0ZS4gKilcbm1vZHVsZSBJbW1lZGlhdGU2NCA6IHNpZ1xuICBtb2R1bGUgdHlwZSBOb25faW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbW1lZGlhdGUgOiBJbW1lZGlhdGUpIChOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgOiBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG5cbiAgICB0eXBlICdhIHJlcHIgPVxuICAgICAgfCBJbW1lZGlhdGUgOiBJbW1lZGlhdGUudCByZXByXG4gICAgICB8IE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlLnQgcmVwclxuXG4gICAgdmFsIHJlcHIgOiB0IHJlcHJcbiAgZW5kXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIGV4dGVybmFsIHRyYW5zcGFyZW50X21hZ2ljIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2JbQGxvY2FsX29wdF0pID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgbGV0IHJlcHIgPVxuICAgICAgKCogW09iai5tYWdpY10gaW52b2x2ZXMgb3BhcXVlbmVzcyB1bmRlciBGbGFtYmRhIDIgd2hpY2ggd2lsbCBpbmhpYml0XG4gICAgICAgICBhdmFpbGFiaWxpdHkgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgZm9yIGxhdGVyIGlubGluaW5nXG4gICAgICAgICAoZS5nLiBpbnRvIGZsb2F0Lm1sKS4gQXMgc3VjaCB3ZSBleHBsaWNpdGx5IHVzZSAlaWRlbnRpdHkgaGVyZS4gKilcbiAgICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgICAgfCBXNjQgLT4gKHRyYW5zcGFyZW50X21hZ2ljIEltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICAgIHwgVzMyIC0+ICh0cmFuc3BhcmVudF9tYWdpYyBOb25faW1tZWRpYXRlIDogdCByZXByKVxuICAgIDs7XG4gIGVuZFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuZW5kXG5cbmluY2x1ZGUgSW1tZWRpYXRlNjQuTWFrZSAoSW50KSAoSW50NjNfZW11bClcblxubW9kdWxlIEJhY2tlbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgaW5jbHVkZSBJbnRfaW50Zi5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICAgIHZhbCB0b19pbnQgOiB0IC0+IGludCBvcHRpb25cbiAgICB2YWwgdG9faW50X3RydW5jIDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0XG4gICAgdmFsIHRvX2ludDMyIDogdCAtPiBJbnQzMi50IG9wdGlvblxuICAgIHZhbCB0b19pbnQzMl90cnVuYyA6IHQgLT4gSW50MzIudFxuICAgIHZhbCBvZl9pbnQ2NCA6IEludDY0LnQgLT4gdCBvcHRpb25cbiAgICB2YWwgb2ZfaW50NjRfdHJ1bmMgOiBJbnQ2NC50IC0+IHRcbiAgICB2YWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgb3B0aW9uXG4gICAgdmFsIHRvX25hdGl2ZWludCA6IHQgLT4gbmF0aXZlaW50IG9wdGlvblxuICAgIHZhbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiBuYXRpdmVpbnQgLT4gdFxuICAgIHZhbCB0b19uYXRpdmVpbnRfdHJ1bmMgOiB0IC0+IG5hdGl2ZWludFxuICAgIHZhbCBvZl9mbG9hdF91bmNoZWNrZWQgOiBmbG9hdCAtPiB0XG4gICAgdmFsIHJlcHIgOiAodCwgdCkgSW50NjNfZW11bC5SZXByLnRcbiAgICB2YWwgYnN3YXAxNiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDMyIDogdCAtPiB0XG4gICAgdmFsIGJzd2FwNDggOiB0IC0+IHRcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTmF0aXZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCB0b19pbnQgeCA9IFNvbWUgeFxuICAgIGxldCB0b19pbnRfdHJ1bmMgeCA9IHhcblxuICAgICgqIFtvZl9pbnQzMl9leG5dIGlzIGEgc2FmZSBvcGVyYXRpb24gb24gcGxhdGZvcm1zIHdpdGggNjQtYml0IHdvcmQgc2l6ZXMuICopXG4gICAgbGV0IG9mX2ludDMyID0gb2ZfaW50MzJfZXhuXG4gICAgbGV0IHRvX25hdGl2ZWludF90cnVuYyB4ID0gdG9fbmF0aXZlaW50IHhcbiAgICBsZXQgdG9fbmF0aXZlaW50IHggPSBTb21lICh0b19uYXRpdmVpbnQgeClcbiAgICBsZXQgcmVwciA9IEludDYzX2VtdWwuUmVwci5JbnRcbiAgICBsZXQgYnN3YXAzMiB0ID0gSW50NjQudG9faW50X3RydW5jIChJbnQ2NC5ic3dhcDMyIChJbnQ2NC5vZl9pbnQgdCkpXG4gICAgbGV0IGJzd2FwNDggdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXA0OCAoSW50NjQub2ZfaW50IHQpKVxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgUykgPVxuICAgIG1hdGNoIHJlcHIgd2l0aFxuICAgIHwgSW1tZWRpYXRlIC0+IChtb2R1bGUgTmF0aXZlIDogUylcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gKG1vZHVsZSBJbnQ2M19lbXVsIDogUylcbiAgOztcbmVuZFxuXG5pbmNsdWRlICh2YWwgQmFja2VuZC5pbXBsIDogQmFja2VuZC5TKVxuXG5tb2R1bGUgT3ZlcmZsb3dfZXhuID0gc3RydWN0XG4gIGxldCAoICsgKSB0IHUgPVxuICAgIGxldCBzdW0gPSB0ICsgdSBpblxuICAgIGlmIGJpdF9vciAoYml0X3hvciB0IHUpIChiaXRfeG9yIHQgKGJpdF9ub3Qgc3VtKSkgPCB6ZXJvXG4gICAgdGhlbiBzdW1cbiAgICBlbHNlXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCIoICsgKSBvdmVyZmxvd1wiXG4gICAgICAgICAgIFsgXCJ0XCIsIHNleHBfb2ZfdCB0OyBcInVcIiwgc2V4cF9vZl90IHU7IFwic3VtXCIsIHNleHBfb2ZfdCBzdW0gXSlcbiAgOztcblxuICBsZXQgKCAtICkgdCB1ID1cbiAgICBsZXQgZGlmZiA9IHQgLSB1IGluXG4gICAgbGV0IHBvc19kaWZmID0gdCA+IHUgaW5cbiAgICBpZiB0IDw+IHUgJiYgQm9vbC4oIDw+ICkgcG9zX2RpZmYgKGlzX3Bvc2l0aXZlIGRpZmYpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAtICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcImRpZmZcIiwgc2V4cF9vZl90IGRpZmYgXSlcbiAgICBlbHNlIGRpZmZcbiAgOztcblxuICBsZXQgbmVnYXRpdmVfb25lID0gb2ZfaW50ICgtMSlcbiAgbGV0IGRpdl93b3VsZF9vdmVyZmxvdyB0IHUgPSB0ID0gbWluX3ZhbHVlICYmIHUgPSBuZWdhdGl2ZV9vbmVcblxuICBsZXQgKCAqICkgdCB1ID1cbiAgICBsZXQgcHJvZHVjdCA9IHQgKiB1IGluXG4gICAgaWYgdSA8PiB6ZXJvICYmIChkaXZfd291bGRfb3ZlcmZsb3cgcHJvZHVjdCB1IHx8IHByb2R1Y3QgLyB1IDw+IHQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAqICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInByb2R1Y3RcIiwgc2V4cF9vZl90IHByb2R1Y3QgXSlcbiAgICBlbHNlIHByb2R1Y3RcbiAgOztcblxuICBsZXQgKCAvICkgdCB1ID1cbiAgICBpZiBkaXZfd291bGRfb3ZlcmZsb3cgdCB1XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCAvICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInByb2R1Y3RcIiwgc2V4cF9vZl90ICh0IC8gdSkgXSlcbiAgICBlbHNlIHQgLyB1XG4gIDs7XG5cbiAgbGV0IGFicyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwiYWJzIG92ZXJmbG93XCIgZWxzZSBhYnMgdFxuICBsZXQgbmVnIHQgPSBpZiB0ID0gbWluX3ZhbHVlIHRoZW4gZmFpbHdpdGggXCJuZWcgb3ZlcmZsb3dcIiBlbHNlIG5lZyB0XG5lbmRcblxubGV0ICgpID0gYXNzZXJ0IChJbnQuKCA9ICkgbnVtX2JpdHMgNjMpXG5cbmxldCByYW5kb21fb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgYm91bmQgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnQgc3RhdGUgKHRvX2ludF9leG4gYm91bmQpKVxuOztcblxubGV0IHJhbmRvbV9vZl9pbnQ2NCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50NjRfZXhuIChSYW5kb20uU3RhdGUuaW50NjQgc3RhdGUgKHRvX2ludDY0IGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb20gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gcmFuZG9tX29mX2ludFxuICB8IFczMiAtPiByYW5kb21fb2ZfaW50NjRcbjs7XG5cbmxldCByYW5kb21faW5jbF9vZl9pbnQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsbyBoaSA9XG4gIG9mX2ludCAoUmFuZG9tLlN0YXRlLmludF9pbmNsIHN0YXRlICh0b19pbnRfZXhuIGxvKSAodG9faW50X2V4biBoaSkpXG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsbyBoaSA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0X2luY2wgc3RhdGUgKHRvX2ludDY0IGxvKSAodG9faW50NjQgaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9pbmNsX29mX2ludFxuICB8IFczMiAtPiByYW5kb21faW5jbF9vZl9pbnQ2NFxuOztcblxubGV0IGZsb29yX2xvZzIgdCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiB0IHw+IHRvX2ludF9leG4gfD4gSW50LmZsb29yX2xvZzJcbiAgfCBXMzIgLT5cbiAgICBpZiB0IDw9IHplcm9cbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pO1xuICAgIGxldCBmbG9vcl9sb2cyID0gcmVmIChJbnQuKCAtICkgbnVtX2JpdHMgMikgaW5cbiAgICB3aGlsZSBlcXVhbCB6ZXJvIChiaXRfYW5kIHQgKHNoaWZ0X2xlZnQgb25lICFmbG9vcl9sb2cyKSkgZG9cbiAgICAgIGZsb29yX2xvZzIgOj0gSW50LiggLSApICFmbG9vcl9sb2cyIDFcbiAgICBkb25lO1xuICAgICFmbG9vcl9sb2cyXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgUmVwciA9IFJlcHJcblxuICBsZXQgcmVwciA9IHJlcHJcblxuICBtb2R1bGUgRW11bCA9IEludDYzX2VtdWxcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBAY2Fub25pY2FsIEJhc2UuSGFzaHRibC5LZXkgKilcbm1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogVHdvIFt0XXMgdGhhdCBbY29tcGFyZV0gZXF1YWwgbXVzdCBoYXZlIGVxdWFsIGhhc2hlcyBmb3IgdGhlIGhhc2h0YWJsZVxuICAgICAgICB0byBiZWhhdmUgcHJvcGVybHkuICopXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICBlbmRcblxuICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbmVuZFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuTWVyZ2VfaW50b19hY3Rpb24gKilcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgUmVtb3ZlXG4gICAgfCBTZXRfdG8gb2YgJ2FcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMgPSBzaWdcbiAgKCoqIHsyIEFjY2Vzc29yc30gKilcblxuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcblxuICB2YWwgc2V4cF9vZl9rZXkgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IFNleHAudFxuICB2YWwgY2xlYXIgOiAoXywgXykgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEF0dGVtcHRpbmcgdG8gbW9kaWZ5IChbc2V0XSwgW3JlbW92ZV0sIGV0Yy4pIHRoZSBoYXNodGFibGUgZHVyaW5nIGl0ZXJhdGlvbiAoW2ZvbGRdLFxuICAgICAgW2l0ZXJdLCBbaXRlcl9rZXlzXSwgW2l0ZXJpXSkgd2lsbCByYWlzZSBhbiBleGNlcHRpb24uICopXG4gIHZhbCBmb2xkXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+ICdhY2NcblxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfKSB0IC0+IGY6KCgnYSBrZXkgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlcyBvdmVyIGJvdGgga2V5cyBhbmQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5pdGVyaSBoIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBwcmludF9lbmRsaW5lIChQcmludGYuc3ByaW50ZiBcIiVkLSVkXCIga2V5IGRhdGEpKTs7XG4gICAgICAxLTRcbiAgICAgIDUtNlxuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn0gKilcbiAgdmFsIGl0ZXJpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXQpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCgnYiAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IGJvb2xcbiAgdmFsIHJlbW92ZSA6ICgnYSwgXykgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gICgqKiBDaG9vc2UgYW4gYXJiaXRyYXJ5IGtleS92YWx1ZSBwYWlyIG9mIGEgaGFzaCB0YWJsZS4gUmV0dXJucyBbTm9uZV0gaWYgW3RdIGlzIGVtcHR5LlxuXG4gICAgICBUaGUgY2hvaWNlIGlzIGRldGVybWluaXN0aWMuIENhbGxpbmcgW2Nob29zZV0gbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgdGFibGVcbiAgICAgIHJldHVybnMgdGhlIHNhbWUga2V5L3ZhbHVlIHBhaXIsIHNvIGxvbmcgYXMgdGhlIHRhYmxlIGlzIG5vdCBtdXRhdGVkIGluIGJldHdlZW4uXG4gICAgICBCZXlvbmQgZGV0ZXJtaW5pc20sIG5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgaG93IHRoZSBjaG9pY2UgaXMgbWFkZS4gRXhwZWN0XG4gICAgICBiaWFzIHRvd2FyZCBjZXJ0YWluIGhhc2ggdmFsdWVzLlxuXG4gICAgICBUaGlzIGhhc2ggYmlhcyBjYW4gbGVhZCB0byBkZWdlbmVyYXRlIHBlcmZvcm1hbmNlIGluIHNvbWUgY2FzZXMsIHN1Y2ggYXMgY2xlYXJpbmdcbiAgICAgIGEgaGFzaCB0YWJsZSB1c2luZyByZXBlYXRlZCBbY2hvb3NlXSBhbmQgW3JlbW92ZV0uIEF0IGVhY2ggaXRlcmF0aW9uLCBmaW5kaW5nIHRoZVxuICAgICAgbmV4dCBlbGVtZW50IG1heSBoYXZlIHRvIHNjYW4gZmFydGhlciBmcm9tIGl0cyBpbml0aWFsIGhhc2ggdmFsdWUuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgb3B0aW9uXG5cbiAgKCoqIExpa2UgW2Nob29zZV0uIFJhaXNlcyBpZiBbdF0gaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgKiAnYlxuXG4gICgqKiBDaG9vc2VzIGEgcmFuZG9tIGtleS92YWx1ZSBwYWlyIG9mIGEgaGFzaCB0YWJsZS4gUmV0dXJucyBbTm9uZV0gaWYgW3RdIGlzIGVtcHR5LlxuXG4gICAgICBUaGUgY2hvaWNlIGlzIGRpc3RyaWJ1dGVkIHVuaWZvcm1seSBhY3Jvc3MgaGFzaCB2YWx1ZXMsIHJhdGhlciB0aGFuIGFjcm9zcyBrZXlzXG4gICAgICB0aGVtc2VsdmVzLiBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgY2xvc2VyIHRoZSBrZXlzIGFyZSB0byBldmVubHkgc3BhY2VkIG91dCBpbiB0aGVcbiAgICAgIHRhYmxlLCB0aGUgY2xvc2VyIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSB0byBhIHVuaWZvcm0gY2hvaWNlIG9mIGtleXMuXG5cbiAgICAgIFRoaXMgZnVuY3Rpb24gbWF5IGJlIHByZWZlcmFibGUgdG8gW2Nob29zZV0gd2hlbiBub25kZXRlcm1pbmlzdGljIGNob2ljZSBpc1xuICAgICAgYWNjZXB0YWJsZSwgYW5kIGJpYXMgdG93YXJkIGNlcnRhaW4gaGFzaCB2YWx1ZXMgaXMgdW5kZXNpcmFibGUuICopXG4gIHZhbCBjaG9vc2VfcmFuZG9tbHlcbiAgICA6ICA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50ICgqKiBkZWZhdWx0OiBbUmFuZG9tLlN0YXRlLmRlZmF1bHRdICopXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICgnYSBrZXkgKiAnYikgb3B0aW9uXG5cbiAgKCoqIExpa2UgW2Nob29zZV9yYW5kb21seV0uIFJhaXNlcyBpZiBbdF0gaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2VfcmFuZG9tbHlfZXhuXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAoKiogZGVmYXVsdDogW1JhbmRvbS5TdGF0ZS5kZWZhdWx0XSAqKVxuICAgIC0+ICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXkgKiAnYlxuXG4gICgqKiBTZXRzIHRoZSBnaXZlbiBba2V5XSB0byBbZGF0YV0uICopXG4gIHZhbCBzZXQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFthZGRdIGFuZCBbYWRkX2V4bl0gbGVhdmUgdGhlIHRhYmxlIHVuY2hhbmdlZCBpZiB0aGUga2V5IHdhcyBhbHJlYWR5IHByZXNlbnQuICopXG4gIHZhbCBhZGQgOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBbIGBPayB8IGBEdXBsaWNhdGUgXVxuXG4gIHZhbCBhZGRfZXhuIDogKCdhLCAnYikgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSBjaGFuZ2VzIFt0XSdzIHZhbHVlIGZvciBba2V5XSB0byBiZSBbZiAoZmluZCB0IGtleSldLiAqKVxuICB2YWwgY2hhbmdlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooKCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+IHVuaXRcblxuICAoKiogW3VwZGF0ZSB0IGtleSB+Zl0gaXMgW2NoYW5nZSB0IGtleSB+ZjooZnVuIG8gLT4gU29tZSAoZiBvKSldLiAqKVxuICB2YWwgdXBkYXRlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZjooKCdiIG9wdGlvbiAtPiAnYilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlX2FuZF9yZXR1cm4gdCBrZXkgfmZdIGlzIFt1cGRhdGVdLCBidXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIFtmIG9dLiAqKVxuICB2YWwgdXBkYXRlX2FuZF9yZXR1cm4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOigoJ2Igb3B0aW9uIC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gICgqKiBbbWFwIHQgZl0gcmV0dXJucyBhIG5ldyB0YWJsZSB3aXRoIHZhbHVlcyByZXBsYWNlZCBieSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIFtmXVxuICAgICAgdG8gdGhlIGN1cnJlbnQgdmFsdWVzLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgbGV0IGgnID0gSGFzaHRibC5tYXAgaCB+ZjooKGZ1biB4IC0+IHggKiAyKVtAbG9jYWxdKSBpblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoJzs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgMTIpOyAoMSwgOCldXG4gICAgICB2fSAqKVxuICB2YWwgbWFwIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gJ2MpW0Bsb2NhbF0pIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYylbQGxvY2FsXSkgLT4gKCdhLCAnYykgdFxuXG4gICgqKiBSZXR1cm5zIGEgbmV3IHRhYmxlIGJ5IGZpbHRlcmluZyB0aGUgZ2l2ZW4gdGFibGUncyB2YWx1ZXMgYnkgW2ZdOiB0aGUga2V5cyBmb3Igd2hpY2hcbiAgICAgIFtmXSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHZhbHVlIHJldHVybnMgW1NvbWVdIGFyZSBrZXB0LCBhbmQgdGhvc2UgZm9yIHdoaWNoIGl0XG4gICAgICByZXR1cm5zIFtOb25lXSBhcmUgZGlzY2FyZGVkLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA0KTsgKDUsIDYpXSBpblxuICAgICAgSGFzaHRibC5maWx0ZXJfbWFwIGggfmY6KChmdW4geCAtPiBpZiB4ID4gNSB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpW0Bsb2NhbF0pXG4gICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWyg1LCA2KV1cbiAgICAgIHZ9ICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCAnYikgdCAtPiBmOigoJ2IgLT4gJ2Mgb3B0aW9uKVtAbG9jYWxdKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbilbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYikgdCAtPiBmOigoJ2Ega2V5IC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBSZXR1cm5zIG5ldyB0YWJsZXMgd2l0aCBib3VuZCB2YWx1ZXMgcGFydGl0aW9uZWQgYnkgW2ZdIGFwcGxpZWQgdG8gdGhlIGJvdW5kXG4gICAgICB2YWx1ZXMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KCgnYiAtPiAoJ2MsICdkKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBMaWtlIFtwYXJ0aXRpb25fbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClbQGxvY2FsXSlcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gICgqKiBSZXR1cm5zIGEgcGFpciBvZiB0YWJsZXMgWyh0MSwgdDIpXSwgd2hlcmUgW3QxXSBjb250YWlucyBhbGwgdGhlIGVsZW1lbnRzIG9mIHRoZVxuICAgICAgaW5pdGlhbCB0YWJsZSB3aGljaCBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW2ZdLCBhbmQgW3QyXSBjb250YWlucyB0aGUgcmVzdC4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl90Zl0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIFtmaW5kX29yX2FkZCB0IGsgfmRlZmF1bHRdIHJldHVybnMgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGtleSBba10gaWYgaXQgaXMgaW4gdGhlXG4gICAgICB0YWJsZSBbdF0sIGFuZCBvdGhlcndpc2UgYXNzaWducyBba10gdGhlIHZhbHVlIHJldHVybmVkIGJ5IFtkZWZhdWx0ICgpXS4gKilcbiAgdmFsIGZpbmRfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooKHVuaXQgLT4gJ2IpW0Bsb2NhbF0pIC0+ICdiXG5cbiAgKCoqIExpa2UgW2ZpbmRfb3JfYWRkXSBidXQgW2RlZmF1bHRdIHRha2VzIHRoZSBrZXkgYXMgYW4gYXJndW1lbnQuICopXG4gIHZhbCBmaW5kaV9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0OigoJ2Ega2V5IC0+ICdiKVtAbG9jYWxdKSAtPiAnYlxuXG4gICgqKiBbZmluZCB0IGtdIHJldHVybnMgW1NvbWVdICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBba10gaW4gW3RdLCBvciBbTm9uZV0gaWYgbm8gc3VjaFxuICAgICAgYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIFtmaW5kX2V4biB0IGtdIHJldHVybnMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBba10gaW4gW3RdLCBvciByYWlzZXMgW1N0ZGxpYi5Ob3RfZm91bmRdXG4gICAgICBvciBbTm90X2ZvdW5kX3NdIGlmIG5vIHN1Y2ggYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+ICdiXG5cbiAgKCoqIFtmaW5kX2FuZF9jYWxsIHQgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZF1cblxuICAgICAgaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAgW21hdGNoIGZpbmQgdCBrIHdpdGggU29tZSB2IC0+IGlmX2ZvdW5kIHYgfCBOb25lIC0+IGlmX25vdF9mb3VuZCBrXVxuXG4gICAgICBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIHRoZSBvcHRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOigoJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgKCoqIEp1c3QgbGlrZSBbZmluZF9hbmRfY2FsbF0sIGJ1dCB0YWtlcyBhbiBleHRyYSBhcmd1bWVudCB3aGljaCBpcyBwYXNzZWQgdG8gW2lmX2ZvdW5kXVxuICAgICAgYW5kIFtpZl9ub3RfZm91bmRdLCBzbyB0aGF0IHRoZSBjbGllbnQgY29kZSBjYW4gYXZvaWQgYWxsb2NhdGluZyBjbG9zdXJlcyBvciB1c2luZ1xuICAgICAgcmVmcyB0byBwYXNzIHRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VmdWwgaW4gY29kZVxuICAgICAgd2hpY2ggdHJpZXMgdG8gbWluaW1pemUgaGVhcCBhbGxvY2F0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbDFcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gYTonZFxuICAgIC0+IGlmX2ZvdW5kOigoJ2IgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KCgnYiAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiBpZl9ub3RfZm91bmQ6KCgnYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gJ2Ega2V5XG4gICAgLT4gaWZfZm91bmQ6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gaWZfbm90X2ZvdW5kOigoJ2Ega2V5IC0+ICdkIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdlIC0+ICdjKVtAbG9jYWxdKVxuICAgIC0+IGlmX25vdF9mb3VuZDooKCdhIGtleSAtPiAnZCAtPiAnZSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gICgqKiBbZmluZF9hbmRfcmVtb3ZlIHQga10gcmV0dXJucyBTb21lICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBrIGluIHQgYW5kIHJlbW92ZXMgaXQsXG4gICAgICBvciBOb25lIGlzIG5vIHN1Y2ggYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kX2FuZF9yZW1vdmUgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYiBvcHRpb25cblxuICAoKiogTWVyZ2VzIHR3byBoYXNodGFibGVzLlxuXG4gICAgICBUaGUgcmVzdWx0IG9mIFttZXJnZSBmIGgxIGgyXSBoYXMgYXMga2V5cyB0aGUgc2V0IG9mIGFsbCBba10gaW4gdGhlIHVuaW9uIG9mIHRoZVxuICAgICAgc2V0cyBvZiBrZXlzIG9mIFtoMV0gYW5kIFtoMl0gZm9yIHdoaWNoIFtkKGspXSBpcyBub3QgTm9uZSwgd2hlcmU6XG5cbiAgICAgIGQoaykgPVxuICAgICAgLSBbZiB+a2V5OmsgKGBMZWZ0IGQxKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMV0gbWFwcyB0byBkMSwgYW5kIFtoMl0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgUmlnaHQgZDIpXVxuICAgICAgICBpZiBba10gaW4gW2gyXSBtYXBzIHRvIGQyLCBhbmQgW2gxXSBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIFtrXTtcblxuICAgICAgLSBbZiB+a2V5OmsgKGBCb3RoIChkMSwgZDIpKV1cbiAgICAgICAgb3RoZXJ3aXNlLCB3aGVyZSBba10gaW4gW2gxXSBtYXBzIHRvIFtkMV0gYW5kIFtrXSBpbiBbaDJdIG1hcHMgdG8gW2QyXS5cblxuICAgICAgRWFjaCBrZXkgW2tdIGlzIG1hcHBlZCB0byBhIHNpbmdsZSBwaWVjZSBvZiBkYXRhIFt4XSwgd2hlcmUgW2QoaykgPSBTb21lIHhdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgbGV0IGgxID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgNSk7ICgyLCAzMjMyKV0gaW5cbiAgICAgIGxldCBoMiA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDMpXSBpblxuICAgICAgSGFzaHRibC5tZXJnZSBoMSBoMiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBMZWZ0IHggLT4gU29tZSAoYExlZnQgeClcbiAgICAgICAgfCBgUmlnaHQgeCAtPiBTb21lIChgUmlnaHQgeClcbiAgICAgICAgfCBgQm90aCAoeCwgeSkgLT4gaWYgeD15IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGBCb3RoICh4LHkpKVxuICAgICAgKSB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgIC0gOiAoaW50ICogWz4gYEJvdGggb2YgaW50ICogaW50IHwgYExlZnQgb2YgaW50IHwgYFJpZ2h0IG9mIGludCBdKSBsaXN0ID1cbiAgICAgIFsoMiwgYExlZnQgMzIzMik7ICgxLCBgQm90aCAoNSwgMykpXVxuICAgICAgdn0gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAnYSkgdFxuICAgIC0+ICgnaywgJ2IpIHRcbiAgICAtPiBmOlxuICAgICAgICAgKChrZXk6J2sga2V5IC0+IFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2IgfCBgQm90aCBvZiAnYSAqICdiIF0gLT4gJ2Mgb3B0aW9uKVxuICAgICAgICAgIFtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ2MpIHRcblxuXG4gICgqKiBFdmVyeSBba2V5XSBpbiBbc3JjXSB3aWxsIGJlIHJlbW92ZWQgb3Igc2V0IGluIFtkc3RdIGFjY29yZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlXG4gICAgICBvZiBbZl0uICopXG4gIHZhbCBtZXJnZV9pbnRvXG4gICAgOiAgc3JjOignaywgJ2EpIHRcbiAgICAtPiBkc3Q6KCdrLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2sga2V5IC0+ICdhIC0+ICdiIG9wdGlvbiAtPiAnYiBNZXJnZV9pbnRvX2FjdGlvbi50KVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwga2V5cyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBrZXkgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBkYXRhIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcblxuICAoKiogW2ZpbHRlcl9pbnBsYWNlIHQgfmZdIHJlbW92ZXMgYWxsIHRoZSBlbGVtZW50cyBmcm9tIFt0XSB0aGF0IGRvbid0IHNhdGlzZnkgW2ZdLiAqKVxuICB2YWwgZmlsdGVyX2tleXNfaW5wbGFjZSA6ICgnYSwgXykgdCAtPiBmOigoJ2Ega2V5IC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZpbHRlcmlfaW5wbGFjZSA6ICgnYSwgJ2IpIHQgLT4gZjooKGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFttYXBfaW5wbGFjZSB0IH5mXSBhcHBsaWVzIFtmXSB0byBhbGwgZWxlbWVudHMgaW4gW3RdLCB0cmFuc2Zvcm1pbmcgdGhlbSBpblxuICAgICAgcGxhY2UuICopXG4gIHZhbCBtYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOigoJ2IgLT4gJ2IpW0Bsb2NhbF0pIC0+IHVuaXRcblxuICB2YWwgbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOigoa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdiKVtAbG9jYWxdKSAtPiB1bml0XG5cbiAgKCoqIFtmaWx0ZXJfbWFwX2lucGxhY2VdIGNvbWJpbmVzIHRoZSBlZmZlY3RzIG9mIFttYXBfaW5wbGFjZV0gYW5kIFtmaWx0ZXJfaW5wbGFjZV0uICopXG4gIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2UgOiAoXywgJ2IpIHQgLT4gZjooKCdiIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaV9pbnBsYWNlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IGY6KChrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+IHVuaXRcblxuICAoKiogW2VxdWFsIGYgdDEgdDJdIGFuZCBbc2ltaWxhciBmIHQxIHQyXSBib3RoIHJldHVybiB0cnVlIGlmZiBbdDFdIGFuZCBbdDJdIGhhdmUgdGhlXG4gICAgICBzYW1lIGtleXMgYW5kIGZvciBhbGwga2V5cyBba10sIFtmIChmaW5kX2V4biB0MSBrKSAoZmluZF9leG4gdDIgayldLiAgW2VxdWFsXSBhbmRcbiAgICAgIFtzaW1pbGFyXSBvbmx5IGRpZmZlciBpbiB0aGVpciB0eXBlcy4gKilcbiAgdmFsIGVxdWFsIDogKCdiIC0+ICdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBib29sXG5cbiAgdmFsIHNpbWlsYXIgOiAoJ2IxIC0+ICdiMiAtPiBib29sKSAtPiAoJ2EsICdiMSkgdCAtPiAoJ2EsICdiMikgdCAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWxsIChrZXksIGRhdGEpIHBhaXJzIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCB0b19hbGlzdCA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBsaXN0XG5cblxuICAoKiogW3JlbW92ZV9pZl96ZXJvXSdzIGRlZmF1bHQgaXMgW2ZhbHNlXS4gKilcbiAgdmFsIGluY3IgOiA/Ynk6aW50IC0+ID9yZW1vdmVfaWZfemVybzpib29sIC0+ICgnYSwgaW50KSB0IC0+ICdhIGtleSAtPiB1bml0XG5cbiAgdmFsIGRlY3IgOiA/Ynk6aW50IC0+ID9yZW1vdmVfaWZfemVybzpib29sIC0+ICgnYSwgaW50KSB0IC0+ICdhIGtleSAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgTXVsdGkgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgKCoqIFthZGRfbXVsdGkgdCB+a2V5IH5kYXRhXSBpZiBba2V5XSBpcyBwcmVzZW50IGluIHRoZSB0YWJsZSB0aGVuIGNvbnNcbiAgICAgIFtkYXRhXSBvbiB0aGUgbGlzdCwgb3RoZXJ3aXNlIGFkZCBba2V5XSB3aXRoIGEgc2luZ2xlIGVsZW1lbnQgbGlzdC4gKilcbiAgdmFsIGFkZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiBrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gdW5pdFxuXG4gICgqKiBbcmVtb3ZlX211bHRpIHQga2V5XSB1cGRhdGVzIHRoZSB0YWJsZSwgcmVtb3ZpbmcgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYm91bmQgdG9cbiAgICAgIFtrZXldLiBJZiB0aGUgbGlzdCBoYXMgb25seSBvbmUgZWxlbWVudCAob3IgaXMgZW1wdHkpIHRoZW4gdGhlIGJpbmRpbmcgaXNcbiAgICAgIHJlbW92ZWQuICopXG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsIF8gbGlzdCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gICgqKiBbZmluZF9tdWx0aSB0IGtleV0gcmV0dXJucyB0aGUgZW1wdHkgbGlzdCBpZiBba2V5XSBpcyBub3QgcHJlc2VudCBpbiB0aGUgdGFibGUsXG4gICAgICByZXR1cm5zIFt0XSdzIHZhbHVlcyBmb3IgW2tleV0gb3RoZXJ3aXNlLiAqKVxuICB2YWwgZmluZF9tdWx0aSA6ICgnYSwgJ2IgbGlzdCkgdCAtPiAnYSBrZXkgLT4gJ2IgbGlzdFxuZW5kXG5cbnR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPVxuICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAtPiAna2V5IEtleS50XG4gIC0+ICd6XG5cbnR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGUgPVxuICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAtPiAnelxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuICB0eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSBrZXksICdiLCB1bml0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsICgnYSBrZXkgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2Ega2V5IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsICgnYSBrZXkgKiAnYikgbGlzdCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogKCdhIGtleSwgJ2IsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCkgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICgnYSBrZXksICdiIGxpc3QsICgnYSBrZXkgKiAnYikgbGlzdCAtPiAoJ2EsICdiIGxpc3QpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICAoKioge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MSwuLi4seG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV9tYXBwZWRcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCgnciAtPiAnYSBrZXkpW0Bsb2NhbF0pXG4gICAgICAgIC0+IGdldF9kYXRhOigoJ3IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxLC4uLix4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKVxuICAgICAgICAtPiAnciBsaXN0XG4gICAgICAgIC0+IFsgYE9rIG9mICgnYSwgJ3IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2Ega2V5IGxpc3QgXSApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgIDogKCAnYSBrZXlcbiAgICAgICwgJ3JcbiAgICAgICwgZ2V0X2tleTooKCdyIC0+ICdhIGtleSlbQGxvY2FsXSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnclxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIGdyb3VwXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OigoJ3IgLT4gJ2Ega2V5KVtAbG9jYWxdKVxuICAgICAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgICAgICAtPiBjb21iaW5lOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgICAgIC0+ICdyIGxpc3RcbiAgICAgICAgLT4gKCdhLCAnYikgdCApXG4gICAgICAgIGNyZWF0ZV9vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgKCoqIHsyIENyZWF0b3JzfSAqKVxuXG4gICgqKiBUaGUgbW9kdWxlIHlvdSBwYXNzIHRvIFtjcmVhdGVdIG11c3QgaGF2ZSBhIHR5cGUgdGhhdCBpcyBoYXNoYWJsZSwgc2V4cGFibGUsIGFuZFxuICAgICAgY29tcGFyYWJsZS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpOztcbiAgICAgICAgLSA6IChpbnQsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPjs7XG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygzLCBcInNvbWV0aGluZ1wiKTsgKDIsIFwid2hhdGV2ZXJcIildXG4gICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIFdoZXJlYXMgW29mX2FsaXN0XSB3aWxsIHJlcG9ydCBbRHVwbGljYXRlX2tleV0gbm8gbWF0dGVyIGhvdyBtYW55IGR1cHMgdGhlcmUgYXJlIGluXG4gICAgICB5b3VyIGxpc3QsIFtvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNdIHdpbGwgcmVwb3J0IGVhY2ggYW5kIGV2ZXJ5IGR1cGxpY2F0ZSBlbnRyeS5cblxuICAgICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIEhhc2h0Ymwub2ZfYWxpc3QgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXkgb2YgaW50IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleSAxXG5cbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgKG1vZHVsZSBJbnQpIFsoMSwgXCJmb29cIik7ICgxLCBcImJhclwiKTsgKDIsIFwiZm9vXCIpOyAoMiwgXCJiYXJcIildOztcbiAgICAgICAgLSA6IFsgYER1cGxpY2F0ZV9rZXlzIG9mIGludCBsaXN0IHwgYE9rIG9mIChpbnQsIHN0cmluZykgSGFzaHRibC50IF0gPSBgRHVwbGljYXRlX2tleXMgWzE7IDJdXG4gICAgICB2fSAqKVxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBDcmVhdGVzIGEge3shTXVsdGl9IFwibXVsdGlcIn0gaGFzaHRhYmxlLCBpLmUuLCBhIGhhc2h0YWJsZSB3aGVyZSBlYWNoIGtleSBwb2ludHMgdG8gYVxuICAgICAgbGlzdCBwb3RlbnRpYWxseSBjb250YWluaW5nIG11bHRpcGxlIHZhbHVlcy4gU28gaW5zdGVhZCBvZiBzaG9ydC1jaXJjdWl0aW5nIHdpdGggYVxuICAgICAgW2BEdXBsaWNhdGVfa2V5XSB2YXJpYW50IG9uIGR1cGxpY2F0ZXMsIGFzIGluIFtvZl9hbGlzdF0sIFtvZl9hbGlzdF9tdWx0aV0gZm9sZHNcbiAgICAgIHRob3NlIHZhbHVlcyBpbnRvIGEgbGlzdCBmb3IgdGhlIGdpdmVuIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoID0gSGFzaHRibC5vZl9hbGlzdF9tdWx0aSAobW9kdWxlIEludCkgWygxLCBcImFcIik7ICgxLCBcImJcIik7ICgyLCBcImNcIik7ICgyLCBcImRcIildOztcbiAgICAgIHZhbCBoIDogKGludCwgc3RyaW5nIGxpc3QpIEhhc2h0YmwudCA9IDxhYnN0cj5cblxuICAgICAgSGFzaHRibC5maW5kX2V4biBoIDE7O1xuICAgICAgLSA6IHN0cmluZyBsaXN0ID0gW1wiYlwiOyBcImFcIl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9tdWx0aVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgKCoqIEFwcGxpZXMgdGhlIFtnZXRfa2V5XSBhbmQgW2dldF9kYXRhXSBmdW5jdGlvbnMgdG8gdGhlIFsnciBsaXN0XSB0byBjcmVhdGUgdGhlXG4gICAgICBpbml0aWFsIGtleXMgYW5kIHZhbHVlcywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIG5ldyBoYXNodGFibGUuXG5cbiAgICAgIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDE7Li4uO3huXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dXG4gICAgICBdfVxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBsZXQgaCA9XG4gICAgICAgICAgSGFzaHRibC5jcmVhdGVfbWFwcGVkIChtb2R1bGUgSW50KVxuICAgICAgICAgICAgfmdldF9rZXk6KChmdW4geCAtPiB4KVtAbG9jYWxdKVxuICAgICAgICAgICAgfmdldF9kYXRhOigoZnVuIHggLT4geCArIDEpW0Bsb2NhbF0pXG4gICAgICAgICAgIFsxOyAyOyAzXTs7XG4gICAgICAgIHZhbCBoIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgaW50KSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG5cbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIG1hdGNoIGggd2l0aFxuICAgICAgICAgIHwgYE9rIHggLT4geFxuICAgICAgICAgIHwgYER1cGxpY2F0ZV9rZXlzIF8gLT4gZmFpbHdpdGggXCJcIlxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAgIC0gOiBpbnQgPSAyXG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCgnciAtPiAnYSlbQGxvY2FsXSlcbiAgICAtPiBnZXRfZGF0YTooKCdyIC0+ICdiKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gICgqKiB7WyBjcmVhdGVfd2l0aF9rZXkgfmdldF9rZXkgW3gxOy4uLjt4bl1cbiAgICAgICAgID0gb2ZfYWxpc3QgW2dldF9rZXkgeDEsIHgxOyAuLi47IGdldF9rZXkgeG4sIHhuXSBdfSAqKVxuICB2YWwgY3JlYXRlX3dpdGhfa2V5XG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ3IpIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooKCdyIC0+ICdhKVtAbG9jYWxdKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdyKSB0XG5cbiAgKCoqIExpa2UgW2NyZWF0ZV9tYXBwZWRdLCBhcHBsaWVzIHRoZSBbZ2V0X2tleV0gYW5kIFtnZXRfZGF0YV0gZnVuY3Rpb25zIHRvIHRoZSBbJ3JcbiAgICAgIGxpc3RdIHRvIGNyZWF0ZSB0aGUgaW5pdGlhbCBrZXlzIGFuZCB2YWx1ZXMsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBuZXcgaGFzaHRhYmxlIC0tXG4gICAgICBhbmQgdGhlbiwgbGlrZSBbYWRkX211bHRpXSwgZm9sZHMgdG9nZXRoZXIgdmFsdWVzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBrZXlzLiBIZXJlLFxuICAgICAgdGhvdWdoLCB0aGUgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIGZvbGRpbmcgaXMgZ2l2ZW4gYnkgW2NvbWJpbmVdIChpbnN0ZWFkIG9mIGp1c3RcbiAgICAgIGJlaW5nIGEgW2NvbnNdKS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgIEhhc2h0YmwuZ3JvdXAgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgIH5nZXRfa2V5OigoZnVuIHggLT4geCAvIDIpW0Bsb2NhbF0pXG4gICAgICAgICAgIH5nZXRfZGF0YTooKGZ1biB4IC0+IHgpW0Bsb2NhbF0pXG4gICAgICAgICAgIH5jb21iaW5lOigoZnVuIHggeSAtPiB4ICogeSlbQGxvY2FsXSlcbiAgICAgICAgICAgIFsgMTsgMjsgMzsgNF1cbiAgICAgICAgIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDIsIDQpOyAoMSwgNik7ICgwLCAxKV1cbiAgICAgICB2fSAqKVxuICB2YWwgZ3JvdXBcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OigoJ3IgLT4gJ2EpW0Bsb2NhbF0pXG4gICAgLT4gZ2V0X2RhdGE6KCgnciAtPiAnYilbQGxvY2FsXSlcbiAgICAtPiBjb21iaW5lOigoJ2IgLT4gJ2IgLT4gJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ3IgbGlzdFxuICAgIC0+ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3VibW9kdWxlcyA9IHNpZ1xuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuICB2YWwgaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50XG5cbiAgdHlwZSAoISdhLCAhJ2IpIHRcblxuICAoKiogV2UgcHJvdmlkZSBhIFtzZXhwX29mX3RdIGJ1dCBub3QgYSBbdF9vZl9zZXhwXSBmb3IgdGhpcyB0eXBlIGJlY2F1c2Ugb25lIG5lZWRzIHRvIGJlXG4gICAgICBleHBsaWNpdCBhYm91dCB0aGUgaGFzaCBhbmQgY29tcGFyaXNvbiBmdW5jdGlvbnMgdXNlZCB3aGVuIGNyZWF0aW5nIGEgaGFzaHRhYmxlLlxuICAgICAgTm90ZSB0aGF0IFtIYXNodGJsLlBvbHkudF0gZG9lcyBoYXZlIFtbQEBkZXJpdmluZyBzZXhwXV0sIGFuZCB1c2VzIE9DYW1sJ3MgYnVpbHQtaW5cbiAgICAgIHBvbHltb3JwaGljIGNvbXBhcmlzb24gYW5kIGFuZCBwb2x5bW9ycGhpYyBoYXNoaW5nLiAqKVxuICB2YWwgc2V4cF9vZl90IDogKCdhIC0+IFNleHAudCkgLT4gKCdiIC0+IFNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwLnRcblxuICBpbmNsdWRlIENyZWF0b3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgKCoqIEBpbmxpbmUgKilcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAoKiogQGlubGluZSAqKVxuXG5cbiAgaW5jbHVkZSBNdWx0aSB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICgqKiBAaW5saW5lICopXG5cbiAgdmFsIGhhc2hhYmxlX3MgOiAoJ2tleSwgXykgdCAtPiAna2V5IEtleS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcG9seSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgIC0+ICdiIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIGhhc2hhYmxlIDogJ2EgSGFzaGFibGUudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgJ2Ega2V5ID0gJ2FcbiAgICB3aXRoIHR5cGUgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgdHlwZSAoJ2ssICd2KSB0XG5cbiAgbW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgICB2YWwgdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5cbiAgdmFsIHNleHBfb2ZfbV9fdFxuICAgIDogIChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKCd2IC0+IFNleHAudClcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBlcXVhbF9tX190XG4gICAgOiAgKG1vZHVsZSBFcXVhbF9tKVxuICAgIC0+ICgndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gYm9vbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2h0YmwgPSBzaWdcbiAgKCoqIEEgaGFzaCB0YWJsZSBpcyBhIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgaW1wbGVtZW50aW5nIGEgbWFwIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzLlxuICAgICAgSXQgc3VwcG9ydHMgY29uc3RhbnQtdGltZSBsb29rdXAgYW5kIGluLXBsYWNlIG1vZGlmaWNhdGlvbi5cblxuICAgICAgezEgVXNhZ2V9XG5cbiAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIHdlJ2xsIGNyZWF0ZSBhIGhhc2ggdGFibGUgd2l0aCBzdHJpbmcga2V5cyB1c2luZyB0aGVcbiAgICAgIHt7IWNyZWF0ZX1bY3JlYXRlXX0gY29uc3RydWN0b3IsIHdoaWNoIGV4cGVjdHMgYSBtb2R1bGUgZGVmaW5pbmcgdGhlIGtleSdzIHR5cGU6XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBoID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBTdHJpbmcpOztcbiAgICAgICAgdmFsIGggOiAoc3RyaW5nLCAnX2EpIEhhc2h0YmwudCA9IDxhYnN0cj5cbiAgICAgIF19XG5cbiAgICAgIFdlIGNhbiBzZXQgdGhlIHZhbHVlcyBvZiBpbmRpdmlkdWFsIGtleXMgd2l0aCB7eyFzZXR9W3NldF19LiBJZiB0aGUga2V5IGFscmVhZHkgaGFzXG4gICAgICBhIHZhbHVlLCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6NTs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImZvb1wiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJiYXJcIiB+ZGF0YTo2OztcbiAgICAgIC0gOiB1bml0ID0gKClcbiAgICAgIHZ9XG5cbiAgICAgIFdlIGNhbiBhY2Nlc3MgdmFsdWVzIGJ5IGtleSwgb3IgZHVtcCBhbGwgb2YgdGhlIGhhc2ggdGFibGUncyBkYXRhOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5maW5kIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50IG9wdGlvbiA9IFNvbWUgNlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggXCJmb29cIjs7XG4gICAgICAtIDogaW50ID0gNlxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDYpOyAoXCJiYXJcIiwgNildXG4gICAgICB2fVxuXG4gICAgICB7eyFjaGFuZ2V9W2NoYW5nZV19IGxldHMgdXMgY2hhbmdlIGEga2V5J3MgdmFsdWUgYnkgYXBwbHlpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uOlxuXG4gICAgICB7dlxuICAgICAgSGFzaHRibC5jaGFuZ2UgaCBcImZvb1wiIChmdW4geCAtPlxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IFNvbWUgKHggKiAyKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICApOztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC50b19hbGlzdCBoOztcbiAgICAgIC0gOiAoc3RyaW5nICogaW50KSBsaXN0ID0gWyhcImZvb1wiLCAxMik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cblxuICAgICAgV2UgY2FuIHVzZSB7eyFtZXJnZX1bbWVyZ2VdfSB0byBtZXJnZSB0d28gaGFzaHRhYmxlcyB3aXRoIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXJcbiAgICAgIGhvdyB3ZSBjaG9vc2UgdmFsdWVzIHdoZW4gYSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZmlyc3QgKFwibGVmdFwiKSBoYXNodGFibGUsIHRoZVxuICAgICAgc2Vjb25kIChcInJpZ2h0XCIpLCBvciBib3RoLiBIZXJlLCB3ZSdsbCBjb25zIHRoZSB2YWx1ZXMgd2hlbiBib3RoIGhhc2h0YWJsZXMgaGF2ZSBhXG4gICAgICBrZXk6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaDEgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCA1KTsgKDIsIDMyMzIpXSBpblxuICAgICAgbGV0IGgyID0gSGFzaHRibC5vZl9hbGlzdF9leG4gKG1vZHVsZSBJbnQpIFsoMSwgMyldIGluXG4gICAgICBIYXNodGJsLm1lcmdlIGgxIGgyIH5mOihmdW4gfmtleTpfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExlZnQgeCAtPiBTb21lIChgTGVmdCB4KVxuICAgICAgICB8IGBSaWdodCB4IC0+IFNvbWUgKGBSaWdodCB4KVxuICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBpZiB4PXkgdGhlbiBOb25lIGVsc2UgU29tZSAoYEJvdGggKHgseSkpXG4gICAgICApIHw+IEhhc2h0YmwudG9fYWxpc3Q7O1xuICAgICAgLSA6IChpbnQgKiBbPiBgQm90aCBvZiBpbnQgKiBpbnQgfCBgTGVmdCBvZiBpbnQgfCBgUmlnaHQgb2YgaW50IF0pIGxpc3QgPVxuICAgICAgWygyLCBgTGVmdCAzMjMyKTsgKDEsIGBCb3RoICg1LCAzKSldXG4gICAgICB2fVxuXG4gICAgICB7MSBJbnRlcmZhY2V9ICopXG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3VibW9kdWxlcyAoKiogQGlubGluZSAqKVxuXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29ycyA9IEFjY2Vzc29yc1xuICBtb2R1bGUgdHlwZSBDcmVhdG9ycyA9IENyZWF0b3JzXG4gIG1vZHVsZSB0eXBlIE11bHRpID0gTXVsdGlcbiAgbW9kdWxlIHR5cGUgU19wb2x5ID0gU19wb2x5XG4gIG1vZHVsZSB0eXBlIFNfd2l0aG91dF9zdWJtb2R1bGVzID0gU193aXRob3V0X3N1Ym1vZHVsZXNcbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG5cbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBNZXJnZV9pbnRvX2FjdGlvblxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID0gKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNcblxuICBtb2R1bGUgQ3JlYXRvcnMgKEtleSA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICAgIGVuZCkgOiBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRfID0gKCdhIEtleS50LCAnYikgdFxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuICBlbmRcblxuICBtb2R1bGUgUG9seSA6IFNfcG9seSB3aXRoIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSBpbnQgSGFzaHRibC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X3RhYmxlID0gKFN0cmluZy50LCBpbnQpIEhhc2h0YmwudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBIYXNodGJsLk0oU3RyaW5nKS50XSBzdXBwb3J0cyBkZXJpdmluZywgd2hlcmVhcyB0aGUgc2Vjb25kXG4gICAgICBzeW50YXggZG9lc24ndCAoYmVjYXVzZSBbdF9vZl9zZXhwXSBkb2Vzbid0IGtub3cgd2hhdCBjb21wYXJpc29uL2hhc2ggZnVuY3Rpb24gdG9cbiAgICAgIHVzZSkuICopXG4gIG1vZHVsZSBNIChLIDogVC5UKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndikgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBTZWUgdGhlIEphbmUgU3RyZWV0IFN0eWxlIEd1aWRlIGZvciBhbiBleHBsYW5hdGlvbiBvZiBbUHJpdmF0ZV0gc3VibW9kdWxlczpcblxuICAgIGh0dHBzOi8vb3BlbnNvdXJjZS5qYW5lc3RyZWV0LmNvbS9zdGFuZGFyZHMvI3ByaXZhdGUtc3VibW9kdWxlcyAqKVxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBDcmVhdG9yc19nZW5lcmljXG5cbiAgICB0eXBlIG5vbnJlYyAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZSA9XG4gICAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogKCdrZXksIF8pIHQgLT4gJ2tleSBIYXNoYWJsZS50XG4gIGVuZFxuZW5kXG4iLCIoKiBBIGZldyBzbWFsbCB0aGluZ3MgY29waWVkIGZyb20gb3RoZXIgcGFydHMgb2YgQmFzZSBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHVzLCBzbyB3ZVxuICAgY2FuJ3QgdXNlIHRoZW0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG4oKiBJdHMgaW1wb3J0YW50IHRoYXQgRW1wdHkgaGF2ZSBubyBhcmdzLiBJdCdzIHRlbXB0aW5nIHRvIG1ha2UgdGhpcyB0eXBlIGEgcmVjb3JkXG4gICAoZS5nLiB0byBob2xkIHRoZSBjb21wYXJlIGZ1bmN0aW9uKSwgYnV0IGEgbG90IG9mIG1lbW9yeSBpcyBzYXZlZCBieSBFbXB0eSBiZWluZyBhblxuICAgaW1tZWRpYXRlLCBzaW5jZSBhbGwgdW51c2VkIGJ1Y2tldHMgaW4gdGhlIGhhc2h0YmwgZG9uJ3QgdXNlIGFueSBtZW1vcnkgKGJlc2lkZXMgdGhlXG4gICBhcnJheSBjZWxsKSAqKVxudHlwZSAoJ2ssICd2KSB0ID1cbiAgfCBFbXB0eVxuICB8IE5vZGUgb2ZcbiAgICAgIHsgbXV0YWJsZSBsZWZ0IDogKCdrLCAndikgdFxuICAgICAgOyBrZXkgOiAna1xuICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZcbiAgICAgIDsgbXV0YWJsZSBoZWlnaHQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSByaWdodCA6ICgnaywgJ3YpIHRcbiAgICAgIH1cbiAgfCBMZWFmIG9mXG4gICAgICB7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgfVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQ7IHJpZ2h0ID0gXyB9IC0+IGhlaWdodFxuOztcblxubGV0IGludmFyaWFudCBjb21wYXJlID1cbiAgbGV0IGxlZ2FsX2xlZnRfa2V5IGtleSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiB7IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBsZWZ0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIGxlZnRfa2V5IGtleSA8IDApXG4gIGluXG4gIGxldCBsZWdhbF9yaWdodF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gcmlnaHRfa2V5OyB2YWx1ZSA9IF8gfVxuICAgIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT5cbiAgICAgIGFzc2VydCAoY29tcGFyZSByaWdodF9rZXkga2V5ID4gMClcbiAgaW5cbiAgbGV0IHJlYyBpbnYgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gKClcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBrOyB2YWx1ZSA9IF87IGhlaWdodCA9IGg7IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBobCwgaHIgPSBoZWlnaHQgbGVmdCwgaGVpZ2h0IHJpZ2h0IGluXG4gICAgICBpbnYgbGVmdDtcbiAgICAgIGludiByaWdodDtcbiAgICAgIGxlZ2FsX2xlZnRfa2V5IGsgbGVmdDtcbiAgICAgIGxlZ2FsX3JpZ2h0X2tleSBrIHJpZ2h0O1xuICAgICAgYXNzZXJ0IChoID0gSW50Lm1heCBobCBociArIDEpO1xuICAgICAgYXNzZXJ0IChhYnMgKGhsIC0gaHIpIDw9IDIpXG4gIGluXG4gIGludlxuOztcblxubGV0IGludmFyaWFudCB0IH5jb21wYXJlID0gaW52YXJpYW50IGNvbXBhcmUgdFxuXG4oKiBJbiB0aGUgZm9sbG93aW5nIGNvbW1lbnRzLFxuICAgJ3QgaXMgYmFsYW5jZWQnIG1lYW5zIHRoYXQgJ2ludmFyaWFudCB0JyBkb2VzIG5vdFxuICAgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhpcyBpbXBsaWVzIG9mIGNvdXJzZSB0aGF0IGVhY2ggbm9kZSdzIGhlaWdodCBmaWVsZCBpc1xuICAgY29ycmVjdC5cbiAgICd0IGlzIGJhbGFuY2VhYmxlJyBtZWFucyB0aGF0IGhlaWdodCBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgb2YgdFxuICAgZGlmZmVyIGJ5IGF0IG1vc3QgMy4gKilcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgaGF2ZSBjb3JyZWN0IGhlaWdodHNcbiAgIEBwb3N0OiBvdXRwdXQgaGFzIHRoZSBjb3JyZWN0IGhlaWdodCAqKVxubGV0IHVwZGF0ZV9oZWlnaHQgPSBmdW5jdGlvblxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBvbGRfaGVpZ2h0OyByaWdodCB9IGFzIHgpIC0+XG4gICAgbGV0IG5ld19oZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgbGVmdCkgKGhlaWdodCByaWdodCkgKyAxIGluXG4gICAgaWYgbmV3X2hlaWdodCA8PiBvbGRfaGVpZ2h0IHRoZW4geC5oZWlnaHQgPC0gbmV3X2hlaWdodFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogbGVmdCBhbmQgcmlnaHQgc3VidHJlZXMgYXJlIGJhbGFuY2VkXG4gICBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcG9zdDogb3V0cHV0IGlzIGJhbGFuY2VkIChpbiBwYXJ0aWN1bGFyLCBoZWlnaHQgaXMgY29ycmVjdCkgKilcbmxldCBiYWxhbmNlIHRyZWUgPVxuICBtYXRjaCB0cmVlIHdpdGhcbiAgfCBFbXB0eSB8IExlYWYgXyAtPiB0cmVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcm9vdF9ub2RlKSAtPlxuICAgIGxldCBobCA9IGhlaWdodCBsZWZ0XG4gICAgYW5kIGhyID0gaGVpZ2h0IHJpZ2h0IGluXG4gICAgKCogKyAyIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50LCBsb3dlcmluZyBpdCB0byAxIHdpbGwgYnJlYWsgdGhlIExlYWZcbiAgICAgICBhc3N1bXB0aW9ucyBpbiB0aGUgY29kZSBiZWxvdywgYW5kIHdpbGwgZm9yY2UgdXMgdG8gcHJvbW90ZSBsZWFmIG5vZGVzIGluXG4gICAgICAgdGhlIGJhbGFuY2Ugcm91dGluZS4gSXQncyBhbHNvIGZhc3Rlciwgc2luY2UgaXQgd2lsbCBiYWxhbmNlIGxlc3Mgb2Z0ZW4uXG4gICAgICAgTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSBpcyBkZWxpY2F0ZS4gIFRoZSB1cGRhdGVfaGVpZ2h0IGNhbGxzIG11c3RcbiAgICAgICBvY2N1ciBpbiB0aGUgY29ycmVjdCBvcmRlciwgc2luY2UgdXBkYXRlX2hlaWdodCBhc3N1bWVzIGl0cyBjaGlsZHJlbiBoYXZlXG4gICAgICAgdGhlIGNvcnJlY3QgaGVpZ2h0cy4gICopXG4gICAgaWYgaGwgPiBociArIDJcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGxlZnQgd2l0aFxuICAgICAgKCogSXQgY2Fubm90IGJlIGEgbGVhZiwgYmVjYXVzZSBldmVuIGlmIHJpZ2h0IGlzIGVtcHR5LCBhIGxlYWZcbiAgICAgICAgIGlzIG9ubHkgaGVpZ2h0IDEgKilcbiAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IE5vZGVcbiAgICAgICAgICAoeyBsZWZ0ID0gbGVmdF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgbGVmdF9ub2RlKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGVmdF9ub2RlX2xlZnQgPj0gaGVpZ2h0IGxlZnRfbm9kZV9yaWdodFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUubGVmdCA8LSBsZWZ0X25vZGVfcmlnaHQ7XG4gICAgICAgICAgbGVmdF9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICBsZWZ0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBpZiByaWdodCBpcyBhIGxlYWYsIHRoZW4gbGVmdCBtdXN0IGJlIGVtcHR5LiBUaGF0IG1lYW5zXG4gICAgICAgICAgICAgaGVpZ2h0IGlzIDIuIEV2ZW4gaWYgaHIgaXMgZW1wdHkgd2Ugc3RpbGwgY2FuJ3QgZ2V0IGhlcmUuICopXG4gICAgICAgICAgbWF0Y2ggbGVmdF9ub2RlX3JpZ2h0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gbHJfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IGxyX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIGxyX25vZGUpIC0+XG4gICAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gbHJfbGVmdDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxyX3JpZ2h0O1xuICAgICAgICAgICAgbHJfbm9kZS5yaWdodCA8LSB0cmVlO1xuICAgICAgICAgICAgbHJfbm9kZS5sZWZ0IDwtIGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICAgIGxlZnRfbm9kZV9yaWdodCkpXG4gICAgZWxzZSBpZiBociA+IGhsICsgMlxuICAgIHRoZW4gKFxuICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgcmlnaHQgY2Fubm90IGJlIGEgbGVhZiAqKVxuICAgICAgbWF0Y2ggcmlnaHQgd2l0aFxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgICAgOyBrZXkgPSBfXG4gICAgICAgICAgIDsgdmFsdWUgPSBfXG4gICAgICAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgICAgICA7IHJpZ2h0ID0gcmlnaHRfbm9kZV9yaWdodFxuICAgICAgICAgICB9IGFzIHJpZ2h0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCByaWdodF9ub2RlX3JpZ2h0ID49IGhlaWdodCByaWdodF9ub2RlX2xlZnRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcm9vdF9ub2RlLnJpZ2h0IDwtIHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICByaWdodClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogc2VlIGFib3ZlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB3aHkgdGhpcyBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICAgICAgbWF0Y2ggcmlnaHRfbm9kZV9sZWZ0IHdpdGhcbiAgICAgICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTm9kZVxuICAgICAgICAgICAgICAoeyBsZWZ0ID0gcmxfbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IHJsX3JpZ2h0IH0gYXNcbiAgICAgICAgICAgICAgIHJsX25vZGUpIC0+XG4gICAgICAgICAgICByaWdodF9ub2RlLmxlZnQgPC0gcmxfcmlnaHQ7XG4gICAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmxfbGVmdDtcbiAgICAgICAgICAgIHJsX25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgICAgcmxfbm9kZS5yaWdodCA8LSByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHQ7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdDtcbiAgICAgICAgICAgIHJpZ2h0X25vZGVfbGVmdCkpXG4gICAgZWxzZSAoXG4gICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICB0cmVlKVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5cbigqIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwcmU6IGFicyAoaGVpZ2h0IChyaWdodCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9sZWZ0IG5vZGUgdHJlZSA9XG4gIGxldCB0cmVlID0gYmFsYW5jZSB0cmVlIGluXG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyByKSAtPlxuICAgIGlmIHBoeXNfZXF1YWwgbGVmdCB0cmVlIHRoZW4gKCkgZWxzZSByLmxlZnQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKGxlZnQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcbmxldCBzZXRfcmlnaHQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0ID0gXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCByaWdodCB0cmVlIHRoZW4gKCkgZWxzZSByLnJpZ2h0IDwtIHRyZWU7XG4gICAgdXBkYXRlX2hlaWdodCBub2RlXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIEBwcmU6IHQgaXMgYmFsYW5jZWQuXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VkLCB3aXRoIG5ldyBub2RlIGluc2VydGVkXG4gICBAcG9zdDogIWFkZGVkID0gdHJ1ZSBpZmYgdGhlIHNoYXBlIG9mIHRoZSBpbnB1dCB0cmVlIGNoYW5nZWQuICAqKVxubGV0IGFkZCA9XG4gIGxldCByZWMgYWRkIHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgIExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICAgIHwgTGVhZiAoeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gYXMgcikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrJyBrIGluXG4gICAgICAoKiBUaGlzIGNvbXBhcmUgaXMgcmV2ZXJzZWQgb24gcHVycG9zZSwgd2UgYXJlIHByZXRlbmRpbmdcbiAgICAgICAgIHRoYXQgdGhlIGxlYWYgd2FzIGp1c3QgaW5zZXJ0ZWQgaW5zdGVhZCBvZiB0aGUgb3RoZXIgd2F5XG4gICAgICAgICByb3VuZCwgdGhhdCB3YXkgd2Ugb25seSBhbGxvY2F0ZSBvbmUgbm9kZS4gKilcbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHY7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWRkZWQgOj0gdHJ1ZTtcbiAgICAgICAgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBOb2RlIHsgbGVmdCA9IHQ7IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gMjsgcmlnaHQgPSBFbXB0eSB9XG4gICAgICAgIGVsc2UgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IHQgfSlcbiAgICB8IE5vZGUgKHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkZWQgOj0gZmFsc2U7XG4gICAgICAgIGlmIHJlcGxhY2UgdGhlbiByLnZhbHVlIDwtIHYpXG4gICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICB0aGVuIHNldF9sZWZ0IHQgKGFkZCBsZWZ0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrIHYpXG4gICAgICBlbHNlIHNldF9yaWdodCB0IChhZGQgcmlnaHQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdik7XG4gICAgICB0XG4gIGluXG4gIGZ1biB0IH5yZXBsYWNlIH5jb21wYXJlIH5hZGRlZCB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IHQgPSBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUga2V5IGRhdGEgaW5cbiAgICBpZiAhYWRkZWQgdGhlbiBiYWxhbmNlIHQgZWxzZSB0XG47O1xuXG5sZXQgcmVjIGZpcnN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gIHwgTm9kZSB7IGxlZnQgPSBFbXB0eTsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBTb21lIChrLCB2KVxuICB8IE5vZGUgeyBsZWZ0ID0gbDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPiBmaXJzdCBsXG47O1xuXG5sZXQgcmVjIGxhc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gciB9IC0+IGxhc3QgclxuOztcblxuXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYyBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNvbXBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+aWZfbm90X2ZvdW5kXG4gID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrIGFyZzEgYXJnMlxuICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZSBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgIGlmIGMgPSAwXG4gICAgdGhlbiBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5OmsnIH5kYXRhOnYgYXJnMSBhcmcyXG4gICAgZWxzZVxuICAgICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgICAoaWYgYyA8IDAgdGhlbiBsZWZ0IGVsc2UgcmlnaHQpXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIGtcbiAgICAgICAgYXJnMVxuICAgICAgICBhcmcyXG4gICAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgICB+aWZfZm91bmRcbiAgICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleTpfIH5kYXRhICgpICgpID0gaWZfZm91bmQgZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhICgpICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgKCkgKCkgPSBpZl9ub3RfZm91bmQga2V5IGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgKClcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnICgpID0gaWZfZm91bmQgZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5IH5kYXRhIGFyZyAoKSA9IGlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSBhcmcgKCkgPSBpZl9ub3RfZm91bmQga2V5IGFyZyBpblxuICBmdW4gdCB+Y29tcGFyZSBrIH5hIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIC0+XG4gICAgZmluZGlfYW5kX2NhbGxfaW1wbFxuICAgICAgdFxuICAgICAgfmNvbXBhcmVcbiAgICAgIGtcbiAgICAgIGFcbiAgICAgICgpXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnMSBhcmcyID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZzEgYXJnMiA9IGlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgYlxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZCA9XG4gIGxldCBpZl9mb3VuZCB2ID0gU29tZSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IE5vbmUgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayAtPiBmaW5kX2FuZF9jYWxsIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSA9XG4gIGxldCBpZl9mb3VuZCBfID0gdHJ1ZSBpblxuICBsZXQgaWZfbm90X2ZvdW5kIF8gPSBmYWxzZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgcmVtb3ZlID1cbiAgbGV0IHJlYyBtaW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgXyAtPiB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IG1pbl9lbHQgbGVmdFxuICBpblxuICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0IHRyZWUgPVxuICAgIG1hdGNoIHRyZWUgd2l0aFxuICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBMZWFmIF8gLT4gRW1wdHkgKCogVGhpcyBtdXN0IGJlIHRoZSByb290ICopXG4gICAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT4gcmlnaHRcbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gRW1wdHkgfSAtPlxuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IExlYWYgXzsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIEVtcHR5O1xuICAgICAgdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gYXMgbm9kZSAtPlxuICAgICAgc2V0X2xlZnQgbm9kZSAocmVtb3ZlX21pbl9lbHQgbGVmdCk7XG4gICAgICB0cmVlXG4gIGluXG4gIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCB0IC0+IHRcbiAgICB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT5cbiAgICAgIGxldCB0cmVlID0gbWluX2VsdCB0MiBpblxuICAgICAgKG1hdGNoIHRyZWUgd2l0aFxuICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICAgICAgIGxldCB0MiA9IGJhbGFuY2UgKHJlbW92ZV9taW5fZWx0IHQyKSBpblxuICAgICAgICAgTm9kZVxuICAgICAgICAgICB7IGxlZnQgPSB0MVxuICAgICAgICAgICA7IGtleSA9IGtcbiAgICAgICAgICAgOyB2YWx1ZSA9IHZcbiAgICAgICAgICAgOyBoZWlnaHQgPSBJbnQubWF4IChoZWlnaHQgdDEpIChoZWlnaHQgdDIpICsgMVxuICAgICAgICAgICA7IHJpZ2h0ID0gdDJcbiAgICAgICAgICAgfVxuICAgICAgIHwgTm9kZSBfIGFzIG5vZGUgLT5cbiAgICAgICAgIHNldF9yaWdodCBub2RlIChyZW1vdmVfbWluX2VsdCB0Mik7XG4gICAgICAgICBzZXRfbGVmdCBub2RlIHQxO1xuICAgICAgICAgbm9kZSlcbiAgaW5cbiAgbGV0IHJlYyByZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgayA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPlxuICAgICAgcmVtb3ZlZCA6PSBmYWxzZTtcbiAgICAgIEVtcHR5XG4gICAgfCBMZWFmIHsga2V5ID0gayc7IHZhbHVlID0gXyB9IC0+XG4gICAgICBpZiBjb21wYXJlIGsgaycgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBFbXB0eSlcbiAgICAgIGVsc2UgKFxuICAgICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgICB0KVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGsnOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgICBpZiBjID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZWQgOj0gdHJ1ZTtcbiAgICAgICAgbWVyZ2UgbGVmdCByaWdodClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBzZXRfbGVmdCB0IChyZW1vdmUgbGVmdCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gICAgICBlbHNlIChcbiAgICAgICAgc2V0X3JpZ2h0IHQgKHJlbW92ZSByaWdodCByZW1vdmVkIGNvbXBhcmUgayk7XG4gICAgICAgIHQpXG4gIGluXG4gIGZ1biB0IH5yZW1vdmVkIH5jb21wYXJlIGsgLT4gYmFsYW5jZSAocmVtb3ZlIHQgcmVtb3ZlZCBjb21wYXJlIGspXG47O1xuXG5sZXQgcmVjIGZvbGQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IGluaXRcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGEgaW5pdFxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfVxuICAgICAgfSAtPiBmIH5rZXk6cmtleSB+ZGF0YTpyZGF0YSAoZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IEVtcHR5XG4gICAgICB9IC0+IGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBFbXB0eVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgaW5pdClcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH0gfVxuICAgIC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGZvbGQgbGVmdCB+aW5pdCB+ZikpXG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfTsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH1cbiAgICAtPiBmb2xkIHJpZ2h0IH5pbml0OihmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKSB+ZlxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSkgfmZcbjs7XG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBMZWFmIHsga2V5OyB2YWx1ZSA9IGRhdGEgfSAtPiBmIH5rZXkgfmRhdGFcbiAgfCBOb2RlIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0IH0gLT5cbiAgICBpdGVyIGxlZnQgfmY7XG4gICAgZiB+a2V5IH5kYXRhO1xuICAgIGl0ZXIgcmlnaHQgfmZcbjs7XG5cbmxldCByZWMgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKHsga2V5OyB2YWx1ZSB9IGFzIHQpIC0+IHQudmFsdWUgPC0gZiB+a2V5IH5kYXRhOnZhbHVlXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXk7IHZhbHVlOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHQpIC0+XG4gICAgbWFwaV9pbnBsYWNlIH5mIGxlZnQ7XG4gICAgdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWU7XG4gICAgbWFwaV9pbnBsYWNlIH5mIHJpZ2h0XG47O1xuXG5sZXQgY2hvb3NlX2V4biA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0F2bHRyZWUuY2hvb3NlX2V4bl0gb2YgZW1wdHkgaGFzaHRibFwiIFtdKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlOyBfIH0gfCBOb2RlIHsga2V5OyB2YWx1ZTsgXyB9IC0+IGtleSwgdmFsdWVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaHRibF9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleS5TXG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgaGFzaF9wYXJhbSA9IEhhc2hhYmxlLmhhc2hfcGFyYW1cbmxldCBoYXNoID0gSGFzaGFibGUuaGFzaFxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbnR5cGUgKCdrLCAndikgdCA9XG4gIHsgbXV0YWJsZSB0YWJsZSA6ICgnaywgJ3YpIEF2bHRyZWUudCBhcnJheVxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgZ3Jvd3RoX2FsbG93ZWQgOiBib29sXG4gIDsgaGFzaGFibGUgOiAnayBIYXNoYWJsZS50XG4gIDsgbXV0YWJsZSBtdXRhdGlvbl9hbGxvd2VkIDogYm9vbCAoKiBTZXQgZHVyaW5nIGFsbCBpdGVyYXRpb24gb3BlcmF0aW9ucyAqKVxuICB9XG5cbnR5cGUgJ2Ega2V5ID0gJ2FcblxubGV0IHNleHBfb2Zfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdFxubGV0IGNvbXBhcmVfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmVcblxubGV0IGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQgPVxuICBpZiBub3QgdC5tdXRhdGlvbl9hbGxvd2VkIHRoZW4gZmFpbHdpdGggXCJIYXNodGJsOiBtdXRhdGlvbiBub3QgYWxsb3dlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbjs7XG5cbmxldCB3aXRob3V0X211dGF0aW5nIHQgZiA9XG4gIGlmIHQubXV0YXRpb25fYWxsb3dlZFxuICB0aGVuIChcbiAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgcmFpc2UgZXhuKVxuICBlbHNlIGYgKClcbjs7XG5cbigqKiBJbnRlcm5hbGx5IHVzZSBhIG1heGltdW0gc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgMi4gUmV2ZXJzZXMgdGhlIGFib3ZlIHRvIGZpbmQgdGhlXG4gICAgZmxvb3IgcG93ZXIgb2YgMiBiZWxvdyB0aGUgc3lzdGVtIG1heCBhcnJheSBsZW5ndGggKilcbmxldCBtYXhfdGFibGVfbGVuZ3RoID0gSW50LmZsb29yX3BvdzIgQXJyYXkubWF4X2xlbmd0aFxuXG4oKiBUaGUgZGVmYXVsdCBzaXplIGlzIGNob3NlbiB0byBiZSAwIChhcyBvcHBvc2VkIHRvIDEyOCBhcyBpdCB3YXMgYmVmb3JlKSBiZWNhdXNlOlxuICAgLSAxMjggY2FuIGNyZWF0ZSBzdWJzdGFudGlhbCBtZW1vcnkgb3ZlcmhlYWQgKHgxMCkgd2hlbiBjcmVhdGluZyBtYW55IHRhYmxlcywgbW9zdFxuICAgICBvZiB3aGljaCBhcmUgbm90IGJpZyAoc2F5LCBpZiB5b3UgaGF2ZSBhIGhhc2h0Ymwgb2YgaGFzaHRibCkuIEFuZCBtZW1vcnkgb3ZlcmhlYWQgaXNcbiAgICAgbm90IHRoYXQgZWFzeSB0byBwcm9maWxlLlxuICAgLSBpZiBhIGhhc2h0YmwgaXMgZ29pbmcgdG8gZ3JvdywgaXQncyBub3QgY2xlYXIgd2h5IDEyOCBpcyBtYXJrZWRseSBiZXR0ZXIgdGhhbiBvdGhlclxuICAgICBzaXplcyAoaWYgeW91IGdvaW5nIHRvIHN0aWNrIDEwMDAgZWxlbWVudHMsIHlvdSdyZSBnb2luZyB0byBncm93IHRoZSBoYXNodGFibGUgb25jZVxuICAgICBvciB0d2ljZSBhbnl3YXkpXG4gICAtIGluIG90aGVyIGxhbmd1YWdlcyAobGlrZSBydXN0LCBweXRob24sIGFuZCBhcHBhcmVudGx5IGdvKSwgdGhlIGRlZmF1bHQgaXMgYWxzbyBhXG4gICAgIHNtYWxsIHNpemUuICopXG5sZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAwKSB+aGFzaGFibGUgKCkgPVxuICBsZXQgc2l6ZSA9IEludC5taW4gKEludC5tYXggMSBzaXplKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gIGxldCBzaXplID0gSW50LmNlaWxfcG93MiBzaXplIGluXG4gIHsgdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpzaXplIEF2bHRyZWUuZW1wdHlcbiAgOyBsZW5ndGggPSAwXG4gIDsgZ3Jvd3RoX2FsbG93ZWRcbiAgOyBoYXNoYWJsZVxuICA7IG11dGF0aW9uX2FsbG93ZWQgPSB0cnVlXG4gIH1cbjs7XG5cbigqKiBTdXBwbGVtZW50YWwgaGFzaC4gVGhpcyBtYXkgbm90IGJlIG5lY2Vzc2FyeSwgaXQgaXMgaW50ZW5kZWQgYXMgYSBkZWZlbnNlIGFnYWluc3QgcG9vclxuICAgIGhhc2ggZnVuY3Rpb25zLCBmb3Igd2hpY2ggdGhlIHBvd2VyIG9mIDIgc2l6ZWQgdGFibGUgd2lsbCBiZSBlc3BlY2lhbGx5IHNlbnNpdGl2ZS5cbiAgICBXaXRoIHNvbWUgdGVzdGluZyB3ZSBtYXkgY2hvb3NlIHRvIGFkZCBpdCwgYnV0IHRoaXMgdGFibGUgaXMgZGVzaWduZWQgdG8gYmUgcm9idXN0IHRvXG4gICAgY29sbGlzaW9ucywgYW5kIGluIG1vc3Qgb2YgbXkgdGVzdGluZyB0aGlzIGRlZ3JhZGVzIHBlcmZvcm1hbmNlLiAqKVxubGV0IF9zdXBwbGVtZW50YWxfaGFzaCBoID1cbiAgbGV0IGggPSBoIGx4b3IgKChoIGxzciAyMCkgbHhvciAoaCBsc3IgMTIpKSBpblxuICBoIGx4b3IgKGggbHNyIDcpIGx4b3IgKGggbHNyIDQpXG47O1xuXG5sZXQgc2xvdCB0IGtleSA9XG4gIGxldCBoYXNoID0gdC5oYXNoYWJsZS5IYXNoYWJsZS5oYXNoIGtleSBpblxuICAoKiB0aGlzIGlzIGFsd2F5cyBub24tbmVnYXRpdmUgYmVjYXVzZSB3ZSBkbyBbbGFuZF0gd2l0aCBub24tbmVnYXRpdmUgbnVtYmVyICopXG4gIGhhc2ggbGFuZCAoQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxKVxuOztcblxubGV0IGFkZF93b3JrZXIgdCB+cmVwbGFjZSB+a2V5IH5kYXRhID1cbiAgbGV0IGkgPSBzbG90IHQga2V5IGluXG4gIGxldCByb290ID0gdC50YWJsZS4oaSkgaW5cbiAgbGV0IGFkZGVkID0gIChyZWYgZmFsc2UpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgKCogVGhlIGF2bCB0cmVlIG1pZ2h0IHJlcGxhY2UgdGhlIHZhbHVlIFtyZXBsYWNlPXRydWVdIG9yIGRvIG5vdGhpbmcgW3JlcGxhY2U9ZmFsc2VdXG4gICAgICAgdG8gdGhlIGVudHJ5LCBpbiB0aGF0IGNhc2UgdGhlIHRhYmxlIGRpZCBub3QgZ2V0IGJpZ2dlciwgc28gd2Ugc2hvdWxkIG5vdFxuICAgICAgIGluY3JlbWVudCBsZW5ndGgsIHdlIHBhc3MgaW4gdGhlIGJvb2wgcmVmIHQuYWRkZWQgc28gdGhhdCBpdCBjYW4gdGVsbCB1cyB3aGV0aGVyXG4gICAgICAgaXQgYWRkZWQgb3IgcmVwbGFjZWQuIFdlIGRvIGl0IHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb24uIFNpbmNlIHRoZSBib29sXG4gICAgICAgaXMgYW4gaW1tZWRpYXRlIGl0IGRvZXMgbm90IGdvIHRocm91Z2ggdGhlIHdyaXRlIGJhcnJpZXIuICopXG4gICAgQXZsdHJlZS5hZGQgfnJlcGxhY2Ugcm9vdCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkgfmFkZGVkIH5rZXkgfmRhdGFcbiAgaW5cbiAgaWYgIWFkZGVkIHRoZW4gdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxO1xuICAoKiBUaGlzIGxpdHRsZSBvcHRpbWl6YXRpb24gc2F2ZXMgYSBjYW1sX21vZGlmeSB3aGVuIHRoZSB0cmVlXG4gICAgIGhhc24ndCBiZWVuIHJlYmFsYW5jZWQuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXdfcm9vdCByb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICAhYWRkZWRcbjs7XG5cbmxldCBtYXliZV9yZXNpemVfdGFibGUgdCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICBsZXQgc2hvdWxkX2dyb3cgPSB0Lmxlbmd0aCA+IGxlbiBpblxuICBpZiBzaG91bGRfZ3JvdyAmJiB0Lmdyb3d0aF9hbGxvd2VkXG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyYXlfbGVuZ3RoID0gSW50Lm1pbiAobGVuICogMikgbWF4X3RhYmxlX2xlbmd0aCBpblxuICAgIGlmIG5ld19hcnJheV9sZW5ndGggPiBsZW5cbiAgICB0aGVuIChcbiAgICAgIGxldCBuZXdfdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpuZXdfYXJyYXlfbGVuZ3RoIEF2bHRyZWUuZW1wdHkgaW5cbiAgICAgIGxldCBvbGRfdGFibGUgPSB0LnRhYmxlIGluXG4gICAgICB0LnRhYmxlIDwtIG5ld190YWJsZTtcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgZiB+a2V5IH5kYXRhID0gaWdub3JlIChhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIDogYm9vbCkgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2xkX3RhYmxlIC0gMSBkb1xuICAgICAgICBBdmx0cmVlLml0ZXIgb2xkX3RhYmxlLihpKSB+ZlxuICAgICAgZG9uZSkpXG47O1xuXG5sZXQgc2V0IHQgfmtleSB+ZGF0YSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGlnbm9yZSAoYWRkX3dvcmtlciB+cmVwbGFjZTp0cnVlIHQgfmtleSB+ZGF0YSA6IGJvb2wpO1xuICBtYXliZV9yZXNpemVfdGFibGUgdFxuOztcblxubGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBsZXQgYWRkZWQgPSBhZGRfd29ya2VyIH5yZXBsYWNlOmZhbHNlIHQgfmtleSB+ZGF0YSBpblxuICBpZiBhZGRlZFxuICB0aGVuIChcbiAgICBtYXliZV9yZXNpemVfdGFibGUgdDtcbiAgICBgT2spXG4gIGVsc2UgYER1cGxpY2F0ZVxuOztcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gIHwgYE9rIC0+ICgpXG4gIHwgYER1cGxpY2F0ZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5IHQgaW5cbiAgICBsZXQgZXJyb3IgPSBFcnJvci5jcmVhdGUgXCJIYXNodGJsLmFkZF9leG4gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBrZXkgc2V4cF9vZl9rZXkgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IGNsZWFyIHQgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgdC50YWJsZS4oaSkgPC0gQXZsdHJlZS5lbXB0eVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMiB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwyXG4gICAgICB0cmVlXG4gICAgICB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgICAgIGtleVxuICAgICAgfmFcbiAgICAgIH5iXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCBrZXkgLT4gZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSB0IGtleSA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGZhbHNlXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSBfIH0gLT4gY29tcGFyZV9rZXkgdCBrIGtleSA9IDBcbiAgfCB0cmVlIC0+IEF2bHRyZWUubWVtIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuOztcblxubGV0IHJlbW92ZSB0IGtleSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZF9vcl9yZW1vdmVkID0gIChyZWYgZmFsc2UpIGluXG4gIGxldCBuZXdfcm9vdCA9XG4gICAgQXZsdHJlZS5yZW1vdmUgcm9vdCB+cmVtb3ZlZDphZGRlZF9vcl9yZW1vdmVkIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXlcbiAgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIHJvb3QgbmV3X3Jvb3QpIHRoZW4gdC50YWJsZS4oaSkgPC0gbmV3X3Jvb3Q7XG4gIGlmICFhZGRlZF9vcl9yZW1vdmVkIHRoZW4gdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGlmIGxlbmd0aCB0ID0gMFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICAgIGxldCBtID0gdC5tdXRhdGlvbl9hbGxvd2VkIGluXG4gICAgbWF0Y2hcbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHQudGFibGUgaSB3aXRoXG4gICAgICAgIHwgQXZsdHJlZS5FbXB0eSAtPiAoKVxuICAgICAgICB8IEF2bHRyZWUuTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gYWNjIDo9IGYgfmtleSB+ZGF0YSAhYWNjXG4gICAgICAgIHwgYnVja2V0IC0+IGFjYyA6PSBBdmx0cmVlLmZvbGQgYnVja2V0IH5pbml0OiFhY2MgfmZcbiAgICAgIGRvbmVcbiAgICB3aXRoXG4gICAgfCAoKSAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICAhYWNjXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbTtcbiAgICAgIHJhaXNlIGV4bilcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBtID0gdC5tdXRhdGlvbl9hbGxvd2VkIGluXG4gICAgbWF0Y2hcbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBmYWxzZTtcbiAgICAgIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHQudGFibGUgaSB3aXRoXG4gICAgICAgIHwgQXZsdHJlZS5FbXB0eSAtPiAoKVxuICAgICAgICB8IEF2bHRyZWUuTGVhZiB7IGtleTsgdmFsdWUgPSBkYXRhIH0gLT4gZiB+a2V5IH5kYXRhXG4gICAgICAgIHwgYnVja2V0IC0+IEF2bHRyZWUuaXRlciBidWNrZXQgfmZcbiAgICAgIGRvbmVcbiAgICB3aXRoXG4gICAgfCAoKSAtPiB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gbVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBpdGVyX2tleXMgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cblxubGV0IHJlYyBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgaSA9XG4gIGxldCBhdmx0cmVlID0gQXJyYXkudW5zYWZlX2dldCB0YWJsZSBpIGluXG4gIGlmIEF2bHRyZWUuaXNfZW1wdHkgYXZsdHJlZVxuICB0aGVuIGNob29zZV9ub25lbXB0eSB0YWJsZSAoKGkgKyAxKSBsYW5kIChBcnJheS5sZW5ndGggdGFibGUgLSAxKSlcbiAgZWxzZSBBdmx0cmVlLmNob29zZV9leG4gYXZsdHJlZVxuOztcblxubGV0IGNob29zZV9leG4gdCA9XG4gIGlmIHQubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltIYXNodGJsLmNob29zZV9leG5dIG9mIGVtcHR5IGhhc2h0YmxcIiBbXSk7XG4gIGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDBcbjs7XG5cbmxldCBjaG9vc2UgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoY2hvb3NlX25vbmVtcHR5IHQudGFibGUgMClcblxubGV0IGNob29zZV9yYW5kb21seV9ub25lbXB0eSB+cmFuZG9tX3N0YXRlIHQgPVxuICBsZXQgc3RhcnRfaWR4ID0gUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKEFycmF5Lmxlbmd0aCB0LnRhYmxlKSBpblxuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSBzdGFydF9pZHhcbjs7XG5cbmxldCBjaG9vc2VfcmFuZG9tbHkgPyhyYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCA9XG4gIGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoY2hvb3NlX3JhbmRvbWx5X25vbmVtcHR5IH5yYW5kb21fc3RhdGUgdClcbjs7XG5cbmxldCBjaG9vc2VfcmFuZG9tbHlfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfcmFuZG9tbHlfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2VfcmFuZG9tbHlfbm9uZW1wdHkgfnJhbmRvbV9zdGF0ZSB0XG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgaW52YXJpYW50X2RhdGEgdCA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC50YWJsZSAtIDEgZG9cbiAgICBBdmx0cmVlLmludmFyaWFudCB0LnRhYmxlLihpKSB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgZG9uZTtcbiAgbGV0IHJlYWxfbGVuID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgaSAtPlxuICAgICAgaW52YXJpYW50X2tleSBrZXk7XG4gICAgICBpbnZhcmlhbnRfZGF0YSBkYXRhO1xuICAgICAgaSArIDEpXG4gIGluXG4gIGFzc2VydCAocmVhbF9sZW4gPSB0Lmxlbmd0aClcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBpZl9mb3VuZCB2IF8gPSB2IGluXG4gIGxldCBpZl9ub3RfZm91bmQgayB0ID1cbiAgICByYWlzZVxuICAgICAgKE5vdF9mb3VuZF9zIChMaXN0IFsgQXRvbSBcIkhhc2h0YmwuZmluZF9leG46IG5vdCBmb3VuZFwiOyB0Lmhhc2hhYmxlLnNleHBfb2ZfdCBrIF0pKVxuICBpblxuICBsZXQgZmluZF9leG4gdCBrZXkgPSBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YTp0IH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9leG5cbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSkgW0Bub250YWlsXVxuOztcblxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGZvcl9hbGxpIHQgfmYgPSBub3QgKGV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gbm90IChmIH5rZXkgfmRhdGEpKSlcbmxldCBmb3JfYWxsIHQgfmYgPSBub3QgKGV4aXN0c2kgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBub3QgKGYgZGF0YSkpKVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjYyArIDEgZWxzZSBhY2MpIFtAbm9udGFpbFxuICBdXG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleTpfIH5kYXRhIGFjYyAtPiBpZiBmIGRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gc2V0IG5ld190IH5rZXkgfmRhdGE6KGYgfmtleSB+ZGF0YSkpO1xuICBuZXdfdFxuOztcblxubGV0IG1hcCB0IH5mID0gbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxubGV0IGNvcHkgdCA9IG1hcCB0IH5mOkZuLmlkXG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgU29tZSBuZXdfZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgTm9uZSAtPiAoKSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cblxubGV0IGZpbHRlcmkgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcmkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpIFtAbm9udGFpbF1cbmxldCBmaWx0ZXJfa2V5cyB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KSBbQG5vbnRhaWxdXG5cbmxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID1cbiAgbGV0IHQwID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgbGV0IHQxID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgbmV3X2RhdGEgLT4gc2V0IHQwIH5rZXkgfmRhdGE6bmV3X2RhdGFcbiAgICB8IFNlY29uZCBuZXdfZGF0YSAtPiBzZXQgdDEgfmtleSB+ZGF0YTpuZXdfZGF0YSk7XG4gIHQwLCB0MVxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9IHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpIFxuICBbQG5vbnRhaWxdXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cblxubGV0IGZpbmRfb3JfYWRkIHQgaWQgfmRlZmF1bHQ6KGRlZmF1bHQgW0Bsb2NhbF0pID1cbiAgZmluZF9hbmRfY2FsbFxuICAgIHRcbiAgICBpZFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgLT4gZGF0YSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4ga2V5IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQgKCkgaW5cbiAgICAgIHNldCB0IH5rZXkgfmRhdGE6ZGVmYXVsdDtcbiAgICAgIGRlZmF1bHQpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBmaW5kaV9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGxcbiAgICB0XG4gICAgaWRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSAtPlxuICAgICAgbGV0IGRlZmF1bHQgPSBkZWZhdWx0IGtleSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdCkgW0Bub250YWlsXVxuOztcblxuKCogU29tZSBoYXNodGJsIGltcGxlbWVudGF0aW9ucyBtYXkgYmUgYWJsZSB0byBwZXJmb3JtIHRoaXMgbW9yZSBlZmZpY2llbnRseSB0aGFuIHR3b1xuICAgc2VwYXJhdGUgbG9va3VwcyAqKVxubGV0IGZpbmRfYW5kX3JlbW92ZSB0IGlkID1cbiAgbGV0IHJlc3VsdCA9IGZpbmQgdCBpZCBpblxuICBpZiBPcHRpb24uaXNfc29tZSByZXN1bHQgdGhlbiByZW1vdmUgdCBpZDtcbiAgcmVzdWx0XG47O1xuXG5cbmxldCBjaGFuZ2UgdCBpZCB+ZiA9XG4gIG1hdGNoIGYgKGZpbmQgdCBpZCkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHQgaWRcbiAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleTppZCB+ZGF0YVxuOztcblxubGV0IHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgPVxuICBsZXQgZGF0YSA9IGYgKGZpbmQgdCBpZCkgaW5cbiAgc2V0IHQgfmtleTppZCB+ZGF0YTtcbiAgZGF0YVxuOztcblxubGV0IHVwZGF0ZSB0IGlkIH5mID0gaWdub3JlICh1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mIDogXylcblxubGV0IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5ID1cbiAgaWYgcmVtb3ZlX2lmX3plcm9cbiAgdGhlblxuICAgIGNoYW5nZSB0IGtleSB+ZjooZnVuIG9wdCAtPlxuICAgICAgbWF0Y2ggYnkgKyBPcHRpb24udmFsdWUgb3B0IH5kZWZhdWx0OjAgd2l0aFxuICAgICAgfCAwIC0+IE5vbmVcbiAgICAgIHwgbiAtPiBTb21lIG4pXG4gIGVsc2VcbiAgICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYnlcbiAgICAgIHwgU29tZSBpIC0+IGJ5ICsgaSlcbjs7XG5cbmxldCBpbmNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnlcbmxldCBkZWNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgKC1ieSlcblxubGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFsgZGF0YSBdXG4gICAgfCBTb21lIGwgLT4gZGF0YSA6OiBsKVxuOztcblxubGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIFtdIHwgU29tZSBbIF8gXSAtPiByZW1vdmUgdCBrZXlcbiAgfCBTb21lIChfIDo6IHRsKSAtPiBzZXQgdCB+a2V5IH5kYXRhOnRsXG47O1xuXG5sZXQgZmluZF9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGwgLT4gbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlIH5zaXplICgpIGluXG4gIGxldCBkdXBlcyA9IHJlZiBbXSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgaWYgbWVtIHJlcyBrZXkgdGhlbiBkdXBlcyA6PSBrZXkgOjogIWR1cGVzIGVsc2Ugc2V0IHJlcyB+a2V5IH5kYXRhKTtcbiAgbWF0Y2ggIWR1cGVzIHdpdGhcbiAgfCBbXSAtPiBgT2sgcmVzXG4gIHwga2V5cyAtPiBgRHVwbGljYXRlX2tleXMgKExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6aGFzaGFibGUuSGFzaGFibGUuY29tcGFyZSBrZXlzKVxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgfmhhc2hhYmxlICgpIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBhZGRfbXVsdGkgcmVzIH5rZXkgfmRhdGEpO1xuICByZXNcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Qgd2l0aFxuICB8IGBPayB0IC0+IGBPayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGsgLT4gYER1cGxpY2F0ZV9rZXkgKExpc3QuaGRfZXhuIGspXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IGBPayB2IC0+IFJlc3VsdC5PayB2XG4gIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3IgXCJIYXNodGJsLm9mX2FsaXN0X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBzZXhwX29mX2tleVxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBSZXN1bHQuT2sgdiAtPiB2XG4gIHwgUmVzdWx0LkVycm9yIGUgLT4gRXJyb3IucmFpc2UgZVxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IHRvX2FsaXN0IHQgPSBmb2xkIH5mOihmdW4gfmtleSB+ZGF0YSBsaXN0IC0+IChrZXksIGRhdGEpIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gIHRcbiAgfD4gdG9fYWxpc3RcbiAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKGsxLCBfKSAoazIsIF8pIC0+IHQuaGFzaGFibGUuY29tcGFyZSBrMSBrMilcbiAgfD4gc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhKVxuOztcblxubGV0IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID1cbiAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCkgc2V4cCBpblxuICBtYXRjaCBvZl9hbGlzdCB+aGFzaGFibGUgYWxpc3QgfnNpemU6KExpc3QubGVuZ3RoIGFsaXN0KSB3aXRoXG4gIHwgYE9rIHYgLT4gdlxuICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgIExpc3QuaXRlcjJfZXhuIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgIGlmIGhhc2hhYmxlLmNvbXBhcmUgayBrMiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiSGFzaHRibC50X29mX3NleHA6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgayB2KVxuICAgICAgKGtfZ3JhbW1hciA6IGsgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICAodl9ncmFtbWFyIDogdiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiAoaywgdikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbjs7XG5cbmxldCBrZXlzIHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhOl8gYWNjIC0+IGtleSA6OiBhY2MpXG5sZXQgZGF0YSB0ID0gZm9sZCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgYWRkX3RvX2dyb3VwcyBncm91cHMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzID1cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByb3cgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByb3cgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHJvdyBpblxuICAgIGxldCBkYXRhID1cbiAgICAgIG1hdGNoIGZpbmQgZ3JvdXBzIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgfCBTb21lIG9sZCAtPiBjb21iaW5lIG9sZCBkYXRhXG4gICAgaW5cbiAgICBzZXQgZ3JvdXBzIH5rZXkgfmRhdGEpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSByb3dzID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpIGluXG4gIGFkZF90b19ncm91cHMgcmVzIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSB+cm93cztcbiAgcmVzXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGE6Rm4uaWQgcm93c1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBtYXRjaCBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzIHdpdGhcbiAgfCBgT2sgdCAtPiBSZXN1bHQuT2sgdFxuICB8IGBEdXBsaWNhdGVfa2V5cyBrZXlzIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJIYXNodGJsLmNyZWF0ZV93aXRoX2tleTogZHVwbGljYXRlIGtleXNcIlxuICAgICAgICAgWyBcImtleXNcIiwgc2V4cF9vZl9saXN0IHNleHBfb2Zfa2V5IGtleXMgXSlcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyA9XG4gIE9yX2Vycm9yLm9rX2V4biAoY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cylcbjs7XG5cbmxldCBtZXJnZSA9XG4gIGxldCBtYXliZV9zZXQgdCB+a2V5IH5mIGQgPVxuICAgIG1hdGNoIGYgfmtleSBkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBzZXQgdCB+a2V5IH5kYXRhOnZcbiAgaW5cbiAgZnVuIHRfbGVmdCB0X3JpZ2h0IH5mIC0+XG4gICAgaWYgbm90IChIYXNoYWJsZS5lcXVhbCB0X2xlZnQuaGFzaGFibGUgdF9yaWdodC5oYXNoYWJsZSlcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiSGFzaHRibC5tZXJnZTogZGlmZmVyZW50ICdoYXNoYWJsZScgdmFsdWVzXCI7XG4gICAgbGV0IG5ld190ID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+Z3Jvd3RoX2FsbG93ZWQ6dF9sZWZ0Lmdyb3d0aF9hbGxvd2VkXG4gICAgICAgIH5oYXNoYWJsZTp0X2xlZnQuaGFzaGFibGVcbiAgICAgICAgfnNpemU6dF9sZWZ0Lmxlbmd0aFxuICAgICAgICAoKVxuICAgIGluXG4gICAgd2l0aG91dF9tdXRhdGluZyB0X2xlZnQgKGZ1biAoKSAtPlxuICAgICAgd2l0aG91dF9tdXRhdGluZyB0X3JpZ2h0IChmdW4gKCkgLT5cbiAgICAgICAgaXRlcmkgdF9sZWZ0IH5mOihmdW4gfmtleSB+ZGF0YTpsZWZ0IC0+XG4gICAgICAgICAgbWF0Y2ggZmluZCB0X3JpZ2h0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgTGVmdCBsZWZ0KVxuICAgICAgICAgIHwgU29tZSByaWdodCAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYEJvdGggKGxlZnQsIHJpZ2h0KSkpO1xuICAgICAgICBpdGVyaSB0X3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpyaWdodCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9sZWZ0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1heWJlX3NldCBuZXdfdCB+a2V5IH5mIChgUmlnaHQgcmlnaHQpXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgICAoKiBhbHJlYWR5IGRvbmUgYWJvdmUgKikpIFtAbm9udGFpbF0pIFtAbm9udGFpbF0pO1xuICAgIG5ld190XG47O1xuXG5sZXQgbWVyZ2VfaW50byB+c3JjIH5kc3QgfmYgPVxuICBpdGVyaSBzcmMgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IGRzdF9kYXRhID0gZmluZCBkc3Qga2V5IGluXG4gICAgbGV0IGFjdGlvbiA9IHdpdGhvdXRfbXV0YXRpbmcgZHN0IChmdW4gKCkgLT4gZiB+a2V5IGRhdGEgZHN0X2RhdGEpIGluXG4gICAgbWF0Y2ggKGFjdGlvbiA6IF8gTWVyZ2VfaW50b19hY3Rpb24udCkgd2l0aFxuICAgIHwgUmVtb3ZlIC0+IHJlbW92ZSBkc3Qga2V5XG4gICAgfCBTZXRfdG8gZGF0YSAtPlxuICAgICAgKG1hdGNoIGRzdF9kYXRhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gc2V0IGRzdCB+a2V5IH5kYXRhXG4gICAgICAgfCBTb21lIGRzdF9kYXRhIC0+IGlmIG5vdCAocGh5c19lcXVhbCBkc3RfZGF0YSBkYXRhKSB0aGVuIHNldCBkc3QgfmtleSB+ZGF0YSkpIFtAbm9udGFpbFxuICBdXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjIGVsc2Uga2V5IDo6IGFjKVxuICBpblxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4ga2V5IC0+IHJlbW92ZSB0IGtleSlcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5sZXQgZmlsdGVyX2tleXNfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5IH5kYXRhOl8gLT4gZiBrZXkpIFtAbm9udGFpbF1cblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCBtYXBfcmVzdWx0cyA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWMgLT4gKGtleSwgZiB+a2V5IH5kYXRhKSA6OiBhYykgaW5cbiAgTGlzdC5pdGVyIG1hcF9yZXN1bHRzIH5mOihmdW4gKGtleSwgcmVzdWx0KSAtPlxuICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbW92ZSB0IGtleVxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICB3aXRob3V0X211dGF0aW5nIHQgKGZ1biAoKSAtPlxuICAgIEFycmF5Lml0ZXIgdC50YWJsZSB+ZjooQXZsdHJlZS5tYXBpX2lucGxhY2UgfmYpIFtAbm9udGFpbF0pIFtAbm9udGFpbF1cbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gbWFwaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKSBbQG5vbnRhaWxdXG5cbmxldCBlcXVhbCBlcXVhbCB0IHQnID1cbiAgbGVuZ3RoIHQgPSBsZW5ndGggdCdcbiAgJiYgKHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdCcgKGZ1biAoKSAtPlxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgbWF0Y2ggZmluZCB0JyBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gci5yZXR1cm4gZmFsc2VcbiAgICAgICAgfCBTb21lIGRhdGEnIC0+IGlmIG5vdCAoZXF1YWwgZGF0YSBkYXRhJykgdGhlbiByLnJldHVybiBmYWxzZSkgW0Bub250YWlsXSk7XG4gICAgdHJ1ZSkgW0Bub250YWlsXSlcbjs7XG5cbmxldCBzaW1pbGFyID0gZXF1YWxcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBjaG9vc2UgPSBjaG9vc2VcbiAgbGV0IGNob29zZV9leG4gPSBjaG9vc2VfZXhuXG4gIGxldCBjaG9vc2VfcmFuZG9tbHkgPSBjaG9vc2VfcmFuZG9tbHlcbiAgbGV0IGNob29zZV9yYW5kb21seV9leG4gPSBjaG9vc2VfcmFuZG9tbHlfZXhuXG4gIGxldCBjbGVhciA9IGNsZWFyXG4gIGxldCBjb3B5ID0gY29weVxuICBsZXQgcmVtb3ZlID0gcmVtb3ZlXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgYWRkX2V4biA9IGFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuICBsZXQgdXBkYXRlID0gdXBkYXRlXG4gIGxldCB1cGRhdGVfYW5kX3JldHVybiA9IHVwZGF0ZV9hbmRfcmV0dXJuXG4gIGxldCBhZGRfbXVsdGkgPSBhZGRfbXVsdGlcbiAgbGV0IHJlbW92ZV9tdWx0aSA9IHJlbW92ZV9tdWx0aVxuICBsZXQgZmluZF9tdWx0aSA9IGZpbmRfbXVsdGlcbiAgbGV0IG1lbSA9IG1lbVxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZmlsdGVyX21hcCA9IGZpbHRlcl9tYXBcbiAgbGV0IGZpbHRlcl9tYXBpID0gZmlsdGVyX21hcGlcbiAgbGV0IGZpbHRlcl9rZXlzID0gZmlsdGVyX2tleXNcbiAgbGV0IGZpbHRlciA9IGZpbHRlclxuICBsZXQgZmlsdGVyaSA9IGZpbHRlcmlcbiAgbGV0IHBhcnRpdGlvbl9tYXAgPSBwYXJ0aXRpb25fbWFwXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA9IHBhcnRpdGlvbl9tYXBpXG4gIGxldCBwYXJ0aXRpb25fdGYgPSBwYXJ0aXRpb25fdGZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgPSBwYXJ0aXRpb25pX3RmXG4gIGxldCBmaW5kX29yX2FkZCA9IGZpbmRfb3JfYWRkXG4gIGxldCBmaW5kaV9vcl9hZGQgPSBmaW5kaV9vcl9hZGRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBmaW5kX2V4biA9IGZpbmRfZXhuXG4gIGxldCBmaW5kX2FuZF9jYWxsID0gZmluZF9hbmRfY2FsbFxuICBsZXQgZmluZF9hbmRfY2FsbDEgPSBmaW5kX2FuZF9jYWxsMVxuICBsZXQgZmluZF9hbmRfY2FsbDIgPSBmaW5kX2FuZF9jYWxsMlxuICBsZXQgZmluZGlfYW5kX2NhbGwgPSBmaW5kaV9hbmRfY2FsbFxuICBsZXQgZmluZGlfYW5kX2NhbGwxID0gZmluZGlfYW5kX2NhbGwxXG4gIGxldCBmaW5kaV9hbmRfY2FsbDIgPSBmaW5kaV9hbmRfY2FsbDJcbiAgbGV0IGZpbmRfYW5kX3JlbW92ZSA9IGZpbmRfYW5kX3JlbW92ZVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgbWVyZ2UgPSBtZXJnZVxuICBsZXQgbWVyZ2VfaW50byA9IG1lcmdlX2ludG9cbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgZmlsdGVyX2tleXNfaW5wbGFjZSA9IGZpbHRlcl9rZXlzX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9pbnBsYWNlID0gZmlsdGVyX2lucGxhY2VcbiAgbGV0IGZpbHRlcmlfaW5wbGFjZSA9IGZpbHRlcmlfaW5wbGFjZVxuICBsZXQgbWFwX2lucGxhY2UgPSBtYXBfaW5wbGFjZVxuICBsZXQgbWFwaV9pbnBsYWNlID0gbWFwaV9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlXG4gIGxldCBlcXVhbCA9IGVxdWFsXG4gIGxldCBzaW1pbGFyID0gc2ltaWxhclxuICBsZXQgaW5jciA9IGluY3JcbiAgbGV0IGRlY3IgPSBkZWNyXG4gIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5XG5lbmRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEtleS5oYXNoYWJsZVxuXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKVxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPSBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cFxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICB0eXBlICdhIGtleSA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gSGFzaGFibGUucG9seVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgSGFzaGFibGUgPSBIYXNoYWJsZS5IYXNoYWJsZVxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGxldCBoYXNoYWJsZSB0ID0gdC5oYXNoYWJsZVxuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBjcmVhdGUgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Rfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9tdWx0aSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICBjcmVhdGVfbWFwcGVkIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICBncm91cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbjs7XG5cbmxldCBoYXNoYWJsZV9zIHQgPSBIYXNoYWJsZS50b19rZXkgdC5oYXNoYWJsZVxuXG5tb2R1bGUgTSAoSyA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGspIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGspIHZfb2Zfc2V4cCBzZXhwID1cbiAgdF9vZl9zZXhwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgSykpIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKSB2X2dyYW1tYXIgPVxuICB0X3NleHBfZ3JhbW1hciBLLnRfc2V4cF9ncmFtbWFyIHZfZ3JhbW1hclxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5cbmxldCBoYXNoYWJsZV9zID0gSGFzaHRibC5oYXNoYWJsZV9zXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmxldCBwb2x5X2hhc2hhYmxlID0gSGFzaHRibC5Qb2x5Lmhhc2hhYmxlXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICdhIHQgPSAoJ2EsIHVuaXQpIEhhc2h0YmwudFxudHlwZSAnYSBoYXNoX3NldCA9ICdhIHRcbnR5cGUgJ2EgZWx0ID0gJ2FcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICBsZXQgY2xlYXIgPSBIYXNodGJsLmNsZWFyXG4gIGxldCBsZW5ndGggPSBIYXNodGJsLmxlbmd0aFxuICBsZXQgbWVtID0gSGFzaHRibC5tZW1cbiAgbGV0IGlzX2VtcHR5IHQgPSBIYXNodGJsLmlzX2VtcHR5IHRcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBIYXNodGJsLml0ZXJfa2V5cyB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIGFzIG8gLT4gci5yZXR1cm4gbyk7XG4gICAgICBOb25lKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmRfbWFwIHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIFNvbWUgYSBlbHNlIE5vbmUpIFtAbm9udGFpbF1cbiAgbGV0IGFkZCB0IGsgPSBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKVxuXG4gIGxldCBzdHJpY3RfYWRkIHQgayA9XG4gICAgaWYgbWVtIHQga1xuICAgIHRoZW4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiZWxlbWVudCBhbHJlYWR5IGV4aXN0c1wiXG4gICAgZWxzZSAoXG4gICAgICBIYXNodGJsLnNldCB0IH5rZXk6ayB+ZGF0YTooKTtcbiAgICAgIFJlc3VsdC5PayAoKSlcbiAgOztcblxuICBsZXQgc3RyaWN0X2FkZF9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfYWRkIHQgaylcbiAgbGV0IHJlbW92ZSA9IEhhc2h0YmwucmVtb3ZlXG5cbiAgbGV0IHN0cmljdF9yZW1vdmUgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmUgdCBrO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICAgIGVsc2UgT3JfZXJyb3IuZXJyb3IgXCJlbGVtZW50IG5vdCBpbiBzZXRcIiBrIChIYXNodGJsLnNleHBfb2Zfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHN0cmljdF9yZW1vdmVfZXhuIHQgayA9IE9yX2Vycm9yLm9rX2V4biAoc3RyaWN0X3JlbW92ZSB0IGspXG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgSGFzaHRibC5mb2xkIHQgfmluaXQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIGFjYyAtPiBmIGFjYyBrZXkpIFtAbm9udGFpbF1cbiAgOztcblxuICBsZXQgaXRlciB0IH5mID0gSGFzaHRibC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcbiAgbGV0IHRvX2xpc3QgPSBIYXNodGJsLmtleXNcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZSB0ID1cbiAgICBzZXhwX29mX2xpc3Qgc2V4cF9vZl9lICh0b19saXN0IHQgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihoYXNoYWJsZSB0KS5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgaW5kZXggPSByZWYgKGxlbiAtIDEpIGluXG4gICAgZm9sZCB0IH5pbml0Olt8fF0gfmY6KGZ1biBhY2Mga2V5IC0+XG4gICAgICBpZiBBcnJheS5sZW5ndGggYWNjID0gMFxuICAgICAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiBrZXlcbiAgICAgIGVsc2UgKFxuICAgICAgICBpbmRleCA6PSAhaW5kZXggLSAxO1xuICAgICAgICBhY2MuKCFpbmRleCkgPC0ga2V5O1xuICAgICAgICBhY2MpKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZjooZiBbQGxvY2FsXSkgPVxuICAgIEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSkgW0Bub250YWlsXVxuICA7O1xuXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBub3QgKEhhc2h0YmwuZXhpc3RzaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBub3QgKGYga2V5KSkpXG4gIGxldCBlcXVhbCB0MSB0MiA9IEhhc2h0YmwuZXF1YWwgKGZ1biAoKSAoKSAtPiB0cnVlKSB0MSB0MlxuICBsZXQgY29weSB0ID0gSGFzaHRibC5jb3B5IHRcbiAgbGV0IGZpbHRlciB0IH5mID0gSGFzaHRibC5maWx0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KSBbQG5vbnRhaWxdXG4gIGxldCB1bmlvbiB0MSB0MiA9IEhhc2h0YmwubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gXyAtPiBTb21lICgpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGZpbHRlciB0MSB+ZjooZnVuIGtleSAtPiBub3QgKEhhc2h0YmwubWVtIHQyIGtleSkpXG5cbiAgbGV0IGludGVyIHQxIHQyID1cbiAgICBsZXQgc21hbGxlciwgbGFyZ2VyID0gaWYgbGVuZ3RoIHQxID4gbGVuZ3RoIHQyIHRoZW4gdDIsIHQxIGVsc2UgdDEsIHQyIGluXG4gICAgSGFzaHRibC5maWx0ZXJpIHNtYWxsZXIgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IEhhc2h0YmwubWVtIGxhcmdlciBrZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICAgIGxldCB0b19yZW1vdmUgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyB4IC0+IGlmIGYgeCB0aGVuIGFjIGVsc2UgeCA6OiBhYykgaW5cbiAgICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4geCAtPiByZW1vdmUgdCB4KVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaGFzaHRibCA9IEhhc2h0YmwubWFwIGhhc2h0YmwgfmY6aWdub3JlXG4gIGxldCB0b19oYXNodGJsIHQgfmYgPSBIYXNodGJsLm1hcGkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gZiBrZXkpIFtAbm9udGFpbF1cbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIGxcbiAgaW5cbiAgbGV0IHQgPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgbSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGsgLT4gYWRkIHQgayk7XG4gIHRcbjs7XG5cbmxldCB0X29mX3NleHAgbSBlX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IFNleHAuQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgcmVxdWlyZXMgYSBsaXN0XCIgc2V4cFxuICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgbGV0IHQgPSBjcmVhdGUgbSB+c2l6ZTooTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHNleHAgLT5cbiAgICAgIGxldCBlID0gZV9vZl9zZXhwIHNleHAgaW5cbiAgICAgIG1hdGNoIHN0cmljdF9hZGQgdCBlIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgIHwgRXJyb3IgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIGdvdCBhIGR1cGxpY2F0ZSBlbGVtZW50XCIgc2V4cCk7XG4gICAgdFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEVsdC50KSAtPiBTZXhwLnQgLT4gJ2EgRWx0LnQgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgRWx0LnQgdFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgZV9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGVfb2Zfc2V4cCBzZXhwXG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgaGFzaF9zZXRcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IHBvbHlfaGFzaGFibGVcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbmVuZFxuXG5tb2R1bGUgTSAoRWx0IDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gRWx0LnQgdFxuZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCkgc2V4cCA9XG4gIHRfb2Zfc2V4cCAobW9kdWxlIEVsdCkgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KSA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgUHJpbnRmXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbmluY2x1ZGUgRmxvYXQwXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9mbG9hdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfZmxvYXQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgKGdsb2JhbGl6ZSA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpID0gKGdsb2JhbGl6ZV9mbG9hdCA6ICh0W0BvY2FtbC5sb2NhbF0pIC0+IHQpXG4gIGxldCB0X29mX3NleHAgPSAoZmxvYXRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfZmxvYXQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gZmxvYXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlID0gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IHRvX2Zsb2F0IHggPSB4XG5sZXQgb2ZfZmxvYXQgeCA9IHhcblxubGV0IG9mX3N0cmluZyBzID1cbiAgdHJ5IGZsb2F0X29mX3N0cmluZyBzIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcIkZsb2F0Lm9mX3N0cmluZyAlc1wiIHMgKClcbjs7XG5cbmxldCBvZl9zdHJpbmdfb3B0ID0gZmxvYXRfb2Zfc3RyaW5nX29wdFxuXG5leHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdLiAqKVxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgaSBsXG4gICAgdGhlbiBzIF4gXCIuXCJcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBsb29wIChpICsgMSlcbiAgICAgIHwgXyAtPiBzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbigqIExldCBbeV0gYmUgYSBwb3dlciBvZiAyLiAgVGhlbiB0aGUgbmV4dCByZXByZXNlbnRhYmxlIGZsb2F0IGlzOlxuICAgW3ogPSB5ICogKDEgKyAyICoqIC01MildXG4gICBhbmQgdGhlIHByZXZpb3VzIG9uZSBpc1xuICAgW3ggPSB5ICogKDEgLSAyICoqIC01MyldXG5cbiAgIEluIGdlbmVyYWwsIGV2ZXJ5IHR3byBhZGphY2VudCBmbG9hdHMgYXJlIHdpdGhpbiBhIGZhY3RvciBvZiBiZXR3ZWVuIFsxICsgMioqLTUzXVxuICAgYW5kIFsxICsgMioqLTUyXSBmcm9tIGVhY2ggb3RoZXIsIHRoYXQgaXMgd2l0aGluIFsxICsgMS4xZS0xNl0gYW5kIFsxICsgMi4zZS0xNl0uXG5cbiAgIFNvIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgZmxvYXQgc3RhcnRzIHdpdGggXCIxXCIsIHRoZW4gaXRzIGFkamFjZW50IGZsb2F0c1xuICAgd2lsbCB1c3VhbGx5IGRpZmZlciBmcm9tIGl0IGJ5IDEsIGFuZCBzb21ldGltZXMgYnkgMiwgYXQgdGhlIDE3dGggc2lnbmlmaWNhbnQgZGlnaXRcbiAgIChjb3VudGluZyBmcm9tIDEpLlxuXG4gICBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGRlY2ltYWwgcmVwcmVzZW50YXRpb24gc3RhcnRzIHdpdGggXCI5XCIsIHRoZW4gdGhlIGFkamFjZW50XG4gICBmbG9hdHMgd2lsbCBiZSBvZmYgYnkgbm8gbW9yZSB0aGFuIDIzIGF0IHRoZSAxNnRoIGFuZCAxN3RoIHNpZ25pZmljYW50IGRpZ2l0cy5cblxuICAgRS5nLjpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAoMTAyNC4gKi4gKDEuIC0uIDIuKiogKC01My4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2N1xuICAgICAtIDogc3RyaW5nID0gXCIxMDIzLjk5OTk5OTk5OTk5OTlcIlxuICAgdn1cbiAgIFByaW50aW5nIGEgY291cGxlIG9mIGV4dHJhIGRpZ2l0cyByZXZlYWxzIHRoYXQgdGhlIGRpZmZlcmVuY2UgaW5kZWVkIGlzIHJvdWdobHkgMTEgYXRcbiAgIGRpZ2l0cyAxN3RoIGFuZCAxOHRoICh0aGF0IGlzLCAxM3RoIGFuZCAxNHRoIGFmdGVyIFwiLlwiKTpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xOWdcIiAoMTAyNC4gKi4gKDEuIC0uIDIuKiogKC01My4pKSk7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgICAgMTIzNCA1Njc4OTAxMjM0NTY3ODlcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk4ODZcIlxuICAgdn1cblxuICAgVGhlIHVscCAodGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhZGphY2VudCBmbG9hdHMpIGlzIHR3aWNlIGFzIGJpZyBvbiB0aGUgb3RoZXIgc2lkZSBvZlxuICAgMTAyNC46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiArLiAyLioqICgtNTIuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjQuMDAwMDAwMDAwMDAwMjI3XCJcbiAgIHZ9XG5cbiAgIE5vdyB0YWtlIGEgcG93ZXIgb2YgMiB3aGljaCBzdGFydHMgd2l0aCA5OTpcblxuICAge3ZcbiAgICAgIyAyLioqOTMuIDs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgMSAyMzQ1Njc4OTAxMjM0NTY3OFxuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0MjJlKzI3XG5cbiAgICAgIyAyLioqOTMuICouICgxLiArLiAyLioqICgtNTIuKSk7O1xuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0NDRlKzI3XG5cbiAgICAgIyAyLioqOTMuICouICgxLiAtLiAyLioqICgtNTMuKSk7O1xuICAgICAtIDogZmxvYXQgPSA5LjkwMzUyMDMxNDI4MzA0MTFlKzI3XG4gICB2fVxuXG4gICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIDIqKjkzIGFuZCBpdHMgdHdvIG5laWdoYm9ycyBpcyBzbGlnaHRseSBtb3JlIHRoYW4sIHJlc3BlY3RpdmVseSxcbiAgIDEgYW5kIDIgYXQgc2lnbmlmaWNhbnQgZGlnaXQgMTYuXG5cbiAgIFRob3NlIGV4YW1wbGVzIHNob3cgdGhhdDpcbiAgIC0gMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGlzIGFsd2F5cyBzdWZmaWNpZW50IHRvIHJlcHJlc2VudCBhIGZsb2F0IHdpdGhvdXQgYW1iaWd1aXR5XG4gICAtIDE1dGggc2lnbmlmaWNhbnQgZGlnaXQgY2FuIGFsd2F5cyBiZSByZXByZXNlbnRlZCBhY2N1cmF0ZWx5XG4gICAtIGNvbnZlcnRpbmcgYSBkZWNpbWFsIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyB0byBpdHMgbmVhcmVzdCBmbG9hdCBhbmQgYmFja1xuICAgICBjYW4gY2hhbmdlIHRoZSBsYXN0IGRlY2ltYWwgZGlnaXQgYnkgbm8gbW9yZSB0aGFuIDFcblxuICAgVG8gbWFrZSBzdXJlIHRoYXQgZmxvYXRzIG9idGFpbmVkIGJ5IGNvbnZlcnNpb24gZnJvbSBkZWNpbWFsIGZyYWN0aW9ucyAoZS5nLiBcIjMuMTRcIilcbiAgIGFyZSBwcmludGVkIHdpdGhvdXQgdHJhaWxpbmcgbm9uLXplcm8gZGlnaXRzLCBvbmUgc2hvdWxkIGNob29zZSB0aGUgZmlyc3QgYW1vbmcgdGhlXG4gICAnJS4xNWcnLCAnJS4xNmcnLCBhbmQgJyUuMTdnJyByZXByZXNlbnRhdGlvbnMgd2hpY2ggZG9lcyByb3VuZC10cmlwOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCIgICAgICAgICAgICAgICAgICAgICAoKiBwaWNrIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTZnXCIgMy4xNDs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjMuMTRcIlxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0MDAwMDAwMDAwMDAwMDFcIiAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZSAqKVxuXG4gICAgICMgc3ByaW50ZiBcIiUuMTVnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4XCIgICAgICAgICAgICAgICAgICAgICAgICAoKiBkbyBub3QgcGljayB0aGlzIG9uZS0tZG9lcyBub3Qgcm91bmQtdHJpcCAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDJcIiAgICAgICAgKCogcHJlZmVyIHRoaXMgb25lICopXG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgOC4wMDAwMDAwMDAwMDAwMDI7O1xuICAgICAtIDogc3RyaW5nID0gXCI4LjAwMDAwMDAwMDAwMDAwMThcIiAgICAgICAoKiB0aGlzIG9uZSBoYXMgb25lIGRpZ2l0IG9mIGp1bmsgYXQgdGhlIGVuZCAqKVxuICAgdn1cblxuICAgU2tpcHBpbmcgdGhlICclLjE2ZycgaW4gdGhlIGFib3ZlIHByb2NlZHVyZSBzYXZlcyB1cyBzb21lIHRpbWUsIGJ1dCBpdCBtZWFucyB0aGF0LCBhc1xuICAgc2VlbiBpbiB0aGUgc2Vjb25kIGV4YW1wbGUgYWJvdmUsIG9jY2FzaW9uYWxseSBudW1iZXJzIHdpdGggZXhhY3RseSAxNiBzaWduaWZpY2FudFxuICAgZGlnaXRzIHdpbGwgaGF2ZSBhbiBlcnJvciBpbnRyb2R1Y2VkIGF0IHRoZSAxN3RoIGRpZ2l0LiAgVGhhdCBpcyBwcm9iYWJseSBPSyBmb3JcbiAgIHR5cGljYWwgdXNlLCBiZWNhdXNlIGEgbnVtYmVyIHdpdGggMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGlzIFwidWdseVwiIGFscmVhZHkuICBBZGRpbmcgb25lXG4gICBtb3JlIGRvZXNuJ3QgbWFrZSBpdCBtdWNoIHdvcnNlIGZvciBhIGh1bWFuIHJlYWRlci5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIHdlIGNhbm5vdCBza2lwICclLjE1ZycgYW5kIG9ubHkgbG9vayBhdCAnJS4xNmcnIGFuZCAnJS4xN2cnLCBzaW5jZVxuICAgdGhlIGluYWNjdXJhY3kgYXQgdGhlIDE2dGggZGlnaXQgbWlnaHQgaW50cm9kdWNlIHRoZSBub2lzZSB3ZSB3YW50IHRvIGF2b2lkOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTJcIiAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTIwMDAwMDAwMDAwMDFcIiAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWp1bmsgYXQgdGhlIGVuZCAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDkuOTkyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOS45OTIwMDAwMDAwMDAwMDA5XCJcbiAgIHZ9XG4qKVxubGV0IHRvX3N0cmluZyB4ID1cbiAgdmFsaWRfZmxvYXRfbGV4ZW1cbiAgICAobGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1Z1wiIHggaW5cbiAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHkgPSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdnXCIgeClcbjs7XG5cbmxldCBtYXhfdmFsdWUgPSBpbmZpbml0eVxubGV0IG1pbl92YWx1ZSA9IG5lZ19pbmZpbml0eVxubGV0IG1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUgPSAyLiAqKiAtMTA3NC5cbmxldCBtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwMjIuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBwaSA9IDB4My4yNDNGNkE4ODg1QTMwOEQzMTMxOThBMkUwMzcwNzNcbmxldCBzcXJ0X3BpID0gMHgxLkM1QkY4OTFCNEVGNkFBNzlDM0IwNTIwRDVEQjkzOFxubGV0IHNxcnRfMnBpID0gMHgyLjgxQjI2M0ZFQzRFMEIyQ0FGOTQ4M0Y1Q0U0NTlEQ1xubGV0IGV1bGVyID0gMHgwLjkzQzQ2N0UzN0RCMEM3QTREMUJFM0Y4MTAxNTJDQlxubGV0IG9mX2ludCA9IEludC50b19mbG9hdFxubGV0IHRvX2ludCA9IEludC5vZl9mbG9hdFxubGV0IG9mX2ludDYzIGkgPSBJbnQ2My50b19mbG9hdCBpXG5sZXQgb2ZfaW50NjQgaSA9IFN0ZGxpYi5JbnQ2NC50b19mbG9hdCBpXG5sZXQgdG9faW50NjQgPSBTdGRsaWIuSW50NjQub2ZfZmxvYXRcbmxldCBpcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcbmxldCBpcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcblxuKCogVGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBcImV4blwiIHJvdW5kaW5nIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQsIHNvIHRoZXkgYXJlIHdyaXR0ZW5cbiAgIG91dCBzZXBhcmF0ZWx5LCBhbmQgdHVuZWQgaW5kaXZpZHVhbGx5LiAgKFdlIGNvdWxkIGhhdmUgdGhlIG9wdGlvbiB2ZXJzaW9ucyBjYWxsXG4gICB0aGUgXCJleG5cIiB2ZXJzaW9ucywgYnV0IHRoYXQgaW1wb3NlcyBhcmd1YWJseSBncmF0dWl0b3VzIG92ZXJoZWFkLS0tZXNwZWNpYWxseVxuICAgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGNhcHR1cmUgb2YgYmFja3RyYWNlcyBpcyBlbmFibGVkIHVwb24gXCJ3aXRoXCItLS1hbmQgdGhhdCBzZWVtc1xuICAgbm90IHdvcnRoIGl0IHdoZW4gY29tcGFyZWQgdG8gdGhlIHJlbGF0aXZlbHkgc21hbGwgYW1vdW50IG9mIGNvZGUgZHVwbGljYXRpb24uKSAqKVxuXG4oKiBFcnJvciByZXBvcnRpbmcgYmVsb3cgaXMgdmVyeSBjYXJlZnVsbHkgYXJyYW5nZWQgc28gdGhhdCwgZS5nLiwgW2lyb3VuZF9uZWFyZXN0X2V4bl1cbiAgIGl0c2VsZiBjYW4gYmUgaW5saW5lZCBpbnRvIGNhbGxlcnMgc3VjaCB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIGJveCBmb3IgdGhlXG4gICBbZmxvYXRdIGFyZ3VtZW50LiAgVGhpcyBpcyBkb25lIHdpdGggYSBib3ggW2JveF0gZnVuY3Rpb24gY2FyZWZ1bGx5IGNob3NlbiB0byBhbGxvdyB0aGVcbiAgIGNvbXBpbGVyIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIGJveCBmb3IgdGhlIGZsb2F0IG9ubHkgaW4gZXJyb3IgY2FzZXMuICBTZWUsIGUuZy4sXG4gICBbLi4vLi4vemVyby90ZXN0L3ByaWNlX3Rlc3QubWxdIGZvciBhIG1lY2hhbmljYWwgdGVzdCBvZiB0aGlzIHByb3BlcnR5IHdoZW4gYnVpbGRpbmdcbiAgIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz10cnVlXS4gKilcblxubGV0IGlyb3VuZF91cCB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfZG93biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlbiBpZiB0IDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpIGVsc2UgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpKVxuOztcblxubGV0IGlyb3VuZF90b3dhcmRzX3plcm8gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0Lmlyb3VuZF90b3dhcmRzX3plcm9fZXhuOiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKGJveCB0KVxuICAgICAgKClcbjs7XG5cbigqIE91dHNpZGUgb2YgdGhlIHJhbmdlIChyb3VuZF9uZWFyZXN0X2xiLi5yb3VuZF9uZWFyZXN0X3ViKSwgYWxsIHJlcHJlc2VudGFibGUgZG91Ymxlc1xuICAgYXJlIGludGVnZXJzIGluIHRoZSBtYXRoZW1hdGljYWwgc2Vuc2UsIGFuZCBbcm91bmRfbmVhcmVzdF0gc2hvdWxkIGJlIGlkZW50aXR5LlxuXG4gICBIb3dldmVyLCBmb3Igb2RkIG51bWJlcnMgd2l0aCB0aGUgYWJzb2x1dGUgdmFsdWUgYmV0d2VlbiAyKio1MiBhbmQgMioqNTMsIHRoZSBmb3JtdWxhXG4gICBbcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKyAwLjUpXSBkb2VzIG5vdCBob2xkOlxuXG4gICB7dlxuICAgICAjIGxldCBuYWl2ZV9yb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArLiAwLjUpOztcbiAgICAgIyBsZXQgeCA9IDIuICoqIDUyLiArLiAxLjs7XG4gICAgIHZhbCB4IDogZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk3LlxuICAgICAjIG5haXZlX3JvdW5kX25lYXJlc3QgeDs7XG4gICAgIC0gOiAgICAgZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk4LlxuICAgdn1cbiopXG5cbmxldCByb3VuZF9uZWFyZXN0X2xiID0gLS4oMi4gKiogNTIuKVxubGV0IHJvdW5kX25lYXJlc3RfdWIgPSAyLiAqKiA1Mi5cblxuKCogRm9yIFt4ID0gb25lX3VscCBgRG93biAwLjVdLCB0aGUgZm9ybXVsYSBbZmxvb3IgKHggKy4gMC41KV0gZm9yIHJvdW5kaW5nIHRvIG5lYXJlc3RcbiAgIGRvZXMgbm90IHdvcmssIGJlY2F1c2UgdGhlIGV4YWN0IHJlc3VsdCBpcyBoYWxmd2F5IGJldHdlZW4gW29uZV91bHAgYERvd24gMS5dIGFuZCBbMS5dLFxuICAgYW5kIGl0IGdldHMgcm91bmRlZCB1cCB0byBbMS5dIGR1ZSB0byB0aGUgcm91bmQtdGllcy10by1ldmVuIHJ1bGUuICopXG5sZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHAgYERvd24gMC41XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCA9XG4gIHRcbiAgKy5cbiAgaWYgdCA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgdGhlbiBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmICgqIHNpbmNlIHQgPCAwLjUsIG1ha2Ugc3VyZSB0aGUgcmVzdWx0IGlzIDwgMS4wICopXG4gIGVsc2UgMC41XG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCkpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgICBlbHNlIE5vbmVcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3QgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfMzJcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG5fMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbFwiIChib3ggdCkgKCkpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9uZWFyZXN0X2V4bl82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0X2V4bl8zMlxuOztcblxuKCogVGhlIGZvbGxvd2luZyBbaXJvdW5kX2V4bl0gYW5kIFtpcm91bmRdIGZ1bmN0aW9ucyBhcmUgc2xvd2VyIHRoYW4gdGhlIG9uZXMgYWJvdmUuXG4gICBUaGVpciBlcXVpdmFsZW5jZSB0byB0aG9zZSBmdW5jdGlvbnMgaXMgdGVzdGVkIGluIHRoZSB1bml0IHRlc3RzIGJlbG93LiAqKVxuXG5sZXRbQGlubGluZV0gaXJvdW5kX2V4biA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgWmVybyAtPiBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0XG4gIHwgYE5lYXJlc3QgLT4gaXJvdW5kX25lYXJlc3RfZXhuIHRcbiAgfCBgVXAgLT4gaXJvdW5kX3VwX2V4biB0XG4gIHwgYERvd24gLT4gaXJvdW5kX2Rvd25fZXhuIHRcbjs7XG5cbmxldCBpcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIHRyeSBTb21lIChpcm91bmRfZXhuIH5kaXIgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzX2luZiB0ID0gMS4gLy4gdCA9IDAuXG5sZXQgaXNfZmluaXRlIHQgPSB0IC0uIHQgPSAwLlxuXG5sZXQgbWluX2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IG1heF9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBhZGQgPSAoICsuIClcbmxldCBzdWIgPSAoIC0uIClcbmxldCBuZWcgPSAoIH4tLiApXG5sZXQgYWJzID0gYWJzX2Zsb2F0XG5sZXQgc2NhbGUgPSAoICouIClcbmxldCBzcXVhcmUgeCA9IHggKi4geFxuXG5tb2R1bGUgUGFydHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGZyYWN0aW9uYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBpbnRlZ3JhbCA6IHQgLT4gZmxvYXRcbiAgdmFsIG1vZGYgOiBmbG9hdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgKiBmbG9hdFxuXG4gIGxldCBmcmFjdGlvbmFsIHQgPSBmc3QgdFxuICBsZXQgaW50ZWdyYWwgdCA9IHNuZCB0XG4gIGxldCBtb2RmID0gbW9kZlxuZW5kXG5cbmxldCBtb2RmID0gUGFydHMubW9kZlxubGV0IHJvdW5kX2Rvd24gPSBmbG9vclxubGV0IHJvdW5kX3VwID0gY2VpbFxubGV0IHJvdW5kX3Rvd2FyZHNfemVybyB0ID0gaWYgdCA+PSAwLiB0aGVuIHJvdW5kX2Rvd24gdCBlbHNlIHJvdW5kX3VwIHRcblxuKCogc2VlIHRoZSBjb21tZW50IGFib3ZlIFtyb3VuZF9uZWFyZXN0X2xiXSBhbmQgW3JvdW5kX25lYXJlc3RfdWJdIGZvciBhbiBleHBsYW5hdGlvbiAqKVxubGV0W0BvY2FtbC5pbmxpbmVdIHJvdW5kX25lYXJlc3RfaW5saW5lIHQgPVxuICBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYiAmJiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIGZsb29yIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICBlbHNlIHQgKy4gMC5cbjs7XG5cbmxldCByb3VuZF9uZWFyZXN0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHRcblxubGV0IHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIHQgPVxuICBpZiB0IDw9IHJvdW5kX25lYXJlc3RfbGIgfHwgdCA+PSByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gdCArLiAwLlxuICBlbHNlIChcbiAgICBsZXQgZmxvb3IgPSBmbG9vciB0IGluXG4gICAgKCogW2NlaWxfb3Jfc3VjYyA9IGlmIHQgaXMgYW4gaW50ZWdlciB0aGVuIHQgKy4gMS4gZWxzZSBjZWlsIHRdLiAgRmFzdGVyIHRoYW4gW2NlaWxdLiAqKVxuICAgIGxldCBjZWlsX29yX3N1Y2MgPSBmbG9vciArLiAxLiBpblxuICAgIGxldCBkaWZmX2Zsb29yID0gdCAtLiBmbG9vciBpblxuICAgIGxldCBkaWZmX2NlaWwgPSBjZWlsX29yX3N1Y2MgLS4gdCBpblxuICAgIGlmIGRpZmZfZmxvb3IgPCBkaWZmX2NlaWxcbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBpZiBkaWZmX2Zsb29yID4gZGlmZl9jZWlsXG4gICAgdGhlbiBjZWlsX29yX3N1Y2NcbiAgICBlbHNlIGlmICgqIGV4YWN0IHRpZSwgcGljayB0aGUgZXZlbiAqKVxuICAgICAgbW9kX2Zsb2F0IGZsb29yIDIuID0gMC5cbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBjZWlsX29yX3N1Y2MpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xubGV0IGludDYzX3JvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcblxubGV0IGludDYzX3JvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gdDAgPVxuICBsZXQgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdDAgaW5cbiAgaWYgdCA+IDAuXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoYm94IHQwKVxuICAgICAgICAoKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChib3ggdDApXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuIGYgPSBJbnQ2My5vZl9pbnQgKGlyb3VuZF9uZWFyZXN0X2V4biBmKVxuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgfCBXMzIgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbjs7XG5cbmxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IHRcbiAgfCBgRG93biAtPiByb3VuZF9kb3duIHRcbiAgfCBgVXAgLT4gcm91bmRfdXAgdFxuICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyB0XG47O1xuXG5tb2R1bGUgQ2xhc3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEluZmluaXRlXG4gICAgfCBOYW5cbiAgICB8IE5vcm1hbFxuICAgIHwgU3Vibm9ybWFsXG4gICAgfCBaZXJvXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBJbmZpbml0ZTsgTmFuOyBOb3JtYWw7IFN1Ym5vcm1hbDsgWmVybyBdIDogdCBsaXN0KVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDdfID0gXCJmbG9hdC5tbC5DbGFzcy50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgLT4gSW5maW5pdGVcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSAtPiBOb3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSAtPiBTdWJub3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwOF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA4XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwOF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwOF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA3XyBzZXhwX18wMDhfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwOF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDhfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA4X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA2X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDdfIHNleHBfXzAwNl9cbiAgICAgfCBzZXhwX18wMDZfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwN18gc2V4cF9fMDA2X1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluZmluaXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluZmluaXRlXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICB8IE5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOb3JtYWxcIlxuICAgICAgfCBTdWJub3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3Vibm9ybWFsXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkluZmluaXRlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOb3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiU3Vibm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5lbmRcblxubGV0IGNsYXNzaWZ5IHQgPVxuICBsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgfCBGUF9ub3JtYWwgLT4gQy5Ob3JtYWxcbiAgfCBGUF9zdWJub3JtYWwgLT4gQy5TdWJub3JtYWxcbiAgfCBGUF96ZXJvIC0+IEMuWmVyb1xuICB8IEZQX2luZmluaXRlIC0+IEMuSW5maW5pdGVcbiAgfCBGUF9uYW4gLT4gQy5OYW5cbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgPyhkZWxpbWl0ZXIgPSAnXycpID8oc3RyaXBfemVybyA9IGZhbHNlKSBzdHJpbmcgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHJpbmcgfm9uOicuJyB3aXRoXG4gIHwgTm9uZSAtPiBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBzdHJpbmcgfmRlbGltaXRlclxuICB8IFNvbWUgKGxlZnQsIHJpZ2h0KSAtPlxuICAgIGxldCBsZWZ0ID0gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgbGVmdCB+ZGVsaW1pdGVyIGluXG4gICAgbGV0IHJpZ2h0ID1cbiAgICAgIGlmIHN0cmlwX3plcm8gdGhlbiBTdHJpbmcucnN0cmlwIHJpZ2h0IH5kcm9wOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJzAnKSBlbHNlIHJpZ2h0XG4gICAgaW5cbiAgICAobWF0Y2ggcmlnaHQgd2l0aFxuICAgICB8IFwiXCIgLT4gbGVmdFxuICAgICB8IF8gLT4gbGVmdCBeIFwiLlwiIF4gcmlnaHQpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA/ZGVsaW1pdGVyID8oZGVjaW1hbHMgPSAzKSA/c3RyaXBfemVybyA/KGV4cGxpY2l0X3BsdXMgPSBmYWxzZSkgZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgZGVjaW1hbHMgMFxuICB0aGVuIGludmFsaWRfYXJnZiBcInRvX3N0cmluZ19odW06IGludmFsaWQgYXJndW1lbnQgfmRlY2ltYWxzPSVkXCIgZGVjaW1hbHMgKCk7XG4gIG1hdGNoIGNsYXNzaWZ5IGYgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIGYgPiAwLiB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hblwiXG4gIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBzID1cbiAgICAgIGlmIGV4cGxpY2l0X3BsdXMgdGhlbiBzcHJpbnRmIFwiJSsuKmZcIiBkZWNpbWFscyBmIGVsc2Ugc3ByaW50ZiBcIiUuKmZcIiBkZWNpbWFscyBmXG4gICAgaW5cbiAgICBpbnNlcnRfdW5kZXJzY29yZXMgcyA/ZGVsaW1pdGVyID9zdHJpcF96ZXJvXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBsZXQgc2V4cCA9IHNleHBfb2ZfdCB0IGluXG4gIG1hdGNoICFTZXhwLm9mX2Zsb2F0X3N0eWxlIHdpdGhcbiAgfCBgTm9fdW5kZXJzY29yZXMgLT4gc2V4cFxuICB8IGBVbmRlcnNjb3JlcyAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBMaXN0IF8gLT5cbiAgICAgICByYWlzZV9zXG4gICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICBcIltzZXhwX29mX2Zsb2F0XSBwcm9kdWNlZCBzdHJhbmdlIHNleHBcIlxuICAgICAgICAgICAgWyBcInNleHBcIiwgU2V4cC5zZXhwX29mX3Qgc2V4cCBdKVxuICAgICB8IEF0b20gc3RyaW5nIC0+XG4gICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHN0cmluZyAnRScgdGhlbiBzZXhwIGVsc2UgQXRvbSAoaW5zZXJ0X3VuZGVyc2NvcmVzIHN0cmluZykpXG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0ID8ocHJlZml4ID0gXCJcIikgfmtpbG8gfm1lZ2EgfmdpZ2EgfnRlcmEgP3BldGEgKCkgPVxuICAoKiBSb3VuZCBhIHJhdGlvIHRvd2FyZCB0aGUgbmVhcmVzdCBpbnRlZ2VyLCByZXNvbHZpbmcgdGllcyB0b3dhcmQgdGhlIG5lYXJlc3QgZXZlblxuICAgICBudW1iZXIuICBGb3Igc2FuZSBpbnB1dHMgKGluIHBhcnRpY3VsYXIsIHdoZW4gW2Rlbm9taW5hdG9yXSBpcyBhbiBpbnRlZ2VyIGFuZFxuICAgICBbYWJzIG51bWVyYXRvciA8IDJlNTJdKSB0aGlzIHNob3VsZCBiZSBhY2N1cmF0ZS4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBtaWdodCBiZSBhXG4gICAgIGxpdHRsZSBiaXQgb2ZmLCBidXQgd2UgZG9uJ3QgcmVhbGx5IHVzZSB0aGF0IGNhc2UuICopXG4gIGxldCBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgayA9IGZsb29yIChudW1lcmF0b3IgLy4gZGVub21pbmF0b3IpIGluXG4gICAgKCogaWYgW2FicyBrIDwgMmU1M10sIHRoZW4gYm90aCBba10gYW5kIFtrICsuIDEuXSBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYW5kIGluXG4gICAgICAgcGFydGljdWxhciBbayArLiAxLiA+IGtdLiAgSWYgW2Rlbm9taW5hdG9yXSBpcyBhbHNvIGFuIGludGVnZXIsIGFuZFxuICAgICAgIFthYnMgKGRlbm9taW5hdG9yICouIChrICsuIDEpKSA8IDJlNTNdIChhbmQgaW4gc29tZSBvdGhlciBjYXNlcywgdG9vKSwgdGhlbiBbbG93ZXJdXG4gICAgICAgYW5kIFtoaWdoZXJdIGFyZSBhY3R1YWxseSBib3RoIGFjY3VyYXRlLiAgU2luY2UgKHJvdWdobHkpXG4gICAgICAgW251bWVyYXRvciA9IGRlbm9taW5hdG9yICouIGtdIHRoZW4gZm9yIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0gd2Ugc2hvdWxkIGJlXG4gICAgICAgZmluZS4gKilcbiAgICBsZXQgbG93ZXIgPSBkZW5vbWluYXRvciAqLiBrIGluXG4gICAgbGV0IGhpZ2hlciA9IGRlbm9taW5hdG9yICouIChrICsuIDEuKSBpblxuICAgICgqIFN1YnRyYWN0aW5nIG51bWJlcnMgd2l0aGluIGEgZmFjdG9yIG9mIHR3byBmcm9tIGVhY2ggb3RoZXIgaXMgYWNjdXJhdGUuXG4gICAgICAgU28gZWl0aGVyIHRoZSB0d28gc3VidHJhY3Rpb25zIGJlbG93IGFyZSBhY2N1cmF0ZSwgb3IgayA9IDAsIG9yIGsgPSAtMS5cbiAgICAgICBJbiBjYXNlIG9mIGEgdGllLCByb3VuZCB0byBldmVuLiAqKVxuICAgIGxldCBkaWZmX3JpZ2h0ID0gaGlnaGVyIC0uIG51bWVyYXRvciBpblxuICAgIGxldCBkaWZmX2xlZnQgPSBudW1lcmF0b3IgLS4gbG93ZXIgaW5cbiAgICBsZXQgayA9IGlyb3VuZF9uZWFyZXN0X2V4biBrIGluXG4gICAgaWYgZGlmZl9yaWdodCA8IGRpZmZfbGVmdFxuICAgIHRoZW4gayArIDFcbiAgICBlbHNlIGlmIGRpZmZfcmlnaHQgPiBkaWZmX2xlZnRcbiAgICB0aGVuIGtcbiAgICBlbHNlIGlmICgqIGEgdGllICopXG4gICAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChrIG1vZCAyKSAwXG4gICAgdGhlbiBrXG4gICAgZWxzZSBrICsgMVxuICBpblxuICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiB0IDwgMC4wIHRoZW4gXCItaW5mICBcIiBlbHNlIFwiaW5mICBcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hbiAgXCJcbiAgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IGdvIHQgPVxuICAgICAgbGV0IGNvbnZfb25lIHQgPVxuICAgICAgICBhc3NlcnQgKDAuIDw9IHQgJiYgdCA8IDk5OS45NSk7XG4gICAgICAgIGxldCB4ID0gcHJlZml4IF4gZm9ybWF0X2Zsb2F0IFwiJS4xZlwiIHQgaW5cbiAgICAgICAgKCogRml4IHRoZSBcIi4wXCIgc3VmZml4ICopXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggeCB+c3VmZml4OlwiLjBcIlxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeCA9IEJ5dGVzLm9mX3N0cmluZyB4IGluXG4gICAgICAgICAgbGV0IG4gPSBCeXRlcy5sZW5ndGggeCBpblxuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMSkgJyAnO1xuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMikgJyAnO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6eClcbiAgICAgICAgZWxzZSB4XG4gICAgICBpblxuICAgICAgbGV0IGNvbnYgbWFnIHQgZGVub21pbmF0b3IgPVxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIChkZW5vbWluYXRvciA9IDEwMC4gJiYgdCA+PSA5OTkuOTUpXG4gICAgICAgICAgfHwgKGRlbm9taW5hdG9yID49IDEwMF8wMDAuICYmIHQgPj0gcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOS45OTlfNSkpKTtcbiAgICAgICAgYXNzZXJ0ICh0IDwgcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOV85OTkuNSkpO1xuICAgICAgICBsZXQgaSwgZCA9XG4gICAgICAgICAgbGV0IGsgPSBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3I6dCB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgICAoKiBbbW9kXSBpcyBva2F5IGhlcmUgYmVjYXVzZSB3ZSBrbm93IGkgPj0gMC4gKilcbiAgICAgICAgICBrIC8gMTAsIGsgbW9kIDEwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICAgICAgYXNzZXJ0ICgwIDw9IGkgJiYgaSA8IDEwMDApO1xuICAgICAgICBhc3NlcnQgKDAgPD0gZCAmJiBkIDwgMTApO1xuICAgICAgICBpZiBkID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIlcyVkJXMgXCIgcHJlZml4IGkgbWFnXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJWQlcyVkXCIgcHJlZml4IGkgbWFnIGRcbiAgICAgIGluXG4gICAgICAoKiBXaGlsZSB0aGUgc3RhbmRhcmQgbWV0cmljIHByZWZpeGVzIChlLmcuIGNhcGl0YWwgXCJNXCIgcmF0aGVyIHRoYW4gXCJtXCIsIFsxXSkgYXJlXG4gICAgICAgICBub21pbmFsbHkgbW9yZSBjb3JyZWN0LCB0aGlzIGhpbmRlcnMgcmVhZGFiaWxpdHkgaW4gb3VyIGNhc2UuICBFLmcuLCAxMEc2IGFuZFxuICAgICAgICAgMTA2NiBsb29rIHRvbyBzaW1pbGFyLiAgVGhhdCdzIGFuIGV4dHJlbWUgZXhhbXBsZSwgYnV0IGluIGdlbmVyYWwgayxtLGcsdCxwXG4gICAgICAgICBwcm9iYWJseSBzdGFuZCBvdXQgYmV0dGVyIHRoYW4gSyxNLEcsVCxQIHdoZW4gaW50ZXJzcGVyc2VkIHdpdGggZGlnaXRzLlxuXG4gICAgICAgICBbMV0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRyaWNfcHJlZml4ICopXG4gICAgICAoKiBUaGUgdHJpY2sgaGVyZSBpcyB0aGF0OlxuICAgICAgICAgLSB0aGUgZmlyc3QgYm91bmRhcnkgKDk5OS45NSkgYXMgYSBmbG9hdCBpcyBzbGlnaHRseSBvdmVyLXJlcHJlc2VudGVkIChzbyBpdCBpc1xuICAgICAgICAgICBiZXR0ZXIgYXBwcm94aW1hdGVkIGFzIFwiMWtcIiB0aGFuIGFzIFwiOTk5LjlcIiksXG4gICAgICAgICAtIHRoZSBvdGhlciBib3VuZGFyaWVzIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBiZWNhdXNlIHRoZXkgYXJlIGludGVnZXJzLlxuICAgICAgICAgICBUaGF0J3Mgd2h5IHRoZSBzdHJpY3QgZXF1YWxpdGllcyBiZWxvdyBkbyBleGFjdGx5IHdoYXQgd2Ugd2FudC4gKilcbiAgICAgIGlmIHQgPCA5OTkuOTVFMFxuICAgICAgdGhlbiBjb252X29uZSB0XG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFM1xuICAgICAgdGhlbiBjb252IGtpbG8gdCAxMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFNlxuICAgICAgdGhlbiBjb252IG1lZ2EgdCAxMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTlcbiAgICAgIHRoZW4gY29udiBnaWdhIHQgMTAwXzAwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFMTJcbiAgICAgIHRoZW4gY29udiB0ZXJhIHQgMTAwXzAwMF8wMDBfMDAwLlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBldGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0XG4gICAgICAgIHwgU29tZSBwZXRhIC0+XG4gICAgICAgICAgaWYgdCA8IDk5OS45NUUxNVxuICAgICAgICAgIHRoZW4gY29udiBwZXRhIHQgMTAwXzAwMF8wMDBfMDAwXzAwMC5cbiAgICAgICAgICBlbHNlIHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdClcbiAgICBpblxuICAgIGlmIHQgPj0gMC4gdGhlbiBnbyB0IGVsc2UgXCItXCIgXiBnbyB+LS50XG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIHQgPVxuICB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgfmtpbG86XCJrXCIgfm1lZ2E6XCJtXCIgfmdpZ2E6XCJnXCIgfnRlcmE6XCJ0XCIgfnBldGE6XCJwXCIgKClcbjs7XG5cbigqIFBlcmZvcm1hbmNlIG5vdGU6IEluaXRpYWxpemluZyB0aGUgYWNjdW11bGF0b3IgdG8gMSByZXN1bHRzIGluIG9uZSBleHRyYVxuICAgbXVsdGlwbHk7IGUuZy4sIHRvIGNvbXB1dGUgeCAqKiA0LCB3ZSBpbiBwcmluY2lwbGUgb25seSBuZWVkIDIgbXVsdGlwbGllcyxcbiAgIGJ1dCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSAzIG11bHRpcGxpZXMuICBIb3dldmVyLCBhdHRlbXB0cyB0byBhdm9pZCB0aGlzXG4gICAobGlrZSBkZWNyZW1lbnRpbmcgbiBhbmQgaW5pdGlhbGl6aW5nIGFjY3VtIHRvIGJlIHgsIG9yIGhhbmRsaW5nIHNtYWxsXG4gICBleHBvbmVudHMgYXMgYSBzcGVjaWFsIGNhc2UpIGhhdmUgbm90IHlpZWxkZWQgYW55dGhpbmcgdGhhdCBpcyBhIG5ldFxuICAgaW1wcm92ZW1lbnQuXG4qKVxubGV0IGludF9wb3cgeCBuID1cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBuID0gMFxuICB0aGVuIDEuXG4gIGVsc2UgKFxuICAgICgqIFVzaW5nIFt4ICsuICgtMC4pXSBvbiB0aGUgZm9sbG93aW5nIGxpbmUgY29udmluY2VzIHRoZSBjb21waWxlciB0byBhdm9pZCBhIGNlcnRhaW5cbiAgICAgICBib3hpbmcgKHRoYXQgd291bGQgcmVzdWx0IGluIGFsbG9jYXRpb24gaW4gZWFjaCBpdGVyYXRpb24pLiAgU29vbiwgdGhlIGNvbXBpbGVyXG4gICAgICAgc2hvdWxkbid0IG5lZWQgdGhpcyBcImhpbnRcIiB0byBhdm9pZCB0aGUgYm94aW5nLiAgVGhlIHJlYXNvbiB3ZSBhZGQgLTAgcmF0aGVyIHRoYW4gMFxuICAgICAgIGlzIHRoYXQgW3ggKy4gKC0wLildIGlzIGFwcGFyZW50bHkgYWx3YXlzIHRoZSBzYW1lIGFzIFt4XSwgd2hlcmVhcyBbeCArLiAwLl0gaXNcbiAgICAgICBub3QsIGluIHRoYXQgaXQgc2VuZHMgWy0wLl0gdG8gWzAuXS4gIFRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGJlY2F1c2Ugd2Ugd2FudFxuICAgICAgIFtpbnRfcG93ICgtMC4pICgtMSldIHRvIHJldHVybiBuZWdfaW5maW5pdHkganVzdCBsaWtlIFstMC4gKiogLTEuXSB3b3VsZC4gICopXG4gICAgbGV0IHggPSByZWYgKHggKy4gLTAuKSBpblxuICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICBsZXQgYWNjdW0gPSByZWYgMS4gaW5cbiAgICBpZiAhbiA8IDBcbiAgICB0aGVuIChcbiAgICAgICgqIHggKiogbiA9ICgxL3gpICoqIC1uICopXG4gICAgICB4IDo9IDEuIC8uICF4O1xuICAgICAgbiA6PSB+LSAoIW4pO1xuICAgICAgaWYgIW4gPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogbiBtdXN0IGhhdmUgYmVlbiBtaW5faW50LCBzbyBpdCBpcyBub3cgc28gYmlnIHRoYXQgaXQgaGFzIHdyYXBwZWQgYXJvdW5kLlxuICAgICAgICAgICBXZSBkZWNyZW1lbnQgaXQgc28gdGhhdCBpdCBsb29rcyBwb3NpdGl2ZSBhZ2FpbiwgYnV0IGFjY29yZGluZ2x5IGhhdmVcbiAgICAgICAgICAgdG8gcHV0IGFuIGV4dHJhIGZhY3RvciBvZiB4IGluIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgICAgKilcbiAgICAgICAgYWNjdW0gOj0gIXg7XG4gICAgICAgIGRlY3IgbikpO1xuICAgICgqIExldHRpbmcgW2FdIGRlbm90ZSAodGhlIG9yaWdpbmFsIHZhbHVlIG9mKSBbeCAqKiBuXSwgd2UgbWFpbnRhaW5cbiAgICAgICB0aGUgaW52YXJpYW50IHRoYXQgWyh4ICoqIG4pICouIGFjY3VtID0gYV0uICopXG4gICAgd2hpbGUgIW4gPiAxIGRvXG4gICAgICBpZiAhbiBsYW5kIDEgPD4gMCB0aGVuIGFjY3VtIDo9ICF4ICouICFhY2N1bTtcbiAgICAgIHggOj0gIXggKi4gIXg7XG4gICAgICBuIDo9ICFuIGxzciAxXG4gICAgZG9uZTtcbiAgICAoKiBuIGlzIG5lY2Vzc2FyaWx5IDEgYXQgdGhpcyBwb2ludCwgc28gdGhlcmUgaXMgb25lIGFkZGl0aW9uYWxcbiAgICAgICBtdWx0aXBsaWNhdGlvbiBieSB4LiAqKVxuICAgICF4ICouICFhY2N1bSlcbjs7XG5cbmxldCByb3VuZF9nZW4geCB+aG93ID1cbiAgaWYgeCA9IDAuXG4gIHRoZW4gMC5cbiAgZWxzZSBpZiBub3QgKGlzX2Zpbml0ZSB4KVxuICB0aGVuIHhcbiAgZWxzZSAoXG4gICAgKCogU2lnbmlmaWNhbnQgZGlnaXRzIGFuZCBkZWNpbWFsIGRpZ2l0cy4gKilcbiAgICBsZXQgc2QsIGRkID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGBzaWduaWZpY2FudF9kaWdpdHMgc2QgLT5cbiAgICAgICAgbGV0IGRkID0gc2QgLSB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgICB8IGBkZWNpbWFsX2RpZ2l0cyBkZCAtPlxuICAgICAgICBsZXQgc2QgPSBkZCArIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBzZCA8IDBcbiAgICB0aGVuIDAuXG4gICAgZWxzZSBpZiBzZCA+PSAxN1xuICAgIHRoZW4geFxuICAgIGVsc2UgKFxuICAgICAgKCogQ2hvb3NlIHRoZSBvcmRlciB0aGF0IGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LiBTbWFsbCBwb3NpdGl2ZVxuICAgICAgICAgaW50ZWdlcnMgYXJlLCBidXQgdGhlaXIgaW52ZXJzZXMgaW4gbW9zdCBjYXNlcyBhcmUgbm90LiAqKVxuICAgICAgbGV0IGFic19kZCA9IEludC5hYnMgZGQgaW5cbiAgICAgIGlmIGFic19kZCA+IDIyIHx8IHNkID49IDE2XG4gICAgICAoKiAxMCoqMjIgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIGJ1dCAxMCoqMjMgaXMgbm90LCBzbyB1c2UgdGhlIHNsb3dcbiAgICAgICAgIHBhdGguICBTaW1pbGFybHksIGlmIHdlIG5lZWQgMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGluIHRoZSByZXN1bHQsIHRoZW4gdGhlIGludGVnZXJcbiAgICAgICAgIFtyb3VuZF9uZWFyZXN0ICh4IDxvcD4gb3JkZXIpXSBtaWdodCBub3QgYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIHNpbmNlXG4gICAgICAgICBmb3Igc29tZSByYW5nZXMgd2Ugb25seSBoYXZlIDE1IGRpZ2l0cyBvZiBwcmVjaXNpb24gZ3VhcmFudGVlZC5cblxuICAgICAgICAgVGhhdCBzYWlkLCB3ZSBhcmUgc3RpbGwgcm91bmRpbmcgdHdpY2UgaGVyZTpcblxuICAgICAgICAgMSkgZmlyc3QgdGltZSB3aGVuIHJvdW5kaW5nIFt4ICouIG9yZGVyXSBvciBbeCAvLiBvcmRlcl0gdG8gdGhlIG5lYXJlc3QgZmxvYXRcbiAgICAgICAgIChqdXN0IHRoZSBub3JtYWwgd2F5IGZsb2F0aW5nLXBvaW50IG11bHRpcGxpY2F0aW9uIG9yIGRpdmlzaW9uIHdvcmtzKSxcblxuICAgICAgICAgMikgc2Vjb25kIHRpbWUgd2hlbiBhcHBseWluZyBbcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW5dIHRvIHRoZSByZXN1bHQgb2YgdGhlXG4gICAgICAgICBhYm92ZSBvcGVyYXRpb25cblxuICAgICAgICAgU28gZm9yIGFyZ3VtZW50cyB3aXRoaW4gYW4gdWxwIGZyb20gYSB0aWUgd2UgbWlnaHQgc3RpbGwgcHJvZHVjZSBhbiBvZmYtYnktb25lXG4gICAgICAgICByZXN1bHQuICopXG4gICAgICB0aGVuIG9mX3N0cmluZyAoc3ByaW50ZiBcIiUuKmdcIiBzZCB4KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBvcmRlciA9IGludF9wb3cgMTAuIGFic19kZCBpblxuICAgICAgICBpZiBkZCA+PSAwXG4gICAgICAgIHRoZW4gcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggKi4gb3JkZXIpIC8uIG9yZGVyXG4gICAgICAgIGVsc2Ugcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggLy4gb3JkZXIpICouIG9yZGVyKSkpXG47O1xuXG5sZXQgcm91bmRfc2lnbmlmaWNhbnQgeCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgc2lnbmlmaWNhbnRfZGlnaXRzIDBcbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5yb3VuZF9zaWduaWZpY2FudDogaW52YWxpZCBhcmd1bWVudCBzaWduaWZpY2FudF9kaWdpdHM6JWRcIlxuICAgICAgc2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgICAoKVxuICBlbHNlIHJvdW5kX2dlbiB4IH5ob3c6KGBzaWduaWZpY2FudF9kaWdpdHMgc2lnbmlmaWNhbnRfZGlnaXRzKVxuOztcblxubGV0IHJvdW5kX2RlY2ltYWwgeCB+ZGVjaW1hbF9kaWdpdHMgPSByb3VuZF9nZW4geCB+aG93OihgZGVjaW1hbF9kaWdpdHMgZGVjaW1hbF9kaWdpdHMpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gICgqIGNsYW1wX3VuY2hlY2tlZCBpcyBpbiBmbG9hdDAubWwgKilcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBpZiBtaW4gPD0gbWF4XG4gIHRoZW4gT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbjs7XG5cbmxldCAoICsgKSA9ICggKy4gKVxubGV0ICggLSApID0gKCAtLiApXG5sZXQgKCAqICkgPSAoICouIClcbmxldCAoICoqICkgPSAoICoqIClcbmxldCAoIC8gKSA9ICggLy4gKVxubGV0ICggJSApID0gKCAlLiApXG5sZXQgKCB+LSApID0gKCB+LS4gKVxuXG5sZXQgc2lnbl9leG4gdCA6IFNpZ24udCA9XG4gIGlmIHQgPiAwLlxuICB0aGVuIFBvc1xuICBlbHNlIGlmIHQgPCAwLlxuICB0aGVuIE5lZ1xuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuIFplcm9cbiAgZWxzZSBFcnJvci5yYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJGbG9hdC5zaWduX2V4biBvZiBOQU5cIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgc2lnbl9vcl9uYW4gdCA6IFNpZ25fb3JfbmFuLnQgPVxuICBpZiB0ID4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwgMC4gdGhlbiBOZWcgZWxzZSBpZiB0ID0gMC4gdGhlbiBaZXJvIGVsc2UgTmFuXG47O1xuXG5sZXQgaWVlZV9uZWdhdGl2ZSB0ID1cbiAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIFBvbHkuKGJpdHMgPCBTdGRsaWIuSW50NjQuemVybylcbjs7XG5cbmxldCBleHBvbmVudF9iaXRzID0gMTFcbmxldCBtYW50aXNzYV9iaXRzID0gNTJcbmxldCBleHBvbmVudF9tYXNrNjQgPSBJbnQ2NC4oc2hpZnRfbGVmdCBvbmUgZXhwb25lbnRfYml0cyAtIG9uZSlcbmxldCBleHBvbmVudF9tYXNrID0gSW50NjQudG9faW50X2V4biBleHBvbmVudF9tYXNrNjRcbmxldCBtYW50aXNzYV9tYXNrID0gSW50NjMuKHNoaWZ0X2xlZnQgb25lIG1hbnRpc3NhX2JpdHMgLSBvbmUpXG5sZXQgbWFudGlzc2FfbWFzazY0ID0gSW50NjMudG9faW50NjQgbWFudGlzc2FfbWFza1xuXG5sZXQgaWVlZV9leHBvbmVudCB0ID1cbiAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDY0LihiaXRfYW5kIChzaGlmdF9yaWdodF9sb2dpY2FsIGJpdHMgbWFudGlzc2FfYml0cykgZXhwb25lbnRfbWFzazY0KVxuICB8PiBTdGRsaWIuSW50NjQudG9faW50XG47O1xuXG5sZXQgaWVlZV9tYW50aXNzYSB0ID1cbiAgbGV0IGJpdHMgPSBTdGRsaWIuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gICgqIFRoaXMgaXMgc2FmZSBiZWNhdXNlIG1hbnRpc3NhX21hc2s2NCA8IEludDYzLm1heF92YWx1ZSAqKVxuICAoSW50NjMub2ZfaW50NjRfdHJ1bmMpIFN0ZGxpYi5JbnQ2NC4obG9nYW5kIGJpdHMgbWFudGlzc2FfbWFzazY0KVxuOztcblxubGV0IGNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIGlmIEludC4oYml0X2FuZCBleHBvbmVudCBleHBvbmVudF9tYXNrIDw+IGV4cG9uZW50KVxuICB0aGVuIGZhaWx3aXRoZiBcImV4cG9uZW50ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgZXhwb25lbnQgZXhwb25lbnRfbWFzayAoKVxuICBlbHNlIGlmIEludDYzLihiaXRfYW5kIG1hbnRpc3NhIG1hbnRpc3NhX21hc2sgPD4gbWFudGlzc2EpXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwibWFudGlzc2EgJXMgb3V0IG9mIHJhbmdlIFswLCAlc11cIlxuICAgICAgKEludDYzLnRvX3N0cmluZyBtYW50aXNzYSlcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2FfbWFzaylcbiAgICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCBzaWduX2JpdHMgPSBpZiBuZWdhdGl2ZSB0aGVuIFN0ZGxpYi5JbnQ2NC5taW5faW50IGVsc2UgU3RkbGliLkludDY0Lnplcm8gaW5cbiAgICBsZXQgZXhwdF9iaXRzID1cbiAgICAgIFN0ZGxpYi5JbnQ2NC5zaGlmdF9sZWZ0IChTdGRsaWIuSW50NjQub2ZfaW50IGV4cG9uZW50KSBtYW50aXNzYV9iaXRzXG4gICAgaW5cbiAgICBsZXQgbWFudF9iaXRzID0gSW50NjMudG9faW50NjQgbWFudGlzc2EgaW5cbiAgICBsZXQgYml0cyA9IFN0ZGxpYi5JbnQ2NC4obG9nb3Igc2lnbl9iaXRzIChsb2dvciBleHB0X2JpdHMgbWFudF9iaXRzKSkgaW5cbiAgICBTdGRsaWIuSW50NjQuZmxvYXRfb2ZfYml0cyBiaXRzKVxuOztcblxubGV0IGNyZWF0ZV9pZWVlIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhID1cbiAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EpXG47O1xuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gIGxldCB0b19zdHJpbmcgeCA9IFByaW50Zi5zcHJpbnRmIFwiJS44R1wiIHhcbiAgbGV0IHNleHBfb2ZfdCB4ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgeClcbiAgbGV0IG9mX3N0cmluZyB4ID0gb2Zfc3RyaW5nIHhcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIFRoZXNlIGFyZSBwYXJ0bHkgaGVyZSBhcyBhIHBlcmZvcm1hbmNlIGhhY2sgdG8gYXZvaWQgc29tZSBib3hpbmcgd2UncmUgZ2V0dGluZyB3aXRoXG4gICB0aGUgdmVyc2lvbnMgd2UgZ2V0IGZyb20gW1dpdGhfemVyb10uICBUaGV5IGFsc28gbWFrZSBbRmxvYXQuaXNfbmVnYXRpdmUgbmFuXSBhbmRcbiAgIFtGbG9hdC5pc19ub25fcG9zaXRpdmUgbmFuXSByZXR1cm4gW2ZhbHNlXTsgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dIHJldHVyblxuICAgW3RydWVdLiAqKVxubGV0IGlzX3Bvc2l0aXZlIHQgPSB0ID4gMC5cbmxldCBpc19ub25fbmVnYXRpdmUgdCA9IHQgPj0gMC5cbmxldCBpc19uZWdhdGl2ZSB0ID0gdCA8IDAuXG5sZXQgaXNfbm9uX3Bvc2l0aXZlIHQgPSB0IDw9IDAuXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkZsb2F0XCJcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGVuZClcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggJSApID0gKCAlIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcblxuICBsZXQgYWJzID0gYWJzXG4gIGxldCBuZWcgPSBuZWdcbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnQgPSBvZl9pbnRcbiAgbGV0IG9mX2Zsb2F0IHggPSB4XG5lbmRcblxubW9kdWxlIE9fZG90ID0gc3RydWN0XG4gIGxldCAoICouICkgPSAoICogKVxuICBsZXQgKCArLiApID0gKCArIClcbiAgbGV0ICggLS4gKSA9ICggLSApXG4gIGxldCAoIC8uICkgPSAoIC8gKVxuICBsZXQgKCAlLiApID0gKCAlIClcbiAgbGV0ICggfi0uICkgPSAoIH4tIClcbiAgbGV0ICggKiouICkgPSAoICoqIClcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYm94ID0gYm94XG4gIGxldCBjbGFtcF91bmNoZWNrZWQgPSBjbGFtcF91bmNoZWNrZWRcbiAgbGV0IGxvd2VyX2JvdW5kX2Zvcl9pbnQgPSBsb3dlcl9ib3VuZF9mb3JfaW50XG4gIGxldCB1cHBlcl9ib3VuZF9mb3JfaW50ID0gdXBwZXJfYm91bmRfZm9yX2ludFxuICBsZXQgc3BlY2lhbGl6ZWRfaGFzaCA9IGhhc2hfZmxvYXRcbiAgbGV0IG9uZV91bHBfbGVzc190aGFuX2hhbGYgPSBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmXG4gIGxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4biA9IGludDYzX3JvdW5kX25lYXJlc3RfcG9ydGFibGVfYWxsb2NfZXhuXG4gIGxldCBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4biA9IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuXG4gIGxldCBpcm91bmRfbmVhcmVzdF9leG5fNjQgPSBpcm91bmRfbmVhcmVzdF9leG5fNjRcbmVuZFxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbigqIFRoZXNlIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkgcmVwbGFjZSBkZWZhdWx0cyBpbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuXG5cbiAgIFRoZSBkZXNpcmVkIGJlaGF2aW9yIGhlcmUgaXMgdG8gcHJvcGFnYXRlIGEgbmFuIGlmIGVpdGhlciBhcmd1bWVudCBpcyBuYW4uIEJlY2F1c2UgdGhlXG4gICBmaXJzdCBjb21wYXJpc29uIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZSBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLCBpdCBzdWZmaWNlcyB0b1xuICAgY2hlY2sgaWYgeCBpcyBuYW4uIFRoZW4sIHdoZW4geCBpcyBuYW4gb3IgYm90aCB4IGFuZCB5IGFyZSBuYW4sIHdlIHJldHVybiB4ID0gbmFuOyBhbmRcbiAgIHdoZW4geSBpcyBuYW4gYnV0IG5vdCB4LCB3ZSByZXR1cm4geSA9IG5hbi5cblxuICAgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBpbXBsZW1lbnQgdGhlc2UgZnVuY3Rpb25zLiAgVGhlIGJlbmNobWFyayBiZWxvdyBzaG93cyBhIGZld1xuICAgZGlmZmVyZW50IHZlcnNpb25zLiAgVGhpcyBiZW5jaG1hcmsgd2FzIHJ1biBvdmVyIGFuIGFycmF5IG9mIHJhbmRvbSBmbG9hdHMgKG5vbmUgb2ZcbiAgIHdoaWNoIGFyZSBuYW4pLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi40MnVzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMi4wMnVzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS44OHVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG5cbiAgIFRoZSBiZW5jaG1hcmsgYmVsb3cgd2FzIHJ1biB3aGVuIHggPiB5IGlzIGFsd2F5cyB0cnVlIChhZ2Fpbiwgbm8gbmFuIHZhbHVlcykuXG5cbiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICAg4pSCIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pSCIFRpbWUvUnVuIOKUglxuICAg4pSc4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSkXG4gICDilIIgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeSDilIIgICAyLjgzdXMg4pSCXG4gICDilIIgaWYgaXNfbmFuIHggfHwgeCA8IHkgdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjk3dXMg4pSCXG4gICDilIIgaWYgeCA8IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeSAgICAgICAgICAgICDilIIgICAxLjU2dXMg4pSCXG4gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiopXG5sZXQgbWluICh4IDogdCkgeSA9IGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbmxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgfHwgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJ1ZmZlcl9pbnRmXG5pbmNsdWRlIFN0ZGxpYi5CdWZmZXJcblxubGV0IGNvbnRlbnRzX2J5dGVzID0gdG9fYnl0ZXNcbmxldCBhZGRfc3Vic3RyaW5nIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3Vic3RyaW5nIHQgcyBwb3MgbGVuXG5sZXQgYWRkX3N1YmJ5dGVzIHQgcyB+cG9zIH5sZW4gPSBhZGRfc3ViYnl0ZXMgdCBzIHBvcyBsZW5cbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2Zfc3RyaW5nIChjb250ZW50cyB0KVxuXG5sZXQgY2FtbF9idWZmZXJfbGVuZ3RoID1cbiAgKFN0ZGxpYi5PYmoubWFnaWMgKFN0ZGxpYi5CdWZmZXIubGVuZ3RoIDogdCAtPiBpbnQpIDogKHRbQGxvY2FsXSkgLT4gaW50KVxuOztcblxubGV0IGNhbWxfYnVmZmVyX2JsaXQgPVxuICAoU3RkbGliLk9iai5tYWdpY1xuICAgICAoU3RkbGliLkJ1ZmZlci5ibGl0IDogU3RkbGliLkJ1ZmZlci50IC0+IGludCAtPiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdClcbiAgIDogKFN0ZGxpYi5CdWZmZXIudFtAbG9jYWxdKSAtPiBpbnQgLT4gKEJ5dGVzLnRbQGxvY2FsXSkgLT4gaW50IC0+IGludCAtPiB1bml0KVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGxlbmd0aCA9IGNhbWxfYnVmZmVyX2xlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgICAgIGxldCBsZW5ndGggPSBCeXRlcy5sZW5ndGhcblxuICAgICAgbGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgICAgICAgY2FtbF9idWZmZXJfYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoU3RkbGliLkJ1ZmZlcikgKFRvX2J5dGVzKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPSBTdGRsaWIuUHJpbnRleGMucmF3X2JhY2t0cmFjZVxuXG5sZXQgZWxpZGUgPSByZWYgZmFsc2VcbmxldCBlbGlkZWRfbWVzc2FnZSA9IFwiPGJhY2t0cmFjZSBlbGlkZWQgaW4gdGVzdD5cIlxuXG5sZXQgZ2V0ID8oYXRfbW9zdF9udW1fZnJhbWVzID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBTdGRsaWIuUHJpbnRleGMuZ2V0X2NhbGxzdGFjayBhdF9tb3N0X251bV9mcmFtZXNcbjs7XG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIGlmICFlbGlkZSB0aGVuIGVsaWRlZF9tZXNzYWdlIGVsc2UgU3RkbGliLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHRcbjs7XG5cbmxldCB0b19zdHJpbmdfbGlzdCB0ID0gU3RyaW5nLnNwbGl0X2xpbmVzICh0b19zdHJpbmcgdClcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuTGlzdCAoTGlzdC5tYXAgKHRvX3N0cmluZ19saXN0IHQpIH5mOihmdW4geCAtPiBTZXhwLkF0b20geCkpXG5cbm1vZHVsZSBFeG4gPSBzdHJ1Y3RcbiAgbGV0IHNldF9yZWNvcmRpbmcgPSBTdGRsaWIuUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZVxuICBsZXQgYW1fcmVjb3JkaW5nID0gU3RkbGliLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXNcbiAgbGV0IG1vc3RfcmVjZW50ICgpID0gU3RkbGliLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpXG5cbiAgbGV0IG1vc3RfcmVjZW50X2Zvcl9leG4gZXhuID1cbiAgICBpZiBFeG4uaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCBleG4gdGhlbiBTb21lIChtb3N0X3JlY2VudCAoKSkgZWxzZSBOb25lXG4gIDs7XG5cbiAgKCogV2UgdHVybiBvbiBiYWNrdHJhY2VzIGJ5IGRlZmF1bHQgaWYgT0NBTUxSVU5QQVJBTSBkb2Vzbid0IGV4cGxpY2l0bHkgbWVudGlvbiB0aGVtLiAqKVxuICBsZXQgbWF5YmVfc2V0X3JlY29yZGluZyAoKSA9XG4gICAgbGV0IG9jYW1scnVucGFyYW1fbWVudGlvbnNfYmFja3RyYWNlcyA9XG4gICAgICBtYXRjaCBTeXMuZ2V0ZW52IFwiT0NBTUxSVU5QQVJBTVwiIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIHggLT4gTGlzdC5leGlzdHMgKFN0cmluZy5zcGxpdCB4IH5vbjonLCcpIH5mOihTdHJpbmcuaXNfcHJlZml4IH5wcmVmaXg6XCJiXCIpXG4gICAgaW5cbiAgICBpZiBub3Qgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzIHRoZW4gc2V0X3JlY29yZGluZyB0cnVlXG4gIDs7XG5cbiAgKCogdGhlIGNhbGxlciBzZXQgc29tZXRoaW5nLCB0aGV5IGFyZSByZXNwb25zaWJsZSAqKVxuXG4gIGxldCB3aXRoX3JlY29yZGluZyBiIH5mID1cbiAgICBsZXQgc2F2ZWQgPSBhbV9yZWNvcmRpbmcgKCkgaW5cbiAgICBzZXRfcmVjb3JkaW5nIGI7XG4gICAgRXhuLnByb3RlY3QgfmYgfmZpbmFsbHk6KGZ1biAoKSAtPiBzZXRfcmVjb3JkaW5nIHNhdmVkKVxuICA7O1xuZW5kXG5cbmxldCBpbml0aWFsaXplX21vZHVsZSAoKSA9IEV4bi5tYXliZV9zZXRfcmVjb3JkaW5nICgpXG4iLCIoKiogVGhpcyBtb2R1bGUgaXMgdGhlIHRvcGxldmVsIG9mIHRoZSBCYXNlIGxpYnJhcnk7IGl0J3Mgd2hhdCB5b3UgZ2V0IHdoZW4geW91IHdyaXRlXG4gICAgW29wZW4gQmFzZV0uXG5cbiAgICBUaGUgZ29hbCBvZiBCYXNlIGlzIGJvdGggdG8gYmUgYSBtb3JlIGNvbXBsZXRlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggcmljaGVyIEFQSXMsXG4gICAgYW5kIHRvIGJlIG1vcmUgY29uc2lzdGVudCBpbiBpdHMgZGVzaWduLiBGb3IgaW5zdGFuY2UsIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5XG4gICAgc29tZSB0aGluZ3MgaGF2ZSBtb2R1bGVzIGFuZCBvdGhlcnMgZG9uJ3Q7IGluIEJhc2UsIGV2ZXJ5dGhpbmcgaXMgYSBtb2R1bGUuXG5cbiAgICBCYXNlIGV4dGVuZHMgc29tZSBtb2R1bGVzIGFuZCBkYXRhIHN0cnVjdHVyZXMgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSwgbGlrZSBbQXJyYXldLFxuICAgIFtCdWZmZXJdLCBbQnl0ZXNdLCBbQ2hhcl0sIFtIYXNodGJsXSwgW0ludDMyXSwgW0ludDY0XSwgW0xhenldLCBbTGlzdF0sIFtNYXBdLFxuICAgIFtOYXRpdmVpbnRdLCBbUHJpbnRmXSwgW1JhbmRvbV0sIFtTZXRdLCBbU3RyaW5nXSwgW1N5c10sIGFuZCBbVWNoYXJdLiBPbmUga2V5XG4gICAgZGlmZmVyZW5jZSBpcyB0aGF0IEJhc2UgZG9lc24ndCB1c2UgZXhjZXB0aW9ucyBhcyBtdWNoIGFzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGFuZFxuICAgIGluc3RlYWQgbWFrZXMgaGVhdnkgdXNlIG9mIHRoZSBbUmVzdWx0XSB0eXBlLCBhcyBpbjpcblxuICAgIHtbIHR5cGUgKCdhLCdiKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdiIF19XG5cbiAgICBCYXNlIGFsc28gYWRkcyBlbnRpcmVseSBuZXcgbW9kdWxlcywgbW9zdCBub3RhYmx5OlxuXG4gICAgLSBbQ29tcGFyYWJsZV0sIFtDb21wYXJhdG9yXSwgYW5kIFtDb21wYXJpc29uc10gaW4gbGlldSBvZiBwb2x5bW9ycGhpYyBjb21wYXJlLlxuICAgIC0gW0NvbnRhaW5lcl0sIHdoaWNoIHByb3ZpZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgYWNyb3NzIGNvbnRhaW5lci1saWtlIGRhdGFcbiAgICAgIHN0cnVjdHVyZXMgKGFycmF5cywgbGlzdHMsIHN0cmluZ3MpLlxuICAgIC0gW1Jlc3VsdF0sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdLCBzdXBwb3J0aW5nIHRoZSBvci1lcnJvciBwYXR0ZXJuLlxuKilcblxuKCpfIFdlIGhpZGUgdGhpcyBmcm9tIHRoZSB3ZWIgZG9jcyBiZWNhdXNlIHRoZSBsaW5lIHdyYXBwaW5nIGlzIGJhZCwgbWFraW5nIGl0XG4gIHByZXR0eSBtdWNoIGluc2NydXRhYmxlLiAqKVxuKCoqLyoqKVxuXG4oKiBUaGUgaW50ZW50IGlzIHRvIHNoYWRvdyBhbGwgb2YgSU5SSUEncyBzdGFuZGFyZCBsaWJyYXJ5LiAgTW9kdWxlcyBiZWxvdyB3b3VsZCBjYXVzZVxuICAgY29tcGlsYXRpb24gZXJyb3JzIHdpdGhvdXQgYmVpbmcgcmVtb3ZlZCBmcm9tIFtTaGFkb3dfc3RkbGliXSBiZWZvcmUgaW5jbHVzaW9uLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICAoKiBNb2R1bGVzIGRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbl9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuSW5fY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIE91dF9jaGFubmVsIDo9IFNoYWRvd19zdGRsaWIuT3V0X2NoYW5uZWxcbiAgd2l0aCBtb2R1bGUgUHJpbnRmIDo9IFNoYWRvd19zdGRsaWIuUHJpbnRmXG4gIHdpdGggbW9kdWxlIFF1ZXVlIDo9IFNoYWRvd19zdGRsaWIuUXVldWVcbiAgd2l0aCBtb2R1bGUgUmFuZG9tIDo9IFNoYWRvd19zdGRsaWIuUmFuZG9tXG4gIHdpdGggbW9kdWxlIFJlc3VsdCA6PSBTaGFkb3dfc3RkbGliLlJlc3VsdFxuICB3aXRoIG1vZHVsZSBTZXQgOj0gU2hhZG93X3N0ZGxpYi5TZXRcbiAgd2l0aCBtb2R1bGUgU3RhY2sgOj0gU2hhZG93X3N0ZGxpYi5TdGFja1xuICB3aXRoIG1vZHVsZSBTdHJpbmcgOj0gU2hhZG93X3N0ZGxpYi5TdHJpbmdcbiAgd2l0aCBtb2R1bGUgU3lzIDo9IFNoYWRvd19zdGRsaWIuU3lzXG4gIHdpdGggbW9kdWxlIFVjaGFyIDo9IFNoYWRvd19zdGRsaWIuVWNoYXJcbiAgd2l0aCBtb2R1bGUgVW5pdCA6PSBTaGFkb3dfc3RkbGliLlVuaXRcbiAgKCogU3VwcG9ydCBmb3IgZ2VuZXJhdGVkIGxleGVycyAqKVxuICB3aXRoIG1vZHVsZSBMZXhpbmcgOj0gU2hhZG93X3N0ZGxpYi5MZXhpbmdcbiAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBmb3JtYXQgOj0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0IDo9ICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NFxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgOj0gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDZcbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWYpXG4gIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbigqKi8qKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJpbmFyeV9zZWFyY2ggPSBCaW5hcnlfc2VhcmNoXG5tb2R1bGUgQmluYXJ5X3NlYXJjaGFibGUgPSBCaW5hcnlfc2VhcmNoYWJsZVxubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCdWZmZXIgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21wYXJhYmxlID0gQ29tcGFyYWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBDb21wYXJpc29uc1xubW9kdWxlIENvbnRhaW5lciA9IENvbnRhaW5lclxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVxdWFsID0gRXF1YWxcbm1vZHVsZSBFcnJvciA9IEVycm9yXG5tb2R1bGUgRXhuID0gRXhuXG5tb2R1bGUgRmllbGQgPSBGaWVsZFxubW9kdWxlIEZsb2F0ID0gRmxvYXRcbm1vZHVsZSBGbG9hdGFibGUgPSBGbG9hdGFibGVcbm1vZHVsZSBGbiA9IEZuXG5tb2R1bGUgRm9ybWF0dGVyID0gRm9ybWF0dGVyXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0XG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZVxubW9kdWxlIEhhc2hlciA9IEhhc2hlclxubW9kdWxlIEhhc2h0YmwgPSBIYXNodGJsXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gSWRlbnRpZmlhYmxlXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50YWJsZSA9IEludGFibGVcbm1vZHVsZSBJbnRfbWF0aCA9IEludF9tYXRoXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmRcbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTmF0aXZlaW50ID0gTmF0aXZlaW50XG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmdcbm1vZHVsZSBPcHRpb24gPSBPcHRpb25cbm1vZHVsZSBPcHRpb25fYXJyYXkgPSBPcHRpb25fYXJyYXlcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yXG5tb2R1bGUgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbiA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cbm1vZHVsZSBPcmRlcmluZyA9IE9yZGVyaW5nXG5tb2R1bGUgUG9seSA9IFBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gUG9wY291bnRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIHRoZSBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IFByZXR0eV9wcmludGVyXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgTGlua2VkX3F1ZXVlID0gTGlua2VkX3F1ZXVlXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFJhbmRvbSA9IFJhbmRvbVxubW9kdWxlIFJlZiA9IFJlZlxubW9kdWxlIFJlc3VsdCA9IFJlc3VsdFxubW9kdWxlIFNlcXVlbmNlID0gU2VxdWVuY2Vcbm1vZHVsZSBTZXQgPSBTZXRcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlXG5tb2R1bGUgU2lnbiA9IFNpZ25cbm1vZHVsZSBTaWduX29yX25hbiA9IFNpZ25fb3JfbmFuXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvblxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBTdGFnZWRcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmdcbm1vZHVsZSBTdHJpbmdhYmxlID0gU3RyaW5nYWJsZVxubW9kdWxlIFN5cyA9IFN5c1xubW9kdWxlIFQgPSBUXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gVW5pZm9ybV9hcnJheVxubW9kdWxlIFVuaXQgPSBVbml0XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50XG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG4oKiBBdm9pZCBhIGxldmVsIG9mIGluZGlyZWN0aW9uIGZvciB1c2VzIG9mIHRoZSBzaWduYXR1cmVzIGRlZmluZWQgaW4gW1RdLiAqKVxuaW5jbHVkZSBUXG5cbigqIFRoaXMgaXMgYSBoYWNrIHNvIHRoYXQgb2RvYyBjcmVhdGVzIGJldHRlciBkb2N1bWVudGF0aW9uLiAqKVxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwX3dpdGhfY29tcGFyYWJsZSAoKiogQGlubGluZSAqKVxuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzID0gc3RydWN0XG4gIG1vZHVsZSBGaWVsZHNsaWIgPSBGaWVsZHNsaWJcbiAgbW9kdWxlIEdsb2JhbGl6ZSA9IEdsb2JhbGl6ZVxuICBtb2R1bGUgT2JqX2xvY2FsID0gT2JqX2xvY2FsXG4gIG1vZHVsZSBQcHhfY29tcGFyZV9saWIgPSBQcHhfY29tcGFyZV9saWJcbiAgbW9kdWxlIFBweF9lbnVtZXJhdGVfbGliID0gUHB4X2VudW1lcmF0ZV9saWJcbiAgbW9kdWxlIFBweF9oYXNoX2xpYiA9IFBweF9oYXNoX2xpYlxuICBtb2R1bGUgVmFyaWFudHNsaWIgPSBWYXJpYW50c2xpYlxuXG4gIGxldCBhbV90ZXN0aW5nID0gYW1fdGVzdGluZ1xuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYXJyYXkgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gaW50ID0gQXJyYXkuY29tcGFyZVxuICBsZXQgZXF1YWxfYXJyYXkgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGJvb2wgPSBBcnJheS5lcXVhbFxuXG4gIGxldCBnbG9iYWxpemVfYXJyYXkgOlxuICAgICdhLiAoKCdhW0BvY2FtbC5sb2NhbF0pIC0+ICdhKSAtPiAoJ2EgYXJyYXlbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgYXJyYXlcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAwOV8pXG4gICAgICAgIDogICgoKGFfXzAwOV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDA5XykgLT4gKGFfXzAwOV8gYXJyYXlbQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzAwOV8gYXJyYXkpIC0+XG4gICAgICBBcnJheS5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgYXJyYXlfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgYXJyYXkgPVxuICAgIEFycmF5LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2FycmF5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgQXJyYXkuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGFycmF5X3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIGFycmF5IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IEFycmF5LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2Jvb2wgPSAoQm9vbC5jb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludClcbiAgbGV0IGVxdWFsX2Jvb2wgPSAoQm9vbC5lcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2Jvb2wgOiAoYm9vbFtAb2NhbWwubG9jYWxdKSAtPiBib29sKSA9XG4gICAgKEJvb2wuZ2xvYmFsaXplIDogKGJvb2xbQG9jYW1sLmxvY2FsXSkgLT4gYm9vbClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9ib29sIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQm9vbC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9ib29sIDogYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQm9vbC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGJvb2xfb2Zfc2V4cCA9IChCb29sLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBib29sKVxuICBsZXQgc2V4cF9vZl9ib29sID0gKEJvb2wuc2V4cF9vZl90IDogYm9vbCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJvb2wudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2NoYXIgPSAoQ2hhci5jb21wYXJlIDogY2hhciAtPiBjaGFyIC0+IGludClcbiAgbGV0IGVxdWFsX2NoYXIgPSAoQ2hhci5lcXVhbCA6IGNoYXIgLT4gY2hhciAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2NoYXIgOiAoY2hhcltAb2NhbWwubG9jYWxdKSAtPiBjaGFyKSA9XG4gICAgKENoYXIuZ2xvYmFsaXplIDogKGNoYXJbQG9jYW1sLmxvY2FsXSkgLT4gY2hhcilcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9jaGFyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQ2hhci5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9jaGFyIDogY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQ2hhci5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGNoYXJfb2Zfc2V4cCA9IChDaGFyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBjaGFyKVxuICBsZXQgc2V4cF9vZl9jaGFyID0gKENoYXIuc2V4cF9vZl90IDogY2hhciAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IENoYXIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZXhuID0gRXhuLnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfZXhuID0gKEV4bi5zZXhwX29mX3QgOiBleG4gLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9mbG9hdCA9IChGbG9hdC5jb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxuICBsZXQgZXF1YWxfZmxvYXQgPSAoRmxvYXQuZXF1YWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2Zsb2F0IDogKGZsb2F0W0BvY2FtbC5sb2NhbF0pIC0+IGZsb2F0KSA9XG4gICAgKEZsb2F0Lmdsb2JhbGl6ZSA6IChmbG9hdFtAb2NhbWwubG9jYWxdKSAtPiBmbG9hdClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9mbG9hdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBGbG9hdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9mbG9hdCA6IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBGbG9hdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGZsb2F0X29mX3NleHAgPSAoRmxvYXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGZsb2F0KVxuICBsZXQgc2V4cF9vZl9mbG9hdCA9IChGbG9hdC5zZXhwX29mX3QgOiBmbG9hdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50ID0gSW50LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQgPSAoSW50LmNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludClcbiAgbGV0IGVxdWFsX2ludCA9IChJbnQuZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wpXG5cbiAgbGV0IChnbG9iYWxpemVfaW50IDogKGludFtAb2NhbWwubG9jYWxdKSAtPiBpbnQpID1cbiAgICAoSW50Lmdsb2JhbGl6ZSA6IChpbnRbQG9jYW1sLmxvY2FsXSkgLT4gaW50KVxuICA7O1xuXG4gIGxldCAoaGFzaF9mb2xkX2ludCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgSW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludCA6IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50X29mX3NleHAgPSAoSW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQpXG4gIGxldCBzZXhwX29mX2ludCA9IChJbnQuc2V4cF9vZl90IDogaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9pbnQzMiA9IChJbnQzMi5jb21wYXJlIDogaW50MzIgLT4gaW50MzIgLT4gaW50KVxuICBsZXQgZXF1YWxfaW50MzIgPSAoSW50MzIuZXF1YWwgOiBpbnQzMiAtPiBpbnQzMiAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX2ludDMyIDogKGludDMyW0BvY2FtbC5sb2NhbF0pIC0+IGludDMyKSA9XG4gICAgKEludDMyLmdsb2JhbGl6ZSA6IChpbnQzMltAb2NhbWwubG9jYWxdKSAtPiBpbnQzMilcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQzMiA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQzMi5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQzMiA6IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQzMi5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDMyX29mX3NleHAgPSAoSW50MzIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDMyKVxuICBsZXQgc2V4cF9vZl9pbnQzMiA9IChJbnQzMi5zZXhwX29mX3QgOiBpbnQzMiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50MzIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50NjQgPSBJbnQ2NC50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50NjQgPSAoSW50NjQuY29tcGFyZSA6IGludDY0IC0+IGludDY0IC0+IGludClcbiAgbGV0IGVxdWFsX2ludDY0ID0gKEludDY0LmVxdWFsIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9pbnQ2NCA6IChpbnQ2NFtAb2NhbWwubG9jYWxdKSAtPiBpbnQ2NCkgPVxuICAgIChJbnQ2NC5nbG9iYWxpemUgOiAoaW50NjRbQG9jYW1sLmxvY2FsXSkgLT4gaW50NjQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50NjQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50NjQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50NjQgOiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50NjQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQ2NF9vZl9zZXhwID0gKEludDY0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQ2NClcbiAgbGV0IHNleHBfb2ZfaW50NjQgPSAoSW50NjQuc2V4cF9vZl90IDogaW50NjQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDY0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnRcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAtPiBpbnQgPSBMaXN0LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2xpc3QgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGxpc3QgLT4gJ2EgbGlzdCAtPiBib29sID0gTGlzdC5lcXVhbFxuXG4gIGxldCBnbG9iYWxpemVfbGlzdCA6XG4gICAgJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSBsaXN0W0BvY2FtbC5sb2NhbF0pIC0+ICdhIGxpc3RcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA2Ml8pXG4gICAgICAgIDogICgoKGFfXzA2Ml9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDYyXykgLT4gKGFfXzA2Ml8gbGlzdFtAb2NhbWwubG9jYWxdKVxuICAgICAgICAgICAgLT4gYV9fMDYyXyBsaXN0KSAtPlxuICAgICAgTGlzdC5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIGxpc3RcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgTGlzdC5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBsaXN0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGxpc3QgPVxuICAgIExpc3QudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfbGlzdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBsaXN0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgTGlzdC5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgbGlzdF9zZXhwX2dyYW1tYXIgOlxuICAgICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSBsaXN0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IExpc3QudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX25hdGl2ZWludCA9IChOYXRpdmVpbnQuY29tcGFyZSA6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gaW50KVxuICBsZXQgZXF1YWxfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5lcXVhbCA6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9uYXRpdmVpbnQgOiAobmF0aXZlaW50W0BvY2FtbC5sb2NhbF0pIC0+IG5hdGl2ZWludCkgPVxuICAgIChOYXRpdmVpbnQuZ2xvYmFsaXplIDogKG5hdGl2ZWludFtAb2NhbWwubG9jYWxdKSAtPiBuYXRpdmVpbnQpXG4gIDs7XG5cbiAgbGV0IChoYXNoX2ZvbGRfbmF0aXZlaW50IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBOYXRpdmVpbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IChOYXRpdmVpbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IG5hdGl2ZWludClcbiAgbGV0IHNleHBfb2ZfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5zZXhwX29mX3QgOiBuYXRpdmVpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIGxldCAobmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIE5hdGl2ZWludC50X3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uIC0+IGludCA9XG4gICAgT3B0aW9uLmNvbXBhcmVcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uIC0+IGJvb2wgPVxuICAgIE9wdGlvbi5lcXVhbFxuICA7O1xuXG4gIGxldCBnbG9iYWxpemVfb3B0aW9uIDpcbiAgICAnYS4gKCgnYVtAb2NhbWwubG9jYWxdKSAtPiAnYSkgLT4gKCdhIG9wdGlvbltAb2NhbWwubG9jYWxdKSAtPiAnYSBvcHRpb25cbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzA4NV8pXG4gICAgICAgIDogICgoKGFfXzA4NV9bQG9jYW1sLmxvY2FsXSkgLT4gYV9fMDg1XykgLT4gKGFfXzA4NV8gb3B0aW9uW0BvY2FtbC5sb2NhbF0pXG4gICAgICAgICAgICAtPiBhX18wODVfIG9wdGlvbikgLT5cbiAgICAgIE9wdGlvbi5nbG9iYWxpemVcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2Egb3B0aW9uXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIE9wdGlvbi5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2Egb3B0aW9uID1cbiAgICBPcHRpb24udF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfb3B0aW9uIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIG9wdGlvbiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIE9wdGlvbi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgb3B0aW9uX3NleHBfZ3JhbW1hciA6XG4gICAgJ2EuICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIG9wdGlvbiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBPcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3JlZiA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGludCA9IFJlZi5jb21wYXJlXG4gIGxldCBlcXVhbF9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHJlZiAtPiAnYSByZWYgLT4gYm9vbCA9IFJlZi5lcXVhbFxuXG4gIGxldCBnbG9iYWxpemVfcmVmIDogJ2EuICgoJ2FbQG9jYW1sLmxvY2FsXSkgLT4gJ2EpIC0+ICgnYSByZWZbQG9jYW1sLmxvY2FsXSkgLT4gJ2EgcmVmID1cbiAgICBmdW4gKHR5cGUgYV9fMTAyXylcbiAgICAgICAgOiAgKCgoYV9fMTAyX1tAb2NhbWwubG9jYWxdKSAtPiBhX18xMDJfKSAtPiAoYV9fMTAyXyByZWZbQG9jYW1sLmxvY2FsXSlcbiAgICAgICAgICAgIC0+IGFfXzEwMl8gcmVmKSAtPlxuICAgICAgUmVmLmdsb2JhbGl6ZVxuICA7O1xuXG4gIGxldCByZWZfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgcmVmID1cbiAgICBSZWYudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfcmVmIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHJlZiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIFJlZi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgcmVmX3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSByZWYgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlZi50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfc3RyaW5nID0gKFN0cmluZy5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gIGxldCBlcXVhbF9zdHJpbmcgPSAoU3RyaW5nLmVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX3N0cmluZyA6IChzdHJpbmdbQG9jYW1sLmxvY2FsXSkgLT4gc3RyaW5nKSA9XG4gICAgKFN0cmluZy5nbG9iYWxpemUgOiAoc3RyaW5nW0BvY2FtbC5sb2NhbF0pIC0+IHN0cmluZylcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF9zdHJpbmcgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgPVxuICAgIFN0cmluZy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9zdHJpbmcgOiBzdHJpbmcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFN0cmluZy5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHN0cmluZ19vZl9zZXhwID0gKFN0cmluZy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gc3RyaW5nKVxuICBsZXQgc2V4cF9vZl9zdHJpbmcgPSAoU3RyaW5nLnNleHBfb2ZfdCA6IHN0cmluZyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoc3RyaW5nX3NleHBfZ3JhbW1hciA6IHN0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYnl0ZXMgPSBCeXRlcy50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYnl0ZXMgPSAoQnl0ZXMuY29tcGFyZSA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGludClcbiAgbGV0IGVxdWFsX2J5dGVzID0gKEJ5dGVzLmVxdWFsIDogYnl0ZXMgLT4gYnl0ZXMgLT4gYm9vbClcblxuICBsZXQgKGdsb2JhbGl6ZV9ieXRlcyA6IChieXRlc1tAb2NhbWwubG9jYWxdKSAtPiBieXRlcykgPVxuICAgIChCeXRlcy5nbG9iYWxpemUgOiAoYnl0ZXNbQG9jYW1sLmxvY2FsXSkgLT4gYnl0ZXMpXG4gIDs7XG5cbiAgbGV0IGJ5dGVzX29mX3NleHAgPSAoQnl0ZXMudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJ5dGVzKVxuICBsZXQgc2V4cF9vZl9ieXRlcyA9IChCeXRlcy5zZXhwX29mX3QgOiBieXRlcyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQnl0ZXMudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX3VuaXQgPSAoVW5pdC5jb21wYXJlIDogdW5pdCAtPiB1bml0IC0+IGludClcbiAgbGV0IGVxdWFsX3VuaXQgPSAoVW5pdC5lcXVhbCA6IHVuaXQgLT4gdW5pdCAtPiBib29sKVxuXG4gIGxldCAoZ2xvYmFsaXplX3VuaXQgOiAodW5pdFtAb2NhbWwubG9jYWxdKSAtPiB1bml0KSA9XG4gICAgKFVuaXQuZ2xvYmFsaXplIDogKHVuaXRbQG9jYW1sLmxvY2FsXSkgLT4gdW5pdClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF91bml0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgVW5pdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF91bml0IDogdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVW5pdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHVuaXRfb2Zfc2V4cCA9IChVbml0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB1bml0KVxuICBsZXQgc2V4cF9vZl91bml0ID0gKFVuaXQuc2V4cF9vZl90IDogdW5pdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFVuaXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gICgqKiBGb3JtYXQgc3R1ZmYgKilcblxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuXG4gICgqKiBMaXN0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgTGlzdC5JbmZpeFxuXG4gICgqKiBJbnQgb3BlcmF0b3JzIGFuZCBjb21wYXJpc29ucyAqKVxuXG4gIGluY2x1ZGUgSW50Lk9cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgKCoqIEZsb2F0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgRmxvYXQuT19kb3RcblxuICAoKiBUaGlzIGlzIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGJlIG9wdGltaXplZCBhd2F5IGluIG1vcmUgY29udGV4dHMuICopXG5cbiAgKCoqIFJldmVyc2UgYXBwbGljYXRpb24gb3BlcmF0b3IuIFt4IHw+IGcgfD4gZl0gaXMgZXF1aXZhbGVudCB0byBbZiAoZyAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCgnYSAtPiAnYilbQGxvY2FsX29wdF0pIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4gICgqKiBBcHBsaWNhdGlvbiBvcGVyYXRvci4gW2cgQEAgZiBAQCB4XSBpcyBlcXVpdmFsZW50IHRvIFtnIChmICh4KSldLiAqKVxuICBleHRlcm5hbCAoIEBAICkgOiAoKCdhIC0+ICdiKVtAbG9jYWxfb3B0XSkgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbiAgKCoqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG4gICgqIFRoZXNlIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgdG8gZ2V0IHRoZSBsYXp5IGJlaGF2aW9yICopXG4gIGV4dGVybmFsICggJiYgKSA6IChib29sW0Bsb2NhbF9vcHRdKSAtPiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuICBleHRlcm5hbCAoIHx8ICkgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gKGJvb2xbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBleHRlcm5hbCBub3QgOiAoYm9vbFtAbG9jYWxfb3B0XSkgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4gICgqIFRoaXMgbXVzdCBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCBmb3IgdGhlIHdhcm5pbmdzIHRvIHdvcmsgcHJvcGVybHkuICopXG4gIGV4dGVybmFsIGlnbm9yZSA6IChfW0Bsb2NhbF9vcHRdKSAtPiB1bml0ID0gXCIlaWdub3JlXCJcblxuICAoKiogQ29tbW9uIHN0cmluZyBvcGVyYXRpb25zICopXG4gIGxldCAoIF4gKSA9IFN0cmluZy4oIF4gKVxuXG4gICgqKiBSZWZlcmVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9tb2RpZnkgd2hlbiBwb3NzaWJsZSBhbmRcbiAgICAgdG8ga2VlcCByZWZlcmVuY2UgdW5ib3hpbmcgd29ya2luZyAqKVxuICBleHRlcm5hbCAoICEgKSA6ICgnYSByZWZbQGxvY2FsX29wdF0pIC0+ICdhID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgcmVmIDogJ2EgLT4gKCdhIHJlZltAbG9jYWxfb3B0XSkgPSBcIiVtYWtlbXV0YWJsZVwiXG4gIGV4dGVybmFsICggOj0gKSA6ICgnYSByZWZbQGxvY2FsX29wdF0pIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuXG4gICgqKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuICBsZXQgZnN0ID0gZnN0XG4gIGxldCBzbmQgPSBzbmRcblxuICAoKiogRXhjZXB0aW9ucyBzdHVmZiAqKVxuXG4gICgqIERlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHNvIHRoYXQgdGhlIGNvbXBpbGVyIG1heSByZXdyaXRlICclcmFpc2UnIGFzICclcmVyYWlzZScuICopXG4gIGV4dGVybmFsIHJhaXNlIDogZXhuIC0+IF8gPSBcIiVyYWlzZVwiXG5cbiAgbGV0IGZhaWx3aXRoID0gZmFpbHdpdGhcbiAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZF9hcmdcbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgKCoqIE1pc2MgKilcblxuICBleHRlcm5hbCBwaHlzX2VxdWFsIDogKCdhW0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pIC0+IGJvb2wgPSBcIiVlcVwiXG4gIGV4dGVybmFsIGZvcmNlIDogKCdhIExhenkudFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcbmVuZFxuXG5pbmNsdWRlIEV4cG9ydFxuXG5pbmNsdWRlIENvbnRhaW5lcl9pbnRmLkV4cG9ydCAoKiogQGlubGluZSAqKVxuXG5leGNlcHRpb24gTm90X2ZvdW5kX3MgPSBOb3RfZm91bmRfc1xuXG4oKiBXZSBwZXJmb3JtIHRoZXNlIHNpZGUgZWZmZWN0cyBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGVtIHRvIHJ1biBmb3IgYW55IGNvZGUgdGhhdCB1c2VzXG4gICBbQmFzZV0uICBJZiB0aGlzIHdlcmUgaW4gYW5vdGhlciBtb2R1bGUgaW4gW0Jhc2VdIHRoYXQgd2FzIG5vdCB1c2VkIGluIHNvbWUgcHJvZ3JhbSxcbiAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgIHByb2dyYW0gcmVmZXJzIHRvIGF0IGxlYXN0IG9uZSB2YWx1ZSBkaXJlY3RseSBpbiBbQmFzZV07IHJlZmVycmluZyB0byB2YWx1ZXMgaW5cbiAgIFtCYXNlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBCYWNrdHJhY2UuaW5pdGlhbGl6ZV9tb2R1bGUgKClcbiIsIm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5lbmRcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvY2F0aW9uXG5cbmxldCBzZXRfaW5wdXRfbmFtZSBuYW1lID0gaW5wdXRfbmFtZSA6PSBuYW1lXG5sZXQgc2V0X2lucHV0X2xleGJ1ZiBsZXhidWZfb3B0ID0gaW5wdXRfbGV4YnVmIDo9IGxleGJ1Zl9vcHRcblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIFtAQEB3YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSBvbGRfdCAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgPSB7XG4gICAgbG9jOiB0O1xuICAgIG1zZzogc3RyaW5nO1xuICAgIHN1Yjogb2xkX3QgbGlzdDtcbiAgICBpZl9oaWdobGlnaHQ6IHN0cmluZztcbiAgfVxuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0X2tpbmQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24ucmVwb3J0X2tpbmQgKikgPVxuICB8IFJlcG9ydF9lcnJvclxuICB8IFJlcG9ydF93YXJuaW5nIG9mIHN0cmluZ1xuICB8IFJlcG9ydF93YXJuaW5nX2FzX2Vycm9yIG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydCBvZiBzdHJpbmdcbiAgfCBSZXBvcnRfYWxlcnRfYXNfZXJyb3Igb2Ygc3RyaW5nXG5cbiAgdHlwZSBsb2NhdGlvbl9tc2cgPSAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KSBsb2NcblxuICB0eXBlIGxvY2F0aW9uX3JlcG9ydCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnQgKikgPSB7XG4gICAga2luZCA6IGxvY2F0aW9uX3JlcG9ydF9raW5kO1xuICAgIG1haW4gOiBsb2NhdGlvbl9tc2c7XG4gICAgc3ViIDogbG9jYXRpb25fbXNnIGxpc3Q7XG4gIH1cblxuICB0eXBlIHQgKCpJRl9BVF9MRUFTVCA0MDggPSBPY2FtbF9jb21tb24uTG9jYXRpb24uZXJyb3IgKikgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ID0gb2xkX3QgKilcbiAgKCoqIE9uIG9jYW1sID49IDQuMDg6IFt0XSBpcyBhIFtsb2NhdGlvbl9yZXBvcnRdIGZvciB3aGljaCBbbG9jYXRpb25fcmVwb3J0X2tpbmRdIG11c3QgYmUgW1JlcG9ydF9lcnJvcl0uICopXG5cbiAgdHlwZSB2ZXJzaW9uX3NwZWNpZmljX3QgPSBbYE5ld19lcnJvciBvZiBsb2NhdGlvbl9yZXBvcnQgfCBgT2xkX2Vycm9yIG9mIG9sZF90XVxuXG4gIGxldCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCA6IHQgLT4gdmVyc2lvbl9zcGVjaWZpY190ID0gZnVuIHggLT5cbiAgICAoKklGX0FUX0xFQVNUIDQwOCBgTmV3X2Vycm9yIHggKilcbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggYE9sZF9lcnJvciB4ICopXG5cbiAgbGV0IGlzX3dlbGxfZm9ybWVkIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsga2luZCA9IFJlcG9ydF9lcnJvcjsgXyB9IC0+IHRydWVcbiAgICB8IGBOZXdfZXJyb3IgXyAtPiBmYWxzZVxuICAgIHwgYE9sZF9lcnJvciBfIC0+IHRydWVcblxuICBsZXQgc3RyaW5nX29mX2xvY2F0aW9uX21zZyAobXNnIDogbG9jYXRpb25fbXNnKSA9IEZvcm1hdC5hc3ByaW50ZiBcIiV0XCIgbXNnLnR4dFxuXG4gIGxldCBtYWluX21zZyBlcnJvciA9XG4gICAgbWF0Y2ggdmVyc2lvbl9zcGVjaWZpY190X29mX3QgZXJyb3Igd2l0aFxuICAgIHwgYE5ld19lcnJvciB7IG1haW47IF8gfSAtPlxuICAgICAgICB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgbWFpbjsgbG9jID0gbWFpbi5sb2MgfVxuICAgIHwgYE9sZF9lcnJvciB7IG1zZzsgbG9jOyBfIH0gLT4geyB0eHQgPSBtc2c7IGxvYyB9XG5cbiAgbGV0IHN1Yl9tc2dzIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGVyciAtPiB7IHR4dCA9IHN0cmluZ19vZl9sb2NhdGlvbl9tc2cgZXJyOyBsb2MgPSBlcnIubG9jIH0pXG4gICAgICAgICAgc3ViXG4gICAgfCBgT2xkX2Vycm9yIHsgc3ViOyBfIH0gLT5cbiAgICAgICAgbGV0IHJlYyBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgICB8IHsgbG9jOyBtc2c7IHN1YjsgXyB9IDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyAoeyB0eHQgPSBtc2c7IGxvYyB9IDo6IGFjYykgKHN1YiBAIHRhaWwpXG4gICAgICAgIGluXG4gICAgICAgIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgW10gc3ViXG5cbiAgbGV0IG9mX2V4biBleG4gPVxuICAgICgqSUZfQVRfTEVBU1QgNDA2IG1hdGNoIGVycm9yX29mX2V4biBleG4gd2l0aCB8IFNvbWUgKGBPayBlKSAtPiBTb21lIGUgfCBOb25lIHwgU29tZSBgQWxyZWFkeV9kaXNwbGF5ZWQgLT4gTm9uZSAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwNiBlcnJvcl9vZl9leG4gZXhuKilcblxuICBsZXQgX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnID0geyBlcnJvciB3aXRoIG1zZyB9XG5cbiAgbGV0IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyA9XG4gICAgbGV0IHR4dCBwcGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiBtc2cgaW5cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIHR4dCB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9tc2cgZXJyb3IgbXNnID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX21zZ19vbGQgZXJyb3IgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX25ldyBlcnJvciBtc2cqKVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IHN1YiA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHsgbG9jOyB0eHQgfSAtPiB7IGxvYzsgbXNnID0gdHh0OyBzdWIgPSBbXTsgaWZfaGlnaGxpZ2h0ID0gdHh0IH0pXG4gICAgICAgIHN1YlxuICAgIGluXG4gICAgeyBsb2M7IG1zZyA9IHR4dDsgc3ViOyBpZl9oaWdobGlnaHQgPSB0eHQgfVxuXG4gIGxldCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIHsgbG9jOyB0eHQgfSA9XG4gICAgbGV0IG1rX3R4dCB4IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIHggaW5cbiAgICBsZXQgbWsgbG9jIHggPSB7IGxvYzsgdHh0ID0gbWtfdHh0IHggfSBpblxuICAgIHtcbiAgICAgIGtpbmQgPSBSZXBvcnRfZXJyb3I7XG4gICAgICBtYWluID0gbWsgbG9jIHR4dDtcbiAgICAgIHN1YiA9IExpc3QubWFwIChmdW4geyBsb2M7IHR4dCB9IC0+IG1rIGxvYyB0eHQpIHN1YjtcbiAgICB9XG5cbiAgbGV0IG1ha2UgfnN1YiBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX29sZCB+c3ViIG1zZyopXG4gICAgKCpJRl9BVF9MRUFTVCA0MDggX21ha2VfZXJyb3Jfb2ZfbWVzc2FnZV9uZXcgfnN1YiBtc2cqKVxuXG4gIGxldCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MgPSB7IGVycm9yIHdpdGggbG9jIH1cblxuICBsZXQgX3NldF9tYWluX2xvY19uZXcgZXJyb3IgbG9jID1cbiAgICBsZXQgbWFpbiA9IHsgZXJyb3IubWFpbiB3aXRoIGxvYyB9IGluXG4gICAgeyBlcnJvciB3aXRoIG1haW4gfVxuXG4gIGxldCBzZXRfbWFpbl9sb2MgZXJyb3IgbG9jID1cbiAgICAoKklGX05PVF9BVF9MRUFTVCA0MDggX3NldF9tYWluX2xvY19vbGQgZXJyb3IgbG9jKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MqKVxuZW5kXG5cbmxldCByYWlzZV9lcnJvcmYgP2xvYyBtc2cgPSByYWlzZV9lcnJvcmYgP2xvYyBtc2dcbiIsImluY2x1ZGUgT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuXG5sZXQgcGFyc2UgcyA9XG4gICgqSUZfTk9UX0FUX0xFQVNUIDQxMSBwYXJzZSBzICopXG4gICgqSUZfQVRfTEVBU1QgNDExIE9jYW1sX2NvbW1vbi5QYXJzZS5sb25naWRlbnQgQEAgTGV4aW5nLmZyb21fc3RyaW5nIEBAIHMgKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IE5vVmFyaWFuY2VcblxuICB0eXBlIGluamVjdGl2aXR5ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmluamVjdGl2aXR5ICopID1cbiAgICB8IEluamVjdGl2ZVxuICAgIHwgTm9JbmplY3Rpdml0eVxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICB8IFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgZXhjZXB0IFsnbCddLCBbJ0wnXSBhbmQgWyduJ10gYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgICAgW3tkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1dLlxuXG4gICAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLlxuICAgICopXG4gICAgfCBQY29uc3RfZmxvYXQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCoqIEF0dHJpYnV0ZXMgc3VjaCBhcyBbW1xcQGlkIEFSR11dIGFuZCBbW1xcQFxcQGlkIEFSR11dLlxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiogRXh0ZW5zaW9uIHBvaW50cyBzdWNoIGFzIFtbJWlkIEFSR10gYW5kIFslJWlkIEFSR11dLlxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqKiBbOiBUXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogWz8gUF0gIG9yICBbPyBQIHdoZW4gRV0sIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueSAgKCoqIFtfXSAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQdHlwX2Fycm93KGxibCwgVDEsIFQyKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVDEgLT4gVDJdICAgIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQxIC0+IFQyXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF90dXBsZShbVDEgOyAuLi4gOyBUbl0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZSBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgdGNvbnN0cl0gICAgICAgICAgICAgd2hlbiBbbD1bVF1dLFxuICAgICAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dICAgICB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1B0eXBfY2xhc3ModGNvbnN0ciwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWyN0Y29uc3RyXSAgICAgICAgICAgICAgIHdoZW4gW2w9W11dLFxuICAgICAgICAgICAgICAtIFtUICN0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgI3Rjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0ICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHlcbiAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICAgLSBbbGV0IGYgUCA9IEVdIGlzIHJlcHJlc2VudGVkIHVzaW5nXG4gICAgICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59W1BleHBfZnVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BleHBfYXBwbHkoRTAsIFsobDEsIEUxKSA7IC4uLiA7IChsbiwgRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSAgIChub24gbGFiZWxlZCBhcmd1bWVudCksXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZF19IChsYWJlbGxlZCBhcmd1bWVudHMpIG9yXG4gICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW21hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgKCoqIEV4cHJlc3Npb25zIFsoRTEsIC4uLiwgRW4pXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+PSAyXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAtIFtDIEVdICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFtgQV0gICB3aGVuIFtleHBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSAgICAgICAgIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFt7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW1NvbWUgRTBdXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAgKCoqIFtFLmxdICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0ICAoKiogW1t8IEUxOyAuLi47IEVuIHxdXSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW0UxOyBFMl0gKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW1BleHBfZm9yKGksIEUxLCBFMiwgZGlyZWN0aW9uLCBFMyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLlVwdG99W1VwdG9dfVxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfVtEb3dudG9dfVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICgqKiBbUGV4cF9jb2VyY2UoRSwgZnJvbSwgVCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbKEUgOj4gVCldICAgICAgd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IG1vZHVsZSBNID0gTUUgaW4gRV0gKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb24gICgqKiBbbGF6eSBFXSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGVdfSBmb3IgbWV0aG9kcyAobm90XG4gICAgICAgICAgICAgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgICAoKiogLSBbTS4oRSldXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICAgKCoqIC0gW2xldCogUCA9IEUwIGluIEUxXVxuICAgICAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzICAoKiogW0VdICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU5dXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX1bTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIF1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgXSopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gICgqKiBbb3BlbiBYXSAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzMVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzMVwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgIFRob21hcyBHYXphZ25haXJlLCBPQ2FtbFBybyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIEZhYnJpY2UgTGUgRmVzc2FudCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgSG9uZ2JvIFpoYW5nLCBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogT3JpZ2luYWwgQ29kZSBmcm9tIEJlci1tZXRhb2NhbWwsIG1vZGlmaWVkIGZvciAzLjEyLjAgYW5kIGZpeGVkICopXG4oKiBQcmludGluZyBjb2RlIGV4cHJlc3Npb25zICopXG4oKiBBdXRob3JzOiAgRWQgUGl6emksIEZhYnJpY2UgTGUgRmVzc2FudCAqKVxuKCogRXh0ZW5zaXZlIFJld3JpdGU6IEhvbmdibyBaaGFuZzogVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEgKilcbigqIFRPRE8gbW9yZSBmaW5lLWdyYWluZWQgcHJlY2VkZW5jZSBwcmV0dHktcHJpbnRpbmcgKilcblxub3BlbiBBc3RfNDE0XG5vcGVuIEFzdHR5cGVzXG5vcGVuIEZvcm1hdFxub3BlbiBMb2NhdGlvblxub3BlbiBMb25naWRlbnRcbm9wZW4gUGFyc2V0cmVlXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbmVuZFxuXG5sZXQgdmFyaWZ5X3R5cGVfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICBpZiBMaXN0Lm1lbSB2IHZsIHRoZW5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgaW5cbiAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdmFyX25hbWVzIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBsZXQgZGVzYyA9XG4gICAgICBtYXRjaCB0LnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB4O1xuICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSkgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lc1xuICAgICAgICAtPlxuICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT4gUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgc3RyaW5nO1xuICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgIGluXG4gICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgbGV0IHByZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT4gUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgaW5cbiAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICBpblxuICBsb29wIHRcblxubGV0IHByZWZpeF9zeW1ib2xzID0gWyAnISc7ICc/JzsgJ34nIF1cblxubGV0IGluZml4X3N5bWJvbHMgPVxuICBbICc9JzsgJzwnOyAnPic7ICdAJzsgJ14nOyAnfCc7ICcmJzsgJysnOyAnLSc7ICcqJzsgJy8nOyAnJCc7ICclJzsgJyMnIF1cblxuKCogdHlwZSBmaXhpdHkgPSBJbmZpeHwgUHJlZml4ICAqKVxubGV0IHNwZWNpYWxfaW5maXhfc3RyaW5ncyA9XG4gIFsgXCJhc3JcIjsgXCJsYW5kXCI7IFwibG9yXCI7IFwibHNsXCI7IFwibHNyXCI7IFwibHhvclwiOyBcIm1vZFwiOyBcIm9yXCI7IFwiOj1cIjsgXCIhPVwiOyBcIjo6XCIgXVxuXG5sZXQgbGV0b3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnbCdcbiAgJiYgcy5bMV0gPSAnZSdcbiAgJiYgcy5bMl0gPSAndCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG5sZXQgYW5kb3AgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA+IDNcbiAgJiYgcy5bMF0gPSAnYSdcbiAgJiYgcy5bMV0gPSAnbidcbiAgJiYgcy5bMl0gPSAnZCdcbiAgJiYgTGlzdC5tZW0gcy5bM10gaW5maXhfc3ltYm9sc1xuXG4oKiBkZXRlcm1pbmVzIGlmIHRoZSBzdHJpbmcgaXMgYW4gaW5maXggc3RyaW5nLlxuICAgY2hlY2tzIGJhY2t3YXJkcywgZmlyc3QgYWxsb3dpbmcgYSByZW5hbWluZyBwb3N0Zml4IChcIl8xMDJcIikgd2hpY2hcbiAgIG1heSBoYXZlIHJlc3VsdGVkIGZyb20gUGV4cCAtPiBUZXhwIC0+IFBleHAgdHJhbnNsYXRpb24sIHRoZW4gY2hlY2tpbmdcbiAgIGlmIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJlIHZhbGlkIGluZml4XG4gICBjaGFyYWN0ZXJzLiAqKVxubGV0IGZpeGl0eV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gYE5vcm1hbFxuICB8IHMgd2hlbiBMaXN0Lm1lbSBzIHNwZWNpYWxfaW5maXhfc3RyaW5ncyAtPiBgSW5maXggc1xuICB8IHMgd2hlbiBMaXN0Lm1lbSBzLlswXSBpbmZpeF9zeW1ib2xzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIHByZWZpeF9zeW1ib2xzIC0+IGBQcmVmaXggc1xuICB8IHMgd2hlbiBzLlswXSA9ICcuJyAtPiBgTWl4Zml4IHNcbiAgfCBzIHdoZW4gbGV0b3AgcyAtPiBgTGV0b3Agc1xuICB8IHMgd2hlbiBhbmRvcCBzIC0+IGBBbmRvcCBzXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCB2aWV3X2ZpeGl0eV9vZl9leHAgPSBmdW5jdGlvblxuICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgIGZpeGl0eV9vZl9zdHJpbmcgbFxuICB8IF8gLT4gYE5vcm1hbFxuXG5sZXQgaXNfaW5maXggPSBmdW5jdGlvbiBgSW5maXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX21peGZpeCA9IGZ1bmN0aW9uIGBNaXhmaXggXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGlzX2t3ZG9wID0gZnVuY3Rpb24gYExldG9wIF8gfCBgQW5kb3AgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxubGV0IGZpcnN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLlswXSA9IGNcbmxldCBsYXN0X2lzIGMgc3RyID0gc3RyIDw+IFwiXCIgJiYgc3RyLltTdHJpbmcubGVuZ3RoIHN0ciAtIDFdID0gY1xubGV0IGZpcnN0X2lzX2luIGNzIHN0ciA9IHN0ciA8PiBcIlwiICYmIExpc3QubWVtIHN0ci5bMF0gY3NcblxuKCogd2hpY2ggaWRlbnRpZmllcnMgYXJlIGluIGZhY3Qgb3BlcmF0b3JzIG5lZWRpbmcgcGFyZW50aGVzZXMgKilcbmxldCBuZWVkc19wYXJlbnMgdHh0ID1cbiAgbGV0IGZpeCA9IGZpeGl0eV9vZl9zdHJpbmcgdHh0IGluXG4gIGlzX2luZml4IGZpeCB8fCBpc19taXhmaXggZml4IHx8IGlzX2t3ZG9wIGZpeFxuICB8fCBmaXJzdF9pc19pbiBwcmVmaXhfc3ltYm9scyB0eHRcblxuKCogc29tZSBpbmZpeGVzIG5lZWQgc3BhY2VzIGFyb3VuZCBwYXJlbnMgdG8gYXZvaWQgY2xhc2hlcyB3aXRoIGNvbW1lbnRcbiAgIHN5bnRheCAqKVxubGV0IG5lZWRzX3NwYWNlcyB0eHQgPSBmaXJzdF9pcyAnKicgdHh0IHx8IGxhc3RfaXMgJyonIHR4dFxubGV0IHN0cmluZ19sb2MgcHBmIHggPSBmcHJpbnRmIHBwZiBcIiVzXCIgeC50eHRcblxuKCogYWRkIHBhcmVudGhlc2VzIHRvIGJpbmRlcnMgd2hlbiB0aGV5IGFyZSBpbiBmYWN0IGluZml4IG9yIHByZWZpeCBvcGVyYXRvcnMgKilcbmxldCBwcm90ZWN0X2lkZW50IHBwZiB0eHQgPVxuICBsZXQgZm9ybWF0IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgaWYgbm90IChuZWVkc19wYXJlbnMgdHh0KSB0aGVuIFwiJXNcIlxuICAgIGVsc2UgaWYgbmVlZHNfc3BhY2VzIHR4dCB0aGVuIFwiKEA7JXNAOylcIlxuICAgIGVsc2UgXCIoJXMpXCJcbiAgaW5cbiAgZnByaW50ZiBwcGYgZm9ybWF0IHR4dFxuXG5sZXQgcHJvdGVjdF9sb25naWRlbnQgcHBmIHByaW50X2xvbmdpZGVudCBsb25ncHJlZml4IHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlYS4lc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIlYS4oQDslc0A7KVwiXG4gICAgZWxzZSBcIiVhLiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0XG5cbnR5cGUgc3BhY2VfZm9ybWF0dGVyID0gKHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHVuaXQpIGZvcm1hdFxuXG5sZXQgb3ZlcnJpZGUgPSBmdW5jdGlvbiBPdmVycmlkZSAtPiBcIiFcIiB8IEZyZXNoIC0+IFwiXCJcblxuKCogdmFyaWFuY2UgZW5jb2Rpbmc6IG5lZWQgdG8gc3luYyB1cCB3aXRoIHRoZSBbcGFyc2VyLm1seV0gKilcbmxldCB0eXBlX3ZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBOb1ZhcmlhbmNlIC0+IFwiXCJcbiAgfCBDb3ZhcmlhbnQgLT4gXCIrXCJcbiAgfCBDb250cmF2YXJpYW50IC0+IFwiLVwiXG5cbmxldCB0eXBlX2luamVjdGl2aXR5ID0gZnVuY3Rpb24gTm9JbmplY3Rpdml0eSAtPiBcIlwiIHwgSW5qZWN0aXZlIC0+IFwiIVwiXG5cbnR5cGUgY29uc3RydWN0ID1cbiAgWyBgY29ucyBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbGlzdCBvZiBleHByZXNzaW9uIGxpc3RcbiAgfCBgbmlsXG4gIHwgYG5vcm1hbFxuICB8IGBzaW1wbGUgb2YgTG9uZ2lkZW50LnRcbiAgfCBgdHVwbGUgXVxuXG5sZXQgdmlld19leHByIHggPVxuICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gIHwgUGV4cF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IFwiKClcIjsgXyB9LCBfKSAtPiBgdHVwbGVcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pIC0+IGBuaWxcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sIFNvbWUgXykgLT5cbiAgICAgIGxldCByZWMgbG9vcCBleHAgYWNjID1cbiAgICAgICAgbWF0Y2ggZXhwIHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIF8pO1xuICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIH0gLT5cbiAgICAgICAgICAgIChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID1cbiAgICAgICAgICAgUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICAgU29tZSB7IHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBlMTsgZTIgXTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICAgICAgICk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgbG9vcCBlMiAoZTEgOjogYWNjKVxuICAgICAgICB8IGUgLT4gKExpc3QucmV2IChlIDo6IGFjYyksIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBscywgYiA9IGxvb3AgeCBbXSBpblxuICAgICAgaWYgYiB0aGVuIGBsaXN0IGxzIGVsc2UgYGNvbnMgbHNcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeCwgTm9uZSkgLT4gYHNpbXBsZSB4LnR4dFxuICB8IF8gLT4gYG5vcm1hbFxuXG5sZXQgaXNfc2ltcGxlX2NvbnN0cnVjdCA6IGNvbnN0cnVjdCAtPiBib29sID0gZnVuY3Rpb25cbiAgfCBgbmlsIHwgYHR1cGxlIHwgYGxpc3QgXyB8IGBzaW1wbGUgXyAtPiB0cnVlXG4gIHwgYGNvbnMgXyB8IGBub3JtYWwgLT4gZmFsc2VcblxubGV0IHBwID0gZnByaW50ZlxuXG50eXBlIGN0eHQgPSB7IHBpcGUgOiBib29sOyBzZW1pIDogYm9vbDsgaWZ0aGVuZWxzZSA6IGJvb2wgfVxuXG5sZXQgcmVzZXRfY3R4dCA9IHsgcGlwZSA9IGZhbHNlOyBzZW1pID0gZmFsc2U7IGlmdGhlbmVsc2UgPSBmYWxzZSB9XG5sZXQgdW5kZXJfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZSA9IHRydWUgfVxubGV0IHVuZGVyX3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWkgPSB0cnVlIH1cbmxldCB1bmRlcl9pZnRoZW5lbHNlIGN0eHQgPSB7IGN0eHQgd2l0aCBpZnRoZW5lbHNlID0gdHJ1ZSB9XG4oKlxubGV0IHJlc2V0X3NlbWkgY3R4dCA9IHsgY3R4dCB3aXRoIHNlbWk9ZmFsc2UgfVxubGV0IHJlc2V0X2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2U9ZmFsc2UgfVxubGV0IHJlc2V0X3BpcGUgY3R4dCA9IHsgY3R4dCB3aXRoIHBpcGU9ZmFsc2UgfVxuKilcblxubGV0IGxpc3QgOlxuICAgICAgJ2EuXG4gICAgICA/c2VwOnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2EgbGlzdCAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9zZXAgP2ZpcnN0ID9sYXN0IGZ1IGYgeHMgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIHNlcCA9IG1hdGNoIHNlcCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJAIFwiIDogXyBmb3JtYXQ2KSBpblxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IFsgeCBdIC0+IGZ1IGYgeFxuICAgIHwgeHMgLT5cbiAgICAgICAgbGV0IHJlYyBsb29wIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgICAgIGZ1IGYgeDtcbiAgICAgICAgICAgICAgcHAgZiBzZXA7XG4gICAgICAgICAgICAgIGxvb3AgZiB4c1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBmaXJzdDtcbiAgICAgICAgbG9vcCBmIHhzO1xuICAgICAgICBwcCBmIGxhc3RcbiAgaW5cbiAgYXV4IGYgeHNcblxubGV0IG9wdGlvbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIG9wdGlvbiAtPlxuICAgICAgdW5pdCA9XG4gZnVuID9maXJzdCA/bGFzdCBmdSBmIGEgLT5cbiAgbGV0IGZpcnN0ID0gbWF0Y2ggZmlyc3Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gKFwiXCIgOiBfIGZvcm1hdDYpXG4gIGFuZCBsYXN0ID0gbWF0Y2ggbGFzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NikgaW5cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeCAtPlxuICAgICAgcHAgZiBmaXJzdDtcbiAgICAgIGZ1IGYgeDtcbiAgICAgIHBwIGYgbGFzdFxuXG5sZXQgcGFyZW4gOlxuICAgICAgJ2EuXG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIGJvb2wgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSAtPlxuICAgICAgdW5pdCA9XG4gZnVuID8oZmlyc3QgPSAoXCJcIiA6IF8gZm9ybWF0NikpID8obGFzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgYiBmdSBmIHggLT5cbiAgaWYgYiB0aGVuIChcbiAgICBwcCBmIFwiKFwiO1xuICAgIHBwIGYgZmlyc3Q7XG4gICAgZnUgZiB4O1xuICAgIHBwIGYgbGFzdDtcbiAgICBwcCBmIFwiKVwiKVxuICBlbHNlIGZ1IGYgeFxuXG5sZXQgcmVjIGxvbmdpZGVudCBmID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBwcm90ZWN0X2lkZW50IGYgc1xuICB8IExkb3QgKHksIHMpIC0+IHByb3RlY3RfbG9uZ2lkZW50IGYgbG9uZ2lkZW50IHkgc1xuICB8IExhcHBseSAoeSwgcykgLT4gcHAgZiBcIiVhKCVhKVwiIGxvbmdpZGVudCB5IGxvbmdpZGVudCBzXG5cbmxldCBsb25naWRlbnRfbG9jIGYgeCA9IHBwIGYgXCIlYVwiIGxvbmdpZGVudCB4LnR4dFxuXG5sZXQgY29uc3RhbnQgZiA9IGZ1bmN0aW9uXG4gIHwgUGNvbnN0X2NoYXIgaSAtPiBwcCBmIFwiJUNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgTm9uZSkgLT4gcHAgZiBcIiVTXCIgaVxuICB8IFBjb25zdF9zdHJpbmcgKGksIF8sIFNvbWUgZGVsaW0pIC0+IHBwIGYgXCJ7JXN8JXN8JXN9XCIgZGVsaW0gaSBkZWxpbVxuICB8IFBjb25zdF9pbnRlZ2VyIChpLCBOb25lKSAtPiBwYXJlbiAoZmlyc3RfaXMgJy0nIGkpIChmdW4gZiAtPiBwcCBmIFwiJXNcIikgZiBpXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcbiAgfCBQY29uc3RfZmxvYXQgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfZmxvYXQgKGksIFNvbWUgbSkgLT5cbiAgICAgIHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIChpLCBtKSAtPiBwcCBmIFwiJXMlY1wiIGkgbSkgZiAoaSwgbSlcblxuKCogdHJhaWxpbmcgc3BhY2UqKVxubGV0IG11dGFibGVfZmxhZyBmID0gZnVuY3Rpb24gSW1tdXRhYmxlIC0+ICgpIHwgTXV0YWJsZSAtPiBwcCBmIFwibXV0YWJsZUA7XCJcbmxldCB2aXJ0dWFsX2ZsYWcgZiA9IGZ1bmN0aW9uIENvbmNyZXRlIC0+ICgpIHwgVmlydHVhbCAtPiBwcCBmIFwidmlydHVhbEA7XCJcblxuKCogdHJhaWxpbmcgc3BhY2UgYWRkZWQgKilcbmxldCByZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gKCkgfCBSZWN1cnNpdmUgLT4gcHAgZiBcInJlYyBcIlxuXG5sZXQgbm9ucmVjX2ZsYWcgZiByZiA9XG4gIG1hdGNoIHJmIHdpdGggTm9ucmVjdXJzaXZlIC0+IHBwIGYgXCJub25yZWMgXCIgfCBSZWN1cnNpdmUgLT4gKClcblxubGV0IGRpcmVjdGlvbl9mbGFnIGYgPSBmdW5jdGlvblxuICB8IFVwdG8gLT4gcHAgZiBcInRvQCBcIlxuICB8IERvd250byAtPiBwcCBmIFwiZG93bnRvQCBcIlxuXG5sZXQgcHJpdmF0ZV9mbGFnIGYgPSBmdW5jdGlvbiBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJwcml2YXRlQCBcIlxubGV0IGl0ZXJfbG9jIGYgY3R4dCB7IHR4dDsgbG9jID0gXyB9ID0gZiBjdHh0IHR4dFxubGV0IGNvbnN0YW50X3N0cmluZyBmIHMgPSBwcCBmIFwiJVNcIiBzXG5cbmxldCB0eXZhciBwcGYgcyA9XG4gIGlmIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIHMuWzFdID0gJ1xcJycgdGhlblxuICAgICgqIHdpdGhvdXQgdGhlIHNwYWNlLCB0aGlzIHdvdWxkIGJlIHBhcnNlZCBhc1xuICAgICAgIGEgY2hhcmFjdGVyIGxpdGVyYWwgKilcbiAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCInICVzXCIgc1xuICBlbHNlIEZvcm1hdC5mcHJpbnRmIHBwZiBcIiclc1wiIHNcblxubGV0IHR5dmFyX2xvYyBmIHN0ciA9IHR5dmFyIGYgc3RyLnR4dFxubGV0IHN0cmluZ19xdW90IGYgeCA9IHBwIGYgXCJgJXNcIiB4XG5cbigqIGMgWydhLCdiXSAqKVxubGV0IHJlYyBjbGFzc19wYXJhbXNfZGVmIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBsIC0+IHBwIGYgXCJbJWFdIFwiICgqIHNwYWNlICopIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5zZXA6XCIsXCIpIGxcblxuYW5kIHR5cGVfd2l0aF9sYWJlbCBjdHh0IGYgKGxhYmVsLCBjKSA9XG4gIG1hdGNoIGxhYmVsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGNvcmVfdHlwZTEgY3R4dCBmIGMgKCogb3RoZXJ3aXNlIHBhcmVudGhlc2l6ZSAqKVxuICB8IExhYmVsbGVkIHMgLT4gcHAgZiBcIiVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG4gIHwgT3B0aW9uYWwgcyAtPiBwcCBmIFwiPyVzOiVhXCIgcyAoY29yZV90eXBlMSBjdHh0KSBjXG5cbmFuZCBjb3JlX3R5cGUgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpJWEpXCIgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHR5cF9kZXNjIHdpdGhcbiAgICB8IFB0eXBfYXJyb3cgKGwsIGN0MSwgY3QyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY3QxKSAoY29yZV90eXBlIGN0eHQpIGN0MlxuICAgIHwgUHR5cF9hbGlhcyAoY3QsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIGN0IHR5dmFyIHNcbiAgICB8IFB0eXBfcG9seSAoW10sIGN0KSAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgfCBQdHlwX3BvbHkgKHNsLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWElYUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgcHAgZiBcIiVhXCJcbiAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSBsKVxuICAgICAgICAgICAgICBsKVxuICAgICAgICAgIHNsIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAXVwiIChjb3JlX3R5cGUxIGN0eHQpIHhcblxuYW5kIGNvcmVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnB0eXBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGNvcmVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHR5cF92YXIgcyAtPiB0eXZhciBmIHNcbiAgICB8IFB0eXBfdHVwbGUgbCAtPiBwcCBmIFwiKCVhKVwiIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKSBsXG4gICAgfCBQdHlwX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgKCogXCIlYSVhQDtcIiAqKSBcIiVhJWFcIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgIHwgWyB4IF0gLT4gcHAgZiBcIiVhQDtcIiAoY29yZV90eXBlMSBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT4gbGlzdCB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpQDtcIiAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsQDtcIiBmIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3ZhcmlhbnQgKGwsIGNsb3NlZCwgbG93KSAtPlxuICAgICAgICBsZXQgZmlyc3RfaXNfaW5oZXJpdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCB7IFBhcnNldHJlZS5wcmZfZGVzYyA9IFJpbmhlcml0IF8gfSA6OiBfIC0+IHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cGVfdmFyaWFudF9oZWxwZXIgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnByZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IFJ0YWcgKGwsIF8sIGN0bCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWElYUA7JWFAXVwiIChpdGVyX2xvYyBzdHJpbmdfcXVvdCkgbFxuICAgICAgICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCImXCIpIGN0bClcbiAgICAgICAgICAgICAgICBjdGwgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcmZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgUmluaGVyaXQgY3QgLT4gY29yZV90eXBlIGN0eHQgZiBjdFxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8Mj5bJWElYV1AXVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIChsLCBjbG9zZWQpIHdpdGhcbiAgICAgICAgICAgIHwgW10sIENsb3NlZCAtPiAoKVxuICAgICAgICAgICAgfCBbXSwgT3BlbiAtPiBwcCBmIFwiPlwiICgqIENmICM3MjAwOiBwcmludCBbPl0gY29ycmVjdGx5ICopXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiJXNAOyVhXCJcbiAgICAgICAgICAgICAgICAgIChtYXRjaCAoY2xvc2VkLCBsb3cpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBOb25lIC0+IGlmIGZpcnN0X2lzX2luaGVyaXQgdGhlbiBcIiB8XCIgZWxzZSBcIlwiXG4gICAgICAgICAgICAgICAgICB8IENsb3NlZCwgU29tZSBfIC0+IFwiPFwiICgqIEZJWE1FIGRlc3VnYXIgdGhlIHN5bnRheCBzdWdhciopXG4gICAgICAgICAgICAgICAgICB8IE9wZW4sIF8gLT4gXCI+XCIpXG4gICAgICAgICAgICAgICAgICAobGlzdCB0eXBlX3ZhcmlhbnRfaGVscGVyIH5zZXA6XCJAOzwxIC0yPnwgXCIpXG4gICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgIGxcbiAgICAgICAgICAoZnVuIGYgbG93IC0+XG4gICAgICAgICAgICBtYXRjaCBsb3cgd2l0aFxuICAgICAgICAgICAgfCBTb21lIFtdIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIHhzIC0+IHBwIGYgXCI+QCAlYVwiIChsaXN0IHN0cmluZ19xdW90KSB4cylcbiAgICAgICAgICBsb3dcbiAgICB8IFB0eXBfb2JqZWN0IChsLCBvKSAtPlxuICAgICAgICBsZXQgY29yZV9maWVsZF90eXBlIGYgeCA9XG4gICAgICAgICAgbWF0Y2ggeC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgICAgfCBPdGFnIChsLCBjdCkgLT5cbiAgICAgICAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXM6ICVhQCAlYUAgQF1cIiBsLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wb2ZfYXR0cmlidXRlc1xuICAgICAgICAgIHwgT2luaGVyaXQgY3QgLT4gcHAgZiBcIkBbPGhvdjI+JWFAIEBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgICAgICBpblxuICAgICAgICBsZXQgZmllbGRfdmFyIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgQXN0dHlwZXMuQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgfCBBc3R0eXBlcy5PcGVuIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoIFtdIC0+IHBwIGYgXCIuLlwiIHwgXyAtPiBwcCBmIFwiIDsuLlwiKVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj48QCAlYSVhQCA+IEBdXCJcbiAgICAgICAgICAobGlzdCBjb3JlX2ZpZWxkX3R5cGUgfnNlcDpcIjtcIilcbiAgICAgICAgICBsIGZpZWxkX3ZhciBvXG4gICAgICAgICgqIENmICM3MjAwICopXG4gICAgfCBQdHlwX2NsYXNzIChsaSwgbCkgLT5cbiAgICAgICAgKCpGSVhNRSopXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhIyVhQF1cIlxuICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixcIiB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQdHlwX3BhY2thZ2UgKGxpZCwgY3N0cnMpIC0+IChcbiAgICAgICAgbGV0IGF1eCBmIChzLCBjdCkgPVxuICAgICAgICAgIHBwIGYgXCJ0eXBlICVhQCA9QCAlYVwiIGxvbmdpZGVudF9sb2MgcyAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNzdHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYSlAXVwiIGxvbmdpZGVudF9sb2MgbGlkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+KG1vZHVsZUAgJWFAIHdpdGhAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAgICAgKGxpc3QgYXV4IH5zZXA6XCJAIGFuZEAgXCIpIGNzdHJzKVxuICAgIHwgUHR5cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAoY29yZV90eXBlIGN0eHQpIGYgeFxuXG4oKioqKioqKioqKioqKioqKioqKipwYXR0ZXJuKioqKioqKioqKioqKioqKioqKiopXG4oKiBiZSBjYXV0aW91cyB3aGVuIHVzZSBbcGF0dGVybl0sIFtwYXR0ZXJuMV0gaXMgcHJlZmVycmVkICopXG5hbmQgcGF0dGVybiBjdHh0IGYgeCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAocGF0dGVybiBjdHh0KVxuICAgICAgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wcGF0X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfYWxpYXMgKHAsIHMpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDthc0A7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHAgcHJvdGVjdF9pZGVudCBzLnR4dFxuICAgIHwgXyAtPiBwYXR0ZXJuX29yIGN0eHQgZiB4XG5cbmFuZCBwYXR0ZXJuX29yIGN0eHQgZiB4ID1cbiAgbGV0IHJlYyBsZWZ0X2Fzc29jaWF0aXZlIHggYWNjID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9vciAocDEsIHAyKTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBsZWZ0X2Fzc29jaWF0aXZlIHAxIChwMiA6OiBhY2MpXG4gICAgfCB4IC0+IHggOjogYWNjXG4gIGluXG4gIG1hdGNoIGxlZnRfYXNzb2NpYXRpdmUgeCBbXSB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgWyB4IF0gLT4gcGF0dGVybjEgY3R4dCBmIHhcbiAgfCBvcnBhdHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IH5zZXA6XCJAIHwgXCIgKHBhdHRlcm4xIGN0eHQpKSBvcnBhdHNcblxuYW5kIHBhdHRlcm4xIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGxldCByZWMgcGF0dGVybl9saXN0X2hlbHBlciBmID0gZnVuY3Rpb25cbiAgICB8IHtcbiAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICBQcGF0X2NvbnN0cnVjdFxuICAgICAgICAgICAgKCB7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSxcbiAgICAgICAgICAgICAgU29tZSAoW10sIHsgcHBhdF9kZXNjID0gUHBhdF90dXBsZSBbIHBhdDE7IHBhdDIgXTsgXyB9KSApO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhOjolYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQxIHBhdHRlcm5fbGlzdF9oZWxwZXIgcGF0MiAoKlJBKilcbiAgICB8IHAgLT4gcGF0dGVybjEgY3R4dCBmIHBcbiAgaW5cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwYXR0ZXJuIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBwYXRfZGVzYyB3aXRoXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIFNvbWUgcCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIF8pIC0+XG4gICAgICAgIHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoKHsgdHh0OyBfIH0gYXMgbGkpLCBwbykgLT4gKFxuICAgICAgICBpZiAoKiBGSVhNRSBUaGUgdGhpcmQgZmllbGQgYWx3YXlzIGZhbHNlICopXG4gICAgICAgICAgIHR4dCA9IExpZGVudCBcIjo6XCIgdGhlbiBwcCBmIFwiJWFcIiBwYXR0ZXJuX2xpc3RfaGVscGVyIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHBvIHdpdGhcbiAgICAgICAgICB8IFNvbWUgKFtdLCB4KSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgeFxuICAgICAgICAgIHwgU29tZSAodmwsIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUAgKHR5cGUgJWEpQDslYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAgICAgICAobGlzdCB+c2VwOlwiQCBcIiBzdHJpbmdfbG9jKVxuICAgICAgICAgICAgICAgIHZsIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGkpXG4gICAgfCBfIC0+IHNpbXBsZV9wYXR0ZXJuIGN0eHQgZiB4XG5cbmFuZCBzaW1wbGVfcGF0dGVybiBjdHh0IChmIDogRm9ybWF0LmZvcm1hdHRlcikgKHggOiBwYXR0ZXJuKSA6IHVuaXQgPVxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoKFwiKClcIiB8IFwiW11cIikgYXMgeCk7IF8gfSwgTm9uZSkgLT5cbiAgICAgICAgcHAgZiBcIiVzXCIgeFxuICAgIHwgUHBhdF9hbnkgLT4gcHAgZiBcIl9cIlxuICAgIHwgUHBhdF92YXIgeyB0eHQ7IF8gfSAtPiBwcm90ZWN0X2lkZW50IGYgdHh0XG4gICAgfCBQcGF0X2FycmF5IGwgLT4gcHAgZiBcIkBbPDI+W3wlYXxdQF1cIiAobGlzdCAocGF0dGVybjEgY3R4dCkgfnNlcDpcIjtcIikgbFxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBOb25lIH0gLT4gcHAgZiBcIihtb2R1bGVAIF8pQCBcIlxuICAgIHwgUHBhdF91bnBhY2sgeyB0eHQgPSBTb21lIHMgfSAtPiBwcCBmIFwiKG1vZHVsZUAgJXMpQCBcIiBzXG4gICAgfCBQcGF0X3R5cGUgbGkgLT4gcHAgZiBcIiMlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBwYXRfcmVjb3JkIChsLCBjbG9zZWQpIC0+IChcbiAgICAgICAgbGV0IGxvbmdpZGVudF94X3BhdHRlcm4gZiAobGksIHApID1cbiAgICAgICAgICBtYXRjaCAobGksIHApIHdpdGhcbiAgICAgICAgICB8ICggeyB0eHQgPSBMaWRlbnQgczsgXyB9LFxuICAgICAgICAgICAgICB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdOyBfIH0gKVxuICAgICAgICAgICAgd2hlbiBzID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAocGF0dGVybjEgY3R4dCkgcFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjbG9zZWQgd2l0aFxuICAgICAgICB8IENsb3NlZCAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPDI+e0A7JWFAO31AXVwiIChsaXN0IGxvbmdpZGVudF94X3BhdHRlcm4gfnNlcDpcIjtAO1wiKSBsXG4gICAgICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj57QDslYTtffUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGwpXG4gICAgfCBQcGF0X3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDE+KCVhKUBdXCIgKGxpc3QgfnNlcDpcIixAO1wiIChwYXR0ZXJuMSBjdHh0KSkgbCAoKiBsZXZlbDEqKVxuICAgIHwgUHBhdF9jb25zdGFudCBjIC0+IHBwIGYgXCIlYVwiIGNvbnN0YW50IGNcbiAgICB8IFBwYXRfaW50ZXJ2YWwgKGMxLCBjMikgLT4gcHAgZiBcIiVhLi4lYVwiIGNvbnN0YW50IGMxIGNvbnN0YW50IGMyXG4gICAgfCBQcGF0X3ZhcmlhbnQgKGwsIE5vbmUpIC0+IHBwIGYgXCJgJXNcIiBsXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgKHAsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4oJWFAOzpAOyVhKUBdXCIgKHBhdHRlcm4xIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUHBhdF9sYXp5IHAgLT4gcHAgZiBcIkBbPDI+KGxhenlAOyVhKUBdXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICB8IFBwYXRfZXhjZXB0aW9uIHAgLT4gcHAgZiBcIkBbPDI+ZXhjZXB0aW9uQDslYUBdXCIgKHBhdHRlcm4xIGN0eHQpIHBcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQcGF0X29wZW4gKGxpZCwgcCkgLT5cbiAgICAgICAgbGV0IHdpdGhfcGFyZW4gPVxuICAgICAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFBwYXRfYXJyYXkgXyB8IFBwYXRfcmVjb3JkIF9cbiAgICAgICAgICB8IFBwYXRfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCAoXCIoKVwiIHwgXCJbXVwiKTsgXyB9LCBOb25lKSAtPlxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhLiVhIEBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgICAocGFyZW4gd2l0aF9wYXJlbiBAQCBwYXR0ZXJuMSBjdHh0KVxuICAgICAgICAgIHBcbiAgICB8IF8gLT4gcGFyZW4gdHJ1ZSAocGF0dGVybiBjdHh0KSBmIHhcblxuYW5kIGxhYmVsX2V4cCBjdHh0IGYgKGwsIG9wdCwgcCkgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+XG4gICAgICAoKiBzaW5nbGUgY2FzZSBwYXR0ZXJuIHBhcmVucyBuZWVkZWQgaGVyZSAqKVxuICAgICAgcHAgZiBcIiVhQCBcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICB8IE9wdGlvbmFsIHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgICB3aGVuIHR4dCA9IHJlc3QgLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT4gcHAgZiBcIj8oJXM9QDslYSlAO1wiIHJlc3QgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzQCBcIiByZXN0KVxuICAgICAgfCBfIC0+IChcbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgU29tZSBvIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCI/JXM6KCVhPUA7JWEpQDtcIiByZXN0IChwYXR0ZXJuMSBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIG9cbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIj8lczolYUA7XCIgcmVzdCAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCkpXG4gIHwgTGFiZWxsZWQgbCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IHdoZW4gdHh0ID0gbFxuICAgICAgICAtPlxuICAgICAgICAgIHBwIGYgXCJ+JXNAO1wiIGxcbiAgICAgIHwgXyAtPiBwcCBmIFwifiVzOiVhQDtcIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKVxuXG5hbmQgc3VnYXJfZXhwciBjdHh0IGYgZSA9XG4gIGlmIGUucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZmFsc2VcbiAgZWxzZVxuICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfYXBwbHlcbiAgICAgICAgKCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBpZDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAgICAgIGFyZ3MgKVxuICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biAobGFiLCBfKSAtPiBsYWIgPSBOb2xhYmVsKSBhcmdzIC0+IChcbiAgICAgICAgbGV0IHByaW50X2luZGV4b3AgYSBwYXRoX3ByZWZpeCBhc3NpZ24gbGVmdCBzZXAgcmlnaHQgcHJpbnRfaW5kZXhcbiAgICAgICAgICAgIGluZGljZXMgcmVtX2FyZ3MgPVxuICAgICAgICAgIGxldCBwcmludF9wYXRoIHBwZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBtIC0+IHBwIHBwZiBcIi4lYVwiIGxvbmdpZGVudCBtXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCAoYXNzaWduLCByZW1fYXJncykgd2l0aFxuICAgICAgICAgIHwgZmFsc2UsIFtdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGggcGF0aF9wcmVmaXhcbiAgICAgICAgICAgICAgICBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHQ7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IHRydWUsIFsgdiBdIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWyVhJWElcyVhJXNAIDwtQDs8MSAyPiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgYSBwcmludF9wYXRoXG4gICAgICAgICAgICAgICAgcGF0aF9wcmVmaXggbGVmdCAobGlzdCB+c2VwIHByaW50X2luZGV4KSBpbmRpY2VzIHJpZ2h0XG4gICAgICAgICAgICAgICAgKHNpbXBsZV9leHByIGN0eHQpIHY7XG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGlkLCBMaXN0Lm1hcCBzbmQgYXJncykgd2l0aFxuICAgICAgICB8IExpZGVudCBcIiFcIiwgWyBlIF0gLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3Y+ISVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTtcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgfCBMZG90IChwYXRoLCAoKFwiZ2V0XCIgfCBcInNldFwiKSBhcyBmdW5jKSksIGEgOjogb3RoZXJfYXJncyAtPiAoXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gZnVuYyA9IFwic2V0XCIgaW5cbiAgICAgICAgICAgIGxldCBwcmludCA9IHByaW50X2luZGV4b3AgYSBOb25lIGFzc2lnbiBpblxuICAgICAgICAgICAgbWF0Y2ggKHBhdGgsIG90aGVyX2FyZ3MpIHdpdGhcbiAgICAgICAgICAgIHwgTGlkZW50IFwiQXJyYXlcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuKFwiIFwiXCIgXCIpXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJTdHJpbmdcIiwgaSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIuW1wiIFwiXCIgXCJdXCIgKGV4cHJlc3Npb24gY3R4dCkgWyBpIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MVwiKSwgaTEgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMSBdIHJlc3RcbiAgICAgICAgICAgIHwgTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJBcnJheTJcIiksIGkxIDo6IGkyIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIFsgaTE7IGkyIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5M1wiKSwgaTEgOjogaTIgOjogaTMgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTI7IGkzIF0gcmVzdFxuICAgICAgICAgICAgfCAoIExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiR2VuYXJyYXlcIiksXG4gICAgICAgICAgICAgICAgeyBwZXhwX2Rlc2MgPSBQZXhwX2FycmF5IGluZGV4ZXM7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gOjogcmVzdFxuICAgICAgICAgICAgICApIC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBpbmRleGVzIHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfCAoTGlkZW50IHMgfCBMZG90IChfLCBzKSksIGEgOjogaSA6OiByZXN0IHdoZW4gZmlyc3RfaXMgJy4nIHMgLT5cbiAgICAgICAgICAgICgqIGV4dHJhY3Qgb3BlcmF0b3I6XG4gICAgICAgICAgICAgICBhc3NpZ25tZW50IG9wZXJhdG9ycyBlbmQgd2l0aCBbcmlnaHRfYnJhY2tldCBeIFwiPC1cIl0sXG4gICAgICAgICAgICAgICBhY2Nlc3Mgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0XSBkaXJlY3RseVxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIGxldCBtdWx0aV9pbmRpY2VzID0gU3RyaW5nLmNvbnRhaW5zIHMgJzsnIGluXG4gICAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICAgIG1hdGNoIGkucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2FycmF5IGwgd2hlbiBtdWx0aV9pbmRpY2VzIC0+IGxcbiAgICAgICAgICAgICAgfCBfIC0+IFsgaSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFzc2lnbiA9IGxhc3RfaXMgJy0nIHMgaW5cbiAgICAgICAgICAgIGxldCBraW5kID1cbiAgICAgICAgICAgICAgKCogZXh0cmFjdCB0aGUgcmlnaHQgZW5kIGJyYWNrZXQgKilcbiAgICAgICAgICAgICAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgICAgaWYgYXNzaWduIHRoZW4gcy5bbiAtIDNdIGVsc2Ugcy5bbiAtIDFdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQsIHJpZ2h0ID1cbiAgICAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgICAgIHwgJyknIC0+ICgnKCcsIFwiKVwiKVxuICAgICAgICAgICAgICB8ICddJyAtPiAoJ1snLCBcIl1cIilcbiAgICAgICAgICAgICAgfCAnfScgLT4gKCd7JywgXCJ9XCIpXG4gICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcGF0aF9wcmVmaXggPVxuICAgICAgICAgICAgICBtYXRjaCBpZCB3aXRoIExkb3QgKG0sIF8pIC0+IFNvbWUgbSB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsZWZ0ID0gU3RyaW5nLnN1YiBzIDAgKDEgKyBTdHJpbmcuaW5kZXggcyBsZWZ0KSBpblxuICAgICAgICAgICAgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IFwiO1wiIHJpZ2h0XG4gICAgICAgICAgICAgIChpZiBtdWx0aV9pbmRpY2VzIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGVsc2Ugc2ltcGxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgaSByZXN0XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxuYW5kIGV4cHJlc3Npb24gY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgcHAgZiBcIigoJWEpQCwlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KVxuICAgICAgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wZXhwX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZnVuY3Rpb24gXyB8IFBleHBfZnVuIF8gfCBQZXhwX21hdGNoIF8gfCBQZXhwX3RyeSBfIHwgUGV4cF9zZXF1ZW5jZSBfXG4gICAgfCBQZXhwX25ld3R5cGUgX1xuICAgICAgd2hlbiBjdHh0LnBpcGUgfHwgY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCAoUGV4cF9pZnRoZW5lbHNlIF8gfCBQZXhwX3NlcXVlbmNlIF8pIHdoZW4gY3R4dC5pZnRoZW5lbHNlIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2xldCBfIHwgUGV4cF9sZXRtb2R1bGUgXyB8IFBleHBfb3BlbiBfIHwgUGV4cF9sZXRleGNlcHRpb24gX1xuICAgIHwgUGV4cF9sZXRvcCBfXG4gICAgICB3aGVuIGN0eHQuc2VtaSAtPlxuICAgICAgICBwYXJlbiB0cnVlIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIGYgeFxuICAgIHwgUGV4cF9mdW4gKGwsIGUwLCBwLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyVhLT5AOyVhQF1cIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlMCwgcClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX25ld3R5cGUgKGxpZCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+ZnVuQDsodHlwZUA7JXMpQDstPkA7JWFAXVwiIGxpZC50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9mdW5jdGlvbiBsIC0+IHBwIGYgXCJAWzxodj5mdW5jdGlvbiVhQF1cIiAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbWF0Y2ggKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjA+QFs8aHYwPkBbPDI+bWF0Y2ggJWFAXUAgd2l0aEBdJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfdHJ5IChlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8MD5AWzxodjI+dHJ5QCAlYUBdQCBAWzwwPndpdGglYUBdQF1cIlxuICAgICAgICAgICgqIFwidHJ5QDtAWzwyPiVhQF1AXFxud2l0aEBcXG4lYVwiKilcbiAgICAgICAgICAoZXhwcmVzc2lvbiByZXNldF9jdHh0KVxuICAgICAgICAgIGUgKGNhc2VfbGlzdCBjdHh0KSBsXG4gICAgfCBQZXhwX2xldCAocmYsIGwsIGUpIC0+XG4gICAgICAgICgqIHBwIGYgXCJAWzwyPmxldCAlYSVhIGluQDs8MSAtMj4lYUBdXCJcbiAgICAgICAgICAgKCpubyBpbmRlbnRhdGlvbiBoZXJlLCBhIG5ldyBsaW5lKikgKilcbiAgICAgICAgKCogICByZWNfZmxhZyByZiAqKVxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5ncyByZXNldF9jdHh0KSAocmYsIGwpXG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hcHBseSAoZSwgbCkgLT4gKFxuICAgICAgICBpZiBub3QgKHN1Z2FyX2V4cHIgY3R4dCBmIHgpIHRoZW5cbiAgICAgICAgICBtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgZSB3aXRoXG4gICAgICAgICAgfCBgSW5maXggcyAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKChOb2xhYmVsLCBfKSBhcyBhcmcxKTsgKChOb2xhYmVsLCBfKSBhcyBhcmcyKSBdIC0+XG4gICAgICAgICAgICAgICAgICAoKiBGSVhNRSBhc3NvY2lhdGl2aXR5IGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSAqKVxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAOyVzQDslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSByZXNldF9jdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcxIHNcbiAgICAgICAgICAgICAgICAgICAgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KVxuICAgICAgICAgICAgICAgICAgICBhcmcyXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBgUHJlZml4IHMgLT4gKFxuICAgICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgIExpc3QubWVtIHMgWyBcIn4rXCI7IFwifi1cIjsgXCJ+Ky5cIjsgXCJ+LS5cIiBdXG4gICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgICAgICAoKiBTZWUgIzcyMDA6IGF2b2lkIHR1cm5pbmcgKH4tIDEpIGludG8gKC0gMSkgd2hpY2ggaXNcbiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCBhcyBhbiBpbnQgbGl0ZXJhbCAqKVxuICAgICAgICAgICAgICAgICAgfCBbIChfLCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RhbnQgXyB9KSBdIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgIHRoZW4gU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgICAgICAgICAgICAgZWxzZSBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFsgKE5vbGFiZWwsIHgpIF0gLT4gcHAgZiBcIkBbPDI+JXNAOyVhQF1cIiBzIChzaW1wbGVfZXhwciBjdHh0KSB4XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWEgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIlxuICAgICAgICAgICAgICAgIChmdW4gZiAoZSwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoZXhwcmVzc2lvbjIgY3R4dCkgZVxuICAgICAgICAgICAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpKVxuICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAoKiByZXNldCBoZXJlIG9ubHkgYmVjYXVzZSBbZnVuY3Rpb24sbWF0Y2gsdHJ5LHNlcXVlbmNlXVxuICAgICAgICAgICAgICAgICAgICAgYXJlIGxvd2VyIHByaW9yaXR5ICopKVxuICAgICAgICAgICAgICAgIChlLCBsKSlcbiAgICB8IFBleHBfY29uc3RydWN0IChsaSwgU29tZSBlbykgd2hlbiBub3QgKGlzX3NpbXBsZV9jb25zdHJ1Y3QgKHZpZXdfZXhwciB4KSlcbiAgICAgIC0+IChcbiAgICAgICAgKCogTm90IGVmZmljaWVudCBGSVhNRSopXG4gICAgICAgIG1hdGNoIHZpZXdfZXhwciB4IHdpdGhcbiAgICAgICAgfCBgY29ucyBscyAtPiBsaXN0IChzaW1wbGVfZXhwciBjdHh0KSBmIGxzIH5zZXA6XCJAOzo6QDtcIlxuICAgICAgICB8IGBub3JtYWwgLT4gcHAgZiBcIkBbPDI+JWFAOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHwgUGV4cF9zZXRmaWVsZCAoZTEsIGxpLCBlMikgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWFAIDwtQCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUxIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgZTJcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSAoZTEsIGUyLCBlbykgLT5cbiAgICAgICAgKCogQDtAWzwyPmVsc2VAICVhQF1AXSAqKVxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9XG4gICAgICAgICAgXCJAWzxodjA+QFs8Mj5pZkAgJWFAXUA7QFs8Mj50aGVuQCAlYUBdJWFAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgPSBleHByZXNzaW9uICh1bmRlcl9pZnRoZW5lbHNlIGN0eHQpIGluXG4gICAgICAgIHBwIGYgZm10IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMSBleHByZXNzaW9uX3VuZGVyX2lmdGhlbmVsc2UgZTJcbiAgICAgICAgICAoZnVuIGYgZW8gLT5cbiAgICAgICAgICAgIG1hdGNoIGVvIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIkA7QFs8Mj5lbHNlQDslYUBdXCIgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgKCogcHAgZiBcIigpXCIgKikpXG4gICAgICAgICAgZW9cbiAgICB8IFBleHBfc2VxdWVuY2UgXyAtPlxuICAgICAgICBsZXQgcmVjIHNlcXVlbmNlX2hlbHBlciBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3NlcXVlbmNlIChlMSwgZTIpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIHNlcXVlbmNlX2hlbHBlciAoZTEgOjogYWNjKSBlMlxuICAgICAgICAgIHwgdiAtPiBMaXN0LnJldiAodiA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsc3QgPSBzZXF1ZW5jZV9oZWxwZXIgW10geCBpblxuICAgICAgICBwcCBmIFwiQFs8aHY+JWFAXVwiIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpIGxzdFxuICAgIHwgUGV4cF9uZXcgbGkgLT4gcHAgZiBcIkBbPGhvdjI+bmV3QCAlYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZXRpbnN0dmFyIChzLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lc0AgPC1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX292ZXJyaWRlIGwgLT5cbiAgICAgICAgKCogRklYTUUgKilcbiAgICAgICAgbGV0IHN0cmluZ194X2V4cHJlc3Npb24gZiAocywgZSkgPVxuICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA9QCAlYUBdXCIgcy50eHQgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aG92Mj57PCVhPn1AXVwiIChsaXN0IHN0cmluZ194X2V4cHJlc3Npb24gfnNlcDpcIjtcIikgbFxuICAgIHwgUGV4cF9sZXRtb2R1bGUgKHMsIG1lLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIG1vZHVsZUAgJXNAID1AICVhQCBpbkAgJWFAXVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX2V4cHIgcmVzZXRfY3R4dCkgbWUgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGNkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5sZXRAIGV4Y2VwdGlvbkAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgICAgICAgY2QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF9hc3NlcnQgZSAtPiBwcCBmIFwiQFs8aG92Mj5hc3NlcnRAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9sYXp5IGUgLT4gcHAgZiBcIkBbPGhvdjI+bGF6eUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgKCogUGV4cF9wb2x5OiBpbXBvc3NpYmxlIGJ1dCB3ZSBzaG91bGQgcHJpbnQgaXQgYW55d2F5LCByYXRoZXIgdGhhblxuICAgICAgIGFzc2VydCBmYWxzZSAqKVxuICAgIHwgUGV4cF9wb2x5IChlLCBOb25lKSAtPiBwcCBmIFwiQFs8aG92Mj4hcG9seSFAICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgIHwgUGV4cF9wb2x5IChlLCBTb21lIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oIXBvbHkhQCAlYUAgOiAlYSlAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgby5wb3Blbl9leHByIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfdmFyaWFudCAobCwgU29tZSBlbykgLT4gcHAgZiBcIkBbPDI+YCVzQDslYUBdXCIgbCAoc2ltcGxlX2V4cHIgY3R4dCkgZW9cbiAgICB8IFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+QFs8dj4lYUAsJWFAXSBpbkA7PDEgLTI+JWFAXVwiIChiaW5kaW5nX29wIGN0eHQpIGxldF9cbiAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoYmluZGluZ19vcCBjdHh0KSlcbiAgICAgICAgICBhbmRzIChleHByZXNzaW9uIGN0eHQpIGJvZHlcbiAgICB8IFBleHBfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHBwIGYgXCIuXCJcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjEgY3R4dCBmIHhcblxuYW5kIGV4cHJlc3Npb24xIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX29iamVjdCBjcyAtPiBwcCBmIFwiJWFcIiAoY2xhc3Nfc3RydWN0dXJlIGN0eHQpIGNzXG4gICAgfCBfIC0+IGV4cHJlc3Npb24yIGN0eHQgZiB4XG4oKiB1c2VkIGluIFtQZXhwX2FwcGx5XSAqKVxuXG5hbmQgZXhwcmVzc2lvbjIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfZmllbGQgKGUsIGxpKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYS4lYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGV4cF9zZW5kIChlLCBzKSAtPiBwcCBmIFwiQFs8aG92Mj4lYSMlc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGUgcy50eHRcbiAgICB8IF8gLT4gc2ltcGxlX2V4cHIgY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBleHByZXNzaW9uIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBfIHdoZW4gaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpIC0+IChcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBuaWwgLT4gcHAgZiBcIltdXCJcbiAgICAgICAgfCBgdHVwbGUgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgfCBgbGlzdCB4cyAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGh2MD5bJWFdQF1cIlxuICAgICAgICAgICAgICAobGlzdCAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgfnNlcDpcIjtAO1wiKVxuICAgICAgICAgICAgICB4c1xuICAgICAgICB8IGBzaW1wbGUgeCAtPiBsb25naWRlbnQgZiB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX2lkZW50IGxpIC0+IGxvbmdpZGVudF9sb2MgZiBsaVxuICAgICgqIChtYXRjaCB2aWV3X2ZpeGl0eV9vZl9leHAgeCB3aXRoICopXG4gICAgKCogfGBOb3JtYWwgLT4gbG9uZ2lkZW50X2xvYyBmIGxpICopXG4gICAgKCogfCBgUHJlZml4IF8gfCBgSW5maXggXyAtPiBwcCBmIFwiKCAlYSApXCIgbG9uZ2lkZW50X2xvYyBsaSkgKilcbiAgICB8IFBleHBfY29uc3RhbnQgYyAtPiBjb25zdGFudCBmIGNcbiAgICB8IFBleHBfcGFjayBtZSAtPiBwcCBmIFwiKG1vZHVsZUA7JWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQZXhwX3R1cGxlIGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhKUBdXCIgKGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIH5zZXA6XCIsQDtcIikgbFxuICAgIHwgUGV4cF9jb25zdHJhaW50IChlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYSA6ICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGUgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGV4cF9jb2VyY2UgKGUsIGN0bzEsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhJWEgOj4gJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgICAgICAgIChvcHRpb24gKGNvcmVfdHlwZSBjdHh0KSB+Zmlyc3Q6XCIgOiBcIiB+bGFzdDpcIiBcIilcbiAgICAgICAgICBjdG8xXG4gICAgICAgICAgKCogbm8gc2VwIGhpbnQqKSAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgY3RcbiAgICB8IFBleHBfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBleHBfcmVjb3JkIChsLCBlbykgLT5cbiAgICAgICAgbGV0IGxvbmdpZGVudF94X2V4cHJlc3Npb24gZiAobGksIGUpID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dDsgXyB9OyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9XG4gICAgICAgICAgICB3aGVuIGxpLnR4dCA9IHR4dCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUBdXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUA7PUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+e0A7JWElYUBdQDt9QF1cIiAoKiBcIkBbPGhvdjI+eyVhJWF9QF1cIiAqKVxuICAgICAgICAgIChvcHRpb24gfmxhc3Q6XCIgd2l0aEA7XCIgKHNpbXBsZV9leHByIGN0eHQpKVxuICAgICAgICAgIGVvXG4gICAgICAgICAgKGxpc3QgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF9hcnJheSBsIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPDI+W3wlYXxdQF1AXVwiXG4gICAgICAgICAgKGxpc3QgKHNpbXBsZV9leHByICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGxcbiAgICB8IFBleHBfd2hpbGUgKGUxLCBlMikgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPSBcIkBbPDI+d2hpbGVAOyVhQDtkb0A7JWFAO2RvbmVAXVwiIGluXG4gICAgICAgIHBwIGYgZm10IChleHByZXNzaW9uIGN0eHQpIGUxIChleHByZXNzaW9uIGN0eHQpIGUyXG4gICAgfCBQZXhwX2ZvciAocywgZTEsIGUyLCBkZiwgZTMpIC0+XG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzxodjI+QFs8Mj5mb3IgJWEgPUA7JWFAOyVhJWFAO2RvQF1AOyVhQF1AO2RvbmVAXVwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByZXNzaW9uID0gZXhwcmVzc2lvbiBjdHh0IGluXG4gICAgICAgIHBwIGYgZm10IChwYXR0ZXJuIGN0eHQpIHMgZXhwcmVzc2lvbiBlMSBkaXJlY3Rpb25fZmxhZyBkZiBleHByZXNzaW9uIGUyXG4gICAgICAgICAgZXhwcmVzc2lvbiBlM1xuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChleHByZXNzaW9uIGN0eHQpIGYgeFxuXG5hbmQgYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoYXR0cmlidXRlIGN0eHQgZikgbFxuYW5kIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgbCA9IExpc3QuaXRlciAoaXRlbV9hdHRyaWJ1dGUgY3R4dCBmKSBsXG5cbmFuZCBhdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGl0ZW1fYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQEBAQEAlc0AgJWFdQF1cIiBhLmF0dHJfbmFtZS50eHQgKHBheWxvYWQgY3R4dCkgYS5hdHRyX3BheWxvYWRcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQgZiB4ID1cbiAgKCogbm90ZTogdmFsdWVfZGVzY3JpcHRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgICAgICAgYnV0IHRoZXkncmUgYWxyZWFkeSBwcmludGVkIGJ5IHRoZSBjYWxsZXJzIHRoaXMgbWV0aG9kICopXG4gIHBwIGYgXCJAWzxob3YyPiVhJWFAXVwiIChjb3JlX3R5cGUgY3R4dCkgeC5wdmFsX3R5cGVcbiAgICAoZnVuIGYgeCAtPlxuICAgICAgaWYgeC5wdmFsX3ByaW0gPD4gW10gdGhlblxuICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChsaXN0IGNvbnN0YW50X3N0cmluZykgeC5wdmFsX3ByaW0pXG4gICAgeFxuXG5hbmQgZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPSBwcCBmIFwiQFs8Mj5bJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgKHMsIGUpID1cbiAgcHAgZiBcIkBbPDI+WyUlJSUlc0AgJWFdQF1cIiBzLnR4dCAocGF5bG9hZCBjdHh0KSBlXG5cbmFuZCBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIHggPVxuICBwcCBmIFwiQFs8aG92Mj5leGNlcHRpb25AICVhQF0lYVwiXG4gICAgKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHh0KVxuICAgIHgucHR5ZXhuX2NvbnN0cnVjdG9yIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlleG5fYXR0cmlidXRlc1xuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0Zl9kZXNjIHdpdGhcbiAgfCBQY3RmX2luaGVyaXQgY3QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVhQF0lYVwiIChjbGFzc190eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX3ZhbCAocywgbWYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCBAICVhJWElc0AgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX21ldGhvZCAocywgcGYsIHZmLCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCAlYSAlYSVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiB2aXJ0dWFsX2ZsYWcgdmYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnRAICVhQCA9QCAlYUBdJWFcIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MiAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGN0Zl9hdHRyaWJ1dGVzXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY3RmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY3RmX2F0dHJpYnV0ZXNcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSBjdHh0IGYgeyBwY3NpZ19zZWxmID0gY3Q7IHBjc2lnX2ZpZWxkcyA9IGw7IF8gfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdEBbPDE+JWFAXUAgJWFAXUAgZW5kQF1cIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYW55OyBwdHlwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+ICgpXG4gICAgICB8IGN0IC0+IHBwIGYgXCIgKCVhKVwiIChjb3JlX3R5cGUgY3R4dCkgY3QpXG4gICAgY3RcbiAgICAobGlzdCAoY2xhc3NfdHlwZV9maWVsZCBjdHh0KSB+c2VwOlwiQDtcIilcbiAgICBsXG5cbigqIGNhbGwgW2NsYXNzX3NpZ25hdHVyZV0gY2FsbGVkIGJ5IFtjbGFzc19zaWduYXR1cmVdICopXG5hbmQgY2xhc3NfdHlwZSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGN0eV9kZXNjIHdpdGhcbiAgfCBQY3R5X3NpZ25hdHVyZSBjcyAtPlxuICAgICAgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiBjcztcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgcHAgZiBcIiVhJWElYVwiXG4gICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2Fycm93IChsLCBjbywgY2wpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUA7LT5AOyVhQF1cIiAoKiBGSVhNRSByZW1vdmUgcGFyZW5zIGxhdGVyICopXG4gICAgICAgICh0eXBlX3dpdGhfbGFiZWwgY3R4dCkgKGwsIGNvKSAoY2xhc3NfdHlwZSBjdHh0KSBjbFxuICB8IFBjdHlfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGV4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGF0dHJpYnV0ZXMgY3R4dCBmIHgucGN0eV9hdHRyaWJ1dGVzXG4gIHwgUGN0eV9vcGVuIChvLCBlKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bGV0IG9wZW4lcyAlYSBpbkA7JWFAXVwiXG4gICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfdHlwZSBjdHh0KSBlXG5cbigqIFtjbGFzcyB0eXBlIGEgPSBvYmplY3QgZW5kXSAqKVxuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbCA9XG4gIGxldCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGt3ZCBmIHggPVxuICAgIGxldCB7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gPSB4IGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQCA9QCAlYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIFwiY2xhc3MgdHlwZVwiIGYgeFxuICB8IHggOjogeHMgLT5cbiAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIpXG4gICAgICAgIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgIHhzXG5cbmFuZCBjbGFzc19maWVsZCBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucGNmX2Rlc2Mgd2l0aFxuICB8IFBjZl9pbmhlcml0IChvdmYsIGNlLCBzbykgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaGVyaXRAICVzQCAlYSVhQF0lYVwiIChvdmVycmlkZSBvdmYpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgICAgIChmdW4gZiBzbyAtPlxuICAgICAgICAgIG1hdGNoIHNvIHdpdGggTm9uZSAtPiAoKSB8IFNvbWUgcyAtPiBwcCBmIFwiQCBhcyAlc1wiIHMudHh0KVxuICAgICAgICBzbyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX2NvbmNyZXRlIChvdmYsIGUpKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsJXMgJWElcyA9QDslYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBtdXRhYmxlX2ZsYWcgbWYgcy50eHRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfbWV0aG9kIChzLCBwZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5tZXRob2QgdmlydHVhbCAlYSAlcyA6QDslYUBdJWFcIiBwcml2YXRlX2ZsYWcgcGYgcy50eHRcbiAgICAgICAgKGNvcmVfdHlwZSBjdHh0KSBjdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfdmFsIChzLCBtZiwgQ2ZrX3ZpcnR1YWwgY3QpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwgdmlydHVhbCAlYSVzIDpAICVhQF0lYVwiIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBsZXQgYmluZCBlID1cbiAgICAgICAgYmluZGluZyBjdHh0IGZcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdmJfcGF0ID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIHM7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBMb2NhdGlvbi5ub25lO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwdmJfZXhwciA9IGU7XG4gICAgICAgICAgICBwdmJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHZiX2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCVzICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgcHJpdmF0ZV9mbGFnIHBmXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXTsgXyB9IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlcyA6QDslYT1AOyVhXCIgcy50eHQgKGNvcmVfdHlwZSBjdHh0KSBjdCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgTm9uZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgYmluZCBlXG4gICAgICAgICAgfCBfIC0+IGJpbmQgZSlcbiAgICAgICAgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfY29uc3RyYWludCAoY3QxLCBjdDIpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5jb25zdHJhaW50ICVhID1AOyVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9pbml0aWFsaXplciBlIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5pbml0aWFsaXplckAgJWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGNmX2F0dHJpYnV0ZXNcbiAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhXG4gIHwgUGNmX2V4dGVuc2lvbiBlIC0+XG4gICAgICBpdGVtX2V4dGVuc2lvbiBjdHh0IGYgZTtcbiAgICAgIGl0ZW1fYXR0cmlidXRlcyBjdHh0IGYgeC5wY2ZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiB7IHBjc3RyX3NlbGYgPSBwOyBwY3N0cl9maWVsZHMgPSBsIH0gPVxuICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5vYmplY3QlYUA7JWFAXUA7ZW5kQF1cIlxuICAgIChmdW4gZiBwIC0+XG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoXG4gICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICB8IFBwYXRfY29uc3RyYWludCBfIC0+IHBwIGYgXCIgJWFcIiAocGF0dGVybiBjdHh0KSBwXG4gICAgICB8IF8gLT4gcHAgZiBcIiAoJWEpXCIgKHBhdHRlcm4gY3R4dCkgcClcbiAgICBwXG4gICAgKGxpc3QgKGNsYXNzX2ZpZWxkIGN0eHQpKVxuICAgIGxcblxuYW5kIGNsYXNzX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBjbF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY2xhc3NfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBjbF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBjbF9kZXNjIHdpdGhcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgY3MgLT4gY2xhc3Nfc3RydWN0dXJlIGN0eHQgZiBjc1xuICAgIHwgUGNsX2Z1biAobCwgZW8sIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJmdW5AICVhQCAtPkAgJWFcIiAobGFiZWxfZXhwIGN0eHQpIChsLCBlbywgcCkgKGNsYXNzX2V4cHIgY3R4dCkgZVxuICAgIHwgUGNsX2xldCAocmYsIGwsIGNlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAIGluQCAlYVwiIChiaW5kaW5ncyBjdHh0KSAocmYsIGwpIChjbGFzc19leHByIGN0eHQpIGNlXG4gICAgfCBQY2xfYXBwbHkgKGNlLCBsKSAtPlxuICAgICAgICBwcCBmIFwiKCglYSlAICVhKVwiXG4gICAgICAgICAgKCogQ2Y6ICM3MjAwICopIChjbGFzc19leHByIGN0eHQpXG4gICAgICAgICAgY2VcbiAgICAgICAgICAobGlzdCAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpKVxuICAgICAgICAgIGxcbiAgICB8IFBjbF9jb25zdHIgKGxpLCBsKSAtPlxuICAgICAgICBwcCBmIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIGlmIGwgPD4gW10gdGhlbiBwcCBmIFwiWyVhXUAgXCIgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiKSBsKVxuICAgICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgKGNlLCBjdCkgLT5cbiAgICAgICAgcHAgZiBcIiglYUAgOkAgJWEpXCIgKGNsYXNzX2V4cHIgY3R4dCkgY2UgKGNsYXNzX3R5cGUgY3R4dCkgY3RcbiAgICB8IFBjbF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBjbF9vcGVuIChvLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgICAob3ZlcnJpZGUgby5wb3Blbl9vdmVycmlkZSlcbiAgICAgICAgICBsb25naWRlbnRfbG9jIG8ucG9wZW5fZXhwciAoY2xhc3NfZXhwciBjdHh0KSBlXG5cbmFuZCBtb2R1bGVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucG10eV9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX3R5cGUgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG10eV9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2Z1bmN0b3IgKFVuaXQsIG10MikgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvciAoKSAtPkAgJWFAXVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdDJcbiAgICB8IFBtdHlfZnVuY3RvciAoTmFtZWQgKHMsIG10MSksIG10MikgLT4gKFxuICAgICAgICBtYXRjaCBzLnR4dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdDFcbiAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgICAgICB8IFNvbWUgbmFtZSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+ZnVuY3RvckAgKCVzQCA6QCAlYSlAIC0+QCAlYUBdXCIgbmFtZVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQxIChtb2R1bGVfdHlwZSBjdHh0KSBtdDIpXG4gICAgfCBQbXR5X3dpdGggKG10LCBbXSkgLT4gbW9kdWxlX3R5cGUgY3R4dCBmIG10XG4gICAgfCBQbXR5X3dpdGggKG10LCBsKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgd2l0aEAgJWFAXVwiIChtb2R1bGVfdHlwZTEgY3R4dCkgbXRcbiAgICAgICAgICAobGlzdCAod2l0aF9jb25zdHJhaW50IGN0eHQpIH5zZXA6XCJAIGFuZEAgXCIpXG4gICAgICAgICAgbFxuICAgIHwgXyAtPiBtb2R1bGVfdHlwZTEgY3R4dCBmIHhcblxuYW5kIHdpdGhfY29uc3RyYWludCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFB3aXRoX3R5cGUgKGxpLCAoeyBwdHlwZV9wYXJhbXMgPSBsczsgXyB9IGFzIHRkKSkgLT5cbiAgICAgIGxldCBscyA9IExpc3QubWFwIGZzdCBscyBpblxuICAgICAgcHAgZiBcInR5cGVAICVhICVhID1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHVsZSAobGksIGxpMikgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgJWEgPUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZSAobGksIG10eSkgLT5cbiAgICAgIHBwIGYgXCJtb2R1bGUgdHlwZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuICB8IFB3aXRoX3R5cGVzdWJzdCAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgOj1AICVhXCJcbiAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgbHMgbG9uZ2lkZW50X2xvYyBsaSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB0ZFxuICB8IFB3aXRoX21vZHN1YnN0IChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA6PUAgJWFcIiBsb25naWRlbnRfbG9jIGxpIGxvbmdpZGVudF9sb2MgbGkyXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgKG1vZHVsZV90eXBlIGN0eHQpIG10eVxuXG5hbmQgbW9kdWxlX3R5cGUxIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBtb2R1bGVfdHlwZSBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wbXR5X2Rlc2Mgd2l0aFxuICAgIHwgUG10eV9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbXR5X2FsaWFzIGxpIC0+IHBwIGYgXCIobW9kdWxlICVhKVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfc2lnbmF0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjI+c2lnQCAlYUBdQCBlbmRAXVwiICgqIFwiQFs8aG92PnNpZ0AgJWFAIGVuZEBdXCIgKilcbiAgICAgICAgICAobGlzdCAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkpXG4gICAgICAgICAgc1xuICAgICAgICAoKiBGSVhNRSB3cm9uZyBpbmRlbnRhdGlvbiopXG4gICAgfCBQbXR5X3R5cGVvZiBtZSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAIG9mQCAlYUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChtb2R1bGVfdHlwZSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc2lnbmF0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBzaWduYXR1cmVfaXRlbSBjdHh0IGYgeCA6IHVuaXQgPVxuICBtYXRjaCB4LnBzaWdfZGVzYyB3aXRoXG4gIHwgUHNpZ190eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzaWdfdHlwZXN1YnN0IGwgLT5cbiAgICAgICgqIFBzaWdfdHlwZXN1YnN0IGlzIG5ldmVyIHJlY3Vyc2l2ZSwgYnV0IHdlIHNwZWNpZnkgW1JlY3Vyc2l2ZV0gaGVyZSB0b1xuICAgICAgICAgYXZvaWQgcHJpbnRpbmcgYSBbbm9ucmVjXSBmbGFnLCB3aGljaCB3b3VsZCBiZSByZWplY3RlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgKilcbiAgICAgIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChSZWN1cnNpdmUsIGZhbHNlLCBsKVxuICB8IFBzaWdfdmFsdWUgdmQgLT5cbiAgICAgIGxldCBpbnRybyA9IGlmIHZkLnB2YWxfcHJpbSA9IFtdIHRoZW4gXCJ2YWxcIiBlbHNlIFwiZXh0ZXJuYWxcIiBpblxuICAgICAgcHAgZiBcIkBbPDI+JXNAICVhQCA6QCAlYUBdJWFcIiBpbnRybyBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ190eXBleHQgdGUgLT4gdHlwZV9leHRlbnNpb24gY3R4dCBmIHRlXG4gIHwgUHNpZ19leGNlcHRpb24gZWQgLT4gZXhjZXB0aW9uX2RlY2xhcmF0aW9uIGN0eHQgZiBlZFxuICB8IFBzaWdfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgY2xhc3NfZGVzY3JpcHRpb24ga3dkIGZcbiAgICAgICAgICAoeyBwY2lfcGFyYW1zID0gbHM7IHBjaV9uYW1lID0geyB0eHQ7IF8gfTsgXyB9IGFzIHgpID1cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzQDs6QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHQgKGNsYXNzX3R5cGUgY3R4dCkgeC5wY2lfZXhwclxuICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBbIHggXSAtPiBjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIgZiB4XG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiXG4gICAgICAgICAgICAoY2xhc3NfZGVzY3JpcHRpb24gXCJjbGFzc1wiKVxuICAgICAgICAgICAgeFxuICAgICAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGNsYXNzX2Rlc2NyaXB0aW9uIFwiYW5kXCIpKVxuICAgICAgICAgICAgeHMpXG4gIHwgUHNpZ19tb2R1bGVcbiAgICAgICh7XG4gICAgICAgICBwbWRfdHlwZSA9IHsgcG10eV9kZXNjID0gUG10eV9hbGlhcyBhbGlhczsgcG10eV9hdHRyaWJ1dGVzID0gW107IF8gfTtcbiAgICAgICAgIF87XG4gICAgICAgfSBhcyBwbWQpIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgbG9uZ2lkZW50X2xvYyBhbGlhcyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdWxlIHBtZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6QCAlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX21vZHN1YnN0IHBtcyAtPlxuICAgICAgcHAgZiBcIkBbPGhvdj5tb2R1bGVAICVzQCA6PUAgJWFAXSVhXCIgcG1zLnBtc19uYW1lLnR4dCBsb25naWRlbnRfbG9jXG4gICAgICAgIHBtcy5wbXNfbWFuaWZlc3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbXMucG1zX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm9wZW4lc0AgJWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICBsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBvZC5wb3Blbl9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfbW9kdHlwZXN1YnN0IHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICAtPlxuICAgICAgbGV0IG1kID1cbiAgICAgICAgbWF0Y2ggbWQgd2l0aCBOb25lIC0+IGFzc2VydCBmYWxzZSAoKiBhc3QgaW52YXJpYW50ICopIHwgU29tZSBtdCAtPiBtdFxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXNAIDo9QCAlYUBdJWFcIiBzLnR4dCAobW9kdWxlX3R5cGUgY3R4dCkgbWRcbiAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzaWdfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzaWdfcmVjbW9kdWxlIGRlY2xzIC0+XG4gICAgICBsZXQgcmVjIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiA/KGZpcnN0ID0gdHJ1ZSkgbCA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgcG1kIDo6IHRsIC0+XG4gICAgICAgICAgICBpZiBub3QgZmlyc3QgdGhlblxuICAgICAgICAgICAgICBwcCBmIFwiQCBAWzxob3YyPmFuZEAgJXM6QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUxIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgICAgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgcmVjQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgfmZpcnN0OmZhbHNlIHRsXG4gICAgICBpblxuICAgICAgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmIGRlY2xzXG4gIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCBtb2R1bGVfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucG1vZF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgIHsgeCB3aXRoIHBtb2RfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucG1vZF9hdHRyaWJ1dGVzXG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtb2RfZGVzYyB3aXRoXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBzIC0+XG4gICAgICAgIHBwIGYgXCJAWzxodjI+c3RydWN0QDtAWzwwPiVhQF1AOzwxIC0yPmVuZEBdXCJcbiAgICAgICAgICAobGlzdCAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgfnNlcDpcIkBcXG5cIilcbiAgICAgICAgICBzXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgKG1lLCBtdCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+KCVhQCA6QCAlYSlAXVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSAobW9kdWxlX3R5cGUgY3R4dCkgbXRcbiAgICB8IFBtb2RfaWRlbnQgbGkgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG1vZF9mdW5jdG9yIChVbml0LCBtZSkgLT4gcHAgZiBcImZ1bmN0b3IgKClAOy0+QDslYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9mdW5jdG9yIChOYW1lZCAocywgbXQpLCBtZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bmN0b3JAICglc0AgOkAgJWEpQDstPkA7JWFcIlxuICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KSBtZVxuICAgIHwgUG1vZF9hcHBseSAobWUxLCBtZTIpIC0+XG4gICAgICAgIHBwIGYgXCIoJWEpKCVhKVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZTEgKG1vZHVsZV9leHByIGN0eHQpIG1lMlxuICAgICAgICAoKiBDZjogIzcyMDAgKilcbiAgICB8IFBtb2RfdW5wYWNrIGUgLT4gcHAgZiBcIih2YWxAICVhKVwiIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG5cbmFuZCBzdHJ1Y3R1cmUgY3R4dCBmIHggPSBsaXN0IH5zZXA6XCJAXFxuXCIgKHN0cnVjdHVyZV9pdGVtIGN0eHQpIGYgeFxuXG5hbmQgcGF5bG9hZCBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFBTdHIgWyB7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZSwgYXR0cnMpIH0gXSAtPlxuICAgICAgcHAgZiBcIkBbPDI+JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUFN0ciB4IC0+IHN0cnVjdHVyZSBjdHh0IGYgeFxuICB8IFBUeXAgeCAtPlxuICAgICAgcHAgZiBcIjpAIFwiO1xuICAgICAgY29yZV90eXBlIGN0eHQgZiB4XG4gIHwgUFNpZyB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBzaWduYXR1cmUgY3R4dCBmIHhcbiAgfCBQUGF0ICh4LCBOb25lKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIFNvbWUgZSkgLT5cbiAgICAgIHBwIGYgXCI/QCBcIjtcbiAgICAgIHBhdHRlcm4gY3R4dCBmIHg7XG4gICAgICBwcCBmIFwiIHdoZW4gXCI7XG4gICAgICBleHByZXNzaW9uIGN0eHQgZiBlXG5cbigqIHRyYW5zZm9ybSBbZiA9IGZ1biBnIGggLT4gLi5dIHRvIFtmIGcgaCA9IC4uLiBdIGNvdWxkIGJlIGltcHJvdmVkICopXG5hbmQgYmluZGluZyBjdHh0IGYgeyBwdmJfcGF0ID0gcDsgcHZiX2V4cHIgPSB4OyBfIH0gPVxuICAoKiAucHZiX2F0dHJpYnV0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRlZCBieSB0aGUgY2FsbGVyLCAjYmluZGluZ3MgKilcbiAgbGV0IHJlYyBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGYgeCA9XG4gICAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgZWxzZVxuICAgICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2Z1biAobGFiZWwsIGVvLCBwLCBlKSAtPlxuICAgICAgICAgIGlmIGxhYmVsID0gTm9sYWJlbCB0aGVuXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGxhYmVsLCBlbywgcCkgcHBfcHJpbnRfcGV4cF9mdW5jdGlvblxuICAgICAgICAgICAgICBlXG4gICAgICB8IFBleHBfbmV3dHlwZSAoc3RyLCBlKSAtPlxuICAgICAgICAgIHBwIGYgXCIodHlwZUAgJXMpQCAlYVwiIHN0ci50eHQgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiBlXG4gICAgICB8IF8gLT4gcHAgZiBcIj1AOyVhXCIgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBpblxuICBsZXQgdHl2YXJzX3N0ciB0eXZhcnMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHR5dmFycyBpblxuICBsZXQgaXNfZGVzdWdhcmVkX2dhZHQgcCBlID1cbiAgICBsZXQgZ2FkdF9wYXR0ZXJuID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7XG4gICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAgIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChhcmdzX3R5dmFycywgcnQpIH0gKTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBTb21lIChwYXQsIGFyZ3NfdHl2YXJzLCBydClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhZHRfZXhwIHR5dmFycyBlID1cbiAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgZ2FkdF9leHAgKHR5dmFyIDo6IHR5dmFycykgZVxuICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfY29uc3RyYWludCAoZSwgY3QpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgU29tZSAoTGlzdC5yZXYgdHl2YXJzLCBlLCBjdClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgZ2FkdF9leHAgPSBnYWR0X2V4cCBbXSBlIGluXG4gICAgbWF0Y2ggKGdhZHRfcGF0dGVybiwgZ2FkdF9leHApIHdpdGhcbiAgICB8IFNvbWUgKHAsIHB0X3R5dmFycywgcHRfY3QpLCBTb21lIChlX3R5dmFycywgZSwgZV9jdClcbiAgICAgIHdoZW4gdHl2YXJzX3N0ciBwdF90eXZhcnMgPSB0eXZhcnNfc3RyIGVfdHl2YXJzIC0+XG4gICAgICAgIGxldCBldHkgPSB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuIFNvbWUgKHAsIHB0X3R5dmFycywgZV9jdCwgZSkgZWxzZSBOb25lXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgaWYgeC5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwge1xuICAgICBwcGF0X2Rlc2MgPVxuICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgKHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IF87IF8gfSBhcyB0eXApICk7XG4gICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICBfO1xuICAgIH0gLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwYXQgKGNvcmVfdHlwZSBjdHh0KSB0eXBcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHhcbiAgZWxzZVxuICAgIG1hdGNoIGlzX2Rlc3VnYXJlZF9nYWR0IHAgeCB3aXRoXG4gICAgfCBTb21lIChwLCBbXSwgY3QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCIlYUA7OiAlYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgU29tZSAocCwgdHl2YXJzLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6IHR5cGVAOyVhLkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAobGlzdCBwcF9wcmludF9zdHJpbmcgfnNlcDpcIkA7XCIpXG4gICAgICAgICAgKHR5dmFyc19zdHIgdHl2YXJzKSAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfY29uc3RyYWludCAocCwgdHkpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+IChcbiAgICAgICAgICAgICgqIHNwZWNpYWwgY2FzZSBmb3IgdGhlIGZpcnN0KilcbiAgICAgICAgICAgIG1hdGNoIHR5IHdpdGhcbiAgICAgICAgICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgcHR5cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlYUA7OkA7JWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICAgICAgICAgICAgdHkgKGV4cHJlc3Npb24gY3R4dCkgeFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiglYUA7OkA7JWEpQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgICAgICAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIHR5IChleHByZXNzaW9uIGN0eHQpIHgpXG4gICAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHAgcHBfcHJpbnRfcGV4cF9mdW5jdGlvbiB4XG4gICAgICAgIHwgXyAtPiBwcCBmIFwiJWFAOz1AOyVhXCIgKHBhdHRlcm4gY3R4dCkgcCAoZXhwcmVzc2lvbiBjdHh0KSB4KVxuXG4oKiBbaW5dIGlzIG5vdCBwcmludGVkICopXG5hbmQgYmluZGluZ3MgY3R4dCBmIChyZiwgbCkgPVxuICBsZXQgYmluZGluZyBrd2QgcmYgZiB4ID1cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhQF0lYVwiIGt3ZCByZWNfZmxhZyByZiAoYmluZGluZyBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHZiX2F0dHJpYnV0ZXNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBbIHggXSAtPiBiaW5kaW5nIFwibGV0XCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAoYmluZGluZyBcImxldFwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nIFwiYW5kXCIgTm9ucmVjdXJzaXZlKSlcbiAgICAgICAgeHNcblxuYW5kIGJpbmRpbmdfb3AgY3R4dCBmIHggPVxuICBtYXRjaCAoeC5wYm9wX3BhdCwgeC5wYm9wX2V4cCkgd2l0aFxuICB8ICggeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dCA9IHB2YXI7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSxcbiAgICAgIHtcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBldmFyOyBfIH07XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBfO1xuICAgICAgfSApXG4gICAgd2hlbiBwdmFyID0gZXZhciAtPlxuICAgICAgcHAgZiBcIkBbPDI+JXMgJXNAXVwiIHgucGJvcF9vcC50eHQgZXZhclxuICB8IHBhdCwgZXhwIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlYUA7PUA7JWFAXVwiIHgucGJvcF9vcC50eHQgKHBhdHRlcm4gY3R4dCkgcGF0XG4gICAgICAgIChleHByZXNzaW9uIGN0eHQpIGV4cFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gY3R4dCBmIHggPVxuICBtYXRjaCB4LnBzdHJfZGVzYyB3aXRoXG4gIHwgUHN0cl9ldmFsIChlLCBhdHRycykgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPjs7JWFAXSVhXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHN0cl90eXBlIChfLCBbXSkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgUHN0cl90eXBlIChyZiwgbCkgLT4gdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCB0cnVlLCBsKVxuICB8IFBzdHJfdmFsdWUgKHJmLCBsKSAtPlxuICAgICAgKCogcHAgZiBcIkBbPGhvdjI+bGV0ICVhJWFAXVwiICByZWNfZmxhZyByZiBiaW5kaW5ncyBsICopXG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbClcbiAgfCBQc3RyX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc3RyX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHN0cl9tb2R1bGUgeCAtPlxuICAgICAgbGV0IHJlYyBtb2R1bGVfaGVscGVyID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoYXJnX29wdCwgbWUnKTsgcG1vZF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgKG1hdGNoIGFyZ19vcHQgd2l0aFxuICAgICAgICAgICAgfCBVbml0IC0+IHBwIGYgXCIoKVwiXG4gICAgICAgICAgICB8IE5hbWVkIChzLCBtdCkgLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVzOiVhKVwiXG4gICAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIG10KTtcbiAgICAgICAgICAgIG1vZHVsZV9oZWxwZXIgbWUnXG4gICAgICAgIHwgbWUgLT4gbWVcbiAgICAgIGluXG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGUgJXMlYUBdJWFcIlxuICAgICAgICAoT3B0aW9uLnZhbHVlIHgucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAoZnVuIGYgbWUgLT5cbiAgICAgICAgICBsZXQgbWUgPSBtb2R1bGVfaGVscGVyIG1lIGluXG4gICAgICAgICAgbWF0Y2ggbWUgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwbW9kX2Rlc2MgPVxuICAgICAgICAgICAgIFBtb2RfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKG1lJywgKHsgcG10eV9kZXNjID0gUG10eV9pZGVudCBfIHwgUG10eV9zaWduYXR1cmUgXzsgXyB9IGFzIG10KSk7XG4gICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiA6QDslYUA7PUA7JWFAO1wiIChtb2R1bGVfdHlwZSBjdHh0KSBtdCAobW9kdWxlX2V4cHIgY3R4dClcbiAgICAgICAgICAgICAgICBtZSdcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIiA9QCAlYVwiIChtb2R1bGVfZXhwciBjdHh0KSBtZSlcbiAgICAgICAgeC5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucG1iX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX29wZW4gb2QgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm9wZW4lc0A7JWFAXSVhXCJcbiAgICAgICAgKG92ZXJyaWRlIG9kLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX21vZHR5cGUgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlcyVhQF0lYVwiIHMudHh0XG4gICAgICAgIChmdW4gZiBtZCAtPlxuICAgICAgICAgIG1hdGNoIG1kIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgbXQgLT5cbiAgICAgICAgICAgICAgcHBfcHJpbnRfc3BhY2UgZiAoKTtcbiAgICAgICAgICAgICAgcHAgZiBcIkAgPUAgJWFcIiAobW9kdWxlX3R5cGUgY3R4dCkgbXQpXG4gICAgICAgIG1kIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX2NsYXNzIGwgLT4gKFxuICAgICAgbGV0IGV4dHJhY3RfY2xhc3NfYXJncyBjbCA9XG4gICAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9mdW4gKGwsIGVvLCBwLCBjbCcpOyBwY2xfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgbG9vcCAoKGwsIGVvLCBwKSA6OiBhY2MpIGNsJ1xuICAgICAgICAgIHwgY2wgLT4gKExpc3QucmV2IGFjYywgY2wpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhcmdzLCBjbCA9IGxvb3AgW10gY2wgaW5cbiAgICAgICAgbGV0IGNvbnN0ciwgY2wgPVxuICAgICAgICAgIG1hdGNoIGNsIHdpdGhcbiAgICAgICAgICB8IHsgcGNsX2Rlc2MgPSBQY2xfY29uc3RyYWludCAoY2wnLCBjdCk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICAoU29tZSBjdCwgY2wnKVxuICAgICAgICAgIHwgXyAtPiAoTm9uZSwgY2wpXG4gICAgICAgIGluXG4gICAgICAgIChhcmdzLCBjb25zdHIsIGNsKVxuICAgICAgaW5cbiAgICAgIGxldCBjbGFzc19jb25zdHJhaW50IGYgY3QgPSBwcCBmIFwiOiBAWyVhQF0gXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgaW5cbiAgICAgIGxldCBjbGFzc19kZWNsYXJhdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBsZXQgYXJncywgY29uc3RyLCBjbCA9IGV4dHJhY3RfY2xhc3NfYXJncyB4LnBjaV9leHByIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyAlYSVhPUA7JWFAXSVhXCIga3dkIHZpcnR1YWxfZmxhZyB4LnBjaV92aXJ0XG4gICAgICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0XG4gICAgICAgICAgKGxpc3QgKGxhYmVsX2V4cCBjdHh0KSlcbiAgICAgICAgICBhcmdzIChvcHRpb24gY2xhc3NfY29uc3RyYWludCkgY29uc3RyIChjbGFzc19leHByIGN0eHQpIGNsXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZWNsYXJhdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVjbGFyYXRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc3RyX2NsYXNzX3R5cGUgbCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uX2xpc3QgY3R4dCBmIGxcbiAgfCBQc3RyX3ByaW1pdGl2ZSB2ZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+ZXh0ZXJuYWxAICVhQCA6QCAlYUBdJWFcIiBwcm90ZWN0X2lkZW50IHZkLnB2YWxfbmFtZS50eHRcbiAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uIGN0eHQpIHZkIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgdmQucHZhbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9pbmNsdWRlIGluY2wgLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPmluY2x1ZGVAICVhQF0lYVwiIChtb2R1bGVfZXhwciBjdHh0KSBpbmNsLnBpbmNsX21vZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGluY2wucGluY2xfYXR0cmlidXRlc1xuICB8IFBzdHJfcmVjbW9kdWxlIGRlY2xzIC0+IChcbiAgICAgICgqIDMuMDcgKilcbiAgICAgIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlczolYUAgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgdHlwIChtb2R1bGVfZXhwciBjdHh0KSBleHByXG4gICAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgIHwgcG1iIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGFuZEAgJXNAID1AICVhQF0lYVwiXG4gICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgICAgKG1vZHVsZV9leHByIGN0eHQpIHBtYi5wbWJfZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIGRlY2xzIHdpdGhcbiAgICAgIHwgKHsgcG1iX2V4cHIgPSB7IHBtb2RfZGVzYyA9IFBtb2RfY29uc3RyYWludCAoZXhwciwgdHlwKSB9IH0gYXMgcG1iKVxuICAgICAgICA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlczolYUAgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBwbWIgOjogbDIgLT5cbiAgICAgICAgICBwcCBmIFwiQFs8aHY+QFs8aG92Mj5tb2R1bGVAIHJlY0AgJXNAID1AICVhQF0lYUAgJWFAXVwiXG4gICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgIHBtYi5wbWJfYXR0cmlidXRlc1xuICAgICAgICAgICAgKGZ1biBmIGwyIC0+IExpc3QuaXRlciAoYXV4IGYpIGwyKVxuICAgICAgICAgICAgbDJcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQc3RyX2V4dGVuc2lvbiAoZSwgYSkgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBhXG5cbmFuZCB0eXBlX3BhcmFtIGN0eHQgZiAoY3QsIChhLCBiKSkgPVxuICBwcCBmIFwiJXMlcyVhXCIgKHR5cGVfdmFyaWFuY2UgYSkgKHR5cGVfaW5qZWN0aXZpdHkgYikgKGNvcmVfdHlwZSBjdHh0KSBjdFxuXG5hbmQgdHlwZV9wYXJhbXMgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIiVhIFwiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLEA7XCIpIGxcblxuYW5kIHR5cGVfZGVmX2xpc3QgY3R4dCBmIChyZiwgZXhwb3J0ZWQsIGwpID1cbiAgbGV0IHR5cGVfZGVjbCBrd2QgcmYgZiB4ID1cbiAgICBsZXQgZXEgPVxuICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgJiYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiBcIlwiXG4gICAgICBlbHNlIGlmIGV4cG9ydGVkIHRoZW4gXCIgPVwiXG4gICAgICBlbHNlIFwiIDo9XCJcbiAgICBpblxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWElcyVzJWFAXSVhXCIga3dkIG5vbnJlY19mbGFnIHJmICh0eXBlX3BhcmFtcyBjdHh0KVxuICAgICAgeC5wdHlwZV9wYXJhbXMgeC5wdHlwZV9uYW1lLnR4dCBlcSAodHlwZV9kZWNsYXJhdGlvbiBjdHh0KSB4XG4gICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5cGVfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiB0eXBlX2RlY2wgXCJ0eXBlXCIgcmYgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIiAodHlwZV9kZWNsIFwidHlwZVwiIHJmKSB4XG4gICAgICAgIChsaXN0IH5zZXA6XCJALFwiICh0eXBlX2RlY2wgXCJhbmRcIiBSZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgcmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQgZiBsYmxzID1cbiAgbGV0IHR5cGVfcmVjb3JkX2ZpZWxkIGYgcGxkID1cbiAgICBwcCBmIFwiQFs8Mj4lYSVzOkA7JWFAOyVhQF1cIiBtdXRhYmxlX2ZsYWcgcGxkLnBsZF9tdXRhYmxlIHBsZC5wbGRfbmFtZS50eHRcbiAgICAgIChjb3JlX3R5cGUgY3R4dCkgcGxkLnBsZF90eXBlIChhdHRyaWJ1dGVzIGN0eHQpIHBsZC5wbGRfYXR0cmlidXRlc1xuICBpblxuICBwcCBmIFwie0BcXG4lYX1cIiAobGlzdCB0eXBlX3JlY29yZF9maWVsZCB+c2VwOlwiO0BcXG5cIikgbGJsc1xuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gICgqIHR5cGVfZGVjbGFyYXRpb24gaGFzIGFuIGF0dHJpYnV0ZSBmaWVsZCxcbiAgICAgYnV0IGl0J3MgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgKilcbiAgbGV0IHByaXYgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9wcml2YXRlIHdpdGggUHVibGljIC0+ICgpIHwgUHJpdmF0ZSAtPiBwcCBmIFwiQDtwcml2YXRlXCJcbiAgaW5cbiAgbGV0IG1hbmlmZXN0IGYgPVxuICAgIG1hdGNoIHgucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5IC0+XG4gICAgICAgIGlmIHgucHR5cGVfa2luZCA9IFB0eXBlX2Fic3RyYWN0IHRoZW5cbiAgICAgICAgICBwcCBmIFwiJXRAOyVhXCIgcHJpdiAoY29yZV90eXBlIGN0eHQpIHlcbiAgICAgICAgZWxzZSBwcCBmIFwiQDslYVwiIChjb3JlX3R5cGUgY3R4dCkgeVxuICBpblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gZiBwY2QgPVxuICAgIHBwIGYgXCJ8QDtcIjtcbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICggcGNkLnBjZF9uYW1lLnR4dCxcbiAgICAgICAgcGNkLnBjZF92YXJzLFxuICAgICAgICBwY2QucGNkX2FyZ3MsXG4gICAgICAgIHBjZC5wY2RfcmVzLFxuICAgICAgICBwY2QucGNkX2F0dHJpYnV0ZXMgKVxuICBpblxuICBsZXQgcmVwciBmID1cbiAgICBsZXQgaW50cm8gZiA9IGlmIHgucHR5cGVfbWFuaWZlc3QgPSBOb25lIHRoZW4gKCkgZWxzZSBwcCBmIFwiQDs9XCIgaW5cbiAgICBtYXRjaCB4LnB0eXBlX2tpbmQgd2l0aFxuICAgIHwgUHR5cGVfdmFyaWFudCB4cyAtPlxuICAgICAgICBsZXQgdmFyaWFudHMgZm10IHhzID1cbiAgICAgICAgICBpZiB4cyA9IFtdIHRoZW4gcHAgZm10IFwiIHxcIlxuICAgICAgICAgIGVsc2UgcHAgZm10IFwiQFxcbiVhXCIgKGxpc3QgfnNlcDpcIkBcXG5cIiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbikgeHNcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIiV0JXQlYVwiIGludHJvIHByaXYgdmFyaWFudHMgeHNcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgfCBQdHlwZV9yZWNvcmQgbCAtPiBwcCBmIFwiJXQldEA7JWFcIiBpbnRybyBwcml2IChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbFxuICAgIHwgUHR5cGVfb3BlbiAtPiBwcCBmIFwiJXQldEA7Li5cIiBpbnRybyBwcml2XG4gIGluXG4gIGxldCBjb25zdHJhaW50cyBmID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKGN0MSwgY3QyLCBfKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5AIGNvbnN0cmFpbnRAICVhQCA9QCAlYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDFcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0MilcbiAgICAgIHgucHR5cGVfY3N0cnNcbiAgaW5cbiAgcHAgZiBcIiV0JXQldFwiIG1hbmlmZXN0IHJlcHIgY29uc3RyYWludHNcblxuYW5kIHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB4ID1cbiAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBmIHggPVxuICAgIHBwIGYgXCJAXFxufEA7JWFcIiAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpIHhcbiAgaW5cbiAgcHAgZiBcIkBbPDI+dHlwZSAlYSVhICs9ICVhQCAlYUBdJWFcIlxuICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgcHAgZiBcIiVhQDtcIiAobGlzdCAodHlwZV9wYXJhbSBjdHh0KSB+Zmlyc3Q6XCIoXCIgfmxhc3Q6XCIpXCIgfnNlcDpcIixcIikgbClcbiAgICB4LnB0eWV4dF9wYXJhbXMgbG9uZ2lkZW50X2xvYyB4LnB0eWV4dF9wYXRoIHByaXZhdGVfZmxhZ1xuICAgIHgucHR5ZXh0X3ByaXZhdGUgKCogQ2Y6ICM3MjAwICopXG4gICAgKGxpc3QgfnNlcDpcIlwiIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGYgKG5hbWUsIHZhcnMsIGFyZ3MsIHJlcywgYXR0cnMpID1cbiAgbGV0IG5hbWUgPSBtYXRjaCBuYW1lIHdpdGggXCI6OlwiIC0+IFwiKDo6KVwiIHwgcyAtPiBzIGluXG4gIGxldCBwcF92YXJzIGYgdnMgPVxuICAgIG1hdGNoIHZzIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCB2cyAtPiBwcCBmIFwiJWFAOy5AO1wiIChsaXN0IHR5dmFyX2xvYyB+c2VwOlwiQDtcIikgdnNcbiAgaW5cbiAgbWF0Y2ggcmVzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBwcCBmIFwiJXMlYUA7JWFcIiBuYW1lXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gKClcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkA7b2ZAOyVhXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICAgICAgICB8IFBjc3RyX3JlY29yZCBsIC0+IHBwIGYgXCJAO29mQDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbClcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFNvbWUgciAtPlxuICAgICAgcHAgZiBcIiVzOkA7JWElYUA7JWFcIiBuYW1lIHBwX3ZhcnMgdmFyc1xuICAgICAgICAoZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIFtdIC0+IGNvcmVfdHlwZTEgY3R4dCBmIHJcbiAgICAgICAgICB8IFBjc3RyX3R1cGxlIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIlxuICAgICAgICAgICAgICAgIChsaXN0IChjb3JlX3R5cGUxIGN0eHQpIH5zZXA6XCJAOypAO1wiKVxuICAgICAgICAgICAgICAgIGwgKGNvcmVfdHlwZTEgY3R4dCkgclxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQDstPkA7JWFcIiAocmVjb3JkX2RlY2xhcmF0aW9uIGN0eHQpIGwgKGNvcmVfdHlwZTEgY3R4dCkgcilcbiAgICAgICAgYXJncyAoYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQgZiB4ID1cbiAgKCogQ2Y6ICM3MjAwICopXG4gIG1hdGNoIHgucGV4dF9raW5kIHdpdGhcbiAgfCBQZXh0X2RlY2wgKHYsIGwsIHIpIC0+XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHh0IGZcbiAgICAgICAgKHgucGV4dF9uYW1lLnR4dCwgdiwgbCwgciwgeC5wZXh0X2F0dHJpYnV0ZXMpXG4gIHwgUGV4dF9yZWJpbmQgbGkgLT5cbiAgICAgIHBwIGYgXCIlc0A7PUA7JWElYVwiIHgucGV4dF9uYW1lLnR4dCBsb25naWRlbnRfbG9jIGxpIChhdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHgucGV4dF9hdHRyaWJ1dGVzXG5cbmFuZCBjYXNlX2xpc3QgY3R4dCBmIGwgOiB1bml0ID1cbiAgbGV0IGF1eCBmIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gPVxuICAgIHBwIGYgXCJAO3wgQFs8Mj4lYSVhQDstPkA7JWFAXVwiIChwYXR0ZXJuIGN0eHQpIHBjX2xoc1xuICAgICAgKG9wdGlvbiAoZXhwcmVzc2lvbiBjdHh0KSB+Zmlyc3Q6XCJAO3doZW5AO1wiKVxuICAgICAgcGNfZ3VhcmRcbiAgICAgIChleHByZXNzaW9uICh1bmRlcl9waXBlIGN0eHQpKVxuICAgICAgcGNfcmhzXG4gIGluXG4gIGxpc3QgYXV4IGYgbCB+c2VwOlwiXCJcblxuYW5kIGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0IGYgKGwsIGUpID1cbiAgbGV0IHNpbXBsZV9uYW1lID1cbiAgICBtYXRjaCBlIHdpdGhcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBsOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgU29tZSBsXG4gICAgfCBfIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgTm9sYWJlbCAtPiBleHByZXNzaW9uMiBjdHh0IGYgZSAoKiBsZXZlbCAyKilcbiAgfCBPcHRpb25hbCBzdHIgLT5cbiAgICAgIGlmIFNvbWUgc3RyID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwiPyVzXCIgc3RyXG4gICAgICBlbHNlIHBwIGYgXCI/JXM6JWFcIiBzdHIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgfCBMYWJlbGxlZCBsYmwgLT5cbiAgICAgIGlmIFNvbWUgbGJsID0gc2ltcGxlX25hbWUgdGhlbiBwcCBmIFwifiVzXCIgbGJsXG4gICAgICBlbHNlIHBwIGYgXCJ+JXM6JWFcIiBsYmwgKHNpbXBsZV9leHByIGN0eHQpIGVcblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCBmIHggPVxuICBtYXRjaCB4LnBkaXJhX2Rlc2Mgd2l0aFxuICB8IFBkaXJfc3RyaW5nIHMgLT4gcHAgZiBcIkAgJVNcIiBzXG4gIHwgUGRpcl9pbnQgKG4sIE5vbmUpIC0+IHBwIGYgXCJAICVzXCIgblxuICB8IFBkaXJfaW50IChuLCBTb21lIG0pIC0+IHBwIGYgXCJAICVzJWNcIiBuIG1cbiAgfCBQZGlyX2lkZW50IGxpIC0+IHBwIGYgXCJAICVhXCIgbG9uZ2lkZW50IGxpXG4gIHwgUGRpcl9ib29sIGIgLT4gcHAgZiBcIkAgJXNcIiAoc3RyaW5nX29mX2Jvb2wgYilcblxubGV0IHRvcGxldmVsX3BocmFzZSBmIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBQdG9wX2RlZiBzIC0+IHBwIGYgXCJAWzxob3YwPiVhQF1cIiAobGlzdCAoc3RydWN0dXJlX2l0ZW0gcmVzZXRfY3R4dCkpIHNcbiAgKCogcHBfb3Blbl9odmJveCBmIDA7ICopXG4gICgqIHBwX3ByaW50X2xpc3Qgc3RydWN0dXJlX2l0ZW0gZiBzIDsgKilcbiAgKCogcHBfY2xvc2VfYm94IGYgKCk7ICopXG4gIHwgUHRvcF9kaXIgeyBwZGlyX25hbWU7IHBkaXJfYXJnID0gTm9uZTsgXyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj4jJXNAXVwiIHBkaXJfbmFtZS50eHRcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBTb21lIHBkaXJfYXJnOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0AgJWFAXVwiIHBkaXJfbmFtZS50eHQgZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnXG5cbmxldCBleHByZXNzaW9uIGYgeCA9IHBwIGYgXCJAWyVhQF1cIiAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSB4XG5cbmxldCBzdHJpbmdfb2ZfZXhwcmVzc2lvbiB4ID1cbiAgaWdub3JlIChmbHVzaF9zdHJfZm9ybWF0dGVyICgpKTtcbiAgbGV0IGYgPSBzdHJfZm9ybWF0dGVyIGluXG4gIGV4cHJlc3Npb24gZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCBzdHJpbmdfb2Zfc3RydWN0dXJlIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgc3RydWN0dXJlIHJlc2V0X2N0eHQgZiB4O1xuICBmbHVzaF9zdHJfZm9ybWF0dGVyICgpXG5cbmxldCB0b3BfcGhyYXNlIGYgeCA9XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKTtcbiAgdG9wbGV2ZWxfcGhyYXNlIGYgeDtcbiAgcHAgZiBcIjs7XCI7XG4gIHBwX3ByaW50X25ld2xpbmUgZiAoKVxuXG5sZXQgY29yZV90eXBlID0gY29yZV90eXBlIHJlc2V0X2N0eHRcbmxldCBwYXR0ZXJuID0gcGF0dGVybiByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlID0gc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2V4cHIgPSBjbGFzc19leHByIHJlc2V0X2N0eHRcbmxldCBjbGFzc19maWVsZCA9IGNsYXNzX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlID0gY2xhc3NfdHlwZSByZXNldF9jdHh0XG5sZXQgY2xhc3Nfc2lnbmF0dXJlID0gY2xhc3Nfc2lnbmF0dXJlIHJlc2V0X2N0eHRcbmxldCBjbGFzc190eXBlX2ZpZWxkID0gY2xhc3NfdHlwZV9maWVsZCByZXNldF9jdHh0XG5sZXQgbW9kdWxlX2V4cHIgPSBtb2R1bGVfZXhwciByZXNldF9jdHh0XG5sZXQgbW9kdWxlX3R5cGUgPSBtb2R1bGVfdHlwZSByZXNldF9jdHh0XG5sZXQgc2lnbmF0dXJlX2l0ZW0gPSBzaWduYXR1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgc3RydWN0dXJlX2l0ZW0gPSBzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0XG5sZXQgdHlwZV9kZWNsYXJhdGlvbiA9IHR5cGVfZGVjbGFyYXRpb24gcmVzZXRfY3R4dFxuIiwibW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMzXCJcbmVuZFxuIiwibW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgbG9jICAoKiogW1QgYXMgJ2FdLiAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAoKiogW1B0eXBfdmFyaWFudChbYEE7YEJdLCBmbGFnLCBsYWJlbHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtbIGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWz4gYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW1s8IGBBfGBCIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9W0Nsb3NlZF19LFxuICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFsnYTEgLi4uICdhbi4gVF1cblxuICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9W1BwYXRfY29uc3RyYWludF19IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6XG5cbiAgICAgICAgICAgIHtbbGV0IHggOiAnYTEgLi4uICdhbi4gVCA9IGUgLi4uXX1cbiAgICAgICAgICAgICAtIFVuZGVyIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9W0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhXG4gICAgICAgICAgICAge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fVtQZXhwX3BvbHldfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX1bcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9W1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfVtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICAgIHwgUHR5cF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSAoKiogW00uKFQpXSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXS4gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAoKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcbiAgICAgICAgICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgICAgICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXVxuICAgICAgICAgICAgcmVwcmVzZW50cyBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS5cbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW2BBXSAgICAgICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAgICAtIFtgQSBvZiBUXSAgICAgICAgICAgICAgd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqKiB7MiBQYXR0ZXJuc30gKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLCBbMW5dICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbQ10gICAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW0MgUF0gICAgICAgICAgICAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFtdLCBQKV1cbiAgICAgICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbYTsgYl0sIFApXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtgQSBQXSB3aGVuIFtwYXRdIGlzIFtTb21lIFBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICgqKiBbUHBhdF9yZWNvcmQoWyhsMSwgUDEpIDsgLi4uIDsgKGxuLCBQbildLCBmbGFnKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX1cbiAgICAgICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbjsgX31dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn1bT3Blbl19XG5cbiAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdCAgKCoqIFBhdHRlcm4gW1t8IFAxOyAuLi47IFBuIHxdXSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFBhdHRlcm4gW1slaWRdXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnN9ICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgY29uc3RhbnQgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSxcbiAgICAgICAgICAgICAgWzFMXSwgWzFuXSAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV1cbiAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2ZcbiAgICAgICAgZnVuY3Rpb25fcGFyYW0gbGlzdCAqIHR5cGVfY29uc3RyYWludCBvcHRpb24gKiBmdW5jdGlvbl9ib2R5XG4gICAgKCoqIFtQZXhwX2Z1bmN0aW9uIChbUDE7IC4uLjsgUG5dLCBDLCBib2R5KV0gcmVwcmVzZW50cyBhbnkgY29uc3RydWN0XG4gICAgICAgIGludm9sdmluZyBbZnVuXSBvciBbZnVuY3Rpb25dLCBpbmNsdWRpbmc6XG4gICAgICAgIC0gW2Z1biBQMSAuLi4gUG4gLT4gRV1cbiAgICAgICAgICB3aGVuIFtib2R5ID0gUGZ1bmN0aW9uX2JvZHkgRV1cbiAgICAgICAgLSBbZnVuIFAxIC4uLiBQbiAtPiBmdW5jdGlvbiBwMSAtPiBlMSB8IC4uLiB8IHBtIC0+IGVtXVxuICAgICAgICAgIHdoZW4gW2JvZHkgPSBQZnVuY3Rpb25fY2FzZXMgWyBwMSAtPiBlMTsgLi4uOyBwbSAtPiBlbSBdXVxuICAgICAgICBbQ10gcmVwcmVzZW50cyBhIHR5cGUgY29uc3RyYWludCBvciBjb2VyY2lvbiBwbGFjZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZVxuICAgICAgICBhcnJvdywgZS5nLiBbZnVuIFAxIC4uLiBQbiA6IHR5IC0+IC4uLl0gd2hlbiBbQyA9IFNvbWUgKFBjb25zdHJhaW50IHR5KV0uXG4gICAgICAgIEEgZnVuY3Rpb24gbXVzdCBoYXZlIHBhcmFtZXRlcnMuIFtQZXhwX2Z1bmN0aW9uIChwYXJhbXMsIF8sIGJvZHkpXSBtdXN0XG4gICAgICAgIGhhdmUgbm9uLWVtcHR5IFtwYXJhbXNdIG9yIGEgW1BmdW5jdGlvbl9jYXNlcyBfXSBib2R5LlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgICByZXByZXNlbnRzIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgICAgICAgIFtsaV0gY2FuIGJlXG4gICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSAobGFiZWxsZWQgYXJndW1lbnRzKSBvclxuICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX2NvbnN0cnVjdChDLCBleHApXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgIC0gW0NdICAgICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgLSBbQyBFXSAgICAgICAgICAgICB3aGVuIFtleHBdIGlzIFtTb21lIEVdLFxuICAgICAgICAgICAgIC0gW0MgKEUxLCAuLi4sIEVuKV0gd2hlbiBbZXhwXSBpcyBbU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKV1cbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3ZhcmlhbnQoYEEsIGV4cCldIHJlcHJlc2VudHNcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gICAgICAgICB3aGVuIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgICgqKiBbRS5sXSAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICAoKiogW3doaWxlIEUxIGRvIEUyIGRvbmVdICopXG4gICAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfVtVcHRvXX1cbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtkaXJlY3Rpb25dIGlzIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b31bRG93bnRvXX1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlICAoKiogWyhFIDogVCldICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gWyhFIDo+IFQpXSAgICAgIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbKEUgOiBUMCA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbbmV3IE0uY10gKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFt7PCB4MSA9IEUxOyAuLi47IHhuID0gRW4gPn1dICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbYXNzZXJ0IEVdLlxuXG4gICAgICAgICAgICAgTm90ZTogW2Fzc2VydCBmYWxzZV0gaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgICAgIHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgKCoqIFsobW9kdWxlIE1FKV0uXG5cbiAgICAgICAgICAgICBbKG1vZHVsZSBNRSA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFtQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrIE1FLCBQdHlwX3BhY2thZ2UgUyldICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgICAgIC0gW2xldCBvcGVuISBNIGluIEVdICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZSAgKCoqIFsuXSAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID1cbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGZ1bmN0aW9uX3BhcmFtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtX2Rlc2MgKikgPVxuICAgIHwgUHBhcmFtX3ZhbCBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm5cbiAgICAoKiogW1BwYXJhbV92YWwgKGxibCwgZXhwMCwgUCldIHJlcHJlc2VudHMgdGhlIHBhcmFtZXRlcjpcbiAgICAgICAgLSBbUF1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAtIFt+bDpQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAtIFs/bDpQXVxuICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAtIFs/bDooUCA9IEUwKV1cbiAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICBOb3RlOiBJZiBbRTBdIGlzIHByb3ZpZGVkLCBvbmx5XG4gICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICopXG4gICAgfCBQcGFyYW1fbmV3dHlwZSBvZiBzdHJpbmcgbG9jXG4gICAgKCoqIFtQcGFyYW1fbmV3dHlwZSB4XSByZXByZXNlbnRzIHRoZSBwYXJhbWV0ZXIgWyh0eXBlIHgpXS5cbiAgICAgICAgW3hdIGNhcnJpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBpZGVudGlmaWVyLCB3aGVyZWFzIHRoZSBbcHBhcmFtX2xvY11cbiAgICAgICAgb24gdGhlIGVuY2xvc2luZyBbZnVuY3Rpb25fcGFyYW1dIG5vZGUgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBbKHR5cGUgeCldXG4gICAgICAgIGFzIGEgd2hvbGUuXG5cbiAgICAgICAgTXVsdGlwbGUgcGFyYW1ldGVycyBbKHR5cGUgYSBiIGMpXSBhcmUgcmVwcmVzZW50ZWQgYXMgbXVsdGlwbGVcbiAgICAgICAgW1BwYXJhbV9uZXd0eXBlXSBub2RlcywgbGV0J3Mgc2F5OlxuXG4gICAgICAgIHtbIFsgeyBwcGFyYW1fa2luZCA9IFBwYXJhbV9uZXd0eXBlIGE7IHBwYXJhbV9sb2MgPSBsb2MxIH07XG4gICAgICAgICAgICAgeyBwcGFyYW1fa2luZCA9IFBwYXJhbV9uZXd0eXBlIGI7IHBwYXJhbV9sb2MgPSBsb2MyIH07XG4gICAgICAgICAgICAgeyBwcGFyYW1fa2luZCA9IFBwYXJhbV9uZXd0eXBlIGM7IHBwYXJhbV9sb2MgPSBsb2MzIH07XG4gICAgICAgICAgIF1cbiAgICAgICAgXX1cblxuICAgICAgICBIZXJlLCB0aGUgZmlyc3QgbG9jIFtsb2MxXSBpcyB0aGUgbG9jYXRpb24gb2YgWyh0eXBlIGEgYiBjKV0sIGFuZCB0aGVcbiAgICAgICAgc3Vic2VxdWVudCBsb2NzIFtsb2MyXSBhbmQgW2xvYzNdIGFyZSB0aGUgc2FtZSBhcyBbbG9jMV0sIGV4Y2VwdCBtYXJrZWQgYXNcbiAgICAgICAgZ2hvc3QgbG9jYXRpb25zLiBUaGUgbG9jYXRpb25zIG9uIFthXSwgW2JdLCBbY10sIGNvcnJlc3BvbmQgdG8gdGhlXG4gICAgICAgIHZhcmlhYmxlcyBbYV0sIFtiXSwgYW5kIFtjXSBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAgKilcblxuICBhbmQgZnVuY3Rpb25fcGFyYW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0aW9uX3BhcmFtICopID1cbiAgICB7IHBwYXJhbV9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcHBhcmFtX2Rlc2MgOiBmdW5jdGlvbl9wYXJhbV9kZXNjO1xuICAgIH1cblxuICBhbmQgZnVuY3Rpb25fYm9keSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZnVuY3Rpb25fYm9keSAqKSA9XG4gICAgfCBQZnVuY3Rpb25fYm9keSBvZiBleHByZXNzaW9uXG4gICAgfCBQZnVuY3Rpb25fY2FzZXMgb2YgY2FzZSBsaXN0ICogTG9jYXRpb24udCAqIGF0dHJpYnV0ZXNcbiAgICAoKiogSW4gW1BmdW5jdGlvbl9jYXNlcyAoXywgbG9jLCBhdHRycyldLCB0aGUgbG9jYXRpb24gZXh0ZW5kcyBmcm9tIHRoZVxuICAgICAgICBzdGFydCBvZiB0aGUgW2Z1bmN0aW9uXSBrZXl3b3JkIHRvIHRoZSBlbmQgb2YgdGhlIGxhc3QgY2FzZS4gVGhlIGNvbXBpbGVyXG4gICAgICAgIHdpbGwgb25seSB1c2UgdHlwZWNoZWNraW5nLXJlbGF0ZWQgYXR0cmlidXRlcyBmcm9tIFthdHRyc10sIGUuZy4gZW5hYmxpbmdcbiAgICAgICAgb3IgZGlzYWJsaW5nIGEgd2FybmluZy5cbiAgICAqKVxuICAoKiogU2VlIHRoZSBjb21tZW50IG9uIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bmN0aW9ufVtQZXhwX2Z1bmN0aW9uXX0uICopXG5cbiAgYW5kIHR5cGVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9jb25zdHJhaW50ICopID1cbiAgICB8IFBjb25zdHJhaW50IG9mIGNvcmVfdHlwZVxuICAgIHwgUGNvZXJjZSBvZiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICgqKiBTZWUgdGhlIGNvbW1lbnQgb24ge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVuY3Rpb259W1BleHBfZnVuY3Rpb25dfS4gKilcblxuICAoKiogezIgVmFsdWUgZGVzY3JpcHRpb25zfSAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyF2YWx1ZV9kZXNjcmlwdGlvbn0gcmVwcmVzZW50czpcbiAgICAgIC0gW3ZhbCB4OiBUXSxcbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgICAgd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19W3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dXG4gICopXG5cbiAgKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgKCoqIFsoJ2ExLC4uLidhbikgdF0gKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqXG4gICAgIEhlcmUgYXJlIHR5cGUgZGVjbGFyYXRpb25zIGFuZCB0aGVpciByZXByZXNlbnRhdGlvbixcbiAgICAgZm9yIHZhcmlvdXMge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfVtwdHlwZV9raW5kXX1cbiAgICAgICAgICAgICBhbmQge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9tYW5pZmVzdH1bcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG4gICAtIFt0eXBlIHRdICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9W1B0eXBlX2Fic3RyYWN0XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMF1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVtQdHlwZV92YXJpYW50XX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbU29tZSBUMF0sXG4gICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLFxuICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVtQdHlwZV9yZWNvcmRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IC4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59W1B0eXBlX29wZW5dfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3QgICgqKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbbCA6IFQgW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuICAoKipcbiAgICAgLSBbeyAuLi47IGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX0sXG4gICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVtwbGRfbXV0YWJsZV19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfS5cblxuICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF92YXJzOiBzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY29uc3RydWN0b3JfZGVjbGFyYXRpb259XG4gICAgICByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgb2Y6XG4gICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDOiBUMF0gICAgICAgICAgICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgLSBbQyBvZiB7Li4ufV0gICAgICAgICAgICAgd2hlbiBbcmVzID0gTm9uZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgLSBbQzogey4uLn0gLT4gVDBdICAgICAgICAgd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdICopXG4gICAgfVxuICAoKipcbiAgICAgRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgIChbdHlwZSB0ICs9IC4uLl0pLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAoKiogW1BleHRfZGVjbChleGlzdGVudGlhbHMsIGNfYXJncywgdF9vcHQpXVxuICAgICAgICAgICAgZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvbiBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuICAgICAgICAgICAgLSBbQyBvZiBUMSAqIC4uLiAqIFRuXSB3aGVuOlxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbTm9uZV0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQwXSB3aGVuXG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAgICAtIFtDOiAnYS4uLiAuIFQxICogLi4uICogVG4gLT4gVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbJ2E7Li4uXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tUMTsgLi4uIDsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZX0gKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIC0gW2NdXG4gICAgICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbVCAtPiBDVF1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19LFxuICAgICAgICAgICAgICAtIFt+bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19LFxuICAgICAgICAgICAgICAtIFs/bDpUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX3NpZ25hdHVyZV0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdCgnc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfVtwY3NpZ19zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fVtQdHlwX2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlICAoKiogW2luaGVyaXQgQ1RdICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICAgIHwgUGN0Zl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgICAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXVxuICAgICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgIFRoZXkgYXJlIGFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogW2NdIGFuZCBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9mdW4obGJsLCBleHAwLCBQLCBDRSldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2Z1biBQIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuIH5sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWQgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdICBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsIGxdfVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXVxuICAgICAgICAgICAgICByZXByZXNlbnRzIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uXG4gICAgICAgICAgICAgIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCBbP11cbiAgICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlICAoKiogWyhDRSA6IENUKV0gKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjbGFzc19zdHJ1Y3R1cmV9IHJlcHJlc2VudHM6XG4gICAgICAtIFtvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZF1cbiAgICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfVtwY3N0cl9zZWxmXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX1bUHBhdF9hbnldfVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW2luaGVyaXQgQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH1bRnJlc2hdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFXVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0ISBDRSBhcyB4XVxuICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW1NvbWUgeF1cbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW3ZhbCB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1bQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB4ID0gRV1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVtNdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIG11dGFibGUgdmlydHVhbCB4OiBUXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogLSBbbWV0aG9kIHggPSBFXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19KVxuICAgICAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1bUHR5cF9wb2x5XX0pXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpICAoKiogW2NvbnN0cmFpbnQgVDEgPSBUMl0gKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbXFxAXFxAXFxAaWRdXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4gICgqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwciAgKCoqIFttb2R1bGUgdHlwZSBvZiBNRV0gKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogWyhtb2R1bGUgTSldICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0ICAoKiogWygpXSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW05hbWVkKG5hbWUsIE1UKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgICAgICAtIFsoXyA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW05vbmVdICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl1cbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAgKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgWCA9IE1dIGFuZCBbbW9kdWxlIFggOiBNVF0gKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuXSAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gICAgfCBQc2lnX21vZHR5cGVzdWJzdCBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfc3Vic3RpdHV0aW9uXSByZXByZXNlbnRzIFtTIDo9IE1dICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgLSBbUyA9IE1UXSxcbiAgICAgLSBbU10gZm9yIGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLFxuICAgICAgIHdoZW4ge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfVtwbXRkX3R5cGVdfSBpcyBbTm9uZV0uXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuICAgICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9W092ZXJyaWRlXX1cbiAgICAgIChzaWxlbmNlcyB0aGUgXCJ1c2VkIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAgIC0gW29wZW4gIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX1bcG9wZW5fb3ZlcnJpZGVdfVxuICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVzY3JpcHRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW29wZW5fZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuIE0uTl1cbiAgICAgIC0gW29wZW4gTShOKS5PXVxuICAgICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW1hdICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmUgICgqKiBbc3RydWN0IC4uLiBlbmRdICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHIgICgqKiBbTUUxKE1FMildICopXG4gICAgfCBQbW9kX2FwcGx5X3VuaXQgb2YgbW9kdWxlX2V4cHIgKCoqIFtNRTEoKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAqKSA9XG4gICAgfCBQdmNfY29uc3RyYWludCBvZiB7XG4gICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM6c3RyaW5nIGxvYyBsaXN0O1xuICAgICAgdHlwOmNvcmVfdHlwZTtcbiAgICAgIH1cbiAgICB8IFB2Y19jb2VyY2lvbiBvZiB7Z3JvdW5kOmNvcmVfdHlwZSBvcHRpb247IGNvZXJjaW9uOmNvcmVfdHlwZSB9XG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9jb25zdHJhaW50OiB2YWx1ZV9jb25zdHJhaW50IG9wdGlvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBkaXJfYXJnOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYzogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gICAgICBwZGlyYV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAzNFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAzNFwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAyXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDUuMDJcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IG1rX2dob3N0X2F0dHIgbmFtZSA9XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSB7IExvY2F0aW9uLnR4dCA9IG5hbWU7IGxvYyA9IExvY2F0aW9uLm5vbmUgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFtdO1xuICAgIGF0dHJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgfVxuXG5sZXQgcmVjIGNvbmNhdF9saXN0X2xpdCBsZWZ0IHJpZ2h0ID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbGV0IG9wZW4gQXN0XzUwMi5Bc3R0eXBlcyBpblxuICBtYXRjaCAobGVmdC5wZXhwX2Rlc2MsIHJpZ2h0LnBleHBfZGVzYykgd2l0aFxuICB8IF8sIFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gbGVmdFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyksIF8gLT4gcmlnaHRcbiAgfCAoIFBleHBfY29uc3RydWN0XG4gICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBsb2MgfSxcbiAgICAgICAgICBTb21lICh7IHBleHBfZGVzYyA9IFBleHBfdHVwbGUgWyBoZDsgdGwgXTsgXyB9IGFzIGFyZ19leHByKSApLFxuICAgICAgXyApIC0+XG4gICAgICB7XG4gICAgICAgIGxlZnQgd2l0aFxuICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgIFBleHBfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgbG9jIH0sXG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBhcmdfZXhwciB3aXRoXG4gICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3R1cGxlIFsgaGQ7IGNvbmNhdF9saXN0X2xpdCB0bCByaWdodCBdO1xuICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgIH1cbiAgfCBfIC0+IGludmFsaWRfYXJnIFwiSW52YWxpZCBvY2FtbC5wcHguY29udGV4dCdzIGxvYWRfcGF0aFwiXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByID1cbiAgbGV0IG9wZW4gQXN0XzUwMi5QYXJzZXRyZWUgaW5cbiAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfdHVwbGUgWyB2aXNpYmxlOyBoaWRkZW4gXSAtPlxuICAgICAgbGV0IG1pZ3JhdGlvbl9hdHRyID1cbiAgICAgICAge1xuICAgICAgICAgIGF0dHJfbmFtZSA9IHsgTG9jYXRpb24udHh0ID0gXCJwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aFwiOyBsb2MgfTtcbiAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICBhdHRyX3BheWxvYWQgPVxuICAgICAgICAgICAgUFN0ciBbIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZXhwciwgW10pIH0gXTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBleHByJyA9IGNvbmNhdF9saXN0X2xpdCB2aXNpYmxlIGhpZGRlbiBpblxuICAgICAgeyBleHByJyB3aXRoIHBleHBfYXR0cmlidXRlcyA9IG1pZ3JhdGlvbl9hdHRyIDo6IGV4cHIucGV4cF9hdHRyaWJ1dGVzIH1cbiAgfCBfIC0+IGV4cHJcblxubGV0IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAobGlkZW50X2xvYywgZXhwcikgLT5cbiAgICAgIG1hdGNoIGxpZGVudF9sb2MuQXN0XzUwMi5Bc3R0eXBlcy50eHQgd2l0aFxuICAgICAgfCBMb25naWRlbnQuTGlkZW50IFwibG9hZF9wYXRoXCIgLT5cbiAgICAgICAgICAobGlkZW50X2xvYywgbWlncmF0ZV9wcHhfY29udGV4dF9sb2FkX3BhdGggZXhwcilcbiAgICAgIHwgXyAtPiAobGlkZW50X2xvYywgZXhwcikpXG4gICAgZmllbGRzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X3BheWxvYWQgcGF5bG9hZCA9XG4gIGxldCBvcGVuIEFzdF81MDIuUGFyc2V0cmVlIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IFBTdHJcbiAgICAgIFtcbiAgICAgICAgKHtcbiAgICAgICAgICAgcHN0cl9kZXNjID1cbiAgICAgICAgICAgICBQc3RyX2V2YWxcbiAgICAgICAgICAgICAgICgoeyBwZXhwX2Rlc2MgPSBQZXhwX3JlY29yZCAoZmllbGRzLCBOb25lKSB9IGFzIGV4cHIpLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgIH0gYXMgc3RyaSk7XG4gICAgICBdIC0+XG4gICAgICBsZXQgbmV3X2ZpZWxkcyA9IG1pZ3JhdGVfcHB4X2NvbnRleHRfZmllbGRzIGZpZWxkcyBpblxuICAgICAgbGV0IG5ld19leHByID0geyBleHByIHdpdGggcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKG5ld19maWVsZHMsIE5vbmUpIH0gaW5cbiAgICAgIFBTdHIgWyB7IHN0cmkgd2l0aCBwc3RyX2Rlc2MgPSBQc3RyX2V2YWwgKG5ld19leHByLCBhdHRyaWJ1dGVzKSB9IF1cbiAgfCBfIC0+IHBheWxvYWRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKHBhcmFtcywgdGNvbnN0cmFpbnQsIGJvZHkpIC0+XG4gICAgICBsZXQgZXhwciA9XG4gICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICB8IFBmdW5jdGlvbl9ib2R5IGV4cHIgLT4gKFxuICAgICAgICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBXZSBkb24ndCB3YW50IHRoaXMgW2Z1bl0gdG8gYmUgbWVyZ2VkIHdpdGggdGhlIHBhcmVudCBkdXJpbmdcbiAgICAgICAgICAgICAgICAgICB0aGUgcm91bmQtdHJpcC4gVGhpcyBhdHRyaWJ1dGUgc2lnbmFscyB0aGF0IHRoaXMgZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgIHJlYWxseSBpcyB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24uICopXG4gICAgICAgICAgICAgICAgbGV0IGF0dHIgPSBta19naG9zdF9hdHRyIFwicHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1wiIGluXG4gICAgICAgICAgICAgICAgbGV0IGV4cHIgPSBjb3B5X2V4cHJlc3Npb24gZXhwciBpblxuICAgICAgICAgICAgICAgIHsgZXhwciB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGF0dHIgOjogZXhwci5wZXhwX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgICAgfCBfIC0+IGNvcHlfZXhwcmVzc2lvbiBleHByKVxuICAgICAgICB8IFBmdW5jdGlvbl9jYXNlcyAoY2FzZXMsIGxvYywgYXR0cnMpIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIGNhc2VzKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYztcbiAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0dHJzO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgbWF0Y2ggdGNvbnN0cmFpbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXhwclxuICAgICAgICB8IFNvbWUgKFBjb25zdHJhaW50IGMpIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChleHByLCBjb3B5X2NvcmVfdHlwZSBjKTtcbiAgICAgICAgICAgICAgcGV4cF9sb2MgPSBleHByLnBleHBfbG9jO1xuICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfCBTb21lIChQY29lcmNlIChjMSwgYzIpKSAtPlxuICAgICAgICAgICAgbGV0IGMxID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBjMSBpblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlIChleHByLCBjMSwgY29weV9jb3JlX3R5cGUgYzIpO1xuICAgICAgICAgICAgICBwZXhwX2xvYyA9IGV4cHIucGV4cF9sb2M7XG4gICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBleHByID1cbiAgICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgICAgKGZ1biBwYXJhbSBleHByIC0+XG4gICAgICAgICAgICBtYXRjaCBwYXJhbSB3aXRoXG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fZGVzYyA9IFBwYXJhbV92YWwgKGxibCwgZXhwMCwgcCk7XG4gICAgICAgICAgICAgcHBhcmFtX2xvYztcbiAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICBsZXQgcGV4cF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICAgICAgICAgICAgICggY29weV9hcmdfbGFiZWwgbGJsLFxuICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIGV4cDAsXG4gICAgICAgICAgICAgICAgICAgICAgY29weV9wYXR0ZXJuIHAsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwciApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IHBwYXJhbV9sb2M7XG4gICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfCB7IHBwYXJhbV9kZXNjID0gUHBhcmFtX25ld3R5cGUgeDsgcHBhcmFtX2xvYyB9IC0+XG4gICAgICAgICAgICAgICAgbGV0IHBleHBfZGVzYyA9XG4gICAgICAgICAgICAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4LCBleHByKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBwcGFyYW1fbG9jO1xuICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgcGFyYW1zIGV4cHJcbiAgICAgIGluXG4gICAgICBleHByLnBleHBfZGVzY1xuICAgICAgKCogQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKSAqKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMi5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2NvbnN0cmFpbnQgPVxuICAgICAgT3B0aW9uLm1hcCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgcHZiX2NvbnN0cmFpbnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzUwMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X3ZhbHVlX2NvbnN0cmFpbnQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvbnN0cmFpbnQgeyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnM7IHR5cCB9IC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID1cbiAgICAgICAgICAgIExpc3QubWFwIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycztcbiAgICAgICAgICB0eXAgPSBjb3B5X2NvcmVfdHlwZSB0eXA7XG4gICAgICAgIH1cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0gLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvblxuICAgICAgICB7XG4gICAgICAgICAgZ3JvdW5kID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBncm91bmQ7XG4gICAgICAgICAgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2lvbjtcbiAgICAgICAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2xvYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxLnR4dClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJtb2R1bGUgb3BlbiBpbiB0eXBlc1wiXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDEuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9XG4gICAgICAobWF0Y2ggYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwucHB4LmNvbnRleHRcIiAtPlxuICAgICAgICAgIGNvcHlfcGF5bG9hZCAobWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIGF0dHJfcGF5bG9hZClcbiAgICAgIHwgXyAtPiBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMi5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAyLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMi5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAyLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDEuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDIuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAyLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAyLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDEuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDIuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAyLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMi5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAyLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAyLkFzdHR5cGVzLnR4dDsgQXN0XzUwMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzUwMVxubW9kdWxlIFRvID0gQXN0XzUwMlxuXG4oKiogTG9vayBmb3IgYSBwYXJ0aWN1bGFyIGF0dHJpYnV0ZSBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuIEF0dHJpYnV0ZXMgYXJlXG4gICAgdXNlZCB0byBtYWtlIGNlcnRhaW4gbWlncmF0aW9ucyByb3VuZC10cmlwLiBSZXR1cm5zIFtOb25lXSBpZiB0aGUgc3BlY2lmaWVkXG4gICAgYXR0cmlidXRlIGlzIG5vdCBmb3VuZC4gKilcbmxldCBleHRyYWN0X2F0dHIgbmFtZSAoYXR0cnMgOiBBc3RfNTAxLlBhcnNldHJlZS5hdHRyaWJ1dGVzKSA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKE5vbmUsIExpc3QucmV2IGFjYylcbiAgICB8IHsgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0geyB0eHQ7IF8gfTsgYXR0cl9wYXlsb2FkOyBfIH0gOjogcVxuICAgICAgd2hlbiB0eHQgPSBuYW1lIC0+XG4gICAgICAgIChTb21lIGF0dHJfcGF5bG9hZCwgTGlzdC5yZXZfYXBwZW5kIGFjYyBxKVxuICAgIHwgaGQgOjogdGwgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICBpblxuICBsb29wIFtdIGF0dHJzXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2xvYWRfcGF0aCBleHByID1cbiAgbGV0IG9wZW4gQXN0XzUwMS5QYXJzZXRyZWUgaW5cbiAgbGV0IHBheWxvYWQsIG90aGVyX2F0dHJzID1cbiAgICBleHRyYWN0X2F0dHIgXCJwcHhsaWIubWlncmF0aW9uLmxvYWRfcGF0aFwiIGV4cHIucGV4cF9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIHBheWxvYWQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIGxldCBwZXhwX2Rlc2MgPVxuICAgICAgICBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBsb2MgPSBleHByLnBleHBfbG9jIH0sIE5vbmUpXG4gICAgICBpblxuICAgICAgbGV0IGhpZGRlbiA9IHsgZXhwciB3aXRoIHBleHBfZGVzYzsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgbGV0IHZpc2libGUgPSBleHByIGluXG4gICAgICB7XG4gICAgICAgIGV4cHIgd2l0aFxuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBvdGhlcl9hdHRycztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIHZpc2libGU7IGhpZGRlbiBdO1xuICAgICAgfVxuICB8IFNvbWUgKFBTdHIgWyB7IHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZXhwciwgW10pOyBfIH0gXSkgLT4gZXhwclxuICB8IFNvbWUgXyAtPiBpbnZhbGlkX2FyZyBcIkludmFsaWQgcHB4bGliLm1pZ3JhdGlvbi5sb2FkX3BhdGggcGF5bG9hZFwiXG5cbmxldCBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gKGxpZGVudF9sb2MsIGV4cHIpIC0+XG4gICAgICBtYXRjaCBsaWRlbnRfbG9jLkFzdF81MDEuQXN0dHlwZXMudHh0IHdpdGhcbiAgICAgIHwgTG9uZ2lkZW50LkxpZGVudCBcImxvYWRfcGF0aFwiIC0+XG4gICAgICAgICAgKGxpZGVudF9sb2MsIG1pZ3JhdGVfcHB4X2NvbnRleHRfbG9hZF9wYXRoIGV4cHIpXG4gICAgICB8IF8gLT4gKGxpZGVudF9sb2MsIGV4cHIpKVxuICAgIGZpZWxkc1xuXG5sZXQgbWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIHBheWxvYWQgPVxuICBsZXQgb3BlbiBBc3RfNTAxLlBhcnNldHJlZSBpblxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyXG4gICAgICBbXG4gICAgICAgICh7XG4gICAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgICAgUHN0cl9ldmFsXG4gICAgICAgICAgICAgICAoKHsgcGV4cF9kZXNjID0gUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgfSBhcyBleHByKSwgYXR0cmlidXRlcyk7XG4gICAgICAgICB9IGFzIHN0cmkpO1xuICAgICAgXSAtPlxuICAgICAgbGV0IG5ld19maWVsZHMgPSBtaWdyYXRlX3BweF9jb250ZXh0X2ZpZWxkcyBmaWVsZHMgaW5cbiAgICAgIGxldCBuZXdfZXhwciA9IHsgZXhwciB3aXRoIHBleHBfZGVzYyA9IFBleHBfcmVjb3JkIChuZXdfZmllbGRzLCBOb25lKSB9IGluXG4gICAgICBQU3RyIFsgeyBzdHJpIHdpdGggcHN0cl9kZXNjID0gUHN0cl9ldmFsIChuZXdfZXhwciwgYXR0cmlidXRlcykgfSBdXG4gIHwgXyAtPiBwYXlsb2FkXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAyLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMi5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBsZXQgcGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIGxvYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb25cbiAgICAgICAgKCBbXSxcbiAgICAgICAgICBOb25lLFxuICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBmdW5jdGlvbl9jYXNlcyAoTGlzdC5tYXAgY29weV9jYXNlIHgwLCBsb2MsIFtdKSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW4gKGFyZ19sYWJlbCwgb3B0X2RlZmF1bHQsIHBhdCwgZXhwcikgLT5cbiAgICAgIGxldCB0YWtlX2JvZHkgKGUgOiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uKSA9XG4gICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIGNhc2VfbGlzdCAtPlxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2Nhc2VzXG4gICAgICAgICAgICAgICggTGlzdC5tYXAgY29weV9jYXNlIGNhc2VfbGlzdCxcbiAgICAgICAgICAgICAgICBlLnBleHBfbG9jLFxuICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyBlLnBleHBfYXR0cmlidXRlcyApXG4gICAgICAgIHwgXyAtPiBBc3RfNTAyLlBhcnNldHJlZS5QZnVuY3Rpb25fYm9keSAoY29weV9leHByZXNzaW9uIGUpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyB0YWtlX2FyZ3VtZW50cyBhY2MgKGUgOiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uKSA9XG4gICAgICAgIGlmIGUucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICAgICAgICAoKiBUaGUgYXR0cmlidXRlIGxpc3QgaXMgbm90IGVtcHR5LCBub25lIG9mIHRoZXNlIG5vZGVzIGNvdWxkIGhhdmVcbiAgICAgICAgICAgICBiZWVuIGNyZWF0ZWQgYnkgdGhlIGRvd253YXJkIG1pZ3JhdGlvbi4gRXhjZXB0IGZvciBbUGV4cF9mdW5dLCBmb3JcbiAgICAgICAgICAgICB3aGljaCB3ZSBhZGQgYSBnaG9zdCBhdHRyaWJ1dGUgdG8gaGVscCB1cyByb3VuZHRyaXAuICopXG4gICAgICAgICAgbGV0IF8sIGF0dHJzID1cbiAgICAgICAgICAgIGV4dHJhY3RfYXR0ciBcInBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcIiBlLnBleHBfYXR0cmlidXRlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICBOb25lLFxuICAgICAgICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGZ1bmN0aW9uX2JvZHlcbiAgICAgICAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB7IGUgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9KSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiBUaGVzZSBub2RlcyBhcmUgbGlrZWx5IHRvIGhhdmUgYmVlbiBzeW50aGV0aXplZCBkdXJpbmcgdGhlXG4gICAgICAgICAgICAgZG93bndhcmQgbWlncmF0aW9uLiAqKVxuICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuIChhcmdfbGFiZWwsIG9wdF9kZWZhdWx0LCBwYXQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIHRha2VfYXJndW1lbnRzX2Z1biBhY2MgYXJnX2xhYmVsIG9wdF9kZWZhdWx0IHBhdCBleHByXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHQsIGV4cHIpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXJhbV9sb2MgPSB0LmxvYztcbiAgICAgICAgICAgICAgICAgIHBwYXJhbV9kZXNjID0gUHBhcmFtX25ld3R5cGUgdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHRha2VfYXJndW1lbnRzIGFjYyBleHByXG4gICAgICAgICAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGV4cCwgY3QpIC0+XG4gICAgICAgICAgICAgICgqIFRoZXNlIHR3byBleHByZXNzaW9uIGFyZSByZXByZXNlbnRlZCB0aGUgc2FtZSBvbiA1LjEgYnV0XG4gICAgICAgICAgICAgICAgIGRpZmZlcmVudGx5IG9uIDUuMjpcbiAgICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgICBsZXQgXyA9IGZ1biB4IDogKF8gLT4gaW50KSAtPiBmdW4geSAtPiB4K3lcbiAgICAgICAgICAgICAgICAgICBsZXQgXyA9IGZ1biB4IC0+ICgoZnVuIHkgLT4geCt5KSA6IF8gLT4gaW50KVxuICAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgICBXZSBub3JtYWxpemUgdGhlIHNlY29uZCBpbnRvIHRoZSBmaXJzdCB3aGVuIG1pZ3JhdGluZyB0byA1LjIsXG4gICAgICAgICAgICAgICAgIG1ha2luZyB0aGUgbWlncmF0aW9uIDUuMi0+NS4xLT41LjIgbm90IHJvdW5kdHJpcCBidXQgaG9wZWZ1bGx5XG4gICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdlIGluIHNlbWFudGljcy4gKilcbiAgICAgICAgICAgICAgbGV0IGN0ID1cbiAgICAgICAgICAgICAgICBTb21lIChBc3RfNTAyLlBhcnNldHJlZS5QY29uc3RyYWludCAoY29weV9jb3JlX3R5cGUgY3QpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYWNjLCBjdCwgdGFrZV9ib2R5IGV4cClcbiAgICAgICAgICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfY29lcmNlIChleHAsIGMxLCBjMikgLT5cbiAgICAgICAgICAgICAgKCogU2FtZSBhcyBhYm92ZSwgbWlnaHQgbm90IHJvdW5kdHJpcCBidXQgaG9wZWZ1bGx5IE9LLiAqKVxuICAgICAgICAgICAgICBsZXQgYzEgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGMxXG4gICAgICAgICAgICAgIGFuZCBjMiA9IGNvcHlfY29yZV90eXBlIGMyIGluXG4gICAgICAgICAgICAgIChhY2MsIFNvbWUgKEFzdF81MDIuUGFyc2V0cmVlLlBjb2VyY2UgKGMxLCBjMikpLCB0YWtlX2JvZHkgZXhwKVxuICAgICAgICAgIHwgXyAtPiAoYWNjLCBOb25lLCB0YWtlX2JvZHkgZSlcbiAgICAgIGFuZCB0YWtlX2FyZ3VtZW50c19mdW4gYWNjIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwciA9XG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIGxldCBwcGFyYW1fZGVzYyA9XG4gICAgICAgICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGFyYW1fdmFsXG4gICAgICAgICAgICAgICggY29weV9hcmdfbGFiZWwgYXJnX2xhYmVsLFxuICAgICAgICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIG9wdF9kZWZhdWx0LFxuICAgICAgICAgICAgICAgIGNvcHlfcGF0dGVybiBwYXQgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogQmVzdC1lZmZvcnQgbG9jYXRpb24uICopXG4gICAgICAgICAgeyBBc3RfNTAyLlBhcnNldHJlZS5wcGFyYW1fbG9jID0gcGF0LnBwYXRfbG9jOyBwcGFyYW1fZGVzYyB9IDo6IGFjY1xuICAgICAgICBpblxuICAgICAgICB0YWtlX2FyZ3VtZW50cyBhY2MgZXhwclxuICAgICAgaW5cbiAgICAgICgqIFRoZSBhcmd1bWVudCBsaXN0IHJldHVybmVkIGJ5IFt0YWtlX2FyZ3VtZW50c10gaXMgcmV2ZXJzZWQgKilcbiAgICAgIGxldCBhcmdfbGlzdCwgdHlwZV9jb25zdHJhaW50LCBib2R5ID1cbiAgICAgICAgdGFrZV9hcmd1bWVudHNfZnVuIFtdIGFyZ19sYWJlbCBvcHRfZGVmYXVsdCBwYXQgZXhwclxuICAgICAgaW5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QucmV2IGFyZ19saXN0LCB0eXBlX2NvbnN0cmFpbnQsIGJvZHkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF81MDEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5sZXRfOyBBc3RfNTAxLlBhcnNldHJlZS5hbmRzOyBBc3RfNTAxLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzUwMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNTAyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNTAyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzUwMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzUwMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9jb25zdHJhaW50O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfY29uc3RyYWludCA9XG4gICAgICBPcHRpb24ubWFwIGNvcHlfdmFsdWVfY29uc3RyYWludCBwdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfdmFsdWVfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudmFsdWVfY29uc3RyYWludCAtPiBBc3RfNTAyLlBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdmNfY29uc3RyYWludCB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczsgdHlwIH0gLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgIHtcbiAgICAgICAgICBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSkgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzO1xuICAgICAgICAgIHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cDtcbiAgICAgICAgfVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHZjX2NvZXJjaW9uXG4gICAgICAgIHtcbiAgICAgICAgICBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZDtcbiAgICAgICAgICBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uO1xuICAgICAgICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfYWxpYXNcbiAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCB7IEFzdF81MDIuQXN0dHlwZXMudHh0ID0geDE7IGxvYyA9IHgwLnB0eXBfbG9jIH0pXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDIuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9XG4gICAgICAobWF0Y2ggYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwucHB4LmNvbnRleHRcIiAtPlxuICAgICAgICAgIGNvcHlfcGF5bG9hZCAobWlncmF0ZV9wcHhfY29udGV4dF9wYXlsb2FkIGF0dHJfcGF5bG9hZClcbiAgICAgIHwgXyAtPiBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkKTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF81MDEuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzUwMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF81MDIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF81MDIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfYXBwbHlfdW5pdCAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzUwMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzUwMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF81MDIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzUwMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF81MDIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzUwMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzUwMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNTAyLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF81MDIuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF81MDIuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNTAyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MiApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzUwMi5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF81MDIuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNTAyLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX3ZhcnMgPVxuICAgICAgTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSBwY2RfdmFycztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF81MDIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzUwMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF81MDIuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF81MDIuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9pbmplY3Rpdml0eSA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSAtPiBBc3RfNTAyLkFzdHR5cGVzLmluamVjdGl2aXR5ID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkluamVjdGl2ZSAtPiBBc3RfNTAyLkFzdHR5cGVzLkluamVjdGl2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHlcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF81MDIuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF81MDIuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF81MDIuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9WYXJpYW5jZSAtPiBBc3RfNTAyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzUwMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNTAyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNTAyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF81MDIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNTAyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNTAyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF81MDIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF81MDIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzUwMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF81MDIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF81MDIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzUwMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNTAxLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNTAyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW5jdGlvblxuICB8IExvbmdpZGVudC5MaWRlbnQgeDAgLT4gTG9uZ2lkZW50LkxpZGVudCB4MFxuICB8IExvbmdpZGVudC5MZG90ICh4MCwgeDEpIC0+IExvbmdpZGVudC5MZG90IChjb3B5X0xvbmdpZGVudF90IHgwLCB4MSlcbiAgfCBMb25naWRlbnQuTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBMb25naWRlbnQuTGFwcGx5IChjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF81MDIuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF81MDIuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNTAyLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gNC4xNCBhbmQgNS4wIGZyb20gYSBQYXJzZXRyZWUgcG9pbnQgb2YgdmlldyBhcmUgdGhlIG1hZ2ljIG51bWJlcnMgKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5Bc3R0eXBlc1xuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LlBhcnNldHJlZVxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMyXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIGxldCBtZXJnZV9sb2MgbGVmdCByaWdodCA9XG4gICAgTG9jYXRpb24uXG4gICAgICB7IGxvY19zdGFydCA9IGxlZnQubG9jX3N0YXJ0OyBsb2NfZW5kID0gcmlnaHQubG9jX2VuZDsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICBpblxuICBsZXQgZ2hvc3RfbG9jIGxvYyA9IHsgbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgPVxuICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICBnaG9zdF9sb2NcbiAgICAgICAgKG1lcmdlX2xvYyBwYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgIGluXG4gICAge1xuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYztcbiAgICAgIHBwYXRfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAocGF0LCB0eXApO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICB9XG4gIGluXG4gIGxldCBwdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQgYW5kIHB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByIGluXG4gIGxldCBjb25zdHJhaW5fcGF0IHBhdCB0eXAgZXhwciA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwIGluXG4gICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIgPVxuICAgIG1hdGNoIChwdmJfY29uc3RyYWludCwgcHZiX3BhdCkgd2l0aFxuICAgIHwgKCBTb21lXG4gICAgICAgICAgKFB2Y19jb25zdHJhaW50XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdO1xuICAgICAgICAgICAgICB0eXAgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIHRoZSBzdWdhcmluZyBvZiBbbGV0IHg6IHVuaXZhcnMgLiB0eXAgPSBleHAgXSB3YXMgZGVzdWdhcmVkIHRvXG4gICAgICAgICAgIFtsZXQgKHg6dW5pdmFycyAuIHR5cCkgPSBleHBdIGluIDUuMCB3aGljaCBkb2Vzbid0IGZpdCB0aGUgY2FzZSBiZWxvdyAqKVxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCAoIFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gICAgICAgIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICAgICAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICAgICAgICBsZXQgZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnLFxuICAgICAgICAgICAgICAgICAgICAgIGxibF9sc3Rfb3B0aW9uIClcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9XG4gICAgICAgICAgbWF0Y2ggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGdob3N0X2xvYyB0eXAucHR5cF9sb2NcbiAgICAgICAgICB8IF8gOjogXyAtPiBnaG9zdF9sb2MgcGV4cF9sb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cF9wb2x5ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXAgd2l0aFxuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAgICAgICAgICggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzLFxuICAgICAgICAgICAgICAgICAgdmFyaWZ5X2NvbnN0cnVjdG9ycyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgdHlwICk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICAgICAgZ2hvc3RfbG9jXG4gICAgICAgICAgICAobWVyZ2VfbG9jIHB2Yl9wYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2NcbiAgICAgICAgICAgICAgIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSB7IChnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwX3BvbHkpIHdpdGggcHBhdF9sb2MgfVxuICAgICAgICBhbmQgcHZiX2V4cHIgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGV4cHIgdmFyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleHByIHdpdGhcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh2YXIsIGV4cHIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChwdmJfZXhwciwgdHlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChMaXN0LnJldiBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMpXG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107IHR5cCB9KSwgXyAtPlxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCBTb21lIChQdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pLCBfIC0+XG4gICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IGdob3N0X2xvYyBjb2VyY2lvbi5wdHlwX2xvYyBpblxuICAgICAgICBsZXQgdHlwID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2VyY2lvbiB3aXRoXG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5IChbXSwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwIGluXG4gICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAocHZiX2V4cHIsIGdyb3VuZCwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgXyAtPiAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBsb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIHBtb2RfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGxvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEgPSBjb3B5X21vZHVsZV9leHByIHgxIGluXG4gICAgICBsZXQgeDEgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgbG9jID0geyB4MS5wbW9kX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgeyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgbG9jIH07XG4gICAgICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciBbXTtcbiAgICAgICAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiB4MS5wbW9kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgfCBfIC0+IHgxXG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBsZXQgZW1wdHlfc3RydWN0ID1cbiAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBlbXB0eV9zdHJ1Y3QpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLmxldF87IEFzdF81MDAuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT4gUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG4gIGluXG4gICgqIE1hdGNoIHRoZSBmb3JtIG9mIHRoZSBleHByIGFuZCBwYXR0ZXJuIHRvIGRlY2lkZSB0aGUgdmFsdWUgb2ZcbiAgICAgW3B2Yl9jb25zdHJhaW50XS4gQWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBQUHJpbnRlci4gKilcbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB0eXZhcnMgaW5cbiAgbGV0IHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcCBlID1cbiAgICBsZXQgdmFsdWVfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSBhcyB0eV9leHQpICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYXNzZXJ0IChtYXRjaCBydC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSk7XG4gICAgICAgICAgbGV0IHR5ID0gbWF0Y2ggYXJnc190eXZhcnMgd2l0aCBbXSAtPiBydCB8IF8gLT4gdHlfZXh0IGluXG4gICAgICAgICAgYFZhciAocGF0LCBhcmdzX3R5dmFycywgcnQsIHR5KVxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwYXQsIHJ0KTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBgTm9uVmFyIChwYXQsIHJ0KVxuICAgICAgfCBfIC0+IGBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIHZhbHVlX2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIHZhbHVlX2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCB2YWx1ZV9leHAgPSB2YWx1ZV9leHAgW10gZSBpblxuICAgIG1hdGNoICh2YWx1ZV9wYXR0ZXJuLCB2YWx1ZV9leHApIHdpdGhcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIFNvbWUgKGVfdHl2YXJzLCBpbm5lcl9lLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuXG4gICAgICAgICAgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCBwdF90eXZhcnMsIGVfY3QsIGlubmVyX2UpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiB0aGUgZXhwcmVzc2lvbiBjb25zdHJhaW50IGFuZCB0aGUgcGF0dGVybiBjb25zdHJhaW50LFxuICAgICAgICAgICAgIGRvbid0IG1hdGNoLCBidXQgd2Ugc3RpbGwgaGF2ZSBhIFB0eXBfcG9seSBwYXR0ZXJuIGNvbnN0cmFpbnQgdGhhdFxuICAgICAgICAgICAgIHNob3VsZCBiZSByZXN1Z2FyZWQgdG8gYSB2YWx1ZSBiaW5kaW5nICopXG4gICAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgXyAtPlxuICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgTm9uVmFyIChwYXQsIGN0KSwgXyAtPiBgTm9uVmFyIChwYXQsIGN0LCBlKVxuICAgIHwgXyAtPiBgTm9uZVxuICBpblxuICBsZXQgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgU29tZVxuICAgICAgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgICB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IHR5X3ZhcnM7IHR5cCB9KVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIsIHB2Yl9jb25zdHJhaW50ID1cbiAgICBtYXRjaCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHB2Yl9wYXQgcHZiX2V4cHIgd2l0aFxuICAgIHwgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCB0eV92YXJzLCB0eXAsIGUpIC0+XG4gICAgICAgIChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXApXG4gICAgfCBgVW5pdmFycyAocGF0LCBbXSwgY3QsIGV4cHIpIC0+IChcbiAgICAgICAgKCogY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBbbGV0IHggOiB0eT8gOj4gY29lciA9IGV4cHIgXSBjYXNlICopXG4gICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb2VyY2UgKGV4cHIsIGdyLCBjb2VyY2UpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyIGluXG4gICAgICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2UgaW5cbiAgICAgICAgICAgIGxldCBwdmJfY29uc3RyYWludCA9XG4gICAgICAgICAgICAgIFNvbWUgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAocGF0LCBleHByLCBwdmJfY29uc3RyYWludClcbiAgICAgICAgfCBfIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdCkpXG4gICAgfCBgVW5pdmFycyAocGF0LCBfLCBjdCwgZXhwcikgLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KVxuICAgIHwgYE5vblZhciAocCwgdHlwLCBlKSAtPiAocCwgZSwgd2l0aF9jb25zdHJhaW50IFtdIHR5cClcbiAgICB8IGBOb25lIC0+IChwdmJfcGF0LCBwdmJfZXhwciwgTm9uZSlcbiAgaW5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEsIGlzX3VuaXQgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0ciBhY2MgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IF8gPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lID0geyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgXyB9O1xuICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogcSAtPlxuICAgICAgICAgICAgICAgICAgKExpc3QucmV2X2FwcGVuZCBhY2MgcSwgZmFsc2UpXG4gICAgICAgICAgICAgIHwgaGQgOjogdGwgLT4gZXh0cmFjdF9hdHRyIChoZCA6OiBhY2MpIHRsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYiA9IGV4dHJhY3RfYXR0ciBbXSB4MS5wbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgICAgICh7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH0sIGIpXG4gICAgICAgIHwgXyAtPiAoeDEsIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3VuaXQgdGhlbiBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gICAgICBlbHNlXG4gICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzQxNFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF81MDAuUGFyc2V0cmVlLiVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzQxNC5QYXJzZXRyZWUuJXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSAoW10sIFApXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgIEMgKHR5cGUgYSBiKSBQICAgU29tZSAoW2E7IGJdLCBQKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA6PSAgLi4uICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMwXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5sZXRfOyBBc3RfNDE0LlBhcnNldHJlZS5hbmRzOyBBc3RfNDE0LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT4gKFxuICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICAgICAgfCBoZCA6OiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInR5cGUgcGFyYW1ldGVycyBpbiBleHRlbnNpb24gY29uc3RydWN0b3JzXCIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwY2RfdmFycyB3aXRoXG4gIHwgW10gLT5cbiAgICAgIHtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgfVxuICB8IGhkIDo6IF8gLT4gbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInBjZF92YXJzIGluIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uc1wiXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTQuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoW10sIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTQuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzID0gW107XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTQuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTQuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHgwIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICB8IHR5IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB0eS5Bc3RfNDEzLkFzdHR5cGVzLmxvY1xuICAgICAgICAgICAgICAgICAgICBcImV4aXN0ZW50aWFscyBpbiBwYXR0ZXJuLW1hdGNoaW5nXCIpO1xuICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4geDEpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyBcIm1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0IChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jXG4gICAgICAgIFwiZGVzdHJ1Y3RpdmUgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAuQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2NcbiAgICAgICAgXCJsb2NhbCBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiAoW10sIGNvcHlfcGF0dGVybiB4KSkgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI4XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI4XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI3XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI3XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIF8sIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBMb2NhdGlvbi5ub25lLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjZcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xMFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvY1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW5vbnltb3VzIGxldCBtb2R1bGVcIlxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jXG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW55bnltb3VzIHVucGFja1wiIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IExvY2F0aW9uLnQgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1iX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBiaW5kaW5nXCIpXG4gICAgICAgIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT5cbiAgICBzdHJpbmcgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgKiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSBvcHRpb24gPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gKHsgbG9jID0gTG9jYXRpb24ubm9uZTsgdHh0ID0gXCIqXCIgfSwgTm9uZSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgKCBjb3B5X2xvYyAoZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgeCAtPiB4KSB4MCxcbiAgICAgICAgU29tZSAoY29weV9tb2R1bGVfdHlwZSB4MSkgKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWRfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBUaHUgTWFyIDIxIDA5OjUwOjQyIEdNVCAyMDE5XG4gICBPQ2FtbCB3YXM6XG4gICBjb21taXQgNTVjOWJhNDY2MzYyZjMwM2ViNGQ1ZWQ1MTFmNmZkYTE0Mjg3OTEzNyAoSEVBRCAtPiA0LjA4LCBvcmlnaW4vNC4wOClcbiAgICAgQXV0aG9yOiBOaWNvbMOhcyBPamVkYSBCw6RyIDxuLm9qZS5iYXJAZ21haWwuY29tPlxuICAgICBEYXRlOiAgIFR1ZSBNYXIgMTkgMDg6MTE6MDIgMjAxOSArMDEwMFxuXG4gICAgICAgICBNZXJnZSBwdWxsIHJlcXVlc3QgIzg1MjEgZnJvbSBub2piL2ZpeF91bml4X3Rlc3RzXzQwOFxuXG4gICAgICAgICBBY3R1YWxseSBydW4gYWxsIGxpYi11bml4IHRlc3RzIFs0LjA4XVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI1XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI1XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOS5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDguUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA4LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA4LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDguQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDguQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOC5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDguUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA4LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA4LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDguQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBXZWQgQXByIDE4IDEwOjMzOjI5IEJTVCAyMDE4XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCBjMGJkNmEyN2UxMzg5MTE1NjBmNDNkYzc1ZDVmZGUyYWRlNGQ2Y2ZlIChIRUFELCB0YWc6IDQuMDcuMCtiZXRhMilcbiAgICAgQXV0aG9yOiBEYW1pZW4gRG9saWdleiA8ZGFtaWVuLmRvbGlnZXpAaW5yaWEuZnI+XG4gICAgIERhdGU6ICAgVHVlIEFwciAxMCAxNDo1MDo0OCAyMDE4ICswMjAwXG5cbiAgICAgICAgIGNoYW5nZSBWRVJTSU9OIGZvciA0LjA3LjArYmV0YTJcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjNcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wOFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2xvYyA9IF87XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAgKCBwZGlyX25hbWUuTG9jYXRpb24udHh0LFxuICAgICAgICAgIG1hdGNoIHBkaXJfYXJnIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgYXJnIClcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgRnJvbS5QYXJzZXRyZWUucGRpcmFfbG9jID0gX3BkaXJhX2xvYyB9IC0+XG4gIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzY1xuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkLFxuICAgICAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEgKVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG9wIHsgbGV0XzsgYW5kcyA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsZXRfLnBib3Bfb3AubG9jIFwibGV0IG9wZXJhdG9yc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwcmZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9ib29sIHgxLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBvZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbG9jID0gXztcbiAgICAgfSAtPlxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZSwgY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZClcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQ7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9XG4gICAgICAgICAgICAgICAgY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIGxldCB4MF9sb2MgPVxuICAgICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICAgIHwgW10gLT4gTG9jYXRpb24ubm9uZVxuICAgICAgICB8IHsgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jOyBfIH0gOjogXyAtPiBwdHlwZV9sb2NcbiAgICAgIGluXG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDBfbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5wbXNfbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbigqIGFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gICBmdW5cbiAgICAgeyBGcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHB0eWV4bl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBwdHlleG5fYXR0cmlidXRlcyB9XG4gICAgICAtPlxuICAgICB7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IChjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2MpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9XG4gICAgICAgICAoY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzKVxuICAgICB9KilcbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbmFtZSA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLnR4dCA9IHgwOyBMb2NhdGlvbi5sb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfYXJnID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDE7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvblxuICAgID1cbiAgbGV0IHdyYXAgcGRpcmFfZGVzYyA9XG4gICAgU29tZSB7IFRvLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBUby5QYXJzZXRyZWUucGRpcmFfbG9jID0gTG9jYXRpb24ubm9uZSB9XG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IE5vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKSB8PiB3cmFwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSk7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2Jvb2wgeDIsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPSBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgyKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPSBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MDtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIHgxO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZCk7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzdHJfZmllbGRzXG4gIGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKVxuICAgICAgICAgICAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3NpZ19maWVsZHNcbiAgaW5cblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IF8gOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfbG9jID0gcHR5ZXh0X3BhdGguTG9jYXRpb24ubG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gTW9uIE9jdCAgMiAxMToyNTo1NyBDRVNUIDIwMTdcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IDY1OTQwYTJjNmJlNDNjNDJmNzVjNmM2YjI1NTk3NGY3ZTZkZTAzY2EgKEhFQUQgLT4gNC4wNiwgb3JpZ2luLzQuMDYpXG4gICAgIEF1dGhvcjogQ2hyaXN0b3BoZSBSYWZmYWxsaSA8Y2hyaXN0b3BoZUByYWZmYWxsaS5ldT5cbiAgICAgRGF0ZTogICBTdW4gT2N0IDEgMTg6Mjc6MDcgMjAxNyArMDIwMFxuXG4gICAgICAgICBmaXhlZCBwb3NpdGlvbiBvZiBsYXN0IG9wdGlvbmFsIGxhc3Qgc2VtaWNvbHVtbiBpbiBzZXF1ZW5jZSAoIzEzODcpXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIyXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA2XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBMb2NhdGlvbi5ub25lIFwiaW5oZXJpdGFuY2UgaW4gb2JqZWN0IHR5cGVcIilcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MC50eHQsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgZXhwcmVzc2lvblwiXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IF87IF8gfSwgeDApIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCB4MDsgbG9jIH0sIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IHgwOyBsb2MgfSwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IGxvYzsgXyB9LCBfeDApIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyBsb2M7IF8gfSwgX3gxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyB0eXBlXCJcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggeyB0eHQgPSBjb3B5X2xhYmVsIHgwOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLkZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWUsXG4gICAgICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwIClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxLkZyb20uQXN0dHlwZXMudHh0KVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBub2xvYyB4ID0geyBMb2NhdGlvbi50eHQgPSB4OyBsb2MgPSBMb2NhdGlvbi5ub25lIH1cblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIG5vbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAobm9sb2MgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIChub2xvYyB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IG5vbG9jIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBub2xvYyB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImxvY2FsIGV4Y2VwdGlvbnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIGxhYiBtdXN0IHN0YXJ0IHdpdGggJz8nLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuXG4gICAgTm90ZTogd2hlbiB1c2VkIHVuZGVyIFBzdHJfcHJpbWl0aXZlLCBwcmltIGNhbm5vdCBiZSBlbXB0eVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvcmVfdHlwZSBsaXN0O1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKGFyZ3MgPSBbXSwgcmVzID0gU29tZSBUMClcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDApXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb3JlX3R5cGUgbGlzdCAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2YgaW50XG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE1XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwMlxuXG5sZXQgaW5qZWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgZCA9XG4gIGxldCBvcGVuIFRvIGluXG4gIGxldCBvcGVuIFBhcnNldHJlZSBpblxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCBfIC0+XG4gICAgICBsZXQgbG9jID0geyBkLnB0eXBfbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgdHh0ID0gTG9uZ2lkZW50Lkxkb3QgKExvbmdpZGVudC5MaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKSBpblxuICAgICAgbGV0IGlkZW50ID0geyBMb2NhdGlvbi50eHQ7IGxvYyB9IGluXG4gICAgICB7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZGVudCwgWyBkIF0pO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG4gIHwgXyAtPiBkXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInVucmVhY2hhYmxlIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCBsb2MgeDAsIGNvcHlfY29uc3RhbnQgbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgbG9jIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcInNpZ25hdHVyZXMgaW4gYXR0cmlidXRlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIChmcm9tX2xvYyBwZXh0X25hbWUpIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyAoZnJvbV9sb2MgcGNkX25hbWUpIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgbGlzdCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT4gTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJpbmxpbmUgcmVjb3Jkc1wiXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBcIlwiXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gXCI/XCIgXiB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgbG9jIDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uQXN0dHlwZXMuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ2wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDMyIChJbnQzMi5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ0wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDY0IChJbnQ2NC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ24nIC0+IFRvLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCAoTmF0aXZlaW50Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gaW50ZWdlciBsaXRlcmFsc1wiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+IFRvLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDBcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gZmxvYXQgbGl0ZXJhbHNcIilcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgcmVjZmxhZyB0eXBlcyA9XG4gIG1hdGNoIChyZWNmbGFnLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMpIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMgLT4gdHlwZXNcbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgW10gLT4gW11cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeCA6OiB4cyAtPlxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJfbm9uZV9cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgICh7IFRvLkFzdHR5cGVzLnR4dCA9IFwibm9ucmVjXCI7IGxvYyB9LCBUby5QYXJzZXRyZWUuUFN0ciBbXSlcbiAgICAgICAgOjogeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgX3gxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwMlxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHR5cCA9XG4gIGxldCBvcGVuIEZyb20gaW5cbiAgbGV0IG9wZW4gTG9uZ2lkZW50IGluXG4gIG1hdGNoIChsYWJlbCwgdHlwLlBhcnNldHJlZS5wdHlwX2Rlc2MpIHdpdGhcbiAgfCAoIFRvLkFzdHR5cGVzLk9wdGlvbmFsIF8sXG4gICAgICBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoeyBMb2NhdGlvbi50eHQgPSBMZG90IChMaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKTsgXyB9LCBbIGQgXSkgKSAtPlxuICAgICAgZFxuICB8IF8gLT4gdHlwXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MCksXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgcGNkX2FyZ3MpO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gZnVuIHggLT5cbiAgaWYgeCA8PiBcIlwiIHRoZW5cbiAgICBpZiB4LlswXSA9ICc/JyB0aGVuXG4gICAgICBUby5Bc3R0eXBlcy5PcHRpb25hbCAoU3RyaW5nLnN1YiB4IDEgKFN0cmluZy5sZW5ndGggeCAtIDEpKVxuICAgIGVsc2UgVG8uQXN0dHlwZXMuTGFiZWxsZWQgeFxuICBlbHNlIFRvLkFzdHR5cGVzLk5vbGFiZWxcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLkFzdHR5cGVzLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQzMiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgeDAsIFNvbWUgJ2wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50NjQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHgwLCBTb21lICdMJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHgwLCBTb21lICduJylcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgdHlwZXMgPVxuICBsZXQgaXNfbm9ucmVjIChhdHRyLCBfKSA9IGF0dHIuTG9jYXRpb24udHh0ID0gXCJub25yZWNcIiBpblxuICBtYXRjaCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMgd2l0aFxuICB8IHggOjogeHMgd2hlbiBMaXN0LmV4aXN0cyBpc19ub25yZWMgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyAtPlxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IChpc19ub25yZWMgeCkpIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzKVxuICB8IHR5cGVzIC0+IChUby5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzKVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaW50IChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibGV0IGlzX2tleXdvcmQgPSBmdW5jdGlvblxuICB8IFwiYW5kXCIgLT4gdHJ1ZVxuICB8IFwiYXNcIiAtPiB0cnVlXG4gIHwgXCJhc3NlcnRcIiAtPiB0cnVlXG4gIHwgXCJiZWdpblwiIC0+IHRydWVcbiAgfCBcImNsYXNzXCIgLT4gdHJ1ZVxuICB8IFwiY29uc3RyYWludFwiIC0+IHRydWVcbiAgfCBcImRvXCIgLT4gdHJ1ZVxuICB8IFwiZG9uZVwiIC0+IHRydWVcbiAgfCBcImRvd250b1wiIC0+IHRydWVcbiAgfCBcImVsc2VcIiAtPiB0cnVlXG4gIHwgXCJlbmRcIiAtPiB0cnVlXG4gIHwgXCJleGNlcHRpb25cIiAtPiB0cnVlXG4gIHwgXCJleHRlcm5hbFwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZm9yXCIgLT4gdHJ1ZVxuICB8IFwiZnVuXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3Rpb25cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdG9yXCIgLT4gdHJ1ZVxuICB8IFwiaWZcIiAtPiB0cnVlXG4gIHwgXCJpblwiIC0+IHRydWVcbiAgfCBcImluY2x1ZGVcIiAtPiB0cnVlXG4gIHwgXCJpbmhlcml0XCIgLT4gdHJ1ZVxuICB8IFwiaW5pdGlhbGl6ZXJcIiAtPiB0cnVlXG4gIHwgXCJsYXp5XCIgLT4gdHJ1ZVxuICB8IFwibGV0XCIgLT4gdHJ1ZVxuICB8IFwibWF0Y2hcIiAtPiB0cnVlXG4gIHwgXCJtZXRob2RcIiAtPiB0cnVlXG4gIHwgXCJtb2R1bGVcIiAtPiB0cnVlXG4gIHwgXCJtdXRhYmxlXCIgLT4gdHJ1ZVxuICB8IFwibmV3XCIgLT4gdHJ1ZVxuICB8IFwibm9ucmVjXCIgLT4gdHJ1ZVxuICB8IFwib2JqZWN0XCIgLT4gdHJ1ZVxuICB8IFwib2ZcIiAtPiB0cnVlXG4gIHwgXCJvcGVuXCIgLT4gdHJ1ZVxuICB8IFwib3JcIiAtPiB0cnVlXG4gICgqIHwgXCJwYXJzZXJcIiAtPiB0cnVlICopXG4gIHwgXCJwcml2YXRlXCIgLT4gdHJ1ZVxuICB8IFwicmVjXCIgLT4gdHJ1ZVxuICB8IFwic2lnXCIgLT4gdHJ1ZVxuICB8IFwic3RydWN0XCIgLT4gdHJ1ZVxuICB8IFwidGhlblwiIC0+IHRydWVcbiAgfCBcInRvXCIgLT4gdHJ1ZVxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcInRyeVwiIC0+IHRydWVcbiAgfCBcInR5cGVcIiAtPiB0cnVlXG4gIHwgXCJ2YWxcIiAtPiB0cnVlXG4gIHwgXCJ2aXJ0dWFsXCIgLT4gdHJ1ZVxuICB8IFwid2hlblwiIC0+IHRydWVcbiAgfCBcIndoaWxlXCIgLT4gdHJ1ZVxuICB8IFwid2l0aFwiIC0+IHRydWVcbiAgfCBcImxvclwiIC0+IHRydWVcbiAgfCBcImx4b3JcIiAtPiB0cnVlXG4gIHwgXCJtb2RcIiAtPiB0cnVlXG4gIHwgXCJsYW5kXCIgLT4gdHJ1ZVxuICB8IFwibHNsXCIgLT4gdHJ1ZVxuICB8IFwibHNyXCIgLT4gdHJ1ZVxuICB8IFwiYXNyXCIgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVyc1xuICAgIG9wZW4gUHJpbnRmICQqKVxuXG4oKiBDb3B5IG9mIE9DYW1sIHBhcnNldHJlZXMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb24gKGZ1biBzdWZmaXggXyAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIEFzdF8lcyA9IEFzdF8lc1xcblwiIHN1ZmZpeCBzdWZmaXgpXG4qKVxubW9kdWxlIEFzdF80MDIgPSBBc3RfNDAyXG5tb2R1bGUgQXN0XzQwMyA9IEFzdF80MDNcbm1vZHVsZSBBc3RfNDA0ID0gQXN0XzQwNFxubW9kdWxlIEFzdF80MDUgPSBBc3RfNDA1XG5tb2R1bGUgQXN0XzQwNiA9IEFzdF80MDZcbm1vZHVsZSBBc3RfNDA3ID0gQXN0XzQwN1xubW9kdWxlIEFzdF80MDggPSBBc3RfNDA4XG5tb2R1bGUgQXN0XzQwOSA9IEFzdF80MDlcbm1vZHVsZSBBc3RfNDEwID0gQXN0XzQxMFxubW9kdWxlIEFzdF80MTEgPSBBc3RfNDExXG5tb2R1bGUgQXN0XzQxMiA9IEFzdF80MTJcbm1vZHVsZSBBc3RfNDEzID0gQXN0XzQxM1xubW9kdWxlIEFzdF80MTQgPSBBc3RfNDE0XG5tb2R1bGUgQXN0XzUwMCA9IEFzdF81MDBcbm1vZHVsZSBBc3RfNTAxID0gQXN0XzUwMVxubW9kdWxlIEFzdF81MDIgPSBBc3RfNTAyXG4oKiQqKVxuXG4oKiBNYW51YWwgbWlncmF0aW9uIGJldHdlZW4gdmVyc2lvbnMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb25fcGFpciAoZnVuIHggeSAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIE1pZ3JhdGVfJXNfJXMgPSBNaWdyYXRlXyVzXyVzXFxuXCIgeCB5IHggeTtcbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHkgeCB5IHgpXG4qKVxubW9kdWxlIE1pZ3JhdGVfNDAyXzQwMyA9IE1pZ3JhdGVfNDAyXzQwM1xubW9kdWxlIE1pZ3JhdGVfNDAzXzQwMiA9IE1pZ3JhdGVfNDAzXzQwMlxubW9kdWxlIE1pZ3JhdGVfNDAzXzQwNCA9IE1pZ3JhdGVfNDAzXzQwNFxubW9kdWxlIE1pZ3JhdGVfNDA0XzQwMyA9IE1pZ3JhdGVfNDA0XzQwM1xubW9kdWxlIE1pZ3JhdGVfNDA0XzQwNSA9IE1pZ3JhdGVfNDA0XzQwNVxubW9kdWxlIE1pZ3JhdGVfNDA1XzQwNCA9IE1pZ3JhdGVfNDA1XzQwNFxubW9kdWxlIE1pZ3JhdGVfNDA1XzQwNiA9IE1pZ3JhdGVfNDA1XzQwNlxubW9kdWxlIE1pZ3JhdGVfNDA2XzQwNSA9IE1pZ3JhdGVfNDA2XzQwNVxubW9kdWxlIE1pZ3JhdGVfNDA2XzQwNyA9IE1pZ3JhdGVfNDA2XzQwN1xubW9kdWxlIE1pZ3JhdGVfNDA3XzQwNiA9IE1pZ3JhdGVfNDA3XzQwNlxubW9kdWxlIE1pZ3JhdGVfNDA3XzQwOCA9IE1pZ3JhdGVfNDA3XzQwOFxubW9kdWxlIE1pZ3JhdGVfNDA4XzQwNyA9IE1pZ3JhdGVfNDA4XzQwN1xubW9kdWxlIE1pZ3JhdGVfNDA4XzQwOSA9IE1pZ3JhdGVfNDA4XzQwOVxubW9kdWxlIE1pZ3JhdGVfNDA5XzQwOCA9IE1pZ3JhdGVfNDA5XzQwOFxubW9kdWxlIE1pZ3JhdGVfNDA5XzQxMCA9IE1pZ3JhdGVfNDA5XzQxMFxubW9kdWxlIE1pZ3JhdGVfNDEwXzQwOSA9IE1pZ3JhdGVfNDEwXzQwOVxubW9kdWxlIE1pZ3JhdGVfNDEwXzQxMSA9IE1pZ3JhdGVfNDEwXzQxMVxubW9kdWxlIE1pZ3JhdGVfNDExXzQxMCA9IE1pZ3JhdGVfNDExXzQxMFxubW9kdWxlIE1pZ3JhdGVfNDExXzQxMiA9IE1pZ3JhdGVfNDExXzQxMlxubW9kdWxlIE1pZ3JhdGVfNDEyXzQxMSA9IE1pZ3JhdGVfNDEyXzQxMVxubW9kdWxlIE1pZ3JhdGVfNDEyXzQxMyA9IE1pZ3JhdGVfNDEyXzQxM1xubW9kdWxlIE1pZ3JhdGVfNDEzXzQxMiA9IE1pZ3JhdGVfNDEzXzQxMlxubW9kdWxlIE1pZ3JhdGVfNDEzXzQxNCA9IE1pZ3JhdGVfNDEzXzQxNFxubW9kdWxlIE1pZ3JhdGVfNDE0XzQxMyA9IE1pZ3JhdGVfNDE0XzQxM1xubW9kdWxlIE1pZ3JhdGVfNDE0XzUwMCA9IE1pZ3JhdGVfNDE0XzUwMFxubW9kdWxlIE1pZ3JhdGVfNTAwXzQxNCA9IE1pZ3JhdGVfNTAwXzQxNFxubW9kdWxlIE1pZ3JhdGVfNTAwXzUwMSA9IE1pZ3JhdGVfNTAwXzUwMVxubW9kdWxlIE1pZ3JhdGVfNTAxXzUwMCA9IE1pZ3JhdGVfNTAxXzUwMFxubW9kdWxlIE1pZ3JhdGVfNTAxXzUwMiA9IE1pZ3JhdGVfNTAxXzUwMlxubW9kdWxlIE1pZ3JhdGVfNTAyXzUwMSA9IE1pZ3JhdGVfNTAyXzUwMVxuKCokKilcblxuKCogQ29tcGlsZXIgbW9kdWxlcyAqKVxubW9kdWxlIEFzdF9tZXRhZGF0YSA9IEFzdF9tZXRhZGF0YVxubW9kdWxlIENvbmZpZyA9IENvbmZpZ1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5tb2R1bGUgTG9jYXRpb24gPSBMb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IExvbmdpZGVudFxubW9kdWxlIFBhcnNlID0gUGFyc2Vcbm1vZHVsZSBQcHJpbnRhc3QgPSBQcHJpbnRhc3RcblxubGV0IGluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaW5nX2Vudl92YXJzICgpID1cbiAgKCpJRl9BVF9MRUFTVCA0MDggT2NhbWxfY29tbW9uLkNvbXBtaXNjLnJlYWRfY2xmbGFnc19mcm9tX2VudiAoKSAqKVxuICAoKklGX05PVF9BVF9MRUFTVCA0MDggKCkgKilcbigqKiBBZGp1c3QgdGhlIHJlcG9ydGluZyBzdHlsZSBvZiBlcnJvciBtZXNzYWdlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIE9DQU1MX0NPTE9SIGFuZCBPQ0FNTF9FUlJPUl9TVFlMRS4gKilcbiIsIm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9pbnRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gIGxldCBtYXAgZiBvID0gbWF0Y2ggbyB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgdiAtPiBTb21lIChmIHYpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVE9ETzogcmVtb3ZlIHRoaXMgb3BlbiAqKVxub3BlbiBTdGRsaWIwXG5tb2R1bGUgTG9jYXRpb24gPSBBc3RsaWIuTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBBc3RsaWIuTG9uZ2lkZW50XG5vcGVuIEFzdGxpYi5Bc3RfNTAwXG5cbltAQEB3YXJuaW5nIFwiLTlcIl1cblxub3BlbiBBc3R0eXBlc1xub3BlbiBQYXJzZXRyZWVcblxudHlwZSAnYSB3aXRoX2xvYyA9ICdhIExvY2F0aW9uLmxvY1xudHlwZSBsb2MgPSBMb2NhdGlvbi50XG50eXBlIGxpZCA9IExvbmdpZGVudC50IHdpdGhfbG9jXG50eXBlIHN0ciA9IHN0cmluZyB3aXRoX2xvY1xudHlwZSBzdHJfb3B0ID0gc3RyaW5nIG9wdGlvbiB3aXRoX2xvY1xudHlwZSBhdHRycyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmxldCBkZWZhdWx0X2xvYyA9IHJlZiBMb2NhdGlvbi5ub25lXG5cbnR5cGUgcmVmX2FuZF92YWx1ZSA9IFIgOiAnYSByZWYgKiAnYSAtPiByZWZfYW5kX3ZhbHVlXG5cbmxldCBwcm90ZWN0X3JlZiA9XG4gIGxldCBzZXRfcmVmIChSIChyLCB2KSkgPSByIDo9IHYgaW5cbiAgZnVuIHJlZiBmIC0+XG4gICAgbGV0IChSIChyLCBfKSkgPSByZWYgaW5cbiAgICBsZXQgYmFja3VwID0gUiAociwgIXIpIGluXG4gICAgc2V0X3JlZiByZWY7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICAgIHNldF9yZWYgYmFja3VwO1xuICAgICAgICB4XG4gICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgcmFpc2UgZVxuXG5sZXQgd2l0aF9kZWZhdWx0X2xvYyBsIGYgPSBwcm90ZWN0X3JlZiAoUiAoZGVmYXVsdF9sb2MsIGwpKSBmXG5cbm1vZHVsZSBDb25zdCA9IHN0cnVjdFxuICBsZXQgaW50ZWdlciA/c3VmZml4IGkgPSBQY29uc3RfaW50ZWdlciAoaSwgc3VmZml4KVxuICBsZXQgaW50ID9zdWZmaXggaSA9IGludGVnZXIgP3N1ZmZpeCAoSW50LnRvX3N0cmluZyBpKVxuICBsZXQgaW50MzIgPyhzdWZmaXggPSAnbCcpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKEludDMyLnRvX3N0cmluZyBpKVxuICBsZXQgaW50NjQgPyhzdWZmaXggPSAnTCcpIGkgPSBpbnRlZ2VyIH5zdWZmaXggKEludDY0LnRvX3N0cmluZyBpKVxuICBsZXQgbmF0aXZlaW50ID8oc3VmZml4ID0gJ24nKSBpID0gaW50ZWdlciB+c3VmZml4IChOYXRpdmVpbnQudG9fc3RyaW5nIGkpXG4gIGxldCBmbG9hdCA/c3VmZml4IGYgPSBQY29uc3RfZmxvYXQgKGYsIHN1ZmZpeClcbiAgbGV0IGNoYXIgYyA9IFBjb25zdF9jaGFyIGNcblxuICBsZXQgc3RyaW5nID9xdW90YXRpb25fZGVsaW1pdGVyID8obG9jID0gIWRlZmF1bHRfbG9jKSBzID1cbiAgICBQY29uc3Rfc3RyaW5nIChzLCBsb2MsIHF1b3RhdGlvbl9kZWxpbWl0ZXIpXG5lbmRcblxubW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBuYW1lIHBheWxvYWQgPVxuICAgIHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgYXR0cl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBUeXAgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYyA9IGQ7XG4gICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gZC5wdHlwX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQdHlwX2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF92YXIgYSlcbiAgbGV0IGFycm93ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYXJyb3cgKGEsIGIsIGMpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3R1cGxlIGEpXG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY29uc3RyIChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfb2JqZWN0IChhLCBiKSlcbiAgbGV0IGNsYXNzXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9jbGFzcyAoYSwgYikpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9hbGlhcyAoYSwgYikpXG4gIGxldCB2YXJpYW50ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyaWFudCAoYSwgYiwgYykpXG4gIGxldCBwb2x5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3BvbHkgKGEsIGIpKVxuICBsZXQgcGFja2FnZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wYWNrYWdlIChhLCBiKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfZXh0ZW5zaW9uIGEpXG5cbiAgbGV0IGZvcmNlX3BvbHkgdCA9XG4gICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiB0IHwgXyAtPiBwb2x5IH5sb2M6dC5wdHlwX2xvYyBbXSB0XG4gICgqIC0+IGdob3N0PyAqKVxuXG4gIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgICAgaWYgTGlzdC5tZW0gdiB2bCB0aGVuXG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidmFyaWFibGUgaW4gc2NvcGUgc3ludGF4IGVycm9yOiAlc1wiIHZcbiAgICBpblxuICAgIGxldCB2YXJfbmFtZXMgPSBMaXN0Lm1hcCAoZnVuIHYgLT4gdi50eHQpIHZhcl9uYW1lcyBpblxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIGxldCBkZXNjID1cbiAgICAgICAgbWF0Y2ggdC5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IFB0eXBfYW55XG4gICAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgICAgY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2MgeDtcbiAgICAgICAgICAgIFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHN0cmluZztcbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgKExpc3QubWFwIGxvb3Bfcm93X2ZpZWxkIHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbilcbiAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgICAoZnVuIHYgLT4gY2hlY2tfdmFyaWFibGUgdmFyX25hbWVzIHQucHR5cF9sb2Mgdi50eHQpXG4gICAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgICBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGxvb3AgY29yZV90eXBlKVxuICAgICAgICB8IFB0eXBfcGFja2FnZSAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX3BhY2thZ2VcbiAgICAgICAgICAgICAgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gKHMsIGFyZykgLT4gUHR5cF9leHRlbnNpb24gKHMsIGFyZylcbiAgICAgIGluXG4gICAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgICBhbmQgbG9vcF9yb3dfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHByZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgICB8IFJ0YWcgKGxhYmVsLCBmbGFnLCBsc3QpIC0+IFJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICB8IE90YWcgKGxhYmVsLCB0KSAtPiBPdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG5lbmRcblxubW9kdWxlIFBhdCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjID0gZDtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBkLnBwYXRfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGFueSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBwYXRfYW55XG4gIGxldCB2YXIgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3ZhciBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfYWxpYXMgKGEsIGIpKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0YW50IGEpXG4gIGxldCBpbnRlcnZhbCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9pbnRlcnZhbCAoYSwgYikpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdHVwbGUgYSlcblxuICBsZXQgY29uc3RydWN0ID9sb2MgP2F0dHJzIGEgYiA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RydWN0IChhLCBPcHRpb24ubWFwIChmdW4gYiAtPiAoW10sIGIpKSBiKSlcblxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXJpYW50IChhLCBiKSlcbiAgbGV0IHJlY29yZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9yZWNvcmQgKGEsIGIpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FycmF5IGEpXG4gIGxldCBvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3IgKGEsIGIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCB0eXBlXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdHlwZSBhKVxuICBsZXQgbGF6eV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2xhenkgYSlcbiAgbGV0IHVucGFjayA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdW5wYWNrIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHBhdF9vcGVuIChhLCBiKSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2V4Y2VwdGlvbiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgRXhwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2MgPSBkO1xuICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGQucGV4cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2lkZW50IGEpXG4gIGxldCBjb25zdGFudCA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RhbnQgYSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXQgKGEsIGIsIGMpKVxuICBsZXQgZnVuXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZnVuIChhLCBiLCBjLCBkKSlcbiAgbGV0IGZ1bmN0aW9uXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZnVuY3Rpb24gYSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FwcGx5IChhLCBiKSlcbiAgbGV0IG1hdGNoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9tYXRjaCAoYSwgYikpXG4gIGxldCB0cnlfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3RyeSAoYSwgYikpXG4gIGxldCB0dXBsZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdHVwbGUgYSlcbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF92YXJpYW50IChhLCBiKSlcbiAgbGV0IHJlY29yZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9yZWNvcmQgKGEsIGIpKVxuICBsZXQgZmllbGQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZmllbGQgKGEsIGIpKVxuICBsZXQgc2V0ZmllbGQgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykpXG4gIGxldCBhcnJheSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXJyYXkgYSlcbiAgbGV0IGlmdGhlbmVsc2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSlcbiAgbGV0IHNlcXVlbmNlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NlcXVlbmNlIChhLCBiKSlcbiAgbGV0IHdoaWxlXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF93aGlsZSAoYSwgYikpXG4gIGxldCBmb3JfID9sb2MgP2F0dHJzIGEgYiBjIGQgZSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb25zdHJhaW50IChhLCBiKSlcbiAgbGV0IGNvZXJjZSA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvZXJjZSAoYSwgYiwgYykpXG4gIGxldCBzZW5kID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NlbmQgKGEsIGIpKVxuICBsZXQgbmV3XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbmV3IGEpXG4gIGxldCBzZXRpbnN0dmFyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3NldGluc3R2YXIgKGEsIGIpKVxuICBsZXQgb3ZlcnJpZGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX292ZXJyaWRlIGEpXG4gIGxldCBsZXRtb2R1bGUgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpKVxuICBsZXQgbGV0ZXhjZXB0aW9uID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikpXG4gIGxldCBhc3NlcnRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hc3NlcnQgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sYXp5IGEpXG4gIGxldCBwb2x5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BvbHkgKGEsIGIpKVxuICBsZXQgb2JqZWN0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb2JqZWN0IGEpXG4gIGxldCBuZXd0eXBlID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ld3R5cGUgKGEsIGIpKVxuICBsZXQgcGFjayA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfb3BlbiAoYSwgYikpXG5cbiAgbGV0IGxldG9wID9sb2MgP2F0dHJzIGxldF8gYW5kcyBib2R5ID1cbiAgICBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSlcblxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9leHRlbnNpb24gYSlcbiAgbGV0IHVucmVhY2hhYmxlID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUGV4cF91bnJlYWNoYWJsZVxuICBsZXQgY2FzZSBsaHMgP2d1YXJkIHJocyA9IHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuXG4gIGxldCBiaW5kaW5nX29wIG9wIHBhdCBleHAgbG9jID1cbiAgICB7IHBib3Bfb3AgPSBvcDsgcGJvcF9wYXQgPSBwYXQ7IHBib3BfZXhwID0gZXhwOyBwYm9wX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE10eSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwbXR5X2Rlc2MgPSBkOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IGQucG10eV9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgaWRlbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2lkZW50IGEpXG4gIGxldCBhbGlhcyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfYWxpYXMgYSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV9mdW5jdG9yIChhLCBiKSlcbiAgbGV0IHdpdGhfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3dpdGggKGEsIGIpKVxuICBsZXQgdHlwZW9mXyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfdHlwZW9mIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2V4dGVuc2lvbiBhKVxuZW5kXG5cbm1vZHVsZSBNb2QgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG1vZF9kZXNjID0gZDsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBkLnBtb2RfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIHggPSBtayA/bG9jID9hdHRycyAoUG1vZF9pZGVudCB4KVxuICBsZXQgc3RydWN0dXJlID9sb2MgP2F0dHJzIHggPSBtayA/bG9jID9hdHRycyAoUG1vZF9zdHJ1Y3R1cmUgeClcbiAgbGV0IGZ1bmN0b3JfID9sb2MgP2F0dHJzIGFyZyBib2R5ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZnVuY3RvciAoYXJnLCBib2R5KSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIG0xIG0yID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfYXBwbHkgKG0xLCBtMikpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBtIG10eSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2NvbnN0cmFpbnQgKG0sIG10eSkpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgZSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX3VucGFjayBlKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG1vZF9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgU2lnID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgZCA9IHsgcHNpZ19kZXNjID0gZDsgcHNpZ19sb2MgPSBsb2MgfVxuICBsZXQgdmFsdWUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ192YWx1ZSBhKVxuICBsZXQgdHlwZV8gP2xvYyByZWNfZmxhZyBhID0gbWsgP2xvYyAoUHNpZ190eXBlIChyZWNfZmxhZywgYSkpXG4gIGxldCB0eXBlX3N1YnN0ID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdHlwZXN1YnN0IGEpXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGV4dCBhKVxuICBsZXQgZXhjZXB0aW9uXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2V4Y2VwdGlvbiBhKVxuICBsZXQgbW9kdWxlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHVsZSBhKVxuICBsZXQgbW9kX3N1YnN0ID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kc3Vic3QgYSlcbiAgbGV0IHJlY19tb2R1bGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19yZWNtb2R1bGUgYSlcbiAgbGV0IG1vZHR5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R0eXBlIGEpXG4gIGxldCBvcGVuXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX29wZW4gYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfaW5jbHVkZSBhKVxuICBsZXQgY2xhc3NfID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3MgYSlcbiAgbGV0IGNsYXNzX3R5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19jbGFzc190eXBlIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc2lnX2V4dGVuc2lvbiAoYSwgYXR0cnMpKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfYXR0cmlidXRlIGEpXG5lbmRcblxubW9kdWxlIFN0ciA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzdHJfZGVzYyA9IGQ7IHBzdHJfbG9jID0gbG9jIH1cbiAgbGV0IGV2YWwgP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc3RyX2V2YWwgKGEsIGF0dHJzKSlcbiAgbGV0IHZhbHVlID9sb2MgYSBiID0gbWsgP2xvYyAoUHN0cl92YWx1ZSAoYSwgYikpXG4gIGxldCBwcmltaXRpdmUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9wcmltaXRpdmUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzdHJfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl90eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9tb2R1bGUgYSlcbiAgbGV0IHJlY19tb2R1bGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9yZWNtb2R1bGUgYSlcbiAgbGV0IG1vZHR5cGUgP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9tb2R0eXBlIGEpXG4gIGxldCBvcGVuXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX29wZW4gYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfY2xhc3NfdHlwZSBhKVxuICBsZXQgaW5jbHVkZV8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9pbmNsdWRlIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/KGF0dHJzID0gW10pIGEgPSBtayA/bG9jIChQc3RyX2V4dGVuc2lvbiAoYSwgYXR0cnMpKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfYXR0cmlidXRlIGEpXG5lbmRcblxubW9kdWxlIENsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjbF9kZXNjID0gZDsgcGNsX2xvYyA9IGxvYzsgcGNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBkLnBjbF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfY29uc3RyIChhLCBiKSlcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9zdHJ1Y3R1cmUgYSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY2xfZnVuIChhLCBiLCBjLCBkKSlcbiAgbGV0IGFwcGx5ID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfYXBwbHkgKGEsIGIpKVxuICBsZXQgbGV0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2xfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2xfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX29wZW4gKGEsIGIpKVxuZW5kXG5cbm1vZHVsZSBDdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGN0eV9kZXNjID0gZDsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSBkLnBjdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9jb25zdHIgKGEsIGIpKVxuICBsZXQgc2lnbmF0dXJlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0eV9zaWduYXR1cmUgYSlcbiAgbGV0IGFycm93ID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfYXJyb3cgKGEsIGIsIGMpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0eV9leHRlbnNpb24gYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3R5X29wZW4gKGEsIGIpKVxuZW5kXG5cbm1vZHVsZSBDdGYgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGN0Zl9kZXNjID0gZDsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2luaGVyaXQgYSlcbiAgbGV0IHZhbF8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQY3RmX3ZhbCAoYSwgYiwgYywgZCkpXG4gIGxldCBtZXRob2RfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9tZXRob2QgKGEsIGIsIGMsIGQpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2V4dGVuc2lvbiBhKVxuICBsZXQgYXR0cmlidXRlID9sb2MgYSA9IG1rID9sb2MgKFBjdGZfYXR0cmlidXRlIGEpXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjdGZfYXR0cmlidXRlcyA9IGQucGN0Zl9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuZW5kXG5cbm1vZHVsZSBDZiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2ZfZGVzYyA9IGQ7IHBjZl9sb2MgPSBsb2M7IHBjZl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBpbmhlcml0XyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfaW5oZXJpdCAoYSwgYiwgYykpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBjZl92YWwgKGEsIGIsIGMpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfbWV0aG9kIChhLCBiLCBjKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY2ZfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBpbml0aWFsaXplcl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfaW5pdGlhbGl6ZXIgYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjZl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY2ZfYXR0cmlidXRlIGEpXG4gIGxldCB2aXJ0dWFsXyBjdCA9IENma192aXJ0dWFsIGN0XG4gIGxldCBjb25jcmV0ZSBvIGUgPSBDZmtfY29uY3JldGUgKG8sIGUpXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gZC5wY2ZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgVmFsID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHByaW0gPSBbXSkgbmFtZSB0eXAgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICBwdmFsX3R5cGUgPSB0eXA7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB2YWxfbG9jID0gbG9jO1xuICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICB9XG5lbmRcblxubW9kdWxlIE1kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHR5cCA9XG4gICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwOyBwbWRfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWRfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgTXMgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgc3luID1cbiAgICB7XG4gICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICBwbXNfbWFuaWZlc3QgPSBzeW47XG4gICAgICBwbXNfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG1zX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIE10ZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgP3R5cCBuYW1lID1cbiAgICB7XG4gICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgcG10ZF90eXBlID0gdHlwO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwbXRkX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIE1iID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGV4cHIgPVxuICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gYXR0cnM7IHBtYl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBPcG4gPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ob3ZlcnJpZGUgPSBGcmVzaCkgZXhwciA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgSW5jbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbWV4cHIgPVxuICAgIHsgcGluY2xfbW9kID0gbWV4cHI7IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IGF0dHJzIH1cbmVuZFxuXG5tb2R1bGUgVmIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIHBhdCBleHByID1cbiAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBhdHRyczsgcHZiX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIENpID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZpcnQgPSBDb25jcmV0ZSkgPyhwYXJhbXMgPSBbXSlcbiAgICAgIG5hbWUgZXhwciA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgcGNpX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwY2lfbG9jID0gbG9jO1xuICAgIH1cbmVuZFxuXG5tb2R1bGUgVHlwZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhjc3RycyA9IFtdKVxuICAgICAgPyhraW5kID0gUHR5cGVfYWJzdHJhY3QpID8ocHJpdiA9IFB1YmxpYykgP21hbmlmZXN0IG5hbWUgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXY7XG4gICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcHR5cGVfbG9jID0gbG9jO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3IgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBmaWVsZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG11dCA9IEltbXV0YWJsZSkgbmFtZSB0eXAgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lID0gbmFtZTtcbiAgICAgIHBsZF9tdXRhYmxlID0gbXV0O1xuICAgICAgcGxkX3R5cGUgPSB0eXA7XG4gICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxuKCoqIFR5cGUgZXh0ZW5zaW9ucyAqKVxubW9kdWxlIFRlID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHBhcmFtcyA9IFtdKSA/KHByaXYgPSBQdWJsaWMpXG4gICAgICBwYXRoIGNvbnN0cnVjdG9ycyA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGggPSBwYXRoO1xuICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICBwdHlleHRfcHJpdmF0ZSA9IHByaXY7XG4gICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IG1rX2V4Y2VwdGlvbiA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBjb25zdHJ1Y3RvciA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jID0gbG9jO1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUga2luZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZGVjbCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KHZhcnMgPSBbXSlcbiAgICAgID8oYXJncyA9IFBjc3RyX3R1cGxlIFtdKSA/cmVzIG5hbWUgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBQZXh0X2RlY2wgKHZhcnMsIGFyZ3MsIHJlcyk7XG4gICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgIHBleHRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgcmViaW5kID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG5hbWUgbGlkID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9yZWJpbmQgbGlkO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIENzaWcgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG5tb2R1bGUgQ3N0ciA9IHN0cnVjdFxuICBsZXQgbWsgc2VsZiBmaWVsZHMgPSB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuZW5kXG5cbigqKiBSb3cgZmllbGRzICopXG5tb2R1bGUgUmYgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGRlc2MgPVxuICAgIHsgcHJmX2Rlc2MgPSBkZXNjOyBwcmZfbG9jID0gbG9jOyBwcmZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgdGFnID9sb2MgP2F0dHJzIGxhYmVsIGNvbnN0IHR5cyA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFJ0YWcgKGxhYmVsLCBjb25zdCwgdHlzKSlcblxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKFJpbmhlcml0IHR5KVxuZW5kXG5cbigqKiBPYmplY3QgZmllbGRzICopXG5tb2R1bGUgT2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGRlc2MgPVxuICAgIHsgcG9mX2Rlc2MgPSBkZXNjOyBwb2ZfbG9jID0gbG9jOyBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgdGFnID9sb2MgP2F0dHJzIGxhYmVsIHR5ID0gbWsgP2xvYyA/YXR0cnMgKE90YWcgKGxhYmVsLCB0eSkpXG4gIGxldCBpbmhlcml0XyA/bG9jIHR5ID0gbWsgP2xvYyAoT2luaGVyaXQgdHkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJFR0lOIG9mIEJMQUNLIE1BR0lDICopXG4oKiQgb3BlbiBBc3RfY2luYXBzX2hlbHBlcnMgJCopXG5cbnR5cGUgXyB3aXRuZXNzZXMgPSAuLlxuXG50eXBlIF8gbWlncmF0aW9uID0gLi5cbnR5cGUgXyBtaWdyYXRpb24gKz0gVW5kZWZpbmVkIDogXyBtaWdyYXRpb25cblxudHlwZSAnYSBtaWdyYXRpb25faW5mbyA9IHtcbiAgbXV0YWJsZSBuZXh0X3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG4gIG11dGFibGUgcHJldmlvdXNfdmVyc2lvbiA6ICdhIG1pZ3JhdGlvbjtcbn1cblxuKCoqIEFic3RyYWN0IHZpZXcgb2YgYSB2ZXJzaW9uIG9mIGFuIE9DYW1sIEFzdCAqKVxubW9kdWxlIHR5cGUgQXN0ID0gc2lnXG4gICgqJCBmb3JlYWNoX21vZHVsZSAoZnVuIG0gdHlwZXMgLT5cbiAgICAgIHByaW50ZiBcIiAgbW9kdWxlICVzIDogc2lnXFxuXCIgbTtcbiAgICAgIExpc3QuaXRlciB0eXBlcyB+ZjoocHJpbnRmIFwiICAgIHR5cGUgJXNcXG5cIik7XG4gICAgICBwcmludGYgXCIgIGVuZFxcblwiXG4gICAgKVxuICAqKVxuICBtb2R1bGUgUGFyc2V0cmVlIDogc2lnXG4gICAgdHlwZSBzdHJ1Y3R1cmVcbiAgICB0eXBlIHNpZ25hdHVyZVxuICAgIHR5cGUgdG9wbGV2ZWxfcGhyYXNlXG4gICAgdHlwZSBjb3JlX3R5cGVcbiAgICB0eXBlIGV4cHJlc3Npb25cbiAgICB0eXBlIHBhdHRlcm5cbiAgICB0eXBlIGNhc2VcbiAgICB0eXBlIHR5cGVfZGVjbGFyYXRpb25cbiAgICB0eXBlIHR5cGVfZXh0ZW5zaW9uXG4gICAgdHlwZSBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICB0eXBlIGNsYXNzX2V4cHJcbiAgICB0eXBlIGNsYXNzX2ZpZWxkXG4gICAgdHlwZSBjbGFzc190eXBlXG4gICAgdHlwZSBjbGFzc19zaWduYXR1cmVcbiAgICB0eXBlIGNsYXNzX3R5cGVfZmllbGRcbiAgICB0eXBlIG1vZHVsZV9leHByXG4gICAgdHlwZSBtb2R1bGVfdHlwZVxuICAgIHR5cGUgc2lnbmF0dXJlX2l0ZW1cbiAgICB0eXBlIHN0cnVjdHVyZV9pdGVtXG4gIGVuZFxuKCokKilcbiAgbW9kdWxlIENvbmZpZyA6IHNpZ1xuICAgIHZhbCBhc3RfaW1wbF9tYWdpY19udW1iZXIgOiBzdHJpbmdcbiAgICB2YWwgYXN0X2ludGZfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gIGVuZFxuZW5kXG5cbigqIFNob3J0Y3V0cyBmb3IgdGFsa2luZyBhYm91dCBhc3QgdHlwZXMgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbnR5cGUgJ2EgX3R5cGVzID0gJ2EgY29uc3RyYWludCAnYVxuICA9IDxcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAlLTIxcyA6IF87XFxuXCIgcykgKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IF87XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogXztcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBfO1xuICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IF87XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogXztcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBfO1xuICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IF87XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogXztcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBfO1xuICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogXztcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogXztcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBfO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IF87XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogXztcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBfO1xuKCokKilcbiAgPlxuOztcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgIHByaW50ZiBcInR5cGUgJ2EgZ2V0XyVzID1cXG5cIiBzO1xuICAgIHByaW50ZiBcIiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8ICVzIDogJ3g7IC4uID5cXG5cIiBzXG4gICkgKilcbnR5cGUgJ2EgZ2V0X3N0cnVjdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzdHJ1Y3R1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHNpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90b3BsZXZlbF9waHJhc2UgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdG9wbGV2ZWxfcGhyYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NvcmVfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjb3JlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfZXhwcmVzc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBleHByZXNzaW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3BhdHRlcm4gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgcGF0dGVybiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNhc2UgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2RlY2xhcmF0aW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZXh0ZW5zaW9uID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHR5cGVfZXh0ZW5zaW9uIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBleHRlbnNpb25fY29uc3RydWN0b3IgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3NfZXhwciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19leHByIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX2ZpZWxkIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19zaWduYXR1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3Nfc2lnbmF0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX3R5cGVfZmllbGQgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfdHlwZV9maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9tb2R1bGVfZXhwciA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBtb2R1bGVfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9tb2R1bGVfdHlwZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBtb2R1bGVfdHlwZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zaWduYXR1cmVfaXRlbSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmVfaXRlbSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9zdHJ1Y3R1cmVfaXRlbSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzdHJ1Y3R1cmVfaXRlbSA6ICd4OyAuLiA+XG4oKiQqKVxuXG5tb2R1bGUgdHlwZSBPQ2FtbF92ZXJzaW9uID0gc2lnXG4gIG1vZHVsZSBBc3QgOiBBc3RcbiAgdmFsIHZlcnNpb24gOiBpbnRcbiAgdmFsIHN0cmluZ192ZXJzaW9uIDogc3RyaW5nXG4gIHR5cGUgdHlwZXMgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBBc3QuJXMuJXM7XFxuXCIgcyBtIHMpKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZTtcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZTtcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZTtcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZTtcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5wYXR0ZXJuO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2FzZTtcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb247XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbjtcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHI7XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZDtcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGU7XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmU7XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHI7XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZTtcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICA+IF90eXBlc1xuICB0eXBlIF8gd2l0bmVzc2VzICs9IFZlcnNpb24gOiB0eXBlcyB3aXRuZXNzZXNcbiAgdmFsIG1pZ3JhdGlvbl9pbmZvIDogdHlwZXMgbWlncmF0aW9uX2luZm9cbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRuZXNzKEFzdCA6IEFzdCkgPVxuc3RydWN0XG4gIHR5cGUgdHlwZXMgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIG0gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBBc3QuJXMuJXM7XFxuXCIgcyBtIHMpKilcbiAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZTtcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZTtcbiAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiBBc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZTtcbiAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZTtcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgcGF0dGVybiAgICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5wYXR0ZXJuO1xuICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2FzZTtcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb247XG4gICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbjtcbiAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHI7XG4gICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZDtcbiAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGU7XG4gICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmU7XG4gICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkO1xuICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHI7XG4gICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZTtcbiAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtO1xuICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICA+IF90eXBlc1xuICB0eXBlIF8gd2l0bmVzc2VzICs9IFZlcnNpb24gOiB0eXBlcyB3aXRuZXNzZXNcbiAgbGV0IG1pZ3JhdGlvbl9pbmZvIDogdHlwZXMgbWlncmF0aW9uX2luZm8gPVxuICAgIHsgbmV4dF92ZXJzaW9uID0gVW5kZWZpbmVkOyBwcmV2aW91c192ZXJzaW9uID0gVW5kZWZpbmVkIH1cbmVuZFxuXG50eXBlICd0eXBlcyBvY2FtbF92ZXJzaW9uID1cbiAgKG1vZHVsZSBPQ2FtbF92ZXJzaW9uXG4gICAgKCokIGxldCBzZXAgPSB3aXRoX3RoZW5fYW5kICgpIGluXG4gICAgICBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT5cbiAgICAgICAgICBwcmludGYgXCIgICAgJXQgdHlwZSBBc3QuJXMuJXMgPSAndHlwZXMgZ2V0XyVzXFxuXCIgc2VwIG0gcyBzKSAqKVxuICAgIHdpdGggdHlwZSBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSA9ICd0eXBlcyBnZXRfc3RydWN0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSAndHlwZXMgZ2V0X3RvcGxldmVsX3BocmFzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSA9ICd0eXBlcyBnZXRfY29yZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9ICd0eXBlcyBnZXRfZXhwcmVzc2lvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnBhdHRlcm4gPSAndHlwZXMgZ2V0X3BhdHRlcm5cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jYXNlID0gJ3R5cGVzIGdldF9jYXNlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9ICd0eXBlcyBnZXRfdHlwZV9kZWNsYXJhdGlvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0gJ3R5cGVzIGdldF90eXBlX2V4dGVuc2lvblxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9ICd0eXBlcyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9ICd0eXBlcyBnZXRfY2xhc3NfZXhwclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc19maWVsZFxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSAndHlwZXMgZ2V0X2NsYXNzX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPSAndHlwZXMgZ2V0X2NsYXNzX3NpZ25hdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPSAndHlwZXMgZ2V0X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9ICd0eXBlcyBnZXRfbW9kdWxlX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9ICd0eXBlcyBnZXRfbW9kdWxlX3R5cGVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlX2l0ZW1cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9ICd0eXBlcyBnZXRfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gIClcblxudHlwZSAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPSB7XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgY29weV8lczogJ2Zyb20gZ2V0XyVzIC0+ICd0b18gZ2V0XyVzO1xcblwiIHMgcyBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZTogJ2Zyb20gZ2V0X3N0cnVjdHVyZSAtPiAndG9fIGdldF9zdHJ1Y3R1cmU7XG4gIGNvcHlfc2lnbmF0dXJlOiAnZnJvbSBnZXRfc2lnbmF0dXJlIC0+ICd0b18gZ2V0X3NpZ25hdHVyZTtcbiAgY29weV90b3BsZXZlbF9waHJhc2U6ICdmcm9tIGdldF90b3BsZXZlbF9waHJhc2UgLT4gJ3RvXyBnZXRfdG9wbGV2ZWxfcGhyYXNlO1xuICBjb3B5X2NvcmVfdHlwZTogJ2Zyb20gZ2V0X2NvcmVfdHlwZSAtPiAndG9fIGdldF9jb3JlX3R5cGU7XG4gIGNvcHlfZXhwcmVzc2lvbjogJ2Zyb20gZ2V0X2V4cHJlc3Npb24gLT4gJ3RvXyBnZXRfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuOiAnZnJvbSBnZXRfcGF0dGVybiAtPiAndG9fIGdldF9wYXR0ZXJuO1xuICBjb3B5X2Nhc2U6ICdmcm9tIGdldF9jYXNlIC0+ICd0b18gZ2V0X2Nhc2U7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjogJ2Zyb20gZ2V0X3R5cGVfZGVjbGFyYXRpb24gLT4gJ3RvXyBnZXRfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbjogJ2Zyb20gZ2V0X3R5cGVfZXh0ZW5zaW9uIC0+ICd0b18gZ2V0X3R5cGVfZXh0ZW5zaW9uO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjogJ2Zyb20gZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAndG9fIGdldF9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gIGNvcHlfY2xhc3NfZXhwcjogJ2Zyb20gZ2V0X2NsYXNzX2V4cHIgLT4gJ3RvXyBnZXRfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX2ZpZWxkIC0+ICd0b18gZ2V0X2NsYXNzX2ZpZWxkO1xuICBjb3B5X2NsYXNzX3R5cGU6ICdmcm9tIGdldF9jbGFzc190eXBlIC0+ICd0b18gZ2V0X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlOiAnZnJvbSBnZXRfY2xhc3Nfc2lnbmF0dXJlIC0+ICd0b18gZ2V0X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkOiAnZnJvbSBnZXRfY2xhc3NfdHlwZV9maWVsZCAtPiAndG9fIGdldF9jbGFzc190eXBlX2ZpZWxkO1xuICBjb3B5X21vZHVsZV9leHByOiAnZnJvbSBnZXRfbW9kdWxlX2V4cHIgLT4gJ3RvXyBnZXRfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGU6ICdmcm9tIGdldF9tb2R1bGVfdHlwZSAtPiAndG9fIGdldF9tb2R1bGVfdHlwZTtcbiAgY29weV9zaWduYXR1cmVfaXRlbTogJ2Zyb20gZ2V0X3NpZ25hdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3NpZ25hdHVyZV9pdGVtO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtOiAnZnJvbSBnZXRfc3RydWN0dXJlX2l0ZW0gLT4gJ3RvXyBnZXRfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG5sZXQgaWQgeCA9IHhcbmxldCBtaWdyYXRpb25faWRlbnRpdHkgOiAoJ2EsICdhKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgY29weV8lcyA9IGlkO1xcblwiIHMpICopXG4gIGNvcHlfc3RydWN0dXJlID0gaWQ7XG4gIGNvcHlfc2lnbmF0dXJlID0gaWQ7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlID0gaWQ7XG4gIGNvcHlfY29yZV90eXBlID0gaWQ7XG4gIGNvcHlfZXhwcmVzc2lvbiA9IGlkO1xuICBjb3B5X3BhdHRlcm4gPSBpZDtcbiAgY29weV9jYXNlID0gaWQ7XG4gIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA9IGlkO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uID0gaWQ7XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gaWQ7XG4gIGNvcHlfY2xhc3NfZXhwciA9IGlkO1xuICBjb3B5X2NsYXNzX2ZpZWxkID0gaWQ7XG4gIGNvcHlfY2xhc3NfdHlwZSA9IGlkO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQgPSBpZDtcbiAgY29weV9tb2R1bGVfZXhwciA9IGlkO1xuICBjb3B5X21vZHVsZV90eXBlID0gaWQ7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW0gPSBpZDtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSA9IGlkO1xuKCokKilcbn1cblxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgbWlncmF0aW9uX2NvbXBvc2UgKGFiIDogKCdhLCAnYikgbWlncmF0aW9uX2Z1bmN0aW9ucykgKGJjIDogKCdiLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucykgOiAoJ2EsICdjKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJS0yMXMgPSBjb21wb3NlIGJjLmNvcHlfJS0yMXMgYWIuY29weV8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmUgICAgICAgICAgICAgYWIuY29weV9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICBhYi5jb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY29yZV90eXBlICAgICAgICAgICAgIGFiLmNvcHlfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9leHByZXNzaW9uICAgICAgICAgICAgYWIuY29weV9leHByZXNzaW9uO1xuICBjb3B5X3BhdHRlcm4gICAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgYWIuY29weV9wYXR0ZXJuO1xuICBjb3B5X2Nhc2UgICAgICAgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jYXNlICAgICAgICAgICAgICAgICAgYWIuY29weV9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgICA9IGNvbXBvc2UgYmMuY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgYWIuY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICBjb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgICA9IGNvbXBvc2UgYmMuY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgYWIuY29weV90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgPSBjb21wb3NlIGJjLmNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGFiLmNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19leHByICAgICAgICAgICAgYWIuY29weV9jbGFzc19leHByO1xuICBjb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc19maWVsZCAgICAgICAgICAgYWIuY29weV9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZTtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgIGFiLmNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICBjb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgICA9IGNvbXBvc2UgYmMuY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgYWIuY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICBjb3B5X21vZHVsZV9leHByICAgICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgYWIuY29weV9tb2R1bGVfZXhwcjtcbiAgY29weV9tb2R1bGVfdHlwZSAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICBhYi5jb3B5X3NpZ25hdHVyZV9pdGVtO1xuICBjb3B5X3N0cnVjdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgYWIuY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG59XG5cbnR5cGUgXyBtaWdyYXRpb24gKz0gTWlncmF0aW9uIDogJ2Zyb20gb2NhbWxfdmVyc2lvbiAqICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyAqICd0b18gb2NhbWxfdmVyc2lvbiAtPiAnZnJvbSBtaWdyYXRpb25cblxubW9kdWxlIHR5cGUgTWlncmF0ZV9tb2R1bGUgPSBzaWdcbiAgbW9kdWxlIEZyb20gOiBBc3RcbiAgbW9kdWxlIFRvIDogQXN0XG4gICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT5cbiAgICAgIHByaW50ZiBcIiAgdmFsIGNvcHlfJS0yMXM6IEZyb20uJXMuJXMgLT4gVG8uJXMuJXNcXG5cIiBzIG0gcyBtIHMpICopXG4gIHZhbCBjb3B5X3N0cnVjdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZVxuICB2YWwgY29weV90b3BsZXZlbF9waHJhc2UgICAgICA6IEZyb20uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBUby5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gIHZhbCBjb3B5X2NvcmVfdHlwZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgdmFsIGNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uXG4gIHZhbCBjb3B5X3BhdHRlcm4gICAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVyblxuICB2YWwgY29weV9jYXNlICAgICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2VcbiAgdmFsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgOiBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gIHZhbCBjb3B5X3R5cGVfZXh0ZW5zaW9uICAgICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gIHZhbCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgdmFsIGNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByXG4gIHZhbCBjb3B5X2NsYXNzX2ZpZWxkICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gIHZhbCBjb3B5X2NsYXNzX3R5cGUgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZVxuICB2YWwgY29weV9jbGFzc19zaWduYXR1cmUgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gIHZhbCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZFxuICB2YWwgY29weV9tb2R1bGVfZXhwciAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwclxuICB2YWwgY29weV9tb2R1bGVfdHlwZSAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZVxuICB2YWwgY29weV9zaWduYXR1cmVfaXRlbSAgICAgICA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbVxuICB2YWwgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbmVuZFxuXG5tb2R1bGUgTWlncmF0aW9uX2Z1bmN0aW9uc1xuICAgIChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKVxuICAgIChBX3RvX0IgOiBNaWdyYXRlX21vZHVsZSB3aXRoIG1vZHVsZSBGcm9tID0gQS5Bc3QgYW5kIG1vZHVsZSBUbyA9IEIuQXN0KVxuPVxuc3RydWN0XG4gIGxldCBtaWdyYXRpb25fZnVuY3Rpb25zIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIGxldCBvcGVuIEFfdG9fQiBpblxuICAgIHtcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAgY29weV8lcztcXG5cIiBzKSAqKVxuICAgICAgY29weV9zdHJ1Y3R1cmU7XG4gICAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICAgIGNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICAgICAgY29weV9jb3JlX3R5cGU7XG4gICAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgICBjb3B5X3BhdHRlcm47XG4gICAgICBjb3B5X2Nhc2U7XG4gICAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgICBjb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgICBjb3B5X2NsYXNzX2ZpZWxkO1xuICAgICAgY29weV9jbGFzc190eXBlO1xuICAgICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gICAgICBjb3B5X21vZHVsZV9leHByO1xuICAgICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICAgIGNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gICAgICBjb3B5X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICB9XG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyX21pZ3JhdGlvbiAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbiAgICAoQl90b19BIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEIuQXN0IGFuZCBtb2R1bGUgVG8gPSBBLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgKCkgPSAoXG4gICAgbGV0IGlzX3VuZGVmaW5lZCA6IHR5cGUgYS4gYSBtaWdyYXRpb24gLT4gYm9vbCA9IGZ1bmN0aW9uXG4gICAgICB8IFVuZGVmaW5lZCAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGFzc2VydCAoQS52ZXJzaW9uIDwgQi52ZXJzaW9uKTtcbiAgICBhc3NlcnQgKGlzX3VuZGVmaW5lZCBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQi5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uKTtcbiAgICBsZXQgbW9kdWxlIEFfdG9fQl9mdW4gPSBNaWdyYXRpb25fZnVuY3Rpb25zKEEpKEIpKEFfdG9fQikgaW5cbiAgICBsZXQgbW9kdWxlIEJfdG9fQV9mdW4gPSBNaWdyYXRpb25fZnVuY3Rpb25zKEIpKEEpKEJfdG9fQSkgaW5cbiAgICBBLm1pZ3JhdGlvbl9pbmZvLm5leHRfdmVyc2lvbiA8LVxuICAgICAgTWlncmF0aW9uICgobW9kdWxlIEEpLCBBX3RvX0JfZnVuLm1pZ3JhdGlvbl9mdW5jdGlvbnMsIChtb2R1bGUgQikpO1xuICAgIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbiA8LVxuICAgICAgTWlncmF0aW9uICgobW9kdWxlIEIpLCBCX3RvX0FfZnVuLm1pZ3JhdGlvbl9mdW5jdGlvbnMsIChtb2R1bGUgQSkpO1xuICApXG5lbmRcblxudHlwZSAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uID1cbiAgfCBOb19taWdyYXRpb24gOiAnZnJvbSBpbW1lZGlhdGVfbWlncmF0aW9uXG4gIHwgSW1tZWRpYXRlX21pZ3JhdGlvblxuICAgIDogICgnZnJvbSwgJ3RvXykgbWlncmF0aW9uX2Z1bmN0aW9ucyAqICd0b18gb2NhbWxfdmVyc2lvblxuICAgICAgLT4gJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuXG5sZXQgaW1tZWRpYXRlX21pZ3JhdGlvblxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICh0eXBlICVzKVxcblwiIHMpICopXG4gICAgKHR5cGUgc3RydWN0dXJlKVxuICAgICh0eXBlIHNpZ25hdHVyZSlcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UpXG4gICAgKHR5cGUgY29yZV90eXBlKVxuICAgICh0eXBlIGV4cHJlc3Npb24pXG4gICAgKHR5cGUgcGF0dGVybilcbiAgICAodHlwZSBjYXNlKVxuICAgICh0eXBlIHR5cGVfZGVjbGFyYXRpb24pXG4gICAgKHR5cGUgdHlwZV9leHRlbnNpb24pXG4gICAgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgICh0eXBlIGNsYXNzX2V4cHIpXG4gICAgKHR5cGUgY2xhc3NfZmllbGQpXG4gICAgKHR5cGUgY2xhc3NfdHlwZSlcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUpXG4gICAgKHR5cGUgY2xhc3NfdHlwZV9maWVsZClcbiAgICAodHlwZSBtb2R1bGVfZXhwcilcbiAgICAodHlwZSBtb2R1bGVfdHlwZSlcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbSlcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbSlcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmICBcIiAgICAgJS0yMXMgOiAlcztcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2U7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb247XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQ7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGU7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHI7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gICAgZGlyZWN0aW9uXG4gID1cbiAgbGV0IHZlcnNpb24gPSBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICAgIHwgYE5leHQgLT4gQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb25cbiAgICB8IGBQcmV2aW91cyAtPiBBLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb25cbiAgaW5cbiAgbWF0Y2ggdmVyc2lvbiB3aXRoXG4gIHwgVW5kZWZpbmVkIC0+IE5vX21pZ3JhdGlvblxuICB8IE1pZ3JhdGlvbiAoXywgZnVucywgdG9fKSAtPiBJbW1lZGlhdGVfbWlncmF0aW9uIChmdW5zLCB0b18pXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG1pZ3JhdGVcbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlczEpICh0eXBlICVzMilcXG5cIiBzIHMpICopXG4gICAgKHR5cGUgc3RydWN0dXJlMSkgKHR5cGUgc3RydWN0dXJlMilcbiAgICAodHlwZSBzaWduYXR1cmUxKSAodHlwZSBzaWduYXR1cmUyKVxuICAgICh0eXBlIHRvcGxldmVsX3BocmFzZTEpICh0eXBlIHRvcGxldmVsX3BocmFzZTIpXG4gICAgKHR5cGUgY29yZV90eXBlMSkgKHR5cGUgY29yZV90eXBlMilcbiAgICAodHlwZSBleHByZXNzaW9uMSkgKHR5cGUgZXhwcmVzc2lvbjIpXG4gICAgKHR5cGUgcGF0dGVybjEpICh0eXBlIHBhdHRlcm4yKVxuICAgICh0eXBlIGNhc2UxKSAodHlwZSBjYXNlMilcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uMSkgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjIpXG4gICAgKHR5cGUgdHlwZV9leHRlbnNpb24xKSAodHlwZSB0eXBlX2V4dGVuc2lvbjIpXG4gICAgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMSkgKHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMilcbiAgICAodHlwZSBjbGFzc19leHByMSkgKHR5cGUgY2xhc3NfZXhwcjIpXG4gICAgKHR5cGUgY2xhc3NfZmllbGQxKSAodHlwZSBjbGFzc19maWVsZDIpXG4gICAgKHR5cGUgY2xhc3NfdHlwZTEpICh0eXBlIGNsYXNzX3R5cGUyKVxuICAgICh0eXBlIGNsYXNzX3NpZ25hdHVyZTEpICh0eXBlIGNsYXNzX3NpZ25hdHVyZTIpXG4gICAgKHR5cGUgY2xhc3NfdHlwZV9maWVsZDEpICh0eXBlIGNsYXNzX3R5cGVfZmllbGQyKVxuICAgICh0eXBlIG1vZHVsZV9leHByMSkgKHR5cGUgbW9kdWxlX2V4cHIyKVxuICAgICh0eXBlIG1vZHVsZV90eXBlMSkgKHR5cGUgbW9kdWxlX3R5cGUyKVxuICAgICh0eXBlIHNpZ25hdHVyZV9pdGVtMSkgKHR5cGUgc2lnbmF0dXJlX2l0ZW0yKVxuICAgICh0eXBlIHN0cnVjdHVyZV9pdGVtMSkgKHR5cGUgc3RydWN0dXJlX2l0ZW0yKVxuKCokKilcbiAgICAoKG1vZHVsZSBBKSA6IDxcbiAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgICUtMjFzIDogJXMxO1xcblwiIHMgcykgKilcbiAgICAgc3RydWN0dXJlICAgICAgICAgICAgIDogc3RydWN0dXJlMTtcbiAgICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogc2lnbmF0dXJlMTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlMTtcbiAgICAgY29yZV90eXBlICAgICAgICAgICAgIDogY29yZV90eXBlMTtcbiAgICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogZXhwcmVzc2lvbjE7XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm4xO1xuICAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBjYXNlMTtcbiAgICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogdHlwZV9kZWNsYXJhdGlvbjE7XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uMTtcbiAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yMTtcbiAgICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogY2xhc3NfZXhwcjE7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkMTtcbiAgICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogY2xhc3NfdHlwZTE7XG4gICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IGNsYXNzX3NpZ25hdHVyZTE7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQxO1xuICAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBtb2R1bGVfZXhwcjE7XG4gICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IG1vZHVsZV90eXBlMTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW0xO1xuICAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbTE7XG4oKiQqKVxuICAgICA+IG9jYW1sX3ZlcnNpb24pXG4gICAgKChtb2R1bGUgQikgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMjtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTI7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTI7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTI7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTI7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24yO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMjtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTI7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24yO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjI7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjI7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIyO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDI7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUyO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUyO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMjtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIyO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTI7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMjtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0yO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zXG4gID1cbiAgbWF0Y2ggQS5WZXJzaW9uIHdpdGhcbiAgfCBCLlZlcnNpb24gLT4gbWlncmF0aW9uX2lkZW50aXR5XG4gIHwgXyAtPlxuICAgIGxldCBkaXJlY3Rpb24gPSBpZiBBLnZlcnNpb24gPCBCLnZlcnNpb24gdGhlbiBgTmV4dCBlbHNlIGBQcmV2aW91cyBpblxuICAgIGxldCByZWMgbWlncmF0ZSAobSA6IEEudHlwZXMgaW1tZWRpYXRlX21pZ3JhdGlvbikgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgIHwgTm9fbWlncmF0aW9uIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBJbW1lZGlhdGVfbWlncmF0aW9uIChmLCAobW9kdWxlIFRvKSkgLT5cbiAgICAgICAgbWF0Y2ggVG8uVmVyc2lvbiB3aXRoXG4gICAgICAgIHwgQi5WZXJzaW9uIC0+IGZcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbWF0Y2ggaW1tZWRpYXRlX21pZ3JhdGlvbiAobW9kdWxlIFRvKSBkaXJlY3Rpb24gd2l0aFxuICAgICAgICAgIHwgTm9fbWlncmF0aW9uIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZywgdG8yKSAtPlxuICAgICAgICAgICAgbWlncmF0ZSAoSW1tZWRpYXRlX21pZ3JhdGlvbiAobWlncmF0aW9uX2NvbXBvc2UgZiBnLCB0bzIpKVxuICAgIGluXG4gICAgbWlncmF0ZSAoaW1tZWRpYXRlX21pZ3JhdGlvbiAobW9kdWxlIEEpIGRpcmVjdGlvbilcblxubW9kdWxlIENvbnZlcnQgKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGxldCB7XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgY29weV8lcztcXG5cIiBzKSAqKVxuICAgIGNvcHlfc3RydWN0dXJlO1xuICAgIGNvcHlfc2lnbmF0dXJlO1xuICAgIGNvcHlfdG9wbGV2ZWxfcGhyYXNlO1xuICAgIGNvcHlfY29yZV90eXBlO1xuICAgIGNvcHlfZXhwcmVzc2lvbjtcbiAgICBjb3B5X3BhdHRlcm47XG4gICAgY29weV9jYXNlO1xuICAgIGNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgICBjb3B5X3R5cGVfZXh0ZW5zaW9uO1xuICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgIGNvcHlfY2xhc3NfZXhwcjtcbiAgICBjb3B5X2NsYXNzX2ZpZWxkO1xuICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICBjb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgICBjb3B5X2NsYXNzX3R5cGVfZmllbGQ7XG4gICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICBjb3B5X21vZHVsZV90eXBlO1xuICAgIGNvcHlfc2lnbmF0dXJlX2l0ZW07XG4gICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gIH0gOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9XG4gICAgbWlncmF0ZSAobW9kdWxlIEEpIChtb2R1bGUgQilcbmVuZFxuXG4oKiQgZm9yZWFjaF92ZXJzaW9uIChmdW4gbiB2ZXJzaW9uIC0+XG4gICAgcHJpbnRmIFwibW9kdWxlIE9DYW1sXyVkID0gc3RydWN0XFxuXCIgbjtcbiAgICBwcmludGYgXCIgIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XyVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfJWQpXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCB2ZXJzaW9uID0gJWRcXG5cIiBuO1xuICAgIHByaW50ZiBcIiAgbGV0IHN0cmluZ192ZXJzaW9uID0gJVNcXG5cIiB2ZXJzaW9uO1xuICAgIHByaW50ZiBcImVuZFxcblwiO1xuICAgIHByaW50ZiBcImxldCBvY2FtbF8lZCA6IE9DYW1sXyVkLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXyVkKVxcblwiXG4gICAgICBuIG4gbjtcbiAgKVxuKilcbm1vZHVsZSBPQ2FtbF80MDIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDAyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDAyKVxuICBsZXQgdmVyc2lvbiA9IDQwMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDJcIlxuZW5kXG5sZXQgb2NhbWxfNDAyIDogT0NhbWxfNDAyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwMilcbm1vZHVsZSBPQ2FtbF80MDMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDAzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDAzKVxuICBsZXQgdmVyc2lvbiA9IDQwM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDNcIlxuZW5kXG5sZXQgb2NhbWxfNDAzIDogT0NhbWxfNDAzLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwMylcbm1vZHVsZSBPQ2FtbF80MDQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA0XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA0KVxuICBsZXQgdmVyc2lvbiA9IDQwNFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDRcIlxuZW5kXG5sZXQgb2NhbWxfNDA0IDogT0NhbWxfNDA0LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNClcbm1vZHVsZSBPQ2FtbF80MDUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA1XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA1KVxuICBsZXQgdmVyc2lvbiA9IDQwNVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDVcIlxuZW5kXG5sZXQgb2NhbWxfNDA1IDogT0NhbWxfNDA1LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNSlcbm1vZHVsZSBPQ2FtbF80MDYgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA2XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA2KVxuICBsZXQgdmVyc2lvbiA9IDQwNlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDZcIlxuZW5kXG5sZXQgb2NhbWxfNDA2IDogT0NhbWxfNDA2LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNilcbm1vZHVsZSBPQ2FtbF80MDcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA3XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA3KVxuICBsZXQgdmVyc2lvbiA9IDQwN1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDdcIlxuZW5kXG5sZXQgb2NhbWxfNDA3IDogT0NhbWxfNDA3LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwNylcbm1vZHVsZSBPQ2FtbF80MDggPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA4XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA4KVxuICBsZXQgdmVyc2lvbiA9IDQwOFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDhcIlxuZW5kXG5sZXQgb2NhbWxfNDA4IDogT0NhbWxfNDA4LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwOClcbm1vZHVsZSBPQ2FtbF80MDkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDA5XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDA5KVxuICBsZXQgdmVyc2lvbiA9IDQwOVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMDlcIlxuZW5kXG5sZXQgb2NhbWxfNDA5IDogT0NhbWxfNDA5LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQwOSlcbm1vZHVsZSBPQ2FtbF80MTAgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEwXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEwKVxuICBsZXQgdmVyc2lvbiA9IDQxMFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTBcIlxuZW5kXG5sZXQgb2NhbWxfNDEwIDogT0NhbWxfNDEwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMClcbm1vZHVsZSBPQ2FtbF80MTEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDExXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDExKVxuICBsZXQgdmVyc2lvbiA9IDQxMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTFcIlxuZW5kXG5sZXQgb2NhbWxfNDExIDogT0NhbWxfNDExLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMSlcbm1vZHVsZSBPQ2FtbF80MTIgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEyXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEyKVxuICBsZXQgdmVyc2lvbiA9IDQxMlxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTJcIlxuZW5kXG5sZXQgb2NhbWxfNDEyIDogT0NhbWxfNDEyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMilcbm1vZHVsZSBPQ2FtbF80MTMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDEzXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDEzKVxuICBsZXQgdmVyc2lvbiA9IDQxM1xuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTNcIlxuZW5kXG5sZXQgb2NhbWxfNDEzIDogT0NhbWxfNDEzLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxMylcbm1vZHVsZSBPQ2FtbF80MTQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNDE0XG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNDE0KVxuICBsZXQgdmVyc2lvbiA9IDQxNFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjQuMTRcIlxuZW5kXG5sZXQgb2NhbWxfNDE0IDogT0NhbWxfNDE0LnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzQxNClcbm1vZHVsZSBPQ2FtbF81MDAgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAwXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAwKVxuICBsZXQgdmVyc2lvbiA9IDUwMFxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMFwiXG5lbmRcbmxldCBvY2FtbF81MDAgOiBPQ2FtbF81MDAudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAwKVxubW9kdWxlIE9DYW1sXzUwMSA9IHN0cnVjdFxuICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF81MDFcbiAgaW5jbHVkZSBNYWtlX3dpdG5lc3MoQXN0bGliLkFzdF81MDEpXG4gIGxldCB2ZXJzaW9uID0gNTAxXG4gIGxldCBzdHJpbmdfdmVyc2lvbiA9IFwiNS4xXCJcbmVuZFxubGV0IG9jYW1sXzUwMSA6IE9DYW1sXzUwMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF81MDEpXG5tb2R1bGUgT0NhbWxfNTAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMilcbiAgbGV0IHZlcnNpb24gPSA1MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjJcIlxuZW5kXG5sZXQgb2NhbWxfNTAyIDogT0NhbWxfNTAyLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMilcbigqJCopXG5cbmxldCBhbGxfdmVyc2lvbnMgOiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIGxpc3QgPSBbXG4gICgqJGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gXyAtPlxuICAgICAgcHJpbnRmIFwiKG1vZHVsZSBPQ2FtbF8lZCA6IE9DYW1sX3ZlcnNpb24pO1xcblwiIG4pKilcbihtb2R1bGUgT0NhbWxfNDAyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA1IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDcgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA4IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwOSA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTAgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDExIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMiA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTMgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDE0IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF81MDEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAyIDogT0NhbWxfdmVyc2lvbik7XG4oKiQqKVxuXVxuXG4oKiRmb3JlYWNoX3ZlcnNpb25fcGFpciAoZnVuIGEgYiAtPlxuICAgIHByaW50ZiBcImluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXyVkKShPQ2FtbF8lZClcXG5cIiBhIGI7XG4gICAgcHJpbnRmIFwiICAgIChBc3RsaWIuTWlncmF0ZV8lZF8lZCkoQXN0bGliLk1pZ3JhdGVfJWRfJWQpXFxuXCIgYSBiIGIgYVxuICApXG4qKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAyKShPQ2FtbF80MDMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwMl80MDMpKEFzdGxpYi5NaWdyYXRlXzQwM180MDIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDMpKE9DYW1sXzQwNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDAzXzQwNCkoQXN0bGliLk1pZ3JhdGVfNDA0XzQwMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNCkoT0NhbWxfNDA1KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDRfNDA1KShBc3RsaWIuTWlncmF0ZV80MDVfNDA0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA1KShPQ2FtbF80MDYpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNV80MDYpKEFzdGxpYi5NaWdyYXRlXzQwNl80MDUpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDYpKE9DYW1sXzQwNylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA2XzQwNykoQXN0bGliLk1pZ3JhdGVfNDA3XzQwNilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNykoT0NhbWxfNDA4KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDdfNDA4KShBc3RsaWIuTWlncmF0ZV80MDhfNDA3KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA4KShPQ2FtbF80MDkpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOF80MDkpKEFzdGxpYi5NaWdyYXRlXzQwOV80MDgpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDkpKE9DYW1sXzQxMClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA5XzQxMCkoQXN0bGliLk1pZ3JhdGVfNDEwXzQwOSlcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMCkoT0NhbWxfNDExKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTBfNDExKShBc3RsaWIuTWlncmF0ZV80MTFfNDEwKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDExKShPQ2FtbF80MTIpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMV80MTIpKEFzdGxpYi5NaWdyYXRlXzQxMl80MTEpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTIpKE9DYW1sXzQxMylcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEyXzQxMykoQXN0bGliLk1pZ3JhdGVfNDEzXzQxMilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMykoT0NhbWxfNDE0KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTNfNDE0KShBc3RsaWIuTWlncmF0ZV80MTRfNDEzKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDE0KShPQ2FtbF81MDApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxNF81MDApKEFzdGxpYi5NaWdyYXRlXzUwMF80MTQpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF81MDApKE9DYW1sXzUwMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNTAwXzUwMSkoQXN0bGliLk1pZ3JhdGVfNTAxXzUwMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzUwMSkoT0NhbWxfNTAyKVxuICAgIChBc3RsaWIuTWlncmF0ZV81MDFfNTAyKShBc3RsaWIuTWlncmF0ZV81MDJfNTAxKVxuKCokKilcblxubW9kdWxlIE9DYW1sX2N1cnJlbnQgPSBPQ2FtbF9PQ0FNTF9WRVJTSU9OXG5cbm1vZHVsZSBGaW5kX3ZlcnNpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW1wbCBvZiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIHwgSW50ZiBvZiAobW9kdWxlIE9DYW1sX3ZlcnNpb24pIHwgVW5rbm93blxuXG4gIGxldCBmcm9tX21hZ2ljIG1hZ2ljID1cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBVbmtub3duXG4gICAgICB8IChtb2R1bGUgVmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIDo6IHRhaWwgLT5cbiAgICAgICAgICBpZiBWZXJzaW9uLkFzdC5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gbWFnaWMgdGhlblxuICAgICAgICAgICAgSW1wbCAobW9kdWxlIFZlcnNpb24pXG4gICAgICAgICAgZWxzZSBpZiBWZXJzaW9uLkFzdC5Db25maWcuYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gbWFnaWMgdGhlblxuICAgICAgICAgICAgSW50ZiAobW9kdWxlIFZlcnNpb24pXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbG9vcCB0YWlsXG4gICAgaW5cbiAgICAoKiBUcmF2ZXJzZSB0aGUgdmVyc2lvbnMgZnJvbSBsYXN0IHRvIGZpcnN0OlxuICAgICAgIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZW4ndCB1bmlxdWUgYW1vbmcgdmVyc2lvbnMsXG4gICAgICAgd2Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24gd2l0aCBhIG1hZ2ljIG51bWJlciBtYXRjaC5cbiAgICAgICBUaGUgc2l0dWF0aW9uIGluIG1pbmQgaXMgdHJ1bmsgc3VwcG9ydC4gKilcbiAgICAgIGxldCBhbGxfdmVyc2lvbnNfdG9wX2Rvd24gPSBMaXN0LnJldiBhbGxfdmVyc2lvbnMgaW5cbiAgICAgIGxvb3AgYWxsX3ZlcnNpb25zX3RvcF9kb3duXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyB1c2VkIHRvIGNvbnRyb2wgd2hhdCB3ZSB1c2UgZnJvbSB0aGUgY3VycmVudCBjb21waWxlciBhbmQgd2hhdCBpcyBlbWJlZCBpblxuICAgdGhpcyBsaWJyYXJ5LlxuXG4gICBJdCBtdXN0IGJlIG9wZW5lZCBpbiBhbGwgbW9kdWxlcywgZXNwZWNpYWxseSB0aGUgb25lcyBjb21pbmcgZnJvbSB0aGUgY29tcGlsZXIuXG4qKVxuXG4oKiQgb3BlbiBBc3RfY2luYXBzX2hlbHBlcnMgJCopXG5cbm1vZHVsZSBKcyA9IFZlcnNpb25zLk9DYW1sXzUwMFxubW9kdWxlIE9jYW1sID0gVmVyc2lvbnMuT0NhbWxfY3VycmVudFxuXG5tb2R1bGUgU2VsZWN0X2FzdCAoT2NhbWwgOiBWZXJzaW9ucy5PQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBpbmNsdWRlIEpzXG5cbiAgbW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnanMsICdvY2FtbCkgdCA9XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuJXMsXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuJXMgKVxcblxcXG4gICAgICAgICAgICAgIFxcICAgICAgICAgICAgdFxcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHMgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENvcmVfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBFeHByZXNzaW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgUGF0dGVyblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnBhdHRlcm4sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUucGF0dGVybiApXG4gICAgICAgICAgICB0XG4gICAgICB8IENhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jYXNlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNhc2UgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgVHlwZV9leHRlbnNpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19leHByXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19leHByIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfZmllbGRcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3R5cGVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19zaWduYXR1cmVcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV9leHByXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBNb2R1bGVfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLm1vZHVsZV90eXBlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFN0cnVjdHVyZV9pdGVtXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0sXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKVxuICAgICAgICAgICAgdFxuKCokKilcbiAgICAgIHwgTGlzdCA6ICgnYSwgJ2IpIHQgLT4gKCdhIGxpc3QsICdiIGxpc3QpIHRcbiAgICAgIHwgUGFpciA6ICgnYSwgJ2IpIHQgKiAoJ2MsICdkKSB0IC0+ICgnYSAqICdjLCAnYiAqICdkKSB0XG4gIGVuZFxuXG4gIG9wZW4gVHlwZVxuICBtb2R1bGUgT2Zfb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChPY2FtbCkgKEpzKVxuICBtb2R1bGUgVG9fb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChKcykgKE9jYW1sKVxuXG4gIGxldCByZWMgb2Zfb2NhbWwgOiB0eXBlIG9jYW1sIGpzLiAoanMsIG9jYW1sKSBUeXBlLnQgLT4gb2NhbWwgLT4ganMgPVxuICAgIGxldCBvcGVuIE9mX29jYW1sIGluXG4gICAgZnVuIG5vZGUgLT5cbiAgICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgICAgICAgcHJpbnRmXG4gICAgICAgICAgICAgIFwiICAgICAgfCAlcyAtPiBjb3B5XyVzXFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgc1xuICAgICAgICAgIClcbiAgICAgICopXG4gICAgICB8IFN0cnVjdHVyZSAtPiBjb3B5X3N0cnVjdHVyZVxuICAgICAgfCBTaWduYXR1cmUgLT4gY29weV9zaWduYXR1cmVcbiAgICAgIHwgVG9wbGV2ZWxfcGhyYXNlIC0+IGNvcHlfdG9wbGV2ZWxfcGhyYXNlXG4gICAgICB8IENvcmVfdHlwZSAtPiBjb3B5X2NvcmVfdHlwZVxuICAgICAgfCBFeHByZXNzaW9uIC0+IGNvcHlfZXhwcmVzc2lvblxuICAgICAgfCBQYXR0ZXJuIC0+IGNvcHlfcGF0dGVyblxuICAgICAgfCBDYXNlIC0+IGNvcHlfY2FzZVxuICAgICAgfCBUeXBlX2RlY2xhcmF0aW9uIC0+IGNvcHlfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgfCBUeXBlX2V4dGVuc2lvbiAtPiBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gICAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgfCBDbGFzc19leHByIC0+IGNvcHlfY2xhc3NfZXhwclxuICAgICAgfCBDbGFzc19maWVsZCAtPiBjb3B5X2NsYXNzX2ZpZWxkXG4gICAgICB8IENsYXNzX3R5cGUgLT4gY29weV9jbGFzc190eXBlXG4gICAgICB8IENsYXNzX3NpZ25hdHVyZSAtPiBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IGNvcHlfY2xhc3NfdHlwZV9maWVsZFxuICAgICAgfCBNb2R1bGVfZXhwciAtPiBjb3B5X21vZHVsZV9leHByXG4gICAgICB8IE1vZHVsZV90eXBlIC0+IGNvcHlfbW9kdWxlX3R5cGVcbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4gY29weV9zaWduYXR1cmVfaXRlbVxuICAgICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBjb3B5X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICAgICAgfCBMaXN0IHQgLT4gTGlzdC5tYXAgKG9mX29jYW1sIHQpXG4gICAgICB8IFBhaXIgKGEsIGIpIC0+XG4gICAgICAgICAgbGV0IGYgPSBvZl9vY2FtbCBhIGluXG4gICAgICAgICAgbGV0IGcgPSBvZl9vY2FtbCBiIGluXG4gICAgICAgICAgZnVuICh4LCB5KSAtPiAoZiB4LCBnIHkpXG5cbiAgbGV0IHJlYyB0b19vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBqcyAtPiBvY2FtbCA9XG4gICAgbGV0IG9wZW4gVG9fb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAodG9fb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IHRvX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IHRvX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgb2Zfb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSB0b19vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IG9mX29jYW1sIGl0ZW1cbiAgbGV0IHRvX29jYW1sX21hcHBlciBpdGVtIGYgY3R4dCB4ID0gb2Zfb2NhbWwgaXRlbSB4IHw+IGYgY3R4dCB8PiB0b19vY2FtbCBpdGVtXG5lbmRcblxubW9kdWxlIFNlbGVjdGVkX2FzdCA9IFNlbGVjdF9hc3QgKE9jYW1sKVxubW9kdWxlIEFzdF9oZWxwZXIgPSBBc3RfaGVscGVyX2xpdGVcblxuKCogTW9kdWxlcyBmcm9tIEFzdF88bj4gb2YgQXN0bGliLCB3aGVyZSA8bj4gaXMgdGhlIGNvbXBpbGVyIHZlcnNpb24gdGhlIHBweGxpYiBkcml2ZXIgaXMgY29tcGlsZWQgd2l0aCAqKVxubW9kdWxlIFBhcnNldHJlZSA9IFNlbGVjdGVkX2FzdC5Bc3QuUGFyc2V0cmVlXG5tb2R1bGUgQXN0dHlwZXMgPSBTZWxlY3RlZF9hc3QuQXN0LkFzdHR5cGVzXG5cbigqIE90aGVyIEFzdGxpYiBtb2R1bGVzICopXG5tb2R1bGUgTG9jYXRpb24gPSBBc3RsaWIuTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBBc3RsaWIuTG9uZ2lkZW50XG5cbm1vZHVsZSBQYXJzZSA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdGxpYi5QYXJzZVxuICBtb2R1bGUgT2Zfb2NhbWwgPSBWZXJzaW9ucy5Db252ZXJ0IChPY2FtbCkgKEpzKVxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbiBsZXhidWYgPSBpbXBsZW1lbnRhdGlvbiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zdHJ1Y3R1cmVcbiAgbGV0IGludGVyZmFjZSBsZXhidWYgPSBpbnRlcmZhY2UgbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfc2lnbmF0dXJlXG5cbiAgbGV0IHRvcGxldmVsX3BocmFzZSBsZXhidWYgPVxuICAgIHRvcGxldmVsX3BocmFzZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV90b3BsZXZlbF9waHJhc2VcblxuICBsZXQgdXNlX2ZpbGUgbGV4YnVmID1cbiAgICB1c2VfZmlsZSBsZXhidWYgfD4gTGlzdC5tYXAgT2Zfb2NhbWwuY29weV90b3BsZXZlbF9waHJhc2VcblxuICBsZXQgY29yZV90eXBlIGxleGJ1ZiA9IGNvcmVfdHlwZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9jb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gbGV4YnVmID0gZXhwcmVzc2lvbiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9leHByZXNzaW9uXG4gIGxldCBwYXR0ZXJuIGxleGJ1ZiA9IHBhdHRlcm4gbGV4YnVmIHw+IE9mX29jYW1sLmNvcHlfcGF0dGVyblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGRlZmF1bHRfcHJpbnRfd2FybmluZyBfbG9jID0gKClcbmxldCBhYm91dF9pdGVfYnJhbmNoX3JlZiA9IHJlZiBkZWZhdWx0X3ByaW50X3dhcm5pbmdcbmxldCBjYXJlX2Fib3V0X2l0ZV9icmFuY2ggPSByZWYgZmFsc2VcbmxldCBhYm91dF9pdGVfYnJhbmNoIGxvYyA9ICFhYm91dF9pdGVfYnJhbmNoX3JlZiBsb2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIERlZmluaXRpb24gb2YgdGhlIE9DYW1sIEFTVCAqKVxuXG5vcGVuIEltcG9ydFxuXG4oKiBUaGlzIGZpbGUgaXMgb2J0YWluZWQgYnk6XG5cbiAgIC0gY29weWluZyBhIHN1YnNldCBvZiB0aGUgY29ycmVzcG9uZGluZyBhc3RfeHh4Lm1sIGZpbGUgZnJvbSBBc3RsaWJcbiAgIChzdWItbW9kdWxlcyBBc3R0eXBlcyBhbmQgUGFyc2V0cmVlKVxuICAgLSBhZGRpbmcgdGhlIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHBvc2l0aW9uLCBsb2NhdGlvbiwgbG9jIGFuZCBsb25naWRlbnRcbiAgIC0gZmxhdHRlbmluZyBhbGwgdGhlIG1vZHVsZXNcbiAgIC0gcmVtb3ZpbmcgQXN0dHlwZXMuY29uc3RhbnQgKHVudXNlZCBhbmQgY29uZmxpY3RzIHdpdGggUGFyc2V0cmVlLmNvbnN0YW50KVxuICAgLSByZW5hbWluZyBhIGZldyB0eXBlczpcbiAgIC0gLSBMb2NhdGlvbi50IC0+IGxvY2F0aW9uXG4gICAtIC0gTG9uZ2lkZW50LnQgLT4gbG9uZ2lkZW50XG4gICAtIGFkZGluZyBhIHR5cGUgbG9uZ2lkZW50X2xvYyA9IGxvbmdpZGVudCBsb2MgYW5kIHJlcGxhY2luZyBhbGwgdGhlIG9jY3VycmVuY2VzIG9mIHRoZVxuICAgbGF0dGVyIGJ5IHRoZSBmb3JtZXIuIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gb3ZlcnJpZGUgaXRlcmF0aW9uIGFuIHRoZSBsZXZlbCBvZiBhXG4gICBsb25naWRlbnQgbG9jXG4gICAtIGFkZGluZyBhIHR5cGUgY2FzZXMgPSBjYXNlIGxpc3RcbiAgIC0gcmVwbGFjaW5nIGFsbCBvY2N1cmVuY2VzIG9mIFwiY2FzZSBsaXN0XCIgYnkgXCJjYXNlc1wiXG4gICAtIHJlcGxhY2luZyBhbGwgdGhlICgqSUZfQ1VSUkVOVCA9IEZvby5iYXIqKSBieTogPSBGb28uYmFyXG4gICAtIHJlbW92aW5nIHRoZSBleHRyYSB2YWx1ZXMgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZVxuICAgLSByZXBsYWNpbmcgYXBwIFt0eXBlIC4uLl0gYnkgW2FuZCAuLi5dIHRvIG1ha2UgZXZlcnl0aGluZyBvbmUgcmVjdXJzaXZlIGJsb2NrXG4gICAtIGFkZGluZyBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdW0BAQGVuZF0gYXQgdGhlIGVuZFxuXG4gICBUbyB1cGRhdGUgaXQgdG8gYSBuZXdlciBPQ2FtbCB2ZXJzaW9uLCBjcmVhdGUgYSBuZXcgbW9kdWxlIHdpdGggdGhlIGFib3ZlIGZyb20gdGhlXG4gICBsYXRlc3QgY29tcGlsZXIgYW5kIGFkZCB0aGUgZm9sbG93aW5nIG1vZHVsZSBkZWZpbml0aW9ucyBhbmQgb3BlbnMgdG8gZ2V0IGl0IHRvXG4gICBjb21waWxlOlxuICAgW3tcbiAgICBtb2R1bGUgQXN0ID0gVmVyc2lvbnMuT0NhbWxfNHh4XG4gICAgb3BlbiBBc3QuQXN0XG4gICAgbW9kdWxlIExvY2F0aW9uICAgPSBPY2FtbF9jb21tb24uTG9jYXRpb25cbiAgICBtb2R1bGUgTG9uZ2lkZW50ID0gT2NhbWxfY29tbW9uLkxvbmdpZGVudFxuICAgfV1cblxuICAgT25jZSB5b3UgaGF2ZSBnZW5lcmF0ZWQgdGhlIGlubGluZWQgZGVyaXZlZCB0cmF2ZXJzYWwgY2xhc3NlcyBieSBydW5uaW5nXG4gICBbeyBkdW5lIGJ1aWxkIEBsaW50IH1dIHlvdSBjYW4gcmVwbGFjZSB0aGUgYWJvdmUgbWVudGlvbmVkIG1vZHVsZSBkZWZpbml0aW9ucyBieSBhXG4gICBbb3BlbiBJbXBvcnRdIGFuZCB1cGRhdGUgW0ltcG9ydF0gc28gdGhhdCB0aGUgW0pzXSBtb2R1bGUgcG9pbnRzIHRvXG4gICBbVmVyc2lvbnMuT0NhbWxfNHh4XS5cbiopXG5cbigqIFNvdXJjZSBjb2RlIGxvY2F0aW9ucyAocmFuZ2VzIG9mIHBvc2l0aW9ucyksIHVzZWQgaW4gcGFyc2V0cmVlLiAqKVxuXG50eXBlIHBvc2l0aW9uID0gTGV4aW5nLnBvc2l0aW9uID0ge1xuICBwb3NfZm5hbWUgOiBzdHJpbmc7XG4gIHBvc19sbnVtIDogaW50O1xuICBwb3NfYm9sIDogaW50O1xuICBwb3NfY251bSA6IGludDtcbn1cblxuYW5kIGxvY2F0aW9uID0gTG9jYXRpb24udCA9IHtcbiAgbG9jX3N0YXJ0IDogcG9zaXRpb247XG4gIGxvY19lbmQgOiBwb3NpdGlvbjtcbiAgbG9jX2dob3N0IDogYm9vbDtcbn1cblxuYW5kIGxvY2F0aW9uX3N0YWNrID0gbG9jYXRpb24gbGlzdFxuXG4oKiBOb3RlIG9uIHRoZSB1c2Ugb2YgTGV4aW5nLnBvc2l0aW9uIGluIHRoaXMgbW9kdWxlLlxuICAgSWYgW3Bvc19mbmFtZSA9IFwiXCJdLCB0aGVuIHVzZSBbIWlucHV0X25hbWVdIGluc3RlYWQuXG4gICBJZiBbcG9zX2xudW0gPSAtMV0sIHRoZW4gW3Bvc19ib2wgPSAwXS4gVXNlIFtwb3NfY251bV0gYW5kXG4gICByZS1wYXJzZSB0aGUgZmlsZSB0byBnZXQgdGhlIGxpbmUgYW5kIGNoYXJhY3RlciBudW1iZXJzLlxuICAgRWxzZSBhbGwgZmllbGRzIGFyZSBjb3JyZWN0LlxuKilcbmFuZCAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBsb2NhdGlvbiB9XG5cbigqIExvbmcgaWRlbnRpZmllcnMsIHVzZWQgaW4gcGFyc2V0cmVlLiAqKVxuYW5kIGxvbmdpZGVudCA9IExvbmdpZGVudC50ID1cbiAgfCBMaWRlbnQgb2Ygc3RyaW5nXG4gIHwgTGRvdCBvZiBsb25naWRlbnQgKiBzdHJpbmdcbiAgfCBMYXBwbHkgb2YgbG9uZ2lkZW50ICogbG9uZ2lkZW50XG5cbmFuZCBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvY1xuXG4oKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG5hbmQgcmVjX2ZsYWcgPSBBc3R0eXBlcy5yZWNfZmxhZyA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG5hbmQgZGlyZWN0aW9uX2ZsYWcgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IFVwdG8gfCBEb3dudG9cblxuKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG5hbmQgcHJpdmF0ZV9mbGFnID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gUHJpdmF0ZSB8IFB1YmxpY1xuYW5kIG11dGFibGVfZmxhZyA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyA9IEltbXV0YWJsZSB8IE11dGFibGVcbmFuZCB2aXJ0dWFsX2ZsYWcgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBWaXJ0dWFsIHwgQ29uY3JldGVcbmFuZCBvdmVycmlkZV9mbGFnID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IE92ZXJyaWRlIHwgRnJlc2hcbmFuZCBjbG9zZWRfZmxhZyA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnID0gQ2xvc2VkIHwgT3BlblxuYW5kIGxhYmVsID0gc3RyaW5nXG5cbmFuZCBhcmdfbGFiZWwgPSBBc3R0eXBlcy5hcmdfbGFiZWwgPVxuICB8IE5vbGFiZWxcbiAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgICgqKiBbbGFiZWw6VCAtPiAuLi5dICopXG4gIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICAoKiogWz9sYWJlbDpUIC0+IC4uLl0gKilcblxuYW5kIHZhcmlhbmNlID0gQXN0dHlwZXMudmFyaWFuY2UgPSBDb3ZhcmlhbnQgfCBDb250cmF2YXJpYW50IHwgTm9WYXJpYW5jZVxuYW5kIGluamVjdGl2aXR5ID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBJbmplY3RpdmUgfCBOb0luamVjdGl2aXR5XG5cbigqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbmFuZCBjb25zdGFudCA9IFBhcnNldHJlZS5jb25zdGFudCA9XG4gIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICgqKiBJbnRlZ2VyIGNvbnN0YW50cyBzdWNoIGFzIFszXSBbM2xdIFszTF0gWzNuXS5cblxuICAgICAgICAgIFN1ZmZpeGVzIFtbZy16XVtHLVpdXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci4gU3VmZml4ZXMgZXhjZXB0XG4gICAgICAgICAgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyICopXG4gIHwgUGNvbnN0X2NoYXIgb2YgY2hhciAgKCoqIENoYXJhY3RlciBzdWNoIGFzIFsnYyddLiAqKVxuICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogbG9jYXRpb24gKiBzdHJpbmcgb3B0aW9uXG4gICAgICAoKiogQ29uc3RhbnQgc3RyaW5nIHN1Y2ggYXMgW1wiY29uc3RhbnRcIl0gb3JcbiAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICBUaGUgbG9jYXRpb24gc3BhbiB0aGUgY29udGVudCBvZiB0aGUgc3RyaW5nLCB3aXRob3V0IHRoZSBkZWxpbWl0ZXJzLiAqKVxuICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEZsb2F0IGNvbnN0YW50IHN1Y2ggYXMgWzMuNF0sIFsyZTVdIG9yIFsxLjRlLTRdLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci4gU3VmZml4ZXMgYXJlIHJlamVjdGVkXG4gICAgICAgICAgYnkgdGhlIHR5cGVjaGVja2VyLiAqKVxuXG4oKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuYW5kIGF0dHJpYnV0ZSA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgPSB7XG4gIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gIGF0dHJfbG9jIDogbG9jYXRpb247XG59XG4oKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbQGlkIEFSR11dIGFuZCBbW0BAaWQgQVJHXV0uXG5cbiAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuIFRoZSBjb21waWxlciBpZ25vcmVzXG4gICAgdW5rbm93biBhdHRyaWJ1dGVzLiAqKVxuXG5hbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbigqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLiAqKVxuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBwYXlsb2FkID0gUGFyc2V0cmVlLnBheWxvYWQgPVxuICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gIHwgUFNpZyBvZiBzaWduYXR1cmUgICgqKiBbOiBTSUddIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFs/IFBdIG9yIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4oKiogezEgQ29yZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgY29yZV90eXBlID0gUGFyc2V0cmVlLmNvcmVfdHlwZSA9IHtcbiAgcHR5cF9kZXNjIDogY29yZV90eXBlX2Rlc2M7XG4gIHB0eXBfbG9jIDogbG9jYXRpb247XG4gIHB0eXBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHB0eXBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY29yZV90eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gIHwgUHR5cF92YXIgb2Ygc3RyaW5nICAoKiogQSB0eXBlIHZhcmlhYmxlIHN1Y2ggYXMgWydhXSAqKVxuICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbVDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkXX0sXG4gICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsXX0uICopXG4gIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldIHJlcHJlc2VudHMgYSBwcm9kdWN0IHR5cGVcbiAgICAgICAgICBbVDEgKiAuLi4gKiBUbl0uXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdLiAqKVxuICB8IFB0eXBfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NvbnN0cihsaWRlbnQsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbdGNvbnN0cl0gd2hlbiBbbD1bXV0sXG4gICAgICAgICAgLSBbVCB0Y29uc3RyXSB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSB0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgKCoqIFtQdHlwX29iamVjdChbIGwxOlQxOyAuLi47IGxuOlRuIF0sIGZsYWcpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfSBbQ2xvc2VkXX0sXG4gICAgICAgICAgLSBbPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPl0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0uICopXG4gIHwgUHR5cF9jbGFzcyBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyN0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUICN0Y29uc3RyXSB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLiAqKVxuICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nICAoKiogW1QgYXMgJ2FdLiAqKVxuICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtbIGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtbPiBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufSBbT3Blbl19LFxuICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXV0sXG4gICAgICAgICAgLSBbWzwgYEF8YEIgPiBgWCBgWSBdXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9XG4gICAgICAgICAgICBbQ2xvc2VkXX0sIGFuZCBbbGFiZWxzXSBpcyBbU29tZSBbXCJYXCI7XCJZXCJdXS4gKilcbiAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2NvbnN0cmFpbnR9XG4gICAgICAgICAgICBbUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nIHRvIGEgY29uc3RyYWludCBvbiBhXG4gICAgICAgICAgICBsZXQtYmluZGluZzpcblxuICAgICAgICAgIHtbXG4gICAgICAgICAgICBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5cbiAgICAgICAgICBdfVxuICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH0gW0Nma192aXJ0dWFsXX0gZm9yIG1ldGhvZHNcbiAgICAgICAgICAgIChub3QgdmFsdWVzKS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWNsYXNzX3R5cGVfZmllbGRfZGVzYy5QY3RmX21ldGhvZH1cbiAgICAgICAgICAgIFtQY3RmX21ldGhvZF19IG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9wb2x5fSBbUGV4cF9wb2x5XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfdHlwZX0gW3BsZF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgeyFsYWJlbF9kZWNsYXJhdGlvbn0uXG5cbiAgICAgICAgICAtIEFzIGEgeyFjb3JlX3R5cGV9IG9mIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9vYmplY3R9IFtQdHlwX29iamVjdF19XG4gICAgICAgICAgICBub2RlLlxuXG4gICAgICAgICAgLSBBcyB0aGUge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF90eXBlfSBbcHZhbF90eXBlXX0gZmllbGQgb2YgYVxuICAgICAgICAgICAgeyF2YWx1ZV9kZXNjcmlwdGlvbn0uICopXG4gIHwgUHR5cF9wYWNrYWdlIG9mIHBhY2thZ2VfdHlwZSAgKCoqIFsobW9kdWxlIFMpXS4gKilcbiAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG5hbmQgcGFja2FnZV90eXBlID0gbG9uZ2lkZW50X2xvYyAqIChsb25naWRlbnRfbG9jICogY29yZV90eXBlKSBsaXN0XG4oKiogQXMgeyFwYWNrYWdlX3R5cGV9IHR5cGVkIHZhbHVlczpcblxuICAgIC0gWyhTLCBbXSldIHJlcHJlc2VudHMgWyhtb2R1bGUgUyldLFxuICAgIC0gWyhTLCBbKHQxLCBUMSkgOyAuLi4gOyAodG4sIFRuKV0pXSByZXByZXNlbnRzXG4gICAgICBbKG1vZHVsZSBTIHdpdGggdHlwZSB0MSA9IFQxIGFuZCAuLi4gYW5kIHRuID0gVG4pXS4gKilcblxuYW5kIHJvd19maWVsZCA9IFBhcnNldHJlZS5yb3dfZmllbGQgPSB7XG4gIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gIHByZl9sb2MgOiBsb2NhdGlvbjtcbiAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuXG5hbmQgcm93X2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1J0YWcoYEEsIGIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW2JdIGlzIFt0cnVlXSBhbmQgW2xdIGlzIFtbXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVF0gd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVF1dLFxuICAgICAgICAgIC0gW2BBIG9mIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW2ZhbHNlXSBhbmQgW2xdIGlzIFtbVDE7Li4uVG5dXSxcbiAgICAgICAgICAtIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLlxuXG4gICAgICAgICAgLSBUaGUgW2Jvb2xdIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhIGNvbnN0YW50IChlbXB0eSlcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yLlxuICAgICAgICAgIC0gWyZdIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yIChzZWVcbiAgICAgICAgICAgIDQuMiBpbiB0aGUgbWFudWFsKSAqKVxuICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZSAgKCoqIFtbIHwgdCBdXSAqKVxuXG5hbmQgb2JqZWN0X2ZpZWxkID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9IHtcbiAgcG9mX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYztcbiAgcG9mX2xvYyA6IGxvY2F0aW9uO1xuICBwb2ZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCBvYmplY3RfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG5hbmQgcGF0dGVybiA9IFBhcnNldHJlZS5wYXR0ZXJuID0ge1xuICBwcGF0X2Rlc2MgOiBwYXR0ZXJuX2Rlc2M7XG4gIHBwYXRfbG9jIDogbG9jYXRpb247XG4gIHBwYXRfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBwYXRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgcGF0dGVybl9kZXNjID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9XG4gIHwgUHBhdF9hbnkgICgqKiBUaGUgcGF0dGVybiBbX10uICopXG4gIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvYyAgKCoqIEEgdmFyaWFibGUgcGF0dGVybiBzdWNoIGFzIFt4XSAqKVxuICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICgqKiBBbiBhbGlhcyBwYXR0ZXJuIHN1Y2ggYXMgW1AgYXMgJ2FdICopXG4gIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICgqKiBQYXR0ZXJucyBzdWNoIGFzIFsnYScuLid6J10uXG5cbiAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyIGJ1dCByZWplY3RlZCBieVxuICAgICAgICAgIHRoZSB0eXBlLWNoZWNrZXIuICopXG4gIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICgqKiBQYXR0ZXJucyBbKFAxLCAuLi4sIFBuKV0uXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdICopXG4gIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgbG9uZ2lkZW50X2xvYyAqIChzdHJpbmcgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb25cbiAgICAgICgqKiBbUHBhdF9jb25zdHJ1Y3QoQywgYXJncyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtDXSB3aGVuIFthcmdzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbQyBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgIC0gW0MgKFAxLCAuLi4sIFBuKV0gd2hlbiBbYXJnc10gaXNcbiAgICAgICAgICAgIFtTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKV1cbiAgICAgICAgICAtIFtDICh0eXBlIGEgYikgUF0gd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldICopXG4gIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICgqKiBbUHBhdF92YXJpYW50KGBBLCBwYXQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW3BhdF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF0gKilcbiAgfCBQcGF0X3JlY29yZCBvZiAobG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbeyBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfSBbQ2xvc2VkXX1cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW1AxIHwgUDJdICopXG4gIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGUgICgqKiBQYXR0ZXJuIFsoUCA6IFQpXSAqKVxuICB8IFBwYXRfdHlwZSBvZiBsb25naWRlbnRfbG9jICAoKiogUGF0dGVybiBbI3Rjb25zdF0gKilcbiAgfCBQcGF0X2xhenkgb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2xhenkgUF0gKilcbiAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgKCoqIFtQcGF0X3VucGFjayhzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gWyhtb2R1bGUgUCldIHdoZW4gW3NdIGlzIFtTb21lIFwiUFwiXVxuICAgICAgICAgIC0gWyhtb2R1bGUgXyldIHdoZW4gW3NdIGlzIFtOb25lXVxuXG4gICAgICAgICAgTm90ZTogWyhtb2R1bGUgUCA6IFMpXSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2soU29tZSBcIlBcIiksIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbZXhjZXB0aW9uIFBdICopXG4gIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gIHwgUHBhdF9vcGVuIG9mIGxvbmdpZGVudF9sb2MgKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbTS4oUCldICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuYW5kIGV4cHJlc3Npb24gPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiA9IHtcbiAgcGV4cF9kZXNjIDogZXhwcmVzc2lvbl9kZXNjO1xuICBwZXhwX2xvYyA6IGxvY2F0aW9uO1xuICBwZXhwX2xvY19zdGFjayA6IGxvY2F0aW9uX3N0YWNrO1xuICBwZXhwX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGV4cHJlc3Npb25fZGVzYyA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICB8IFBleHBfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIElkZW50aWZpZXJzIHN1Y2ggYXMgW3hdIGFuZCBbTS54XSAqKVxuICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLCBbMUxdLFxuICAgICAgICAgIFsxbl0gKilcbiAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9sZXQoZmxhZywgWyhQMSxFMSkgOyAuLi4gOyAoUG4sRW4pXSwgRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlcyAgKCoqIFtmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9mdW4obGJsLCBleHAwLCBQLCBFMSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtmdW4gUCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1cbiAgICAgICAgICAgIFtOb2xhYmVsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gRTFdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biA/bDooUCA9IEUwKSAtPiBFMV0gd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXNcbiAgICAgICAgICAgIFtTb21lIEUwXVxuXG4gICAgICAgICAgTm90ZXM6XG5cbiAgICAgICAgICAtIElmIFtFMF0gaXMgcHJvdmlkZWQsIG9ubHkge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsXX0gaXMgYWxsb3dlZC5cbiAgICAgICAgICAtIFtmdW4gUDEgUDIgLi4gUG4gLT4gRTFdIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZFxuICAgICAgICAgICAge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufSBbUGV4cF9mdW5dfS5cbiAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmcge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfZnVufVxuICAgICAgICAgICAgW1BleHBfZnVuXX0uICopXG4gIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV0gcmVwcmVzZW50c1xuICAgICAgICAgIFtFMCB+bDE6RTEgLi4uIH5sbjpFbl1cblxuICAgICAgICAgIFtsaV0gY2FuIGJlIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19IChub24gbGFiZWxlZFxuICAgICAgICAgIGFyZ3VtZW50KSwge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfSBbTGFiZWxsZWRdfSAobGFiZWxsZWRcbiAgICAgICAgICBhcmd1bWVudHMpIG9yIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsXX0gKG9wdGlvbmFsXG4gICAgICAgICAgYXJndW1lbnQpLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFt0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdICopXG4gIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfY29uc3RydWN0KEMsIGV4cCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtDXSB3aGVuIFtleHBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV0sXG4gICAgICAgICAgLSBbQyAoRTEsIC4uLiwgRW4pXSB3aGVuIFtleHBdIGlzIFtTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXSAqKVxuICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfdmFyaWFudChgQSwgZXhwKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbYEFdIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbYEEgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSAqKVxuICB8IFBleHBfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogW1BleHBfcmVjb3JkKFsobDEsUDEpIDsgLi4uIDsgKGxuLFBuKV0sIGV4cDApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPiAwXSAqKVxuICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIGxvbmdpZGVudF9sb2MgICgqKiBbRS5sXSAqKVxuICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uXG4gICAgICAoKiogW0UxLmwgPC0gRTJdICopXG4gIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbaWYgRTEgdGhlbiBFMiBlbHNlIEUzXSAqKVxuICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbd2hpbGUgRTEgZG8gRTIgZG9uZV0gKilcbiAgfCBQZXhwX2ZvciBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2ZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b30gW1VwdG9dfVxuICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdIHdoZW4gW2RpcmVjdGlvbl0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnLkRvd250b30gW0Rvd250b119ICopXG4gIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgICgqKiBbKEUgOiBUKV0gKilcbiAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuXG4gICAgICAgICAgLSBbKEUgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFsoRSA6IFQwIDo+IFQpXSB3aGVuIFtmcm9tXSBpcyBbU29tZSBUMF0uICopXG4gIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2MgICgqKiBbRSAjIG1dICopXG4gIHwgUGV4cF9uZXcgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtuZXcgTS5jXSAqKVxuICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uICAoKiogW3ggPC0gMl0gKilcbiAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAoKiogW3s8IHgxID0gRTE7IC4uLjsgeG4gPSBFbiA+fV0gKilcbiAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbbGV0IGV4Y2VwdGlvbiBDIGluIEVdICopXG4gIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgKCoqIFthc3NlcnQgRV0uXG5cbiAgICAgICAgICBOb3RlOiBbYXNzZXJ0IGZhbHNlXSBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKiogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXJcbiAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX0gW0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICB2YWx1ZXMpLiAqKVxuICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbZnVuICh0eXBlIHQpIC0+IEVdICopXG4gIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAoKiogWyhtb2R1bGUgTUUpXS5cblxuICAgICAgICAgIFsobW9kdWxlIE1FIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BleHBfY29uc3RyYWludChQZXhwX3BhY2sgTUUsIFB0eXBfcGFja2FnZSBTKV0gKilcbiAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiBNIGluIEVdXG4gICAgICAgICAgLSBbbGV0IG9wZW4hIE0gaW4gRV0gKilcbiAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgLSBbbGV0KiBQMCA9IEUwMCBhbmQqIFAxID0gRTAxIGluIEUxXSAqKVxuICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQZXhwX3VucmVhY2hhYmxlICAoKiogWy5dICopXG5cbmFuZCBjYXNlID0gUGFyc2V0cmVlLmNhc2UgPSB7XG4gIHBjX2xocyA6IHBhdHRlcm47XG4gIHBjX2d1YXJkIDogZXhwcmVzc2lvbiBvcHRpb247XG4gIHBjX3JocyA6IGV4cHJlc3Npb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgeyFjYXNlfSByZXByZXNlbnRzIFsoUCAtPiBFKV0gb3IgWyhQIHdoZW4gRTAgLT4gRSldICopXG5cbmFuZCBsZXRvcCA9IFBhcnNldHJlZS5sZXRvcCA9IHtcbiAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gIGJvZHkgOiBleHByZXNzaW9uO1xufVxuXG5hbmQgYmluZGluZ19vcCA9IFBhcnNldHJlZS5iaW5kaW5nX29wID0ge1xuICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gIHBib3BfbG9jIDogbG9jYXRpb247XG59XG5cbigqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbmFuZCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9IHtcbiAgcHZhbF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHZhbF90eXBlIDogY29yZV90eXBlO1xuICBwdmFsX3ByaW0gOiBzdHJpbmcgbGlzdDtcbiAgcHZhbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcHZhbF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuXG4gICAgLSBbdmFsIHg6IFRdLCB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX0gW3B2YWxfcHJpbV19IGlzIFtbXV1cbiAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfVxuICAgICAgW3B2YWxfcHJpbV19IGlzIFtbXCJzMVwiOy4uLlwic25cIl1dICopXG5cbigqKiB7MiBUeXBlIGRlY2xhcmF0aW9uc30gKilcblxuYW5kIHR5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9IHtcbiAgcHR5cGVfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHB0eXBlX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICBwdHlwZV9jc3RycyA6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBsb2NhdGlvbikgbGlzdDtcbiAgICAgICgqKiBbLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbiddICopXG4gIHB0eXBlX2tpbmQgOiB0eXBlX2tpbmQ7XG4gIHB0eXBlX3ByaXZhdGUgOiBwcml2YXRlX2ZsYWc7ICAoKiogZm9yIFs9IHByaXZhdGUgLi4uXSAqKVxuICBwdHlwZV9tYW5pZmVzdCA6IGNvcmVfdHlwZSBvcHRpb247ICAoKiogcmVwcmVzZW50cyBbPSBUXSAqKVxuICBwdHlwZV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcHR5cGVfbG9jIDogbG9jYXRpb247XG59XG4oKiogSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLCBmb3IgdmFyaW91c1xuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfa2luZH0gW3B0eXBlX2tpbmRdfSBhbmRcbiAgICB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fSBbcHR5cGVfbWFuaWZlc3RdfSB2YWx1ZXM6XG5cbiAgICAtIFt0eXBlIHRdIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVxuICAgICAgW1B0eXBlX2Fic3RyYWN0XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IEMgb2YgVCB8IC4uLl0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH1cbiAgICAgIFtQdHlwZV92YXJpYW50XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLl0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9IFtQdHlwZV92YXJpYW50XX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtTb21lIFQwXSxcbiAgICAtIFt0eXBlIHQgPSB7bDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfcmVjb3JkfVxuICAgICAgW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0sXG4gICAgLSBbdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn1dIHdoZW4gW3R5cGVfa2luZF0gaXNcbiAgICAgIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9IFtQdHlwZV9yZWNvcmRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IC4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9vcGVufSBbUHR5cGVfb3Blbl19LFxuICAgICAgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLiAqKVxuXG5hbmQgdHlwZV9raW5kID0gUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIHwgUHR5cGVfYWJzdHJhY3RcbiAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgfCBQdHlwZV9vcGVuXG5cbmFuZCBsYWJlbF9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9IHtcbiAgcGxkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbGRfbXV0YWJsZSA6IG11dGFibGVfZmxhZztcbiAgcGxkX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHBsZF9sb2MgOiBsb2NhdGlvbjtcbiAgcGxkX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbQGlkMV0gW0BpZDJdXSAqKVxufVxuKCoqIC0gW3sgLi4uOyBsOiBUOyAuLi4gfV0gd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX0gW3BsZF9tdXRhYmxlXX1cbiAgICAgIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9IFtJbW11dGFibGVdfSxcbiAgICAtIFt7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfV0gd2hlbiB7eyFsYWJlbF9kZWNsYXJhdGlvbi5wbGRfbXV0YWJsZX1cbiAgICAgIFtwbGRfbXV0YWJsZV19IGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19LlxuXG4gICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuXG5hbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPSB7XG4gIHBjZF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNkX3ZhcnMgOiBzdHJpbmcgbG9jIGxpc3Q7XG4gIHBjZF9hcmdzIDogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICBwY2RfcmVzIDogY29yZV90eXBlIG9wdGlvbjtcbiAgcGNkX2xvYyA6IGxvY2F0aW9uO1xuICBwY2RfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn0gcmVwcmVzZW50cyB0aGUgY29uc3RydWN0b3JcbiAgICAgICAgICBhcmd1bWVudHMgb2Y6XG5cbiAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW4gW3JlcyA9IE5vbmVdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgIC0gW0M6IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW11dLFxuICAgICAgICAgIC0gW0M6IFQxICogLi4uICogVG4gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgIC0gW0Mgb2Ygey4uLn1dIHdoZW4gW3JlcyA9IE5vbmVdLCBhbmQgW2FyZ3MgPSBQY3N0cl9yZWNvcmQgWy4uLl1dLFxuICAgICAgICAgIC0gW0M6IHsuLi59IC0+IFQwXSB3aGVuIFtyZXMgPSBTb21lIFQwXSwgYW5kXG4gICAgICAgICAgICBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0uICopXG5cbmFuZCB0eXBlX2V4dGVuc2lvbiA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9IHtcbiAgcHR5ZXh0X3BhdGggOiBsb25naWRlbnRfbG9jO1xuICBwdHlleHRfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICBwdHlleHRfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZztcbiAgcHR5ZXh0X2xvYyA6IGxvY2F0aW9uO1xuICBwdHlleHRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgbmV3IGV4dGVuc2lvbnMgY29uc3RydWN0b3JzIGZvciB0aGUgZXh0ZW5zaXZlIHN1bSB0eXBlIFt0XVxuICAgIChbdHlwZSB0ICs9IC4uLl0pLiAqKVxuXG5hbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IHtcbiAgcGV4dF9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gIHBleHRfbG9jIDogbG9jYXRpb247XG4gIHBleHRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCB0eXBlX2V4Y2VwdGlvbiA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9IHtcbiAgcHR5ZXhuX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBwdHlleG5fbG9jIDogbG9jYXRpb247XG4gIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cbigqKiBEZWZpbml0aW9uIG9mIGEgbmV3IGV4Y2VwdGlvbiAoW2V4Y2VwdGlvbiBFXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9XG4gIHwgUGV4dF9kZWNsIG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldIGRlc2NyaWJlcyBhIG5ldyBleHRlbnNpb25cbiAgICAgICAgICBjb25zdHJ1Y3Rvci4gSXQgY2FuIGJlOlxuXG4gICAgICAgICAge3VsXG4gICAgICAgICAgIHstIFtDIG9mIFQxICogLi4uICogVG5dXG4gICAgICAgICAgICAgIHdoZW46XG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtOb25lXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogVDBdXG4gICAgICAgICAgICAgIHdoZW5cblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICAgey0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgfSAqKVxuICB8IFBleHRfcmViaW5kIG9mIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbUGV4dF9yZWJpbmQoRCldIHJlLWV4cG9ydCB0aGUgY29uc3RydWN0b3IgW0RdIHdpdGggdGhlIG5ldyBuYW1lIFtDXSAqKVxuXG4oKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG5hbmQgY2xhc3NfdHlwZSA9IFBhcnNldHJlZS5jbGFzc190eXBlID0ge1xuICBwY3R5X2Rlc2MgOiBjbGFzc190eXBlX2Rlc2M7XG4gIHBjdHlfbG9jIDogbG9jYXRpb247XG4gIHBjdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfdHlwZV9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIHwgUGN0eV9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogLSBbY11cbiAgICAgICAgICAtIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAoKiogW1BjdHlfYXJyb3cobGJsLCBULCBDVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfSBbTm9sYWJlbF19LFxuICAgICAgICAgIC0gW35sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVxuICAgICAgICAgICAgW0xhYmVsbGVkIGxdfSxcbiAgICAgICAgICAtIFs/bDpUIC0+IENUXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0uICopXG4gIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogWyVpZF0gKilcbiAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGUgICgqKiBbbGV0IG9wZW4gTSBpbiBDVF0gKilcblxuYW5kIGNsYXNzX3NpZ25hdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPSB7XG4gIHBjc2lnX3NlbGYgOiBjb3JlX3R5cGU7XG4gIHBjc2lnX2ZpZWxkcyA6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3NpZ25hdHVyZS5wY3NpZ19zZWxmfSBbcGNzaWdfc2VsZl19IGlzXG4gICAgICB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX2FueX0gW1B0eXBfYW55XX0gKilcblxuYW5kIGNsYXNzX3R5cGVfZmllbGQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9IHtcbiAgcGN0Zl9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICBwY3RmX2xvYyA6IGxvY2F0aW9uO1xuICBwY3RmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgKCoqIFt2YWwgeDogVF0gKilcbiAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgKCoqIFttZXRob2QgeDogVF1cblxuICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9IFtQdHlwX3BvbHldfS4gKilcbiAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCAnYSBjbGFzc19pbmZvcyA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyA9IHtcbiAgcGNpX3ZpcnQgOiB2aXJ0dWFsX2ZsYWc7XG4gIHBjaV9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwY2lfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBjaV9leHByIDogJ2E7XG4gIHBjaV9sb2MgOiBsb2NhdGlvbjtcbiAgcGNpX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19leHByIGNsYXNzX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbY2xhc3MgYyA9IC4uLl1cbiAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgLSBbY2xhc3MgdmlydHVhbCBjID0gLi4uXVxuXG4gICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi4gKilcblxuYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG5hbmQgY2xhc3NfZXhwciA9IFBhcnNldHJlZS5jbGFzc19leHByID0ge1xuICBwY2xfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYztcbiAgcGNsX2xvYyA6IGxvY2F0aW9uO1xuICBwY2xfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZXhwcl9kZXNjID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIHwgUGNsX2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biA/bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1cbiAgICAgICAgICAgIFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IENFXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdLiAqKVxuICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbUGNsX2FwcGx5KENFLCBbKGwxLEUxKSA7IC4uLiA7IChsbixFbildKV0gcmVwcmVzZW50c1xuICAgICAgICAgIFtDRSB+bDE6RTEgLi4uIH5sbjpFbl0uIFtsaV0gY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3JcbiAgICAgICAgICBzdGFydCB3aXRoIFs/XSAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICgqKiBbUGNsX2xldChyZWMsIFsoUDEsIEUxKTsgLi4uIDsgKFBuLCBFbildLCBDRSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfSBbUmVjdXJzaXZlXX0uICopXG4gIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByICAoKiogW2xldCBvcGVuIE0gaW4gQ0VdICopXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID0ge1xuICBwY3N0cl9zZWxmIDogcGF0dGVybjtcbiAgcGNzdHJfZmllbGRzIDogY2xhc3NfZmllbGQgbGlzdDtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcblxuICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgIC0gW29iamVjdCAuLi4gZW5kXSB3aGVuIHt7IWNsYXNzX3N0cnVjdHVyZS5wY3N0cl9zZWxmfSBbcGNzdHJfc2VsZl19IGlzXG4gICAgICB7eyFwYXR0ZXJuX2Rlc2MuUHBhdF9hbnl9IFtQcGF0X2FueV19ICopXG5cbmFuZCBjbGFzc19maWVsZCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCA9IHtcbiAgcGNmX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjO1xuICBwY2ZfbG9jIDogbG9jYXRpb247XG4gIHBjZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbn1cblxuYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgKCoqIFtQY2ZfaW5oZXJpdChmbGFnLCBDRSwgcyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtpbmhlcml0IENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVxuICAgICAgICAgICAgW0ZyZXNoXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCBDRSBhcyB4XSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVxuICAgICAgICAgICAgW0ZyZXNoXX0gYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAtIFtpbmhlcml0ISBDRV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1cbiAgICAgICAgICAgIFtPdmVycmlkZV19IGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfSBbT3ZlcnJpZGVdfSBhbmQgW3NdIGlzIFtTb21lIHhdICopXG4gIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiBbUGNmX3ZhbCh4LGZsYWcsIGtpbmQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbdmFsIHggPSBFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVxuICAgICAgICAgICAgW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9XG4gICAgICAgICAgICBbQ2ZrX2NvbmNyZXRlKEZyZXNoLCBFKV19XG4gICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9IFtJbW11dGFibGVdfSBhbmQgW2tpbmRdIGlzXG4gICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWwoVCldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1cbiAgICAgICAgICAgIFtNdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX0gW011dGFibGVdfSBhbmQgW2tpbmRdIGlzXG4gICAgICAgICAgICB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWwoVCldfSAqKVxuICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAoKiogLSBbbWV0aG9kIHggPSBFXSAoW0VdIGNhbiBiZSBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9XG4gICAgICAgICAgICBbUGV4cF9wb2x5XX0pXG4gICAgICAgICAgLSBbbWV0aG9kIHZpcnR1YWwgeDogVF0gKFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9XG4gICAgICAgICAgICBbUHR5cF9wb2x5XX0pICopXG4gIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uICAoKiogW2luaXRpYWxpemVyIEVdICopXG4gIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCBjbGFzc19maWVsZF9raW5kID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG5hbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbigqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG4oKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV90eXBlID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlID0ge1xuICBwbXR5X2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjO1xuICBwbXR5X2xvYyA6IGxvY2F0aW9uO1xuICBwbXR5X2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV90eXBlX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIHwgUG10eV9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1BtdHlfaWRlbnQoUyldIHJlcHJlc2VudHMgW1NdICopXG4gIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlICAoKiogW3NpZyAuLi4gZW5kXSAqKVxuICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTVQyXSAqKVxuICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0ICAoKiogW01UIHdpdGggLi4uXSAqKVxuICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgfCBQbXR5X2FsaWFzIG9mIGxvbmdpZGVudF9sb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuYW5kIGZ1bmN0b3JfcGFyYW1ldGVyID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgfCBVbml0ICAoKiogWygpXSAqKVxuICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKFggOiBNVCldIHdoZW4gW25hbWVdIGlzIFtTb21lIFhdLFxuICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuYW5kIHNpZ25hdHVyZV9pdGVtID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID0ge1xuICBwc2lnX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICBwc2lnX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXSAqKVxuICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLl0gKilcbiAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzaWdfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uICAoKiogW2V4Y2VwdGlvbiBDIG9mIFRdICopXG4gIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvbiAgKCoqIFttb2R1bGUgWCA6PSBNXSAqKVxuICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gYW5kIFttb2R1bGUgdHlwZSBTXSAqKVxuICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgOj0gIC4uLl0gKilcbiAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb24gICgqKiBbaW5jbHVkZSBNVF0gKilcbiAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi5dICopXG4gIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCBtb2R1bGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID0ge1xuICBwbWRfbmFtZSA6IHN0cmluZyBvcHRpb24gbG9jO1xuICBwbWRfdHlwZSA6IG1vZHVsZV90eXBlO1xuICBwbWRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtTIDogTVRdICopXG5cbmFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPSB7XG4gIHBtc19uYW1lIDogc3RyaW5nIGxvYztcbiAgcG1zX21hbmlmZXN0IDogbG9uZ2lkZW50X2xvYztcbiAgcG1zX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwbXNfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwbXRkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXRkX3R5cGUgOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gIHBtdGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtdGRfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbUyA9IE1UXSxcbiAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHdoZW5cbiAgICAgIHt7IW1vZHVsZV90eXBlX2RlY2xhcmF0aW9uLnBtdGRfdHlwZX0gW3BtdGRfdHlwZV19IGlzIFtOb25lXS4gKilcblxuYW5kICdhIG9wZW5faW5mb3MgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyA9IHtcbiAgcG9wZW5fZXhwciA6ICdhO1xuICBwb3Blbl9vdmVycmlkZSA6IG92ZXJyaWRlX2ZsYWc7XG4gIHBvcGVuX2xvYyA6IGxvY2F0aW9uO1xuICBwb3Blbl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbJ2Egb3Blbl9pbmZvc10gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4hIFhdIHdoZW4ge3shb3Blbl9pbmZvcy5wb3Blbl9vdmVycmlkZX0gW3BvcGVuX292ZXJyaWRlXX0gaXNcbiAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IChzaWxlbmNlcyB0aGUgXCJ1c2VkXG4gICAgICBpZGVudGlmaWVyIHNoYWRvd2luZ1wiIHdhcm5pbmcpXG4gICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5GcmVzaH0gW0ZyZXNoXX0gKilcblxuYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBsb25naWRlbnRfbG9jIG9wZW5faW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4gTS5OXVxuICAgIC0gW29wZW4gTShOKS5PXSAqKVxuXG5hbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcblxuICAgIC0gW29wZW4gTS5OXVxuICAgIC0gW29wZW4gTShOKS5PXVxuICAgIC0gW29wZW4gc3RydWN0IC4uLiBlbmRdICopXG5cbmFuZCAnYSBpbmNsdWRlX2luZm9zID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPSB7XG4gIHBpbmNsX21vZCA6ICdhO1xuICBwaW5jbF9sb2MgOiBsb2NhdGlvbjtcbiAgcGluY2xfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1UXSAqKVxuXG5hbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbigqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNRV0gKilcblxuYW5kIHdpdGhfY29uc3RyYWludCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICB8IFB3aXRoX3R5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbd2l0aCB0eXBlIFgudCA9IC4uLl1cblxuICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2ggdGhlIG5hbWUgb2YgdGhlXG4gICAgICAgICAgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgfCBQd2l0aF9tb2R1bGUgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2MgICgqKiBbd2l0aCBtb2R1bGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlIG9mIGxvbmdpZGVudF9sb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA9IFpdICopXG4gIHwgUHdpdGhfbW9kdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFt3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kXSAqKVxuICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdXSAqKVxuICB8IFB3aXRoX21vZHN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiBsb25naWRlbnRfbG9jXG4gICAgICAoKiogW3dpdGggbW9kdWxlIFguWSA6PSBaXSAqKVxuXG4oKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbmFuZCBtb2R1bGVfZXhwciA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciA9IHtcbiAgcG1vZF9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYztcbiAgcG1vZF9sb2MgOiBsb2NhdGlvbjtcbiAgcG1vZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBtb2R1bGVfZXhwcl9kZXNjID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICB8IFBtb2RfaWRlbnQgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFtYXSAqKVxuICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgfCBQbW9kX2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfZXhwclxuICAgICAgKCoqIFtmdW5jdG9yKFggOiBNVDEpIC0+IE1FXSAqKVxuICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZSAgKCoqIFsoTUUgOiBNVCldICopXG4gIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuYW5kIHN0cnVjdHVyZV9pdGVtID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID0ge1xuICBwc3RyX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICBwc3RyX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl0gd2hlbiBbcmVjXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfSBbTm9ucmVjdXJzaXZlXX0sXG4gICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgKCoqIC0gW3ZhbCB4OiBUXVxuICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgLSBbZXhjZXB0aW9uIEMgPSBNLlhdICopXG4gIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAoKiogW21vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW5dICopXG4gIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uXSAqKVxuICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlcyAgKCoqIFtbJSVpZF1dICopXG5cbmFuZCB2YWx1ZV9iaW5kaW5nID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPSB7XG4gIHB2Yl9wYXQgOiBwYXR0ZXJuO1xuICBwdmJfZXhwciA6IGV4cHJlc3Npb247XG4gIHB2Yl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgcHZiX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgbW9kdWxlX2JpbmRpbmcgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPSB7XG4gIHBtYl9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtYl9leHByIDogbW9kdWxlX2V4cHI7XG4gIHBtYl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgcG1iX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfYmluZGluZ10gcmVwcmVzZW50cyBbbW9kdWxlIFggPSBNRV0gKilcblxuKCoqIHsxIFRvcGxldmVsfSAqKVxuKCoqIHsyIFRvcGxldmVsIHBocmFzZXN9ICopXG5cbmFuZCB0b3BsZXZlbF9waHJhc2UgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmUgICgqKiBbI3VzZV0sIFsjbG9hZF0gLi4uICopXG5cbmFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlID0ge1xuICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gIHBkaXJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID0ge1xuICBwZGlyYV9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2M7XG4gIHBkaXJhX2xvYyA6IGxvY2F0aW9uO1xufVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPVxuICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gIHwgUGRpcl9pZGVudCBvZiBsb25naWRlbnRcbiAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5hbmQgY2FzZXMgPSBjYXNlIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHRyYXZlcnNlXVxuXG5jbGFzcyB2aXJ0dWFsIG1hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gY2hhclxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiBpbnRcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+IHBvc2l0aW9uID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgcG9zX2NudW0gaW5cbiAgICAgICAgeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9XG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGxvY19naG9zdCBpblxuICAgICAgICB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgbG9jIC0+ICdhIGxvYyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHsgdHh0OyBsb2MgfVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGlkZW50IGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIExkb3QgKGEsIGIpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiByZWNfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiBkaXJlY3Rpb25fZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHZpcnR1YWxfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gb3ZlcnJpZGVfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyA9IGZ1biB4IC0+IHhcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIExhYmVsbGVkIGFcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIE9wdGlvbmFsIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+IHZhcmlhbmNlID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ID0gZnVuIHggLT4geFxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIFBjb25zdF9jaGFyIGFcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGluXG4gICAgICAgICAgICBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGIgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+IHBheWxvYWQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQU2lnIGFcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUFR5cCBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBQYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4geyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gY29yZV90eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFB0eXBfdHVwbGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHR5cF9vYmplY3QgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiByb3dfZmllbGQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUmluaGVyaXQgYVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBPaW5oZXJpdCBhXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gcGF0dGVybl9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IFBwYXRfYW55XG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgUHBhdF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBQcGF0X2ludGVydmFsIChhLCBiKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfYXJyYXkgYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2xhenkgYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBQcGF0X3VucGFjayBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHBhdF9leHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXhwX2lkZW50IGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgUGV4cF9mdW5jdGlvbiBhXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGQgaW5cbiAgICAgICAgICAgIFBleHBfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF90cnkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUGV4cF9maWVsZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VxdWVuY2UgKGEsIGIpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfd2hpbGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4cF9jb2VyY2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VuZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXhwX25ldyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfc2V0aW5zdHZhciAoYSwgYilcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfb3ZlcnJpZGUgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUGV4cF9hc3NlcnQgYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGV4cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9uZXd0eXBlIChhLCBiKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX29wZW4gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiBQZXhwX3VucmVhY2hhYmxlXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgaW5cbiAgICAgICAgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBpblxuICAgICAgICB7IGxldF87IGFuZHM7IGJvZHkgfVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgaW5cbiAgICAgICAgeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBpblxuICAgICAgICB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3ZhcmlhbnQgYVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3JlY29yZCBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBQdHlwZV9vcGVuXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3R1cGxlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBpblxuICAgICAgICBsZXQgcGV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQZXh0X3JlYmluZCBhXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBjdHlfc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGMgaW5cbiAgICAgICAgICAgIFBjdHlfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY3R5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgUGN0eV9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfaW5oZXJpdCBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX3ZhbCBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY3RmX21ldGhvZCBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY3RmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYSBjbGFzc19pbmZvcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MgPSBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBjbF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGQgaW5cbiAgICAgICAgICAgIFBjbF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjbF9hcHBseSAoYSwgYilcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBQY2xfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjbF9leHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gY2xhc3NfZmllbGQgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gY2xhc3NfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGluXG4gICAgICAgICAgICBQY2ZfaW5oZXJpdCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl92YWwgYVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX2NvbnN0cmFpbnQgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfaW5pdGlhbGl6ZXIgYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNmX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIENma192aXJ0dWFsIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBDZmtfY29uY3JldGUgKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtdHlfaWRlbnQgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUG10eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUG10eV9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIFBtdHlfdHlwZW9mIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBtdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIE5hbWVkIChhLCBiKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdmFsdWUgYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHNpZ190eXBlIChhLCBiKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX29wZW4gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2luY2x1ZGUgYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzaWdfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgaW5cbiAgICAgICAgeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGluXG4gICAgICAgIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdhIG9wZW5faW5mb3MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gd2l0aF9jb25zdHJhaW50ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2RzdWJzdCAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFBtb2Rfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBQbW9kX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBtb2RfdW5wYWNrIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGluXG4gICAgICAgIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9XG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc3RyX2V2YWwgKGEsIGIpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9wcmltaXRpdmUgYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3R5cGV4dCBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgUHN0cl9yZWNtb2R1bGUgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R0eXBlIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9jbGFzcyBhXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgUHN0cl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBpblxuICAgICAgICB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBQdG9wX2RpciBhXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBkaXJfc3RyaW5nIGFcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIFBkaXJfaWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBQZGlyX2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gY2FzZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIGl0ZXIgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxpc3QgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvbiA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2Egb3B0aW9uIC0+IHVuaXRcbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdW5pdFxuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIHNlbGYjc3RyaW5nIHBvc19mbmFtZTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2xudW07XG4gICAgICAgIHNlbGYjaW50IHBvc19ib2w7XG4gICAgICAgIHNlbGYjaW50IHBvc19jbnVtXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQ7XG4gICAgICAgIHNlbGYjcG9zaXRpb24gbG9jX2VuZDtcbiAgICAgICAgc2VsZiNib29sIGxvY19naG9zdFxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBsb2MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIF9hIHR4dDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBsb2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGE7XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBiXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50IGJcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiB1bml0ID0gc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gdW5pdCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPiBzZWxmI2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNsb2NhdGlvbiBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZTtcbiAgICAgICAgc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBhdHRyX2xvY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgc2VsZiNwYXlsb2FkIGJcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBTaWcgYSAtPiBzZWxmI3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYTtcbiAgICAgICAgICAgIHNlbGYjY2xvc2VkX2ZsYWcgYjtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY1xuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT4gc2VsZiNwYWNrYWdlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgYlxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHJmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2Jvb2wgYjtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb2ZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT4gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29uc3RhbnQgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RhbnQgYlxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiKVxuICAgICAgICAgICAgICBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBiXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPiBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPiBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPiBzZWxmI2Nhc2VzIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBjO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGRcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiKVxuICAgICAgICAgICAgICBiXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2FzZXMgYlxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGM7XG4gICAgICAgICAgICBzZWxmI2RpcmVjdGlvbl9mbGFnIGQ7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBiXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVjbGFyYXRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+IHNlbGYjbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKClcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwY19saHM7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBjX3Joc1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gdW5pdCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgc2VsZiNiaW5kaW5nX29wIGxldF87XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcztcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIGJvZHlcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wO1xuICAgICAgICBzZWxmI3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwYm9wX2xvY1xuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lO1xuICAgICAgICBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW07XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHZhbF9sb2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGMpXG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgIHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKClcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZTtcbiAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHBsZF90eXBlO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lO1xuICAgICAgICBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycztcbiAgICAgICAgc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aDtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWU7XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3R5X2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNjbGFzc19zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2FyZ19sYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBjXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPiBzZWxmI2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgYztcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgZClcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgYztcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgZClcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGNsYXNzX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHBjaV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lO1xuICAgICAgICBfYSBwY2lfZXhwcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2lfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uIDogY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2xfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYjtcbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBjO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGRcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGNcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGJcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgYlxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6IGNsYXNzX3N0cnVjdHVyZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjbXV0YWJsZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjY2xhc3NfZmllbGRfa2luZCBjKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICAgIHNlbGYjcHJpdmF0ZV9mbGFnIGI7XG4gICAgICAgICAgICAgIHNlbGYjY2xhc3NfZmllbGRfa2luZCBjKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNvdmVycmlkZV9mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYlxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKClcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHNpZ19sb2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1kX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZTtcbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdDtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtc19sb2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWU7XG4gICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2Egb3Blbl9pbmZvcyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBfYSBwb3Blbl9leHByO1xuICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBfYSBwaW5jbF9tb2Q7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGluY2xfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGJcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI21vZHVsZV9leHByIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc3RyX2xvY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYlxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGJcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3BhdHRlcm4gcHZiX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHB2Yl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcHZiX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZTtcbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBtYl9sb2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+IHNlbGYjc3RydWN0dXJlIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGRpcl9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPiBzZWxmI2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydhY2NdIGZvbGQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdhY2MgLT4gJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgbGlzdCAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBvcHRpb24gLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ2FjYyAtPiAnYWNjXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19sbnVtIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2JvbCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW50IHBvc19jbnVtIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2Nfc3RhcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19lbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsb2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBfYSB0eHQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogbG9uZ2lkZW50X2xvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IGFjY1xuICAgICAgICB8IExhYmVsbGVkIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogY29uc3RhbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPiBzZWxmI2NoYXIgYSBhY2NcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBiIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBTaWcgYSAtPiBzZWxmI3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBUeXAgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gYWNjXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhIGFjY1xuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFJpbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9mX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gYWNjXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGEgYWNjXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPiBzZWxmI3BhdHRlcm4gYSBhY2NcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2NcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogZXhwcmVzc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYSBhY2NcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhIGFjY1xuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IGFjY1xuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwY19saHMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcGNfcmhzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gYWNjXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IGFjY1xuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGFjY1xuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3NpZ25hdHVyZSA6IGNsYXNzX3NpZ25hdHVyZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPiBzZWxmI2NsYXNzX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgZCBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cbiAgICAgICAgICBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBkIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT4gc2VsZiNleHRlbnNpb24gYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGEgYWNjXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBhY2NcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT4gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT4gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT4gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT4gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtb2RfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjY1xuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPiBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudCBhIGFjY1xuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhIGFjY1xuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZF9tYXAgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IGJvb2wgLT4gJ2FjYyAtPiBib29sICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiBjaGFyIC0+ICdhY2MgLT4gY2hhciAqICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiBpbnQgKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT4gJ2EgbGlzdCAtPiAnYWNjIC0+ICdhIGxpc3QgKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBvcHRpb24gLT4gJ2FjYyAtPiAnYSBvcHRpb24gKiAnYWNjXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiBzdHJpbmcgLT4gJ2FjYyAtPiBzdHJpbmcgKiAnYWNjXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAnYWNjIC0+IHBvc2l0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lLCBhY2MgPSBzZWxmI3N0cmluZyBwb3NfZm5hbWUgYWNjIGluXG4gICAgICAgIGxldCBwb3NfbG51bSwgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBwb3NfYm9sLCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgcG9zX2NudW0sIGFjYyA9IHNlbGYjaW50IHBvc19jbnVtIGFjYyBpblxuICAgICAgICAoeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAnYWNjIC0+IGxvY2F0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IGFjYyAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0LCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGxvY19lbmQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCwgYWNjID0gc2VsZiNib29sIGxvY19naG9zdCBhY2MgaW5cbiAgICAgICAgKHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiBsb2NhdGlvbl9zdGFjayAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsb2MgLT4gJ2FjYyAtPiAnYSBsb2MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCB0eHQsIGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGxvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBsb2MgYWNjIGluXG4gICAgICAgICh7IHR4dDsgbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiBsb25naWRlbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGlkZW50IGEsIGFjYylcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChMZG90IChhLCBiKSwgYWNjKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGIgYWNjIGluXG4gICAgICAgICAgICAoTGFwcGx5IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gbG9uZ2lkZW50X2xvYyAqICdhY2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+ICdhY2MgLT4gcmVjX2ZsYWcgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAnYWNjIC0+IGRpcmVjdGlvbl9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gJ2FjYyAtPiBwcml2YXRlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAnYWNjIC0+IG11dGFibGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gdmlydHVhbF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAnYWNjIC0+IG92ZXJyaWRlX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ2FjYyAtPiBjbG9zZWRfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+IGxhYmVsICogJ2FjYyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdhY2MgLT4gYXJnX2xhYmVsICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoTm9sYWJlbCwgYWNjKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKExhYmVsbGVkIGEsIGFjYylcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChPcHRpb25hbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAnYWNjIC0+IHZhcmlhbmNlICogJ2FjYyA9IGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ2FjYyAtPiBpbmplY3Rpdml0eSAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+IGNvbnN0YW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfaW50ZWdlciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjaGFyIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2NoYXIgYSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9mbG9hdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiBhdHRyaWJ1dGUgLT4gJ2FjYyAtPiBhdHRyaWJ1dGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQsIGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhdHRyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiBleHRlbnNpb24gKiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgICgoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiAnYWNjIC0+IGF0dHJpYnV0ZXMgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gcGF5bG9hZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFN0ciBhLCBhY2MpXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU2lnIGEsIGFjYylcbiAgICAgICAgfCBQVHlwIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBUeXAgYSwgYWNjKVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUFBhdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gJ2FjYyAtPiBjb3JlX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYywgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gY29yZV90eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiAoUHR5cF9hbnksIGFjYylcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3ZhciBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2Fycm93IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfY29uc3RyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX29iamVjdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfY2xhc3MgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX3BvbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcGFja2FnZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9leHRlbnNpb24gYSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+IHBhY2thZ2VfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAnYWNjIC0+IHJvd19maWVsZCAqICdhY2MgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcmZfZGVzYywgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+IHJvd19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNib29sIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUnRhZyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChSaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+ICdhY2MgLT4gb2JqZWN0X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvZl9kZXNjLCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG9mX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzY1xuICAgICAgICA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE90YWcgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoT2luaGVyaXQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdhY2MgLT4gcGF0dGVybiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjLCBhY2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiBwYXR0ZXJuX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoUHBhdF9hbnksIGFjYylcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhciBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfYWxpYXMgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RhbnQgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb25zdGFudCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RhbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2ludGVydmFsIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RydWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF92YXJpYW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcGF0dGVybiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9yZWNvcmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9vciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9sYXp5IGEsIGFjYylcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdW5wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9vcGVuIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gZXhwcmVzc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrLCBhY2MgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ2FjYyAtPiBleHByZXNzaW9uX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Nhc2VzIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mdW5jdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZCBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1biAoYSwgYiwgYywgZCksIGFjYylcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9tYXRjaCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nhc2VzIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90cnkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RydWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF92YXJpYW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZmllbGQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NldGZpZWxkIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2FycmF5IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXF1ZW5jZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfd2hpbGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGFjYyBpblxuICAgICAgICAgICAgbGV0IGUsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBlIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlbmQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbmV3IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0aW5zdHZhciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfb3ZlcnJpZGUgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9hc3NlcnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sYXp5IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3BvbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9vYmplY3QgYSwgYWNjKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbmV3dHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3BhY2sgYSwgYWNjKVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29wZW4gKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsZXRvcCBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0b3AgYSwgYWNjKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IChQZXhwX3VucmVhY2hhYmxlLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiBjYXNlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjX2xocywgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgYWNjIGluXG4gICAgICAgIGxldCBwY19yaHMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgICh7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiAnYWNjIC0+IGxldG9wICogJ2FjYyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gYWNjIC0+XG4gICAgICAgIGxldCBsZXRfLCBhY2MgPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBhY2MgaW5cbiAgICAgICAgbGV0IGFuZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBhY2MgaW5cbiAgICAgICAgbGV0IGJvZHksIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGFjYyBpblxuICAgICAgICAoeyBsZXRfOyBhbmRzOyBib2R5IH0sIGFjYylcblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogYmluZGluZ19vcCAtPiAnYWNjIC0+IGJpbmRpbmdfb3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBib3Bfb3AsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3AgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCwgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9leHAsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwYm9wX2V4cCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBib3BfbG9jIGFjYyBpblxuICAgICAgICAoeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcHZhbF90eXBlLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwdmFsX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0sIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBwdmFsX3ByaW0gYWNjIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmFsX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjbG9jYXRpb24gYyBhY2MgaW5cbiAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCwgYWNjID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCwgYWNjID1cbiAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdCBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvYyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdhY2MgLT4gdHlwZV9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBhY2MpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV92YXJpYW50IGEsIGFjYylcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cGVfcmVjb3JkIGEsIGFjYylcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBhY2MpXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGxkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlIGFjYyBpblxuICAgICAgICBsZXQgcGxkX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHBsZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcGxkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbGRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzLCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBwY2RfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogY29uc3RydWN0b3JfYXJndW1lbnRzIC0+ICdhY2MgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjc3RyX3R1cGxlIGEsIGFjYylcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfcmVjb3JkIGEsIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gdHlwZV9leHRlbnNpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ2FjYyAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCwgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBwZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ2FjYyAtPiB0eXBlX2V4Y2VwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yLCBhY2MgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvciBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXhuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGV4dF9kZWNsIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X3JlYmluZCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgLT4gJ2FjYyAtPiBjbGFzc190eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYywgYWNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0eV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9zaWduYXR1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gY2xhc3Nfc2lnbmF0dXJlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYsIGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHMgYWNjXG4gICAgICAgIGluXG4gICAgICAgICh7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYywgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2luaGVyaXQgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgZCksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl92YWwgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjLCBkKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYywgZCksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGN0Zl9tZXRob2QgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX2NvbnN0cmFpbnQgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3RmX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgLT5cbiAgICAgICAgICAnYWNjIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGFjYyBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9leHByLCBhY2MgPSBfYSBwY2lfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICggeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9LFxuICAgICAgICAgIGFjYyApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb25cbiAgICAgICAgOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IGNsYXNzX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAnYWNjIC0+IGNsYXNzX2V4cHIgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNsX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcGNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiBjbGFzc19leHByX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfc3RydWN0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgZCwgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2Z1biAoYSwgYiwgYywgZCksIGFjYylcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNsX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdhY2MgLT4gY2xhc3Nfc3RydWN0dXJlICogJ2FjYyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYsIGFjYyA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGFjYyBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgICh7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdhY2MgLT4gY2xhc3NfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5oZXJpdCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgYSwgYWNjKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX2NvbnN0cmFpbnQgYSwgYWNjKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2luaXRpYWxpemVyIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZFxuICAgICAgICA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9raW5kICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoQ2ZrX3ZpcnR1YWwgYSwgYWNjKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfY29uY3JldGUgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNsYXNzX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICAoUG10eV93aXRoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV90eXBlb2YgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2FsaWFzIGEsIGFjYylcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlclxuICAgICAgICA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdhY2MgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IChVbml0LCBhY2MpXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChOYW1lZCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiBzaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MsIGFjYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdmFsdWUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZXN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfdHlwZXh0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfZXhjZXB0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2RzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfcmVjbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19tb2R0eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19vcGVuIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2NsYXNzIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX2NsYXNzX3R5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfZXh0ZW5zaW9uIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1kX25hbWUsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbWRfdHlwZSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbWRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtc19uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbXNfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgYWNjIGluXG4gICAgICAgICh7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbXRkX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXRkX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByLCBhY2MgPSBfYSBwb3Blbl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICA6IG9wZW5fZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiBvcGVuX2Rlc2NyaXB0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvblxuICAgICAgICA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBvcGVuX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zICogJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kLCBhY2MgPSBfYSBwaW5jbF9tb2QgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGluY2xfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAnYWNjIC0+IHdpdGhfY29uc3RyYWludCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdWxlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX3R5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2RzdWJzdCAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdhY2MgLT4gbW9kdWxlX2V4cHIgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjLCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1vZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzY1xuICAgICAgICA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwcl9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZnVuY3RvciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfdW5wYWNrIGEsIGFjYylcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gc3RydWN0dXJlICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjLCBhY2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfdmFsdWUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3ByaW1pdGl2ZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl90eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9tb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcmVjbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHR5cGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9vcGVuIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2luY2x1ZGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfYXR0cmlidXRlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXh0ZW5zaW9uIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gdmFsdWVfYmluZGluZyAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdmJfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgcHZiX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ2FjYyAtPiBtb2R1bGVfYmluZGluZyAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1iX25hbWUsIGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbWJfZXhwciwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwbWJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgYWNjIGluXG4gICAgICAgICh7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAnYWNjIC0+IHRvcGxldmVsX3BocmFzZSAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGVmIGEsIGFjYylcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQdG9wX2RpciBhLCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwZGlyX2FyZywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgYWNjIGluXG4gICAgICAgIGxldCBwZGlyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyYV9kZXNjLCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ2FjYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfc3RyaW5nIGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pZGVudCBhLCBhY2MpXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2Jvb2wgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2Jvb2wgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ2FjYyAtPiBjYXNlcyAqICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnY3R4XSBtYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAnY3R4IC0+IGJvb2wgLT4gYm9vbFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhclxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6ICdjdHggLT4gaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2EgbGlzdCAtPiAnYSBsaXN0XG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EpIC0+ICdjdHggLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvblxuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogJ2N0eCAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUgPSBzZWxmI3N0cmluZyBjdHggcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IGN0eCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IGN0eCBwb3NfYm9sIGluXG4gICAgICAgIGxldCBwb3NfY251bSA9IHNlbGYjaW50IGN0eCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gY3R4IGxvY19lbmQgaW5cbiAgICAgICAgbGV0IGxvY19naG9zdCA9IHNlbGYjYm9vbCBjdHggbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgTGlkZW50IGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICBMYXBwbHkgKGEsIGIpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6ICdjdHggLT4gbG9uZ2lkZW50X2xvYyAtPiBsb25naWRlbnRfbG9jID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiAnY3R4IC0+IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiAnY3R4IC0+IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID1cbiAgICAgIGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6ICdjdHggLT4gcHJpdmF0ZV9mbGFnIC0+IHByaXZhdGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogJ2N0eCAtPiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6ICdjdHggLT4gb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID1cbiAgICAgIGZ1biBfY3R4IHggLT4geFxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogJ2N0eCAtPiBjbG9zZWRfZmxhZyAtPiBjbG9zZWRfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6ICdjdHggLT4gYXJnX2xhYmVsIC0+IGFyZ19sYWJlbCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBOb2xhYmVsXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIE9wdGlvbmFsIGFcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6ICdjdHggLT4gdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4gX2N0eCB4IC0+IHhcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiAnY3R4IC0+IGluamVjdGl2aXR5IC0+IGluamVjdGl2aXR5ID0gZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiAnY3R4IC0+IGNvbnN0YW50IC0+IGNvbnN0YW50ID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICBQY29uc3RfaW50ZWdlciAoYSwgYilcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBjdHggYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9mbG9hdCAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgPVxuICAgICAgZnVuIGN0eCB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgY3R4IGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBhdHRyX2xvYyBpblxuICAgICAgICB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgY3R4IGIgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6ICdjdHggLT4gYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiAnY3R4IC0+IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQU3RyIGFcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUFR5cCBhXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiAnY3R4IC0+IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogJ2N0eCAtPiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3ZhciBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9vYmplY3QgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudCAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfcGFja2FnZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6ICdjdHggLT4gcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgY3R4IHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHJmX2xvYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUnRhZyAoYSwgYiwgYylcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogJ2N0eCAtPiBvYmplY3RfZmllbGQgLT4gb2JqZWN0X2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIGN0eCBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IG9iamVjdF9maWVsZF9kZXNjIC0+IG9iamVjdF9maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBPdGFnIChhLCBiKVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogJ2N0eCAtPiBwYXR0ZXJuIC0+IHBhdHRlcm4gPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiAnY3R4IC0+IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IFBwYXRfYW55XG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF92YXIgYVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9hbGlhcyAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9jb25zdGFudCBhXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2ludGVydmFsIChhLCBiKVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R1cGxlIGFcbiAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9vciAoYSwgYilcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF90eXBlIGFcbiAgICAgICAgfCBQcGF0X2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3VucGFjayBhXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6ICdjdHggLT4gZXhwcmVzc2lvbiAtPiBleHByZXNzaW9uID1cbiAgICAgIGZ1biBjdHggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eCBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogJ2N0eCAtPiBleHByZXNzaW9uX2Rlc2MgLT4gZXhwcmVzc2lvbl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2lkZW50IGFcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9jb25zdGFudCBhXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0IChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGQgaW5cbiAgICAgICAgICAgIFBleHBfZnVuIChhLCBiLCBjLCBkKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX21hdGNoIChhLCBiKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF90cnkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfdHVwbGUgYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9maWVsZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9hcnJheSBhXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfc2VxdWVuY2UgKGEsIGIpXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBjdHggZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGUgaW5cbiAgICAgICAgICAgIFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKVxuICAgICAgICB8IFBleHBfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9jb2VyY2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX25ldyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfb3ZlcnJpZGUgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9hc3NlcnQgYVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sYXp5IGFcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9wb2x5IChhLCBiKVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfb2JqZWN0IGFcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9uZXd0eXBlIChhLCBiKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfcGFjayBhXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX29wZW4gKGEsIGIpXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbGV0b3AgYVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgPVxuICAgICAgZnVuIGN0eCB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gY3R4IHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX2d1YXJkIGluXG4gICAgICAgIGxldCBwY19yaHMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wID1cbiAgICAgIGZ1biBjdHggeyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgY3R4IGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGN0eCBhbmRzIGluXG4gICAgICAgIGxldCBib2R5ID0gc2VsZiNleHByZXNzaW9uIGN0eCBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wID1cbiAgICAgIGZ1biBjdHggeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gY3R4IHBib3BfcGF0IGluXG4gICAgICAgIGxldCBwYm9wX2V4cCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGJvcF9sb2MgaW5cbiAgICAgICAgeyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIGN0eCB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIGN0eCBwdmFsX3ByaW0gaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlwZV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gY3R4IGMgaW5cbiAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICB7XG4gICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBQdHlwZV9hYnN0cmFjdFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBlX3JlY29yZCBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiBQdHlwZV9vcGVuXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBjdHggcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBsZF90eXBlIGluXG4gICAgICAgIGxldCBwbGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IHBjZF92YXJzIGluXG4gICAgICAgIGxldCBwY2RfYXJncyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNkX2xvYyBpblxuICAgICAgICBsZXQgcGNkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3R1cGxlIGFcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfcmVjb3JkIGFcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6ICdjdHggLT4gdHlwZV9leHRlbnNpb24gLT4gdHlwZV9leHRlbnNpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4gY3R4IHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBjdHggcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6ICdjdHggLT4gdHlwZV9leGNlcHRpb24gLT4gdHlwZV9leGNlcHRpb24gPVxuICAgICAgZnVuIGN0eCB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXh0X2RlY2wgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogJ2N0eCAtPiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogJ2N0eCAtPiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGN0eV9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogJ2N0eCAtPiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjLCBkKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBjbGFzc19pbmZvcyAtPiAnYSBjbGFzc19pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4XG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvbiA6ICdjdHggLT4gY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogJ2N0eCAtPiBjbGFzc19leHByIC0+IGNsYXNzX2V4cHIgPVxuICAgICAgZnVuIGN0eCB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIGN0eCBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogJ2N0eCAtPiBjbGFzc19leHByX2Rlc2MgLT4gY2xhc3NfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGQgaW5cbiAgICAgICAgICAgIFBjbF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHJhaW50IChhLCBiKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6ICdjdHggLT4gY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6ICdjdHggLT4gY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICBQY2ZfaW5oZXJpdCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9tZXRob2QgYVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfaW5pdGlhbGl6ZXIgYVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgUGNmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIENma192aXJ0dWFsIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX2V4cHJcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZSA6ICdjdHggLT4gbW9kdWxlX3R5cGUgLT4gbW9kdWxlX3R5cGUgPVxuICAgICAgZnVuIGN0eCB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgY3R4IHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2Rlc2MgLT4gbW9kdWxlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBjdHggYiBpblxuICAgICAgICAgICAgUG10eV93aXRoIChhLCBiKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2FsaWFzIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6ICdjdHggLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gVW5pdFxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE5hbWVkIChhLCBiKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogJ2N0eCAtPiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4gY3R4IHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgY3R4IHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdmFsdWUgYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3R5cGV4dCBhXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R1bGUgYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kc3Vic3QgYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfbW9kdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2luY2x1ZGUgYVxuICAgICAgICB8IFBzaWdfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzcyBhXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtZF9sb2MgaW5cbiAgICAgICAgeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1zX2xvYyBpblxuICAgICAgICB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcGVuX2luZm9zIC0+ICdhIG9wZW5faW5mb3MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIGN0eCBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiAnY3R4IC0+IG9wZW5fZGVzY3JpcHRpb24gLT4gb3Blbl9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6ICdjdHggLT4gb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIGN0eCBwaW5jbF9tb2QgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiAnY3R4IC0+IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R1bGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHR5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2RzdWJzdCAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6ICdjdHggLT4gbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIGN0eCB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgY3R4IHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiAnY3R4IC0+IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9pZGVudCBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfdW5wYWNrIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogJ2N0eCAtPiBzdHJ1Y3R1cmUgLT4gc3RydWN0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9XG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfdmFsdWUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R0eXBlIGFcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfb3BlbiBhXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9pbmNsdWRlIGFcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6ICdjdHggLT4gdmFsdWVfYmluZGluZyAtPiB2YWx1ZV9iaW5kaW5nID1cbiAgICAgIGZ1biBjdHggeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6ICdjdHggLT4gbW9kdWxlX2JpbmRpbmcgLT4gbW9kdWxlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1iX2xvYyBpblxuICAgICAgICB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6ICdjdHggLT4gdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kZWYgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiAnY3R4IC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgY3R4IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50IC0+IGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIGN0eCBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyYV9sb2MgaW5cbiAgICAgICAgeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBkaXJfaW50IChhLCBiKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2Jvb2wgYVxuXG4gICAgbWV0aG9kIGNhc2VzIDogJ2N0eCAtPiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydyZXNdIGxpZnQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ3JlcyBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBvcHRpb24gLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBwb3NfbG51bSBpblxuICAgICAgICBsZXQgcG9zX2JvbCA9IHNlbGYjaW50IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgcG9zX2NudW0gaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb3NfZm5hbWVcIiwgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgIChcInBvc19sbnVtXCIsIHBvc19sbnVtKTtcbiAgICAgICAgICAgIChcInBvc19ib2xcIiwgcG9zX2JvbCk7XG4gICAgICAgICAgICAoXCJwb3NfY251bVwiLCBwb3NfY251bSk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBpblxuICAgICAgICBsZXQgbG9jX2VuZCA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGxvY19naG9zdCBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBsb2Nfc3RhcnQpO1xuICAgICAgICAgICAgKFwibG9jX2VuZFwiLCBsb2NfZW5kKTtcbiAgICAgICAgICAgIChcImxvY19naG9zdFwiLCBsb2NfZ2hvc3QpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6IGxvY2F0aW9uX3N0YWNrIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvYyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgbG9jIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInR4dFwiLCB0eHQpOyAoXCJsb2NcIiwgbG9jKSBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMZG90XCIgWyBhOyBiIF1cbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYXBwbHlcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdyZXMgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25yZWN1cnNpdmUgLT4gc2VsZiNjb25zdHIgXCJOb25yZWN1cnNpdmVcIiBbXVxuICAgICAgICB8IFJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIlJlY3Vyc2l2ZVwiIFtdXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiBkaXJlY3Rpb25fZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVwdG8gLT4gc2VsZiNjb25zdHIgXCJVcHRvXCIgW11cbiAgICAgICAgfCBEb3dudG8gLT4gc2VsZiNjb25zdHIgXCJEb3dudG9cIiBbXVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFByaXZhdGUgLT4gc2VsZiNjb25zdHIgXCJQcml2YXRlXCIgW11cbiAgICAgICAgfCBQdWJsaWMgLT4gc2VsZiNjb25zdHIgXCJQdWJsaWNcIiBbXVxuXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IEltbXV0YWJsZSAtPiBzZWxmI2NvbnN0ciBcIkltbXV0YWJsZVwiIFtdXG4gICAgICAgIHwgTXV0YWJsZSAtPiBzZWxmI2NvbnN0ciBcIk11dGFibGVcIiBbXVxuXG4gICAgbWV0aG9kIHZpcnR1YWxfZmxhZyA6IHZpcnR1YWxfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFZpcnR1YWwgLT4gc2VsZiNjb25zdHIgXCJWaXJ0dWFsXCIgW11cbiAgICAgICAgfCBDb25jcmV0ZSAtPiBzZWxmI2NvbnN0ciBcIkNvbmNyZXRlXCIgW11cblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE92ZXJyaWRlIC0+IHNlbGYjY29uc3RyIFwiT3ZlcnJpZGVcIiBbXVxuICAgICAgICB8IEZyZXNoIC0+IHNlbGYjY29uc3RyIFwiRnJlc2hcIiBbXVxuXG4gICAgbWV0aG9kIGNsb3NlZF9mbGFnIDogY2xvc2VkX2ZsYWcgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDbG9zZWQgLT4gc2VsZiNjb25zdHIgXCJDbG9zZWRcIiBbXVxuICAgICAgICB8IE9wZW4gLT4gc2VsZiNjb25zdHIgXCJPcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdyZXMgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gc2VsZiNjb25zdHIgXCJOb2xhYmVsXCIgW11cbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTGFiZWxsZWRcIiBbIGEgXVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPcHRpb25hbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENvdmFyaWFudCAtPiBzZWxmI2NvbnN0ciBcIkNvdmFyaWFudFwiIFtdXG4gICAgICAgIHwgQ29udHJhdmFyaWFudCAtPiBzZWxmI2NvbnN0ciBcIkNvbnRyYXZhcmlhbnRcIiBbXVxuICAgICAgICB8IE5vVmFyaWFuY2UgLT4gc2VsZiNjb25zdHIgXCJOb1ZhcmlhbmNlXCIgW11cblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6IGluamVjdGl2aXR5IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW5qZWN0aXZlIC0+IHNlbGYjY29uc3RyIFwiSW5qZWN0aXZlXCIgW11cbiAgICAgICAgfCBOb0luamVjdGl2aXR5IC0+IHNlbGYjY29uc3RyIFwiTm9JbmplY3Rpdml0eVwiIFtdXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9pbnRlZ2VyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9jaGFyXCIgWyBhIF1cbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9zdHJpbmdcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY29uc3RfZmxvYXRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyB9IC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBhdHRyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBhdHRyX25hbWUpO1xuICAgICAgICAgICAgKFwiYXR0cl9wYXlsb2FkXCIsIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAoXCJhdHRyX2xvY1wiLCBhdHRyX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGIgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBTdHJcIiBbIGEgXVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBTaWdcIiBbIGEgXVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBUeXBcIiBbIGEgXVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBQYXRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIHB0eXBfZGVzYyk7XG4gICAgICAgICAgICAoXCJwdHlwX2xvY1wiLCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlwX2xvY19zdGFja1wiLCBwdHlwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgcHR5cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IHNlbGYjY29uc3RyIFwiUHR5cF9hbnlcIiBbXVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3ZhclwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hcnJvd1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX29iamVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9jbGFzc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfYWxpYXNcIiBbIGE7IGIgXVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3ZhcmlhbnRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX3BhY2thZ2VcIiBbIGEgXVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBiXG4gICAgICAgIGluXG4gICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF1cblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInByZl9kZXNjXCIsIHByZl9kZXNjKTtcbiAgICAgICAgICAgIChcInByZl9sb2NcIiwgcHJmX2xvYyk7XG4gICAgICAgICAgICAoXCJwcmZfYXR0cmlidXRlc1wiLCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogcm93X2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUnRhZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlJpbmhlcml0XCIgWyBhIF1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvZl9kZXNjXCIsIHBvZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBvZl9sb2NcIiwgcG9mX2xvYyk7XG4gICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBwb2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPdGFnXCIgWyBhOyBiIF1cbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiT2luaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHBhdF9kZXNjXCIsIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAoXCJwcGF0X2xvY1wiLCBwcGF0X2xvYyk7XG4gICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBwcGF0X2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwcGF0X2F0dHJpYnV0ZXNcIiwgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgcGF0dGVybl9kZXNjIDogcGF0dGVybl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQcGF0X2FueVwiIFtdXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYWxpYXNcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdGFudFwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2ludGVydmFsXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3JlY29yZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2FycmF5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X29yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3R5cGVcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X29wZW5cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBwZXhwX2xvYyk7XG4gICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBwZXhwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAoXCJwZXhwX2F0dHJpYnV0ZXNcIiwgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4cF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdGFudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mdW5jdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNleHByZXNzaW9uIGQgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9mdW5cIiBbIGE7IGI7IGM7IGQgXVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbWF0Y2hcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF90cnlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RydWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3ZhcmlhbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3JlY29yZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9maWVsZFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXRmaWVsZFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FycmF5XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfaWZ0aGVuZWxzZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZXF1ZW5jZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF93aGlsZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgZCBpblxuICAgICAgICAgICAgbGV0IGUgPSBzZWxmI2V4cHJlc3Npb24gZSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZvclwiIFsgYTsgYjsgYzsgZDsgZSBdXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvZXJjZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9zZW5kXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbmV3XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGluc3R2YXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9vdmVycmlkZVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRtb2R1bGVcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGV0ZXhjZXB0aW9uXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXNzZXJ0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xhenlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3BvbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX29iamVjdFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbmV3dHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcGFja1wiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX29wZW5cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRvcFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IHNlbGYjY29uc3RyIFwiUGV4cF91bnJlYWNoYWJsZVwiIFtdXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjX2xoc1wiLCBwY19saHMpOyAoXCJwY19ndWFyZFwiLCBwY19ndWFyZCk7IChcInBjX3Joc1wiLCBwY19yaHMpIF1cblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGxldF8gaW5cbiAgICAgICAgbGV0IGFuZHMgPSBzZWxmI2xpc3Qgc2VsZiNiaW5kaW5nX29wIGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gYm9keSBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcImxldF9cIiwgbGV0Xyk7IChcImFuZHNcIiwgYW5kcyk7IChcImJvZHlcIiwgYm9keSkgXVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBpblxuICAgICAgICBsZXQgcGJvcF9wYXQgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwYm9wX29wXCIsIHBib3Bfb3ApO1xuICAgICAgICAgICAgKFwicGJvcF9wYXRcIiwgcGJvcF9wYXQpO1xuICAgICAgICAgICAgKFwicGJvcF9leHBcIiwgcGJvcF9leHApO1xuICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgcGJvcF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvbiA6IHZhbHVlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZhbF9uYW1lXCIsIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAoXCJwdmFsX3R5cGVcIiwgcHZhbF90eXBlKTtcbiAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBwdmFsX3ByaW0pO1xuICAgICAgICAgICAgKFwicHZhbF9hdHRyaWJ1dGVzXCIsIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdmFsX2xvY1wiLCBwdmFsX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5cGVfbmFtZVwiLCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgIChcInB0eXBlX3BhcmFtc1wiLCBwdHlwZV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgcHR5cGVfY3N0cnMpO1xuICAgICAgICAgICAgKFwicHR5cGVfa2luZFwiLCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgIChcInB0eXBlX3ByaXZhdGVcIiwgcHR5cGVfcHJpdmF0ZSk7XG4gICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBwdHlwZV9tYW5pZmVzdCk7XG4gICAgICAgICAgICAoXCJwdHlwZV9hdHRyaWJ1dGVzXCIsIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicHR5cGVfbG9jXCIsIHB0eXBlX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IHNlbGYjY29uc3RyIFwiUHR5cGVfYWJzdHJhY3RcIiBbXVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBlX3ZhcmlhbnRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfcmVjb3JkXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IHNlbGYjY29uc3RyIFwiUHR5cGVfb3BlblwiIFtdXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgcGxkX25hbWUpO1xuICAgICAgICAgICAgKFwicGxkX211dGFibGVcIiwgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgKFwicGxkX3R5cGVcIiwgcGxkX3R5cGUpO1xuICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBwbGRfbG9jKTtcbiAgICAgICAgICAgIChcInBsZF9hdHRyaWJ1dGVzXCIsIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWUgaW5cbiAgICAgICAgbGV0IHBjZF92YXJzID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBwY2RfcmVzIGluXG4gICAgICAgIGxldCBwY2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIHBjZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBjZF92YXJzXCIsIHBjZF92YXJzKTtcbiAgICAgICAgICAgIChcInBjZF9hcmdzXCIsIHBjZF9hcmdzKTtcbiAgICAgICAgICAgIChcInBjZF9yZXNcIiwgcGNkX3Jlcyk7XG4gICAgICAgICAgICAoXCJwY2RfbG9jXCIsIHBjZF9sb2MpO1xuICAgICAgICAgICAgKFwicGNkX2F0dHJpYnV0ZXNcIiwgcGNkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjc3RyX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjc3RyX3JlY29yZFwiIFsgYSBdXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGggPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXh0X3BhdGhcIiwgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X3BhcmFtc1wiLCBwdHlleHRfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgcHR5ZXh0X2NvbnN0cnVjdG9ycyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcHJpdmF0ZVwiLCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAoXCJwdHlleHRfbG9jXCIsIHB0eWV4dF9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgcHR5ZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXh0X25hbWVcIiwgcGV4dF9uYW1lKTtcbiAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBwZXh0X2tpbmQpO1xuICAgICAgICAgICAgKFwicGV4dF9sb2NcIiwgcGV4dF9sb2MpO1xuICAgICAgICAgICAgKFwicGV4dF9hdHRyaWJ1dGVzXCIsIHBleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB0eWV4bl9jb25zdHJ1Y3RvclwiLCBwdHlleG5fY29uc3RydWN0b3IpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBwdHlleG5fbG9jKTtcbiAgICAgICAgICAgIChcInB0eWV4bl9hdHRyaWJ1dGVzXCIsIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9kZWNsXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHRfcmViaW5kXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjdHlfZGVzY1wiLCBwY3R5X2Rlc2MpO1xuICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgcGN0eV9sb2MpO1xuICAgICAgICAgICAgKFwicGN0eV9hdHRyaWJ1dGVzXCIsIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfc2lnbmF0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9hcnJvd1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNzaWdfc2VsZlwiLCBwY3NpZ19zZWxmKTsgKFwicGNzaWdfZmllbGRzXCIsIHBjc2lnX2ZpZWxkcykgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0Zl9kZXNjXCIsIHBjdGZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBwY3RmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY3RmX2F0dHJpYnV0ZXNcIiwgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9pbmhlcml0XCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYzsgZCBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYzsgZCBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfbWV0aG9kXCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNpX3ZpcnRcIiwgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgKFwicGNpX3BhcmFtc1wiLCBwY2lfcGFyYW1zKTtcbiAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIHBjaV9uYW1lKTtcbiAgICAgICAgICAgIChcInBjaV9leHByXCIsIHBjaV9leHByKTtcbiAgICAgICAgICAgIChcInBjaV9sb2NcIiwgcGNpX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBwY2lfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjbF9kZXNjXCIsIHBjbF9kZXNjKTtcbiAgICAgICAgICAgIChcInBjbF9sb2NcIiwgcGNsX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBwY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9jb25zdHJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9zdHJ1Y3R1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGQgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGNsX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9hcHBseVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfbGV0XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjbF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3N0cl9zZWxmXCIsIHBjc3RyX3NlbGYpOyAoXCJwY3N0cl9maWVsZHNcIiwgcGNzdHJfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2ZfZGVzY1wiLCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY2ZfbG9jXCIsIHBjZl9sb2MpO1xuICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgcGNmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2luaGVyaXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX3ZhbFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfbWV0aG9kXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfY29uc3RyYWludFwiIFsgYSBdXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNmX2luaXRpYWxpemVyXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJDZmtfdmlydHVhbFwiIFsgYSBdXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJDZmtfY29uY3JldGVcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIHBtdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbXR5X2xvY1wiLCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAoXCJwbXR5X2F0dHJpYnV0ZXNcIiwgcG10eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfc2lnbmF0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X3dpdGhcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfdHlwZW9mXCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2FsaWFzXCIgWyBhIF1cblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBzZWxmI2NvbnN0ciBcIlVuaXRcIiBbXVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk5hbWVkXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSAtPlxuICAgICAgICBsZXQgcHNpZ19kZXNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicHNpZ19kZXNjXCIsIHBzaWdfZGVzYyk7IChcInBzaWdfbG9jXCIsIHBzaWdfbG9jKSBdXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdmFsdWVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3R5cGV4dFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19yZWNtb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX21vZHR5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZXN1YnN0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX29wZW5cIiBbIGEgXVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjaW5jbHVkZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfaW5jbHVkZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc1wiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfY2xhc3NfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfYXR0cmlidXRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4dGVuc2lvblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbWRfbmFtZVwiLCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbWRfdHlwZVwiLCBwbWRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBwbWRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbWRfbG9jXCIsIHBtZF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwbXNfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHBtc19hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBwbXNfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1zX25hbWVcIiwgcG1zX25hbWUpO1xuICAgICAgICAgICAgKFwicG1zX21hbmlmZXN0XCIsIHBtc19tYW5pZmVzdCk7XG4gICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBwbXNfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXNfbG9jXCIsIHBtc19sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGluXG4gICAgICAgIGxldCBwbXRkX3R5cGUgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG10ZF9uYW1lXCIsIHBtdGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgcG10ZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtdGRfYXR0cmlidXRlc1wiLCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgKFwicG10ZF9sb2NcIiwgcG10ZF9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBvcGVuX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgcG9wZW5fZXhwciBpblxuICAgICAgICBsZXQgcG9wZW5fb3ZlcnJpZGUgPSBzZWxmI292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIHBvcGVuX2V4cHIpO1xuICAgICAgICAgICAgKFwicG9wZW5fb3ZlcnJpZGVcIiwgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgKFwicG9wZW5fbG9jXCIsIHBvcGVuX2xvYyk7XG4gICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIHBvcGVuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAncmVzID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBpbmNsX21vZFwiLCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgKFwicGluY2xfbG9jXCIsIHBpbmNsX2xvYyk7XG4gICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIHBpbmNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX3R5cGVzdWJzdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB3aXRoX21vZHN1YnN0XCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtb2RfZGVzY1wiLCBwbW9kX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgcG1vZF9sb2MpO1xuICAgICAgICAgICAgKFwicG1vZF9hdHRyaWJ1dGVzXCIsIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfZnVuY3RvclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfdW5wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc3RyX2Rlc2NcIiwgcHN0cl9kZXNjKTsgKFwicHN0cl9sb2NcIiwgcHN0cl9sb2MpIF1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9ldmFsXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdmFsdWVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfcHJpbWl0aXZlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl90eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGV4dFwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leGNlcHRpb25cIiBbIGEgXVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9yZWNtb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX21vZHR5cGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc1wiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfY2xhc3NfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgaW5cbiAgICAgICAgbGV0IHB2Yl9leHByID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZiX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInB2Yl9wYXRcIiwgcHZiX3BhdCk7XG4gICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBwdmJfZXhwcik7XG4gICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBwdmJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdmJfbG9jXCIsIHB2Yl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1iX25hbWUgaW5cbiAgICAgICAgbGV0IHBtYl9leHByID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtYl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBwbWJfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbWJfZXhwclwiLCBwbWJfZXhwcik7XG4gICAgICAgICAgICAoXCJwbWJfYXR0cmlidXRlc1wiLCBwbWJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbWJfbG9jXCIsIHBtYl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiB0b3BsZXZlbF9waHJhc2UgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHRvcF9kZWZcIiBbIGEgXVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RpclwiIFsgYSBdXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlIDogdG9wbGV2ZWxfZGlyZWN0aXZlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lIGluXG4gICAgICAgIGxldCBwZGlyX2FyZyA9IHNlbGYjb3B0aW9uIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgcGRpcl9uYW1lKTtcbiAgICAgICAgICAgIChcInBkaXJfYXJnXCIsIHBkaXJfYXJnKTtcbiAgICAgICAgICAgIChcInBkaXJfbG9jXCIsIHBkaXJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwicGRpcmFfZGVzY1wiLCBwZGlyYV9kZXNjKTsgKFwicGRpcmFfbG9jXCIsIHBkaXJhX2xvYykgXVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDogZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9zdHJpbmdcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX2Jvb2xcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNhc2VzIDogY2FzZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAnY3R4IC0+IChzdHJpbmcgKiAncmVzKSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjb25zdHIgOiAnY3R4IC0+IHN0cmluZyAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICdjdHggLT4gJ2EgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiAnY3R4IC0+IGJvb2wgLT4gYm9vbCAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogJ2N0eCAtPiBjaGFyIC0+IGNoYXIgKiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50ICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdFxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+ICdjdHggLT4gJ2EgbGlzdCAtPiAnYSBsaXN0ICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uICogJ3Jlc1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogJ2N0eCAtPiBzdHJpbmcgLT4gc3RyaW5nICogJ3Jlc1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogJ2N0eCAtPiBwb3NpdGlvbiAtPiBwb3NpdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9zX2ZuYW1lID0gU3RkbGliLmZzdCBwb3NfZm5hbWU7XG4gICAgICAgICAgICBwb3NfbG51bSA9IFN0ZGxpYi5mc3QgcG9zX2xudW07XG4gICAgICAgICAgICBwb3NfYm9sID0gU3RkbGliLmZzdCBwb3NfYm9sO1xuICAgICAgICAgICAgcG9zX2NudW0gPSBTdGRsaWIuZnN0IHBvc19jbnVtO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBTdGRsaWIuc25kIHBvc19mbmFtZSk7XG4gICAgICAgICAgICAgIChcInBvc19sbnVtXCIsIFN0ZGxpYi5zbmQgcG9zX2xudW0pO1xuICAgICAgICAgICAgICAoXCJwb3NfYm9sXCIsIFN0ZGxpYi5zbmQgcG9zX2JvbCk7XG4gICAgICAgICAgICAgIChcInBvc19jbnVtXCIsIFN0ZGxpYi5zbmQgcG9zX2NudW0pO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiAnY3R4IC0+IGxvY2F0aW9uIC0+IGxvY2F0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBsb2Nfc3RhcnQgPSBTdGRsaWIuZnN0IGxvY19zdGFydDtcbiAgICAgICAgICAgIGxvY19lbmQgPSBTdGRsaWIuZnN0IGxvY19lbmQ7XG4gICAgICAgICAgICBsb2NfZ2hvc3QgPSBTdGRsaWIuZnN0IGxvY19naG9zdDtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsb2Nfc3RhcnRcIiwgU3RkbGliLnNuZCBsb2Nfc3RhcnQpO1xuICAgICAgICAgICAgICAoXCJsb2NfZW5kXCIsIFN0ZGxpYi5zbmQgbG9jX2VuZCk7XG4gICAgICAgICAgICAgIChcImxvY19naG9zdFwiLCBTdGRsaWIuc25kIGxvY19naG9zdCk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbl9zdGFjayA6ICdjdHggLT4gbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsb2MgLT4gJ2EgbG9jICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgdHh0OyBsb2MgfSAtPlxuICAgICAgICBsZXQgdHh0ID0gX2EgY3R4IHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggbG9jIGluXG4gICAgICAgICggeyB0eHQgPSBTdGRsaWIuZnN0IHR4dDsgbG9jID0gU3RkbGliLmZzdCBsb2MgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHggWyAoXCJ0eHRcIiwgU3RkbGliLnNuZCB0eHQpOyAoXCJsb2NcIiwgU3RkbGliLnNuZCBsb2MpIF1cbiAgICAgICAgKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6ICdjdHggLT4gbG9uZ2lkZW50IC0+IGxvbmdpZGVudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoTGlkZW50IChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJMaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIExkb3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGRvdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBjdHggYiBpblxuICAgICAgICAgICAgKCBMYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgKiAncmVzID1cbiAgICAgIHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiAnY3R4IC0+IHJlY19mbGFnIC0+IHJlY19mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgZGlyZWN0aW9uX2ZsYWcgOiAnY3R4IC0+IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogJ2N0eCAtPiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogJ2N0eCAtPiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6ICdjdHggLT4gb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT4gKHgsIHNlbGYjb3RoZXIgY3R4IHgpXG5cbiAgICBtZXRob2QgbGFiZWwgOiAnY3R4IC0+IGxhYmVsIC0+IGxhYmVsICogJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiAoTm9sYWJlbCwgc2VsZiNjb25zdHIgY3R4IFwiTm9sYWJlbFwiIFtdKVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggTGFiZWxsZWQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkxhYmVsbGVkXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBPcHRpb25hbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT3B0aW9uYWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6ICdjdHggLT4gdmFyaWFuY2UgLT4gdmFyaWFuY2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjb25zdF9pbnRlZ2VyIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9pbnRlZ2VyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2hhciBjdHggYSBpblxuICAgICAgICAgICAgKCBQY29uc3RfY2hhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2NoYXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY29uc3Rfc3RyaW5nIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvY2F0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjb25zdF9zdHJpbmcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3Rfc3RyaW5nXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2Zsb2F0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9mbG9hdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogJ2N0eCAtPiBhdHRyaWJ1dGUgLT4gYXR0cmlidXRlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgYXR0cl9uYW1lID0gU3RkbGliLmZzdCBhdHRyX25hbWU7XG4gICAgICAgICAgICBhdHRyX3BheWxvYWQgPSBTdGRsaWIuZnN0IGF0dHJfcGF5bG9hZDtcbiAgICAgICAgICAgIGF0dHJfbG9jID0gU3RkbGliLmZzdCBhdHRyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJhdHRyX25hbWVcIiwgU3RkbGliLnNuZCBhdHRyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgU3RkbGliLnNuZCBhdHRyX3BheWxvYWQpO1xuICAgICAgICAgICAgICAoXCJhdHRyX2xvY1wiLCBTdGRsaWIuc25kIGF0dHJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6ICdjdHggLT4gZXh0ZW5zaW9uIC0+IGV4dGVuc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiAnY3R4IC0+IHBheWxvYWQgLT4gcGF5bG9hZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKFBTdHIgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBTdHJcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKFBTaWcgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBTaWdcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKFBUeXAgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBUeXBcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUFBhdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQUGF0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiAnY3R4IC0+IGNvcmVfdHlwZSAtPiBjb3JlX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdHlwX2Rlc2M7IHB0eXBfbG9jOyBwdHlwX2xvY19zdGFjazsgcHR5cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9IHNlbGYjY29yZV90eXBlX2Rlc2MgY3R4IHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwdHlwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHR5cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSBTdGRsaWIuZnN0IHB0eXBfZGVzYztcbiAgICAgICAgICAgIHB0eXBfbG9jID0gU3RkbGliLmZzdCBwdHlwX2xvYztcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwdHlwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBfZGVzY1wiLCBTdGRsaWIuc25kIHB0eXBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogJ2N0eCAtPiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hbnlcIiBbXSlcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFB0eXBfYXJyb3cgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2Fycm93XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNvYmplY3RfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX29iamVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9jbGFzcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NsYXNzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfYWxpYXMgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9hbGlhc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsaXN0IHNlbGYjbGFiZWwpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFB0eXBfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyaWFudFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9wb2x5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcG9seVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9wYWNrYWdlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYWNrYWdlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9wYWNrYWdlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX3BhY2thZ2VcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6ICdjdHggLT4gcGFja2FnZV90eXBlIC0+IHBhY2thZ2VfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgaW5cbiAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogJ2N0eCAtPiByb3dfZmllbGQgLT4gcm93X2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcmZfZGVzYyA9IFN0ZGxpYi5mc3QgcHJmX2Rlc2M7XG4gICAgICAgICAgICBwcmZfbG9jID0gU3RkbGliLmZzdCBwcmZfbG9jO1xuICAgICAgICAgICAgcHJmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInByZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwcmZfbG9jXCIsIFN0ZGxpYi5zbmQgcHJmX2xvYyk7XG4gICAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHJmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiAnY3R4IC0+IHJvd19maWVsZF9kZXNjIC0+IHJvd19maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFJ0YWcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSdGFnXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBSaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUmluaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIGN0eCBwb2ZfZGVzYyBpblxuICAgICAgICBsZXQgcG9mX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvZl9kZXNjID0gU3RkbGliLmZzdCBwb2ZfZGVzYztcbiAgICAgICAgICAgIHBvZl9sb2MgPSBTdGRsaWIuZnN0IHBvZl9sb2M7XG4gICAgICAgICAgICBwb2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9mX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgU3RkbGliLnNuZCBwb2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBvZl9sb2NcIiwgU3RkbGliLnNuZCBwb2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicG9mX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwb2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIE90YWcgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT3RhZ1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBPaW5oZXJpdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiT2luaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogJ2N0eCAtPiBwYXR0ZXJuIC0+IHBhdHRlcm4gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIGN0eCBwcGF0X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHBhdF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gU3RkbGliLmZzdCBwcGF0X2Rlc2M7XG4gICAgICAgICAgICBwcGF0X2xvYyA9IFN0ZGxpYi5mc3QgcHBhdF9sb2M7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgU3RkbGliLnNuZCBwcGF0X2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwcGF0X2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBwYXRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiAnY3R4IC0+IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiAoUHBhdF9hbnksIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYW55XCIgW10pXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3ZhciAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF92YXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0YW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0YW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfaW50ZXJ2YWwgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9pbnRlcnZhbFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cnVjdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2NvbnN0cnVjdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3ZhcmlhbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF92YXJpYW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9vclwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2xhenkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfbGF6eVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eCBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4cF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gU3RkbGliLmZzdCBwZXhwX2Rlc2M7XG4gICAgICAgICAgICBwZXhwX2xvYyA9IFN0ZGxpYi5mc3QgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFN0ZGxpYi5mc3QgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgU3RkbGliLnNuZCBwZXhwX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY1wiLCBTdGRsaWIuc25kIHBleHBfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgU3RkbGliLnNuZCBwZXhwX2xvY19zdGFjayk7XG4gICAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBleHBfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb25zdGFudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0YW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvbnN0YW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Nhc2VzIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfZnVuY3Rpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZnVuY3Rpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjcGF0dGVybiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGQgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZnVuXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdIClcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGV4cF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX21hdGNoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbWF0Y2hcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3RyeSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3RyeVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfcmVjb3JkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfZmllbGQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9maWVsZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXRmaWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2V0ZmllbGRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2FycmF5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2FycmF5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2lmdGhlbmVsc2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2lmdGhlbmVsc2VcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2VxdWVuY2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXF1ZW5jZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3doaWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfd2hpbGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgKCBQZXhwX2ZvclxuICAgICAgICAgICAgICAgICggU3RkbGliLmZzdCBhLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBiLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBjLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBkLFxuICAgICAgICAgICAgICAgICAgU3RkbGliLmZzdCBlICksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZm9yXCJcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGE7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGI7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGM7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGQ7XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuc25kIGU7XG4gICAgICAgICAgICAgICAgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXVxuICAgICAgICAgICAgKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9jb2VyY2UgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2NvZXJjZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZW5kIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfc2VuZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9uZXcgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbmV3XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGluc3R2YXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRpbnN0dmFyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGV4cF9vdmVycmlkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vdmVycmlkZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0bW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRtb2R1bGVcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0ZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0ZXhjZXB0aW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9hc3NlcnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9hc3NlcnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXNzZXJ0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9wb2x5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfcG9seVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX29iamVjdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9vYmplY3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX25ld3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXd0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfcGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xldG9wIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfbGV0b3AgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0b3BcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgICAgICAgIChQZXhwX3VucmVhY2hhYmxlLCBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3VucmVhY2hhYmxlXCIgW10pXG5cbiAgICBtZXRob2QgY2FzZSA6ICdjdHggLT4gY2FzZSAtPiBjYXNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNfbGhzID0gU3RkbGliLmZzdCBwY19saHM7XG4gICAgICAgICAgICBwY19ndWFyZCA9IFN0ZGxpYi5mc3QgcGNfZ3VhcmQ7XG4gICAgICAgICAgICBwY19yaHMgPSBTdGRsaWIuZnN0IHBjX3JocztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY19saHNcIiwgU3RkbGliLnNuZCBwY19saHMpO1xuICAgICAgICAgICAgICAoXCJwY19ndWFyZFwiLCBTdGRsaWIuc25kIHBjX2d1YXJkKTtcbiAgICAgICAgICAgICAgKFwicGNfcmhzXCIsIFN0ZGxpYi5zbmQgcGNfcmhzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxldG9wIDogJ2N0eCAtPiBsZXRvcCAtPiBsZXRvcCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBsZXRfID0gU3RkbGliLmZzdCBsZXRfO1xuICAgICAgICAgICAgYW5kcyA9IFN0ZGxpYi5mc3QgYW5kcztcbiAgICAgICAgICAgIGJvZHkgPSBTdGRsaWIuZnN0IGJvZHk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwibGV0X1wiLCBTdGRsaWIuc25kIGxldF8pO1xuICAgICAgICAgICAgICAoXCJhbmRzXCIsIFN0ZGxpYi5zbmQgYW5kcyk7XG4gICAgICAgICAgICAgIChcImJvZHlcIiwgU3RkbGliLnNuZCBib2R5KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiAnY3R4IC0+IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBib3Bfb3AgPSBTdGRsaWIuZnN0IHBib3Bfb3A7XG4gICAgICAgICAgICBwYm9wX3BhdCA9IFN0ZGxpYi5mc3QgcGJvcF9wYXQ7XG4gICAgICAgICAgICBwYm9wX2V4cCA9IFN0ZGxpYi5mc3QgcGJvcF9leHA7XG4gICAgICAgICAgICBwYm9wX2xvYyA9IFN0ZGxpYi5mc3QgcGJvcF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGJvcF9vcFwiLCBTdGRsaWIuc25kIHBib3Bfb3ApO1xuICAgICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBTdGRsaWIuc25kIHBib3BfcGF0KTtcbiAgICAgICAgICAgICAgKFwicGJvcF9leHBcIiwgU3RkbGliLnNuZCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAgIChcInBib3BfbG9jXCIsIFN0ZGxpYi5zbmQgcGJvcF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IHZhbHVlX2Rlc2NyaXB0aW9uIC0+IHZhbHVlX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmFsX25hbWUgPSBTdGRsaWIuZnN0IHB2YWxfbmFtZTtcbiAgICAgICAgICAgIHB2YWxfdHlwZSA9IFN0ZGxpYi5mc3QgcHZhbF90eXBlO1xuICAgICAgICAgICAgcHZhbF9wcmltID0gU3RkbGliLmZzdCBwdmFsX3ByaW07XG4gICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB2YWxfbG9jID0gU3RkbGliLmZzdCBwdmFsX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgU3RkbGliLnNuZCBwdmFsX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwdmFsX3R5cGVcIiwgU3RkbGliLnNuZCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwdmFsX3ByaW1cIiwgU3RkbGliLnNuZCBwdmFsX3ByaW0pO1xuICAgICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdmFsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdmFsX2xvY1wiLCBTdGRsaWIuc25kIHB2YWxfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjbG9jYXRpb24gY3R4IGMgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlwZV9jc3Ryc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfa2luZCA9IHNlbGYjdHlwZV9raW5kIGN0eCBwdHlwZV9raW5kIGluXG4gICAgICAgIGxldCBwdHlwZV9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHB0eXBlX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwdHlwZV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlwZV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlwZV9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lID0gU3RkbGliLmZzdCBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gU3RkbGliLmZzdCBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycyA9IFN0ZGxpYi5mc3QgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kID0gU3RkbGliLmZzdCBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2MgPSBTdGRsaWIuZnN0IHB0eXBlX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIFN0ZGxpYi5zbmQgcHR5cGVfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB0eXBlX3BhcmFtc1wiLCBTdGRsaWIuc25kIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2NzdHJzXCIsIFN0ZGxpYi5zbmQgcHR5cGVfY3N0cnMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIFN0ZGxpYi5zbmQgcHR5cGVfa2luZCk7XG4gICAgICAgICAgICAgIChcInB0eXBlX3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwdHlwZV9tYW5pZmVzdCk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwZV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5cGVfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6ICdjdHggLT4gdHlwZV9raW5kIC0+IHR5cGVfa2luZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChQdHlwZV9hYnN0cmFjdCwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfYWJzdHJhY3RcIiBbXSlcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfdmFyaWFudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBlX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoUHR5cGVfb3Blbiwgc2VsZiNjb25zdHIgY3R4IFwiUHR5cGVfb3BlblwiIFtdKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBsYWJlbF9kZWNsYXJhdGlvbiAtPiBsYWJlbF9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbGRfbmFtZSA9IFN0ZGxpYi5mc3QgcGxkX25hbWU7XG4gICAgICAgICAgICBwbGRfbXV0YWJsZSA9IFN0ZGxpYi5mc3QgcGxkX211dGFibGU7XG4gICAgICAgICAgICBwbGRfdHlwZSA9IFN0ZGxpYi5mc3QgcGxkX3R5cGU7XG4gICAgICAgICAgICBwbGRfbG9jID0gU3RkbGliLmZzdCBwbGRfbG9jO1xuICAgICAgICAgICAgcGxkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBsZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBsZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGxkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBTdGRsaWIuc25kIHBsZF9tdXRhYmxlKTtcbiAgICAgICAgICAgICAgKFwicGxkX3R5cGVcIiwgU3RkbGliLnNuZCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAgIChcInBsZF9sb2NcIiwgU3RkbGliLnNuZCBwbGRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2RfbmFtZSA9IFN0ZGxpYi5mc3QgcGNkX25hbWU7XG4gICAgICAgICAgICBwY2RfdmFycyA9IFN0ZGxpYi5mc3QgcGNkX3ZhcnM7XG4gICAgICAgICAgICBwY2RfYXJncyA9IFN0ZGxpYi5mc3QgcGNkX2FyZ3M7XG4gICAgICAgICAgICBwY2RfcmVzID0gU3RkbGliLmZzdCBwY2RfcmVzO1xuICAgICAgICAgICAgcGNkX2xvYyA9IFN0ZGxpYi5mc3QgcGNkX2xvYztcbiAgICAgICAgICAgIHBjZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2RfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2RfbmFtZVwiLCBTdGRsaWIuc25kIHBjZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgU3RkbGliLnNuZCBwY2RfdmFycyk7XG4gICAgICAgICAgICAgIChcInBjZF9hcmdzXCIsIFN0ZGxpYi5zbmQgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgICAoXCJwY2RfcmVzXCIsIFN0ZGxpYi5zbmQgcGNkX3Jlcyk7XG4gICAgICAgICAgICAgIChcInBjZF9sb2NcIiwgU3RkbGliLnNuZCBwY2RfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3N0cl90dXBsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3N0cl9yZWNvcmQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjc3RyX3JlY29yZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcHR5ZXh0X3BhdGggaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5ZXh0X3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleHRfY29uc3RydWN0b3JzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eWV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdHlleHRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gU3RkbGliLmZzdCBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gU3RkbGliLmZzdCBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBTdGRsaWIuZnN0IHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBTdGRsaWIuc25kIHB0eWV4dF9wYXRoKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3BhcmFtc1wiLCBTdGRsaWIuc25kIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfY29uc3RydWN0b3JzXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2NvbnN0cnVjdG9ycyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4dF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBjdHggcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBleHRfbG9jIGluXG4gICAgICAgIGxldCBwZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBleHRfbmFtZSA9IFN0ZGxpYi5mc3QgcGV4dF9uYW1lO1xuICAgICAgICAgICAgcGV4dF9raW5kID0gU3RkbGliLmZzdCBwZXh0X2tpbmQ7XG4gICAgICAgICAgICBwZXh0X2xvYyA9IFN0ZGxpYi5mc3QgcGV4dF9sb2M7XG4gICAgICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZXh0X25hbWVcIiwgU3RkbGliLnNuZCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2tpbmRcIiwgU3RkbGliLnNuZCBwZXh0X2tpbmQpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBTdGRsaWIuc25kIHBleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGV4dF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXhuX2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gU3RkbGliLmZzdCBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgICAgICBwdHlleG5fbG9jID0gU3RkbGliLmZzdCBwdHlleG5fbG9jO1xuICAgICAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4bl9jb25zdHJ1Y3RvclwiLCBTdGRsaWIuc25kIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAgIChcInB0eWV4bl9sb2NcIiwgU3RkbGliLnNuZCBwdHlleG5fbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleG5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXh0X2RlY2wgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X2RlY2xcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXh0X3JlYmluZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4dF9yZWJpbmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogJ2N0eCAtPiBjbGFzc190eXBlIC0+IGNsYXNzX3R5cGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3R5X2Rlc2M7IHBjdHlfbG9jOyBwY3R5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjID0gc2VsZiNjbGFzc190eXBlX2Rlc2MgY3R4IHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3R5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSBTdGRsaWIuZnN0IHBjdHlfZGVzYztcbiAgICAgICAgICAgIHBjdHlfbG9jID0gU3RkbGliLmZzdCBwY3R5X2xvYztcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjdHlfZGVzY1wiLCBTdGRsaWIuc25kIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfbG9jXCIsIFN0ZGxpYi5zbmQgcGN0eV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY3R5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogJ2N0eCAtPiBjbGFzc190eXBlX2Rlc2MgLT4gY2xhc3NfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGN0eV9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9jb25zdHJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0eV9zaWduYXR1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfc2lnbmF0dXJlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjdHlfYXJyb3cgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2Fycm93XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGN0eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGN0eV9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogJ2N0eCAtPiBjbGFzc19zaWduYXR1cmUgLT4gY2xhc3Nfc2lnbmF0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc2lnX3NlbGYgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGNzaWdfc2VsZiBpblxuICAgICAgICBsZXQgcGNzaWdfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBjdHggcGNzaWdfZmllbGRzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNzaWdfc2VsZiA9IFN0ZGxpYi5mc3QgcGNzaWdfc2VsZjtcbiAgICAgICAgICAgIHBjc2lnX2ZpZWxkcyA9IFN0ZGxpYi5mc3QgcGNzaWdfZmllbGRzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjc2lnX3NlbGZcIiwgU3RkbGliLnNuZCBwY3NpZ19zZWxmKTtcbiAgICAgICAgICAgICAgKFwicGNzaWdfZmllbGRzXCIsIFN0ZGxpYi5zbmQgcGNzaWdfZmllbGRzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGQgLT4gY2xhc3NfdHlwZV9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBjdHggcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdGZfbG9jIGluXG4gICAgICAgIGxldCBwY3RmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0Zl9kZXNjO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBTdGRsaWIuZnN0IHBjdGZfbG9jO1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0Zl9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9sb2NcIiwgU3RkbGliLnNuZCBwY3RmX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdGZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2luaGVyaXRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl92YWwgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfdmFsXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3ZpcnR1YWxfZmxhZyBjdHggYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgY3R4IGQgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHhcbiAgICAgICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjOyBTdGRsaWIuc25kIGQgXVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfbWV0aG9kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX21ldGhvZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjdGZfY29uc3RyYWludCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4XG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2lfdmlydCA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwY2lfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwY2lfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBjdHggcGNpX2V4cHIgaW5cbiAgICAgICAgbGV0IHBjaV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2lfbG9jIGluXG4gICAgICAgIGxldCBwY2lfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2lfdmlydCA9IFN0ZGxpYi5mc3QgcGNpX3ZpcnQ7XG4gICAgICAgICAgICBwY2lfcGFyYW1zID0gU3RkbGliLmZzdCBwY2lfcGFyYW1zO1xuICAgICAgICAgICAgcGNpX25hbWUgPSBTdGRsaWIuZnN0IHBjaV9uYW1lO1xuICAgICAgICAgICAgcGNpX2V4cHIgPSBTdGRsaWIuZnN0IHBjaV9leHByO1xuICAgICAgICAgICAgcGNpX2xvYyA9IFN0ZGxpYi5mc3QgcGNpX2xvYztcbiAgICAgICAgICAgIHBjaV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2lfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBTdGRsaWIuc25kIHBjaV92aXJ0KTtcbiAgICAgICAgICAgICAgKFwicGNpX3BhcmFtc1wiLCBTdGRsaWIuc25kIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgICAoXCJwY2lfbmFtZVwiLCBTdGRsaWIuc25kIHBjaV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgU3RkbGliLnNuZCBwY2lfZXhwcik7XG4gICAgICAgICAgICAgIChcInBjaV9sb2NcIiwgU3RkbGliLnNuZCBwY2lfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNpX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2lfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVzY3JpcHRpb24gLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIGN0eCBwY2xfZGVzYyBpblxuICAgICAgICBsZXQgcGNsX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjbF9kZXNjID0gU3RkbGliLmZzdCBwY2xfZGVzYztcbiAgICAgICAgICAgIHBjbF9sb2MgPSBTdGRsaWIuZnN0IHBjbF9sb2M7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2xfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjbF9sb2NcIiwgU3RkbGliLnNuZCBwY2xfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNsX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBjbF9jb25zdHIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9zdHJ1Y3R1cmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9zdHJ1Y3R1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgKCBQY2xfZnVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjLCBTdGRsaWIuZnN0IGQpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfZnVuXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdIClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2xfYXBwbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjbF9sZXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2xfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3N0cnVjdHVyZSA6ICdjdHggLT4gY2xhc3Nfc3RydWN0dXJlIC0+IGNsYXNzX3N0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIGN0eCBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBjdHggcGNzdHJfZmllbGRzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNzdHJfc2VsZiA9IFN0ZGxpYi5mc3QgcGNzdHJfc2VsZjtcbiAgICAgICAgICAgIHBjc3RyX2ZpZWxkcyA9IFN0ZGxpYi5mc3QgcGNzdHJfZmllbGRzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjc3RyX3NlbGZcIiwgU3RkbGliLnNuZCBwY3N0cl9zZWxmKTtcbiAgICAgICAgICAgICAgKFwicGNzdHJfZmllbGRzXCIsIFN0ZGxpYi5zbmQgcGNzdHJfZmllbGRzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogJ2N0eCAtPiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2ZfZGVzYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBjdHggcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY2ZfZGVzYyA9IFN0ZGxpYi5mc3QgcGNmX2Rlc2M7XG4gICAgICAgICAgICBwY2ZfbG9jID0gU3RkbGliLmZzdCBwY2ZfbG9jO1xuICAgICAgICAgICAgcGNmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIFN0ZGxpYi5zbmQgcGNmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY2ZfbG9jXCIsIFN0ZGxpYi5zbmQgcGNmX2xvYyk7XG4gICAgICAgICAgICAgIChcInBjZl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGNmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYyBpblxuICAgICAgICAgICAgKCBQY2ZfaW5oZXJpdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbmhlcml0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjdHggYyBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfdmFsIChTdGRsaWIuZnN0IGEpLCBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfdmFsXCIgWyBTdGRsaWIuc25kIGEgXSlcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2ZfbWV0aG9kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY2ZfY29uc3RyYWludCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2luaXRpYWxpemVyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNmX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBDZmtfdmlydHVhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX3ZpcnR1YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggQ2ZrX2NvbmNyZXRlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIkNma19jb25jcmV0ZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgY3R4IHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXR5X2xvYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSBTdGRsaWIuZnN0IHBtdHlfZGVzYztcbiAgICAgICAgICAgIHBtdHlfbG9jID0gU3RkbGliLmZzdCBwbXR5X2xvYztcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtdHlfZGVzY1wiLCBTdGRsaWIuc25kIHBtdHlfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIFN0ZGxpYi5zbmQgcG10eV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbXR5X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzY1xuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQbXR5X2Z1bmN0b3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9mdW5jdG9yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfd2l0aCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3dpdGhcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfdHlwZW9mIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X3R5cGVvZiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV90eXBlb2ZcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9hbGlhcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG10eV9hbGlhc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIHNlbGYjY29uc3RyIGN0eCBcIlVuaXRcIiBbXSlcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIE5hbWVkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIk5hbWVkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiAnY3R4IC0+IHNpZ25hdHVyZSAtPiBzaWduYXR1cmUgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgY3R4IHBzaWdfZGVzYyBpblxuICAgICAgICBsZXQgcHNpZ19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc2lnX2xvYyBpblxuICAgICAgICAoIHsgcHNpZ19kZXNjID0gU3RkbGliLmZzdCBwc2lnX2Rlc2M7IHBzaWdfbG9jID0gU3RkbGliLmZzdCBwc2lnX2xvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwc2lnX2Rlc2NcIiwgU3RkbGliLnNuZCBwc2lnX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwc2lnX2xvY1wiLCBTdGRsaWIuc25kIHBzaWdfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdmFsdWUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZXh0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGV4dFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2RzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R0eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfb3BlbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19vcGVuXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfaW5jbHVkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19pbmNsdWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfY2xhc3MgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfY2xhc3NfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc190eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHggcG1kX25hbWUgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG1kX3R5cGUgaW5cbiAgICAgICAgbGV0IHBtZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtZF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbWRfbmFtZSA9IFN0ZGxpYi5mc3QgcG1kX25hbWU7XG4gICAgICAgICAgICBwbWRfdHlwZSA9IFN0ZGxpYi5mc3QgcG1kX3R5cGU7XG4gICAgICAgICAgICBwbWRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbWRfbG9jID0gU3RkbGliLmZzdCBwbWRfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcG1kX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbWRfdHlwZVwiLCBTdGRsaWIuc25kIHBtZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicG1kX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbWRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtZF9sb2NcIiwgU3RkbGliLnNuZCBwbWRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtc19uYW1lOyBwbXNfbWFuaWZlc3Q7IHBtc19hdHRyaWJ1dGVzOyBwbXNfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtc19uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtc19uYW1lIGluXG4gICAgICAgIGxldCBwbXNfbWFuaWZlc3QgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtc19hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXNfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1zX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtc19uYW1lID0gU3RkbGliLmZzdCBwbXNfbmFtZTtcbiAgICAgICAgICAgIHBtc19tYW5pZmVzdCA9IFN0ZGxpYi5mc3QgcG1zX21hbmlmZXN0O1xuICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtc19hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1zX2xvYyA9IFN0ZGxpYi5mc3QgcG1zX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBTdGRsaWIuc25kIHBtc19uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1zX21hbmlmZXN0XCIsIFN0ZGxpYi5zbmQgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicG1zX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXNfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInBtc19sb2NcIiwgU3RkbGliLnNuZCBwbXNfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgY3R4IHBtdGRfdHlwZSBpblxuICAgICAgICBsZXQgcG10ZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbXRkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG10ZF9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbXRkX25hbWUgPSBTdGRsaWIuZnN0IHBtdGRfbmFtZTtcbiAgICAgICAgICAgIHBtdGRfdHlwZSA9IFN0ZGxpYi5mc3QgcG10ZF90eXBlO1xuICAgICAgICAgICAgcG10ZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXRkX2xvYyA9IFN0ZGxpYi5mc3QgcG10ZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10ZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG10ZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG10ZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG10ZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG10ZF9sb2NcIiwgU3RkbGliLnNuZCBwbXRkX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPlxuICAgICAgICAgICdjdHggLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2Egb3Blbl9pbmZvcyAqICdyZXMgPVxuICAgICAgZnVuIF9hIGN0eCB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9wZW5fZXhwciA9IF9hIGN0eCBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBjdHggcG9wZW5fb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IHBvcGVuX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBvcGVuX2xvYyBpblxuICAgICAgICBsZXQgcG9wZW5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBTdGRsaWIuZnN0IHBvcGVuX2V4cHI7XG4gICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IFN0ZGxpYi5mc3QgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgICBwb3Blbl9sb2MgPSBTdGRsaWIuZnN0IHBvcGVuX2xvYztcbiAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9wZW5fZXhwclwiLCBTdGRsaWIuc25kIHBvcGVuX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBTdGRsaWIuc25kIHBvcGVuX292ZXJyaWRlKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fbG9jXCIsIFN0ZGxpYi5zbmQgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgICAgKFwicG9wZW5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvcGVuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gb3Blbl9kZWNsYXJhdGlvbiAtPiBvcGVuX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGluY2xfbW9kID0gU3RkbGliLmZzdCBwaW5jbF9tb2Q7XG4gICAgICAgICAgICBwaW5jbF9sb2MgPSBTdGRsaWIuZnN0IHBpbmNsX2xvYztcbiAgICAgICAgICAgIHBpbmNsX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIFN0ZGxpYi5zbmQgcGluY2xfbW9kKTtcbiAgICAgICAgICAgICAgKFwicGluY2xfbG9jXCIsIFN0ZGxpYi5zbmQgcGluY2xfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGluY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBpbmNsX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiAnY3R4IC0+IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHVsZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2R0eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kdHlwZXN1YnN0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF90eXBlc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kc3Vic3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHdpdGhfbW9kc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgY3R4IHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSBTdGRsaWIuZnN0IHBtb2RfZGVzYztcbiAgICAgICAgICAgIHBtb2RfbG9jID0gU3RkbGliLmZzdCBwbW9kX2xvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtb2RfZGVzY1wiLCBTdGRsaWIuc25kIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfbG9jXCIsIFN0ZGxpYi5zbmQgcG1vZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbW9kX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzY1xuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9zdHJ1Y3R1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2Z1bmN0b3IgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9mdW5jdG9yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG1vZF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2FwcGx5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG1vZF91bnBhY2sgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfdW5wYWNrXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG1vZF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX2V4dGVuc2lvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgKiAncmVzID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtIC0+IHN0cnVjdHVyZV9pdGVtICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgY3R4IHBzdHJfZGVzYyBpblxuICAgICAgICBsZXQgcHN0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwc3RyX2xvYyBpblxuICAgICAgICAoIHsgcHN0cl9kZXNjID0gU3RkbGliLmZzdCBwc3RyX2Rlc2M7IHBzdHJfbG9jID0gU3RkbGliLmZzdCBwc3RyX2xvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwc3RyX2Rlc2NcIiwgU3RkbGliLnNuZCBwc3RyX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwc3RyX2xvY1wiLCBTdGRsaWIuc25kIHBzdHJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX2V2YWwgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9ldmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl92YWx1ZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3ZhbHVlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9wcmltaXRpdmUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfcHJpbWl0aXZlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfdHlwZXh0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3R5cGV4dFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2V4Y2VwdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3JlY21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9yZWNtb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfbW9kdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfb3BlbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9vcGVuXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfY2xhc3MgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfY2xhc3NcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfY2xhc3NfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc190eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfaW5jbHVkZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9pbmNsdWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX2F0dHJpYnV0ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9hdHRyaWJ1dGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHZiX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHB2Yl9leHByIGluXG4gICAgICAgIGxldCBwdmJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHZiX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2Yl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHZiX3BhdCA9IFN0ZGxpYi5mc3QgcHZiX3BhdDtcbiAgICAgICAgICAgIHB2Yl9leHByID0gU3RkbGliLmZzdCBwdmJfZXhwcjtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB2Yl9sb2MgPSBTdGRsaWIuZnN0IHB2Yl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBTdGRsaWIuc25kIHB2Yl9wYXQpO1xuICAgICAgICAgICAgICAoXCJwdmJfZXhwclwiLCBTdGRsaWIuc25kIHB2Yl9leHByKTtcbiAgICAgICAgICAgICAgKFwicHZiX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdmJfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgU3RkbGliLnNuZCBwdmJfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBwbWJfZXhwciBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1iX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtYl9uYW1lID0gU3RkbGliLmZzdCBwbWJfbmFtZTtcbiAgICAgICAgICAgIHBtYl9leHByID0gU3RkbGliLmZzdCBwbWJfZXhwcjtcbiAgICAgICAgICAgIHBtYl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtYl9sb2MgPSBTdGRsaWIuZnN0IHBtYl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1iX25hbWVcIiwgU3RkbGliLnNuZCBwbWJfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtYl9leHByXCIsIFN0ZGxpYi5zbmQgcG1iX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwbWJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1iX2xvY1wiLCBTdGRsaWIuc25kIHBtYl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdG9wX2RlZiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHRvcF9kZWZcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGlyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RpclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgY3R4IHBkaXJfYXJnIGluXG4gICAgICAgIGxldCBwZGlyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGRpcl9uYW1lID0gU3RkbGliLmZzdCBwZGlyX25hbWU7XG4gICAgICAgICAgICBwZGlyX2FyZyA9IFN0ZGxpYi5mc3QgcGRpcl9hcmc7XG4gICAgICAgICAgICBwZGlyX2xvYyA9IFN0ZGxpYi5mc3QgcGRpcl9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGRpcl9uYW1lXCIsIFN0ZGxpYi5zbmQgcGRpcl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgU3RkbGliLnNuZCBwZGlyX2FyZyk7XG4gICAgICAgICAgICAgIChcInBkaXJfbG9jXCIsIFN0ZGxpYi5zbmQgcGRpcl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIGN0eCBwZGlyYV9kZXNjIGluXG4gICAgICAgIGxldCBwZGlyYV9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZGlyYV9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyYV9kZXNjID0gU3RkbGliLmZzdCBwZGlyYV9kZXNjO1xuICAgICAgICAgICAgcGRpcmFfbG9jID0gU3RkbGliLmZzdCBwZGlyYV9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGRpcmFfZGVzY1wiLCBTdGRsaWIuc25kIHBkaXJhX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwZGlyYV9sb2NcIiwgU3RkbGliLnNuZCBwZGlyYV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX3N0cmluZyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9zdHJpbmdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBkaXJfaW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGRpcl9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2Jvb2wgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBkaXJfYm9vbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNhc2VzIDogJ2N0eCAtPiBjYXNlcyAtPiBjYXNlcyAqICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5bQEBAZW5kXVxuW0BAQGVuZF1cbiIsIm9wZW4gSW1wb3J0XG5cbnR5cGUgdCA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci50XG5cbmxldCB0b19leHRlbnNpb24gKGVycm9yIDogQXN0bGliLkxvY2F0aW9uLkVycm9yLnQpID1cbiAgbGV0IG9wZW4gQXN0bGliLkxvY2F0aW9uLkVycm9yIGluXG4gIGxldCBvcGVuIEFzdF9oZWxwZXIgaW5cbiAgaWYgbm90IChpc193ZWxsX2Zvcm1lZCBlcnJvcikgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwidG9fZXh0ZW5zaW9uOiBleHBlY3RlZCBraW5kIFJlcG9ydF9lcnJvclwiKTtcbiAgbGV0IHN1Yl9tc2dzID0gc3ViX21zZ3MgZXJyb3IgaW5cbiAgbGV0IG1haW5fbXNnID0gbWFpbl9tc2cgZXJyb3IgaW5cbiAgbGV0IGVycl9leHRlbnNpb25fbmFtZSBsb2MgPSB7IExvY2F0aW9uLmxvYzsgdHh0ID0gXCJvY2FtbC5lcnJvclwiIH0gaW5cbiAgbGV0IG1rX3N0cmluZ19jb25zdGFudCB4ID0gU3RyLmV2YWwgKEV4cC5jb25zdGFudCAoQ29uc3Quc3RyaW5nIHgpKSBpblxuICBsZXQgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgKHN1Yl9tc2cgOiBzdHJpbmcgTG9jYXRpb24ubG9jKSA9XG4gICAgU3RyLmV4dGVuc2lvblxuICAgICAgKGVycl9leHRlbnNpb25fbmFtZSBzdWJfbXNnLmxvYywgUFN0ciBbIG1rX3N0cmluZ19jb25zdGFudCBzdWJfbXNnLnR4dCBdKVxuICBpblxuICAoIGVycl9leHRlbnNpb25fbmFtZSBtYWluX21zZy5sb2MsXG4gICAgUGFyc2V0cmVlLlBTdHJcbiAgICAgIChta19zdHJpbmdfY29uc3RhbnQgbWFpbl9tc2cudHh0IDo6IExpc3QubWFwIGV4dGVuc2lvbl9vZl9zdWJfbXNnIHN1Yl9tc2dzKVxuICApXG5cbmxldCByZWdpc3Rlcl9lcnJvcl9vZl9leG4gPSBBc3RsaWIuTG9jYXRpb24ucmVnaXN0ZXJfZXJyb3Jfb2ZfZXhuXG5cbmxldCBtZXNzYWdlIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLnR4dDsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIHR4dFxuXG5sZXQgc2V0X21lc3NhZ2UgPSBBc3RsaWIuTG9jYXRpb24uRXJyb3Iuc2V0X21haW5fbXNnXG5cbmxldCBtYWtlIH5sb2MgdHh0IH5zdWIgPVxuICBsZXQgc3ViID0gTGlzdC5tYXAgKGZ1biAobG9jLCB0eHQpIC0+IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgdHh0IH0pIHN1YiBpblxuICBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFrZSB+c3ViIHsgbG9jOyB0eHQgfVxuXG5sZXQgdXBkYXRlX2xvYyA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9sb2NcblxubGV0IGdldF9sb2NhdGlvbiBlcnJvciA9XG4gIGxldCB7IEFzdGxpYi5Mb2NhdGlvbi5sb2M7IF8gfSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWluX21zZyBlcnJvciBpblxuICBsb2NcblxubGV0IG9mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5vZl9leG5cbmxldCByYWlzZSBlcnJvciA9IHJhaXNlIChBc3RsaWIuTG9jYXRpb24uRXJyb3IgZXJyb3IpXG4iLCJtb2R1bGUgRG9fbm90X3VzZV9kaXJlY3RseSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBBZmxfaW5zdHJ1bWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BZmxfaW5zdHJ1bWVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxpYXNfYW5hbHlzaXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQWxpYXNfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEFsbG9jYXRlZF9jb25zdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGxvY2F0ZWRfY29uc3QgaW5zdGVhZFwiXVxubW9kdWxlIEFubm90ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBBcmNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFyY2ggaW5zdGVhZFwiXVxubW9kdWxlIEFyZ19oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BcmdfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc21nZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBBc21saWJyYXJpYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBBc21saW5rID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEFzbXBhY2thZ2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFzbXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0X2l0ZXJhdG9yID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X2l0ZXJhdG9yIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXN0X21hcHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXN0dHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEF0dHJfaGVscGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQXR0cl9oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BdWdtZW50X3NwZWNpYWxpc2VkX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIEJhY2tlbmRfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQmFja2VuZF92YXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQmFja2VuZF92YXIgaW5zdGVhZFwiXVxubW9kdWxlIEJpbnV0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQmludXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkJyYW5jaF9yZWxheGF0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBCcmFuY2hfcmVsYXhhdGlvbl9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ0eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsZF9leHBvcnRfaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CdWlsZF9leHBvcnRfaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfcGF0aF9wcmVmaXhfbWFwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbGRfcGF0aF9wcmVmaXhfbWFwIGluc3RlYWRcIl1cbm1vZHVsZSBCdWlsdGluX2F0dHJpYnV0ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdWlsdGluX2F0dHJpYnV0ZXMgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVnZW4gaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVsaWJyYXJpYW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkJ5dGVsaWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVsaW5rID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQnl0ZXBhY2thZ2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVzZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ5dGVzZWN0aW9ucyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ1NFID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNTRSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ1NFZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNTRWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2FtbGludGVybmFsTWVuaGlyTGliID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2FtbGludGVybmFsTWVuaGlyTGliIGluc3RlYWRcIl1cbm1vZHVsZSBDY29tcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNjb21wIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIENsYW1iZGFfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIENsZmxhZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbGZsYWdzIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfY29udmVyc2lvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2NvbnZlcnNpb24gaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfY29udmVyc2lvbl9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uX2F1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9lbGVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfZWxlbWVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2lkIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX29mZnNldHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vZmZzZXRzIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX29yaWdpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21pX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtaV9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW0gaW5zdGVhZFwiXVxubW9kdWxlIENtbV9oZWxwZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbV9oZWxwZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbWdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tZ2VuX3N0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNtbWdlbl9zdGF0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21vX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ210MmFubm90ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ210MmFubm90IGluc3RlYWRcIl1cbm1vZHVsZSBDbXRfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ210X2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ214X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ214c19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbG9yaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbG9yaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBDb21iYWxsb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tYmFsbG9jIGluc3RlYWRcIl1cbm1vZHVsZSBDb21wZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29tcGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsYXRpb25fdW5pdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db21waWxhdGlvbl91bml0IGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5Db21waWxlIGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlX2NvbW1vbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBpbGVfY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDb21waWxlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsZW52IGluc3RlYWRcIl1cbm1vZHVsZSBDb21wbWlzYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBtaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBDb21wcmVzc2lvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXByZXNzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db25maWcgaW5zdGVhZFwiXVxubW9kdWxlIENvbmZpZ19ib290ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb25maWdfbWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uc2lzdGJsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uc2lzdGJsIGluc3RlYWRcIl1cbm1vZHVsZSBDb252ZXJ0X3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29udmVydF9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkN0eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBEYXRhZmxvdyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5EYXRhZmxvdyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YXJlcHIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EYXRhcmVwciBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVhZGNvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGVhZGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIERlYnVnaW5mbyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlYnVnaW5mbyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGVwZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBEaWZmaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZ193aXRoX2tleXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EaWZmaW5nX3dpdGhfa2V5cyBpbnN0ZWFkXCJdXG5tb2R1bGUgRGxsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGxsIGluc3RlYWRcIl1cbm1vZHVsZSBEb2NzdHJpbmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9jc3RyaW5ncyBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9tYWluc3RhdGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Eb21haW5zdGF0ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRWZmZWN0X2FuYWx5c2lzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVmZmVjdF9hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkVtaXRhdXggaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5FbWl0Y29kZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52IGluc3RlYWRcIl1cbm1vZHVsZSBFbnZhdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5FbnZhdXggaW5zdGVhZFwiXVxubW9kdWxlIEVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRXJyb3JzIGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnRyYWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRXJyb3J0cmFjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2lkID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvX2Zvcl9wYWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvX2Zvcl9wYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBFeHB1bmdlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBFeHRyYWN0X3Byb2plY3Rpb25zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4dHJhY3RfcHJvamVjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIEZpbmRfcmVjdXJzaXZlX2Z1bmN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9pbnZhcmlhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaW52YXJpYW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgRmxhbWJkYV9pdGVyYXRvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9pdGVyYXRvcnMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfbWlkZGxlX2VuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX21pZGRsZV9lbmQgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfdG9fY2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX3RvX2NsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfdXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV91dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgRnJlc2hlbmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GcmVzaGVuaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBHZW5wcmludHZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuR2VucHJpbnR2YWwgaW5zdGVhZFwiXVxubW9kdWxlIElkX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklkX3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBJZGVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLklkZW50IGluc3RlYWRcIl1cbm1vZHVsZSBJZGVudGlmaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudGlmaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIEltcG9ydF9hcHByb3ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW1wb3J0X2FwcHJveCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZWNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBJbmNsdWRlbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlbW9kX2Vycm9ycHJpbnRlciBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jb25zdGFudF9pZGVudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5jb25zdGFudF9pZGVudHMgaW5zdGVhZFwiXVxubW9kdWxlIEluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5pdGlhbGl6ZV9zeW1ib2xfdG9fbGV0X3N5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmVfYW5kX3NpbXBsaWZ5IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmVfYW5kX3NpbXBsaWZ5X2F1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmVfYW5kX3NpbXBsaWZ5X2F1eCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfY29zdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19jb3N0IGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19kZWNpc2lvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19kZWNpc2lvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb25faW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgSW5saW5pbmdfc3RhdHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfc3RhdHMgaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzX3R5cGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzX3R5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ190cmFuc2Zvcm1zID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3RyYW5zZm9ybXMgaW5zdGVhZFwiXVxubW9kdWxlIEluc3RydWN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5JbnN0cnVjdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5zdGVhZFwiXVxubW9kdWxlIEludGVyZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcmYgaW5zdGVhZFwiXVxubW9kdWxlIEludGVybmFsX3ZhcmlhYmxlX25hbWVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkludGVybmFsX3ZhcmlhYmxlX25hbWVzIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcnZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcnZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW52YXJpYW50X3BhcmFtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnZhcmlhbnRfcGFyYW1zIGluc3RlYWRcIl1cbm1vZHVsZSBMYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5MYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIExhenlfYmFja3RyYWNrID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGF6eV9iYWNrdHJhY2sgaW5zdGVhZFwiXVxubW9kdWxlIExleGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGV4ZXIgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfY29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvZGUgaW5zdGVhZFwiXVxubW9kdWxlIExpZnRfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpZnRfY29uc3RhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2xldF90b19pbml0aWFsaXplX3N5bWJvbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2xldF90b19pbml0aWFsaXplX3N5bWJvbCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhciBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyX2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXJfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBMaW5lYXJpemUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyaXplIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5rYWdlX25hbWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlua2FnZV9uYW1lIGluc3RlYWRcIl1cbm1vZHVsZSBMaW5zY2FuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbnNjYW4gaW5zdGVhZFwiXVxubW9kdWxlIExpdmVuZXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpdmVuZXNzIGluc3RlYWRcIl1cbm1vZHVsZSBMb2FkX3BhdGggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb2FkX3BhdGggaW5zdGVhZFwiXVxubW9kdWxlIExvY2FsX3N0b3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9jYWxfc3RvcmUgaW5zdGVhZFwiXVxubW9kdWxlIExvY2F0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9jYXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIExvbmdpZGVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvbmdpZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5NYWNoIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBNYWluX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYWluX2FyZ3MgaW5zdGVhZFwiXVxubW9kdWxlIE1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLk1haW5kcml2ZXIgaW5zdGVhZFwiXVxubW9kdWxlIE1ha2VkZXBlbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYWtlZGVwZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBNYXRjaGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1hdGNoaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBNZXRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWV0YSBpbnN0ZWFkXCJdXG5tb2R1bGUgTWlzYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1pc2MgaW5zdGVhZFwiXVxubW9kdWxlIE10eXBlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTXR5cGUgaW5zdGVhZFwiXVxubW9kdWxlIE11dGFibGVfdmFyaWFibGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTXV0YWJsZV92YXJpYWJsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTnVtYmVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk51bWJlcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wY29kZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5PcGNvZGVzIGluc3RlYWRcIl1cbm1vZHVsZSBPcHJpbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5PcHJpbnQgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGNvbXBpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0Y29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0ZXJyb3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3B0bWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgT3B0bWFpbmRyaXZlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRtYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBPdXRjb21ldHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgUGFyYW1ldGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBhcmFtZXRlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJtYXRjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXJzZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2VyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2VyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXJzZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhc3Nfd3JhcHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXNzX3dyYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhdGggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBQYXR0ZXJucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhdHRlcm5zIGluc3RlYWRcIl1cbm1vZHVsZSBQZXJzaXN0ZW50X2VudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBlcnNpc3RlbnRfZW52IGluc3RlYWRcIl1cbm1vZHVsZSBQb2xsaW5nID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlBvbGxpbmcgaW5zdGVhZFwiXVxubW9kdWxlIFBwYXJzZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwYXJzZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHByaW50YXN0IGluc3RlYWRcIl1cbm1vZHVsZSBQcmVkZWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmVkZWYgaW5zdGVhZFwiXVxubW9kdWxlIFByaW1pdGl2ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW1pdGl2ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRjbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRjbGFtYmRhX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y21tID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y21tIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGluc3RyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5QcmludGluc3RyIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGxhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50bGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGxpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGxpbmVhciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRtYWNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50bWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRwYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHBhdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnR0eXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnR0eXBlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByaW50dHlwZWQgaW5zdGVhZFwiXVxubW9kdWxlIFByb2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJvZmlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlByb2ZpbGUgaW5zdGVhZFwiXVxubW9kdWxlIFByb2plY3Rpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJvamVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVmX3RvX3ZhcmlhYmxlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWZfdG9fdmFyaWFibGVzIGluc3RlYWRcIl1cbm1vZHVsZSBSZWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVnIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2FyZ3VtZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2FyZ3VtZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzIGluc3RlYWRcIl1cbm1vZHVsZSBSdW50aW1lZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUnVudGltZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkdWxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWR1bGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0Z2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfaWQgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcGVfcmVkdWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2hhcGVfcmVkdWNlIGluc3RlYWRcIl1cbm1vZHVsZSBTaGFyZV9jb25zdGFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2hhcmVfY29uc3RhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBTaWduYXR1cmVfZ3JvdXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaWduYXR1cmVfZ3JvdXAgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsZV92YWx1ZV9hcHByb3ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxlX3ZhbHVlX2FwcHJveCBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlNpbXBsaWYgaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2JveGVkX2ludGVnZXJfb3BzIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wc19pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2ltcGxpZnlfY29tbW9uIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNwaWxsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNwaWxsIGluc3RlYWRcIl1cbm1vZHVsZSBTcGxpdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGxpdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RhY2tmcmFtZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TdGFja2ZyYW1lIGluc3RlYWRcIl1cbm1vZHVsZSBTdGFja2ZyYW1lZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlN0YWNrZnJhbWVnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFN0YXRpY19leGNlcHRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhdGljX2V4Y2VwdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFN0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Vic3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdWJzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3dpdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3dpdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBTeW10YWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bXRhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBTeW50YXhlcnIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW50YXhlcnIgaW5zdGVhZFwiXVxubW9kdWxlIFRhZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UYWcgaW5zdGVhZFwiXVxubW9kdWxlIFRhcmdldGludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhcmdldGludCBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRlcm1pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGVybWluZm8gaW5zdGVhZFwiXVxubW9kdWxlIFRocmVhZF9zYW5pdGl6ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVGhyZWFkX3Nhbml0aXplciBpbnN0ZWFkXCJdXG5tb2R1bGUgVG1jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVG1jIGluc3RlYWRcIl1cbm1vZHVsZSBUb3Bjb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGNvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wZGlycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wZGlycyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wZXZhbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfdG9wbGV2ZWwuVG9wZXZhbCBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9waG9va3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFRvcGxvb3AgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGxvb3AgaW5zdGVhZFwiXVxubW9kdWxlIFRvcG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcG1haW4gaW5zdGVhZFwiXVxubW9kdWxlIFRvcHByaW50ZXJzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BwcmludGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wc3RhcnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFRyYWNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5UcmFjZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsYXR0cmlidXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsYXR0cmlidXRlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbGNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNsbW9kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xvYmogPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xvYmogaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbHByaW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xwcmltIGluc3RlYWRcIl1cbm1vZHVsZSBUcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UcmF2ZXJzZV9mb3JfZXhwb3J0ZWRfc3ltYm9scyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZV9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNsYXNzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY29yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9pbW1lZGlhY3kgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9pbW1lZGlhY3kgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3Byb3BlcnRpZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9wcm9wZXJ0aWVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF9zZXBhcmFiaWxpdHkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF9zZXBhcmFiaWxpdHkgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3VuYm94ZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZGVjbF91bmJveGVkIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZGVjbF92YXJpYW5jZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3ZhcmlhbmNlIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlZHRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlZHRyZWUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlbW9kIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlb3B0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZW9wdCBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZXRleHAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBldGV4cCBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5fYW5mID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuX2FuZiBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfY2xvc3VyZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9mcmVlX3ZhcnNfb2ZfY2xvc3VyZXMgaW5zdGVhZFwiXVxubW9kdWxlIFVuYm94X3NwZWNpYWxpc2VkX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5ib3hfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5pdF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVW5pdF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBVbnR5cGVhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5VbnR5cGVhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFZhbHVlX3JlY19jaGVjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlZhbHVlX3JlY19jaGVjayBpbnN0ZWFkXCJdXG5tb2R1bGUgVmFsdWVfcmVjX2NvbXBpbGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVmFsdWVfcmVjX2NvbXBpbGVyIGluc3RlYWRcIl1cbm1vZHVsZSBWYWx1ZV9yZWNfdHlwZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFZhcl93aXRoaW5fY2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJfd2l0aGluX2Nsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIFZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBXYXJuaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLldhcm5pbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBYODZfZHNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9kc2wgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9nYXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2dhcyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X21hc20gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X21hc20gaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9wcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9wcm9jIGluc3RlYWRcIl1cbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MgPVxuICBsZXQgYXJncyA9XG4gICAgTGlzdC5jb25jYXRcbiAgICAgIFtcbiAgICAgICAgWyBcIi1rZWVwLXdoaXRlc3BhY2VcIiBdO1xuICAgICAgICBbIFwiLWxvY2F0aW9uLXN0eWxlIG9tYWtlXCIgXTtcbiAgICAgICAgKGlmIHVzZV9jb2xvciB0aGVuIFtdIGVsc2UgWyBcIi1hc2NpaVwiIF0pO1xuICAgICAgICBleHRyYV9wYXRkaWZmX2FyZ3M7XG4gICAgICBdXG4gIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoXCJwYXRkaWZmXCIgOjogYXJncylcblxubGV0IHByaW50ID9kaWZmX2NvbW1hbmQgPyhleHRyYV9wYXRkaWZmX2FyZ3MgPSBbXSkgPyh1c2VfY29sb3IgPSBmYWxzZSkgfmZpbGUxXG4gICAgfmZpbGUyICgpID1cbiAgbGV0IGV4ZWMgY21kID1cbiAgICBsZXQgY21kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgMT4mMlwiIGNtZCAoRmlsZW5hbWUucXVvdGUgZmlsZTEpXG4gICAgICAgIChGaWxlbmFtZS5xdW90ZSBmaWxlMilcbiAgICBpblxuICAgIG1hdGNoIFN5cy5jb21tYW5kIGNtZCB3aXRoXG4gICAgfCAwIC0+IGBTYW1lXG4gICAgfCAxIC0+IGBEaWZmZXJlbnRcbiAgICB8IG4gLT4gYEVycm9yIChuLCBjbWQpXG4gIGluXG4gIG1hdGNoIGRpZmZfY29tbWFuZCB3aXRoXG4gIHwgU29tZSBzIC0+IGlnbm9yZSAoZXhlYyBzIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggZXhlYyAocGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzKSB3aXRoXG4gICAgICB8IGBTYW1lIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBwcm9kdWNlZCBubyBvdXRwdXQsIGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gICAgICB8IGBEaWZmZXJlbnQgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHN1Y2Nlc3NmdWxseSBmb3VuZCBhIGRpZmZlcmVuY2UgKilcbiAgICAgICAgICAoKVxuICAgICAgfCBgRXJyb3IgKGVycl9jb2RlLCBjbWQpIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiB0aHJldyBhbiBlcnJvci4uLiBwZXJoYXBzIGl0IHdhc24ndCBpbnN0YWxsZWQ/IGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJFcnJvcjpcXG5cXFxuICAgICAgICAgICAgID4gJVMgZXhpdGVkIHdpdGggY29kZSAlZFxcblxcXG4gICAgICAgICAgICAgPiBQZXJoYXBzIHBhdGRpZmYgaXMgbm90IGluc3RhbGxlZD8gSGludCwgdHJ5OiBvcGFtIGluc3RhbGwgcGF0ZGlmZlxcblxcXG4gICAgICAgICAgICAgPiBGYWxsaW5nIGJhY2sgdG8gZGlmZiAtdVxcblxcblwiXG4gICAgICAgICAgICBjbWQgZXJyX2NvZGU7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKSlcbiIsInR5cGUgZGVyaXZlciA9IC4uXG5cbmxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSA0MlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSBkZXJpdmVyID1cbiAgaWYgSGFzaHRibC5tZW0gYWxsIG5hbWUgdGhlblxuICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgXCJQcHhfZGVyaXZpZXJzLnJlZ2lzdGVyOiAlUyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcIiBuYW1lO1xuICBIYXNodGJsLmFkZCBhbGwgbmFtZSBkZXJpdmVyXG5cbmxldCBsb29rdXAgbmFtZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCBhbGwgbmFtZSB3aXRoXG4gIHwgZHJ2IC0+IFNvbWUgZHJ2XG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbmxldCBkZXJpdmVycyAoKSA9XG4gIEhhc2h0YmwuZm9sZCAoZnVuIG5hbWUgZHJ2IGFjYyAtPiAobmFtZSwgZHJ2KSA6OiBhY2MpIGFsbCBbXVxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBtYXAgPSAnYSAtPiAnYVxuICB0eXBlICdhIGl0ZXIgPSAnYSAtPiB1bml0XG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkID0gJ2EgLT4gJ2FjYyAtPiAnYWNjXG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkX21hcCA9ICdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjXG4gIHR5cGUgKCdjdHgsICdhKSBtYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYVxuICB0eXBlICgnYSwgJ3JlcykgbGlmdCA9ICdhIC0+ICdyZXNcbiAgdHlwZSAoJ2N0eCwgJ2EsICdyZXMpIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzXG5lbmRcblxuY2xhc3MgbWFwID1cbiAgbGV0IGFueSB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQubWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULm1hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULm1hcCAtPiAnYSBvcHRpb24gVC5tYXAgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQubWFwIC0+ICdhIGxpc3QgVC5tYXAgPSBMaXN0Lm1hcFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULm1hcCAtPiAnYSBhcnJheSBULm1hcCA9IEFycmF5Lm1hcFxuICBlbmRcblxuY2xhc3MgaXRlciA9XG4gIGxldCBhbnkgPSBpZ25vcmUgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5pdGVyID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQuaXRlciAtPiAnYSBvcHRpb24gVC5pdGVyID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgbGlzdCBULml0ZXIgPSBMaXN0Lml0ZXJcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGFycmF5IFQuaXRlciA9IEFycmF5Lml0ZXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkID1cbiAgbGV0IGFueSBfIGFjYyA9IGFjYyBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgeCBhY2MgLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gYWNjIHwgU29tZSB4IC0+IGYgeCBhY2NcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGQgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gYWNjIHwgeCA6OiBsIC0+IGxvb3AgZiBsIChmIHggYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIHIgOj0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZF9tYXAgPVxuICBsZXQgYW55IHggYWNjID0gKHgsIGFjYykgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIGFjYylcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICAoU29tZSB4LCBhY2MpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIGFjYylcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICBsZXQgbCwgYWNjID0gbG9vcCBmIGwgYWNjIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiAoYSwgYWNjKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSBhY2MgaW5cbiAgICAgICAgICBsZXQgYScgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXIgaW5cbiAgICAgICAgICAgIEFycmF5LnVuc2FmZV9zZXQgYScgaSB4O1xuICAgICAgICAgICAgciA6PSBhY2NcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIChhJywgIXIpXG4gIGVuZFxuXG5jbGFzcyBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIGxldCBhbnkgXyB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKCdjdHgsIGludCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBvcHRpb24pIFQubWFwX3dpdGhfY29udGV4dFxuICAgICAgICA9XG4gICAgICBmdW4gZiBjdHggeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgY3R4IHgpXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBsaXN0KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT4gTGlzdC5tYXAgKGYgY3R4KSBsXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgYXJyYXkpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggYSAtPiBBcnJheS5tYXAgKGYgY3R4KSBhXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlbGYjY29uc3RyIFwiTm9uZVwiIFtdXG4gICAgICAgIHwgU29tZSB4IC0+IHNlbGYjY29uc3RyIFwiU29tZVwiIFsgZiB4IF1cblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZWxmI2NvbnN0ciBcIltdXCIgW11cbiAgICAgICAgfCB4IDo6IGwgLT4gc2VsZiNjb25zdHIgXCI6OlwiIFsgZiB4OyBzZWxmI2xpc3QgZiBsIF1cbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIHNlbGYjY29uc3RyIGN0eCBcIk5vbmVcIiBbXSlcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCByZXMgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICAoU29tZSB4LCBzZWxmI2NvbnN0ciBjdHggXCJTb21lXCIgWyByZXMgXSlcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIHNlbGYjY29uc3RyIGN0eCBcIltdXCIgW10pXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzX2hlYWQgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICBsZXQgbCwgcmVzX3RhaWwgPSBzZWxmI2xpc3QgZiBjdHggbCBpblxuICAgICAgICAgICAgKHggOjogbCwgc2VsZiNjb25zdHIgY3R4IFwiOjpcIiBbIHJlc19oZWFkOyByZXNfdGFpbCBdKVxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ3Jlc10gc3RkX2xpZnRlcnMgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICBtZXRob2QgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnRcbmVuZFxuXG5jbGFzcyB0eXBlIFsnY3R4LCAncmVzXSBzdGRfbGlmdF9tYXBwZXJzX3dpdGhfY29udGV4dCA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgYXJyYXkgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2Qgb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgbGlzdCA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuZW5kXG4iLCJtb2R1bGUgQ2FtbCA9IFN0ZGxpYiBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjMtMDZdIHVzZSBTdGRsaWIgaW5zdGVhZFwiXVxub3BlbiBTdGRsaWJcbm9wZW4gU3RkTGFiZWxzXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgdHlwZSBDb21wYXJpc29ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG1pbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBtYXggOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgbWluID0gbWluXG4gIGxldCBtYXggPSBtYXhcbmVuZFxuXG5pbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxubW9kdWxlIEFycmF5ID0gQXJyYXlcblxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9ib29sXG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGJvb2wpXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQnl0ZXNcblxuICBsZXQgc3ViX3N0cmluZyB0IH5wb3MgfmxlbiA9IFN0ZGxpYi5CeXRlcy5zdWJfc3RyaW5nIHQgcG9zIGxlblxuXG4gIGxldCBibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gY2hhcilcbmVuZFxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgeSAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICByYWlzZSBleG5cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9mbG9hdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBmbG9hdClcbmVuZFxuXG5tb2R1bGUgRm4gPSBzdHJ1Y3RcbiAgbGV0IGlkIHggPSB4XG5lbmRcblxubW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIHdoaWxlIG1lbSB0IGtleSBkb1xuICAgICAgcmVtb3ZlIHQga2V5XG4gICAgZG9uZTtcbiAgICBhZGQgdCBrZXkgZGF0YVxuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBpZiBtZW0gdCBrZXkgdGhlbiBFcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0YmwuYWRkX2V4blwiKVxuICAgIGVsc2UgKFxuICAgICAgYWRkIHQga2V5IGRhdGE7XG4gICAgICBPayAoKSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aCBPayAoKSAtPiAoKSB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cblxuICBsZXQgZmluZF9vcHQgdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aCBkYXRhIC0+IFNvbWUgZGF0YSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZmluZF9vcHQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgICAgIGFkZF9leG4gdCB+a2V5IH5kYXRhO1xuICAgICAgICBkYXRhXG5cbiAgbGV0IHJlYyBhZGRfYWxpc3QgdCBhbGlzdCA9XG4gICAgbWF0Y2ggYWxpc3Qgd2l0aFxuICAgIHwgW10gLT4gT2sgKClcbiAgICB8IChrZXksIGRhdGEpIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBhZGRfYWxpc3QgdCB0YWlsXG4gICAgICAgIHwgRXJyb3IgKF8gOiBleG4pIC0+IEVycm9yIGtleSlcblxuICBsZXQgb2ZfYWxpc3QgP3NpemUgYWxpc3QgPVxuICAgIGxldCBzaXplID1cbiAgICAgIG1hdGNoIHNpemUgd2l0aCBTb21lIHNpemUgLT4gc2l6ZSB8IE5vbmUgLT4gTGlzdC5sZW5ndGggYWxpc3RcbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlIHNpemUgaW5cbiAgICBtYXRjaCBhZGRfYWxpc3QgdCBhbGlzdCB3aXRoIE9rICgpIC0+IE9rIHQgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/c2l6ZSBhbGlzdCA9XG4gICAgbWF0Y2ggb2ZfYWxpc3QgP3NpemUgYWxpc3Qgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5vZl9hbGlzdF9leG5cIilcbmVuZFxuXG5tb2R1bGUgSW5fY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gICAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZW5hbWUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgZmlsZW5hbWUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9pblxuXG4gIGxldCBpbnB1dF9hbGwgdCA9XG4gICAgbGV0IHJlYyByZWFkX2FsbF9pbnRvIHQgYnVmID1cbiAgICAgIG1hdGNoIGlucHV0X2NoYXIgdCB3aXRoXG4gICAgICB8IGNoYXIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgICAgICAgcmVhZF9hbGxfaW50byB0IGJ1ZlxuICAgICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gKClcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgcmVhZF9hbGxfaW50byB0IGJ1ZjtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHJlYWRfYWxsIGZpbGVuYW1lID0gd2l0aF9maWxlIGZpbGVuYW1lIH5mOmlucHV0X2FsbFxuZW5kXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG1heF9pbnQgPSBtYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbmVuZFxuXG5tb2R1bGUgRWl0aGVyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuZW5kXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgKCogc2hhZG93IG5vbi10YWlsLXJlY3Vyc2l2ZSBmdW5jdGlvbnMgKilcbiAgICBsZXQgbWVyZ2UgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NvYyA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc3EgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG5cbiAgICBsZXQgcmV2X21hcGkgbGlzdCB+ZiA9XG4gICAgICBsZXQgcmVjIHJldl9tYXBpX2F0IGxpc3QgaSB+ZiB+YWNjID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+IHJldl9tYXBpX2F0IHRhaWwgKGkgKyAxKSB+ZiB+YWNjOihmIGkgaGVhZCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgcmV2X21hcGlfYXQgbGlzdCAwIH5mIH5hY2M6W11cblxuICAgIGxldCBmb2xkX3JpZ2h0MiBsaXN0MSBsaXN0MiB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQyIChyZXYgbGlzdDEpIChyZXYgbGlzdDIpIH5pbml0IH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSBhY2MpXG5cbiAgICBsZXQgbWFwIGxpc3QgfmYgPSByZXYgKHJldl9tYXAgbGlzdCB+ZilcbiAgICBsZXQgbWFwaSBsaXN0IH5mID0gcmV2IChyZXZfbWFwaSBsaXN0IH5mKVxuXG4gICAgbGV0IGZvbGRfcmlnaHQgbGlzdCB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQgKExpc3QucmV2IGxpc3QpIH5pbml0IH5mOihmdW4gYWNjIHggLT4gZiB4IGFjYylcblxuICAgIGxldCBhcHBlbmQgeCB5ID0gcmV2X2FwcGVuZCAocmV2IHgpIHlcbiAgICBsZXQgY29uY2F0IGxpc3QgPSBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6W10gfmY6YXBwZW5kXG5cbiAgICBsZXQgcmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIgPVxuICAgICAgZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gKHgsIHkpIDo6IGFjYylcblxuICAgIGxldCBjb21iaW5lIGxpc3QxIGxpc3QyID0gcmV2IChyZXZfY29tYmluZSBsaXN0MSBsaXN0MilcblxuICAgIGxldCBzcGxpdCBsaXN0ID1cbiAgICAgIGZvbGRfcmlnaHQgbGlzdCB+aW5pdDooW10sIFtdKSB+ZjooZnVuICh4LCB5KSAoeHMsIHlzKSAtPlxuICAgICAgICAgICh4IDo6IHhzLCB5IDo6IHlzKSlcblxuICAgIGxldCBtYXAyIGxpc3QxIGxpc3QyIH5mID1cbiAgICAgIHJldiAoZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgOjogYWNjKSlcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsKVxuICAgIGluXG4gICAgcGFydCBbXSBbXSBsXG5cbiAgbGV0IGluaXQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIH5sZW4gfnBvcyB+ZiB+YWNjID1cbiAgICAgIGlmIHBvcyA+PSBsZW4gdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgIGVsc2UgbG9vcCB+bGVuIH5wb3M6KHBvcyArIDEpIH5mIH5hY2M6KGYgcG9zIDo6IGFjYylcbiAgICBpblxuICAgIGxvb3AgfmxlbiB+cG9zOjAgfmYgfmFjYzpbXVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIFtdIC0+IHRydWUgfCBfIDo6IF8gLT4gZmFsc2VcblxuICBsZXQgcmV2X2ZpbHRlcl9vcHQgbGlzdCA9XG4gICAgZm9sZF9sZWZ0IGxpc3QgfmluaXQ6W10gfmY6KGZ1biB0YWlsIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aCBOb25lIC0+IHRhaWwgfCBTb21lIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuXG4gIGxldCBmaWx0ZXJfb3B0IGxpc3QgPSByZXYgKHJldl9maWx0ZXJfb3B0IGxpc3QpXG4gIGxldCBmaWx0ZXJfbWFwIGxpc3QgfmYgPSByZXZfZmlsdGVyX29wdCAocmV2X21hcCBsaXN0IH5mKVxuICBsZXQgY29uY2F0X21hcCBsaXN0IH5mID0gY29uY2F0IChtYXAgbGlzdCB+ZilcblxuICBsZXQgcmVjIGZpbmRfbWFwIGxpc3QgfmYgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggZiBoZWFkIHdpdGggU29tZSBfIGFzIHNvbWUgLT4gc29tZSB8IE5vbmUgLT4gZmluZF9tYXAgdGFpbCB+ZilcblxuICBsZXQgZmluZF9tYXBfZXhuIGxpc3QgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIGxpc3QgfmYgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbiAgbGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgeCBdIC0+IFNvbWUgeFxuICAgIHwgXyA6OiAoXyA6OiBfIGFzIHJlc3QpIC0+IGxhc3QgcmVzdFxuXG4gIGxldCBzcGxpdF93aGlsZSBsaXN0IH5mID1cbiAgICBsZXQgcmVjIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBmIGhlYWQgLT4gc3BsaXRfd2hpbGVfaW50byB0YWlsIH5mIH5hY2M6KGhlYWQgOjogYWNjKVxuICAgICAgfCBfIDo6IF8gfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCBsaXN0KVxuICAgIGluXG4gICAgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2M6W11cblxuICBsZXQgZmluZF9hX2R1cCAodHlwZSBlbHQpIGxpc3QgfmNvbXBhcmUgPVxuICAgIGxldCBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBlbHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgZW5kIGluXG4gICAgbGV0IG1vZHVsZSBFbHRfc2V0ID0gU2V0Lk1ha2UgKEVsdCkgaW5cbiAgICBsZXQgcmVjIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0ID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIEVsdF9zZXQubWVtIGhlYWQgc2V0IHRoZW4gU29tZSBoZWFkXG4gICAgICAgICAgZWxzZSBmaW5kX2FfZHVwX2luIHRhaWwgfnNldDooRWx0X3NldC5hZGQgaGVhZCBzZXQpXG4gICAgaW5cbiAgICBmaW5kX2FfZHVwX2luIGxpc3QgfnNldDpFbHRfc2V0LmVtcHR5XG5cbiAgbGV0IGFzc29jX29wdCBrZXkgYWxpc3QgPVxuICAgIG1hdGNoIGFzc29jIGtleSBhbGlzdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgKCogcmVvcmRlcnMgYXJndW1lbnRzIHRvIGltcHJvdmUgdHlwZSBpbmZlcmVuY2UgKilcbiAgbGV0IGl0ZXIgbGlzdCB+ZiA9IGl0ZXIgbGlzdCB+ZlxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcbiAgbGV0IGl0ZXIgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbiAgbGV0IHRvX2xpc3QgdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IFtdIHwgU29tZSB4IC0+IFsgeCBdXG5lbmRcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICBsZXQgYmluZCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gZiBhIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXBfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgaGFuZGxlX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBhIHwgRXJyb3IgZSAtPiBmIGVcbmVuZFxuXG5tb2R1bGUgTm9uRW1wdHlMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogJ2EgbGlzdFxuXG4gIGxldCAoIEAgKSAodDEsIHExKSAodDIsIHEyKSA9ICh0MSwgcTEgQCAodDIgOjogcTIpKVxuICBsZXQgaGQgPSBmc3RcbiAgbGV0IHRvX2xpc3QgKHQsIHEpID0gdCA6OiBxXG4gIGxldCBtYXAgfmYgKHQsIHEpID0gKGYgdCwgTGlzdC5tYXAgfmYgcSlcbmVuZFxuXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpID8oYXBwZW5kID0gZmFsc2UpID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9vdXRcblxuICBsZXQgd3JpdGVfYWxsIGZpbGVuYW1lIH5kYXRhID1cbiAgICB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgaXNfZW1wdHkgKHQgOiB0KSA9IGxlbmd0aCB0ID0gMFxuICBsZXQgcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW5cbiAgbGV0IHN1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6KGxlbmd0aCB0IC0gbGVuKSB+bGVuXG4gIGxldCBkcm9wX3ByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6bGVuIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuICBsZXQgZHJvcF9zdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG5cbiAgbGV0IGlzX3ByZWZpeCB0IH5wcmVmaXggPVxuICAgIGxldCByZWMgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCBwb3MpIChnZXQgcHJlZml4IHBvcylcbiAgICAgICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOihwb3MgKyAxKSB+bGVuXG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggcHJlZml4XG4gICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6MCB+bGVuOihsZW5ndGggcHJlZml4KVxuXG4gIGxldCBpc19zdWZmaXggdCB+c3VmZml4ID1cbiAgICBsZXQgcmVjIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvcyB+c3VmZml4X29mZnNldCA9XG4gICAgICBwb3MgPCAwXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCAoc3VmZml4X29mZnNldCArIHBvcykpIChnZXQgc3VmZml4IHBvcylcbiAgICAgICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvczoocG9zIC0gMSkgfnN1ZmZpeF9vZmZzZXRcbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBzdWZmaXhcbiAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4XG4gICAgICAgICB+cG9zOihsZW5ndGggc3VmZml4IC0gMSlcbiAgICAgICAgIH5zdWZmaXhfb2Zmc2V0OihsZW5ndGggdCAtIGxlbmd0aCBzdWZmaXgpXG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICBsZXQgcmVjIGV4aXN0c19hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPCBsZW4gJiYgKGYgKGdldCB0IHBvcykgfHwgZXhpc3RzX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGV4aXN0c19hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICBsZXQgcmVjIGZvcl9hbGxfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlbiB8fCAoZiAoZ2V0IHQgcG9zKSAmJiBmb3JfYWxsX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIGluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCByaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aFxuICAgIHwgaSAtPiBTb21lIGlcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBsc3BsaXQyIHQgfm9uID1cbiAgICBtYXRjaCBpbmRleF9vcHQgdCBvbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgICBTb21lIChzdWIgdCB+cG9zOjAgfmxlbjppLCBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSkpXG5cbiAgbGV0IGNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IGxvd2VyY2FzZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG4gIGxldCB1bmNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgc3BsaXRfb25fY2hhciB0IH5zZXAgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXIgc2VwIHRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gc3RyaW5nKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICBsZXQgZmluZF9vcHQga2V5IHQgPVxuICAgICAgbWF0Y2ggZmluZCBrZXkgdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoU3RyaW5nKVxuZW5kXG5cbmxldCAoIEAgKSA9IExpc3QuYXBwZW5kXG5sZXQgb3V0cHV0IG9jIGJ5dGVzIH5wb3MgfmxlbiA9IG91dHB1dCBvYyBieXRlcyBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgfnBvcyB+bGVuID0gb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgcG9zIGxlblxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBMID0gQXN0bGliLkxvY2F0aW9uXG5cbnR5cGUgdCA9IGxvY2F0aW9uID0ge1xuICBsb2Nfc3RhcnQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19lbmQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmxldCBpbl9maWxlIG5hbWUgPVxuICBsZXQgbG9jID0geyBwb3NfZm5hbWUgPSBuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IC0xIH0gaW5cbiAgeyBsb2Nfc3RhcnQgPSBsb2M7IGxvY19lbmQgPSBsb2M7IGxvY19naG9zdCA9IHRydWUgfVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxvYyBmbiA9XG4gIGxldCBsb2Nfc3RhcnQgPSB7IGxvYy5sb2Nfc3RhcnQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIGxldCBsb2NfZW5kID0geyBsb2MubG9jX2VuZCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQ7IGxvY19lbmQgfVxuXG5sZXQgbm9uZSA9IGluX2ZpbGUgXCJfbm9uZV9cIlxuXG5sZXQgaW5pdCBsZXhidWYgZm5hbWUgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfVxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgZm10ID0gTC5yYWlzZV9lcnJvcmYgP2xvYyBmbXRcbmxldCByZXBvcnRfZXhjZXB0aW9uID0gTC5yZXBvcnRfZXhjZXB0aW9uXG5cbmxldCBvZl9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAge1xuICAgIGxvY19zdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICBsb2NfZW5kID0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gIH1cblxubGV0IHByaW50IHBwZiB0ID1cbiAgU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcIlxuICAgIHQubG9jX3N0YXJ0LnBvc19mbmFtZSB0LmxvY19zdGFydC5wb3NfbG51bVxuICAgICh0LmxvY19zdGFydC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG4gICAgKHQubG9jX2VuZC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG5cbnR5cGUgbm9ucmVjICdhIGxvYyA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IHQgfVxuXG5sZXQgY29tcGFyZV9wb3MgcDEgcDIgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV0IGNvbHVtbiBwID1cbiAgICAoKiBNYW51YWwgZXh0cmFjdDpcbiAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc19jbnVtIGFuZCBwb3NfYm9sIGlzIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0XG4gICAgICAgd2l0aGluIHRoZSBsaW5lIChpLmUuIHRoZSBjb2x1bW4gbnVtYmVyLCBhc3N1bWluZyBlYWNoIGNoYXJhY3RlciBpc1xuICAgICAgIG9uZSBjb2x1bW4gd2lkZSkuICopXG4gICAgcC5wb3NfY251bSAtIHAucG9zX2JvbFxuICBpblxuICBtYXRjaCBJbnQuY29tcGFyZSBwMS5wb3NfbG51bSBwMi5wb3NfbG51bSB3aXRoXG4gIHwgMCAtPiBJbnQuY29tcGFyZSAoY29sdW1uIHAxKSAoY29sdW1uIHAyKVxuICB8IG4gLT4gblxuXG5sZXQgbWluX3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyIDw9IDAgdGhlbiBwMSBlbHNlIHAyXG5sZXQgbWF4X3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyID49IDAgdGhlbiBwMSBlbHNlIHAyXG5cbmxldCBjb21wYXJlIGxvYzEgbG9jMiA9XG4gIG1hdGNoIGNvbXBhcmVfcG9zIGxvYzEubG9jX3N0YXJ0IGxvYzIubG9jX3N0YXJ0IHdpdGhcbiAgfCAwIC0+IGNvbXBhcmVfcG9zIGxvYzEubG9jX2VuZCBsb2MyLmxvY19lbmRcbiAgfCBuIC0+IG5cblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIGluY2x1ZGUgUHB4bGliX2FzdC5Mb2NhdGlvbl9lcnJvclxuXG4gIGxldCBjcmVhdGVmIH5sb2MgZm10ID0gRm9ybWF0Lmthc3ByaW50ZiAoZnVuIHN0ciAtPiBtYWtlIH5sb2MgfnN1YjpbXSBzdHIpIGZtdFxuZW5kXG5cbmxldCBlcnJvcl9leHRlbnNpb25mIH5sb2MgZm10ID1cbiAgRm9ybWF0Lmthc3ByaW50ZlxuICAgIChmdW4gc3RyIC0+IEVycm9yLnRvX2V4dGVuc2lvbiBAQCBFcnJvci5tYWtlIH5sb2MgfnN1YjpbXSBzdHIpXG4gICAgZm10XG5cbmV4Y2VwdGlvbiBFcnJvciA9IEwuRXJyb3JcblxubGV0ICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgfCBFcnJvciBlIC0+IFNvbWUgKEVycm9yLm1lc3NhZ2UgZSlcbiAgICB8IF8gLT4gTm9uZSlcbiIsIm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gRXhwZWN0ZWQgb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgZmFpbCBsb2MgZXhwZWN0ZWQgPSByYWlzZSAoRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpKVxuXG50eXBlIGNvbnRleHQgPSB7XG4gICgqIFttYXRjaGVkXSBjb3VudHMgaG93IG1hbnkgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBtYXRjaGVkLiBUaGlzIGlzIHVzZWQgdG8gZmluZCB3aGF0XG4gICAgIHBhdHRlcm4gbWF0Y2hlcyB0aGUgbW9zdCBzb21lIHBpZWNlIG9mIGFzdCBpbiBbQXN0X3BhdHRlcm4uYWx0XS4gSW4gdGhlIGNhc2Ugd2hlcmVcbiAgICAgYWxsIGJyYW5jaGVzIGZhaWwgdG8gbWF0Y2gsIHdlIHJlcG9ydCB0aGUgZXJyb3IgZnJvbSB0aGUgb25lIHRoYXQgbWF0Y2hlcyB0aGVcbiAgICAgbW9zdC5cblxuICAgICBUaGlzIGlzIG9ubHkgaW5jcmVtZW50ZWQgYnkgY29tYmluYXRvcnMgdGhhdCBjYW4gZmFpbC4gKilcbiAgbXV0YWJsZSBtYXRjaGVkIDogaW50O1xufVxuXG50eXBlICgnbWF0Y2hlZF92YWx1ZSwgJ2ssICdrX3Jlc3VsdCkgdCA9XG4gIHwgVCBvZiAoY29udGV4dCAtPiBMb2NhdGlvbi50IC0+ICdtYXRjaGVkX3ZhbHVlIC0+ICdrIC0+ICdrX3Jlc3VsdClcbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTSA9XG4gIHN0cnVjdFxuICAgIGxldCBhdHRyaWJ1dGUgfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+cGF5bG9hZCAtPlxuICAgICAgICAgICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBiaW5kaW5nX29wIH5sb2MgID1cbiAgICAgICgoZnVuIH5vcCAtPlxuICAgICAgICAgICgoZnVuIH5wYXQgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmV4cCAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYm9wX29wID0gb3A7XG4gICAgICAgICAgICAgICAgICAgIHBib3BfcGF0ID0gcGF0O1xuICAgICAgICAgICAgICAgICAgICBwYm9wX2V4cCA9IGV4cDtcbiAgICAgICAgICAgICAgICAgICAgcGJvcF9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNhc2UgfmxocyAgPVxuICAgICAgKChmdW4gfmd1YXJkIC0+XG4gICAgICAgICAgKChmdW4gfnJocyAtPiB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9mdW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfYXBwbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGNsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2xldCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2luaGVyaXQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY2ZfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl92YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfbWV0aG9kIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9jb25zdHJhaW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbml0aWFsaXplciB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2F0dHJpYnV0ZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3NfaW5mb3MgfmxvYyAgPVxuICAgICAgKChmdW4gfnZpcnQgLT5cbiAgICAgICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfY29uc3RyIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3R5X2Fycm93IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfaW5oZXJpdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX3ZhbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX21ldGhvZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9tZXRob2QgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9jb25zdHJhaW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2F0dHJpYnV0ZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0Zl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dmFycyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+YXJncyAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfnJlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9hcnJvdyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3R1cGxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9jb25zdHIgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfb2JqZWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfb2JqZWN0ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2NsYXNzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYWxpYXMgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF92YXJpYW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wb2x5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wYWNrYWdlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wYWNrYWdlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX3N0cmluZyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfaWRlbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBkaXJfYm9vbCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdGFudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mdW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXBwbHkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9tYXRjaCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3RyeSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3RyeSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90dXBsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHVwbGUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RydWN0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3JlY29yZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9maWVsZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NldGZpZWxkIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXJyYXkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfd2hpbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF93aGlsZSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9mb3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4geDMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4NCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb2VyY2UgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2VuZCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbmV3IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb3ZlcnJpZGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX292ZXJyaWRlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldG1vZHVsZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRleGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXNzZXJ0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGF6eSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9wb2x5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vYmplY3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9uZXd0eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3dHlwZSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9wYWNrIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wYWNrIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2xldG9wIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+a2luZCAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBpbmNsdWRlX2luZm9zIH5sb2MgID1cbiAgICAgICgoZnVuIG1vZF8gLT5cbiAgICAgICAgICB7IHBpbmNsX21vZCA9IG1vZF87IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IFtdIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH5tdXRhYmxlXyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICAgICAgICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsZXRvcCB+bGV0XyAgPVxuICAgICAgKChmdW4gfmFuZHMgLT4gKChmdW4gfmJvZHkgLT4geyBsZXRfOyBhbmRzOyBib2R5IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGxvY2F0aW9uIH5zdGFydCAgPVxuICAgICAgKChmdW4gfmVuZF8gLT5cbiAgICAgICAgICAoKGZ1biB+Z2hvc3QgLT5cbiAgICAgICAgICAgICAgeyBsb2Nfc3RhcnQgPSBzdGFydDsgbG9jX2VuZCA9IGVuZF87IGxvY19naG9zdCA9IGdob3N0IH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtYl9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbWJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbWJfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtZF9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICBwbWRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1kX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9pZGVudCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9pZGVudCB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2Rfc3RydWN0dXJlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2Z1bmN0b3IgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9hcHBseSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfdW5wYWNrIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF9leHRlbnNpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfm1hbmlmZXN0IC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2lkZW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfZnVuY3RvciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X3dpdGggfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV90eXBlb2YgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfYWxpYXMgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfYWxpYXMgeDApXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwbXRkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBtdGRfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvdGFnIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcG9mX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwb2ZfZGVzYyA9IChPdGFnICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvaW5oZXJpdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT2luaGVyaXQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvcGVuX2luZm9zIH5sb2MgID1cbiAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAgKChmdW4gfm92ZXJyaWRlIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICBwb3Blbl9vdmVycmlkZSA9IG92ZXJyaWRlO1xuICAgICAgICAgICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYW55IH5sb2MgID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2FsaWFzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfYWxpYXMgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RhbnQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0YW50IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2ludGVydmFsIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdHVwbGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF92YXJpYW50IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9yZWNvcmQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYXJyYXkgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X29yIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdHlwZSB4MClcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9sYXp5IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9sYXp5IHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3VucGFjayB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdW5wYWNrIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2V4Y2VwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXhjZXB0aW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2V4dGVuc2lvbiB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfZXh0ZW5zaW9uIHgwKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X29wZW4gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgID1cbiAgICAgICgoZnVuIH5sbnVtIC0+XG4gICAgICAgICAgKChmdW4gfmJvbCAtPlxuICAgICAgICAgICAgICAoKGZ1biB+Y251bSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwb3NfZm5hbWUgPSBmbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSBsbnVtO1xuICAgICAgICAgICAgICAgICAgICBwb3NfYm9sID0gYm9sO1xuICAgICAgICAgICAgICAgICAgICBwb3NfY251bSA9IGNudW1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcnRhZyB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHByZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgICAgIHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCByaW5oZXJpdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX3ZhbHVlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ190eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ190eXBleHQgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXh0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXhjZXB0aW9uIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19tb2R1bGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2RzdWJzdCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfbW9kdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19tb2R0eXBlc3Vic3QgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZXN1YnN0IHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ19vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX29wZW4geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2luY2x1ZGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfaW5jbHVkZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfY2xhc3MgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3MgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzaWdfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2V2YWwgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT5cbiAgICAgICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX3ZhbHVlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfcHJpbWl0aXZlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ByaW1pdGl2ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPlxuICAgICAgICAgICgoZnVuIHgxIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdHlwZXh0IH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfZXhjZXB0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4Y2VwdGlvbiB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfbW9kdHlwZSB+bG9jICA9XG4gICAgICAoKGZ1biB4MCAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9vcGVuIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2NsYXNzIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl9jbGFzc190eXBlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzX3R5cGUgeDApIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwc3RyX2luY2x1ZGUgfmxvYyAgPVxuICAgICAgKChmdW4geDAgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfYXR0cmlidXRlIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2F0dHJpYnV0ZSB4MCkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIHgwIC0+XG4gICAgICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfmxvYyAgPVxuICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAoKGZ1biB+YXJnIC0+IHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5uYW1lIC0+XG4gICAgICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+Y3N0cnMgLT5cbiAgICAgICAgICAgICAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIH5tYW5pZmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZSA9IHByaXZhdGVfO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2xvYyA9IGxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9leGNlcHRpb24gfmxvYyAgPVxuICAgICAgKChmdW4gY29uc3RydWN0b3IgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHR5cGVfZXh0ZW5zaW9uIH5sb2MgID1cbiAgICAgICgoZnVuIH5wYXRoIC0+XG4gICAgICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+Y29uc3RydWN0b3JzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgICAgICAgICAgICAgICAgICBwdHlleHRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5sb2MgID1cbiAgICAgICgoZnVuIH5wYXQgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwciAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHZiX3BhdCA9IHBhdDtcbiAgICAgICAgICAgICAgICBwdmJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdmJfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bG9jICA9XG4gICAgICAoKGZ1biB+bmFtZSAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICAoKGZ1biB+cHJpbSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgICAgICAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICBlbmRcbm1vZHVsZSBNYWtlKExvYzpzaWcgdmFsIGxvYyA6IExvY2F0aW9uLnQgZW5kKSA9XG4gIHN0cnVjdFxuICAgIGxldCBsb2MgPSBMb2MubG9jXG4gICAgbGV0IGF0dHJpYnV0ZSB+bmFtZSAgPVxuICAgICAgKChmdW4gfnBheWxvYWQgLT5cbiAgICAgICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgYmluZGluZ19vcCB+b3AgID1cbiAgICAgICgoZnVuIH5wYXQgLT5cbiAgICAgICAgICAoKGZ1biB+ZXhwIC0+XG4gICAgICAgICAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGNhc2UgfmxocyAgPVxuICAgICAgKChmdW4gfmd1YXJkIC0+XG4gICAgICAgICAgKChmdW4gfnJocyAtPiB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9jb25zdHIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHIgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9zdHJ1Y3R1cmUgeDAgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfc3RydWN0dXJlIHgwKSB9XG4gICAgbGV0IHBjbF9mdW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICAoKGZ1biB4MyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjbF9hcHBseSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfbGV0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGNsX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjbF9kZXNjID0gKFBjbF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY2xfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2V4dGVuc2lvbiB4MCkgfVxuICAgIGxldCBwY2xfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSAoUGNsX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl9pbmhlcml0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGNmX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY2ZfZGVzYyA9IChQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjZl92YWwgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfdmFsIHgwKSB9XG4gICAgbGV0IHBjZl9tZXRob2QgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjZl9jb25zdHJhaW50IHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2NvbnN0cmFpbnQgeDApIH1cbiAgICBsZXQgcGNmX2luaXRpYWxpemVyIHgwID1cbiAgICAgIHsgcGNmX2F0dHJpYnV0ZXMgPSBbXTsgcGNmX2xvYyA9IGxvYzsgcGNmX2Rlc2MgPSAoUGNmX2luaXRpYWxpemVyIHgwKSB9XG4gICAgbGV0IHBjZl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBjZl9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfZXh0ZW5zaW9uIHgwKSB9XG4gICAgbGV0IGNsYXNzX2luZm9zIH52aXJ0ICA9XG4gICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgKChmdW4gfm5hbWUgLT5cbiAgICAgICAgICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGNpX3ZpcnQgPSB2aXJ0O1xuICAgICAgICAgICAgICAgICAgICBwY2lfcGFyYW1zID0gcGFyYW1zO1xuICAgICAgICAgICAgICAgICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBjaV9leHByID0gZXhwcjtcbiAgICAgICAgICAgICAgICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBjbGFzc19zaWduYXR1cmUgfnNlbGYgID1cbiAgICAgICgoZnVuIH5maWVsZHMgLT4geyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICA9XG4gICAgICAoKGZ1biB+ZmllbGRzIC0+IHsgcGNzdHJfc2VsZiA9IHNlbGY7IHBjc3RyX2ZpZWxkcyA9IGZpZWxkcyB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfY29uc3RyIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IChQY3R5X2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGN0eV9zaWduYXR1cmUgeDAgPVxuICAgICAgeyBwY3R5X2F0dHJpYnV0ZXMgPSBbXTsgcGN0eV9sb2MgPSBsb2M7IHBjdHlfZGVzYyA9IChQY3R5X3NpZ25hdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0eV9hcnJvdyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwY3R5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwY3RmX2luaGVyaXQgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2luaGVyaXQgeDApIH1cbiAgICBsZXQgcGN0Zl92YWwgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX3ZhbCB4MCkgfVxuICAgIGxldCBwY3RmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjdGZfYXR0cmlidXRlcyA9IFtdOyBwY3RmX2xvYyA9IGxvYzsgcGN0Zl9kZXNjID0gKFBjdGZfbWV0aG9kIHgwKSB9XG4gICAgbGV0IHBjdGZfY29uc3RyYWludCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBjdGZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3RmX2xvYyA9IGxvYztcbiAgICAgICAgcGN0Zl9kZXNjID0gKFBjdGZfY29uc3RyYWludCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2F0dHJpYnV0ZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9leHRlbnNpb24geDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH52YXJzIC0+XG4gICAgICAgICAgKChmdW4gfmFyZ3MgLT5cbiAgICAgICAgICAgICAgKChmdW4gfnJlcyAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIHBjZF92YXJzID0gdmFycztcbiAgICAgICAgICAgICAgICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgICAgICAgICAgICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICBwY2RfYXR0cmlidXRlcyA9IFtdXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSBQdHlwX2FueVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwdHlwX2Fycm93IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9vYmplY3QgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9jbGFzcyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHB0eXBfYWxpYXMgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHR5cF9wb2x5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwdHlwX3BhY2thZ2UgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BhY2thZ2UgeDApXG4gICAgICB9XG4gICAgbGV0IHB0eXBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBkaXJfc3RyaW5nIHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZGlyX2lkZW50IHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfZnVuY3Rpb24geDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1bmN0aW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1biB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXBwbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX21hdGNoIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9tYXRjaCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90cnkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3RyeSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF90dXBsZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHVwbGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RydWN0IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfdmFyaWFudCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdmFyaWFudCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9yZWNvcmQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3JlY29yZCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9maWVsZCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZmllbGQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfc2V0ZmllbGQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfYXJyYXkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfd2hpbGUgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX2ZvciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgICgoZnVuIHgzIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB4NCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfY29uc3RyYWludCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9jb2VyY2UgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICAoKGZ1biB4MiAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwZXhwX3NlbmQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbmV3IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9vdmVycmlkZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAgKChmdW4geDIgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9sZXRleGNlcHRpb24geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9hc3NlcnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Fzc2VydCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sYXp5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sYXp5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BvbHkgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BvbHkgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfb2JqZWN0IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vYmplY3QgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3dHlwZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbmV3dHlwZSAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcGV4cF9wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wYWNrIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29wZW4geDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29wZW4gKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBleHBfbGV0b3AgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG9wIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX3VucmVhY2hhYmxlXG4gICAgICB9XG4gICAgbGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZSAgPVxuICAgICAgKChmdW4gfmtpbmQgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgcGV4dF9raW5kID0ga2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IGluY2x1ZGVfaW5mb3MgbW9kXyA9XG4gICAgICB7IHBpbmNsX21vZCA9IG1vZF87IHBpbmNsX2xvYyA9IGxvYzsgcGluY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICBsZXQgbGFiZWxfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH5tdXRhYmxlXyAtPlxuICAgICAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgICAgICAgICAgcGxkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICAgICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbGV0b3AgfmxldF8gID1cbiAgICAgICgoZnVuIH5hbmRzIC0+ICgoZnVuIH5ib2R5IC0+IHsgbGV0XzsgYW5kczsgYm9keSB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgID1cbiAgICAgICgoZnVuIH5lbmRfIC0+XG4gICAgICAgICAgKChmdW4gfmdob3N0IC0+XG4gICAgICAgICAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bmFtZSAgPVxuICAgICAgKChmdW4gfmV4cHIgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbWJfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwbWJfZXhwciA9IGV4cHI7XG4gICAgICAgICAgICBwbWJfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1iX2xvYyA9IGxvY1xuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+dHlwZV8gLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbWRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwbWRfdHlwZSA9IHR5cGVfO1xuICAgICAgICAgICAgcG1kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtZF9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtb2RfaWRlbnQgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2FwcGx5IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IChQbW9kX2FwcGx5ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbW9kX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG1vZF91bnBhY2sgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgIHBtc19hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwbXR5X2lkZW50IHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcG10eV93aXRoIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X3dpdGggKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBtdHlfdHlwZW9mIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV90eXBlb2YgeDApIH1cbiAgICBsZXQgcG10eV9leHRlbnNpb24geDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcG10eV9hbGlhcyB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfYWxpYXMgeDApIH1cbiAgICBsZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgID1cbiAgICAgICgoZnVuIH50eXBlXyAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBwbXRkX3R5cGUgPSB0eXBlXztcbiAgICAgICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IG90YWcgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBvaW5oZXJpdCB4MCA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9XG4gICAgbGV0IG9wZW5faW5mb3MgfmV4cHIgID1cbiAgICAgICgoZnVuIH5vdmVycmlkZSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9hbnkgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYWxpYXMgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X2NvbnN0YW50IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfdHVwbGUgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgeDAgPVxuICAgICAgKChmdW4geDEgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfcmVjb3JkIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBwYXRfYXJyYXkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29yIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgICAgICB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwcGF0X3R5cGUgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfbGF6eSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF91bnBhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leGNlcHRpb24geDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vcGVuIHgwID1cbiAgICAgICgoZnVuIHgxIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgICAgIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgID1cbiAgICAgICgoZnVuIH5sbnVtIC0+XG4gICAgICAgICAgKChmdW4gfmJvbCAtPlxuICAgICAgICAgICAgICAoKGZ1biB+Y251bSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwb3NfZm5hbWUgPSBmbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcG9zX2xudW0gPSBsbnVtO1xuICAgICAgICAgICAgICAgICAgICBwb3NfYm9sID0gYm9sO1xuICAgICAgICAgICAgICAgICAgICBwb3NfY251bSA9IGNudW1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcnRhZyB4MCA9XG4gICAgICAoKGZ1biB4MSAtPlxuICAgICAgICAgICgoZnVuIHgyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHByZl9sb2MgPSBsb2M7XG4gICAgICAgICAgICAgICAgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHJpbmhlcml0IHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZXh0IHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzaWdfZXhjZXB0aW9uIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc2lnX21vZHVsZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHN1YnN0IHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2R0eXBlc3Vic3QgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfb3BlbiB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX29wZW4geDApIH1cbiAgICBsZXQgcHNpZ19pbmNsdWRlIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3MgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzc190eXBlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzX3R5cGUgeDApIH1cbiAgICBsZXQgcHNpZ19hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzaWdfZXh0ZW5zaW9uIHgwID1cbiAgICAgICgoZnVuIHgxIC0+IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfZXZhbCB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9KVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgcHN0cl92YWx1ZSB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfcHJpbWl0aXZlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3ByaW1pdGl2ZSB4MCkgfVxuICAgIGxldCBwc3RyX3R5cGUgeDAgPVxuICAgICAgKChmdW4geDEgLT4geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZSAoeDAsIHgxKSkgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4gICAgbGV0IHBzdHJfdHlwZXh0IHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdHlwZXh0IHgwKSB9XG4gICAgbGV0IHBzdHJfZXhjZXB0aW9uIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4Y2VwdGlvbiB4MCkgfVxuICAgIGxldCBwc3RyX21vZHVsZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX3JlY21vZHVsZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9yZWNtb2R1bGUgeDApIH1cbiAgICBsZXQgcHN0cl9tb2R0eXBlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4geDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzdHJfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc3RyX2V4dGVuc2lvbiB4MCA9XG4gICAgICAoKGZ1biB4MSAtPiB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leHRlbnNpb24gKHgwLCB4MSkpIH0pXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWUgID1cbiAgICAgICgoZnVuIH5hcmcgLT4geyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5uYW1lICA9XG4gICAgICAoKGZ1biB+cGFyYW1zIC0+XG4gICAgICAgICAgKChmdW4gfmNzdHJzIC0+XG4gICAgICAgICAgICAgICgoZnVuIH5raW5kIC0+XG4gICAgICAgICAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB+bWFuaWZlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9jc3RycyA9IGNzdHJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbiAgICBsZXQgdHlwZV9leGNlcHRpb24gY29uc3RydWN0b3IgPVxuICAgICAge1xuICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+cGF0aCAgPVxuICAgICAgKChmdW4gfnBhcmFtcyAtPlxuICAgICAgICAgICgoZnVuIH5jb25zdHJ1Y3RvcnMgLT5cbiAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfIC0+XG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5wYXQgID1cbiAgICAgICgoZnVuIH5leHByIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHZiX3BhdCA9IHBhdDtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZXhwcjtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gbG9jXG4gICAgICAgICAgfSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZSAgPVxuICAgICAgKChmdW4gfnR5cGVfIC0+XG4gICAgICAgICAgKChmdW4gfnByaW0gLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgcHZhbF90eXBlID0gdHlwZV87XG4gICAgICAgICAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwdmFsX2xvYyA9IGxvY1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxuICBlbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBsb2MgPSB7IHR4dCA6ICdhOyBsb2MgOiBMb2NhdGlvbi50IH1cblxubGV0IHR4dCB0ID0gdC50eHRcbmxldCBsb2MgdCA9IHQubG9jXG5sZXQgbWFrZSB+bG9jIHR4dCA9IHsgbG9jOyB0eHQgfVxubGV0IG1hcCB0IH5mID0geyB0IHdpdGggdHh0ID0gZiB0LnR4dCB9XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbG9uZ2lkZW50ID0gTGlkZW50IG9mIHN0cmluZyB8IExkb3Qgb2YgdCAqIHN0cmluZyB8IExhcHBseSBvZiB0ICogdFxuXG4gIGxldCBjb21wYXJlIDogdCAtPiB0IC0+IGludCA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBpc19ub3JtYWxfaWRlbnRfY2hhciA9IGZ1bmN0aW9uXG4gICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICcwJyAuLiAnOScgfCAnXycgfCAnXFwnJyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBcImFzclwiIHwgXCJsYW5kXCIgfCBcImxvclwiIHwgXCJsc2xcIiB8IFwibHNyXCIgfCBcImx4b3JcIiB8IFwibW9kXCIgfCBcIm9yXCIgLT4gZmFsc2VcbiAgICB8IHN0cmluZyAtPiBTdHJpbmcuZm9yX2FsbCBzdHJpbmcgfmY6aXNfbm9ybWFsX2lkZW50X2NoYXJcblxuICBsZXQgc2hvcnRfbmFtZSBzdHJpbmcgPVxuICAgIGlmIGlzX25vcm1hbF9pZGVudCBzdHJpbmcgdGhlbiBzdHJpbmcgZWxzZSBcIiggXCIgXiBzdHJpbmcgXiBcIiApXCJcblxuICBsZXQgcmVjIG5hbWUgPSBmdW5jdGlvblxuICAgIHwgTGlkZW50IHMgLT4gc2hvcnRfbmFtZSBzXG4gICAgfCBMZG90IChhLCBiKSAtPiBuYW1lIGEgXiBcIi5cIiBeIHNob3J0X25hbWUgYlxuICAgIHwgTGFwcGx5IChhLCBiKSAtPiBQcmludGYuc3ByaW50ZiBcIiVzKCVzKVwiIChuYW1lIGEpIChuYW1lIGIpXG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChuYW1lIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCByZWMgZmxhdCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBMaWRlbnQgcyAtPiBzIDo6IGFjY3VcbiAgfCBMZG90IChsaWQsIHMpIC0+IGZsYXQgKHMgOjogYWNjdSkgbGlkXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCBmbGF0dGVuX2V4biBsaWQgPSBmbGF0IFtdIGxpZFxuXG5sZXQgbGFzdF9leG4gPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHNcbiAgfCBMZG90IChfLCBzKSAtPiBzXG4gIHwgTGFwcGx5IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5Mb25naWRlbnQuZmxhdHRlblwiXG5cbmxldCB1bmZsYXR0ZW4gfmluaXQgbCA9IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQgfmY6KGZ1biBhY2MgcyAtPiBMZG90IChhY2MsIHMpKVxuXG4oKiBmb3IgY2FzZXMgd2l0aG91dCBkb3R0ZWQgb3BlcmF0b3JzIChlLmcuIFtwYXJzZSBcIkEuQi5DXCJdKSAqKVxubGV0IHBhcnNlX3NpbXBsZSBzID1cbiAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgcyB+c2VwOicuJyB3aXRoXG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgcyA6OiBsIC0+IHVuZmxhdHRlbiB+aW5pdDooTGlkZW50IHMpIGxcblxuKCogaGFuZGxlIFtcIkEuQi4oKy4rKVwiXSBvciBbXCJWZWMuKC4lLigpPC0pXCJdICopXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpbnZhbGlkICgpID1cbiAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJQcHhsaWIuTG9uZ2lkZW50LnBhcnNlOiAlU1wiIHMpXG4gIGluXG4gIGlmIFN0cmluZy5sZW5ndGggcyA8IDEgdGhlbiBpbnZhbGlkICgpO1xuICBsZXQgb3Blbl9wYXIgPSBTdHJpbmcuaW5kZXhfb3B0IHMgJygnIGluXG4gIGxldCBjbG9zZV9wYXIgPSBTdHJpbmcuaW5kZXhfb3B0IHMgJyknIGluXG4gIG1hdGNoIChzLlswXSwgb3Blbl9wYXIsIGNsb3NlX3Bhcikgd2l0aFxuICB8ICgnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyB8ICdfJyksIE5vbmUsIE5vbmUgLT4gcGFyc2Vfc2ltcGxlIHNcbiAgfCBfLCBOb25lLCBOb25lIC0+IExpZGVudCBzICgqIFRoaXMgaXMgYSByYXcgb3BlcmF0b3IsIG5vIG1vZHVsZSBwYXRoICopXG4gIHwgXywgTm9uZSwgXyB8IF8sIF8sIE5vbmUgLT4gaW52YWxpZCAoKVxuICB8IF8sIFNvbWUgbCwgU29tZSByIC0+IChcbiAgICAgIGlmIEludC4ociA8PiBTdHJpbmcubGVuZ3RoIHMgLSAxKSB0aGVuIGludmFsaWQgKCk7XG4gICAgICBsZXQgZ3JvdXAgPVxuICAgICAgICBpZiBJbnQuKHIgPSBsICsgMSkgdGhlbiBcIigpXCJcbiAgICAgICAgZWxzZSBTdHJpbmcudHJpbSAoU3RyaW5nLnN1YiBzIH5wb3M6KGwgKyAxKSB+bGVuOihyIC0gbCAtIDEpKVxuICAgICAgaW5cbiAgICAgIGlmIEludC4obCA9IDApIHRoZW4gTGlkZW50IGdyb3VwXG4gICAgICBlbHNlIGlmIENoYXIuKHMuW2wgLSAxXSA8PiAnLicpIHRoZW4gaW52YWxpZCAoKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOihsIC0gMSkgaW5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0X29uX2NoYXIgYmVmb3JlIH5zZXA6Jy4nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBzIDo6IGwgLT4gTGRvdCAodW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbCwgZ3JvdXApKVxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2UgKFQpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2UgKFQpXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIERlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBMb2MudFxuXG4gICAgbGV0IGxvYyAoeCA6IF8gdCkgPSB4LmxvY1xuICAgIGxldCBtayB+bG9jIHggPSB7IGxvYzsgdHh0ID0geCB9XG4gICAgbGV0IG1hcCBmIHQgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiAgICBsZXQgbWFwX2xpZGVudCB4ID0gbWFwIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHhcbiAgICBsZXQgbGlkZW50IH5sb2MgeCA9IG1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB4KVxuICBlbmRcblxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfnZhcnMgfmFyZ3MgfnJlc1xuICBlbmRcblxuICAoKi0tLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gLS0tLS0qKVxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgfmxvYyBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2Mgfm5hbWUgfmFyZ3MgfnJlcyA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSBbXTtcbiAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgIHBjZF9yZXMgPSByZXM7XG4gICAgICBwY2RfbG9jID0gbG9jO1xuICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICB9XG5cbiAgKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHZicyAtPiBbIHBzdHJfdmFsdWUgfmxvYyByZWNfZmxhZyB2YnMgXVxuXG4gIGxldCBub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jOl8gfm5hbWU6XyB+cGFyYW1zOl8gfmNzdHJzOl8gfmtpbmQ6X1xuICAgICAgfnByaXZhdGVfOl8gfm1hbmlmZXN0Ol8gPVxuICAgIGZhaWx3aXRoXG4gICAgICBcIlBweGxpYi5Bc3RfYnVpbGRlci5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbjogZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb25cIlxuXG4gIGxldCBlaW50IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBlY2hhciB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBlc3RyaW5nIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IGVmbG9hdCB+bG9jIHQgPSBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IGVpbnQzMiB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IGVpbnQ2NCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IGVuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgcGludCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQudG9fc3RyaW5nIHQsIE5vbmUpKVxuICBsZXQgcGNoYXIgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfY2hhciB0KVxuICBsZXQgcHN0cmluZyB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9zdHJpbmcgKHQsIGxvYywgTm9uZSkpXG4gIGxldCBwZmxvYXQgfmxvYyB0ID0gcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfZmxvYXQgKHQsIE5vbmUpKVxuXG4gIGxldCBwaW50MzIgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgdCwgU29tZSAnbCcpKVxuXG4gIGxldCBwaW50NjQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChJbnQ2NC50b19zdHJpbmcgdCwgU29tZSAnTCcpKVxuXG4gIGxldCBwbmF0aXZlaW50IH5sb2MgdCA9XG4gICAgcHBhdF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoTmF0aXZlaW50LnRvX3N0cmluZyB0LCBTb21lICduJykpXG5cbiAgbGV0IGVib29sIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyAoQm9vbC50b19zdHJpbmcgdCkpIE5vbmVcblxuICBsZXQgcGJvb2wgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBldmFyIH5sb2MgdiA9IHBleHBfaWRlbnQgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQucGFyc2UgdikpXG4gIGxldCBwdmFyIH5sb2MgdiA9IHBwYXRfdmFyIH5sb2MgKExvY2F0ZWQubWsgfmxvYyB2KVxuICBsZXQgZXVuaXQgfmxvYyA9IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgXCIoKVwiKSBOb25lXG4gIGxldCBwdW5pdCB+bG9jID0gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHBleHBfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwcGF0X3R1cGxlIH5sb2MgbFxuICBsZXQgcHR5cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcHR5cF90dXBsZSB+bG9jIGxcblxuICBsZXQgcGV4cF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwZXhwX3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHBhdF90dXBsZV9vcHQgfmxvYyBsID1cbiAgICBtYXRjaCBsIHdpdGggW10gLT4gTm9uZSB8IF8gOjogXyAtPiBTb21lIChwcGF0X3R1cGxlIH5sb2MgbClcblxuICBsZXQgcHR5cF9wb2x5IH5sb2MgdmFycyB0eSA9XG4gICAgbWF0Y2ggdmFycyB3aXRoIFtdIC0+IHR5IHwgXyAtPiBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5XG5cbiAgbGV0IHBleHBfYXBwbHkgfmxvYyBlIGVsID1cbiAgICBtYXRjaCAoZSwgZWwpIHdpdGhcbiAgICB8IF8sIFtdIC0+IGVcbiAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sIF8gLT5cbiAgICAgICAgeyBlIHdpdGggcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoZSwgYXJncyBAIGVsKSB9XG4gICAgfCBfIC0+IHBleHBfYXBwbHkgfmxvYyBlIGVsXG5cbiAgbGV0IGVhcHBseSB+bG9jIGUgZWwgPVxuICAgIHBleHBfYXBwbHkgfmxvYyBlIChMaXN0Lm1hcCBlbCB+ZjooZnVuIGUgLT4gKEFzdHR5cGVzLk5vbGFiZWwsIGUpKSlcblxuICBsZXQgZWFic3RyYWN0IH5sb2MgcHMgZSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IHBzIH5pbml0OmUgfmY6KGZ1biBwIGUgLT5cbiAgICAgICAgcGV4cF9mdW4gfmxvYyBBc3R0eXBlcy5Ob2xhYmVsIE5vbmUgcCBlKVxuXG4gIGxldCBlc2VxdWVuY2UgfmxvYyBlbCA9XG4gICAgbWF0Y2ggTGlzdC5yZXYgZWwgd2l0aFxuICAgIHwgW10gLT4gZXVuaXQgfmxvY1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgdGwgfmluaXQ6aGQgfmY6KGZ1biBhY2MgZSAtPiBwZXhwX3NlcXVlbmNlIH5sb2MgZSBhY2MpXG5cbiAgbGV0IHBjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwcGF0X2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IGVjb25zdHJ1Y3QgY2QgYXJnID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jOmNkLnBjZF9sb2MgKExvY2F0ZWQubWFwX2xpZGVudCBjZC5wY2RfbmFtZSkgYXJnXG5cbiAgbGV0IHJlYyBlbGlzdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwZXhwX2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwZXhwX3R1cGxlIH5sb2MgWyB4OyBlbGlzdCB+bG9jIGwgXSkpXG5cbiAgbGV0IHJlYyBwbGlzdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcHBhdF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiW11cIikpIE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jXG4gICAgICAgICAgKExvY2F0ZWQubWsgfmxvYyAoTG9uZ2lkZW50LkxpZGVudCBcIjo6XCIpKVxuICAgICAgICAgIChTb21lIChwcGF0X3R1cGxlIH5sb2MgWyB4OyBwbGlzdCB+bG9jIGwgXSkpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgfmxvYyAoaWRlbnQgOiBMb25naWRlbnQudCkgfmYgPVxuICAgIG1hdGNoIGlkZW50IHdpdGhcbiAgICB8IExpZGVudCBuIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExpZGVudCAoZiBuKTsgbG9jIH1cbiAgICB8IExkb3QgKHBhdGgsIG4pIC0+IHBleHBfaWRlbnQgfmxvYyB7IHR4dCA9IExkb3QgKHBhdGgsIGYgbik7IGxvYyB9XG4gICAgfCBMYXBwbHkgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuZXhwZWN0ZWQgYXBwbGljYXRpdmUgZnVuY3RvciB0eXBlXCJcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiB+bG9jOmFwcGx5X2xvYyB7IExvYy5sb2M7IHR4dCA9IGxvbmdpZGVudCB9IH5mIGFyZ3MgPVxuICAgIGxldCBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIChsb25naWRlbnQgOiBMb25naWRlbnQudCkgd2l0aFxuICAgIHwgTGlkZW50IF8gfCBMZG90ICgoTGlkZW50IF8gfCBMZG90IF8pLCBfKSB8IExhcHBseSBfIC0+IChcbiAgICAgICAgbGV0IGlkZW50ID1cbiAgICAgICAgICB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGxvbmdpZGVudCB+bG9jIH5mXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGlkZW50XG4gICAgICAgIHwgXyA6OiBfIC0+IGVhcHBseSB+bG9jOmFwcGx5X2xvYyBpZGVudCBhcmdzKVxuICAgIHwgTGRvdCAoKExhcHBseSBfIGFzIG1vZHVsZV9wYXRoKSwgbikgLT5cbiAgICAgICAgbGV0IHN1ZmZpeF9uIGZ1bmN0b3JfID0gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBmdW5jdG9yXyBeIFwiX19cIiBeIG4gaW5cbiAgICAgICAgbGV0IHJlYyBnYXRoZXJfbGFwcGx5IGZ1bmN0b3JfYXJncyA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ICogXyA9XG4gICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IExhcHBseSAocmVzdCwgYXJnKSAtPiBnYXRoZXJfbGFwcGx5IChhcmcgOjogZnVuY3Rvcl9hcmdzKSByZXN0XG4gICAgICAgICAgfCBMaWRlbnQgZnVuY3Rvcl8gLT4gKExpZGVudCAoc3VmZml4X24gZnVuY3Rvcl8pLCBmdW5jdG9yX2FyZ3MpXG4gICAgICAgICAgfCBMZG90IChmdW5jdG9yX3BhdGgsIGZ1bmN0b3JfKSAtPlxuICAgICAgICAgICAgICAoTGRvdCAoZnVuY3Rvcl9wYXRoLCBzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlkZW50LCBmdW5jdG9yX2FyZ3MgPSBnYXRoZXJfbGFwcGx5IFtdIG1vZHVsZV9wYXRoIGluXG4gICAgICAgIGVhcHBseSB+bG9jOmFwcGx5X2xvY1xuICAgICAgICAgICh1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udl93aXRob3V0X2FwcGx5IGlkZW50IH5sb2MgfmYpXG4gICAgICAgICAgKExpc3QubWFwIGZ1bmN0b3JfYXJncyB+ZjooZnVuIHBhdGggLT5cbiAgICAgICAgICAgICAgIHBleHBfcGFjayB+bG9jIChwbW9kX2lkZW50IH5sb2MgeyB0eHQgPSBwYXRoOyBsb2MgfSkpXG4gICAgICAgICAgQCBhcmdzKVxuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGxvbmdpZGVudCB+ZiA9XG4gICAgdHlwZV9jb25zdHJfY29udiBsb25naWRlbnQgfmxvYyB+ZiBbXVxuXG4gIGxldCBldGFfcmVkdWNlID1cbiAgICBsZXQgcmVjIGdhdGhlcl9wYXJhbXMgYWNjIGV4cHIgPVxuICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgUGV4cF9mdW4gKGxhYmVsLCBOb25lICgqIG5vIGRlZmF1bHQgZXhwcmVzc2lvbiAqKSwgc3VicGF0LCBib2R5KTtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICBwZXhwX2xvYyA9IF87XG4gICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgfSAtPiAoXG4gICAgICAgICAgbWF0Y2ggc3VicGF0IHdpdGhcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgZ2F0aGVyX3BhcmFtcyAoKGxhYmVsLCBuYW1lLCBOb25lKSA6OiBhY2MpIGJvZHlcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgcHBhdF9kZXNjID1cbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfdmFyIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gXztcbiAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgdHkgKTtcbiAgICAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgIHBwYXRfbG9jID0gXztcbiAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgKCogV2UgcmVkdWNlIFtmdW4gKHggOiB0eSkgLT4gZiB4XSBieSByZXdyaXRpbmcgaXQgWyhmIDogdHkgLT4gXyldLiAqKVxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIFNvbWUgdHkpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKSlcbiAgICAgIHwgXyAtPiAoTGlzdC5yZXYgYWNjLCBleHByKVxuICAgIGluXG4gICAgbGV0IGFubm90YXRlIH5sb2MgZXhwciBwYXJhbXMgPVxuICAgICAgaWYgTGlzdC5leGlzdHMgcGFyYW1zIH5mOihmdW4gKF8sIF8sIHR5KSAtPiBPcHRpb24uaXNfc29tZSB0eSkgdGhlblxuICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9yaWdodCBwYXJhbXMgfmluaXQ6KHB0eXBfYW55IH5sb2MpXG4gICAgICAgICAgICB+ZjooZnVuIChwYXJhbV9sYWJlbCwgcGFyYW0sIHR5X29wdCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBsb2MgPSBwYXJhbS5sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHR5ID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0eV9vcHQgd2l0aCBOb25lIC0+IHB0eXBfYW55IH5sb2MgfCBTb21lIHR5IC0+IHR5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHB0eXBfYXJyb3cgfmxvYyBwYXJhbV9sYWJlbCB0eSBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIHBleHBfY29uc3RyYWludCB+bG9jIGV4cHIgdHlcbiAgICAgIGVsc2UgZXhwclxuICAgIGluXG4gICAgbGV0IHJlYyBnYXRoZXJfYXJncyBuIHggPVxuICAgICAgaWYgbiA9IDAgdGhlbiBTb21lICh4LCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwge1xuICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9hcHBseSAoYm9keSwgYXJncyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gXztcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggYXJncyA8PSBuIHRoZW5cbiAgICAgICAgICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKG4gLSBMaXN0Lmxlbmd0aCBhcmdzKSBib2R5IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChib2R5LCBhcmdzJykgLT4gU29tZSAoYm9keSwgYXJncycgQCBhcmdzKVxuICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBmdW4gZXhwciAtPlxuICAgICAgbGV0IHBhcmFtcywgYm9keSA9IGdhdGhlcl9wYXJhbXMgW10gZXhwciBpblxuICAgICAgbWF0Y2ggZ2F0aGVyX2FyZ3MgKExpc3QubGVuZ3RoIHBhcmFtcykgYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSBhcyBmX2lkZW50KSwgYXJncykgLT4gKFxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBMaXN0LmZvcl9hbGwyIGFyZ3MgcGFyYW1zXG4gICAgICAgICAgICAgIH5mOihmdW4gKGFyZ19sYWJlbCwgYXJnKSAocGFyYW1fbGFiZWwsIHBhcmFtLCBfKSAtPlxuICAgICAgICAgICAgICAgIFBvbHkuKCA9ICkgKGFyZ19sYWJlbCA6IGFyZ19sYWJlbCkgcGFyYW1fbGFiZWxcbiAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgbmFtZSc7IF8gfTtcbiAgICAgICAgICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nLiggPSApIG5hbWUnIHBhcmFtLnR4dFxuICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICAgICAgfCB0cnVlIC0+IFNvbWUgKGFubm90YXRlIH5sb2M6ZXhwci5wZXhwX2xvYyBmX2lkZW50IHBhcmFtcykpXG4gICAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHIgPSBPcHRpb24udmFsdWUgKGV0YV9yZWR1Y2UgZXhwcikgfmRlZmF1bHQ6ZXhwclxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgZXhwciB+cmVjX2ZsYWcgPVxuICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICB8IFJlY3Vyc2l2ZSAtPiBleHByXG4gICAgfCBOb25yZWN1cnNpdmUgLT4gZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSBleHByXG5lbmRcblxubW9kdWxlIHR5cGUgTG9jID0gQXN0X2J1aWxkZXJfaW50Zi5Mb2NcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEFzdF9idWlsZGVyX2ludGYuU1xuXG4gIG1vZHVsZSBMYXRlc3QgOiBzaWdcbiAgICB2YWwgcHBhdF9jb25zdHJ1Y3QgOlxuICAgICAgbG9uZ2lkZW50IGxvYyAtPiAobGFiZWwgbG9jIGxpc3QgKiBwYXR0ZXJuKSBvcHRpb24gLT4gcGF0dGVyblxuXG4gICAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICAgIG5hbWU6bGFiZWwgbG9jIC0+XG4gICAgICB2YXJzOmxhYmVsIGxvYyBsaXN0IC0+XG4gICAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gIGVuZFxuXG4gIHZhbCBwcGF0X2NvbnN0cnVjdCA6IGxvbmdpZGVudCBsb2MgLT4gcGF0dGVybiBvcHRpb24gLT4gcGF0dGVyblxuXG4gIHZhbCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICBhcmdzOmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIHJlczpjb3JlX3R5cGUgb3B0aW9uIC0+XG4gICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbmVuZFxuXG5tb2R1bGUgTWFrZSAoTG9jIDogc2lnXG4gIHZhbCBsb2MgOiBMb2NhdGlvbi50XG5lbmQpIDogUyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpXG5cbiAgbW9kdWxlIExhdGVzdCA9IHN0cnVjdFxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCA9IHBwYXRfY29uc3RydWN0XG5cbiAgICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfm5hbWUgfnZhcnMgfmFyZ3MgfnJlcyAoKSA9XG4gICAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0gc3RhYmxlIGxheWVyIGFib3ZlIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NYWtlIChMb2MpIC0tLS0tKilcblxuICBsZXQgcHBhdF9jb25zdHJ1Y3QgbGlkIHAgPVxuICAgIHtcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJ1Y3QgKGxpZCwgT3B0aW9uLm1hcCBwIH5mOihmdW4gcCAtPiAoW10sIHApKSk7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSopXG5cbiAgbGV0IHBzdHJfdmFsdWVfbGlzdCA9IERlZmF1bHQucHN0cl92YWx1ZV9saXN0XG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlXyB+bWFuaWZlc3QgPVxuICAgIERlZmF1bHQubm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+cGFyYW1zIH5jc3RycyB+a2luZCB+cHJpdmF0ZV9cbiAgICAgIH5tYW5pZmVzdFxuXG4gIG1vZHVsZSBMb2NhdGVkID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZWZhdWx0LkxvY2F0ZWRcblxuICAgIGxldCBsb2MgXyA9IExvYy5sb2NcbiAgICBsZXQgbWsgeCA9IG1rIH5sb2M6TG9jLmxvYyB4XG4gICAgbGV0IGxpZGVudCB4ID0gbGlkZW50IH5sb2M6TG9jLmxvYyB4XG4gIGVuZFxuXG4gIGxldCBwZXhwX3R1cGxlIGwgPSBEZWZhdWx0LnBleHBfdHVwbGUgfmxvYyBsXG4gIGxldCBwcGF0X3R1cGxlIGwgPSBEZWZhdWx0LnBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIGwgPSBEZWZhdWx0LnB0eXBfdHVwbGUgfmxvYyBsXG4gIGxldCBwZXhwX3R1cGxlX29wdCBsID0gRGVmYXVsdC5wZXhwX3R1cGxlX29wdCB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBwYXRfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHR5cF9wb2x5IHZhcnMgdHkgPSBEZWZhdWx0LnB0eXBfcG9seSB+bG9jIHZhcnMgdHlcbiAgbGV0IHBleHBfYXBwbHkgZSBlbCA9IERlZmF1bHQucGV4cF9hcHBseSB+bG9jIGUgZWxcbiAgbGV0IGVpbnQgdCA9IERlZmF1bHQuZWludCB+bG9jIHRcbiAgbGV0IGVjaGFyIHQgPSBEZWZhdWx0LmVjaGFyIH5sb2MgdFxuICBsZXQgZXN0cmluZyB0ID0gRGVmYXVsdC5lc3RyaW5nIH5sb2MgdFxuICBsZXQgZWZsb2F0IHQgPSBEZWZhdWx0LmVmbG9hdCB+bG9jIHRcbiAgbGV0IGVpbnQzMiB0ID0gRGVmYXVsdC5laW50MzIgfmxvYyB0XG4gIGxldCBlaW50NjQgdCA9IERlZmF1bHQuZWludDY0IH5sb2MgdFxuICBsZXQgZW5hdGl2ZWludCB0ID0gRGVmYXVsdC5lbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgZWJvb2wgdCA9IERlZmF1bHQuZWJvb2wgfmxvYyB0XG4gIGxldCBldmFyIHQgPSBEZWZhdWx0LmV2YXIgfmxvYyB0XG4gIGxldCBwaW50IHQgPSBEZWZhdWx0LnBpbnQgfmxvYyB0XG4gIGxldCBwY2hhciB0ID0gRGVmYXVsdC5wY2hhciB+bG9jIHRcbiAgbGV0IHBzdHJpbmcgdCA9IERlZmF1bHQucHN0cmluZyB+bG9jIHRcbiAgbGV0IHBmbG9hdCB0ID0gRGVmYXVsdC5wZmxvYXQgfmxvYyB0XG4gIGxldCBwaW50MzIgdCA9IERlZmF1bHQucGludDMyIH5sb2MgdFxuICBsZXQgcGludDY0IHQgPSBEZWZhdWx0LnBpbnQ2NCB+bG9jIHRcbiAgbGV0IHBuYXRpdmVpbnQgdCA9IERlZmF1bHQucG5hdGl2ZWludCB+bG9jIHRcbiAgbGV0IHBib29sIHQgPSBEZWZhdWx0LnBib29sIH5sb2MgdFxuICBsZXQgcHZhciB0ID0gRGVmYXVsdC5wdmFyIH5sb2MgdFxuICBsZXQgZXVuaXQgPSBEZWZhdWx0LmV1bml0IH5sb2NcbiAgbGV0IHB1bml0ID0gRGVmYXVsdC5wdW5pdCB+bG9jXG4gIGxldCBlY29uc3RydWN0ID0gRGVmYXVsdC5lY29uc3RydWN0XG4gIGxldCBwY29uc3RydWN0ID0gRGVmYXVsdC5wY29uc3RydWN0XG4gIGxldCBlYXBwbHkgZSBlbCA9IERlZmF1bHQuZWFwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWFic3RyYWN0IHBzIGUgPSBEZWZhdWx0LmVhYnN0cmFjdCB+bG9jIHBzIGVcbiAgbGV0IGVzZXF1ZW5jZSBlbCA9IERlZmF1bHQuZXNlcXVlbmNlIH5sb2MgZWxcbiAgbGV0IGVsaXN0IGwgPSBEZWZhdWx0LmVsaXN0IH5sb2MgbFxuICBsZXQgcGxpc3QgbCA9IERlZmF1bHQucGxpc3QgfmxvYyBsXG5cbiAgbGV0IHR5cGVfY29uc3RyX2NvbnYgaWRlbnQgfmYgYXJncyA9XG4gICAgRGVmYXVsdC50eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmYgYXJnc1xuXG4gIGxldCB1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiA9XG4gICAgRGVmYXVsdC51bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiB+bG9jIGlkZW50IH5mXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPSBEZWZhdWx0LmV0YV9yZWR1Y2VcbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgPSBEZWZhdWx0LmV0YV9yZWR1Y2VfaWZfcG9zc2libGVcblxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjID1cbiAgICBEZWZhdWx0LmV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlY1xuZW5kXG5cbmxldCBtYWtlIGxvYyA9XG4gIChtb2R1bGUgTWFrZSAoc3RydWN0XG4gICAgbGV0IGxvYyA9IGxvY1xuICBlbmQpIDogUylcbiIsIigqKiBTbWFsbCBoZWxwZXIgdG8gZmluZCBvdXQgd2hvIGlzIHRoZSBjYWxsZXIgb2YgYSBmdW5jdGlvbiAqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBQcmludGV4YyA9IFN0ZGxpYi5QcmludGV4Y1xuXG50eXBlIHQgPSBQcmludGV4Yy5sb2NhdGlvbiBvcHRpb25cblxubGV0IGdldCB+c2tpcCA9XG4gIGxldCBza2lwID0gX19GSUxFX18gOjogc2tpcCBpblxuICBsZXQgc3RhY2sgPSBQcmludGV4Yy5nZXRfY2FsbHN0YWNrIDE2IGluXG4gIGxldCBsZW4gPSBQcmludGV4Yy5yYXdfYmFja3RyYWNlX2xlbmd0aCBzdGFjayBpblxuICBsZXQgcmVjIGxvb3AgcG9zID1cbiAgICBpZiBwb3MgPSBsZW4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2hcbiAgICAgICAgUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCBzdGFjayBwb3NcbiAgICAgICAgfD4gUHJpbnRleGMuY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QgfD4gUHJpbnRleGMuU2xvdC5sb2NhdGlvblxuICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBsb2MgLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSB+c2V0OnNraXAgbG9jLmZpbGVuYW1lIHRoZW4gbG9vcCAocG9zICsgMSkgZWxzZSBTb21lIGxvY1xuICBpblxuICBsb29wIDBcbiIsIigqKiBIZWxwZXJzIHRvIHByb3ZpZGUgaGludHMgdG8gUFBYIHVzZXJzIGZvciB0eXBvcyBvciBzcGVsbGNoZWNrcy4gKilcblxub3BlbiEgSW1wb3J0XG5cbmV4Y2VwdGlvbiBDdXRvZmZfbWV0XG5cbigqIEFzIGZvdW5kIGhlcmUgaHR0cDovL3Jvc2V0dGFjb2RlLm9yZy93aWtpL0xldmVuc2h0ZWluX2Rpc3RhbmNlI09DYW1sICopXG5sZXQgbGV2ZW5zaHRlaW5fZGlzdGFuY2UgcyB0IGN1dG9mZiA9XG4gIGxldCBtID0gU3RyaW5nLmxlbmd0aCBzIGFuZCBuID0gU3RyaW5nLmxlbmd0aCB0IGluXG4gIGlmIGN1dG9mZiA9IDAgfHwgYWJzIChtIC0gbikgPj0gY3V0b2ZmIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgKCogZm9yIGFsbCBpIGFuZCBqLCBkLihpKS4oaikgd2lsbCBob2xkIHRoZSBMZXZlbnNodGVpbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZVxuICAgICAgIGZpcnN0IGkgY2hhcmFjdGVycyBvZiBzIGFuZCB0aGUgZmlyc3QgaiBjaGFyYWN0ZXJzIG9mIHQgKilcbiAgICBsZXQgZCA9IEFycmF5Lm1ha2VfbWF0cml4IH5kaW14OihtICsgMSkgfmRpbXk6KG4gKyAxKSAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG0gZG9cbiAgICAgICgqIHRoZSBkaXN0YW5jZSBvZiBhbnkgZmlyc3Qgc3RyaW5nIHRvIGFuIGVtcHR5IHNlY29uZCBzdHJpbmcgKilcbiAgICAgIGQuKGkpLigwKSA8LSBpXG4gICAgZG9uZTtcbiAgICBmb3IgaiA9IDAgdG8gbiBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBzZWNvbmQgc3RyaW5nIHRvIGFuIGVtcHR5IGZpcnN0IHN0cmluZyAqKVxuICAgICAgZC4oMCkuKGopIDwtIGpcbiAgICBkb25lO1xuICAgICgqIHRoZSBtaW5pbXVtIG9mIGVhY2ggbGluZSB0b2dldGhlciB3aXRoIHRoZSBjb2x1bW4gaW5kZXggd2lsbCBiZSB1c2VkXG4gICAgICAgdG8gbm90aWNlIGN1dG9mZiBleGNlZWRpbmcgYW5kIHJldHVybiBlYXJseSBpbiB0aGF0IGNhc2UgKilcbiAgICBsZXQgbGluZV9taW4gPSByZWYgMCBpblxuICAgIGxldCBkaXN0YW5jZSA9XG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAxIHRvIG4gZG9cbiAgICAgICAgICBpZiAhbGluZV9taW4gPj0gY3V0b2ZmIC0gMSAmJiBqID49IGN1dG9mZiAtIDEgdGhlbiByYWlzZSBDdXRvZmZfbWV0O1xuICAgICAgICAgIGxpbmVfbWluIDo9IG1heCBtIG47XG4gICAgICAgICAgZm9yIGkgPSAxIHRvIG0gZG9cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgIGlmIENoYXIuZXF1YWwgcy5baSAtIDFdIHQuW2ogLSAxXSB0aGVuIGQuKGkgLSAxKS4oaiAtIDEpXG4gICAgICAgICAgICAgICAgKCogbm8gb3BlcmF0aW9uIHJlcXVpcmVkICopXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtaW5cbiAgICAgICAgICAgICAgICAgIChkLihpIC0gMSkuKGopICsgMSkgKCogYSBkZWxldGlvbiAqKVxuICAgICAgICAgICAgICAgICAgKG1pblxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkpLihqIC0gMSkgKyAxKSAoKiBhbiBpbnNlcnRpb24gKilcbiAgICAgICAgICAgICAgICAgICAgIChkLihpIC0gMSkuKGogLSAxKSArIDEpICgqIGEgc3Vic3RpdHV0aW9uICopKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGQuKGkpLihqKSA8LSB2YWx1ZTtcbiAgICAgICAgICAgIGxpbmVfbWluIDo9IG1pbiAhbGluZV9taW4gdmFsdWVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmIGQuKG0pLihuKSA8IGN1dG9mZiB0aGVuIFNvbWUgZC4obSkuKG4pIGVsc2UgTm9uZVxuICAgICAgd2l0aCBDdXRvZmZfbWV0IC0+IE5vbmVcbiAgICBpblxuICAgIGRpc3RhbmNlXG5cbmxldCBzcGVsbGNoZWNrIG5hbWVzIG5hbWUgPVxuICBsZXQgY3V0b2ZmID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIG5hbWUgd2l0aFxuICAgIHwgMSB8IDIgLT4gMFxuICAgIHwgMyB8IDQgLT4gMVxuICAgIHwgNSB8IDYgLT4gMlxuICAgIHwgXyAtPiAzXG4gIGluXG4gIGxldCBfLCBzdWdnZXN0aW9ucyA9XG4gICAgTGlzdC5mb2xkX2xlZnQgbmFtZXMgfmluaXQ6KEludC5tYXhfaW50LCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoKGJlc3RfZGlzdGFuY2UsIG5hbWVzX2F0X2Jlc3RfZGlzdGFuY2UpIGFzIGFjYykgcmVnaXN0ZXJlZF9uYW1lIC0+XG4gICAgICAgIG1hdGNoIGxldmVuc2h0ZWluX2Rpc3RhbmNlIG5hbWUgcmVnaXN0ZXJlZF9uYW1lIGN1dG9mZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIGRpc3QgLT5cbiAgICAgICAgICAgIGlmIGRpc3QgPCBiZXN0X2Rpc3RhbmNlIHRoZW4gKGRpc3QsIFsgcmVnaXN0ZXJlZF9uYW1lIF0pXG4gICAgICAgICAgICBlbHNlIGlmIGRpc3QgPiBiZXN0X2Rpc3RhbmNlIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChkaXN0LCByZWdpc3RlcmVkX25hbWUgOjogbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkpXG4gIGluXG4gIG1hdGNoIExpc3QucmV2IHN1Z2dlc3Rpb25zIHw+IExpc3QuZmlsdGVyIH5mOihTdHJpbmcuKCA8PiApIG5hbWUpIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgbGFzdCA6OiByZXZfcmVzdCAtPlxuICAgICAgU29tZVxuICAgICAgICAoUHJpbnRmLnNwcmludGYgXCJIaW50OiBEaWQgeW91IG1lYW4gJXMlcyVzP1wiXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiIChMaXN0LnJldiByZXZfcmVzdCkpXG4gICAgICAgICAgIChpZiBMaXN0LmlzX2VtcHR5IHJldl9yZXN0IHRoZW4gXCJcIiBlbHNlIFwiIG9yIFwiKVxuICAgICAgICAgICBsYXN0KVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphY2MgfmYgPVxuICBsZXQgcmVjIGNvbGxhcHNlX2FmdGVyX2F0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBwYXJ0IDo6IHBhcnRzIC0+XG4gICAgICAgIGlmIChub3QgKFN0cmluZy5pc19lbXB0eSBwYXJ0KSkgJiYgQ2hhci5lcXVhbCBwYXJ0LlswXSAnQCcgdGhlblxuICAgICAgICAgIFsgU3RyaW5nLmNvbmNhdCAoU3RyaW5nLmRyb3BfcHJlZml4IHBhcnQgMSA6OiBwYXJ0cykgfnNlcDpcIi5cIiBdXG4gICAgICAgIGVsc2UgcGFydCA6OiBjb2xsYXBzZV9hZnRlcl9hdCBwYXJ0c1xuICBpblxuICBsZXQgcmVjIGxvb3AgYWNjIHBhcnRzID1cbiAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgbG9vcCAoZiAoU3RyaW5nLmNvbmNhdCAocGFydCA6OiBwYXJ0cykgfnNlcDpcIi5cIikgYWNjKSBwYXJ0c1xuICBpblxuICBTdHJpbmcuc3BsaXRfb25fY2hhciBuYW1lIH5zZXA6Jy4nIHw+IGNvbGxhcHNlX2FmdGVyX2F0IHw+IGxvb3AgYWNjXG5cbmxldCBkb3Rfc3VmZml4ZXMgbmFtZSA9XG4gIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6W10gfmY6KGZ1biB4IGFjYyAtPiB4IDo6IGFjYylcblxubGV0IHNwbGl0X3BhdGggPVxuICBsZXQgcmVjIGxvb3AgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpIHwgXyAtPiBsb29wIHMgKGkgKyAxKVxuICBhbmQgYWZ0ZXJfZG90IHMgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuIChzLCBOb25lKVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ0EnIC4uICdaJyAtPiAoU3RyaW5nLnByZWZpeCBzIChpIC0gMSksIFNvbWUgKFN0cmluZy5kcm9wX3ByZWZpeCBzIGkpKVxuICAgICAgfCAnLicgLT4gYWZ0ZXJfZG90IHMgKGkgKyAxKVxuICAgICAgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGluXG4gIGZ1biBzIC0+IGxvb3AgcyAwXG5cbm1vZHVsZSBQYXR0ZXJuID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgbmFtZSA6IHN0cmluZzsgZG90X3N1ZmZpeGVzIDogU3RyaW5nLlNldC50IH1cblxuICBsZXQgbWFrZSBuYW1lID1cbiAgICB7IG5hbWU7IGRvdF9zdWZmaXhlcyA9IFN0cmluZy5TZXQub2ZfbGlzdCAoZG90X3N1ZmZpeGVzIG5hbWUpIH1cblxuICBsZXQgbmFtZSB0ID0gdC5uYW1lXG4gIGxldCBtYXRjaGVzIHQgbWF0Y2hlZCA9IFN0cmluZy5TZXQubWVtIG1hdGNoZWQgdC5kb3Rfc3VmZml4ZXNcbmVuZFxuXG4oKiBPbiB0aGUgbmFtZXNwYWNlIFwiYS5OQU1FU1BBQ0VcIiwgcmV0dXJuIHRoZSBwYWlyIChcImFcIiwgTkFNRVNQQUNFKSAqKVxubGV0IHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lID1cbiAgbWF0Y2ggU3RyaW5nLmluZGV4X29wdCBuYW1lICcuJyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBpIC0+XG4gICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggbmFtZSBpblxuICAgICAgbGV0IGJlZm9yZV9kb3QgPSBTdHJpbmcuc3ViIG5hbWUgfnBvczowIH5sZW46aSBpblxuICAgICAgbGV0IGFmdGVyX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOihpICsgMSkgfmxlbjoobiAtIGkgLSAxKSBpblxuICAgICAgU29tZSAoYmVmb3JlX2RvdCwgYWZ0ZXJfZG90KVxuXG5tb2R1bGUgQWxsb3dsaXN0ZWQgPSBzdHJ1Y3RcbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGFzIHdlbGwgYXMgYWxsIHRoZWlyIGRvdCBzdWZmaXhlcy5cblxuICAgICBTaW5jZSB0aGVzZSBhdHRyaWJ1dGVzIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgY29tcGlsZXIgaXRzZWxmLCB3ZSBjYW5ub3QgY2hlY2tcbiAgICAgYXQgdGhlIGxldmVsIG9mIGEgcHB4IHJld3JpdGVyIHRoYXQgdGhleSBoYXZlIGJlZW4gcHJvcGVybHkgaW50ZXJwcmV0ZWQsIHNvXG4gICAgIHdlIGp1c3QgYWNjZXB0IHRoZW0gYW55d2hlcmUuXG5cbiAgICAgU2FkbHksIHRoZSBjb21waWxlciBzaWxlbnRseSBpZ25vcmVzIHRoZW0gaWYgdGhleSBhcmUgbWlzcGxhY2VkLi4uXG4gICopXG4gIGxldCBjcmVhdGVfc2V0IGZ1bGx5X3F1YWxpZmllZF9uYW1lcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIH5mOihmdW4gYWNjIG5hbWUgLT5cbiAgICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphY2MgfmY6KGZ1biB4IGFjYyAtPiBTdHJpbmcuU2V0LmFkZCB4IGFjYykpXG4gICAgICB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IGZ1bGx5X3F1YWxpZmllZF9uYW1lc1xuXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBjcmVhdGVfc2V0XG4gICAgICBbXG4gICAgICAgIFwib2NhbWwuYWxlcnRcIjtcbiAgICAgICAgXCJvY2FtbC5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRcIjtcbiAgICAgICAgXCJvY2FtbC5kZXByZWNhdGVkX211dGFibGVcIjtcbiAgICAgICAgXCJvY2FtbC5kb2NcIjtcbiAgICAgICAgXCJvY2FtbC5leHRlbnNpb25fY29uc3RydWN0b3JcIjtcbiAgICAgICAgXCJvY2FtbC5pbW1lZGlhdGVcIjtcbiAgICAgICAgXCJvY2FtbC5pbW1lZGlhdGU2NFwiO1xuICAgICAgICBcIm9jYW1sLmlubGluZVwiO1xuICAgICAgICBcIm9jYW1sLmlubGluZWRcIjtcbiAgICAgICAgXCJvY2FtbC5sb2NhbFwiO1xuICAgICAgICBcIm9jYW1sLm5vYWxsb2NcIjtcbiAgICAgICAgXCJvY2FtbC5wcHdhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC5yZW1vdmVfYWxpYXNlc1wiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VcIjtcbiAgICAgICAgXCJvY2FtbC5zcGVjaWFsaXNlZFwiO1xuICAgICAgICBcIm9jYW1sLnRhaWxjYWxsXCI7XG4gICAgICAgIFwib2NhbWwudGV4dFwiO1xuICAgICAgICBcIm9jYW1sLnVuYm94ZWRcIjtcbiAgICAgICAgXCJvY2FtbC51bnJvbGxcIjtcbiAgICAgICAgXCJvY2FtbC51bnJvbGxlZFwiO1xuICAgICAgICBcIm9jYW1sLnVudGFnZ2VkXCI7XG4gICAgICAgIFwib2NhbWwud2Fybl9vbl9saXRlcmFsX3BhdHRlcm5cIjtcbiAgICAgICAgXCJvY2FtbC53YXJuZXJyb3JcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuaW5nXCI7XG4gICAgICAgIFwib2NhbWwudG9wbGV2ZWxfcHJpbnRlclwiICgqSW50ZXJwcmV0ZWQgYnkgdGhlIHRvcGxldmVsL3V0b3AqKTtcbiAgICAgICAgXCJ0b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgXVxuXG4gICgqIEFsbG93IGxpc3QgdGhlIGZvbGxvd2luZyBleHRlbnNpb25zLlxuXG4gICAgIFNpbmNlIHRoZXNlIGV4dGVuc2lvbnMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cbiAgKilcbiAgbGV0IGV4dGVuc2lvbnMgPSBjcmVhdGVfc2V0IFsgXCJvY2FtbC5lcnJvclwiOyBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiIF1cblxuICBsZXQgaXNfYWxsb3dsaXN0ZWQgfmtpbmQgbmFtZSA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBgQXR0cmlidXRlIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgYXR0cmlidXRlc1xuICAgIHwgYEV4dGVuc2lvbiAtPiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGV4dGVuc2lvbnNcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZV9saXN0ICgpID0gU3RyaW5nLlNldC5lbGVtZW50cyBhdHRyaWJ1dGVzXG4gIGxldCBnZXRfZXh0ZW5zaW9uX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGV4dGVuc2lvbnNcbmVuZFxuXG5tb2R1bGUgUmVzZXJ2ZWRfbmFtZXNwYWNlcyA9IHN0cnVjdFxuICB0eXBlIHJlc2VydmVkID0gKHN0cmluZywgc3ViX25hbWVzcGFjZXMpIEhhc2h0YmwudFxuICBhbmQgc3ViX25hbWVzcGFjZXMgPSBBbGwgfCBTdWJfbmFtZXNwYWNlcyBvZiByZXNlcnZlZFxuXG4gICgqIElmIFt0YmxdIGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIFwieFwiIHRvIFtBbGxdLCB0aGVuIFwieFwiIGFuZCBhbGwgcGF0aHMgdGhhdFxuICAgKiBzdGFydCB3aXRoIFwieC5cIiBhcmUgcmVzZXJ2ZWQgd2l0aCByZXNwZWN0IHRvIFt0YmxdXG4gICAqXG4gICAqIElmIFt0YmxdIGNvbnRhaW5zIGEgbWFwcGluZyBmcm9tIFwieFwiIHRvIFtTdWJfbmFtZXNwYWNlcyB0YmwnXSwgYW5kIFAgaXNcbiAgICogcmVzZXJ2ZWQgd2l0aCByZXNwZWN0IHRvIFt0YmwnXSwgdGhlbiBhbGwgcGF0aHMgXCJ4LlBcIiBhcmUgcmVzZXJ2ZWQgd2l0aFxuICAgKiByZXNwZWN0IHRvIFt0YmxdLlxuICAgKilcbiAgbGV0IGNyZWF0ZV9yZXNlcnZlZCAoKSA6IHJlc2VydmVkID0gSGFzaHRibC5jcmVhdGUgMTZcblxuICBsZXQgcmVjIHJlc2VydmUgbnMgdGJsID1cbiAgICBtYXRjaCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBIYXNodGJsLmFkZF9leG4gdGJsIH5rZXk6bnMgfmRhdGE6QWxsXG4gICAgfCBTb21lIChvdXRlcl9ucywgcmVzdF9ucykgLT4gKFxuICAgICAgICBtYXRjaFxuICAgICAgICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdGJsIG91dGVyX25zIH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgU3ViX25hbWVzcGFjZXMgKGNyZWF0ZV9yZXNlcnZlZCAoKSkpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTdWJfbmFtZXNwYWNlcyByZXN0X3RibCAtPiByZXNlcnZlIHJlc3RfbnMgcmVzdF90YmxcbiAgICAgICAgfCBBbGwgLT4gKCkpXG5cbiAgbGV0IHJlYyBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsID1cbiAgICBtYXRjaCBzcGxpdF9vdXRlcl9uYW1lc3BhY2UgbmFtZSB3aXRoXG4gICAgfCBTb21lIChucywgcmVzdCkgLT4gKFxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHRibCBucyB3aXRoXG4gICAgICAgIHwgU29tZSAoU3ViX25hbWVzcGFjZXMgcmVzdF90YmwpIC0+XG4gICAgICAgICAgICBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIHJlc3QgcmVzdF90YmxcbiAgICAgICAgfCBTb21lIEFsbCAtPiB0cnVlXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZSlcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHRibCBuYW1lIHdpdGhcbiAgICAgICAgfCBTb21lIEFsbCAtPiB0cnVlXG4gICAgICAgIHwgU29tZSAoU3ViX25hbWVzcGFjZXMgXykgfCBOb25lIC0+IGZhbHNlKVxuXG4gIGxldCB0YmwgPSBjcmVhdGVfcmVzZXJ2ZWQgKClcbiAgbGV0IHJlc2VydmUgbnMgPSByZXNlcnZlIG5zIHRibFxuICBsZXQgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lID0gaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRibFxuICBsZXQgKCkgPSByZXNlcnZlIFwibWVybGluXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlYXNvblwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZWZtdFwiICgqIHJlYXNvbiAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibnNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVzXCIgKCogcmVzY3JpcHQgKilcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm1ldGFvY2FtbFwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJvY2FtbGZvcm1hdFwiXG4gIGxldCAoKSA9IHJlc2VydmUgXCJwcHhsaWIubWlncmF0aW9uXCJcblxuICBsZXQgY2hlY2tfbm90X3Jlc2VydmVkIH5raW5kIG5hbWUgPVxuICAgIGxldCBraW5kLCBsaXN0ID1cbiAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgfCBgQXR0cmlidXRlIC0+IChcImF0dHJpYnV0ZVwiLCBBbGxvd2xpc3RlZC5hdHRyaWJ1dGVzKVxuICAgICAgfCBgRXh0ZW5zaW9uIC0+IChcImV4dGVuc2lvblwiLCBBbGxvd2xpc3RlZC5leHRlbnNpb25zKVxuICAgIGluXG4gICAgaWYgU3RyaW5nLlNldC5tZW0gbmFtZSBsaXN0IHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICBcIkNhbm5vdCByZWdpc3RlciAlcyB3aXRoIG5hbWUgJyVzJyBhcyBpdCBtYXRjaGVzIGFuICVzIHJlc2VydmVkIGJ5IHRoZSBcXFxuICAgICAgICAgY29tcGlsZXJcIlxuICAgICAgICBraW5kIG5hbWUga2luZFxuICAgIGVsc2UgaWYgaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyBuYW1lIHRoZW5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgICBcIkNhbm5vdCByZWdpc3RlciAlcyB3aXRoIG5hbWUgJyVzJyBhcyBpdHMgbmFtZXNwYWNlIGlzIG1hcmtlZCBhcyBcXFxuICAgICAgICAgcmVzZXJ2ZWRcIlxuICAgICAgICBraW5kIG5hbWVcbmVuZFxuXG5sZXQgaWdub3JlX2NoZWNrcyBuYW1lID1cbiAgUmVzZXJ2ZWRfbmFtZXNwYWNlcy5pc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWVcbiAgfHwgU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6XCJfXCJcblxubW9kdWxlIFJlZ2lzdHJhciA9IHN0cnVjdFxuICB0eXBlIGVsZW1lbnQgPSB7IGZ1bGx5X3F1YWxpZmllZF9uYW1lIDogc3RyaW5nOyBkZWNsYXJlZF9hdCA6IENhbGxlcl9pZC50IH1cbiAgdHlwZSBhbGxfZm9yX2NvbnRleHQgPSB7IG11dGFibGUgYWxsIDogZWxlbWVudCBTdHJpbmcuTWFwLnQgfVxuXG4gIHR5cGUgJ2EgdCA9IHtcbiAgICBhbGxfYnlfY29udGV4dCA6ICgnYSwgYWxsX2Zvcl9jb250ZXh0KSBIYXNodGJsLnQ7XG4gICAgc2tpcCA6IHN0cmluZyBsaXN0O1xuICAgIGtpbmQgOiBzdHJpbmc7XG4gICAgc3RyaW5nX29mX2NvbnRleHQgOiAnYSAtPiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+a2luZCB+Y3VycmVudF9maWxlIH5zdHJpbmdfb2ZfY29udGV4dCA9XG4gICAge1xuICAgICAgYWxsX2J5X2NvbnRleHQgPSBIYXNodGJsLmNyZWF0ZSAxNjtcbiAgICAgIHNraXAgPSBbIGN1cnJlbnRfZmlsZTsgX19GSUxFX18gXTtcbiAgICAgIGtpbmQ7XG4gICAgICBzdHJpbmdfb2ZfY29udGV4dDtcbiAgICB9XG5cbiAgbGV0IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0ID1cbiAgICBIYXNodGJsLmZpbmRfb3JfYWRkIHQuYWxsX2J5X2NvbnRleHQgY29udGV4dCB+ZGVmYXVsdDooZnVuICgpIC0+XG4gICAgICAgIHsgYWxsID0gU3RyaW5nLk1hcC5lbXB0eSB9KVxuXG4gIGxldCBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgbmFtZSA9XG4gICAgbWF0Y2ggU3RyaW5nLk1hcC5maW5kX29wdCBuYW1lIGFsbF9mb3JfY29udGV4dC5hbGwgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlIC0+XG4gICAgICAgIGxldCBkZWNsYXJlZF9hdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgKGxvYyA6IFN0ZGxpYi5QcmludGV4Yy5sb2NhdGlvbikgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYgXCIgZGVjbGFyZWQgYXQgJXM6JWRcIiBsb2MuZmlsZW5hbWUgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb250ZXh0ID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgfCBTb21lIHMgLT4gXCIgb24gXCIgXiBzIF4gXCJzXCJcbiAgICAgICAgaW5cbiAgICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgICAgXCJTb21lIHBweC1lcyB0cmllZCB0byByZWdpc3RlciBjb25mbGljdGluZyB0cmFuc2Zvcm1hdGlvbnM6ICVzIFxcXG4gICAgICAgICAgICclcyclcyVzIG1hdGNoZXMgJXMgJyVzJyVzXCJcbiAgICAgICAgICAoU3RyaW5nLmNhcGl0YWxpemVfYXNjaWkgdC5raW5kKVxuICAgICAgICAgIG5hbWUgY29udGV4dCAoZGVjbGFyZWRfYXQgY2FsbGVyKSB0LmtpbmQgZS5mdWxseV9xdWFsaWZpZWRfbmFtZVxuICAgICAgICAgIChkZWNsYXJlZF9hdCBlLmRlY2xhcmVkX2F0KVxuXG4gIGxldCBjaGVja19jb2xsaXNpb25zIHQgY29udGV4dCBuYW1lID1cbiAgICBsZXQgY2FsbGVyID0gQ2FsbGVyX2lkLmdldCB+c2tpcDp0LnNraXAgaW5cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgbmFtZVxuXG4gIGxldCByZWdpc3RlciB+a2luZCB0IGNvbnRleHQgbmFtZSA9XG4gICAgUmVzZXJ2ZWRfbmFtZXNwYWNlcy5jaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZTtcbiAgICBsZXQgY2FsbGVyID0gQ2FsbGVyX2lkLmdldCB+c2tpcDp0LnNraXAgaW5cbiAgICBsZXQgYWxsID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBjaGVja19jb2xsaXNpb25zX2xvY2FsIH5jYWxsZXIgfmFsbF9mb3JfY29udGV4dDphbGwgdCBjb250ZXh0IG5hbWU7XG4gICAgbGV0IHQgPSB7IGZ1bGx5X3F1YWxpZmllZF9uYW1lID0gbmFtZTsgZGVjbGFyZWRfYXQgPSBjYWxsZXIgfSBpblxuICAgIGFsbC5hbGwgPC1cbiAgICAgIGZvbGRfZG90X3N1ZmZpeGVzIG5hbWUgfmluaXQ6YWxsLmFsbCB+ZjooZnVuIG5hbWUgYWNjIC0+XG4gICAgICAgICAgU3RyaW5nLk1hcC5hZGQgbmFtZSB0IGFjYylcblxuICBsZXQgc3BlbGxjaGVjayB0IGNvbnRleHQgPyhhbGxvd2xpc3QgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGFsbF9mb3JfY29udGV4dCA9IGdldF9hbGxfZm9yX2NvbnRleHQgdCBjb250ZXh0IGluXG4gICAgbGV0IGFsbCA9XG4gICAgICBTdHJpbmcuTWFwLmZvbGQgKGZ1biBrZXkgXyBhY2MgLT4ga2V5IDo6IGFjYykgYWxsX2Zvcl9jb250ZXh0LmFsbCBbXVxuICAgIGluXG4gICAgbWF0Y2ggU3BlbGxjaGVjay5zcGVsbGNoZWNrIChhbGwgQCBhbGxvd2xpc3QpIG5hbWUgd2l0aFxuICAgIHwgU29tZSBfIGFzIHggLT4geFxuICAgIHwgTm9uZSB3aGVuIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCAtPiBOb25lXG4gICAgfCBOb25lIC0+IChcbiAgICAgICAgbGV0IG90aGVyX2NvbnRleHRzID1cbiAgICAgICAgICBIYXNodGJsLmZvbGRcbiAgICAgICAgICAgIChmdW4gY3R4IGFsbF9mcm9tX2NvbnRleHQgYWNjIC0+XG4gICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgUG9seS4oIDw+ICkgY29udGV4dCBjdHhcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcuTWFwLm1lbSBuYW1lIGFsbF9mcm9tX2NvbnRleHQuYWxsXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGN0eCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+IChzIF4gXCJzXCIpIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlIGFjYylcbiAgICAgICAgICAgIHQuYWxsX2J5X2NvbnRleHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBwX3RleHQgPSBGb3JtYXQucHBfcHJpbnRfdGV4dCBpblxuICAgICAgICBsZXQgY3VycmVudF9jb250ZXh0IHBwZiA9XG4gICAgICAgICAgbWF0Y2ggdC5zdHJpbmdfb2ZfY29udGV4dCBjb250ZXh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICBsZXQgYV9vcl9hbiA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcy5bMF0gd2l0aFxuICAgICAgICAgICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIHwgJ3knIC0+IFwiYW5cIlxuICAgICAgICAgICAgICAgIHwgXyAtPiBcImFcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGZcbiAgICAgICAgICAgICAgICBcIkAgYnV0QCBpc0AgdXNlZEAgaGVyZUAgaW5AIHRoZUAgY29udGV4dEAgb2ZAICVzQCAlYVwiIGFfb3JfYW5cbiAgICAgICAgICAgICAgICBwcF90ZXh0IHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LnNvcnQgfmNtcDooZnVuIHggeSAtPiAtU3RyaW5nLmNvbXBhcmUgeCB5KSBvdGhlcl9jb250ZXh0c1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICB8IFsgYyBdIC0+XG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lIHBwX3RleHQgY1xuICAgICAgICAgICAgICAgICBjdXJyZW50X2NvbnRleHQpXG4gICAgICAgIHwgbGFzdCA6OiByZXZfb3RoZXJzIC0+XG4gICAgICAgICAgICBsZXQgb3RoZXJzID0gTGlzdC5yZXYgcmV2X290aGVycyBpblxuICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiQFtIaW50OkAgYCVzJ0AgaXNAIGF2YWlsYWJsZUAgZm9yQCAlYUAgYW5kQCAlYSV0LkBdQFxcblxcXG4gICAgICAgICAgICAgICAgICBEaWQgeW91IHB1dCBpdCBhdCB0aGUgd3JvbmcgbGV2ZWw/XCIgbmFtZVxuICAgICAgICAgICAgICAgICAoRm9ybWF0LnBwX3ByaW50X2xpc3QgcHBfdGV4dCB+cHBfc2VwOihmdW4gcHBmICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgcHBmIFwiLEAgXCIpKVxuICAgICAgICAgICAgICAgICBvdGhlcnMgcHBfdGV4dCBsYXN0IGN1cnJlbnRfY29udGV4dCkpXG5cbiAgbW9kdWxlIEVycm9yID0gc3RydWN0XG4gICAgKCogVE9ETzogaGludCBzcGVsbGluZyBlcnJvcnMgcmVnYXJkaW5nIHJlc2VydmVkIG5hbWVzcGFjZXMgbmFtZXMgYW5kIGFsbG93bGlzdGVkXG4gICAgICAgbmFtZXMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3B0aW9uYWwgW2FsbG93bGlzdF0gcGFyYW1ldGVyLiAqKVxuICAgIGxldCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgUHJpbnRmLmtzcHJpbnRmXG4gICAgICAgIChmdW4gbXNnIC0+XG4gICAgICAgICAgbWF0Y2ggc3BlbGxjaGVjayB0IGNvbnRleHQgbmFtZS50eHQgP2FsbG93bGlzdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzpuYW1lLmxvYyBcIiVzXCIgbXNnXG4gICAgICAgICAgfCBTb21lIHMgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXMuXFxuJXNcIiBtc2cgcylcbiAgICAgICAgZm10IG5hbWUudHh0XG5cbiAgICBsZXQgcmFpc2VfZXJyb3JmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCAobmFtZSA6IHN0cmluZyBMb2MudCkgPVxuICAgICAgTG9jYXRpb24uRXJyb3IucmFpc2UgQEAgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgbmFtZVxuXG4gICAgbGV0IGVycm9yX2V4dGVuc2lvbmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gQEAgY3JlYXRlZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgbmFtZVxuICBlbmRcblxuICBsZXQgcmFpc2VfZXJyb3JmID0gRXJyb3IucmFpc2VfZXJyb3JmXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5tb2R1bGUgQnVmZmVyID0gU3RkbGliLkJ1ZmZlclxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcblxubGV0IGxpZGVudCB4ID0gTG9uZ2lkZW50LkxpZGVudCB4XG5cbmxldCBjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCA9XG4gIGxldCBsb2MgPSB0ZC5wdHlwZV9uYW1lLmxvYyBpblxuICBwdHlwX2NvbnN0ciB+bG9jXG4gICAgKExvY2F0ZWQubWFwIGxpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgIChMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6ZnN0KVxuXG5sZXQgc3RyaXBfZ2VuX3N5bWJvbF9zdWZmaXggPVxuICBsZXQgY2hvcCBuIH5vcl9tb3JlIHN0cmluZyBwb3MgZiA9XG4gICAgbGV0IHRhcmdldCA9ICFwb3MgLSBuIGluXG4gICAgd2hpbGUgIXBvcyA+IDAgJiYgKG9yX21vcmUgfHwgIXBvcyA+IHRhcmdldCkgJiYgZiBzdHJpbmcuWyFwb3MgLSAxXSBkb1xuICAgICAgcG9zIDo9ICFwb3MgLSAxXG4gICAgZG9uZTtcbiAgICAhcG9zIDw9IHRhcmdldFxuICBpblxuICBmdW4gc3RyaW5nIC0+XG4gICAgbGV0IHBvcyA9IHJlZiAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgaWZcbiAgICAgIGNob3AgMSB+b3JfbW9yZTpmYWxzZSBzdHJpbmcgcG9zIChDaGFyLmVxdWFsICdfJylcbiAgICAgICYmIGNob3AgMyB+b3JfbW9yZTp0cnVlIHN0cmluZyBwb3MgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIGNob3AgMiB+b3JfbW9yZTpmYWxzZSBzdHJpbmcgcG9zIChDaGFyLmVxdWFsICdfJylcbiAgICB0aGVuIFN0cmluZy5wcmVmaXggc3RyaW5nICFwb3NcbiAgICBlbHNlIHN0cmluZ1xuXG5sZXQgZ2VuX3N5bWJvbCA9XG4gIGxldCBjbnQgPSByZWYgMCBpblxuICBmdW4gPyhwcmVmaXggPSBcIl94XCIpICgpIC0+XG4gICAgY250IDo9ICFjbnQgKyAxO1xuICAgIGxldCBwcmVmaXggPSBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCBwcmVmaXggaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzX18lMDNpX1wiIHByZWZpeCAhY250XG5cbmxldCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6XG4gICAgKHR5cGVfZGVjbGFyYXRpb24sIF8pIHJlc3VsdCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgcHJlZml4X3N0cmluZyBpID1cbiAgICAoKiBhLCBiLCAuLi4sIHksIHosIGFhLCBiYiwgLi4uICopXG4gICAgU3RyaW5nLm1ha2UgKChpIC8gMjYpICsgMSkgKENoYXIuY2hyIChDaGFyLmNvZGUgJ2EnICsgKGkgbW9kIDI2KSkpXG4gIGluXG4gIGxldCBuYW1lX3BhcmFtIGkgKHRwLCB2YXJpYW5jZSkgPVxuICAgIChtYXRjaCB0cC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hbnkgLT4gT2sgKFB0eXBfdmFyIChnZW5fc3ltYm9sIH5wcmVmaXg6KHByZWZpeF9zdHJpbmcgaSkgKCkpKVxuICAgIHwgUHR5cF92YXIgXyBhcyB2IC0+IE9rIHZcbiAgICB8IF8gLT5cbiAgICAgICAgRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYzp0cC5wdHlwX2xvYyBcIm5vdCBhIHR5cGUgcGFyYW1ldGVyXCIpKVxuICAgID4+fCBmdW4gcHR5cF9kZXNjIC0+ICh7IHRwIHdpdGggcHR5cF9kZXNjIH0sIHZhcmlhbmNlKVxuICBpblxuICBsZXQgcHR5cGVfcGFyYW1zLCBlcnJvcnMgPVxuICAgIHRkLnB0eXBlX3BhcmFtcyB8PiBMaXN0Lm1hcGkgfmY6bmFtZV9wYXJhbVxuICAgIHw+IExpc3QucGFydGl0aW9uX21hcCAoZnVuY3Rpb25cbiAgICAgICAgIHwgT2sgbyAtPiBFaXRoZXIuTGVmdCBvXG4gICAgICAgICB8IEVycm9yIGUgLT4gRWl0aGVyLlJpZ2h0IGUpXG4gIGluXG4gIG1hdGNoIGVycm9ycyB3aXRoIFtdIC0+IE9rIHsgdGQgd2l0aCBwdHlwZV9wYXJhbXMgfSB8IHQgOjogcSAtPiBFcnJvciAodCwgcSlcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgKHRkIDogdHlwZV9kZWNsYXJhdGlvbikgOiB0eXBlX2RlY2xhcmF0aW9uID1cbiAgbWF0Y2ggbmFtZV90eXBlX3BhcmFtc19pbl90ZF9yZXMgdGQgd2l0aFxuICB8IE9rIHJlcyAtPiByZXNcbiAgfCBFcnJvciAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGNvbWJpbmF0b3JfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIH5mID1cbiAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICBsZXQgcmVzdWx0X3R5cGUgPVxuICAgIGYgfmxvYzp0ZC5wdHlwZV9uYW1lLmxvYyAoY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQpXG4gIGluXG4gIExpc3QuZm9sZF9yaWdodCB0ZC5wdHlwZV9wYXJhbXMgfmluaXQ6cmVzdWx0X3R5cGVcbiAgICB+ZjooZnVuICh0cCwgX3ZhcmlhbmNlKSBhY2MgLT5cbiAgICAgIGxldCBsb2MgPSB0cC5wdHlwX2xvYyBpblxuICAgICAgcHR5cF9hcnJvdyB+bG9jIE5vbGFiZWwgKGYgfmxvYyB0cCkgYWNjKVxuXG5sZXQgc3RyaW5nX29mX2NvcmVfdHlwZSBjdCA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gIFBwcmludGFzdC5jb3JlX3R5cGUgcHBmIGN0O1xuICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCBnZXRfdHlwZV9wYXJhbV9uYW1lX3JlcyAodHksIF8pID1cbiAgbGV0IGxvYyA9IHR5LnB0eXBfbG9jIGluXG4gIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gIHwgUHR5cF92YXIgbmFtZSAtPiBPayAoTG9jYXRlZC5tayB+bG9jIG5hbWUpXG4gIHwgXyAtPiBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIiwgW10pXG5cbmxldCBnZXRfdHlwZV9wYXJhbV9uYW1lIHQgPVxuICBtYXRjaCBnZXRfdHlwZV9wYXJhbV9uYW1lX3JlcyB0IHdpdGhcbiAgfCBPayBlIC0+IGVcbiAgfCBFcnJvciAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxuZXhjZXB0aW9uIFR5cGVfaXNfcmVjdXJzaXZlXG5cbmNsYXNzIHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlciBhcyBzdXBlclxuICAgIHZhbCB0eXBlX25hbWVzIDogc3RyaW5nIGxpc3QgPSBMaXN0Lm1hcCB0ZHMgfmY6KGZ1biB0ZCAtPiB0ZC5wdHlwZV9uYW1lLnR4dClcbiAgICBtZXRob2QgcmV0dXJuX3RydWUgKCkgPSByYWlzZV9ub3RyYWNlIFR5cGVfaXNfcmVjdXJzaXZlXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX2Fycm93IF8gLT4gKClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBpZDsgXyB9LCBfKVxuICAgICAgICB3aGVuIExpc3QubWVtIH5zZXQ6dHlwZV9uYW1lcyBpZCAtPlxuICAgICAgICAgIHNlbGYjcmV0dXJuX3RydWUgKClcbiAgICAgIHwgXyAtPiBzdXBlciNjb3JlX3R5cGUgY3R5cGVcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gY2QgPVxuICAgICAgKCogRG9uJ3QgcmVjdXJzZSB0aHJvdWdoIGNkLnBjZF9yZXMgKilcbiAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgIHwgUGNzdHJfdHVwbGUgYXJncyAtPiBMaXN0Lml0ZXIgYXJncyB+ZjpzZWxmI2NvcmVfdHlwZVxuICAgICAgfCBQY3N0cl9yZWNvcmQgZmllbGRzIC0+IExpc3QuaXRlciBmaWVsZHMgfmY6c2VsZiNsYWJlbF9kZWNsYXJhdGlvblxuXG4gICAgbWV0aG9kISBhdHRyaWJ1dGVzIF8gPSAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggYXR0cmlidXRlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKClcblxuICAgIG1ldGhvZCBnbyAoKSA9XG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIHwgUmVjdXJzaXZlIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0Lml0ZXIgdGRzIH5mOnNlbGYjdHlwZV9kZWNsYXJhdGlvbiB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmUgLT4gUmVjdXJzaXZlXG4gICAgICAgICAgfCAoKSAtPiBOb25yZWN1cnNpdmUpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X3JlY3Vyc2l2ZSByZWNfZmxhZyB0ZHMgPSAobmV3IHR5cGVfaXNfcmVjdXJzaXZlIHJlY19mbGFnIHRkcykjZ28gKClcbmxldCByZWMgbGFzdCB4IGwgPSBtYXRjaCBsIHdpdGggW10gLT4geCB8IHggOjogbCAtPiBsYXN0IHggbFxuXG5sZXQgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkID1cbiAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gIHwgUFN0ciBbXSAtPiBuYW1lLmxvY1xuICB8IFBTdHIgKHggOjogbCkgLT4geyB4LnBzdHJfbG9jIHdpdGggbG9jX2VuZCA9IChsYXN0IHggbCkucHN0cl9sb2MubG9jX2VuZCB9XG4gIHwgUFNpZyBbXSAtPiBuYW1lLmxvY1xuICB8IFBTaWcgKHggOjogbCkgLT4geyB4LnBzaWdfbG9jIHdpdGggbG9jX2VuZCA9IChsYXN0IHggbCkucHNpZ19sb2MubG9jX2VuZCB9XG4gIHwgUFR5cCB0IC0+IHQucHR5cF9sb2NcbiAgfCBQUGF0ICh4LCBOb25lKSAtPiB4LnBwYXRfbG9jXG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPiB7IHgucHBhdF9sb2Mgd2l0aCBsb2NfZW5kID0gZS5wZXhwX2xvYy5sb2NfZW5kIH1cblxubGV0IGxvY19vZl9wYXlsb2FkIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZFxuXG5sZXQgbG9jX29mX2F0dHJpYnV0ZSB7IGF0dHJfbmFtZTsgYXR0cl9wYXlsb2FkOyBhdHRyX2xvYyA9IF8gfSA9XG4gICgqIFRPRE86IGZpeCB0aGlzIGluIHRoZSBjb21waWxlciwgYW5kIG1vdmUgdGhlIGxvZ2ljIHRvIG9tcCB3aGVuIGNvbnZlcnRpbmdcbiAgICAgZnJvbSBvbGRlciBhc3RzLiAqKVxuICAoKiBcIm9jYW1sLmRvY1wiIGF0dHJpYnV0ZXMgYXJlIGdlbmVyYXRlZCB3aXRoIFtMb2NhdGlvbi5ub25lXSwgd2hpY2ggaXMgbm90IGhlbHBmdWwgZm9yXG4gICAgIGVycm9yIG1lc3NhZ2VzLiAqKVxuICBpZiBQb2x5LiggPSApIGF0dHJfbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuXG4gICAgbG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZFxuICBlbHNlXG4gICAge1xuICAgICAgYXR0cl9uYW1lLmxvYyB3aXRoXG4gICAgICBsb2NfZW5kID0gKGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIGF0dHJfbmFtZSBhdHRyX3BheWxvYWQpLmxvY19lbmQ7XG4gICAgfVxuXG5sZXQgbG9jX29mX2V4dGVuc2lvbiAobmFtZSwgcGF5bG9hZCkgPVxuICBpZiBQb2x5LiggPSApIG5hbWUubG9jIExvY2F0aW9uLm5vbmUgdGhlbiBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWRcbiAgZWxzZVxuICAgIHsgbmFtZS5sb2Mgd2l0aCBsb2NfZW5kID0gKGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZCkubG9jX2VuZCB9XG5cbmxldCBjdXJyeV9hcHBsaWNhdGlvbnMgZXhwciA9XG4gIGxldCBvcGVuIEFzdF9idWlsZGVyX2dlbmVyYXRlZC5NIGluXG4gIG1hdGNoIGV4cHIucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2FwcGx5IChmLCBvcmlnX2ZvcndhcmRfYXJncykgLT5cbiAgICAgIGxldCBsb2MgPSBleHByLnBleHBfbG9jIGluXG4gICAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGZcbiAgICAgICAgfCBsYXN0X2FyZyA6OiByZXZfZnJvbnRfYXJncyAtPlxuICAgICAgICAgICAgcGV4cF9hcHBseSB+bG9jIChsb29wIHJldl9mcm9udF9hcmdzKSBbIGxhc3RfYXJnIF1cbiAgICAgIGluXG4gICAgICBsb29wIChMaXN0LnJldiBvcmlnX2ZvcndhcmRfYXJncylcbiAgfCBfIC0+IGV4cHJcblxubGV0IGF0dHJpYnV0ZXNfZXJyb3JzID1cbiAgTGlzdC5maWx0ZXJfbWFwIH5mOihmdW5jdGlvblxuICAgIHwgeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX2xvYyA9IF87IGF0dHJfcGF5bG9hZCA9IF8gfVxuICAgICAgd2hlbiBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS5Mb2NhdGlvbi50eHQgLT5cbiAgICAgICAgTm9uZVxuICAgIHwgYXR0ciAtPlxuICAgICAgICBsZXQgbG9jID0gbG9jX29mX2F0dHJpYnV0ZSBhdHRyIGluXG4gICAgICAgIFNvbWUgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIkF0dHJpYnV0ZXMgbm90IGFsbG93ZWQgaGVyZVwiKSlcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZTAuZm9sZFxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgYWNjID0gYXR0cmlidXRlc19lcnJvcnMgWyBhIF0gQCBhY2NcbiAgZW5kXG5cbmxldCBhc3NlcnRfbm9fYXR0cmlidXRlcyBsID1cbiAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgbCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBlcnIgOjogXyAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnJcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzX2luID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSBhID0gYXNzZXJ0X25vX2F0dHJpYnV0ZXMgWyBhIF1cbiAgZW5kXG5cbmxldCBhdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyA9XG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IGxvYzsgdHh0ID0gXCJvY2FtbC5wcHdhcm5pbmdcIiB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIHMpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgPVxuICBsZXQgcmVjIGNoZWNrID0gZnVuY3Rpb25cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IF87IF8gfSAtPiBgRGVmaW5pdGVseVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2FsaWFzICh0eXAsIF8pOyBfIH0gLT4gY2hlY2sgdHlwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIF87IF8gfSAtPiBgTWF5YmVcbiAgICB8IF8gLT4gYFN1cmVseV9ub3RcbiAgICAoKiBUeXBlIHZhcnMgZ28gaGVyZSBldmVuIHRob3VnaCB0aGV5IGNvdWxkIGJlIHBvbHltb3JwaGljXG4gICAgICAgdmFyaWFudHMsIGhvd2V2ZXIgd2UgZG9uJ3QgaGFuZGxlIGl0IGlmIHRoZXkgZ2V0IHN1YnN0aXR1dGVkXG4gICAgICAgYnkgYSBwb2x5bW9ycGhpYyB2YXJpYW50IHRoYXQgaXMgdGhlbiBpbmNsdWRlZC4gKilcbiAgaW5cbiAgZnVuIHRkIH5zaWdfIC0+XG4gICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IF8gfCBQdHlwZV9yZWNvcmQgXyB8IFB0eXBlX29wZW4gLT4gYFN1cmVseV9ub3RcbiAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChcbiAgICAgICAgbWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gaWYgc2lnXyB0aGVuIGBNYXliZSBlbHNlIGBTdXJlbHlfbm90XG4gICAgICAgIHwgU29tZSB0eXAgLT4gY2hlY2sgdHlwKVxuXG5sZXQgbWtfbmFtZWRfc2lnIH5sb2MgfnNnX25hbWUgfmhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50ID0gZnVuY3Rpb25cbiAgfCBbIHRkIF1cbiAgICB3aGVuIFN0cmluZy5lcXVhbCB0ZC5wdHlwZV9uYW1lLnR4dCBcInRcIiAmJiBMaXN0LmlzX2VtcHR5IHRkLnB0eXBlX2NzdHJzIC0+XG4gICAgICBpZlxuICAgICAgICAobm90IGhhbmRsZV9wb2x5bW9ycGhpY192YXJpYW50KVxuICAgICAgICAmJiBQb2x5LiggPSApIChpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUpIGBEZWZpbml0ZWx5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGFyaXR5ID0gTGlzdC5sZW5ndGggdGQucHR5cGVfcGFyYW1zIGluXG4gICAgICAgIGlmIGFyaXR5ID49IDQgdGhlbiBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbXR5ID1cbiAgICAgICAgICAgIGlmIGFyaXR5ID0gMCB0aGVuIHNnX25hbWUgZWxzZSBQcmludGYuc3ByaW50ZiBcIiVzJWRcIiBzZ19uYW1lIGFyaXR5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgICAgICAgbGV0IGZvcl9zdWJzdCA9XG4gICAgICAgICAgICBBc3RfaGVscGVyLlR5cGUubWsgfmxvYyB0ZC5wdHlwZV9uYW1lIH5wYXJhbXM6dGQucHR5cGVfcGFyYW1zXG4gICAgICAgICAgICAgIH5tYW5pZmVzdDpcbiAgICAgICAgICAgICAgICAocHR5cF9jb25zdHIgfmxvY1xuICAgICAgICAgICAgICAgICAgIChMb2NhdGVkLm1hcF9saWRlbnQgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6ZnN0IHRkLnB0eXBlX3BhcmFtcykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoaW5jbHVkZV9pbmZvcyB+bG9jXG4gICAgICAgICAgICAgICAocG10eV93aXRoIH5sb2NcbiAgICAgICAgICAgICAgICAgIChwbXR5X2lkZW50IH5sb2MgKExvY2F0ZWQubGlkZW50IG10eSB+bG9jKSlcbiAgICAgICAgICAgICAgICAgIFsgUHdpdGhfdHlwZXN1YnN0IChMb2NhdGVkLmxpZGVudCB+bG9jIFwidFwiLCBmb3Jfc3Vic3QpIF0pKVxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZXhuX3RvX2xvY19lcnJvciBleG4gPVxuICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGggU29tZSBlcnJvciAtPiBlcnJvciB8IE5vbmUgLT4gcmFpc2UgZXhuXG5cbm1vZHVsZSBXaXRoX2Vycm9ycyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdFxuXG4gIGxldCByZXR1cm4gZSA9IChlLCBbXSlcblxuICBsZXQgKCA+Pj0gKSAoeCwgZXJyb3JzMSkgZiA9XG4gICAgbGV0IHksIGVycm9yczIgPSBmIHggaW5cbiAgICAoeSwgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgbGV0ICggPj58ICkgKHgsIGVycm9ycykgZiA9IChmIHgsIGVycm9ycylcblxuICBsZXQgb2ZfcmVzdWx0IHJlc3VsdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE9rIHggLT4gKHgsIFtdKVxuICAgIHwgRXJyb3IgZXJyb3JzIC0+IChkZWZhdWx0LCBOb25FbXB0eUxpc3QudG9fbGlzdCBlcnJvcnMpXG5cbiAgbGV0IGNvbWJpbmVfZXJyb3JzIGxpc3QgPSAoTGlzdC5tYXAgbGlzdCB+Zjpmc3QsIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOnNuZClcbmVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X3BhdHRlcm4wXG5sZXQgbm9sYWJlbCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb2xhYmVsIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb2xhYmVsXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbGFiZWxsZWQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IExhYmVsbGVkIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMYWJlbGxlZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgb3B0aW9uYWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE9wdGlvbmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcHRpb25hbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgYXR0cmlidXRlIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5wYXlsb2FkOihUIHBheWxvYWQpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5hdHRyX25hbWUpLmxvYyAoeC5hdHRyX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGF5bG9hZCBjdHggbG9jIHguYXR0cl9wYXlsb2FkIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGJpbmRpbmdfb3Agfm9wOihUIG9wKSAgPVxuICAoKGZ1biB+cGF0OihUIHBhdCkgLT5cbiAgICAgICgoZnVuIH5leHA6KFQgZXhwKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gb3AgY3R4ICh4LnBib3Bfb3ApLmxvYyAoeC5wYm9wX29wKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBwYXQgY3R4IGxvYyB4LnBib3BfcGF0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZXhwIGN0eCBsb2MgeC5wYm9wX2V4cCBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBjYXNlIH5saHM6KFQgbGhzKSAgPVxuICAoKGZ1biB+Z3VhcmQ6KFQgZ3VhcmQpIC0+XG4gICAgICAoKGZ1biB+cmhzOihUIHJocykgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGxocyBjdHggbG9jIHgucGNfbGhzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZ3VhcmQgY3R4IGxvYyB4LnBjX2d1YXJkIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcmhzIGN0eCBsb2MgeC5wY19yaHMgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNsX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGNsX2NvbnN0ciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfc3RydWN0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2xfZnVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgKChmdW4gKFQgZjMpIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2xfYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2xldCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNsX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjbF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjbF9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2ZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2ZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY2ZfaW5oZXJpdCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmhlcml0XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY2ZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2ZfbWV0aG9kIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfbWV0aG9kIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtZXRob2RcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2ZfY29uc3RyYWludCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2ZfaW5pdGlhbGl6ZXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5pdGlhbGl6ZXJcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2ZfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY2ZfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjZmtfdmlydHVhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZpcnR1YWxcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNma19jb25jcmV0ZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBDZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbmNyZXRlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2xhc3NfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNpX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjaV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjbGFzc19pbmZvcyB+dmlydDooVCB2aXJ0KSAgPVxuICAoKGZ1biB+cGFyYW1zOihUIHBhcmFtcykgLT5cbiAgICAgICgoZnVuIH5uYW1lOihUIG5hbWUpIC0+XG4gICAgICAgICAgKChmdW4gfmV4cHI6KFQgZXhwcikgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2lfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSB2aXJ0IGN0eCBsb2MgeC5wY2lfdmlydCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wY2lfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgY3R4ICh4LnBjaV9uYW1lKS5sb2MgKHgucGNpX25hbWUpLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBjaV9leHByIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmOihUIHNlbGYpICA9XG4gICgoZnVuIH5maWVsZHM6KFQgZmllbGRzKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gc2VsZiBjdHggbG9jIHgucGNzaWdfc2VsZiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3NpZ19maWVsZHMgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmOihUIHNlbGYpICA9XG4gICgoZnVuIH5maWVsZHM6KFQgZmllbGRzKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gc2VsZiBjdHggbG9jIHgucGNzdHJfc2VsZiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3N0cl9maWVsZHMgayBpbiBrKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGN0eV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGN0eV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0eV9jb25zdHIgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0eV9hcnJvdyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3R5X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdHlfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjdGZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGN0Zl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjdGZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmhlcml0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl92YWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBjdGZfY29uc3RyYWludCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGN0Zl9hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3RmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNsb3NlZCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDbG9zZWQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkNsb3NlZFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG9wZW5fID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE9wZW4gLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY29uc3RfaW50ZWdlciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZWdlclwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBjb25zdF9jaGFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQY29uc3RfY2hhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2hhclwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGNvbnN0X3N0cmluZyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGNvbnN0X2Zsb2F0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmxvYXRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwY3N0cl90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwY3N0cl9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2RfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH52YXJzOihUIHZhcnMpIC0+XG4gICAgICAoKGZ1biB+YXJnczooVCBhcmdzKSAtPlxuICAgICAgICAgICgoZnVuIH5yZXM6KFQgcmVzKSAtPlxuICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGNkX25hbWUpLmxvYyAoeC5wY2RfbmFtZSkudHh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gdmFycyBjdHggbG9jIHgucGNkX3ZhcnMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGFyZ3MgY3R4IGxvYyB4LnBjZF9hcmdzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSByZXMgY3R4IGxvYyB4LnBjZF9yZXMgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwdHlwX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHB0eXBfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlwX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhclwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBfYXJyb3cgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcnJvd1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX2NvbnN0ciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9vYmplY3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9jbGFzcyAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfYWxpYXMgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBfdmFyaWFudCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9wb2x5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBvbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHR5cF9wYWNrYWdlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2thZ2VcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdHlwX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHVwdG8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVXB0byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVXB0b1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGRvd250b18gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgRG93bnRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJEb3dudG9cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZGlyYV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGRpcl9zdHJpbmcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBkaXJfc3RyaW5nIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBkaXJfaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBkaXJfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBkaXJfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZGlyX2Jvb2wgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBkaXJfYm9vbCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYm9vbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9jb25zdGFudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RhbnRcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2xldCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfZnVuY3Rpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0aW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9mdW4gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICAoKGZ1biAoVCBmMykgLT5cbiAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2FwcGx5IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX21hdGNoIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtYXRjaFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3RyeSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRyeVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3R1cGxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0dXBsZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfY29uc3RydWN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3ZhcmlhbnQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidmFyaWFudFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3JlY29yZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY29yZFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX2ZpZWxkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmllbGRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9zZXRmaWVsZCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgICgoZnVuIChUIGYyKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRmaWVsZFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9hcnJheSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9hcnJheSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyYXlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX2lmdGhlbmVsc2UgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlmdGhlbmVsc2VcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfc2VxdWVuY2UgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNlcXVlbmNlXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfd2hpbGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIndoaWxlXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfZm9yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgKChmdW4gKFQgZjMpIC0+XG4gICAgICAgICAgICAgICgoZnVuIChUIGY0KSAtPlxuICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmNCBjdHggbG9jIHg0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmb3JcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfY29uc3RyYWludCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfY29lcmNlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvZXJjZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4cF9zZW5kIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZW5kXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfbmV3IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX25ldyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfc2V0aW5zdHZhciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2V0aW5zdHZhclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX292ZXJyaWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvdmVycmlkZVwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbGV0bW9kdWxlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRtb2R1bGVcIikpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfbGV0ZXhjZXB0aW9uIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0ZXhjZXB0aW9uXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfYXNzZXJ0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXNzZXJ0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX3BvbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicG9seVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX29iamVjdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9iamVjdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfbmV3dHlwZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibmV3dHlwZVwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXhwX3BhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfcGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicGFja1wiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBleHBfb3BlbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBleHBfbGV0b3AgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfbGV0b3AgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG9wXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcGV4cF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwZXhwX3VucmVhY2hhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidW5yZWFjaGFibGVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4dF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5raW5kOihUIGtpbmQpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wZXh0X25hbWUpLmxvYyAoeC5wZXh0X25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnBleHRfa2luZCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcGV4dF9kZWNsIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgKChmdW4gKFQgZjIpIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVjbFwiKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwZXh0X3JlYmluZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWJpbmRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHVuaXQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVW5pdCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVW5pdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5hbWVkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IE5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTmFtZWRcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBpbmNsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBpbmNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGluY2xfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgaW5jbHVkZV9pbmZvcyB+bW9kXzooVCBtb2RfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gbW9kXyBjdHggbG9jIHgucGluY2xfbW9kIGsgaW4gaykpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgaW5qZWN0aXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IEluamVjdGl2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW5qZWN0aXZlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbm9pbmplY3Rpdml0eSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb0luamVjdGl2aXR5IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb0luamVjdGl2aXR5XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGxkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBsZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBsZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+bXV0YWJsZV86KFQgbXV0YWJsZV8pIC0+XG4gICAgICAoKGZ1biB+dHlwZV86KFQgdHlwZV8pIC0+XG4gICAgICAgICAgVFxuICAgICAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucGxkX25hbWUpLmxvYyAoeC5wbGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG11dGFibGVfIGN0eCBsb2MgeC5wbGRfbXV0YWJsZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucGxkX3R5cGUgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxldG9wIH5sZXRfOihUIGxldF8pICA9XG4gICgoZnVuIH5hbmRzOihUIGFuZHMpIC0+XG4gICAgICAoKGZ1biB+Ym9keTooVCBib2R5KSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gbGV0XyBjdHggbG9jIHgubGV0XyBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGFuZHMgY3R4IGxvYyB4LmFuZHMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBib2R5IGN0eCBsb2MgeC5ib2R5IGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGxvY2F0aW9uIH5zdGFydDooVCBzdGFydCkgID1cbiAgKChmdW4gfmVuZF86KFQgZW5kXykgLT5cbiAgICAgICgoZnVuIH5naG9zdDooVCBnaG9zdCkgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHN0YXJ0IGN0eCBsb2MgeC5sb2Nfc3RhcnQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBlbmRfIGN0eCBsb2MgeC5sb2NfZW5kIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZ2hvc3QgY3R4IGxvYyB4LmxvY19naG9zdCBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IExpZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGlkZW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBsZG90IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IExkb3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxkb3RcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBsYXBwbHkgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTGFwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMYXBwbHlcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbWJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1iX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1iX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9iaW5kaW5nIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5leHByOihUIGV4cHIpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtYl9uYW1lKS5sb2MgKHgucG1iX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBtYl9leHByIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBtb2R1bGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnR5cGVfOihUIHR5cGVfKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWRfbmFtZSkubG9jICh4LnBtZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG1kX3R5cGUgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBtb2RfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG1vZF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtb2RfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2RfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtb2Rfc3RydWN0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RydWN0dXJlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG1vZF9mdW5jdG9yIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG1vZF9hcHBseSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXBwbHlcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG1vZF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG1vZF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbW9kX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1zX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtc19hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lOihUIG5hbWUpICA9XG4gICgoZnVuIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtc19uYW1lKS5sb2MgKHgucG1zX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCAoeC5wbXNfbWFuaWZlc3QpLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnBtc19tYW5pZmVzdCkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcG10eV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbXR5X2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG10eV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9zaWduYXR1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzaWduYXR1cmVcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwbXR5X2Z1bmN0b3IgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZnVuY3RvclwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbXR5X3dpdGggKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2l0aFwiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwbXR5X3R5cGVvZiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV90eXBlb2YgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVvZlwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBtdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcG10eV9hbGlhcyAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUG10eV9hbGlhcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFsaWFzXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG10ZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbXRkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG10ZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dHlwZV86KFQgdHlwZV8pIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wbXRkX25hbWUpLmxvYyAoeC5wbXRkX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbXRkX3R5cGUgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IGltbXV0YWJsZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBJbW11dGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkltbXV0YWJsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG11dGFibGVfID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE11dGFibGUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk11dGFibGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwb2ZfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwb2ZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBvZl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBvZl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvdGFnIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE90YWcgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3RhZ1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBvaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgT2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9pbmhlcml0XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgb3Blbl9pbmZvc19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb3Blbl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wb3Blbl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBvcGVuX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG9wZW5faW5mb3MgfmV4cHI6KFQgZXhwcikgID1cbiAgKChmdW4gfm92ZXJyaWRlOihUIG92ZXJyaWRlKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBvcGVuX2V4cHIgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBvdmVycmlkZSBjdHggbG9jIHgucG9wZW5fb3ZlcnJpZGUgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IG92ZXJyaWRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE92ZXJyaWRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPdmVycmlkZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGZyZXNoID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IEZyZXNoIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJGcmVzaFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHBhdF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBwYXRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYW55ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfYW55IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYW55XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfdmFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3ZhciB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhclwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfYWxpYXMgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwcGF0X2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfaW50ZXJ2YWwgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImludGVydmFsXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfdHVwbGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfdHVwbGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR1cGxlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9jb25zdHJ1Y3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RydWN0XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfdmFyaWFudCAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJpYW50XCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfcmVjb3JkIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBwYXRfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFBwYXRfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9vciAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBQcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3JcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF9jb25zdHJhaW50IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHBhdF90eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X3VucGFjayAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwcGF0X2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXRfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHBhdF9vcGVuIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBTdHIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTdHJcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBTaWcgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTaWdcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXAgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBUeXAgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBUeXBcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBwYXQgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFBhdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBvc2l0aW9uIH5mbmFtZTooVCBmbmFtZSkgID1cbiAgKChmdW4gfmxudW06KFQgbG51bSkgLT5cbiAgICAgICgoZnVuIH5ib2w6KFQgYm9sKSAtPlxuICAgICAgICAgICgoZnVuIH5jbnVtOihUIGNudW0pIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmbmFtZSBjdHggbG9jIHgucG9zX2ZuYW1lIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGxudW0gY3R4IGxvYyB4LnBvc19sbnVtIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGJvbCBjdHggbG9jIHgucG9zX2JvbCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBjbnVtIGN0eCBsb2MgeC5wb3NfY251bSBrIGluIGspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHJpdmF0ZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHJpdmF0ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHJpdmF0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB1YmxpYyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdWJsaWMgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlB1YmxpY1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IG5vbnJlY3Vyc2l2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb25yZWN1cnNpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbnJlY3Vyc2l2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHJlY3Vyc2l2ZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBSZWN1cnNpdmUgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJlY3Vyc2l2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHByZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHByZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHJmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHJ0YWcgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICAoKGZ1biAoVCBmMikgLT5cbiAgICAgICAgICBUXG4gICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUnRhZ1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcmluaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFJpbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSaW5oZXJpdFwiKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHNpZ192YWx1ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfdmFsdWUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbHVlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHNpZ190eXBlc3Vic3QgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfZXhjZXB0aW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2R1bGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX21vZHVsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfcmVjbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY21vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19tb2R0eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfb3BlbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfb3BlbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19pbmNsdWRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbmNsdWRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzaWdfY2xhc3NfdHlwZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NfdHlwZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHNpZ19hdHRyaWJ1dGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc2lnX2V4dGVuc2lvbiAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc3RyX2V2YWwgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJldmFsXCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHN0cl92YWx1ZSAoVCBmMCkgPVxuICAoKGZ1biAoVCBmMSkgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBQc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfcHJpbWl0aXZlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInByaW1pdGl2ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl90eXBlIChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHBzdHJfdHlwZXh0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl90eXBleHQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGV4dFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9leGNlcHRpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXhjZXB0aW9uXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBfbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfcmVjbW9kdWxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInJlY21vZHVsZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9tb2R0eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfY2xhc3MgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2NsYXNzIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9jbGFzc190eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc190eXBlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwc3RyX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gX2xvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHBzdHJfYXR0cmlidXRlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgcHN0cl9leHRlbnNpb24gKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIF9sb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+YXJnOihUIGFyZykgLT5cbiAgICAgIFRcbiAgICAgICAgKGZ1biBjdHggLT5cbiAgICAgICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBkaXJfbmFtZSkubG9jICh4LnBkaXJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBhcmcgY3R4IGxvYyB4LnBkaXJfYXJnIGsgaW4gaylcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0b3BfZGVmIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBQdG9wX2RlZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVmXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbmxldCBwdG9wX2RpciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHRvcF9kaXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRpclwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlwZV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZGVjbGFyYXRpb24gfm5hbWU6KFQgbmFtZSkgID1cbiAgKChmdW4gfnBhcmFtczooVCBwYXJhbXMpIC0+XG4gICAgICAoKGZ1biB+Y3N0cnM6KFQgY3N0cnMpIC0+XG4gICAgICAgICAgKChmdW4gfmtpbmQ6KFQga2luZCkgLT5cbiAgICAgICAgICAgICAgKChmdW4gfnByaXZhdGVfOihUIHByaXZhdGVfKSAtPlxuICAgICAgICAgICAgICAgICAgKChmdW4gfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBjdHggKHgucHR5cGVfbmFtZSkubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LnB0eXBlX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zIGN0eCBsb2MgeC5wdHlwZV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gY3N0cnMgY3R4IGxvYyB4LnB0eXBlX2NzdHJzIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnB0eXBlX2tpbmQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGVfIGN0eCBsb2MgeC5wdHlwZV9wcml2YXRlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdCBjdHggbG9jIHgucHR5cGVfbWFuaWZlc3QgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgdHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHR5ZXhuX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eWV4bl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eWV4bl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB0eXBlX2V4Y2VwdGlvbiB+Y29uc3RydWN0b3I6KFQgY29uc3RydWN0b3IpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gY29uc3RydWN0b3IgY3R4IGxvYyB4LnB0eWV4bl9jb25zdHJ1Y3RvciBrIGluIGspKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4dF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleHRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leHRlbnNpb24gfnBhdGg6KFQgcGF0aCkgID1cbiAgKChmdW4gfnBhcmFtczooVCBwYXJhbXMpIC0+XG4gICAgICAoKGZ1biB+Y29uc3RydWN0b3JzOihUIGNvbnN0cnVjdG9ycykgLT5cbiAgICAgICAgICAoKGZ1biB+cHJpdmF0ZV86KFQgcHJpdmF0ZV8pIC0+XG4gICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBjdHggKHgucHR5ZXh0X3BhdGgpLmxvY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgucHR5ZXh0X3BhdGgpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlleHRfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9ycyBjdHggbG9jIHgucHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlleHRfcHJpdmF0ZSBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGspKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB0eXBlX2Fic3RyYWN0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhYnN0cmFjdFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBlX3ZhcmlhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBlX3JlY29yZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNvcmRcIilcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB0eXBlX29wZW4gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHZhbHVlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHZiX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2Yl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB2Yl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB2YWx1ZV9iaW5kaW5nIH5wYXQ6KFQgcGF0KSAgPVxuICAoKGZ1biB+ZXhwcjooVCBleHByKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBwYXQgY3R4IGxvYyB4LnB2Yl9wYXQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBleHByIGN0eCBsb2MgeC5wdmJfZXhwciBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgdmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHZhbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdmFsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZhbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZTooVCBuYW1lKSAgPVxuICAoKGZ1biB+dHlwZV86KFQgdHlwZV8pIC0+XG4gICAgICAoKGZ1biB+cHJpbTooVCBwcmltKSAtPlxuICAgICAgICAgIFRcbiAgICAgICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lIGN0eCAoeC5wdmFsX25hbWUpLmxvYyAoeC5wdmFsX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucHZhbF90eXBlIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IHByaW0gY3R4IGxvYyB4LnB2YWxfcHJpbSBrIGluIGspKVxuICAgICAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgY292YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENvdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ292YXJpYW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgY29udHJhdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb250cmF2YXJpYW50XCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgbm92YXJpYW5jZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAoKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb1ZhcmlhbmNlXCIpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSlcbiAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG5sZXQgdmlydHVhbF8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgKChmdW4gayAtPlxuICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgVmlydHVhbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVmlydHVhbFwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IGNvbmNyZXRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgKChmdW4gbG9jIC0+XG4gICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IENvbmNyZXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb25jcmV0ZVwiKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpXG4gICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKVxubGV0IHB3aXRoX3R5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2R1bGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHVsZVwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHR5cGUgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbiAgICAgICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1cbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pKSlcbiAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSlcbmxldCBwd2l0aF9tb2R0eXBlc3Vic3QgKFQgZjApID1cbiAgKChmdW4gKFQgZjEpIC0+XG4gICAgICBUXG4gICAgICAgIChmdW4gY3R4IC0+XG4gICAgICAgICAgICgoZnVuIGxvYyAtPlxuICAgICAgICAgICAgICAgKChmdW4geCAtPlxuICAgICAgICAgICAgICAgICAgICgoZnVuIGsgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdHlwZXN1YnN0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG5sZXQgcHdpdGhfdHlwZXN1YnN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVzdWJzdFwiKVxuICAgICAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpXG4gICAgICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXSkpKVxuICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKVxubGV0IHB3aXRoX21vZHN1YnN0IChUIGYwKSA9XG4gICgoZnVuIChUIGYxKSAtPlxuICAgICAgVFxuICAgICAgICAoZnVuIGN0eCAtPlxuICAgICAgICAgICAoKGZ1biBsb2MgLT5cbiAgICAgICAgICAgICAgICgoZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAoKGZ1biBrIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4gICAgICAgICAgICAgICAgICAgW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF1bQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKVxuICAgICAgICAgICBbQHBweGxpYi5taWdyYXRpb24uc3RvcF90YWtpbmcgXVtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdXG4gICAgICAgICAgIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdKSkpXG4gIFtAcHB4bGliLm1pZ3JhdGlvbi5zdG9wX3Rha2luZyBdW0BwcHhsaWIubWlncmF0aW9uLnN0b3BfdGFraW5nIF0pXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXN0X3BhdHRlcm4wXG5cbmxldCBzYXZlX2NvbnRleHQgY3R4ID0gY3R4Lm1hdGNoZWRcbmxldCByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cCA9IGN0eC5tYXRjaGVkIDwtIGJhY2t1cFxubGV0IGluY3JfbWF0Y2hlZCBjID0gYy5tYXRjaGVkIDwtIGMubWF0Y2hlZCArIDFcblxubGV0IHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIHRyeSBPayAoZiB7IG1hdGNoZWQgPSAwIH0gbG9jIHggaylcbiAgd2l0aCBFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkgLT4gKFxuICAgIG1hdGNoIG9uX2Vycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIiVzIGV4cGVjdGVkXCIgZXhwZWN0ZWQsIFtdKVxuICAgIHwgU29tZSBmIC0+IE9rIChmICgpKSlcblxubGV0IHBhcnNlIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgbWF0Y2ggcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrIHdpdGhcbiAgfCBPayByIC0+IHJcbiAgfCBFcnJvciAociwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgclxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4wLnQgKiAnYiAtPiAoJ2EsICdjKSB0XG5cbiAgbGV0IGNyZWF0ZSB0IGYgPSBUICh0LCBmKVxuICBsZXQgcGFyc2VfcmVzIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZV9yZXMgdCBsb2MgeCBmXG4gIGxldCBwYXJzZSAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2UgdCBsb2MgeCBmXG5lbmRcblxubGV0IF9fID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB4KVxuXG5sZXQgX18nID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHsgbG9jOyB0eHQgPSB4IH0pXG5cbmxldCBkcm9wID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgXyBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgaylcblxubGV0IGFzX18gKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4IChrIHgpIGluXG4gICAgICBrKVxuXG5sZXQgY3N0IH50b19zdHJpbmcgPyhlcXVhbCA9IFBvbHkuZXF1YWwpIHYgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaWYgZXF1YWwgeCB2IHRoZW4gKFxuICAgICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgICBrKVxuICAgICAgZWxzZSBmYWlsIGxvYyAodG9fc3RyaW5nIHYpKVxuXG5sZXQgaW50IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQudG9fc3RyaW5nIHZcbmxldCBjaGFyIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlQ1wiKSB2XG5sZXQgc3RyaW5nIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlU1wiKSB2XG5sZXQgZmxvYXQgdiA9IGNzdCB+dG9fc3RyaW5nOkZsb2F0LnRvX3N0cmluZyB2XG5sZXQgaW50MzIgdiA9IGNzdCB+dG9fc3RyaW5nOkludDMyLnRvX3N0cmluZyB2XG5sZXQgaW50NjQgdiA9IGNzdCB+dG9fc3RyaW5nOkludDY0LnRvX3N0cmluZyB2XG5sZXQgbmF0aXZlaW50IHYgPSBjc3QgfnRvX3N0cmluZzpOYXRpdmVpbnQudG9fc3RyaW5nIHZcbmxldCBib29sIHYgPSBjc3QgfnRvX3N0cmluZzpCb29sLnRvX3N0cmluZyB2XG5cbmxldCBib29sJyAoVCBmdW5jKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgXCJ0cnVlXCIgLT4gZnVuYyBjdHggbG9jIHRydWUga1xuICAgICAgfCBcImZhbHNlXCIgLT4gZnVuYyBjdHggbG9jIGZhbHNlIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkJvb2xcIilcblxubGV0IGZhbHNlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmFsc2VcIilcblxubGV0IHRydWVfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRydWVcIilcblxubGV0IG5pbCA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiW11cIilcblxubGV0ICggXjo6ICkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgeDAgOjogeDEgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIjo6XCIpXG5cbmxldCBub25lID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbmVcIilcblxubGV0IHNvbWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIHgwIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiU29tZVwiKVxuXG5sZXQgcGFpciAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGspXG5cbmxldCAoICoqICkgPSBwYWlyXG5cbmxldCB0cmlwbGUgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIsIHgzKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICBrKVxuXG5sZXQgYWx0IChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGJhY2t1cCA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgIHRyeSBmMSBjdHggbG9jIHgga1xuICAgICAgd2l0aCBlMSAtPiAoXG4gICAgICAgIGxldCBtMSA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXA7XG4gICAgICAgIHRyeSBmMiBjdHggbG9jIHgga1xuICAgICAgICB3aXRoIGUyIC0+XG4gICAgICAgICAgbGV0IG0yID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICAgIGlmIG0xID49IG0yIHRoZW4gKFxuICAgICAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBtMTtcbiAgICAgICAgICAgIHJhaXNlIGUxKVxuICAgICAgICAgIGVsc2UgcmFpc2UgZTIpKVxuXG5sZXQgKCB8fHwgKSA9IGFsdFxubGV0IG1hcCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBrKSlcbmxldCBtYXAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGxvYyBrKSlcbmxldCBtYXBfcmVzdWx0IChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgKGZ1bmMgY3R4IGxvYyB4IGspKVxubGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbmxldCBtYXAwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIGYpKVxubGV0IG1hcDEgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgYSkpKVxuXG5sZXQgbWFwMiAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGEgYikpKVxuXG5sZXQgbWFwMCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgKGYgbG9jKSkpXG5cbmxldCBtYXAxJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBsb2MgYSkpKVxuXG5sZXQgbWFwMicgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBsb2MgYSBiKSkpXG5cbmxldCBtYXBfdmFsdWUgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIHgpIGspXG5sZXQgbWFwX3ZhbHVlJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgbG9jIHgpIGspXG5cbmxldCBhbHRfb3B0aW9uIHNvbWUgbm9uZSA9XG4gIGFsdCAobWFwMSBzb21lIH5mOihmdW4geCAtPiBTb21lIHgpKSAobWFwMCBub25lIH5mOk5vbmUpXG5cbmxldCBtYW55IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyBsIGsgLT5cbiAgICAgIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGsgKExpc3QucmV2IGFjY3UpXG4gICAgICAgIHwgeCA6OiB4cyAtPiBmIGN0eCBsb2MgeCAoZnVuIHggLT4gYXV4ICh4IDo6IGFjY3UpIHhzKVxuICAgICAgaW5cbiAgICAgIGF1eCBbXSBsKVxuXG5sZXQgbG9jIChUIGYpID0gVCAoZnVuIGN0eCBfbG9jICh4IDogXyBMb2MudCkgayAtPiBmIGN0eCB4LmxvYyB4LnR4dCBrKVxubGV0IHBhY2swIHQgPSBtYXAgdCB+ZjooZnVuIGYgLT4gZiAoKSlcbmxldCBwYWNrMiB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSAtPiBmICh4LCB5KSlcbmxldCBwYWNrMyB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSB6IC0+IGYgKHgsIHksIHopKVxuXG5pbmNsdWRlIEFzdF9wYXR0ZXJuX2dlbmVyYXRlZFxuXG5sZXQgZWNoYXIgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgZXN0cmluZyB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBlZmxvYXQgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgcGNoYXIgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgcHN0cmluZyB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBwZmxvYXQgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgaW50JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKGludF9vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQzMicgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQzMi5vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQ2NCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQ2NC5vZl9zdHJpbmcgeCkgaylcblxubGV0IG5hdGl2ZWludCcgKFQgZikgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChOYXRpdmVpbnQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBjb25zdF9pbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQnIHQpIG5vbmVcbmxldCBjb25zdF9pbnQzMiB0ID0gcGNvbnN0X2ludGVnZXIgKGludDMyJyB0KSAoc29tZSAoY2hhciAnbCcpKVxubGV0IGNvbnN0X2ludDY0IHQgPSBwY29uc3RfaW50ZWdlciAoaW50NjQnIHQpIChzb21lIChjaGFyICdMJykpXG5sZXQgY29uc3RfbmF0aXZlaW50IHQgPSBwY29uc3RfaW50ZWdlciAobmF0aXZlaW50JyB0KSAoc29tZSAoY2hhciAnbicpKVxubGV0IGVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IGVpbnQzMiB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBlaW50NjQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgZW5hdGl2ZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgcGludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgcGludDMyIHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IHBpbnQ2NCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBwbmF0aXZlaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBzaW5nbGVfZXhwcl9wYXlsb2FkIHQgPSBwc3RyIChwc3RyX2V2YWwgdCBuaWwgXjo6IG5pbClcbmxldCBub19sYWJlbCB0ID0gY3N0IEFzdHR5cGVzLk5vbGFiZWwgfnRvX3N0cmluZzooZnVuIF8gLT4gXCJOb2xhYmVsXCIpICoqIHRcbmxldCBlYm9vbCB0ID0gcGV4cF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcbmxldCBwYm9vbCB0ID0gcHBhdF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcblxubGV0IGV4dGVuc2lvbiAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoKG5hbWUgOiBfIExvYy50KSwgcGF5bG9hZCkgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbmFtZS5sb2MgbmFtZS50eHQgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHBheWxvYWQgayBpblxuICAgICAgaylcblxubGV0IHJlYyBwYXJzZV9lbGlzdCAoZSA6IFBhcnNldHJlZS5leHByZXNzaW9uKSBhY2MgPVxuICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXM7XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIE5vbmUpIC0+IExpc3QucmV2IGFjY1xuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBhcmcpIC0+IChcbiAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBhcmcucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgbWF0Y2ggYXJnLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfdHVwbGUgWyBoZDsgdGwgXSAtPiBwYXJzZV9lbGlzdCB0bCAoaGQgOjogYWNjKVxuICAgICAgfCBfIC0+IGZhaWwgYXJnLnBleHBfbG9jIFwibGlzdFwiKVxuICB8IF8gLT4gZmFpbCBlLnBleHBfbG9jIFwibGlzdFwiXG5cbmxldCBlbGlzdCAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IGwgPSBwYXJzZV9lbGlzdCBlIFtdIGluXG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayAoTGlzdC5tYXAgbCB+ZjooZnVuIHggLT4gZiBjdHggeC5QYXJzZXRyZWUucGV4cF9sb2MgeCAoZnVuIHggLT4geCkpKSlcblxubGV0IGVzZXF1ZW5jZSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IHJlYyBwYXJzZV9zZXEgZXhwciBhY2MgPVxuICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoZXhwciwgbmV4dCkgLT4gcGFyc2Vfc2VxIG5leHQgKGV4cHIgOjogYWNjKVxuICAgICAgICB8IF8gLT4gZXhwciA6OiBhY2NcbiAgICAgIGluXG4gICAgICBrXG4gICAgICAgIChMaXN0LnJldl9tYXAgKHBhcnNlX3NlcSBlIFtdKSB+ZjooZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICBmIGN0eCBleHByLnBleHBfbG9jIGV4cHIgKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBvZl9mdW5jIGYgPSBUIGZcbmxldCB0b19mdW5jIChUIGYpID0gZlxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBwb2x5X2VxdWFsIGEgYiA9XG4gIGxldCBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiBfIC0+IHRcbiAgZW5kIGluXG4gIFN0ZHBweC5Qb2x5LmVxdWFsIChQb2x5LlQgYSkgKFBvbHkuVCBiKVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiB0XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gdFxuICAgIHwgVHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiB0XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ2xhc3NfaW5mb3MgOiBfIGNsYXNzX2luZm9zIHRcbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiB0XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiB0XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiB0XG4gICAgfCBJbmNsdWRlX2luZm9zIDogXyBpbmNsdWRlX2luZm9zIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgVmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgdFxuICAgIHwgTW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyB0XG4gICAgfCBQc3RyX2V2YWwgOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc3RyX2V4dGVuc2lvbiA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgUnRhZyA6IHJvd19maWVsZCB0XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCA6IG9iamVjdF9maWVsZCB0XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uID0gTGFiZWxfZGVjbGFyYXRpb25cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZGVjbGFyYXRpb24gPSBUeXBlX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA9IFR5cGVfZXh0ZW5zaW9uXG4gIGxldCB0eXBlX2V4Y2VwdGlvbiA9IFR5cGVfZXhjZXB0aW9uXG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFZhbHVlX2Rlc2NyaXB0aW9uXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNsYXNzX2luZm9zID0gQ2xhc3NfaW5mb3NcbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfZGVjbGFyYXRpb25cbiAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgbGV0IG9wZW5fZGVzY3JpcHRpb24gPSBPcGVuX2Rlc2NyaXB0aW9uXG4gIGxldCBpbmNsdWRlX2luZm9zID0gSW5jbHVkZV9pbmZvc1xuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgdmFsdWVfYmluZGluZyA9IFZhbHVlX2JpbmRpbmdcbiAgbGV0IG1vZHVsZV9iaW5kaW5nID0gTW9kdWxlX2JpbmRpbmdcbiAgbGV0IHBzdHJfZXZhbCA9IFBzdHJfZXZhbFxuICBsZXQgcHN0cl9leHRlbnNpb24gPSBQc3RyX2V4dGVuc2lvblxuICBsZXQgcHNpZ19leHRlbnNpb24gPSBQc2lnX2V4dGVuc2lvblxuICBsZXQgcnRhZyA9IFJ0YWdcbiAgbGV0IG9iamVjdF90eXBlX2ZpZWxkID0gT2JqZWN0X3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X3BzdHJfZXZhbCBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXZhbCAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXZhbFwiXG5cbiAgbGV0IGdldF9wc3RyX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfcHNpZ19leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzaWdfZGVzYyB3aXRoXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzaWdfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geC5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geC5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHgucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHgucHR5ZXhuX2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB4LnBleHRfYXR0cmlidXRlc1xuICAgIHwgUGF0dGVybiAtPiB4LnBwYXRfYXR0cmlidXRlc1xuICAgIHwgQ29yZV90eXBlIC0+IHgucHR5cF9hdHRyaWJ1dGVzXG4gICAgfCBFeHByZXNzaW9uIC0+IHgucGV4cF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB4LnB2YWxfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZSAtPiB4LnBjdHlfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB4LnBjdGZfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfaW5mb3MgLT4geC5wY2lfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZXhwciAtPiB4LnBjbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19maWVsZCAtPiB4LnBjZl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZSAtPiB4LnBtdHlfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHgucG1kX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHgucG10ZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHgucG1zX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB4LnBpbmNsX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9leHByIC0+IHgucG1vZF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHgucHZiX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHgucG1iX2F0dHJpYnV0ZXNcbiAgICB8IFBzdHJfZXZhbCAtPiBzbmQgKGdldF9wc3RyX2V2YWwgeClcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHgpXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc2lnX2V4dGVuc2lvbiB4KVxuICAgIHwgUnRhZyAtPiB4LnByZl9hdHRyaWJ1dGVzXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB4LnBvZl9hdHRyaWJ1dGVzXG5cbiAgbGV0IHNldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfaW5mb3MgLT4geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19leHByIC0+IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfYmluZGluZyAtPiB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUHN0cl9ldmFsIC0+XG4gICAgICAgIHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZ2V0X3BzdHJfZXZhbCB4IHw+IGZzdCwgYXR0cnMpIH1cbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFJ0YWcgLT4geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiBcImxhYmVsIGRlY2xhcmF0aW9uXCJcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IFwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4gXCJ0eXBlIGV4dGVuc2lvblwiXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiBcInR5cGUgZXhjZXB0aW9uXCJcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4gXCJ2YWx1ZVwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDbGFzc19pbmZvcyAtPiBcImNsYXNzIGRlY2xhcmF0aW9uXCJcbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IFwibW9kdWxlIHN1YnN0aXR1dGlvblwiXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IFwib3BlblwiXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IFwib3BlblwiXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IFwiaW5jbHVkZVwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4gXCJ2YWx1ZSBiaW5kaW5nXCJcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IFwibW9kdWxlIGJpbmRpbmdcIlxuICAgIHwgUHN0cl9ldmFsIC0+IFwidG9wbGV2ZWwgZXhwcmVzc2lvblwiXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIGV4dGVuc2lvblwiXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIHNpZ25hdHVyZSBleHRlbnNpb25cIlxuICAgIHwgUnRhZyAtPiBcInBvbHltb3JwaGljIHZhcmlhbnQgdGFnXCJcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IFwib2JqZWN0IHR5cGUgZmllbGRcIlxuXG4gICgqXG4gIGxldCBwYXR0ZXJuIDogdHlwZSBhIGIgYyBkLiBhIHRcbiAgICAtPiAoYXR0cmlidXRlcywgYiwgYykgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBjLCBkKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGIsIGQpIEFzdF9wYXR0ZXJuLnQgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gICAgICAgLT4gQXN0X3BhdHRlcm4ucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IEFzdF9wYXR0ZXJuLnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAgICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yICAgLT4gQXN0X3BhdHRlcm4ucGV4dF9hdHRyaWJ1dGVzXG4qKVxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG5tb2R1bGUgRmxvYXRpbmdfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSB0IHggPVxuICAgIG1hdGNoIGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSB0IHggd2l0aFxuICAgIHwgU29tZSBhIC0+IGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlXCJcblxuICBsZXQgcmVwbGFjZV9ieV9kdW1teSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYSA9XG4gICAgbGV0IGR1bW15X2V4dCA9ICh7IHR4dCA9IFwiXCI7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSwgUFN0ciBbXSkgaW5cbiAgICBmdW4gdCB4IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZHVtbXlfZXh0IH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbnR5cGUgcGFja2VkX2NvbnRleHQgPVxuICB8IE9uX2l0ZW0gOiBfIENvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuICB8IEZsb2F0aW5nIDogXyBGbG9hdGluZ19jb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcblxudHlwZSBfIHBheWxvYWRfcGFyc2VyID1cbiAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAocGF5bG9hZCwgJ2EsICdiKSBBc3RfcGF0dGVybi50XG4gICAgICAqIChhdHRyX2xvYzpMb2NhdGlvbi50IC0+IG5hbWVfbG9jOkxvY2F0aW9uLnQgLT4gJ2EpXG4gICAgICAtPiAnYiBwYXlsb2FkX3BhcnNlclxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xufVxuXG50eXBlIHBhY2tlZCA9IFQgOiAoXywgXykgdCAtPiBwYWNrZWRcblxubGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxubGV0IGNvbnRleHQgdCA9IHQuY29udGV4dFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiYXR0cmlidXRlXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuY3Rpb25cbiAgICB8IE9uX2l0ZW0gdCAtPiBTb21lIChDb250ZXh0LmRlc2MgdClcbiAgICB8IEZsb2F0aW5nIHQgLT4gU29tZSAoRmxvYXRpbmdfY29udGV4dC5kZXNjIHQgXiBcIiAoZmxvYXRpbmcpXCIpKVxuXG5sZXQgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICB7XG4gICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgY29udGV4dDtcbiAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICB9XG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKVxuXG5sZXQgZGVjbGFyZV93aXRoX25hbWVfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2MgLT5cbiAgICAgIGsgfm5hbWVfbG9jKVxuXG5sZXQgZGVjbGFyZV93aXRoX2F0dHJfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2Mgfm5hbWVfbG9jOl8gLT5cbiAgICAgIGsgfmF0dHJfbG9jKVxuXG50eXBlICdhIGZsYWcgPSAoJ2EsIHVuaXQpIHRcblxubGV0IGRlY2xhcmVfZmxhZyBuYW1lIGNvbnRleHQgPVxuICBsZXQgcGF5bG9hZF9wYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSBpblxuICBsZXQgY29udGludWF0aW9uIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfID0gKCkgaW5cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXlsb2FkX3BhdHRlcm4gY29udGludWF0aW9uXG5cbm1vZHVsZSBBdHRyaWJ1dGVfdGFibGUgPSBTdGRsaWIuSGFzaHRibC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxvY1xuXG4gIGxldCBub3JtYWxpemUgdCA9IHsgdCB3aXRoIGxvYyA9IHsgdC5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gfVxuICBsZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIChub3JtYWxpemUgdClcbiAgbGV0IGVxdWFsIHggeSA9IFBvbHkuZXF1YWwgKG5vcm1hbGl6ZSB4KSAobm9ybWFsaXplIHkpXG5lbmQpXG5cbmxldCBub3Rfc2VlbiA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgMTI4XG5sZXQgbWFya19hc19zZWVuIHsgYXR0cl9uYW1lOyBfIH0gPSBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIG5vdF9zZWVuIGF0dHJfbmFtZVxubGV0IG1hcmtfYXNfaGFuZGxlZF9tYW51YWxseSA9IG1hcmtfYXNfc2VlblxuXG5sZXQgZXhwbGljaXRseV9kcm9wID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSA9IG1hcmtfYXNfc2VlblxuICBlbmRcblxubGV0IGdldF9pbnRlcm5hbCA9XG4gIGxldCByZWMgZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBsb25nZXN0X21hdGNoID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVzIHdpdGhcbiAgICB8IFtdIC0+IE9rIGxvbmdlc3RfbWF0Y2hcbiAgICB8ICh7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBhcyBhdHRyKSA6OiByZXN0IC0+XG4gICAgICAgIGlmIE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dCB0aGVuXG4gICAgICAgICAgbWF0Y2ggbG9uZ2VzdF9tYXRjaCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICB8IFNvbWUgeyBhdHRyX25hbWUgPSBuYW1lJzsgXyB9IC0+XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIG5hbWUudHh0IGluXG4gICAgICAgICAgICAgIGxldCBsZW4nID0gU3RyaW5nLmxlbmd0aCBuYW1lJy50eHQgaW5cbiAgICAgICAgICAgICAgaWYgbGVuID4gbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPCBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCJEdXBsaWNhdGVkIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2UgZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gIGluXG4gIGZ1biB0IGF0dHJpYnV0ZXMgLT4gZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBOb25lXG5cbmxldCBjb252ZXJ0ID8oZG9fbWFya19hc19zZWVuID0gdHJ1ZSkgcGF0dGVybiBhdHRyID1cbiAgaWYgZG9fbWFya19hc19zZWVuIHRoZW4gbWFya19hc19zZWVuIGF0dHI7XG4gIGxldCAoUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspKSA9IHBhdHRlcm4gaW5cbiAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm5cbiAgICAoQ29tbW9uLmxvY19vZl9wYXlsb2FkIGF0dHIpXG4gICAgYXR0ci5hdHRyX3BheWxvYWRcbiAgICAoayB+YXR0cl9sb2M6YXR0ci5hdHRyX2xvYyB+bmFtZV9sb2M6YXR0ci5hdHRyX25hbWUubG9jKVxuXG5sZXQgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA/ZG9fbWFya19hc19zZWVuID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuXG5sZXQgZ2V0IHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHggPVxuICBtYXRjaCBnZXRfcmVzID9tYXJrX2FzX3NlZW4gdCB4IHdpdGhcbiAgfCBPayAoU29tZSAoKSkgLT4gT2sgdHJ1ZVxuICB8IE9rIE5vbmUgLT4gT2sgZmFsc2VcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuXG5sZXQgaGFzX2ZsYWcgdCA/bWFya19hc19zZWVuIHggPVxuICBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGNvbnN1bWVfcmVzIHQgeCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBsZXQgYXR0cnMgPSBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoYXR0ciA9PSBhdHRyJykpIGluXG4gICAgICBsZXQgeCA9IENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggYXR0cnMgaW5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lICh4LCB2YWx1ZSlcblxubGV0IGNvbnN1bWUgdCB4ID1cbiAgY29uc3VtZV9yZXMgdCB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCByZW1vdmVfc2Vlbl9yZXMgKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gT2sgYWNjXG4gICAgfCBUIHQgOjogcmVzdCAtPlxuICAgICAgICBpZiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0IHRoZW5cbiAgICAgICAgICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICAgICAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICB8IFNvbWUgYXR0ciAtPlxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgICAgICAgIGlmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZSB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBsb29wIChhdHRyIDo6IGFjYykgcmVzdFxuICAgICAgICBlbHNlIGxvb3AgYWNjIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBwYWNrZWRzID4+fCBmdW4gbWF0Y2hlZCAtPlxuICBsZXQgYXR0cnMgPVxuICAgIExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChMaXN0Lm1lbXEgfnNldDptYXRjaGVkIGF0dHInKSlcbiAgaW5cbiAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnNcblxubGV0IHJlbW92ZV9zZWVuICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIHJlbW92ZV9zZWVuX3JlcyAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSlcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHBhdHRlcm5fcmVzIHQgcCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgZiA9IEFzdF9wYXR0ZXJuLnRvX2Z1bmMgcCBpblxuICBBc3RfcGF0dGVybi5vZl9mdW5jIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGNvbnN1bWVfcmVzIHQgeCA+PnwgZnVuIHJlcyAtPlxuICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmIGN0eCBsb2MgeCAoayBOb25lKVxuICAgICAgfCBTb21lICh4LCB2KSAtPiBmIGN0eCBsb2MgeCAoayAoU29tZSB2KSkpXG5cbmxldCBwYXR0ZXJuIHQgcCA9XG4gIHBhdHRlcm5fcmVzIHQgcCB8PiBBc3RfcGF0dGVybi50b19mdW5jXG4gIHw+IChmdW4gZiBhIGIgYyBkIC0+XG4gICAgICAgZiBhIGIgYyBkXG4gICAgICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycikpXG4gIHw+IEFzdF9wYXR0ZXJuLm9mX2Z1bmNcblxubW9kdWxlIEZsb2F0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gRmxvYXRpbmdfY29udGV4dFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG4gIH1cblxuICBsZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gayk7XG4gICAgfVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB4ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBtYXRjaCB0cyB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCB7IGNvbnRleHQ7IF8gfSA6OiBfIC0+IChcbiAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgdHMgfmY6KGZ1biB0IC0+IENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQpKTtcbiAgICAgICAgbGV0IGF0dHIgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGUgY29udGV4dCB4IGluXG4gICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0KVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gT2sgTm9uZVxuICAgICAgICB8IFsgdCBdIC0+IGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGZsb2F0aW5nIGF0dHJpYnV0ZXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgICAgIFtdICkpXG5cbiAgbGV0IGNvbnZlcnQgdHMgeCA9XG4gICAgY29udmVydF9yZXMgdHMgeFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgaWZcbiAgICAobm90XG4gICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEF0dHJpYnV0ZSBuYW1lLnR4dFxuICAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dCkpXG4gICAgJiYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lXG4gIHRoZW5cbiAgICBsZXQgYWxsb3dsaXN0ID0gTmFtZS5BbGxvd2xpc3RlZC5nZXRfYXR0cmlidXRlX2xpc3QgKCkgaW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciBjb250ZXh0IH5hbGxvd2xpc3RcbiAgICAgICAgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgbm90IHVzZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IF8gPVxuICAgICAgW1xuICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgIF1cblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuXG4gICAgICAgIGEgQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGF0dHJzXG4gICAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3RlZF9lcnJvcnMpXG4gICAgICAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdLCBlcnJvcnMpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19mbG9hdGluZyA6IHR5cGUgYS5cbiAgICAgICAgYSBGbG9hdGluZy5Db250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBGbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSBjb250ZXh0IG5vZGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IFNvbWUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgKEZsb2F0aW5nLkNvbnRleHQucmVwbGFjZV9ieV9kdW1teSBjb250ZXh0IG5vZGUsIGNvbGxlY3RlZF9lcnJvcnMpXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBMYWJlbF9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4dGVuc2lvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXhjZXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXhjZXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGluXG4gICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFBhdHRlcm4geCBpblxuICAgICAgc3VwZXIjcGF0dGVybiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb3JlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY29yZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHByZXNzaW9uIHggaW5cbiAgICAgIHN1cGVyI2V4cHJlc3Npb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZSB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4IGluXG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19leHByIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZSB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2V4cHIgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjdmFsdWVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aCBSdGFnIF8gLT4gc2VsZiNjaGVja19ub2RlIFJ0YWcgeCB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3Jvd19maWVsZCB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZykgLT5cbiAgICAgICAgICAgIGxldCBmaWVsZHMsIGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+Zjooc2VsZiNjaGVja19ub2RlIE9iamVjdF90eXBlX2ZpZWxkKVxuICAgICAgICAgICAgICB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSwgTGlzdC5jb25jYXQgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU3RydWN0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXZhbCBpdGVtXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFNpZ25hdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzaWdfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuICBlbmRcblxubGV0IGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgbWF0Y2ggY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByYWlzZV9pZl9ub25fZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuIGEgQ29udGV4dC50IC0+IGEgLT4gYSA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBub2RlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyIGF0dHJzXG4gICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgICAgICAgICAgIGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHIpO1xuICAgICAgICAgICAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW11cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9ID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbGFiZWxfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXh0ZW5zaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leGNlcHRpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcGF0dGVybiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4cHJlc3Npb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNyb3dfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuICBlbmRcblxubGV0IHJlc2V0X2NoZWNrcyAoKSA9IEF0dHJpYnV0ZV90YWJsZS5jbGVhciBub3Rfc2VlblxuXG5sZXQgY29sbGVjdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cilcbiAgICAgICAgPVxuICAgICAgbGV0IGxvYyA9IENvbW1vbi5sb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5hZGQgbm90X3NlZW4gbmFtZSBsb2NcbiAgZW5kXG5cbmxldCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgPVxuICBsZXQgZmFpbCBuYW1lIGxvYyBhY2MgPVxuICAgIGxldCB0eHQgPSBuYW1lLnR4dCBpblxuICAgIGlmIG5vdCAoTmFtZS5pZ25vcmVfY2hlY2tzIHR4dCkgdGhlblxuICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlIGAlcycgd2FzIHNpbGVudGx5IGRyb3BwZWRcIiB0eHRcbiAgICAgIDo6IGFjY1xuICAgIGVsc2UgYWNjXG4gIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkIGZhaWwgbm90X3NlZW4gW11cblxubGV0IGNoZWNrX2FsbF9zZWVuICgpID1cbiAgbWF0Y2ggY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSA9XG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIHRhYmxlIG5hbWVcbiAgZW5kXG5cbmxldCBjb3B5X29mX25vdF9zZWVuICgpID1cbiAgbGV0IGNvcHkgPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIChBdHRyaWJ1dGVfdGFibGUubGVuZ3RoIG5vdF9zZWVuKSBpblxuICBBdHRyaWJ1dGVfdGFibGUuaXRlciAoQXR0cmlidXRlX3RhYmxlLmFkZCBjb3B5KSBub3Rfc2VlbjtcbiAgY29weVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIHN0ID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc3RydWN0dXJlIHN0O1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIHNnID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc2lnbmF0dXJlIHNnO1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgZmlsZV9wYXRoIDogc3RyaW5nO1xuICBtYWluX21vZHVsZV9uYW1lIDogc3RyaW5nO1xuICBzdWJtb2R1bGVfcGF0aCA6IHN0cmluZyBsb2MgbGlzdDtcbiAgZW5jbG9zaW5nX21vZHVsZSA6IHN0cmluZztcbiAgZW5jbG9zaW5nX3ZhbHVlIDogc3RyaW5nIG9wdGlvbjtcbiAgdmFsdWUgOiBzdHJpbmcgbG9jIG9wdGlvbjtcbiAgaW5fZXhwciA6IGJvb2w7XG59XG5cbmxldCB0b3BfbGV2ZWwgfmZpbGVfcGF0aCA9XG4gIGxldCBtYWluX21vZHVsZV9uYW1lID1cbiAgICBmaWxlX3BhdGggfD4gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIHw+IFN0ZGxpYi5GaWxlbmFtZS5yZW1vdmVfZXh0ZW5zaW9uXG4gICAgfD4gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgaW5cbiAge1xuICAgIGZpbGVfcGF0aDtcbiAgICBtYWluX21vZHVsZV9uYW1lO1xuICAgIHN1Ym1vZHVsZV9wYXRoID0gW107XG4gICAgZW5jbG9zaW5nX21vZHVsZSA9IG1haW5fbW9kdWxlX25hbWU7XG4gICAgZW5jbG9zaW5nX3ZhbHVlID0gTm9uZTtcbiAgICB2YWx1ZSA9IE5vbmU7XG4gICAgaW5fZXhwciA9IGZhbHNlO1xuICB9XG5cbmxldCBmaWxlX3BhdGggdCA9IHQuZmlsZV9wYXRoXG5sZXQgbWFpbl9tb2R1bGVfbmFtZSB0ID0gdC5tYWluX21vZHVsZV9uYW1lXG5sZXQgZW5jbG9zaW5nX21vZHVsZSB0ID0gdC5lbmNsb3NpbmdfbW9kdWxlXG5sZXQgZW5jbG9zaW5nX3ZhbHVlIHQgPSB0LmVuY2xvc2luZ192YWx1ZVxuXG5sZXQgc3VibW9kdWxlX3BhdGggdCA9XG4gIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcblxubGV0IHZhbHVlIHQgPSBPcHRpb24ubWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC52YWx1ZVxuXG5sZXQgZnVsbHlfcXVhbGlmaWVkX3BhdGggdCA9XG4gIGxldCB2YWx1ZSA9IHZhbHVlIHQgaW5cbiAgbGV0IHN1Ym1vZHVsZV9wYXRoID1cbiAgICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IFNvbWUgbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcbiAgaW5cbiAgbGV0IG5hbWVzID0gKFNvbWUgdC5tYWluX21vZHVsZV9uYW1lIDo6IHN1Ym1vZHVsZV9wYXRoKSBAIFsgdmFsdWUgXSBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgQEAgTGlzdC5maWx0ZXJfb3B0IG5hbWVzXG5cbmxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBpbl9leHByID0gdHJ1ZSB9XG5cbmxldCBlbnRlcl9tb2R1bGUgfmxvYyBtb2R1bGVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgc3VibW9kdWxlX3BhdGggPSB7IHR4dCA9IG1vZHVsZV9uYW1lOyBsb2MgfSA6OiB0LnN1Ym1vZHVsZV9wYXRoO1xuICAgICAgZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lO1xuICAgIH1cblxubGV0IGVudGVyX3ZhbHVlIH5sb2MgdmFsdWVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgdmFsdWUgPSBTb21lIHsgdHh0ID0gdmFsdWVfbmFtZTsgbG9jIH07XG4gICAgICBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWU7XG4gICAgfVxuXG5sZXQgdG9fc3RyaW5nX3BhdGggdCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiAodC5maWxlX3BhdGggOjogc3VibW9kdWxlX3BhdGggdClcbmxldCB3aXRoX3N0cmluZ19wYXRoIGYgfmxvYyB+cGF0aCA9IGYgfmxvYyB+cGF0aDoodG9fc3RyaW5nX3BhdGggcGF0aCk7O1xuXG5sZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgbGV0IGEgPSBcImxvbFwiXG5lbmQgaW5cbk0uYVxuIiwibW9kdWxlIEJhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyB0b29sX25hbWUgOiBzdHJpbmc7IGNvZGVfcGF0aCA6IENvZGVfcGF0aC50OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICBsZXQgdG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IGNvZGVfcGF0aCA9IENvZGVfcGF0aC50b3BfbGV2ZWwgfmZpbGVfcGF0aCBpblxuICAgIHsgdG9vbF9uYW1lOyBjb2RlX3BhdGg7IGlucHV0X25hbWUgfVxuXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC50b29sX25hbWVcbiAgbGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9leHByIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYyA6IExvY2F0aW9uLnQ7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jIH5iYXNlICgpID0geyBleHRlbnNpb25fcG9pbnRfbG9jOyBiYXNlIH1cbiAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgdCA9IHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGRlcml2ZWRfaXRlbV9sb2MgOiBMb2NhdGlvbi50OyBpbmxpbmUgOiBib29sOyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZGVyaXZlZF9pdGVtX2xvYyB+aW5saW5lIH5iYXNlICgpID1cbiAgICB7IGRlcml2ZWRfaXRlbV9sb2M7IGJhc2U7IGlubGluZSB9XG5cbiAgbGV0IGRlcml2ZWRfaXRlbV9sb2MgdCA9IHQuZGVyaXZlZF9pdGVtX2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG4gIGxldCBpbmxpbmUgdCA9IHQuaW5saW5lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmRlcml2ZWRfaXRlbV9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vbi5XaXRoX2Vycm9yc1xuaW5jbHVkZSBBc3RfdHJhdmVyc2UwXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIFBweGxpYl90cmF2ZXJzZV9idWlsdGlucy5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBBc3QubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIGVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSBuYW1lIC0+IG5hbWVcbmxldCBlbnRlciBuYW1lIHBhdGggPSBpZiBTdHJpbmcuaXNfZW1wdHkgcGF0aCB0aGVuIG5hbWUgZWxzZSBwYXRoIF4gXCIuXCIgXiBuYW1lXG5sZXQgZW50ZXJfb3B0IG5hbWVfb3B0IHBhdGggPSBlbnRlciAobW9kdWxlX25hbWUgbmFtZV9vcHQpIHBhdGhcblxuY2xhc3MgbWFwX3dpdGhfcGF0aCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZ10gbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgKCogV0FTOlxuICAgICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHggPVxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgUHN0cl9tb2R1bGUgbWIgLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyAoZW50ZXIgbWIucG1iX25hbWUudHh0IHBhdGgpIHhcbiAgICAgICB8IF8gLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHhcblxuICAgICAgIE92ZXJyaWRpbmcgW21vZHVsZV9iaW5kaW5nXSBzZWVtcyB0byBiZSBPSyBiZWNhdXNlIGl0IGRvZXMgbm90IGNhdGNoXG4gICAgICAgbG9jYWwgbW9kdWxlIGJpbmRpbmdzIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB0aGUgcGFyc2V0cmVlIGRvZXNuJ3QgbWFrZVxuICAgICAgIHVzZSBvZiBbbW9kdWxlX2JpbmRpbmddIGZvciBsb2NhbCBtb2R1bGVzLCBidXQgdGhhdCBtaWdodCBjaGFuZ2UgaW4gdGhlXG4gICAgICAgZnV0dXJlLCBzbyB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuXG5cbiAgICAgICBUaGUgZm9sbG93aW5nOlxuXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcblxuICAgICAgIGlzIGRpc2FsbG93ZWQsIGJ1dFxuXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG5cbiAgICAgICBpc24ndCwgYW5kIHRoZSBcInBhdGhcIiBjb25zdHJ1Y3RlZCBoZXJlIHdvdWxkIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZVxuICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHBhdGggbWIgPVxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgKGVudGVyX29wdCBtYi5wbWJfbmFtZS50eHQgcGF0aCkgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHBhdGggbWQgPVxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIChlbnRlcl9vcHQgbWQucG1kX25hbWUudHh0IHBhdGgpIG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHBhdGggbXRkID1cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIChlbnRlciBtdGQucG10ZF9uYW1lLnR4dCBwYXRoKSBtdGRcbiAgZW5kXG5cbmxldCB2YXJfbmFtZXNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHAgYWNjID1cbiAgICAgIGxldCBhY2MgPSBzdXBlciNwYXR0ZXJuIHAgYWNjIGluXG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoIFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gdHh0IDo6IGFjYyB8IF8gLT4gYWNjXG4gIGVuZFxuXG5sZXQgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jIG5hbWVfb3B0IGN0eHQgPVxuICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgY3R4dFxuXG5sZXQgZW50ZXJfdmFsdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl92YWx1ZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9pZGVudCAobGlkZW50IF9fJykpKVxuICAgIEZuLmlkXG5cbmxldCBlbnRlcl9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZXhwclxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2NvbnN0cnVjdCAobGlkZW50IF9fJykgbm9uZSkpXG4gICAgRm4uaWRcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfZGVzY3JpcHRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5jbGFzcyBtYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzID1cbiAgbGV0IHJldHVybiBfY3R4IHggPSAoeCwgW10pIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0XG4gICAgICBbRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50LCBMb2NhdGlvbi5FcnJvci50IGxpc3RdIGxpZnRfbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgbWV0aG9kIGludCA9IHJldHVyblxuICAgIG1ldGhvZCBzdHJpbmcgPSByZXR1cm5cbiAgICBtZXRob2QgYm9vbCA9IHJldHVyblxuICAgIG1ldGhvZCBjaGFyID0gcmV0dXJuXG4gICAgbWV0aG9kIGZsb2F0ID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDMyID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDY0ID0gcmV0dXJuXG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHJldHVyblxuICAgIG1ldGhvZCB1bml0ID0gcmV0dXJuXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0KSAtPlxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgICAgICdhIGFycmF5IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGYgY3R4IGEgLT5cbiAgICAgICAgbGV0IGxpc3QsIGVycm9ycyA9IHNlbGYjbGlzdCBmIGN0eCAoQXJyYXkudG9fbGlzdCBhKSBpblxuICAgICAgICAoQXJyYXkub2ZfbGlzdCBsaXN0LCBlcnJvcnMpXG5cbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+IExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gXyBfIC0+IFtdXG5cbiAgICBtZXRob2QgcmVjb3JkIF9jdHggZmllbGRzID0gTGlzdC5jb25jYXRfbWFwIGZpZWxkcyB+ZjpzbmRcbiAgICBtZXRob2QgY29uc3RyIF9jdHggX3RhZyBhcmdzID0gTGlzdC5jb25jYXQgYXJnc1xuICAgIG1ldGhvZCB0dXBsZSBfY3R4IGwgPSBMaXN0LmNvbmNhdCBsXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gY3R4dFxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYXMgZXhwcikgPVxuICAgICAgbGV0IHdpdGhfdmFsdWUgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl92YWx1ZSBleHByIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWUgPj49IGZ1biBjdHh0IC0+XG4gICAgICBsZXQgY3R4dCA9IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfZXhwciBjdHh0IGluXG4gICAgICBsZXQgcGV4cF9kZXNjLCBkZXNjX2Vycm9ycyA9XG4gICAgICAgIG1hdGNoIHBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSAtPlxuICAgICAgICAgICAgbGV0IG5hbWUsIG5hbWVfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHh0IG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlX2V4cHIsIG1vZHVsZV9leHByX2Vycm9ycyA9XG4gICAgICAgICAgICAgIGxldCB3aXRoX2xldF9tb2R1bGUgPVxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIGV4cHJcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptb2R1bGVfZXhwci5wbW9kX2xvYyBuYW1lLnR4dCBjdHh0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHdpdGhfbGV0X21vZHVsZSA+Pj0gZnVuIGN0eHQgLT4gc2VsZiNtb2R1bGVfZXhwciBjdHh0IG1vZHVsZV9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGJvZHksIGJvZHlfZXJyb3JzID0gc2VsZiNleHByZXNzaW9uIGN0eHQgYm9keSBpblxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eHQgXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBuYW1lX2Vycm9yczsgbW9kdWxlX2V4cHJfZXJyb3JzOyBib2R5X2Vycm9ycyBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSksIGVycm9ycylcbiAgICAgICAgfCBfIC0+IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eHQgcGV4cF9kZXNjXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jIGluXG4gICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGxvY19zdGFja19lcnJvcnMgPVxuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jX3N0YWNrXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgY3R4dCBwZXhwX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LFxuICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIGRlc2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgbG9jX3N0YWNrX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJhdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgY3R4dCBtZSA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZXhwciA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX21vZHVsZSBtZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZXhwciA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2V4cHIgY3R4dCBtZVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBjdHh0IG1iID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9iaW5kaW5nID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIG1iXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1iLnBtYl9sb2MgbWIucG1iX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9iaW5kaW5nID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBjdHh0IG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gbWRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWQucG1kX2xvYyBtZC5wbWRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBtdGRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYzptdGQucG10ZF9sb2NcbiAgICAgICAgICAgICAgbXRkLnBtdGRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIHZkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzp2ZC5wdmFsX2xvYyB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICAgICAgIGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgY3R4dFxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhcyB2YikgPVxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgdmIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lICgpIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgY3R4dCB2YlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGluX2JpbmRpbmdfY3R4dCA9XG4gICAgICAgICAgICBtYXRjaCB2YXJfbmFtZXNfb2YjcGF0dGVybiBwdmJfcGF0IFtdIHdpdGhcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPiBjdHh0XG4gICAgICAgICAgICB8IFsgdmFyX25hbWUgXSAtPlxuICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzpwdmJfbG9jIHZhcl9uYW1lIGN0eHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfcGF0LCBwYXRfZXJyb3JzID0gc2VsZiNwYXR0ZXJuIGN0eHQgcHZiX3BhdCBpblxuICAgICAgICAgIGxldCBwdmJfZXhwciwgZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGluX2JpbmRpbmdfY3R4dCBwdmJfZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgaW5fYmluZGluZ19jdHh0IHB2Yl9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwdmJfbG9jIGluXG4gICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHBhdF9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIGV4cHJfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGVycm9ycylcbiAgZW5kXG5cbmNsYXNzIHNleHBfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtTZXhwLnRdIEFzdC5saWZ0XG4gICAgbWV0aG9kIGludCA9IHNleHBfb2ZfaW50XG4gICAgbWV0aG9kIHN0cmluZyA9IHNleHBfb2Zfc3RyaW5nXG4gICAgbWV0aG9kIGJvb2wgPSBzZXhwX29mX2Jvb2xcbiAgICBtZXRob2QgY2hhciA9IHNleHBfb2ZfY2hhclxuICAgIG1ldGhvZCBmbG9hdCA9IHNleHBfb2ZfZmxvYXRcbiAgICBtZXRob2QgaW50MzIgPSBzZXhwX29mX2ludDMyXG4gICAgbWV0aG9kIGludDY0ID0gc2V4cF9vZl9pbnQ2NFxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSBzZXhwX29mX25hdGl2ZWludFxuICAgIG1ldGhvZCB1bml0ID0gc2V4cF9vZl91bml0XG4gICAgbWV0aG9kIG9wdGlvbiA9IHNleHBfb2Zfb3B0aW9uXG4gICAgbWV0aG9kIGxpc3QgPSBzZXhwX29mX2xpc3RcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhIC0+IFNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiAnYSAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCJcblxuICAgIG1ldGhvZCByZWNvcmQgZmllbGRzID1cbiAgICAgIExpc3RcbiAgICAgICAgKExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChsYWJlbCwgc2V4cCkgLT5cbiAgICAgICAgICAgICBTZXhwLkxpc3QgWyBBdG9tIGxhYmVsOyBzZXhwIF0pKVxuXG4gICAgbWV0aG9kIGNvbnN0ciB0YWcgYXJncyA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGggW10gLT4gQXRvbSB0YWcgfCBfIC0+IExpc3QgKEF0b20gdGFnIDo6IGFyZ3MpXG5cbiAgICBtZXRob2QgdHVwbGUgbCA9IExpc3QgbFxuICBlbmRcblxubGV0IHNleHBfb2YgPSBuZXcgc2V4cF9vZlxuIiwiIyAxIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gXG5vcGVuIExleGluZ1xuXG5sZXQgdXBkYXRlX2xvYyBsZXhidWYgbGluZXNfdG9fc2tpcCA9XG4gIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IHBvcyB3aXRoXG4gICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyBsaW5lc190b19za2lwO1xuICAgIHBvc19ib2wgPSBwb3MucG9zX2NudW07XG4gIH1cblxuIyAxMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBza2lwX2hhc2hfYmFuZyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTQgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMyApXG4jIDExMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAxIC0+XG4jIDE2IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDEgKVxuIyAxMTggXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMiAtPlxuIyAxNyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgICggKCkgKVxuIyAxMjMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4gSW1wb3J0XG5cbmxldCB3aXRoX291dHB1dCBmbiB+YmluYXJ5IH5mID1cbiAgbWF0Y2ggZm4gd2l0aFxuICB8IE5vbmUgfCBTb21lIFwiLVwiIC0+XG4gICAgICAoKiBGbGlwcGluZyBiYWNrIGFuZCBmb3J0aCBmcm9tIGJpbmFyeSB0byB0ZXh0IGlzIG5vdFxuICAgICAgICAgYSBnb29kIGlkZWEsIHNvIHdlJ2xsIG1ha2UgdHdvIHNpbXBsaWZ5aW5nIGFzc3VtcHRpb25zOlxuICAgICAgICAgMS4gQXNzdW1lIHRoYXQgbm90aGluZyBpcyBidWZmZXJlZCBvbiBzdGRvdXQgYmVmb3JlXG4gICAgICAgICAgICBlbnRlcmluZyBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgICAgIGZsdXNoIHRoZSBzdGRvdXQgb24gZW50cnkuXG4gICAgICAgICAyLiBBc3N1bWUgdGhhdCBub3RoaW5nIGVsc2UgaXMgc2VudCB0byBzdGRvdXQgYWZ0ZXJcbiAgICAgICAgICAgIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgaXQgaXMgc2FmZSB0byBsZWF2ZSBzdGRvdXRcbiAgICAgICAgICAgIGNoYW5uZWwgaW4gYmluYXJ5IG1vZGUgKG9yIHRleHQgbW9kZSBpZiBbYmluYXJ5PXRydWVdKVxuICAgICAgICAgICAgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGlzIGRvbmUuICopXG4gICAgICBzZXRfYmluYXJ5X21vZGVfb3V0IHN0ZG91dCBiaW5hcnk7XG4gICAgICBmIHN0ZG91dFxuICB8IFNvbWUgZm4gLT4gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5iaW5hcnkgfmZcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiB8IEltcGxcblxuICBsZXQgb2ZfZmlsZW5hbWUgZm4gOiB0IG9wdGlvbiA9XG4gICAgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbFwiIHRoZW4gU29tZSBJbXBsXG4gICAgZWxzZSBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1saVwiIHRoZW4gU29tZSBJbnRmXG4gICAgZWxzZSBOb25lXG5cbiAgbGV0IGRlc2NyaWJlID0gZnVuY3Rpb24gSW1wbCAtPiBcImltcGxlbWVudGF0aW9uXCIgfCBJbnRmIC0+IFwiaW50ZXJmYWNlXCJcbiAgbGV0IGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBQb2x5LmVxdWFsXG5lbmRcblxubW9kdWxlIEludGZfb3JfaW1wbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG5cbiAgbGV0IG1hcCB0IChtYXAgOiBBc3RfdHJhdmVyc2UubWFwKSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgeClcblxuICBsZXQgbWFwX3dpdGhfY29udGV4dCB0IChtYXAgOiBfIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0KSBjdHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgY3R4IHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSBjdHggeClcblxuICBsZXQga2luZCA6IF8gLT4gS2luZC50ID0gZnVuY3Rpb24gSW50ZiBfIC0+IEludGYgfCBJbXBsIF8gLT4gSW1wbFxuZW5kXG5cbm1vZHVsZSBBc3RfaW8gPSBzdHJ1Y3RcbiAgdHlwZSBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKVxuXG4gIGxldCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pXG4gICgqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBpbnB1dCB2ZXJzaW9uIGNhbid0IGJlIGRldGVybWluZWQgZHVlIHRvXG4gICAgICBsb2FkaW5nIG9yIHByZXByb2Nlc3NpbmcgZXJyb3JzICopXG5cbiAgdHlwZSB0ID0ge1xuICAgIGlucHV0X25hbWUgOiBzdHJpbmc7XG4gICAgaW5wdXRfdmVyc2lvbiA6IGlucHV0X3ZlcnNpb247XG4gICAgYXN0IDogSW50Zl9vcl9pbXBsLnQ7XG4gIH1cblxuICB0eXBlIHJlYWRfZXJyb3IgPVxuICAgIHwgTm90X2FfYmluYXJ5X2FzdFxuICAgIHwgVW5rbm93bl92ZXJzaW9uIG9mIHN0cmluZyAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuICAgIHwgU3lzdGVtX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG5cbiAgdHlwZSBpbnB1dF9zb3VyY2UgPSBTdGRpbiB8IEZpbGUgb2Ygc3RyaW5nXG4gIHR5cGUgaW5wdXRfa2luZCA9IFBvc3NpYmx5X3NvdXJjZSBvZiBLaW5kLnQgKiBzdHJpbmcgfCBOZWNlc3NhcmlseV9iaW5hcnlcblxuICBsZXQgcmVhZF9lcnJvcl90b19zdHJpbmcgKGVycm9yIDogcmVhZF9lcnJvcikgPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vdF9hX2JpbmFyeV9hc3QgLT4gXCJFcnJvcjogTm90IGEgYmluYXJ5IGFzdFwiXG4gICAgfCBVbmtub3duX3ZlcnNpb24gKHMsIF8pIC0+IFwiRXJyb3I6IFVua25vd24gdmVyc2lvbiBcIiBeIHNcbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciAobG9jLCBfKSAtPlxuICAgICAgICBcIlNvdXJjZSBwYXJzZSBlcnJvcjpcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG4gICAgfCBTeXN0ZW1fZXJyb3IgKGxvYywgXykgLT4gXCJTeXN0ZW0gZXJyb3I6IFwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcblxuICBsZXQgcGFyc2Vfc291cmNlX2NvZGUgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaWNcbiAgICAgID1cbiAgICAoKiBUaGUgaW5wdXQgdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIGlucHV0IHdpbGwgZ2V0IHBhcnNlZCBieVxuICAgICAgIHRoZSBjdXJyZW50IGNvbXBpbGVyIFBhcnNlIG1vZHVsZSAqKVxuICAgIGxldCBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgaW5cbiAgICB0cnlcbiAgICAgICgqIFRvIHRlc3QgaWYgYSBmaWxlIGlzIGFuIEFTVCBmaWxlLCB3ZSBoYXZlIHRvIHJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBvZiB0aGVcbiAgICAgICAgIGZpbGUuIElmIGl0IGlzIG5vdCwgd2UgaGF2ZSB0byBwYXJzZSB0aGVzZSBieXRlcyBhbmQgdGhlIHJlc3Qgb2YgdGhlIGZpbGUgYXNcbiAgICAgICAgIHNvdXJjZSBjb2RlLlxuICAgICAgICAgVGhlIGNvbXBpbGVyIGp1c3QgZG9lcyBbc2Vla19vbiAwXSBpbiB0aGlzIGNhc2UsIGhvd2V2ZXIgdGhpcyBkb2Vzbid0IHdvcmtcbiAgICAgICAgIHdoZW4gdGhlIGlucHV0IGlzIGEgcGlwZS5cbiAgICAgICAgIFdoYXQgd2UgZG8gaXMgd2UgYnVpbGQgYSBzdHJpbmcgb2YgdGhlIHdob2xlIHNvdXJjZSwgYXBwZW5kIHRoZSBwcmVmaXhcbiAgICAgICAgIGFuZCBidWlsdCBhIGxleGluZyBidWZmZXIgZnJvbSB0aGF0LlxuICAgICAgICAgV2UgaGF2ZSB0byBwdXQgYWxsIHRoZSBzb3VyY2UgaW50byB0aGUgbGV4aW5nIGJ1ZmZlciBhdCBvbmNlIHRoaXMgd2F5XG4gICAgICAgICBmb3Igc291cmNlIHF1b3RhdGlvbiB0byB3b3JrIGluIGVycm9yIG1lc3NhZ2VzLlxuICAgICAgICAgU2VlIG9jYW1sIzEyMjM4IGFuZCBvY2FtbC9kcml2ZXIvcHBhcnNlLm1sLiAqKVxuICAgICAgbGV0IGFsbF9zb3VyY2UgPSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBeIEluX2NoYW5uZWwuaW5wdXRfYWxsIGljIGluXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGFsbF9zb3VyY2UgaW5cbiAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBpbnB1dF9uYW1lIH07XG4gICAgICBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X2xleGJ1ZiAoU29tZSBsZXhidWYpO1xuICAgICAgU2tpcF9oYXNoX2Jhbmcuc2tpcF9oYXNoX2JhbmcgbGV4YnVmO1xuICAgICAgbGV0IGFzdCA6IEludGZfb3JfaW1wbC50ID1cbiAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgIHwgSW50ZiAtPiBJbnRmIChQYXJzZS5pbnRlcmZhY2UgbGV4YnVmKVxuICAgICAgICB8IEltcGwgLT4gSW1wbCAoUGFyc2UuaW1wbGVtZW50YXRpb24gbGV4YnVmKVxuICAgICAgaW5cbiAgICAgIE9rIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCBtYWdpY19sZW5ndGggPSBTdHJpbmcubGVuZ3RoIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbiAgbGV0IHJlYWRfbWFnaWMgaWMgPVxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyBidWYgfnBvczowIH5sZW4gaW5cbiAgICBpZiBsZW4gPSBtYWdpY19sZW5ndGggdGhlbiBPayBzIGVsc2UgRXJyb3Igc1xuXG4gIGxldCBzZXRfaW5wdXRfbGV4YnVmIGlucHV0X25hbWUgPVxuICAgIGxldCBzZXRfaW5wdXRfbGV4YnVmIGljID1cbiAgICAgICgqIHNldCBpbnB1dCBsZXhidWYgZm9yIGVycm9yIG1lc3NhZ2VzLiAqKVxuICAgICAgbGV0IHNvdXJjZSA9IEluX2NoYW5uZWwuaW5wdXRfYWxsIGljIGluXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHNvdXJjZSBpblxuICAgICAgQXN0bGliLkxvY2F0aW9uLnNldF9pbnB1dF9sZXhidWYgKFNvbWUgbGV4YnVmKTtcbiAgICAgIGxleGJ1ZlxuICAgIGluXG4gICAgbWF0Y2ggSW5fY2hhbm5lbC53aXRoX2ZpbGUgfmJpbmFyeTp0cnVlIGlucHV0X25hbWUgfmY6c2V0X2lucHV0X2xleGJ1ZiB3aXRoXG4gICAgfCAoXyA6IExleGluZy5sZXhidWYpIC0+ICgpXG4gICAgfCBleGNlcHRpb24gU3lzX2Vycm9yIF8gLT4gKClcblxuICBsZXQgZnJvbV9jaGFubmVsIGNoIH5pbnB1dF9raW5kID1cbiAgICBsZXQgaGFuZGxlX25vbl9iaW5hcnkgcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgPVxuICAgICAgbWF0Y2ggaW5wdXRfa2luZCB3aXRoXG4gICAgICB8IFBvc3NpYmx5X3NvdXJjZSAoa2luZCwgaW5wdXRfbmFtZSkgLT5cbiAgICAgICAgICBwYXJzZV9zb3VyY2VfY29kZSB+a2luZCB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgY2hcbiAgICAgIHwgTmVjZXNzYXJpbHlfYmluYXJ5IC0+IEVycm9yIE5vdF9hX2JpbmFyeV9hc3RcbiAgICBpblxuICAgICgqIE1hcnNoYWxsZWQgQVNUIG11c3QgYmUgcmVhZCBpbiBiaW5hcnkgbW9kZS4gRXZlbiB0aG91Z2ggd2UgZG9uJ3Qga25vd1xuICAgICAgIGJlZm9yZSByZWFkaW5nIHRoZSBtYWdpYyBudW1iZXIgd2hlbiB0aGUgZmlsZSBoYXMgYSBtYXJzaGFsbGVkIEFTVCxcbiAgICAgICBpdCBpcyBzYWZlIHRvIHJlYWQgc291cmNlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAqKVxuICAgIHNldF9iaW5hcnlfbW9kZV9pbiBjaCB0cnVlO1xuICAgIG1hdGNoIHJlYWRfbWFnaWMgY2ggd2l0aFxuICAgIHwgRXJyb3IgcyAtPiBoYW5kbGVfbm9uX2JpbmFyeSBzXG4gICAgfCBPayBzIC0+IChcbiAgICAgICAgbWF0Y2ggRmluZF92ZXJzaW9uLmZyb21fbWFnaWMgcyB3aXRoXG4gICAgICAgIHwgSW50ZiAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKSAtPlxuICAgICAgICAgICAgbGV0IGlucHV0X25hbWUgOiBzdHJpbmcgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlIElucHV0X3RvX3BweGxpYiA9IENvbnZlcnQgKElucHV0X3ZlcnNpb24pIChKcykgaW5cbiAgICAgICAgICAgIHNldF9pbnB1dF9sZXhidWYgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgIGxldCBhc3QgPSBJbnRmX29yX2ltcGwuSW50ZiAoSW5wdXRfdG9fcHB4bGliLmNvcHlfc2lnbmF0dXJlIGFzdCkgaW5cbiAgICAgICAgICAgIE9rXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgICAgIGlucHV0X3ZlcnNpb24gPSAobW9kdWxlIElucHV0X3ZlcnNpb24gOiBPQ2FtbF92ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICBhc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgfCBJbXBsIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgc2V0X2lucHV0X2xleGJ1ZiBpbnB1dF9uYW1lO1xuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbXBsIChJbnB1dF90b19wcHhsaWIuY29weV9zdHJ1Y3R1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IFVua25vd24gLT5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICB8fCBTdHJpbmcuZXF1YWxcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBzIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgQXN0bGliLkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgIHRoZW4gRXJyb3IgKFVua25vd25fdmVyc2lvbiAocywgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKVxuICAgICAgICAgICAgZWxzZSBoYW5kbGVfbm9uX2JpbmFyeSBzKVxuXG4gIGxldCByZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCA9XG4gICAgdHJ5XG4gICAgICBtYXRjaCBpbnB1dF9zb3VyY2Ugd2l0aFxuICAgICAgfCBTdGRpbiAtPlxuICAgICAgICAgIHNldF9iaW5hcnlfbW9kZV9pbiBzdGRpbiB0cnVlO1xuICAgICAgICAgIGZyb21fY2hhbm5lbCBzdGRpbiB+aW5wdXRfa2luZFxuICAgICAgfCBGaWxlIGZuIC0+IEluX2NoYW5uZWwud2l0aF9maWxlIGZuIH5mOihmcm9tX2NoYW5uZWwgfmlucHV0X2tpbmQpXG4gICAgd2l0aCBleG4gLT4gKFxuICAgICAgbWF0Y2ggTG9jYXRpb24uRXJyb3Iub2ZfZXhuIGV4biB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICB8IFNvbWUgZXJyb3IgLT4gRXJyb3IgKFN5c3RlbV9lcnJvciAoZXJyb3IsIGZhbGxfYmFja19pbnB1dF92ZXJzaW9uKSkpXG5cbiAgbGV0IHdyaXRlIG9jIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbik7IGFzdCB9XG4gICAgICB+YWRkX3BweF9jb250ZXh0ID1cbiAgICBsZXQgbW9kdWxlIFBweGxpYl90b19pbnB1dCA9IENvbnZlcnQgKEpzKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBsZXQgbW9kdWxlIE9jYW1sX3RvX2lucHV0ID0gQ29udmVydCAoQ29tcGlsZXJfdmVyc2lvbikgKElucHV0X3ZlcnNpb24pIGluXG4gICAgbWF0Y2ggYXN0IHdpdGhcbiAgICB8IEludGYgc2cgLT5cbiAgICAgICAgbGV0IHNnID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zaWcgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zaWduYXR1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3NpZ25hdHVyZSBzZ1xuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc2dcbiAgICB8IEltcGwgc3QgLT5cbiAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICBpZiBhZGRfcHB4X2NvbnRleHQgdGhlblxuICAgICAgICAgICAgU2VsZWN0ZWRfYXN0LlRvX29jYW1sLmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgICAgICB8PiBBc3RsaWIuQXN0X21ldGFkYXRhLmFkZF9wcHhfY29udGV4dF9zdHIgfnRvb2xfbmFtZTpcInBweF9kcml2ZXJcIlxuICAgICAgICAgICAgfD4gT2NhbWxfdG9faW5wdXQuY29weV9zdHJ1Y3R1cmVcbiAgICAgICAgICBlbHNlIFBweGxpYl90b19pbnB1dC5jb3B5X3N0cnVjdHVyZSBzdFxuICAgICAgICBpblxuICAgICAgICBvdXRwdXRfc3RyaW5nIG9jIElucHV0X3ZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXI7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBpbnB1dF9uYW1lO1xuICAgICAgICBvdXRwdXRfdmFsdWUgb2Mgc3RcblxuICBtb2R1bGUgUmVhZF9iaW4gPSBzdHJ1Y3RcbiAgICB0eXBlIGFzdCA9IEludGYgb2Ygc2lnbmF0dXJlIHwgSW1wbCBvZiBzdHJ1Y3R1cmVcbiAgICB0eXBlIHQgPSB7IGFzdCA6IGFzdDsgaW5wdXRfbmFtZSA6IHN0cmluZyB9XG5cbiAgICBsZXQgcmVhZF9iaW5hcnkgZm4gPVxuICAgICAgbWF0Y2hcbiAgICAgICAgSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZDpOZWNlc3NhcmlseV9iaW5hcnkpXG4gICAgICB3aXRoXG4gICAgICB8IE9rIHsgYXN0OyBpbnB1dF9uYW1lOyBfIH0gLT5cbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgICB8IEltcGwgc3RydWN0dXJlIC0+IEltcGwgc3RydWN0dXJlXG4gICAgICAgICAgICB8IEludGYgc2lnbmF0dXJlIC0+IEludGYgc2lnbmF0dXJlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayB7IGFzdDsgaW5wdXRfbmFtZSB9XG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKHJlYWRfZXJyb3JfdG9fc3RyaW5nIGUpXG5cbiAgICBsZXQgZ2V0X2FzdCB0ID0gdC5hc3RcbiAgICBsZXQgZ2V0X2lucHV0X25hbWUgdCA9IHQuaW5wdXRfbmFtZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3lzdGVtID0gc3RydWN0XG4gIGxldCBydW5fcHJlcHJvY2Vzc29yIH5wcCB+aW5wdXQgfm91dHB1dCA9XG4gICAgbGV0IGNvbW1hbmQgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlcyAlcyA+ICVzXCIgcHBcbiAgICAgICAgKGlmIFN0cmluZy5lcXVhbCBpbnB1dCBcIi1cIiB0aGVuIFwiXCIgZWxzZSBTdGRsaWIuRmlsZW5hbWUucXVvdGUgaW5wdXQpXG4gICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgb3V0cHV0KVxuICAgIGluXG4gICAgaWYgU3RkbGliLlN5cy5jb21tYW5kIGNvbW1hbmQgPSAwIHRoZW4gT2sgKClcbiAgICBlbHNlIEVycm9yIChjb21tYW5kLCBBc3RfaW8uZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pXG5lbmRcbiIsIigqJCBvcGVuIFBweGxpYl9jaW5hcHNfaGVscGVycyAkKilcbm9wZW4hIEltcG9ydFxubW9kdWxlIEZvcm1hdCA9IFN0ZGxpYi5Gb3JtYXRcbm1vZHVsZSBGaWxlbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZVxuXG4oKiBUT0RPOiBtYWtlIHRoZSBcImRlcml2aW5nLlwiIGRlcGVuZCBvbiB0aGUgbWF0Y2hpbmcgYXR0cmlidXRlIG5hbWUuICopXG5sZXQgZW5kX21hcmtlcl9zaWcgPVxuICBBdHRyaWJ1dGUuRmxvYXRpbmcuZGVjbGFyZSBcImRlcml2aW5nLmVuZFwiIFNpZ25hdHVyZV9pdGVtXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG5cbmxldCBlbmRfbWFya2VyX3N0ciA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU3RydWN0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgdHlwZSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGdldF9sb2MgOiB0IC0+IExvY2F0aW9uLnRcbiAgdmFsIGVuZF9tYXJrZXIgOiAodCwgdW5pdCkgQXR0cmlidXRlLkZsb2F0aW5nLnRcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpIDogc2lnXG4gICAgdmFsIGFwcGx5IDpcbiAgICAgIDwgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSBULnRcbiAgICAgIDsgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSBULnRcbiAgICAgIDsgLi4gPiAtPlxuICAgICAgdCBULnRcbiAgZW5kXG5cbiAgdmFsIHBhcnNlIDogTGV4aW5nLmxleGJ1ZiAtPiB0IGxpc3RcbiAgdmFsIHBwIDogRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3NleHAgOiB0IC0+IFNleHAudFxuZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGV4dHJhY3RfcHJlZml4IH5wb3MgbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwicHB4bGliOiBbQEBAQEBAJXNdIGF0dHJpYnV0ZSBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICAoQXR0cmlidXRlLkZsb2F0aW5nLm5hbWUgTS5lbmRfbWFya2VyKSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0dHJpYnV0ZS5GbG9hdGluZy5jb252ZXJ0X3JlcyBbIE0uZW5kX21hcmtlciBdIHggd2l0aFxuICAgICAgICAgIHwgT2sgTm9uZSAtPiBsb29wICh4IDo6IGFjYykgbFxuICAgICAgICAgIHwgT2sgKFNvbWUgKCkpIC0+IE9rIChMaXN0LnJldiBhY2MsIChNLmdldF9sb2MgeCkubG9jX3N0YXJ0KVxuICAgICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gICAgICAgICAgfCBleGNlcHRpb24gRmFpbHVyZSBfIC0+IGxvb3AgKHggOjogYWNjKSBsKVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cbiAgbGV0IHJlbW92ZV9sb2MgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgICBtZXRob2QhIGxvY2F0aW9uIF8gPSBMb2NhdGlvbi5ub25lXG4gICAgICBtZXRob2QhIGxvY2F0aW9uX3N0YWNrIF8gPSBbXVxuICAgIGVuZFxuXG4gIG1vZHVsZSBNX21hcCA9IE0uVHJhbnNmb3JtIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IHJlbW92ZV9sb2MgeCA9IE1fbWFwLmFwcGx5IHJlbW92ZV9sb2MgeFxuICBsZXQgcmVjIGxhc3QgcHJldiA9IGZ1bmN0aW9uIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgZGlmZl9hc3RzIH5nZW5lcmF0ZWQgfnJvdW5kX3RyaXAgPVxuICAgIGxldCB3aXRoX3RlbXBfZmlsZSBmID1cbiAgICAgIEV4bi5wcm90ZWN0eFxuICAgICAgICAoRmlsZW5hbWUudGVtcF9maWxlIFwicHB4bGliXCIgXCJcIilcbiAgICAgICAgfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmZcbiAgICBpblxuICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4xIC0+XG4gICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gZm4yIC0+XG4gICAgICAgICAgICB3aXRoX3RlbXBfZmlsZSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgIGxldCBkdW1wIGZuIGFzdCA9XG4gICAgICAgICAgICAgICAgICBPdXRfY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZ1biBvYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgICAgICAgICAgICAgU2V4cC5wcF9odW0gcHBmIChNLnRvX3NleHAgYXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggcHBmICgpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZHVtcCBmbjEgZ2VuZXJhdGVkO1xuICAgICAgICAgICAgICAgIGR1bXAgZm4yIHJvdW5kX3RyaXA7XG4gICAgICAgICAgICAgICAgbGV0IGNtZCA9XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICBcInBhdGRpZmYgLWFzY2lpIC1hbHQtb2xkIGdlbmVyYXRlZCAtYWx0LW5ldyBcXFxuICAgICAgICAgICAgICAgICAgICAgJ2dlbmVyYXRlZC0+cHJpbnRlZC0+cGFyc2VkJyAlcyAlcyAmPiAlc1wiXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb2sgPVxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcImRpZmYgLS1sYWJlbCBnZW5lcmF0ZWQgLS1sYWJlbCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAoRmlsZW5hbWUucXVvdGUgZm4xKSAoRmlsZW5hbWUucXVvdGUgZm4yKVxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBvdXQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZCA9IDFcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmIG9rIHRoZW4gSW5fY2hhbm5lbC5yZWFkX2FsbCBvdXRcbiAgICAgICAgICAgICAgICBlbHNlIFwiPG5vIGRpZmZlcmVuY2VzIHByb2R1Y2VkIGJ5IGRpZmY+XCIpKSlcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHMgPVxuICAgIG1hdGNoIE0ucGFyc2UgKExleGluZy5mcm9tX3N0cmluZyBzKSB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIGxldCByZWMgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZSA9XG4gICAgbWF0Y2ggKGV4cGVjdGVkLCBzb3VyY2UpIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAoKVxuICAgIHwgW10sIHggOjogbCAtPlxuICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICB7IChNLmdldF9sb2MgeCkgd2l0aCBsb2NfZW5kID0gKE0uZ2V0X2xvYyAobGFzdCB4IGwpKS5sb2NfZW5kIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgW11cbiAgICB8IF8sIFtdIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgTG9jYXRpb24ubG9jX2dob3N0ID0gZmFsc2U7IGxvY19zdGFydCA9IGVuZF9wb3M7IGxvY19lbmQgPSBlbmRfcG9zIH1cbiAgICAgICAgaW5cbiAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgZXhwZWN0ZWRcbiAgICB8IHggOjogZXhwZWN0ZWQsIHkgOjogc291cmNlIC0+XG4gICAgICAgIGxldCBsb2MgPSBNLmdldF9sb2MgeSBpblxuICAgICAgICBsZXQgeCA9IHJlbW92ZV9sb2MgeCBpblxuICAgICAgICBsZXQgeSA9IHJlbW92ZV9sb2MgeSBpblxuICAgICAgICBpZiBQb2x5LiggPD4gKSB4IHkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvdW5kX3RyaXAgPVxuICAgICAgICAgICAgcmVtb3ZlX2xvYyAocGFyc2Vfc3RyaW5nIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgTS5wcCB4KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIFBvbHkuKCA8PiApIHggcm91bmRfdHJpcCB0aGVuXG4gICAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgICAgICAgICAgICBcInBweGxpYjogdGhlIGNvcnJlY3RlZCBjb2RlIGRvZXNuJ3Qgcm91bmQtdHJpcC5cXG5cXFxuICAgICAgICAgICAgICAgVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgT0NhbWwgcHJpbnRlcjpcXG5cXFxuICAgICAgICAgICAgICAgJXNcIlxuICAgICAgICAgICAgICAoZGlmZl9hc3RzIH5nZW5lcmF0ZWQ6eCB+cm91bmRfdHJpcCk7XG4gICAgICAgICAgbWlzbWF0Y2hfaGFuZGxlciBsb2MgWyB4IF0pO1xuICAgICAgICBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlXG5cbiAgbGV0IGRvX21hdGNoIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIHNvdXJjZSA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZXh0cmFjdF9wcmVmaXggfnBvcyBzb3VyY2UgPj58IGZ1biAoc291cmNlLCBlbmRfcG9zKSAtPlxuICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcbmVuZFxuXG4oKiQqKVxubW9kdWxlIFN0ciA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzdHJfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zdHJcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3N0cnVjdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmltcGxlbWVudGF0aW9uXG4gIGxldCBwcCA9IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICBsZXQgdG9fc2V4cCA9IEFzdF90cmF2ZXJzZS5zZXhwX29mI3N0cnVjdHVyZV9pdGVtXG5lbmQpXG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbm1vZHVsZSBTaWcgPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc2lnbmF0dXJlX2l0ZW1cblxuICBsZXQgZ2V0X2xvYyB4ID0geC5wc2lnX2xvY1xuICBsZXQgZW5kX21hcmtlciA9IGVuZF9tYXJrZXJfc2lnXG5cbiAgbW9kdWxlIFRyYW5zZm9ybSAoVCA6IFQxKSA9IHN0cnVjdFxuICAgIGxldCBhcHBseSBvID0gbyNzaWduYXR1cmVfaXRlbVxuICBlbmRcblxuICBsZXQgcGFyc2UgPSBQYXJzZS5pbnRlcmZhY2VcbiAgbGV0IHBwID0gUHByaW50YXN0LnNpZ25hdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc2lnbmF0dXJlX2l0ZW1cbmVuZClcblxuKCokKilcblxubGV0IG1hdGNoX3N0cnVjdHVyZV9yZXMgPSBTdHIuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3N0cnVjdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc3RydWN0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBtYXRjaF9zaWduYXR1cmVfcmVzID0gU2lnLmRvX21hdGNoXG5cbmxldCBtYXRjaF9zaWduYXR1cmUgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbCA9XG4gIG1hdGNoX3NpZ25hdHVyZV9yZXMgfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgbFxuICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxuXG50eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgQ2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgdFxuICAgIHwgQ2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCB0XG4gICAgfCBDbGFzc190eXBlIDogY2xhc3NfdHlwZSB0XG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCB0XG4gICAgfCBDb3JlX3R5cGUgOiBjb3JlX3R5cGUgdFxuICAgIHwgRXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gdFxuICAgIHwgTW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciB0XG4gICAgfCBNb2R1bGVfdHlwZSA6IG1vZHVsZV90eXBlIHRcbiAgICB8IFBhdHRlcm4gOiBwYXR0ZXJuIHRcbiAgICB8IFNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQcHhfaW1wb3J0IDogdHlwZV9kZWNsYXJhdGlvbiB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogXyB0IC0+IHBhY2tlZFxuXG4gIGxldCBjbGFzc19leHByID0gQ2xhc3NfZXhwclxuICBsZXQgY2xhc3NfZmllbGQgPSBDbGFzc19maWVsZFxuICBsZXQgY2xhc3NfdHlwZSA9IENsYXNzX3R5cGVcbiAgbGV0IGNsYXNzX3R5cGVfZmllbGQgPSBDbGFzc190eXBlX2ZpZWxkXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCBtb2R1bGVfZXhwciA9IE1vZHVsZV9leHByXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBwYXR0ZXJuID0gUGF0dGVyblxuICBsZXQgc2lnbmF0dXJlX2l0ZW0gPSBTaWduYXR1cmVfaXRlbVxuICBsZXQgc3RydWN0dXJlX2l0ZW0gPSBTdHJ1Y3R1cmVfaXRlbVxuXG4gIGxldCBkZXNjIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgQ2xhc3NfdHlwZSAtPiBcImNsYXNzIHR5cGVcIlxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBcImNsYXNzIHR5cGUgZmllbGRcIlxuICAgIHwgQ29yZV90eXBlIC0+IFwiY29yZSB0eXBlXCJcbiAgICB8IEV4cHJlc3Npb24gLT4gXCJleHByZXNzaW9uXCJcbiAgICB8IE1vZHVsZV9leHByIC0+IFwibW9kdWxlIGV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiBcInNpZ25hdHVyZSBpdGVtXCJcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IFwic3RydWN0dXJlIGl0ZW1cIlxuICAgIHwgUHB4X2ltcG9ydCAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuXG4gIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICBmdW4gYSBiIC0+XG4gICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIENsYXNzX2V4cHIgLT4gRXFcbiAgICB8IENsYXNzX2ZpZWxkLCBDbGFzc19maWVsZCAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZSwgQ2xhc3NfdHlwZSAtPiBFcVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgQ2xhc3NfdHlwZV9maWVsZCAtPiBFcVxuICAgIHwgQ29yZV90eXBlLCBDb3JlX3R5cGUgLT4gRXFcbiAgICB8IEV4cHJlc3Npb24sIEV4cHJlc3Npb24gLT4gRXFcbiAgICB8IE1vZHVsZV9leHByLCBNb2R1bGVfZXhwciAtPiBFcVxuICAgIHwgTW9kdWxlX3R5cGUsIE1vZHVsZV90eXBlIC0+IEVxXG4gICAgfCBQYXR0ZXJuLCBQYXR0ZXJuIC0+IEVxXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgU2lnbmF0dXJlX2l0ZW0gLT4gRXFcbiAgICB8IFN0cnVjdHVyZV9pdGVtLCBTdHJ1Y3R1cmVfaXRlbSAtPiBFcVxuICAgIHwgUHB4X2ltcG9ydCwgUHB4X2ltcG9ydCAtPiBFcVxuICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKFBvbHkuKCA8PiApIChUIGEpIChUIGIpKTtcbiAgICAgICAgTmVcblxuICBsZXQgZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uIHR5cGVfZGVjbCA9XG4gICAgbWF0Y2ggdHlwZV9kZWNsIHdpdGhcbiAgICB8IHsgcHR5cGVfbWFuaWZlc3QgPSBTb21lIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gKG5hbWUsIF8pOyBfIH07IF8gfVxuICAgICAgLT5cbiAgICAgICAgbGV0IHZpcnR1YWxfcGF5bG9hZCA9XG4gICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX3R5cGUgfmxvYzp0eXBlX2RlY2wucHR5cGVfbG9jIFJlY3Vyc2l2ZVxuICAgICAgICAgICAgWyB0eXBlX2RlY2wgXVxuICAgICAgICBpblxuICAgICAgICBsZXQgYXR0ciA9IFtdIGluXG4gICAgICAgIFNvbWUgKChuYW1lLCBQU3RyIFsgdmlydHVhbF9wYXlsb2FkIF0pLCBhdHRyKVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGdldF9leHRlbnNpb24gOiB0eXBlIGEuIGEgdCAtPiBhIC0+IChleHRlbnNpb24gKiBhdHRyaWJ1dGVzKSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBDbGFzc19leHByLCB7IHBjbF9kZXNjID0gUGNsX2V4dGVuc2lvbiBlOyBwY2xfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfZmllbGQsIHsgcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGU7IHBjZl9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlLCB7IHBjdHlfZGVzYyA9IFBjdHlfZXh0ZW5zaW9uIGU7IHBjdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2V4dGVuc2lvbiBlOyBwY3RmX2F0dHJpYnV0ZXMgPSBhOyBfIH1cbiAgICAgIC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDb3JlX3R5cGUsIHsgcHR5cF9kZXNjID0gUHR5cF9leHRlbnNpb24gZTsgcHR5cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBFeHByZXNzaW9uLCB7IHBleHBfZGVzYyA9IFBleHBfZXh0ZW5zaW9uIGU7IHBleHBfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgTW9kdWxlX2V4cHIsIHsgcG1vZF9kZXNjID0gUG1vZF9leHRlbnNpb24gZTsgcG1vZF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfdHlwZSwgeyBwbXR5X2Rlc2MgPSBQbXR5X2V4dGVuc2lvbiBlOyBwbXR5X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFBhdHRlcm4sIHsgcHBhdF9kZXNjID0gUHBhdF9leHRlbnNpb24gZTsgcHBhdF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIHsgcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGUsIGEpOyBfIH0gLT4gU29tZSAoZSwgYSlcbiAgICB8IFBweF9pbXBvcnQsIHR5cGVfZGVjbCAtPiBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlc19yZXMgOlxuICAgICAgdHlwZSBhLlxuICAgICAgYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiAoYSwgTG9jYXRpb24uRXJyb3IudCBOb25FbXB0eUxpc3QudCkgcmVzdWx0ID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENsYXNzX2V4cHIgLT4gT2sgeyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSB4LnBjbF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4gT2sgeyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSB4LnBjZl9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZSAtPiBPayB7IHggd2l0aCBwY3R5X2F0dHJpYnV0ZXMgPSB4LnBjdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT5cbiAgICAgICAgT2sgeyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0geC5wY3RmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4gT2sgeyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0geC5wdHlwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBFeHByZXNzaW9uIC0+IE9rIHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IHgucGV4cF9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4gT2sgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0geC5wbW9kX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiBPayB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSB4LnBtdHlfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFBhdHRlcm4gLT4gT2sgeyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0geC5wcGF0X2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBTaWduYXR1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiAoXG4gICAgICAgIG1hdGNoIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzIHdpdGggW10gLT4gT2sgeCB8IHQgOjogcSAtPiBFcnJvciAodCwgcSkpXG4gICAgfCBQcHhfaW1wb3J0IC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcblxuICBsZXQgbWVyZ2VfYXR0cmlidXRlcyA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYXR0cmlidXRlcyAtPiBhID1cbiAgIGZ1biB0IHggYXR0cnMgLT5cbiAgICBtZXJnZV9hdHRyaWJ1dGVzX3JlcyB0IHggYXR0cnNcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbmxldCByZWdpc3RyYXIgPVxuICBOYW1lLlJlZ2lzdHJhci5jcmVhdGUgfmtpbmQ6XCJleHRlbnNpb25cIiB+Y3VycmVudF9maWxlOl9fRklMRV9fXG4gICAgfnN0cmluZ19vZl9jb250ZXh0OihmdW4gKENvbnRleHQuVCBjdHgpIC0+IFNvbWUgKENvbnRleHQuZGVzYyBjdHgpKVxuXG5tb2R1bGUgTWFrZSAoQ2FsbGJhY2sgOiBzaWdcbiAgdHlwZSAnYSB0XG5lbmQpID1cbnN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHBheWxvYWRfcGFyc2VyID1cbiAgICB8IFBheWxvYWRfcGFyc2VyIDpcbiAgICAgICAgKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQgKiAnYiBDYWxsYmFjay50XG4gICAgICAgIC0+ICgnYSwgJ2MpIHBheWxvYWRfcGFyc2VyXG5cbiAgdHlwZSAoJ2NvbnRleHQsICdwYXlsb2FkKSB0ID0ge1xuICAgIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgICBjb250ZXh0IDogJ2NvbnRleHQgQ29udGV4dC50O1xuICAgIHBheWxvYWQgOiAocGF5bG9hZCwgJ3BheWxvYWQpIHBheWxvYWRfcGFyc2VyO1xuICAgIHdpdGhfYXJnIDogYm9vbDtcbiAgfVxuXG4gIGxldCBkZWNsYXJlIDpcbiAgICAgIHR5cGUgYS5cbiAgICAgIHdpdGhfYXJnOmJvb2wgLT5cbiAgICAgIHN0cmluZyAtPlxuICAgICAgYSBDb250ZXh0LnQgLT5cbiAgICAgIChwYXlsb2FkLCAnYiwgJ3BheWxvYWQpIEFzdF9wYXR0ZXJuLnQgLT5cbiAgICAgICdiIENhbGxiYWNrLnQgLT5cbiAgICAgIChhLCAncGF5bG9hZCkgdCA9XG4gICBmdW4gfndpdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgLT5cbiAgICAoKiBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIGNvbGxpc2lvbnMgYmV0d2VlbiBwcHhfaW1wb3J0IGFuZCBjb3JlX3R5cGVcbiAgICAgICBleHRlbnNpb25zICopXG4gICAgKG1hdGNoIGNvbnRleHQgd2l0aFxuICAgIHwgQ29udGV4dC5QcHhfaW1wb3J0IC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgQ29yZV90eXBlKSBuYW1lXG4gICAgfCBDb250ZXh0LkNvcmVfdHlwZSAtPlxuICAgICAgICBOYW1lLlJlZ2lzdHJhci5jaGVja19jb2xsaXNpb25zIHJlZ2lzdHJhciAoQ29udGV4dC5UIFBweF9pbXBvcnQpIG5hbWVcbiAgICB8IF8gLT4gKCkpO1xuICAgIE5hbWUuUmVnaXN0cmFyLnJlZ2lzdGVyIH5raW5kOmBFeHRlbnNpb24gcmVnaXN0cmFyIChDb250ZXh0LlQgY29udGV4dCkgbmFtZTtcbiAgICB7XG4gICAgICBuYW1lID0gTmFtZS5QYXR0ZXJuLm1ha2UgbmFtZTtcbiAgICAgIGNvbnRleHQ7XG4gICAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICAgICAgd2l0aF9hcmc7XG4gICAgfVxuXG4gIGxldCBmaW5kIHRzIChleHQgOiBleHRlbnNpb24pID1cbiAgICBsZXQgeyB0eHQgPSBuYW1lOyBsb2MgfSA9IGZzdCBleHQgaW5cbiAgICBsZXQgbmFtZSwgYXJnID0gTmFtZS5zcGxpdF9wYXRoIG5hbWUgaW5cbiAgICBtYXRjaCBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+IE9rIE5vbmVcbiAgICB8IF8gOjogXyA6OiBfIGFzIGwgLT5cbiAgICAgICAgRXJyb3JcbiAgICAgICAgICAoIExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIk11bHRpcGxlIG1hdGNoIGZvciBleHRlbnNpb25zOiAlc1wiXG4gICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubmFtZSB0Lm5hbWUpKSksXG4gICAgICAgICAgICBbXSApXG4gICAgfCBbIHQgXSAtPlxuICAgICAgICBpZiAobm90IHQud2l0aF9hcmcpICYmIE9wdGlvbi5pc19zb21lIGFyZyB0aGVuXG4gICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jXG4gICAgICAgICAgICAgICAgXCJFeHRlbnNpb24gJXMgZG9lc24ndCBleHBlY3QgYSBwYXRoIGFyZ3VtZW50XCIgbmFtZSxcbiAgICAgICAgICAgICAgW10gKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGFyZyA9XG4gICAgICAgICAgICBPcHRpb24ubWFwIGFyZyB+ZjooZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2hpZnQgPSBTdHJpbmcubGVuZ3RoIG5hbWUgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gbG9jLmxvY19zdGFydCBpblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR4dCA9IExvbmdpZGVudC5wYXJzZSBzO1xuICAgICAgICAgICAgICAgICAgbG9jID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGxvYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhcnQgd2l0aCBwb3NfY251bSA9IHN0YXJ0LnBvc19jbnVtICsgc2hpZnQgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgKFNvbWUgKHQsIGFyZykpXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbiAgZW5kKVxuXG4gIGxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY3R4IHBhdHQgZlxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY3R4IHBhdHQgZiA9XG4gICAgZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjdHggcGF0dCAoZnVuIH5hcmc6XyAtPiBmKVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dCA9XG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgZmluZCB0cyBleHQgPj49IGZ1biByIC0+XG4gICAgbWF0Y2ggciB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+XG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmFyZykgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIFNvbWUgcGF5bG9hZFxuXG4gIGxldCBjb252ZXJ0IHRzIH5sb2MgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+bG9jIGV4dFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubW9kdWxlIE0gPSBNYWtlIChzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi50IC0+IGFyZzpMb25naWRlbnQudCBMb2MudCBvcHRpb24gLT4gJ2FcbmVuZClcblxudHlwZSAnYSBleHBhbmRlcl9yZXN1bHQgPSBTaW1wbGUgb2YgJ2EgfCBJbmxpbmUgb2YgJ2EgbGlzdFxuXG5tb2R1bGUgRm9yX2NvbnRleHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCAnYSBleHBhbmRlcl9yZXN1bHQpIE0udFxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHQgPVxuICAgIGxldCBsb2MgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24uZXh0ZW5zaW9uX3BvaW50X2xvYyBjdHh0IGluXG4gICAgbGV0IG9wZW4gUmVzdWx0IGluXG4gICAgTS5maW5kIHRzIGV4dCA+Pj0gZnVuIGZvdW5kIC0+XG4gICAgbWF0Y2ggZm91bmQgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lICh7IHBheWxvYWQgPSBNLlBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmKTsgXyB9LCBhcmcpIC0+IChcbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+Y3R4dCB+YXJnKVxuICAgICAgICA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgbWF0Y2ggcGF5bG9hZCB3aXRoXG4gICAgICAgIHwgU2ltcGxlIHggLT4gU29tZSB4XG4gICAgICAgIHwgSW5saW5lIF8gLT4gZmFpbHdpdGggXCJFeHRlbnNpb24uY29udmVydFwiKVxuXG4gIGxldCBjb252ZXJ0IHRzIH5jdHh0IGV4dCA9XG4gICAgY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxuICBsZXQgY29udmVydF9pbmxpbmVfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGggU2ltcGxlIHggLT4gU29tZSBbIHggXSB8IElubGluZSBsIC0+IFNvbWUgbClcblxuICBsZXQgY29udmVydF9pbmxpbmUgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG50eXBlIHQgPSBUIDogXyBGb3JfY29udGV4dC50IC0+IHRcblxubGV0IGNoZWNrX2NvbnRleHRfZm9yX2lubGluZSA6IHR5cGUgYS4gZnVuYzpzdHJpbmcgLT4gYSBDb250ZXh0LnQgLT4gdW5pdCA9XG4gZnVuIH5mdW5jIGN0eCAtPlxuICBtYXRjaCBjdHggd2l0aFxuICB8IENvbnRleHQuQ2xhc3NfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LkNsYXNzX3R5cGVfZmllbGQgLT4gKClcbiAgfCBDb250ZXh0LlNpZ25hdHVyZV9pdGVtIC0+ICgpXG4gIHwgQ29udGV4dC5TdHJ1Y3R1cmVfaXRlbSAtPiAoKVxuICB8IGNvbnRleHQgLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIiVzOiAlcyBjYW4ndCBiZSBpbmxpbmVkXCIgZnVuY1xuICAgICAgICAoQ29udGV4dC5kZXNjIGNvbnRleHQpXG5cbmxldCByZWMgZmlsdGVyX2J5X2NvbnRleHQgOlxuICAgIHR5cGUgYS4gYSBDb250ZXh0LnQgLT4gdCBsaXN0IC0+IGEgRm9yX2NvbnRleHQudCBsaXN0ID1cbiBmdW4gY29udGV4dCBleHBhbmRlcnMgLT5cbiAgbWF0Y2ggZXhwYW5kZXJzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFQgdCA6OiByZXN0IC0+IChcbiAgICAgIG1hdGNoIENvbnRleHQuZXEgY29udGV4dCB0LmNvbnRleHQgd2l0aFxuICAgICAgfCBFcSAtPiB0IDo6IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdFxuICAgICAgfCBOZSAtPiBmaWx0ZXJfYnlfY29udGV4dCBjb250ZXh0IHJlc3QpXG5cbmxldCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIGN0eCAobmFtZSwgXykgPVxuICBpZlxuICAgIG5vdFxuICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEV4dGVuc2lvbiBuYW1lLnR4dFxuICAgICAgfHwgTmFtZS5pZ25vcmVfY2hlY2tzIG5hbWUudHh0KVxuICB0aGVuXG4gICAgW1xuICAgICAgTmFtZS5SZWdpc3RyYXIuRXJyb3IuY3JlYXRlZiByZWdpc3RyYXIgKENvbnRleHQuVCBjdHgpXG4gICAgICAgIFwiRXh0ZW5zaW9uIGAlcycgd2FzIG5vdCB0cmFuc2xhdGVkXCIgbmFtZTtcbiAgICBdXG4gIGVsc2UgW11cblxubGV0IGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtMb2NhdGlvbi5FcnJvci50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgYWNjID1cbiAgICAgIGFjY1xuICAgICAgQCBbXG4gICAgICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICBcImV4dGVuc2lvbiBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkV4dGVuc2lvbiBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgICAgXVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHR5cF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ29yZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgUGF0dGVybiBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBFeHByZXNzaW9uIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0Zl9leHRlbnNpb24gZXh0IC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc190eXBlX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGRfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNmX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19maWVsZCBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc19maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtdHlfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIE1vZHVsZV90eXBlIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI21vZHVsZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgXykgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIFNpZ25hdHVyZV9pdGVtIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3NpZ25hdHVyZV9pdGVtX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG1vZF9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX2V4cHIgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU3RydWN0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuICBlbmRcblxubGV0IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY2hlY2tfdW51c2VkID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UuaXRlclxuXG4gICAgbWV0aG9kISBleHRlbnNpb24gKG5hbWUsIF8pID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBwYXR0ZXJuX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3BhdHRlcm5fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2V4cHJlc3Npb25fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX3R5cGVfZmllbGRfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2V4cHJfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNjbGFzc19maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV90eXBlX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNtb2R1bGVfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI3N0cnVjdHVyZV9pdGVtX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cbiAgZW5kXG5cbm1vZHVsZSBWMyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHQgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVFxuICAgICAgKE0uZGVjbGFyZSB+d2l0aF9hcmc6ZmFsc2UgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+Y3R4dCB+YXJnOl8gLT5cbiAgICAgICAgICAgayB+Y3R4dCkpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gU2ltcGxlIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5cbiAgbGV0IGRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLm1hcF9yZXN1bHQgcGF0dGVybiB+ZjooZnVuIHggLT4gSW5saW5lIHgpIGluXG4gICAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGspXG5lbmRcblxubGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gZiA9XG4gIFYzLmRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZV9pbmxpbmUgbmFtZSBjb250ZXh0IHBhdHRlcm5cbiAgICAoRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGYpXG5cbmxldCBkZWNsYXJlX3dpdGhfcGF0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gIGxldCBrJyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi53aXRoX2xvY19hbmRfcGF0aCBrIGluXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIGNvbnRleHRcbiAgICB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnXCI7XG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgVCAoTS5kZWNsYXJlIH53aXRoX2FyZzp0cnVlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsnKVxuXG5sZXQgX19kZWNsYXJlX3BweF9pbXBvcnQgbmFtZSBleHBhbmQgPVxuICAoKiBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byB1bndyYXAgdGhlIHR5cGUgZGVjbGFyYXRpb24gZnJvbSB0aGUgcGF5bG9hZFxuICAgICBhc3NlbWJsZWQgYnkgW0NvbnRleHQuZ2V0X3BweF9pbXBvcnRfZXh0ZW5zaW9uXSAqKVxuICBsZXQgcGF0dGVybiA9IEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX3R5cGUgcmVjdXJzaXZlIChfXyBeOjogbmlsKSBeOjogbmlsKSkgaW5cbiAgVjMuZGVjbGFyZSBuYW1lIENvbnRleHQuUHB4X2ltcG9ydCBwYXR0ZXJuIGV4cGFuZFxuXG5tb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHRcblxuICBsZXQgZGVjbGFyZSA9IGRlY2xhcmVcbiAgbGV0IGRlY2xhcmVfaW5saW5lID0gZGVjbGFyZV9pbmxpbmVcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vblxub3BlbiBXaXRoX2Vycm9yc1xubW9kdWxlIEUgPSBFeHRlbnNpb25cbm1vZHVsZSBFQyA9IEV4dGVuc2lvbi5Db250ZXh0XG5tb2R1bGUgQSA9IEF0dHJpYnV0ZVxubW9kdWxlIEFDID0gQXR0cmlidXRlLkNvbnRleHRcblxubW9kdWxlIFJ1bGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF0dHJfZ3JvdXBfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOlxuICAgICAgICBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPlxuICAgICAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICAgICAnYiBsaXN0IC0+XG4gICAgICAgICdjIG9wdGlvbiBsaXN0IC0+XG4gICAgICAgICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIEF0dHJfaW5saW5lID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdW5wYWNrZWQgPSB7XG4gICAgICBhdHRyaWJ1dGUgOiAoJ2IsICdjKSBBdHRyaWJ1dGUudDtcbiAgICAgIGV4cGVjdCA6IGJvb2w7XG4gICAgICBleHBhbmQgOiBjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0O1xuICAgIH1cblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCBfKSB1bnBhY2tlZCAtPiAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYXR0cl9uYW1lIChUIHQpID0gQXR0cmlidXRlLm5hbWUgdC5hdHRyaWJ1dGVcblxuICAgIGxldCBzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCBsID1cbiAgICAgIExpc3QucGFydGl0aW9uIGwgfmY6KGZ1biAoVCB0KSAtPiBub3QgdC5leHBlY3QpXG4gIGVuZFxuXG4gIG1vZHVsZSBTcGVjaWFsX2Z1bmN0aW9uID0gc3RydWN0XG4gICAgdHlwZSB0ID0ge1xuICAgICAgbmFtZSA6IHN0cmluZztcbiAgICAgIGlkZW50IDogTG9uZ2lkZW50LnQ7XG4gICAgICBleHBhbmQgOiBQYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBQYXJzZXRyZWUuZXhwcmVzc2lvbiBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnRfa2luZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEZsb2F0IHwgSW50ZWdlclxuICBlbmRcblxuICBtb2R1bGUgQ29uc3RhbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdWZmaXggOiBjaGFyO1xuICAgICAga2luZCA6IENvbnN0YW50X2tpbmQudDtcbiAgICAgIGV4cGFuZCA6IExvY2F0aW9uLnQgLT4gc3RyaW5nIC0+IFBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRXh0ZW5zaW9uIDogRXh0ZW5zaW9uLnQgdFxuICAgICAgfCBTcGVjaWFsX2Z1bmN0aW9uIDogU3BlY2lhbF9mdW5jdGlvbi50IHRcbiAgICAgIHwgQ29uc3RhbnQgOiBDb25zdGFudC50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZGVjbGFyYXRpb24pIEF0dHJfZ3JvdXBfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsXG4gICAgICAgICAgOiAoc2lnbmF0dXJlX2l0ZW0sIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQgOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9leHQgOiAoc2lnbmF0dXJlX2l0ZW0sIHR5cGVfZXh0ZW5zaW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX2V4Y2VwdGlvbiA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leGNlcHRpb24pIEF0dHJfaW5saW5lLnQgdFxuXG4gICAgdHlwZSAoXywgXykgZXF1YWxpdHkgPSBFcSA6ICgnYSwgJ2EpIGVxdWFsaXR5IHwgTmUgOiAoXywgXykgZXF1YWxpdHlcblxuICAgIGxldCBlcSA6IHR5cGUgYSBiLiBhIHQgLT4gYiB0IC0+IChhLCBiKSBlcXVhbGl0eSA9XG4gICAgIGZ1biBhIGIgLT5cbiAgICAgIG1hdGNoIChhLCBiKSB3aXRoXG4gICAgICB8IEV4dGVuc2lvbiwgRXh0ZW5zaW9uIC0+IEVxXG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24sIFNwZWNpYWxfZnVuY3Rpb24gLT4gRXFcbiAgICAgIHwgQ29uc3RhbnQsIENvbnN0YW50IC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZGVjbCwgQXR0cl9zdHJfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbCwgQXR0cl9zaWdfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc3RyX3R5cGVfZXh0LCBBdHRyX3N0cl90eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCwgQXR0cl9zaWdfdHlwZV9leHQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfZXhjZXB0aW9uLCBBdHRyX3N0cl9leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uLCBBdHRyX3NpZ19leGNlcHRpb24gLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IF8gLT4gTmVcbiAgZW5kXG5cbiAgdHlwZSB0ID0gVCA6ICdhIEZpZWxkLnQgKiAnYSAtPiB0XG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYXR0cl9ncm91cF9pbmxpbmUgPVxuICAgICgnYiwgJ2MpIEF0dHJpYnV0ZS50IC0+XG4gICAgKGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgQXN0dHlwZXMucmVjX2ZsYWcgLT5cbiAgICAnYiBsaXN0IC0+XG4gICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAnYSBsaXN0KSAtPlxuICAgIHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2MgLT4gJ2EgbGlzdCkgLT5cbiAgICB0XG5cbiAgbGV0IHJlYyBmaWx0ZXIgOiB0eXBlIGEuIGEgRmllbGQudCAtPiB0IGxpc3QgLT4gYSBsaXN0ID1cbiAgIGZ1biBmaWVsZCBsIC0+XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgVCAoZmllbGQnLCB4KSA6OiBsIC0+IChcbiAgICAgICAgbWF0Y2ggRmllbGQuZXEgZmllbGQgZmllbGQnIHdpdGhcbiAgICAgICAgfCBGaWVsZC5FcSAtPiB4IDo6IGZpbHRlciBmaWVsZCBsXG4gICAgICAgIHwgRmllbGQuTmUgLT4gZmlsdGVyIGZpZWxkIGwpXG5cbiAgbGV0IGV4dGVuc2lvbiBleHQgPSBUIChFeHRlbnNpb24sIGV4dClcblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbiBpZCBmID1cbiAgICBUIChTcGVjaWFsX2Z1bmN0aW9uLCB7IG5hbWUgPSBpZDsgaWRlbnQgPSBMb25naWRlbnQucGFyc2UgaWQ7IGV4cGFuZCA9IGYgfSlcblxuICBsZXQgY29uc3RhbnQga2luZCBzdWZmaXggZXhwYW5kID0gVCAoQ29uc3RhbnQsIHsgc3VmZml4OyBraW5kOyBleHBhbmQgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHQgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHQgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfdHlwZV9leHQsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uIGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbF9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0X2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3QgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuZW5kXG5cbm1vZHVsZSBHZW5lcmF0ZWRfY29kZV9ob29rID0gc3RydWN0XG4gIHR5cGUgJ2Egc2luZ2xlX29yX21hbnkgPSBTaW5nbGUgb2YgJ2EgfCBNYW55IG9mICdhIGxpc3RcblxuICB0eXBlIHQgPSB7XG4gICAgZiA6ICdhLiAnYSBFeHRlbnNpb24uQ29udGV4dC50IC0+IExvY2F0aW9uLnQgLT4gJ2Egc2luZ2xlX29yX21hbnkgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBub3AgPSB7IGYgPSAoZnVuIF8gXyBfIC0+ICgpKSB9XG4gIGxldCByZXBsYWNlIHQgY29udGV4dCBsb2MgeCA9IHQuZiBjb250ZXh0IGxvYyB4XG5cbiAgbGV0IGluc2VydF9hZnRlciB0IGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTWFueSBbXSAtPiAoKVxuICAgIHwgXyAtPiB0LmYgY29udGV4dCB7IGxvYyB3aXRoIGxvY19zdGFydCA9IGxvYy5sb2NfZW5kIH0geFxuZW5kXG5cbigqIFVzZWQgdG8gaW5zZXJ0IGVycm9yIGV4dGVuc2lvbnMgKilcbmxldCB3cmFwX2V4dGVuc2lvbiA6IHR5cGUgYS4gbG9jOkxvY2F0aW9uLnQgLT4gYSBFQy50IC0+IGEgLT4gZXh0ZW5zaW9uIC0+IGEgPVxuIGZ1biB+bG9jIHQgb3JpZ2luYWxfbm9kZSBleHRlbnNpb24gLT5cbiAgKCogUHJlZml4aW5nIGNvbnN0cnVjdG9ycyB3aXRoIHRoZSBtb2R1bGUgcGF0aCBpcyBuZWNlc3NhcnkgZm9yIE9DYW1sIDwgNC4wNyxcbiAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvNjg1MiAqKVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFQy5DbGFzc19leHByIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGNsX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkNsYXNzX2ZpZWxkIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucGNmX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkNsYXNzX3R5cGUgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY3R5X2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkNsYXNzX3R5cGVfZmllbGQgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wY3RmX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLkNvcmVfdHlwZSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnB0eXBfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuRXhwcmVzc2lvbiAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBleHBfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uXG4gIHwgRUMuTW9kdWxlX2V4cHIgLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wbW9kX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvblxuICB8IEVDLk1vZHVsZV90eXBlIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucG10eV9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5QYXR0ZXJuIC0+IEFzdF9idWlsZGVyLkRlZmF1bHQucHBhdF9leHRlbnNpb24gfmxvYyBleHRlbnNpb25cbiAgfCBFQy5TaWduYXR1cmVfaXRlbSAtPiBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0ZW5zaW9uIFtdXG4gIHwgRUMuU3RydWN0dXJlX2l0ZW0gLT4gQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbiBbXVxuICB8IEVDLlBweF9pbXBvcnQgLT5cbiAgICAgICgqIEluc2VydCB0aGUgZXJyb3IgaW4gdGhlIHR5cGUgZGVjbCBtYW5pZmVzdCAqKVxuICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID1cbiAgICAgICAgU29tZSAoQXN0X2J1aWxkZXIuRGVmYXVsdC5wdHlwX2V4dGVuc2lvbiB+bG9jIGV4dGVuc2lvbilcbiAgICAgIGluXG4gICAgICB7IG9yaWdpbmFsX25vZGUgd2l0aCBwdHlwZV9tYW5pZmVzdCB9XG5cbmxldCBleG5fdG9fZXh0ZW5zaW9uIGV4biA9XG4gIGxldCBlcnJvciA9IGV4bl90b19sb2NfZXJyb3IgZXhuIGluXG4gIGxldCBsb2MgPSBMb2NhdGlvbi5FcnJvci5nZXRfbG9jYXRpb24gZXJyb3IgaW5cbiAgbGV0IGV4dGVuc2lvbiA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICAoZXh0ZW5zaW9uLCBsb2MpXG5cbmxldCBleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgb3JpZ2luYWxfbm9kZSBleG4gPVxuICBsZXQgZXh0ZW5zaW9uLCBsb2MgPSBleG5fdG9fZXh0ZW5zaW9uIGV4biBpblxuICB3cmFwX2V4dGVuc2lvbiB+bG9jIGNvbnRleHQgb3JpZ2luYWxfbm9kZSBleHRlbnNpb25cblxubGV0IGV4bl90b19zdHJpIGV4biA9XG4gIGxldCBleHRlbnNpb24sIGxvYyA9IGV4bl90b19leHRlbnNpb24gZXhuIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cblxubGV0IGV4bl90b19zaWdpIGV4biA9XG4gIGxldCBleHRlbnNpb24sIGxvYyA9IGV4bl90b19leHRlbnNpb24gZXhuIGluXG4gIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19leHRlbnNpb24gfmxvYyBleHRlbnNpb24gW11cblxubGV0IHJlYyBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgKGV4bl90b19lcnJvcl9leHRlbnNpb24gY29udGV4dCB4IGV4bikpKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBFQy5tZXJnZV9hdHRyaWJ1dGVzX3JlcyBjb250ZXh0IHggYXR0cnNcbiAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6eFxuICAgICAgICAgID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMpXG5cbmxldCBtYXBfbm9kZSBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5ob29rIH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgIFdpdGhfZXJyb3JzLnJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBjb250ZXh0IHggZXhuKSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dFxuICAgICAgICAgICAgKEVDLm1lcmdlX2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzKVxuICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgID4+fCBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGxvYyAoU2luZ2xlIGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICBnZW5lcmF0ZWRfY29kZSlcblxubGV0IHJlYyBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2sgfmVtYmVkX2Vycm9yc1xuICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBbXVxuICB8IHggOjogbCAtPiAoXG4gICAgICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGVzZSB0d28gbGV0cyBmb3JjZSB0aGUgZXZhbHVhdGlvbiBvcmRlciwgc28gdGhhdCBlcnJvcnMgYXJlIHJlcG9ydGVkIGluIHRoZVxuICAgICAgICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBmaWxlLiAqKVxuICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gZ2V0X2xvYyB4IGluXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICBXaXRoX2Vycm9ycy5yZXR1cm4gKFNvbWUgWyBleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIGNvbnRleHQgeCBleG4gXSkpXG4gICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgICAgICB8IFNvbWUgY29udmVydGVkIC0+XG4gICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBjb252ZXJ0ZWQgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgICAgICAgID4+PSBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgIChNYW55IGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBjb2RlIC0+IGdlbmVyYXRlZF9jb2RlIEAgY29kZSkpXG5cbmxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbmxldCB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9ucyBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gIG1hdGNoXG4gICAgTGlzdC5tYXAgc3BlY2lhbF9mdW5jdGlvbnNcbiAgICAgIH5mOihmdW4geyBSdWxlLlNwZWNpYWxfZnVuY3Rpb24uaWRlbnQ7IGV4cGFuZDsgXyB9IC0+IChpZGVudCwgZXhwYW5kKSlcbiAgICAoKiBXZSBleHBlY3QgdGhlIGxvb2t1cCB0byBmYWlsIG1vc3Qgb2YgdGhlIHRpbWUsIGJ5IG1ha2luZyB0aGUgdGFibGUgYmlnIChhbmRcbiAgICAgICBzcGFyc2UpLCB3ZSBtYWtlIGl0IG1vcmUgbGlrZWx5IHRvIGZhaWwgcXVpY2tseSAqKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3QgfnNpemU6KG1heCAxMDI0IChMaXN0Lmxlbmd0aCBzcGVjaWFsX2Z1bmN0aW9ucyAqIDIpKVxuICB3aXRoXG4gIHwgT2sgdGFibGUgLT4gdGFibGVcbiAgfCBFcnJvciBpZGVudCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiQ29udGV4dF9mcmVlLlYxLm1hcF90b3BfZG93bjogJXMgcHJlc2VudCB0d2ljZSBpbiBsaXN0IG9mIHNwZWNpYWwgXFxcbiAgICAgICAgIGZ1bmN0aW9uc1wiXG4gICAgICAgIChMaXN0LmZpbmRfbWFwX2V4biBzcGVjaWFsX2Z1bmN0aW9ucyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICBpZiBQb2x5LmVxdWFsIHIuaWRlbnQgaWRlbnQgdGhlbiBTb21lIHIubmFtZSBlbHNlIE5vbmUpKVxuXG4oKiBbZ2V0X2dyb3VwIGF0dHIgbF0gcmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyBmb3IgZWFjaFxuICAgbm9kZSBpbiBbbF0uXG4gICBJZiBbbF0gaXMgZW1wdHkgb3IgaWYgbm9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhdmUgYW4gYXR0cmlidXRlIGF0dGFjaGVkLFxuICAgW2dldF9ncm91cF0gcmV0dXJucyBbTm9uZV0uXG4gICBJZiBbbF0gaXMgbm90IGVtcHR5IGFuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXMgYW4gYXR0cmlidWVcbiAgIGF0dGFjaGVkLCBbZ2V0X2dyb3VwXSByZXR1cm5zIHRoZSBlcXVpdmFsZW50IG9mXG4gICBbU29tZSAoTGlzdC5tYXAgfmY6KEF0dHJpYnV0ZS5nZXQgYXR0cikgbCldLiAqKVxubGV0IHJlYyBnZXRfZ3JvdXAgYXR0ciBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgZ2V0X2dyb3VwIGF0dHIgbCA+Pj0gZnVuIGdyb3VwIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhdHRyIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmUgPj58IGZ1biBhdHRyMiAtPlxuICAgICAgbWF0Y2ggKGF0dHIyLCBncm91cCkgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgIHwgTm9uZSwgU29tZSB2YWxzIC0+IFNvbWUgKE5vbmUgOjogdmFscylcbiAgICAgIHwgU29tZSB2YWx1ZSwgTm9uZSAtPiBTb21lIChTb21lIHZhbHVlIDo6IExpc3QubWFwIGwgfmY6KGZ1biBfIC0+IE5vbmUpKVxuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIHZhbHMgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiB2YWxzKSlcblxuKCogU2FtZSBhcyBbTGlzdC5yZXZdIHRoZW4gW0xpc3QuY29uY2F0XSBidXQgZXhwZWN0aW5nIHRoZSBpbnB1dCB0byBiZSBvZiBsZW5ndGggPD0gMiAqKVxubGV0IHJldl9jb25jYXQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgWyB4IF0gLT4geFxuICB8IFsgeDsgeSBdIC0+IHkgQCB4XG4gIHwgbCAtPiBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgbClcblxubGV0IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBzb3J0X2F0dHJfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyA9XG4gIEVycm9yXG4gICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgXCJBIGNvbnRleHQtZnJlZSBydWxlIGRlbGV0ZWQgb3IgYWRkZWQgYXR0cmlidWVzIG9mIGEgc3RyL3NpZyBpdGVtXCIsXG4gICAgICBbXSApXG5cbigqIFJldHVybnMgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGF0dHJpYnV0ZSBoYW5kbGVycy4gV2UgZG9uJ3QgcmVtb3ZlIHRoZXNlIGF0dHJpYnV0ZXMsIGFzXG4gICBhbm90aGVyIHBhc3MgbWlnaHQgaW50ZXJwcmV0IHRoZW0gbGF0ZXIuIEZvciBpbnN0YW5jZSBib3RoIHBweF9kZXJpdmluZyBhbmRcbiAgIHBweGxpYl9kZXJpdmluZyBpbnRlcnByZXRzIFtAQGRlcml2aW5nXSBhdHRyaWJ1dGVzLlxuXG4gICBUaGlzIGNvbXBsZXhpdHkgaXMgaG9ycmlibGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBkb24ndCBjYXJlIGFzIFthdHRyc10gaXMgYWx3YXlzIGEgbGlzdFxuICAgb2Ygb25lIGVsZW1lbnQ7IGl0IG9ubHkgaGFzIFtAQGRlcml2aW5nXS5cbiopXG5sZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJzIHJmIH5pdGVtcyB+ZXhwYW5kZWRfaXRlbXMgfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyB+Y29udmVydF9leG4gPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKVxuICAgIH5mOihmdW4gYWNjIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLlQgZ3JvdXApIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIGdldF9ncm91cCBncm91cC5hdHRyaWJ1dGUgaXRlbXMgPj49IGZ1biBnMSAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBleHBhbmRlZF9pdGVtcyA+Pj0gZnVuIGcyIC0+XG4gICAgICBtYXRjaCAoZzEsIGcyKSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gcmV0dXJuIGFjY1xuICAgICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICBjb250ZXh0X2ZyZWVfYXR0cmlidXRlX21vZGlmaWNhdGlvbiB+bG9jIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDphY2NcbiAgICAgIHwgU29tZSB2YWx1ZXMsIFNvbWUgXyAtPiAoXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5tYWtlIH5kZXJpdmVkX2l0ZW1fbG9jOmxvY1xuICAgICAgICAgICAgICB+aW5saW5lOmdyb3VwLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGdyb3VwLmV4cGFuZCB+Y3R4dCByZiBleHBhbmRlZF9pdGVtcyB2YWx1ZXMgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yX2l0ZW0gPSBbIGNvbnZlcnRfZXhuIGV4biBdIGluXG4gICAgICAgICAgICByZXR1cm4gKGVycm9yX2l0ZW0gOjogYWNjKSkpXG5cbmxldCBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cnMgfmNvbnZlcnRfZXhuIH5pdGVtIH5leHBhbmRlZF9pdGVtIH5sb2MgfmJhc2VfY3R4dFxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2lubGluZS5UIGEpIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGl0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzEgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTphLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGEuZXhwYW5kIH5jdHh0IGV4cGFuZGVkX2l0ZW0gdmFsdWUgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yX2l0ZW0gPSBbIGNvbnZlcnRfZXhuIGV4biBdIGluXG4gICAgICAgICAgICByZXR1cm4gKGVycm9yX2l0ZW0gOjogYWNjKSkpXG5cbm1vZHVsZSBFeHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgZiA6ICdhLiAnYSBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC50IC0+IExvY2F0aW9uLnQgLT4gJ2EgbGlzdCAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbmVuZFxuXG5jbGFzcyBtYXBfdG9wX2Rvd24gPyhleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcClcbiAgPyhnZW5lcmF0ZWRfY29kZV9ob29rID0gR2VuZXJhdGVkX2NvZGVfaG9vay5ub3ApID8oZW1iZWRfZXJyb3JzID0gZmFsc2UpIHJ1bGVzXG4gID1cbiAgbGV0IGhvb2sgPSBnZW5lcmF0ZWRfY29kZV9ob29rIGluXG5cbiAgbGV0IHNwZWNpYWxfZnVuY3Rpb25zID1cbiAgICBSdWxlLmZpbHRlciBTcGVjaWFsX2Z1bmN0aW9uIHJ1bGVzIHw+IHRhYmxlX29mX3NwZWNpYWxfZnVuY3Rpb25zXG4gIGluXG4gIGxldCBjb25zdGFudHMgPVxuICAgIFJ1bGUuZmlsdGVyIENvbnN0YW50IHJ1bGVzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biAoYyA6IFJ1bGUuQ29uc3RhbnQudCkgLT4gKChjLnN1ZmZpeCwgYy5raW5kKSwgYy5leHBhbmQpKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3RfZXhuXG4gIGluXG4gIGxldCBleHRlbnNpb25zID0gUnVsZS5maWx0ZXIgRXh0ZW5zaW9uIHJ1bGVzIGluXG4gIGxldCBjbGFzc19leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc19leHByIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX2ZpZWxkID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc19maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjbGFzc190eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jbGFzc190eXBlIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGVfZmllbGQgZXh0ZW5zaW9uc1xuICBhbmQgY29yZV90eXBlID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5jb3JlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgZXhwcmVzc2lvbiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuZXhwcmVzc2lvbiBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfZXhwciA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgbW9kdWxlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLm1vZHVsZV90eXBlIGV4dGVuc2lvbnNcbiAgYW5kIHBhdHRlcm4gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnBhdHRlcm4gZXh0ZW5zaW9uc1xuICBhbmQgc2lnbmF0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnNpZ25hdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHN0cnVjdHVyZV9pdGVtID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5zdHJ1Y3R1cmVfaXRlbSBleHRlbnNpb25zXG4gIGFuZCBwcHhfaW1wb3J0ID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5QcHhfaW1wb3J0IGV4dGVuc2lvbnMgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNscywgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgfD4gUnVsZS5BdHRyX2dyb3VwX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9kZWNscywgYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX3R5cGVfZGVjbCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgfD4gUnVsZS5BdHRyX2dyb3VwX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscywgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscywgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX3R5cGVfZXh0cywgYXR0cl9zdHJfdHlwZV9leHRzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9leHQgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZXh0cywgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9leHQgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9ucywgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX2V4Y2VwdGlvbiBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfZXhjZXB0aW9ucywgYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX2V4Y2VwdGlvbiBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBtYXBfbm9kZSA9IG1hcF9ub2RlIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IG1hcF9ub2RlcyA9IG1hcF9ub2RlcyB+aG9vayB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgPSBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgaGFuZGxlX2F0dHJfaW5saW5lID0gaGFuZGxlX2F0dHJfaW5saW5lIH5lbWJlZF9lcnJvcnMgaW5cblxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwX3dpdGhfZXhwYW5zaW9uX2NvbnRleHRfYW5kX2Vycm9ycyBhcyBzdXBlclxuXG4gICAgKCogTm8gcG9pbnQgcmVjdXJzaW5nIGludG8gZXZlcnkgbG9jYXRpb24gKilcbiAgICBtZXRob2QhIGxvY2F0aW9uIF8geCA9IHJldHVybiB4XG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jb3JlX3R5cGUgY29yZV90eXBlIHN1cGVyI2NvcmVfdHlwZSB4LnB0eXBfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHBhdHRlcm4gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMucGF0dGVybiBwYXR0ZXJuIHN1cGVyI3BhdHRlcm4geC5wcGF0X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIGJhc2VfY3R4dCBlID1cbiAgICAgIGxldCB3aXRoX2NvbnRleHQgPVxuICAgICAgICAoKiBNYWtlIHN1cmUgY29kZS1wYXRoIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIGJlZm9yZSBleHBhbmRpbmcuICopXG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBlIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+PSBmdW4gb3B0aW9uIC0+XG4gICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKGJhc2VfY3R4dCwgZSlcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICAgQXR0cmlidXRlLnJlbW92ZV9zZWVuX3JlcyBFeHByZXNzaW9uXG4gICAgICAgICAgICAgIFsgVCBBc3RfdHJhdmVyc2UuZW50ZXJfdmFsdWUgXVxuICAgICAgICAgICAgICBlXG4gICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6ZVxuICAgICAgICAgICAgPj58IGZ1biBlIC0+XG4gICAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl92YWx1ZSB+bG9jIHR4dCBiYXNlX2N0eHQsIGUpXG4gICAgICBpblxuICAgICAgd2l0aF9jb250ZXh0ID4+PSBmdW4gKGJhc2VfY3R4dCwgZSkgLT5cbiAgICAgIGxldCBleHBhbmRlZCA9XG4gICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBfIC0+XG4gICAgICAgICAgICBtYXBfbm9kZSBFQy5leHByZXNzaW9uIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgKGZ1biBfIGUgLT4gcmV0dXJuIGUpXG4gICAgICAgICAgICAgIGUucGV4cF9sb2MgYmFzZV9jdHh0IGVcbiAgICAgICAgfCBfIC0+IHJldHVybiBlXG4gICAgICBpblxuICAgICAgZXhwYW5kZWQgPj49IGZ1biBlIC0+XG4gICAgICBsZXQgZXhwYW5kX2NvbnN0YW50IGtpbmQgY2hhciB0ZXh0ID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBjb25zdGFudHMgKGNoYXIsIGtpbmQpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcbiAgICAgICAgfCBTb21lIGV4cGFuZCAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IChleHBhbmQgZS5wZXhwX2xvYyB0ZXh0KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgIHwgUGV4cF9hcHBseSAoKHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBpZDsgXyB9IGFzIGZ1bmMpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBzZWxmI3BleHBfYXBwbHlfd2l0aG91dF90cmF2ZXJzaW5nX2Z1bmN0aW9uIGJhc2VfY3R4dCBlIGZ1bmMgYXJnc1xuICAgICAgICAgIHwgU29tZSBwYXR0ZXJuIC0+IChcbiAgICAgICAgICAgICAgbGV0IGdlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgICAgICAgICB0cnkgcmV0dXJuIChwYXR0ZXJuIGUpXG4gICAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biBleHByIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuY1xuICAgICAgICAgICAgICAgICAgICBhcmdzXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfaWRlbnQgaWQgLT4gKFxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgc3BlY2lhbF9mdW5jdGlvbnMgaWQudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICAgIHwgU29tZSBwYXR0ZXJuIC0+IChcbiAgICAgICAgICAgICAgbGV0IGdlbmVyYXRlZF9jb2RlID1cbiAgICAgICAgICAgICAgICB0cnkgcmV0dXJuIChwYXR0ZXJuIGUpXG4gICAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoU29tZSAoZXhuX3RvX2Vycm9yX2V4dGVuc2lvbiBFQy5leHByZXNzaW9uIGUgZXhuKSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biBleHByIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICAgICAgICB8IFNvbWUgZSAtPiBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGUpKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfaW50ZWdlciAocywgU29tZSBjKSkgLT4gKFxuICAgICAgICAgIHRyeSBleHBhbmRfY29uc3RhbnQgSW50ZWdlciBjIHNcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgICAgcmV0dXJuIChleG5fdG9fZXJyb3JfZXh0ZW5zaW9uIEVDLmV4cHJlc3Npb24gZSBleG4pKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfZmxvYXQgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEZsb2F0IGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+XG4gICAgICAgICAgICByZXR1cm4gKGV4bl90b19lcnJvcl9leHRlbnNpb24gRUMuZXhwcmVzc2lvbiBlIGV4bikpXG4gICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuXG4gICAgKCogUHJlLWNvbmRpdGlvbnM6XG4gICAgICAgLSBlLnBleHBfZGVzYyA9IFBleHBfYXBwbHkoZnVuYywgYXJncylcbiAgICAgICAtIGZ1bmMucGV4cF9kZXNjID0gUGV4cF9pZGVudCBfXG4gICAgKilcbiAgICBtZXRob2QgcHJpdmF0ZSBwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jIGFyZ3NcbiAgICAgICAgPVxuICAgICAgbGV0IHsgcGV4cF9kZXNjID0gXzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGUgaW5cbiAgICAgIGxldCBmdW5jID1cbiAgICAgICAgbGV0IHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9hdHRyaWJ1dGVzOyBwZXhwX2xvY19zdGFjayB9ID0gZnVuYyBpblxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAgICB7XG4gICAgICAgICAgcGV4cF9kZXNjO1xuICAgICAgICAgIHBleHBfbG9jICgqIGxvY2F0aW9uIGRvZXNuJ3QgbmVlZCB0byBiZSB0cmF2ZXJzZWQgKik7XG4gICAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHBleHBfbG9jX3N0YWNrO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZnVuYyA+Pj0gZnVuIGZ1bmMgLT5cbiAgICAgIGxldCBhcmdzID1cbiAgICAgICAgTGlzdC5tYXAgYXJncyB+ZjooZnVuIChsYWIsIGV4cCkgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZXhwID4+fCBmdW4gZXhwIC0+IChsYWIsIGV4cCkpXG4gICAgICAgIHw+IGNvbWJpbmVfZXJyb3JzXG4gICAgICBpblxuICAgICAgYXJncyA+Pj0gZnVuIGFyZ3MgLT5cbiAgICAgIHNlbGYjYXR0cmlidXRlcyBiYXNlX2N0eHQgcGV4cF9hdHRyaWJ1dGVzID4+fCBmdW4gcGV4cF9hdHRyaWJ1dGVzIC0+XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfYXBwbHkgKGZ1bmMsIGFyZ3MpO1xuICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgIH1cblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc190eXBlIGNsYXNzX3R5cGUgc3VwZXIjY2xhc3NfdHlwZSB4LnBjdHlfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZV9maWVsZCBjbGFzc190eXBlX2ZpZWxkIHN1cGVyI2NsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgeC5wY3RmX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX2V4cHIgY2xhc3NfZXhwciBzdXBlciNjbGFzc19leHByIHgucGNsX2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZCB4LnBjZl9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX3R5cGUgbW9kdWxlX3R5cGUgc3VwZXIjbW9kdWxlX3R5cGUgeC5wbXR5X2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICAoKCogTWFrZSBzdXJlIGNvZGUtcGF0aCBhdHRyaWJ1dGUgaXMgYXBwbGllZCBiZWZvcmUgZXhwYW5kaW5nLiAqKVxuICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgeCB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKGJhc2VfY3R4dCwgeClcbiAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgIEF0dHJpYnV0ZS5yZW1vdmVfc2Vlbl9yZXMgTW9kdWxlX2V4cHJcbiAgICAgICAgICAgICBbIFQgQXN0X3RyYXZlcnNlLmVudGVyX21vZHVsZSBdXG4gICAgICAgICAgICAgeFxuICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6eFxuICAgICAgICAgICA+PnwgZnVuIHggLT5cbiAgICAgICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfbW9kdWxlIH5sb2MgdHh0IGJhc2VfY3R4dCwgeCkpXG4gICAgICA+Pj0gZnVuIChiYXNlX2N0eHQsIHgpIC0+XG4gICAgICBtYXBfbm9kZSBFQy5tb2R1bGVfZXhwciBtb2R1bGVfZXhwciBzdXBlciNtb2R1bGVfZXhwciB4LnBtb2RfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnN0cnVjdHVyZV9pdGVtIHN0cnVjdHVyZV9pdGVtIHN1cGVyI3N0cnVjdHVyZV9pdGVtIHgucHN0cl9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuc2lnbmF0dXJlX2l0ZW0gc2lnbmF0dXJlX2l0ZW0gc3VwZXIjc2lnbmF0dXJlX2l0ZW0geC5wc2lnX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19zdHJ1Y3R1cmUgYmFzZV9jdHh0IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gPVxuICAgICAgc2VsZiNwYXR0ZXJuIGJhc2VfY3R4dCBwY3N0cl9zZWxmID4+PSBmdW4gcGNzdHJfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX2ZpZWxkIGNsYXNzX2ZpZWxkIHN1cGVyI2NsYXNzX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjZl9sb2MpXG4gICAgICAgIGJhc2VfY3R4dCBwY3N0cl9maWVsZHNcbiAgICAgID4+fCBmdW4gcGNzdHJfZmllbGRzIC0+IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH1cblxuICAgIG1ldGhvZCEgdHlwZV9kZWNsYXJhdGlvbiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5QcHhfaW1wb3J0IHBweF9pbXBvcnQgc3VwZXIjdHlwZV9kZWNsYXJhdGlvbiB4LnB0eXBlX2xvY1xuICAgICAgICBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc19zaWduYXR1cmUgYmFzZV9jdHh0IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gPVxuICAgICAgc2VsZiNjb3JlX3R5cGUgYmFzZV9jdHh0IHBjc2lnX3NlbGYgPj49IGZ1biBwY3NpZ19zZWxmIC0+XG4gICAgICBtYXBfbm9kZXMgRUMuY2xhc3NfdHlwZV9maWVsZCBjbGFzc190eXBlX2ZpZWxkIHN1cGVyI2NsYXNzX3R5cGVfZmllbGRcbiAgICAgICAgKGZ1biB4IC0+IHgucGN0Zl9sb2MpXG4gICAgICAgIGJhc2VfY3R4dCBwY3NpZ19maWVsZHNcbiAgICAgID4+fCBmdW4gcGNzaWdfZmllbGRzIC0+IHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgICgqIFRPRE86IHRyeSB0byBmYWN0b3JpemUgI3N0cnVjdHVyZSBhbmQgI3NpZ25hdHVyZSB3aXRob3V0IG1ldGEtcHJvZ3JhbW1pbmcgKilcbiAgICAoKiQqKVxuICAgIG1ldGhvZCEgc3RydWN0dXJlIGJhc2VfY3R4dCBzdCA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFN0cnVjdHVyZV9pdGVtIGl0ZW0ucHN0cl9sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc3RyX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc3RydWN0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFN0cnVjdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHN0cl9sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHN0cl9kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHN0cnVjdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFN0cnVjdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzdHJfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9leG4gPSBleG5fdG9fc3RyaSBpblxuICAgICAgICAgICAgICAgIG1hdGNoIChpdGVtLnBzdHJfZGVzYywgZXhwYW5kZWRfaXRlbS5wc3RyX2Rlc2MpIHdpdGhcbiAgICAgICAgICAgICAgICB8IFBzdHJfdHlwZSAocmYsIHRkcyksIFBzdHJfdHlwZSAoZXhwX3JmLCBleHBfdGRzKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKiBObyBjb250ZXh0LWZyZWUgcnVsZSBjYW4gcmV3cml0ZSByZWMgZmxhZ3MgYXRtLCB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBhY3RzIGFzIGEgZmFpbHNhZmUgaW4gY2FzZSBpdCBldmVyIGNoYW5nZXMgKilcbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChQb2x5LihyZiA9IGV4cF9yZikpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNscyByZiB+aXRlbXM6dGRzXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9tb2R0eXBlIG10ZCwgUHN0cl9tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgICB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB0ZSwgUHN0cl90eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0IH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBlYywgUHN0cl9leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0IH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX2l0ZW0gOjogcmVzdCkpXG4gICAgICBpblxuICAgICAgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGU6ZmFsc2VcblxuICAgICgqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbiAgICBtZXRob2QhIHNpZ25hdHVyZSBiYXNlX2N0eHQgc2cgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTaWduYXR1cmVfaXRlbSBpdGVtLnBzaWdfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHNpZ19sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3NpZ25hdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTaWduYXR1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzZyB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzZyB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzaWdfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzaWdfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzaWduYXR1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzaWduYXR1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc2lnX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc2lnbmF0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRfZXhuID0gZXhuX3RvX3NpZ2kgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc2lnX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHNpZ19kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHJmLCB0ZHMpLCBQc2lnX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICAgIH5jb252ZXJ0X2V4blxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZSBtdGQsIFBzaWdfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbHNfZXhwZWN0XG4gICAgICAgICAgICAgICAgICAgICAgfml0ZW06bXRkIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgICAgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ190eXBleHQgdGUsIFBzaWdfdHlwZXh0IGV4cF90ZSAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfdHlwZV9leHRzIH5pdGVtOnRlXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX3RlIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19leGNlcHRpb24gZWMsIFBzaWdfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHQgfmNvbnZlcnRfZXhuXG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX2V4Y2VwdGlvbnNfZXhwZWN0IH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dCB+Y29udmVydF9leG5cbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQqKVxuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeHRlbnNpb24gb2YgJ2EgRXh0ZW5zaW9uLkNvbnRleHQudFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIG9mICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnRcblxuICBsZXQgcGFyZW4gcHAgcHBmIHggPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiKCVhKVwiIHBwIHhcblxuICBsZXQgcHJpbnRlciA6IHR5cGUgYS4gYSB0IC0+IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyIC0+IGEgLT4gdW5pdCA9XG4gICAgbGV0IG9wZW4gRXh0ZW5zaW9uLkNvbnRleHQgaW5cbiAgICBsZXQgb3BlbiBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dCBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZXhwciAtPiBQcHJpbnRhc3QuY2xhc3NfZXhwclxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGUgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ29yZV90eXBlIC0+IHBhcmVuIFBwcmludGFzdC5jb3JlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBFeHByZXNzaW9uIC0+IHBhcmVuIFBwcmludGFzdC5leHByZXNzaW9uXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX2V4cHIgLT4gUHByaW50YXN0Lm1vZHVsZV9leHByXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX3R5cGUgLT4gUHByaW50YXN0Lm1vZHVsZV90eXBlXG4gICAgfCBFeHRlbnNpb24gUGF0dGVybiAtPiBwYXJlbiBQcHJpbnRhc3QucGF0dGVyblxuICAgIHwgRXh0ZW5zaW9uIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFBweF9pbXBvcnQgLT4gUHByaW50YXN0LnR5cGVfZGVjbGFyYXRpb25cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG5lbmRcblxubW9kdWxlIFJlcGxhY2VtZW50ID0gc3RydWN0XG4gIHR5cGUgZGF0YSA9XG4gICAgfCBWYWx1ZXMgOlxuICAgICAgICAnYSBDb250ZXh0LnQgKiAnYSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5zaW5nbGVfb3JfbWFueVxuICAgICAgICAtPiBkYXRhXG4gICAgfCBUZXh0IG9mIHN0cmluZ1xuXG4gIHR5cGUgdCA9IHsgc3RhcnQgOiBMZXhpbmcucG9zaXRpb247IHN0b3AgOiBMZXhpbmcucG9zaXRpb247IGRhdGEgOiBkYXRhIH1cblxuICBsZXQgbWFrZSB+Y29udGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPVxuICAgIHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBWYWx1ZXMgKGNvbnRleHQsIHJlcGwpIH1cblxuICBsZXQgbWFrZV90ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9IHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBUZXh0IHJlcGwgfVxuXG4gIGxldCB0ZXh0IGJsb2NrID1cbiAgICBtYXRjaCBibG9jay5kYXRhIHdpdGhcbiAgICB8IFRleHQgcyAtPiBzXG4gICAgfCBWYWx1ZXMgKGNvbnRleHQsIGdlbmVyYXRlZCkgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBwcmludGVyID0gQ29udGV4dC5wcmludGVyIGNvbnRleHQgaW5cbiAgICAgICAgICBtYXRjaCBnZW5lcmF0ZWQgd2l0aFxuICAgICAgICAgIHwgU2luZ2xlIHggLT4gU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHJpbnRlciB4XG4gICAgICAgICAgfCBNYW55IGwgLT5cbiAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBwZiBsIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICBwcmludGVyIHBwZiB4O1xuICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpKVxuICAgICAgICAgICAgICAgIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX3dzID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSBpblxuICAgICAgICBsZXQgc3RyaXBfd3MgcyBpIGxlbiA9XG4gICAgICAgICAgbGV0IGxlbiA9IHJlZiBsZW4gaW5cbiAgICAgICAgICB3aGlsZSAhbGVuID4gMCAmJiBpc193cyBzLltpICsgIWxlbiAtIDFdIGRvXG4gICAgICAgICAgICBsZW4gOj0gIWxlbiAtIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIFN0cmluZy5zdWIgcyB+cG9zOmkgfmxlbjohbGVuXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHBvcyA9XG4gICAgICAgICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggcyB0aGVuIFtdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGlkeCA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tX29wdCBzIHBvcyAnXFxuJyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHN0cmlwX3dzIHMgcG9zIChpZHggLSBwb3MpIDo6IFwiXFxuXCIgOjogbG9vcCBzIChpZHggKyAxKVxuICAgICAgICBpblxuICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAobG9vcCBzIDApXG5lbmRcblxub3BlbiBSZXBsYWNlbWVudFxuXG5tb2R1bGUgUmVwbGFjZW1lbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcGxhY2VtZW50LnQgbGlzdFxuXG4gICgqIE1lcmdlIGxvY2F0aW9ucyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIE92ZXJsYXBwaW5nIGxvY2F0aW9ucyBhcmUgbWVyZ2VkIGludG8gb25lLiBUaGVcbiAgICAgcmVzdWx0IGlzIHNvcnRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgdG8gdGhlIGVuZC4gKilcbiAgbGV0IGNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyA9XG4gICAgTGlzdC5pdGVyIHJlcGxzIH5mOihmdW4gcmVwbCAtPlxuICAgICAgICBpZlxuICAgICAgICAgIFN0cmluZy4oIDw+ICkgcmVwbC5zdGFydC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICAgIHx8IFN0cmluZy4oIDw+ICkgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZW5hbWUpXG4gICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IHRoZSByZXdyaXRpbmcgY29udGFpbnMgcGFydHMgZnJvbSBhbm90aGVyIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICBJdCBpcyB0b28gY29tcGxpY2F0ZWQgdG8gcmVjb25jaWxlIGl0IHdpdGggdGhlIHNvdXJjZTogJXMgb3IgJXMgXFxcbiAgICAgICAgICAgICBhbmQgJXNcIlxuICAgICAgICAgICAgcmVwbC5zdGFydC5wb3NfZm5hbWUgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICBhc3NlcnQgKHJlcGwuc3RhcnQucG9zX2NudW0gPD0gcmVwbC5zdG9wLnBvc19jbnVtKSk7XG4gICAgbGV0IHJlcGxzID1cbiAgICAgIExpc3Quc29ydCByZXBscyB+Y21wOihmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0IGQgPSBjb21wYXJlIGEuc3RhcnQucG9zX2NudW0gYi5zdG9wLnBvc19jbnVtIGluXG4gICAgICAgICAgaWYgZCA9IDAgdGhlblxuICAgICAgICAgICAgKCogUHV0IHRoZSBsYXJnZXN0IGZpcnN0LCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgW2ZpbHRlcl0gZnVuY3Rpb25zIGFsd2F5cyBwaWNrcyB1cFxuICAgICAgICAgICAgICAgdGhlIGxhcnRlc3QgZmlyc3Qgd2hlbiBzZXZlcmFsIGdlbmVyYXRlZCByZXBscyBzdGFydCBhdCB0aGUgc2FtZSBwb3NpdGlvbiAqKVxuICAgICAgICAgICAgY29tcGFyZSBiLnN0b3AucG9zX2NudW0gYS5zdG9wLnBvc19jbnVtXG4gICAgICAgICAgZWxzZSBkKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgcHJldiByZXBscyB+YWNjID1cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgKHByZXYgOjogYWNjKVxuICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID4gcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPj0gcmVwbC5zdG9wLnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgKCogW3JlcGxdIGlzIGluY2x1ZGVkIGluIFtwcmV2XSA9PiBza2lwIFtyZXBsXSAqKVxuICAgICAgICAgICAgICBmaWx0ZXIgcHJldiByZXBscyB+YWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogbG9jYXRpb25zIG9mIGdlbmVyYXRlZCBjb2RlIGFyZSBvdmVybGFwcGluZywgXFxcbiAgICAgICAgICAgICAgICAgY2Fubm90IHJlY29uY2lsZVwiXG4gICAgICAgICAgICAgICAgfmxvYzpcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID0gcmVwbC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2VuZCA9IHByZXYuc3RvcDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOihwcmV2IDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHJlcGxzIHdpdGggW10gLT4gW10gfCByZXBsIDo6IHJlcGxzIC0+IGZpbHRlciByZXBsIHJlcGxzIH5hY2M6W11cbmVuZFxuXG5sZXQgY291bnRfbmV3bGluZXMgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgU3RyaW5nLml0ZXIgcyB+ZjooZnVuY3Rpb24gJ1xcbicgLT4gbiA6PSAhbiArIDEgfCBfIC0+ICgpKTtcbiAgIW5cblxubGV0IGdlbmVyYXRlZF9jb2RlX2JlZ2luID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgQkVHSU4gfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfZW5kID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgRU5EICAgfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG50eXBlIG1vZGUgPSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3NcbnR5cGUgdGFyZ2V0ID0gT3V0cHV0IG9mIG1vZGUgfCBDb3JyZWN0ZWRcblxubGV0IHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIChwb3MgOiBMZXhpbmcucG9zaXRpb24pID1cbiAgbGV0IHJlYyBsb29wIGNudW0gPVxuICAgIGlmIGNudW0gPSBTdHJpbmcubGVuZ3RoIGNvbnRlbnRzIHRoZW4geyBwb3Mgd2l0aCBwb3NfY251bSA9IGNudW0gfVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGNvbnRlbnRzLltjbnVtXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gbG9vcCAoY251bSArIDEpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9zIHdpdGhcbiAgICAgICAgICAgIHBvc19jbnVtID0gY251bSArIDE7XG4gICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIDE7XG4gICAgICAgICAgICBwb3NfYm9sID0gY251bSArIDE7XG4gICAgICAgICAgfVxuICAgICAgfCBfIC0+IHBvc1xuICBpblxuICBsb29wIHBvcy5wb3NfY251bVxuXG5sZXQgd2l0aF9vdXRwdXQgfnN0eWxlciB+KGtpbmQgOiBLaW5kLnQpIGZuIH5mID1cbiAgbWF0Y2ggc3R5bGVyIHdpdGhcbiAgfCBOb25lIC0+IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnk6ZmFsc2UgfmZcbiAgfCBTb21lIGNtZCAtPlxuICAgICAgbGV0IHRtcF9mbiwgb2MgPVxuICAgICAgICBTdGRsaWIuRmlsZW5hbWUub3Blbl90ZW1wX2ZpbGUgXCJwcHhsaWJfZHJpdmVyXCJcbiAgICAgICAgICAobWF0Y2gga2luZCB3aXRoIEltcGwgLT4gXCIubWxcIiB8IEludGYgLT4gXCIubWxpXCIpXG4gICAgICBpblxuICAgICAgbGV0IGNtZCA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMlc1wiIGNtZFxuICAgICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgdG1wX2ZuKVxuICAgICAgICAgIChtYXRjaCBmbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgZm4gLT4gXCIgPiBcIiBeIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBmbilcbiAgICAgIGluXG4gICAgICBsZXQgbiA9XG4gICAgICAgIEV4bi5wcm90ZWN0eCB0bXBfZm4gfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmY6KGZ1biBfIC0+XG4gICAgICAgICAgICBFeG4ucHJvdGVjdHggb2MgfmZpbmFsbHk6Y2xvc2Vfb3V0IH5mO1xuICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZClcbiAgICAgIGluXG4gICAgICBpZiBuIDw+IDAgdGhlbiAoXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiY29tbWFuZCBleGl0ZWQgd2l0aCBjb2RlICVkOiAlc1xcblwiIG4gY21kO1xuICAgICAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgcmVjb25jaWxlID9zdHlsZXIgKHJlcGxzIDogUmVwbGFjZW1lbnRzLnQpIH5raW5kIH5jb250ZW50cyB+aW5wdXRfZmlsZW5hbWVcbiAgICB+b3V0cHV0IH5pbnB1dF9uYW1lIH50YXJnZXQgPVxuICBsZXQgcmVwbHMgPSBSZXBsYWNlbWVudHMuY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzIGluXG4gIGxldCBvdXRwdXRfbmFtZSA9IG1hdGNoIG91dHB1dCB3aXRoIE5vbmUgLT4gXCI8c3Rkb3V0PlwiIHwgU29tZSBmbiAtPiBmbiBpblxuICB3aXRoX291dHB1dCBvdXRwdXQgfnN0eWxlciB+a2luZCB+ZjooZnVuIG9jIC0+XG4gICAgICBsZXQgY29weV9pbnB1dCBwb3MgfnVwX3RvIH5saW5lIH5sYXN0X2lzX3RleHQgfmlzX3RleHQgPVxuICAgICAgICBsZXQgcG9zID0gaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zIGluXG4gICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHVwX3RvIHRoZW4gKFxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG4lKnNcIiBwb3MucG9zX2xudW0gaW5wdXRfbmFtZVxuICAgICAgICAgICAgICAgIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIHwgQ29ycmVjdGVkIC0+ICgpKTtcbiAgICAgICAgICBvdXRwdXRfc3Vic3RyaW5nIG9jIGNvbnRlbnRzIH5wb3M6cG9zLnBvc19jbnVtXG4gICAgICAgICAgICB+bGVuOih1cF90byAtIHBvcy5wb3NfY251bSk7XG4gICAgICAgICAgbGV0IGxpbmUgPSByZWYgKGxpbmUgKyAxKSBpblxuICAgICAgICAgIGZvciBpID0gcG9zLnBvc19jbnVtIHRvIHVwX3RvIC0gMSBkb1xuICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBjb250ZW50cy5baV0gJ1xcbicgdGhlbiBsaW5lIDo9ICFsaW5lICsgMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGxpbmUgPSAhbGluZSBpblxuICAgICAgICAgIGlmIChub3QgaXNfdGV4dCkgJiYgQ2hhci4oIDw+ICkgY29udGVudHMuW3VwX3RvIC0gMV0gJ1xcbicgdGhlbiAoXG4gICAgICAgICAgICBvdXRwdXRfY2hhciBvYyAnXFxuJztcbiAgICAgICAgICAgIGxpbmUgKyAxKVxuICAgICAgICAgIGVsc2UgbGluZSlcbiAgICAgICAgZWxzZSBsaW5lXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChjb3B5X2lucHV0IHBvcyB+dXBfdG86KFN0cmluZy5sZW5ndGggY29udGVudHMpIH5saW5lXG4gICAgICAgICAgICAgICAgIH5sYXN0X2lzX3RleHQgfmlzX3RleHQ6ZmFsc2VcbiAgICAgICAgICAgICAgICA6IGludClcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgICBsZXQgaXNfdGV4dCA9XG4gICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIGNvcHlfaW5wdXQgcG9zIH51cF90bzpyZXBsLnN0YXJ0LnBvc19jbnVtIH5saW5lIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgICAgICB+aXNfdGV4dFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuXCIgKGxpbmUgKyAxKSBvdXRwdXRfbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBDb3JyZWN0ZWQgLT4gbGluZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMgfmxhc3RfaXNfdGV4dDppc190ZXh0XG4gICAgICBhbmQgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzXG4gICAgICAgICAgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICB8IHJlcGwgOjogcmVwbHMnIC0+XG4gICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgICBsZXQgbGFzdF9pc190ZXh0ID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMnIH5sYXN0X2lzX3RleHRcbiAgICAgIGFuZCBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfZW5kKTtcbiAgICAgICAgbG9vcCBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gaW5wdXRfbmFtZTtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCB7IHN0YXJ0ID0geyBwb3NfY251bSA9IDA7IF8gfTsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luKTtcbiAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2VcbiAgICAgIHwgXyAtPiBsb29wIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2UpXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgbmV4dF9pZCA6IGludDtcbiAgbXV0YWJsZSBiaW5kaW5ncyA6IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIGxpc3Q7XG59XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHRfaWQgPSAwOyBiaW5kaW5ncyA9IFtdIH1cblxubGV0IHNhbml0aXplIHQgZSA9XG4gIG1hdGNoIHQuYmluZGluZ3Mgd2l0aFxuICB8IFtdIC0+IGVcbiAgfCBiaW5kaW5ncyAtPlxuICAgICAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgZS5wZXhwX2xvYyBpblxuICAgICAgQXN0LnBleHBfbGV0IE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBlXG5cbmxldCBxdW90ZSB0IChlIDogZXhwcmVzc2lvbikgPVxuICBsZXQgbG9jID0gZS5wZXhwX2xvYyBpblxuICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBsb2MgaW5cbiAgbGV0IG5hbWUgPSBcIl9fXCIgXiBJbnQudG9fc3RyaW5nIHQubmV4dF9pZCBpblxuICBsZXQgYmluZGluZ19leHByLCBxdW90ZWRfZXhwciA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgKCogT3B0aW1pemUgaWRlbnRpZmllciBxdW90aW5nIGJ5IGF2b2lkaW5nIGNsb3N1cmUuXG4gICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1wcHgvcHB4X2Rlcml2aW5nL3B1bGwvMjUyLiAqKVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPiAoZSwgQXN0LmV2YXIgbmFtZSlcbiAgICB8IF8gLT5cbiAgICAgICAgbGV0IGJpbmRpbmdfZXhwciA9XG4gICAgICAgICAgQXN0LnBleHBfZnVuIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgKGxldCB1bml0ID0gQXN0X2J1aWxkZXIuRGVmYXVsdC5Mb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIiBpblxuICAgICAgICAgICAgIEFzdC5wcGF0X2NvbnN0cnVjdCB1bml0IE5vbmUpXG4gICAgICAgICAgICBlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBxdW90ZWRfZXhwciA9IEFzdC5lYXBwbHkgKEFzdC5ldmFyIG5hbWUpIFsgQXN0LmV1bml0IF0gaW5cbiAgICAgICAgKGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIpXG4gIGluXG4gIGxldCBiaW5kaW5nID1cbiAgICBsZXQgcGF0ID0gQXN0LnB2YXIgbmFtZSBpblxuICAgIEFzdC52YWx1ZV9iaW5kaW5nIH5wYXQgfmV4cHI6YmluZGluZ19leHByXG4gIGluXG4gIHQuYmluZGluZ3MgPC0gYmluZGluZyA6OiB0LmJpbmRpbmdzO1xuICB0Lm5leHRfaWQgPC0gdC5uZXh0X2lkICsgMTtcbiAgcXVvdGVkX2V4cHJcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgbWtfYXR0cl9ub2xvYyB0eHQgPSBBc3RfaGVscGVyLkF0dHIubWsgTG9jYXRpb24ueyB0eHQ7IGxvYyA9IG5vbmUgfVxubGV0IGhpZGVfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5oaWRlXCIgKFBTdHIgW10pXG5sZXQgZm9jdXNfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5mb2N1c1wiIChQU3RyIFtdKVxuXG5sZXQgaGlkZV9wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGhpZGVfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG4iLCJvcGVuIEltcG9ydFxuXG5tb2R1bGUgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaW5zZXJ0IDogbm9kZV9uYW1lOnN0cmluZyAtPiBMb2NhdGlvbi50IC0+IHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBjb3ZlcmVkX2J5IDogdCAtPiBsb2M6TG9jYXRpb24udCAtPiBib29sXG4gICgqKiBbY292ZXJlZF9ieSB0IH5sb2MgPSB0cnVlXSBpZmYgW3RdIGlzIGNvdmVyZWQgYnkgW2xvY10gKilcblxuICB2YWwgZmluZF9vdXRzaWRlIDogTG9jYXRpb24udCAtPiB0IC0+IHN0cmluZyAqIExvY2F0aW9uLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWluX3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgbWF4X3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgcmFuZ2VzIDogKHN0cmluZyAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gIH1cblxuICBsZXQgZW1wdHkgPSB7IG1pbl9wb3MgPSBOb25lOyBtYXhfcG9zID0gTm9uZTsgcmFuZ2VzID0gW10gfVxuXG4gIGxldCByZWMgaW5zZXJ0IHJhbmdlcyAoKG5vZGVfbmFtZSwgbm9kZV9sb2MpIGFzIG5vZGUpID1cbiAgICBtYXRjaCByYW5nZXMgd2l0aFxuICAgIHwgW10gLT4gWyBub2RlIF1cbiAgICB8ICgoeF9uYW1lLCB4X2xvYykgYXMgeCkgOjogeHMgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24gaW5cbiAgICAgICAgaWYgY29tcGFyZV9wb3Mgbm9kZV9sb2MubG9jX3N0YXJ0IHhfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgbm9kZSA6OiB4IDo6IHhzXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZV9wb3MgeF9sb2MubG9jX3N0YXJ0IG5vZGVfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgeCA6OiBpbnNlcnQgeHMgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgICAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHgsICVzIG92ZXJsYXBzIHdpdGggJXMgYXQgbG9jYXRpb246QC4lYVwiXG4gICAgICAgICAgICBub2RlX25hbWUgeF9uYW1lIExvY2F0aW9uLnByaW50IHhfbG9jXG5cbiAgbGV0IG1pbl9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5taW5fcG9zIHAxIHAyKVxuXG4gIGxldCBtYXhfcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWF4X3BvcyBwMSBwMilcblxuICBsZXQgbG9uZ2VzdF9maXJzdCBsMSBsMiB+c3RvcF9hZnRlciA9XG4gICAgbGV0IHJlYyBsb29wIHhzIHlzIG4gPVxuICAgICAgbWF0Y2ggKHhzLCB5cywgbikgd2l0aFxuICAgICAgfCBbXSwgXywgXyB8IF8sIF8sIDAgLT4gKGwyLCBsMSlcbiAgICAgIHwgXywgW10sIF8gLT4gKGwxLCBsMilcbiAgICAgIHwgXyA6OiB4cywgXyA6OiB5cywgbiAtPiBsb29wIHhzIHlzIChuIC0gMSlcbiAgICBpblxuICAgIGxvb3AgbDEgbDIgc3RvcF9hZnRlclxuXG4gIGxldCB1bmlvbiB0MSB0MiA9XG4gICAgbGV0IGluaXQsIGwgPSBsb25nZXN0X2ZpcnN0IHQxLnJhbmdlcyB0Mi5yYW5nZXMgfnN0b3BfYWZ0ZXI6NDIgaW5cbiAgICBsZXQgcmFuZ2VzID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjppbnNlcnQgaW5cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyB0MS5taW5fcG9zIHQyLm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyB0MS5tYXhfcG9zIHQyLm1heF9wb3M7XG4gICAgICByYW5nZXM7XG4gICAgfVxuXG4gIGxldCBpbnNlcnQgfm5vZGVfbmFtZSBsb2MgdCA9XG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgKFNvbWUgbG9jLmxvY19zdGFydCkgdC5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgKFNvbWUgbG9jLmxvY19lbmQpIHQubWF4X3BvcztcbiAgICAgIHJhbmdlcyA9IGluc2VydCB0LnJhbmdlcyAobm9kZV9uYW1lLCBsb2MpO1xuICAgIH1cblxuICBsZXQgY292ZXJlZF9ieSB0IH5sb2MgPVxuICAgIG1hdGNoICh0Lm1pbl9wb3MsIHQubWF4X3Bvcykgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIG1pbl9wb3MsIFNvbWUgbWF4X3BvcyAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBtaW5fcG9zIGxvYy5sb2Nfc3RhcnQgPj0gMFxuICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtYXhfcG9zIGxvYy5sb2NfZW5kIDw9IDBcbiAgICB8IF8sIF8gLT5cbiAgICAgICAgKCogdGhlcmUgYXJlIG5vIG9wZW4gcmFuZ2VzICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4gIGxldCBmaW5kX291dHNpZGUgbG9jIHQgPVxuICAgIExpc3QuZmluZCB0LnJhbmdlcyB+ZjooZnVuIChfLCBsKSAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX3N0YXJ0IGwubG9jX3N0YXJ0ID4gMFxuICAgICAgICB8fCBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBsLmxvY19lbmQgPCAwKVxuZW5kXG5cbmxldCByZWxvY19wbXR5X2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtdHlfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG10eV9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbXR5X2xvYyA9IHsgcmVzLnBtdHlfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCByZWxvY19wbW9kX2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtb2RfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG1vZF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbW9kX2xvYyA9IHsgcmVzLnBtb2RfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jID1cbiAgTGlzdC5mb3JfYWxsIH5mOihmdW4gYXR0ciAtPlxuICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgYXR0ci5hdHRyX2xvYy5sb2NfZW5kID49IDApXG5cbmxldCBmaWxlIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxubGV0IHNhbWVfZmlsZV9zb19mYXIgPSByZWYgdHJ1ZVxuXG5sZXQgc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgZm5hbWUgPVxuICAoKiBUT0RPOiByZW1vdmUgdXNlcyBvZiBMb2NhdGlvbi5ub25lIGZyb20gdGhlIHBweGVzLiAqKVxuICBpZiBTdHJpbmcuZXF1YWwgZm5hbWUgXCJfbm9uZV9cIiB0aGVuIHRydWUgKCogZG8gbm90aGluZyBmb3Igbm93LiAqKVxuICBlbHNlXG4gICAgbWF0Y2ggIWZpbGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBmaWxlIDo9IFNvbWUgZm5hbWU7XG4gICAgICAgIHRydWVcbiAgICB8IFNvbWUgb3JpZ19mbmFtZSAtPlxuICAgICAgICBTdHJpbmcuZXF1YWwgb3JpZ19mbmFtZSBmbmFtZVxuICAgICAgICB8fFxuICAgICAgICAoc2FtZV9maWxlX3NvX2ZhciA6PSBmYWxzZTtcbiAgICAgICAgIGZhbHNlKVxuXG5sZXQgc2hvdWxkX2lnbm9yZSBsb2MgYXR0cnMgPVxuICAoKiBJZiB0aGUgZmlsZW5hbWUgY2hhbmdlZCwgdGhlbiB0aGVyZSB3ZXJlIGxpbmUgZGlyZWN0aXZlcywgYW5kIHRoZSBsb2NhdGlvbnNcbiAgICAgYXJlIGFsbCBtZXNzZWQgdXAuICopXG4gIChub3QgKHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lKSlcbiAgfHwgKCogSWdub3JlIHRoaW5ncyBleHBsaWNpdGx5IG1hcmtlZC4gKilcbiAgTGlzdC5leGlzdHNcbiAgICB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIFN0cmluZy5lcXVhbCBhdHRyLmF0dHJfbmFtZS50eHRcbiAgICAgICAgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUuYXR0cl9uYW1lLnR4dClcbiAgICBhdHRyc1xuXG5sZXQgcmVjIGV4dHJhY3RfY29uc3RyYWludCBlID1cbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIHwgUGV4cF9jb2VyY2UgKGUsIF8sIGN0KSAtPiBTb21lIChlLCBjdClcbiAgfCBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCkgLT5cbiAgICAgIE9wdGlvbi5tYXAgKGV4dHJhY3RfY29uc3RyYWludCBleHApIH5mOihmdW4gKGV4cCwgY3QpIC0+XG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGN0ICkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBkb19jaGVjayB+bm9kZV9uYW1lIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3MgPVxuICBpZiBub3QgIXNhbWVfZmlsZV9zb19mYXIgdGhlbiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICBlbHNlIGlmIG5vZGVfbG9jLmxvY19naG9zdCB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudW5pb24gY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuICBlbHNlIGlmIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmNvdmVyZWRfYnkgY2hpbGRyZW5zX2xvY3MgfmxvYzpub2RlX2xvYyB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWUgbm9kZV9sb2Mgc2libGluZ3NfbG9jc1xuICBlbHNlXG4gICAgbGV0IGNoaWxkX25hbWUsIGNoaWxkX2xvYyA9XG4gICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5maW5kX291dHNpZGUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICBpblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4OkAgdGhpcyAlcyBpcyBidWlsdCBmcm9tIGElcyB3aG9zZSBsb2NhdGlvbiBpcyBcXFxuICAgICAgIG91dHNpZGUgb2YgdGhpcyBub2RlJ3MuQC5DaGlsZCAlcyBmb3VuZCBhdDpAICVhXCJcbiAgICAgIG5vZGVfbmFtZVxuICAgICAgKChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBjaGlsZF9uYW1lIDAgd2l0aFxuICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIC0+IFwibiBcIlxuICAgICAgIHwgXyAtPiBcIiBcIilcbiAgICAgIF4gY2hpbGRfbmFtZSlcbiAgICAgIGNoaWxkX25hbWUgTG9jYXRpb24ucHJpbnQgY2hpbGRfbG9jXG5cbmxldCBlbmZvcmNlX2ludmFyaWFudHMgZm5hbWUgPVxuICBsZXQgKCkgPSBmaWxlIDo9IGZuYW1lIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgKCogVE9ETzogd2Ugc2hvdWxkIGdlbmVyYXRlIGEgY2xhc3Mgd2hpY2ggZW5mb3JjZXMgdGhlIGxvY2F0aW9uIGludmFyaWFudC5cbiAgICAgICBBbmQgdGhlbiB3ZSBzaG91bGQgb25seSBvdmVycmlkZSB0aGUgbWV0aG9kcyB3aGVyZSB3ZSBuZWVkIGFuIGVzY2FwZVxuICAgICAgIGhhdGNoIGJlY2F1c2UgdGhlIHBhcnNlciBpc24ndCBkb2luZyB0aGUgcmlnaHQgdGhpbmcuXG5cbiAgICAgICBUaGF0IHdvdWxkIGVuc3VyZSB0aGF0IHdlIHN0YXkgdXAgdG8gZGF0ZSBhcyB0aGUgQVNUIGNoYW5nZXMuICopXG5cbiAgICBtZXRob2QhIGxvbmdpZGVudF9sb2MgeCBzaWJsaW5ncyA9XG4gICAgICBpZiB4LmxvYy5sb2NfZ2hvc3QgdGhlbiBzaWJsaW5nc1xuICAgICAgZWxzZSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZTpcImlkZW50XCIgeC5sb2Mgc2libGluZ3NcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHJmX2xvYyB4LnByZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNyb3dfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicm93IGZpZWxkXCIgeC5wcmZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb2JqZWN0X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9mX2xvYyB4LnBvZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29iamVjdF9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvYmplY3QgZmllbGRcIiB4LnBvZl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGJpbmRpbmdfb3AgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2JpbmRpbmdfb3AgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImJpbmRpbmcgb3BlcmF0b3JcIiB4LnBib3BfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmFsX2xvYyB4LnB2YWxfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBkZXNjcmlwdGlvblwiIHgucHZhbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwZV9sb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBkZWNsYXJhdGlvblwiIHgucHR5cGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBsZF9sb2MgeC5wbGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJsYWJlbCBkZWNsYXJhdGlvblwiIHgucGxkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2RfbG9jIHgucGNkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIiB4LnBjZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXh0X2xvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZXh0ZW5zaW9uXCIgeC5wdHlleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXh0X2xvYyB4LnBleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCIgeC5wZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdHlfbG9jIHgucGN0eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc190eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGVcIiB4LnBjdHlfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdGZfbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZSBmaWVsZFwiIHgucGN0Zl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2lfbG9jIHgucGNpX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzc1wiIHgucGNpX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2xfbG9jIHgucGNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZXhwcmVzc2lvblwiIHgucGNsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2ZfbG9jIHgucGNmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZmllbGRcIiB4LnBjZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzaWdfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInNpZ25hdHVyZSBpdGVtXCIgeC5wc2lnX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1kX2xvYyB4LnBtZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZGVjbGFyYXRpb25cIiB4LnBtZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXNfbG9jIHgucG1zX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3N1YnN0aXR1dGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgc3Vic3RpdHV0aW9uXCIgeC5wbXNfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdGRfbG9jIHgucG10ZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCIgeC5wbXRkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb3Blbl9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9wZW5fbG9jIHgucG9wZW5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvcGVuX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib3BlblwiIHgucG9wZW5fbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGluY2xfbG9jIHgucGluY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiaW5jbHVkZVwiIHgucGluY2xfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc3RyX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzdHJ1Y3R1cmUgaXRlbVwiIHgucHN0cl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1iX2xvYyB4LnBtYl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBiaW5kaW5nXCIgeC5wbWJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSAqKVxuICAgICgqIHRoZSB0eXBlIGNvbnN0cmFpbnQgaXMgZHVwbGljYXRlZC4gICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2Yl9sb2MgeC5wdmJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBtYXRjaCAoeC5wdmJfcGF0LnBwYXRfZGVzYywgZXh0cmFjdF9jb25zdHJhaW50IHgucHZiX2V4cHIpIHdpdGhcbiAgICAgICAgICAoKiBsZXQgeCA6IHR5cGUgYSBiIGMuIGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8gOjogXywgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICgqIGxldCB4IDogIGN0ID0gZVxuICAgICAgICAgICAgIGxldCB4IDo+IGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnQgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChbXSwgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0cC5wdHlwX2xvYyBjdGUucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBfYWNjID0gc2VsZiNjb3JlX3R5cGUgY3RwIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGJpbmRpbmdcIiB4LnB2Yl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTVQgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSB0eXBlLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIHR5cGUuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbXR5X2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgeC5wbXR5X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGVcIiB4LnBtdHlfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1FIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgZXhwci4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSBleHByLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG1vZF9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHgucG1vZF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBleHByZXNzaW9uXCIgeC5wbW9kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyB4LnB0eXBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb3JlIHR5cGVcIiB4LnB0eXBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiBBbmQgYWdhaW4gLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyB4LnBleHBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHByZXNzaW9uXCIgeC5wZXhwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogLi4uIGFuZCBhZ2FpbiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNwYXR0ZXJuIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgeC5wcGF0X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicGF0dGVyblwiIHgucHBhdF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiAgKilcbiAgICAoKiB0aGUgY29uc3RydWN0IGVxdWFscyB0aGUgbG9jYXRpb24gb2YgdGhlIHR5cGVfZXhjZXB0aW9uICopXG4gICAgKCogKGFuZCBzbyBjb3ZlcnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzKS4gICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleG5fbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBpbml0ID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgbGV0IGNoaWxkc19sb2NzID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4LnB0eWV4bl9jb25zdHJ1Y3RvciBpbml0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyc19sb2NzID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXMgaW5pdCBpblxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBhdHRyc19sb2NzIHNpYmxpbmdzX2xvY3MpO1xuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGNoaWxkc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSAqKVxuICAgICgqIGxocyBpcyBzb21ldGltZXMgaW5jbHVkZWQgaW4gdGhlIHJocy4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB3aXRoX3R5cGUgKF8sIHRkZWNsKSB8IFB3aXRoX3R5cGVzdWJzdCAoXywgdGRlY2wpIC0+XG4gICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIHRkZWNsIHNpYmxpbmdzX2xvY1xuICAgICAgfCBfIC0+IHN1cGVyI3dpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjoqKVxuICAgICgqIC0gRm9vLnsgYmFyOyAuLi4gfSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uWyBiYXI7IC4uLiBdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby4oIGJhcjsgLi4uICkgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gbWV0aG9kIHggOiB0eXBlIGEuIC4uLiA9IC4uLiAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgPC0gYmF6ICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX3JlY29yZCAobGFiZWxzLCBleHByX28pIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAobGlkLCBlKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBlLnBleHBfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICgqIHB1bm5pbmcuICopXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgICAgICBpblxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBleHByX28gYWNjXG4gICAgICB8IFBleHBfb3BlblxuICAgICAgICAgICgoeyBwb3Blbl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2lkZW50IGxpZDsgXyB9OyBfIH0gYXMgb3BuKSwgZSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydCA9IDBcbiAgICAgICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19lbmQgZS5wZXhwX2xvYy5sb2NfZW5kIDw+IDAgLT5cbiAgICAgICAgICAoKiBsZXQncyByZWxvY2F0ZSAuLi4gKilcbiAgICAgICAgICBsZXQgZV9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsaWQubG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb25fZGVzY1xuICAgICAgICAgICAgKFBleHBfb3BlbiAob3BuLCB7IGUgd2l0aCBwZXhwX2xvYyA9IGVfbG9jIH0pKVxuICAgICAgICAgICAgYWNjXG4gICAgICB8IFBleHBfcG9seSAoZSwgU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXywgY3QpOyBfIH0pIC0+IChcbiAgICAgICAgICBtYXRjaCBleHRyYWN0X2NvbnN0cmFpbnQgZSB3aXRoXG4gICAgICAgICAgfCBTb21lIChlLCBjdGUpIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdGUucHR5cF9sb2MgY3QucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGN0IGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBQZXhwX2FwcGx5ICh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBsaWQ7IF8gfTsgXyB9LCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTG9uZ2lkZW50Lmxhc3RfZXhuIGxpZCB3aXRoXG4gICAgICAgICAgfCBpZFxuICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IGlkIH5wcmVmaXg6XCIuXCJcbiAgICAgICAgICAgICAgICAgJiYgKFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKCk8LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW108LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9XCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie308LVwiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xpc3QgKGZ1biAoXywgZSkgLT4gc2VsZiNleHByZXNzaW9uIGUpIGFyZ3MgYWNjXG4gICAgICAgICAgfCBleGNlcHRpb24gXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6ICAgICAgICAgICAgICopXG4gICAgKCogLSBwdW5uaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSByZWNvcmQgZmllbGQgd2l0aCB0eXBlIGNvbnN0cmFpbnQuICAgICAgICAgICAgICAgICopXG4gICAgKCogLSB1bnBhY2sgbG9jYXRpb25zIGJlaW5nIGluY29ycmVjdCB3aGVuIGNvbnN0cmFpbmVkICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9yZWNvcmQgKGxhYmVscywgXykgLT5cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGxpZCwgcGF0KSBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBwYXQucHBhdF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgcGF0LnBwYXRfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAoKiBzaW1wbGUgcHVubmluZyEgKilcbiAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAocCwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHAgYWNjXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcGF0IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYXQgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHsgcHBhdF9kZXNjID0gUHBhdF91bnBhY2sgYTsgXyB9LCBiKSAtPlxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogZmFrZSBzdHJ1Y3R1cmUgZm9yIGEgZ2VuZXJhdGl2ZSBhcmd1bWVudCBjb3ZlcnMgdGhlICAgICAqKVxuICAgICgqIGxvY2F0aW9uIG9mIHRoZSBmdW5jdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfYXBwbHkgKG0sIHsgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107IHBtb2RfbG9jOyBfIH0pXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbS5wbW9kX2xvYy5sb2Nfc3RhcnQgcG1vZF9sb2MubG9jX3N0YXJ0ID0gMCAtPlxuICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIG0gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBvcGVuX2luZm9zIGZvciBQY2xfb3BlbiBvbmx5IGNvdmVycyB0aGUgXCJvcGVuXCIga2V5d29yZCAgKilcbiAgICAoKiBhbmQgbm90IHRoZSBtb2R1bGUgb3BlbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9vcGVuIChvZCwgY2UpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjZSBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfb3BlbiAob2QsIGN0KSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBkb2NzdHJpbmdzIGhhdmUgICAgKilcbiAgICAoKiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgaXRlbSB0aGV5IGdldCBhdHRhY2hlZCB0by4gICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHggYWNjID1cbiAgICAgIG1hdGNoIHguYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwuZG9jXCIgfCBcIm9jYW1sLnRleHRcIiAtPiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNhdHRyaWJ1dGUgeCBhY2NcbiAgZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuIEltcG9ydFxub3BlbiBVdGlsc1xub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBBcmcgPSBTdGRsaWIuQXJnXG5cbmxldCBleGVfbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxubGV0IGFyZ3MgPSByZWYgW11cbmxldCBhZGRfYXJnIGtleSBzcGVjIH5kb2MgPSBhcmdzIDo9IChrZXksIHNwZWMsIGRvYykgOjogIWFyZ3NcbmxldCBsb2NfZm5hbWUgPSByZWYgTm9uZVxubGV0IHBlcmZvcm1fY2hlY2tzID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3NcbmxldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9uc1xubGV0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrID0gcmVmIE9wdGlvbnMucGVyZm9ybV9sb2NhdGlvbnNfY2hlY2tcbmxldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCA9IHJlZiBmYWxzZVxubGV0IGFwcGx5X2xpc3QgPSByZWYgTm9uZVxubGV0IHByZXByb2Nlc3NvciA9IHJlZiBOb25lXG5sZXQgbm9fbWVyZ2UgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zID0gcmVmIGZhbHNlXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgT3B0aW9ucy5kaWZmX2NvbW1hbmRcbmxldCBwcmV0dHkgPSByZWYgZmFsc2VcbmxldCBzdHlsZXIgPSByZWYgTm9uZVxubGV0IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA9IHJlZiBOb25lXG5sZXQgY29ycmVjdGVkX3N1ZmZpeCA9IHJlZiBcIi5wcHgtY29ycmVjdGVkXCJcblxubGV0IGdob3N0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgbWV0aG9kISBsb2NhdGlvbiBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICBlbmRcblxubGV0IGNob3BfcHJlZml4IH5wcmVmaXggeCA9XG4gIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeCB4IHRoZW5cbiAgICBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggeCAoU3RyaW5nLmxlbmd0aCBwcmVmaXgpKVxuICBlbHNlIE5vbmVcblxubGV0IGdldF9kZWZhdWx0X3BhdGggKGxvYyA6IExvY2F0aW9uLnQpID1cbiAgbGV0IGZuYW1lID0gbG9jLmxvY19zdGFydC5wb3NfZm5hbWUgaW5cbiAgbWF0Y2ggY2hvcF9wcmVmaXggfnByZWZpeDpcIi4vXCIgZm5hbWUgd2l0aFxuICB8IFNvbWUgZm5hbWUgLT4gZm5hbWVcbiAgfCBOb25lIC0+IGZuYW1lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3N0ciA6IHN0cnVjdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzdHJfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zaWcgOiBzaWduYXR1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc2lnX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubW9kdWxlIExpbnRfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTG9jYXRpb24udCAqIHN0cmluZ1xuXG4gIGxldCBvZl9zdHJpbmcgbG9jIHMgPSAobG9jLCBzKVxuZW5kXG5cbm1vZHVsZSBDb29raWVzID0gc3RydWN0XG4gIHR5cGUgdCA9IFRcblxuICBsZXQgZ2l2ZW5fdGhyb3VnaF9jbGkgPSByZWYgW11cblxuICBsZXQgZ2V0IFQgbmFtZSBwYXR0ZXJuID1cbiAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZSBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcblxuICBsZXQgZ2V0X3JlcyBUIG5hbWUgcGF0dGVybiA9XG4gICAgbWF0Y2hcbiAgICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lIChPayBlKSAtPiBPayAoU29tZSBlKVxuICAgIHwgU29tZSAoRXJyb3IgZSkgLT4gRXJyb3IgZVxuXG4gIGxldCBzZXQgVCBuYW1lIGV4cHIgPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuc2V0X2Nvb2tpZSBuYW1lIChTZWxlY3RlZF9hc3QudG9fb2NhbWwgRXhwcmVzc2lvbiBleHByKVxuXG4gIGxldCBoYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX2hhbmRsZXIgZiA9IGhhbmRsZXJzIDo9ICFoYW5kbGVycyBAIFsgZiBdXG5cbiAgbGV0IGFkZF9zaW1wbGVfaGFuZGxlciBuYW1lIHBhdHRlcm4gfmYgPVxuICAgIGFkZF9oYW5kbGVyIChmdW4gVCAtPiBmIChnZXQgVCBuYW1lIHBhdHRlcm4pKVxuXG4gIGxldCBhY2tub3dsZWRnZV9jb29raWVzIFQgPSBMaXN0Lml0ZXIgIWhhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG4gIGxldCBwb3N0X2hhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfcG9zdF9oYW5kbGVyIGYgPSBwb3N0X2hhbmRsZXJzIDo9ICFwb3N0X2hhbmRsZXJzIEAgWyBmIF1cbiAgbGV0IGNhbGxfcG9zdF9oYW5kbGVycyBUID0gTGlzdC5pdGVyICFwb3N0X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG5lbmRcblxubW9kdWxlIEluc3RydW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBCZWZvcmUgfCBBZnRlclxuXG4gIHR5cGUgdCA9IHtcbiAgICB0cmFuc2Zvcm1hdGlvbiA6XG4gICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudDtcbiAgICBwb3NpdGlvbiA6IHBvcztcbiAgfVxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb24gY3R4IHN0ID0gcmV0dXJuICh0cmFuc2Zvcm1hdGlvbiBjdHggc3QpIGluXG4gICAgICB7IHRyYW5zZm9ybWF0aW9uOyBwb3NpdGlvbiB9XG4gIGVuZFxuXG4gIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgbGV0IHRyYW5zZm9ybWF0aW9uIF8gc3QgPSB0cmFuc2Zvcm1hdGlvbiBzdCBpblxuICAgIFYyLm1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uXG5lbmRcblxubW9kdWxlIFRyYW5zZm9ybSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBhbGlhc2VzIDogc3RyaW5nIGxpc3Q7XG4gICAgaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgKiBQYXJzZXRyZWUuc3RydWN0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAqIFBhcnNldHJlZS5zaWduYXR1cmUpXG4gICAgICBvcHRpb247XG4gICAgaW5zdHJ1bWVudCA6IEluc3RydW1lbnQudCBvcHRpb247XG4gICAgcnVsZXMgOiBDb250ZXh0X2ZyZWUuUnVsZS50IGxpc3Q7XG4gICAgcmVnaXN0ZXJlZF9hdCA6IENhbGxlcl9pZC50O1xuICB9XG5cbiAgbGV0IGhhc19uYW1lIHQgbmFtZSA9XG4gICAgU3RyaW5nLmVxdWFsIG5hbWUgdC5uYW1lIHx8IExpc3QuZXhpc3RzIH5mOihTdHJpbmcuZXF1YWwgbmFtZSkgdC5hbGlhc2VzXG5cbiAgbGV0IGFsbCA6IHQgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgcHJpbnRfY2FsbGVyX2lkIG9jIChjYWxsZXJfaWQgOiBDYWxsZXJfaWQudCkgPVxuICAgIG1hdGNoIGNhbGxlcl9pZCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dF9zdHJpbmcgb2MgXCI8dW5rbm93biBsb2NhdGlvbj5cIlxuICAgIHwgU29tZSBsb2MgLT4gUHJpbnRmLmZwcmludGYgb2MgXCIlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcblxuICBsZXQgcmVnaXN0ZXIgPyhleHRlbnNpb25zID0gW10pID8ocnVsZXMgPSBbXSkgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG4gICAgICA/aW5zdHJ1bWVudCA/KGFsaWFzZXMgPSBbXSkgbmFtZSA9XG4gICAgbGV0IHJ1bGVzID0gTGlzdC5tYXAgZXh0ZW5zaW9ucyB+ZjpDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gQCBydWxlcyBpblxuICAgIGxldCBjYWxsZXJfaWQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOlsgU3RkbGliLl9fRklMRV9fIF0gaW5cbiAgICAobWF0Y2ggTGlzdC5maWx0ZXIgIWFsbCB+ZjooZnVuIGN0IC0+IGhhc19uYW1lIGN0IG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBjdCA6OiBfIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiV2FybmluZzogY29kZSB0cmFuc2Zvcm1hdGlvbiAlcyByZWdpc3RlcmVkIHR3aWNlLlxcblwiXG4gICAgICAgICAgbmFtZTtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gZmlyc3QgdGltZSB3YXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWRcbiAgICAgICAgICBjdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBzZWNvbmQgdGltZSBpcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZCBjYWxsZXJfaWQpO1xuICAgIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBjdCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIGFsaWFzZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW1wbDtcbiAgICAgICAgaW50ZjtcbiAgICAgICAgbGludF9pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgbGludF9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50O1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gY2FsbGVyX2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgYWxsIDo9IGN0IDo6ICFhbGxcblxuICBsZXQgcmVjIGxhc3QgcHJldiBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgbG9jX29mX2xpc3QgfmdldF9sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGZpcnN0IDogTG9jYXRpb24udCA9IGdldF9sb2MgeCBpblxuICAgICAgICBsZXQgbGFzdCA9IGdldF9sb2MgKGxhc3QgeCBsKSBpblxuICAgICAgICBTb21lIHsgZmlyc3Qgd2l0aCBsb2NfZW5kID0gbGFzdC5sb2NfZW5kIH1cblxuICBsZXQgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgdCB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IHsgcnVsZXM7IGVuY2xvc2VfaW1wbDsgZW5jbG9zZV9pbnRmOyBpbXBsOyBpbnRmOyBfIH0gPSB0IGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBuZXcgQ29udGV4dF9mcmVlLm1hcF90b3BfZG93blxuICAgICAgICBydWxlcyB+ZW1iZWRfZXJyb3JzIH5nZW5lcmF0ZWRfY29kZV9ob29rOmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgaW5cbiAgICBsZXQgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIGNvbnRleHQgd2hvbGVfbG9jIGYgPVxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID0gZiB3aG9sZV9sb2MgaW5cbiAgICAgIChtYXRjaCB3aG9sZV9sb2Mgd2l0aFxuICAgICAgfCBTb21lIChsb2MgOiBMb2NhdGlvbi50KSAtPiAoXG4gICAgICAgICAgbGV0IGxvY19oZWFkZXIgPSB7IGxvYyB3aXRoIGxvY19lbmQgPSBsb2MubG9jX3N0YXJ0IH0gaW5cbiAgICAgICAgICBsZXQgbG9jX2Zvb3RlciA9IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIChtYXRjaCBoZWFkZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2hlYWRlciAoTWFueSBoZWFkZXIpKTtcbiAgICAgICAgICBtYXRjaCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2Zvb3RlciAoTWFueSBmb290ZXIpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBoZWFkZXIgQCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhvb2suZiBjb250ZXh0IGxvYyAoTWFueSBsKSkpO1xuICAgICAgKGhlYWRlciwgZm9vdGVyKVxuICAgIGluXG4gICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoIFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgaW5cbiAgICBsZXQgbWFwX2ltcGwgY3R4dCBzdF93aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc3QgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHN0X3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW1wbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHN0IH5nZXRfbG9jOihmdW4gc3QgLT4gc3QuUGFyc2V0cmVlLnBzdHJfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTdHJ1Y3R1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzdHJ1Y3R1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHN0OyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc3QgLT4gbWF0Y2ggaW1wbCB3aXRoIE5vbmUgLT4gcmV0dXJuIHN0IHwgU29tZSBmIC0+IGYgY3R4dCBzdFxuICAgIGluXG4gICAgbGV0IG1hcF9pbnRmIGN0eHQgc2dfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHNnID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzZ193aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ludGYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzZyB+Z2V0X2xvYzooZnVuIHNnIC0+IHNnLlBhcnNldHJlZS5wc2lnX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU2lnbmF0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc2lnbmF0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzZzsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHNnIC0+IG1hdGNoIGludGYgd2l0aCBOb25lIC0+IHJldHVybiBzZyB8IFNvbWUgZiAtPiBmIGN0eHQgc2dcbiAgICBpblxuICAgIHsgdCB3aXRoIGltcGwgPSBTb21lIG1hcF9pbXBsOyBpbnRmID0gU29tZSBtYXBfaW50ZiB9XG5cbiAgbGV0IGJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+aG9vayB+cnVsZXMgfmVuY2xvc2VfaW1wbCB+ZW5jbG9zZV9pbnRmXG4gICAgICB+aW5wdXRfbmFtZSA9XG4gICAgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmhvb2sgfmlucHV0X25hbWVcbiAgICAgIHtcbiAgICAgICAgbmFtZSA9IFwiPGJ1aWx0aW46Y29udGV4dC1mcmVlPlwiO1xuICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICBydWxlcztcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IENhbGxlcl9pZC5nZXQgfnNraXA6W107XG4gICAgICB9XG5cbiAgbGV0IHBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgdHMgPVxuICAgIGxldCBiZWZvcmVfaW5zdHJzLCBhZnRlcl9pbnN0cnMsIHJlc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgdHMgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKGJlZl9pLCBhZnRfaSwgcmVzdCkgdCAtPlxuICAgICAgICAgIGxldCByZWR1Y2VkX3QgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0IHdpdGhcbiAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmIGluc3RyID1cbiAgICAgICAgICAgIChpbnN0ci5JbnN0cnVtZW50LnBvc2l0aW9uLCBpbnN0ci5JbnN0cnVtZW50LnRyYW5zZm9ybWF0aW9uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggT3B0aW9uLm1hcCB0Lmluc3RydW1lbnQgfmYgd2l0aFxuICAgICAgICAgIHwgU29tZSAoQmVmb3JlLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBiZWZfaSxcbiAgICAgICAgICAgICAgICBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBTb21lIChBZnRlciwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIGJlZl9pLFxuICAgICAgICAgICAgICAgIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgTm9uZSAtPiAoYmVmX2ksIGFmdF9pLCByZWR1Y2VkX3QgOjogcmVzdCkpXG4gICAgaW5cbiAgICAoIGBMaW50ZXJzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ltcGwgfHwgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ludGYgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPGxpbnQ6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSB0LmxpbnRfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSB0LmxpbnRfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYFByZXByb2Nlc3NcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ltcGxcbiAgICAgICAgICAgICAgIHx8IE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbnRmXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPHByZXByb2Nlc3M6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gdC5wcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IHQucHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgYFJlc3QgcmVzdCApXG5lbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybS5yZWdpc3RlclxuXG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG4gICAgICA9XG4gICAgbGV0IGltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBpbXBsIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU3RydWN0dXJlKVxuICAgIGluXG4gICAgbGV0IGludGYgPVxuICAgICAgT3B0aW9uLm1hcCBpbnRmIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU2lnbmF0dXJlKVxuICAgIGluXG4gICAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuZW5kXG5cbmxldCBhZGRfY3R4dF9hcmcgKGYgOiAnYSAtPiAnYikgOiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2IgPVxuIGZ1biBfIHggLT4gZiB4XG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmID9pbXBsXG4gICAgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW1wbCA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbnRmID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ltcGwgPSBPcHRpb24ubWFwIGxpbnRfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW50ZiA9IE9wdGlvbi5tYXAgbGludF9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbXBsID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ludGYgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcblxubGV0IHJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24gfm5hbWUgPyhhbGlhc2VzID0gW10pIH5pbXBsIH5pbnRmID1cbiAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gbmFtZSB+aW1wbCB+aW50ZiB+YWxpYXNlc1xuW0BAd2FybmluZyBcIi0xNlwiXVxuKCogVGhpcyBmdW5jdGlvbiB0cmlnZ2VycyBhIHdhcm5pbmcgMTYgYXMgb2Ygb2NhbWwgNC4xMiAqKVxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmXG5cbmxldCBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBuYW1lIH5vbGRfZHJvcHBlZCB+bmV3X2Ryb3BwZWQgPVxuICBsZXQgcHJpbnRfZGlmZiB3aGF0IGEgYiA9XG4gICAgbGV0IGRpZmYgPVxuICAgICAgTGlzdC5maWx0ZXIgYSB+ZjooZnVuIChuYW1lIDogXyBMb2MudCkgLT5cbiAgICAgICAgICBub3RcbiAgICAgICAgICAgIChMaXN0LmV4aXN0cyBiIH5mOihmdW4gKG5hbWUnIDogXyBMb2NhdGlvbi5sb2MpIC0+XG4gICAgICAgICAgICAgICAgIG5hbWUudHh0ID09IG5hbWUnLnR4dCkpKVxuICAgIGluXG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGRpZmYpIHRoZW4gKFxuICAgICAgUHJpbnRmLmVwcmludGYgXCJUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgJXMgYWZ0ZXIgYXBwbHlpbmcgJXM6XFxuXCIgd2hhdFxuICAgICAgICBuYW1lO1xuICAgICAgTGlzdC5pdGVyIGRpZmYgfmY6KGZ1biB7IExvY2F0aW9uLnR4dDsgbG9jIH0gLT5cbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCItICVhOiAlc1xcblwiIExvY2F0aW9uLnByaW50IGxvYyB0eHQpO1xuICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQC5cIilcbiAgaW5cbiAgcHJpbnRfZGlmZiBcImRpc2FwcGVhcmVkXCIgbmV3X2Ryb3BwZWQgb2xkX2Ryb3BwZWQ7XG4gIHByaW50X2RpZmYgXCJyZWFwcGVhcmVkXCIgb2xkX2Ryb3BwZWQgbmV3X2Ryb3BwZWRcblxubGV0IGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICB+aW5wdXRfbmFtZSA9XG4gIGxldCBjdHMgPVxuICAgIG1hdGNoICFhcHBseV9saXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5yZXYgIVRyYW5zZm9ybS5hbGxcbiAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgICBMaXN0LmZpbmQgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gIGluXG4gIGxldCAoIGBMaW50ZXJzIGxpbnRlcnMsXG4gICAgICAgIGBQcmVwcm9jZXNzIHByZXByb2Nlc3MsXG4gICAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgICBgUmVzdCBjdHMgKSA9XG4gICAgVHJhbnNmb3JtLnBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgY3RzXG4gIGluXG4gICgqIEFsbG93IG9ubHkgb25lIHByZXByb2Nlc3NvciB0byBhc3N1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAqKVxuICAoaWYgTGlzdC5sZW5ndGggcHJlcHJvY2VzcyA+IDEgdGhlblxuICAgICBsZXQgcHAgPVxuICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QubWFwIHByZXByb2Nlc3MgfmY6KGZ1biB0IC0+IHQubmFtZSkpXG4gICAgIGluXG4gICAgIGxldCBlcnIgPVxuICAgICAgIFByaW50Zi5zcHJpbnRmIFwiQXQgbW9zdCBvbmUgcHJlcHJvY2Vzc29yIGlzIGFsbG93ZWQsIHdoaWxlIGdvdDogJXNcIiBwcFxuICAgICBpblxuICAgICBmYWlsd2l0aCBlcnIpO1xuICBsZXQgbWFrZV9nZW5lcmljIHRyYW5zZm9ybXMgPVxuICAgIGlmICFub19tZXJnZSB0aGVuXG4gICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zXG4gICAgICAgIH5mOlxuICAgICAgICAgIChUcmFuc2Zvcm0ubWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmVtYmVkX2Vycm9ycyB+aG9vayB+dG9vbF9uYW1lXG4gICAgICAgICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lKVxuICAgIGVsc2VcbiAgICAgIChsZXQgZ2V0X2VuY2xvc2VycyB+ZiA9XG4gICAgICAgICBMaXN0LmZpbHRlcl9tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGYgY3Qgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoY3QubmFtZSwgeCkpXG4gICAgICAgICAoKiBTb3J0IHRoZW0gdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcgKilcbiAgICAgICAgIHw+IExpc3Quc29ydCB+Y21wOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpXG4gICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgICBpblxuXG4gICAgICAgbGV0IHJ1bGVzID1cbiAgICAgICAgIExpc3QubWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QucnVsZXMpXG4gICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgIGFuZCBpbXBsX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ltcGwpXG4gICAgICAgYW5kIGludGZfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW50ZikgaW5cbiAgICAgICBtYXRjaCAocnVsZXMsIGltcGxfZW5jbG9zZXJzLCBpbnRmX2VuY2xvc2Vycykgd2l0aFxuICAgICAgIHwgW10sIFtdLCBbXSAtPiB0cmFuc2Zvcm1zXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAgIGxldCBtZXJnZV9lbmNsb3NlciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgfCBlbmNsb3NlcnMgLT5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChmdW4gY3R4dCBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzLCBmb290ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgZW5jbG9zZXJzIH5mOihmdW4gZiAtPiBmIGN0eHQgbG9jKSB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBMaXN0LmNvbmNhdCBoZWFkZXJzIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZm9vdGVycyA9IExpc3QuY29uY2F0IChMaXN0LnJldiBmb290ZXJzKSBpblxuICAgICAgICAgICAgICAgICAgICAgKGhlYWRlcnMsIGZvb3RlcnMpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBUcmFuc2Zvcm0uYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ydWxlcyB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW1wbDoobWVyZ2VfZW5jbG9zZXIgaW1wbF9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW50ZjoobWVyZ2VfZW5jbG9zZXIgaW50Zl9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZVxuICAgICAgICAgICA6OiB0cmFuc2Zvcm1zKVxuICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCAoY3QuaW1wbCwgY3QuaW50Zikgd2l0aCBOb25lLCBOb25lIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICBpblxuICBsaW50ZXJzIEAgcHJlcHJvY2VzcyBAIGJlZm9yZV9pbnN0cnMgQCBtYWtlX2dlbmVyaWMgY3RzIEAgYWZ0ZXJfaW5zdHJzXG5cbmxldCBhcHBseV90cmFuc2Zvcm1zIH50b29sX25hbWUgfmZpbGVfcGF0aCB+ZmllbGQgfmxpbnRfZmllbGQgfmRyb3BwZWRfc29fZmFyXG4gICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnMgYXN0ID1cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfnRvb2xfbmFtZSB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfmlucHV0X25hbWVcbiAgaW5cbiAgbGV0IGZpbmlzaCAoYXN0LCBfZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycykgPVxuICAgICggYXN0LFxuICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnMgfmY6KGZ1biAobG9jLCBzKSAtPlxuICAgICAgICAgIENvbW1vbi5hdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyksXG4gICAgICBlcnJvcnMgKVxuICBpblxuICBsZXQgYWNjID1cbiAgICBMaXN0LmZvbGRfbGVmdCBjdHMgfmluaXQ6KGFzdCwgW10sIFtdLCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoYXN0LCBkcm9wcGVkLCAobGludF9lcnJvcnMgOiBfIGxpc3QpLCBlcnJvcnMpIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgICAgICAgbWF0Y2ggbGludF9maWVsZCBjdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IChsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IChsaW50X2Vycm9ycyBAIGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAobGludF9lcnJvcnMsIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycykpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZpZWxkIGN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgKGFzdCwgbW9yZV9lcnJvcnMpLCBlcnJvcnMgPVxuICAgICAgICAgICAgICB0cnkgKGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAoKGFzdCwgW10pLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRyb3BwZWQgPVxuICAgICAgICAgICAgICBpZiAhZGVidWdfYXR0cmlidXRlX2Ryb3AgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IG5ld19kcm9wcGVkID0gZHJvcHBlZF9zb19mYXIgYXN0IGluXG4gICAgICAgICAgICAgICAgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgY3QubmFtZSB+b2xkX2Ryb3BwZWQ6ZHJvcHBlZFxuICAgICAgICAgICAgICAgICAgfm5ld19kcm9wcGVkO1xuICAgICAgICAgICAgICAgIG5ld19kcm9wcGVkKVxuICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycyBAIG1vcmVfZXJyb3JzKSlcbiAgaW5cbiAgZmluaXNoIGFjY1xuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfihraW5kIDogS2luZC50KSA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IEludGYgLT4gSW50Zl9vcl9pbXBsLkludGYgWyBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yIF1cbiAgfCBJbXBsIC0+IEludGZfb3JfaW1wbC5JbXBsIFsgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciBdXG5cbmxldCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+KGtpbmQgOiBLaW5kLnQpID1cbiAgZXhuX3RvX2xvY19lcnJvciBleG4gfD4gZXJyb3JfdG9fZXh0ZW5zaW9uIH5raW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgQWN0dWFsIHJld3JpdGluZyBvZiBzdHJ1Y3R1cmUvc2lnbmF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHByaW50X3Bhc3NlcyAoKSA9XG4gIGxldCB0b29sX25hbWUgPSBcInBweGxpYl9kcml2ZXJcIiBpblxuICBsZXQgZW1iZWRfZXJyb3JzID0gZmFsc2UgaW5cbiAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgICB+aW5wdXRfbmFtZTpOb25lXG4gIGluXG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmZyZXNoZW4tYW5kLWNvbGxlY3QtYXR0cmlidXRlcz5cXG5cIjtcbiAgTGlzdC5pdGVyIGN0cyB+ZjooZnVuIGN0IC0+IFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0LlRyYW5zZm9ybS5uYW1lKTtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtYXR0cmlidXRlcz5cXG5cIjtcbiAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWV4dGVuc2lvbnM+XFxuXCIpXG5cbmxldCBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzID1cbiAgTGlzdC5zb3J0IGVycm9ycyB+Y21wOihmdW4gZXJyb3IgZXJyb3InIC0+XG4gICAgICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gICAgICBsZXQgbG9jJyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcicgaW5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmUgbG9jIGxvYycpXG5cbigqJCopXG5cbmxldCBtYXBfc3RydWN0dXJlX2dlbiBzdCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc3RydWN0dXJlIHN0KTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc3QgPVxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzdFxuICAgIGluXG4gICAgc3RcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzdCA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc3RydWN0dXJlX2l0ZW0pXG4gICAgQCBzdFxuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc3QgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHN0XG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICBsZXQgc3QsIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc3QgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW1wbClcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW1wbClcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzdCB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc3RydWN0dXJlIHN0ID1cbiAgbWF0Y2hcbiAgICBtYXBfc3RydWN0dXJlX2dlbiBzdFxuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgbWFwX3NpZ25hdHVyZV9nZW4gc2cgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3NpZ25hdHVyZSBzZyk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHNnID1cbiAgICBsZXQgc2cgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzZ1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc2dcbiAgICBpblxuICAgIHNnXG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc2cgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3NpZ25hdHVyZV9pdGVtKVxuICAgIEAgc2dcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHNnID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzZ1xuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgbGV0IHNnLCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHNnIH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmludGYpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ludGYpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc2cgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3NpZ25hdHVyZSBzZyA9XG4gIG1hdGNoXG4gICAgbWFwX3NpZ25hdHVyZV9nZW4gc2dcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCopXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgRW50cnkgcG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgPVxuICBsZXQgdGVzdCBtYWdpY19udW1iZXIgPVxuICAgIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OihTdHJpbmcuc3ViIG1hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICBpblxuICB0ZXN0IEFzdF9tYWdpYy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfHwgdGVzdCBBc3RfbWFnaWMuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbmxldCB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gaW5wdXRfZmlsZV9uYW1lID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnIC0+XG4gICAgICBsZXQgZXJyID1cbiAgICAgICAgTG9jYXRpb24uRXJyb3IubWFrZSB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVfbmFtZSkgbXNnIH5zdWI6W11cbiAgICAgIGluXG4gICAgICBFcnJvciAoZXJyLCBpbnB1dF92ZXJzaW9uKSlcblxubGV0IHJlbW92ZV9ub19lcnJvciBmbiA9IHRyeSBTdGRsaWIuU3lzLnJlbW92ZSBmbiB3aXRoIFN5c19lcnJvciBfIC0+ICgpXG5cbmxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCB2IC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICB2XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmYgPVxuICBtYXRjaCAhcHJlcHJvY2Vzc29yIHdpdGhcbiAgfCBOb25lIC0+IGYgZm5cbiAgfCBTb21lIHBwIC0+XG4gICAgICBwcm90ZWN0eCAoU3RkbGliLkZpbGVuYW1lLnRlbXBfZmlsZSBcIm9jYW1scHBcIiBcIlwiKSB+ZmluYWxseTpyZW1vdmVfbm9fZXJyb3JcbiAgICAgICAgfmY6KGZ1biB0bXBmaWxlIC0+XG4gICAgICAgICAgbWF0Y2ggU3lzdGVtLnJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dDpmbiB+b3V0cHV0OnRtcGZpbGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gZiB0bXBmaWxlXG4gICAgICAgICAgfCBFcnJvciAoZmFpbGVkX2NvbW1hbmQsIGZhbGxfYmFja192ZXJzaW9uKSAtPlxuICAgICAgICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgICAgICAgICAgXCJFcnJvciB3aGlsZSBydW5uaW5nIGV4dGVybmFsIHByZXByb2Nlc3NvclxcbkNvbW1hbmQgbGluZTogJXNcXG5cIlxuICAgICAgICAgICAgICAgIGZhaWxlZF9jb21tYW5kKVxuXG5sZXQgcmVsb2NhdGVfbWFwcGVyID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nICogc3RyaW5nXSBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kISBwb3NpdGlvbiAob2xkX2ZuLCBuZXdfZm4pIHBvcyA9XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgcG9zLnBvc19mbmFtZSBvbGRfZm4gdGhlbiB7IHBvcyB3aXRoIHBvc19mbmFtZSA9IG5ld19mbiB9XG4gICAgICBlbHNlIHBvc1xuICBlbmRcblxuKCogU2V0IHRoZSBpbnB1dCBuYW1lIGdsb2JhbGx5LiBUaGlzIGlzIHVzZWQgYnkgc29tZSBwcHggcmV3cml0ZXJzXG4gICBzdWNoIGFzIGJpc2VjdF9wcHguICopXG5sZXQgc2V0X2lucHV0X25hbWUgPSBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X25hbWVcblxubGV0IGxvYWRfaW5wdXQgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgZm4gPVxuICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICBsZXQgaW5wdXRfc291cmNlID0gaWYgU3RyaW5nLmVxdWFsIGZuIFwiLVwiIHRoZW4gQXN0X2lvLlN0ZGluIGVsc2UgRmlsZSBmbiBpblxuICBsZXQgaW5wdXRfa2luZCA9IEFzdF9pby5Qb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIGluXG4gIG1hdGNoIEFzdF9pby5yZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0X2tpbmQgPSBJbnRmX29yX2ltcGwua2luZCBhc3QgaW5cbiAgICAgIGlmIG5vdCAoS2luZC5lcXVhbCBraW5kIGFzdF9raW5kKSB0aGVuXG4gICAgICAgIHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBmblxuICAgICAgICAgIFwiRmlsZSBjb250YWlucyBhIGJpbmFyeSAlcyBBU1QgYnV0IGFuICVzIHdhcyBleHBlY3RlZFwiXG4gICAgICAgICAgKEtpbmQuZGVzY3JpYmUgYXN0X2tpbmQpIChLaW5kLmRlc2NyaWJlIGtpbmQpXG4gICAgICBlbHNlIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHx8IG5vdCByZWxvY2F0ZSB0aGVuIChcbiAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgIE9rIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgT2tcbiAgICAgICAgICAoIGlucHV0X25hbWUsXG4gICAgICAgICAgICBpbnB1dF92ZXJzaW9uLFxuICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpIClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgIFwiRmlsZSBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKVxuICB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICBFcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKVxuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBsb2FkX2lucHV0X3J1bl9hc19wcHggZm4gPVxuICAoKiBJZiB0aGVyZSdzIGFuIGVycm9yIHdoaWxlIGxvYWRpbmcgaW4gcnVuX2FzX3BweCBtb2RlLCB0aGUga2luZCBvZiBBU1QgKGltcGwvaW50ZikgaXMgc3RpbGwgdW5rbm93bi5cbiAgICAgVGhhdCdzIHdoeSwgYXMgb3Bwb3NlZCB0byBsb2FkX2lucHV0LCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyBlcnJvcnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSByZXN1bHQ6XG4gICAgIGhhbmRsaW5nIGFuIGVycm9yIGJ5IHJldHVybmluZyBhbiBBU1Qgd2l0aCB0aGUgZXJyb3IgcGFja2VkIGFzIGV4dGVuc2lvbiBub2RlIHdvdWxkbid0IGJlIHBvc3NpYmxlLiAqKVxuICBtYXRjaCBBc3RfaW8ucmVhZCAoRmlsZSBmbikgfmlucHV0X2tpbmQ6QXN0X2lvLk5lY2Vzc2FyaWx5X2JpbmFyeSB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgICAgICBhc3RcbiAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB0aGVuIGFzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKVxuICAgICAgaW5cbiAgICAgICgqIFdpdGggYC0tYXMtcHB4YCwgb2NhbWwgY2FsbHMgdGhlIHN0YW5kYWxvbmUgc2VwYXJhdGVseSBmb3IgZXZlcnkgc3RydWN0dXJlL3NpZ25hdHVyZSBpdGVtXG4gICAgICAgICB3aXRoIHRoZSBmaWxlbmFtZSBhcyBtZXRhZGF0YSB0aGF0IGl0IGdldHMgZnJvbSB0aGUgcHJldmlvdXMgY2FsbC4gcmVsb2NhdGVfbWFwcGVyIG9ubHlcbiAgICAgICAgIHJlbG9jYXRlcyBwb3NpdGlvbnMgd2hvc2UgcG9zaXRpb24gZmlsZW5hbWUgY29pbmNpZGVzIHdpdGggdGhhdCBtZXRhZGF0YSBmaWxlbmFtZS5cbiAgICAgICAgIFNvIGFsd2F5cyByZXR1cm4gdGhlIG1ldGFkYXRhIGZpbGVuYW1lIGl0c2VsZiwgZXZlbiBpZiBgLWxvYy1maWxlbmFtZWAgaXMgcHJvdmlkZWQuICopXG4gICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBfKSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIlRoZSBpbnB1dCBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJFeHBlY3RlZCBhIGJpbmFyeSBBU1QgYXMgaW5wdXRcIlxuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBfKSkgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgXykpIC0+XG4gICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcblxubGV0IGxvYWRfc291cmNlX2ZpbGUgZm4gPVxuICBsZXQgcyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZm4gaW5cbiAgaWYgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICBcInBweGxpYl9kcml2ZXI6IGNhbm5vdCB1c2UgLXJlY29uY2lsZSB3aXRoIGJpbmFyeSBBU1QgZmlsZXNcIjtcbiAgc1xuXG50eXBlIG91dHB1dF9tb2RlID1cbiAgfCBQcmV0dHlfcHJpbnRcbiAgfCBEdW1wX2FzdFxuICB8IERwYXJzZXRyZWVcbiAgfCBSZWNvbmNpbGUgb2YgUmVjb25jaWxlLm1vZGVcbiAgfCBOdWxsXG5cbigqJCopXG5sZXQgZXh0cmFjdF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBzdCA9XG4gICAgbWF0Y2ggc3Qgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgIFBzdHJfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHN0IC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTdHJ1Y3R1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc3RyIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHN0XG4gICAgfCBfIC0+IHN0XG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc3RcblxubGV0IGFkZF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU3RydWN0dXJlXG4gIGluXG4gIHByZWZpeCBAIHN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHNnID1cbiAgICBtYXRjaCBzZyB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHNpZ19kZXNjID1cbiAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc2cgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFNpZ25hdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zaWcgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc2dcbiAgICB8IF8gLT4gc2dcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzZ1xuXG5sZXQgYWRkX2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTaWduYXR1cmVcbiAgaW5cbiAgcHJlZml4IEAgc2dcblxuKCokKilcblxubGV0IGV4dHJhY3RfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChleHRyYWN0X2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGV4dHJhY3RfY29va2llc19zdHIgeClcblxubGV0IGFkZF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGFkZF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChhZGRfY29va2llc19zdHIgeClcblxubGV0IGNvcnJlY3Rpb25zID0gcmVmIFtdXG5sZXQgYWRkX3RvX2xpc3QgciB4ID0gciA6PSB4IDo6ICFyXG5cbmxldCByZWdpc3Rlcl9jb3JyZWN0aW9uIH5sb2MgfnJlcGwgPVxuICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZV90ZXh0ICgpIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kXG4gICAgICAgfnJlcGwpXG5cbmxldCBwcm9jZXNzX2ZpbGVfaG9va3MgPSByZWYgW11cbmxldCByZWdpc3Rlcl9wcm9jZXNzX2ZpbGVfaG9vayBmID0gYWRkX3RvX2xpc3QgcHJvY2Vzc19maWxlX2hvb2tzIGZcblxubW9kdWxlIEZpbGVfcHJvcGVydHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAgIHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudDtcbiAgfVxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgYWxsID0gcmVmIFtdXG4gIGxldCByZWdpc3RlciB0ID0gYWRkX3RvX2xpc3QgYWxsIChUIHQpXG4gIGxldCByZXNldF9hbGwgKCkgPSBMaXN0Lml0ZXIgIWFsbCB+ZjooZnVuIChUIHQpIC0+IHQuZGF0YSA8LSBOb25lKVxuXG4gIGxldCBkdW1wX2FuZF9yZXNldF9hbGwgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC5yZXYgIWFsbCkgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBtYXRjaCB0LmRhdGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgdC5kYXRhIDwtIE5vbmU7XG4gICAgICAgICAgICBTb21lICh0Lm5hbWUsIHQuc2V4cF9vZl90IHYpKVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZmlsZV9wcm9wZXJ0eVxuICAgIChOYW1lIDogc2lnXG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZClcbiAgICAoVCA6IFNleHBhYmxlLlMpID1cbnN0cnVjdFxuICBsZXQgdCA6IF8gRmlsZV9wcm9wZXJ0eS50ID1cbiAgICB7IG5hbWUgPSBOYW1lLm5hbWU7IGRhdGEgPSBOb25lOyBzZXhwX29mX3QgPSBULnNleHBfb2ZfdCB9XG5cbiAgbGV0ICgpID0gRmlsZV9wcm9wZXJ0eS5yZWdpc3RlciB0XG4gIGxldCBzZXQgeCA9IHQuZGF0YSA8LSBTb21lIHhcbmVuZFxuXG5sZXQgcHJvY2Vzc19hc3QgKGFzdCA6IEludGZfb3JfaW1wbC50KSB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rXG4gICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5lbWJlZF9lcnJvcnMgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3NpZ25hdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbnRmIGFzdFxuICB8IEltcGwgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3N0cnVjdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbXBsIGFzdFxuXG5sZXQgcHJvY2Vzc19maWxlIChraW5kIDogS2luZC50KSBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlXG4gICAgfmVtYmVkX2Vycm9ycyB+b3V0cHV0ID1cbiAgRmlsZV9wcm9wZXJ0eS5yZXNldF9hbGwgKCk7XG4gIExpc3QuaXRlciAoTGlzdC5yZXYgIXByb2Nlc3NfZmlsZV9ob29rcykgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBjb3JyZWN0aW9ucyA6PSBbXTtcbiAgbGV0IHJlcGxhY2VtZW50cyA9IHJlZiBbXSBpblxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhfZHJpdmVyXCIgaW5cbiAgbGV0IGhvb2sgOiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay50ID1cbiAgICBtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gICAgfCBSZWNvbmNpbGUgKFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIGYgPVxuICAgICAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICAgICAgYWRkX3RvX2xpc3QgcmVwbGFjZW1lbnRzXG4gICAgICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihFeHRlbnNpb24gY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDpnZW5lcmF0ZWQpKTtcbiAgICAgICAgfVxuICAgIHwgXyAtPiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIDogQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLnQgPVxuICAgIHtcbiAgICAgIGYgPVxuICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEZsb2F0aW5nX2F0dHJpYnV0ZSBjb250ZXh0KVxuICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6KE1hbnkgZ2VuZXJhdGVkKSkpO1xuICAgIH1cbiAgaW5cblxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID1cbiAgICBsZXQgcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgPVxuICAgICAgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZjoobG9hZF9pbnB1dCB+a2luZCB+aW5wdXRfbmFtZSB+cmVsb2NhdGUpXG4gICAgaW5cbiAgICBtYXRjaCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCB3aXRoXG4gICAgfCBPayAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkgLT4gKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIGV4dHJhY3RfY29va2llcyBhc3RcbiAgICAgICAgICAgIHw+IHByb2Nlc3NfYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQpKVxuICAgIHwgRXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAoaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH5raW5kKVxuICAgIHwgRXJyb3IgKGVycm9yLCBfKSAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm5cbiAgICAgICAgfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuICBpblxuICBPcHRpb24uaXRlciAhb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIH5mOihmdW4gZm4gLT5cbiAgICAgIGxldCBtZXRhZGF0YSA9IEZpbGVfcHJvcGVydHkuZHVtcF9hbmRfcmVzZXRfYWxsICgpIGluXG4gICAgICBPdXRfY2hhbm5lbC53cml0ZV9hbGwgZm5cbiAgICAgICAgfmRhdGE6XG4gICAgICAgICAgKExpc3QubWFwIG1ldGFkYXRhIH5mOihmdW4gKHMsIHNleHApIC0+XG4gICAgICAgICAgICAgICBTZXhwLnRvX3N0cmluZ19odW0gKFNleHAuTGlzdCBbIEF0b20gczsgc2V4cCBdKSBeIFwiXFxuXCIpXG4gICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIpKTtcblxuICBsZXQgaW5wdXRfY29udGVudHMgPSBsYXp5IChsb2FkX3NvdXJjZV9maWxlIGZuKSBpblxuICBsZXQgY29ycmVjdGVkID0gZm4gXiAhY29ycmVjdGVkX3N1ZmZpeCBpblxuICBsZXQgbWlzbWF0Y2hlc19mb3VuZCA9XG4gICAgbWF0Y2ggIWNvcnJlY3Rpb25zIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAgIGlmIFN0ZGxpYi5TeXMuZmlsZV9leGlzdHMgY29ycmVjdGVkIHRoZW4gU3RkbGliLlN5cy5yZW1vdmUgY29ycmVjdGVkO1xuICAgICAgICBmYWxzZVxuICAgIHwgY29ycmVjdGlvbnMgLT5cbiAgICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSBjb3JyZWN0aW9uc1xuICAgICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgICB+b3V0cHV0OihTb21lIGNvcnJlY3RlZCkgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lXG4gICAgICAgICAgfnRhcmdldDpDb3JyZWN0ZWQgP3N0eWxlcjohc3R5bGVyIH5raW5kO1xuICAgICAgICB0cnVlXG4gIGluXG5cbiAgKG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgfCBOdWxsIC0+ICgpXG4gIHwgUHJldHR5X3ByaW50IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlIHBwZiBhc3RcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFBwcmludGFzdC5zdHJ1Y3R1cmUgcHBmIGFzdCk7XG4gICAgICAgICAgbGV0IG51bGxfYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoIEludGYgW10gfCBJbXBsIFtdIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgbnVsbF9hc3QgdGhlbiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IER1bXBfYXN0IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBBc3RfaW8ud3JpdGUgb2NcbiAgICAgICAgICAgIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICAgICAgICAgIH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcbiAgfCBEcGFyc2V0cmVlIC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgbGV0IGFzdCA9IGFkZF9jb29raWVzIGFzdCBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmUgYXN0KVxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmUgYXN0KSk7XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBSZWNvbmNpbGUgbW9kZSAtPlxuICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSAhcmVwbGFjZW1lbnRzXG4gICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgfm91dHB1dCB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWUgfnRhcmdldDooT3V0cHV0IG1vZGUpXG4gICAgICAgID9zdHlsZXI6IXN0eWxlciB+a2luZCk7XG5cbiAgaWZcbiAgICBtaXNtYXRjaGVzX2ZvdW5kICYmIG1hdGNoICFkaWZmX2NvbW1hbmQgd2l0aCBTb21lIFwiLVwiIC0+IGZhbHNlIHwgXyAtPiB0cnVlXG4gIHRoZW4gKFxuICAgIFBweGxpYl9wcmludF9kaWZmLnByaW50ICgpIH5maWxlMTpmbiB+ZmlsZTI6Y29ycmVjdGVkIH51c2VfY29sb3I6IXVzZV9jb2xvclxuICAgICAgP2RpZmZfY29tbWFuZDohZGlmZl9jb21tYW5kO1xuICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCBvdXRwdXRfbW9kZSA9IHJlZiBQcmV0dHlfcHJpbnRcbmxldCBvdXRwdXQgPSByZWYgTm9uZVxubGV0IGtpbmQgPSByZWYgTm9uZVxubGV0IGlucHV0ID0gcmVmIE5vbmVcbmxldCBlbWJlZF9lcnJvcnMgPSByZWYgZmFsc2VcblxubGV0IHNldF9pbnB1dCBmbiA9XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnB1dCA6PSBTb21lIGZuXG4gIHwgU29tZSBfIC0+IHJhaXNlIChBcmcuQmFkIFwidG9vIG1hbnkgaW5wdXQgZmlsZXNcIilcblxubGV0IHNldF9raW5kIGsgPVxuICBtYXRjaCAha2luZCB3aXRoXG4gIHwgU29tZSBrJyB3aGVuIG5vdCAoS2luZC5lcXVhbCBrIGsnKSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJtdXN0IHNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgLWltcGwgb3IgLWludGZcIilcbiAgfCBfIC0+IGtpbmQgOj0gU29tZSBrXG5cbmxldCBzZXRfb3V0cHV0X21vZGUgbW9kZSA9XG4gIG1hdGNoICghb3V0cHV0X21vZGUsIG1vZGUpIHdpdGhcbiAgfCBQcmV0dHlfcHJpbnQsIF8gLT4gb3V0cHV0X21vZGUgOj0gbW9kZVxuICB8IF8sIFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEdW1wX2FzdCwgRHVtcF9hc3QgfCBEcGFyc2V0cmVlLCBEcGFyc2V0cmVlIC0+ICgpXG4gIHwgUmVjb25jaWxlIGEsIFJlY29uY2lsZSBiIHdoZW4gUG9seS5lcXVhbCBhIGIgLT4gKClcbiAgfCB4LCB5IC0+XG4gICAgICBsZXQgYXJnX29mX291dHB1dF9tb2RlID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgRHVtcF9hc3QgLT4gXCItZHVtcC1hc3RcIlxuICAgICAgICB8IERwYXJzZXRyZWUgLT4gXCItZHBhcnNldHJlZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPiBcIi1yZWNvbmNpbGVcIlxuICAgICAgICB8IFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT4gXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIlxuICAgICAgICB8IE51bGwgLT4gXCItbnVsbFwiXG4gICAgICBpblxuICAgICAgcmFpc2VcbiAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgYW5kICVzIGFyZSBpbmNvbXBhdGlibGVcIiAoYXJnX29mX291dHB1dF9tb2RlIHgpXG4gICAgICAgICAgICAgIChhcmdfb2Zfb3V0cHV0X21vZGUgeSkpKVxuXG5sZXQgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpID1cbiAgTGlzdC5pdGVyICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5uYW1lKVxuXG5sZXQgcGFyc2VfYXBwbHlfbGlzdCBzID1cbiAgbGV0IG5hbWVzID1cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiIHRoZW4gW10gZWxzZSBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6JywnXG4gIGluXG4gIExpc3QuaXRlciBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgIGlmXG4gICAgICAgIG5vdFxuICAgICAgICAgIChMaXN0LmV4aXN0cyAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChTdGRsaWIuQXJnLkJhZFxuICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcImNvZGUgdHJhbnNmb3JtYXRpb24gJyVzJyBkb2VzIG5vdCBleGlzdFwiIG5hbWUpKSk7XG4gIG5hbWVzXG5cbnR5cGUgbWFzayA9IHtcbiAgbXV0YWJsZSBhcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgbXV0YWJsZSBkb250X2FwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xufVxuXG5sZXQgbWFzayA9IHsgYXBwbHkgPSBOb25lOyBkb250X2FwcGx5ID0gTm9uZSB9XG5cbmxldCBoYW5kbGVfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgKCogVGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzIG1vcmUgaW50dWl0aXZlICopXG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIC1kb250LWFwcGx5XCIpO1xuICBtYXNrLmFwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGhhbmRsZV9kb250X2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgbWFzay5kb250X2FwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGludGVycHJldF9tYXNrICgpID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB8fCBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIGxldCBzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSBjdCA9XG4gICAgICBsZXQgaXNfY2FuZGlkYXRlID1cbiAgICAgICAgbWF0Y2ggbWFzay5hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPiBMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19zZWxlY3RlZCA9XG4gICAgICAgIG1hdGNoIG1hc2suZG9udF9hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpc19jYW5kaWRhdGVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgICAgICBpc19jYW5kaWRhdGUgJiYgbm90IChMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KSlcbiAgICAgIGluXG4gICAgICBpZiBpc19zZWxlY3RlZCB0aGVuIFNvbWUgY3QubmFtZSBlbHNlIE5vbmVcbiAgICBpblxuICAgIGFwcGx5X2xpc3QgOj1cbiAgICAgIFNvbWUgKExpc3QuZmlsdGVyX21hcCAhVHJhbnNmb3JtLmFsbCB+ZjpzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSlcblxubGV0IHNldF9jb29raWUgcyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOic9JyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJpbnZhbGlkIGNvb2tpZSwgbXVzdCBiZSBvZiB0aGUgZm9ybSBcXFwiPG5hbWU+PTxleHByPlxcXCJcIilcbiAgfCBTb21lIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgdmFsdWUgaW5cbiAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiPGNvbW1hbmQtbGluZT5cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9O1xuICAgICAgbGV0IGV4cHIgPSBQYXJzZS5leHByZXNzaW9uIGxleGJ1ZiBpblxuICAgICAgQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSA6PSAobmFtZSwgZXhwcikgOjogIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGlcblxubGV0IHNoYXJlZF9hcmdzID1cbiAgW1xuICAgICggXCItbG9jLWZpbGVuYW1lXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBsb2NfZm5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiPHN0cmluZz4gRmlsZSBuYW1lIHRvIHVzZSBpbiBsb2NhdGlvbnNcIiApO1xuICAgICggXCItcmVzZXJ2ZS1uYW1lc3BhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzLnJlc2VydmUsXG4gICAgICBcIjxzdHJpbmc+IE1hcmsgdGhlIGdpdmVuIG5hbWVzcGFjZSBhcyByZXNlcnZlZFwiICk7XG4gICAgKFwiLW5vLWNoZWNrXCIsIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrcywgXCIgRGlzYWJsZSBjaGVja3MgKHVuc2FmZSlcIik7XG4gICAgKFwiLWNoZWNrXCIsIEFyZy5TZXQgcGVyZm9ybV9jaGVja3MsIFwiIEVuYWJsZSBjaGVja3NcIik7XG4gICAgKCBcIi1uby1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIERpc2FibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIEVuYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItbm8tbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBEaXNhYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIEVuYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gQXBwbHkgdGhlc2UgdHJhbnNmb3JtYXRpb25zIGluIG9yZGVyIChjb21tYS1zZXBhcmF0ZWQgbGlzdClcIiApO1xuICAgICggXCItZG9udC1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfZG9udF9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBFeGNsdWRlIHRoZXNlIHRyYW5zZm9ybWF0aW9uc1wiICk7XG4gICAgKCBcIi1uby1tZXJnZVwiLFxuICAgICAgQXJnLlNldCBub19tZXJnZSxcbiAgICAgIFwiIERvIG5vdCBtZXJnZSBjb250ZXh0IGZyZWUgdHJhbnNmb3JtYXRpb25zIChiZXR0ZXIgZm9yIGRlYnVnZ2luZyBcXFxuICAgICAgIHJld3JpdGVycykuIEFzIGEgcmVzdWx0LCB0aGUgY29udGV4dC1mcmVlIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGFsbCBcXFxuICAgICAgIGFwcGxpZWQgYmVmb3JlIGFsbCBpbXBsIGFuZCBpbnRmLlwiICk7XG4gICAgKFwiLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiTkFNRT1FWFBSIFNldCB0aGUgY29va2llIE5BTUUgdG8gRVhQUlwiKTtcbiAgICAoXCItLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiIFNhbWUgYXMgLWNvb2tpZVwiKTtcbiAgXVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgc2hhcmVkX2FyZ3MgfmY6KGZ1biAoa2V5LCBzcGVjLCBkb2MpIC0+IGFkZF9hcmcga2V5IHNwZWMgfmRvYylcblxubGV0IGFzX3BwICgpID1cbiAgc2V0X291dHB1dF9tb2RlIER1bXBfYXN0O1xuICBlbWJlZF9lcnJvcnMgOj0gdHJ1ZVxuXG5sZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgW1xuICAgICggXCItYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBSdW4gYXMgYSAtcHB4IHJld3JpdGVyIChtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudClcIiApO1xuICAgICggXCItLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi0tYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFNhbWUgYXMgLWFzLXBweFwiICk7XG4gICAgKFwiLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTaG9ydGhhbmQgZm9yOiAtZHVtcC1hc3QgLWVtYmVkLWVycm9yc1wiKTtcbiAgICAoXCItLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTYW1lIGFzIC1hcy1wcFwiKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dCA6PSBTb21lIHMpLFxuICAgICAgXCI8ZmlsZW5hbWU+IE91dHB1dCBmaWxlICh1c2UgJy0nIGZvciBzdGRvdXQpXCIgKTtcbiAgICAoXCItXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2lucHV0IFwiLVwiKSwgXCIgUmVhZCBpbnB1dCBmcm9tIHN0ZGluXCIpO1xuICAgICggXCItZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIER1bXAgdGhlIG1hcnNoYWxlZCBhc3QgdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQgb2YgcHJldHR5LXByaW50aW5nIGl0XCJcbiAgICApO1xuICAgICggXCItLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBTYW1lIGFzIC1kdW1wLWFzdFwiICk7XG4gICAgKCBcIi1kcGFyc2V0cmVlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEcGFyc2V0cmVlKSxcbiAgICAgIFwiIFByaW50IHRoZSBwYXJzZXRyZWUgKHNhbWUgYXMgb2NhbWxjIC1kcGFyc2V0cmVlKVwiICk7XG4gICAgKCBcIi1lbWJlZC1lcnJvcnNcIixcbiAgICAgIEFyZy5TZXQgZW1iZWRfZXJyb3JzLFxuICAgICAgXCIgRW1iZWQgZXJyb3JzIGluIHRoZSBvdXRwdXQgQVNUIChkZWZhdWx0OiB0cnVlIHdoZW4gLWFzLXBwLCBmYWxzZSBcXFxuICAgICAgIG90aGVyd2lzZSlcIiApO1xuICAgICggXCItbnVsbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgTnVsbCksXG4gICAgICBcIiBQcm9kdWNlIG5vIG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcIiApO1xuICAgICggXCItaW1wbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbCBmaWxlXCIgKTtcbiAgICAoXCItLWltcGxcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW1wbFwiKTtcbiAgICAoIFwiLWludGZcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWxpIGZpbGVcIiApO1xuICAgIChcIi0taW50ZlwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbnRmXCIpO1xuICAgICggXCItZGVidWctYXR0cmlidXRlLWRyb3BcIixcbiAgICAgIEFyZy5TZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AsXG4gICAgICBcIiBEZWJ1ZyBhdHRyaWJ1dGUgZHJvcHBpbmdcIiApO1xuICAgICggXCItcHJpbnQtdHJhbnNmb3JtYXRpb25zXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zLFxuICAgICAgXCIgUHJpbnQgbGlua2VkLWluIGNvZGUgdHJhbnNmb3JtYXRpb25zLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgYXBwbGllZFwiICk7XG4gICAgKCBcIi1wcmludC1wYXNzZXNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF9wYXNzZXMsXG4gICAgICBcIiBQcmludCB0aGUgYWN0dWFsIHBhc3NlcyBvdmVyIHRoZSB3aG9sZSBBU1QgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIFxcXG4gICAgICAgYXBwbGllZFwiICk7XG4gICAgKCBcIi1pdGUtY2hlY2tcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJXYXJuaW5nOiB0aGUgLWl0ZS1jaGVjayBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyBubyBlZmZlY3QuXFxuJSFcIjtcbiAgICAgICAgICBFeHRyYV93YXJuaW5ncy5jYXJlX2Fib3V0X2l0ZV9icmFuY2ggOj0gdHJ1ZSksXG4gICAgICBcIiAobm8gZWZmZWN0IC0tIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkpXCIgKTtcbiAgICAoIFwiLXBwXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBwcmVwcm9jZXNzb3IgOj0gU29tZSBzKSxcbiAgICAgIFwiPGNvbW1hbmQ+ICBQaXBlIHNvdXJjZXMgdGhyb3VnaCBwcmVwcm9jZXNzb3IgPGNvbW1hbmQ+IChpbmNvbXBhdGlibGUgXFxcbiAgICAgICB3aXRoIC1hcy1wcHgpXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMpKSxcbiAgICAgIFwiIChXSVApIFByZXR0eSBwcmludCB0aGUgb3V0cHV0IHVzaW5nIGEgbWl4IG9mIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHRoZSBcXFxuICAgICAgIGdlbmVyYXRlZCBjb2RlXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykpLFxuICAgICAgXCIgKFdJUCkgc2FtZSBhcyAtcmVjb25jaWxlIGJ1dCB1c2VzIGNvbW1lbnRzIHRvIGVuY2xvc2UgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBEb24ndCB1c2UgY29sb3JzIHdoZW4gcHJpbnRpbmcgZXJyb3JzXCIpO1xuICAgICggXCItZGlmZi1jbWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpLFxuICAgICAgXCIgRGlmZiBjb21tYW5kIHdoZW4gdXNpbmcgY29kZSBleHBlY3RhdGlvbnMgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApO1xuICAgICggXCItcHJldHR5XCIsXG4gICAgICBBcmcuU2V0IHByZXR0eSxcbiAgICAgIFwiIEluc3RydWN0IGNvZGUgZ2VuZXJhdG9ycyB0byBpbXByb3ZlIHRoZSBwcmV0dGluZXNzIG9mIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItc3R5bGVyXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHN0eWxlciA6PSBTb21lIHMpLCBcIiBDb2RlIHN0eWxlclwiKTtcbiAgICAoIFwiLW91dHB1dC1tZXRhZGF0YVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIkZJTEUgV2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBtZXRhZGF0YVwiICk7XG4gICAgKCBcIi1jb3JyZWN0ZWQtc3VmZml4XCIsXG4gICAgICBBcmcuU2V0X3N0cmluZyBjb3JyZWN0ZWRfc3VmZml4LFxuICAgICAgXCJTVUZGSVggU3VmZml4IHRvIGFwcGVuZCB0byBjb3JyZWN0ZWQgZmlsZXNcIiApO1xuICBdXG5cbmxldCBnZXRfYXJncyA/KHN0YW5kYWxvbmVfYXJncyA9IHN0YW5kYWxvbmVfYXJncykgKCkgPVxuICBzdGFuZGFsb25lX2FyZ3MgQCBMaXN0LnJldiAhYXJnc1xuXG5sZXQgc3RhbmRhbG9uZV9tYWluICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gWzxmaWxlcz5dXCIgZXhlX25hbWUgaW5cbiAgbGV0IGFyZ3MgPSBnZXRfYXJncyAoKSBpblxuICBBcmcucGFyc2UgKEFyZy5hbGlnbiBhcmdzKSBzZXRfaW5wdXQgdXNhZ2U7XG4gIGludGVycHJldF9tYXNrICgpO1xuICBpZiAhcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgdGhlbiAoXG4gICAgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBpZiAhcmVxdWVzdF9wcmludF9wYXNzZXMgdGhlbiAoXG4gICAgcHJpbnRfcGFzc2VzICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IG5vIGlucHV0IGZpbGUgZ2l2ZW5cXG4lIVwiIGV4ZV9uYW1lO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IFNvbWUgZm4gLT5cbiAgICAgIGxldCBraW5kID1cbiAgICAgICAgbWF0Y2ggIWtpbmQgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICBtYXRjaCBLaW5kLm9mX2ZpbGVuYW1lIGZuIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICBcIiVzOiBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAnJXMnLCB1c2UgLWltcGwgb3IgLWludGYuXFxuXCJcbiAgICAgICAgICAgICAgICAgIGV4ZV9uYW1lIGZuO1xuICAgICAgICAgICAgICAgIFN0ZGxpYi5leGl0IDIpXG4gICAgICBpblxuICAgICAgbGV0IGlucHV0X25hbWUsIHJlbG9jYXRlID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoIE5vbmUgLT4gKGZuLCBmYWxzZSkgfCBTb21lIGZuIC0+IChmbiwgdHJ1ZSlcbiAgICAgIGluXG4gICAgICBwcm9jZXNzX2ZpbGUga2luZCBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlOiFvdXRwdXRfbW9kZVxuICAgICAgICB+b3V0cHV0OiFvdXRwdXQgfmVtYmVkX2Vycm9yczohZW1iZWRfZXJyb3JzXG5cbmxldCByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm4gPVxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID0gbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGlucHV0X2ZuIGluXG4gIGxldCBhc3QgPVxuICAgIHRyeVxuICAgICAgbGV0IGFzdCA9IGV4dHJhY3RfY29va2llcyBhc3QgaW5cbiAgICAgIGxldCB0b29sX25hbWUgPSBBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSBpblxuICAgICAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgICAgIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgICAgIHByb2Nlc3NfYXN0IGFzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICB+ZW1iZWRfZXJyb3JzOnRydWVcbiAgICB3aXRoIGV4biAtPiBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZDooSW50Zl9vcl9pbXBsLmtpbmQgYXN0KVxuICBpblxuICB3aXRoX291dHB1dCAoU29tZSBvdXRwdXRfZm4pIH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICBBc3RfaW8ud3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSB+YWRkX3BweF9jb250ZXh0OnRydWUpXG5cbmxldCBwYXJzZV9pbnB1dCBwYXNzZWRfaW5fYXJncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IHBhc3NlZF9pbl9hcmdzIChBcmcuYWxpZ24gdmFsaWRfYXJncylcbiAgICAgIChmdW4gXyAtPiByYWlzZSAoQXJnLkJhZCBcImFub255bW91cyBhcmd1bWVudHMgbm90IGFjY2VwdGVkXCIpKVxuICAgICAgaW5jb3JyZWN0X2lucHV0X21zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMFxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGlucHV0ID1cbiAgbGV0IHZhbGlkX2FyZ3MgPSBnZXRfYXJncyB+c3RhbmRhbG9uZV9hcmdzICgpIGluXG4gIG1hdGNoIExpc3QucmV2IEBAIEFycmF5LnRvX2xpc3QgQEAgaW5wdXQgd2l0aFxuICB8IG91dHB1dF9mbiA6OiBpbnB1dF9mbiA6OiBmbGFnc19hbmRfcHJvZ19uYW1lXG4gICAgd2hlbiBMaXN0Lmxlbmd0aCBmbGFnc19hbmRfcHJvZ19uYW1lID4gMCAtPlxuICAgICAgbGV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgPSBMaXN0LnJldiBmbGFnc19hbmRfcHJvZ19uYW1lIHw+IEFycmF5Lm9mX2xpc3QgaW5cbiAgICAgIHBhcnNlX2lucHV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBpbnRlcnByZXRfbWFzayAoKTtcbiAgICAgIHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbjtcbiAgICAgIFN0ZGxpYi5leGl0IDBcbiAgfCBbIGhlbHA7IF8gXSB3aGVuIFN0cmluZy5lcXVhbCBoZWxwIFwiLWhlbHBcIiB8fCBTdHJpbmcuZXF1YWwgaGVscCBcIi0taGVscFwiIC0+XG4gICAgICBwYXJzZV9pbnB1dCBpbnB1dCB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB8IF8gLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVXNhZ2U6ICVzXFxuJSFcIiB1c2FnZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcblxubGV0IHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiBpblxuICBsZXQgdXNhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgLWFzLXBweCBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWVcbiAgaW5cbiAgbGV0IGFyZ3YgPSBBcnJheS5tYWtlIChuIC0gMSkgXCJcIiBpblxuICBhcmd2LigwKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKDApO1xuICBmb3IgaSA9IDEgdG8gbiAtIDIgZG9cbiAgICBhcmd2LihpKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKGkgKyAxKVxuICBkb25lO1xuICBsZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgICBMaXN0Lm1hcCBzdGFuZGFsb25lX2FyZ3MgfmY6KGZ1biAoYXJnLCBzcGVjLCBfZG9jKSAtPlxuICAgICAgICAoYXJnLCBzcGVjLCBcIiBVbnVzZWQgd2l0aCAtYXMtcHB4XCIpKVxuICBpblxuICBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgYXJndlxuXG5sZXQgc3RhbmRhbG9uZSAoKSA9XG4gIEFzdGxpYi5pbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKTtcbiAgdHJ5XG4gICAgaWZcbiAgICAgIEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgPj0gMlxuICAgICAgJiZcbiAgICAgIG1hdGNoIFN0ZGxpYi5TeXMuYXJndi4oMSkgd2l0aFxuICAgICAgfCBcIi1hcy1wcHhcIiB8IFwiLS1hcy1wcHhcIiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKVxuICAgIGVsc2Ugc3RhbmRhbG9uZV9tYWluICgpO1xuICAgIFN0ZGxpYi5leGl0IDBcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lIGluXG4gIGxldCBpbnB1dCA9IFN0ZGxpYi5TeXMuYXJndiBpblxuICB0cnkgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3M6W10gfnVzYWdlIGlucHV0XG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHByZXR0eSAoKSA9ICFwcmV0dHlcblxubGV0IGVuYWJsZV9jaGVja3MgKCkgPVxuICAoKiBXZSBkbyBub3QgZW5hYmxlIHRoZSBsb2NhdGlvbnMgY2hlY2sgaGVyZSwgd2UgY3VycmVudGx5IHJlcXVpcmUgdGhhdCBvbmVcbiAgICAgdG8gYmUgc3BlY2lmaWNhbGx5IGVuYWJsZWQuICopXG4gIHBlcmZvcm1fY2hlY2tzIDo9IHRydWU7XG4gIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgOj0gdHJ1ZVxuXG5sZXQgZW5hYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gdHJ1ZVxubGV0IGRpc2FibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSBmYWxzZVxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPSBtYXBfc3RydWN0dXJlIHN0XG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbmxldCB1bmRlcnNjb3JlX2JpbmRpbmcgZXhwID1cbiAgbGV0IGxvYyA9IGV4cC5wZXhwX2xvYyBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYykgfmV4cHI6ZXhwXG5cbmxldCB2YXJzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9uZ2lkZW50LnQgTG9jYXRlZC50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0dCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0dC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3ZhciB2IC0+IExvY2F0ZWQubWFwIChmdW4gdmFyIC0+IExvbmdpZGVudC5MaWRlbnQgdmFyKSB2IDo6IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0dCBhY2NcbiAgZW5kXG5cbigqIEZvciBldmVyeSBbbGV0IHggPSAuLi5dIHN0cnVjdHVyZSBpdGVtLCBhZGQgYSBbbGV0IF8gPSB4XSAqKVxubGV0IGFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlIHN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBzdCBhY2MgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICAgIHwgKHsgcHN0cl9kZXNjID0gUHN0cl92YWx1ZSAoXywgdmJzKTsgcHN0cl9sb2MgPSBsb2MgfSBhcyBpdGVtKSA6OiByZXN0XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCB2YXJzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgdmJzIH5pbml0OltdIH5mOihmdW4gYWNjIHZiIC0+XG4gICAgICAgICAgICAgICAgICB2YXJzX29mI3BhdHRlcm4gdmIucHZiX3BhdCBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGlnbiA9XG4gICAgICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgdmFycyB+ZjooZnVuIHYgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmVfYmluZGluZyAocGV4cF9pZGVudCB+bG9jOnYubG9jIHYpKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsb29wIHJlc3QgKGlnbiBAIChpdGVtIDo6IGFjYykpXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IGxvb3AgcmVzdCAoaXRlbSA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAoc3VwZXIjc3RydWN0dXJlIHN0KSBbXVxuICBlbmRcblxubGV0IGJpbmRzX21vZHVsZV9uYW1lcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW2Jvb2xdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIG1iIGFjYyA9XG4gICAgICBtYXRjaCBtYi5wbWJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgbWIgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2MgPVxuICAgICAgbWF0Y2ggbWQucG1kX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiBtcyBfID1cbiAgICAgIG1hdGNoIG1zLnBtc19uYW1lLnR4dCB3aXRoIChfIDogc3RyaW5nKSAtPiB0cnVlXG5cbiAgICBtZXRob2QhIGZ1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYyA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0IGFjYyA9XG4gICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF91bnBhY2sgbmFtZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlIHwgTm9uZSAtPiBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXQgYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gZXhwciBhY2MgPVxuICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgXywgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG4oKiBbZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZV0gLS0gSWYgdHJ1ZSwgZ2VuZXJhdGVkIGNvZGVcbiAgIGNvbnRhaW5zIGNvbXBpbGVyIGF0dHJpYnV0ZSB0byBkaXNhYmxlIHVudXNlZCB3YXJuaW5ncywgaW5zdGVhZCBvZlxuICAgaW5zZXJ0aW5nIFtsZXQgXyA9IC4uLiBdLiAqKVxubGV0IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93MzJfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgbGV0IGNvbnZfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJjb2RlXCI7IFwiYXR0cmlidXRlXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImNvZGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IGZhbHNlXG4gICAgICAgIHwgXCJhdHRyaWJ1dGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBIb3cgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1rZWVwLXczMlwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYtdzMyXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIlxuXG5sZXQga2VlcF93MzJfaW1wbCAoKSA9ICFrZWVwX3czMl9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3czMl9pbnRmICgpID0gIWtlZXBfdzMyX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3c2MF9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3c2MF9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3c2MF9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93NjBfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXc2MFwiIGtlZXBfdzYwX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDYwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIlxuXG5sZXQga2VlcF93NjBfaW1wbCAoKSA9ICFrZWVwX3c2MF9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbnRmICgpID0gIWtlZXBfdzYwX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzID0gcmVmIE9wdGlvbnMuZGVmYXVsdF9hbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi11bnVzZWQtY29kZS13YXJuaW5nc1wiXG4gICAgKEJvb2wgKCggOj0gKSBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncykpXG4gICAgfmRvYzpcIl8gQWxsb3cgcHB4IGRlcml2ZXJzIHRvIGVuYWJsZSB1bnVzZWQgY29kZSB3YXJuaW5nc1wiXG5cbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKSA9ICFhbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5tb2R1bGUgQXJncyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBBc3RfcGF0dGVybiA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBBc3RfcGF0dGVyblxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQpXG5cbiAgdHlwZSAnYSBwYXJhbSA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIHBhdHRlcm4gOiAoZXhwcmVzc2lvbiwgJ2EpIEFzdF9wYXR0ZXJuLlBhY2tlZC50O1xuICAgIGRlZmF1bHQgOiAnYTtcbiAgfVxuXG4gIGxldCBhcmcgbmFtZSBwYXR0ZXJuID1cbiAgICB7XG4gICAgICBuYW1lO1xuICAgICAgZGVmYXVsdCA9IE5vbmU7XG4gICAgICBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIChmdW4geCAtPiBTb21lIHgpO1xuICAgIH1cblxuICBsZXQgZmxhZyBuYW1lID1cbiAgICBsZXQgcGF0dGVybiA9IHBleHBfaWRlbnQgKGxpZGVudCAoc3RyaW5nIG5hbWUpKSBpblxuICAgIHsgbmFtZTsgZGVmYXVsdCA9IGZhbHNlOyBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIHRydWUgfVxuXG4gIHR5cGUgKF8sIF8pIHQgPVxuICAgIHwgTmlsIDogKCdtLCAnbSkgdFxuICAgIHwgQ29ucyA6ICgnbTEsICdhIC0+ICdtMikgdCAqICdhIHBhcmFtIC0+ICgnbTEsICdtMikgdFxuXG4gIGxldCBlbXB0eSA9IE5pbFxuICBsZXQgKCArPiApIGEgYiA9IENvbnMgKGEsIGIpXG5cbiAgbGV0IHJlYyBuYW1lcyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBzdHJpbmcgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHQsIHApIC0+IHAubmFtZSA6OiBuYW1lcyB0XG5cbiAgbW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gICAgdHlwZSAoXywgXykgaW5zdGFuY2UgPVxuICAgICAgfCBJX25pbCA6ICgnbSwgJ20pIGluc3RhbmNlXG4gICAgICB8IElfY29ucyA6ICgnbTEsICdhIC0+ICdtMikgaW5zdGFuY2UgKiAnYSAtPiAoJ20xLCAnbTIpIGluc3RhbmNlXG5cbiAgICBsZXQgcmVjIGNyZWF0ZSA6XG4gICAgICAgIHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCAtPiAoYSwgYikgaW5zdGFuY2UgPVxuICAgICBmdW4gc3BlYyBhcmdzIC0+XG4gICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgIHwgTmlsIC0+IElfbmlsXG4gICAgICB8IENvbnMgKHQsIHApIC0+XG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Nfb3B0IHAubmFtZSBhcmdzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwLmRlZmF1bHRcbiAgICAgICAgICAgIHwgU29tZSBleHByIC0+IEFzdF9wYXR0ZXJuLlBhY2tlZC5wYXJzZSBwLnBhdHRlcm4gZXhwci5wZXhwX2xvYyBleHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBJX2NvbnMgKGNyZWF0ZSB0IGFyZ3MsIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiLiAoYSwgYikgaW5zdGFuY2UgLT4gYSAtPiBiID1cbiAgICAgZnVuIHQgZiAtPiBtYXRjaCB0IHdpdGggSV9uaWwgLT4gZiB8IElfY29ucyAodCwgeCkgLT4gYXBwbHkgdCBmIHhcbiAgZW5kXG5cbiAgbGV0IGFwcGx5IHQgYXJncyBmID0gSW5zdGFuY2UuYXBwbHkgKEluc3RhbmNlLmNyZWF0ZSB0IGFyZ3MpIGZcbmVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEdlbmVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgaWdub3JlIChfIDogdCkgPSAoKVxuXG50eXBlIHBhcnNlZF9hcmdzID1cbiAgfCBBcmdzIG9mIChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0XG4gIHwgVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG50eXBlICdpdGVtIGRlcml2ZWRfY29kZSA9IHsgaXRlbXMgOiAnaXRlbSBsaXN0OyB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2wgfVxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgZGVyaXZlciA9IHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgVCA6IHtcbiAgICAgICAgc3BlYyA6ICgnYywgJ2EpIEFyZ3MudDtcbiAgICAgICAgZ2VuIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2M7XG4gICAgICAgIGFyZ19uYW1lcyA6IFN0cmluZy5TZXQudDtcbiAgICAgICAgZGVwcyA6IGRlcml2ZXIgbGlzdDtcbiAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sO1xuICAgICAgfVxuICAgICAgICAtPiAoJ2EsICdiKSB0XG5cbiAgbGV0IGRlcHMgKFQgdCkgPSB0LmRlcHNcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSA/YXR0cmlidXRlczooXyA9IFtdKSA/KGRlcHMgPSBbXSkgPyh1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlKVxuICAgICAgICBzcGVjIGdlbiA9XG4gICAgICBsZXQgYXJnX25hbWVzID0gU3RyaW5nLlNldC5vZl9saXN0IChBcmdzLm5hbWVzIHNwZWMpIGluXG4gICAgICBUIHsgc3BlYzsgZ2VuOyBhcmdfbmFtZXM7IGRlcHM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH1cblxuICAgIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cbiAgZW5kXG5cbiAgbGV0IG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWMgZ2VuID1cbiAgICBWMi5tYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjXG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci53aXRoX2xvY19hbmRfcGF0aCBnZW4pXG5cbiAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cblxuICBsZXQgbWVyZ2VfYWNjZXB0ZWRfYXJncyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IFQgdCA6OiByZXN0IC0+IGxvb3AgKFN0cmluZy5TZXQudW5pb24gYWNjIHQuYXJnX25hbWVzKSByZXN0XG4gICAgaW5cbiAgICBsb29wIFN0cmluZy5TZXQuZW1wdHkgbFxuXG4gIGxldCBjaGVja19hcmd1bWVudHMgbmFtZSBnZW5lcmF0b3JzIChhcmdzIDogKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QpID1cbiAgICBsZXQgZW1wdHlfbGFiZWxfZXJyb3IgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IGxhYmVsIHRoZW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgYXJndW1lbnRzIG11c3QgYmUgbGFiZWxsZWRcIilcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yID1cbiAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgKExpc3QuZmluZF9hX2R1cCBhcmdzIH5jb21wYXJlOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuICAgICAgICB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGFyZ3VtZW50IGxhYmVsbGVkICclcycgYXBwZWFycyBtb3JlIHRoYW4gb25jZVwiXG4gICAgICAgICAgICBsYWJlbClcbiAgICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgaW5cbiAgICBsZXQgYWNjZXB0ZWRfYXJncyA9IG1lcmdlX2FjY2VwdGVkX2FyZ3MgZ2VuZXJhdG9ycyBpblxuICAgIGxldCB1bmFjY2VwdGVkX2FyZ3VtZW50ID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLlNldC5tZW0gbGFiZWwgYWNjZXB0ZWRfYXJncykgdGhlblxuICAgICAgICAgICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKFN0cmluZy5TZXQuZWxlbWVudHMgYWNjZXB0ZWRfYXJncykgbGFiZWxcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yICclcycgZG9lc24ndCBhY2NlcHQgYXJndW1lbnQgXFxcbiAgICAgICAgICAgICAgICAgICclcyclc1wiXG4gICAgICAgICAgICAgICAgIG5hbWUgbGFiZWwgc3BlbGxjaGVja19tc2cpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBlbXB0eV9sYWJlbF9lcnJvciBAIGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciBAIHVuYWNjZXB0ZWRfYXJndW1lbnRcbiAgICBpblxuICAgIGlmIExpc3QubGVuZ3RoIGVycm9ycyA9IDAgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yc1xuXG4gIGxldCBhcHBseSAoVCB0KSB+bmFtZTpfIH5jdHh0IHggYXJncyA9IEFyZ3MuYXBwbHkgdC5zcGVjIGFyZ3MgKHQuZ2VuIH5jdHh0IHgpXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSAobmFtZSwgZ2VuZXJhdG9ycywgYXJncykgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGNoZWNrX2FyZ3VtZW50cyBuYW1lLnR4dCBnZW5lcmF0b3JzIGFyZ3MgPj58IGZ1biAoKSAtPlxuICAgIExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgaXRlbXMgPSBhcHBseSAoVCB0KSB+bmFtZTpuYW1lLnR4dCB+Y3R4dCBlbnRyeSBhcmdzO1xuICAgICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzID0gdC51bnVzZWRfY29kZV93YXJuaW5ncztcbiAgICAgICAgfSlcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IGdlbmVyYXRvcnMgZXh0X3RvX2l0ZW0gPVxuICAgIGxldCBsID0gTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooYXBwbHlfYWxsIH5jdHh0IGVudHJ5KSBpblxuICAgIGxldCBsMSwgbGVyciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uIE9rIGUgLT4gTGVmdCBlIHwgRXJyb3IgZSAtPiBSaWdodCBlKSBsXG4gICAgaW5cbiAgICBsZXQgbGVyciA9XG4gICAgICBMaXN0LmNvbmNhdCBsZXJyXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGVyciAtPiBleHRfdG9faXRlbSB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgIGluXG4gICAgTGlzdC5jb25jYXQgbDEgQCBbIHsgaXRlbXMgPSBsZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH0gXVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIG1vZHVsZSBBY3R1YWxfZGVyaXZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBzdHJfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZXh0ZW5zaW9uIDpcbiAgICAgICAgKGxvYzpMb2NhdGlvbi50IC0+IHBhdGg6c3RyaW5nIC0+IGNvcmVfdHlwZSAtPiBleHByZXNzaW9uKSBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQWxpYXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdHJfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlIGtpbmQgPSBTdHIgfCBTaWdcblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBraW5kIDoga2luZDtcbiAgICAgIGdldCA6IEFjdHVhbF9kZXJpdmVyLnQgLT4gKCdhLCAnYikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZ2V0X3NldCA6IEFsaWFzLnQgLT4gc3RyaW5nIGxpc3Q7XG4gICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcImV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwibW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIGV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIG1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gQWN0dWFsX2Rlcml2ZXIgb2YgQWN0dWFsX2Rlcml2ZXIudCB8IEFsaWFzIG9mIEFsaWFzLnRcbiAgdHlwZSBQcHhfZGVyaXZlcnMuZGVyaXZlciArPSBUIG9mIHRcblxuICBsZXQgZGVyaXZlcnMgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoUHB4X2Rlcml2ZXJzLmRlcml2ZXJzICgpKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgVCB0IC0+IFNvbWUgKG5hbWUsIHQpXG4gICAgICB8IF8gLT4gTm9uZSlcblxuICBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBvZiBzdHJpbmdcblxuICBsZXQgcmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIGxldCByZWMgbG9vcCBuYW1lIGNvbGxlY3RlZCA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0cyBjb2xsZWN0ZWQgfmY6KGZ1biAoZCA6IEFjdHVhbF9kZXJpdmVyLnQpIC0+XG4gICAgICAgICAgICBTdHJpbmcuZXF1YWwgZC5uYW1lIG5hbWUpXG4gICAgICB0aGVuIGNvbGxlY3RlZFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGRydikpIC0+IGRydiA6OiBjb2xsZWN0ZWRcbiAgICAgICAgfCBTb21lIChUIChBbGlhcyBhbGlhcykpIC0+XG4gICAgICAgICAgICBsZXQgc2V0ID0gZmllbGQuZ2V0X3NldCBhbGlhcyBpblxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHNldCB+aW5pdDpjb2xsZWN0ZWQgfmY6bG9vcFxuICAgICAgICB8IF8gLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIG5hbWUgW10pXG5cbiAgbGV0IHJlc29sdmVfaW50ZXJuYWwgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIExpc3QubWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBuYW1lKSB+ZjooZnVuIGRydiAtPlxuICAgICAgICBtYXRjaCBmaWVsZC5nZXQgZHJ2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgICAgIHwgU29tZSBnIC0+IChkcnYubmFtZSwgZykpXG5cbiAgbGV0IHN1cHBvcnRlZF9mb3IgZmllbGQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChkZXJpdmVycyAoKSkgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgXykgLT5cbiAgICAgICAgbWF0Y2ggcmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgfCBfIC0+IFN0cmluZy5TZXQuYWRkIG5hbWUgYWNjXG4gICAgICAgIHwgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgXyAtPiBhY2MpXG4gICAgfD4gU3RyaW5nLlNldC5lbGVtZW50c1xuXG4gIGxldCBub3Rfc3VwcG9ydGVkIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSA/KHNwZWxsY2hlY2sgPSB0cnVlKSBuYW1lID1cbiAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgaWYgc3BlbGxjaGVjayB0aGVuXG4gICAgICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoc3VwcG9ydGVkX2ZvciBmaWVsZCkgbmFtZS50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgIGVsc2UgXCJcIlxuICAgIGluXG4gICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICBcIlBweGxpYi5EZXJpdmluZzogJyVzJyBpcyBub3QgYSBzdXBwb3J0ZWQgJXMgZGVyaXZpbmcgZ2VuZXJhdG9yJXNcIlxuICAgICAgbmFtZS50eHQgZmllbGQubmFtZSBzcGVsbGNoZWNrX21zZ1xuXG4gIGxldCByZXNvbHZlIGZpZWxkIG5hbWUgPVxuICAgIHRyeSBPayAocmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lLnR4dClcbiAgICB3aXRoIE5vdF9zdXBwb3J0ZWQgbmFtZScgLT5cbiAgICAgIEVycm9yIChub3Rfc3VwcG9ydGVkIGZpZWxkIH5zcGVsbGNoZWNrOihTdHJpbmcuZXF1YWwgbmFtZS50eHQgbmFtZScpIG5hbWUpXG5cbiAgbGV0IHJlc29sdmVfYWxsIGZpZWxkIGRlcml2ZXJzID1cbiAgICBsZXQgZGVyaXZlcnNfYW5kX2FyZ3MsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICAgKGZ1biAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRWl0aGVyLlJpZ2h0IChub3Rfc3VwcG9ydGVkIGZpZWxkIG5hbWUpXG4gICAgICAgICAgfCBTb21lIChUIF8pIC0+IChcbiAgICAgICAgICAgICAgKCogSXQncyBvbmUgb2Ygb3VycywgcGFyc2UgdGhlIGFyZ3VtZW50cyBub3cuIFdlIGNhbid0IGRvIGl0IGJlZm9yZSBzaW5jZVxuICAgICAgICAgICAgICAgICBwcHhfZGVyaXZpbmcgdXNlcyBhIGRpZmZlcmVudCBzeW50YXggZm9yIGFyZ3VtZW50cy4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgICAgIHwgQXJncyBsIC0+IEVpdGhlci5MZWZ0IChTb21lIChuYW1lLCBsKSlcbiAgICAgICAgICAgICAgfCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+XG4gICAgICAgICAgICAgICAgICBFaXRoZXIuUmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYyBcIlBweGxpYi5EZXJpdmluZzogJXNcIiBtc2cpKVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICgqIEl0J3Mgbm90IG9uZSBvZiBvdXJzLCBpZ25vcmUgaXQuICopXG4gICAgICAgICAgICAgIEVpdGhlci5MZWZ0IE5vbmUpXG4gICAgICAgIGRlcml2ZXJzXG4gICAgICB8PiBmdW4gKGwxLCBsMikgLT4gKExpc3QuZmlsdGVyX29wdCBsMSwgbDIpXG4gICAgaW5cbiAgICAoKiBTZXQgb2YgYWN0dWFsIGRlcml2ZXIgbmFtZXMgKilcbiAgICBsZXQgc2VlbiA9IEhhc2h0YmwuY3JlYXRlIDE2IGluXG4gICAgbGV0IHJlc3VsdCwgZGVwX2Vycm9ycyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+aW5pdDooW10sIFtdKSBkZXJpdmVyc19hbmRfYXJnc1xuICAgICAgICB+ZjooZnVuIChyZXN1bHQsIGVycm9ycykgKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzb2x2ZSBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT4gKHJlc3VsdCwgZXJyb3JzIEAgWyBlIF0pXG4gICAgICAgICAgfCBPayBuYW1lZF9nZW5lcmF0b3JzIC0+XG4gICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIG5hbWVkX2dlbmVyYXRvcnNcbiAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGFjdHVhbF9kZXJpdmVyX25hbWUsIGdlbikgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGR1cF9lcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMuZmFpbF9vbl9kdXBsaWNhdGVfZGVyaXZlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIEhhc2h0YmwubWVtIHNlZW4gYWN0dWFsX2Rlcml2ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGFwcGVhcnMgdHdpY2VcIiBhY3R1YWxfZGVyaXZlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKEdlbmVyYXRvci5kZXBzIGdlbikgfmY6KGZ1biBkZXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBkZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBfbmFtZSA9IGRydi5uYW1lIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEhhc2h0YmwubWVtIHNlZW4gZGVwX25hbWUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgaXMgbmVlZGVkIGZvciAlcywgeW91IG5lZWQgdG8gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGl0IGJlZm9yZSBpbiB0aGUgbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwX25hbWUgbmFtZS50eHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCBzZWVuIH5rZXk6YWN0dWFsX2Rlcml2ZXJfbmFtZSB+ZGF0YTooKTtcbiAgICAgICAgICAgICAgICAgICAgZHVwX2Vycm9yIEAgbF9lcnIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggcmVzdWx0IEAgWyAobmFtZSwgTGlzdC5tYXAgbmFtZWRfZ2VuZXJhdG9ycyB+ZjpzbmQsIGFyZ3MpIF0sXG4gICAgICAgICAgICAgICAgZXJyb3JzIEAgbF9lcnIgKSlcbiAgICBpblxuICAgIChyZXN1bHQsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyBAIGRlcF9lcnJvcnMpXG5cbiAgbGV0IGFkZCA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uID9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvbiA/c2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9leHRlbnNpb24gbmFtZSA9XG4gICAgbGV0IGFjdHVhbF9kZXJpdmVyIDogQWN0dWFsX2Rlcml2ZXIudCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIGV4dGVuc2lvbjtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBY3R1YWxfZGVyaXZlciBhY3R1YWxfZGVyaXZlcikpO1xuICAgIChtYXRjaCBleHRlbnNpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCBleHRlbnNpb24gPVxuICAgICAgICAgIEV4dGVuc2lvbi5kZWNsYXJlIG5hbWUgRXhwcmVzc2lvbiBBc3RfcGF0dGVybi4ocHR5cCBfXykgZlxuICAgICAgICBpblxuICAgICAgICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAoXCJQcHhsaWIuRGVyaXZpbmcuXCIgXiBuYW1lKVxuICAgICAgICAgIH5ydWxlczpbIENvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBleHRlbnNpb24gXSk7XG4gICAgbmFtZVxuXG4gIGxldCBhZGRfYWxpYXMgbmFtZSA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uXG4gICAgICA/c3RyX21vZHVsZV90eXBlX2RlY2wgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvblxuICAgICAgP3NpZ19tb2R1bGVfdHlwZV9kZWNsIHNldCA9XG4gICAgbGV0IGFsaWFzIDogQWxpYXMudCA9XG4gICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gTm9uZSAtPiBzZXQgfCBTb21lIHNldCAtPiBzZXQgaW5cbiAgICAgIHtcbiAgICAgICAgc3RyX3R5cGVfZGVjbCA9IGdldCBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQgPSBnZXQgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uID0gZ2V0IHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsID0gZ2V0IHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dCA9IGdldCBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb24gPSBnZXQgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWxpYXMgYWxpYXMpKTtcbiAgICBuYW1lXG5lbmRcblxubGV0IGFkZCA9IERlcml2ZXIuYWRkXG5sZXQgYWRkX2FsaWFzID0gRGVyaXZlci5hZGRfYWxpYXNcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBbQEBkZXJpdmluZyBdIHBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgaW52YWxpZF93aXRoIH5sb2MgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcImludmFsaWQgW0BAZGVyaXZpbmcgXSBhdHRyaWJ1dGUgc3ludGF4XCJcblxubGV0IGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCA9XG4gIG1hdGNoIExvbmdpZGVudC5mbGF0dGVuX2V4biBpZCB3aXRoXG4gIHwgbCAtPiB7IGxvYzsgdHh0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIGwgfVxuICB8IGV4Y2VwdGlvbiBfIC0+IGludmFsaWRfd2l0aCB+bG9jXG5cbmV4Y2VwdGlvbiBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBwYXJzZV9hcmd1bWVudHMgbCA9XG4gIHRyeVxuICAgIEFyZ3NcbiAgICAgIChtYXRjaCBsIHdpdGhcbiAgICAgIHwgWyAoTm9sYWJlbCwgZSkgXSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgLT5cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGlkLCBleHByKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IExpZGVudCBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheCAoaWQubG9jLCBcInNpbXBsZSBpZGVudGlmaWVyIGV4cGVjdGVkXCIpKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIChuYW1lLCBleHByKSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICggZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICAgICAgIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IG9yIHJlY29yZCBleHBlY3RlZFwiICkpKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbCB+ZjooZnVuIChsYWJlbCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgICAgICAgICAgICB8IExhYmVsbGVkIHMgLT4gKHMsIGV4cHIpXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAgICAgKGV4cHIucGV4cF9sb2MsIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IGV4cGVjdGVkXCIpKSkpXG4gIHdpdGggVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPiBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpXG5cbmxldCBta19kZXJpdmluZ19hdHRyIGNvbnRleHQgfnByZWZpeCB+c3VmZml4ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICAocHJlZml4IF4gXCJkZXJpdmluZ1wiIF4gc3VmZml4KVxuICAgIGNvbnRleHRcbiAgICBBc3RfcGF0dGVybi4oXG4gICAgICBsZXQgZ2VuZXJhdG9yX25hbWUgKCkgPVxuICAgICAgICBtYXAnIChwZXhwX2lkZW50IF9fKSB+ZjooZnVuIGxvYyBmIGlkIC0+XG4gICAgICAgICAgICBmIChnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3IgKCkgPVxuICAgICAgICBtYXAgKGdlbmVyYXRvcl9uYW1lICgpKSB+ZjooZnVuIGYgeCAtPiBmICh4LCBBcmdzIFtdKSlcbiAgICAgICAgfHx8IHBhY2syXG4gICAgICAgICAgICAgIChwZXhwX2FwcGx5IChnZW5lcmF0b3JfbmFtZSAoKSlcbiAgICAgICAgICAgICAgICAgKG1hcDEgKG1hbnkgX18pIH5mOnBhcnNlX2FyZ3VtZW50cykpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvcnMgPVxuICAgICAgICBwZXhwX3R1cGxlIChtYW55IChnZW5lcmF0b3IgKCkpKVxuICAgICAgICB8fHwgbWFwIChnZW5lcmF0b3IgKCkpIH5mOihmdW4gZiB4IC0+IGYgWyB4IF0pXG4gICAgICBpblxuICAgICAgcHN0ciAocHN0cl9ldmFsIGdlbmVyYXRvcnMgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFVudXNlZCB3YXJuaW5nIHN0dWZmICsgbG9jYXRpb25zIGNoZWNrIHNpbGVuY2luZyAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncyA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBzdHJpbmcgPVxuICAgIExpc3Quc29ydCB3YXJuaW5ncyB+Y21wOkludC5jb21wYXJlXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB3YXJuaW5nIC0+IFwiLVwiIF4gSW50LnRvX3N0cmluZyB3YXJuaW5nKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiXG4gIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwud2FybmluZ1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzdHJpbmcpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlubGluZV9kb2NfYXR0ciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwuZG9jXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIFwiQGlubGluZVwiKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbigqIHdyYXAgYSBzdHJ1Y3R1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG1vZF9zdHJ1Y3R1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzdHJfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzdHJ1Y3R1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zdHJdICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc3QgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZiBrZWVwX3czMl9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gKFtdLCBzdClcbiAgICBlbHNlIGlmIG5vdCAhZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSB0aGVuXG4gICAgICAoW10sIElnbm9yZV91bnVzZWRfd2FybmluZy5hZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzI3N0cnVjdHVyZSBzdClcbiAgICBlbHNlIChbIDMyIF0sIHN0KVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgfHwgbm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3N0cnVjdHVyZSBzdCBmYWxzZSlcbiAgICB0aGVuICh3YXJuaW5ncywgc3QpXG4gICAgZWxzZSAoNjAgOjogd2FybmluZ3MsIHN0KVxuICBpblxuICBsZXQgd3JhcCwgc3QgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc3QpXG4gICAgZWxzZSAodHJ1ZSwgcHN0cl9hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHN0KVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCBlbHNlIHN0XG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc3RyXSBhYm92ZSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiB3cmFwIGEgc2lnbmF0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtdHlfc2lnbmF0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc2lnX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc2lnbmF0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc2lnXSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHNnID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZiBrZWVwX3czMl9pbnRmICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gW10gZWxzZSBbIDMyIF1cbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW50ZiAoKVxuICAgICAgfHwgKG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzaWduYXR1cmUgc2cgZmFsc2UpKVxuICAgICAgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICB0aGVuIHdhcm5pbmdzXG4gICAgZWxzZSA2MCA6OiB3YXJuaW5nc1xuICBpblxuICBsZXQgd3JhcCwgc2cgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc2cpXG4gICAgZWxzZSAodHJ1ZSwgcHNpZ19hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHNnKVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zaWcgfmxvYyB+aGlkZSBzZyBlbHNlIHNnXG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc2lnXSBhYm92ZSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE1haW4gZXhwYW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCB0eXBlc191c2VkX2J5X2Rlcml2aW5nICh0ZHMgOiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIDogc3RydWN0dXJlX2l0ZW0gbGlzdCA9XG4gIGlmIGtlZXBfdzMyX2ltcGwgKCkgdGhlbiBbXVxuICBlbHNlXG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgbGV0IHR5cCA9IENvbW1vbi5jb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCBpblxuICAgICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICAgIHBzdHJfdmFsdWUgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICBbXG4gICAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYylcbiAgICAgICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICAgICAgKHBleHBfZnVuIH5sb2MgTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAgICAgICAgKHBwYXRfY29uc3RyYWludCB+bG9jIChwcGF0X2FueSB+bG9jKSB0eXApXG4gICAgICAgICAgICAgICAgICAgKGV1bml0IH5sb2MpKTtcbiAgICAgICAgICBdKVxuXG5sZXQgbWVyZ2VfZ2VuZXJhdG9ycyBmaWVsZCBsID1cbiAgTGlzdC5maWx0ZXJfbWFwIGwgfmY6KGZ1biB4IC0+IHgpIHw+IExpc3QuY29uY2F0IHw+IERlcml2ZXIucmVzb2x2ZV9hbGwgZmllbGRcblxuKCogVGhpcyBmdW5jdGlvbiBtZXJnZXMgWydhIGRlcml2ZWRdIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLiBUaGlzXG4gICByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgYWRkIFtpbmNsdWRlIHN0cnVjdCAuLi4gZW5kXSB0byBkaXNhYmxlIHdhcm5pbmdzLiAqKVxubGV0IG1lcmdlX2Rlcml2ZWQgbGlzdHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgbGlzdHMgfmluaXQ6W10gfmY6KGZ1biBkZXJpdmVkIGFjYyAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgb3RoZXIgOjogb3RoZXJzXG4gICAgICAgIHdoZW4gQm9vbC5lcXVhbCBkZXJpdmVkLnVudXNlZF9jb2RlX3dhcm5pbmdzIG90aGVyLnVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICAgIC0+XG4gICAgICAgICAgeyBvdGhlciB3aXRoIGl0ZW1zID0gZGVyaXZlZC5pdGVtcyBAIG90aGVyLml0ZW1zIH0gOjogb3RoZXJzXG4gICAgICB8IF8gLT4gZGVyaXZlZCA6OiBhY2MpXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICAoKiBUT0RPOiBpbnN0ZWFkIG9mIGRpc2FibGluZyB0aGUgdW51c2VkIHdhcm5pbmcgZm9yIHR5cGVzIHRoZW1zZWx2ZXMsIHdlXG4gICAgIHNob3VsZCBhZGQgYSB0YWcgW0BAdW51c2VkXS4gKilcbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgdGRzIEAgbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBydWxlcyB+dHlwIH5leHBhbmRfc2lnIH5leHBhbmRfc3RyIH5ydWxlX3N0ciB+cnVsZV9zaWcgfnJ1bGVfc3RyX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3QgPVxuICBsZXQgcHJlZml4ID0gXCJwcHhsaWIuXCIgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHIgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJcIiB+cHJlZml4IHR5cCBpblxuICBsZXQgZGVyaXZpbmdfYXR0cl9leHBlY3QgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJfaW5saW5lXCIgfnByZWZpeCB0eXAgaW5cbiAgW1xuICAgIHJ1bGVfc2lnIGRlcml2aW5nX2F0dHIgZXhwYW5kX3NpZztcbiAgICBydWxlX3N0ciBkZXJpdmluZ19hdHRyIGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zdHJfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zaWdfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zaWc7XG4gIF1cblxubGV0IHJ1bGVzX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZGVjbHNcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZGVjbHNcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgcnVsZXNfdHlwZV9leHQgPVxuICBydWxlcyB+dHlwOlR5cGVfZXh0ZW5zaW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9leHRcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0XG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdFxuXG5sZXQgcnVsZXNfZXhjZXB0aW9uID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4Y2VwdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX2V4Y2VwdGlvblxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvblxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3RcblxubGV0IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOk1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgKCkgPVxuICBsZXQgcnVsZXMgPVxuICAgIFsgcnVsZXNfdHlwZV9kZWNsOyBydWxlc190eXBlX2V4dDsgcnVsZXNfZXhjZXB0aW9uOyBydWxlc19tb2R1bGVfdHlwZV9kZWNsIF1cbiAgICB8PiBMaXN0LmNvbmNhdFxuICBpblxuICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gXCJkZXJpdmluZ1wiIH5hbGlhc2VzOlsgXCJ0eXBlX2NvbnZcIiBdIH5ydWxlc1xuIiwib3BlbiBJbXBvcnRcblxudHlwZSBhZmZpeCA9XG4gIHwgUHJlZml4IG9mIHN0cmluZ1xuICB8IFN1ZmZpeCBvZiBzdHJpbmdcbiAgfCBQcmVmaXhTdWZmaXggb2Ygc3RyaW5nICogc3RyaW5nXG5cbmxldCBtYW5nbGUgPyhmaXhwb2ludCA9IFwidFwiKSBhZmZpeCBuYW1lID1cbiAgbWF0Y2ggKFN0cmluZy4obmFtZSA9IGZpeHBvaW50KSwgYWZmaXgpIHdpdGhcbiAgfCB0cnVlLCAoUHJlZml4IHggfCBTdWZmaXggeCkgLT4geFxuICB8IHRydWUsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIG5hbWUgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4IHggLT4geCBeIFwiX1wiIF4gbmFtZVxuICB8IGZhbHNlLCBTdWZmaXggeCAtPiBuYW1lIF4gXCJfXCIgXiB4XG5cbmxldCBtYW5nbGVfdHlwZV9kZWNsID9maXhwb2ludCBhZmZpeCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IG5hbWU7IF8gfTsgXyB9ID1cbiAgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBuYW1lXG5cbmxldCBtYW5nbGVfbGlkID9maXhwb2ludCBhZmZpeCBsaWQgPVxuICBtYXRjaCBsaWQgd2l0aFxuICB8IExpZGVudCBzIC0+IExpZGVudCAobWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExkb3QgKHAsIHMpIC0+IExkb3QgKHAsIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMYXBwbHkgXyAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5FeHBhbnNpb25faGVscGVycy5tYW5nbGVfbGlkOiBMYXBwbHlcIlxuXG5tb2R1bGUgUXVvdGVyID0gUXVvdGVyXG4iLCIoKiogU3RhbmRhcmQgbGlicmFyeSBmb3IgcHB4IHJld3JpdGVycyAqKVxuXG4oKiogW3BweGxpYl0gaXMgbWVhbnQgdG8gYmUgb3BlbmVkIGdsb2JhbGx5IGluIHlvdXIgUFBYIHNvdXJjZSBmaWxlcy5cblxuICAgIE9wZW5pbmcgaXQgY29tZXMgd2l0aCB0d28gYWR2YW50YWdlcy4gRmlyc3QsIGl0IHdpbGwgc2hhZG93IHRoZVxuICAgIFtjb21waWxlci1saWJzXSBtb2R1bGVzLiBUaGUgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMgYXJlIHVuc3RhYmxlIGFuZCBhcmVuJ3RcbiAgICBtZWFudCB0byBiZSB1c2VkLCBzbyBzaGFkb3dpbmcgdGhlbSBpcyBhIGdvb2QgcHJvdGVjdGlvbiBtZWNoYW5pc20uIEluIGNhc2VcbiAgICB5b3UgZG9uJ3Qgd2FudCB0byBvcGVuIFtQcHhsaWJdLCB5b3UgY2FuIG9wZW4gW09jYW1sX3NoYWRvd10gdG8gZ2V0IHRoZSBzYW1lXG4gICAgcHJvdGVjdGlvbi4gU2Vjb25kLCBpdCB3aWxsIGJyaW5nIHNldmVyYWwgbW9kdWxlcyBpbiBzY29wZSwgdGhhdCBhcmUgdXNlZnVsXG4gICAgdG8gaGF2ZSB3aGVuIHdyaXRpbmcgYSByZXdyaXRlcjpcblxuICAgIC0gVGhlIG1haW4gW3BweGxpYl0gbW9kdWxlcywgc3VjaCBhcyBtb2R1bGVzIHRvIGhlbHAgbWFuaXB1bGF0ZSB0aGUgQVNUXG4gICAgICAoeyFBc3RfYnVpbGRlcn0sIHshQXN0X3BhdHRlcm59KSwgYW5kIGEgZmV3IGZ1bmN0aW9ucy5cbiAgICAtIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXMsIHN1Y2ggYXMgeyFBc3RfaGVscGVyfSBvciB7IVBwcmludGFzdH0sXG4gICAgLSBUaGUgd2hvbGUgQVNUIHR5cGVzIChieSBbaW5jbHVkaW5nXSB0aGUgeyFBc3R9IG1vZHVsZSkuXG5cbiAgICB7MSBUaGUgY29yZSBbcHB4bGliXSBlbnRyaWVzfSAqKVxuXG4oKiogezIgTWFuaXB1bGF0aW5nIHRoZSBBU1R9ICopXG5cbm1vZHVsZSBBc3RfYnVpbGRlciA9IEFzdF9idWlsZGVyXG5tb2R1bGUgQXN0X3BhdHRlcm4gPSBBc3RfcGF0dGVyblxubW9kdWxlIEFzdF90cmF2ZXJzZSA9IEFzdF90cmF2ZXJzZVxuXG4oKiogezIgQ29udGV4dC1mcmVlIHJld3JpdGluZ30gKilcblxubW9kdWxlIENvbnRleHRfZnJlZSA9IENvbnRleHRfZnJlZVxubW9kdWxlIERlcml2aW5nID0gRGVyaXZpbmdcbm1vZHVsZSBFeHRlbnNpb24gPSBFeHRlbnNpb25cbm1vZHVsZSBFeHBhbnNpb25fY29udGV4dCA9IEV4cGFuc2lvbl9jb250ZXh0XG5tb2R1bGUgQ29kZV9wYXRoID0gQ29kZV9wYXRoXG5cbigqKiB7MiBPdGhlciBoZWxwZXJzfSAqKVxuXG5tb2R1bGUgRXhwYW5zaW9uX2hlbHBlcnMgPSBFeHBhbnNpb25faGVscGVyc1xubW9kdWxlIE1lcmxpbl9oZWxwZXJzID0gTWVybGluX2hlbHBlcnNcbm1vZHVsZSBTcGVsbGNoZWNrID0gU3BlbGxjaGVja1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5cbigqKiB7MiBEcml2ZXItcmVsYXRlZCBtb2R1bGVzfSAqKVxuXG5tb2R1bGUgRHJpdmVyID0gRHJpdmVyXG5tb2R1bGUgQ2FsbGVyX2lkID0gQ2FsbGVyX2lkXG5tb2R1bGUgQXN0X2lvID0gVXRpbHMuQXN0X2lvLlJlYWRfYmluXG5cbigqKiB7MiBDaGVja3N9ICopXG5cbm1vZHVsZSBBdHRyaWJ1dGUgPSBBdHRyaWJ1dGVcbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzXG5cbigqKiB7MiBDb21tb24gaGVscGVyIGZ1bmN0aW9uc30gKilcblxuaW5jbHVkZSBDb21tb25cblxuKCoqIHsxIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXN9XG5cbiAgICBFeHBvc2Ugc29tZSBtb2R1bGVzIGZyb20geyFQcHhsaWJfYXN0fS4gKilcblxubW9kdWxlIEFzdCA9IFBweGxpYl9hc3QuQXN0XG5tb2R1bGUgQXN0X2hlbHBlciA9IFBweGxpYl9hc3QuQXN0X2hlbHBlclxubW9kdWxlIEFzdHR5cGVzID0gUHB4bGliX2FzdC5Bc3R0eXBlc1xubW9kdWxlIFBhcnNlID0gUHB4bGliX2FzdC5QYXJzZVxubW9kdWxlIFBhcnNldHJlZSA9IFBweGxpYl9hc3QuUGFyc2V0cmVlXG5tb2R1bGUgUHByaW50YXN0ID0gUHB4bGliX2FzdC5QcHJpbnRhc3Rcbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBMb2MgPSBMb2NcblxuKCoqIHsxIFRoZSB3aG9sZSBBU1QgdHlwZXN9ICopXG5cbmluY2x1ZGUgQXN0XG4oKiogSW5jbHVkZSBhbGwgdGhlIEFzdCBkZWZpbml0aW9ucyBzaW5jZSB3ZSBuZWVkIHRoZW0gaW4gZXZlcnkgc2luZ2xlIHBweFxuXG4gICAgQGNsb3NlZCAqKVxuXG4oKiogTWFrZSBzdXJlIGNvZGUgdXNpbmcgUHB4bGliIGRvZXNuJ3QgcmVmZXIgdG8gY29tcGlsZXItbGlicyB3aXRob3V0IGJlaW5nXG4gICAgZXhwbGljaXQgYWJvdXQgaXQ6XG5cbiAgICBAY2xvc2VkICopXG5pbmNsdWRlIHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgb3BlbiBPY2FtbF9zaGFkb3dcblxuICBpbmNsdWRlIChcbiAgICBPY2FtbF9zaGFkb3cgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgT2NhbWxfc2hhZG93XG4gICAgICBlbmRcbiAgICAgIHdpdGggbW9kdWxlIEFzdF9oZWxwZXIgOj0gQXN0X2hlbHBlclxuICAgICAgd2l0aCBtb2R1bGUgQXN0dHlwZXMgOj0gQXN0dHlwZXNcbiAgICAgIHdpdGggbW9kdWxlIERvY3N0cmluZ3MgOj0gRG9jc3RyaW5nc1xuICAgICAgd2l0aCBtb2R1bGUgSWRlbnRpZmlhYmxlIDo9IElkZW50aWZpYWJsZVxuICAgICAgd2l0aCBtb2R1bGUgTGV4ZXIgOj0gTGV4ZXJcbiAgICAgIHdpdGggbW9kdWxlIExvY2F0aW9uIDo9IExvY2F0aW9uXG4gICAgICB3aXRoIG1vZHVsZSBMb25naWRlbnQgOj0gTG9uZ2lkZW50XG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZSA6PSBQYXJzZVxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2V0cmVlIDo9IFBhcnNldHJlZVxuICAgICAgd2l0aCBtb2R1bGUgUHByaW50YXN0IDo9IFBwcmludGFzdFxuICAgICAgd2l0aCBtb2R1bGUgU3ludGF4ZXJyIDo9IFN5bnRheGVycilcbmVuZFxuXG4oKiovKiopXG5cbigqIEZvciB0ZXN0cyBhbmQgUHB4X2NvcmUgY29tcGF0aWJpbGl0eSBsYXllciAqKVxubW9kdWxlIFBweGxpYl9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb21tb24gPSBDb21tb25cbiAgbW9kdWxlIE5hbWUgPSBOYW1lXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIFBweGxpYlxuXG5sZXQgZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2RlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKGFsdF9vcHRpb24gKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkgbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfZXF1YWwgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9jb21wYXJlID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF95b2pzb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2lmID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9pZlwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBvcGFxdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInlvanNvbi5vcGFxdWVcIiBBdHRyaWJ1dGUuQ29udGV4dC5jb3JlX3R5cGUgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSAoKVxuOztcblxubGV0IG9wdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ub3B0aW9uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC50eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgeW9qc29uX2tleSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ua2V5XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5ydGFnXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGludmFsaWRfYXR0cmlidXRlIH5sb2MgYXR0ciBkZXNjcmlwdGlvbiA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgIH5sb2NcbiAgICBcInBweF95b2pzb25fY29udjogW0Alc10gaXMgb25seSBhbGxvd2VkIG9uIHR5cGUgWyVzXS5cIlxuICAgIChBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICAgIGRlc2NyaXB0aW9uXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfY2QgeClcbiAgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgfmxvY1xuICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIGlubGluZSByZWNvcmRzLlwiXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfdGQgeClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzXG4gICAgICB3aGVuIExpc3QuZXhpc3RzIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgXyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gb25seSB3b3JrcyBvbiByZWNvcmRzLiBGb3IgaW5saW5lIFxcXG4gICAgICAgICByZWNvcmRzLCBkbzogdHlwZSB0ID0gQSBvZiB7IGEgOiBpbnQgfSBbQEBhbGxvd19leHRyYV9maWVsZHNdIHwgQiBbQEBAQGRlcml2aW5nIFxcXG4gICAgICAgICB5b2pzb25dXCJcbiAgICB8IF8gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIHJlY29yZHMuXCIpXG47O1xuXG5tb2R1bGUgUmVjb3JkX2ZpZWxkX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSBjb21tb24gPSBbIGB5b2pzb25fb3B0aW9uIG9mIGNvcmVfdHlwZSBdXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgYXR0ciBsZCB+ZiA9XG4gICAgT3B0aW9uLm1hcCAoQXR0cmlidXRlLmdldCBhdHRyIGxkKSB+ZjooZnVuIHggLT4gZiB4LCBBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfmxvYyBnZXR0ZXJzIGxkID1cbiAgICBsZXQgY29tbW9uX2dldHRlcnMgPVxuICAgICAgWyAoZnVuIGxkIC0+XG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLmdldCBvcHRpb24gbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgICAgICB8IFsldHlwZTogWyV0PyB0eV0gb3B0aW9uXSAtPiBTb21lIChgeW9qc29uX29wdGlvbiB0eSwgXCJbQHlvanNvbi5vcHRpb25dXCIpXG4gICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfYXR0cmlidXRlIH5sb2Mgb3B0aW9uIFwiXyBvcHRpb25cIilcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIF1cbiAgICBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyX21hcCAoZ2V0dGVycyBAIGNvbW1vbl9nZXR0ZXJzKSB+ZjooZnVuIGYgLT4gZiBsZCkgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyAodiwgXykgXSAtPiBTb21lIHZcbiAgICB8IF8gOjogXyA6OiBfIGFzIGF0dHJpYnV0ZXMgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiVGhlIGZvbGxvd2luZyBlbGVtZW50cyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOiAlc1wiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKExpc3QubWFwIGF0dHJpYnV0ZXMgfmY6c25kKSlcbiAgOztcblxuICBtb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkZWZhdWx0IG9mIGV4cHJlc3Npb25cbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGUgfmxvYyBbIGdldF9hdHRyaWJ1dGUgZGVmYXVsdCB+ZjooZnVuIGRlZmF1bHQgLT4gYGRlZmF1bHQgZGVmYXVsdCkgXSBsZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBvZiBbIGBub19hcmcgfCBgY29tcGFyZSB8IGBlcXVhbCB8IGB5b2pzb24gfCBgZnVuYyBvZiBleHByZXNzaW9uIF1cbiAgICAgIHwgYGRyb3BfaWYgb2YgZXhwcmVzc2lvblxuICAgICAgfCBga2VlcFxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+bG9jXG4gICAgICAgIFsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gYGRyb3BfZGVmYXVsdCBgbm9fYXJnXG4gICAgICAgICAgICB8IFNvbWUgZSAtPiBgZHJvcF9kZWZhdWx0IChgZnVuYyBlKSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9lcXVhbCB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGVxdWFsKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2NvbXBhcmUgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBjb21wYXJlKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X3lvanNvbiB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYHlvanNvbilcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfaWYgfmY6KGZ1biB4IC0+IGBkcm9wX2lmIHgpXG4gICAgICAgIF1cbiAgICAgICAgbGRcbiAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpga2VlcFxuICAgIDs7XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9XG4gIHsgbGFiZWwgOiBzdHJpbmdcbiAgOyBuYW1lX292ZXJyaWRlIDogc3RyaW5nIG9wdGlvblxuICB9XG5cbmxldCBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlID0geyBsYWJlbDsgbmFtZV9vdmVycmlkZSB9XG5cbmxldCBvZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoY2QgOiBQcHhsaWIuY29uc3RydWN0b3JfZGVjbGFyYXRpb24pID1cbiAgbGV0IGxhYmVsID0gY2QucGNkX25hbWUudHh0IGluXG4gIGxldCBuYW1lX292ZXJyaWRlID0gUHB4bGliLkF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3ZhcmlhbnRfbmFtZSBjZCBpblxuICBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlXG47O1xuXG5sZXQgbGFiZWwgdCA9IHQubGFiZWxcbmxldCBuYW1lIHQgPSBPcHRpb24udmFsdWUgdC5uYW1lX292ZXJyaWRlIH5kZWZhdWx0OnQubGFiZWxcbiIsIm9wZW4gQmFzZVxub3BlbiBQcHhsaWJcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEF0dHJzID0gQXR0cnNcblxubGV0ICggLS0+ICkgbGhzIHJocyA9IGNhc2Ugfmd1YXJkOk5vbmUgfmxocyB+cmhzXG5cbigqIFNpbXBsaWZpZXMgbWF0Y2ggY2FzZXMsIGZvciByZWFkYWJpbGl0eSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEl0J3Mgbm90IG9idmlvdXMgd2UgY2FuXG4gICBzdGljayB0aGlzIGluIHBweF9jb3JlLCBhcyAobWF0Y2ggZTEgd2l0aCBwIC0+IGUyKSBhbmQgKGxldCBwID0gZTEgaW4gZTIpIGFyZSBub3QgdHlwZWRcbiAgIGV4YWN0bHkgdGhlIHNhbWUgKHR5cGUgaW5mZXJlbmNlIGdvZXMgaW4gZGlmZmVyZW50IG9yZGVyLCBtZWFuaW5nIHR5cGUgZGlzYW1iaWd1YXRpb25cbiAgIGRpZmZlcnMpLiAqKVxubGV0IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzID1cbiAgbWF0Y2ggY2FzZXMgd2l0aFxuICB8IFsgeyBwY19saHM7IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzIH0gXSAtPlxuICAgIChtYXRjaCBwY19saHMsIGV4cHIgd2l0aFxuICAgICB8ICggeyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBpZGVudDsgXyB9OyBfIH1cbiAgICAgICAsIHsgcGV4cF9hdHRyaWJ1dGVzID0gW107IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgaWRlbnQnOyBfIH07IF8gfSApXG4gICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgaWRlbnQgaWRlbnQnIC0+IHBjX3Joc1xuICAgICB8IF8gLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwY19saHMgfmV4cHIgXSBwY19yaHMpXG4gIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlc1xuOztcblxubW9kdWxlIEZ1bl9vcl9tYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRnVuIG9mIGV4cHJlc3Npb25cbiAgICB8IE1hdGNoIG9mIGNhc2UgbGlzdFxuXG4gIGxldCBleHByIH5sb2MgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBmXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgY2FzZXNcbiAgOztcblxuICBsZXQgdW5yb2xsIH5sb2MgZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGVhcHBseSB+bG9jIGYgWyBlIF1cbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfbWF0Y2ggfmxvYyBlIGNhc2VzXG4gIDs7XG5cbiAgbGV0IG1hcF90bXBfdmFycyB+bG9jIHRzID1cbiAgICBsZXQgdmFycyA9IExpc3QubWFwaSB0cyB+ZjooZnVuIGkgXyAtPiBcInZcIiBeIEludC50b19zdHJpbmcgaSkgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgTGlzdC5tYXAyX2V4biB2YXJzIHRzIH5mOihmdW4gdmFyIHQgLT5cbiAgICAgICAgbGV0IGV4cHIgPSB1bnJvbGwgfmxvYyAoZXZhciB+bG9jIHZhcikgdCBpblxuICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIHZhcikgfmV4cHIpXG4gICAgaW5cbiAgICBiaW5kaW5ncywgTGlzdC5tYXAgdmFycyB+ZjoocHZhciB+bG9jKSwgTGlzdC5tYXAgdmFycyB+ZjooZXZhciB+bG9jKVxuICA7O1xuZW5kXG5cbigqIEEgcmVuYW1pbmcgaXMgYSBtYXBwaW5nIGZyb20gdHlwZSB2YXJpYWJsZSBuYW1lIHRvIHR5cGUgdmFyaWFibGUgbmFtZS5cbiAgIEluIGRlZmluaXRpb25zIHN1Y2ggYXM6XG5cbiAgIHR5cGUgJ2EgdCA9XG4gICB8IEEgOiA8dHlwZT4gLT4gJ2IgdFxuICAgfCBCIG9mICdhXG5cbiAgIHdlIGdlbmVyYXRlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkIGFmdGVyICdhLCBidXQgJ2EgaXMgbm90IGluXG4gICBzY29wZSBpbiA8dHlwZT4gd2hlbiBoYW5kbGluZyB0aGUgY29uc3RydWN0b3IgQSAoYmVjYXVzZSBBIGlzIGEgZ2FkdCBjb25zdHJ1Y3RvcikuXG4gICBJbnN0ZWFkIHRoZSB0eXBlIHZhcmlhYmxlcyBpbiBzY29wZSBhcmUgdGhlIG9uZXMgZGVmaW5lZCBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgQSxcbiAgIG5hbWVseSAnYi4gVGhlcmUgY291bGQgYmUgbGVzcyBvciBtb3JlIHR5cGUgdmFyaWFibGUgaW4gY2FzZXMgc3VjaCBhczpcblxuICAgdHlwZSBfIGxlc3MgPSBMZXNzIDogaW50IGxlc3NcbiAgIHR5cGUgXyBtb3JlID0gTW9yZSA6ICgnYSAqICdhKSBtb3JlXG5cbiAgIElmIGZvciBpbnN0YW5jZSwgPHR5cGU+IGlzIFsnYiAqICdjXSwgd2hlbiB3ZSBmaW5kICdiLCB3ZSB3aWxsIGxvb2sgZm9yIFsnYl0gaW4gdGhlXG4gICByZW5hbWluZyBhbmQgZmluZCBbJ2FdIChvbmx5IGluIHRoYXQgZ2FkdCBicmFuY2gsIGl0IGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlIGluIG90aGVyXG4gICBicmFuY2hlcyksIGF0IHdoaWNoIHBvaW50IHdlIGNhbiBjYWxsIHRoZSBwcmV2aW91c2x5IGJvdW5kIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWRcbiAgIGFmdGVyICdhLlxuICAgSWYgd2UgY2FuJ3QgZmluZCBhIHJlc3VsdGluZyBuYW1lLCBsaWtlIHdoZW4gbG9va2luZyB1cCBbJ2NdIGluIHRoZSByZW5hbWluZywgdGhlbiB3ZVxuICAgYXNzdW1lIHRoZSB2YXJpYWJsZSBpcyBleGlzdGVudGlhbGx5IHF1YW50aWZpZWQgYW5kIHRyZWF0IGl0IGFzIFtfXSAod2hpY2ggaXMgb2ssXG4gICBhc3N1bWluZyB0aGVyZSBhcmUgbm8gY29uc3RyYWludHMpLiAqKVxubW9kdWxlIFJlbmFtaW5nIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBpZGVudGl0eSA6IHRcbiAgdmFsIGFkZF91bml2ZXJzYWxseV9ib3VuZCA6IHQgLT4gc3RyaW5nIGxvYyAtPiB0XG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgdmFsIGJpbmRpbmdfa2luZCA6IHQgLT4gc3RyaW5nIC0+IGJpbmRpbmdfa2luZFxuICB2YWwgb2ZfZ2FkdCA6IHN0cmluZyBsaXN0IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVycm9yID0gc3RyaW5nIExvYy50XG4gIHR5cGUgdCA9IChzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnQgb3B0aW9uXG5cbiAgbGV0IGlkZW50aXR5ID0gTm9uZVxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIGxldCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgKHQgOiB0KSBuYW1lIDogdCA9XG4gICAgbGV0IG5hbWUgPSBuYW1lLnR4dCBpblxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG1hcCAtPiBTb21lIChNYXAuc2V0IH5rZXk6bmFtZSB+ZGF0YTooT2sgbmFtZSkgbWFwKVxuICA7O1xuXG4gIGxldCBiaW5kaW5nX2tpbmQgdCB2YXIgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YXJcbiAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAobWF0Y2ggTWFwLmZpbmQgbWFwIHZhciB3aXRoXG4gICAgICAgfCBOb25lIC0+IEV4aXN0ZW50aWFsbHlfYm91bmRcbiAgICAgICB8IFNvbWUgKE9rIHZhbHVlKSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YWx1ZVxuICAgICAgIHwgU29tZSAoRXJyb3IgeyBsb2M7IHR4dCB9KSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIiVzXCIgdHh0KVxuICA7O1xuXG4gICgqIFJldHVybiBhIG1hcCB0cmFuc2xhdGluZyB0eXBlIHZhcmlhYmxlcyBhcHBlYXJpbmcgaW4gdGhlIHJldHVybiB0eXBlIG9mIGEgR0FEVFxuICAgICBjb25zdHJ1Y3RvciB0byB0aGVpciBuYW1lIGluIHRoZSB0eXBlIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgIEZvciBpbnN0YW5jZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgKCdhLCAnYikgdCA9IFggOiAneCAqICd5IC0+ICgneCwgJ3kpIHRcbiAgICAgXX1cblxuICAgICB3aWxsIHByb2R1Y2U6XG5cbiAgICAge1tcbiAgICAgICBcInhcIiAtPiBPayBcImFcIlxuICAgICAgICAgICAgICAgIFwieVwiIC0+IE9rIFwiYlwiXG4gICAgIF19XG5cbiAgICAgSWYgYSB2YXJpYWJsZSBhcHBlYXJzIHR3aWNlIGluIHRoZSByZXR1cm4gdHlwZSBpdCB3aWxsIG1hcCB0byBbRXJyb3IgX10uIElmIGFcbiAgICAgdmFyaWFibGUgY2Fubm90IGJlIG1hcHBlZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgaXQgd2lsbCBtYXAgdG9cbiAgICAgW0Vycm9yXSAoZm9yIGluc3RhbmNlIFtBIDogJ2EgLT4gJ2EgbGlzdCB0XSkuXG5cbiAgICAgSXQgcmV0dXJucyBOb25lIG9uIHVzZXIgZXJyb3IsIHRvIGxldCB0aGUgdHlwZXIgZ2l2ZSB0aGUgZXJyb3IgbWVzc2FnZSAqKVxuICBsZXQgb2ZfZ2FkdCA9XG4gICAgKCogQWRkIGFsbCB0eXBlIHZhcmlhYmxlcyBvZiBhIHR5cGUgdG8gYSBtYXAuICopXG4gICAgbGV0IGFkZF90eXBldmFycyA9XG4gICAgICBvYmplY3RcbiAgICAgICAgaW5oZXJpdCBbKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSBtYXAgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIHsgbG9jID0gdHkucHR5cF9sb2NcbiAgICAgICAgICAgICAgOyB0eHQgPVxuICAgICAgICAgICAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IHZhcmlhYmxlIGlzIG5vdCBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YTooRXJyb3IgZXJyb3IpXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB0eSBtYXBcbiAgICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGF1eCBtYXAgdHBfbmFtZSB0cF9pbl9yZXR1cm5fdHlwZSA9XG4gICAgICBtYXRjaCB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgIGlmIE1hcC5tZW0gbWFwIHZhclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IHRwX2luX3JldHVybl90eXBlLnB0eXBfbG9jIGluXG4gICAgICAgICAgICBFcnJvciB7IGxvYzsgdHh0ID0gXCJwcHhfeW9qc29uX2NvbnY6IGR1cGxpY2F0ZSB2YXJpYWJsZVwiIH0pXG4gICAgICAgICAgZWxzZSBPayB0cF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhXG4gICAgICB8IF8gLT4gYWRkX3R5cGV2YXJzI2NvcmVfdHlwZSB0cF9pbl9yZXR1cm5fdHlwZSBtYXBcbiAgICBpblxuICAgIGZ1biB0cHMgY2QgLT5cbiAgICAgIG1hdGNoIGNkLnBjZF9yZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAobWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgIHwgUHR5cF9jb25zdHIgKF8sIHBhcmFtcykgLT5cbiAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggcGFyYW1zIDw+IExpc3QubGVuZ3RoIHRwc1xuICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgIChTdGRsaWIuTGlzdExhYmVscy5mb2xkX2xlZnQyXG4gICAgICAgICAgICAgICAgICB0cHNcbiAgICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZykpXG4gICAgICAgICAgICAgICAgICB+ZjphdXgpXG4gICAgICAgICB8IF8gLT4gTm9uZSlcbiAgOztcbmVuZFxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBQdHlwX3ZhciBfIC0+IFB0eXBfYW55XG4gICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbmxldCByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHggPVxuICBsZXQgcHJlZml4ID0gXCJyaWdpZF9cIiBpblxuICBpZiBTdHJpbmcuZXF1YWwgeCB0eXBlX25hbWUgfHwgU3RyaW5nLmlzX3ByZWZpeCB4IH5wcmVmaXhcbiAgdGhlbiBwcmVmaXggXiB4IF4gXCJfb2ZfdHlwZV9cIiBeIHR5cGVfbmFtZVxuICBlbHNlIHhcbjs7XG5cbmxldCBtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5ID1cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHMgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChMb2NhdGVkLmxpZGVudCB+bG9jOnR5LnB0eXBfbG9jIChyaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHMpLCBbXSlcbiAgICAgICAgICB8IGRlc2MgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgZGVzY1xuICAgICAgICBpblxuICAgICAgICB7IHR5IHdpdGggcHR5cF9kZXNjIH1cbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBxdWFudGlmaWVkIHR5cGUgWyAhICdhIC4uICd6IC4gKG1ha2VfbW9ub190eXBlIHQgKCdhIC4uICd6KSkgXSBvclxuICAgW3R5cGUgYSAuLiB6LiBtYWtlX21vbm9fdHlwZSB0IChhIC4uIHopXSB3aGVuIFt1c2VfcmlnaWRfdmFyaWFibGVzXSBpcyB0cnVlLlxuICAgQW5ub3RhdGlvbiBhcmUgbmVlZGVkIGZvciBub24gcmVndWxhciByZWN1cnNpdmUgZGF0YXR5cGVzIGFuZCBnYWR0IHdoZW4gdGhlIHJldHVybiB0eXBlXG4gICBvZiBjb25zdHJ1Y3RvcnMgYXJlIGNvbnN0cmFpbmVkLiBVbmZvcnR1bmF0ZWx5LCBwdXR0aW5nIHJpZ2lkIHZhcmlhYmxlcyBldmVyeXdoZXJlIGRvZXNcbiAgIG5vdCB3b3JrIGJlY2F1c2Ugb2YgY2VydGFpbnMgdHlwZXMgd2l0aCBjb25zdHJhaW50cy4gV2UgdGh1cyBvbmx5IHVzZSByaWdpZCB2YXJpYWJsZXNcbiAgIGZvciBzdW0gdHlwZXMsIHdoaWNoIGluY2x1ZGVzIGFsbCBHQURUcy4gKilcblxubGV0IHR2YXJzX29mX2NvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBzdHJpbmcgbGlzdCA9XG4gIGxldCB0dmFycyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBpZiBMaXN0Lm1lbSBhY2MgeCB+ZXF1YWw6U3RyaW5nLmVxdWFsIHRoZW4gYWNjIGVsc2UgeCA6OiBhY2NcbiAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB4IGFjY1xuICAgIGVuZFxuICBpblxuICBmdW4gdHlwIC0+IExpc3QucmV2ICh0dmFycyNjb3JlX3R5cGUgdHlwIFtdKVxuOztcblxubGV0IGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmdcbiAgICAgICgqIHBsYWNpbmcgYSBzdWl0YWJseSBwb2x5bW9ycGhpYyBvciByaWdpZCB0eXBlIGNvbnN0cmFpbnQgb24gdGhlIHBhdHRlcm4gb3IgYm9keSAqKVxuICAgICAgKGxvYyA6IExvY2F0aW9uLnQpXG4gICAgICAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICAgKHR5cCA6IGNvcmVfdHlwZSlcbiAgICAgIH4odHBzIDogc3RyaW5nIGxvYyBsaXN0KVxuICAgICAgfihmdW5jX25hbWUgOiBzdHJpbmcpXG4gICAgICAoYm9keSA6IGV4cHJlc3Npb24pXG4gID1cbiAgbGV0IHZhcnMgPSB0dmFyc19vZl9jb3JlX3R5cGUgdHlwIGluXG4gIGxldCBoYXNfdmFycyA9XG4gICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgXyA6OiBfIC0+IHRydWVcbiAgaW5cbiAgbGV0IHBhdCA9XG4gICAgbGV0IHBhdCA9IHB2YXIgfmxvYyBmdW5jX25hbWUgaW5cbiAgICBpZiBub3QgaGFzX3ZhcnNcbiAgICB0aGVuIHBhdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHZhcnMgPSBMaXN0Lm1hcCB+ZjooZnVuIHR4dCAtPiB7IHR4dDsgbG9jIH0pIHZhcnMgaW5cbiAgICAgIHBwYXRfY29uc3RyYWludCB+bG9jIHBhdCAocHR5cF9wb2x5IH5sb2MgdmFycyB0eXApKVxuICBpblxuICBsZXQgYm9keSA9XG4gICAgbGV0IHVzZV9yaWdpZF92YXJpYWJsZXMgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHVzZV9yaWdpZF92YXJpYWJsZXNcbiAgICB0aGVuIChcbiAgICAgIGxldCB0eXBlX25hbWUgPSB0ZC5wdHlwZV9uYW1lLnR4dCBpblxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIHRwc1xuICAgICAgICB+ZjooZnVuIHRwIGJvZHkgLT5cbiAgICAgICAgICBwZXhwX25ld3R5cGUgfmxvYyB7IHR4dCA9IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgdHAudHh0OyBsb2MgPSB0cC5sb2MgfSBib2R5KVxuICAgICAgICB+aW5pdDoocGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSAobWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgdHlwKSkpXG4gICAgZWxzZSBpZiBoYXNfdmFyc1xuICAgIHRoZW4gYm9keVxuICAgIGVsc2UgcGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSB0eXBcbiAgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQgfmV4cHI6Ym9keVxuOztcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgKG9iamVjdFxuICAgIGluaGVyaXQgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZSB3aXRoXG4gICAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCB+bWFya19hc19zZWVuOmZhbHNlIEF0dHJzLm9wYXF1ZSBjdHlwZSkgLT5cbiAgICAgICAgKClcbiAgICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+ICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG4gIGVuZClcbiAgI2dvXG4gICAgKClcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gdG8gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2ZfeW9qc29uX29mIH5sb2MgdCA9IFsldHlwZTogWyV0IHRdIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudF1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX3lvanNvbl9vZlxuXG4gIGxldCBta19zaWcgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9XG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKCggXiApIFwieW9qc29uX29mX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86KG1rX3R5cGUgdGQpXG4gICAgICAgICAgIH5wcmltOltdKSlcbiAgOztcbmVuZFxuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIGZyb20gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2Zfb2ZfeW9qc29uIH5sb2MgdCA9IFsldHlwZTogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50IC0+IFsldCB0XV1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX29mX3lvanNvblxuXG4gIGxldCBzaWdfb2ZfdGQgd2l0aF9wb2x5IHRkID1cbiAgICBsZXQgb2ZfeW9qc29uX3R5cGUgPSBta190eXBlIHRkIGluXG4gICAgbGV0IGxvYyA9IHsgdGQucHR5cGVfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IG9mX3lvanNvbl9pdGVtID1cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IHMgXiBcIl9vZl95b2pzb25cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgIH5wcmltOltdKVxuICAgIGluXG4gICAgbWF0Y2ggd2l0aF9wb2x5LCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUgd2l0aFxuICAgIHwgdHJ1ZSwgYFN1cmVseV9ub3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiU2lnX2dlbmVyYXRlX29mX3lvanNvbi5zaWdfb2ZfdGQ6IHlvanNvbl9wb2x5IGFubm90YXRpb24gYnV0IHR5cGUgaXMgc3VyZWx5IG5vdCBcXFxuICAgICAgICAgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCJcbiAgICB8IGZhbHNlLCAoYFN1cmVseV9ub3QgfCBgTWF5YmUpIC0+IFsgb2ZfeW9qc29uX2l0ZW0gXVxuICAgIHwgKHRydWUgfCBmYWxzZSksIGBEZWZpbml0ZWx5IHwgdHJ1ZSwgYE1heWJlIC0+XG4gICAgICBbIG9mX3lvanNvbl9pdGVtXG4gICAgICA7IHBzaWdfdmFsdWVcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gXCJfX1wiIF4gcyBeIFwiX29mX3lvanNvbl9fXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgICAgfnByaW06W10pXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IG1rX3NpZyB+cG9seSB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+Zjooc2lnX29mX3RkIHBvbHkpXG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgKCogSGFuZGxpbmcgb2YgcmVjb3JkIGRlZmF1bHRzICopXG5cbiAgbGV0IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZCB+ZjooZnVuIHMgLT4gXCJ5b2pzb25fb2ZfXCIgXiBzKSBhcmdzXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHlvanNvbl9vZl90eXBlXG4gICAgICAgICAgICB+KHR5cGV2YXJfaGFuZGxpbmcgOiBbIGBvayBvZiBSZW5hbWluZy50IHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIF0pXG4gICAgICAgICAgICB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgWyV0eXBlOiBfXSAtPiBGdW4gWyVleHByIGZ1biBfIC0+IGBTdHJpbmcgXCJfXCJdXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoIFsgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSBdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJXlvanNvbl9vZjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiXG4gICAgICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgICAgIChtYXRjaCBSZW5hbWluZy5iaW5kaW5nX2tpbmQgcmVuYW1pbmcgcGFybSB3aXRoXG4gICAgICAgICAgfCBVbml2ZXJzYWxseV9ib3VuZCBwYXJtIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyBbJXR5cGU6IF9dKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgKHlvanNvbl9vZl90eXBlX2NvbnN0clxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIGlkXG4gICAgICAgICAgIChMaXN0Lm1hcCBhcmdzIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApKSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4gX2YgLT5cbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX2Z1biBQcHhfeW9qc29uX2NvbnZfbGliLmlnbm9yZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfdmFyaWFudCB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW3lvanNvbl9vZl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KGZ1biB0cCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwdmFycywgZXZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IGluX2V4cHIgPSBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgZXZhcnNdXSBpblxuICAgIGxldCBleHByID0gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgaW5fZXhwciBpblxuICAgIHBwYXRfdHVwbGUgfmxvYyBwdmFycyAtLT4gZXhwclxuXG4gICgqIENvbnZlcnNpb24gb2YgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgeW9qc29uX29mX3ZhcmlhbnRcbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgKChsb2MsIHJvd19maWVsZHMpIDogTG9jYXRpb24udCAqIHJvd19maWVsZCBsaXN0KVxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGl0ZW0gcm93ID1cbiAgICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvdyBpblxuICAgICAgbWF0Y2ggcm93LnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIF1dXG4gICAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXV0gaW5cbiAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID0gTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nKSBhcmdzIGluXG4gICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSB+bG9jIChTb21lIHBhdHQpXG4gICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXVxuICAgICAgfCBSaW5oZXJpdCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgW10pOyBfIH0gLT5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpXG4gICAgICAgIC0tPiB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBbIFslZXhwciB2XSBdXG4gICAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SdGFnLyZcIlxuICAgICAgfCBSaW5oZXJpdCAoeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIF8gOjogXyk7IF8gfSBhcyB0eXApIC0+XG4gICAgICAgIGxldCBjYWxsID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHlwKSBpblxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYykgLS0+IFslZXhwciBbJWUgY2FsbF0gdl1cbiAgICAgIHwgUmluaGVyaXQgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SaW5oZXJpdC9ub24taWRcIlxuICAgICAgKCogaW1wb3NzaWJsZT8qKVxuICAgICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICAgIGluXG4gICAgTWF0Y2ggKExpc3QubWFwIH5mOml0ZW0gcm93X2ZpZWxkcylcblxuICAoKiBQb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzICopXG4gIGFuZCB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICgqIFNob3VsZCBiZSBpbXBvc3NpYmxlIGJlY2F1c2UgW3lvanNvbl9vZl9wb2x5XSBpcyBvbmx5IGNhbGxlZCBvbiBwb2x5bW9ycGhpYyByZWNvcmRcbiAgICAgICAgIGZpZWxkcyBhbmQgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbnMgY2FuJ3Qgb2NjdXIgaW4gdHlwZSBleHByZXNzaW9ucy4gKilcbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicG9seW1vcnBoaWMgdHlwZSBpbiBhIHR5cGUgZXhwcmVzc2lvblwiXG4gICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgICB+ZXhwcjpbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgICBpblxuICAgICAgbGV0IHJlbmFtaW5nID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgcGFybXMgfmluaXQ6cmVuYW1pbmcgfmY6UmVuYW1pbmcuYWRkX3VuaXZlcnNhbGx5X2JvdW5kXG4gICAgICBpblxuICAgICAgKG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICAgICBNYXRjaFxuICAgICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICAgICAgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiByZWNvcmQgdHlwZXMgKilcblxuICBsZXQgbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSA9XG4gICAgbGV0IHAgPSBMb2MubWFrZSAoTG9uZ2lkZW50LkxpZGVudCBuYW1lKSB+bG9jLCBwdmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgcGF0dCBAIFsgcCBdXG4gIDs7XG5cbiAgdHlwZSBpc19lbXB0eV9leHByID1cbiAgICB8IEluc3BlY3RfdmFsdWUgb2YgKGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcbiAgICB8IEluc3BlY3RfeW9qc29uIG9mIChjbnZfZXhwcjpleHByZXNzaW9uIC0+IGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcblxuICBsZXQgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eV9leHByIGtleSA9XG4gICAgbGV0IGxvYyA9IHsgdHAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgfCBGdW4gZXhwIC0+IGV4cFxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biBlbCAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBlbF0gbWF0Y2hpbmdzXV1cbiAgICBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGNudl9leHByXG4gICAgICB8IFNvbWUgeW9qc29uX29mIC0+IFslZXhwciBbJWUgeW9qc29uX29mXSBbJWUgY252X2V4cHJdXVxuICAgIGluXG4gICAgbGV0IGV4cHIgPVxuICAgICAgbGV0IHZfbmFtZSA9IFwidl9cIiBeIG5hbWUgaW5cbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBtYXRjaCBpc19lbXB0eV9leHByIHdpdGhcbiAgICAgICAgICAgIHwgSW5zcGVjdF92YWx1ZSBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIGxvYyAoZXZhciB+bG9jIHZfbmFtZSldXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXVxuICAgICAgICAgICAgfCBJbnNwZWN0X3lvanNvbiBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIH5jbnZfZXhwciBsb2MgWyVleHByIGFyZ11dXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1dXG4gICAgICAgIGluXG4gICAgICAgIFslZSBleHByXV1cbiAgICBpblxuICAgIHBhdHQsIGV4cHJcbiAgOztcblxuICBsZXQgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+bG9jIH53aHkgdHAgPVxuICAgIGxldCBkaXNhbGxvd192YXJpYWJsZXMgPVxuICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFB0eXBfdmFyIHYgLT5cbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBjb250YWlucyBcXFxuICAgICAgICAgICAgICAgICBhIHR5cGUgdmFyaWFibGU6ICclcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb21wYXJpc29uIGlzIG5vdCBhdmFpYWJsZSBmb3IgdHlwZSB2YXJpYWJsZXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgIHZcbiAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBsZXQgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IGZ1biBfIC0+ICgpXG4gICAgICB8IGBSZWN1cnNpdmUgdHlwZXNfYmVpbmdfZGVmaW5lZCAtPlxuICAgICAgICBsZXQgaXRlciA9XG4gICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IGxvYyA9IF87IHR4dCA9IExpZGVudCBzIH0sIF8pIGFzIHQgLT5cbiAgICAgICAgICAgICAgICBpZiBTZXQubWVtIHR5cGVzX2JlaW5nX2RlZmluZWQgc1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBcXFxuICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSB0eXBlIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgcmVjdXJzaXZlIGJsb2NrOiAlcy5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBub3Qgc3VwcG9ydGVkLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGRpc2FsbG93X3ZhcmlhYmxlcyB0cDtcbiAgICBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgdHBcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgaG93XG4gICAgICAgIH5yZW5hbWluZ1xuICAgICAgICBwYXR0XG4gICAgICAgIGV4cHJcbiAgICAgICAgbmFtZVxuICAgICAgICB0cFxuICAgICAgICA/eW9qc29uX29mXG4gICAgICAgIGRlZmF1bHRcbiAgICAgICAga2V5XG4gICAgPVxuICAgIGxldCBpc19lbXB0eSA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgeW9qc29uIC0+XG4gICAgICAgIEluc3BlY3RfeW9qc29uXG4gICAgICAgICAgKGZ1biB+Y252X2V4cHIgbG9jIHlvanNvbl9leHByIC0+XG4gICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgKFslZSBjbnZfZXhwcl0gWyVlIGRlZmF1bHRdKSBbJWUgeW9qc29uX2V4cHJdXSlcbiAgICAgIHwgKGBub19hcmcgfCBgZnVuYyBfIHwgYGNvbXBhcmUgfCBgZXF1YWwpIGFzIGhvdyAtPlxuICAgICAgICBsZXQgZXF1YWxpdHlfZiBsb2MgPVxuICAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICAgfCBgbm9fYXJnIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFtAb2NhbWwucHB3YXJuaW5nXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHRdIGlzIGRlcHJlY2F0ZWQ6IFxcXG4gICAgICAgICAgICAgICAgIHBsZWFzZSB1c2Ugb25lIG9mOlxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0IGZdIGFuZCBnaXZlIGFuIFxcXG4gICAgICAgICAgICAgICAgIGV4cGxpY2l0IGVxdWFsaXR5IGZ1bmN0aW9uIChbZiA9IFxcXG4gICAgICAgICAgICAgICAgIFBvbHkuKD0pXSBjb3JyZXNwb25kcyB0byB0aGUgb2xkIFxcXG4gICAgICAgICAgICAgICAgIGJlaGF2aW9yKVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslY29tcGFyZV1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbF0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVlcXVhbF1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIGlmIHlvdSBcXFxuICAgICAgICAgICAgICAgICB3YW50IHRvIGNvbXBhcmUgdGhlIHlvanNvbiBcXFxuICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbnNcXG5cIl1dXG4gICAgICAgICAgfCBgZnVuYyBmIC0+IGZcbiAgICAgICAgICB8IGBjb21wYXJlIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGNvbXBhcmVcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWNvbXBhcmUuZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICAgIHwgYGVxdWFsIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGVxdWFsXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVlcXVhbDogWyV0IHRwXV1dXG4gICAgICAgIGluXG4gICAgICAgIEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIGVxdWFsaXR5X2YgbG9jXSBbJWUgZGVmYXVsdF0gWyVlIGV4cHJdXSlcbiAgICBpblxuICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHkga2V5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IH50eXBlc19iZWluZ19kZWZpbmVkIH5yZW5hbWluZyBsb2MgZmxkcyB+d3JhcF9leHByID1cbiAgICBsZXQgY29sbCAoKHBhdHQgOiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCksIGV4cHIpIGxkID1cbiAgICAgIGxldCBuYW1lID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IGxkLnBsZF9uYW1lLmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuWW9qc29uX29mLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgIHwgYHlvanNvbl9vcHRpb24gdHAgLT5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IFslZXhwciB2XSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSldIHdpdGhcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT5cbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgWyVlIGV4cHJdXVxuICAgICAgICBpblxuICAgICAgICBwYXR0LCBleHByXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgaG93IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIChtYXRjaCBBdHRyaWJ1dGUuZ2V0IEF0dHJzLmRlZmF1bHQgbGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwibm8gZGVmYXVsdCB0byBkcm9wXCJcbiAgICAgICAgIHwgU29tZSBkZWZhdWx0IC0+XG4gICAgICAgICAgIHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICBob3dcbiAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICBwYXR0XG4gICAgICAgICAgICAgZXhwclxuICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICB0cFxuICAgICAgICAgICAgIGRlZmF1bHRcbiAgICAgICAgICAgICBrZXkpXG4gICAgICB8IGBkcm9wX2lmIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgeW9qc29uX29mX3JlY29yZF9maWVsZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIHBhdHRcbiAgICAgICAgICBleHByXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIHRwXG4gICAgICAgICAgKEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIHRlc3RdIFslZSBleHByXV0pKVxuICAgICAgICAgIGtleVxuICAgICAgfCBga2VlcCBhcyB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgYGtlZXAgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgICAgfCBgb21pdF9uaWwgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBtYXRjaCBbJWUgY252X2V4cHJdIHdpdGhcbiAgICAgICAgICAgICAgfCBgTnVsbCAtPiBibmRzXG4gICAgICAgICAgICAgIHwgYXJnIC0+IChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgaW5cbiAgICAgICAgKCBwYXR0XG4gICAgICAgICwgWyVleHByXG4gICAgICAgICAgbGV0IGJuZHMgPSBbJWUgYm5kc10gaW5cbiAgICAgICAgICBbJWUgZXhwcl1dIClcbiAgICBpblxuICAgIGxldCBpbml0X2V4cHIgPSB3cmFwX2V4cHIgWyVleHByIGJuZHNdIGluXG4gICAgbGV0IHBhdHQsIGV4cHIgPSBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihbXSwgaW5pdF9leHByKSBmbGRzIGluXG4gICAgKCBwcGF0X3JlY29yZCB+bG9jIHBhdHQgQ2xvc2VkXG4gICAgLCBbJWV4cHJcbiAgICAgIGxldCBibmRzIDogKHN0cmluZyAqIFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCkgbGlzdCA9IFtdIGluXG4gICAgICBbJWUgZXhwcl1dIClcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHN1bSB0eXBlcyAqKVxuXG4gIGxldCBicmFuY2hfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHJlbmFtaW5nIH5sb2MgY29uc3RyX2xpZCBjb25zdHJfc3RyIGFyZ3MgPVxuICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgUGNzdHJfcmVjb3JkIGxkcyAtPlxuICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBsb2NcbiAgICAgICAgICBsZHNcbiAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYExpc3QgWyBbJWUgY25zdHJfZXhwcl07IGBBc3NvYyBbJWUgZXhwcl0gXV0pXG4gICAgICBpblxuICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpIC0tPiBleHByXG4gICAgfCBQY3N0cl90dXBsZSBwY2RfYXJncyAtPlxuICAgICAgKG1hdGNoIHBjZF9hcmdzIHdpdGhcbiAgICAgICB8IFtdIC0+XG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgTm9uZSAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgY29uc3RyX3N0cl0gXV1cbiAgICAgICB8IGFyZ3MgLT5cbiAgICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9XG4gICAgICAgICAgIExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSkgYXJnc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgICBpblxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpXG4gICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dKVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHRwcyBjZHMgPVxuICAgIEZ1bl9vcl9tYXRjaC5NYXRjaFxuICAgICAgKExpc3QubWFwIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5vZl9nYWR0IHRwcyBjZCBpblxuICAgICAgICAgbGV0IGNvbnN0cl9saWQgPSBMb2NhdGVkLm1hcCBsaWRlbnQgY2QucGNkX25hbWUgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbmFtZSA9XG4gICAgICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCBpblxuICAgICAgICAgICBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCB8PiBlc3RyaW5nIH5sb2M6Y2QucGNkX25hbWUubG9jXG4gICAgICAgICBpblxuICAgICAgICAgYnJhbmNoX3N1bVxuICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICByZW5hbWluZ1xuICAgICAgICAgICB+bG9jOmNkLnBjZF9sb2NcbiAgICAgICAgICAgY29uc3RyX2xpZFxuICAgICAgICAgICBjb25zdHJfbmFtZVxuICAgICAgICAgICBjZC5wY2RfYXJncykpXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgeW9qc29uX29mX25pbCBsb2MgPSBGdW5fb3JfbWF0Y2guRnVuIFslZXhwciBmdW4gX3YgLT4gYXNzZXJ0IGZhbHNlXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGNkcyAtPlxuICAgICAgICAgIHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgKExpc3QubWFwIHRwcyB+ZjooZnVuIHggLT4geC50eHQpKSBjZHNcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+XG4gICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcuaWRlbnRpdHkgaW5cbiAgICAgICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGxkc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYEFzc29jIFslZSBleHByXV0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNYXRjaCBbIHBhdHQgLS0+IGV4cHIgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiB5b2pzb25fb2ZfbmlsIGxvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayBSZW5hbWluZy5pZGVudGl0eSkgdHkpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3ByaXZhdGVfYWxpYXMgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kLCB0ZC5wdHlwZV9tYW5pZmVzdCwgdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QsIFNvbWUgXywgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3ByaXZhdGVfYWxpYXNcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBSZXBsYWNlIGFsbCB0eXBlIHZhcmlhYmxlIGJ5IF8gdG8gYXZvaWQgZ2VuZXJhbGl6YXRpb24gcHJvYmxlbXMgKilcbiAgICAgICAgbGV0IHR5X3NyYyA9XG4gICAgICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1hbmlmZXN0ID1cbiAgICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG1hbmlmZXN0IC0+IG1hbmlmZXN0XG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwieW9qc29uX29mX3RkL25vLW1hbmlmZXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5X2RzdCA9IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIG1hbmlmZXN0IGluXG4gICAgICAgIGxldCBjb2VyY2lvbiA9IFslZXhwciAodiA6IFsldCB0eV9zcmNdIDo+IFsldCB0eV9kc3RdKV0gaW5cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBjb2VyY2lvbiBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biB2IC0+IFslZSBwZXhwX21hdGNoIH5sb2MgY29lcmNpb24gbWF0Y2hpbmdzXV0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoIHJlY3Vyc2l2ZSB0eXBlcyBieVxuICAgICAgICAgICBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdl0gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3MpXG4gICAgaW5cbiAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta190eXBlIHRkIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBsZXQgcmVjX2ZsYWcgPVxuICAgICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgICAgfCBgUmVjdXJzaXZlIF8gLT4gUmVjdXJzaXZlXG4gICAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgWyBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHkgXVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfdGRzIH5sb2MgfnBhdGg6XyAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgbGV0IHR5cGVzX2JlaW5nX2RlZmluZWQgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gYE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgYFJlY3Vyc2l2ZVxuICAgICAgICAgIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KSkpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOih5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQpIGluXG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3NcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgZmxkcyA9XG4gICAgbGV0IGNvbGwgbGQgPVxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICBlc3RyaW5nIH5sb2Mga2V5XG4gICAgaW5cbiAgICBlbGlzdCB+bG9jIChMaXN0Lm1hcCB+Zjpjb2xsIGZsZHMpXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgbGRzXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX29wZW4gfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogeW9qc29uX2ZpZWxkcyBvbmx5IHdvcmtzIG9uIHJlY29yZHNcIlxuICAgIGluXG4gICAgbGV0IHR5cCA9IFsldHlwZTogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX2ZpZWxkc19vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfZmllbGRzX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZHMgfmxvYyB+cGF0aDpfIChfLCB0ZHMpID1cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgKExpc3QubWFwIHRkcyB+Zjp5b2pzb25fZmllbGRzX29mX3RkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gICgqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG4gICgqIEhhbmRsZSBiYWNrdHJhY2tpbmcgd2hlbiB2YXJpYW50cyBkbyBub3QgbWF0Y2ggKilcbiAgbGV0IGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByID1cbiAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdIC0tPiBleHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgbWF0Y2ggZm9yIHRoZSBsYXN0XG4gICAgIGNhc2Ugb2YgbWF0Y2hpbmcgYSB2YXJpYW50ICopXG4gIGxldCBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaGVzID1cbiAgICBtYXRjaCBtYXRjaF9sYXN0LCBtYXRjaGVzIHdpdGhcbiAgICB8IHRydWUsIFsgeyBwY19saHMgPSBfOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdXG4gICAgfCBfLCBbIHsgcGNfbGhzID0gWyVwYXQ/IF9dOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdIC0+IGV4cHJcbiAgICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciBhdG9tXSBtYXRjaGVzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgbWFsZm9ybWVkIFlvanNvbnMgKilcbiAgbGV0IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHMgY2FsbCA9XG4gICAgbGV0IGNvbGxfc3RydWN0cyBhY2MgKGxvYywgbGFiZWwpID1cbiAgICAgIChwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgIC0tPlxuICAgICAgIG1hdGNoIGNhbGwgd2l0aFxuICAgICAgIHwgYHB0YWdfbm9fYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19ub19hcmdzIF90cF9sb2MgX3lvanNvbl1cbiAgICAgICB8IGBwdGFnX3Rha2VzX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBfdHBfbG9jIF95b2pzb25dKVxuICAgICAgOjogYWNjXG4gICAgaW5cbiAgICBsZXQgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggPVxuICAgICAgWyVwYXQ/IF9dIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpXVxuICAgIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbF9zdHJ1Y3RzIH5pbml0OlsgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggXSByZXZfZWxzXG4gIDs7XG5cbiAgKCogU3BsaXQgdGhlIHJvdyBmaWVsZHMgb2YgYSB2YXJpYW50IHR5cGUgaW50byBsaXN0cyBvZiBhdG9taWMgdmFyaWFudHMsXG4gICAgIHN0cnVjdHVyZWQgdmFyaWFudHMsIGF0b21pYyB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMsXG4gICAgIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcy4gKilcbiAgbGV0IHNwbGl0X3Jvd19maWVsZCB+bG9jIChhdG9tcywgc3RydWN0cywgYWluaHMsIHNpbmhzKSByb3dfZmllbGQgPVxuICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvd19maWVsZCBpblxuICAgIG1hdGNoIHJvd19maWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCB0cGwgPSBsb2MsIGxhYmVsIGluXG4gICAgICB0cGwgOjogYXRvbXMsIHN0cnVjdHMsIGBBIHRwbCA6OiBhaW5ocywgc2luaHNcbiAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIGF0b21zLCAobG9jLCBsYWJlbCkgOjogc3RydWN0cywgYWluaHMsIGBTIChsb2MsIGxhYmVsLCB0cCwgcm93X2ZpZWxkKSA6OiBzaW5oc1xuICAgIHwgUmluaGVyaXQgaW5oIC0+XG4gICAgICBsZXQgaWluaCA9IGBJIGluaCBpblxuICAgICAgYXRvbXMsIHN0cnVjdHMsIGlpbmggOjogYWluaHMsIGlpbmggOjogc2luaHNcbiAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJzcGxpdF9yb3dfZmllbGQvJlwiXG4gICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0eXBlX2NvbnN0cl9vZl95b2pzb24gPyhpbnRlcm5hbCA9IGZhbHNlKSB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgaWQgYXJncyB+bG9jIH5mOihmdW4gcyAtPlxuICAgICAgbGV0IHMgPSBzIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICAgIGlmIGludGVybmFsIHRoZW4gXCJfX1wiIF4gcyBeIFwiX19cIiBlbHNlIHMpXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgPyhpbnRlcm5hbCA9IGZhbHNlKSB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIHwgWyV0eXBlOiBfXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggKHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYG9rIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJW9mX3lvanNvbjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIGxldCBhcmdzID1cbiAgICAgICAgTGlzdC5tYXAgYXJncyB+ZjooZnVuIGFyZyAtPlxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGFyZykpXG4gICAgICBpblxuICAgICAgRnVuICh0eXBlX2NvbnN0cl9vZl95b2pzb24gfmxvYyB+aW50ZXJuYWwgaWQgYXJncylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LmZ1bl9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW29mX3lvanNvbl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZnBzIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyVwIHBsaXN0IH5sb2MgcGF0dHNdXVxuICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX3R1cGxlIH5sb2MgdmFycylcbiAgICA7IFslcGF0PyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIFslZSBlaW50IH5sb2Mgbl1cbiAgICAgICAgICB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmggPVxuICAgIGxldCBsb2MgPSBpbmgucHR5cF9sb2MgaW5cbiAgICBsZXQgZnVuY19leHByID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oIGluXG4gICAgbGV0IGFwcCA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICAgIGxldCBmdW5fZXhwciA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgZnVuY19leHByIGluXG4gICAgICBGdW4gWyVleHByIFslZSBmdW5fZXhwcl0gX3lvanNvbl1cbiAgICBpblxuICAgIGxldCBtYXRjaF9leGMgPVxuICAgICAgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2hcbiAgICAgICAgbG9jXG4gICAgICAgIChoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzKVxuICAgIGluXG4gICAgbGV0IG5ld19vdGhlcl9tYXRjaGVzID1cbiAgICAgIFsgWyVwYXQ/IF9dXG4gICAgICAgIC0tPiBwZXhwX3RyeVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIChbJWUgRnVuX29yX21hdGNoLmV4cHIgfmxvYyBhcHBdXG4gICAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICAgICAgbWF0Y2hfZXhjXG4gICAgICBdXG4gICAgaW5cbiAgICBuZXdfb3RoZXJfbWF0Y2hlcywgdHJ1ZVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGF0b21pYyB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9hdG9tIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9hdG9tc19pbmhzIH5yZXZfc3RydWN0cyA9XG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYEEgKGxvYywgbGFiZWwpIC0+XG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgICAgLS0+IHBleHBfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9zdHJ1Y3RzIGBwdGFnX3Rha2VzX2FyZ3NcbiAgICBpblxuICAgIGxldCBtYXRjaF9hdG9tc19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfYXRvbXNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfYXRvbXNfaW5oc1xuXG4gICgqIFZhcmlhbnQgY29udmVyc2lvbnMgKilcblxuICAoKiBNYXRjaCBhcmd1bWVudHMgb2YgY29uc3RydWN0b3JzICh2YXJpYW50cyBvciBzdW0gdHlwZXMpICopXG4gIGFuZCBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQgbGFiZWwgdHBzID1cbiAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICBsZXQgY25zdHIgdmFyc19leHByID1cbiAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgIHRoZW4gcGV4cF92YXJpYW50IH5sb2MgY25zdHJfbGFiZWwgKFNvbWUgdmFyc19leHByKVxuICAgICAgZWxzZSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSB2YXJzX2V4cHIpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgICBsZXQgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgICBsZXQgdmFyc19leHByID1cbiAgICAgICAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICAgICAgICB8IFsgdmFyX2V4cHIgXSAtPiB2YXJfZXhwclxuICAgICAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgdmFyc1xuICAgICAgICBpblxuICAgICAgICBjbnN0ciB2YXJzX2V4cHJcbiAgICAgIGluXG4gICAgICBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIG1hdGNoIHlvanNvbl9hcmdzIHdpdGhcbiAgICAgIHwgWyVwIHBsaXN0IH5sb2MgcGF0dHNdIC0+IFslZSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBnb29kX2FyZ19tYXRjaF1cbiAgICAgIHwgXyAtPlxuICAgICAgICBbJWVcbiAgICAgICAgICBpZiBpc192YXJpYW50XG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1dXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIHN0cnVjdHVyZWQgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgID1cbiAgICBsZXQgaGFzX3N0cnVjdHNfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYFMgKGxvYywgbGFiZWwsIHRwLCBfcm93KSAtPlxuICAgICAgICBoYXNfc3RydWN0c19yZWYgOj0gdHJ1ZTtcbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBta19jbnN0cl9hcmdzX21hdGNoXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmxvYzp0cC5wdHlwX2xvY1xuICAgICAgICAgICAgfmlzX3ZhcmlhbnQ6dHJ1ZVxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgWyVwYXQ/IFslcCBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gYXMgX3RhZ10gLS0+IGV4cHJcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X2F0b21zIGBwdGFnX25vX2FyZ3MgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0c19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfc3RydWN0c19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9zdHJ1Y3RzX2luaHMsICFoYXNfc3RydWN0c19yZWZcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyBhdG9taWMgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKGkuZS4gbm90XG4gICAgIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMpICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRfbGlzdCA9XG4gICAgbGV0IHJldl9hdG9tcywgcmV2X3N0cnVjdHMsIHJldl9hdG9tc19pbmhzLCByZXZfc3RydWN0c19pbmhzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOihzcGxpdF9yb3dfZmllbGQgfmxvYykgfmluaXQ6KFtdLCBbXSwgW10sIFtdKSByb3dfZmllbGRfbGlzdFxuICAgIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdCwgaGFzX3N0cnVjdHMgPVxuICAgICAgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dCA9IGlmIGhhc19zdHJ1Y3RzIHRoZW4gWyVwYXQ/IHlvanNvbl9hcmdzXSBlbHNlIFslcGF0PyBfXSBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBhdG9tIF0gYXMgX3lvanNvbl1cbiAgICAgIC0tPiBta192YXJpYW50X21hdGNoX2F0b21cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZ1bGxfdHlwZVxuICAgICAgICAgICAgfnJldl9hdG9tc19pbmhzXG4gICAgICAgICAgICB+cmV2X3N0cnVjdHNcbiAgICA7IFslcGF0PyBgTGlzdCAoYFN0cmluZyBhdG9tIDo6IFslcCBtYXliZV95b2pzb25fYXJnc19wYXR0XSkgYXMgX3lvanNvbl1cbiAgICAgIC0tPiBtYXRjaF9zdHJ1Y3RcbiAgICA7IFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB2YXJpYW50cyAqKVxuICBhbmQgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKSA9XG4gICAgbGV0IGlzX2NvbnRhaW5lZCwgZnVsbF90eXBlID1cbiAgICAgIG1hdGNoIGZ1bGxfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgcHR5cF92YXJpYW50IH5sb2Mgcm93X2ZpZWxkcyBDbG9zZWQgTm9uZVxuICAgICAgfCBTb21lIGZ1bGxfdHlwZSAtPiBmYWxzZSwgZnVsbF90eXBlXG4gICAgaW5cbiAgICBsZXQgdG9wX21hdGNoID1cbiAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgfCB7IHByZl9kZXNjID0gUmluaGVyaXQgaW5oOyBfIH0gOjogcmVzdCAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgaW5oIHJvd19maWVsZHMgPVxuICAgICAgICAgIGxldCBjYWxsID1cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAoWyVlXG4gICAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHJcbiAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmgpXVxuICAgICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2FsbFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgICAgIG1hdGNoIGgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IGluaCAtPiBsb29wIGluaCB0XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCByZnRhZ19tYXRjaGVzID1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSByZnRhZ19tYXRjaGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcGV4cF90cnkgfmxvYyBjYWxsIChoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwcilcbiAgICAgICAgaW5cbiAgICAgICAgWyBbJXBhdD8geW9qc29uXSAtLT4gbG9vcCBpbmggcmVzdCBdXG4gICAgICB8IF8gOjogXyAtPiBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogaW1wb3NzaWJsZSAqKVxuICAgIGluXG4gICAgaWYgaXNfY29udGFpbmVkXG4gICAgdGhlblxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgIHRyeSBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHRvcF9tYXRjaF0gd2l0aFxuICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICBlbHNlIE1hdGNoIHRvcF9tYXRjaFxuXG4gIGFuZCBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3BvbHlfZmllbGRfdmFsdWVcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgaW5cbiAgICBtYXRjaCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cCB3aXRoXG4gICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgTWF0Y2hcbiAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGV4dHJhY3RpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA9XG4gICAgbGV0IHJlYyBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGluaXRzLCBub19hcmdzLCBhcmdzXG4gICAgICB8IGxkIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICBsZXQga2V5ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0Om5tIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpIGluXG4gICAgICAgIChtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQsIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gdHApLCBfIHwgKE5vbmUgfCBTb21lIChgZGVmYXVsdCBfKSksIHRwIC0+XG4gICAgICAgICAgIGxldCBpbml0cyA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXSA6OiBpbml0cyBpblxuICAgICAgICAgICBsZXQgdW5yb2xsZWQgPVxuICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIFslZXhwciBfZmllbGRfeW9qc29uXVxuICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgICAgKHBzdHJpbmcgfmxvYyBrZXlcbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZSA9IFslZSB1bnJvbGxlZF0gaW5cbiAgICAgICAgICAgICAgICAgIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXG4gICAgICAgICAgICAgICAgICA6PSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzXSlcbiAgICAgICAgICAgICA6OiBhcmdzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzIG1vcmVfZmxkcylcbiAgICBpblxuICAgIGxldCBoYW5kbGVfZXh0cmEgPVxuICAgICAgWyAoWyVwYXQ/IF9dXG4gICAgICAgICAtLT5cbiAgICAgICAgIGlmIGFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgdGhlbiBbJWV4cHIgKCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgIGlmIFBweF95b2pzb25fY29udl9saWIuKCAhIClcbiAgICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgIHRoZW4gZXh0cmEgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhXG4gICAgICAgICAgICAgZWxzZSAoKV0pXG4gICAgICBdXG4gICAgaW5cbiAgICBsb29wIFtdIGhhbmRsZV9leHRyYSBoYW5kbGVfZXh0cmEgKExpc3QucmV2IGZsZHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgdGhlIHJlc3VsdCBvZiBtYXRjaGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgaGFzX25vbm9wdF9maWVsZHMgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgcmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cyA9XG4gICAgICBsZXQgcmVjIGxvb3AgKChyZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICAgICAgfCAoeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IGxvYyB9OyBfIH0gYXMgbGQpIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICAgIGxldCBmbGQgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXV0gaW5cbiAgICAgICAgICBsZXQgbWtfZGVmYXVsdCBsb2MgPVxuICAgICAgICAgICAgYmlfbHN0LCBbJXBhdD8gWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dIDo6IGdvb2RfcGF0dHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBfIHwgYHlvanNvbl9vcHRpb24gXykgLT4gbWtfZGVmYXVsdCBsb2NcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBoYXNfbm9ub3B0X2ZpZWxkcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAoIFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbJWUgZmxkXSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICwgWyVlIGVzdHJpbmcgfmxvYyBubV1dXG4gICAgICAgICAgICAgICAgOjogYmlfbHN0XG4gICAgICAgICAgICAgICwgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dXG4gICAgICAgICAgICAgICAgOjogZ29vZF9wYXR0cyApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWNjID0gWyVleHByIFslZSBmbGRdXSA6OiByZXNfdHBscywgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgaW5cbiAgICAgICAgICBsb29wIGFjYyBtb3JlX2ZsZHNcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIChbXSwgW10sIFtdKSAoTGlzdC5yZXYgZmxkcylcbiAgICBpblxuICAgIGxldCBtYXRjaF9nb29kX2V4cHIgPVxuICAgICAgaWYgaGFzX3BvbHlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY252dCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgXyB9OyBfIH0gLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIExpc3QubWFwIH5mOmNudnQgZmxkcyB3aXRoXG4gICAgICAgIHwgWyBtYXRjaF9nb29kX2V4cHIgXSAtPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgfCBtYXRjaF9nb29kX2V4cHJzIC0+IHBleHBfdHVwbGUgfmxvYyBtYXRjaF9nb29kX2V4cHJzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjbnZ0IGxkID1cbiAgICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgZGVmYXVsdCkgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBbJWUgZGVmYXVsdF1cbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPiB2XVxuICAgICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiBfKSB8IE5vbmUgLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5tLCB2YWx1ZVxuICAgICAgICBpblxuICAgICAgICB3cmFwX2V4cHIgKHBleHBfcmVjb3JkIH5sb2MgKExpc3QubWFwIH5mOmNudnQgZmxkcykgTm9uZSkpXG4gICAgaW5cbiAgICBsZXQgZXhwciwgcGF0dCA9XG4gICAgICBtYXRjaCByZXNfdHBscywgZ29vZF9wYXR0cyB3aXRoXG4gICAgICB8IFsgcmVzX2V4cHIgXSwgWyByZXNfcGF0dCBdIC0+IHJlc19leHByLCByZXNfcGF0dFxuICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyByZXNfdHBscywgcHBhdF90dXBsZSB+bG9jIGdvb2RfcGF0dHNcbiAgICBpblxuICAgIGlmICFoYXNfbm9ub3B0X2ZpZWxkc1xuICAgIHRoZW5cbiAgICAgIHBleHBfbWF0Y2hcbiAgICAgICAgfmxvY1xuICAgICAgICBleHByXG4gICAgICAgIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIDsgWyVwYXQ/IF9dXG4gICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzXG4gICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgIFslZSBlbGlzdCB+bG9jIGJpX2xzdF1dXG4gICAgICAgIF1cbiAgICBlbHNlIHBleHBfbWF0Y2ggfmxvYyBleHByIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBjb252ZXJ0aW5nIHJlY29yZCBmaWVsZHMgKilcblxuICBsZXQgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBleHByX3JlZl9pbml0cywgX21jX25vX2FyZ3NfZmllbGRzLCBtY19maWVsZHNfd2l0aF9hcmdzID1cbiAgICAgIG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcylcbiAgICBpblxuICAgIGxldCBmaWVsZF9yZWZzID1cbiAgICAgIExpc3QubWFwMl9leG5cbiAgICAgICAgZmxkc1xuICAgICAgICBleHByX3JlZl9pbml0c1xuICAgICAgICB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gaW5pdCAtPlxuICAgICAgICAgIHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OihwdmFyIH5sb2MgKG5hbWUgXiBcIl9maWVsZFwiKSkgfmV4cHI6WyVleHByIHJlZiBbJWUgaW5pdF1dKVxuICAgIGluXG4gICAgcGV4cF9sZXRcbiAgICAgIH5sb2NcbiAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgKGZpZWxkX3JlZnNcbiAgICAgICBAIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGR1cGxpY2F0ZXNdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICA7IHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBleHRyYV0gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIF0pXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IHJlYyBpdGVyID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIHBleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbIFslcGF0PyAoZmllbGRfbmFtZSwgX2ZpZWxkX3lvanNvbikgOjogdGFpbF1cbiAgICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgICBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBmaWVsZF9uYW1lXSBtY19maWVsZHNfd2l0aF9hcmdzXTtcbiAgICAgICAgICAgICAgICAgIGl0ZXIgdGFpbF1cbiAgICAgICAgICAgICAgOyBbJXBhdD8gW11dIC0tPiBbJWV4cHIgKCldXG4gICAgICAgICAgICAgIF1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgZmllbGRfeW9qc29ucztcbiAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzIHdpdGhcbiAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9kdXBsaWNhdGVfZmllbGRzXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzKVxuICAgICAgICAgICAgeW9qc29uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAobWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSlcbiAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICB8IFtdIC0+IFslZSBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXSldXG4gIDs7XG5cbiAgbGV0IGlzX3BvbHkgKF8sIGZsZHMpID1cbiAgICBMaXN0LmV4aXN0cyBmbGRzIH5mOihmdW5jdGlvblxuICAgICAgfCB7IHBsZF90eXBlID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9OyBfIH0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgIGxvY1xuICAgICAgICBmbGRzXG4gICAgICAgIH53cmFwX2V4cHJcbiAgICA9XG4gICAgbGV0IGhhc19wb2x5ID0gaXNfcG9seSAobG9jLCBmbGRzKSBpblxuICAgIGxldCBjbnZfZmllbGRzID1cbiAgICAgIG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXG4gICAgaW5cbiAgICBpZiBoYXNfcG9seVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBhdHQgPVxuICAgICAgICBsZXQgcGF0cyA9XG4gICAgICAgICAgTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT4gcHZhciB+bG9jIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHBhdHMgd2l0aFxuICAgICAgICB8IFsgcGF0IF0gLT4gcGF0XG4gICAgICAgIHwgcGF0cyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0c1xuICAgICAgaW5cbiAgICAgIGxldCByZWNvcmRfZGVmID1cbiAgICAgICAgd3JhcF9leHByXG4gICAgICAgICAgKHBleHBfcmVjb3JkXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIChMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPlxuICAgICAgICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpKVxuICAgICAgICAgICAgIE5vbmUpXG4gICAgICBpblxuICAgICAgcGV4cF9sZXRcbiAgICAgICAgfmxvY1xuICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwYXR0IH5leHByOmNudl9maWVsZHMgXVxuICAgICAgICByZWNvcmRfZGVmKVxuICAgIGVsc2UgY252X2ZpZWxkc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHJlY29yZHMgKilcbiAgbGV0IHJlY29yZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBNYXRjaFxuICAgICAgWyBbJXBhdD8gYEFzc29jIGZpZWxkX3lvanNvbnMgYXMgeW9qc29uXVxuICAgICAgICAtLT4gbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgZmxkc1xuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4geCAtPiB4KVxuICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9saXN0X2luc3RlYWRfYXRvbVxuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgeW9qc29uXVxuICAgICAgXVxuICA7O1xuXG4gICgqIFN1bSB0eXBlIGNvbnZlcnNpb25zICopXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHdlbGwtZm9ybWVkIFlvanNvbnMgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfcmVjb3JkIGZpZWxkczsgXyB9IC0+XG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfY2QgY2QpKVxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBlIC0+XG4gICAgICAgICAgICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIGUpKVxuICAgICAgICBpblxuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IFsgYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKTsgYEFzc29jIGZpZWxkX3lvanNvbnMgXVxuICAgICAgICAgIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGV4cHJcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gXV1cbiAgICAgICAgLS0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIE5vbmVcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8gYXMgdHBzKTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCAoYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKSA6OiB5b2pzb25fYXJncykgYXMgX3lvanNvbl1cbiAgICAgICAgLS0+IG1rX2Nuc3RyX2FyZ3NfbWF0Y2ggfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+aXNfdmFyaWFudDpmYWxzZSBsYWJlbCB0cHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3IgbWFsZm9ybWVkIFlvanNvbnMgd2l0aCBnb29kIHRhZ3NcbiAgICAgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBjZHMpID1cbiAgICBMaXN0Lm1hcCBjZHMgfmY6KGZ1biAoY2QsIGxhYmVsKSAtPlxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfdHVwbGUgW107IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYExpc3QgKGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX25vX2FyZ3MgX3RwX2xvYyB5b2pzb25dXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSAoXyA6OiBfKSB8IFBjc3RyX3JlY29yZCBfOyBfIH0gLT5cbiAgICAgICAgWyVwYXQ/IGBTdHJpbmcgWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgX3RwX2xvYyB5b2pzb25dKVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHN1bSB0eXBlcyAqKVxuICBsZXQgc3VtX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBhbHRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBsZXQgYWx0cyA9XG4gICAgICBMaXN0Lm1hcCBhbHRzIH5mOihmdW4gY2QgLT4gY2QsIExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZClcbiAgICBpblxuICAgIE1hdGNoXG4gICAgICAoTGlzdC5jb25jYXRcbiAgICAgICAgIFsgbWtfZ29vZF9zdW1fbWF0Y2hlcyB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBta19iYWRfc3VtX21hdGNoZXMgKGxvYywgYWx0cylcbiAgICAgICAgIDsgWyBbJXBhdD8gYExpc3QgKGBMaXN0IF8gOjogXykgYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW1cbiAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgIDsgWyVwYXQ/IGBMaXN0IFtdIGFzIHlvanNvbl1cbiAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW1cbiAgICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgIDsgWyVwYXQ/IF8gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgICAgICAgICBdXG4gICAgICAgICBdKVxuICA7O1xuXG4gICgqIEVtcHR5IHR5cGUgKilcbiAgbGV0IG5pbF9vZl95b2pzb24gbG9jIDogRnVuX29yX21hdGNoLnQgPVxuICAgIEZ1blxuICAgICAgWyVleHByXG4gICAgICAgIGZ1biB5b2pzb24gLT4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5lbXB0eV90eXBlIF90cF9sb2MgeW9qc29uXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jOl8gfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkID1cbiAgICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gICAgbGV0IHRwcyA9IExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+ZjpnZXRfdHlwZV9wYXJhbV9uYW1lIGluXG4gICAgbGV0IHsgcHR5cGVfbmFtZSA9IHsgdHh0ID0gdHlwZV9uYW1lOyBsb2MgPSBfIH07IHB0eXBlX2xvYyA9IGxvYzsgXyB9ID0gdGQgaW5cbiAgICBsZXQgZnVsbF90eXBlID1cbiAgICAgIGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkIHw+IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzXG4gICAgaW5cbiAgICBsZXQgaXNfcHJpdmF0ZSA9XG4gICAgICBtYXRjaCB0ZC5wdHlwZV9wcml2YXRlIHdpdGhcbiAgICAgIHwgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICB8IFB1YmxpYyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgaXNfcHJpdmF0ZVxuICAgIHRoZW4gTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJvZl95b2pzb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcHJpdmF0ZSB0eXBlXCI7XG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiA9XG4gICAgICBtYXRjaCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOmZhbHNlIHdpdGhcbiAgICAgIHwgYERlZmluaXRlbHkgLT4gdHJ1ZVxuICAgICAgfCBgTWF5YmUgLT4gcG9seVxuICAgICAgfCBgU3VyZWx5X25vdCAtPlxuICAgICAgICBpZiBwb2x5XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIFwieW9qc29uX3BvbHkgYW5ub3RhdGlvbiBvbiBhIHR5cGUgdGhhdCBpcyBzdXJlbHkgbm90IGEgcG9seW1vcnBoaWMgdmFyaWFudFwiO1xuICAgICAgICBmYWxzZVxuICAgIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGFsdHMgLT5cbiAgICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgdGQ7XG4gICAgICAgICAgc3VtX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAodGQucHR5cGVfbG9jLCBhbHRzKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBsYmxzIC0+XG4gICAgICAgICAgcmVjb3JkX29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfdGQgdGQpKVxuICAgICAgICAgICAgKGxvYywgbGJscylcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+XG4gICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJwcHhfeW9qc29uX2NvbnY6IG9wZW4gdHlwZXMgbm90IHN1cHBvcnRlZFwiXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT5cbiAgICAgICAgICBBdHRycy5mYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX3RkIH5sb2MgdGQ7XG4gICAgICAgICAgKG1hdGNoIHRkLnB0eXBlX21hbmlmZXN0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG5pbF9vZl95b2pzb24gdGQucHR5cGVfbG9jXG4gICAgICAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAgICAgIHR5cGVfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICB+ZnVsbF90eXBlXG4gICAgICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgICAgfmludGVybmFsOmNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICAgICAgICAgdHkpXG4gICAgICBpblxuICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAoKiBQcmV2ZW50IHZpb2xhdGlvbiBvZiB2YWx1ZSByZXN0cmljdGlvbiBhbmQgcHJvYmxlbXMgd2l0aFxuICAgICAgICAgcmVjdXJzaXZlIHR5cGVzIGJ5IGV0YS1leHBhbmRpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKilcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdCAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdF0gXV1dXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgbWF0Y2hpbmdzXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfbmFtZSA9IHR5cGVfbmFtZSBeIFwiX29mX3lvanNvblwiIGluXG4gICAgbGV0IGludGVybmFsX25hbWUgPSBcIl9fXCIgXiB0eXBlX25hbWUgXiBcIl9vZl95b2pzb25fX1wiIGluXG4gICAgbGV0IGFyZ19wYXR0cywgYXJnX2V4cHJzID1cbiAgICAgIExpc3QudW56aXBcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICBsZXQgbmFtZSA9IFwiX29mX1wiIF4gdHAudHh0IGluXG4gICAgICAgICAgICAgcHZhciB+bG9jIG5hbWUsIGV2YXIgfmxvYyBuYW1lKVxuICAgICAgICAgICB0cHMpXG4gICAgaW5cbiAgICBsZXQgYmluZF90cF9sb2NfaW4gPVxuICAgICAgbGV0IGZ1bGxfdHlwZV9uYW1lID0gUHJpbnRmLnNwcmludGYgXCIlcy4lc1wiIHBhdGggdHlwZV9uYW1lIGluXG4gICAgICBmdW4gZSAtPlxuICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IC0+XG4gICAgICAgICAgKCogd2UgZGVmaW5pdGVseSBkb24ndCB1c2UgdGhlIHN0cmluZywgc28gY2xlYW4gdXAgdGhlIGdlbmVyYXRlZCBjb2RlIGEgYml0ICopXG4gICAgICAgICAgZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBfdHBfbG9jID0gWyVlIGVzdHJpbmcgfmxvYyBmdWxsX3R5cGVfbmFtZV0gaW5cbiAgICAgICAgICAgIFslZSBlXV1cbiAgICBpblxuICAgIGxldCBpbnRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBpZiBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgIHRoZW5cbiAgICAgICAgU29tZVxuICAgICAgICAgIChiaW5kX3RwX2xvY19pblxuICAgICAgICAgICAgIChldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBhcmdfcGF0dHMgYm9keSkpKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfZnVuX2JvZHkgPVxuICAgICAgbGV0IG5lZWRfdHBfbG9jLCBib2R5X2JlbG93X2xhbWJkYXMgPVxuICAgICAgICBpZiBjcmVhdGVfaW50ZXJuYWxfZnVuY3Rpb25cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IG5vX3ZhcmlhbnRfbWF0Y2hfbWMgPVxuICAgICAgICAgICAgWyBbJXBhdD8gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoXVxuICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgICB5b2pzb25dXG4gICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxfY2FsbCA9XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWxfZXhwciA9IGV2YXIgfmxvYyBpbnRlcm5hbF9uYW1lIGluXG4gICAgICAgICAgICBlYXBwbHkgfmxvYyBpbnRlcm5hbF9leHByIChhcmdfZXhwcnMgQCBbIFslZXhwciB5b2pzb25dIF0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJ5X3dpdGggPSBwZXhwX3RyeSB+bG9jIGludGVybmFsX2NhbGwgbm9fdmFyaWFudF9tYXRjaF9tYyBpblxuICAgICAgICAgIGZhbHNlLCBiaW5kX3RwX2xvY19pbiBbJWV4cHIgZnVuIHlvanNvbiAtPiBbJWUgdHJ5X3dpdGhdXSlcbiAgICAgICAgZWxzZSB0cnVlLCBib2R5XG4gICAgICBpblxuICAgICAgbGV0IGJvZHlfd2l0aF9sYW1iZGFzID1cbiAgICAgICAgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG4gICAgICAgICAgfnJlY19mbGFnXG4gICAgICAgICAgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5X2JlbG93X2xhbWJkYXMpXG4gICAgICBpblxuICAgICAgaWYgbmVlZF90cF9sb2MgdGhlbiBiaW5kX3RwX2xvY19pbiBib2R5X3dpdGhfbGFtYmRhcyBlbHNlIGJvZHlfd2l0aF9sYW1iZGFzXG4gICAgaW5cbiAgICBsZXQgbWtfYmluZGluZyBmdW5jX25hbWUgYm9keSA9XG4gICAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta190eXBlIHRkIGluXG4gICAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgICBpblxuICAgIGxldCBpbnRlcm5hbF9iaW5kaW5ncyA9XG4gICAgICBtYXRjaCBpbnRlcm5hbF9mdW5fYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBib2R5IC0+IFsgbWtfYmluZGluZyBpbnRlcm5hbF9uYW1lIGJvZHkgXVxuICAgIGluXG4gICAgbGV0IGV4dGVybmFsX2JpbmRpbmcgPSBta19iaW5kaW5nIGV4dGVybmFsX25hbWUgZXh0ZXJuYWxfZnVuX2JvZHkgaW5cbiAgICBpbnRlcm5hbF9iaW5kaW5ncywgWyBleHRlcm5hbF9iaW5kaW5nIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZyb20gdHlwZSBkZWZpbml0aW9ucyAqKVxuICBsZXQgdGRzX29mX3lvanNvbiB+bG9jIH5wb2x5IH5wYXRoIChyZWNfZmxhZywgdGRzKSA9XG4gICAgbGV0IHR5cGV2YXJfaGFuZGxpbmcgPSBgb2sgaW5cbiAgICBsZXQgc2luZ2xldG9uID1cbiAgICAgIG1hdGNoIHRkcyB3aXRoXG4gICAgICB8IFsgXyBdIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIGluXG4gICAgaWYgc2luZ2xldG9uXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcmVjX2ZsYWcgPSByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyBpblxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5wb2x5IH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGludGVybmFscyBAIGV4dGVybmFscylcbiAgICAgICAgaW5cbiAgICAgICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgUmVjdXJzaXZlIGJpbmRpbmdzXG4gICAgICB8IE5vbnJlY3Vyc2l2ZSAtPlxuICAgICAgICBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgICBsZXQgaW50ZXJuYWxzLCBleHRlcm5hbHMgPVxuICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgaW50ZXJuYWxzXG4gICAgICAgICAgQCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgZXh0ZXJuYWxzKSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfnBvbHkgfmxvYyB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIGludGVybmFscyBAIGV4dGVybmFscylcbiAgICAgIGluXG4gICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyBiaW5kaW5ncylcbiAgOztcblxuICBsZXQgdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfnBhdGggY3R5cCA9XG4gICAgbGV0IGxvYyA9IHsgY3R5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIGxldCBmcCA9IHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGN0eXAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IEZ1biBmdW5fZXhwciAtPiBbJWV4cHIgWyVlIGZ1bl9leHByXSB5b2pzb25dXG4gICAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPiBwZXhwX21hdGNoIH5sb2MgWyVleHByIHlvanNvbl0gbWF0Y2hpbmdzXG4gICAgaW5cbiAgICBsZXQgZnVsbF90eXBlX25hbWUgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyBsaW5lICVpOiAlc1wiXG4gICAgICAgIHBhdGhcbiAgICAgICAgbG9jLmxvY19zdGFydC5wb3NfbG51bVxuICAgICAgICAoc3RyaW5nX29mX2NvcmVfdHlwZSBjdHlwKVxuICAgIGluXG4gICAgWyVleHByXG4gICAgICBmdW4geW9qc29uIC0+XG4gICAgICAgIGxldCBfdHBfbG9jID0gWyVlIGVzdHJpbmcgfmxvYyBmdWxsX3R5cGVfbmFtZV0gaW5cbiAgICAgICAgWyVlIGJvZHldXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLnR5cGVfb2ZfeW9qc29uX29mIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgdHkgPVxuICAgIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YueW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIHR5XG4gICAgfD4gRnVuX29yX21hdGNoLmV4cHIgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9XG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfeW9qc29uX29mLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV95b2pzb25fb2YueW9qc29uX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBZb2pzb25fZmllbGRzID0gc3RydWN0XG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMueW9qc29uX2ZpZWxkc19vZl90ZHNcbmVuZFxuXG5tb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gIGxldCB0eXBlX2V4dGVuc2lvbiB0eSA9XG4gICAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi50eXBlX29mX29mX3lvanNvbiB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gdHlcbiAgOztcblxuICBsZXQgY29yZV90eXBlID1cbiAgICBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nOmBkaXNhbGxvd2VkX2luX3R5cGVfZXhwclxuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsID0gU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWdcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uLnRkc19vZl95b2pzb25cbmVuZFxuXG5tb2R1bGUgU2lnX3lvanNvbiA9IHN0cnVjdFxuICBsZXQgbWtfc2lnIH5sb2MgfnBhdGggZGVjbHMgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgICBAIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24ubWtfc2lnIH5wb2x5OmZhbHNlIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCB+bG9jIH5wYXRoICgoX3JmLCB0ZHMpIGFzIGRlY2xzKSA9XG4gICAgbWF0Y2hcbiAgICAgIG1rX25hbWVkX3NpZ1xuICAgICAgICB+bG9jXG4gICAgICAgIH5zZ19uYW1lOlwiUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25hYmxlLlNcIlxuICAgICAgICB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQ6ZmFsc2VcbiAgICAgICAgdGRzXG4gICAgd2l0aFxuICAgIHwgU29tZSBpbmNsdWRlX2luZm9zIC0+IFsgcHNpZ19pbmNsdWRlIH5sb2MgaW5jbHVkZV9pbmZvcyBdXG4gICAgfCBOb25lIC0+IG1rX3NpZyB+bG9jIH5wYXRoIGRlY2xzXG4gIDs7XG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzb29fcnVudGltZS5SdW50aW1lX3ZlcnNpb24gKilcbm1vZHVsZSBSdW50aW1lX3ZlcnNpb24gPSBKc29vX3J1bnRpbWVfX1J1bnRpbWVfdmVyc2lvblxuXG5tb2R1bGUgSnNvb19ydW50aW1lX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIm1vZHVsZSBKcyA9IHN0cnVjdFxuICB0eXBlIHRcblxuICB0eXBlICdhIGpzX2FycmF5ID0gdFxuXG4gIHR5cGUgKCdhLCAnYikgbWV0aF9jYWxsYmFjayA9IHRcblxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19ieXRlc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG4gIGV4dGVybmFsIGJvb2wgOiBib29sIC0+IHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuICBleHRlcm5hbCB0b19ib29sIDogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG4gIGV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19hcnJheSA6IHQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfanNfdG9fYXJyYXlcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgZmxvYXRfb2ZfbnVtYmVyIDogdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2ludDMyIDogaW50MzIgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuICBleHRlcm5hbCBpbnQzMl9vZl9udW1iZXIgOiB0IC0+IGludDMyID0gXCJjYW1sX2pzX3RvX2ludDMyXCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IHQgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIG5hdGl2ZWludF9vZl9udW1iZXIgOiB0IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG4gIGV4dGVybmFsIHR5cGVvZiA6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxuXG4gIGV4dGVybmFsIGluc3RhbmNlb2YgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gdCAtPiB0ID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gIGV4dGVybmFsIGRlbGV0ZSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgZXh0ZXJuYWwgY2FsbCA6IHQgLT4gdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgZnVuX2NhbGwgOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogdCAtPiBzdHJpbmcgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX21ldGhfY2FsbFwiXG5cbiAgZXh0ZXJuYWwgbmV3X29iaiA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX25ld1wiXG5cbiAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiB0IC0+IHQganNfYXJyYXkgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbiAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICBleHRlcm5hbCBlcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICBleHRlcm5hbCBwdXJlX2V4cHIgOiAodW5pdCAtPiAnYSkgLT4gJ2EgPSBcImNhbWxfanNfcHVyZV9leHByXCJcblxuICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICBleHRlcm5hbCBwdXJlX2pzX2V4cHIgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfcHVyZV9qc19leHByXCJcblxuICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKHQganNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgdCBqc19hcnJheSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICgnYiAtPiB0IGpzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIHQganNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcbmVuZFxuXG5tb2R1bGUgU3lzID0gc3RydWN0XG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAnYVxuXG4gIGV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbiAgZXh0ZXJuYWwgcmVhZF9maWxlIDogbmFtZTpzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3JlYWRfZmlsZV9jb250ZW50XCJcblxuICBleHRlcm5hbCBzZXRfY2hhbm5lbF9vdXRwdXQnIDogb3V0X2NoYW5uZWwgLT4gKGpzX3N0cmluZzpKcy50IC0+IHVuaXQpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXCJcblxuICBleHRlcm5hbCBtb3VudF9wb2ludCA6IHVuaXQgLT4gc3RyaW5nIGxpc3QgPSBcImNhbWxfbGlzdF9tb3VudF9wb2ludFwiXG5cbiAgZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOiBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21vdW50X2F1dG9sb2FkXCJcblxuICBleHRlcm5hbCB1bm1vdW50IDogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfdW5tb3VudFwiXG5cbiAgdHlwZSByZWRpcmVjdGlvblxuXG4gIGV4dGVybmFsIHJlZGlyZWN0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiBpbnRvOm91dF9jaGFubmVsIC0+IHJlZGlyZWN0aW9uXG4gICAgPSBcImNhbWxfbWxfY2hhbm5lbF9yZWRpcmVjdFwiXG5cbiAgZXh0ZXJuYWwgcmVzdG9yZV9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gcmVkaXJlY3Rpb24gLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX2NoYW5uZWxfcmVzdG9yZVwiXG5cbiAgbW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICAgIGV4dGVybmFsIHVzZV9qc19zdHJpbmcgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXCJcblxuICAgIGV4dGVybmFsIGVmZmVjdHMgOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfanNvb19mbGFnc19lZmZlY3RzXCJcbiAgZW5kXG5cbiAgbGV0IHZlcnNpb24gPSBSdW50aW1lX3ZlcnNpb24uc1xuXG4gIGxldCBnaXRfdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5naXRfdmVyc2lvblxuZW5kXG5cbm1vZHVsZSBFcnJvciA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcmFpc2VfIDogdCAtPiAnYVxuXG4gIHZhbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuXG4gICgqKiBBdHRhY2ggYSBKYXZhc1NjcmlwdCBlcnJvciB0byBhbiBPQ2FtbCBleGNlcHRpb24uICBpZiBbZm9yY2UgPSBmYWxzZV0gYW5kIGFcbiAgICBKYXZhc1NjcmlwdCBlcnJvciBpcyBhbHJlYWR5IGF0dGFjaGVkLCBpdCB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvXG4gICAgc3RvcmUgYW5kIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IEphdmFTY3JpcHQgc3RhY2sgdHJhY2VzLlxuXG4gICAgQXR0YWNoaW5nIEphdmFzU2NyaXB0IGVycm9ycyB3aWxsIGhhcHBlbiBhdXRvbWF0aWNhbGx5IHdoZW4gY29tcGlsaW5nIHdpdGhcbiAgICBbLS1lbmFibGUgd2l0aC1qcy1lcnJvcl0uICopXG5cbiAgdmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvblxuICAoKiogRXh0cmFjdCBhIEphdmFTY3JpcHQgZXJyb3IgYXR0YWNoZWQgdG8gYW4gT0NhbWwgZXhjZXB0aW9uLCBpZiBhbnkuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgICAgaW5zcGVjdCBhbiBldmVudHVhbCBzdGFjayBzdHJhY2UsIGVzcGVjaWFsbHkgd2hlbiBzb3VyY2VtYXAgaXMgZW5hYmxlZC4gKilcblxuICBleGNlcHRpb24gRXhuIG9mIHRcbiAgKCoqIFRoZSBbRXJyb3JdIGV4Y2VwdGlvbiB3cmFwIGphdmFzY3JpcHQgZXhjZXB0aW9ucyB3aGVuIGNhdWdodCBieSBPQ2FtbCBjb2RlLlxuICAgICAgSW4gY2FzZSB0aGUgamF2YXNjcmlwdCBleGNlcHRpb24gaXMgbm90IGFuIGluc3RhbmNlIG9mIGphdmFzY3JpcHQgW0Vycm9yXSxcbiAgICAgIGl0IHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgd3JhcHBlZCBpbnRvIGEgW0ZhaWx1cmVdIGV4Y2VwdGlvbi5cbiAgKilcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRcblxuICBleGNlcHRpb24gRXhuIG9mIHRcblxuICBsZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcImpzRXJyb3JcIiAoRXhuIChPYmoubWFnaWMgW3x8XSkpXG5cbiAgbGV0IHJhaXNlXyA6IHQgLT4gJ2EgPSBKcy5qc19leHByIFwiKGZ1bmN0aW9uIChleG4pIHsgdGhyb3cgZXhuIH0pXCJcblxuICBleHRlcm5hbCBvZl9leG4gOiBleG4gLT4gdCBvcHRpb24gPSBcImNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblwiXG5cbiAgZXh0ZXJuYWwgYXR0YWNoX2pzX2JhY2t0cmFjZSA6IGV4biAtPiBmb3JjZTpib29sIC0+IGV4biA9IFwiY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2VcIlxuZW5kXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyLTYwXCJdXG5cbm1vZHVsZSBGb3JfY29tcGF0aWJpbGl0eV9vbmx5ID0gc3RydWN0XG4gICgqIEFkZCBwcmltaXRpdmVzIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIEV4aXN0aW5nIHVzZXJzIG1pZ2h0XG4gICAgIGRlcGVuZCBvbiBpdCAoZS5nLiBnZW5fanNfYXBpKSwgd2UgZG9udCB3YW50IHRoZSBvY2FtbCBjb21waWxlclxuICAgICB0byBjb21wbGFpbiBhYm91dCB0aGVzZXMgbWlzc2luZyBwcmltaXRpdmVzLiAqKVxuXG4gIGV4dGVybmFsIGNhbWxfanNfZnJvbV9zdHJpbmcgOiBzdHJpbmcgLT4gSnMudCA9IFwiY2FtbF9qc19mcm9tX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc190b19ieXRlX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX3N0cmluZyA6IEpzLnQgLT4gc3RyaW5nID0gXCJjYW1sX2pzX3RvX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgY2FtbF9saXN0X29mX2pzX2FycmF5IDogJ2EgSnMuanNfYXJyYXkgLT4gJ2EgbGlzdCA9IFwiY2FtbF9saXN0X29mX2pzX2FycmF5XCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3RfdG9fanNfYXJyYXkgOiAnYSBsaXN0IC0+ICdhIEpzLmpzX2FycmF5ID0gXCJjYW1sX2xpc3RfdG9fanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG5lbmRcblxubW9kdWxlIFR5cGVkX2FycmF5ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdHlwZWRBcnJheSA9IEpzLnRcblxuICB0eXBlIGFycmF5QnVmZmVyID0gSnMudFxuXG4gIHR5cGUgdWludDhBcnJheSA9IEpzLnRcblxuICBleHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiKSBCaWdhcnJheS5raW5kXG4gICAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbiAgZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICAgKCdhLCAnYiwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkdlbmFycmF5LnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheVxuICAgID0gXCJjYW1sX2JhX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICAgKCdhLCAnYikgdHlwZWRBcnJheSAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICAgID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG4gICAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyID0gXCJiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyXCJcblxuICAgIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgPSBcImJpZ3N0cmluZ190b190eXBlZF9hcnJheVwiXG5cbiAgICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIC0+IHQgPSBcImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gdCA9IFwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XCJcbiAgZW5kXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9hcnJheVwiXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZV9pbnQ2NF9sb19taV9oaSA6IGludCAtPiBpbnQgLT4gaW50IC0+IEludDY0LnRcbiAgICA9IFwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGlcIlxuZW5kXG4iLCIoKiBnZW5lcmF0ZWQgYnkgZHVuZSAqKVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5DU1MgKilcbm1vZHVsZSBDU1MgPSBKc19vZl9vY2FtbF9fQ1NTXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbSAqKVxubW9kdWxlIERvbSA9IEpzX29mX29jYW1sX19Eb21cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX2V2ZW50cyAqKVxubW9kdWxlIERvbV9ldmVudHMgPSBKc19vZl9vY2FtbF9fRG9tX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21faHRtbCAqKVxubW9kdWxlIERvbV9odG1sID0gSnNfb2Zfb2NhbWxfX0RvbV9odG1sXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9zdmcgKilcbm1vZHVsZSBEb21fc3ZnID0gSnNfb2Zfb2NhbWxfX0RvbV9zdmdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRXZlbnRTb3VyY2UgKilcbm1vZHVsZSBFdmVudFNvdXJjZSA9IEpzX29mX29jYW1sX19FdmVudFNvdXJjZVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5GaWxlICopXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sX19GaWxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpcmVidWcgKilcbm1vZHVsZSBGaXJlYnVnID0gSnNfb2Zfb2NhbWxfX0ZpcmVidWdcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRm9ybSAqKVxubW9kdWxlIEZvcm0gPSBKc19vZl9vY2FtbF9fRm9ybVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5HZW9sb2NhdGlvbiAqKVxubW9kdWxlIEdlb2xvY2F0aW9uID0gSnNfb2Zfb2NhbWxfX0dlb2xvY2F0aW9uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgKilcbm1vZHVsZSBJbnRlcnNlY3Rpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRsICopXG5tb2R1bGUgSW50bCA9IEpzX29mX29jYW1sX19JbnRsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzICopXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbF9fSnNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnNvbiAqKVxubW9kdWxlIEpzb24gPSBKc19vZl9vY2FtbF9fSnNvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc3RhYmxlICopXG5tb2R1bGUgSnN0YWJsZSA9IEpzX29mX29jYW1sX19Kc3RhYmxlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkxpYl92ZXJzaW9uICopXG5tb2R1bGUgTGliX3ZlcnNpb24gPSBKc19vZl9vY2FtbF9fTGliX3ZlcnNpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTXV0YXRpb25PYnNlcnZlciAqKVxubW9kdWxlIE11dGF0aW9uT2JzZXJ2ZXIgPSBKc19vZl9vY2FtbF9fTXV0YXRpb25PYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5QZXJmb3JtYW5jZU9ic2VydmVyICopXG5tb2R1bGUgUGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzX29mX29jYW1sX19QZXJmb3JtYW5jZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlJlZ2V4cCAqKVxubW9kdWxlIFJlZ2V4cCA9IEpzX29mX29jYW1sX19SZWdleHBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVzaXplT2JzZXJ2ZXIgKilcbm1vZHVsZSBSZXNpemVPYnNlcnZlciA9IEpzX29mX29jYW1sX19SZXNpemVPYnNlcnZlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5TeXNfanMgKilcbm1vZHVsZSBTeXNfanMgPSBKc19vZl9vY2FtbF9fU3lzX2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlR5cGVkX2FycmF5ICopXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBKc19vZl9vY2FtbF9fVHlwZWRfYXJyYXlcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVXJsICopXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWxfX1VybFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5XZWJHTCAqKVxubW9kdWxlIFdlYkdMID0gSnNfb2Zfb2NhbWxfX1dlYkdMXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYlNvY2tldHMgKilcbm1vZHVsZSBXZWJTb2NrZXRzID0gSnNfb2Zfb2NhbWxfX1dlYlNvY2tldHNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV29ya2VyICopXG5tb2R1bGUgV29ya2VyID0gSnNfb2Zfb2NhbWxfX1dvcmtlclxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5YbWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIFhtbEh0dHBSZXF1ZXN0ID0gSnNfb2Zfb2NhbWxfX1htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9fID0gc3RydWN0IGVuZFxuW0BAZGVwcmVjYXRlZCBcInRoaXMgbW9kdWxlIGlzIHNoYWRvd2VkXCJdXG4iLCIoKiBKc19vZl9vY2FtbFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcblxuICBleHRlcm5hbCAoID49ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZW5kXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbiAgZXh0ZXJuYWwgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbigqIFRoaXMgbG9jYWwgbW9kdWxlIFtKc10gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHBweF9qcyBleHRlbnNpb24gd29yayB3aXRoaW4gdGhhdCBmaWxlLiAqKVxubW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgKydhIHRcblxuICB0eXBlICgtJ2EsICsnYikgbWV0aF9jYWxsYmFja1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHRvcFxuXG4gICAgdHlwZSBhbnkgPSB0b3AgdFxuXG4gICAgdHlwZSBhbnlfanNfYXJyYXkgPSBhbnlcblxuICAgIGV4dGVybmFsIGluamVjdCA6ICdhIC0+IGFueSA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGNvZXJjZSA6IF8gdCAtPiBfIHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgICBleHRlcm5hbCBnZXQgOiAnYSAtPiAnYiAtPiAnYyA9IFwiY2FtbF9qc19nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0IDogJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCA9IFwiY2FtbF9qc19zZXRcIlxuXG4gICAgZXh0ZXJuYWwgZGVsZXRlIDogJ2EgLT4gJ2IgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbCA6ICdhIC0+ICdiIC0+IGFueSBhcnJheSAtPiAnYyA9IFwiY2FtbF9qc19jYWxsXCJcblxuICAgIGV4dGVybmFsIGZ1bl9jYWxsIDogJ2EgLT4gYW55IGFycmF5IC0+ICdiID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbCA6ICdhIC0+IHN0cmluZyAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICAgIGV4dGVybmFsIG5ld19vYmogOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfbmV3XCJcblxuICAgIGV4dGVybmFsIG5ld19vYmpfYXJyIDogJ2EgLT4gYW55X2pzX2FycmF5IC0+ICdiID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICAgIGV4dGVybmFsIG9iaiA6IChzdHJpbmcgKiBhbnkpIGFycmF5IC0+ICdhID0gXCJjYW1sX2pzX29iamVjdFwiXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogJ2EgLT4gJ2IgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgZXZhbF9zdHJpbmcgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfZXZhbF9zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwganNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19leHByXCJcblxuICAgIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gICAgbGV0IGdsb2JhbCA9IHB1cmVfanNfZXhwciBcImdsb2JhbFRoaXNcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAgIChhbnlfanNfYXJyYXkgLT4gJ2IpIC0+ICgnYywgYW55X2pzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFja193aXRoX2FyaXR5IDogaW50IC0+ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFjayA6ICgnYiAtPiAnYSkgLT4gKCdiLCAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZVwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0XCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKCdiIC0+IGFueV9qc19hcnJheSAtPiAnYSkgLT4gKCdiLCBhbnlfanNfYXJyYXkgLT4gJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gICAgKCogREVQUkVDQVRFRCAqKVxuICAgIGV4dGVybmFsIHZhcmlhYmxlIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX3ZhclwiXG4gIGVuZFxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2Egb3B0ID0gJ2FcblxuICB0eXBlICdhIG9wdGRlZiA9ICdhXG5cbiAgZXh0ZXJuYWwgZGVidWdnZXIgOiB1bml0IC0+IHVuaXQgPSBcImRlYnVnZ2VyXCJcblxuICBsZXQgbnVsbCA6ICdhIG9wdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJudWxsXCJcblxuICBleHRlcm5hbCBzb21lIDogJ2EgLT4gJ2Egb3B0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCB1bmRlZmluZWQgOiAnYSBvcHRkZWYgPSBVbnNhZmUucHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSBvcHRkZWYgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIHR5cGUgT1BUID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZW1wdHkgOiAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgdmFsIG1hcCA6ICdhIHQgLT4gKCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAgIHZhbCB0ZXN0IDogJ2EgdCAtPiBib29sXG5cbiAgICB2YWwgaXRlciA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAgIHZhbCBjYXNlIDogJ2EgdCAtPiAodW5pdCAtPiAnYikgLT4gKCdhIC0+ICdiKSAtPiAnYlxuXG4gICAgdmFsIGdldCA6ICdhIHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXG5cbiAgICB2YWwgb3B0aW9uIDogJ2Egb3B0aW9uIC0+ICdhIHRcblxuICAgIHZhbCB0b19vcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvblxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuICBlbmRcblxuICBtb2R1bGUgT3B0IDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0XG5cbiAgICBsZXQgZW1wdHkgPSBudWxsXG5cbiAgICBsZXQgcmV0dXJuID0gc29tZVxuXG4gICAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgbGV0IG1hcCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIG51bGwgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKGVxdWFscyB4IG51bGwpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKGVxdWFscyB4IG51bGwpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGRlZiA6IE9QVCB3aXRoIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGRlZlxuXG4gICAgbGV0IGVtcHR5ID0gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmV0dXJuID0gZGVmXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSByZXR1cm4gKGYgeClcblxuICAgIGxldCBiaW5kIHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiB1bmRlZmluZWQgZWxzZSBmIHhcblxuICAgIGxldCB0ZXN0IHggPSBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpXG5cbiAgICBsZXQgaXRlciB4IGYgPSBpZiBub3QgKHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQpIHRoZW4gZiB4XG5cbiAgICBsZXQgY2FzZSB4IGYgZyA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgZyB4XG5cbiAgICBsZXQgZ2V0IHggZiA9IGlmIHN0cmljdF9lcXVhbHMgeCB1bmRlZmluZWQgdGhlbiBmICgpIGVsc2UgeFxuXG4gICAgbGV0IG9wdGlvbiB4ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGVtcHR5XG4gICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuXG4gICAgbGV0IHRvX29wdGlvbiB4ID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgbGV0IGNvZXJjZSB4IGYgZyA9IE9wdC5nZXQgKGYgeCkgKGZ1biAoKSAtPiBnIHgpXG5cbiAgbGV0IGNvZXJjZV9vcHQgeCBmIGcgPSBPcHQuZ2V0IChPcHQuYmluZCB4IGYpIChmdW4gKCkgLT4gZyB4KVxuXG4gICgqKioqKVxuXG4gIHR5cGUgKydhIG1ldGhcblxuICB0eXBlICsnYSBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcmVhZG9ubHlfcHJvcCA9IDwgZ2V0IDogJ2EgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egd3JpdGVvbmx5X3Byb3AgPSA8IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2EgcHJvcCA9IDwgZ2V0IDogJ2EgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICdhIG9wdGRlZl9wcm9wID0gPCBnZXQgOiAnYSBvcHRkZWYgOyBzZXQgOiAnYSAtPiB1bml0ID4gZ2VuX3Byb3BcblxuICB0eXBlICsnYSBjb25zdHJcblxuICAoKioqKilcblxuICB0eXBlICdhIGNhbGxiYWNrID0gKHVuaXQsICdhKSBtZXRoX2NhbGxiYWNrXG5cbiAgZXh0ZXJuYWwgd3JhcF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tcIlxuXG4gIGV4dGVybmFsIHdyYXBfbWV0aF9jYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdhLCAnYikgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja1wiXG5cbiAgKCoqKiopXG5cbiAgZXh0ZXJuYWwgZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAoKioqKilcblxuICBsZXQgX3RydWUgPSBVbnNhZmUucHVyZV9qc19leHByIFwidHJ1ZVwiXG5cbiAgbGV0IF9mYWxzZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJmYWxzZVwiXG5cbiAgdHlwZSBtYXRjaF9yZXN1bHRfaGFuZGxlXG5cbiAgdHlwZSBzdHJpbmdfYXJyYXlcblxuICB0eXBlIG51bWJlcl90ID0gZmxvYXRcblxuICBjbGFzcyB0eXBlIG51bWJlciA9IG9iamVjdFxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZ19yYWRpeCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9GaXhlZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9FeHBvbmVudGlhbCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsX2RpZ2l0cyA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9QcmVjaXNpb24gOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuICBlbmRcblxuICBhbmQganNfc3RyaW5nID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHZhbHVlT2YgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY2hhckF0IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQ29kZUF0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICAgICgqIFRoaXMgbWF5IHJldHVybiBOYU4uLi4gKilcbiAgICBtZXRob2QgY29uY2F0IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8yIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF8zIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNvbmNhdF80IDpcbiAgICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBpbmRleE9mX2Zyb20gOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZiA6IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbGFzdEluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxvY2FsZUNvbXBhcmUgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgICBtZXRob2QgX21hdGNoIDogcmVnRXhwIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIG5vcm1hbGl6ZV9mb3JtIDogbm9ybWFsaXphdGlvbiB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCByZXBsYWNlIDogcmVnRXhwIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2Vfc3RyaW5nIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNlYXJjaCA6IHJlZ0V4cCB0IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZV9lbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0IDoganNfc3RyaW5nIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X2xpbWl0ZWQgOiBqc19zdHJpbmcgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cCA6IHJlZ0V4cCB0IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzcGxpdF9yZWdFeHBMaW1pdGVkIDogcmVnRXhwIHQgLT4gaW50IC0+IHN0cmluZ19hcnJheSB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmcgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzdWJzdHJpbmdfdG9FbmQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlTG93ZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvTG9jYWxlVXBwZXJDYXNlIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRyaW0gOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgYW5kIHJlZ0V4cCA9IG9iamVjdFxuICAgIG1ldGhvZCBleGVjIDoganNfc3RyaW5nIHQgLT4gbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IG9wdCBtZXRoXG5cbiAgICBtZXRob2QgdGVzdCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc291cmNlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGdsb2JhbCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgaWdub3JlQ2FzZSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbXVsdGlsaW5lIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBsYXN0SW5kZXggOiBpbnQgcHJvcFxuICBlbmRcblxuICBhbmQgbm9ybWFsaXphdGlvbiA9IGpzX3N0cmluZ1xuXG4gICgqIHN0cmluZyBpcyB1c2VkIGJ5IHBweF9qcywgaXQgbmVlZHMgdG8gY29tZSBiZWZvcmUgYW55IHVzZSBvZiB0aGVcbiAgICAgbmV3IHN5bnRheCBpbiB0aGlzIGZpbGUgKilcbiAgZXh0ZXJuYWwgc3RyaW5nIDogc3RyaW5nIC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1wiXG5cbiAgbGV0IG5mYyA9IHN0cmluZyBcIk5GQ1wiXG5cbiAgbGV0IG5mZCA9IHN0cmluZyBcIk5GRFwiXG5cbiAgbGV0IG5ma2MgPSBzdHJpbmcgXCJORktDXCJcblxuICBsZXQgbmZrZCA9IHN0cmluZyBcIk5GS0RcIlxuZW5kXG5cbmluY2x1ZGUgSnNcblxuY2xhc3MgdHlwZSBzdHJpbmdfY29uc3RyID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tQ2hhckNvZGUgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBzdHJpbmdfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9TdHJpbmdcblxubGV0IHJlZ0V4cCA9IFVuc2FmZS5nbG9iYWwjIy5fUmVnRXhwXG5cbmxldCByZWdFeHBfY29weSA9IHJlZ0V4cFxuXG5sZXQgcmVnRXhwX3dpdGhGbGFncyA9IHJlZ0V4cFxuXG5jbGFzcyB0eXBlIFsnYV0ganNfYXJyYXkgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgY29uY2F0IDogJ2EganNfYXJyYXkgdCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgam9pbiA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcG9wIDogJ2Egb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgcHVzaCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHB1c2hfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHJldmVyc2UgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2hpZnQgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydCA6ICgnYSAtPiAnYSAtPiBudW1iZXJfdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNvcnRfYXNTdHJpbmdzIDogJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZSA6IGludCAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8xIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzIgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMyA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV80IDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdCA6ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMiA6ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfMyA6ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHVuc2hpZnRfNCA6ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNvbWUgOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gYm9vbCB0KSBjYWxsYmFjayAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBldmVyeSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvckVhY2ggOiAoJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1hcCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGZpbHRlciA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VfaW5pdCA6ICgnYiAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgLT4gJ2IgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2UgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHRfaW5pdCA6XG4gICAgKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZVJpZ2h0IDogKCdhIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdhKSBjYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5lbmRcblxubGV0IG9iamVjdF9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fT2JqZWN0XG5cbmxldCBvYmplY3Rfa2V5cyBvIDoganNfc3RyaW5nIHQganNfYXJyYXkgdCA9IG9iamVjdF9jb25zdHJ1Y3RvciMja2V5cyBvXG5cbmxldCBhcnJheV9jb25zdHJ1Y3RvciA9IFVuc2FmZS5nbG9iYWwjIy5fQXJyYXlcblxubGV0IGFycmF5X2VtcHR5ID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2xlbmd0aCA9IGFycmF5X2NvbnN0cnVjdG9yXG5cbmxldCBhcnJheV9nZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gVW5zYWZlLmdldFxuXG5sZXQgYXJyYXlfc2V0IDogJ2EgI2pzX2FycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBVbnNhZmUuc2V0XG5cbmxldCBhcnJheV9tYXBfcG9seSA6XG4gICAgJ2EgI2pzX2FycmF5IHQgLT4gKCdhIC0+IGludCAtPiAnYSAjanNfYXJyYXkgdCAtPiAnYikgY2FsbGJhY2sgLT4gJ2IgI2pzX2FycmF5IHQgPVxuIGZ1biBhIGNiIC0+IChVbnNhZmUuY29lcmNlIGEpIyNtYXAgY2JcblxubGV0IGFycmF5X21hcCBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBfaWR4IF8gLT4gZiB4KSlcblxubGV0IGFycmF5X21hcGkgZiBhID0gYXJyYXlfbWFwX3BvbHkgYSAod3JhcF9jYWxsYmFjayAoZnVuIHggaWR4IF8gLT4gZiBpZHggeCkpXG5cbmNsYXNzIHR5cGUgbWF0Y2hfcmVzdWx0ID0gb2JqZWN0XG4gIGluaGVyaXQgW2pzX3N0cmluZyB0XSBqc19hcnJheVxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlucHV0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBzdHJfYXJyYXkgOiBzdHJpbmdfYXJyYXkgdCAtPiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gVW5zYWZlLmNvZXJjZVxuXG5sZXQgbWF0Y2hfcmVzdWx0IDogbWF0Y2hfcmVzdWx0X2hhbmRsZSB0IC0+IG1hdGNoX3Jlc3VsdCB0ID0gVW5zYWZlLmNvZXJjZVxuXG5jbGFzcyB0eXBlIGRhdGUgPSBvYmplY3RcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0RhdGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvVGltZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVUaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB2YWx1ZU9mIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGdWxsWWVhciA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0Z1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TW9udGggOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldERhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXRlIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRGF5IDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SG91cnMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaW51dGVzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0U2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ1NlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENNaWxsaXNlY29uZHMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUaW1lem9uZU9mZnNldCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZ1bGxZZWFyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNb250aCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RhdGUgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENEYXkgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRIb3VycyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0hvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbnV0ZXMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDU2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ01pbGxpc2Vjb25kcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRvVVRDU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0lTT1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9KU09OIDogJ2EgLT4ganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgZGF0ZV9jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21vbnRoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfZGF5IDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfaG91ciA6IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbWluIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfc2VjIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBfVVRDX21zIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgbm93IDogbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBkYXRlX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRGF0ZVxuXG5sZXQgZGF0ZSA6IGRhdGVfY29uc3RyIHQgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ub3cgOiBkYXRlIHQgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfZnJvbVRpbWVWYWx1ZSA6IChudW1iZXJfdCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21vbnRoIDogKGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9kYXkgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9ob3VyIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX21pbiA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfc2VjIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbXMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID1cbiAgZGF0ZV9jb25zdHJcblxuY2xhc3MgdHlwZSBtYXRoID0gb2JqZWN0XG4gIG1ldGhvZCBfRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xOMTAgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT0cyRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzEwRSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1BJIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1FSVDFfMl8gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMiA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhc2luIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBhdGFuMiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY2VpbCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgY29zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBleHAgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGZsb29yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBsb2cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1heF80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl8zIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtaW5fNCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgcG93IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCByYW5kb20gOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJvdW5kIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNxcnQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHRhbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcbmVuZFxuXG5sZXQgbWF0aCA9IFVuc2FmZS5nbG9iYWwjIy5fTWF0aFxuXG5jbGFzcyB0eXBlIGVycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdGFjayA6IGpzX3N0cmluZyB0IG9wdGRlZiBwcm9wXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbmxldCBlcnJvcl9jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX0Vycm9yXG5cbm1vZHVsZSBKc19lcnJvciA9IHN0cnVjdFxuICB0eXBlIGVycm9yX3QgPSBlcnJvciB0XG5cbiAgaW5jbHVkZSBKc29vX3J1bnRpbWUuRXJyb3JcblxuICBleHRlcm5hbCBvZl9lcnJvciA6IGVycm9yX3QgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuICBleHRlcm5hbCB0b19lcnJvciA6IHQgLT4gZXJyb3JfdCA9IFwiJWlkZW50aXR5XCJcblxuICBsZXQgbmFtZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm5hbWVcblxuICBsZXQgbWVzc2FnZSBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjLm1lc3NhZ2VcblxuICBsZXQgc3RhY2sgKGUgOiB0KSA6IHN0cmluZyBvcHRpb24gPVxuICAgIE9wdC50b19vcHRpb24gKE9wdC5tYXAgKHRvX2Vycm9yIGUpIyMuc3RhY2sgdG9fc3RyaW5nKVxuXG4gIGxldCB0b19zdHJpbmcgZSA9IHRvX3N0cmluZyAodG9fZXJyb3IgZSkjI3RvU3RyaW5nXG5lbmRcblxubW9kdWxlIE1hZ2ljID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgICBleGNlcHRpb24gRXJyb3Igb2YgZXJyb3IgdFxuICBlbmRcblxuICB0eXBlICgnYSwgJ2IpIGVxID0gRXEgOiAoJ2EsICdhKSBlcVxuXG4gIGxldCAoZXEgOiAoZXJyb3IgdCwgSnNfZXJyb3IudCkgZXEpID0gT2JqLm1hZ2ljIEVxXG5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGVxIHdpdGhcbiAgICB8IEVxIC0+XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgZXhjZXB0aW9uIEVycm9yID0gSnNfZXJyb3IuRXhuXG4gICAgICAgIGVuZCA6IFQpXG5cbiAgbW9kdWxlIEVycm9yID0gKHZhbCBtIDogVClcbmVuZFxuXG5pbmNsdWRlIE1hZ2ljLkVycm9yXG5cbmxldCByYWlzZV9qc19lcnJvciBlID0gSnNfZXJyb3IucmFpc2VfIChKc19lcnJvci5vZl9lcnJvciBlKVxuXG5sZXQgc3RyaW5nX29mX2Vycm9yIGUgPSBKc19lcnJvci50b19zdHJpbmcgKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBleG5fd2l0aF9qc19iYWNrdHJhY2UgPSBKc19lcnJvci5hdHRhY2hfanNfYmFja3RyYWNlXG5cbmV4dGVybmFsIGpzX2Vycm9yX29mX2V4biA6IGV4biAtPiBlcnJvciB0IG9wdCA9IFwiY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cIlxuXG5jbGFzcyB0eXBlIGpzb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlIDoganNfc3RyaW5nIHQgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBzdHJpbmdpZnkgOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IF9KU09OIDoganNvbiB0ID0gVW5zYWZlLmdsb2JhbCMjLl9KU09OXG5cbmxldCBkZWNvZGVVUkkgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZGVjb2RlVVJJQ29tcG9uZW50IChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmRlY29kZVVSSUNvbXBvbmVudCBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlbmNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZW5jb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVzY2FwZSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IHVuZXNjYXBlIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLnVuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5leHRlcm5hbCBib29sIDogYm9vbCAtPiBib29sIHQgPSBcImNhbWxfanNfZnJvbV9ib29sXCJcblxuZXh0ZXJuYWwgdG9fYm9vbCA6IGJvb2wgdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuXG5leHRlcm5hbCBhcnJheSA6ICdhIGFycmF5IC0+ICdhIGpzX2FycmF5IHQgPSBcImNhbWxfanNfZnJvbV9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2FycmF5IDogJ2EganNfYXJyYXkgdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbmV4dGVybmFsIGJ5dGVzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB0b19ieXRlc3RyaW5nIDoganNfc3RyaW5nIHQgLT4gc3RyaW5nID0gXCJjYW1sX3N0cmluZ19vZl9qc2J5dGVzXCJcblxuZXh0ZXJuYWwgZmxvYXQgOiBmbG9hdCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBudW1iZXJfdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIG51bWJlcl9vZl9mbG9hdCA6IGZsb2F0IC0+IG51bWJlciB0ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiBudW1iZXIgdCAtPiBmbG9hdCA9IFwiY2FtbF9qc190b19mbG9hdFwiXG5cbmV4dGVybmFsIGludDMyIDogaW50MzIgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9pbnQzMlwiXG5cbmV4dGVybmFsIHRvX2ludDMyIDogbnVtYmVyX3QgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG5leHRlcm5hbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gbnVtYmVyX3QgPSBcImNhbWxfanNfZnJvbV9uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBudW1iZXJfdCAtPiBuYXRpdmVpbnQgPSBcImNhbWxfanNfdG9fbmF0aXZlaW50XCJcblxuZXh0ZXJuYWwgdHlwZW9mIDogXyB0IC0+IGpzX3N0cmluZyB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbmV4dGVybmFsIGluc3RhbmNlb2YgOiBfIHQgLT4gXyBjb25zdHIgLT4gYm9vbCA9IFwiY2FtbF9qc19pbnN0YW5jZW9mXCJcblxubGV0IGlzTmFOIChpIDogJ2EpIDogYm9vbCA9XG4gIHRvX2Jvb2wgKFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuaXNOYU4gW3wgVW5zYWZlLmluamVjdCBpIHxdKVxuXG5sZXQgcGFyc2VJbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBpbnQgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VJbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdIGluXG4gIGlmIGlzTmFOIHMgdGhlbiBmYWlsd2l0aCBcInBhcnNlSW50XCIgZWxzZSBzXG5cbmxldCBwYXJzZUZsb2F0IChzIDoganNfc3RyaW5nIHQpIDogbnVtYmVyX3QgPVxuICBsZXQgcyA9IFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMucGFyc2VGbG9hdCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VGbG9hdFwiIGVsc2Ugc1xuXG5sZXQgXyA9XG4gIFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEpzX2Vycm9yLkV4biBlIC0+IFNvbWUgKEpzX2Vycm9yLnRvX3N0cmluZyBlKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGUgLT5cbiAgICAgIGxldCBlIDogPCAuLiA+IHQgPSBPYmoubWFnaWMgZSBpblxuICAgICAgaWYgaW5zdGFuY2VvZiBlIGFycmF5X2NvbnN0cnVjdG9yIHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvX3N0cmluZyBlIyN0b1N0cmluZykpXG5cbmxldCBleHBvcnRfanMgKGZpZWxkIDoganNfc3RyaW5nIHQpIHggPVxuICBVbnNhZmUuc2V0XG4gICAgKFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJqc29vX2V4cG9ydHNcIilcbiAgICBmaWVsZFxuICAgIChpZiBTdHJpbmcuZXF1YWwgKEpzLnRvX3N0cmluZyAodHlwZW9mIChPYmoubWFnaWMgeCkpKSBcImZ1bmN0aW9uXCJcbiAgICAgICAgKCogZnVuY3Rpb24gd2l0aCBhcml0eS9sZW5ndGggZXF1YWwgdG8gemVybyBhcmUgYWxyZWFkeSB3cmFwcGVkICopXG4gICAgICAgICYmIFVuc2FmZS5nZXQgKE9iai5tYWdpYyB4KSAoSnMuc3RyaW5nIFwibGVuZ3RoXCIpID4gMFxuICAgICB0aGVuIE9iai5tYWdpYyAod3JhcF9jYWxsYmFjayAoT2JqLm1hZ2ljIHgpKVxuICAgICBlbHNlIHgpXG5cbmxldCBleHBvcnQgZmllbGQgeCA9IGV4cG9ydF9qcyAoc3RyaW5nIGZpZWxkKSB4XG5cbmxldCBleHBvcnRfYWxsIG9iaiA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgb2JqIGluXG4gIGtleXMjI2ZvckVhY2hcbiAgICAod3JhcF9jYWxsYmFjayAoZnVuIChrZXkgOiBqc19zdHJpbmcgdCkgXyBfIC0+IGV4cG9ydF9qcyBrZXkgKFVuc2FmZS5nZXQgb2JqIGtleSkpKVxuXG4oKioqKilcblxuKCogREVQUkVDQVRFRCAqKVxuXG50eXBlIGZsb2F0X3Byb3AgPSBudW1iZXJfdCBwcm9wXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgWydub2RlXSBub2RlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGxpc3Rfb2Zfbm9kZUxpc3QgKG5vZGVMaXN0IDogJ2Egbm9kZUxpc3QgdCkgPVxuICBsZXQgbGVuZ3RoID0gbm9kZUxpc3QjIy5sZW5ndGggaW5cbiAgbGV0IHJlYyBhZGRfaXRlbSBhY2MgaSA9XG4gICAgaWYgaSA8IGxlbmd0aFxuICAgIHRoZW5cbiAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKG5vZGVMaXN0IyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhZGRfaXRlbSBhY2MgKGkgKyAxKVxuICAgICAgfCBTb21lIGUgLT4gYWRkX2l0ZW0gKGUgOjogYWNjKSAoaSArIDEpXG4gICAgZWxzZSBMaXN0LnJldiBhY2NcbiAgaW5cbiAgYWRkX2l0ZW0gW10gMFxuXG50eXBlIG5vZGVUeXBlID1cbiAgfCBPVEhFUlxuICAoKiBXaWxsIG5vdCBoYXBwZW4gKilcbiAgfCBFTEVNRU5UXG4gIHwgQVRUUklCVVRFXG4gIHwgVEVYVFxuICB8IENEQVRBX1NFQ1RJT05cbiAgfCBFTlRJVFlfUkVGRVJFTkNFXG4gIHwgRU5USVRZXG4gIHwgUFJPQ0VTU0lOR19JTlNUUlVDVElPTlxuICB8IENPTU1FTlRcbiAgfCBET0NVTUVOVFxuICB8IERPQ1VNRU5UX1RZUEVcbiAgfCBET0NVTUVOVF9GUkFHTUVOVFxuICB8IE5PVEFUSU9OXG5cbm1vZHVsZSBEb2N1bWVudFBvc2l0aW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIHR5cGUgbWFzayA9IGludFxuXG4gIGxldCBkaXNjb25uZWN0ZWQgPSAweDAxXG5cbiAgbGV0IHByZWNlZGluZyA9IDB4MDJcblxuICBsZXQgZm9sbG93aW5nID0gMHgwNFxuXG4gIGxldCBjb250YWlucyA9IDB4MDhcblxuICBsZXQgY29udGFpbmVkX2J5ID0gMHgxMFxuXG4gIGxldCBpbXBsZW1lbnRhdGlvbl9zcGVjaWZpYyA9IDB4MjBcblxuICBsZXQgaGFzIHQgbWFzayA9IHQgbGFuZCBtYXNrID0gbWFza1xuXG4gIGxldCBhZGQgeCB5ID0geCBsb3IgeVxuXG4gIGxldCAoICsgKSA9IGFkZFxuZW5kXG5cbmNsYXNzIHR5cGUgbm9kZSA9IG9iamVjdFxuICBtZXRob2Qgbm9kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVWYWx1ZSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5vZGVUeXBlIDogbm9kZVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGNoaWxkTm9kZXMgOiBub2RlIG5vZGVMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBmaXJzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIGxhc3RDaGlsZCA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgb3B0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0QmVmb3JlIDogbm9kZSB0IC0+IG5vZGUgdCBvcHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBhcHBlbmRDaGlsZCA6IG5vZGUgdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCBoYXNDaGlsZE5vZGVzIDogYm9vbCB0IG1ldGhcblxuICBtZXRob2QgY2xvbmVOb2RlIDogYm9vbCB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIDogbm9kZSB0IC0+IERvY3VtZW50UG9zaXRpb24udCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cE5hbWVzcGFjZVVSSSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxvb2t1cFByZWZpeCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5lbmRcblxubGV0IGFwcGVuZENoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjYXBwZW5kQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlbW92ZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSA9IGlnbm9yZSAocCMjcmVtb3ZlQ2hpbGQgKG4gOj4gbm9kZSB0KSlcblxubGV0IHJlcGxhY2VDaGlsZCAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0KSA9XG4gIGlnbm9yZSAocCMjcmVwbGFjZUNoaWxkIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0KSlcblxubGV0IGluc2VydEJlZm9yZSAocCA6ICNub2RlIHQpIChuIDogI25vZGUgdCkgKG8gOiAjbm9kZSB0IG9wdCkgPVxuICBpZ25vcmUgKHAjI2luc2VydEJlZm9yZSAobiA6PiBub2RlIHQpIChvIDo+IG5vZGUgdCBvcHQpKVxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbQXR0cl0gb2JqZWN0cy4gKilcbmNsYXNzIHR5cGUgYXR0ciA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlY2lmaWVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG93bmVyRWxlbWVudCA6IGVsZW1lbnQgdCBwcm9wXG5lbmRcblxuKCoqIFNwZWNpZmljYXRpb24gb2YgW05hbWVkTm9kZU1hcF0gb2JqZWN0cy4gKilcbmFuZCBbJ25vZGVdIG5hbWVkTm9kZU1hcCA9IG9iamVjdFxuICBtZXRob2QgZ2V0TmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXROYW1lZEl0ZW0gOiAnbm9kZSB0IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlTmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbRWxlbWVudF0gb2JqZWN0cy4gKilcbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCB0YWdOYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0F0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlIDoganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUF0dHJpYnV0ZU5vZGUgOiBhdHRyIHQgLT4gYXR0ciB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTm9kZU5TIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gYXR0ciB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZU5vZGVOUyA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IG5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0ciBuYW1lZE5vZGVNYXAgdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBjaGFyYWN0ZXJEYXRhID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBkYXRhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJqc19zdHJpbmdEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZERhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0RGF0YSA6IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlRGF0YSA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VEYXRhIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGNvbW1lbnQgPSBjaGFyYWN0ZXJEYXRhXG5cbmNsYXNzIHR5cGUgdGV4dCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSBkb2N1bWVudEZyYWdtZW50ID0gbm9kZVxuXG5jbGFzcyB0eXBlIFsnZWxlbWVudF0gZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6ICdlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVEb2N1bWVudEZyYWdtZW50IDogZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlRWxlbWVudCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50TlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlVGV4dE5vZGUgOiBqc19zdHJpbmcgdCAtPiB0ZXh0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVDb21tZW50IDoganNfc3RyaW5nIHQgLT4gY29tbWVudCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudEJ5SWQgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlUYWdOYW1lIDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGltcG9ydE5vZGUgOiBlbGVtZW50IHQgLT4gYm9vbCB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBhZG9wdE5vZGUgOiBlbGVtZW50IHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5lbmRcblxudHlwZSBub2RlX3R5cGUgPVxuICB8IEVsZW1lbnQgb2YgZWxlbWVudCB0XG4gIHwgQXR0ciBvZiBhdHRyIHRcbiAgfCBUZXh0IG9mIHRleHQgdFxuICB8IE90aGVyIG9mIG5vZGUgdFxuXG5sZXQgbm9kZVR5cGUgZSA9XG4gIG1hdGNoIGUjIy5ub2RlVHlwZSB3aXRoXG4gIHwgRUxFTUVOVCAtPiBFbGVtZW50IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgQVRUUklCVVRFIC0+IEF0dHIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBDREFUQV9TRUNUSU9OIHwgVEVYVCAtPiBUZXh0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gIHwgXyAtPiBPdGhlciAoZSA6PiBub2RlIHQpXG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgY2FzdCAoZSA6ICNub2RlIEpzLnQpIHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSB0IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgZWxlbWVudCBlIDogZWxlbWVudCBKcy50IEpzLm9wdCA9IGNhc3QgZSBFTEVNRU5UXG5cbiAgbGV0IHRleHQgZSA6IHRleHQgSnMudCBKcy5vcHQgPVxuICAgIGlmIGUjIy5ub2RlVHlwZSA9PSBURVhUIHx8IGUjIy5ub2RlVHlwZSA9PSBDREFUQV9TRUNUSU9OXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGF0dHIgZSA6IGF0dHIgSnMudCBKcy5vcHQgPSBjYXN0IGUgQVRUUklCVVRFXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IgLT4gYm9vbCB0KSBtZXRoX2NhbGxiYWNrIG9wdFxuKCoqIFRoZSB0eXBlIG9mIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9ucy4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlclxuICAgICAgWydhXSBpcyB0aGUgdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdDsgdGhlIHNlY29uZCBwYXJhbWV0ZXJcbiAgICAgIFsnYl0gaXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IG9iamVjdC4gKilcblxuY2xhc3MgdHlwZSBbJ2FdIGV2ZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGFyZ2V0IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gICgqIExlZ2FjeSBtZXRob2RzICopXG4gIG1ldGhvZCBzcmNFbGVtZW50IDogJ2EgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gY3VzdG9tRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6ICdiIEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IG5vX2hhbmRsZXIgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9IEpzLm51bGxcblxubGV0IHdpbmRvd19ldmVudCAoKSA6ICdhICNldmVudCB0ID0gSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcImV2ZW50XCJcblxuKCogVGhlIGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0IG11c3QgYmUgY2FsbGVkIGV4cGxpY2l0bHkgd2hlblxuICAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4uLiAqKVxubGV0IGhhbmRsZXIgZiA9XG4gIEpzLnNvbWVcbiAgICAoSnMuVW5zYWZlLmNhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZC4gKilcbiAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgKHNvbWUgZSkpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgbGV0IGUgPSB3aW5kb3dfZXZlbnQgKCkgaW5cbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGZ1bGxfaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUubWV0aF9jYWxsYmFjayAoZnVuIHRoaXMgZSAtPlxuICAgICAgICAgKCogZGVwZW5kaW5nIG9uIHRoZSBpbnRlcm5ldCBleHBsb3JlciB2ZXJzaW9uLCBlIGNhbiBiZSBudWxsIG9yIHVuZGVmaW5lZCAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiB0aGlzIGUgaW5cbiAgICAgICAgICAgaWYgbm90IChKcy50b19ib29sIHJlcykgdGhlbiBlIyMucmV0dXJuVmFsdWUgOj0gcmVzO1xuICAgICAgICAgICByZXMpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGUpIyNwcmV2ZW50RGVmYXVsdDtcbiAgICAgICAgICAgcmVzKSlcblxubGV0IGludm9rZV9oYW5kbGVyIChmIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIpICh0aGlzIDogJ2EpIChldmVudCA6ICdiKSA6IGJvb2wgdCA9XG4gIEpzLlVuc2FmZS5jYWxsIGYgdGhpcyBbfCBKcy5VbnNhZmUuaW5qZWN0IGV2ZW50IHxdXG5cbmxldCBldmVudFRhcmdldCAoZSA6ICg8IC4uID4gYXMgJ2EpICNldmVudCB0KSA6ICdhIHQgPVxuICBsZXQgdGFyZ2V0ID1cbiAgICBPcHQuZ2V0IGUjIy50YXJnZXQgKGZ1biAoKSAtPiBPcHQuZ2V0IGUjIy5zcmNFbGVtZW50IChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgaW5cbiAgaWYgSnMuaW5zdGFuY2VvZiB0YXJnZXQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Ob2RlXG4gIHRoZW5cbiAgICAoKiBXb3JrYXJvdW5kIGZvciBTYWZhcmkgYnVnICopXG4gICAgbGV0IHRhcmdldCcgOiBub2RlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlIHRhcmdldCBpblxuICAgIGlmIHRhcmdldCcjIy5ub2RlVHlwZSA9PSBURVhUXG4gICAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChPcHQuZ2V0IHRhcmdldCcjIy5wYXJlbnROb2RlIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICBlbHNlIHRhcmdldFxuICBlbHNlIHRhcmdldFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gIGxldCBtYWtlIHMgPSBKcy5zdHJpbmcgc1xuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSB1bml0IC0+IHVuaXRcblxuY2xhc3MgdHlwZSBldmVudF9saXN0ZW5lcl9vcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBjYXB0dXJlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2UgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGFzc2l2ZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5hZGRFdmVudExpc3RlbmVyKVxuICB0aGVuXG4gICAgbGV0IGV2ID0gKEpzLnN0cmluZyBcIm9uXCIpIyNjb25jYXQgdHlwIGluXG4gICAgbGV0IGNhbGxiYWNrIGUgPSBKcy5VbnNhZmUuY2FsbCAoaCwgZSwgW3x8XSkgaW5cbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYXR0YWNoRXZlbnQgZXYgY2FsbGJhY2sgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI2RldGFjaEV2ZW50IGV2IGNhbGxiYWNrXG4gIGVsc2VcbiAgICBsZXQgb3B0cyA6IGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIGxldCBpdGVyIHQgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGIgLT4gZiBiXG4gICAgaW5cbiAgICBpdGVyIGNhcHR1cmUgKGZ1biBiIC0+IG9wdHMjIy5jYXB0dXJlIDo9IGIpO1xuICAgIGl0ZXIgb25jZSAoZnVuIGIgLT4gb3B0cyMjLm9uY2UgOj0gYik7XG4gICAgaXRlciBwYXNzaXZlIChmdW4gYiAtPiBvcHRzIyMucGFzc2l2ZSA6PSBiKTtcbiAgICBsZXQgKCkgPSAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjYWRkRXZlbnRMaXN0ZW5lciB0eXAgaCBvcHRzIGluXG4gICAgZnVuICgpIC0+IChKcy5VbnNhZmUuY29lcmNlIGUpIyNyZW1vdmVFdmVudExpc3RlbmVyIHR5cCBoIG9wdHNcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgKGUgOiAoPCAuLiA+IGFzICdhKSB0KSB0eXAgaCBjYXB0ID1cbiAgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgdHlwIH5jYXB0dXJlOmNhcHQgaFxuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciBpZCA9IGlkICgpXG5cbmxldCBwcmV2ZW50RGVmYXVsdCBldiA9XG4gIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuY29lcmNlIGV2KSMjLnByZXZlbnREZWZhdWx0ICgqIElFIGhhY2sgKilcbiAgdGhlbiAoSnMuVW5zYWZlLmNvZXJjZSBldikjI3ByZXZlbnREZWZhdWx0XG4gIGVsc2UgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucmV0dXJuVmFsdWUgOj0gSnMuYm9vbCBmYWxzZVxuXG5sZXQgY3JlYXRlQ3VzdG9tRXZlbnQgP2J1YmJsZXMgP2NhbmNlbGFibGUgP2RldGFpbCB0eXAgPVxuICBsZXQgb3B0X2l0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHggLT4gZiB4XG4gIGluXG4gIGxldCBvcHRzID0gVW5zYWZlLm9iaiBbfHxdIGluXG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuYnViYmxlcyA6PSBib29sIHgpIGJ1YmJsZXM7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuY2FuY2VsYWJsZSA6PSBib29sIHgpIGNhbmNlbGFibGU7XG4gIG9wdF9pdGVyIChmdW4geCAtPiBvcHRzIyMuZGV0YWlsIDo9IHNvbWUgeCkgZGV0YWlsO1xuICBsZXQgY29uc3RyIDpcbiAgICAgICggICAoJ2EsICdiKSAjY3VzdG9tRXZlbnQgSnMudCBFdmVudC50eXBcbiAgICAgICAtPiA8IGRldGFpbCA6ICdiIG9wdCBwcm9wID4gdFxuICAgICAgIC0+ICgnYSwgJ2IpIGN1c3RvbUV2ZW50IHQpXG4gICAgICBjb25zdHIgPVxuICAgIFVuc2FmZS5nbG9iYWwjIy5fQ3VzdG9tRXZlbnRcbiAgaW5cbiAgbmV3JWpzIGNvbnN0ciB0eXAgb3B0c1xuXG4oKiBJRSA8IDkgKilcblxuY2xhc3MgdHlwZSBzdHJpbmdMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRhaW5zIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcbm9wZW4gSnNcblxudHlwZSB1aW50MzIgPSBmbG9hdFxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyID0gb2JqZWN0XG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiBhcnJheUJ1ZmZlciB0IG1ldGhcbmVuZFxuXG5sZXQgYXJyYXlCdWZmZXIgOiAoaW50IC0+IGFycmF5QnVmZmVyIHQpIGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fQXJyYXlCdWZmZXJcblxuY2xhc3MgdHlwZSBhcnJheUJ1ZmZlclZpZXcgPSBvYmplY3RcbiAgbWV0aG9kIGJ1ZmZlciA6IGFycmF5QnVmZmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnl0ZUxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB0eXBlZEFycmF5ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIF9CWVRFU19QRVJfRUxFTUVOVCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldF9mcm9tQXJyYXkgOiAnYSBqc19hcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0X2Zyb21UeXBlZEFycmF5IDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXkgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHN1YmFycmF5X3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzbGljZV90b0VuZCA6IGludCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgbWV0aFxuXG4gICgqIFRoaXMgZmFrZSBtZXRob2QgaXMgbmVlZGVkIGZvciB0eXBpbmcgcHVycG9zZXMuXG4gICAgIFdpdGhvdXQgaXQsIFsnYl0gd291bGQgbm90IGJlIGNvbnN0cmFpbmVkLiAqKVxuICBtZXRob2QgX2NvbnRlbnRfdHlwZV8gOiAnYiBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbnR5cGUgaW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF9zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDhBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50MTZBcnJheSA9IChpbnQsIEJpZ2FycmF5LmludDE2X3Vuc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQzMkFycmF5ID0gKGludDMyLCBCaWdhcnJheS5pbnQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDMyQXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgZmxvYXQ2NEFycmF5ID0gKGZsb2F0LCBCaWdhcnJheS5mbG9hdDY0X2VsdCkgdHlwZWRBcnJheVxuXG5leHRlcm5hbCBraW5kIDogKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgPSBcImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIGZyb21fZ2VuYXJyYXkgOlxuICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5IHRcbiAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG5leHRlcm5hbCB0b19nZW5hcnJheSA6XG4gICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudFxuICA9IFwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5XCJcblxubGV0IGludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbUFycmF5ID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQnVmZmVyID0gaW50OEFycmF5XG5cbmxldCBpbnQ4QXJyYXlfaW5CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IHVpbnQ4QXJyYXlfaW5CdWZmZXIgPSB1aW50OEFycmF5XG5cbmxldCBpbnQxNkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21BcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2Zyb21CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCBpbnQxNkFycmF5X2luQnVmZmVyID0gaW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MTZBcnJheVxuXG5sZXQgdWludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9pbkJ1ZmZlciA9IHVpbnQxNkFycmF5XG5cbmxldCBpbnQzMkFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21BcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2Zyb21CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCBpbnQzMkFycmF5X2luQnVmZmVyID0gaW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1VpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSB1aW50MzJBcnJheVxuXG5sZXQgdWludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9pbkJ1ZmZlciA9IHVpbnQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21BcnJheSA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0MzJBcnJheVxuXG5sZXQgZmxvYXQzMkFycmF5X2luQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21BcnJheSA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2Zyb21UeXBlZEFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUJ1ZmZlciA9IGZsb2F0NjRBcnJheVxuXG5sZXQgZmxvYXQ2NEFycmF5X2luQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBzZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPVxuIGZ1biBhIGkgdiAtPiBhcnJheV9zZXQgKFVuc2FmZS5jb2VyY2UgYSkgaSB2XG5cbmxldCBnZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhIG9wdGRlZiA9IGZ1biBhIGkgLT4gSnMuVW5zYWZlLmdldCBhIGlcblxubGV0IHVuc2FmZV9nZXQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+ICdhID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5jbGFzcyB0eXBlIGRhdGFWaWV3ID0gb2JqZWN0XG4gIGluaGVyaXQgYXJyYXlCdWZmZXJWaWV3XG5cbiAgbWV0aG9kIGdldEludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDggOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTYgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VWludDE2XyA6IGludCAtPiBib29sIHQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzIgOiBpbnQgLT4gaW50IG1ldGhcblxuICBtZXRob2QgZ2V0SW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzIgOiBpbnQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0VWludDMyXyA6IGludCAtPiBib29sIHQgLT4gdWludDMyIG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0MzJfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDY0XyA6IGludCAtPiBib29sIHQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQ4IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2XyA6IGludCAtPiBpbnQgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTYgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDMyIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzJfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMiA6IGludCAtPiB1aW50MzIgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQzMl8gOiBpbnQgLT4gdWludDMyIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMiA6IGludCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0RmxvYXQzMl8gOiBpbnQgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0IDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDY0XyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxubGV0IGRhdGFWaWV3ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9EYXRhVmlld1xuXG5sZXQgZGF0YVZpZXdfaW5CdWZmZXIgPSBkYXRhVmlld1xuXG5tb2R1bGUgQmlnc3RyaW5nID0gc3RydWN0XG4gIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgZXh0ZXJuYWwgdG9fYXJyYXlCdWZmZXIgOiB0IC0+IGFycmF5QnVmZmVyIEpzLnQgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiB0IC0+IHVpbnQ4QXJyYXkgSnMudCA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBvZl9hcnJheUJ1ZmZlciA6IGFycmF5QnVmZmVyIEpzLnQgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgb2ZfdWludDhBcnJheSA6IHVpbnQ4QXJyYXkgSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcblxuICBsZXQgb2ZfYXJyYXlCdWZmZXIgYWIgPVxuICAgIGxldCB1aW50OCA9IG5ldyVqcyB1aW50OEFycmF5X2Zyb21CdWZmZXIgYWIgaW5cbiAgICBvZl91aW50OEFycmF5IHVpbnQ4XG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGV4dGVybmFsIG9mX3VpbnQ4QXJyYXkgOiB1aW50OEFycmF5IEpzLnQgLT4gYnl0ZXMgPSBcImNhbWxfYnl0ZXNfb2ZfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX3VpbnQ4QXJyYXkgOiBieXRlcyAtPiB1aW50OEFycmF5IEpzLnQgPSBcImNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwiY2FuY2VsXCJcblxuICBsZXQgY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImNsaWNrXCJcblxuICBsZXQgY2xvc2UgPSBEb20uRXZlbnQubWFrZSBcImNsb3NlXCJcblxuICBsZXQgY29weSA9IERvbS5FdmVudC5tYWtlIFwiY29weVwiXG5cbiAgbGV0IGN1dCA9IERvbS5FdmVudC5tYWtlIFwiY3V0XCJcblxuICBsZXQgcGFzdGUgPSBEb20uRXZlbnQubWFrZSBcInBhc3RlXCJcblxuICBsZXQgZGJsY2xpY2sgPSBEb20uRXZlbnQubWFrZSBcImRibGNsaWNrXCJcblxuICBsZXQgbW91c2Vkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZWRvd25cIlxuXG4gIGxldCBtb3VzZXVwID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXVwXCJcblxuICBsZXQgbW91c2VvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW92ZXJcIlxuXG4gIGxldCBtb3VzZW1vdmUgPSBEb20uRXZlbnQubWFrZSBcIm1vdXNlbW92ZVwiXG5cbiAgbGV0IG1vdXNlb3V0ID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW91dFwiXG5cbiAgbGV0IGtleXByZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlwcmVzc1wiXG5cbiAgbGV0IGtleWRvd24gPSBEb20uRXZlbnQubWFrZSBcImtleWRvd25cIlxuXG4gIGxldCBrZXl1cCA9IERvbS5FdmVudC5tYWtlIFwia2V5dXBcIlxuXG4gIGxldCBtb3VzZXdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZXdoZWVsXCJcblxuICBsZXQgd2hlZWwgPSBEb20uRXZlbnQubWFrZSBcIndoZWVsXCJcblxuICBsZXQgX0RPTU1vdXNlU2Nyb2xsID0gRG9tLkV2ZW50Lm1ha2UgXCJET01Nb3VzZVNjcm9sbFwiXG5cbiAgbGV0IHRvdWNoc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRvdWNoc3RhcnRcIlxuXG4gIGxldCB0b3VjaG1vdmUgPSBEb20uRXZlbnQubWFrZSBcInRvdWNobW92ZVwiXG5cbiAgbGV0IHRvdWNoZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGVuZFwiXG5cbiAgbGV0IHRvdWNoY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGRyYWdzdGFydCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ3N0YXJ0XCJcblxuICBsZXQgZHJhZ2VuZCA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VuZFwiXG5cbiAgbGV0IGRyYWdlbnRlciA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2VudGVyXCJcblxuICBsZXQgZHJhZ292ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdvdmVyXCJcblxuICBsZXQgZHJhZ2xlYXZlID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnbGVhdmVcIlxuXG4gIGxldCBkcmFnID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnXCJcblxuICBsZXQgZHJvcCA9IERvbS5FdmVudC5tYWtlIFwiZHJvcFwiXG5cbiAgbGV0IGhhc2hjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImhhc2hjaGFuZ2VcIlxuXG4gIGxldCBjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcImNoYW5nZVwiXG5cbiAgbGV0IGlucHV0ID0gRG9tLkV2ZW50Lm1ha2UgXCJpbnB1dFwiXG5cbiAgbGV0IHRpbWV1cGRhdGUgPSBEb20uRXZlbnQubWFrZSBcInRpbWV1cGRhdGVcIlxuXG4gIGxldCBzdWJtaXQgPSBEb20uRXZlbnQubWFrZSBcInN1Ym1pdFwiXG5cbiAgbGV0IHNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwic2Nyb2xsXCJcblxuICBsZXQgZm9jdXMgPSBEb20uRXZlbnQubWFrZSBcImZvY3VzXCJcblxuICBsZXQgYmx1ciA9IERvbS5FdmVudC5tYWtlIFwiYmx1clwiXG5cbiAgbGV0IGxvYWQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCB1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcInVubG9hZFwiXG5cbiAgbGV0IGJlZm9yZXVubG9hZCA9IERvbS5FdmVudC5tYWtlIFwiYmVmb3JldW5sb2FkXCJcblxuICBsZXQgcmVzaXplID0gRG9tLkV2ZW50Lm1ha2UgXCJyZXNpemVcIlxuXG4gIGxldCBvcmllbnRhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwib3JpZW50YXRpb25jaGFuZ2VcIlxuXG4gIGxldCBwb3BzdGF0ZSA9IERvbS5FdmVudC5tYWtlIFwicG9wc3RhdGVcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBzZWxlY3QgPSBEb20uRXZlbnQubWFrZSBcInNlbGVjdFwiXG5cbiAgbGV0IG9ubGluZSA9IERvbS5FdmVudC5tYWtlIFwib25saW5lXCJcblxuICBsZXQgb2ZmbGluZSA9IERvbS5FdmVudC5tYWtlIFwib2ZmbGluZVwiXG5cbiAgbGV0IGNoZWNraW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGVja2luZ1wiXG5cbiAgbGV0IG5vdXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJub3VwZGF0ZVwiXG5cbiAgbGV0IGRvd25sb2FkaW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJkb3dubG9hZGluZ1wiXG5cbiAgbGV0IHByb2dyZXNzID0gRG9tLkV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IHVwZGF0ZXJlYWR5ID0gRG9tLkV2ZW50Lm1ha2UgXCJ1cGRhdGVyZWFkeVwiXG5cbiAgbGV0IGNhY2hlZCA9IERvbS5FdmVudC5tYWtlIFwiY2FjaGVkXCJcblxuICBsZXQgb2Jzb2xldGUgPSBEb20uRXZlbnQubWFrZSBcIm9ic29sZXRlXCJcblxuICBsZXQgZG9tQ29udGVudExvYWRlZCA9IERvbS5FdmVudC5tYWtlIFwiRE9NQ29udGVudExvYWRlZFwiXG5cbiAgbGV0IGFuaW1hdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25zdGFydFwiXG5cbiAgbGV0IGFuaW1hdGlvbmVuZCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uZW5kXCJcblxuICBsZXQgYW5pbWF0aW9uaXRlcmF0aW9uID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25pdGVyYXRpb25cIlxuXG4gIGxldCBhbmltYXRpb25jYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmNhbmNlbFwiXG5cbiAgbGV0IHRyYW5zaXRpb25ydW4gPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25ydW5cIlxuXG4gIGxldCB0cmFuc2l0aW9uc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25zdGFydFwiXG5cbiAgbGV0IHRyYW5zaXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcInRyYW5zaXRpb25lbmRcIlxuXG4gIGxldCB0cmFuc2l0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uY2FuY2VsXCJcblxuICBsZXQgY2FucGxheSA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheVwiXG5cbiAgbGV0IGNhbnBsYXl0aHJvdWdoID0gRG9tLkV2ZW50Lm1ha2UgXCJjYW5wbGF5dGhyb3VnaFwiXG5cbiAgbGV0IGR1cmF0aW9uY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJkdXJhdGlvbmNoYW5nZVwiXG5cbiAgbGV0IGVtcHRpZWQgPSBEb20uRXZlbnQubWFrZSBcImVtcHRpZWRcIlxuXG4gIGxldCBlbmRlZCA9IERvbS5FdmVudC5tYWtlIFwiZW5kZWRcIlxuXG4gIGxldCBnb3Rwb2ludGVyY2FwdHVyZSA9IERvbS5FdmVudC5tYWtlIFwiZ290cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBsb2FkZWRkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRkYXRhXCJcblxuICBsZXQgbG9hZGVkbWV0YWRhdGEgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlZG1ldGFkYXRhXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBsb3N0cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiXG5cbiAgbGV0IG1lc3NhZ2UgPSBEb20uRXZlbnQubWFrZSBcIm1lc3NhZ2VcIlxuXG4gIGxldCBwYXVzZSA9IERvbS5FdmVudC5tYWtlIFwicGF1c2VcIlxuXG4gIGxldCBwbGF5ID0gRG9tLkV2ZW50Lm1ha2UgXCJwbGF5XCJcblxuICBsZXQgcGxheWluZyA9IERvbS5FdmVudC5tYWtlIFwicGxheWluZ1wiXG5cbiAgbGV0IHBvaW50ZXJlbnRlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmVudGVyXCJcblxuICBsZXQgcG9pbnRlcmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmNhbmNlbFwiXG5cbiAgbGV0IHBvaW50ZXJkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyZG93blwiXG5cbiAgbGV0IHBvaW50ZXJsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmxlYXZlXCJcblxuICBsZXQgcG9pbnRlcm1vdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJtb3ZlXCJcblxuICBsZXQgcG9pbnRlcm91dCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm91dFwiXG5cbiAgbGV0IHBvaW50ZXJvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVyb3ZlclwiXG5cbiAgbGV0IHBvaW50ZXJ1cCA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcnVwXCJcblxuICBsZXQgcmF0ZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwicmF0ZWNoYW5nZVwiXG5cbiAgbGV0IHNlZWtlZCA9IERvbS5FdmVudC5tYWtlIFwic2Vla2VkXCJcblxuICBsZXQgc2Vla2luZyA9IERvbS5FdmVudC5tYWtlIFwic2Vla2luZ1wiXG5cbiAgbGV0IHN0YWxsZWQgPSBEb20uRXZlbnQubWFrZSBcInN0YWxsZWRcIlxuXG4gIGxldCBzdXNwZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJzdXNwZW5kXCJcblxuICBsZXQgdm9sdW1lY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJ2b2x1bWVjaGFuZ2VcIlxuXG4gIGxldCB3YWl0aW5nID0gRG9tLkV2ZW50Lm1ha2UgXCJ3YWl0aW5nXCJcblxuICBsZXQgbWFrZSA9IERvbS5FdmVudC5tYWtlXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IERvbS5ldmVudF9saXN0ZW5lcl9pZFxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG5cbmxldCBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgPSBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyID0gRG9tLnJlbW92ZUV2ZW50TGlzdGVuZXJcblxubGV0IGNyZWF0ZUN1c3RvbUV2ZW50ID0gRG9tLmNyZWF0ZUN1c3RvbUV2ZW50XG5cbmNsYXNzIHR5cGUgWydub2RlXSBjb2xsZWN0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbmFtZWRJdGVtIDoganNfc3RyaW5nIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgaHRtbEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgaGVhZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHByb2ZpbGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsaW5rRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjcm9zc29yaWdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZmxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIG1ldGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodHRwRXF1aXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNjaGVtZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJhc2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBocmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbWVkaWEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYm9keUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZm9ybUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGVsZW1lbnRzIDogZWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2NlcHRDaGFyc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGVuY3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF9tZXRob2QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3VibWl0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlc2V0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uc3VibWl0IDogKCdzZWxmIHQsIHN1Ym1pdEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRHcm91cEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbGFiZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgb3B0R3JvdXBFbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlZmF1bHRTZWxlY3RlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNlbGVjdEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3B0aW9ucyA6IG9wdGlvbkVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtdWx0aXBsZSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGFkZCA6ICNvcHRHcm91cEVsZW1lbnQgdCAtPiAjb3B0R3JvdXBFbGVtZW50IHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnB1dEVsZW1lbnQgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZGVmYXVsdFZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0Q2hlY2tlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoZWNrZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1heExlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2l6ZSA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZpbGVzIDogRmlsZS5maWxlTGlzdCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYWNlaG9sZGVyIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdGV4dEFyZWFFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xzIDogaW50IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJvd3MgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkVuZCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvblN0YXJ0IDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2VsZWN0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25jaGFuZ2UgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmlucHV0IDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25ibHVyIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKCdzZWxmIHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgYnV0dG9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGFiZWxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGh0bWxGb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBmaWVsZFNldEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBsZWdlbmRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB1TGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgb0xpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRMaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBsaUVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgZGlhbG9nRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VfcmV0dXJuVmFsdWUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgb3Blbl8gOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByZXR1cm5WYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hvdyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaG93TW9kYWwgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25jYW5jZWwgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZWxsaXBzZSA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGlhbG9nIGRvYyA6IGRpYWxvZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGlhbG9nXCJcblxubGV0IGNyZWF0ZURpdiBkb2MgOiBkaXZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRpdlwiXG5cbmxldCBjcmVhdGVFbWJlZCBkb2MgOiBlbWJlZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1iZWRcIlxuXG5sZXQgY3JlYXRlUCBkb2MgOiBwYXJhZ3JhcGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBcIlxuXG5sZXQgY3JlYXRlSDEgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDFcIlxuXG5sZXQgY3JlYXRlSDIgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDJcIlxuXG5sZXQgY3JlYXRlSDMgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDNcIlxuXG5sZXQgY3JlYXRlSDQgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDRcIlxuXG5sZXQgY3JlYXRlSDUgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDVcIlxuXG5sZXQgY3JlYXRlSDYgZG9jIDogaGVhZGluZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaDZcIlxuXG5sZXQgY3JlYXRlUSBkb2MgOiBxdW90ZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicVwiXG5cbmxldCBjcmVhdGVCbG9ja3F1b3RlIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJibG9ja3F1b3RlXCJcblxubGV0IGNyZWF0ZVByZSBkb2MgOiBwcmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInByZVwiXG5cbmxldCBjcmVhdGVCciBkb2MgOiBickVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYnJcIlxuXG5sZXQgY3JlYXRlSHIgZG9jIDogaHJFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhyXCJcblxubGV0IGNyZWF0ZUlucyBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImluc1wiXG5cbmxldCBjcmVhdGVEZWwgZG9jIDogbW9kRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZWxcIlxuXG5sZXQgY3JlYXRlQSBkb2MgOiBhbmNob3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFcIlxuXG5sZXQgY3JlYXRlSW1nIGRvYyA6IGltYWdlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpbWdcIlxuXG5sZXQgY3JlYXRlT2JqZWN0IGRvYyA6IG9iamVjdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwib2JqZWN0XCJcblxubGV0IGNyZWF0ZVBhcmFtIGRvYyA6IHBhcmFtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXJhbVwiXG5cbmxldCBjcmVhdGVNYXAgZG9jIDogbWFwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJtYXBcIlxuXG5sZXQgY3JlYXRlQXJlYSBkb2MgOiBhcmVhRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhcmVhXCJcblxubGV0IGNyZWF0ZVNjcmlwdCBkb2MgOiBzY3JpcHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNjcmlwdFwiXG5cbmxldCBjcmVhdGVUYWJsZSBkb2MgOiB0YWJsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGFibGVcIlxuXG5sZXQgY3JlYXRlQ2FwdGlvbiBkb2MgOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNhcHRpb25cIlxuXG5sZXQgY3JlYXRlQ29sIGRvYyA6IHRhYmxlQ29sRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjb2xcIlxuXG5sZXQgY3JlYXRlQ29sZ3JvdXAgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbGdyb3VwXCJcblxubGV0IGNyZWF0ZVRoZWFkIGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhlYWRcIlxuXG5sZXQgY3JlYXRlVGZvb3QgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0Zm9vdFwiXG5cbmxldCBjcmVhdGVUYm9keSBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRib2R5XCJcblxubGV0IGNyZWF0ZVRyIGRvYyA6IHRhYmxlUm93RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0clwiXG5cbmxldCBjcmVhdGVUaCBkb2MgOiB0YWJsZUNlbGxFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRoXCJcblxubGV0IGNyZWF0ZVRkIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGRcIlxuXG5sZXQgY3JlYXRlU3ViIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3ViXCJcblxubGV0IGNyZWF0ZVN1cCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInN1cFwiXG5cbmxldCBjcmVhdGVTcGFuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3BhblwiXG5cbmxldCBjcmVhdGVUdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInR0XCJcblxubGV0IGNyZWF0ZUkgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJpXCJcblxubGV0IGNyZWF0ZUIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJiXCJcblxubGV0IGNyZWF0ZUJpZyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJpZ1wiXG5cbmxldCBjcmVhdGVTbWFsbCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcInNtYWxsXCJcblxubGV0IGNyZWF0ZUVtIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZW1cIlxuXG5sZXQgY3JlYXRlU3Ryb25nIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3Ryb25nXCJcblxubGV0IGNyZWF0ZUNpdGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjaXRlXCJcblxubGV0IGNyZWF0ZURmbiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImRmblwiXG5cbmxldCBjcmVhdGVDb2RlIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiY29kZVwiXG5cbmxldCBjcmVhdGVTYW1wIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic2FtcFwiXG5cbmxldCBjcmVhdGVLYmQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJrYmRcIlxuXG5sZXQgY3JlYXRlVmFyIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidmFyXCJcblxubGV0IGNyZWF0ZUFiYnIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhYmJyXCJcblxubGV0IGNyZWF0ZURkIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGRcIlxuXG5sZXQgY3JlYXRlRHQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkdFwiXG5cbmxldCBjcmVhdGVOb3NjcmlwdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcIm5vc2NyaXB0XCJcblxubGV0IGNyZWF0ZUFkZHJlc3MgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJhZGRyZXNzXCJcblxubGV0IGNyZWF0ZUZyYW1lc2V0IGRvYyA6IGZyYW1lU2V0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZXNldFwiXG5cbmxldCBjcmVhdGVGcmFtZSBkb2MgOiBmcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZnJhbWVcIlxuXG5sZXQgY3JlYXRlSWZyYW1lIGRvYyA6IGlGcmFtZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaWZyYW1lXCJcblxubGV0IGNyZWF0ZUF1ZGlvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJhdWRpb1wiXG5cbmxldCBjcmVhdGVWaWRlbyBkb2MgOiBhdWRpb0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidmlkZW9cIlxuXG5leGNlcHRpb24gQ2FudmFzX25vdF9hdmFpbGFibGVcblxubGV0IGNyZWF0ZUNhbnZhcyBkb2MgOiBjYW52YXNFbGVtZW50IHQgPVxuICBsZXQgYyA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FudmFzXCIgaW5cbiAgaWYgbm90IChPcHQudGVzdCBjIyMuZ2V0Q29udGV4dCkgdGhlbiByYWlzZSBDYW52YXNfbm90X2F2YWlsYWJsZTtcbiAgY1xuXG5sZXQgaHRtbF9lbGVtZW50IDogaHRtbEVsZW1lbnQgdCBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0hUTUxFbGVtZW50XG5cbm1vZHVsZSBDb2VyY2VUbyA9IHN0cnVjdFxuICBsZXQgZWxlbWVudCA6ICNEb20ubm9kZSBKcy50IC0+IGVsZW1lbnQgSnMudCBKcy5vcHQgPVxuICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiBodG1sX2VsZW1lbnQpKVxuICAgIHRoZW5cbiAgICAgICgqIGllIDwgOSBkb2VzIG5vdCBoYXZlIEhUTUxFbGVtZW50OiB3ZSBoYXZlIHRvIGNoZWF0IHRvIGNoZWNrXG4gICAgICAgICB0aGF0IHNvbWV0aGluZyBpcyBhbiBodG1sIGVsZW1lbnQgKilcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBub3QgKEpzLk9wdGRlZi50ZXN0IChkZWYgKEpzLlVuc2FmZS5jb2VyY2UgZSkjIy5pbm5lckhUTUwpKVxuICAgICAgdGhlbiBKcy5udWxsXG4gICAgICBlbHNlIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlXG4gICAgICBmdW4gZSAtPlxuICAgICAgaWYgSnMuaW5zdGFuY2VvZiBlIGh0bWxfZWxlbWVudCB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHVuc2FmZUNvZXJjZSB0YWcgKGUgOiAjZWxlbWVudCB0KSA9XG4gICAgaWYgSnMuZXF1YWxzIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIHRhZylcbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYSBlID0gdW5zYWZlQ29lcmNlIFwiYVwiIGVcblxuICBsZXQgYXJlYSBlID0gdW5zYWZlQ29lcmNlIFwiYXJlYVwiIGVcblxuICBsZXQgYmFzZSBlID0gdW5zYWZlQ29lcmNlIFwiYmFzZVwiIGVcblxuICBsZXQgYmxvY2txdW90ZSBlID0gdW5zYWZlQ29lcmNlIFwiYmxvY2txdW90ZVwiIGVcblxuICBsZXQgYm9keSBlID0gdW5zYWZlQ29lcmNlIFwiYm9keVwiIGVcblxuICBsZXQgYnIgZSA9IHVuc2FmZUNvZXJjZSBcImJyXCIgZVxuXG4gIGxldCBidXR0b24gZSA9IHVuc2FmZUNvZXJjZSBcImJ1dHRvblwiIGVcblxuICBsZXQgY2FudmFzIGUgPSB1bnNhZmVDb2VyY2UgXCJjYW52YXNcIiBlXG5cbiAgbGV0IGNhcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcImNhcHRpb25cIiBlXG5cbiAgbGV0IGNvbCBlID0gdW5zYWZlQ29lcmNlIFwiY29sXCIgZVxuXG4gIGxldCBjb2xncm91cCBlID0gdW5zYWZlQ29lcmNlIFwiY29sZ3JvdXBcIiBlXG5cbiAgbGV0IGRlbCBlID0gdW5zYWZlQ29lcmNlIFwiZGVsXCIgZVxuXG4gIGxldCBkaXYgZSA9IHVuc2FmZUNvZXJjZSBcImRpdlwiIGVcblxuICBsZXQgZGwgZSA9IHVuc2FmZUNvZXJjZSBcImRsXCIgZVxuXG4gIGxldCBmaWVsZHNldCBlID0gdW5zYWZlQ29lcmNlIFwiZmllbGRzZXRcIiBlXG5cbiAgbGV0IGVtYmVkIGUgPSB1bnNhZmVDb2VyY2UgXCJlbWJlZFwiIGVcblxuICBsZXQgZm9ybSBlID0gdW5zYWZlQ29lcmNlIFwiZm9ybVwiIGVcblxuICBsZXQgZnJhbWVzZXQgZSA9IHVuc2FmZUNvZXJjZSBcImZyYW1lc2V0XCIgZVxuXG4gIGxldCBmcmFtZSBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVcIiBlXG5cbiAgbGV0IGgxIGUgPSB1bnNhZmVDb2VyY2UgXCJoMVwiIGVcblxuICBsZXQgaDIgZSA9IHVuc2FmZUNvZXJjZSBcImgyXCIgZVxuXG4gIGxldCBoMyBlID0gdW5zYWZlQ29lcmNlIFwiaDNcIiBlXG5cbiAgbGV0IGg0IGUgPSB1bnNhZmVDb2VyY2UgXCJoNFwiIGVcblxuICBsZXQgaDUgZSA9IHVuc2FmZUNvZXJjZSBcImg1XCIgZVxuXG4gIGxldCBoNiBlID0gdW5zYWZlQ29lcmNlIFwiaDZcIiBlXG5cbiAgbGV0IGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcImhlYWRcIiBlXG5cbiAgbGV0IGhyIGUgPSB1bnNhZmVDb2VyY2UgXCJoclwiIGVcblxuICBsZXQgaHRtbCBlID0gdW5zYWZlQ29lcmNlIFwiaHRtbFwiIGVcblxuICBsZXQgaWZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJpZnJhbWVcIiBlXG5cbiAgbGV0IGltZyBlID0gdW5zYWZlQ29lcmNlIFwiaW1nXCIgZVxuXG4gIGxldCBpbnB1dCBlID0gdW5zYWZlQ29lcmNlIFwiaW5wdXRcIiBlXG5cbiAgbGV0IGlucyBlID0gdW5zYWZlQ29lcmNlIFwiaW5zXCIgZVxuXG4gIGxldCBsYWJlbCBlID0gdW5zYWZlQ29lcmNlIFwibGFiZWxcIiBlXG5cbiAgbGV0IGxlZ2VuZCBlID0gdW5zYWZlQ29lcmNlIFwibGVnZW5kXCIgZVxuXG4gIGxldCBsaSBlID0gdW5zYWZlQ29lcmNlIFwibGlcIiBlXG5cbiAgbGV0IGxpbmsgZSA9IHVuc2FmZUNvZXJjZSBcImxpbmtcIiBlXG5cbiAgbGV0IG1hcCBlID0gdW5zYWZlQ29lcmNlIFwibWFwXCIgZVxuXG4gIGxldCBtZXRhIGUgPSB1bnNhZmVDb2VyY2UgXCJtZXRhXCIgZVxuXG4gIGxldCBfb2JqZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJvYmplY3RcIiBlXG5cbiAgbGV0IG9sIGUgPSB1bnNhZmVDb2VyY2UgXCJvbFwiIGVcblxuICBsZXQgb3B0Z3JvdXAgZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGdyb3VwXCIgZVxuXG4gIGxldCBvcHRpb24gZSA9IHVuc2FmZUNvZXJjZSBcIm9wdGlvblwiIGVcblxuICBsZXQgcCBlID0gdW5zYWZlQ29lcmNlIFwicFwiIGVcblxuICBsZXQgcGFyYW0gZSA9IHVuc2FmZUNvZXJjZSBcInBhcmFtXCIgZVxuXG4gIGxldCBwcmUgZSA9IHVuc2FmZUNvZXJjZSBcInByZVwiIGVcblxuICBsZXQgcSBlID0gdW5zYWZlQ29lcmNlIFwicVwiIGVcblxuICBsZXQgc2NyaXB0IGUgPSB1bnNhZmVDb2VyY2UgXCJzY3JpcHRcIiBlXG5cbiAgbGV0IHNlbGVjdCBlID0gdW5zYWZlQ29lcmNlIFwic2VsZWN0XCIgZVxuXG4gIGxldCBzdHlsZSBlID0gdW5zYWZlQ29lcmNlIFwic3R5bGVcIiBlXG5cbiAgbGV0IHRhYmxlIGUgPSB1bnNhZmVDb2VyY2UgXCJ0YWJsZVwiIGVcblxuICBsZXQgdGJvZHkgZSA9IHVuc2FmZUNvZXJjZSBcInRib2R5XCIgZVxuXG4gIGxldCB0ZCBlID0gdW5zYWZlQ29lcmNlIFwidGRcIiBlXG5cbiAgbGV0IHRleHRhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZXh0YXJlYVwiIGVcblxuICBsZXQgdGZvb3QgZSA9IHVuc2FmZUNvZXJjZSBcInRmb290XCIgZVxuXG4gIGxldCB0aCBlID0gdW5zYWZlQ29lcmNlIFwidGhcIiBlXG5cbiAgbGV0IHRoZWFkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aGVhZFwiIGVcblxuICBsZXQgdGl0bGUgZSA9IHVuc2FmZUNvZXJjZSBcInRpdGxlXCIgZVxuXG4gIGxldCB0ciBlID0gdW5zYWZlQ29lcmNlIFwidHJcIiBlXG5cbiAgbGV0IHVsIGUgPSB1bnNhZmVDb2VyY2UgXCJ1bFwiIGVcblxuICBsZXQgYXVkaW8gZSA9IHVuc2FmZUNvZXJjZSBcImF1ZGlvXCIgZVxuXG4gIGxldCB2aWRlbyBlID0gdW5zYWZlQ29lcmNlIFwidmlkZW9cIiBlXG5cbiAgbGV0IHVuc2FmZUNvZXJjZUV2ZW50IGNvbnN0ciAoZXYgOiAjZXZlbnQgdCkgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChkZWYgY29uc3RyKSAmJiBKcy5pbnN0YW5jZW9mIGV2IGNvbnN0clxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBldilcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgbW91c2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VFdmVudCBldlxuXG4gIGxldCBrZXlib2FyZEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9LZXlib2FyZEV2ZW50IGV2XG5cbiAgbGV0IHdoZWVsRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1doZWVsRXZlbnQgZXZcblxuICBsZXQgbW91c2VTY3JvbGxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTW91c2VTY3JvbGxFdmVudCBldlxuXG4gIGxldCBwb3BTdGF0ZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Qb3BTdGF0ZUV2ZW50IGV2XG5cbiAgbGV0IG1lc3NhZ2VFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fTWVzc2FnZUV2ZW50IGV2XG5lbmRcblxuKCoqKiopXG5cbmxldCBldmVudFRhcmdldCA9IERvbS5ldmVudFRhcmdldFxuXG5sZXQgZXZlbnRSZWxhdGVkVGFyZ2V0IChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBPcHRkZWYuZ2V0IGUjIy5yZWxhdGVkVGFyZ2V0IChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIEpzLnRvX3N0cmluZyBlIyMuX3R5cGUgd2l0aFxuICAgICAgfCBcIm1vdXNlb3ZlclwiIC0+IE9wdGRlZi5nZXQgZSMjLmZyb21FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBcIm1vdXNlb3V0XCIgLT4gT3B0ZGVmLmdldCBlIyMudG9FbGVtZW50IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgfCBfIC0+IEpzLm51bGwpXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24nIChlIDogI21vdXNlRXZlbnQgdCkgPVxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggZSMjLmNsaWVudFggKyBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0XG4gICwgZSMjLmNsaWVudFkgKyBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcCApXG5cbmxldCBldmVudEFic29sdXRlUG9zaXRpb24gKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgZSMjLnBhZ2VYXG4gICAgKGZ1biAoKSAtPiBldmVudEFic29sdXRlUG9zaXRpb24nIGUpXG4gICAgKGZ1biB4IC0+IE9wdGRlZi5jYXNlIGUjIy5wYWdlWSAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSkgKGZ1biB5IC0+IHgsIHkpKVxuXG5sZXQgZWxlbWVudENsaWVudFBvc2l0aW9uIChlIDogI2VsZW1lbnQgdCkgPVxuICBsZXQgciA9IGUjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICBsZXQgYm9keSA9IGRvY3VtZW50IyMuYm9keSBpblxuICBsZXQgaHRtbCA9IGRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IGluXG4gICggdHJ1bmNhdGUgKEpzLnRvX2Zsb2F0IHIjIy5sZWZ0KSAtIGJvZHkjIy5jbGllbnRMZWZ0IC0gaHRtbCMjLmNsaWVudExlZnRcbiAgLCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLnRvcCkgLSBib2R5IyMuY2xpZW50VG9wIC0gaHRtbCMjLmNsaWVudFRvcCApXG5cbmxldCBnZXREb2N1bWVudFNjcm9sbCAoKSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgYm9keSMjLnNjcm9sbExlZnQgKyBodG1sIyMuc2Nyb2xsTGVmdCwgYm9keSMjLnNjcm9sbFRvcCArIGh0bWwjIy5zY3JvbGxUb3BcblxubGV0IGJ1dHRvblByZXNzZWQgKGV2IDogI21vdXNlRXZlbnQgSnMudCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIGV2IyMud2hpY2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBtYXRjaCBldiMjLmJ1dHRvbiB3aXRoXG4gICAgICB8IDEgLT4gTGVmdF9idXR0b25cbiAgICAgIHwgMiAtPiBSaWdodF9idXR0b25cbiAgICAgIHwgNCAtPiBNaWRkbGVfYnV0dG9uXG4gICAgICB8IF8gLT4gTm9fYnV0dG9uKVxuICAgIChmdW4geCAtPiB4KVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyBlID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGggPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICA/Y2FwdHVyZVxuICAgID9vbmNlXG4gICAgP3Bhc3NpdmVcbiAgICBlXG4gICAgRXZlbnQud2hlZWxcbiAgICAoaGFuZGxlciAoZnVuIChlIDogbW91c2V3aGVlbEV2ZW50IHQpIC0+XG4gICAgICAgICBsZXQgZHggPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVggKGZ1biAoKSAtPiAwKSAvIDQwIGluXG4gICAgICAgICBsZXQgZHkgPSAtT3B0ZGVmLmdldCBlIyMud2hlZWxEZWx0YVkgKGZ1biAoKSAtPiBlIyMud2hlZWxEZWx0YSkgLyA0MCBpblxuICAgICAgICAgaCAoZSA6PiBtb3VzZUV2ZW50IHQpIH5keCB+ZHkpKVxuXG5sZXQgYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIgZSBoIGNhcHQgPVxuICBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIH5jYXB0dXJlOmNhcHQgZSBoXG5cbigqKioqKilcblxubW9kdWxlIEtleWJvYXJkX2NvZGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFVuaWRlbnRpZmllZFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgS2V5QVxuICAgIHwgS2V5QlxuICAgIHwgS2V5Q1xuICAgIHwgS2V5RFxuICAgIHwgS2V5RVxuICAgIHwgS2V5RlxuICAgIHwgS2V5R1xuICAgIHwgS2V5SFxuICAgIHwgS2V5SVxuICAgIHwgS2V5SlxuICAgIHwgS2V5S1xuICAgIHwgS2V5TFxuICAgIHwgS2V5TVxuICAgIHwgS2V5TlxuICAgIHwgS2V5T1xuICAgIHwgS2V5UFxuICAgIHwgS2V5UVxuICAgIHwgS2V5UlxuICAgIHwgS2V5U1xuICAgIHwgS2V5VFxuICAgIHwgS2V5VVxuICAgIHwgS2V5VlxuICAgIHwgS2V5V1xuICAgIHwgS2V5WFxuICAgIHwgS2V5WVxuICAgIHwgS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgRGlnaXQwXG4gICAgfCBEaWdpdDFcbiAgICB8IERpZ2l0MlxuICAgIHwgRGlnaXQzXG4gICAgfCBEaWdpdDRcbiAgICB8IERpZ2l0NVxuICAgIHwgRGlnaXQ2XG4gICAgfCBEaWdpdDdcbiAgICB8IERpZ2l0OFxuICAgIHwgRGlnaXQ5XG4gICAgfCBNaW51c1xuICAgIHwgRXF1YWxcbiAgICAoKiBXaGl0ZXNwYWNlICopXG4gICAgfCBUYWJcbiAgICB8IEVudGVyXG4gICAgfCBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IEVzY2FwZVxuICAgIHwgQmFja3NwYWNlXG4gICAgfCBJbnNlcnRcbiAgICB8IERlbGV0ZVxuICAgIHwgQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgQnJhY2tldExlZnRcbiAgICB8IEJyYWNrZXRSaWdodFxuICAgIHwgU2VtaWNvbG9uXG4gICAgfCBRdW90ZVxuICAgIHwgQmFja3F1b3RlXG4gICAgfCBCYWNrc2xhc2hcbiAgICB8IENvbW1hXG4gICAgfCBQZXJpb2RcbiAgICB8IFNsYXNoXG4gICAgKCogRnVuY3Rpb24ga2V5cyAqKVxuICAgIHwgRjFcbiAgICB8IEYyXG4gICAgfCBGM1xuICAgIHwgRjRcbiAgICB8IEY1XG4gICAgfCBGNlxuICAgIHwgRjdcbiAgICB8IEY4XG4gICAgfCBGOVxuICAgIHwgRjEwXG4gICAgfCBGMTFcbiAgICB8IEYxMlxuICAgICgqIE51bXBhZCBrZXlzICopXG4gICAgfCBOdW1wYWQwXG4gICAgfCBOdW1wYWQxXG4gICAgfCBOdW1wYWQyXG4gICAgfCBOdW1wYWQzXG4gICAgfCBOdW1wYWQ0XG4gICAgfCBOdW1wYWQ1XG4gICAgfCBOdW1wYWQ2XG4gICAgfCBOdW1wYWQ3XG4gICAgfCBOdW1wYWQ4XG4gICAgfCBOdW1wYWQ5XG4gICAgfCBOdW1wYWRNdWx0aXBseVxuICAgIHwgTnVtcGFkU3VidHJhY3RcbiAgICB8IE51bXBhZEFkZFxuICAgIHwgTnVtcGFkRGVjaW1hbFxuICAgIHwgTnVtcGFkRXF1YWxcbiAgICB8IE51bXBhZEVudGVyXG4gICAgfCBOdW1wYWREaXZpZGVcbiAgICB8IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBDb250cm9sTGVmdFxuICAgIHwgQ29udHJvbFJpZ2h0XG4gICAgfCBNZXRhTGVmdFxuICAgIHwgTWV0YVJpZ2h0XG4gICAgfCBTaGlmdExlZnRcbiAgICB8IFNoaWZ0UmlnaHRcbiAgICB8IEFsdExlZnRcbiAgICB8IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgQXJyb3dMZWZ0XG4gICAgfCBBcnJvd1JpZ2h0XG4gICAgfCBBcnJvd1VwXG4gICAgfCBBcnJvd0Rvd25cbiAgICAoKiBOYXZpZ2F0aW9uICopXG4gICAgfCBQYWdlVXBcbiAgICB8IFBhZ2VEb3duXG4gICAgfCBIb21lXG4gICAgfCBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgVm9sdW1lTXV0ZVxuICAgIHwgVm9sdW1lRG93blxuICAgIHwgVm9sdW1lVXBcbiAgICAoKiBNZWRpYSAqKVxuICAgIHwgTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBNZWRpYVRyYWNrTmV4dFxuICAgIHwgTWVkaWFQbGF5UGF1c2VcbiAgICB8IE1lZGlhU3RvcFxuICAgICgqIEJyb3dzZXIgc3BlY2lhbCAqKVxuICAgIHwgQ29udGV4dE1lbnVcbiAgICB8IEJyb3dzZXJTZWFyY2hcbiAgICB8IEJyb3dzZXJIb21lXG4gICAgfCBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBCcm93c2VyUmVmcmVzaFxuICAgIHwgQnJvd3NlclN0b3BcbiAgICB8IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBCcm93c2VyQmFja1xuICAgICgqIE1pc2MgKilcbiAgICB8IE9TTGVmdFxuICAgIHwgT1NSaWdodFxuICAgIHwgU2Nyb2xsTG9ja1xuICAgIHwgUHJpbnRTY3JlZW5cbiAgICB8IEludGxCYWNrc2xhc2hcbiAgICB8IEludGxZZW5cbiAgICB8IFBhdXNlXG5cbiAgbGV0IHRyeV9jb2RlIHYgPVxuICAgIG1hdGNoIEpzLnRvX3N0cmluZyB2IHdpdGhcbiAgICAoKiBBbHBoYWJldGljIENoYXJhY3RlcnMgKilcbiAgICB8IFwiS2V5QVwiIC0+IEtleUFcbiAgICB8IFwiS2V5QlwiIC0+IEtleUJcbiAgICB8IFwiS2V5Q1wiIC0+IEtleUNcbiAgICB8IFwiS2V5RFwiIC0+IEtleURcbiAgICB8IFwiS2V5RVwiIC0+IEtleUVcbiAgICB8IFwiS2V5RlwiIC0+IEtleUZcbiAgICB8IFwiS2V5R1wiIC0+IEtleUdcbiAgICB8IFwiS2V5SFwiIC0+IEtleUhcbiAgICB8IFwiS2V5SVwiIC0+IEtleUlcbiAgICB8IFwiS2V5SlwiIC0+IEtleUpcbiAgICB8IFwiS2V5S1wiIC0+IEtleUtcbiAgICB8IFwiS2V5TFwiIC0+IEtleUxcbiAgICB8IFwiS2V5TVwiIC0+IEtleU1cbiAgICB8IFwiS2V5TlwiIC0+IEtleU5cbiAgICB8IFwiS2V5T1wiIC0+IEtleU9cbiAgICB8IFwiS2V5UFwiIC0+IEtleVBcbiAgICB8IFwiS2V5UVwiIC0+IEtleVFcbiAgICB8IFwiS2V5UlwiIC0+IEtleVJcbiAgICB8IFwiS2V5U1wiIC0+IEtleVNcbiAgICB8IFwiS2V5VFwiIC0+IEtleVRcbiAgICB8IFwiS2V5VVwiIC0+IEtleVVcbiAgICB8IFwiS2V5VlwiIC0+IEtleVZcbiAgICB8IFwiS2V5V1wiIC0+IEtleVdcbiAgICB8IFwiS2V5WFwiIC0+IEtleVhcbiAgICB8IFwiS2V5WVwiIC0+IEtleVlcbiAgICB8IFwiS2V5WlwiIC0+IEtleVpcbiAgICAoKiBEaWdpdHMgKilcbiAgICB8IFwiRGlnaXQwXCIgLT4gRGlnaXQwXG4gICAgfCBcIkRpZ2l0MVwiIC0+IERpZ2l0MVxuICAgIHwgXCJEaWdpdDJcIiAtPiBEaWdpdDJcbiAgICB8IFwiRGlnaXQzXCIgLT4gRGlnaXQzXG4gICAgfCBcIkRpZ2l0NFwiIC0+IERpZ2l0NFxuICAgIHwgXCJEaWdpdDVcIiAtPiBEaWdpdDVcbiAgICB8IFwiRGlnaXQ2XCIgLT4gRGlnaXQ2XG4gICAgfCBcIkRpZ2l0N1wiIC0+IERpZ2l0N1xuICAgIHwgXCJEaWdpdDhcIiAtPiBEaWdpdDhcbiAgICB8IFwiRGlnaXQ5XCIgLT4gRGlnaXQ5XG4gICAgfCBcIk1pbnVzXCIgLT4gTWludXNcbiAgICB8IFwiRXF1YWxcIiAtPiBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFwiVGFiXCIgLT4gVGFiXG4gICAgfCBcIkVudGVyXCIgLT4gRW50ZXJcbiAgICB8IFwiU3BhY2VcIiAtPiBTcGFjZVxuICAgICgqIEVkaXRpbmcgKilcbiAgICB8IFwiRXNjYXBlXCIgLT4gRXNjYXBlXG4gICAgfCBcIkJhY2tzcGFjZVwiIC0+IEJhY2tzcGFjZVxuICAgIHwgXCJJbnNlcnRcIiAtPiBJbnNlcnRcbiAgICB8IFwiRGVsZXRlXCIgLT4gRGVsZXRlXG4gICAgfCBcIkNhcHNMb2NrXCIgLT4gQ2Fwc0xvY2tcbiAgICAoKiBNaXNjIFByaW50YWJsZSAqKVxuICAgIHwgXCJCcmFja2V0TGVmdFwiIC0+IEJyYWNrZXRMZWZ0XG4gICAgfCBcIkJyYWNrZXRSaWdodFwiIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgXCJTZW1pY29sb25cIiAtPiBTZW1pY29sb25cbiAgICB8IFwiUXVvdGVcIiAtPiBRdW90ZVxuICAgIHwgXCJCYWNrcXVvdGVcIiAtPiBCYWNrcXVvdGVcbiAgICB8IFwiQmFja3NsYXNoXCIgLT4gQmFja3NsYXNoXG4gICAgfCBcIkNvbW1hXCIgLT4gQ29tbWFcbiAgICB8IFwiUGVyaW9kXCIgLT4gUGVyaW9kXG4gICAgfCBcIlNsYXNoXCIgLT4gU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBcIkYxXCIgLT4gRjFcbiAgICB8IFwiRjJcIiAtPiBGMlxuICAgIHwgXCJGM1wiIC0+IEYzXG4gICAgfCBcIkY0XCIgLT4gRjRcbiAgICB8IFwiRjVcIiAtPiBGNVxuICAgIHwgXCJGNlwiIC0+IEY2XG4gICAgfCBcIkY3XCIgLT4gRjdcbiAgICB8IFwiRjhcIiAtPiBGOFxuICAgIHwgXCJGOVwiIC0+IEY5XG4gICAgfCBcIkYxMFwiIC0+IEYxMFxuICAgIHwgXCJGMTFcIiAtPiBGMTFcbiAgICB8IFwiRjEyXCIgLT4gRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IFwiTnVtcGFkMFwiIC0+IE51bXBhZDBcbiAgICB8IFwiTnVtcGFkMVwiIC0+IE51bXBhZDFcbiAgICB8IFwiTnVtcGFkMlwiIC0+IE51bXBhZDJcbiAgICB8IFwiTnVtcGFkM1wiIC0+IE51bXBhZDNcbiAgICB8IFwiTnVtcGFkNFwiIC0+IE51bXBhZDRcbiAgICB8IFwiTnVtcGFkNVwiIC0+IE51bXBhZDVcbiAgICB8IFwiTnVtcGFkNlwiIC0+IE51bXBhZDZcbiAgICB8IFwiTnVtcGFkN1wiIC0+IE51bXBhZDdcbiAgICB8IFwiTnVtcGFkOFwiIC0+IE51bXBhZDhcbiAgICB8IFwiTnVtcGFkOVwiIC0+IE51bXBhZDlcbiAgICB8IFwiTnVtcGFkTXVsdGlwbHlcIiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgXCJOdW1wYWRTdWJ0cmFjdFwiIC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCBcIk51bXBhZEFkZFwiIC0+IE51bXBhZEFkZFxuICAgIHwgXCJOdW1wYWREZWNpbWFsXCIgLT4gTnVtcGFkRGVjaW1hbFxuICAgIHwgXCJOdW1wYWRFcXVhbFwiIC0+IE51bXBhZEVxdWFsXG4gICAgfCBcIk51bXBhZEVudGVyXCIgLT4gTnVtcGFkRW50ZXJcbiAgICB8IFwiTnVtcGFkRGl2aWRlXCIgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCBcIk51bUxvY2tcIiAtPiBOdW1Mb2NrXG4gICAgKCogTW9kaWZpZXIga2V5cyAqKVxuICAgIHwgXCJDb250cm9sTGVmdFwiIC0+IENvbnRyb2xMZWZ0XG4gICAgfCBcIkNvbnRyb2xSaWdodFwiIC0+IENvbnRyb2xSaWdodFxuICAgIHwgXCJNZXRhTGVmdFwiIC0+IE1ldGFMZWZ0XG4gICAgfCBcIk1ldGFSaWdodFwiIC0+IE1ldGFSaWdodFxuICAgIHwgXCJTaGlmdExlZnRcIiAtPiBTaGlmdExlZnRcbiAgICB8IFwiU2hpZnRSaWdodFwiIC0+IFNoaWZ0UmlnaHRcbiAgICB8IFwiQWx0TGVmdFwiIC0+IEFsdExlZnRcbiAgICB8IFwiQWx0UmlnaHRcIiAtPiBBbHRSaWdodFxuICAgICgqIEFycm93IGtleXMgKilcbiAgICB8IFwiQXJyb3dMZWZ0XCIgLT4gQXJyb3dMZWZ0XG4gICAgfCBcIkFycm93UmlnaHRcIiAtPiBBcnJvd1JpZ2h0XG4gICAgfCBcIkFycm93VXBcIiAtPiBBcnJvd1VwXG4gICAgfCBcIkFycm93RG93blwiIC0+IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFwiUGFnZVVwXCIgLT4gUGFnZVVwXG4gICAgfCBcIlBhZ2VEb3duXCIgLT4gUGFnZURvd25cbiAgICB8IFwiSG9tZVwiIC0+IEhvbWVcbiAgICB8IFwiRW5kXCIgLT4gRW5kXG4gICAgKCogU291bmQgKilcbiAgICB8IFwiVm9sdW1lTXV0ZVwiIC0+IFZvbHVtZU11dGVcbiAgICB8IFwiVm9sdW1lRG93blwiIC0+IFZvbHVtZURvd25cbiAgICB8IFwiVm9sdW1lVXBcIiAtPiBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBcIk1lZGlhVHJhY2tQcmV2aW91c1wiIC0+IE1lZGlhVHJhY2tQcmV2aW91c1xuICAgIHwgXCJNZWRpYVRyYWNrTmV4dFwiIC0+IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBcIk1lZGlhUGxheVBhdXNlXCIgLT4gTWVkaWFQbGF5UGF1c2VcbiAgICB8IFwiTWVkaWFTdG9wXCIgLT4gTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBcIkNvbnRleHRNZW51XCIgLT4gQ29udGV4dE1lbnVcbiAgICB8IFwiQnJvd3NlclNlYXJjaFwiIC0+IEJyb3dzZXJTZWFyY2hcbiAgICB8IFwiQnJvd3NlckhvbWVcIiAtPiBCcm93c2VySG9tZVxuICAgIHwgXCJCcm93c2VyRmF2b3JpdGVzXCIgLT4gQnJvd3NlckZhdm9yaXRlc1xuICAgIHwgXCJCcm93c2VyUmVmcmVzaFwiIC0+IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBcIkJyb3dzZXJTdG9wXCIgLT4gQnJvd3NlclN0b3BcbiAgICB8IFwiQnJvd3NlckZvcndhcmRcIiAtPiBCcm93c2VyRm9yd2FyZFxuICAgIHwgXCJCcm93c2VyQmFja1wiIC0+IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgXCJPU0xlZnRcIiAtPiBPU0xlZnRcbiAgICB8IFwiT1NSaWdodFwiIC0+IE9TUmlnaHRcbiAgICB8IFwiU2Nyb2xsTG9ja1wiIC0+IFNjcm9sbExvY2tcbiAgICB8IFwiUHJpbnRTY3JlZW5cIiAtPiBQcmludFNjcmVlblxuICAgIHwgXCJJbnRsQmFja3NsYXNoXCIgLT4gSW50bEJhY2tzbGFzaFxuICAgIHwgXCJJbnRsWWVuXCIgLT4gSW50bFllblxuICAgIHwgXCJQYXVzZVwiIC0+IFBhdXNlXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbGVmdCA9IGZ1bmN0aW9uXG4gICAgfCAxNiAtPiBTaGlmdExlZnRcbiAgICB8IDE3IC0+IENvbnRyb2xMZWZ0XG4gICAgfCAxOCAtPiBBbHRMZWZ0XG4gICAgfCA5MSAtPiBNZXRhTGVmdFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX3JpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0UmlnaHRcbiAgICB8IDE3IC0+IENvbnRyb2xSaWdodFxuICAgIHwgMTggLT4gQWx0UmlnaHRcbiAgICB8IDkxIC0+IE1ldGFSaWdodFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgdHJ5X2tleV9jb2RlX251bXBhZCA9IGZ1bmN0aW9uXG4gICAgfCA0NiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA0NSAtPiBOdW1wYWQwXG4gICAgfCAzNSAtPiBOdW1wYWQxXG4gICAgfCA0MCAtPiBOdW1wYWQyXG4gICAgfCAzNCAtPiBOdW1wYWQzXG4gICAgfCAzNyAtPiBOdW1wYWQ0XG4gICAgfCAxMiAtPiBOdW1wYWQ1XG4gICAgfCAzOSAtPiBOdW1wYWQ2XG4gICAgfCAzNiAtPiBOdW1wYWQ3XG4gICAgfCAzOCAtPiBOdW1wYWQ4XG4gICAgfCAzMyAtPiBOdW1wYWQ5XG4gICAgfCAxMyAtPiBOdW1wYWRFbnRlclxuICAgIHwgMTExIC0+IE51bXBhZERpdmlkZVxuICAgIHwgMTA3IC0+IE51bXBhZEFkZFxuICAgIHwgMTA5IC0+IE51bXBhZFN1YnRyYWN0XG4gICAgfCAxMDYgLT4gTnVtcGFkTXVsdGlwbHlcbiAgICB8IDExMCAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCA5NiAtPiBOdW1wYWQwXG4gICAgfCA5NyAtPiBOdW1wYWQxXG4gICAgfCA5OCAtPiBOdW1wYWQyXG4gICAgfCA5OSAtPiBOdW1wYWQzXG4gICAgfCAxMDAgLT4gTnVtcGFkNFxuICAgIHwgMTAxIC0+IE51bXBhZDVcbiAgICB8IDEwMiAtPiBOdW1wYWQ2XG4gICAgfCAxMDMgLT4gTnVtcGFkN1xuICAgIHwgMTA0IC0+IE51bXBhZDhcbiAgICB8IDEwNSAtPiBOdW1wYWQ5XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbm9ybWFsID0gZnVuY3Rpb25cbiAgICB8IDI3IC0+IEVzY2FwZVxuICAgIHwgMTEyIC0+IEYxXG4gICAgfCAxMTMgLT4gRjJcbiAgICB8IDExNCAtPiBGM1xuICAgIHwgMTE1IC0+IEY0XG4gICAgfCAxMTYgLT4gRjVcbiAgICB8IDExNyAtPiBGNlxuICAgIHwgMTE4IC0+IEY3XG4gICAgfCAxMTkgLT4gRjhcbiAgICB8IDEyMCAtPiBGOVxuICAgIHwgMTIxIC0+IEYxMFxuICAgIHwgMTIyIC0+IEYxMVxuICAgIHwgMTIzIC0+IEYxMlxuICAgIHwgNDIgLT4gUHJpbnRTY3JlZW5cbiAgICB8IDE0NSAtPiBTY3JvbGxMb2NrXG4gICAgfCAxOSAtPiBQYXVzZVxuICAgIHwgMTkyIC0+IEJhY2txdW90ZVxuICAgIHwgNDkgLT4gRGlnaXQxXG4gICAgfCA1MCAtPiBEaWdpdDJcbiAgICB8IDUxIC0+IERpZ2l0M1xuICAgIHwgNTIgLT4gRGlnaXQ0XG4gICAgfCA1MyAtPiBEaWdpdDVcbiAgICB8IDU0IC0+IERpZ2l0NlxuICAgIHwgNTUgLT4gRGlnaXQ3XG4gICAgfCA1NiAtPiBEaWdpdDhcbiAgICB8IDU3IC0+IERpZ2l0OVxuICAgIHwgNDggLT4gRGlnaXQwXG4gICAgfCAxODkgLT4gTWludXNcbiAgICB8IDE4NyAtPiBFcXVhbFxuICAgIHwgOCAtPiBCYWNrc3BhY2VcbiAgICB8IDkgLT4gVGFiXG4gICAgfCA4MSAtPiBLZXlRXG4gICAgfCA4NyAtPiBLZXlXXG4gICAgfCA2OSAtPiBLZXlFXG4gICAgfCA4MiAtPiBLZXlSXG4gICAgfCA4NCAtPiBLZXlUXG4gICAgfCA4OSAtPiBLZXlZXG4gICAgfCA4NSAtPiBLZXlVXG4gICAgfCA3MyAtPiBLZXlJXG4gICAgfCA3OSAtPiBLZXlPXG4gICAgfCA4MCAtPiBLZXlQXG4gICAgfCAyMTkgLT4gQnJhY2tldExlZnRcbiAgICB8IDIyMSAtPiBCcmFja2V0UmlnaHRcbiAgICB8IDIyMCAtPiBCYWNrc2xhc2hcbiAgICB8IDIwIC0+IENhcHNMb2NrXG4gICAgfCA2NSAtPiBLZXlBXG4gICAgfCA4MyAtPiBLZXlTXG4gICAgfCA2OCAtPiBLZXlEXG4gICAgfCA3MCAtPiBLZXlGXG4gICAgfCA3MSAtPiBLZXlHXG4gICAgfCA3MiAtPiBLZXlIXG4gICAgfCA3NCAtPiBLZXlKXG4gICAgfCA3NSAtPiBLZXlLXG4gICAgfCA3NiAtPiBLZXlMXG4gICAgfCAxODYgLT4gU2VtaWNvbG9uXG4gICAgfCAyMjIgLT4gUXVvdGVcbiAgICB8IDEzIC0+IEVudGVyXG4gICAgfCA5MCAtPiBLZXlaXG4gICAgfCA4OCAtPiBLZXlYXG4gICAgfCA2NyAtPiBLZXlDXG4gICAgfCA4NiAtPiBLZXlWXG4gICAgfCA2NiAtPiBLZXlCXG4gICAgfCA3OCAtPiBLZXlOXG4gICAgfCA3NyAtPiBLZXlNXG4gICAgfCAxODggLT4gQ29tbWFcbiAgICB8IDE5MCAtPiBQZXJpb2RcbiAgICB8IDE5MSAtPiBTbGFzaFxuICAgIHwgMzIgLT4gU3BhY2VcbiAgICB8IDkzIC0+IENvbnRleHRNZW51XG4gICAgfCA0NSAtPiBJbnNlcnRcbiAgICB8IDM2IC0+IEhvbWVcbiAgICB8IDMzIC0+IFBhZ2VVcFxuICAgIHwgNDYgLT4gRGVsZXRlXG4gICAgfCAzNSAtPiBFbmRcbiAgICB8IDM0IC0+IFBhZ2VEb3duXG4gICAgfCAzNyAtPiBBcnJvd0xlZnRcbiAgICB8IDQwIC0+IEFycm93RG93blxuICAgIHwgMzkgLT4gQXJyb3dSaWdodFxuICAgIHwgMzggLT4gQXJyb3dVcFxuICAgIHwgXyAtPiBVbmlkZW50aWZpZWRcblxuICBsZXQgbWFrZV91bmlkZW50aWZpZWQgXyA9IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBPcHRkZWYuY2FzZSB2YWx1ZSBtYWtlX3VuaWRlbnRpZmllZCBmXG4gICAgfCB2IC0+IHZcblxuICBsZXQgcnVuX25leHQgdmFsdWUgZiA9IGZ1bmN0aW9uXG4gICAgfCBVbmlkZW50aWZpZWQgLT4gZiB2YWx1ZVxuICAgIHwgdiAtPiB2XG5cbiAgbGV0IGdldF9rZXlfY29kZSBldnQgPSBldnQjIy5rZXlDb2RlXG5cbiAgbGV0IHRyeV9rZXlfbG9jYXRpb24gZXZ0ID1cbiAgICBtYXRjaCBldnQjIy5sb2NhdGlvbiB3aXRoXG4gICAgfCAxIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbGVmdFxuICAgIHwgMiAtPiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX3JpZ2h0XG4gICAgfCAzIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbnVtcGFkXG4gICAgfCBfIC0+IG1ha2VfdW5pZGVudGlmaWVkXG5cbiAgbGV0ICggfD4gKSB4IGYgPSBmIHhcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBVbmlkZW50aWZpZWRcbiAgICB8PiB0cnlfbmV4dCBldnQjIy5jb2RlIHRyeV9jb2RlXG4gICAgfD4gdHJ5X2tleV9sb2NhdGlvbiBldnRcbiAgICB8PiBydW5fbmV4dCAoZ2V0X2tleV9jb2RlIGV2dCkgdHJ5X2tleV9jb2RlX25vcm1hbFxuXG4gIGxldCBvZl9rZXlfY29kZSA9IHRyeV9rZXlfY29kZV9ub3JtYWxcbmVuZFxuXG5tb2R1bGUgS2V5Ym9hcmRfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFVjaGFyLnQgb3B0aW9uXG5cbiAgbGV0IGNoYXJfb2ZfaW50IHZhbHVlID1cbiAgICBpZiAwIDwgdmFsdWUgdGhlbiB0cnkgU29tZSAoVWNoYXIub2ZfaW50IHZhbHVlKSB3aXRoIF8gLT4gTm9uZSBlbHNlIE5vbmVcblxuICBsZXQgZW1wdHlfc3RyaW5nIF8gPSBKcy5zdHJpbmcgXCJcIlxuXG4gIGxldCBub25lIF8gPSBOb25lXG5cbiAgbGV0IG9mX2V2ZW50IGV2dCA9XG4gICAgbGV0IGtleSA9IE9wdGRlZi5nZXQgZXZ0IyMua2V5IGVtcHR5X3N0cmluZyBpblxuICAgIG1hdGNoIGtleSMjLmxlbmd0aCB3aXRoXG4gICAgfCAwIC0+IE9wdGRlZi5jYXNlIGV2dCMjLmNoYXJDb2RlIG5vbmUgY2hhcl9vZl9pbnRcbiAgICB8IDEgLT4gY2hhcl9vZl9pbnQgKGludF9vZl9mbG9hdCAoSnMudG9fZmxvYXQgKGtleSMjY2hhckNvZGVBdCAwKSkpXG4gICAgfCBfIC0+IE5vbmVcbmVuZFxuXG4oKioqKiopXG5cbmxldCBlbGVtZW50IDogI0RvbS5lbGVtZW50IHQgLT4gZWxlbWVudCB0ID0gSnMuVW5zYWZlLmNvZXJjZVxuXG50eXBlIHRhZ2dlZEVsZW1lbnQgPVxuICB8IEEgb2YgYW5jaG9yRWxlbWVudCB0XG4gIHwgQXJlYSBvZiBhcmVhRWxlbWVudCB0XG4gIHwgQXVkaW8gb2YgYXVkaW9FbGVtZW50IHRcbiAgfCBCYXNlIG9mIGJhc2VFbGVtZW50IHRcbiAgfCBCbG9ja3F1b3RlIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgQm9keSBvZiBib2R5RWxlbWVudCB0XG4gIHwgQnIgb2YgYnJFbGVtZW50IHRcbiAgfCBCdXR0b24gb2YgYnV0dG9uRWxlbWVudCB0XG4gIHwgQ2FudmFzIG9mIGNhbnZhc0VsZW1lbnQgdFxuICB8IENhcHRpb24gb2YgdGFibGVDYXB0aW9uRWxlbWVudCB0XG4gIHwgQ29sIG9mIHRhYmxlQ29sRWxlbWVudCB0XG4gIHwgQ29sZ3JvdXAgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBEZWwgb2YgbW9kRWxlbWVudCB0XG4gIHwgRGlhbG9nIG9mIGRpYWxvZ0VsZW1lbnQgdFxuICB8IERpdiBvZiBkaXZFbGVtZW50IHRcbiAgfCBEbCBvZiBkTGlzdEVsZW1lbnQgdFxuICB8IEVtYmVkIG9mIGVtYmVkRWxlbWVudCB0XG4gIHwgRmllbGRzZXQgb2YgZmllbGRTZXRFbGVtZW50IHRcbiAgfCBGb3JtIG9mIGZvcm1FbGVtZW50IHRcbiAgfCBGcmFtZXNldCBvZiBmcmFtZVNldEVsZW1lbnQgdFxuICB8IEZyYW1lIG9mIGZyYW1lRWxlbWVudCB0XG4gIHwgSDEgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEgyIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMyBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDQgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg1IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSGVhZCBvZiBoZWFkRWxlbWVudCB0XG4gIHwgSHIgb2YgaHJFbGVtZW50IHRcbiAgfCBIdG1sIG9mIGh0bWxFbGVtZW50IHRcbiAgfCBJZnJhbWUgb2YgaUZyYW1lRWxlbWVudCB0XG4gIHwgSW1nIG9mIGltYWdlRWxlbWVudCB0XG4gIHwgSW5wdXQgb2YgaW5wdXRFbGVtZW50IHRcbiAgfCBJbnMgb2YgbW9kRWxlbWVudCB0XG4gIHwgTGFiZWwgb2YgbGFiZWxFbGVtZW50IHRcbiAgfCBMZWdlbmQgb2YgbGVnZW5kRWxlbWVudCB0XG4gIHwgTGkgb2YgbGlFbGVtZW50IHRcbiAgfCBMaW5rIG9mIGxpbmtFbGVtZW50IHRcbiAgfCBNYXAgb2YgbWFwRWxlbWVudCB0XG4gIHwgTWV0YSBvZiBtZXRhRWxlbWVudCB0XG4gIHwgT2JqZWN0IG9mIG9iamVjdEVsZW1lbnQgdFxuICB8IE9sIG9mIG9MaXN0RWxlbWVudCB0XG4gIHwgT3B0Z3JvdXAgb2Ygb3B0R3JvdXBFbGVtZW50IHRcbiAgfCBPcHRpb24gb2Ygb3B0aW9uRWxlbWVudCB0XG4gIHwgUCBvZiBwYXJhZ3JhcGhFbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJpbmNsdWRlIEpzX29mX29jYW1sLkpzXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWwuVXJsXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbC5Eb21faHRtbFxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbC5GaXJlYnVnXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sLkZpbGVcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbC5Eb21cbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sLlR5cGVkX2FycmF5XG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWwuUmVnZXhwXG5cbnR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgU3RkbGliLnJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxudHlwZSB3aW5kb3cgPSBEb21faHRtbC53aW5kb3dcblxubGV0IHRvX2FycmF5ZiBmIGEgPSBBcnJheS5tYXAgZiAodG9fYXJyYXkgYSlcblxubGV0IG9mX2FycmF5ZiBmIGEgPSBhcnJheSAoQXJyYXkubWFwIGYgYSlcblxubGV0IHRvX2xpc3QgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXkgYVxuXG5sZXQgb2ZfbGlzdCBsID0gYXJyYXkgQEAgQXJyYXkub2ZfbGlzdCBAQCBsXG5cbmxldCB0b19saXN0ZiBmIGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5ZiBmIGFcblxubGV0IG9mX2xpc3RmIGYgYSA9IG9mX2FycmF5ZiBmIEBAIEFycmF5Lm9mX2xpc3QgYVxuXG5sZXQgb3B0ZGVmIGYgPSBmdW5jdGlvbiBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgdW5vcHRkZWZfZiBkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4gZiB4XG5cbmxldCB1bm9wdGRlZiBkZWYgeCA9IG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IHhcblxubGV0IGNvbnZkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG9wdCBmID0gZnVuY3Rpb24gTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGNvbnZvcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGpzX2xvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKHN0cmluZyBzKVxuXG5sZXQgbG9nIGZtdCA9XG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gX2ZtdCAtPiBqc19sb2cgKHN0cmluZyAoRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpKSlcbiAgICBGb3JtYXQuc3RyX2Zvcm1hdHRlciBmbXRcblxubGV0IGVycm9yX29mX3N0cmluZyBzID0gbmV3JWpzIGVycm9yX2NvbnN0ciAoc3RyaW5nIHMpXG5sZXQgY2F0Y2hfZXhuIGYgPSBmdW5jdGlvblxuICB8IEpzX2Vycm9yLkV4biBlIC0+IGYgKEpzX2Vycm9yLnRvX2Vycm9yIGUpXG4gIHwgZXhuIC0+IGYgQEAgZXJyb3Jfb2Zfc3RyaW5nIEBAIFByaW50ZXhjLnRvX3N0cmluZyBleG5cblxubW9kdWxlIEFPcHQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuICBsZXQgbnVsbCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgdW5kZWZpbmVkIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBjb2VyY2UgOiAnYSB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBqc19lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG4gIGxldCBpc19ub25lICh4IDogJ2EgdCkgOiBib29sID0geCA9PSB1bmRlZmluZWQgfHwganNfZXF1YWxzIHggbnVsbFxuICBsZXQgbWFwID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYikgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgcmV0dXJuIChmIChjb2VyY2UgeCkpXG4gIGxldCBiaW5kID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYiB0KSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSBmIChjb2VyY2UgeClcbiAgbGV0IHRlc3QgKHggOiAnYSB0KSA6IGJvb2wgPSBub3QgKGlzX25vbmUgeClcbiAgbGV0IGl0ZXIgKHggOiAnYSB0KSAoZiA6ICdhIC0+IHVuaXQpIDogdW5pdCA9IGlmIG5vdCAoaXNfbm9uZSB4KSB0aGVuIGYgKGNvZXJjZSB4KVxuICBsZXQgY2FzZSAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYikgKGcgOiAnYSAtPiAnYikgOiAnYiA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSBnIChjb2VyY2UgeClcbiAgbGV0IGdldCAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYSkgOiAnYSA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSAoY29lcmNlIHgpXG4gIGxldCBvcHRpb24gPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSBvcHRpb24pIDogJ2EgdCA9IG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgbGV0IHRvX29wdGlvbiAoeCA6ICdhIHQpIDogJ2Egb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgbGV0IGFvcHQgPyhub25lPSh1bmRlZmluZWQgOiAnYiB0KSkgKGYgOiAnYSAtPiAnYikgOiAnYSBvcHRpb24gLT4gJ2IgdCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4gKGYgeClcbiAgbGV0IHRvX2FvcHQgKGYgOiAnYSAtPiAnYikgKHggOiAnYSB0KSA6ICdiIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIChmIHgpKVxuZW5kXG50eXBlICdhIGFvcHQgPSAnYSBBT3B0LnRcblxudHlwZSAnYSBjYXNlX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA+IGdlbl9wcm9wXG5cbmxldCByZWMgY2hvb3NlX2Nhc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBoIDo6IHQgLT4gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBoIHdpdGggTm9uZSAtPiBjaG9vc2VfY2FzZV9vcHQgdCB8IFNvbWUgXyAtPiBoXG5cbmxldCBjaG9vc2VfY2FzZSBsID0gY2hvb3NlX2Nhc2Vfb3B0IChMaXN0Lm1hcCBPcHRkZWYucmV0dXJuIGwpXG5cbmxldCBvYmplY3RfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxubGV0IGFzc2lnbiAobzEgOiBfIHQpIChvMiA6IF8gdCkgPSBVbnNhZmUuY29lcmNlIChvYmplY3RfY3MjI2Fzc2lnbiBvMSBvMilcbmxldCBhc3NpZ25fbGlzdCBsID0gVW5zYWZlLmNvZXJjZSAoVW5zYWZlLm1ldGhfY2FsbCBvYmplY3RfY3MgXCJhc3NpZ25cIiAoQXJyYXkub2ZfbGlzdCBsKSlcblxubGV0IHJlbW92ZV91bmRlZmluZWQgbyA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgbyBpblxuICBrZXlzIyNmb3JFYWNoICh3cmFwX2NhbGxiYWNrIChmdW4gayBfIF8gLT5cbiAgICAgIGlmIG5vdCAoT3B0ZGVmLnRlc3QgKFVuc2FmZS5nZXQgbyBrKSkgdGhlbiBVbnNhZmUuZGVsZXRlIG8gaykpXG4iLCJvcGVuIEpzXG5cbnR5cGUgbm9ucmVjICdhIHQgPSA8ID4gdFxuXG5sZXQgb2JqID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgKHYgOiAnYSkgPSBVbnNhZmUuc2V0IHQgKHN0cmluZyBrKSB2XG5cbmxldCBhZGRfbGlzdCAodCA6ICdhIHQpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIGxcblxubGV0IGFkZF9saXN0ZiAodCA6ICdiIHQpIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgKGYgdikpIGxcblxubGV0IG1ha2UgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0IHQgbDtcbiAgdFxuXG5sZXQgbWFrZWYgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYiB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3RmIHQgZiBsO1xuICB0XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgPSBVbnNhZmUuZGVsZXRlIHQgKHN0cmluZyBrKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA6ICdhIG9wdGlvbiA9XG4gIE9wdGRlZi50b19vcHRpb24gKFVuc2FmZS5nZXQgdCAoc3RyaW5nIGspKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogc3RyaW5nIGxpc3QgPVxuICB0b19saXN0ZiB0b19zdHJpbmcgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2EpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXNmIChmIDogKCdhIC0+ICdiKSkgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYikgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgZiBAQCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGxlbmd0aCAodCA6ICdhIHQpID0gKG9iaiMja2V5cyB0KSMjLmxlbmd0aFxuXG5sZXQgbWVyZ2UgKGwgOiAnYSB0IGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgKGl0ZW1zIHgpKSBsO1xuICB0XG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gcHJvbWlzZTAgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdGhlbl8gOiAoJ2EgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gICAgbWV0aG9kIGNhdGNoIDogKCdiIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb21pc2UgPSBbJ2EsIGVycm9yIHRdIHByb21pc2UwXG5cbnR5cGUgKCdhLCAnYikgcHJvbWlzZV9jcyA9XG4gICgoKCdhIC0+IHVuaXQpIC0+ICgnYiAtPiB1bml0KSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0KVxuICBjb25zdHJcblxubGV0IHByb21pc2UgZiA9XG4gIGxldCBjcyA6ICgnYSwgJ2IpIHByb21pc2VfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX1Byb21pc2UgaW5cbiAgbmV3JWpzIGNzICh3cmFwX2NhbGxiYWNrIGYpXG5cbmxldCBqdGhlbjAgP2Vycm9yIChwcm9tIDogKCdhLCAnYiB0KSBwcm9taXNlMCB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIChmdW4geCAtPiBlZiAoVW5zYWZlLmNvZXJjZSB4KSkgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbiA/ZXJyb3IgKHByb20gOiAnYSBwcm9taXNlIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9IG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIGVmIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4wX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbjAgcHJvbSBmXG5sZXQganRoZW5fb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuIHByb20gZlxuXG5sZXQgcnRoZW4gcHJvbSBmID1cbiAganRoZW4gfmVycm9yOihmdW4gZSAtPiBmIEBAIEVycm9yIGUpIHByb20gKGZ1biB4IC0+IGYgKE9rIHgpKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2cyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiBvMSBvMlxuXG5sZXQgbG9nMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjbG9nXzMgbzEgbzIgbzNcblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IGxvZ19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgbG9nX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBkZWJ1ZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyBvXG5cbmxldCBkZWJ1ZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgbzEgbzJcblxubGV0IGRlYnVnMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMyBvMSBvMiBvM1xuXG5sZXQgZGVidWdfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgcylcblxubGV0IGRlYnVnX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGRlYnVnX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IHdhcm4gbyA9IEZpcmVidWcuY29uc29sZSMjd2FybiBvXG5cbmxldCB3YXJuMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIG8xIG8yXG5cbmxldCB3YXJuMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8zIG8xIG8yIG8zXG5cbmxldCB3YXJuX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIChKcy5zdHJpbmcgcylcblxubGV0IHdhcm5fc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCB3YXJuX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZXJyb3IgbyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3Igb1xuXG5sZXQgZXJyb3IyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIG8xIG8yXG5cbmxldCBlcnJvcjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgbzEgbzIgbzNcblxubGV0IGVycm9yX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpXG5cbmxldCBlcnJvcl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBlcnJvcl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgYmlnSW50ID0gb2JqZWN0XG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBfIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdmFsdWVPZiA6IGJpZ0ludCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vbnJlYyB0ID0gYmlnSW50IHRcblxubGV0IGJpZ0ludCA6IChVbnNhZmUuYW55IC0+IHQpID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIkJpZ0ludFwiXG5cbmxldCBvZl9zdHJpbmcgcyA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBzdHJpbmcgcylcbmxldCBvZl9pbnQgKGkgOiBpbnQpID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIGkpXG5sZXQgb2ZfaW50NjQgKGkgOiBpbnQ2NCkgPSBvZl9zdHJpbmcgKEludDY0LnRvX3N0cmluZyBpKVxubGV0IG9mX25hdGl2ZSAoaSA6IG5hdGl2ZWludCkgPSBvZl9zdHJpbmcgKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbmxldCBvZl9mbG9hdCBmID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIG51bWJlcl9vZl9mbG9hdCBmKVxuXG5sZXQgdG9fbG9jYWxlX3N0cmluZyA/Zm10ID9vcHRpb25zIChuIDogdCkgPVxuICB0b19zdHJpbmcgKG4jI3RvTG9jYWxlU3RyaW5nIChvcHRkZWYgc3RyaW5nIGZtdCkgKE9wdGRlZi5vcHRpb24gb3B0aW9ucykpXG5sZXQgdG9fc3RyaW5nIChuIDogdCkgPSB0b19zdHJpbmcgbiMjdG9TdHJpbmdcbiIsIm9wZW4gSnNcblxubGV0IHNldElubmVySHRtbCBlbHQgcyA9IGVsdCMjLmlubmVySFRNTCA6PSBzdHJpbmcgc1xuXG5sZXQgc2V0VGV4dCBlbHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBzIC0+XG4gICAgICBlbHQjIy50ZXh0Q29udGVudCA6PSBzb21lIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNhZGQgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3NlcyBlbHQgbCA9IExpc3QuaXRlciAoYWRkQ2xhc3MgZWx0KSBsXG5cbmxldCByZW1vdmVDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjcmVtb3ZlIChzdHJpbmcgcylcblxubGV0IGNvbnRhaW5zQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2NvbnRhaW5zIChzdHJpbmcgcylcblxubGV0IHNldEF0dHJpYnV0ZSBlbHQga2V5IHZhbHVlID0gZWx0IyNzZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpIChzdHJpbmcgdmFsdWUpXG5cbmxldCByZW1vdmVBdHRyaWJ1dGUgZWx0IGtleSA9IGVsdCMjcmVtb3ZlQXR0cmlidXRlIChzdHJpbmcga2V5KVxuXG5sZXQgZ2V0QXR0cmlidXRlIGVsdCBrZXkgPSBPcHQudG9fb3B0aW9uIChlbHQjI2dldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkpXG5cbmxldCBzZXRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFkZENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIGxldCBzdHlsZXMgPVxuICAgIG1hdGNoIGdldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgc3R5bGVzXG4gICAgfCBTb21lIG9sZF9zdHlsZXMgLT5cbiAgICAgICAgb2xkX3N0eWxlcyBeIFwiOyBcIiBeIHN0eWxlc1xuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFwcGVuZENoaWxkID0gRG9tLmFwcGVuZENoaWxkXG5cbmxldCByZW1vdmVDaGlsZCA9IERvbS5yZW1vdmVDaGlsZFxuXG5sZXQgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID0gTGlzdC5pdGVyIChEb20uYXBwZW5kQ2hpbGQgcGFyZW50KSBjaGlsZHJlblxuXG5sZXQgY2hpbGRyZW4gcGFyZW50ID0gRG9tLmxpc3Rfb2Zfbm9kZUxpc3QgcGFyZW50IyMuY2hpbGROb2Rlc1xuXG5sZXQgcmVtb3ZlQ2hpbGRpIHBhcmVudCBpID1cbiAgbWF0Y2ggTGlzdC5udGhfb3B0IChjaGlsZHJlbiBwYXJlbnQpIGkgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBjaGlsZCAtPlxuICAgICAgcmVtb3ZlQ2hpbGQgcGFyZW50IGNoaWxkXG5cbmxldCByZW1vdmVDaGlsZHJlbiBwYXJlbnQgPSBMaXN0Lml0ZXIgKHJlbW92ZUNoaWxkIHBhcmVudCkgKGNoaWxkcmVuIHBhcmVudClcblxubGV0IHJlcGxhY2VDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPVxuICByZW1vdmVDaGlsZHJlbiBwYXJlbnQgO1xuICBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW5cblxubGV0IGJ5X2lkIHMgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBzXG5cbmxldCBhZGRMaXN0ZW5lciA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgZXYgZiA9XG4gIGxldCBjYXB0dXJlID0gT3B0aW9uLm1hcCBib29sIGNhcHR1cmUgaW5cbiAgbGV0IG9uY2UgPSBPcHRpb24ubWFwIGJvb2wgb25jZSBpblxuICBsZXQgcGFzc2l2ZSA9IE9wdGlvbi5tYXAgYm9vbCBwYXNzaXZlIGluXG4gIGlnbm9yZSBAQFxuICBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCAoRG9tLkV2ZW50Lm1ha2UgZXYpXG4gICAgKERvbS5oYW5kbGVyIChmdW4gZSAtPiBib29sIChmIGUpKSlcblxubW9kdWxlIEVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhjbGFzc2VzID0gW10pID8oc3R5bGVzID0gW10pID8obGlzdGVuID0gW10pID8oYXR0ciA9IFtdKSA/dGV4dCBmXG4gICAgICBjaGlsZHJlbiA9XG4gICAgbGV0IGVsdCA9IGYgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biAoZXYsIGYpIC0+IGFkZExpc3RlbmVyIGVsdCBldiBmKSBsaXN0ZW4gO1xuICAgIGFkZENsYXNzZXMgZWx0IGNsYXNzZXMgO1xuICAgIHNldENTUyBlbHQgc3R5bGVzIDtcbiAgICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gc2V0QXR0cmlidXRlIGVsdCBrIHYpIGF0dHIgO1xuICAgIHNldFRleHQgZWx0IHRleHQgO1xuICAgIGFwcGVuZENoaWxkcmVuIGVsdCBjaGlsZHJlbiA7XG4gICAgZWx0XG5cbiAgbGV0IGJ1dHRvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQnV0dG9uIGNoaWxkcmVuXG5cbiAgbGV0IGRpdiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRGl2IGNoaWxkcmVuXG5cbiAgbGV0IGEgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUEgY2hpbGRyZW5cblxuICBsZXQgc3BhbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU3BhbiBjaGlsZHJlblxuXG4gIGxldCBmb3JtID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVGb3JtIGNoaWxkcmVuXG5cbiAgbGV0IG9wdGlvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlT3B0aW9uIGNoaWxkcmVuXG5cbiAgbGV0IHNlbGVjdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2VsZWN0IGNoaWxkcmVuXG5cbiAgbGV0IGlucHV0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCAoKSA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbnB1dCBbXVxuXG4gIGxldCBpZnJhbWUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlmcmFtZSBjaGlsZHJlblxuXG4gIGxldCBsYWJlbCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGFiZWwgY2hpbGRyZW5cblxuICBsZXQgdWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVVsIGNoaWxkcmVuXG5cbiAgbGV0IGxpID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMaSBjaGlsZHJlblxuXG4gIGxldCBpbWcgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUltZyBjaGlsZHJlblxuXG4gIGxldCBzY3JpcHQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNjcmlwdCBjaGlsZHJlblxuXG4gIGxldCB0YWJsZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGFibGUgY2hpbGRyZW5cblxuICBsZXQgdHIgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRyIGNoaWxkcmVuXG5cbiAgbGV0IHRoID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUaCBjaGlsZHJlblxuXG4gIGxldCB0ZCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGQgY2hpbGRyZW5cbmVuZFxuXG5sZXQgZW5jYXBzZSBzID0gXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCJcblxubGV0IHN0cmluZ3NfdG9fYXJyYXkgbCA9IFwiW1wiIF4gU3RyaW5nLmNvbmNhdCBcIixcIiBsIF4gXCJdXCJcblxubGV0IHN0cmluZ3NfdG9fb2JqZWN0IGwgPVxuICBsZXQgcyA9XG4gICAgXCJ7XCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIsXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGVuY2Fwc2UgayBeIFwiOlwiIF4gdikgbClcbiAgICBeIFwifVwiXG4gIGluXG4gIHRyeSBfSlNPTiMjcGFyc2UgKHN0cmluZyBzKVxuICB3aXRoIF8gLT5cbiAgICBsb2dfc3RyIChcImNhbm5vdCBwYXJzZSBqc29uIFwiIF4gcykgO1xuICAgIFVuc2FmZS5vYmogW3x8XVxuIiwib3BlbiBFempzX21pblxuXG5tb2R1bGUgVHlwZXMgPSBFempzX2lkYl90eXBlc1xub3BlbiBUeXBlc1xuXG50eXBlIG1vZGUgPSBSRUFET05MWSB8IFJFQURXUklURSB8IFZFUlNJT05DSEFOR0VcbnR5cGUgZGlyZWN0aW9uID0gTkVYVCB8IFBSRVYgfCBORVhUVU5JUVVFIHwgUFJFVlVOSVFVRVxuXG50eXBlIGRiX29wdGlvbnMgPSB7IGtleV9wYXRoIDogc3RyaW5nIG9wdGlvbjsgYXV0b19pbmNyZW1lbnQgOiBib29sIG9wdGlvbiB9XG5cbnR5cGUgZGJfdXBncmFkZSA9IHsgb2xkX3ZlcnNpb24gOiBpbnQ7IG5ld192ZXJzaW9uIDogaW50IH1cblxudHlwZSBpbmRleF9vcHRpb25zID0geyB1bmlxdWUgOiBib29sIG9wdGlvbjsgbXVsdGlfZW50cnkgOiBib29sIG9wdGlvbjsgbG9jYWxlIDogYm9vbCBvcHRpb24gfVxuXG5tb2R1bGUgdHlwZSBUcl9zaWcgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUganNcbiAgdmFsIHRvX2pzIDogdCAtPiBqc1xuICB2YWwgb2ZfanMgOiBqcyAtPiB0XG5lbmRcblxubGV0IHN0cl9vZl9tb2RlID0gZnVuY3Rpb25cbiAgfCBSRUFET05MWSAtPiBzdHJpbmcgXCJyZWFkb25seVwiXG4gIHwgUkVBRFdSSVRFIC0+IHN0cmluZyBcInJlYWR3cml0ZVwiXG4gIHwgVkVSU0lPTkNIQU5HRSAtPiBzdHJpbmcgXCJ2ZXJzaW9uY2hhbmdlXCJcblxubGV0IHN0cl9vZl9kaXJlY3Rpb24gPSBmdW5jdGlvblxuICB8IE5FWFQgLT4gc3RyaW5nIFwibmV4dFwiXG4gIHwgUFJFViAtPiBzdHJpbmcgXCJwcmV2XCJcbiAgfCBORVhUVU5JUVVFIC0+IHN0cmluZyBcIm5leHR1bmlxdWVcIlxuICB8IFBSRVZVTklRVUUgLT4gc3RyaW5nIFwicHJldnVuaXF1ZVwiXG5cbmxldCBpREJLZXlSYW5nZSA6IFVuc2FmZS5hbnkgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCJcbmxldCBpbmRleGVkREIgOiBqc19zdHJpbmcgdCBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCJcblxubGV0IHJlc3VsdCByID0gciMjLnJlc3VsdFxuXG5sZXQgd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAocmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCB3cmFwZiA/ZXJyb3IgP2NhbGxiYWNrIGcgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChnIEBAIHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgZGJfdXBncmFkZV9ldmVudCAoZSA6IGlEQlZlcnNpb25DaGFuZ2VFdmVudCB0KSA9IHtcbiAgb2xkX3ZlcnNpb24gPSBlIyMub2xkVmVyc2lvbjtcbiAgbmV3X3ZlcnNpb24gPSBlIyMubmV3VmVyc2lvbjtcbn1cblxubGV0IG9wZW5EQiA/dXBncmFkZSA/ZXJyb3IgP3ZlcnNpb24gbmFtZSBjYWxsYmFjayA9XG4gIGxldCBpbmRleGVkREIgOiBfIGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIiBpblxuICBsZXQgciA9IGxhenkgKGluZGV4ZWREQiMjX29wZW4gKHN0cmluZyBuYW1lKSAoQU9wdC5vcHRpb24gdmVyc2lvbikpIGluXG4gIHdyYXAgP2Vycm9yIH5jYWxsYmFjayByO1xuICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICByIyMub251cGdyYWRlbmVlZGVkIDo9XG4gICAgQU9wdC5hb3B0IChmdW4gdSAtPiB3cmFwX2NhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICBsZXQgdiA9IGRiX3VwZ3JhZGVfZXZlbnQgZSBpblxuICAgICAgICBsZXQgZGIgPSByZXN1bHQgciBpblxuICAgICAgICB1IGRiIHYpKSB1cGdyYWRlXG5cbmxldCB0cmFuc2FjdGlvbiByIDogaURCVHJhbnNhY3Rpb24gdCA9IHIjIy50cmFuc2FjdGlvblxuXG5sZXQgY3JlYXRlX2RiX29wdGlvbnMge2tleV9wYXRoOyBhdXRvX2luY3JlbWVudH0gOiBjcmVhdGVfZGJfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gIHZhbCBrZXlQYXRoID0gQU9wdC5hb3B0IHN0cmluZyBrZXlfcGF0aFxuICB2YWwgYXV0b0luY3JlbWVudCA9IEFPcHQuYW9wdCBib29sIGF1dG9faW5jcmVtZW50XG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lID1cbiAgVW5zYWZlLmNvZXJjZSBAQFxuICBkYiMjY3JlYXRlT2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKSAoQU9wdC5hb3B0IGNyZWF0ZV9kYl9vcHRpb25zIG9wdGlvbnMpXG5cbmxldCBnZXRfc3RvcmUgP21vZGUgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA6IChfLCBfKSBpREJPYmplY3RTdG9yZSB0ID1cbiAgbGV0IHRyID0gZGIjI3RyYW5zYWN0aW9uIChhcnJheSBbfCBzdHJpbmcgbmFtZSB8XSkgKEFPcHQuYW9wdCBzdHJfb2ZfbW9kZSBtb2RlKSBpblxuICBVbnNhZmUuY29lcmNlIEBAIHRyIyNvYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpXG5cbm1vZHVsZSBTdG9yZShLIDogVHJfc2lnKShEIDogVHJfc2lnKSA9IHN0cnVjdFxuXG4gIHR5cGUgc3RvcmUgPSAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdFxuICB0eXBlIGtleXMgPSBLIG9mIEsudCB8IEtSIG9mIEsuanMgaURCS2V5UmFuZ2UgdFxuXG4gIGxldCBjcmVhdGUgP29wdGlvbnMgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBjcmVhdGVfc3RvcmUgP29wdGlvbnMgZGIgbmFtZVxuXG4gIGxldCBzdG9yZSA/bW9kZSBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGdldF9zdG9yZSA/bW9kZSBkYiBuYW1lXG5cbiAgbGV0IGFkZCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciBLLm9mX2pzIEBAIGxhenkgKHN0IyNhZGQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHB1dCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcCA/Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNwdXQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHJhbmdlID9vbG93ZXIgP291cHBlciA/bG93ZXIgP3VwcGVyICgpID1cbiAgICBsZXQgaURCS2V5UmFuZ2UgOiBLLmpzIGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiIGluXG4gICAgbWF0Y2ggbG93ZXIsIHVwcGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGxvd2VyLCBOb25lIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2xvd2VyQm91bmQgKEsudG9fanMgbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpKVxuICAgIHwgTm9uZSwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyN1cHBlckJvdW5kIChLLnRvX2pzIHVwcGVyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcbiAgICB8IFNvbWUgbG93ZXIsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjYm91bmRcbiAgICAgICAgICAgIChLLnRvX2pzIGxvd2VyKSAoSy50b19qcyB1cHBlcilcbiAgICAgICAgICAgIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuXG4gIGxldCBjb3VudCA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKGNhbGxiYWNrIDogaW50IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IEFPcHQudW5kZWZpbmVkKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IChBT3B0LmRlZiAoSy50b19qcyBrKSkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50X3JhbmdlIChBT3B0LmRlZiByKSlcblxuICBsZXQgZ2V0ID9lcnJvciAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEQub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXQgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldF9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbCA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbF9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZ2V0X2tleSA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChLLm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXlfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGxfa2V5cyA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5c19yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZGVsZXRlID9jYWxsYmFjayA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpID0gZnVuY3Rpb25cbiAgICB8IEsga2V5IC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlIChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZV9yYW5nZSByYW5nZSlcblxuICBsZXQgaXRlciA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrIChELm9mX2pzIGMjIy52YWx1ZSk7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGQgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAoRC5vZl9qcyBjIyMudmFsdWUpICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGl0ZXJfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGs7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGRfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgY2xlYXIgP2Vycm9yID9jYWxsYmFjayAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgKGZ1biBfIC0+ICgpKSBAQCBsYXp5IHN0IyNjbGVhclxuXG4gIGxldCBjcmVhdGVfaW5kZXhfb3B0aW9ucyB7dW5pcXVlOyBtdWx0aV9lbnRyeTsgbG9jYWxlfSA6IGNyZWF0ZV9pbmRleF9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgICB2YWwgdW5pcXVlID0gQU9wdC5hb3B0IGJvb2wgdW5pcXVlXG4gICAgdmFsIG11bHRpRW50cnkgPSBBT3B0LmFvcHQgYm9vbCBtdWx0aV9lbnRyeVxuICAgIHZhbCBsb2NhbGUgPSBBT3B0LmFvcHQgYm9vbCBsb2NhbGVcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9pbmRleCA/b3B0aW9ucyAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSBrZXlfcGF0aCA9XG4gICAgbGV0IG9wdGlvbnMgPSBBT3B0LmFvcHQgY3JlYXRlX2luZGV4X29wdGlvbnMgb3B0aW9ucyBpblxuICAgIHN0IyNjcmVhdGVJbmRleCAoc3RyaW5nIG5hbWUpIChzdHJpbmcga2V5X3BhdGgpIG9wdGlvbnNcblxuICBsZXQgZGVsZXRlX2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBpZ25vcmUgQEAgc3QjI2RlbGV0ZUluZGV4IChzdHJpbmcgbmFtZSlcblxuICBsZXQgZ2V0X2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBzdCMjaW5kZXggKHN0cmluZyBuYW1lKVxuXG5lbmRcblxubW9kdWxlIE5vVHIoUyA6IHNpZyB0eXBlIHQgZW5kKSA6IFRyX3NpZyB3aXRoIHR5cGUgdCA9IFMudCBhbmQgdHlwZSBqcyA9IFMudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTLnRcbiAgdHlwZSBqcyA9IFMudFxuICBsZXQgdG9fanMgeCA9IHhcbiAgbGV0IG9mX2pzIHggPSB4XG5lbmRcblxubW9kdWxlIEludFRyIDogKFRyX3NpZyB3aXRoIHR5cGUganMgPSBpbnQgYW5kIHR5cGUgdCA9IGludCkgPSBOb1RyKHN0cnVjdCB0eXBlIHQgPSBpbnQgZW5kKVxuXG5tb2R1bGUgU3RyaW5nVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0ganNfc3RyaW5nIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0ganNfc3RyaW5nIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gc3RyaW5nIHhcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBudW1iZXIgdCBhbmQgdHlwZSB0ID0gZmxvYXQgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IG51bWJlciB0XG4gIHR5cGUgdCA9IGZsb2F0XG4gIGxldCB0b19qcyB4ID0gbnVtYmVyX29mX2Zsb2F0IHhcbiAgbGV0IG9mX2pzIHggPSBmbG9hdF9vZl9udW1iZXIgeFxuZW5kXG5cbm1vZHVsZSBEYXRlVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gZGF0ZSB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGRhdGUgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBuZXclanMgZGF0ZV9mcm9tVGltZVZhbHVlIChkYXRlIyNwYXJzZSAoc3RyaW5nIHgpKVxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4IyN0b0xvY2FsZVN0cmluZ1xuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IFN0ZGxpYi5pbl9jaGFubmVsXG5cbmxldCBlcXVhbCAodDEgOiB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cblxubGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpIGZpbGUgPVxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fcmRvbmx5IF0gaW5cbiAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuOztcblxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX2luXG5sZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZSB+ZiA9IEV4bi5wcm90ZWN0eCAoY3JlYXRlID9iaW5hcnkgZmlsZSkgfmYgfmZpbmFsbHk6Y2xvc2VcblxubGV0IG1heV9lb2YgZiA9XG4gIHRyeSBTb21lIChmICgpKSB3aXRoXG4gIHwgRW5kX29mX2ZpbGUgLT4gTm9uZVxuOztcblxubGV0IGlucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIuaW5wdXQgdCBidWYgcG9zIGxlblxubGV0IHJlYWxseV9pbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IFN0ZGxpYi5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlbilcbmxldCByZWFsbHlfaW5wdXRfZXhuIHQgfmJ1ZiB+cG9zIH5sZW4gPSBTdGRsaWIucmVhbGx5X2lucHV0IHQgYnVmIHBvcyBsZW5cbmxldCBpbnB1dF9ieXRlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2J5dGUgdClcbmxldCBpbnB1dF9jaGFyIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2NoYXIgdClcbmxldCBpbnB1dF9iaW5hcnlfaW50IHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gU3RkbGliLmlucHV0X2JpbmFyeV9pbnQgdClcbmxldCB1bnNhZmVfaW5wdXRfdmFsdWUgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfdmFsdWUgdClcbmxldCBpbnB1dF9idWZmZXIgdCBidWYgfmxlbiA9IG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZiB0IGxlbilcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG5cbmxldCBpbnB1dF9hbGwgdCA9XG4gICgqIFdlIHVzZSA2NTUzNiBiZWNhdXNlIHRoYXQgaXMgdGhlIHNpemUgb2YgT0NhbWwncyBJTyBidWZmZXJzLiAqKVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluXG4gIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIGNodW5rX3NpemUgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBTdGRsaWIuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZmZlciB0IGNodW5rX3NpemU7XG4gICAgbG9vcCAoKVxuICBpblxuICB0cnkgbG9vcCAoKSB3aXRoXG4gIHwgRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlclxuOztcblxubGV0IHRyaW0gfmZpeF93aW5fZW9sIGxpbmUgPVxuICBpZiBmaXhfd2luX2VvbFxuICB0aGVuIChcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBsaW5lIGluXG4gICAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsIChTdHJpbmcuZ2V0IGxpbmUgKGxlbiAtIDEpKSAnXFxyJ1xuICAgIHRoZW4gU3RyaW5nLnN1YiBsaW5lIH5wb3M6MCB+bGVuOihsZW4gLSAxKVxuICAgIGVsc2UgbGluZSlcbiAgZWxzZSBsaW5lXG47O1xuXG5sZXQgaW5wdXRfbGluZSA/KGZpeF93aW5fZW9sID0gdHJ1ZSkgdCA9XG4gIG1hdGNoIG1heV9lb2YgKGZ1biAoKSAtPiBTdGRsaWIuaW5wdXRfbGluZSB0KSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBsaW5lIC0+IFNvbWUgKHRyaW0gfmZpeF93aW5fZW9sIGxpbmUpXG47O1xuXG5sZXQgaW5wdXRfbGluZV9leG4gPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBsZXQgbGluZSA9IFN0ZGxpYi5pbnB1dF9saW5lIHQgaW5cbiAgdHJpbSB+Zml4X3dpbl9lb2wgbGluZVxuOztcblxubGV0IGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQgfmYgPVxuICBsZXQgcmVjIGxvb3AgYWMgPVxuICAgIG1hdGNoIGlucHV0X2xpbmUgP2ZpeF93aW5fZW9sIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBhY1xuICAgIHwgU29tZSBsaW5lIC0+IGxvb3AgKGYgYWMgbGluZSlcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgaW5wdXRfbGluZXMgP2ZpeF93aW5fZW9sIHQgPVxuICBMaXN0LnJldiAoZm9sZF9saW5lcyA/Zml4X3dpbl9lb2wgdCB+aW5pdDpbXSB+ZjooZnVuIGxpbmVzIGxpbmUgLT4gbGluZSA6OiBsaW5lcykpXG47O1xuXG5sZXQgaXRlcl9saW5lcyA/Zml4X3dpbl9lb2wgdCB+ZiA9XG4gIGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBsaW5lIC0+IGYgbGluZSlcbjs7XG5cbmxldCByZWFkX2xpbmVzID9maXhfd2luX2VvbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjooaW5wdXRfbGluZXMgP2ZpeF93aW5fZW9sKVxubGV0IHJlYWRfYWxsIGZuYW1lID0gd2l0aF9maWxlIGZuYW1lIH5mOmlucHV0X2FsbFxuIiwib3BlbiEgQmFzZVxuXG50eXBlIHQgPSBTdGRsaWIub3V0X2NoYW5uZWxcblxubGV0IGVxdWFsICh0MSA6IHQpIHQyID0gcGh5c19lcXVhbCB0MSB0MlxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBzdGRvdXQgPSBTdGRsaWIuc3Rkb3V0XG5sZXQgc3RkZXJyID0gU3RkbGliLnN0ZGVyclxuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBpZiBwaHlzX2VxdWFsIHQgc3RkZXJyXG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZGVycj5cIlxuICBlbHNlIGlmIHBoeXNfZXF1YWwgdCBzdGRvdXRcbiAgdGhlbiBTZXhwLkF0b20gXCI8c3Rkb3V0PlwiXG4gIGVsc2UgU2V4cC5BdG9tIFwiPE91dF9jaGFubmVsLnQ+XCJcbjs7XG5cbnR5cGUgJ2Egd2l0aF9jcmVhdGVfYXJncyA9XG4gID9iaW5hcnk6Ym9vbCAtPiA/YXBwZW5kOmJvb2wgLT4gP2ZhaWxfaWZfZXhpc3RzOmJvb2wgLT4gP3Blcm06aW50IC0+ICdhXG5cbmxldCBjcmVhdGVcbiAgICAgID8oYmluYXJ5ID0gdHJ1ZSlcbiAgICAgID8oYXBwZW5kID0gZmFsc2UpXG4gICAgICA/KGZhaWxfaWZfZXhpc3RzID0gZmFsc2UpXG4gICAgICA/KHBlcm0gPSAwbzY2NilcbiAgICAgIGZpbGVcbiAgPVxuICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgbGV0IGZsYWdzID0gKGlmIGJpbmFyeSB0aGVuIE9wZW5fYmluYXJ5IGVsc2UgT3Blbl90ZXh0KSA6OiBmbGFncyBpblxuICBsZXQgZmxhZ3MgPSAoaWYgYXBwZW5kIHRoZW4gT3Blbl9hcHBlbmQgZWxzZSBPcGVuX3RydW5jKSA6OiBmbGFncyBpblxuICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIFN0ZGxpYi5vcGVuX291dF9nZW4gZmxhZ3MgcGVybSBmaWxlXG47O1xuXG5sZXQgc2V0X2JpbmFyeV9tb2RlID0gU3RkbGliLnNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGNsb3NlID0gU3RkbGliLmNsb3NlX291dFxubGV0IGNsb3NlX25vX2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBvdXRwdXQgdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5vdXRwdXQgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdWJzdHJpbmcgdCB+YnVmIH5wb3MgfmxlbiA9IFN0ZGxpYi5vdXRwdXRfc3Vic3RyaW5nIHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3RyaW5nID0gU3RkbGliLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBTdGRsaWIub3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0X2NoYXIgPSBTdGRsaWIub3V0cHV0X2NoYXJcbmxldCBvdXRwdXRfYnl0ZSA9IFN0ZGxpYi5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gU3RkbGliLm91dHB1dF9iaW5hcnlfaW50XG5sZXQgb3V0cHV0X2J1ZmZlciA9IFN0ZGxpYi5CdWZmZXIub3V0cHV0X2J1ZmZlclxubGV0IG91dHB1dF92YWx1ZSA9IFN0ZGxpYi5vdXRwdXRfdmFsdWVcbmxldCBuZXdsaW5lIHQgPSBvdXRwdXRfc3RyaW5nIHQgXCJcXG5cIlxuXG5sZXQgb3V0cHV0X2xpbmVzIHQgbGluZXMgPVxuICBMaXN0Lml0ZXIgbGluZXMgfmY6KGZ1biBsaW5lIC0+XG4gICAgb3V0cHV0X3N0cmluZyB0IGxpbmU7XG4gICAgbmV3bGluZSB0KVxuOztcblxubGV0IHByaW50ZiA9IFN0ZGxpYi5QcmludGYucHJpbnRmXG5sZXQgZXByaW50ZiA9IFN0ZGxpYi5QcmludGYuZXByaW50ZlxubGV0IGZwcmludGYgPSBTdGRsaWIuUHJpbnRmLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGxpYi5QcmludGYua2ZwcmludGZcbmxldCBwcmludF9zdHJpbmcgPSBTdGRsaWIucHJpbnRfc3RyaW5nXG5sZXQgcHJpbnRfZW5kbGluZSA9IFN0ZGxpYi5wcmludF9lbmRsaW5lXG5sZXQgcHJlcnJfZW5kbGluZSA9IFN0ZGxpYi5wcmVycl9lbmRsaW5lXG5cbmxldCBwcmludF9zID9tYWNoIHNleHAgPVxuICBwcmludF9lbmRsaW5lXG4gICAgKG1hdGNoIG1hY2ggd2l0aFxuICAgICB8IFNvbWUgKCkgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwXG4gICAgIHwgTm9uZSAtPiBTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbjs7XG5cbmxldCBlcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJlcnJfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgd2l0aF9maWxlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSB+ZiA9XG4gIEV4bi5wcm90ZWN0eCAoY3JlYXRlID9iaW5hcnkgP2FwcGVuZCA/ZmFpbF9pZl9leGlzdHMgP3Blcm0gZmlsZSkgfmYgfmZpbmFsbHk6Y2xvc2Vcbjs7XG5cbmxldCB3cml0ZV9saW5lcyBmaWxlIGxpbmVzID0gd2l0aF9maWxlIGZpbGUgfmY6KGZ1biB0IC0+IG91dHB1dF9saW5lcyB0IGxpbmVzKVxubGV0IHdyaXRlX2FsbCBmaWxlIH5kYXRhID0gd2l0aF9maWxlIGZpbGUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuIiwibW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbm1vZHVsZSBDb252X2Vycm9yID0gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yXG5tb2R1bGUgU2V4cF9ncmFtbWFyID0gU2V4cGxpYjAuU2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuIEJhc2VcblxudHlwZSAnYSB0ZXN0X3ByZWRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gKCdhIC0+IGJvb2wpXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxudHlwZSAnYSB0ZXN0X2VxXG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ID9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfcmVzdWx0XG4gID0gP2hlcmU6TGV4aW5nLnBvc2l0aW9uIGxpc3RcbiAgLT4gP21lc3NhZ2U6c3RyaW5nXG4gIC0+ID9lcXVhbDooJ2EgLT4gJ2EgLT4gYm9vbClcbiAgLT4gZXhwZWN0OidhXG4gIC0+ICdhXG4gIC0+IHVuaXRcblxuZXhjZXB0aW9uIEUgb2Ygc3RyaW5nICogU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbmxldCBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWcgYm9keSA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBtYXRjaCBtZXNzYWdlIHdpdGhcbiAgICB8IE5vbmUgLT4gdGFnXG4gICAgfCBTb21lIHMgLT4gcyBeIFwiOiBcIiBeIHRhZ1xuICBpblxuICBsZXQgc2V4cCA9XG4gICAgU2V4cC5MaXN0IChcbiAgICAgIGJvZHlcbiAgICAgIEAgWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJMb2NcIjsgU2V4cC5BdG9tIHBvcyBdIF1cbiAgICAgIEAgYmVnaW4gbWF0Y2ggaGVyZSB3aXRoXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBfIC0+IFsgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiU3RhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBbJXNleHBfb2Y6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQgbGlzdF0gaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBdXG4gICAgICBlbmRcbiAgICApXG4gIGluXG4gICgqIEhlcmUgYW5kIGluIG90aGVyIHBsYWNlcyB3ZSByZXR1cm4gZXhjZXB0aW9ucywgcmF0aGVyIHRoYW4gZGlyZWN0bHkgcmFpc2luZywgYW5kXG4gICAgIGluc3RlYWQgcmFpc2UgYXQgdGhlIGxhdGVzdCBtb21lbnQgcG9zc2libGUsIHNvIGJhY2t0cmFjZSBkb24ndCBpbmNsdWRlIG5vaXNlIGZyb21cbiAgICAgdGhlc2UgZnVuY3Rpb25zIHRoYXQgY29uc3RydWN0IGV4Y2VwdGlvbnMuICopXG4gIEUgKG1lc3NhZ2UsIHNleHApXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3ByZWQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+c2V4cGlmaWVyIHQgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJwcmVkaWNhdGUgZmFpbGVkXCIgW1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiVmFsdWVcIjsgc2V4cGlmaWVyIHRdXG4gIF1cblxubGV0IHRlc3RfcHJlZCB+cG9zIH5zZXhwaWZpZXIgfmhlcmUgP21lc3NhZ2UgcHJlZGljYXRlIHQgPVxuICBpZiBub3QgKHByZWRpY2F0ZSB0KSB0aGVuXG4gICAgcmFpc2UgKGV4bl90ZXN0X3ByZWQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+c2V4cGlmaWVyIHQpXG5cbmxldCByX2RpZmYgOiAoZnJvbV86c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdW5pdCkgb3B0aW9uIHJlZiA9IHJlZiAgIE5vbmVcbmxldCBzZXRfZGlmZl9mdW5jdGlvbiBmID0gcl9kaWZmIDo9IGZcblxubGV0IFtAY29sZF0gdGVzdF9yZXN1bHRfb3JfZXFfZmFpbGVkIH5zZXhwaWZpZXIgfmV4cGVjdCB+Z290ID1cbiAgbGV0IGdvdCA9IHNleHBpZmllciBnb3QgaW5cbiAgbGV0IGV4cGVjdCA9IHNleHBpZmllciBleHBlY3QgaW5cbiAgYmVnaW4gbWF0Y2ggIXJfZGlmZiB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZGlmZiAtPlxuICAgIGxldCBmcm9tXyA9IFNleHAudG9fc3RyaW5nX2h1bSBleHBlY3QgaW5cbiAgICBsZXQgdG9fICAgPSBTZXhwLnRvX3N0cmluZ19odW0gZ290IGluXG4gICAgZGlmZiB+ZnJvbV8gfnRvX1xuICBlbmQ7XG4gIGBGYWlsIChleHBlY3QsIGdvdClcblxubGV0IHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3QgfmdvdCA9XG4gIGxldCBwYXNzID1cbiAgICBtYXRjaCBlcXVhbCB3aXRoXG4gICAgfCBOb25lIC0+IGNvbXBhcmF0b3IgZ290IGV4cGVjdCA9IDBcbiAgICB8IFNvbWUgZiAtPiBmIGdvdCBleHBlY3RcbiAgaW5cbiAgaWYgcGFzc1xuICB0aGVuIGBQYXNzXG4gIGVsc2UgdGVzdF9yZXN1bHRfb3JfZXFfZmFpbGVkIH5zZXhwaWZpZXIgfmV4cGVjdCB+Z290XG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X2VxIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnQxIH50MiA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImNvbXBhcmlzb24gZmFpbGVkXCIgW1xuICAgIHQxO1xuICAgIFNleHAuQXRvbSBcInZzXCI7XG4gICAgdDI7XG4gIF1cblxubGV0IHRlc3RfZXEgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB0MSB0MiA9XG4gIG1hdGNoIHRlc3RfcmVzdWx0X29yX2VxIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmVxdWFsIH5leHBlY3Q6dDEgfmdvdDp0MiB3aXRoXG4gIHwgYFBhc3MgLT4gKClcbiAgfCBgRmFpbCAodDEsIHQyKSAtPiByYWlzZSAoZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyKVxuXG5sZXQgW0Bjb2xkXSBleG5fdGVzdF9yZXN1bHQgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+ZXhwZWN0IH5nb3QgPVxuICBleG5fc2V4cF9zdHlsZSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50YWc6XCJnb3QgdW5leHBlY3RlZCByZXN1bHRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJleHBlY3RlZFwiOyBleHBlY3RdO1xuICAgIFNleHAuTGlzdCBbU2V4cC5BdG9tIFwiZ290XCI7IGdvdF07XG4gIF1cblxubGV0W0B3YXJuaW5nIFwiLTE2XCJdIHRlc3RfcmVzdWx0IH5wb3MgfnNleHBpZmllciB+Y29tcGFyYXRvciB+aGVyZSA/bWVzc2FnZSA/ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290IHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsIChleHBlY3QsIGdvdCkgLT4gcmFpc2UgKGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdClcbiIsImxldCB1bmlxdWVfaWQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcblxuKCogVXNlZCB0byB0cmFjayB0aGUgY3VycmVudCBsaWJuYW1lIGluIHN1Y2ggYSB3YXkgdGhhdCBmb3IgZnVuY3RvciBhcHBsaWNhdGlvbnMsIGl0IGlzXG4gICB0aGUgY2FsbGluZyBsaWJyYXJpZXMgbmFtZSB0aGF0IGdldHMgcmVnaXN0ZXJlZC4gKilcbm1vZHVsZSBDdXJyZW50X2xpYm5hbWUgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIjx1bmtub3duPlwiXG4gIGxldCBsaWJuYW1lX3JlZiA9IHJlZiBudWxsXG4gIGxldCBzZXQgc3RyID0gbGlibmFtZV9yZWYgOj0gc3RyXG4gIGxldCB1bnNldCAoKSA9IGxpYm5hbWVfcmVmIDo9IG51bGxcbiAgbGV0IGdldCAoKSA9ICFsaWJuYW1lX3JlZlxuZW5kXG5cbm1vZHVsZSBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjayA9IHN0cnVjdFxuICBsZXQgdCA9IHJlZiBbXVxuICBsZXQgcHVzaCBzID0gdCA6PSBzIDo6ICF0XG4gIGxldCBwb3BfZXhuICgpID0gdCA6PSBMaXN0LnRsICF0XG5cbiAgbGV0IHRvX25hbWUgKCkgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IG1zIC0+IFNvbWUgKFN0cmluZy5jb25jYXQgXCIuXCIgKExpc3QucmV2IG1zKSlcbiAgOztcbmVuZFxuXG4oKiBUaGlzIGlzIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlIG9mIHRoaXMgbW9kdWxlLiBBbiBbRW50cnkudF0gcmVwcmVzZW50cyBhIGJlbmNobWFya1xuICAgYWxvbmcgd2l0aCBzb21lIG1ldGFkYXRhIGFib3V0IGlzIHBvc2l0aW9uLCBhcmd1bWVudHMgZXRjLiAqKVxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIHR5cGUgKCdwYXJhbSwgJ2EpIHBhcmFtZXRlcmlzZWRfc3BlYyA9XG4gICAgeyBhcmdfbmFtZSA6IHN0cmluZ1xuICAgIDsgcGFyYW1zIDogKHN0cmluZyAqICdwYXJhbSkgbGlzdFxuICAgIDsgdGh1bmsgOiAncGFyYW0gLT4gdW5pdCAtPiAnYVxuICAgIH1cblxuICB0eXBlIHRlc3Rfc3BlYyA9XG4gICAgfCBSZWd1bGFyX3RodW5rIDogKFsgYGluaXQgXSAtPiB1bml0IC0+ICdhKSAtPiB0ZXN0X3NwZWNcbiAgICB8IFBhcmFtZXRlcmlzZWRfdGh1bmsgOiAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjIC0+IHRlc3Rfc3BlY1xuXG4gIHR5cGUgdCA9XG4gICAgeyB1bmlxdWVfaWQgOiBpbnRcbiAgICA7IGNvZGUgOiBzdHJpbmdcbiAgICA7IHR5cGVfY29udl9wYXRoIDogc3RyaW5nXG4gICAgOyBuYW1lIDogc3RyaW5nXG4gICAgOyBmaWxlbmFtZSA6IHN0cmluZ1xuICAgIDsgbGluZSA6IGludFxuICAgIDsgc3RhcnRwb3MgOiBpbnRcbiAgICA7IGVuZHBvcyA6IGludFxuICAgIDsgdGVzdF9zcGVjIDogdGVzdF9zcGVjXG4gICAgOyBiZW5jaF9tb2R1bGVfbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBjb21wYXJlIHQxLnVuaXF1ZV9pZCB0Mi51bmlxdWVfaWRcblxuICAoKiBFeHRyYWN0cyBtb2R1bGUgbmFtZSBmcm9tIFtcImZpbGVuYW1lLm1sLk1vZHVsZVwiXSwgd2hpY2ggaXMgdGhlIGZvcm1hdCBvZiBbZXh0X25hbWVdXG4gICAgIGFzIHNldCBieSBbdHlwZWNvbnZdLiAqKVxuICBsZXQgZ2V0X21vZHVsZV9uYW1lX29wdCB0ID1cbiAgICBsZXQgc3RyID0gdC50eXBlX2NvbnZfcGF0aCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgKyA0IDw9IGxlblxuICAgICAgdGhlblxuICAgICAgICBpZiBTdHJpbmcuc3ViIHN0ciBpIDQgPSBcIi5tbC5cIlxuICAgICAgICB0aGVuIFNvbWUgKFN0cmluZy5zdWIgc3RyIChpICsgNCkgKGxlbiAtIGkgLSA0KSlcbiAgICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgTm9uZVxuICAgIGluXG4gICAgbG9vcCAwXG4gIDs7XG5cbiAgbGV0IHdpdGhfdGVzdF9zcGVjIHQgdGVzdF9zcGVjID0geyB0IHdpdGggdGVzdF9zcGVjIH1cbmVuZFxuXG4oKiBJbnNwZWN0IHN5c3RlbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVjaWRlIGlmIGJlbmNobWFya3MgYXJlIGJlaW5nIHJ1bi4gVGhpcyBpc1xuICAgY2FsbGVkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgW3BhX2JlbmNoXSBzeW50YXggdG8gZGVjaWRlIGlmIHRoZSBnbG9iYWwgaGFzaHRhYmxlXG4gICBzaG91bGQgYmUgcG9wdWxhdGVkLiAqKVxubGV0IGFkZF9lbnZpcm9ubWVudF92YXIgPVxuICBsZXQgdiA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJCRU5DSE1BUktTX1JVTk5FUlwiIHdpdGhcbiAgICB8IE5vdF9mb3VuZCAtPiBcIlwiXG4gIGluXG4gIHYgPSBcIlRSVUVcIlxuOztcblxuKCogVGhpcyBoYXNodGFibGUgY29udGFpbnMgYWxsIHRoZSBiZW5jaG1hcmtzIGZyb20gYWxsIHRoZSBvZiBsaWJyYXJpZXMgdGhhdCBoYXZlIGJlZW5cbiAgIGxvYWRlZC4gQXQgdGhlIHRpbWUgdGhlIGJlbmNobWFya3MgYXJlIHJlZ2lzdGVyaW5nIHRoZW1zZWx2ZXMgd2l0aCBbcHB4X2JlbmNoX2xpYl0gd2VcbiAgIGRvbid0IHlldCBrbm93IHdoaWNoIGxpYnJhcmllcyB3aWxsIG5lZWQgdG8gYmUgcnVuLiAgKilcbmxldCBsaWJzX3RvX2VudHJpZXMgOiAoc3RyaW5nLCBFbnRyeS50IGxpc3QpIEhhc2h0YmwudCA9IEhhc2h0YmwuY3JlYXRlIDEwXG5cbmxldCBsb29rdXBfcmV2X2xpYiB+bGlibmFtZSA9XG4gIHRyeSBIYXNodGJsLmZpbmQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgd2l0aFxuICB8IE5vdF9mb3VuZCAtPiBbXVxuOztcblxubGV0IGxvb2t1cF9saWIgfmxpYm5hbWUgPSBMaXN0LnJldiAobG9va3VwX3Jldl9saWIgfmxpYm5hbWUpXG5cbmxldCBmb3JjZV9kcm9wID1cbiAgKCogVXNlZnVsIGZvciBqc19vZl9vY2FtbCB0byBwZXJmb3JtIGRlYWRjb2RlIGVsaW1pbmF0aW9uLlxuICAgICBzZWUgcHB4L3BweF9pbmxpbmVfdGVzdC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIFtBY3Rpb24uZ2V0XSBmb3IgbW9yZSBkZXRhaWxzICopXG4gIHRyeVxuICAgIGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfQkVOQ0hcIiA6IHN0cmluZyk7XG4gICAgdHJ1ZVxuICB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG5sZXQgZ2V0X21vZGUgKCkgPSBpZiBmb3JjZV9kcm9wIHRoZW4gYElnbm9yZSBlbHNlIGBDb2xsZWN0XG5cbmxldFtAaW5saW5lIG5ldmVyXSBhZGRfYmVuY2hcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZVxuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGhcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRwb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRwb3NcbiAgICAgICAgICAgICAgICAgICAgIHRlc3Rfc3BlY1xuICA9XG4gIG1hdGNoIGdldF9tb2RlICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYENvbGxlY3QgLT5cbiAgICBsZXQgbGlibmFtZSA9IEN1cnJlbnRfbGlibmFtZS5nZXQgKCkgaW5cbiAgICBsZXQgZW50cnkgPVxuICAgICAgeyBFbnRyeS5jb2RlXG4gICAgICA7IHVuaXF1ZV9pZCA9IHVuaXF1ZV9pZCAoKVxuICAgICAgOyB0eXBlX2NvbnZfcGF0aFxuICAgICAgOyBiZW5jaF9tb2R1bGVfbmFtZSA9IEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnRvX25hbWUgKClcbiAgICAgIDsgbmFtZVxuICAgICAgOyBmaWxlbmFtZVxuICAgICAgOyBsaW5lXG4gICAgICA7IHN0YXJ0cG9zXG4gICAgICA7IGVuZHBvc1xuICAgICAgOyB0ZXN0X3NwZWNcbiAgICAgIH1cbiAgICBpblxuICAgIEhhc2h0YmwuYWRkIGxpYnNfdG9fZW50cmllcyBsaWJuYW1lIChlbnRyeSA6OiBsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBhZGRfYmVuY2hfbW9kdWxlXG4gICAgICAgICAgICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgICAgICAgICAgfmNvZGU6X1xuICAgICAgICAgICAgICAgICAgICAgfnR5cGVfY29udl9wYXRoOl9cbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpfXG4gICAgICAgICAgICAgICAgICAgICB+bGluZTpfXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRwb3M6X1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvczpfXG4gICAgICAgICAgICAgICAgICAgICBmXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgICgqIFJ1bm5pbmcgZiByZWdpc3RlcnMgdGhlIGJlbmNobWFya3MgdXNpbmcgQkVOQ0ggKilcbiAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wdXNoIG5hbWU7XG4gICAgKHRyeVxuICAgICAgIGYgKCk7XG4gICAgICAgQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sucG9wX2V4biAoKVxuICAgICB3aXRoXG4gICAgIHwgZXggLT5cbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpO1xuICAgICAgIHJhaXNlIGV4KVxuOztcbiIsInR5cGUgdCA9IHN0cmluZ1xuXG4oKiBTaGFyZSB0aGUgZGlnZXN0IG9mIHRoZSBlbXB0eSBzdHJpbmcgKilcbmxldCBlbXB0eSA9IERpZ2VzdC5zdHJpbmcgXCJcIlxubGV0IG1ha2UgcyA9XG4gIGlmIHMgPSBlbXB0eSB0aGVuXG4gICAgZW1wdHlcbiAgZWxzZVxuICAgIHNcblxubGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbmxldCBsZW5ndGggPSAxNlxuXG5sZXQgdG9fYmluYXJ5IHMgPSBzXG5sZXQgb2ZfYmluYXJ5X2V4biBzID0gYXNzZXJ0IChTdHJpbmcubGVuZ3RoIHMgPSBsZW5ndGgpOyBtYWtlIHNcbmxldCB1bnNhZmVfb2ZfYmluYXJ5ID0gbWFrZVxuXG5sZXQgdG9faGV4ID0gRGlnZXN0LnRvX2hleFxubGV0IG9mX2hleF9leG4gcyA9IG1ha2UgKERpZ2VzdC5mcm9tX2hleCBzKVxuXG5sZXQgc3RyaW5nIHMgPSBtYWtlIChEaWdlc3Quc3RyaW5nIHMpXG5cbmxldCBieXRlcyBzID0gbWFrZSAoRGlnZXN0LmJ5dGVzIHMpXG5cbmxldCBzdWJieXRlcyBieXRlcyB+cG9zIH5sZW4gPSBtYWtlIChEaWdlc3Quc3ViYnl0ZXMgYnl0ZXMgcG9zIGxlbilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExvY2F0aW9uIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVdWlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbmxldCBldmFsX2ZhaWwgbG9jIGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT4gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmICFcIiV7TG9jYXRpb259OiAlc1wiIGxvYyBzKSkgZm10XG47O1xuXG5sZXQgZXF1YWxfb3B0aW9uIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFNvbWUgXywgTm9uZSB8IE5vbmUsIFNvbWUgXyAtPiBmYWxzZVxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuOztcblxubW9kdWxlIFNvcnRlZF90YWJsZSA6IHNpZ1xuICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgY3JlYXRlIDogTG9jYXRpb24udCAtPiBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0IC0+ICdhIHRcbiAgdmFsIGV4cG9zZSA6ICdhIHQgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0geyBzb3J0ZWQgOiAoc3RyaW5nICogJ2EpIGxpc3QgfSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBtZXJnZV9jaGVja19hZGphY2VudF9kdXBzXG4gICAgOiAgZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+IChzdHJpbmcgKiAnYSkgbGlzdFxuICAgICAgLT4gWyBgT2sgb2YgKHN0cmluZyAqICdhKSBsaXN0IHwgYE1pc21hdGNoIG9mIHN0cmluZyBdXG4gICAgPVxuICAgIGZ1biB+ZXEgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGBPayAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT5cbiAgICAgICAgaWYgU3RyaW5nLihsYXN0X2tleSA9IGtleSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIGVxIGxhc3RfdmFsdWUgdmFsdWUgdGhlbiBsb29wIGFjYyB+bGFzdF9rZXkgfmxhc3RfdmFsdWUgeHMgZWxzZSBgTWlzbWF0Y2gga2V5XG4gICAgICAgIGVsc2UgbG9vcCAoKGtleSwgdmFsdWUpIDo6IGFjYykgfmxhc3Rfa2V5OmtleSB+bGFzdF92YWx1ZTp2YWx1ZSB4c1xuICAgIGluXG4gICAgZnVuY3Rpb25cbiAgICB8IFtdIC0+IGBPayBbXVxuICAgIHwgKGtleSwgdmFsdWUpIDo6IHhzIC0+IGxvb3AgWyBrZXksIHZhbHVlIF0gfmxhc3Rfa2V5OmtleSB+bGFzdF92YWx1ZTp2YWx1ZSB4c1xuICA7O1xuXG4gIGxldCBjcmVhdGUgbG9jIH5lcSB4cyA9XG4gICAgbGV0IHNvcnRlZCA9IExpc3Quc29ydCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgeHMgaW5cbiAgICBtYXRjaCBtZXJnZV9jaGVja19hZGphY2VudF9kdXBzIH5lcSBzb3J0ZWQgd2l0aFxuICAgIHwgYE9rIHNvcnRlZCAtPiB7IHNvcnRlZCB9XG4gICAgfCBgTWlzbWF0Y2ggcyAtPlxuICAgICAgZXZhbF9mYWlsIGxvYyBcIkRpZmZlcmVudCBzaGFwZXMgZm9yIGR1cGxpY2F0ZWQgcG9seW1vcnBoaWMgY29uc3RydWN0b3I6IGAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgZXhwb3NlIHQgPSB0LnNvcnRlZFxuICBsZXQgbWFwIHQgfmYgPSB7IHNvcnRlZCA9IExpc3QubWFwIHQuc29ydGVkIH5mOihmdW4gKGssIHYpIC0+IGssIGYgdikgfVxuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0ID0gTWQ1X2xpYi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIHRvX21kNSA6IHQgLT4gTWQ1X2xpYi50XG4gIHZhbCBvZl9tZDUgOiBNZDVfbGliLnQgLT4gdFxuICB2YWwgdG9faGV4IDogdCAtPiBzdHJpbmdcbiAgdmFsIGNvbnN0cnVjdG9yIDogc3RyaW5nIC0+IHQgbGlzdCAtPiB0XG4gIHZhbCBsaXN0IDogdCBsaXN0IC0+IHRcbiAgdmFsIHBhaXIgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgdmFsIHV1aWQgOiBVdWlkLnQgLT4gdFxuICB2YWwgaW50IDogaW50IC0+IHRcbiAgdmFsIG9wdGlvbiA6IHQgb3B0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1kNV9saWJcblxuICBsZXQgdG9fbWQ1IHQgPSB0XG4gIGxldCBvZl9tZDUgdCA9IHRcbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gc2V4cF9vZl9zdHJpbmdcbiAgbGV0IHRfb2Zfc2V4cCBzID0gcyB8PiBzdHJpbmdfb2Zfc2V4cCB8PiBvZl9oZXhfZXhuXG4gIGxldCB1dWlkIHUgPSBzdHJpbmcgKFV1aWQudG9fc3RyaW5nIHUpXG4gIGxldCBpbnQgeCA9IHN0cmluZyAoSW50LnRvX3N0cmluZyB4KVxuICBsZXQgcGFpciB4IHkgPSBzdHJpbmcgKHRvX2JpbmFyeSB4IF4gdG9fYmluYXJ5IHkpXG4gIGxldCBsaXN0IGwgPSBzdHJpbmcgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIChMaXN0Lm1hcCB+Zjp0b19iaW5hcnkgbCkpXG4gIGxldCBjb25zdHJ1Y3RvciBzIGwgPSBzdHJpbmcgKHMgXiB0b19iaW5hcnkgKGxpc3QgbCkpXG5cbiAgbGV0IG9wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IGNvbnN0cnVjdG9yIFwibm9uZVwiIFtdXG4gICAgfCBTb21lIHggLT4gY29uc3RydWN0b3IgXCJzb21lXCIgWyB4IF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvciA9IHN0cnVjdFxuICAoKiBbJ2EgdF0gaXMgYSBub24tcmVjdXJzaXZlIHR5cGUsIHVzZWQgdG8gcmVwcmVzZW50IDEtbGF5ZXIgb2YgZXhwcmVzc2lvbi4gIFRoZVxuICAgICByZWN1cnNpdmUga25vdCBpcyB0aWVkIGJlbG93IGluIFtDYW5vbmljYWxfZnVsbC5FeHAudF0uICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBbm5vdGF0ZSBvZiBVdWlkLnQgKiAnYVxuICAgIHwgQmFzZSBvZiBVdWlkLnQgKiAnYSBsaXN0XG4gICAgfCBUdXBsZSBvZiAnYSBsaXN0XG4gICAgfCBSZWNvcmQgb2YgKHN0cmluZyAqICdhKSBsaXN0XG4gICAgfCBWYXJpYW50IG9mIChzdHJpbmcgKiAnYSBsaXN0KSBsaXN0XG4gICAgKCogUG9seW1vcnBoaWMgdmFyaWFudHMgYXJlIGluc2Vuc2l0aXZlIHRvIHRoZSBvcmRlciB0aGUgY29uc3RydWN0b3JzIGFyZSBsaXN0ZWQgKilcbiAgICB8IFBvbHlfdmFyaWFudCBvZiAnYSBvcHRpb24gU29ydGVkX3RhYmxlLnRcbiAgICAoKiBMZWZ0LWhhbmQtc2lkZSBvZiBbQXBwbGljYXRpb25dIGlzIGEgcG90ZW50aWFsbHkgcmVjdXJzaXZlIGRlZmluaXRpb246IGl0XG4gICAgICAgY2FuIHJlZmVyIHRvIGl0c2VsZiB1c2luZyBbUmVjX2FwcCAoaSwgXyldIHdoZXJlIFtpXSBpcyB0aGUgZGVwdGggb2YgdGhpc1xuICAgICAgIGFwcGxpY2F0aW9uIG5vZGUgKGhvdyBtYW55IGFwcGxpY2F0aW9uIG5vZGVzIGFyZSBhYm92ZSBpdCkuXG4gICAgICAgSXQgYWxzbyBoYXMgaXRzIG93biBzY29wZSBvZiB0eXBlIHZhcmlhYmxlcyBzbyBpdCBjYW4gbm90IHJlZmVyIHRvIHR5cGUgdmFyaWFibGVzXG4gICAgICAgb2YgdGhlIGVuY2xvc2luZyBzY29wZS5cbiAgICAqKVxuICAgIHwgQXBwbGljYXRpb24gb2YgJ2EgKiAnYSBsaXN0XG4gICAgfCBSZWNfYXBwIG9mIGludCAqICdhIGxpc3RcbiAgICB8IFZhciBvZiBpbnRcbiAgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZV1cblxuICBsZXQgbWFwIHggfmYgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQW5ub3RhdGUgKHUsIHgpIC0+IEFubm90YXRlICh1LCBmIHgpXG4gICAgfCBCYXNlIChzLCB4cykgLT4gQmFzZSAocywgTGlzdC5tYXAgfmYgeHMpXG4gICAgfCBUdXBsZSB4cyAtPiBUdXBsZSAoTGlzdC5tYXAgfmYgeHMpXG4gICAgfCBSZWNvcmQgbCAtPiBSZWNvcmQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeCkgLT4gcywgZiB4KSlcbiAgICB8IFZhcmlhbnQgbCAtPiBWYXJpYW50IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHhzKSAtPiBzLCBMaXN0Lm1hcCB+ZiB4cykpXG4gICAgfCBQb2x5X3ZhcmlhbnQgdCAtPiBQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5tYXAgdCB+ZjooT3B0aW9uLm1hcCB+ZikpXG4gICAgfCBBcHBsaWNhdGlvbiAoeCwgbCkgLT4gQXBwbGljYXRpb24gKGYgeCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFJlY19hcHAgKHQsIGwpIC0+IFJlY19hcHAgKHQsIExpc3QubWFwIH5mIGwpXG4gICAgfCBWYXIgdiAtPiBWYXIgdlxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IFNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biBfIC0+IEF0b20gXCIuLi5cIikgdClcbmVuZFxuXG5tb2R1bGUgQ3JlYXRlX2RpZ2VzdCA6IHNpZ1xuICAoKiBEaWdlc3QgdmFyaW91cyBleHByZXNzaW9uIGZvcm1zICopXG5cbiAgdmFsIGRpZ2VzdF9sYXllciA6IERpZ2VzdC50IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCAtPiBEaWdlc3QudFxuZW5kID0gc3RydWN0XG4gIGxldCBkaWdlc3RfbGF5ZXIgPSBmdW5jdGlvblxuICAgIHwgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Bbm5vdGF0ZSAodSwgeCkgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvciBcImFubm90YXRlXCIgWyBEaWdlc3QudXVpZCB1OyB4IF1cbiAgICB8IEJhc2UgKHUsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImJhc2VcIiBbIERpZ2VzdC51dWlkIHU7IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgVHVwbGUgbCAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ0dXBsZVwiIFsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBSZWNvcmQgbCAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yXG4gICAgICAgIFwicmVjb3JkXCJcbiAgICAgICAgWyBEaWdlc3QubGlzdCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB0KSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSB0KSkgXVxuICAgIHwgVmFyaWFudCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJ2YXJpYW50XCJcbiAgICAgICAgWyBEaWdlc3QubGlzdFxuICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biAocywgbCkgLT4gRGlnZXN0LnBhaXIgKERpZ2VzdC5zdHJpbmcgcykgKERpZ2VzdC5saXN0IGwpKSlcbiAgICAgICAgXVxuICAgIHwgUG9seV92YXJpYW50IHRhYmxlIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJwb2x5X3ZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgKFNvcnRlZF90YWJsZS5leHBvc2UgdGFibGUpIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgICAgICAgICAgICBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyB4KSAoRGlnZXN0Lm9wdGlvbiB5KSkpXG4gICAgICAgIF1cbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJhcHBsaWNhdGlvblwiIFsgeDsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBSZWNfYXBwIChuLCBsKSAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJyZWNfYXBwXCIgWyBEaWdlc3QuaW50IG47IERpZ2VzdC5saXN0IGwgXVxuICAgIHwgVmFyIG4gLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwidmFyXCIgWyBEaWdlc3QuaW50IG4gXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWaXNpYmlsaXR5ID0gc3RydWN0XG4gIHR5cGUgdmlzaWJsZSA9IFZpc2libGVcbiAgdHlwZSBvcGFxdWUgPSBPcGFxdWVcblxuICBsZXQgXyA9IFZpc2libGVcbiAgbGV0IF8gPSBPcGFxdWVcbmVuZFxuXG5tb2R1bGUgdHlwZSBDYW5vbmljYWwgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2RpZ2VzdCA6IHQgLT4gRGlnZXN0LnRcblxuICBtb2R1bGUgRXhwMSA6IHNpZ1xuICAgIHR5cGUgXyB0XG5cbiAgICB2YWwgdmFyIDogaW50IC0+IF8gdFxuICAgIHZhbCByZWN1cnNlIDogaW50IC0+IF8gdCBsaXN0IC0+IF8gdFxuICAgIHZhbCBhcHBseSA6ICdhIHQgLT4gJ2EgdCBsaXN0IC0+IF8gdFxuICAgIHZhbCBvcGFxdWUgOiBfIHQgLT4gVmlzaWJpbGl0eS5vcGFxdWUgdFxuXG4gICAgdmFsIGdldF9wb2x5X3ZhcmlhbnRcbiAgICAgIDogIFZpc2liaWxpdHkudmlzaWJsZSB0XG4gICAgICAtPiAoVmlzaWJpbGl0eS5vcGFxdWUgdCBvcHRpb24gU29ydGVkX3RhYmxlLnQsIHN0cmluZykgUmVzdWx0LnRcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA6IHNpZ1xuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5cbiAgbW9kdWxlIENyZWF0ZSA6IHNpZ1xuICAgIHZhbCBhbm5vdGF0ZSA6IFV1aWQudCAtPiBfIEV4cDEudCAtPiBfIEV4cDEudFxuICAgIHZhbCBiYXNldHlwZSA6IFV1aWQudCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHR1cGxlIDogXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBwb2x5X3ZhcmlhbnQgOiBMb2NhdGlvbi50IC0+IChzdHJpbmcgKiBfIEV4cDEudCBvcHRpb24pIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdmFyIDogaW50IC0+IF8gRXhwMS50XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBhcHBseSA6ICdhIEV4cDEudCAtPiAnYSBFeHAxLnQgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBkZWZpbmUgOiBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50IC0+IERlZi50XG4gICAgdmFsIHJlY29yZCA6IChzdHJpbmcgKiBfIEV4cDEudCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXJpYW50IDogKHN0cmluZyAqIF8gRXhwMS50IGxpc3QpIGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgY3JlYXRlIDogXyBFeHAxLnQgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2RpZ2VzdCA6IENhbm9uaWNhbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBDYW5vbmljYWwgb2YgRGlnZXN0LnRcblxuICBsZXQgdG9fZGlnZXN0IChDYW5vbmljYWwgeCkgPSB4XG5cbiAgbW9kdWxlIENEID0gQ3JlYXRlX2RpZ2VzdFxuXG4gIG1vZHVsZSBFeHAxID0gc3RydWN0XG4gICAgdHlwZSBvcGFxdWUgPSBEaWdlc3QudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgUG9seV92YXJpYW50IG9mIG9wYXF1ZSBvcHRpb24gU29ydGVkX3RhYmxlLnRcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCBvZiAoc3RyaW5nICogb3BhcXVlKVxuICAgICAgfCBPcGFxdWUgOiBvcGFxdWUgLT4gVmlzaWJpbGl0eS5vcGFxdWUgdFxuXG4gICAgbGV0IHRvX2RpZ2VzdCAodHlwZSBhKSAoeCA6IGEgdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE9wYXF1ZSB4IC0+IHhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoXywgeCkgLT4geFxuICAgICAgfCBQb2x5X3ZhcmlhbnQgeCAtPiBDRC5kaWdlc3RfbGF5ZXIgKFBvbHlfdmFyaWFudCB4KVxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgKHR5cGUgYSkgKHggOiBhIHQpICh5IDogYSB0KSA9XG4gICAgICBEaWdlc3QuY29tcGFyZSAodG9fZGlnZXN0IHgpICh0b19kaWdlc3QgeSkgPSAwXG4gICAgOztcblxuICAgIGxldCBvcGFxdWUgeCA9IE9wYXF1ZSAodG9fZGlnZXN0IHgpXG5cbiAgICBsZXQgY3JlYXRlIHggPVxuICAgICAgbGV0IHggPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLm1hcCB+Zjp0b19kaWdlc3QgeCBpblxuICAgICAgbGV0IGRlc2MgPSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLnRvX3N0cmluZyB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5Qb2x5X3ZhcmlhbnQgbCAtPiBQb2x5X3ZhcmlhbnQgbFxuICAgICAgfCBCYXNlIF8gLT4gTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFubm90YXRlIF8gLT5cbiAgICAgICAgKCogSXQncyB1bnNhZmUgdG8gdXNlIGRlcml2aW5nIGJpbl9pbyB3aGVuIGluaGVyaXRpbmcgZnJvbSBhIHBvbHltb3JwaGljIHZhcmlhbnRcbiAgICAgICAgICAgdGhhdCBoYXMgYSBjdXN0b20gYmluX2lvLiAgSWYgd2UgZm9yYmlkIHRoYXQsIHdlIGNhbiBoYXBwaWx5IHJlamVjdCBoZXJlXG4gICAgICAgICAgIGFueXRoaW5nIHRoYXQncyBhbm5vdGF0ZWQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBBcHBsaWNhdGlvbiBfIC0+XG4gICAgICAgICgqIEFwcGxpY2F0aW9uIGNhbiByZWFsbHkgYmUgYSBwb2x5LXZhcmlhbnQgeW91IGNhbiBpbmhlcml0IGZyb20hICBCdXQgaXQncyBhXG4gICAgICAgICAgIHJhcmUgc2l0dWF0aW9uIHRoYXQgbW9zdGx5IChvbmx5PykgYXJpc2VzIHdpdGggaW5oZXJpdGFuY2UgZnJvbSByZWN1cnNpdmVcbiAgICAgICAgICAgcG9seW1vcnBpYyB2YXJpYW50cywgd2hpY2ggd2UndmUgbm90IHNlZW4gYW55d2hlcmUgeWV0LiAgU28gd2UgcmVqZWN0IGl0LiAqKVxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgUmVjX2FwcCBfIC0+XG4gICAgICAgICgqIFlvdSBjYW4gb25seSBnZXQgdGhlIFtSZWNfYXBwXSBjb25zdHJ1Y3RvciBmb3IgdHlwZS1yZWZlcmVuY2VzIHdpdGhpbiB0aGVcbiAgICAgICAgICAgbXV0dWFsIGdyb3VwIGJlaW5nIGRlZmluZWQuIFJlZmVyZW5jZXMgd2hpY2hcbiAgICAgICAgICAgZm9sbG93IGFmdGVyIHRoZSBjdXJyZW50IGdyb3VwIHdpbGwgYWx3YXlzIGJlIFtBcHBsaWNhdGlvbl1zLlxuXG4gICAgICAgICAgIEFuZCBzaW5jZSBvY2FtbCByZWplY3RzIHJlZmVyZW5jZXMgaW4gYGluaGVyaXRhbmNlJyBwb3NpdGlvbiB0byB0eXBlcyB3aXRoaW5cbiAgICAgICAgICAgdGhlIGN1cnJlbnQgZ3JvdXAgKHNlZSBleGFtcGxlKSB3aXRoOlxuXG4gICAgICAgICAgIEVycm9yOiBUaGUgdHlwZSBjb25zdHJ1Y3RvciB0XG4gICAgICAgICAgIGlzIG5vdCB5ZXQgY29tcGxldGVseSBkZWZpbmVkXG5cbiAgICAgICAgICAgdGhlbiBpdHMgb2sgdG8gc2F5IHRoYXQgYSByZWMtYXBwIGlzIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIGluaGVyaXRlZCBmcm9tIGFuZFxuICAgICAgICAgICByZXR1cm4gW05vbl9wb2x5X3ZhcmlhbnRdLlxuXG4gICAgICAgICAgIEFuZCB1bmxpa2UgdGhlIFtBcHBsaWNhdGlvbl0gY2FzZSwgaXQgc2hvdWxkIG5ldmVyIGJlIHBvc3NpYmxlIHRvIHNlZVxuICAgICAgICAgICBhbiBlcnJvciBtZXNzYWdlIHdpdGggdGhlIFtkZXNjXSA9IFtSZWNfYXBwXS5cblxuICAgICAgICAgICBFeGFtcGxlOiBbdHlwZSB0ID0gW2BhIG9mIFsgfCB0XSBdXVxuICAgICAgICAgICBIZXJlLCBbfCB0XSB3b3VsZCBiZSBhbiBleGFtcGxlIG9mIGluaGVyaXRhbmNlIGZyb20gYSBSZWNfYXBwLCB3aGljaFxuICAgICAgICAgICBpcyByZWplY3RlZCBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBWYXIgXyB8IFR1cGxlIF8gfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPlxuICAgICAgICBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICA7O1xuXG4gICAgbGV0IHZhciB4ID0gY3JlYXRlIChWYXIgeClcbiAgICBsZXQgYXBwbHkgZGVmIGwgPSBjcmVhdGUgKEFwcGxpY2F0aW9uIChkZWYsIGwpKVxuICAgIGxldCByZWN1cnNlIHRpZCBsID0gY3JlYXRlIChSZWNfYXBwICh0aWQsIGwpKVxuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgKHggOiBWaXNpYmlsaXR5LnZpc2libGUgdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIF8pIC0+IEVycm9yIGRlc2NcbiAgICAgIHwgUG9seV92YXJpYW50IGwgLT4gT2sgKFNvcnRlZF90YWJsZS5tYXAgfmY6KE9wdGlvbi5tYXAgfmY6KGZ1biB4IC0+IE9wYXF1ZSB4KSkgbClcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGVmID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlID0gc3RydWN0XG4gICAgbGV0IGFubm90YXRlIHUgeCA9IEV4cDEuY3JlYXRlIChBbm5vdGF0ZSAodSwgeCkpXG4gICAgbGV0IGJhc2V0eXBlIHUgbCA9IEV4cDEuY3JlYXRlIChCYXNlICh1LCBsKSlcbiAgICBsZXQgdHVwbGUgbCA9IEV4cDEuY3JlYXRlIChUdXBsZSBsKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgbCA9XG4gICAgICBFeHAxLmNyZWF0ZSAoUG9seV92YXJpYW50IChTb3J0ZWRfdGFibGUuY3JlYXRlIGxvYyB+ZXE6KGVxdWFsX29wdGlvbiBFeHAxLmVxdWFsKSBsKSlcbiAgICA7O1xuXG4gICAgbGV0IHZhciB4ID0gRXhwMS5jcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSB4IGwgPSBFeHAxLmNyZWF0ZSAoQXBwbGljYXRpb24gKHgsIGwpKVxuICAgIGxldCByZWN1cnNlIHQgbCA9IEV4cDEuY3JlYXRlIChSZWNfYXBwICh0LCBsKSlcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCBsID0gRXhwMS5jcmVhdGUgKFJlY29yZCBsKVxuICAgIGxldCB2YXJpYW50IGwgPSBFeHAxLmNyZWF0ZSAoVmFyaWFudCBsKVxuICAgIGxldCBjcmVhdGUgZSA9IENhbm9uaWNhbCAoRXhwMS50b19kaWdlc3QgZSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhbm9uaWNhbF9mdWxsID0gc3RydWN0XG4gIG1vZHVsZSBDRCA9IENyZWF0ZV9kaWdlc3RcblxuICBtb2R1bGUgRXhwMSA9IHN0cnVjdFxuICAgIHR5cGUgdDAgPSBFeHAgb2YgdDAgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgZXF1YWxfdDAgeCB5ID0gY29tcGFyZV90MCB4IHkgPSAwXG5cbiAgICB0eXBlICdhIHQgPSB0MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IHZhciB4ID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlZhciB4KVxuICAgIGxldCBhcHBseSBkIHhzID0gRXhwIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFwcGxpY2F0aW9uIChkLCB4cykpXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5SZWNfYXBwIChyLCB4cykpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9XG4gICAgICBFeHBcbiAgICAgICAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUG9seV92YXJpYW50XG4gICAgICAgICAgIChTb3J0ZWRfdGFibGUuY3JlYXRlIGxvYyB+ZXE6KGVxdWFsX29wdGlvbiBlcXVhbF90MCkgeHMpKVxuICAgIDs7XG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCAoUG9seV92YXJpYW50IHRhYikgLT4gT2sgdGFiXG4gICAgICB8IEV4cCBjYyAtPiBFcnJvciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50b19zdHJpbmcgY2MpXG4gICAgOztcblxuICAgIGxldCBvcGFxdWUgdCA9IHRcblxuICAgIGxldCByZWMgdG9fZGlnZXN0ID0gZnVuY3Rpb25cbiAgICAgIHwgRXhwIGUgLT4gQ0QuZGlnZXN0X2xheWVyIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLm1hcCB+Zjp0b19kaWdlc3QgZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGVmID0gc3RydWN0XG4gICAgKCogQSBbRGVmLnRdIGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggbWF5IGJlIGFwcGxpZWQgKilcbiAgICB0eXBlIHQgPSBFeHAxLnQwIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gICgqIEEgY2Fub25pY2FsIHNoYXBlIFt0XSBpcyBhbiBbRXhwMS50XS4gKilcbiAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCB0b19kaWdlc3QgZSA9IEV4cDEudG9fZGlnZXN0IGVcblxuICBtb2R1bGUgQ3JlYXRlID0gc3RydWN0XG4gICAgbGV0IGFubm90YXRlIHUgeCA9IEV4cDEuRXhwIChBbm5vdGF0ZSAodSwgeCkpXG4gICAgbGV0IGJhc2V0eXBlIHUgeHMgPSBFeHAxLkV4cCAoQmFzZSAodSwgeHMpKVxuICAgIGxldCB0dXBsZSB4cyA9IEV4cDEuRXhwIChUdXBsZSB4cylcbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9IEV4cDEucG9seV92YXJpYW50IGxvYyB4c1xuICAgIGxldCB2YXIgbiA9IEV4cDEuRXhwIChWYXIgbilcbiAgICBsZXQgcmVjdXJzZSByIHhzID0gRXhwMS5yZWN1cnNlIHIgeHNcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cDEuYXBwbHkgZCB4c1xuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIHhzID0gRXhwMS5FeHAgKFJlY29yZCB4cylcbiAgICBsZXQgdmFyaWFudCB4cyA9IEV4cDEuRXhwIChWYXJpYW50IHhzKVxuICAgIGxldCBjcmVhdGUgZXhwID0gZXhwXG4gIGVuZFxuXG4gIGxldCB0b19zdHJpbmdfaHVtIHQgPSBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfdCB0KVxuZW5kXG5cbm1vZHVsZSBUaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFZpZCA6IHNpZ1xuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcbmVuZFxuXG5tb2R1bGUgR2lkIDogc2lnXG4gICgqIHVuaXF1ZSBncm91cC1pZCwgdXNlZCBhcyBrZXkgZm9yIFRlbnYgYmVsb3cgKilcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBdXG5cbiAgbGV0IHIgPSByZWYgMFxuXG4gIGxldCBjcmVhdGUgKCkgPVxuICAgIGxldCB1ID0gIXIgaW5cbiAgICByIDo9IDEgKyB1O1xuICAgIHVcbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwcmVzc2lvbiA9IHN0cnVjdFxuICB0eXBlICd0IHBvbHlfY29uc3RyID1cbiAgICBbIGBDb25zdHIgb2Ygc3RyaW5nICogJ3Qgb3B0aW9uXG4gICAgfCBgSW5oZXJpdCBvZiBMb2NhdGlvbi50ICogJ3RcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIG1vZHVsZSBHcm91cCA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF1cblxuICAgIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IChUaWQudCAqIFZpZC50IGxpc3QgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGlkIDogJ2EgdCAtPiBHaWQudFxuICAgIHZhbCBsb29rdXAgOiAnYSB0IC0+IFRpZC50IC0+IFZpZC50IGxpc3QgKiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBnaWQgOiBHaWQudFxuICAgICAgOyBsb2MgOiBMb2NhdGlvbi50XG4gICAgICA7IG1lbWJlcnMgOiAoVGlkLnQgKiAoVmlkLnQgbGlzdCAqICdhKSkgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gICAgbGV0IGNyZWF0ZSBsb2MgdHJpcHMgPVxuICAgICAgbGV0IGdpZCA9IEdpZC5jcmVhdGUgKCkgaW5cbiAgICAgIGxldCBtZW1iZXJzID0gTGlzdC5tYXAgdHJpcHMgfmY6KGZ1biAoeCwgdnMsIHQpIC0+IHgsICh2cywgdCkpIGluXG4gICAgICB7IGdpZDsgbG9jOyBtZW1iZXJzIH1cbiAgICA7O1xuXG4gICAgbGV0IGlkIGcgPSBnLmdpZFxuXG4gICAgbGV0IGxvb2t1cCBnIHRpZCA9XG4gICAgICBtYXRjaCBMaXN0LkFzc29jLmZpbmQgZy5tZW1iZXJzIH5lcXVhbDpUaWQuKCA9ICkgdGlkIHdpdGhcbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgZXZhbF9mYWlsXG4gICAgICAgICAgZy5sb2NcbiAgICAgICAgICAhXCJpbXBvc3NpYmxlOiBsb29rdXBfZ3JvdXAsIHVuYm91bmQgdHlwZS1pZGVudGlmaWVyOiAle1RpZH1cIlxuICAgICAgICAgIHRpZFxuICAgICAgICAgICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBBbm5vdGF0ZSBvZiBVdWlkLnQgKiB0XG4gICAgICAgIHwgQmFzZSBvZiBVdWlkLnQgKiB0IGxpc3RcbiAgICAgICAgfCBSZWNvcmQgb2YgKHN0cmluZyAqIHQpIGxpc3RcbiAgICAgICAgfCBWYXJpYW50IG9mIChzdHJpbmcgKiB0IGxpc3QpIGxpc3RcbiAgICAgICAgfCBUdXBsZSBvZiB0IGxpc3RcbiAgICAgICAgfCBQb2x5X3ZhcmlhbnQgb2YgKExvY2F0aW9uLnQgKiB0IHBvbHlfY29uc3RyIGxpc3QpXG4gICAgICAgIHwgVmFyIG9mIChMb2NhdGlvbi50ICogVmlkLnQpXG4gICAgICAgIHwgUmVjX2FwcCBvZiBUaWQudCAqIHQgbGlzdFxuICAgICAgICB8IFRvcF9hcHAgb2YgdCBHcm91cC50ICogVGlkLnQgKiB0IGxpc3RcbiAgICAgIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwLCB2YXJpYW50c11cbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICB0eXBlIGdyb3VwID0gdCBHcm91cC50XG5cbiAgbGV0IGdyb3VwID0gR3JvdXAuY3JlYXRlXG5cbiAgdHlwZSBwb2x5X3ZhcmlhbnRfcm93ID0gdCBwb2x5X2NvbnN0clxuXG4gIGxldCBjb25zdHIgcyB0ID0gYENvbnN0ciAocywgdClcbiAgbGV0IGluaGVyaXRfIGxvYyB0ID0gYEluaGVyaXQgKGxvYywgdClcbiAgbGV0IHZhciBsb2MgdCA9IFZhciAobG9jLCB0KVxuICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9IFBvbHlfdmFyaWFudCAobG9jLCB4cylcbiAgbGV0IGJhc2V0eXBlID0gYmFzZVxuXG4gICgqIFwiVlJcIiBzdGFuZHMgZm9yIFwidmFyaWFudCBvciByZWNvcmRcIiAqKVxuXG4gIGxldCBpc19jeWNsaWNfMCB+KHZpYV9WUiA6IGJvb2wpIDogZ3JvdXAgLT4gVGlkLnQgLT4gYm9vbCA9XG4gICAgZnVuIGdyb3VwIHRpZCAtPlxuICAgIGxldCBzZXQgPSByZWYgW10gaW5cbiAgICBsZXQgdmlzaXRlZCB0aWQgPSBMaXN0Lm1lbSAhc2V0IHRpZCB+ZXF1YWw6VGlkLmVxdWFsIGluXG4gICAgbGV0IGFkZCB0aWQgPSBzZXQgOj0gdGlkIDo6ICFzZXQgaW5cbiAgICBsZXQgcmVjIHRyYXYgPSBmdW5jdGlvblxuICAgICAgKCogV2UgbG9vayBmb3IgY3ljbGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHN0cnVjdHVyZSBvZiB0eXBlLWV4cHJlc3Npb25zICopXG4gICAgICB8IEFubm90YXRlIChfLCB0KSAtPiB0cmF2IHRcbiAgICAgIHwgQmFzZSAoXywgdHMpIHwgVHVwbGUgdHMgfCBUb3BfYXBwIChfLCBfLCB0cykgLT4gTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICAgICgqIC4uaW5jbHVkaW5nIHBvbHktdmFyaWFudHMgKilcbiAgICAgIHwgUG9seV92YXJpYW50IChfLCBjcykgLT5cbiAgICAgICAgTGlzdC5pdGVyIGNzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgYENvbnN0ciAoXywgTm9uZSkgLT4gKClcbiAgICAgICAgICB8IGBDb25zdHIgKF8sIFNvbWUgdCkgLT4gdHJhdiB0XG4gICAgICAgICAgfCBgSW5oZXJpdCAoX2xvYywgdCkgLT4gdHJhdiB0KVxuICAgICAgKCogLi4gYW5kIHJlY29yZHMgJiAobm9ybWFsKSB2YXJpYW50cyAqKVxuICAgICAgfCBSZWNvcmQgeHMgLT4gaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHQpIC0+IHRyYXYgdCkgZWxzZSAoKVxuICAgICAgfCBWYXJpYW50IHhzIC0+XG4gICAgICAgIGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0cykgLT4gTGlzdC5pdGVyIH5mOnRyYXYgdHMpIGVsc2UgKClcbiAgICAgICgqIFdlIGRvbnQgZm9sbG93IHR5cGUtdmFycyAqKVxuICAgICAgfCBWYXIgXyAtPiAoKVxuICAgICAgKCogdHJhdmVyc2UgKHJlY3Vyc2l2ZSkgdHlwZS1hcHBzIHdoZW4gZmlyc3QgZW5jb3VudGVyZWQgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCB0cykgLT5cbiAgICAgICAgaWYgdmlzaXRlZCB0aWRcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhZGQgdGlkO1xuICAgICAgICAgIHRyYXZfdGlkIHRpZCk7XG4gICAgICAgIExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgYW5kIHRyYXZfdGlkIHRpZCA9XG4gICAgICBsZXQgXywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIHRyYXYgYm9keVxuICAgIGluXG4gICAgdHJhdl90aWQgdGlkO1xuICAgIGxldCByZXMgPSB2aXNpdGVkIHRpZCBpblxuICAgICgqbGV0IF9zcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTGlzdC5tYXAgKCFzZXQpIH5mOihzcHJpbnRmICFcIiV7VGlkfVwiKSkgaW4qKVxuICAgICgqUHJpbnRmLnByaW50ZiAhXCJpc19jeWxpYzogJXtUaWR9IC0tPiAoJXMpICViICAtLSAlcyUhXCIgdGlkIF9zcyByZXMgKEdyb3VwLmxvYyBncm91cCk7KilcbiAgICByZXNcbiAgOztcblxuICBsZXQgaXNfY3ljbGljID0gaXNfY3ljbGljXzAgfnZpYV9WUjp0cnVlXG4gIGxldCBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiA9IGlzX2N5Y2xpY18wIH52aWFfVlI6ZmFsc2VcbmVuZFxuXG5pbmNsdWRlIEV4cHJlc3Npb25cblxubW9kdWxlIEV2YWx1YXRpb24gKENhbm9uaWNhbCA6IENhbm9uaWNhbCkgPSBzdHJ1Y3RcbiAgKCogW1ZlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLXZhcnMgKilcbiAgbW9kdWxlIFZlbnYgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBsb29rdXAgOiB0IC0+IFZpZC50IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvblxuICAgIHZhbCBjcmVhdGUgOiAoVmlkLnQgKiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCkgbGlzdCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IE1hcC5NKFZpZCkudFxuXG4gICAgbGV0IGNyZWF0ZSA9XG4gICAgICBMaXN0LmZvbGRcbiAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFZpZCkpXG4gICAgICAgIH5mOihmdW4gdCAoaywgdikgLT4gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwIHQgayA9IE1hcC5maW5kIHQga1xuICBlbmRcblxuICBtb2R1bGUgQXBwbGljYW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUmVjdXJzaW9uX2xldmVsIG9mIGludFxuICAgICAgfCBEZWZpbml0aW9uIG9mIENhbm9uaWNhbC5EZWYudFxuICBlbmRcblxuICAoKiBbVGVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtZGVmaW5pdGlvbnMgKilcbiAgbW9kdWxlIFRlbnYgOiBzaWdcbiAgICB0eXBlIGtleSA9IEdpZC50ICogVGlkLnRcbiAgICB0eXBlIHRcblxuICAgIHZhbCBmaW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIG9wdGlvblxuICAgIHZhbCBlbXB0eSA6IHRcbiAgICB2YWwgZXh0ZW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gR2lkLnQgKiBUaWQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICB0eXBlIGtleSA9IEtleS50XG4gICAgdHlwZSB0ID0gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIE1hcC5NKEtleSkudFxuXG4gICAgbGV0IGZpbmQgdCBrID0gTWFwLmZpbmQgdCBrXG4gICAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgS2V5KVxuICAgIGxldCBleHRlbmQgdCBrIHYgPSBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHRcbiAgZW5kXG5cbiAgKCogW0RlZmluaW5nLnRdXG4gICAgIE1vbmFkIGZvciBtYW5hZ2luZyB1bi1yb2xsaW5nIGRlcHRoLCBhbmQgbWFpbnRhaW5nIGEgW1RlbnYudF0gKilcbiAgbW9kdWxlIERlZmluaW5nIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCBsb29rX2VudiA6IFRlbnYua2V5IC0+IEFwcGxpY2FuZC50IG9wdGlvbiB0XG4gICAgdmFsIGV4dGVuZF9uZXdfdGlkIDogVGVudi5rZXkgLT4gQ2Fub25pY2FsLkRlZi50IHQgLT4gQXBwbGljYW5kLnQgdFxuICAgIHZhbCBleGVjIDogJ2EgdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBkZXB0aDppbnQgLT4gVGVudi50IC0+ICdhXG5cbiAgICBsZXQgcmV0dXJuIHggfmRlcHRoOl8gX3RlbnYgPSB4XG5cbiAgICBsZXQgYmluZCB0IGYgfmRlcHRoIHRlbnYgPVxuICAgICAgbGV0IHggPSB0IH5kZXB0aCB0ZW52IGluXG4gICAgICAoZiB4KSB+ZGVwdGggdGVudlxuICAgIDs7XG5cbiAgICBsZXQgbG9va19lbnYga2V5IH5kZXB0aDpfIHRlbnYgPVxuICAgICAgbGV0IHJlc3VsdCA9IFRlbnYuZmluZCB0ZW52IGtleSBpblxuICAgICAgT3B0aW9uLm1hcCB+ZjooZnVuIChgUmVjdXJzaW9uX2xldmVsIHgpIC0+IEFwcGxpY2FuZC5SZWN1cnNpb25fbGV2ZWwgeCkgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBleHRlbmRfbmV3X3RpZCBrZXkgZGVmX3QgfmRlcHRoIHRlbnYgPVxuICAgICAgQXBwbGljYW5kLkRlZmluaXRpb25cbiAgICAgICAgKGxldCB2YWx1ZSA9IGBSZWN1cnNpb25fbGV2ZWwgZGVwdGggaW5cbiAgICAgICAgIGxldCB0ZW52ID0gVGVudi5leHRlbmQgdGVudiBrZXkgdmFsdWUgaW5cbiAgICAgICAgIGRlZl90IH5kZXB0aDooZGVwdGggKyAxKSB0ZW52KVxuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB0ID0gdCB+ZGVwdGg6MCBUZW52LmVtcHR5XG4gIGVuZFxuXG4gIHR5cGUgJ2EgZGVmaW5pbmcgPSAnYSBEZWZpbmluZy50XG5cbiAgbGV0ICggPj49ICkgPSBEZWZpbmluZy5iaW5kXG4gIGxldCByZXR1cm4gPSBEZWZpbmluZy5yZXR1cm5cblxuICBsZXQgc2VxdWVuY2VfZGVmaW5pbmcgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiIGRlZmluaW5nKSAtPiAnYiBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4geHMgfmYgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjX3lzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2NfeXMpXG4gICAgICB8IHggOjogeHMgLT4gZiB4ID4+PSBmdW4geSAtPiBsb29wICh5IDo6IGFjY195cykgeHNcbiAgICBpblxuICAgIGxvb3AgW10geHNcbiAgOztcblxuICAoKlxuICAgICBTaGFwZSBldmFsdWF0aW9uLlxuXG4gICAgIFNoYXBlcyBhcmUgZXZhbHVhdGVkIHRvIGNhbm9uaWNhbC1zaGFwZSAoZXhwcmVzc2lvbnMpLCB3aXRoIGFkZGl0aW9uYWwgZGVmcyBjb2xsZWN0ZWRcbiAgICAgaW4gdGhlIFtkZWZpbmluZ10gbW9uYWQsIHdoaWNoIGFsc28gbWFuYWdlcyBnZW5lcmF0aW9uL21hcHBpbmcgdG8gW0Nhbm9uaWNhbC5UaWQudF1cblxuICAgICBUaGVyZSBpcyBkb3dud2FyZHMgY29udGV4dCBvZiBbZ3JvdXBdIGFuZCBbVmVudi50XVxuICAgICBUaGUgKGN1cnJlbnQpIFtncm91cF0gY2hhbmdlcyB3aGVuIHRoZSBjYXNlIGZvciBbVG9wX2FwcF0gY2FsbHMgW2V2YWxfYXBwXS5cblxuICAgICBUaGUgY3VycmVudCBbVmVudi50XSBpcyBhYmFuZG9uZWQgd2hlbiBbZXZhbF9hcHBdIGlzIGNhbGxlZCwgYW5kIHRoZW4gcmUtY3JlYXRlZCBhZnRlclxuICAgICB0aGUgZGVjaXNpb24gaGFzIGJlZW4gbWFkZSB0byBlaXRoZXIgaW5saW5lIHRoZSB0eXBlLWFwcGxpY2F0aW9uLCBvciBtYWtlIGEgcmVmZXJlbmNlXG4gICAgIHRvIGEgdHlwZS1kZWZpbml0aW9uLCB3aGljaCBpcyBjcmVhdGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCAoR2lkLnQgKiBUaWQudCkuXG5cbiAgICAgV2UgbWFrZSBhIHR5cGUtZGVmaW5pdGlvbiBhbHdheXMgZm9yIFJlY29yZHMgYW5kIFZhcmlhbnRzLCBhbmQgaW4gYWRkaXRpb24gZm9yIGFueVxuICAgICBvdGhlciBjeWNsaWMgdHlwZS1kZWZpbml0aW9uLlxuICAqKVxuXG4gIGxldCByZWMgZXZhbCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgUmVjb3JkIGJpbmRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGJpbmRzIH5mOihmdW4gKHMsIHgpIC0+XG4gICAgICAgICAgZXZhbCBncm91cCB2ZW52IHggPj49IGZ1biB5IC0+IHJldHVybiAocywgeSkpXG4gICAgICAgID4+PSBmdW4gYmluZHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnJlY29yZCBiaW5kcylcbiAgICAgIHwgVmFyaWFudCBhbHRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGFsdHMgfmY6KGZ1biAocywgeHMpIC0+XG4gICAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgeHMgPj49IGZ1biB5cyAtPiByZXR1cm4gKHMsIHlzKSlcbiAgICAgICAgPj49IGZ1biBhbHRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS52YXJpYW50IGFsdHMpXG4gICAgICB8IFZhciAobG9jLCB2aWQpIC0+XG4gICAgICAgIChtYXRjaCBWZW52Lmxvb2t1cCB2ZW52IHZpZCB3aXRoXG4gICAgICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgICAgICAgfCBOb25lIC0+IGV2YWxfZmFpbCBsb2MgIVwiRnJlZSB0eXBlIHZhcmlhYmxlOiAnJXtWaWR9XCIgdmlkICgpKVxuICAgICAgfCBBbm5vdGF0ZSAocywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5hbm5vdGF0ZSBzIHYpXG4gICAgICB8IEJhc2UgKHMsIHRzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5iYXNldHlwZSBzIHZzKVxuICAgICAgfCBUdXBsZSB0cyAtPiBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS50dXBsZSB2cylcbiAgICAgIHwgVG9wX2FwcCAoaW5fZ3JvdXAsIHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJnc1xuICAgICAgICA+Pj0gZnVuIGFyZ3MgLT5cbiAgICAgICAgKCogYXJncyBldmFsdWF0ZWQgaW4gY3VycmVudCBncm91cCAqKVxuICAgICAgICBldmFsX2FwcCBpbl9ncm91cCB0aWQgYXJnc1xuICAgICAgKCogZ3JvdXAgY2hhbmdlZCBoZXJlICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJncyA+Pj0gZnVuIGFyZ3MgLT4gZXZhbF9hcHAgZ3JvdXAgdGlkIGFyZ3NcbiAgICAgIHwgUG9seV92YXJpYW50IChsb2MsIGNzKSAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyB+ZjooZXZhbF9wb2x5X2NvbnN0ciBncm91cCB2ZW52KSBjc1xuICAgICAgICA+Pj0gZnVuIHhzcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucG9seV92YXJpYW50IGxvYyAoTGlzdC5jb25jYXQgeHNzKSlcblxuICBhbmQgZXZhbF9saXN0IDogZ3JvdXAgLT4gVmVudi50IC0+IHQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdHMgLT4gc2VxdWVuY2VfZGVmaW5pbmcgdHMgfmY6KGV2YWwgZ3JvdXAgdmVudilcblxuICBhbmQgZXZhbF9wb2x5X2NvbnN0clxuICAgIDogIGdyb3VwIC0+IFZlbnYudCAtPiB0IHBvbHlfY29uc3RyXG4gICAgICAtPiAoc3RyaW5nICogVmlzaWJpbGl0eS5vcGFxdWUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb24pIGxpc3QgZGVmaW5pbmdcbiAgICA9XG4gICAgZnVuIGdyb3VwIHZlbnYgYyAtPlxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8IGBDb25zdHIgKHMsIE5vbmUpIC0+IHJldHVybiBbIHMsIE5vbmUgXVxuICAgICAgfCBgQ29uc3RyIChzLCBTb21lIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gWyBzLCBTb21lIChDYW5vbmljYWwuRXhwMS5vcGFxdWUgdikgXVxuICAgICAgfCBgSW5oZXJpdCAobG9jLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdFxuICAgICAgICA+Pj0gZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIENhbm9uaWNhbC5FeHAxLmdldF9wb2x5X3ZhcmlhbnQgdiB3aXRoXG4gICAgICAgICB8IE9rIHRhYiAtPiByZXR1cm4gKFNvcnRlZF90YWJsZS5leHBvc2UgdGFiKVxuICAgICAgICAgfCBFcnJvciBkZXNjIC0+XG4gICAgICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgIFwiVGhlIHNoYXBlIGZvciBhbiBpbmhlcml0ZWQgdHlwZSBpcyBub3QgZGVzY3JpYmVkIGFzIGEgcG9seW1vcnBoaWMtdmFyaWFudDogJXNcIlxuICAgICAgICAgICAgIGRlc2NcbiAgICAgICAgICAgICAoKSlcblxuICBhbmQgZXZhbF9kZWZpbml0aW9uIDogZ3JvdXAgLT4gVmlkLnQgbGlzdCAtPiB0IC0+IENhbm9uaWNhbC5EZWYudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIGZvcm1hbHMgYm9keSAtPlxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSAoTGlzdC5tYXBpIGZvcm1hbHMgfmY6KGZ1biBpIHggLT4geCwgQ2Fub25pY2FsLkV4cDEudmFyIGkpKSBpblxuICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5kZWZpbmUgdilcblxuICBhbmQgZXZhbF9hcHAgOiBncm91cCAtPiBUaWQudCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB0aWQgYXJncyAtPlxuICAgICAgbGV0IGdpZCA9IEdyb3VwLmlkIGdyb3VwIGluXG4gICAgICBsZXQgZm9ybWFscywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIGxldCByZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICAgIHwgVHVwbGUgXyB8IEFubm90YXRlIF8gfCBCYXNlIF8gfCBQb2x5X3ZhcmlhbnQgXyB8IFZhciBfIHwgUmVjX2FwcCBfIHwgVG9wX2FwcCBfIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgY3ljbGljID0gaXNfY3ljbGljIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IGN5Y2xpY19ub19WUiA9IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSIGdyb3VwIHRpZCBpblxuICAgICAgaWYgKHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCAmJiBjeWNsaWMpIHx8IGN5Y2xpY19ub19WUlxuICAgICAgdGhlblxuICAgICAgICBEZWZpbmluZy5sb29rX2VudiAoZ2lkLCB0aWQpXG4gICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgcmVjdXJzZSAtPiByZXR1cm4gcmVjdXJzZVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRGVmaW5pbmcuZXh0ZW5kX25ld190aWQgKGdpZCwgdGlkKSAoZXZhbF9kZWZpbml0aW9uIGdyb3VwIGZvcm1hbHMgYm9keSkpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IFJlY3Vyc2lvbl9sZXZlbCByIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEucmVjdXJzZSByIGFyZ3MpXG4gICAgICAgIHwgRGVmaW5pdGlvbiBkZWYgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5hcHBseSBkZWYgYXJncylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdmVudiA9XG4gICAgICAgICAgbWF0Y2ggTGlzdC56aXAgZm9ybWFscyBhcmdzIHdpdGhcbiAgICAgICAgICB8IE9rIHggLT4gVmVudi5jcmVhdGUgeFxuICAgICAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IGZhaWx3aXRoIFwiYXBwbHksIGluY29ycmVjdCB0eXBlIGFwcGxpY2F0aW9uIGFyaXR5XCJcbiAgICAgICAgaW5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkpXG4gIDs7XG5cbiAgKCogdG9wIGxldmVsIGVudHJ5IHBvaW50IGZvciBldmFsdWF0aW9uICopXG4gIGxldCBldmFsIDogdCAtPiBDYW5vbmljYWwudCA9XG4gICAgZnVuIHQgLT5cbiAgICAgIGxldCBncm91cCA9IGdyb3VwIChMb2NhdGlvbi5vZl9zdHJpbmcgXCJ0b3AtbGV2ZWxcIikgW10gaW5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgW10gaW5cbiAgICAgIGxldCB2ID0gRGVmaW5pbmcuZXhlYyAoZXZhbCBncm91cCB2ZW52IHQpIGluXG4gICAgICBDYW5vbmljYWwuQ3JlYXRlLmNyZWF0ZSB2XG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbCA9IHN0cnVjdFxuICBpbmNsdWRlIENhbm9uaWNhbF9mdWxsXG5cbiAgbW9kdWxlIEV4cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFdmFsdWF0aW9uIChDYW5vbmljYWxfZnVsbClcbm1vZHVsZSBDYW5vbmljYWxfc2VsZWN0ZWQgPSBDYW5vbmljYWxfZGlnZXN0XG5tb2R1bGUgRXZhbHVhdGlvbl90b19kaWdlc3QgPSBFdmFsdWF0aW9uIChDYW5vbmljYWxfc2VsZWN0ZWQpXG5cbmxldCBldmFsX3RvX2RpZ2VzdCBleHAgPSBDYW5vbmljYWxfc2VsZWN0ZWQudG9fZGlnZXN0IChFdmFsdWF0aW9uX3RvX2RpZ2VzdC5ldmFsIGV4cClcbmxldCBldmFsX3RvX2RpZ2VzdF9zdHJpbmcgZXhwID0gRGlnZXN0LnRvX2hleCAoZXZhbF90b19kaWdlc3QgZXhwKVxuXG5tb2R1bGUgRm9yX3R5cGVyZXAgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIE5vdF9hX3R1cGxlIG9mIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZGVjb25zdHJ1Y3RfdHVwbGVfZXhuIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVHVwbGUgdHMgLT4gdHNcbiAgICB8IF8gLT4gcmFpc2UgKE5vdF9hX3R1cGxlIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgU29ydGVkX3RhYmxlID0gU29ydGVkX3RhYmxlXG4gIG1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3RvclxuICBtb2R1bGUgQ2Fub25pY2FsID0gQ2Fub25pY2FsXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTk9URTpcbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmdMYWJlbHMubWxpLCBydW4gdG9vbHMvc3luY19zdGRsaWJfZG9jcyBhZnRlciBlZGl0aW5nXG4gICBpdCB0byBnZW5lcmF0ZSBzdHJpbmcubWxpLlxuXG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nLm1saSwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkgLS0gZWRpdFxuICAgc3RyaW5nTGFiZWxzLm1saSBpbnN0ZWFkLlxuICopXG5cbigqKiBTdHJpbmdzLlxuXG4gICAgQSBzdHJpbmcgW3NdIG9mIGxlbmd0aCBbbl0gaXMgYW4gaW5kZXhhYmxlIGFuZCBpbW11dGFibGUgc2VxdWVuY2VcbiAgICBvZiBbbl0gYnl0ZXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlc2UgYnl0ZXMgYXJlIHJlZmVycmVkIHRvXG4gICAgYXMgY2hhcmFjdGVycy5cblxuICAgIFRoZSBzZW1hbnRpY3Mgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICAgaW5kaWNlcyBhbmQgcG9zaXRpb25zLiBUaGVzZSBhcmUgZGVwaWN0ZWQgYW5kIGRlc2NyaWJlZFxuICAgIGFzIGZvbGxvd3MuXG5cbnt2XG5wb3NpdGlvbnMgIDAgICAxICAgMiAgIDMgICA0ICAgIG4tMSAgICBuXG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG4gIGluZGljZXMgIHwgMCB8IDEgfCAyIHwgMyB8IC4uLiB8IG4tMSB8XG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG52fVxuICAgIHt1bFxuICAgIHstIEFuIHtlIGluZGV4fSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFxcW1swXTtbbi0xXVxcXS5cbiAgICAgICBJdCByZXByZXNlbnRzIHRoZSBbaV10aCBieXRlIChjaGFyYWN0ZXIpIG9mIFtzXSB3aGljaCBjYW4gYmVcbiAgICAgICBhY2Nlc3NlZCB1c2luZyB0aGUgY29uc3RhbnQgdGltZSBzdHJpbmcgaW5kZXhpbmcgb3BlcmF0b3JcbiAgICAgICBbcy5baV1dLn1cbiAgICB7LSBBIHtlIHBvc2l0aW9ufSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICAgICAgXFxbWzBdO1tuXVxcXS4gSXQgcmVwcmVzZW50cyBlaXRoZXIgdGhlIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2ZcbiAgICAgICB0aGUgc3RyaW5nLCBvciB0aGUgcG9pbnQgYmV0d2VlbiB0d28gaW5kaWNlcywgb3IgdGhlIHBvaW50IGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGUgW2lddGggYnl0ZSBpbmRleCBpcyBiZXR3ZWVuIHBvc2l0aW9uXG4gICAgICAgW2ldIGFuZCBbaSsxXS59fVxuXG4gICAgVHdvIGludGVnZXJzIFtzdGFydF0gYW5kIFtsZW5dIGFyZSBzYWlkIHRvIGRlZmluZSBhIHtlIHZhbGlkXG4gICAgc3Vic3RyaW5nfSBvZiBbc10gaWYgW2xlbiA+PSAwXSBhbmQgW3N0YXJ0XSwgW3N0YXJ0K2xlbl0gYXJlXG4gICAgcG9zaXRpb25zIG9mIFtzXS5cblxuICAgIHtiIFVuaWNvZGUgdGV4dC59IFN0cmluZ3MgYmVpbmcgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBieXRlcywgdGhleVxuICAgIGNhbiBob2xkIGFueSBraW5kIG9mIHRleHR1YWwgZW5jb2RpbmcuIEhvd2V2ZXIgdGhlIHJlY29tbWVuZGVkXG4gICAgZW5jb2RpbmcgZm9yIHN0b3JpbmcgVW5pY29kZSB0ZXh0IGluIE9DYW1sIHN0cmluZ3MgaXMgVVRGLTguIFRoaXNcbiAgICBpcyB0aGUgZW5jb2RpbmcgdXNlZCBieSBVbmljb2RlIGVzY2FwZXMgaW4gc3RyaW5nIGxpdGVyYWxzLiBGb3JcbiAgICBleGFtcGxlIHRoZSBzdHJpbmcgW1wiXFx1ezFGNDJCfVwiXSBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlXG4gICAgVW5pY29kZSBjaGFyYWN0ZXIgVSsxRjQyQi5cblxuICAgIHtiIFBhc3QgbXV0YWJpbGl0eS59IEJlZm9yZSBPQ2FtbCA0LjAyLCBzdHJpbmdzIHVzZWQgdG8gYmUgbW9kaWZpYWJsZSBpblxuICAgIHBsYWNlIGxpa2UgeyFCeXRlcy50fSBtdXRhYmxlIHNlcXVlbmNlcyBvZiBieXRlcy5cbiAgICBPQ2FtbCA0IGhhZCB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc3VwcG9ydCB0aGVcbiAgICB0cmFuc2l0aW9uIHBlcmlvZCBmcm9tIG11dGFibGUgdG8gaW1tdXRhYmxlIHN0cmluZ3MuXG4gICAgVGhvc2Ugb3B0aW9ucyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgYW5kIHN0cmluZ3MgYXJlIG5vdyBhbHdheXNcbiAgICBpbW11dGFibGUuXG5cbiAgICBUaGUgbGFiZWxlZCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgICB7IVN0ZExhYmVsc30gbW9kdWxlLlxuKilcblxuKCoqIHsxOnN0cmluZ3MgU3RyaW5nc30gKilcblxudHlwZSB0ID0gc3RyaW5nXG4oKiogVGhlIHR5cGUgZm9yIHN0cmluZ3MuICopXG5cbnZhbCBtYWtlIDogaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4oKiogW21ha2UgbiBjXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggZWFjaCBpbmRleCBob2xkaW5nIHRoZVxuICAgIGNoYXJhY3RlciBbY10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS4gKilcblxudmFsIGluaXQgOiBpbnQgLT4gKGludCAtPiBjaGFyKSAtPiBzdHJpbmdcbigqKiBbaW5pdCBuIGZdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBpbmRleFxuICAgIFtpXSBob2xkaW5nIHRoZSBjaGFyYWN0ZXIgW2YgaV0gKGNhbGxlZCBpbiBpbmNyZWFzaW5nIGluZGV4IG9yZGVyKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LlxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbnZhbCBvZl9ieXRlcyA6IGJ5dGVzIC0+IHN0cmluZ1xuKCoqIFJldHVybiBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW4gYnl0ZVxuICAgIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBTYW1lIGFzIHshQnl0ZXMuYmxpdF9zdHJpbmd9IHdoaWNoIHNob3VsZCBiZSBwcmVmZXJyZWQuICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxuKCoqIHsxOnByZWRpY2F0ZXMgUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnN9ICopXG5cbnZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4oKiogW2VxdWFsIHMwIHMxXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3MwXSBhbmQgW3MxXSBhcmUgY2hhcmFjdGVyLXdpc2VcbiAgICBlcXVhbC5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBlbmRzX3dpdGggOlxuICBzdWZmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtlbmRzX3dpdGggXVt+c3VmZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gZW5kcyB3aXRoIFtzdWZmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWluc19mcm9tIHMgc3RhcnQgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGFmdGVyIHBvc2l0aW9uIFtzdGFydF0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RhcnRdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbcmNvbnRhaW5zX2Zyb20gcyBzdG9wIGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBiZWZvcmUgcG9zaXRpb24gW3N0b3ArMV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RvcCA8IDBdIG9yIFtzdG9wKzFdIGlzIG5vdCBhIHZhbGlkXG4gICAgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgY29udGFpbnMgOiBzdHJpbmcgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zIHMgY10gaXMgeyFTdHJpbmcuY29udGFpbnNfZnJvbX1bIHMgMCBjXS4gKilcblxuKCoqIHsxOmV4dHJhY3QgRXh0cmFjdGluZyBzdWJzdHJpbmdzfSAqKVxuXG52YWwgc3ViIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gc3RyaW5nXG4oKiogW3N1YiBzIHBvcyBsZW5dIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbGVuXSwgY29udGFpbmluZyB0aGVcbiAgICBzdWJzdHJpbmcgb2YgW3NdIHRoYXQgc3RhcnRzIGF0IHBvc2l0aW9uIFtwb3NdIGFuZCBoYXMgbGVuZ3RoXG4gICAgW2xlbl0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbcG9zXSBhbmQgW2xlbl0gZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkXG4gICAgc3Vic3RyaW5nIG9mIFtzXS4gKilcblxudmFsIHNwbGl0X29uX2NoYXIgOiBjaGFyIC0+IHN0cmluZyAtPiBzdHJpbmcgbGlzdFxuKCoqIFtzcGxpdF9vbl9jaGFyIHNlcCBzXSBpcyB0aGUgbGlzdCBvZiBhbGwgKHBvc3NpYmx5IGVtcHR5KVxuICAgIHN1YnN0cmluZ3Mgb2YgW3NdIHRoYXQgYXJlIGRlbGltaXRlZCBieSB0aGUgY2hhcmFjdGVyIFtzZXBdLlxuICAgIElmIFtzXSBpcyBlbXB0eSwgdGhlIHJlc3VsdCBpcyB0aGUgc2luZ2xldG9uIGxpc3QgW1tcIlwiXV0uXG5cbiAgICBUaGUgZnVuY3Rpb24ncyByZXN1bHQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czpcbiAgICB7dWxcbiAgICB7LSBUaGUgbGlzdCBpcyBub3QgZW1wdHkufVxuICAgIHstIENvbmNhdGVuYXRpbmcgaXRzIGVsZW1lbnRzIHVzaW5nIFtzZXBdIGFzIGEgc2VwYXJhdG9yIHJldHVybnMgYVxuICAgICAgc3RyaW5nIGVxdWFsIHRvIHRoZSBpbnB1dCAoW2NvbmNhdCAobWFrZSAxIHNlcClcbiAgICAgIChzcGxpdF9vbl9jaGFyIHNlcCBzKSA9IHNdKS59XG4gICAgey0gTm8gc3RyaW5nIGluIHRoZSByZXN1bHQgY29udGFpbnMgdGhlIFtzZXBdIGNoYXJhY3Rlci59fVxuXG4gICAgQHNpbmNlIDQuMDQgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgbWFwaSA6IChpbnQgLT4gY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcGkgZiBzXSBpcyBsaWtlIHshbWFwfSBidXQgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgaXMgYWxzb1xuICAgIHBhc3NlZCB0byBbZl0uXG5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZm9sZF9sZWZ0IDogKCdhY2MgLT4gY2hhciAtPiAnYWNjKSAtPiAnYWNjIC0+IHN0cmluZyAtPiAnYWNjXG4oKiogW2ZvbGRfbGVmdCBmIHggc10gY29tcHV0ZXMgW2YgKC4uLiAoZiAoZiB4IHMuWzBdKSBzLlsxXSkgLi4uKSBzLltuLTFdXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZm9sZF9yaWdodCA6IChjaGFyIC0+ICdhY2MgLT4gJ2FjYykgLT4gc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuKCoqIFtmb2xkX3JpZ2h0IGYgcyB4XSBjb21wdXRlcyBbZiBzLlswXSAoZiBzLlsxXSAoIC4uLiAoZiBzLltuLTFdIHgpIC4uLikpXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZm9yX2FsbCA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2Zvcl9hbGwgcCBzXSBjaGVja3MgaWYgYWxsIGNoYXJhY3RlcnMgaW4gW3NdIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgdHJpbSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdHJpbSBzXSBpcyBbc10gd2l0aG91dCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiBXaGl0ZXNwYWNlXG4gICAgY2hhcmFjdGVycyBhcmU6IFsnICddLCBbJ1xceDBDJ10gKGZvcm0gZmVlZCksIFsnXFxuJ10sIFsnXFxyJ10sIGFuZCBbJ1xcdCddLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIGVzY2FwZWQgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2VzY2FwZWQgc10gaXMgW3NdIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGVzY2FwZVxuICAgIHNlcXVlbmNlcywgZm9sbG93aW5nIHRoZSBsZXhpY2FsIGNvbnZlbnRpb25zIG9mIE9DYW1sLlxuXG4gICAgQWxsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMtQVNDSUkgcHJpbnRhYmxlIHJhbmdlIFxcWzB4MjA7MHg3RVxcXSBhcmVcbiAgICBlc2NhcGVkLCBhcyB3ZWxsIGFzIGJhY2tzbGFzaCAoMHgyRikgYW5kIGRvdWJsZS1xdW90ZSAoMHgyMikuXG5cbiAgICBUaGUgZnVuY3Rpb24geyFTY2FuZi51bmVzY2FwZWR9IGlzIGEgbGVmdCBpbnZlcnNlIG9mIFtlc2NhcGVkXSxcbiAgICBpLmUuIFtTY2FuZi51bmVzY2FwZWQgKGVzY2FwZWQgcykgPSBzXSBmb3IgYW55IHN0cmluZyBbc10gKHVubGVzc1xuICAgIFtlc2NhcGVkIHNdIGZhaWxzKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCB1cHBlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VwcGVyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgbG93ZXJjYXNlIGxldHRlcnNcbiAgICB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBsb3dlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2xvd2VyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgdXBwZXJjYXNlIGxldHRlcnMgdHJhbnNsYXRlZFxuICAgIHRvIGxvd2VyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIHVuY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdW5jYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvIGxvd2VyY2FzZSxcbiAgICB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYXZlcnNpbmcgVHJhdmVyc2luZ30gKilcblxudmFsIGl0ZXIgOiAoY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyIGYgc10gYXBwbGllcyBmdW5jdGlvbiBbZl0gaW4gdHVybiB0byBhbGwgdGhlIGNoYXJhY3RlcnMgb2YgW3NdLlxuICAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW2Ygcy5bMF07IGYgcy5bMV07IC4uLjsgZiBzLltsZW5ndGggcyAtIDFdOyAoKV0uICopXG5cbnZhbCBpdGVyaSA6IChpbnQgLT4gY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyaV0gaXMgbGlrZSB7IWl0ZXJ9LCBidXQgdGhlIGZ1bmN0aW9uIGlzIGFsc28gZ2l2ZW4gdGhlXG4gICAgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG4oKiogezE6c2VhcmNoaW5nIFNlYXJjaGluZ30gKilcblxudmFsIGluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG5cbnZhbCBpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCBpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb219WyBzIDAgY10uICopXG5cbnZhbCBpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb21fb3B0fVsgcyAwIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXggcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbX1bIHMgKGxlbmd0aCBzIC0gMSkgY10uICopXG5cbnZhbCByaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb21fb3B0fVsgcyAobGVuZ3RoIHMgLSAxKSBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbigqKiB7MSBTdHJpbmdzIGFuZCBTZXF1ZW5jZXN9ICopXG5cbnZhbCB0b19zZXEgOiB0IC0+IGNoYXIgU2VxLnRcbigqKiBbdG9fc2VxIHNdIGlzIGEgc2VxdWVuY2UgbWFkZSBvZiB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyBpblxuICAgIGluY3JlYXNpbmcgb3JkZXIuIEluIFtcInVuc2FmZS1zdHJpbmdcIl0gbW9kZSwgbW9kaWZpY2F0aW9ucyBvZiB0aGUgc3RyaW5nXG4gICAgZHVyaW5nIGl0ZXJhdGlvbiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgdG9fc2VxaSA6IHQgLT4gKGludCAqIGNoYXIpIFNlcS50XG4oKiogW3RvX3NlcWkgc10gaXMgbGlrZSB7IXRvX3NlcX0gYnV0IGFsc28gdHVwbGVzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIG9mX3NlcSA6IGNoYXIgU2VxLnQgLT4gdFxuKCoqIFtvZl9zZXEgc10gaXMgYSBzdHJpbmcgbWFkZSBvZiB0aGUgc2VxdWVuY2UncyBjaGFyYWN0ZXJzLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxuKCoqIHsxOnV0ZiBVVEYgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb25zfVxuXG4gICAgQHNpbmNlIDQuMTQgKilcblxuKCoqIHsyOnV0Zl84IFVURi04fSAqKVxuXG52YWwgZ2V0X3V0Zl84X3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzhfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi04IGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW5cbiAgICBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfOCA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfOCBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTggZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmJlIFVURi0xNkJFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmJlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2YmVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkJFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZiZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZiZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2QkUgZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmxlIFVURi0xNkxFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmxlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2bGVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkxFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZsZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZsZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2TEUgZGF0YS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQ4IGIgaV0gaXMgW2JdJ3Mgc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfdWludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIGdldF9pbnQzMl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ2NF9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxuKCoqLyoqKVxuXG4oKiBUaGUgZm9sbG93aW5nIGlzIGZvciBzeXN0ZW0gdXNlIG9ubHkuIERvIG5vdCBjYWxsIGRpcmVjdGx5LiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT5cbiAgICB1bml0ID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbiIsImluY2x1ZGUgU3RhYmxlX3dpdG5lc3NfaW50ZlxuXG4oKiBUaGUgcnVudGltZSByZXByZXNlbnRhdGlvbiBvZiBzdGFibGUgd2l0bmVzc2VzIGRvZXMgbm90IG1hdHRlci4gKilcbnR5cGUgXyB0ID0gdW5pdFxuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIGxldCBzdGFibGVfd2l0bmVzc19hcnJheSAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19ib29sID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2J5dGVzID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2NoYXIgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfZXhuID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2Zsb2F0ID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX2ludCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19pbnQzMiA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19pbnQ2NCA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19sYXp5X3QgKCkgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfbGlzdCAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19uYXRpdmVpbnQgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3Nfb3B0aW9uICgpID0gKClcbiAgbGV0IHN0YWJsZV93aXRuZXNzX3JlZiAoKSA9ICgpXG4gIGxldCBzdGFibGVfd2l0bmVzc19zdHJpbmcgPSAoKVxuICBsZXQgc3RhYmxlX3dpdG5lc3NfdW5pdCA9ICgpXG5lbmRcblxubGV0IG9mX3NlcmlhbGl6YWJsZSAoKSBfIF8gPSAoKVxuXG5tb2R1bGUgT2Zfc2VyaWFsaXphYmxlMSAoXyA6IFQxKSAoXyA6IFQxKSA9IHN0cnVjdFxuICBsZXQgb2Zfc2VyaWFsaXphYmxlIF8gXyBfICgpID0gKClcbmVuZFxuXG5tb2R1bGUgT2Zfc2VyaWFsaXphYmxlMiAoXyA6IFQyKSAoXyA6IFQyKSA9IHN0cnVjdFxuICBsZXQgb2Zfc2VyaWFsaXphYmxlIF8gXyBfICgpICgpID0gKClcbmVuZFxuXG5tb2R1bGUgT2Zfc2VyaWFsaXphYmxlMyAoXyA6IFQzKSAoXyA6IFQzKSA9IHN0cnVjdFxuICBsZXQgb2Zfc2VyaWFsaXphYmxlIF8gXyBfIF8gKCkgKCkgPSAoKVxuZW5kXG5cbmxldCBhc3NlcnRfc3RhYmxlID0gKClcbiIsIigqIENvbW1vbjogY29tbW9uIGRlZmluaXRpb25zIHVzZWQgYnkgYmluYXJ5IHByb3RvY29sIGNvbnZlcnRlcnMgKilcblxub3BlbiBCYXNlXG5vcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuXG50eXBlIHBvcyA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4oKiBFcnJvcnMgYW5kIGV4Y2VwdGlvbnMgKilcblxuZXhjZXB0aW9uIEJ1ZmZlcl9zaG9ydFxuZXhjZXB0aW9uIE5vX3ZhcmlhbnRfbWF0Y2hcblxubW9kdWxlIFJlYWRFcnJvciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTmVnX2ludDhcbiAgICB8IEludF9jb2RlXG4gICAgfCBJbnRfb3ZlcmZsb3dcbiAgICB8IE5hdDBfY29kZVxuICAgIHwgTmF0MF9vdmVyZmxvd1xuICAgIHwgSW50MzJfY29kZVxuICAgIHwgSW50NjRfY29kZVxuICAgIHwgTmF0aXZlaW50X2NvZGVcbiAgICB8IFVuaXRfY29kZVxuICAgIHwgQm9vbF9jb2RlXG4gICAgfCBPcHRpb25fY29kZVxuICAgIHwgU3RyaW5nX3Rvb19sb25nXG4gICAgfCBWYXJpYW50X3RhZ1xuICAgIHwgQXJyYXlfdG9vX2xvbmdcbiAgICB8IExpc3RfdG9vX2xvbmcgb2ZcbiAgICAgICAgeyBsZW4gOiBpbnRcbiAgICAgICAgOyBtYXhfbGVuIDogaW50XG4gICAgICAgIH1cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmdcbiAgICB8IFN1bV90YWcgb2Ygc3RyaW5nXG4gICAgfCBWYXJpYW50IG9mIHN0cmluZ1xuICAgIHwgUG9seV9yZWNfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBWYXJpYW50X3dyb25nX3R5cGUgb2Ygc3RyaW5nXG4gICAgfCBTaWxseV90eXBlIG9mIHN0cmluZ1xuICAgIHwgRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IE5lZ19pbnQ4IC0+IFwiTmVnX2ludDhcIlxuICAgIHwgSW50X2NvZGUgLT4gXCJJbnRfY29kZVwiXG4gICAgfCBJbnRfb3ZlcmZsb3cgLT4gXCJJbnRfb3ZlcmZsb3dcIlxuICAgIHwgTmF0MF9jb2RlIC0+IFwiTmF0MF9jb2RlXCJcbiAgICB8IE5hdDBfb3ZlcmZsb3cgLT4gXCJOYXQwX292ZXJmbG93XCJcbiAgICB8IEludDMyX2NvZGUgLT4gXCJJbnQzMl9jb2RlXCJcbiAgICB8IEludDY0X2NvZGUgLT4gXCJJbnQ2NF9jb2RlXCJcbiAgICB8IE5hdGl2ZWludF9jb2RlIC0+IFwiTmF0aXZlaW50X2NvZGVcIlxuICAgIHwgVW5pdF9jb2RlIC0+IFwiVW5pdF9jb2RlXCJcbiAgICB8IEJvb2xfY29kZSAtPiBcIkJvb2xfY29kZVwiXG4gICAgfCBPcHRpb25fY29kZSAtPiBcIk9wdGlvbl9jb2RlXCJcbiAgICB8IFN0cmluZ190b29fbG9uZyAtPiBcIlN0cmluZ190b29fbG9uZ1wiXG4gICAgfCBWYXJpYW50X3RhZyAtPiBcIlZhcmlhbnRfdGFnXCJcbiAgICB8IEFycmF5X3Rvb19sb25nIC0+IFwiQXJyYXlfdG9vX2xvbmdcIlxuICAgIHwgTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9IC0+IHNwcmludGYgXCJMaXN0X3Rvb19sb25nIC8gJWQgKG1heCAlZClcIiBsZW4gbWF4X2xlblxuICAgIHwgSGFzaHRibF90b29fbG9uZyAtPiBcIkhhc2h0YmxfdG9vX2xvbmdcIlxuICAgIHwgU3VtX3RhZyBsb2MgLT4gXCJTdW1fdGFnIC8gXCIgXiBsb2NcbiAgICB8IFZhcmlhbnQgbG9jIC0+IFwiVmFyaWFudCAvIFwiIF4gbG9jXG4gICAgfCBQb2x5X3JlY19ib3VuZCBsb2MgLT4gXCJQb2x5X3JlY19ib3VuZCAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50X3dyb25nX3R5cGUgbG9jIC0+IFwiVmFyaWFudF93cm9uZ190eXBlIC8gXCIgXiBsb2NcbiAgICB8IFNpbGx5X3R5cGUgbG9jIC0+IFwiU2lsbHlfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBFbXB0eV90eXBlIGxvYyAtPiBcIkVtcHR5X3R5cGUgLyBcIiBeIGxvY1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5lbmRcblxuZXhjZXB0aW9uIFJlYWRfZXJyb3Igb2YgUmVhZEVycm9yLnQgKiBwb3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmV4Y2VwdGlvbiBQb2x5X3JlY193cml0ZSBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBFbXB0eV90eXBlIG9mIHN0cmluZ1xuXG5sZXQgcmFpc2VfcmVhZF9lcnJvciBlcnIgcG9zID0gcmFpc2UgKFJlYWRfZXJyb3IgKGVyciwgcG9zKSlcblxubGV0IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lIHBvcyA9XG4gIHJhaXNlIChSZWFkX2Vycm9yIChSZWFkRXJyb3IuVmFyaWFudF93cm9uZ190eXBlIG5hbWUsIHBvcykpXG47O1xuXG5sZXQgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gbG9jID0gZmFpbHdpdGggKGxvYyBeIFwiOiBjb25jdXJyZW50IG1vZGlmaWNhdGlvblwiKVxubGV0IGFycmF5X2JvdW5kX2Vycm9yICgpID0gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCJcblxuKCogQnVmZmVycyAqKVxuXG50eXBlIHBvc19yZWYgPSBwb3MgcmVmXG50eXBlIGJ1ZiA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cbmxldCBjcmVhdGVfYnVmIG4gPSBBcnJheTEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgY19sYXlvdXQgblxubGV0IGJ1Zl9sZW4gYnVmID0gQXJyYXkxLmRpbSBidWZcbmxldCBhc3NlcnRfcG9zIHBvcyA9IGlmIHBvcyA8IDAgdGhlbiBhcnJheV9ib3VuZF9lcnJvciAoKVxubGV0IGNoZWNrX3BvcyAoYnVmIDogYnVmKSBwb3MgPSBpZiBwb3MgPj0gQXJyYXkxLmRpbSBidWYgdGhlbiByYWlzZSBCdWZmZXJfc2hvcnRcblxubGV0IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBjaGVja19wb3MgYnVmIHBvcztcbiAgcG9zXG47O1xuXG5sZXQgY2hlY2tfbmV4dCAoYnVmIDogYnVmKSBuZXh0ID0gaWYgbmV4dCA+IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBnZXRfb3B0X3BvcyB+bG9jIH52YXIgPSBmdW5jdGlvblxuICB8IFNvbWUgcG9zIC0+XG4gICAgaWYgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiQmluX3Byb3QuQ29tbW9uLiVzOiAlcyA8IDBcIiBsb2MgdmFyKTtcbiAgICBwb3NcbiAgfCBOb25lIC0+IDBcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBzcmM6YnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGRzdDpidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViXCJcblxubGV0IGJsaXRfYnVmID9zcmNfcG9zIH5zcmMgP2RzdF9wb3MgfmRzdCBsZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IEFycmF5MS5kaW0gc3JjXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyA+IHNyY19sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBkc3RcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zID4gZHN0X2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIHNyY1xuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBzcmNfcG9zICsgbGVuID4gc3JjX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gZHN0XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IGRzdF9wb3MgKyBsZW4gPiBkc3RfbGVuXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9idWYgfnNyY19wb3MgfnNyYyB+ZHN0X3BvcyB+ZHN0IH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZ19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3RyaW5nXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBieXRlc1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X3N0cmluZ19idWYgP3NyY19wb3Mgc3RyID9kc3RfcG9zIGJ1ZiB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9zdHJpbmdfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IGxlbiA8IDBcIlxuICBlbHNlIGlmIGxlbiA9IDBcbiAgdGhlbiAoXG4gICAgaWYgc3JjX3BvcyA+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgPiBidWZcIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X3N0cmluZ19idWY6IHNyY19wb3MgKyBsZW4gPiBidWZcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZ19idWYgfnNyY19wb3Mgc3RyIH5kc3RfcG9zIGJ1ZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9ieXRlc19idWYgP3NyY19wb3Mgc3RyID9kc3RfcG9zIGJ1ZiB+bGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9ieXRlc19idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBCeXRlcy5sZW5ndGggc3RyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IHN0cl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IHN0cl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnl0ZXNfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3Mgc3RyIH5kc3RfcG9zIGJ1ZiB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfc3RyaW5nXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBieXRlc1xuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2J5dGVzXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBieXRlc1xuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IGJsaXRfYnVmX2J5dGVzID9zcmNfcG9zIGJ1ZiA/ZHN0X3BvcyBzdHIgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnVmX3N0cmluZ1wiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gYnVmX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBCeXRlcy5sZW5ndGggc3RyXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgPiBzdHJfbGVuXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gYnVmX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEJ5dGVzLmxlbmd0aCBzdHJcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zl9zdHJpbmc6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9idWZfYnl0ZXMgfnNyY19wb3MgYnVmIH5kc3RfcG9zIHN0ciB+bGVuXG47O1xuXG5sZXQgYmxpdF9idWZfc3RyaW5nID0gYmxpdF9idWZfYnl0ZXNcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5sZXQgcmVjIGNvcHlfaHRibF9saXN0IGh0YmwgPSBmdW5jdGlvblxuICB8IFtdIC0+IGh0YmxcbiAgfCAoaywgdikgOjogcmVzdCAtPlxuICAgIFN0ZGxpYi5IYXNodGJsLmFkZCBodGJsIGsgdjtcbiAgICBjb3B5X2h0YmxfbGlzdCBodGJsIHJlc3Rcbjs7XG5cbigqIEJpZ2FycmF5cyAqKVxuXG50eXBlIHZlYzMyID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYzY0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IHZlYzY0XG50eXBlIG1hdDMyID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdDY0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IG1hdDY0XG5cbigqIEZsb2F0IGFycmF5cyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mbG9hdF9hcnJheV9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRfYXJyYXlcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGZsb2F0IGFycmF5XG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfZmxvYXRfYXJyYXlfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mbG9hdGFycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdGFycmF5XG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGJ1ZlxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcIlxuW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGRzdF9wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbigqKiopXG5cbmxldCAoICsgKSA9ICggKyApXG4iLCIoKiBOYXQwOiBuYXR1cmFsIG51bWJlcnMgKGluY2x1ZGluZyB6ZXJvKSAqKVxuXG50eXBlIHQgPSBpbnRcblxubGV0IG9mX2ludCBuID1cbiAgaWYgbiA8IDAgdGhlbiBmYWlsd2l0aCBcIkJpbl9wcm90Lk5hdDAub2ZfaW50OiBuIDwgMFwiO1xuICBuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfb2ZfaW50IDogaW50IC0+IHQgPSBcIiVpZGVudGl0eVwiXG4iLCIoKiBXcml0ZV9tbDogd3JpdGluZyB2YWx1ZXMgdG8gdGhlIGJpbmFyeSBwcm90b2NvbCB1c2luZyAobW9zdGx5KSBPQ2FtbC4gKilcblxuKCogTm90ZTogdGhlIGNvZGUgaXMgdGhpcyBmaWxlIGlzIGNhcmVmdWxseSB3cml0dGVuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLiBXaGVuXG4gICB0b3VjaGluZyB0aGlzIGNvZGUsIGJlIHN1cmUgdG8gcnVuIHRoZSBiZW5jaG1hcmtzIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4gKilcblxub3BlbiBCaWdhcnJheVxub3BlbiBDb21tb25cblxudHlwZSAnYSB3cml0ZXIgPSBidWYgLT4gcG9zOnBvcyAtPiAnYSAtPiBwb3NcbnR5cGUgKCdhLCAnYikgd3JpdGVyMSA9ICdhIHdyaXRlciAtPiAnYiB3cml0ZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlcjIgPSAnYSB3cml0ZXIgLT4gKCdiLCAnYykgd3JpdGVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHdyaXRlcjMgPSAnYSB3cml0ZXIgLT4gKCdiLCAnYywgJ2QpIHdyaXRlcjJcblxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ1ZiAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDggOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDE2IDogYnVmIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MzIgOiBidWYgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcbmV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBic3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBic3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGNvZGVfTkVHX0lOVDggPSAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopICdcXHhmZicgKCokKilcbmxldCBjb2RlX0lOVDE2ID0gKCokIENvZGUuY2hhciBJTlQxNiAqKSAnXFx4ZmUnICgqJCopXG5sZXQgY29kZV9JTlQzMiA9ICgqJCBDb2RlLmNoYXIgSU5UMzIgKikgJ1xceGZkJyAoKiQqKVxubGV0IGNvZGVfSU5UNjQgPSAoKiQgQ29kZS5jaGFyIElOVDY0ICopICdcXHhmYycgKCokKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN5cy5iaWdfZW5kaWFuXG5cbmxldCB1bnNhZmVfc2V0MTZiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXQxNlxuICBlbHNlIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDE2IGJ1ZiBwb3MgKGJzd2FwMTYgeClcbjs7XG5cbmxldCB1bnNhZmVfc2V0MzJiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXQzMlxuICBlbHNlIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDMyIGJ1ZiBwb3MgKGJzd2FwMzIgeClcbjs7XG5cbmxldCB1bnNhZmVfc2V0NjRiZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXQ2NFxuICBlbHNlIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDY0IGJ1ZiBwb3MgKGJzd2FwNjQgeClcbjs7XG5cbmxldCB1bnNhZmVfc2V0MTZsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDE2IGJ1ZiBwb3MgKGJzd2FwMTYgeClcbiAgZWxzZSB1bnNhZmVfc2V0MTZcbjs7XG5cbmxldCB1bnNhZmVfc2V0MzJsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDMyIGJ1ZiBwb3MgKGJzd2FwMzIgeClcbiAgZWxzZSB1bnNhZmVfc2V0MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0NjRsZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhblxuICB0aGVuIGZ1biBidWYgcG9zIHggLT4gdW5zYWZlX3NldDY0IGJ1ZiBwb3MgKGJzd2FwNjQgeClcbiAgZWxzZSB1bnNhZmVfc2V0NjRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdW5pdCBidWYgfnBvcyAoKSA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zICdcXDAwMCc7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyBiID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgKGlmIGIgdGhlbiAnXFwwMDEnIGVsc2UgJ1xcMDAwJyk7XG4gIHBvcyArIDFcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG4gPVxuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldDggYnVmIHBvcyBuO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9uZWdfaW50OCBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfTkVHX0lOVDg7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAzIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDE2O1xuICB1bnNhZmVfc2V0MTZsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgNSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQzMjtcbiAgdW5zYWZlX3NldDMybGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDkgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UNjQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9jaGFyIGJ1ZiB+cG9zIGMgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGlmIG4gPj0gMFxuICB0aGVuXG4gICAgaWYgbiA8IDB4MDAwMDAwODBcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfc21hbGxfaW50IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gICAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49IDEgbHNsIDMxXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICAgIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbiAgZWxzZSBpZiBuID49IC0weDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9uZWdfaW50OCBidWYgcG9zIG5cbiAgZWxzZSBpZiBuID49IC0weDAwMDA4MDAwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQxNiBidWYgcG9zIG5cbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgLSgxIGxzbCAzMSlcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgbmF0MCA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbiA9IChuYXQwIDogTmF0MC50IDo+IGludCkgaW5cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgZWxzZSBpZiBuIDwgMHgwMDAxMDAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMlxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pXG4gIGVsc2UgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQzMi5vZl9pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfc3RyaW5nIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IG5ld19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gbmV3X3BvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAoKiBUT0RPOiBvcHRpbWl6ZSBmb3Igc21hbGwgc3RyaW5ncyAqKVxuICB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOm5ld19wb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfYnl0ZXMgYnVmIH5wb3Mgc3RyID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIGJ5dGVzICopXG4gIHVuc2FmZV9ibGl0X2J5dGVzX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0IGJ1ZiB+cG9zIHggPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiBwb3MgKEludDY0LmJpdHNfb2ZfZmxvYXQgeCk7XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50MzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBbQGlubGluZV0gYnVmIH5wb3MgbiAtPiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQzMi50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBbQGlubGluZV0gYnVmIH5wb3MgbiAtPlxuICAgICAgaWYgbiA+PSAweDAwMDA4MDAwbCB8fCBuIDwgLTB4MDAwMDgwMDBsXG4gICAgICB0aGVuIChcbiAgICAgICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyBuKVxuICAgICAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQzMi50b19pbnQgbilcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGlmIG4gPj0gMHg4MDAwMDAwMEwgfHwgbiA8IC0weDgwMDAwMDAwTFxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgbilcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDY0LnRvX2ludCBuKVxuICBlbHNlIGlmIG4gPj0gMHgwMDAwODAwMEwgfHwgbiA8IC0weDAwMDA4MDAwTFxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDY0LnRvX2ludDMyIG4pKVxuICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKEludDY0LnRvX2ludCBuKVxuW0BAaW5saW5lXVxuOztcblxubGV0IGJpbl93cml0ZV9uYXRpdmVpbnQgYnVmIH5wb3MgbiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gICYmIChuID49ICgqIDB4ODAwMDAwMDBuICopIE5hdGl2ZWludC5zaGlmdF9sZWZ0IDFuIDMxXG4gICAgICB8fCBuIDwgKCogLTB4ODAwMDAwMDBuICopIE5hdGl2ZWludC5uZWcgKE5hdGl2ZWludC5zaGlmdF9sZWZ0IDFuIDMxKSlcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9uYXRpdmVpbnQgbikpXG4gIGVsc2UgaWYgKChub3QgYXJjaF9zaXh0eWZvdXIpICYmIG4gPj0gMHg4MDAwbikgfHwgbiA8IC0weDgwMDBuXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoTmF0aXZlaW50LnRvX2ludDMyIG4pKVxuICBlbHNlIGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgKE5hdGl2ZWludC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfcmVmIGJpbl93cml0ZV9lbCBidWYgfnBvcyByID0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zICFyXG5cbmxldCBiaW5fd3JpdGVfbGF6eSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgbHYgPVxuICBsZXQgdiA9IExhenkuZm9yY2UgbHYgaW5cbiAgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHZcbjs7XG5cbmxldCBiaW5fd3JpdGVfb3B0aW9uIGJpbl93cml0ZV9lbCBidWYgfnBvcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBiaW5fd3JpdGVfYm9vbCBidWYgfnBvcyBmYWxzZVxuICB8IFNvbWUgdiAtPlxuICAgIGxldCBuZXh0ID0gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgdHJ1ZSBpblxuICAgIGJpbl93cml0ZV9lbCBidWYgfnBvczpuZXh0IHZcbjs7XG5cbmxldCBiaW5fd3JpdGVfcGFpciBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvcyAoYSwgYikgPVxuICBsZXQgbmV4dCA9IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgaW5cbiAgYmluX3dyaXRlX2IgYnVmIH5wb3M6bmV4dCBiXG47O1xuXG5sZXQgYmluX3dyaXRlX3RyaXBsZSBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyAoYSwgYiwgYykgPVxuICBsZXQgbmV4dDEgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGxldCBuZXh0MiA9IGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQxIGIgaW5cbiAgYmluX3dyaXRlX2MgYnVmIH5wb3M6bmV4dDIgY1xuOztcblxubGV0IGJpbl93cml0ZV9saXN0ID1cbiAgbGV0IHJlYyBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvcyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBlbHNfcG9zXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IG5ld19lbHNfcG9zID0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOmVsc19wb3MgaGQgaW5cbiAgICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zOm5ld19lbHNfcG9zIHRsXG4gIGluXG4gIGZ1biBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgbHN0IC0+XG4gICAgbGV0IGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCAoTGlzdC5sZW5ndGggbHN0KSBpblxuICAgIGxldCBlbHNfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgbGVuIGluXG4gICAgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4gfmxlbmd0aCB+YmxpdCBidWYgfnBvcyBhID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBhIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGJsaXQgfnNyY19wb3M6MCBhIH5kc3RfcG9zOnBvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdGFycmF5IGJ1ZiB+cG9zIGEgPVxuICBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmxlbmd0aDpGbG9hdC5BcnJheS5sZW5ndGhcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9mbG9hdGFycmF5X2J1ZlxuICAgIGJ1ZlxuICAgIH5wb3NcbiAgICBhXG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zIGEgPVxuICBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuXG4gICAgfmxlbmd0aDpBcnJheS5sZW5ndGhcbiAgICB+YmxpdDp1bnNhZmVfYmxpdF9mbG9hdF9hcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIgPVxuICBsZXQgZWxzX3Bvc19yZWYgPSByZWYgZWxzX3BvcyBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBlbHNfcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6IWVsc19wb3NfcmVmIChBcnJheS51bnNhZmVfZ2V0IGFyIGkpXG4gIGRvbmU7XG4gICFlbHNfcG9zX3JlZlxuOztcblxubGV0IGJpbl93cml0ZV9hcnJheSAodHlwZSBhKSBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fd3JpdGVfZWwgOiBhIHdyaXRlcikgOiBmbG9hdCB3cml0ZXIpID09IGJpbl93cml0ZV9mbG9hdFxuICB0aGVuIGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyAoT2JqLm1hZ2ljIChhciA6IGEgYXJyYXkpIDogZmxvYXQgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgbGV0IHBuID0gTmF0MC51bnNhZmVfb2ZfaW50IG4gaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBuIGluXG4gICAgYmluX3dyaXRlX2FycmF5X2xvb3AgYmluX3dyaXRlX2VsIGJ1ZiB+ZWxzX3BvcyB+biBhcilcbjs7XG5cbmxldCBiaW5fd3JpdGVfaGFzaHRibCBiaW5fd3JpdGVfa2V5IGJpbl93cml0ZV92YWwgYnVmIH5wb3MgaHRibCA9XG4gIGxldCBsZW4gPSBIYXNodGJsLmxlbmd0aCBodGJsIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICBsZXQgY29sbF9odGJsIGsgdiBlbHNfcG9zID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgbGV0IG5ld19lbHNfcG9zID0gYmluX3dyaXRlX2tleSBidWYgfnBvczplbHNfcG9zIGsgaW5cbiAgICBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zOm5ld19lbHNfcG9zIHZcbiAgaW5cbiAgbGV0IHJlc19wb3MgPSBIYXNodGJsLmZvbGQgY29sbF9odGJsIGh0YmwgZWxzX3BvcyBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl93cml0ZV9oYXNodGJsXCI7XG4gIHJlc19wb3Ncbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl93cml0ZV9mbG9hdDMyX3ZlYyBidWYgfnBvcyB2ID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gdiBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA0IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX3ZlYzMyIHYpIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdDY0X3ZlYyBidWYgfnBvcyB2ID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gdiBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX3ZlYzY0IHYpIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92ZWMgPSBiaW5fd3JpdGVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl93cml0ZV9mbG9hdDMyX21hdCBidWYgfnBvcyBtID1cbiAgbGV0IGxlbjEgPSBBcnJheTIuZGltMSBtIGluXG4gIGxldCBsZW4yID0gQXJyYXkyLmRpbTIgbSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4xKSBpblxuICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgKE5hdDAudW5zYWZlX29mX2ludCBsZW4yKSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl9tYXQzMiBtKSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDggaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0NjQgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX21hdCA9IGJpbl93cml0ZV9mbG9hdDY0X21hdFxuXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyBidWYgfnBvcyBzID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gcyBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6cyB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX3ZhcmlhbnRfaW50IGJ1ZiB+cG9zIHggPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiBwb3MgKEludDMyLmxvZ29yIChJbnQzMi5zaGlmdF9sZWZ0IChJbnQzMi5vZl9pbnQgeCkgMSkgMWwpO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF84Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMTZiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF8zMmJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzY0Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnQ2NF9iaXRzIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrMTZfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrMzJfaW50MzIgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMyYmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcms2NF9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyAoSW50NjQub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX25ldHdvcms2NF9pbnQ2NCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmdfZ2V0MzIgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zdHJpbmdfZ2V0NjQgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjR1XCJcblxubGV0IGJpbl93cml0ZV9tZDUgYnVmIH5wb3MgeCA9XG4gIGxldCB4ID0gTWQ1X2xpYi50b19iaW5hcnkgeCBpblxuICBhc3NlcnQgKFN0cmluZy5sZW5ndGggeCA9IDE2KTtcbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQ2NCB4IDggaW5cbiAgICB1bnNhZmVfc2V0NjQgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQ2NCBidWYgKHBvcyArIDgpIGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDAgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA0IGluXG4gICAgbGV0IGMgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggOCBpblxuICAgIGxldCBkID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDEyIGluXG4gICAgdW5zYWZlX3NldDMyIGJ1ZiBwb3MgYTtcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyA0KSBiO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDgpIGM7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgMTIpIGQpO1xuICBuZXh0XG47O1xuIiwiKCogUmVhZF9tbDogcmVhZGluZyB2YWx1ZXMgZnJvbSB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHJlYWRlciA9IGJ1ZiAtPiBwb3NfcmVmOnBvc19yZWYgLT4gJ2FcbnR5cGUgKCdhLCAnYikgcmVhZGVyMSA9ICdhIHJlYWRlciAtPiAnYiByZWFkZXJcbnR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlcjIgPSAnYSByZWFkZXIgLT4gKCdiLCAnYykgcmVhZGVyMVxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlcjMgPSAnYSByZWFkZXIgLT4gKCdiLCAnYywgJ2QpIHJlYWRlcjJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ1ZiAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ4IDogYnVmIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5cbmxldCB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyA9XG4gIGxldCBjID0gdW5zYWZlX2dldDggYnVmIHBvcyBpblxuICBpZiBjID49IDEyOCB0aGVuIGMgLSAyNTYgZWxzZSBjXG47O1xuXG4oKiQgb3BlbiBCaW5fcHJvdF9jaW5hcHMgJCopXG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxubGV0IGFyY2hfYmlnX2VuZGlhbiA9IFN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X2ludF9pbnQzMiA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gSW50MzIubWF4X2ludCBlbHNlIEludDMyLm9mX2ludCBtYXhfaW50XG5sZXQgbWluX2ludF9pbnQzMiA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gSW50MzIubWF4X2ludCBlbHNlIEludDMyLm9mX2ludCBtaW5faW50XG5sZXQgbWF4X2ludF9pbnQ2NCA9IEludDY0Lm9mX2ludCBtYXhfaW50XG5sZXQgbWluX2ludF9pbnQ2NCA9IEludDY0Lm9mX2ludCBtaW5faW50XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2FmZV9pbnRfb2ZfaW50MzIgcG9zIHggPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIEludDMyLnRvX2ludCB4XG4gIGVsc2UgaWYgeCA+PSBtaW5faW50X2ludDMyICYmIHggPD0gbWF4X2ludF9pbnQzMlxuICB0aGVuIEludDMyLnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgeCA9XG4gIGlmIHggPj0gbWluX2ludF9pbnQ2NCAmJiB4IDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiBJbnQ2NC50b19pbnQgeFxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmxldCBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF9wb3MgeCAtPiBJbnQ2NC50b19uYXRpdmVpbnQgeFxuICBlbHNlXG4gICAgZnVuIFtAaW5saW5lIGFsd2F5c10gcG9zIHggLT5cbiAgICAgIGlmIHggPj0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5taW5faW50XG4gICAgICAmJiB4IDw9IEludDY0Lm9mX25hdGl2ZWludCBOYXRpdmVpbnQubWF4X2ludFxuICAgICAgdGhlbiBJbnQ2NC50b19uYXRpdmVpbnQgeFxuICAgICAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfZ2V0MTYgOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0MzIgOiBidWYgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ2NCA6IGJ1ZiAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxubGV0IHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDE2IGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDE2IGJ1ZiBwb3MgfD4gYnN3YXAxNlxuOztcblxubGV0IHVuc2FmZV9nZXQzMmJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDMyIGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgfD4gYnN3YXAzMlxuOztcblxubGV0IHVuc2FmZV9nZXQ2NGJlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX2dldDY0IGVsc2UgZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgfD4gYnN3YXA2NFxuOztcblxubGV0IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDE2IGJ1ZiBwb3MgfD4gYnN3YXAxNiBlbHNlIHVuc2FmZV9nZXQxNlxuOztcblxubGV0IHVuc2FmZV9nZXQzMmxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgfD4gYnN3YXAzMiBlbHNlIHVuc2FmZV9nZXQzMlxuOztcblxubGV0IHVuc2FmZV9nZXQ2NGxlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gZnVuIGJ1ZiBwb3MgLT4gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgfD4gYnN3YXA2NCBlbHNlIHVuc2FmZV9nZXQ2NFxuOztcblxubGV0IHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IHggPSB1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zIGluXG4gIGlmIHggPiAzMjc2NyB0aGVuIHggLSA2NTUzNiBlbHNlIHhcbjs7XG5cbmxldCBiaW5fcmVhZF91bml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGlmIHVuc2FmZV9nZXQgYnVmIHBvcyA9ICdcXDAwMCdcbiAgdGhlbiBwb3NfcmVmIDo9IHBvcyArIDFcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5Vbml0X2NvZGUgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfYm9vbCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXDAwMCcgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgZmFsc2VcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIHRydWVcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkJvb2xfY29kZSBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAxIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDhfc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmVnX2ludDggIXBvc19yZWY7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBDYW4gYmUgYWJvdmUgbmV4dCBsaW5lIChubyBlcnJvcnMgcG9zc2libGUgd2l0aCAxNmJpdCkuXG4gICAgIFRoaXMgc2hvdWxkIGltcHJvdmUgdGhlIGdlbmVyYXRlZCBjb2RlLiAqKVxuICB1bnNhZmVfZ2V0MTZsZV9zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgKCogTm8gZXJyb3IgcG9zc2libGUgZWl0aGVyLiAqKVxuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9pbnRfb2ZfaW50MzIgIXBvc19yZWYgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQ2NCAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgSW50NjQub2ZfaW50MzIgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50MzJfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gIE5hdGl2ZWludC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGxldCBuID0gc2FmZV9uYXRpdmVpbnRfb2ZfaW50NjQgcG9zIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgTmF0MC51bnNhZmVfb2ZfaW50ICh1bnNhZmVfZ2V0MTZsZV91bnNpZ25lZCBidWYgcG9zKVxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF8zMiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBtYXNrXzMyYml0ID0gSW50NjQudG9faW50IDB4ZmZmZl9mZmZmTCBpblxuICAgIGZ1biBidWYgfnBvc19yZWYgfnBvcyAtPlxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICAgICAgcG9zX3JlZiA6PSBuZXh0O1xuICAgICAgbGV0IG4gPSBJbnQzMi50b19pbnQgKHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MpIGluXG4gICAgICBpZiBuID49IDBcbiAgICAgIHRoZW4gTmF0MC51bnNhZmVfb2ZfaW50IG5cbiAgICAgIGVsc2VcbiAgICAgICAgKCogRXJhc2UgdGhlIHVwcGVyIGJpdHMgdGhhdCB3ZXJlIHNldCB0byAxIGR1cmluZyB0aGUgaW50MzIgLT4gaW50IGNvbnZlcnNpb24uICopXG4gICAgICAgIE5hdDAudW5zYWZlX29mX2ludCAobiBsYW5kIG1hc2tfMzJiaXQpKVxuICBlbHNlXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgICAgIGlmIG4gPj0gMGwgJiYgbiA8PSBtYXhfaW50X2ludDMyXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDMyLnRvX2ludCBuKSBpblxuICAgICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICAgIG4pXG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfNjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zIGluXG4gIGlmIG4gPj0gMEwgJiYgbiA8PSBtYXhfaW50X2ludDY0XG4gIHRoZW4gKFxuICAgIGxldCBuID0gTmF0MC51bnNhZmVfb2ZfaW50IChJbnQ2NC50b19pbnQgbikgaW5cbiAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgbilcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93ICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTmF0MC51bnNhZmVfb2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmF0MF8xNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzMyIGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuXG4gICAgICBzYWZlX2Jpbl9yZWFkX25hdDBfNjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gICAgZWxzZVxuICAgICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgPVxuICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGlmIGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlN0cmluZ190b29fbG9uZyBzdGFydF9wb3M7XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gIHN0clxuOztcblxubGV0IGJpbl9yZWFkX3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgc3RyID0gYmluX3JlYWRfYnl0ZXMgYnVmIH5wb3NfcmVmIGluXG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfY2hhciBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gIHVuc2FmZV9nZXQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgQ2hhci5jb2RlIGNoXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgLT5cbiAgICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuXG4gICAgICBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX2ludCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9mbG9hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIEludDY0LmZsb2F0X29mX2JpdHMgKHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFx4MDAnLi4nXFx4N2YnIGFzIGNoIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIEludDMyLm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBJbnQzMi5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBJbnQzMi5vZl9pbnQgKHNhZmVfYmluX3JlYWRfaW50MTYgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX2ludDMyIGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnQzMl9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50NjQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDY0Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDY0Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDY0X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX25hdGl2ZWludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoQ2hhci5jb2RlIGNoKVxuICB8ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKiknXFx4ZmYnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgTmF0aXZlaW50Lm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzJfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UNjQgKiknXFx4ZmMnKCokKikgd2hlbiBhcmNoX3NpeHR5Zm91ciAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXRpdmVpbnRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfcmVmIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICByZWYgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9sYXp5IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICBMYXp5LmZyb21fdmFsIGVsXG47O1xuXG5sZXQgYmluX3JlYWRfb3B0aW9uIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOb25lXG4gIHwgJ1xcMDAxJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICBTb21lIGVsXG4gIHwgXyAtPiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5PcHRpb25fY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWYgPVxuICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBiID0gYmluX3JlYWRfYiBidWYgfnBvc19yZWYgaW5cbiAgYSwgYlxuOztcblxubGV0IGJpbl9yZWFkX3RyaXBsZSBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gIGxldCBiID0gYmluX3JlYWRfYiBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGMgPSBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiLCBjXG47O1xuXG5sZXQgYmluX3JlYWRfbl9yZXZfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbGVuID1cbiAgbGV0IHJlYyBsb29wIG4gYWNjID1cbiAgICBpZiBuID0gMCB0aGVuIGFjYyBlbHNlIGxvb3AgKG4gLSAxKSAoYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIDo6IGFjYylcbiAgaW5cbiAgbG9vcCBsZW4gW11cbjs7XG5cbmxldCBiaW5fcmVhZF9saXN0X3dpdGhfbWF4X2xlbiB+bWF4X2xlbiBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gbWF4X2xlbiB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgKExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSkgIXBvc19yZWY7XG4gIGxldCByZXZfbHN0ID0gYmluX3JlYWRfbl9yZXZfbGlzdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbGVuIGluXG4gIExpc3QucmV2IHJldl9sc3Rcbjs7XG5cbmxldCBiaW5fcmVhZF9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuOm1heF9pbnQgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG47O1xuXG5sZXQgZHVtbXlfZmxvYXRfYnVmID0gY3JlYXRlX2J1ZiA4XG5sZXQgKCkgPSBpZ25vcmUgKFdyaXRlLmJpbl93cml0ZV9mbG9hdCBkdW1teV9mbG9hdF9idWYgfnBvczowIDMuMSlcblxubGV0IG1heF9mbG9hdF9hcnJheV9sZW5ndGggPVxuICBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIFN5cy5tYXhfYXJyYXlfbGVuZ3RoIGVsc2UgU3lzLm1heF9hcnJheV9sZW5ndGggLyAyXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlbiB+Y3JlYXRlIH5ibGl0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHBvcztcbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IGFyciA9IGNyZWF0ZSBsZW4gaW5cbiAgYmxpdCB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgYXJyIH5sZW47XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgYXJyXG47O1xuXG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW5cbiAgICB+Y3JlYXRlOkZsb2F0LkFycmF5LmNyZWF0ZVxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2J1Zl9mbG9hdGFycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgPVxuICBiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW5cbiAgICB+Y3JlYXRlOkFycmF5LmNyZWF0ZV9mbG9hdFxuICAgIH5ibGl0OnVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICAgIGJ1ZlxuICAgIH5wb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlYWRfYXJyYXkgKHR5cGUgYSkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3JlYWRfZWwgOiBhIHJlYWRlcikgOiBmbG9hdCByZWFkZXIpID09IGJpbl9yZWFkX2Zsb2F0XG4gIHRoZW4gKE9iai5tYWdpYyAoYmluX3JlYWRfZmxvYXRfYXJyYXkgYnVmIH5wb3NfcmVmIDogZmxvYXQgYXJyYXkpIDogYSBhcnJheSlcbiAgZWxzZSAoXG4gICAgbGV0IHN0YXJ0X3BvcyA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gW3x8XVxuICAgIGVsc2UgKFxuICAgICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3BvcylcbiAgICAgIGVsc2UgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGggLyAyXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IG1heWJlX2Zsb2F0ID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGR1bW15X2Zsb2F0X2J1ZiB+cG9zX3JlZjoocmVmIDApIGluXG4gICAgICAgICAgICBTb21lIGVsXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIG1heWJlX2Zsb2F0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGVuID4gU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgICAgICAgICB0aGVuIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkFycmF5X3Rvb19sb25nIHN0YXJ0X3Bvc1xuICAgICAgICB8IFNvbWUgZWwgLT5cbiAgICAgICAgICBpZiBPYmoudGFnIChPYmoucmVwciBlbCkgPSBPYmouZG91YmxlX3RhZyB8fCBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKTtcbiAgICAgIGxldCBmaXJzdCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgbGVuIGZpcnN0IGluXG4gICAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZWwgPSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByZXMgaSBlbFxuICAgICAgZG9uZTtcbiAgICAgIHJlcykpXG47O1xuXG5sZXQgYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZF9rZXkgYmluX3JlYWRfdmFsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIGxlbiBpblxuICBsZXQgcmVhZF9rdl9wYWlyID0gYmluX3JlYWRfcGFpciBiaW5fcmVhZF9rZXkgYmluX3JlYWRfdmFsIGluXG4gIGxldCBlbHMgPSBiaW5fcmVhZF9uX3Jldl9saXN0IHJlYWRfa3ZfcGFpciBidWYgfnBvc19yZWYgbGVuIGluXG4gIGNvcHlfaHRibF9saXN0IGh0YmwgZWxzXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX3ZlYyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA0IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dCBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfdmVjMzIgdmVjKSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB2ZWNcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdDY0X3ZlYyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IHZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dCBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfdmVjNjQgdmVjKSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB2ZWNcbjs7XG5cbmxldCBiaW5fcmVhZF92ZWMgPSBiaW5fcmVhZF9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbjEgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgbGVuMiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA0IGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG1hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dCBsZW4xIGxlbjIgaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OihidWZfb2ZfbWF0MzIgbWF0KSB+ZHN0X3BvczowIH5sZW46c2l6ZTtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBtYXRcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdDY0X21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQ2NCBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX21hdCA9IGJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbmV4dCA9IHBvcyArIGxlbiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgc3RyID0gY3JlYXRlX2J1ZiBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOnBvcyB+ZHN0OnN0ciB+ZHN0X3BvczowIH5sZW47XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfdmFyaWFudF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJsZSBidWYgcG9zIGluXG4gICgqIFtuXSBtdXN0IGNvbnRhaW4gYW4gaW50ZWdlciBhbHJlYWR5IGVuY29kZWQsIGkuZS4gW24gPSAyICogayArIDFdLiAqKVxuICBpZiBJbnQzMi5sb2dhbmQgbiAxbCA9IDBsXG4gIHRoZW4gcmFpc2UgKFJlYWRfZXJyb3IgKFJlYWRFcnJvci5WYXJpYW50X3RhZywgcG9zKSlcbiAgZWxzZSAoXG4gICAgKCogV2Ugc2hpZnQgaXQgYnkgb25lIGJpdCB0byB0aGUgcmlnaHQgc2Ugd2UgZ2V0IGJhY2sgWzIgKiBrICsgMV0gaW4gdGhlIGVuZC4gKilcbiAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgSW50MzIudG9faW50IChJbnQzMi5zaGlmdF9yaWdodCBuIDEpKVxuOztcblxubGV0IGJpbl9yZWFkX2ludF84Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldDggYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8xNmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfMzJiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50MzIgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9pbnRfNjRiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQ2NF9iaXRzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDY0bGUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmsxNl9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0MTZiZV91bnNpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMyYmUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcmszMl9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQzMmJlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDY0IHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazY0X2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDY0YmUgYnVmIHBvc1xuOztcblxuWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAwNywgMCldXG5cbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9zdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9zdHJpbmdfc2V0NjR1XCJcblxuWyUlZWxzZV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcblxuWyUlZW5kaWZdXG5cbmxldCBiaW5fcmVhZF9tZDUgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDE2IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9nZXQ2NCBidWYgcG9zIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfZ2V0NjQgYnVmIChwb3MgKyA4KSBpblxuICAgIHVuc2FmZV9ieXRlc19zZXQ2NCByZXMgMCBhO1xuICAgIHVuc2FmZV9ieXRlc19zZXQ2NCByZXMgOCBiKVxuICBlbHNlIChcbiAgICBsZXQgYSA9IHVuc2FmZV9nZXQzMiBidWYgcG9zIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA0KSBpblxuICAgIGxldCBjID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgOCkgaW5cbiAgICBsZXQgZCA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDEyKSBpblxuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgMCBhO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgNCBiO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgOCBjO1xuICAgIHVuc2FmZV9ieXRlc19zZXQzMiByZXMgMTIgZCk7XG4gIE1kNV9saWIudW5zYWZlX29mX2JpbmFyeSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMpXG47O1xuIiwiaW5jbHVkZSBCaW5fc2hhcGVcblxuKCogbmV3IGJhc2Ugc2hhcGVzICopXG5sZXQgYmluX3NoYXBlX3VuaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ1bml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJib29sXCIpIFtdXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInN0cmluZ1wiKSBbXVxubGV0IGJpbl9zaGFwZV9ieXRlcyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJ5dGVzXCIpIFtdXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJjaGFyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDMyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50MzJcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2M1wiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQ2NCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDY0XCIpIFtdXG5sZXQgYmluX3NoYXBlX25hdGl2ZWludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdGl2ZWludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXQwID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmF0MFwiKSBbXVxubGV0IGJpbl9zaGFwZV9kaWdlc3QgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJkaWdlc3RcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfdmVjXCIpIFtdXG5sZXQgYmluX3NoYXBlX3ZlYyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0MzJfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0NjRfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQ2NF9tYXRcIikgW11cbmxldCBiaW5fc2hhcGVfbWF0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2JpZ3N0cmluZyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImJpZ3N0cmluZ1wiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXRhcnJheVwiKSBbXVxubGV0IGJpbl9zaGFwZV92YXJpYW50X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInZhcmlhbnRfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF84Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzhiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzE2Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzE2Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8zMmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8zMmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfNjRiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfNjRiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjRfYml0cyA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDY0X2JpdHNcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazE2X2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmsxNl9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazMyX2ludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcms2NF9pbnQ2NFwiKSBbXVxuXG4oKiBuZXcgc2hhcGUgY29uc3RydWN0b3JzICopXG5sZXQgYmluX3NoYXBlX3JlZiB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwicmVmXCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX29wdGlvbiB4ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwib3B0aW9uXCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2xpc3QgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImxpc3RcIikgWyB4IF1cbmxldCBiaW5fc2hhcGVfYXJyYXkgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImFycmF5XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgeCB5ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaGFzaHRibFwiKSBbIHg7IHkgXVxuXG4oKiBzaGFwZS1jb25zdHJ1Y3RvciBhbGlhc2VzICopXG5sZXQgYmluX3NoYXBlX2xhenkgeCA9IHhcbmxldCBiaW5fc2hhcGVfcGFpciB4IHkgPSB0dXBsZSBbIHg7IHkgXVxubGV0IGJpbl9zaGFwZV90cmlwbGUgeCB5IHogPSB0dXBsZSBbIHg7IHk7IHogXVxuIiwiKCogU2l6ZTogY29tcHV0ZSBzaXplIG9mIHZhbHVlcyBpbiB0aGUgYmluYXJ5IHByb3RvY29sLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IFN5cy53b3JkX3NpemUgPSA2NFxuXG5vcGVuIENvbW1vblxuXG5tb2R1bGUgTWF4aW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IDFcbiAgbGV0IGJpbl9zaXplX2Jvb2wgPSAxXG4gIGxldCBiaW5fc2l6ZV9jaGFyID0gMVxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiA5IGVsc2UgNVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiA5IGVsc2UgNVxuICBsZXQgYmluX3NpemVfaW50ID0gbWF4IGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSA4XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IDVcbiAgbGV0IGJpbl9zaXplX2ludDY0ID0gOVxuICBsZXQgYmluX3NpemVfbmF0aXZlaW50ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXQwID0gYmluX3NpemVfaW50X25hdDBcbiAgbGV0IGJpbl9zaXplX3ZhcmlhbnRfaW50ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzhiaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9pbnRfMTZiaXQgPSAyXG4gIGxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgPSA0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSA4XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NF9iaXRzID0gOFxuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IDJcbiAgbGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgPSA0XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzIgPSA0XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50ID0gOFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludDY0ID0gOFxuZW5kXG5cbm1vZHVsZSBNaW5pbXVtID0gc3RydWN0XG4gIGxldCBiaW5fc2l6ZV91bml0ID0gTWF4aW11bS5iaW5fc2l6ZV91bml0XG4gIGxldCBiaW5fc2l6ZV9ib29sID0gTWF4aW11bS5iaW5fc2l6ZV9ib29sXG4gIGxldCBiaW5fc2l6ZV9jaGFyID0gTWF4aW11bS5iaW5fc2l6ZV9jaGFyXG4gIGxldCBiaW5fc2l6ZV9tZDUgPSAxNlxuICBsZXQgYmluX3NpemVfaW50X25hdDAgPSAxXG4gIGxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgPSAyXG4gIGxldCBiaW5fc2l6ZV9pbnQgPSBtaW4gYmluX3NpemVfaW50X25hdDAgYmluX3NpemVfaW50X25lZ2F0aXZlXG4gIGxldCBiaW5fc2l6ZV9mbG9hdCA9IE1heGltdW0uYmluX3NpemVfZmxvYXRcbiAgbGV0IGJpbl9zaXplX2ludDMyID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0aXZlaW50ID0gYmluX3NpemVfaW50XG4gIGxldCBiaW5fc2l6ZV9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfcmVmID0gMVxuICBsZXQgYmluX3NpemVfbGF6eV90ID0gMVxuICBsZXQgYmluX3NpemVfb3B0aW9uID0gMVxuICBsZXQgYmluX3NpemVfcGFpciA9IDEgKyAxXG4gIGxldCBiaW5fc2l6ZV90cmlwbGUgPSAxICsgMSArIDFcbiAgbGV0IGJpbl9zaXplX2xlbiA9IGJpbl9zaXplX25hdDBcbiAgbGV0IGJpbl9zaXplX2xpc3QgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9oYXNodGJsID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9zdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2J5dGVzID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0MzJfdmVjID0gYmluX3NpemVfdmVjXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDY0X3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfbWF0ID0gYmluX3NpemVfbGVuICsgYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCA9IGJpbl9zaXplX21hdFxuICBsZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2JpZ3N0cmluZyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXRhcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX3ZhcmlhbnRfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV92YXJpYW50X2ludFxuICBsZXQgYmluX3NpemVfaW50XzhiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF84Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfMTZiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF8xNmJpdFxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMzJiaXRcbiAgbGV0IGJpbl9zaXplX2ludF82NGJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzY0Yml0XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NF9iaXRzID0gTWF4aW11bS5iaW5fc2l6ZV9pbnQ2NF9iaXRzXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMTZfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMTZfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50XG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzIgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcmszMl9pbnQzMlxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludDY0ID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjRcbmVuZFxuXG50eXBlICdhIHNpemVyID0gJ2EgLT4gaW50XG50eXBlICgnYSwgJ2IpIHNpemVyMSA9ICdhIHNpemVyIC0+ICdiIHNpemVyXG50eXBlICgnYSwgJ2IsICdjKSBzaXplcjIgPSAnYSBzaXplciAtPiAoJ2IsICdjKSBzaXplcjFcbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzaXplcjMgPSAnYSBzaXplciAtPiAoJ2IsICdjLCAnZCkgc2l6ZXIyXG5cbmxldCBiaW5fc2l6ZV91bml0ICgpID0gMVxubGV0IGJpbl9zaXplX2Jvb2wgXyA9IDFcblxubGV0IGJpbl9zaXplX2ludF9uYXQwIG4gPVxuICBpZiBuIDwgMHgwMDAwMDA4MFxuICB0aGVuIDFcbiAgZWxzZSBpZiBuIDwgMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuID49ICgqIDB4ODAwMDAwMDAgKikgMSBsc2wgMzFcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSBuID1cbiAgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIDJcbiAgZWxzZSBpZiBuID49IC0weDAwMDA4MDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPCAoKiAtMHg4MDAwMDAwMCAqKSAtKDEgbHNsIDMxKVxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfY2hhciBfID0gMVxubGV0IGJpbl9zaXplX2ludCBuID0gaWYgbiA+PSAwIHRoZW4gYmluX3NpemVfaW50X25hdDAgbiBlbHNlIGJpbl9zaXplX2ludF9uZWdhdGl2ZSBuXG5cbmxldCBiaW5fc2l6ZV9uYXQwIG5hdDAgPVxuICBsZXQgbiA9IChuYXQwIDogTmF0MC50IDo+IGludCkgaW5cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDEwMDAwMDAwMCAqKSAxIGxzbCAzMlxuICB0aGVuIDlcbiAgZWxzZSA1XG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwIHBsZW4gaW5cbiAgc2l6ZV9sZW4gKyBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9zdHJpbmcgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChTdHJpbmcubGVuZ3RoIHN0cilcbmxldCBiaW5fc2l6ZV9ieXRlcyBzdHIgPSBiaW5fc2l6ZV9zdHJpbmdfb3JfYnl0ZXMgKEJ5dGVzLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfbWQ1IF8gPSAxNlxuXG5sZXQgYmluX3NpemVfZmxvYXQgZiA9XG4gICgqIElmIHdlIGp1c3QgaWdub3JlIHRoZSBhcmd1bWVudCB0aGUgY29tcGlsZXIgd2lsbCBzdGlsbCByZXF1aXJlIGl0IHRvIGV4aXN0IGFuZCBiZVxuICAgICBib3hlZC4gVGhpcyBtZWFucyB0aGF0IGlmIGZvciBpbnN0YW5jZSB3ZSBjYWxsIHRoaXMgZm9yIGEgZmllbGQgb2YgYSBmbG9hdCByZWNvcmQsXG4gICAgIHRoZSBjb21waWxlciB3aWxsIGFsbG9jYXRlIHRoZSBmbG9hdCBmb3Igbm90aGluZy5cblxuICAgICBXaXRoIHRoaXMgbGluZSB0aGUgY29tcGlsZXIgcmVhbGx5IGlnbm9yZXMgdGhlIGZsb2F0LiAqKVxuICBpZ25vcmUgKHRydW5jYXRlIGYpO1xuICA4XG47O1xuXG5sZXQgYmluX3NpemVfaW50MzIgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBuIC0+IGJpbl9zaXplX2ludCAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gbiAtPlxuICAgICAgaWYgbiA+PSAweDAwMDA4MDAwbCB8fCBuIDwgLTB4MDAwMDgwMDBsIHRoZW4gNSBlbHNlIGJpbl9zaXplX2ludCAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3NpemVfaW50NjQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHg4MDAwMDAwMEwgfHwgbiA8IC0weDgwMDAwMDAwTCB0aGVuIDkgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDY0LnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHg4MDAwMDAwMEwgfHwgbiA8IC0weDgwMDAwMDAwTCB0aGVuIDkgZWxzZSBiaW5fc2l6ZV9pbnQzMiAoSW50NjQudG9faW50MzIgbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9uYXRpdmVpbnQgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIGZ1biBuIC0+IGJpbl9zaXplX2ludDY0IChJbnQ2NC5vZl9uYXRpdmVpbnQgbilcbiAgZWxzZSBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQzMiAoTmF0aXZlaW50LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfcmVmIGJpbl9zaXplX2VsIHIgPSBiaW5fc2l6ZV9lbCAhclxubGV0IGJpbl9zaXplX2xhenlfdCBiaW5fc2l6ZV9lbCBsdiA9IGJpbl9zaXplX2VsIChMYXp5LmZvcmNlIGx2KVxubGV0IGJpbl9zaXplX2xhenkgPSBiaW5fc2l6ZV9sYXp5X3RcblxubGV0IGJpbl9zaXplX29wdGlvbiBiaW5fc2l6ZV9lbCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAxXG4gIHwgU29tZSB2IC0+IDEgKyBiaW5fc2l6ZV9lbCB2XG47O1xuXG5sZXQgYmluX3NpemVfcGFpciBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgKGEsIGIpID0gYmluX3NpemVfYSBhICsgYmluX3NpemVfYiBiXG5cbmxldCBiaW5fc2l6ZV90cmlwbGUgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgKGEsIGIsIGMpID1cbiAgYmluX3NpemVfYSBhICsgYmluX3NpemVfYiBiICsgYmluX3NpemVfYyBjXG47O1xuXG5sZXQgYmluX3NpemVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3NpemVfZWwgfnNpemVfYWNjIH5sZW5fYWNjIGxzdCA9XG4gICAgbWF0Y2ggbHN0IHdpdGhcbiAgICB8IFtdIC0+IHNpemVfYWNjICsgYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbl9hY2MpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgbG9vcCB+YmluX3NpemVfZWwgfnNpemVfYWNjOihzaXplX2FjYyArIGJpbl9zaXplX2VsIGhkKSB+bGVuX2FjYzoobGVuX2FjYyArIDEpIHRsXG4gIGluXG4gIGZ1biBiaW5fc2l6ZV9lbCBsc3QgLT4gbG9vcCB+YmluX3NpemVfZWwgfnNpemVfYWNjOjAgfmxlbl9hY2M6MCBsc3Rcbjs7XG5cbmxldCBiaW5fc2l6ZV9sZW4gbGVuID1cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGJpbl9zaXplX25hdDAgcGxlblxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgYXIgPVxuICBsZXQgbGVuID0gRmxvYXQuQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdF9hcnJheSBhciA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYXIgaW5cbiAgYmluX3NpemVfbGVuIGxlbiArICg4ICogbGVuKVxuOztcblxubGV0IGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+biA9XG4gIGxldCB0b3RhbF9sZW5fcmVmID0gcmVmIHRvdGFsX2xlbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBsZXQgZWwgPSBBcnJheS51bnNhZmVfZ2V0IGFyIGkgaW5cbiAgICB0b3RhbF9sZW5fcmVmIDo9ICF0b3RhbF9sZW5fcmVmICsgYmluX3NpemVfZWwgZWxcbiAgZG9uZTtcbiAgIXRvdGFsX2xlbl9yZWZcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheSAodHlwZSBhKSBiaW5fc2l6ZV9lbCBhciA9XG4gIGlmIChPYmoubWFnaWMgKGJpbl9zaXplX2VsIDogYSBzaXplcikgOiBmbG9hdCBzaXplcikgPT0gYmluX3NpemVfZmxvYXRcbiAgdGhlbiBiaW5fc2l6ZV9mbG9hdF9hcnJheSAoT2JqLm1hZ2ljIChhciA6IGEgYXJyYXkpIDogZmxvYXQgYXJyYXkpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgbGV0IHRvdGFsX2xlbiA9IGJpbl9zaXplX2xlbiBuIGluXG4gICAgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuIH5uKVxuOztcblxubGV0IGJpbl9zaXplX2hhc2h0YmwgYmluX3NpemVfa2V5IGJpbl9zaXplX3ZhbCBodGJsID1cbiAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICBsZXQgY29sbF9odGJsIGsgdiB0b3RhbF9sZW4gPVxuICAgIGluY3IgY250X3JlZjtcbiAgICB0b3RhbF9sZW4gKyBiaW5fc2l6ZV9rZXkgayArIGJpbl9zaXplX3ZhbCB2XG4gIGluXG4gIGxldCBsZW4gPSBIYXNodGJsLmxlbmd0aCBodGJsIGluXG4gIGxldCB0b3RhbF9sZW4gPSBIYXNodGJsLmZvbGQgY29sbF9odGJsIGh0YmwgKGJpbl9zaXplX2xlbiBsZW4pIGluXG4gIGlmICFjbnRfcmVmIDw+IGxlbiB0aGVuIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIFwiYmluX3NpemVfaGFzaHRibFwiO1xuICB0b3RhbF9sZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9nZW5fdmVjIHZlYyBtdWx0aXBsaWVyID1cbiAgbGV0IGxlbiA9IEFycmF5MS5kaW0gdmVjIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAobXVsdGlwbGllciAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyB2ZWMgPSBiaW5fc2l6ZV9nZW5fdmVjIHZlYyA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgOFxubGV0IGJpbl9zaXplX3ZlYyA9IGJpbl9zaXplX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fc2l6ZV9nZW5fbWF0IG1hdCBtdWx0aXBsaWVyID1cbiAgbGV0IGRpbTEgPSBBcnJheTIuZGltMSBtYXQgaW5cbiAgbGV0IGRpbTIgPSBBcnJheTIuZGltMiBtYXQgaW5cbiAgbGV0IHNpemUgPSBkaW0xICogZGltMiBpblxuICBiaW5fc2l6ZV9sZW4gZGltMSArIGJpbl9zaXplX2xlbiBkaW0yICsgKG11bHRpcGxpZXIgKiBzaXplKVxuOztcblxubGV0IGJpbl9zaXplX2Zsb2F0MzJfbWF0IG1hdCA9IGJpbl9zaXplX2dlbl9tYXQgbWF0IDRcbmxldCBiaW5fc2l6ZV9mbG9hdDY0X21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA4XG5sZXQgYmluX3NpemVfbWF0ID0gYmluX3NpemVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgYnVmID0gYmluX3NpemVfZ2VuX3ZlYyBidWYgMVxubGV0IGJpbl9zaXplX3ZhcmlhbnRfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzhiaXQgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnRfMTZiaXQgXyA9IDJcbmxldCBiaW5fc2l6ZV9pbnRfMzJiaXQgXyA9IDRcbmxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgXyA9IDhcbmxldCBiaW5fc2l6ZV9pbnQ2NF9iaXRzIF8gPSA4XG5sZXQgYmluX3NpemVfbmV0d29yazE2X2ludCBfID0gMlxubGV0IGJpbl9zaXplX25ldHdvcmszMl9pbnQgXyA9IDRcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzIgXyA9IDRcbmxldCBiaW5fc2l6ZV9uZXR3b3JrNjRfaW50IF8gPSA4XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludDY0IF8gPSA4XG4iLCIoKiBUcF9jbGFzczogc2l6ZXJzLCB3cml0ZXJzLCBhbmQgcmVhZGVycyBpbiByZWNvcmRzICopXG5cbnR5cGUgJ2Egd3JpdGVyID1cbiAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICA7IHdyaXRlIDogJ2EgV3JpdGUud3JpdGVyXG4gIH1cblxudHlwZSAnYSByZWFkZXIgPVxuICB7IHJlYWQgOiAnYSBSZWFkLnJlYWRlclxuICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gIH1cblxudHlwZSAnYSB0ID1cbiAgeyBzaGFwZSA6IFNoYXBlLnRcbiAgOyB3cml0ZXIgOiAnYSB3cml0ZXJcbiAgOyByZWFkZXIgOiAnYSByZWFkZXJcbiAgfVxuXG50eXBlICdhIHdyaXRlcjAgPSAnYSB3cml0ZXJcbnR5cGUgJ2EgcmVhZGVyMCA9ICdhIHJlYWRlclxudHlwZSAnYSB0MCA9ICdhIHRcblxubW9kdWxlIFMxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAnYiB3cml0ZXIwXG4gIHR5cGUgKCdhLCAnYikgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAnYiByZWFkZXIwXG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhIHQwIC0+ICdiIHQwXG5lbmRcblxubW9kdWxlIFMyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYykgUzEud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYykgUzEucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSB0MCAtPiAoJ2IsICdjKSBTMS50XG5lbmRcblxubW9kdWxlIFMzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICdhIHQwIC0+ICgnYiwgJ2MsICdkKSBTMi50XG5lbmRcblxubGV0IHZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lIF9idWYgfnBvc19yZWYgX3ggPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgIXBvc19yZWZcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcy5TdHIgKilcbigqJCBta19iYXNlIFwidW5pdFwiICopXG5sZXQgYmluX3dyaXRlcl91bml0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV91bml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV91bml0IH1cbmxldCBiaW5fcmVhZGVyX3VuaXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3VuaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiB9XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBTaGFwZS5iaW5fc2hhcGVfdW5pdFxuXG5sZXQgYmluX3VuaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3VuaXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfdW5pdDsgcmVhZGVyID0gYmluX3JlYWRlcl91bml0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiYm9vbFwiICopXG5sZXQgYmluX3dyaXRlcl9ib29sID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ib29sOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ib29sIH1cbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Jvb2w7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiB9XG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBTaGFwZS5iaW5fc2hhcGVfYm9vbFxuXG5sZXQgYmluX2Jvb2wgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Jvb2w7IHdyaXRlciA9IGJpbl93cml0ZXJfYm9vbDsgcmVhZGVyID0gYmluX3JlYWRlcl9ib29sIH1cbjs7XG5cbigqJCBta19iYXNlIFwic3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmcgfVxuXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfc3RyaW5nXG5cbmxldCBiaW5fc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9zdHJpbmc7IHdyaXRlciA9IGJpbl93cml0ZXJfc3RyaW5nOyByZWFkZXIgPSBiaW5fcmVhZGVyX3N0cmluZyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJ5dGVzXCIgKilcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ieXRlczsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXMgfVxuXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYnl0ZXM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFNoYXBlLmJpbl9zaGFwZV9ieXRlc1xuXG5sZXQgYmluX2J5dGVzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ieXRlczsgd3JpdGVyID0gYmluX3dyaXRlcl9ieXRlczsgcmVhZGVyID0gYmluX3JlYWRlcl9ieXRlcyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImNoYXJcIiAqKVxubGV0IGJpbl93cml0ZXJfY2hhciA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfY2hhcjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfY2hhciB9XG5sZXQgYmluX3JlYWRlcl9jaGFyID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9jaGFyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgfVxubGV0IGJpbl9zaGFwZV9jaGFyID0gU2hhcGUuYmluX3NoYXBlX2NoYXJcblxubGV0IGJpbl9jaGFyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9jaGFyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2NoYXI7IHJlYWRlciA9IGJpbl9yZWFkZXJfY2hhciB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50IH1cbmxldCBiaW5fcmVhZGVyX2ludCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiB9XG5sZXQgYmluX3NoYXBlX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5faW50ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludCB9XG5cbigqJCBta19iYXNlIFwiZmxvYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdCB9XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0XG5cbmxldCBiaW5fZmxvYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50MzIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMiB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQzMjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX2ludDMyXG5cbmxldCBiaW5faW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDMyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDMyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDMyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NCB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX2ludDY0XG5cbmxldCBiaW5faW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0IH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0aXZlaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25hdGl2ZWludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0aXZlaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmF0aXZlaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gU2hhcGUuYmluX3NoYXBlX25hdGl2ZWludFxuXG5sZXQgYmluX25hdGl2ZWludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0aXZlaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXRpdmVpbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdGl2ZWludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdDBcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0MCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0MDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0MCB9XG5sZXQgYmluX3JlYWRlcl9uYXQwID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXQwOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXQwXCIgfVxubGV0IGJpbl9zaGFwZV9uYXQwID0gU2hhcGUuYmluX3NoYXBlX25hdDBcblxubGV0IGJpbl9uYXQwID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXQwOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdDA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0MCB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJyZWZcIiAqKVxubGV0IGJpbl93cml0ZXJfcmVmIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9yZWYgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3JlZiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9yZWYgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJyZWZcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3JlZiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9yZWYgeDFcblxubGV0IGJpbl9yZWYgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9yZWYgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9yZWYgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcmVmIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGF6eVwiICopXG5sZXQgYmluX3dyaXRlcl9sYXp5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9sYXp5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9sYXp5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGF6eSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9sYXp5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGF6eSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9sYXp5IHgxXG5cbmxldCBiaW5fbGF6eSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xhenkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9sYXp5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xhenkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJvcHRpb25cIiAqKVxubGV0IGJpbl93cml0ZXJfb3B0aW9uIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9vcHRpb24gYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX29wdGlvbiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9vcHRpb24gYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJvcHRpb25cIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX29wdGlvbiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9vcHRpb24geDFcblxubGV0IGJpbl9vcHRpb24gYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9vcHRpb24gYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9vcHRpb24gYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwicGFpclwiICopXG5sZXQgYmluX3dyaXRlcl9wYWlyIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcGFpciBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9wYWlyIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3BhaXIgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfcGFpciBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInBhaXJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3BhaXIgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfcGFpciB4MSB4MlxuXG5sZXQgYmluX3BhaXIgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9wYWlyIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcGFpciBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcGFpciBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTMgXCJ0cmlwbGVcIiAqKVxubGV0IGJpbl93cml0ZXJfdHJpcGxlIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyIGJpbl93cml0ZXJfZWwzID1cbiAgeyBzaXplID1cbiAgICAgIChmdW4gdiAtPlxuICAgICAgICAgU2l6ZS5iaW5fc2l6ZV90cmlwbGUgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIGJpbl93cml0ZXJfZWwzLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV90cmlwbGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDEud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDIud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDMud3JpdGVcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyIGJpbl9yZWFkZXJfZWwzID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3RyaXBsZVxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMS5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwyLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDMucmVhZFxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidHJpcGxlXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDMgPSBTaGFwZS5iaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzXG5cbmxldCBiaW5fdHJpcGxlIGJpbl9lbDEgYmluX2VsMiBiaW5fZWwzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV90cmlwbGUgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlIGJpbl9lbDMuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlciBiaW5fZWwzLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyIGJpbl9lbDMucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxpc3RcIiAqKVxubGV0IGJpbl93cml0ZXJfbGlzdCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGlzdCBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGlzdCBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xpc3QgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGlzdCBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xpc3QgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGlzdCB4MVxuXG5sZXQgYmluX2xpc3QgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9saXN0IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGlzdCBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9saXN0IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwiYXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfYXJyYXkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2FycmF5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9hcnJheSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2FycmF5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2FycmF5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2FycmF5IHgxID0gU2hhcGUuYmluX3NoYXBlX2FycmF5IHgxXG5cbmxldCBiaW5fYXJyYXkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9hcnJheSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2FycmF5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2FycmF5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwiaGFzaHRibFwiICopXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfaGFzaHRibCB4MSB4MlxuXG5sZXQgYmluX2hhc2h0YmwgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9oYXNodGJsIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcblxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInZlY1wiICopXG5sZXQgYmluX3dyaXRlcl92ZWMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmVjIH1cbmxldCBiaW5fcmVhZGVyX3ZlYyA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiB9XG5sZXQgYmluX3NoYXBlX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fdmVjID0geyBzaGFwZSA9IGJpbl9zaGFwZV92ZWM7IHdyaXRlciA9IGJpbl93cml0ZXJfdmVjOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZlYyB9XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxuXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX21hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9tYXQgfVxubGV0IGJpbl9yZWFkZXJfbWF0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiIH1cbmxldCBiaW5fc2hhcGVfbWF0ID0gU2hhcGUuYmluX3NoYXBlX21hdFxubGV0IGJpbl9tYXQgPSB7IHNoYXBlID0gYmluX3NoYXBlX21hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9tYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfbWF0IH1cblxuKCokIG1rX2Jhc2UgXCJiaWdzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9iaWdzdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2JpZ3N0cmluZyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYmlnc3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfYmlnc3RyaW5nXG5cbmxldCBiaW5fYmlnc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9iaWdzdHJpbmdcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2JpZ3N0cmluZ1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYmlnc3RyaW5nXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXRhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdGFycmF5OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXk7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRhcnJheVxuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0YXJyYXlcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbiAgfVxuOztcblxuKCokKilcblxuKCokIG1rX2Jhc2UgXCJ2YXJpYW50X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl92YXJpYW50X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmFyaWFudF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZhcmlhbnRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF92YXJpYW50X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmFyaWFudF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gU2hhcGUuYmluX3NoYXBlX3ZhcmlhbnRfaW50XG5cbmxldCBiaW5fdmFyaWFudF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3ZhcmlhbnRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl92YXJpYW50X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmFyaWFudF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfOGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfOGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzhiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF84Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF84Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfOGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzhiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF84Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF84Yml0XG5cbmxldCBiaW5faW50XzhiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF84Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfOGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzhiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMTZiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzE2Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMTZiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8xNmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMTZiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8xNmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzE2Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzE2Yml0XG5cbmxldCBiaW5faW50XzE2Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMTZiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8xNmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzE2Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzMyYml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8zMmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzMyYml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMzJiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzMyYml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMzJiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8zMmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8zMmJpdFxuXG5sZXQgYmluX2ludF8zMmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzMyYml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMzJiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8zMmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF82NGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfNjRiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF82NGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF82NGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfNjRiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfNjRiaXRcblxubGV0IGJpbl9pbnRfNjRiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF82NGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzY0Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfNjRiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NF9iaXRzXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0X2JpdHMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0X2JpdHM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0X2JpdHMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50NjRfYml0cyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjRfYml0czsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRfYml0c1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjRfYml0cyA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NF9iaXRzXG5cbmxldCBiaW5faW50NjRfYml0cyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjRfYml0c1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjRfYml0c1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjRfYml0c1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmsxNl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazE2X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazE2X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazE2X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMTZfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMTZfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludFxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQzMlxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnQzMlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMlxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50NjRcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50NjRcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjRcbiAgfVxuOztcblxuKCokKilcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbmxldCBjbnZfd3JpdGVyIGNudiB0cF9jbGFzcyA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiB0cF9jbGFzcy5zaXplIChjbnYgdikpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gdHBfY2xhc3Mud3JpdGUgYnVmIH5wb3MgKGNudiB2KSlcbiAgfVxuOztcblxubGV0IGNudl9yZWFkZXIgY252IHRwX2NsYXNzID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gY252ICh0cF9jbGFzcy5yZWFkIGJ1ZiB+cG9zX3JlZikpXG4gIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgdnRhZyAtPiBjbnYgKHRwX2NsYXNzLnZ0YWdfcmVhZCBidWYgfnBvc19yZWYgdnRhZykpXG4gIH1cbjs7XG5cbmxldCBjbnYgZm9yX3NoYXBlIGZvcl93cml0ZXIgZm9yX3JlYWRlciB0cF9jbGFzcyA9XG4gIHsgc2hhcGUgPSBmb3Jfc2hhcGUgdHBfY2xhc3Muc2hhcGVcbiAgOyB3cml0ZXIgPSBjbnZfd3JpdGVyIGZvcl93cml0ZXIgdHBfY2xhc3Mud3JpdGVyXG4gIDsgcmVhZGVyID0gY252X3JlYWRlciBmb3JfcmVhZGVyIHRwX2NsYXNzLnJlYWRlclxuICB9XG47O1xuIiwiKCogQmluYWJsZTogc2lnbmF0dXJlcyBkZWZpbmluZyBnZW5lcmF0ZWQgZnVuY3Rpb25zIGZvciB0aGUgYmluYXJ5IHByb3RvY29sLlxuICAgW1MsIFMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyBzYXRpc2ZpZWQgYnkgdGhlIGdlbmVyYXRlZCBjb2RlIGFuZFxuICAgW01pbmltYWwuUywgTWluaW1hbC5TMSwgZXRjXSBhcmUgdGhlIHNpZ25hdHVyZXMgdGhhdCBnZW5lcmF0ZWQgY29kZSB1c2VzLiAqKVxuXG4oKiB0aGUgc3Vic2V0IG9mIFMgY29udGFpbmluZyBvbmx5IGZ1bmN0aW9ucywgc28gdGhhdCBvbmUgY2FuIHJlY3Vyc2l2ZWx5IGRlZmluZSBtb2R1bGVzXG4gICBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2UgKilcbm1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnMgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGJpbl9zaXplX3QgOiB0IFNpemUuc2l6ZXJcbiAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgdmFsIGJpbl9yZWFkX3QgOiB0IFJlYWQucmVhZGVyXG5cbiAgKCoqXG4gICAgIFRoaXMgZnVuY3Rpb24gb25seSBuZWVkcyBpbXBsZW1lbnRhdGlvbiBpZiBbdF0gZXhwb3NlZCB0byBiZSBhIHBvbHltb3JwaGljIHZhcmlhbnQuXG4gICAgIERlc3BpdGUgd2hhdCB0aGUgdHlwZSByZWFkcywgdGhpcyBkb2VzICpub3QqIHByb2R1Y2UgYSBmdW5jdGlvbiBhZnRlciByZWFkaW5nO1xuICAgICBpbnN0ZWFkIGl0IHRha2VzIHRoZSBjb25zdHJ1Y3RvciB0YWcgKGludCkgYmVmb3JlIHJlYWRpbmcgYW5kIHJlYWRzIHRoZSByZXN0IG9mIHRoZVxuICAgICB2YXJpYW50IFt0XSBhZnRlcndhcmRzLlxuICAqKVxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgdmFsIGJpbl93cml0ZXJfdCA6IHQgVHlwZV9jbGFzcy53cml0ZXJcbiAgdmFsIGJpbl9yZWFkZXJfdCA6IHQgVHlwZV9jbGFzcy5yZWFkZXJcbiAgdmFsIGJpbl90IDogdCBUeXBlX2NsYXNzLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdhIHQpIFNpemUuc2l6ZXIxXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2EgdCkgV3JpdGUud3JpdGVyMVxuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgaW50IC0+ICdhIHQpIFJlYWQucmVhZGVyMVxuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYSB0KSBUeXBlX2NsYXNzLlMxLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50XG4gIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgV3JpdGUud3JpdGVyMlxuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi5yZWFkZXJcbiAgdmFsIGJpbl90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgVHlwZV9jbGFzcy5TMi50XG5lbmRcblxubW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFNpemUuc2l6ZXIzXG4gIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsICdjLCBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIFJlYWQucmVhZGVyM1xuICB2YWwgYmluX3dyaXRlcl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBUeXBlX2NsYXNzLlMzLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMudFxuZW5kXG5cbm1vZHVsZSBNaW5pbWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICAgIHZhbCBiaW5fd3JpdGVfdCA6IHQgV3JpdGUud3JpdGVyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiB0IFJlYWQucmVhZGVyXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKGludCAtPiB0KSBSZWFkLnJlYWRlclxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50XG4gICAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdhIHQpIFNpemUuc2l6ZXIxXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdhIHQpIFJlYWQucmVhZGVyMVxuICAgIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgaW50IC0+ICdhIHQpIFJlYWQucmVhZGVyMVxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFNpemUuc2l6ZXIyXG4gICAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgV3JpdGUud3JpdGVyMlxuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgaW50IC0+ICgnYSwgJ2IpIHQpIFJlYWQucmVhZGVyMlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFdyaXRlLndyaXRlcjNcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIGVuZFxuZW5kXG4iLCIoKiBVdGlsczogdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHVzZXIgY29udmVuaWVuY2UgKilcblxub3BlbiBDb21tb25cbm9wZW4gU2l6ZVxub3BlbiBUeXBlX2NsYXNzXG5pbmNsdWRlIFV0aWxzX2ludGZcblxubGV0IHNpemVfaGVhZGVyX2xlbmd0aCA9IDhcbmxldCBiaW5fd3JpdGVfc2l6ZV9oZWFkZXIgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0XG5sZXQgYmluX3JlYWRfc2l6ZV9oZWFkZXIgPSBSZWFkLmJpbl9yZWFkX2ludF82NGJpdFxuXG5sZXQgYmluX2R1bXAgPyhoZWFkZXIgPSBmYWxzZSkgd3JpdGVyIHYgPVxuICBsZXQgYnVmLCBwb3MsIHBvc19sZW4gPVxuICAgIGxldCB2X2xlbiA9IHdyaXRlci5zaXplIHYgaW5cbiAgICBpZiBoZWFkZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCB0b3RfbGVuID0gdl9sZW4gKyBzaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICAgIGxldCBidWYgPSBjcmVhdGVfYnVmIHRvdF9sZW4gaW5cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3M6MCB2X2xlbiBpblxuICAgICAgYnVmLCBwb3MsIHBvcyArIHZfbGVuKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdl9sZW4gaW5cbiAgICAgIGJ1ZiwgMCwgdl9sZW4pXG4gIGluXG4gIGxldCBwb3MgPSB3cml0ZXIud3JpdGUgYnVmIH5wb3MgdiBpblxuICBpZiBwb3MgPSBwb3NfbGVuXG4gIHRoZW4gYnVmXG4gIGVsc2UgZmFpbHdpdGggXCJCaW5fcHJvdC5VdGlscy5iaW5fZHVtcDogc2l6ZSBjaGFuZ2VkIGR1cmluZyB3cml0aW5nXCJcbjs7XG5cbigqIFJlYWRpbmcgZnJvbSBzdHJlYW1zICopXG5cbmxldCBiaW5fcmVhZF9zdHJlYW0gP21heF9zaXplIH5yZWFkIHJlYWRlciA9XG4gIGxldCBidWYgPSBjcmVhdGVfYnVmIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICByZWFkIGJ1ZiB+cG9zOjAgfmxlbjpzaXplX2hlYWRlcl9sZW5ndGg7XG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGxlbiA9IGJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICBtYXRjaCBtYXhfc2l6ZSB3aXRoXG4gIHwgU29tZSBtYXhfc2l6ZSB3aGVuIGxlbiA+IG1heF9zaXplIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHNpemUgZXhjZWVkcyBtYXhfc2l6ZTogJWQgPiAlZFwiXG4gICAgICAgICBsZW5cbiAgICAgICAgIG1heF9zaXplKVxuICB8IF8gLT5cbiAgICBsZXQgYnVmID0gaWYgbGVuID4gc2l6ZV9oZWFkZXJfbGVuZ3RoIHRoZW4gY3JlYXRlX2J1ZiBsZW4gZWxzZSBidWYgaW5cbiAgICByZWFkIGJ1ZiB+cG9zOjAgfmxlbjtcbiAgICBwb3NfcmVmIDo9IDA7XG4gICAgbGV0IHJlcyA9IHJlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGlmICFwb3NfcmVmID0gbGVuXG4gICAgdGhlbiByZXNcbiAgICBlbHNlIChcbiAgICAgIGxldCBtc2cgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiQmluX3Byb3QuVXRpbHMuYmluX3JlYWRfc3RyZWFtOiBwcm90b2NvbCBsaWVkIGFib3V0IGxlbmd0aCBvZiB2YWx1ZTogZXhwZWN0ZWQgXFxcbiAgICAgICAgICAgJWQsIHJlY2VpdmVkICVkXCJcbiAgICAgICAgICBsZW5cbiAgICAgICAgICAhcG9zX3JlZlxuICAgICAgaW5cbiAgICAgIGZhaWx3aXRoIG1zZylcbjs7XG5cbigqIENvbnZlcnNpb24gb2YgYmluYWJsZSB0eXBlcyAqKVxuXG5tb2R1bGUgT2ZfbWluaW1hbCAoUyA6IEJpbmFibGUuTWluaW1hbC5TKSA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSBTLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTXG5cbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5sZXQgbWF5YmVfYW5ub3RhdGVfc2hhcGUgbWF5YmVfdXVpZCBzaGFwZSA9XG4gIG1hdGNoIG1heWJlX3V1aWQgd2l0aFxuICB8IE5vbmUgLT4gc2hhcGVcbiAgfCBTb21lIHV1aWQgLT4gU2hhcGUuYW5ub3RhdGUgdXVpZCBzaGFwZVxuOztcblxubW9kdWxlIE1ha2VfYmluYWJsZV9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBPZl9taW5pbWFsIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgICAgIHR5cGUgdCA9IFMudFxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBtYXliZV9hbm5vdGF0ZV9zaGFwZSBTLm1heWJlX2NhbGxlcl9pZGVudGl0eSBCLmJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gQi5iaW5fc2l6ZV90IChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID0gQi5iaW5fd3JpdGVfdCBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPSBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBidWYgfnBvc19yZWYpXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gYnVmIH5wb3NfcmVmIG4gPSBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYnVmIH5wb3NfcmVmIG4pXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZSBTLm1heWJlX2NhbGxlcl9pZGVudGl0eSAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwgdCA9IEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbCAoUy50b19iaW5hYmxlIHQpXG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbCBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbCBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyLnNpemUgdilcbiAgICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyID1cbiAgICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBiaW5fcmVhZF90IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMS5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl9nZW4gKFMgOiBzaWdcbiAgICBpbmNsdWRlIE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWNcblxuICAgIHZhbCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgOiBTaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gUy5CaW5hYmxlXG5cbiAgbGV0IGJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMiA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmKVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyIGJpbl9zaGFwZV9lbDMgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlXG4gICAgICBTLm1heWJlX2NhbGxlcl9pZGVudGl0eVxuICAgICAgKEIuYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyIGJpbl9zaGFwZV9lbDMpXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgdCA9XG4gICAgQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsMSBiaW5fc2l6ZV9lbDIgYmluX3NpemVfZWwzIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJpbl93cml0ZV9lbDMgYnVmIH5wb3MgdCA9XG4gICAgQi5iaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyAoUy50b19iaW5hYmxlIHQpXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmID1cbiAgICBTLm9mX2JpbmFibGUgKEIuYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZiBuID1cbiAgICBTLm9mX2JpbmFibGUgKEIuX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4pXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZXJfdCBiaW5fd3JpdGVyMSBiaW5fd3JpdGVyMiBiaW5fd3JpdGVyMyA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlcjEuc2l6ZSBiaW5fd3JpdGVyMi5zaXplIGJpbl93cml0ZXIzLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAgIGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJpbl93cml0ZXIzLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgYmluX3JlYWRlcjMgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICAgIGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTMuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRoX3V1aWRfc3BlYykgPSBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGVfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTJfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUzX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbmxldCB3aXRoX21vZHVsZV9uYW1lIGYgfm1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWUgPVxuICBtYXRjaCBtb2R1bGVfbmFtZSB3aXRoXG4gIHwgTm9uZSAtPiBmIGZ1bmN0aW9uX25hbWVcbiAgfCBTb21lIG1vZHVsZV9uYW1lIC0+IFByaW50Zi5rc3ByaW50ZiBmIFwiJXMuJXNcIiBtb2R1bGVfbmFtZSBmdW5jdGlvbl9uYW1lXG47O1xuXG5sZXQgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gPSB3aXRoX21vZHVsZV9uYW1lIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uXG5cbmxldCByYWlzZV9yZWFkX3Rvb19tdWNoID1cbiAgd2l0aF9tb2R1bGVfbmFtZVxuICAgIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogdHJpZWQgdG8gcmVhZCBtb3JlIGVsZW1lbnRzIHRoYW4gYXZhaWxhYmxlXCIpXG47O1xuXG5sZXQgcmFpc2VfcmVhZF9ub3RfZW5vdWdoID1cbiAgd2l0aF9tb2R1bGVfbmFtZSAoUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoIFwiJXM6IGRpZG4ndCByZWFkIGFsbCBlbGVtZW50c1wiKVxuOztcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZV9zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCI2NTkyMzcxYS00OTk0LTExZTYtOTIzYS03NzQ4ZTQxODI3NjRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF9uID0gcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG4gIGxldCBiaW5fd3JpdGVyX3QgPSB7IHNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cbiAgbGV0IGJpbl9yZWFkZXJfdCA9IHsgcmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgbGV0IGJpbl90ID0geyBzaGFwZSA9IGJpbl9zaGFwZV90OyB3cml0ZXIgPSBiaW5fd3JpdGVyX3Q7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTEgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUxX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0ID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYWM4YTlmZjQtNDk5NC0xMWU2LTlhMWItOWZiNGU5MzNiZDlkXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIF9uIC0+IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgX24pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzcy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3Mud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzcy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTIgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUyX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImI0ZTU0YWQyLTQ5OTQtMTFlNi1iOGRmLTg3YzI5OTdmOWY1MlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiBiaW5fc2l6ZV9uYXQwIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuKSArICFzaXplX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3NpemVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJ1ZiB+cG9zIHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIChXcml0ZS5iaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuKSBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgcG9zX3JlZiA6PSBiaW5fd3JpdGVfZWwgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3M6IXBvc19yZWYgZWw7XG4gICAgICBpbmNyIGNudF9yZWYpO1xuICAgIGlmICFjbnRfcmVmID0gbGVuXG4gICAgdGhlbiAhcG9zX3JlZlxuICAgIGVsc2UgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gfm1vZHVsZV9uYW1lIFwiYmluX3dyaXRlX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYmluX3JlYWRfYiBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYmluX3JlYWRfYiBfYnVmIH5wb3NfcmVmIF9uID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgdilcbiAgICA7IHdyaXRlID1cbiAgICAgICAgKGZ1biBidWYgfnBvcyB2IC0+IGJpbl93cml0ZV90IGJpbl93cml0ZXIxLndyaXRlIGJpbl93cml0ZXIyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlcjEgYmluX3JlYWRlcjIgPVxuICAgIHsgcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlM19zcGVjKSA9IHN0cnVjdFxuICBvcGVuIFNcblxuICBsZXQgYmluX3NoYXBlX3QgdDEgdDIgdDMgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJmMjExMmVkYS1lN2Q3LTExZTYtYmIzNi0wNzJlOWNlMTU5ZGJcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdDEgdDIgdDMgXVxuICAgICAgICBdKVxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV90IGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIHQgPVxuICAgIGxldCBzaXplX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBzaXplX3JlZiA6PSAhc2l6ZV9yZWYgKyBiaW5fc2l6ZV9lbCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgYmluX3NpemVfYyBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gKFJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICAgIGxldCBpZHggPSByZWYgMCBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpZHggPj0gbGVuIHRoZW4gcmFpc2VfcmVhZF90b29fbXVjaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgICBpbmNyIGlkeDtcbiAgICAgIGJpbl9yZWFkX2VsIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZlxuICAgIGluXG4gICAgbGV0IHJlc3VsdCA9IGluaXQgfmxlbiB+bmV4dCBpblxuICAgIGlmICFpZHggPCBsZW4gdGhlbiByYWlzZV9yZWFkX25vdF9lbm91Z2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgIHJlc3VsdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfYmluX3JlYWRfYSBfYmluX3JlYWRfYiBfYmluX3JlYWRfYyBfYnVmIH5wb3NfcmVmIF9uID1cbiAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiBuIC0+XG4gICAgICAgICAgIF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZiBuKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzczEgdHlwZV9jbGFzczIgdHlwZV9jbGFzczMgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzMS5zaGFwZSB0eXBlX2NsYXNzMi5zaGFwZSB0eXBlX2NsYXNzMy5zaGFwZVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90IHR5cGVfY2xhc3MxLndyaXRlciB0eXBlX2NsYXNzMi53cml0ZXIgdHlwZV9jbGFzczMud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgdHlwZV9jbGFzczEucmVhZGVyIHR5cGVfY2xhc3MyLnJlYWRlciB0eXBlX2NsYXNzMy5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcbiIsIigqKlxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBkZWZhdWx0IGNvbnZlcnRlcnMgZm9yIHRoZSB0eXBlcyBkZWZpbmVkIGluIHRoZSBPQ2FtbFxuICAgc3RhbmRhcmQgbGlicmFyeS5cbiopXG5cbmluY2x1ZGUgU2l6ZVxuXG5sZXQgYmluX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl91bml0XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV91bml0XG5sZXQgYmluX3dyaXRlcl91bml0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3VuaXRcbmxldCBiaW5fd3JpdGVfdW5pdCA9IFdyaXRlLmJpbl93cml0ZV91bml0XG5sZXQgYmluX3JlYWRlcl91bml0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3VuaXRcbmxldCBiaW5fcmVhZF91bml0ID0gUmVhZC5iaW5fcmVhZF91bml0XG5cbmxldCBfX2Jpbl9yZWFkX3VuaXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9ib29sID0gVHlwZV9jbGFzcy5iaW5fYm9vbFxubGV0IGJpbl9zaGFwZV9ib29sID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYm9vbFxubGV0IGJpbl93cml0ZXJfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9ib29sXG5sZXQgYmluX3dyaXRlX2Jvb2wgPSBXcml0ZS5iaW5fd3JpdGVfYm9vbFxubGV0IGJpbl9yZWFkZXJfYm9vbCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9ib29sXG5sZXQgYmluX3JlYWRfYm9vbCA9IFJlYWQuYmluX3JlYWRfYm9vbFxuXG5sZXQgX19iaW5fcmVhZF9ib29sX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJib29sXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc3RyaW5nXG5sZXQgYmluX3NoYXBlX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3N0cmluZ1xubGV0IGJpbl93cml0ZXJfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3N0cmluZ1xubGV0IGJpbl93cml0ZV9zdHJpbmcgPSBXcml0ZS5iaW5fd3JpdGVfc3RyaW5nXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfc3RyaW5nXG5sZXQgYmluX3JlYWRfc3RyaW5nID0gUmVhZC5iaW5fcmVhZF9zdHJpbmdcblxubGV0IF9fYmluX3JlYWRfc3RyaW5nX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJzdHJpbmdcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX2J5dGVzXG5sZXQgYmluX3NoYXBlX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYnl0ZXNcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2J5dGVzXG5sZXQgYmluX3dyaXRlX2J5dGVzID0gV3JpdGUuYmluX3dyaXRlX2J5dGVzXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9ieXRlc1xubGV0IGJpbl9yZWFkX2J5dGVzID0gUmVhZC5iaW5fcmVhZF9ieXRlc1xuXG5sZXQgX19iaW5fcmVhZF9ieXRlc19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYnl0ZXNcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fY2hhclxubGV0IGJpbl9zaGFwZV9jaGFyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfY2hhclxubGV0IGJpbl93cml0ZXJfY2hhciA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9jaGFyXG5sZXQgYmluX3dyaXRlX2NoYXIgPSBXcml0ZS5iaW5fd3JpdGVfY2hhclxubGV0IGJpbl9yZWFkZXJfY2hhciA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9jaGFyXG5sZXQgYmluX3JlYWRfY2hhciA9IFJlYWQuYmluX3JlYWRfY2hhclxuXG5sZXQgX19iaW5fcmVhZF9jaGFyX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faW50ID0gVHlwZV9jbGFzcy5iaW5faW50XG5sZXQgYmluX3NoYXBlX2ludCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2ludFxubGV0IGJpbl93cml0ZXJfaW50ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludFxubGV0IGJpbl93cml0ZV9pbnQgPSBXcml0ZS5iaW5fd3JpdGVfaW50XG5sZXQgYmluX3JlYWRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaW50XG5sZXQgYmluX3JlYWRfaW50ID0gUmVhZC5iaW5fcmVhZF9pbnRcbmxldCBfX2Jpbl9yZWFkX2ludF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50XCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdFxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0XG5sZXQgYmluX3dyaXRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdFxubGV0IGJpbl93cml0ZV9mbG9hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRcbmxldCBiaW5fcmVhZF9mbG9hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0YXJyYXlcbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0YXJyYXlcbmxldCBiaW5fd3JpdGVyX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZV9mbG9hdGFycmF5ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0YXJyYXlcbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkX2Zsb2F0YXJyYXkgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXlcblxubGV0IF9fYmluX3JlYWRfZmxvYXRhcnJheV9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludDMyID0gVHlwZV9jbGFzcy5iaW5faW50MzJcbmxldCBiaW5fc2hhcGVfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnQzMlxubGV0IGJpbl93cml0ZXJfaW50MzIgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50MzJcbmxldCBiaW5fd3JpdGVfaW50MzIgPSBXcml0ZS5iaW5fd3JpdGVfaW50MzJcbmxldCBiaW5fcmVhZGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludDMyXG5sZXQgYmluX3JlYWRfaW50MzIgPSBSZWFkLmJpbl9yZWFkX2ludDMyXG5cbmxldCBfX2Jpbl9yZWFkX2ludDMyX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnQzMlwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5faW50NjRcbmxldCBiaW5fc2hhcGVfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9pbnQ2NFxubGV0IGJpbl93cml0ZXJfaW50NjQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50NjRcbmxldCBiaW5fd3JpdGVfaW50NjQgPSBXcml0ZS5iaW5fd3JpdGVfaW50NjRcbmxldCBiaW5fcmVhZGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2ludDY0XG5sZXQgYmluX3JlYWRfaW50NjQgPSBSZWFkLmJpbl9yZWFkX2ludDY0XG5cbmxldCBfX2Jpbl9yZWFkX2ludDY0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnQ2NFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX25hdGl2ZWludFxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9uYXRpdmVpbnRcbmxldCBiaW5fd3JpdGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9uYXRpdmVpbnRcbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50ID0gV3JpdGUuYmluX3dyaXRlX25hdGl2ZWludFxubGV0IGJpbl9yZWFkZXJfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdGl2ZWludFxubGV0IGJpbl9yZWFkX25hdGl2ZWludCA9IFJlYWQuYmluX3JlYWRfbmF0aXZlaW50XG5cbmxldCBfX2Jpbl9yZWFkX25hdGl2ZWludF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibmF0aXZlaW50XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVmXG5sZXQgYmluX3NoYXBlX3JlZiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3JlZlxubGV0IGJpbl93cml0ZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3JlZlxubGV0IGJpbl93cml0ZV9yZWYgPSBXcml0ZS5iaW5fd3JpdGVfcmVmXG5sZXQgYmluX3JlYWRlcl9yZWYgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfcmVmXG5sZXQgYmluX3JlYWRfcmVmID0gUmVhZC5iaW5fcmVhZF9yZWZcblxubGV0IF9fYmluX3JlYWRfcmVmX18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJyZWZcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9sYXp5XG5sZXQgYmluX3NoYXBlX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenlfdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9sYXp5XG5sZXQgYmluX3dyaXRlX2xhenlfdCA9IFdyaXRlLmJpbl93cml0ZV9sYXp5XG5sZXQgYmluX3JlYWRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenlfdCA9IFJlYWQuYmluX3JlYWRfbGF6eVxuXG5sZXQgX19iaW5fcmVhZF9sYXp5X3RfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImxhenlcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGF6eVxubGV0IGJpbl93cml0ZXJfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9sYXp5XG5sZXQgYmluX3dyaXRlX2xhenkgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9sYXp5XG5sZXQgYmluX3JlYWRfbGF6eSA9IFJlYWQuYmluX3JlYWRfbGF6eVxuXG5sZXQgX19iaW5fcmVhZF9sYXp5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fb3B0aW9uXG5sZXQgYmluX3NoYXBlX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX29wdGlvblxubGV0IGJpbl93cml0ZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX29wdGlvblxubGV0IGJpbl93cml0ZV9vcHRpb24gPSBXcml0ZS5iaW5fd3JpdGVfb3B0aW9uXG5sZXQgYmluX3JlYWRlcl9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfb3B0aW9uXG5sZXQgYmluX3JlYWRfb3B0aW9uID0gUmVhZC5iaW5fcmVhZF9vcHRpb25cblxubGV0IF9fYmluX3JlYWRfb3B0aW9uX18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJvcHRpb25cIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9saXN0ID0gVHlwZV9jbGFzcy5iaW5fbGlzdFxubGV0IGJpbl9zaGFwZV9saXN0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbGlzdFxubGV0IGJpbl93cml0ZXJfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9saXN0XG5sZXQgYmluX3dyaXRlX2xpc3QgPSBXcml0ZS5iaW5fd3JpdGVfbGlzdFxubGV0IGJpbl9yZWFkZXJfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9saXN0XG5sZXQgYmluX3JlYWRfbGlzdCA9IFJlYWQuYmluX3JlYWRfbGlzdFxuXG5sZXQgX19iaW5fcmVhZF9saXN0X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsaXN0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9hcnJheVxubGV0IGJpbl9zaGFwZV9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2FycmF5XG5sZXQgYmluX3dyaXRlcl9hcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9hcnJheVxubGV0IGJpbl93cml0ZV9hcnJheSA9IFdyaXRlLmJpbl93cml0ZV9hcnJheVxubGV0IGJpbl9yZWFkZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfYXJyYXlcbmxldCBiaW5fcmVhZF9hcnJheSA9IFJlYWQuYmluX3JlYWRfYXJyYXlcblxubGV0IF9fYmluX3JlYWRfYXJyYXlfXyBfZiBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5faGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX2hhc2h0YmxcbmxldCBiaW5fc2hhcGVfaGFzaHRibCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVyX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaGFzaHRibFxubGV0IGJpbl93cml0ZV9oYXNodGJsID0gV3JpdGUuYmluX3dyaXRlX2hhc2h0YmxcbmxldCBiaW5fcmVhZGVyX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfaGFzaHRibFxubGV0IGJpbl9yZWFkX2hhc2h0YmwgPSBSZWFkLmJpbl9yZWFkX2hhc2h0YmxcblxubGV0IF9fYmluX3JlYWRfaGFzaHRibF9fIF9mIF9nIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaGFzaHRibFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX2JpZ3N0cmluZ1xubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9iaWdzdHJpbmdcbmxldCBiaW5fd3JpdGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9iaWdzdHJpbmdcbmxldCBiaW5fd3JpdGVfYmlnc3RyaW5nID0gV3JpdGUuYmluX3dyaXRlX2JpZ3N0cmluZ1xubGV0IGJpbl9yZWFkZXJfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2JpZ3N0cmluZ1xubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyA9IFJlYWQuYmluX3JlYWRfYmlnc3RyaW5nXG5cbmxldCBfX2Jpbl9yZWFkX2JpZ3N0cmluZ19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiYmlnc3RyaW5nXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbWF0ID0gVHlwZV9jbGFzcy5iaW5fbWF0XG5sZXQgYmluX3NoYXBlX21hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX21hdFxubGV0IGJpbl93cml0ZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX21hdFxubGV0IGJpbl93cml0ZV9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfbWF0XG5sZXQgYmluX3JlYWRlcl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbWF0XG5sZXQgYmluX3JlYWRfbWF0ID0gUmVhZC5iaW5fcmVhZF9tYXRcbmxldCBfX2Jpbl9yZWFkX21hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibWF0XCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDMyX21hdFxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZV9mbG9hdDMyX21hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX21hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl9tYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXQzMl9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfbWF0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDY0X21hdFxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZV9mbG9hdDY0X21hdCA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X21hdFxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZF9mbG9hdDY0X21hdCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IF9fYmluX3JlYWRfZmxvYXQ2NF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfbWF0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fdmVjID0gVHlwZV9jbGFzcy5iaW5fdmVjXG5sZXQgYmluX3NoYXBlX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3ZlY1xubGV0IGJpbl93cml0ZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX3ZlY1xubGV0IGJpbl93cml0ZV92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfdmVjXG5sZXQgYmluX3JlYWRlcl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdmVjXG5sZXQgYmluX3JlYWRfdmVjID0gUmVhZC5iaW5fcmVhZF92ZWNcbmxldCBfX2Jpbl9yZWFkX3ZlY19fIF9idWYgfnBvc19yZWYgX3ZpbnQgPSBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidmVjXCIgIXBvc19yZWZcbmxldCBiaW5fZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDMyX3ZlY1xubGV0IGJpbl9zaGFwZV9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZV9mbG9hdDMyX3ZlYyA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZF9mbG9hdDMyX3ZlYyA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl92ZWNcblxubGV0IF9fYmluX3JlYWRfZmxvYXQzMl92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfdmVjXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9mbG9hdDY0X3ZlY1xubGV0IGJpbl9zaGFwZV9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3dyaXRlcl9mbG9hdDY0X3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZV9mbG9hdDY0X3ZlYyA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZF9mbG9hdDY0X3ZlYyA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF92ZWNcblxubGV0IF9fYmluX3JlYWRfZmxvYXQ2NF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfdmVjXCIgIXBvc19yZWZcbjs7XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWQ1X2xpYlxuXG4gICAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICAgIFNoYXBlLmJhc2V0eXBlIChTaGFwZS5VdWlkLm9mX3N0cmluZyBcImY2YmRjZGQwLTlmNzUtMTFlNi05YTdlLWQzMDIwNDI4ZWZlZFwiKSBbXVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NpemVfdCA9IFNpemUuYmluX3NpemVfbWQ1XG4gICAgbGV0IGJpbl93cml0ZV90ID0gV3JpdGUuYmluX3dyaXRlX21kNVxuICAgIGxldCBiaW5fcmVhZF90ID0gUmVhZC5iaW5fcmVhZF9tZDVcblxuICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92ZGlnZXN0ID1cbiAgICAgIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJTaGFwZS5NZDUudFwiICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAoKiB3ZSBhc3N1bWUgdGhpcyB0eXBlIHRvIGhhdmUgYSBzdGFibGUgZm9ybWF0ICopXG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4gQ29tbW9uXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWEyNTU3ZS00OTBhLTExZTYtOThhYy00Yjg5NTNkNTI1ZmVcIikgWyB0IF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBhID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgYmluX3NpemVfYSBhXG5cbiAgbGV0IGJpbl93cml0ZV90IGJpbl93cml0ZV9hIGJ1ZiB+cG9zIGEgPVxuICAgIGxldCBzdGFydF9hID0gcG9zICsgVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gICAgbGV0IGVuZF9hID0gYmluX3dyaXRlX2EgYnVmIH5wb3M6c3RhcnRfYSBhIGluXG4gICAgbGV0IHNpemUgPSBlbmRfYSAtIHN0YXJ0X2EgaW5cbiAgICBsZXQgd3JpdHRlbiA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgYXNzZXJ0ICh3cml0dGVuID0gc3RhcnRfYSk7XG4gICAgZW5kX2FcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGV4cGVjdGVkX3NpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICBsZXQgc3RhcnRfYSA9ICFwb3NfcmVmIGluXG4gICAgbGV0IGEgPSBiaW5fcmVhZF9hIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBlbmRfYSA9ICFwb3NfcmVmIGluXG4gICAgaWYgZW5kX2EgLSBzdGFydF9hIDw+IGV4cGVjdGVkX3NpemVcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgXCJCaW5fcHJvdC5CbG9iLmJpbl9yZWFkX3Q6IHNpemUgKCVkKSA8PiBleHBlY3RlZCAoJWQpXCJcbiAgICAgICAgICAgKGVuZF9hIC0gc3RhcnRfYSlcbiAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSk7XG4gICAgYVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyBfIF8gfnBvc19yZWYgPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IudFwiICFwb3NfcmVmXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpZCA9ICdhXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIFV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICBtb2R1bGUgQmluYWJsZSA9IFRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgdCA9IHRcbiAgICBsZXQgdG9fYmluYWJsZSB0ID0gdFxuICBlbmQpXG5cbm1vZHVsZSBPcGFxdWUgPSBzdHJ1Y3RcbiAgKCogW0JpZ3N0cmluZ10gYW5kIFtTdHJpbmddIHNoYXJlIFtiaW5fc2hhcGVfdF0gYmVjYXVzZSB0aGV5IGhhdmUgZXhhY3RseSB0aGUgc2FtZVxuICAgICBzZXJpYWxpemF0aW9uIGZvcm1hdCBhbmQgdGhleSBkZW5vdGUgdGhlIHNhbWUgdmFsdWVzLlxuXG4gICAgIEluIGZhY3QgYWxtb3N0IGNlcnRhaW5seSBbQmxvYi50XSBpdHNlbGYgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYmluX3NoYXBlX3QgYXMgd2VsbC4gKilcbiAgbGV0IGJpbl9zaGFwZV90ID1cbiAgICBTaGFwZS4oYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiODVhMWY3NmUtNDkwYS0xMWU2LTg2YTktNWJlZjU4NWYyNjAyXCIpIFtdKVxuICA7O1xuXG4gIG1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgICAoKiBbYnVmXSBpcyB0aGUgYmluLWlvIGRhdGEgZXhjbHVkaW5nIHRoZSBzaXplIGhlYWRlci4gV2hlbiAoZGUtKXNlcmlhbGl6ZWQsIHRoZSBzaXplXG4gICAgICAgaGVhZGVyIGlzIGluY2x1ZGVkLiAqKVxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBidWZcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBidWZfbGVuIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IGJ1Zl9sZW4gdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIHNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgIGxldCBzaXplID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gY3JlYXRlX2J1ZiBzaXplIGluXG4gICAgICAgIGJsaXRfYnVmIH5zcmM6YnVmIH5zcmNfcG9zOiFwb3NfcmVmIH5kc3Q6dCB+ZHN0X3BvczowIHNpemU7XG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuT3BhcXVlLnRcIiAhcG9zX3JlZlxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgVXRpbHMuT2ZfbWluaW1hbCAoVClcblxuICAgIGxldCB0b19vcGFxdWUgYmxvYiBiaW5fd3JpdGVyID0gVXRpbHMuYmluX2R1bXAgYmluX3dyaXRlciBibG9iXG4gICAgbGV0IG9mX29wYXF1ZV9leG4gKHQgOiB0KSBiaW5fcmVhZGVyID0gYmluX3JlYWRlci5UeXBlX2NsYXNzLnJlYWQgdCB+cG9zX3JlZjoocmVmIDApXG5cbiAgICAoKiBCaWdzdHJpbmdzIGFyZSBhIHByaW1pdGl2ZSB0eXBlIHRoYXQgcG9seW1vcnBoaWMgY29tcGFyZSBoYW5kbGVzIHdlbGwuICopXG4gICAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiBidWYgLT4gYnVmIC0+IGludClcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICBQcHhfc2V4cF9jb252X2xpYi5TZXhwLkF0b20gKG9mX29wYXF1ZV9leG4gdCBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfc3RyaW5nKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IGJpbl9zaGFwZV90XG4gICAgICBsZXQgYmluX3NpemVfdCB0ID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgU3RyaW5nLmxlbmd0aCB0XG5cbiAgICAgIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICAgICAgbGV0IHNpemUgPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgICAgICAgbGV0IHBvcyA9IFV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvcyBzaXplIGluXG4gICAgICAgIENvbW1vbi5ibGl0X3N0cmluZ19idWYgdCB+c3JjX3BvczowIGJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICAgICAgICBwb3MgKyBzaXplXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgICAgICAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgYmxpdF9idWZfYnl0ZXMgfnNyY19wb3M6cG9zIGJ1ZiB+ZHN0X3BvczowIHN0ciB+bGVuO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IGxlbiA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBsZXQgdCA9IHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3M6IXBvc19yZWYgfmxlbiBpblxuICAgICAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgbGVuO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuT3BhcXVlLnRcIiAhcG9zX3JlZlxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgVXRpbHMuT2ZfbWluaW1hbCAoVClcblxuICAgIGxldCBsZW5ndGggdCA9IFN0cmluZy5sZW5ndGggdFxuXG4gICAgbGV0IHRvX29wYXF1ZSB+YnVmIHYgYmluX3dyaXRlcl92IDogdCA9XG4gICAgICBsZXQgcG9zID0gMCBpblxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXJfdi5UeXBlX2NsYXNzLndyaXRlIGJ1ZiB+cG9zIHYgaW5cbiAgICAgIHN0cmluZ19vZl9iaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgb2Zfb3BhcXVlX2V4biB+YnVmICh0IDogdCkgYmluX3JlYWRlcl92ID1cbiAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgICAgIENvbW1vbi5ibGl0X3N0cmluZ19idWYgdCBidWYgfmxlbjtcbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGxldCByZXMgPSBiaW5fcmVhZGVyX3YuVHlwZV9jbGFzcy5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgaWYgIXBvc19yZWYgPD4gbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgXCJPcGFxdWUgYmxvYiBoYXMgJWQgYnl0ZXMgYnV0IFtvZl9vcGFxdWVfZXhuXSByZWFkICVkXCJcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgIXBvc19yZWZcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggZXJyb3IpXG4gICAgICBlbHNlIHJlc1xuICAgIDs7XG5cbiAgICAoKiBTdHJpbmdzIGFyZSBhIHByaW1pdGl2ZSB0eXBlIHRoYXQgcG9seW1vcnBoaWMgY29tcGFyZSBoYW5kbGVzIHdlbGwuICopXG4gICAgbGV0IGNvbXBhcmUgPSAoU3RkbGliLmNvbXBhcmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGludClcbiAgICBsZXQgc2V4cF9vZl90ID0gUHB4X3NleHBfY29udl9saWIuQ29udi5zZXhwX29mX3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgSWdub3JlZCA9IHN0cnVjdFxuICAoKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYW4gaWdub3JlZCB2YWx1ZSBpcyBqdXN0IHRoZSBzaXplIG9mIHRoZSB2YWx1ZSBpdCB3YXMgY3JlYXRlZFxuICAgICBmcm9tIChpLmUuLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2VyZSBpZ25vcmVkIGZyb20gdGhlIGJ1ZmZlciB3ZSB3ZXJlIHJlYWRpbmdcbiAgICAgLS0gd2UgZXhjbHVkZSB0aGUgOCBieXRlIHNpemUgaGVhZGVyIGZyb20gd2hpY2ggdGhlIHNpemUgd2FzIHJlYWQpLiAqKVxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgYmluX3NpemVfdCBzaXplID0gVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoICsgc2l6ZVxuXG4gIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICBwb3NfcmVmIDo9ICFwb3NfcmVmICsgc2l6ZTtcbiAgICBzaXplXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gfnBvc19yZWYgPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LkJsb2IuSWdub3JlZC50XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90ID0geyBUeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIHByZV90ZXN0X2hvb2sgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5sZXQgcHJlX3Rlc3RfaG9vayA9IGlnbm9yZVxuIiwiWyUlaW1wb3J0IFwiY29uZmlnLmhcIl1cblxub3BlbiEgQmFzZVxuXG5bJSVpZmRlZiBKU0NfQVJDSF9TSVhUWUZPVVJdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5bQEBub2FsbG9jXVxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCBuYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cbiAgOiAgdW5pdFxuICAtPiBJbnQ2My50XG4gID0gXCJ0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm9cIlxuXG5bJSVlbmRpZl1cblslJWlmZGVmIEpTQ19QT1NJWF9USU1FUlNdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIGZhaWxlZFwiXG5cblslJWVsc2VdXG5cbmxldFtAY29sZF0gZ2V0dGltZV9mYWlsZWQgKCkgPSBmYWlsd2l0aCBcImdldHRpbWVvZmRheSBmYWlsZWRcIlxuXG5bJSVlbmRpZl1cblxubGV0IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgPVxuICBsZXQgdCA9IG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVybyAoKSBpblxuICBpZiBJbnQ2My4oIDw+ICkgdCBJbnQ2My56ZXJvIHRoZW4gdCBlbHNlIGdldHRpbWVfZmFpbGVkICgpXG47O1xuIiwibW9kdWxlIFRlc3RfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTdWNjZXNzXG4gICAgfCBGYWlsdXJlXG4gICAgfCBFcnJvclxuXG4gIGxldCB0b19leGl0X2NvZGUgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiAwXG4gICAgfCBGYWlsdXJlIC0+IDJcbiAgICB8IEVycm9yIC0+IDFcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFN1Y2Nlc3MgLT4gXCJzdWNjZXNzXCJcbiAgICB8IEZhaWx1cmUgLT4gXCJmYWlsdXJlXCJcbiAgICB8IEVycm9yIC0+IFwiZXJyb3JcIlxuICA7O1xuXG4gIGxldCBjb21iaW5lIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgU3VjY2VzcywgU3VjY2VzcyAtPiBTdWNjZXNzXG4gICAgfCBFcnJvciwgXyB8IF8sIEVycm9yIC0+IEVycm9yXG4gICAgfCBGYWlsdXJlLCBfIHwgXywgRmFpbHVyZSAtPiBGYWlsdXJlXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsIHRzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBTdWNjZXNzIHRzXG5lbmRcblxubGV0IHBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnID1cbiAgdHJ5IEFyZy5wYXJzZV9hcmd2IGFyZ3YgbCBmIG1zZyB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT5cbiAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgIGV4aXQgMVxuICB8IEFyZy5IZWxwIG1zZyAtPlxuICAgIFByaW50Zi5wcmludGYgXCIlc1wiIG1zZztcbiAgICBleGl0IDBcbjs7XG5cbnR5cGUgZGVzY3IgPSBzdHJpbmdcblxubGV0IHRlc3RfbW9kdWxlc19yYW4gPSByZWYgMFxubGV0IHRlc3RfbW9kdWxlc19mYWlsZWQgPSByZWYgMFxubGV0IHRlc3RzX3JhbiA9IHJlZiAwXG5sZXQgdGVzdHNfZmFpbGVkID0gcmVmIDBcbmxldCBkeW5hbWljX2xpYiA6IHN0cmluZyBvcHRpb24gcmVmID0gcmVmIE5vbmVcblxudHlwZSBmaWxlbmFtZSA9IHN0cmluZ1xudHlwZSBsaW5lX251bWJlciA9IGludFxudHlwZSBzdGFydF9wb3MgPSBpbnRcbnR5cGUgZW5kX3BvcyA9IGludFxudHlwZSBjb25maWcgPSAobW9kdWxlIElubGluZV90ZXN0X2NvbmZpZy5TKVxuXG50eXBlICdhIHRlc3RfZnVuY3Rpb25fYXJncyA9XG4gIGNvbmZpZzpjb25maWdcbiAgLT4gZGVzY3I6ZGVzY3IgTGF6eS50XG4gIC0+IHRhZ3M6c3RyaW5nIGxpc3RcbiAgLT4gZmlsZW5hbWU6ZmlsZW5hbWVcbiAgLT4gbGluZV9udW1iZXI6bGluZV9udW1iZXJcbiAgLT4gc3RhcnRfcG9zOnN0YXJ0X3Bvc1xuICAtPiBlbmRfcG9zOmVuZF9wb3NcbiAgLT4gJ2FcblxubW9kdWxlIFRhZ19wcmVkaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJlcXVpcmVkX3RhZ3MgOiBzdHJpbmcgbGlzdFxuICAgIDsgZHJvcHBlZF90YWdzIDogc3RyaW5nIGxpc3RcbiAgICB9XG5cbiAgbGV0IGluaXRpYWwgPSB7IHJlcXVpcmVkX3RhZ3MgPSBbXTsgZHJvcHBlZF90YWdzID0gWyBcImRpc2FibGVkXCIgXSB9XG5cbiAgbGV0IGRyb3AgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gdGFnIDo6IHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gTGlzdC5maWx0ZXIgKCggPD4gKSB0YWcpIHQucmVxdWlyZWRfdGFnc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVxdWlyZSB0IHRhZyA9XG4gICAgeyBkcm9wcGVkX3RhZ3MgPSBMaXN0LmZpbHRlciAoKCA8PiApIHRhZykgdC5kcm9wcGVkX3RhZ3NcbiAgICA7IHJlcXVpcmVkX3RhZ3MgPSB0YWcgOjogdC5yZXF1aXJlZF90YWdzXG4gICAgfVxuICA7O1xuXG4gIGxldCBlbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHQgfnBhcnRpYWxfdGFnczp0YWdzID1cbiAgICBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuICA7O1xuXG4gIGxldCBkaXNhYmxlZCB0IH5jb21wbGV0ZV90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gcmVxIC0+IG5vdCAoTGlzdC5tZW0gcmVxIHRhZ3MpKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIGRyb3BwZWQgLT4gTGlzdC5tZW0gZHJvcHBlZCB0YWdzKSB0LmRyb3BwZWRfdGFnc1xuICA7O1xuZW5kXG5cbnR5cGUgd2hpY2hfdGVzdHMgPVxuICB7IGxpYm5hbWUgOiBzdHJpbmdcbiAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gOiAoZmlsZW5hbWUgKiBsaW5lX251bWJlciBvcHRpb24gKiBib29sIHJlZikgbGlzdFxuICA7IG5hbWVfZmlsdGVyIDogc3RyaW5nIGxpc3RcbiAgOyB3aGljaF90YWdzIDogVGFnX3ByZWRpY2F0ZS50XG4gIH1cblxudHlwZSB0ZXN0X21vZGUgPVxuICB7IHdoaWNoX3Rlc3RzIDogd2hpY2hfdGVzdHNcbiAgOyB3aGF0X3RvX2RvIDogWyBgUnVuX3BhcnRpdGlvbiBvZiBzdHJpbmcgb3B0aW9uIHwgYExpc3RfcGFydGl0aW9ucyBdXG4gIH1cblxubW9kdWxlIEFjdGlvbiA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIFsgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgICBdXG5cbiAgdmFsIGdldCA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gICAgXVxuXG4gIGxldCBhY3Rpb24gOiB0IHJlZiA9IHJlZiBgSWdub3JlXG5cbiAgbGV0IGZvcmNlX2Ryb3AgPVxuICAgIHRyeVxuICAgICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiIDogc3RyaW5nKTtcbiAgICAgIHRydWVcbiAgICB3aXRoXG4gICAgfCBOb3RfZm91bmQgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZ2V0ICgpID1cbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGNvbXBpbGluZyB0byBqYXZhc2NyaXB0LlxuICAgICAgIEpzX29mX29jYW1sIGNhbiBzdGF0aWNhbGx5IGV2YWx1YXRlIFtTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiXVxuICAgICAgIGFuZCBpbmxpbmUgdGhlIHJlc3VsdCAoW2BJZ25vcmVdKSB3aGVuZXZlciBbZ2V0ICgpXSBpcyBjYWxsZWQuXG4gICAgICAgVW5pdCB0ZXN0cyBjYW4gdGhlbiBiZSB0cmVhdGVkIGFzIGRlYWRjb2RlIHNpbmNlIHRoZSBhcmd1bWVudCBbZl0gb2YgdGhlIFt0ZXN0XVxuICAgICAgIGZ1bmN0aW9uIGJlbG93IGlzIG5ldmVyIHVzZWQuICopXG4gICAgaWYgZm9yY2VfZHJvcCB0aGVuIGBJZ25vcmUgZWxzZSAhYWN0aW9uXG4gIDs7XG5cbiAgbGV0IHNldCB2ID0gYWN0aW9uIDo9IHZcbmVuZFxuXG5tb2R1bGUgUGFydGl0aW9uIDogc2lnXG4gIHZhbCBmb3VuZF90ZXN0IDogdW5pdCAtPiB1bml0XG4gIHZhbCBzZXRfY3VycmVudCA6IHN0cmluZyAtPiB1bml0XG4gIHZhbCBpc19jdXJyZW50IDogc3RyaW5nIG9wdGlvbiAtPiBib29sXG4gIHZhbCBhbGwgOiB1bml0IC0+IHN0cmluZyBsaXN0XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA9IEhhc2h0YmwuY3JlYXRlIDIzXG4gIGxldCBjdXJyZW50ID0gcmVmIFwiXCJcbiAgbGV0IHNldF9jdXJyZW50IHggPSBjdXJyZW50IDo9IHhcblxuICBsZXQgZm91bmRfdGVzdCAoKSA9XG4gICAgaWYgIWN1cnJlbnQgPD4gXCJcIiAmJiBub3QgKEhhc2h0YmwubWVtIGFsbCAhY3VycmVudCkgdGhlbiBIYXNodGJsLmFkZCBhbGwgIWN1cnJlbnQgKClcbiAgOztcblxuICBsZXQgaXNfY3VycmVudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgcCAtPiBwID0gIWN1cnJlbnRcbiAgOztcblxuICBsZXQgYWxsICgpID0gTGlzdC5zb3J0IFN0cmluZy5jb21wYXJlIChIYXNodGJsLmZvbGQgKGZ1biBrICgpIGFjYyAtPiBrIDo6IGFjYykgYWxsIFtdKVxuZW5kXG5cbm1vZHVsZSBNb2R1bGVfY29udGV4dCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgb25lX21vZHVsZSA9XG4gICAgICB7IGRlc2NyIDogc3RyaW5nXG4gICAgICA7IHRhZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgfVxuXG4gICAgdHlwZSB0ID0gb25lX21vZHVsZSBsaXN0XG5cbiAgICBsZXQgZGVzY3IgdCA9IExpc3QubWFwIChmdW4gbSAtPiBtLmRlc2NyKSB0XG4gICAgbGV0IHRhZ3MgdCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCAoZnVuIG0gLT4gbS50YWdzKSB0KVxuICBlbmRcblxuICBsZXQgY3VycmVudCA6IFQudCByZWYgPSByZWYgW11cblxuICBsZXQgd2l0aF8gfmRlc2NyIH50YWdzIGYgPVxuICAgIGxldCBwcmV2ID0gIWN1cnJlbnQgaW5cbiAgICBjdXJyZW50IDo9IHsgVC5kZXNjcjsgdGFncyB9IDo6IHByZXY7XG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGYgKCkgaW5cbiAgICAgIGN1cnJlbnQgOj0gcHJldjtcbiAgICAgIHhcbiAgICB3aXRoXG4gICAgfCBlIC0+XG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICByYWlzZSBlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRfZGVzY3IgKCkgPSBULmRlc2NyICFjdXJyZW50XG4gIGxldCBjdXJyZW50X3RhZ3MgKCkgPSBULnRhZ3MgIWN1cnJlbnRcbmVuZFxuXG5sZXQgdmVyYm9zZSA9IHJlZiBmYWxzZVxubGV0IHN0cmljdCA9IHJlZiBmYWxzZVxubGV0IHNob3dfY291bnRzID0gcmVmIGZhbHNlXG5sZXQgbGlzdF90ZXN0X25hbWVzID0gcmVmIGZhbHNlXG5sZXQgZGVsYXllZF9lcnJvcnMgPSByZWYgW11cbmxldCBzdG9wX29uX2Vycm9yID0gcmVmIGZhbHNlXG5sZXQgbG9nID0gcmVmIE5vbmVcbmxldCB0aW1lX3NlYyA9IHJlZiAwLlxubGV0IHVzZV9jb2xvciA9IHJlZiB0cnVlXG5sZXQgaW5fcGxhY2UgPSByZWYgZmFsc2VcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgTm9uZVxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSByZWYgTm9uZVxubGV0IGRpZmZfcGF0aF9wcmVmaXggPSByZWYgTm9uZVxuXG5sZXQgZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGZpbGVuYW1lIGxpbmUgc3RhcnRfcG9zIGVuZF9wb3MgPVxuICBsZXQgKGxhenkgZGVzY3IpID0gZGVzY3IgaW5cbiAgUHJpbnRmLnNwcmludGZcbiAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQlc1wiXG4gICAgZmlsZW5hbWVcbiAgICBsaW5lXG4gICAgc3RhcnRfcG9zXG4gICAgZW5kX3Bvc1xuICAgIChpZiBkZXNjciA9IFwiXCIgdGhlbiBcIlwiIGVsc2UgXCI6IFwiIF4gZGVzY3IpXG47O1xuXG5sZXQgcGFyc2VfZGVzY3Igc3RyID1cbiAgdHJ5XG4gICAgU29tZVxuICAgICAgKFNjYW5mLnNzY2FuZlxuICAgICAgICAgc3RyXG4gICAgICAgICBcIiBGaWxlICVTICwgbGluZSAlZCAsIGNoYXJhY3RlcnMgJWQgLSAlZCAlIVwiXG4gICAgICAgICAoZnVuIGZpbGUgbGluZSBfc3RhcnRfcG9zIF9lbmRfcG9zIC0+IGZpbGUsIFNvbWUgbGluZSkpXG4gIHdpdGhcbiAgfCBfIC0+XG4gICAgKHRyeVxuICAgICAgIFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAsIGxpbmUgJWQgJSFcIiAoZnVuIGZpbGUgbGluZSAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICAgICB3aXRoXG4gICAgIHwgXyAtPlxuICAgICAgICh0cnkgU29tZSAoU2NhbmYuc3NjYW5mIHN0ciBcIiBGaWxlICVTICUhXCIgKGZ1biBmaWxlIC0+IGZpbGUsIE5vbmUpKSB3aXRoXG4gICAgICAgIHwgXyAtPiBOb25lKSlcbjs7XG5cbmxldCAoKSA9XG4gIGlmIEJhc2UuRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMuYW1fdGVzdGluZ1xuICB0aGVuIChcbiAgICBtYXRjaCBBcnJheS50b19saXN0IFN5cy5hcmd2IHdpdGhcbiAgICB8IG5hbWUgOjogXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiA6OiBsaWIgOjogcmVzdCAtPlxuICAgICAgKCogd2hlbiB3ZSBzZWUgdGhpcyBhcmd1bWVudCwgd2Ugc3dpdGNoIHRvIHRlc3QgbW9kZSAqKVxuICAgICAgbGV0IHRlc3RzID0gcmVmIFtdIGluXG4gICAgICBsZXQgbGlzdF9wYXJ0aXRpb25zID0gcmVmIGZhbHNlIGluXG4gICAgICBsZXQgcGFydGl0aW9uID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCB0YWdfcHJlZGljYXRlID0gcmVmIFRhZ19wcmVkaWNhdGUuaW5pdGlhbCBpblxuICAgICAgbGV0IG5hbWVfZmlsdGVyID0gcmVmIFtdIGluXG4gICAgICBwYXJzZV9hcmd2XG4gICAgICAgIChBcnJheS5vZl9saXN0IChuYW1lIDo6IHJlc3QpKVxuICAgICAgICAoQXJnLmFsaWduXG4gICAgICAgICAgIFsgKCBcIi1saXN0LXRlc3QtbmFtZXNcIlxuICAgICAgICAgICAgICwgQXJnLlVuaXRcbiAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICBsaXN0X3Rlc3RfbmFtZXMgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA6PSB0cnVlKVxuICAgICAgICAgICAgICwgXCIgRG8gbm90IHJ1biB0ZXN0cyBidXQgc2hvdyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBydW5cIiApXG4gICAgICAgICAgIDsgKCBcIi1saXN0LXBhcnRpdGlvbnNcIlxuICAgICAgICAgICAgICwgQXJnLlVuaXQgKGZ1biAoKSAtPiBsaXN0X3BhcnRpdGlvbnMgOj0gdHJ1ZSlcbiAgICAgICAgICAgICAsIFwiIExpc3RzIGFsbCB0aGUgcGFydGl0aW9ucyB0aGF0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIHRlc3Qgb3IgdGVzdF9tb2R1bGVcIiApXG4gICAgICAgICAgIDsgKCBcIi1wYXJ0aXRpb25cIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIGkgLT4gcGFydGl0aW9uIDo9IFNvbWUgaSlcbiAgICAgICAgICAgICAsIFwiIE9ubHkgcnVuIHRoZSB0ZXN0cyBpbiB0aGUgZ2l2ZW4gcGFydGl0aW9uXCIgKVxuICAgICAgICAgICA7IFwiLXZlcmJvc2VcIiwgQXJnLlNldCB2ZXJib3NlLCBcIiBTaG93IHRoZSB0ZXN0cyBhcyB0aGV5IHJ1blwiXG4gICAgICAgICAgIDsgKCBcIi1zdG9wLW9uLWVycm9yXCJcbiAgICAgICAgICAgICAsIEFyZy5TZXQgc3RvcF9vbl9lcnJvclxuICAgICAgICAgICAgICwgXCIgUnVuIHRlc3RzIG9ubHkgdXAgdG8gdGhlIGZpcnN0IGVycm9yIChkb2Vzbid0IHdvcmsgZm9yIGV4cGVjdCB0ZXN0cylcIiApXG4gICAgICAgICAgIDsgXCItc3RyaWN0XCIsIEFyZy5TZXQgc3RyaWN0LCBcIiBFbmQgd2l0aCBhbiBlcnJvciBpZiBubyB0ZXN0cyB3ZXJlIHJ1blwiXG4gICAgICAgICAgIDsgXCItc2hvdy1jb3VudHNcIiwgQXJnLlNldCBzaG93X2NvdW50cywgXCIgU2hvdyB0aGUgbnVtYmVyIG9mIHRlc3RzIHJhblwiXG4gICAgICAgICAgIDsgKCBcIi1sb2dcIlxuICAgICAgICAgICAgICwgQXJnLlVuaXRcbiAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAodHJ5IFN5cy5yZW1vdmUgXCJpbmxpbmVfdGVzdHMubG9nXCIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBfIC0+ICgpKTtcbiAgICAgICAgICAgICAgICAgICAgbG9nIDo9IFNvbWUgKG9wZW5fb3V0IFwiaW5saW5lX3Rlc3RzLmxvZ1wiKSlcbiAgICAgICAgICAgICAsIFwiIExvZyB0aGUgdGVzdHMgcnVuIGluIGlubGluZV90ZXN0cy5sb2dcIiApXG4gICAgICAgICAgIDsgKCBcIi1kcm9wLXRhZ1wiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUuZHJvcCAhdGFnX3ByZWRpY2F0ZSBzKVxuICAgICAgICAgICAgICwgXCJ0YWcgT25seSBydW4gdGVzdHMgbm90IHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgXFxcbiAgICAgICAgICAgICAgICAtcmVxdWlyZS10YWcpXCIgKVxuICAgICAgICAgICA7ICggXCItcmVxdWlyZS10YWdcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZ1xuICAgICAgICAgICAgICAgICAoZnVuIHMgLT4gdGFnX3ByZWRpY2F0ZSA6PSBUYWdfcHJlZGljYXRlLnJlcXVpcmUgIXRhZ19wcmVkaWNhdGUgcylcbiAgICAgICAgICAgICAsIFwidGFnIE9ubHkgcnVuIHRlc3RzIHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgLWRyb3AtdGFnKVwiIClcbiAgICAgICAgICAgOyAoIFwiLW1hdGNoaW5nXCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG5hbWVfZmlsdGVyIDo9IHMgOjogIW5hbWVfZmlsdGVyKVxuICAgICAgICAgICAgICwgXCJzdWJzdHJpbmcgT25seSBydW4gdGVzdHMgd2hvc2UgbmFtZXMgY29udGFpbiB0aGUgZ2l2ZW4gc3Vic3RyaW5nXCIgKVxuICAgICAgICAgICA7ICggXCItb25seS10ZXN0XCJcbiAgICAgICAgICAgICAsIEFyZy5TdHJpbmdcbiAgICAgICAgICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSwgaW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHBhcnNlX2Rlc2NyIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoZmlsZSwgaW5kZXgpIC0+IGZpbGUsIGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnOidcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc6JyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBTdHJpbmcuc3ViIHMgMCBpIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleF9zdHJpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5zdWIgcyAoaSArIDEpIChTdHJpbmcubGVuZ3RoIHMgLSBpIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgaW50X29mX3N0cmluZyBpbmRleF9zdHJpbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkFyZ3VtZW50ICVzIGRvZXNuJ3QgZml0IHRoZSBmb3JtYXQgZmlsZW5hbWVbOmxpbmVfbnVtYmVyXVxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIFNvbWUgaW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHMsIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgdGVzdHMgOj0gKGZpbGVuYW1lLCBpbmRleCwgcmVmIGZhbHNlKSA6OiAhdGVzdHMpXG4gICAgICAgICAgICAgLCBcImxvY2F0aW9uIFJ1biBvbmx5IHRoZSB0ZXN0cyBzcGVjaWZpZWQgYnkgYWxsIHRoZSAtb25seS10ZXN0IG9wdGlvbnMuXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9ucyBjYW4gYmUgb25lIG9mIHRoZXNlIGZvcm1zOlxcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIGZpbGUubWxcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBmaWxlLm1sOmxpbmVfbnVtYmVyXFxuXFxcbiAgICAgICAgICAgICAgIFxcICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCJcXG5cXFxuICAgICAgICAgICAgICAgXFwgICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyM1xcblxcXG4gICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzLCBjaGFyYWN0ZXJzIDItM1wiIClcbiAgICAgICAgICAgOyBcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBTdW1tYXJpemUgdGVzdHMgd2l0aG91dCB1c2luZyBjb2xvclwiXG4gICAgICAgICAgIDsgXCItaW4tcGxhY2VcIiwgQXJnLlNldCBpbl9wbGFjZSwgXCIgVXBkYXRlIGV4cGVjdCB0ZXN0cyBpbiBwbGFjZVwiXG4gICAgICAgICAgIDsgKCBcIi1kaWZmLWNtZFwiXG4gICAgICAgICAgICAgLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKVxuICAgICAgICAgICAgICwgXCIgRGlmZiBjb21tYW5kIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZGlmZmluZyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiIClcbiAgICAgICAgICAgOyAoIFwiLXNvdXJjZS10cmVlLXJvb3RcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gc291cmNlX3RyZWVfcm9vdCA6PSBTb21lIHMpXG4gICAgICAgICAgICAgLCBcIiBQYXRoIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZVwiIClcbiAgICAgICAgICAgOyAoIFwiLWRpZmYtcGF0aC1wcmVmaXhcIlxuICAgICAgICAgICAgICwgQXJnLlN0cmluZyAoZnVuIHMgLT4gZGlmZl9wYXRoX3ByZWZpeCA6PSBTb21lIHMpXG4gICAgICAgICAgICAgLCBcIiBQcmVmaXggdG8gcHJlcGVuZCB0byBmaWxlcGF0aHMgaW4gdGVzdCBvdXRwdXRcIiApXG4gICAgICAgICAgIF0pXG4gICAgICAgIChmdW4gYW5vbiAtPlxuICAgICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzOiB1bmV4cGVjdGVkIGFub255bW91cyBhcmd1bWVudCAlc1xcbiUhXCIgbmFtZSBhbm9uO1xuICAgICAgICAgICBleGl0IDEpXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICVzICVzIFthcmdzXVwiIG5hbWUgXCJpbmxpbmUtdGVzdC1ydW5uZXJcIiBsaWIpO1xuICAgICAgQWN0aW9uLnNldFxuICAgICAgICAoYFRlc3RfbW9kZVxuICAgICAgICAgICB7IHdoaWNoX3Rlc3RzID1cbiAgICAgICAgICAgICAgIHsgbGlibmFtZSA9IGxpYlxuICAgICAgICAgICAgICAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSAhdGVzdHNcbiAgICAgICAgICAgICAgIDsgd2hpY2hfdGFncyA9ICF0YWdfcHJlZGljYXRlXG4gICAgICAgICAgICAgICA7IG5hbWVfZmlsdGVyID0gIW5hbWVfZmlsdGVyXG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgIDsgd2hhdF90b19kbyA9XG4gICAgICAgICAgICAgICAoaWYgIWxpc3RfcGFydGl0aW9ucyB0aGVuIGBMaXN0X3BhcnRpdGlvbnMgZWxzZSBgUnVuX3BhcnRpdGlvbiAhcGFydGl0aW9uKVxuICAgICAgICAgICB9KVxuICAgIHwgXyAtPiAoKSlcbjs7XG5cbmxldCBhbV90ZXN0X3J1bm5lciA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBUZXN0X21vZGUgXyAtPiB0cnVlXG4gIHwgYElnbm9yZSAtPiBmYWxzZVxuOztcblxubGV0IGFtX3J1bm5pbmdfZW52X3ZhciA9XG4gICgqIGZvciBhcHByb3hpbWF0ZSBjb21wYXRpYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgZXhhY3RseSBlcXVpdmFsZW50XG4gICAgIHRvIHdoYXQgUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUIHVzZWQgdG8gYmUgKilcbiAgXCJURVNUSU5HX0ZSQU1FV09SS1wiXG47O1xuXG4oKiBUaGlzIHZhbHVlIGlzIGRlcHJlY2F0ZWQgaW4gcHJpbmNpcGxlLCBpbiBmYXZvciBvZiBDb3JlLmFtX3J1bm5pbmdfdGVzdCwgc29cbiAgIHdlJ3JlIGdvaW5nIHRvIGxpdmUgd2l0aCB0aGUgdWdseSBwYXR0ZXJuIG1hdGNoLiAqKVxubGV0IGFtX3J1bm5pbmcgPVxuICBtYXRjaCBTeXMuZ2V0ZW52IFwiUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUXCIgd2l0aFxuICB8IChfIDogc3RyaW5nKSAtPlxuICAgIHRydWUgKCogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwZW9wbGUgc2V0dGluZyB0aGlzIHZhcmlhYmxlIGRpcmVjdGx5ICopXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgIChtYXRjaCBTeXMuZ2V0ZW52IGFtX3J1bm5pbmdfZW52X3ZhciB3aXRoXG4gICAgIHwgXCJpbmxpbmUtdGVzdFwiIC0+IHRydWVcbiAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgIHwgXyAtPiBmYWxzZSlcbjs7XG5cbmxldCB0ZXN0aW5nID1cbiAgaWYgYW1fdGVzdF9ydW5uZXJcbiAgdGhlbiBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXJcbiAgZWxzZSBpZiBhbV9ydW5uaW5nXG4gIHRoZW4gYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyXG4gIGVsc2UgYE5vdF90ZXN0aW5nXG47O1xuXG5sZXQgd2FsbF90aW1lX2Nsb2NrX25zICgpID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKVxuXG5sZXQgd2hlcmVfdG9fY3V0X2JhY2t0cmFjZSA9XG4gIGxhenlcbiAgICAoQmFzZS5TdHJpbmcuU2VhcmNoX3BhdHRlcm4uY3JlYXRlXG4gICAgICAgKF9fTU9EVUxFX18gXiBcIi5cIiBeIFwidGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHNcIikpXG47O1xuXG5sZXQgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiA9XG4gIGxldCBiZWZvcmVfbnMgPSB3YWxsX3RpbWVfY2xvY2tfbnMgKCkgaW5cbiAgbGV0IHJlcyA9XG4gICAgKCogVG8gYXZvaWQgbm9pc2UgaW4gYmFja3RyYWNlcywgd2UgZG8gdHdvIHRoaW5ncy5cblxuICAgICAgIFdlIHVzZSBbd2hlcmVfdG9fY3V0X2JhY2t0cmFjZV0gYWJvdmUgdG8gcmVtb3ZlIHRoZSBzdGFjayBmcmFtZXMgZm9yIHRoZSBjdXJyZW50XG4gICAgICAgZnVuY3Rpb24gYW5kIGFueSBmdW5jdGlvbiBpdCBnZXRzIGlubGluZWQgaW50bywgYXMgaXQncyBub3Qgb2YgYW55IGludGVyZXN0IHRvIHRoZVxuICAgICAgIHVzZXIsIHNpbmNlIGl0J3Mgbm90IHRhbGtpbmcgYWJvdXQgdGhlaXIgdGVzdCBidXQgaW5zdGVhZCB0YWxraW5nIGFib3V0IHRoZVxuICAgICAgIHBweF9pbmxpbmVfdGVzdCBtYWNoaW5lcnkuXG5cbiAgICAgICBXZSBhbHNvIGF2b2lkIGluc2VydGluZyBhbnkgY29kZSBiZXR3ZWVuIHRoZSBbZl0gdGhhdCBjb21lcyBmcm9tIHRoZSB1c2VyJ3MgZmlsZVxuICAgICAgIGFuZCBncmFiYmluZyB0aGUgYmFja3RyYWNlIGZyb20gaXRzIGV4Y2VwdGlvbnMgKG5vIHdyYXBwaW5nIG9mIFtmXSB3aXRoIGhpZ2ggb3JkZXJcbiAgICAgICBmdW5jdGlvbnMgbGlrZSBFeG4ucHJvdGVjdCwgb3IgKGZ1biAoKSAtPiBmICgpOyB0cnVlKSkuICopXG4gICAgdHJ5IE9rIChmICgpKSB3aXRoXG4gICAgfCBleG4gLT4gRXJyb3IgKGV4biwgUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSlcbiAgaW5cbiAgdGltZV9zZWMgOj0gQmFzZS5JbnQ2My4od2FsbF90aW1lX2Nsb2NrX25zICgpIC0gYmVmb3JlX25zIHw+IHRvX2Zsb2F0KSAvLiAxZTk7XG4gIHJlc1xuOztcblxubGV0IHNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlID0gbGF6eSAoU3RkbGliLlJhbmRvbS5TdGF0ZS5tYWtlIFt8IDEwMDsgMjAwOyAzMDAgfF0pXG5sZXQgc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUgPSBsYXp5IChCYXNlLlJhbmRvbS5TdGF0ZS5tYWtlIFt8IDExMTsgMjIyOyAzMzMgfF0pXG5cbmxldCB0aW1lX2FuZF9yZXNldF9yYW5kb21fc2VlZHMgZiA9XG4gIGxldCBjYW1sX3JhbmRvbV9zdGF0ZSA9IFN0ZGxpYi5SYW5kb20uZ2V0X3N0YXRlICgpIGluXG4gIGxldCBiYXNlX3JhbmRvbV9zdGF0ZSA9IEJhc2UuUmFuZG9tLlN0YXRlLmNvcHkgQmFzZS5SYW5kb20uU3RhdGUuZGVmYXVsdCBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSAoTGF6eS5mb3JjZSBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSk7XG4gIEJhc2UuUmFuZG9tLnNldF9zdGF0ZSAoTGF6eS5mb3JjZSBzYXZlZF9iYXNlX3JhbmRvbV9zdGF0ZSk7XG4gIGxldCByZXN1bHQgPSB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmIGluXG4gIFN0ZGxpYi5SYW5kb20uc2V0X3N0YXRlIGNhbWxfcmFuZG9tX3N0YXRlO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgYmFzZV9yYW5kb21fc3RhdGU7XG4gIHJlc3VsdFxuOztcblxubGV0IHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkgPVxuICBTdHJpbmcuY29uY2F0XG4gICAgXCJcIlxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW4gcyAtPiBcIiAgaW4gVEVTXCIgXiBcIlRfTU9EVUxFIGF0IFwiIF4gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBzIF4gXCJcXG5cIilcbiAgICAgICAoTW9kdWxlX2NvbnRleHQuY3VycmVudF9kZXNjciAoKSkpXG47O1xuXG5sZXQgcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBsID1cbiAgTGlzdC5leGlzdHNcbiAgICAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCB1c2VkKSAtPlxuICAgICAgIGxldCBwb3NpdGlvbl9zdGFydCA9IFN0cmluZy5sZW5ndGggZGVmX2ZpbGVuYW1lIC0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgICAgIGxldCBmb3VuZCA9XG4gICAgICAgICBwb3NpdGlvbl9zdGFydCA+PSAwXG4gICAgICAgICAmJlxuICAgICAgICAgbGV0IGVuZF9vZl9kZWZfZmlsZW5hbWUgPVxuICAgICAgICAgICBTdHJpbmcuc3ViIGRlZl9maWxlbmFtZSBwb3NpdGlvbl9zdGFydCAoU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSlcbiAgICAgICAgIGluXG4gICAgICAgICBlbmRfb2ZfZGVmX2ZpbGVuYW1lID0gZmlsZW5hbWVcbiAgICAgICAgICYmIChwb3NpdGlvbl9zdGFydCA9IDAgfHwgZGVmX2ZpbGVuYW1lLltwb3NpdGlvbl9zdGFydCAtIDFdID0gJy8nKVxuICAgICAgICAgJiZcbiAgICAgICAgIG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgfCBTb21lIGxpbmVfbnVtYmVyIC0+IGRlZl9saW5lX251bWJlciA9IGxpbmVfbnVtYmVyXG4gICAgICAgaW5cbiAgICAgICBpZiBmb3VuZCB0aGVuIHVzZWQgOj0gdHJ1ZTtcbiAgICAgICBmb3VuZClcbiAgICBsXG47O1xuXG5sZXQgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIGRlc2NyID1cbiAgbWF0Y2ggbmFtZV9maWx0ZXIgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT5cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHN1YnN0cmluZyAtPiBCYXNlLlN0cmluZy5pc19zdWJzdHJpbmcgfnN1YnN0cmluZyBkZXNjcikgbmFtZV9maWx0ZXJcbjs7XG5cbmxldCBwcmludF9kZWxheWVkX2Vycm9ycyAoKSA9XG4gIG1hdGNoIExpc3QucmV2ICFkZWxheWVkX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBfIDo6IF8gYXMgZGVsYXllZF9lcnJvcnMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcIlxcbiVzXFxuJSFcIiAoU3RyaW5nLm1ha2UgNzAgJz0nKTtcbiAgICBMaXN0Lml0ZXIgKGZ1biBtZXNzYWdlIC0+IFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIG1lc3NhZ2UpIGRlbGF5ZWRfZXJyb3JzXG47O1xuXG5sZXQgZXByaW50Zl9vcl9kZWxheSBmbXQgPVxuICBQcmludGYua3NwcmludGZcbiAgICAoZnVuIHMgLT5cbiAgICAgICBpZiAhdmVyYm9zZSB0aGVuIGRlbGF5ZWRfZXJyb3JzIDo9IHMgOjogIWRlbGF5ZWRfZXJyb3JzIGVsc2UgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcztcbiAgICAgICBpZiAhc3RvcF9vbl9lcnJvclxuICAgICAgIHRoZW4gKFxuICAgICAgICAgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCk7XG4gICAgICAgICBleGl0IDIpKVxuICAgIGZtdFxuOztcblxubGV0IGFkZF9ob29rcyAoKG1vZHVsZSBDKSA6IGNvbmZpZykgZiAoKSA9XG4gIEMucHJlX3Rlc3RfaG9vayAoKTtcbiAgZiAoKVxuOztcblxubGV0IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlID1cbiAgbGV0IG9wZW4gQmFzZSBpblxuICBiYWNrdHJhY2VcbiAgfD4gU3RyaW5nLnNwbGl0X2xpbmVzXG4gIHw+IExpc3QudGFrZV93aGlsZSB+ZjooZnVuIHN0ciAtPlxuICAgIG5vdCAoU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLm1hdGNoZXMgKGZvcmNlIHdoZXJlX3RvX2N1dF9iYWNrdHJhY2UpIHN0cikpXG4gIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0ciBeIFwiXFxuXCIpXG4gIHw+IFN0cmluZy5jb25jYXRcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X2lubmVyXG4gICAgICAgICAgICAgICAgICAgICB+Y29uZmlnXG4gICAgICAgICAgICAgICAgICAgICB+ZGVzY3JcbiAgICAgICAgICAgICAgICAgICAgIH50YWdzXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6ZGVmX2ZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgICAgZlxuICAgICAgICAgICAgICAgICAgICAgYm9vbF9vZl9mXG4gID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBUZXN0X21vZGVcbiAgICAgIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbjsgd2hpY2hfdGFnczsgbmFtZV9maWx0ZXIgfVxuICAgICAgOyB3aGF0X3RvX2RvXG4gICAgICB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgPVxuICAgICAgbGF6eSAoZGlzcGxheWVkX2Rlc2NyIGRlc2NyIGRlZl9maWxlbmFtZSBkZWZfbGluZV9udW1iZXIgc3RhcnRfcG9zIGVuZF9wb3MpXG4gICAgaW5cbiAgICBsZXQgY29tcGxldGVfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICYmIChtYXRjaCBvbmx5X3Rlc3RfbG9jYXRpb24gd2l0aFxuICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgfCBfIDo6IF8gLT4gcG9zaXRpb25fbWF0Y2ggZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBvbmx5X3Rlc3RfbG9jYXRpb24pXG4gICAgICAmJiAobm90IChUYWdfcHJlZGljYXRlLmRpc2FibGVkIHdoaWNoX3RhZ3MgfmNvbXBsZXRlX3RhZ3MpKVxuICAgICAgJiYgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIChMYXp5LmZvcmNlIGRlc2NyKVxuICAgIGluXG4gICAgaWYgc2hvdWxkX3J1blxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZGVzY3IgPSBMYXp5LmZvcmNlIGRlc2NyIGluXG4gICAgICAgICAgaW5jciB0ZXN0c19yYW47XG4gICAgICAgICAgKG1hdGNoICFsb2cgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGNoIC0+IFByaW50Zi5mcHJpbnRmIGNoIFwiJXNcXG4lc1wiIGRlc2NyIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKSk7XG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBQcmludGYucHJpbnRmIFwiJXMlIVwiIGRlc2NyO1xuICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgaWYgIWxpc3RfdGVzdF9uYW1lc1xuICAgICAgICAgICAgdGhlbiBPayB0cnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIFNlZSBbdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHNdIGZvciB3aHkgd2UgdXNlIFtib29sX29mX2ZdXG4gICAgICAgICAgICAgICAgIHJhdGhlciBoYXZlIHRoZSBjYWxsZXIgd3JhcCBbZl0gdG8gYWRqdXN0IGl0cyByZXR1cm4gdmFsdWUuICopXG4gICAgICAgICAgICAgIFJlc3VsdC5tYXAgYm9vbF9vZl9mICh0aW1lX2FuZF9yZXNldF9yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIElmICFsaXN0X3Rlc3RfbmFtZXMsIHRoaXMgaXMgaXMgYSBoYXJtbGVzcyB6ZXJvLiAqKVxuICAgICAgICAgIGlmICF2ZXJib3NlIHRoZW4gUHJpbnRmLnByaW50ZiBcIiAoJS4zZiBzZWMpXFxuJSFcIiAhdGltZV9zZWM7XG4gICAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIHRydWUgLT4gKClcbiAgICAgICAgICB8IE9rIGZhbHNlIC0+XG4gICAgICAgICAgICBpbmNyIHRlc3RzX2ZhaWxlZDtcbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXkgXCIlcyBpcyBmYWxzZS5cXG4lc1xcbiUhXCIgZGVzY3IgKHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkpXG4gICAgICAgICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICAgICAgICBpbmNyIHRlc3RzX2ZhaWxlZDtcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSBpblxuICAgICAgICAgICAgbGV0IGV4bl9zdHIgPSBTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgZXhuIGluXG4gICAgICAgICAgICBsZXQgc2VwID0gaWYgU3RyaW5nLmNvbnRhaW5zIGV4bl9zdHIgJ1xcbicgdGhlbiBcIlxcblwiIGVsc2UgXCIgXCIgaW5cbiAgICAgICAgICAgIGVwcmludGZfb3JfZGVsYXlcbiAgICAgICAgICAgICAgXCIlcyB0aHJldyVzJXMuXFxuJXMlc1xcbiUhXCJcbiAgICAgICAgICAgICAgZGVzY3JcbiAgICAgICAgICAgICAgc2VwXG4gICAgICAgICAgICAgIGV4bl9zdHJcbiAgICAgICAgICAgICAgYmFja3RyYWNlXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKSkpXG47O1xuXG5sZXQgc2V0X2xpYl9hbmRfcGFydGl0aW9uIHN0YXRpY19saWIgcGFydGl0aW9uID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBTb21lIF8gLT5cbiAgICAoKiBwb3NzaWJsZSBpZiB0aGUgaW50ZXJmYWNlIGlzIHVzZWQgZXhwbGljaXRseSBvciBpZiB3ZSBoYXBwZW4gdG8gZHlubGluayBzb21ldGhpbmdcbiAgICAgICB0aGF0IGNvbnRhaW4gdGVzdHMgKilcbiAgICAoKVxuICB8IE5vbmUgLT5cbiAgICBkeW5hbWljX2xpYiA6PSBTb21lIHN0YXRpY19saWI7XG4gICAgKG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICAgICB8IGBJZ25vcmUgLT4gKClcbiAgICAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHM7IHdoYXRfdG9fZG8gfSAtPlxuICAgICAgIGlmIHdoaWNoX3Rlc3RzLmxpYm5hbWUgPSBzdGF0aWNfbGliXG4gICAgICAgdGhlbiAoXG4gICAgICAgICBsZXQgcmVxdWlyZXNfcGFydGl0aW9uID1cbiAgICAgICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICAgICAgIHwgYExpc3RfcGFydGl0aW9ucyB8IGBSdW5fcGFydGl0aW9uIChTb21lIF8pIC0+IHRydWVcbiAgICAgICAgICAgfCBgUnVuX3BhcnRpdGlvbiBOb25lIC0+IGZhbHNlXG4gICAgICAgICBpblxuICAgICAgICAgaWYgcGFydGl0aW9uID0gXCJcIiAmJiByZXF1aXJlc19wYXJ0aXRpb25cbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICBcInBweF9pbmxpbmVfdGVzdDogY2Fubm90IHVzZSAtbGlzdC1wYXJ0aXRpb24gb3IgLXBhcnRpdGlvbiB3aXRob3V0IFxcXG4gICAgICAgICAgICAgIHNwZWNpZnlpbmcgYSBwYXJ0aXRpb24gYXQgcHJlcHJvY2Vzc2luZyB0aW1lXCJcbiAgICAgICAgIGVsc2UgUGFydGl0aW9uLnNldF9jdXJyZW50IHBhcnRpdGlvbikpXG47O1xuXG5sZXQgdW5zZXRfbGliIHN0YXRpY19saWIgPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAoKiBub3QgZ2l2aW5nIGFuIGVycm9yLCBiZWNhdXNlIHdoZW4gc29tZSBhbm5veWluZyBwZW9wbGUgcHV0IHBhX291bml0IGluIHRoZWlyIGxpc3RcbiAgICAgICBvZiBwcmVwcm9jZXNzb3JzLCBwYV9vdW5pdCBpcyBzZXQgdXAgdHdpY2UgYW5kIHdlIGhhdmUgdHdvIGNhbGxzIHRvIHVuc2V0X2xpYiBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIGZpbGUsIGFuZCB0aGUgc2Vjb25kIG9uZSBjb21lcyBpbiB0aGlzIGJyYW5jaCAqKVxuICAgICgpXG4gIHwgU29tZSBsaWIgLT4gaWYgbGliID0gc3RhdGljX2xpYiB0aGVuIGR5bmFtaWNfbGliIDo9IE5vbmVcbjs7XG5cbmxldCB0ZXN0IH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmID1cbiAgdGVzdF9pbm5lciB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiAoZnVuIGIgLT5cbiAgICBiKVxuOztcblxubGV0IHRlc3RfdW5pdCB+Y29uZmlnIH5kZXNjciB+dGFncyB+ZmlsZW5hbWUgfmxpbmVfbnVtYmVyIH5zdGFydF9wb3MgfmVuZF9wb3MgZiA9XG4gIHRlc3RfaW5uZXIgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgKGZ1biAoKSAtPlxuICAgIHRydWUpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5jb25maWdcbiAgICAgICAgICAgICAgICAgICAgIH5kZXNjclxuICAgICAgICAgICAgICAgICAgICAgfnRhZ3NcbiAgICAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpkZWZfZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5saW5lX251bWJlcjpkZWZfbGluZV9udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgICAgIH5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgICBmXG4gID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBUZXN0X21vZGVcbiAgICAgIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbiA9IF87IG5hbWVfZmlsdGVyID0gXzsgd2hpY2hfdGFncyB9XG4gICAgICA7IHdoYXRfdG9fZG9cbiAgICAgIH0gLT5cbiAgICBsZXQgZiA9IGFkZF9ob29rcyBjb25maWcgZiBpblxuICAgIGxldCBkZXNjciAoKSA9IGRpc3BsYXllZF9kZXNjciBkZXNjciBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIHN0YXJ0X3BvcyBlbmRfcG9zIGluXG4gICAgbGV0IHBhcnRpYWxfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICgqIElmLCBubyBtYXR0ZXIgd2hhdCB0YWdzIGEgdGVzdCBkZWZpbmVzLCB3ZSBjZXJ0YWlubHkgd2lsbCBkcm9wIGFsbCB0ZXN0cyB3aXRoaW5cbiAgICAgICAgIHRoaXMgbW9kdWxlLCB0aGVuIGRvbid0IHJ1biB0aGUgbW9kdWxlIGF0IGFsbC4gVGhpcyBtZWFucyBwZW9wbGUgY2FuIHdyaXRlXG4gICAgICAgICB0aGluZ3MgbGlrZSB0aGUgZm9sbG93aW5nIHdpdGhvdXQgYnJlYWtpbmcgdGhlIDMyLWJpdCBidWlsZDpcbiAgICAgICAgIGxldCV0ZXN0X21vZHVsZSBbQHRhZ3MgXCI2NC1iaXRzLW9ubHlcIl0gPSAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgbGV0IGkgPSBJbnQ2NC50b19pbnRfZXhuIC4uLi5cbiAgICAgICAgIGVuZClcbiAgICAgICAgIFdlIGRvbid0IHNob3J0Y3V0IGJhc2VkIG9uIHBvc2l0aW9uLCBhcyB3ZSBjYW4ndCB0ZWxsIHdoYXQgcG9zaXRpb25zIHRoZVxuICAgICAgICAgaW5uZXIgdGVzdHMgd2lsbCBoYXZlLiAqKVxuICAgICAgJiYgbm90IChUYWdfcHJlZGljYXRlLmVudGlyZV9tb2R1bGVfZGlzYWJsZWQgd2hpY2hfdGFncyB+cGFydGlhbF90YWdzKVxuICAgIGluXG4gICAgaWYgc2hvdWxkX3J1blxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIHRlc3RfbW9kdWxlc19yYW47XG4gICAgICAgICAgbGV0IGRlc2NyID0gZGVzY3IgKCkgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTW9kdWxlX2NvbnRleHQud2l0aF8gfmRlc2NyIH50YWdzIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgKCogV2UgZG8gbm90IHJlc2V0IHJhbmRvbSBzdGF0ZXMgdXBvbiBlbnRlcmluZyBbbGV0JXRlc3RfbW9kdWxlXS5cblxuICAgICAgICAgICAgICAgICBDb246IENvZGUgaW4gdGVzdCBtb2R1bGVzIGNhbiBhY2NpZGVudGFsbHkgZGVwZW5kIG9uIHRvcC1sZXZlbCByYW5kb21cbiAgICAgICAgICAgICAgICAgc3RhdGUgZWZmZWN0cy5cblxuICAgICAgICAgICAgICAgICBQcm9zOiAoMSkgV2UgZG9uJ3QgcmVzZXQgdG8gdGhlIHNhbWUgc2VlZCBvbiBlbnRlcmluZyBhIFtsZXQldGVzdF9tb2R1bGVdXG4gICAgICAgICAgICAgICAgIGFuZCB0aGVuIGEgW2xldCV0ZXN0XSBpbnNpZGUgdGhhdCBtb2R1bGUsIHdoaWNoIGNvdWxkIGxlYWQgdG9cbiAgICAgICAgICAgICAgICAgYWNjaWRlbnRhbGx5IHJhbmRvbWx5IGdlbmVyYXRpbmcgdGhlIHNhbWUgdmFsdWVzIGluIHNvbWUgdGVzdC4gKDIpIE1vdmluZ1xuICAgICAgICAgICAgICAgICBjb2RlIGludG8gYW5kIG91dCBvZiBbbGV0JXRlc3RfbW9kdWxlXSBkb2VzIG5vdCBjaGFuZ2UgaXRzIHJhbmRvbSBzZWVkLlxuICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICB0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkcyBmKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICAgICAgICBpbmNyIHRlc3RfbW9kdWxlc19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5XG4gICAgICAgICAgICAgIChcIlRFU1wiIF5eIFwiVF9NT0RVTEUgYXQgJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiKVxuICAgICAgICAgICAgICAoU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBkZXNjcilcbiAgICAgICAgICAgICAgc2VwXG4gICAgICAgICAgICAgIGV4bl9zdHJcbiAgICAgICAgICAgICAgYmFja3RyYWNlXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKSkpXG47O1xuXG5sZXQgc3VtbWFyaXplICgpID1cbiAgbWF0Y2ggQWN0aW9uLmdldCAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPlxuICAgIGlmIFN5cy5hcmd2IDw+IFt8fF0gJiYgRmlsZW5hbWUuYmFzZW5hbWUgU3lzLmFyZ3YuKDApID0gXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZVwiXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGJ5IGhhbmQsIHlvdSBcXG5cXFxuICAgICAgICAgc2hvdWxkIHJ1biB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgaW5zdGVhZC5cXG5cXFxuICAgICAgICAgJSFcIlxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgIFwiWW91IGFyZSBkb2luZyBzb21ldGhpbmcgdW5leHBlY3RlZCB3aXRoIHRoZSB0ZXN0cy4gTm8gdGVzdHMgaGF2ZSBcXG5cXFxuICAgICAgICAgYmVlbiBydW4uIFlvdSBzaG91bGQgdXNlIHRoZSBpbmxpbmVfdGVzdHNfcnVubmVyIHNjcmlwdCB0byBydW4gXFxuXFxcbiAgICAgICAgIHRlc3RzLlxcblxcXG4gICAgICAgICAlIVwiO1xuICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0gXzsgd2hhdF90b19kbyA9IGBMaXN0X3BhcnRpdGlvbnMgfSAtPlxuICAgIExpc3QuaXRlciAoUHJpbnRmLnByaW50ZiBcIiVzXFxuXCIpIChQYXJ0aXRpb24uYWxsICgpKTtcbiAgICBUZXN0X3Jlc3VsdC5TdWNjZXNzXG4gIHwgYFRlc3RfbW9kZSB7IHdoYXRfdG9fZG8gPSBgUnVuX3BhcnRpdGlvbiBfOyB3aGljaF90ZXN0cyB9IC0+XG4gICAgKG1hdGNoICFsb2cgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGNoIC0+IGNsb3NlX291dCBjaCk7XG4gICAgcHJpbnRfZGVsYXllZF9lcnJvcnMgKCk7XG4gICAgKG1hdGNoICF0ZXN0c19mYWlsZWQsICF0ZXN0X21vZHVsZXNfZmFpbGVkIHdpdGhcbiAgICAgfCAwLCAwIC0+XG4gICAgICAgaWYgIXNob3dfY291bnRzXG4gICAgICAgdGhlblxuICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgXCIlZCB0ZXN0cyByYW4sICVkIHRlc3RfbW9kdWxlcyByYW5cXG4lIVwiXG4gICAgICAgICAgICF0ZXN0c19yYW5cbiAgICAgICAgICAgIXRlc3RfbW9kdWxlc19yYW47XG4gICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICBsZXQgdW51c2VkX3Rlc3RzID1cbiAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biAoXywgXywgdXNlZCkgLT4gbm90ICF1c2VkKSB3aGljaF90ZXN0cy5vbmx5X3Rlc3RfbG9jYXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBtYXRjaCB1bnVzZWRfdGVzdHMgd2l0aFxuICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICB8IF8gOjogXyAtPiBTb21lIHVudXNlZF90ZXN0c1xuICAgICAgIGluXG4gICAgICAgKG1hdGNoIGVycm9ycyB3aXRoXG4gICAgICAgIHwgU29tZSB0ZXN0cyAtPlxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogdGhlIGZvbGxvd2luZyAtb25seS10ZXN0IGZsYWdzIG1hdGNoZWQgbm90aGluZzpcIjtcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gKGZpbGVuYW1lLCBsaW5lX251bWJlcl9vcHQsIF8pIC0+XG4gICAgICAgICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFByaW50Zi5lcHJpbnRmIFwiICVzXCIgZmlsZW5hbWVcbiAgICAgICAgICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBQcmludGYuZXByaW50ZiBcIiAlczolZFwiIGZpbGVuYW1lIGxpbmVfbnVtYmVyKVxuICAgICAgICAgICAgdGVzdHM7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIuXFxuJSFcIjtcbiAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiAhdGVzdHNfcmFuID0gMCAmJiAhc3RyaWN0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogbm8gdGVzdHMgaGF2ZSBiZWVuIHJ1bi5cXG4lIVwiO1xuICAgICAgICAgICAgVGVzdF9yZXN1bHQuRXJyb3IpXG4gICAgICAgICAgZWxzZSBUZXN0X3Jlc3VsdC5TdWNjZXNzKVxuICAgICB8IGNvdW50LCBjb3VudF90ZXN0X21vZHVsZXMgLT5cbiAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgXCJGQUlMRUQgJWQgLyAlZCB0ZXN0cyVzXFxuJSFcIlxuICAgICAgICAgY291bnRcbiAgICAgICAgICF0ZXN0c19yYW5cbiAgICAgICAgIChpZiBjb3VudF90ZXN0X21vZHVsZXMgPSAwXG4gICAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiAoXCIsICVkIFRFU1wiIF5eIFwiVF9NT0RVTEVTXCIpIGNvdW50X3Rlc3RfbW9kdWxlcyk7XG4gICAgICAgVGVzdF9yZXN1bHQuRmFpbHVyZSlcbjs7XG5cbmxldCB1c2VfY29sb3IgPSAhdXNlX2NvbG9yXG5sZXQgaW5fcGxhY2UgPSAhaW5fcGxhY2VcbmxldCBkaWZmX2NvbW1hbmQgPSAhZGlmZl9jb21tYW5kXG5sZXQgZGlmZl9wYXRoX3ByZWZpeCA9ICFkaWZmX3BhdGhfcHJlZml4XG5sZXQgc291cmNlX3RyZWVfcm9vdCA9ICFzb3VyY2VfdHJlZV9yb290XG5sZXQgZXZhbHVhdG9ycyA9IHJlZiBbIHN1bW1hcml6ZSBdXG5sZXQgYWRkX2V2YWx1YXRvciB+ZiA9IGV2YWx1YXRvcnMgOj0gZiA6OiAhZXZhbHVhdG9yc1xuXG5sZXQgZXhpdCAoKSA9XG4gIExpc3QubWFwIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWV2YWx1YXRvcnMpXG4gIHw+IFRlc3RfcmVzdWx0LmNvbWJpbmVfYWxsXG4gIHw+IFRlc3RfcmVzdWx0LnRvX2V4aXRfY29kZVxuICB8PiBleGl0XG47O1xuIiwib3BlbiEgQmFzZVxubW9kdWxlIEdjID0gU3RkbGliLkdjXG5cbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcblxubGV0IGFtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiUFBYX01PRFVMRV9USU1FUlwiXG5cbmxldCBnZXRfYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlICgpID1cbiAgKCogYXZvaWQgU3RkbGliLlN5cy5nZXRlbnZfb3B0IHRvIHByZXNlcnZlIDQuMDQueCBjb21wYXRpYmlsaXR5ICopXG4gIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0ZW52IGFtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSB3aXRoXG4gIHwgdmFsdWUgLT4gU29tZSB2YWx1ZVxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCBhbV9yZWNvcmRpbmdfdmFsdWUgPSBnZXRfYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhYmxlICgpXG5sZXQgYW1fcmVjb3JkaW5nID0gT3B0aW9uLmlzX3NvbWUgYW1fcmVjb3JkaW5nX3ZhbHVlXG5cbm1vZHVsZSBEdXJhdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgbGV0IHRvX25hbm9zZWNvbmRzIHQgPSB0XG4gIGxldCBvZl9uYW5vc2Vjb25kcyB0ID0gdFxuXG4gIG1vZHVsZSB0eXBlIEZvcm1hdCA9IHNpZ1xuICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgOiB0IGxpc3QgLT4gc3RyaW5nIGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIERlZmF1bHRfZm9ybWF0ID0gc3RydWN0XG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIHN0cmluZyB+c3VmZml4OlwibnNcIiB8PiBJbnQ2My5vZl9zdHJpbmdcbiAgICBsZXQgdG9fc3RyaW5nIG5hbm9zID0gSW50NjMudG9fc3RyaW5nIG5hbm9zIF4gXCJuc1wiXG4gICAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBsaXN0ID0gTGlzdC5tYXAgbGlzdCB+Zjp0b19zdHJpbmdcbiAgZW5kXG5cbiAgbGV0IGZvcm1hdCA9IHJlZiAobW9kdWxlIERlZmF1bHRfZm9ybWF0IDogRm9ybWF0KVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC5vZl9zdHJpbmcgc3RyaW5nXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBzdHJpbmcgPVxuICAgIGxldCAobW9kdWxlIEZvcm1hdCkgPSAhZm9ybWF0IGluXG4gICAgRm9ybWF0LnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBzdHJpbmdcbiAgOztcbmVuZFxuXG5tb2R1bGUgR2NfZXZlbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUaW1pbmdfZXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGRlc2NyaXB0aW9uIDogc3RyaW5nXG4gICAgOyBydW50aW1lIDogRHVyYXRpb24udFxuICAgIDsgZ2NfZXZlbnRzIDogR2NfZXZlbnRzLnRcbiAgICA7IG5lc3RlZF90aW1pbmdfZXZlbnRzIDogdCBsaXN0XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBUaW1lciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIDogRHVyYXRpb24udFxuICAgIDsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA6IEdjLnN0YXRcbiAgICA7IG11dGFibGUgbmVzdGVkX3RpbWVyIDogdCBvcHRpb25cbiAgICA7IG11dGFibGUgdGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgOiBUaW1pbmdfZXZlbnQudCBsaXN0XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgP25lc3RlZF90aW1lciAoKSA9XG4gICAgeyBjdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA9IFwiXCJcbiAgICA7IGN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPSBJbnQ2My56ZXJvXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA9IEdjLnF1aWNrX3N0YXQgKClcbiAgICA7IG5lc3RlZF90aW1lclxuICAgIDsgdGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPSBbXVxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCA9XG4gICAgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiA8LSBcIlwiO1xuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA8LSBJbnQ2My56ZXJvO1xuICAgIG1hdGNoIHQubmVzdGVkX3RpbWVyIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgbmVzdGVkIC0+IG5lc3RlZC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlciA8LSBbXVxuICA7O1xuXG4gIGxldCByZWNvcmRfc3RhcnQgdCBkZXNjcmlwdGlvbiA9XG4gICAgaWYgYW1fcmVjb3JkaW5nXG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKFN0cmluZy5pc19lbXB0eSB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uKTtcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gZGVzY3JpcHRpb247XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2djX3N0YXRzIDwtIEdjLnF1aWNrX3N0YXQgKCk7XG4gICAgICAoKiBjYWxsIFtUaW1lX25vd10gYXMgbGF0ZSBhcyBwb3NzaWJsZSBiZWZvcmUgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA8LSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpKVxuICA7O1xuXG4gIGxldCByZWNvcmRfdW50aWwgdCBkZXNjcmlwdGlvbiA9XG4gICAgaWYgYW1fcmVjb3JkaW5nXG4gICAgdGhlbiAoXG4gICAgICAoKiBjb21wdXRlIFtUaW1lX25vd10gYXMgc29vbiBhcyBwb3NzaWJsZSBhZnRlciBydW5uaW5nIHRoZSBtb2R1bGUgYm9keSAqKVxuICAgICAgbGV0IHVudGlsID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSBpblxuICAgICAgbGV0IHN0YXJ0ID0gdC5jdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lIGluXG4gICAgICBsZXQgZ2Nfc3RhdHNfYWZ0ZXIgPSBHYy5xdWlja19zdGF0ICgpIGluXG4gICAgICBsZXQgZ2Nfc3RhdHNfYmVmb3JlID0gdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyBpblxuICAgICAgbGV0IHJ1bnRpbWUgPSBJbnQ2My4oIC0gKSB1bnRpbCBzdGFydCBpblxuICAgICAgYXNzZXJ0IChTdHJpbmcuZXF1YWwgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbiBkZXNjcmlwdGlvbik7XG4gICAgICBsZXQgZ2NfZXZlbnRzIDogR2NfZXZlbnRzLnQgPVxuICAgICAgICB7IG1pbm9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1pbm9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPVxuICAgICAgICAgICAgZ2Nfc3RhdHNfYWZ0ZXIubWFqb3JfY29sbGVjdGlvbnMgLSBnY19zdGF0c19iZWZvcmUubWFqb3JfY29sbGVjdGlvbnNcbiAgICAgICAgOyBjb21wYWN0aW9ucyA9IGdjX3N0YXRzX2FmdGVyLmNvbXBhY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLmNvbXBhY3Rpb25zXG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgbmVzdGVkIC0+IExpc3QucmV2IG5lc3RlZC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlclxuICAgICAgaW5cbiAgICAgIGxldCB0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCA9XG4gICAgICAgIHsgZGVzY3JpcHRpb247IHJ1bnRpbWU7IGdjX2V2ZW50czsgbmVzdGVkX3RpbWluZ19ldmVudHMgfVxuICAgICAgaW5cbiAgICAgIHQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIDwtIHRpbWluZ19ldmVudCA6OiB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyO1xuICAgICAgcmVzZXQgdClcbiAgOztcbmVuZFxuXG5sZXQgZGVmaW5pdGlvbl90aW1lciA9IFRpbWVyLmNyZWF0ZSAoKVxubGV0IG1vZHVsZV90aW1lciA9IFRpbWVyLmNyZWF0ZSB+bmVzdGVkX3RpbWVyOmRlZmluaXRpb25fdGltZXIgKClcbmxldCByZWNvcmRfc3RhcnQgbW9kdWxlX25hbWUgPSBUaW1lci5yZWNvcmRfc3RhcnQgbW9kdWxlX3RpbWVyIG1vZHVsZV9uYW1lXG5sZXQgcmVjb3JkX3VudGlsIG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3VudGlsIG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF9kZWZpbml0aW9uX3N0YXJ0IGxvYyA9IFRpbWVyLnJlY29yZF9zdGFydCBkZWZpbml0aW9uX3RpbWVyIGxvY1xubGV0IHJlY29yZF9kZWZpbml0aW9uX3VudGlsIGxvYyA9IFRpbWVyLnJlY29yZF91bnRpbCBkZWZpbml0aW9uX3RpbWVyIGxvY1xuXG5sZXQgZ2NfZXZlbnRzX3N1ZmZpeF9zdHJpbmdcbiAgICAgICh7IG1pbm9yX2NvbGxlY3Rpb25zOyBtYWpvcl9jb2xsZWN0aW9uczsgY29tcGFjdGlvbnMgfSA6IEdjX2V2ZW50cy50KVxuICA9XG4gIGxldCB0b19saXN0IGRlc2NyaXB0aW9uIGNvdW50ID1cbiAgICBpZiBjb3VudCA9IDAgdGhlbiBbXSBlbHNlIFsgSW50LnRvX3N0cmluZyBjb3VudCBeIFwiIFwiIF4gZGVzY3JpcHRpb24gXVxuICBpblxuICBsZXQgc3RyaW5ncyA9XG4gICAgdG9fbGlzdCBcIm1pbm9yIGNvbGxlY3Rpb25zXCIgbWlub3JfY29sbGVjdGlvbnNcbiAgICBAIHRvX2xpc3QgXCJtYWpvciBjb2xsZWN0aW9uc1wiIG1ham9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwiY29tcGFjdGlvbnNcIiBjb21wYWN0aW9uc1xuICBpblxuICBpZiBMaXN0LmlzX2VtcHR5IHN0cmluZ3MgdGhlbiBcIlwiIGVsc2UgXCI7IEdDOiBcIiBeIFN0cmluZy5jb25jYXQgc3RyaW5ncyB+c2VwOlwiLCBcIlxuOztcblxubGV0IHdpdGhfbGVmdF9jb2x1bW5fcmlnaHRfanVzdGlmaWVkIGxpc3QgPVxuICBsZXQgbGVmdF9jb2x1bW5fd2lkdGggPVxuICAgIExpc3QuZm9sZCBsaXN0IH5pbml0OjAgfmY6KGZ1biB3aWR0aCAobGVmdCwgXykgLT4gSW50Lm1heCB3aWR0aCAoU3RyaW5nLmxlbmd0aCBsZWZ0KSlcbiAgaW5cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIChsZWZ0LCByaWdodCkgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIiUqcyAlc1wiIGxlZnRfY29sdW1uX3dpZHRoIGxlZnQgcmlnaHQpXG47O1xuXG5sZXQgcmVjIHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyBsaXN0IH5pbmRlbnQgPVxuICBsZXQgZHVyYXRpb25fc3RyaW5ncyA9XG4gICAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuICh0aW1pbmdfZXZlbnQgOiBUaW1pbmdfZXZlbnQudCkgLT4gdGltaW5nX2V2ZW50LnJ1bnRpbWUpXG4gICAgfD4gRHVyYXRpb24udG9fc3RyaW5nX3dpdGhfc2FtZV91bml0XG4gIGluXG4gIGxldCBwcmVmaXggPSBTdHJpbmcubWFrZSBpbmRlbnQgJyAnIGluXG4gIExpc3QubWFwMl9leG5cbiAgICBkdXJhdGlvbl9zdHJpbmdzXG4gICAgbGlzdFxuICAgIH5mOlxuICAgICAgKGZ1blxuICAgICAgICBkdXJhdGlvbl9zdHJpbmcgeyBydW50aW1lID0gXzsgZGVzY3JpcHRpb247IGdjX2V2ZW50czsgbmVzdGVkX3RpbWluZ19ldmVudHMgfSAtPlxuICAgICAgICAoIGR1cmF0aW9uX3N0cmluZ1xuICAgICAgICAsIGRlc2NyaXB0aW9uXG4gICAgICAgICAgXiBnY19ldmVudHNfc3VmZml4X3N0cmluZyBnY19ldmVudHNcbiAgICAgICAgICBeIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICh0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbmVzdGVkX3RpbWluZ19ldmVudHMgfmluZGVudDooaW5kZW50ICsgNCkpXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gbGluZSAtPiBcIlxcblwiIF4gbGluZSkpICkpXG4gIHw+IHdpdGhfbGVmdF9jb2x1bW5fcmlnaHRfanVzdGlmaWVkXG4gIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBwcmVmaXggXiBsaW5lKVxuOztcblxubGV0IGZha2VfdGltaW5nX2V2ZW50cyA9XG4gIGxldCBnY19ldmVudHMgaSA6IEdjX2V2ZW50cy50ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSAyID0gMSB0aGVuIDEgZWxzZSAwKVxuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDQgPSAzIHRoZW4gMSBlbHNlIDApXG4gICAgOyBjb21wYWN0aW9ucyA9IChpZiBpICUgOCA9IDcgdGhlbiAxIGVsc2UgMClcbiAgICB9XG4gIGluXG4gIGxhenlcbiAgICAoTGlzdC5pbml0IDEyIH5mOihmdW4gaSA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiRmFrZV9fRGVwZW5kZW5jeV8lZFwiIChpICsgMSlcbiAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChpICsgMSkpXG4gICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgaVxuICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAoaWYgKGkgKyAxKSAlIDQgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIExpc3QuaW5pdCAoaSArIDEpIH5mOihmdW4gaiA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiTGluZSAlZFwiIChqICsgMSlcbiAgICAgICAgICAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChqICsgMSkpXG4gICAgICAgICAgICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgalxuICAgICAgICAgICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPSBbXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbHNlIFtdKVxuICAgICAgIH0pKVxuOztcblxubGV0IHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHMgdGltaW5nX2V2ZW50cyA9XG4gIGxldCBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKSA9XG4gICAgU3RkaW8ucHJpbnRfZW5kbGluZSBcInBweF9tb2R1bGVfdGltZXI6IG92ZXJyaWRpbmcgdGltZSBtZWFzdXJlbWVudHMgZm9yIHRlc3RpbmdcIlxuICBpblxuICBsZXQgdGltaW5nX2V2ZW50cyA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlX2V4biBhbV9yZWNvcmRpbmdfdmFsdWUgd2l0aFxuICAgIHwgXCJGQUtFX01PRFVMRVNcIiAtPlxuICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICBmb3JjZSBmYWtlX3RpbWluZ19ldmVudHNcbiAgICB8IHN0cmluZyAtPlxuICAgICAgKG1hdGNoIER1cmF0aW9uLm9mX3N0cmluZyBzdHJpbmcgd2l0aFxuICAgICAgIHwgb3ZlcnJpZGUgLT5cbiAgICAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgICAgTGlzdC5tYXBpIHRpbWluZ19ldmVudHMgfmY6KGZ1biBpbmRleCAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+XG4gICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgICBMaXN0Lm1hcGlcbiAgICAgICAgICAgICAgIHRpbWluZ19ldmVudC5uZXN0ZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAgICAgICAgfmY6KGZ1biBpbmRleCBuZXN0ZWRfdGltaW5nX2V2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgICAgICAgeyBuZXN0ZWRfdGltaW5nX2V2ZW50IHdpdGggcnVudGltZSB9KVxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHRpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWU7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0pXG4gICAgICAgfCBleGNlcHRpb24gXyAtPiB0aW1pbmdfZXZlbnRzKVxuICBpblxuICB0aW1pbmdfZXZlbnRzIHw+IHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyB+aW5kZW50OjAgfD4gTGlzdC5pdGVyIH5mOlN0ZGlvLnByaW50X2VuZGxpbmVcbjs7XG5cbmxldCAoKSA9XG4gIGlmIGFtX3JlY29yZGluZ1xuICB0aGVuXG4gICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAoTGlzdC5yZXYgbW9kdWxlX3RpbWVyLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyKSlcbjs7XG4iLCJ0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCYXNlLlR5cGVfZXF1YWwudCA9IFQgOiAoJ2EsICdhKSB0XG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBjb252IDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IGEgLT4gYiA9IGZ1biBUIHggLT4geFxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuIiwiKCogdGhpcyBsaWIgc2hvdWxkIG5vdCBkZXBlbmQgb24gY29yZSAqKVxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgbGV0IGNvbXBhcmUgY21wIGEgYiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IDBcbiAgICAgIHwgW10sIF8gLT4gLTFcbiAgICAgIHwgXywgW10gLT4gMVxuICAgICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICAgIGxldCBuID0gY21wIHggeSBpblxuICAgICAgICBpZiBuID0gMCB0aGVuIGxvb3AgeHMgeXMgZWxzZSBuXG4gICAgaW5cbiAgICBsb29wIGEgYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBVaWQgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBuZXh0IDogc3RyaW5nIC0+IHRcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuICB2YWwgbmFtZSA6IHQgLT4gc3RyaW5nXG4gIHZhbCBzdGF0aWMgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSAoYS5jb2RlIDogaW50KSBiLmNvZGVcbiAgbGV0IGVxdWFsIGEgYiA9IChhLmNvZGUgOiBpbnQpID0gYi5jb2RlXG4gIGxldCB1aWQgPSByZWYgMFxuXG4gIGxldCBuZXh0IG5hbWUgPVxuICAgIGxldCBjb2RlID0gIXVpZCBpblxuICAgIGluY3IgdWlkO1xuICAgIHsgY29kZTsgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGhhc2ggYSA9IEhhc2h0YmwuaGFzaCBhLmNvZGVcbiAgbGV0IG5hbWUgYSA9IGEubmFtZVxuICBsZXQgc3RhdGljID0gbmV4dCBcInN0YXRpY1wiXG5lbmRcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdWlkIDogVWlkLnRcbiAgICA7IHBhcmFtcyA6IHQgbGlzdFxuICAgIH1cblxuICBsZXQgcmVjIGNvbXBhcmUgazEgazIgPVxuICAgIGlmIGsxID09IGsyXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY21wID0gVWlkLmNvbXBhcmUgazEudWlkIGsyLnVpZCBpblxuICAgICAgaWYgY21wIDw+IDAgdGhlbiBjbXAgZWxzZSBMaXN0LmNvbXBhcmUgY29tcGFyZSBrMS5wYXJhbXMgazIucGFyYW1zKVxuICA7O1xuXG4gIGxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcbiAgbGV0IGhhc2ggPSAoSGFzaHRibC5oYXNoIDogdCAtPiBpbnQpXG4gIGxldCBzdGF0aWMgPSB7IHVpZCA9IFVpZC5zdGF0aWM7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG50eXBlICdhIHQgPSBLZXkudFxudHlwZSAnYSB0eXBlbmFtZSA9ICdhIHRcblxubGV0IGtleSB0ID0gdFxubGV0IHVpZCB0ID0gdC5LZXkudWlkXG5sZXQgbmFtZSB0ID0gVWlkLm5hbWUgdC5LZXkudWlkXG5sZXQgc3RhdGljID0gS2V5LnN0YXRpY1xubGV0IGNyZWF0ZSA/KG5hbWUgPSBcIlR5cGVuYW1lLmNyZWF0ZVwiKSAoKSA9IHsgS2V5LnVpZCA9IFVpZC5uZXh0IG5hbWU7IHBhcmFtcyA9IFtdIH1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogVGhlIGFyZ3VtZW50IGZvciBPYmoubWFnaWMgaGVyZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluIGNvcmUvdHlwZV9lcXVhbCAqKVxuXG4gIGxldCBzYW1lICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPSBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuXG4gIGxldCBzYW1lX3dpdG5lc3MgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIFNvbWUgKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBmYWlsd2l0aCBcIlR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG5cIlxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2EgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gKCdhLCAnYikgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICdjIHR5cGVuYW1lIC0+ICgnYSwgJ2IsICdjKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICdlIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYyBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZCBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgZSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkOyBlIF0gfVxuZW5kXG5cbm1vZHVsZSBLZXlfdGFibGUgPSBIYXNodGJsLk1ha2UgKEtleSlcblxubW9kdWxlIFRhYmxlIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZGF0YSA9IERhdGEgOiAnYSB0ICogJ2EgWC50IC0+IGRhdGFcbiAgdHlwZSB0ID0gZGF0YSBLZXlfdGFibGUudFxuXG4gIGxldCBjcmVhdGUgaW50ID0gS2V5X3RhYmxlLmNyZWF0ZSBpbnRcbiAgbGV0IG1lbSB0YWJsZSBuYW1lID0gS2V5X3RhYmxlLm1lbSB0YWJsZSAoa2V5IG5hbWUpXG4gIGxldCBzZXQgdGFibGUgbmFtZSBkYXRhID0gS2V5X3RhYmxlLnJlcGxhY2UgdGFibGUgKGtleSBuYW1lKSAoRGF0YSAobmFtZSwgZGF0YSkpXG5cbiAgbGV0IGZpbmQgKHR5cGUgYSkgdGFibGUgKG5hbWUgOiBhIHR5cGVuYW1lKSA9XG4gICAgbGV0IGRhdGEgPVxuICAgICAgdHJ5IFNvbWUgKEtleV90YWJsZS5maW5kIHRhYmxlIChrZXkgbmFtZSkpIHdpdGhcbiAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgU3RkbGliLk5vdF9mb3VuZCAtPiBOb25lXG4gICAgaW5cbiAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoRGF0YSAobmFtZScsIGRhdGEpKSAtPlxuICAgICAgKGZ1biAodHlwZSBiKSAobmFtZScgOiBiIHR5cGVuYW1lKSAoZGF0YSA6IGIgWC50KSAtPlxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IChzYW1lX3dpdG5lc3NfZXhuIG5hbWUnIG5hbWUgOiAoYiwgYSkgVHlwZV9lcXVhbC50KSBpblxuICAgICAgICAgU29tZSAoZGF0YSA6IGEgWC50KSlcbiAgICAgICAgbmFtZSdcbiAgICAgICAgZGF0YVxuICA7O1xuZW5kXG5cbmxldCBmYWlsIHVpZF9hIHVpZF9iID1cbiAgbGV0IG1zZyA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuICVTICVTXCIgKFVpZC5uYW1lIHVpZF9hKSAoVWlkLm5hbWUgdWlkX2IpXG4gIGluXG4gIGZhaWx3aXRoIG1zZ1xuOztcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fMSAoQSA6IFMxKSAoQiA6IFMxKSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EuICgnYSBBLnQsICdhIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzIgKEEgOiBTMikgKEIgOiBTMikgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiLiAoKCdhLCAnYikgQS50LCAoJ2EsICdiKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzMgKEEgOiBTMykgKEIgOiBTMykgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhICdiICdjLiAoKCdhLCAnYiwgJ2MpIEEudCwgKCdhLCAnYiwgJ2MpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgbGV0IHVpZF9iID0gdWlkIChCLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl80IChBIDogUzQpIChCIDogUzQpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYyAnZC4gKCgnYSwgJ2IsICdjLCAnZCkgQS50LCAoJ2EsICdiLCAnYywgJ2QpIEIudCkgVHlwZV9lcXVhbC50IH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBpZiBVaWQuZXF1YWwgdWlkX2EgdWlkX2IgdGhlbiB7IGVxID0gT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCB9IGVsc2UgZmFpbCB1aWRfYSB1aWRfYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzUgKEEgOiBTNSkgKEIgOiBTNSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGVxIDpcbiAgICAgICAgJ2EgJ2IgJ2MgJ2QgJ2UuICgoJ2EsICdiLCAnYywgJ2QsICdlKSBBLnQsICgnYSwgJ2IsICdjLCAnZCwgJ2UpIEIudCkgVHlwZV9lcXVhbC50XG4gICAgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuIiwiKCoqXG4gICBQbGFjZSBob2xkZXIgZm9yIGNvbW1vbiBWYXJpYW50cyBhbmQgRmllbGRzIGludGVyZmFjZVxuKilcblxubW9kdWxlIE0gKFggOiBzaWdcbiAgICAoKipcbiAgICAgICBUaGlzIGZ1bmN0b3IgaXMgZXNzZW50aWFsbHkgdGhlcmUgYmVjYXVzZSB3ZSB1c2UgdGhpcyBzYW1lIGludGVyZmFjZSBpbiBkaWZmZXJlbnRcbiAgICAgICBjb250ZXh0cywgd2l0aCBkaWZmZXJlbnQgdHlwZXMgZm9yIFsnYSB0XS5cblxuICAgICAgIDEpIE9uZSB1c2UgY2FzZSBmb3IgaXQgaXMgd2hlcmUgWydhIFgudCA9ICdhIFR5cGVyZXAudF0uICBUaGVzZSBpbnRlcmZhY2VzIGFyZSB0aGVuXG4gICAgICAgcGFydCBvZiB0aGUgdHlwZSB3aXRuZXNzIGJ1aWx0IGZvciBhIHR5cGUgY29udGFpbmluZyBhIHJlY29yZCBvciBhIHZhcmlhbnQgaW4gaXRzXG4gICAgICAgc3RydWN0dXJlLiBbdHJhdmVyc2VdIHdpbGwgZ2l2ZSBhIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHR5cGUgcmVwcmVzZW50YXRpb24gZm9yIHRoZVxuICAgICAgIGFyZ3VtZW50cyBvZiBhIHZhcmlhbnQgb3IgcmVjb3JkIHR5cGUuXG5cbiAgICAgICAyKSBBbm90aGVyIHVzZSBjYXNlIGlzIGZvciBidWlsZGluZyBcInN0YWdlZCBnZW5lcmljIGNvbXB1dGF0aW9uc1wiLiBJbiB0aGF0IGNhc2UsIHRoZVxuICAgICAgIHR5cGUgWydhIFgudF0gaXMgdGhlIHR5cGUgb2YgdGhlIGNvbXB1dGF0aW9uIHRoYXQgaXMgYmVpbmcgYnVpbHQuICBbdHJhdmVyc2VdXG4gICAgICAgcmV0dXJucyB0aGUgY29tcHV0YXRpb24gYnVpbHQgZm9yIHRoZSBhcmd1bWVudC4gVGhlIGludGVyZmFjZSBubyBsb25nZXIgZXhwb3J0c1xuICAgICAgIHRoZSB0eXBlcmVwIG9mIHRoZSBhcmd1bWVudHMgaW4gaG9wZXMgb2YgZW5mb3JjaW5nIHRoYXQgbm8gdHlwZXJlcCB0cmF2ZXJzYWxcbiAgICAgICBoYXBwZW5zIGF0IHJ1bnRpbWUgaWYgdGhlIGNvbXB1dGF0aW9uIGhhcHBlbiB0byBiZSBhIGZ1bmN0aW9uLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gICgqIFRoZSBmdW5jdGlvbnMgcHJlZml4ZWQgYnkgW2ludGVybmFsXSBhcyB3ZWxsIGFzIHRoZSBtb2R1bGUgc3VmZml4ZWQgYnkgW19pbnRlcm5hbF1cbiAgICAgYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIFt3aXRoIHR5cGVyZXBdIGFzIHdlbGwgYXMgc29tZVxuICAgICBpbnRlcm5hbHMgb2YgdGhlIHR5cGVyZXAgbGlicmFyeS4gRG8gbm90IGNvbnNpZGVyIHVzaW5nIHRoZXNlIHNvbWV3aGVyZSBlbHNlLiAgVGhleVxuICAgICBzaG91bGQgaWRlYWxseSBub3QgYmUgZXhwb3J0ZWQgb3V0c2lkZSB0aGUgdHlwZXJlcCBsaWJyYXJ5LCBidXQgdGhlIGdlbmVyYXRlZCBjb2RlXG4gICAgIG5lZWRzIHNvbWVob3cgdG8gYWNjZXNzIHRoaXMsIGV2ZW4gb3V0c2lkZS4gKilcblxuICBtb2R1bGUgVGFnX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdCA9XG4gICAgICB7IGxhYmVsIDogc3RyaW5nXG4gICAgICA7IHJlcCA6ICdhcmdzIFgudFxuICAgICAgOyBhcml0eSA6IGludFxuICAgICAgOyBhcmdzX2xhYmVscyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGluZGV4IDogaW50XG4gICAgICA7IG9jYW1sX3JlcHIgOiBpbnRcbiAgICAgIDsgdHlpZCA6ICdhcmdzIFR5cGVuYW1lLnRcbiAgICAgIDsgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgY3JlYXRlXG4gICAgICB9XG4gIGVuZFxuXG4gICgqKlxuICAgICBXaXRuZXNzIG9mIGEgdGFnLCB0aGF0IGlzIGFuIGl0ZW0gaW4gYSB2YXJpYW50IHR5cGUsIGFsc28gY2FsbGVkIGFuIFwiYXBwbGllZFxuICAgICB2YXJpYW50IENvbnN0cnVjdG9yXCJcblxuICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIHRoZSBzZWNvbmQgaXMgdGhlIHR5cGUgb2YgdGhlIHRhZ1xuICAgICBwYXJhbWV0ZXJzLiAgRXhhbXBsZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9XG4gICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgIHwgQiBvZiBzdHJpbmdcbiAgICAgICAgIHwgQyBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfVxuICAgICBdfVxuXG4gICAgIHRoaXMgdHlwZSBoYXMgdGhyZWUgY29uc3RydWN0b3JzLiBGb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nXG4gICAgIFtUYWcudF06XG5cbiAgICAge1tcbiAgICAgICB2YWwgdGFnX0EgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgICAgdmFsIHRhZ19CIDogKHQsIHN0cmluZyAgICAgICAgKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQyA6ICh0LCAoaW50ICogc3RyaW5nKSkgVGFnLnRcbiAgICAgXX1cblxuICAgICBOb3RlLCBpbmxpbmUgcmVjb3JkIGluIHZhcmlhbnQgYXJlIHR5cGVkIGFzIGlmIHRoZWlyIGRlZmluaXRpb24gd2FzIHVzaW5nIHR1cGxlcyxcbiAgICAgd2l0aG91dCB0aGUgcGFyZW50aGVzaXMuICBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGVpciBydW50aW1lIHJlcHJlc2VudGF0aW9uLiAgQnV0XG4gICAgIHRoZSBkaXN0aW5jdGlvbiBpcyBjYXJyaWVkIGFuZCBhdmFpbGFibGUgZm9yIGludHJvc3BlY3Rpb24gYXMgcGFydCBvZiB0aGUgW1RhZy50XS5cbiAgICAgU2VlIFthcmdzX2xhYmVsc10uICopXG4gIG1vZHVsZSBUYWcgOiBzaWdcbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZSA9XG4gICAgICB8IEFyZ3Mgb2YgKCdhcmdzIC0+ICd2YXJpYW50KVxuICAgICAgfCBDb25zdCBvZiAndmFyaWFudFxuXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSB0XG5cbiAgICAoKipcbiAgICAgICBUaGUgbmFtZSBvZiB0aGUgY29uc3RydWN0b3IgYXMgaXQgaXMgZ2l2ZW4gaW4gdGhlIGNvbmNyZXRlIHN5bnRheFxuICAgICAgIEV4YW1wbGVzOlxuXG4gICAgICAge3ZcbiAgICAgICAgIENvbnN0cnVjdG9yICAgICAgICB8IGxhYmVsXG4gICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICB8IEEgb2YgaW50ICAgICAgICAgfCAgXCJBXCJcbiAgICAgICAgIHwgYGEgb2YgaW50ICAgICAgICB8ICBcImFcIlxuICAgICAgICAgfCBgQSBvZiBpbnQgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IEEgb2YgeyB4IDogaW50IH0gfCAgXCJBXCJcbiAgICAgICB2fVxuXG4gICAgICAgZm9yIHN0YW5kYXJkIHZhcmlhbnQsIHRoZSBvY2FtbCBzeW50YXggaW1wbGllcyB0aGF0IHRoaXMgbGFiZWwgd2lsbCBhbHdheXMgc3RhcnRzXG4gICAgICAgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLiBGb3IgcG9seW1vcnBoaWMgdmFyaWFudHMsIHRoaXMgbWlnaHQgYmUgYSBsb3dlcmNhc2UgY2hhci5cbiAgICAgICBGb3IgcG9seW1vcnBoaWMgdmFyaWFudCwgdGhpcyBsYWJlbCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICopXG4gICAgdmFsIGxhYmVsIDogKF8sIF8pIHQgLT4gc3RyaW5nXG5cbiAgICAoKipcbiAgICAgICBUaGUgc2l6ZSBvZiB0aGUgb2NhbWwgaGVhcCBibG9jayBjb250YWluaW5nIHRoZSBhcmd1bWVudHNcblxuICAgICAgIEV4YW1wbGVzOlxuICAgICAgIHt2XG4gICAgICAgICAgMDogfCBBIHwgJ0FcbiAgICAgICAgICAxOiB8IEEgb2YgaW50IHwgYEEgb2YgaW50IHwgQSBvZiAoaW50ICogaW50KSB8IGBBIG9mIChpbnQgKiBpbnQpXG4gICAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50fVxuICAgICAgICAgIDI6IHwgQSBvZiBpbnQgKiBmbG9hdFxuICAgICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfVxuICAgICAgICAgIGV0Yy5cbiAgICAgICB2fVxuICAgICopXG4gICAgdmFsIGFyaXR5IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKiogVGhlIGxhYmVsIG9mIHRoZSBmaWVsZHMgZm9yIGlubGluZSByZWNvcmRzLiAgRm9yIG90aGVyIGZvcm1zIG9mIHRhZ3MsIHRoaXMgaXMgdGhlXG4gICAgICAgIGVtcHR5IGxpc3QuICBXaGVuIHRoaXMgcmV0dXJucyBhIG5vbiBlbXB0eSBsaXN0LCB0aGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBsaXN0XG4gICAgICAgIGlzIGVxdWFsIHRvIHRoZSBhcml0eS5cblxuICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgIHt2XG4gICAgICAgICAoMSkgRW1wdHk6XG5cbiAgICAgICAgICAgfCBBIHwgJ0FcbiAgICAgICAgICAgfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICB8IGBBIG9mIGludCAqIGludFxuICAgICAgICAgICB8IEEgb2YgaW50ICogZmxvYXRcblxuICAgICAgICAgKDIpIE5vbiBlbXB0eTpcblxuICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50IH0gICAgICAgICAgICAgICAtPiBbIFwieFwiIF1cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludDsgeSA6IHN0cmluZyB9ICAgLT4gWyBcInhcIiA7IFwieVwiIF1cbiAgICAgICB2fVxuICAgICopXG4gICAgdmFsIGFyZ3NfbGFiZWxzIDogKF8sIF8pIHQgLT4gc3RyaW5nIGxpc3RcblxuICAgICgqKlxuICAgICAgIFRoZSBpbmRleCBvZiB0aGUgY29uc3RydWN0b3IgaW4gdGhlIGxpc3Qgb2YgYWxsIHRoZSB2YXJpYW50IHR5cGUncyBjb25zdHJ1Y3RvcnNcbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgfCBBIG9mIGludCAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEMgb2YgaW50ICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBEIG9mIGNoYXIgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRSBvZiB7IHggOiBpbnQgfSAgKCogNCAqKVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIG9jYW1sX3JlcHIgaXMgcmVsYXRlZCB0byB0aGUgcnVudGltZSBvZiBvYmplY3RzLiB0aGlzIGlzIGVzc2VudGlhbGx5IGEgd2F5IG9mXG4gICAgICAgZ2l2aW5nIG9uZSB0aGUgYWJpbGl0eSB0byByZWJ1aWxkIGR5bmFtaWNhbGx5IGFuIFtPYmoudF0gcmVwcmVzZW50aW5nIGEgdGFnLlxuXG4gICAgICAgUG9seW1vcnBoaWMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICBbb2NhbWxfcmVwcl0gaXMgdGhlIGhhc2ggb2YgdGhlIGxhYmVsLCBhcyBkb25lIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICBFeGFtcGxlOlxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljIGBiYXIpICAoKiA0ODk1MTg3ICopXG4gICAgICAgcHJpbnRfaW50IChPYmoubWFnaWMgJ2ZvbykgICgqIDUwOTcyMjIgKilcblxuICAgICAgIFN0YW5kYXJkcyB2YXJpYW50czpcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICBbb2NhbWxfcmVwcl0gaXMgdGhlIHRhZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciB3aXRoaW4gdGhlIHR5cGUuXG4gICAgICAgdGhlIHdheSBpdCB3b3JrcyBpbiB0aGUgb2NhbWwgcnVudGltZSBpcyBieSBwYXJ0aXRpb25pbmcgdGhlIGNvbnN0cnVjdG9ycyByZWdhcmRpbmdcbiAgICAgICBpZiB0aGV5IGhhdmUgc29tZSBhcmd1bWVudHMgb3Igbm90LCBwcmVzZXJ2aW5nIHRoZSBvcmRlciwgdGhlbiBhc3NpZ24gaW5jcmVhc2luZ1xuICAgICAgIGluZGV4IHdpdGhpbmcgZWFjaCBwYXJ0aXRpb24uXG4gICAgICAgRXhhbXBsZTpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPSAgICAgICAgICAgICAgICAgICgqIG5vIGFyZyAqKSAgKCogYXJncyAqKVxuICAgICAgICAgICB8IEEgICAgICAgICAgICAgICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBCIG9mIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDAgKilcbiAgICAgICAgICAgfCBDICAgICAgICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgRCBvZiAoZmxvYXQgKiBzdHJpbmcpICAgICAgICAgICAgICAgICAoKiAxICopXG4gICAgICAgICAgIHwgRSAgICAgICAgICAgICAgICAgICAgICAgKCogMiAqKVxuICAgICAgICAgICB8IEYgICAgICAgICAgICAgICAgICAgICAgICgqIDMgKilcbiAgICAgICAgICAgfCBHIG9mIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBIIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgICAgICAgICgqIDMgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIG9jYW1sX3JlcHIgOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdpdmUgYmFjayBhIHdheSBvZiBjb25zdHJ1Y3RpbmcgYSB2YWx1ZSBvZiB0aGF0IGNvbnN0cnVjdG9yIGZyb20gaXRzIGFyZ3VtZW50cy5cblxuICAgICAgIEV4YW1wbGVzOlxuXG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiAoaW50ICogc3RyaW5nKVxuICAgICAgICAgICB8IEIgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgfCBDXG4gICAgICAgICAgIHwgRCBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfVxuICAgICAgIF19XG5cbiAgICAgICBbY3JlYXRlXSB3aWxsIHJldHVybiBzb21ldGhpbmcgZXF1aXZhbGVudCB0bzpcbiAgICAgICB0YWdfQSA6IFtBcmdzIChmdW4gKGQgOiAoaW50ICogc3RyaW5nKSAtPiBBIGQpXVxuICAgICAgIHRhZ19CIDogW0FyZ3MgKGZ1biAoaSwgZikgLT4gQiAoaSwgZikpXVxuICAgICAgIHRhZ19DIDogW0NvbnN0IENdXG4gICAgICAgdGFnX0QgOiBbQXJncyAoZnVuICh4LCB5KSAtPiBEIHsgeDsgeSB9KV1cbiAgICAqKVxuICAgIHZhbCBjcmVhdGUgOiAoJ3ZhcmlhbnQsICdhcmdzKSB0IC0+ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuXG4gICAgKCoqIHJldHVybiB0aGUgdHlwZV9uYW1lIG9mIHRoZSBhcmd1bWVudHMuIG1pZ2h0IGJlIHVzZWQgdG8gcGVyZm9ybSBzb21lIGxvb2t1cCBiYXNlZFxuICAgICAgICBvbiBpdCB3aGlsZSBidWlsZGluZyBhIGNvbXB1dGF0aW9uIGZvciBleGFtcGxlICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgVHlwZW5hbWUudFxuXG4gICAgKCoqIGdldCB0aGUgcmVwcmVzZW50YXRpb24vY29tcHV0YXRpb24gb2YgdGhlIGFyZ3VtZW50cyAqKVxuICAgIHZhbCB0cmF2ZXJzZSA6IChfLCAnYXJncykgdCAtPiAnYXJncyBYLnRcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICgnYSwgJ2IpIFRhZ19pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBUYWdfaW50ZXJuYWxcblxuICAgIGxldCBsYWJlbCB0ID0gdC5sYWJlbFxuICAgIGxldCBhcml0eSB0ID0gdC5hcml0eVxuICAgIGxldCBhcmdzX2xhYmVscyB0ID0gdC5hcmdzX2xhYmVsc1xuICAgIGxldCBpbmRleCB0ID0gdC5pbmRleFxuICAgIGxldCBvY2FtbF9yZXByIHQgPSB0Lm9jYW1sX3JlcHJcbiAgICBsZXQgY3JlYXRlIHQgPSB0LmNyZWF0ZVxuICAgIGxldCB0eWlkIHQgPSB0LnR5aWRcbiAgICBsZXQgdHJhdmVyc2UgdCA9IHQucmVwXG4gICAgbGV0IGludGVybmFsX3VzZV9vbmx5IHQgPSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50X2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2EpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYSkgVGFnLnQgKiAnYSAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgdHlwZW5hbWUgOiAnYSBUeXBlbmFtZS50XG4gICAgICA7IHRhZ3MgOiAnYSB0YWcgYXJyYXlcbiAgICAgIDsgcG9seW1vcnBoaWMgOiBib29sXG4gICAgICA7IHZhbHVlIDogJ2EgLT4gJ2EgdmFsdWVcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFZhcmlhbnQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgdGFncyBjb25zdGl0dWluZyBhIHZhcmlhbnRcbiAgICAgICB0eXBlLiB0aGUgWyd2YXJpYW50XSBwYXJhbWV0ZXIgaXMgdGhlIHZhcmlhbnQgdHlwZSwgaXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aGVcbiAgICAgICBjb25zdHJ1Y3RvcnMgb2YgdGhhdCB2YXJpYW50IHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXJzIG1pZ2h0IGJlIGRpZmZlcmVudFxuICAgICAgIGZvciBlYWNoIGNvbnN0cnVjdG9yIGFuZCBpcyB0aHVzIGV4aXN0ZW50aWFsXG4gICAgKilcbiAgICB0eXBlIF8gdGFnID0gVGFnIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgLT4gJ3ZhcmlhbnQgdGFnXG5cbiAgICAoKipcbiAgICAgICBBIHNpbWlsYXIgZXhpc3RlbnRpYWwgY29uc3RydWN0b3IgdG8gW18gdGFnXSBidXQgdGhpcyBvbmUgaG9sZHMgYSB2YWx1ZSB3aG9zZSB0eXBlXG4gICAgICAgaXMgdGhlIGFyZ3VtZW50cyBvZiB0aGUgdGFnIGNvbnN0cnVjdG9yLiAgQSB2YWx1ZSBvZiB0eXBlIFsnYSB2YWx1ZV0gaXMgYSBwYWlyIG9mXG4gICAgICAgKDEpIGEgdmFsdWUgb2YgdmFyaWFudCB0eXBlIFsnYV0gYWxvbmcgd2l0aCAoMikgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICAgICBjb25zdHJ1Y3RvciB3aXRoaW4gdGhlIHR5cGUgWydhXVxuICAgICopXG4gICAgdHlwZSBfIHZhbHVlID0gVmFsdWUgOiAoJ3ZhcmlhbnQsICdhcmdzKSBUYWcudCAqICdhcmdzIC0+ICd2YXJpYW50IHZhbHVlXG5cbiAgICAoKipcbiAgICAgICBXaXRuZXNzIG9mIGEgdmFyaWFudCB0eXBlLiBUaGUgcGFyYW1ldGVyIGlzIHRoZSB0eXBlIG9mIHRoZSB2YXJpYW50IHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRhZ3Mgb2YgdGhpcyB2YXJpYW50IHR5cGUgZGVmaW5pdGlvbi5cbiAgICAqKVxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2V0IHRoZSBudGggdGFnIG9mIHRoaXMgdmFyaWFudCB0eXBlLCBpbmRleGVkIGZyb20gMC5cbiAgICAqKVxuICAgIHZhbCB0YWcgOiAnYSB0IC0+IGludCAtPiAnYSB0YWdcblxuICAgICgqKlxuICAgICAgIERpc3Rpbmd1aXNoIHBvbHltb3JwaGljIHZhcmlhbnRzIGFuZCBzdGFuZGFyZCB2YXJpYW50cy4gVHlwaWNhbGx5LCBwb2x5bW9ycGhpY1xuICAgICAgIHZhcmlhbnRzIHRhZ3Mgc3RhcnRzIHdpdGggdGhlIFtgXSBjaGFyYWN0ZXIuXG4gICAgICAgRXhhbXBsZVxuICAgICAgIHBvbHltb3JwaGljIHZhcmlhbnQ6IHR5cGUgdCA9IFsgYEEgfCBgQiBdXG4gICAgICAgc3RhbmRhcmQgdmFyaWFudDogICAgdHlwZSB0ID0gQSB8IEJcbiAgICAqKVxuICAgIHZhbCBpc19wb2x5bW9ycGhpYyA6IF8gdCAtPiBib29sXG5cbiAgICAoKipcbiAgICAgICBQYXR0ZXJuIG1hdGNoaW5nIG9uIGEgdmFsdWUgb2YgdGhpcyB2YXJpYW50IHR5cGUuXG4gICAgKilcbiAgICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhIC0+ICdhIHZhbHVlXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSB0YWcgLT4gJ2FjYykgLT4gJ2FjY1xuXG4gICAgKCogdXNlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiB0byBidWlsZCB0eXBlIHdpdG5lc3Nlcywgb3IgYnkgc29tZSBpbnRlcm5hbCBwYXJ0cyBvZlxuICAgICAgIHR5cGVyZXAuIHlvdSBzaG91bGQgZmVlbCBiYWQgaWYgeW91IG5lZWQgdG8gdXNlIGl0IGluIHNvbWUgdXNlciBjb2RlICopXG4gICAgdmFsIGludGVybmFsX3VzZV9vbmx5IDogJ2EgVmFyaWFudF9pbnRlcm5hbC50IC0+ICdhIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJpYW50X2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LnRhZ3NcbiAgICBsZXQgdGFnIHQgaW5kZXggPSB0LnRhZ3MuKGluZGV4KVxuICAgIGxldCBpc19wb2x5bW9ycGhpYyB0ID0gdC5wb2x5bW9ycGhpY1xuICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPSBBcnJheS5mb2xkX2xlZnQgZiBpbml0IHQudGFnc1xuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgRmllbGRfaW50ZXJuYWwgPSBzdHJ1Y3RcbiAgICB0eXBlICgncmVjb3JkLCAnZmllbGQpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnZmllbGQgWC50XG4gICAgICA7IGluZGV4IDogaW50XG4gICAgICA7IHR5aWQgOiAnZmllbGQgVHlwZW5hbWUudFxuICAgICAgOyBnZXQgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgICAgOyAoKiBzZXQgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uOyAoXFwqIG11dGFibGUgZmllbGQgKlxcKSAqKVxuICAgICAgICBpc19tdXRhYmxlIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIGZpZWxkLCB0aGF0IGlzIGFuIGl0ZW0gaW4gYSByZWNvcmQgdHlwZS5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgcmVjb3JkIHR5cGUsIHRoZSBzZWNvbmQgaXMgdGhlIHR5cGUgb2YgdGhlIGZpZWxkLlxuICAgICBFeGFtcGxlOlxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludCA7IHkgOiBzdHJpbmcgfVxuICAgICBdfVxuICAgICBUaGlzIHR5cGUgaGFzIHR3byBmaWVsZHMuIGZvciBlYWNoIG9mIHRoZW0gd2UnbGwgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgW0ZpZWxkLnRdXG5cbiAgICAgdmFsIGZpZWxkX3ggOiAodCwgaW50KSBGaWVsZC50XG4gICAgIHZhbCBmaWVsZF95IDogKHQsIHN0cmluZykgRmllbGQudFxuICAqKVxuICBtb2R1bGUgRmllbGQgOiBzaWdcbiAgICB0eXBlICgncmVjb3JkLCAnZmllbGQpIHRcblxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpZWxkIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7W1xuICAgICAgICAgeyB4ICAgOiBpbnQ7ICAgICAoKiBcInhcIiAqKVxuICAgICAgICAgICBmb28gOiBzdHJpbmc7ICAoKiBcImZvb1wiICopXG4gICAgICAgICAgIGJhciA6IGZsb2F0OyAgICgqIFwiYmFyXCIgKilcbiAgICAgICAgIH1cbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGxhYmVsIDogKF8sIF8pIHQgLT4gc3RyaW5nXG5cbiAgICAoKipcbiAgICAgICBUaGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgZmllbGQgaW4gdGhlIGxpc3Qgb2YgYWxsIGZpZWxkcyBmb3IgdGhpcyByZWNvcmQgdHlwZS5cbiAgICAgICBFeGFtcGxlOlxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPSB7XG4gICAgICAgICAgIHggICA6IGludDsgICAgICgqIDAgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogMSAqKVxuICAgICAgICAgICBiYXIgOiBzdHJpbmc7ICAoKiAyICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBpbmRleCA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgRmllbGQgYWNjZXNzb3JzLiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBkb3Qgb3BlcmF0aW9uLlxuICAgICAgIFtGaWVsZC5nZXQgYmFyX2ZpZWxkIHRdIHJldHVybnMgdGhlIGZpZWxkIFtiYXJdIG9mIHRoZSByZWNvcmQgdmFsdWUgW3RdLCBqdXN0IHRoZVxuICAgICAgIHNhbWUgYXMgW3QuYmFyXVxuICAgICopXG4gICAgdmFsIGdldCA6ICgncmVjb3JkLCAnZmllbGQpIHQgLT4gJ3JlY29yZCAtPiAnZmllbGRcblxuICAgICgqKiByZXR1cm4gd2hldGhlciB0aGUgZmllbGQgaXMgbXV0YWJsZSwgaS5lLiB3aGV0aGVyIGl0cyBkZWNsYXJhdGlvbiBpcyBwcmVmaXhlZCB3aXRoXG4gICAgICAgIHRoZSBrZXl3b3JkIFttdXRhYmxlXSAqKVxuICAgIHZhbCBpc19tdXRhYmxlIDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICAgKCoqIHJldHVybiB0aGUgdHlwZV9uYW1lIG9mIHRoZSBhcmd1bWVudHMuICBNaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgKilcbiAgICB2YWwgdHlpZCA6IChfLCAnZmllbGQpIHQgLT4gJ2ZpZWxkIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBYLnRcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICgnYSwgJ2IpIEZpZWxkX2ludGVybmFsLnQgLT4gKCdhLCAnYikgdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEZpZWxkX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgZ2V0IHQgPSB0LmdldFxuICAgIGxldCBpc19tdXRhYmxlIHQgPSB0LmlzX211dGFibGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgUmVjb3JkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSBfIGZpZWxkID0gRmllbGQgOiAoJ3JlY29yZCwgJ2EpIEZpZWxkLnQgLT4gJ3JlY29yZCBmaWVsZFxuICAgIHR5cGUgJ3JlY29yZCBmaWVsZHMgPSB7IGdldCA6ICdmaWVsZC4gKCdyZWNvcmQsICdmaWVsZCkgRmllbGQudCAtPiAnZmllbGQgfVxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgdHlwZW5hbWUgOiAnYSBUeXBlbmFtZS50XG4gICAgICA7IGZpZWxkcyA6ICdhIGZpZWxkIGFycmF5XG4gICAgICA7IGhhc19kb3VibGVfYXJyYXlfdGFnIDogYm9vbFxuICAgICAgOyBjcmVhdGUgOiAnYSBmaWVsZHMgLT4gJ2FcbiAgICAgIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZCA6IHNpZ1xuICAgICgqKlxuICAgICAgIEFuIGV4aXN0ZW50aWFsIHR5cGUgdXNlZCB0byBnYXRoZXIgYWxsIHRoZSBmaWVsZHMgY29uc3RpdHVpbmcgYSByZWNvcmQgdHlwZS4gdGhlXG4gICAgICAgWydyZWNvcmRdIHBhcmFtZXRlciBpcyB0aGUgcmVjb3JkIHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlIGZpZWxkIG9mIHRoYXRcbiAgICAgICByZWNvcmQgdHlwZS4gVGhlIHR5cGUgb2YgdGhlIGZpZWxkcyBtaWdodCBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggZmllbGQgYW5kIGlzIHRodXNcbiAgICAgICBleGlzdGVudGlhbC5cbiAgICAqKVxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcblxuICAgICgqKlxuICAgICAgIFsncmVjb3JkIGZpZWxkc10gaXMgYSB0eXBlIGlzb21vcnBoaWMgdG8gWydyZWNvcmRdLiAgVGhpcyBnaXZlcyBhIHdheSB0byBnZXQgdGhlXG4gICAgICAgZmllbGQgdmFsdWUgZm9yIGVhY2ggZmllbGQgb2YgdGhlIHJlY29yZC4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyByZXByZXNlbnRhdGlvbiBpc1xuICAgICAgIHRoYXQgaXQgaXMgY29udmVuaWVudCBmb3Igd3JpdGluZyBnZW5lcmljIGNvbXB1dGF0aW9ucy5cbiAgICAqKVxuICAgIHR5cGUgJ3JlY29yZCBmaWVsZHMgPSB7IGdldCA6ICdmaWVsZC4gKCdyZWNvcmQsICdmaWVsZCkgRmllbGQudCAtPiAnZmllbGQgfVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHJlY29yZCB0eXBlLiBUaGUgcGFyYW1ldGVyIGlzIHRoZSB0eXBlIG9mIHRoZSByZWNvcmQgdHlwZSB3aXRuZXNzZWQuXG4gICAgKilcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG5cbiAgICAoKipcbiAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZmllbGRzIG9mIHRoaXMgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbi5cbiAgICAqKVxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuXG4gICAgKCoqXG4gICAgICAgR2V0IHRoZSBudGggZmllbGQgb2YgdGhpcyByZWNvcmQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgZmllbGQgOiAnYSB0IC0+IGludCAtPiAnYSBmaWVsZFxuXG4gICAgKCoqXG4gICAgICAgVGhpcyBpcyBhIGxvdyBsZXZlbCBtZXRhZGF0YSByZWdhcmRpbmcgdGhlIHdheSB0aGUgb2NhbWwgY29tcGlsZXIgcmVwcmVzZW50IHRoZVxuICAgICAgIGFycmF5IHVuZGVybmVhdGggdGhhdCBpcyB0aGUgcnVudGltZSB2YWx1ZSBvZiBhIHJlY29yZCBvZiB0eXBlIFsnYV0gZ2l2ZW4gYSB3aXRuZXNzXG4gICAgICAgb2YgdHlwZSBbJ2EgdF0uIFtoYXNfZG91YmxlX2FycmF5X3RhZyB3XSByZXR1cm5zIFt0cnVlXSBpZiB0aGUgYXJyYXkgdGhhdFxuICAgICAgIHJlcHJlc2VudHMgcnVudGltZSB2YWx1ZXMgb2YgdGhpcyB0eXBlIGlzIGFuIG9wdGltaXplZCBvY2FtbCBmbG9hdCBhcnJheS5cbiAgICAgICBUeXBpY2FsbHksIHRoaXMgd2lsbCBiZSB0cnVlIGZvciByZWNvcmQgd2hlcmUgYWxsIGZpZWxkcyBhcmUgc3RhdGljYWxseSBrbm93biBhcyB0b1xuICAgICAgIGJlIFtmbG9hdHNdLlxuXG4gICAgICAgTm90ZSB0aGF0IHlvdSBjYW4ndCBnZXQgdGhpcyBpbmZvcm1hdGlvbiBkeW5hbWljYWxseSBieSBpbnNwZWN0aW5nIHRoZSB0eXBlcmVwIG9uY2VcbiAgICAgICBpdCBpcyBhcHBsaWVkLCBiZWNhdXNlIHRoZXJlIGlzIGF0IHRoaXMgcG9pbnQgbm8gd2F5IHRvIHRlbGwgd2hldGhlciBvbmUgb2YgdGhlXG4gICAgICAgZmllbGQgaXMgcG9seW1vcnBoaWMgaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiAgICAqKVxuICAgIHZhbCBoYXNfZG91YmxlX2FycmF5X3RhZyA6IF8gdCAtPiBib29sXG5cbiAgICAoKipcbiAgICAgICBFeHBvc2Ugb25lIGRpcmVjdGlvbiBvZiB0aGUgaXNvbW9ycGhpc20gYmV0d2VlbiBhIHZhbHVlIG9mIHR5cGUgWydhXSBhbmQgYSB2YWx1ZSBvZlxuICAgICAgIHR5cGUgWydhIGZpZWxkc10uIEJhc2ljYWxseSwgZ2l2ZW4gYW4gZW5jb2Rpbmcgd2F5IG9mIGFjY2Vzc2luZyB0aGUgdmFsdWUgb2YgYWxsXG4gICAgICAgdGhlIGZpZWxkcyBvZiBhIHJlY29yZCwgY3JlYXRlIHRoYXQgcmVjb3JkIGFuZCByZXR1cm4gaXQuXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogJ2EgdCAtPiAnYSBmaWVsZHMgLT4gJ2FcblxuICAgICgqKlxuICAgICAgIGZvbGRpbmcgYWxvbmcgdGhlIHRhZ3Mgb2YgdGhlIHZhcmlhbnQgdHlwZVxuICAgICopXG4gICAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOignYWNjIC0+ICdhIGZpZWxkIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFJlY29yZF9pbnRlcm5hbC50IC0+ICdhIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBSZWNvcmRfaW50ZXJuYWxcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IHQgPSB0LnR5cGVuYW1lXG4gICAgbGV0IGxlbmd0aCB0ID0gQXJyYXkubGVuZ3RoIHQuZmllbGRzXG4gICAgbGV0IGZpZWxkIHQgaW5kZXggPSB0LmZpZWxkcy4oaW5kZXgpXG4gICAgbGV0IGhhc19kb3VibGVfYXJyYXlfdGFnIHQgPSB0Lmhhc19kb3VibGVfYXJyYXlfdGFnXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LmZpZWxkc1xuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcbmVuZFxuIiwibW9kdWxlIE5hbWVfb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVuYW1lX29mX2ludCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50MzIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDMyXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDMyXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9pbnQ2NCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gaW50NjRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiaW50NjRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX25hdGl2ZWludCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gbmF0aXZlaW50XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcIm5hdGl2ZWludFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfY2hhciA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gY2hhclxuXG4gICAgICAgIGxldCBuYW1lID0gXCJjaGFyXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9mbG9hdCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgICBsZXQgbmFtZSA9IFwiZmxvYXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3N0cmluZyA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInN0cmluZ1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYnl0ZXMgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGJ5dGVzXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImJ5dGVzXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9ib29sID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBib29sXG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImJvb2xcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3VuaXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHVuaXRcblxuICAgICAgICBsZXQgbmFtZSA9IFwidW5pdFwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBtb2R1bGUgTV9vcHRpb24gPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICAgICAgbGV0IG5hbWUgPSBcIm9wdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9vcHRpb24gPSBNX29wdGlvbi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGlzdCA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IG5hbWUgPSBcImxpc3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGlzdCA9IE1fbGlzdC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fYXJyYXkgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBhcnJheVxuXG4gICAgICBsZXQgbmFtZSA9IFwiYXJyYXlcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfYXJyYXkgPSBNX2FycmF5LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9sYXp5X3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsYXp5X3RcblxuICAgICAgbGV0IG5hbWUgPSBcImxhenlfdFwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9sYXp5X3QgPSBNX2xhenlfdC50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fcmVmID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVmXG5cbiAgICAgIGxldCBuYW1lID0gXCJyZWZcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfcmVmID0gTV9yZWYudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2Z1bmN0aW9uID0gVHlwZW5hbWUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgLT4gJ2JcblxuICAgICAgbGV0IG5hbWUgPSBcImZ1bmN0aW9uXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2Z1bmN0aW9uID0gTV9mdW5jdGlvbi50eXBlbmFtZV9vZl90XG5cbiAgdHlwZSB0dXBsZTAgPSB1bml0XG5cbiAgbW9kdWxlIE1fdHVwbGUwID0gVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdHVwbGUwXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTBcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUwID0gTV90dXBsZTAudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2JcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlMlwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTIgPSBNX3R1cGxlMi50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGUzID0gVHlwZW5hbWUuTWFrZTMgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhICogJ2IgKiAnY1xuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUzXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMyA9IE1fdHVwbGUzLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTQgPSBUeXBlbmFtZS5NYWtlNCAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICdhICogJ2IgKiAnYyAqICdkXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTRcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU0ID0gTV90dXBsZTQudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlNSA9IFR5cGVuYW1lLk1ha2U1IChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA9ICdhICogJ2IgKiAnYyAqICdkICogJ2VcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlNVwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTUgPSBNX3R1cGxlNS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIHJlYyBUeXBlcmVwIDogc2lnXG4gIHR5cGUgXyB0ID1cbiAgICB8IEludCA6IGludCB0XG4gICAgfCBJbnQzMiA6IGludDMyIHRcbiAgICB8IEludDY0IDogaW50NjQgdFxuICAgIHwgTmF0aXZlaW50IDogbmF0aXZlaW50IHRcbiAgICB8IENoYXIgOiBjaGFyIHRcbiAgICB8IEZsb2F0IDogZmxvYXQgdFxuICAgIHwgU3RyaW5nIDogc3RyaW5nIHRcbiAgICB8IEJ5dGVzIDogYnl0ZXMgdFxuICAgIHwgQm9vbCA6IGJvb2wgdFxuICAgIHwgVW5pdCA6IHVuaXQgdFxuICAgIHwgT3B0aW9uIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHwgTGlzdCA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgfCBBcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXkgdFxuICAgIHwgTGF6eSA6ICdhIHQgLT4gJ2EgbGF6eV90IHRcbiAgICB8IFJlZiA6ICdhIHQgLT4gJ2EgcmVmIHRcbiAgICB8IEZ1bmN0aW9uIDogKCdkb20gdCAqICdybmcgdCkgLT4gKCdkb20gLT4gJ3JuZykgdFxuICAgIHwgVHVwbGUgOiAnYSBUeXBlcmVwLlR1cGxlLnQgLT4gJ2EgdFxuICAgIHwgUmVjb3JkIDogJ2EgVHlwZXJlcC5SZWNvcmQudCAtPiAnYSB0XG4gICAgfCBWYXJpYW50IDogJ2EgVHlwZXJlcC5WYXJpYW50LnQgLT4gJ2EgdFxuICAgIHwgTmFtZWQgOiAoJ2EgVHlwZXJlcC5OYW1lZC50ICogJ2EgdCBsYXp5X3Qgb3B0aW9uKSAtPiAnYSB0XG5cbiAgdHlwZSBwYWNrZWQgPSBUIDogJ2EgdCAtPiBwYWNrZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICBtb2R1bGUgdHlwZSBUMCA9IHNpZ1xuICAgICAgdHlwZSBuYW1lZFxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6IG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICAgICAgdHlwZSAnYSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIGEgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDIgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdiIFR5cGVuYW1lLnQgLT4gKCdhLCAnYikgbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMyA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNCA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDUgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZVxuXG4gICAgICB2YWwgZSA6IGUgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkLCBlKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICAoKiB0aGVyZSB0aGUgbW9kdWxlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGEgdHlwZSBbdF0gd2l0aFxuICAgICAgIHBhcmFtZXRlcnMgd2hvc2Uga2luZCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIHR5cGUgdmFyaWFibGU6IFsnYSAndF0sIGV2ZW4gd2l0aFxuICAgICAgIGEgZ2FkdC4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBUMCBvZiAobW9kdWxlIFQwIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQxIG9mIChtb2R1bGUgVDEgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDIgb2YgKG1vZHVsZSBUMiB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMyBvZiAobW9kdWxlIFQzIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ0IG9mIChtb2R1bGUgVDQgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDUgb2YgKG1vZHVsZSBUNSB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gICAgdmFsIG5hbWUgOiBfIHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSBUdXBsZSA6IHNpZ1xuICAgICgqIHRoZXNlIGNvbnN0cnVjdG9ycyBjb3VsZCBiZSBwbHVuZ2VkIGF0IHRvcGxldmVsIG9mIFR5cGVyZXAudCwgaG93ZXZlciBpdCBpcyBsZXNzXG4gICAgICAgdmVyYm9zZSB0aGF0IHdheSAqKVxuICAgIHR5cGUgXyB0ID1cbiAgICAgIHwgVDIgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYikgdFxuICAgICAgfCBUMyA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQpIC0+ICgnYSAqICdiICogJ2MpIHRcbiAgICAgIHwgVDQgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkKSB0XG4gICAgICB8IFQ1IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50ICogJ2UgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG5cbiAgICB2YWwgYXJpdHkgOiBfIHQgLT4gaW50XG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgZW5kXG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIFR5cGVyZXAudFxuXG4gIHZhbCBzYW1lIDogXyB0IC0+IF8gdCAtPiBib29sXG4gIHZhbCBzYW1lX3dpdG5lc3MgOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50IG9wdGlvblxuICB2YWwgc2FtZV93aXRuZXNzX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EsICdiKSBUeXBlX2VxdWFsLnRcbiAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcbiAgdmFsIGhlYWQgOiAnYSB0IC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBhcml0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIF8gLT4gMFxuICAgICAgfCBUMSBfIC0+IDFcbiAgICAgIHwgVDIgXyAtPiAyXG4gICAgICB8IFQzIF8gLT4gM1xuICAgICAgfCBUNCBfIC0+IDRcbiAgICAgIHwgVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90ICh0eXBlIGEpID0gZnVuY3Rpb25cbiAgICAgIHwgVDAgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDAgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDEgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDEgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDIgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDMgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDQgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICAgIHwgVDUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVDUgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgICBULnR5cGVuYW1lX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG5hbWUgcmVwID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCAodHlwZW5hbWVfb2ZfdCByZXApKVxuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgPSBzdHJ1Y3RcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhpcyB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgbGV0IGFyaXR5IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMiBfIC0+IDJcbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyBfIC0+IDNcbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCBfIC0+IDRcbiAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNSBfIC0+IDVcbiAgICA7O1xuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgICAgfCBUMiAoYSwgYikgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTIgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICB8IFQzIChhLCBiLCBjKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlM1xuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgfCBUNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTRcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICB8IFQ1IChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICBOYW1lX29mLnR5cGVuYW1lX29mX3R1cGxlNVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSlcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGIpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBjKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgZClcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVwID0gJ2EgdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcmVwXG4gICAgZW5kKVxuXG4gIGxldCByZWMgdHlwZW5hbWVfb2ZfdCA6IHR5cGUgYS4gYSB0IC0+IGEgVHlwZW5hbWUudCA9IGZ1bmN0aW9uXG4gICAgfCBJbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9pbnRcbiAgICB8IEludDMyIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50MzJcbiAgICB8IEludDY0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50NjRcbiAgICB8IE5hdGl2ZWludCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX25hdGl2ZWludFxuICAgIHwgQ2hhciAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2NoYXJcbiAgICB8IEZsb2F0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfZmxvYXRcbiAgICB8IFN0cmluZyAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3N0cmluZ1xuICAgIHwgQnl0ZXMgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ieXRlc1xuICAgIHwgQm9vbCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Jvb2xcbiAgICB8IFVuaXQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl91bml0XG4gICAgfCBPcHRpb24gcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2Zfb3B0aW9uICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IExpc3QgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfbGlzdCAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBBcnJheSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9hcnJheSAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMYXp5IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xhenlfdCAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBSZWYgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfcmVmICh0eXBlbmFtZV9vZl90IHJlcClcbiAgICB8IEZ1bmN0aW9uIChkb20sIHJuZykgLT5cbiAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfZnVuY3Rpb24gKHR5cGVuYW1lX29mX3QgZG9tKSAodHlwZW5hbWVfb2ZfdCBybmcpXG4gICAgfCBUdXBsZSByZXAgLT4gVHlwZXJlcC5UdXBsZS50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgUmVjb3JkIHJlcCAtPiBUeXBlcmVwLlJlY29yZC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgVmFyaWFudCByZXAgLT4gVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcmVwXG4gICAgfCBOYW1lZCAobmFtZSwgXykgLT4gTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lXG4gIDs7XG5cbiAgbGV0IHJlYyBzYW1lX3dpdG5lc3MgOiB0eXBlIGEgYi4gYSB0IC0+IGIgdCAtPiAoYSwgYikgVHlwZV9lcXVhbC50IG9wdGlvbiA9XG4gICAgZnVuIHQxIHQyIC0+XG4gICAgICBsZXQgbW9kdWxlIEUgPSBUeXBlX2VxdWFsIGluXG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBOYW1lZCAobmFtZTEsIHIxKSwgTmFtZWQgKG5hbWUyLCByMikgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzcyAoTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lMSkgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTIpXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCByMSwgcjIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IFNvbWUgKGxhenkgdDEpLCBOb25lIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBOb25lLCBTb21lIChsYXp5IHQyKSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lKSlcbiAgICAgIHwgTmFtZWQgKF8sIHIxKSwgdDIgLT5cbiAgICAgICAgKG1hdGNoIHIxIHdpdGhcbiAgICAgICAgIHwgU29tZSAobGF6eSB0MSkgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgdDEsIE5hbWVkIChfLCByMikgLT5cbiAgICAgICAgKG1hdGNoIHIyIHdpdGhcbiAgICAgICAgIHwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgSW50LCBJbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgSW50MzIsIEludDMyIC0+IFNvbWUgRS5UXG4gICAgICB8IEludDY0LCBJbnQ2NCAtPiBTb21lIEUuVFxuICAgICAgfCBOYXRpdmVpbnQsIE5hdGl2ZWludCAtPiBTb21lIEUuVFxuICAgICAgfCBDaGFyLCBDaGFyIC0+IFNvbWUgRS5UXG4gICAgICB8IEZsb2F0LCBGbG9hdCAtPiBTb21lIEUuVFxuICAgICAgfCBTdHJpbmcsIFN0cmluZyAtPiBTb21lIEUuVFxuICAgICAgfCBCeXRlcywgQnl0ZXMgLT4gU29tZSBFLlRcbiAgICAgIHwgQm9vbCwgQm9vbCAtPiBTb21lIEUuVFxuICAgICAgfCBVbml0LCBVbml0IC0+IFNvbWUgRS5UXG4gICAgICB8IE9wdGlvbiByMSwgT3B0aW9uIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IExpc3QgcjEsIExpc3QgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgQXJyYXkgcjEsIEFycmF5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IExhenkgcjEsIExhenkgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgUmVmIHIxLCBSZWYgcjIgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyByMSByMiB3aXRoXG4gICAgICAgICB8IE5vbmUgYXMgeCAtPiB4XG4gICAgICAgICB8IFNvbWUgRS5UIGFzIHggLT4geClcbiAgICAgIHwgRnVuY3Rpb24gKGRvbTEsIHJuZzEpLCBGdW5jdGlvbiAoZG9tMiwgcm5nMikgLT5cbiAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBkb20xIGRvbTIsIHNhbWVfd2l0bmVzcyBybmcxIHJuZzIgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgVHVwbGUgdDEsIFR1cGxlIHQyIC0+XG4gICAgICAgIGxldCBtb2R1bGUgVCA9IFR5cGVyZXAuVHVwbGUgaW5cbiAgICAgICAgKG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICB8IFQuVDIgKGExLCBiMSksIFQuVDIgKGEyLCBiMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDMgKGExLCBiMSwgYzEpLCBULlQzIChhMiwgYjIsIGMyKSAtPlxuICAgICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXyB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDQgKGExLCBiMSwgYzEsIGQxKSwgVC5UNCAoYTIsIGIyLCBjMiwgZDIpIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiwgc2FtZV93aXRuZXNzIGMxIGMyLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXyB8IF8sIE5vbmUsIF8sIF8gfCBfLCBfLCBOb25lLCBfIHwgXywgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ1IChhMSwgYjEsIGMxLCBkMSwgZTEpLCBULlQ1IChhMiwgYjIsIGMyLCBkMiwgZTIpIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAoIHNhbWVfd2l0bmVzcyBhMSBhMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBiMSBiMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBjMSBjMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBkMSBkMlxuICAgICAgICAgICAgICAsIHNhbWVfd2l0bmVzcyBlMSBlMiApXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIE5vbmUsIF8sIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgTm9uZSwgXywgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBOb25lLCBfXG4gICAgICAgICAgICB8IF8sIF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UMiBfLCBfIC0+IE5vbmVcbiAgICAgICAgIHwgVC5UMyBfLCBfIC0+IE5vbmVcbiAgICAgICAgIHwgVC5UNCBfLCBfIC0+IE5vbmVcbiAgICAgICAgIHwgVC5UNSBfLCBfIC0+IE5vbmUpXG4gICAgICB8IFJlY29yZCByMSwgUmVjb3JkIHIyIC0+XG4gICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc1xuICAgICAgICAgIChUeXBlcmVwLlJlY29yZC50eXBlbmFtZV9vZl90IHIxKVxuICAgICAgICAgIChUeXBlcmVwLlJlY29yZC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBWYXJpYW50IHIxLCBWYXJpYW50IHIyIC0+XG4gICAgICAgIFR5cGVuYW1lLnNhbWVfd2l0bmVzc1xuICAgICAgICAgIChUeXBlcmVwLlZhcmlhbnQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjIpXG4gICAgICB8IEludCwgXyAtPiBOb25lXG4gICAgICB8IEludDMyLCBfIC0+IE5vbmVcbiAgICAgIHwgSW50NjQsIF8gLT4gTm9uZVxuICAgICAgfCBOYXRpdmVpbnQsIF8gLT4gTm9uZVxuICAgICAgfCBDaGFyLCBfIC0+IE5vbmVcbiAgICAgIHwgRmxvYXQsIF8gLT4gTm9uZVxuICAgICAgfCBTdHJpbmcsIF8gLT4gTm9uZVxuICAgICAgfCBCeXRlcywgXyAtPiBOb25lXG4gICAgICB8IEJvb2wsIF8gLT4gTm9uZVxuICAgICAgfCBVbml0LCBfIC0+IE5vbmVcbiAgICAgIHwgT3B0aW9uIF8sIF8gLT4gTm9uZVxuICAgICAgfCBMaXN0IF8sIF8gLT4gTm9uZVxuICAgICAgfCBBcnJheSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGF6eSBfLCBfIC0+IE5vbmVcbiAgICAgIHwgUmVmIF8sIF8gLT4gTm9uZVxuICAgICAgfCBGdW5jdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgVHVwbGUgXywgXyAtPiBOb25lXG4gICAgICB8IFJlY29yZCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgVmFyaWFudCBfLCBfIC0+IE5vbmVcbiAgOztcblxuICBsZXQgc2FtZSBhIGIgPSBzYW1lX3dpdG5lc3MgYSBiIDw+IE5vbmVcblxuICBsZXQgc2FtZV93aXRuZXNzX2V4biBhIGIgPVxuICAgIG1hdGNoIHNhbWVfd2l0bmVzcyBhIGIgd2l0aFxuICAgIHwgU29tZSBwcm9vZiAtPiBwcm9vZlxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgcmVjIGhlYWQgPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZCAoXywgU29tZSAobGF6eSB0KSkgLT4gaGVhZCB0XG4gICAgfCB0IC0+IHRcbiAgOztcbmVuZFxuXG5sZXQgdHlwZXJlcF9vZl9pbnQgPSBUeXBlcmVwLkludFxubGV0IHR5cGVyZXBfb2ZfaW50MzIgPSBUeXBlcmVwLkludDMyXG5sZXQgdHlwZXJlcF9vZl9pbnQ2NCA9IFR5cGVyZXAuSW50NjRcbmxldCB0eXBlcmVwX29mX25hdGl2ZWludCA9IFR5cGVyZXAuTmF0aXZlaW50XG5sZXQgdHlwZXJlcF9vZl9jaGFyID0gVHlwZXJlcC5DaGFyXG5sZXQgdHlwZXJlcF9vZl9mbG9hdCA9IFR5cGVyZXAuRmxvYXRcbmxldCB0eXBlcmVwX29mX3N0cmluZyA9IFR5cGVyZXAuU3RyaW5nXG5sZXQgdHlwZXJlcF9vZl9ieXRlcyA9IFR5cGVyZXAuQnl0ZXNcbmxldCB0eXBlcmVwX29mX2Jvb2wgPSBUeXBlcmVwLkJvb2xcbmxldCB0eXBlcmVwX29mX3VuaXQgPSBUeXBlcmVwLlVuaXRcbmxldCB0eXBlcmVwX29mX29wdGlvbiByZXAgPSBUeXBlcmVwLk9wdGlvbiByZXBcbmxldCB0eXBlcmVwX29mX2xpc3QgcmVwID0gVHlwZXJlcC5MaXN0IHJlcFxubGV0IHR5cGVyZXBfb2ZfYXJyYXkgcmVwID0gVHlwZXJlcC5BcnJheSByZXBcbmxldCB0eXBlcmVwX29mX2xhenlfdCByZXAgPSBUeXBlcmVwLkxhenkgcmVwXG5sZXQgdHlwZXJlcF9vZl9yZWYgcmVwID0gVHlwZXJlcC5SZWYgcmVwXG5sZXQgdHlwZXJlcF9vZl9mdW5jdGlvbiBkb20gcm5nID0gVHlwZXJlcC5GdW5jdGlvbiAoZG9tLCBybmcpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTAgPSBUeXBlcmVwLlVuaXRcbmxldCB0eXBlcmVwX29mX3R1cGxlMiBhIGIgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQyIChhLCBiKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlMyBhIGIgYyA9IFR5cGVyZXAuVHVwbGUgKFR5cGVyZXAuVHVwbGUuVDMgKGEsIGIsIGMpKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGU0IGEgYiBjIGQgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQ0IChhLCBiLCBjLCBkKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNSBhIGIgYyBkIGUgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQ1IChhLCBiLCBjLCBkLCBlKSlcblxuaW5jbHVkZSBOYW1lX29mXG5cbmxldCB2YWx1ZV90dXBsZTAgPSAoKVxuXG5sZXQgdHlwZXJlcF9vZl9pbnQ2MywgdHlwZW5hbWVfb2ZfaW50NjMgPVxuICBsZXQgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwclxuICAgIDogdHlwZSBhIGIuIChhLCBiKSBCYXNlLkludDYzLlByaXZhdGUuUmVwci50IC0+IGEgVHlwZXJlcC50ICogYSBUeXBlbmFtZS50XG4gICAgPSBmdW5jdGlvblxuICAgICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQgLT4gdHlwZXJlcF9vZl9pbnQsIHR5cGVuYW1lX29mX2ludFxuICAgICAgfCBCYXNlLkludDYzLlByaXZhdGUuUmVwci5JbnQ2NCAtPiB0eXBlcmVwX29mX2ludDY0LCB0eXBlbmFtZV9vZl9pbnQ2NFxuICBpblxuICB0eXBlcmVwX2FuZF90eXBlbmFtZV9vZl9pbnQ2M19yZXByIEJhc2UuSW50NjMuUHJpdmF0ZS5yZXByXG47O1xuIiwiKCogdXNpbmcgdGhlIGhhc2hfdmFyaWFudCBvZiBwYV90eXBlX2NvbnYgYXQgY29tcGlsZSB0aW1lICopXG5sZXQgcmVwcl9vZl9wb2x5X3ZhcmlhbnQgOiBbPiBdIC0+IGludCA9XG4gIGZ1biB2YXJpYW50IC0+XG4gIGxldCBvYmogPSBPYmoucmVwciB2YXJpYW50IGluXG4gIGlmIE9iai5pc19pbnQgb2JqXG4gIHRoZW4gT2JqLm9iaiBvYmpcbiAgZWxzZSAoXG4gICAgbGV0IHNpemUgPSBPYmouc2l6ZSBvYmogaW5cbiAgICBhc3NlcnQgKHNpemUgPSAyKTtcbiAgICBsZXQgcmVwciA9IE9iai5maWVsZCBvYmogMCBpblxuICAgIGFzc2VydCAoT2JqLmlzX2ludCByZXByKTtcbiAgICBPYmoub2JqIHJlcHIpXG47O1xuXG5sZXQgaGFzaF92YXJpYW50IHMgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAoMjIzICogIWFjY3UpICsgQ2hhci5jb2RlIHMuW2ldXG4gIGRvbmU7XG4gICgqIHJlZHVjZSB0byAzMSBiaXRzICopXG4gIGFjY3UgOj0gIWFjY3UgbGFuZCAoKDEgbHNsIDMxKSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1XG47O1xuXG4oKiBhIGZldyB1bml0IHRlc3RzIG9mIGNhc2VzIHRoYXQgaGF2ZSB0cmlnZ2VyZWQgZGlmZnMgaW4gdGhlIHBhc3Qgb2YgdGhpc1xuICAgbGliICopXG5sZXQgKCkgPSBhc3NlcnQgKHJlcHJfb2ZfcG9seV92YXJpYW50IGBMYXRlbmN5X3N0YXRzID0gaGFzaF92YXJpYW50IFwiTGF0ZW5jeV9zdGF0c1wiKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgemVybyA9IGhhc2hfdmFyaWFudCBcInplcm9cIilcbmxldFtAaW5saW5lIG5ldmVyXSBkb3VibGVfYXJyYXlfdmFsdWUgKCkgPSBTeXMub3BhcXVlX2lkZW50aXR5IChPYmoubWFnaWMgMC4pXG5sZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgYSA9IE9iai5kb3VibGVfYXJyYXlfdGFnID0gT2JqLnRhZyAoT2JqLnJlcHIgYSlcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSBkb3VibGUgPVxuICAgICAgeyBhIDogZmxvYXRcbiAgICAgIDsgYiA6IGZsb2F0XG4gICAgICB9XG5cbiAgICB0eXBlIHNpbXBsZSA9XG4gICAgICB7IGMgOiBmbG9hdFxuICAgICAgOyBkIDogaW50XG4gICAgICB9XG5cbiAgICBsZXQgZG91YmxlID0geyBhID0gZG91YmxlX2FycmF5X3ZhbHVlICgpOyBiID0gZG91YmxlX2FycmF5X3ZhbHVlICgpIH1cbiAgICBsZXQgc2ltcGxlID0geyBjID0gZG91YmxlX2FycmF5X3ZhbHVlICgpOyBkID0gZG91YmxlX2FycmF5X3ZhbHVlICgpIH1cbiAgZW5kXG4gIGluXG4gIGFzc2VydCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5kb3VibGUpO1xuICBhc3NlcnQgKG5vdCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5zaW1wbGUpKVxuOztcbiIsIm1vZHVsZSBNIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdhIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAoJ2EsICdiKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICgnYSwgJ2IsICdjKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICdkIFgudCAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBYLnRcbiAgICAgIC0+ICdiIFgudFxuICAgICAgLT4gJ2MgWC50XG4gICAgICAtPiAnZCBYLnRcbiAgICAgIC0+ICdlIFgudFxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBYLnRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmID0gVmFyaWFudF9hbmRfcmVjb3JkX2ludGZcblxubW9kdWxlIEhlbHBlciAoQSA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpIChCIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgPSBzdHJ1Y3RcbiAgdHlwZSBtYXAgPSB7IG1hcCA6ICdhLiAnYSBBLnQgLT4gJ2EgQi50IH1cblxuICBsZXQgbWFwX3ZhcmlhbnQgKHR5cGUgdmFyaWFudCkgeyBtYXAgfSAodmFyaWFudCA6IHZhcmlhbnQgQS5WYXJpYW50LnQpID1cbiAgICBsZXQgbWFwX2NyZWF0ZSA9IGZ1bmN0aW9uXG4gICAgICB8IEEuVGFnLkFyZ3MgZmN0IC0+IEIuVGFnX2ludGVybmFsLkFyZ3MgZmN0XG4gICAgICB8IEEuVGFnLkNvbnN0IGsgLT4gQi5UYWdfaW50ZXJuYWwuQ29uc3Qga1xuICAgIGluXG4gICAgbGV0IG1hcF90YWcgdGFnID1cbiAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5UYWcgdGFnIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuVGFnLmxhYmVsIHRhZyBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLlRhZy50cmF2ZXJzZSB0YWcpIGluXG4gICAgICAgIGxldCBhcml0eSA9IEEuVGFnLmFyaXR5IHRhZyBpblxuICAgICAgICBsZXQgYXJnc19sYWJlbHMgPSBBLlRhZy5hcmdzX2xhYmVscyB0YWcgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5UYWcuaW5kZXggdGFnIGluXG4gICAgICAgIGxldCBvY2FtbF9yZXByID0gQS5UYWcub2NhbWxfcmVwciB0YWcgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLlRhZy50eWlkIHRhZyBpblxuICAgICAgICBsZXQgY3JlYXRlID0gbWFwX2NyZWF0ZSAoQS5UYWcuY3JlYXRlIHRhZykgaW5cbiAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlRhZ1xuICAgICAgICAgIChCLlRhZy5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5UYWdfaW50ZXJuYWwubGFiZWxcbiAgICAgICAgICAgICA7IHJlcFxuICAgICAgICAgICAgIDsgYXJpdHlcbiAgICAgICAgICAgICA7IGFyZ3NfbGFiZWxzXG4gICAgICAgICAgICAgOyBpbmRleFxuICAgICAgICAgICAgIDsgb2NhbWxfcmVwclxuICAgICAgICAgICAgIDsgdHlpZFxuICAgICAgICAgICAgIDsgY3JlYXRlXG4gICAgICAgICAgICAgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQgaW5cbiAgICBsZXQgcG9seW1vcnBoaWMgPSBBLlZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCBpblxuICAgIGxldCB0YWdzID1cbiAgICAgIEFycmF5LmluaXQgKEEuVmFyaWFudC5sZW5ndGggdmFyaWFudCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfdGFnIChBLlZhcmlhbnQudGFnIHZhcmlhbnQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IHZhbHVlIChhIDogdmFyaWFudCkgPVxuICAgICAgbWF0Y2ggQS5WYXJpYW50LnZhbHVlIHZhcmlhbnQgYSB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5WYWx1ZSAoYXRhZywgYSkgLT5cbiAgICAgICAgKGZ1biAodHlwZSBhcmdzKSAoYXRhZyA6ICh2YXJpYW50LCBhcmdzKSBBLlRhZy50KSAoYSA6IGFyZ3MpIC0+XG4gICAgICAgICAgIGxldCAoQi5WYXJpYW50X2ludGVybmFsLlRhZyBidGFnKSA9IHRhZ3MuKEEuVGFnLmluZGV4IGF0YWcpIGluXG4gICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChidGFnIDogKHZhcmlhbnQsIGV4KSBCLlRhZy50KSAtPlxuICAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLlRhZy50eWlkIGF0YWcpIChCLlRhZy50eWlkIGJ0YWcpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBidGFnID0gKGJ0YWcgOiAodmFyaWFudCwgYXJncykgQi5UYWcudCkgaW5cbiAgICAgICAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlZhbHVlIChidGFnLCBhKSlcbiAgICAgICAgICAgICBidGFnKVxuICAgICAgICAgIGF0YWdcbiAgICAgICAgICBhXG4gICAgaW5cbiAgICBCLlZhcmlhbnQuaW50ZXJuYWxfdXNlX29ubHkgeyBCLlZhcmlhbnRfaW50ZXJuYWwudHlwZW5hbWU7IHRhZ3M7IHBvbHltb3JwaGljOyB2YWx1ZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9yZWNvcmQgKHR5cGUgcmVjb3JkKSB7IG1hcCB9IChyZWNvcmQgOiByZWNvcmQgQS5SZWNvcmQudCkgPVxuICAgIGxldCBtYXBfZmllbGQgZmllbGQgPVxuICAgICAgbWF0Y2ggZmllbGQgd2l0aFxuICAgICAgfCBBLlJlY29yZC5GaWVsZCBmaWVsZCAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLkZpZWxkLmxhYmVsIGZpZWxkIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuRmllbGQudHJhdmVyc2UgZmllbGQpIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuRmllbGQuaW5kZXggZmllbGQgaW5cbiAgICAgICAgbGV0IGlzX211dGFibGUgPSBBLkZpZWxkLmlzX211dGFibGUgZmllbGQgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLkZpZWxkLnR5aWQgZmllbGQgaW5cbiAgICAgICAgbGV0IGdldCA9IEEuRmllbGQuZ2V0IGZpZWxkIGluXG4gICAgICAgIEIuUmVjb3JkX2ludGVybmFsLkZpZWxkXG4gICAgICAgICAgKEIuRmllbGQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuRmllbGRfaW50ZXJuYWwubGFiZWw7IHJlcDsgaW5kZXg7IGlzX211dGFibGU7IHR5aWQ7IGdldCB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZWNvcmQgaW5cbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgPSBBLlJlY29yZC5oYXNfZG91YmxlX2FycmF5X3RhZyByZWNvcmQgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIEFycmF5LmluaXQgKEEuUmVjb3JkLmxlbmd0aCByZWNvcmQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX2ZpZWxkIChBLlJlY29yZC5maWVsZCByZWNvcmQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IGNyZWF0ZSB7IEIuUmVjb3JkX2ludGVybmFsLmdldCB9ID1cbiAgICAgIGxldCBnZXQgKHR5cGUgYSkgKGFmaWVsZCA6IChfLCBhKSBBLkZpZWxkLnQpID1cbiAgICAgICAgbWF0Y2ggZmllbGRzLihBLkZpZWxkLmluZGV4IGFmaWVsZCkgd2l0aFxuICAgICAgICB8IEIuUmVjb3JkX2ludGVybmFsLkZpZWxkIGJmaWVsZCAtPlxuICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChiZmllbGQgOiAocmVjb3JkLCBleCkgQi5GaWVsZC50KSAtPlxuICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5GaWVsZC50eWlkIGFmaWVsZCkgKEIuRmllbGQudHlpZCBiZmllbGQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgYmZpZWxkID0gKGJmaWVsZCA6IChyZWNvcmQsIGEpIEIuRmllbGQudCkgaW5cbiAgICAgICAgICAgICBnZXQgYmZpZWxkKVxuICAgICAgICAgICAgYmZpZWxkXG4gICAgICBpblxuICAgICAgQS5SZWNvcmQuY3JlYXRlIHJlY29yZCB7IEEuUmVjb3JkLmdldCB9XG4gICAgaW5cbiAgICBCLlJlY29yZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgeyBCLlJlY29yZF9pbnRlcm5hbC50eXBlbmFtZTsgZmllbGRzOyBoYXNfZG91YmxlX2FycmF5X3RhZzsgY3JlYXRlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBOYW1lZCA9IHNpZ1xuICB0eXBlICdhIGNvbXB1dGF0aW9uXG5cbiAgbW9kdWxlIENvbnRleHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGluaXQgOiBDb250ZXh0LnQgLT4gJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCBnZXRfd2lwX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2hhcmUgOiBfIFR5cGVyZXAudCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcHV0YXRpb24gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgaW50IDogaW50IHRcbiAgdmFsIGludDMyIDogaW50MzIgdFxuICB2YWwgaW50NjQgOiBpbnQ2NCB0XG4gIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICB2YWwgY2hhciA6IGNoYXIgdFxuICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gIHZhbCBib29sIDogYm9vbCB0XG4gIHZhbCB1bml0IDogdW5pdCB0XG4gIHZhbCBvcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gIHZhbCBsaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgdmFsIGFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gIHZhbCBsYXp5X3QgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gIHZhbCByZWZfIDogJ2EgdCAtPiAnYSByZWYgdFxuICB2YWwgZnVuY3Rpb25fIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAtPiAnYikgdFxuICB2YWwgdHVwbGUyIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0dXBsZTMgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gIHZhbCB0dXBsZTQgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICB2YWwgdHVwbGU1IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAnZSB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG4gIHZhbCByZWNvcmQgOiAnYSBSZWNvcmQudCAtPiAnYSB0XG4gIHZhbCB2YXJpYW50IDogJ2EgVmFyaWFudC50IC0+ICdhIHRcblxuICBtb2R1bGUgTmFtZWQgOiBOYW1lZCB3aXRoIHR5cGUgJ2EgY29tcHV0YXRpb24gOj0gJ2EgdFxuZW5kXG5cbigqIHNwZWNpYWwgZnVuY3RvciBhcHBsaWNhdGlvbiBmb3IgY29tcHV0YXRpb24gYXMgY2xvc3VyZSBvZiB0aGUgZm9ybSBbYSAtPiBiXSAqKVxubW9kdWxlIE1ha2VfbmFtZWRfZm9yX2Nsb3N1cmUgKFggOiBzaWdcbiAgICB0eXBlICdhIGlucHV0XG4gICAgdHlwZSAnYSBvdXRwdXRcbiAgICB0eXBlICdhIHQgPSAnYSBpbnB1dCAtPiAnYSBvdXRwdXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0XG5cbiAgICBsZXQgY3JlYXRlID0gaWdub3JlXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50XG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA6ICdhIFgudCByZWZcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50IG9wdGlvbiByZWZcbiAgICB9XG5cbiAgZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmdcblxuICBsZXQgaW5pdCAoKSBuYW1lID1cbiAgICBsZXQgcGF0aCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgbmFtZSkgaW5cbiAgICBsZXQgciA9IHJlZiAoZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZCBwYXRoKSkgaW5cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgPSAoZnVuIGlucHV0IC0+ICFyIGlucHV0KVxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgPSByXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHJlZiBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBnZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZCA9XG4gICAgbWF0Y2ggc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgY2xvcyAtPiBjbG9zXG4gICAgfCBOb25lIC0+IHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlXG4gIDs7XG5cbiAgbGV0IHNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24gPVxuICAgIGxldCBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZSBpblxuICAgIG1hdGNoIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIEJhc2UucGh5c19lcXVhbCBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZSBjb21wdXRhdGlvbiB0aGVuIGFzc2VydCBmYWxzZTtcbiAgICAgIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDo9IFNvbWUgY29tcHV0YXRpb247XG4gICAgICBzaGFyZWQucnVudGltZV9yZWZlcmVuY2UgOj0gY29tcHV0YXRpb247XG4gICAgICBjb21wdXRhdGlvblxuICA7O1xuXG4gIGxldCBzaGFyZSBfID0gdHJ1ZVxuZW5kXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgaW1wbGVtZW50cyA6IFR5cGVuYW1lLlVpZC50IC0+IGJvb2xcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEJyb2tlbl9kZXBlbmRlbmN5IG9mIHN0cmluZ1xuXG4gIGxldCBjaGVja19kZXBlbmRlbmNpZXMgbmFtZSByZXF1aXJlZCA9XG4gICAgbWF0Y2ggcmVxdWlyZWQgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gKClcbiAgICB8IF8gLT5cbiAgICAgIGZ1biB1aWQgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB7IG5hbWUgPSBuYW1lJzsgaW1wbGVtZW50cyB9IC0+XG4gICAgICAgICAgICAgaWYgbm90IChpbXBsZW1lbnRzIHVpZClcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICgqIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBzZXQgdXAsIHRoaXMgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHByb2dyYW0sIHdlIHJhdGhlciBmYWlsIHdpdGggYSBodW1hblxuICAgICAgICAgICAgICAgICAgcmVhZGFibGUgb3V0cHV0ICopXG4gICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJUeXBlX2dlbmVyaWMgJVMgcmVxdWlyZXMgJVMgZm9yIHVpZCAlU1xcblwiXG4gICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgIG5hbWUnXG4gICAgICAgICAgICAgICAgICAgKFR5cGVuYW1lLlVpZC5uYW1lIHVpZClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBwcmVycl9lbmRsaW5lIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICByYWlzZSAoQnJva2VuX2RlcGVuZGVuY3kgbWVzc2FnZSkpKVxuICAgICAgICAgIHJlcXVpcmVkXG4gIDs7XG5lbmRcblxuKCogRXh0ZW5kaW5nIGFuIGV4aXN0aW5nIGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIEV4dGVuZGluZyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICB2YWwgaWRlbnQgOiBJZGVudC50XG5cbiAgKCogZ2VuZXJpY19pZGVudCAqIHR5cGVuYW1lIG9yIGluZm8gKilcbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2EgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdiIGNvbXB1dGF0aW9uIC0+ICgnYSwgJ2IpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gJ2UgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgdmFsIHJlZ2lzdGVyMCA6IChtb2R1bGUgUykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIxIDogKG1vZHVsZSBTMSkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIyIDogKG1vZHVsZSBTMikgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIzIDogKG1vZHVsZSBTMykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI0IDogKG1vZHVsZSBTNCkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI1IDogKG1vZHVsZSBTNSkgLT4gdW5pdFxuXG4gICgqIHNwZWNpYWwgbGVzcyBzY2FyeSB0eXBlIHdoZW4gdGhlIHR5cGUgaGFzIG5vIHBhcmFtZXRlcnMgKilcbiAgdmFsIHJlZ2lzdGVyIDogJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIC0+IHVuaXRcblxuICAoKlxuICAgICBFc3NlbnRpYWxseSBiZWNhdXNlIHdlIGNhbm5vdCB0YWxrIGFib3V0IGEgdmFyaWFibGUgb2Yga2luZCAqIC0+IGtcbiAgICAgdmFsIHJlZ2lzdGVyMSA6ICdhICd0IFR5cGVyZXAudCAtPiAoJ2EgY29tcHV0YXRpb24gLT4gJ2EgJ3QgY29tcHV0YXRpb24pIC0+IHVuaXRcbiAgICAgLi4uXG4gICopXG5lbmRcblxuKCogSW1wbGVtZW50aW5nIGEgbmV3IGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIFNfaW1wbGVtZW50YXRpb24gPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICAoKiByYWlzZSB1c2luZyB0aGUgY3VycmVudCBpZGVudCAqKVxuICB2YWwgcmFpc2Vfbm90X2ltcGxlbWVudGVkIDogc3RyaW5nIC0+ICdhXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbiA9IHsgZ2VuZXJpYyA6ICdhLiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gfVxuXG4gICgqXG4gICAgIFN0YW5kYXJkIGNhc2UsIGZpbmQgYSBleHRlbmRlZF9pbXBsZW1lbnRhdGlvbiwgb3IgbG9vayBpbiB0aGUgY29udGVudFxuICAqKVxuICB2YWwgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBUeXBlcmVwLnQgbGF6eV90IG9wdGlvblxuICAgIC0+ICdhIGNvbXB1dGF0aW9uXG5cbiAgKCpcbiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IG1vcmUgY29udHJvbCBvbiB3aGF0IHlvdSB3YW50IHRvIGRvXG4gICopXG4gIHZhbCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBjb21wdXRhdGlvbiBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgdmFsIG9mX3R5cGVyZXAgOiAnYSBUeXBlcmVwLnQgLT4gWyBgZ2VuZXJpYyBvZiAnYSBjb21wdXRhdGlvbiBdXG5cbiAgbW9kdWxlIENvbXB1dGF0aW9uIDogQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcbiAgZW5kKSA6IFNfaW1wbGVtZW50YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWC50XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgaW5jbHVkZSBUeXBlX2dlbmVyaWNfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuXG4gICgqIHdlIGRvIG5vdCB1c2UgY29yZSBzaW5jZSB3ZSBhcmUgZWFybGllciBpbiB0aGUgZGVwZW5kZW5jaWVzIGdyYXBoICopXG4gIG1vZHVsZSBVaWRfdGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuVWlkKVxuXG4gICAgbGV0IGZpbmQgdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICB0cnkgU29tZSAoZmluZCB0YWJsZSBrZXkpIHdpdGhcbiAgICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBTdGRsaWIuTm90X2ZvdW5kIC0+IE5vbmUpXG4gICAgICBlbHNlIE5vbmVcbiAgICA7O1xuXG4gICAgbGV0IGNoZWNrX2RlcGVuZGVuY2llcyA9IElkZW50LmNoZWNrX2RlcGVuZGVuY2llcyBYLm5hbWUgWC5yZXF1aXJlZFxuXG4gICAgbGV0IHJlcGxhY2UgdGFibGUga2V5IHZhbHVlID1cbiAgICAgIGNoZWNrX2RlcGVuZGVuY2llcyBrZXk7XG4gICAgICByZXBsYWNlIChMYXp5LmZvcmNlIHRhYmxlKSBrZXkgdmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IG1lbSB0YWJsZSBrZXkgPVxuICAgICAgaWYgTGF6eS5pc192YWwgdGFibGVcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgdGFibGUgPSBMYXp5LmZvcmNlIHRhYmxlIGluXG4gICAgICAgIG1lbSB0YWJsZSBrZXkpXG4gICAgICBlbHNlIGZhbHNlXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpemUgPSAyNTZcbiAgbGV0IHRhYmxlMCA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlMSA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlMiA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlMyA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlNCA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcbiAgbGV0IHRhYmxlNSA9IGxhenkgKFVpZF90YWJsZS5jcmVhdGUgc2l6ZSlcblxuICBsZXQgaXNfcmVnaXN0ZXJlZCB1aWQgPVxuICAgIFVpZF90YWJsZS5tZW0gdGFibGUwIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGUxIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGUyIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGUzIHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGU0IHVpZFxuICAgIHx8IFVpZF90YWJsZS5tZW0gdGFibGU1IHVpZFxuICA7O1xuXG4gIGxldCBpZGVudCA9IHsgSWRlbnQubmFtZSA9IFgubmFtZTsgaW1wbGVtZW50cyA9IGlzX3JlZ2lzdGVyZWQgfVxuXG4gIG1vZHVsZSBGaW5kMCAoVCA6IFR5cGVyZXAuTmFtZWQuVDApIDogc2lnXG4gICAgdmFsIGNvbXB1dGUgOiB1bml0IC0+IFQubmFtZWQgY29tcHV0YXRpb24gb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMCAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTID0gKHZhbCByZXAgOiBTKSBpblxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG4gUy50eXBlbmFtZV9vZl90IFQudHlwZW5hbWVfb2ZfbmFtZWQgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IHdpdG5lc3MpIFMuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDEgKFQgOiBUeXBlcmVwLk5hbWVkLlQxKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUxIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCByZXAgOiBTMSkgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzFcbiAgICAgICAgICAgIChTMSlcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPSBULmEgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMiAoVCA6IFR5cGVyZXAuTmFtZWQuVDIpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IChULmEsIFQuYikgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMiAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgcmVwIDogUzIpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8yXG4gICAgICAgICAgICAoUzIpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMyLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQzIChUIDogVHlwZXJlcC5OYW1lZC5UMykgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgICBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IGNvbXB1dGUgKCkgPVxuICAgICAgbWF0Y2ggVWlkX3RhYmxlLmZpbmQgdGFibGUzIChUeXBlbmFtZS51aWQgVC50eXBlbmFtZV9vZl90KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFMzID0gKHZhbCByZXAgOiBTMykgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBDb252ID1cbiAgICAgICAgICBUeXBlbmFtZS5TYW1lX3dpdG5lc3NfZXhuXzNcbiAgICAgICAgICAgIChTMylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gVC5jIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzMuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDQgKFQgOiBUeXBlcmVwLk5hbWVkLlQ0KSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgLT4gKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlNCAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTNCA9ICh2YWwgcmVwIDogUzQpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl80XG4gICAgICAgICAgICAoUzQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0ID0gKCdhLCAnYiwgJ2MsICdkKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFM0LmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ1IChUIDogVHlwZXJlcC5OYW1lZC5UNSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQsIFQuZSkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlNSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgcmVwIDogUzUpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl81XG4gICAgICAgICAgICAoUzUpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgICAgICAgVC5hIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5kIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFM1LmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHVuaXQgPSBUeXBlbmFtZS5zdGF0aWNcblxuICBsZXQgcmVnaXN0ZXIwIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgY29tcHV0ZSA6IFMpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCBTLnR5cGVuYW1lX29mX3QgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTAgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXIxIGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzEgPSAodmFsIGNvbXB1dGUgOiBTMSkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTMS50eXBlbmFtZV9vZl90IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUxIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMiBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMyID0gKHZhbCBjb21wdXRlIDogUzIpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzIudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUyIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMyBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMzID0gKHZhbCBjb21wdXRlIDogUzMpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzMudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCkgaW5cbiAgICBVaWRfdGFibGUucmVwbGFjZSB0YWJsZTMgdWlkIGNvbXB1dGVcbiAgOztcblxuICBsZXQgcmVnaXN0ZXI0IGNvbXB1dGUgPVxuICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIGNvbXB1dGUgOiBTNCkgaW5cbiAgICBsZXQgdWlkID0gVHlwZW5hbWUudWlkIChTNC50eXBlbmFtZV9vZl90IHVuaXQgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGU0IHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM1ID0gKHZhbCBjb21wdXRlIDogUzUpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzUudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGU1IHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyICh0eXBlIGEpIHR5cGVyZXBfb2ZfYSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwLnR5cGVuYW1lX29mX3QgdHlwZXJlcF9vZl9hXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gdHlwZXJlcF9vZl9hXG4gICAgICBsZXQgY29tcHV0ZSA9IGNvbXB1dGVcbiAgICBlbmRcbiAgICBpblxuICAgIHJlZ2lzdGVyMCAobW9kdWxlIFMgOiBTKVxuICA7O1xuXG4gICgqIElNUExFTUVOVEFUSU9OICopXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbiA9IHsgZ2VuZXJpYyA6ICdhLiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gfVxuXG4gIGxldCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uICh0eXBlIGEpIGF1eCA9IGZ1bmN0aW9uXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQwIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDAgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQxIHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDEgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPSAoY3VzdG9tIChhdXguZ2VuZXJpYyBULmEpIDogVC5hIFQubmFtZWQgY29tcHV0YXRpb24pIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMiByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMiB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQyIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSAoYXV4LmdlbmVyaWMgVC5iKSA6IChULmEsIFQuYikgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMyByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQzIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSAoYXV4LmdlbmVyaWMgVC5iKSAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ0IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSAoYXV4LmdlbmVyaWMgVC5iKSAoYXV4LmdlbmVyaWMgVC5jKSAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kKSBULm5hbWVkIGNvbXB1dGF0aW9uKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSBULndpdG5lc3MgaW5cbiAgICAgICAgIFNvbWUgKGN1c3RvbSA6IGEgY29tcHV0YXRpb24pXG4gICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgfCBUeXBlcmVwLk5hbWVkLlQ1IHJlcCAtPlxuICAgICAgbGV0IG1vZHVsZSBUID0gKHZhbCByZXAgOiBUeXBlcmVwLk5hbWVkLlQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgIGxldCBtb2R1bGUgQ3VzdG9tID0gRmluZDUgKFQpIGluXG4gICAgICAobWF0Y2ggQ3VzdG9tLmNvbXB1dGUgKCkgd2l0aFxuICAgICAgIHwgU29tZSBjdXN0b20gLT5cbiAgICAgICAgIGxldCBjdXN0b20gPVxuICAgICAgICAgICAoY3VzdG9tXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmEpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmIpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmMpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmQpXG4gICAgICAgICAgICAgIChhdXguZ2VuZXJpYyBULmUpXG4gICAgICAgICAgICA6IChULmEsIFQuYiwgVC5jLCBULmQsIFQuZSkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBOb3RfaW1wbGVtZW50ZWQgb2Ygc3RyaW5nICogc3RyaW5nXG5cbiAgbGV0IHJhaXNlX25vdF9pbXBsZW1lbnRlZCBzdHJpbmcgPSByYWlzZSAoTm90X2ltcGxlbWVudGVkIChYLm5hbWUsIHN0cmluZykpXG5cbiAgbGV0IF91c2luZ19leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiBhdXggcmVwIGNvbnRlbnQgPVxuICAgIG1hdGNoIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCB3aXRoXG4gICAgfCBTb21lIGNvbXB1dGF0aW9uIC0+IGNvbXB1dGF0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+IGF1eC5nZW5lcmljIGNvbnRlbnRcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCB0eXBlbmFtZSA9IFR5cGVyZXAuTmFtZWQudHlwZW5hbWVfb2ZfdCByZXAgaW5cbiAgICAgICAgIGxldCBuYW1lID0gVHlwZW5hbWUuVWlkLm5hbWUgKFR5cGVuYW1lLnVpZCB0eXBlbmFtZSkgaW5cbiAgICAgICAgIHJhaXNlX25vdF9pbXBsZW1lbnRlZCBuYW1lKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBfID0gSGFzaHRibC5NYWtlIChUeXBlbmFtZS5LZXkpXG5cbm1vZHVsZSBNYWtlIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCByZXF1aXJlZCA6IElkZW50LnQgbGlzdFxuXG4gICAgaW5jbHVkZSBDb21wdXRhdGlvbiB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBDb21wdXRhdGlvbiA9IFhcbiAgaW5jbHVkZSBNYWtlX1NfaW1wbGVtZW50YXRpb24gKFgpXG5cbiAgbW9kdWxlIE1lbW8gPSBUeXBlbmFtZS5UYWJsZSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBYLk5hbWVkLnRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhlbHBlciA9IEhlbHBlciAoVHlwZXJlcCkgKENvbXB1dGF0aW9uKVxuXG4gIGxldCBvZl90eXBlcmVwIHJlcCA9XG4gICAgbGV0IGNvbnRleHQgPSBYLk5hbWVkLkNvbnRleHQuY3JlYXRlICgpIGluXG4gICAgbGV0IG1lbW9fdGFibGUgPSBNZW1vLmNyZWF0ZSAzMiBpblxuICAgIGxldCByZWMgb2ZfdHlwZXJlcCA6IHR5cGUgYS4gYSBUeXBlcmVwLnQgLT4gYSB0ID0gZnVuY3Rpb25cbiAgICAgIHwgVHlwZXJlcC5JbnQgLT4gWC5pbnRcbiAgICAgIHwgVHlwZXJlcC5JbnQzMiAtPiBYLmludDMyXG4gICAgICB8IFR5cGVyZXAuSW50NjQgLT4gWC5pbnQ2NFxuICAgICAgfCBUeXBlcmVwLk5hdGl2ZWludCAtPiBYLm5hdGl2ZWludFxuICAgICAgfCBUeXBlcmVwLkNoYXIgLT4gWC5jaGFyXG4gICAgICB8IFR5cGVyZXAuRmxvYXQgLT4gWC5mbG9hdFxuICAgICAgfCBUeXBlcmVwLlN0cmluZyAtPiBYLnN0cmluZ1xuICAgICAgfCBUeXBlcmVwLkJ5dGVzIC0+IFguYnl0ZXNcbiAgICAgIHwgVHlwZXJlcC5Cb29sIC0+IFguYm9vbFxuICAgICAgfCBUeXBlcmVwLlVuaXQgLT4gWC51bml0XG4gICAgICB8IFR5cGVyZXAuT3B0aW9uIHJlcCAtPiBYLm9wdGlvbiAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuTGlzdCByZXAgLT4gWC5saXN0IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5BcnJheSByZXAgLT4gWC5hcnJheSAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuTGF6eSByZXAgLT4gWC5sYXp5X3QgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLlJlZiByZXAgLT4gWC5yZWZfIChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5GdW5jdGlvbiAoZG9tLCBybmcpIC0+IFguZnVuY3Rpb25fIChvZl90eXBlcmVwIGRvbSkgKG9mX3R5cGVyZXAgcm5nKVxuICAgICAgfCBUeXBlcmVwLlR1cGxlIHR1cGxlIC0+XG4gICAgICAgICgqIGRvIE5PVCB3cml0ZSBbWC50dXBsZTIgKG9mX3R5cGVyZXAgYSkgKG9mX3R5cGVyZXAgYildXG4gICAgICAgICAgIGJlY2F1c2Ugb2ZfdHlwZXJlcCBjYW4gY29udGFpbiBhIHNpZGUgZWZmZWN0IGFuZCBbYV0gc2hvdWxkIGJlIGV4ZWN1dGVkXG4gICAgICAgICAgIGJlZm9yZSBbYl0gKilcbiAgICAgICAgKG1hdGNoIHR1cGxlIHdpdGhcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBYLnR1cGxlMiByYSByYlxuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBYLnR1cGxlMyByYSByYiByY1xuICAgICAgICAgfCBUeXBlcmVwLlR1cGxlLlQ0IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICBsZXQgcmEgPSBvZl90eXBlcmVwIGEgaW5cbiAgICAgICAgICAgbGV0IHJiID0gb2ZfdHlwZXJlcCBiIGluXG4gICAgICAgICAgIGxldCByYyA9IG9mX3R5cGVyZXAgYyBpblxuICAgICAgICAgICBsZXQgcmQgPSBvZl90eXBlcmVwIGQgaW5cbiAgICAgICAgICAgWC50dXBsZTQgcmEgcmIgcmMgcmRcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIGxldCByZSA9IG9mX3R5cGVyZXAgZSBpblxuICAgICAgICAgICBYLnR1cGxlNSByYSByYiByYyByZCByZSlcbiAgICAgIHwgVHlwZXJlcC5SZWNvcmQgcmVjb3JkIC0+XG4gICAgICAgIFgucmVjb3JkIChIZWxwZXIubWFwX3JlY29yZCB7IEhlbHBlci5tYXAgPSBvZl90eXBlcmVwIH0gcmVjb3JkKVxuICAgICAgfCBUeXBlcmVwLlZhcmlhbnQgdmFyaWFudCAtPlxuICAgICAgICBYLnZhcmlhbnQgKEhlbHBlci5tYXBfdmFyaWFudCB7IEhlbHBlci5tYXAgPSBvZl90eXBlcmVwIH0gdmFyaWFudClcbiAgICAgIHwgVHlwZXJlcC5OYW1lZCAobmFtZWQsIGNvbnRlbnQpIC0+XG4gICAgICAgIGxldCB0eXBlbmFtZSA9IFR5cGVyZXAuTmFtZWQudHlwZW5hbWVfb2ZfdCBuYW1lZCBpblxuICAgICAgICAobWF0Y2ggTWVtby5maW5kIG1lbW9fdGFibGUgdHlwZW5hbWUgd2l0aFxuICAgICAgICAgfCBTb21lIHNoYXJlZCAtPiBYLk5hbWVkLmdldF93aXBfY29tcHV0YXRpb24gc2hhcmVkXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIGZpbmRfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24geyBnZW5lcmljID0gb2ZfdHlwZXJlcCB9IG5hbWVkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb250ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICAgICAgICAgIHJhaXNlX25vdF9pbXBsZW1lbnRlZCBuYW1lXG4gICAgICAgICAgICAgICB8IFNvbWUgKGxhenkgY29udGVudCkgLT5cbiAgICAgICAgICAgICAgICAgaWYgWC5OYW1lZC5zaGFyZSBjb250ZW50XG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIGxldCBzaGFyZWQgPSBYLk5hbWVkLmluaXQgY29udGV4dCB0eXBlbmFtZSBpblxuICAgICAgICAgICAgICAgICAgIE1lbW8uc2V0IG1lbW9fdGFibGUgdHlwZW5hbWUgc2hhcmVkO1xuICAgICAgICAgICAgICAgICAgIGxldCBjb21wdXRhdGlvbiA9IG9mX3R5cGVyZXAgY29udGVudCBpblxuICAgICAgICAgICAgICAgICAgIFguTmFtZWQuc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIHNoYXJlZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgICAgICAgZWxzZSBvZl90eXBlcmVwIGNvbnRlbnQpKSlcbiAgICBpblxuICAgIGxldCBjb21wdXRhdGlvbiA9IG9mX3R5cGVyZXAgcmVwIGluXG4gICAgYGdlbmVyaWMgY29tcHV0YXRpb25cbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2UwIChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgPVxuICAgIFR5cGVyZXAuTmFtZWQuVDBcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbmFtZWQgPSBYLnRcbiAgICAgICAgdHlwZSB0ID0gWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAgIHdpdGggdHlwZSB0ID0gWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMSAoWCA6IE5hbWVkX2ludGYuUzEpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMSAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxKSBvZl9wMSA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdCAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKSBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDFcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgJ2EgbmFtZWQgPSAnYSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSB0ID0gcDEgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAgIHdpdGggdHlwZSB0ID0gcDEgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMiAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyKSBvZl9wMSBvZl9wMiA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDJcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYikgbmFtZWQgPSAoJ2EsICdiKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMikgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMikgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMyAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzKSBvZl9wMSBvZl9wMiBvZl9wMyA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDNcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkID0gKCdhLCAnYiwgJ2MpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMykgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTQgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ0XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgPSAoJ2EsICdiLCAnYywgJ2QpIFgudFxuICAgICAgICB0eXBlIGEgPSBwMVxuXG4gICAgICAgIGxldCBhID0gb2ZfcDFcblxuICAgICAgICB0eXBlIGIgPSBwMlxuXG4gICAgICAgIGxldCBiID0gb2ZfcDJcblxuICAgICAgICB0eXBlIGMgPSBwM1xuXG4gICAgICAgIGxldCBjID0gb2ZfcDNcblxuICAgICAgICB0eXBlIGQgPSBwNFxuXG4gICAgICAgIGxldCBkID0gb2ZfcDRcblxuICAgICAgICB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCkgWC50KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlNSAoWCA6IE5hbWVkX2ludGYuUzUpID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlNSAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkICh0eXBlIHAxIHAyIHAzIHA0IHA1KSBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCBvZl9wNSA9XG4gICAgbGV0IHR5cGVuYW1lX29mX3QgPVxuICAgICAgTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSlcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMilcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMylcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNClcbiAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wNSlcbiAgICBpblxuICAgIFR5cGVyZXAuTmFtZWQuVDVcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSBlID0gcDVcblxuICAgICAgICBsZXQgZSA9IG9mX3A1XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0LCBwNSkgWC50XG5cbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX25hbWVkID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB3aXRuZXNzID0gVHlwZV9lcXVhbC5yZWZsXG4gICAgICBlbmQgOiBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAgIHdpdGggdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0LCBwNSkgWC50KVxuICA7O1xuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTWFrZTAgKFggOiBOYW1lZF9pbnRmLlMwKSA6IFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA6IFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UyIChYIDogTmFtZWRfaW50Zi5TMikgOiBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBYLnQgPVxuc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMiAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiwgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA6XG4gIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlMyAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzID0gVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMywgTm9uZSlcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA6XG4gIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA6XG4gIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCBvZl9wNSA9XG4gICAgVHlwZXJlcC5OYW1lZCAoTS5uYW1lZCBvZl9wMSBvZl9wMiBvZl9wMyBvZl9wNCBvZl9wNSwgTm9uZSlcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgTmFtZSA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgaW5jbHVkZSBTZXhwbGliMC5TZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHJlbGF0aXZlX3RvIDogZGlyOnN0cmluZyAtPiB0IC0+IHN0cmluZ1xuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IHJlbGF0aXZlX3RvIH5kaXIgdCA9XG4gICAgaWYgbm90IChTdGRsaWIuRmlsZW5hbWUuaXNfcmVsYXRpdmUgdCkgdGhlbiB0IGVsc2UgU3RkbGliLkZpbGVuYW1lLmNvbmNhdCBkaXIgdFxuICA7O1xuZW5kXG5cbmxldCBpbml0aWFsX2RpciA9XG4gIGxldCBkaXJfb3JfZXJyb3IgPVxuICAgIG1hdGNoIFN0ZGxpYi5TeXMuZ2V0Y3dkICgpIHdpdGhcbiAgICB8IHYgLT4gYE9rIHZcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gYEV4biBleG5cbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggZGlyX29yX2Vycm9yIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBFeG4gZXhuIC0+IHJhaXNlIGV4blxuOztcblxubW9kdWxlIExvY2F0aW9uID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZmlsZW5hbWUgOiBOYW1lLnRcbiAgICAgIDsgbGluZV9udW1iZXIgOiBpbnRcbiAgICAgIDsgbGluZV9zdGFydCA6IGludFxuICAgICAgOyBzdGFydF9wb3MgOiBpbnRcbiAgICAgIDsgZW5kX3BvcyA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gICAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9XG4gICAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAyXyA9IFwiZmlsZS5tbC5Mb2NhdGlvbi5ULnRcIiBpblxuICAgICAgIGZ1biB4X18wMDNfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfcmVjb3JkLnJlY29yZF9vZl9zZXhwXG4gICAgICAgICAgIH5jYWxsZXI6ZXJyb3Jfc291cmNlX18wMDJfXG4gICAgICAgICAgIH5maWVsZHM6XG4gICAgICAgICAgICAgKEZpZWxkXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJmaWxlbmFtZVwiXG4gICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICA7IGNvbnYgPSBOYW1lLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJsaW5lX251bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJsaW5lX3N0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcInN0YXJ0X3Bvc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBraW5kID0gUmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNvbnYgPSBpbnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcmVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJlbmRfcG9zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGtpbmQgPSBSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY29udiA9IGludF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyByZXN0ID0gRW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgfmluZGV4X29mX2ZpZWxkOihmdW5jdGlvblxuICAgICAgICAgICAgIHwgXCJmaWxlbmFtZVwiIC0+IDBcbiAgICAgICAgICAgICB8IFwibGluZV9udW1iZXJcIiAtPiAxXG4gICAgICAgICAgICAgfCBcImxpbmVfc3RhcnRcIiAtPiAyXG4gICAgICAgICAgICAgfCBcInN0YXJ0X3Bvc1wiIC0+IDNcbiAgICAgICAgICAgICB8IFwiZW5kX3Bvc1wiIC0+IDRcbiAgICAgICAgICAgICB8IF8gLT4gLTEpXG4gICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6ZmFsc2VcbiAgICAgICAgICAgfmNyZWF0ZTpcbiAgICAgICAgICAgICAoZnVuXG4gICAgICAgICAgICAgICAoZmlsZW5hbWUsIChsaW5lX251bWJlciwgKGxpbmVfc3RhcnQsIChzdGFydF9wb3MsIChlbmRfcG9zLCAoKSkpKSkpIDogdCAtPlxuICAgICAgICAgICAgICAgeyBmaWxlbmFtZTsgbGluZV9udW1iZXI7IGxpbmVfc3RhcnQ7IHN0YXJ0X3BvczsgZW5kX3BvcyB9KVxuICAgICAgICAgICB4X18wMDNfXG4gICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHRfb2Zfc2V4cFxuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgZmlsZW5hbWUgPSBmaWxlbmFtZV9fMDA1X1xuICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAwN19cbiAgICAgICAgICAgOyBsaW5lX3N0YXJ0ID0gbGluZV9zdGFydF9fMDA5X1xuICAgICAgICAgICA7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDExX1xuICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMTNfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwNF8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTRfID0gc2V4cF9vZl9pbnQgZW5kX3Bvc19fMDEzXyBpblxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDE0XyBdIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMTJfID0gc2V4cF9vZl9pbnQgc3RhcnRfcG9zX18wMTFfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInN0YXJ0X3Bvc1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfaW50IGxpbmVfc3RhcnRfXzAwOV8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZV9zdGFydFwiOyBhcmdfXzAxMF8gXVxuICAgICAgICAgICA6OiBibmRzX18wMDRfXG4gICAgICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDA0XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDA4XyA9IHNleHBfb2ZfaW50IGxpbmVfbnVtYmVyX18wMDdfIGluXG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfbnVtYmVyXCI7IGFyZ19fMDA4XyBdXG4gICAgICAgICAgIDo6IGJuZHNfXzAwNF9cbiAgICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBibmRzX18wMDRfID1cbiAgICAgICAgICBsZXQgYXJnX18wMDZfID0gTmFtZS5zZXhwX29mX3QgZmlsZW5hbWVfXzAwNV8gaW5cbiAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZmlsZW5hbWVcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDA0X1xuICAgICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgICAgaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwNF9cbiAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICA7O1xuXG4gICAgbGV0IF8gPSBzZXhwX29mX3RcblxuICAgIGxldCBjb21wYXJlID1cbiAgICAgIChmdW4gYV9fMDE1XyBiX18wMTZfIC0+XG4gICAgICAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAxNV8gYl9fMDE2X1xuICAgICAgICAgdGhlbiAwXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggTmFtZS5jb21wYXJlIGFfXzAxNV8uZmlsZW5hbWUgYl9fMDE2Xy5maWxlbmFtZSB3aXRoXG4gICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMTVfLmxpbmVfbnVtYmVyIGJfXzAxNl8ubGluZV9udW1iZXIgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDE1Xy5saW5lX3N0YXJ0IGJfXzAxNl8ubGluZV9zdGFydCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMTVfLnN0YXJ0X3BvcyBiX18wMTZfLnN0YXJ0X3BvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMTVfLmVuZF9wb3MgYl9fMDE2Xy5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gICAgOztcblxuICAgIGxldCBfID0gY29tcGFyZVxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfZmlsZSBmaWxlbmFtZSA9XG4gICAgeyBmaWxlbmFtZTsgbGluZV9udW1iZXIgPSAxOyBsaW5lX3N0YXJ0ID0gMDsgc3RhcnRfcG9zID0gMDsgZW5kX3BvcyA9IDAgfVxuICA7O1xuXG4gIGxldCBvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiAocG9zIDogU291cmNlX2NvZGVfcG9zaXRpb24udCkgPVxuICAgIHsgZmlsZW5hbWUgPSBOYW1lLm9mX3N0cmluZyAoU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIHBvcy5wb3NfZm5hbWUpXG4gICAgOyBsaW5lX251bWJlciA9IHBvcy5wb3NfbG51bVxuICAgIDsgbGluZV9zdGFydCA9IHBvcy5wb3NfYm9sXG4gICAgOyBzdGFydF9wb3MgPSBwb3MucG9zX2NudW1cbiAgICA7IGVuZF9wb3MgPSBwb3MucG9zX2NudW1cbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBzaWdcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcbiAgW0BAb2NhbWwuZG9jIFwiQGlubGluZVwiXVxuXG4gIFtAQEBlbmRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZV1cblxuICBsZXQgXyA9IGZ1biAoXyA6IHQpIC0+ICgpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IF8gPSBzZXhwX29mX3RcbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9zdHJpbmcgOiB0IC0+IHQgLT4gaW50KVxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBbQEBAZW5kXVxuXG4gIGxldCB0b19zdHJpbmcgdCA9IHRcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBleHBlY3RlZF9sZW5ndGggPSAzMiBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA8PiBleHBlY3RlZF9sZW5ndGhcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkZpbGUuRGlnZXN0Lm9mX3N0cmluZywgdW5leHBlY3RlZCBsZW5ndGhcIjtcbiAgICBmb3IgaSA9IDAgdG8gZXhwZWN0ZWRfbGVuZ3RoIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyAtPiAoKVxuICAgICAgfCBfIC0+IGludmFsaWRfYXJnIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkZpbGUuRGlnZXN0Lm9mX3N0cmluZ1wiXG4gICAgZG9uZTtcbiAgICBzXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTk9URTpcbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmdMYWJlbHMubWxpLCBydW4gdG9vbHMvc3luY19zdGRsaWJfZG9jcyBhZnRlciBlZGl0aW5nXG4gICBpdCB0byBnZW5lcmF0ZSBzdHJpbmcubWxpLlxuXG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nLm1saSwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkgLS0gZWRpdFxuICAgc3RyaW5nTGFiZWxzLm1saSBpbnN0ZWFkLlxuICopXG5cbigqKiBTdHJpbmdzLlxuXG4gICAgQSBzdHJpbmcgW3NdIG9mIGxlbmd0aCBbbl0gaXMgYW4gaW5kZXhhYmxlIGFuZCBpbW11dGFibGUgc2VxdWVuY2VcbiAgICBvZiBbbl0gYnl0ZXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlc2UgYnl0ZXMgYXJlIHJlZmVycmVkIHRvXG4gICAgYXMgY2hhcmFjdGVycy5cblxuICAgIFRoZSBzZW1hbnRpY3Mgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICAgaW5kaWNlcyBhbmQgcG9zaXRpb25zLiBUaGVzZSBhcmUgZGVwaWN0ZWQgYW5kIGRlc2NyaWJlZFxuICAgIGFzIGZvbGxvd3MuXG5cbnt2XG5wb3NpdGlvbnMgIDAgICAxICAgMiAgIDMgICA0ICAgIG4tMSAgICBuXG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG4gIGluZGljZXMgIHwgMCB8IDEgfCAyIHwgMyB8IC4uLiB8IG4tMSB8XG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG52fVxuICAgIHt1bFxuICAgIHstIEFuIHtlIGluZGV4fSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFxcW1swXTtbbi0xXVxcXS5cbiAgICAgICBJdCByZXByZXNlbnRzIHRoZSBbaV10aCBieXRlIChjaGFyYWN0ZXIpIG9mIFtzXSB3aGljaCBjYW4gYmVcbiAgICAgICBhY2Nlc3NlZCB1c2luZyB0aGUgY29uc3RhbnQgdGltZSBzdHJpbmcgaW5kZXhpbmcgb3BlcmF0b3JcbiAgICAgICBbcy5baV1dLn1cbiAgICB7LSBBIHtlIHBvc2l0aW9ufSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICAgICAgXFxbWzBdO1tuXVxcXS4gSXQgcmVwcmVzZW50cyBlaXRoZXIgdGhlIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2ZcbiAgICAgICB0aGUgc3RyaW5nLCBvciB0aGUgcG9pbnQgYmV0d2VlbiB0d28gaW5kaWNlcywgb3IgdGhlIHBvaW50IGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGUgW2lddGggYnl0ZSBpbmRleCBpcyBiZXR3ZWVuIHBvc2l0aW9uXG4gICAgICAgW2ldIGFuZCBbaSsxXS59fVxuXG4gICAgVHdvIGludGVnZXJzIFtzdGFydF0gYW5kIFtsZW5dIGFyZSBzYWlkIHRvIGRlZmluZSBhIHtlIHZhbGlkXG4gICAgc3Vic3RyaW5nfSBvZiBbc10gaWYgW2xlbiA+PSAwXSBhbmQgW3N0YXJ0XSwgW3N0YXJ0K2xlbl0gYXJlXG4gICAgcG9zaXRpb25zIG9mIFtzXS5cblxuICAgIHtiIFVuaWNvZGUgdGV4dC59IFN0cmluZ3MgYmVpbmcgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBieXRlcywgdGhleVxuICAgIGNhbiBob2xkIGFueSBraW5kIG9mIHRleHR1YWwgZW5jb2RpbmcuIEhvd2V2ZXIgdGhlIHJlY29tbWVuZGVkXG4gICAgZW5jb2RpbmcgZm9yIHN0b3JpbmcgVW5pY29kZSB0ZXh0IGluIE9DYW1sIHN0cmluZ3MgaXMgVVRGLTguIFRoaXNcbiAgICBpcyB0aGUgZW5jb2RpbmcgdXNlZCBieSBVbmljb2RlIGVzY2FwZXMgaW4gc3RyaW5nIGxpdGVyYWxzLiBGb3JcbiAgICBleGFtcGxlIHRoZSBzdHJpbmcgW1wiXFx1ezFGNDJCfVwiXSBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlXG4gICAgVW5pY29kZSBjaGFyYWN0ZXIgVSsxRjQyQi5cblxuICAgIHtiIFBhc3QgbXV0YWJpbGl0eS59IEJlZm9yZSBPQ2FtbCA0LjAyLCBzdHJpbmdzIHVzZWQgdG8gYmUgbW9kaWZpYWJsZSBpblxuICAgIHBsYWNlIGxpa2UgeyFCeXRlcy50fSBtdXRhYmxlIHNlcXVlbmNlcyBvZiBieXRlcy5cbiAgICBPQ2FtbCA0IGhhZCB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc3VwcG9ydCB0aGVcbiAgICB0cmFuc2l0aW9uIHBlcmlvZCBmcm9tIG11dGFibGUgdG8gaW1tdXRhYmxlIHN0cmluZ3MuXG4gICAgVGhvc2Ugb3B0aW9ucyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgYW5kIHN0cmluZ3MgYXJlIG5vdyBhbHdheXNcbiAgICBpbW11dGFibGUuXG5cbiAgICBUaGUgbGFiZWxlZCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgICB7IVN0ZExhYmVsc30gbW9kdWxlLlxuKilcblxuKCoqIHsxOnN0cmluZ3MgU3RyaW5nc30gKilcblxudHlwZSB0ID0gc3RyaW5nXG4oKiogVGhlIHR5cGUgZm9yIHN0cmluZ3MuICopXG5cbnZhbCBtYWtlIDogaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4oKiogW21ha2UgbiBjXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggZWFjaCBpbmRleCBob2xkaW5nIHRoZVxuICAgIGNoYXJhY3RlciBbY10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS4gKilcblxudmFsIGluaXQgOiBpbnQgLT4gKGludCAtPiBjaGFyKSAtPiBzdHJpbmdcbigqKiBbaW5pdCBuIGZdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBpbmRleFxuICAgIFtpXSBob2xkaW5nIHRoZSBjaGFyYWN0ZXIgW2YgaV0gKGNhbGxlZCBpbiBpbmNyZWFzaW5nIGluZGV4IG9yZGVyKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LlxuICAgIEBzaW5jZSA0LjAyICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbnZhbCBvZl9ieXRlcyA6IGJ5dGVzIC0+IHN0cmluZ1xuKCoqIFJldHVybiBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW4gYnl0ZVxuICAgIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBTYW1lIGFzIHshQnl0ZXMuYmxpdF9zdHJpbmd9IHdoaWNoIHNob3VsZCBiZSBwcmVmZXJyZWQuICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxuKCoqIHsxOnByZWRpY2F0ZXMgUHJlZGljYXRlcyBhbmQgY29tcGFyaXNvbnN9ICopXG5cbnZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4oKiogW2VxdWFsIHMwIHMxXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3MwXSBhbmQgW3MxXSBhcmUgY2hhcmFjdGVyLXdpc2VcbiAgICBlcXVhbC5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzICopXG5cbnZhbCBlbmRzX3dpdGggOlxuICBzdWZmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtlbmRzX3dpdGggXVt+c3VmZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gZW5kcyB3aXRoIFtzdWZmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWluc19mcm9tIHMgc3RhcnQgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGFmdGVyIHBvc2l0aW9uIFtzdGFydF0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RhcnRdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbcmNvbnRhaW5zX2Zyb20gcyBzdG9wIGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBiZWZvcmUgcG9zaXRpb24gW3N0b3ArMV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RvcCA8IDBdIG9yIFtzdG9wKzFdIGlzIG5vdCBhIHZhbGlkXG4gICAgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgY29udGFpbnMgOiBzdHJpbmcgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zIHMgY10gaXMgeyFTdHJpbmcuY29udGFpbnNfZnJvbX1bIHMgMCBjXS4gKilcblxuKCoqIHsxOmV4dHJhY3QgRXh0cmFjdGluZyBzdWJzdHJpbmdzfSAqKVxuXG52YWwgc3ViIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gc3RyaW5nXG4oKiogW3N1YiBzIHBvcyBsZW5dIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbGVuXSwgY29udGFpbmluZyB0aGVcbiAgICBzdWJzdHJpbmcgb2YgW3NdIHRoYXQgc3RhcnRzIGF0IHBvc2l0aW9uIFtwb3NdIGFuZCBoYXMgbGVuZ3RoXG4gICAgW2xlbl0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbcG9zXSBhbmQgW2xlbl0gZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkXG4gICAgc3Vic3RyaW5nIG9mIFtzXS4gKilcblxudmFsIHNwbGl0X29uX2NoYXIgOiBjaGFyIC0+IHN0cmluZyAtPiBzdHJpbmcgbGlzdFxuKCoqIFtzcGxpdF9vbl9jaGFyIHNlcCBzXSBpcyB0aGUgbGlzdCBvZiBhbGwgKHBvc3NpYmx5IGVtcHR5KVxuICAgIHN1YnN0cmluZ3Mgb2YgW3NdIHRoYXQgYXJlIGRlbGltaXRlZCBieSB0aGUgY2hhcmFjdGVyIFtzZXBdLlxuICAgIElmIFtzXSBpcyBlbXB0eSwgdGhlIHJlc3VsdCBpcyB0aGUgc2luZ2xldG9uIGxpc3QgW1tcIlwiXV0uXG5cbiAgICBUaGUgZnVuY3Rpb24ncyByZXN1bHQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czpcbiAgICB7dWxcbiAgICB7LSBUaGUgbGlzdCBpcyBub3QgZW1wdHkufVxuICAgIHstIENvbmNhdGVuYXRpbmcgaXRzIGVsZW1lbnRzIHVzaW5nIFtzZXBdIGFzIGEgc2VwYXJhdG9yIHJldHVybnMgYVxuICAgICAgc3RyaW5nIGVxdWFsIHRvIHRoZSBpbnB1dCAoW2NvbmNhdCAobWFrZSAxIHNlcClcbiAgICAgIChzcGxpdF9vbl9jaGFyIHNlcCBzKSA9IHNdKS59XG4gICAgey0gTm8gc3RyaW5nIGluIHRoZSByZXN1bHQgY29udGFpbnMgdGhlIFtzZXBdIGNoYXJhY3Rlci59fVxuXG4gICAgQHNpbmNlIDQuMDQgKDQuMDUgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG52YWwgbWFwaSA6IChpbnQgLT4gY2hhciAtPiBjaGFyKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW21hcGkgZiBzXSBpcyBsaWtlIHshbWFwfSBidXQgdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgaXMgYWxzb1xuICAgIHBhc3NlZCB0byBbZl0uXG5cbiAgICBAc2luY2UgNC4wMiAqKVxuXG52YWwgZm9sZF9sZWZ0IDogKCdhY2MgLT4gY2hhciAtPiAnYWNjKSAtPiAnYWNjIC0+IHN0cmluZyAtPiAnYWNjXG4oKiogW2ZvbGRfbGVmdCBmIHggc10gY29tcHV0ZXMgW2YgKC4uLiAoZiAoZiB4IHMuWzBdKSBzLlsxXSkgLi4uKSBzLltuLTFdXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZm9sZF9yaWdodCA6IChjaGFyIC0+ICdhY2MgLT4gJ2FjYykgLT4gc3RyaW5nIC0+ICdhY2MgLT4gJ2FjY1xuKCoqIFtmb2xkX3JpZ2h0IGYgcyB4XSBjb21wdXRlcyBbZiBzLlswXSAoZiBzLlsxXSAoIC4uLiAoZiBzLltuLTFdIHgpIC4uLikpXSxcbiAgICB3aGVyZSBbbl0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIFtzXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgZm9yX2FsbCA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2Zvcl9hbGwgcCBzXSBjaGVja3MgaWYgYWxsIGNoYXJhY3RlcnMgaW4gW3NdIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbcF0uXG4gICAgQHNpbmNlIDQuMTMgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMyAqKVxuXG52YWwgdHJpbSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdHJpbSBzXSBpcyBbc10gd2l0aG91dCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlLiBXaGl0ZXNwYWNlXG4gICAgY2hhcmFjdGVycyBhcmU6IFsnICddLCBbJ1xceDBDJ10gKGZvcm0gZmVlZCksIFsnXFxuJ10sIFsnXFxyJ10sIGFuZCBbJ1xcdCddLlxuXG4gICAgQHNpbmNlIDQuMDAgKilcblxudmFsIGVzY2FwZWQgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2VzY2FwZWQgc10gaXMgW3NdIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGVzY2FwZVxuICAgIHNlcXVlbmNlcywgZm9sbG93aW5nIHRoZSBsZXhpY2FsIGNvbnZlbnRpb25zIG9mIE9DYW1sLlxuXG4gICAgQWxsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMtQVNDSUkgcHJpbnRhYmxlIHJhbmdlIFxcWzB4MjA7MHg3RVxcXSBhcmVcbiAgICBlc2NhcGVkLCBhcyB3ZWxsIGFzIGJhY2tzbGFzaCAoMHgyRikgYW5kIGRvdWJsZS1xdW90ZSAoMHgyMikuXG5cbiAgICBUaGUgZnVuY3Rpb24geyFTY2FuZi51bmVzY2FwZWR9IGlzIGEgbGVmdCBpbnZlcnNlIG9mIFtlc2NhcGVkXSxcbiAgICBpLmUuIFtTY2FuZi51bmVzY2FwZWQgKGVzY2FwZWQgcykgPSBzXSBmb3IgYW55IHN0cmluZyBbc10gKHVubGVzc1xuICAgIFtlc2NhcGVkIHNdIGZhaWxzKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCB1cHBlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VwcGVyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgbG93ZXJjYXNlIGxldHRlcnNcbiAgICB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBsb3dlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2xvd2VyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgdXBwZXJjYXNlIGxldHRlcnMgdHJhbnNsYXRlZFxuICAgIHRvIGxvd2VyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMyAoNC4wNSBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIHVuY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdW5jYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvIGxvd2VyY2FzZSxcbiAgICB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzICg0LjA1IGluIFN0cmluZ0xhYmVscykgKilcblxuKCoqIHsxOnRyYXZlcnNpbmcgVHJhdmVyc2luZ30gKilcblxudmFsIGl0ZXIgOiAoY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyIGYgc10gYXBwbGllcyBmdW5jdGlvbiBbZl0gaW4gdHVybiB0byBhbGwgdGhlIGNoYXJhY3RlcnMgb2YgW3NdLlxuICAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW2Ygcy5bMF07IGYgcy5bMV07IC4uLjsgZiBzLltsZW5ndGggcyAtIDFdOyAoKV0uICopXG5cbnZhbCBpdGVyaSA6IChpbnQgLT4gY2hhciAtPiB1bml0KSAtPiBzdHJpbmcgLT4gdW5pdFxuKCoqIFtpdGVyaV0gaXMgbGlrZSB7IWl0ZXJ9LCBidXQgdGhlIGZ1bmN0aW9uIGlzIGFsc28gZ2l2ZW4gdGhlXG4gICAgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaW5kZXguXG5cbiAgICBAc2luY2UgNC4wMCAqKVxuXG4oKiogezE6c2VhcmNoaW5nIFNlYXJjaGluZ30gKilcblxudmFsIGluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG5cbnZhbCBpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCBpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb219WyBzIDAgY10uICopXG5cbnZhbCBpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb21fb3B0fVsgcyAwIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXggcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbX1bIHMgKGxlbmd0aCBzIC0gMSkgY10uICopXG5cbnZhbCByaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb21fb3B0fVsgcyAobGVuZ3RoIHMgLSAxKSBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbigqKiB7MSBTdHJpbmdzIGFuZCBTZXF1ZW5jZXN9ICopXG5cbnZhbCB0b19zZXEgOiB0IC0+IGNoYXIgU2VxLnRcbigqKiBbdG9fc2VxIHNdIGlzIGEgc2VxdWVuY2UgbWFkZSBvZiB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyBpblxuICAgIGluY3JlYXNpbmcgb3JkZXIuIEluIFtcInVuc2FmZS1zdHJpbmdcIl0gbW9kZSwgbW9kaWZpY2F0aW9ucyBvZiB0aGUgc3RyaW5nXG4gICAgZHVyaW5nIGl0ZXJhdGlvbiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgdG9fc2VxaSA6IHQgLT4gKGludCAqIGNoYXIpIFNlcS50XG4oKiogW3RvX3NlcWkgc10gaXMgbGlrZSB7IXRvX3NlcX0gYnV0IGFsc28gdHVwbGVzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIG9mX3NlcSA6IGNoYXIgU2VxLnQgLT4gdFxuKCoqIFtvZl9zZXEgc10gaXMgYSBzdHJpbmcgbWFkZSBvZiB0aGUgc2VxdWVuY2UncyBjaGFyYWN0ZXJzLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxuKCoqIHsxOnV0ZiBVVEYgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb25zfVxuXG4gICAgQHNpbmNlIDQuMTQgKilcblxuKCoqIHsyOnV0Zl84IFVURi04fSAqKVxuXG52YWwgZ2V0X3V0Zl84X3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzhfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi04IGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW5cbiAgICBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfOCA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfOCBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTggZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmJlIFVURi0xNkJFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmJlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2YmVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkJFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZiZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZiZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2QkUgZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmxlIFVURi0xNkxFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmxlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2bGVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkxFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZsZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZsZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2TEUgZGF0YS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQ4IGIgaV0gaXMgW2JdJ3Mgc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfdWludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzXG4qKVxuXG52YWwgZ2V0X2ludDE2X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMCAqKVxuXG52YWwgc2VlZGVkX2hhc2ggOiBpbnQgLT4gdCAtPiBpbnRcbigqKiBBIHNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5zZWVkZWRfaGFzaH0uIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoaXMgbW9kdWxlIHRvIGJlIHBhc3NlZCBhc1xuICAgIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yIHshSGFzaHRibC5NYWtlU2VlZGVkfS5cblxuICAgIEBzaW5jZSA1LjAgKilcblxudmFsIGdldF9pbnQzMl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ2NF9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ2NF9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xM1xuKilcblxuKCoqLyoqKVxuXG4oKiBUaGUgZm9sbG93aW5nIGlzIGZvciBzeXN0ZW0gdXNlIG9ubHkuIERvIG5vdCBjYWxsIGRpcmVjdGx5LiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT5cbiAgICB1bml0ID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbiIsIm9wZW4hIEJhc2Vcbm9wZW4gSW1wb3J0XG5vcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5vcGVuIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgQm9keSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgRXhhY3Qgb2Ygc3RyaW5nXG4gICAgfCBPdXRwdXRcbiAgICB8IFByZXR0eSBvZiAnYVxuICAgIHwgVW5yZWFjaGFibGVcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmUsIGVxdWFsXVxuXG4gIGxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDA2XykgOiAoKGFfXzAwNl8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMDZfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyAtPiBmdW5jdGlvblxuICAgICAgfCBFeGFjdCBhcmcwX18wMDJfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDNfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDAyXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGFjdFwiOyByZXMwX18wMDNfIF1cbiAgICAgIHwgT3V0cHV0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk91dHB1dFwiXG4gICAgICB8IFByZXR0eSBhcmcwX18wMDRfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDVfID0gX29mX2FfXzAwMV8gYXJnMF9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJQcmV0dHlcIjsgcmVzMF9fMDA1XyBdXG4gICAgICB8IFVucmVhY2hhYmxlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVucmVhY2hhYmxlXCJcbiAgOztcblxuICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwN18gYl9fMDA4XyAtPlxuICAgIGlmIFN0ZGxpYi4oID09ICkgYV9fMDA3XyBiX18wMDhfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDdfLCBiX18wMDhfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAwOV8sIEV4YWN0IF9iX18wMTBfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDlfIF9iX18wMTBfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgRXhhY3QgXyAtPiAxXG4gICAgICB8IE91dHB1dCwgT3V0cHV0IC0+IDBcbiAgICAgIHwgT3V0cHV0LCBfIC0+IC0xXG4gICAgICB8IF8sIE91dHB1dCAtPiAxXG4gICAgICB8IFByZXR0eSBfYV9fMDExXywgUHJldHR5IF9iX18wMTJfIC0+IF9jbXBfX2EgX2FfXzAxMV8gX2JfXzAxMl9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gMVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gMClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBTdGRsaWIuKCA9PSApIGFfXzAxM18gYl9fMDE0X1xuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDEzXywgYl9fMDE0XyB3aXRoXG4gICAgICB8IEV4YWN0IF9hX18wMTVfLCBFeGFjdCBfYl9fMDE2XyAtPiBlcXVhbF9zdHJpbmcgX2FfXzAxNV8gX2JfXzAxNl9cbiAgICAgIHwgRXhhY3QgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBFeGFjdCBfIC0+IGZhbHNlXG4gICAgICB8IE91dHB1dCwgT3V0cHV0IC0+IHRydWVcbiAgICAgIHwgT3V0cHV0LCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIE91dHB1dCAtPiBmYWxzZVxuICAgICAgfCBQcmV0dHkgX2FfXzAxN18sIFByZXR0eSBfYl9fMDE4XyAtPiBfY21wX19hIF9hX18wMTdfIF9iX18wMThfXG4gICAgICB8IFByZXR0eSBfLCBfIC0+IGZhbHNlXG4gICAgICB8IF8sIFByZXR0eSBfIC0+IGZhbHNlXG4gICAgICB8IFVucmVhY2hhYmxlLCBVbnJlYWNoYWJsZSAtPiB0cnVlKVxuICA7O1xuXG4gIGxldCBfID0gZXF1YWxcblxuICBbQEBAZW5kXVxuXG4gIGxldCBtYXBfcHJldHR5IHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgKEV4YWN0IF8gfCBPdXRwdXQgfCBVbnJlYWNoYWJsZSkgYXMgdCAtPiB0XG4gICAgfCBQcmV0dHkgeCAtPiBQcmV0dHkgKGYgeClcbiAgOztcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IHRhZyA6IHN0cmluZyBvcHRpb25cbiAgOyBib2R5IDogJ2EgQm9keS50XG4gIDsgZXh0aWRfbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgOyBib2R5X2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlLCBlcXVhbF1cblxubGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuIF9vZl9hX18wMTlfXG4gICAgeyB0YWcgPSB0YWdfXzAyMV9cbiAgICA7IGJvZHkgPSBib2R5X18wMjNfXG4gICAgOyBleHRpZF9sb2NhdGlvbiA9IGV4dGlkX2xvY2F0aW9uX18wMjVfXG4gICAgOyBib2R5X2xvY2F0aW9uID0gYm9keV9sb2NhdGlvbl9fMDI3X1xuICAgIH0gLT5cbiAgICBsZXQgYm5kc19fMDIwXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICBsZXQgYm5kc19fMDIwXyA9XG4gICAgICBsZXQgYXJnX18wMjhfID0gRmlsZS5Mb2NhdGlvbi5zZXhwX29mX3QgYm9keV9sb2NhdGlvbl9fMDI3XyBpblxuICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlfbG9jYXRpb25cIjsgYXJnX18wMjhfIF0gOjogYm5kc19fMDIwX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI2XyA9IEZpbGUuTG9jYXRpb24uc2V4cF9vZl90IGV4dGlkX2xvY2F0aW9uX18wMjVfIGluXG4gICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXh0aWRfbG9jYXRpb25cIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIwX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI0XyA9IEJvZHkuc2V4cF9vZl90IF9vZl9hX18wMTlfIGJvZHlfXzAyM18gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5XCI7IGFyZ19fMDI0XyBdIDo6IGJuZHNfXzAyMF9cbiAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyMl8gPSBzZXhwX29mX29wdGlvbiBzZXhwX29mX3N0cmluZyB0YWdfXzAyMV8gaW5cbiAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0YWdcIjsgYXJnX18wMjJfIF0gOjogYm5kc19fMDIwX1xuICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgIGluXG4gICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAyMF9cbjs7XG5cbmxldCBfID0gc2V4cF9vZl90XG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICBmdW4gX2NtcF9fYSBhX18wMjlfIGJfXzAzMF8gLT5cbiAgaWYgU3RkbGliLiggPT0gKSBhX18wMjlfIGJfXzAzMF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGNvbXBhcmVfb3B0aW9uIGNvbXBhcmVfc3RyaW5nIGFfXzAyOV8udGFnIGJfXzAzMF8udGFnIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgIChtYXRjaCBCb2R5LmNvbXBhcmUgX2NtcF9fYSBhX18wMjlfLmJvZHkgYl9fMDMwXy5ib2R5IHdpdGhcbiAgICAgICB8IDAgLT5cbiAgICAgICAgIChtYXRjaCBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5leHRpZF9sb2NhdGlvbiBiX18wMzBfLmV4dGlkX2xvY2F0aW9uIHdpdGhcbiAgICAgICAgICB8IDAgLT4gRmlsZS5Mb2NhdGlvbi5jb21wYXJlIGFfXzAyOV8uYm9keV9sb2NhdGlvbiBiX18wMzBfLmJvZHlfbG9jYXRpb25cbiAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICB8IG4gLT4gbilcbiAgICB8IG4gLT4gbilcbjs7XG5cbmxldCBfID0gY29tcGFyZVxuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDM1XyBiX18wMzZfIC0+XG4gIGlmIFN0ZGxpYi4oID09ICkgYV9fMDM1XyBiX18wMzZfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlXG4gICAgU3RkbGliLiggJiYgKVxuICAgICAgKGVxdWFsX29wdGlvbiBlcXVhbF9zdHJpbmcgYV9fMDM1Xy50YWcgYl9fMDM2Xy50YWcpXG4gICAgICAoU3RkbGliLiggJiYgKVxuICAgICAgICAgKEJvZHkuZXF1YWwgX2NtcF9fYSBhX18wMzVfLmJvZHkgYl9fMDM2Xy5ib2R5KVxuICAgICAgICAgKFN0ZGxpYi4oICYmIClcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uZXh0aWRfbG9jYXRpb24gYl9fMDM2Xy5leHRpZF9sb2NhdGlvbilcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uYm9keV9sb2NhdGlvbiBiX18wMzZfLmJvZHlfbG9jYXRpb24pKSlcbjs7XG5cbmxldCBfID0gZXF1YWxcblxuW0BAQGVuZF1cblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gc3RyaW5nIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKGZ1biB4X18wNDFfIC0+IHNleHBfb2ZfdCBzZXhwX29mX3N0cmluZyB4X18wNDFfIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDQyXyBiX18wNDNfIC0+IGNvbXBhcmUgY29tcGFyZV9zdHJpbmcgYV9fMDQyXyBiX18wNDNfIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtYXBfcHJldHR5IHQgfmYgPSB7IHQgd2l0aCBib2R5ID0gQm9keS5tYXBfcHJldHR5IHQuYm9keSB+ZiB9XG4iLCJtb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBGaWxlID0gRmlsZVxuICBtb2R1bGUgRXhwZWN0YXRpb24gPSBFeHBlY3RhdGlvblxuZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIHVzZSBbRXhwZWN0X3Rlc3RfY29tbW9uXSBpbnN0ZWFkXCJdXG5cbmluY2x1ZGUgU3RkIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cbiIsIm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYENSICgqKiBMZWF2ZXMgYSBDUiwgc28gdGhhdCBmZWF0dXJlcyBjYW5ub3QgYmUgcmVsZWFzZWQuICopXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgKCoqIE9ubHkgZm9yIHBweF9leHBlY3QgdGVzdGluZzsgZG8gbm90IHVzZS4gKilcbiAgICBdXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgSU8gOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gIGVuZFxuXG4gICgqKiBSdW4gYW4gSU8gb3BlcmF0aW9uIHVudGlsIGNvbXBsZXRpb24gKilcbiAgdmFsIHJ1biA6ICh1bml0IC0+IHVuaXQgSU8udCkgLT4gdW5pdFxuXG4gICgqKiBbc2FuaXRpemVdIGNhbiBiZSB1c2VkIHRvIG1hcCBhbGwgb3V0cHV0IHN0cmluZ3MsIGUuZy4gZm9yIGNsZWFuc2luZy4gKilcbiAgdmFsIHNhbml0aXplIDogc3RyaW5nIC0+IHN0cmluZ1xuXG5cbiAgKCoqIFt1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZV0gc3BlY2lmaWVzIGhvdyB0byBkZWFsIHdpdGggb3V0cHV0IHRoYXQgc2hvdWxkIG5vdCBiZVxuICAgICAgcmVsZWFzZWQgZXZlbiBpZiBpdCBpcyBhY2NlcHRlZCAoZS5nLiBiYWNrdHJhY2VzKS4gVGhlIGRlZmF1bHQgaXMgW2BDUl0uICAqKVxuICB2YWwgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZS50XG5lbmRcblxuKCoqIENvbmZpZ3VyYXRpb24gZm9yIHJ1bm5pbmcgZXhwZWN0IHRlc3RzICopXG5tb2R1bGUgdHlwZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMgPSBzaWdcbiAgKCoqIFRvIGNvbmZpZ3VyZSBleHBlY3RfdGVzdCwgYWRkIHRoZSBmb2xsb3dpbmcgYXQgdGhlIHRvcCBvZiB5b3VyIC5tbCBmaWxlLCBvciBpbiBzb21lXG4gICAgICBpbXBvcnQubWw6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBFeHBlY3RfdGVzdF9jb25maWcgPSBzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZ1xuICAgICAgICAgIGxldCBwcmVfcmVkaXJlY3RfaG9vayAoKSA9IC4uLlxuICAgICAgICBlbmRcbiAgICAgIF19XG5cbiAgICAgIE5vdGUgdGhhdCBzaW5jZSBhbGwgZXhwZWN0IHRlc3QgYXJlIGFsc28gaW5saW5lIHRlc3RzLCB0aGUgaW5saW5lIHRlc3QgY29uZmlndXJhdGlvblxuICAgICAgYWxzbyBhcHBsaWVzIHRvIGFsbCBleHBlY3QgdGVzdC5cbiAgKilcblxuICBtb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgOiBzaWdcbiAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBjb21tZW50X3ByZWZpeCA6IHQgLT4gc3RyaW5nXG5cbiAgICAoKiogTWVzc2FnZSB0byBwcmludCB3aGVuIGFuIGV4cGVjdGF0aW9uIGNvbnRhaW5zIGEgYmFja3RyYWNlICopXG4gICAgdmFsIG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgOiB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTID0gU1xuZW5kXG4iLCJtb2R1bGUgdHlwZSBTID0gRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuU1xuXG5tb2R1bGUgdHlwZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMgPVxuICBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5FeHBlY3RfdGVzdF9jb25maWdfdHlwZXNcblxubW9kdWxlIFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gc3RydWN0XG4gIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzX2ludGYuVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICBsZXQgZXF1YWwgdDEgdDIgPSB0MSA9IHQyXG5cbiAgbGV0IGNvbW1lbnRfcHJlZml4ID0gZnVuY3Rpb25cbiAgICB8IGBDUiAtPiBcIkNSIFwiXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgLT4gXCJcIlxuICA7O1xuXG4gIGxldCBtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlIHQgPVxuICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICB7fFxuKCogJXNleHBlY3RfdGVzdF9jb2xsZWN0b3I6IFRoaXMgdGVzdCBleHBlY3RhdGlvbiBhcHBlYXJzIHRvIGNvbnRhaW4gYSBiYWNrdHJhY2UuXG4gICBUaGlzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFzIGJhY2t0cmFjZXMgYXJlIGZyYWdpbGUuXG4gICBQbGVhc2UgY2hhbmdlIHRoaXMgdGVzdCB0byBub3QgaW5jbHVkZSBhIGJhY2t0cmFjZS4gKilcblxufH1cbiAgICAgIChjb21tZW50X3ByZWZpeCB0KVxuICA7O1xuZW5kXG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyOFxcMDAwXFwwMDVcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjNcXDAwMFxcMDA2XFwwMDBcXDA4NVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDdcXDAwMFxcMDQwXFwwMDBcXDAzMVxcMDAwXFwwNDZcXDAwMFxcMDQ4XFwwMDBcXDAwN1xcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwMjhcXDAwMFxcMDYyXFwwMDBcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDA2N1xcMDAwXFwwNjdcXDAwMFxcMTAzXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwNVxcMDAwXFwwOTVcXDAwMFxcMTA3XFwwMDBcXDA5NVxcMDAwXFwxMTNcXDAwMFxcMDEwXFwwMDBcXDEwNFxcMDAwXFxcbiAgICBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTA0XFwwMDBcXDEyMlxcMDAwXFwxMDRcXDAwMFxcMTE2XFwwMDBcXDExMVxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMTE2XFwwMDBcXDExN1xcMDAwXFwxMjVcXDAwMFxcMTI3XFwwMDBcXDAxMlxcMDAwXFwxMjZcXDAwMFxcMTE1XFwwMDBcXFxuICAgIFxcMTE5XFwwMDBcXDEyMlxcMDAwXFwwMTNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA4XFwwMDBcXDAxMlxcMDAwXFwwMTRcXDAwMFxcMDI0XFwwMDBcXDAxMlxcMDAwXFwwMzlcXDAwMFxcMDEyXFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNjFcXDAwMFxcMDcxXFwwMDBcXDA1OVxcMDAwXFwwODZcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwM1xcMDAwXFwwMjlcXDAwMFxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAwNFxcMDAwXFwwMTdcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMThcXDAwMFxcMDI3XFwwMDBcXDAyNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMjZcXDAwMFxcMDE2XFwwMDBcXDAwNVxcMDAwXFwwMTFcXDAwMFxcMDIwXFwwMDBcXDAyMlxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMzBcXDAwMFxcMDEzXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA2MFxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDA1NlxcMDAwXFwwNThcXDAwMFxcMDYyXFwwMDBcXDA0NlxcMDAwXFwwNjNcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMjNcXDAwMFxcMDMzXFwwMDBcXDAzOFxcMDAwXFwwNDNcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA2MFxcMDAwXFwwNzBcXDAwMFxcMDgwXFwwMDBcXDA4NVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyOFxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDAxNlxcMDAwXFwwMThcXDAwMFxcMDIwXFwwMDBcXDAxN1xcMDAwXFwwMjZcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDE0XFwwMDBcXDAyNVxcMDAwXFwwMTVcXDAwMFxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAyN1xcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDM0XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwMzdcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU2XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjFcXDAwMFxcMDQ0XFwwMDBcXDA2MlxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBjaGVjayBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2MyBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDEgLT5cbiMgNSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgKCBub3RfYXRfYm9zIGxleGJ1ZiApXG4jIDE2OCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfY2hlY2tfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbm90X2F0X2JvcyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIDQ0XG5hbmQgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE4MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IDEgLT5cbiMgOSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTg1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMiAtPlxuIyAxMCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sbFwiXG4gICAgICAgICggZmFsc2UgKVxuIyAxOTAgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X25vdF9hdF9ib3NfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDEyIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiBcbiAgbGV0IGNvbnRhaW5zX2JhY2t0cmFjZXMgcyA9IGNoZWNrIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuIyAyMDEgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG4iLCJvcGVuIEV4cGVjdF90ZXN0X2NvbW1vblxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG5cbm1vZHVsZSBUZXN0X291dGNvbWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGVfZGlnZXN0IDogRmlsZS5EaWdlc3QudFxuICAgIDsgbG9jYXRpb24gOiBGaWxlLkxvY2F0aW9uLnRcbiAgICA7IGV4cGVjdGF0aW9ucyA6IEV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiA6IEV4cGVjdGF0aW9uLlJhdy50IG9wdGlvblxuICAgIDsgc2F2ZWRfb3V0cHV0IDogKEZpbGUuTG9jYXRpb24udCAqIHN0cmluZykgbGlzdFxuICAgIDsgdHJhaWxpbmdfb3V0cHV0IDogc3RyaW5nXG4gICAgOyB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZS50XG4gICAgOyB1bmNhdWdodF9leG4gOiAoZXhuICogUHJpbnRleGMucmF3X2JhY2t0cmFjZSkgb3B0aW9uXG4gICAgfVxuZW5kXG5cbmxldCB0ZXN0c19ydW4gOiBUZXN0X291dGNvbWUudCBsaXN0IHJlZiA9IHJlZiBbXVxuXG5sZXQgcHJvdGVjdCB+ZmluYWxseSB+ZiA9XG4gIG1hdGNoIGYgKCkgd2l0aFxuICB8IHggLT5cbiAgICBmaW5hbGx5ICgpO1xuICAgIHhcbiAgfCBleGNlcHRpb24gZSAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgcmFpc2UgZVxuOztcblxubW9kdWxlIEN1cnJlbnRfZmlsZSA9IHN0cnVjdFxuICBsZXQgY3VycmVudCA9IHJlZiBOb25lXG5cbiAgbGV0IHNldCB+YWJzb2x1dGVfZmlsZW5hbWUgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gY3VycmVudCA6PSBTb21lIGFic29sdXRlX2ZpbGVuYW1lXG4gICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3Iuc2V0OiBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IHVuc2V0ICgpID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBTb21lIF8gLT4gY3VycmVudCA6PSBOb25lXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLnVuc2V0OiBub3Qgc2V0XCJcbiAgOztcblxuICBsZXQgZ2V0ICgpID1cbiAgICBtYXRjaCAhY3VycmVudCB3aXRoXG4gICAgfCBTb21lIGZuIC0+IGZuXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLmdldDogbm90IHNldFwiXG4gIDs7XG5lbmRcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHNhdmVkIDogKEZpbGUuTG9jYXRpb24udCAqIGludCkgbGlzdFxuICAgIDsgY2hhbiA6IG91dF9jaGFubmVsXG4gICAgOyBmaWxlbmFtZSA6IEZpbGUuTmFtZS50XG4gICAgfVxuXG4gIGV4dGVybmFsIGJlZm9yZV90ZXN0XG4gICAgOiAgb3V0cHV0Om91dF9jaGFubmVsXG4gICAgLT4gc3Rkb3V0Om91dF9jaGFubmVsXG4gICAgLT4gc3RkZXJyOm91dF9jaGFubmVsXG4gICAgLT4gdW5pdFxuICAgID0gXCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3RcIlxuXG4gIGV4dGVybmFsIGFmdGVyX3Rlc3RcbiAgICA6ICBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0XCJcblxuICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX291dF9jaGFubmVsX3Bvc19mZFwiXG5cbiAgbGV0IGdldF9wb3NpdGlvbiAoKSA9IHBvc19vdXQgc3Rkb3V0XG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IGZpbGVuYW1lID0gRmlsZW5hbWUudGVtcF9maWxlIFwiZXhwZWN0LXRlc3RcIiBcIm91dHB1dFwiIGluXG4gICAgbGV0IGNoYW4gPSBvcGVuX291dF9iaW4gZmlsZW5hbWUgaW5cbiAgICBiZWZvcmVfdGVzdCB+b3V0cHV0OmNoYW4gfnN0ZG91dCB+c3RkZXJyO1xuICAgIHsgY2hhbjsgZmlsZW5hbWUgPSBGaWxlLk5hbWUub2Zfc3RyaW5nIGZpbGVuYW1lOyBzYXZlZCA9IFtdIH1cbiAgOztcblxuICBsZXQgcmVsYXRpdmVfZmlsZW5hbWUgdCA9IEZpbGUuTmFtZS5yZWxhdGl2ZV90byB+ZGlyOihGaWxlLmluaXRpYWxfZGlyICgpKSB0LmZpbGVuYW1lXG5cbiAgbGV0IHdpdGhfaWMgZm5hbWUgfmYgPVxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgcHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IGNsb3NlX2luIGljKSB+ZjooZnVuICgpIC0+IGYgaWMpXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRfdGVzdCA6IChGaWxlLkxvY2F0aW9uLnQgKiB0KSBvcHRpb24gcmVmID0gcmVmIE5vbmVcbiAgbGV0IGFtX3J1bm5pbmdfZXhwZWN0X3Rlc3QgKCkgPSBPcHRpb24uaXNfc29tZSAhY3VycmVudF90ZXN0XG5cbiAgbGV0IGdldF9jdXJyZW50ICgpID1cbiAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICB8IFNvbWUgKF8sIHQpIC0+IHRcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuSW5zdGFuY2UuZ2V0X2N1cnJlbnQgY2FsbGVkIG91dHNpZGUgYSB0ZXN0LlwiXG4gIDs7XG5cbiAgbGV0IHNhdmVfb3V0cHV0X3dpdGhvdXRfZmx1c2ggdCBsb2NhdGlvbiA9XG4gICAgbGV0IHBvcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgIHQuc2F2ZWQgPC0gKGxvY2F0aW9uLCBwb3MpIDo6IHQuc2F2ZWRcbiAgOztcblxuICBsZXQgc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICBsZXQgcHJldl9wb3MgPVxuICAgICAgbWF0Y2ggdC5zYXZlZCB3aXRoXG4gICAgICB8IFtdIC0+IDBcbiAgICAgIHwgKF8sIHByZXZfcG9zKSA6OiBfIC0+IHByZXZfcG9zXG4gICAgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkO1xuICAgIGZsdXNoIHQuY2hhbjtcbiAgICBsZXQgbGVuID0gcG9zIC0gcHJldl9wb3MgaW5cbiAgICB3aXRoX2ljIChyZWxhdGl2ZV9maWxlbmFtZSB0KSB+ZjooZnVuIGljIC0+XG4gICAgICBzZWVrX2luIGljIHByZXZfcG9zO1xuICAgICAgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4pXG4gIDs7XG5lbmRcblxubGV0IGFtX3J1bm5pbmdfZXhwZWN0X3Rlc3QgPSBJbnN0YW5jZS5hbV9ydW5uaW5nX2V4cGVjdF90ZXN0XG5cbmxldCBmbHVzaCAoKSA9XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKTtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5lcnJfZm9ybWF0dGVyICgpO1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZG91dDtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgbGV0IGluc3RhbmNlID0gSW5zdGFuY2UuZ2V0X2N1cnJlbnQgKCkgaW5cbiAgZmx1c2ggKCk7XG4gIEluc3RhbmNlLnNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCBpbnN0YW5jZSBsb2NhdGlvblxuOztcblxubW9kdWxlIE1ha2UgKEMgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEluc3RhbmNlX2lvIDogc2lnXG4gICAgdmFsIHNhdmVfb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHVuaXRcbiAgICB2YWwgc2F2ZV9hbmRfcmV0dXJuX291dHB1dCA6IEZpbGUuTG9jYXRpb24udCAtPiBzdHJpbmdcblxuICAgIHZhbCBleGVjXG4gICAgICA6ICBmaWxlX2RpZ2VzdDpGaWxlLkRpZ2VzdC50XG4gICAgICAtPiBsb2NhdGlvbjpGaWxlLkxvY2F0aW9uLnRcbiAgICAgIC0+IGV4cGVjdGF0aW9uczpFeHBlY3RhdGlvbi5SYXcudCBsaXN0XG4gICAgICAtPiB1bmNhdWdodF9leG5fZXhwZWN0YXRpb246RXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgICAtPiBmOih1bml0IC0+IHVuaXQgQy5JTy50KVxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIEluc3RhbmNlXG5cbiAgICBsZXQgZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIGxlbiA9XG4gICAgICBsZXQgcyA9IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHw+IEMuc2FuaXRpemUgaW5cbiAgICAgIGlmIG5vdCAoQ2hlY2tfYmFja3RyYWNlcy5jb250YWluc19iYWNrdHJhY2VzIHMpXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIC5tZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlXG4gICAgICAgICAgQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICBeIHNcbiAgICA7O1xuXG4gICAgbGV0IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgPVxuICAgICAgU3lzLmNoZGlyIChGaWxlLmluaXRpYWxfZGlyICgpKTtcbiAgICAgIGxldCBsYXN0X29mcyA9IGdldF9wb3NpdGlvbiAoKSBpblxuICAgICAgYWZ0ZXJfdGVzdCB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgICBjbG9zZV9vdXQgdC5jaGFuO1xuICAgICAgbGV0IGZuYW1lID0gcmVsYXRpdmVfZmlsZW5hbWUgdCBpblxuICAgICAgcHJvdGVjdFxuICAgICAgICB+ZmluYWxseTooZnVuICgpIC0+IFN5cy5yZW1vdmUgZm5hbWUpXG4gICAgICAgIH5mOihmdW4gKCkgLT5cbiAgICAgICAgICB3aXRoX2ljIGZuYW1lIH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgIGxldCBvZnMsIG91dHB1dHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChMaXN0LnJldiB0LnNhdmVkKVxuICAgICAgICAgICAgICAgIH5pbml0OigwLCBbXSlcbiAgICAgICAgICAgICAgICB+ZjooZnVuIChvZnMsIGFjYykgKGxvYywgbmV4dF9vZnMpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobmV4dF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICAgICAgICBuZXh0X29mcywgKGxvYywgcykgOjogYWNjKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB0cmFpbGluZ19vdXRwdXQgPSBleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUgaWMgKGxhc3Rfb2ZzIC0gb2ZzKSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgb3V0cHV0cywgdHJhaWxpbmdfb3V0cHV0KSlcbiAgICA7O1xuXG4gICAgbGV0IHNhdmVfb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIGZsdXNoICgpO1xuICAgICAgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uXG4gICAgOztcblxuICAgIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIGZsdXNoICgpO1xuICAgICAgc2F2ZV9hbmRfcmV0dXJuX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb25cbiAgICA7O1xuXG4gICAgbGV0ICgpID1cbiAgICAgIFN0ZGxpYi5hdF9leGl0IChmdW4gKCkgLT5cbiAgICAgICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgKGxvYywgdCkgLT5cbiAgICAgICAgICBsZXQgYmxvY2tzLCB0cmFpbGluZyA9IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgaW5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlxcblxcXG4gICAgICAgICAgICAgRXJyb3I6IHByb2dyYW0gZXhpdGVkIHdoaWxlIGV4cGVjdCB0ZXN0IHdhcyBydW5uaW5nIVxcblxcXG4gICAgICAgICAgICAgT3V0cHV0IGNhcHR1cmVkIHNvIGZhcjpcXG5cXFxuICAgICAgICAgICAgICUhXCJcbiAgICAgICAgICAgIChGaWxlLk5hbWUudG9fc3RyaW5nIGxvYy5maWxlbmFtZSlcbiAgICAgICAgICAgIGxvYy5saW5lX251bWJlclxuICAgICAgICAgICAgKGxvYy5zdGFydF9wb3MgLSBsb2MubGluZV9zdGFydClcbiAgICAgICAgICAgIChsb2MuZW5kX3BvcyAtIGxvYy5saW5lX3N0YXJ0KTtcbiAgICAgICAgICBMaXN0Lml0ZXIgYmxvY2tzIH5mOihmdW4gKF8sIHMpIC0+IFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHMpO1xuICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIHRyYWlsaW5nKVxuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB+ZmlsZV9kaWdlc3QgfmxvY2F0aW9uIH5leHBlY3RhdGlvbnMgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiB+ZiA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgY3VycmVudF90ZXN0IDo9IFNvbWUgKGxvY2F0aW9uLCB0KTtcbiAgICAgIGxldCBmaW5hbGx5IHVuY2F1Z2h0X2V4biA9XG4gICAgICAgIEMucnVuIChmdW4gKCkgLT5cbiAgICAgICAgICBDLklPLnJldHVyblxuICAgICAgICAgICAgKGZsdXNoICgpO1xuICAgICAgICAgICAgIGN1cnJlbnRfdGVzdCA6PSBOb25lO1xuICAgICAgICAgICAgIGxldCBzYXZlZF9vdXRwdXQsIHRyYWlsaW5nX291dHB1dCA9IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgaW5cbiAgICAgICAgICAgICB0ZXN0c19ydW5cbiAgICAgICAgICAgICA6PSB7IGZpbGVfZGlnZXN0XG4gICAgICAgICAgICAgICAgOyBsb2NhdGlvblxuICAgICAgICAgICAgICAgIDsgZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5fZXhwZWN0YXRpb25cbiAgICAgICAgICAgICAgICA7IHNhdmVkX291dHB1dFxuICAgICAgICAgICAgICAgIDsgdHJhaWxpbmdfb3V0cHV0XG4gICAgICAgICAgICAgICAgOyB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IEMudXBvbl91bnJlbGVhc2FibGVfaXNzdWVcbiAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6OiAhdGVzdHNfcnVuKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBDLnJ1biBmIHdpdGhcbiAgICAgIHwgKCkgLT4gZmluYWxseSBOb25lXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgICAgZmluYWxseSAoU29tZSAoZXhuLCBidCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNhdmVfb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9vdXRwdXRcbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0XG5cbiAgbGV0IHJ1blxuICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgfihsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udClcbiAgICAgICAgfmFic29sdXRlX2ZpbGVuYW1lOmRlZmluZWRfaW5cbiAgICAgICAgfmRlc2NyaXB0aW9uXG4gICAgICAgIH50YWdzXG4gICAgICAgIH5leHBlY3RhdGlvbnNcbiAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICB+aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICAgIGZcbiAgICA9XG4gICAgUHB4X2lubGluZV90ZXN0X2xpYi50ZXN0XG4gICAgICB+Y29uZmlnOmlubGluZV90ZXN0X2NvbmZpZ1xuICAgICAgfmRlc2NyOlxuICAgICAgICAobGF6eVxuICAgICAgICAgIChtYXRjaCBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBzIC0+IHMpKVxuICAgICAgfnRhZ3NcbiAgICAgIH5maWxlbmFtZTooRmlsZS5OYW1lLnRvX3N0cmluZyBsb2NhdGlvbi5maWxlbmFtZSlcbiAgICAgIH5saW5lX251bWJlcjpsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgfnN0YXJ0X3BvczoobG9jYXRpb24uc3RhcnRfcG9zIC0gbG9jYXRpb24ubGluZV9zdGFydClcbiAgICAgIH5lbmRfcG9zOihsb2NhdGlvbi5lbmRfcG9zIC0gbG9jYXRpb24ubGluZV9zdGFydClcbiAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgIGxldCByZWdpc3RlcmluZ190ZXN0c19mb3IgPSBDdXJyZW50X2ZpbGUuZ2V0ICgpIGluXG4gICAgICAgICBpZiBkZWZpbmVkX2luIDw+IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgdGhlblxuICAgICAgICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgIFwiVHJ5aW5nIHRvIHJ1biBhbiBleHBlY3QgdGVzdCBmcm9tIHRoZSB3cm9uZyBmaWxlLlxcblxcXG4gICAgICAgICAgICAgIC0gdGVzdCBkZWNsYXJlZCBhdCAlczolZFxcblxcXG4gICAgICAgICAgICAgIC0gdHJ5aW5nIHRvIHJ1biBpdCBmcm9tICVzXFxuXCJcbiAgICAgICAgICAgICBkZWZpbmVkX2luXG4gICAgICAgICAgICAgbG9jYXRpb24ubGluZV9udW1iZXJcbiAgICAgICAgICAgICByZWdpc3RlcmluZ190ZXN0c19mb3JcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAoKiBUbyBhdm9pZCBjYXB0dXJpbmcgbm90LXlldCBmbHVzaGVkIGRhdGEgb2YgdGhlIHN0ZG91dCBidWZmZXIgKilcbiAgICAgICAgICAgQy5ydW4gKGZ1biAoKSAtPiBDLklPLnJldHVybiAoZmx1c2ggKCkpKTtcbiAgICAgICAgICAgSW5zdGFuY2VfaW8uZXhlY1xuICAgICAgICAgICAgIH5maWxlX2RpZ2VzdFxuICAgICAgICAgICAgIH5sb2NhdGlvblxuICAgICAgICAgICAgIH5leHBlY3RhdGlvbnNcbiAgICAgICAgICAgICB+dW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uXG4gICAgICAgICAgICAgfmY7XG4gICAgICAgICAgIHRydWUpKVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgbmV2ZXJdXG5cbmxldCB0ZXN0c19ydW4gKCkgPVxuICAoKiBXZSBwcmVwZW5kIHRlc3RzIHdoZW4gd2UgZW5jb3VudGVyIHRoZW0sIHNvIHJldmVyc2UgdGhlIGxpc3QgdG8gcmVpbnN0YXRlIG9yZGVyICopXG4gIExpc3QucmV2ICF0ZXN0c19ydW5cbjs7XG4iLCJtb2R1bGUgSU8gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXQgcmV0dXJuIHggPSB4XG5lbmRcblxubGV0IHNhbml0aXplIHMgPSBzXG5sZXQgcnVuIGYgPSBmICgpXG5sZXQgdXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBgQ1JcbiIsIm1vZHVsZSBQcHhfc2V4cF9jb252X2xpYiA9IHN0cnVjdFxuICBtb2R1bGUgQ29udl9lcnJvciA9IFNleHBsaWIwLlNleHBfY29udl9lcnJvclxuICBtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxuICBtb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbmVuZFxuXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9jb252XG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcbiIsIigqIFRoaXMgbW9kdWxlIGJ1aWxkcyBhIGJ1ZmZlciBvZiBcImluc3RydWN0aW9uc1wiLCBpbiBvcmRlciB0byByZXByZXNlbnQgYSBjb21wYWN0IHNlcXVlbmNlXG4gICBvZiBkZWxpbWl0aW5nIHBvc2l0aW9ucyBhbmQgbmV3bGluZXMuIFRoZSBwYXJzZXIgc3RvcmVzIHRoZSBwb3NpdGlvbnMgb2YgZWFjaDpcblxuICAgLSBuZXdsaW5lXG4gICAtIGJlZ2lubmluZyBvZiBhdG9tXG4gICAtIGVuZCBvZiBhdG9tXG4gICAtIGxlZnQgcGFyZW50aGVzaXNcbiAgIC0gcmlnaHQgcGFyZW50aGVzaXNcblxuICAgSW5zdHJ1Y3Rpb25zIGFyZSBlbmNvZGVkIGFzIGEgc2VxdWVuY2UgYml0cy4gVGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgZGV0ZXJtaW5lZCBieVxuICAgbG9va2luZyBhdCB0aGUgbmV4dCBmZXcgYml0czpcblxuICAgLSBiaXQgMCByZXByZXNlbnRzIGEgc2F2ZWQgcG9zaXRpb24gZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDEwIHJlcHJlc2VudCBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTEwIGFyZSBmb2xsb3dlZCBieSA1IGJpdHMgb2YgcGF5bG9hZC4gVGhlIDUtYml0IHBheWxvYWRzIG9mIGFueSBzdWJzZXF1ZW50IDExMC1cbiAgICAgaW5zdHJ1Y3Rpb25zIGFyZSBzcXVhc2hlZCB0byBmb3JtIGEgbnVtYmVyIChsZWFzdCBzaWduaWZpY2FudCA1LWJpdCBjaHVuayBmaXJzdCkuXG4gICAgIFRoaXMgbnVtYmVyICsgNSByZXByZXNlbnRzIGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMTEwIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgbGluZSAod2l0aCBvZmZzZXQgaW5jcmVtZW50ZWQpXG4gICAtIGJpdHMgMTExMSByZXByZXNlbnQgYSBwb3NpdGlvbiBzYXZlZCB0d2ljZSBmb2xsb3dlZCBieSBhbiBvZmZzZXQgaW5jcmVtZW50XG5cbiAgIEZvciBpbnN0YW5jZSBsZXQncyBjb25zaWRlciB0aGUgZm9sbG93aW5nIHNleHA6XG5cbiAgIHtbXG4gICAgIHt8XG4oYWJjXG4gICAgICBcImZvb1xuIGJhclwiXG4pXG58fVxuICAgXX1cblxuICAgdGhlIHNlcXVlbmNlIG9mIGluc3RydWN0aW9ucyB0byByZWNvcmQgaW4gb3JkZXIgdG8gcmVjb25zdHJ1Y3QgdGhlIHBvc2l0aW9uIG9mIGFueVxuICAgc3ViLXNleHAgaXM6XG5cbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZmlyc3QgJygnXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IHN0YXJ0IG9mIFwiYWJjXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJhYmNcIlxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAxMTAwXzAwMDEgYWR2YW5jZSA2XG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IHN0YXJ0IG9mIFwiZm9vXFxuICBiYXJcIlxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMTEwICAgICAgbmV3bGluZVxuICAgLSAxMTAwXzAwMDAgYWR2YW5jZSA1XG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGVuZCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogbGFzdCAnKSdcblxuICAgKHdlIHNhdmUgdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzKVxuXG4gICBUaGUgdG90YWwgc2VxdWVuY2UgaXMgNDIgYml0cywgc28gd2UgbmVlZCA2IGJ5dGVzIHRvIHN0b3JlIGl0XG5cbiAgIFRoZSBzZXF1ZW5jZSBvZiBiaXRzIGlzIGVuY29kZWQgYXMgYSBzZXF1ZW5jZSBvZiAxNi1iaXQgdmFsdWVzLCB3aGVyZSB0aGUgZWFybGllciBiaXRzXG4gICBhcmUgbW9zdCBzaWduaWZpY2FudC5cblxuICAgTm90ZSB0aGF0IHRoZSBwYXJzZXIgc3RvcmVzIHRoZSBlbmQgcG9zaXRpb25zIGFzIGluY2x1c2l2ZS4gVGhpcyB3YXkgb25seSBzaW5nbGVcbiAgIGNoYXJhY3RlciBhdG9tcyByZXF1aXJlIGEgZG91YmxlIHBvc2l0aW9ucy4gSWYgd2Ugd2VyZSBzdG9yaW5nIGVuZCBwb3NpdGlvbnMgYXNcbiAgIGV4Y2x1c2l2ZSwgd2Ugd291bGQgbmVlZCBkb3VibGUgcG9zaXRpb25zIGZvciBbKShdIGFuZCBbYShdLCB3aGljaCBhcmUgbGlrZWx5IHRvIGJlXG4gICBmcmVxdWVudCBpbiBzLWV4cHJlc3Npb25zIHByaW50ZWQgd2l0aCB0aGUgbm9uIFtfaHVtXSBwcmludGVyLiBXZSBleHBlY3Qgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgdG8gYmUgbGVzcyBmcmVxdWVudCBzbyBpdCBtYWtlcyBzZW5zZSB0byBwZW5hbGl6ZSB0aGVtIGluc3RlYWQuXG4qKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSBwb3MgPVxuICB7IGxpbmUgOiBpbnRcbiAgOyBjb2wgOiBpbnRcbiAgOyBvZmZzZXQgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3BvcyA9XG4gIChmdW4geyBsaW5lID0gbGluZV9fMDAyXzsgY29sID0gY29sX18wMDRfOyBvZmZzZXQgPSBvZmZzZXRfXzAwNl8gfSAtPlxuICAgICBsZXQgYm5kc19fMDAxXyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBvZmZzZXRfXzAwNl8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwib2Zmc2V0XCI7IGFyZ19fMDA3XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9pbnQgY29sX18wMDRfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbFwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDAzXyA9IHNleHBfb2ZfaW50IGxpbmVfXzAwMl8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZVwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHBvcyAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9wb3MgPSBTdGRsaWIuY29tcGFyZVxubGV0IGJlZ2lubmluZ19vZl9maWxlID0geyBsaW5lID0gMTsgY29sID0gMDsgb2Zmc2V0ID0gMCB9XG5sZXQgc2hpZnRfcG9zIHBvcyB+Y29scyA9IHsgcG9zIHdpdGggY29sID0gcG9zLmNvbCArIGNvbHM7IG9mZnNldCA9IHBvcy5vZmZzZXQgKyBjb2xzIH1cblxudHlwZSByYW5nZSA9XG4gIHsgc3RhcnRfcG9zIDogcG9zXG4gIDsgZW5kX3BvcyA6IHBvc1xuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcmFuZ2UgPVxuICAoZnVuIHsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMDlfOyBlbmRfcG9zID0gZW5kX3Bvc19fMDExXyB9IC0+XG4gICAgIGxldCBibmRzX18wMDhfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfcG9zIGVuZF9wb3NfXzAxMV8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgbGV0IGFyZ19fMDEwXyA9IHNleHBfb2ZfcG9zIHN0YXJ0X3Bvc19fMDA5XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwOF9cbiAgICAgOiByYW5nZSAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9yYW5nZSA9IFN0ZGxpYi5jb21wYXJlXG5cbmxldCBtYWtlX3JhbmdlX2luY2wgfnN0YXJ0X3BvcyB+bGFzdF9wb3MgPVxuICB7IHN0YXJ0X3BvczsgZW5kX3BvcyA9IHNoaWZ0X3BvcyBsYXN0X3BvcyB+Y29sczoxIH1cbjs7XG5cbm1vZHVsZSBDaHVuayA6IHNpZ1xuICAoKiogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBbbGVuZ3RoLzJdIHNpZ25lZCAxNi1iaXQgdmFsdWVzICopXG4gIHR5cGUgdFxuXG4gICgqKiBMZW5ndGggaW4gYnl0ZXMuICopXG4gIHZhbCBsZW5ndGggOiBpbnRcblxuICB2YWwgYWxsb2MgOiB1bml0IC0+IHRcblxuICAoKiogW2dldDE2IH5wb3NdIGFuZCBbc2V0MTYgfnBvc10gbWFuaXB1bGF0ZSB0aGUgW3Bvcy8yXXRoIHN0b3JlZCB2YWx1ZS5cbiAgICAgIFtwb3NdIG11c3QgYmUgZXZlbi5cbiAgICAgIFtzZXQxNiB4XSBvbmx5IHVzZXMgdGhlIDE2IGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW3hdLiAqKVxuICB2YWwgZ2V0MTYgOiB0IC0+IHBvczppbnQgLT4gaW50XG5cbiAgdmFsIHNldDE2IDogdCAtPiBwb3M6aW50IC0+IGludCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXNcblxuICAoKiBPQ2FtbCBzdHJpbmdzIGFsd2F5cyB3YXN0ZSB0d28gYnl0ZXMgYXQgdGhlIGVuZCwgc28gd2UgdGFrZSBhIHBvd2VyIG9mIHR3byBtaW51cyB0d29cbiAgICAgdG8gYmUgc3VyZSB3ZSBkb24ndCB3YXN0ZSBzcGFjZS4gKilcbiAgbGV0IGxlbmd0aCA9IDYyXG4gIGxldCBhbGxvYyAoKSA9IEJ5dGVzLmNyZWF0ZSBsZW5ndGhcblxuICBleHRlcm5hbCBnZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50ID0gXCIlY2FtbF9ieXRlc19nZXQxNlwiXG4gIGV4dGVybmFsIHNldDE2IDogYnl0ZXMgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuXG4gICgqIElmIHdlIHdhbnQgdG8gbWFrZSBhIFtQb3NpdGlvbnMudF0gc2VyaWFsaXphYmxlOlxuXG4gICAgIHtbXG4gICAgICAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCI7O1xuXG4gICAgICAgbGV0IGdldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyAtPiBnZXQxNiBidWYgfnBvcyB8PiBic3dhcDE2XG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGdldDE2XG5cbiAgICAgICBsZXQgc2V0MTYgPVxuICAgICAgICAgaWYgQ2FtbC5TeXMuYXJjaF9iaWdfZW5kaWFuIHRoZW5cbiAgICAgICAgICAgZnVuIGJ1ZiB+cG9zIHggLT4gc2V0MTYgYnVmIH5wb3MgKGJzd2FwMTYgeClcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgc2V0MTZcbiAgICAgXX1cblxuICAqKVxuZW5kXG5cbnR5cGUgdF8gPVxuICB7IGNodW5rcyA6IENodW5rLnQgbGlzdFxuICA7ICgqIFtudW1fYnl0ZXMgKiA4ICsgZXh0cmFfYml0c10gaXMgdGhlIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbY2h1bmtzXS5cbiAgICAgICBUaGUgbGFzdCBbZXh0cmFfYml0c10gYml0cyB3aWxsIGJlIHN0b3JlZCBhcyB0aGUgKmxlYXN0KiBzaWduaWZpY2FudCBiaXRzXG4gICAgICAgb2YgdGhlIGFwcHJvcHJpYXRlIHBhaXIgb2YgYnl0ZXMgb2YgdGhlIGxhc3QgY2h1bmsuICopXG4gICAgbnVtX2J5dGVzIDogaW50XG4gIDsgZXh0cmFfYml0cyA6IGludFxuICA7IGluaXRpYWxfcG9zIDogcG9zXG4gIH1cblxudHlwZSB0ID0gdF8gTGF6eS50XG5cbmxldCBtZW1vcnlfZm9vdHByaW50X2luX2J5dGVzIChsYXp5IHQpID1cbiAgbGV0IG51bV9maWVsZHMgPSA0IGluXG4gIGxldCBoZWFkZXJfd29yZHMgPSAxIGluXG4gIGxldCB3b3JkX2J5dGVzID1cbiAgICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICB8IDMyIC0+IDRcbiAgICB8IDY0IC0+IDhcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxldCBjaHVua193b3JkcyA9XG4gICAgbGV0IGRpdl9jZWlsIGEgYiA9IChhICsgYiAtIDEpIC8gYiBpblxuICAgIGxldCBuID1cbiAgICAgIGRpdl9jZWlsXG4gICAgICAgIChDaHVuay5sZW5ndGhcbiAgICAgICAgICsgMSAoKiBOVUwgdGVybWluYXRpbmcgYnl0ZXMgKilcbiAgICAgICAgICsgMSAoKiBudW1iZXIgb2Ygd2FzdGVkIGJ5dGVzIHRvIGZpbGwgYSB3b3JkICopKVxuICAgICAgICB3b3JkX2J5dGVzXG4gICAgaW5cbiAgICBuICsgaGVhZGVyX3dvcmRzXG4gIGluXG4gIGxldCBwb3NfZmllbGRzID0gMyBpblxuICBsZXQgcG9zX3dvcmRzID0gaGVhZGVyX3dvcmRzICsgcG9zX2ZpZWxkcyBpblxuICBsZXQgbGlzdF9jb25zX3dvcmRzID0gaGVhZGVyX3dvcmRzICsgMiBpblxuICAoaGVhZGVyX3dvcmRzXG4gICArIG51bV9maWVsZHNcbiAgICsgcG9zX3dvcmRzXG4gICArIChMaXN0Lmxlbmd0aCB0LmNodW5rcyAqIChjaHVua193b3JkcyArIGxpc3RfY29uc193b3JkcykpKVxuICAqIHdvcmRfYnl0ZXNcbjs7XG5cbm1vZHVsZSBCdWlsZGVyID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNodW5rIDogQ2h1bmsudFxuICAgIDsgbXV0YWJsZSBjaHVua19wb3MgOiBpbnRcbiAgICA7IG11dGFibGUgZmlsbGVkX2NodW5rcyA6IENodW5rLnQgbGlzdCAoKiBGaWxsZWQgY2h1bmtzIGluIHJldmVyc2Ugb3JkZXIgKilcbiAgICA7IG11dGFibGUgb2Zmc2V0IDogaW50XG4gICAgKCogT2Zmc2V0IG9mIHRoZSBsYXN0IHNhdmVkIHBvc2l0aW9uIG9yIG5ld2xpbmUgcGx1c1xuICAgICAgIG9uZSwgb3IgW2luaXRpYWxfcG9zXSAqKVxuICAgIDsgbXV0YWJsZSBpbnRfYnVmIDogaW50XG4gICAgKCogdGhlIFtudW1fYml0c10gbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBbaW50X2J1Zl1cbiAgICAgICBhcmUgdGhlIGJpdHMgbm90IHlldCBwdXNoZWQgdG8gW2NodW5rXS4gKilcbiAgICA7IG11dGFibGUgbnVtX2JpdHMgOiBpbnQgKCogbnVtYmVyIG9mIGJpdHMgc3RvcmVkIGluIFtpbnRfYnVmXSAqKVxuICAgIDsgbXV0YWJsZSBpbml0aWFsX3BvcyA6IHBvc1xuICAgIH1cblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAodC5jaHVua19wb3MgPj0gMCAmJiB0LmNodW5rX3BvcyA8PSBDaHVuay5sZW5ndGgpO1xuICAgIGFzc2VydCAodC5vZmZzZXQgPj0gdC5pbml0aWFsX3Bvcy5vZmZzZXQpO1xuICAgIGFzc2VydCAodC5udW1fYml0cyA8PSAxNSlcbiAgOztcblxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gZmFsc2VcbiAgbGV0IGludmFyaWFudCB0ID0gaWYgY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHRcblxuICBsZXQgY3JlYXRlID8oaW5pdGlhbF9wb3MgPSBiZWdpbm5pbmdfb2ZfZmlsZSkgKCkgPVxuICAgIHsgY2h1bmsgPSBDaHVuay5hbGxvYyAoKVxuICAgIDsgY2h1bmtfcG9zID0gMFxuICAgIDsgZmlsbGVkX2NodW5rcyA9IFtdXG4gICAgOyBvZmZzZXQgPSBpbml0aWFsX3Bvcy5vZmZzZXRcbiAgICA7IGludF9idWYgPSAwXG4gICAgOyBudW1fYml0cyA9IDBcbiAgICA7IGluaXRpYWxfcG9zXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldCB0IChwb3MgOiBwb3MpID1cbiAgICAoKiBXZSBuZWVkIGEgbmV3IGNodW5rIGFzIFtjb250ZW50c10ga2VlcHMgdGhlIGN1cnJlbnQgY2h1bmsgaW4gdGhlIGNsb3N1cmUgb2YgdGhlXG4gICAgICAgbGF6eSB2YWx1ZS4gKilcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDA7XG4gICAgdC5maWxsZWRfY2h1bmtzIDwtIFtdO1xuICAgIHQub2Zmc2V0IDwtIHBvcy5vZmZzZXQ7XG4gICAgdC5pbnRfYnVmIDwtIDA7XG4gICAgdC5udW1fYml0cyA8LSAwO1xuICAgIHQuaW5pdGlhbF9wb3MgPC0gcG9zXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgbmV2ZXJdIGFsbG9jX25ld19jaHVuayB0ID1cbiAgICB0LmZpbGxlZF9jaHVua3MgPC0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3M7XG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwXG4gIDs7XG5cbiAgbGV0IGFkZF91aW50MTYgdCBuID1cbiAgICBpZiB0LmNodW5rX3BvcyA9IENodW5rLmxlbmd0aCB0aGVuIGFsbG9jX25ld19jaHVuayB0O1xuICAgIENodW5rLnNldDE2IHQuY2h1bmsgfnBvczp0LmNodW5rX3BvcyBuXG4gIDs7XG5cbiAgbGV0IGFkZF9iaXRzIHQgbiB+bnVtX2JpdHMgPVxuICAgIGxldCBpbnRfYnVmID0gKHQuaW50X2J1ZiBsc2wgbnVtX2JpdHMpIGxvciBuIGluXG4gICAgbGV0IG51bV9iaXRzID0gdC5udW1fYml0cyArIG51bV9iaXRzIGluXG4gICAgdC5pbnRfYnVmIDwtIGludF9idWY7XG4gICAgaWYgbnVtX2JpdHMgPCAxNlxuICAgIHRoZW4gdC5udW1fYml0cyA8LSBudW1fYml0c1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG51bV9iaXRzID0gbnVtX2JpdHMgLSAxNiBpblxuICAgICAgdC5udW1fYml0cyA8LSBudW1fYml0cztcbiAgICAgIGFkZF91aW50MTYgdCAoaW50X2J1ZiBsc3IgbnVtX2JpdHMpO1xuICAgICAgdC5jaHVua19wb3MgPC0gdC5jaHVua19wb3MgKyAyXG4gICAgICAoKiBubyBuZWVkIHRvIGNsZWFyIHRoZSBiaXRzIG9mIGludF9idWYgd2UganVzdCB3cm90ZSwgYXMgZnVydGhlciBzZXQxNiB3aWxsIGlnbm9yZVxuICAgICAgICAgdGhlc2UgZXh0cmEgYml0cy4gKikpXG4gIDs7XG5cbiAgbGV0IGNvbnRlbnRzIHQgPVxuICAgICgqIEZsdXNoIHRoZSBjdXJyZW50IFt0LmludF9idWZdICopXG4gICAgYWRkX3VpbnQxNiB0IHQuaW50X2J1ZjtcbiAgICBsZXQgcmV2X2NodW5rcyA9IHQuY2h1bmsgOjogdC5maWxsZWRfY2h1bmtzIGluXG4gICAgbGV0IGNodW5rX3BvcyA9IHQuY2h1bmtfcG9zIGluXG4gICAgbGV0IGV4dHJhX2JpdHMgPSB0Lm51bV9iaXRzIGluXG4gICAgbGV0IGluaXRpYWxfcG9zID0gdC5pbml0aWFsX3BvcyBpblxuICAgIGxhenlcbiAgICAgIHsgY2h1bmtzID0gTGlzdC5yZXYgcmV2X2NodW5rc1xuICAgICAgOyBudW1fYnl0ZXMgPSAoKExpc3QubGVuZ3RoIHJldl9jaHVua3MgLSAxKSAqIENodW5rLmxlbmd0aCkgKyBjaHVua19wb3NcbiAgICAgIDsgZXh0cmFfYml0c1xuICAgICAgOyBpbml0aWFsX3Bvc1xuICAgICAgfVxuICA7O1xuXG4gIGxldCBsb25nX3NoaWZ0IHQgbiA9XG4gICAgbGV0IG4gPSByZWYgKG4gLSA1KSBpblxuICAgIHdoaWxlICFuID4gMCBkb1xuICAgICAgYWRkX2JpdHMgdCAoMGIxMTAwXzAwMDAgbG9yICghbiBsYW5kIDBiMDAwMV8xMTExKSkgfm51bV9iaXRzOjg7XG4gICAgICBuIDo9ICFuIGxzciA1XG4gICAgZG9uZVxuICA7O1xuXG4gICgqIHByZWNvbmRpdGlvbjogbiA+PSA1ICopXG4gIGxldFtAaW5saW5lIG5ldmVyXSBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgbG9uZ19zaGlmdCB0IG47XG4gICAgYWRkX2JpdHMgdCBpbnN0ciB+bnVtX2JpdHM6aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBzaGlmdDQgPSAwYjEwXzEwXzEwXzEwXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGludmFyaWFudCB0O1xuICAgIGxldCBuID0gb2Zmc2V0IC0gdC5vZmZzZXQgaW5cbiAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgMCB8IDEgfCAyIHwgMyB8IDQgLT5cbiAgICAgIGxldCBudW1fYml0cyA9IChuIGxzbCAxKSArIGluc3RyX2JpdHMgaW5cbiAgICAgIGFkZF9iaXRzIHQgKChzaGlmdDQgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0ciBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkpIH5udW1fYml0c1xuICAgIHwgNVxuICAgIHwgNlxuICAgIHwgN1xuICAgIHwgOFxuICAgIHwgOVxuICAgIHwgMTBcbiAgICB8IDExXG4gICAgfCAxMlxuICAgIHwgMTNcbiAgICB8IDE0XG4gICAgfCAxNVxuICAgIHwgMTZcbiAgICB8IDE3XG4gICAgfCAxOFxuICAgIHwgMTlcbiAgICB8IDIwXG4gICAgfCAyMVxuICAgIHwgMjJcbiAgICB8IDIzXG4gICAgfCAyNFxuICAgIHwgMjVcbiAgICB8IDI2XG4gICAgfCAyN1xuICAgIHwgMjhcbiAgICB8IDI5XG4gICAgfCAzMFxuICAgIHwgMzFcbiAgICB8IDMyXG4gICAgfCAzM1xuICAgIHwgMzRcbiAgICB8IDM1XG4gICAgfCAzNiAtPlxuICAgICAgYWRkX2JpdHNcbiAgICAgICAgdFxuICAgICAgICAoKCgwYjExMDBfMDAwMCBsb3IgKG4gLSA1KSkgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0cilcbiAgICAgICAgfm51bV9iaXRzOig4ICsgaW5zdHJfYml0cylcbiAgICB8IF8gLT5cbiAgICAgIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5hZGRfZ2VuXCI7XG4gICAgICBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBhZGQgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMCB+aW5zdHJfYml0czoxXG4gIGxldCBhZGRfdHdpY2UgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMSB+aW5zdHJfYml0czo0XG4gIGxldCBhZGRfbmV3bGluZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTEwIH5pbnN0cl9iaXRzOjRcbmVuZFxuXG50eXBlIHBvc2l0aW9ucyA9IHRcblxubW9kdWxlIEl0ZXJhdG9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiBwb3NpdGlvbnMgLT4gdFxuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgKCogW2FkdmFuY2UgdCB+c2tpcF0gaWdub3JlcyBbc2tpcF0gc2F2ZWQgcG9zaXRpb25zIGFuZCByZXR1cm5zIHRoZSBuZXh0IHNhdmVkIHBvc2l0aW9uLlxuICAgICBSYWlzZXMgW05vX21vcmVdIHdoZW4gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgcG9zaXRpb24gc2V0LiAqKVxuICB2YWwgYWR2YW5jZV9leG4gOiB0IC0+IHNraXA6aW50IC0+IHBvc1xuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNodW5rIDogQ2h1bmsudFxuICAgIDsgbXV0YWJsZSBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgICA7ICgqIFtudW1fYnl0ZXMgKiA4ICsgZXh0cmFfYml0c10gaXMgdGhlIG51bWJlciBvZiBiaXRzIGF2YWlsYWJsZSBmcm9tIFtpbnN0cl9wb3NdIGluXG4gICAgICAgICBbY2h1bmsgOjogY2h1bmtzXS4gKilcbiAgICAgIG11dGFibGUgbnVtX2J5dGVzIDogaW50XG4gICAgOyBleHRyYV9iaXRzIDogaW50XG4gICAgOyBtdXRhYmxlIGluc3RyX3BvcyA6IGludCAoKiBwb3NpdGlvbiBpbiBbY2h1bmtdICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBsaW5lIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbCA6IGludFxuICAgIDsgbXV0YWJsZSBpbnRfYnVmIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIE51bWJlciBvZiBiaXRzIG5vdCB5ZXQgY29uc3VtZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIHBlbmRpbmcgOiBwb3Mgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjcmVhdGUgKChsYXp5IHApIDogcG9zaXRpb25zKSA9XG4gICAgbWF0Y2ggcC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHsgY2h1bmtcbiAgICAgIDsgY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9IHAubnVtX2J5dGVzXG4gICAgICA7IGV4dHJhX2JpdHMgPSBwLmV4dHJhX2JpdHNcbiAgICAgIDsgaW5zdHJfcG9zID0gMFxuICAgICAgOyBvZmZzZXQgPSBwLmluaXRpYWxfcG9zLm9mZnNldFxuICAgICAgOyBsaW5lID0gcC5pbml0aWFsX3Bvcy5saW5lXG4gICAgICA7IGJvbCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0IC0gcC5pbml0aWFsX3Bvcy5jb2xcbiAgICAgIDsgaW50X2J1ZiA9IDBcbiAgICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgICA7IHBlbmRpbmcgPSBOb25lXG4gICAgICB9XG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICBsZXQgbm9fbW9yZSAoKSA9IHJhaXNlX25vdHJhY2UgTm9fbW9yZVxuXG4gIGxldFtAaW5saW5lIG5ldmVyXSBmZXRjaF9jaHVuayB0ID1cbiAgICBtYXRjaCB0LmNodW5rcyB3aXRoXG4gICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IGNodW5rIDo6IGNodW5rcyAtPlxuICAgICAgdC5pbnN0cl9wb3MgPC0gMDtcbiAgICAgIHQubnVtX2J5dGVzIDwtIHQubnVtX2J5dGVzIC0gQ2h1bmsubGVuZ3RoO1xuICAgICAgdC5jaHVuayA8LSBjaHVuaztcbiAgICAgIHQuY2h1bmtzIDwtIGNodW5rc1xuICA7O1xuXG4gIGxldCBmZXRjaCB0ID1cbiAgICBpZiB0Lmluc3RyX3BvcyA+IHQubnVtX2J5dGVzIHRoZW4gbm9fbW9yZSAoKTtcbiAgICBpZiB0Lmluc3RyX3BvcyA9IENodW5rLmxlbmd0aCB0aGVuIGZldGNoX2NodW5rIHQ7XG4gICAgbGV0IHYgPSBDaHVuay5nZXQxNiB0LmNodW5rIH5wb3M6dC5pbnN0cl9wb3MgaW5cbiAgICBsZXQgYWRkZWRfYml0cyA9IGlmIHQuaW5zdHJfcG9zID0gdC5udW1fYnl0ZXMgdGhlbiB0LmV4dHJhX2JpdHMgZWxzZSAxNiBpblxuICAgIHQuaW50X2J1ZiA8LSAodC5pbnRfYnVmIGxzbCBhZGRlZF9iaXRzKSBsb3IgKHYgbGFuZCAoKDEgbHNsIGFkZGVkX2JpdHMpIC0gMSkpO1xuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyArIGFkZGVkX2JpdHM7XG4gICAgdC5pbnN0cl9wb3MgPC0gdC5pbnN0cl9wb3MgKyAyXG4gIDs7XG5cbiAgbGV0IG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0cyA9XG4gICAgaWYgdC5udW1fYml0cyA8IG51bV9iaXRzXG4gICAgdGhlbiAoXG4gICAgICBmZXRjaCB0O1xuICAgICAgaWYgdC5udW1fYml0cyA8IG51bV9iaXRzIHRoZW4gbm9fbW9yZSAoKSk7XG4gICAgbGV0IG4gPSAodC5pbnRfYnVmIGxzciAodC5udW1fYml0cyAtIG51bV9iaXRzKSkgbGFuZCAoKDEgbHNsIG51bV9iaXRzKSAtIDEpIGluXG4gICAgdC5udW1fYml0cyA8LSB0Lm51bV9iaXRzIC0gbnVtX2JpdHM7XG4gICAgblxuICA7O1xuXG4gICgqIFtvZmZzZXRfc2hpZnRdIGFuZCBbb2Zmc2V0X3NoaWZ0X251bV9iaXRzXSBlbmNvZGUgdGhlIG9mZnNldCBudW1iZXJcbiAgICAgc3BlY2lmaWVkIGJ5IHRoZSBpbW1lZGlhdGVseSBwcmVjZWRpbmcgWzExMF0gaW5zdHJ1Y3Rpb25zLiAqKVxuICBsZXQgcmVjIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0IH5vZmZzZXRfc2hpZnRfbnVtX2JpdHMgPVxuICAgIG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICB8IDAgLT5cbiAgICAgICgqIGJpdCBzZXEgMCAtPiBuZXcgaXRlbSAqKVxuICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgaWYgc2tpcCA9IDBcbiAgICAgIHRoZW4geyBsaW5lID0gdC5saW5lOyBjb2wgPSBvZmZzZXQgLSB0LmJvbDsgb2Zmc2V0IH1cbiAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMSkgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICB8IDAgLT5cbiAgICAgICAgICgqIGJpdCBzZXEgMTAgLT4gc2hpZnQgKilcbiAgICAgICAgIHQub2Zmc2V0IDwtIHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0ICsgMTtcbiAgICAgICAgIGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgKCogYml0IHNlcSAxMTAgLT4gbG9uZyBzaGlmdCAqKVxuICAgICAgICAgICAgbGV0IG4gPSBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6NSBpblxuICAgICAgICAgICAgbGV0IG9mZnNldF9zaGlmdCA9IGlmIG9mZnNldF9zaGlmdF9udW1fYml0cyA9IDAgdGhlbiA1IGVsc2Ugb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICBhZHZhbmNlXG4gICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICAgfnNraXBcbiAgICAgICAgICAgICAgfm9mZnNldF9zaGlmdDoob2Zmc2V0X3NoaWZ0ICsgKG4gbHNsIG9mZnNldF9zaGlmdF9udW1fYml0cykpXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6KG9mZnNldF9zaGlmdF9udW1fYml0cyArIDUpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAobWF0Y2ggbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjEgd2l0aFxuICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgKCogYml0IHNlcSAxMTEwIC0+IG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgIHQub2Zmc2V0IDwtIHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0ICsgMTtcbiAgICAgICAgICAgICAgIHQuYm9sIDwtIHQub2Zmc2V0O1xuICAgICAgICAgICAgICAgdC5saW5lIDwtIHQubGluZSArIDE7XG4gICAgICAgICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgKCogYml0IHNlcSAxMTExIC0+IDIgbmV3IGl0ZW1zICopXG4gICAgICAgICAgICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgKyBvZmZzZXRfc2hpZnQgaW5cbiAgICAgICAgICAgICAgIHQub2Zmc2V0IDwtIG9mZnNldCArIDE7XG4gICAgICAgICAgICAgICBpZiBza2lwIDw9IDFcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBsZXQgcG9zID0geyBsaW5lID0gdC5saW5lOyBjb2wgPSBvZmZzZXQgLSB0LmJvbDsgb2Zmc2V0IH0gaW5cbiAgICAgICAgICAgICAgICAgaWYgc2tpcCA9IDAgdGhlbiB0LnBlbmRpbmcgPC0gU29tZSBwb3M7XG4gICAgICAgICAgICAgICAgIHBvcylcbiAgICAgICAgICAgICAgIGVsc2UgYWR2YW5jZSB0IH5za2lwOihza2lwIC0gMikgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MCkpKVxuICA7O1xuXG4gIGxldCBhZHZhbmNlX2V4biB0IH5za2lwID1cbiAgICBtYXRjaCB0LnBlbmRpbmcgd2l0aFxuICAgIHwgU29tZSBwb3MgLT5cbiAgICAgIHQucGVuZGluZyA8LSBOb25lO1xuICAgICAgaWYgc2tpcCA9IDBcbiAgICAgIHRoZW4gcG9zXG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IE5vbmUgLT4gYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgOztcbmVuZFxuXG5sZXQgZmluZCB0IGEgYiA9XG4gIGlmIGEgPCAwIHx8IGIgPD0gYSB0aGVuIGludmFsaWRfYXJnIFwiUGFyc2V4cC5Qb3NpdGlvbnMuZmluZFwiO1xuICBsZXQgaXRlciA9IEl0ZXJhdG9yLmNyZWF0ZSB0IGluXG4gIHRyeVxuICAgIGxldCBzdGFydF9wb3MgPSBJdGVyYXRvci5hZHZhbmNlX2V4biBpdGVyIH5za2lwOmEgaW5cbiAgICBsZXQgbGFzdF9wb3MgPSBJdGVyYXRvci5hZHZhbmNlX2V4biBpdGVyIH5za2lwOihiIC0gYSAtIDEpIGluXG4gICAgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zXG4gIHdpdGhcbiAgfCBJdGVyYXRvci5Ob19tb3JlIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5Qb3NpdGlvbi5maW5kXCJcbjs7XG5cbmxldCByZWMgc3ViX3NleHBfY291bnQgKHNleHAgOiBTZXhwLnQpID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBfIC0+IDFcbiAgfCBMaXN0IGwgLT4gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdDoxIH5mOihmdW4gYWNjIHggLT4gYWNjICsgc3ViX3NleHBfY291bnQgeClcbjs7XG5cbm1vZHVsZSBTZXhwX3NlYXJjaCA9IHN0cnVjdFxuICBleGNlcHRpb24gRm91bmQgb2YgaW50XG5cbiAgbGV0IHJlYyBsb29wIH5zdWIgaW5kZXggKHNleHAgOiBTZXhwLnQpID1cbiAgICBpZiBzZXhwID09IHN1YlxuICAgIHRoZW4gcmFpc2Vfbm90cmFjZSAoRm91bmQgaW5kZXgpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgQXRvbSBfIC0+IGluZGV4ICsgMlxuICAgICAgfCBMaXN0IGwgLT5cbiAgICAgICAgbGV0IGluZGV4ID0gbG9vcF9saXN0IH5zdWIgKGluZGV4ICsgMSkgbCBpblxuICAgICAgICBpbmRleCArIDEpXG5cbiAgYW5kIGxvb3BfbGlzdCB+c3ViIGluZGV4IChzZXhwcyA6IFNleHAudCBsaXN0KSA9XG4gICAgTGlzdC5mb2xkX2xlZnQgc2V4cHMgfmluaXQ6aW5kZXggfmY6KGxvb3AgfnN1YilcbiAgOztcblxuICBsZXQgZmluYWxpemUgdCB+c3ViIGEgPVxuICAgIGxldCBiID0gYSArIChzdWJfc2V4cF9jb3VudCBzdWIgKiAyKSAtIDEgaW5cbiAgICBTb21lIChmaW5kIHQgYSBiKVxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX3BoeXMgdCBzZXhwIH5zdWIgPVxuICAgIG1hdGNoIGxvb3AgfnN1YiAwIHNleHAgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5cbiAgbGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIHQgc2V4cHMgfnN1YiA9XG4gICAgbWF0Y2ggbG9vcF9saXN0IH5zdWIgMCBzZXhwcyB3aXRoXG4gICAgfCAoXyA6IGludCkgLT4gTm9uZVxuICAgIHwgZXhjZXB0aW9uIEZvdW5kIG4gLT4gZmluYWxpemUgdCB+c3ViIG5cbiAgOztcbmVuZFxuXG5sZXQgZmluZF9zdWJfc2V4cF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9waHlzXG5sZXQgZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXMgPSBTZXhwX3NlYXJjaC5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICBsZXQgcmVjIGxvb3AgYWNjID1cbiAgICBtYXRjaCBJdGVyYXRvci5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEl0ZXJhdG9yLk5vX21vcmUgLT4gTGlzdC5yZXYgYWNjXG4gICAgfCBwb3MgLT4gbG9vcCAocG9zIDo6IGFjYylcbiAgaW5cbiAgbG9vcCBbXVxuOztcblxubGV0IHRvX2FycmF5IHQgPSB0b19saXN0IHQgfD4gQXJyYXkub2ZfbGlzdFxubGV0IGNvbXBhcmUgdDEgdDIgPSBTdGRsaWIuY29tcGFyZSAodG9fYXJyYXkgdDEpICh0b19hcnJheSB0MilcbmxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9wb3MgKHRvX2FycmF5IHQpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBBdG9tIG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBhdG9tIDogc3RyaW5nXG4gICAgICA7IHVuZXNjYXBlZCA6IHN0cmluZyBvcHRpb25cbiAgICAgIH1cbiAgfCBMaXN0IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBlbGVtZW50cyA6IHRfb3JfY29tbWVudCBsaXN0XG4gICAgICB9XG5cbmFuZCB0X29yX2NvbW1lbnQgPVxuICB8IFNleHAgb2YgdFxuICB8IENvbW1lbnQgb2YgY29tbWVudFxuXG5hbmQgY29tbWVudCA9XG4gIHwgUGxhaW5fY29tbWVudCBvZlxuICAgICAgeyBsb2MgOiBQb3NpdGlvbnMucmFuZ2VcbiAgICAgIDsgY29tbWVudCA6IHN0cmluZ1xuICAgICAgfVxuICB8IFNleHBfY29tbWVudCBvZlxuICAgICAgeyBoYXNoX3NlbWlfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgICAgOyBjb21tZW50cyA6IGNvbW1lbnQgbGlzdFxuICAgICAgOyBzZXhwIDogdFxuICAgICAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCByZWMgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBBdG9tIHsgbG9jID0gbG9jX18wMDJfOyBhdG9tID0gYXRvbV9fMDA0XzsgdW5lc2NhcGVkID0gdW5lc2NhcGVkX18wMDZfIH0gLT5cbiAgICAgIGxldCBibmRzX18wMDFfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdW5lc2NhcGVkX18wMDZfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ1bmVzY2FwZWRcIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgYXRvbV9fMDA0XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiYXRvbVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwM18gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwMl8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxvY1wiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkF0b21cIiA6OiBibmRzX18wMDFfKVxuICAgIHwgTGlzdCB7IGxvYyA9IGxvY19fMDA5XzsgZWxlbWVudHMgPSBlbGVtZW50c19fMDExXyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDA4XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX3Rfb3JfY29tbWVudCBlbGVtZW50c19fMDExXyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWxlbWVudHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgICBsZXQgYXJnX18wMTBfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMDlfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA4X1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJMaXN0XCIgOjogYm5kc19fMDA4XylcbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbmFuZCBzZXhwX29mX3Rfb3JfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgU2V4cCBhcmcwX18wMTNfIC0+XG4gICAgICBsZXQgcmVzMF9fMDE0XyA9IHNleHBfb2ZfdCBhcmcwX18wMTNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwXCI7IHJlczBfXzAxNF8gXVxuICAgIHwgQ29tbWVudCBhcmcwX18wMTVfIC0+XG4gICAgICBsZXQgcmVzMF9fMDE2XyA9IHNleHBfb2ZfY29tbWVudCBhcmcwX18wMTVfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJDb21tZW50XCI7IHJlczBfXzAxNl8gXVxuICAgICAgOiB0X29yX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl9jb21tZW50ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IHsgbG9jID0gbG9jX18wMThfOyBjb21tZW50ID0gY29tbWVudF9fMDIwXyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDE3XyA9IChbXSA6IF8gU3RkbGliLkxpc3QudCkgaW5cbiAgICAgIGxldCBibmRzX18wMTdfID1cbiAgICAgICAgbGV0IGFyZ19fMDIxXyA9IHNleHBfb2Zfc3RyaW5nIGNvbW1lbnRfXzAyMF8gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImNvbW1lbnRcIjsgYXJnX18wMjFfIF0gOjogYm5kc19fMDE3X1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMTlfID0gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jX18wMThfIGluXG4gICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMTlfIF0gOjogYm5kc19fMDE3X1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJQbGFpbl9jb21tZW50XCIgOjogYm5kc19fMDE3XylcbiAgICB8IFNleHBfY29tbWVudFxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgPSBoYXNoX3NlbWlfcG9zX18wMjNfXG4gICAgICAgIDsgY29tbWVudHMgPSBjb21tZW50c19fMDI1X1xuICAgICAgICA7IHNleHAgPSBzZXhwX18wMjdfXG4gICAgICAgIH0gLT5cbiAgICAgIGxldCBibmRzX18wMjJfID0gKFtdIDogXyBTdGRsaWIuTGlzdC50KSBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjhfID0gc2V4cF9vZl90IHNleHBfXzAyN18gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInNleHBcIjsgYXJnX18wMjhfIF0gOjogYm5kc19fMDIyX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjZfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfY29tbWVudCBjb21tZW50c19fMDI1XyBpblxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29tbWVudHNcIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIyX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjRfID0gUG9zaXRpb25zLnNleHBfb2ZfcG9zIGhhc2hfc2VtaV9wb3NfXzAyM18gaW5cbiAgICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImhhc2hfc2VtaV9wb3NcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIyX1xuICAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwX2NvbW1lbnRcIiA6OiBibmRzX18wMjJfKVxuICAgICAgOiBjb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlID0gU3RkbGliLmNvbXBhcmVcbmxldCBjb21wYXJlX3Rfb3JfY29tbWVudCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgY29tcGFyZV9jb21tZW50ID0gU3RkbGliLmNvbXBhcmVcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoU2V4cC50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChTZXhwLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChTZXhwLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20geyBhdG9tOyBfIH0gLT4gayAoU2V4cC5BdG9tIGF0b20pXG4gICAgICB8IExpc3QgeyBlbGVtZW50czsgXyB9IC0+IGZvcmdldF90b2NzIGVsZW1lbnRzIChmdW4geHMgLT4gayAoU2V4cC5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YWNrX2ludGZcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBUX29yX2NvbW1lbnQgb2YgQ3N0LnRfb3JfY29tbWVudCAqIHRcbiAgICB8IE9wZW4gb2YgUG9zaXRpb25zLnBvcyAqIHRcbiAgICB8IEluX3NleHBfY29tbWVudCBvZlxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICAgIDsgcmV2X2NvbW1lbnRzIDogQ3N0LmNvbW1lbnQgbGlzdFxuICAgICAgICA7IHN0YWNrIDogdFxuICAgICAgICB9XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgZ2V0X21hbnkgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbG9vcCAodCA6OiBhY2MpIHN0YWNrXG4gICAgICB8IE9wZW4gXyB8IEluX3NleHBfY29tbWVudCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnlcIlxuICAgIGluXG4gICAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbiAgOztcbmVuZFxuXG5tb2R1bGUgSnVzdF9wb3NpdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdFxuXG4gIGxldCBlbXB0eSA9ICgpXG5lbmRcblxudHlwZSB0ID1cbiAgfCBFbXB0eVxuICB8IE9wZW4gb2YgdFxuICB8IFNleHAgb2YgU2V4cC50ICogdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgZ2V0X3NpbmdsZSA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAoc2V4cCwgRW1wdHkpIC0+IHNleHBcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGVcIlxuOztcblxubGV0IGdldF9tYW55ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IE9wZW4gXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfbWFueVwiXG4gICAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbG9vcCAoc2V4cCA6OiBhY2MpIHN0YWNrXG4gIGluXG4gIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICB8IFNleHBcbmVuZFxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQgKCoqIFN0YXJ0aW5nIHBvc2l0aW9ucyBvZiB0aGUgY3VycmVudCB0b2tlbiAqKilcbiAgICA7IG11dGFibGUgdG9rZW5fc3RhcnRfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgUG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIHVuaXQpIHRcbiAgICB8IFNleHAgOiAodW5pdCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IENzdCA6IChGb3JfY3N0LnQsIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpIHRcbmVuZFxuXG5tb2R1bGUgcmVjIFN0YXRlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgeyBtdXRhYmxlIGF1dG9tYXRvbl9zdGF0ZSA6IGludFxuICAgIDsga2luZCA6ICgndSwgJ3MpIEtpbmQudFxuICAgIDsgbXV0YWJsZSBkZXB0aCA6IGludCAoKiogTnVtYmVyIG9mIG9wZW5lZCAjfCB3aGVuIHBhcnNpbmcgYSBibG9jayBjb21tZW50ICopXG4gICAgOyBtdXRhYmxlIGJsb2NrX2NvbW1lbnRfZGVwdGggOiBpbnRcbiAgICAoKiogU3RhY2sgb2YgaWdub3JpbmcgZGVwdGhzOyB0aGUgY3VycmVudCBkZXB0aCBpcyBwdXNoZWRcbiAgICAgICAgZWFjaCB0aW1lIGEgIzsgY29tbWVudCBpcyBlbnRlcmVkLiAqKVxuICAgIDsgbXV0YWJsZSBpZ25vcmluZ19zdGFjayA6IGludCBsaXN0XG4gICAgKCoqIFdoZW4gcGFyc2luZyBhbiBlc2NhcGUgc2VxdWVuY2Ugb2YgdGhlIGZvcm0gXCJcXFxcTk5OXCIgb3IgXCJcXFxcWFhcIiwgdGhpcyBhY2N1bXVsYXRlc1xuICAgICAgICB0aGUgY29tcHV0ZWQgbnVtYmVyICopXG4gICAgOyBtdXRhYmxlIGVzY2FwZWRfdmFsdWUgOiBpbnQgKCoqIEJ1ZmZlciBmb3IgYWNjdW11bGF0aW5nIGF0b21zICopXG4gICAgOyBhdG9tX2J1ZmZlciA6IEJ1ZmZlci50XG4gICAgOyB1c2VyX3N0YXRlIDogJ3VcbiAgICA7IG1vZGUgOiAoJ3UsICdzKSBNb2RlLnRcbiAgICA7IG11dGFibGUgZnVsbF9zZXhwcyA6IGludFxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnQgKCoqIGdsb2JhbCBvZmZzZXQgKiopXG4gICAgOyBtdXRhYmxlIGxpbmVfbnVtYmVyIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbF9vZmZzZXQgOiBpbnQgKCoqIG9mZnNldCBvZiBiZWdpbm5pbmcgb2YgbGluZSAqKilcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgTW9kZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgU2luZ2xlXG4gICAgfCBNYW55XG4gICAgfCBFYWdlciBvZlxuICAgICAgICB7IGdvdF9zZXhwIDogKCd1LCAncykgU3RhdGUudCAtPiAncyAtPiAnc1xuICAgICAgICA7IG11dGFibGUgbm9fc2V4cF9pc19lcnJvciA6IGJvb2xcbiAgICAgICAgfVxuZW5kID1cbiAgTW9kZVxuXG5tb2R1bGUgdHlwZSBBdXRvbWF0b25fc3RhdGUgPSBzaWdcbiAgbW9kdWxlIENvbnRleHQgPSBDb250ZXh0XG4gIG1vZHVsZSBGb3JfY3N0ID0gRm9yX2NzdFxuICBtb2R1bGUgS2luZCA9IEtpbmRcbiAgbW9kdWxlIE1vZGUgPSBNb2RlXG4gIG1vZHVsZSBTdGF0ZSA9IFN0YXRlXG5cbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/aW5pdGlhbF9wb3M6UG9zaXRpb25zLnBvc1xuICAgIC0+ICgndSwgJ3MpIE1vZGUudFxuICAgIC0+ICgndSwgJ3MpIEtpbmQudFxuICAgIC0+ICgndSwgJ3MpIHRcblxuICB2YWwgcmVzZXQgOiA/cG9zOlBvc2l0aW9ucy5wb3MgLT4gXyB0IC0+IHVuaXRcbiAgdmFsIHBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBfKSB0IC0+IFBvc2l0aW9ucy50XG4gIHZhbCBtb2RlIDogKCd1LCAncykgdCAtPiAoJ3UsICdzKSBNb2RlLnRcblxuICAoKiogTnVtYmVyIG9mIGNoYXJhY3RlcnMgZmVkIHRvIHRoZSBwYXJzZXIgKilcbiAgdmFsIG9mZnNldCA6IF8gdCAtPiBpbnRcblxuICAoKiogUG9zaXRpb24gaW4gdGhlIHRleHQgKilcbiAgdmFsIGxpbmUgOiBfIHQgLT4gaW50XG5cbiAgdmFsIGNvbHVtbiA6IF8gdCAtPiBpbnRcblxuICAoKiogV2hldGhlciB0aGVyZSBhcmUgc29tZSB1bmNsb3NlZCBwYXJlbnRoZXNlcyAqKVxuICB2YWwgaGFzX3VuY2xvc2VkX3BhcmVuIDogKCd1LCAncykgdCAtPiBib29sXG5cbiAgdmFsIHNldF9lcnJvcl9zdGF0ZSA6IF8gdCAtPiB1bml0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBPbmx5IGZvciBjb252ZXJ0aW5nIGVycm9ycyB0byB0aGUgb2xkIHBhcnNlciBlcnJvcnMgKilcbiAgdmFsIGF0b21fYnVmZmVyIDogXyB0IC0+IEJ1ZmZlci50XG5cbiAgKCpfIEZvciBjb3ZlcmF0ZSB0ZXN0cyAqKVxuICB2YWwgYXV0b21hdG9uX3N0YXRlIDogKCd1LCAncykgdCAtPiBpbnRcbiAgdmFsIGNvbnRleHQgOiBfIHQgLT4gQ29udGV4dC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVfaW50ZlxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbm9wZW4gU3RhdGVcblxubGV0IGluaXRpYWxfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IFBvc2l0aW9ucy5wb3MgLT4gdSA9XG4gIGZ1biBraW5kIGluaXRpYWxfcG9zIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IENzdCAtPlxuICAgICgqIFt0b2tlbl9zdGFydF9wb3NdIGlzIHNldCB0byBhIGR1bW15IGxvY2F0aW9uIGhlcmUuIEl0IGlzIHByb3Blcmx5IHNldCB3aGVuIHdlXG4gICAgICAgc3RhcnQgdG8gY2FwdHVyZSBhIHRva2VuIGZyb20gdGhlIGlucHV0ICopXG4gICAgeyB0b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyODsgdG9rZW5fc3RhcnRfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlIH1cbjs7XG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fc3RhdGUucHJpbnRfY29uc3RhbnRzICgpICopXG5sZXQgaW5pdGlhbF9zdGF0ZSA9IDBcbmxldCBlcnJvcl9zdGF0ZSA9IDFcblxuKCokKilcblxubGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSBtb2RlIGtpbmQgPVxuICB7IGtpbmRcbiAgOyBkZXB0aCA9IDBcbiAgOyBhdXRvbWF0b25fc3RhdGUgPSBpbml0aWFsX3N0YXRlXG4gIDsgYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgOyBpZ25vcmluZ19zdGFjayA9IFtdXG4gIDsgZXNjYXBlZF92YWx1ZSA9IDBcbiAgOyBhdG9tX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4XG4gIDsgdXNlcl9zdGF0ZSA9IGluaXRpYWxfdXNlcl9zdGF0ZSBraW5kIGluaXRpYWxfcG9zXG4gIDsgbW9kZVxuICA7IGZ1bGxfc2V4cHMgPSAwXG4gIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gIDsgbGluZV9udW1iZXIgPSBpbml0aWFsX3Bvcy5saW5lXG4gIDsgYm9sX29mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldCAtIGluaXRpYWxfcG9zLmNvbFxuICB9XG47O1xuXG5sZXQgbW9kZSB0ID0gdC5tb2RlXG5sZXQgcG9zaXRpb25zIHQgPSBQb3NpdGlvbnMuQnVpbGRlci5jb250ZW50cyB0LnVzZXJfc3RhdGVcbmxldCBhdG9tX2J1ZmZlciB0ID0gdC5hdG9tX2J1ZmZlclxubGV0IG9mZnNldCBzdGF0ZSA9IHN0YXRlLm9mZnNldFxubGV0IGxpbmUgc3RhdGUgPSBzdGF0ZS5saW5lX251bWJlclxubGV0IGNvbHVtbiBzdGF0ZSA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbmxldCBwb3NpdGlvbiB0ID0geyBQb3NpdGlvbnMuY29sID0gY29sdW1uIHQ7IGxpbmUgPSBsaW5lIHQ7IG9mZnNldCA9IG9mZnNldCB0IH1cblxubGV0IHJlc2V0X3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIHQgLT4gdW5pdCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgQ3N0IC0+IEJ1ZmZlci5jbGVhciB0LnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyXG47O1xuXG5sZXQgcmVzZXQgPyhwb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIHQgPVxuICB0LmRlcHRoIDwtIDA7XG4gIHQuYXV0b21hdG9uX3N0YXRlIDwtIGluaXRpYWxfc3RhdGU7XG4gIHQuYmxvY2tfY29tbWVudF9kZXB0aCA8LSAwO1xuICB0Lmlnbm9yaW5nX3N0YWNrIDwtIFtdO1xuICB0LmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgdC5mdWxsX3NleHBzIDwtIDA7XG4gIHQub2Zmc2V0IDwtIHBvcy5vZmZzZXQ7XG4gIHQubGluZV9udW1iZXIgPC0gcG9zLmxpbmU7XG4gIHQuYm9sX29mZnNldCA8LSBwb3Mub2Zmc2V0IC0gcG9zLmNvbDtcbiAgcmVzZXRfdXNlcl9zdGF0ZSB0O1xuICBCdWZmZXIuY2xlYXIgdC5hdG9tX2J1ZmZlclxuOztcblxubGV0IGNvbnRleHQgc3RhdGUgOiBDb250ZXh0LnQgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgXyA6OiBfIC0+IFNleHBfY29tbWVudFxuICB8IFtdIC0+IFNleHBcbjs7XG5cbmxldCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgPSBzdGF0ZS5kZXB0aCA+IDBcbmxldCBzZXRfZXJyb3Jfc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0gZXJyb3Jfc3RhdGVcbmxldCBhdXRvbWF0b25fc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgUmVhc29uID0gc3RydWN0XG4gICgqXyBTb21lIG9mIHRoZXNlIGNvbWUgZnJvbSBbUGFyc2V4cF9zeW1ib2xpY19hdXRvbWF0b24uUGFyc2VfZXJyb3JfcmVhc29uXS4gKilcbiAgdHlwZSB0ID1cbiAgICAoKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fcGFyc2VfZXJyb3IucHJpbnRfY29uc3RydWN0b3JzICgpICopXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xuICAgICgqJCopXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2VcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXRcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgICB8IFRvb19tYW55X3NleHBzXG4gICAgfCBVbmNsb3NlZF9wYXJlblxuZW5kXG5cbm1vZHVsZSB0eXBlIFBhcnNlX2Vycm9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCBwb3NpdGlvbiA6IHQgLT4gUG9zaXRpb25zLnBvc1xuICB2YWwgbWVzc2FnZSA6IHQgLT4gc3RyaW5nXG5cbiAgKCoqIFJlcG9ydCBhbiBlcnJvciBpbiBhIHN0eWxlIHNpbWlsYXIgdG8gT0NhbWwsIGZvciBpbnN0YW5jZTpcblxuICAgICAgRmlsZSBcImJsYWhcIiwgbGluZSA0MiwgY2hhcmFjdGVyIDEwOlxuICAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xuICAgICAgdW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmcuXG4gICopXG4gIHZhbCByZXBvcnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGZpbGVuYW1lOnN0cmluZyAtPiB0IC0+IHVuaXRcblxuICBleGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdFxuXG4gICgqKi8qKilcblxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICAgICgqKiBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgb2xkIHBhcnNlciBzb21ldGltZXMgcmFpc2VkIFtGYWlsdXJlXSBhbmQgc29tZXRpbWVzXG4gICAgICAgIHJhaXNlZCBbUGFyc2VfZXJyb3JdICopXG4gICAgdmFsIG9sZF9wYXJzZXJfZXhuIDogdCAtPiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cblxuICAgIHZhbCByYWlzZSA6IFJlYXNvbi50IC0+IFBvc2l0aW9ucy5wb3MgLT4gYXRfZW9mOmJvb2wgLT4gYXRvbV9idWZmZXI6QnVmZmVyLnQgLT4gJ2FcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBQYXJzZV9lcnJvcl9pbnRmXG5cbnR5cGUgdCA9XG4gIHsgcG9zaXRpb24gOiBQb3NpdGlvbnMucG9zXG4gIDsgbWVzc2FnZSA6IHN0cmluZ1xuICA7IG9sZF9wYXJzZXJfZXhuIDogWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG4gIH1cblxubGV0IHNleHBfb2ZfdCB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biA9IF8gfSA6IFNleHAudCA9XG4gIExpc3RcbiAgICBbIExpc3QgWyBBdG9tIFwicG9zaXRpb25cIjsgUG9zaXRpb25zLnNleHBfb2ZfcG9zIHBvc2l0aW9uIF1cbiAgICA7IExpc3QgWyBBdG9tIFwibWVzc2FnZVwiOyBzZXhwX29mX3N0cmluZyBtZXNzYWdlIF1cbiAgICBdXG47O1xuXG5sZXQgcG9zaXRpb24gdCA9IHQucG9zaXRpb25cbmxldCBtZXNzYWdlIHQgPSB0Lm1lc3NhZ2VcbmxldCBvbGRfcGFyc2VyX2V4biB0ID0gdC5vbGRfcGFyc2VyX2V4blxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBwb3MgPSBwb3NpdGlvbiB0IGluXG4gIGxldCBtc2cgPSBtZXNzYWdlIHQgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVyICVkOlxcbkVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcXG4lc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBwb3MubGluZVxuICAgIHBvcy5jb2xcbiAgICBtc2dcbjs7XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBzZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGFyc2VfZXJyb3IubWwuUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSAocmVhc29uIDogUmVhc29uLnQpIHBvc2l0aW9uIH5hdF9lb2YgfmF0b21fYnVmZmVyID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgICgqIFRoZXNlIG1lc3NhZ2VzIHdoZXJlIGNob29zZW4gc3VjaCB0aGF0IHdlIGNhbiBidWlsZCB0aGUgdmFyaW91cyBTZXhwbGliIHBhcnNpbmdcbiAgICAgICBmdW5jdGlvbnMgb24gdG9wIG9mIFBhcnNleHAgYW5kIGtlZXAgdGhlIHNhbWUgZXhjZXB0aW9ucy5cblxuICAgICAgIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcywgYSBzaW1wbGUgbGF5ZXIgb24gdG9wIG9mIHBhcnNleHAgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgIHNleHBsaWIgQVBJIGlzIHBhc3NpbmcgYWxsIHRoZSBzZXhwbGliIHRlc3RzLlxuXG4gICAgICAgTm90ZSB0aGF0IHBhcnNleHAgbWF0Y2hlcyB0aGUgc2VtYW50aWMgb2YgU2V4cC5wYXJzZSB3aGljaCBpcyBzbGlnaHRseVxuICAgICAgIGRpZmZlcmVudCBmcm9tIHRoZSBvY2FtbGxleC9vY2FtbHlhY2MgYmFzZWQgcGFyc2VyIG9mIFNleHBsaWIuIFRoZSBsYXR0ZXIgb25lXG4gICAgICAgaXMgbGVzcyB0ZXN0ZWQgYW5kIGFzc3VtZWQgdG8gYmUgbGVzcyB1c2VkLiAqKVxuICAgIG1hdGNoIHJlYXNvbiB3aXRoXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nIC0+IFwidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmdcIlxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnQgLT4gXCJ1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFwiXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlIC0+IFwiZXNjYXBlIHNlcXVlbmNlIGluIHF1b3RlZCBzdHJpbmcgb3V0IG9mIHJhbmdlXCJcbiAgICB8IFVuY2xvc2VkX3BhcmVuIC0+IFwidW5jbG9zZWQgcGFyZW50aGVzZXMgYXQgZW5kIG9mIGlucHV0XCJcbiAgICB8IFRvb19tYW55X3NleHBzIC0+IFwicy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGFcIlxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkIC0+IFwidW5leHBlY3RlZCBjaGFyYWN0ZXI6ICcpJ1wiXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20gLT5cbiAgICAgIGlmIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIlxuICAgICAgdGhlbiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIlxuICAgICAgZWxzZSBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIlxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cCAtPiBcInVudGVybWluYXRlZCBzZXhwIGNvbW1lbnRcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3IgLT5cbiAgICAgIGlmIGF0X2VvZlxuICAgICAgdGhlbiBcInVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgICBlbHNlIFwidW5leHBlY3RlZCBjaGFyYWN0ZXIgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXQgLT4gXCJubyBzLWV4cHJlc3Npb24gZm91bmQgaW4gaW5wdXRcIlxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5QYXJzZXJfYXV0b21hdG9uOiBwYXJzZXIgaXMgZGVhZFwiXG4gIGluXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9XG4gICAgbWF0Y2ggcmVhc29uLCBhdF9lb2Ygd2l0aFxuICAgIHwgVG9vX21hbnlfc2V4cHMsIF8gfCBfLCB0cnVlIC0+IGBGYWlsdXJlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20sIF9cbiAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiIC0+IGBGYWlsdXJlXG4gICAgfCBfIC0+IGBQYXJzZV9lcnJvclxuICBpblxuICByYWlzZSAoUGFyc2VfZXJyb3IgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gfSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPSBvbGRfcGFyc2VyX2V4blxuICBsZXQgcmFpc2UgPSByYWlzZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXV0b21hdG9uX3N0YXRlXG5vcGVuIFN0YXRlXG5cbmxldCByYWlzZV9lcnJvciA6IHR5cGUgYSBiLiAoYSwgYikgQXV0b21hdG9uX3N0YXRlLnQgLT4gXyA9XG4gIGZ1biBzdGF0ZSB+YXRfZW9mIHJlYXNvbiAtPlxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIFBhcnNlX2Vycm9yLlByaXZhdGUucmFpc2VcbiAgICByZWFzb25cbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuICAgIH5hdF9lb2ZcbiAgICB+YXRvbV9idWZmZXI6c3RhdGUuYXRvbV9idWZmZXJcbjs7XG5cbnR5cGUgbm9ucmVjIGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuQ29udGV4dC50ID1cbiAgfCBTZXhwX2NvbW1lbnRcbiAgfCBTZXhwXG5cbmxldCBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLmNvbnRleHRcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiAncyAtPiAnc1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuZW5kXG5cbm1vZHVsZSBFcHNpbG9uID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+ICdzIC0+ICdzXG5cbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuICBlbmRcbmVuZFxuXG5sZXQgY3VycmVudF9wb3MgPyhkZWx0YSA9IDApIHN0YXRlIDogUG9zaXRpb25zLnBvcyA9XG4gIGxldCBvZmZzZXQgPSBzdGF0ZS5vZmZzZXQgKyBkZWx0YSBpblxuICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlcjsgY29sID0gb2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldDsgb2Zmc2V0IH1cbjs7XG5cbmxldCBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIHggPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0geFxubGV0IGFkdmFuY2Ugc3RhdGUgPSBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgMVxuXG5sZXQgYWR2YW5jZV9lb2wgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbGV0IG5ld2xpbmVfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gIHN0YXRlLm9mZnNldCA8LSBuZXdsaW5lX29mZnNldCArIDE7XG4gIHN0YXRlLmJvbF9vZmZzZXQgPC0gc3RhdGUub2Zmc2V0O1xuICBzdGF0ZS5saW5lX251bWJlciA8LSBzdGF0ZS5saW5lX251bWJlciArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoXG5cbmxldCBhZGRfdG9rZW5fY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGFkZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBzdGFja1xuOztcblxubGV0IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGlzX2lnbm9yaW5nIHN0YXRlID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cCAtPiBmYWxzZVxuICB8IFNleHBfY29tbWVudCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfbm90X2lnbm9yaW5nIHN0YXRlID0gbm90IChpc19pZ25vcmluZyBzdGF0ZSlcblxubGV0IGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGUgPVxuICBsZXQgaXNfc2luZ2xlID1cbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IFNpbmdsZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGlzX3NpbmdsZSAmJiBzdGF0ZS5mdWxsX3NleHBzID4gMCAmJiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFRvb19tYW55X3NleHBzXG47O1xuXG5sZXQgYWRkX3BvcyBzdGF0ZSB+ZGVsdGEgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5hZGQgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgKyBkZWx0YSlcbjs7XG5cbmxldCBhZGRfZmlyc3RfY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjaGFyO1xuICAoKiBGb3Igbm9uLXF1b3RlZCBhdG9tcywgd2Ugc2F2ZSBib3RoIHBvc2l0aW9ucyBhdCB0aGUgZW5kLiBXZSBjYW4gYWx3YXlzIGRldGVybWluZSB0aGVcbiAgICAgc3RhcnQgcG9zaXRpb24gZnJvbSB0aGUgZW5kIHBvc2l0aW9uIGFuZCB0aGUgYXRvbSBsZW5ndGggZm9yIG5vbi1xdW90ZWQgYXRvbXMuXG5cbiAgICAgRG9pbmcgaXQgdGhpcyB3YXkgYWxsb3dzIHVzIHRvIGRldGVjdCBzaW5nbGUgY2hhcmFjYXRlciBhdG9tcyBmb3Igd2hpY2ggd2UgbmVlZCB0b1xuICAgICBzYXZlIHRoZSBwb3NpdGlvbiB0d2ljZS4gKilcbiAgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnIyc7XG4gIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfcXVvdGVkX3N0cmluZyA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJ1wiJztcbiAgICBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfZXNjYXBlZCBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IGMnID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICduJyAtPiAnXFxuJ1xuICAgIHwgJ3InIC0+ICdcXHInXG4gICAgfCAnYicgLT4gJ1xcYidcbiAgICB8ICd0JyAtPiAnXFx0J1xuICAgIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXCInIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxcXCc7XG4gICAgICBjXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjJztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxyJztcbiAgc3RhY2tcbjs7XG5cbmxldCBkZWNfdmFsIGMgPSBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcblxubGV0IGhleF92YWwgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gIHwgJ2EnIC4uICdmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICB8IF8gLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbjs7XG5cbmxldCBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IG9wZW5pbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gT3BlbiBzdGFjayBlbHNlIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgIHRoZW4gKFxuICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIE9wZW4gc3RhY2spXG4gICAgZWxzZSBzdGFja1xuICB8IENzdCAtPiBPcGVuIChjdXJyZW50X3BvcyBzdGF0ZSwgc3RhY2spXG47O1xuXG5sZXQgZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIucmVzZXRcbiAgICBzdGF0ZS51c2VyX3N0YXRlXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbjs7XG5cbmxldCByZXNldF9wb3NpdGlvbnMgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cCAtPiAoKVxuICB8IENzdCAtPiAoKVxuOztcblxubGV0IHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgfCBTaW5nbGUgfCBNYW55IC0+IHN0YWNrXG4gIHwgRWFnZXIgeyBnb3Rfc2V4cCA9IGY7IF8gfSAtPlxuICAgICgqIE1vZGlmeSB0aGUgb2Zmc2V0IHNvIHRoYXQgW2ZdIGdldCBhIHN0YXRlIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnRcbiAgICAgICBzLWV4cHJlc3Npb24gKilcbiAgICBsZXQgc2F2ZWRfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gICAgc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIGRlbHRhO1xuICAgIGxldCBzYXZlZF9mdWxsX3NleHBzID0gc3RhdGUuZnVsbF9zZXhwcyBpblxuICAgIChtYXRjaCBmIHN0YXRlIHN0YWNrIHdpdGhcbiAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgICAgICByYWlzZSBlXG4gICAgIHwgc3RhY2sgLT5cbiAgICAgICAoKiBUaGlzIGFzc2VydCBpcyBub3QgYSBmdWxsIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgdXNlciBtdXRhdGluZyB0aGUgc3RhdGUgYnV0XG4gICAgICAgICAgaXQgc2hvdWxkIGNhdGNoIG1vc3QgY2FzZXMuICopXG4gICAgICAgYXNzZXJ0IChzdGF0ZS5vZmZzZXQgPSBzYXZlZF9vZmZzZXQgKyBkZWx0YSAmJiBzdGF0ZS5mdWxsX3NleHBzID0gc2F2ZWRfZnVsbF9zZXhwcyk7XG4gICAgICAgc3RhdGUub2Zmc2V0IDwtIHNhdmVkX29mZnNldDtcbiAgICAgICByZXNldF9wb3NpdGlvbnMgc3RhdGU7XG4gICAgICAgc3RhY2spXG47O1xuXG5sZXQgaXNfdG9wX2xldmVsIHN0YXRlID0gaXNfbm90X2lnbm9yaW5nIHN0YXRlICYmIHN0YXRlLmRlcHRoID0gMFxuXG5sZXQgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSBlbHNlIHN0YWNrXG47O1xuXG5sZXQgbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogX3RsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA+IHN0YXRlLmRlcHRoIC0+XG4gICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiB0bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPSBzdGF0ZS5kZXB0aCAtPlxuICAgIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHRsO1xuICAgIHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc2V4cF9hZGRlZCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gcyAtPiBkZWx0YTppbnQgLT4gcyA9XG4gIGZ1biBzdGF0ZSBzdGFjayB+ZGVsdGEgLT5cbiAgbGV0IGlzX2NvbW1lbnQgPSBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgaW5cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlXG4gIHRoZW4gKFxuICAgIGlmIG5vdCBpc19jb21tZW50IHRoZW4gc3RhdGUuZnVsbF9zZXhwcyA8LSBzdGF0ZS5mdWxsX3NleHBzICsgMTtcbiAgICBpZiAobm90IGlzX2NvbW1lbnQpXG4gICAgICAgfHxcbiAgICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgICB8IENzdCAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhXG4gICAgZWxzZSBzdGFjaylcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBtYWtlX2xpc3QgYWNjIDogQXV0b21hdG9uX3N0YWNrLnQgLT4gQXV0b21hdG9uX3N0YWNrLnQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IE9wZW4gc3RhY2sgLT4gU2V4cCAoTGlzdCBhY2MsIHN0YWNrKVxuICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBtYWtlX2xpc3QgKHNleHAgOjogYWNjKSBzdGFja1xuOztcblxubGV0IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IChzdGFjayA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpXG4gIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9XG4gIG1hdGNoIHN0YWNrIHdpdGhcbiAgfCBJbl9zZXhwX2NvbW1lbnQgciAtPlxuICAgIEluX3NleHBfY29tbWVudCB7IHIgd2l0aCByZXZfY29tbWVudHMgPSBjb21tZW50IDo6IHIucmV2X2NvbW1lbnRzIH1cbiAgfCBfIC0+IFRfb3JfY29tbWVudCAoQ29tbWVudCBjb21tZW50LCBzdGFjaylcbjs7XG5cbmxldCBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyByZXZfY29tbWVudHM7IHN0YWNrIH0gLT5cbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBTZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyBjb21tZW50cyA9IExpc3QucmV2IHJldl9jb21tZW50czsgc2V4cCB9XG4gICAgICBpblxuICAgICAgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2tcbiAgICB8IHN0YWNrIC0+IFRfb3JfY29tbWVudCAoU2V4cCBzZXhwLCBzdGFjaylcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0X2NzdCBlbmRfcG9zIGFjYyA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgKHQgOjogYWNjKSBzdGFja1xuICAgIHwgT3BlbiAoc3RhcnRfcG9zLCBzdGFjaykgLT5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBMaXN0IHsgbG9jID0geyBzdGFydF9wb3M7IGVuZF9wb3MgfTsgZWxlbWVudHMgPSBhY2MgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgICB8IEVtcHR5IHwgSW5fc2V4cF9jb21tZW50IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2xvc2luZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwXG4gIHRoZW4gKFxuICAgIGxldCBzdGFjayA6IHMgPVxuICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgICAoKiBOb3RlIHdlIHN0b3JlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlIGluIFtQb3NpdGlvbnMudF0sIHNvIHdlIHVzZSBbZGVsdGE6MF0sXG4gICAgICAgICAgIHdoaWxlIGluIHRoZSBbQ3N0XSBjYXNlIHdlIHNhdmUgZGlyZWN0bHkgdGhlIGZpbmFsIHJhbmdlcywgc28gd2UgdXNlXG4gICAgICAgICAgIFtkZWx0YToxXS4gKilcbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgc3RhY2tcbiAgICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBtYWtlX2xpc3QgW10gc3RhY2sgZWxzZSBzdGFja1xuICAgICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICAgIG1ha2VfbGlzdCBbXSBzdGFjaylcbiAgICAgICAgZWxzZSBzdGFja1xuICAgICAgfCBDc3QgLT4gbWFrZV9saXN0X2NzdCAoY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjEpIFtdIHN0YWNrXG4gICAgaW5cbiAgICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCAtIDE7XG4gICAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgZWxzZSByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuOztcblxubGV0IG1ha2VfbG9jID8oZGVsdGEgPSAwKSAoc3RhdGUgOiAoQXV0b21hdG9uX3N0YXRlLkZvcl9jc3QudCwgXykgQXV0b21hdG9uX3N0YXRlLnQpXG4gIDogUG9zaXRpb25zLnJhbmdlXG4gID1cbiAgeyBzdGFydF9wb3MgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvczsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YSB9XG47O1xuXG4oKiBUaGlzIGlzIGFsd2F5cyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uIGV4YWN0bHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhXG4gICBub24tcXVvdGVkIGF0b20gKilcbmxldCBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGF0b20gaW5cbiAgaWYgbGVuID0gMVxuICB0aGVuIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF90d2ljZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCAtIDEpXG4gIGVsc2UgKFxuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtbGVuKTtcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLTEpKVxuOztcblxubGV0IGVwc19wdXNoX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgbG9jIDogUG9zaXRpb25zLnJhbmdlID1cbiAgICAgICAgeyBzdGFydF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC1TdHJpbmcubGVuZ3RoIHN0cilcbiAgICAgICAgOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjBcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBBdG9tIHsgbG9jOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHN0ciB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgcHVzaF9xdW90ZWRfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXCInO1xuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IHNleHAgOiBDc3QudCA9XG4gICAgICAgIEF0b20geyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzIH1cbiAgICAgIGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxXG47O1xuXG5sZXQgc3RhcnRfc2V4cF9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHN0YXRlLmRlcHRoIDo6IHN0YXRlLmlnbm9yaW5nX3N0YWNrO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnRcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpOyByZXZfY29tbWVudHMgPSBbXTsgc3RhY2sgfVxuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBzdGFydF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDFcbiAgICB0aGVuIChcbiAgICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICcjJyk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbjs7XG5cbmxldCBlbmRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggLSAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgY29tbWVudCA9IHMgfVxuICAgICAgaW5cbiAgICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgZW5kX2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID0gUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlOyBjb21tZW50ID0gcyB9IGluXG4gICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IGVwc19lb2lfY2hlY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgVW5jbG9zZWRfcGFyZW47XG4gIGlmIGlzX2lnbm9yaW5nIHN0YXRlIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFNleHBfY29tbWVudF93aXRob3V0X3NleHA7XG4gIGlmIHN0YXRlLmZ1bGxfc2V4cHMgPSAwXG4gIHRoZW4gKFxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgTWFueSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IGZhbHNlOyBfIH0gLT4gKClcbiAgICB8IFNpbmdsZSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IHRydWU7IF8gfSAtPlxuICAgICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIE5vX3NleHBfZm91bmRfaW5faW5wdXQpO1xuICBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX2F0b21cbiAgfCBQYXJzaW5nX2xpc3RcbiAgfCBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfYXRvbSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2F0b21cIlxuICAgIHwgUGFyc2luZ19saXN0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbGlzdFwiXG4gICAgfCBQYXJzaW5nX3NleHBfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3NleHBfY29tbWVudFwiXG4gICAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19ibG9ja19jb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbWF0Y2ggc2V4cF9vZl90IHQgd2l0aFxuICB8IEF0b20gcyAtPiBzXG4gIHwgTGlzdCBfIC0+IGZhaWx3aXRoIFwiQlVHOiBbc2V4cF9vZl90XSByZXR1cm5lZCBhIFtMaXN0IF9dXCJcbjs7XG4iLCJvcGVuIEF1dG9tYXRvbl9hY3Rpb25cblxubGV0IHJhaXNlID0gQXV0b21hdG9uX2FjdGlvbi5yYWlzZV9lcnJvclxuXG50eXBlIHUnXG50eXBlIHMnXG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fdGFibGVzLnByaW50X2NvZGUgKCkgKilcbmxldCB0cl8wMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDBfZiB9XG5cbmxldCB0cl8wMV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMV9mIH1cblxubGV0IHRyXzAyX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMl9mIH1cblxubGV0IHRyXzAzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAzX2YgfVxuXG5sZXQgdHJfMDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDRfZiB9XG5cbmxldCB0cl8wNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNV9mIH1cblxubGV0IHRyXzA2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA2X2YgfVxuXG5sZXQgdHJfMDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDdfZiB9XG5cbmxldCB0cl8wOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA4X2YgfVxuXG5sZXQgdHJfMDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA5X2YgfVxubGV0IHRyXzEwX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyXzEwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMF9mIH1cbmxldCB0cl8xMV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyXzExIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMV9mIH1cblxubGV0IHRyXzEyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEyX2YgfVxuXG5sZXQgdHJfMTNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xM19mIH1cblxubGV0IHRyXzE0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE0X2YgfVxuXG5sZXQgdHJfMTVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNV9mIH1cblxubGV0IHRyXzE2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTZfZiB9XG5cbmxldCB0cl8xN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xN19mIH1cblxubGV0IHRyXzE4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMThfZiB9XG5cbmxldCB0cl8xOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE5X2YgfVxuXG5sZXQgdHJfMjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIwX2YgfVxuXG5sZXQgdHJfMjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjFfZiB9XG5cbmxldCB0cl8yMl9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbjs7XG5cbmxldCB0cl8yMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjJfZiB9XG5cbmxldCB0cl8yM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjNfZiB9XG5cbmxldCB0cl8yNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNF9mIH1cblxubGV0IHRyXzI1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjVfZiB9XG5cbmxldCB0cl8yNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNl9mIH1cblxubGV0IHRyXzI3X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjdfZiB9XG5cbmxldCB0cl8yOF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOF9mIH1cblxubGV0IHRyXzI5X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjlfZiB9XG5cbmxldCB0cl8zMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMwX2YgfVxuXG5sZXQgdHJfMzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzFfZiB9XG5cbmxldCB0cl8zMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMyX2YgfVxuXG5sZXQgdHJfMzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zM19mIH1cblxubGV0IHRyXzM0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3NleHBfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzRfZiB9XG5cbmxldCB0cl8zNV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzVfZiB9XG5cbmxldCB0cl8zNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzZfZiB9XG5cbmxldCB0cl8zN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM3X2YgfVxuXG5sZXQgdHJfMzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzhfZiB9XG5cbmxldCB0cl8zOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzlfZiB9XG5cbmxldCB0cl80MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZXNjYXBlZCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDBfZiB9XG5cbmxldCB0cl80MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MV9mIH1cblxubGV0IHRyXzQyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDJfZiB9XG5cbmxldCB0cl80M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDNfZiB9XG5cbmxldCB0cl80NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ0X2YgfVxuXG5sZXQgdHJfNDVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NV9mIH1cblxubGV0IHRyXzQ2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Nl9mIH1cblxubGV0IHRyXzQ3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDdfZiB9XG5cbmxldCB0cl80OF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG47O1xuXG5sZXQgdHJfNDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ4X2YgfVxuXG5sZXQgdHJfNDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ5X2YgfVxuXG5sZXQgdHJfNTBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MF9mIH1cblxubGV0IHRyXzUxX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbjs7XG5cbmxldCB0cl81MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTFfZiB9XG5cbmxldCB0cl81Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTJfZiB9XG5cbmxldCB0cl81M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUzX2YgfVxuXG5sZXQgdHJfNTRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU0X2YgfVxuXG5sZXQgdHJfNTVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NV9mIH1cblxubGV0IHRyXzU2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTZfZiB9XG5cbmxldCB0cl81N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81N19mIH1cblxubGV0IHRyXzU4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OF9mIH1cblxubGV0IHRyXzU5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTlfZiB9XG5cbmxldCB0cl82MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MF9mIH1cblxubGV0IHRyXzYxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjFfZiB9XG5cbmxldCB0cl82Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYyX2YgfVxuXG5sZXQgdHJfNjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82M19mIH1cblxubGV0IHRyXzY0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAoaWYgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA8PiAwIHRoZW4gMTYgZWxzZSAwKTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjRfZiB9XG5cbmxldCB0cl82NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NV9mIH1cblxubGV0IHRyXzY2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjZfZiB9XG5cbmxldCB0cl82N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82N19mIH1cblxubGV0IHRyXzY4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjhfZiB9XG5cbmxldCB0cl82OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjlfZiB9XG5cbmxldCB0cl83MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcwX2YgfVxuXG5sZXQgdHJfNzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MV9mIH1cblxubGV0IHRyXzcyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzJfZiB9XG5cbmxldCB0cl83M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzczX2YgfVxuXG5sZXQgdHJfNzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc0X2YgfVxuXG5sZXQgdHJfNzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NV9mIH1cblxubGV0IHRyXzc2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzZfZiB9XG5cbmxldCB0cl83N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc3X2YgfVxuXG5sZXQgdHJfNzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzhfZiB9XG5sZXQgdHJfZW9pXzAwX2Ygc3RhdGUgc3RhY2sgPSBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG5sZXQgdHJfZW9pXzAwIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMF9mIH1cbmxldCB0cl9lb2lfMDFfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfZW9pXzAxIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMV9mIH1cbmxldCB0cl9lb2lfMDJfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl9lb2lfMDIgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAyX2YgfVxuXG5sZXQgdHJfZW9pXzAzX2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDMgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAzX2YgfVxuXG5sZXQgdHJfZW9pXzA0X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDQgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA0X2YgfVxuXG5sZXQgdHJfZW9pXzA1X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDUgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA1X2YgfVxubGV0IHRyX2VvaV8wNl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xubGV0IHRyX2VvaV8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDZfZiB9XG5sZXQgdHJfZW9pXzA3X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG5sZXQgdHJfZW9pXzA3IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wN19mIH1cblxubGV0IHRyYW5zaXRpb25zID1cbiAgW3wgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDNcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDRcbiAgIDsgdHJfMDVcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDZcbiAgIDsgdHJfMDdcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDhcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDlcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjRcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjVcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjhcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjlcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzBcbiAgIDsgdHJfMzFcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzJcbiAgIDsgdHJfMzNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzRcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzVcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzdcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzhcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzlcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDJcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDRcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDZcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDdcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTZcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTdcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNThcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfMzVcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjVcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjZcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjhcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzBcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzhcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgfF1cbjs7XG5cbmxldCB0cmFuc2l0aW9uc19lb2kgPVxuICBbfCB0cl9lb2lfMDBcbiAgIDsgdHJfZW9pXzAxXG4gICA7IHRyX2VvaV8wMlxuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDRcbiAgIDsgdHJfZW9pXzA1XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICB8XVxuOztcblxubGV0IG9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgYXJyYXkgPVxuICBbfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgfF1cbjs7XG4oKiQqKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlXG5cbmxldCBmZWVkICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSBjaGFyIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBpZHggPSAoYXV0b21hdG9uX3N0YXRlIHN0YXRlIGxzbCA4KSBsb3IgQ2hhci5jb2RlIGNoYXIgaW5cbiAgQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9ucy4oaWR4KS5mIHN0YXRlIGNoYXIgc3RhY2tcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZmVlZF9lb2kgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBzdGFjayA9IEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnNfZW9pLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpLmYgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50ID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cF9jb21tZW50IC0+IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgU2V4cCAtPlxuICAgIChtYXRjaFxuICAgICAgICggQXV0b21hdG9uX3RhYmxlcy5vbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcy4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKVxuICAgICAgICwgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlIClcbiAgICAgd2l0aFxuICAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSwgdHJ1ZSAtPiBQYXJzaW5nX2xpc3RcbiAgICAgfCBzLCBfIC0+IHMpXG47O1xuXG5sZXQgcmVjIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgZmVlZF9zdWJzdHJpbmcgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJzdHJpbmdcIjtcbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N1YmJ5dGVzIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IEJ5dGVzLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJieXRlc1wiO1xuICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdHJpbmcgc3RhdGUgc3RyIHN0YWNrID1cbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChTdHJpbmcubGVuZ3RoIHN0cilcbjs7XG5cbmxldCBmZWVkX2J5dGVzIHN0YXRlIHN0ciBzdGFjayA9IGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChCeXRlcy5sZW5ndGggc3RyKVxuXG5sZXQgZW1wdHlfc3RhY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBzID0gZnVuY3Rpb25cbiAgfCBTZXhwIC0+IFN0YWNrLmVtcHR5XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBTdGFjay5lbXB0eVxuICB8IFBvc2l0aW9ucyAtPiBTdGFjay5KdXN0X3Bvc2l0aW9ucy5lbXB0eVxuICB8IENzdCAtPiBTdGFjay5Gb3JfY3N0LmVtcHR5XG47O1xuXG5sZXQgb2Zfc3Vic3RyaW5nICh0eXBlIHUgcykgKG1vZGUgOiAodSwgcykgTW9kZS50KSAoa2luZCA6ICh1LCBzKSBLaW5kLnQpIHMgfnBvcyB+bGVuID1cbiAgbGV0IHN0YXRlID0gY3JlYXRlIG1vZGUga2luZCBpblxuICBsZXQgc3RhY2sgPSBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzIH5wb3MgfmxlbiAoZW1wdHlfc3RhY2sga2luZCkgaW5cbiAgc3RhdGUsIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgdXNlcl9leG4gOiBleG5cbiAgOyBzdWJfc2V4cCA6IFNleHAudFxuICA7IGxvY2F0aW9uIDogUG9zaXRpb25zLnJhbmdlIG9wdGlvblxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW4geyB1c2VyX2V4biA9IHVzZXJfZXhuX18wMDJfOyBzdWJfc2V4cCA9IHN1Yl9zZXhwX18wMDRfOyBsb2NhdGlvbiA9IGxvY2F0aW9uX18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSAoW10gOiBfIFN0ZGxpYi5MaXN0LnQpIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9vcHRpb24gUG9zaXRpb25zLnNleHBfb2ZfcmFuZ2UgbG9jYXRpb25fXzAwNl8gaW5cbiAgICAgICAoU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jYXRpb25cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICAgICA6IF8gU3RkbGliLkxpc3QudClcbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwNV8gPSBTZXhwLnNleHBfb2ZfdCBzdWJfc2V4cF9fMDA0XyBpblxuICAgICAgIChTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdWJfc2V4cFwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDFfXG4gICAgICAgIDogXyBTdGRsaWIuTGlzdC50KVxuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDAzXyA9IHNleHBfb2ZfZXhuIHVzZXJfZXhuX18wMDJfIGluXG4gICAgICAgKFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVzZXJfZXhuXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgICAgOiBfIFN0ZGxpYi5MaXN0LnQpXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdXNlcl9leG4gdCA9IHQudXNlcl9leG5cbmxldCBzdWJfc2V4cCB0ID0gdC5zdWJfc2V4cFxubGV0IGxvY2F0aW9uIHQgPSB0LmxvY2F0aW9uXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbGV0IGxpbmUsIHN0YXJ0LCBzdG9wID1cbiAgICBtYXRjaCB0LmxvY2F0aW9uIHdpdGhcbiAgICB8IE5vbmUgLT4gMSwgMCwgMFxuICAgIHwgU29tZSB7IHN0YXJ0X3BvczsgZW5kX3BvcyB9IC0+XG4gICAgICBzdGFydF9wb3MubGluZSwgc3RhcnRfcG9zLmNvbCwgc3RhcnRfcG9zLmNvbCArIGVuZF9wb3Mub2Zmc2V0IC0gc3RhcnRfcG9zLm9mZnNldFxuICBpblxuICBGb3JtYXQuZnByaW50ZlxuICAgIHBwZlxuICAgIFwiRmlsZSBcXFwiJXNcXFwiLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkOlxcblxcXG4gICAgIEVycm9yOiBzLWV4cHJlc3Npb24gY29udmVyc2lvbiBlcnJvcjtcXG5cXFxuICAgICBleGNlcHRpb24gJXNcXG5cIlxuICAgIGZpbGVuYW1lXG4gICAgbGluZVxuICAgIHN0YXJ0XG4gICAgc3RvcFxuICAgIChTZXhwbGliMC5TZXhwX2NvbnYucHJpbnRleGNfcHJlZmVyX3NleHAgdC51c2VyX2V4bilcbjs7XG5cbmV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXSAoZnVuY3Rpb25cbiAgICB8IE9mX3NleHBfZXJyb3IgYXJnMF9fMDA4XyAtPlxuICAgICAgbGV0IHJlczBfXzAwOV8gPSBzZXhwX29mX3QgYXJnMF9fMDA4XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwib2Zfc2V4cF9lcnJvci5tbC5PZl9zZXhwX2Vycm9yXCI7IHJlczBfXzAwOV8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cCB+bG9jYXRpb24gPVxuICByYWlzZSAoT2Zfc2V4cF9lcnJvciB7IHVzZXJfZXhuOyBzdWJfc2V4cDsgbG9jYXRpb24gfSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBQYXJzZV9lcnJvciBvZiBQYXJzZV9lcnJvci50XG4gIHwgT2Zfc2V4cF9lcnJvciBvZiBPZl9zZXhwX2Vycm9yLnRcbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBhcmcwX18wMDFfIC0+XG4gICAgICBsZXQgcmVzMF9fMDAyXyA9IFBhcnNlX2Vycm9yLnNleHBfb2ZfdCBhcmcwX18wMDFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzZV9lcnJvclwiOyByZXMwX18wMDJfIF1cbiAgICB8IE9mX3NleHBfZXJyb3IgYXJnMF9fMDAzXyAtPlxuICAgICAgbGV0IHJlczBfXzAwNF8gPSBPZl9zZXhwX2Vycm9yLnNleHBfb2ZfdCBhcmcwX18wMDNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPZl9zZXhwX2Vycm9yXCI7IHJlczBfXzAwNF8gXVxuICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByZXBvcnQgcHBmIH5maWxlbmFtZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgUGFyc2VfZXJyb3IgZSAtPiBQYXJzZV9lcnJvci5yZXBvcnQgcHBmIH5maWxlbmFtZSBlXG4gIHwgT2Zfc2V4cF9lcnJvciBlIC0+IE9mX3NleHBfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBQYXJzZXJfaW50ZlxubW9kdWxlIEEgPSBBdXRvbWF0b25cblxubGV0IGtpbmRfdG9fc3RhY2tcbiAgOiB0eXBlIHN0YWNrLlxuICAgICgnc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUuS2luZC50IC0+IChtb2R1bGUgU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgPVxuICBmdW4gKHR5cGUgc3RhdGUpIChraW5kIDogKHN0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCkgLT5cbiAgbWF0Y2gga2luZCB3aXRoXG4gIHwgU2V4cCAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgUG9zaXRpb25zIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkp1c3RfcG9zaXRpb25zIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrIDogU3RhY2sgd2l0aCB0eXBlIHQgPSBzdGFjaylcbiAgfCBDc3QgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2suRm9yX2NzdCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG47O1xuXG5sZXQgbWFrZSAodHlwZSBzdGFjayBzdGF0ZSBwYXJzZWRfdmFsdWUpIGtpbmQgbW9kZSBtYWtlX3ZhbHVlXG4gIDogKG1vZHVsZSBTXG4gICAgICB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG4gICAgICAgYW5kIHR5cGUgU3RhdGUudCA9IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS50XG4gICAgICAgYW5kIHR5cGUgU3RhY2sudCA9IHN0YWNrKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zICgpID0gQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyBtb2RlIGtpbmRcbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RvcCBzdGF0ZSA9IEEuc2V0X2Vycm9yX3N0YXRlIHN0YXRlXG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IG1ha2VfdmFsdWUgc3RhdGUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2spXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciA9XG4gICAgICBsZXQgc3RhdGUgPSBTdGF0ZS5jcmVhdGUgKCkgaW5cbiAgICAgIGZlZWRfZW9pIHN0YXRlIChmZWVkX3N0cmluZyBzdGF0ZSBzdHIgU3RhY2suZW1wdHkpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9zdHJpbmcgc3RyID1cbiAgICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIHdpdGhcbiAgICAgIHwgeCAtPiBPayB4XG4gICAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIGVcbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgbWFrZV9lYWdlciAodHlwZSBzdGFjayBzdGF0ZSBwYXJzZWRfdmFsdWUpIGtpbmQgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU19lYWdlclxuICAgICAgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuICAgICAgIGFuZCB0eXBlIFN0YXRlLnQgPSAoc3RhdGUsIHN0YWNrKSBBdXRvbWF0b25fc3RhdGUudFxuICAgICAgIGFuZCB0eXBlIFN0YWNrLnQgPSBzdGFjaylcbiAgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHBhcnNlZF92YWx1ZSA9IHBhcnNlZF92YWx1ZVxuXG4gICAgbW9kdWxlIFN0YWNrID0gKHZhbCBraW5kX3RvX3N0YWNrIGtpbmQgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICBtb2R1bGUgUmVhZF9vbmx5ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gQS5vZmZzZXRcbiAgICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgICAgbGV0IGNvbHVtbiA9IEEuY29sdW1uXG5cbiAgICAgICAgbGV0IHBvc2l0aW9uIHQgOiBQb3NpdGlvbnMucG9zID1cbiAgICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBSZWFkX29ubHlcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zID8obm9fc2V4cF9pc19lcnJvciA9IGZhbHNlKSBmID1cbiAgICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHN0YWNrID1cbiAgICAgICAgICBsZXQgcGFyc2VkX3ZhbHVlID0gbWFrZV92YWx1ZSBzdGF0ZSBzdGFjayBpblxuICAgICAgICAgIGYgc3RhdGUgcGFyc2VkX3ZhbHVlO1xuICAgICAgICAgIFN0YWNrLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIEEuY3JlYXRlID9pbml0aWFsX3Bvczpwb3MgKEVhZ2VyIHsgZ290X3NleHA7IG5vX3NleHBfaXNfZXJyb3IgfSkga2luZFxuICAgICAgOztcblxuICAgICAgbGV0IHJlc2V0ID0gQS5yZXNldFxuICAgICAgbGV0IHN0b3AgdCA9IEEuc2V0X2Vycm9yX3N0YXRlIHRcbiAgICAgIGxldCBvbGRfcGFyc2VyX2NvbnRfc3RhdGUgdCA9IEF1dG9tYXRvbi5vbGRfcGFyc2VyX2NvbnRfc3RhdGUgdFxuICAgIGVuZFxuXG4gICAgbGV0IGZlZWQgPSBBLmZlZWRcbiAgICBsZXQgZmVlZF9lb2kgc3RhdGUgc3RhY2sgPSBpZ25vcmUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2sgOiBTdGFjay50KVxuICAgIGxldCBmZWVkX3N1YnN0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N1YnN0cmluZ1xuICAgIGxldCBmZWVkX3N0cmluZyA9IEF1dG9tYXRvbi5mZWVkX3N0cmluZ1xuICAgIGxldCBmZWVkX3N1YmJ5dGVzID0gQXV0b21hdG9uLmZlZWRfc3ViYnl0ZXNcbiAgICBsZXQgZmVlZF9ieXRlcyA9IEF1dG9tYXRvbi5mZWVkX2J5dGVzXG5cbiAgICBtb2R1bGUgTGV4YnVmX2NvbnN1bWVyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBTdGF0ZS50XG5cbiAgICAgIGV4Y2VwdGlvbiBHb3Rfc2V4cCBvZiBwYXJzZWRfdmFsdWUgKiBQb3NpdGlvbnMucG9zXG5cbiAgICAgIGxldCBnb3Rfc2V4cCBzdGF0ZSBwYXJzZWRfdmFsdWUgPVxuICAgICAgICByYWlzZV9ub3RyYWNlIChHb3Rfc2V4cCAocGFyc2VkX3ZhbHVlLCBTdGF0ZS5wb3NpdGlvbiBzdGF0ZSkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlICgpID0gU3RhdGUuY3JlYXRlIGdvdF9zZXhwXG5cbiAgICAgIGxldCBwb3Nfb2ZfbGV4YnVmIGxleGJ1ZiA9XG4gICAgICAgIGxldCBwID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIGluXG4gICAgICAgIHsgUG9zaXRpb25zLmxpbmUgPSBwLnBvc19sbnVtOyBjb2wgPSBwLnBvc19jbnVtIC0gcC5wb3NfYm9sOyBvZmZzZXQgPSBwLnBvc19jbnVtIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB1cGRhdGVfbGV4YnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSAocG9zIDogUG9zaXRpb25zLnBvcykgPVxuICAgICAgICBsZXQgcCA9IHBvcy5vZmZzZXQgLSBsZXhidWYubGV4X2Fic19wb3MgaW5cbiAgICAgICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBwO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBwO1xuICAgICAgICBsZXhidWYubGV4X2N1cnJfcFxuICAgICAgICA8LSB7IGxleGJ1Zi5sZXhfY3Vycl9wIHdpdGhcbiAgICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5saW5lXG4gICAgICAgICAgIDsgcG9zX2NudW0gPSBwb3Mub2Zmc2V0XG4gICAgICAgICAgIDsgcG9zX2JvbCA9IHBvcy5vZmZzZXQgLSBwb3MuY29sXG4gICAgICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmVlZF9sZXhidWYgdCAobGV4YnVmIDogTGV4aW5nLmxleGJ1Zikgc3RhY2sgPVxuICAgICAgICBsZXQgc3RhY2sgPVxuICAgICAgICAgIGZlZWRfc3ViYnl0ZXNcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgICAgICAgICBzdGFja1xuICAgICAgICAgICAgfnBvczpsZXhidWYubGV4X2N1cnJfcG9zXG4gICAgICAgICAgICB+bGVuOihsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X2N1cnJfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbjtcbiAgICAgICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBpZiBub3QgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXhidWYucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgICAgIGZlZWRfbGV4YnVmIHQgbGV4YnVmIHN0YWNrKVxuICAgICAgICBlbHNlIGZlZWRfZW9pIHQgc3RhY2tcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9nZW4gdCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgICAgICBBLnJlc2V0IHQgfnBvczoocG9zX29mX2xleGJ1ZiBsZXhidWYpO1xuICAgICAgICBtYXRjaCBmZWVkX2xleGJ1ZiB0IGxleGJ1ZiBTdGFjay5lbXB0eSB3aXRoXG4gICAgICAgIHwgKCkgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiAoU3RhdGUucG9zaXRpb24gdCk7XG4gICAgICAgICAgTm9uZVxuICAgICAgICB8IGV4Y2VwdGlvbiBHb3Rfc2V4cCAocGFyc2VkX3ZhbHVlLCBwb3MpIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgcG9zO1xuICAgICAgICAgIFNvbWUgcGFyc2VkX3ZhbHVlXG4gICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICByYWlzZSBleG5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXRfbm9fc2V4cF9pc19lcnJvciB0IHggPVxuICAgICAgICBtYXRjaCBBLm1vZGUgdCB3aXRoXG4gICAgICAgIHwgRWFnZXIgZSAtPiBlLm5vX3NleHBfaXNfZXJyb3IgPC0geFxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2UgdCBsZXhidWYgPVxuICAgICAgICBzZXRfbm9fc2V4cF9pc19lcnJvciB0IHRydWU7XG4gICAgICAgIG1hdGNoIHBhcnNlX2dlbiB0IGxleGJ1ZiB3aXRoXG4gICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5wYXJzZV9nZW46IE5vbmVcIlxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX29wdCB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgZmFsc2U7XG4gICAgICAgIHBhcnNlX2dlbiB0IGxleGJ1ZlxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb252X2ludGZcblxubW9kdWxlIE1ha2VcbiAgICAoTW9kZSA6IE1vZGUpXG4gICAgKFNleHBfcGFyc2VyIDogUGFyc2VyLlMgd2l0aCB0eXBlIHBhcnNlZF92YWx1ZSA9IE1vZGUucGFyc2VkX3NleHApXG4gICAgKFBvc2l0aW9uc19wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gUG9zaXRpb25zLnQpID1cbnN0cnVjdFxuICBsZXQgcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIH5zdWIgdXNlcl9leG4gPVxuICAgIGxldCBsb2NhdGlvbiA9IE1vZGUuZmluZCBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIH5zdWIgaW5cbiAgICBPZl9zZXhwX2Vycm9yLnJhaXNlIH51c2VyX2V4biB+c3ViX3NleHA6c3ViIH5sb2NhdGlvblxuICA7O1xuXG4gIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmID1cbiAgICBsZXQgcGFyc2VkX3ZhbHVlID0gU2V4cF9wYXJzZXIucGFyc2Vfc3RyaW5nX2V4biBzdHIgaW5cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+XG4gICAgICBsZXQgcG9zaXRpb25zID0gUG9zaXRpb25zX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgICAgcmVyYWlzZSBwb3NpdGlvbnMgcGFyc2VkX3ZhbHVlIGV4biB+c3ViXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZyBzdHIgZiA6IChfLCBDb252X2Vycm9yLnQpIHJlc3VsdCA9XG4gICAgbWF0Y2ggcGFyc2Vfc3RyaW5nX2V4biBzdHIgZiB3aXRoXG4gICAgfCB4IC0+IE9rIHhcbiAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIChQYXJzZV9lcnJvciBlKVxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIChPZl9zZXhwX2Vycm9yIGUpXG4gIDs7XG5cbiAgbGV0IGNvbnZfZXhuIChwYXJzZWRfdmFsdWUsIHBvc2l0aW9ucykgZiA9XG4gICAgbWF0Y2ggTW9kZS5hcHBseV9mIHBhcnNlZF92YWx1ZSB+ZiB3aXRoXG4gICAgfCB4IC0+IHhcbiAgICB8IGV4Y2VwdGlvbiBTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc3ViKSAtPiByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgY29udiB4IGYgPVxuICAgIG1hdGNoIGNvbnZfZXhuIHggZiB3aXRoXG4gICAgfCB4IC0+IE9rIHhcbiAgICB8IGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3IgZSAtPiBFcnJvciBlXG4gIDs7XG5cbiAgbGV0IGNvbnZfY29tYmluZSByZXN1bHQgZiA6IChfLCBDb252X2Vycm9yLnQpIHJlc3VsdCA9XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBPayB4IC0+XG4gICAgICAobWF0Y2ggY29udiB4IGYgd2l0aFxuICAgICAgIHwgT2sgXyBhcyByIC0+IHJcbiAgICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBDb252ID0gQ29udi5TXG5tb2R1bGUgdHlwZSBQYXJzZXIgPSBQYXJzZXIuU1xubW9kdWxlIHR5cGUgRWFnZXJfcGFyc2VyID0gUGFyc2VyLlNfZWFnZXJcblxubW9kdWxlIENvbnZfZXJyb3IgPSBDb252X2Vycm9yXG5tb2R1bGUgT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3Jcbm1vZHVsZSBPbGRfcGFyc2VyX2NvbnRfc3RhdGUgPSBPbGRfcGFyc2VyX2NvbnRfc3RhdGVcbm1vZHVsZSBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yXG5tb2R1bGUgUG9zaXRpb25zID0gUG9zaXRpb25zXG5tb2R1bGUgQ3N0ID0gQ3N0XG5tb2R1bGUgQSA9IEF1dG9tYXRvblxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3IgPSBQYXJzZV9lcnJvci5QYXJzZV9lcnJvclxuZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IgPSBPZl9zZXhwX2Vycm9yLk9mX3NleHBfZXJyb3JcblxubGV0IGNvbnN0IGMgXyA9IGNcblxubW9kdWxlIFNpbmdsZSA9ICh2YWwgUGFyc2VyLm1ha2UgU2V4cCBTaW5nbGUgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKSlcbm1vZHVsZSBNYW55ID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIE1hbnkgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSkpXG5tb2R1bGUgRWFnZXIgPSAodmFsIFBhcnNlci5tYWtlX2VhZ2VyIFNleHAgKGNvbnN0IEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKSlcblxubGV0IGFuZF9nZXRfcG9zaXRpb25zIGdldF9zZXhwIHN0YXRlIHN0YWNrID0gZ2V0X3NleHAgc3RhY2ssIEEucG9zaXRpb25zIHN0YXRlXG5cbmxldCBhbmRfcG9zaXRpb25zIG1vZGUgZ2V0X3NleHAgPVxuICBQYXJzZXIubWFrZSBTZXhwX3dpdGhfcG9zaXRpb25zIG1vZGUgKGFuZF9nZXRfcG9zaXRpb25zIGdldF9zZXhwKVxuOztcblxubW9kdWxlIFNpbmdsZV9hbmRfcG9zaXRpb25zID0gKHZhbCBhbmRfcG9zaXRpb25zIFNpbmdsZSBBdXRvbWF0b25fc3RhY2suZ2V0X3NpbmdsZSlcbm1vZHVsZSBNYW55X2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgTWFueSBBdXRvbWF0b25fc3RhY2suZ2V0X21hbnkpXG5cbm1vZHVsZSBFYWdlcl9hbmRfcG9zaXRpb25zID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlclxuICAgICAgICAgU2V4cF93aXRoX3Bvc2l0aW9uc1xuICAgICAgICAgKEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlIHw+IGFuZF9nZXRfcG9zaXRpb25zKSlcblxubGV0IGp1c3RfZ2V0X3Bvc2l0aW9ucyBzdGF0ZSAoKSA9IEEucG9zaXRpb25zIHN0YXRlXG5sZXQganVzdF9wb3NpdGlvbnMgbW9kZSA9IFBhcnNlci5tYWtlIFBvc2l0aW9ucyBtb2RlIGp1c3RfZ2V0X3Bvc2l0aW9uc1xuXG5tb2R1bGUgU2luZ2xlX2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBTaW5nbGUpXG5tb2R1bGUgTWFueV9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwganVzdF9wb3NpdGlvbnMgTWFueSlcbm1vZHVsZSBFYWdlcl9qdXN0X3Bvc2l0aW9ucyA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgUG9zaXRpb25zIGp1c3RfZ2V0X3Bvc2l0aW9ucylcblxubGV0IGNzdCBtb2RlIGYgPSBQYXJzZXIubWFrZSBDc3QgbW9kZSAoY29uc3QgZilcblxubW9kdWxlIE1hbnlfY3N0ID0gKHZhbCBjc3QgTWFueSBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2NzdCA9XG4gICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgQ3N0IChmdW4gXyBzdGFjayAtPlxuICAgICBtYXRjaCBBdXRvbWF0b25fc3RhY2suRm9yX2NzdC5nZXRfbWFueSBzdGFjayB3aXRoXG4gICAgIHwgWyBzZXhwIF0gLT4gc2V4cFxuICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcblxudHlwZSAnYSBpZCA9ICdhXG50eXBlIHNleHBfbGlzdCA9IFNleHAudCBsaXN0XG5cbm1vZHVsZSBDb252X3NpbmdsZSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2FcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnRcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX3BoeXNcbiAgICBlbmQpXG4gICAgKFNpbmdsZSlcbiAgICAoU2luZ2xlX2p1c3RfcG9zaXRpb25zKVxuXG5tb2R1bGUgQ29udl9tYW55ID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYSBsaXN0XG4gICAgICB0eXBlIHBhcnNlZF9zZXhwID0gU2V4cC50IGxpc3RcbiAgICAgIHR5cGUgY2h1bmtfdG9fY29udiA9IFNleHAudFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCB4IH5mKVxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcbiAgICBlbmQpXG4gICAgKE1hbnkpXG4gICAgKE1hbnlfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnlfYXRfb25jZSA9XG4gIENvbnYuTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcmVzID0gJ2FcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50IGxpc3RcblxuICAgICAgbGV0IGFwcGx5X2YgeCB+ZiA9IGYgeFxuICAgICAgbGV0IGZpbmQgPSBQb3NpdGlvbnMuZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcbiAgICBlbmQpXG4gICAgKE1hbnkpXG4gICAgKE1hbnlfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBBdXRvbWF0b24gPSBBdXRvbWF0b25cbiAgbW9kdWxlIEF1dG9tYXRvbl9zdGFjayA9IEF1dG9tYXRvbl9zdGFja1xuICBtb2R1bGUgQXV0b21hdG9uX3N0YXRlID0gQXV0b21hdG9uX3N0YXRlXG4gIG1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbmVuZFxuIiwiKCogZm9yIGxleGluZyBwb3NpdGlvbnM6XG4gICAtIGxudW0gc3RhcnRzIGZyb20gMVxuICAgLSBjbnVtIHN0YXJ0cyBmcm9tIDBcbiAgIC0gcG9zX2JvbCBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgbGluZVxuXG4gICBmb3IgYWJzb2x1dGUgcG9zOlxuICAgLSByb3cgc3RhcnRzIGZyb20gMVxuICAgLSBjb2wgc3RhcnRzIGZyb20gMVxuXG4gICBmb3IgcmVsYXRpdmUgcG9zLCBvYnZpb3VzbHkgMCBtZWFucyBzYW1lIHBvc2l0aW9uXG4qKVxuXG4oKiBvcGVyYXRpb25zIHRoYXQgbWFrZSBzZW5zZSBmb3IgYm90aCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcG9zaXRpb25zICopXG5tb2R1bGUgUG9zID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyByb3cgOiBpbnRcbiAgICA7IGNvbCA6IGludFxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcm93OyBjb2wgfSA9IFR5cGUuQXRvbSAoUHJpbnRmLnNwcmludGYgXCIlZDolZFwiIHJvdyBjb2wpXG4gIGxldCBhZGQgdDEgdDIgPSB7IHJvdyA9IHQxLnJvdyArIHQyLnJvdzsgY29sID0gdDEuY29sICsgdDIuY29sIH1cbiAgbGV0IHN1YiB0MSB0MiA9IHsgcm93ID0gdDEucm93IC0gdDIucm93OyBjb2wgPSB0MS5jb2wgLSB0Mi5jb2wgfVxuXG4gIGxldCBjb21wYXJlIHsgcm93ID0gcjE7IGNvbCA9IGMxIH0geyByb3cgPSByMjsgY29sID0gYzIgfSA9XG4gICAgaWYgcjEgPSByMiB0aGVuIGMxIC0gYzIgZWxzZSByMSAtIHIyXG4gIDs7XG5cbiAgbGV0IGdlcSB0MSB0MiA9IGNvbXBhcmUgdDEgdDIgPj0gMFxuZW5kXG5cbm1vZHVsZSBSZWxhdGl2ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCB6ZXJvID0geyByb3cgPSAwOyBjb2wgPSAwIH1cbmVuZFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQb3NcblxuICBsZXQgb3JpZ2luID0geyByb3cgPSAxOyBjb2wgPSAxIH1cblxuICBsZXQgb2ZfbGV4aW5nIHsgTGV4aW5nLnBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbDsgcG9zX2ZuYW1lID0gXyB9ID1cbiAgICB7IHJvdyA9IHBvc19sbnVtOyBjb2wgPSBwb3NfY251bSAtIHBvc19ib2wgKyAxIH1cbiAgOztcblxuICBsZXQgZGlmZiA9IHN1YlxuZW5kXG4iLCIoKiogVHlwZSBvZiBhbm5vdGF0ZWQgUy1leHByZXNzaW9ucyAqKVxuXG5tb2R1bGUgTGlzdCA9IHN0cnVjdFxuICBsZXQgbWFwIHQgfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGYgdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoUG9zIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAoKiogSW4gW0F0b20gKF8sIHMsIG9wdCldLCBbc10gaXMgdGhlIHVuZXNjYXBlZCBzdHJpbmcsIHRoYXQgaXMgdGhlIGFyZ3VtZW50IG9mXG4gICAgICAgIFtUeXBlLkF0b21dLiBXaGVuIFtvcHRdIGlzIGRlZmluZWQsIGl0IGlzIHRoZSBzb3VyY2Ugc3ludGF4IG9mIFtzXSwgdGhhdCBpcyBhXG4gICAgICAgIHN0cmluZyB0aGF0IGNhbiBiZSBwcmludGVkIGFzIGlzIGlmIG9uZSB3YW50cyB0byBwYXJzZSBhbmQgcHJpbnQgcHJlc2VydmluZ1xuICAgICAgICBzeW50YXguIFRoaXMgaXMgdXN1YWxseSBzZXQgZm9yIHF1b3RlZCBhdG9tcyAodG8gcHJlc2VydmUgdGhlIGZhY3QgdGhhdCB3ZXJlXG4gICAgICAgIHF1b3RlZCksIGJ1dCBpdCBjYW4gYmUgdXNlZnVsIHRvIGRvIHRoZSByZXZlcnNlOiBzZXQgaXQgZm9yIGF0b21zIHRoYXQgY2FuIGJlXG4gICAgICAgIHBhcnNlZCB1bnF1b3RlZCBidXQgd291bGQgYmUgcHJpbnRlZCB3aXRoIHF1b3RlcywgdG8gcHJlc2VydmUgdGhlIGxhY2sgb2YgcXVvdGVzLlxuICAgICAgICBGb3IgaW5zdGFuY2U6XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBOb25lKSBzaG91bGQgYmUgcHJpbnRlZCB7fGF8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBOb25lKSBzaG91bGQgYmUgcHJpbnRlZCB7fFwiYSBiXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImFcIiwgU29tZSBcIlxcXCJhXFxcIlwiKSBzaG91bGQgYmUgcHJpbnRlZCB7fFwiYVwifH1cbiAgICAgICAgQXRvbSAoXywgXCJhIGJcIiwgU29tZSBcImEgYlwiKSBzaG91bGQgYmUgcHJpbnRlZCB7fGEgYnx9IG9yIG1heSByYWlzZSwgYXMgaXQgaXNcbiAgICAgICAgYW4gZXJyb3IgdG8gY29uc3RydWN0ZWQgc3VjaCBhbiBhdG9tIChkb2Vzbid0IHBhcnNlIGJhY2spICopXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXRvbSBvZiBQb3MudCAqIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAgIHwgTGlzdCBvZiBQb3MudCAqIHRfb3JfY29tbWVudCBsaXN0ICogUG9zLnRcblxuICAgICgqIHBvc2l0aW9ucyBvZiBsZWZ0IGFuZCByaWdodCBwYXJlbnMgKilcbiAgICBhbmQgdF9vcl9jb21tZW50ID1cbiAgICAgIHwgU2V4cCBvZiB0XG4gICAgICB8IENvbW1lbnQgb2YgY29tbWVudFxuXG4gICAgYW5kIGNvbW1lbnQgPVxuICAgICAgfCBQbGFpbl9jb21tZW50IG9mIFBvcy50ICogc3RyaW5nXG4gICAgICB8IFNleHBfY29tbWVudCBvZiBQb3MudCAqIGNvbW1lbnQgbGlzdCAqIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gVHlwZS50XG4gICAgdmFsIHNleHBfb2ZfY29tbWVudCA6IGNvbW1lbnQgLT4gVHlwZS50XG4gICAgdmFsIHNleHBfb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmRcblxuICBtb2R1bGUgVG9fc2V4cCA6IHNpZ1xuICAgIHZhbCBvZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfY29tbWVudCA6IGNvbW1lbnQgLT4gVHlwZS50XG4gICAgdmFsIG9mX3Rfb3JfY29tbWVudCA6IHRfb3JfY29tbWVudCAtPiBUeXBlLnRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogbWF5YmUgd2UgY2FuIGFjdHVhbGx5IHVzZSBjb252IGhlcmUsIGluc3RlYWQgb2YgaW5saW5pbmcgaXQgKilcblxuICAgIGxldCBvZl9wb3MgPSBQb3Muc2V4cF9vZl90XG4gICAgbGV0IG9mX3N0cmluZyB4ID0gVHlwZS5BdG9tIHhcbiAgICBsZXQgb2ZfbGlzdCBvZl9hIHhzID0gVHlwZS5MaXN0IChMaXN0Lm1hcCB+ZjpvZl9hIHhzKVxuXG4gICAgbGV0IG9mX29wdGlvbiBvZl9hID0gZnVuY3Rpb25cbiAgICAgIHwgU29tZSB4IC0+IFR5cGUuTGlzdCBbIG9mX2EgeCBdXG4gICAgICB8IE5vbmUgLT4gVHlwZS5MaXN0IFtdXG4gICAgOztcblxuICAgIGxldCByZWMgb2ZfdCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkF0b21cIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjI7IG9mX29wdGlvbiBvZl9zdHJpbmcgdjMgXVxuICAgICAgfCBMaXN0ICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJMaXN0XCI7IG9mX3BvcyB2MTsgb2ZfbGlzdCBvZl90X29yX2NvbW1lbnQgdjI7IG9mX3BvcyB2MyBdXG5cbiAgICBhbmQgb2ZfdF9vcl9jb21tZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgU2V4cCB0IC0+IFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBcIjsgb2ZfdCB0IF1cbiAgICAgIHwgQ29tbWVudCBjIC0+IFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkNvbW1lbnRcIjsgb2ZfY29tbWVudCBjIF1cblxuICAgIGFuZCBvZl9jb21tZW50ID0gZnVuY3Rpb25cbiAgICAgIHwgUGxhaW5fY29tbWVudCAodjEsIHYyKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJQbGFpbl9jb21tZW50XCI7IG9mX3BvcyB2MTsgb2Zfc3RyaW5nIHYyIF1cbiAgICAgIHwgU2V4cF9jb21tZW50ICh2MSwgdjIsIHYzKSAtPlxuICAgICAgICBUeXBlLkxpc3QgWyBUeXBlLkF0b20gXCJTZXhwX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX2NvbW1lbnQgdjI7IG9mX3QgdjMgXVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3QgPSBUb19zZXhwLm9mX3RcbiAgbGV0IHNleHBfb2ZfY29tbWVudCA9IFRvX3NleHAub2ZfY29tbWVudFxuICBsZXQgc2V4cF9vZl90X29yX2NvbW1lbnQgPSBUb19zZXhwLm9mX3Rfb3JfY29tbWVudFxuZW5kXG5cbmluY2x1ZGUgTWFrZSAoU3JjX3Bvcy5SZWxhdGl2ZSlcbm1vZHVsZSBQYXJzZWQgPSBNYWtlIChTcmNfcG9zLkFic29sdXRlKVxuXG5sZXQgcmVsYXRpdml6ZSA9XG4gIGxldCByZWwgfm91dGVyX3AgcCA9IFNyY19wb3MuQWJzb2x1dGUuZGlmZiBwIG91dGVyX3AgaW5cbiAgbGV0IHJlYyBhdXhfdCB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuQXRvbSAocG9zLCBzLCBzb3B0KSAtPiBBdG9tIChyZWwgcG9zIH5vdXRlcl9wLCBzLCBzb3B0KVxuICAgIHwgUGFyc2VkLkxpc3QgKHN0YXJ0X3BvcywgdG9jcywgZW5kX3BvcykgLT5cbiAgICAgIExpc3RcbiAgICAgICAgKCByZWwgc3RhcnRfcG9zIH5vdXRlcl9wXG4gICAgICAgICwgTGlzdC5tYXAgdG9jcyB+ZjooZnVuIHRvYyAtPiBhdXhfdG9jIH5vdXRlcl9wOnN0YXJ0X3BvcyB0b2MpXG4gICAgICAgICwgcmVsIGVuZF9wb3Mgfm91dGVyX3AgKVxuICBhbmQgYXV4X3RvYyB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuU2V4cCB0IC0+IFNleHAgKGF1eF90IHQgfm91dGVyX3ApXG4gICAgfCBQYXJzZWQuQ29tbWVudCBjIC0+IENvbW1lbnQgKGF1eF9jIGMgfm91dGVyX3ApXG4gIGFuZCBhdXhfYyB+b3V0ZXJfcCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJzZWQuUGxhaW5fY29tbWVudCAocG9zLCB0eHQpIC0+IFBsYWluX2NvbW1lbnQgKHJlbCBwb3Mgfm91dGVyX3AsIHR4dClcbiAgICB8IFBhcnNlZC5TZXhwX2NvbW1lbnQgKHBvcywgY3MsIHQpIC0+XG4gICAgICBTZXhwX2NvbW1lbnRcbiAgICAgICAgKHJlbCBwb3Mgfm91dGVyX3AsIExpc3QubWFwIGNzIH5mOihmdW4gYyAtPiBhdXhfYyB+b3V0ZXJfcCBjKSwgYXV4X3QgdCB+b3V0ZXJfcClcbiAgaW5cbiAgZnVuIHRvYyAtPiBhdXhfdG9jIHRvYyB+b3V0ZXJfcDpTcmNfcG9zLkFic29sdXRlLm9yaWdpblxuOztcbiIsInR5cGUgdG9rZW4gPVxuICB8IFNUUklORyBvZiAoXG4jIDE1IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICBzdHJpbmdcbiMgNiBcInNyYy9wYXJzZXIubWxcIlxuKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmdcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAyIFwic3JjL3BhcnNlci5tbHlcIlxuICAoKiBQYXJzZXI6IEdyYW1tYXIgU3BlY2lmaWNhdGlvbiBmb3IgUGFyc2luZyBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuIyAyNyBcInNyYy9wYXJzZXIubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgMjU4ICgqIExQQVJFTiAqKTtcbiAgMjU5ICgqIFJQQVJFTiAqKTtcbiAgICAwICgqIEVPRiAqKTtcbiAgMjYwICgqIEhBU0hfU0VNSSAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMjU3ICgqIFNUUklORyAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDZcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAyM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwOVxcMDAwXFwwMTNcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDExXFwwMDBcXDAyMlxcMDAwXFwwMjVcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyNlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcMDEwXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEyXFwwMDBcXDAyMVxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcIlxuXG5sZXQgeXlkZ290byA9IFwiXFwwMDVcXDAwMFxcXG5cXDAxMFxcMDAwXFwwMTVcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMTFcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMTNcXDAwMFwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwNDBcXDAwMFxcXG5cXDAzNFxcMjU1XFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAxMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNThcXDI1NVxcXG5cXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDM0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwyNTVcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDI5XFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyODZcbmxldCB5eXRhYmxlID0gXCJcXDAxNlxcMDAwXFxcblxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDI1XFwwMDBcXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDI5XFwwMDBcXDAyN1xcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcMDM5XFwwMDBcXDAyMlxcMDAwXFxcblxcMDIyXFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAyMlxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFxcblxcMDMxXFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAyNlxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA4XFwwMDBcXDAzOFxcMDAwXFwwMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwOFxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMDI4XFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwOFxcMDAwXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDAxMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAyMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFxcblxcMDI4XFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBMUEFSRU5cXDAwMFxcXG4gIFJQQVJFTlxcMDAwXFxcbiAgRU9GXFwwMDBcXFxuICBIQVNIX1NFTUlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBTVFJJTkdcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMTc0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAxODEgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAoIFR5cGUuQXRvbSBfMSApXG4jIDE4OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFR5cGUuTGlzdCBbXSApXG4jIDE5NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFR5cGUuTGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjAxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAoIHBhcnNlX2ZhaWx1cmUgXCJzZXhwXCIgKVxuIyAyMDcgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0MiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjE0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjIyIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAoICgpIClcbiMgMjI5IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2NvbW1lbnRzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIzNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUwIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIF8xIClcbiMgMjQ0IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTEgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMiApXG4jIDI1MiBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1MiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMjU4IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzZXhwX2NvbW1lbnRzKSBpblxuICAgIE9iai5yZXByKFxuIyA1MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUgKVxuIyAyNjUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMjcyIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCBbXSApXG4jIDI3OSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiA6OiBfMSApXG4jIDI4NyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyOTUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2MiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMzAyIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMwOCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzMTUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzIxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbigqIEVudHJ5IHNleHAgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cF9vcHQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudClcbmxldCBzZXhwX29wdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogVHlwZS50IG9wdGlvbilcbmxldCBzZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG5sZXQgcmV2X3NleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlLnQgbGlzdClcbiIsInR5cGUgdG9rZW4gPVxuICB8IFNUUklORyBvZiAoXG4jIDUzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb25cbiMgNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuKVxuICB8IENPTU1FTlQgb2YgKFxuIyA1NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvblxuIyAxMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmdcbmxldCBfID0gcGFyc2VfZXJyb3I7O1xuIyAyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAoKiBQYXJzZXI6IEdyYW1tYXIgU3BlY2lmaWNhdGlvbiBmb3IgUGFyc2luZyBTLWV4cHJlc3Npb25zICopXG4gICgqIGNvbXBhcmUgdG8gcGFyc2VyLm1seSAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiAgbW9kdWxlIFdpdGhfcG9zID0gc3RydWN0XG5cbiAgICBvcGVuIFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkXG5cbiAgICBsZXQgY29lcmNlID0gU3JjX3Bvcy5BYnNvbHV0ZS5vZl9sZXhpbmdcblxuICAgIGxldCBzdGFydF9wb3MgKCkgPSBjb2VyY2UgKFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSlcblxuICAgIGxldCBlbmRfcG9zICgpID1cbiAgICAgIGxldCBwID0gUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSBpblxuICAgICAgY29lcmNlIHsgcCB3aXRoIExleGluZy5wb3NfY251bSA9IHAuTGV4aW5nLnBvc19jbnVtIC0gMSB9XG5cbiAgICBsZXQgYXRvbSAoeCwgeSkgPVxuICAgICAgbGV0IChwb3MsIHkpID1cbiAgICAgICAgbWF0Y2ggeSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoc3RhcnRfcG9zICgpLCBTb21lIHgpXG4gICAgICAgIHwgU29tZSAocG9zLCB4KSAtPiAoY29lcmNlIHBvcywgU29tZSB4KVxuICAgICAgaW5cbiAgICAgIEF0b20gKHBvcywgeCwgeSlcblxuICAgIGxldCBsaXN0IHRzID0gTGlzdCAoc3RhcnRfcG9zICgpLCB0cywgZW5kX3BvcyAoKSlcblxuICAgIGxldCBzZXhwICAgIHggPSBTZXhwICAgIHhcbiAgICBsZXQgY29tbWVudCB4ID0gQ29tbWVudCB4XG5cbiAgICBsZXQgc2V4cF9jb21tZW50IGNzIHQgPSBTZXhwX2NvbW1lbnQgKHN0YXJ0X3BvcyAoKSwgY3MsIHQpXG5cbiAgICBsZXQgcGxhaW5fY29tbWVudCAoeCwgcG9zX29wdCkgPVxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIG1hdGNoIHBvc19vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhcnRfcG9zICgpXG4gICAgICAgIHwgU29tZSBwb3MgLT4gY29lcmNlIHBvc1xuICAgICAgaW5cbiAgICAgIFBsYWluX2NvbW1lbnQgKHBvcywgeClcblxuICBlbmRcblxuIyA3MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgMjU5ICgqIExQQVJFTiAqKTtcbiAgMjYwICgqIFJQQVJFTiAqKTtcbiAgICAwICgqIEVPRiAqKTtcbiAgMjYxICgqIEhBU0hfU0VNSSAqKTtcbiAgICAwfF1cblxubGV0IHl5dHJhbnNsX2Jsb2NrID0gW3xcbiAgMjU3ICgqIFNUUklORyAqKTtcbiAgMjU4ICgqIENPTU1FTlQgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG5cXDAxMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMTBcXDAwMFxcMDA2XFwwMDBcXDAyMlxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMlxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxM1xcMDAwXFwwMjNcXDAwMFxcMDIwXFwwMDBcXDAxNVxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxNlxcMDAwXFwwMjFcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMTdcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNlxcMDAwXFxcblxcMDIwXFwwMDBcXDAxOFxcMDAwXFwwMjFcXDAwMFxcMDIzXFwwMDBcXDAyNlxcMDAwXFwwMTNcXDAwMFxcMDI0XFwwMDBcXDAxNFxcMDAwXFxcblxcMDI5XFwwMDBcXDAxNVxcMDAwXFwwMjJcXDAwMFwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwMzdcXDAwMFxcXG5cXDAwOVxcMjU1XFwwMDFcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMjU1XFwwMDlcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI3XFwyNTVcXDI1MVxcMjU1XFwyMzVcXDI1NVxcXG5cXDAwMFxcMDAwXFwyMzRcXDI1NVxcMDEwXFwwMDBcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSAyOTJcbmxldCB5eXRhYmxlID0gXCJcXDAzNlxcMDAwXFxcblxcMDE2XFwwMDBcXDAzM1xcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAyOFxcMDAwXFwwMzNcXDAwMFxcMDE5XFwwMDBcXDAzN1xcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAyNVxcMDAwXFwwMTFcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFxcblxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDBcXDAwN1xcMDAwXFxcblxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDM1XFwwMDBcXDAxMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFxcblxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMjlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMTBcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDFcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjdcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXCJcblxubGV0IHl5bmFtZXNfY29uc3QgPSBcIlxcXG4gIExQQVJFTlxcMDAwXFxcbiAgUlBBUkVOXFwwMDBcXFxuICBFT0ZcXDAwMFxcXG4gIEhBU0hfU0VNSVxcMDAwXFxcbiAgXCJcblxubGV0IHl5bmFtZXNfYmxvY2sgPSBcIlxcXG4gIFNUUklOR1xcMDAwXFxcbiAgQ09NTUVOVFxcMDAwXFxcbiAgXCJcblxubGV0IHl5YWN0ID0gW3xcbiAgKGZ1biBfIC0+IGZhaWx3aXRoIFwicGFyc2VyXCIpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogKExleGluZy5wb3NpdGlvbiAqIHN0cmluZykgb3B0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgKCBXaXRoX3Bvcy5hdG9tIF8xIClcbiMgMjIyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmxpc3QgKExpc3QucmV2IF8yKSApXG4jIDIyOSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDc3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICggcGFyc2VfZmFpbHVyZSBcInNleHBcIiApXG4jIDIzNSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZyAqIExleGluZy5wb3NpdGlvbiBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDgwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgKCBXaXRoX3Bvcy5wbGFpbl9jb21tZW50IF8xIClcbiMgMjQyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9jb21tZW50c19hYnMpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwX2NvbW1lbnQgKExpc3QucmV2IF8yKSBfMyApXG4jIDI1MCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29tbWVudF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDg0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBbXSApXG4jIDI1NiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X2NvbW1lbnRzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9jb21tZW50c19hYnMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODUgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjY0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3Muc2V4cCBfMSApXG4jIDI3MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5jb21tZW50IF8xIClcbiMgMjc4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgOTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgKCBbXSApXG4jIDI4NCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMjkyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICggVHlwZV93aXRoX2xheW91dC5yZWxhdGl2aXplIF8xIClcbiMgMjk5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgOTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAoIFNvbWUgXzEgKVxuIyAzMDYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDMxMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAoIFtfMV0gKVxuIyAzMTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIF8yIDo6IF8xIClcbiMgMzI3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTA3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMzQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTA4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAoIFtdIClcbiMgMzQwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBMaXN0LnJldiBfMSApXG4jIDM0NyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzNTMgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hYnMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzYwIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQuUGFyc2VkLnRfb3JfY29tbWVudCBsaXN0KSlcbigqIEVudHJ5IHNleHAgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cF9vcHQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc2V4cHNfYWJzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudClcbmxldCBzZXhwX29wdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgb3B0aW9uKVxubGV0IHNleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KVxubGV0IHNleHBzX2FicyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgcmV2X3NleHBzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA1IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KVxuIiwiIyAxIFwic3JjL2xleGVyLm1sbFwiXG4gXG4gICgqKiBMZXhlcjogTGV4ZXIgU3BlY2lmaWNhdGlvbiBmb3IgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IGNoYXJfZm9yX2JhY2tzbGFzaCA9IGZ1bmN0aW9uXG4gICAgfCAnbicgLT4gJ1xcMDEwJ1xuICAgIHwgJ3InIC0+ICdcXDAxMydcbiAgICB8ICdiJyAtPiAnXFwwMDgnXG4gICAgfCAndCcgLT4gJ1xcMDA5J1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IGxmID0gJ1xcMDEwJ1xuXG4gIGxldCBkZWNfY29kZSBjMSBjMiBjMyA9XG4gICAgMTAwICogKENoYXIuY29kZSBjMSAtIDQ4KSArIDEwICogKENoYXIuY29kZSBjMiAtIDQ4KSArIChDaGFyLmNvZGUgYzMgLSA0OClcblxuICBsZXQgaGV4X2NvZGUgYzEgYzIgPVxuICAgIGxldCBkMSA9IENoYXIuY29kZSBjMSBpblxuICAgIGxldCB2YWwxID1cbiAgICAgIGlmIGQxID49IDk3IHRoZW4gZDEgLSA4N1xuICAgICAgZWxzZSBpZiBkMSA+PSA2NSB0aGVuIGQxIC0gNTVcbiAgICAgIGVsc2UgZDEgLSA0OCBpblxuICAgIGxldCBkMiA9IENoYXIuY29kZSBjMiBpblxuICAgIGxldCB2YWwyID1cbiAgICAgIGlmIGQyID49IDk3IHRoZW4gZDIgLSA4N1xuICAgICAgZWxzZSBpZiBkMiA+PSA2NSB0aGVuIGQyIC0gNTVcbiAgICAgIGVsc2UgZDIgLSA0OCBpblxuICAgIHZhbDEgKiAxNiArIHZhbDJcblxuICBsZXQgZm91bmRfbmV3bGluZSBsZXhidWYgZGlmZiA9XG4gICAgbGV0IGxleF9jdXJyX3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7XG4gICAgICAgIGxleF9jdXJyX3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxleF9jdXJyX3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGV4X2N1cnJfcC5wb3NfY251bSAtIGRpZmY7XG4gICAgICB9XG5cbiAgKCogc2FtZSBsZW5ndGggY29tcHV0YXRpb24gYXMgaW4gW0xleGluZy5sZXhlbWVdICopXG4gIGxldCBsZXhlbWVfbGVuIHsgbGV4X3N0YXJ0X3BvczsgbGV4X2N1cnJfcG9zOyBfIH0gPSBsZXhfY3Vycl9wb3MgLSBsZXhfc3RhcnRfcG9zXG5cbiAgbGV0IG1haW5fZmFpbHVyZSBsZXhidWYgbXNnID1cbiAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgIGxldCBtc2cgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIlNleHBsaWIuTGV4ZXIubWFpbjogJXMgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgbXNnIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICAgICAgdmFsIGFkZF9jaGFyIDogdCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfc3ViYnl0ZXMgOiB0IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9sZXhlbWUgOiB0IC0+IGxleGJ1ZiAtPiB1bml0XG4gICAgICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgICAgIHZhbCBvZl9idWZmZXIgOiBCdWZmZXIudCAtPiB0XG4gICAgZW5kXG4gICAgbW9kdWxlIFRva2VuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBscGFyZW4gOiB0XG4gICAgICB2YWwgcnBhcmVuIDogdFxuICAgICAgdmFsIGVvZiA6IHRcbiAgICAgIHZhbCBzaW1wbGVfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgIHZhbCBoYXNoX3NlbWkgOiB0XG4gICAgICB2YWwgcXVvdGVkX3N0cmluZyA6IExleGluZy5wb3NpdGlvbiAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IHRcbiAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICB2YWwgY29tbWVudCA6IHN0cmluZyAtPiBtYWluOnMgLT4gc1xuICAgICAgdmFsIGJsb2NrX2NvbW1lbnQgOiBMZXhpbmcucG9zaXRpb24gLT4gbWFpbjpzIC0+IHNcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBUKSA6IHNpZ1xuICAgIHZhbCBtYWluIDogP2J1ZjpCdWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IFguVG9rZW4udFxuICBlbmQgPSBzdHJ1Y3QgKCogQkVHSU4gRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcbiAgICBvcGVuIFhcblxuIyA4NCBcInNyYy9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNDRcXDI1NVxcMDEwXFwwMDBcXDA0M1xcMDAwXFwwNTNcXDAwMFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDg2XFwwMDBcXDI0OFxcMjU1XFwyNDlcXDI1NVxcMDk2XFwwMDBcXFxuICAgIFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNzJcXDAwMFxcMTgyXFwwMDBcXDIyMFxcMDAwXFwyMzBcXDAwMFxcMDA3XFwwMDFcXDI0N1xcMjU1XFxcbiAgICBcXDAxN1xcMDAxXFwwNTBcXDAwMVxcMDYwXFwwMDFcXDA5M1xcMDAxXFwxMDNcXDAwMVxcMTM2XFwwMDFcXDE0NlxcMDAxXFwxODFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMjI0XFwwMDFcXDIzNFxcMDAxXFwwMTFcXDAwMlxcMDM3XFwwMDBcXDI0NlxcMjU1XFwwODBcXDAwMFxcMjQ4XFwyNTVcXFxuICAgIFxcMDIzXFwwMDJcXDI1NVxcMjU1XFwyNDlcXDI1NVxcMDU3XFwwMDJcXDAzM1xcMDAyXFwyNTJcXDI1NVxcMDA3XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwxMTJcXDAwMlxcMjUxXFwyNTVcXDE0NFxcMDAyXFwyNTBcXDI1NVxcMDgxXFwwMDBcXDI1MFxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwxMjJcXDAwMFxcMjU1XFwyNTVcXDE2NlxcMDAwXFwxMzBcXDAwMVxcMjUyXFwyNTVcXDI1MVxcMjU1XFwxNzNcXDAwMVxcMjUxXFwwMDFcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDE3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNVxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwNDZcXDAwMFxcMDA5XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAzNlxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcMDM4XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwNTNcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMTdcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzhcXDAwMFxcMDUzXFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDE3XFwwMDBcXDA1OVxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMjU1XFwyNTVcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMTlcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAyOVxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMjVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIG1haW4gYnVmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgKCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICAgICAgICAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNzAgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA5NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAoIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgOTggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuIyAzODEgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5jb21tZW50IHRleHQgfm1haW4gYnVmIGxleGJ1ZiApXG4jIDM4NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ubHBhcmVuIClcbiMgMzkwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgMTAwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ucnBhcmVuIClcbiMgMzk1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbiMgMTAyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHBvcyBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5xdW90ZWRfc3RyaW5nIHBvcyBidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICB0b2tcbiAgICAgIClcbiMgNDA3IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgMTEwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAoIFRva2VuLmhhc2hfc2VtaSApXG4jIDQxMiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDExMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgcG9zID0gTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fYmxvY2tfY29tbWVudCBidWYgW3Bvc10gbGV4YnVmO1xuICAgICAgICBsZXQgdG9rID0gVG9rZW4uYmxvY2tfY29tbWVudCBwb3Mgfm1haW4gYnVmIGxleGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MjQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxuIyAxMjAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggbWFpbl9mYWlsdXJlIGxleGJ1ZiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIiApXG4jIDQyOSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDEyNiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiY29tbWVudCB0b2tlbnMgaW4gdW5xdW90ZWQgYXRvbVwiIClcbiMgNDM0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEwIC0+XG5sZXRcbiMgMTI3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0clxuIyA0NDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5zaW1wbGVfc3RyaW5nIHN0ciApXG4jIDQ0NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxMSAtPlxuIyAxMjggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5lb2YgKVxuIyA0NDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIDM2XG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEzMSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjsgKCkgKVxuIyA0NjEgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxMzMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IGxlbiA9IGxleGVtZV9sZW4gbGV4YnVmIC0gMiBpblxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0NzEgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxNDAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IGxlbiA9IGxleGVtZV9sZW4gbGV4YnVmIC0gMyBpblxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiBsZW47XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA0ODEgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDE0NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgNDg3IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGluXG4jIDE0NyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ5NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG5sZXRcbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgYzFcbiMgNTAxIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMlxuIyA1MDYgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuIyAxNTIgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNcbiMgNTExIFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE1MyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGRlY19jb2RlIGMxIGMyIGMzIGluXG4gICAgICAgIGlmIHYgPiAyNTUgdGhlbiAoXG4gICAgICAgICAgbGV0IHsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtOyBwb3NfZm5hbWUgPSBfIH0gPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogXFxcbiAgICAgICAgICAgICAgIGlsbGVnYWwgZXNjYXBlIGF0IGxpbmUgJWQgY2hhciAlZDogYFxcXFwlYyVjJWMnXCJcbiAgICAgICAgICAgICAgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbCAtIDMpXG4gICAgICAgICAgICAgIGMxIGMyIGMzIGluXG4gICAgICAgICAgZmFpbHdpdGggbXNnKTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2NoYXIgYnVmIChDaGFyLmNociB2KTtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDUyOSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG5sZXRcbiMgMTY4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMxXG4jIDUzNSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDU0MCBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKSBpblxuIyAxNjkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHYgPSBoZXhfY29kZSBjMSBjMiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTQ5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAxNzUgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGNcbiMgNTU1IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGluXG4jIDE3NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgYztcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU2NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA3IC0+XG4jIDE4MyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgbGY7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NzQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgOCAtPlxuIyAxOTAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IG9mcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gb2ZzIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgb2ZzIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU4NSBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA5IC0+XG4jIDE5OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmcgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgIHN0YXJ0LnBvc19sbnVtIChzdGFydC5wb3NfY251bSAtIHN0YXJ0LnBvc19ib2wpXG4gICAgICAgIGluXG4gICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA1OTcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiA1M1xuYW5kIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyMDkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwOyBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjEwIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMjEyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZiApXG4jIDYxNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDIxNSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICAgIGxldCBzdGFydCA9IHsgY3VyIHdpdGggcG9zX2NudW0gPSBjdXIucG9zX2NudW0gLSAxIH0gaW5cbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBsb2NzIGxleGJ1ZlxuICAgICAgKVxuIyA2MjcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAyMjMgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAoXG4gICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICBsZXQgY3VyID0gbGV4ZW1lX2VuZF9wIGxleGJ1ZiBpblxuICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDIgfSBpblxuICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiAoc3RhcnQgOjogbG9jcykgbGV4YnVmXG4gICAgKVxuIyA2MzcgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAyMzAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbX10gLT4gKCkgKCogdGhlIGNvbW1lbnQgaXMgZmluaXNoZWQgKilcbiAgICAgICAgfCBfIDo6IChfIDo6IF8gYXMgdCkgLT4gc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiB0IGxleGJ1ZlxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZSAgKCogaW1wb3NzaWJsZSAqKVxuICAgICAgKVxuIyA2NDggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAyMzggXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggbG9jcyB3aXRoXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA6OiBfIC0+XG4gICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgc3ByaW50ZiBcIlNleHBsaWIuTGV4ZXIuc2Nhbl9ibG9ja19jb21tZW50OiBcXFxuICAgICAgICAgICAgICAgIHVudGVybWluYXRlZCBibG9jayBjb21tZW50IGF0IGxpbmUgJWQgY2hhciAlZFwiXG4gICAgICAgICAgICAgICAgcG9zX2xudW0gKHBvc19jbnVtIC0gcG9zX2JvbClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmYWlsd2l0aCBtc2dcbiAgICAgIClcbiMgNjYzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAyNTAgXCJzcmMvbGV4ZXIubWxsXCJcbiAgKCogUkVTVU1FIEZVTkNUT1IgQk9EWSBDT05UQUlOSU5HIEdFTkVSQVRFRCBDT0RFICopXG5cbiAgICBsZXQgbWFpbiA/YnVmID1cbiAgICAgIGxldCBidWYgPVxuICAgICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gUXVvdGVkX3N0cmluZ19idWZmZXIuY3JlYXRlIDY0XG4gICAgICAgIHwgU29tZSBidWYgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLm9mX2J1ZmZlciBidWZcbiAgICAgIGluXG4gICAgICBtYWluIGJ1ZlxuXG4gIGVuZCAoKiBFTkQgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICBtb2R1bGUgVmFuaWxsYSA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBCdWZmZXJcbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgXyBfID0gKClcbiAgICAgICAgbGV0IG9mX2J1ZmZlciBiID0gYlxuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HIHhcbiAgICAgICAgbGV0IHF1b3RlZF9zdHJpbmcgXyBidWYgPSBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBidWYpXG4gICAgICAgIGxldCBibG9ja19jb21tZW50IF9wb3Mgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmXG4gICAgICAgIGxldCBjb21tZW50IF90ZXh0IH5tYWluIGJ1ZiBsZXhidWYgPVxuICAgICAgICAgIG1haW4gYnVmIGxleGJ1ZiAoKiBza2lwIGFuZCBjb250aW51ZSBsZXhpbmcgKilcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBtb2R1bGUgV2l0aF9sYXlvdXQgPVxuICAgIE1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHtcbiAgICAgICAgICBjb250ZW50cyA6IEJ1ZmZlci50O1xuICAgICAgICAgIGxleGVtZSA6IEJ1ZmZlci50O1xuICAgICAgICB9XG4gICAgICAgIGxldCBjcmVhdGUgbiA9IHtjb250ZW50cyA9IEJ1ZmZlci5jcmVhdGUgbjsgbGV4ZW1lID0gQnVmZmVyLmNyZWF0ZSBufVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGNvbnRlbnRzID0geyBjb250ZW50czsgbGV4ZW1lID0gQnVmZmVyLmNyZWF0ZSA2NCB9XG4gICAgICAgIGxldCBhZGRfY2hhciB0IGNoID0gQnVmZmVyLmFkZF9jaGFyIHQuY29udGVudHMgY2hcbiAgICAgICAgbGV0IGFkZF9zdWJieXRlcyB0IHN0ciBvZnMgbGVuID0gQnVmZmVyLmFkZF9zdWJieXRlcyB0LmNvbnRlbnRzIHN0ciBvZnMgbGVuXG4gICAgICAgIGxldCBhZGRfbGV4ZW1lIHQgbGV4YnVmID0gQnVmZmVyLmFkZF9zdHJpbmcgdC5sZXhlbWUgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICBsZXQgY2xlYXIgdCA9IEJ1ZmZlci5jbGVhciB0LmxleGVtZTsgQnVmZmVyLmNsZWFyIHQuY29udGVudHNcbiAgICAgIGVuZFxuICAgICAgbW9kdWxlIFRva2VuID0gc3RydWN0XG4gICAgICAgIG9wZW4gUGFyc2VyX3dpdGhfbGF5b3V0XG4gICAgICAgIHR5cGUgdCA9IHRva2VuXG4gICAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICAgIGxldCBlb2YgPSBFT0ZcbiAgICAgICAgbGV0IGxwYXJlbiA9IExQQVJFTlxuICAgICAgICBsZXQgcnBhcmVuID0gUlBBUkVOXG4gICAgICAgIGxldCBoYXNoX3NlbWkgPSBIQVNIX1NFTUlcbiAgICAgICAgbGV0IHNpbXBsZV9zdHJpbmcgeCA9IFNUUklORyAoeCwgTm9uZSlcbiAgICAgICAgbGV0IHF1b3RlZF9zdHJpbmcgcG9zIHtRdW90ZWRfc3RyaW5nX2J1ZmZlci5jb250ZW50czsgbGV4ZW1lfSA9XG4gICAgICAgICAgU1RSSU5HIChCdWZmZXIuY29udGVudHMgY29udGVudHMsIFNvbWUgKHBvcywgQnVmZmVyLmNvbnRlbnRzIGxleGVtZSkpXG4gICAgICAgIGxldCBibG9ja19jb21tZW50IHBvcyB+bWFpbjpfIHtRdW90ZWRfc3RyaW5nX2J1ZmZlci5jb250ZW50cyA9IF87IGxleGVtZX0gX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAoQnVmZmVyLmNvbnRlbnRzIGxleGVtZSwgU29tZSBwb3MpXG4gICAgICAgIGxldCBjb21tZW50IHRleHQgfm1haW46XyBfYnVmIF9sZXhidWYgPVxuICAgICAgICAgIENPTU1FTlQgKHRleHQsIE5vbmUpXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgbGV0IG1haW4gPSBWYW5pbGxhLm1haW5cbiAgbGV0IG1haW5fd2l0aF9sYXlvdXQgPSBXaXRoX2xheW91dC5tYWluXG5cblxuIyA3NDUgXCJzcmMvbGV4ZXIubWxcIlxuIiwiKCogU2V4cDogTW9kdWxlIGZvciBoYW5kbGluZyBTLWV4cHJlc3Npb25zIChJL08sIGV0Yy4pICopXG5cbm9wZW4gRm9ybWF0XG5vcGVuIEJpZ2FycmF5XG5tb2R1bGUgU2V4cGxpYiA9IFNleHBsaWIwXG5tb2R1bGUgQ29udiA9IFNleHBsaWIuU2V4cF9jb252XG5cbigqIGNvbnYubWwgZGVwZW5kcyBvbiB1cyBzbyB3ZSBjYW4gb25seSB1c2UgdGhpcyBtb2R1bGUgKilcblxuaW5jbHVkZSBUeXBlXG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgUHJpdmF0ZVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcblxuKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gSS9PLWNoYW5uZWxzICopXG5cbmxldCB3aXRoX25ld19idWZmZXIgb2MgZiA9XG4gIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgZiBidWY7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIGJ1ZlxuOztcblxubGV0IG91dHB1dF9odW0gb2Mgc2V4cCA9IHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfaHVtIHNleHAgfmJ1ZilcblxubGV0IG91dHB1dF9odW1faW5kZW50IGluZGVudCBvYyBzZXhwID1cbiAgd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gfmluZGVudCBzZXhwIH5idWYpXG47O1xuXG5sZXQgb3V0cHV0X21hY2ggb2Mgc2V4cCA9IHdpdGhfbmV3X2J1ZmZlciBvYyAoZnVuIGJ1ZiAtPiB0b19idWZmZXJfbWFjaCBzZXhwIH5idWYpXG5sZXQgb3V0cHV0ID0gb3V0cHV0X21hY2hcblxuKCogT3V0cHV0IG9mIFMtZXhwcmVzc2lvbnMgdG8gZmlsZSAqKVxuXG4oKiBUaGUgdGVtcCBmaWxlIGZ1bmN0aW9ucyBpbiB0aGUgT0NhbWwgRmlsZW5hbWUgbW9kdWxlIGRvIG5vdCBzdXBwb3J0XG4gICBwZXJtaXNzaW9ucy4gIEJ1dCBvcGVuaW5nIGEgZmlsZSB3aXRoIGdpdmVuIHBlcm1pc3Npb25zIGlzIGRpZmZlcmVudFxuICAgZnJvbSBvcGVuaW5nIGl0IGFuZCBjaG1vZGluZyBpdCB0byB0aGVzZSBwZXJtaXNzaW9ucywgYmVjYXVzZSB0aGUgdW1hc2tcbiAgIGlzIHRha2VuIGluIGFjY291bnQuICBVbmRlciBVbml4IHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gZ2V0IHRoZSB1bWFzayBpblxuICAgYSB0aHJlYWQtc2FmZSB3YXkuICopXG5tb2R1bGUgVG1wX2ZpbGUgPSBzdHJ1Y3RcbiAgbGV0IHBybmcgPSByZWYgTm9uZVxuXG4gIGxldCB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmFuZF9zdGF0ZSA9XG4gICAgICBtYXRjaCAhcHJuZyB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHJldCA9IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSBpblxuICAgICAgICBwcm5nIDo9IFNvbWUgcmV0O1xuICAgICAgICByZXRcbiAgICBpblxuICAgIGxldCBybmQgPSBSYW5kb20uU3RhdGUuYml0cyByYW5kX3N0YXRlIGxhbmQgMHhGRkZGRkYgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXhcbiAgOztcblxuICAoKiBLZWVwIHRoZSBwZXJtaXNzaW9ucyBsb29zZS4gU2V4cHMgYXJlIHVzdWFsbHkgc2hhcmVkIGFuZCByYXJlbHkgcHJpdmF0ZSopXG4gIGxldCBvcGVuX3RlbXBfZmlsZSA/KHBlcm0gPSAwbzY2NikgcHJlZml4IHN1ZmZpeCA9XG4gICAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICAgIGxldCBuYW1lID0gdGVtcF9maWxlX25hbWUgcHJlZml4IHN1ZmZpeCBpblxuICAgICAgdHJ5XG4gICAgICAgIGxldCBvYyA9XG4gICAgICAgICAgb3Blbl9vdXRfZ2VuIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF0gcGVybSBuYW1lXG4gICAgICAgIGluXG4gICAgICAgIG5hbWUsIG9jXG4gICAgICB3aXRoXG4gICAgICB8IFN5c19lcnJvciBfIGFzIGUgLT4gaWYgY291bnRlciA+PSAxMDAwIHRoZW4gcmFpc2UgZSBlbHNlIHRyeV9uYW1lIChjb3VudGVyICsgMSlcbiAgICBpblxuICAgIHRyeV9uYW1lIDBcbiAgOztcbmVuZFxuXG5sZXQgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gb3V0cHV0X2Z1bmN0aW9uIGZpbGUgc2V4cCA9XG4gIGxldCB0bXBfbmFtZSwgb2MgPSBUbXBfZmlsZS5vcGVuX3RlbXBfZmlsZSA/cGVybSBmaWxlIFwidG1wXCIgaW5cbiAgKHRyeVxuICAgICBvdXRwdXRfZnVuY3Rpb24gb2Mgc2V4cDtcbiAgICAgY2xvc2Vfb3V0IG9jXG4gICB3aXRoXG4gICB8IGUgLT5cbiAgICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgICAodHJ5IFN5cy5yZW1vdmUgdG1wX25hbWUgd2l0aFxuICAgICAgfCBfIC0+ICgpKTtcbiAgICAgcmFpc2UgZSk7XG4gIFN5cy5yZW5hbWUgdG1wX25hbWUgZmlsZVxuOztcblxubGV0IG91dHB1dF9zZXhwX25sIGRvX291dHB1dCBvYyBzZXhwID1cbiAgZG9fb3V0cHV0IG9jIHNleHA7XG4gIG91dHB1dF9zdHJpbmcgb2MgXCJcXG5cIlxuOztcblxubGV0IHNhdmVfaHVtID9wZXJtIGZpbGUgc2V4cCA9IHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cF9ubCBvdXRwdXRfaHVtKSBmaWxlIHNleHBcbmxldCBzYXZlX21hY2ggP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gb3V0cHV0X21hY2ggZmlsZSBzZXhwXG5sZXQgc2F2ZSA9IHNhdmVfbWFjaFxubGV0IG91dHB1dF9zZXhwc19ubCBkb19vdXRwdXQgb2Mgc2V4cHMgPSBMaXN0Lml0ZXIgKG91dHB1dF9zZXhwX25sIGRvX291dHB1dCBvYykgc2V4cHNcblxubGV0IHNhdmVfc2V4cHNfaHVtID9wZXJtIGZpbGUgc2V4cHMgPVxuICBzYXZlX29mX291dHB1dCA/cGVybSAob3V0cHV0X3NleHBzX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cHNcbjs7XG5cbmxldCBzYXZlX3NleHBzX21hY2ggP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X21hY2gpIGZpbGUgc2V4cHNcbjs7XG5cbmxldCBzYXZlX3NleHBzID0gc2F2ZV9zZXhwc19tYWNoXG5cbigqIFNjYW4gZnVuY3Rpb25zICopXG5cbmxldCBzY2FuX3NleHAgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cCAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3NleHBfb3B0ID9idWYgbGV4YnVmID0gUGFyc2VyLnNleHBfb3B0IChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cHMgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9yZXZfc2V4cHMgP2J1ZiBsZXhidWYgPSBQYXJzZXIucmV2X3NleHBzIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxuXG5sZXQgZ2V0X21haW5fYnVmIGJ1ZiA9XG4gIGxldCBidWYgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgfCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMTI4XG4gICAgfCBTb21lIGJ1ZiAtPiBidWZcbiAgaW5cbiAgTGV4ZXIubWFpbiB+YnVmXG47O1xuXG5sZXQgc2Nhbl9mb2xkX3NleHBzID9idWYgfmYgfmluaXQgbGV4YnVmID1cbiAgbGV0IG1haW4gPSBnZXRfbWFpbl9idWYgYnVmIGluXG4gIGxldCByZWMgbG9vcCBhY2MgPVxuICAgIG1hdGNoIFBhcnNlci5zZXhwX29wdCBtYWluIGxleGJ1ZiB3aXRoXG4gICAgfCBOb25lIC0+IGFjY1xuICAgIHwgU29tZSBzZXhwIC0+IGxvb3AgKGYgYWNjIHNleHApXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IHNjYW5faXRlcl9zZXhwcyA/YnVmIH5mIGxleGJ1ZiA9XG4gIHNjYW5fZm9sZF9zZXhwcyA/YnVmIGxleGJ1ZiB+aW5pdDooKSB+ZjooZnVuICgpIHNleHAgLT4gZiBzZXhwKVxuOztcblxubGV0IHNjYW5fc2V4cHNfY29udiA/YnVmIH5mIGxleGJ1ZiA9XG4gIGxldCBjb2xsIGFjYyBzZXhwID0gZiBzZXhwIDo6IGFjYyBpblxuICBMaXN0LnJldiAoc2Nhbl9mb2xkX3NleHBzID9idWYgfmY6Y29sbCB+aW5pdDpbXSBsZXhidWYpXG47O1xuXG5sZXQgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgP2NvbnRhaW5pbmdfc2V4cCA/bG9jYXRpb24gP2ludmFsaWRfc2V4cCAoKSB+ZXhuIDogdCA9XG4gIExpc3RcbiAgICAoTGlzdC5jb25jYXRcbiAgICAgICBbIFsgQXRvbSBcIk9mX3NleHBfZXJyb3JcIiBdXG4gICAgICAgOyAobWF0Y2ggbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgQXRvbSB4IF0pXG4gICAgICAgOyBbIChtYXRjaCBleG4gd2l0aFxuICAgICAgICAgICAgIHwgRmFpbHVyZSB4IC0+IEF0b20geFxuICAgICAgICAgICAgIHwgXyAtPiBDb252LnNleHBfb2ZfZXhuIGV4bilcbiAgICAgICAgIF1cbiAgICAgICA7IChtYXRjaCBpbnZhbGlkX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJpbnZhbGlkX3NleHBcIjsgeCBdIF0pXG4gICAgICAgOyAobWF0Y2ggY29udGFpbmluZ19zZXhwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgeCAtPiBbIExpc3QgWyBBdG9tIFwiY29udGFpbmluZ19zZXhwXCI7IHggXSBdKVxuICAgICAgIF0pXG47O1xuXG4oKiBQYXJ0aWFsIHBhcnNpbmcgKilcblxubW9kdWxlIEFubm90ID0gc3RydWN0XG4gIHR5cGUgcG9zID0gUGFyc2V4cC5Qb3NpdGlvbnMucG9zID1cbiAgICB7IGxpbmUgOiBpbnRcbiAgICA7IGNvbCA6IGludFxuICAgIDsgb2Zmc2V0IDogaW50XG4gICAgfVxuXG4gIHR5cGUgcmFuZ2UgPSBQYXJzZXhwLlBvc2l0aW9ucy5yYW5nZSA9XG4gICAgeyBzdGFydF9wb3MgOiBwb3NcbiAgICA7IGVuZF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgdHlwZSB0ID1cbiAgICB8IEF0b20gb2YgcmFuZ2UgKiBUeXBlLnRcbiAgICB8IExpc3Qgb2YgcmFuZ2UgKiB0IGxpc3QgKiBUeXBlLnRcblxuICB0eXBlICdhIGNvbnYgPVxuICAgIFsgYFJlc3VsdCBvZiAnYVxuICAgIHwgYEVycm9yIG9mIGV4biAqIHRcbiAgICBdXG5cbiAgZXhjZXB0aW9uIENvbnZfZXhuIG9mIHN0cmluZyAqIGV4blxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgQ29udl9leG5dIChmdW5jdGlvblxuICAgICAgfCBDb252X2V4biAobG9jYXRpb24sIGV4bikgLT4gc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmxvY2F0aW9uIH5leG5cbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5cbiAgdHlwZSBzdGFjayA9XG4gICAgeyBtdXRhYmxlIHBvc2l0aW9ucyA6IHBvcyBsaXN0XG4gICAgOyBtdXRhYmxlIHN0YWNrIDogdCBsaXN0IGxpc3RcbiAgICB9XG5cbiAgbGV0IGdldF9zZXhwID0gZnVuY3Rpb25cbiAgICB8IEF0b20gKF8sIHNleHApIHwgTGlzdCAoXywgXywgc2V4cCkgLT4gc2V4cFxuICA7O1xuXG4gIGxldCBnZXRfcmFuZ2UgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAocmFuZ2UsIF8pIHwgTGlzdCAocmFuZ2UsIF8sIF8pIC0+IHJhbmdlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfY29udiBzZXhwX29mX2EgPSBmdW5jdGlvblxuICAgIHwgYFJlc3VsdCBhIC0+IFR5cGUuTGlzdCBbIEF0b20gXCJSZXN1bHRcIjsgYSB8PiBzZXhwX29mX2EgXVxuICAgIHwgYEVycm9yIChleG4sIHQpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcIkVycm9yXCI7IExpc3QgWyBleG4gfD4gQ29udi5zZXhwX29mX2V4bjsgdCB8PiBnZXRfc2V4cCBdIF1cbiAgOztcblxuICBleGNlcHRpb24gQW5ub3Rfc2V4cCBvZiB0XG5cbiAgbGV0IGZpbmRfc2V4cCBhbm5vdF9zZXhwIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBhbm5vdF9zZXhwID1cbiAgICAgIG1hdGNoIGFubm90X3NleHAgd2l0aFxuICAgICAgfCAoQXRvbSAoXywgc3ViX3NleHApIHwgTGlzdCAoXywgXywgc3ViX3NleHApKSB3aGVuIHNleHAgPT0gc3ViX3NleHAgLT5cbiAgICAgICAgcmFpc2UgKEFubm90X3NleHAgYW5ub3Rfc2V4cClcbiAgICAgIHwgTGlzdCAoXywgYW5ub3RzLCBfKSAtPiBMaXN0Lml0ZXIgbG9vcCBhbm5vdHNcbiAgICAgIHwgQXRvbSBfIC0+ICgpXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIGxvb3AgYW5ub3Rfc2V4cDtcbiAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBBbm5vdF9zZXhwIHJlcyAtPiBTb21lIHJlc1xuICA7O1xuZW5kXG5cbmxldCAoKSA9XG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgfmZpbmFsaXNlOmZhbHNlIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE9mX3NleHBfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvY2F0aW9uLCBleG4pLCBpbnZhbGlkX3NleHApIC0+XG4gICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBPZl9zZXhwX2Vycm9yIChleG4sIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5pbnZhbGlkX3NleHAgfmV4blxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5tb2R1bGUgUGFyc2VfcG9zID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHRleHRfbGluZSA6IGludFxuICAgIDsgbXV0YWJsZSB0ZXh0X2NoYXIgOiBpbnRcbiAgICA7IG11dGFibGUgZ2xvYmFsX29mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBidWZfcG9zIDogaW50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgPyh0ZXh0X2xpbmUgPSAxKSA/KHRleHRfY2hhciA9IDApID8oYnVmX3BvcyA9IDApID8oZ2xvYmFsX29mZnNldCA9IDApICgpID1cbiAgICBsZXQgZmFpbCBtc2cgPSBmYWlsd2l0aCAoXCJTZXhwbGliLlNleHAuUGFyc2VfcG9zLmNyZWF0ZTogXCIgXiBtc2cpIGluXG4gICAgaWYgdGV4dF9saW5lIDwgMVxuICAgIHRoZW4gZmFpbCBcInRleHRfbGluZSA8IDFcIlxuICAgIGVsc2UgaWYgdGV4dF9jaGFyIDwgMFxuICAgIHRoZW4gZmFpbCBcInRleHRfY2hhciA8IDBcIlxuICAgIGVsc2UgaWYgZ2xvYmFsX29mZnNldCA8IDBcbiAgICB0aGVuIGZhaWwgXCJnbG9iYWxfb2Zmc2V0IDwgMFwiXG4gICAgZWxzZSBpZiBidWZfcG9zIDwgMFxuICAgIHRoZW4gZmFpbCBcImJ1Zl9wb3MgPCAwXCJcbiAgICBlbHNlIHsgdGV4dF9saW5lOyB0ZXh0X2NoYXI7IGdsb2JhbF9vZmZzZXQ7IGJ1Zl9wb3MgfVxuICA7O1xuXG4gIGxldCB3aXRoX2J1Zl9wb3MgdCBidWZfcG9zID0geyB0IHdpdGggYnVmX3BvcyB9XG5lbmRcblxubW9kdWxlIENvbnRfc3RhdGUgPSBQYXJzZXhwLk9sZF9wYXJzZXJfY29udF9zdGF0ZVxuXG50eXBlICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdCA9XG4gIHwgRG9uZSBvZiAndCAqIFBhcnNlX3Bvcy50XG4gIHwgQ29udCBvZiBDb250X3N0YXRlLnQgKiAoJ2EsICd0KSBwYXJzZV9mdW5cblxuYW5kICgnYSwgJ3QpIHBhcnNlX2Z1biA9IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiAoJ2EsICd0KSBwYXJzZV9yZXN1bHRcblxudHlwZSAndCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zIDogUGFyc2VfcG9zLnQgfVxuXG50eXBlIHBhcnNlX2Vycm9yID1cbiAgeyBlcnJfbXNnIDogc3RyaW5nXG4gIDsgcGFyc2Vfc3RhdGUgOiBbIGBTZXhwIG9mIHQgbGlzdCBsaXN0IHBhcnNlX3N0YXRlIHwgYEFubm90IG9mIEFubm90LnN0YWNrIHBhcnNlX3N0YXRlIF1cbiAgfVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgcGFyc2VfZXJyb3JcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgcGUgLT5cbiAgICAgIGxldCBwcG9zID1cbiAgICAgICAgbWF0Y2ggcGUucGFyc2Vfc3RhdGUgd2l0aFxuICAgICAgICB8IGBTZXhwIHsgcGFyc2VfcG9zIH0gfCBgQW5ub3QgeyBwYXJzZV9wb3MgfSAtPiBwYXJzZV9wb3NcbiAgICAgIGluXG4gICAgICBMaXN0XG4gICAgICAgIFsgQXRvbSBcIlNleHBsaWIuU2V4cC5QYXJzZV9lcnJvclwiXG4gICAgICAgIDsgTGlzdFxuICAgICAgICAgICAgWyBMaXN0IFsgQXRvbSBcImVycl9tc2dcIjsgQXRvbSBwZS5lcnJfbXNnIF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJ0ZXh0X2xpbmVcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy50ZXh0X2xpbmUgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfY2hhclwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfY2hhciBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwiZ2xvYmFsX29mZnNldFwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcImJ1Zl9wb3NcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5idWZfcG9zIF1cbiAgICAgICAgICAgIF1cbiAgICAgICAgXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5tb2R1bGUgUGFyc2VyX291dHB1dCA6IHNpZ1xuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIEltcGwgOiBQYXJzZXhwLkVhZ2VyX3BhcnNlclxuXG4gICAgdHlwZSBvdXRwdXRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIHZhbCByYWlzZV9mb3VuZCA6IEltcGwuU3RhdGUuUmVhZF9vbmx5LnQgLT4gSW1wbC5wYXJzZWRfdmFsdWUgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgQmFyZV9zZXhwIDogVCB3aXRoIHR5cGUgb3V0cHV0ID0gVHlwZS50XG4gIG1vZHVsZSBBbm5vdGF0ZWRfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IEFubm90LnRcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIEltcGwgOiBQYXJzZXhwLkVhZ2VyX3BhcnNlclxuXG4gICAgdHlwZSBvdXRwdXRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIHZhbCByYWlzZV9mb3VuZCA6IEltcGwuU3RhdGUuUmVhZF9vbmx5LnQgLT4gSW1wbC5wYXJzZWRfdmFsdWUgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgSSA9IFBhcnNleHAuUG9zaXRpb25zLkl0ZXJhdG9yXG5cbiAgbGV0IHJlYyBhbm5vdGF0ZV9zZXhwIHNleHAgaXRlciA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBUeXBlLkF0b20gXyAtPlxuICAgICAgbGV0IHN0YXJ0X3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBsZXQgZW5kX3BvcyA9IEkuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIGluXG4gICAgICBBbm5vdC5BdG9tICh7IHN0YXJ0X3BvczsgZW5kX3BvcyB9LCBzZXhwKVxuICAgIHwgVHlwZS5MaXN0IGwgLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGFubm90ID0gYW5ub3RhdGVfc2V4cF9saXN0IGwgaXRlciBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuTGlzdCAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgYW5ub3QsIHNleHApXG5cbiAgYW5kIGFubm90YXRlX3NleHBfbGlzdCBzZXhwcyBpdGVyID1cbiAgICBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBhbm5vdGF0ZV9zZXhwIHNleHAgaXRlcikgc2V4cHMpXG4gIDs7XG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA9IHN0cnVjdFxuICAgIG1vZHVsZSBJbXBsID0gUGFyc2V4cC5FYWdlclxuXG4gICAgdHlwZSBvdXRwdXQgPSBUeXBlLnRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIGxldCByYWlzZV9mb3VuZCBfc3RhdGUgc2V4cCA9IHJhaXNlX25vdHJhY2UgKEZvdW5kIHNleHApXG4gIGVuZFxuXG4gIG1vZHVsZSBBbm5vdGF0ZWRfc2V4cCA9IHN0cnVjdFxuICAgIG1vZHVsZSBJbXBsID0gUGFyc2V4cC5FYWdlcl9hbmRfcG9zaXRpb25zXG5cbiAgICB0eXBlIG91dHB1dCA9IEFubm90LnRcblxuICAgIGV4Y2VwdGlvbiBGb3VuZCBvZiBvdXRwdXRcblxuICAgIGxldCByYWlzZV9mb3VuZCBfc3RhdGUgKHNleHAsIHBvc2l0aW9ucykgPVxuICAgICAgbGV0IGFubm90ID0gYW5ub3RhdGVfc2V4cCBzZXhwIChJLmNyZWF0ZSBwb3NpdGlvbnMpIGluXG4gICAgICByYWlzZV9ub3RyYWNlIChGb3VuZCBhbm5vdClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9wYXJzZXIgKFQgOiBzaWdcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuVFxuXG4gICAgdHlwZSBpbnB1dFxuXG4gICAgdmFsIGxlbmd0aCA6IGlucHV0IC0+IGludFxuXG4gICAgdmFsIHVuc2FmZV9mZWVkX2xvb3BcbiAgICAgIDogIEltcGwuU3RhdGUudFxuICAgICAgLT4gSW1wbC5TdGFjay50XG4gICAgICAtPiBpbnB1dFxuICAgICAgLT4gbWF4X3BvczppbnRcbiAgICAgIC0+IHBvczppbnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICBlbmQpIDogc2lnXG4gIHZhbCBwYXJzZVxuICAgIDogID9wYXJzZV9wb3M6UGFyc2VfcG9zLnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+IFQuaW5wdXRcbiAgICAtPiAoVC5pbnB1dCwgVC5vdXRwdXQpIHBhcnNlX3Jlc3VsdFxuZW5kID0gc3RydWN0XG4gIGxldCBwYXJzZV9wb3Nfb2Zfc3RhdGUgc3RhdGUgYnVmX3BvcyA9XG4gICAgeyBQYXJzZV9wb3MudGV4dF9saW5lID0gVC5JbXBsLlN0YXRlLmxpbmUgc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy50ZXh0X2NoYXIgPSBULkltcGwuU3RhdGUuY29sdW1uIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuZ2xvYmFsX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGVcbiAgICA7IFBhcnNlX3Bvcy5idWZfcG9zXG4gICAgfVxuICA7O1xuXG4gIGxldCBjaGVja19zdHJfYm91bmRzIH5wb3MgfmxlbiBzdHIgPVxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBwb3MgPCAwXCI7XG4gICAgaWYgbGVuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwicGFyc2U6IGxlbiA8IDBcIjtcbiAgICBsZXQgc3RyX2xlbiA9IFQubGVuZ3RoIHN0ciBpblxuICAgIGxldCBwb3NfbGVuID0gcG9zICsgbGVuIGluXG4gICAgaWYgcG9zX2xlbiA+IHN0cl9sZW4gdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBwb3MgKyBsZW4gPiBzdHJfbGVuXCI7XG4gICAgcG9zX2xlbiAtIDFcbiAgOztcblxuICBsZXQgcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZyA9XG4gICAgbGV0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgPSBwYXJzZV9wb3Nfb2Zfc3RhdGUgc3RhdGUgcG9zIH0gaW5cbiAgICBsZXQgcGFyc2VfZXJyb3IgPSB7IGVycl9tc2cgPSBtc2c7IHBhcnNlX3N0YXRlID0gYFNleHAgcGFyc2Vfc3RhdGUgfSBpblxuICAgIHJhaXNlIChQYXJzZV9lcnJvciBwYXJzZV9lcnJvcilcbiAgOztcblxuICBsZXQgaGFuZGxlX3BhcnNleHBfZXJyb3Igc3RhdGUgcG9zIGUgPVxuICAgIGxldCBtc2cgPSBQYXJzZXhwLlBhcnNlX2Vycm9yLm1lc3NhZ2UgZSBpblxuICAgIG1hdGNoIFBhcnNleHAuUGFyc2VfZXJyb3IuUHJpdmF0ZS5vbGRfcGFyc2VyX2V4biBlIHdpdGhcbiAgICB8IGBQYXJzZV9lcnJvciAtPiByYWlzZV9wYXJzZV9lcnJvciBzdGF0ZSBwb3MgbXNnXG4gICAgfCBgRmFpbHVyZSAtPiBmYWlsd2l0aCBtc2dcbiAgOztcblxuICBsZXQgcmVjIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgfnBvcyB+bGVuIHN0ciA9XG4gICAgbGV0IG1heF9wb3MgPSBjaGVja19zdHJfYm91bmRzIH5wb3MgfmxlbiBzdHIgaW5cbiAgICBsZXQgcHJldmlvdXNfb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgIG1hdGNoIFQudW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyB3aXRoXG4gICAgfCBzdGFjayAtPiBta19jb250X3N0YXRlIHN0YXRlIHN0YWNrXG4gICAgfCBleGNlcHRpb24gVC5Gb3VuZCByZXN1bHQgLT5cbiAgICAgIGxldCBvZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlIGluXG4gICAgICBsZXQgbmV4dF9wb3MgPSBwb3MgKyAob2Zmc2V0IC0gcHJldmlvdXNfb2Zmc2V0KSBpblxuICAgICAgRG9uZSAocmVzdWx0LCBwYXJzZV9wb3Nfb2Zfc3RhdGUgc3RhdGUgbmV4dF9wb3MpXG4gICAgfCBleGNlcHRpb24gUGFyc2V4cC5QYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlcnIgLT5cbiAgICAgIGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIChwb3MgKyAoVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSAtIHByZXZpb3VzX29mZnNldCkpIGVyclxuXG4gIGFuZCBta19jb250X3N0YXRlIHN0YXRlIHN0YWNrID1cbiAgICBsZXQgcGFyc2VfZnVuID1cbiAgICAgIGxldCB1c2VkX3JlZiA9IHJlZiBmYWxzZSBpblxuICAgICAgZnVuIH5wb3MgfmxlbiBzdHIgLT5cbiAgICAgICAgaWYgIXVzZWRfcmVmXG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJTZXhwbGliLlNleHA6IHBhcnNlciBjb250aW51YXRpb24gY2FsbGVkIHR3aWNlXCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgdXNlZF9yZWYgOj0gdHJ1ZTtcbiAgICAgICAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIpXG4gICAgaW5cbiAgICBsZXQgY29udF9zdGF0ZSA9IFQuSW1wbC5TdGF0ZS5vbGRfcGFyc2VyX2NvbnRfc3RhdGUgc3RhdGUgaW5cbiAgICBDb250IChjb250X3N0YXRlLCBwYXJzZV9mdW4pXG4gIDs7XG5cbiAgbGV0IHBhcnNlID8ocGFyc2VfcG9zID0gUGFyc2VfcG9zLmNyZWF0ZSAoKSkgP2xlbiBzdHIgPVxuICAgIGxldCBwb3MsIGJ1Zl9wb3MgPVxuICAgICAgbGV0IHsgUGFyc2VfcG9zLnRleHRfbGluZTsgdGV4dF9jaGFyOyBnbG9iYWxfb2Zmc2V0OyBidWZfcG9zIH0gPSBwYXJzZV9wb3MgaW5cbiAgICAgICggeyBQYXJzZXhwLlBvc2l0aW9ucy5saW5lID0gdGV4dF9saW5lOyBjb2wgPSB0ZXh0X2NoYXI7IG9mZnNldCA9IGdsb2JhbF9vZmZzZXQgfVxuICAgICAgLCBidWZfcG9zIClcbiAgICBpblxuICAgIGxldCBzdGF0ZSA9IFQuSW1wbC5TdGF0ZS5jcmVhdGUgfnBvcyB+bm9fc2V4cF9pc19lcnJvcjpmYWxzZSBULnJhaXNlX2ZvdW5kIGluXG4gICAgbGV0IHN0YWNrID0gVC5JbXBsLlN0YWNrLmVtcHR5IGluXG4gICAgbGV0IGxlbiA9XG4gICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBTb21lIHggLT4geFxuICAgICAgfCBOb25lIC0+IFQubGVuZ3RoIHN0ciAtIGJ1Zl9wb3NcbiAgICBpblxuICAgIHJ1bl9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5wb3M6YnVmX3BvcyB+bGVuXG4gIDs7XG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX3NleHAgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkJhcmVfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5sZXQgcGFyc2UgPSBTdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIFN0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChTdHJpbmcudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9zdHJfYW5ub3QgPSBTdHJpbmdfc2luZ2xlX2Fubm90LnBhcnNlXG5cbm1vZHVsZSBCaWdzdHJpbmdfc2luZ2xlX3NleHAgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkJhcmVfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IGJpZ3N0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayAoc3RyIDogaW5wdXQpIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKEFycmF5MS51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX2JpZ3N0cmluZyA9IEJpZ3N0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9hbm5vdCA9IE1ha2VfcGFyc2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcnNlcl9vdXRwdXQuQW5ub3RhdGVkX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmdfYW5ub3QgPSBCaWdzdHJpbmdfc2luZ2xlX2Fubm90LnBhcnNlXG5cbigqIElucHV0IGZ1bmN0aW9ucyAqKVxuXG5sZXQgbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlID1cbiAgKCk7XG4gIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgbGV0IHBhcnNlX3BvcyA9XG4gICAgICBtYXRjaCBwYXJzZV9wb3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNlX3Bvcy5jcmVhdGUgfmJ1Zl9wb3M6cG9zICgpXG4gICAgICB8IFNvbWUgcGFyc2VfcG9zIC0+XG4gICAgICAgIHBhcnNlX3Bvcy5QYXJzZV9wb3MuYnVmX3BvcyA8LSBwb3M7XG4gICAgICAgIHBhcnNlX3Bvc1xuICAgIGluXG4gICAgbXlfcGFyc2UgP3BhcnNlX3BvczooU29tZSBwYXJzZV9wb3MpID9sZW46KFNvbWUgbGVuKSBzdHJcbjs7XG5cbigqIFt3c19idWZdIG11c3QgY29udGFpbiBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIgKilcbmxldCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmID1cbiAgKCogV2hlbiBwYXJzaW5nIGF0b21zLCB0aGUgaW5jcmVtZW50YWwgcGFyc2VyIGNhbm5vdCB0ZWxsIHdoZXRoZXJcbiAgICAgaXQgaXMgYXQgdGhlIGVuZCB1bnRpbCBpdCBoaXRzIHdoaXRlc3BhY2UuICBXZSB0aGVyZWZvcmUgZmVlZCBpdFxuICAgICBvbmUgc3BhY2UgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgZmluaXNoZWQuICopXG4gIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW46MSB3c19idWYgd2l0aFxuICB8IERvbmUgKHNleHAsIF8pIC0+IE9rIHNleHBcbiAgfCBDb250IChjb250X3N0YXRlLCBfKSAtPiBFcnJvciBjb250X3N0YXRlXG47O1xuXG5sZXQgZ2VuX2lucHV0X3NleHAgbXlfcGFyc2UgP3BhcnNlX3BvcyBpYyA9XG4gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbWF0Y2ggaW5wdXRfY2hhciBpYyB3aXRoXG4gICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT5cbiAgICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICAgIHwgRXJyb3IgXyAtPiByYWlzZSBFbmRfb2ZfZmlsZSlcbiAgICB8IGMgLT5cbiAgICAgIEJ5dGVzLnNldCBidWYgMCBjO1xuICAgICAgKG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW46MSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgICB8IERvbmUgKHNleHAsIF8pIC0+IHNleHBcbiAgICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgbG9vcCAobWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlKVxuOztcblxubGV0IGlucHV0X3NleHAgP3BhcnNlX3BvcyBpYyA9IGdlbl9pbnB1dF9zZXhwIHBhcnNlID9wYXJzZV9wb3MgaWNcblxubGV0IGdlbl9pbnB1dF9yZXZfc2V4cHMgbXlfcGFyc2UgfndzX2J1ZiA/cGFyc2VfcG9zID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGljID1cbiAgbGV0IHJldl9zZXhwc19yZWYgPSByZWYgW10gaW5cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgLT5cbiAgICAgICAgcmV2X3NleHBzX3JlZiA6PSBzZXhwIDo6ICFyZXZfc2V4cHNfcmVmO1xuICAgICAgICBsZXQgbl9wYXJzZWQgPSBidWZfcG9zIC0gcG9zIGluXG4gICAgICAgIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSB+cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gICAgICAgIGlmIG5fcGFyc2VkID0gbGVuXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBuZXdfbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgICAgICAgIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlbjpuZXdfbGVuKVxuICAgICAgICBlbHNlIGxvb3AgdGhpc19wYXJzZSB+cG9zOmJ1Zl9wb3MgfmxlbjoobGVuIC0gbl9wYXJzZWQpXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlbjooaW5wdXQgaWMgYnVmIDAgYnVmX2xlbikpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwIDo6ICFyZXZfc2V4cHNfcmVmXG4gICAgICB8IEVycm9yIFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSAtPiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgKFwiU2V4cGxpYi5TZXhwLmlucHV0X3Jldl9zZXhwczogcmVhY2hlZCBFT0Ygd2hpbGUgaW4gc3RhdGUgXCJcbiAgICAgICAgICAgXiBDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKSlcbiAgaW5cbiAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgbGV0IHRoaXNfcGFyc2UgPSBta190aGlzX3BhcnNlID9wYXJzZV9wb3MgbXlfcGFyc2UgaW5cbiAgbG9vcCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuXG47O1xuXG5sZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gIGdlbl9pbnB1dF9yZXZfc2V4cHMgcGFyc2UgfndzX2J1ZjpcIiBcIiA/cGFyc2VfcG9zID9idWYgaWNcbjs7XG5cbmxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuKCogb2Zfc3RyaW5nIGFuZCBvZl9iaWdzdHJpbmcgKilcblxubGV0IG9mX3N0cmluZ19iaWdzdHJpbmcgbG9jIG15X3BhcnNlIHdzX2J1ZiBnZXRfbGVuIGdldF9zdWIgc3RyID1cbiAgbWF0Y2ggbXlfcGFyc2UgP3BhcnNlX3BvczpOb25lID9sZW46Tm9uZSBzdHIgd2l0aFxuICB8IERvbmUgKHNleHAsIHBhcnNlX3BvcykgLT5cbiAgICAobWF0Y2ggbXlfcGFyc2UgP3BhcnNlX3BvczooU29tZSBwYXJzZV9wb3MpID9sZW46Tm9uZSBzdHIgd2l0aFxuICAgICB8IERvbmUgKF9zZXhwMiwgXykgLT5cbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBnb3QgbXVsdGlwbGUgUy1leHByZXNzaW9ucyB3aGVyZSBvbmx5IG9uZSB3YXMgZXhwZWN0ZWQuXCJcbiAgICAgICAgICAgIGxvYylcbiAgICAgfCBDb250IChDb250X3N0YXRlLlBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSwgXykgLT4gc2V4cFxuICAgICB8IENvbnQgKF8sIF8pIC0+XG4gICAgICAgKCogbm90IHVzaW5nIFtmZWVkX2VuZF9vZl9pbnB1dF0gaGVyZSBtZWFucyBcImEgYlwiIHdpbGwgZW5kIHVwIGhlcmUgYW5kIG5vdCBpblxuICAgICAgICAgIFwibXVsdGlwbGUgUy1leHByZXNzaW9uc1wiIGJyYW5jaCwgYnV0IGl0IGRvZXNuJ3QgbWF0dGVyIHRoYXQgbXVjaCAqKVxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IFMtZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBkYXRhIGF0IHBvc2l0aW9uICVkLi4uXCJcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgcGFyc2VfcG9zLmJ1Zl9wb3MpKVxuICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+XG4gICAgKG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWYgd2l0aFxuICAgICB8IE9rIHNleHAgLT4gc2V4cFxuICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICBsZXQgY29udF9zdGF0ZV9zdHIgPSBDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlIGluXG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogaW5jb21wbGV0ZSBTLWV4cHJlc3Npb24gd2hpbGUgaW4gc3RhdGUgJXM6ICVzXCJcbiAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgY29udF9zdGF0ZV9zdHJcbiAgICAgICAgICAgIChnZXRfc3ViIHN0ciAwIChnZXRfbGVuIHN0cikpKSlcbjs7XG5cbmxldCBvZl9zdHJpbmcgc3RyID0gb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIm9mX3N0cmluZ1wiIHBhcnNlIFwiIFwiIFN0cmluZy5sZW5ndGggU3RyaW5nLnN1YiBzdHJcbmxldCBvZl9zdHJpbmdfbWFueSBzdHIgPSBQYXJzZXhwLk1hbnkucGFyc2Vfc3RyaW5nX2V4biBzdHJcblxubGV0IGdldF9ic3RyX3N1Yl9zdHIgYnN0ciBwb3MgbGVuID1cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57cG9zICsgaX1cbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBic3RyX3dzX2J1ZiA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCAxXG5sZXQgKCkgPSBic3RyX3dzX2J1Zi57MH0gPC0gJyAnXG5cbmxldCBvZl9iaWdzdHJpbmcgYnN0ciA9XG4gIG9mX3N0cmluZ19iaWdzdHJpbmdcbiAgICBcIm9mX2JpZ3N0cmluZ1wiXG4gICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgYnN0cl93c19idWZcbiAgICBBcnJheTEuZGltXG4gICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgIGJzdHJcbjs7XG5cbigqIExvYWRpbmcgKilcblxubGV0IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gIHRyeVxuICAgIGxldCBzZXhwcyA9IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zOk5vbmUgP2J1ZiBpYyBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBzXG4gIHdpdGhcbiAgfCBleGMgLT5cbiAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICByYWlzZSBleGNcbjs7XG5cbmxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxubGV0IGxvYWRfc2V4cHMgP2J1ZiBmaWxlID0gTGlzdC5yZXYgKGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSlcbmxldCBnZW5fbG9hZF9zZXhwX2xvYyA9IFwiU2V4cGxpYi5TZXhwLmdlbl9sb2FkX3NleHBcIlxuXG5sZXQgZ2VuX2xvYWRfc2V4cCBteV9wYXJzZSA/KHN0cmljdCA9IHRydWUpID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgPVxuICBsZXQgYnVmX2xlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gIGxldCByZWMgbG9vcCB0aGlzX3BhcnNlID1cbiAgICBsZXQgbGVuID0gaW5wdXQgaWMgYnVmIDAgYnVmX2xlbiBpblxuICAgIGlmIGxlbiA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGZlZWRfZW5kX29mX2lucHV0IH50aGlzX3BhcnNlIH53c19idWY6XCIgXCIgd2l0aFxuICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgXCIlczogRU9GIGluICVzIHdoaWxlIGluIHN0YXRlICVzXCJcbiAgICAgICAgICAgICBnZW5fbG9hZF9zZXhwX2xvY1xuICAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zOjAgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgIHwgRG9uZSAoc2V4cCwgKHsgUGFyc2VfcG9zLmJ1Zl9wb3M7IF8gfSBhcyBwYXJzZV9wb3MpKSB3aGVuIHN0cmljdCAtPlxuICAgICAgICBsZXQgcmVjIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvcyB+bGVuID1cbiAgICAgICAgICBtYXRjaCB0aGlzX3BhcnNlIH5wb3MgfmxlbiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBidWYpIHdpdGhcbiAgICAgICAgICB8IERvbmUgXyAtPlxuICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgKHNwcmludGYgXCIlczogbW9yZSB0aGFuIG9uZSBTLWV4cHJlc3Npb24gaW4gZmlsZSAlc1wiIGdlbl9sb2FkX3NleHBfbG9jIGZpbGUpXG4gICAgICAgICAgfCBDb250IChjb250X3N0YXRlLCB0aGlzX3BhcnNlKSAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICAgIGlmIGxlbiA+IDBcbiAgICAgICAgICAgIHRoZW4gc3RyaWN0X2xvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuICAgICAgICAgICAgZWxzZSBpZiBjb250X3N0YXRlID0gQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgICAgICAgICAgIHRoZW4gc2V4cFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCIlczogJXMgaW4gc3RhdGUgJXMgbG9hZGluZyBmaWxlICVzXCJcbiAgICAgICAgICAgICAgICAgICBnZW5fbG9hZF9zZXhwX2xvY1xuICAgICAgICAgICAgICAgICAgIFwiYWRkaXRpb25hbCBpbmNvbXBsZXRlIGRhdGFcIlxuICAgICAgICAgICAgICAgICAgIChDb250X3N0YXRlLnRvX3N0cmluZyBjb250X3N0YXRlKVxuICAgICAgICAgICAgICAgICAgIGZpbGUpXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSB+cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gICAgICAgIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIGJ1Zl9wb3MpXG4gICAgICB8IERvbmUgKHNleHAsIF8pIC0+IHNleHBcbiAgICAgIHwgQ29udCAoXywgdGhpc19wYXJzZSkgLT4gbG9vcCB0aGlzX3BhcnNlKVxuICBpblxuICB0cnlcbiAgICBsZXQgc2V4cCA9IGxvb3AgKG1rX3RoaXNfcGFyc2UgbXlfcGFyc2UpIGluXG4gICAgY2xvc2VfaW4gaWM7XG4gICAgc2V4cFxuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG5tb2R1bGUgQW5ub3RhdGVkID0gc3RydWN0XG4gIGluY2x1ZGUgQW5ub3RcblxuICBsZXQgcGFyc2UgPSBwYXJzZV9zdHJfYW5ub3RcbiAgbGV0IHBhcnNlX2JpZ3N0cmluZyA9IHBhcnNlX2JpZ3N0cmluZ19hbm5vdFxuXG4gIGxldCBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID1cbiAgICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG4gIDs7XG5cbiAgbGV0IGlucHV0X3NleHAgP3BhcnNlX3BvcyBpYyA9IGdlbl9pbnB1dF9zZXhwIHBhcnNlID9wYXJzZV9wb3MgaWNcbiAgbGV0IGlucHV0X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9IExpc3QucmV2IChpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljKVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nIFwiQW5ub3RhdGVkLm9mX3N0cmluZ1wiIHBhcnNlIFwiIFwiIFN0cmluZy5sZW5ndGggU3RyaW5nLnN1YiBzdHJcbiAgOztcblxuICBsZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICAgIG9mX3N0cmluZ19iaWdzdHJpbmdcbiAgICAgIFwiQW5ub3RhdGVkLm9mX2JpZ3N0cmluZ1wiXG4gICAgICBwYXJzZV9iaWdzdHJpbmdcbiAgICAgIGJzdHJfd3NfYnVmXG4gICAgICBBcnJheTEuZGltXG4gICAgICBnZXRfYnN0cl9zdWJfc3RyXG4gICAgICBic3RyXG4gIDs7XG5cbiAgbGV0IGxvYWRfcmV2X3NleHBzID9idWYgZmlsZSA9IGdlbl9sb2FkX3Jldl9zZXhwcyBpbnB1dF9yZXZfc2V4cHMgP2J1ZiBmaWxlXG4gIGxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG4gIGxldCBsb2FkX3NleHAgP3N0cmljdCA/YnVmIGZpbGUgPSBnZW5fbG9hZF9zZXhwIHBhcnNlID9zdHJpY3QgP2J1ZiBmaWxlXG5cbiAgbGV0IGNvbnYgZiBhbm5vdF9zZXhwID1cbiAgICBsZXQgc2V4cCA9IGdldF9zZXhwIGFubm90X3NleHAgaW5cbiAgICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gICAgfCBPZl9zZXhwX2Vycm9yIChleGMsIGJhZF9zZXhwKSBhcyBlIC0+XG4gICAgICAobWF0Y2ggZmluZF9zZXhwIGFubm90X3NleHAgYmFkX3NleHAgd2l0aFxuICAgICAgIHwgTm9uZSAtPiByYWlzZSBlXG4gICAgICAgfCBTb21lIGJhZF9hbm5vdF9zZXhwIC0+IGBFcnJvciAoZXhjLCBiYWRfYW5ub3Rfc2V4cCkpXG4gIDs7XG5cbiAgbGV0IGdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHAgPVxuICAgIGxldCByYW5nZSA9IGdldF9yYW5nZSBhbm5vdF9zZXhwIGluXG4gICAgbGV0IHsgc3RhcnRfcG9zID0geyBsaW5lOyBjb2w7IG9mZnNldCA9IF8gfTsgZW5kX3BvcyA9IF8gfSA9IHJhbmdlIGluXG4gICAgbGV0IGxvYyA9IHNwcmludGYgXCIlczolZDolZFwiIGZpbGUgbGluZSBjb2wgaW5cbiAgICBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jLCBleGMpLCBnZXRfc2V4cCBhbm5vdF9zZXhwKVxuICA7O1xuZW5kXG5cbmxldCBsb2FkX3NleHBfY29udiA/KHN0cmljdCA9IHRydWUpID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCBzZXhwID0gbG9hZF9zZXhwIH5zdHJpY3QgfmJ1ZiBmaWxlIGluXG4gIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gLT4gQW5ub3RhdGVkLmNvbnYgZiAoQW5ub3RhdGVkLmxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSlcbjs7XG5cbmxldCByYWlzZV9jb252X2V4biB+ZmlsZSA9IGZ1bmN0aW9uXG4gIHwgYFJlc3VsdCByZXMgLT4gcmVzXG4gIHwgYEVycm9yIChleGMsIGFubm90X3NleHApIC0+IHJhaXNlIChBbm5vdGF0ZWQuZ2V0X2NvbnZfZXhuIH5maWxlIH5leGMgYW5ub3Rfc2V4cClcbjs7XG5cbmxldCBsb2FkX3NleHBfY29udl9leG4gP3N0cmljdCA/YnVmIGZpbGUgZiA9XG4gIHJhaXNlX2NvbnZfZXhuIH5maWxlIChsb2FkX3NleHBfY29udiA/c3RyaWN0ID9idWYgZmlsZSBmKVxuOztcblxubGV0IGxvYWRfc2V4cHNfY29udiA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgcmV2X3NleHBzID0gbG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIGluXG4gIHRyeSBMaXN0LnJldl9tYXAgKGZ1biBzZXhwIC0+IGBSZXN1bHQgKGYgc2V4cCkpIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXAgKGZ1biBhbm5vdF9zZXhwIC0+IEFubm90YXRlZC5jb252IGYgYW5ub3Rfc2V4cCkgcmV2X2Fubm90X3NleHBzKVxuOztcblxubGV0IGxvYWRfc2V4cHNfY29udl9leG4gPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIGYgcmV2X3NleHBzIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gYXMgZSAtPlxuICAgIChtYXRjaCBBbm5vdGF0ZWQubG9hZF9yZXZfc2V4cHMgfmJ1ZiBmaWxlIHdpdGhcbiAgICAgfCBbXSAtPlxuICAgICAgICgqIEZpbGUgaXMgbm93IGVtcHR5IC0gcGVyaGFwcyBpdCB3YXMgYSB0ZW1wb3JhcnkgZmlsZSBoYW5kbGU/ICopXG4gICAgICAgcmFpc2UgZVxuICAgICB8IHJldl9hbm5vdF9zZXhwcyAtPlxuICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgKGZ1biBhbm5vdF9zZXhwIC0+IHJhaXNlX2NvbnZfZXhuIH5maWxlIChBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApKVxuICAgICAgICAgcmV2X2Fubm90X3NleHBzKVxuOztcblxubGV0IGdlbl9vZl9zdHJpbmdfY29udiBvZl9zdHJpbmcgYW5ub3Rfb2Zfc3RyaW5nIHN0ciBmID1cbiAgbGV0IHNleHAgPSBvZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBgUmVzdWx0IChmIHNleHApIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIF8gLT4gQW5ub3RhdGVkLmNvbnYgZiAoYW5ub3Rfb2Zfc3RyaW5nIHN0cilcbjs7XG5cbmxldCBvZl9zdHJpbmdfY29udiBzdHIgZiA9IGdlbl9vZl9zdHJpbmdfY29udiBvZl9zdHJpbmcgQW5ub3RhdGVkLm9mX3N0cmluZyBzdHIgZlxuXG5sZXQgb2ZfYmlnc3RyaW5nX2NvbnYgYnN0ciBmID1cbiAgZ2VuX29mX3N0cmluZ19jb252IG9mX2JpZ3N0cmluZyBBbm5vdGF0ZWQub2ZfYmlnc3RyaW5nIGJzdHIgZlxuOztcblxubW9kdWxlIE9mX3N0cmluZ19jb252X2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhjIDogZXhuXG4gICAgOyBzZXhwIDogVHlwZS50XG4gICAgOyBzdWJfc2V4cCA6IFR5cGUudFxuICAgIH1cblxuICBleGNlcHRpb24gRSBvZiB0XG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFXSAoZnVuY3Rpb25cbiAgICAgIHwgRSBvc2NlIC0+XG4gICAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlXG4gICAgICAgICAgKClcbiAgICAgICAgICB+aW52YWxpZF9zZXhwOm9zY2Uuc3ViX3NleHBcbiAgICAgICAgICB+ZXhuOm9zY2UuZXhjXG4gICAgICAgICAgfmNvbnRhaW5pbmdfc2V4cDpvc2NlLnNleHBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gIDs7XG5lbmRcblxubGV0IGdlbl9vZl9zdHJpbmdfY29udl9leG4gb2Zfc3RyaW5nIHN0ciBmID1cbiAgbGV0IHNleHAgPSBvZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBmIHNleHAgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc3ViX3NleHApIC0+XG4gICAgcmFpc2UgKE9mX3N0cmluZ19jb252X2V4bi5FIHsgT2Zfc3RyaW5nX2NvbnZfZXhuLmV4Yzsgc2V4cDsgc3ViX3NleHAgfSlcbjs7XG5cbmxldCBvZl9zdHJpbmdfY29udl9leG4gc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZlxubGV0IG9mX2JpZ3N0cmluZ19jb252X2V4biBic3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX2JpZ3N0cmluZyBic3RyIGZcblxubGV0IG9mX3N0cmluZ19tYW55X2NvbnZfZXhuIHN0ciBmID1cbiAgbGV0IHNleHBzID0gb2Zfc3RyaW5nX21hbnkgc3RyIGluXG4gIExpc3QubWFwIChmdW4gc2V4cCAtPiBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIChmdW4geCAtPiB4KSBzZXhwIGYpIHNleHBzXG47O1xuXG4oKiBVdGlsaXRpZXMgZm9yIGF1dG9tYXRlZCB0eXBlIGNvbnZlcnNpb25zICopXG5cbmxldCB1bml0ID0gTGlzdCBbXVxuXG5sZXQgaXNfdW5pdCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxuZXh0ZXJuYWwgc2V4cF9vZl90IDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdF9vZl9zZXhwIDogdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4oKiBVdGlsaXRpZXMgZm9yIGNvbnZlcnNpb24gZXJyb3IgaGFuZGxpbmcgKilcblxudHlwZSBmb3VuZCA9XG4gIFsgYEZvdW5kXG4gIHwgYFBvcyBvZiBpbnQgKiBmb3VuZFxuICBdXG5cbnR5cGUgc2VhcmNoX3Jlc3VsdCA9XG4gIFsgYE5vdF9mb3VuZFxuICB8IGZvdW5kXG4gIF1cblxubGV0IHJlYyBzZWFyY2hfcGh5c2ljYWwgc2V4cCB+Y29udGFpbmVkID1cbiAgaWYgc2V4cCA9PSBjb250YWluZWRcbiAgdGhlbiBgRm91bmRcbiAgZWxzZSAoXG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBBdG9tIF8gLT4gYE5vdF9mb3VuZFxuICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBgTm90X2ZvdW5kXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgbGV0IHJlcyA9IHNlYXJjaF9waHlzaWNhbCBoIH5jb250YWluZWQgaW5cbiAgICAgICAgICAobWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICAgfCBgTm90X2ZvdW5kIC0+IGxvb3AgKGkgKyAxKSB0XG4gICAgICAgICAgIHwgI2ZvdW5kIGFzIGZvdW5kIC0+IGBQb3MgKGksIGZvdW5kKSlcbiAgICAgIGluXG4gICAgICBsb29wIDAgbHN0KVxuOztcblxubGV0IHJlYyBzdWJzdF9mb3VuZCBzZXhwIH5zdWJzdCA9IGZ1bmN0aW9uXG4gIHwgYEZvdW5kIC0+IHN1YnN0XG4gIHwgYFBvcyAocG9zLCBmb3VuZCkgLT5cbiAgICAobWF0Y2ggc2V4cCB3aXRoXG4gICAgIHwgQXRvbSBfIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBhdG9tIHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgfCBMaXN0IGxzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBhY2MgcG9zID0gZnVuY3Rpb25cbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJTZXhwbGliLlNleHAuc3Vic3RfZm91bmQ6IHNob3J0IGxpc3Qgd2hlbiBwb3NpdGlvbiByZXF1ZXN0ZWRcIlxuICAgICAgICAgfCBoIDo6IHQgd2hlbiBwb3MgPD4gMCAtPiBsb29wIChoIDo6IGFjYykgKHBvcyAtIDEpIHRcbiAgICAgICAgIHwgaCA6OiB0IC0+IExpc3QgKExpc3QucmV2X2FwcGVuZCBhY2MgKHN1YnN0X2ZvdW5kIGggfnN1YnN0IGZvdW5kIDo6IHQpKVxuICAgICAgIGluXG4gICAgICAgbG9vcCBbXSBwb3MgbHN0KVxuOztcbiIsIigqIHBhY2thZ2luZyBvZiBhbm5vdGF0ZWQgc2V4cCBmdW5jdGlvbnMgKilcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciBmIHRcbiAgbGV0IG1hcCB0IH5mID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCBmIHQpXG5lbmRcblxuaW5jbHVkZSBUeXBlX3dpdGhfbGF5b3V0XG5cbnR5cGUgcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS50ID1cbiAgeyByb3cgOiBpbnRcbiAgOyBjb2wgOiBpbnRcbiAgfVxuXG5sZXQgc2V4cF9vZl9wb3MgPSBTcmNfcG9zLlJlbGF0aXZlLnNleHBfb2ZfdFxuXG5tb2R1bGUgTGV4ZXIgPSBzdHJ1Y3RcbiAgbGV0IG1haW4gPSBMZXhlci5tYWluX3dpdGhfbGF5b3V0XG5lbmRcblxubW9kdWxlIFBhcnNlciA9IFBhcnNlcl93aXRoX2xheW91dFxuXG5tb2R1bGUgUmVuZGVyID0gc3RydWN0XG4gIG1vZHVsZSBSZWxfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZVxuICBtb2R1bGUgQWJzX3BvcyA9IFNyY19wb3MuQWJzb2x1dGVcblxuICB0eXBlIGxhc3RfYXRvbSA9XG4gICAgeyBpbW1lZF9hZnRlciA6IEFic19wb3MudFxuICAgIDsgdW5lc2NhcGVkIDogYm9vbFxuICAgIH1cblxuICB0eXBlIHN0YXRlID1cbiAgICB7IG11dGFibGUgcm93X3NoaWZ0IDogUmVsX3Bvcy50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnQgOiBBYnNfcG9zLnRcbiAgICA7IG11dGFibGUgbGFzdF9hdG9tIDogbGFzdF9hdG9tIG9wdGlvblxuICAgIDsgbXV0YWJsZSBsYXN0X2NvbW1lbnRfcm93IDogaW50XG4gICAgfVxuXG4gICgqIHRoZSBwb2ludCBvZiBbaW1tZWRfYWZ0ZXJfbGFzdF9hdG9tXSBpcyB0byBwcmV2ZW50XG4gICAgIChBIEIgQykgZnJvbSByZW5kZXJpbmcgYXMgKEEgQkJDKSBhZnRlciB3ZSByZXBsYWNlIEIgd2l0aCBCQiAqKVxuXG4gIHR5cGUgJ2EgdCA9IChjaGFyIC0+IHVuaXQpIC0+IHN0YXRlIC0+ICdhXG5cbiAgbGV0IHJldHVybiBhIF9wdXRjIF9zdCA9IGFcbiAgbGV0IGJpbmQgbSB+ZiBwdXRjIHN0ID0gZiAobSBwdXRjIHN0KSBwdXRjIHN0XG5cbiAgbGV0IHJ1biBwdXRjIG0gPVxuICAgIG1cbiAgICAgIHB1dGNcbiAgICAgIHsgcm93X3NoaWZ0ID0gUmVsX3Bvcy56ZXJvXG4gICAgICA7IGN1cnJlbnQgPSBBYnNfcG9zLm9yaWdpblxuICAgICAgOyBsYXN0X2F0b20gPSBOb25lXG4gICAgICA7IGxhc3RfY29tbWVudF9yb3cgPSAwICgqIGJlZm9yZSB0aGUgZmlsZSBzdGFydHMgKilcbiAgICAgIH1cbiAgOztcblxuICBsZXQgZW1pdF9jaGFyIHB1dGMgc3QgYyA9XG4gICAgbGV0IHsgQWJzX3Bvcy5jb2w7IHJvdyB9ID0gc3QuY3VycmVudCBpblxuICAgIHB1dGMgYztcbiAgICBpZiBjID0gJ1xcbidcbiAgICB0aGVuIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdyA9IDEgKyByb3c7IGNvbCA9IDEgfVxuICAgIGVsc2Ugc3QuY3VycmVudCA8LSB7IEFic19wb3Mucm93OyBjb2wgPSAxICsgY29sIH1cbiAgOztcblxuICBsZXQgZW1pdF9zdHJpbmcgcHV0YyBzdCBzdHIgPVxuICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0IHN0ci5baV1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhcnMgcHV0YyBzdCBjIH5uID0gZW1pdF9zdHJpbmcgcHV0YyBzdCAoU3RyaW5nLm1ha2UgbiBjKVxuXG4gIGxldCBhZHZhbmNlIHB1dGMgfmFuY2hvciBzdCB+Ynk6ZGVsdGEgfnVuZXNjYXBlZF9hdG9tIH5saW5lX2NvbW1lbnQgPVxuICAgIGxldCBuZXdfcG9zID0gQWJzX3Bvcy5hZGQgKEFic19wb3MuYWRkIGFuY2hvciBkZWx0YSkgc3Qucm93X3NoaWZ0IGluXG4gICAgbGV0IG5lZWRfdG9fbGVhdmVfcm9vbV9iZXR3ZWVuX3R3b191bmVzY2FwZWRfYXRvbXNfbGVzdF90aGV5X2JlY29tZV9vbmUgPVxuICAgICAgdW5lc2NhcGVkX2F0b21cbiAgICAgICYmXG4gICAgICBtYXRjaCBzdC5sYXN0X2F0b20gd2l0aFxuICAgICAgfCBTb21lIHsgaW1tZWRfYWZ0ZXI7IHVuZXNjYXBlZCA9IHByZXZfdW5lc2NhcGVkIH0gLT5cbiAgICAgICAgbmV3X3BvcyA9IGltbWVkX2FmdGVyICYmIHByZXZfdW5lc2NhcGVkXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICBpblxuICAgICgqIGF2b2lkIGpvaW5pbmcgc3Vic2VxdWVudCBpdGVtcyBpbnRvIGEgcHJlY2VkaW5nIGxpbmUgY29tbWVudCAqKVxuICAgIGxldCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCA9IG5ld19wb3Mucm93ID0gc3QubGFzdF9jb21tZW50X3JvdyBpblxuICAgIGxldCBuZWVkX3RvX3JlcG9zaXRpb24gPVxuICAgICAgKG5vdCAoQWJzX3Bvcy5nZXEgbmV3X3BvcyBzdC5jdXJyZW50KSlcbiAgICAgIHx8IG5lZWRfdG9fY2xlYXJfbGluZV9jb21tZW50XG4gICAgICB8fCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lXG4gICAgaW5cbiAgICBsZXQgcm93X2RlbHRhLCBuZXdfcG9zID1cbiAgICAgIGlmIG5lZWRfdG9fcmVwb3NpdGlvblxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHJlcG9zaXRpb25pbmcgaGV1cmlzdGljOiBqdXN0IG1vdmUgdG8gdGhlIG5leHQgZnJlc2ggcm93ICopXG4gICAgICAgIGxldCBuZXdfcm93ID0gMSArIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgICAgbGV0IHJvd19kZWx0YSA9IG5ld19yb3cgLSBuZXdfcG9zLkFic19wb3Mucm93IGluXG4gICAgICAgIHJvd19kZWx0YSwgeyBBYnNfcG9zLnJvdyA9IG5ld19yb3c7IGNvbCA9IG5ld19wb3MuQWJzX3Bvcy5jb2wgfSlcbiAgICAgIGVsc2UgMCwgbmV3X3Bvc1xuICAgIGluXG4gICAgKCogYWR2YW5jZSB0byBuZXdfcG9zIGJ5IGVtaXR0aW5nIHdoaXRlc3BhY2UgKilcbiAgICBpZiBuZXdfcG9zLkFic19wb3Mucm93ID4gc3QuY3VycmVudC5BYnNfcG9zLnJvd1xuICAgIHRoZW4gKFxuICAgICAgbGV0IG4gPSBuZXdfcG9zLkFic19wb3Mucm93IC0gc3QuY3VycmVudC5BYnNfcG9zLnJvdyBpblxuICAgICAgZW1pdF9jaGFycyBwdXRjIHN0ICdcXG4nIH5uKTtcbiAgICBpZiBuZXdfcG9zLkFic19wb3MuY29sID4gc3QuY3VycmVudC5BYnNfcG9zLmNvbFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG4gPSBuZXdfcG9zLkFic19wb3MuY29sIC0gc3QuY3VycmVudC5BYnNfcG9zLmNvbCBpblxuICAgICAgZW1pdF9jaGFycyBwdXRjIHN0ICcgJyB+bik7XG4gICAgYXNzZXJ0IChuZXdfcG9zID0gc3QuY3VycmVudCk7XG4gICAgaWYgbGluZV9jb21tZW50IHRoZW4gc3QubGFzdF9jb21tZW50X3JvdyA8LSBzdC5jdXJyZW50LnJvdztcbiAgICBzdC5yb3dfc2hpZnRcbiAgICA8LSB7IHN0LnJvd19zaGlmdCB3aXRoIFJlbF9wb3Mucm93ID0gc3Qucm93X3NoaWZ0LlJlbF9wb3Mucm93ICsgcm93X2RlbHRhIH1cbiAgOztcblxuICBsZXQgcmVjIHJlbmRlcl90IHB1dGMgfmFuY2hvciAoc3QgOiBzdGF0ZSkgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBdG9tIChkZWx0YSwgdGV4dCwgZm10X3RleHQpIC0+XG4gICAgICBsZXQgZm10X3RleHQgPVxuICAgICAgICBtYXRjaCBmbXRfdGV4dCB3aXRoXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiBQcmVfc2V4cC5tYWNoX21heWJlX2VzY19zdHIgdGV4dFxuICAgICAgICB8IFNvbWUgdGV4dCAtPiB0ZXh0XG4gICAgICBpblxuICAgICAgbGV0IHVuZXNjYXBlZCA9IGZtdF90ZXh0LlswXSA8PiAnXCInIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOnVuZXNjYXBlZCB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBmbXRfdGV4dDtcbiAgICAgIHN0Lmxhc3RfYXRvbSA8LSBTb21lIHsgaW1tZWRfYWZ0ZXIgPSBzdC5jdXJyZW50OyB1bmVzY2FwZWQgfVxuICAgIHwgTGlzdCAoc3RhcnRfZGVsdGEsIHRvY3MsIGVuZF9kZWx0YSkgLT5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6c3RhcnRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGxldCBjaGlsZF9hbmNob3IgPSBBYnNfcG9zLnN1YiBzdC5jdXJyZW50IHN0LnJvd19zaGlmdCBpblxuICAgICAgZW1pdF9jaGFyIHB1dGMgc3QgJygnO1xuICAgICAgTGlzdC5pdGVyIHRvY3MgfmY6KGZ1biB0b2MgLT4gcmVuZGVyX3RvYyBwdXRjIH5hbmNob3I6Y2hpbGRfYW5jaG9yIHN0IHRvYyk7XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmVuZF9kZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9jaGFyIHB1dGMgc3QgJyknO1xuICAgICAgKClcblxuICBhbmQgcmVuZGVyX3RvYyBwdXRjIH5hbmNob3Igc3QgPSBmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHJlbmRlcl90IHB1dGMgfmFuY2hvciBzdCB0XG4gICAgfCBDb21tZW50IGMgLT4gcmVuZGVyX2MgcHV0YyB+YW5jaG9yIHN0IGNcblxuICBhbmQgcmVuZGVyX2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFBsYWluX2NvbW1lbnQgKGRlbHRhLCB0ZXh0KSAtPlxuICAgICAgbGV0IGxpbmVfY29tbWVudCA9IFN0cmluZy5sZW5ndGggdGV4dCA+IDAgJiYgdGV4dC5bMF0gPSAnOycgaW5cbiAgICAgIGFkdmFuY2UgcHV0YyBzdCB+Ynk6ZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgdGV4dFxuICAgIHwgU2V4cF9jb21tZW50IChkZWx0YSwgY3MsIHQpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IFwiIztcIjtcbiAgICAgIExpc3QuaXRlciBjcyB+ZjoocmVuZGVyX2MgcHV0YyB+YW5jaG9yIHN0KTtcbiAgICAgIHJlbmRlcl90IHB1dGMgfmFuY2hvciBzdCB0XG4gIDs7XG5cbiAgbGV0IHJlbmRlciBhc2V4cCBwdXRjIHN0ID0gcmVuZGVyX3RvYyBwdXRjIH5hbmNob3I6QWJzX3Bvcy5vcmlnaW4gc3QgYXNleHBcbiAgbGV0IHNleHAgPSByZW5kZXJcbmVuZFxuXG5tb2R1bGUgRm9yZ2V0ID0gc3RydWN0XG4gICgqIEluIGNwcyB0byBwcmV2ZW50IG5vbi10YWlsIHJlY3Vyc2lvbi5cbiAgICAgVGhlIHBvbHltb3JwaGlzbSBpbiB0aGUgc2lnbmF0dXJlIGVuc3VyZXMgdGhhdCBlYWNoIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgb25seSB0aHJvdWdoIHRoZSBjb250aW51YXRpb24uICopXG4gIG1vZHVsZSBDcHMgOiBzaWdcbiAgICB2YWwgZm9yZ2V0X3QgOiB0IC0+IChUeXBlLnQgLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2MgOiB0X29yX2NvbW1lbnQgLT4gKFR5cGUudCBvcHRpb24gLT4gJ3IpIC0+ICdyXG4gICAgdmFsIGZvcmdldF90b2NzIDogdF9vcl9jb21tZW50IGxpc3QgLT4gKFR5cGUudCBsaXN0IC0+ICdyKSAtPiAnclxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgcmVjIGZvcmdldF90IHQgayA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgQXRvbSAoXywgeCwgXykgLT4gayAoVHlwZS5BdG9tIHgpXG4gICAgICB8IExpc3QgKF8sIHRvY3MsIF8pIC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrIChUeXBlLkxpc3QgeHMpKVxuXG4gICAgYW5kIGZvcmdldF90b2NzIHRvY3MgayA9XG4gICAgICBtYXRjaCB0b2NzIHdpdGhcbiAgICAgIHwgW10gLT4gayBbXVxuICAgICAgfCB0b2MgOjogdG9jcyAtPlxuICAgICAgICBmb3JnZXRfdG9jIHRvYyAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gZm9yZ2V0X3RvY3MgdG9jcyBrXG4gICAgICAgICAgfCBTb21lIHggLT4gZm9yZ2V0X3RvY3MgdG9jcyAoZnVuIHhzIC0+IGsgKHggOjogeHMpKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jIHRvYyBrID1cbiAgICAgIG1hdGNoIHRvYyB3aXRoXG4gICAgICB8IENvbW1lbnQgXyAtPiBrIE5vbmVcbiAgICAgIHwgU2V4cCB0IC0+IGZvcmdldF90IHQgKGZ1biB4IC0+IGsgKFNvbWUgeCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHQgeCA9IENwcy5mb3JnZXRfdCB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50IHggPSBDcHMuZm9yZ2V0X3RvYyB4IChmdW4geSAtPiB5KVxuICBsZXQgdF9vcl9jb21tZW50cyB4ID0gQ3BzLmZvcmdldF90b2NzIHggKGZ1biB5IC0+IHkpXG5lbmRcbiIsIm9wZW4gUHJpbnRmXG5vcGVuIEJpZ2FycmF5XG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxub3BlbiBTZXhwXG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsIGludDhfdW5zaWduZWRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgZmxvYXQzMl92ZWMgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgZmxvYXQ2NF92ZWMgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gZmxvYXQ2NF92ZWNcbnR5cGUgZmxvYXQzMl9tYXQgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgZmxvYXQ2NF9tYXQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gZmxvYXQ2NF9tYXRcblxubGV0IHNleHBfb2ZfZmxvYXRfdmVjIHZlYyA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkxLmRpbSB2ZWMgZG93bnRvIDEgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfZmxvYXQgdmVjLntpfSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBMaXN0ICFsc3RfcmVmXG47O1xuXG5sZXQgc2V4cF9vZl9iaWdzdHJpbmcgKGJzdHIgOiBiaWdzdHJpbmcpID1cbiAgbGV0IG4gPSBBcnJheTEuZGltIGJzdHIgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBzdHIgaSBic3RyLntpfVxuICBkb25lO1xuICBBdG9tIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0cilcbjs7XG5cbmxldCBzZXhwX29mX2Zsb2F0MzJfdmVjICh2ZWMgOiBmbG9hdDMyX3ZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcbmxldCBzZXhwX29mX2Zsb2F0NjRfdmVjICh2ZWMgOiBmbG9hdDY0X3ZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcbmxldCBzZXhwX29mX3ZlYyAodmVjIDogdmVjKSA9IHNleHBfb2ZfZmxvYXRfdmVjIHZlY1xuXG5sZXQgc2V4cF9vZl9mbG9hdF9tYXQgbWF0ID1cbiAgbGV0IG0gPSBBcnJheTIuZGltMSBtYXQgaW5cbiAgbGV0IG4gPSBBcnJheTIuZGltMiBtYXQgaW5cbiAgbGV0IGxzdF9yZWYgPSByZWYgW10gaW5cbiAgKCogSXQncyBzdXJwcmlzaW5nIHRoYXQgd2Ugc2VyaWFsaXplIFtGb3J0cmFuX2xheW91dF0gbWF0cmljZXMgaW4gcm93LW1ham9yIG9yZGVyLiBJIGNhblxuICAgICBvbmx5IHNwZWN1bGF0ZSB0aGF0IGl0IHdhcyBjaG9zZW4gZm9yIHJlYWRhYmlsaXR5LiBUaGUgY2FjaGUgcGVyZm9ybWFuY2UgaXNcbiAgICAgaXJyZWxldmFudCBiZWNhdXNlIHBlb3BsZSB3aG8gY2FyZSB3b24ndCBzZXJpYWxpemUgdG8gc2V4cC4gKilcbiAgZm9yIHJvdyA9IG4gZG93bnRvIDEgZG9cbiAgICBmb3IgY29sID0gbSBkb3dudG8gMSBkb1xuICAgICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IG1hdC57Y29sLCByb3d9IDo6ICFsc3RfcmVmXG4gICAgZG9uZVxuICBkb25lO1xuICBMaXN0IChzZXhwX29mX2ludCBtIDo6IHNleHBfb2ZfaW50IG4gOjogIWxzdF9yZWYpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX21hdCAobWF0IDogZmxvYXQzMl9tYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgc2V4cF9vZl9mbG9hdDY0X21hdCAobWF0IDogZmxvYXQ2NF9tYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgc2V4cF9vZl9tYXQgKG1hdCA6IG1hdCkgPSBzZXhwX29mX2Zsb2F0X21hdCBtYXRcbmxldCBiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIDogYmlnc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cblxubGV0IGJpZ3N0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBic3RyID0gQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IGxlbiBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBic3RyLntpfSA8LSBzdHIuW2ldXG4gICAgZG9uZTtcbiAgICBic3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJiaWdzdHJpbmdfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXRfdmVjIGNyZWF0ZV9mbG9hdF92ZWMgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gZW1wdHlfZmxvYXRfdmVjXG4gIHwgTGlzdCBsc3QgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbHN0IGluXG4gICAgbGV0IHJlcyA9IGNyZWF0ZV9mbG9hdF92ZWMgbGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXNcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIHJlcy57aX0gPC0gZmxvYXRfb2Zfc2V4cCBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIGxzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfdmVjX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX3ZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X3ZlYyA9IEFycmF5MS5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGVtcHR5X2Zsb2F0MzJfdmVjID0gY3JlYXRlX2Zsb2F0MzJfdmVjIDBcbmxldCBlbXB0eV9mbG9hdDY0X3ZlYyA9IGNyZWF0ZV9mbG9hdDY0X3ZlYyAwXG5sZXQgZmxvYXQzMl92ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0MzJfdmVjIGNyZWF0ZV9mbG9hdDMyX3ZlY1xubGV0IGZsb2F0NjRfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfb2Zfc2V4cCA9IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0NjRfdmVjIGNyZWF0ZV9mbG9hdDY0X3ZlY1xubGV0IHZlY19zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gTGlzdCAoTWFueSBGbG9hdCkgfVxubGV0IGZsb2F0MzJfdmVjX3NleHBfZ3JhbW1hciA9IHZlY19zZXhwX2dyYW1tYXJcbmxldCBmbG9hdDY0X3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5cbmxldCBjaGVja190b29fbXVjaF9kYXRhIHNleHAgZGF0YSByZXMgPVxuICBpZiBkYXRhID0gW10gdGhlbiByZXMgZWxzZSBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IHRvbyBtdWNoIGRhdGFcIiBzZXhwXG47O1xuXG5sZXQgZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0X21hdCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgTGlzdCAoc20gOjogc24gOjogZGF0YSkgLT5cbiAgICBsZXQgbSA9IGludF9vZl9zZXhwIHNtIGluXG4gICAgbGV0IG4gPSBpbnRfb2Zfc2V4cCBzbiBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfbWF0IG0gbiBpblxuICAgIGlmIG0gPSAwIHx8IG4gPSAwXG4gICAgdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgZGF0YSByZXNcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcF9jb2xzIGNvbCBkYXRhID1cbiAgICAgICAgbGV0IHZlYyA9IEFycmF5Mi5zbGljZV9yaWdodCByZXMgY29sIGluXG4gICAgICAgIGxldCByZWMgbG9vcF9yb3dzIHJvdyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbXSAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IG5vdCBlbm91Z2ggZGF0YVwiIHNleHBcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgdmVjLntyb3d9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgICAgIGlmIHJvdyA9IG1cbiAgICAgICAgICAgIHRoZW4gaWYgY29sID0gbiB0aGVuIGNoZWNrX3Rvb19tdWNoX2RhdGEgc2V4cCB0IHJlcyBlbHNlIGxvb3BfY29scyAoY29sICsgMSkgdFxuICAgICAgICAgICAgZWxzZSBsb29wX3Jvd3MgKHJvdyArIDEpIHRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcF9yb3dzIDEgZGF0YVxuICAgICAgaW5cbiAgICAgIGxvb3BfY29scyAxIGRhdGEpXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbGlzdCB0b28gc2hvcnRcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJmbG9hdF9tYXRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0MzJfbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0XG5sZXQgY3JlYXRlX2Zsb2F0NjRfbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0XG5sZXQgZmxvYXQzMl9tYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDMyX21hdFxubGV0IGZsb2F0NjRfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcbmxldCBtYXRfb2Zfc2V4cCA9IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdDY0X21hdFxuXG5sZXQgbWF0X3NleHBfZ3JhbW1hciA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChDb25zIChJbnRlZ2VyLCBDb25zIChJbnRlZ2VyLCBNYW55IEZsb2F0KSkpIH1cbjs7XG5cbmxldCBmbG9hdDMyX21hdF9zZXhwX2dyYW1tYXIgPSBtYXRfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IHN0cmluZ19vZl9fb2ZfX3NleHBfb2YgdG9fc2V4cCB4ID0gU2V4cC50b19zdHJpbmcgKHRvX3NleHAgeClcblxubGV0IG9mX3N0cmluZ19fb2ZfX29mX3NleHAgb2Zfc2V4cCBzID1cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBTZXhwLm9mX3N0cmluZyBzIGluXG4gICAgb2Zfc2V4cCBzZXhwXG4gIHdpdGhcbiAgfCBlIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIChzcHJpbnRmIFwib2Zfc3RyaW5nIGZhaWxlZCBvbiAlcyB3aXRoICVzXCIgcyAoU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKSkpXG47O1xuIiwibW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNleHBfb2ZfdCA9IENvbnYuc2V4cF9vZl9oYXNodGJsXG4gIGxldCB0X29mX3NleHAgPSBDb252Lmhhc2h0Ymxfb2Zfc2V4cFxuZW5kXG5cbm1vZHVsZSBMYXp5ID0gc3RydWN0XG4gIGluY2x1ZGUgTGF6eVxuXG4gIGxldCB0X29mX3NleHAgPSBDb252LmxhenlfdF9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfbGF6eV90XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYubGF6eV90X3NleHBfZ3JhbW1hclxuZW5kXG5cbmxldCBzZXhwX29mX3VuaXQgPSBDb252LnNleHBfb2ZfdW5pdFxubGV0IHVuaXRfb2Zfc2V4cCA9IENvbnYudW5pdF9vZl9zZXhwXG5sZXQgdW5pdF9zZXhwX2dyYW1tYXIgPSBDb252LnVuaXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9ib29sID0gQ29udi5zZXhwX29mX2Jvb2xcbmxldCBib29sX29mX3NleHAgPSBDb252LmJvb2xfb2Zfc2V4cFxubGV0IGJvb2xfc2V4cF9ncmFtbWFyID0gQ29udi5ib29sX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2Zfc3RyaW5nID0gQ29udi5zZXhwX29mX3N0cmluZ1xubGV0IHN0cmluZ19vZl9zZXhwID0gQ29udi5zdHJpbmdfb2Zfc2V4cFxubGV0IHN0cmluZ19zZXhwX2dyYW1tYXIgPSBDb252LnN0cmluZ19zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2NoYXIgPSBDb252LnNleHBfb2ZfY2hhclxubGV0IGNoYXJfb2Zfc2V4cCA9IENvbnYuY2hhcl9vZl9zZXhwXG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgPSBDb252LmNoYXJfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQgPSBDb252LnNleHBfb2ZfaW50XG5sZXQgaW50X29mX3NleHAgPSBDb252LmludF9vZl9zZXhwXG5sZXQgaW50X3NleHBfZ3JhbW1hciA9IENvbnYuaW50X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfZmxvYXQgPSBDb252LnNleHBfb2ZfZmxvYXRcbmxldCBmbG9hdF9vZl9zZXhwID0gQ29udi5mbG9hdF9vZl9zZXhwXG5sZXQgZmxvYXRfc2V4cF9ncmFtbWFyID0gQ29udi5mbG9hdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2ludDMyID0gQ29udi5zZXhwX29mX2ludDMyXG5sZXQgaW50MzJfb2Zfc2V4cCA9IENvbnYuaW50MzJfb2Zfc2V4cFxubGV0IGludDMyX3NleHBfZ3JhbW1hciA9IENvbnYuaW50MzJfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQ2NCA9IENvbnYuc2V4cF9vZl9pbnQ2NFxubGV0IGludDY0X29mX3NleHAgPSBDb252LmludDY0X29mX3NleHBcbmxldCBpbnQ2NF9zZXhwX2dyYW1tYXIgPSBDb252LmludDY0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbmF0aXZlaW50ID0gQ29udi5zZXhwX29mX25hdGl2ZWludFxubGV0IG5hdGl2ZWludF9vZl9zZXhwID0gQ29udi5uYXRpdmVpbnRfb2Zfc2V4cFxubGV0IG5hdGl2ZWludF9zZXhwX2dyYW1tYXIgPSBDb252Lm5hdGl2ZWludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3JlZiA9IENvbnYuc2V4cF9vZl9yZWZcbmxldCByZWZfb2Zfc2V4cCA9IENvbnYucmVmX29mX3NleHBcbmxldCByZWZfc2V4cF9ncmFtbWFyID0gQ29udi5yZWZfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9sYXp5X3QgPSBDb252LnNleHBfb2ZfbGF6eV90XG5sZXQgbGF6eV90X29mX3NleHAgPSBDb252LmxhenlfdF9vZl9zZXhwXG5sZXQgbGF6eV90X3NleHBfZ3JhbW1hciA9IENvbnYubGF6eV90X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2Zfb3B0aW9uID0gQ29udi5zZXhwX29mX29wdGlvblxubGV0IG9wdGlvbl9vZl9zZXhwID0gQ29udi5vcHRpb25fb2Zfc2V4cFxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgPSBDb252Lm9wdGlvbl9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2xpc3QgPSBDb252LnNleHBfb2ZfbGlzdFxubGV0IGxpc3Rfb2Zfc2V4cCA9IENvbnYubGlzdF9vZl9zZXhwXG5sZXQgbGlzdF9zZXhwX2dyYW1tYXIgPSBDb252Lmxpc3Rfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9hcnJheSA9IENvbnYuc2V4cF9vZl9hcnJheVxubGV0IGFycmF5X29mX3NleHAgPSBDb252LmFycmF5X29mX3NleHBcbmxldCBhcnJheV9zZXhwX2dyYW1tYXIgPSBDb252LmFycmF5X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfZXhuID0gQ29udi5zZXhwX29mX2V4blxubGV0IGV4bl9zZXhwX2dyYW1tYXIgPSBDb252LnNleHBfdF9zZXhwX2dyYW1tYXJcbiIsImluY2x1ZGUgU2V4cF9ncmFtbWFyX2ludGZcbmluY2x1ZGUgU2V4cGxpYjAuU2V4cF9ncmFtbWFyXG5cbmxldCByZW1lbWJlcl90b191cGRhdGVfdGhlc2VfdG9nZXRoZXIgfnRfb2Zfc2V4cCB+dF9zZXhwX2dyYW1tYXIgPVxuICB0X29mX3NleHAsIHRfc2V4cF9ncmFtbWFyXG47O1xuIiwiKCogUGF0aDogTW9kdWxlIGZvciBTdWJzdGl0dXRpb25zIHdpdGhpbiBTLWV4cHJlc3Npb25zICopXG5cbm9wZW4gRm9ybWF0XG5vcGVuIFNleHBcblxudHlwZSBlbCA9XG4gIHwgUG9zIG9mIGludFxuICB8IE1hdGNoIG9mIHN0cmluZyAqIGludFxuICB8IFJlYyBvZiBzdHJpbmdcblxudHlwZSB0ID0gZWwgbGlzdFxuXG5sZXQgaWxsZWdhbF9hdG9tIGxvYyBzZXhwID1cbiAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGF0b206ICVzXCIgbG9jIChTZXhwLnRvX3N0cmluZyBzZXhwKSlcbjs7XG5cbmxldCBleHRyYWN0X3Bvc19sc3QgbG9jIHNleHAgaXggbHN0ID1cbiAgbGV0IHJlYyBsb29wIGFjYyBuID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguJXM6IGlsbGVnYWwgaW5kZXggJWQgaW46ICVzXCIgbG9jIGl4IHNleHBfc3RyKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdWJzdCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICAgIHwgU29tZSB4IC0+IExpc3QucmV2X2FwcGVuZCBhY2MgKHggOjogdClcbiAgICAgICAgaW5cbiAgICAgICAgc3Vic3QsIGgpXG4gICAgICBlbHNlIGxvb3AgKGggOjogYWNjKSAobiAtIDEpIHRcbiAgaW5cbiAgbG9vcCBbXSBpeCBsc3Rcbjs7XG5cbmxldCBleHRyYWN0X3BvcyBuID0gZnVuY3Rpb25cbiAgfCBMaXN0IGxzdCBhcyBzZXhwIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfcG9zXCIgc2V4cCBuIGxzdCBpblxuICAgIChmdW4geCAtPiBMaXN0IChzdWJzdCB4KSksIGVsXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9wb3NcIiBzZXhwXG47O1xuXG5sZXQgZXh0cmFjdF9tYXRjaCB0YWcgYXJnX2l4ID0gZnVuY3Rpb25cbiAgfCBMaXN0ICgoQXRvbSBzdHIgYXMgc2V4cCkgOjogYXJncykgd2hlbiBzdHIgPSB0YWcgLT5cbiAgICBsZXQgc3Vic3QsIGVsID0gZXh0cmFjdF9wb3NfbHN0IFwiZXh0cmFjdF9tYXRjaFwiIChMaXN0IGFyZ3MpIGFyZ19peCBhcmdzIGluXG4gICAgKGZ1biBtYXliZV94IC0+IExpc3QgKHNleHAgOjogc3Vic3QgbWF5YmVfeCkpLCBlbFxuICB8IExpc3QgXyBhcyBzZXhwIC0+XG4gICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgIGZhaWx3aXRoIChcIlBhdGguZXh0cmFjdF9tYXRjaDogdW5leHBlY3RlZCBuZXN0ZWQgbGlzdCBpbjogXCIgXiBzZXhwX3N0cilcbiAgfCBBdG9tIF8gYXMgc2V4cCAtPiBpbGxlZ2FsX2F0b20gXCJleHRyYWN0X21hdGNoXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgc2V4cF9zdHIgPSBTZXhwLnRvX3N0cmluZyBzZXhwIGluXG4gICAgICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC5leHRyYWN0X3JlYzoga2V5IFxcXCIlc1xcXCIgbm90IGZvdW5kIGluOiAlc1wiIGtleSBzZXhwX3N0cilcbiAgICAgIHwgTGlzdCBbIChBdG9tIHN0ciBhcyBzZXhwKTsgdiBdIDo6IHJlc3Qgd2hlbiBzdHIgPSBrZXkgLT5cbiAgICAgICAgbGV0IHN1YnN0IHggPSBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChMaXN0IFsgc2V4cDsgeCBdIDo6IHJlc3QpKSBpblxuICAgICAgICBzdWJzdCwgdlxuICAgICAgfCBoIDo6IHQgLT4gbG9vcCAoaCA6OiBhY2MpIHRcbiAgICBpblxuICAgIGxvb3AgW10gbHN0XG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9yZWNcIiBzZXhwXG47O1xuXG5sZXQgaWQgeCA9IHhcblxubGV0IHJlYyBzdWJzdF9vcHRpb24gKHN1cF9zdWJzdCwgZWwpIHJlc3QgPVxuICBsZXQgc3ViX3N1YnN0LCBzdWJfZWwgPSBzdWJzdF9wYXRoIGVsIHJlc3QgaW5cbiAgbGV0IHN1YnN0IHggPSBzdXBfc3Vic3QgKFNvbWUgKHN1Yl9zdWJzdCB4KSkgaW5cbiAgc3Vic3QsIHN1Yl9lbFxuXG5hbmQgc3Vic3RfcGF0aCBzZXhwID0gZnVuY3Rpb25cbiAgfCBQb3MgbiA6OiB0IC0+IHN1YnN0X29wdGlvbiAoZXh0cmFjdF9wb3MgbiBzZXhwKSB0XG4gIHwgTWF0Y2ggKHRhZywgYXJnX2l4KSA6OiB0IC0+IHN1YnN0X29wdGlvbiAoZXh0cmFjdF9tYXRjaCB0YWcgYXJnX2l4IHNleHApIHRcbiAgfCBSZWMga2V5IDo6IHJlc3QgLT5cbiAgICBsZXQgcmVjX3N1YnN0LCBlbCA9IGV4dHJhY3RfcmVjIGtleSBzZXhwIGluXG4gICAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gICAgbGV0IHN1YnN0IHggPSByZWNfc3Vic3QgKHN1Yl9zdWJzdCB4KSBpblxuICAgIHN1YnN0LCBzdWJfZWxcbiAgfCBbXSAtPiBpZCwgc2V4cFxuOztcblxubGV0IGltcGxvZGUgbHN0ID1cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBsZXQgcmVjIGxvb3AgaXggPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBCeXRlcy5zZXQgc3RyIGl4IGg7XG4gICAgICBsb29wIChpeCArIDEpIHRcbiAgICB8IFtdIC0+IEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gIGluXG4gIGxvb3AgMCBsc3Rcbjs7XG5cbmxldCBmYWlsX3BhcnNlIG1zZyA9IGZhaWx3aXRoIChcIlBhdGgucGFyc2U6IFwiIF4gbXNnKVxuXG5sZXQgcGFyc2Ugc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBmYWlsX3BhcnNlIFwicGF0aCBlbXB0eVwiXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBhY2MgZG90X2l4ID1cbiAgICAgIG1hdGNoIHN0ci5bZG90X2l4XSB3aXRoXG4gICAgICB8ICcuJyAtPlxuICAgICAgICBsZXQgZG90X2l4MSA9IGRvdF9peCArIDEgaW5cbiAgICAgICAgaWYgZG90X2l4MSA9IGxlblxuICAgICAgICB0aGVuIExpc3QucmV2IGFjY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVjIHBhcnNlX2RvdCBhY2Mgc3RyX2FjYyBpeCA9XG4gICAgICAgICAgICBpZiBpeCA9IGxlblxuICAgICAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgYWNjIFsgUmVjIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSkgXVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgICAgICAgICAgfCAnWycgLT5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIHBhcnNlX2luZGV4IGluZGV4X2FjYyBpeCA9XG4gICAgICAgICAgICAgICAgICBpZiBpeCA9IGxlblxuICAgICAgICAgICAgICAgICAgdGhlbiBmYWlsX3BhcnNlIFwiRU9GIHJlYWRpbmcgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHN0ci5baXhdLCBpbmRleF9hY2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggKFNvbWUgKGludF9vZl9jaGFyIGMgLSA0OCkpIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgKCcwJyAuLiAnOScgYXMgYyksIFNvbWUgaW5kZXhfYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19pbmRleF9hY2MgPSBTb21lICgoMTAgKiBpbmRleF9hY2MpICsgaW50X29mX2NoYXIgYyAtIDQ4KSBpblxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IG5ld19pbmRleF9hY2MgKGl4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgfCAnXScsIE5vbmUgLT4gZmFpbF9wYXJzZSBcImVtcHR5IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgfCAnXScsIFNvbWUgaW5kZXhfYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RyX2FjYyA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFBvcyBpbmRleF9hY2NcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWF0Y2ggKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpLCBpbmRleF9hY2MpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaXgxID0gaXggKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgaWYgaXgxID0gbGVuXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiBMaXN0LnJldl9hcHBlbmQgYWNjIFsgcGF0aF9lbCBdXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBsb29wIChwYXRoX2VsIDo6IGFjYykgaXgxXG4gICAgICAgICAgICAgICAgICAgIHwgYywgXyAtPiBmYWlsX3BhcnNlIChzcHJpbnRmIFwiaWxsZWdhbCBjaGFyYWN0ZXIgaW4gaW5kZXg6ICVjXCIgYykpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBOb25lIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgJ1xcXFwnIC0+XG4gICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiBhZnRlciBlc2NhcGVcIlxuICAgICAgICAgICAgICAgIGVsc2UgcGFyc2VfZG90IGFjYyAoc3RyLltpeDFdIDo6IHN0cl9hY2MpIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgJy4nIC0+XG4gICAgICAgICAgICAgICAgaWYgc3RyX2FjYyA9IFtdIHRoZW4gZmFpbF9wYXJzZSBcImRvdWJsZSAnLidcIjtcbiAgICAgICAgICAgICAgICBsZXQgcGF0aF9lbCA9IFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfZG90IChwYXRoX2VsIDo6IGFjYykgW10gKGl4ICsgMSlcbiAgICAgICAgICAgICAgfCBjIC0+IHBhcnNlX2RvdCBhY2MgKGMgOjogc3RyX2FjYykgKGl4ICsgMSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9kb3QgYWNjIFtdIGRvdF9peDEpXG4gICAgICB8IGMgLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcIicuJyBleHBlY3RlZDsgZ290ICclYydcIiBjKVxuICAgIGluXG4gICAgbG9vcCBbXSAwKVxuOztcblxubGV0IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwID1cbiAgbGV0IHBhdGggPVxuICAgIG1hdGNoIHBhdGgsIHN0ciB3aXRoXG4gICAgfCBTb21lIHBhdGgsIF8gLT4gcGF0aFxuICAgIHwgTm9uZSwgU29tZSBzdHIgLT4gcGFyc2Ugc3RyXG4gICAgfCBOb25lLCBOb25lIC0+IFtdXG4gIGluXG4gIHN1YnN0X3BhdGggc2V4cCBwYXRoXG47O1xuXG5sZXQgZ2V0ID9wYXRoID9zdHIgc2V4cCA9IHNuZCAoZ2V0X3N1YnN0IHBhdGggc3RyIHNleHApXG5cbmxldCByZXBsYWNlID9wYXRoID9zdHIgc2V4cCB+c3Vic3QgPVxuICBsZXQgc3Vic3RfZnVuLCBfID0gZ2V0X3N1YnN0IHBhdGggc3RyIHNleHAgaW5cbiAgc3Vic3RfZnVuIHN1YnN0XG47O1xuXG5sZXQgcmVwbGFjZV9ub19wYXRoIH5zdHIgc2V4cCB+c3Vic3QgPSByZXBsYWNlIH5zdHIgc2V4cCB+c3Vic3RcbiIsImxldCByZWdpc3RlciBleGMgZXhjX25hbWUgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gX2V4YyAtPlxuICAgIFNleHAuQXRvbSBleGNfbmFtZSlcbjs7XG5cbmxldCBtYWdpY19maWVsZCByZXByIG4gPSBPYmoubWFnaWMgKE9iai5maWVsZCByZXByIG4pXG5cbmxldCByZWdpc3RlcjEgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMSBdKVxuOztcblxubGV0IHJlZ2lzdGVyMiBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyID1cbiAgbGV0IGV4YyA9IG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMiBdKVxuOztcblxubGV0IHJlZ2lzdGVyMyBtYWtlX2V4YyBleGNfbmFtZSBzZXhwX29mX2FyZzEgc2V4cF9vZl9hcmcyIHNleHBfb2ZfYXJnMyA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDMgXSlcbjs7XG5cbmxldCByZWdpc3RlcjQgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgc2V4cF9vZl9hcmc0ID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI1XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDUgXSlcbjs7XG5cbmxldCByZWdpc3RlcjZcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNiBdKVxuOztcblxubGV0IHJlZ2lzdGVyN1xuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI4XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1OyBzZXhwNjsgc2V4cDc7IHNleHA4IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI5XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICBdKVxuOztcblxubGV0IHJlZ2lzdGVyMTBcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gICAgICBzZXhwX29mX2FyZzhcbiAgICAgIHNleHBfb2ZfYXJnOVxuICAgICAgc2V4cF9vZl9hcmcxMFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIGxldCBzZXhwOSA9IHNleHBfb2ZfYXJnOSAobWFnaWNfZmllbGQgcmVwciA5KSBpblxuICAgIGxldCBzZXhwMTAgPSBzZXhwX29mX2FyZzEwIChtYWdpY19maWVsZCByZXByIDEwKSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWVcbiAgICAgIDsgc2V4cDFcbiAgICAgIDsgc2V4cDJcbiAgICAgIDsgc2V4cDNcbiAgICAgIDsgc2V4cDRcbiAgICAgIDsgc2V4cDVcbiAgICAgIDsgc2V4cDZcbiAgICAgIDsgc2V4cDdcbiAgICAgIDsgc2V4cDhcbiAgICAgIDsgc2V4cDlcbiAgICAgIDsgc2V4cDEwXG4gICAgICBdKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIFwiRmFzdCBTcGxpdHRhYmxlIFBzZXVkb3JhbmRvbSBOdW1iZXIgR2VuZXJhdG9yc1wiIGJ5IFN0ZWVsZSBldC5cbiAgICBhbC4gKDEpLiAgVGhlIHBhcGVyJ3MgYWxnb3JpdGhtIHByb3ZpZGVzIGRlY2VudCByYW5kb21uZXNzIGZvciBtb3N0IHB1cnBvc2VzLCBidXRcbiAgICBzYWNyaWZpY2VzIGNyeXB0b2dyYXBoaWMtcXVhbGl0eSByYW5kb21uZXNzIGluIGZhdm9yIG9mIHBlcmZvcm1hbmNlLiAgVGhlIG9yaWdpbmFsXG4gICAgaW1wbGVtZW50YXRpb24gd2FzIHRlc3RlZCB3aXRoIERpZUhhcmRlciBhbmQgQmlnQ3J1c2g7IHNlZSB0aGUgcGFwZXIgZm9yIGRldGFpbHMuXG5cbiAgICBPdXIgaW1wbGVtZW50YXRpb24gaXMgYSBwb3J0IGZyb20gSmF2YSB0byBPQ2FtbCBvZiB0aGUgcGFwZXIncyBhbGdvcml0aG0uICBPdGhlciB0aGFuXG4gICAgdGhlIGNob2ljZSBvZiBpbml0aWFsIHNlZWQgZm9yIFtjcmVhdGVdLCBvdXIgcG9ydCBzaG91bGQgYmUgZmFpdGhmdWwuICBXZSBoYXZlIG5vdFxuICAgIHJlLXJ1biB0aGUgRGllSGFyZGVyIG9yIEJpZ0NydXNoIHRlc3RzIG9uIG91ciBpbXBsZW1lbnRhdGlvbi4gIE91ciBwb3J0IGlzIGFsc28gbm90IGFzXG4gICAgcGVyZm9ybWFudCBhcyB0aGUgb3JpZ2luYWw7IHR3byBmYWN0b3JzIHRoYXQgaHVydCB1cyBhcmUgYm94ZWQgW2ludDY0XSB2YWx1ZXMgYW5kIGxhY2tcbiAgICBvZiBhIFBPUENOVCBwcmltaXRpdmUuXG5cbiAgICAoMSkgaHR0cDovLzIwMTQuc3BsYXNoY29uLm9yZy9ldmVudC9vb3BzbGEyMDE0LWZhc3Qtc3BsaXR0YWJsZS1wc2V1ZG9yYW5kb20tbnVtYmVyLWdlbmVyYXRvcnNcbiAgICAoYWxzbyBtaXJyb3JlZCBhdCBodHRwOi8vZ2VlLmNzLm9zd2Vnby5lZHUvZGwvcGFwZXJzL29vcHNsYTE0LnBkZilcblxuICAgIEJld2FyZSB3aGVuIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZTsgaXQgaXMgZWFzeSB0byBpbXBsZW1lbnQgYSBbc3BsaXRdIG9wZXJhdGlvblxuICAgIHdob3NlIG91dHB1dCBpcyBub3QgYXMgXCJpbmRlcGVuZGVudFwiIGFzIGl0IHNlZW1zICgyKS4gIFRoaXMgYnVnIGNhdXNlZCBwcm9ibGVtcyBmb3JcbiAgICBIYXNrZWxsJ3MgUXVpY2tjaGVjayBsaWJyYXJ5IGZvciBhIGxvbmcgdGltZS5cblxuICAgICgyKSBTY2hhYXRodW4sIFwiRXZhbHVhdGlvbiBvZiBzcGxpdHRhYmxlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9yc1wiLCBKRlAgMjAxNS5cbiAgICBodHRwOi8vd3d3LmhnLnNjaGFhdGh1bi5uZXQvcmVzZWFyY2gvUGFwZXJzL2hnczIwMTVqZnAucGRmXG4qKVxuXG5vcGVuISBCYXNlXG5vcGVuICBJbnQ2NC5PXG5cbmxldCBpc19vZGQgeCA9IHggbG9yIDFMID0geFxuXG5sZXQgcG9wY291bnQgPSBJbnQ2NC5wb3Bjb3VudFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBzZWVkIDogaW50NjRcbiAgICA7IG9kZF9nYW1tYSAgICA6IGludDY0XG4gICAgfVxuXG4gIGxldCBnb2xkZW5fZ2FtbWEgPSAweDllMzdfNzliOV83ZjRhXzdjMTVMXG5cbiAgbGV0IG9mX2ludCBzZWVkID1cbiAgICB7IHNlZWQgICAgICA9IEludDY0Lm9mX2ludCBzZWVkXG4gICAgOyBvZGRfZ2FtbWEgPSBnb2xkZW5fZ2FtbWFcbiAgICB9XG5cbiAgbGV0IGNvcHkgeyBzZWVkIDsgb2RkX2dhbW1hIH0gPSB7IHNlZWQgOyBvZGRfZ2FtbWEgfVxuXG4gIGxldCBtaXhfYml0cyB6IG4gPVxuICAgIHogbHhvciAoeiBsc3IgbilcblxuICBsZXQgbWl4NjQgeiA9XG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAzMykgKiAweGZmNTFfYWZkN19lZDU1XzhjY2RMIGluXG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAzMykgKiAweGM0Y2VfYjlmZV8xYTg1X2VjNTNMIGluXG4gICAgbWl4X2JpdHMgeiAzM1xuXG4gIGxldCBtaXg2NF92YXJpYW50MTMgeiA9XG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAzMCkgKiAweGJmNThfNDc2ZF8xY2U0X2U1YjlMIGluXG4gICAgbGV0IHogPSAobWl4X2JpdHMgeiAyNykgKiAweDk0ZDBfNDliYl8xMzMxXzExZWJMIGluXG4gICAgbWl4X2JpdHMgeiAzMVxuXG4gIGxldCBtaXhfb2RkX2dhbW1hIHogPVxuICAgIGxldCB6ID0gKG1peDY0X3ZhcmlhbnQxMyB6KSBsb3IgMUwgaW5cbiAgICBsZXQgbiA9IHBvcGNvdW50ICh6IGx4b3IgKHogbHNyIDEpKSBpblxuICAgICgqIFRoZSBvcmlnaW5hbCBwYXBlciB1c2VzIFs+PV0gaW4gdGhlIGNvbmRpdGlvbmFsIGltbWVkaWF0ZWx5IGJlbG93OyBob3dldmVyIHRoaXMgaXNcbiAgICAgICBhIHR5cG8sIGFuZCB3ZSBjb3JyZWN0IGl0IGJ5IHVzaW5nIFs8XS4gVGhpcyB3YXMgZml4ZWQgaW4gcmVzcG9uc2UgdG8gWzFdIGFuZCBbMl0uXG5cbiAgICAgICBbMV0gaHR0cHM6Ly9naXRodWIuY29tL2phbmVzdHJlZXQvc3BsaXR0YWJsZV9yYW5kb20vaXNzdWVzLzFcbiAgICAgICBbMl0gaHR0cDovL3d3dy5wY2ctcmFuZG9tLm9yZy9wb3N0cy9idWdzLWluLXNwbGl0bWl4Lmh0bWxcbiAgICAqKVxuICAgIGlmIEludC4oIDwgKSBuIDI0XG4gICAgdGhlbiB6IGx4b3IgMHhhYWFhX2FhYWFfYWFhYV9hYWFhTFxuICAgIGVsc2UgelxuXG4gIGxldCV0ZXN0X3VuaXQgXCJvZGQgZ2FtbWFcIiA9XG4gICAgZm9yIGlucHV0ID0gLTFfMDAwXzAwMCB0byAxXzAwMF8wMDAgZG9cbiAgICAgIGxldCBvdXRwdXQgPSBtaXhfb2RkX2dhbW1hIChJbnQ2NC5vZl9pbnQgaW5wdXQpIGluXG4gICAgICBpZiBub3QgKGlzX29kZCBvdXRwdXQpIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgICBcImdhbW1hIHZhbHVlIGlzIG5vdCBvZGRcIlxuICAgICAgICAgICAgKGlucHV0ICA6IGludClcbiAgICAgICAgICAgIChvdXRwdXQgOiBpbnQ2NCldXG4gICAgZG9uZVxuXG4gIGxldCBuZXh0X3NlZWQgdCA9XG4gICAgbGV0IG5leHQgPSB0LnNlZWQgKyB0Lm9kZF9nYW1tYSBpblxuICAgIHQuc2VlZCA8LSBuZXh0O1xuICAgIG5leHRcblxuICBsZXQgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hID1cbiAgICBsZXQgc2VlZCAgICAgID0gbWl4NjQgICAgICAgICBzZWVkICBpblxuICAgIGxldCBvZGRfZ2FtbWEgPSBtaXhfb2RkX2dhbW1hIGdhbW1hIGluXG4gICAgeyBzZWVkOyBvZGRfZ2FtbWEgfVxuXG4gIGxldCByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlID1cbiAgICBSYW5kb20uU3RhdGUuaW50NjRfaW5jbCByYW5kb21fc3RhdGUgSW50NjQubWluX3ZhbHVlIEludDY0Lm1heF92YWx1ZVxuXG4gIGxldCBjcmVhdGUgcmFuZG9tX3N0YXRlID1cbiAgICBsZXQgc2VlZCAgPSByYW5kb21faW50NjQgcmFuZG9tX3N0YXRlIGluXG4gICAgbGV0IGdhbW1hID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBzcGxpdCB0ID1cbiAgICBsZXQgc2VlZCAgPSBuZXh0X3NlZWQgdCBpblxuICAgIGxldCBnYW1tYSA9IG5leHRfc2VlZCB0IGluXG4gICAgb2Zfc2VlZF9hbmRfZ2FtbWEgfnNlZWQgfmdhbW1hXG5cbiAgbGV0IG5leHRfaW50NjQgdCA9IG1peDY0IChuZXh0X3NlZWQgdClcblxuICAoKiBbcGVydHVyYl0gaXMgbm90IGZyb20gYW55IGV4dGVybmFsIHNvdXJjZSwgYnV0IHByb3ZpZGVzIGEgd2F5IHRvIG1peCBpbiBleHRlcm5hbFxuICAgICBlbnRyb3B5IHdpdGggYSBwc2V1ZG8tcmFuZG9tIHN0YXRlLiAqKVxuICBsZXQgcGVydHVyYiB0IHNhbHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgbWl4NjQgKEludDY0Lm9mX2ludCBzYWx0KSBpblxuICAgIHQuc2VlZCA8LSBuZXh0XG5cbmVuZFxuXG5sZXQgYm9vbCBzdGF0ZSA9IGlzX29kZCAoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSlcblxuKCogV2UgYWJ1c2UgdGVybWlub2xvZ3kgYW5kIHJlZmVyIHRvIGluZGl2aWR1YWwgdmFsdWVzIGFzIGJpYXNlZCBvciB1bmJpYXNlZC4gIE1vcmVcbiAgIHByb3Blcmx5LCB3aGF0IGlzIHVuYmlhc2VkIGlzIHRoZSBzYW1wbGVyIHRoYXQgcmVzdWx0cyBpZiB3ZSBrZWVwIG9ubHkgdGhlc2UgXCJ1bmJpYXNlZFwiXG4gICB2YWx1ZXMuICopXG5sZXQgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICB+ZHJhd1xuICAgICAgfnJlbWFpbmRlclxuICAgICAgfmRyYXdfbWF4aW11bVxuICAgICAgfnJlbWFpbmRlcl9tYXhpbXVtXG4gID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBkcmF3IC0gcmVtYWluZGVyIDw9IGRyYXdfbWF4aW11bSAtIHJlbWFpbmRlcl9tYXhpbXVtXG5cbmxldCV0ZXN0X3VuaXQgXCJyZW1haW5kZXJfaXNfdW5iaWFzZWRcIiA9XG4gICgqIGNob29zaW5nIGEgcmFuZ2Ugb2YgMTAgdmFsdWVzIGJhc2VkIG9uIGEgcmFuZ2Ugb2YgMTA1IHZhbHVlcyAqKVxuICBsZXQgZHJhd19tYXhpbXVtID0gMTA0TCBpblxuICBsZXQgcmVtYWluZGVyX21heGltdW0gPSA5TCBpblxuICBsZXQgaXNfdW5iaWFzZWQgZHJhdyA9XG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIHJlbWFpbmRlcl9tYXhpbXVtKSBpblxuICAgIHJlbWFpbmRlcl9pc191bmJpYXNlZCB+ZHJhdyB+cmVtYWluZGVyIH5kcmF3X21heGltdW0gfnJlbWFpbmRlcl9tYXhpbXVtXG4gIGluXG4gIGZvciBpID0gMCB0byA5OSBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6dHJ1ZVxuICAgICAgfm1lc3NhZ2U6KEludC50b19zdHJpbmcgaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAxMDAgdG8gMTA0IGRvXG4gICAgWyV0ZXN0X3Jlc3VsdDogYm9vbF1cbiAgICAgIChpc191bmJpYXNlZCAoSW50NjQub2ZfaW50IGkpKVxuICAgICAgfmV4cGVjdDpmYWxzZVxuICAgICAgfm1lc3NhZ2U6KEludC50b19zdHJpbmcgaSlcbiAgZG9uZVxuXG4oKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGJvdW5kZWQgcmFuZG9tbmVzcyBpcyBhZGFwdGVkIGZyb20gW1JhbmRvbS5TdGF0ZS5pbnQqXSBpbiB0aGVcbiAgIE9DYW1sIHN0YW5kYXJkIGxpYnJhcnkuICBUaGUgcHVycG9zZSBpcyB0byB1c2UgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNhbGxzIHRvXG4gICBbbmV4dF9pbnQ2NF0gdG8gcHJvZHVjZSBhIG51bWJlciB1bmlmb3JtbHkgY2hvc2VuIHdpdGhpbiB0aGUgZ2l2ZW4gcmFuZ2UuICopXG5sZXQgaW50NjQgPVxuICBsZXQgb3BlbiBJbnQ2NC5PIGluXG4gIGxldCByZWMgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgZHJhdyA9IFN0YXRlLm5leHRfaW50NjQgc3RhdGUgaW5cbiAgICBpZiBsbyA8PSBkcmF3ICYmIGRyYXcgPD0gaGlcbiAgICB0aGVuIGRyYXdcbiAgICBlbHNlIGJldHdlZW4gc3RhdGUgfmxvIH5oaVxuICBpblxuICBsZXQgcmVjIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtID1cbiAgICBsZXQgZHJhdyA9IFN0YXRlLm5leHRfaW50NjQgc3RhdGUgbGFuZCBJbnQ2NC5tYXhfdmFsdWUgaW5cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjQucmVtIGRyYXcgKEludDY0LnN1Y2MgbWF4aW11bSkgaW5cbiAgICBpZiByZW1haW5kZXJfaXNfdW5iaWFzZWRcbiAgICAgICAgIH5kcmF3XG4gICAgICAgICB+cmVtYWluZGVyXG4gICAgICAgICB+ZHJhd19tYXhpbXVtOkludDY0Lm1heF92YWx1ZVxuICAgICAgICAgfnJlbWFpbmRlcl9tYXhpbXVtOm1heGltdW1cbiAgICB0aGVuIHJlbWFpbmRlclxuICAgIGVsc2Ugbm9uX25lZ2F0aXZlX3VwX3RvIHN0YXRlIG1heGltdW1cbiAgaW5cbiAgZnVuIHN0YXRlIH5sbyB+aGkgLT5cbiAgICBpZiBsbyA+IGhpIHRoZW4gYmVnaW5cbiAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiaW50NjQ6IGNyb3NzZWQgYm91bmRzXCIgKGxvIDogaW50NjQpIChoaSA6IGludDY0KV1cbiAgICBlbmQ7XG4gICAgbGV0IGRpZmYgPSBoaSAtIGxvIGluXG4gICAgaWYgZGlmZiA9IEludDY0Lm1heF92YWx1ZVxuICAgIHRoZW4gKChTdGF0ZS5uZXh0X2ludDY0IHN0YXRlKSBsYW5kIEludDY0Lm1heF92YWx1ZSkgKyBsb1xuICAgIGVsc2UgaWYgZGlmZiA+PSAwTFxuICAgIHRoZW4gKG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBkaWZmKSArIGxvXG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcblxubGV0IGludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX2ludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX2ludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDMyIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9pbnQzMiBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQzMiBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX2ludDMyX3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgbmF0aXZlaW50IHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2NC5vZl9uYXRpdmVpbnQgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfbmF0aXZlaW50IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjQudG9fbmF0aXZlaW50X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgaW50NjMgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDYzLnRvX2ludDY0IGxvIGluXG4gIGxldCBoaSA9IEludDYzLnRvX2ludDY0IGhpIGluXG4gICgqIHRydW5jYXRlIHVubmVlZGVkIGJpdHMgKilcbiAgSW50NjMub2ZfaW50NjRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBkb3VibGVfdWxwID0gMi4gKiouIC01My5cblxubGV0JXRlc3RfdW5pdCBcImRvdWJsZV91bHBcIiA9XG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+XG4gICAgYXNzZXJ0ICgxLjAgLS4gIGRvdWJsZV91bHAgICAgICAgICA8IDEuMCk7XG4gICAgYXNzZXJ0ICgxLjAgLS4gKGRvdWJsZV91bHAgLy4gMi4wKSA9IDEuMClcbiAgfCBXMzIgLT5cbiAgICAoKiAzMi1iaXQgT0NhbWwgdXNlcyBhIDY0LWJpdCBmbG9hdCByZXByZXNlbnRhdGlvbiBidXQgODAtYml0IGZsb2F0IGluc3RydWN0aW9ucywgc29cbiAgICAgICByb3VuZGluZyB3b3JrcyBkaWZmZXJlbnRseSBkdWUgdG8gdGhlIGNvbnZlcnNpb24gYmFjayBhbmQgZm9ydGguICopXG4gICAgYXNzZXJ0ICgxLjAgLS4gIGRvdWJsZV91bHAgICAgICAgICA8ICAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPD0gMS4wKVxuXG5sZXQgdW5pdF9mbG9hdF9mcm9tX2ludDY0IGludDY0ID1cbiAgKEludDY0LnRvX2Zsb2F0IChpbnQ2NCBsc3IgMTEpKSAqLiBkb3VibGVfdWxwXG5cbmxldCV0ZXN0X3VuaXQgXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9IGJlZ2luXG4gIGxldCBvcGVuIEZsb2F0Lk8gaW5cbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHgwMDAwXzAwMDBfMDAwMF8wMDAwTCA9IDAuKTtcbiAgYXNzZXJ0ICh1bml0X2Zsb2F0X2Zyb21faW50NjQgMHhmZmZmX2ZmZmZfZmZmZl9mZmZmTCA8IDEuMCk7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPSAoMS4wIC0uIGRvdWJsZV91bHApKTtcbmVuZFxuXG5sZXQgdW5pdF9mbG9hdCBzdGF0ZSA9XG4gIHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSlcblxuKCogTm90ZSBhYm91dCByb3VuZG9mZiBlcnJvcjpcblxuICAgQWx0aG91Z2ggW2Zsb2F0IHN0YXRlIH5sbyB+aGldIGlzIG5vbWluYWxseSBpbmNsdXNpdmUgb2YgZW5kcG9pbnRzLCB3ZSBhcmUgcmVseWluZyBvblxuICAgdGhlIGZhY3QgdGhhdCBbdW5pdF9mbG9hdF0gbmV2ZXIgcmV0dXJucyAxLiwgYmVjYXVzZSB0aGVyZSBhcmUgcGFpcnMgWyhsbyxoaSldIGZvclxuICAgd2hpY2ggW2xvICsuIDEuICouIChoaSAtLiBsbykgPiBoaV0uICBUaGVyZSBhcmUgYWxzbyBwYWlycyBbKGxvLGhpKV0gYW5kIHZhbHVlcyBvZiBbeF1cbiAgIHdpdGggW3ggPCAxLl0gc3VjaCB0aGF0IFtsbyArLiB4ICouIChoaSAtLiBsbykgPSBoaV0sIHNvIGl0IHdvdWxkIG5vdCBiZSBjb3JyZWN0IHRvXG4gICBkb2N1bWVudCB0aGlzIGFzIGJlaW5nIGV4Y2x1c2l2ZSBvZiBbaGldLlxuKilcbmxldCBmbG9hdCA9XG4gIGxldCByZWMgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGkgPVxuICAgIGxldCByYW5nZSA9IGhpIC0uIGxvIGluXG4gICAgaWYgRmxvYXQuaXNfZmluaXRlIHJhbmdlXG4gICAgdGhlbiAobG8gKy4gKHVuaXRfZmxvYXQgc3RhdGUgKi4gcmFuZ2UpKVxuICAgIGVsc2UgYmVnaW5cbiAgICAgICgqIElmIFtoaSAtIGxvXSBpcyBpbmZpbml0ZSwgdGhlbiBbaGkgKyBsb10gaXMgZmluaXRlIGJlY2F1c2UgW2hpXSBhbmQgW2xvXSBoYXZlXG4gICAgICAgICBvcHBvc2l0ZSBzaWducy4gKilcbiAgICAgIGxldCBtaWQgPSAoaGkgKy4gbG8pIC8uIDIuIGluXG4gICAgICBpZiBib29sIHN0YXRlXG4gICAgICAoKiBEZXBlbmRpbmcgb24gcm91bmRpbmcsIHRoZSByZWN1cnNpb24gd2l0aCBbfmhpOm1pZF0gbWlnaHQgYmUgaW5jbHVzaXZlIG9mIFttaWRdLFxuICAgICAgICAgd2hpY2ggd291bGQgbWVhbiB0aGUgdHdvIGNhc2VzIG92ZXJsYXAgb24gW21pZF0uIFRoZSBhbHRlcm5hdGl2ZSBpcyB0byBpbmNyZW1lbnRcbiAgICAgICAgIG9yIGRlY3JlbWVudCBbbWlkXSB1c2luZyBbb25lX3VscF0gaW4gZWl0aGVyIG9mIHRoZSBjYWxscywgYnV0IHRoZW4gaWYgdGhlIGZpcnN0XG4gICAgICAgICBjYXNlIGlzIGV4Y2x1c2l2ZSB3ZSBsZWF2ZSBhIFwiZ2FwXCIgYmV0d2VlbiB0aGUgdHdvIHJhbmdlcy4gVGhlcmUncyBubyBwZXJmZWN0bHlcbiAgICAgICAgIHVuaWZvcm0gc29sdXRpb24sIHNvIHdlIHVzZSB0aGUgc2ltcGxlciBjb2RlIHRoYXQgZG9lcyBub3QgY2FsbCBbb25lX3VscF0uICopXG4gICAgICB0aGVuIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpOm1pZFxuICAgICAgZWxzZSBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvOm1pZCB+aGlcbiAgICBlbmRcbiAgaW5cbiAgZnVuIHN0YXRlIH5sbyB+aGkgLT5cbiAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSBsbyAmJiBGbG9hdC5pc19maW5pdGUgaGkpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBub3QgZmluaXRlIG51bWJlcnNcIlxuICAgICAgICAgIChsbyA6IGZsb2F0KVxuICAgICAgICAgIChoaSA6IGZsb2F0KV1cbiAgICBlbmQ7XG4gICAgaWYgRmxvYXQuKCA+ICkgbG8gaGlcbiAgICB0aGVuIGJlZ2luXG4gICAgICByYWlzZV9zIFslbWVzc2FnZVxuICAgICAgICBcImZsb2F0OiBib3VuZHMgYXJlIGNyb3NzZWRcIlxuICAgICAgICAgIChsbyA6IGZsb2F0KVxuICAgICAgICAgIChoaSA6IGZsb2F0KV1cbiAgICBlbmQ7XG4gICAgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbyB+aGlcblxubGV0JWJlbmNoX2Z1biBcInVuaXRfZmxvYXRfZnJvbV9pbnQ2NFwiID1cbiAgbGV0IGludDY0ID0gMUwgaW5cbiAgZnVuICgpIC0+IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NFxuXG5tb2R1bGUgTG9nX3VuaWZvcm0gPSBzdHJ1Y3RcbiAgbW9kdWxlIE1ha2UgKE0gOiBzaWcgaW5jbHVkZSBJbnQuUyB2YWwgdW5pZm9ybSA6IFN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHQgZW5kKSA6IHNpZ1xuICAgIHZhbCBsb2dfdW5pZm9ybSA6IFN0YXRlLnQgLT4gbG86TS50IC0+IGhpOk0udCAtPiBNLnRcbiAgZW5kID0gc3RydWN0XG4gICAgb3BlbiBNXG5cbiAgICBsZXQgYml0c190b19yZXByZXNlbnQgdCA9XG4gICAgICBhc3NlcnQgKHQgPj0gemVybyk7XG4gICAgICBsZXQgdCA9IHJlZiB0IGluXG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICB3aGlsZSAhdCA+IHplcm8gZG9cbiAgICAgICAgdCA6PSBzaGlmdF9yaWdodCAhdCAxO1xuICAgICAgICBJbnQuaW5jciBuO1xuICAgICAgZG9uZTtcbiAgICAgICFuXG5cbiAgICBsZXQldGVzdF91bml0IFwiYml0c190b19yZXByZXNlbnRcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IGludF0gKGJpdHNfdG9fcmVwcmVzZW50IG4pIH5leHBlY3QgIGluXG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMCkgICAwO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEpICAgMTtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAyKSAgIDI7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMykgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDQpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA1KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNikgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDcpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA4KSAgIDQ7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMTAwKSA3O1xuICAgICAgdGVzdCBNLm1heF92YWx1ZSAoSW50LnByZWQgTS5udW1fYml0cyk7XG4gICAgOztcblxuICAgIGxldCBtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4gPVxuICAgICAgaWYgSW50LmVxdWFsIG4gMFxuICAgICAgdGhlbiB6ZXJvXG4gICAgICBlbHNlIHNoaWZ0X2xlZnQgb25lIChJbnQucHJlZCBuKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBcIm1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHNcIiA9XG4gICAgICBsZXQgdGVzdCBuIGV4cGVjdCA9IFsldGVzdF9yZXN1bHQ6IE0udF0gKG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgbikgfmV4cGVjdCBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDIpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNCk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biA4KTtcbiAgICAgIHRlc3QgNyAoTS5vZl9pbnRfZXhuIDY0KTtcbiAgICAgIHRlc3QgKEludC5wcmVkIE0ubnVtX2JpdHMpIChNLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgTS5taW5fdmFsdWUgMSk7XG4gICAgOztcblxuICAgIGxldCBtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4gPVxuICAgICAgcHJlZCAoc2hpZnRfbGVmdCBvbmUgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgIGluXG4gICAgICB0ZXN0IDAgKE0ub2ZfaW50X2V4biAwKTtcbiAgICAgIHRlc3QgMSAoTS5vZl9pbnRfZXhuIDEpO1xuICAgICAgdGVzdCAyIChNLm9mX2ludF9leG4gMyk7XG4gICAgICB0ZXN0IDMgKE0ub2ZfaW50X2V4biA3KTtcbiAgICAgIHRlc3QgNCAoTS5vZl9pbnRfZXhuIDE1KTtcbiAgICAgIHRlc3QgNyAoTS5vZl9pbnRfZXhuIDEyNyk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSBNLm1heF92YWx1ZTtcbiAgICA7O1xuXG4gICAgbGV0IGxvZ191bmlmb3JtIHN0YXRlIH5sbyB+aGkgPVxuICAgICAgbGV0IG1pbl9iaXRzID0gYml0c190b19yZXByZXNlbnQgbG8gaW5cbiAgICAgIGxldCBtYXhfYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGhpIGluXG4gICAgICBsZXQgYml0cyA9IGludCBzdGF0ZSB+bG86bWluX2JpdHMgfmhpOm1heF9iaXRzIGluXG4gICAgICB1bmlmb3JtIHN0YXRlXG4gICAgICAgIH5sbzoobWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1heCBsbylcbiAgICAgICAgfmhpOihtYXhfcmVwcmVzZW50ZWRfYnlfbl9iaXRzIGJpdHMgfD4gbWluIGhpKVxuICBlbmRcblxuICBtb2R1bGUgRm9yX2ludCAgICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludCAgICAgICBsZXQgdW5pZm9ybSA9IGludCAgICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50MzIgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50MzIgICAgIGxldCB1bmlmb3JtID0gaW50MzIgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2MyAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2MyAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2MyAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDY0ICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDY0ICAgICBsZXQgdW5pZm9ybSA9IGludDY0ICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfbmF0aXZlaW50ID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgTmF0aXZlaW50IGxldCB1bmlmb3JtID0gbmF0aXZlaW50IGVuZClcblxuICBsZXQgaW50ICAgICAgID0gRm9yX2ludC5sb2dfdW5pZm9ybVxuICBsZXQgaW50MzIgICAgID0gRm9yX2ludDMyLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2MyAgICAgPSBGb3JfaW50NjMubG9nX3VuaWZvcm1cbiAgbGV0IGludDY0ICAgICA9IEZvcl9pbnQ2NC5sb2dfdW5pZm9ybVxuICBsZXQgbmF0aXZlaW50ID0gRm9yX25hdGl2ZWludC5sb2dfdW5pZm9ybVxuZW5kXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgb3BlcmF0aW9ucyBvbiB0aGUgdHlwZSBbaW50NjRdIG9mXG4gICBzaWduZWQgNjQtYml0IGludGVnZXJzLiAgVW5saWtlIHRoZSBidWlsdC1pbiBbaW50XSB0eXBlLFxuICAgdGhlIHR5cGUgW2ludDY0XSBpcyBndWFyYW50ZWVkIHRvIGJlIGV4YWN0bHkgNjQtYml0IHdpZGUgb24gYWxsXG4gICBwbGF0Zm9ybXMuICBBbGwgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG92ZXIgW2ludDY0XSBhcmUgdGFrZW5cbiAgIG1vZHVsbyAye142NH1cblxuICAgUGVyZm9ybWFuY2Ugbm90aWNlOiB2YWx1ZXMgb2YgdHlwZSBbaW50NjRdIG9jY3VweSBtb3JlIG1lbW9yeVxuICAgc3BhY2UgdGhhbiB2YWx1ZXMgb2YgdHlwZSBbaW50XSwgYW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvblxuICAgW2ludDY0XSBhcmUgZ2VuZXJhbGx5IHNsb3dlciB0aGFuIHRob3NlIG9uIFtpbnRdLiAgVXNlIFtpbnQ2NF1cbiAgIG9ubHkgd2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWlyZXMgZXhhY3QgNjQtYml0IGFyaXRobWV0aWMuXG5cbiAgICBMaXRlcmFscyBmb3IgNjQtYml0IGludGVnZXJzIGFyZSBzdWZmaXhlZCBieSBMOlxuICAgIHtbXG4gICAgICBsZXQgemVybzogaW50NjQgPSAwTFxuICAgICAgbGV0IG9uZTogaW50NjQgPSAxTFxuICAgICAgbGV0IG1fb25lOiBpbnQ2NCA9IC0xTFxuICAgIF19XG4qKVxuXG52YWwgemVybyA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDAuICopXG5cbnZhbCBvbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAxLiAqKVxuXG52YWwgbWludXNfb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgLTEuICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbigqKiBVbmFyeSBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuKCoqIEFkZGl0aW9uLiAqKVxuXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG4oKiogU3VidHJhY3Rpb24uICopXG5cbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbigqKiBNdWx0aXBsaWNhdGlvbi4gKilcblxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuKCoqIEludGVnZXIgZGl2aXNpb24uXG4gICBAcmFpc2UgRGl2aXNpb25fYnlfemVybyBpZiB0aGUgc2Vjb25kXG4gICBhcmd1bWVudCBpcyB6ZXJvLiAgVGhpcyBkaXZpc2lvbiByb3VuZHMgdGhlIHJlYWwgcXVvdGllbnQgb2ZcbiAgIGl0cyBhcmd1bWVudHMgdG93YXJkcyB6ZXJvLCBhcyBzcGVjaWZpZWQgZm9yIHshU3RkbGliLigvKX0uICopXG5cbnZhbCB1bnNpZ25lZF9kaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFkaXZ9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIHN1Y2MgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFN1Y2Nlc3Nvci4gIFtJbnQ2NC5zdWNjIHhdIGlzIFtJbnQ2NC5hZGQgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgcHJlZCA6IGludDY0IC0+IGludDY0XG4oKiogUHJlZGVjZXNzb3IuICBbSW50NjQucHJlZCB4XSBpcyBbSW50NjQuc3ViIHggSW50NjQub25lXS4gKilcblxudmFsIGFicyA6IGludDY0IC0+IGludDY0XG4oKiogW2FicyB4XSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgW3hdLiBPbiBbbWluX2ludF0gdGhpc1xuICAgaXMgW21pbl9pbnRdIGl0c2VsZiBhbmQgdGh1cyByZW1haW5zIG5lZ2F0aXZlLiAqKVxuXG52YWwgbWF4X2ludCA6IGludDY0XG4oKiogVGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIDJ7XjYzfSAtIDEuICopXG5cbnZhbCBtaW5faW50IDogaW50NjRcbigqKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgLTJ7XjYzfS4gKilcblxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBhbmQuICopXG5cbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIG9yLiAqKVxuXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGV4Y2x1c2l2ZSBvci4gKilcblxudmFsIGxvZ25vdCA6IGludDY0IC0+IGludDY0XG4oKiogQml0d2lzZSBsb2dpY2FsIG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbigqKiBbSW50NjQuc2hpZnRfbGVmdCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIGxlZnQgYnkgW3ldIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGFuIGFyaXRobWV0aWMgc2hpZnQ6IHRoZSBzaWduIGJpdCBvZiBbeF0gaXMgcmVwbGljYXRlZFxuICAgYW5kIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhIGxvZ2ljYWwgc2hpZnQ6IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0c1xuICAgcmVnYXJkbGVzcyBvZiB0aGUgc2lnbiBvZiBbeF0uXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGludGVnZXIgKHR5cGUgW2ludF0pIHRvIGEgNjQtYml0IGludGVnZXJcbiAgICAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhblxuICAgaW50ZWdlciAodHlwZSBbaW50XSkuICBPbiA2NC1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye142M30sIGkuZS4gdGhlIGhpZ2gtb3JkZXIgYml0IGlzIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMxfSwgaS5lLiB0aGUgdG9wIDMzIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gKilcblxudmFsIHVuc2lnbmVkX3RvX2ludCA6IGludDY0IC0+IGludCBvcHRpb25cbigqKiBTYW1lIGFzIHshdG9faW50fSwgYnV0IGludGVycHJldHMgdGhlIGFyZ3VtZW50IGFzIGFuIHtlIHVuc2lnbmVkfSBpbnRlZ2VyLlxuICAgIFJldHVybnMgW05vbmVdIGlmIHRoZSB1bnNpZ25lZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2Fubm90IGZpdCBpbnRvIGFuXG4gICAgW2ludF0uXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBhIDY0LWJpdCBpbnRlZ2VyLFxuICAgZGlzY2FyZGluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0ICh0cnVuY2F0ZSB0b3dhcmRzIDApLlxuICAgSWYgdGhlIHRydW5jYXRlZCBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2VcbiAgIFxcW3shSW50NjQubWluX2ludH0sIHshSW50NjQubWF4X2ludH1cXF0sIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGFuZFxuICAgYW4gdW5zcGVjaWZpZWQsIHBsYXRmb3JtLWRlcGVuZGVudCBpbnRlZ2VyIGlzIHJldHVybmVkLiAqKVxuXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLiAqKVxuXG5cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSkuIFRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfSwgaS5lLiB0aGUgdG9wIDMyIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gICopXG5cbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gbmF0aXZlIGludGVnZXIgKHR5cGUgW25hdGl2ZWludF0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIG5hdGl2ZSBpbnRlZ2VyLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LiAgT24gNjQtYml0IHBsYXRmb3JtcyxcbiAgIHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqKVxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBzdHJpbmcgdG8gYSA2NC1iaXQgaW50ZWdlci5cbiAgIFRoZSBzdHJpbmcgaXMgcmVhZCBpbiBkZWNpbWFsIChieSBkZWZhdWx0LCBvciBpZiB0aGUgc3RyaW5nXG4gICBiZWdpbnMgd2l0aCBbMHVdKSBvciBpbiBoZXhhZGVjaW1hbCwgb2N0YWwgb3IgYmluYXJ5IGlmIHRoZVxuICAgc3RyaW5nIGJlZ2lucyB3aXRoIFsweF0sIFswb10gb3IgWzBiXSByZXNwZWN0aXZlbHkuXG5cbiAgIFRoZSBbMHVdIHByZWZpeCByZWFkcyB0aGUgaW5wdXQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgIFtbMCwgMipJbnQ2NC5tYXhfaW50KzFdXS4gIElmIHRoZSBpbnB1dCBleGNlZWRzIHshSW50NjQubWF4X2ludH1cbiAgIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgc2lnbmVkIGludGVnZXJcbiAgIFtJbnQ2NC5taW5faW50ICsgaW5wdXQgLSBJbnQ2NC5tYXhfaW50IC0gMV0uXG5cbiAgIFRoZSBbX10gKHVuZGVyc2NvcmUpIGNoYXJhY3RlciBjYW4gYXBwZWFyIGFueXdoZXJlIGluIHRoZSBzdHJpbmdcbiAgIGFuZCBpcyBpZ25vcmVkLlxuICAgQHJhaXNlIEZhaWx1cmUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBub3RcbiAgIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciwgb3IgaWYgdGhlIGludGVnZXIgcmVwcmVzZW50ZWRcbiAgIGV4Y2VlZHMgdGhlIHJhbmdlIG9mIGludGVnZXJzIHJlcHJlc2VudGFibGUgaW4gdHlwZSBbaW50NjRdLiAqKVxuXG52YWwgb2Zfc3RyaW5nX29wdDogc3RyaW5nIC0+IGludDY0IG9wdGlvblxuKCoqIFNhbWUgYXMgW29mX3N0cmluZ10sIGJ1dCByZXR1cm4gW05vbmVdIGluc3RlYWQgb2YgcmFpc2luZy5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgdG9fc3RyaW5nIDogaW50NjQgLT4gc3RyaW5nXG4oKiogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaXRzIGFyZ3VtZW50LCBpbiBkZWNpbWFsLiAqKVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGZsb2F0IGFjY29yZGluZ1xuICAgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LlxuICAgQml0IDYzIG9mIHRoZSByZXN1bHQgcmVwcmVzZW50cyB0aGUgc2lnbiBvZiB0aGUgZmxvYXQ7XG4gICBiaXRzIDYyIHRvIDUyIHJlcHJlc2VudCB0aGUgKGJpYXNlZCkgZXhwb25lbnQ7IGJpdHMgNTEgdG8gMFxuICAgcmVwcmVzZW50IHRoZSBtYW50aXNzYS4gKilcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGZsb2F0aW5nLXBvaW50IG51bWJlciB3aG9zZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbixcbiAgIGFjY29yZGluZyB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQsXG4gICBpcyB0aGUgZ2l2ZW4gW2ludDY0XS4gKilcblxudHlwZSB0ID0gaW50NjRcbigqKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgNjQtYml0IGludGVnZXJzLiAqKVxuXG52YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50ZWdlcnMsIHdpdGggdGhlIHNhbWUgc3BlY2lmaWNhdGlvbiBhc1xuICAgIHshU3RkbGliLmNvbXBhcmV9LiAgQWxvbmcgd2l0aCB0aGUgdHlwZSBbdF0sIHRoaXMgZnVuY3Rpb24gW2NvbXBhcmVdXG4gICAgYWxsb3dzIHRoZSBtb2R1bGUgW0ludDY0XSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3JzXG4gICAgeyFTZXQuTWFrZX0gYW5kIHshTWFwLk1ha2V9LiAqKVxuXG52YWwgdW5zaWduZWRfY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFNhbWUgYXMgeyFjb21wYXJlfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyB7ZSB1bnNpZ25lZH1cbiAgICA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMgKilcblxudmFsIG1pbjogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBtYXg6IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBncmVhdGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4gKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3IgNjQtYml0IGludHMsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3IgNjQtYml0IGludHMsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4xICopXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBMYXlvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmlnYXJyYXkubGF5b3V0XG5cbiAgbGV0IG9mZnNldCA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgfCBCaWdhcnJheS5Gb3J0cmFuX2xheW91dCAtPiAxXG4gICAgfCBCaWdhcnJheS5DX2xheW91dCAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTEubGF5b3V0IHQpIGluXG4gICAgZm9yIGkgPSAwIHRvIEJpZ2FycmF5LkFycmF5MS5kaW0gdCAtIDEgZG9cbiAgICAgIGYgKGkgKyBvZmZzZXQpIHQue2kgKyBvZmZzZXR9XG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpbml0ICh0eXBlIGVsdCkgKGtpbmQgOiAoZWx0LCBfKSBCaWdhcnJheS5raW5kKSBsYXlvdXQgZGltIH5mID1cbiAgICBsZXQgdCA9IEJpZ2FycmF5LkFycmF5MS5jcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IHQue2l9IDwtIGYgaSk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBmb2xkICh0eXBlIGVsdCkgKHQgOiAoZWx0LCBfLCBfKSB0KSB+aW5pdCB+ZiA9XG4gICAgbGV0IGluaXQgPSByZWYgaW5pdCBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIChfIDogZWx0KSAtPiBpbml0IDo9IGYgIWluaXQgdC57aX0pO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTEubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkxLmRpbSB0KSB+ZjooZnVuIGkgLT4gdC57aSArIG9mZnNldH0pXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBfc2V4cF9vZl9wYWNrIF9zZXhwX29mX2xheW91dCB0ID1cbiAgICBbJXNleHAgKHRvX2FycmF5IHQgOiBlbHQgYXJyYXkpXVxuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGQgaGFzaF9mb2xkX2VsdCBzdGF0ZSB0ID1cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTEuZGltIHQpIGluXG4gICAgZm9sZCB0IH5pbml0OnN0YXRlIH5mOmhhc2hfZm9sZF9lbHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkyLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5Mi5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCAtIDEgZG9cbiAgICAgIGZvciBqID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMiB0IC0gMSBkb1xuICAgICAgICBmIChpICsgb2Zmc2V0KSAoaiArIG9mZnNldCkgdC57aSArIG9mZnNldCwgaiArIG9mZnNldH1cbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0xIGRpbTIgfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkyLmNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSBqIChfIDogZWx0KSAtPiB0LntpLCBqfSA8LSBmIGkgaik7XG4gICAgdFxuICA7O1xuXG4gIGxldCBmb2xkICh0eXBlIGVsdCkgKHQgOiAoZWx0LCBfLCBfKSB0KSB+aW5pdCB+ZiA9XG4gICAgbGV0IGluaXQgPSByZWYgaW5pdCBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biAoXyA6IGludCkgKF8gOiBpbnQpIGVsdCAtPiBpbml0IDo9IGYgIWluaXQgZWx0KTtcbiAgICAhaW5pdFxuICA7O1xuXG4gIGxldCB0b19hcnJheSB0ID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIEFycmF5LmluaXQgKEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQpIH5mOihmdW4gaSAtPlxuICAgICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCkgfmY6KGZ1biBqIC0+IHQue2kgKyBvZmZzZXQsIGogKyBvZmZzZXR9KSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5Mi5kaW0xIHQpIGluXG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTIgdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgJ2EgdCA9ICdhIC0+IHNpemU6aW50IC0+IGhhc2g6SGFzaC5zdGF0ZSAtPiBIYXNoLnN0YXRlXG5cbmxldCBjcmVhdGUgZiA6IF8gdCA9IGZcblxubGV0IG9ic2VydmUgKHQgOiBfIHQpIHggfnNpemUgfmhhc2ggPVxuICBpZiBzaXplIDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmU6IHNpemUgPCAwXCIgKHNpemUgOiBpbnQpXVxuICBlbHNlIHQgeCB+c2l6ZSB+aGFzaFxuOztcblxubGV0IG9wYXF1ZSBfIH5zaXplOl8gfmhhc2ggPSBoYXNoXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgKydhIHRcblxuICB2YWwgY3JlYXRlIDogKHNpemU6aW50IC0+IHJhbmRvbTpTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBnZW5lcmF0ZSA6ICdhIHQgLT4gc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2FcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIFN0YWdlZC50XG5cbiAgbGV0IGNyZWF0ZSBmIDogXyB0ID0gU3RhZ2VkLnN0YWdlIGZcblxuICBsZXQgZ2VuZXJhdGUgKHQgOiBfIHQpIH5zaXplIH5yYW5kb20gPVxuICAgIGlmIHNpemUgPCAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZ2VuZXJhdGU6IHNpemUgPCAwXCIgKHNpemUgOiBpbnQpXVxuICAgIGVsc2UgU3RhZ2VkLnVuc3RhZ2UgdCB+c2l6ZSB+cmFuZG9tXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBzaXplID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbTpfIC0+IHNpemUpXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5zcGxpdCByYW5kb20gaW5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IGhhc2ggPSBPYnNlcnZlcjAub2JzZXJ2ZSBkb20geCB+c2l6ZSB+aGFzaDooSGFzaC5hbGxvYyAoKSkgaW5cbiAgICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jb3B5IHJhbmRvbSBpblxuICAgICAgU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUucGVydHVyYiByYW5kb20gKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCk7XG4gICAgICBnZW5lcmF0ZSBybmcgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCB3aXRoX3NpemUgdCB+c2l6ZSA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20pXG5cbmxldCBwZXJ0dXJiIHQgc2FsdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSBzYWx0O1xuICAgIGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgfnNpemUgfnJhbmRvbSA9XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgU29tZSB5IC0+IHlcbiAgICB8IE5vbmUgLT4gbG9vcCB+c2l6ZTooc2l6ZSArIDEpIH5yYW5kb21cbiAgaW5cbiAgY3JlYXRlIGxvb3Bcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9IGZpbHRlcl9tYXAgdCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbmxldCByZXR1cm4geCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbTpfIC0+IHgpXG5sZXQgbWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGYgKGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSkpXG5cbmxldCBhcHBseSB0ZiB0eCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBsZXQgZiA9IGdlbmVyYXRlIHRmIH5zaXplIH5yYW5kb20gaW5cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHR4IH5zaXplIH5yYW5kb20gaW5cbiAgICBmIHgpXG47O1xuXG5sZXQgYmluZCB0IH5mID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tIGluXG4gICAgZ2VuZXJhdGUgKGYgeCkgfnNpemUgfnJhbmRvbSlcbjs7XG5cbmxldCBhbGwgbGlzdCA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gTGlzdC5tYXAgbGlzdCB+ZjooZ2VuZXJhdGUgfnNpemUgfnJhbmRvbSkpXG5cbmxldCBhbGxfdW5pdCBsaXN0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lml0ZXIgbGlzdCB+ZjooZ2VuZXJhdGUgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5tb2R1bGUgRm9yX2FwcGxpY2F0aXZlID0gQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBib3RoID0gRm9yX2FwcGxpY2F0aXZlLmJvdGhcbmxldCBtYXAyID0gRm9yX2FwcGxpY2F0aXZlLm1hcDJcbmxldCBtYXAzID0gRm9yX2FwcGxpY2F0aXZlLm1hcDNcblxubW9kdWxlIEFwcGxpY2F0aXZlX2luZml4ID0gRm9yX2FwcGxpY2F0aXZlLkFwcGxpY2F0aXZlX2luZml4XG5pbmNsdWRlIEFwcGxpY2F0aXZlX2luZml4XG5cbm1vZHVsZSBGb3JfbW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBpZ25vcmVfbSA9IEZvcl9tb25hZC5pZ25vcmVfbVxubGV0IGpvaW4gPSBGb3JfbW9uYWQuam9pblxuXG5tb2R1bGUgTW9uYWRfaW5maXggPSBGb3JfbW9uYWQuTW9uYWRfaW5maXhcbmluY2x1ZGUgTW9uYWRfaW5maXhcbm1vZHVsZSBMZXRfc3ludGF4ID0gRm9yX21vbmFkLkxldF9zeW50YXhcbm9wZW4gTGV0X3N5bnRheFxuXG5sZXQgb2ZfbGlzdCBsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsaXN0XG4gIHRoZW4gRXJyb3IucmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX2xpc3Q6IGVtcHR5IGxpc3RcIl07XG4gIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICBsZXQgbG8gPSAwIGluXG4gIGxldCBoaSA9IEFycmF5Lmxlbmd0aCBhcnJheSAtIDEgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGluZGV4ID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG8gfmhpIGluXG4gICAgYXJyYXkuKGluZGV4KSlcbjs7XG5cbmxldCB1bmlvbiBsaXN0ID0gam9pbiAob2ZfbGlzdCBsaXN0KVxuXG5sZXQgb2Zfd2VpZ2h0ZWRfbGlzdCBhbGlzdCA9XG4gIGlmIExpc3QuaXNfZW1wdHkgYWxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IHdlaWdodHMsIHZhbHVlcyA9IExpc3QudW56aXAgYWxpc3QgaW5cbiAgbGV0IHZhbHVlX2FycmF5ID0gQXJyYXkub2ZfbGlzdCB2YWx1ZXMgaW5cbiAgbGV0IHRvdGFsX3dlaWdodCwgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXkgPVxuICAgIGxldCBhcnJheSA9IEFycmF5LmluaXQgKEFycmF5Lmxlbmd0aCB2YWx1ZV9hcnJheSkgfmY6KGZ1biBfIC0+IDAuKSBpblxuICAgIGxldCBzdW0gPVxuICAgICAgTGlzdC5mb2xkaSB3ZWlnaHRzIH5pbml0OjAuIH5mOihmdW4gaW5kZXggYWNjIHdlaWdodCAtPlxuICAgICAgICBpZiBub3QgKEZsb2F0LmlzX2Zpbml0ZSB3ZWlnaHQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHdlaWdodCBpcyBub3QgZmluaXRlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgaWYgRmxvYXQuKCA8ICkgd2VpZ2h0IDAuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHdlaWdodCBpcyBuZWdhdGl2ZVwiXG4gICAgICAgICAgICAgICAgKHdlaWdodCA6IGZsb2F0KV07XG4gICAgICAgIGxldCBjdW11bGF0aXZlID0gYWNjICsuIHdlaWdodCBpblxuICAgICAgICBhcnJheS4oaW5kZXgpIDwtIGN1bXVsYXRpdmU7XG4gICAgICAgIGN1bXVsYXRpdmUpXG4gICAgaW5cbiAgICBpZiBGbG9hdC4oIDw9ICkgc3VtIDAuXG4gICAgdGhlblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm9mX3dlaWdodGVkX2xpc3Q6IHRvdGFsIHdlaWdodCBpcyB6ZXJvXCJdO1xuICAgIHN1bSwgYXJyYXlcbiAgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGNob2ljZSA9IFNwbGl0dGFibGVfcmFuZG9tLmZsb2F0IHJhbmRvbSB+bG86MC4gfmhpOnRvdGFsX3dlaWdodCBpblxuICAgIG1hdGNoXG4gICAgICBBcnJheS5iaW5hcnlfc2VhcmNoXG4gICAgICAgIGN1bXVsYXRpdmVfd2VpZ2h0X2FycmF5XG4gICAgICAgIH5jb21wYXJlOkZsb2F0LmNvbXBhcmVcbiAgICAgICAgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICAgICBjaG9pY2VcbiAgICB3aXRoXG4gICAgfCBTb21lIGluZGV4IC0+IHZhbHVlX2FycmF5LihpbmRleClcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHdlaWdodGVkX3VuaW9uIGFsaXN0ID0gam9pbiAob2Zfd2VpZ2h0ZWRfbGlzdCBhbGlzdClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGZvcmNlIGxhenlfdCkgfnNpemUgfnJhbmRvbSlcblxubGV0IGZpeGVkX3BvaW50IG9mX2dlbmVyYXRvciA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAob2ZfZ2VuZXJhdG9yIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIGZvcmNlIGxhenlfdFxuOztcblxubGV0IHdlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbiBub25yZWNfbGlzdCB+ZiA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCByZWNfbGlzdCA9XG4gICAgICBMaXN0Lm1hcCAoZiBzZWxmKSB+ZjooZnVuICh3LCB0KSAtPlxuICAgICAgICAoIHdcbiAgICAgICAgLCBsZXQlYmluZCBuID0gc2l6ZSBpblxuICAgICAgICAgIHdpdGhfc2l6ZSB+c2l6ZToobiAtIDEpIHQgKSlcbiAgICBpblxuICAgIGlmIExpc3QuaXNfZW1wdHkgbm9ucmVjX2xpc3QgfHwgTGlzdC5pc19lbXB0eSByZWNfbGlzdFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLndlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbjogbGlzdHMgbXVzdCBiZSBub24tZW1wdHlcIl07XG4gICAgbGV0IG5vbnJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiBub25yZWNfbGlzdCBpblxuICAgIGxldCByZWNfZ2VuID0gd2VpZ2h0ZWRfdW5pb24gKG5vbnJlY19saXN0IEAgcmVjX2xpc3QpIGluXG4gICAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgICB8IDAgLT4gbm9ucmVjX2dlblxuICAgIHwgXyAtPiByZWNfZ2VuKVxuOztcblxubGV0IHJlY3Vyc2l2ZV91bmlvbiBub25yZWNfbGlzdCB+ZiA9XG4gIGxldCB3ZWlnaHRlZCBsaXN0ID0gTGlzdC5tYXAgbGlzdCB+ZjooZnVuIHQgLT4gMS4sIHQpIGluXG4gIHdlaWdodGVkX3JlY3Vyc2l2ZV91bmlvbiAod2VpZ2h0ZWQgbm9ucmVjX2xpc3QpIH5mOihmdW4gc2VsZiAtPiB3ZWlnaHRlZCAoZiBzZWxmKSlcbjs7XG5cbmxldCBzaXplcyA/KG1pbl9sZW5ndGggPSAwKSA/KG1heF9sZW5ndGggPSBJbnQubWF4X3ZhbHVlKSAoKSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT5cbiAgICBhc3NlcnQgKG1pbl9sZW5ndGggPD0gbWF4X2xlbmd0aCk7XG4gICAgbGV0IHVwcGVyX2JvdW5kID0gbWluX2xlbmd0aCArIHNpemUgaW5cbiAgICBsZXQgbWF4X2xlbmd0aCA9XG4gICAgICBpZiB1cHBlcl9ib3VuZCA+PSBtaW5fbGVuZ3RoICgqIGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cgKilcbiAgICAgIHRoZW4gbWluIG1heF9sZW5ndGggdXBwZXJfYm91bmRcbiAgICAgIGVsc2UgbWF4X2xlbmd0aFxuICAgIGluXG4gICAgKCogcGljayBhIGxlbmd0aCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgbW9zdCBvZiB0aGUgc2l6ZSBpcyBzcGVudCBvbiBlbGVtZW50cyAqKVxuICAgIGxldCBsZW4gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzptaW5fbGVuZ3RoIH5oaTptYXhfbGVuZ3RoIGluXG4gICAgKCogaWYgdGhlcmUgYXJlIG5vIGVsZW1lbnRzIHJldHVybiBhbiBlbXB0eSBhcnJheSwgb3RoZXJ3aXNlIHJldHVybiBhIG5vbi1lbXB0eSBhcnJheVxuICAgICAgIHdpdGggdGhlIHNpemUgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIGVsZW1lbnRzICopXG4gICAgaWYgbGVuID0gMFxuICAgIHRoZW4gW11cbiAgICBlbHNlIChcbiAgICAgIGxldCBzaXplcyA9IEFycmF5LmluaXQgbGVuIH5mOihmdW4gXyAtPiAwKSBpblxuICAgICAgbGV0IHJlbWFpbmluZyA9IHNpemUgLSAobGVuIC0gbWluX2xlbmd0aCkgaW5cbiAgICAgIGxldCBtYXhfaW5kZXggPSBsZW4gLSAxIGluXG4gICAgICBmb3IgXyA9IDEgdG8gcmVtYWluaW5nIGRvXG4gICAgICAgICgqIHBpY2sgYW4gaW5kZXgsIHdlaWdodGVkIGxvdyBzbyB0aGF0IHdlIHNlZSB1bmJhbGFuY2VkIGRpc3RyaWJ1dGlvbnMgb2Z0ZW4gKilcbiAgICAgICAgbGV0IGluZGV4ID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50IHJhbmRvbSB+bG86MCB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIHNpemVzLihpbmRleCkgPC0gc2l6ZXMuKGluZGV4KSArIDFcbiAgICAgIGRvbmU7XG4gICAgICAoKiBwZXJtdXRlIHRoZSBhcnJheSBzbyB0aGF0IG5vIGluZGV4IGlzIGZhdm9yZWQgb3ZlciBhbm90aGVyICopXG4gICAgICBmb3IgaSA9IDAgdG8gbWF4X2luZGV4IC0gMSBkb1xuICAgICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOmkgfmhpOm1heF9pbmRleCBpblxuICAgICAgICBBcnJheS5zd2FwIHNpemVzIGkgalxuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCAoQXJyYXkuc3VtIChtb2R1bGUgSW50KSBzaXplcyB+ZjpGbi5pZCArIChsZW4gLSBtaW5fbGVuZ3RoKSA9IHNpemUpO1xuICAgICAgQXJyYXkudG9fbGlzdCBzaXplcykpXG47O1xuXG5sZXQgdW5pdCA9IHJldHVybiAoKVxubGV0IGJvb2wgPSBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gU3BsaXR0YWJsZV9yYW5kb20uYm9vbCByYW5kb20pXG5sZXQgb3B0aW9uIHZhbHVlX3QgPSB1bmlvbiBbIHJldHVybiBOb25lOyBtYXAgdmFsdWVfdCB+ZjpPcHRpb24ucmV0dXJuIF1cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPSB1bmlvbiBbIG1hcCBmc3RfdCB+ZjpFaXRoZXIuZmlyc3Q7IG1hcCBzbmRfdCB+ZjpFaXRoZXIuc2Vjb25kIF1cblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgbWFwIChlaXRoZXIgb2tfdCBlcnJfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBGaXJzdCBvayAtPiBPayBva1xuICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG47O1xuXG5sZXQgbGlzdF9nZW5lcmljID9taW5fbGVuZ3RoID9tYXhfbGVuZ3RoIGVsdF9nZW4gPVxuICBsZXQlYmluZCBzaXplcyA9IHNpemVzID9taW5fbGVuZ3RoID9tYXhfbGVuZ3RoICgpIGluXG4gIExpc3QubWFwIHNpemVzIH5mOihmdW4gc2l6ZSAtPiB3aXRoX3NpemUgfnNpemUgZWx0X2dlbikgfD4gYWxsXG47O1xuXG5sZXQgbGlzdCBlbHRfZ2VuID0gbGlzdF9nZW5lcmljIGVsdF9nZW5cbmxldCBsaXN0X25vbl9lbXB0eSBlbHRfZ2VuID0gbGlzdF9nZW5lcmljIH5taW5fbGVuZ3RoOjEgZWx0X2dlblxuXG5sZXQgbGlzdF93aXRoX2xlbmd0aCBlbHRfZ2VuIH5sZW5ndGggPVxuICBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCBlbHRfZ2VuXG47O1xuXG5sZXQgbGlzdF9maWx0ZXJlZCBlbHRzID1cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IGxlbmd0aF9vZl9pbnB1dCA9IEFycmF5Lmxlbmd0aCBlbHRzIGluXG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBsZW5ndGhfb2Zfb3V0cHV0ID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86MCB+aGk6bGVuZ3RoX29mX2lucHV0IGluXG4gICAgbGV0IGluZGljZXMgPSBBcnJheS5pbml0IGxlbmd0aF9vZl9pbnB1dCB+ZjpGbi5pZCBpblxuICAgICgqIENob29zZSBbbGVuZ3RoX29mX291dHB1dF0gcmFuZG9tIHZhbHVlcyBpbiB0aGUgcHJlZml4IG9mIFtpbmRpY2VzXS4gKilcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoX29mX291dHB1dCAtIDEgZG9cbiAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6KGxlbmd0aF9vZl9pbnB1dCAtIDEpIGluXG4gICAgICBBcnJheS5zd2FwIGluZGljZXMgaSBqXG4gICAgZG9uZTtcbiAgICAoKiBTb3J0IHRoZSBjaG9zZW4gaW5kaWNlcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcmVvcmRlciB0aGVtLiAqKVxuICAgIEFycmF5LnNvcnQgaW5kaWNlcyB+cG9zOjAgfmxlbjpsZW5ndGhfb2Zfb3V0cHV0IH5jb21wYXJlOkludC5jb21wYXJlO1xuICAgICgqIFJldHVybiB0aGUgY2hvc2VuIGVsZW1lbnRzLiAqKVxuICAgIExpc3QuaW5pdCBsZW5ndGhfb2Zfb3V0cHV0IH5mOihmdW4gaSAtPiBlbHRzLihpbmRpY2VzLihpKSkpKVxuOztcblxubGV0IGxpc3RfcGVybXV0YXRpb25zIGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgYXJyYXkgPSBBcnJheS5vZl9saXN0IGxpc3QgaW5cbiAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTppIGluXG4gICAgICBBcnJheS5zd2FwIGFycmF5IGkgalxuICAgIGRvbmU7XG4gICAgQXJyYXkudG9fbGlzdCBhcnJheSlcbjs7XG5cbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3RcbmxldCByZWYgdCA9IG1hcCB0IH5mOlJlZi5jcmVhdGVcbmxldCBsYXp5X3QgdCA9IG1hcCB0IH5mOkxhenkuZnJvbV92YWxcblxubGV0IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzooQ2hhci50b19pbnQgbG8pIH5oaTooQ2hhci50b19pbnQgaGkpXG4gICAgfD4gQ2hhci51bnNhZmVfb2ZfaW50KVxuOztcblxubGV0IGNoYXJfdXBwZXJjYXNlID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnQScgJ1onXG5sZXQgY2hhcl9sb3dlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdhJyAneidcbmxldCBjaGFyX2RpZ2l0ID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnMCcgJzknXG5sZXQgY2hhcl9wcmludF91bmlmb3JtID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSAnICcgJ34nXG5sZXQgY2hhcl91bmlmb3JtID0gY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBDaGFyLm1pbl92YWx1ZSBDaGFyLm1heF92YWx1ZVxubGV0IGNoYXJfYWxwaGEgPSB1bmlvbiBbIGNoYXJfbG93ZXJjYXNlOyBjaGFyX3VwcGVyY2FzZSBdXG5cbmxldCBjaGFyX2FscGhhbnVtID1cbiAgd2VpZ2h0ZWRfdW5pb25cbiAgICAoKiBNb3N0IHBlb3BsZSBwcm9iYWJseSBleHBlY3QgdGhpcyB0byBiZSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLCBub3Qgd2VpZ2h0ZWRcbiAgICAgICB0b3dhcmQgZGlnaXRzIGxpa2Ugd2Ugd291bGQgZ2V0IHdpdGggW3VuaW9uXSAoc2luY2UgdGhlcmUgYXJlIGZld2VyIGRpZ2l0cyB0aGFuXG4gICAgICAgbGV0dGVycykuICopXG4gICAgWyA1Mi4sIGNoYXJfYWxwaGE7IDEwLiwgY2hhcl9kaWdpdCBdXG47O1xuXG5sZXQgY2hhcl93aGl0ZXNwYWNlID0gb2ZfbGlzdCAoTGlzdC5maWx0ZXIgQ2hhci5hbGwgfmY6Q2hhci5pc193aGl0ZXNwYWNlKVxubGV0IGNoYXJfcHJpbnQgPSB3ZWlnaHRlZF91bmlvbiBbIDEwLiwgY2hhcl9hbHBoYW51bTsgMS4sIGNoYXJfcHJpbnRfdW5pZm9ybSBdXG5cbmxldCBjaGFyID1cbiAgd2VpZ2h0ZWRfdW5pb25cbiAgICBbIDEwMC4sIGNoYXJfcHJpbnRcbiAgICA7IDEwLiwgY2hhcl91bmlmb3JtXG4gICAgOyAxLiwgcmV0dXJuIENoYXIubWluX3ZhbHVlXG4gICAgOyAxLiwgcmV0dXJuIENoYXIubWF4X3ZhbHVlXG4gICAgXVxuOztcblxuKCogUHJvZHVjZXMgYSBudW1iZXIgZnJvbSAwIG9yIDEgdG8gc2l6ZSArIDEsIHdlaWdodGVkIGhpZ2guIFdlIGhhdmUgZm91bmQgdGhpc1xuICAgZGlzdHJpYnV0aW9uIGVtcGlyaWNhbGx5IHVzZWZ1bCBmb3Igc3RyaW5nIGxlbmd0aHMuICopXG5sZXQgc21hbGxfaW50IH5hbGxvd196ZXJvID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBsb3dlcl9ib3VuZCA9IGlmIGFsbG93X3plcm8gdGhlbiAwIGVsc2UgMSBpblxuICAgIGxldCB1cHBlcl9ib3VuZCA9IHNpemUgKyAxIGluXG4gICAgbGV0IHdlaWdodGVkX2xvdyA9XG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaToodXBwZXJfYm91bmQgLSBsb3dlcl9ib3VuZClcbiAgICBpblxuICAgIGxldCB3ZWlnaHRlZF9oaWdoID0gdXBwZXJfYm91bmQgLSB3ZWlnaHRlZF9sb3cgaW5cbiAgICB3ZWlnaHRlZF9oaWdoKVxuOztcblxubGV0IHNtYWxsX3Bvc2l0aXZlX29yX3plcm9faW50ID0gc21hbGxfaW50IH5hbGxvd196ZXJvOnRydWVcbmxldCBzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86ZmFsc2VcblxubW9kdWxlIHR5cGUgSW50X3dpdGhfcmFuZG9tID0gc2lnXG4gIGluY2x1ZGUgSW50LlNcblxuICB2YWwgdW5pZm9ybSA6IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gbG86dCAtPiBoaTp0IC0+IHRcbiAgdmFsIGxvZ191bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBGb3JfaW50ZWdlciAoSW50ZWdlciA6IEludF93aXRoX3JhbmRvbSkgPSBzdHJ1Y3RcbiAgbGV0IGdlb21ldHJpYyBsbyB+cCA9XG4gICAgaWYgRmxvYXQuZXF1YWwgcCAxLlxuICAgIHRoZW4gcmV0dXJuIGxvXG4gICAgZWxzZSBpZiBGbG9hdC5lcXVhbCBwIDAuXG4gICAgdGhlbiByZXR1cm4gSW50ZWdlci5tYXhfdmFsdWVcbiAgICBlbHNlIGlmIEZsb2F0LiggPCApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLiB8fCBGbG9hdC5pc19uYW4gcFxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiZ2VvbWV0cmljIGRpc3RyaWJ1dGlvbjogcCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMVwiIChwIDogZmxvYXQpXVxuICAgIGVsc2UgKFxuICAgICAgKCogV2Ugc3RhcnQgd2l0aCBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiBXZSBjb252ZXJ0IHRvIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvblxuICAgICAgICAgdXNpbmcgW2xvZ10uIFdlIGNvbnZlcnQgdG8gZ2VvbWV0cmljIHdpdGggW3JvdW5kX2Rvd25dLiBUaGVuIHdlIGJvdW5kcyBjaGVjayBhbmRcbiAgICAgICAgIHJldHVybi4gKilcbiAgICAgIGxldCBkZW5vbWluYXRvciA9IEZsb2F0LmxvZzFwICgtLnApIGluXG4gICAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICAgICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS51bml0X2Zsb2F0IHJhbmRvbSBpblxuICAgICAgICBsZXQgZXhwb25lbnRpYWwgPSBGbG9hdC5sb2cgdW5pZm9ybSAvLiBkZW5vbWluYXRvciBpblxuICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5yb3VuZF9kb3duIGV4cG9uZW50aWFsIGluXG4gICAgICAgIG1hdGNoIEludGVnZXIub2ZfZmxvYXQgZmxvYXQgd2l0aFxuICAgICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gSW50ZWdlci5tYXhfdmFsdWVcbiAgICAgICAgfCBpbnQgLT5cbiAgICAgICAgICBsZXQgaW50ID0gSW50ZWdlci4oICsgKSBsbyBpbnQgaW5cbiAgICAgICAgICBpZiBJbnRlZ2VyLiggPCApIGludCBsbyB0aGVuIEludGVnZXIubWF4X3ZhbHVlIGVsc2UgaW50KSlcbiAgOztcblxuICBsZXQgdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLnVuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IGxvZ191bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIubG9nX3VuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IG5vbl91bmlmb3JtIGYgbG8gaGkgPVxuICAgIHdlaWdodGVkX3VuaW9uIFsgMC4wNSwgcmV0dXJuIGxvOyAwLjA1LCByZXR1cm4gaGk7IDAuOSwgZiBsbyBoaSBdXG4gIDs7XG5cbiAgbGV0IGluY2x1c2l2ZSA9IG5vbl91bmlmb3JtIHVuaWZvcm1faW5jbHVzaXZlXG4gIGxldCBsb2dfaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4gIGxldCB1bmlmb3JtX2FsbCA9IHVuaWZvcm1faW5jbHVzaXZlIEludGVnZXIubWluX3ZhbHVlIEludGVnZXIubWF4X3ZhbHVlXG5cbiAgbGV0IGFsbCA9XG4gICAgWyVtYXBcbiAgICAgIGxldCBuZWdhdGl2ZSA9IGJvb2xcbiAgICAgIGFuZCBtYWduaXR1ZGUgPSBsb2dfaW5jbHVzaXZlIEludGVnZXIuemVybyBJbnRlZ2VyLm1heF92YWx1ZSBpblxuICAgICAgaWYgbmVnYXRpdmUgdGhlbiBJbnRlZ2VyLmJpdF9ub3QgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludFxuICBlbmQpXG5cbmxldCBpbnQgPSBGb3JfaW50LmFsbFxubGV0IGludF91bmlmb3JtID0gRm9yX2ludC51bmlmb3JtX2FsbFxubGV0IGludF9pbmNsdXNpdmUgPSBGb3JfaW50LmluY2x1c2l2ZVxubGV0IGludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZVxubGV0IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludF9nZW9tZXRyaWMgPSBGb3JfaW50Lmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX2ludDMyID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50MzJcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50MzJcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQzMlxuICBlbmQpXG5cbmxldCBpbnQzMiA9IEZvcl9pbnQzMi5hbGxcbmxldCBpbnQzMl91bmlmb3JtID0gRm9yX2ludDMyLnVuaWZvcm1fYWxsXG5sZXQgaW50MzJfaW5jbHVzaXZlID0gRm9yX2ludDMyLmluY2x1c2l2ZVxubGV0IGludDMyX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfaW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDMyX2dlb21ldHJpYyA9IEZvcl9pbnQzMi5nZW9tZXRyaWNcblxubW9kdWxlIEZvcl9pbnQ2MyA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludDYzXG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludDYzXG4gICAgbGV0IGxvZ191bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uTG9nX3VuaWZvcm0uaW50NjNcbiAgZW5kKVxuXG5sZXQgaW50NjMgPSBGb3JfaW50NjMuYWxsXG5sZXQgaW50NjNfdW5pZm9ybSA9IEZvcl9pbnQ2My51bmlmb3JtX2FsbFxubGV0IGludDYzX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5pbmNsdXNpdmVcbmxldCBpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My51bmlmb3JtX2luY2x1c2l2ZVxubGV0IGludDYzX2xvZ19pbmNsdXNpdmUgPSBGb3JfaW50NjMubG9nX2luY2x1c2l2ZVxubGV0IGludDYzX2xvZ191bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2M19nZW9tZXRyaWMgPSBGb3JfaW50NjMuZ2VvbWV0cmljXG5cbm1vZHVsZSBGb3JfaW50NjQgPSBGb3JfaW50ZWdlciAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnQ2NFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQ2NFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludDY0XG4gIGVuZClcblxubGV0IGludDY0ID0gRm9yX2ludDY0LmFsbFxubGV0IGludDY0X3VuaWZvcm0gPSBGb3JfaW50NjQudW5pZm9ybV9hbGxcbmxldCBpbnQ2NF9pbmNsdXNpdmUgPSBGb3JfaW50NjQuaW5jbHVzaXZlXG5sZXQgaW50NjRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnQ2NF9sb2dfaW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ19pbmNsdXNpdmVcbmxldCBpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfZ2VvbWV0cmljID0gRm9yX2ludDY0Lmdlb21ldHJpY1xuXG5tb2R1bGUgRm9yX25hdGl2ZWludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE5hdGl2ZWludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5uYXRpdmVpbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5uYXRpdmVpbnRcbiAgZW5kKVxuXG5sZXQgbmF0aXZlaW50ID0gRm9yX25hdGl2ZWludC5hbGxcbmxldCBuYXRpdmVpbnRfdW5pZm9ybSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9hbGxcbmxldCBuYXRpdmVpbnRfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ19pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfZ2VvbWV0cmljID0gRm9yX25hdGl2ZWludC5nZW9tZXRyaWNcbmxldCBmbG9hdF96ZXJvX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAwLlxubGV0IGZsb2F0X3plcm9fbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIDAuXG5cbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID1cbiAgRmxvYXQub25lX3VscCBgRG93biBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gRmxvYXQubWF4X2Zpbml0ZV92YWx1ZVxubGV0IGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X2luZl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9pbmZfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfbmFuX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5uYW5cbmxldCBmbG9hdF9taW5fbmFuX21hbnRpc3NhID0gSW50NjMuc3VjYyBmbG9hdF9pbmZfbWFudGlzc2FcbmxldCBmbG9hdF9tYXhfbmFuX21hbnRpc3NhID0gZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYVxubGV0IGZsb2F0X251bV9tYW50aXNzYV9iaXRzID0gNTJcblxuKCogV2Ugd2VpZ2h0IG1hbnRpc3NhcyBzbyB0aGF0IFwiaW50ZWdlci1saWtlXCIgdmFsdWVzLCBhbmQgdmFsdWVzIHdpdGggb25seSBhIGZldyBkaWdpdHNcbiAgIHBhc3QgdGhlIGRlY2ltYWwsIGFyZSByZWFzb25hYmx5IGNvbW1vbi4gKilcbmxldCBmbG9hdF9ub3JtYWxfbWFudGlzc2EgPVxuICBsZXQlYmluZCBudW1fYml0cyA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmUgMCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBpblxuICBsZXQlbWFwIGJpdHMgPVxuICAgIEZvcl9pbnQ2My5pbmNsdXNpdmUgSW50NjMuemVybyAoSW50NjMucHJlZCAoSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHMpKVxuICBpblxuICBJbnQ2My5zaGlmdF9sZWZ0IGJpdHMgKEludC4oIC0gKSBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBudW1fYml0cylcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oICsgKSBsb3dlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCAtICkgdXBwZXJfYm91bmQgb2Zmc2V0XG47O1xuXG4oKiBXZSB3ZWlnaHQgZXhwb25lbnRzIHN1Y2ggdGhhdCB2YWx1ZXMgbmVhciAxIGFyZSBtb3JlIGxpa2VseS4gKilcbmxldCBmbG9hdF9leHBvbmVudCA9XG4gIGxldCBtaWRwb2ludCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMS4gaW5cbiAgdW5pb25cbiAgICBbIGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCBtaWRwb2ludFxuICAgIDsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IG1pZHBvaW50IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnRcbiAgICBdXG47O1xuXG5sZXQgZmxvYXRfemVybyA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF96ZXJvX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X3plcm9fbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9XG4gICAgRm9yX2ludDYzLmxvZ19pbmNsdXNpdmUgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhXG4gIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IGZsb2F0X2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IGZsb2F0X25vcm1hbF9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9pbmZpbml0ZSA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF9pbmZfZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfaW5mX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbmFuID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X25hbl9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBGb3JfaW50NjMuaW5jbHVzaXZlIGZsb2F0X21pbl9uYW5fbWFudGlzc2EgZmxvYXRfbWF4X25hbl9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiBmbG9hdF96ZXJvXG4gIHwgU3Vibm9ybWFsIC0+IGZsb2F0X3N1Ym5vcm1hbFxuICB8IE5vcm1hbCAtPiBmbG9hdF9ub3JtYWxcbiAgfCBJbmZpbml0ZSAtPiBmbG9hdF9pbmZpbml0ZVxuICB8IE5hbiAtPiBmbG9hdF9uYW5cbjs7XG5cbmxldCBmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gMS5cbiAgfCBTdWJub3JtYWwgLT4gMTAuXG4gIHwgTm9ybWFsIC0+IDEwMC5cbiAgfCBJbmZpbml0ZSAtPiAxLlxuICB8IE5hbiAtPiAxLlxuOztcblxubGV0IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgZmlsdGVyID1cbiAgTGlzdC5maWx0ZXJfbWFwIEZsb2F0LkNsYXNzLmFsbCB+ZjooZnVuIGMgLT5cbiAgICBpZiBmaWx0ZXIgYyB0aGVuIFNvbWUgKGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjLCBmbG9hdF9vZl9jbGFzcyBjKSBlbHNlIE5vbmUpXG4gIHw+IHdlaWdodGVkX3VuaW9uXG47O1xuXG5sZXQgZmxvYXRfZmluaXRlID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfd2l0aG91dF9uYW4gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCB8IEluZmluaXRlIC0+IHRydWVcbiAgICB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdCA9IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1biBfIC0+IHRydWUpXG5cbmxldCBmbG9hdF9maW5pdGVfbm9uX3plcm8gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IFplcm8gfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9wb3NpdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X25lZ2F0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF9wb3NpdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfbmVnYXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGlmIChub3QgKEZsb2F0LmlzX2Zpbml0ZSBsb3dlcl9ib3VuZCkpIHx8IG5vdCAoRmxvYXQuaXNfZmluaXRlIHVwcGVyX2JvdW5kKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IGJvdW5kcyBhcmUgbm90IGZpbml0ZVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgbGV0IGxvd2VyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kIGluXG4gIGxldCB1cHBlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHVwcGVyX2JvdW5kIGluXG4gIGlmIGxvd2VyX2luY2x1c2l2ZSA+IHVwcGVyX2luY2x1c2l2ZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IHJlcXVlc3RlZCByYW5nZSBpcyBlbXB0eVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzpsb3dlcl9pbmNsdXNpdmUgfmhpOnVwcGVyX2luY2x1c2l2ZSlcbjs7XG5cbmxldCBmbG9hdF9pbmNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBpZiBGbG9hdC5lcXVhbCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICB0aGVuIHJldHVybiBsb3dlcl9ib3VuZFxuICBlbHNlIGlmIEZsb2F0LiggPSApIChGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCkgdXBwZXJfYm91bmRcbiAgdGhlbiB1bmlvbiBbIHJldHVybiBsb3dlcl9ib3VuZDsgcmV0dXJuIHVwcGVyX2JvdW5kIF1cbiAgZWxzZVxuICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICBbIDAuMDUsIHJldHVybiBsb3dlcl9ib3VuZFxuICAgICAgOyAwLjA1LCByZXR1cm4gdXBwZXJfYm91bmRcbiAgICAgIDsgMC45LCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICAgICAgXVxuOztcblxubGV0IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoID1cbiAgbGlzdF93aXRoX2xlbmd0aCBjaGFyX2dlbiB+bGVuZ3RoIHw+IG1hcCB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0XG47O1xuXG5sZXQgc3RyaW5nX29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZyA9IHN0cmluZ19vZiBjaGFyXG5sZXQgc3RyaW5nX25vbl9lbXB0eSA9IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhclxubGV0IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoID0gc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXIgfmxlbmd0aFxuXG5tb2R1bGUgRWRpdF9zdHJpbmcgPSBzdHJ1Y3RcbiAgbGV0IGVkaXRfaW5zZXJ0IHN0cmluZyA9XG4gICAgbGV0JWJpbmQgcG9zID0gaW50X3VuaWZvcm1faW5jbHVzaXZlIDAgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIGxlbiA9IGludF9nZW9tZXRyaWMgMSB+cDowLjUgaW5cbiAgICBsZXQlYmluZCBzdHIgPSBzdHJpbmdfd2l0aF9sZW5ndGggfmxlbmd0aDpsZW4gaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIHBvczsgc3RyOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIHBvcyBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X3JlbW92ZSBzdHJpbmcgPVxuICAgIGxldCViaW5kIGxlbiA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgcG9zID0gaW50X3VuaWZvcm1faW5jbHVzaXZlIDAgKFN0cmluZy5sZW5ndGggc3RyaW5nIC0gbGVuKSBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgcG9zOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIChwb3MgKyBsZW4pIF1cbiAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgfD4gcmV0dXJuXG4gIDs7XG5cbiAgbGV0IGVkaXRfcmVwbGFjZSBzdHJpbmcgPVxuICAgIGxldCViaW5kIGxlbiA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSAoU3RyaW5nLmxlbmd0aCBzdHJpbmcpIGluXG4gICAgbGV0JWJpbmQgcG9zID0gaW50X3VuaWZvcm1faW5jbHVzaXZlIDAgKFN0cmluZy5sZW5ndGggc3RyaW5nIC0gbGVuKSBpblxuICAgIGxldCViaW5kIHN0ciA9IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoOmxlbiBpblxuICAgIFsgU3RyaW5nLnByZWZpeCBzdHJpbmcgcG9zOyBzdHI7IFN0cmluZy5kcm9wX3ByZWZpeCBzdHJpbmcgKHBvcyArIGxlbikgXVxuICAgIHw+IFN0cmluZy5jb25jYXRcbiAgICB8PiByZXR1cm5cbiAgOztcblxuICBsZXQgZWRpdF9kb3VibGUgc3RyaW5nID1cbiAgICBsZXQlYmluZCBsZW4gPSBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgKFN0cmluZy5sZW5ndGggc3RyaW5nKSBpblxuICAgIGxldCViaW5kIHBvcyA9IGludF91bmlmb3JtX2luY2x1c2l2ZSAwIChTdHJpbmcubGVuZ3RoIHN0cmluZyAtIGxlbikgaW5cbiAgICBbIFN0cmluZy5wcmVmaXggc3RyaW5nIChwb3MgKyBsZW4pOyBTdHJpbmcuZHJvcF9wcmVmaXggc3RyaW5nIHBvcyBdXG4gICAgfD4gU3RyaW5nLmNvbmNhdFxuICAgIHw+IHJldHVyblxuICA7O1xuXG4gIGxldCBlZGl0X25vbmVtcHR5IHN0cmluZyA9XG4gICAgWyBlZGl0X2luc2VydCBzdHJpbmc7IGVkaXRfcmVtb3ZlIHN0cmluZzsgZWRpdF9yZXBsYWNlIHN0cmluZzsgZWRpdF9kb3VibGUgc3RyaW5nIF1cbiAgICB8PiB1bmlvblxuICA7O1xuXG4gIGxldCByZWMgZWRpdCBzdHJpbmcgbl90aW1lcyA9XG4gICAgaWYgbl90aW1lcyA8PSAwXG4gICAgdGhlbiByZXR1cm4gc3RyaW5nXG4gICAgZWxzZSAoXG4gICAgICBsZXQlYmluZCBzdHJpbmcgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nIHRoZW4gZWRpdF9pbnNlcnQgc3RyaW5nIGVsc2UgZWRpdF9ub25lbXB0eSBzdHJpbmdcbiAgICAgIGluXG4gICAgICBlZGl0IHN0cmluZyAobl90aW1lcyAtIDEpKVxuICA7O1xuZW5kXG5cbmxldCBzdHJpbmdfbGlrZSBzdHJpbmcgPVxuICBsZXQlYmluZCBuX3RpbWVzID0gaW50X2dlb21ldHJpYyAwIH5wOjAuNSBpblxuICBFZGl0X3N0cmluZy5lZGl0IHN0cmluZyBuX3RpbWVzXG47O1xuXG5sZXQgYnl0ZXMgPSBtYXAgc3RyaW5nIH5mOkJ5dGVzLm9mX3N0cmluZ1xuXG5sZXQgc2V4cF9vZiBhdG9tID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0JWJpbmQgc2l6ZSA9IHNpemUgaW5cbiAgICAoKiBjaG9vc2UgYSBudW1iZXIgd2VpZ2h0ZWQgbG93IHNvIHdlIGhhdmUgYSBkZWNyZWFzaW5nLCBidXQgbm90IHZhbmlzaGluZywgY2hhbmNlXG4gICAgICAgdG8gZ2VuZXJhdGUgYXRvbXMgYXMgc2l6ZSBncm93cyAqKVxuICAgIG1hdGNoJWJpbmQgRm9yX2ludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCAoc2l6ZSArIDEpIHdpdGhcbiAgICAoKiBnZW5lcmF0ZSBhbiBhdG9tIHVzaW5nIHRoZSBnaXZlbiBzaXplICopXG4gICAgfCAwIC0+XG4gICAgICBsZXQlbWFwIGF0b20gPSBhdG9tIGluXG4gICAgICBTZXhwLkF0b20gYXRvbVxuICAgICgqIHJlbHlpbmcgb24gW0xpc3QuZ2VuXSB0byBkaXN0cmlidXRlIFtzaXplXSBvdmVyIHN1Yi1zZXhwcyAqKVxuICAgIHwgXyAtPlxuICAgICAgbGV0JW1hcCBsaXN0ID0gbGlzdCBzZWxmIGluXG4gICAgICBTZXhwLkxpc3QgbGlzdClcbjs7XG5cbmxldCBzZXhwID0gc2V4cF9vZiBzdHJpbmdcblxubGV0IG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X2dlbiBkYXRhX2dlbiA9XG4gIGxldCViaW5kIGtleXMgPSBsaXN0IGtleV9nZW4gaW5cbiAgbGV0IGtleXMgPSBMaXN0LmRlZHVwX2FuZF9zb3J0IGtleXMgfmNvbXBhcmU6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgbGV0JWJpbmQgZGF0YSA9IGxpc3Rfd2l0aF9sZW5ndGggZGF0YV9nZW4gfmxlbmd0aDooTGlzdC5sZW5ndGgga2V5cykgaW5cbiAgcmV0dXJuIChNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciAoTGlzdC56aXBfZXhuIGtleXMgZGF0YSkpXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgbWFwIChsaXN0IGVsdF9nZW4pIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLm9mX2xpc3QgfmNvbXBhcmF0b3IpXG47O1xuXG5sZXQgY29tcGFyYXRvcl9vZl9tXG4gICAgICAodHlwZSBhIGMpXG4gICAgICAobW9kdWxlIE0gOiBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGMpXG4gID1cbiAgTS5jb21wYXJhdG9yXG47O1xuXG5sZXQgbWFwX3RfbSBtIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3Jfb2ZfbSBtIGluXG4gIG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X2dlbiBkYXRhX2dlblxuICB8PiBtYXAgfmY6KE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG47O1xuXG5sZXQgc2V0X3RfbSBtIGVsdF9nZW4gPVxuICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3Jfb2ZfbSBtIGluXG4gIHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICB8PiBtYXAgfmY6KFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG47O1xuXG5sZXQgYmlnYXJyYXkxIHQga2luZCBsYXlvdXQgPVxuICBsZXQlbWFwIGVsdHMgPSBsaXN0IHQgaW5cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IGRpbSA9IEFycmF5Lmxlbmd0aCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmluaXQga2luZCBsYXlvdXQgZGltIH5mOihmdW4gaSAtPiBlbHRzLihpIC0gb2Zmc2V0KSlcbjs7XG5cbmxldCBiaWdzdHJpbmcgPSBiaWdhcnJheTEgY2hhciBDaGFyIENfbGF5b3V0XG5sZXQgZmxvYXQzMl92ZWMgPSBiaWdhcnJheTEgZmxvYXQgRmxvYXQzMiBGb3J0cmFuX2xheW91dFxubGV0IGZsb2F0NjRfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0NjQgRm9ydHJhbl9sYXlvdXRcblxubGV0IGJpZ2FycmF5Ml9kaW0gPVxuICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICB8IDAgLT4gcmV0dXJuICgwLCAwKVxuICB8IG1heF90b3RhbF9zaXplIC0+XG4gICAgbGV0JWJpbmQgYSA9XG4gICAgICAoKiBjaG9vc2UgYSBkaW1lbnNpb24gdXAgdG8gW21heF90b3RhbF9zaXplXSwgd2VpZ2h0ZWQgbG93IHRvIGdpdmUgdGhlIG90aGVyXG4gICAgICAgICBkaW1lbnNpb24gYSBnb29kIGNoYW5jZSBvZiBiZWluZyBjb21wYXJhdGl2ZWx5IGhpZ2ggKilcbiAgICAgIGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMSBtYXhfdG90YWxfc2l6ZVxuICAgIGluXG4gICAgbGV0JWJpbmQgYiA9XG4gICAgICAoKiBjaG9vc2UgYSBkaW1lbnNpb24gdXAgdG8gW21heF90b3RhbF9zaXplIC8gYV0sIHdlaWdodGVkIGhpZ2ggdG8gcmVhY2ggY2xvc2UgdG9cbiAgICAgICAgIFttYXhfdG90YWxfc2l6ZV0gbW9zdCBvZiB0aGUgdGltZSAqKVxuICAgICAgbGV0IG1heF9iID0gbWF4X3RvdGFsX3NpemUgLyBhIGluXG4gICAgICBsZXQlbWFwIGJfd2VpZ2h0ZWRfbG93ID0gaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZSAwIG1heF9iIGluXG4gICAgICBtYXhfYiAtIGJfd2VpZ2h0ZWRfbG93XG4gICAgaW5cbiAgICAoKiBhdm9pZCBhbnkgc2tldyBvZiBhIHZzIGIgYnkgcmFuZG9tbHkgc3dhcHBpbmcgKilcbiAgICBpZiVtYXAgYm9vbCB0aGVuIGEsIGIgZWxzZSBiLCBhXG47O1xuXG5sZXQgYmlnYXJyYXkyIHQga2luZCBsYXlvdXQgPVxuICBsZXQlYmluZCBkaW0xLCBkaW0yID0gYmlnYXJyYXkyX2RpbSBpblxuICBsZXQlbWFwIGVsdHMgPSBsaXN0X3dpdGhfbGVuZ3RoIH5sZW5ndGg6ZGltMSAobGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTIgdCkgaW5cbiAgbGV0IGVsdHMgPSBBcnJheS5vZl9saXN0X21hcCB+ZjpBcnJheS5vZl9saXN0IGVsdHMgaW5cbiAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaW5pdCBraW5kIGxheW91dCBkaW0xIGRpbTIgfmY6KGZ1biBpIGogLT5cbiAgICBlbHRzLihpIC0gb2Zmc2V0KS4oaiAtIG9mZnNldCkpXG47O1xuXG5sZXQgZmxvYXQzMl9tYXQgPSBiaWdhcnJheTIgZmxvYXQgRmxvYXQzMiBGb3J0cmFuX2xheW91dFxubGV0IGZsb2F0NjRfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0NjQgRm9ydHJhbl9sYXlvdXRcblxubW9kdWxlIERlYnVnID0gc3RydWN0XG4gIGxldCBjb3ZlcmFnZVxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBDbXAgOiBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgc2FtcGxlXG4gICAgPVxuICAgIFNlcXVlbmNlLmZvbGRcbiAgICAgIHNhbXBsZVxuICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIENtcCkpXG4gICAgICB+ZjooZnVuIGNvdW50cyB2YWx1ZSAtPlxuICAgICAgICBNYXAudXBkYXRlIGNvdW50cyB2YWx1ZSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXYgKyAxKSlcbiAgOztcblxuICBsZXQgbW9uaXRvciB0IH5mID1cbiAgICBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICBmIHZhbHVlO1xuICAgICAgdmFsdWUpXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgb3BlcmF0aW9ucyBvbiB0aGUgdHlwZSBbaW50NjRdIG9mXG4gICBzaWduZWQgNjQtYml0IGludGVnZXJzLiAgVW5saWtlIHRoZSBidWlsdC1pbiBbaW50XSB0eXBlLFxuICAgdGhlIHR5cGUgW2ludDY0XSBpcyBndWFyYW50ZWVkIHRvIGJlIGV4YWN0bHkgNjQtYml0IHdpZGUgb24gYWxsXG4gICBwbGF0Zm9ybXMuICBBbGwgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG92ZXIgW2ludDY0XSBhcmUgdGFrZW5cbiAgIG1vZHVsbyAye142NH1cblxuICAgUGVyZm9ybWFuY2Ugbm90aWNlOiB2YWx1ZXMgb2YgdHlwZSBbaW50NjRdIG9jY3VweSBtb3JlIG1lbW9yeVxuICAgc3BhY2UgdGhhbiB2YWx1ZXMgb2YgdHlwZSBbaW50XSwgYW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvblxuICAgW2ludDY0XSBhcmUgZ2VuZXJhbGx5IHNsb3dlciB0aGFuIHRob3NlIG9uIFtpbnRdLiAgVXNlIFtpbnQ2NF1cbiAgIG9ubHkgd2hlbiB0aGUgYXBwbGljYXRpb24gcmVxdWlyZXMgZXhhY3QgNjQtYml0IGFyaXRobWV0aWMuXG5cbiAgICBMaXRlcmFscyBmb3IgNjQtYml0IGludGVnZXJzIGFyZSBzdWZmaXhlZCBieSBMOlxuICAgIHtbXG4gICAgICBsZXQgemVybzogaW50NjQgPSAwTFxuICAgICAgbGV0IG9uZTogaW50NjQgPSAxTFxuICAgICAgbGV0IG1fb25lOiBpbnQ2NCA9IC0xTFxuICAgIF19XG4qKVxuXG52YWwgemVybyA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIDAuICopXG5cbnZhbCBvbmUgOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAxLiAqKVxuXG52YWwgbWludXNfb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgLTEuICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbigqKiBVbmFyeSBuZWdhdGlvbi4gKilcblxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuKCoqIEFkZGl0aW9uLiAqKVxuXG5leHRlcm5hbCBzdWIgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3N1YlwiXG4oKiogU3VidHJhY3Rpb24uICopXG5cbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbigqKiBNdWx0aXBsaWNhdGlvbi4gKilcblxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuKCoqIEludGVnZXIgZGl2aXNpb24uXG4gICBAcmFpc2UgRGl2aXNpb25fYnlfemVybyBpZiB0aGUgc2Vjb25kXG4gICBhcmd1bWVudCBpcyB6ZXJvLiAgVGhpcyBkaXZpc2lvbiByb3VuZHMgdGhlIHJlYWwgcXVvdGllbnQgb2ZcbiAgIGl0cyBhcmd1bWVudHMgdG93YXJkcyB6ZXJvLCBhcyBzcGVjaWZpZWQgZm9yIHshU3RkbGliLigvKX0uICopXG5cbnZhbCB1bnNpZ25lZF9kaXYgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFkaXZ9LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDggKilcblxudmFsIHN1Y2MgOiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFN1Y2Nlc3Nvci4gIFtJbnQ2NC5zdWNjIHhdIGlzIFtJbnQ2NC5hZGQgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgcHJlZCA6IGludDY0IC0+IGludDY0XG4oKiogUHJlZGVjZXNzb3IuICBbSW50NjQucHJlZCB4XSBpcyBbSW50NjQuc3ViIHggSW50NjQub25lXS4gKilcblxudmFsIGFicyA6IGludDY0IC0+IGludDY0XG4oKiogW2FicyB4XSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgW3hdLiBPbiBbbWluX2ludF0gdGhpc1xuICAgaXMgW21pbl9pbnRdIGl0c2VsZiBhbmQgdGh1cyByZW1haW5zIG5lZ2F0aXZlLiAqKVxuXG52YWwgbWF4X2ludCA6IGludDY0XG4oKiogVGhlIGdyZWF0ZXN0IHJlcHJlc2VudGFibGUgNjQtYml0IGludGVnZXIsIDJ7XjYzfSAtIDEuICopXG5cbnZhbCBtaW5faW50IDogaW50NjRcbigqKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgLTJ7XjYzfS4gKilcblxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuKCoqIEJpdHdpc2UgbG9naWNhbCBhbmQuICopXG5cbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIG9yLiAqKVxuXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGV4Y2x1c2l2ZSBvci4gKilcblxudmFsIGxvZ25vdCA6IGludDY0IC0+IGludDY0XG4oKiogQml0d2lzZSBsb2dpY2FsIG5lZ2F0aW9uLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbigqKiBbSW50NjQuc2hpZnRfbGVmdCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIGxlZnQgYnkgW3ldIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2FzclwiXG4oKiogW0ludDY0LnNoaWZ0X3JpZ2h0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGFuIGFyaXRobWV0aWMgc2hpZnQ6IHRoZSBzaWduIGJpdCBvZiBbeF0gaXMgcmVwbGljYXRlZFxuICAgYW5kIGluc2VydGVkIGluIHRoZSB2YWNhdGVkIGJpdHMuXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IHldIHNoaWZ0cyBbeF0gdG8gdGhlIHJpZ2h0IGJ5IFt5XSBiaXRzLlxuICAgVGhpcyBpcyBhIGxvZ2ljYWwgc2hpZnQ6IHplcm9lcyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0c1xuICAgcmVnYXJkbGVzcyBvZiB0aGUgc2lnbiBvZiBbeF0uXG4gICBUaGUgcmVzdWx0IGlzIHVuc3BlY2lmaWVkIGlmIFt5IDwgMF0gb3IgW3kgPj0gNjRdLiAqKVxuXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGludGVnZXIgKHR5cGUgW2ludF0pIHRvIGEgNjQtYml0IGludGVnZXJcbiAgICAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhblxuICAgaW50ZWdlciAodHlwZSBbaW50XSkuICBPbiA2NC1iaXQgcGxhdGZvcm1zLCB0aGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye142M30sIGkuZS4gdGhlIGhpZ2gtb3JkZXIgYml0IGlzIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMxfSwgaS5lLiB0aGUgdG9wIDMzIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gKilcblxudmFsIHVuc2lnbmVkX3RvX2ludCA6IGludDY0IC0+IGludCBvcHRpb25cbigqKiBTYW1lIGFzIHshdG9faW50fSwgYnV0IGludGVycHJldHMgdGhlIGFyZ3VtZW50IGFzIGFuIHtlIHVuc2lnbmVkfSBpbnRlZ2VyLlxuICAgIFJldHVybnMgW05vbmVdIGlmIHRoZSB1bnNpZ25lZCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQgY2Fubm90IGZpdCBpbnRvIGFuXG4gICAgW2ludF0uXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBhIDY0LWJpdCBpbnRlZ2VyLFxuICAgZGlzY2FyZGluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0ICh0cnVuY2F0ZSB0b3dhcmRzIDApLlxuICAgSWYgdGhlIHRydW5jYXRlZCBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgb3V0c2lkZSB0aGUgcmFuZ2VcbiAgIFxcW3shSW50NjQubWluX2ludH0sIHshSW50NjQubWF4X2ludH1cXF0sIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGFuZFxuICAgYW4gdW5zcGVjaWZpZWQsIHBsYXRmb3JtLWRlcGVuZGVudCBpbnRlZ2VyIGlzIHJldHVybmVkLiAqKVxuXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyIHRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLiAqKVxuXG5cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSlcbiAgIHRvIGEgNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkuICopXG5cbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gNjQtYml0IGludGVnZXIgKHR5cGUgW2ludDY0XSkgdG8gYVxuICAgMzItYml0IGludGVnZXIgKHR5cGUgW2ludDMyXSkuIFRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfSwgaS5lLiB0aGUgdG9wIDMyIGJpdHMgYXJlIGxvc3RcbiAgIGR1cmluZyB0aGUgY29udmVyc2lvbi4gICopXG5cbmV4dGVybmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX25hdGl2ZWludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gbmF0aXZlIGludGVnZXIgKHR5cGUgW25hdGl2ZWludF0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19uYXRpdmVpbnQgOiBpbnQ2NCAtPiBuYXRpdmVpbnQgPSBcIiVpbnQ2NF90b19uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIG5hdGl2ZSBpbnRlZ2VyLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzJ9LiAgT24gNjQtYml0IHBsYXRmb3JtcyxcbiAgIHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqKVxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBzdHJpbmcgdG8gYSA2NC1iaXQgaW50ZWdlci5cbiAgIFRoZSBzdHJpbmcgaXMgcmVhZCBpbiBkZWNpbWFsIChieSBkZWZhdWx0LCBvciBpZiB0aGUgc3RyaW5nXG4gICBiZWdpbnMgd2l0aCBbMHVdKSBvciBpbiBoZXhhZGVjaW1hbCwgb2N0YWwgb3IgYmluYXJ5IGlmIHRoZVxuICAgc3RyaW5nIGJlZ2lucyB3aXRoIFsweF0sIFswb10gb3IgWzBiXSByZXNwZWN0aXZlbHkuXG5cbiAgIFRoZSBbMHVdIHByZWZpeCByZWFkcyB0aGUgaW5wdXQgYXMgYW4gdW5zaWduZWQgaW50ZWdlciBpbiB0aGUgcmFuZ2VcbiAgIFtbMCwgMipJbnQ2NC5tYXhfaW50KzFdXS4gIElmIHRoZSBpbnB1dCBleGNlZWRzIHshSW50NjQubWF4X2ludH1cbiAgIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgc2lnbmVkIGludGVnZXJcbiAgIFtJbnQ2NC5taW5faW50ICsgaW5wdXQgLSBJbnQ2NC5tYXhfaW50IC0gMV0uXG5cbiAgIFRoZSBbX10gKHVuZGVyc2NvcmUpIGNoYXJhY3RlciBjYW4gYXBwZWFyIGFueXdoZXJlIGluIHRoZSBzdHJpbmdcbiAgIGFuZCBpcyBpZ25vcmVkLlxuICAgQHJhaXNlIEZhaWx1cmUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBub3RcbiAgIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlciwgb3IgaWYgdGhlIGludGVnZXIgcmVwcmVzZW50ZWRcbiAgIGV4Y2VlZHMgdGhlIHJhbmdlIG9mIGludGVnZXJzIHJlcHJlc2VudGFibGUgaW4gdHlwZSBbaW50NjRdLiAqKVxuXG52YWwgb2Zfc3RyaW5nX29wdDogc3RyaW5nIC0+IGludDY0IG9wdGlvblxuKCoqIFNhbWUgYXMgW29mX3N0cmluZ10sIGJ1dCByZXR1cm4gW05vbmVdIGluc3RlYWQgb2YgcmFpc2luZy5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgdG9fc3RyaW5nIDogaW50NjQgLT4gc3RyaW5nXG4oKiogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaXRzIGFyZ3VtZW50LCBpbiBkZWNpbWFsLiAqKVxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuKCoqIFJldHVybiB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGZsb2F0IGFjY29yZGluZ1xuICAgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LlxuICAgQml0IDYzIG9mIHRoZSByZXN1bHQgcmVwcmVzZW50cyB0aGUgc2lnbiBvZiB0aGUgZmxvYXQ7XG4gICBiaXRzIDYyIHRvIDUyIHJlcHJlc2VudCB0aGUgKGJpYXNlZCkgZXhwb25lbnQ7IGJpdHMgNTEgdG8gMFxuICAgcmVwcmVzZW50IHRoZSBtYW50aXNzYS4gKilcblxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGZsb2F0aW5nLXBvaW50IG51bWJlciB3aG9zZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbixcbiAgIGFjY29yZGluZyB0byB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgJ2RvdWJsZSBmb3JtYXQnIGJpdCBsYXlvdXQsXG4gICBpcyB0aGUgZ2l2ZW4gW2ludDY0XS4gKilcblxudHlwZSB0ID0gaW50NjRcbigqKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgNjQtYml0IGludGVnZXJzLiAqKVxuXG52YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciA2NC1iaXQgaW50ZWdlcnMsIHdpdGggdGhlIHNhbWUgc3BlY2lmaWNhdGlvbiBhc1xuICAgIHshU3RkbGliLmNvbXBhcmV9LiAgQWxvbmcgd2l0aCB0aGUgdHlwZSBbdF0sIHRoaXMgZnVuY3Rpb24gW2NvbXBhcmVdXG4gICAgYWxsb3dzIHRoZSBtb2R1bGUgW0ludDY0XSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3JzXG4gICAgeyFTZXQuTWFrZX0gYW5kIHshTWFwLk1ha2V9LiAqKVxuXG52YWwgdW5zaWduZWRfY29tcGFyZTogdCAtPiB0IC0+IGludFxuKCoqIFNhbWUgYXMgeyFjb21wYXJlfSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyB7ZSB1bnNpZ25lZH1cbiAgICA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgICBAc2luY2UgNC4wOCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMgKilcblxudmFsIG1pbjogdCAtPiB0IC0+IHRcbigqKiBSZXR1cm4gdGhlIHNtYWxsZXIgb2YgdGhlIHR3byBhcmd1bWVudHMuXG4gICAgQHNpbmNlIDQuMTNcbiopXG5cbnZhbCBtYXg6IHQgLT4gdCAtPiB0XG4oKiogUmV0dXJuIHRoZSBncmVhdGVyIG9mIHRoZSB0d28gYXJndW1lbnRzLlxuICAgIEBzaW5jZSA0LjEzXG4gKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3IgNjQtYml0IGludHMsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMSAqKVxuXG52YWwgaGFzaCA6IHQgLT4gaW50XG4oKiogQW4gdW5zZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3IgNjQtYml0IGludHMsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4xICopXG4iLCJvcGVuISBCYXNlXG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBhdG9taWMgOiBfIHRcbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYSBTZXF1ZW5jZS50KSAtPiAnYSB0XG4gIHZhbCBzaHJpbmsgOiAnYSB0IC0+ICdhIC0+ICdhIFNlcXVlbmNlLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgbGV0IGF0b21pYyBfID0gU2VxdWVuY2UuZW1wdHlcbiAgbGV0IGNyZWF0ZSA9IEZuLmlkXG4gIGxldCBzaHJpbmsgPSBGbi5pZFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgbWFwIHQgfmYgfmZfaW52ZXJzZSA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UubWFwIH5mIChzaHJpbmsgdCAoZl9pbnZlcnNlIHgpKSlcbmxldCBmaWx0ZXIgdCB+ZiA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2UuZmlsdGVyIH5mIChzaHJpbmsgdCB4KSlcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiB+Zl9pbnZlcnNlID1cbiAgY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXJfbWFwIH5mIChzaHJpbmsgdCAoZl9pbnZlcnNlIHgpKSlcbjs7XG5cbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggLT4gU2VxdWVuY2Uub2ZfbGF6eSAobGF6eSAoc2hyaW5rIChmb3JjZSBsYXp5X3QpIHgpKSlcblxubGV0IGZpeGVkX3BvaW50IG9mX3Nocmlua2VyID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9zaHJpbmtlciAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIC0+XG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgIFsgU2VxdWVuY2UubWFwIChzaHJpbmsgZnN0X3QgZnN0KSB+ZjooZnVuIGZzdCAtPiBmc3QsIHNuZClcbiAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgc25kX3Qgc25kKSB+ZjooZnVuIHNuZCAtPiBmc3QsIHNuZClcbiAgICAgIF0pXG47O1xuXG5sZXQgdW5pdCA9IGF0b21pY1xubGV0IGJvb2wgPSBhdG9taWNcbmxldCBjaGFyID0gYXRvbWljXG5sZXQgaW50ID0gYXRvbWljXG5sZXQgaW50MzIgPSBhdG9taWNcbmxldCBpbnQ2MyA9IGF0b21pY1xubGV0IGludDY0ID0gYXRvbWljXG5sZXQgbmF0aXZlaW50ID0gYXRvbWljXG5sZXQgZmxvYXQgPSBhdG9taWNcblxubGV0IGJpZ2FycmF5MSBzcmMgPVxuICBsZXQgZGltID0gQmlnYXJyYXkuQXJyYXkxLmRpbSBzcmMgaW5cbiAgbWF0Y2ggZGltIHdpdGhcbiAgfCAwIC0+IFNlcXVlbmNlLmVtcHR5XG4gIHwgXyAtPlxuICAgIGxldCBraW5kID0gQmlnYXJyYXkuQXJyYXkxLmtpbmQgc3JjIGluXG4gICAgbGV0IGxheW91dCA9IEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgc3JjIGluXG4gICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICBTZXF1ZW5jZS5pbml0IGRpbSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgIGxldCB0b19za2lwID0gdG9fc2tpcCArIG9mZnNldCBpblxuICAgICAgQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaW5pdCBraW5kIGxheW91dCAoZGltIC0gMSkgfmY6KGZ1biBpIC0+XG4gICAgICAgIHNyYy57aWYgaSA8IHRvX3NraXAgdGhlbiBpIGVsc2UgaSArIDF9KSlcbjs7XG5cbmxldCBiaWdzdHJpbmcgPSBjcmVhdGUgYmlnYXJyYXkxXG5sZXQgZmxvYXQzMl92ZWMgPSBjcmVhdGUgYmlnYXJyYXkxXG5sZXQgZmxvYXQ2NF92ZWMgPSBjcmVhdGUgYmlnYXJyYXkxXG5cbmxldCBiaWdhcnJheTIgPVxuICBsZXQgbW9kdWxlIERpbXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBkaW0xIDogaW50XG4gICAgICA7IGRpbTIgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICBsZXQgY3JlYXRlIGEgPSBCaWdhcnJheS5BcnJheTIueyBkaW0xID0gZGltMSBhOyBkaW0yID0gZGltMiBhIH1cbiAgZW5kXG4gIGluXG4gIGxldCBzaHJpbmsgZmllbGQgc3JjID1cbiAgICBsZXQgZGltcyA9IERpbXMuY3JlYXRlIHNyYyBpblxuICAgIG1hdGNoIEZpZWxkLmdldCBmaWVsZCBkaW1zIHdpdGhcbiAgICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgICB8IF8gLT5cbiAgICAgIGxldCBraW5kID0gQmlnYXJyYXkuQXJyYXkyLmtpbmQgc3JjIGluXG4gICAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkyLmxheW91dCBzcmMgaW5cbiAgICAgIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gICAgICBsZXQgKHsgZGltMTsgZGltMiB9IDogRGltcy50KSA9IEZpZWxkLm1hcCBmaWVsZCBkaW1zIH5mOkludC5wcmVkIGluXG4gICAgICBTZXF1ZW5jZS5pbml0IChGaWVsZC5nZXQgZmllbGQgZGltcykgfmY6KGZ1biB0b19za2lwIC0+XG4gICAgICAgIGxldCB0b19za2lwID0gdG9fc2tpcCArIG9mZnNldCBpblxuICAgICAgICBsZXQgc2tpcCBpID0gaWYgaSA8IHRvX3NraXAgdGhlbiBpIGVsc2UgaSArIDEgaW5cbiAgICAgICAgQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaW5pdCBraW5kIGxheW91dCBkaW0xIGRpbTIgfmY6KGZ1biBkaW0xIGRpbTIgLT5cbiAgICAgICAgICBsZXQgKHsgZGltMTsgZGltMiB9IDogRGltcy50KSA9IEZpZWxkLm1hcCBmaWVsZCB7IGRpbTE7IGRpbTIgfSB+Zjpza2lwIGluXG4gICAgICAgICAgc3JjLntkaW0xLCBkaW0yfSkpXG4gIGluXG4gIGZ1biBzcmMgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmluayBEaW1zLkZpZWxkcy5kaW0xIHNyYzsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTIgc3JjIF1cbjs7XG5cbmxldCBmbG9hdDMyX21hdCA9IGNyZWF0ZSBiaWdhcnJheTJcbmxldCBmbG9hdDY0X21hdCA9IGNyZWF0ZSBiaWdhcnJheTJcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgY3JlYXRlIChmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgIChTZXF1ZW5jZS5zaW5nbGV0b24gTm9uZSlcbiAgICAgICAgKFNlcXVlbmNlLm1hcCB+ZjpPcHRpb24ucmV0dXJuIChzaHJpbmsgdmFsdWVfdCB2YWx1ZSkpKVxuOztcblxubGV0IGxpc3QgZWx0X3QgPVxuICBmaXhlZF9wb2ludCAoZnVuIGxpc3RfdCAtPlxuICAgIGNyZWF0ZSAoZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gU2VxdWVuY2UuZW1wdHlcbiAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gdGFpbFxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgZWx0X3QgaGVhZCkgfmY6KGZ1biBoZWFkIC0+IGhlYWQgOjogdGFpbClcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGxpc3RfdCB0YWlsKSB+ZjooZnVuIHRhaWwgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHN0cmluZyA9IG1hcCAobGlzdCBjaGFyKSB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0IH5mX2ludmVyc2U6U3RyaW5nLnRvX2xpc3RcbmxldCBieXRlcyA9IG1hcCBzdHJpbmcgfmY6Qnl0ZXMub2Zfc3RyaW5nIH5mX2ludmVyc2U6Qnl0ZXMudG9fc3RyaW5nXG5sZXQgYXJyYXkgdCA9IG1hcCAobGlzdCB0KSB+ZjpBcnJheS5vZl9saXN0IH5mX2ludmVyc2U6QXJyYXkudG9fbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZSB+Zl9pbnZlcnNlOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbCB+Zl9pbnZlcnNlOkxhenkuZm9yY2VcblxubGV0IHNleHAgPVxuICBmaXhlZF9wb2ludCAoZnVuIHNocmlua2VyIC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBTZXhwLkxpc3QgbCAtPlxuICAgICAgICBsZXQgc2hyaW5rX2xpc3QgPVxuICAgICAgICAgIHNocmluayAobGlzdCBzaHJpbmtlcikgbCB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBsIC0+IFNleHAuTGlzdCBsKVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2hyaW5rX3RyZWUgPSBTZXF1ZW5jZS5vZl9saXN0IGwgaW5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBzaHJpbmtfbGlzdDsgc2hyaW5rX3RyZWUgXSkpXG47O1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOkVpdGhlci5maXJzdFxuICAgIHwgU2Vjb25kIHNuZCAtPiBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOkVpdGhlci5zZWNvbmQpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXBcbiAgICAoZWl0aGVyIG9rX3QgZXJyX3QpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgICB8IFNlY29uZCBlcnIgLT4gRXJyb3IgZXJyKVxuICAgIH5mX2ludmVyc2U6KGZ1bmN0aW9uXG4gICAgICB8IE9rIG9rIC0+IEZpcnN0IG9rXG4gICAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IG1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gdHJlZSAtPlxuICAgIGxldCBhbGlzdCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3QgdHJlZSBpblxuICAgIGxldCBkcm9wX2tleXMgPVxuICAgICAgU2VxdWVuY2UubWFwIChTZXF1ZW5jZS5vZl9saXN0IGFsaXN0KSB+ZjooZnVuIChrLCBfKSAtPlxuICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGspXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2tleXMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGtleSBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsga2V5X3Qga2V5KSB+ZjooZnVuIHNtYWxsZXJfa2V5IC0+XG4gICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuYWRkIH5jb21wYXJhdG9yIHRyZWUgfmtleTpzbWFsbGVyX2tleSB+ZGF0YVxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IGBPayB0cmVlIC0+IFNvbWUgdHJlZVxuICAgICAgICAgICAgIHwgYER1cGxpY2F0ZSAtPiBOb25lKSkpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2RhdGEgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgZGF0YSkgLT5cbiAgICAgICAgICAgU2VxdWVuY2UubWFwIChzaHJpbmsgZGF0YV90IGRhdGEpIH5mOihmdW4gc21hbGxlcl9kYXRhIC0+XG4gICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5zZXQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5IH5kYXRhOnNtYWxsZXJfZGF0YSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2tleXM7IHNocmlua19rZXlzOyBzaHJpbmtfZGF0YSBdKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGxpc3QgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2xpc3QgdHJlZSBpblxuICAgIGxldCBkcm9wX2VsdHMgPVxuICAgICAgU2VxdWVuY2UubWFwIChTZXF1ZW5jZS5vZl9saXN0IGxpc3QpIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgZWx0KVxuICAgIGluXG4gICAgbGV0IHNocmlua19lbHRzID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIChMaXN0Lm1hcCBsaXN0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgIGxldCB0cmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQgaW5cbiAgICAgICAgICAgU2VxdWVuY2UuZmlsdGVyX21hcCAoc2hyaW5rIGVsdF90IGVsdCkgfmY6KGZ1biBzbWFsbGVyX2VsdCAtPlxuICAgICAgICAgICAgIG1hdGNoIFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUubWVtIH5jb21wYXJhdG9yIHRyZWUgc21hbGxlcl9lbHQgd2l0aFxuICAgICAgICAgICAgIHwgdHJ1ZSAtPiBOb25lXG4gICAgICAgICAgICAgfCBmYWxzZSAtPiBTb21lIChTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB0cmVlIH5jb21wYXJhdG9yIHNtYWxsZXJfZWx0KSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2VsdHM7IHNocmlua19lbHRzIF0pXG47O1xuXG5sZXQgbWFwX3Qga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gbWFwX3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG1hcF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdClcbiAgICAgICAgfmY6KE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgbWFwX3QpXG47O1xuXG5sZXQgc2V0X3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBzZXRfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gU2V0LmNvbXBhcmF0b3Igc2V0X3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QpXG4gICAgICAgIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IHNldF90KVxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVGVzdF9pbnRmXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb25kZXRlcm1pbmlzdGljXG4gICAgICB8IERldGVybWluaXN0aWMgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbW9kdWxlIFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBzZXF1ZW5jZSA9XG4gICAgICBsZXQgcHJlZml4LCBzdWZmaXggPSBTZXF1ZW5jZS5zcGxpdF9uIHNlcXVlbmNlIDEwMCBpblxuICAgICAgbGV0IHByZWZpeCA9IExpc3QubWFwIHByZWZpeCB+ZjpzZXhwX29mX2VsdCBpblxuICAgICAgbGV0IHN1ZmZpeCA9XG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLmlzX2VtcHR5IHN1ZmZpeCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBbXVxuICAgICAgICB8IGZhbHNlIC0+IFsgWyVtZXNzYWdlIFwiLi4uXCJdIF1cbiAgICAgIGluXG4gICAgICBTZXhwLkxpc3QgKHByZWZpeCBAIHN1ZmZpeClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgc2VlZCA6IFNlZWQudFxuICAgIDsgdGVzdF9jb3VudCA6IGludFxuICAgIDsgc2hyaW5rX2NvdW50IDogaW50XG4gICAgOyBzaXplcyA6IGludCBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5lbmRcblxubGV0IGRlZmF1bHRfY29uZmlnIDogQ29uZmlnLnQgPVxuICB7IHNlZWQgPSBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG4gIDsgdGVzdF9jb3VudCA9XG4gICAgICAoKiBbU3BsaXR0YWJsZV9yYW5kb21dIGlzIGJhc2VkIG9uIDY0LWJpdCBhcml0aG1ldGljLCBhbmQgc28gdGVzdHMgcnVuIG11Y2ggc2xvd2VyXG4gICAgICAgICBvbiAzMi1iaXQgdGFyZ2V0cy4gV2UgcnVuIGFuIG9yZGVyIG9mIG1hZ25pdHVkZSBmZXdlciB0cmlhbHMgc28gYXMgbm90IHRvXG4gICAgICAgICBjb21wbGV0ZWx5IGJvZyBkb3duIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24gc3lzdGVtcy4gKilcbiAgICAgIChtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgICB8IFc2NCAtPiAxMF8wMDBcbiAgICAgICB8IFczMiAtPiAxXzAwMClcbiAgOyBzaHJpbmtfY291bnQgPSAxMF8wMDBcbiAgOyBzaXplcyA9IFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgfnN0YXJ0OmBpbmNsdXNpdmUgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgfVxuOztcblxubGV0IGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKSlcblxubGV0IGluaXRpYWxfcmFuZG9tX3N0YXRlIH5jb25maWcgPVxuICBtYXRjaCBDb25maWcuc2VlZCBjb25maWcgd2l0aFxuICB8IE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBsYXp5X25vbmRldGVybWluaXN0aWNfc3RhdGUpXG4gIHwgRGV0ZXJtaW5pc3RpYyBzdHJpbmcgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChTdHJpbmcuaGFzaCBzdHJpbmcpXG47O1xuXG5sZXQgb25lX3NpemVfcGVyX3Rlc3Qgfihjb25maWcgOiBDb25maWcudCkgPVxuICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6KGNvbmZpZy5zaXplcywgMCkgfmY6KGZ1biAoc2l6ZXMsIG51bWJlcl9vZl9zaXplX3ZhbHVlcykgLT5cbiAgICBtYXRjaCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgPj0gY29uZmlnLnRlc3RfY291bnQgd2l0aFxuICAgIHwgdHJ1ZSAtPiBOb25lXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKG1hdGNoIFNlcXVlbmNlLm5leHQgc2l6ZXMgd2l0aFxuICAgICAgIHwgU29tZSAoc2l6ZSwgcmVtYWluaW5nX3NpemVzKSAtPlxuICAgICAgICAgU29tZSAoc2l6ZSwgKHJlbWFpbmluZ19zaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzICsgMSkpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICByYWlzZV9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmFzZV9xdWlja2NoZWNrLlRlc3QucnVuOiBpbnN1ZmZpY2llbnQgc2l6ZSB2YWx1ZXMgZm9yIHRlc3QgY291bnRcIlxuICAgICAgICAgICAgICAgfnRlc3RfY291bnQ6KGNvbmZpZy50ZXN0X2NvdW50IDogaW50KVxuICAgICAgICAgICAgICAgKG51bWJlcl9vZl9zaXplX3ZhbHVlcyA6IGludCldKSlcbjs7XG5cbmxldCBzaHJpbmtfZXJyb3IgfnNocmlua2VyIH5jb25maWcgfmYgaW5wdXQgZXJyb3IgPVxuICBsZXQgcmVjIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvciA9XG4gICAgbWF0Y2ggc2hyaW5rX2NvdW50IHdpdGhcbiAgICB8IDAgLT4gaW5wdXQsIGVycm9yXG4gICAgfCBfIC0+XG4gICAgICBsZXQgc2hyaW5rX2NvdW50ID0gc2hyaW5rX2NvdW50IC0gMSBpblxuICAgICAgKG1hdGNoIFNlcXVlbmNlLm5leHQgYWx0ZXJuYXRlcyB3aXRoXG4gICAgICAgfCBOb25lIC0+IGlucHV0LCBlcnJvclxuICAgICAgIHwgU29tZSAoYWx0ZXJuYXRlLCBhbHRlcm5hdGVzKSAtPlxuICAgICAgICAgKG1hdGNoIGYgYWx0ZXJuYXRlIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGFsdGVybmF0ZSBpblxuICAgICAgICAgICAgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGFsdGVybmF0ZSBlcnJvcikpXG4gIGluXG4gIGxldCBzaHJpbmtfY291bnQgPSBDb25maWcuc2hyaW5rX2NvdW50IGNvbmZpZyBpblxuICBsZXQgYWx0ZXJuYXRlcyA9IFNocmlua2VyLnNocmluayBzaHJpbmtlciBpbnB1dCBpblxuICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgaW5wdXQgZXJyb3Jcbjs7XG5cbmxldCBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yID1cbiAgbGV0IHJhbmRvbSA9IGluaXRpYWxfcmFuZG9tX3N0YXRlIH5jb25maWcgaW5cbiAgU2VxdWVuY2UuYXBwZW5kXG4gICAgKFNlcXVlbmNlLm9mX2xpc3QgZXhhbXBsZXMpXG4gICAgKG9uZV9zaXplX3Blcl90ZXN0IH5jb25maWdcbiAgICAgfD4gU2VxdWVuY2UubWFwIH5mOihmdW4gc2l6ZSAtPiBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuZXJhdG9yIH5zaXplIH5yYW5kb20pKVxuOztcblxubGV0IHdpdGhfc2FtcGxlIH5mID8oY29uZmlnID0gZGVmYXVsdF9jb25maWcpID8oZXhhbXBsZXMgPSBbXSkgZ2VuZXJhdG9yID1cbiAgbGV0IHNlcXVlbmNlID0gaW5wdXRfc2VxdWVuY2UgfmNvbmZpZyB+ZXhhbXBsZXMgfmdlbmVyYXRvciBpblxuICBmIHNlcXVlbmNlXG47O1xuXG5sZXQgcmVzdWx0ICh0eXBlIGEpIH5mID8oY29uZmlnID0gZGVmYXVsdF9jb25maWcpID8oZXhhbXBsZXMgPSBbXSkgbSA9XG4gIGxldCAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPSBtIGluXG4gIHdpdGhfc2FtcGxlIE0ucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbmZpZyB+ZXhhbXBsZXMgfmY6KGZ1biBzZXF1ZW5jZSAtPlxuICAgIG1hdGNoXG4gICAgICBTZXF1ZW5jZS5mb2xkX3Jlc3VsdCBzZXF1ZW5jZSB+aW5pdDooKSB+ZjooZnVuICgpIGlucHV0IC0+XG4gICAgICAgIG1hdGNoIGYgaW5wdXQgd2l0aFxuICAgICAgICB8IE9rICgpIC0+IE9rICgpXG4gICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgKGlucHV0LCBlcnJvcikpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIChpbnB1dCwgZXJyb3IpIC0+XG4gICAgICBsZXQgc2hyaW5rZXIgPSBNLnF1aWNrY2hlY2tfc2hyaW5rZXIgaW5cbiAgICAgIGxldCBpbnB1dCwgZXJyb3IgPSBzaHJpbmtfZXJyb3IgfnNocmlua2VyIH5jb25maWcgfmYgaW5wdXQgZXJyb3IgaW5cbiAgICAgIEVycm9yIChpbnB1dCwgZXJyb3IpKVxuOztcblxubGV0IHJ1biAodHlwZSBhKSB+ZiA/Y29uZmlnID9leGFtcGxlcyAobW9kdWxlIE0gOiBTIHdpdGggdHlwZSB0ID0gYSkgPVxuICBsZXQgZiB4ID1cbiAgICBPcl9lcnJvci50cnlfd2l0aF9qb2luIH5iYWNrdHJhY2U6KEJhY2t0cmFjZS5FeG4uYW1fcmVjb3JkaW5nICgpKSAoZnVuICgpIC0+IGYgeClcbiAgaW5cbiAgbWF0Y2ggcmVzdWx0IH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSkgd2l0aFxuICB8IE9rICgpIC0+IE9rICgpXG4gIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IHRlc3QgZmFpbGVkXCIgKGlucHV0IDogTS50KSAoZXJyb3IgOiBFcnJvci50KV1cbjs7XG5cbmxldCB3aXRoX3NhbXBsZV9leG4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgZ2VuZXJhdG9yID1cbiAgbGV0IGYgeCA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gZiB4KSBpblxuICB3aXRoX3NhbXBsZSB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuXG5sZXQgcnVuX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyB0ZXN0YWJsZSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoIH5iYWNrdHJhY2U6KEJhY2t0cmFjZS5FeG4uYW1fcmVjb3JkaW5nICgpKSAoZnVuICgpIC0+IGYgeClcbiAgaW5cbiAgcnVuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlIHw+IE9yX2Vycm9yLm9rX2V4blxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgT2JzZXJ2ZXIwXG5cbmxldCB1bm1hcCB0IH5mID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIHQgKGYgeCkgfnNpemUgfmhhc2gpXG5sZXQgb2ZfaGFzaF9mb2xkIGYgPSBjcmVhdGUgKGZ1biB4IH5zaXplOl8gfmhhc2ggLT4gZiBoYXNoIHgpXG5sZXQgb2ZfbGF6eSBsYXp5X3QgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgKGZvcmNlIGxhenlfdCkgeCB+c2l6ZSB+aGFzaClcblxubGV0IGZpeGVkX3BvaW50IHdyYXAgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKHdyYXAgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgb2ZfbGF6eSBsYXp5X3Rcbjs7XG5cbmxldCB1bml0ID0gb3BhcXVlXG5sZXQgYm9vbCA9IG9mX2hhc2hfZm9sZCBCb29sLmhhc2hfZm9sZF90XG5sZXQgY2hhciA9IG9mX2hhc2hfZm9sZCBDaGFyLmhhc2hfZm9sZF90XG5sZXQgaW50ID0gb2ZfaGFzaF9mb2xkIEludC5oYXNoX2ZvbGRfdFxubGV0IGludDMyID0gb2ZfaGFzaF9mb2xkIEludDMyLmhhc2hfZm9sZF90XG5sZXQgaW50NjMgPSBvZl9oYXNoX2ZvbGQgSW50NjMuaGFzaF9mb2xkX3RcbmxldCBpbnQ2NCA9IG9mX2hhc2hfZm9sZCBJbnQ2NC5oYXNoX2ZvbGRfdFxubGV0IG5hdGl2ZWludCA9IG9mX2hhc2hfZm9sZCBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcbmxldCBmbG9hdCA9IG9mX2hhc2hfZm9sZCBGbG9hdC5oYXNoX2ZvbGRfdFxubGV0IHN0cmluZyA9IG9mX2hhc2hfZm9sZCBTdHJpbmcuaGFzaF9mb2xkX3RcbmxldCBzZXhwID0gb2ZfaGFzaF9mb2xkIFNleHAuaGFzaF9mb2xkX3RcbmxldCBiaWdzdHJpbmcgPSBvZl9oYXNoX2ZvbGQgKEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkxLmhhc2hfZm9sZCBoYXNoX2ZvbGRfY2hhcilcbmxldCBmbG9hdDMyX3ZlYyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDY0X3ZlYyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDMyX21hdCA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBmbG9hdDY0X21hdCA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTIuaGFzaF9mb2xkIGhhc2hfZm9sZF9mbG9hdClcbmxldCBieXRlcyA9IHVubWFwIHN0cmluZyB+ZjpCeXRlcy50b19zdHJpbmdcblxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIGVpdGhlciB+c2l6ZSB+aGFzaCAtPlxuICAgIG1hdGNoIChlaXRoZXIgOiBfIEVpdGhlci50KSB3aXRoXG4gICAgfCBGaXJzdCBmc3QgLT4gb2JzZXJ2ZSBmc3RfdCBmc3QgfnNpemUgfmhhc2g6KGhhc2hfZm9sZF9pbnQgaGFzaCAxKVxuICAgIHwgU2Vjb25kIHNuZCAtPiBvYnNlcnZlIHNuZF90IHNuZCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDIpKVxuOztcblxubGV0IHJlc3VsdCBva190IGVycl90ID1cbiAgdW5tYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IE9rIG9rIC0+IEZpcnN0IG9rXG4gICAgfCBFcnJvciBlcnIgLT4gU2Vjb25kIGVycilcbjs7XG5cbmxldCBib3RoIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gKGZzdCwgc25kKSB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBmc3RfdCBmc3QgfnNpemUgfmhhc2ggaW5cbiAgICBsZXQgaGFzaCA9IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoIGluXG4gICAgaGFzaClcbjs7XG5cbmxldCBvcHRpb24gdmFsdWVfdCA9XG4gIHVubWFwIChlaXRoZXIgb3BhcXVlIHZhbHVlX3QpIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBGaXJzdCAoKVxuICAgIHwgU29tZSB2YWx1ZSAtPiBTZWNvbmQgdmFsdWUpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIGxpc3QgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpIGluXG4gICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGxpc3QgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgR2VuZXJhdG9yLnNpemVzIH5taW5fbGVuZ3RoOmxlbmd0aCB+bWF4X2xlbmd0aDpsZW5ndGggKClcbiAgICAgIHw+IEdlbmVyYXRvci5nZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQyX2V4biBsaXN0IHNpemVzIH5pbml0OihoYXNoX2ZvbGRfaW50IGhhc2ggMCkgfmY6KGZ1biBoYXNoIGVsdCBzaXplIC0+XG4gICAgICBvYnNlcnZlIGVsdF90IGVsdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpKSlcbjs7XG5cbmxldCBhcnJheSB0ID0gdW5tYXAgKGxpc3QgdCkgfmY6QXJyYXkudG9fbGlzdFxubGV0IHJlZiB0ID0gdW5tYXAgdCB+ZjpSZWYuKCAhIClcbmxldCBsYXp5X3QgdCA9IHVubWFwIHQgfmY6TGF6eS5mb3JjZVxuXG5sZXQgZm4gZG9tIHJuZyA9XG4gIGNyZWF0ZSAoZnVuIGYgfnNpemUgfmhhc2ggLT5cbiAgICBsZXQgcmFuZG9tID0gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUub2ZfaW50IChIYXNoLmdldF9oYXNoX3ZhbHVlIGhhc2gpIGluXG4gICAgbGV0IHNpemVzID1cbiAgICAgICgqIEVtcGlyaWNhbGx5LCBkb3VibGluZyB0aGUgc2l6ZSB3aGVuIGdlbmVyYXRpbmcgdGhlIGxpc3Qgb2YgaW5wdXRzIGdpdmVzIHVzIG11Y2hcbiAgICAgICAgIGJldHRlciBjb3ZlcmFnZSBvZiB0aGUgc3BhY2Ugb2YgZnVuY3Rpb25zLiAqKVxuICAgICAgR2VuZXJhdG9yLmdlbmVyYXRlIChHZW5lcmF0b3Iuc2l6ZXMgKCkpIH5zaXplOihzaXplICogMikgfnJhbmRvbVxuICAgIGluXG4gICAgTGlzdC5mb2xkIHNpemVzIH5pbml0Omhhc2ggfmY6KGZ1biBoYXNoIHNpemUgLT5cbiAgICAgIGxldCB4ID0gR2VuZXJhdG9yLmdlbmVyYXRlIGRvbSB+c2l6ZSB+cmFuZG9tIGluXG4gICAgICBvYnNlcnZlIHJuZyAoZiB4KSB+c2l6ZSB+aGFzaCkpXG47O1xuXG5sZXQgbWFwX3RyZWUga2V5X29icyBkYXRhX29icyA9XG4gIHVubWFwIChsaXN0IChib3RoIGtleV9vYnMgZGF0YV9vYnMpKSB+ZjpNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnRvX2FsaXN0XG47O1xuXG5sZXQgc2V0X3RyZWUgZWx0X29icyA9IHVubWFwIChsaXN0IGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdFxuXG5sZXQgbWFwX3Qga2V5X29icyBkYXRhX29icyA9XG4gIHVubWFwIChtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzKSB+ZjpNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG47O1xuXG5sZXQgc2V0X3QgZWx0X29icyA9IHVubWFwIChzZXRfdHJlZSBlbHRfb2JzKSB+ZjpTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG4iLCJtb2R1bGUgR2VuZXJhdG9yID0gR2VuZXJhdG9yXG5tb2R1bGUgT2JzZXJ2ZXIgPSBPYnNlcnZlclxubW9kdWxlIFNocmlua2VyID0gU2hyaW5rZXJcbm1vZHVsZSBUZXN0ID0gVGVzdFxubW9kdWxlIEV4cG9ydCA9IEV4cG9ydFxuaW5jbHVkZSBFeHBvcnRcblxuKCoqLyoqKVxuXG4oKl8gVGhpcyBtb2R1bGUgaXMgZXhwb3NlZCBvbmx5IHRvIG1ha2Ugb2NhbWxkb2Mgb3V0cHV0IG1vcmUgcmVhZGFibGUuICopXG5tb2R1bGUgV2l0aF9iYXNpY190eXBlcyA9IFdpdGhfYmFzaWNfdHlwZXNcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpZ2FycmF5X2hlbHBlcnMgPSBCaWdhcnJheV9oZWxwZXJzXG5lbmRcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVWlfZWZmZWN0X2ludGZcblxudHlwZSAnYSB0ID0gLi5cbnR5cGUgJ2EgdCArPSBJZ25vcmUgOiB1bml0IHQgfCBNYW55IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5cbigqIFdlIHVzZSB0aGlzIHRhYmxlIGZvciBkaXNwYXRjaGluZyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBpbiBhbiBlZmZpY2llbnQgd2F5LiAgKilcbnR5cGUgaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRkZW5cblxubGV0IGhhbmRsZXJzIDogKGhpZGRlbiAtPiB1bml0KSBIYXNodGJsLk0oSW50KS50ID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpIH5zaXplOjhcblxubW9kdWxlIERlZmluZSAoSGFuZGxlciA6IEhhbmRsZXIpIDpcbiAgUyB3aXRoIHR5cGUgYWN0aW9uIDo9IEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiBIYW5kbGVyLkFjdGlvbi50IC0+IHVuaXQgdFxuXG4gIGxldCBrZXkgPSBTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZTtcbiAgICAgICAgY2FsbGJhY2sgKClcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbm1vZHVsZSBEZWZpbmUxIChIYW5kbGVyIDogSGFuZGxlcjEpIDpcbiAgUzEgd2l0aCB0eXBlICdhIGFjdGlvbiA6PSAnYSBIYW5kbGVyLkFjdGlvbi50IGFuZCB0eXBlICdhIHQgOj0gJ2EgdCA9IHN0cnVjdFxuICB0eXBlIF8gdCArPSBDIDogJ2EgSGFuZGxlci5BY3Rpb24udCAtPiAnYSB0XG5cbiAgbGV0IGtleSA9IFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIGxldCBjYWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgbGV0IGNhbGxiYWNrIGEgPVxuICAgICAgICAgIGlmICFjYWxsZWRcbiAgICAgICAgICB0aGVuIGZhaWx3aXRoIFwib25fcmVzcG9uc2UgY2FsbGVkIG11bHRpcGxlIHRpbWVzIVwiXG4gICAgICAgICAgZWxzZSBjYWxsZWQgOj0gdHJ1ZTtcbiAgICAgICAgICBjYWxsYmFjayBhXG4gICAgICAgIGluXG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlIH5vbl9yZXNwb25zZTpjYWxsYmFja1xuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubGV0IGdldF9rZXkgdCA9IFN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIHQpKVxuXG5sZXQgaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNiKSkgPVxuICBIYXNodGJsLmZpbmRfZXhuIGhhbmRsZXJzIChnZXRfa2V5IHQpIChUICh0LCBjYikpXG47O1xuXG5tb2R1bGUgUHJpbnRfcyA9IERlZmluZSAoc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IFNleHBcblxuICAgIGxldCBoYW5kbGUgcyA9IFN0ZGlvLnByaW50X3Mgc1xuICBlbmQpXG5cbmxldCBwcmludF9zID0gUHJpbnRfcy5pbmplY3RcblxuKCogRWZmZWN0ZnVsIHRoaW5ncyAqKVxudHlwZSAnYSB0ICs9XG4gIHwgUmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB8IExhenkgOiAnYSB0IExhenkudCAtPiAnYSB0XG4gIHwgQmluZCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYiB0XG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTWFwIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiXG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTmV2ZXIgOiAnYiB0XG4gIHwgRnVuIDogKGNhbGxiYWNrOignYSAtPiB1bml0KSAtPiB1bml0KSAtPiAnYSB0XG5cbmxldCByZXR1cm4gYSA9IFJldHVybiBhXG5sZXQgYmluZCAodHlwZSBhKSAodCA6IGEgdCkgfmYgPSBCaW5kIHsgdDsgZiB9XG5sZXQgbWFwICh0eXBlIGEgYikgKHQgOiBhIHQpIH5mIDogYiB0ID0gTWFwIHsgdDsgZiB9XG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IG9mX2Z1biB+ZiA9IEZ1biBmXG5sZXQgbGF6eV8gYSA9IExhenkgYVxuXG5pbmNsdWRlIEJhc2UuTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgcmVjIGV2YWwgOiB0eXBlIGEuIGEgdCAtPiBjYWxsYmFjazooYSAtPiB1bml0KSAtPiB1bml0ID1cbiAgZnVuIHQgfmNhbGxiYWNrIC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZ1biBmIC0+IGYgfmNhbGxiYWNrXG4gIHwgSWdub3JlIC0+IGNhbGxiYWNrICgpXG4gIHwgUmV0dXJuIGEgLT4gY2FsbGJhY2sgYVxuICB8IExhenkgKGxhenkgdCkgLT4gZXZhbCB0IH5jYWxsYmFja1xuICB8IE1hbnkgbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihldmFsIH5jYWxsYmFjazppZ25vcmUpO1xuICAgIGNhbGxiYWNrICgpXG4gIHwgQmluZCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBldmFsIChmIGEpIH5jYWxsYmFjaylcbiAgfCBNYXAgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gY2FsbGJhY2sgKGYgYSkpXG4gIHwgTmV2ZXIgLT4gKClcbiAgfCB0IC0+IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYWxsYmFjaykpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGUgPSBldmFsIH5jYWxsYmFjazppZ25vcmVcblxuICB0eXBlIGhpZGUgPSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGVcblxuICBsZXQgaGFuZGxlcnMgPSBoYW5kbGVyc1xuICBsZXQgb2ZfZnVuID0gb2ZfZnVuXG5lbmRcblxubW9kdWxlIEFkdmFuY2VkID0gc3RydWN0XG4gIG1vZHVsZSBTeW5jX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IpIC0+ICdyIHRcbiAgICBlbmRcblxuICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gb25fcmVzcG9uc2UgKGYgYSlcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bmNfZnVuID0gRGVmaW5lMSAoU3luY19mdW5fYXJnKVxuXG4gIGxldCBvZl9zeW5jX2Z1biBmIGEgPSBTeW5jX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIENhbGxiYWNrID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID1cbiAgICAgICAgeyByZXF1ZXN0IDogJ2FcbiAgICAgICAgOyBvbl9yZXNwb25zZSA6ICdiIC0+IHVuaXQgdFxuICAgICAgICB9XG5cbiAgICAgIGxldCBtYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZSA9IHsgcmVxdWVzdDsgb25fcmVzcG9uc2UgfVxuICAgICAgbGV0IHJlcXVlc3QgeyByZXF1ZXN0OyBfIH0gPSByZXF1ZXN0XG4gICAgICBsZXQgcmVzcG9uZF90byB7IG9uX3Jlc3BvbnNlOyBfIH0gcmVzcG9uc2UgPSBvbl9yZXNwb25zZSByZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbGV0IG1ha2UgOiByZXF1ZXN0OidhIC0+IGV2YWx1YXRvcjooKCdhLCAnYikgQ2FsbGJhY2sudCAtPiB1bml0IHQpIC0+ICdiIHQgPVxuICAgICAgZnVuIH5yZXF1ZXN0IH5ldmFsdWF0b3IgLT5cbiAgICAgIEV4cGVydC5vZl9mdW4gfmY6KGZ1biB+Y2FsbGJhY2sgLT5cbiAgICAgICAgbGV0IGNhbGxiYWNrID1cbiAgICAgICAgICBDYWxsYmFjay5tYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZTooZnVuIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICBjYWxsYmFjayByZXNwb25zZTtcbiAgICAgICAgICAgIElnbm9yZSlcbiAgICAgICAgaW5cbiAgICAgICAgRXhwZXJ0LmhhbmRsZSAoZXZhbHVhdG9yIGNhbGxiYWNrKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3ZhciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgICAgIHwgRW1wdHkgb2YgeyBtdXRhYmxlIGhhbmRsZXJzIDogKCdhIC0+IHVuaXQpIGxpc3QgfVxuICAgICAgICB8IEZ1bGwgb2YgJ2FcblxuICAgICAgdHlwZSAnYSB0ID0gJ2Egc3RhdGUgcmVmXG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSByZWYgKEVtcHR5IHsgaGFuZGxlcnMgPSBbXSB9KVxuXG4gICAgICBsZXQgdXBvbiB0IGhhbmRsZXIgPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgdCAtPiB0LmhhbmRsZXJzIDwtIGhhbmRsZXIgOjogdC5oYW5kbGVyc1xuICAgICAgICB8IEZ1bGwgeCAtPiBoYW5kbGVyIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBmaWxsX2lmX2VtcHR5IHQgeCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBGdWxsIF8gLT4gKClcbiAgICAgICAgfCBFbXB0eSB7IGhhbmRsZXJzIH0gLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgaGFuZGxlcnMgfmY6KGZ1biBoYW5kbGVyIC0+IGhhbmRsZXIgeCk7XG4gICAgICAgICAgdCA6PSBGdWxsIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwZWVrIHQgPVxuICAgICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgXyAtPiBOb25lXG4gICAgICAgIHwgRnVsbCB4IC0+IFNvbWUgeFxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnciB0ID0gVCA6ICdhICogKCdhIC0+ICdyIFN2YXIudCkgLT4gJ3IgdFxuICAgICAgZW5kXG5cbiAgICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gU3Zhci51cG9uIChmIGEpIG9uX3Jlc3BvbnNlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3Zhcl9mdW4gPSBEZWZpbmUxIChTdmFyX2Z1bl9hcmcpXG5cbiAgICBsZXQgb2Zfc3Zhcl9mdW4gZiBhID0gU3Zhcl9mdW4uaW5qZWN0IChUIChhLCBmKSlcblxuICAgIG1vZHVsZSBRdWVyeV9yZXNwb25zZV90cmFja2VyID0gc3RydWN0XG4gICAgICB0eXBlICgncSwgJ3IpIHJwYyA9XG4gICAgICAgIHsgcXVlcnkgOiAncVxuICAgICAgICA7IHJlc3BvbnNlIDogJ3IgU3Zhci50XG4gICAgICAgIH1cblxuICAgICAgdHlwZSAoJ3EsICdyKSB0ID0gKCdxLCAncikgcnBjIGxpc3QgcmVmXG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSByZWYgW11cblxuICAgICAgbGV0IGFkZF9xdWVyeSB0IHF1ZXJ5ID1cbiAgICAgICAgbGV0IHJlc3BvbnNlID0gU3Zhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgdCA6PSB7IHF1ZXJ5OyByZXNwb25zZSB9IDo6ICF0O1xuICAgICAgICByZXNwb25zZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1ZXJpZXNfcGVuZGluZ19yZXNwb25zZSB0ID1cbiAgICAgICAgTGlzdC5tYXAgIXQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSA9IF8gfSAtPiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgJ3IgbWF5YmVfcmVzcG9uZCA9XG4gICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0XG4gICAgICAgIHwgUmVzcG9uZCBvZiAnclxuXG4gICAgICBsZXQgbWF5YmVfcmVzcG9uZCB0IH5mID1cbiAgICAgICAgdFxuICAgICAgICA6PSBMaXN0LmZpbHRlciAhdCB+ZjooZnVuIHsgcXVlcnk7IHJlc3BvbnNlIH0gLT5cbiAgICAgICAgICBtYXRjaCBmIHF1ZXJ5IHdpdGhcbiAgICAgICAgICB8IE5vX3Jlc3BvbnNlX3lldCAtPiB0cnVlXG4gICAgICAgICAgfCBSZXNwb25kIHJlc3AgLT5cbiAgICAgICAgICAgIFN2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNwO1xuICAgICAgICAgICAgZmFsc2UpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgcXJ0ID0gb2Zfc3Zhcl9mdW4gKFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIuYWRkX3F1ZXJ5IHFydClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBBZHZhbmNlZFxuIiwibW9kdWxlIERvbV9odG1sID0gc3RydWN0XG4gIG9wZW4gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcbiAgb3BlbiBKc19vZl9vY2FtbC5Kc1xuXG4gICgqIE5vIGpzX29mX29jYW1sIFBSIHlldC4gKilcbiAgY2xhc3MgdHlwZSB3aGVlbEV2ZW50ID0gb2JqZWN0XG4gICAgaW5oZXJpdCBtb3VzZUV2ZW50XG4gICAgbWV0aG9kIGRlbHRhWCA6IGZsb2F0IHJlYWRvbmx5X3Byb3BcbiAgICBtZXRob2QgZGVsdGFZIDogZmxvYXQgcmVhZG9ubHlfcHJvcFxuICAgIG1ldGhvZCBkZWx0YVogOiBmbG9hdCByZWFkb25seV9wcm9wXG4gICAgbWV0aG9kIGRlbHRhTW9kZSA6IGludCByZWFkb25seV9wcm9wXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgdHlwZXJlcF1cblxuICB2YWwgc2lnbmVkIDogYm9vbFxuICB2YWwgbnVtX2JpdHMgOiBpbnRcbiAgdmFsIG51bV9ieXRlcyA6IGludFxuICB2YWwgemVybyA6IHRcbiAgdmFsIG1pbl92YWx1ZSA6IHRcbiAgdmFsIG1heF92YWx1ZSA6IHRcblxuICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmlzb25zLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIG1vZHVsZSBPIDogc2lnXG4gICAgaW5jbHVkZSBCYXNlLkNvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICAgIG1vZHVsZSBXcmFwIDogc2lnXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICAgIGVuZFxuICBlbmRcblxuZW5kXG5cbmxldCByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgQmFzZS5yYWlzZV9zIFslbWVzc2FnZSAobW9kX25hbWUgXiBcIjogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkXCIpIH5fOih0b19zdHJpbmcgeCldXG5bQEBjb2xkXVxuOztcblxubGV0IHRydW5jX3Vuc2lnbmVkIDogdHlwZSBhIGIuIGNvbnY6KGEgLT4gYikgLT4gbG9nYW5kOihhIC0+IGEgLT4gYSkgLT4gbWFzazphIC0+IGEgLT4gYiA9XG4gIGZ1biB+Y29udiB+bG9nYW5kIH5tYXNrIHggLT4gY29udiAobG9nYW5kIHggbWFzaylcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZXhuX3Vuc2lnbmVkXG4gIDogdHlwZSBhIGIuXG4gICAgY29udjooYSAtPiBiKVxuICAgIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpXG4gICAgLT4gbWFzazphXG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGJcbiAgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4gY29udiB5IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCB0cnVuY19zaWduZWRcbiAgOiB0eXBlIGEuXG4gICAgc2hpZnRfbGVmdDooYSAtPiBpbnQgLT4gYSkgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0OmludCAtPiBhIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IC0+IHNoaWZ0X3JpZ2h0IChzaGlmdF9sZWZ0IHggc2hpZnQpIHNoaWZ0XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl9zaWduZWRcbiAgOiB0eXBlIGEuXG4gICAgc2hpZnRfbGVmdDooYSAtPiBpbnQgLT4gYSlcbiAgICAtPiBzaGlmdF9yaWdodDooYSAtPiBpbnQgLT4gYSlcbiAgICAtPiBzaGlmdDppbnRcbiAgICAtPiBlcXVhbDooYSAtPiBhIC0+IGJvb2wpXG4gICAgLT4gbW9kX25hbWU6c3RyaW5nXG4gICAgLT4gdG9fc3RyaW5nOihhIC0+IHN0cmluZylcbiAgICAtPiBhXG4gICAgLT4gYVxuICA9XG4gIGZ1biB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4IC0+XG4gIGxldCB5ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBpblxuICBpZiBlcXVhbCB4IHkgdGhlbiB5IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuOztcblxubGV0IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggPVxuICBpZiBncmVhdGVyX2VxdWFsIHggemVybyB0aGVuIHggZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IG9mX3NleHBfZXJyb3Igd2hhdCBzZXhwID1cbiAgcmFpc2UgKFNleHBsaWIwLlNleHBfY29udi5PZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuOztcblxubW9kdWxlIFJlcHIzMiA9IHN0cnVjdFxuICBpbmNsdWRlIFN0ZGxpYi5TeXMuSW1tZWRpYXRlNjQuTWFrZSAoQmFzZS5JbnQpIChCYXNlLkludDMyKVxuXG4gIGxldCB0b19pbnQzMiAoeCA6IHQpIDogQmFzZS5JbnQzMi50ID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4XG4gICAgfCBOb25faW1tZWRpYXRlIC0+IHhcbiAgOztcblxuICAoKiBzaWduLWV4dGVuZGluZyBjb252ZXJzaW9uIHRvIGludDY0ICopXG4gIGxldCB0b19pbnQ2NCAoeCA6IHQpIDogQmFzZS5JbnQ2NC50ID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludCB4XG4gICAgfCBOb25faW1tZWRpYXRlIC0+IEJhc2UuSW50NjQub2ZfaW50MzIgeFxuICA7O1xuZW5kXG5cbigqIEludGVybmFsIHJlcHJlc2VudGF0aW9uIHR5cGVzICopXG50eXBlIGludDggPSBpbnRcbnR5cGUgdWludDggPSBpbnRcbnR5cGUgaW50MTYgPSBpbnRcbnR5cGUgdWludDE2ID0gaW50XG50eXBlIGludDMyID0gUmVwcjMyLnRcbnR5cGUgdWludDMyID0gUmVwcjMyLnRcbnR5cGUgaW50NjMgPSBCYXNlLkludDYzLnRcbnR5cGUgdWludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIGludDY0ID0gQmFzZS5JbnQ2NC50XG50eXBlIHVpbnQ2NCA9IEJhc2UuSW50NjQudFxuXG5tb2R1bGUgSW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0xMjhcbiAgbGV0IG1heF92YWx1ZSA9IDEyN1xuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA4XG4gIGxldCBudW1fYnl0ZXMgPSAxXG4gIGxldCBzaGlmdF9sZWZ0ID0gQmFzZS5JbnQuc2hpZnRfbGVmdFxuICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICBsZXQgc2hpZnQgPSBCYXNlLkludC5udW1fYml0cyAtIG51bV9iaXRzXG4gIGxldCBtb2RfbmFtZSA9IFwiSW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9pbnQzMl90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50MzIudG9faW50X3RydW5jIChSZXByMzIudG9faW50MzIgeCkpXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIChCYXNlLkludDMyLnRvX2ludF9leG4gKFJlcHIzMi50b19pbnQzMiB4KSkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2My50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDY0X2V4biB4ID0gZXhuIChCYXNlLkludDY0LnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDhfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDhfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ4ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gMjU1XG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA4XG4gIGxldCBudW1fYnl0ZXMgPSAxXG4gIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgbGV0IGxvZ2FuZCA9IEJhc2UuSW50LiggbGFuZCApXG4gIGxldCBsb2dhbmQ2NCA9IEJhc2UuSW50NjQuKCBsYW5kIClcbiAgbGV0IG1hc2sgPSAweEZGXG4gIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ4XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuICBsZXQgdG9fc3RyaW5nNjQgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdHJ1bmM2NCB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnYgfmxvZ2FuZDpsb2dhbmQ2NCB+bWFzazptYXNrNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG42NCB4ID1cbiAgICBleG5fdW5zaWduZWRcbiAgICAgIH5jb252XG4gICAgICB+bG9nYW5kOmxvZ2FuZDY0XG4gICAgICB+bWFzazptYXNrNjRcbiAgICAgIH5lcXVhbDplcXVhbDY0XG4gICAgICB+bW9kX25hbWVcbiAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQxNl90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDhfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEludDE2ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gLTMyNzY4XG4gIGxldCBtYXhfdmFsdWUgPSAzMjc2N1xuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSAxNlxuICBsZXQgbnVtX2J5dGVzID0gMlxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDE2XCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgdHJ1bmMgeCA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuIHggPSBleG5fc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50X3RydW5jIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTZfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIE1pc2NlbGxhbmVvdXMgKilcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKyApIHggeSlcbiAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICBsZXQgKCAvICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLyApIHggeSlcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDY1NTM1XG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSAxNlxuICBsZXQgbnVtX2J5dGVzID0gMlxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRkZGXG4gIGxldCBtYXNrNjQgPSBCYXNlLkludDY0Lm9mX2ludCBtYXNrXG4gIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gIGxldCBlcXVhbDY0ID0gQmFzZS5JbnQ2NC5lcXVhbFxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX3RydW5jIHggPSB0cnVuYzY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl9leG4geCA9IGV4bjY0IChSZXByMzIudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gdHJ1bmM2NCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDE2X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhY2tlbmQzMl9TID0gc2lnXG4gIG1vZHVsZSBTaWduZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBSZXByMzIudFxuXG4gICAgaW5jbHVkZSBUIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9iYXNlX2ludDMyIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMiA6IHQgLT4gQmFzZS5JbnQzMi50XG5cbiAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgdmFsIG9mX2ludDggOiBpbnQ4IC0+IHRcbiAgICB2YWwgb2ZfaW50MTYgOiBpbnQxNiAtPiB0XG4gICAgdmFsIG9mX2ludDYzX3RydW5jIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M19leG4gOiBpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogaW50NjQgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF9leG4gOiBpbnQ2NCAtPiB0XG5cbiAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl91aW50MzJfd3JhcCA6IHVpbnQzMiAtPiB0XG4gICAgdmFsIG9mX3VpbnQzMl9leG4gOiB1aW50MzIgLT4gdFxuICBlbmRcblxuICBtb2R1bGUgVW5zaWduZWQgOiBzaWdcbiAgICB0eXBlIHQgPSBSZXByMzIudFxuXG4gICAgaW5jbHVkZSBUIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9iYXNlX2ludDMyX3RydW5jIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl9leG4gOiBCYXNlLkludDMyLnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDMyX3RydW5jIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl9leG4gOiB0IC0+IEJhc2UuSW50MzIudFxuICAgIHZhbCBvZl9iYXNlX2ludDY0X3RydW5jIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF9leG4gOiBCYXNlLkludDY0LnQgLT4gdFxuICAgIHZhbCB0b19iYXNlX2ludDY0IDogdCAtPiBCYXNlLkludDY0LnRcbiAgICB2YWwgb2ZfYmFzZV9pbnRfZXhuIDogQmFzZS5JbnQudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50X2V4biA6IHQgLT4gQmFzZS5JbnQudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl91aW50OCA6IHVpbnQ4IC0+IHRcbiAgICB2YWwgb2ZfdWludDE2IDogdWludDE2IC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX3RydW5jIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX2V4biA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF90cnVuYyA6IHVpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF9leG4gOiB1aW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50MzJfd3JhcCA6IGludDMyIC0+IHRcbiAgICB2YWwgb2ZfaW50MzJfZXhuIDogaW50MzIgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQmFja2VuZDMyIDogc2lnXG4gIHZhbCBpbXBsIDogKG1vZHVsZSBCYWNrZW5kMzJfUylcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gICAgICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICAgICAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9ICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB0cnVuYyB4XG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuIHhcblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludC5vZl9pbnQ2NF90cnVuYyA0Mjk0OTY3Mjk1TFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgICAgIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICAgICAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICAgICAgbGV0IG1hc2sgPSBCYXNlLkludDY0LnRvX2ludF90cnVuYyAweEZGRkZGRkZGTFxuICAgICAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgICAgIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gICAgICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IGV4bjY0IHggPVxuICAgICAgICBleG5fdW5zaWduZWRcbiAgICAgICAgICB+Y29udlxuICAgICAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgICAgICB+bWFzazptYXNrNjRcbiAgICAgICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgICAgIH5tb2RfbmFtZVxuICAgICAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgICAgICB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID1cbiAgICAgICAgQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgKGxvZ2FuZDY0IChCYXNlLkludDY0Lm9mX2ludDMyIHgpIG1hc2s2NClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSBCYXNlLkludC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQuKCA8PSApIHggKEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDIxNDc0ODM2NDdMKVxuICAgICAgICB0aGVuIEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50LnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9iYXNlX2ludF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9ICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2M190cnVuYyB4ID0gdHJ1bmM2NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBleG42NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDMyX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgTiA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50MzIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDMyXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQzMlxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLm1pbl92YWx1ZVxuICAgICAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50MzIubWF4X3ZhbHVlXG4gICAgICBsZXQgc2lnbmVkID0gdHJ1ZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgbW9kX25hbWUgPSBcIkludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMiB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBJbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX3RydW5jIHggPSBCYXNlLkludDYzLnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2M19leG4geCA9IEJhc2UuSW50NjMudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2NC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDY0LnRvX2ludDMyX2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfdWludDMyX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX3VpbnQzMl9leG4geCA6IHQgPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDMyLiggPD0gKVxuICAgICAgICBsZXQgKCA9ICkgPSBCYXNlLkludDMyLiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50MzIuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQzMi4oIDwgKVxuICAgICAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQzMi4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50MzIuKCArIClcbiAgICAgICAgICBsZXQgKCAtICkgPSBCYXNlLkludDMyLiggLSApXG4gICAgICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQzMi4oICogKVxuICAgICAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50MzIuKCAvIClcbiAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBVbnNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoXVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50MzJcbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50MzJcbiAgICAgIGxldCBjb21wYXJlIHggeSA9IFN0ZGxpYi5JbnQzMi51bnNpZ25lZF9jb21wYXJlIHggeSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDMyXG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQzMlxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDMyLnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSAtMWxcbiAgICAgIGxldCBzaWduZWQgPSBmYWxzZVxuICAgICAgbGV0IG51bV9iaXRzID0gMzJcbiAgICAgIGxldCBudW1fYnl0ZXMgPSA0XG4gICAgICBsZXQgbW9kX25hbWUgPSBcIlVpbnQzMlwiXG4gICAgICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50MzIuKCA+PSApXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQzMi50b19zdHJpbmdcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgdG9fYmFzZV9pbnQzMl9leG4geCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQzMi5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTCAmJiBCYXNlLkludDY0LiggPD0gKSB4IDQyOTQ5NjcyOTVMXG4gICAgICAgIHRoZW4gQmFzZS5JbnQ2NC50b19pbnQzMl90cnVuYyB4XG4gICAgICAgIGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmc6QmFzZS5JbnQ2NC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDY0IHggPSBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDMyLnRvX2ludDY0IHgpIDB4RkZGRkZGRkZMXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID1cbiAgICAgICAgQmFzZS5JbnQzMi5vZl9pbnRfZXhuIHhcbiAgICAgICAgfD4gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmdcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICAgIHw+IEJhc2UuSW50MzIudG9faW50X2V4blxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDYzLnRvX2ludDY0IHgpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlbHVcIiB4KVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICAgICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAgICAgKHRyeSBTdGRsaWIuU2NhbmYuc3NjYW5mIHMgXCIlbHVcIiBGdW4uaWQgd2l0aFxuICAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQzMi50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgICAgIGxldCAoIDw9ICkgeCB5ID0gY29tcGFyZSB4IHkgPD0gMFxuICAgICAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICAgICAgbGV0ICggPCApIHggeSA9IGNvbXBhcmUgeCB5IDwgMFxuICAgICAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50MzIuKCArIClcbiAgICAgICAgICBsZXQgKCAtICkgPSBCYXNlLkludDMyLiggLSApXG4gICAgICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQzMi4oICogKVxuICAgICAgICAgIGxldCAoIC8gKSA9IFN0ZGxpYi5JbnQzMi51bnNpZ25lZF9kaXZcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBpbXBsIDogKG1vZHVsZSBCYWNrZW5kMzJfUykgPVxuICAgIG1hdGNoIFJlcHIzMi5yZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIEkgOiBCYWNrZW5kMzJfUylcbiAgICB8IE5vbl9pbW1lZGlhdGUgLT4gKG1vZHVsZSBOIDogQmFja2VuZDMyX1MpXG4gIDs7XG5lbmRcblxubW9kdWxlIEludDMyID0gc3RydWN0XG4gIG1vZHVsZSBNID0gKHZhbCBCYWNrZW5kMzIuaW1wbCA6IEJhY2tlbmQzMl9TKVxuICBpbmNsdWRlIE0uU2lnbmVkXG5lbmRcblxubW9kdWxlIFVpbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlVuc2lnbmVkXG5lbmRcblxubW9kdWxlIEludDYzID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBpbW1lZGlhdGU2NF0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDYzXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDYzXG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDYzLm1pbl92YWx1ZVxuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5tYXhfdmFsdWVcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ2M1wiXG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2My4oID49IClcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjMudG9fc3RyaW5nXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDMyIHggPSBCYXNlLkludDYzLm9mX2ludDMyIChJbnQzMi50b19iYXNlX2ludDMyIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjMub2ZfaW50NjRfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDYzX2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjMuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjMuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2My4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjMuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDYzLiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjMuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2My4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2My4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2My4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2My4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDYzID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX3VuaWZvcm1cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjNcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgICgqIHggYW5kIHkgYXJlIHNpZ24tZXh0ZW5kZWQsIHdoaWNoIHByZXNlcnZlcyB0aGUgaGlnaCBiaXQgKilcbiAgICBTdGRsaWIuSW50NjQudW5zaWduZWRfY29tcGFyZSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAoQmFzZS5JbnQ2My50b19pbnQ2NCB5KVxuICA7O1xuXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIGxldCBzaWduZWQgPSBmYWxzZVxuICBsZXQgbnVtX2JpdHMgPSA2M1xuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCBtb2RfbmFtZSA9IFwiVWludDYzXCJcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjMudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCBleG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID1cbiAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMXG4gICAgdGhlbiBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHhcbiAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgdG9fYmFzZV9pbnQ2NCB4ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKSAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSAweDdGRkZGRkZGRkZGRkZGRkZMXG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIChVaW50MzIudG9fYmFzZV9pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biAoeCA6IHVpbnQ2NCkgOiB0ID1cbiAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMXG4gICAgdGhlbiBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHhcbiAgICBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nOkJhc2UuSW50NjQudG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50NjNfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlTHVcIiAodG9fYmFzZV9pbnQ2NCB4KSlcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQmFzZS5TZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG4gICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAodHJ5IFN0ZGxpYi5TY2FuZi5zc2NhbmYgcyBcIiVMdVwiIG9mX2Jhc2VfaW50NjRfZXhuIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2My4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2My4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2My4oICogKVxuXG4gICAgICBsZXQgKCAvICkgeCB5ID1cbiAgICAgICAgb2ZfYmFzZV9pbnQ2NF90cnVuYyAoQmFzZS5JbnQ2NC4oIC8gKSAodG9fYmFzZV9pbnQ2NCB4KSAodG9fYmFzZV9pbnQ2NCB5KSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJfaW50NjRcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lm1pbl92YWx1ZVxuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2NC5tYXhfdmFsdWVcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQ2NFwiXG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2NC4oID49IClcbiAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OCB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDMyIHggPSBCYXNlLkludDY0Lm9mX2ludDMyIChJbnQzMi50b19iYXNlX2ludDMyIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2MyB4ID0gQmFzZS5JbnQ2My50b19pbnQ2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDY0LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDY0LiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDY0LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2NC4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDY0LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjQuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjQuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjQuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjQuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2NCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDY0LnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgY29tcGFyZSA9IFN0ZGxpYi5JbnQ2NC51bnNpZ25lZF9jb21wYXJlXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2NFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2NFxuICBsZXQgemVybyA9IEJhc2UuSW50NjQuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSAtMUxcbiAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gIGxldCBudW1fYml0cyA9IDY0XG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQ2NC4oID49IClcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50NjRcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IGV4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF90cnVuYyB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCB0b19iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzIgeCA9IFVpbnQzMi50b19iYXNlX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDYzICh4IDogdWludDYzKSA6IGludDY0ID1cbiAgICBCYXNlLkludDY0LiggbGFuZCApIChCYXNlLkludDYzLnRvX2ludDY0IHgpIDB4N0ZGRkZGRkZGRkZGRkZGRkxcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50NjRfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNleHAgY29udmVyc2lvbnMuICopXG4gIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlTHVcIiB4KVxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50NjQudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICB8IEJhc2UuU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgU3RkbGliLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2RpdlxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDhcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG4gIHZhbCBnZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG4gIHZhbCBnZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuICB2YWwgZ2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuICB2YWwgZ2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcbiAgdmFsIGdldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbiAgdmFsIGdldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OCAtPiB1bml0XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OCAtPiB1bml0XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgR2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50XG4gIHZhbCBnZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIHNldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudCAtPiB1bml0XG5lbmRcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogU3RkbGliLkludDMyLnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBTdGRsaWIuSW50NjQudCAtPiBTdGRsaWIuSW50NjQudCA9IFwiJWJzd2FwX2ludDY0XCJcblxubW9kdWxlIE1ha2VfZ2V0IChGIDogR2V0X2Z1bmN0aW9ucykgOiBHZXQgd2l0aCB0eXBlIHQgOj0gRi50ID0gc3RydWN0XG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDggdCB+cG9zID0gSW50OC5vZl9iYXNlX2ludF90cnVuYyAoRi5nZXRfdWludDggdCBwb3MpXG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50OCB0IH5wb3MgPSBVaW50OC5vZl9iYXNlX2ludF90cnVuYyAoRi5nZXRfdWludDggdCBwb3MpXG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDE2X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF91aW50MTZfbmUgdCBwb3MgaW5cbiAgICBJbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQxNl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuICA7O1xuXG4gICgqIDE2LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgVWludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQxNl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgVWludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50MzJfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF9pbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBJbnQzMi5vZl9iYXNlX2ludDMyIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcbiAgOztcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MzJfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgVWludDMyLm9mX2Jhc2VfaW50MzJfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfdWludDMyX2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeClcbiAgOztcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfaW50NjRfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHhcbiAgOztcblxuICBsZXQgZ2V0X2ludDY0X2JlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4XG4gIDs7XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIFVpbnQ2NC5vZl9iYXNlX2ludDY0X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG4gIDs7XG5lbmRcbltAQGlubGluZSBhbHdheXNdXG5cbm1vZHVsZSBNYWtlX3NldCAoRiA6IFNldF9mdW5jdGlvbnMpIDogU2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ4IHQgfnBvcyB4ID0gRi5zZXRfdWludDggdCBwb3MgeFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDggdCB+cG9zIHggPSBzZXRfdWludDggdCB+cG9zIChVaW50OC5vZl9pbnQ4X3dyYXAgeClcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50MTZfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHggaW5cbiAgICBGLnNldF91aW50MTZfbmUgdCBwb3MgeFxuICA7O1xuXG4gIGxldCBzZXRfdWludDE2X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICAoKiAxNi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MTZfbGUgdCB+cG9zIHggPSBzZXRfdWludDE2X2xlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcbiAgbGV0IHNldF9pbnQxNl9iZSB0IH5wb3MgeCA9IHNldF91aW50MTZfYmUgdCB+cG9zIChVaW50MTYub2ZfaW50MTZfd3JhcCB4KVxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQzMl9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBJbnQzMi50b19iYXNlX2ludDMyIHggaW5cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4IGluXG4gICAgRi5zZXRfaW50MzJfbmUgdCBwb3MgeFxuICA7O1xuXG4gIGxldCBzZXRfaW50MzJfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMzIgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICAoKiAzMi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50MzJfbGUgdCB+cG9zIHggPSBzZXRfaW50MzJfbGUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuICBsZXQgc2V0X3VpbnQzMl9iZSB0IH5wb3MgeCA9IHNldF9pbnQzMl9iZSB0IH5wb3MgKEludDMyLm9mX3VpbnQzMl93cmFwIHgpXG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDY0X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gIGxldCBzZXRfaW50NjRfYmUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHggaW5cbiAgICBGLnNldF9pbnQ2NF9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDY0X2xlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2xlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbiAgbGV0IHNldF91aW50NjRfYmUgdCB+cG9zIHggPSBzZXRfaW50NjRfYmUgdCB+cG9zIChJbnQ2NC5vZl91aW50NjRfd3JhcCB4KVxuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgQnl0ZXMwVW5zYWZlID0gc3RydWN0XG4gIHR5cGUgdCA9IEJ5dGVzLnRcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogQnl0ZXMudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVjYW1sX2J5dGVzX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCBzZXRfdWludDggOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuICBleHRlcm5hbCBzZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG4gIGV4dGVybmFsIHNldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQzMi50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMydVwiXG4gIGV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0dVwiXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9nZXQgKEJ5dGVzKVxuICBpbmNsdWRlIE1ha2Vfc2V0IChCeXRlcylcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMwVW5zYWZlKVxuICAgIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzMFVuc2FmZSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN0cmluZzAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBleHRlcm5hbCBnZXRfdWludDggOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBTdGRsaWIuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IFN0ZGxpYi5JbnQ2NC50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcwVW5zYWZlID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0cmluZy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNnVcIlxuICBleHRlcm5hbCBnZXRfaW50MzJfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDMyLnQgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuICBleHRlcm5hbCBnZXRfaW50NjRfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gU3RkbGliLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMClcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMFVuc2FmZSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIEJpZ3N0cmluZzAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICAoIGNoYXJcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdFxuICAgICwgU3RkbGliLkJpZ2FycmF5LmNfbGF5b3V0IClcbiAgICAgIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCBnZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCgnYSwgJ2IsICdjKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IGludFxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG4gIGV4dGVybmFsIGRpbSA6ICgoJ2EsICdiLCAnYykgdFtAbG9jYWxfb3B0XSkgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG5lbmRcblxuaW5jbHVkZSBCaWdzdHJpbmcwXG5cbmV4dGVybmFsIGF1eF9jcmVhdGUgOiBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXM6aW50IC0+IHNpemU6aW50IC0+IHQgPSBcImJpZ3N0cmluZ19hbGxvY1wiXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxuKCogT25lIG5lZWRzIHRvIHVzZSBbQ2FtbC5TeXMud29yZF9zaXplXSBzbyB0aGF0IGl0cyB2YWx1ZSBpcyBrbm93biBhdCBjb21waWxlLXRpbWUuICopXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTdGRsaWIuU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3RkbGliLlN5cy5iaWdfZW5kaWFuXG5sZXQgbm90X29uXzMyYml0ID0gU3RkbGliLlN5cy53b3JkX3NpemUgPiAzMlxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi52YWx1ZSBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgfmRlZmF1bHQ6KC0xKVxuICBpblxuICAoKiBUaGlzIGNoZWNrIGlzIGltcG9ydGFudCBiZWNhdXNlIFthdXhfY3JlYXRlIH5zaXplOigtMSldIHJhaXNlcyBbT3V0X29mX21lbW9yeV0sIHdoaWNoXG4gICAgIGNvdWxkIGJlIGNvbmZ1c2luZyBkdXJpbmcgZGVidWdnaW5nLiAqKVxuICBpZiBzaXplIDwgMCB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiY3JlYXRlOiBzaXplID0gJWQgPCAwXCIgc2l6ZSk7XG4gIGF1eF9jcmVhdGUgfm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+c2l6ZVxuOztcblxubGV0IGxlbmd0aCA9IEFycmF5MS5kaW1cblxuZXh0ZXJuYWwgaXNfbW1hcHBlZCA6IHQgLT4gYm9vbCA9IFwiYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlwiIFtAQG5vYWxsb2NdXG5cbmxldCBpbml0IG4gfmYgPVxuICBsZXQgdCA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHQue2l9IDwtIGYgaVxuICBkb25lO1xuICB0XG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gY2hlY2tfYXJnc19zbG93IH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBwb3MgPCAwXCIpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBsZW4gPCAwXCIpO1xuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICAoKiBCZSBjYXJlZnVsIHdpdGggb3ZlcmZsb3chICBXZSBjb3VsZCBoYXZlIGJvZ29ucyBsaWtlIFtwb3MgPSBJbnQubWF4X3ZhbHVlXSBvciBbbGVuID1cbiAgICAgSW50Lm1heF92YWx1ZV0gcGFzc2VkIGJ5IHRoZSB1c2VyLiAqKVxuICBpZiBic3RyX2xlbiAtIHBvcyA8IGxlblxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiQmlnc3RyaW5nLiVzOiBsZW5ndGgoYnN0cikgPCBwb3MgKyBsZW5cIiBsb2MpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGNoZWNrX2FyZ3MgfmxvYyB+cG9zIH5sZW4gKGJzdHIgOiB0KSA9XG4gIGxldCBvcGVuIEJvb2wuTm9uX3Nob3J0X2NpcmN1aXRpbmcgaW5cbiAgbGV0IGJzdHJfbGVuID0gbGVuZ3RoIGJzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IGJzdHJfbGVuIC0gcG9zIDwgbGVuIHRoZW4gY2hlY2tfYXJnc19zbG93IH5sb2MgfnBvcyB+bGVuIGJzdHJcbjs7XG5cbmxldCBnZXRfb3B0X2xlbiBic3RyIH5wb3MgPSBmdW5jdGlvblxuICB8IFNvbWUgbGVuIC0+IGxlblxuICB8IE5vbmUgLT4gbGVuZ3RoIGJzdHIgLSBwb3Ncbjs7XG5cbigqIEJsaXR0aW5nICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0XG4gIDogIHNyYzoodFtAbG9jYWxfb3B0XSlcbiAgLT4gc3JjX3BvczppbnRcbiAgLT4gZHN0Oih0W0Bsb2NhbF9vcHRdKVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpZ3N0cmluZ19ibGl0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCogRXhwb3NpbmcgdGhlIGV4dGVybmFsIHZlcnNpb24gb2YgZ2V0L3NldCBzdXBwb3J0cyBiZXR0ZXIgaW5saW5pbmcuICopXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IHQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcblxubW9kdWxlIEJpZ3N0cmluZ19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuZW5kXG5cbm1vZHVsZSBCeXRlc19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuZW5kXG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5tb2R1bGUgRnJvbV9ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCeXRlc19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KHRbQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWJcIlxuICAgICAgW0BAbm9hbGxvY11cblxuICAgICAgaW5jbHVkZSBCaWdzdHJpbmdfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCaWdzdHJpbmdfc2VxdWVuY2UpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOih0W0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6KGJ5dGVzW0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViXCJcbiAgICAgIFtAQG5vYWxsb2NdXG5cbiAgICAgIGluY2x1ZGUgQnl0ZXNfc2VxdWVuY2VcbiAgICBlbmQpXG5cbm1vZHVsZSBGcm9tX3N0cmluZyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6KHN0cmluZ1tAbG9jYWxfb3B0XSlcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0Oih0W0Bsb2NhbF9vcHRdKVxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFRvX2J5dGVzXG4gIGluY2x1ZGUgQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnc3RyaW5nMCkgKFRvX2J5dGVzKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGcm9tX3N0cmluZy5zdWJvXG5sZXQgb2ZfYnl0ZXMgPSBGcm9tX2J5dGVzLnN1Ym9cbmxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcuc3Vib1xubGV0IHRvX2J5dGVzID0gVG9fYnl0ZXMuc3Vib1xubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxubGV0IHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0ID0gZnVuY3Rpb25cbiAgfCBBdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYub2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjb3B5IHQgOiB0ID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG5sZXQgY29uY2F0ID1cbiAgbGV0IGFwcGVuZCB+c3JjIH5kc3QgfmRzdF9wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGxldCBzcmNfcG9zID0gMCBpblxuICAgIGxldCBkc3RfcG9zID0gIWRzdF9wb3NfcmVmIGluXG4gICAgYmxpdCB+ZHN0IH5kc3RfcG9zIH5zcmMgfnNyY19wb3MgfmxlbjtcbiAgICBkc3RfcG9zX3JlZiA6PSBkc3RfcG9zICsgbGVuXG4gIGluXG4gIGZ1biA/c2VwIGxpc3QgLT5cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGNyZWF0ZSAwXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCBoZWFkX2xlbiA9IGxlbmd0aCBoZWFkIGluXG4gICAgICBsZXQgc2VwX2xlbiA9IE9wdGlvbi52YWx1ZV9tYXAgc2VwIH5mOihmdW4gdCAtPiBsZW5ndGggdCkgfmRlZmF1bHQ6MCBpblxuICAgICAgbGV0IHRhaWxfY291bnQgPSBMaXN0Lmxlbmd0aCB0YWlsIGluXG4gICAgICBsZXQgbGVuID1cbiAgICAgICAgaGVhZF9sZW5cbiAgICAgICAgKyAoc2VwX2xlbiAqIHRhaWxfY291bnQpXG4gICAgICAgICsgTGlzdC5zdW0gKG1vZHVsZSBJbnQpIHRhaWwgfmY6KGZ1biB0IC0+IGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBkc3QgPSBjcmVhdGUgbGVuIGluXG4gICAgICBsZXQgZHN0X3Bvc19yZWYgPSByZWYgMCBpblxuICAgICAgYXBwZW5kIH5zcmM6aGVhZCB+ZHN0IH5kc3RfcG9zX3JlZjtcbiAgICAgIExpc3QuaXRlciB0YWlsIH5mOihmdW4gc3JjIC0+XG4gICAgICAgIChtYXRjaCBzZXAgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgc2VwIC0+IGFwcGVuZCB+c3JjOnNlcCB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICAgIGFwcGVuZCB+c3JjIH5kc3QgfmRzdF9wb3NfcmVmKTtcbiAgICAgIGFzc2VydCAoIWRzdF9wb3NfcmVmID0gbGVuKTtcbiAgICAgIGRzdFxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX21lbXNldCA6IHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiYmlnc3RyaW5nX21lbXNldF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1zZXQgdCB+cG9zIH5sZW4gYyA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KTtcbiAgdW5zYWZlX21lbXNldCB0IH5wb3MgfmxlbiBjXG47O1xuXG4oKiBDb21wYXJpc29uICopXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiB0XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcCB0MSB+cG9zMSB0MiB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMiB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0Mik7XG4gIHVuc2FmZV9tZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9ieXRlc1xuICA6ICB0XG4gIC0+IHBvczE6aW50XG4gIC0+IEJ5dGVzLnRcbiAgLT4gcG9zMjppbnRcbiAgLT4gbGVuOmludFxuICAtPiBpbnRcbiAgPSBcImJpZ3N0cmluZ19tZW1jbXBfYnl0ZXNfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtY21wX2J5dGVzIHQxIH5wb3MxIGJ5dGVzIH5wb3MyIH5sZW4gPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3M6cG9zMSB+bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0MSk7XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zOnBvczJcbiAgICB+bGVuXG4gICAgfnRvdGFsX2xlbmd0aDooQnl0ZXMubGVuZ3RoIGJ5dGVzKTtcbiAgdW5zYWZlX21lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuXG47O1xuXG5sZXQgY29tcGFyZSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDJcbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIGxldCBsZW4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IGxlbjIgPSBsZW5ndGggdDIgaW5cbiAgICBsZXQgbGVuID0gSW50Lm1pbiBsZW4xIGxlbjIgaW5cbiAgICBtYXRjaCB1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuIHdpdGhcbiAgICB8IDAgLT4gaWYgbGVuMSA8IGxlbjIgdGhlbiAtMSBlbHNlIGlmIGxlbjEgPiBsZW4yIHRoZW4gMSBlbHNlIDBcbiAgICB8IG4gLT4gbilcbjs7XG5cbmV4dGVybmFsIGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1xuICA6ICBIYXNoLnN0YXRlXG4gIC0+IHRcbiAgLT4gSGFzaC5zdGF0ZVxuICA9IFwiaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nXCJcbltAQG5vYWxsb2NdXG5cbmxldCBfbWFraW5nX3N1cmVfdGhlX0NfYmluZGluZ190YWtlc19hbl9pbnQgKHggOiBIYXNoLnN0YXRlKSA9ICh4IDo+IGludClcbmxldCBoYXNoX2ZvbGRfdCA9IGludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1xubGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuXG50eXBlIHRfZnJvemVuID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgSW50LmVxdWFsIGxlbjEgbGVuMiAmJiBJbnQuZXF1YWwgKHVuc2FmZV9tZW1jbXAgdDEgfnBvczE6MCB0MiB+cG9zMjowIH5sZW46bGVuMSkgMClcbjs7XG5cbigqIFNlYXJjaCAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZmluZCA6IHQgLT4gY2hhciAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gaW50ID0gXCJiaWdzdHJpbmdfZmluZFwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtbWVtXG4gIDogIGhheXN0YWNrOnRcbiAgLT4gbmVlZGxlOnRcbiAgLT4gaGF5c3RhY2tfcG9zOmludFxuICAtPiBoYXlzdGFja19sZW46aW50XG4gIC0+IG5lZWRsZV9wb3M6aW50XG4gIC0+IG5lZWRsZV9sZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbW1lbV9ieXRlY29kZVwiIFwiYmlnc3RyaW5nX21lbW1lbVwiXG5bQEBub2FsbG9jXVxuXG5sZXQgZmluZCA/KHBvcyA9IDApID9sZW4gY2hyIGJzdHIgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBjaGVja19hcmdzIH5sb2M6XCJmaW5kXCIgfnBvcyB+bGVuIGJzdHI7XG4gIGxldCByZXMgPSB1bnNhZmVfZmluZCBic3RyIGNociB+cG9zIH5sZW4gaW5cbiAgaWYgcmVzIDwgMCB0aGVuIE5vbmUgZWxzZSBTb21lIHJlc1xuOztcblxubGV0IG1lbW1lbVxuICAgICAgfmhheXN0YWNrXG4gICAgICB+bmVlZGxlXG4gICAgICA/KGhheXN0YWNrX3BvcyA9IDApXG4gICAgICA/aGF5c3RhY2tfbGVuXG4gICAgICA/KG5lZWRsZV9wb3MgPSAwKVxuICAgICAgP25lZWRsZV9sZW5cbiAgICAgICgpXG4gID1cbiAgbGV0IGhheXN0YWNrX2xlbiA9IGdldF9vcHRfbGVuIGhheXN0YWNrIH5wb3M6aGF5c3RhY2tfcG9zIGhheXN0YWNrX2xlbiBpblxuICBsZXQgbmVlZGxlX2xlbiA9IGdldF9vcHRfbGVuIG5lZWRsZSB+cG9zOm5lZWRsZV9wb3MgbmVlZGxlX2xlbiBpblxuICBsZXQgcmVzID1cbiAgICB1bnNhZmVfbWVtbWVtIH5oYXlzdGFjayB+bmVlZGxlIH5oYXlzdGFja19wb3MgfmhheXN0YWNrX2xlbiB+bmVlZGxlX3BvcyB+bmVlZGxlX2xlblxuICBpblxuICBpZiByZXMgPCAwIHRoZW4gTm9uZSBlbHNlIFNvbWUgcmVzXG47O1xuXG4oKiB2aW06IHNldCBmaWxldHlwZT1vY2FtbCA6ICopXG5cbigqIEJpbmFyeS1wYWNraW5nIGxpa2UgYWNjZXNzb3JzICopXG5cbmV4dGVybmFsIGludDMyX29mX2ludCA6IGludCAtPiBpbnQzMiA9IFwiJWludDMyX29mX2ludFwiXG5leHRlcm5hbCBpbnQzMl90b19pbnQgOiBpbnQzMiAtPiBpbnQgPSBcIiVpbnQzMl90b19pbnRcIlxuZXh0ZXJuYWwgaW50NjRfb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIGludDY0X3RvX2ludCA6IChpbnQ2NFtAbG9jYWxdKSAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiAoaW50NjRbQGxvY2FsXSkgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzE2IDogdCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzY0IDogdCAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF8xNiA6ICh0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0XzMyXG4gIDogICh0W0Bsb2NhbF9vcHRdKVxuICAtPiBpbnRcbiAgLT4gaW50MzJcbiAgLT4gdW5pdFxuICA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfNjQgOiB0IC0+IGludCAtPiAoaW50NjRbQGxvY2FsXSkgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDY0dVwiXG5cbmxldFtAaW5saW5lIGFsd2F5c10gZ2V0XzE2ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfMTZcIiB+cG9zIH5sZW46MiB0O1xuICB1bnNhZmVfZ2V0XzE2IHQgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGdldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50MzIgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfZ2V0XzMyIHQgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGdldF82NCAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50NjQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfNjRcIiB+cG9zIH5sZW46OCB0O1xuICB1bnNhZmVfZ2V0XzY0IHQgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF8xNl90cnVuYyAodCA6IHQpIChwb3MgOiBpbnQpICh2IDogaW50KSA6IHVuaXQgPVxuICBjaGVja19hcmdzIH5sb2M6XCJzZXRfMTZcIiB+cG9zIH5sZW46MiB0O1xuICB1bnNhZmVfc2V0XzE2IHQgcG9zIHZcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gc2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQzMikgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX3NldF8zMiB0IHBvcyB2XG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNldF82NCAodCA6IHQpIChwb3MgOiBpbnQpICgodiA6IGludDY0KSBbQGxvY2FsXSkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX3NldF82NCB0IHBvcyB2XG47O1xuXG5sZXQgc2lnbl9leHRlbmRfMTYgdSA9ICh1IGxzbCAoSW50Lm51bV9iaXRzIC0gMTYpKSBhc3IgKEludC5udW1fYml0cyAtIDE2KVxuXG5sZXQgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MDAwIHx8IHggPiAweDdGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDggeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwIHx8IHggPiAweDdGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF8gfmxvYzpfIC0+ICgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IC0xIGxzbCAzMSAmJiB4IDwgMSBsc2wgMzFcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwICYmIHggPCAxIGxzbCAzMlxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ2NCB4IH5sb2MgPVxuICBpZiB4ID49IDBcbiAgdGhlbiAoKVxuICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKSlcbmxldCB1bnNhZmVfd3JpdGVfaW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKGdldF8xNiB0IHBvcylcbmxldCByZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAoZ2V0XzE2IHQgcG9zKSlcblxubGV0IHdyaXRlX2ludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX2ludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2IHQgfnBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfdWludDE2IHQgfnBvcyA9IGdldF8xNiB0IHBvc1xubGV0IHJlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2IChnZXRfMTYgdCBwb3MpXG5cbmxldCB3cml0ZV91aW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV91aW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyIHQgfnBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfaW50MzIgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbmxldCByZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKGdldF8zMiB0IHBvcylcbmxldCByZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyIChnZXRfMzIgdCBwb3MpKVxubGV0IHJlYWRfaW50MzIgdCB+cG9zID0gZ2V0XzMyIHQgcG9zXG5sZXQgcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAoZ2V0XzMyIHQgcG9zKVxubGV0IHdyaXRlX2ludDMyIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbmxldCB3cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcblxubGV0IHdyaXRlX2ludDMyX2ludF9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG47O1xuXG5sZXQgd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludCAoc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPVxuICB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50IChnZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID0gaW50NjRfdG9faW50IChzd2FwNjQgKGdldF82NCB0IHBvcykpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjQgdCB+cG9zID0gZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKGdldF82NCB0IHBvcylcbmxldCB3cml0ZV9pbnQ2NCB0IH5wb3MgKHggW0Bsb2NhbF0pID0gc2V0XzY0IHQgcG9zIHhcbmxldCB3cml0ZV9pbnQ2NF9zd2FwIHQgfnBvcyAoeCBbQGxvY2FsXSkgPSBzZXRfNjQgdCBwb3MgKHN3YXA2NCB4KVxubGV0IHdyaXRlX2ludDY0X2ludCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoaW50NjRfb2ZfaW50IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPSBzZXRfNjQgdCBwb3MgKHN3YXA2NCAoaW50NjRfb2ZfaW50IHgpKVxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2IGVsc2UgdW5zYWZlX3JlYWRfaW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MTZcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNiBlbHNlIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX3VpbnQxNlxuOztcblxubGV0IGdldF9pbnQxNl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTYgZWxzZSByZWFkX2ludDE2X3N3YXBcbmxldCBnZXRfaW50MTZfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDE2X3N3YXAgZWxzZSByZWFkX2ludDE2XG5sZXQgZ2V0X3VpbnQxNl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2IGVsc2UgcmVhZF91aW50MTZfc3dhcFxubGV0IGdldF91aW50MTZfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX3VpbnQxNl9zd2FwIGVsc2UgcmVhZF91aW50MTZcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MTYgZWxzZSB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX3VpbnQxNiBlbHNlIHVuc2FmZV93cml0ZV91aW50MTZfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNlxuOztcblxubGV0IHNldF9pbnQxNl9iZV9leG4gPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQxNl9leG4gZWxzZSB3cml0ZV9pbnQxNl9zd2FwX2V4blxubGV0IHNldF9pbnQxNl9sZV9leG4gPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX2ludDE2X2V4blxuXG5sZXQgc2V0X3VpbnQxNl9iZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV91aW50MTZfZXhuIGVsc2Ugd3JpdGVfdWludDE2X3N3YXBfZXhuXG47O1xuXG5sZXQgc2V0X3VpbnQxNl9sZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV91aW50MTZfc3dhcF9leG4gZWxzZSB3cml0ZV91aW50MTZfZXhuXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzIgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MzJfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMlxuOztcblxubGV0IGdldF9pbnQzMl90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMiBlbHNlIHJlYWRfaW50MzJfc3dhcFxubGV0IGdldF9pbnQzMl90X2xlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQzMl9zd2FwIGVsc2UgcmVhZF9pbnQzMlxubGV0IHNldF9pbnQzMl90X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzIgZWxzZSB3cml0ZV9pbnQzMl9zd2FwXG5sZXQgc2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9zd2FwIGVsc2Ugd3JpdGVfaW50MzJcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzJfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQzMl9pbnRcbjs7XG5cbmxldCBnZXRfaW50MzJfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX2ludCBlbHNlIHJlYWRfaW50MzJfaW50X3N3YXBcbmxldCBnZXRfaW50MzJfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgcmVhZF9pbnQzMl9pbnRcblxubGV0IHNldF9pbnQzMl9iZV9leG4gPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMl9pbnRfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuXG47O1xuXG5sZXQgc2V0X2ludDMyX2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9zd2FwX2V4biBlbHNlIHdyaXRlX2ludDMyX2ludF9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfaW50IGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlX3RydW5jID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0X2ludCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfaW50XG47O1xuXG5sZXQgZ2V0X2ludDY0X2JlX3RydW5jID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9pbnQgZWxzZSByZWFkX2ludDY0X2ludF9zd2FwXG5sZXQgZ2V0X2ludDY0X2xlX3RydW5jID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHJlYWRfaW50NjRfaW50XG5sZXQgc2V0X2ludDY0X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50NjRfaW50IGVsc2Ugd3JpdGVfaW50NjRfaW50X3N3YXBcbmxldCBzZXRfaW50NjRfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHdyaXRlX2ludDY0X2ludFxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF90X2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50NjRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF90X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDY0IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NFxuOztcblxubW9kdWxlIExvY2FsID0gc3RydWN0XG4gIGxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMICh1bnNhZmVfcmVhZF9pbnQ2NCB0IH5wb3MpKVxuICA7O1xuXG4gIGxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjRfc3dhcF9sb2NhbCB0IH5wb3MgPVxuICAgICAoSW50NjQuKCArICkgMEwgKHVuc2FmZV9yZWFkX2ludDY0X3N3YXAgdCB+cG9zKSlcbiAgOztcblxuICBsZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMIChyZWFkX2ludDY0IHQgfnBvcykpXG4gIDs7XG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSByZWFkX2ludDY0X3N3YXBfbG9jYWwgdCB+cG9zID1cbiAgICAgKEludDY0LiggKyApIDBMIChyZWFkX2ludDY0X3N3YXAgdCB+cG9zKSlcbiAgOztcblxuICBsZXQgdW5zYWZlX2dldF9pbnQ2NF90X2JlID1cbiAgICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9sb2NhbCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBfbG9jYWxcbiAgOztcblxuICBsZXQgdW5zYWZlX2dldF9pbnQ2NF90X2xlID1cbiAgICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwX2xvY2FsIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRfbG9jYWxcbiAgOztcblxuICBsZXQgZ2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2xvY2FsIGVsc2UgcmVhZF9pbnQ2NF9zd2FwX2xvY2FsXG4gIGxldCBnZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50NjRfc3dhcF9sb2NhbCBlbHNlIHJlYWRfaW50NjRfbG9jYWxcbmVuZFxuXG5sZXQgZ2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0IGVsc2UgcmVhZF9pbnQ2NF9zd2FwXG5sZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXAgZWxzZSByZWFkX2ludDY0XG5sZXQgc2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NCBlbHNlIHdyaXRlX2ludDY0X3N3YXBcbmxldCBzZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NFxuXG5sZXQgaW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfaW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG5sZXQgdWludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX3VpbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbigqIFtQb2x5XSBpcyByZXF1aXJlZCBzbyB0aGF0IHdlIGNhbiBjb21wYXJlIHVuYm94ZWQgW2ludDY0XS4gKilcbmxldFtAaW5saW5lIGFsd2F5c10gaW50NjRfdG9faW50X2V4biAobiBbQGxvY2FsXSkgPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAtMHg0MDAwXzAwMDBfMDAwMF8wMDAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG4gIGVsc2UgaWYgUG9seS4obiA+PSAtMHgwMDAwXzAwMDBfNDAwMF8wMDAwTCAmJiBuIDwgMHgwMDAwXzAwMDBfNDAwMF8wMDAwTClcbiAgdGhlbiBpbnQ2NF90b19pbnQgblxuICBlbHNlIGludDY0X2NvbnZfZXJyb3IgKClcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdWludDY0X3RvX2ludF9leG4gbiA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW5cbiAgICBpZiBQb2x5LihuID49IDBMICYmIG4gPCAweDQwMDBfMDAwMF8wMDAwXzAwMDBMKVxuICAgIHRoZW4gaW50NjRfdG9faW50IG5cbiAgICBlbHNlIHVpbnQ2NF9jb252X2Vycm9yICgpXG4gIGVsc2UgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHgwMDAwXzAwMDBfNDAwMF8wMDAwTClcbiAgdGhlbiBpbnQ2NF90b19pbnQgblxuICBlbHNlIHVpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9iZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biB0IH5wb3MgPVxuICBpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuOztcblxubGV0IGdldF9pbnQ2NF9iZV9leG4gdCB+cG9zID0gaW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxubGV0IGdldF9pbnQ2NF9sZV9leG4gdCB+cG9zID0gaW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF91aW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIHVpbnQ2NF90b19pbnRfZXhuICh1bnNhZmVfZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfYmUgdCB+cG9zKVxubGV0IGdldF91aW50NjRfbGVfZXhuIHQgfnBvcyA9IHVpbnQ2NF90b19pbnRfZXhuIChnZXRfaW50NjRfdF9sZSB0IH5wb3MpXG5sZXQgdW5zYWZlX3NldF91aW50NjRfYmUgPSB1bnNhZmVfc2V0X2ludDY0X2JlXG5sZXQgdW5zYWZlX3NldF91aW50NjRfbGUgPSB1bnNhZmVfc2V0X2ludDY0X2xlXG5cbmxldCBzZXRfdWludDY0X2JlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQ2NCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50NjRfYmVfZXhuXCIgbjtcbiAgc2V0X2ludDY0X2JlIHQgfnBvcyBuXG47O1xuXG5sZXQgc2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2xlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9sZSB0IH5wb3MgblxuOztcblxuKCogVHlwZSBhbm5vdGF0aW9ucyBvbiB0aGUgW3RdcyBhcmUgaW1wb3J0YW50IGhlcmU6IGluIG9yZGVyIGZvciB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGVcbiAgIG9wdGltaXplZCBjb2RlLCBpdCBuZWVkcyB0byBrbm93IHRoZSBmdWxseSBpbnN0YW50aWF0ZWQgdHlwZSBvZiB0aGUgYmlnYXJyYXkuIFRoaXMgaXNcbiAgIGJlY2F1c2UgdGhlIHR5cGUgb2YgdGhlIGJpZ2FycmF5IGVuY29kZXMgdGhlIGVsZW1lbnQga2luZCBhbmQgdGhlIGxheW91dCBvZiB0aGVcbiAgIGJpZ2FycmF5LiBXaXRob3V0IHRoZSBhbm5vdGF0aW9uIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSBDIGNhbGwgdG8gdGhlIGdlbmVyaWMgYWNjZXNzXG4gICBmdW5jdGlvbnMuICopXG5sZXQgdW5zYWZlX3NldF91aW50OCAodCA6IHQpIH5wb3MgbiA9IEFycmF5MS51bnNhZmVfc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcblxubGV0IHVuc2FmZV9zZXRfaW50OCAodCA6IHQpIH5wb3MgbiA9XG4gICgqIEluIGFsbCB0aGUgc2V0IGZ1bmN0aW9ucyB3aGVyZSB0aGVyZSBhcmUgdGhlc2UgdGVzdHMsIGl0IGxvb2tzIGxpa2UgdGhlIHRlc3QgY291bGQgYmVcbiAgICAgcmVtb3ZlZCwgc2luY2UgdGhleSBhcmUgb25seSBjaGFuZ2luZyB0aGUgdmFsdWVzIG9mIHRoZSBieXRlcyB0aGF0IGFyZSBub3RcbiAgICAgd3JpdHRlbi4gKilcbiAgbGV0IG4gPSBpZiBuIDwgMCB0aGVuIG4gKyAyNTYgZWxzZSBuIGluXG4gIEFycmF5MS51bnNhZmVfc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQ4ICh0IDogdCkgfnBvcyA9IENoYXIudG9faW50IChBcnJheTEudW5zYWZlX2dldCB0IHBvcylcblxubGV0IHVuc2FmZV9nZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEudW5zYWZlX2dldCB0IHBvcykgaW5cbiAgaWYgbiA+PSAxMjggdGhlbiBuIC0gMjU2IGVsc2UgblxuOztcblxubGV0IHNldF91aW50OF9leG4gKHQgOiB0KSB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50OF9leG5cIiBuO1xuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBzZXRfaW50OF9leG4gKHQgOiB0KSB+cG9zIG4gPVxuICBjaGVja192YWxpZF9pbnQ4IH5sb2M6XCJCaWdzdHJpbmcuc2V0X2ludDhfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBuIDwgMCB0aGVuIG4gKyAyNTYgZWxzZSBuIGluXG4gIEFycmF5MS5zZXQgdCBwb3MgKENoYXIudW5zYWZlX29mX2ludCBuKVxuOztcblxubGV0IGdldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLmdldCB0IHBvcylcblxubGV0IGdldF9pbnQ4ICh0IDogdCkgfnBvcyA9XG4gIGxldCBuID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBtYXNrMzJfbiA9IFN0ZGxpYi5OYXRpdmVpbnQuKHN1YiAoc2hpZnRfbGVmdCAxbiAzMikgMW4pXG5cbmxldFtAaW5saW5lIGFsd2F5c10gdWludDMyX29mX2ludDMyX3QgbiA9XG4gIGlmIG5vdF9vbl8zMmJpdFxuICB0aGVuXG4gICAgKCogdXNlIENhbWwuTmF0aXZlaW50IHRvIGVuc3VyZSBpbmxpbmluZyBldmVuIHdpdGhvdXQgeC1saWJyYXJ5LWlubGluaW5nICopXG4gICAgU3RkbGliLk5hdGl2ZWludC4odG9faW50IChsb2dhbmQgKG9mX2ludDMyIG4pIG1hc2szMl9uKSlcbiAgZWxzZSBpbnQzMl90b19pbnQgblxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2xlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2xlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfYmUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfYmUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2JlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuOztcblxubGV0IHNldF91aW50MzJfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9sZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9sZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDMyX2JlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfYmVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfYmVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxubGV0IGdldF91aW50MzJfYmUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2JlIHQgfnBvcylcblxubW9kdWxlIEludF9yZXByID0gc3RydWN0XG4gIG1vZHVsZSBGID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgIGxldCBnZXRfdWludDggdCBwb3MgPSBnZXRfdWludDggdCB+cG9zXG4gICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IHgpXG4gICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSBnZXRfMTYgdCBwb3NcbiAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gc2V0XzE2X3RydW5jIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gZ2V0XzMyIHQgcG9zXG4gICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gZ2V0XzY0IHQgcG9zXG4gICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gc2V0XzY0IHQgcG9zIHhcbiAgZW5kXG5cbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICAgIGxldCBnZXRfdWludDggdCBwb3MgPSB1bnNhZmVfZ2V0X3VpbnQ4IHQgfnBvc1xuICAgICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gdW5zYWZlX3NldF91aW50OCB0IH5wb3MgeFxuICAgICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG4gICAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzaWduX2V4dGVuZF8xNiA9IHNpZ25fZXh0ZW5kXzE2XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJsaXRcbmluY2x1ZGUgVGVzdF9ibGl0X2ludGZcblxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgb3BlbiBCbGl0XG5cbiAgdHlwZSAnYSBzcmNcbiAgdHlwZSAnYSBkc3RcblxuICAoKiAgdmFsIGJsaXQgICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIGJsaXRvIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0b1xuXG4gICgqICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgc3ViIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJcblxuICAoKnZhbCBzdWJvICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgc3VibyopXG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX3Rlc3RzX2dlbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2xcblxuICAgIHZhbCBvZl9ib29sIDogYm9vbCAtPiBib29sIHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB6XG5cbiAgbW9kdWxlIFNyYyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IChfIHRbQGxvY2FsXSkgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICBlbmRcblxuICBtb2R1bGUgRHN0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgbGVuZ3RoIDogKF8gdFtAbG9jYWxdKSAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gICAgdmFsIG92ZXJsYXBwaW5nX3NyY19kc3QgOiBbIGBEb19ub3RfY2hlY2sgfCBgQ2hlY2sgb2YgJ2EgU3JjLnQgLT4gJ2EgdCBdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlblxuICAgIChGb3JfdGVzdHMgOiBGb3JfdGVzdHNfZ2VuKVxuICAgIChUZXN0ZWQgOiBTX2dlblxuICAgICB3aXRoIHR5cGUgJ2Egc3JjIDo9ICdhIEZvcl90ZXN0cy5TcmMudFxuICAgICB3aXRoIHR5cGUgJ2EgZHN0IDo9ICdhIEZvcl90ZXN0cy5Ec3QudCkgPVxuc3RydWN0XG4gIG9wZW4gVGVzdGVkXG4gIG9wZW4gRm9yX3Rlc3RzXG5cbiAgbGV0IGluaXQgfmxlbiB+Y3JlYXRlIH5zZXQgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlIH5sZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgc2V0IHQgaSAoZiBpKVxuICAgIGRvbmU7XG4gICAgdFxuICA7O1xuXG4gIGxldCBlbHQxID0gRWx0Lm9mX2Jvb2wgdHJ1ZVxuICBsZXQgZWx0MiA9IEVsdC5vZl9ib29sIGZhbHNlXG4gIGxldCAoKSA9IGFzc2VydCAobm90IChFbHQuZXF1YWwgZWx0MSBlbHQyKSlcbiAgbGV0IHNyY19iaXQgaSA9IGlmIGkgbGFuZCAweDEgPSAwIHRoZW4gZWx0MSBlbHNlIGVsdDJcbiAgbGV0IGRzdF9iaXQgaSA9IGlmIGkgbGFuZCAweDEgPSAwIHRoZW4gZWx0MiBlbHNlIGVsdDFcblxuICAoKiBUZXN0IFtibGl0XS4gKilcbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgbiA9IDQgaW5cbiAgICBmb3Igc3JjX2xlbmd0aCA9IDAgdG8gbiBkb1xuICAgICAgZm9yIGRzdF9sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgICAgZm9yIHNyY19wb3MgPSAwIHRvIHNyY19sZW5ndGggZG9cbiAgICAgICAgICBmb3IgZHN0X3BvcyA9IDAgdG8gZHN0X2xlbmd0aCBkb1xuICAgICAgICAgICAgZm9yIHNyY19sZW4gPSAwIHRvIG1pbiAoc3JjX2xlbmd0aCAtIHNyY19wb3MpIChkc3RfbGVuZ3RoIC0gZHN0X3BvcykgZG9cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgbGV0IGlzX2luX3JhbmdlIGkgPSBpID49IGRzdF9wb3MgJiYgaSA8IGRzdF9wb3MgKyBzcmNfbGVuIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrIGxlbmd0aCBnZXQgbmFtZSBzZXF1ZW5jZSB+ZXhwZWN0ID1cbiAgICAgICAgICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggc2VxdWVuY2UgLSAxIGRvXG4gICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoRWx0LmVxdWFsIChnZXQgc2VxdWVuY2UgaSkgKGV4cGVjdCBpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcImJ1Z1wiIChuYW1lIDogc3RyaW5nKSAoaSA6IGludCldXG4gICAgICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tfc3JjID0gY2hlY2sgU3JjLmxlbmd0aCBTcmMuZ2V0IGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX2RzdCA9IGNoZWNrIERzdC5sZW5ndGggRHN0LmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBzcmMgPVxuICAgICAgICAgICAgICAgICAgaW5pdCB+bGVuOnNyY19sZW5ndGggfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGFzc2VydCAoU3JjLmxlbmd0aCBzcmMgPSBzcmNfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBsZXQgZHN0ID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpkc3RfbGVuZ3RoIH5jcmVhdGU6RHN0LmNyZWF0ZV9ib29sIH5zZXQ6RHN0LnNldCB+Zjpkc3RfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKERzdC5sZW5ndGggZHN0ID0gZHN0X2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGluaXRfc3JjICgpID1cbiAgICAgICAgICAgICAgICAgIGZvciBpID0gMCB0byBzcmNfbGVuZ3RoIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBTcmMuc2V0IHNyYyBpIChzcmNfYml0IGkpXG4gICAgICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBibGl0byB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuIH5kc3QgfmRzdF9wb3MgKCk7XG4gICAgICAgICAgICAgICAgY2hlY2tfc3JjIFwiYmxpdCBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcImJsaXQgZHN0XCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICBpZiBpc19pbl9yYW5nZSBpIHRoZW4gc3JjX2JpdCAoc3JjX3BvcyArIGkgLSBkc3RfcG9zKSBlbHNlIGRzdF9iaXQgaSk7XG4gICAgICAgICAgICAgICAgKG1hdGNoIERzdC5vdmVybGFwcGluZ19zcmNfZHN0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgRG9fbm90X2NoZWNrIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgYENoZWNrIHNyY190b19kc3QgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBkc3RfcG9zICsgc3JjX2xlbiA8PSBzcmNfbGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICBpbml0X3NyYyAoKTtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBkc3QgPSBzcmNfdG9fZHN0IHNyYyBpblxuICAgICAgICAgICAgICAgICAgICAgaWYgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICBibGl0byB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuIH5kc3QgfmRzdF9wb3MgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcImJsaXQgZHN0IG92ZXJsYXBwaW5nXCIgZHN0IH5leHBlY3Q6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2JpdCAoaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19wb3MgKyBpIC0gZHN0X3BvcyBlbHNlIGkpKSkpKTtcbiAgICAgICAgICAgICAgICAoKiBDaGVjayBbc3ViXS4gKilcbiAgICAgICAgICAgICAgICBpbml0X3NyYyAoKTtcbiAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3ViIHNyYyB+cG9zOnNyY19wb3MgfmxlbjpzcmNfbGVuIGluXG4gICAgICAgICAgICAgICAgY2hlY2tfc3JjIFwic3ViIHNyY1wiIHNyYyB+ZXhwZWN0OnNyY19iaXQ7XG4gICAgICAgICAgICAgICAgY2hlY2tfZHN0IFwic3ViIGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPiBzcmNfYml0IChzcmNfcG9zICsgaSkpXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgXCJidWdcIlxuICAgICAgICAgICAgICAgICAgICAgIChleG4gOiBleG4pXG4gICAgICAgICAgICAgICAgICAgICAgKHNyY19sZW5ndGggOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgKHNyY19wb3MgOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgKGRzdF9sZW5ndGggOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgKGRzdF9wb3MgOiBpbnQpXVxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBzcmMgPSBpbml0IH5sZW46NCB+Y3JlYXRlOlNyYy5jcmVhdGVfYm9vbCB+c2V0OlNyYy5zZXQgfmY6c3JjX2JpdCBpblxuICAgIGxldCBkc3QgPSBpbml0IH5sZW46OCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdCBpblxuICAgIGxldCBhc3NlcnRfcmFpc2VzIGYgPSBhc3NlcnQgKEV4bi5kb2VzX3JhaXNlIGYpIGluXG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6KC0xKSB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6MCAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6KC0xKSAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6NSB+c3JjX2xlbjoxIH5kc3QgfmRzdF9wb3M6MCAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo4IH5kc3QgfmRzdF9wb3M6MCAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6NSAoKSk7XG4gICAgYXNzZXJ0X3JhaXNlcyAoZnVuICgpIC0+IGJsaXRvIH5zcmMgfnNyY19wb3M6MCB+c3JjX2xlbjo0IH5kc3QgfmRzdF9wb3M6OCAoKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgVGVzdDFcbiAgICAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBwb2x5KVxuICAgIChUZXN0ZWQgOiBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYVxuXG4gICAgICAgIGxldCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgICAgICAgbGV0IG9mX2Jvb2wgPSBGbi5pZFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIFRlc3QxX2dlbmVyaWNcbiAgICAoRWx0IDogRWx0MSlcbiAgICAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudClcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBFbHRcblxuICAgICAgdHlwZSAnYSB6ID0gJ2EgU2VxdWVuY2UuelxuXG4gICAgICBtb2R1bGUgU3JjID0gU2VxdWVuY2VcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgRWx0X3RvX2VsdDEgKEVsdCA6IEVsdCkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gRWx0LnRcblxuICBsZXQgZXF1YWwgPSBFbHQuZXF1YWxcbiAgbGV0IG9mX2Jvb2wgPSBFbHQub2ZfYm9vbFxuZW5kXG5cbm1vZHVsZSBUZXN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU2VxdWVuY2UgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KVxuICAgIChUZXN0ZWQgOiBTIHdpdGggdHlwZSB0IDo9IFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0X3RvX2VsdDEgKEVsdClcblxuICAgICAgdHlwZSAnYSB6ID0gdW5pdFxuXG4gICAgICBtb2R1bGUgU3JjID0gc3RydWN0XG4gICAgICAgIG9wZW4gU2VxdWVuY2VcblxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gdFxuXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGdldCA9IGdldFxuICAgICAgICBsZXQgc2V0ID0gc2V0XG4gICAgICAgIGxldCBjcmVhdGVfYm9vbCA9IGNyZWF0ZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTcmNcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0X2Rpc3RpbmN0XG4gICAgKEVsdCA6IEVsdClcbiAgICAoU3JjIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoRHN0IDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFNyYy50IHdpdGggdHlwZSBkc3QgOj0gRHN0LnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0X3RvX2VsdDEgKEVsdClcblxuICAgICAgdHlwZSAnYSB6ID0gdW5pdFxuXG4gICAgICBtb2R1bGUgU3JjID0gc3RydWN0XG4gICAgICAgIG9wZW4gU3JjXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIG9wZW4gRHN0XG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgRG9fbm90X2NoZWNrXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIE1ha2VfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcblxuICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6ICh0LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZSAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdCAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdF9hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpIChEc3QgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHVuc2FmZV9ibGl0IDogKFNyYy50LCB0KSBibGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2VfZGlzdGluY3QgKFNyYykgKERzdClcbiAgaW5jbHVkZSBUZXN0X2Rpc3RpbmN0IChFbHQpIChTcmMpIChEc3QpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfYW5kX3Rlc3QgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgIGluY2x1ZGUgU2VxdWVuY2UxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBwb2x5XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTEgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QxIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG5cbm1vZHVsZSBNYWtlMV9nZW5lcmljX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdDEpIChTZXF1ZW5jZSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIEJsaXQuU2VxdWVuY2UxXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2UxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBFbHQudFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlMV9nZW5lcmljIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MV9nZW5lcmljIChFbHQpIChTZXF1ZW5jZSkgKEIpXG4gIGluY2x1ZGUgQlxuZW5kXG4iLCJvcGVuISBCYXNlXG5vcGVuISBCaW5hcnlfc2VhcmNoYWJsZVxuaW5jbHVkZSBUZXN0X2JpbmFyeV9zZWFyY2hhYmxlX2ludGZcblxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgb3BlbiBCaW5hcnlfc2VhcmNoYWJsZVxuXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGVsdFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKCdhIHQsICdhIGVsdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA6ICgnYSB0LCAnYSBlbHQpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgSW5kZXhhYmxlX2dlbl9hbmRfZm9yX3Rlc3QgPSBzaWdcbiAgaW5jbHVkZSBTX2dlblxuXG4gIG1vZHVsZSBGb3JfdGVzdCA6IHNpZ1xuICAgIHZhbCBjb21wYXJlIDogYm9vbCBlbHQgLT4gYm9vbCBlbHQgLT4gaW50XG4gICAgdmFsIHNtYWxsIDogYm9vbCBlbHRcbiAgICB2YWwgYmlnIDogYm9vbCBlbHRcbiAgICB2YWwgb2ZfYXJyYXkgOiBib29sIGVsdCBhcnJheSAtPiBib29sIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFRlc3RfZ2VuIChNIDogSW5kZXhhYmxlX2dlbl9hbmRfZm9yX3Rlc3QpID0gc3RydWN0XG4gIG9wZW4gTVxuXG4gIGxldCV0ZXN0X21vZHVsZSBcInRlc3RfYmluYXJ5X3NlYXJjaGFibGVcIiA9XG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGxldCBjb21wYXJlID0gRm9yX3Rlc3QuY29tcGFyZVxuICAgICAgbGV0IGVsdF9jb21wYXJlID0gRm9yX3Rlc3QuY29tcGFyZVxuICAgICAgbGV0IHMgPSBGb3JfdGVzdC5zbWFsbFxuICAgICAgbGV0IGIgPSBGb3JfdGVzdC5iaWdcblxuICAgICAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIH5jb21wYXJlIHQgaG93IHYgPVxuICAgICAgICBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSAoRm9yX3Rlc3Qub2ZfYXJyYXkgdCkgaG93IHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCAoID0gKSA9IFBvbHkuZXF1YWxcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAyXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBzID0gTm9uZVxuXG4gICAgICBsZXQgY3JlYXRlX3Rlc3RfY2FzZSAobnVtX3MsIG51bV9iKSA9XG4gICAgICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgYiB+bGVuOihudW1fcyArIG51bV9iKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gbnVtX3MgLSAxIGRvXG4gICAgICAgICAgYXJyLihpKSA8LSBzXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFyclxuICAgICAgOztcblxuICAgICAgbGV0IG9ubHlfc21hbGwgPSAxMF8wMDAsIDBcbiAgICAgIGxldCBvbmx5X2JpZyA9IDAsIDEwXzAwMFxuICAgICAgbGV0IGJvdGggPSAyNTMxLCA0NzE3XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIChjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwpIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+IHRydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBib3RoIGluXG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSB2IC0+IHYgPSAyNTMxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpID1cbiAgICAgICAgQXJyYXkuaW5pdCAxMDBfMDAwIH5mOihmdW4gaSAtPiBpZiBpID4gNTBfMDAwIHRoZW4gYiBlbHNlIHMpXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0cyBhcm91bmQgYSBnYXAqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBiZWdpbm5pbmcgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGVuZCBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgICAgZm9yIGxlbmd0aCA9IDAgdG8gNSBkb1xuICAgICAgICAgIGZvciBudW1fcyA9IDAgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICBsZXQgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggfmY6KGZ1biBpIC0+IGlmIGkgPCBudW1fcyB0aGVuIHMgZWxzZSBiKSBpblxuICAgICAgICAgICAgZm9yIHBvcyA9IC0xIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgICBmb3IgbGVuID0gLTEgdG8gbGVuZ3RoICsgMSBkb1xuICAgICAgICAgICAgICAgICgqdHJ5KilcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlID1cbiAgICAgICAgICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICAgICAgfnRvdGFsX2xlbmd0aDpsZW5ndGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5wb3MgfmxlbiB+Y29tcGFyZTplbHRfY29tcGFyZSBgTGFzdF9lcXVhbF90byBzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggc2hvdWxkX3JhaXNlLCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgRXJyb3IgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgT2sgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIHJhaXNlIGJ1dCBpdCBkaWRuJ3RcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIEVycm9yIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byBub3QgcmFpc2UsIGJ1dCBpdCByYWlzZWRcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIE9rIHJlc3VsdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHNlYXJjaGVkID0gbnVtX3MgLSAxIGluXG4gICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdF9yZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBzZWFyY2hlZCA8IHBvc1xuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPSAwXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHNlYXJjaGVkID49IHBvcyArIGxlblxuICAgICAgICAgICAgICAgICAgICB0aGVuIFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgU29tZSBzZWFyY2hlZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIG5vdCAoY29ycmVjdF9yZXN1bHQgPSByZXN1bHQpIHRoZW4gZmFpbHdpdGggXCJXcm9uZyByZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgKCp3aXRoIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aHMgXCJiaW5hcnlfc2VhcmNoIGJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgIChleG4sIGBsZW5ndGggbGVuZ3RoLCBgc2VhcmNoX2tleSBzZWFyY2hfa2V5LCBgcG9zIHBvcywgYGxlbiBsZW4pXG4gICAgICAgICAgICAgICAgICAgIDw6c2V4cF9vZjwgZXhuICogWyBgbGVuZ3RoIG9mIGludCBdICogWyBgc2VhcmNoX2tleSBvZiBpbnQgXVxuICAgICAgICAgICAgICAgICAgICogWyBgcG9zIG9mIGludCBdICogWyBgbGVuIG9mIGludCBdID4+KilcbiAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGEgPSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCAoRm9yX3Rlc3Qub2ZfYXJyYXkgYSlcblxuICAgICAgKCp0ZXN0IGZvciBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgeCA9IGlmIHggPSBiIHRoZW4gYFJpZ2h0IGVsc2UgYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDUwXzAwMFxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYFJpZ2h0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gTm9uZVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA5OV85OTlcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0IChNIDogQmluYXJ5X3NlYXJjaGFibGVfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBNLnRcbiAgICB0eXBlICdhIGVsdCA9IE0uZWx0XG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgZW5kKVxuXG5tb2R1bGUgVGVzdDEgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZTFfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBNLnRcbiAgICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gTS5Gb3JfdGVzdC5vZl9hcnJheVxuICAgICAgbGV0IGNvbXBhcmUgPSBCb29sLmNvbXBhcmVcbiAgICAgIGxldCBzbWFsbCA9IGZhbHNlXG4gICAgICBsZXQgYmlnID0gdHJ1ZVxuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gTS50XG4gICAgICB0eXBlIGVsdCA9IE0uZWx0XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTFfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGUxX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0MSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBNLnRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbmluY2x1ZGUgKFxuICBTdHJpbmcgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kKVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFN0ZGxpYi5GaWxlbmFtZVxuXG4gIGxldCBjaGVja19zdWZmaXggPSBjaGVja19zdWZmaXhcbiAgbGV0IGNob3BfZXh0ZW5zaW9uID0gY2hvcF9leHRlbnNpb25cbiAgbGV0IGNob3Bfc3VmZml4ID0gY2hvcF9zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IGNob3Bfc3VmZml4X29wdFxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gaXNfaW1wbGljaXRcbiAgbGV0IGlzX3JlbGF0aXZlID0gaXNfcmVsYXRpdmVcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IHBhcmVudF9kaXJfbmFtZVxuICBsZXQgZGlyX3NlcCA9IGRpcl9zZXBcbiAgbGV0IHF1b3RlID0gcXVvdGVcbiAgbGV0IHRlbXBfZGlyX25hbWUgPSBnZXRfdGVtcF9kaXJfbmFtZSAoKVxuICBsZXQgZGlybmFtZSA9IGRpcm5hbWVcbiAgbGV0IGJhc2VuYW1lID0gYmFzZW5hbWVcbmVuZFxuXG5sZXQgaXNfYWJzb2x1dGUgcCA9IG5vdCAoaXNfcmVsYXRpdmUgcClcblxubGV0IGNvbmNhdCBwMSBwMiA9XG4gIGlmIFN0cmluZy5pc19lbXB0eSBwMVxuICB0aGVuXG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJGaWxlbmFtZS5jb25jYXQgY2FsbGVkIHdpdGggYW4gZW1wdHkgc3RyaW5nIGFzIGl0cyBmaXJzdCBhcmd1bWVudCAoc2Vjb25kIFxcXG4gICAgICAgYXJndW1lbnQ6ICVzKVwiXG4gICAgICBwMlxuICAgICAgKCk7XG4gIGxldCByZWMgY29sbGFwc2VfdHJhaWxpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKFwiXCIsIChcIi5cIiB8IFwiXCIpKSAtPiBcIlwiXG4gICAgfCBTb21lIChzLCAoXCIuXCIgfCBcIlwiKSkgLT4gY29sbGFwc2VfdHJhaWxpbmcgc1xuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBzXG4gIGluXG4gIGxldCByZWMgY29sbGFwc2VfbGVhZGluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzIH5vbjonLycgd2l0aFxuICAgIHwgU29tZSAoKFwiLlwiIHwgXCJcIiksIHMpIC0+IGNvbGxhcHNlX2xlYWRpbmcgc1xuICAgIHwgU29tZSBfIHwgTm9uZSAtPiBzXG4gIGluXG4gIGNvbGxhcHNlX3RyYWlsaW5nIHAxIF4gXCIvXCIgXiBjb2xsYXBzZV9sZWFkaW5nIHAyXG47O1xuXG5sZXQgdG9fYWJzb2x1dGVfZXhuIHAgfnJlbGF0aXZlX3RvID1cbiAgaWYgaXNfcmVsYXRpdmUgcmVsYXRpdmVfdG9cbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUudG9fYWJzb2x1dGVfZXhuIGNhbGxlZCB3aXRoIGEgW3JlbGF0aXZlX3RvXSB0aGF0IGlzIGEgcmVsYXRpdmUgcGF0aDogJXNcIlxuICAgICAgcmVsYXRpdmVfdG9cbiAgICAgICgpXG4gIGVsc2UgaWYgaXNfYWJzb2x1dGUgcFxuICB0aGVuIHBcbiAgZWxzZSBjb25jYXQgcmVsYXRpdmVfdG8gcFxuOztcblxubGV0IHNwbGl0IHMgPSBkaXJuYW1lIHMsIGJhc2VuYW1lIHNcblxuKCogW21heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZV0gY29tZXMgZnJvbSBnZXRjb25mIF9QT1NJWF9OQU1FX01BWCAvICopXG5sZXQgbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplID0gMjU1XG5cbmxldCBpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQgcyA9XG4gIGxldCBtb2R1bGUgUyA9IFN0cmluZyBpblxuICBzIDw+IFwiLlwiXG4gICYmIHMgPD4gXCIuLlwiXG4gICYmIEludC4oMCA8IFMubGVuZ3RoIHMpXG4gICYmIEludC4oUy5sZW5ndGggcyA8PSBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUpXG4gICYmIChub3QgKFMuY29udGFpbnMgcyAnLycpKVxuICAmJiBub3QgKFMuY29udGFpbnMgcyAnXFwwMDAnKVxuOztcblxubGV0IHJvb3QgPSBcIi9cIlxuXG5sZXQgc3BsaXRfZXh0ZW5zaW9uIGZuID1cbiAgbGV0IGRpciwgZm4gPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLycgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBmblxuICAgIHwgU29tZSAocGF0aCwgZm4pIC0+IFNvbWUgcGF0aCwgZm5cbiAgaW5cbiAgbGV0IGZuLCBleHQgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLicgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBmbiwgTm9uZVxuICAgIHwgU29tZSAoYmFzZV9mbiwgZXh0KSAtPiBiYXNlX2ZuLCBTb21lIGV4dFxuICBpblxuICBsZXQgZm4gPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBOb25lIC0+IGZuXG4gICAgfCBTb21lIGRpciAtPiBkaXIgXiBcIi9cIiBeIGZuXG4gIGluXG4gIGZuLCBleHRcbjs7XG5cbmxldCBwYXJ0cyBmaWxlbmFtZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgZmlsZW5hbWUgPVxuICAgIG1hdGNoIHNwbGl0IGZpbGVuYW1lIHdpdGhcbiAgICB8IChcIi5cIiBhcyBiYXNlKSwgXCIuXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IChcIi9cIiBhcyBiYXNlKSwgXCIvXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IHJlc3QsIGRpciAtPiBsb29wIChkaXIgOjogYWNjKSByZXN0XG4gIGluXG4gIGxvb3AgW10gZmlsZW5hbWVcbjs7XG5cbmxldCBvZl9wYXJ0cyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJGaWxlbmFtZS5vZl9wYXJ0czogZW1wdHkgcGFydHMgbGlzdFwiXG4gIHwgcm9vdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OnJvb3QgfmY6U3RkbGliLkZpbGVuYW1lLmNvbmNhdFxuOztcblxubGV0IHJlYyBza2lwX2NvbW1vbl9wcmVmaXggbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiB3aGVuIFN0cmluZy5lcXVhbCBoMSBoMiAtPiBza2lwX2NvbW1vbl9wcmVmaXggdDEgdDJcbiAgfCBfIC0+IGwxLCBsMlxuOztcblxubGV0IG9mX2Fic29sdXRlX2V4biBhIH5yZWxhdGl2ZV90bzpiID1cbiAgaWYgaXNfcmVsYXRpdmUgYVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmlsZW5hbWUub2ZfYWJzb2x1dGVfZXhuOiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGhcIlxuICAgICAgICAgIH5maXJzdF9hcmc6KGEgOiBzdHJpbmcpXTtcbiAgaWYgaXNfcmVsYXRpdmUgYlxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmlsZW5hbWUub2ZfYWJzb2x1dGVfZXhuOiBbfnJlbGF0aXZlX3RvXSBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGhcIlxuICAgICAgICAgIH5yZWxhdGl2ZV90bzooYiA6IHN0cmluZyldO1xuICBsZXQgYV9wYXJ0cyA9IHBhcnRzIGEgaW5cbiAgbGV0IGJfcGFydHMgPSBwYXJ0cyBiIGluXG4gIGxldCBhX3N1ZmZpeCwgYl9zdWZmaXggPSBza2lwX2NvbW1vbl9wcmVmaXggYV9wYXJ0cyBiX3BhcnRzIGluXG4gIGxldCBnb191cCA9IExpc3QubWFwIH5mOihmdW4gXyAtPiBwYXJlbnRfZGlyX25hbWUpIGJfc3VmZml4IGluXG4gIG1hdGNoIGdvX3VwIEAgYV9zdWZmaXggd2l0aFxuICB8IFtdIC0+IGN1cnJlbnRfZGlyX25hbWVcbiAgfCByZWxwYXRoIC0+IG9mX3BhcnRzIHJlbHBhdGhcbjs7XG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IGNyZWF0ZV9hcmdfdHlwZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgb3Blbl90ZW1wX2ZpbGVfZmQgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCByZWFscGF0aCA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZGlyID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgdGVtcF9maWxlID0gYFVzZV9GaWxlbmFtZV91bml4XG4iLCJvcGVuISBCYXNlXG5pbmNsdWRlIFVuaXZfbWFwX2ludGZcbm1vZHVsZSBVaWQgPSBUeXBlX2VxdWFsLklkLlVpZFxuXG5tb2R1bGUgTWFrZTFcbiAgICAoS2V5IDogS2V5KSAoRGF0YSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgIHR5cGUgKCdzLCAnYSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICAoKiBBIHdyYXBwZXIgZm9yIHRoZSBbS2V5XSBtb2R1bGUgdGhhdCBhZGRzIGEgZHluYW1pYyBjaGVjayB0byBbS2V5LnR5cGVfaWRdLlxuXG4gICAgIEl0J3MgYSBidWcgaWYgdGhlIHVzZXItcHJvdmlkZWQgW0tleS50eXBlX2lkXSBnaXZlcyBkaWZmZXJlbnQgdHlwZSBpZHMgb24gZGlmZmVyZW50XG4gICAgIGNhbGxzLiAgQmVjYXVzZSB0aGlzIGNoZWNrIHNob3VsZCBiZSBmYWlybHkgY2hlYXAsIHdlIGRvIGl0IGR5bmFtaWNhbGx5IHRvIGF2b2lkXG4gICAgIHN1YnRsZXIgcHJvYmxlbXMgbGF0ZXIuXG5cbiAgICAgT2YgY291cnNlLCB3ZSdyZSBub3QgY2hlY2tpbmcgdHJ1bHkgcGF0aG9sb2dpY2FsIHRoaW5ncyBsaWtlIHRoZSBwcm92aWRlZFxuICAgICBbS2V5LnR5cGVfaWRdIG9ubHkgY2hhbmdlcyB0aGUgdmFsdWUgaXQgcmV0dXJucyBvbiBldmVyeSB0aGlyZCBjYWxsLi4uICopXG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBLZXkudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgKCogdGVzdC1mcmllbmRseSBzZXhwIGNvbnZlcnNpb24gKilcbiAgICBsZXQgc2V4cF9vZl90eXBlX2lkIHR5cGVfaWQgPVxuICAgICAgWyVzZXhwXG4gICAgICAgIHsgbmFtZSA9IChUeXBlX2VxdWFsLklkLm5hbWUgdHlwZV9pZCA6IHN0cmluZylcbiAgICAgICAgOyB1aWQgPVxuICAgICAgICAgICAgKGlmIFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZ1xuICAgICAgICAgICAgIHRoZW4gU2V4cC5BdG9tIFwiPHVpZD5cIlxuICAgICAgICAgICAgIGVsc2UgVHlwZV9lcXVhbC5JZC5VaWQuc2V4cF9vZl90IChUeXBlX2VxdWFsLklkLnVpZCB0eXBlX2lkKVxuICAgICAgICAgICAgICAgICAgOiBTZXhwLnQpXG4gICAgICAgIH1dXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkIGtleSA9XG4gICAgICBsZXQgdHlwZV9pZDEgPSBLZXkudHlwZV9pZCBrZXkgaW5cbiAgICAgIGxldCB0eXBlX2lkMiA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgaWYgVHlwZV9lcXVhbC5JZC5zYW1lIHR5cGVfaWQxIHR5cGVfaWQyXG4gICAgICB0aGVuIHR5cGVfaWQxXG4gICAgICBlbHNlXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW0tleS50eXBlX2lkXSBtdXN0IG5vdCBwcm92aWRlIGRpZmZlcmVudCB0eXBlIGlkcyB3aGVuIGNhbGxlZCBvbiB0aGUgc2FtZSBcXFxuICAgICAgICAgICAgIGlucHV0XCJcbiAgICAgICAgICAgICAgKGtleSA6IF8gS2V5LnQpXG4gICAgICAgICAgICAgICh0eXBlX2lkMSA6IHR5cGVfaWQpXG4gICAgICAgICAgICAgICh0eXBlX2lkMiA6IHR5cGVfaWQpXVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgKCdzLCAnYSkgZGF0YSA9ICgncywgJ2EpIERhdGEudFxuXG4gIGxldCBuYW1lX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLm5hbWUgKEtleS50eXBlX2lkIGtleSlcbiAgbGV0IHVpZF9vZl9rZXkga2V5ID0gVHlwZV9lcXVhbC5JZC51aWQgKEtleS50eXBlX2lkIGtleSlcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAncyB0ID0gVCA6ICdhIEtleS50ICogKCdzLCAnYSkgRGF0YS50IC0+ICdzIHRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIChUIChrZXksIGRhdGEpKSA9XG4gICAgICBEYXRhLnNleHBfb2ZfdCBzZXhwX29mX2EgKFR5cGVfZXF1YWwuSWQudG9fc2V4cCAoS2V5LnR5cGVfaWQga2V5KSkgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZV9pZF9uYW1lIChUIChrZXksIF8pKSA9IG5hbWVfb2Zfa2V5IGtleVxuICAgIGxldCB0eXBlX2lkX3VpZCAoVCAoa2V5LCBfKSkgPSB1aWRfb2Zfa2V5IGtleVxuXG4gICAgbGV0IGNvbXBhcmUgdDEgdDIgPVxuICAgICAgbGV0IGMgPSBTdHJpbmcuY29tcGFyZSAodHlwZV9pZF9uYW1lIHQxKSAodHlwZV9pZF9uYW1lIHQyKSBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIFVpZC5jb21wYXJlICh0eXBlX2lkX3VpZCB0MSkgKHR5cGVfaWRfdWlkIHQyKVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ3MgdCA9ICdzIFBhY2tlZC50IE1hcC5NKFVpZCkudFxuXG4gIGxldCB0b19hbGlzdCB0ID0gTWFwLmRhdGEgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6UGFja2VkLmNvbXBhcmVcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICB0b19hbGlzdCB0XG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBwYWNrZWQgLT4gUGFja2VkLnR5cGVfaWRfbmFtZSBwYWNrZWQsIHBhY2tlZClcbiAgICB8PiBbJXNleHBfb2Y6IChzdHJpbmcgKiBhIFBhY2tlZC50KSBsaXN0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgKHQgOiBfIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgTWFwLml0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGFzc2VydCAoVWlkLmVxdWFsIGtleSAoUGFja2VkLnR5cGVfaWRfdWlkIGRhdGEpKSkpXG4gIDs7XG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPSBNYXAuc2V0IHQgfmtleToodWlkX29mX2tleSBrZXkpIH5kYXRhOihQYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgbGV0IG1lbV9ieV9pZCB0IGlkID0gTWFwLm1lbSB0IGlkXG4gIGxldCBtZW0gdCBrZXkgPSBtZW1fYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCByZW1vdmVfYnlfaWQgdCBpZCA9IE1hcC5yZW1vdmUgdCBpZFxuICBsZXQgcmVtb3ZlIHQga2V5ID0gcmVtb3ZlX2J5X2lkIHQgKHVpZF9vZl9rZXkga2V5KVxuICBsZXQgZW1wdHkgPSBNYXAuZW1wdHkgKG1vZHVsZSBVaWQpXG5cbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9XG4gICAgTWFwLnNpbmdsZXRvbiAobW9kdWxlIFVpZCkgKHVpZF9vZl9rZXkga2V5KSAoUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5ID0gTWFwLmlzX2VtcHR5XG5cbiAgbGV0IGZpbmQgKHR5cGUgYikgdCAoa2V5IDogYiBLZXkudCkgPVxuICAgIG1hdGNoIE1hcC5maW5kIHQgKHVpZF9vZl9rZXkga2V5KSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKFBhY2tlZC5UIChrZXknLCB2YWx1ZSkpIC0+XG4gICAgICAoKiBjYW5ub3QgcmFpc2UgLS0gc2VlIFtpbnZhcmlhbnRdICopXG4gICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBrZXkpIChLZXkudHlwZV9pZCBrZXknKVxuICAgICAgaW5cbiAgICAgIFNvbWUgKHZhbHVlIDogKF8sIGIpIERhdGEudClcbiAgOztcblxuICBsZXQgZmluZF9leG4gdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT4gUHJpbnRmLmZhaWx3aXRoZiBcIlVuaXZfbWFwLmZpbmRfZXhuIG9uIHVua25vd24ga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9IGlmIG1lbSB0IGtleSB0aGVuIGBEdXBsaWNhdGUgZWxzZSBgT2sgKHNldCB0IH5rZXkgfmRhdGEpXG5cbiAgbGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICB8IGBPayB0IC0+IHRcbiAgICB8IGBEdXBsaWNhdGUgLT5cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCJVbml2X21hcC5hZGRfZXhuIG9uIGV4aXN0aW5nIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZV9leG4gdCBrZXkgfmY6dXBkYXRlID1cbiAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICB8IFNvbWUgZGF0YSAtPiBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgZGF0YSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIFByaW50Zi5mYWlsd2l0aGYgXCJVbml2X21hcC5jaGFuZ2VfZXhuIG9uIHVua25vd24ga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbGV0IG9yaWcgPSBmaW5kIHQga2V5IGluXG4gICAgbGV0IG5leHQgPSB1cGRhdGUgb3JpZyBpblxuICAgIG1hdGNoIG5leHQgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICB8IE5vbmUgLT4gaWYgT3B0aW9uLmlzX25vbmUgb3JpZyB0aGVuIHQgZWxzZSByZW1vdmUgdCBrZXlcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID0gY2hhbmdlIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgTWFwLm9mX2FsaXN0X2V4biAobW9kdWxlIFVpZCkgKExpc3QubWFwIHQgfmY6KGZ1biBwIC0+IFBhY2tlZC50eXBlX2lkX3VpZCBwLCBwKSlcbiAgOztcblxuICBsZXQgdHlwZV9lcXVhbCA6ICgncyB0LCAncyBQYWNrZWQudCBNYXAuTShUeXBlX2VxdWFsLklkLlVpZCkudCkgVHlwZV9lcXVhbC50ID0gVFxuZW5kXG5cbm1vZHVsZSBNYWtlXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIE0gPVxuICAgIE1ha2UxXG4gICAgICAoS2V5KVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIChfLCAnYSkgdCA9ICdhIERhdGEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgICAgZW5kKVxuXG4gIHR5cGUgdCA9IHVuaXQgTS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbW9kdWxlIEtleSA9IEtleVxuXG4gIHR5cGUgJ2EgZGF0YSA9ICdhIERhdGEudFxuXG4gIGxldCBpbnZhcmlhbnQgPSBNLmludmFyaWFudFxuICBsZXQgZW1wdHkgPSBNLmVtcHR5XG4gIGxldCBzaW5nbGV0b24gPSBNLnNpbmdsZXRvblxuICBsZXQgaXNfZW1wdHkgPSBNLmlzX2VtcHR5XG4gIGxldCBzZXQgPSBNLnNldFxuICBsZXQgbWVtID0gTS5tZW1cbiAgbGV0IG1lbV9ieV9pZCA9IE0ubWVtX2J5X2lkXG4gIGxldCBmaW5kID0gTS5maW5kXG4gIGxldCBmaW5kX2V4biA9IE0uZmluZF9leG5cbiAgbGV0IGFkZCA9IE0uYWRkXG4gIGxldCBhZGRfZXhuID0gTS5hZGRfZXhuXG4gIGxldCBjaGFuZ2UgPSBNLmNoYW5nZVxuICBsZXQgY2hhbmdlX2V4biA9IE0uY2hhbmdlX2V4blxuICBsZXQgdXBkYXRlID0gTS51cGRhdGVcbiAgbGV0IHJlbW92ZSA9IE0ucmVtb3ZlXG4gIGxldCByZW1vdmVfYnlfaWQgPSBNLnJlbW92ZV9ieV9pZFxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQxID0gJ3MgTS5QYWNrZWQudCA9IFQgOiAnYSBLZXkudCAqICdhIERhdGEudCAtPiAncyB0MVxuICAgIHR5cGUgdCA9IHVuaXQgdDFcbiAgZW5kXG5cbiAgbGV0IHRvX2FsaXN0ID0gTS50b19hbGlzdFxuICBsZXQgb2ZfYWxpc3RfZXhuID0gTS5vZl9hbGlzdF9leG5cbiAgbGV0IHR5cGVfZXF1YWwgOiAodCwgUGFja2VkLnQgTWFwLk0oVHlwZV9lcXVhbC5JZC5VaWQpLnQpIFR5cGVfZXF1YWwudCA9IFRcbmVuZFxuXG5tb2R1bGUgTWVyZ2UgKEtleSA6IEtleSkgKElucHV0MV9kYXRhIDogRGF0YSkgKElucHV0Ml9kYXRhIDogRGF0YSkgKE91dHB1dF9kYXRhIDogRGF0YSkgPVxuc3RydWN0XG4gIHR5cGUgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgJ2EgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgJ2EgSW5wdXQxX2RhdGEudCAqICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAnYSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlICh0MSA6IE1ha2UoS2V5KShJbnB1dDFfZGF0YSkudCkgKHQyIDogTWFrZShLZXkpKElucHV0Ml9kYXRhKS50KSB+Zjp7IGYgfVxuICAgIDogTWFrZShLZXkpKE91dHB1dF9kYXRhKS50XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1lcmdlMVxuICAgIChLZXkgOiBLZXkpXG4gICAgKElucHV0MV9kYXRhIDogRGF0YTEpXG4gICAgKElucHV0Ml9kYXRhIDogRGF0YTEpXG4gICAgKE91dHB1dF9kYXRhIDogRGF0YTEpID1cbnN0cnVjdFxuICB0eXBlICgnczEsICdzMiwgJ3MzKSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50ICogKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAoJ3MzLCAnYSkgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UxIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgKHR5cGUgczEgczIpXG4gICAgICAgICh0MSA6IHMxIE1ha2UxKEtleSkoSW5wdXQxX2RhdGEpLnQpXG4gICAgICAgICh0MiA6IHMyIE1ha2UxKEtleSkoSW5wdXQyX2RhdGEpLnQpXG4gICAgICAgIH5mOnsgZiB9XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUeXBlX2lkX2tleSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBUeXBlX2VxdWFsLklkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdHlwZV9pZCA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSAoXG4gIE1ha2VcbiAgICAoVHlwZV9pZF9rZXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmQpIDpcbiAgICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgYW5kIG1vZHVsZSBLZXkgOj0gVHlwZV9pZF9rZXkpXG5cbm1vZHVsZSBLZXkgPSBUeXBlX2VxdWFsLklkXG5cbm1vZHVsZSBXaXRoX2RlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGtleSA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBkZWZhdWx0IDogJ2FcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmRlZmF1bHQgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGRlZmF1bHQ7IGtleSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBkZWZhdWx0IH0gPSBPcHRpb24udmFsdWUgfmRlZmF1bHQgKGZpbmQgdCBrZXkpXG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZGVmYXVsdCA9IF8gfSB+ZGF0YSA9IHNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPSBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgKGZpbmQgdCBrZXkpKVxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZvbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB7IGtleSA6ICdiIFdpdGhfZGVmYXVsdC5LZXkudFxuICAgICAgOyBmIDogJ2IgLT4gJ2EgLT4gJ2JcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmluaXQgfmYgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGY7IGtleSA9IFdpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OmluaXQgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gV2l0aF9kZWZhdWx0LktleS5pZCB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZiA9IF8gfSA9IFdpdGhfZGVmYXVsdC5maW5kIHQga2V5XG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZiA9IF8gfSB+ZGF0YSA9IFdpdGhfZGVmYXVsdC5zZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCB7IEtleS5rZXk7IGYgPSBfIH0gfmY6dXBkYXRlID0gV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+Zjp1cGRhdGVcblxuICBsZXQgYWRkIHQgfmtleTp7IEtleS5rZXk7IGYgfSB+ZGF0YSA9XG4gICAgV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+ZjooZnVuIGFjYyAtPiBmIGFjYyBkYXRhKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuICBvcGVuIFdpdGhfZm9sZFxuXG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsICdhIGxpc3QpIEtleS50XG5cbiAgICBsZXQgY3JlYXRlIH5uYW1lIHNleHBfb2YgPVxuICAgICAgS2V5LmNyZWF0ZSB+aW5pdDpbXSB+ZjooZnVuIHhzIHggLT4geCA6OiB4cykgfm5hbWUgKExpc3Quc2V4cF9vZl90IHNleHBfb2YpXG4gICAgOztcblxuICAgIGxldCBpZCA9IFdpdGhfZm9sZC5LZXkuaWRcbiAgZW5kXG5cbiAgbGV0IHNldCA9IHNldFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG5lbmRcbiIsImluY2x1ZGUgc3RydWN0XG4gIG9wZW4gU3RkaW9cblxuICBsZXQgZXByaW50ZiA9IGVwcmludGZcbiAgbGV0IHByaW50ZiA9IHByaW50ZlxuICBsZXQgcHJpbnRfcyA9IHByaW50X3NcbiAgbGV0IHByaW50X3N0cmluZyA9IHByaW50X3N0cmluZ1xuICBsZXQgcHJpbnRfZW5kbGluZSA9IHByaW50X2VuZGxpbmVcbiAgbGV0IHByZXJyX2VuZGxpbmUgPSBwcmVycl9lbmRsaW5lXG5cbiAgbW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5lbmRcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBCYXNlLlByaW50ZlxuXG4gIGxldCBzcHJpbnRmID0gc3ByaW50ZlxuICBsZXQgZmFpbHdpdGhmID0gZmFpbHdpdGhmXG4gIGxldCBrc3ByaW50ZiA9IGtzcHJpbnRmXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIXG4gIHwgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQXG4gIHwgQ09NUF9DV09SRFxuW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwX29mXVxuXG5sZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHQpXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG4gIG9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbiAgb3BlbiBQcHhfc3RhYmxlX3dpdG5lc3NfcnVudGltZS5TdGFibGVfd2l0bmVzcy5FeHBvcnRcblxuICBtb2R1bGUgTGF6eSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdCBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBjb21wYXJlID0gQmFzZS5MYXp5LmNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIEFub25zID0gc3RydWN0XG4gICAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHwgWmVyb1xuICAgICAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgICAgIHwgTWFueSBvZiB0XG4gICAgICAgICAgfCBNYXliZSBvZiB0XG4gICAgICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGxldCByZWMgaW52YXJpYW50IHQgPVxuICAgICAgICAgIEJhc2UuSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgWmVybyAtPiAoKVxuICAgICAgICAgICAgfCBPbmUgXyAtPiAoKVxuICAgICAgICAgICAgfCBNYW55IFplcm8gLT4gZmFpbHdpdGggXCJNYW55IFplcm8gc2hvdWxkIGJlIGp1c3QgWmVyb1wiXG4gICAgICAgICAgICB8IE1hbnkgdCAtPiBpbnZhcmlhbnQgdFxuICAgICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiTWF5YmUgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWF5YmUgdCAtPiBpbnZhcmlhbnQgdFxuICAgICAgICAgICAgfCBDb25jYXQgW10gfCBDb25jYXQgWyBfIF0gLT4gZmFpbHdpdGggXCJGbGF0dGVuIHplcm8gYW5kIG9uZS1lbGVtZW50IENvbmNhdFwiXG4gICAgICAgICAgICB8IENvbmNhdCB0cyAtPiBCYXNlLkxpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnRcbiAgICAgICAgICAgIHwgQWRfaG9jIF8gLT4gKCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgdCA9IFslb2Zfc2V4cDogdF0gc2V4cCBpblxuICAgICAgICAgIGludmFyaWFudCB0O1xuICAgICAgICAgIHRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIHVzYWdlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbXBvcnQgaW5cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgWmVybyAtPiBcIlwiXG4gICAgICAgICAgfCBPbmUgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1hbnkgKE9uZSBfIGFzIHQpIC0+IHNwcmludGYgXCJbJXMgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWFueSB0IC0+IHNwcmludGYgXCJbKCVzKSAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWF5YmUgdCAtPiBzcHJpbnRmIFwiWyVzXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChCYXNlLkxpc3QubWFwIHRzIH5mOnVzYWdlKVxuICAgICAgICAgIHwgQWRfaG9jIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMVxuICBlbmRcblxuICBtb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgYW5vbnMgOiBBbm9ucy5WMi50XG4gICAgICAgIDsgZmxhZ3MgOiBGbGFnX2luZm8uVjEudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB1c2FnZSA6IHN0cmluZ1xuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgdXNhZ2U7IGZsYWdzIH0gPVxuICAgICAgICB7IFYyLnN1bW1hcnk7IHJlYWRtZTsgYW5vbnMgPSBVc2FnZSB1c2FnZTsgZmxhZ3MgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2xhdGVzdCB7IFYyLnN1bW1hcnk7IHJlYWRtZTsgYW5vbnM7IGZsYWdzIH0gPVxuICAgICAgICB7IHN1bW1hcnlcbiAgICAgICAgOyByZWFkbWVcbiAgICAgICAgOyB1c2FnZSA9XG4gICAgICAgICAgICAobWF0Y2ggYW5vbnMgd2l0aFxuICAgICAgICAgICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgICAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBBbm9ucy5HcmFtbWFyLlYxLnVzYWdlIGdyYW1tYXIpXG4gICAgICAgIDsgZmxhZ3NcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYyXG4gIGVuZFxuXG4gIG1vZHVsZSBHcm91cF9pbmZvID0gc3RydWN0XG4gICAgdHlwZSBhID0gRHVtbXlfdHlwZV9iZWNhdXNlX3dlX2Nhbm5vdF9kaWdlc3RfdHlwZV9jb25zdHJ1Y3RvcnNfb25seV9jb25jcmV0ZV90eXBlc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0IExhenkudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgb3BlbiEgQmFzZVxuXG4gICAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgICB7IHQgd2l0aCBzdWJjb21tYW5kcyA9IExhenkubWFwIHQuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mKSB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHN1YmNvbW1hbmRzIDogKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9IHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgdC5zdWJjb21tYW5kcyB+ZiB9XG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzIH0gOiAnYSBNb2RlbC50ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mcm9tX3ZhbCBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0ICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQpIDogJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyA9IExhenkuZm9yY2Ugc3ViY29tbWFuZHMgfVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4ZWNfaW5mbyA9IHN0cnVjdFxuICAgIGxldCBhYnNfcGF0aCB+ZGlyIHBhdGggPVxuICAgICAgaWYgRmlsZW5hbWVfYmFzZS5pc19hYnNvbHV0ZSBwYXRoIHRoZW4gcGF0aCBlbHNlIEZpbGVuYW1lX2Jhc2UuY29uY2F0IGRpciBwYXRoXG4gICAgOztcblxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjNcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b192MyB0IDogVjMudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA9IFtdXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl92MyAodCA6IFYzLnQpID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IGFic19wYXRoIH5kaXI6dC53b3JraW5nX2RpciB0LnBhdGhfdG9fZXhlXG4gICAgICAgIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2UgVjMudG9fbGF0ZXN0IHRvX3YzXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5jb21wb3NlIG9mX3YzIFYzLm9mX2xhdGVzdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgKCogW3BhdGhfdG9fZXhlXSBtdXN0IGJlIGFic29sdXRlLiAqKVxuICAgICAgICAgIHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgdG9fdjIgdCA6IFYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gXCIvXCJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YyICh0IDogVjIudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEJhc2UuRm4uY29tcG9zZSBWMi50b19sYXRlc3QgdG9fdjJcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBCYXNlLkZuLmNvbXBvc2Ugb2ZfdjIgVjIub2ZfbGF0ZXN0XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzaWMgb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnQgKiB0XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50XG4gICAgICAgIHwgTGF6eSBvZiB0IExhenkudFxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgPSBCYXNlLkZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gQmFzZS5Gbi5pZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjNcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYxLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMi50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHJlYyB0b19sYXRlc3QgOiB0IC0+IE1vZGVsLnQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgYlxuICAgICAgICB8IEV4ZWMgZSAtPiBFeGVjIChFeGVjX2luZm8uVjIub2ZfbGF0ZXN0IGUpXG4gICAgICAgIHwgTGF6eSB0aHVuayAtPiBvZl9sYXRlc3QgKEJhc2UuTGF6eS5mb3JjZSB0aHVuaylcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLm1hcCAoR3JvdXBfaW5mby5WMS5vZl9sYXRlc3QgZykgfmY6b2ZfbGF0ZXN0KVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMS50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYxLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHJlYyB0b19sYXRlc3QgOiB0IC0+IE1vZGVsLnQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIChCYXNlX2luZm8uVjEudG9fbGF0ZXN0IGIpXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMS50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIChCYXNlX2luZm8uVjEub2ZfbGF0ZXN0IGIpXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMS5vZl9sYXRlc3QgZSlcbiAgICAgICAgfCBMYXp5IHRodW5rIC0+IG9mX2xhdGVzdCAoQmFzZS5MYXp5LmZvcmNlIHRodW5rKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEubWFwIChHcm91cF9pbmZvLlYxLm9mX2xhdGVzdCBnKSB+ZjpvZl9sYXRlc3QpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFZlcnNpb25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBWMSBvZiBWMS50XG4gICAgICAgIHwgVjIgb2YgVjIudFxuICAgICAgICB8IFYzIG9mIFYzLnQgKCogYXZhaWxhYmxlIGF0IGxlYXN0IHNpbmNlIDIwMjAtMDQgKilcbiAgICAgIFtAQGRlcml2aW5nIHNleHAsIHZhcmlhbnRzLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVjEgdCAtPiBWMS50b19sYXRlc3QgdFxuICAgICAgICB8IFYyIHQgLT4gVjIudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMyB0IC0+IFYzLnRvX2xhdGVzdCB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IH52ZXJzaW9uX3RvX3VzZSBsYXRlc3QgPVxuICAgICAgICBtYXRjaCB2ZXJzaW9uX3RvX3VzZSB3aXRoXG4gICAgICAgIHwgMSAtPiBWMSAoVjEub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAyIC0+IFYyIChWMi5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDMgLT4gVjMgKFYzLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgb3RoZXIgLT5cbiAgICAgICAgICBCYXNlLkVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJ1bnN1cHBvcnRlZCB2ZXJzaW9uX3RvX3VzZVwiXG4gICAgICAgICAgICBvdGhlclxuICAgICAgICAgICAgWyVzZXhwX29mOiBpbnRdXG4gICAgICAgICAgfD4gQmFzZS5FcnJvci5yYWlzZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiEgQmFzZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBpbnZhcmlhbnQgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC5pbnZhcmlhbnRcbiAgICBsZXQgdXNhZ2UgPSBTdGFibGUuQW5vbnMuR3JhbW1hci5Nb2RlbC51c2FnZVxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuQW5vbnMuTW9kZWwudCA9XG4gICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICB8IEdyYW1tYXIgb2YgR3JhbW1hci50XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIE51bV9vY2N1cnJlbmNlcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYXRfbGVhc3Rfb25jZSA6IGJvb2xcbiAgICA7IGF0X21vc3Rfb25jZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBtYXliZV9taXNzaW5nX3ByZWZpeCA9IFwiW1wiXG4gIGxldCBtYXliZV9taXNzaW5nX3N1ZmZpeCA9IFwiXVwiXG4gIGxldCBtYXliZV9tb3JlX3N1ZmZpeCA9IFwiIC4uLlwiXG5cbiAgbGV0IHRvX2hlbHBfc3RyaW5nIHQgfmZsYWdfbmFtZSA9XG4gICAgbGV0IHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0gPSB0IGluXG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIGlmIGF0X2xlYXN0X29uY2VcbiAgICAgIHRoZW4gZmxhZ19uYW1lXG4gICAgICBlbHNlIFN0cmluZy5jb25jYXQgWyBtYXliZV9taXNzaW5nX3ByZWZpeDsgZmxhZ19uYW1lOyBtYXliZV9taXNzaW5nX3N1ZmZpeCBdXG4gICAgaW5cbiAgICBpZiBhdF9tb3N0X29uY2UgdGhlbiBkZXNjcmlwdGlvbiBlbHNlIFN0cmluZy5jb25jYXQgWyBkZXNjcmlwdGlvbjsgbWF5YmVfbW9yZV9zdWZmaXggXVxuICA7O1xuXG4gIGxldCBvZl9oZWxwX3N0cmluZyBuYW1lID1cbiAgICBsZXQgYXRfbW9zdF9vbmNlLCBuYW1lID1cbiAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBuYW1lIH5zdWZmaXg6bWF5YmVfbW9yZV9zdWZmaXggd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWUsIG5hbWVcbiAgICAgIHwgU29tZSBuYW1lIC0+IGZhbHNlLCBuYW1lXG4gICAgaW5cbiAgICBsZXQgYXRfbGVhc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaFxuICAgICAgICBTdHJpbmcuY2hvcF9wcmVmaXggbmFtZSB+cHJlZml4Om1heWJlX21pc3NpbmdfcHJlZml4XG4gICAgICAgIHw+IE9wdGlvbi5iaW5kIH5mOihTdHJpbmcuY2hvcF9zdWZmaXggfnN1ZmZpeDptYXliZV9taXNzaW5nX3N1ZmZpeClcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgfSwgbmFtZVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcInRvX2hlbHBfc3RyaW5nXCIgPVxuICAgIGxldCBmbGFnX25hbWUgPSBcIm5hbWVcIiBpblxuICAgIExpc3QuaXRlciBbJWFsbDogdF0gfmY6KGZ1biB0IC0+XG4gICAgICBsZXQgcyA9IHRvX2hlbHBfc3RyaW5nIHQgfmZsYWdfbmFtZSBpblxuICAgICAgcHJpbnRfcyBbJW1lc3NhZ2UgXCJcIiB+XzoodCA6IHQpIHNdO1xuICAgICAgbGV0IHQnLCBmbGFnX25hbWUnID0gb2ZfaGVscF9zdHJpbmcgcyBpblxuICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHRdIHQgdCcpO1xuICAgICAgYXNzZXJ0IChbJWNvbXBhcmUuZXF1YWw6IHN0cmluZ10gZmxhZ19uYW1lIGZsYWdfbmFtZScpKTtcbiAgICBbJWV4cGVjdFxuICAgICAge3xcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSBmYWxzZSkgKGF0X21vc3Rfb25jZSBmYWxzZSkpIFwiW25hbWVdIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIHRydWUpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIm5hbWUgLi4uXCIpXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgdHJ1ZSkpIFtuYW1lXSlcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBuYW1lKSB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRmxhZ19pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5GbGFnX2luZm8uTW9kZWwudCA9XG4gICAgeyBuYW1lIDogc3RyaW5nXG4gICAgOyBkb2MgOiBzdHJpbmdcbiAgICA7IGFsaWFzZXMgOiBzdHJpbmcgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBwYXJzZV9uYW1lIHQgPVxuICAgIGxldCBudW1fb2NjdXJyZW5jZXMsIGZsYWdfbmFtZSA9IE51bV9vY2N1cnJlbmNlcy5vZl9oZWxwX3N0cmluZyB0Lm5hbWUgaW5cbiAgICBtYXRjaCBTdHJpbmcuc3BsaXQgZmxhZ19uYW1lIH5vbjonICcgd2l0aFxuICAgIHwgWyBmbGFnX25hbWUgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCBmYWxzZSwgZmxhZ19uYW1lKVxuICAgIHwgWyBmbGFnX25hbWU7IF9hcmdfZG9jIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgdHJ1ZSwgZmxhZ19uYW1lKVxuICAgIHwgXyAtPiBFcnJvciAoRXJyb3IuY3JlYXRlX3MgWyVtZXNzYWdlIFwiVW5hYmxlIHRvIHBhcnNlXCIgZmxhZ19uYW1lXSlcbiAgOztcblxuICAoKiBVc2VycyBhcmUgbGlrZWx5IHRvIGNhbGwgYWxsIHRocmVlIG9mIHRoZXNlIGZ1bmN0aW9ucywgaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIHJlLXBhcnNlXG4gICAgIHRoZSBbbmFtZV0gc2V2ZXJhbCB0aW1lcy4gV2UgZG9uJ3QgZXhwZWN0IHVzZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucyB0byBjYXJlIGFib3V0IHRoZVxuICAgICBpbmVmZmljaWVuY3kuICopXG4gIGxldCBmbGFnX25hbWUgdCA9XG4gICAgcGFyc2VfbmFtZSB0XG4gICAgfD4gT3JfZXJyb3IubWFwIH5mOihmdW4gKChfIDogTnVtX29jY3VycmVuY2VzLnQpLCAoXyA6IGJvb2wpLCBmbGFnX25hbWUpIC0+IGZsYWdfbmFtZSlcbiAgOztcblxuICBsZXQgbnVtX29jY3VycmVuY2VzIHQgPVxuICAgIHBhcnNlX25hbWUgdFxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuIChudW1fb2NjdXJyZW5jZXMsIChfIDogYm9vbCksIChfIDogc3RyaW5nKSkgLT5cbiAgICAgIG51bV9vY2N1cnJlbmNlcylcbiAgOztcblxuICBsZXQgcmVxdWlyZXNfYXJnIHQgPVxuICAgIHBhcnNlX25hbWUgdFxuICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjooZnVuICgoXyA6IE51bV9vY2N1cnJlbmNlcy50KSwgcmVxdWlyZXNfYXJnLCAoXyA6IHN0cmluZykpIC0+XG4gICAgICByZXF1aXJlc19hcmcpXG4gIDs7XG5cbiAgbGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFwiWy1oZWxwXVwiIC0+IC0xXG4gICAgfCBcIlstaGVscF1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstdmVyc2lvbl1cIiAtPiAtMVxuICAgIHwgXCJbLXZlcnNpb25dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLWJ1aWxkLWluZm9dXCIgLT4gLTFcbiAgICB8IFwiWy1idWlsZC1pbmZvXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiaGVscFwiIC0+IC0xXG4gICAgfCBcImhlbHBcIiwgXyAtPiAxXG4gICAgfCBfLCBcInZlcnNpb25cIiAtPiAtMVxuICAgIHwgXCJ2ZXJzaW9uXCIsIF8gLT4gMVxuICAgIHwgXyAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaGVscF9kaXNwbGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IEZsYWdfaW5mby50IGxpc3RcblxuICBsZXQgc29ydCB0ID1cbiAgICBMaXN0LnN0YWJsZV9zb3J0IHQgfmNvbXBhcmU6KGZ1biBhIGIgLT5cbiAgICAgIEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlIGEuRmxhZ19pbmZvLm5hbWUgYi5GbGFnX2luZm8ubmFtZSlcbiAgOztcblxuICBsZXQgd29yZF93cmFwX2FuZF9zdHJpcCB0ZXh0IHdpZHRoID1cbiAgICBsZXQgY2h1bmtzID0gU3RyaW5nLnNwbGl0IHRleHQgfm9uOidcXG4nIGluXG4gICAgTGlzdC5jb25jYXRfbWFwIGNodW5rcyB+ZjooZnVuIHRleHQgLT5cbiAgICAgIGxldCB3b3JkcyA9XG4gICAgICAgIFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonICdcbiAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biB3b3JkIC0+IG5vdCAoU3RyaW5nLmlzX2VtcHR5IHdvcmQpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIExpc3QuZm9sZCB3b3JkcyB+aW5pdDpOb25lIH5mOihmdW4gYWNjIHdvcmQgLT5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAobWF0Y2ggYWNjIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gW10sIHdvcmRcbiAgICAgICAgICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPlxuICAgICAgICAgICAgICAgKCogZWZmaWNpZW5jeSBpcyBub3QgYSBjb25jZXJuIGZvciB0aGUgc3RyaW5nIGxlbmd0aHMgd2UgZXhwZWN0ICopXG4gICAgICAgICAgICAgICBsZXQgbGluZV9hbmRfd29yZCA9IGxpbmUgXiBcIiBcIiBeIHdvcmQgaW5cbiAgICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggbGluZV9hbmRfd29yZCA8PSB3aWR0aFxuICAgICAgICAgICAgICAgdGhlbiBsaW5lcywgbGluZV9hbmRfd29yZFxuICAgICAgICAgICAgICAgZWxzZSBsaW5lIDo6IGxpbmVzLCB3b3JkKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT4gTGlzdC5yZXYgKGxpbmUgOjogbGluZXMpKVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwbGF5IDogc2lnXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBudW1fY29scyA9IDgwXG4gICAgbGV0IHNwYWNlc19zdHJpbmcgd2lkdGggPSBTdHJpbmcubWFrZSB3aWR0aCAnICdcblxuICAgIGxldCBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB4IH53aWR0aCA9XG4gICAgICBsZXQgc2xhY2sgPSB3aWR0aCAtIFN0cmluZy5sZW5ndGggeCBpblxuICAgICAgeCBeIHNwYWNlc19zdHJpbmcgc2xhY2tcbiAgICA7O1xuXG4gICAgbGV0IGluZGVudGF0aW9uID0gXCIgIFwiXG4gICAgbGV0IGluZGVudF9hbmRfbmV3bGluZSB4ID0gTGlzdC5jb25jYXQgWyBbIGluZGVudGF0aW9uIF07IHg7IFsgXCJcXG5cIiBdIF1cbiAgICBsZXQgc3BhY2luZ19kb3QgPSBcIi4gXCJcblxuICAgIGxldCBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ID1cbiAgICAgIDI3XG4gICAgOztcblxuICAgIGxldCBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtbiA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc193aWR0aCA9IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uXG4gICAgbGV0IGxoc19wYWRfd2lkdGggPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfcGFkID0gc3BhY2VzX3N0cmluZyBsaHNfcGFkX3dpZHRoXG5cbiAgICBsZXQgbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgPVxuICAgICAgTGlzdC5tYXAgfmY6KGZ1biB2IC0+IGluZGVudF9hbmRfbmV3bGluZSBbIGxoc19wYWQ7IHYgXSlcbiAgICA7O1xuXG4gICAgbGV0IHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBkb2N1bWVudGF0aW9uID1cbiAgICAgIGxldCBmbGFnX29uX2l0c19vd25fbGluZSA9XG4gICAgICAgIGxldCBmbGFnX3dpZHRoID1cbiAgICAgICAgICBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uICsgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgIGluXG4gICAgICAgIGlmIGZsYWdfd2lkdGggPj0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggc3BhY2luZ19kb3RcbiAgICAgICAgdGhlbiBpbmRlbnRfYW5kX25ld2xpbmUgWyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgbGV0IHdyYXBwZWRfZG9jdW1lbnRhdGlvbiA9XG4gICAgICAgIHdvcmRfd3JhcF9hbmRfc3RyaXBcbiAgICAgICAgICBkb2N1bWVudGF0aW9uXG4gICAgICAgICAgKG51bV9jb2xzIC0gbGhzX3dpZHRoIC0gU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbilcbiAgICAgIGluXG4gICAgICBtYXRjaCB3cmFwcGVkX2RvY3VtZW50YXRpb24gd2l0aFxuICAgICAgfCBbXSAtPiBbIGZsYWdfb25faXRzX293bl9saW5lIF1cbiAgICAgIHwgZG9jX3dyYXBwZWRfZmlyc3RfbGluZSA6OiBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIC0+XG4gICAgICAgIGxldCB3cmFwcGVkX2RvY19saW5lcyA9IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlIGRvY193cmFwcGVkX3Jlc3RfbGluZXMgaW5cbiAgICAgICAgbGV0IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggeCA9XG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IHhcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIDsgZG9jX3dyYXBwZWRfZmlyc3RfbGluZVxuICAgICAgICAgICAgXVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPj0gZG90X2luZGVudGF0aW9uX29mZnNldFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmxhZ19vbl9pdHNfb3duX2xpbmVcbiAgICAgICAgICA6OiBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIFwiXCJcbiAgICAgICAgICA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBMaXN0LmNvbmNhdF9tYXAgdCB+ZjooZnVuIHQgLT5cbiAgICAgICAgbGV0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPVxuICAgICAgICAgIGxldCBmbGFnID0gdC5GbGFnX2luZm8ubmFtZSBpblxuICAgICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKGZsYWcgOjogdC5hbGlhc2VzKVxuICAgICAgICBpblxuICAgICAgICByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgdC5kb2MgfD4gTGlzdC5jb25jYXQpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gRGlzcGxheS50b19zdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3ViY29tbWFuZFxuICAgIHwgRmxhZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3ViY29tbWFuZCAtPiBcInN1YmNvbW1hbmRcIlxuICAgIHwgRmxhZyAtPiBcImZsYWdcIlxuICA7O1xuZW5kXG5cbmxldCBsb29rdXBfZXhwYW5kIGFsaXN0IHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBpc19kYXNoID0gQ2hhci5lcXVhbCAnLScgaW5cbiAgbGV0IGFsaXN0ID1cbiAgICAoKiBubyBwYXJ0aWFsIG1hdGNoZXMgdW5sZXNzIHNvbWUgbm9uLWRhc2ggY2hhciBpcyBwcmVzZW50ICopXG4gICAgaWYgU3RyaW5nLmZvcl9hbGwgcHJlZml4IH5mOmlzX2Rhc2hcbiAgICB0aGVuIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgKGRhdGEsIF8pKSAtPiBrZXksIChkYXRhLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkpXG4gICAgZWxzZSBhbGlzdFxuICBpblxuICBtYXRjaFxuICAgIExpc3QuZmlsdGVyIGFsaXN0IH5mOihmdW5jdGlvblxuICAgICAgfCBrZXksIChfLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXhcbiAgICAgIHwga2V5LCAoXywgYFByZWZpeCkgLT4gU3RyaW5nLmlzX3ByZWZpeCBrZXkgfnByZWZpeClcbiAgd2l0aFxuICB8IFsgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgXSAtPiBPayAoa2V5LCBkYXRhKVxuICB8IFtdIC0+IEVycm9yIChzcHJpbnRmICFcInVua25vd24gJXtLZXlfdHlwZX0gJXNcIiBrZXlfdHlwZSBwcmVmaXgpXG4gIHwgbWF0Y2hlcyAtPlxuICAgIChtYXRjaCBMaXN0LmZpbmQgbWF0Y2hlcyB+ZjooZnVuIChrZXksIF8pIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4KSB3aXRoXG4gICAgIHwgU29tZSAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSAtPiBPayAoa2V5LCBkYXRhKVxuICAgICB8IE5vbmUgLT5cbiAgICAgICBsZXQgbWF0Y2hpbmdfa2V5cyA9IExpc3QubWFwIH5mOmZzdCBtYXRjaGVzIGluXG4gICAgICAgRXJyb3JcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAhXCIle0tleV90eXBlfSAlcyBpcyBhbiBhbWJpZ3VvdXMgcHJlZml4OiAlc1wiXG4gICAgICAgICAgICBrZXlfdHlwZVxuICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiBtYXRjaGluZ19rZXlzKSkpXG47O1xuXG5tb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5CYXNlX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBhbm9ucyA6IEFub25zLnRcbiAgICA7IGZsYWdzIDogRmxhZ19pbmZvLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBmaW5kX2ZsYWcgdCBwcmVmaXggPVxuICAgIG1hdGNoIFN0cmluZy5pc19wcmVmaXggcHJlZml4IH5wcmVmaXg6XCItXCIgd2l0aFxuICAgIHwgZmFsc2UgLT4gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIFslbWVzc2FnZSBcIkZsYWdzIG11c3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdKVxuICAgIHwgdHJ1ZSAtPlxuICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY2hvaWNlcyA9XG4gICAgICAgIExpc3QubWFwIHQuZmxhZ3MgfmY6KGZ1biAoZmxhZ19pbmZvIDogRmxhZ19pbmZvLnQpIC0+XG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgZmxhZ19uYW1lID0gRmxhZ19pbmZvLmZsYWdfbmFtZSBmbGFnX2luZm8gaW5cbiAgICAgICAgICBPa1xuICAgICAgICAgICAgKExpc3QubWFwIChmbGFnX25hbWUgOjogZmxhZ19pbmZvLmFsaWFzZXMpIH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgICAgICBrZXksIChmbGFnX2luZm8sIGBQcmVmaXgpKSkpXG4gICAgICAgIHw+IE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzXG4gICAgICBpblxuICAgICAgbG9va3VwX2V4cGFuZCAoTGlzdC5jb25jYXQgY2hvaWNlcykgcHJlZml4IEZsYWdcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IGdldF91c2FnZSB0ID1cbiAgICBtYXRjaCB0LmFub25zIHdpdGhcbiAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci51c2FnZSBncmFtbWFyXG4gIDs7XG5lbmRcblxubW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgU3RhYmxlLkdyb3VwX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC50IExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBmaW5kX3N1YmNvbW1hbmQgdCBwcmVmaXggPVxuICAgIG1hdGNoIFN0cmluZy5pc19wcmVmaXggcHJlZml4IH5wcmVmaXg6XCItXCIgd2l0aFxuICAgIHwgdHJ1ZSAtPlxuICAgICAgRXJyb3IgKEVycm9yLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlN1YmNvbW1hbmRzIG11c3Qgbm90IGJlZ2luIHdpdGggJy0nXCIgcHJlZml4XSlcbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgY2hvaWNlcyA9XG4gICAgICAgIExpc3QubWFwIChmb3JjZSB0LnN1YmNvbW1hbmRzKSB+ZjooZnVuIChrZXksIGEpIC0+IGtleSwgKGEsIGBQcmVmaXgpKVxuICAgICAgaW5cbiAgICAgIGxvb2t1cF9leHBhbmQgY2hvaWNlcyBwcmVmaXggU3ViY29tbWFuZFxuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgbWFwID0gU3RhYmxlLkdyb3VwX2luZm8uTW9kZWwubWFwXG5lbmRcblxubW9kdWxlIEV4ZWNfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRXhlY19pbmZvLk1vZGVsLnQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5GdWxseV9mb3JjZWQuTW9kZWwudCA9XG4gICAgfCBCYXNpYyBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiB0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IGV4cGFuZGVkX3N1YmNvbW1hbmRzIHQgPVxuICAgIGxldCByZWMgZXhwYW5kID0gZnVuY3Rpb25cbiAgICAgIHwgRXhlYyAoXywgdCkgLT4gZXhwYW5kIHRcbiAgICAgIHwgQmFzaWMgXyAtPiBbIFtdIF1cbiAgICAgIHwgR3JvdXAgeyBzdWJjb21tYW5kczsgXyB9IC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCAoTGF6eS5mb3JjZSBzdWJjb21tYW5kcykgfmY6KGZ1biAobmFtZSwgdCkgLT5cbiAgICAgICAgICBMaXN0Lm1hcCB+ZjooZnVuIHBhdGggLT4gbmFtZSA6OiBwYXRoKSAoZXhwYW5kIHQpKVxuICAgIGluXG4gICAgKCogUmV2ZXJzaW5nIHNvIHRoYXQgdGhlIGNvbW1hbmRzIHNob3cgdXAgaW4gdGhlIHNhbWUgb3JkZXIgYXMgaGVscCBpcyBvdXRwdXQgKilcbiAgICBMaXN0LnJldiAoZXhwYW5kIHQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5TZXhwYWJsZS5Nb2RlbC50ID1cbiAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLnRcbiAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gICAgfCBFeGVjIG9mIEV4ZWNfaW5mby50XG4gICAgfCBMYXp5IG9mIHQgTGF6eS50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGV4dHJhY3Rpb25fdmFyID0gRW52X3Zhci50b19zdHJpbmcgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQXG5cbiAgbW9kdWxlIFZlcnNpb25lZCA9IFN0YWJsZS5TZXhwYWJsZS5WZXJzaW9uZWRcblxuICBsZXQgc3VwcG9ydGVkX3ZlcnNpb25zID1cbiAgICBsZXQgZiBpIHN1cHBvcnRlZCBfID0gU2V0LmFkZCBzdXBwb3J0ZWQgaSBpblxuICAgIFZlcnNpb25lZC5WYXJpYW50cy5mb2xkIH5pbml0OihTZXQuZW1wdHkgKG1vZHVsZSBJbnQpKSB+djE6KGYgMSkgfnYyOihmIDIpIH52MzooZiAzKVxuICA7O1xuXG4gIGxldCBvZl92ZXJzaW9uZWQgPSBWZXJzaW9uZWQudG9fbGF0ZXN0XG4gIGxldCB0b192ZXJzaW9uZWQgdCB+dmVyc2lvbl90b191c2UgPSBWZXJzaW9uZWQub2ZfbGF0ZXN0IHQgfnZlcnNpb25fdG9fdXNlXG5lbmRcblxudHlwZSB0ID1cbiAgfCBCYXNpYyBvZiBCYXNlX2luZm8udFxuICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby50XG4gIHwgRXhlYyBvZiBFeGVjX2luZm8udCAqICh1bml0IC0+IHQpXG4gIHwgTGF6eSBvZiB0IExhenkudFxuXG5sZXQgcmVjIGZ1bGx5X2ZvcmNlZCA6IHQgLT4gRnVsbHlfZm9yY2VkLnQgPSBmdW5jdGlvblxuICB8IEJhc2ljIGIgLT4gQmFzaWMgYlxuICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8ubWFwIGcgfmY6ZnVsbHlfZm9yY2VkKVxuICB8IEV4ZWMgKGUsIGYpIC0+IEV4ZWMgKGUsIGZ1bGx5X2ZvcmNlZCAoZiAoKSkpXG4gIHwgTGF6eSB0aHVuayAtPiBmdWxseV9mb3JjZWQgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgcmVjIGdldF9zdW1tYXJ5ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IGIuc3VtbWFyeVxuICB8IEdyb3VwIGcgLT4gZy5zdW1tYXJ5XG4gIHwgRXhlYyAoZSwgXykgLT4gZS5zdW1tYXJ5XG4gIHwgTGF6eSB0aHVuayAtPiBnZXRfc3VtbWFyeSAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbmxldCBoZWxwX3RleHQgPSBgVXNlX0NvbW1hbmRfdW5peFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgS2V5X3R5cGUgPSBLZXlfdHlwZVxuXG4gIGxldCBhYnNfcGF0aCA9IFN0YWJsZS5FeGVjX2luZm8uYWJzX3BhdGhcbiAgbGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBGbGFnX2luZm8uaGVscF9zY3JlZW5fY29tcGFyZVxuICBsZXQgd29yZF93cmFwID0gRmxhZ19oZWxwX2Rpc3BsYXkud29yZF93cmFwX2FuZF9zdHJpcFxuICBsZXQgbG9va3VwX2V4cGFuZCA9IGxvb2t1cF9leHBhbmRcbmVuZFxuIiwiXG5vcGVuISBCYXNlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tbWFuZF9pbnRmXG5tb2R1bGUgU2hhcGUgPSBTaGFwZVxuXG4oKiBpbiBvcmRlciB0byBkZWZpbmUgZXhwZWN0IHRlc3RzLCB3ZSB3YW50IHRvIHJhaXNlIHJhdGhlciB0aGFuIGV4aXQgaWYgdGhlIGNvZGUgaXNcbiAgIHJ1bm5pbmcgaW4gdGhlIHRlc3QgcnVubmVyIHByb2Nlc3MgKilcbmxldCByYWlzZV9pbnN0ZWFkX29mX2V4aXQgPVxuICBtYXRjaCBQcHhfaW5saW5lX3Rlc3RfbGliLnRlc3Rpbmcgd2l0aFxuICB8IGBUZXN0aW5nIGBBbV90ZXN0X3J1bm5lciAtPiB0cnVlXG4gIHwgYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyIHwgYE5vdF90ZXN0aW5nIC0+IGZhbHNlXG47O1xuXG5leGNlcHRpb24gRXhpdF9jYWxsZWQgb2YgeyBzdGF0dXMgOiBpbnQgfSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4oKiBbcmFpc2VfaW5zdGVhZF9vZl9leGl0XS1yZXNwZWN0aW5nIHdyYXBwZXJzIGZvciBbZXhpdF0gYW5kIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQgKilcbmluY2x1ZGUgc3RydWN0XG4gIGxldCBleGl0IHN0YXR1cyA9XG4gICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0IHRoZW4gcmFpc2UgKEV4aXRfY2FsbGVkIHsgc3RhdHVzIH0pIGVsc2UgU3RkbGliLmV4aXQgc3RhdHVzXG4gIDs7XG5cbiAgbW9kdWxlIEV4biA9IHN0cnVjdFxuICAgIGxldCBoYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZiA9XG4gICAgICBpZiByYWlzZV9pbnN0ZWFkX29mX2V4aXRcbiAgICAgIHRoZW4gKFxuICAgICAgICB0cnkgZiAoKSB3aXRoXG4gICAgICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgPSAwIH0gYXMgZXhuIC0+IHByaW50X3MgWyVzZXhwIChleG4gOiBleG4pXSlcbiAgICAgIGVsc2UgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHVud29yZHMgeHMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgeHNcbmxldCB1bnBhcmFncmFwaHMgeHMgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cXG5cIiB4c1xuXG5leGNlcHRpb24gRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBvZiBzdHJpbmdcblxubGV0IGRpZSBmbXQgPSBrc3ByaW50ZiAoZnVuIG1zZyAoKSAtPiByYWlzZSAoRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cpKSBmbXRcbmxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gU2hhcGUuUHJpdmF0ZS5oZWxwX3NjcmVlbl9jb21wYXJlXG5cbigqIHVuaXZlcnNhbCBtYXBzIGFyZSB1c2VkIHRvIHBhc3MgYXJvdW5kIHZhbHVlcyBiZXR3ZWVuIGRpZmZlcmVudCBiaXRzXG4gICBvZiBjb21tYW5kIGxpbmUgcGFyc2luZyBjb2RlIHdpdGhvdXQgaGF2aW5nIGEgaHVnZSBpbXBhY3Qgb24gdGhlXG4gICB0eXBlcyBpbnZvbHZlZFxuXG4gICAxLiBwYXNzaW5nIHZhbHVlcyBmcm9tIHBhcnNlZCBhcmdzIHRvIGNvbW1hbmQtbGluZSBhdXRvY29tcGxldGUgZnVuY3Rpb25zXG4gICAyLiBwYXNzaW5nIHNwZWNpYWwgdmFsdWVzIHRvIGEgYmFzZSBjb21tYW5kcyB0aGF0IHJlcXVlc3QgdGhlbSBpbiB0aGVpciBzcGVjXG4gKiBleHBhbmRlZCBzdWJjb21tYW5kIHBhdGhcbiAqIGFyZ3MgcGFzc2VkIHRvIHRoZSBiYXNlIGNvbW1hbmRcbiAqIGhlbHAgdGV4dCBmb3IgdGhlIGJhc2UgY29tbWFuZFxuKilcbm1vZHVsZSBFbnYgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBVbml2X21hcFxuXG4gIGxldCBrZXlfY3JlYXRlIG5hbWUgPSBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lIFNleHBsaWIuQ29udi5zZXhwX29mX29wYXF1ZVxuICBsZXQgbXVsdGlfYWRkID0gVW5pdl9tYXAuTXVsdGkuYWRkXG4gIGxldCBzZXRfd2l0aF9kZWZhdWx0ID0gVW5pdl9tYXAuV2l0aF9kZWZhdWx0LnNldFxuZW5kXG5cbm1vZHVsZSBQYXJzaW5nX291dGNvbWUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHJlc3VsdCA6ICgnYSwgWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0pIFJlc3VsdC50XG4gICAgOyBoYXNfYXJnIDogYm9vbFxuICAgIH1cblxuICB2YWwgcmV0dXJuX25vX2FyZyA6ICdhIC0+ICdhIHRcbiAgdmFsIHJldHVybl93aXRoX2FyZyA6ICdhIC0+ICdhIHRcbiAgdmFsIGVycm9yIDogaGFzX2FyZzpib29sIC0+IFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdIC0+ICdhIHRcbiAgdmFsIHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIDogJ2EgdCAtPiAnYSB0IHRcblxuICB2YWwgaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICA6ICAoJ2EsIFsgYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb2YgRXJyb3IudCBdKSBSZXN1bHQudCB0XG4gICAgLT4gJ2EgdFxuXG4gIGluY2x1ZGUgQXBwbGljYXRpdmUuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHJlc3VsdCA6ICgnYSwgWyBgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBvZiBFcnJvci50IF0pIFJlc3VsdC50XG4gICAgOyBoYXNfYXJnIDogYm9vbFxuICAgIH1cblxuICBsZXQgYXBwbHkgZiB4ID1cbiAgICB7IHJlc3VsdCA9XG4gICAgICAgIFJlc3VsdC5jb21iaW5lXG4gICAgICAgICAgZi5yZXN1bHRcbiAgICAgICAgICB4LnJlc3VsdFxuICAgICAgICAgIH5vazooZnVuIGYgeCAtPiBmIHgpXG4gICAgICAgICAgfmVycjooZnVuIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyBlcnJfMSkgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIF9lcnJfMikgLT5cbiAgICAgICAgICAgIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycl8xKVxuICAgIDsgaGFzX2FyZyA9IGYuaGFzX2FyZyB8fCB4Lmhhc19hcmdcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIHQgPSB7IHJlc3VsdCA9IE9rIHQ7IGhhc19hcmcgPSB0Lmhhc19hcmcgfVxuXG4gIGxldCBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID1cbiAgICB7IHJlc3VsdCA9IFJlc3VsdC5qb2luIHQucmVzdWx0OyBoYXNfYXJnID0gdC5oYXNfYXJnIH1cbiAgOztcblxuICBsZXQgbWFwIHsgcmVzdWx0OyBoYXNfYXJnIH0gfmYgPSB7IHJlc3VsdCA9IFJlc3VsdC5tYXAgcmVzdWx0IH5mOyBoYXNfYXJnIH1cbiAgbGV0IHJldHVybl9ub19hcmcgdiA9IHsgcmVzdWx0ID0gT2sgdjsgaGFzX2FyZyA9IGZhbHNlIH1cbiAgbGV0IHJldHVybl93aXRoX2FyZyB2ID0geyByZXN1bHQgPSBPayB2OyBoYXNfYXJnID0gdHJ1ZSB9XG4gIGxldCBlcnJvciB+aGFzX2FyZyBlcnIgPSB7IHJlc3VsdCA9IEVycm9yIGVycjsgaGFzX2FyZyB9XG5cbiAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5fbm9fYXJnXG4gICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBBdXRvX2NvbXBsZXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IEVudi50IC0+IHBhcnQ6c3RyaW5nIC0+IHN0cmluZyBsaXN0XG5cbiAgbW9kdWxlIEZvcl9lc2NhcGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb21wbGV0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXV0b19jb21wbGV0ZS50IG9wdGlvblxuXG4gIG1vZHVsZSBGb3JfZXNjYXBlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQXV0b19jb21wbGV0ZS5Gb3JfZXNjYXBlLnQgb3B0aW9uXG4gIGVuZFxuXG4gIGxldCBydW5fYW5kX2V4aXQgdCBlbnYgfnBhcnQgOiBOb3RoaW5nLnQgPVxuICAgIE9wdGlvbi5pdGVyIHQgfmY6KGZ1biBjb21wbGV0aW9ucyAtPlxuICAgICAgTGlzdC5pdGVyIH5mOnByaW50X2VuZGxpbmUgKGNvbXBsZXRpb25zIGVudiB+cGFydCkpO1xuICAgIGV4aXQgMFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcmdfdHlwZSA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZXh0cmFfZG9jIDogJ2EgdCAtPiBzdHJpbmcgb3B0aW9uIGxhenlfdFxuICB2YWwga2V5IDogJ2EgdCAtPiAnYSBFbnYuTXVsdGkuS2V5LnQgb3B0aW9uXG4gIHZhbCBjb21wbGV0ZSA6ICdhIHQgLT4gQ29tcGxldGVyLnRcbiAgdmFsIHBhcnNlIDogJ2EgdCAtPiBzdHJpbmcgLT4gJ2EgT3JfZXJyb3IudFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Y29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAoc3RyaW5nIC0+ICdhKVxuICAgIC0+ICdhIHRcblxuICB2YWwgbWFwIDogP2tleTonYSBFbnYuTXVsdGkuS2V5LnQgLT4gJ2IgdCAtPiBmOignYiAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgb2ZfbGF6eSA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdhIHQgbGF6eV90IC0+ICdhIHRcblxuICB2YWwgb2ZfbWFwXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gJ2EgTWFwLk0oU3RyaW5nKS50XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBvZl9hbGlzdF9leG5cbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc3RyaW5nYWJsZSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgIC0+ICdhIHRcblxuICB2YWwgZW51bWVyYXRlZF9zZXhwYWJsZVxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+IChtb2R1bGUgRW51bWVyYWJsZV9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgIC0+ICdhIHRcblxuICB2YWwgY29tbWFfc2VwYXJhdGVkXG4gICAgOiAgP2FsbG93X2VtcHR5OmJvb2xcbiAgICAtPiA/a2V5OidhIGxpc3QgRW52Lk11bHRpLktleS50XG4gICAgLT4gP3N0cmlwX3doaXRlc3BhY2U6Ym9vbFxuICAgIC0+ID91bmlxdWVfdmFsdWVzOmJvb2xcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgbGlzdCB0XG5cbiAgbW9kdWxlIEV4cG9ydCA6IHNpZ1xuICAgIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICAgIHZhbCBpbnQgOiBpbnQgdFxuICAgIHZhbCBjaGFyIDogY2hhciB0XG4gICAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICAgIHZhbCBib29sIDogYm9vbCB0XG4gICAgdmFsIHNleHAgOiBTZXhwLnQgdFxuICAgIHZhbCBzZXhwX2NvbnYgOiA/Y29tcGxldGU6QXV0b19jb21wbGV0ZS50IC0+IChTZXhwLnQgLT4gJ2EpIC0+ICdhIHRcbiAgZW5kXG5cbiAgdmFsIGF1dG9fY29tcGxldGUgOiBfIHQgLT4gQXV0b19jb21wbGV0ZS50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBhcnNlIDogc3RyaW5nIC0+ICdhXG4gICAgOyBjb21wbGV0ZSA6IENvbXBsZXRlci50XG4gICAgOyBrZXkgOiAnYSBVbml2X21hcC5NdWx0aS5LZXkudCBvcHRpb25cbiAgICA7IGV4dHJhX2RvYyA6IHN0cmluZyBvcHRpb24gTGF6eS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IHBhcnNlIHQgcyA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gdC5wYXJzZSBzKVxuICBsZXQgY3JlYXRlJyA/Y29tcGxldGUgP2tleSBwYXJzZSB+ZXh0cmFfZG9jID0geyBwYXJzZTsga2V5OyBjb21wbGV0ZTsgZXh0cmFfZG9jIH1cblxuICBsZXQgY3JlYXRlID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyA9XG4gICAgY3JlYXRlJyA/Y29tcGxldGUgP2tleSBvZl9zdHJpbmcgfmV4dHJhX2RvYzooTGF6eS5mcm9tX3ZhbCBOb25lKVxuICA7O1xuXG4gIGxldCBtYXAgP2tleSB0IH5mID0geyB0IHdpdGgga2V5OyBwYXJzZSA9IChmdW4gcyAtPiBmICh0LnBhcnNlIHMpKSB9XG5cbiAgbGV0IG9mX2xhenkgP2tleSB0ID1cbiAgICBsZXQgcGFyc2Ugc3RyID0gKGZvcmNlIHQpLnBhcnNlIHN0ciBpblxuICAgIGxldCBjb21wbGV0ZSBlbnYgfnBhcnQgPVxuICAgICAgbWF0Y2ggKGZvcmNlIHQpLmNvbXBsZXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBTZWUgW3J1bl9hbmRfZXhpdF0gLSBubyBjb21wbGV0aW9ucyBpcyBlcXVpdmFsZW50IHRvIG5vdCBoYXZpbmcgYVxuICAgICAgICAgICBbQ29tcGxldGVdLiAqKVxuICAgICAgICBbXVxuICAgICAgfCBTb21lIGNvbXBsZXRlIC0+IGNvbXBsZXRlIGVudiB+cGFydFxuICAgIGluXG4gICAgbGV0IGV4dHJhX2RvYyA9IExhenkuYmluZCB0IH5mOmV4dHJhX2RvYyBpblxuICAgIHsgcGFyc2U7IGNvbXBsZXRlID0gU29tZSBjb21wbGV0ZTsga2V5OyBleHRyYV9kb2MgfVxuICA7O1xuXG4gIGxldCBzdHJpbmcgPSBjcmVhdGUgRm4uaWRcbiAgbGV0IGludCA9IGNyZWF0ZSBJbnQub2Zfc3RyaW5nXG4gIGxldCBjaGFyID0gY3JlYXRlIENoYXIub2Zfc3RyaW5nXG4gIGxldCBmbG9hdCA9IGNyZWF0ZSBGbG9hdC5vZl9zdHJpbmdcbiAgbGV0IHNleHAgPSBjcmVhdGUgUGFyc2V4cC5TaW5nbGUucGFyc2Vfc3RyaW5nX2V4blxuXG4gIGxldCBzZXhwX2NvbnYgP2NvbXBsZXRlIG9mX3NleHAgPVxuICAgIGNyZWF0ZSA/Y29tcGxldGUgKGZ1biBzIC0+IG9mX3NleHAgKFBhcnNleHAuU2luZ2xlLnBhcnNlX3N0cmluZ19leG4gcykpXG4gIDs7XG5cbiAgbGV0IGFzc29jaWF0aXZlXG4gICAgICAgID8oYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyA9IHRydWUpXG4gICAgICAgID8obGlzdF92YWx1ZXNfaW5faGVscCA9IHRydWUpXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGxldCBvcGVuIHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIHZhbCBpc19wcmVmaXggOiBzdHJpbmcgLT4gcHJlZml4OnN0cmluZyAtPiBib29sXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBUIDpcbiAgICAgICAgICAgIHsgY21wIDogKG1vZHVsZSBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgICAgICAgICAgOyBtYXAgOiAoc3RyaW5nLCAnYSwgJ2NtcCkgTWFwLnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC0+ICdhIHRcbiAgICBlbmQgaW5cbiAgICBsZXQgKFQgeyBjbXAgPSAobW9kdWxlIFMpOyBtYXAgfSkgPVxuICAgICAgbGV0IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXlcbiAgICAgICAgICAgICh0eXBlIGNtcClcbiAgICAgICAgICAgIChtb2R1bGUgUyA6IFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgICAgIGFsaXN0XG4gICAgICAgID1cbiAgICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgUykgYWxpc3Qgd2l0aFxuICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgKF8gOiBTLnQpIC0+XG4gICAgICAgICAgbGV0IGR1cGxpY2F0ZV9rZXlzID1cbiAgICAgICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGssIChfIDogJ2EpKSAtPiBrLCBrKVxuICAgICAgICAgICAgfD4gTWFwLm9mX2FsaXN0X211bHRpIChtb2R1bGUgUylcbiAgICAgICAgICAgIHw+IE1hcC5maWx0ZXIgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IHRydWUpXG4gICAgICAgICAgICB8PiBNYXAuZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLm9mX2FsaXN0X2V4blwiIChkdXBsaWNhdGVfa2V5cyA6IHN0cmluZyBsaXN0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlIGNtcCA9IFQgeyBjbXA7IG1hcCA9IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXkgY21wIGFsaXN0IH0gaW5cbiAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gbWFrZSAobW9kdWxlIFN0cmluZykgZWxzZSBtYWtlIChtb2R1bGUgU3RyaW5nLkNhc2VsZXNzKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeCA9XG4gICAgICBtYXRjaCBhdXRvX2NvbXBsZXRlIHdpdGhcbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBtYXApIH5mOihmdW4gKG5hbWUsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggUy5pc19wcmVmaXggbmFtZSB+cHJlZml4IHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICgqIEJhc2ggY29tcGxldGlvbiB3aWxsIG5vdCBhY2NlcHQgW0Zvb10gYXMgYSBjb21wbGV0aW9uIGZvciBbZl0uIFNvIHdlIG5lZWRcbiAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSBjYXBpdGFsaXphdGlvbiBnaXZlbi4gKilcbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3VibyBuYW1lIH5wb3M6KFN0cmluZy5sZW5ndGggcHJlZml4KSBpblxuICAgICAgICAgICAgbGV0IG5hbWUgPSBwcmVmaXggXiBzdWZmaXggaW5cbiAgICAgICAgICAgIFNvbWUgbmFtZSlcbiAgICBpblxuICAgIGxldCBmaW5kIGFyZyA9XG4gICAgICBtYXRjaCBNYXAuZmluZCBtYXAgYXJnIHdpdGhcbiAgICAgIHwgU29tZSBfIGFzIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBhY2NlcHRfdW5pcXVlX3ByZWZpeGVzIHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKG5hbWUsIF8pIC0+IFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeDphcmcpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgKF9zaW5nbGV0b25fa2V5LCB2KSBdIC0+IFNvbWUgdlxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+XG4gICAgICAgICAgICAgICgqIEluIHRoZSB0d28tb3ItbW9yZSBjYXNlIHdlIGNvdWxkIHByb3ZpZGUgZmlsdGVyZWQgaGVscCB0ZXh0LCBidXQgaXQnc1xuICAgICAgICAgICAgICAgICBtb3JlIGdlbmVyYWxseSB1c2VmdWwgdG8gbGlzdCBhbGwgdGhlIG9wdGlvbnMsIHdoaWNoIHdlIGRvIGJlbG93LiAqKVxuICAgICAgICAgICAgICBOb25lKSlcbiAgICBpblxuICAgIGNyZWF0ZSdcbiAgICAgIH5leHRyYV9kb2M6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKGlmIGxpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKE1hcC5rZXlzIG1hcCkgaW5cbiAgICAgICAgICAgICBTb21lIFslc3RyaW5nIFwiKGNhbiBiZTogJXt2YWx1ZXN9KVwiXSlcbiAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgID9rZXlcbiAgICAgIH5jb21wbGV0ZVxuICAgICAgKGZ1biBhcmcgLT5cbiAgICAgICAgIG1hdGNoIGZpbmQgYXJnIHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgdmFsaWRfYXJndW1lbnRzX2V4dHJhID1cbiAgICAgICAgICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIFwiXCIgZWxzZSBcIiAoY2FzZSBpbnNlbnNpdGl2ZSlcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgICBcInZhbGlkIGFyZ3VtZW50cyVzOiB7JXN9XCJcbiAgICAgICAgICAgICB2YWxpZF9hcmd1bWVudHNfZXh0cmFcbiAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChNYXAua2V5cyBtYXApKVxuICAgICAgICAgICAgICgpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG5cbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgYXNzb2NpYXRpdmVcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgYWxpc3RcbiAgOztcblxuICBsZXQgb2ZfbWFwXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIG1hcFxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKE1hcC50b19hbGlzdCBtYXApXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChsZXQlbWFwLkxpc3QgdCA9IEUuYWxsIGluXG4gICAgICAgRS50b19zdHJpbmcgdCwgdClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZF9zZXhwYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgZW51bWVyYXRlZFxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEVcblxuICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyBbJXNleHAgKHQgOiBFLnQpXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGxldCBib29sID0gZW51bWVyYXRlZCB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZSAobW9kdWxlIEJvb2wpXG5cbiAgbGV0IGNvbW1hX3NlcGFyYXRlZFxuICAgICAgICA/KGFsbG93X2VtcHR5ID0gZmFsc2UpXG4gICAgICAgID9rZXlcbiAgICAgICAgPyhzdHJpcF93aGl0ZXNwYWNlID0gZmFsc2UpXG4gICAgICAgID8odW5pcXVlX3ZhbHVlcyA9IGZhbHNlKVxuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBzdHJpcCA9IGlmIHN0cmlwX3doaXRlc3BhY2UgdGhlbiBmdW4gc3RyIC0+IFN0cmluZy5zdHJpcCBzdHIgZWxzZSBGbi5pZCBpblxuICAgIGxldCBjb21wbGV0ZSA9XG4gICAgICBPcHRpb24ubWFwIHQuY29tcGxldGUgfmY6KGZ1biBjb21wbGV0ZV9lbHQgZW52IH5wYXJ0IC0+XG4gICAgICAgIGxldCBwcmVmaXhlcywgc3VmZml4ID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcGFydCB+b246JywnIHw+IExpc3QucmV2IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFtdLCBwYXJ0XG4gICAgICAgICAgfCBoZCA6OiB0bCAtPiBMaXN0LnJldiB0bCwgaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX2FsbG93ZWQgPVxuICAgICAgICAgIGlmIG5vdCB1bmlxdWVfdmFsdWVzXG4gICAgICAgICAgdGhlbiBmdW4gKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBzZWVuX2FscmVhZHkgPVxuICAgICAgICAgICAgICBwcmVmaXhlcyB8PiBMaXN0Lm1hcCB+ZjpzdHJpcCB8PiBTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmdW4gY2hvaWNlIC0+IG5vdCAoU2V0Lm1lbSBzZWVuX2FscmVhZHkgKHN0cmlwIGNob2ljZSkpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY2hvaWNlcyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChjb21wbGV0ZV9lbHQgZW52IH5wYXJ0OnN1ZmZpeCkgfmY6KGZ1biBjaG9pY2UgLT5cbiAgICAgICAgICAgICAgKG5vdCAoU3RyaW5nLm1lbSBjaG9pY2UgJywnKSkgJiYgaXNfYWxsb3dlZCBjaG9pY2UpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgICgqIElmIHRoZXJlIGlzIGV4YWN0bHkgb25lIGNob2ljZSB0byBhdXRvLWNvbXBsZXRlLCBhZGQgYSBzZWNvbmQgY2hvaWNlIHdpdGhcbiAgICAgICAgICAgICBhIHRyYWlsaW5nIGNvbW1hIHNvIHRoYXQgYXV0by1jb21wbGV0aW9uIHdpbGwgZ28gdG8gdGhlIGVuZCBidXQgYmFzaFxuICAgICAgICAgICAgIHdvbid0IGFkZCBhIHNwYWNlLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNob2ljZXMsIG9yIGEgc2luZ2xlIGNob2ljZVxuICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBmaW5hbCwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgYSBkdW1teSBvcHRpb24uICopXG4gICAgICAgICAgfCBbIGNob2ljZSBdIC0+IFsgY2hvaWNlOyBjaG9pY2UgXiBcIixcIiBdXG4gICAgICAgICAgfCBjaG9pY2VzIC0+IGNob2ljZXNcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgY2hvaWNlcyB+ZjooZnVuIGNob2ljZSAtPiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgKHByZWZpeGVzIEAgWyBjaG9pY2UgXSkpKVxuICAgIGluXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgbGV0IHN0cmluZyA9IHN0cmlwIHN0cmluZyBpblxuICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgICAgdGhlblxuICAgICAgICBpZiBhbGxvd19lbXB0eVxuICAgICAgICB0aGVuIFtdXG4gICAgICAgIGVsc2UgZmFpbHdpdGggXCJDb21tYW5kLlNwZWMuQXJnX3R5cGUuY29tbWFfc2VwYXJhdGVkOiBlbXB0eSBsaXN0IG5vdCBhbGxvd2VkXCJcbiAgICAgIGVsc2UgTGlzdC5tYXAgKFN0cmluZy5zcGxpdCBzdHJpbmcgfm9uOicsJykgfmY6KGZ1biBzdHIgLT4gdC5wYXJzZSAoc3RyaXAgc3RyKSlcbiAgICBpblxuICAgIGNyZWF0ZSA/a2V5ID9jb21wbGV0ZSBvZl9zdHJpbmdcbiAgOztcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgbGV0IHN0cmluZyA9IHN0cmluZ1xuICAgIGxldCBpbnQgPSBpbnRcbiAgICBsZXQgY2hhciA9IGNoYXJcbiAgICBsZXQgZmxvYXQgPSBmbG9hdFxuICAgIGxldCBib29sID0gYm9vbFxuICAgIGxldCBzZXhwID0gc2V4cFxuICAgIGxldCBzZXhwX2NvbnYgPSBzZXhwX2NvbnZcbiAgZW5kXG5cbiAgbGV0IGF1dG9fY29tcGxldGUgdCA9XG4gICAgbWF0Y2ggdC5jb21wbGV0ZSB3aXRoXG4gICAgfCBTb21lIGYgLT4gZlxuICAgIHwgTm9uZSAtPiBmdW4gXyB+cGFydDpfIC0+IFtdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE51bV9vY2N1cnJlbmNlcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLk51bV9vY2N1cnJlbmNlcy50ID1cbiAgICAgIHsgYXRfbGVhc3Rfb25jZSA6IGJvb2xcbiAgICAgIDsgYXRfbW9zdF9vbmNlIDogYm9vbFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHRvX2hlbHBfc3RyaW5nID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmdfZGVwcmVjYXRlZCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IF8gfSBmbGFnX25hbWUgPVxuICAgICAgdG9faGVscF9zdHJpbmcgeyBhdF9sZWFzdF9vbmNlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH0gfmZsYWdfbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgYW55ID0geyBhdF9sZWFzdF9vbmNlID0gZmFsc2U7IGF0X21vc3Rfb25jZSA9IGZhbHNlIH1cbiAgICBsZXQgYXRfbGVhc3Rfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IGZhbHNlIH1cbiAgICBsZXQgYXRfbW9zdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gZmFsc2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICAgIGxldCBleGFjdGx5X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSB0cnVlOyBhdF9tb3N0X29uY2UgPSB0cnVlIH1cbiAgZW5kXG5cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgTm9fYXJnIG9mIChFbnYudCAtPiBFbnYudClcbiAgICB8IFByaW50X2luZm9fYW5kX3F1aXQgb2YgKEVudi50IC0+IHN0cmluZylcbiAgICB8IEFyZyBvZiAoRW52LnQgLT4gc3RyaW5nIC0+IEVudi50KSAqIENvbXBsZXRlci50XG4gICAgfCBSZXN0IG9mIChFbnYudCAtPiBzdHJpbmcgbGlzdCAtPiBFbnYudCkgKiBDb21wbGV0ZXIuRm9yX2VzY2FwZS50XG5cbiAgbW9kdWxlIEludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgOiBzdHJpbmcgbGlzdFxuICAgICAgKCogW2FsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXSBhcmUgYWxpYXNlcyB0aGF0IGRvbid0IHNob3cgdXAgaW4gLWhlbHAgb3V0cHV0LlxuICAgICAgICAgQ3VycmVudGx5IHRoZXkncmUgb25seSB1c2VkIGZvciBkb3VibGUtZGFzaCBidWlsdC1pbiBmbGFncyBsaWtlIC0taGVscCBhbmRcbiAgICAgICAgIC0tdmVyc2lvbi4gKilcbiAgICAgIDsgYWN0aW9uIDogYWN0aW9uXG4gICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgOyBudW1fb2NjdXJyZW5jZXMgOiBOdW1fb2NjdXJyZW5jZXMudFxuICAgICAgOyBjaGVja19hdmFpbGFibGUgOiBFbnYudCAtPiB1bml0XG4gICAgICA7IG5hbWVfbWF0Y2hpbmcgOiBbIGBQcmVmaXggfCBgRnVsbF9tYXRjaF9yZXF1aXJlZCBdXG4gICAgICB9XG5cbiAgICBsZXQgd3JhcF9pZl9vcHRpb25hbCB0IGZsYWdfbmFtZSA9XG4gICAgICBOdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmcgdC5udW1fb2NjdXJyZW5jZXMgfmZsYWdfbmFtZVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRG9jID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGFyZ19kb2MgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIH1cblxuICAgICAgbGV0IHBhcnNlIH5hY3Rpb24gfmRvYyA9XG4gICAgICAgIGxldCBhcmdfZG9jLCBkb2MgPVxuICAgICAgICAgIG1hdGNoIChhY3Rpb24gOiBhY3Rpb24pLCBTdHJpbmcubHNwbGl0MiBkb2Mgfm9uOicgJyB3aXRoXG4gICAgICAgICAgfCAoTm9fYXJnIF8gfCBQcmludF9pbmZvX2FuZF9xdWl0IF8pLCBfIC0+IE5vbmUsIGRvY1xuICAgICAgICAgIHwgQXJnIF8sIChOb25lIHwgU29tZSAoXCJcIiwgXykpIC0+IFNvbWUgXCJfXCIsIGRvY1xuICAgICAgICAgIHwgUmVzdCBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IChBcmcgXyB8IFJlc3QgXyksIFNvbWUgKGFyZywgZG9jKSAtPiBTb21lIGFyZywgZG9jXG4gICAgICAgIGluXG4gICAgICAgIHsgZG9jID0gU3RyaW5nLnN0cmlwIGRvYzsgYXJnX2RvYyB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgY29uY2F0IH5uYW1lIH5hcmdfZG9jID1cbiAgICAgICAgbWF0Y2ggYXJnX2RvYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBuYW1lXG4gICAgICAgIHwgU29tZSBhcmdfZG9jIC0+IG5hbWUgXiBcIiBcIiBeIGFyZ19kb2NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCB4ID1cbiAgICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nX2RlcHJlY2F0ZWQgdC5udW1fb2NjdXJyZW5jZXMgeFxuICAgICAgOztcblxuICAgICAgKCogZmxhZyBoZWxwIGluIHRoZSBmb3JtYXQgb2YgdGhlIG9sZCBjb21tYW5kLiB1c2VkIGZvciBpbmplY3Rpb24gKilcbiAgICAgIGxldCBoZWxwXG4gICAgICAgICAgICAoeyBuYW1lXG4gICAgICAgICAgICAgOyBkb2NcbiAgICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IF9cbiAgICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwID0gX1xuICAgICAgICAgICAgIH0gYXMgdClcbiAgICAgICAgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IGRvYyB+cHJlZml4OlwiIFwiXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAobmFtZSwgU3RyaW5nLmxzdHJpcCBkb2MpXG4gICAgICAgICAgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIHggLT4geCwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgICAgICAod3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSwgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAoIHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZTp4IH5hcmdfZG9jKVxuICAgICAgICAgICAgLCBzcHJpbnRmIFwic2FtZSBhcyBcXFwiJXNcXFwiXCIgbmFtZSApKSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgYWxpZ25cbiAgICAgICAgICAoeyBuYW1lXG4gICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICA7IGFjdGlvblxuICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IF9cbiAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgfSBhcyB0KVxuICAgICAgOiBTaGFwZS5GbGFnX2luZm8udFxuICAgICAgPVxuICAgICAgbGV0IHsgRG9jLmFyZ19kb2M7IGRvYyB9ID0gRG9jLnBhcnNlIH5hY3Rpb24gfmRvYyBpblxuICAgICAgbGV0IG5hbWUgPSB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWUgfmFyZ19kb2MpIGluXG4gICAgICB7IG5hbWU7IGRvYzsgYWxpYXNlcyB9XG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgZmxhZ3MgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgTWFwLm9mX2FsaXN0IChtb2R1bGUgU3RyaW5nKSAoTGlzdC5tYXAgZmxhZ3MgfmY6KGZ1biBmbGFnIC0+IGZsYWcubmFtZSwgZmxhZykpXG4gICAgICB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGZsYWcgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUgOjogZmxhZy5hbGlhc2VzKVxuICAgICAgICB8PiBMaXN0LmZpbmRfYV9kdXAgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddXG4gICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4geCAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBvciBhbGlhc2VzIG5hbWVkICVzXCIgeCAoKSk7XG4gICAgICAgIG1hcFxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHsgYWN0aW9uIDogYWN0aW9uXG4gICAgOyByZWFkIDogRW52LnQgLT4gJ2EgUGFyc2luZ19vdXRjb21lLnRcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cblxuICB0eXBlICdhIHQgPSBzdHJpbmcgLT4gJ2Egc3RhdGVcblxuICBsZXQgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgeyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICA7IGFjdGlvbiA9XG4gICAgICAgIChsZXQgdXBkYXRlIGVudiBhcmcgPVxuICAgICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhcmcgd2l0aFxuICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlUy5cXG4lc1wiXG4gICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICBhcmdcbiAgICAgICAgICAgICAgIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgfCBPayBhcmcgLT5cbiAgICAgICAgICAgICBsZXQgZW52ID0gd3JpdGUgZW52IGFyZyBpblxuICAgICAgICAgICAgIChtYXRjaCBBcmdfdHlwZS5rZXkgYXJnX3R5cGUgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZW52XG4gICAgICAgICAgICAgIHwgU29tZSBrZXkgLT4gRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTphcmcpXG4gICAgICAgICBpblxuICAgICAgICAgQXJnICh1cGRhdGUsIEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlKSlcbiAgICA7IGV4dHJhX2RvYyA9IEFyZ190eXBlLmV4dHJhX2RvYyBhcmdfdHlwZVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFwX2ZsYWcgKHQgOiBfIHQpIH5mIGlucHV0ID1cbiAgICBsZXQgeyBhY3Rpb247IHJlYWQ7IG51bV9vY2N1cnJlbmNlczsgZXh0cmFfZG9jIH0gPSB0IGlucHV0IGluXG4gICAgeyBhY3Rpb25cbiAgICA7IHJlYWQgPSAoZnVuIGVudiAtPiBQYXJzaW5nX291dGNvbWUubWFwIChyZWFkIGVudikgfmYpXG4gICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICA7IGV4dHJhX2RvY1xuICAgIH1cbiAgOztcblxuICBsZXQgd3JpdGVfb3B0aW9uIG5hbWUga2V5IGVudiBhcmcgPVxuICAgIEVudi51cGRhdGUgZW52IGtleSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBhcmdcbiAgICAgIHwgU29tZSBfIC0+IGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKSlcbiAgOztcblxuICBsZXQgcmVxdWlyZWRfdmFsdWUgP2RlZmF1bHQgYXJnX3R5cGUgbmFtZSBudW1fb2NjdXJyZW5jZXMgPVxuICAgIGxldCBrZXkgPSBFbnYuS2V5LmNyZWF0ZSB+bmFtZSBbJXNleHBfb2Y6IF9dIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBTb21lIHYgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGRlZmF1bHQgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgdlxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgICAgIH5oYXNfYXJnOmZhbHNlXG4gICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lKSkpKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXNcbiAgOztcblxuICBsZXQgcmVxdWlyZWQgYXJnX3R5cGUgbmFtZSA9IHJlcXVpcmVkX3ZhbHVlIGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuXG4gIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSBuYW1lID1cbiAgICByZXF1aXJlZF92YWx1ZSB+ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgb3B0aW9uYWwgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgTm9uZVxuICAgICAgfCBTb21lIF8gYXMgdmFsdWUgLT4gUGFyc2luZ19vdXRjb21lLnJldHVybl93aXRoX2FyZyB2YWx1ZVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19nZW5lcmFsIH5pc19yZXF1aXJlZCB+a2V5X3ZhbHVlIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogdW5pdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52Lm1lbSBlbnYga2V5IHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIHRydWVcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgaWYgaXNfcmVxdWlyZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5lcnJvclxuICAgICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgKEVycm9yLm9mX3N0cmluZyAoc3ByaW50ZiBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lKSkpXG4gICAgICAgIGVsc2UgUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgZmFsc2VcbiAgICBpblxuICAgIGxldCB3cml0ZSBlbnYgPVxuICAgICAgaWYgRW52Lm1lbSBlbnYga2V5XG4gICAgICB0aGVuIGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKVxuICAgICAgZWxzZSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOigpXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uIGVudiA9XG4gICAgICBsZXQgZW52ID1cbiAgICAgICAgT3B0aW9uLmZvbGQga2V5X3ZhbHVlIH5pbml0OmVudiB+ZjooZnVuIGVudiAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgICBFbnYuc2V0X3dpdGhfZGVmYXVsdCBlbnYgfmtleSB+ZGF0YTp2YWx1ZSlcbiAgICAgIGluXG4gICAgICB3cml0ZSBlbnZcbiAgICBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgLT5cbiAgICAgICAgICBsZXQgZW52ID0gYWN0aW9uIGVudiBpblxuICAgICAgICAgIGYgKCk7XG4gICAgICAgICAgZW52XG4gICAgaW5cbiAgICB7IHJlYWRcbiAgICA7IGFjdGlvbiA9IE5vX2FyZyBhY3Rpb25cbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9XG4gICAgICAgIChpZiBpc19yZXF1aXJlZFxuICAgICAgICAgdGhlbiBOdW1fb2NjdXJyZW5jZXMuZXhhY3RseV9vbmNlXG4gICAgICAgICBlbHNlIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2UpXG4gICAgOyBleHRyYV9kb2MgPSBMYXp5LmZyb21fdmFsIE5vbmVcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vX2FyZyBuYW1lID1cbiAgICBub19hcmdfZ2VuZXJhbCBuYW1lIH5pc19yZXF1aXJlZDpmYWxzZSB+a2V5X3ZhbHVlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazpOb25lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19yZXF1aXJlZCB2IG5hbWUgPVxuICAgIG1hcF9mbGFnXG4gICAgICAobm9fYXJnX2dlbmVyYWwgfmlzX3JlcXVpcmVkOnRydWUgfmtleV92YWx1ZTpOb25lIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSlcbiAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT4gdlxuICAgICAgICB8IGZhbHNlIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIG5hbWVcbiAgOztcblxuICBsZXQgbm9fYXJnX3JlZ2lzdGVyIH5rZXkgfnZhbHVlIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsXG4gICAgICBuYW1lXG4gICAgICB+aXNfcmVxdWlyZWQ6ZmFsc2VcbiAgICAgIH5rZXlfdmFsdWU6KFNvbWUgKGtleSwgdmFsdWUpKVxuICAgICAgfmRlcHJlY2F0ZWRfaG9vazpOb25lXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19zb21lIHZhbHVlID1cbiAgICBtYXBfZmxhZyBub19hcmcgfmY6KGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gU29tZSB2YWx1ZVxuICAgICAgfCBmYWxzZSAtPiBOb25lKVxuICA7O1xuXG4gIGxldCBsaXN0ZWQgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpbXSB+bmFtZSBbJXNleHBfb2Y6IF8gbGlzdF0gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSB3aXRoXG4gICAgICB8IFtdIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIFtdXG4gICAgICB8IF8gOjogXyBhcyB2YWx1ZV9saXN0IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdmFsdWVfbGlzdFxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSBFbnYuV2l0aF9kZWZhdWx0LmNoYW5nZSBlbnYga2V5IH5mOihmdW4gbGlzdCAtPiBhcmcgOjogbGlzdCkgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmFueVxuICA7O1xuXG4gIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIExpc3QucmV2IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBmaXJzdCA6OiByZXN0IC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgKGZpcnN0LCByZXN0KVxuICAgICAgfCBbXSAtPlxuICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICB+aGFzX2FyZzpmYWxzZVxuICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIHJlcXVpcmVkIGZsYWc6ICVzXCIgbmFtZSkpKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSBFbnYuV2l0aF9kZWZhdWx0LmNoYW5nZSBlbnYga2V5IH5mOihmdW4gcSAtPiBhcmcgOjogcSkgaW5cbiAgICBhcmdfZmxhZyBuYW1lIGFyZ190eXBlIHJlYWQgd3JpdGUgTnVtX29jY3VycmVuY2VzLmF0X2xlYXN0X29uY2VcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCBhcmdfdHlwZSA9XG4gICAgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSB8PiBtYXBfZmxhZyB+ZjooZnVuICh4LCB4cykgLT4geCA6OiB4cylcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgY21kX2xpbmUgPSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOmNtZF9saW5lIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEVudi5maW5kIGVudiBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fbm9fYXJnIE5vbmVcbiAgICAgIHwgU29tZSBfIGFzIHZhbHVlIC0+IFBhcnNpbmdfb3V0Y29tZS5yZXR1cm5fd2l0aF9hcmcgdmFsdWVcbiAgICBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgeCAtPlxuICAgICAgICAgIGYgeDtcbiAgICAgICAgICBhY3Rpb24gZW52IHhcbiAgICBpblxuICAgIHsgYWN0aW9uID0gUmVzdCAoYWN0aW9uLCBjb21wbGV0ZSlcbiAgICA7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnX2Fib3J0IH5leGl0IF9uYW1lID1cbiAgICB7IGFjdGlvbiA9IE5vX2FyZyAoZnVuIF8gLT4gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChleGl0ICgpKSlcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IHJlYWQgPVxuICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgKCogV2Uga25vdyB0aGF0IHRoZSBmbGFnIHdhc24ndCBwYXNzZWQgaGVyZSBiZWNhdXNlIGlmIGl0IHdhcyBwYXNzZWRcbiAgICAgICAgICAgICAgdGhlbiB0aGUgW2FjdGlvbl0gd291bGQgaGF2ZSBjYWxsZWQgW2V4aXRdLiAqKVxuICAgICAgICAgICBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyAoKSlcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgZXNjYXBlIG5hbWUgPSBlc2NhcGVfZ2VuZXJhbCB+Y29tcGxldGU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmUgbmFtZVxuXG4gIGxldCBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUgfmNvbXBsZXRlIG5hbWUgPVxuICAgIGVzY2FwZV9nZW5lcmFsIH5jb21wbGV0ZTooU29tZSBjb21wbGV0ZSkgfmRlcHJlY2F0ZWRfaG9vazpOb25lIG5hbWVcbiAgOztcblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBub19hcmcgfmhvb2sgbmFtZSA9XG4gICAgICBub19hcmdfZ2VuZXJhbCB+aXNfcmVxdWlyZWQ6ZmFsc2UgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKSB+a2V5X3ZhbHVlOk5vbmUgbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgZXNjYXBlIH5ob29rID0gZXNjYXBlX2dlbmVyYWwgfmNvbXBsZXRlOk5vbmUgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGF0aCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBjcmVhdGUgOiBwYXRoX3RvX2V4ZTpzdHJpbmcgLT4gdFxuICB2YWwgb2ZfcGFydHMgOiBzdHJpbmcgbGlzdCAtPiB0XG4gIHZhbCBhcHBlbmQgOiB0IC0+IHN1YmNvbW1hbmQ6c3RyaW5nIC0+IHRcbiAgdmFsIHJlcGxhY2VfZmlyc3QgOiB0IC0+IGZyb206c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdFxuICB2YWwgcGFydHMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCBwYXJ0c19leGVfYmFzZW5hbWUgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2RvdHMgOiB0IC0+IHN0cmluZ1xuICB2YWwgcG9wX2hlbHAgOiB0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGNyZWF0ZSB+cGF0aF90b19leGUgPSBbIHBhdGhfdG9fZXhlIF1cbiAgbGV0IG9mX3BhcnRzIHBhcnRzID0gTGlzdC5yZXYgcGFydHNcbiAgbGV0IGFwcGVuZCB0IH5zdWJjb21tYW5kID0gc3ViY29tbWFuZCA6OiB0XG4gIGxldCBwYXJ0cyA9IExpc3QucmV2XG5cbiAgbGV0IHBhcnRzX2V4ZV9iYXNlbmFtZSB0ID1cbiAgICBtYXRjaCBMaXN0LnJldiB0IHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZCA6OiB0bCAtPiBGaWxlbmFtZV9iYXNlLmJhc2VuYW1lIGhkIDo6IHRsXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gdW53b3JkcyAocGFydHNfZXhlX2Jhc2VuYW1lIHQpXG4gIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aFxuXG4gIGxldCByZXBsYWNlX2ZpcnN0IHQgfmZyb20gfnRvXyA9XG4gICAgbGV0IHJlYyBhdXggcGFydHMgfmFjYyB+ZnJvbSB+dG9fID1cbiAgICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIFN0cmluZy4oID0gKSBoZCBmcm9tXG4gICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIHRsICh0b18gOjogYWNjKVxuICAgICAgICBlbHNlIGF1eCB0bCB+YWNjOihoZCA6OiBhY2MpIH5mcm9tIH50b19cbiAgICBpblxuICAgIGF1eCAocGFydHMgdCkgfmFjYzpbXSB+ZnJvbSB+dG9fXG4gIDs7XG5cbiAgbGV0IHBvcF9oZWxwID0gZnVuY3Rpb25cbiAgICB8IFwiaGVscFwiIDo6IHQgLT4gdFxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2RvdHMgdCA9XG4gICAgKG1hdGNoIHQgd2l0aFxuICAgICB8IFtdIC0+IFtdXG4gICAgIHwgbGFzdCA6OiBpbml0IC0+IGxhc3QgOjogTGlzdC5tYXAgaW5pdCB+ZjooRm4uY29uc3QgXCIuXCIpKVxuICAgIHw+IHRvX3N0cmluZ1xuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IExpc3QuaXNfZW1wdHlcbmVuZFxuXG5tb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEdyYW1tYXIgOiBzaWdcbiAgICB0eXBlIHQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnRcblxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCBvbmUgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCBtYW55IDogdCAtPiB0XG4gICAgdmFsIG1heWJlIDogdCAtPiB0XG4gICAgdmFsIG1heWJlX2lkZW1wb3RlbnQgOiB0IC0+IHRcbiAgICB2YWwgY29uY2F0IDogdCBsaXN0IC0+IHRcbiAgICB2YWwgYWRfaG9jIDogdXNhZ2U6c3RyaW5nIC0+IHRcblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG5hbWVzIDogdCAtPiBzdHJpbmcgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG5cbiAgICBsZXQgaW52YXJpYW50ID0gU2hhcGUuQW5vbnMuR3JhbW1hci5pbnZhcmlhbnRcbiAgICBsZXQgdXNhZ2UgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLnVzYWdlXG5cbiAgICBsZXQgcmVjIGlzX2ZpeGVkX2FyaXR5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiB0cnVlXG4gICAgICB8IE9uZSBfIC0+IHRydWVcbiAgICAgIHwgTWFueSBfIC0+IGZhbHNlXG4gICAgICB8IE1heWJlIF8gLT4gZmFsc2VcbiAgICAgIHwgQWRfaG9jIF8gLT4gZmFsc2VcbiAgICAgIHwgQ29uY2F0IHRzIC0+XG4gICAgICAgIChtYXRjaCBMaXN0LnJldiB0cyB3aXRoXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgfCBsYXN0IDo6IG90aGVycyAtPlxuICAgICAgICAgICBhc3NlcnQgKExpc3QuZm9yX2FsbCBvdGhlcnMgfmY6aXNfZml4ZWRfYXJpdHkpO1xuICAgICAgICAgICBpc19maXhlZF9hcml0eSBsYXN0KVxuICAgIDs7XG5cbiAgICBsZXQgcmVjIG5hbWVzID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBbXVxuICAgICAgfCBPbmUgcyAtPiBbIHMgXVxuICAgICAgfCBNYW55IHQgLT4gbmFtZXMgdFxuICAgICAgfCBNYXliZSB0IC0+IG5hbWVzIHRcbiAgICAgIHwgQWRfaG9jIHMgLT4gWyBzIF1cbiAgICAgIHwgQ29uY2F0IHRzIC0+IExpc3QuY29uY2F0X21hcCB0cyB+ZjpuYW1lc1xuICAgIDs7XG5cbiAgICBsZXQgemVybyA9IFplcm9cbiAgICBsZXQgb25lIG5hbWUgPSBPbmUgbmFtZVxuXG4gICAgbGV0IG1hbnkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgdCAtPlxuICAgICAgICBpZiBub3QgKGlzX2ZpeGVkX2FyaXR5IHQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwiaXRlcmF0aW9uIG9mIHZhcmlhYmxlLWxlbmd0aCBncmFtbWFycyBzdWNoIGFzICVzIGlzIGRpc2FsbG93ZWRcIlxuICAgICAgICAgICAgKHVzYWdlIHQpXG4gICAgICAgICAgICAoKTtcbiAgICAgICAgTWFueSB0XG4gICAgOztcblxuICAgIGxldCBtYXliZSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+IE1heWJlIHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlX2lkZW1wb3RlbnQgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFplcm8gKCogc3RyYW5nZSwgYnV0IG5vdCBub24tc2Vuc2UgKilcbiAgICAgIHwgTWF5YmUgdCAtPiBNYXliZSB0XG4gICAgICB8IE1hbnkgdCAtPiBNYW55IHRcbiAgICAgIHwgdCAtPiBNYXliZSB0XG4gICAgOztcblxuICAgIGxldCBjb25jYXQgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBaZXJvXG4gICAgICB8IGNhciA6OiBjZHIgLT5cbiAgICAgICAgbGV0IGNhciwgY2RyID1cbiAgICAgICAgICBMaXN0LmZvbGQgY2RyIH5pbml0OihjYXIsIFtdKSB+ZjooZnVuICh0MSwgYWNjKSB0MiAtPlxuICAgICAgICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgICAgICAgIHwgWmVybywgdCB8IHQsIFplcm8gLT4gdCwgYWNjXG4gICAgICAgICAgICB8IF8sIF8gLT5cbiAgICAgICAgICAgICAgaWYgaXNfZml4ZWRfYXJpdHkgdDFcbiAgICAgICAgICAgICAgdGhlbiB0MiwgdDEgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgICAgICAgIFwidGhlIGdyYW1tYXIgJXMgZm9yIGFub255bW91cyBhcmd1bWVudHMgaXMgbm90IHN1cHBvcnRlZCBiZWNhdXNlIHRoZXJlIFxcXG4gICAgICAgICAgICAgICAgICAgaXMgdGhlIHBvc3NpYmlsaXR5IGZvciBhcmd1bWVudHMgKCVzKSBmb2xsb3dpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgXFxcbiAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgKCVzKS4gIFN1cHBvcnRpbmcgc3VjaCBncmFtbWFycyB3b3VsZCBjb21wbGljYXRlIHRoZSBcXFxuICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIHNpZ25pZmljYW50bHkuXCJcbiAgICAgICAgICAgICAgICAgICh1c2FnZSAoQ29uY2F0IChMaXN0LnJldiAodDIgOjogdDEgOjogYWNjKSkpKVxuICAgICAgICAgICAgICAgICAgKHVzYWdlIHQyKVxuICAgICAgICAgICAgICAgICAgKHVzYWdlIHQxKVxuICAgICAgICAgICAgICAgICAgKCkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBjZHIgd2l0aFxuICAgICAgICAgfCBbXSAtPiBjYXJcbiAgICAgICAgIHwgXyA6OiBfIC0+IENvbmNhdCAoTGlzdC5yZXYgKGNhciA6OiBjZHIpKSlcbiAgICA7O1xuXG4gICAgbGV0IGFkX2hvYyB+dXNhZ2UgPSBBZF9ob2MgdXNhZ2VcbiAgZW5kXG5cbiAgbW9kdWxlIFBhcnNlciA6IHNpZ1xuICAgIG1vZHVsZSBCYXNpYyA6IHNpZ1xuICAgICAgdHlwZSArJ2EgdFxuXG4gICAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgICAgdmFsICggPCo+ICkgOiAoJ2EgLT4gJ2IpIHQgLT4gJ2EgdCAtPiAnYiB0XG4gICAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgIGVuZFxuXG4gICAgICB2YWwgZnJvbV9lbnYgOiAoRW52LnQgLT4gJ2EpIC0+ICdhIHRcbiAgICBlbmRcblxuICAgIHR5cGUgKydhIHQgPSAnYSBQYXJzaW5nX291dGNvbWUudCBCYXNpYy50XG5cbiAgICB2YWwgb25lIDogbmFtZTpzdHJpbmcgLT4gJ2EgQXJnX3R5cGUudCAtPiAnYSB0XG4gICAgdmFsIG1heWJlIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHZhbCBzZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHN0b3BfcGFyc2luZyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaW5hbF92YWx1ZSA6ICdhIEJhc2ljLnQgLT4gRW52LnQgLT4gJ2FcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgKCogSWYgZW1hY3MgaGlnaGxpZ2h0cyBbcGFyc2VyXSBhcyBpZiBpdCB3ZXJlIGEga2V5d29yZCwgdGhhdCdzIG9ubHkgYmVjYXVzZVxuICAgICAgICAgICAgIFtwYXJzZXJdIHdhcyBhIGtleXdvcmQgaW4gY2FtbHA0LiBbcGFyc2VyXSBpcyBhIHJlZ3VsYXIgbmFtZSBpbiBPQ2FtbC4gKilcbiAgICAgICAgICBwYXJzZXIgOiAnYSBCYXNpYy50XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHZhbCBjb25zdW1lIDogJ2EgQmFzaWMudCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBDb25zdW1lX3Jlc3VsdC50XG4gICAgdmFsIGNvbXBsZXRlIDogJ2EgQmFzaWMudCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBOb3RoaW5nLnRcblxuICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCAoIDwqPiApIDogKCdhIC0+ICdiKSB0IC0+ICdhIHQgLT4gJ2IgdFxuICAgICAgdmFsICggPj58ICkgOiAnYSB0IC0+ICgnYSAtPiAnYikgLT4gJ2IgdFxuICAgIGVuZFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQmFzaWMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgRG9uZSBvZiAoRW52LnQgLT4gJ2EpXG4gICAgICAgIHwgTW9yZSBvZiAnYSBtb3JlXG4gICAgICAgICgqIEEgW1Rlc3RdIHdpbGwgKGdlbmVyYWxseSkgcmV0dXJuIGEgW0RvbmUgX10gdmFsdWUgaWYgdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBhbmRcbiAgICAgICAgICAgYSBbTW9yZV0gcGFyc2VyIHRvIHVzZSBpZiB0aGVyZSBpcyBhbnkgbW9yZSBpbnB1dC4gKilcbiAgICAgICAgfCBUZXN0IG9mIChtb3JlOmJvb2wgLT4gJ2EgdClcbiAgICAgICAgKCogSWYgd2UncmUgb25seSBjb21wbGV0aW5nLCB3ZSBjYW4ndCBwdWxsIHZhbHVlcyBvdXQsIGJ1dCB3ZSBjYW4gc3RpbGwgc3RlcCB0aHJvdWdoXG4gICAgICAgICAgIFt0XXMgKHdoaWNoIG1heSBoYXZlIGNvbXBsZXRpb24gc2V0IHVwKS4gKilcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIG9mIHBhY2tlZCBsaXN0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIG9mICdhIHRcblxuICAgICAgYW5kICdhIG1vcmUgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBwYXJzZSA6IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+ICdhIHBhcnNlX3Jlc3VsdFxuICAgICAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICAgICAgfVxuXG4gICAgICBhbmQgcGFja2VkID0gUGFja2VkIDogJ2EgdCAtPiBwYWNrZWRcblxuICAgICAgYW5kICdhIHBhcnNlX3Jlc3VsdCA9XG4gICAgICAgIHsgcGFyc2VyIDogJ2EgdFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZV9tb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH0gfmYgPVxuICAgICAgICBsZXQgcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgICAgbGV0IHsgcGFyc2VyOyB1cGRhdGVfZW52IH0gPSBwYXJzZSBhcmcgfmZvcl9jb21wbGV0aW9uIGluXG4gICAgICAgICAgeyBwYXJzZXIgPSBmIHBhcnNlcjsgdXBkYXRlX2VudiB9XG4gICAgICAgIGluXG4gICAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgfVxuICAgICAgOztcblxuICAgICAgbGV0IHBhY2tfZm9yX2NvbXBsZXRpb24gPSBmdW5jdGlvblxuICAgICAgICB8IERvbmUgXyAtPiBbXSAoKiB3b24ndCBjb21wbGV0ZSBvciBjb25zdW1lIGFueXRoaW5nICopXG4gICAgICAgIHwgKE1vcmUgXyB8IFRlc3QgXyB8IFN0b3BfcGFyc2luZyBfKSBhcyB4IC0+IFsgUGFja2VkIHggXVxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gcHMgLT4gcHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9XG4gICAgICAgIG1hdGNoIHRfbGVmdCwgdF9yaWdodCB3aXRoXG4gICAgICAgICgqIFtEb25lXSAqKVxuICAgICAgICB8IERvbmUgZiwgRG9uZSB4IC0+XG4gICAgICAgICAgRG9uZVxuICAgICAgICAgICAgKGZ1biBlbnYgLT5cbiAgICAgICAgICAgICAgIGxldCBmX291dGNvbWUgPSBmIGVudiBpblxuICAgICAgICAgICAgICAgbGV0IHhfb3V0Y29tZSA9IHggZW52IGluXG4gICAgICAgICAgICAgICBmX291dGNvbWUgeF9vdXRjb21lKVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW01vcmVdICopXG4gICAgICAgIHwgTW9yZSBtb3JlLCBfIC0+IHBhcnNlX21vcmUgbW9yZSB+ZjooZnVuIHRsIC0+IHRsIDwqPiB0X3JpZ2h0KVxuICAgICAgICB8IERvbmUgXywgTW9yZSBtb3JlIC0+IHBhcnNlX21vcmUgbW9yZSB+ZjooZnVuIHRyIC0+IHRfbGVmdCA8Kj4gdHIpXG4gICAgICAgICgqIG5leHQgc3RlcCBbT25seV9mb3JfY29tcGxldGlvbl0gKilcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8sIF8gfCBEb25lIF8sIE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICAgIE9ubHlfZm9yX2NvbXBsZXRpb24gKHBhY2tfZm9yX2NvbXBsZXRpb24gdF9sZWZ0IEAgcGFja19mb3JfY29tcGxldGlvbiB0X3JpZ2h0KVxuICAgICAgICAoKiBuZXh0IHN0ZXAgW1N0b3BfcGFyc2luZ10gKilcbiAgICAgICAgfCBTdG9wX3BhcnNpbmcgdGwsIHRyIHwgKERvbmUgXyBhcyB0bCksIFN0b3BfcGFyc2luZyB0ciAtPiBTdG9wX3BhcnNpbmcgKHRsIDwqPiB0cilcbiAgICAgICAgKCogbmV4dCBzdGVwIFtUZXN0XSAqKVxuICAgICAgICB8IFRlc3QgdGVzdCwgXyAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdGVzdCB+bW9yZSA8Kj4gdF9yaWdodClcbiAgICAgICAgfCBEb25lIF8sIFRlc3QgdGVzdCAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdF9sZWZ0IDwqPiB0ZXN0IH5tb3JlKVxuICAgICAgOztcblxuICAgICAgbGV0IHJldHVybiBhID0gRG9uZSAoZnVuIF8gLT4gYSlcbiAgICAgIGxldCAoID4+fCApIHQgZiA9IHJldHVybiBmIDwqPiB0XG4gICAgICBsZXQgZnJvbV9lbnYgZiA9IERvbmUgKGZ1biBlbnYgLT4gZiBlbnYpXG5cbiAgICAgIG1vZHVsZSBGb3Jfb3BlbmluZyA9IHN0cnVjdFxuICAgICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgICAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgb3BlbiBCYXNpY1xuXG4gICAgdHlwZSAnYSB0ID0gJ2EgUGFyc2luZ19vdXRjb21lLnQgQmFzaWMudFxuXG4gICAgbGV0ICggPj58ICkgdCBmID0gdCA+PnwgUGFyc2luZ19vdXRjb21lLm1hcCB+ZlxuICAgIGxldCAoIDwqPiApIHRfbGVmdCB0X3JpZ2h0ID0gcmV0dXJuIFBhcnNpbmdfb3V0Y29tZS4oIDwqPiApIDwqPiB0X2xlZnQgPCo+IHRfcmlnaHRcbiAgICBsZXQgcmV0dXJuIGEgPSByZXR1cm4gKFBhcnNpbmdfb3V0Y29tZS5yZXR1cm4gYSlcbiAgICBsZXQgcmV0dXJuX3dpdGhfYXJnIGEgPSBEb25lIChmdW4gXyAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX3dpdGhfYXJnIGEpXG4gICAgbGV0IHN0b3BfcGFyc2luZyB0ID0gU3RvcF9wYXJzaW5nIHRcblxuICAgIGxldCBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZSA9XG4gICAgICBsZXQgcGFyc2UgYW5vbiB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhbm9uIHdpdGhcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgIGlmIGZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogd2UgZG9uJ3QgKnJlYWxseSogY2FyZSBhYm91dCB0aGlzIHZhbHVlLCBzbyBqdXN0IHB1dCBpbiBhIGR1bW15IHZhbHVlIHNvXG4gICAgICAgICAgICAgICBjb21wbGV0aW9uIGNhbiBjb250aW51ZSAqKVxuICAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRpZSBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlU1xcbiVzXCIgbmFtZSBhbm9uIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKSAoKVxuICAgICAgICB8IE9rIHYgLT5cbiAgICAgICAgICB7IHBhcnNlciA9IHJldHVybl93aXRoX2FyZyB2XG4gICAgICAgICAgOyB1cGRhdGVfZW52ID1cbiAgICAgICAgICAgICAgKGZ1biBlbnYgLT5cbiAgICAgICAgICAgICAgICAgT3B0aW9uLmZvbGQgKEFyZ190eXBlLmtleSBhcmdfdHlwZSkgfmluaXQ6ZW52IH5mOihmdW4gZW52IGtleSAtPlxuICAgICAgICAgICAgICAgICAgIEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6dikpXG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgPSBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSB9XG4gICAgOztcblxuICAgIGxldCBvbmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgVGVzdFxuICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgIGlmIG1vcmVcbiAgICAgICAgICAgdGhlbiBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgRG9uZVxuICAgICAgICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgfmhhc19hcmc6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgKGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzXG4gICAgICAgICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgKHNwcmludGYgXCJtaXNzaW5nIGFub255bW91cyBhcmd1bWVudDogJXNcIiBuYW1lKSkpKSlcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlIHQgPVxuICAgICAgVGVzdFxuICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgIGlmIG1vcmUgdGhlbiByZXR1cm5fd2l0aF9hcmcgKGZ1biBhIC0+IFNvbWUgYSkgPCo+IHQgZWxzZSByZXR1cm4gTm9uZSlcbiAgICA7O1xuXG4gICAgbGV0IHNlcXVlbmNlIHQgPVxuICAgICAgbGV0IHJlYyBsb29wID1cbiAgICAgICAgVGVzdFxuICAgICAgICAgIChmdW4gfm1vcmUgLT5cbiAgICAgICAgICAgICBpZiBtb3JlIHRoZW4gcmV0dXJuIChmdW4gdiBhY2MgLT4gdiA6OiBhY2MpIDwqPiB0IDwqPiBsb29wIGVsc2UgcmV0dXJuIFtdKVxuICAgICAgaW5cbiAgICAgIGxvb3BcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5hbF92YWx1ZSB0IGVudiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRG9uZSBhIC0+IGEgZW52XG4gICAgICB8IFN0b3BfcGFyc2luZyB0IC0+IGZpbmFsX3ZhbHVlIHQgZW52XG4gICAgICB8IFRlc3QgZiAtPiBmaW5hbF92YWx1ZSAoZiB+bW9yZTpmYWxzZSkgZW52XG4gICAgICB8IE1vcmUgXyAtPlxuICAgICAgICAoKiB0aGlzIGRvZXNuJ3QgaGFwcGVuIGJlY2F1c2UgYWxsIG9jY3VycmVuY2VzIG9mIFtNb3JlXSBhcmUgcHJvdGVjdGVkXG4gICAgICAgICAgIGJ5IFtUZXN0XSwgd2hpY2ggbWVhbnMgdGhlcmUgd2lsbCBhbHdheXMgYmUgYW4gZXh0cmEgYXJndW1lbnQgdG8gZ2l2ZVxuICAgICAgICAgICBiZWZvcmUgcmVxdWVzdGluZyB0aGUgZmluYWwgdmFsdWUgKilcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICBmYWlsd2l0aCBcIkJVRzogYXNrZWQgZm9yIGZpbmFsIHZhbHVlIHdoZW4gZG9pbmcgY29tcGxldGlvblwiXG4gICAgOztcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgcGFyc2VyIDogJ2EgQmFzaWMudFxuICAgICAgICA7IHBhcnNlX2ZsYWdzIDogYm9vbFxuICAgICAgICA7IHVwZGF0ZV9lbnYgOiBFbnYudCAtPiBFbnYudFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBsZXQgcmVjIGNvbnN1bWVcbiAgICAgIDogdHlwZSBhLiBhIEJhc2ljLnQgLT4gc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gYSBDb25zdW1lX3Jlc3VsdC50XG4gICAgICA9XG4gICAgICBmdW4gdCBhcmcgfmZvcl9jb21wbGV0aW9uIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRG9uZSBfIC0+IGRpZSBcInRvbyBtYW55IGFub255bW91cyBhcmd1bWVudHNcIiAoKVxuICAgICAgfCBUZXN0IGYgLT4gY29uc3VtZSAoZiB+bW9yZTp0cnVlKSBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICB8IE1vcmUgeyBwYXJzZTsgXyB9IC0+XG4gICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICB7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52IH1cbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4geyAoY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb24pIHdpdGggcGFyc2VfZmxhZ3MgPSBmYWxzZSB9XG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gcGFja2VkIC0+XG4gICAgICAgIChtYXRjaCBwYWNrZWQgd2l0aFxuICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgIHwgUGFja2VkIHQgOjogcmVzdCAtPlxuICAgICAgICAgICBsZXQgKHsgdXBkYXRlX2VudjsgcGFyc2VfZmxhZ3M7IHBhcnNlciB9IDogXyBDb25zdW1lX3Jlc3VsdC50KSA9XG4gICAgICAgICAgICAgY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB1cGRhdGVfZW52XG4gICAgICAgICAgIDsgcGFyc2VfZmxhZ3NcbiAgICAgICAgICAgOyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHBhcnNlciBAIHJlc3QpXG4gICAgICAgICAgIH0pXG4gICAgOztcblxuICAgIGxldCByZWMgY29tcGxldGUgOiB0eXBlIGEuIGEgQmFzaWMudCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBOb3RoaW5nLnQgPVxuICAgICAgZnVuIHQgZW52IH5wYXJ0IC0+XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IERvbmUgXyAtPiBleGl0IDBcbiAgICAgICAgfCBUZXN0IGYgLT4gY29tcGxldGUgKGYgfm1vcmU6dHJ1ZSkgZW52IH5wYXJ0XG4gICAgICAgIHwgTW9yZSB7IGNvbXBsZXRlOyBfIH0gLT4gQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wbGV0ZSBlbnYgfnBhcnRcbiAgICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBjb21wbGV0ZSB0IGVudiB+cGFydFxuICAgICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gdCAtPlxuICAgICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBleGl0IDBcbiAgICAgICAgICAgfCBQYWNrZWQgdCA6OiBfIC0+IGNvbXBsZXRlIHQgZW52IH5wYXJ0KVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gICAgZW5kXG4gIGVuZFxuXG4gIG9wZW4gUGFyc2VyLkZvcl9vcGVuaW5nXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHAgOiAnYSBQYXJzZXIudFxuICAgIDsgZ3JhbW1hciA6IEdyYW1tYXIudFxuICAgIH1cblxuICBsZXQgdDIgdDEgdDIgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIC0+IGExLCBhMikgPCo+IHQxLnAgPCo+IHQyLnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgdDMgdDEgdDIgdDMgPVxuICAgIHsgcCA9IHJldHVybiAoZnVuIGExIGEyIGEzIC0+IGExLCBhMiwgYTMpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQ0IHQxIHQyIHQzIHQ0ID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyBhNCAtPiBhMSwgYTIsIGEzLCBhNCkgPCo+IHQxLnAgPCo+IHQyLnAgPCo+IHQzLnAgPCo+IHQ0LnBcbiAgICA7IGdyYW1tYXIgPSBHcmFtbWFyLmNvbmNhdCBbIHQxLmdyYW1tYXI7IHQyLmdyYW1tYXI7IHQzLmdyYW1tYXI7IHQ0LmdyYW1tYXIgXVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9ybWFsaXplIHN0ciA9XG4gICAgKCogVmVyaWZ5IHRoZSBzdHJpbmcgaXMgbm90IGVtcHR5IG9yIHN1cnJvdW5kZWQgYnkgd2hpdGVzcGFjZSAqKVxuICAgIGxldCBzdHJsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGlmIHN0cmxlbiA9IDAgdGhlbiBmYWlsd2l0aCBcIkVtcHR5IGFub255bW91cyBhcmd1bWVudCBuYW1lIHByb3ZpZGVkXCI7XG4gICAgaWYgU3RyaW5nLiggPD4gKSAoU3RyaW5nLnN0cmlwIHN0cikgc3RyXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJhcmd1bWVudCBuYW1lICVTIGhhcyBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlXCIgc3RyICgpO1xuICAgICgqIElmIHRoZSBzdHJpbmcgY29udGFpbnMgc3BlY2lhbCBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBkb24ndCBkbyBhbnl0aGluZyAqKVxuICAgIGxldCBoYXNfc3BlY2lhbF9jaGFycyA9XG4gICAgICBsZXQgc3BlY2lhbF9jaGFycyA9XG4gICAgICAgIFNldC5vZl9saXN0IChtb2R1bGUgQ2hhcikgWyAnPCc7ICc+JzsgJ1snOyAnXSc7ICcoJzsgJyknOyAneyc7ICd9JyBdXG4gICAgICBpblxuICAgICAgU3RyaW5nLmV4aXN0cyBzdHIgfmY6KFNldC5tZW0gc3BlY2lhbF9jaGFycylcbiAgICBpblxuICAgIGlmIGhhc19zcGVjaWFsX2NoYXJzIHRoZW4gc3RyIGVsc2UgU3RyaW5nLnVwcGVyY2FzZSBzdHJcbiAgOztcblxuICBsZXQgKCAlOiApIG5hbWUgYXJnX3R5cGUgPVxuICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICB7IHAgPSBQYXJzZXIub25lIH5uYW1lIGFyZ190eXBlOyBncmFtbWFyID0gR3JhbW1hci5vbmUgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9hbm9ucyB0IH5mID0geyBwID0gdC5wID4+fCBmOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cbiAgbGV0IG1heWJlIHQgPSB7IHAgPSBQYXJzZXIubWF5YmUgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYXliZSB0LmdyYW1tYXIgfVxuXG4gIGxldCBtYXliZV93aXRoX2RlZmF1bHQgZGVmYXVsdCB0ID1cbiAgICBsZXQgdCA9IG1heWJlIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuIHYgLT4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IHYpIH1cbiAgOztcblxuICBsZXQgc2VxdWVuY2UgdCA9IHsgcCA9IFBhcnNlci5zZXF1ZW5jZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1hbnkgdC5ncmFtbWFyIH1cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgPSB0MiB0IChzZXF1ZW5jZSB0KVxuXG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCB0ID1cbiAgICBsZXQgdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuICh4LCB4cykgLT4geCA6OiB4cykgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgdCA9IHsgcCA9IFBhcnNlci5zdG9wX3BhcnNpbmcgdC5wOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBhZF9ob2MgfnVzYWdlX2FyZyA9XG4gICAgICB7IHAgPVxuICAgICAgICAgIFBhcnNlci5zZXF1ZW5jZVxuICAgICAgICAgICAgKFBhcnNlci5vbmUgfm5hbWU6XCJXSUxMIE5FVkVSIEJFIFBSSU5URURcIiBBcmdfdHlwZS5FeHBvcnQuc3RyaW5nKVxuICAgICAgOyBncmFtbWFyID0gR3JhbW1hci5hZF9ob2MgfnVzYWdlOnVzYWdlX2FyZ1xuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDbWRsaW5lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2Ygc3RyaW5nICogdFxuICAgIHwgQ29tcGxldGUgb2Ygc3RyaW5nXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IG9mX2xpc3QgYXJncyA9IExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0Ok5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+IENvbnMgKGFyZywgYXJncykpXG5cbiAgbGV0IHJlYyB0b19saXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+IHggOjogdG9fbGlzdCB4c1xuICAgIHwgQ29tcGxldGUgeCAtPiBbIHggXVxuICA7O1xuXG4gIGxldCByZWMgZW5kc19pbl9jb21wbGV0ZSA9IGZ1bmN0aW9uXG4gICAgfCBDb21wbGV0ZSBfIC0+IHRydWVcbiAgICB8IE5pbCAtPiBmYWxzZVxuICAgIHwgQ29ucyAoXywgYXJncykgLT4gZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gIDs7XG5cbiAgbGV0IGV4dGVuZCB0IH5leHRlbmQgfnBhdGggPVxuICAgIGlmIGVuZHNfaW5fY29tcGxldGUgdFxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBhdGhfbGlzdCA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXSAoTGlzdC50bCAoUGF0aC5wYXJ0cyBwYXRoKSkgaW5cbiAgICAgIG9mX2xpc3QgKHRvX2xpc3QgdCBAIGV4dGVuZCBwYXRoX2xpc3QpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IFNoYXBlLlByaXZhdGUuS2V5X3R5cGVcblxubGV0IGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBmbGFnX29yX3N1YmNvbW1hbmQgPVxuICBpZiBTdHJpbmcuZXhpc3RzIGZsYWdfb3Jfc3ViY29tbWFuZCB+ZjooZnVuIGMgLT4gQ2hhci4oID0gKSBjICdfJylcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCIlcyAlcyBjb250YWlucyBhbiB1bmRlcnNjb3JlLiBVc2UgYSBkYXNoIGluc3RlYWQuXCJcbiAgICAgIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpXG4gICAgICBmbGFnX29yX3N1YmNvbW1hbmRcbiAgICAgICgpXG47O1xuXG5sZXQgbm9ybWFsaXplIGtleV90eXBlIGtleSA9XG4gIGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBrZXk7XG4gIG1hdGNoIGtleV90eXBlIHdpdGhcbiAgfCBLZXlfdHlwZS5GbGFnIC0+XG4gICAgaWYgU3RyaW5nLmVxdWFsIGtleSBcIi1cIiB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWU6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5leGlzdHMga2V5IH5mOkNoYXIuaXNfd2hpdGVzcGFjZVxuICAgIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZSAoY29udGFpbnMgd2hpdGVzcGFjZSk6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcIi1cIiBrZXkgdGhlbiBrZXkgZWxzZSBcIi1cIiBeIGtleVxuICB8IEtleV90eXBlLlN1YmNvbW1hbmQgLT4gU3RyaW5nLmxvd2VyY2FzZSBrZXlcbjs7XG5cbmxldCBsb29rdXBfZXhwYW5kID0gU2hhcGUuUHJpdmF0ZS5sb29rdXBfZXhwYW5kXG5cbmxldCBsb29rdXBfZXhwYW5kX3dpdGhfYWxpYXNlcyBtYXAgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGFsaXN0ID1cbiAgICBMaXN0LmNvbmNhdF9tYXAgKE1hcC5kYXRhIG1hcCkgfmY6KGZ1biBmbGFnIC0+XG4gICAgICBsZXQgeyBGbGFnLkludGVybmFsLm5hbWVcbiAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgICAgOyBhY3Rpb24gPSBfXG4gICAgICAgICAgOyBkb2MgPSBfXG4gICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgOyBjaGVja19hdmFpbGFibGUgPSBfXG4gICAgICAgICAgOyBuYW1lX21hdGNoaW5nXG4gICAgICAgICAgfVxuICAgICAgICA9XG4gICAgICAgIGZsYWdcbiAgICAgIGluXG4gICAgICBsZXQgZGF0YSA9IGZsYWcsIG5hbWVfbWF0Y2hpbmcgaW5cbiAgICAgIGxldCBhbGlhc2VzID0gYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgQCBhbGlhc2VzIGluXG4gICAgICAobmFtZSwgZGF0YSkgOjogTGlzdC5tYXAgYWxpYXNlcyB+ZjooZnVuIGFsaWFzIC0+IGFsaWFzLCBkYXRhKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5maW5kX2FfZHVwIGFsaXN0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB3aXRoXG4gIHwgTm9uZSAtPiBsb29rdXBfZXhwYW5kIGFsaXN0IHByZWZpeCBrZXlfdHlwZVxuICB8IFNvbWUgKGZsYWcsIF8pIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIGZsYWdzIG5hbWVkICVzXCIgZmxhZyAoKVxuOztcblxubW9kdWxlIENvbW1hbmRfYmFzZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7IGZsYWdzIDogRmxhZy5JbnRlcm5hbC50IE1hcC5NKFN0cmluZykudFxuICAgIDtcbiAgICAgIGFub25zIDogdW5pdCAtPiAoWyBgUGFyc2VfYXJncyBdIC0+IFsgYFJ1bl9tYWluIF0gLT4gdW5pdCkgQW5vbnMuUGFyc2VyLkJhc2ljLnRcbiAgICA7IHVzYWdlIDogQW5vbnMuR3JhbW1hci50XG4gICAgfVxuXG4gIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgbGV0IHN1YmNvbW1hbmRfY21wX2ZzdCAoYSwgXykgKGMsIF8pID0gaGVscF9zY3JlZW5fY29tcGFyZSBhIGNcblxuICAgIGxldCBmbGFnc19oZWxwID8oZGlzcGxheV9oZWxwX2ZsYWdzID0gdHJ1ZSkgdCA9XG4gICAgICBsZXQgZmxhZ3MgPSBNYXAuZGF0YSB0LmZsYWdzIGluXG4gICAgICBsZXQgZmxhZ3MgPVxuICAgICAgICBpZiBkaXNwbGF5X2hlbHBfZmxhZ3NcbiAgICAgICAgdGhlbiBmbGFnc1xuICAgICAgICBlbHNlIExpc3QuZmlsdGVyIGZsYWdzIH5mOihmdW4gZiAtPiBTdHJpbmcuKCA8PiApIGYubmFtZSBcIi1oZWxwXCIpXG4gICAgICBpblxuICAgICAgTGlzdC5jb25jYXRfbWFwIH5mOkZsYWcuSW50ZXJuYWwuRGVwcmVjYXRlZC5oZWxwIGZsYWdzXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZvcm1hdHRlZF9mbGFncyB0ID1cbiAgICBNYXAuZGF0YSB0LmZsYWdzXG4gICAgfD4gTGlzdC5tYXAgfmY6RmxhZy5JbnRlcm5hbC5hbGlnblxuICAgICgqIHRoaXMgc29ydCBwdXRzIG9wdGlvbmFsIGZsYWdzIGFmdGVyIHJlcXVpcmVkIG9uZXMgKilcbiAgICB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGZ1biBhIGIgLT4gU3RyaW5nLmNvbXBhcmUgYS5uYW1lIGIubmFtZSlcbiAgICB8PiBTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS5zb3J0XG4gIDs7XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5CYXNlX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIHQucmVhZG1lIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSlcbiAgICA7IGFub25zID0gR3JhbW1hciB0LnVzYWdlXG4gICAgOyBmbGFncyA9IGZvcm1hdHRlZF9mbGFncyB0XG4gICAgfVxuICA7O1xuXG4gIGxldCBwYXRoX2tleSA9IEVudi5rZXlfY3JlYXRlIFwicGF0aFwiXG4gIGxldCBhcmdzX2tleSA9IEVudi5rZXlfY3JlYXRlIFwiYXJnc1wiXG4gIGxldCBoZWxwX2tleSA9IEVudi5rZXlfY3JlYXRlIFwiaGVscFwiXG5cbiAgbGV0IGluZGVudF9ieV8yIHN0ciA9XG4gICAgU3RyaW5nLnNwbGl0IH5vbjonXFxuJyBzdHJcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGxpbmUgLT4gXCIgIFwiIF4gbGluZSlcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIlxuICA7O1xuXG4gIGxldCBnZXRfZmxhZ19hbmRfYWN0aW9uIHQgYXJnID1cbiAgICBtYXRjaCBsb29rdXBfZXhwYW5kX3dpdGhfYWxpYXNlcyB0LmZsYWdzIGFyZyBGbGFnIHdpdGhcbiAgICB8IEVycm9yIG1zZyAtPiBkaWUgXCIlc1wiIG1zZyAoKVxuICAgIHwgT2sgKGZsYWdfbmFtZSwgZmxhZykgLT4gZmxhZ19uYW1lLCBmbGFnLmFjdGlvblxuICA7O1xuXG4gIGxldCBydW5fZmxhZyB0IGVudiBhcmcgKGFyZ3MgOiBDbWRsaW5lLnQpID1cbiAgICBsZXQgZmxhZywgYWN0aW9uID0gZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyBpblxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBQcmludF9pbmZvX2FuZF9xdWl0IGluZm8gLT5cbiAgICAgIGxldCBjb21wbGV0aW5nID0gQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3MgaW5cbiAgICAgICgqIElmIHdlJ3JlIGRvaW5nIGNvbXBsZXRpb24sIHZlcnNpb24vaGVscCBpbmZvIGFyZW4ndCB1c2VmdWwgY29tcGxldGlvblxuICAgICAgICAgcmVzcG9uc2VzLiAqKVxuICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgdGhlbiBlbnYsIGFyZ3NcbiAgICAgIGVsc2UgKFxuICAgICAgICBwcmludF9lbmRsaW5lIChpbmZvIGVudik7XG4gICAgICAgIGV4aXQgMClcbiAgICB8IE5vX2FyZyBmIC0+IGYgZW52LCBhcmdzXG4gICAgfCBBcmcgKGYsIGNvbXApIC0+XG4gICAgICAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgfCBOaWwgLT4gZGllIFwibWlzc2luZyBhcmd1bWVudCBmb3IgZmxhZyAlc1wiIGZsYWcgKClcbiAgICAgICB8IENvbnMgKGFyZywgcmVzdCkgLT5cbiAgICAgICAgIGxldCBlbnYgPVxuICAgICAgICAgICB0cnkgZiBlbnYgYXJnIHdpdGhcbiAgICAgICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIF8gYXMgZSAtPlxuICAgICAgICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSByZXN0IHRoZW4gZW52IGVsc2UgcmFpc2UgZVxuICAgICAgICAgaW5cbiAgICAgICAgIGVudiwgcmVzdFxuICAgICAgIHwgQ29tcGxldGUgcGFydCAtPiBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcCBlbnYgfnBhcnQpKVxuICAgIHwgUmVzdCAoZiwgY29tcCkgLT5cbiAgICAgIGxldCBhcmdfbGlzdCA9IENtZGxpbmUudG9fbGlzdCBhcmdzIGluXG4gICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJnc1xuICAgICAgdGhlbiBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGUgKENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcCBlbnYgfnBhcnQ6YXJnX2xpc3QpO1xuICAgICAgZiBlbnYgYXJnX2xpc3QsIE5pbFxuICA7O1xuXG4gIGxldCByZWMgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIChjbWRsaW5lIDogQ21kbGluZS50KSB+Zm9yX2NvbXBsZXRpb24gfnBhcnNlX2ZsYWdzID1cbiAgICBtYXRjaCBjbWRsaW5lIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgTGlzdC5pdGVyIChNYXAuZGF0YSB0LmZsYWdzKSB+ZjooZnVuIGZsYWcgLT4gZmxhZy5jaGVja19hdmFpbGFibGUgZW52KTtcbiAgICAgIEFub25zLlBhcnNlci5maW5hbF92YWx1ZSBwYXJzZXIgZW52XG4gICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICBpZiBwYXJzZV9mbGFncyAmJiBTdHJpbmcuaXNfcHJlZml4IHBhcnQgfnByZWZpeDpcIi1cIlxuICAgICAgdGhlbiAoXG4gICAgICAgIExpc3QuaXRlciAoTWFwLmtleXMgdC5mbGFncykgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6cGFydCB0aGVuIHByaW50X2VuZGxpbmUgbmFtZSk7XG4gICAgICAgIGV4aXQgMClcbiAgICAgIGVsc2UgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlIChBbm9ucy5QYXJzZXIuY29tcGxldGUgcGFyc2VyIGVudiB+cGFydClcbiAgICB8IENvbnMgKGFyZywgYXJncykgLT5cbiAgICAgIGxldCBhcmcsIGFyZ3MsIGFyZ19pc19mbGFnID1cbiAgICAgICAgbWF0Y2ggcGFyc2VfZmxhZ3Mgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGFyZywgYXJncywgZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKG1hdGNoIGFyZywgYXJncyB3aXRoXG4gICAgICAgICAgICgqIHRoZSAnLWFub24nIGZsYWcgaXMgaGVyZSBhcyBhbiBlc2NhcGUgaGF0Y2ggaW4gY2FzZSB5b3UgaGF2ZSBhblxuICAgICAgICAgICAgICBhbm9ueW1vdXMgYXJndW1lbnQgdGhhdCBzdGFydHMgd2l0aCBhIGh5cGhlbi4gKilcbiAgICAgICAgICAgfCBcIi1hbm9uXCIsIENvbnMgKGFyZywgYXJncykgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICAgICAoKiBzdXBwb3J0IHRoZSBjb21tb24gVW5peCBjb252ZW50aW9uIHdoZXJlIFwiLVwiIG1lYW5zIHN0ZGluICopXG4gICAgICAgICAgIHwgXCItXCIsIF8gLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICAgICB8IF8sIF8gLT4gYXJnLCBhcmdzLCBTdHJpbmcuaXNfcHJlZml4IGFyZyB+cHJlZml4OlwiLVwiKVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBhcmdfaXNfZmxhZyB3aXRoXG4gICAgICAgfCB0cnVlIC0+XG4gICAgICAgICBsZXQgZW52LCBhcmdzID0gcnVuX2ZsYWcgdCBlbnYgYXJnIGFyZ3MgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciBhcmdzIH5wYXJzZV9mbGFncyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICBsZXQgcGFyc2VfZmxhZ3MxID0gcGFyc2VfZmxhZ3MgaW5cbiAgICAgICAgIGxldCAoeyBwYXJzZXI7IHBhcnNlX2ZsYWdzID0gcGFyc2VfZmxhZ3MyOyB1cGRhdGVfZW52IH1cbiAgICAgICAgICAgICAgOiBfIEFub25zLlBhcnNlci5Db25zdW1lX3Jlc3VsdC50KVxuICAgICAgICAgICA9XG4gICAgICAgICAgIEFub25zLlBhcnNlci5jb25zdW1lIHBhcnNlciBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVudiA9IHVwZGF0ZV9lbnYgZW52IGluXG4gICAgICAgICBsZXQgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczEgJiYgcGFyc2VfZmxhZ3MyIGluXG4gICAgICAgICBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgfnBhcnNlX2ZsYWdzIGFyZ3MgfmZvcl9jb21wbGV0aW9uKVxuICA7O1xuXG4gIGxldCBydW5fZXhuIGV4biB+Zm9yX2NvbXBsZXRpb24gfnBhdGggfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3IgPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIF8gd2hlbiBmb3JfY29tcGxldGlvbiAtPiBleGl0IDBcbiAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzIH0gLT4gZXhpdCBzdGF0dXNcbiAgICB8IF8gLT5cbiAgICAgIGxldCBleG5fc3RyID1cbiAgICAgICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgICAgfCBGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZyAtPiBtc2dcbiAgICAgICAgfCBfIC0+IFNleHAudG9fc3RyaW5nX2h1bSBbJXNleHAgKGV4biA6IGV4bildXG4gICAgICBpblxuICAgICAgbGV0IHZlcmJvc2UgPSBPcHRpb24udmFsdWUgdmVyYm9zZV9vbl9wYXJzZV9lcnJvciB+ZGVmYXVsdDp0cnVlIGluXG4gICAgICBsZXQgZXJyb3JfbXNnID1cbiAgICAgICAgaWYgdmVyYm9zZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICAgICAgfnNlcDpcIlxcblxcblwiXG4gICAgICAgICAgICBbIFwiRXJyb3IgcGFyc2luZyBjb21tYW5kIGxpbmU6XCJcbiAgICAgICAgICAgIDsgaW5kZW50X2J5XzIgZXhuX3N0clxuICAgICAgICAgICAgOyBcIkZvciB1c2FnZSBpbmZvcm1hdGlvbiwgcnVuXCJcbiAgICAgICAgICAgIDsgXCIgIFwiIF4gUGF0aC50b19zdHJpbmcgcGF0aCBeIFwiIC1oZWxwXFxuXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgZWxzZSBleG5fc3RyXG4gICAgICBpblxuICAgICAgcHJlcnJfZW5kbGluZSBlcnJvcl9tc2c7XG4gICAgICBleGl0IDFcbiAgOztcblxuICBsZXQgcnVuXG4gICAgICAgIHRcbiAgICAgICAgZW52XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfmFyZ3NcbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfmhlbHBfdGV4dFxuICAgICAgICB+b25fZmFpbHVyZVxuICAgID1cbiAgICBsZXQgZm9yX2NvbXBsZXRpb24gPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgIGxldCBlbnYgPVxuICAgICAgZW52XG4gICAgICB8PiBFbnYuc2V0IH5rZXk6cGF0aF9rZXkgfmRhdGE6cGF0aFxuICAgICAgfD4gRW52LnNldCB+a2V5OmFyZ3Nfa2V5IH5kYXRhOihDbWRsaW5lLnRvX2xpc3QgYXJncylcbiAgICAgIHw+IEVudi5zZXQgfmtleTpoZWxwX2tleSB+ZGF0YTpoZWxwX3RleHRcbiAgICBpblxuICAgIG1hdGNoXG4gICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICBsZXQgbWFpbiA9XG4gICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgKHQuYW5vbnMgKCkpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3M6dHJ1ZSBhcmdzXG4gICAgICAgIGluXG4gICAgICAgIG1haW4gYFBhcnNlX2FyZ3MpXG4gICAgd2l0aFxuICAgIHwgT2sgdGh1bmsgLT5cbiAgICAgIHdoZW5fcGFyc2luZ19zdWNjZWVkcyAoKTtcbiAgICAgIHRodW5rIGBSdW5fbWFpblxuICAgIHwgRXJyb3IgZXhuIC0+IG9uX2ZhaWx1cmUgZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICA7O1xuXG4gIG1vZHVsZSBQYXJhbSA9IHN0cnVjdFxuICAgIHR5cGUgKydhIHQgPVxuICAgICAgeyBmIDogdW5pdCAtPiAodW5pdCAtPiAnYSBQYXJzaW5nX291dGNvbWUudCkgQW5vbnMuUGFyc2VyLkJhc2ljLnRcbiAgICAgIDsgdXNhZ2UgOiB1bml0IC0+IEFub25zLkdyYW1tYXIudFxuICAgICAgOyBmbGFncyA6IHVuaXQgLT4gRmxhZy5JbnRlcm5hbC50IGxpc3RcbiAgICAgIH1cblxuICAgIG9wZW4gQW5vbnMuUGFyc2VyLkJhc2ljLkZvcl9vcGVuaW5nXG5cbiAgICBsZXQgd3JhcF92YWx1ZSB2ICgpID0gUGFyc2luZ19vdXRjb21lLnJldHVybl9ub19hcmcgdlxuXG4gICAgbGV0IGFwcGx5IGYgeCA9XG4gICAgICB7IGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICByZXR1cm4gKGZ1biBmIHggKCkgLT5cbiAgICAgICAgICAgICAgICgqIG9yZGVyIG9mIGV2YWx1YXRpb24gaGVyZSBhZmZlY3RzIGluIHdoYXQgb3JkZXIgdGhlIHVzZXJzJyBjYWxsYmFja3NcbiAgICAgICAgICAgICAgICAgIGFyZSBldmFsdWF0ZWQsIHNvIGl0J3MgaW1wb3J0YW50IHRvIGNhbGwgW2ZdIGJlZm9yZSBbeF0gKilcbiAgICAgICAgICAgICAgIGxldCBmX291dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgICBsZXQgeF9vdXRjb21lID0geCAoKSBpblxuICAgICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLmFwcGx5IGZfb3V0Y29tZSB4X291dGNvbWUpXG4gICAgICAgICAgICAgPCo+IGYuZiAoKVxuICAgICAgICAgICAgIDwqPiB4LmYgKCkpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiB4LmZsYWdzICgpIEAgZi5mbGFncyAoKSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuY29uY2F0IFsgZi51c2FnZSAoKTsgeC51c2FnZSAoKSBdKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgZW1wdHlfc3BlYyA6ICdtLiAoJ20gLT4gJ20pIHQgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gKGZ1biAoKSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyBGbi5pZCkpXG4gICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG1hcF9vdXRjb21lIHggfmYgPVxuICAgICAgeyBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgeC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biB4ICgpIC0+XG4gICAgICAgICAgICAgbGV0IHhfb3V0Y29tZSA9IHggKCkgaW5cbiAgICAgICAgICAgICBmIHhfb3V0Y29tZSlcbiAgICAgIDsgZmxhZ3MgPSB4LmZsYWdzXG4gICAgICA7IHVzYWdlID0geC51c2FnZVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPSBtYXBfb3V0Y29tZSB4IH5mOihQYXJzaW5nX291dGNvbWUubWFwIH5mKVxuXG4gICAgbGV0IGxvb2t1cCBrZXkgPVxuICAgICAgeyBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgQW5vbnMuUGFyc2VyLkJhc2ljLmZyb21fZW52IChmdW4gZW52IC0+IEVudi5maW5kX2V4biBlbnYga2V5KSA+Pnwgd3JhcF92YWx1ZSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcGF0aCA6IFBhdGgudCB0ID0gbG9va3VwIHBhdGhfa2V5XG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCB0ID0gbG9va3VwIGFyZ3Nfa2V5XG4gICAgbGV0IGhlbHAgOiBzdHJpbmcgTGF6eS50IHQgPSBsb29rdXAgaGVscF9rZXlcblxuICAgICgqIFRoaXMgaXMgb25seSB1c2VkIGludGVybmFsbHksIGZvciB0aGUgaGVscCBjb21tYW5kLiAqKVxuICAgIGxldCBlbnYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuQmFzaWMuZnJvbV9lbnYgKGZ1biBlbnYgLT4gZW52KSA+Pnwgd3JhcF92YWx1ZSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuXG4gICAgICBsZXQgYW5vbiBzcGVjID1cbiAgICAgICAgQW5vbnMuR3JhbW1hci5pbnZhcmlhbnQgc3BlYy5ncmFtbWFyO1xuICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHNwZWMucCA+PnwgZnVuIG91dGNvbWUgKCkgLT4gb3V0Y29tZSlcbiAgICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IHNwZWMuZ3JhbW1hcilcbiAgICAgICAgfVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBlc2NhcGVfYW5vbiB+ZmluYWxfYW5vbiA9XG4gICAgICBBbm9ucy5lc2NhcGUgKHQyIGZpbmFsX2Fub24gKHNlcXVlbmNlIChcIkFSR1wiICU6IHN0cmluZykpKSB8PiBhbm9uXG4gICAgOztcblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEZsYWdcblxuICAgICAgbGV0IG1hcF9mbGFnID0gbWFwX2ZsYWdcbiAgICAgIGxldCBlc2NhcGUgPSBlc2NhcGVcbiAgICAgIGxldCBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGUgPSBlc2NhcGVfd2l0aF9hdXRvY29tcGxldGVcbiAgICAgIGxldCBsaXN0ZWQgPSBsaXN0ZWRcbiAgICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgPSBvbmVfb3JfbW9yZV9hc19saXN0XG4gICAgICBsZXQgbm9fYXJnID0gbm9fYXJnXG4gICAgICBsZXQgbm9fYXJnX3JlcXVpcmVkID0gbm9fYXJnX3JlcXVpcmVkXG4gICAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgICBsZXQgbm9fYXJnX2Fib3J0ID0gbm9fYXJnX2Fib3J0XG4gICAgICBsZXQgbm9fYXJnX3NvbWUgPSBub19hcmdfc29tZVxuICAgICAgbGV0IG9wdGlvbmFsID0gb3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgPSBvcHRpb25hbF93aXRoX2RlZmF1bHRcbiAgICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG5cbiAgICAgIGxldCBmbGFnX2ludGVybmFsXG4gICAgICAgICAgICA/KGFsaWFzZXMgPSBbXSlcbiAgICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgIG1vZGVcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICA9XG4gICAgICAgIGxldCBub3JtYWxpemUgZmxhZyA9IG5vcm1hbGl6ZSBLZXlfdHlwZS5GbGFnIGZsYWcgaW5cbiAgICAgICAgbGV0IG5hbWUgPSBub3JtYWxpemUgbmFtZSBpblxuICAgICAgICBsZXQgYWxpYXNlcyA9IExpc3QubWFwIH5mOm5vcm1hbGl6ZSBhbGlhc2VzIGluXG4gICAgICAgIGxldCB7IHJlYWQ7IGFjdGlvbjsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfSA9IG1vZGUgbmFtZSBpblxuICAgICAgICBsZXQgY2hlY2tfYXZhaWxhYmxlID1cbiAgICAgICAgICBtYXRjaCBudW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSAtPiAoaWdub3JlIDogVW5pdl9tYXAudCAtPiB1bml0KVxuICAgICAgICAgIHwgdHJ1ZSAtPiBmdW4gZW52IC0+IGlnbm9yZSAocmVhZCBlbnYgOiBfKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmFtZV9tYXRjaGluZyA9XG4gICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgZnVsbF9mbGFnX3JlcXVpcmVkIHRoZW4gYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgZWxzZSBgUHJlZml4XG4gICAgICAgIGluXG4gICAgICAgIHsgZiA9XG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBBbm9ucy5QYXJzZXIuQmFzaWMuZnJvbV9lbnYgKGZ1biBlbnYgLT4gcmVhZCBlbnYpID4+fCBmdW4gdiAoKSAtPiB2KVxuICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFsgeyBuYW1lXG4gICAgICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgICAgICAgICAgIDsgZG9jID1cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBmb3JjZSBleHRyYV9kb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBleHRyYV9kb2MgLT4gWyVzdHJpbmcgXCIle2RvY30gJXtleHRyYV9kb2N9XCJdXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGRvYylcbiAgICAgICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICAgICAgICAgICAgICAgOyBjaGVja19hdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nXG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIF0pXG4gICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IGZsYWcgPSBmbGFnX2ludGVybmFsIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbXVxuXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgYXJnX3R5cGVcbiAgICAgICAgICAgIHNleHBfb2ZfZGVmYXVsdFxuICAgICAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgPVxuICAgICAgICBsZXQgZG9jID1cbiAgICAgICAgICBtYXRjaCBzZXhwX29mX2RlZmF1bHQgZGVmYXVsdCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20gXCJfXCIgLT4gZG9jXG4gICAgICAgICAgfCBkZWZhdWx0X3NleHAgLT4gc3ByaW50ZiAhXCIlcyAoZGVmYXVsdDogJXtTZXhwfSlcIiBkb2MgZGVmYXVsdF9zZXhwXG4gICAgICAgIGluXG4gICAgICAgIGZsYWdcbiAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgKG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlKVxuICAgICAgICAgIH5kb2NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgcmV0dXJuIHYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gKGZ1biAoKSAtPiBQYXJzaW5nX291dGNvbWUucmV0dXJuX25vX2FyZyB2KSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci56ZXJvKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVjb3Zlcl9mcm9tX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgdCA9XG4gICAgICB7IHQgd2l0aFxuICAgICAgICBmID1cbiAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgdC5mICgpXG4gICAgICAgICAgICAgPj58IGZ1biBmICgpIC0+XG4gICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBmICgpIGluXG4gICAgICAgICAgICAgUGFyc2luZ19vdXRjb21lLnJlY292ZXJfZnJvbV9taXNzaW5nX3JlcXVpcmVkX2ZsYWdzIG91dGNvbWUpXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0ID1cbiAgICAgIHsgdCB3aXRoXG4gICAgICAgIGYgPVxuICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICB0LmYgKClcbiAgICAgICAgICAgICA+PnwgZnVuIGYgKCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IGYgKCkgaW5cbiAgICAgICAgICAgICBQYXJzaW5nX291dGNvbWUuaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3Mgb3V0Y29tZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG9wdGlvbmFsX3RvX3JlcXVpcmVkIHQgPVxuICAgICAgeyB0IHdpdGhcbiAgICAgICAgZiA9XG4gICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIHQuZiAoKVxuICAgICAgICAgICAgID4+fCBmdW4gZiAoKSAtPlxuICAgICAgICAgICAgIGxldCBvdXRjb21lID0gZiAoKSBpblxuICAgICAgICAgICAgIFBhcnNpbmdfb3V0Y29tZS5pbnRyb2R1Y2VfbWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgKFBhcnNpbmdfb3V0Y29tZS5tYXAgb3V0Y29tZSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmcgXCJbb3B0aW9uYWxfdG9fcmVxdWlyZWRdIGdvdCBhIFtOb25lXSByZXN1bHRcIikpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBPayB2KSkpXG4gICAgICB9XG4gICAgOztcblxuICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgIGVuZClcblxuICAgIGxldCBhcmdfbmFtZXMgdCA9XG4gICAgICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSAodC5mbGFncyAoKSkgaW5cbiAgICAgIGxldCBmbGFnX25hbWVzID0gTWFwLmtleXMgZmxhZ3MgaW5cbiAgICAgIGxldCBhbm9uX25hbWVzID0gQW5vbnMuR3JhbW1hci5uYW1lcyAodC51c2FnZSAoKSkgaW5cbiAgICAgIExpc3QuY29uY2F0IFsgZmxhZ19uYW1lczsgYW5vbl9uYW1lcyBdXG4gICAgOztcblxuICAgIGxldCByZXF1aXJlZF9hcmdfbmFtZXMgdCA9XG4gICAgICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSAodC5mbGFncyAoKSkgaW5cbiAgICAgIExpc3QuZmlsdGVyX21hcCAoTWFwLnRvX2FsaXN0IGZsYWdzKSB+ZjooZnVuIChuYW1lLCBmbGFnKSAtPlxuICAgICAgICBpZiBmbGFnLm51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHRoZW4gU29tZSBuYW1lIGVsc2UgTm9uZSlcbiAgICA7O1xuXG4gICAgbW9kdWxlIENob29zZV9vbmUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgcGFyYW0gPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBDaG9pY2VfbmFtZSA6IHNpZ1xuICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBsaXN0X3RvX3N0cmluZyA6IHQgbGlzdCAtPiBzdHJpbmdcbiAgICAgICAgdmFsIGNyZWF0ZV9leG4gOiAnYSBwYXJhbSAtPiB0XG4gICAgICAgIHZhbCBlbnVtZXJhdGVfcmVxdWlyZWRfZmxhZ3MgOiB0IC0+IGV4Y2VwdDpzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgIHsgYWxsX2FyZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgICAgICAgOyByZXF1aXJlZF9hcmdzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0LmFsbF9hcmdzIDogc3RyaW5nIGxpc3QpXVxuICAgICAgICBlbmRcblxuICAgICAgICBpbmNsdWRlIFRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gcGFyYW0gPVxuICAgICAgICAgIGxldCByZXF1aXJlZF9hcmdzID0gcmVxdWlyZWRfYXJnX25hbWVzIHBhcmFtIGluXG4gICAgICAgICAgbGV0IG5hbWVzID0gYXJnX25hbWVzIHBhcmFtIGluXG4gICAgICAgICAgbGV0IG5hbWVzX3dpdGhfY29tbWFzID0gTGlzdC5maWx0ZXIgbmFtZXMgfmY6KGZ1biBzIC0+IFN0cmluZy5jb250YWlucyBzICcsJykgaW5cbiAgICAgICAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgbmFtZXNfd2l0aF9jb21tYXMpXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgXCJGb3Igc2ltcGxpY2l0eSwgW0NvbW1hbmQuU3BlYy5jaG9vc2Vfb25lXSBkb2VzIG5vdCBzdXBwb3J0IG5hbWVzIHdpdGggXFxcbiAgICAgICAgICAgICAgIGNvbW1hcy5cIlxuICAgICAgICAgICAgICBuYW1lc193aXRoX2NvbW1hc1xuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuICAgICAgICAgICAgfD4gRXJyb3IucmFpc2U7XG4gICAgICAgICAgbWF0Y2ggbmFtZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgICAgWyVtZXNzYWdlIFwiW2Nob29zZV9vbmVdIGV4cGVjdHMgY2hvaWNlcyB0byByZWFkIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXCJdXG4gICAgICAgICAgfCBfIDo6IF8gLT4geyBhbGxfYXJncyA9IG5hbWVzOyByZXF1aXJlZF9hcmdzIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICAgIG1hdGNoIHQucmVxdWlyZWRfYXJncyB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIgdC5hbGxfYXJnc1xuICAgICAgICAgIHwgXyA6OiBfIC0+IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiB0LnJlcXVpcmVkX2FyZ3NcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgZW51bWVyYXRlX3JlcXVpcmVkX2ZsYWdzIHQgfmV4Y2VwdCA9XG4gICAgICAgICAgbWF0Y2ggTGlzdC5maWx0ZXIgdC5yZXF1aXJlZF9hcmdzIH5mOihmdW4geCAtPiBub3QgKFN0cmluZy5lcXVhbCBleGNlcHQgeCkpIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICB8IF8gOjogXyBhcyBsIC0+IFNvbWUgKFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiBsKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBsaXN0X3RvX3N0cmluZyB0cyA9IExpc3QubWFwIHRzIH5mOnRvX3N0cmluZyB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG4gIFwiXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gc3RydWN0XG4gICAgICAgIHR5cGUgKF8sIF8pIHQgPVxuICAgICAgICAgIHwgRGVmYXVsdF90byA6ICdhIC0+ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJhaXNlIDogKCdhLCAnYSkgdFxuICAgICAgICAgIHwgUmV0dXJuX25vbmUgOiAoJ2EsICdhIG9wdGlvbikgdFxuICAgICAgZW5kXG5cbiAgICAgIGxldCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgPyhuZXdfYmVoYXZpb3IgPSB0cnVlKVxuICAgICAgICAgICAgKHRzIDogYSBwYXJhbSBsaXN0KVxuICAgICAgICAgICAgfihpZl9ub3RoaW5nX2Nob3NlbiA6IChhLCBiKSBJZl9ub3RoaW5nX2Nob3Nlbi50KVxuICAgICAgICA9XG4gICAgICAgIGxldCBmaXhfZmxhZyB0ID1cbiAgICAgICAgICBpZiBuZXdfYmVoYXZpb3JcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBuYW1lX29mX3RoZV9ncm91cCA9IENob2ljZV9uYW1lLmNyZWF0ZV9leG4gdCBpblxuICAgICAgICAgICAgbGV0IGZpeF9udW1fb2NjdXJyZW5jZXMgZmxhZyA9XG4gICAgICAgICAgICAgIHsgZmxhZyB3aXRoXG4gICAgICAgICAgICAgICAgRmxhZy5JbnRlcm5hbC5udW1fb2NjdXJyZW5jZXMgPVxuICAgICAgICAgICAgICAgICAgeyBmbGFnLkZsYWcuSW50ZXJuYWwubnVtX29jY3VycmVuY2VzIHdpdGggYXRfbGVhc3Rfb25jZSA9IGZhbHNlIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5kIGZpeF9kb2MgZmxhZyA9XG4gICAgICAgICAgICAgIHsgZmxhZyB3aXRoXG4gICAgICAgICAgICAgICAgRmxhZy5JbnRlcm5hbC5kb2MgPVxuICAgICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICBcIiVzJXNcIlxuICAgICAgICAgICAgICAgICAgICBmbGFnLkZsYWcuSW50ZXJuYWwuZG9jXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICBDaG9pY2VfbmFtZS5lbnVtZXJhdGVfcmVxdWlyZWRfZmxhZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjZXB0OmZsYWcubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfb2ZfdGhlX2dyb3VwXG4gICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGdyb3VwIC0+IHNwcmludGYgXCIgW3JlcXVpcmVzOiBcXFwiJXNcXFwiXVwiIGdyb3VwKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmQgbWFrZV9hbm9uc19vcHRpb25hbCAoYW5vbiA6IEFub25zLkdyYW1tYXIudCkgPVxuICAgICAgICAgICAgICBBbm9ucy5HcmFtbWFyLm1heWJlX2lkZW1wb3RlbnQgYW5vblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgdCB3aXRoXG4gICAgICAgICAgICAgIHVzYWdlID0gKGZ1biAoKSAtPiBtYWtlX2Fub25zX29wdGlvbmFsICh0LnVzYWdlICgpKSlcbiAgICAgICAgICAgIDsgZmxhZ3MgPVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcCAodC5mbGFncyAoKSkgfmY6KGZ1biBmbGFnX2ludGVybmFsIC0+XG4gICAgICAgICAgICAgICAgICAgICBmbGFnX2ludGVybmFsIHw+IGZpeF9udW1fb2NjdXJyZW5jZXMgfD4gZml4X2RvYykpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIGVsc2UgdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQsIGZpeF9mbGFnIHQpXG4gICAgICAgICAgfD4gTWFwLm9mX2FsaXN0IChtb2R1bGUgQ2hvaWNlX25hbWUpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+XG4gICAgICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIltDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gY2FsbGVkIHdpdGggZHVwbGljYXRlIG5hbWVcIlxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgWyVzZXhwX29mOiBDaG9pY2VfbmFtZS50XVxuICAgICAgICAgIHw+IEVycm9yLnJhaXNlXG4gICAgICAgIHwgYE9rIHRzIC0+XG4gICAgICAgICAgTWFwLmZvbGQgdHMgfmluaXQ6KHJldHVybiBbXSkgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6dCBhY2MgLT5cbiAgICAgICAgICAgIG1hcDJcbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIChyZWNvdmVyX2Zyb21fbWlzc2luZ19yZXF1aXJlZF9mbGFncyB0KVxuICAgICAgICAgICAgICB+ZjooZnVuIGFjYyB7IHJlc3VsdCA9IHZhbHVlOyBoYXNfYXJnIH0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBoYXNfYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IGZhbHNlIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgdHJ1ZSAtPiAobmFtZSwgdmFsdWUpIDo6IGFjYykpXG4gICAgICAgICAgfD4gbWFwIH5mOihmdW4gdmFsdWVfbGlzdCAtPlxuICAgICAgICAgICAgbGV0IGFyZ19jb3VudGVyID0gTGlzdC5sZW5ndGggdmFsdWVfbGlzdCBpblxuICAgICAgICAgICAgbGV0IG1pc3NpbmdfZmxhZ19lcnJvciBmbXQgPVxuICAgICAgICAgICAgICBrc3ByaW50ZlxuICAgICAgICAgICAgICAgIChmdW4gbXNnICgpIC0+IEVycm9yIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyAoRXJyb3Iub2Zfc3RyaW5nIG1zZykpKVxuICAgICAgICAgICAgICAgIGZtdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBtb3JlX3RoYW5fb25lX2Vycm9yIHBhc3NlZCA9XG4gICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICFcIkNhbm5vdCBwYXNzIG1vcmUgdGhhbiBvbmUgb2YgdGhlc2U6IFxcblxcXG4gICAgICAgICAgICAgICAgIFxcICAle0Nob2ljZV9uYW1lLmxpc3RfdG9fc3RyaW5nfVwiXG4gICAgICAgICAgICAgICAgKExpc3QubWFwIHBhc3NlZCB+Zjpmc3QpXG4gICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGFuZCBzdWNjZXNzX2xpc3QsIGVycm9yX2xpc3QgPVxuICAgICAgICAgICAgICBMaXN0LnBhcnRpdGlvbl9tYXAgdmFsdWVfbGlzdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICB8IG5hbWUsIE9rIHZhbHVlIC0+IEZpcnN0IChuYW1lLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICB8IG5hbWUsIEVycm9yIGVyciAtPiBTZWNvbmQgKG5hbWUsIGVycikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggc3VjY2Vzc19saXN0IHdpdGhcbiAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gYXMgcGFzc2VkIC0+IG1vcmVfdGhhbl9vbmVfZXJyb3IgcGFzc2VkXG4gICAgICAgICAgICB8IFsgKF8sICh2YWx1ZSA6IGEpKSBdIC0+XG4gICAgICAgICAgICAgIGlmIGFyZ19jb3VudGVyID4gMVxuICAgICAgICAgICAgICB0aGVuIG1vcmVfdGhhbl9vbmVfZXJyb3IgdmFsdWVfbGlzdFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIChfIDogYSkgLT4gKHZhbHVlIDogYilcbiAgICAgICAgICAgICAgICAgICB8IFJhaXNlIC0+ICh2YWx1ZSA6IGIpXG4gICAgICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiAoU29tZSB2YWx1ZSA6IGIpKVxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggZXJyb3JfbGlzdCB3aXRoXG4gICAgICAgICAgICAgICB8IFsgKG5hbWUsIGBNaXNzaW5nX3JlcXVpcmVkX2ZsYWdzIGVycikgXSAtPlxuICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFnc1xuICAgICAgICAgICAgICAgICAgICAgIChFcnJvci5vZl9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm90IGFsbCBmbGFncyBpbiBncm91cCBcXFwiJXNcXFwiIGFyZSBnaXZlbjogJXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDaG9pY2VfbmFtZS50b19zdHJpbmcgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnIpKSkpXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIGlmX25vdGhpbmdfY2hvc2VuIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgRGVmYXVsdF90byB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiBPayBOb25lXG4gICAgICAgICAgICAgICAgICB8IFJhaXNlIC0+XG4gICAgICAgICAgICAgICAgICAgIG1pc3NpbmdfZmxhZ19lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICFcIk11c3QgcGFzcyBvbmUgb2YgdGhlc2U6XFxuICAle0Nob2ljZV9uYW1lLmxpc3RfdG9fc3RyaW5nfVwiXG4gICAgICAgICAgICAgICAgICAgICAgKE1hcC5rZXlzIHRzKVxuICAgICAgICAgICAgICAgICAgICAgICgpKSkpXG4gICAgICAgICAgfD4gaW50cm9kdWNlX21pc3NpbmdfcmVxdWlyZWRfZmxhZ3NcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjaG9vc2Vfb25lXG4gICAgICAgICAgICAodHlwZSBhIGIpXG4gICAgICAgICAgICAodHMgOiBhIG9wdGlvbiBwYXJhbSBsaXN0KVxuICAgICAgICAgICAgfihpZl9ub3RoaW5nX2Nob3NlbiA6IChhLCBiKSBJZl9ub3RoaW5nX2Nob3Nlbi50KVxuICAgICAgICA9XG4gICAgICAgIGNob29zZV9vbmVfbm9uX29wdGlvbmFsXG4gICAgICAgICAgfm5ld19iZWhhdmlvcjpmYWxzZVxuICAgICAgICAgIH5pZl9ub3RoaW5nX2Nob3NlblxuICAgICAgICAgIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBtYXBfb3V0Y29tZSB0IH5mOihmdW4geyBQYXJzaW5nX291dGNvbWUucmVzdWx0OyBoYXNfYXJnIH0gLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICAgICB8IE9rIChTb21lIHZhbHVlKSAtPiB7IFBhcnNpbmdfb3V0Y29tZS5yZXN1bHQgPSBPayB2YWx1ZTsgaGFzX2FyZyA9IHRydWUgfVxuICAgICAgICAgICAgICAgfCBPayBOb25lIC0+XG4gICAgICAgICAgICAgICAgIHsgaGFzX2FyZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgIDsgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIChgTWlzc2luZ19yZXF1aXJlZF9mbGFncyAoRXJyb3Iub2Zfc3RyaW5nIFwibWlzc2luZyByZXF1aXJlZCBmbGFnXCIpKVxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB8IEVycm9yIF8gYXMgcmVzdWx0IC0+IHsgaGFzX2FyZzsgcmVzdWx0IH0pKSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBDaG9vc2Vfb25lLklmX25vdGhpbmdfY2hvc2VuXG5cbiAgICBsZXQgY2hvb3NlX29uZSA9IENob29zZV9vbmUuY2hvb3NlX29uZVxuXG4gICAgbGV0IGNob29zZV9vbmVfbm9uX29wdGlvbmFsIGxzdCB+aWZfbm90aGluZ19jaG9zZW4gPVxuICAgICAgQ2hvb3NlX29uZS5jaG9vc2Vfb25lX25vbl9vcHRpb25hbCBsc3QgfmlmX25vdGhpbmdfY2hvc2VuXG4gICAgOztcblxuICAgIGxldCBhbmRfYXJnX25hbWVzIHQgPSBtYXAgdCB+ZjooZnVuIHZhbHVlIC0+IHZhbHVlLCBhcmdfbmFtZXMgdClcblxuICAgIGxldCBhbmRfYXJnX25hbWUgdCA9XG4gICAgICBtYXRjaCBhcmdfbmFtZXMgdCB3aXRoXG4gICAgICB8IFsgbmFtZSBdIC0+IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIG5hbWUpXG4gICAgICB8IG5hbWVzIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiW2FuZF9hcmdfbmFtZV0gZXhwZWN0cyBleGFjdGx5IG9uZSBuYW1lLCBnb3RcIiB+XzoobmFtZXMgOiBzdHJpbmcgbGlzdCldXG4gICAgOztcblxuICAgIGxldCBwYXJzZSB7IGZsYWdzOyB1c2FnZSA9IF87IGYgfSBhcmdzID1cbiAgICAgIGxldCBjbWRsaW5lID0gQ21kbGluZS5vZl9saXN0IGFyZ3MgaW5cbiAgICAgIGxldCByZXN1bHQgPSByZWYgTm9uZSBpblxuICAgICAgcnVuXG4gICAgICAgIHsgc3VtbWFyeSA9IFwiXCJcbiAgICAgICAgOyByZWFkbWUgPSBOb25lXG4gICAgICAgIDsgZmxhZ3MgPSBmbGFncyAoKSB8PiBGbGFnLkludGVybmFsLmNyZWF0ZVxuICAgICAgICA7IGFub25zID1cbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIGxldCBvcGVuIEFub25zLlBhcnNlci5CYXNpYy5Gb3Jfb3BlbmluZyBpblxuICAgICAgICAgICAgICAgZiAoKVxuICAgICAgICAgICAgICAgPj58IGZ1biBwYXJhbXMgYFBhcnNlX2FyZ3MgYFJ1bl9tYWluIC0+XG4gICAgICAgICAgICAgICBsZXQgb3V0Y29tZSA9IHBhcmFtcyAoKSBpblxuICAgICAgICAgICAgICAgbWF0Y2ggb3V0Y29tZS5yZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyKSAtPiByZXN1bHQgOj0gU29tZSAoRXJyb3IgZXJyKVxuICAgICAgICAgICAgICAgfCBPayB4IC0+IHJlc3VsdCA6PSBTb21lIChPayB4KSlcbiAgICAgICAgOyB1c2FnZSA9IEFub25zLkdyYW1tYXIuemVyb1xuICAgICAgICB9XG4gICAgICAgIFVuaXZfbWFwLmVtcHR5XG4gICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHM6Rm4uaWRcbiAgICAgICAgfmFyZ3M6Y21kbGluZVxuICAgICAgICB+cGF0aDpQYXRoLmVtcHR5XG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yOihTb21lIHRydWUpXG4gICAgICAgIH5oZWxwX3RleHQ6KGxhenkgXCJObyBoZWxwIGZvciBwYXJzaW5nXCIpXG4gICAgICAgIH5vbl9mYWlsdXJlOlxuICAgICAgICAgIChmdW5cbiAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgfmZvcl9jb21wbGV0aW9uOihfIDogYm9vbClcbiAgICAgICAgICAgIH5wYXRoOihfIDogUGF0aC50KVxuICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6KF8gOiBib29sIG9wdGlvbilcbiAgICAgICAgICAgIC0+IHJlc3VsdCA6PSBTb21lIChFcnJvciAoRXJyb3Iub2ZfZXhuIGV4bikpKTtcbiAgICAgIE9wdGlvbi52YWx1ZV9leG4gfmhlcmU6WyVoZXJlXSAhcmVzdWx0XG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgLT4gJ2IpIFBhcmFtLnRcbiAgICB0eXBlICdhIHBhcmFtID0gJ2EgUGFyYW0udFxuXG4gICAgbGV0IGFwcGx5ID0gUGFyYW0uYXBwbHlcbiAgICBsZXQgKCArKyApIHQxIHQyID0gUGFyYW0ubWFwMiB0MSB0MiB+ZjooZnVuIGYxIGYyIHggLT4gZjIgKGYxIHgpKVxuICAgIGxldCAoICs+ICkgdDEgcDIgPSBQYXJhbS5tYXAyIHQxIHAyIH5mOihmdW4gZjEgcDIgeCAtPiAoZjEgeCkgcDIpXG4gICAgbGV0ICggKzwgKSB0MSBwMiA9IFBhcmFtLm1hcDIgcDIgdDEgfmY6KGZ1biBwMiBmMSB4IC0+IGYxICh4IHAyKSlcbiAgICBsZXQgc3RlcCBmID0gUGFyYW0ucmV0dXJuIGZcblxuICAgICgqIElkZWFsbHkgdGhpcyB3b3VsZCBiZSBbbGV0IGVtcHR5ID0gUGFyYW0ucmV0dXJuIEZuLmlkXSwgYnV0IHVuZm9ydHVuYXRlbHkgdGhhdFxuICAgICAgIGRvZXNuJ3QgY29tcGlsZSBiZWNhdXNlIG9mIHRoZSB2YWx1ZSByZXN0cmljdGlvbiAqKVxuICAgIGxldCBlbXB0eSA9IFBhcmFtLmVtcHR5X3NwZWNcbiAgICBsZXQgY29uc3QgeCA9IFBhcmFtLnJldHVybiB4XG4gICAgbGV0IG1hcCA9IFBhcmFtLm1hcFxuICAgIGxldCB3cmFwIGYgdCA9IFBhcmFtLm1hcCB0IH5mOihmdW4gcnVuIG1haW4gLT4gZiB+cnVuIH5tYWluKVxuICAgIGxldCBvZl9wYXJhbSBwID0gbWFwIHAgfmY6KGZ1biBmIGsgLT4gayBmKVxuICAgIGxldCB0b19wYXJhbSB0IG0gPSBtYXAgdCB+ZjooZnVuIGYgLT4gZiBtKVxuICAgIGxldCBwYXRoIDogUGF0aC50IHBhcmFtID0gUGFyYW0ucGF0aFxuICAgIGxldCBhcmdzIDogc3RyaW5nIGxpc3QgcGFyYW0gPSBQYXJhbS5hcmdzXG4gICAgbGV0IGhlbHAgOiBzdHJpbmcgTGF6eS50IHBhcmFtID0gUGFyYW0uaGVscFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gICAgICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gQW5vbnNcblxuICAgICAgdHlwZSAnYSBhbm9ucyA9ICdhIHRcblxuICAgICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgICAgbGV0IG1hcF9hbm9ucyA9IG1hcF9hbm9uc1xuICAgICAgbGV0IG1heWJlID0gbWF5YmVcbiAgICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19saXN0XG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpclxuICAgICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICAgIGxldCB0MiA9IHQyXG4gICAgICBsZXQgdDMgPSB0M1xuICAgICAgbGV0IHQ0ID0gdDRcbiAgICAgIGxldCBhbm9uID0gUGFyYW0uYW5vblxuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uID0gUGFyYW0uZXNjYXBlX2Fub25cblxuICAgIGluY2x1ZGUgc3RydWN0XG4gICAgICBvcGVuIEZsYWdcblxuICAgICAgdHlwZSAnYSBmbGFnID0gJ2EgdFxuXG4gICAgICBsZXQgbWFwX2ZsYWcgPSBtYXBfZmxhZ1xuICAgICAgbGV0IGVzY2FwZSA9IGVzY2FwZVxuICAgICAgbGV0IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZSA9IGVzY2FwZV93aXRoX2F1dG9jb21wbGV0ZVxuICAgICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVxdWlyZWQgPSBub19hcmdfcmVxdWlyZWRcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcbiAgICAgIGxldCBmbGFnID0gUGFyYW0uZmxhZ1xuICAgICAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvYyA9IFBhcmFtLmZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvY1xuXG4gICAgICBpbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSBQYXJhbS50XG5cbiAgICAgICAgICBsZXQgcmV0dXJuID0gUGFyYW0ucmV0dXJuXG4gICAgICAgICAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgcGFpciA9IFBhcmFtLmJvdGhcbiAgICBlbmRcblxuICAgIGxldCBmbGFnc19vZl9hcmdzX2V4biBhcmdzID1cbiAgICAgIExpc3QuZm9sZCBhcmdzIH5pbml0OmVtcHR5IH5mOihmdW4gYWNjIChuYW1lLCBzcGVjLCBkb2MpIC0+XG4gICAgICAgIGxldCBnZW4gZiBmbGFnX3R5cGUgPVxuICAgICAgICAgIHN0ZXAgKGZ1biBtIHggLT5cbiAgICAgICAgICAgIGYgeDtcbiAgICAgICAgICAgIG0pXG4gICAgICAgICAgKz4gUGFyYW0uZmxhZyBuYW1lIGZsYWdfdHlwZSB+ZG9jXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYWxsIGYgYXJnX3R5cGUgPSBnZW4gKGZ1biB4IC0+IE9wdGlvbi5pdGVyIHggfmYpIChQYXJhbS5vcHRpb25hbCBhcmdfdHlwZSkgaW5cbiAgICAgICAgbGV0IHNldCByIGFyZ190eXBlID0gY2FsbCAoZnVuIHggLT4gciA6PSB4KSBhcmdfdHlwZSBpblxuICAgICAgICBsZXQgc2V0X2Jvb2wgciBiID0gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIHIgOj0gYikgUGFyYW0ubm9fYXJnIGluXG4gICAgICAgIGFjY1xuICAgICAgICArK1xuICAgICAgICBtYXRjaCAoc3BlYyA6IFN0ZGxpYi5Bcmcuc3BlYykgd2l0aFxuICAgICAgICB8IFVuaXQgZiAtPiBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gZiAoKSkgUGFyYW0ubm9fYXJnXG4gICAgICAgIHwgU2V0IHIgLT4gc2V0X2Jvb2wgciB0cnVlXG4gICAgICAgIHwgQ2xlYXIgciAtPiBzZXRfYm9vbCByIGZhbHNlXG4gICAgICAgIHwgU3RyaW5nIGYgLT4gY2FsbCBmIHN0cmluZ1xuICAgICAgICB8IFNldF9zdHJpbmcgciAtPiBzZXQgciBzdHJpbmdcbiAgICAgICAgfCBJbnQgZiAtPiBjYWxsIGYgaW50XG4gICAgICAgIHwgU2V0X2ludCByIC0+IHNldCByIGludFxuICAgICAgICB8IEZsb2F0IGYgLT4gY2FsbCBmIGZsb2F0XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT4gc2V0IHIgZmxvYXRcbiAgICAgICAgfCBCb29sIGYgLT4gY2FsbCBmIGJvb2xcbiAgICAgICAgfCBTeW1ib2wgKHN5bXMsIGYpIC0+XG4gICAgICAgICAgbGV0IGFyZ190eXBlID1cbiAgICAgICAgICAgIEFyZ190eXBlLm9mX2FsaXN0X2V4blxuICAgICAgICAgICAgICB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZVxuICAgICAgICAgICAgICAoTGlzdC5tYXAgc3ltcyB+ZjooZnVuIHN5bSAtPiBzeW0sIHN5bSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjYWxsIGYgYXJnX3R5cGVcbiAgICAgICAgfCBSZXN0IGYgLT4gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mOihMaXN0Lml0ZXIgfmYpKSBQYXJhbS5lc2NhcGVcbiAgICAgICAgfCBUdXBsZSBfIC0+XG4gICAgICAgICAgZmFpbHdpdGggXCJBcmcuVHVwbGUgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIlxuICAgICAgICB8ICgoRXhwYW5kIF8pIFtAaWYgb2NhbWxfdmVyc2lvbiA+PSAoNCwgMDUsIDApXSkgLT5cbiAgICAgICAgICBmYWlsd2l0aCBcIkFyZy5FeHBhbmQgaXMgbm90IHN1cHBvcnRlZCBieSBDb21tYW5kLlNwZWMuZmxhZ3Nfb2ZfYXJnc19leG5cIlxuICAgICAgICB8ICgoUmVzdF9hbGwgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMiwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlJlc3RfYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCIpXG4gICAgOztcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEZsYWcuRGVwcmVjYXRlZFxuICAgICAgaW5jbHVkZSBBbm9ucy5EZXByZWNhdGVkXG4gICAgZW5kXG5cbiAgICBsZXQgYXJnX25hbWVzID0gUGFyYW0uYXJnX25hbWVzXG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gPSBQYXJhbS5DaG9vc2Vfb25lLklmX25vdGhpbmdfY2hvc2VuXG5cbiAgICBsZXQgY2hvb3NlX29uZSA9IFBhcmFtLmNob29zZV9vbmVcbiAgICBsZXQgY2hvb3NlX29uZV9ub25fb3B0aW9uYWwgPSBQYXJhbS5jaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgIGxldCBhbmRfYXJnX25hbWVzID0gUGFyYW0uYW5kX2FyZ19uYW1lc1xuICAgIGxldCBhbmRfYXJnX25hbWUgPSBQYXJhbS5hbmRfYXJnX25hbWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEdyb3VwID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIGxpc3QgTGF6eS50XG4gICAgOyBib2R5IDogKHBhdGg6c3RyaW5nIGxpc3QgLT4gdW5pdCkgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBzaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZSB0IDogXyBTaGFwZS5Hcm91cF9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpIHQucmVhZG1lXG4gICAgOyBzdWJjb21tYW5kcyA9IExhenkubWFwIHQuc3ViY29tbWFuZHMgfmY6KExpc3QuQXNzb2MubWFwIH5mOnN1YmNvbW1hbmRfdG9fc2hhcGUpXG4gICAgfVxuICA7O1xuZW5kXG5cbmxldCBhYnNfcGF0aCA9IFNoYXBlLlByaXZhdGUuYWJzX3BhdGhcbmxldCBjb21wX2N3b3JkID0gRW52X3Zhci5DT01QX0NXT1JEXG5cbm1vZHVsZSBFeGVjID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgKCogSWYgW3BhdGhfdG9fZXhlXSBpcyByZWxhdGl2ZSwgaW50ZXJwcmV0IHcuci50LiBbd29ya2luZ19kaXJdICopXG4gICAgICB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19leGUgOiBzdHJpbmdcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsgZW52IDogZW52IG9wdGlvblxuICAgIH1cblxuICBsZXQgc2hhcGUgdCA6IFNoYXBlLkV4ZWNfaW5mby50ID1cbiAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICA7IHJlYWRtZSA9IE9wdGlvbi5tYXAgfmY6KGZ1biByZWFkbWUgLT4gcmVhZG1lICgpKSB0LnJlYWRtZVxuICAgIDsgd29ya2luZ19kaXIgPSB0LndvcmtpbmdfZGlyXG4gICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgPSB0LmNoaWxkX3N1YmNvbW1hbmRcbiAgICB9XG4gIDs7XG5lbmRcblxuKCogQSBwcm94eSBjb21tYW5kIGlzIHRoZSBzdHJ1Y3R1cmUgb2YgYW4gRXhlYyBjb21tYW5kIG9idGFpbmVkIGJ5IHJ1bm5pbmcgaXQgaW4gYVxuICAgc3BlY2lhbCB3YXkgKilcbm1vZHVsZSBQcm94eSA9IHN0cnVjdFxuICBtb2R1bGUgS2luZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IEJhc2Ugb2YgU2hhcGUuQmFzZV9pbmZvLnRcbiAgICAgIHwgR3JvdXAgb2YgJ2EgU2hhcGUuR3JvdXBfaW5mby50XG4gICAgICB8IEV4ZWMgb2YgU2hhcGUuRXhlY19pbmZvLnRcbiAgICAgIHwgTGF6eSBvZiAnYSB0IExhenkudFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgOyBraW5kIDogdCBLaW5kLnRcbiAgICB9XG5lbmRcblxudHlwZSB0ID1cbiAgfCBCYXNlIG9mIENvbW1hbmRfYmFzZS50XG4gIHwgR3JvdXAgb2YgdCBHcm91cC50XG4gIHwgRXhlYyBvZiBFeGVjLnRcbiAgfCBMYXp5IG9mIHQgTGF6eS50XG5cbmxldCByZWMgc2V4cGFibGVfc2hhcGUgOiB0IC0+IFNoYXBlLlNleHBhYmxlLnQgPSBmdW5jdGlvblxuICB8IEJhc2UgYmFzZSAtPiBCYXNlIChDb21tYW5kX2Jhc2Uuc2hhcGUgYmFzZSlcbiAgfCBFeGVjIGV4ZWMgLT4gRXhlYyAoRXhlYy5zaGFwZSBleGVjKVxuICB8IEdyb3VwIGdyb3VwIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzZXhwYWJsZV9zaGFwZSBncm91cClcbiAgfCBMYXp5IHRodW5rIC0+IExhenkgKExhenkubWFwIH5mOnNleHBhYmxlX3NoYXBlIHRodW5rKVxuOztcblxudHlwZSAoJ21haW4sICdyZXN1bHQpIGJhc2ljX3NwZWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nXG4gIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKVxuICAtPiAoJ21haW4sIHVuaXQgLT4gJ3Jlc3VsdCkgQ29tbWFuZF9iYXNlLlNwZWMudFxuICAtPiAnbWFpblxuICAtPiB0XG5cbmxldCBleHRlbmRfZXhuIH5tZW0gfmFkZCBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgaWYgbWVtIG1hcCBrZXlcbiAgdGhlbiBmYWlsd2l0aGYgXCJ0aGVyZSBpcyBhbHJlYWR5IGEgJXMgbmFtZWQgJXNcIiAoS2V5X3R5cGUudG9fc3RyaW5nIGtleV90eXBlKSBrZXkgKCk7XG4gIGFkZCBtYXAgfmtleSB+ZGF0YVxuOztcblxubGV0IGV4dGVuZF9tYXBfZXhuIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgPVxuICBleHRlbmRfZXhuIG1hcCBrZXlfdHlwZSB+a2V5IGRhdGEgfm1lbTpNYXAubWVtIH5hZGQ6TWFwLnNldFxuOztcblxubGV0IGV4dGVuZF9hbGlzdF9leG4gYWxpc3Qga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4blxuICAgIGFsaXN0XG4gICAga2V5X3R5cGVcbiAgICB+a2V5XG4gICAgZGF0YVxuICAgIH5tZW06KGZ1biBhbGlzdCBrZXkgLT4gTGlzdC5Bc3NvYy5tZW0gYWxpc3Qga2V5IH5lcXVhbDpTdHJpbmcuZXF1YWwpXG4gICAgfmFkZDooZnVuIGFsaXN0IH5rZXkgfmRhdGEgLT4gTGlzdC5Bc3NvYy5hZGQgYWxpc3Qga2V5IGRhdGEgfmVxdWFsOlN0cmluZy5lcXVhbClcbjs7XG5cbm1vZHVsZSBCYWlsb3V0X2R1bXBfZmxhZyA9IHN0cnVjdFxuICBsZXQgYWRkIGJhc2Ugfm5hbWUgfmFsaWFzZXMgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIH50ZXh0IH50ZXh0X3N1bW1hcnkgPVxuICAgIGxldCBmbGFncyA9IGJhc2UuQ29tbWFuZF9iYXNlLmZsYWdzIGluXG4gICAgbGV0IGZsYWdzID1cbiAgICAgIGV4dGVuZF9tYXBfZXhuXG4gICAgICAgIGZsYWdzXG4gICAgICAgIEtleV90eXBlLkZsYWdcbiAgICAgICAgfmtleTpuYW1lXG4gICAgICAgIHsgbmFtZVxuICAgICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgIDsgYWxpYXNlc1xuICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IEZsYWcuTnVtX29jY3VycmVuY2VzLmF0X21vc3Rfb25jZVxuICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IGlnbm9yZVxuICAgICAgICA7IGFjdGlvbiA9IFByaW50X2luZm9fYW5kX3F1aXQgKGZ1biBlbnYgLT4gdGV4dCBlbnYpXG4gICAgICAgIDsgZG9jID0gc3ByaW50ZiBcIiBwcmludCAlcyBhbmQgZXhpdFwiIHRleHRfc3VtbWFyeVxuICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBgUHJlZml4XG4gICAgICAgIH1cbiAgICBpblxuICAgIHsgYmFzZSB3aXRoIGZsYWdzIH1cbiAgOztcbmVuZFxuXG5sZXQgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSB7IENvbW1hbmRfYmFzZS5QYXJhbS51c2FnZTsgZmxhZ3M7IGYgfSA9XG4gIGxldCBmbGFncyA9IGZsYWdzICgpIGluXG4gIGxldCB1c2FnZSA9IHVzYWdlICgpIGluXG4gIGxldCBhbm9ucyAoKSA9XG4gICAgbGV0IG9wZW4gQW5vbnMuUGFyc2VyLkJhc2ljLkZvcl9vcGVuaW5nIGluXG4gICAgZiAoKVxuICAgID4+fCBmdW4gcGFyYW1zIGBQYXJzZV9hcmdzIC0+XG4gICAgbGV0IG91dGNvbWUgPSBwYXJhbXMgKCkgaW5cbiAgICBtYXRjaCBvdXRjb21lLnJlc3VsdCB3aXRoXG4gICAgfCBFcnJvciAoYE1pc3NpbmdfcmVxdWlyZWRfZmxhZ3MgZXJyKSAtPiBkaWUgXCIlc1wiIChFcnJvci50b19zdHJpbmdfaHVtIGVycikgKClcbiAgICB8IE9rIHRodW5rIC0+IGZ1biBgUnVuX21haW4gLT4gdGh1bmsgKClcbiAgaW5cbiAgbGV0IGZsYWdzID0gRmxhZy5JbnRlcm5hbC5jcmVhdGUgZmxhZ3MgaW5cbiAgbGV0IGJhc2UgPSB7IENvbW1hbmRfYmFzZS5zdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFnczsgYW5vbnMgfSBpblxuICBsZXQgYmFzZSA9XG4gICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICBiYXNlXG4gICAgICB+bmFtZTpcIi1oZWxwXCJcbiAgICAgIH5hbGlhc2VzOlsgXCItP1wiIF1cbiAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1oZWxwXCIgXVxuICAgICAgfnRleHRfc3VtbWFyeTpcInRoaXMgaGVscCB0ZXh0XCJcbiAgICAgIH50ZXh0OihmdW4gZW52IC0+IExhenkuZm9yY2UgKEVudi5maW5kX2V4biBlbnYgQ29tbWFuZF9iYXNlLmhlbHBfa2V5KSlcbiAgaW5cbiAgQmFzZSBiYXNlXG47O1xuXG5sZXQgYmFzaWNfc3BlYyB+c3VtbWFyeSA/cmVhZG1lIHNwZWMgbWFpbiA9XG4gIGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgKENvbW1hbmRfYmFzZS5TcGVjLnRvX3BhcmFtIHNwZWMgbWFpbilcbjs7XG5cbmxldCBzdWJzX2tleSA6IChzdHJpbmcgKiB0KSBsaXN0IEVudi5LZXkudCA9IEVudi5rZXlfY3JlYXRlIFwic3ViY29tbWFuZHNcIlxuXG5sZXQgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IGFsaXN0ID1cbiAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICBMYXp5Lm1hcCBhbGlzdCB+ZjooZnVuIGFsaXN0IC0+XG4gICAgICBsZXQgYWxpc3QgPVxuICAgICAgICBMaXN0Lm1hcCBhbGlzdCB+ZjooZnVuIChuYW1lLCB0KSAtPiBub3JtYWxpemUgS2V5X3R5cGUuU3ViY29tbWFuZCBuYW1lLCB0KVxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1hcC5vZl9hbGlzdCAobW9kdWxlIFN0cmluZykgYWxpc3Qgd2l0aFxuICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+IGZhaWx3aXRoZiBcIm11bHRpcGxlIHN1YmNvbW1hbmRzIG5hbWVkICVzXCIgbmFtZSAoKVxuICAgICAgfCBgT2sgbWFwIC0+XG4gICAgICAgIChtYXRjaCBwcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyIHdpdGhcbiAgICAgICAgIHwgU29tZSAoKSAtPiBhbGlzdFxuICAgICAgICAgfCBOb25lIC0+IE1hcC50b19hbGlzdCBtYXApKVxuICBpblxuICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuOztcblxubGV0IGdyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgcmVhZG1lID0gT3B0aW9uLm1hcCByZWFkbWUgfmY6KGZ1biBmICgpIC0+IFN0cmluZy5zdHJpcCAoZiAoKSkpIGluXG4gIGxhenlfZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSAoTGF6eS5mcm9tX3ZhbCBhbGlzdClcbjs7XG5cbmxldCBleGVjIH5zdW1tYXJ5ID9yZWFkbWUgPyhjaGlsZF9zdWJjb21tYW5kID0gW10pID9lbnYgfnBhdGhfdG9fZXhlICgpID1cbiAgbGV0IHdvcmtpbmdfZGlyID1cbiAgICBGaWxlbmFtZV9iYXNlLmRpcm5hbWVcbiAgICBAQFxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBfIHwgYFJlbGF0aXZlX3RvX21lIF8gLT4gU3RkbGliLlN5cy5leGVjdXRhYmxlX25hbWVcbiAgICB8IGBSZWxhdGl2ZV90b19hcmd2MCBfIC0+IFN0ZGxpYi5TeXMuYXJndi4oMClcbiAgaW5cbiAgbGV0IHBhdGhfdG9fZXhlID1cbiAgICBtYXRjaCBwYXRoX3RvX2V4ZSB3aXRoXG4gICAgfCBgQWJzb2x1dGUgcCAtPlxuICAgICAgaWYgbm90IChGaWxlbmFtZV9iYXNlLmlzX2Fic29sdXRlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYEFic29sdXRlIG11c3QgYmUgYWJzb2x1dGVcIlxuICAgICAgZWxzZSBwXG4gICAgfCBgUmVsYXRpdmVfdG9fbWUgcCB8IGBSZWxhdGl2ZV90b19hcmd2MCBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lX2Jhc2UuaXNfcmVsYXRpdmUgcClcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJQYXRoIHBhc3NlZCB0byBgUmVsYXRpdmVfdG9fbWUgbXVzdCBiZSByZWxhdGl2ZVwiXG4gICAgICBlbHNlIHBcbiAgaW5cbiAgRXhlYyB7IHN1bW1hcnk7IHJlYWRtZTsgd29ya2luZ19kaXI7IHBhdGhfdG9fZXhlOyBjaGlsZF9zdWJjb21tYW5kOyBlbnYgfVxuOztcblxubGV0IG9mX2xhenkgdGh1bmsgPSBMYXp5IHRodW5rXG5cbmxldCByZWMgcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICA6IFByb3h5LnRcbiAgPVxuICBsZXQga2luZCA9XG4gICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgc2V4cGFibGVcbiAgICAgIH53b3JraW5nX2RpclxuICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICBpblxuICB7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgcGF0aF90b19zdWJjb21tYW5kOyBjaGlsZF9zdWJjb21tYW5kOyBraW5kIH1cblxuYW5kIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgPVxuICBtYXRjaCAoc2V4cGFibGUgOiBTaGFwZS5TZXhwYWJsZS50KSB3aXRoXG4gIHwgQmFzZSBiIC0+IFByb3h5LktpbmQuQmFzZSBiXG4gIHwgRXhlYyBlIC0+IFByb3h5LktpbmQuRXhlYyBlXG4gIHwgTGF6eSBsIC0+XG4gICAgUHJveHkuS2luZC5MYXp5XG4gICAgICAoTGF6eS5tYXAgbCB+ZjooZnVuIHNleHBhYmxlIC0+XG4gICAgICAgICBraW5kX29mX3NleHBhYmxlXG4gICAgICAgICAgIHNleHBhYmxlXG4gICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZCkpXG4gIHwgR3JvdXAgZyAtPlxuICAgIFByb3h5LktpbmQuR3JvdXBcbiAgICAgIHsgZyB3aXRoXG4gICAgICAgIHN1YmNvbW1hbmRzID1cbiAgICAgICAgICBMYXp5Lm1hcFxuICAgICAgICAgICAgZy5zdWJjb21tYW5kc1xuICAgICAgICAgICAgfmY6XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCB+ZjooZnVuIChzdHIsIHNleHBhYmxlKSAtPlxuICAgICAgICAgICAgICAgICBsZXQgcGF0aF90b19zdWJjb21tYW5kID0gcGF0aF90b19zdWJjb21tYW5kIEAgWyBzdHIgXSBpblxuICAgICAgICAgICAgICAgICBsZXQgcHJveHkgPVxuICAgICAgICAgICAgICAgICAgIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICAgICAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICAgICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIHN0ciwgcHJveHkpKVxuICAgICAgfVxuOztcblxubW9kdWxlIFZlcnNpb25faW5mbyAoVmVyc2lvbl91dGlsIDogVmVyc2lvbl91dGlsKSA9IHN0cnVjdFxuICBsZXQgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbiA9IHByaW50X2VuZGxpbmUgKGZvcmNlIHZlcnNpb24pXG4gIGxldCBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgYnVpbGRfaW5mbylcblxuICBsZXQgY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwicHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvblwiXG4gICAgICBDb21tYW5kX2Jhc2UuUGFyYW0uKFxuICAgICAgICByZXR1cm4gKGZ1biB2ZXJzaW9uX2ZsYWcgYnVpbGRfaW5mb19mbGFnIC0+XG4gICAgICAgICAgaWYgYnVpbGRfaW5mb19mbGFnXG4gICAgICAgICAgdGhlbiBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvXG4gICAgICAgICAgZWxzZSBpZiB2ZXJzaW9uX2ZsYWdcbiAgICAgICAgICB0aGVuIHByaW50X3ZlcnNpb24gfnZlcnNpb25cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgICBwcmludF92ZXJzaW9uIH52ZXJzaW9uKTtcbiAgICAgICAgICBleGl0IDApXG4gICAgICAgIDwqPiBmbGFnIFwiLXZlcnNpb25cIiBub19hcmcgfmRvYzpcIiBwcmludCB0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgPCo+IGZsYWcgXCItYnVpbGQtaW5mb1wiIG5vX2FyZyB+ZG9jOlwiIHByaW50IGJ1aWxkIGluZm8gZm9yIHRoaXMgYnVpbGRcIilcbiAgOztcblxuICBsZXQgcmVjIGFkZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyB1bnZlcnNpb25lZCA9XG4gICAgbWF0Y2ggdW52ZXJzaW9uZWQgd2l0aFxuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYmFzZSA9XG4gICAgICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgICAgIGJhc2VcbiAgICAgICAgICB+bmFtZTpcIi12ZXJzaW9uXCJcbiAgICAgICAgICB+YWxpYXNlczpbXVxuICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS12ZXJzaW9uXCIgXVxuICAgICAgICAgIH50ZXh0X3N1bW1hcnk6XCJ0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgICB+dGV4dDooZnVuIF8gLT4gZm9yY2UgdmVyc2lvbilcbiAgICAgIGluXG4gICAgICBsZXQgYmFzZSA9XG4gICAgICAgIEJhaWxvdXRfZHVtcF9mbGFnLmFkZFxuICAgICAgICAgIGJhc2VcbiAgICAgICAgICB+bmFtZTpcIi1idWlsZC1pbmZvXCJcbiAgICAgICAgICB+YWxpYXNlczpbXVxuICAgICAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1idWlsZC1pbmZvXCIgXVxuICAgICAgICAgIH50ZXh0X3N1bW1hcnk6XCJpbmZvIGFib3V0IHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSBidWlsZF9pbmZvKVxuICAgICAgaW5cbiAgICAgIEJhc2UgYmFzZVxuICAgIHwgR3JvdXAgZ3JvdXAgLT5cbiAgICAgIGxldCBzdWJjb21tYW5kcyA9XG4gICAgICAgIExhenkubWFwIGdyb3VwLkdyb3VwLnN1YmNvbW1hbmRzIH5mOihmdW4gc3ViY29tbWFuZHMgLT5cbiAgICAgICAgICBleHRlbmRfYWxpc3RfZXhuXG4gICAgICAgICAgICBzdWJjb21tYW5kc1xuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcInZlcnNpb25cIlxuICAgICAgICAgICAgKGNvbW1hbmQgfnZlcnNpb24gfmJ1aWxkX2luZm8pKVxuICAgICAgaW5cbiAgICAgIEdyb3VwIHsgZ3JvdXAgd2l0aCBHcm91cC5zdWJjb21tYW5kcyB9XG4gICAgfCBFeGVjIGV4ZWMgLT4gRXhlYyBleGVjXG4gICAgfCBMYXp5IHRodW5rIC0+IExhenkgKGxhenkgKGFkZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBub3JtYWxpemVfdmVyc2lvbl9saW5lcyBsaW5lcyA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCIgKExpc3Quc29ydCBsaW5lcyB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZGVmYXVsdF92ZXJzaW9uID0gbGF6eSAobm9ybWFsaXplX3ZlcnNpb25fbGluZXMgVmVyc2lvbl91dGlsLnZlcnNpb25fbGlzdClcblxuICBsZXQgZGVmYXVsdF9idWlsZF9pbmZvID1cbiAgICBsYXp5XG4gICAgICAoKiBsYXp5IHRvIGF2b2lkIGxvYWRpbmcgYWxsIHRoZSB0aW1lIHpvbmUgc3R1ZmYgYXQgdG9wbGV2ZWwgKilcbiAgICAgIChWZXJzaW9uX3V0aWwucmVwcmludF9idWlsZF9pbmZvIFZlcnNpb25fdXRpbC5UaW1lLnNleHBfb2ZfdClcbiAgOztcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXCJWZXJzaW9uX2luZm9cIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIFZlcnNpb25faW5mbyA9IFZlcnNpb25faW5mbyAoc3RydWN0XG4gICAgICAgIGxldCB2ZXJzaW9uX2xpc3QgPSBbIFwiaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlwiOyBcInNzaDovL2EvcGF0aF84YmFkZjAwZFwiIF1cbiAgICAgICAgbGV0IHJlcHJpbnRfYnVpbGRfaW5mbyB0b19zZXhwID0gU2V4cC50b19zdHJpbmcgKHRvX3NleHAgKCkpXG5cbiAgICAgICAgbW9kdWxlIFRpbWUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgIGVuZFxuICAgICAgZW5kKVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicHJpbnQgdmVyc2lvbiB3aGVyZSBtdWx0aXBsZSByZXBvcyBhcmUgdXNlZFwiID1cbiAgICAgIFZlcnNpb25faW5mby5wcmludF92ZXJzaW9uIH52ZXJzaW9uOlZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb247XG4gICAgICBbJWV4cGVjdCB7fFxuICAgICAgICBoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXG4gICAgICAgIHNzaDovL2EvcGF0aF84YmFkZjAwZCB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwicHJpbnQgYnVpbGQgaW5mb1wiID1cbiAgICAgIFZlcnNpb25faW5mby5wcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvOihsYXp5IFwic29tZSBidWlsZCBpbmZvXCIpO1xuICAgICAgWyVleHBlY3Qge3wgc29tZSBidWlsZCBpbmZvIHx9XVxuICAgIDs7XG4gIGVuZClcbjs7XG5cbmxldCByZWMgc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzZSB4IC0+IHguc3VtbWFyeVxuICB8IEdyb3VwIHggLT4geC5zdW1tYXJ5XG4gIHwgRXhlYyB4IC0+IHguc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gc3VtbWFyeSAoTGF6eS5mb3JjZSB0aHVuaylcbjs7XG5cbm1vZHVsZSBTcGVjID0gc3RydWN0XG4gIGluY2x1ZGUgQ29tbWFuZF9iYXNlLlNwZWNcblxuICBsZXQgcGF0aCA9IG1hcCB+ZjpQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoXG5lbmRcblxubW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwZWMgPSBTcGVjLkRlcHJlY2F0ZWRcblxuICBsZXQgc3VtbWFyeSA9IHN1bW1hcnlcblxuICBsZXQgcmVjIGdldF9mbGFnX25hbWVzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgYmFzZSAtPiBiYXNlLkNvbW1hbmRfYmFzZS5mbGFncyB8PiBNYXAua2V5c1xuICAgIHwgTGF6eSB0aHVuayAtPiBnZXRfZmxhZ19uYW1lcyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICB8IEdyb3VwIF8gfCBFeGVjIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGhlbHBfcmVjdXJzaXZlIH5jbWQgfndpdGhfZmxhZ3MgfmV4cGFuZF9kb3RzIHQgcyA9XG4gICAgbGV0IHJlYyBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZCB0IHMgPVxuICAgICAgbGV0IG5ld19zID0gcyBeIChpZiBleHBhbmRfZG90cyB0aGVuIGNtZCBlbHNlIFwiLlwiKSBeIFwiIFwiIGluXG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgICBsZXQgdCA9IExhenkuZm9yY2UgdGh1bmsgaW5cbiAgICAgICAgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzXG4gICAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgICBsZXQgYmFzZV9oZWxwID0gcyBeIGNtZCwgc3VtbWFyeSAoQmFzZSBiYXNlKSBpblxuICAgICAgICBpZiB3aXRoX2ZsYWdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBiYXNlX2hlbHBcbiAgICAgICAgICA6OiBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgfmY6KGZ1biAoZmxhZywgaCkgLT4gbmV3X3MgXiBmbGFnLCBoKVxuICAgICAgICAgICAgICAgKExpc3Quc29ydFxuICAgICAgICAgICAgICAgICAgfmNvbXBhcmU6Q29tbWFuZF9iYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICAgICAgICAoQ29tbWFuZF9iYXNlLkRlcHJlY2F0ZWQuZmxhZ3NfaGVscCB+ZGlzcGxheV9oZWxwX2ZsYWdzOmZhbHNlIGJhc2UpKVxuICAgICAgICBlbHNlIFsgYmFzZV9oZWxwIF1cbiAgICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyBzdWJjb21tYW5kczsgcmVhZG1lID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgICAocyBeIGNtZCwgc3VtbWFyeSlcbiAgICAgICAgOjogKExhenkuZm9yY2Ugc3ViY29tbWFuZHNcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpDb21tYW5kX2Jhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIChjbWQnLCB0KSAtPiBoZWxwX3JlY3Vyc2l2ZV9yZWMgfmNtZDpjbWQnIHQgbmV3X3MpXG4gICAgICAgICAgIClcbiAgICAgIHwgRXhlYyBfIC0+XG4gICAgICAgICgqIENvbW1hbmQuZXhlYyBkb2VzIG5vdCBzdXBwb3J0IGRlcHJlY2F0ZWQgY29tbWFuZHMgKilcbiAgICAgICAgW11cbiAgICBpblxuICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfdW5peCAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IHN0cmluZykgPVxuc3RydWN0XG4gIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIuVmVyc2lvbl91dGlsKVxuXG4gIG1vZHVsZSBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IEVudl92YXIudCA9IHN0cnVjdFxuICAgICgqIFdlIGZvcmNlIGFjY2VzcyB0byBlbnYgdmFycyB0byBnbyB0aHJvdWdoIFtDb21tYW5kX2Vudl92YXJdIHNvIHRoYXQgd2UgY2FuIGtlZXAgYW5cbiAgICAgICBhY2N1cmF0ZSBlbnVtZXJhdGlvbiBvZiB0aGUgdmFyaWFibGVzIHdlIHVzZS4gKilcblxuICAgIGluY2x1ZGUgRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhclxuXG4gICAgbW9kdWxlIFVuaXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVW5peFxuXG4gICAgICBsZXQgcHV0ZW52IH5rZXkgfmRhdGEgPSBwdXRlbnYgfmtleTooRW52X3Zhci50b19zdHJpbmcga2V5KSB+ZGF0YVxuICAgICAgbGV0IHVuc2V0ZW52IGtleSA9IHVuc2V0ZW52IChFbnZfdmFyLnRvX3N0cmluZyBrZXkpXG4gICAgICBsZXQgdW5zYWZlX2dldGVudiBrZXkgPSB1bnNhZmVfZ2V0ZW52IChFbnZfdmFyLnRvX3N0cmluZyBrZXkpXG5cbiAgICAgIGxldCBjb252ZXJ0X2VudiBlbnYgPVxuICAgICAgICBsZXQgY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QgPVxuICAgICAgICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAoZW52X3Zhciwgc3RyKSAtPiBFbnZfdmFyLnRvX3N0cmluZyBlbnZfdmFyLCBzdHIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGVudiB3aXRoXG4gICAgICAgIHwgYFJlcGxhY2UgbGlzdCAtPiBgUmVwbGFjZSAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYEV4dGVuZCBsaXN0IC0+IGBFeHRlbmQgKGNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0cmluZyBsaXN0KVxuICAgICAgICB8IGBPdmVycmlkZSBsaXN0IC0+IGBPdmVycmlkZSAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYFJlcGxhY2VfcmF3IF8gYXMgcmVwbGFjZSAtPiByZXBsYWNlXG4gICAgICA7O1xuXG4gICAgICBsZXQgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudiAoKSA9XG4gICAgICAgIGV4ZWMgfnByb2cgfmFyZ3YgP3VzZV9wYXRoID9lbnY6KE9wdGlvbi5tYXAgZW52IH5mOmNvbnZlcnRfZW52KSAoKVxuICAgICAgOztcblxuICAgICAgbGV0IGNyZWF0ZV9wcm9jZXNzX2VudiA/d29ya2luZ19kaXIgP3Byb2dfc2VhcmNoX3BhdGggP2FyZ3YwIH5wcm9nIH5hcmdzIH5lbnYgKCkgPVxuICAgICAgICBjcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICA/d29ya2luZ19kaXJcbiAgICAgICAgICA/cHJvZ19zZWFyY2hfcGF0aFxuICAgICAgICAgID9hcmd2MFxuICAgICAgICAgIH5wcm9nXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+ZW52Oihjb252ZXJ0X2VudiBlbnYpXG4gICAgICAgICAgKClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG9wZW4gRm9yX3VuaXhfd2l0aF9jb21tYW5kX2Vudl92YXJcblxuICAoKiBDbGVhciB0aGUgc2V0dGluZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSBhc3NvY2lhdGVkIHdpdGggY29tbWFuZC1saW5lXG4gICAgIGNvbXBsZXRpb24gYW5kIHJlY3Vyc2l2ZSBoZWxwIHNvIHRoYXQgc3VicHJvY2Vzc2VzIGRvbid0IHNlZSB0aGVtLlxuXG4gICAgIFVzZSBbdW5zYWZlX2dldGVudl0gc28gc2V0dWlkLXJvb3QgcHJvZ3JhbXMgY2FuIHN0aWxsIHJlYWQgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICAgICBUaGVyZSBpcyBubyBzZWN1cml0eSByaXNrIGhlcmUgYmVjYXVzZSB0aGUgdmFsdWVzIGFyZSBvbmx5IHVzZWQgYXMgdHJpZ2dlcnMgdG8gZHVtcFxuICAgICBvdXQgY29tbWFuZCBpbmZvcm1hdGlvbi4gKilcbiAgbGV0IGdldGVudl9hbmRfY2xlYXIgdmFyID1cbiAgICBsZXQgdmFsdWUgPSBVbml4LnVuc2FmZV9nZXRlbnYgdmFyIGluXG4gICAgaWYgT3B0aW9uLmlzX3NvbWUgdmFsdWUgdGhlbiBVbml4LnVuc2V0ZW52IHZhcjtcbiAgICB2YWx1ZVxuICA7O1xuXG4gIGxldCBtYXliZV9jb21wX2N3b3JkICgpID0gZ2V0ZW52X2FuZF9jbGVhciBjb21wX2N3b3JkIHw+IE9wdGlvbi5tYXAgfmY6SW50Lm9mX3N0cmluZ1xuXG4gIGxldCBzZXRfY29tcF9jd29yZCBuZXdfdmFsdWUgPVxuICAgIGxldCBuZXdfdmFsdWUgPSBJbnQudG9fc3RyaW5nIG5ld192YWx1ZSBpblxuICAgIFVuaXgucHV0ZW52IH5rZXk6Y29tcF9jd29yZCB+ZGF0YTpuZXdfdmFsdWVcbiAgOztcblxuICBtb2R1bGUgRXhlYyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhlY1xuXG4gICAgbGV0IGV4ZWNfd2l0aF9hcmdzIHQgfmFyZ3Mgfm1heWJlX25ld19jb21wX2N3b3JkID1cbiAgICAgIGxldCBwcm9nID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGUgaW5cbiAgICAgIGxldCBhcmdzID0gdC5jaGlsZF9zdWJjb21tYW5kIEAgYXJncyBpblxuICAgICAgbGV0IGVudiA9IHQuZW52IGluXG4gICAgICBPcHRpb24uaXRlciBtYXliZV9uZXdfY29tcF9jd29yZCB+ZjooZnVuIG4gLT5cbiAgICAgICAgKCogVGhlIGxvZ2ljIGZvciB0cmFja2luZyBbbWF5YmVfbmV3X2NvbXBfY3dvcmRdIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgd2hldGhlclxuICAgICAgICAgICB0aGlzIGV4ZWMgc3BlY2lmaWVzIGEgY2hpbGQgc3ViY29tbWFuZC4gSWYgaXQgZG9lcywgQ09NUF9DV09SRCBuZWVkcyB0byBiZSBzZXRcbiAgICAgICAgICAgaGlnaGVyIHRvIGFjY291bnQgZm9yIHRoZSBhcmd1bWVudHMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjaGlsZCBzdWJjb21tYW5kLiAqKVxuICAgICAgICBzZXRfY29tcF9jd29yZCAobiArIExpc3QubGVuZ3RoIHQuY2hpbGRfc3ViY29tbWFuZCkpO1xuICAgICAgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gICAgICAgIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlVuaXguZXhlYyA/ZW52IH5wcm9nIH5hcmd2Oihwcm9nIDo6IGFyZ3MpICgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhcGUuU2V4cGFibGVcblxuICAgIGxldCByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIChwcm9jZXNzX2luZm8gOiBVbml4LlByb2Nlc3NfaW5mby50KSA9XG4gICAgICAoKiBXZSBuZWVkIHRvIHJlYWQgZWFjaCBvZiBzdGRvdXQgYW5kIHN0ZGVyciBpbiBhIHNlcGFyYXRlIHRocmVhZCB0byBhdm9pZCBkZWFkbG9ja3NcbiAgICAgICAgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGRlY2lkZXMgdG8gd2FpdCBmb3IgYSByZWFkIG9uIG9uZSBiZWZvcmUgY2xvc2luZyB0aGUgb3RoZXIuXG4gICAgICAgICBCdWZmZXJpbmcgbWF5IGhpZGUgdGhpcyBwcm9ibGVtIHVudGlsIG91dHB1dCBpcyBcInN1ZmZpY2llbnRseSBsYXJnZVwiLiAqKVxuICAgICAgbGV0IHN0YXJ0X3JlYWRpbmcgZGVzY3IgaW5mbyA9XG4gICAgICAgIGxldCBvdXRwdXQgPSByZWYgTm9uZSBpblxuICAgICAgICBsZXQgdGhyZWFkID1cbiAgICAgICAgICBUaHJlYWQuY3JlYXRlXG4gICAgICAgICAgICB+b25fdW5jYXVnaHRfZXhuOmBQcmludF90b19zdGRlcnJcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgIGRlc2NyIHw+IFVuaXguaW5fY2hhbm5lbF9vZl9kZXNjciB8PiBJbl9jaGFubmVsLmlucHV0X2FsbClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBvdXRwdXQgOj0gU29tZSByZXN1bHQpXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBTdGFnZWQuc3RhZ2UgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocmVhZC5qb2luIHRocmVhZDtcbiAgICAgICAgICBVbml4LmNsb3NlIGRlc2NyO1xuICAgICAgICAgIG1hdGNoICFvdXRwdXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkJVRyBmYWlsZWQgdG8gcmVhZFwiIChpbmZvIDogSW5mby50KV1cbiAgICAgICAgICB8IFNvbWUgKE9rIG91dHB1dCkgLT4gb3V0cHV0XG4gICAgICAgICAgfCBTb21lIChFcnJvciBleG4pIC0+IHJhaXNlIGV4bilcbiAgICAgIGluXG4gICAgICAoKiBXZSBtaWdodCBoYW5nIGZvcmV2ZXIgdHJ5aW5nIHRvIGpvaW4gdGhlIHJlYWRpbmcgdGhyZWFkcyBpZiB0aGUgY2hpbGQgcHJvY2VzcyBrZWVwc1xuICAgICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciBvcGVuLiBOb3QgaGFuZGxpbmcgdGhpcyBiZWNhdXNlIEkgdGhpbmsgd2UndmUgbmV2ZXIgc2VlbiBpdFxuICAgICAgICAgaW4gdGhlIHdpbGQgZGVzcGl0ZSBydW5uaW5nIHZ1bG5lcmFibGUgY29kZSBmb3IgeWVhcnMuICopXG4gICAgICAoKiBXZSBoYXZlIHRvIHN0YXJ0IGJvdGggdGhyZWFkcyBiZWZvcmUgam9pbmluZyBhbnkgb2YgdGhlbS4gKilcbiAgICAgIGxldCBmaW5pc2hfc3Rkb3V0ID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3Rkb3V0IChJbmZvLm9mX3N0cmluZyBcInN0ZG91dFwiKSBpblxuICAgICAgbGV0IGZpbmlzaF9zdGRlcnIgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRlcnIgKEluZm8ub2Zfc3RyaW5nIFwic3RkZXJyXCIpIGluXG4gICAgICBTdGFnZWQudW5zdGFnZSBmaW5pc2hfc3Rkb3V0ICgpLCBTdGFnZWQudW5zdGFnZSBmaW5pc2hfc3RkZXJyICgpXG4gICAgOztcblxuICAgIGxldCBvZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kID1cbiAgICAgIGxldCBwcm9jZXNzX2luZm8gPVxuICAgICAgICBVbml4LmNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgICgpXG4gICAgICAgICAgfnByb2c6KGFic19wYXRoIH5kaXI6d29ya2luZ19kaXIgcGF0aF90b19leGUpXG4gICAgICAgICAgfmFyZ3M6Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5lbnY6XG4gICAgICAgICAgICAobGV0IGhlbHBfc2V4cCA9XG4gICAgICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnMgfD4gU2V0LnNleHBfb2ZfbV9fdCAobW9kdWxlIEludCkgfD4gU2V4cC50b19zdHJpbmdcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGBFeHRlbmQgWyBDT01NQU5EX09VVFBVVF9IRUxQX1NFWFAsIGhlbHBfc2V4cCBdKVxuICAgICAgaW5cbiAgICAgIFVuaXguY2xvc2UgcHJvY2Vzc19pbmZvLnN0ZGluO1xuICAgICAgbGV0IHN0ZG91dCwgc3RkZXJyID0gcmVhZF9zdGRvdXRfYW5kX3N0ZGVyciBwcm9jZXNzX2luZm8gaW5cbiAgICAgIFVuaXgud2FpdCBwcm9jZXNzX2luZm8ucGlkO1xuICAgICAgKCogTm93IHdlJ3ZlIGtpbGxlZCBhbGwgdGhlIHByb2Nlc3NlcyBhbmQgdGhyZWFkcyB3ZSBtYWRlLiAqKVxuICAgICAgbWF0Y2ggc3Rkb3V0IHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gVmVyc2lvbmVkLnRfb2Zfc2V4cCB8PiBvZl92ZXJzaW9uZWQgd2l0aFxuICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiY2Fubm90IHBhcnNlIGNvbW1hbmQgc2hhcGVcIlxuICAgICAgICAgICAgICB+XzooZXhuIDogZXhuKVxuICAgICAgICAgICAgICAoc3Rkb3V0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAoc3RkZXJyIDogc3RyaW5nKV1cbiAgICAgIHwgdCAtPiB0XG4gICAgOztcblxuICAgIGxldCByZWMgZmluZCAodCA6IHQpIH5wYXRoX3RvX3N1YmNvbW1hbmQgPVxuICAgICAgbWF0Y2ggcGF0aF90b19zdWJjb21tYW5kIHdpdGhcbiAgICAgIHwgW10gLT4gdFxuICAgICAgfCBzdWIgOjogc3VicyAtPlxuICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICB8IEJhc2UgXyAtPiBmYWlsd2l0aGYgXCJ1bmV4cGVjdGVkIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgIHwgTGF6eSB0aHVuayAtPiBmaW5kIChMYXp5LmZvcmNlIHRodW5rKSB+cGF0aF90b19zdWJjb21tYW5kXG4gICAgICAgICB8IEV4ZWMgeyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IGNoaWxkX3N1YmNvbW1hbmQ7IF8gfSAtPlxuICAgICAgICAgICBmaW5kXG4gICAgICAgICAgICAgKG9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmQpXG4gICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZDooc3ViIDo6IChzdWJzIEAgY2hpbGRfc3ViY29tbWFuZCkpXG4gICAgICAgICB8IEdyb3VwIGcgLT5cbiAgICAgICAgICAgKG1hdGNoIExpc3QuQXNzb2MuZmluZCAoTGF6eS5mb3JjZSBnLnN1YmNvbW1hbmRzKSB+ZXF1YWw6U3RyaW5nLmVxdWFsIHN1YiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwidW5rbm93biBzdWJjb21tYW5kICVTXCIgc3ViICgpXG4gICAgICAgICAgICB8IFNvbWUgdCAtPiBmaW5kIHQgfnBhdGhfdG9fc3ViY29tbWFuZDpzdWJzKSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgcHJveHlfb2ZfZXhlIH53b3JraW5nX2RpciBwYXRoX3RvX2V4ZSBjaGlsZF9zdWJjb21tYW5kID1cbiAgICBTZXhwYWJsZS5vZl9leHRlcm5hbCB+d29ya2luZ19kaXIgfnBhdGhfdG9fZXhlIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgfD4gcHJveHlfb2Zfc2V4cGFibGVcbiAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZDpbXVxuICA7O1xuXG4gIGxldCByZWMgc2hhcGVfb2ZfcHJveHkgcHJveHkgOiBTaGFwZS50ID0gc2hhcGVfb2ZfcHJveHlfa2luZCBwcm94eS5Qcm94eS5raW5kXG5cbiAgYW5kIHNoYXBlX29mX2V4ZSAoKSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyID1cbiAgICBzaGFwZV9vZl9wcm94eSAocHJveHlfb2ZfZXhlIH53b3JraW5nX2RpciBwYXRoX3RvX2V4ZSBjaGlsZF9zdWJjb21tYW5kKVxuXG4gIGFuZCBzaGFwZV9vZl9wcm94eV9raW5kIGtpbmQgPVxuICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgIHwgQmFzZSBiIC0+IEJhc2ljIGJcbiAgICB8IExhenkgbCAtPiBMYXp5IChMYXp5Lm1hcCB+ZjpzaGFwZV9vZl9wcm94eV9raW5kIGwpXG4gICAgfCBHcm91cCBnIC0+XG4gICAgICBHcm91cFxuICAgICAgICB7IGcgd2l0aFxuICAgICAgICAgIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgZy5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c2hhcGVfb2ZfcHJveHkpXG4gICAgICAgIH1cbiAgICB8IEV4ZWMgKHsgY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKGUsIHNoYXBlX29mX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCB+cGF0aF90b19leGUgfndvcmtpbmdfZGlyKVxuICA7O1xuXG4gIGxldCByZWMgc2hhcGUgdCA6IFNoYXBlLnQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSBiIC0+IEJhc2ljIChDb21tYW5kX2Jhc2Uuc2hhcGUgYilcbiAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNoYXBlIGcpXG4gICAgfCBFeGVjICh7IEV4ZWMuY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKEV4ZWMuc2hhcGUgZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gICAgfCBMYXp5IHRodW5rIC0+IHNoYXBlIChMYXp5LmZvcmNlIHRodW5rKVxuICA7O1xuXG4gIGxldCBnYXRoZXJfaGVscCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMgc2hhcGUgPVxuICAgIGxldCByZWMgbG9vcCBwYXRoIGFjYyBzaGFwZSA9XG4gICAgICBsZXQgc3RyaW5nX29mX3BhdGggPSBpZiBleHBhbmRfZG90cyB0aGVuIFBhdGgudG9fc3RyaW5nIGVsc2UgUGF0aC50b19zdHJpbmdfZG90cyBpblxuICAgICAgbGV0IGdhdGhlcl9ncm91cCBwYXRoIGFjYyBzdWJjb21tYW5kcyA9XG4gICAgICAgIGxldCBmaWx0ZXJlZF9zdWJjb21tYW5kcyA9XG4gICAgICAgICAgKCogT25seSBzaG93IHRoZSBbaGVscF0gc3ViY29tbWFuZCBhdCB0b3AtbGV2ZWwuICopXG4gICAgICAgICAgaWYgUGF0aC5pc19lbXB0eSBwYXRoXG4gICAgICAgICAgdGhlbiBzdWJjb21tYW5kc1xuICAgICAgICAgIGVsc2UgTGlzdC5Bc3NvYy5yZW1vdmUgfmVxdWFsOlN0cmluZy4oID0gKSBzdWJjb21tYW5kcyBcImhlbHBcIlxuICAgICAgICBpblxuICAgICAgICBmaWx0ZXJlZF9zdWJjb21tYW5kc1xuICAgICAgICB8PiBMaXN0LnN0YWJsZV9zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IGhlbHBfc2NyZWVuX2NvbXBhcmUgKGZzdCBhKSAoZnN0IGIpKVxuICAgICAgICB8PiBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIChzdWJjb21tYW5kLCBzaGFwZSkgLT5cbiAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQgaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggaW5cbiAgICAgICAgICBsZXQgZG9jID0gU2hhcGUuZ2V0X3N1bW1hcnkgc2hhcGUgaW5cbiAgICAgICAgICBsZXQgYWNjID0geyBTaGFwZS5GbGFnX2luZm8ubmFtZTsgZG9jOyBhbGlhc2VzID0gW10gfSA6OiBhY2MgaW5cbiAgICAgICAgICBpZiByZWN1cnNpdmUgdGhlbiBsb29wIHBhdGggYWNjIHNoYXBlIGVsc2UgYWNjKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNoYXBlIHdpdGhcbiAgICAgIHwgRXhlYyAoXywgc2hhcGUpIC0+XG4gICAgICAgICgqIElmIHRoZSBleGVjdXRhYmxlIGJlaW5nIGNhbGxlZCBkb2Vzbid0IHVzZSBbQ29yZS5Db21tYW5kXSwgdGhlbiBzZXhwIGV4dHJhY3Rpb25cbiAgICAgICAgICAgd2lsbCBmYWlsLiAqKVxuICAgICAgICAodHJ5IGxvb3AgcGF0aCBhY2MgKHNoYXBlICgpKSB3aXRoXG4gICAgICAgICB8IF8gLT4gYWNjKVxuICAgICAgfCBHcm91cCBnIC0+IGdhdGhlcl9ncm91cCBwYXRoIGFjYyAoTGF6eS5mb3JjZSBnLnN1YmNvbW1hbmRzKVxuICAgICAgfCBCYXNpYyBiIC0+XG4gICAgICAgIGlmIGZsYWdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBiLmZsYWdzXG4gICAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBmbXQgLT4gU3RyaW5nLiggPD4gKSBmbXQubmFtZSBcIlstaGVscF1cIilcbiAgICAgICAgICB8PiBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIGZtdCAtPlxuICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kOmZtdC5uYW1lIGluXG4gICAgICAgICAgICBsZXQgZm10ID0geyBmbXQgd2l0aCBuYW1lID0gc3RyaW5nX29mX3BhdGggcGF0aCB9IGluXG4gICAgICAgICAgICBmbXQgOjogYWNjKVxuICAgICAgICBlbHNlIGFjY1xuICAgICAgfCBMYXp5IHRodW5rIC0+IGxvb3AgcGF0aCBhY2MgKExhenkuZm9yY2UgdGh1bmspXG4gICAgaW5cbiAgICBsb29wIFBhdGguZW1wdHkgW10gc2hhcGUgfD4gTGlzdC5yZXZcbiAgOztcblxuICBsZXQgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHQgfmZsYWdzIH5wYXRoIH5zdW1tYXJ5IH5yZWFkbWUgfmZvcm1hdF9saXN0ID1cbiAgICB1bnBhcmFncmFwaHNcbiAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgIFsgU29tZSBzdW1tYXJ5XG4gICAgICAgICA7IFNvbWUgKFN0cmluZy5jb25jYXQgWyBcIiAgXCI7IFBhdGgudG9fc3RyaW5nIHBhdGg7IFwiIFNVQkNPTU1BTkRcIiBdKVxuICAgICAgICAgOyByZWFkbWVcbiAgICAgICAgIDsgU29tZSAoaWYgZmxhZ3MgdGhlbiBcIj09PSBzdWJjb21tYW5kcyBhbmQgZmxhZ3MgPT09XCIgZWxzZSBcIj09PSBzdWJjb21tYW5kcyA9PT1cIilcbiAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGZvcm1hdF9saXN0KVxuICAgICAgICAgXSlcbiAgOztcblxuICBsZXQgcmVjIGhlbHBfZm9yX3NoYXBlIHNoYXBlIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlID1cbiAgICBsZXQgZm9ybWF0X2xpc3QgPSBnYXRoZXJfaGVscCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgc2hhcGUgaW5cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBCYXNpYyBiIC0+XG4gICAgICBsZXQgdXNhZ2UgPSBTaGFwZS5CYXNlX2luZm8uZ2V0X3VzYWdlIGIgaW5cbiAgICAgIHVucGFyYWdyYXBoc1xuICAgICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICAgIFsgU29tZSBiLnN1bW1hcnlcbiAgICAgICAgICAgOyBTb21lIChcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgXCIgXiB1c2FnZSlcbiAgICAgICAgICAgOyBiLnJlYWRtZVxuICAgICAgICAgICA7IFNvbWUgXCI9PT0gZmxhZ3MgPT09XCJcbiAgICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgYi5mbGFncylcbiAgICAgICAgICAgXSlcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmcucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5Omcuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IEV4ZWMgKGUsIF8pIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTplLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTplLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBMYXp5IHRodW5rIC0+IGhlbHBfZm9yX3NoYXBlIChMYXp5LmZvcmNlIHRodW5rKSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZVxuICA7O1xuXG4gIGxldCBoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwiZXhwbGFpbiBhIGdpdmVuIHN1YmNvbW1hbmQgKHBlcmhhcHMgcmVjdXJzaXZlbHkpXCJcbiAgICAgIENvbW1hbmRfYmFzZS5QYXJhbS4oXG4gICAgICAgIHJldHVybiAoZnVuIHJlY3Vyc2l2ZSBmbGFncyBleHBhbmRfZG90cyBwYXRoIChlbnYgOiBFbnYudCkgY21kX29wdCAoKSAtPlxuICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgIG1hdGNoIEVudi5maW5kIGVudiBzdWJzX2tleSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgc3VicyAtPiBzdWJzXG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAoKiBtYWludGFpbmVkIGJ5IFtkaXNwYXRjaF0gKilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgIGxldCBwYXRoID0gUGF0aC5wb3BfaGVscCBwYXRoIGluXG4gICAgICAgICAgICBPcHRpb24uZm9sZCBjbWRfb3B0IH5pbml0OnBhdGggfmY6KGZ1biBwYXRoIHN1YmNvbW1hbmQgLT5cbiAgICAgICAgICAgICAgUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwYXRoLCBzaGFwZSA9XG4gICAgICAgICAgICBtYXRjaCBjbWRfb3B0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsZXQgc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCBzdWJzIH5mOnNoYXBlIHw+IExhenkuZnJvbV92YWwgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgaW5cbiAgICAgICAgICAgICAgcGF0aCwgU2hhcGUuR3JvdXAgeyByZWFkbWU7IHN1bW1hcnk7IHN1YmNvbW1hbmRzIH1cbiAgICAgICAgICAgIHwgU29tZSBjbWQgLT5cbiAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgIGxvb2t1cF9leHBhbmRcbiAgICAgICAgICAgICAgICAgICAoTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkpXG4gICAgICAgICAgICAgICAgICAgY21kXG4gICAgICAgICAgICAgICAgICAgU3ViY29tbWFuZFxuICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICAgICAgIGRpZVxuICAgICAgICAgICAgICAgICAgIFwidW5rbm93biBzdWJjb21tYW5kICVzIGZvciBjb21tYW5kICVzOiAlc1wiXG4gICAgICAgICAgICAgICAgICAgY21kXG4gICAgICAgICAgICAgICAgICAgKFBhdGgudG9fc3RyaW5nIHBhdGgpXG4gICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICB8IE9rIChwb3NzaWJseV9leHBhbmRlZF9uYW1lLCB0KSAtPlxuICAgICAgICAgICAgICAgICAoKiBGaXggdGhlIHVuZXhwYW5kZWQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgbGV0IHBhdGggPVxuICAgICAgICAgICAgICAgICAgIFBhdGgucmVwbGFjZV9maXJzdCB+ZnJvbTpjbWQgfnRvXzpwb3NzaWJseV9leHBhbmRlZF9uYW1lIHBhdGhcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgcGF0aCwgc2hhcGUgdClcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X2VuZGxpbmUgKGhlbHBfZm9yX3NoYXBlIHNoYXBlIHBhdGggfnJlY3Vyc2l2ZSB+ZmxhZ3MgfmV4cGFuZF9kb3RzKSlcbiAgICAgICAgPCo+IGZsYWcgXCItcmVjdXJzaXZlXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBzdWJjb21tYW5kcyBvZiBzdWJjb21tYW5kcywgZXRjLlwiXG4gICAgICAgIDwqPiBmbGFnIFwiLWZsYWdzXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBmbGFncyBhcyB3ZWxsIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgPCo+IGZsYWcgXCItZXhwYW5kLWRvdHNcIiBub19hcmcgfmRvYzpcIiBleHBhbmQgc3ViY29tbWFuZHMgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICA8Kj4gcGF0aFxuICAgICAgICA8Kj4gZW52XG4gICAgICAgIDwqPiBhbm9uIChtYXliZSAoXCJTVUJDT01NQU5EXCIgJTogc3RyaW5nKSkpXG4gIDs7XG5cbiAgKCogVGhpcyBzY3JpcHQgd29ya3MgaW4gYm90aCBiYXNoICh2aWEgcmVhZGFycmF5KSBhbmQgenNoICh2aWEgcmVhZCAtQSkuICBJZiB5b3UgY2hhbmdlXG4gICAgIGl0LCBwbGVhc2UgdGVzdCBpbiBib3RoIGJhc2ggYW5kIHpzaC4gIEl0IGRvZXMgbm90IHdvcmsgdGNzaCAoZGlmZmVyZW50IGZ1bmN0aW9uXG4gICAgIHN5bnRheCkuICopXG4gIGxldCBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKSA9XG4gICAgbGV0IGZuYW1lID0gc3ByaW50ZiBcIl9qc2F1dG9jb21fJXNcIiAoUGlkLnRvX3N0cmluZyAoVW5peC5nZXRwaWQgKCkpKSBpblxuICAgIGxldCBhcmd2XzAgPSBTdGRsaWIuU3lzLmFyZ3YuKDApIGluXG4gICAgcHJpbnRmXG4gICAgICBcImZ1bmN0aW9uICVzIHtcXG5cXFxuICAgICAgXFwgIGV4cG9ydCBDT01QX0NXT1JEXFxuXFxcbiAgICAgIFxcICBDT01QX1dPUkRTWzBdPSVzXFxuXFxcbiAgICAgIFxcICBpZiB0eXBlIHJlYWRhcnJheSA+IC9kZXYvbnVsbFxcblxcXG4gICAgICBcXCAgdGhlbiByZWFkYXJyYXkgLXQgQ09NUFJFUExZIDwgPChcXFwiJHtDT01QX1dPUkRTW0BdfVxcXCIpXFxuXFxcbiAgICAgIFxcICBlbHNlIElGUz1cXFwiXFxuXFxcbiAgICAgICBcXFwiIHJlYWQgLWQgXFxcIlxcXCIgLUEgQ09NUFJFUExZIDwgPChcXFwiJHtDT01QX1dPUkRTW0BdfVxcXCIpXFxuXFxcbiAgICAgIFxcICBmaVxcblxcXG4gICAgICAgfVxcblxcXG4gICAgICAgY29tcGxldGUgLUYgJXMgJXNcXG5cXFxuICAgICAgICUhXCJcbiAgICAgIGZuYW1lXG4gICAgICBhcmd2XzBcbiAgICAgIGZuYW1lXG4gICAgICBhcmd2XzBcbiAgOztcblxuICBsZXQgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQgPVxuICAgIFNldC5pbnRlciBTZXhwYWJsZS5zdXBwb3J0ZWRfdmVyc2lvbnMgc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgfD4gU2V0Lm1heF9lbHRcbiAgICB8PiBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJDb3VsZG4ndCBjaG9vc2UgYSBzdXBwb3J0ZWQgaGVscCBvdXRwdXQgdmVyc2lvbiBmb3IgQ29tbWFuZC5leGVjIGZyb20gdGhlIGdpdmVuIFxcXG4gICAgICAgICBzdXBwb3J0ZWQgdmVyc2lvbnMuXCJcbiAgICAgICAgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgICAgIChTZXQuc2V4cF9vZl9tX190IChtb2R1bGUgSW50KSlcbiAgICAgIHw+IEVycm9yLnJhaXNlXG4gICAgfCBTb21lIHZlcnNpb25fdG9fdXNlIC0+XG4gICAgICBzZXhwYWJsZV9zaGFwZSB0XG4gICAgICB8PiBTZXhwYWJsZS5maW5kIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgIHw+IFNleHBhYmxlLnRvX3ZlcnNpb25lZCB+dmVyc2lvbl90b191c2VcbiAgICAgIHw+IFNleHBhYmxlLlZlcnNpb25lZC5zZXhwX29mX3RcbiAgICAgIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICB8PiBwcmludF9zdHJpbmdcbiAgOztcblxuICBsZXQgaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgPVxuICAgIG1hdGNoIGFyZ3Ygd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJtaXNzaW5nIGV4ZWN1dGFibGUgbmFtZVwiXG4gICAgfCBjbWQgOjogYXJncyAtPlxuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQKSB+ZjooZnVuIHZlcnNpb24gLT5cbiAgICAgICAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgICAgICAgU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB2ZXJzaW9uIHw+IFNldC5tX190X29mX3NleHAgKG1vZHVsZSBJbnQpXG4gICAgICAgIGluXG4gICAgICAgIGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kOmFyZ3M7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBPcHRpb24uaXRlciAoZ2V0ZW52X2FuZF9jbGVhciBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSCkgfmY6KGZ1biBfIC0+XG4gICAgICAgIGR1bXBfYXV0b2NvbXBsZXRlX2Z1bmN0aW9uICgpO1xuICAgICAgICBleGl0IDApO1xuICAgICAgY21kLCBhcmdzXG4gIDs7XG5cbiAgbGV0IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzID1cbiAgICBsZXQgbWF5YmVfY29tcF9jd29yZCA9IG1heWJlX2NvbXBfY3dvcmQgKCkgaW5cbiAgICBsZXQgYXJncyA9XG4gICAgICBtYXRjaCBtYXliZV9jb21wX2N3b3JkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBDbWRsaW5lLm9mX2xpc3QgYXJnc1xuICAgICAgfCBTb21lIGNvbXBfY3dvcmQgLT5cbiAgICAgICAgbGV0IGFyZ3MgPSBMaXN0LnRha2UgKGFyZ3MgQCBbIFwiXCIgXSkgY29tcF9jd29yZCBpblxuICAgICAgICBMaXN0LmZvbGRfcmlnaHQgYXJncyB+aW5pdDpDbWRsaW5lLk5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+XG4gICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgfCBDbWRsaW5lLk5pbCAtPiBDbWRsaW5lLkNvbXBsZXRlIGFyZ1xuICAgICAgICAgIHwgXyAtPiBDbWRsaW5lLkNvbnMgKGFyZywgYXJncykpXG4gICAgaW5cbiAgICBQYXRoLmNyZWF0ZSB+cGF0aF90b19leGU6Y21kLCBhcmdzLCBtYXliZV9jb21wX2N3b3JkXG4gIDs7XG5cbiAgbGV0IHJlYyBhZGRfaGVscF9zdWJjb21tYW5kcyA9IGZ1bmN0aW9uXG4gICAgfCBCYXNlIF8gYXMgdCAtPiB0XG4gICAgfCBFeGVjIF8gYXMgdCAtPiB0XG4gICAgfCBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfSAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIChMaXN0LkFzc29jLm1hcCBzdWJjb21tYW5kcyB+ZjphZGRfaGVscF9zdWJjb21tYW5kcylcbiAgICAgICAgICAgIEtleV90eXBlLlN1YmNvbW1hbmRcbiAgICAgICAgICAgIH5rZXk6XCJoZWxwXCJcbiAgICAgICAgICAgIChoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSkpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzOyBib2R5IH1cbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkX2hlbHBfc3ViY29tbWFuZHMgKExhenkuZm9yY2UgdGh1bmspKSlcbiAgOztcblxuICBsZXQgbWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCA9XG4gICAgT3B0aW9uLnZhbHVlX21hcCBleHRlbmQgfmRlZmF1bHQ6YXJncyB+ZjooZnVuIGYgLT5cbiAgICAgIENtZGxpbmUuZXh0ZW5kIGFyZ3MgfmV4dGVuZDpmIH5wYXRoKVxuICA7O1xuXG4gIGxldCByZWMgZGlzcGF0Y2hcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgICAgfnBhdGhcbiAgICAgICAgICAgIH5hcmdzXG4gICAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgIGxldCB0ID0gTGF6eS5mb3JjZSB0aHVuayBpblxuICAgICAgZGlzcGF0Y2hcbiAgICAgICAgdFxuICAgICAgICBlbnZcbiAgICAgICAgfmV4dGVuZFxuICAgICAgICB+cGF0aFxuICAgICAgICB+YXJnc1xuICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICB8IEJhc2UgYmFzZSAtPlxuICAgICAgbGV0IGFyZ3MgPSBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoIGluXG4gICAgICBsZXQgaGVscF90ZXh0ID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChoZWxwX2Zvcl9zaGFwZSAoc2hhcGUgdCkgcGF0aCB+cmVjdXJzaXZlOmZhbHNlIH5mbGFnczp0cnVlIH5leHBhbmRfZG90czpmYWxzZSlcbiAgICAgIGluXG4gICAgICBDb21tYW5kX2Jhc2UucnVuXG4gICAgICAgIGJhc2VcbiAgICAgICAgZW52XG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICB+b25fZmFpbHVyZTpDb21tYW5kX2Jhc2UucnVuX2V4blxuICAgIHwgRXhlYyBleGVjIC0+XG4gICAgICBsZXQgYXJncyA9IENtZGxpbmUudG9fbGlzdCAobWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCkgaW5cbiAgICAgIEV4ZWMuZXhlY193aXRoX2FyZ3MgfmFyZ3MgZXhlYyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICB8IEdyb3VwICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0gYXMgZ3JvdXApIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gRW52LnNldCBlbnYgfmtleTpzdWJzX2tleSB+ZGF0YTooTGF6eS5mb3JjZSBzdWJzKSBpblxuICAgICAgbGV0IGRpZV9zaG93aW5nX2hlbHAgbXNnID1cbiAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIiVzXFxuJSFcIlxuICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0pKVxuICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgZGllIFwiJXNcIiBtc2cgKCkpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICAgIGxldCBtYXliZV9uZXdfY29tcF9jd29yZCA9IE9wdGlvbi5tYXAgfmY6SW50LnByZWQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHNraXAgcmVzdCA9IHBhcnNlX2dyb3VwIHJlc3Qgfm1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCByZXNvbHZlIHN1YiByZXN0ID1cbiAgICAgICAgICBsZXQgc3VicyA9IExpc3QuQXNzb2MubWFwIChMYXp5LmZvcmNlIHN1YnMpIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSBpblxuICAgICAgICAgIG1hdGNoIGxvb2t1cF9leHBhbmQgc3VicyBzdWIgU3ViY29tbWFuZCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBtc2cgLT4gZGllX3Nob3dpbmdfaGVscCBtc2dcbiAgICAgICAgICB8IE9rIChzdWIsIHQpIC0+XG4gICAgICAgICAgICBkaXNwYXRjaFxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgICAgfnBhdGg6KFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6c3ViKVxuICAgICAgICAgICAgICB+YXJnczpyZXN0XG4gICAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGFyZ3MgOiBDbWRsaW5lLnQpIHdpdGhcbiAgICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGRpZV9zaG93aW5nX2hlbHBcbiAgICAgICAgICAgICAgIChzcHJpbnRmIFwibWlzc2luZyBzdWJjb21tYW5kIGZvciBjb21tYW5kICVzXCIgKFBhdGgudG9fc3RyaW5nIHBhdGgpKVxuICAgICAgICAgICB8IFNvbWUgYm9keSAtPiBib2R5IH5wYXRoOihQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoKSlcbiAgICAgICAgfCBDb25zIChzdWIsIHJlc3QpIC0+XG4gICAgICAgICAgKCogTWF0Y2ggZm9yIGZsYWdzIHJlY29nbml6ZWQgd2hlbiBzdWJjb21tYW5kcyBhcmUgZXhwZWN0ZWQgbmV4dCAqKVxuICAgICAgICAgIChtYXRjaCBzdWIgd2l0aFxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGF0IHRoZSB0b3AgbGV2ZWwgY29tbWFuZCBvbmx5ICopXG4gICAgICAgICAgIHwgKFwiLXZlcnNpb25cIiB8IFwiLS12ZXJzaW9uXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF92ZXJzaW9uIH52ZXJzaW9uO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IChcIi1idWlsZC1pbmZvXCIgfCBcIi0tYnVpbGQtaW5mb1wiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBldmVyeXdoZXJlICopXG4gICAgICAgICAgIHwgXCItaGVscFwiIHwgXCItLWhlbHBcIiAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5pbCB8IENvbXBsZXRlIChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBncm91cCB3aXRoIHN1YmNvbW1hbmRzID0gc3VicyB9KSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICAgICAgICAgZXhpdCAwXG4gICAgICAgICAgICAgICB8IENtZGxpbmUuQ29ucyAoZmlyc3Rfb2ZfcmVzdCwgcmVzdF9vZl9yZXN0KSAtPlxuICAgICAgICAgICAgICAgICByZXNvbHZlIGZpcnN0X29mX3Jlc3QgKENvbnMgKHN1YiwgcmVzdF9vZl9yZXN0KSkpXG4gICAgICAgICAgIHwgKF8gOiBzdHJpbmcpIC0+IHJlc29sdmUgc3ViIHJlc3QpXG4gICAgICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgIExhenkuZm9yY2Ugc3Vic1xuICAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6ZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIG5hbWUgLT4gU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6cGFydClcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGNvbXBsZXRlX3N1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICAgICAgICAgc2hhcGUgdCB8PiBTaGFwZS5mdWxseV9mb3JjZWQgfD4gU2hhcGUuRnVsbHlfZm9yY2VkLmV4cGFuZGVkX3N1YmNvbW1hbmRzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAobWF0Y2ggZiB+cGF0aDooUGF0aC5wYXJ0cyBwYXRoKSB+cGFydCBzdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBleGl0IDFcbiAgICAgICAgICAgICAgfCBTb21lIHRvX291dHB1dCAtPlxuICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmUgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB0b19vdXRwdXQpO1xuICAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgTGlzdC5pdGVyIHN1YnMgfmY6cHJpbnRfZW5kbGluZTtcbiAgICAgICAgICAgICBleGl0IDApXG4gICAgICBpblxuICAgICAgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcnVuXG4gICAgICAgID92ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgID92ZXJzaW9uXG4gICAgICAgID9idWlsZF9pbmZvXG4gICAgICAgID8oYXJndiA9IEFycmF5LnRvX2xpc3QgU3RkbGliLlN5cy5hcmd2KVxuICAgICAgICA/ZXh0ZW5kXG4gICAgICAgID8od2hlbl9wYXJzaW5nX3N1Y2NlZWRzID0gRm4uaWQpXG4gICAgICAgID9jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBidWlsZF9pbmZvID1cbiAgICAgIG1hdGNoIGJ1aWxkX2luZm8gd2l0aFxuICAgICAgfCBTb21lIHYgLT4gbGF6eSB2XG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgIGluXG4gICAgbGV0IHZlcnNpb24gPVxuICAgICAgbWF0Y2ggdmVyc2lvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgKCogW3ZlcnNpb25dIHdhcyBzcGFjZSBkZWxpbWl0ZWQgYXQgc29tZSBwb2ludCBhbmQgbmV3bGluZSBkZWxpbWl0ZWRcbiAgICAgICAgICAgYXQgYW5vdGhlci4gIFdlIGFsd2F5cyBwcmludCBvbmUgKHJlcG8sIHJldmlzaW9uKSBwYWlyIHBlciBsaW5lXG4gICAgICAgICAgIGFuZCBlbnN1cmUgc29ydGVkIG9yZGVyICopXG4gICAgICAgIGxhenlcbiAgICAgICAgICAoVmVyc2lvbl9pbmZvLm5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzXG4gICAgICAgICAgICAgKFN0cmluZy5zcGxpdCB2IH5vbjonICcgfD4gTGlzdC5jb25jYXRfbWFwIH5mOihTdHJpbmcuc3BsaXQgfm9uOidcXG4nKSkpXG4gICAgaW5cbiAgICBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT5cbiAgICAgIGxldCB0ID0gVmVyc2lvbl9pbmZvLmFkZCB0IH52ZXJzaW9uIH5idWlsZF9pbmZvIGluXG4gICAgICBsZXQgdCA9IGFkZF9oZWxwX3N1YmNvbW1hbmRzIHQgaW5cbiAgICAgIGxldCBjbWQsIGFyZ3MgPSBoYW5kbGVfZW52aXJvbm1lbnQgdCB+YXJndiBpblxuICAgICAgbGV0IHBhdGgsIGFyZ3MsIG1heWJlX25ld19jb21wX2N3b3JkID0gcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgaW5cbiAgICAgIHRyeVxuICAgICAgICBkaXNwYXRjaFxuICAgICAgICAgIHRcbiAgICAgICAgICBFbnYuZW1wdHlcbiAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgfnBhdGhcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgfmJ1aWxkX2luZm9cbiAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgIH53aGVuX3BhcnNpbmdfc3VjY2VlZHNcbiAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgIHdpdGhcbiAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBtc2cgLT5cbiAgICAgICAgaWYgQ21kbGluZS5lbmRzX2luX2NvbXBsZXRlIGFyZ3NcbiAgICAgICAgdGhlbiBleGl0IDBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgcHJlcnJfZW5kbGluZSBtc2c7XG4gICAgICAgICAgZXhpdCAxKSlcbiAgOztcblxuICBsZXQgZGVwcmVjYXRlZF9ydW4gdCB+Y21kIH5hcmdzIH5pc19oZWxwIH5pc19oZWxwX3JlYyB+aXNfaGVscF9yZWNfZmxhZ3MgfmlzX2V4cGFuZF9kb3RzXG4gICAgPVxuICAgIGxldCBwYXRoX3N0cmluZ3MgPSBTdHJpbmcuc3BsaXQgY21kIH5vbjonICcgaW5cbiAgICBsZXQgcGF0aCA9IFBhdGgub2ZfcGFydHMgcGF0aF9zdHJpbmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19leHBhbmRfZG90cyB0aGVuIFwiLWV4cGFuZC1kb3RzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjX2ZsYWdzIHRoZW4gXCItZmxhZ3NcIiA6OiBhcmdzIGVsc2UgYXJncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfaGVscF9yZWMgdGhlbiBcIi1yXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHAgdGhlbiBcIi1oZWxwXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IENtZGxpbmUub2ZfbGlzdCBhcmdzIGluXG4gICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgZGlzcGF0Y2hcbiAgICAgIHRcbiAgICAgIEVudi5lbXB0eVxuICAgICAgfnBhdGhcbiAgICAgIH5hcmdzXG4gICAgICB+ZXh0ZW5kOk5vbmVcbiAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZDpOb25lXG4gICAgICB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uXG4gICAgICB+YnVpbGRfaW5mbzpWZXJzaW9uX2luZm8uZGVmYXVsdF9idWlsZF9pbmZvXG4gICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvcjpOb25lXG4gICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzOkZuLmlkXG4gICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHM6Tm9uZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQYXJhbSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSArJ2EgdFxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBoZWxwIDogc3RyaW5nIExhenkudCB0XG4gICAgdmFsIHBhdGggOiBzdHJpbmcgbGlzdCB0XG4gICAgdmFsIGFyZ3MgOiBzdHJpbmcgbGlzdCB0XG5cbiAgICB2YWwgZmxhZ1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBGbGFnLnRcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgQXJnX3R5cGUudFxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+IGRlZmF1bHQ6J2FcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBhbm9uIDogJ2EgQW5vbnMudCAtPiAnYSB0XG4gICAgdmFsIGVzY2FwZV9hbm9uIDogZmluYWxfYW5vbjonYSBBbm9ucy50IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gOiBzaWdcbiAgICAgIHR5cGUgKF8sIF8pIHQgPVxuICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmV0dXJuX25vbmUgOiAoJ2EsICdhIG9wdGlvbikgdFxuICAgIGVuZFxuXG4gICAgdmFsIGNob29zZV9vbmVcbiAgICAgIDogICdhIG9wdGlvbiB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBjaG9vc2Vfb25lX25vbl9vcHRpb25hbFxuICAgICAgOiAgJ2EgdCBsaXN0XG4gICAgICAtPiBpZl9ub3RoaW5nX2Nob3NlbjooJ2EsICdiKSBJZl9ub3RoaW5nX2Nob3Nlbi50XG4gICAgICAtPiAnYiB0XG5cbiAgICB2YWwgYW5kX2FyZ19uYW1lcyA6ICdhIHQgLT4gKCdhICogc3RyaW5nIGxpc3QpIHRcbiAgICB2YWwgYW5kX2FyZ19uYW1lIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcpIHRcbiAgICB2YWwgYXJnX25hbWVzIDogJ2EgdCAtPiBzdHJpbmcgbGlzdFxuICBlbmRcblxuICBpbmNsdWRlIENvbW1hbmRfYmFzZS5QYXJhbVxuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBpbmNsdWRlIFBhcmFtXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFBhcmFtXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gUGFyYW1cbiAgZW5kXG5lbmRcblxudHlwZSAncmVzdWx0IGJhc2ljX2NvbW1hbmQgPVxuICBzdW1tYXJ5OnN0cmluZyAtPiA/cmVhZG1lOih1bml0IC0+IHN0cmluZykgLT4gKHVuaXQgLT4gJ3Jlc3VsdCkgUGFyYW0udCAtPiB0XG5cbmxldCBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtID1cbiAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gZiAoKSAtPiBTdHJpbmcuc3RyaXAgKGYgKCkpKSBpblxuICBiYXNpYyB+c3VtbWFyeSA/cmVhZG1lIHBhcmFtXG47O1xuXG5sZXQgYmFzaWNfb3JfZXJyb3IgfnN1bW1hcnkgP3JlYWRtZSBwYXJhbSA9XG4gIGJhc2ljXG4gICAgfnN1bW1hcnlcbiAgICA/cmVhZG1lXG4gICAgKGxldCVtYXAgcnVuID0gcGFyYW0gaW5cbiAgICAgZnVuICgpIC0+XG4gICAgICAgbWF0Y2ggcnVuICgpIHdpdGhcbiAgICAgICB8IE9rICgpIC0+ICgpXG4gICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICBTdGRpby5wcmVycl9lbmRsaW5lIChFcnJvci50b19zdHJpbmdfaHVtIGUpO1xuICAgICAgICAgZXhpdCAxKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGFic19wYXRoID0gYWJzX3BhdGhcbiAgbGV0IHdvcmRfd3JhcCA9IFNoYXBlLlByaXZhdGUud29yZF93cmFwXG5cbiAgbW9kdWxlIEFub25zID0gQW5vbnNcbiAgbW9kdWxlIENtZGxpbmUgPSBDbWRsaW5lXG4gIG1vZHVsZSBGb3JfdW5peCA9IEZvcl91bml4XG4gIG1vZHVsZSBQYXRoID0gUGF0aFxuXG4gIG1vZHVsZSBTcGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBTcGVjXG5cbiAgICBsZXQgdG9fc3RyaW5nX2Zvcl9jaG9vc2Vfb25lIHBhcmFtID1cbiAgICAgIENvbW1hbmRfYmFzZS5QYXJhbS5DaG9vc2Vfb25lLkNob2ljZV9uYW1lLihjcmVhdGVfZXhuIHBhcmFtIHw+IHRvX3N0cmluZylcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgcnVuID0gYFVzZV9Db21tYW5kX3VuaXhcbmxldCBzaGFwZSA9IGBVc2VfQ29tbWFuZF91bml4XG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgJ2EgdCA9ICdhIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmV4dGVybmFsIGlzX2hlYXBfYmxvY2sgOiBTdGRsaWIuT2JqLnQgLT4gYm9vbCA9IFwiY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcIlxuW0BAbm9hbGxvY11cblxubGV0IGlzX29rIHYgPSBpc19oZWFwX2Jsb2NrIChTdGRsaWIuT2JqLnJlcHIgdilcbmxldCBjcmVhdGUgdiA9IGlmIGlzX29rIHYgdGhlbiBTb21lIHYgZWxzZSBOb25lXG5cbmxldCBjcmVhdGVfZXhuIHYgPVxuICBpZiBpc19vayB2IHRoZW4gdiBlbHNlIGZhaWx3aXRoIFwiSGVhcF9ibG9jay5jcmVhdGVfZXhuIGNhbGxlZCB3aXRoIG5vbiBoZWFwIGJsb2NrXCJcbjs7XG5cbmxldCB2YWx1ZSB0ID0gdFxubGV0IGJ5dGVzX3Blcl93b3JkID0gV29yZF9zaXplLihudW1fYml0cyB3b3JkX3NpemUpIC8gOFxuXG5sZXQgYnl0ZXMgKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgKFN0ZGxpYi5PYmouc2l6ZSAoU3RkbGliLk9iai5yZXByICh0IDogYSB0KSkgKyAxKSAqIGJ5dGVzX3Blcl93b3JkXG47O1xuIiwib3BlbiBCYXNlXG5cbigqKiBFYWNoIHNpbmdsZV9lcnJvciBpcyBhIHBhdGggaW5kaWNhdGluZyB0aGUgbG9jYXRpb24gd2l0aGluIHRoZSBkYXRhc3RydWN0dXJlIGluXG4gICAgcXVlc3Rpb24gdGhhdCBpcyBiZWluZyB2YWxpZGF0ZWQsIGFsb25nIHdpdGggYW4gZXJyb3IgbWVzc2FnZS4gKilcbnR5cGUgc2luZ2xlX2Vycm9yID1cbiAgeyBwYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBlcnJvciA6IEVycm9yLnRcbiAgfVxuXG50eXBlIHQgPSBzaW5nbGVfZXJyb3IgbGlzdFxudHlwZSAnYSBjaGVjayA9ICdhIC0+IHRcblxubGV0IHBhc3MgOiB0ID0gW11cblxubGV0IGZhaWxzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLmNyZWF0ZSBtZXNzYWdlIGEgc2V4cF9vZl9hIH0gXVxuOztcblxubGV0IGZhaWwgbWVzc2FnZSA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UgfSBdXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgZmFpbF9zIHNleHAgPSBbIHsgcGF0aCA9IFtdOyBlcnJvciA9IEVycm9yLmNyZWF0ZV9zIHNleHAgfSBdXG5sZXQgY29tYmluZSB0MSB0MiA9IHQxIEAgdDJcbmxldCBvZl9saXN0ID0gTGlzdC5jb25jYXRcblxubGV0IG5hbWUgbmFtZSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gW10gKCogd2hlbiBzdWNjZXNzZnVsLCBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhIGNsb3N1cmUgZm9yIFt+Zl0sIGJlbG93ICopXG4gIHwgXyAtPiBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+IHsgcGF0aCA9IG5hbWUgOjogcGF0aDsgZXJyb3IgfSlcbjs7XG5cbmxldCBuYW1lX2xpc3QgbiBsID0gbmFtZSBuIChvZl9saXN0IGwpXG5sZXQgZmFpbF9mbiBtZXNzYWdlIF8gPSBmYWlsIG1lc3NhZ2VcbmxldCBwYXNzX2Jvb2wgKF8gOiBib29sKSA9IHBhc3NcbmxldCBwYXNzX3VuaXQgKF8gOiB1bml0KSA9IHBhc3NcblxubGV0IHByb3RlY3QgZiB2ID1cbiAgdHJ5IGYgdiB3aXRoXG4gIHwgZXhuIC0+XG4gICAgZmFpbF9zIChTZXhwLm1lc3NhZ2UgXCJFeGNlcHRpb24gcmFpc2VkIGR1cmluZyB2YWxpZGF0aW9uXCIgWyBcIlwiLCBzZXhwX29mX2V4biBleG4gXSlcbjs7XG5cbmxldCB0cnlfd2l0aCBmID1cbiAgcHJvdGVjdFxuICAgIChmdW4gKCkgLT5cbiAgICAgICBmICgpO1xuICAgICAgIHBhc3MpXG4gICAgKClcbjs7XG5cbmxldCBwYXRoX3N0cmluZyBwYXRoID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIHBhdGhcblxubGV0IGVycm9ycyB0ID1cbiAgTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPlxuICAgIEVycm9yLnRvX3N0cmluZ19odW0gKEVycm9yLnRhZyBlcnJvciB+dGFnOihwYXRoX3N0cmluZyBwYXRoKSkpXG47O1xuXG5sZXQgcmVzdWx0X2ZhaWwgdCA9XG4gIE9yX2Vycm9yLmVycm9yXG4gICAgXCJ2YWxpZGF0aW9uIGVycm9yc1wiXG4gICAgKExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4gcGF0aF9zdHJpbmcgcGF0aCwgZXJyb3IpKVxuICAgIFslc2V4cF9vZjogKHN0cmluZyAqIEVycm9yLnQpIExpc3QudF1cbltAQGNvbGRdXG47O1xuXG4oKiogW3Jlc3VsdF0gaXMgY2FyZWZ1bGx5IGltcGxlbWVudGVkIHNvIHRoYXQgaXQgY2FuIGJlIGlubGluZWQgLS0gY2FsbGluZyBbcmVzdWx0X2ZhaWxdLFxuICAgIHdoaWNoIGlzIG5vdCBpbmxpbmVhYmxlLCBpcyBrZXkgdG8gdGhpcy4gKilcbmxldCByZXN1bHQgdCA9IGlmIExpc3QuaXNfZW1wdHkgdCB0aGVuIE9rICgpIGVsc2UgcmVzdWx0X2ZhaWwgdFxuXG5sZXQgbWF5YmVfcmFpc2UgdCA9IE9yX2Vycm9yLm9rX2V4biAocmVzdWx0IHQpXG5sZXQgdmFsaWRfb3JfZXJyb3IgY2hlY2sgeCA9IE9yX2Vycm9yLm1hcCAocmVzdWx0IChwcm90ZWN0IGNoZWNrIHgpKSB+ZjooZnVuICgpIC0+IHgpXG5cbmxldCBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIF9yZWNvcmQgdiA9XG4gIGxldCByZXN1bHQgPSBwcm90ZWN0IGNoZWNrIHYgaW5cbiAgbmFtZSAoRmllbGQubmFtZSBmbGQpIHJlc3VsdFxuOztcblxubGV0IGZpZWxkIGNoZWNrIHJlY29yZCBmbGQgPVxuICBsZXQgdiA9IEZpZWxkLmdldCBmbGQgcmVjb3JkIGluXG4gIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHZcbjs7XG5cbmxldCBmaWVsZF9mb2xkZXIgY2hlY2sgcmVjb3JkID1cbiAgKCk7XG4gIGZ1biBhY2MgZmxkIC0+IGZpZWxkIGNoZWNrIHJlY29yZCBmbGQgOjogYWNjXG47O1xuXG5sZXQgZmllbGRfZGlyZWN0X2ZvbGRlciBjaGVjayA9XG4gIFN0YWdlZC5zdGFnZSAoZnVuIGFjYyBmbGQgcmVjb3JkIHYgLT5cbiAgICBtYXRjaCBmaWVsZF9kaXJlY3QgY2hlY2sgZmxkIHJlY29yZCB2IHdpdGhcbiAgICB8IFtdIC0+IGFjYyAoKiBBdm9pZCBhbGxvY2F0aW5nIGEgbmV3IGxpc3QgaW4gdGhlIHN1Y2Nlc3MgY2FzZSAqKVxuICAgIHwgcmVzdWx0IC0+IHJlc3VsdCA6OiBhY2MpXG47O1xuXG5sZXQgYWxsIGNoZWNrcyB2ID1cbiAgbGV0IHJlYyBsb29wIGNoZWNrcyB2IGVycnMgPVxuICAgIG1hdGNoIGNoZWNrcyB3aXRoXG4gICAgfCBbXSAtPiBlcnJzXG4gICAgfCBjaGVjayA6OiBjaGVja3MgLT5cbiAgICAgIChtYXRjaCBwcm90ZWN0IGNoZWNrIHYgd2l0aFxuICAgICAgIHwgW10gLT4gbG9vcCBjaGVja3MgdiBlcnJzXG4gICAgICAgfCBlcnIgLT4gbG9vcCBjaGVja3MgdiAoZXJyIDo6IGVycnMpKVxuICBpblxuICBvZl9saXN0IChMaXN0LnJldiAobG9vcCBjaGVja3MgdiBbXSkpXG47O1xuXG5sZXQgb2ZfcmVzdWx0IGYgPVxuICBwcm90ZWN0IChmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBPayAoKSAtPiBwYXNzXG4gICAgfCBFcnJvciBlcnJvciAtPiBmYWlsIGVycm9yKVxuOztcblxubGV0IG9mX2Vycm9yIGYgPVxuICBwcm90ZWN0IChmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBPayAoKSAtPiBwYXNzXG4gICAgfCBFcnJvciBlcnJvciAtPiBbIHsgcGF0aCA9IFtdOyBlcnJvciB9IF0pXG47O1xuXG5sZXQgYm9vbHRlc3QgZiB+aWZfZmFsc2UgPSBwcm90ZWN0IChmdW4gdiAtPiBpZiBmIHYgdGhlbiBwYXNzIGVsc2UgZmFpbCBpZl9mYWxzZSlcblxubGV0IHBhaXIgfmZzdCB+c25kIChmc3RfdmFsdWUsIHNuZF92YWx1ZSkgPVxuICBvZl9saXN0IFsgbmFtZSBcImZzdFwiIChwcm90ZWN0IGZzdCBmc3RfdmFsdWUpOyBuYW1lIFwic25kXCIgKHByb3RlY3Qgc25kIHNuZF92YWx1ZSkgXVxuOztcblxubGV0IGxpc3RfaW5kZXhlZCBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXBpIGxpc3QgfmY6KGZ1biBpIGVsIC0+IG5hbWUgKEludC50b19zdHJpbmcgKGkgKyAxKSkgKHByb3RlY3QgY2hlY2sgZWwpKVxuICB8PiBvZl9saXN0XG47O1xuXG5sZXQgbGlzdCB+bmFtZTpleHRyYWN0X25hbWUgY2hlY2sgbGlzdCA9XG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbCAtPlxuICAgIG1hdGNoIHByb3RlY3QgY2hlY2sgZWwgd2l0aFxuICAgIHwgW10gLT4gW11cbiAgICB8IHQgLT5cbiAgICAgICgqIGV4dHJhIGxldmVsIG9mIHByb3RlY3Rpb24gaW4gY2FzZSBleHRyYWN0X25hbWUgdGhyb3dzIGFuIGV4Y2VwdGlvbiAqKVxuICAgICAgcHJvdGVjdCAoZnVuIHQgLT4gbmFtZSAoZXh0cmFjdF9uYW1lIGVsKSB0KSB0KVxuICB8PiBvZl9saXN0XG47O1xuXG5sZXQgYWxpc3Qgfm5hbWUgZiBsaXN0JyA9IGxpc3QgKGZ1biAoXywgeCkgLT4gZiB4KSBsaXN0JyB+bmFtZTooZnVuIChrZXksIF8pIC0+IG5hbWUga2V5KVxubGV0IGZpcnN0X2ZhaWx1cmUgdDEgdDIgPSBpZiBMaXN0LmlzX2VtcHR5IHQxIHRoZW4gdDIgZWxzZSB0MVxuXG5sZXQgb2ZfZXJyb3Jfb3B0ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHBhc3NcbiAgfCBTb21lIGVycm9yIC0+IGZhaWwgZXJyb3Jcbjs7XG5cbmxldCBib3VuZGVkIH5uYW1lIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgeCA9XG4gIG1hdGNoIE1heWJlX2JvdW5kLmNvbXBhcmVfdG9faW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgeCB3aXRoXG4gIHwgSW5fcmFuZ2UgLT4gcGFzc1xuICB8IEJlbG93X2xvd2VyX2JvdW5kIC0+XG4gICAgKG1hdGNoIGxvd2VyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgSW5jbCBpbmNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPCBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGluY2wpKVxuICAgICB8IEV4Y2wgZXhjbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzIDw9IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgZXhjbCkpKVxuICB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+XG4gICAgKG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgfCBVbmJvdW5kZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgSW5jbCBpbmNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPiBib3VuZCAlc1wiIChuYW1lIHgpIChuYW1lIGluY2wpKVxuICAgICB8IEV4Y2wgZXhjbCAtPiBmYWlsIChQcmludGYuc3ByaW50ZiBcInZhbHVlICVzID49IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgZXhjbCkpKVxuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoICsrICkgdDEgdDIgPSBjb21iaW5lIHQxIHQyXG5lbmRcbiIsIlxuKCogV2UgZG8gbm90IFtpbmNsdWRlIEJhc2VdIGhlcmUsIGFuZCBpbnN0ZWFkIGltcG9ydCBtb2R1bGVzIHRoYXQgW0NvcmVdIGRvZXNuJ3QgZXh0ZW5kLFxuICAgYmVjYXVzZSB3ZSB3YW50IGNvZGUgaW4gW0NvcmVdIHRvIGJlIGNsZWFyIHdoZW4gaXQgcmVmZXJlbmNlcyBhIFtCYXNlXSBtb2R1bGUgdGhhdFxuICAgW0NvcmVdIGlzIG92ZXJyaWRpbmcuICopXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBCYXNlLkFwcGxpY2F0aXZlXG5tb2R1bGUgQXZsdHJlZSA9IEJhc2UuQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhc2UuQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJhc2UuQmluYXJ5X3NlYXJjaFxubW9kdWxlIENvbXBhcmlzb25zID0gQmFzZS5Db21wYXJpc29uc1xubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBCYXNlLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBFcXVhbCA9IEJhc2UuRXF1YWxcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEZsb2F0YWJsZSA9IEJhc2UuRmxvYXRhYmxlXG5tb2R1bGUgRm9ybWF0dGVyID0gQmFzZS5Gb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gQmFzZS5IYXNoXG5tb2R1bGUgSGFzaGVyID0gQmFzZS5IYXNoZXJcbm1vZHVsZSBJbnRhYmxlID0gQmFzZS5JbnRhYmxlXG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gQmFzZS5JbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnRfbWF0aCA9IEJhc2UuSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBCYXNlLkludmFyaWFudFxubW9kdWxlIE1vbmFkID0gQmFzZS5Nb25hZFxubW9kdWxlIFBvbHkgPSBCYXNlLlBvbHlcblxubW9kdWxlIFBvcGNvdW50ID0gQmFzZS5Qb3Bjb3VudFxuW0BAd2FybmluZyBcIi0zXCJdXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiBpbmRpdmlkdWFsIGludCBtb2R1bGVzXCJdXG5cbm1vZHVsZSBQcmV0dHlfcHJpbnRlciA9IEJhc2UuUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBSYW5kb20gPSBCYXNlLlJhbmRvbVxubW9kdWxlIFN0YWdlZCA9IEJhc2UuU3RhZ2VkXG5tb2R1bGUgU3RyaW5nYWJsZSA9IEJhc2UuU3RyaW5nYWJsZVxubW9kdWxlIFN5cyA9IEJhc2UuU3lzXG5tb2R1bGUgVWNoYXIgPSBCYXNlLlVjaGFyXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBCYXNlLldpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gQmFzZS5Xb3JkX3NpemVcblxuKCogV2UgZG8gaW5jbHVkZSBbQmFzZV0ncyB0b3AtbGV2ZWwgdmFsdWUgYW5kIHR5cGUgYmluZGluZ3MsIGJlY2F1c2UgdGhleSBkb24ndCBjYXVzZVxuICAgYW55IGNvbmZ1c2lvbiwgYW5kIGR1cGxpY2F0aW5nIHRoZW0gd291bGQgYmUgZXJyb3IgcHJvbmUuICopXG5pbmNsdWRlIEJhc2UuRXhwb3J0XG5pbmNsdWRlIFN0ZGlvXG5pbmNsdWRlIEJhc2VfZm9yX3Rlc3RzXG5pbmNsdWRlIEJpbl9wcm90LlN0ZFxuaW5jbHVkZSBTdGFibGVfd2l0bmVzcy5FeHBvcnRcbm1vZHVsZSBGaWVsZCA9IEZpZWxkc2xpYi5GaWVsZFxuXG5tb2R1bGUgRnJvbV9zZXhwbGliIDogc2lnXG4gIHR5cGUgYmlnc3RyaW5nID0gU2V4cGxpYi5Db252LmJpZ3N0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIG1hdCA9IFNleHBsaWIuQ29udi5tYXQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB2ZWMgPSBTZXhwbGliLkNvbnYudmVjIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgKCogW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXSBhcmUgdXNlZCBieSB0aGUgY29kZSBnZW5lcmF0ZWQgZnJvbVxuICAgICBbW0BAZGVyaXZpbmcgc2V4cF1dLCBbWyVzZXhwX29mOiBdXSwgYW5kIFtbJW9mX3NleHA6IF1dLiAgVGhlIHR5cGUgW18gc2V4cF9vcGFxdWVdXG4gICAgIGV4cGFuZHMgdG8gdXNlcyBvZiBbc2V4cF9vZl9vcGFxdWVdIGFuZCBbb3BhcXVlX29mX3NleHBdLiAqKVxuXG4gIHZhbCBzZXhwX29mX29wYXF1ZSA6IF8gLT4gQmFzZS5TZXhwLnRcbiAgdmFsIG9wYXF1ZV9vZl9zZXhwIDogQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgc2V4cF9vZl9wYWlyIDogKCdhIC0+IEJhc2UuU2V4cC50KSAtPiAoJ2IgLT4gQmFzZS5TZXhwLnQpIC0+ICdhICogJ2IgLT4gQmFzZS5TZXhwLnRcbiAgdmFsIHBhaXJfb2Zfc2V4cCA6IChCYXNlLlNleHAudCAtPiAnYSkgLT4gKEJhc2UuU2V4cC50IC0+ICdiKSAtPiBCYXNlLlNleHAudCAtPiAnYSAqICdiXG5cbiAgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3Igb2YgZXhuICogQmFzZS5TZXhwLnRcblxuICB2YWwgb2Zfc2V4cF9lcnJvciA6IHN0cmluZyAtPiBCYXNlLlNleHAudCAtPiBfXG4gIHZhbCBvZl9zZXhwX2Vycm9yX2V4biA6IGV4biAtPiBCYXNlLlNleHAudCAtPiBfXG5lbmQgPVxuICBTZXhwbGliLkNvbnZcblxuaW5jbHVkZSBGcm9tX3NleHBsaWJcblxuKCogW3NleHBfb3BhcXVlXSBpbmRpY2F0ZXMgdG8gW3BweF9zZXhwX2NvbnZdIHRoYXQgYSB2YWx1ZSBzaG91bGQgYmUgcmVuZGVyZWQgYXMgW19dLCBpLmUuXG4gICBbU2V4cC5BdG9tIFwiX1wiXS4gIEhlcmUgd2UgZXhwb3NlIHRoZSBbQEBkZXJpdmluZ10gYXNwZWN0cyBvZiBbc2V4cF9vcGFxdWVdIHNvIHRoYXRcbiAgIG90aGVyIHBweCdzIHRyZWF0IFtzZXhwX29wYXF1ZV0gY29ycmVjdGx5LCBieSBpZ25vcmluZyBpdCBhbmQgcHJvY2Vzc2luZyB0aGUgdW5kZXJseWluZ1xuICAgdHlwZS4gKilcbmluY2x1ZGUgKFxuc3RydWN0XG4gIHR5cGUgJ2Egc2V4cF9vcGFxdWUgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2Egc2V4cF9vcGFxdWUgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kXG53aXRoIHR5cGUgJ2Egc2V4cF9vcGFxdWUgOj0gJ2EpXG5cbmluY2x1ZGUgKFxuICBUeXBlcmVwX2xpYi5TdGQgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgVHlwZXJlcF9saWIuU3RkXG4gIGVuZFxuICB3aXRoIG1vZHVsZSBUeXBlX2VxdWFsIDo9IFR5cGVyZXBfbGliLlN0ZC5UeXBlX2VxdWFsKVxuXG5tb2R1bGUgVmFyaWFudCA9IFZhcmlhbnRzbGliLlZhcmlhbnRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxubGV0IGFtX3J1bm5pbmdfdGVzdCA9XG4gIHRyeVxuICAgIGlnbm9yZSAoU3RkbGliLlN5cy5nZXRlbnYgXCJURVNUSU5HX0ZSQU1FV09SS1wiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgKCogW0NhbWwuKl0gbmV2ZXIgcmFpc2VzIFtOb3RfZm91bmRfc10gKilcbiAgfCBTdGRsaWIuTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG50eXBlICdhIGlkZW50aXR5ID0gJ2FcblxubW9kdWxlIE5vdF9mb3VuZCA9IHN0cnVjdFxuICBleGNlcHRpb25cbiAgICBOb3RfZm91bmQgPSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgICBbQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgICAgICAgIHt8W3NpbmNlIDIwMTgtMDJdIEluc3RlYWQgb2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgY29uc2lkZXIgdXNpbmcgW3JhaXNlX3NdIHdpdGggYW5cbmluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UuICBJZiBjb2RlIG5lZWRzIHRvIGRpc3Rpbmd1aXNoIFtOb3RfZm91bmRdIGZyb20gb3RoZXJcbmV4Y2VwdGlvbnMsIHBsZWFzZSBjaGFuZ2UgaXQgdG8gaGFuZGxlIGJvdGggW05vdF9mb3VuZF0gYW5kIFtOb3RfZm91bmRfc10uICBUaGVuLCBpbnN0ZWFkXG5vZiByYWlzaW5nIFtOb3RfZm91bmRdLCByYWlzZSBbTm90X2ZvdW5kX3NdIHdpdGggYW4gaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS58fV1cblxuICBleGNlcHRpb24gTm90X2ZvdW5kX3MgPSBCYXNlLk5vdF9mb3VuZF9zXG5lbmRcblxuaW5jbHVkZSBOb3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNleHBhYmxlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFN0cmluZ2FibGUuUykgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX2dyYW1tYXJdXG5cbiAgICAgIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBTZXhwbGliLlNleHAuQXRvbSBzIC0+XG4gICAgICAgICAgKHRyeSBNLm9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkxpc3QgXyAtPlxuICAgICAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgICAgIFwiU2V4cGFibGUuT2Zfc3RyaW5nYWJsZS50X29mX3NleHAgZXhwZWN0ZWQgYW4gYXRvbSwgYnV0IGdvdCBhIGxpc3RcIlxuICAgICAgICAgICAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGxpYi5TZXhwLkF0b20gKE0udG9fc3RyaW5nIHQpXG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA6IE0udCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICAgICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIHN0cmluZ19zZXhwX2dyYW1tYXJcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zdHJpbmdhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogUykgOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gICAgICBsZXQgb2Zfc3RyaW5nIHggPSBTZXhwbGliLkNvbnYub2Zfc3RyaW5nX19vZl9fb2Zfc2V4cCBNLnRfb2Zfc2V4cCB4XG4gICAgICBsZXQgdG9fc3RyaW5nIHggPSBTZXhwbGliLkNvbnYuc3RyaW5nX29mX19vZl9fc2V4cF9vZiBNLnNleHBfb2ZfdCB4XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUb19zdHJpbmdhYmxlID0gU3RhYmxlLlRvX3N0cmluZ2FibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hYmxlX2ludGZcbmluY2x1ZGUgQmluX3Byb3QuQmluYWJsZVxubW9kdWxlIFNoYXBlID0gQmluX3Byb3QuU2hhcGVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgT2ZfYmluYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoQmluYWJsZSA6IE1pbmltYWwuUykgKE0gOiBDb252X3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUykgKE0gOiBDb252IHdpdGggdHlwZSBiaW5hYmxlIDo9IEJpbmFibGUudCkgOlxuICAgICAgUyB3aXRoIHR5cGUgdCA6PSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMxKVxuICAgICAgICAoTSA6IENvbnYxX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgJ2EgYmluYWJsZSA6PSAnYSBCaW5hYmxlLnQpIDpcbiAgICAgIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICAgIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuXG4gICAgbW9kdWxlIFYyIChCaW5hYmxlIDogTWluaW1hbC5TMSkgKE0gOiBDb252MSB3aXRoIHR5cGUgJ2EgYmluYWJsZSA6PSAnYSBCaW5hYmxlLnQpIDpcbiAgICAgIFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTFfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYikgYmluYWJsZSA6PSAoJ2EsICdiKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMlxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzIpXG4gICAgICAgIChNIDogQ29udjIgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRoX3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9iaW5hYmxlMyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzMpXG4gICAgICAgIChNIDogQ29udjNfd2l0aG91dF91dWlkIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMlxuICAgICAgICAoQmluYWJsZSA6IE1pbmltYWwuUzMpXG4gICAgICAgIChNIDogQ29udjMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBiaW5hYmxlIDo9ICgnYSwgJ2IsICdjKSBCaW5hYmxlLnQpIDpcbiAgICAgIFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTNfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTZXhwYWJsZS5TKSA9XG4gICAgICBPZl9iaW5hYmxlLlYxXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgIGVuZClcblxuICAgIG1vZHVsZSBWMiAoTSA6IENvbnZfc2V4cGFibGUpID1cbiAgICAgIE9mX2JpbmFibGUuVjJcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgICAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IE0udFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnNleHBfb2ZfdFxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gTS50X29mX3NleHBcbiAgICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFN0cmluZ2FibGUuUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmRcblxuICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0udG9fc3RyaW5nXG5cbiAgICAgICAgKCogV3JhcCBleGNlcHRpb24gZm9yIGltcHJvdmVkIGRpYWdub3N0aWNzLiAqKVxuICAgICAgICBleGNlcHRpb24gT2ZfYmluYWJsZSBvZiBzdHJpbmcgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSBzID1cbiAgICAgICAgICB0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChPZl9iaW5hYmxlIChzLCB4KSlcbiAgICAgICAgOztcbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoTSA6IENvbnZfc3RyaW5nYWJsZSkgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmRcblxuICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0udG9fc3RyaW5nXG5cbiAgICAgICAgKCogV3JhcCBleGNlcHRpb24gZm9yIGltcHJvdmVkIGRpYWdub3N0aWNzLiAqKVxuICAgICAgICBleGNlcHRpb24gT2ZfYmluYWJsZSBvZiBzdHJpbmcgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSBzID1cbiAgICAgICAgICB0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgfCB4IC0+IHJhaXNlIChPZl9iaW5hYmxlIChzLCB4KSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID0gTS5jYWxsZXJfaWRlbnRpdHlcbiAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiBCaWdhcnJheVxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG5cblxudHlwZSAnYSBtID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5cbmxldCBvZl9iaWdzdHJpbmcgKHR5cGUgYSkgbSBiaWdzdHJpbmcgPVxuICBsZXQgbW9kdWxlIE0gPSAodmFsIG0gOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgdCA9IE0uYmluX3JlYWRfdCBiaWdzdHJpbmcgfnBvc19yZWYgaW5cbiAgbGV0IGJpZ3N0cmluZ19sZW5ndGggPSBBcnJheTEuZGltIGJpZ3N0cmluZyBpblxuICAobWF0Y2ggIXBvc19yZWYgPSBiaWdzdHJpbmdfbGVuZ3RoIHdpdGhcbiAgIHwgdHJ1ZSAtPiAoKVxuICAgfCBmYWxzZSAtPlxuICAgICByYWlzZV9zXG4gICAgICAgWyVtZXNzYWdlXG4gICAgICAgICBcImJpbl9yZWFkX3QgZGlkIG5vdCBjb25zdW1lIHRoZSBlbnRpcmUgYnVmZmVyXCJcbiAgICAgICAgICAgfmNvbnN1bWVkOighcG9zX3JlZiA6IGludClcbiAgICAgICAgICAgKGJpZ3N0cmluZ19sZW5ndGggOiBpbnQpXSk7XG4gIHRcbjs7XG5cbigqIFVzaW5nIHRoZSBbQmlnc3RyaW5nXSBtb2R1bGUgd291bGQgaW50cm9kdWNlIGEgY3ljbGljIGRlcGVuZGVuY3kuICopXG5sZXQgY3JlYXRlX2JpZ3N0cmluZyBzaXplID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIEJpZ2FycmF5LmNfbGF5b3V0IHNpemVcblxubGV0IHRvX2JpZ3N0cmluZyA/KHByZWZpeF93aXRoX2xlbmd0aCA9IGZhbHNlKSAodHlwZSBhKSBtIHQgPVxuICBsZXQgbW9kdWxlIE0gPSAodmFsIG0gOiBTIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgbGV0IHRfbGVuZ3RoID0gTS5iaW5fc2l6ZV90IHQgaW5cbiAgbGV0IGJpZ3N0cmluZ19sZW5ndGggPVxuICAgIGlmIHByZWZpeF93aXRoX2xlbmd0aCB0aGVuIHRfbGVuZ3RoICsgOCAoKiB0aGUgc2l6ZSBvZiBhIDY0LWJpdCBpbnQgKikgZWxzZSB0X2xlbmd0aFxuICBpblxuICBsZXQgYmlnc3RyaW5nID0gY3JlYXRlX2JpZ3N0cmluZyBiaWdzdHJpbmdfbGVuZ3RoIGluXG4gIGxldCBwb3MgPVxuICAgIGlmIHByZWZpeF93aXRoX2xlbmd0aFxuICAgIHRoZW4gQmluX3Byb3QuV3JpdGUuYmluX3dyaXRlX2ludF82NGJpdCBiaWdzdHJpbmcgfnBvczowIHRfbGVuZ3RoXG4gICAgZWxzZSAwXG4gIGluXG4gIGxldCBwb3MgPSBNLmJpbl93cml0ZV90IGJpZ3N0cmluZyB+cG9zIHQgaW5cbiAgYXNzZXJ0IChwb3MgPSBiaWdzdHJpbmdfbGVuZ3RoKTtcbiAgYmlnc3RyaW5nXG47O1xuXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMlxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMlxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMlxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMlxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMlxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlLlYxXG5tb2R1bGUgT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUxLlYxXG5tb2R1bGUgT2ZfYmluYWJsZTJfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUyLlYxXG5tb2R1bGUgT2ZfYmluYWJsZTNfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUzLlYxXG5tb2R1bGUgT2Zfc2V4cGFibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3NleHBhYmxlLlYxXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2Zfc3RyaW5nYWJsZS5WMVxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUgPSBzaWdcbiAgICAgIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9uc1xuXG4gICAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50XG4gICAgZW5kXG5cbiAgICAoKiBDaGVjayB0aGF0IG9ubHkgdGhlIGZ1bmN0aW9ucyAmIHNoYXBlIGFyZSBzdWZmaWNpZW50IGZvciBbQEBkZXJpdmluZyBiaW5faW9dLiBUaGVcbiAgICAgICBmYWN0IHRoYXQgdGhpcyBmdW5jdG9yIHR5cGVjaGVja3MgaXMsIGl0c2VsZiwgdGhlIHRlc3QuICopXG4gICAgbW9kdWxlIF8gKFggOiBTX29ubHlfZnVuY3Rpb25zX2FuZF9zaGFwZSkgOiBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBYLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuICBlbmQpXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5QcmludGZ9W0Jhc2UuUHJpbnRmXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIEJhc2UuUHJpbnRmICgqKiBAb3BlbiAqKVxuXG5sZXQgZXByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmVwcmludGZcbmxldCBmcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwuZnByaW50ZlxubGV0IGtmcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwua2ZwcmludGZcbmxldCBwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5wcmludGZcblxuXG4oKiogcHJpbnQgdG8gc3RkZXJyOyBleGl0IDEgKilcbmxldCBleGl0ZiBmbXQgPVxuICBrc3ByaW50ZlxuICAgIChmdW4gcyAoKSAtPlxuICAgICAgIGVwcmludGYgXCIlc1xcbiUhXCIgcztcbiAgICAgICBleGl0IDEpXG4gICAgZm10XG47O1xuXG50eXBlIHByaW50ZiA9IHsgcHJpbnRmIDogJ2EuICgnYSwgQnVmZmVyLnQsIHVuaXQpIGZvcm1hdCAtPiAnYSB9XG5cbmxldCBjb2xsZWN0X3RvX3N0cmluZyBmID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IGRvbmVfID0gcmVmIGZhbHNlIGluXG4gIGxldCBwcmludGYgZm10ID1cbiAgICBrYnByaW50ZlxuICAgICAgKGZ1biBidWYgLT5cbiAgICAgICAgIGlmICFkb25lX1xuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIEJ1ZmZlci5yZXNldCBidWY7XG4gICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW3ByaW50Zl0gdXNlZCBhZnRlciBbY29sbGVjdF90b19zdHJpbmddIHJldHVybmVkXCJdKSlcbiAgICAgIGJ1ZlxuICAgICAgZm10XG4gIGluXG4gIGYgeyBwcmludGYgfTtcbiAgZG9uZV8gOj0gdHJ1ZTtcbiAgbGV0IG91dHB1dCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgQnVmZmVyLnJlc2V0IGJ1ZjtcbiAgb3V0cHV0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbigqIEFsbCB0aGUgdHlwZXMgYXMgZXhwb3NlZCBpbiB0aGUgbWxpIGFyZSBkZWZpbmVkIGluIHRoaXMgW1R5cGVzXSBtb2R1bGUuICBUaGUgcmVzdCBvZlxuICAgdGhpcyBmaWxlIGlzIHNpbXBseSBvdmVycmlkaW5nIGFsbCB0aGUgYmluX2lvLCBjb21wYXJlLCBhbmQgc2V4cCBmdW5jdGlvbnMgdG8gcmFpc2VcbiAgIGV4Y2VwdGlvbnMuICopXG5tb2R1bGUgVHlwZXMgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5vYm9keSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTm9ib2R5XCJcbiAgZW5kXG5cbiAgbW9kdWxlIE1lID0gc3RydWN0XG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJNZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBSZWFkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gWyBgUmVhZCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFdyaXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID0gWyBgV2hvX2Nhbl93cml0ZSBvZiBNZS50IF0gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIldyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIEltbXV0YWJsZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBgV2hvX2Nhbl93cml0ZSBvZiBOb2JvZHkudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJJbW11dGFibGVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICBbIFJlYWQudFxuICAgICAgfCBXcml0ZS50XG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlJlYWRfd3JpdGVcIlxuICBlbmRcblxuICBtb2R1bGUgVXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgJ2FcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiVXBwZXJfYm91bmRcIlxuICBlbmRcbmVuZFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4oKiBUaGlzIGlzIGFuIGV4cGxpY2l0IG1vZHVsZSB0eXBlIGluc3RlYWQgb2YganVzdCBnaXZlbiBpbmxpbmUgYXMgdGhlIHJldHVybiBzaWduYXR1cmUgb2ZcbiAgIFtPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMV0gdG8gYXZvaWQgYW4gdW51c2VkIHZhbHVlIHdhcm5pbmcgd2l0aCBiaW5faW8gdmFsdWVzLiAqKVxubW9kdWxlIHR5cGUgU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc2lnXG4gIHR5cGUgJ2EgdCA9ICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHN0YWJsZV93aXRuZXNzXVxuZW5kXG5cbigqIE92ZXJyaWRlIGFsbCBiaW5faW8sIHNleHAsIGNvbXBhcmUgZnVuY3Rpb25zIHRvIHJhaXNlIGV4Y2VwdGlvbnMgKilcbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoTmFtZSA6IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgOiBTZXhwYWJsZV9iaW5hYmxlX2NvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2FcblxuICBsZXQgc2V4cF9vZl90IF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLnNleHBfb2ZfdF1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IHRfb2Zfc2V4cCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy50X29mX3NleHBdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBjb21wYXJlIF8gXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuY29tcGFyZV1cIiBOYW1lLm5hbWUgKClcbiAgbGV0IGhhc2hfZm9sZF90IF8gXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuaGFzaF9mb2xkX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X3NleHBfZ3JhbW1hciBfID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIEJhc2UuTm90aGluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgc3RhYmxlX3dpdG5lc3MgXyA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgbGV0IGdsb2JhbGl6ZSBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMuZ2xvYmFsaXplXVwiIE5hbWUubmFtZSAoKVxuXG4gIGluY2x1ZGVcbiAgICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICBlbmQpXG4gICAgICAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIHNlcmlhbGl6YXRpb25cIiBOYW1lLm5hbWUgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSBfID1cbiAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgdXNlZCAlcyBiaW5faW8gZGVzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUwIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gIGVuZCkgOiBzaWdcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwX3BvbHksIHN0YWJsZV93aXRuZXNzXVxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKFQpXG5cbiAgdHlwZSB0ID0gVC50IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcbiAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICBsZXQgZ2xvYmFsaXplIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5nbG9iYWxpemVdXCIgVC5uYW1lICgpXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTm9ib2R5ID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk5vYm9keSlcbiAgICBtb2R1bGUgTWUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTWUpXG4gICAgbW9kdWxlIFJlYWQgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZClcbiAgICBtb2R1bGUgV3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuV3JpdGUpXG4gICAgbW9kdWxlIFJlYWRfd3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZF93cml0ZSlcbiAgICBtb2R1bGUgSW1tdXRhYmxlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLkltbXV0YWJsZSlcblxuICAgIHR5cGUgbm9ib2R5ID0gTm9ib2R5LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICB0eXBlIG1lID0gTWUudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUeXBlcy5VcHBlcl9ib3VuZClcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVHlwZXMuVXBwZXJfYm91bmQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgXyA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICAgIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG5cbiAgICAgIGxldCBnbG9iYWxpemUgXyA9XG4gICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmdsb2JhbGl6ZV1cIiBUeXBlcy5VcHBlcl9ib3VuZC5uYW1lICgpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gICAgdHlwZSByZWFkID0gVjEuUmVhZC50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgdHlwZSB3cml0ZSA9IFYxLldyaXRlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgZ2xvYmFsaXplLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIHR5cGUgaW1tdXRhYmxlID0gVjEuSW1tdXRhYmxlLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlIHJlYWRfd3JpdGUgPSBWMS5SZWFkX3dyaXRlLnRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICB0eXBlICdhIHBlcm1zID0gJ2EgVjEuVXBwZXJfYm91bmQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbm1vZHVsZSBFeHBvcnQgPSBTdGFibGUuRXhwb3J0XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBDb21wYXJhdG9yID0gQmFzZS5Db21wYXJhdG9yXG5cbnR5cGUgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIENvbXBhcmF0b3IudCA9IHByaXZhdGVcbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgfVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBDb21wYXJhdG9yIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuaW5jbHVkZSAoQ29tcGFyYXRvciA6IEJhc2VfbWFzaylcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgdCA9IHByaXZhdGVcbiAgICAgIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgICAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgICBtb2R1bGUgdHlwZSBTMSA9IFMxXG5cbiAgICBsZXQgbWFrZSA9IG1ha2VcblxuICAgIG1vZHVsZSBNYWtlID0gTWFrZVxuICAgIG1vZHVsZSBNYWtlMSA9IE1ha2UxXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdmLCAncykgdCA9ICgnZiwgJ3MpIEJhc2UuRWl0aGVyLnQgPVxuICAgICAgfCBGaXJzdCBvZiAnZlxuICAgICAgfCBTZWNvbmQgb2YgJ3NcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgbGV0IG1hcCB4IH5mMSB+ZjIgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEZpcnN0IHgxIC0+IEZpcnN0IChmMSB4MSlcbiAgICAgIHwgU2Vjb25kIHgyIC0+IFNlY29uZCAoZjIgeDIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgQmFzZS5FaXRoZXJcblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdCBbQEBkZXJpdmluZyBzZXhwX29mLCBjb21wYXJlXVxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5laXRoZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmVpdGhlclxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFMwX3dpdGhvdXRfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIGluY2x1ZGUgUzBfd2l0aG91dF9jb21wYXJhdG9yXG4gIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxuKCoqIFRoZSBwb2x5bW9ycGhpYyBzaWduYXR1cmVzIHJlcXVpcmUgYSBtYXBwaW5nIGZ1bmN0aW9uIHNvIHBlb3BsZSBjYW4gd3JpdGUgY29udmVyc2lvblxuICAgIGZ1bmN0aW9ucyB3aXRob3V0IGVpdGhlciAoMSkgcmUtaW1wbGVtZW50aW5nIHRoZSBtYXBwaW5nIGZ1bmN0aW9uIGlubGluZSBvciAoMilcbiAgICByZWFjaGluZyBpbnRvIHRoZSB1bnN0YWJsZSBwYXJ0IG9mIHRoZSBtb2R1bGUuICopXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBtYXBcbiAgICA6ICAoJ2ExLCAnYTIsICdhMykgdFxuICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIsICdhMywgJ2E0KSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgbWFwXG4gICAgOiAgKCdhMSwgJ2EyLCAnYTMsICdhNCkgdFxuICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgIC0+IGYzOignYTMgLT4gJ2IzKVxuICAgIC0+IGY0OignYTQgLT4gJ2I0KVxuICAgIC0+ICgnYjEsICdiMiwgJ2IzLCAnYjQpIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTMF93aXRob3V0X2NvbXBhcmF0b3IgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFMwX3dpdGhvdXRfY29tcGFyYXRvciB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMCB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgaW5jbHVkZSBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cblxuICAgIGluY2x1ZGUgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIFM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cblxuICAgIHR5cGUgdCA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udCA9XG4gICAgICB7IHBvc19mbmFtZSA6IHN0cmluZ1xuICAgICAgOyBwb3NfbG51bSA6IGludFxuICAgICAgOyBwb3NfYm9sIDogaW50XG4gICAgICA7IHBvc19jbnVtIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIGhhc2gsIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgdG9fc3RyaW5nID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uLnNleHBfb2ZfdFxuIiwiKCogVGhpcyBtb2R1bGUgaXMgdHJ5aW5nIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcyBvbiBtb2R1bGVzIGluIENvcmUsIHNvIGFzIHRvIGFsbG93XG4gICBbSW5mb10sIFtFcnJvcl0sIGFuZCBbT3JfZXJyb3JdIHRvIGJlIHVzZWQgaW4gaXMgbWFueSBwbGFjZXMgcGxhY2VzIGFzIHBvc3NpYmxlLlxuICAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXcgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIEluZm9faW50ZlxuXG5tb2R1bGUgdHlwZSBTID0gQmFzZS5JbmZvLlNcblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24wXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG5cbiAgaW5jbHVkZSAoXG4gIHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubW9kdWxlIEJpbmFibGVfZXhuID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGV4biBbQEBkZXJpdmluZyBzZXhwX29mLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgdCA9IHQgfD4gWyVzZXhwX29mOiB0XVxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBFeG4uY3JlYXRlX3NcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNleHApXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUXG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgU2V4cC5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBFeHRlbmQgKEluZm8gOiBCYXNlLkluZm8uUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZvXG5cbiAgbW9kdWxlIEludGVybmFsX3JlcHIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgICBtb2R1bGUgQmluYWJsZV9leG4gPSBCaW5hYmxlX2V4bi5TdGFibGVcblxuICAgICAgbW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgICAgICAoKiBbc2V4cF9vZl90XSBhcyBkZWZpbmVkIGhlcmUgaXMgdW5zdGFibGU7IHRoaXMgaXMgT0sgYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgICAgICAgIFt0X29mX3NleHBdLiAgW3NleHBfb2ZfdF0gaXMgb25seSB1c2VkIHRvIHByb2R1Y2UgYSBzZXhwIHRoYXQgaXMgbmV2ZXJcbiAgICAgICAgICAgICBkZXNlcmlhbGl6ZWQgYXMgYSBbU291cmNlX2NvZGVfcG9zaXRpb25dLiAqKVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8uSW50ZXJuYWxfcmVwci50ID1cbiAgICAgICAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgb2YgU2V4cC50XG4gICAgICAgICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBFeG4gb2YgQmluYWJsZV9leG4uVjEudFxuICAgICAgICAgIHwgU2V4cCBvZiBTZXhwLnRcbiAgICAgICAgICB8IFRhZ19zZXhwIG9mIHN0cmluZyAqIFNleHAudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLlYxLnQgb3B0aW9uXG4gICAgICAgICAgfCBUYWdfdCBvZiBzdHJpbmcgKiB0XG4gICAgICAgICAgfCBUYWdfYXJnIG9mIHN0cmluZyAqIFNleHAudCAqIHRcbiAgICAgICAgICB8IE9mX2xpc3Qgb2YgaW50IG9wdGlvbiAqIHQgbGlzdFxuICAgICAgICAgIHwgV2l0aF9iYWNrdHJhY2Ugb2YgdCAqIHN0cmluZyAoKiBiYWNrdHJhY2UgKilcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBTdGFibGUuVjJcblxuICAgIGxldCB0b19pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cbiAgICBsZXQgb2ZfaW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2hdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gSW5mby5JbnRlcm5hbF9yZXByLm9mX2luZm9cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKEludGVybmFsX3JlcHIuU3RhYmxlLlYyKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgPVxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBJbnRlcm5hbF9yZXByLlN0YWJsZS5WMi5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIG9mX2JpbmFibGVcbiAgICAgICAgICB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgICAoU2V4cClcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSBJbmZvLnNleHBfb2ZfdFxuICAgICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBJbmZvLnRfb2Zfc2V4cFxuICAgICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHNleHBfb2ZfdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSB0X29mX3NleHBcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNleHApXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZSBTZXhwLnN0YWJsZV93aXRuZXNzIG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgdHlwZSB0ID0gU3RhYmxlLlYyLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbmluY2x1ZGUgRXh0ZW5kIChCYXNlLkluZm8pXG5cbiIsImluY2x1ZGUgQmFzZS5FcnJvclxuaW5jbHVkZSBJbmZvLkV4dGVuZCAoQmFzZS5FcnJvcilcblxubGV0IGZhaWx3aXRocyA/c3RyaWN0IH5oZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICByYWlzZSAoY3JlYXRlID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG5cbmxldCBmYWlsd2l0aHAgP3N0cmljdCBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICByYWlzZSAoY3JlYXRlID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBSZXN1bHQgPSBCYXNlLlJlc3VsdFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFJlc3VsdC50ID1cbiAgICAgIHwgT2sgb2YgJ2FcbiAgICAgIHwgRXJyb3Igb2YgJ2JcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChmMiBlcnIpXG4gICAgICB8IE9rIHggLT4gT2sgKGYxIHgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxX3N0YWJsZV91bml0X3Rlc3QgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoc3RyaW5nLCBpbnQpIFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gICAgbGV0IHRlc3RzID1cbiAgICAgIFsgVjEuT2sgXCJmb29cIiwgXCIoT2sgZm9vKVwiLCBcIlxcMDAwXFwwMDNmb29cIjsgVjEuRXJyb3IgNywgXCIoRXJyb3IgNylcIiwgXCJcXDAwMVxcMDA3XCIgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFJlc3VsdFxuIiwiKCoqIEFuIGludGVyZmFjZSBmb3IgY3JlYXRpbmcgdW5pdCB0ZXN0cyB0byBjaGVjayBzdGFiaWxpdHkgb2Ygc2V4cCBhbmQgYmluLWlvXG4gICAgc2VyaWFsaXphdGlvbnMgKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcblxuXG4gICgqKiBbdGVzdHNdIGlzIGEgbGlzdCBvZiAodmFsdWUsIHNleHAtcmVwcmVzZW50YXRpb24sIGJpbi1pby1yZXByZXNlbnRhdGlvbikgdHJpcGxlcy5cbiAgICAgIFRoZSB1bml0IHRlc3RzIGNoZWNrIHRoYXQgdGhlIHR5cGUgcHJvcGVybHkgc2VyaWFsaXplcyBhbmRcbiAgICAgIGRlLXNlcmlhbGl6ZXMgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiByZXByZXNlbnRhdGlvbnMuICopXG4gIHZhbCB0ZXN0cyA6ICh0ICogc3RyaW5nICogc3RyaW5nKSBsaXN0XG5lbmRcblxuKCoqIFVub3JkZXJlZCBjb250YWluZXIgdGVzdHMgYXJlIGZvciB0eXBlcyB3aXRoIHNlcmlhbGl6YXRpb25zIHRoYXQgd2lsbCBjb250YWluIGFcbiAgICBjZXJ0YWluIHNldCBvZiBlbGVtZW50cyAoZWFjaCByZXByZXNlbnRlZCBieSBhIHNpbmdsZSBzZXhwIG9yIGJpbi1pbyBzdHJpbmcpIHdoaWNoIG1heVxuICAgIGFwcGVhciBpbiBhbnkgb3JkZXIsIHN1Y2ggYXMgaGFzaCB0YWJsZXMgYW5kIGhhc2ggc2V0cy4gKilcbm1vZHVsZSBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNleHBzIDogc3RyaW5nIGxpc3RcbiAgICA7IGJpbl9pb19oZWFkZXIgOiBzdHJpbmdcbiAgICA7IGJpbl9pb19lbGVtZW50cyA6IHN0cmluZyBsaXN0XG4gICAgfVxuZW5kXG5cbm1vZHVsZSB0eXBlIFVub3JkZXJlZF9jb250YWluZXJfYXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIHRlc3RzIDogKHQgKiBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QudCkgbGlzdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5Pcl9lcnJvclxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgSU8gPSBCYXNlLk9yX2Vycm9yXG5cbiAgbGV0IHJ1biBmID0gb2tfZXhuIChmICgpKVxuICBsZXQgc2FuaXRpemUgcyA9IHNcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5lbmRcblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZ193aXRoX3VuaXRfZXhwZWN0ID0gRXhwZWN0X3Rlc3RfY29uZmlnXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjEudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgeCB+ZiA9IFJlc3VsdC5TdGFibGUuVjEubWFwIHggfmYxOmYgfmYyOkZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IuU3RhYmxlLlYyLnQpIFJlc3VsdC5TdGFibGUuVjEudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYgPSBSZXN1bHQuU3RhYmxlLlYxLm1hcCB4IH5mMTpmIH5mMjpGbi5pZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU2VxdWVuY2VcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgbW9kdWxlIEJpbmFibGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgQmFzZS5TZXF1ZW5jZS50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuU2VxdWVuY2Uub2ZfbGlzdFxuICAgIGxldCB0b19iaW5hYmxlID0gQmFzZS5TZXF1ZW5jZS50b19saXN0XG4gIGVuZClcblxubW9kdWxlIFN0ZXAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGVwXG5cbiAgdHlwZSAoJ2EsICdzKSB0ID0gKCdhLCAncykgU3RlcC50ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgeyBzdGF0ZSA6ICdzIH1cbiAgICB8IFlpZWxkIG9mXG4gICAgICAgIHsgdmFsdWUgOiAnYVxuICAgICAgICA7IHN0YXRlIDogJ3NcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudC50ID1cbiAgICB8IExlZnQgb2YgJ2FcbiAgICB8IFJpZ2h0IG9mICdiXG4gICAgfCBCb3RoIG9mICdhICogJ2JcbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEhlYXAgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGNyZWF0ZSA6IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdFxuICB2YWwgYWRkIDogJ2EgdCAtPiAnYSAtPiAnYSB0XG4gIHZhbCBwb3BfbWluIDogJ2EgdCAtPiAoJ2EgKiAnYSB0KSBvcHRpb25cbmVuZFxuXG5sZXQgbWVyZ2VfYWxsIChtb2R1bGUgSGVhcCA6IEhlYXApIHNlcXMgfmNvbXBhcmUgPVxuICBsZXQgbW9kdWxlIE1lcmdlX2FsbF9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGhlYXAgOiAoJ2EgKiAnYSBCYXNlLlNlcXVlbmNlLnQpIEhlYXAudFxuICAgICAgOyBub3RfeWV0X2luX2hlYXAgOiAnYSBCYXNlLlNlcXVlbmNlLnQgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgPSBGaWVsZHMuY3JlYXRlXG4gIGVuZFxuICBpblxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OlxuICAgICAgKE1lcmdlX2FsbF9zdGF0ZS5jcmVhdGVcbiAgICAgICAgIH5oZWFwOihIZWFwLmNyZWF0ZSB+Y29tcGFyZTooZnVuIGEgYiAtPiBCYXNlLkNvbXBhcmFibGUubGlmdCBjb21wYXJlIH5mOmZzdCBhIGIpKVxuICAgICAgICAgfm5vdF95ZXRfaW5faGVhcDpzZXFzKVxuICAgIH5mOihmdW4geyBoZWFwOyBub3RfeWV0X2luX2hlYXAgfSAtPlxuICAgICAgbWF0Y2ggbm90X3lldF9pbl9oZWFwIHdpdGhcbiAgICAgIHwgc2VxIDo6IG5vdF95ZXRfaW5faGVhcCAtPlxuICAgICAgICAobWF0Y2ggRXhwZXJ0Lm5leHRfc3RlcCBzZXEgd2l0aFxuICAgICAgICAgfCBEb25lIC0+IFNraXAgeyBzdGF0ZSA9IHsgbm90X3lldF9pbl9oZWFwOyBoZWFwIH0gfVxuICAgICAgICAgfCBTa2lwIHsgc3RhdGUgPSBzZXEgfSAtPlxuICAgICAgICAgICBTa2lwIHsgc3RhdGUgPSB7IG5vdF95ZXRfaW5faGVhcCA9IHNlcSA6OiBub3RfeWV0X2luX2hlYXA7IGhlYXAgfSB9XG4gICAgICAgICB8IFlpZWxkIHsgdmFsdWUgPSBlbHQ7IHN0YXRlID0gc2VxIH0gLT5cbiAgICAgICAgICAgU2tpcCB7IHN0YXRlID0geyBub3RfeWV0X2luX2hlYXA7IGhlYXAgPSBIZWFwLmFkZCBoZWFwIChlbHQsIHNlcSkgfSB9KVxuICAgICAgfCBbXSAtPlxuICAgICAgICAobWF0Y2ggSGVhcC5wb3BfbWluIGhlYXAgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IERvbmVcbiAgICAgICAgIHwgU29tZSAoKGVsdCwgc2VxKSwgaGVhcCkgLT5cbiAgICAgICAgICAgWWllbGQgeyB2YWx1ZSA9IGVsdDsgc3RhdGUgPSB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCA9IFsgc2VxIF0gfSB9KSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gUXVpY2tjaGVja19pbnRmXG5vcGVuIEJhc2VfcXVpY2tjaGVja1xubW9kdWxlIEZsb2F0ID0gQmFzZS5GbG9hdFxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIE9wdGlvbiA9IEJhc2UuT3B0aW9uXG5tb2R1bGUgU2V0ID0gQmFzZS5TZXRcbm1vZHVsZSBTZXhwID0gQmFzZS5TZXhwXG5cbm1vZHVsZSBQb2x5bW9ycGhpY190eXBlcyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHZhcmlhbnQyID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjKSB2YXJpYW50MyA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB2YXJpYW50NCA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHZhcmlhbnQ1ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIF1cbiAgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSB2YXJpYW50NiA9XG4gICAgWyBgQSBvZiAnYVxuICAgIHwgYEIgb2YgJ2JcbiAgICB8IGBDIG9mICdjXG4gICAgfCBgRCBvZiAnZFxuICAgIHwgYEUgb2YgJ2VcbiAgICB8IGBGIG9mICdmXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYikgdHVwbGUyID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjKSB0dXBsZTMgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHR1cGxlNCA9ICdhICogJ2IgKiAnYyAqICdkIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdHVwbGU1ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHR1cGxlNiA9ICdhICogJ2IgKiAnYyAqICdkICogJ2UgKiAnZlxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAncikgZm4yID0gJ2EgLT4gJ2IgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgJ3IpIGZuMyA9ICdhIC0+ICdiIC0+ICdjIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgJ3IpIGZuNCA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdyIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsICdyKSBmbjUgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnclxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKC0nYSwgLSdiLCAtJ2MsIC0nZCwgLSdlLCAtJ2YsICdyKSBmbjYgPSAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnZiAtPiAnclxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuZW5kXG5cbm1vZHVsZSBPYnNlcnZlciA9IHN0cnVjdFxuICBpbmNsdWRlIE9ic2VydmVyXG5cbiAgbGV0IG9mX2hhc2ggKHR5cGUgYSkgKG1vZHVsZSBNIDogRGVyaXZpbmdfaGFzaCB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICBvZl9oYXNoX2ZvbGQgTS5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU2XG4gIGxldCBvZl9wcmVkaWNhdGUgYSBiIH5mID0gdW5tYXAgKHZhcmlhbnQyIGEgYikgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIGBBIHggZWxzZSBgQiB4KVxuICBsZXQgc2luZ2xldG9uICgpID0gb3BhcXVlXG4gIGxldCBkb3VibGV0b24gZiA9IG9mX3ByZWRpY2F0ZSAoc2luZ2xldG9uICgpKSAoc2luZ2xldG9uICgpKSB+ZlxuICBsZXQgZW51bSBfIH5mID0gdW5tYXAgaW50IH5mXG5cbiAgbGV0IG9mX2xpc3QgbGlzdCB+ZXF1YWwgPVxuICAgIGxldCBmIHggPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kaSBsaXN0IH5mOihmdW4gXyB5IC0+IGVxdWFsIHggeSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiUXVpY2tjaGVjay5PYnNlcnZlci5vZl9saXN0OiB2YWx1ZSBub3QgZm91bmRcIlxuICAgICAgfCBTb21lIChpLCBfKSAtPiBpXG4gICAgaW5cbiAgICBlbnVtIChMaXN0Lmxlbmd0aCBsaXN0KSB+ZlxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZiAoKSkgeCB+c2l6ZSB+aGFzaClcblxuICBsZXQgY29tcGFyaXNvbiB+Y29tcGFyZSB+ZXEgfmx0IH5ndCA9XG4gICAgdW5tYXBcbiAgICAgICh2YXJpYW50MyBsdCAoc2luZ2xldG9uICgpKSBndClcbiAgICAgIH5mOihmdW4geCAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmUgeCBlcSBpblxuICAgICAgICBpZiBjIDwgMCB0aGVuIGBBIHggZWxzZSBpZiBjID4gMCB0aGVuIGBDIHggZWxzZSBgQiB4KVxuICA7O1xuZW5kXG5cbm1vZHVsZSBHZW5lcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmF0b3JcbiAgb3BlbiBMZXRfc3ludGF4XG5cbiAgbGV0IHNpbmdsZXRvbiA9IHJldHVyblxuXG4gIGxldCBkb3VibGV0b24geCB5ID1cbiAgICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT4gaWYgU3BsaXR0YWJsZV9yYW5kb20uYm9vbCByYW5kb20gdGhlbiB4IGVsc2UgeSlcbiAgOztcblxuICBsZXQgb2ZfZnVuIGYgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IGdlbmVyYXRlIChmICgpKSB+c2l6ZSB+cmFuZG9tKVxuXG4gIGxldCBvZl9zZXF1ZW5jZSB+cCBzZXEgPVxuICAgIGlmIEZsb2F0LiggPD0gKSBwIDAuIHx8IEZsb2F0LiggPiApIHAgMS5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHByb2JhYmlsaXR5IFslZl0gb3V0IG9mIGJvdW5kc1wiIHApO1xuICAgIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgICAgc2VxXG4gICAgICB+aW5pdDooKVxuICAgICAgfmZpbmlzaDooZnVuICgpIC0+IGZhaWx3aXRoIFwiR2VuZXJhdG9yLm9mX3NlcXVlbmNlOiByYW4gb3V0IG9mIHZhbHVlc1wiKVxuICAgICAgfmY6KGZ1biAoKSB4IH5rIC0+IHdlaWdodGVkX3VuaW9uIFsgcCwgc2luZ2xldG9uIHg7IDEuIC0uIHAsIG9mX2Z1biBrIF0pXG4gIDs7XG5cbiAgbGV0IGdlb21ldHJpYyA9IEdlbmVyYXRvci5pbnRfZ2VvbWV0cmljXG4gIGxldCBzbWFsbF9ub25fbmVnYXRpdmVfaW50ID0gc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnRcbiAgbGV0IHNtYWxsX3Bvc2l0aXZlX2ludCA9IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludFxuICBsZXQgbGlzdF93aXRoX2xlbmd0aCBsZW5ndGggdCA9IGxpc3Rfd2l0aF9sZW5ndGggdCB+bGVuZ3RoXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNlxuICBsZXQgZm4yID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4yXG4gIGxldCBmbjMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjNcbiAgbGV0IGZuNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNFxuICBsZXQgZm41ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm41XG4gIGxldCBmbjYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjZcblxuICBsZXQgY29tcGFyZV9mbiBkb20gPVxuICAgIGZuIGRvbSBpbnQgPj58IGZ1biBnZXRfaW5kZXggeCB5IC0+IFslY29tcGFyZTogaW50XSAoZ2V0X2luZGV4IHgpIChnZXRfaW5kZXggeSlcbiAgOztcblxuICBsZXQgZXF1YWxfZm4gZG9tID0gY29tcGFyZV9mbiBkb20gPj58IGZ1biBjbXAgeCB5IC0+IEludC4oID0gKSAoY21wIHggeSkgMFxuZW5kXG5cbm1vZHVsZSBTaHJpbmtlciA9IHN0cnVjdFxuICBpbmNsdWRlIFNocmlua2VyXG5cbiAgbGV0IGVtcHR5ICgpID0gYXRvbWljXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEdlbmVyYXRvclxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEdlbmVyYXRvclxuICBlbmRcblxuICBpbmNsdWRlIEdlbmVyYXRvci5Nb25hZF9pbmZpeFxuXG4gIGxldCByZXR1cm4gPSBHZW5lcmF0b3IucmV0dXJuXG5lbmRcblxubW9kdWxlIENvbmZpZ3VyZSAoQ29uZmlnIDogUXVpY2tjaGVja19jb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgbGV0IG5vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbiAgbGV0IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICAgIHwgYERldGVybWluaXN0aWMgc3RyIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoWyVoYXNoOiBzdHJpbmddIHN0cilcbiAgOztcblxuICBsZXQgbWFrZV9zZWVkIHNlZWQgOiBUZXN0LkNvbmZpZy5TZWVkLnQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gTm9uZGV0ZXJtaW5pc3RpY1xuICAgIHwgYERldGVybWluaXN0aWMgc3RyaW5nIC0+IERldGVybWluaXN0aWMgc3RyaW5nXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2hyaW5rX2NvdW50ID0gZnVuY3Rpb25cbiAgICB8IGBFeGhhdXN0aXZlIC0+IEludC5tYXhfdmFsdWVcbiAgICB8IGBMaW1pdCBuIC0+IG5cbiAgOztcblxuICBsZXQgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyA6IFRlc3QuQ29uZmlnLnQgPVxuICAgIHsgc2VlZCA9IG1ha2Vfc2VlZCAoT3B0aW9uLnZhbHVlIHNlZWQgfmRlZmF1bHQ6ZGVmYXVsdF9zZWVkKVxuICAgIDsgc2l6ZXMgPSBPcHRpb24udmFsdWUgc2l6ZXMgfmRlZmF1bHQ6ZGVmYXVsdF9zaXplc1xuICAgIDsgdGVzdF9jb3VudCA9IE9wdGlvbi52YWx1ZSB0cmlhbHMgfmRlZmF1bHQ6ZGVmYXVsdF90cmlhbF9jb3VudFxuICAgIDsgc2hyaW5rX2NvdW50ID1cbiAgICAgICAgbWFrZV9zaHJpbmtfY291bnQgKE9wdGlvbi52YWx1ZSBzaHJpbmtfYXR0ZW1wdHMgfmRlZmF1bHQ6ZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMpXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX3Rlc3RfbSAodHlwZSBhKSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiA6IChtb2R1bGUgVGVzdC5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gT3B0aW9uLnZhbHVlIHNocmlua2VyIH5kZWZhdWx0OlNocmlua2VyLmF0b21pY1xuICAgICAgbGV0IHNleHBfb2ZfdCA9IE9wdGlvbi52YWx1ZSBzZXhwX29mIH5kZWZhdWx0Olslc2V4cF9vZjogX11cbiAgICBlbmRcbiAgICBpblxuICAgIChtb2R1bGUgTSlcbiAgOztcblxuICBsZXQgcmFuZG9tX3ZhbHVlID8oc2VlZCA9IGRlZmF1bHRfc2VlZCkgPyhzaXplID0gMzApIGdlbiA9XG4gICAgbGV0IHJhbmRvbSA9IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgaW5cbiAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuIH5zaXplIH5yYW5kb21cbiAgOztcblxuICBsZXQgcmFuZG9tX3NlcXVlbmNlID9zZWVkID9zaXplcyBnZW4gPVxuICAgIGxldCBjb25maWcgPVxuICAgICAgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHM6KFNvbWUgSW50Lm1heF92YWx1ZSkgfnNocmlua19hdHRlbXB0czpOb25lXG4gICAgaW5cbiAgICBsZXQgcmV0dXJuID0gcmVmIFNlcXVlbmNlLmVtcHR5IGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiByZXR1cm4gOj0gc2VxdWVuY2UpO1xuICAgICFyZXR1cm5cbiAgOztcblxuICBsZXQgaXRlciA/c2VlZCA/c2l6ZXMgP3RyaWFscyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzOk5vbmUgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IFNlcXVlbmNlLml0ZXIgc2VxdWVuY2UgfmYpXG4gIDs7XG5cbiAgbGV0IHRlc3QgP3NlZWQgP3NpemVzID90cmlhbHMgP3Nocmlua2VyID9zaHJpbmtfYXR0ZW1wdHMgP3NleHBfb2YgP2V4YW1wbGVzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1bl9leG4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3Rfb3JfZXJyb3JcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID90cmlhbHNcbiAgICAgICAgP3Nocmlua2VyXG4gICAgICAgID9zaHJpbmtfYXR0ZW1wdHNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgP2V4YW1wbGVzXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X2Rpc3RpbmN0X3ZhbHVlc1xuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfnRyaWFsc1xuICAgICAgICB+ZGlzdGluY3RfdmFsdWVzXG4gICAgICAgIH5jb21wYXJlXG4gICAgPVxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0ga2V5XG5cbiAgICAgIGxldCAoY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpID0gY29tcGFyZVxuXG4gICAgICBsZXQgc2V4cF9vZl90ID1cbiAgICAgICAgbWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgIHwgU29tZSBzZXhwX29mIC0+IHNleHBfb2ZcbiAgICAgICAgfCBOb25lIC0+IHNleHBfb2Zfb3BhcXVlXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgZmFpbCBzZXQgPVxuICAgICAgbGV0IGV4cGVjdF9jb3VudCA9IGRpc3RpbmN0X3ZhbHVlcyBpblxuICAgICAgbGV0IGFjdHVhbF9jb3VudCA9IFNldC5sZW5ndGggc2V0IGluXG4gICAgICBsZXQgdmFsdWVzID1cbiAgICAgICAgbWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBzZXhwX29mX2VsdCAtPiBTb21lIFslc2V4cCAoU2V0LnRvX2xpc3Qgc2V0IDogZWx0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnN1ZmZpY2llbnQgZGlzdGluY3QgdmFsdWVzXCJcbiAgICAgICAgICAgICh0cmlhbHMgOiBpbnQpXG4gICAgICAgICAgICAoZXhwZWN0X2NvdW50IDogaW50KVxuICAgICAgICAgICAgKGFjdHVhbF9jb3VudCA6IGludClcbiAgICAgICAgICAgICh2YWx1ZXMgOiAoU2V4cC50IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gICAgaW5cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGxldCBzZXQgPSByZWYgKFNldC5lbXB0eSAobW9kdWxlIE0pKSBpblxuICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgc2V0IDo9IFNldC5hZGQgIXNldCBlbHQ7XG4gICAgICAgIGlmIFNldC5sZW5ndGggIXNldCA+PSBkaXN0aW5jdF92YWx1ZXMgdGhlbiByLnJldHVybiAoKSk7XG4gICAgICBmYWlsICFzZXQpXG4gIDs7XG5cbiAgbGV0IHRlc3RfY2FuX2dlbmVyYXRlXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/KHRyaWFscyA9IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50KVxuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IHIgPSByZWYgW10gaW5cbiAgICBsZXQgZl9hbmRfZW5xdWV1ZSByZXR1cm4geCA9IGlmIGYgeCB0aGVuIHJldHVybiBgQ2FuX2dlbmVyYXRlIGVsc2UgciA6PSB4IDo6ICFyIGluXG4gICAgbWF0Y2hcbiAgICAgIFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuIChmdW4gcmV0dXJuIC0+XG4gICAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmX2FuZF9lbnF1ZXVlIHJldHVybi5yZXR1cm4pO1xuICAgICAgICBgQ2Fubm90X2dlbmVyYXRlKVxuICAgIHdpdGhcbiAgICB8IGBDYW5fZ2VuZXJhdGUgLT4gKClcbiAgICB8IGBDYW5ub3RfZ2VuZXJhdGUgLT5cbiAgICAgIChtYXRjaCBzZXhwX29mIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJjYW5ub3QgZ2VuZXJhdGVcIlxuICAgICAgIHwgU29tZSBzZXhwX29mX3ZhbHVlIC0+XG4gICAgICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImNhbm5vdCBnZW5lcmF0ZVwiIH5hdHRlbXB0czooIXIgOiB2YWx1ZSBsaXN0KV0pXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBDb25maWd1cmUgKHN0cnVjdFxuICAgIGxldCBkZWZhdWx0X3NlZWQgPSBgRGV0ZXJtaW5pc3RpYyBcImFuIGFyYml0cmFyeSBidXQgZGV0ZXJtaW5pc3RpYyBzdHJpbmdcIlxuXG4gICAgbGV0IGRlZmF1bHRfdHJpYWxfY291bnQgPVxuICAgICAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gICAgICB8IFc2NCAtPiAxMF8wMDBcbiAgICAgIHwgVzMyIC0+IDFfMDAwXG4gICAgOztcblxuICAgIGxldCBkZWZhdWx0X2Nhbl9nZW5lcmF0ZV90cmlhbF9jb3VudCA9IDEwXzAwMFxuICAgIGxldCBkZWZhdWx0X3Nocmlua19hdHRlbXB0cyA9IGBMaW1pdCAxMDAwXG5cbiAgICBsZXQgZGVmYXVsdF9zaXplcyA9XG4gICAgICBTZXF1ZW5jZS5jeWNsZV9saXN0X2V4biAoTGlzdC5yYW5nZSAwIDMwIH5zdG9wOmBpbmNsdXNpdmUpXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgUzEgPSBTMVxubW9kdWxlIHR5cGUgUzIgPSBTMlxubW9kdWxlIHR5cGUgU19pbnQgPSBTX2ludFxubW9kdWxlIHR5cGUgU19yYW5nZSA9IFNfcmFuZ2VcblxudHlwZSBub25yZWMgc2VlZCA9IHNlZWRcbnR5cGUgbm9ucmVjIHNocmlua19hdHRlbXB0cyA9IHNocmlua19hdHRlbXB0c1xuXG5tb2R1bGUgdHlwZSBRdWlja2NoZWNrX2NvbmZpZyA9IFF1aWNrY2hlY2tfY29uZmlnXG5tb2R1bGUgdHlwZSBRdWlja2NoZWNrX2NvbmZpZ3VyZWQgPSBRdWlja2NoZWNrX2NvbmZpZ3VyZWRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252XG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkID0gQ29udl9maWx0ZXJlZFxubW9kdWxlIHR5cGUgQ29udjEgPSBDb252MVxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZDEgPSBDb252X2ZpbHRlcmVkMVxubW9kdWxlIHR5cGUgUyA9IFF1aWNrY2hlY2suU1xubW9kdWxlIHR5cGUgUzEgPSBRdWlja2NoZWNrLlMxXG5tb2R1bGUgdHlwZSBTMiA9IFF1aWNrY2hlY2suUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gUXVpY2tjaGVjay5TX2ludFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udiB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOiBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9XG5zdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udjEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZCB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOlxuICBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZDEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG4iLCJpbmNsdWRlIEJhc2UuT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxuXG5sZXQgbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgaSA9IGlmIGkgPCAwIHRoZW4gaSArIGxlbmd0aF9mdW4gdCBlbHNlIGlcblxubGV0IHNsaWNlIH5sZW5ndGhfZnVuIH5zdWJfZnVuIHQgc3RhcnQgc3RvcCA9XG4gIGxldCBzdG9wID0gaWYgc3RvcCA9IDAgdGhlbiBsZW5ndGhfZnVuIHQgZWxzZSBzdG9wIGluXG4gIGxldCBwb3MgPSBub3JtYWxpemUgfmxlbmd0aF9mdW4gdCBzdGFydCBpblxuICBsZXQgbGVuID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RvcCAtIHBvcyBpblxuICBzdWJfZnVuIHQgfnBvcyB+bGVuXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcbm9wZW4gUGVybXMuRXhwb3J0XG5tb2R1bGUgQXJyYXkgPSBCYXNlLkFycmF5XG5tb2R1bGUgQ29yZV9zZXF1ZW5jZSA9IFNlcXVlbmNlXG5cbmluY2x1ZGUgKFxuICBCYXNlLkFycmF5IDpcbiAgc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZ2xvYmFsaXplLCBzZXhwX2dyYW1tYXJdXG4gIGVuZClcblxudHlwZSAnYSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG5tb2R1bGUgUHJpdmF0ZSA9IEJhc2UuQXJyYXkuUHJpdmF0ZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQXJyYXlcblxuICBsZXQgbm9ybWFsaXplIHQgaSA9IE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubm9ybWFsaXplIH5sZW5ndGhfZnVuOmxlbmd0aCB0IGlcblxuICBsZXQgc2xpY2UgdCBzdGFydCBzdG9wID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG4gIDs7XG5cbiAgbGV0IG5nZXQgdCBpID0gdC4obm9ybWFsaXplIHQgaSlcbiAgbGV0IG5zZXQgdCBpIHYgPSB0Lihub3JtYWxpemUgdCBpKSA8LSB2XG5cbiAgbW9kdWxlIFNlcXVlbmNlID0gc3RydWN0XG4gICAgb3BlbiBCYXNlLkFycmF5XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBzZXQgPSBzZXRcbiAgZW5kXG5cbiAgKCogU2VlIE9DYW1sIHBlcmYgbm90ZXMgZm9yIHdoeSB0aGVzZSBhcnJheSBibGl0cyBhcmUgc3BlY2lhbCBjYXNlZCAtLSBpbiBwYXJ0aWN1bGFyLFxuICAgICB0aGUgc2VjdGlvbiBlbnRpdGxlZCBcIkZhc3QsIFNsb3cgYW5kIEluY29ycmVjdCBBcnJheSBibGl0c1wiIG9mXG4gICAgIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEzMDIyMDAwMDIyOS9odHRwOi8vamFuZXN0cmVldC5naXRodWIuY29tL29jYW1sLXBlcmYtbm90ZXMuaHRtbCAqKVxuICBtb2R1bGUgSW50ID0gc3RydWN0XG4gICAgdHlwZSB0XyA9IGludCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBtb2R1bGUgVW5zYWZlX2JsaXQgPSBzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzoodF9bQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodF9bQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgICAgW0BAbm9hbGxvY11cbiAgICBlbmRcblxuICAgIGluY2x1ZGVcbiAgICAgIFRlc3RfYmxpdC5NYWtlX2FuZF90ZXN0XG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgIGxldCBlcXVhbCA9ICggPSApXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxIGVsc2UgMFxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIH5sZW4gMFxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICAgIHR5cGUgdF8gPSBmbG9hdCBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBtb2R1bGUgVW5zYWZlX2JsaXQgPSBzdHJ1Y3RcbiAgICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICAgIDogIHNyYzoodF9bQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDoodF9bQGxvY2FsX29wdF0pXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgZXh0ZXJuYWwgZ2V0IDogKHRfW0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgc2V0XG4gICAgICA6ICAodF9bQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcblxuICAgIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICAgIDogICh0X1tAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBmbG9hdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX3NldFxuICAgICAgOiAgKHRfW0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChmbG9hdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICAgIGluY2x1ZGVcbiAgICAgIFRlc3RfYmxpdC5NYWtlX2FuZF90ZXN0XG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAgICAgbGV0IGVxdWFsID0gQmFzZS5GbG9hdC5lcXVhbFxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMS4gZWxzZSAwLlxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIH5sZW4gMC5cblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQZXJtaXNzaW9uZWQgPSBzaWdcbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHRcblxuICBpbmNsdWRlXG4gICAgSW5kZXhlZF9jb250YWluZXIuUzFfd2l0aF9jcmVhdG9yc19wZXJtaXNzaW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuXG4gIGluY2x1ZGUgQmxpdC5TMV9wZXJtaXNzaW9ucyB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMV9wZXJtaXNzaW9ucyB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAoKCdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG5cbiAgZXh0ZXJuYWwgZ2V0XG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICA9IFwiJWFycmF5X3NhZmVfZ2V0XCJcblxuICBleHRlcm5hbCBzZXRcbiAgICA6ICAoKCdhLCBbPiB3cml0ZSBdKSB0W0Bsb2NhbF9vcHRdKVxuICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgLT4gJ2FcbiAgICAtPiB1bml0XG4gICAgPSBcIiVhcnJheV9zYWZlX3NldFwiXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgIDogICgoJ2EsIFs+IHJlYWQgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCgnYSwgWz4gd3JpdGUgXSkgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgLT4gdW5pdFxuICAgID0gXCIlYXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgdmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiAoZmxvYXQsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiAnYSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgY3JlYXRlX2xvY2FsIDogbGVuOmludCAtPiAnYSAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHRbQGxvY2FsXSlcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooKGludCAtPiAnYSlbQGxvY2FsXSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1ha2VfbWF0cml4IDogZGlteDppbnQgLT4gZGlteTppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29weV9tYXRyaXhcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGFwcGVuZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb25jYXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb3B5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbGwgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRpbmdfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYWNjICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbWFwaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpdGVyaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuXG4gIHZhbCBmb2xkaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZF9tYXBpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOigoaW50IC0+ICdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKVxuICAgIC0+ICdhY2MgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX3JpZ2h0XG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKVxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+ICdhY2NcblxuICB2YWwgc29ydFxuICAgIDogID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBzdGFibGVfc29ydCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgaXNfc29ydGVkIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gYm9vbFxuXG4gIHZhbCBpc19zb3J0ZWRfc3RyaWN0bHlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGNvbmNhdF9tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClbQGxvY2FsXSlcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3RcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuXG4gIHZhbCB0cmFuc3Bvc2VfZXhuXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBub3JtYWxpemUgOiAoJ2EsIF8pIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBuZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogKCdhIG9wdGlvbiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KCgnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pXG4gICAgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvcl9hbGxpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludFxuXG4gIHZhbCBpdGVyMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+IHVuaXQpW0Bsb2NhbF0pXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gJ2MpW0Bsb2NhbF0pXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KCgnYWNjIC0+ICdhIC0+ICdiIC0+ICdhY2MpW0Bsb2NhbF0pXG4gICAgLT4gJ2FjY1xuXG4gIHZhbCBmb3JfYWxsMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMyX2V4blxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdiLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSlcbiAgICAtPiBib29sXG5cbiAgdmFsIGZpbHRlciA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJpXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgc3dhcCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgcmV2X2lucGxhY2UgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiB1bml0XG4gIHZhbCByZXYgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXYgOiAnYSBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X21hcCA6ICdhIGxpc3QgLT4gZjooKCdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOigoJ2EgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXBpIDogJ2EgbGlzdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBmOigoJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhXG4gIHZhbCBmaW5kX21hcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuICB2YWwgZmluZGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGludCAqICdhXG4gIHZhbCBmaW5kX21hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiBvcHRpb24pW0Bsb2NhbF0pIC0+ICdiXG5cbiAgdmFsIGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBlcXVhbDooKCdhIC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pXG4gICAgLT4gKCdhICogJ2EpIG9wdGlvblxuXG4gIHZhbCByZWR1Y2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCgnYSAtPiAnYSAtPiAnYSlbQGxvY2FsXSkgLT4gJ2FcblxuICB2YWwgcGVybXV0ZVxuICAgIDogID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnRcbiAgICAtPiA/cG9zOmludFxuICAgIC0+ID9sZW46aW50XG4gICAgLT4gKCdhLCBbPiByZWFkX3dyaXRlIF0pIHRcbiAgICAtPiB1bml0XG5cbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBvcHRpb25cbiAgdmFsIHJhbmRvbV9lbGVtZW50X2V4biA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIHppcCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSAqICdiLCBbPCBfIHBlcm1zIF0pIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgdW56aXAgOiAoJ2EgKiAnYiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgc29ydGVkX2NvcHlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pXG4gICAgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgbGFzdCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBib29sXG4gIHZhbCB0b19zZXF1ZW5jZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYSBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbW9kdWxlIEludCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChpbnQsICdwZXJtcykgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIEJsaXQuU19wZXJtaXNzaW9ucyB3aXRoIHR5cGUgJ3Blcm1zIHQgOj0gJ3Blcm1zIHRcblxuICAgIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgICA6ICBzcmM6KFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDooWz4gd3JpdGUgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXRcbiAgICAgID0gXCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGZsb2F0LCAncGVybXMpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBCbGl0LlNfcGVybWlzc2lvbnMgd2l0aCB0eXBlICdwZXJtcyB0IDo9ICdwZXJtcyB0XG5cbiAgICBleHRlcm5hbCBnZXRcbiAgICAgIDogIChbPiByZWFkIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBmbG9hdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcblxuICAgIGV4dGVybmFsIHNldFxuICAgICAgOiAgKFs+IHdyaXRlIF0gdFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IChpbnRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoZmxvYXRbQGxvY2FsX29wdF0pXG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2dldFxuICAgICAgOiAgKFs+IHJlYWQgXSB0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAgIC0+IGZsb2F0XG4gICAgICA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG5cbiAgICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgICA6ICAoWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gKGZsb2F0W0Bsb2NhbF9vcHRdKVxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzooWz4gcmVhZCBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgLT4gZHN0OihbPiB3cml0ZSBdIHRbQGxvY2FsX29wdF0pXG4gICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2Zsb2F0X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIHZhbCBvZl9hcnJheV9pZCA6ICdhIGFycmF5IC0+ICgnYSwgWzwgcmVhZF93cml0ZSBdKSB0XG4gIHZhbCB0b19hcnJheV9pZCA6ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0IC0+ICdhIGFycmF5XG4gIHZhbCB0b19zZXF1ZW5jZV9pbW11dGFibGUgOiAoJ2EsIFs+IGltbXV0YWJsZSBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcblxuICBpbmNsdWRlIFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAncGVybXMpIHQgOj0gKCdhLCAncGVybXMpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgdHlwZXJlcF1cblxuICBtb2R1bGUgSW50ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkludFxuXG4gICAgdHlwZSAtJ3Blcm1zIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVC5GbG9hdFxuXG4gICAgdHlwZSAtJ3Blcm1zIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuXG4gIGxldCB0b19hcnJheV9pZCA9IEZuLmlkXG4gIGxldCBvZl9hcnJheV9pZCA9IEZuLmlkXG5cbiAgaW5jbHVkZSAoVCA6IFBlcm1pc3Npb25lZCB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gIGxldCB0b19hcnJheSA9IGNvcHlcbiAgbGV0IHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA9IHRvX3NlcXVlbmNlX211dGFibGVcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIEluZGV4ZWRfY29udGFpbmVyLlMxX3dpdGhfY3JlYXRvcnMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIGV4dGVybmFsIGxlbmd0aCA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuICBleHRlcm5hbCBnZXQgOiAoJ2EgdFtAbG9jYWxfb3B0XSkgLT4gKGludFtAbG9jYWxfb3B0XSkgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6ICgnYSB0W0Bsb2NhbF9vcHRdKSAtPiAoaW50W0Bsb2NhbF9vcHRdKSAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRcbiAgICA6ICAoJ2EgdFtAbG9jYWxfb3B0XSlcbiAgICAtPiAoaW50W0Bsb2NhbF9vcHRdKVxuICAgIC0+ICdhXG4gICAgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcblxuICBleHRlcm5hbCB1bnNhZmVfc2V0XG4gICAgOiAgKCdhIHRbQGxvY2FsX29wdF0pXG4gICAgLT4gKGludFtAbG9jYWxfb3B0XSlcbiAgICAtPiAnYVxuICAgIC0+IHVuaXRcbiAgICA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9sb2NhbCA6IGxlbjppbnQgLT4gJ2EgLT4gKCdhIHRbQGxvY2FsXSlcbiAgdmFsIGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIDogbGVuOmludCAtPiBmbG9hdCB0XG4gIHZhbCBpbml0IDogaW50IC0+IGY6KChpbnQgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIG1ha2VfbWF0cml4IDogZGlteDppbnQgLT4gZGlteTppbnQgLT4gJ2EgLT4gJ2EgdCB0XG4gIHZhbCBjb3B5X21hdHJpeCA6ICdhIHQgdCAtPiAnYSB0IHRcbiAgdmFsIGFwcGVuZCA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBjb25jYXQgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgZmlsbCA6ICdhIHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+IHVuaXRcblxuICBpbmNsdWRlIEJsaXQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBvZl9saXN0IDogJ2EgbGlzdCAtPiAnYSB0XG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZm9sZGluZ19tYXAgOiAnYSB0IC0+IGluaXQ6J2FjYyAtPiBmOigoJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pIC0+ICdiIHRcbiAgdmFsIGZvbGRfbWFwIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2FjYyAqICdiKVtAbG9jYWxdKSAtPiAnYWNjICogJ2IgdFxuICB2YWwgbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgaXRlcmkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooKGludCAtPiAnYiAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2JcblxuICB2YWwgZm9sZGluZ19tYXBpXG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KChpbnQgLT4gJ2FjYyAtPiAnYSAtPiAnYWNjICogJ2IpW0Bsb2NhbF0pXG4gICAgLT4gJ2IgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKGludCAtPiAnYWNjIC0+ICdhIC0+ICdhY2MgKiAnYilbQGxvY2FsXSlcbiAgICAtPiAnYWNjICogJ2IgdFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2FjYyAtPiAnYWNjKVtAbG9jYWxdKSAtPiBpbml0OidhY2MgLT4gJ2FjY1xuICB2YWwgc29ydCA6ID9wb3M6aW50IC0+ID9sZW46aW50IC0+ICdhIHQgLT4gY29tcGFyZTooKCdhIC0+ICdhIC0+IGludClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgc3RhYmxlX3NvcnQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgaXNfc29ydGVkIDogJ2EgdCAtPiBjb21wYXJlOigoJ2EgLT4gJ2EgLT4gaW50KVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBpc19zb3J0ZWRfc3RyaWN0bHkgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIG1lcmdlIDogJ2EgdCAtPiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYiB0KVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBjb25jYXRfbWFwaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiAnYiB0KVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3QgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcbiAgdmFsIHRyYW5zcG9zZSA6ICdhIHQgdCAtPiAnYSB0IHQgb3B0aW9uXG4gIHZhbCB0cmFuc3Bvc2VfZXhuIDogJ2EgdCB0IC0+ICdhIHQgdFxuICB2YWwgbm9ybWFsaXplIDogJ2EgdCAtPiBpbnQgLT4gaW50XG4gIHZhbCBzbGljZSA6ICdhIHQgLT4gaW50IC0+IGludCAtPiAnYSB0XG4gIHZhbCBuZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIG5zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogJ2Egb3B0aW9uIHQgLT4gJ2EgdFxuICB2YWwgZmlsdGVyX21hcCA6ICdhIHQgLT4gZjooKCdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gdW5pdClbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgbWFwMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+ICdjKVtAbG9jYWxdKSAtPiAnYyB0XG5cbiAgdmFsIGZvbGQyX2V4blxuICAgIDogICdhIHRcbiAgICAtPiAnYiB0XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gZjooKCdhY2MgLT4gJ2EgLT4gJ2IgLT4gJ2FjYylbQGxvY2FsXSlcbiAgICAtPiAnYWNjXG5cbiAgdmFsIGZvcl9hbGwyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOigoJ2EgLT4gJ2IgLT4gYm9vbClbQGxvY2FsXSkgLT4gYm9vbFxuICB2YWwgZXhpc3RzMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooKCdhIC0+ICdiIC0+IGJvb2wpW0Bsb2NhbF0pIC0+IGJvb2xcbiAgdmFsIGZpbHRlciA6ICdhIHQgLT4gZjooKCdhIC0+IGJvb2wpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIGZpbHRlcmkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gJ2EgdFxuICB2YWwgc3dhcCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiKVtAbG9jYWxdKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooKGludCAtPiAnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYSlbQGxvY2FsXSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAnYSB0IC0+IGY6KCgnYSAtPiBib29sKVtAbG9jYWxdKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2Igb3B0aW9uKVtAbG9jYWxdKSAtPiAnYlxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KChpbnQgLT4gJ2EgLT4gYm9vbClbQGxvY2FsXSkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICdhIHQgLT4gZjooKGludCAtPiAnYSAtPiBib29sKVtAbG9jYWxdKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogJ2EgdCAtPiBmOigoaW50IC0+ICdhIC0+ICdiIG9wdGlvbilbQGxvY2FsXSkgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAnYSB0XG4gICAgLT4gZXF1YWw6KCgnYSAtPiAnYSAtPiBib29sKVtAbG9jYWxdKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogJ2EgdCAtPiBmOigoJ2EgLT4gJ2EgLT4gJ2EpW0Bsb2NhbF0pIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICdhIHQgLT4gZjooKCdhIC0+ICdhIC0+ICdhKVtAbG9jYWxdKSAtPiAnYVxuICB2YWwgcGVybXV0ZSA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gP3BvczppbnQgLT4gP2xlbjppbnQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCByYW5kb21fZWxlbWVudCA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgdmFsIHJhbmRvbV9lbGVtZW50X2V4biA6ID9yYW5kb21fc3RhdGU6UmFuZG9tLlN0YXRlLnQgLT4gJ2EgdCAtPiAnYVxuICB2YWwgemlwIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0IG9wdGlvblxuICB2YWwgemlwX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdW56aXAgOiAoJ2EgKiAnYikgdCAtPiAnYSB0ICogJ2IgdFxuICB2YWwgc29ydGVkX2NvcHkgOiAnYSB0IC0+IGNvbXBhcmU6KCgnYSAtPiAnYSAtPiBpbnQpW0Bsb2NhbF0pIC0+ICdhIHRcbiAgdmFsIGxhc3QgOiAnYSB0IC0+ICdhXG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgdG9fc2VxdWVuY2UgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICdhIHQgLT4gJ2EgQ29yZV9zZXF1ZW5jZS50XG5lbmRcblxuaW5jbHVkZSAoVCA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgYXJyYXkpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRfYVxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5JbnRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5GbG9hdFxuXG4gIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgXyAoTSA6IFMpIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm0pIHRfXG5cbiAgaW5jbHVkZSBQZXJtaXNzaW9uZWQgd2l0aCB0eXBlICgnYSwgJ3Blcm0pIHQgOj0gKCdhLCAncGVybSkgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICgnYSwgLSdwZXJtKSB0XyA9ICdhIHRcbmVuZFxuXG5tb2R1bGUgXyAoTSA6IFBlcm1pc3Npb25lZCkgOiBzaWdcbiAgdHlwZSAnYSB0X1xuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0X1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTVxuXG4gIHR5cGUgJ2EgdF8gPSAoJ2EsIHJlYWRfd3JpdGUpIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUeXBlcmVwX2xpYi5TdGRcbmluY2x1ZGUgQmFzZS5MaXN0XG5cbnR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxubW9kdWxlIEFzc29jID0gc3RydWN0XG4gIGluY2x1ZGUgQXNzb2NcblxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgKiAnYikgbGlzdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IGNvbXBhcmUgKHR5cGUgYSBiKSBjb21wYXJlX2EgY29tcGFyZV9iID0gWyVjb21wYXJlOiAoYSAqIGIpIGxpc3RdXG5lbmRcblxubGV0IHRvX3N0cmluZyB+ZiB0ID1cbiAgU2V4cGxpYi5TZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IChmdW4geCAtPiBTZXhwbGliLlNleHAuQXRvbSB4KSAobWFwIHQgfmYpKVxuOztcblxuaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0XG5sZXQgZ2VuX25vbl9lbXB0eSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9ub25fZW1wdHlcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW5ndGggcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3Rfd2l0aF9sZW5ndGggcXVpY2tjaGVja19nZW5lcmF0b3Igfmxlbmd0aFxuOztcblxubGV0IGdlbl9maWx0ZXJlZCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9maWx0ZXJlZFxubGV0IGdlbl9wZXJtdXRhdGlvbnMgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RfcGVybXV0YXRpb25zXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5saXN0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5saXN0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNodGJsX2ludGYuSGFzaGFibGVcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IEhhc2h0YmxfaW50Zi5NZXJnZV9pbnRvX2FjdGlvblxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5cbm1vZHVsZSBDcmVhdG9ycyA9IEhhc2h0YmwuQ3JlYXRvcnNcblxuaW5jbHVkZSAoXG4gIEhhc2h0YmwgOlxuICBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQmFzZS5IYXNodGJsLlNfd2l0aG91dF9zdWJtb2R1bGVzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgfmNvbWJpbmVcbiAgICAgIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19zdGFibGUgPSBTX3N0YWJsZSB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfc3RhYmxlID0gS2V5X3N0YWJsZVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIEhhc2h0YmwuUG9seVxuXG4gIGxldCB2YWxpZGF0ZSA9IHZhbGlkYXRlXG5cbiAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG4gICAgICB0eXBlICgnYSwgJ2IpIGVsID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjhmM2U0NDVjLTQ5OTItMTFlNi1hMjc5LTM3MDNiZTMxMWU3YlwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5IYXNodGJsXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgfnNpemU6bGVuICgpIGluXG4gICAgICAgIGZvciBfaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBrZXksIGRhdGEgPSBuZXh0ICgpIGluXG4gICAgICAgICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICAgICAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkNvcmVfaGFzaHRibC5iaW5fcmVhZF90XzogZHVwbGljYXRlIGtleVwiXG4gICAgICAgIGRvbmU7XG4gICAgICAgIHRcbiAgICAgIDs7XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X3BsYWluXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcblxuICB0eXBlIGtleSA9IFQuS2V5LnRcbiAgdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxuICB0eXBlICdhIHQgPSAoVC5LZXkudCwgJ2EpIGhhc2h0YmxcbiAgdHlwZSAnYSBrZXlfID0gVC5LZXkudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gVC5LZXkudFxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICAgIGVuZClcblxuICBpbmNsdWRlIChcbiAgICBIYXNodGJsIDpcbiAgICBzaWdcbiAgICAgIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIGhhc2h0YmxcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsID0gSGFzaHRibC5lcXVhbFxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgdCA9IGludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2tleSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPSBQb2x5LnNleHBfb2ZfdCBULktleS5zZXhwX29mX3Qgc2V4cF9vZl92IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5LZXlcbiAgICAgICAgaW5jbHVkZSBLZXknXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSBLZXkudCAqICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGZhYmFiMGEtNDk5Mi0xMWU2LThjY2EtOWJhMmM0Njg2ZDllXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkhhc2h0YmwuYmluX3JlYWRfdDogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IEtleS50XVxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgc3RydWN0XG4gICAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBoYXNodGJsIGlzIHJlbGllZCBvbiBieSBzdGFibGUgbW9kdWxlc1xuICAgICAgIChlLmcuIEhhc2h0YWJsZS5TdGFibGUpIGFuZCBpcyB0aGVyZWZvcmUgYXNzdW1lZCB0byBiZSBzdGFibGUuICBTbywgaWYgdGhlIGtleSBhbmRcbiAgICAgICBkYXRhIGNhbiBwcm92aWRlIGEgc3RhYmxlIHdpdG5lc3NlcywgdGhlbiB3ZSBjYW4gc2FmZWx5IHRoZSBoYXNodGJsIGlzIGFsc29cbiAgICAgICBzdGFibGUuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGRhdGEpIChfZGF0YV9zdGFibGVfd2l0bmVzcyA6IGRhdGEgU3RhYmxlX3dpdG5lc3MudClcbiAgICAgIDogZGF0YSB0IFN0YWJsZV93aXRuZXNzLnRcbiAgICAgID1cbiAgICAgIGxldCAoXyA6IGtleSBTdGFibGVfd2l0bmVzcy50KSA9IEtleScuc3RhYmxlX3dpdG5lc3MgaW5cbiAgICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogS2V5X3N0YWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChLZXkgOiBLZXlfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICBsZXQgaGFzaGFibGUgPVxuICAgICAgeyBIYXNoYWJsZS5oYXNoID0gS2V5Lmhhc2g7IGNvbXBhcmUgPSBLZXkuY29tcGFyZTsgc2V4cF9vZl90ID0gS2V5LnNleHBfb2ZfdCB9XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChLZXkgOiBLZXlfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEtleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGUgKEtleSA6IEtleV9zdGFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNID0gSGFzaHRibC5NXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgRm9yX2Rlcml2aW5nIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoSGFzaHRibCA6IEhhc2h0YmwuRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5cbiAgbW9kdWxlIHR5cGUgTV9xdWlja2NoZWNrID0gTV9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2FsaXN0X29wdGlvbiBtIGFsaXN0ID0gUmVzdWx0Lm9rIChvZl9hbGlzdF9vcl9lcnJvciBtIGFsaXN0KVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX29ic2VydmVyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fYWxpc3RcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfc2hyaW5rZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgICAgIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICAgICAgICAgfmZfaW52ZXJzZTp0b19hbGlzdFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcbmluY2x1ZGUgQmFzZS5IYXNoX3NldFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgU19zdGFibGUgPSBTX3N0YWJsZSB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gSGFzaHRibC5LZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEhhc2h0YmwuS2V5XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEhhc2h0YmwuS2V5X2JpbmFibGVcbm1vZHVsZSB0eXBlIEVsdF9zdGFibGUgPSBIYXNodGJsLktleV9zdGFibGVcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGVsdCA9IFQuRWx0LnRcbiAgdHlwZSBub25yZWMgdCA9IGVsdCB0XG5cbiAgbGV0IGVxdWFsID0gZXF1YWxcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuRWx0LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBsZXQgc2V4cF9vZl90IHQgPSBQb2x5LnNleHBfb2ZfdCBULkVsdC5zZXhwX29mX3QgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuRWx0XG4gICAgICAgIGluY2x1ZGUgWFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJhZDM4MTY3Mi00OTkyLTExZTYtOWUzNi1iNzZkYzhjZDQ2NmZcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaF9zZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IHYgPSBuZXh0ICgpIGluXG4gICAgICAgICAgYWRkIHQgdlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgUHJvdmlkZV9zdGFibGVfd2l0bmVzc1xuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzdGFibGVfd2l0bmVzc11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgc3RydWN0XG4gICAgKCogVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBoYXNoX3NldCBpcyB1c2VkIGluIHRoZSBzdGFibGUgbW9kdWxlcyBiZWxvdywgc28gaXQnc1xuICAgICAgIGFzc3VtZWQgdG8gYmUgc3RhYmxlIChpZiB0aGUgZWx0IGlzIHN0YWJsZSkgLiAqKVxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBsZXQgKF8gOiBlbHQgU3RhYmxlX3dpdG5lc3MudCkgPSBYLnN0YWJsZV93aXRuZXNzIGluXG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9zdGFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfc3RhYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChULkVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoRWx0IDogRWx0X3BsYWluKSA9IE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgbW9kdWxlIEVsdCA9IEVsdFxuXG4gICAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKEVsdCA6IEVsdCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2Vfc3RhYmxlIChFbHQgOiBFbHRfc3RhYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZSAoRWx0KVxuICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEVsdClcbmVuZFxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcbmVuZFxuXG5sZXQgaGFzaGFibGUgPSBQcml2YXRlLmhhc2hhYmxlXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IEtleS50IExpc3QwLnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fbGlzdFxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5zaHJpbmtlcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKSB+Zl9pbnZlcnNlOnRvX2xpc3Rcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shTWFwfVtNYXBdfS4gU2VlIHRob3NlIGRvY3MgZm9yIGEgZGVzY3JpcHRpb25cbiAgICBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MSwyLDMsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbTWFwXSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczNdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcbm1vZHVsZSBNYXAgPSBCYXNlLk1hcFxubW9kdWxlIE9yX2R1cGxpY2F0ZSA9IE1hcC5Pcl9kdXBsaWNhdGVcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBNYXAuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBNYXAuV2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgVHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcblxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9oYXNoYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZV9oYXNoYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuICBlbmRcblxuICB0eXBlICgndCwgJ2MpIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAndCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnYylcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIE1hcC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCBrZXlfc2V0XG4gICAgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudCkgYWNjZXNzX29wdGlvbnNcblxuICB2YWwgdmFsaWRhdGVcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBrZXkgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICdrIGtleSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnQgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNodGJsX2V4blxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5LCAndikgSGFzaHRibC50IC0+ICgnaywgJ3YsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtTZXQudF0uICopXG4gIHZhbCBvZl9rZXlfc2V0XG4gICAgOiAgKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnRcbiAgICAtPiBmOigoJ2sga2V5IC0+ICd2KVtAbG9jYWxdKVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAnayBrZXkgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2EgY21wXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuICAgIHdpdGggdHlwZSAnYSBjbXAgOj0gJ2EgY21wXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoS2V5IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSAnYSB0ID0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAnYiB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gJ2IgdFxuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSBLZXkudFxuICAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEsgOiBzaWdcbiAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgICBlbmRcbiAgICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlICsnYSB0ID0gKEtleS50LCAnYSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgTWFwLnRcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gJ2IgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgJ2sga2V5IDo9IEtleS50XG4gICAgd2l0aCB0eXBlICdjIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCgnYSAtPiAnYilbQGxvY2FsXSkgLT4gJ2IgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgIHR5cGUgXyB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IEJpbmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleSA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEtleS50KSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgS2V5LnQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIEtleS50IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAndiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIFdpdGhvdXRfY29tcGFyYXRvci50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLk1hcC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLk1hcC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYykgS2V5X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnQgLT4gQmluX3Byb3QuU2hhcGUudFxuXG4gIHZhbCBiaW5fc2l6ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuU2l6ZS5zaXplclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlNpemUuc2l6ZXJcblxuICB2YWwgYmluX3dyaXRlX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcblxuICB2YWwgYmluX3JlYWRfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICB2YWwgX19iaW5fcmVhZF9tX190X19cbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+IChpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgW3F1aWNrY2hlY2sqXSBmdW5jdGlvbnMgc3VwcG9ydCBkZXJpdmluZyBxdWlja2NoZWNrIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nX3N0YWJsZSA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgbW9kdWxlIHR5cGUgU3RhYmxlX3dpdG5lc3NfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgZW5kXG5cbiAgdmFsIHN0YWJsZV93aXRuZXNzX21fX3RcbiAgICA6ICAobW9kdWxlIFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFN0YWJsZV93aXRuZXNzLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFN0YWJsZV93aXRuZXNzLnRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIE1hcF9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKGludCwgc3RyaW5nKSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDA2NzRiZTlmZThkZmU5ZTlhZDQ3NjA2N2Q3ZDgxMDEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwIChrLCBkaWZmKSB+ZjEgfmYyID1cbiAgICAgICAgbGV0IGsgPSBmMSBrIGluXG4gICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IHYgLT4gYExlZnQgKGYyIHYpXG4gICAgICAgICAgfCBgUmlnaHQgdiAtPiBgUmlnaHQgKGYyIHYpXG4gICAgICAgICAgfCBgVW5lcXVhbCAodjEsIHYyKSAtPiBgVW5lcXVhbCAoZjIgdjEsIGYyIHYyKVxuICAgICAgICBpblxuICAgICAgICBrLCBkaWZmXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwX2RhdGEgdCB+ZiA9IG1hcCB0IH5mMTpGbi5pZCB+ZjI6ZlxuXG4gICAgICBsZXQgbGVmdCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgTGVmdCB4IHwgYFVuZXF1YWwgKHgsIF8pIC0+IFNvbWUgeFxuICAgICAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCByaWdodCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBCYXNlLk1hcC5NZXJnZV9lbGVtZW50XG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCkgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApIGNvbXBhcmF0b3IgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgbGV0IGdlbl90cmVlIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbSAob2ZfY29tcGFyYXRvciBjb21wYXJhdG9yKSBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBvYnNfdHJlZSBrX29icyB2X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdHJlZSBrX29icyB2X29ic1xuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBrX3NociB2X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHJcbiAgOztcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X21cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcC5Vc2luZ19jb21wYXJhdG9yXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpOihIYXNodGJsLml0ZXJpIGhhc2h0YmwpIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWFwLm9mX2hhc2h0YmxfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHRyZWVfb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgdG9fdHJlZSAob2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibClcbiAgOztcblxuICBsZXQga2V5X3NldCB+Y29tcGFyYXRvciB0ID1cbiAgICBCYXNlLlNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoTGlzdC50b19hcnJheSAoa2V5cyB0KSlcbiAgOztcblxuICBsZXQga2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHQgPSBrZXlfc2V0IH5jb21wYXJhdG9yIChvZl90cmVlIH5jb21wYXJhdG9yIHQpXG5cbiAgbGV0IG9mX2tleV9zZXQga2V5X3NldCB+ZiA9XG4gICAgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3I6KEJhc2UuU2V0LmNvbXBhcmF0b3Iga2V5X3NldClcbiAgICAgIChBcnJheS5tYXAgKEJhc2UuU2V0LnRvX2FycmF5IGtleV9zZXQpIH5mOihmdW4ga2V5IC0+IGtleSwgZiBrZXkpKVxuICA7O1xuXG4gIGxldCB0cmVlX29mX2tleV9zZXQga2V5X3NldCB+ZiA9IHRvX3RyZWUgKG9mX2tleV9zZXQga2V5X3NldCB+ZilcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIE1hcC5BY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNYXAudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSAna1xuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2MpXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gcXVpY2tjaGVja19vYnNlcnZlciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2ID0gcXVpY2tjaGVja19zaHJpbmtlciBrIHZcbiAgbGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB0IH5jb21wYXJhdG9yOihVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3IgdClcbmVuZFxuXG5sZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0IH5jb21wYXJhdG9yOihVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3IgdCkgdFxubGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IGNvbXBhcmF0b3JfcyA9IEJhc2UuTWFwLmNvbXBhcmF0b3Jfc1xuXG50eXBlICdrIGtleSA9ICdrXG50eXBlICdjIGNtcCA9ICdjXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGluY2x1ZGUgTWFwXG5cbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IG9mX3RyZWUgbSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbiAgbGV0IHRvX3RyZWUgPSBNYXAuVXNpbmdfY29tcGFyYXRvci50b190cmVlXG5lbmQgOlxuc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTWFwLnRcblxuICBpbmNsdWRlXG4gICAgTWFwLkNyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj1cbiAgICAgICgnYSwgJ2IsICdjKSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE1hcC5XaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBrZXlcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjIGNtcFxuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIC0+IHN0cmluZylcbiAgICAtPiAndiBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2sga2V5IC0+IHN0cmluZylcbiAgICAtPiAoJ2sga2V5ICogJ3YpIFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuZW5kKVxuXG5tb2R1bGUgRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuXG5sZXQgZmluZF9vcl9lcnJvciB0IGtleSA9XG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvciB0IGluXG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IFNvbWUgZGF0YSAtPiBPayBkYXRhXG4gIHwgTm9uZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJrZXkgbm90IGZvdW5kXCIgfl86KGtleSA6IGtleSldXG47O1xuXG5sZXQgbWVyZ2Vfc2tld2VkID0gTWFwLm1lcmdlX3NrZXdlZFxubGV0IG9mX2hhc2h0YmxfZXhuIG0gdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgdFxuXG5tb2R1bGUgQ3JlYXRvcnMgKEtleSA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRfID0gKCdhIEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlID0gKCdhLCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgdmFsIHRfb2Zfc2V4cFxuICAgIDogIChCYXNlLlNleHAudCAtPiAnYSBLZXkudClcbiAgICAtPiAoQmFzZS5TZXhwLnQgLT4gJ2IpXG4gICAgLT4gQmFzZS5TZXhwLnRcbiAgICAtPiAoJ2EsICdiLCBfKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9IEtleS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYWNjZXNzX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRfID0gKCdhIEtleS50LCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0cmVlID0gKCdhLCAnYiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG5cbiAgbW9kdWxlIE1fZW1wdHkgPSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLZXkpXG5cbiAgbGV0IGVtcHR5ID0gTV9lbXB0eS5lbXB0eVxuICBsZXQgb2ZfdHJlZSB0cmVlID0gVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yIHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBrIHYgPSBVc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvbiB+Y29tcGFyYXRvciBrIHZcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5XG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZXhuIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXFcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHNlcSB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfcmVkdWNlIH5jb21wYXJhdG9yIHNlcSB+ZlxuXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5IGxpc3QgfmdldF9rZXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfbGlzdF93aXRoX2tleSB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbGlzdCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X29yX2Vycm9yIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfbGlzdF93aXRoX2tleV9leG4gbGlzdCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X2V4biB+Y29tcGFyYXRvciBsaXN0IH5nZXRfa2V5XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfbXVsdGkgbGlzdCB+Z2V0X2tleSA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9saXN0X3dpdGhfa2V5X211bHRpIH5jb21wYXJhdG9yIGxpc3QgfmdldF9rZXlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9vcl9lcnJvciBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3RcbiAgbGV0IG9mX2FsaXN0X2V4biBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9oYXNodGJsX2V4biBoYXNodGJsID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvciBoYXNodGJsXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhbGlzdCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYWxpc3RcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGFsaXN0IH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mXG4gIGxldCBvZl9pdGVyaSB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaVxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaVxuXG4gIGxldCB0X29mX3NleHAga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnRfb2Zfc2V4cF9kaXJlY3QgfmNvbXBhcmF0b3Iga19vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIDs7XG5cbiAgbGV0IG9mX2tleV9zZXQga2V5X3NldCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfa2V5X3NldCBrZXlfc2V0IH5mXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIHQgPSBVc2luZ19jb21wYXJhdG9yLnRyYW5zcG9zZV9rZXlzIH5jb21wYXJhdG9yIHRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuX2sgZ2VuX3YgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3IucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZ2VuX2sgZ2VuX3ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX1MxIChLZXkgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICBvcGVuIFRyZWVcblxuICBsZXQgY29tcGFyYXRvciA9IEtleS5jb21wYXJhdG9yXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCBhIGIgYyA9IHRfb2Zfc2V4cF9kaXJlY3QgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgb2ZfdHJlZSB0cmVlID0gdHJlZVxuICBsZXQgc2luZ2xldG9uIGEgPSBzaW5nbGV0b24gYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IG9mX3NvcnRlZF9hcnJheSBhIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IG9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX29yX2Vycm9yIHMgPSBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gcyA9IG9mX3NlcXVlbmNlX2V4biBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gb2Zfc2VxdWVuY2VfbXVsdGkgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mID0gb2Zfc2VxdWVuY2VfZm9sZCBzIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiA9IG9mX3NlcXVlbmNlX3JlZHVjZSBzIH5mIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdCBhID0gb2ZfYWxpc3QgYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYSA9IG9mX2FsaXN0X29yX2Vycm9yIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gb2ZfYWxpc3RfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0YmxfZXhuIGEgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2ZfaGFzaHRibF9leG4gYSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IG9mX2FsaXN0X211bHRpIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiA9IG9mX2FsaXN0X2ZvbGQgYSB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIGEgfmYgPSBvZl9hbGlzdF9yZWR1Y2UgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdF93aXRoX2tleSBsIH5nZXRfa2V5ID0gb2ZfbGlzdF93aXRoX2tleSBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfb3JfZXJyb3IgbCB+Z2V0X2tleSA9XG4gICAgb2ZfbGlzdF93aXRoX2tleV9vcl9lcnJvciBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3Rfd2l0aF9rZXlfZXhuIGwgfmdldF9rZXkgPSBvZl9saXN0X3dpdGhfa2V5X2V4biBsIH5nZXRfa2V5IH5jb21wYXJhdG9yXG4gIGxldCBvZl9saXN0X3dpdGhfa2V5X211bHRpIGwgfmdldF9rZXkgPSBvZl9saXN0X3dpdGhfa2V5X211bHRpIGwgfmdldF9rZXkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IG9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgaW52YXJpYW50cyBhID0gaW52YXJpYW50cyBhIH5jb21wYXJhdG9yXG4gIGxldCBpc19lbXB0eSBhID0gaXNfZW1wdHkgYVxuICBsZXQgbGVuZ3RoIGEgPSBsZW5ndGggYVxuICBsZXQgc2V0IGEgfmtleSB+ZGF0YSA9IHNldCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCBhIH5rZXkgfmRhdGEgPSBhZGQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfZXhuIGEgfmtleSB+ZGF0YSA9IGFkZF9leG4gYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhID0gYWRkX211bHRpIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlX211bHRpIGEgYiA9IHJlbW92ZV9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfbXVsdGkgYSBiID0gZmluZF9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGNoYW5nZSBhIGIgfmYgPSBjaGFuZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCB1cGRhdGUgYSBiIH5mID0gdXBkYXRlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9leG4gYSBiID0gZmluZF9leG4gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kIGEgYiA9IGZpbmQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmUgYSBiID0gcmVtb3ZlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgbWVtIGEgYiA9IG1lbSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGl0ZXJpX3VudGlsID0gaXRlcmlfdW50aWxcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IGl0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGZvbGRfdW50aWwgPSBmb2xkX3VudGlsXG4gIGxldCBmb2xkX3JpZ2h0ID0gZm9sZF9yaWdodFxuICBsZXQgZm9sZDIgYSBiIH5pbml0IH5mID0gZm9sZDIgYSBiIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfa2V5cyBhIH5mID0gZmlsdGVyX2tleXMgYSB+ZlxuICBsZXQgZmlsdGVyIGEgfmYgPSBmaWx0ZXIgYSB+ZlxuICBsZXQgZmlsdGVyaSBhIH5mID0gZmlsdGVyaSBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBmaWx0ZXJfbWFwIGEgfmZcbiAgbGV0IGZpbHRlcl9tYXBpIGEgfmYgPSBmaWx0ZXJfbWFwaSBhIH5mXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZlxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcCB0IH5mXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmZcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uX3RmIHQgfmZcbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPSBjb21iaW5lX2Vycm9ycyB0IH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCBhIGIgYyA9IGNvbXBhcmVfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlcXVhbCBhIGIgYyA9IGVxdWFsIGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCA9IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+Y29tcGFyYXRvclxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmYgfmluaXQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgbWVyZ2UgYSBiIH5mID0gbWVyZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lID0gbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSB+Y29tcGFyYXRvclxuICBsZXQgbWluX2VsdCA9IG1pbl9lbHRcbiAgbGV0IG1pbl9lbHRfZXhuID0gbWluX2VsdF9leG5cbiAgbGV0IG1heF9lbHQgPSBtYXhfZWx0XG4gIGxldCBtYXhfZWx0X2V4biA9IG1heF9lbHRfZXhuXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBzcGxpdCBhIGIgPSBzcGxpdCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IHNwbGl0X2xlX2d0IGEgYiA9IHNwbGl0X2xlX2d0IGEgYiB+Y29tcGFyYXRvclxuICBsZXQgc3BsaXRfbHRfZ2UgYSBiID0gc3BsaXRfbHRfZ2UgYSBiIH5jb21wYXJhdG9yXG4gIGxldCBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPSBhcHBlbmQgfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgfmNvbXBhcmF0b3JcblxuICBsZXQgc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgPVxuICAgIGZvbGRfcmFuZ2VfaW5jbHVzaXZlIHQgfm1pbiB+bWF4IH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID0gcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggfmNvbXBhcmF0b3JcbiAgbGV0IGNsb3Nlc3Rfa2V5IGEgYiBjID0gY2xvc2VzdF9rZXkgYSBiIGMgfmNvbXBhcmF0b3JcbiAgbGV0IG50aCA9IG50aFxuICBsZXQgbnRoX2V4biA9IG50aF9leG5cbiAgbGV0IHJhbmsgYSBiID0gcmFuayBhIGIgfmNvbXBhcmF0b3JcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0ID1cbiAgICB0b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvciB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvciB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcHBsaWNhdGl2ZV90cmF2ZXJzYWxzIChBIDogQXBwbGljYXRpdmUuTGF6eV9hcHBsaWNhdGl2ZSkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHJhdmVyc2FscyA9IE1ha2VfYXBwbGljYXRpdmVfdHJhdmVyc2FscyAoQSlcblxuICAgIGxldCBtYXBpID0gVHJhdmVyc2Fscy5tYXBpXG4gICAgbGV0IGZpbHRlcl9tYXBpID0gVHJhdmVyc2Fscy5maWx0ZXJfbWFwaVxuICBlbmRcblxuICBsZXQga2V5X3NldCB0ID0gVXNpbmdfY29tcGFyYXRvci5rZXlfc2V0X29mX3RyZWUgfmNvbXBhcmF0b3IgdFxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1hcF9rZXlzX2V4biB0IH5mID0gbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHRyYW5zcG9zZV9rZXlzIHQgPSB0cmFuc3Bvc2Vfa2V5cyB+Y29tcGFyYXRvciB+Y29tcGFyYXRvciB0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBrIHYgPSBGb3JfcXVpY2tjaGVjay5nZW5fdHJlZSB+Y29tcGFyYXRvciBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2ID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWUgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlIH5jb21wYXJhdG9yIGsgdlxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfcGxhaW4gKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgTWFrZV90cmVlX1MxIChLZXlfUzEpXG5cbiAgdHlwZSArJ3YgdCA9IChLZXkudCwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPSBzZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKFggOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gIHN0cnVjdFxuICAgIGxldCB0X29mX3NleHAgdl9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgWC50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZSAoS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV90cmVlX3BsYWluIChLZXkpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5lbmRcblxuKCogRG9uJ3QgdXNlIFtvZl9zb3J0ZWRfYXJyYXldIHRvIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGFuIGludGVybWVkaWF0ZSBhcnJheSAqKVxubGV0IGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmYgfmNvbXBhcmF0b3IgPVxuICBsZXQgbWFwID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yIGluXG4gIGlmIGludmFyaWFudHMgbWFwXG4gIHRoZW4gbWFwXG4gIGVsc2UgKFxuICAgICgqIFRoZSBpbnZhcmlhbnRzIGFyZSBicm9rZW4sIGJ1dCB3ZSBjYW4gc3RpbGwgdHJhdmVyc2UgdGhlIHN0cnVjdHVyZS4gKilcbiAgICBtYXRjaCBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpIH5pdGVyaTooaXRlcmkgbWFwKSB+Y29tcGFyYXRvciB3aXRoXG4gICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgIHwgYER1cGxpY2F0ZV9rZXkgX2tleSAtPiBmYWlsd2l0aCBcIk1hcC5iaW5fcmVhZF90OiBkdXBsaWNhdGUgZWxlbWVudCBpbiBtYXBcIilcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGluY2x1ZGUgQ3JlYXRvcnMgKENvbXBhcmF0b3IuUG9seSlcblxuICB0eXBlICgnYSwgJ2IsICdjKSBtYXAgPSAoJ2EsICdiLCAnYykgdFxuICB0eXBlICgnaywgJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyZSBfIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIgPVxuICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiN2Q3YjFhMC00OTkyLTExZTYtOGEzMi1iYmIyMjFmYTAyNWNcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBmIChrZXksIGRhdGEpKVxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgKCdrLCArJ3YpIHQgPSAoJ2ssICd2LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdCA9IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIgPVxuICAgICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LkFzc29jLnRfc2V4cF9ncmFtbWFyIGtfZ3JhbW1hciB2X2dyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcbm1vZHVsZSB0eXBlIEtleV9oYXNoYWJsZSA9IEtleV9oYXNoYWJsZVxubW9kdWxlIHR5cGUgS2V5X2JpbmFibGVfaGFzaGFibGUgPSBLZXlfYmluYWJsZV9oYXNoYWJsZVxubW9kdWxlIHR5cGUgU19wbGFpbiA9IFNfcGxhaW5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBTX2JpbmFibGVcblxubW9kdWxlIEtleV9iaW5faW8gPSBLZXlfYmluX2lvXG5cbm1vZHVsZSBQcm92aWRlX2Jpbl9pbyAoS2V5IDogS2V5X2Jpbl9pby5TKSA9IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgdHlwZSAndiBlbCA9IEtleS50ICogJ3YgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJkZmIzMDBmOC00OTkyLTExZTYtOWMxNS03M2EyYWM2YjgxNWNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5NYXBcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6S2V5LmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgbWFwIGlzIHVzZWQgaW4gdGhlIHN0YWJsZSBtb2R1bGVzIGJlbG93LCBzbyBpdCdzXG4gICAgIGFzc3VtZWQgdG8gYmUgc3RhYmxlIChpZiB0aGUga2V5IGFuZCBkYXRhIGFyZSBzdGFibGUpIC4gKilcbiAgbGV0IHN0YWJsZV93aXRuZXNzICh0eXBlIGRhdGEpIChfZGF0YV9zdGFibGVfd2l0bmVzcyA6IGRhdGEgU3RhYmxlX3dpdG5lc3MudClcbiAgICA6IChLZXkudCwgZGF0YSwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdCBTdGFibGVfd2l0bmVzcy50XG4gICAgPVxuICAgIGxldCAoXyA6IEtleS50IFN0YWJsZV93aXRuZXNzLnQpID0gS2V5LnN0YWJsZV93aXRuZXNzIGluXG4gICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBLZXlfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEtleSlcbiAgaW5jbHVkZSBDcmVhdG9ycyAoS2V5X1MxKVxuXG4gIHR5cGUga2V5ID0gS2V5LnRcbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAndiB0ID0gKGtleSwgJ3YsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIG1hcFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgY21wdiB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IGNtcHYgdDEgdDJcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBLZXkuc2V4cF9vZl90IHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcbiAgOztcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEtleS50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5JyA6IEhhc2hlci5TIHdpdGggdHlwZSB0IDo9IEtleS50KSA9IHN0cnVjdFxuICAgIGxldCBoYXNoX2ZvbGRfdCAodHlwZSBhKSBoYXNoX2ZvbGRfZGF0YSBzdGF0ZSAodCA6IGEgdCkgPVxuICAgICAgVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0IEtleScuaGFzaF9mb2xkX3QgaGFzaF9mb2xkX2RhdGEgc3RhdGUgdFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgICBQcm92aWRlX2Jpbl9pbyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEtleVxuICAgICAgaW5jbHVkZSBLZXknXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoS2V5JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEtleVxuICAgICAgaW5jbHVkZSBLZXknXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChLZXkgOiBLZXlfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoS2V5X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwKVxuICBtb2R1bGUgS2V5ID0gS2V5X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEtleSlcblxuICBtb2R1bGUgXyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVHJlZVxuICAgIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEtleVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChLZXkpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChLZXlfYmluX3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwKVxuICBtb2R1bGUgS2V5ID0gS2V5X2Jpbl9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEtleSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChLZXkgOiBLZXlfYmluYWJsZSkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYXAuTVxuXG4gIGxldCBiaW5fc2hhcGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NoYXBlX3RcbiAgOztcblxuICBsZXQgYmluX3NpemVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3NpemVfdFxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3dyaXRlX3RcbiAgOztcblxuICBsZXQgYmluX3JlYWRfbV9fdCAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uYmluX3JlYWRfdFxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX21fX3RfXyAodHlwZSB0IGMpIChtIDogKHQsIGMpIEtleV9iaW5faW8udCkgPVxuICAgIGxldCBtb2R1bGUgTSA9IFByb3ZpZGVfYmluX2lvICgodmFsIG0pKSBpblxuICAgIE0uX19iaW5fcmVhZF90X19cbiAgOztcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfZ2VuZXJhdG9yXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgS2V5KSBLZXkucXVpY2tjaGVja19nZW5lcmF0b3Igdl9nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X29ic2VydmVyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgS2V5LnF1aWNrY2hlY2tfb2JzZXJ2ZXIgdl9vYnNlcnZlclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19zaHJpbmtlcl9tIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfc2hyaW5rZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19zaHJpbmtlciBLZXkucXVpY2tjaGVja19zaHJpbmtlciB2X3Nocmlua2VyXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gTWFwLkZvcl9kZXJpdmluZ1xuXG4gIGluY2x1ZGUgKE1hcCA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHQpXG5lbmRcblxubW9kdWxlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgU3RhYmxlX3dpdG5lc3NfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgZW5kXG5cbiAgbGV0IHN0YWJsZV93aXRuZXNzX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogU3RhYmxlX3dpdG5lc3NfbSB3aXRoIHR5cGUgdCA9IGsgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChLZXkpIGluXG4gICAgTS5zdGFibGVfd2l0bmVzc1xuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl9oYXNodGJsX2V4biA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4blxuICBsZXQga2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gKGtleSwgJ2EsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ19zdGFibGVcbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5KVxuXG4gICAgbW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgICAgaW5jbHVkZSBTXG5cbiAgICAgICAgdmFsIHN0YWJsZV93aXRuZXNzIDogJ2EgU3RhYmxlX3dpdG5lc3MudCAtPiAnYSB0IFN0YWJsZV93aXRuZXNzLnRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoS2V5X3N0YWJsZSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMCkgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNYWtlIChLZXlfc3RhYmxlKVxuICAgICAgICBpbmNsdWRlIFByb3ZpZGVfc3RhYmxlX3dpdG5lc3MgKEtleV9zdGFibGUpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgPSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBCYXNlLk1heWJlX2JvdW5kLnQgPVxuICAgICAgfCBJbmNsIG9mICdhXG4gICAgICB8IEV4Y2wgb2YgJ2FcbiAgICAgIHwgVW5ib3VuZGVkXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEluY2wgeCAtPiBJbmNsIChmIHgpXG4gICAgICB8IEV4Y2wgeCAtPiBFeGNsIChmIHgpXG4gICAgICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEJhc2UuTWF5YmVfYm91bmRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlYxLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCBzZXhwXVxuXG5sZXQgY29tcGFyZV9vbmVfc2lkZWQgfnNpZGUgY29tcGFyZV9hIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBVbmJvdW5kZWQsIFVuYm91bmRlZCAtPiAwXG4gIHwgVW5ib3VuZGVkLCBfIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAtMVxuICAgICB8IGBVcHBlciAtPiAxKVxuICB8IF8sIFVuYm91bmRlZCAtPlxuICAgIChtYXRjaCBzaWRlIHdpdGhcbiAgICAgfCBgTG93ZXIgLT4gMVxuICAgICB8IGBVcHBlciAtPiAtMSlcbiAgfCBJbmNsIGExLCBJbmNsIGEyIC0+IGNvbXBhcmVfYSBhMSBhMlxuICB8IEV4Y2wgYTEsIEV4Y2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgSW5jbCBhMSwgRXhjbCBhMiAtPlxuICAgIGxldCBjID0gY29tcGFyZV9hIGExIGEyIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgICAgfCBgTG93ZXIgLT4gLTFcbiAgICAgIHwgYFVwcGVyIC0+IDEpXG4gICAgZWxzZSBjXG4gIHwgRXhjbCBhMSwgSW5jbCBhMiAtPlxuICAgIGxldCBjID0gY29tcGFyZV9hIGExIGEyIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgICAgfCBgTG93ZXIgLT4gMVxuICAgICAgfCBgVXBwZXIgLT4gLTEpXG4gICAgZWxzZSBjXG47O1xuXG5tb2R1bGUgQXNfbG93ZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID0gY29tcGFyZV9vbmVfc2lkZWQgfnNpZGU6YExvd2VyIGNvbXBhcmVfYSB0MSB0MlxuZW5kXG5cbm1vZHVsZSBBc191cHBlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgVXBwZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFDb3JlLlNldH1bU2V0XX0uIFNlZSB0aGVcbiAgICB7IU1hcH0gZG9jcyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MCwxLDIsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbU2V0XSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczJdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuKCpcbiAgIENScyBhbmQgY29tbWVudHMgYWJvdXQgW1NldF0gZnVuY3Rpb25zIGRvIG5vdCBiZWxvbmcgaW4gdGhpcyBmaWxlLiAgVGhleSBiZWxvbmcgbmV4dFxuICAgdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGluIHNldC5tbGkuXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcbm1vZHVsZSBTZXQgPSBCYXNlLlNldFxubW9kdWxlIFRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlXG5tb2R1bGUgQ29udGFpbmVyID0gQmFzZS5Db250YWluZXJcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gU2V0LkVsdF9wbGFpblxuXG5tb2R1bGUgdHlwZSBFbHQgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgRWx0X2JpbmFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRWx0X2Jpbl9pbyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcbiAgZW5kXG5cbiAgdHlwZSAoJ3QsICdjKSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ3QgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2MpXG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5TZXQuRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSBNID0gQmFzZS5TZXQuTVxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFsqYmluKl0gZnVuY3Rpb25zIHN1cHBvcnQgYmluLWlvIG9uIGJhc2Utc3R5bGUgc2V0cywgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gU2V0Lk0oU3RyaW5nKS50IFtAQGRlcml2aW5nIGJpbl9pb10gXX0gKilcblxuICB2YWwgYmluX3NoYXBlX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gQmluX3Byb3QuU2hhcGUudFxuICB2YWwgYmluX3NpemVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlNpemUuc2l6ZXJcbiAgdmFsIGJpbl93cml0ZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuV3JpdGUud3JpdGVyXG4gIHZhbCBiaW5fcmVhZF9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+ICgnYSwgJ2IpIHQgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICB2YWwgX19iaW5fcmVhZF9tX190X19cbiAgICA6ICAoJ2EsICdiKSBFbHRfYmluX2lvLnRcbiAgICAtPiAoaW50IC0+ICgnYSwgJ2IpIHQpIEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgW3F1aWNrY2hlY2sqXSBmdW5jdGlvbnMgc3VwcG9ydCBkZXJpdmluZyBxdWlja2NoZWNrIG9uIGJhc2Utc3R5bGVcbiAgICAgIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSBdfSAqKVxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tIHdpdGggdHlwZSB0ID0gJ2EgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcbiAgICAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZ19zdGFibGUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgbW9kdWxlIHR5cGUgU3RhYmxlX3dpdG5lc3NfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgZW5kXG5cbiAgdmFsIHN0YWJsZV93aXRuZXNzX21fX3RcbiAgICA6ICAobW9kdWxlIFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBTdGFibGVfd2l0bmVzcy50XG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFNldC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBTZXQuV2l0aF9jb21wYXJhdG9yXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBTZXQuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzX2dlbmVyaWNcblxuICB2YWwgdG9fbWFwXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGY6KCgnYSBlbHQgLT4gJ2IpW0Bsb2NhbF0pIC0+ICgnYSBlbHQsICdiLCAnY21wIGNtcCkgQmFzZS5NYXAudFxuICAgICAgKVxuICAgICAgICBhY2Nlc3Nfb3B0aW9uc1xuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyXG4gICAgOiAgJ2EgZWx0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICdhIGVsdCBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIGFjY2Vzc19vcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yc19nZW5lcmljXG5cbiAgdmFsIG9mX2hhc2hfc2V0IDogKCdhLCAnY21wLCAnYSBlbHQgSGFzaF9zZXQudCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsICdjbXAsICgnYSBlbHQsIF8pIEhhc2h0YmwudCAtPiAoJ2EsICdjbXApIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtNYXAudF0uICopXG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSBlbHQsIF8sICdjbXAgY21wKSBCYXNlLk1hcC50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICdhIGVsdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2VsdCwgJ2NtcCkgdFxuICB0eXBlICgnZWx0LCAnY21wKSB0cmVlXG4gIHR5cGUgJ2VsdCBlbHRcbiAgdHlwZSAnY21wIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEVsdCA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9IHRcbiAgICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gRWx0LnRcbiAgICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFNldC50XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSBFbHQudFxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgY3JlYXRlX29wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA6IEJpbmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoRWx0IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiBFbHQudCBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiBFbHQudCBRdWlja2NoZWNrLlNocmlua2VyLnQgLT4gdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5vcGVuIFNldF9pbnRmXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gRWx0X3BsYWluXG5tb2R1bGUgdHlwZSBFbHQgPSBFbHRcbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gRWx0X2JpbmFibGVcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCkgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApIGNvbXBhcmF0b3IgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V0X3RfbSAob2ZfY29tcGFyYXRvciBjb21wYXJhdG9yKSBlbHRfZ2VuXG4gIDs7XG5cbiAgbGV0IGdlbl90cmVlIH5jb21wYXJhdG9yIGVsdF9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdCBlbHRfb2JzXG4gIGxldCBvYnNfdHJlZSBlbHRfb2JzID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnNldF90cmVlIGVsdF9vYnNcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgZWx0X3NociA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXRfdCBlbHRfc2hyXG5cbiAgbGV0IHNocl90cmVlIH5jb21wYXJhdG9yIGVsdF9zaHIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9zaHJcbiAgOztcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgbSBlbHRfZ2VuID1cbiAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgZWx0X2dlblxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcblxubW9kdWxlIFRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUcmVlXG5cbiAgbGV0IHRvX21hcCB+Y29tcGFyYXRvciB0ID0gTWFwLm9mX2tleV9zZXQgKFNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgdCB+Y29tcGFyYXRvcilcbiAgbGV0IG9mX21hcF9rZXlzIG0gPSBTZXQuVXNpbmdfY29tcGFyYXRvci50b190cmVlIChNYXAua2V5X3NldCBtKVxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBIYXNoX3NldC5mb2xkIGhzZXQgfmluaXQ6KGVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgSGFzaHRibC5mb2xkIGhhc2h0YmwgfmluaXQ6KGVtcHR5IH5jb21wYXJhdG9yKSB+ZjooZnVuIH5rZXk6eCB+ZGF0YTpfIHQgLT5cbiAgICAgIGFkZCB0IHggfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZVxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnNocl90cmVlXG5lbmRcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTZXQuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBTZXQuQWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAnYyBjbXAgOj0gJ2NcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBhY2Nlc3Nfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnQpXG5lbmRcblxudHlwZSAnYSBjbXAgPSAnYVxudHlwZSAnYSBlbHQgPSAnYVxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIFNldFxuXG4gIGxldCBvZl90cmVlIG0gPSBTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICBsZXQgc2V4cF9vZl90ID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iuc2V4cF9vZl90XG5lbmQgOlxuc2lnXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFNldC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIFNldC5DcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2EsICdiLCAnYykgU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGFjY2Vzc19vcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBTZXQuV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggbW9kdWxlIE5hbWVkID0gU2V0Lk5hbWVkXG5lbmQpXG5cbnR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuXG5sZXQgY29tcGFyZSBfIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBTZXQuVXNpbmdfY29tcGFyYXRvciA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgU2V0LlVzaW5nX2NvbXBhcmF0b3JcbiAgICBlbmRcbiAgICB3aXRoIG1vZHVsZSBUcmVlIDo9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUpXG5cbiAgaW5jbHVkZSBGb3JfcXVpY2tjaGVja1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IE1hcC5rZXlfc2V0XG5cbiAgbGV0IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhzZXQgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUub2ZfaGFzaF9zZXQgaHNldCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIG9mX3RyZWUgfmNvbXBhcmF0b3IgKFRyZWUub2ZfaGFzaHRibF9rZXlzIGhhc2h0YmwgfmNvbXBhcmF0b3IpXG4gIDs7XG5lbmRcblxubGV0IHRvX21hcCA9IE1hcC5vZl9rZXlfc2V0XG5sZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxubGV0IGhhc2hfZm9sZF9kaXJlY3QgPSBVc2luZ19jb21wYXJhdG9yLmhhc2hfZm9sZF9kaXJlY3RcbmxldCBjb21wYXJhdG9yX3MgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3Jfc1xubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBvZl9oYXNoX3NldCBtIGhzZXQgPSBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2hfc2V0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhzZXRcblxubGV0IG9mX2hhc2h0Ymxfa2V5cyBtIGhhc2h0YmwgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBoYXNodGJsXG47O1xuXG5tb2R1bGUgQ3JlYXRvcnMgKEVsdCA6IENvbXBhcmF0b3IuUzEpIDogc2lnXG4gIHR5cGUgbm9ucmVjICgnYSwgJ2NvbXBhcmF0b3IpIHRfID0gKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZSA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgJ2EgZWx0XyA9ICdhIEVsdC50XG4gIHR5cGUgJ2EgY21wXyA9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgdF9vZl9zZXhwIDogKEJhc2UuU2V4cC50IC0+ICdhIEVsdC50KSAtPiBCYXNlLlNleHAudCAtPiAoJ2EsICdjb21wYXJhdG9yKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRfXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBjcmVhdGVfb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgV2l0aG91dF9jb21wYXJhdG9yLnRcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcF9cbmVuZCA9IHN0cnVjdFxuICBvcGVuIFVzaW5nX2NvbXBhcmF0b3JcblxuICB0eXBlIG5vbnJlYyAoJ2EsICdjb21wYXJhdG9yKSB0XyA9ICgnYSBFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICB0eXBlICgnYSwgJ2IpIHRyZWUgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICB0eXBlICdhIGVsdF8gPSAnYSBFbHQudFxuICB0eXBlICdjbXAgY21wXyA9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSBvZl90cmVlIH5jb21wYXJhdG9yIHRyZWVcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPSBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5ID0gb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5XG5cbiAgbW9kdWxlIE1fZW1wdHkgPSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQpXG5cbiAgbGV0IGVtcHR5ID0gTV9lbXB0eS5lbXB0eVxuICBsZXQgc2luZ2xldG9uIGUgPSBzaW5nbGV0b24gfmNvbXBhcmF0b3IgZVxuICBsZXQgdW5pb25fbGlzdCBsID0gdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9saXN0IGwgPSBvZl9saXN0IH5jb21wYXJhdG9yIGxcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9oYXNoX3NldCBoID0gb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaFxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIGggPSBvZl9oYXNodGJsX2tleXMgfmNvbXBhcmF0b3IgaFxuICBsZXQgb2ZfYXJyYXkgYSA9IG9mX2FycmF5IH5jb21wYXJhdG9yIGFcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgeHNcbiAgbGV0IG1hcCB0IH5mID0gbWFwIH5jb21wYXJhdG9yIHQgfmZcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUgKFRyZWUudF9vZl9zZXhwX2RpcmVjdCBhX29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZWx0ID0gcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3IgZWx0XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoRWx0IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgZW1wdHkgPSBUcmVlLmVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IHNpbmdsZXRvbiBlID0gVHJlZS5zaW5nbGV0b24gfmNvbXBhcmF0b3IgZVxuICBsZXQgbWFwIHQgfmYgPSBUcmVlLm1hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBUcmVlLmZpbHRlcl9tYXAgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgY29tcGFyZV9kaXJlY3QgdDEgdDIgPSBUcmVlLmNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIHQxIHQyXG4gIGxldCBlcXVhbCB0MSB0MiA9IFRyZWUuZXF1YWwgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2xpc3QgbCA9IFRyZWUub2ZfbGlzdCBsIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gVHJlZS5vZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNoX3NldCBoID0gVHJlZS5vZl9oYXNoX3NldCBoIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2tleXMgaCA9IFRyZWUub2ZfaGFzaHRibF9rZXlzIGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FycmF5IGEgPSBUcmVlLm9mX2FycmF5IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IFRyZWUub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJhdG9yXG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW4gfmYgPVxuICAgIFRyZWUub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYSA9IFRyZWUub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IFRyZWUudW5pb25fbGlzdCBsIH5jb21wYXJhdG9yXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IFRyZWUuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3RyZWUgdCA9IHRcbiAgbGV0IG9mX21hcF9rZXlzID0gVHJlZS5vZl9tYXBfa2V5c1xuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZWx0ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgZWx0IH5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9wbGFpbiAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHRfUzEgPSBDb21wYXJhdG9yLlNfdG9fUzEgKEVsdClcbiAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKEVsdF9TMSlcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gVHJlZS5zZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBYLnRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkVsdF9TMS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZSAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV90cmVlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxuKCogRG9uJ3QgdXNlIFtvZl9zb3J0ZWRfYXJyYXldIHRvIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGFuIGludGVybWVkaWF0ZSBhcnJheSAqKVxubGV0IGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmYgfmNvbXBhcmF0b3IgPVxuICBsZXQgc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mIGluXG4gIGlmIGludmFyaWFudHMgc2V0XG4gIHRoZW4gc2V0XG4gIGVsc2VcbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoZm9sZCBzZXQgfmluaXQ6KFRyZWUuZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgICAgICAgaWYgVHJlZS5tZW0gYWNjIGVsdCB+Y29tcGFyYXRvclxuICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNldC5iaW5fcmVhZF90OiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIlxuICAgICAgICAgZWxzZSBUcmVlLmFkZCBhY2MgZWx0IH5jb21wYXJhdG9yKSlcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBDb21wYXJhdG9yLlBvbHlcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0KVxuXG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayB0ID0gc2V4cF9vZl90IHNleHBfb2ZfayBbJXNleHBfb2Y6IF9dIHRcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBfID0gYmluX2VsXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjg4YmNjNDc4LTQ5OTItMTFlNi1hOTVkLWZmNDgzMWFjZjQxMFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgfmY6KGZ1biBrZXkgLT4gZiBrZXkpIHRcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0cmVlXG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBUcmVlLnNleHBfb2ZfdCBzZXhwX29mX2VsdCBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9XG4gICAgICBUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgZWx0X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcjpDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpblxubW9kdWxlIHR5cGUgUyA9IFNcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZVxuXG5tb2R1bGUgRWx0X2Jpbl9pbyA9IEVsdF9iaW5faW9cblxubW9kdWxlIFByb3ZpZGVfYmluX2lvIChFbHQgOiBFbHRfYmluX2lvLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgdHlwZSBlbCA9IEVsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODk4OTI3OGUtNDk5Mi0xMWU2LThmNGEtNmI4OTc3NmIxZTUzXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuU2V0XCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgfmY6KGZ1biBrZXkgLT4gZiBrZXkpIHRcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6RWx0LmNvbXBhcmF0b3JcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gICgqIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2Ygc2V0IGlzIHVzZWQgaW4gdGhlIHN0YWJsZSBtb2R1bGVzIGJlbG93LCBzbyBpdCdzXG4gICAgIGFzc3VtZWQgdG8gYmUgc3RhYmxlIChpZiB0aGUgZWx0IGlzIHN0YWJsZSkuICopXG4gIGxldCBzdGFibGVfd2l0bmVzcyA6IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICBsZXQgKF8gOiBFbHQudCBTdGFibGVfd2l0bmVzcy50KSA9IEVsdC5zdGFibGVfd2l0bmVzcyBpblxuICAgIFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdCA9IEVsdFxuICBtb2R1bGUgRWx0X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChFbHQpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEVsdF9TMSlcblxuICB0eXBlICgnYSwgJ2IpIHNldCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBzZXRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEVsdC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGUgdFxuXG4gICAgbGV0IGhhc2ggdCA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGhhc2hfZm9sZF90IChQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpKSB0KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX2Jpbl9pbyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEVsdFxuICAgICAgaW5jbHVkZSBFbHQnXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzXG4gICAgICAoRWx0JyA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHN0YWJsZV93aXRuZXNzXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEVsdC50KSA9XG4gICAgUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEVsdFxuICAgICAgaW5jbHVkZSBFbHQnXG4gICAgZW5kKVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gcXVpY2tjaGVja19vYnNlcnZlclxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IHF1aWNrY2hlY2tfc2hyaW5rZXJcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoRWx0IDogRWx0X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChFbHRfc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2UgKEVsdCA6IEVsdCkgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChFbHRfYmluX3NleHApXG4gIG1vZHVsZSBFbHQgPSBFbHRfYmluX3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEVsdCA6IEVsdF9iaW5hYmxlKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIEZvcl9kZXJpdmluZyA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IFNldC5NXG5cbiAgbGV0IGJpbl9zaGFwZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2hhcGVfdFxuICA7O1xuXG4gIGxldCBiaW5fc2l6ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fc2l6ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl93cml0ZV9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fd3JpdGVfdFxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF9tX190ICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5iaW5fcmVhZF90XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfbV9fdF9fICh0eXBlIHQgYykgKG0gOiAodCwgYykgRWx0X2Jpbl9pby50KSA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9iaW5faW8gKCh2YWwgbSkpIGluXG4gICAgTS5fX2Jpbl9yZWFkX3RfX1xuICA7O1xuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIDogdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfc2hyaW5rZXJfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfZ2VuZXJhdG9yX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgcXVpY2tjaGVja19nZW5lcmF0b3IgKG1vZHVsZSBFbHQpIEVsdC5xdWlja2NoZWNrX2dlbmVyYXRvclxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19vYnNlcnZlcl9tIHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgRWx0LnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbSB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgID1cbiAgICBxdWlja2NoZWNrX3Nocmlua2VyIEVsdC5xdWlja2NoZWNrX3Nocmlua2VyXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gU2V0LkZvcl9kZXJpdmluZ1xuXG4gIGluY2x1ZGUgKFNldCA6IEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0KVxuZW5kXG5cbm1vZHVsZSBGb3JfZGVyaXZpbmdfc3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFN0YWJsZV93aXRuZXNzX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50XG4gIGVuZFxuXG4gIGxldCBzdGFibGVfd2l0bmVzc19tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFN0YWJsZV93aXRuZXNzX20gd2l0aCB0eXBlIHQgPSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICA9XG4gICAgbGV0IG1vZHVsZSBNID0gUHJvdmlkZV9zdGFibGVfd2l0bmVzcyAoRWx0KSBpblxuICAgIE0uc3RhYmxlX3dpdG5lc3NcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9ICgnYSwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBlbHRcbiAgICAgIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzc1xuICAgICAgdHlwZSBub25yZWMgdCA9IChlbHQsIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MpIHRcblxuICAgICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvciB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEZvcl9kZXJpdmluZ1xuICAgIGluY2x1ZGUgRm9yX2Rlcml2aW5nX3N0YWJsZVxuICAgIG1vZHVsZSBNYWtlIChFbHQgOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChFbHQpXG5cbiAgICBtb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIFNcblxuICAgICAgICB2YWwgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnRcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoRWx0X3N0YWJsZSA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMCkgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X3N0YWJsZSlcbiAgICAgICAgaW5jbHVkZSBQcm92aWRlX3N0YWJsZV93aXRuZXNzIChFbHRfc3RhYmxlKVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5tb2R1bGUgSW5maXggPSBCYXNlLkNvbXBhcmFibGUuSW5maXhcbm1vZHVsZSBDb21wYXJpc29ucyA9IEJhc2UuQ29tcGFyYWJsZS5Db21wYXJpc29uc1xuXG5tb2R1bGUgVmFsaWRhdGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgZW5kKSA6IFZhbGlkYXRlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBtb2R1bGUgViA9IFZhbGlkYXRlXG4gIG9wZW4gTWF5YmVfYm91bmRcblxuICBsZXQgdG9fc3RyaW5nIHQgPSBCYXNlLlNleHAudG9fc3RyaW5nIChULnNleHBfb2ZfdCB0KVxuXG4gIGxldCB2YWxpZGF0ZV9ib3VuZCB+bWluIH5tYXggdCA9XG4gICAgVi5ib3VuZGVkIH5uYW1lOnRvX3N0cmluZyB+bG93ZXI6bWluIH51cHBlcjptYXggfmNvbXBhcmU6VC5jb21wYXJlIHRcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heDpVbmJvdW5kZWQgdFxuICBsZXQgdmFsaWRhdGVfdWJvdW5kIH5tYXggdCA9IHZhbGlkYXRlX2JvdW5kIH5tYXggfm1pbjpVbmJvdW5kZWQgdFxuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgViA9IFZhbGlkYXRlIChUKVxuICBpbmNsdWRlIFZcblxuICAoKiBQcmVhbGxvY2F0ZSB0aGUgaW50ZXJlc3RpbmcgYm91bmRzIHRvIG1pbmltaXplIGFsbG9jYXRpb24gaW4gdGhlIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICBbdmFsaWRhdGVfKl0uICopXG4gIGxldCBleGNsX3plcm8gPSBNYXliZV9ib3VuZC5FeGNsIFQuemVyb1xuICBsZXQgaW5jbF96ZXJvID0gTWF5YmVfYm91bmQuSW5jbCBULnplcm9cbiAgbGV0IHZhbGlkYXRlX3Bvc2l0aXZlIHQgPSB2YWxpZGF0ZV9sYm91bmQgfm1pbjpleGNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbm9uX25lZ2F0aXZlIHQgPSB2YWxpZGF0ZV9sYm91bmQgfm1pbjppbmNsX3plcm8gdFxuICBsZXQgdmFsaWRhdGVfbmVnYXRpdmUgdCA9IHZhbGlkYXRlX3Vib3VuZCB+bWF4OmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fcG9zaXRpdmUgdCA9IHZhbGlkYXRlX3Vib3VuZCB+bWF4OmluY2xfemVybyB0XG5lbmRcblxubW9kdWxlIFdpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVfd2l0aF96ZXJvIChUKVxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5XaXRoX3plcm8gKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYXBfYW5kX3NldF9iaW5hYmxlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kKSA9XG4gIE1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5Qb2x5IChUKVxuICBlbmRcblxuICBpbmNsdWRlIENcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoQylcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBDXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChDKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBNXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgTVxuICAgIGVuZClcblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgPVxuICBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5cbiAgaW5jbHVkZSBWYWxpZGF0ZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBULmNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGVuZClcblxuICBpbmNsdWRlIE1cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEV4dGVuZFxuICAgIChNIDogQmFzZS5Db21wYXJhYmxlLlMpIChYIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gTS50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFggOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0KVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBWYWxpZGF0ZSAoVClcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kX2JpbmFibGVcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFggOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgICB2YWwgY29tcG9uZW50IDogdCAtPiBDLnRcbiAgICAgICAgZW5kKSA9XG4gIE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbmluY2x1ZGUgKEJhc2UuQ29tcGFyYWJsZSA6IFdpdGhfY29tcGFyZSlcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNvbXBhcmFibGVcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIG1vZHVsZSBNYXAgOlxuICAgICAgICBNYXAuU3RhYmxlLlYxLlNcbiAgICAgICAgd2l0aCB0eXBlIGtleSA6PSBjb21wYXJhYmxlXG4gICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIG1vZHVsZSBTZXQgOlxuICAgICAgICBTZXQuU3RhYmxlLlYxLlNcbiAgICAgICAgd2l0aCB0eXBlIGVsdCA6PSBjb21wYXJhYmxlXG4gICAgICAgIHdpdGggdHlwZSBlbHRfY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKFggOiBTdGFibGVfbW9kdWxlX3R5cGVzLlMwKSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE1hcCA9IE1hcC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICAgIG1vZHVsZSBTZXQgPSBTZXQuU3RhYmxlLlYxLk1ha2UgKFgpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICB0eXBlIGNvbXBhcmFibGVcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBtb2R1bGUgTWFwIDpcbiAgICAgICAgICBNYXAuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuICAgICAgICAgIHdpdGggdHlwZSBrZXkgOj0gY29tcGFyYWJsZVxuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgICAgU2V0LlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgICB3aXRoIHR5cGUgZWx0X2NvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMCkgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE1hcCA9IE1hcC5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChYKVxuICAgICAgICBtb2R1bGUgU2V0ID0gU2V0LlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFgpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsImluY2x1ZGUgTGlzdDAgKCoqIEBpbmxpbmUgKilcblxuKCogVGhpcyBmdW5jdGlvbiBpcyBzdGFnZWQgdG8gaW5kaWNhdGUgdGhhdCByZWFsIHdvcmsgKHRoZSBmdW5jdG9yIGFwcGxpY2F0aW9uKSB0YWtlc1xuICAgcGxhY2UgYWZ0ZXIgYSBwYXJ0aWFsIGFwcGxpY2F0aW9uLiAqKVxubGV0IHN0YWJsZV9kZWR1cF9zdGFnZWQgKHR5cGUgYSkgfihjb21wYXJlIDogYSAtPiBhIC0+IGludClcbiAgOiAoYSBsaXN0IC0+IGEgbGlzdCkgQmFzZS5TdGFnZWQudFxuICA9XG4gIGxldCBtb2R1bGUgU2V0ID1cbiAgICBTZXQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gICAgICAoKiBbc3RhYmxlX2RlZHVwX2xpc3RdIG5ldmVyIGNhbGxzIHRoZXNlICopXG4gICAgICBsZXQgdF9vZl9zZXhwIF8gPSBhc3NlcnQgZmFsc2VcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IGFzc2VydCBmYWxzZVxuICAgIGVuZClcbiAgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgU2V0LnN0YWJsZV9kZWR1cF9saXN0XG47O1xuXG5sZXQgemlwX3dpdGhfcmVtYWluZGVyID1cbiAgbGV0IHJlYyB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciBhY2MgeHMgeXMgPVxuICAgIG1hdGNoIHhzLCB5cyB3aXRoXG4gICAgfCBbXSwgW10gLT4gcmV2IGFjYywgTm9uZVxuICAgIHwgZnN0LCBbXSAtPiByZXYgYWNjLCBTb21lIChFaXRoZXIuRmlyc3QgZnN0KVxuICAgIHwgW10sIHNuZCAtPiByZXYgYWNjLCBTb21lIChFaXRoZXIuU2Vjb25kIHNuZClcbiAgICB8IHggOjogeHMsIHkgOjogeXMgLT4gemlwX3dpdGhfYWNjX2FuZF9yZW1haW5kZXIgKCh4LCB5KSA6OiBhY2MpIHhzIHlzXG4gIGluXG4gIGZ1biB4cyB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciBbXSB4cyB5c1xuOztcblxudHlwZSBzZXhwX3RodW5rID0gdW5pdCAtPiBCYXNlLlNleHAudFxuXG5sZXQgc2V4cF9vZl9zZXhwX3RodW5rIHggPSB4ICgpXG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGVfZm91bmQgb2Ygc2V4cF90aHVuayAqIEJhc2UuU3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9pZl9kdXAgfmNvbXBhcmUgPyhjb250ZXh0ID0gXCJleG5faWZfZHVwXCIpIHQgfnRvX3NleHAgPVxuICBtYXRjaCBmaW5kX2FfZHVwIH5jb21wYXJlIHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGR1cCAtPiByYWlzZSAoRHVwbGljYXRlX2ZvdW5kICgoZnVuICgpIC0+IHRvX3NleHAgZHVwKSwgY29udGV4dCkpXG47O1xuXG5sZXQgc2xpY2UgYSBzdGFydCBzdG9wID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIGEgc3RhcnQgc3RvcFxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXIsIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA9IExpc3QwLnN0YWJsZV93aXRuZXNzIFtAQGFsZXJ0IFwiLWZvcl9pbnRlcm5hbF91c2Vfb25seVwiXVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3B0aW9uXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5vbmUgfnNvbWUgdCA9XG4gIGxldCBtb2R1bGUgViA9IFZhbGlkYXRlIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gVi5uYW1lIFwibm9uZVwiIChWLnByb3RlY3Qgbm9uZSAoKSlcbiAgfCBTb21lIHggLT4gVi5uYW1lIFwic29tZVwiIChWLnByb3RlY3Qgc29tZSB4KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vcHRpb25cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIub3B0aW9uXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcblxuICAgICgqIFt1bnNhZmVfdmFsdWVdIGlzIG9ubHkgc2FmZSB0byBjYWxsIHdoZW4gW2lzX25vbmVdIHJldHVybnMgW2ZhbHNlXS4gVG8gYXZvaWRcbiAgICAgICByZXBlYXRpbmcgdGhlIFtpc19ub25lXSBjaGVjaywgd2UgZGVjbGFyZSBbVW5jaGVja2VkX3NvbWVdLiBbVW5jaGVja2VkX3NvbWUgeF1cbiAgICAgICBoYXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gYXMgW1NvbWUgeF0sIGJ1dCB0aGUgdHlwZSBoYXMgbm8gW05vbmVdIGNsYXVzZS5cblxuICAgICAgIFdlIG1ha2Ugc3VyZSBhbGwgdGhpcyB3b3JrcyB3aXRoIHRlc3RzIG9mIFt1bnNhZmVfdmFsdWVdIGluIHRlc3Rfb3B0aW9uLm1sLlxuXG4gICAgICAgV2UgdHJpZWQgdXNpbmcgW09iai5maWVsZF0gaW5zdGVhZC4gSXQgZ2VuZXJhdGVzIG11Y2ggd29yc2UgbmF0aXZlIGNvZGUgZHVlIHRvXG4gICAgICAgZmxvYXQgYXJyYXkgcmVwcmVzZW50YXRpb25zLiAqKVxuXG4gICAgbW9kdWxlIFVuY2hlY2tlZF9zb21lID0gc3RydWN0XG4gICAgICAoKiBXYXJuaW5nIDM3IHRlbGxzIHVzIFtVbmNoZWNrZWRfc29tZV0gaXMgbmV2ZXIgdXNlZCBhcyBhIGNvbnN0cnVjdG9yLiBUaGlzIGlzXG4gICAgICAgICBpbnRlbnRpb25hbCwgc28gd2UgZGlzYWJsZSB0aGUgd2FybmluZy4gKilcbiAgICAgIHR5cGUgJ2EgdCA9IFVuY2hlY2tlZF9zb21lIG9mICdhIFtAQG9jYW1sLmJveGVkXSBbQEBvY2FtbC53YXJuaW5nIFwiLTM3XCJdXG4gICAgZW5kXG5cbiAgICBsZXQgdW5zYWZlX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSA6IGEgPVxuICAgICAgbGV0IChVbmNoZWNrZWRfc29tZSB2YWx1ZSkgPSAoT2JqLm1hZ2ljIHQgOiBhIFVuY2hlY2tlZF9zb21lLnQpIGluXG4gICAgICB2YWx1ZVxuICAgIDs7XG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gdGhlIE1MdG9uIGxpYnJhcnkgc2V0L2Rpc2pvaW50LmZ1biwgd2hpY2ggaGFzIHRoZVxuICAgZm9sbG93aW5nIGNvcHlyaWdodCBub3RpY2UuXG4qKVxuKCogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUgSGVucnkgQ2VqdGluLCBNYXR0aGV3IEZsdWV0LCBTdXJlc2hcbiAqICAgIEphZ2FubmF0aGFuLCBhbmQgU3RlcGhlbiBXZWVrcy5cbiAqXG4gKiBNTHRvbiBpcyByZWxlYXNlZCB1bmRlciBhIEJTRC1zdHlsZSBsaWNlbnNlLlxuICogU2VlIHRoZSBmaWxlIE1MdG9uLUxJQ0VOU0UgZm9yIGRldGFpbHMuXG4qKVxuXG5vcGVuISBJbXBvcnRcblxuKCpcbiAgIHt2XG4gICAgICAgICAgIFJvb3RcbiAgICAgICAgICAgICB8XG4gICAgICAgICAgIElubmVyXG4gICAgICAgIC8gLi4gfCAuLiBcXFxuICAgICBJbm5lciBJbm5lciBJbm5lclxuICAgICAgL3xcXCAgIC98XFwgICAvfFxcXG4gICAgICAuLi4gICAuLi4gICAuLi5cbiAgIHZ9XG5cbiAgIFdlIGNvbnN0cnVjdCB0aGUgYGludmVydGVkJyB0cmVlIGluIHRoZSBNTCByZXByZXNlbnRhdGlvbi5cbiAgIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGVkZ2VzIGlzIFVQV0FSRFMuXG4gICBTdGFydGluZyB3aXRoIGFueSBbJ2EgdF0gd2UgY2FuIHN0ZXAgZGlyZWN0bHkgdG8gaXRzIHBhcmVudC5cbiAgIEJ1dCB3ZSBjYW4ndCAoYW5kIGRvbid0IG5lZWQgdG8pIHN0YXJ0IGZyb20gdGhlIHJvb3QgYW5kIHN0ZXAgdG8gaXRzIGNoaWxkcmVuLlxuKilcblxuKCpcbiAgIFtyYW5rXSBpcyBhbiB1cHBlciBib3VuZCBvbiB0aGUgZGVwdGggb2YgYW55IG5vZGUgaW4gdGhlIHVwLXRyZWUuXG5cbiAgIEltYWdpbmUgYW4gdW5sdWNreSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGluIHdoaWNoIHlvdSBjcmVhdGUgTlxuICAgaW5kaXZpZHVhbCBbdF0tdmFsdWVzIGFuZCB0aGVuIHVuaW9uIHRoZW0gdG9nZXRoZXIgaW4gc3VjaCBhIHdheVxuICAgdGhhdCB5b3UgYWx3YXlzIHBpY2sgdGhlIHJvb3Qgb2YgZWFjaCB0cmVlIHRvIHVuaW9uIHRvZ2V0aGVyLCBzbyB0aGF0XG4gICBubyBwYXRoIGNvbXByZXNzaW9uIHRha2VzIHBsYWNlLiAgSWYgeW91IGRvbid0IHRha2UgY2FyZSB0byBzb21laG93XG4gICBiYWxhbmNlIHRoZSByZXN1bHRpbmcgdXAtdHJlZSwgaXQgaXMgcG9zc2libGUgdGhhdCB5b3UgZW5kIHVwIHdpdGggb25lXG4gICBiaWcgbG9uZyBjaGFpbiBvZiBOIGxpbmtzLCBhbmQgdGhlbiBjYWxsaW5nIFtyZXByZXNlbnRhdGl2ZV0gb24gdGhlXG4gICBkZWVwZXN0IG5vZGUgdGFrZXMgVGhldGEoTikgdGltZS4gIFdpdGggdGhlIGJhbGFuY2luZyBzY2hlbWUgb2YgbmV2ZXJcbiAgIGluY3JlYXNpbmcgdGhlIHJhbmsgb2YgYSBub2RlIHVubmVjZXNzYXJpbHksIGl0IHdvdWxkIHRha2UgTyhsb2cgTikuXG4qKVxudHlwZSAnYSByb290ID1cbiAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgOyBtdXRhYmxlIHJhbmsgOiBpbnRcbiAgfVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgbm9kZSA6ICdhIG5vZGUgfVxuXG5hbmQgJ2Egbm9kZSA9XG4gIHwgSW5uZXIgb2YgJ2EgdFxuICAoKiBbSW5uZXIgeF0gaXMgYSBub2RlIHdob3NlIHBhcmVudCBpcyBbeF0uICopXG4gIHwgUm9vdCBvZiAnYSByb290XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggPVxuICAgIG1hdGNoIHQubm9kZSB3aXRoXG4gICAgfCBJbm5lciB0IC0+IGxvb3AgdCAoZGVwdGggKyAxKVxuICAgIHwgUm9vdCByIC0+IGFzc2VydCAoZGVwdGggPD0gci5yYW5rKVxuICBpblxuICBsb29wIHQgMFxuOztcblxubGV0IGNyZWF0ZSB2ID0geyBub2RlID0gUm9vdCB7IHZhbHVlID0gdjsgcmFuayA9IDAgfSB9XG5cbigqIGludmFyaWFudHM6XG4gICBbaW5uZXIubm9kZV0gPSBbaW5uZXJfbm9kZV0gPSBbSW5uZXIgdF0uXG4gICBbZGVzY2VuZGFudHNdIGFyZSB0aGUgcHJvcGVyIGRlc2NlbmRhbnRzIG9mIFtpbm5lcl0gd2UndmUgdmlzaXRlZC5cbiopXG5sZXQgcmVjIGNvbXByZXNzIHQgfmlubmVyX25vZGUgfmlubmVyIH5kZXNjZW5kYW50cyA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+XG4gICAgKCogdCBpcyB0aGUgcm9vdCBvZiB0aGUgdHJlZS5cbiAgICAgICBSZS1wb2ludCBhbGwgZGVzY2VuZGFudHMgZGlyZWN0bHkgdG8gaXQgYnkgc2V0dGluZyB0aGVtIHRvIFtJbm5lciB0XS5cbiAgICAgICBOb3RlOiB3ZSBkb24ndCByZS1wb2ludCBbaW5uZXJdIGFzIGl0IGFscmVhZHkgcG9pbnRzIHRoZXJlLiAqKVxuICAgIExpc3QuaXRlciBkZXNjZW5kYW50cyB+ZjooZnVuIHQgLT4gdC5ub2RlIDwtIGlubmVyX25vZGUpO1xuICAgIHQsIHJcbiAgfCBJbm5lciB0JyBhcyBub2RlIC0+XG4gICAgY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6KGlubmVyIDo6IGRlc2NlbmRhbnRzKVxuOztcblxubGV0IHJlcHJlc2VudGF0aXZlIHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPiB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPiBjb21wcmVzcyB0JyB+aW5uZXJfbm9kZTpub2RlIH5pbm5lcjp0IH5kZXNjZW5kYW50czpbXVxuOztcblxubGV0IHJvb3QgdCA9XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCByIC0+XG4gICAgKCogYXZvaWQgdHVwbGUgYWxsb2NhdGlvbiBpbiB0aGUgZmFzdCBwYXRoICopXG4gICAgclxuICB8IF8gLT4gc25kIChyZXByZXNlbnRhdGl2ZSB0KVxuOztcblxubGV0IHJhbmsgdCA9IChyb290IHQpLnJhbmtcbmxldCBnZXQgdCA9IChyb290IHQpLnZhbHVlXG5sZXQgc2V0IHQgdiA9IChyb290IHQpLnZhbHVlIDwtIHZcbmxldCBzYW1lX2NsYXNzIHQxIHQyID0gcGh5c19lcXVhbCAocm9vdCB0MSkgKHJvb3QgdDIpXG5cbmxldCB1bmlvbiB0MSB0MiA9XG4gIGxldCB0MSwgcjEgPSByZXByZXNlbnRhdGl2ZSB0MSBpblxuICBsZXQgdDIsIHIyID0gcmVwcmVzZW50YXRpdmUgdDIgaW5cbiAgaWYgcGh5c19lcXVhbCByMSByMlxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuMSA9IHIxLnJhbmsgaW5cbiAgICBsZXQgbjIgPSByMi5yYW5rIGluXG4gICAgaWYgbjEgPCBuMlxuICAgIHRoZW4gdDEubm9kZSA8LSBJbm5lciB0MlxuICAgIGVsc2UgKFxuICAgICAgdDIubm9kZSA8LSBJbm5lciB0MTtcbiAgICAgIGlmIG4xID0gbjIgdGhlbiByMS5yYW5rIDwtIHIxLnJhbmsgKyAxKSlcbjs7XG5cbmxldCBpc19jb21wcmVzc2VkIHQgPVxuICBpbnZhcmlhbnQgaWdub3JlIHQ7XG4gIG1hdGNoIHQubm9kZSB3aXRoXG4gIHwgUm9vdCBfIC0+IHRydWVcbiAgfCBJbm5lciB0IC0+XG4gICAgKG1hdGNoIHQubm9kZSB3aXRoXG4gICAgIHwgUm9vdCBfIC0+IHRydWVcbiAgICAgfCBJbm5lciBfIC0+IGZhbHNlKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGlzX2NvbXByZXNzZWQgPSBpc19jb21wcmVzc2VkXG4gIGxldCByYW5rID0gcmFua1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRG91Ymx5X2xpbmtlZF9pbnRmXG5cbigqIElOVkFSSUFOVDogVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIGEgbGlzdCBpcyBtdXRhdGVkIGR1cmluZyBhIHBlbmRpbmcgaXRlcmF0aW9uLlxuXG4gICBUaGlzIGludmFyaWFudCBpcyBndWFyYW50ZWVkIGJ5IHRoZSBIZWFkZXIgYW5kIEVsdCBtb2R1bGVzIGluIGNvbmp1bmN0aW9uLiAgQWxsXG4gICBkb3duc3RyZWFtIGNvZGUgaW4gdGhpcyBtb2R1bGUgbmVlZCBub3QgYmUgY29uY2VybmVkIHdpdGggdGhpcyBpbnZhcmlhbnQuICopXG5leGNlcHRpb24gQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uXG5cbmxldCBwaHlzX2VxdWFsID0gKCA9PSApXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGluY3JfbGVuZ3RoIDogYnk6aW50IC0+IHQgLT4gdW5pdFxuICB2YWwgY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIDogdCAtPiB1bml0XG5cbiAgKCogVW5mb3J0dW5hdGUsIGJ1dCBieSBzcGVjaWFsaXppbmcgW3dpdGhfaXRlcmF0aW9uXSBmb3IgZGlmZmVyZW50IGFyaXRpZXMsIGEgbGFyZ2VcbiAgICAgYW1vdW50IG9mIGFsbG9jYXRpb24gZHVyaW5nIGZvbGRzIGFuZCBpdGVyYXRpb25zIGlzIGF2b2lkZWQuXG5cbiAgICAgVGhlIG9yaWdpbmFsIHR5cGUgb2YgW3dpdGhfaXRlcmF0aW9uXSB3YXNcbiAgICAgW3ZhbCB3aXRoX2l0ZXJhdGlvbiA6IHQgLT4gKHVuaXQgLT4gJ2EpIC0+ICdhXVxuXG4gICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW5cbiAgICAge1tcbiAgICAgICBsZXQgeCA9IGUgaW5cbiAgICAgICBsZXQgZiAoKSA9IGcgeCBpblxuICAgICAgIGYgKClcbiAgICAgXX1cbiAgICAgYW5kXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgeCA9IGcgeCBpblxuICAgICAgIGYgeFxuICAgICBdfVxuICAgICBpcyB0aGF0IGluIHRoZSBmaXJzdCBjYXNlIHRoZSBjbG9zdXJlIGZvciBbZl0gY29udGFpbnMgYSBwb2ludGVyIHRvIFt4XSxcbiAgICAgYW5kIGluIHRoZSBzZWNvbmQgY2FzZSBpdCBkb2Vzbid0LiBBIGNsb3N1cmUgd2l0aG91dCBwb2ludGVycyB0byBlbmNsb3NpbmdcbiAgICAgZW52aXJvbm1lbnQgaXMgaW1wbGVtZW50ZWQgYXMgYSBuYWtlZCBmdW5jdGlvbiBwb2ludGVyLCBzbyB3ZSBkb24ndFxuICAgICBhbGxvY2F0ZSBhdCBhbGwuXG5cbiAgICAgRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBtYWtlIHN1cmUgbm90IHRvIGNhbGwgW1Jlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IC4uLildXG4gICAgIGluc2lkZSBbd2l0aF9pdGVyYXRpb25dIGFuZCBkbyBhbiBleHBsaWNpdCBtYXRjaCBzdGF0ZW1lbnQgaW5zdGVhZC4gKilcblxuICB2YWwgd2l0aF9pdGVyYXRpb25fMmxcbiAgICA6ICB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2JbQGxvY2FsXSlcbiAgICAtPiAoKCdhIC0+ICgnYltAbG9jYWxdKSAtPiAnYylbQGxvY2FsXSlcbiAgICAtPiAnY1xuXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl8zIDogdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QpIC0+ICdkXG4gIHZhbCB3aXRoX2l0ZXJhdGlvbl80IDogdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UpIC0+ICdlXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzRsXG4gICAgOiAgdFxuICAgIC0+ICgnYVtAbG9jYWxdKVxuICAgIC0+ICgnYltAbG9jYWxdKVxuICAgIC0+ICdjXG4gICAgLT4gJ2RcbiAgICAtPiAoKCgnYVtAbG9jYWxdKSAtPiAoJ2JbQGxvY2FsXSkgLT4gJ2MgLT4gJ2QgLT4gJ2UpW0Bsb2NhbF0pXG4gICAgLT4gJ2VcblxuICB2YWwgbWVyZ2UgOiB0IC0+IHQgLT4gWyBgU2FtZV9hbHJlYWR5IHwgYE1lcmdlZCBdXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBzID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgO1xuICAgICAgbXV0YWJsZSBwZW5kaW5nX2l0ZXJhdGlvbnMgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSB0ID0gcyBVbmlvbl9maW5kLnRcblxuICBsZXQgY3JlYXRlICgpID0gVW5pb25fZmluZC5jcmVhdGUgeyBsZW5ndGggPSAxOyBwZW5kaW5nX2l0ZXJhdGlvbnMgPSAwIH1cbiAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gVW5pb25fZmluZC5zYW1lX2NsYXNzIHQxIHQyXG4gIGxldCBsZW5ndGggdCA9IChVbmlvbl9maW5kLmdldCB0KS5sZW5ndGhcblxuICBsZXQgdW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0ID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpZiBzLnBlbmRpbmdfaXRlcmF0aW9ucyA+IDAgdGhlbiByYWlzZSBBdHRlbXB0X3RvX211dGF0ZV9saXN0X2R1cmluZ19pdGVyYXRpb24gZWxzZSBzXG4gIDs7XG5cbiAgbGV0IGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0ID1cbiAgICBpZ25vcmUgKHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA6IHMpXG4gIDs7XG5cbiAgbGV0IGluY3JfbGVuZ3RoIH5ieTpuIHQgPVxuICAgIGxldCBzID0gdW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0IGluXG4gICAgcy5sZW5ndGggPC0gcy5sZW5ndGggKyBuXG4gIDs7XG5cbiAgKCogQ2FyZSBpcyB0YWtlbiBub3QgdG8gYWxsb2NhdGUgaW4gW3dpdGhfaXRlcmF0aW9uXypdLCBzaW5jZSBpdCBpcyBjYWxsZWQgZXZlcnkgc2Vjb25kXG4gICAgIGJ5IFtldmVyeV9zZWNvbmRdIGluIFt3cml0ZXIwLm1sXSAqKVxuXG4gIGxldCBpbmNyX3BlbmRpbmdfaXRlcnMgcyA9IHMucGVuZGluZ19pdGVyYXRpb25zIDwtIHMucGVuZGluZ19pdGVyYXRpb25zICsgMVxuICBsZXQgZGVjcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyAtIDFcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fMmwgdCBhIChiIFtAbG9jYWxdKSBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzMgdCBhIGIgYyBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fNCB0IGEgYiBjIGQgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyBkIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgcmFpc2UgZXhuXG4gICAgfCByIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJcbiAgOztcblxuICBsZXQgd2l0aF9pdGVyYXRpb25fNGwgdCAoYSBbQGxvY2FsXSkgKGIgW0Bsb2NhbF0pIGMgZCBmID1cbiAgICBsZXQgcyA9IFVuaW9uX2ZpbmQuZ2V0IHQgaW5cbiAgICBpbmNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICBtYXRjaCBmIGEgYiBjIGQgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCBtZXJnZSAodDEgOiB0KSB0MiA9XG4gICAgaWYgVW5pb25fZmluZC5zYW1lX2NsYXNzIHQxIHQyXG4gICAgdGhlbiBgU2FtZV9hbHJlYWR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbjEgPSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSkubGVuZ3RoIGluXG4gICAgICBsZXQgbjIgPSAodW5pb25fZmluZF9nZXRfX2NoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MikubGVuZ3RoIGluXG4gICAgICB3aXRoX2l0ZXJhdGlvbl80IHQxIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgd2l0aF9pdGVyYXRpb25fNCB0MiB0MSB0MiBuMSBuMiAoZnVuIHQxIHQyIG4xIG4yIC0+XG4gICAgICAgICAgVW5pb25fZmluZC51bmlvbiB0MSB0MjtcbiAgICAgICAgICBVbmlvbl9maW5kLnNldCB0MSB7IGxlbmd0aCA9IG4xICsgbjI7IHBlbmRpbmdfaXRlcmF0aW9ucyA9IDAgfSkpO1xuICAgICAgYE1lcmdlZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgRWx0IDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBoZWFkZXIgOiAnYSB0IC0+IEhlYWRlci50XG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBjcmVhdGUgOiAnYSAtPiAnYSB0XG4gIHZhbCB2YWx1ZSA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5saW5rIDogJ2EgdCAtPiB1bml0XG4gIHZhbCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9hZnRlciA6ICdhIHQgLT4gJ2EgdCAtPiB1bml0XG4gIHZhbCBpbnNlcnRfYWZ0ZXIgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIGluc2VydF9iZWZvcmUgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHVubGlua19iZWZvcmUgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG5leHQgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIHByZXYgOiAnYSB0IC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHByZXYgOiAnYSB0XG4gICAgOyBtdXRhYmxlIG5leHQgOiAnYSB0XG4gICAgOyBtdXRhYmxlIGhlYWRlciA6IEhlYWRlci50XG4gICAgfVxuXG4gIGxldCBlcXVhbCA9IHBoeXNfZXF1YWxcbiAgbGV0IG5leHQgdCA9IHQubmV4dFxuICBsZXQgcHJldiB0ID0gdC5wcmV2XG4gIGxldCBoZWFkZXIgdCA9IHQuaGVhZGVyXG5cbiAgbGV0IGNyZWF0ZV9hdXggdiBoZWFkZXIgPVxuICAgIGxldCByZWMgdCA9IHsgdmFsdWUgPSB2OyBwcmV2ID0gdDsgbmV4dCA9IHQ7IGhlYWRlciB9IGluXG4gICAgdFxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IGVxdWFsIHQgdC5wcmV2XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBzZXhwX29mX2EgdC52YWx1ZVxuICBsZXQgY3JlYXRlIHYgPSBjcmVhdGVfYXV4IHYgKEhlYWRlci5jcmVhdGUgKCkpXG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICBsZXQgc2V0IHQgdiA9IHQudmFsdWUgPC0gdlxuXG4gICgqXG4gICAgIFtzcGxpdF9vcl9zcGxpY2VdIGlzIHN1ZmZpY2llbnQgYXMgdGhlIGxvbmUgcHJpbWl0aXZlIGZvclxuICAgICBhY2NvbXBsaXNoaW5nIGFsbCBwb2ludGVyIHVwZGF0ZXMgb24gY3ljbGljIGxvb3BzIG9mIGxpc3Qgbm9kZXMuXG4gICAgIEl0IHRha2VzIHR3byBcImdhcHNcIiBiZXR3ZWVuIGFkamFjZW50IGxpbmtlZCBsaXN0IG5vZGVzLiAgSWYgdGhlIGdhcHNcbiAgICAgcG9pbnQgaW50byB0aGUgc2FtZSBsaXN0LCB0aGUgcmVzdWx0IGlzIHRoYXQgaXQgd2lsbCBiZSBzcGxpdCBpbnRvXG4gICAgIHR3byBsaXN0cyBhZnRlcndhcmRzLiAgSWYgdGhlIGdhcHMgcG9pbnQgaW50byBkaWZmZXJlbnQgbGlzdHMsIHRoZVxuICAgICByZXN1bHQgaXMgdGhhdCB0aGV5IHdpbGwgYmUgc3BsaWNlZCB0b2dldGhlciBpbnRvIG9uZSBsaXN0IGFmdGVyd2FyZHMuXG5cbiAgICAge3ZcbiAgICAgICBCZWZvcmUgICAgICAgICAgICAgICAgICAgICAgQWZ0ZXJcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQSB8ICA8LS0+ICB8IEIgICAgICAgICAgICAgICBBIHwgIDwtLS0gICAtLS0+ICB8IEJcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICBcXCAvICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAvIFxcICAgICAgKy0tLS0tXG4gICAgICAgICAgICAgIEMgfCAgPC0tPiAgfCBEICAgICAgICAgICAgICAgQyB8ICA8LS0tICAgLS0tPiAgfCBEXG4gICAgICAgICAgIC0tLS0tKyAgICAgICAgKy0tLS0tICAgICAgICAgLS0tLS0rICAgICAgICAgICAgICAgKy0tLS0tXG4gICAgIHZ9ICopXG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2UgfnByZXYxOmEgfm5leHQxOmIgfnByZXYyOmMgfm5leHQyOmQgPVxuICAgIGEubmV4dCA8LSBkO1xuICAgIGQucHJldiA8LSBhO1xuICAgIGMubmV4dCA8LSBiO1xuICAgIGIucHJldiA8LSBjXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VcbiAgICAgIH5uZXh0MTp0MS5uZXh0XG4gICAgICB+cHJldjE6dDEubmV4dC5wcmV2XG4gICAgICB+bmV4dDI6dDIubmV4dFxuICAgICAgfnByZXYyOnQyLm5leHQucHJldlxuICA7O1xuXG4gIGxldCB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfnByZXYxOnQxLnByZXZcbiAgICAgIH5uZXh0MTp0MS5wcmV2Lm5leHRcbiAgICAgIH5wcmV2Mjp0Mi5wcmV2XG4gICAgICB+bmV4dDI6dDIucHJldi5uZXh0XG4gIDs7XG5cbiAgbGV0IGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDIgPVxuICAgIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEuaGVhZGVyO1xuICAgIGlmIG5vdCAoSGVhZGVyLmVxdWFsIHQxLmhlYWRlciB0Mi5oZWFkZXIpXG4gICAgdGhlbiBIZWFkZXIuY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyLmhlYWRlclxuICA7O1xuXG4gICgqIFdlIHJlZGVmaW5lIHNhZmUgdmVyc2lvbnMgZm9yIGV4cG9ydCAqKVxuICBsZXQgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDJcbiAgOztcblxuICBsZXQgc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MiA9XG4gICAgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MjtcbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0MSB0MlxuICA7O1xuXG4gIGxldCBpbnNlcnRfYmVmb3JlIHQgdiA9XG4gICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieToxO1xuICAgIGxldCBub2RlID0gY3JlYXRlX2F1eCB2IHQuaGVhZGVyIGluXG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdCBub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgdiA9XG4gICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieToxO1xuICAgIGxldCBub2RlID0gY3JlYXRlX2F1eCB2IHQuaGVhZGVyIGluXG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBkdW1teV9oZWFkZXIgPSBIZWFkZXIuY3JlYXRlICgpXG5cbiAgbGV0IHVubGlua19iZWZvcmUgdCA9XG4gICAgbGV0IG5vZGUgPSB0LnByZXYgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9iZWZvcmUgdCBub2RlO1xuICAgICAgbm9kZS5oZWFkZXIgPC0gZHVtbXlfaGVhZGVyO1xuICAgICAgbm9kZSlcbiAgOztcblxuICBsZXQgdW5saW5rX2FmdGVyIHQgPVxuICAgIGxldCBub2RlID0gdC5uZXh0IGluXG4gICAgaWYgaXNfc2luZ2xldG9uIG5vZGVcbiAgICB0aGVuIG5vZGVcbiAgICBlbHNlIChcbiAgICAgIEhlYWRlci5pbmNyX2xlbmd0aCB0LmhlYWRlciB+Ynk6KC0xKTtcbiAgICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdCBub2RlO1xuICAgICAgbm9kZS5oZWFkZXIgPC0gZHVtbXlfaGVhZGVyO1xuICAgICAgbm9kZSlcbiAgOztcblxuICBsZXQgdW5saW5rIHQgPSBpZ25vcmUgKHVubGlua19hZnRlciB0LnByZXYgOiBfIHQpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgRWx0LnQgb3B0aW9uIHJlZlxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaGVhZCAtPlxuICAgIGxldCBoZWFkZXIgPSBFbHQuaGVhZGVyIGhlYWQgaW5cbiAgICBsZXQgcmVjIGxvb3AgbiBlbHQgPVxuICAgICAgbGV0IG5leHRfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICBsZXQgcHJldl9lbHQgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgIGFzc2VydCAoRWx0LmVxdWFsIGVsdCAoRWx0LnByZXYgbmV4dF9lbHQpKTtcbiAgICAgIGFzc2VydCAoRWx0LmVxdWFsIGVsdCAoRWx0Lm5leHQgcHJldl9lbHQpKTtcbiAgICAgIGFzc2VydCAoSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGVsdCkgaGVhZGVyKTtcbiAgICAgIGludmFyaWFudF9hIChFbHQudmFsdWUgZWx0KTtcbiAgICAgIGlmIEVsdC5lcXVhbCBuZXh0X2VsdCBoZWFkIHRoZW4gbiBlbHNlIGxvb3AgKG4gKyAxKSBuZXh0X2VsdFxuICAgIGluXG4gICAgbGV0IGxlbiA9IGxvb3AgMSBoZWFkIGluXG4gICAgYXNzZXJ0IChsZW4gPSBIZWFkZXIubGVuZ3RoIGhlYWRlcilcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSByZWYgTm9uZVxubGV0IGVxdWFsICh0IDogXyB0KSB0JyA9IHBoeXNfZXF1YWwgdCB0J1xuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gY3JlYXRlICgpXG4gIHwgeCA6OiB4cyAtPlxuICAgIGxldCBmaXJzdCA9IEVsdC5jcmVhdGUgeCBpblxuICAgIGxldCBfbGFzdCA9IExpc3QuZm9sZCB4cyB+aW5pdDpmaXJzdCB+ZjooZnVuIGEgYiAtPiBFbHQuaW5zZXJ0X2FmdGVyIGEgYikgaW5cbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgb2ZfYXJyYXkgPSBmdW5jdGlvblxuICB8IFt8fF0gLT4gY3JlYXRlICgpXG4gIHwgYXJyIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSBhcnIuKDApIGluXG4gICAgbGV0IHJlYyBsb29wIGFyciBlbHQgaSA9XG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGFyciB0aGVuIGxvb3AgYXJyIChFbHQuaW5zZXJ0X2FmdGVyIGVsdCBhcnIuKGkpKSAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIGFyciBmaXJzdCAxO1xuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgMCAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIGkgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAxIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNGwgKEVsdC5oZWFkZXIgZmlyc3QpIGYgYSBpbml0IGZpcnN0IChmdW4gZiBhIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGEgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgZm9sZGlfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGEgYWNjIGVsdCBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIG5leHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgKGkgKyAxKSBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIDAgYSBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGl0ZXJfZWx0IHQgfmYgPSBmb2xkX2VsdF8xIHQgfmluaXQ6KCkgfmY6KGZ1biBmICgpIGVsdCAtPiBmIGVsdCkgZlxubGV0IGl0ZXJpX2VsdCB0IH5mID0gZm9sZGlfZWx0IHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIGVsdCAtPiBmIGkgZWx0KVxuXG5vcGVuIFdpdGhfcmV0dXJuXG5cbmxldCBmaW5kX2VsdCB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgZm9sZF9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBmICgpIGVsdCAtPlxuICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiByLnJldHVybiAoU29tZSBlbHQpKTtcbiAgICBOb25lKVxuOztcblxubGV0IGZpbmRpX2VsdCB0IH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgZm9sZGlfZWx0XzEgdCBmIH5pbml0OigpIH5mOihmdW4gaSBmICgpIGVsdCAtPlxuICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIChpLCBlbHQpKSk7XG4gICAgTm9uZSlcbjs7XG5cbigqIHRoaXMgZnVuY3Rpb24gaXMgbGFtYmRhIGxpZnRlZCBmb3IgcGVyZm9ybWFuY2UsIHRvIG1ha2UgZGlyZWN0IHJlY3Vyc2l2ZSBjYWxscyBpbnN0ZWFkXG4gICBvZiBjYWxscyB0aHJvdWdoIGl0cyBjbG9zdXJlLiBJdCBhbHNvIGF2b2lkcyB0aGUgaW5pdGlhbCBjbG9zdXJlIGFsbG9jYXRpb24uICopXG5sZXQgcmVjIGl0ZXJfbG9vcCBmaXJzdCBmIGVsdCA9XG4gIGYgKEVsdC52YWx1ZSBlbHQpO1xuICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBpdGVyX2xvb3AgZmlyc3QgZiBuZXh0XG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzJsIChFbHQuaGVhZGVyIGZpcnN0KSBmaXJzdCBmIChmdW4gZmlyc3QgZiAtPlxuICAgICAgaXRlcl9sb29wIGZpcnN0IGYgZmlyc3QpXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBmaXJzdCAtPiBIZWFkZXIubGVuZ3RoIChFbHQuaGVhZGVyIGZpcnN0KVxuOztcblxubGV0IHJlYyBpdGVyaV9sb29wIGZpcnN0IGYgaSBlbHQgPVxuICBmIGkgKEVsdC52YWx1ZSBlbHQpO1xuICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBpdGVyaV9sb29wIGZpcnN0IGYgKGkgKyAxKSBuZXh0XG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8ybCAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJpX2xvb3AgZmlyc3QgZiAwIGZpcnN0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBmb2xkaV9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBpIGYgYWNjIGVsdCAtPiBmIGkgYWNjIChFbHQudmFsdWUgZWx0KSlcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByID0gZm9sZF9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBmIGFjYyBlbHQgLT4gZiBhY2MgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgclxuICAgIDs7XG5cbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGQgPSBDLmZvbGRcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgbWVtID0gQy5tZW1cbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IHVuY2hlY2tlZF9pdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBmIGVsdCA9XG4gICAgICBmIChFbHQudmFsdWUgZWx0KTtcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICBtYXRjaCAhdCB3aXRoXG4gICAgICAoKiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgYmFnIG1heSBoYXZlIGJlZW4gY2hhbmdlZCBieSBbZl0gKilcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGZpcnN0IC0+IGlmIG5vdCAocGh5c19lcXVhbCBmaXJzdCBuZXh0KSB0aGVuIGxvb3AgdCBmIG5leHRcbiAgICBpblxuICAgIGxvb3AgdCBmIGZpcnN0XG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IE9wdGlvbi5pc19ub25lICF0XG5cbigqIG1vcmUgZWZmaWNpZW50IHRoYW4gd2hhdCBDb250YWluZXIuTWFrZSByZXR1cm5zICopXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiAoRWx0LnZhbHVlIHByZXYpIGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkX3JpZ2h0X2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBhY2MgZWx0ID1cbiAgICAgICAgbGV0IHByZXYgPSBFbHQucHJldiBlbHQgaW5cbiAgICAgICAgbGV0IGFjYyA9IGYgcHJldiBhY2MgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBwcmV2IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIGFjYyBwcmV2XG4gICAgICBpblxuICAgICAgbG9vcCBmIGluaXQgZmlyc3QpXG47O1xuXG5sZXQgdG9fbGlzdCB0ID0gZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4geCB0bCAtPiB4IDo6IHRsKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgcyA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIgPVxuICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKEJhc2UuTGlzdC50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbjs7XG5cbmxldCBjb3B5IHQgPSBvZl9saXN0ICh0b19saXN0IHQpXG5sZXQgY2xlYXIgdCA9IHQgOj0gTm9uZVxuXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCB0MSB0MiA9XG4gIG1hdGNoICF0MSwgIXQyIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IDBcbiAgfCBOb25lLCBfIC0+IC0xXG4gIHwgXywgTm9uZSAtPiAxXG4gIHwgU29tZSBmMSwgU29tZSBmMiAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGYxKSBjb21wYXJlX2VsdCBmMSBmMiAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmMikgY29tcGFyZV9lbHQgZjEgZjIgKGZ1biBjb21wYXJlX2VsdCBmMSBmMiAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgY29tcGFyZV9lbHQgZWx0MSBmMSBlbHQyIGYyID1cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2VsdCAoRWx0LnZhbHVlIGVsdDEpIChFbHQudmFsdWUgZWx0MikgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA8PiAwXG4gICAgICAgICAgdGhlbiBjb21wYXJlX3Jlc3VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHQxID0gRWx0Lm5leHQgZWx0MSBpblxuICAgICAgICAgICAgbGV0IG5leHQyID0gRWx0Lm5leHQgZWx0MiBpblxuICAgICAgICAgICAgbWF0Y2ggcGh5c19lcXVhbCBuZXh0MSBmMSwgcGh5c19lcXVhbCBuZXh0MiBmMiB3aXRoXG4gICAgICAgICAgICB8IHRydWUsIHRydWUgLT4gMFxuICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPiAxXG4gICAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiBsb29wIGNvbXBhcmVfZWx0IG5leHQxIGYxIG5leHQyIGYyKVxuICAgICAgICBpblxuICAgICAgICBsb29wIGNvbXBhcmVfZWx0IGYxIGYxIGYyIGYyKSlcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0XG5cbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPVxuICBpZiBwaHlzX2VxdWFsIHNyYyBkc3QgdGhlbiByYWlzZSBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0O1xuICBtYXRjaCAhc3JjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzcmNfaGVhZCAtPlxuICAgIChtYXRjaCAhZHN0IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZHN0IDo9IFNvbWUgc3JjX2hlYWQ7XG4gICAgICAgY2xlYXIgc3JjXG4gICAgIHwgU29tZSBkc3RfaGVhZCAtPlxuICAgICAgIChtYXRjaCBIZWFkZXIubWVyZ2UgKEVsdC5oZWFkZXIgc3JjX2hlYWQpIChFbHQuaGVhZGVyIGRzdF9oZWFkKSB3aXRoXG4gICAgICAgIHwgYFNhbWVfYWxyZWFkeSAtPiByYWlzZSBUcmFuc2Zlcl9zcmNfYW5kX2RzdF9hcmVfc2FtZV9saXN0XG4gICAgICAgIHwgYE1lcmdlZCAtPlxuICAgICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGRzdF9oZWFkIHNyY19oZWFkO1xuICAgICAgICAgIGNsZWFyIHNyYykpXG47O1xuXG5sZXQgbWFwX2lucGxhY2UgdCB+ZiA9IGl0ZXJfZWx0IHQgfmY6KGZ1biBlbHQgLT4gRWx0LnNldCBlbHQgKGYgKEVsdC52YWx1ZSBlbHQpKSlcbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9IGl0ZXJpX2VsdCB0IH5mOihmdW4gaSBlbHQgLT4gRWx0LnNldCBlbHQgKGYgaSAoRWx0LnZhbHVlIGVsdCkpKVxuXG5sZXQgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmUgPVxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4gZWx0IC0+XG4gICAgKG1hdGNoICF0IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBoZWFkIC0+XG4gICAgICAgaWYgRWx0LmVxdWFsIGhlYWQgZWx0XG4gICAgICAgdGhlbiAoXG4gICAgICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIHQgOj0gaWYgRWx0LmVxdWFsIGhlYWQgbmV4dF9lbHQgdGhlbiBOb25lIGVsc2UgU29tZSBuZXh0X2VsdCkpO1xuICAgIEVsdC51bmxpbmsgZWx0KVxuOztcblxubGV0IGZpbHRlcl9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiBlbHRzIGVsc2UgZWx0IDo6IGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcmlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkaV9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGkgZWx0cyBlbHQgLT5cbiAgICAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiBlbHRzIGVsc2UgZWx0IDo6IGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSB0IH5mID1cbiAgbGV0IHRvX3JlbW92ZSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gZWx0cyBlbHQgLT5cbiAgICAgICAgIG1hdGNoIGYgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiBpIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZWx0IDo6IGVsdHNcbiAgICAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICAgICBFbHQuc2V0IGVsdCB2YWx1ZTtcbiAgICAgICAgICAgZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5leGNlcHRpb24gRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG5cbmxldCBmaXJzdF9lbHQgdCA9ICF0XG5sZXQgbGFzdF9lbHQgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnByZXYgIXRcbmxldCBmaXJzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGZpcnN0X2VsdCB0KVxubGV0IGxhc3QgdCA9IE9wdGlvbi5tYXAgfmY6RWx0LnZhbHVlIChsYXN0X2VsdCB0KVxubGV0IGZpcnN0X2V4biAodCA6ICdhIHQpID0gT3B0aW9uLnZhbHVlX2V4biAhdCB8PiBFbHQudmFsdWVcbmxldCBsYXN0X2V4biAodCA6ICdhIHQpID0gT3B0aW9uLnZhbHVlX2V4biAhdCB8PiBFbHQucHJldiB8PiBFbHQudmFsdWVcblxubGV0IGlzX2ZpcnN0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaXNfbGFzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICAgIEVsdC5lcXVhbCBlbHQgbGFzdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG1lbV9lbHQgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG47O1xuXG5sZXQgcHJldiB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBOb25lXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIFNvbWUgKEVsdC5wcmV2IGVsdClcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG5leHQgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIEVsdC5lcXVhbCBlbHQgbGFzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQubmV4dCBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYWZ0ZXIgdCBlbHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYWZ0ZXIgZWx0IHZcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9iZWZvcmUgdCBlbHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiAoXG4gICAgICBsZXQgbmV3X2VsdCA9IEVsdC5pbnNlcnRfYmVmb3JlIGZpcnN0IHYgaW5cbiAgICAgIHQgOj0gU29tZSBuZXdfZWx0O1xuICAgICAgbmV3X2VsdClcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0Lmluc2VydF9iZWZvcmUgZWx0IHZcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGluc2VydF9lbXB0eSB0IHYgPVxuICBsZXQgbmV3X2VsdCA9IEVsdC5jcmVhdGUgdiBpblxuICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgbmV3X2VsdFxuOztcblxubGV0IGluc2VydF9sYXN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+IEVsdC5pbnNlcnRfYmVmb3JlIGZpcnN0IHZcbjs7XG5cbmxldCBpbnNlcnRfZmlyc3QgdCB2ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5zZXJ0X2VtcHR5IHQgdlxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2VsdCA9IEVsdC5pbnNlcnRfYmVmb3JlIGZpcnN0IHYgaW5cbiAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICBuZXdfZWx0XG47O1xuXG5sZXQgcmVtb3ZlX2xhc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQudW5saW5rX2JlZm9yZSBmaXJzdCBpblxuICAgIGlmIEVsdC5lcXVhbCBmaXJzdCBsYXN0IHRoZW4gdCA6PSBOb25lO1xuICAgIFNvbWUgKEVsdC52YWx1ZSBsYXN0KVxuOztcblxubGV0IHJlbW92ZV9maXJzdCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgc2Vjb25kID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICBFbHQudW5saW5rIGZpcnN0O1xuICAgIHQgOj0gaWYgRWx0LmVxdWFsIGZpcnN0IHNlY29uZCB0aGVuIE5vbmUgZWxzZSBTb21lIHNlY29uZDtcbiAgICBTb21lIChFbHQudmFsdWUgZmlyc3QpXG47O1xuXG5sZXQgcmVtb3ZlIHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGlmIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICB0aGVuIGlnbm9yZSAocmVtb3ZlX2ZpcnN0IHQgOiBfIG9wdGlvbilcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gRWx0LnVubGluayBlbHRcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgaWYgZiAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHRoZW4gaW5zZXJ0X2xhc3QgbmV3X3QgKEVsdC52YWx1ZSBlbHQpIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgbmV3X3QgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIG5ld190IGZpcnN0IChmdW4gZiBuZXdfdCBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgaSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHRoZW4gaW5zZXJ0X2xhc3QgbmV3X3QgKEVsdC52YWx1ZSBlbHQpIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIG5ld190IGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgbmV3X3QgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggZiBpIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IHBhcnRpdGlvbl90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIGluc2VydF9sYXN0IChpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHQxIGVsc2UgdDIpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiB0MSB0MiBmaXJzdCBmaXJzdCkpO1xuICB0MSwgdDJcbjs7XG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIHQxIGVsc2UgdDIpIChFbHQudmFsdWUgZWx0KVxuICAgICAgICAgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcCB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCAoZiAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIGkgdDEgdDIgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCAoZiBpIChFbHQudmFsdWUgZWx0KSA6IChfLCBfKSBFaXRoZXIudCkgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDEgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbiAgICAgICAgICB8IFNlY29uZCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MiB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5leGNlcHRpb24gSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvclxuXG5sZXQgbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICBpZiBFbHQuZXF1YWwgZmlyc3QgZWx0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICB0IDo9IFNvbWUgYWZ0ZXJfZWx0O1xuICAgICAgICAgICAgYWZ0ZXJfZWx0KVxuICAgICAgICAgIGVsc2UgZmlyc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogc3BsaWNlIFtlbHRdIGluIGJlZm9yZSBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBhbmNob3IgZWx0O1xuICAgICAgICBpZiBFbHQuZXF1YWwgZmlyc3QgYW5jaG9yIHRoZW4gdCA6PSBTb21lIGVsdClcbiAgICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0KVxuICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG1vdmVfdG9fZnJvbnQgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+IGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBmaXJzdCkgdGhlbiBtb3ZlX2JlZm9yZSB0IGVsdCB+YW5jaG9yOmZpcnN0XG47O1xuXG5sZXQgbW92ZV9hZnRlciB0IGVsdCB+YW5jaG9yID1cbiAgaWYgRWx0LmVxdWFsIGFuY2hvciBlbHQgdGhlbiByYWlzZSBJbnZhbGlkX21vdmVfX2VsdF9lcXVhbHNfYW5jaG9yO1xuICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgYW5jaG9yKSAoRWx0LmhlYWRlciBlbHQpXG4gIHRoZW4gKFxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiB1bmxpbmsgW2VsdF0gKilcbiAgICAgICAgbGV0IGFmdGVyX2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSBlbHQgYWZ0ZXJfZWx0O1xuICAgICAgICBpZiBFbHQuZXF1YWwgZmlyc3QgZWx0IHRoZW4gdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgKCogc3BsaWNlIFtlbHRdIGluIGFmdGVyIFthbmNob3JdICopXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgYW5jaG9yIGVsdClcbiAgICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0KVxuICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IG1vdmVfdG9fYmFjayB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgaWYgbm90IChFbHQuZXF1YWwgZWx0IGxhc3QpIHRoZW4gbW92ZV9hZnRlciB0IGVsdCB+YW5jaG9yOmxhc3Rcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fbGlzdCB0IHw+IFNlcXVlbmNlLm9mX2xpc3RcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuU2V4cC50ID1cbiAgICAgIHwgQXRvbSBvZiBzdHJpbmdcbiAgICAgIHwgTGlzdCBvZiB0IGxpc3RcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgIGxldCB0X29mX3NleHAgPSBTZXhwbGliLlNleHAudF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCA9IFNleHBsaWIuU2V4cC5zZXhwX29mX3RcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxuaW5jbHVkZSAoXG4gIEJhc2UuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbmluY2x1ZGUgKFxuICBTZXhwbGliLlNleHAgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgU2V4cGxpYi5TZXhwXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICB0eXBlIHNleHAgPSBCYXNlLlNleHAudCA9XG4gICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgIHwgTGlzdCBvZiB0IGxpc3RcbmVuZFxuXG5tb2R1bGUgU2V4cF9tYXliZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCB0ICogRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgUmVzdWx0Lk9rIGEgLT4gc2V4cF9vZl9hIGFcbiAgICB8IFJlc3VsdC5FcnJvciAoc2V4cCwgZXJyKSAtPlxuICAgICAgTGlzdCBbIEF0b20gXCJzZXhwX3BhcnNlX2Vycm9yXCI7IHNleHA7IEVycm9yLnNleHBfb2ZfdCBlcnIgXVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgTGlzdCBbIEF0b20gXCJzZXhwX3BhcnNlX2Vycm9yXCI7IHNleHA7IF8gXSB8IHNleHAgLT5cbiAgICAgICh0cnkgUmVzdWx0Lk9rIChhX29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgIHwgZXhuIC0+IFJlc3VsdC5FcnJvciAoc2V4cCwgRXJyb3Iub2ZfZXhuIGV4bikpXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIChncmFtbWFyIDogXyBTZXhwbGliLlNleHBfZ3JhbW1hci50KSA6IF8gdCBTZXhwbGliLlNleHBfZ3JhbW1hci50ID1cbiAgICB7IHVudHlwZWQgPSBVbmlvbiBbIGdyYW1tYXIudW50eXBlZDsgQmFzZS5TZXhwLnRfc2V4cF9ncmFtbWFyLnVudHlwZWQgXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFdpdGhfdGV4dCA9IHN0cnVjdFxuICBvcGVuIFJlc3VsdC5FeHBvcnRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgdmFsdWUgOiAnYVxuICAgIDsgdGV4dCA6IHN0cmluZ1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gQXRvbSB0LnRleHRcblxuICBsZXQgb2ZfdGV4dCB2YWx1ZV9vZl9zZXhwID8oZmlsZW5hbWUgPSBcIlwiKSB0ZXh0ID1cbiAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IG9mX3N0cmluZ19jb252IHRleHQgdmFsdWVfb2Zfc2V4cCkgd2l0aFxuICAgIHwgT2sgKGBSZXN1bHQgdmFsdWUpIC0+IE9rIHsgdmFsdWU7IHRleHQgfVxuICAgIHwgRXJyb3IgXyBhcyBlcnIgLT4gZXJyXG4gICAgfCBPayAoYEVycm9yIChleG4sIGFubm90YXRlZCkpIC0+XG4gICAgICBFcnJvciAoRXJyb3Iub2ZfZXhuIChBbm5vdGF0ZWQuZ2V0X2NvbnZfZXhuIGFubm90YXRlZCB+ZmlsZTpmaWxlbmFtZSB+ZXhjOmV4bikpXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IF8gLT5cbiAgICAgIG9mX3NleHBfZXJyb3JcbiAgICAgICAgXCJXaXRoX3RleHQudCBzaG91bGQgYmUgc3RvcmVkIGFzIGFuIGF0b20sIGJ1dCBpbnN0ZWFkIGEgbGlzdCB3YXMgZm91bmQuXCJcbiAgICAgICAgc2V4cFxuICAgIHwgQXRvbSB0ZXh0IC0+IG9mX3RleHQgYV9vZl9zZXhwIHRleHQgfD4gT3JfZXJyb3Iub2tfZXhuXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIF8gPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgQmFzZS5TdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgbGV0IHRleHQgdCA9IHQudGV4dFxuICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcblxuICBsZXQgb2ZfdmFsdWUgc2V4cF9vZl92YWx1ZSB2YWx1ZSA9XG4gICAgbGV0IHRleHQgPSBzZXhwX29mX3ZhbHVlIHZhbHVlIHw+IHRvX3N0cmluZ19odW0gaW5cbiAgICB7IHZhbHVlOyB0ZXh0IH1cbiAgOztcbmVuZFxuXG50eXBlICdhIG5vX3JhaXNlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG5sZXQgc2V4cF9vZl9ub19yYWlzZSBzZXhwX29mX2EgYSA9XG4gIHRyeSBzZXhwX29mX2EgYSB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKHRyeSBMaXN0IFsgQXRvbSBcImZhaWx1cmUgYnVpbGRpbmcgc2V4cFwiOyBzZXhwX29mX2V4biBleG4gXSB3aXRoXG4gICAgIHwgXyAtPiBBdG9tIFwiY291bGQgbm90IGJ1aWxkIHNleHAgZm9yIGV4biByYWlzZWQgd2hlbiBidWlsZGluZyBzZXhwIGZvciB2YWx1ZVwiKVxuOztcblxuaW5jbHVkZSBDb21wYXJhYmxlLkV4dGVuZCAoQmFzZS5TZXhwKSAoQmFzZS5TZXhwKVxuXG5sZXQgb2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjdXJzaXZlbHkgb2Zfc2V4cCBzZXhwID1cbiAgbGV0IHIgPSBTZXhwbGliLkNvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyBpblxuICBsZXQgcHJldiA9ICFyIGluXG4gIEV4bi5wcm90ZWN0XG4gICAgfmZpbmFsbHk6KGZ1biAoKSAtPiByIDo9IHByZXYpXG4gICAgfmY6KGZ1biAoKSAtPlxuICAgICAgciA6PSBmYWxzZTtcbiAgICAgIG9mX3NleHAgc2V4cClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc2V4cFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V4cFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V4cFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEhhc2hfcXVldWVfaW50ZlxuXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIFNfYmFja2VuZCA9IFNfYmFja2VuZFxuXG5tb2R1bGUgTWFrZV9iYWNrZW5kIChUYWJsZSA6IEhhc2h0YmxfaW50Zi5IYXNodGJsKSA6IFNfYmFja2VuZCA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBCYWNrZW5kID1cbiAgICBTMVxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9hcmcgOj0gJ2tleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICB3aXRoIHR5cGUgJ2tleSBjcmVhdGVfa2V5IDo9ICdrZXlcblxuICBtb2R1bGUgQmFja2VuZCA6IEJhY2tlbmQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5X3ZhbHVlID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlICgna2V5LCAndmFsdWUpIHQgPVxuICAgICAgICAgIHsga2V5IDogJ2tleVxuICAgICAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IGtleSB0ID0gdC5rZXlcbiAgICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB7IGtleTsgdmFsdWUgfSA9XG4gICAgICAgIFslc2V4cF9vZjoga2V5ICogZGF0YV0gKGtleSwgdmFsdWUpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgb3BlbiBLZXlfdmFsdWUuVFxuICAgIG1vZHVsZSBFbHQgPSBEb3VibHlfbGlua2VkLkVsdFxuXG4gICAgdHlwZSAoJ2tleSwgJ2RhdGEpIHQgPVxuICAgICAgeyBtdXRhYmxlIG51bV9yZWFkZXJzIDogaW50XG4gICAgICA7IHF1ZXVlIDogKCdrZXksICdkYXRhKSBLZXlfdmFsdWUudCBEb3VibHlfbGlua2VkLnRcbiAgICAgIDsgdGFibGUgOiAoJ2tleSwgKCdrZXksICdkYXRhKSBLZXlfdmFsdWUudCBFbHQudCkgVGFibGUudFxuICAgICAgfVxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gICAgICBbJXNleHBfb2Y6IChrZXksIGRhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudF0gdC5xdWV1ZVxuICAgIDs7XG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgYXNzZXJ0IChEb3VibHlfbGlua2VkLmxlbmd0aCB0LnF1ZXVlID0gVGFibGUubGVuZ3RoIHQudGFibGUpO1xuICAgICAgKCogTG9vayBhdCBlYWNoIGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBjaGVja2luZzpcbiAgICAgICAqICAgLSBldmVyeSBlbGVtZW50IGluIHRoZSBxdWV1ZSBpcyBpbiB0aGUgaGFzaCB0YWJsZVxuICAgICAgICogICAtIHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5c1xuICAgICAgKilcbiAgICAgIGxldCBrZXlzID0gVGFibGUuY3JlYXRlIH5zaXplOihUYWJsZS5sZW5ndGggdC50YWJsZSkgKFRhYmxlLmhhc2hhYmxlX3MgdC50YWJsZSkgaW5cbiAgICAgIERvdWJseV9saW5rZWQuaXRlciB0LnF1ZXVlIH5mOihmdW4ga3YgLT5cbiAgICAgICAgbGV0IGtleSA9IGt2LmtleSBpblxuICAgICAgICBtYXRjaCBUYWJsZS5maW5kIHQudGFibGUga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgIGFzc2VydCAobm90IChUYWJsZS5tZW0ga2V5cyBrZXkpKTtcbiAgICAgICAgICBUYWJsZS5zZXQga2V5cyB+a2V5IH5kYXRhOigpKVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAxNikgaGFzaGFibGUgPVxuICAgICAgeyBudW1fcmVhZGVycyA9IDBcbiAgICAgIDsgcXVldWUgPSBEb3VibHlfbGlua2VkLmNyZWF0ZSAoKVxuICAgICAgOyB0YWJsZSA9IFRhYmxlLmNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQgfnNpemUgKFRhYmxlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHJlYWQgdCBmID1cbiAgICAgIHQubnVtX3JlYWRlcnMgPC0gdC5udW1fcmVhZGVycyArIDE7XG4gICAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHQubnVtX3JlYWRlcnMgPC0gdC5udW1fcmVhZGVycyAtIDEpIFtAbm9udGFpbF1cbiAgICA7O1xuXG4gICAgbGV0IGVuc3VyZV9jYW5fbW9kaWZ5IHQgPVxuICAgICAgaWYgdC5udW1fcmVhZGVycyA+IDBcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJJdCBpcyBhbiBlcnJvciB0byBtb2RpZnkgYSBIYXNoX3F1ZXVlLnQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgaXQuXCJcbiAgICA7O1xuXG4gICAgbGV0IGNsZWFyIHQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIERvdWJseV9saW5rZWQuY2xlYXIgdC5xdWV1ZTtcbiAgICAgIFRhYmxlLmNsZWFyIHQudGFibGVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCB0ID0gVGFibGUubGVuZ3RoIHQudGFibGVcbiAgICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4gICAgbGV0IGxvb2t1cCB0IGsgPVxuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT4gU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9leG4gdCBrID0gKEVsdC52YWx1ZSAoVGFibGUuZmluZF9leG4gdC50YWJsZSBrKSkudmFsdWVcbiAgICBsZXQgbWVtIHQgayA9IFRhYmxlLm1lbSB0LnRhYmxlIGtcblxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSB0YWlsLXJlY3Vyc2l2ZSBDb3JlX2xpc3QubWFwICopXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG4gICAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5tYXAgKERvdWJseV9saW5rZWQudG9fYXJyYXkgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG5cbiAgICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuZm9yX2FsbCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZXhpc3RzIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT4gRG91Ymx5X2xpbmtlZC5leGlzdHMgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpIFtAbm9udGFpbF0pIFxuICAgICAgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLmZpbmRfbWFwIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSBbQG5vbnRhaWxdKSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBmaW5kIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgIChEb3VibHlfbGlua2VkLmZpbmQgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgICAgICAgIH5mOktleV92YWx1ZS52YWx1ZSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV91bmNoZWNrZWQgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBsZXQgY29udGVudHMgPSB7IEtleV92YWx1ZS5rZXk7IHZhbHVlIH0gaW5cbiAgICAgIGxldCBlbHQgPVxuICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgfCBgYmFjayAtPiBEb3VibHlfbGlua2VkLmluc2VydF9sYXN0IHQucXVldWUgY29udGVudHNcbiAgICAgICAgfCBgZnJvbnQgLT4gRG91Ymx5X2xpbmtlZC5pbnNlcnRfZmlyc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgaW5cbiAgICAgIFRhYmxlLnNldCB0LnRhYmxlIH5rZXkgfmRhdGE6ZWx0XG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGlmIFRhYmxlLm1lbSB0LnRhYmxlIGtleVxuICAgICAgdGhlbiBgS2V5X2FscmVhZHlfcHJlc2VudFxuICAgICAgZWxzZSAoXG4gICAgICAgIGVucXVldWVfdW5jaGVja2VkIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWU7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFjayB0ID0gZW5xdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnQgdCA9IGVucXVldWUgdCBgZnJvbnRcblxuICAgIGxldCByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUuZW5xdWV1ZV9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfZXhuIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbWF0Y2ggZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlIHdpdGhcbiAgICAgIHwgYEtleV9hbHJlYWR5X3ByZXNlbnQgLT4gcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5XG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrX2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250X2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgICgqIFBlcmZvcm1hbmNlIGhhY2s6IHdlIGltcGxlbWVudCB0aGlzIHZlcnNpb24gc2VwYXJhdGVseSB0byBhdm9pZCBhbGxvY2F0aW9uIGZyb20gdGhlXG4gICAgICAgb3B0aW9uLiAqKVxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFjayB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udCB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBtYXliZV9rdiA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2xhc3QgdC5xdWV1ZVxuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9maXJzdCB0LnF1ZXVlXG4gICAgICBpblxuICAgICAgbWF0Y2ggbWF5YmVfa3Ygd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPlxuICAgICAgICBUYWJsZS5yZW1vdmUgdC50YWJsZSBrdi5rZXk7XG4gICAgICAgIFNvbWUgKGt2LmtleSwga3YudmFsdWUpXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpID1cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX3dpdGhfa2V5OiBlbXB0eSBxdWV1ZVwiXVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpXG4gICAgICB8IFNvbWUgKGssIHYpIC0+IGssIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBmcm9udFxuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChfLCB2KSAtPiBTb21lIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFjayB0ID0gZGVxdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnQgdCA9IGRlcXVldWUgdCBgZnJvbnRcblxuICAgIGxldCBsYXN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgbGFzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfZXhuOiBlbXB0eSBxdWV1ZVwiXVxuXG4gICAgbGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKVxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBrZXlzIHQgPVxuICAgICAgKCogUmV0dXJuIHRoZSBrZXlzIGluIHRoZSBvcmRlciBvZiB0aGUgcXVldWUuICopXG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS5rZXlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2FsaXN0IHQgPVxuICAgICAgTGlzdC5tYXAgKERvdWJseV9saW5rZWQudG9fbGlzdCB0LnF1ZXVlKSB+ZjooZnVuIGt2IC0+IGt2LmtleSwga3YudmFsdWUpXG4gICAgOztcblxuICAgIGxldCBpdGVyaSB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIERvdWJseV9saW5rZWQuaXRlciB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiB+a2V5Omt2LmtleSB+ZGF0YTprdi52YWx1ZSkgW0Bub250YWlsXSkgXG4gICAgICBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSkgW0Bub250YWlsXVxuXG4gICAgbGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb2xkIHQucXVldWUgfmluaXQgfmY6KGZ1biBhYyBrdiAtPiBmIGFjIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSBcbiAgICAgICAgW0Bub250YWlsXSkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIGFjIH5rZXk6XyB+ZGF0YSAtPiBmIGFjIGRhdGEpIFtAbm9udGFpbF1cbiAgICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gICAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIG0gfmZvbGQgdCB+ZlxuICAgIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gICAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5cbiAgICBsZXQgZGVxdWV1ZV9hbGwgdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBtYXRjaCBkZXF1ZXVlX2Zyb250IHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICBmIHY7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKCkgW0Bub250YWlsXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gYE5vX3N1Y2hfa2V5XG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIERvdWJseV9saW5rZWQucmVtb3ZlIHQucXVldWUgZWx0O1xuICAgICAgICBgT2tcbiAgICA7O1xuXG4gICAgbGV0IHJhaXNlX3JlbW92ZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZW1vdmVfZXhuOiB1bmtub3duIGtleVwiIH5fOihUYWJsZS5zZXhwX29mX2tleSB0LnRhYmxlIGtleSA6IFNleHAudCldXG4gICAgOztcblxuICAgIGxldCByZW1vdmVfZXhuIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggcmVtb3ZlIHQgayB3aXRoXG4gICAgICB8IGBOb19zdWNoX2tleSAtPiByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwX2FuZF9yZW1vdmUgdCBrID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCBUYWJsZS5maW5kX2FuZF9yZW1vdmUgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgIERvdWJseV9saW5rZWQucmVtb3ZlIHQucXVldWUgZWx0O1xuICAgICAgICBTb21lIChFbHQudmFsdWUgZWx0KS52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZSB0IGsgdiA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICAoRWx0LnZhbHVlIGVsdCkudmFsdWUgPC0gdjtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByZXBsYWNlX29yX2VucXVldWUgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZSA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW5xdWV1ZV91bmNoZWNrZWQgdCBiYWNrX29yX2Zyb250IGtleSB2YWx1ZVxuICAgICAgfCBTb21lIGVsdCAtPiAoRWx0LnZhbHVlIGVsdCkudmFsdWUgPC0gdmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2Vfb3JfZW5xdWV1ZV9mcm9udCB0IGtleSB2YWx1ZSA9IHJlcGxhY2Vfb3JfZW5xdWV1ZSB0IGBmcm9udCBrZXkgdmFsdWVcbiAgICBsZXQgcmVwbGFjZV9vcl9lbnF1ZXVlX2JhY2sgdCBrZXkgdmFsdWUgPSByZXBsYWNlX29yX2VucXVldWUgdCBgYmFjayBrZXkgdmFsdWVcblxuICAgIGxldCByYWlzZV9yZXBsYWNlX3Vua25vd25fa2V5IHQga2V5ID1cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJIYXNoX3F1ZXVlLnJlcGxhY2VfZXhuOiB1bmtub3duIGtleVwiXG4gICAgICAgICAgICB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVwbGFjZV9leG4gdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlcGxhY2UgdCBrIHYgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtcbiAgICAgIHwgYE9rIC0+ICgpXG4gICAgOztcblxuICAgIGxldCBkcm9wID8obiA9IDEpIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBpZiBuID49IGxlbmd0aCB0XG4gICAgICB0aGVuIGNsZWFyIHRcbiAgICAgIGVsc2VcbiAgICAgICAgZm9yIF8gPSAxIHRvIG4gZG9cbiAgICAgICAgICBpZ25vcmUgKGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IDogXyBvcHRpb24pXG4gICAgICAgIGRvbmVcbiAgICA7O1xuXG4gICAgbGV0IGRyb3BfYmFjayA/biB0ID0gZHJvcCA/biB0IGBiYWNrXG4gICAgbGV0IGRyb3BfZnJvbnQgP24gdCA9IGRyb3AgP24gdCBgZnJvbnRcblxuICAgIGxldCBjb3B5IHQgPVxuICAgICAgbGV0IGNvcGllZCA9IGNyZWF0ZSB+c2l6ZToobGVuZ3RoIHQpIChUYWJsZS5oYXNoYWJsZSB0LnRhYmxlKSBpblxuICAgICAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZW5xdWV1ZV9iYWNrX2V4biBjb3BpZWQga2V5IGRhdGEpO1xuICAgICAgY29waWVkXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IFMwIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEpIGhhc2hfcXVldWUgOj0gKCdrZXksICdkYXRhKSBCYWNrZW5kLnRcblxuICBtb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgICBtb2R1bGUgS2V5IDogS2V5XG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIGVuZCkgOiBTIHdpdGggdHlwZSBrZXkgPSBULktleS50ID0gc3RydWN0XG4gICAgaW5jbHVkZSAoQmFja2VuZCA6IEJhY2tlbmQgd2l0aCB0eXBlICgnaywgJ2QpIHQgOj0gKCdrLCAnZCkgQmFja2VuZC50KVxuXG4gICAgdHlwZSBrZXkgPSBULktleS50XG4gICAgdHlwZSAnZGF0YSB0ID0gKFQuS2V5LnQsICdkYXRhKSBCYWNrZW5kLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoKSA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgaGFzaGFibGVcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEtleSA6IEtleSkgOiBTIHdpdGggdHlwZSBrZXkgPSBLZXkudCA9IE1ha2Vfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFRhYmxlLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEtleSlcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBCYWNrZW5kXG5lbmRcblxuaW5jbHVkZSBNYWtlX2JhY2tlbmQgKEhhc2h0YmwpXG4iLCIoKiogRnVuY3RvcnMgYW5kIGludGVyZmFjZXMgdXNlZCB0byBtYWtlIG1vZHVsZXMgaGFzaGFibGUuICopXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoYWJsZV9pbnRmXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X3BsYWluIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfcGxhaW4gKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfcGxhaW4gKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5X3BsYWluKSA6XG4gIFNfcGxhaW4gd2l0aCB0eXBlIHQgOj0gVC50ID0gTWFrZV9wbGFpbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG4gIGluY2x1ZGUgVFxuXG4gIGxldCBoYXNoYWJsZSA9IFRhYmxlLmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X3BsYWluIHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULktleVxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcblxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5IHdpdGggdHlwZSB0IDo9IHRcbiAgICBlbmRcblxuICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBULktleVxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcblxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVClcblxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZV93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFQuS2V5XG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IEhhc2h0YmwuS2V5X2JpbmFibGUpIDpcbiAgU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUga2V5XG5cbiAgICAgIG1vZHVsZSBUYWJsZSA6IHNpZ1xuICAgICAgICB0eXBlICdhIHQgPSAoa2V5LCAnYSkgSGFzaHRibC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgOiBzaWdcbiAgICAgICAgdHlwZSB0ID0ga2V5IEhhc2hfc2V0LnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgICAgZW5kXG5cbiAgICAgIHZhbCBoYXNoYWJsZSA6IGtleSBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChLZXkgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBLZXkudCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX2JpbmFibGUgKEtleSlcbiAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZSAoS2V5KVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgICBtb2R1bGUgS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZVxuXG4gICAgICAgIHZhbCBoYXNoYWJsZSA6IEtleS50IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50XG4gICAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgICAgICBtb2R1bGUgRWx0ID0gVC5LZXlcblxuICAgICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICB0eXBlIGtleVxuXG4gICAgICAgIG1vZHVsZSBUYWJsZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgJ2EgdCA9IChrZXksICdhKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgICAgdHlwZSB0ID0ga2V5IEhhc2hfc2V0LnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdmFsIGhhc2hhYmxlIDoga2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlIChLZXkgOiBIYXNodGJsLktleV9zdGFibGUpIDogUyB3aXRoIHR5cGUga2V5IDo9IEtleS50ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9zdGFibGUgKEtleSlcbiAgICAgICAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9zdGFibGUgKEtleSlcblxuICAgICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgICBtb2R1bGUgS2V5IDogSGFzaHRibC5LZXlfc3RhYmxlXG5cbiAgICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5IDo9IFQuS2V5LnQgPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3N0YWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICAgIG1vZHVsZSBIYXNoX3NldCA9IEhhc2hfc2V0Lk1ha2Vfc3RhYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBDaGFyID0gQmFzZS5DaGFyXG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZ1xuaW5jbHVkZSBIZXhkdW1wX2ludGZcblxubGV0IGJ5dGVzX3Blcl9saW5lID0gMTZcblxuKCogSW5pdGlhbGl6ZSB0byBlbm91Z2ggbGluZXMgdG8gZGlzcGxheSA0MDk2IGJ5dGVzIC0tIGxhcmdlIGVub3VnaCB0aGF0LCBmb3IgZXhhbXBsZSwgYVxuICAgY29tcGxldGUgRXRoZXJuZXQgcGFja2V0IGNhbiBhbHdheXMgYmUgZGlzcGxheWVkIC0tIGluY2x1ZGluZyB0aGUgbGluZSBjb250YWluaW5nIHRoZVxuICAgZmluYWwgaW5kZXguICopXG5sZXQgZGVmYXVsdF9tYXhfbGluZXMgPSByZWYgKCg0MDk2IC8gYnl0ZXNfcGVyX2xpbmUpICsgMSlcblxubW9kdWxlIE9mX2luZGV4YWJsZTIgKFQgOiBJbmRleGFibGUyKSA9IHN0cnVjdFxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhleF9vZl9wb3MgcG9zID0gUHJpbnRmLnNwcmludGYgXCIlMDh4XCIgcG9zXG5cbiAgICBsZXQgaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIG9mZnNldCA9XG4gICAgICBsZXQgcG9zID0gc3RhcnQgKyBvZmZzZXQgaW5cbiAgICAgIGlmIHBvcyA+PSB1bnRpbCB0aGVuIFwiICBcIiBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJTAyeFwiIChDaGFyLnRvX2ludCAoZ2V0IHQgcG9zKSlcbiAgICA7O1xuXG4gICAgbGV0IGhleF9vZl9saW5lIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzICVzICVzICVzICVzICVzICVzICVzICAlcyAlcyAlcyAlcyAlcyAlcyAlcyAlc1wiXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA0KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDUpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA3KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDgpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgOSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMilcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxMylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAxNSlcbiAgICA7O1xuXG4gICAgbGV0IHByaW50YWJsZV9zdHJpbmcgdCB+c3RhcnQgfnVudGlsID1cbiAgICAgIFN0cmluZy5pbml0ICh1bnRpbCAtIHN0YXJ0KSB+ZjooZnVuIGkgLT5cbiAgICAgICAgbGV0IGNoYXIgPSBnZXQgdCAoc3RhcnQgKyBpKSBpblxuICAgICAgICBpZiBDaGFyLmlzX3ByaW50IGNoYXIgdGhlbiBjaGFyIGVsc2UgJy4nKVxuICAgIDs7XG5cbiAgICBsZXQgbGluZSB0IH5wb3MgfmxlbiB+bGluZV9pbmRleCA9XG4gICAgICBsZXQgc3RhcnQgPSBwb3MgKyAobGluZV9pbmRleCAqIGJ5dGVzX3Blcl9saW5lKSBpblxuICAgICAgbGV0IHVudGlsID0gbWluIChzdGFydCArIGJ5dGVzX3Blcl9saW5lKSAocG9zICsgbGVuKSBpblxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAgJXMgIHwlc3xcIlxuICAgICAgICAoaGV4X29mX3BvcyBzdGFydClcbiAgICAgICAgKGhleF9vZl9saW5lIHQgfnN0YXJ0IH51bnRpbClcbiAgICAgICAgKHByaW50YWJsZV9zdHJpbmcgdCB+c3RhcnQgfnVudGlsKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc2VxdWVuY2UgP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gICAgICBpblxuICAgICAgbGV0IG1heF9saW5lcyA9XG4gICAgICAgIG1hdGNoIG1heF9saW5lcyB3aXRoXG4gICAgICAgIHwgU29tZSBtYXhfbGluZXMgLT4gbWF4X2xpbmVzXG4gICAgICAgIHwgTm9uZSAtPiAhZGVmYXVsdF9tYXhfbGluZXNcbiAgICAgIGluXG4gICAgICAoKiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCAzIGxpbmVzOiBmaXJzdCBsaW5lIG9mIGhleCwgZWxsaXBzaXMsIGxhc3QgbGluZSBvZiBoZXggKilcbiAgICAgIGxldCBtYXhfbGluZXMgPSBtYXggbWF4X2xpbmVzIDMgaW5cbiAgICAgICgqIHVuYWJyaWRnZWQgbGluZXMgPSBsaW5lcyBvZiBoZXggKyBsaW5lIHdpdGggZmluYWwgaW5kZXggKilcbiAgICAgIGxldCB1bmFicmlkZ2VkX2xpbmVzID1cbiAgICAgICAgSW50LnJvdW5kX3VwIGxlbiB+dG9fbXVsdGlwbGVfb2Y6Ynl0ZXNfcGVyX2xpbmUgLyBieXRlc19wZXJfbGluZVxuICAgICAgaW5cbiAgICAgICgqIEZpZ3VyZSBvdXQgd2hlcmUgd2UgbmVlZCB0byBza2lwIGZyb20gYW5kIHRvIGlmIFttYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXS5cbiAgICAgICAgIFNraXAgYWZ0ZXIgaGFsZiB0aGUgYWN0dWFsIGhleCBsaW5lcyAoc3VidHJhY3Rpbmcgb25lIGxpbmUgZm9yIHRoZSBlbGxpcHNpcykuXG4gICAgICAgICBTa2lwIHRvIG5lYXIgdGhlIGVuZCwgbGVzcyB0aGUgbnVtYmVyIG9mIGxpbmVzIHJlbWFpbmluZyB0byBwcm9kdWNlLCBwbHVzIHRoZVxuICAgICAgICAgZWxsaXBzaXMgbGluZS4gKilcbiAgICAgIGxldCBza2lwX2Zyb20gPSAobWF4X2xpbmVzIC0gMSkgLyAyIGluXG4gICAgICBsZXQgc2tpcF90byA9IHVuYWJyaWRnZWRfbGluZXMgLSAobWF4X2xpbmVzIC0gc2tpcF9mcm9tKSArIDEgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OjAgfmY6KGZ1biBsaW5lX2luZGV4IC0+XG4gICAgICAgIGlmIGxpbmVfaW5kZXggPj0gdW5hYnJpZGdlZF9saW5lc1xuICAgICAgICB0aGVuIERvbmVcbiAgICAgICAgZWxzZSBpZiBsaW5lX2luZGV4ID0gc2tpcF9mcm9tICYmIG1heF9saW5lcyA8IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBZaWVsZCB7IHZhbHVlID0gXCIuLi5cIjsgc3RhdGUgPSBza2lwX3RvIH1cbiAgICAgICAgZWxzZSBZaWVsZCB7IHZhbHVlID0gbGluZSB0IH5wb3MgfmxlbiB+bGluZV9pbmRleDsgc3RhdGUgPSBsaW5lX2luZGV4ICsgMSB9KVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0ID1cbiAgICAgIHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIlxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IF8gXyB0ID0gdG9fc2VxdWVuY2UgdCB8PiBTZXF1ZW5jZS50b19saXN0IHw+IFslc2V4cF9vZjogc3RyaW5nIGxpc3RdXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHByaW50YWJsZSA9XG4gICAgICAgIGxldCByZWMgcHJpbnRhYmxlX2Zyb20gdCB+cG9zIH5sZW5ndGggPVxuICAgICAgICAgIHBvcyA+PSBsZW5ndGhcbiAgICAgICAgICB8fCAoQ2hhci5pc19wcmludCAoZ2V0IHQgcG9zKSAmJiBwcmludGFibGVfZnJvbSB0IH5wb3M6KHBvcyArIDEpIH5sZW5ndGgpXG4gICAgICAgIGluXG4gICAgICAgIGZ1biB0IC0+IHByaW50YWJsZV9mcm9tIHQgfnBvczowIH5sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIHBvcyAtPiBnZXQgdCBwb3MpXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiB0ID1cbiAgICAgICAgaWYgcHJpbnRhYmxlIHQgdGhlbiBbJXNleHAgKHRvX3N0cmluZyB0IDogc3RyaW5nKV0gZWxzZSBbJXNleHAgKHQgOiAoYSwgYikgdCldXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgT2ZfaW5kZXhhYmxlMSAoVCA6IEluZGV4YWJsZTEpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgXykgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB4IHQgPSBNLkhleGR1bXAuc2V4cF9vZl90IHggWyVzZXhwX29mOiBfXSB0XG4gICAgbGV0IHRvX3NlcXVlbmNlID0gTS5IZXhkdW1wLnRvX3NlcXVlbmNlXG4gICAgbGV0IHRvX3N0cmluZ19odW0gPSBNLkhleGR1bXAudG9fc3RyaW5nX2h1bVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKHQgOiAoYSwgXykgTS5IZXhkdW1wLlByZXR0eS50KV1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZSAoVCA6IEluZGV4YWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBPZl9pbmRleGFibGUxIChzdHJ1Y3RcbiAgICAgIHR5cGUgXyB0ID0gVC50XG5cbiAgICAgIGxldCBsZW5ndGggPSBULmxlbmd0aFxuICAgICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZXhkdW1wID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBNLkhleGR1bXAuc2V4cF9vZl90IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHQgOiBfIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlX2ludGZcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZTBcblxubW9kdWxlIE1ha2VfcGxhaW4gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9wbGFpbiAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfc2V4cF9ncmFtbWFyIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIE1ha2UgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfYW5kX2Rlcml2ZV9oYXNoX2ZvbGRfdCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvcl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIEV4dGVuZCAoTSA6IEJhc2UuSWRlbnRpZmlhYmxlLlMpIChCIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9IE0udCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cbiAgICBpbmNsdWRlIChCIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kX2JpbmFibGUgKE0pIChUKVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IFRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gTS5oYXNoYWJsZVxuICAgIGVuZClcbmVuZFxuIiwibW9kdWxlIHR5cGUgVjEgPSBzaWdcbiAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwXG5cbiAgaW5jbHVkZVxuICAgIENvbXBhcmFibGUuU3RhYmxlLlYxLlNcbiAgICB3aXRoIHR5cGUgY29tcGFyYWJsZSA6PSB0XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBWMSA9IHNpZ1xuICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMwXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLlNcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5TdHJpbmdcblxuKCogVGhlc2UgdHdvIGFyZSBuZWVkZWQgYmVjYXVzZSBbaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kXSAocHJlc2VudCBsYXRlciBpbiB0aGUgZmlsZSlcbiAgIGJpbmRzIG5ldyBbTWFwXSBhbmQgW1NldF0gbW9kdWxlcy4gKilcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuXG4gICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgbGV0IG9mX3N0cmluZyA9IEZuLmlkXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVClcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYXNlbGVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcblxuICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuZW5kXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFN0YWJsZS5WMS5oYXNoYWJsZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLlN0cmluZylcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLnN0cmluZ1xubGV0IGdlbl9ub25lbXB0eSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eVxubGV0IGdlbicgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19vZlxubGV0IGdlbl9ub25lbXB0eScgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ19ub25fZW1wdHlfb2ZcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW5ndGggY2hhcnMgPVxuICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFycyB+bGVuZ3RoXG47O1xuXG5sZXQgdGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggbGZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOjAgfmxlbjppXG47O1xuXG5sZXQgcnRha2Vfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHJmaW5kaSB0IH5mOihmdW4gXyBlbHQgLT4gbm90IChmIGVsdCkpIHdpdGhcbiAgfCBOb25lIC0+IHRcbiAgfCBTb21lIGkgLT4gc3ViIHQgfnBvczooaSArIDEpIH5sZW46KGxlbmd0aCB0IC0gaSAtIDEpXG47O1xuXG4oKiogU2VlIHshQXJyYXkubm9ybWFsaXplfSBmb3IgdGhlIGZvbGxvd2luZyA0IGZ1bmN0aW9ucy4gKilcbmxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG5sZXQgc2xpY2UgdCBzdGFydCBzdG9wID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5zbGljZSB+bGVuZ3RoX2Z1bjpsZW5ndGggfnN1Yl9mdW46c3ViIHQgc3RhcnQgc3RvcFxuOztcblxubGV0IG5nZXQgeCBpID1cbiAgbGV0IG1vZHVsZSBTdHJpbmcgPSBCYXNlLlN0cmluZyBpblxuICB4Lltub3JtYWxpemUgeCBpXVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuU3RyaW5nfVtCYXNlLlN0cmluZ119LiAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlN0cmluZ1xuZW5kXG5cbnR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBbQ2FzZWxlc3NdIGNvbXBhcmVzIGFuZCBoYXNoZXMgc3RyaW5ncyBpZ25vcmluZyBjYXNlLCBzbyB0aGF0IGZvciBleGFtcGxlXG4gICAgW0Nhc2VsZXNzLmVxdWFsIFwiT0NhbWxcIiBcIm9jYW1sXCJdIGFuZCBbQ2FzZWxlc3MuKFwiYXBwbGVcIiA8IFwiQmFuYW5hXCIpXSBhcmUgW3RydWVdLCBhbmRcbiAgICBbQ2FzZWxlc3MuTWFwXSwgW0Nhc2VsZXNzLlRhYmxlXSBsb29rdXAgYW5kIFtDYXNlbGVzcy5TZXRdIG1lbWJlcnNoaXAgaXNcbiAgICBjYXNlLWluc2Vuc2l0aXZlLlxuXG4gICAgW0Nhc2VsZXNzXSBhbHNvIHByb3ZpZGVzIGNhc2UtaW5zZW5zaXRpdmUgW2lzX3N1ZmZpeF0gYW5kIFtpc19wcmVmaXhdIGZ1bmN0aW9ucywgc29cbiAgICB0aGF0IGZvciBleGFtcGxlIFtDYXNlbGVzcy5pc19zdWZmaXggXCJPQ2FtbFwiIH5zdWZmaXg6XCJBbUxcIl0gYW5kIFtDYXNlbGVzcy5pc19wcmVmaXhcbiAgICBcIk9DYW1sXCIgfnByZWZpeDpcIm9jXCJdIGFyZSBbdHJ1ZV0uICopXG5tb2R1bGUgQ2FzZWxlc3MgOiBzaWdcbiAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc2V4cF1cblxuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxuXG4oKiogW3NsaWNlIHQgc3RhcnQgc3RvcF0gcmV0dXJucyBhIG5ldyBzdHJpbmcgaW5jbHVkaW5nIGVsZW1lbnRzIFt0LihzdGFydCldIHRocm91Z2hcbiAgICBbdC4oc3RvcC0xKV0sIG5vcm1hbGl6ZWQgUHl0aG9uLXN0eWxlIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IFtzdG9wID0gMF0gaXMgdHJlYXRlZCBhc1xuICAgIFtzdG9wID0gbGVuZ3RoIHRdLiAqKVxudmFsIHNsaWNlIDogdCAtPiBpbnQgLT4gaW50IC0+IHRcblxuKCoqIFtuZ2V0IHMgaV0gZ2V0cyB0aGUgY2hhciBhdCBub3JtYWxpemVkIHBvc2l0aW9uIFtpXSBpbiBbc10uICopXG52YWwgbmdldCA6IHQgLT4gaW50IC0+IGNoYXJcblxuKCoqIFt0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3QgcHJlZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHByZWZpeCB+Zl1cbiAgICAoU2VlIFtsc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHByZWZpeCkgKilcbnZhbCB0YWtlX3doaWxlIDogdCAtPiBmOigoY2hhciAtPiBib29sKVtAbG9jYWxdKSAtPiB0XG5cbigqKiBbcnRha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBzdWZmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgc3VmZml4IH5mXVxuICAgIChTZWUgW3JzdHJpcF0gdG8gZHJvcCBzdWNoIGEgc3VmZml4KSAqKVxudmFsIHJ0YWtlX3doaWxlIDogdCAtPiBmOigoY2hhciAtPiBib29sKVtAbG9jYWxdKSAtPiB0XG5cbmluY2x1ZGUgSGV4ZHVtcC5TIHdpdGggdHlwZSB0IDo9IHRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eSA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2ZcbiAgICBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHknIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtzdHJpbmddIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtTdHJpbmcuU3RhYmxlXSBleGlzdHMgb25seSB0byBpbnRyb2R1Y2VcbiAgICBbU3RyaW5nLlN0YWJsZS5TZXRdLCBbU3RyaW5nLlN0YWJsZS5NYXBdLCBbU3RyaW5nLlN0YWJsZS5UYWJsZV0sIGFuZCBwcm92aWRlIGludGVyZmFjZVxuICAgIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBzdGFibGUgdHlwZXMuICopXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9jb21wYXJhYmxlLldpdGhfc3RhYmxlX3dpdG5lc3MuVjFcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuUyB3aXRoIHR5cGUga2V5IDo9IHRcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG50eXBlIHQgPSBib29sIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkJvb2wpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQm9vbFxuXG5pbmNsdWRlIChcbiAgQmFzZS5Cb29sIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQm9vbFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJvb2wpXG5cbmxldCBvZl9zdHJpbmdfaHVtID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IHRhYmxlID0gU3RyaW5nLkNhc2VsZXNzLlRhYmxlLmNyZWF0ZSAoKSBpblxuICAgICAgIFsgZmFsc2UsIFsgXCJmYWxzZVwiOyBcIm5vXCI7IFwiMFwiIF07IHRydWUsIFsgXCJ0cnVlXCI7IFwieWVzXCI7IFwiMVwiIF0gXVxuICAgICAgIHw+IExpc3QuaXRlciB+ZjooZnVuIChib29sLCBzdHJpbmdzKSAtPlxuICAgICAgICAgTGlzdC5pdGVyIHN0cmluZ3MgfmY6KGZ1biBzdHJpbmcgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzdHJpbmcgfmRhdGE6Ym9vbDtcbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnByZWZpeCBzdHJpbmcgMSkgfmRhdGE6Ym9vbCkpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBsZXQgcmFpc2VfaW52YWxpZCBpbnB1dCA9XG4gICAgbGV0IGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyAoZm9yY2UgdGFibGUpKSBpblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkJvb2wub2Zfc3RyaW5nX2h1bTogaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgKGlucHV0IDogc3RyaW5nKVxuICAgICAgICAgIChleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlIDogU3RyaW5nLlNldC50KV1cbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIEhhc2h0YmwuZmluZF9hbmRfY2FsbCAoZm9yY2UgdGFibGUpIHN0cmluZyB+aWZfZm91bmQ6Rm4uaWQgfmlmX25vdF9mb3VuZDpyYWlzZV9pbnZhbGlkXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJvb2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJvb2xcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmJvb2xcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlLkJ5dGVzXG5cbiAgICB0eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJ5dGVzKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgZ2VuJyBjaGFyX2dlbiA9IFN0cmluZy5nZW4nIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gPVxuICBTdHJpbmcuZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQ2hhcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbigqIGluY2x1ZGUgW0Jhc2UuQ2hhcl0gYWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIG9mIFtJZGVudGlmaWFibGUuRXh0ZW5kXSB0byByZXBsYWNlIHRoZVxuICAgW0NvbXBhcmFibGVdIGZ1bmN0aW9ucyB3aXRoIHRoZSBwZXJ2YXNpdmUgdmVyc2lvbnMgKilcbmluY2x1ZGUgKFxuICBCYXNlLkNoYXIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5DaGFyXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ2hhclxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNoYXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmNoYXJcbmxldCBnZW5fZGlnaXQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfZGlnaXRcbmxldCBnZW5fbG93ZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2xvd2VyY2FzZVxubGV0IGdlbl91cHBlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdXBwZXJjYXNlXG5sZXQgZ2VuX2FscGhhID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhXG5sZXQgZ2VuX2FscGhhbnVtID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhbnVtXG5sZXQgZ2VuX3ByaW50ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3ByaW50XG5sZXQgZ2VuX3doaXRlc3BhY2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfd2hpdGVzcGFjZVxubGV0IGdlbl91bmlmb3JtX2luY2x1c2l2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbiA9IEJhc2UuU2lnblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ24udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ24pIChTdGFibGUuVjEpXG4iLCJleHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXRcblxuICAgICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzcywgdHlwZXJlcF1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVDEpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gU3RhYmxlLlYxXG5pbmNsdWRlIFRcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKFQpXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gVFxuXG5sZXQgdmFsaWRhdGVfb3JkaW5hcnkgdCA9XG4gIFZhbGlkYXRlLm9mX2Vycm9yX29wdFxuICAgIChsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICAgICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgICAgfCBDLk5vcm1hbCB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IE5vbmVcbiAgICAgfCBDLkluZmluaXRlIC0+IFNvbWUgXCJ2YWx1ZSBpcyBpbmZpbml0ZVwiXG4gICAgIHwgQy5OYW4gLT4gU29tZSBcInZhbHVlIGlzIE5hTlwiKVxuOztcblxubW9kdWxlIFYgPSBzdHJ1Y3RcbiAgbW9kdWxlIFpaID0gQ29tcGFyYWJsZS5WYWxpZGF0ZSAoVClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9ib3VuZCB0IH5taW4gfm1heClcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2xib3VuZCB0IH5taW4pXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV91Ym91bmQgdCB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVlxuXG5tb2R1bGUgUm9idXN0X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICgqIGludGVuZGVkIHRvIGJlIGEgdG9sZXJhbmNlIG9uIGh1bWFuLWVudGVyZWQgZmxvYXRzICopXG5cbiAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcblxuICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IGZsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcbiAgICBlbmQpIDogUyA9IHN0cnVjdFxuICAgICgqIFdlIGhhdmUgdGVzdCBpbiB0aGUgdHJlZSB0aGF0IHJlbHkgb24gdGhlc2UgZnVuY3Rpb25zIG5vdCBhbGxvY2F0aW5nLCBldmVuIHdpdGhvdXRcbiAgICAgICBYX0xJQlJBUllfSU5MSU5HLiBUaGUgb25seSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlc2UgZG9uJ3QgY3JlYXRlIHRlbXBvcmFyeSBib3hlZFxuICAgICAgIGZsb2F0cyB3aXRob3V0IFhfTElCUkFSWV9JTkxJTkcgaXMgZm9yIHRoaXMgY29kZSB0byBzZWUgdGhlIGZsb2F0IG9wZXJhdGlvbnMgYXNcbiAgICAgICBleHRlcm5hbHMsIGFzIGRlZmluZWQgaW4gW1BlcnZhc2l2ZXNdLiBUaGF0J3Mgd2h5IHdlIHVzZSBbUG9seV0gYW5kIGZsb2F0XG4gICAgICAgYXJpdGhtZXRpYyBmcm9tIFtDYW1sXS4gKilcbiAgICBvcGVuIFBvbHlcblxuICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBULnJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoID49LiApIHggeSA9IHggPj0gU3RkbGliLiggLS4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDw9LiApIHggeSA9IHkgPj0uIHhcbiAgICBsZXQgKCA9LiApIHggeSA9IHggPj0uIHkgJiYgeSA+PS4geFxuICAgIGxldCAoID4uICkgeCB5ID0geCA+IFN0ZGxpYi4oICsuICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8LiApIHggeSA9IHkgPi4geFxuICAgIGxldCAoIDw+LiApIHggeSA9IG5vdCAoeCA9LiB5KVxuXG4gICAgbGV0IHJvYnVzdGx5X2NvbXBhcmUgeCB5ID1cbiAgICAgIGxldCBkID0gU3RkbGliLiggLS4gKSB4IHkgaW5cbiAgICAgIGlmIGQgPCBTdGRsaWIuKCB+LS4gKSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gLTFcbiAgICAgIGVsc2UgaWYgZCA+IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIDBcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUm9idXN0bHlfY29tcGFyYWJsZSA9IFJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS03XG4gIGVuZClcblxuaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5GbG9hdC5PXG4gIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuZW5kXG5cbm1vZHVsZSBUZXJzZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgaW5jbHVkZSAoXG4gICAgQmFzZS5GbG9hdC5UZXJzZSA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5GbG9hdC5UZXJzZVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcblxubGV0IHJvYnVzdF9zaWduIHQgOiBTaWduLnQgPSBpZiB0ID4uIDAuIHRoZW4gUG9zIGVsc2UgaWYgdCA8LiAwLiB0aGVuIE5lZyBlbHNlIFplcm9cblxuKCogVGhlcmUgYXJlIHR3byBpc3N1ZXM6XG4gICAtIEZsb2F0LnNpZ24gdXNlZCB0byB1c2Ugcm9idXN0IGNvbXBhcmlzb24sIGFuZCB1c2VycyBvZiBbQ29yZV0gbWlnaHQgaGF2ZSBjb21lIHRvXG4gICAgIGRlcGVuZCBvbiB0aGlzLlxuICAgLSBSb2J1c3RuZXNzIGFzaWRlLCB3aGF0IHdlIGdldCBmcm9tIENvbXBhcmFibGUuV2l0aF96ZXJvIHdvdWxkIG1hcCBuYW4gdG8gTmVnLlxuKilcbmxldCBzaWduID0gcm9idXN0X3NpZ25cblxuKCogU3RhbmRhcmQgMTIgc2lnbmlmaWNhbnQgZGlnaXRzLCBleHBvbmVudGlhbCBub3RhdGlvbiB1c2VkIGFzIG5lY2Vzc2FyeSwgZ3VhcmFudGVlZCB0b1xuICAgYmUgYSB2YWxpZCBPQ2FtbCBmbG9hdCBsZXhlbSwgbm90IHRvIGxvb2sgbGlrZSBhbiBpbnQuICopXG5sZXQgdG9fc3RyaW5nXzEyIHggPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiB4KVxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZmxvYXRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZsb2F0XG5sZXQgZ2VuX3VuaWZvcm1fZXhjbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfdW5pZm9ybV9leGNsdXNpdmVcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfaW5jbHVzaXZlXG5sZXQgZ2VuX3dpdGhvdXRfbmFuID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF93aXRob3V0X25hblxubGV0IGdlbl9maW5pdGUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2Zpbml0ZVxubGV0IGdlbl9wb3NpdGl2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmVcbmxldCBnZW5fbmVnYXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X25lZ2F0aXZlXG5sZXQgZ2VuX3plcm8gPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIFplcm9cbmxldCBnZW5fbmFuID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBOYW5cbmxldCBnZW5fc3Vibm9ybWFsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBTdWJub3JtYWxcbmxldCBnZW5fbm9ybWFsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBOb3JtYWxcbmxldCBnZW5faW5maW5pdGUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X29mX2NsYXNzIEluZmluaXRlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBCYXNlLkludFxuXG4gICAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgaGFzaCwgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBCYXNlLkludFxuaW5jbHVkZSBCYXNlLkludFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQpXG5cbigqIFRoaXMgaXMgYWxyZWFkeSBkZWZpbmVkIGJ5IENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvLCBidXQgU2lnbi5vZl9pbnQgaXNcbiAgIG1vcmUgZGlyZWN0LiAqKVxubGV0IHNpZ24gPSBTaWduLm9mX2ludFxuXG50eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5JbnRfaW50Zn1bQmFzZS5JbnRfaW50Zl19LiAqKVxuXG5tb2R1bGUgdHlwZSBSb3VuZCA9IEJhc2UuSW50LlJvdW5kXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9ncmFtbWFyXVxuXG4gICAgaW5jbHVkZSBTdGFibGVfY29tcGFyYWJsZS5XaXRoX3N0YWJsZV93aXRuZXNzLlYxIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgSGV4YWJsZSA9IHNpZ1xuICB0eXBlIHRcblxuICBtb2R1bGUgSGV4IDogc2lnXG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCB0b19zdHJpbmdfaHVtIDogP2RlbGltaXRlcjpjaGFyIC0+IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gICgqXyBFbnN1cmUgdGhhdCB0aGlzIG1vZHVsZSBpcyBhbiBleHRlbnNpb24gb2YgW0Jhc2UuSW50LkhleGFibGVdLiAqKVxuICBpbmNsdWRlIEJhc2UuSW50LkhleGFibGUgd2l0aCB0eXBlIHQgOj0gdCBhbmQgbW9kdWxlIEhleCA6PSBIZXhcbmVuZFxuXG5tb2R1bGUgdHlwZSBFeHRlbnNpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuICBpbmNsdWRlIEhleGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgUXVpY2tjaGVja2FibGUuU19pbnQgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfdW5ib3VuZGVkID0gc2lnXG4gIGluY2x1ZGUgQmFzZS5JbnQuU191bmJvdW5kZWRcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TXG4gIGluY2x1ZGUgRXh0ZW5zaW9uIHdpdGggdHlwZSB0IDo9IHQgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBFeHRlbnNpb25fd2l0aF9zdGFibGUgPSBzaWdcbiAgaW5jbHVkZSBFeHRlbnNpb25cblxuICBtb2R1bGUgU3RhYmxlIDpcbiAgICBTdGFibGUgd2l0aCB0eXBlIFYxLnQgPSB0IGFuZCB0eXBlIFYxLmNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50MzIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gaW50MzIgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxuaW5jbHVkZSBCYXNlLkludDMyXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIChCYXNlLkludDMyKVxuXG50eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG5tb2R1bGUgSGV4ID0gc3RydWN0XG4gIGluY2x1ZGUgSGV4XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgdHlwZXJlcCwgYmluX2lvXVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDMyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQzMlxubGV0IGdlbl9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50MzJfbG9nX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQ2NClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQ2NCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50NjRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50NjQpXG5cbnR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50NjRcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDY0XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2NF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5JbnQ2NH1bQmFzZS5JbnQ2NF19LiAqKVxuXG4oKiogezIgSW50ZXJmYWNlIGZyb20gQmFzZX0gKilcblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5JbnQ2NFxuZW5kXG5cbigqKiB7MiBFeHRlbnNpb25zfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZVxuICBJbnRfaW50Zi5FeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIEJpbiA6IEJpbmFibGUwLlMgd2l0aCB0eXBlIHQgOj0gQmFzZS5JbnQ2My50ID0gc3RydWN0XG4gIG1vZHVsZSBCaW5fZW11bGF0ZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC5XLndyYXBfZXhuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBCYXNlLkludDYzLlByaXZhdGUuRW11bC5XLnVud3JhcFxuICAgICAgICBlbmQpXG4gIGVuZFxuXG4gIHR5cGUgJ2EgYmluYWJsZSA9IChtb2R1bGUgQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG4gIGxldCBiaW5hYmxlX29mX3JlcHIgOiB0eXBlIGEgYi4gKGEsIGIpIEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLnQgLT4gYiBiaW5hYmxlID0gZnVuY3Rpb25cbiAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludCAtPiAobW9kdWxlIEludClcbiAgICB8IEJhc2UuSW50NjMuUHJpdmF0ZS5SZXByLkludDY0IC0+IChtb2R1bGUgQmluX2VtdWxhdGVkKVxuICA7O1xuXG4gIGxldCBiaW5hYmxlIDogQmFzZS5JbnQ2My50IGJpbmFibGUgPSBiaW5hYmxlX29mX3JlcHIgQmFzZS5JbnQ2My5Qcml2YXRlLnJlcHJcblxuICBpbmNsdWRlICh2YWwgYmluYWJsZSlcblxuICBsZXQgYmluX3NoYXBlX3QgPSBCaW5fcHJvdC5TaGFwZS5iaW5fc2hhcGVfaW50NjNcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgICBpbmNsdWRlIEJpblxuXG4gICAgICBpbmNsdWRlIChcbiAgICAgICAgQmFzZS5JbnQ2MyA6XG4gICAgICAgICAgQmFzZS5Db21wYXJhYmxlLlNcbiAgICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQmFzZS5JbnQ2My5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICAgICgqIFRoaXMgc2VyaWFsaXphdGlvbiBpcyBzdGFibGUsIHNpbmNlIGl0IGVpdGhlciBkZWxlZ2F0ZXMgdG8gW2ludF0gb3JcbiAgICAgICAgIFtJbnQ2M19lbXVsXS4gKilcbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG4oKiBUaGlzIFtpbmNsdWRlIHN0cnVjdF0gaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCBsZXRzIHVzIHNoYWRvdyBbdF0gd2hlbiB3ZSBpbmNsdWRlXG4gICBbQmFzZS5JbnQ2M10gbGF0ZXIgb24uICopXG5pbmNsdWRlIHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnRcbmVuZFxuXG5sZXQgdHlwZXJlcF9vZl90ID0gdHlwZXJlcF9vZl9pbnQ2M1xubGV0IHR5cGVuYW1lX29mX3QgPSB0eXBlbmFtZV9vZl9pbnQ2M1xuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQ2MylcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIEJpblxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmFibGUuQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gdCA9IEJhc2UuSW50NjNcbmluY2x1ZGUgQmFzZS5JbnQ2M1xuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2MylcblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcblxuICAoKiogW3RvX2ludDYzXSBhbmQgW29mX2ludDYzX2V4bl0gZW5jb2RlIFt0XSBmb3IgdXNlIGluIHdpcmUgcHJvdG9jb2xzOyB0aGV5IGFyZVxuICAgICAgaW50ZW5kZWQgdG8gYXZvaWQgYWxsb2NhdGlvbiBvbiA2NC1iaXQgbWFjaGluZXMgYW5kIHNob3VsZCBiZSBpbXBsZW1lbnRlZFxuICAgICAgZWZmaWNpZW50bHkuICBbb2ZfaW50NjNfZXhuICh0b19pbnQ2MyB0KSA9IHRdIGZvciBhbGwgW3RdOyBbb2ZfaW50NjNfZXhuXSByYWlzZXMgZm9yXG4gICAgICBpbnB1dHMgbm90IHByb2R1Y2VkIGJ5IFt0b19pbnQ2M10uICopXG4gIHZhbCB0b19pbnQ2MyA6IHQgLT4gSW50NjMudFxuXG4gIHZhbCBvZl9pbnQ2M19leG4gOiBJbnQ2My50IC0+IHRcbmVuZFxuXG5tb2R1bGUgV2l0aF9zdGFibGVfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcblxuICAgIHZhbCB0b19pbnQ2MyA6IHQgLT4gSW50NjMudFxuICAgIHZhbCBvZl9pbnQ2M19leG4gOiBJbnQ2My50IC0+IHRcbiAgZW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfd2l0bmVzcy5FeHBvcnRcblxuICBvcGVuIEJhc2UuRXhwb3J0XG4gIG9wZW4gQmluX3Byb3QuU3RkXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDg2YmE1ZGY3NDdlZWM4MzdmMGIzOTFkZDQ5ZjMzZjllIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gVjEuY29tcGFyYXRvclxuICAgIGxldCBiaW5fbmFtZSA9IFwidW5pdF92MlwiXG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gKF8gOiBCaW5fcHJvdC5Db21tb24uYnVmKSB+cG9zX3JlZiAoXyA6IGludCkgPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBiaW5fbmFtZSAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRfdCAoXyA6IEJpbl9wcm90LkNvbW1vbi5idWYpIH5wb3NfcmVmOihfIDogaW50IHJlZikgPSAoKVxuXG4gICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaGFwZV90ID0gQmluX3Byb3QuU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBiaW5fbmFtZSkpIFtdXG4gICAgbGV0IGJpbl9zaXplX3QgKCkgPSAwXG4gICAgbGV0IGJpbl93cml0ZV90IChfIDogQmluX3Byb3QuQ29tbW9uLmJ1ZikgfnBvcyAoKSA9IHBvc1xuICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgbGV0IGJpbl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgZmZiZDFhMzA3YTRmN2ViZTgwMjMwNDBmZWNlYmY2OTcgfH1dXG4gICAgOztcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLlVuaXQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuVW5pdFxuXG50eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IudW5pdFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5pdFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIudW5pdFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnIGVuZFxuXG50eXBlIG0gPSAobW9kdWxlIFMpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG9wZW4gU2V4cGxpYi5TdGRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCBtYXAgPSBCYXNlLkxhenkubWFwXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU3RhYmxlLlYxLnRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgKEJhc2UuTGF6eSA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5OYXRpdmVpbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5OYXRpdmVpbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuTmF0aXZlaW50KVxuXG50eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5uYXRpdmVpbnRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5Ob3RoaW5nLnQgPSB8XG5cbiAgICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5fc2hhcGVdXG4gICAgZW5kXG5cbiAgICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IEJhc2UuTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl9zaGFwZV90ID0gU2hhcGUuYmluX3NoYXBlX3RcbiAgICBsZXQgdHBfbG9jID0gWyVoZXJlXS5wb3NfZm5hbWUgXiBcIi5TdGFibGUuVjEudFwiXG4gICAgbGV0IGFsbCA9IFtdXG4gICAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICAgIGxldCBiaW5fc2l6ZV90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fd3JpdGVfdCBfYnVmIH5wb3M6XyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgdHBfbG9jICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IF9idWYgfnBvc19yZWYgPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3JlYWRfZXJyb3IgKEVtcHR5X3R5cGUgdHBfbG9jKSAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIuQ29udl9lcnJvci5lbXB0eV90eXBlIHRwX2xvYyBzZXhwXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBCYXNlLk5vdGhpbmdcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoQmFzZS5Ob3RoaW5nKSAoU3RhYmxlLlYxKVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgbmV2ZXJfcmV0dXJucyA9IE5vdGhpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbmV2ZXJfcmV0dXJucyA9IE5vdGhpbmcudW5yZWFjaGFibGVfY29kZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEJhc2UuT3JkZXJpbmcudCA9XG4gIHwgTGVzc1xuICB8IEVxdWFsXG4gIHwgR3JlYXRlclxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLk9yZGVyaW5nIHdpdGggdHlwZSB0IDo9IHRcblxuaW5jbHVkZSAoQmFzZS5PcmRlcmluZyA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5SZWZcblxuICBpbmNsdWRlIChcbiAgc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kIDpcbiAgc2lnXG4gICAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBQZXJtaXNzaW9uZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG5cbiAgdHlwZSAoJ2EsIC0ncGVybXMpIHQgPSAnYSBULnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gIGxldCByZWFkX29ubHkgPSBGbi5pZFxuICBsZXQgb2ZfcmVmID0gRm4uaWRcbiAgbGV0IHRvX3JlZiA9IEZuLmlkXG4gIGxldCBzZXQgPSAoIDo9IClcbiAgbGV0IGdldCA9ICggISApXG5lbmRcbiIsIigqIFdlIGRvbid0IGp1c3QgaW5jbHVkZSBTZXhwbGliLlN0ZCBiZWNhdXNlIG9uZSBjYW4gb25seSBkZWZpbmUgSGFzaHRibCBvbmNlIGluIHRoaXNcbiAgIG1vZHVsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbigqKiBbaW5jbHVkZV1kIGZpcnN0IHNvIHRoYXQgZXZlcnl0aGluZyBlbHNlIHNoYWRvd3MgaXQgKilcbmluY2x1ZGUgQ29yZV9wZXJ2YXNpdmVzXG5cbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5pbmNsdWRlIERlcHJlY2F0ZV9waXBlX2JhbmdcbmluY2x1ZGUgRWl0aGVyLkV4cG9ydFxuaW5jbHVkZSBGcm9tX3NleHBsaWJcbmluY2x1ZGUgSW50ZXJmYWNlc1xuaW5jbHVkZSBMaXN0LkluZml4XG5pbmNsdWRlIE5ldmVyX3JldHVybnNcbmluY2x1ZGUgT3JkZXJpbmcuRXhwb3J0XG5pbmNsdWRlIFBlcm1zLkV4cG9ydFxuaW5jbHVkZSBSZXN1bHQuRXhwb3J0XG5cbnR5cGUgLSdhIHJldHVybiA9ICdhIFdpdGhfcmV0dXJuLnJldHVybiA9IHByaXZhdGUgeyByZXR1cm4gOiAnYi4gJ2EgLT4gJ2IgfSBbQEB1bmJveGVkXVxuXG5cbigqKiBSYWlzZWQgaWYgbWFsbG9jIGluIEMgYmluZGluZ3MgZmFpbCAoZXJybm8gKiBzaXplKS4gKilcbmV4Y2VwdGlvbiBDX21hbGxvY19leG4gb2YgaW50ICogaW50XG5cbigqIGVycm5vLCBzaXplICopXG5sZXQgKCkgPSBDYWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gXCJDX21hbGxvY19leG5cIiAoQ19tYWxsb2NfZXhuICgwLCAwKSlcblxuZXhjZXB0aW9uIEZpbmFsbHkgPSBFeG4uRmluYWxseVxuXG5sZXQgZnN0MyAoeCwgXywgXykgPSB4XG5sZXQgc25kMyAoXywgeSwgXykgPSB5XG5sZXQgdHJkMyAoXywgXywgeikgPSB6XG5cbigqKiBbcGh5c19zYW1lXSBpcyBsaWtlIFtwaHlzX2VxdWFsXSwgYnV0IHdpdGggYSBtb3JlIGdlbmVyYWwgdHlwZS4gIFtwaHlzX3NhbWVdIGlzIHVzZWZ1bFxuICAgIHdoZW4gZGVhbGluZyB3aXRoIGV4aXN0ZW50aWFsIHR5cGVzLCB3aGVuIG9uZSBoYXMgYSBwYWNrZWQgdmFsdWUgYW5kIGFuIHVucGFja2VkIHZhbHVlXG4gICAgdGhhdCBvbmUgd2FudHMgdG8gY2hlY2sgYXJlIHBoeXNpY2FsbHkgZXF1YWwuICBPbmUgY2FuJ3QgdXNlIFtwaHlzX2VxdWFsXSBpbiBzdWNoIGFcbiAgICBzaXR1YXRpb24gYmVjYXVzZSB0aGUgdHlwZXMgYXJlIGRpZmZlcmVudC4gKilcbmV4dGVybmFsIHBoeXNfc2FtZSA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdiW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXFcIlxuXG5sZXQgKCAlICkgPSBJbnQuKCAlIClcbmxldCAoIC8lICkgPSBJbnQuKCAvJSApXG5sZXQgKCAvLyApID0gSW50LiggLy8gKVxubGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5sZXQgYnByaW50ZiA9IFByaW50Zi5icHJpbnRmXG5sZXQgY29uc3QgPSBGbi5jb25zdFxubGV0IGVwcmludGYgPSBQcmludGYuZXByaW50ZlxubGV0IGVycm9yID0gT3JfZXJyb3IuZXJyb3JcbmxldCBlcnJvcl9zID0gT3JfZXJyb3IuZXJyb3Jfc1xubGV0IGZhaWx3aXRoZiA9IEJhc2UuUHJpbnRmLmZhaWx3aXRoZlxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IGZvcmNlID0gQmFzZS5MYXp5LmZvcmNlXG5sZXQgZnByaW50ZiA9IFByaW50Zi5mcHJpbnRmXG5sZXQgaW52YWxpZF9hcmdmID0gQmFzZS5QcmludGYuaW52YWxpZF9hcmdmXG5sZXQgaWZwcmludGYgPSBQcmludGYuaWZwcmludGZcbmxldCBpc19ub25lID0gT3B0aW9uLmlzX25vbmVcbmxldCBpc19zb21lID0gT3B0aW9uLmlzX3NvbWVcbmxldCBrc3ByaW50ZiA9IFByaW50Zi5rc3ByaW50ZlxubGV0IG9rX2V4biA9IE9yX2Vycm9yLm9rX2V4blxubGV0IHBoeXNfZXF1YWwgPSBCYXNlLnBoeXNfZXF1YWxcbmxldCBwcmludF9zID0gU3RkaW8ucHJpbnRfc1xubGV0IGVwcmludF9zID0gU3RkaW8uZXByaW50X3NcbmxldCBwcmludGYgPSBQcmludGYucHJpbnRmXG5sZXQgcHJvdGVjdCA9IEV4bi5wcm90ZWN0XG5sZXQgcHJvdGVjdHggPSBFeG4ucHJvdGVjdHhcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHJvdW5kID0gRmxvYXQucm91bmRcbmxldCAoICoqLiApID0gQmFzZS4oICoqLiApXG5sZXQgKCAlLiApID0gQmFzZS4oICUuIClcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5sZXQgdW5zdGFnZSA9IFN0YWdlZC51bnN0YWdlXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxubGV0IHdpdGhfcmV0dXJuX29wdGlvbiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuX29wdGlvblxuXG4oKiBXaXRoIHRoZSBmb2xsb3dpbmcgYWxpYXNlcywgd2UgYXJlIGp1c3QgbWFraW5nIGV4dHJhIHN1cmUgdGhhdCB0aGUgdG9wbGV2ZWwgc2V4cFxuICAgY29udmVydGVycyBsaW5lIHVwIHdpdGggdGhlIG9uZXMgaW4gb3VyIG1vZHVsZXMuICopXG5cblxuaW5jbHVkZSBUeXBlcmVwX2xpYi5TdGRfaW50ZXJuYWxcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgKCogW2Rlcml2aW5nIGhhc2hdIGlzIG1pc3NpbmcgZm9yIFthcnJheV0sIFtieXRlc10sIGFuZCBbcmVmXSBzaW5jZSB0aGVzZSB0eXBlcyBhcmVcbiAgICAgbXV0YWJsZS4gKilcbiAgdHlwZSAnYSBhcnJheSA9ICdhIEFycmF5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBib29sID0gQm9vbC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGZsb2F0ID0gRmxvYXQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludCA9IEludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50NjQgPSBJbnQ2NC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGF6eV90ID0gJ2EgTGF6eS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2EgbGlzdCA9ICdhIExpc3QudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2Egb3B0aW9uID0gJ2EgT3B0aW9uLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBzdHJpbmcgPSBTdHJpbmcudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIHJlZiA9ICdhIFJlZi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICAoKiBCaW5fcHJvdCBoYXMgb3B0aW1pemVkIGZ1bmN0aW9ucyBmb3IgZmxvYXQgYXJyYXlzICopXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gRmxvYXQudCBhcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlIGZsb2F0X2FycmF5IDo9IGZsb2F0X2FycmF5KVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIGFycmF5XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYm9vbFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGNoYXJcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBnbG9iYWxpemUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDMyXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50NjRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgbmF0aXZlaW50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgJ2Egb3B0aW9uXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgYnl0ZXNcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWZcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgZ2xvYmFsaXplLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuZW5kXG53aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbndpdGggdHlwZSBib29sIDo9IGJvb2xcbndpdGggdHlwZSBjaGFyIDo9IGNoYXJcbndpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxud2l0aCB0eXBlIGludCA6PSBpbnRcbndpdGggdHlwZSBpbnQzMiA6PSBpbnQzMlxud2l0aCB0eXBlIGludDY0IDo9IGludDY0XG53aXRoIHR5cGUgJ2EgbGlzdCA6PSAnYSBsaXN0XG53aXRoIHR5cGUgbmF0aXZlaW50IDo9IG5hdGl2ZWludFxud2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbndpdGggdHlwZSBzdHJpbmcgOj0gc3RyaW5nXG53aXRoIHR5cGUgYnl0ZXMgOj0gYnl0ZXNcbndpdGggdHlwZSAnYSBsYXp5X3QgOj0gJ2EgbGF6eV90XG53aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxud2l0aCB0eXBlIHVuaXQgOj0gdW5pdClcblxubGV0IHNleHBfb2ZfZXhuID0gRXhuLnNleHBfb2ZfdFxuXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdIFtAQGltbWVkaWF0ZTY0XVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2ZfcmVwciA6IFJlcHIudCAtPiB0XG4gIHZhbCB0b19yZXByIDogdCAtPiBSZXByLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBSZXByLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgb2ZfcmVwciA9IEZuLmlkXG4gIGxldCB0b19yZXByID0gRm4uaWRcblxuICBsZXQgdG9fc3RyaW5nIG4gPVxuICAgIGxldCBvcGVuIFJlcHIgaW5cbiAgICBsZXQga2liID0gb2ZfaW50IDEwMjQgaW5cbiAgICBsZXQgbWliID0ga2liICoga2liIGluXG4gICAgbGV0IGdpYiA9IGtpYiAqIG1pYiBpblxuICAgIGxldCBuX2FicyA9IGFicyBuIGluXG4gICAgaWYgbl9hYnMgPCBraWJcbiAgICB0aGVuIHNwcmludGYgXCIlZEJcIiAodG9faW50X2V4biBuKVxuICAgIGVsc2UgaWYgbl9hYnMgPCBtaWJcbiAgICB0aGVuIHNwcmludGYgXCIlZ0tcIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBraWIpXG4gICAgZWxzZSBpZiBuX2FicyA8IGdpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnTVwiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IG1pYilcbiAgICBlbHNlIHNwcmludGYgXCIlZ0dcIiAodG9fZmxvYXQgbiAvLiB0b19mbG9hdCBnaWIpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgbilcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGJ5dGVzX2ludF9leG4gdCA9IFJlcHIudG9faW50X2V4biAodG9fcmVwciB0KVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBCaWdhcnJheVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZV9iaWdzdHJpbmdcblxuICAgIG1vZHVsZSBaIDogc2lnXG4gICAgICB0eXBlIHQgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJpZ3N0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICgqIGJpZ3N0cmluZydzIHNlcmlhbGl6YXRpb24gaXMgaW50ZW5kZWQgdG8gYmUgc3RhYmxlLiAgV2UgYXNzZXJ0IGl0IGhlcmUgcmF0aGVyXG4gICAgICAgICB0aGFuIGFzc2VydGluZyBpdCBpbiB0d28gc2VwYXJhdGUgcGxhY2VzIGZvciB0aGUgYmluX2lvIGFuZCBzZXhwIGRlZmluaXRpb25zLiAqKVxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBaXG5cbiAgICB0eXBlIHRfZnJvemVuID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHN0YWJsZV93aXRuZXNzXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVCA9IFN0YWJsZS5WMVxuaW5jbHVkZSBUXG5tb2R1bGUgVW5zdGFibGUgPSBUXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nYyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLm1hcCBtYXhfbWVtX3dhaXRpbmdfZ2MgfmY6Qnl0ZV91bml0czAuYnl0ZXNfaW50X2V4blxuICBpblxuICBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplXG47O1xuXG5sZXQgc3ViX3NoYXJlZCA/KHBvcyA9IDApID9sZW4gKGJzdHIgOiB0KSA9XG4gIGxldCBsZW4gPSBnZXRfb3B0X2xlbiBic3RyIH5wb3MgbGVuIGluXG4gIEFycmF5MS5zdWIgYnN0ciBwb3MgbGVuXG47O1xuXG4oKiBEZXN0cnVjdGlvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveSA6IHQgLT4gdW5pdCA9IFwiYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlwiXG5cbmV4dGVybmFsIHVuc2FmZV9kZXN0cm95X2FuZF9yZXNpemUgOiB0IC0+IGxlbjppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX3JlYWxsb2NcIlxuXG4oKiBSZWFkaW5nIC8gd3JpdGluZyBiaW4tcHJvdCAqKVxuXG5sZXQgcmVhZF9iaW5fcHJvdF92ZXJib3NlX2Vycm9ycyB0ID8ocG9zID0gMCkgP2xlbiByZWFkZXIgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gdCBsZW4gfnBvcyBpblxuICBsZXQgbGltaXQgPSBwb3MgKyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwicmVhZF9iaW5fcHJvdF92ZXJib3NlX2Vycm9yc1wiIHQgfnBvcyB+bGVuO1xuICBsZXQgaW52YWxpZF9kYXRhIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICAgIGBJbnZhbGlkX2RhdGEgKEVycm9yLmNyZWF0ZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuICBpblxuICBsZXQgcmVhZCBiaW5fcmVhZGVyIH5wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gbGltaXQgLSBwb3NcbiAgICB0aGVuIGBOb3RfZW5vdWdoX2RhdGFcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgdHJ5IGBPayAoYmluX3JlYWRlciB0IH5wb3NfcmVmKSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IGBJbnZhbGlkX2RhdGEgKEVycm9yLm9mX2V4biBleG4pXG4gICAgICB3aXRoXG4gICAgICB8IGBJbnZhbGlkX2RhdGEgXyBhcyB4IC0+IHhcbiAgICAgIHwgYE9rIHJlc3VsdCAtPlxuICAgICAgICBsZXQgZXhwZWN0ZWRfcG9zID0gcG9zICsgbGVuIGluXG4gICAgICAgIGlmICFwb3NfcmVmID0gZXhwZWN0ZWRfcG9zXG4gICAgICAgIHRoZW4gYE9rIChyZXN1bHQsIGV4cGVjdGVkX3BvcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfZGF0YVxuICAgICAgICAgICAgXCJwb3NfcmVmIDw+IGV4cGVjdGVkX3Bvc1wiXG4gICAgICAgICAgICAoIXBvc19yZWYsIGV4cGVjdGVkX3BvcylcbiAgICAgICAgICAgIFslc2V4cF9vZjogaW50ICogaW50XSlcbiAgaW5cbiAgbWF0Y2hcbiAgICByZWFkIEJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIH5wb3MgfmxlbjpCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGhcbiAgd2l0aFxuICB8IChgTm90X2Vub3VnaF9kYXRhIHwgYEludmFsaWRfZGF0YSBfKSBhcyB4IC0+IHhcbiAgfCBgT2sgKGVsZW1lbnRfbGVuZ3RoLCBwb3MpIC0+XG4gICAgaWYgZWxlbWVudF9sZW5ndGggPCAwXG4gICAgdGhlbiBpbnZhbGlkX2RhdGEgXCJuZWdhdGl2ZSBlbGVtZW50IGxlbmd0aCAlZFwiIGVsZW1lbnRfbGVuZ3RoIFslc2V4cF9vZjogaW50XVxuICAgIGVsc2UgcmVhZCByZWFkZXIuQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkIH5wb3MgfmxlbjplbGVtZW50X2xlbmd0aFxuOztcblxubGV0IHJlYWRfYmluX3Byb3QgdCA/cG9zID9sZW4gcmVhZGVyID1cbiAgbWF0Y2ggcmVhZF9iaW5fcHJvdF92ZXJib3NlX2Vycm9ycyB0ID9wb3MgP2xlbiByZWFkZXIgd2l0aFxuICB8IGBPayB4IC0+IE9rIHhcbiAgfCBgSW52YWxpZF9kYXRhIGUgLT4gRXJyb3IgKEVycm9yLnRhZyBlIH50YWc6XCJJbnZhbGlkIGRhdGFcIilcbiAgfCBgTm90X2Vub3VnaF9kYXRhIC0+IE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm5vdCBlbm91Z2ggZGF0YVwiXG47O1xuXG5sZXQgd3JpdGVfYmluX3Byb3Rfa25vd25fc2l6ZSB0ID8ocG9zID0gMCkgd3JpdGUgfnNpemU6ZGF0YV9sZW4gdiA9XG4gIGxldCB0b3RhbF9sZW4gPSBkYXRhX2xlbiArIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCBpblxuICBpZiBwb3MgPCAwXG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdDogbmVnYXRpdmUgcG9zXCIgcG9zIFslc2V4cF9vZjogaW50XTtcbiAgaWYgcG9zICsgdG90YWxfbGVuID4gbGVuZ3RoIHRcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5vdCBlbm91Z2ggcm9vbVwiXG4gICAgICAoYHBvcyBwb3MsIGBwb3NfYWZ0ZXJfd3JpdGluZyAocG9zICsgdG90YWxfbGVuKSwgYGJpZ3N0cmluZ19sZW5ndGggKGxlbmd0aCB0KSlcbiAgICAgIFslc2V4cF9vZjpcbiAgICAgICAgWyBgcG9zIG9mIGludCBdICogWyBgcG9zX2FmdGVyX3dyaXRpbmcgb2YgaW50IF0gKiBbIGBiaWdzdHJpbmdfbGVuZ3RoIG9mIGludCBdXTtcbiAgbGV0IHBvc19hZnRlcl9zaXplX2hlYWRlciA9IEJpbl9wcm90LlV0aWxzLmJpbl93cml0ZV9zaXplX2hlYWRlciB0IH5wb3MgZGF0YV9sZW4gaW5cbiAgbGV0IHBvc19hZnRlcl9kYXRhID0gd3JpdGUgdCB+cG9zOnBvc19hZnRlcl9zaXplX2hlYWRlciB2IGluXG4gIGlmIHBvc19hZnRlcl9kYXRhIC0gcG9zIDw+IHRvdGFsX2xlblxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIkJpZ3N0cmluZy53cml0ZV9iaW5fcHJvdCBidWchXCJcbiAgICAgICggYHBvc19hZnRlcl9kYXRhIHBvc19hZnRlcl9kYXRhXG4gICAgICAsIGBzdGFydF9wb3MgcG9zXG4gICAgICAsIGBiaW5fcHJvdF9zaXplX2hlYWRlcl9sZW5ndGggQmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gICAgICAsIGBkYXRhX2xlbiBkYXRhX2xlblxuICAgICAgLCBgdG90YWxfbGVuIHRvdGFsX2xlbiApXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvc19hZnRlcl9kYXRhIG9mIGludCBdXG4gICAgICAgICogWyBgc3RhcnRfcG9zIG9mIGludCBdXG4gICAgICAgICogWyBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIG9mIGludCBdXG4gICAgICAgICogWyBgZGF0YV9sZW4gb2YgaW50IF1cbiAgICAgICAgKiBbIGB0b3RhbF9sZW4gb2YgaW50IF1dO1xuICBwb3NfYWZ0ZXJfZGF0YVxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90IHQgP3BvcyAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgdiA9XG4gIGxldCBzaXplID0gd3JpdGVyLnNpemUgdiBpblxuICB3cml0ZV9iaW5fcHJvdF9rbm93bl9zaXplIHQgP3BvcyB3cml0ZXIud3JpdGUgfnNpemUgdlxuOztcblxuKCogSGV4IGR1bXAgKilcblxuaW5jbHVkZSBIZXhkdW1wLk9mX2luZGV4YWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHJlYyBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWYgfm1pbl9wb3MgfnBvcyB+Y2hhciA9XG4gIGxldCBwb3MnID0gcG9zIC0gMSBpblxuICBpZiBwb3MnID49IG1pbl9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MnKSBjaGFyXG4gIHRoZW4gbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3M6cG9zJyB+Y2hhclxuICBlbHNlIHBvc1xuOztcblxubGV0IGdldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9lbmQgPVxuICAgIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1Zjp0IH5taW5fcG9zOnBvcyB+cG9zOihwb3MgKyBsZW4pIH5jaGFyOnBhZGRpbmdcbiAgaW5cbiAgdG9fc3RyaW5nIHQgfnBvcyB+bGVuOihkYXRhX2VuZCAtIHBvcylcbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nX2xvY2FsIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgXG4gICAgKGxldCBkYXRhX2VuZCA9XG4gICAgICAgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmOnQgfm1pbl9wb3M6cG9zIH5wb3M6KHBvcyArIGxlbikgfmNoYXI6cGFkZGluZ1xuICAgICBpblxuICAgICBsZXQgbGVuID0gZGF0YV9lbmQgLSBwb3MgaW5cbiAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZV9sb2NhbCBsZW4gaW5cbiAgICAgVG9fYnl0ZXMuYmxpdCB+c3JjOnQgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbjs7XG5cbmxldFtAY29sZF0gc2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIH5oZWFkX29yX3RhaWwgfnZhbHVlIH5sZW4gPVxuICBQcmludGYuZmFpbHdpdGhmXG4gICAgXCJCaWdzdHJpbmcuc2V0XyVzX3BhZGRlZF9maXhlZF9zdHJpbmc6ICVTIGlzIGxvbmdlciB0aGFuICVkXCJcbiAgICBoZWFkX29yX3RhaWxcbiAgICAoWyVnbG9iYWxpemU6IHN0cmluZ10gdmFsdWUpXG4gICAgbGVuXG4gICAgKClcbjs7XG5cbmxldCBzZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICh2YWx1ZSBbQGxvY2FsXSkgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggdmFsdWUgaW5cbiAgaWYgc2xlbiA+IGxlbiB0aGVuIHNldF9wYWRkZWRfZml4ZWRfc3RyaW5nX2ZhaWxlZCB+aGVhZF9vcl90YWlsOlwidGFpbFwiIH52YWx1ZSB+bGVuO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6cG9zIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgKyBzbGVuIHRvIHBvcyArIGxlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IHJlYyBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3Mgfm1heF9wb3MgfmNoYXIgPVxuICBpZiBwb3MgPD0gbWF4X3BvcyAmJiBDaGFyLiggPSApIChnZXQgYnVmIHBvcykgY2hhclxuICB0aGVuIGZpcnN0X25vbm1hdGNoIH5idWYgfnBvczooSW50LnN1Y2MgcG9zKSB+bWF4X3BvcyB+Y2hhclxuICBlbHNlIHBvc1xuOztcblxubGV0IHNldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKHZhbHVlIFtAbG9jYWxdKSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuIHRoZW4gc2V0X3BhZGRlZF9maXhlZF9zdHJpbmdfZmFpbGVkIH5oZWFkX29yX3RhaWw6XCJoZWFkXCIgfnZhbHVlIH5sZW47XG4gIEZyb21fc3RyaW5nLmJsaXQgfnNyYzp2YWx1ZSB+ZHN0OnQgfnNyY19wb3M6MCB+ZHN0X3BvczoocG9zICsgbGVuIC0gc2xlbikgfmxlbjpzbGVuO1xuICBmb3IgaSA9IHBvcyB0byBwb3MgKyBsZW4gLSBzbGVuIC0gMSBkb1xuICAgIHNldCB0IGkgcGFkZGluZ1xuICBkb25lXG47O1xuXG5sZXQgZ2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiAoKSA9XG4gIGxldCBkYXRhX2JlZ2luID0gZmlyc3Rfbm9ubWF0Y2ggfmJ1Zjp0IH5wb3Mgfm1heF9wb3M6KHBvcyArIGxlbiAtIDEpIH5jaGFyOnBhZGRpbmcgaW5cbiAgdG9fc3RyaW5nIHQgfnBvczpkYXRhX2JlZ2luIH5sZW46KGxlbiAtIChkYXRhX2JlZ2luIC0gcG9zKSlcbjs7XG5cbmxldCBnZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nX2xvY2FsIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgXG4gICAgKGxldCBkYXRhX2JlZ2luID0gZmlyc3Rfbm9ubWF0Y2ggfmJ1Zjp0IH5wb3Mgfm1heF9wb3M6KHBvcyArIGxlbiAtIDEpIH5jaGFyOnBhZGRpbmcgaW5cbiAgICAgbGV0IGxlbiA9IGxlbiAtIChkYXRhX2JlZ2luIC0gcG9zKSBpblxuICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlX2xvY2FsIGxlbiBpblxuICAgICBUb19ieXRlcy5ibGl0IH5zcmM6dCB+c3JjX3BvczpkYXRhX2JlZ2luIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5iaWdzdHJpbmdcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmJpZ3N0cmluZ1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbl9wcm90XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgIHsgc2l6ZSA6ICdhIFNpemUuc2l6ZXJcbiAgICA7IHdyaXRlIDogJ2EgV3JpdGUud3JpdGVyXG4gICAgfVxuXG4gIGxldCB0b19zdHJpbmcgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYgaW5cbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHN0clxuICA7O1xuXG4gIGxldCB0b19ieXRlcyB0IHYgPVxuICAgIGxldCBsZW4gPSB0LnNpemUgdiBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIGxlbiBpblxuICAgIGxldCBwb3MgPSB0LndyaXRlIGJ1ZiB+cG9zOjAgdiBpblxuICAgIGFzc2VydCAocG9zID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIGxldCBzdHIgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmVhZGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyID1cbiAgICB7IHJlYWQgOiAnYSBSZWFkLnJlYWRlclxuICAgIDsgdnRhZ19yZWFkIDogKGludCAtPiAnYSkgUmVhZC5yZWFkZXJcbiAgICB9XG5cbiAgbGV0IG9mX3N0cmluZyB0IHN0cmluZyA9XG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5vZl9zdHJpbmcgc3RyaW5nIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5cbiAgbGV0IG9mX2J5dGVzIHQgYnl0ZXMgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2ZfYnl0ZXMgYnl0ZXMgaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAwIGluXG4gICAgbGV0IHYgPSB0LnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgYXNzZXJ0ICghcG9zX3JlZiA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBCaWdzdHJpbmcudW5zYWZlX2Rlc3Ryb3kgYnVmO1xuICAgIHZcbiAgOztcbmVuZFxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCaW5fcHJvdC5NZDVcblxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBTdHJpbmcuc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgcyA9IHMgfD4gU3RyaW5nLnRfb2Zfc2V4cCB8PiBvZl9oZXhfZXhuXG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgaGFzaF9mb2xkX3QgYWNjdW0gdCA9IFN0cmluZy5oYXNoX2ZvbGRfdCBhY2N1bSAoVC50b19iaW5hcnkgdClcbmxldCBoYXNoIHQgPSBTdHJpbmcuaGFzaCAoVC50b19iaW5hcnkgdClcblxubW9kdWxlIEFzX2JpbmFyeV9zdHJpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF90XG4gICAgICBsZXQgaGFzaCA9IGhhc2hcbiAgICAgIGxldCBzZXhwX29mX3QgeCA9IFN0cmluZy5zZXhwX29mX3QgKFQudG9fYmluYXJ5IHgpXG4gICAgICBsZXQgdF9vZl9zZXhwIHggPSBULm9mX2JpbmFyeV9leG4gKFN0cmluZy50X29mX3NleHAgeClcbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICAgIGxldCB0b19iaW5hYmxlID0gVC50b19iaW5hcnlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gVC5vZl9iaW5hcnlfZXhuXG5cbiAgICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBTdHJpbmcuU3RhYmxlLlYxXG5cbiAgICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19iaW5hYmxlXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9iaW5hYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RyaW5nLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIG9mX2JpbmFibGVcbiAgICAgICAgICB0b19iaW5hYmxlXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgIGxldCBoYXNoID0gaGFzaFxuICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICBsZXQgb2ZfYmluYWJsZSA9IEZuLmlkXG5cbiAgICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbl9wcm90Lk1kNS5TdGFibGUuVjFcblxuICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgIGVuZClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgQmluX3Byb3QuTWQ1LlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICBvZl9iaW5hYmxlXG4gICAgICAgIHRvX2JpbmFibGVcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZGlnZXN0X3N0cmluZyBzID0gTWQ1X2xpYi5zdHJpbmcgc1xuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBkaWdlc3RfbnVtX2J5dGVzID0gMTZcbmxldCB0b19oZXggPSBULnRvX2hleFxubGV0IGZyb21faGV4ID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfaGV4X2V4biA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2JpbmFyeV9leG4gPSBULm9mX2JpbmFyeV9leG5cbmxldCB0b19iaW5hcnkgPSBULnRvX2JpbmFyeVxubGV0IGRpZ2VzdF9zdHJpbmcgPSBTdGFibGUuZGlnZXN0X3N0cmluZ1xubGV0IGRpZ2VzdF9ieXRlcyA9IE1kNV9saWIuYnl0ZXNcblxuZXh0ZXJuYWwgY2FtbF9zeXNfb3BlblxuICA6ICBzdHJpbmdcbiAgLT4gU3RkbGliLm9wZW5fZmxhZyBsaXN0XG4gIC0+IHBlcm06aW50XG4gIC0+IGludFxuICA9IFwiY2FtbF9zeXNfb3BlblwiXG5cbmV4dGVybmFsIGNhbWxfc3lzX2Nsb3NlIDogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcbmV4dGVybmFsIGRpZ2VzdF9mZF9ibG9ja2luZyA6IGludCAtPiBzdHJpbmcgPSBcImNvcmVfbWQ1X2ZkXCJcblxubGV0IGRpZ2VzdF9maWxlX2Jsb2NraW5nIHBhdGggPVxuICBvZl9iaW5hcnlfZXhuXG4gICAgKEJhc2UuRXhuLnByb3RlY3R4XG4gICAgICAgKGNhbWxfc3lzX29wZW4gcGF0aCBbIE9wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeSBdIH5wZXJtOjBvMDAwKVxuICAgICAgIH5mOmRpZ2VzdF9mZF9ibG9ja2luZ1xuICAgICAgIH5maW5hbGx5OmNhbWxfc3lzX2Nsb3NlKVxuOztcblxubGV0IGZpbGUgPSBkaWdlc3RfZmlsZV9ibG9ja2luZ1xuXG5sZXQgZGlnZXN0X2NoYW5uZWxfYmxvY2tpbmdfd2l0aG91dF9yZWxlYXNpbmdfcnVudGltZV9sb2NrIGNoYW5uZWwgfmxlbiA9XG4gIG9mX2JpbmFyeV9leG4gKFN0ZGxpYi5EaWdlc3QuY2hhbm5lbCBjaGFubmVsIGxlbilcbjs7XG5cbmxldCBjaGFubmVsIGNoYW5uZWwgbGVuID1cbiAgZGlnZXN0X2NoYW5uZWxfYmxvY2tpbmdfd2l0aG91dF9yZWxlYXNpbmdfcnVudGltZV9sb2NrIGNoYW5uZWwgfmxlblxuOztcblxubGV0IG91dHB1dF9ibG9ja2luZyB0IG9jID0gU3RkbGliLkRpZ2VzdC5vdXRwdXQgb2MgKHRvX2JpbmFyeSB0KVxubGV0IG91dHB1dCBvYyB0ID0gb3V0cHV0X2Jsb2NraW5nIHQgb2NcbmxldCBpbnB1dF9ibG9ja2luZyBpYyA9IG9mX2JpbmFyeV9leG4gKFN0ZGxpYi5EaWdlc3QuaW5wdXQgaWMpXG5sZXQgaW5wdXQgPSBpbnB1dF9ibG9ja2luZ1xubGV0IGRpZ2VzdF9zdWJieXRlcyA9IE1kNV9saWIuc3ViYnl0ZXNcbmxldCBzdHJpbmcgPSBkaWdlc3Rfc3RyaW5nXG5sZXQgYnl0ZXMgPSBkaWdlc3RfYnl0ZXNcbmxldCBzdWJieXRlcyBzIHBvcyBsZW4gPSBkaWdlc3Rfc3ViYnl0ZXMgcyB+cG9zIH5sZW5cblxubGV0IGRpZ2VzdF9iaW5fcHJvdCB3cml0ZXIgdmFsdWUgPVxuICBkaWdlc3Rfc3RyaW5nIChDb3JlX2Jpbl9wcm90LldyaXRlci50b19zdHJpbmcgd3JpdGVyIHZhbHVlKVxuOztcblxuZXh0ZXJuYWwgY19kaWdlc3Rfc3ViYmlnc3RyaW5nXG4gIDogIEJpZ3N0cmluZy50XG4gIC0+IHBvczppbnRcbiAgLT4gbGVuOmludFxuICAtPiByZXM6Qnl0ZXMudFxuICAtPiB1bml0XG4gID0gXCJjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nXCJcblxubGV0IHVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAoKiBJdCdzIG1vcmUgZWZmaWNpZW50IHRvIGFsbG9jYXRlIHRoZSByZXN1bHQgb24gdGhlIE9DYW1sIHNpZGUgYW5kIGRlY2xhcmUgdGhlIENcbiAgICAgZnVuY3Rpb24gYXMgbm9hbGxvYyB0aGFuIHRvIGxldCB0aGUgQyBmdW5jdGlvbiBhbGxvY2F0ZS4gKilcbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAxNiBpblxuICBjX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiB+cmVzO1xuICBNZDVfbGliLnVuc2FmZV9vZl9iaW5hcnlcbiAgICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXMpXG47O1xuXG5sZXQgZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgIH5wb3NcbiAgICB+bGVuXG4gICAgfnRvdGFsX2xlbmd0aDooQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG47O1xuXG5sZXQgZGlnZXN0X2JpZ3N0cmluZyBidWYgPVxuICB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvczowIH5sZW46KEJpZ3N0cmluZy5sZW5ndGggYnVmKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hYmxlX2ludGZcbmluY2x1ZGUgQmluYWJsZTBcblxuKCogW29mX3N0cmluZ10gYW5kIFt0b19zdHJpbmddIGNhbid0IGdvIGluIGJpbmFibGUwLm1sIGR1ZSB0byBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IG9mX3N0cmluZyBtIHN0cmluZyA9IG9mX2JpZ3N0cmluZyBtIChCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZylcbmxldCB0b19zdHJpbmcgbSB0ID0gQmlnc3RyaW5nLnRvX3N0cmluZyAodG9fYmlnc3RyaW5nIG0gdClcbiIsIigqIEZ1bmN0aW9ucyBmb3IgcGFyc2luZyB0aW1lIHpvbmUgZGF0YWJhc2UgZmlsZXMgKHppYyBmaWxlcykuXG5cbiAgIEEgdGltZSB6b25lIGZpbGUgY29uc2lzdHMgKGNvbmNlcHR1YWxseSAtIHRoZSByZXByZXNlbnRhdGlvbiBpcyBtb3JlXG4gICBjb21wYWN0KSBvZiBhbiBvcmRlcmVkIGxpc3Qgb2YgKFRpbWUudCAqIFtsb2NhbF90aW1lX3R5cGVdKSB0aGF0IG1hcmtcbiAgIHRoZSBib3VuZGFyaWVzIChtYXJrZWQgZnJvbSB0aGUgZXBvY2gpIGF0IHdoaWNoIHZhcmlvdXMgdGltZSBhZGp1c3RtZW50XG4gICByZWdpbWVzIGFyZSBpbiBlZmZlY3QuICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgYnJlYWtpbmcgZG93biBhbGxcbiAgIHRpbWUgcGFzdCB0aGUgZXBvY2ggaW50byByYW5nZXMgd2l0aCBhIFtsb2NhbF90aW1lX3R5cGVdIHRoYXQgZGVzY3JpYmVzIHRoZVxuICAgb2Zmc2V0IGZyb20gR01UIHRvIGFwcGx5IHRvIGVhY2ggcmFuZ2UgdG8gZ2V0IGxvY2FsIHRpbWUuXG4qKVxuXG5vcGVuIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgWm9uZV9pbnRmXG5cbmV4Y2VwdGlvbiBJbnZhbGlkX2ZpbGVfZm9ybWF0IG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBGdWxsX2RhdGEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBJbmRleCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICBsZXQgbmV4dCA9IEludC5zdWNjXG4gICAgICAgIGxldCBwcmV2ID0gSW50LnByZWRcbiAgICAgICAgbGV0IGJlZm9yZV9maXJzdF90cmFuc2l0aW9uID0gLTFcblxuICAgICAgICAoKiBTb21lIGV4aXN0aW5nIGNsaWVudHMgZXhwZWN0IFtpbmRleCA+PSAwXSwgc28gd2UgbmV2ZXIgc2VyaWFsaXplIGEgbmVnYXRpdmVcbiAgICAgICAgICAgaW5kZXguIFRoaXMgY29udmVyc2lvbiBjYW4gYmUgcmVtb3ZlZCBpZiBuZXcgc3RhYmxlIHZlcnNpb25zIGFyZSBtaW50ZWQuICopXG4gICAgICAgIGxldCB0b19leHRlcm5hbCB0ID0gbWF4IDAgdFxuXG4gICAgICAgICgqIFdoZW4gdGhlIGluZGV4IG9mIGEgdGltZSB6b25lIHdpdGggbm8gdHJhbnNpdGlvbnMgaXMgY29udmVydGVkIHZpYSB0b19leHRlcm5hbCxcbiAgICAgICAgICAgaXRzIHZhbHVlIGJlY29tZXMgMCBldmVuIHRob3VnaCBpdHMgdHJhbnNpdGlvbiBhcnJheSBpcyBlbXB0eSAoYW5kIGl0IHNob3VsZFxuICAgICAgICAgICBoYXZlIGJlZW4gLTEpLiBXaGVuIHRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgY2hhbmdlZCBiYWNrIHRvIGEgWm9uZS50IHRocm91Z2hcbiAgICAgICAgICAgb2ZfZXh0ZXJuYWwsIHJldHVybmluZyB0aGlzIHZhbHVlIGZvciBpdHMgaW5kZXggY291bGQgcmVzdWx0IGluIHVuc2FmZSBhcnJheVxuICAgICAgICAgICBhY2Nlc3NlcyB0byB0aGUgdHJhbnNpdGlvbiBhcnJheSBvZiB0aGUgem9uZSAoc2luY2UgdGhlcmUgaXMgbm8gdHJhbnNpdGlvbiBhdFxuICAgICAgICAgICBpbmRleCAwKS4gQWxzbywgaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBrZWVwIHRoZSBjb252ZXJ0ZWQgaW5kZXggYmVjYXVzZSBpdFxuICAgICAgICAgICBpcyBpbnRlbmRlZCB0byBiZSBhIG11dGFibGUgdmFsdWUgdXNlZCBmb3IgY2FjaGluZy4gU28gb2ZfZXh0ZXJuYWwgYWx3YXlzIHNldHNcbiAgICAgICAgICAgdGhlIGluZGV4IHRvIC0xLCB3aGljaCBpcyBhIHNhZmUgdmFsdWUuICopXG4gICAgICAgIGxldCBvZl9leHRlcm5hbCAoXyA6IHQpID0gLTFcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fZXh0ZXJuYWxcbiAgICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9leHRlcm5hbFxuICAgICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBJbnQuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgICBvZl9leHRlcm5hbFxuICAgICAgICAgICAgdG9fZXh0ZXJuYWxcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGVcbiAgICAgICAgICAgIChJbnQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2ltZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdXRjX29mZnNldF9pbl9zZWNvbmRzIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IGlzX2RzdCA6IGJvb2xcbiAgICAgICAgICA7IGFiYnJ2IDogc3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kXG5cbiAgICAgICgqIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHdoZW4gbGVhcCBzZWNvbmRzIHNob3VsZCBiZSBhcHBsaWVkIC0gdW51c2VkXG4gICAgICAgICBiZWNhdXNlIHdlIGFyZSB0cmFuc2xhdGluZyBiYXNlZCBvbiBhIGVwb2NoIHN5c3RlbSBjbG9jayAoc2VlIHRoZSBDb3JlX3pvbmVcbiAgICAgICAgIGRvY3VtZW50YXRpb24pLiAqKVxuICAgICAgbW9kdWxlIExlYXBfc2Vjb25kID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgeyB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggOiBJbnQ2My5TdGFibGUuVjEudFxuICAgICAgICAgIDsgc2Vjb25kcyA6IGludFxuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgVHJhbnNpdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IG5ld19yZWdpbWUgOiBSZWdpbWUudFxuICAgICAgICAgIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgO1xuICAgICAgICAgIGRpZ2VzdCA6IE1kNS5Bc19iaW5hcnlfc3RyaW5nLlN0YWJsZS5WMS50IG9wdGlvblxuICAgICAgICA7IHRyYW5zaXRpb25zIDogVHJhbnNpdGlvbi50IGFycmF5XG4gICAgICAgIDsgKCogY2FjaGVzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB0cmFuc2l0aW9uIHdlIHVzZWQgdG8gbWFrZSBsb29rdXBzIGZhc3RlciAqKVxuICAgICAgICAgIG11dGFibGUgbGFzdF9yZWdpbWVfaW5kZXggOiBJbmRleC50XG4gICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgOiBSZWdpbWUudFxuICAgICAgICA7IGxlYXBfc2Vjb25kcyA6IExlYXBfc2Vjb25kLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAoKiB0aGlzIHJlbGllcyBvbiB6b25lcyB3aXRoIHRoZSBzYW1lIG5hbWUgaGF2aW5nIHRoZSBzYW1lIHRyYW5zaXRpb25zICopXG4gICAgICBsZXQgY29tcGFyZSB0MSB0MiA9IFN0cmluZy5jb21wYXJlIHQxLm5hbWUgdDIubmFtZVxuICAgICAgbGV0IG9yaWdpbmFsX2ZpbGVuYW1lIHpvbmUgPSB6b25lLm9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICBsZXQgZGlnZXN0IHpvbmUgPSB6b25lLmRpZ2VzdFxuXG4gICAgICBtb2R1bGUgWm9uZV9maWxlIDogc2lnXG4gICAgICAgIHZhbCBpbnB1dF90el9maWxlIDogem9uZW5hbWU6c3RyaW5nIC0+IGZpbGVuYW1lOnN0cmluZyAtPiB0XG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IGJvb2xfb2ZfaW50IGkgPSBpIDw+IDBcblxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19hc19pbnQzMiA9XG4gICAgICAgICAgbGV0IGxvbmcgPSBCeXRlcy5jcmVhdGUgNCBpblxuICAgICAgICAgIGxldCBpbnQzMl9vZl9jaGFyIGNociA9IEludDMyLm9mX2ludF9leG4gKGludF9vZl9jaGFyIGNocikgaW5cbiAgICAgICAgICBmdW4gaWMgLT5cbiAgICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmOmxvbmcgfnBvczowIH5sZW46NDtcbiAgICAgICAgICAgIGxldCBzYjEgPSBJbnQzMi5zaGlmdF9sZWZ0IChpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAwKSkgMjQgaW5cbiAgICAgICAgICAgIGxldCBzYjIgPSBJbnQzMi5zaGlmdF9sZWZ0IChpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAxKSkgMTYgaW5cbiAgICAgICAgICAgIGxldCBzYjMgPSBJbnQzMi5zaGlmdF9sZWZ0IChpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAyKSkgOCBpblxuICAgICAgICAgICAgbGV0IHNiNCA9IGludDMyX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nIDMpIGluXG4gICAgICAgICAgICBJbnQzMi5iaXRfb3IgKEludDMyLmJpdF9vciBzYjEgc2IyKSAoSW50MzIuYml0X29yIHNiMyBzYjQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCogTm90ZSB0aGF0IHRoaXMgaXMgb25seSBzYWZlIHRvIHVzZSBvbiBudW1iZXJzIHRoYXQgd2lsbCBmaXQgaW50byBhIDMxLWJpdFxuICAgICAgICAgICBpbnQuIFVOSVggdGltZXN0YW1wcyB3b24ndCwgZm9yIGV4YW1wbGUuICBJbiBvdXIgY2FzZSB0aGlzIGlzIG9ubHkgdXNlZFxuICAgICAgICAgICB0byBob2xkIHNtYWxsIG51bWJlcnMgdGhhdCBhcmUgbmV2ZXIgaW50ZXJwcmV0ZWQgYXMgdGltZXN0YW1wcy4gKilcbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50IGljID0gSW50MzIudG9faW50X2V4biAoaW5wdXRfbG9uZ19hc19pbnQzMiBpYylcbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50NjMgaWMgPSBJbnQ2My5vZl9pbnQzMiAoaW5wdXRfbG9uZ19hc19pbnQzMiBpYylcblxuICAgICAgICBsZXQgaW5wdXRfbG9uZ19sb25nX2FzX2ludDYzIGljID1cbiAgICAgICAgICBsZXQgaW50NjNfb2ZfY2hhciBjaHIgPSBJbnQ2My5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgbGV0IHNoaWZ0IGMgYml0cyA9IEludDYzLnNoaWZ0X2xlZnQgKGludDYzX29mX2NoYXIgYykgYml0cyBpblxuICAgICAgICAgIGxldCBsb25nX2xvbmcgPSBCeXRlcy5jcmVhdGUgOCBpblxuICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmOmxvbmdfbG9uZyB+cG9zOjAgfmxlbjo4O1xuICAgICAgICAgIGxldCByZXN1bHQgPSBzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAwKSA1NiBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAxKSA0OCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMikgNDApIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDMpIDMyKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA0KSAyNCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNSkgMTYpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDYpIDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKGludDYzX29mX2NoYXIgKEJ5dGVzLmdldCBsb25nX2xvbmcgNykpIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xpc3QgaWMgfmxlbiB+ZiA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wIGMgbHN0ID1cbiAgICAgICAgICAgIGlmIGMgPiAwIHRoZW4gbG9vcCAoYyAtIDEpIChmIGljIDo6IGxzdCkgZWxzZSBMaXN0LnJldiBsc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgbGVuIFtdXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2FycmF5IGljIH5sZW4gfmYgPSBBcnJheS5vZl9saXN0IChpbnB1dF9saXN0IGljIH5sZW4gfmYpXG5cbiAgICAgICAgbGV0IGlucHV0X3JlZ2ltZSBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19vZmZzZXRfaW5fc2Vjb25kcyA9IGlucHV0X2xvbmdfYXNfaW50NjMgaWMgaW5cbiAgICAgICAgICBsZXQgaXNfZHN0ID0gYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpIGluXG4gICAgICAgICAgbGV0IGFiYnJ2X2luZGV4ID0gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSBpblxuICAgICAgICAgIGxldCBsdCBhYmJydiA9IHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0OyBhYmJydiB9IGluXG4gICAgICAgICAgbHQsIGFiYnJ2X2luZGV4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2FiYnJldmlhdGlvbnMgaWMgfmxlbiA9XG4gICAgICAgICAgbGV0IHJhd19hYmJydnMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+bGVuIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgICAgICAgIGxldCBfLCBpbmRleGVkX2FiYnJ2cyA9XG4gICAgICAgICAgICBMaXN0LmZvbGQgcmF3X2FiYnJ2cyB+aW5pdDooMCwgTWFwLlBvbHkuZW1wdHkpIH5mOihmdW4gKGluZGV4LCBhYmJydnMpIGMgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgICAgICAgIHwgJ1xcMDAwJyAtPlxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgICAgICAgICAgICAgIGxldCBuZXh0X2luZGV4ID0gaW5kZXggKyBTdHJpbmcubGVuZ3RoIGRhdGEgKyAxIGluXG4gICAgICAgICAgICAgICAgbGV0IGFiYnJ2cyA9IE1hcC5zZXQgYWJicnZzIH5rZXk6aW5kZXggfmRhdGEgaW5cbiAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgICAgICAgICAgIG5leHRfaW5kZXgsIGFiYnJ2c1xuICAgICAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGM7XG4gICAgICAgICAgICAgICAgaW5kZXgsIGFiYnJ2cylcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYnVmIDw+IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoSW52YWxpZF9maWxlX2Zvcm1hdFxuICAgICAgICAgICAgICAgICBcIm1pc3NpbmcgXFwwMDAgdGVybWluYXRpbmcgY2hhcmFjdGVyIGluIGlucHV0X2FiYnJldmlhdGlvbnNcIik7XG4gICAgICAgICAgaW5kZXhlZF9hYmJydnNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV9nZW4gfmlucHV0X3RyYW5zaXRpb24gfmlucHV0X2xlYXBfc2Vjb25kIGljID1cbiAgICAgICAgICBsZXQgdXRjX2xvY2FsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgc3RkX3dhbGxfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBsZWFwX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHR5cGVfY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCBhYmJydl9jaGFyX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbl90aW1lcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0IGljIH5mOmlucHV0X3RyYW5zaXRpb24gfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbl9pbmRpY2VzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3RcbiAgICAgICAgICAgICAgaWNcbiAgICAgICAgICAgICAgfmY6KGZ1biBpYyAtPiBPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKVxuICAgICAgICAgICAgICB+bGVuOnRyYW5zaXRpb25fY291bnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9yZWdpbWUgfmxlbjp0eXBlX2NvdW50IGluXG4gICAgICAgICAgbGV0IGFiYnJldmlhdGlvbnMgPSBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW46YWJicnZfY2hhcl9jb3VudCBpblxuICAgICAgICAgIGxldCBsZWFwX3NlY29uZHMgPSBpbnB1dF9saXN0IGljIH5mOmlucHV0X2xlYXBfc2Vjb25kIH5sZW46bGVhcF9jb3VudCBpblxuICAgICAgICAgICgqIFRoZSBmb2xsb3dpbmcgdHdvIGFycmF5cyBpbmRpY2F0ZSB0d28gYm9vbGVhbiB2YWx1ZXMgcGVyIHJlZ2ltZSB0aGF0XG4gICAgICAgICAgICAgcmVwcmVzZW50IGEgdGhyZWUtdmFsdWUgdHlwZSB0aGF0IHdvdWxkIHRyYW5zbGF0ZSB0bzpcblxuICAgICAgICAgICAgIHR5cGUgdHJhbnNpdGlvbl90eXBlID0gVVRDIHwgU3RhbmRhcmQgfCBXYWxsX2Nsb2NrXG5cbiAgICAgICAgICAgICBIb3dldmVyLCB0aGVzZSBhcmUgb25seSB1c2VkIGJ5IHRoZSBzeXN0ZW0gbGlicmFyeSB3aGVuIGhhbmRsaW5nIHRoZSBjYXNlIHdoZXJlIHRoZVxuICAgICAgICAgICAgIFRaIHZhcmlhYmxlIGlzIHNldCwgbm90IHRvIGEgdGltZSB6b25lIG5hbWUsIGJ1dCBpbnN0ZWFkIGlzIG9mIHRoZSBmb3JtOlxuXG4gICAgICAgICAgICAgVFogPSBcInN0ZCBvZmZzZXQgZHN0IG9mZnNldCwgcnVsZVwiXG5cbiAgICAgICAgICAgICBXaGljaCBpcyBkZWVwbHkgb2JzY3VyZSwgYW5kIGFsbW9zdCBjZXJ0YWlubHkgYSBtaXN0YWtlIHRvIHVzZS4gIFRoaXMgbGlicmFyeSBtYWtlc1xuICAgICAgICAgICAgIG5vIHByZXRlbnNlIGFib3V0IGhhbmRsaW5nIHRoaXMgY2FzZS4gIFdlIGNvbnRpbnVlIHRvIHJlYWQgdGhlbSBpbiBmb3JcbiAgICAgICAgICAgICBjb21wbGV0ZW5lc3MsIGFuZCBiZWNhdXNlIGl0J3MgcG9zc2libGUgdGhhdCB3ZSB3aWxsIGxhdGVyIGRpc2NvdmVyIGEgY2FzZSB3aGVyZVxuICAgICAgICAgICAgIHRoZXkgYXJlIHVzZWQuICopXG4gICAgICAgICAgbGV0IF9zdGRfd2FsbF9pbmRpY2F0b3JzID1cbiAgICAgICAgICAgIGlucHV0X2FycmF5IGljIH5sZW46c3RkX3dhbGxfY291bnQgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgICBib29sX29mX2ludCAoT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgX3V0Y19sb2NhbF9pbmRpY2F0b3JzID1cbiAgICAgICAgICAgIGlucHV0X2FycmF5IGljIH5sZW46dXRjX2xvY2FsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlZ2ltZXMgPVxuICAgICAgICAgICAgQXJyYXkub2ZfbGlzdFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgcmVnaW1lcyB+ZjooZnVuIChsdCwgYWJicnZfaW5kZXgpIC0+XG4gICAgICAgICAgICAgICAgIGxldCBhYmJydiA9IE1hcC5maW5kX2V4biBhYmJyZXZpYXRpb25zIGFiYnJ2X2luZGV4IGluXG4gICAgICAgICAgICAgICAgIGx0IGFiYnJ2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByYXdfdHJhbnNpdGlvbnMgPVxuICAgICAgICAgICAgTGlzdC5tYXAyX2V4biB0cmFuc2l0aW9uX3RpbWVzIHRyYW5zaXRpb25faW5kaWNlcyB+ZjooZnVuIHRpbWUgaW5kZXggLT5cbiAgICAgICAgICAgICAgbGV0IHJlZ2ltZSA9IHJlZ2ltZXMuKGluZGV4KSBpblxuICAgICAgICAgICAgICB0aW1lLCByZWdpbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdHJhbnNpdGlvbnMgPVxuICAgICAgICAgICAgbGV0IHJlYyBtYWtlX3RyYW5zaXRpb25zIGFjYyBsID1cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgYWNjKVxuICAgICAgICAgICAgICB8IChzdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2gsIG5ld19yZWdpbWUpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBtYWtlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgICAgICAoeyBUcmFuc2l0aW9uLnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgbmV3X3JlZ2ltZSB9IDo6IGFjYylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYWtlX3RyYW5zaXRpb25zIFtdIHJhd190cmFuc2l0aW9uc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIG1hdGNoIEFycmF5LmZpbmQgcmVnaW1lcyB+ZjooZnVuIHIgLT4gbm90IHIuUmVnaW1lLmlzX2RzdCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJlZ2ltZXMuKDApXG4gICAgICAgICAgICB8IFNvbWUgbHR0IC0+IGx0dFxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIG5hbWUgfm9yaWdpbmFsX2ZpbGVuYW1lIH5kaWdlc3QgLT5cbiAgICAgICAgICAgIHsgbmFtZVxuICAgICAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IFNvbWUgb3JpZ2luYWxfZmlsZW5hbWVcbiAgICAgICAgICAgIDsgZGlnZXN0ID0gU29tZSBkaWdlc3RcbiAgICAgICAgICAgIDsgdHJhbnNpdGlvbnNcbiAgICAgICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZVxuICAgICAgICAgICAgOyBsZWFwX3NlY29uZHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA9IGlucHV0X2xlYXBfc2Vjb25kIGljIGluXG4gICAgICAgICAgbGV0IHNlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIHsgTGVhcF9zZWNvbmQudGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoOyBzZWNvbmRzIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVhZF9oZWFkZXIgaWMgPVxuICAgICAgICAgIGxldCBtYWdpYyA9XG4gICAgICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbm90IChTdHJpbmcuZXF1YWwgbWFnaWMgXCJUWmlmXCIpXG4gICAgICAgICAgdGhlbiByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCBcIm1hZ2ljIGNoYXJhY3RlcnMgVFppZiBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9XG4gICAgICAgICAgICBtYXRjaCBJbl9jaGFubmVsLmlucHV0X2NoYXIgaWMgd2l0aFxuICAgICAgICAgICAgfCBTb21lICdcXDAwMCcgLT4gYFYxXG4gICAgICAgICAgICB8IFNvbWUgJzInIC0+IGBWMlxuICAgICAgICAgICAgfCBTb21lICczJyAtPiBgVjNcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCBcImV4cGVjdGVkIHZlcnNpb24sIGZvdW5kIG5vdGhpbmdcIilcbiAgICAgICAgICAgIHwgU29tZSBiYWRfdmVyc2lvbiAtPlxuICAgICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcInZlcnNpb24gKCVjKSBpcyBpbnZhbGlkXCIgYmFkX3ZlcnNpb24pKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogc3BhY2UgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgaW4gdGhlIGZvcm1hdCAqKVxuICAgICAgICAgIEluX2NoYW5uZWwucmVhbGx5X2lucHV0X2V4biBpYyB+YnVmOihCeXRlcy5jcmVhdGUgMTUpIH5wb3M6MCB+bGVuOjE1O1xuICAgICAgICAgIHZlcnNpb25cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92MSBpYyA9XG4gICAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kID1cbiAgICAgICAgICAgIGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQ6aW5wdXRfbG9uZ19hc19pbnQ2M1xuICAgICAgICAgIGluXG4gICAgICAgICAgaW5wdXRfdHpfZmlsZV9nZW4gfmlucHV0X3RyYW5zaXRpb246aW5wdXRfbG9uZ19hc19pbnQ2MyB+aW5wdXRfbGVhcF9zZWNvbmQgaWNcbiAgICAgICAgOztcblxuICAgICAgICAoKlxuICAgICAgICAgICB2ZXJzaW9uIDIgdGltZXpvbmUgZmlsZXMgaGF2ZSB0aGUgZm9ybWF0OlxuXG4gICAgICAgICAgIHBhcnQgMSAtIGV4YWN0bHkgdGhlIHNhbWUgYXMgdjFcblxuICAgICAgICAgICBwYXJ0IDIgLSBzYW1lIGZvcm1hdCBhcyB2MSwgZXhjZXB0IHRoYXQgOCBieXRlcyBhcmUgdXNlZCB0byBzdG9yZVxuICAgICAgICAgICB0cmFuc2l0aW9uIHRpbWVzIGFuZCBsZWFwIHNlY29uZHNcblxuICAgICAgICAgICBwYXJ0IDMgLSBhIG5ld2xpbmUtZW5jbG9kZWQsIFBPU0lYLVRaLWVudmlyb25tZW50LXZhcmlhYmxlLXN0eWxlXG4gICAgICAgICAgIHN0cmluZyBmb3IgdXNlIGluIGhhbmRsaW5nIGluc3RhbnRzIGFmdGVyIHRoZSBsYXN0IHRyYW5zaXRpb24gdGltZVxuICAgICAgICAgICBzdG9yZWQgaW4gdGhlIGZpbGUgKHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZSBuZXdsaW5lcyBpZiB0aGVyZSBpcyBub1xuICAgICAgICAgICBQT1NJWCByZXByZXNlbnRhdGlvbiBmb3Igc3VjaCBpbnN0YW50cylcblxuICAgICAgICAgICBXZSBoYW5kbGUgZmlsZXMgaW4gdGhpcyBmb3JtYXQgYnkgcGFyc2luZyB0aGUgZmlyc3QgcGFydCBleGFjdGx5IGFzIGEgdjFcbiAgICAgICAgICAgdGltZXpvbmUgZmlsZSBhbmQgdGhlbiBjb250aW51aW5nIHRvIHBhcnNlIHdpdGggNjRiaXQgcmVhZGluZyBmdW5jdGlvbnMgaW4gdGhlXG4gICAgICAgICAgIHJpZ2h0IHBsYWNlcy5cblxuICAgICAgICAgICBWZXJzaW9uIDMgdGltZXpvbmUgZmlsZXMgYXJlIHRoZSBzYW1lIGFzIHZlcnNpb24gMiwgZXhjZXB0IHRoZVxuICAgICAgICAgICBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZSBzdHJpbmcgaW4gcGFydCAzIG1heSB1c2UgdHdvIG1pbm9yXG4gICAgICAgICAgIGV4dGVuc2lvbnMgdG8gdGhlIFBPU0lYIFRaIGZvcm1hdCAodGhlIGhvdXJzIHBhcnQgb2YgaXRzIHRyYW5zaXRpb25cbiAgICAgICAgICAgdGltZXMgbWF5IGJlIHNpZ25lZCBhbmQgcmFuZ2UgZnJvbSAtMTY3IHRocm91Z2ggMTY3IGluc3RlYWQgb2YgdGhlXG4gICAgICAgICAgIFBPU0lYLXJlcXVpcmVkIHVuc2lnbmVkIHZhbHVlcyBmcm9tIDAgdGhyb3VnaCAyNDsgYW5kIERTVCBpcyBpbiBlZmZlY3QgYWxsXG4gICAgICAgICAgIHllYXIgaWYgaXQgc3RhcnRzIEphbnVhcnkgMSBhdCAwMDowMCBhbmQgZW5kcyBEZWNlbWJlciAzMSBhdCAyNDowMCBwbHVzIHRoZVxuICAgICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gZGF5bGlnaHQgc2F2aW5nIGFuZCBzdGFuZGFyZCB0aW1lKS5cblxuICAgICAgICAgICBBcyB3ZSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyB3aXRoIHBhcnQgMyBhbnl3YXksIHdlIGNhbiBqdXN0IHJlYWQgdjNcbiAgICAgICAgICAgZmlsZXMgYXMgdjIuXG4gICAgICAgICopXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlX3YyX29yX3YzIH52ZXJzaW9uIGljID1cbiAgICAgICAgICBsZXQgKF8gOiBzdHJpbmcgLT4gb3JpZ2luYWxfZmlsZW5hbWU6c3RyaW5nIC0+IGRpZ2VzdDpNZDVfbGliLnQgLT4gdCkgPVxuICAgICAgICAgICAgaW5wdXRfdHpfZmlsZV92MSBpY1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogdGhlIGhlYWRlciBpcyBmdWxseSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBbIGBWMSB8IGBWMiB8IGBWMyBdXSAocmVhZF9oZWFkZXIgaWMpIHZlcnNpb24pO1xuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfbG9uZ19hc19pbnQ2M1xuICAgICAgICAgIGluXG4gICAgICAgICAgaW5wdXRfdHpfZmlsZV9nZW5cbiAgICAgICAgICAgIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfbG9uZ19hc19pbnQ2M1xuICAgICAgICAgICAgfmlucHV0X2xlYXBfc2Vjb25kXG4gICAgICAgICAgICBpY1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF90el9maWxlIH56b25lbmFtZSB+ZmlsZW5hbWUgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgcHJvdGVjdHggKEluX2NoYW5uZWwuY3JlYXRlIGZpbGVuYW1lKSB+ZmluYWxseTpJbl9jaGFubmVsLmNsb3NlIH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgbGV0IG1ha2Vfem9uZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggcmVhZF9oZWFkZXIgaWMgd2l0aFxuICAgICAgICAgICAgICAgIHwgYFYxIC0+IGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICAgICAgICB8IChgVjIgfCBgVjMpIGFzIHZlcnNpb24gLT4gaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGlnZXN0ID0gTWQ1LmRpZ2VzdF9maWxlX2Jsb2NraW5nIGZpbGVuYW1lIGluXG4gICAgICAgICAgICAgIGxldCByID0gbWFrZV96b25lIHpvbmVuYW1lIH5vcmlnaW5hbF9maWxlbmFtZTpmaWxlbmFtZSB+ZGlnZXN0IGluXG4gICAgICAgICAgICAgIHIpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgSW52YWxpZF9maWxlX2Zvcm1hdCByZWFzb24gLT5cbiAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2ZpbGVfZm9ybWF0IChzcHJpbnRmIFwiJXMgLSAlc1wiIGZpbGVuYW1lIHJlYXNvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0ID1cbiAgICAgICAgYXNzZXJ0IChvZmZzZXQgPj0gLTI0ICYmIG9mZnNldCA8PSAyNCk7XG4gICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBJbnQ2My5vZl9pbnQgKG9mZnNldCAqIDYwICogNjApIGluXG4gICAgICAgIHsgbmFtZVxuICAgICAgICA7IG9yaWdpbmFsX2ZpbGVuYW1lID0gTm9uZVxuICAgICAgICA7IGRpZ2VzdCA9IE5vbmVcbiAgICAgICAgOyB0cmFuc2l0aW9ucyA9IFt8fF1cbiAgICAgICAgOyBsYXN0X3JlZ2ltZV9pbmRleCA9IEluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG4gICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgPVxuICAgICAgICAgICAgeyBSZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzOyBpc19kc3QgPSBmYWxzZTsgYWJicnYgPSBuYW1lIH1cbiAgICAgICAgOyBsZWFwX3NlY29uZHMgPSBbXVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdXRjX29mZnNldCB+aG91cnM6b2Zmc2V0ID1cbiAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgIGlmIG9mZnNldCA9IDBcbiAgICAgICAgICB0aGVuIFwiVVRDXCJcbiAgICAgICAgICBlbHNlIHNwcmludGYgXCJVVEMlcyVkXCIgKGlmIG9mZnNldCA8IDAgdGhlbiBcIi1cIiBlbHNlIFwiK1wiKSAoYWJzIG9mZnNldClcbiAgICAgICAgaW5cbiAgICAgICAgb2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIH5uYW1lIH5ob3VyczpvZmZzZXRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLkZ1bGxfZGF0YS5WMVxuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gdC5uYW1lXG5cbmxldCBsaWtlbHlfbWFjaGluZV96b25lcyA9XG4gIHJlZiBbIFwiQW1lcmljYS9OZXdfWW9ya1wiOyBcIkV1cm9wZS9Mb25kb25cIjsgXCJBc2lhL0hvbmdfS29uZ1wiOyBcIkFtZXJpY2EvQ2hpY2Fnb1wiIF1cbjs7XG5cbmxldCBpbnB1dF90el9maWxlID0gWm9uZV9maWxlLmlucHV0X3R6X2ZpbGVcbmxldCB1dGMgPSBvZl91dGNfb2Zmc2V0IH5ob3VyczowXG5sZXQgbmFtZSB6b25lID0gem9uZS5uYW1lXG5sZXQgcmVzZXRfdHJhbnNpdGlvbl9jYWNoZSB0ID0gdC5sYXN0X3JlZ2ltZV9pbmRleCA8LSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuXG4oKiBSYWlzZXMgaWYgW2luZGV4ID49IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXSAqKVxubGV0IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggPVxuICBpZiBpbmRleCA8IDAgdGhlbiB0LmRlZmF1bHRfbG9jYWxfdGltZV90eXBlIGVsc2UgdC50cmFuc2l0aW9ucy4oaW5kZXgpLm5ld19yZWdpbWVcbjs7XG5cbigqIEluIFwiYWJzb2x1dGUgbW9kZVwiLCBhIG51bWJlciBvZiBzZWNvbmRzIGlzIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBvZiB0aGF0IG1hbnlcbiAgIHNlY29uZHMgZnJvbSB0aGUgVU5JWCBlcG9jaCwgaWdub3JpbmcgbGVhcCBzZWNvbmRzLlxuXG4gICBJbiBcImRhdGUgYW5kIG9mZGF5IG1vZGVcIiwgeW91IGludGVycHJldCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYXMgYSBudW1iZXIgb2YgZGF5cyBpblxuICAgY29tYmluYXRpb24gd2l0aCBhIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIG1pZG5pZ2h0LCB3aGljaCBnaXZlcyB5b3UgYSBjYWxlbmRhciBkYXkgYW5kXG4gICBhIGNsb2NrIGZhY2UgdGltZS4gVGhlbiB5b3UgdGFrZSB0aGUgdGltZSB0aGF0IHRob3NlIHJlcHJlc2VudCBpbiBzb21lIHJlbGV2YW50XG4gICB0aW1lem9uZS5cblxuICAgT2YgY291cnNlLCBpZiB0aGUgdGltZXpvbmUgaW4gcXVlc3Rpb24gaGFzIERTVCBzaGlmdHMsIHRoZSBkYXRlIGFuZCBvZmRheSBtaWdodFxuICAgcmVwcmVzZW50IHR3byBvciB6ZXJvIHRpbWVzLiBUaGVzZSB0aW1lcyB3aWxsIGJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBlaXRoZXIgdGhlXG4gICBwcmV2aW91cyBVVEMgb2Zmc2V0IG9yIHRoZSBuZXh0IG9uZSwgaW4gYSB3YXkgd2hvc2UgcHJlY2lzZSBkZXRhaWxzIHlvdSBwcm9iYWJseVxuICAgc2hvdWxkbid0IGRlcGVuZCBvbi5cblxuICAgKEZvciB0aGUgY3VyaW91cywgd2hhdCB3ZSBkbyBpczogY29tcHV0ZSB0aGUgXCJyZWxhdGl2ZSB0aW1lXCIgb2YgdGhlIHNoaWZ0IGFjY29yZGluZyB0b1xuICAgdGhlIG5ldyByZWdpbWUsIGFuZCBhc3NpZ24gcmVsYXRpdmUgdGltZXMgdG8gdGhlIG9sZCByZWdpbWUgb3IgbmV3IHJlZ2ltZSBkZXBlbmRpbmcgb25cbiAgIHdoaWNoIHNpZGUgb2YgdGhlIHNoaWZ0IHRpbWUgdGhleSBvY2N1ci4gU2luY2UgdGhpcyBhbW91bnRzIHRvIHVzaW5nIHRoZSBvbGQgcmVnaW1lXG4gICB3aGVuIHRoZSBjbG9ja3MgbW92ZSBmb3J3YXJkIGFuZCB0aGUgbmV3IHJlZ2ltZSB3aGVuIHRoZSBjbG9ja3MgbW92ZSBiYWNrLCBpdCdzXG4gICBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHRoZSBjb3JyZXNwb25kaW5nIFRpbWUudCdzIHJlbGF0aXZlIHRvIGJvdGggdGhlIG9sZCBhbmQgdGhlXG4gICBuZXcgcmVnaW1lIGFuZCBwaWNraW5nIHRoZSBvbmUgdGhhdCBvY2N1cnMgbGF0ZXIuIFllcywgbGF0ZXIuIEkgaGFkIHRvIGRyYXcgYSBkaWFncmFtXG4gICB0byBwZXJzdWFkZSBteXNlbGYgdGhhdCBpdCdzIHRoYXQgd2F5IHJvdW5kLCBidXQgaXQgaXMuKVxuKilcbm1vZHVsZSBNb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBYnNvbHV0ZVxuICAgIHwgRGF0ZV9hbmRfb2ZkYXlcbmVuZFxuXG5sZXQgZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgKHggOiBUcmFuc2l0aW9uLnQpID1cbiAgbGV0IG9wZW4gSW50NjMuTyBpblxuICBtYXRjaCAobW9kZSA6IE1vZGUudCkgd2l0aFxuICB8IEFic29sdXRlIC0+IHguc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHwgRGF0ZV9hbmRfb2ZkYXkgLT5cbiAgICB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCArIHgubmV3X3JlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG5cbmxldCBpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4IDwgMCB8fCBJbnQ2My4oID49ICkgc2Vjb25kcyAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgfm1vZGUgdC50cmFuc2l0aW9ucy4oaW5kZXgpKVxuOztcblxubGV0IGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzID1cbiAgaW5kZXggKyAxID49IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG4gIHx8IEludDYzLiggPCApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4ICsgMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kcyA6IEluZGV4LnQgPVxuICBBcnJheS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyYW5zaXRpb25zIGBMYXN0X29uX2xlZnQgfnNlZ21lbnRfb2Y6KGZ1biB0cmFuc2l0aW9uIC0+XG4gICAgaWYgSW50NjMuKCA8PSApIChlZmZlY3RpdmVfc3RhcnRfdGltZSB0cmFuc2l0aW9uIH5tb2RlKSBzZWNvbmRzIHRoZW4gYExlZnQgZWxzZSBgUmlnaHQpXG4gIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuOztcblxubGV0IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzID1cbiAgbGV0IGluZGV4ID1cbiAgICBsZXQgaW5kZXggPSB0Lmxhc3RfcmVnaW1lX2luZGV4IGluXG4gICAgaWYgbm90IChpbmRleF9sb3dlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcylcbiAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXg7IHRyeSBwcmV2aW91cyBpbmRleCAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggLSAxIGluXG4gICAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICAgKCogdGltZSBpcyBiZWZvcmUgcHJldmlvdXMgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBiZWZvcmUgY2FjaGVkIGluZGV4IGFuZCBub3QgYmVmb3JlIHByZXZpb3VzLCBzbyB3aXRoaW4gcHJldmlvdXMgKilcbiAgICAgIGVsc2UgaW5kZXgpXG4gICAgZWxzZSBpZiBub3QgKGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYWZ0ZXIgY2FjaGVkIGluZGV4OyB0cnkgbmV4dCBpbmRleCAqKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggKyAxIGluXG4gICAgICBpZiBub3QgKGluZGV4X3VwcGVyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICAgKCogdGltZSBpcyBhZnRlciBuZXh0IGluZGV4OyBmYWxsIGJhY2sgb24gYmluYXJ5IHNlYXJjaCAqKVxuICAgICAgdGhlblxuICAgICAgICBiaW5hcnlfc2VhcmNoX2luZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZSBzZWNvbmRzXG4gICAgICAgICgqIHRpbWUgaXMgYWZ0ZXIgY2FjaGVkIGluZGV4IGFuZCBub3QgYWZ0ZXIgbmV4dCwgc28gd2l0aGluIG5leHQgKilcbiAgICAgIGVsc2UgaW5kZXggKCogdGltZSBpcyB3aXRoaW4gY2FjaGVkIGluZGV4ICopKVxuICAgIGVsc2UgaW5kZXhcbiAgaW5cbiAgdC5sYXN0X3JlZ2ltZV9pbmRleCA8LSBpbmRleDtcbiAgaW5kZXhcbjs7XG5cbm1vZHVsZSBUaW1lX2luX3NlY29uZHMgOiBzaWdcbiAgaW5jbHVkZSBab25lX2ludGYuVGltZV9pbl9zZWNvbmRzXG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyA9IEZuLmlkXG4gICAgbGV0IHRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gPSBGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICBlbmRcblxuICBtb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJbnQ2My50XG5cbiAgICBsZXQgb2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggPSBGbi5pZFxuICAgIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIGluY2x1ZGUgQWJzb2x1dGVcbmVuZFxuXG5sZXQgaW5kZXggdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gIHw+IGluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2ggdCB+bW9kZTpBYnNvbHV0ZVxuOztcblxubGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgdGltZSA9XG4gIFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkRhdGVfYW5kX29mZGF5XG47O1xuXG5sZXQgaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4ID49IDAgJiYgaW5kZXggPCBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xubGV0IGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCArIDEpXG5cbmxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICBsZXQgdHJhbnNpdGlvbiA9IHQudHJhbnNpdGlvbnMuKGluZGV4KSBpblxuICB0cmFuc2l0aW9uLnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG47O1xuXG5sZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IChpbmRleCArIDEpXG5cbmxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIGxldCBhZnRlciA9IHRyYW5zaXRpb24ubmV3X3JlZ2ltZSBpblxuICBsZXQgYmVmb3JlID1cbiAgICBpZiBpbmRleCA9IDAgdGhlbiB0LmRlZmF1bHRfbG9jYWxfdGltZV90eXBlIGVsc2UgdC50cmFuc2l0aW9ucy4oaW5kZXggLSAxKS5uZXdfcmVnaW1lXG4gIGluXG4gIEludDYzLiggLSApIGFmdGVyLnV0Y19vZmZzZXRfaW5fc2Vjb25kcyBiZWZvcmUudXRjX29mZnNldF9pbl9zZWNvbmRzXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IChpbmRleCArIDEpXG47O1xuXG5sZXQgaW5kZXhfYWJicmV2aWF0aW9uX2V4biB0IGluZGV4ID1cbiAgbGV0IHJlZ2ltZSA9IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggaW5cbiAgcmVnaW1lLmFiYnJ2XG47O1xuXG5sZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgbGV0IHJlZ2ltZSA9IGdldF9yZWdpbWVfZXhuIHQgaW5kZXggaW5cbiAgVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kcyByZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cbmluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uKSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG4iLCJpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJZFxuXG4gIG1vZHVsZSBVaWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVXBzdHJlYW0gPSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkXG4gICAgaW5jbHVkZSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkXG5cbiAgICBpbmNsdWRlXG4gICAgICBDb21wYXJhYmxlLkV4dGVuZFxuICAgICAgICAoVXBzdHJlYW0pXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlR5cGVfZXF1YWwuSWQuVWlkLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChVcHN0cmVhbSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gVmFsaWRhdGVkX2ludGZcblxubW9kdWxlIHR5cGUgUmF3ID0gUmF3XG5cbnR5cGUgKCdyYXcsICd3aXRuZXNzKSB0ID0gJ3Jhd1xuXG5tb2R1bGUgdHlwZSBTID0gUyB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgU19hbGxvd2luZ19zdWJzdGl0dXRpb24gPVxuICBTX2FsbG93aW5nX3N1YnN0aXR1dGlvbiB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgU19iaW5faW8gPSBTX2Jpbl9pbyB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubW9kdWxlIHR5cGUgU19iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgPVxuICBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCB3aXRoIHR5cGUgKCdhLCAnYikgdmFsaWRhdGVkIDo9ICgnYSwgJ2IpIHRcblxubGV0IHJhdyB0ID0gdFxuXG5tb2R1bGUgTWFrZSAoUmF3IDogUmF3KSA9IHN0cnVjdFxuICB0eXBlIHdpdG5lc3NcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvciA9XG4gICAgRXJyb3IuY3JlYXRlXG4gICAgICBcInZhbGlkYXRpb24gZmFpbGVkXCJcbiAgICAgICh0LCBlcnJvciwgUmF3LmhlcmUpXG4gICAgICBbJXNleHBfb2Y6IFJhdy50ICogRXJyb3IudCAqIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRdXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9leG4gdCA9XG4gICAgbWF0Y2ggVmFsaWRhdGUucmVzdWx0IChSYXcudmFsaWRhdGUgdCkgd2l0aFxuICAgIHwgT2sgKCkgLT4gdFxuICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IucmFpc2UgKHZhbGlkYXRpb25fZmFpbGVkIHQgZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiBPayB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBjcmVhdGVfZXhuIChSYXcudF9vZl9zZXhwIHNleHApXG4gIGxldCByYXcgdCA9IHRcblxuICBsZXQgY3JlYXRlX3N0YWJsZV93aXRuZXNzIHJhd19zdGFibGVfd2l0bmVzcyA9XG4gICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIHJhd19zdGFibGVfd2l0bmVzcyBjcmVhdGVfZXhuIHJhd1xuICA7O1xuXG4gIGxldCB0eXBlX2VxdWFsID0gVHlwZV9lcXVhbC5UXG5lbmRcblxubW9kdWxlIEFkZF9iaW5faW8gKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBpbmNsdWRlIFJhd19iaW5faW8gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKFZhbGlkYXRlZCA6IFMgd2l0aCB0eXBlIHJhdyA6PSBSYXcudCkgPVxuc3RydWN0XG4gIGluY2x1ZGVcbiAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAoUmF3KVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBSYXcudFxuXG4gICAgICAgIGxldCBvZl9iaW5hYmxlIHJhdyA9XG4gICAgICAgICAgaWYgUmF3LnZhbGlkYXRlX2JpbmlvX2Rlc2VyaWFsaXphdGlvbiB0aGVuIFZhbGlkYXRlZC5jcmVhdGVfZXhuIHJhdyBlbHNlIHJhd1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgQWRkX2NvbXBhcmUgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKF8gOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBsZXQgY29tcGFyZSB0MSB0MiA9IFslY29tcGFyZTogUmF3LnRdIChyYXcgdDEpIChyYXcgdDIpXG5lbmRcblxubW9kdWxlIEFkZF9oYXNoIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFJhdy5oYXNoX2ZvbGRfdCBzdGF0ZSAoVmFsaWRhdGVkLnJhdyB0KVxuICBsZXQgaGFzaCB0ID0gUmF3Lmhhc2ggKFZhbGlkYXRlZC5yYXcgdClcbmVuZFxuXG5tb2R1bGUgQWRkX3R5cGVyZXAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBSYXcgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG4gICAgKF8gOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFJhdyA6IFJhd19iaW5faW8pID0gc3RydWN0XG4gIG1vZHVsZSBUMCA9IE1ha2UgKFJhdylcbiAgaW5jbHVkZSBUMFxuICBpbmNsdWRlIEFkZF9iaW5faW8gKFJhdykgKFQwKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhd19iaW5faW8gd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IE1ha2VfYmluYWJsZSAoUmF3KVxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBBZGRfY29tcGFyZSAoUmF3KSAoVClcblxuICBpbmNsdWRlIChcbiAgICBBZGRfaGFzaCAoUmF3KSAoVCkgOlxuICAgIHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgZW5kXG4gICAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmRcbiAgfCBTZWNvbmRcbiAgfCBNaW51dGVcbiAgfCBIb3VyXG4gIHwgRGF5XG5bQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBlbnVtZXJhdGUsIGhhc2hdXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFVuaXF1ZV9pZF9pbnRmXG5cbm1vZHVsZSB0eXBlIElkID0gSWRcblxuKCogT25seSBcIm1ha2VcIiBjYW4gY2F1c2UgYSBjb250ZXh0LXN3aXRjaCB0aGF0IG1pZ2h0IGxlYWQgdG8gYSByYWNlLlxuICAgVGh1cyB3ZSBoYXZlIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBjZWxsIHJlbWFpbmVkXG4gICB1bmNoYW5nZWQgYWNyb3NzIHRoaXMgY2FsbC4gIFRoZSBzdWJzZXF1ZW50IGNvbXBhcmlzb24sIGRlcmVmZXJlbmNpbmdcbiAgIGFuZCBhc3NpZ25tZW50IGNhbm5vdCBjYXVzZSBjb250ZXh0IHN3aXRjaGVzLiAgSWYgdGhlIGNvbnRlbnRzIG9mIHRoZVxuICAgY2VsbCBoYWQgY2hhbmdlZCwgd2Ugd2lsbCBoYXZlIHRvIHRyeSBhZ2FpbiB0byBvYnRhaW4gYSB1bmlxdWUgaWQuXG4gICBUaGlzIGlzIGVzc2VudGlhbGx5IGxpa2UgYSBzcGluLWxvY2sgYW5kIGlzIHZpcnR1YWxseSBndWFyYW50ZWVkIHRvXG4gICBzdWNjZWVkIHF1aWNrbHkuICopXG5sZXQgcmVjIHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjZWxsIG1ha2UgPVxuICBsZXQgeCA9ICFjZWxsIGluXG4gIGxldCBuZXdfeCA9IG1ha2UgeCBpblxuICBpZiBwaHlzX2VxdWFsICFjZWxsIHhcbiAgdGhlbiAoXG4gICAgY2VsbCA6PSBuZXdfeDtcbiAgICB4KVxuICBlbHNlIHJhY2VfZnJlZV9jcmVhdGVfbG9vcCBjZWxsIG1ha2Vcbjs7XG5cbm1vZHVsZSBJbnQgKCkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbnRcblxuICBsZXQgY3VycmVudCA9IHJlZiB6ZXJvXG4gIGxldCBjcmVhdGUgKCkgPSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY3VycmVudCBzdWNjXG5lbmRcblxubW9kdWxlIEludDYzICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50NjNcblxuICBsZXQgY3VycmVudCA9IHJlZiB6ZXJvXG4gIGxldCBjcmVhdGUgKCkgPSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY3VycmVudCBzdWNjXG5lbmRcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHZlcnkgbXVjaCBkZXBlbmRlbnQgb24gdGhlIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzLiAgU2hvdWxkIHRoZVxuICAgd2F5IHRoZSBjb21waWxlciByZXByZXNlbnRzIHZhcmlvdXMgdHlwZXMgY2hhbmdlLCBpdCBuZWVkcyB0byBiZSByZWZsZWN0ZWQgaW4gdGhpc1xuICAgbW9kdWxlLCBvdGhlcndpc2UgYmFkIHRoaW5ncyBjb3VsZCBoYXBwZW4uICBUaGVyZWZvcmUgdGhlIGNvbnZlcnNpb25zIGFuZFxuICAgcmVwcmVzZW50YXRpb25zIGFyZSB0ZXN0ZWQgdGhvcm91Z2hseSBpbiBbLi4vdGVzdC90ZXN0X3dpdG5lc3MubWxdIGFuZFxuICAgWy4uL3Rlc3QvdGVzdF9jb252ZXJzaW9ucy5tbF1cbiopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBCYXNlLkxpc3Rcbm1vZHVsZSBIYXNoX3NldCA9IEJhc2UuSGFzaF9zZXRcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICgqIFRoZSBpbnRlZ2VycyBoZXJlIGFyZSB0aGUgdmFsdWVzIHVuZGVybHlpbmcgdGhlIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGV5IGFscmVhZHlcbiAgICAgYXJlIGhhc2hlcyBvZiBjb25zdHJ1Y3RvciBuYW1lcywgYW5kIGhlbmNlIGFyZSBleHBlY3RlZCB0byBiZSB1bmlmb3JtbHlcbiAgICAgZGlzdHJpYnV0ZWQuICopXG4gIGxldCBoYXNoIHggPSB4XG5lbmRcblxubW9kdWxlIEFsbG93ZWRfaW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTm9uZVxuICAgIHwgQWxsXG4gICAgfCBIYXNoX3NldCBvZiBIYXNoX3NldC5NKEtleSkudFxuICAgIHwgRnJvbV96ZXJvX3RvIG9mIGludFxuXG4gIGxldCBfaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgfCBBbGwgfCBIYXNoX3NldCBfIC0+ICgpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiBhc3NlcnQgKG4gPj0gMClcbiAgOztcblxuICBsZXQgaW50X2lzX3ZhbHVlIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBBbGwgLT4gdHJ1ZVxuICAgIHwgSGFzaF9zZXQgaGFzaF9zZXQgLT4gSGFzaF9zZXQubWVtIGhhc2hfc2V0IGlcbiAgICB8IEZyb21femVyb190byBuIC0+IDAgPD0gaSAmJiBpIDw9IG5cbiAgOztcbmVuZFxuXG5tb2R1bGUgSW1tZWRpYWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBBbHdheXNcbiAgICB8IFNvbWV0aW1lc1xuICAgIHwgTmV2ZXJcbiAgICB8IFVua25vd25cbiAgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBBbHdheXMgLT4gXCJBbHdheXNcIlxuICAgIHwgU29tZXRpbWVzIC0+IFwiU29tZXRpbWVzXCJcbiAgICB8IE5ldmVyIC0+IFwiTmV2ZXJcIlxuICAgIHwgVW5rbm93biAtPiBcIlVua25vd25cIlxuICA7O1xuZW5kXG5cbm9wZW4gSW1tZWRpYWN5XG5cbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAnYSBUeXBlbmFtZS50IC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV93aXRoX25hbWUgOiBzdHJpbmcgLT4gSW1tZWRpYWN5LnQgLT4gQWxsb3dlZF9pbnRzLnQgLT4gXyB0XG4gIHZhbCBpbW1lZGlhY3kgOiBfIHQgLT4gSW1tZWRpYWN5LnRcbiAgdmFsIGFsbG93ZWRfaW50cyA6IF8gdCAtPiBBbGxvd2VkX2ludHMudFxuICB2YWwgdHlwZW5hbWUgOiBfIHQgLT4gc3RyaW5nXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA6IHNpZ1xuICAgIHZhbCBpbnQzMiA6IGludDMyIHRcbiAgICB2YWwgaW50NjQgOiBpbnQ2NCB0XG4gICAgdmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgdmFsIGZsb2F0IDogZmxvYXQgdFxuICAgIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICAgIHZhbCBieXRlcyA6IGJ5dGVzIHRcbiAgICB2YWwgYXJyYXkgOiBfIGFycmF5IHRcbiAgICB2YWwgcmVmXyA6IF8gcmVmIHRcbiAgICB2YWwgdHVwbGUyIDogKF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlMyA6IChfICogXyAqIF8pIHRcbiAgICB2YWwgdHVwbGU0IDogKF8gKiBfICogXyAqIF8pIHRcbiAgICB2YWwgdHVwbGU1IDogKF8gKiBfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIGZ1bmN0aW9uXyA6IChfIC0+IF8pIHRcbiAgZW5kXG5cbiAgdmFsIG5ldmVyIDogJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCB1bmtub3duIDogJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCBvcHRpb24gOiBfIHRcbiAgdmFsIGxpc3QgOiBfIHRcbiAgdmFsIG1hZ2ljIDogXyB0IC0+IF8gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdF8gPVxuICAgIHsgaW1tZWRpYWN5IDogSW1tZWRpYWN5LnRcbiAgICA7IGFsbG93ZWRfaW50cyA6IEFsbG93ZWRfaW50cy50XG4gICAgOyB0eXBlbmFtZSA6IHN0cmluZ1xuICAgIH1cblxuICB0eXBlICdhIHQgPSB0X1xuXG4gIGxldCBjcmVhdGVfd2l0aF9uYW1lIHR5cGVuYW1lIGltbWVkaWFjeSBhbGxvd2VkX2ludHMgPVxuICAgIHsgaW1tZWRpYWN5OyBhbGxvd2VkX2ludHM7IHR5cGVuYW1lIH1cbiAgOztcblxuICBsZXQgY3JlYXRlIHR5cGVuYW1lIGltbWVkaWFjeSBhbGxvd2VkX2ludHMgPVxuICAgIGNyZWF0ZV93aXRoX25hbWUgKFR5cGVuYW1lLm5hbWUgdHlwZW5hbWUpIGltbWVkaWFjeSBhbGxvd2VkX2ludHNcbiAgOztcblxuICBsZXQgaW1tZWRpYWN5IHQgPSB0LmltbWVkaWFjeVxuICBsZXQgYWxsb3dlZF9pbnRzIHQgPSB0LmFsbG93ZWRfaW50c1xuICBsZXQgdHlwZW5hbWUgdCA9IHQudHlwZW5hbWVcbiAgbGV0IG1hZ2ljIHQgPSB0XG4gIGxldCBuZXZlcl93aXRoX25hbWUgbmFtZSA9IGNyZWF0ZV93aXRoX25hbWUgbmFtZSBOZXZlciBOb25lXG4gIGxldCBuZXZlciB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBOZXZlciBOb25lXG4gIGxldCB1bmtub3duIHR5cGVuYW1lID0gY3JlYXRlIHR5cGVuYW1lIFVua25vd24gTm9uZVxuXG4gIGxldCBvcHRpb24gPSBjcmVhdGVfd2l0aF9uYW1lIFwib3B0aW9uXCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG4gIGxldCBsaXN0ID0gY3JlYXRlX3dpdGhfbmFtZSBcImxpc3RcIiBTb21ldGltZXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcblxuICBtb2R1bGUgTmV2ZXJfdmFsdWVzID0gc3RydWN0XG4gICAgKCogaW50MzIgaXMgYm94ZWQgZXZlbiBvbiA2NGIgcGxhdGZvcm0gYXQgdGhlIG1vbWVudC4gKilcbiAgICBsZXQgaW50MzIgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQzMlxuICAgIGxldCBpbnQ2NCA9IG5ldmVyIHR5cGVuYW1lX29mX2ludDY0XG4gICAgbGV0IG5hdGl2ZWludCA9IG5ldmVyIHR5cGVuYW1lX29mX25hdGl2ZWludFxuICAgIGxldCBmbG9hdCA9IG5ldmVyIHR5cGVuYW1lX29mX2Zsb2F0XG4gICAgbGV0IHN0cmluZyA9IG5ldmVyIHR5cGVuYW1lX29mX3N0cmluZ1xuICAgIGxldCBieXRlcyA9IG5ldmVyIHR5cGVuYW1lX29mX2J5dGVzXG4gICAgbGV0IGFycmF5ID0gbmV2ZXJfd2l0aF9uYW1lIFwiYXJyYXlcIlxuICAgIGxldCByZWZfID0gbmV2ZXJfd2l0aF9uYW1lIFwicmVmXCJcbiAgICBsZXQgdHVwbGUyID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGUyXCJcbiAgICBsZXQgdHVwbGUzID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGUzXCJcbiAgICBsZXQgdHVwbGU0ID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGU0XCJcbiAgICBsZXQgdHVwbGU1ID0gbmV2ZXJfd2l0aF9uYW1lIFwidHVwbGU1XCJcblxuICAgIGxldCBmdW5jdGlvbl8gPSBuZXZlcl93aXRoX25hbWUgXCJmdW5jdGlvblwiXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgaW50ID0gY3JlYXRlIHR5cGVuYW1lX29mX2ludCBBbHdheXMgQWxsb3dlZF9pbnRzLkFsbFxubGV0IHVuaXQgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfdW5pdCBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMClcbmxldCBib29sID0gY3JlYXRlIHR5cGVuYW1lX29mX2Jvb2wgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDEpXG5sZXQgY2hhciA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9jaGFyIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAyNTUpXG5cbm1vZHVsZSBDb21wdXRhdGlvbl9pbXBsID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBUeXBlX2dlbmVyaWMuVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgIGVuZClcblxuICBpbmNsdWRlIE5ldmVyX3ZhbHVlc1xuXG4gIGxldCByZWZfIF8gPSByZWZfXG4gIGxldCBhcnJheSBfID0gYXJyYXlcbiAgbGV0IHR1cGxlMiBfIF8gPSB0dXBsZTJcbiAgbGV0IHR1cGxlMyBfIF8gXyA9IHR1cGxlM1xuICBsZXQgdHVwbGU0IF8gXyBfIF8gPSB0dXBsZTRcbiAgbGV0IHR1cGxlNSBfIF8gXyBfIF8gPSB0dXBsZTVcbiAgbGV0IGZ1bmN0aW9uXyBfIF8gPSBmdW5jdGlvbl9cbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuICBsZXQgb3B0aW9uIF8gPSBvcHRpb25cbiAgbGV0IGxpc3QgXyA9IGxpc3RcblxuICAoKiBBbiBbYSBMYXp5LnRdIG1pZ2h0IGJlIGEgYm94ZWQgY2xvc3VyZSwgc28gbXVzdCBoYXZlIGltbWVkaWFjeSBlaXRoZXIgW05ldmVyXSBvclxuICAgICBbU29tZXRpbWVzXS4gIEFuIFthIExhenkudF0gdmFsdWUgY291bGQgYmUgaW1tZWRpYXRlIGlmIFthXSBpcyBpbW1lZGlhdGUuICBCdXQgaWYgW2FdXG4gICAgIGlzIG5ldmVyIGltbWVkaWF0ZSwgdGhlbiBbYSBMYXp5LnRdIGNhbm5vdCBiZS4gKilcbiAgbGV0IGxhenlfdCB0ID1cbiAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICAgIHwgTmV2ZXIgLT4gTmV2ZXJcbiAgICAgIHwgVW5rbm93biAtPiBVbmtub3duXG4gICAgICB8IFNvbWV0aW1lcyB8IEFsd2F5cyAtPiBTb21ldGltZXNcbiAgICBpblxuICAgIGNyZWF0ZV93aXRoX25hbWUgXCJsYXp5X3RcIiBpbW1lZGlhY3kgKGFsbG93ZWRfaW50cyB0KVxuICA7O1xuXG4gIGxldCBwb3NzaWJseV91bmJveGVkIHR5cGVuYW1lIGNoaWxkX3R5cGUgPVxuICAgIG1hdGNoIGltbWVkaWFjeSBjaGlsZF90eXBlIHdpdGhcbiAgICB8IE5ldmVyIC0+IG5ldmVyIHR5cGVuYW1lXG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgU29tZXRpbWVzIC0+IHVua25vd24gdHlwZW5hbWVcbiAgOztcblxuICBsZXQgcmVjb3JkIHIgPVxuICAgIGlmIFJlY29yZC5sZW5ndGggciA+IDFcbiAgICB0aGVuIG5ldmVyIChSZWNvcmQudHlwZW5hbWVfb2ZfdCByKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IChGaWVsZCB0aGVfb25seV9maWVsZCkgPSBSZWNvcmQuZmllbGQgciAwIGluXG4gICAgICBwb3NzaWJseV91bmJveGVkIChSZWNvcmQudHlwZW5hbWVfb2ZfdCByKSAoRmllbGQudHJhdmVyc2UgdGhlX29ubHlfZmllbGQpKVxuICA7O1xuXG4gICgqIFZhcmlhbnRzIHdpdGggYWxsIGNvbnN0cnVjdG9ycyBoYXZpbmcgbm8gYXJndW1lbnRzIGFyZSBhbHdheXMgaW1tZWRpYXRlOyB2YXJpYW50c1xuICAgICB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIHNvbWUgYXJndW1lbnRzIGFyZSBuZXZlciBpbW1lZGlhdGU7IG1peGVkIHZhcmlhbnRzIGFyZVxuICAgICBzb21ldGltZXMgaW1tZWRpYXRlLlxuXG4gICAgIElmIGEgdmFyaWFudCBoYXMgYSBzaW5nbGUgY29uc3RydWN0b3IsIGFuZCB0aGUgY29uc3RydWN0b3IgaGFzIGFuIGFyZ3VtZW50LCB0aGVcbiAgICAgdmFyaWFudCBjYW4gYmUgdW5ib3hlZC4gSWYgdW5ib3hlZCwgZWl0aGVyIGV4cGxpY2l0bHkgb3IgYnkgZGVmYXVsdCAoZGVwZW5kaW5nIG9uXG4gICAgIGNvbXBpbGVyIHNldHRpbmdzKSwgdGhlIHJlcHJlc2VudGF0aW9uIGlzIHNpbXBseSB0aGUgYXJndW1lbnQuIE90aGVyd2lzZSwgdGhlIHJ1bGVzXG4gICAgIGFib3ZlIGFwcGx5IG5vcm1hbGx5LiAqKVxuICBsZXQgdmFyaWFudCB2YXJpYW50ID1cbiAgICBsZXQgbm9fYXJnX2xpc3QsIG9uZV9hcmdfbGlzdCwgbW9yZV9hcmdfbGlzdCA9XG4gICAgICBWYXJpYW50LmZvbGQgdmFyaWFudCB+aW5pdDooW10sIFtdLCBbXSkgfmY6KGZ1biAobm8sIG9uZSwgbW9yZSkgKFRhZyB0IGFzIHRhZykgLT5cbiAgICAgICAgbWF0Y2ggVGFnLmFyaXR5IHQgd2l0aFxuICAgICAgICB8IDAgLT4gdGFnIDo6IG5vLCBvbmUsIG1vcmVcbiAgICAgICAgfCAxIC0+IG5vLCB0YWcgOjogb25lLCBtb3JlXG4gICAgICAgIHwgXyAtPiBubywgb25lLCB0YWcgOjogbW9yZSlcbiAgICBpblxuICAgIG1hdGNoIG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3Qgd2l0aFxuICAgIHwgW10sIFsgVGFnIHRhZyBdLCBbXSB3aGVuIG5vdCAoVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50KSAtPlxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpIChUYWcudHJhdmVyc2UgdGFnKVxuICAgIHwgW10sIFtdLCBbXSAtPlxuICAgICAgKCogV2UgZG9uJ3QgaGF2ZSBhbiBleHBsaWN0IHdheSBvZiBzYXlpbmcgYSB0eXBlIGlzIHVuaW5oYWJpdGVkLiAqKVxuICAgICAgdW5rbm93biAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpXG4gICAgfCBbXSwgXyA6OiBfLCBfIHwgW10sIF8sIF8gOjogXyAtPiBuZXZlciAoVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQpXG4gICAgfCBfIDo6IF8sIF8sIF8gLT5cbiAgICAgIGxldCBub19hcmdfY291bnQgPSBMaXN0Lmxlbmd0aCBub19hcmdfbGlzdCBpblxuICAgICAgbGV0IGFsbG93ZWRfaW50cyA9XG4gICAgICAgIGlmIG5vdCAoVmFyaWFudC5pc19wb2x5bW9ycGhpYyB2YXJpYW50KVxuICAgICAgICB0aGVuIEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gKG5vX2FyZ19jb3VudCAtIDEpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBoYXNoX3NldCA9IEhhc2hfc2V0LmNyZWF0ZSAobW9kdWxlIEtleSkgfnNpemU6KG5vX2FyZ19jb3VudCAqIDIpIGluXG4gICAgICAgICAgTGlzdC5pdGVyIG5vX2FyZ19saXN0IH5mOihmdW4gKFRhZyB0YWcpIC0+XG4gICAgICAgICAgICBtYXRjaCBUYWcuY3JlYXRlIHRhZyB3aXRoXG4gICAgICAgICAgICB8IFRhZy5Db25zdCBfIC0+IEhhc2hfc2V0LmFkZCBoYXNoX3NldCAoVGFnLm9jYW1sX3JlcHIgdGFnKVxuICAgICAgICAgICAgfCBUYWcuQXJncyBfIC0+IGFzc2VydCBmYWxzZSk7XG4gICAgICAgICAgQWxsb3dlZF9pbnRzLkhhc2hfc2V0IGhhc2hfc2V0KVxuICAgICAgaW5cbiAgICAgIGxldCBpbW1lZGlhY3kgPVxuICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IG9uZV9hcmdfbGlzdCAmJiBMaXN0LmlzX2VtcHR5IG1vcmVfYXJnX2xpc3RcbiAgICAgICAgdGhlbiBBbHdheXNcbiAgICAgICAgZWxzZSBTb21ldGltZXNcbiAgICAgIGluXG4gICAgICBjcmVhdGUgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IG5hbWUgPSBcImlzX2ltbWVkaWF0ZVwiXG4gIGxldCByZXF1aXJlZCA9IFtdXG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgbW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHVuaXRcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9ICgpXG4gICAgZW5kXG5cbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCByZWZcblxuICAgICgqIFRoZSBkZWZhdWx0IHdpdG5lc3MgLSB3aGljaCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgW2luaXRdIGFuZCByZWNvdmVyZWQgYXQgYW55IGxhdGVyXG4gICAgICAgcG9pbnQgYnkgY2FsbGluZyBbZ2V0X3dpcF9jb21wdXRhdGlvbl0gLSBjYW4gb25seSBiZSB1c2VkIGluIGEgcmVjdXJzaXZlIHR5cGUuXG4gICAgICAgT3RoZXIgdHlwZXMgdGhhdCBkb24ndCB1c2UgW2dldF93aXBfY29tcHV0YXRpb25dIHdpbGwganVzdCBldmFsdWF0ZSB0byB0aGUgYWN0dWFsXG4gICAgICAgd2l0bmVzcyB3aGljaCB3aWxsIHJlcGxhY2UgdGhlIGluaXRpYWwgZHVtbXkgb25lLiAqKVxuICAgIGxldCBpbml0IF8gbmFtZSA9IHJlZiAoY3JlYXRlIG5hbWUgU29tZXRpbWVzIEFsbG93ZWRfaW50cy5Ob25lKVxuICAgIGxldCBnZXRfd2lwX2NvbXB1dGF0aW9uIGNvbXAgPSAhY29tcFxuXG4gICAgbGV0IHNldF9maW5hbF9jb21wdXRhdGlvbiByIHQgPVxuICAgICAgciA6PSB0O1xuICAgICAgdFxuICAgIDs7XG5cbiAgICBsZXQgc2hhcmUgXyA9IHRydWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEdlbmVyaWMgPSBUeXBlX2dlbmVyaWMuTWFrZSAoQ29tcHV0YXRpb25faW1wbClcblxubGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gIGxldCAoYGdlbmVyaWMgdCkgPSBHZW5lcmljLm9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICB0XG47O1xuXG5tb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChNIDogc2lnXG4gICAgdmFsIGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCB3aXRuZXNzIHR5cGVyZXAxIHR5cGVyZXAyID1cbiAgICBsZXQgdDEgPSBvZl90eXBlcmVwIHR5cGVyZXAxIGluXG4gICAgbGV0IHQyID0gb2ZfdHlwZXJlcCB0eXBlcmVwMiBpblxuICAgIGxldCBpMSA9IGltbWVkaWFjeSB0MSBpblxuICAgIGxldCBpMiA9IGltbWVkaWFjeSB0MiBpblxuICAgIGlmIG5vdCAoSW1tZWRpYWN5LmVxdWFsIGkxIGkyKVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgIFwidHlwZSAlcyBpcyBub3QgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50c1wiXG4gICAgICAgICAgIChUeXBlbmFtZS5uYW1lIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgdHlwZXJlcDEpKSlcbiAgICBlbHNlIGlmIG5vdCAoSW1tZWRpYWN5LmVxdWFsIGkxIE0uaW1tZWRpYWN5KVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgIFwidHlwZSAlcyBkb2VzIG5vdCBoYXZlIGRlc2lyZWQgaW1tZWRpYWN5OiB3YW50ZWQgJXMgYnV0IGdvdCAlc1wiXG4gICAgICAgICAgIChUeXBlbmFtZS5uYW1lIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgdHlwZXJlcDEpKVxuICAgICAgICAgICAoSW1tZWRpYWN5LnRvX3N0cmluZyBNLmltbWVkaWFjeSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgaTEpKVxuICAgIGVsc2UgdDFcbiAgOztcblxuICAoKiBhbHdheXMgaW1tZWRpYXRlICopXG4gIGxldCByYSA9IFR5cGVyZXAuSW50XG5cbiAgKCogbmV2ZXIgaW1tZWRpYXRlICopXG4gIGxldCBybiA9IFR5cGVyZXAuU3RyaW5nXG5cbiAgKCogRWFjaCBvZiB0aGUgW0Zvcl9hbGxfcGFyYW1ldGVyc18qXSBmdW5jdG9ycyB3b3JrcyBieSBpbnN0YW50aWF0aW5nIHRoZSBuLWFyeSB0eXBlXG4gICAgIHdpdGggYWxsIFtBbHdheXNdIHR5cGVzLCBhbmQgdGhlbiB3aXRoIGFsbCBbTmV2ZXJdIHR5cGVzLiAgSWYgdGhvc2UgcHJvZHVjZSB0aGUgc2FtZVxuICAgICBpbW1lZGlhY3ksIHRoZW4gd2UgY29uY2x1ZGUgdGhhdCB0aGUgbi1hcnkgdHlwZSBpcyBpbmRlcGVuZGVudCBvZiBpdHMgYXJndW1lbnRzLiAqKVxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzEgKFggOiBUeXBlcmVwYWJsZS5TMSkgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhKSAoWC50eXBlcmVwX29mX3Qgcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzIgKFggOiBUeXBlcmVwYWJsZS5TMikgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzMgKFggOiBUeXBlcmVwYWJsZS5TMykgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzQgKFggOiBUeXBlcmVwYWJsZS5TNCkgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhIHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4gcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfYWxsX3BhcmFtZXRlcnNfUzUgKFggOiBUeXBlcmVwYWJsZS5TNSkgPSBzdHJ1Y3RcbiAgICBsZXQgdCA9IHdpdG5lc3MgKFgudHlwZXJlcF9vZl90IHJhIHJhIHJhIHJhIHJhKSAoWC50eXBlcmVwX29mX3Qgcm4gcm4gcm4gcm4gcm4pXG4gICAgbGV0IHdpdG5lc3MgKCkgPSBtYWdpYyB0XG4gIGVuZFxuZW5kXG5cbmxldCBpbnRfaXNfdmFsdWUgdCBpbnQgPSBBbGxvd2VkX2ludHMuaW50X2lzX3ZhbHVlIChhbGxvd2VkX2ludHMgdCkgaW50XG5cbmxldCBpbnRfYXNfdmFsdWUgKHR5cGUgYSkgKHQgOiBhIHQpIGludCA9XG4gIGlmIGludF9pc192YWx1ZSB0IGludCB0aGVuIFNvbWUgKE9iai5tYWdpYyAoaW50IDogaW50KSA6IGEpIGVsc2UgTm9uZVxuOztcblxubGV0IGludF9hc192YWx1ZV9leG4gKHR5cGUgYSkgKHQgOiBhIHQpIGludCA9XG4gIGlmIGludF9pc192YWx1ZSB0IGludFxuICB0aGVuIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUuaW50X2FzX3ZhbHVlX2V4bjogdHlwZW5hbWU6JVMgaW50OiVkXCIgKFQudHlwZW5hbWUgdCkgaW50KVxuOztcblxubGV0IHZhbHVlX2FzX2ludF9leG4gKHR5cGUgYSkgKHQgOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKVxuICB0aGVuIChPYmoubWFnaWMgKGEgOiBhKSA6IGludClcbiAgZWxzZSBmYWlsd2l0aCAoc3ByaW50ZiBcIkltbWVkaWF0ZS52YWx1ZV9hc19pbnRfZXhuOiB0eXBlbmFtZTolU1wiIChULnR5cGVuYW1lIHQpKVxuOztcblxubGV0IHZhbHVlX2FzX2ludCAodHlwZSBhKSAoXyA6IGEgdCkgYSA9XG4gIGlmIE9iai5pc19pbnQgKE9iai5yZXByIGEpIHRoZW4gU29tZSAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpIGVsc2UgTm9uZVxuOztcblxubGV0IHZhbHVlX2lzX2ludCAodHlwZSBhKSAoXyA6IGEgdCkgYSA9IE9iai5pc19pbnQgKE9iai5yZXByIGEpXG5cbm1vZHVsZSBBbHdheXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gQWx3YXlzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgQWx3YXlzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IE5ldmVyIHwgU29tZXRpbWVzIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldFtAaW5saW5lIGFsd2F5c10gdmFsdWVfYXNfaW50ICh0eXBlIGEpIF8gYSA9IGEgfD4gKE9iai5tYWdpYyA6IGEgLT4gaW50KVxuICBsZXQgaW50ID0gaW50XG4gIGxldCBjaGFyID0gY2hhclxuICBsZXQgYm9vbCA9IGJvb2xcbiAgbGV0IHVuaXQgPSB1bml0XG5lbmRcblxubW9kdWxlIFNvbWV0aW1lcyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBTb21ldGltZXNcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBTb21ldGltZXMgLT4gU29tZSB0XG4gICAgfCBVbmtub3duIHwgQWx3YXlzIHwgTmV2ZXIgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG4gIGxldCBpbnRfYXNfdmFsdWUgPSBpbnRfYXNfdmFsdWVcbiAgbGV0IGludF9hc192YWx1ZV9leG4gPSBpbnRfYXNfdmFsdWVfZXhuXG4gIGxldCBpbnRfaXNfdmFsdWUgPSBpbnRfaXNfdmFsdWVcbiAgbGV0IHZhbHVlX2FzX2ludCA9IHZhbHVlX2FzX2ludFxuICBsZXQgdmFsdWVfYXNfaW50X2V4biA9IHZhbHVlX2FzX2ludF9leG5cbiAgbGV0IHZhbHVlX2lzX2ludCA9IHZhbHVlX2lzX2ludFxuICBsZXQgb3B0aW9uID0gb3B0aW9uXG4gIGxldCBsaXN0ID0gbGlzdFxuZW5kXG5cbm1vZHVsZSBOZXZlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgRm9yX2FsbF9wYXJhbWV0ZXJzIChzdHJ1Y3RcbiAgICAgIGxldCBpbW1lZGlhY3kgPSBOZXZlclxuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IE5ldmVyIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcblxuICBpbmNsdWRlIE5ldmVyX3ZhbHVlc1xuZW5kXG5cbnR5cGUgJ2EgZGVzdCA9XG4gIHwgQWx3YXlzIG9mICdhIEFsd2F5cy50XG4gIHwgU29tZXRpbWVzIG9mICdhIFNvbWV0aW1lcy50XG4gIHwgTmV2ZXIgb2YgJ2EgTmV2ZXIudFxuICB8IFVua25vd25cblxubGV0IGRlc3QgdCA9XG4gIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgfCBBbHdheXMgLT4gQWx3YXlzIHRcbiAgfCBTb21ldGltZXMgLT4gU29tZXRpbWVzIHRcbiAgfCBOZXZlciAtPiBOZXZlciB0XG4gIHwgVW5rbm93biAtPiBVbmtub3duXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIFQgPSBzaWdcbiAgdHlwZSB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFQxIDogVCkgKFQyIDogVCkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVDEudCAqIFQyLnRcbmVuZFxuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgKiAnYiBbQEBkZXJpdmluZyBzZXhwLCB0eXBlcmVwXVxuXG4gIGxldCBjcmVhdGUgYSBiID0gYSwgYlxuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIC0+IGYgKGEsIGIpXG4gIDs7XG5cbiAgbGV0IHVuY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIChhLCBiKSAtPiBmIGEgYlxuICA7O1xuXG4gIFslJWlmIGZsYW1iZGFfYmFja2VuZF1cblxuICBleHRlcm5hbCBnZXQxIDogKCgnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoKF8sICdhKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQxX2ltbXV0XCJcblxuICBbJSVlbHNlXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EpIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBtYXAgKHgsIHkpIH5mID0gZiB4LCBmIHlcbiAgbGV0IG1hcF9mc3QgKHgsIHkpIH5mID0gZiB4LCB5XG4gIGxldCBtYXBfc25kICh4LCB5KSB+ZiA9IHgsIGYgeVxuICBsZXQgbWFwX2JvdGggKHgsIHkpIH5mMSB+ZjIgPSBmMSB4LCBmMiB5XG4gIGxldCBtYXAyICh4MSwgeTEpICh4MiwgeTIpIH5mID0gZiB4MSB4MiwgZiB5MSB5MlxuXG4gIGxldCBjb21wYXJlIH5jbXAxIH5jbXAyICh4LCB5KSAoeCcsIHknKSA9XG4gICAgbWF0Y2ggY21wMSB4IHgnIHdpdGhcbiAgICB8IDAgLT4gY21wMiB5IHknXG4gICAgfCBpIC0+IGlcbiAgOztcblxuICBsZXQgZXF1YWwgfmVxMSB+ZXEyICh4LCB5KSAoeCcsIHknKSA9IGVxMSB4IHgnICYmIGVxMiB5IHknXG4gIGxldCBzd2FwIChhLCBiKSA9IGIsIGFcblxuICBpbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZDIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbXBhcmUgY21wMSBjbXAyID0gY29tcGFyZSB+Y21wMSB+Y21wMlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgVDMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBzZXhwLCB0eXBlcmVwXVxuXG4gIGxldCBjcmVhdGUgYSBiIGMgPSBhLCBiLCBjXG5cbiAgbGV0IGN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biBhIGIgYyAtPiBmIChhLCBiLCBjKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYiwgYykgLT4gZiBhIGIgY1xuICA7O1xuXG4gIGxldCBtYXAgKHgsIHksIHopIH5mID0gZiB4LCBmIHksIGYgelxuICBsZXQgbWFwX2ZzdCAoeCwgeSwgeikgfmYgPSBmIHgsIHksIHpcbiAgbGV0IG1hcF9zbmQgKHgsIHksIHopIH5mID0geCwgZiB5LCB6XG4gIGxldCBtYXBfdHJkICh4LCB5LCB6KSB+ZiA9IHgsIHksIGYgelxuICBsZXQgbWFwX2FsbCAoeCwgeSwgeikgfmYxIH5mMiB+ZjMgPSBmMSB4LCBmMiB5LCBmMyB6XG4gIGxldCBtYXAyICh4MSwgeTEsIHoxKSAoeDIsIHkyLCB6MikgfmYgPSBmIHgxIHgyLCBmIHkxIHkyLCBmIHoxIHoyXG5cbiAgWyUlaWYgZmxhbWJkYV9iYWNrZW5kXVxuXG4gIGV4dGVybmFsIGdldDEgOiAoKCdhLCBfLCBfKSB0W0Bsb2NhbF9vcHRdKSAtPiAoJ2FbQGxvY2FsX29wdF0pID0gXCIlZmllbGQwX2ltbXV0XCJcbiAgZXh0ZXJuYWwgZ2V0MiA6ICgoXywgJ2EsIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgoJ2EsIF8sIF8pIHRbQGxvY2FsX29wdF0pIC0+ICgnYVtAbG9jYWxfb3B0XSkgPSBcIiVmaWVsZDBcIlxuICBleHRlcm5hbCBnZXQyIDogKChfLCAnYSwgXykgdFtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSA9IFwiJWZpZWxkMVwiXG5cbiAgWyUlZW5kaWZdXG5cbiAgKCogVGhlcmUncyBubyAlZmllbGQyLi4uLiopXG4gIGxldCBnZXQzIChfLCBfLCBhKSA9IGFcblxuICAoKiBsZXhpY29ncmFwaGljIGNvbXBhcmlzb24gICopXG4gIGxldCBjb21wYXJlIH5jbXAxIH5jbXAyIH5jbXAzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPVxuICAgIGxldCBjMSA9IGNtcDEgeCB4JyBpblxuICAgIGlmIGMxIDw+IDBcbiAgICB0aGVuIGMxXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYzIgPSBjbXAyIHkgeScgaW5cbiAgICAgIGlmIGMyIDw+IDAgdGhlbiBjMiBlbHNlIGNtcDMgeiB6JylcbiAgOztcblxuICBsZXQgZXF1YWwgfmVxMSB+ZXEyIH5lcTMgKHgsIHksIHopICh4JywgeScsIHonKSA9IGVxMSB4IHgnICYmIGVxMiB5IHknICYmIGVxMyB6IHonXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyYWJsZV9zZXhwYWJsZSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBIYXNoZXJfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIFNleHBhYmxlIChTMSA6IFNleHBhYmxlLlMpIChTMiA6IFNleHBhYmxlLlMpID0gc3RydWN0XG4gIHR5cGUgdCA9IFMxLnQgKiBTMi50IFtAQGRlcml2aW5nIHNleHBdXG5lbmRcblxubW9kdWxlIEJpbmFibGUgKEIxIDogQmluYWJsZS5TKSAoQjIgOiBCaW5hYmxlLlMpID0gc3RydWN0XG4gIHR5cGUgdCA9IEIxLnQgKiBCMi50IFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgQ29tcGFyYXRvciAoUzEgOiBDb21wYXJhdG9yLlMpIChTMiA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChTMSkgKFMyKVxuXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID1cbiAgICAoUzEuY29tcGFyYXRvcl93aXRuZXNzLCBTMi5jb21wYXJhdG9yX3dpdG5lc3MpIFQyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVDIuY29tcGFyYXRvciBTMS5jb21wYXJhdG9yIFMyLmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgQ29tcGFyYWJsZV9wbGFpbiAoUzEgOiBDb21wYXJhYmxlLlNfcGxhaW4pIChTMiA6IENvbXBhcmFibGUuU19wbGFpbikgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IgKFMxKSAoUzIpXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gY29tcGFyYXRvci5zZXhwX29mX3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGUgKFMxIDogQ29tcGFyYWJsZV9zZXhwYWJsZSkgKFMyIDogQ29tcGFyYWJsZV9zZXhwYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBhYmxlIChTMSkgKFMyKVxuXG4gICAgbGV0IGNvbXBhcmUgKHMxLCBzMikgKHMxJywgczInKSA9XG4gICAgICBtYXRjaCBTMS5jb21wYXJlIHMxIHMxJyB3aXRoXG4gICAgICB8IDAgLT4gUzIuY29tcGFyZSBzMiBzMidcbiAgICAgIHwgeCAtPiB4XG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBIYXNoZXIgKEgxIDogSGFzaGVyX3NleHBhYmxlKSAoSDIgOiBIYXNoZXJfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSDEudCAqIEgyLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyX3NleHBhYmxlX29mX2hhc2hhYmxlX3NleHBhYmxlIChTIDogSGFzaGFibGVfc2V4cGFibGUpIDpcbiAgSGFzaGVyX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gUy50ID0gc3RydWN0XG4gIGluY2x1ZGUgU1xuXG4gIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZV90IChTMSA6IEhhc2hhYmxlX3NleHBhYmxlKSAoUzIgOiBIYXNoYWJsZV9zZXhwYWJsZSkgPVxuICBIYXNoZXJcbiAgICAoSGFzaGVyX3NleHBhYmxlX29mX2hhc2hhYmxlX3NleHBhYmxlXG4gICAgICAgKFMxKSlcbiAgICAoSGFzaGVyX3NleHBhYmxlX29mX2hhc2hhYmxlX3NleHBhYmxlIChTMikpXG5cbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlX3RcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFN1blxuICAgICAgICB8IE1vblxuICAgICAgICB8IFR1ZVxuICAgICAgICB8IFdlZFxuICAgICAgICB8IFRodVxuICAgICAgICB8IEZyaVxuICAgICAgICB8IFNhdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlbnVtZXJhdGUsIGhhc2gsIHF1aWNrY2hlY2ssIHN0YWJsZV93aXRuZXNzLCB0eXBlcmVwXVxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gXCJTVU5cIlxuICAgICAgICB8IE1vbiAtPiBcIk1PTlwiXG4gICAgICAgIHwgVHVlIC0+IFwiVFVFXCJcbiAgICAgICAgfCBXZWQgLT4gXCJXRURcIlxuICAgICAgICB8IFRodSAtPiBcIlRIVVwiXG4gICAgICAgIHwgRnJpIC0+IFwiRlJJXCJcbiAgICAgICAgfCBTYXQgLT4gXCJTQVRcIlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZ19sb25nIHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBTdW4gLT4gXCJTdW5kYXlcIlxuICAgICAgICB8IE1vbiAtPiBcIk1vbmRheVwiXG4gICAgICAgIHwgVHVlIC0+IFwiVHVlc2RheVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV2VkbmVzZGF5XCJcbiAgICAgICAgfCBUaHUgLT4gXCJUaHVyc2RheVwiXG4gICAgICAgIHwgRnJpIC0+IFwiRnJpZGF5XCJcbiAgICAgICAgfCBTYXQgLT4gXCJTYXR1cmRheVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nX2ludGVybmFsIHMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcudXBwZXJjYXNlIHMgd2l0aFxuICAgICAgICB8IFwiU1VOXCIgfCBcIlNVTkRBWVwiIC0+IFN1blxuICAgICAgICB8IFwiTU9OXCIgfCBcIk1PTkRBWVwiIC0+IE1vblxuICAgICAgICB8IFwiVFVFXCIgfCBcIlRVRVNEQVlcIiAtPiBUdWVcbiAgICAgICAgfCBcIldFRFwiIHwgXCJXRURORVNEQVlcIiAtPiBXZWRcbiAgICAgICAgfCBcIlRIVVwiIHwgXCJUSFVSU0RBWVwiIC0+IFRodVxuICAgICAgICB8IFwiRlJJXCIgfCBcIkZSSURBWVwiIC0+IEZyaVxuICAgICAgICB8IFwiU0FUXCIgfCBcIlNBVFVSREFZXCIgLT4gU2F0XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9zdHJpbmc6ICVTXCIgcyAoKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX2ludF9leG4gaSA9XG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICB8IDAgLT4gU3VuXG4gICAgICAgIHwgMSAtPiBNb25cbiAgICAgICAgfCAyIC0+IFR1ZVxuICAgICAgICB8IDMgLT4gV2VkXG4gICAgICAgIHwgNCAtPiBUaHVcbiAgICAgICAgfCA1IC0+IEZyaVxuICAgICAgICB8IDYgLT4gU2F0XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuOiAlZFwiIGkgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19pbnQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFN1biAtPiAwXG4gICAgICAgIHwgTW9uIC0+IDFcbiAgICAgICAgfCBUdWUgLT4gMlxuICAgICAgICB8IFdlZCAtPiAzXG4gICAgICAgIHwgVGh1IC0+IDRcbiAgICAgICAgfCBGcmkgLT4gNVxuICAgICAgICB8IFNhdCAtPiA2XG4gICAgICA7O1xuXG4gICAgICAoKiBCZSB2ZXJ5IGdlbmVyb3VzIHdpdGggb2Zfc3RyaW5nLiAgV2UgYWNjZXB0IGFsbCBwb3NzaWJsZSBjYXBpdGFsaXphdGlvbnMgYW5kIHRoZVxuICAgICAgICAgaW50ZWdlciByZXByZXNlbnRhdGlvbnMgYXMgd2VsbC4gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmdfaW50ZXJuYWwgcyB3aXRoXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICh0cnkgb2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBzKSB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9zdHJpbmc6ICVTXCIgcyAoKSlcbiAgICAgIDs7XG5cbiAgICAgICgqIHRoaXMgaXMgaW4gVCByYXRoZXIgdGhhbiBvdXRzaWRlIHNvIHRoYXQgdGhlIGxhdGVyIGZ1bmN0b3IgYXBwbGljYXRpb24gdG8gYnVpbGQgbWFwc1xuICAgICAgICAgdXNlcyB0aGlzIHNleHAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgIGxldCBvcGVuIFNleHBsaWIwLlNleHBfZ3JhbW1hciBpblxuICAgICAgICBsZXQgYXRvbSBuYW1lID0gTm9fdGFnIHsgbmFtZTsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9IGluXG4gICAgICAgIGxldCB1bnN1Z2dlc3RlZCBncmFtbWFyID1cbiAgICAgICAgICBUYWcgeyBrZXkgPSBjb21wbGV0aW9uX3N1Z2dlc3RlZDsgdmFsdWUgPSBBdG9tIFwiZmFsc2VcIjsgZ3JhbW1hciB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnRfY2xhdXNlIHQgPSB1bnN1Z2dlc3RlZCAoYXRvbSAoSW50LnRvX3N0cmluZyAodG9faW50IHQpKSkgaW5cbiAgICAgICAgbGV0IHNob3J0X2NsYXVzZSB0ID0gYXRvbSAodG9fc3RyaW5nIHQpIGluXG4gICAgICAgIGxldCBsb25nX2NsYXVzZSB0ID0gdW5zdWdnZXN0ZWQgKGF0b20gKHRvX3N0cmluZ19sb25nIHQpKSBpblxuICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgTGF6eVxuICAgICAgICAgICAgICAobGF6eVxuICAgICAgICAgICAgICAgIChWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9pbnNlbnNpdGl2ZVxuICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QuY29uY2F0XG4gICAgICAgICAgICAgICAgICAgICAgICAgWyBMaXN0Lm1hcCBhbGwgfmY6aW50X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIDsgTGlzdC5tYXAgYWxsIH5mOnNob3J0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIDsgTGlzdC5tYXAgYWxsIH5mOmxvbmdfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBtb2R1bGUgVW5zdGFibGUgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSAoQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKFQpIDogQ29tcGFyYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFVuc3RhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVW5zdGFibGUpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxLlVuc3RhYmxlXG5cbmxldCB3ZWVrZGF5cyA9IFsgTW9uOyBUdWU7IFdlZDsgVGh1OyBGcmkgXVxubGV0IHdlZWtlbmRzID0gWyBTYXQ7IFN1biBdXG5cbmxldCBvZl9pbnQgaSA9XG4gIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBpc29fODYwMV93ZWVrZGF5X251bWJlciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTW9uIC0+IDFcbiAgfCBUdWUgLT4gMlxuICB8IFdlZCAtPiAzXG4gIHwgVGh1IC0+IDRcbiAgfCBGcmkgLT4gNVxuICB8IFNhdCAtPiA2XG4gIHwgU3VuIC0+IDdcbjs7XG5cbmxldCBudW1fZGF5c19pbl93ZWVrID0gN1xubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKEludC4oICUgKSAodG9faW50IHQgKyBpKSBudW1fZGF5c19pbl93ZWVrKVxuXG5sZXQgbnVtX2RheXMgfmZyb20gfnRvXyA9XG4gIGxldCBkID0gdG9faW50IHRvXyAtIHRvX2ludCBmcm9tIGluXG4gIGlmIEludC4oZCA8IDApIHRoZW4gZCArIG51bV9kYXlzX2luX3dlZWsgZWxzZSBkXG47O1xuXG5sZXQgaXNfc3VuX29yX3NhdCB0ID0gdCA9IFN1biB8fCB0ID0gU2F0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFJvdW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICB8IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IFwiRGlnaXRfc3RyaW5nX2hlbHBlcnNcIlxubGV0IGludDYzX3R3byA9IEludDYzLm9mX2ludCAyXG5sZXQgaW50NjNfdGVuID0gSW50NjMub2ZfaW50IDEwXG5sZXQgaW50NjNfdHdlbnR5ID0gSW50NjMub2ZfaW50IDIwXG5sZXQgaW50NjNfYmlsbGlvbiA9IEludDYzLm9mX2ludCAxXzAwMF8wMDBfMDAwXG5sZXQgbWF4X2JpbGxpb25zID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX2JpbGxpb25cblxubGV0IHJlYyBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgbiA9XG4gIGlmIEludDYzLiggPCApIG4gaW50NjNfdGVuXG4gIHRoZW4gMVxuICBlbHNlIEludC5zdWNjIChkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgKEludDYzLiggLyApIG4gaW50NjNfdGVuKSlcbjs7XG5cbmxldCBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlID0gZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIEludDYzLm1heF92YWx1ZVxuXG5sZXQgcmVjIG1heF9pbnQ2M193aXRoIH5kaWdpdHMgPVxuICBtYXRjaCBkaWdpdHMgd2l0aFxuICB8IDEgLT4gSW50NjMub2ZfaW50IDlcbiAgfCAyIC0+IEludDYzLm9mX2ludCA5OVxuICB8IDMgLT4gSW50NjMub2ZfaW50IDk5OVxuICB8IDQgLT4gSW50NjMub2ZfaW50IDlfOTk5XG4gIHwgNSAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5XG4gIHwgNiAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OVxuICB8IDcgLT4gSW50NjMub2ZfaW50IDlfOTk5Xzk5OVxuICB8IDggLT4gSW50NjMub2ZfaW50IDk5Xzk5OV85OTlcbiAgfCA5IC0+IEludDYzLm9mX2ludCA5OTlfOTk5Xzk5OVxuICB8IF8gLT5cbiAgICBpZiBkaWdpdHMgPj0gZGlnaXRzX29mX2ludDYzX21heF92YWx1ZVxuICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My5zdWNjIChtYXhfaW50NjNfd2l0aCB+ZGlnaXRzOihkaWdpdHMgLSA5KSkgaW5cbiAgICAgIEludDYzLnByZWQgKEludDYzLiggKiApIGludDYzX2JpbGxpb24gYmlsbGlvbnMpKVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdW5zYWZlX2NoYXJfb2ZfZGlnaXQgbiA9IENoYXIudW5zYWZlX29mX2ludCAoQ2hhci50b19pbnQgJzAnICsgbilcbiAgbGV0IGRpZ2l0X29mX2NoYXIgY2hhciA9IENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyXG5cbiAgbGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ5dGVzIHBvcyAodW5zYWZlX2NoYXJfb2ZfZGlnaXQgaW50KVxuICA7O1xuXG4gIGxldCByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSBpbnQgLyAxMCBpblxuICAgIGxldCBvbmVzID0gaW50IC0gKHRlbnMgKiAxMCkgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIG9uZXM7XG4gICAgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAxKSBpbnQgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMikgaW50IGluXG4gICAgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDMpIGludCBpblxuICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA0KSBpbnQgaW5cbiAgICB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNSkgaW50IGluXG4gICAgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDYpIGludCBpblxuICAgIHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA3KSBpbnQgaW5cbiAgICB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgOCkgaW50IGluXG4gICAgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3MgaW50NjMgPVxuICAgIGxldCBiaWxsaW9ucyA9IEludDYzLiggLyApIGludDYzIGludDYzX2JpbGxpb24gaW5cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjMuKCAtICkgaW50NjMgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIGluXG4gICAgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biByZW1haW5kZXIpO1xuICAgIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYyB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAyIC0+IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAzIC0+IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA0IC0+IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA1IC0+IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA2IC0+IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA3IC0+IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA4IC0+IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA5IC0+IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID1cbiAgICAgICAgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSBpbnQ2M1xuICAgICAgaW5cbiAgICAgIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9IGRpZ2l0X29mX2NoYXIgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyBwb3MpXG5cbiAgbGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMSlcbiAgOztcblxuICBsZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAyKVxuICA7O1xuXG4gIGxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDMpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNClcbiAgOztcblxuICBsZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA1KVxuICA7O1xuXG4gIGxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDYpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNylcbiAgOztcblxuICBsZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA4KVxuICA7O1xuXG4gIGxldCByYWlzZV9pbnQ2M19vdmVyZmxvdyBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogb3ZlcmZsb3cgcmVhZGluZyBpbnQ2M1wiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICBsZXQgcmVjIHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gSW50NjMub2ZfaW50IChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAzIC0+IEludDYzLm9mX2ludCAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDQgLT4gSW50NjMub2ZfaW50IChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA2IC0+IEludDYzLm9mX2ludCAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDcgLT4gSW50NjMub2ZfaW50IChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA5IC0+IEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPSByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGluXG4gICAgICBsZXQgcmVtYWluZGVyID1cbiAgICAgICAgSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpKVxuICAgICAgaW5cbiAgICAgIGlmIEludDYzLiggPiApIGJpbGxpb25zIG1heF9iaWxsaW9ucyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgbGV0IHN1bSA9IEludDYzLiggKyApIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSByZW1haW5kZXIgaW5cbiAgICAgIGlmIEludDYzLiggPCApIHN1bSBJbnQ2My56ZXJvIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBzdW1cbiAgOztcblxuICBsZXQgZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIChudW1lcmF0b3IgKyBkZW5vbWluYXRvciAtIEludDYzLm9uZSkgLyUgZGVub21pbmF0b3JcbiAgOztcblxuICBsZXQgcmFpc2VfaW52YWxpZF9kZWNpbWFsIG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBpbnZhbGlkIGRlY2ltYWwgY2hhcmFjdGVyXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gICgqIFJlYWRzIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBiZXR3ZWVuIFtwb3NdIGFuZCBbcG9zK2RlY2ltYWxzLTFdLCBpbmNsdXNpdmUsIGFuZFxuICAgICBpbnRlcnBlcmV0cyBpdCBhcyBhIHBvc2l0aXZlIGRlY2ltYWwgcGFydCBvZiBhIG51bWJlciwgd2hpY2ggd2UgY2FsbCBbeF0uXG5cbiAgICAgTGV0IFtpXSBhbmQgW3JdIGJlIHRoZSBpbnRlZ2VyIHBhcnQgYW5kIHJlbWFpbmluZyBmcmFjdGlvbmFsIHBhcnQgb2ZcbiAgICAgW3ggKiBzY2FsZSAvIGRpdmlzb3JdLlxuXG4gICAgIElmIFtyIDwgcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldLlxuICAgICBJZiBbciA9IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXSBvciBbaSsxXSBiYXNlZCBvbiBbcm91bmRfZXhhY3RdLlxuICAgICBJZiBbciA+IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpKzFdLlxuXG4gICAgIEFzc3VtZXMgd2l0aG91dCBjaGVja2luZyB0aGF0IFtzY2FsZV0gYW5kIFtkaXZpc29yXSBhcmUgYm90aCBwb3NpdGl2ZSBhbmRcbiAgICAgbGVzcyB0aGFuIFtJbnQ2My5tYXhfdmFsdWUgLyAxMF0gKHRvIGF2b2lkIGludGVybmFsIG92ZXJmbG93IGR1cmluZyB0aGUgYWxnb3JpdGhtXG4gICAgIHdoZW4gbXVsdGlwbHlpbmcgYnkgMTApLCBhbmQgdGhhdCBbcm91bmRfYXQgPj0gMF0gYW5kIFtyb3VuZF9hdCA8IGRpdmlzb3JdLiAqKVxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5wb3M6c3RhcnRcbiAgICAgICAgfmRlY2ltYWxzXG4gICAgICAgIH5zY2FsZVxuICAgICAgICB+ZGl2aXNvclxuICAgICAgICB+cm91bmRfYXRcbiAgICAgICAgfnJvdW5kX2V4YWN0XG4gICAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gICAgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgdW50aWwgPSBJbnQuKCArICkgc3RhcnQgZGVjaW1hbHMgaW5cbiAgICAoKiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgdGhhdCBlYWNoIGl0ZXJhdGlvbiwgd2Ugc3RyaXAgb2ZmIHRoZSBuZXh0IGRlY2ltYWwgZGlnaXQgYW5kXG4gICAgICAgdXBkYXRlIFtzdW1dLCBbcm91bmRfYXRdLCBhbmQgW2Rpdmlzb3JdIHN1Y2ggdGhhdCB0aGUgZGVzaXJlZCByZXN1bHQgaXM6XG5cbiAgICAgICBbIHN1bSArIHJvdW5kKHJlbWFpbmluZ19kaWdpdHNfb2ZfeF9wYXJzZWRfYXNfZGVjaW1hbCAqIHNjYWxlIC8gZGl2aXNvcikgXVxuICAgICAgIHdoZXJlIFwicm91bmRcIiByb3VuZHMgYmFzZWQgb24gdGhlIG5ldyB2YWx1ZSBvZiBbcm91bmRfYXRdLlxuICAgICopXG4gICAgbGV0IGRpdmlzb3IgPSByZWYgZGl2aXNvciBpblxuICAgIGxldCByb3VuZF9hdCA9IHJlZiByb3VuZF9hdCBpblxuICAgIGxldCBzdW0gPSByZWYgSW50NjMuemVybyBpblxuICAgIGxldCBwb3MgPSByZWYgc3RhcnQgaW5cbiAgICAoKiBTdG9wIGlmIHdlIHJ1biBvdXQgb2YgY2hhcmFjdGVycywgb3IgaWYgZnVydGhlciBkaWdpdHMgY2Fubm90IGluY3JlYXNlIG91ciBzdW0uICopXG4gICAgd2hpbGUgSW50LiggPD4gKSAhcG9zIHVudGlsICYmICFyb3VuZF9hdCA8IHNjYWxlIGRvXG4gICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgIHwgJzAnIC4uICc5JyBhcyBjaGFyIC0+XG4gICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKGRpZ2l0X29mX2NoYXIgY2hhcikgaW5cbiAgICAgICAgICgqIEV2ZXJ5IG5ldyBkZWNpbWFsIHBsYWNlIGltcGxpY2l0bHkgc2NhbGVzIG91ciBudW1lcmF0b3IgYnkgYSBmYWN0b3Igb2YgdGVuLFxuICAgICAgICAgICAgc28gbXVzdCBhbHNvIGVmZmVjdGl2ZWx5IHNjYWxlIG91ciBkZW5vbWluYXRvci5cblxuICAgICAgICAgICAgMC5hYmNkZWYgKiBzY2FsZS9kaXZpc29yICAgICAgICBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS8oZGl2aXNvcioxMCkgIFtyb3VuZCBhdCByb3VuZF9hdCoxMF1cblxuICAgICAgICAgICAgVGhlbiByZWRlZmluZSBkaXZpc29yIDo9IGRpdmlzb3IqMTAgYW5kIHJvdW5kX2F0IDo9IHJvdW5kX2F0KjEwLCBzbyB3ZSBoYXZlOlxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XSAqKVxuICAgICAgICAgZGl2aXNvciA6PSAhZGl2aXNvciAqIGludDYzX3RlbjtcbiAgICAgICAgIHJvdW5kX2F0IDo9ICFyb3VuZF9hdCAqIGludDYzX3RlbjtcbiAgICAgICAgICgqIE5leHQgd2Ugd29yayBvdXQgdGhlIHBhcnQgb2YgdGhlIHN1bSBiYXNlZCBvbiBvdXIgY3VycmVudCBkaWdpdDpcblxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvZGl2aXNvciAtIHJvdW5kX2F0IC8gZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IChhKnNjYWxlLXJvdW5kX2F0KSAvIGRpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG5cbiAgICAgICAgICAgIERlY29tcG9zZSB0aGUgZmlyc3QgdGVybSBpbnRvIGludGVnZXIgYW5kIHJlbWFpbmRlciBwYXJ0cy5cbiAgICAgICAgICAgIFNpbmNlIHdlIGhhdmUgYWxyZWFkeSBzdWJ0cmFjdGVkIFtyb3VuZF9hdF0sIHdlIGRlY29tcG9zZSBiYXNlZFxuICAgICAgICAgICAgb24gdGhlIGNlaWxpbmcgcmF0aGVyIHRoYW4gdGhlIGZsb29yIG9mIHRoZSBkaXZpc2lvbixcbiAgICAgICAgICAgIGUuZy4gNS8zIHdvdWxkIGRlY29tcG9zZSBhcyAyICsgKC0xKS8zLCByYXRoZXIgdGhhbiAxICsgKDIvMykuXG5cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgcmVtYWluZGVyL2Rpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl1cbiAgICAgICAgICopXG4gICAgICAgICBsZXQgbnVtZXJhdG9yID0gKGRpZ2l0ICogc2NhbGUpIC0gIXJvdW5kX2F0IGluXG4gICAgICAgICBsZXQgZGVub21pbmF0b3IgPSAhZGl2aXNvciBpblxuICAgICAgICAgbGV0IGluY3JlbWVudCA9IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgIGxldCByZW1haW5kZXIgPSBudW1lcmF0b3IgLSAoaW5jcmVtZW50ICogZGVub21pbmF0b3IpIGluXG4gICAgICAgICAoKiBOb3cganVzdCBhY2N1bXVsYXRlIHRoZSBuZXcgaW5jcmVtZW50IGFuZCBpdGVyYXRlIG9uIHRoZSByZW1haW5pbmcgcGFydDpcbiAgICAgICAgICAgIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl0uXG5cbiAgICAgICAgICAgIFNpbmNlIFtyZW1haW5kZXJdIGlzIGJldHdlZW4gWy0oZGl2aXNvci0xKV0gYW5kIFswXSBpbmNsdXNpdmUsIHRoZSBuZXdcbiAgICAgICAgICAgIFtyb3VuZF9hdF0gd2lsbCBiZSB3aXRoaW4gWzBdIGFuZCBbZGl2aXNvci0xXSBpbmNsdXNpdmUuICopXG4gICAgICAgICByb3VuZF9hdCA6PSAtcmVtYWluZGVyO1xuICAgICAgICAgc3VtIDo9ICFzdW0gKyBpbmNyZW1lbnQ7XG4gICAgICAgICAoKiBUaGlzIGxpbmUgcHJldmVudHMgdGhlIGRpdmlzb3IgZnJvbSBncm93aW5nIHdpdGhvdXQgYm91bmQgYW5kIG92ZXJmbG93aW5nLiBJZlxuICAgICAgICAgICAgdGhpcyBsaW5lIGFjdHVhbGx5IGNoYW5nZXMgdGhlIGRpdmlzb3IsIHRoZW4gdGhlIGRpdmlzb3IgaXMgbGFyZ2VyIHRoYW4gdGhlXG4gICAgICAgICAgICBzY2FsZSwgc28gdGhlIHN1bSB3aWxsIGluY3JlYXNlIGlmIGFuZCBvbmx5IGlmIFtwYXJzZWRfcmVtYWluaW5nX2RpZ2l0cyAqXG4gICAgICAgICAgICBzY2FsZSAoPiBvciA+PSkgcm91bmRfYXRdLCB3aGljaCBkb2Vzbid0IGRlcGVuZCBvbiBob3cgbXVjaCBsYXJnZXIgdGhlXG4gICAgICAgICAgICBkaXZpc29yIGlzLiBTbyB0aGlzIGNoYW5nZSBpcyBzYWZlLiAqKVxuICAgICAgICAgZGl2aXNvciA6PSBJbnQ2My5taW4gZGVub21pbmF0b3Igc2NhbGVcbiAgICAgICB8ICdfJyB3aGVuIGFsbG93X3VuZGVyc2NvcmUgLT4gKClcbiAgICAgICB8IF8gLT4gcmFpc2VfaW52YWxpZF9kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIpO1xuICAgICAgcG9zIDo9IEludC5zdWNjICFwb3NcbiAgICBkb25lO1xuICAgIGlmICFyb3VuZF9hdCA9IHplcm9cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHJvdW5kX2V4YWN0IHdpdGhcbiAgICAgIHwgUm91bmQuVG93YXJkX25lZ2F0aXZlX2luZmluaXR5IC0+ICgpXG4gICAgICB8IFJvdW5kLlRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eSAtPiBzdW0gOj0gIXN1bSArIEludDYzLm9uZSk7XG4gICAgIXN1bVxuICA7O1xuXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gICAgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgIHN0cmluZ1xuICAgICAgfnBvc1xuICAgICAgfmRlY2ltYWxzXG4gICAgICB+c2NhbGU6KEludDYzLiggKiApIHNjYWxlIGludDYzX3R3bylcbiAgICAgIH5kaXZpc29yOmludDYzX3R3b1xuICAgICAgfnJvdW5kX2F0OkludDYzLm9uZVxuICAgICAgfnJvdW5kX2V4YWN0OnJvdW5kX3RpZXNcbiAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gIDs7XG5lbmRcblxubGV0IG1pbl9zY2FsZSA9IEludDYzLm9uZVxubGV0IG1heF9zY2FsZSA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M190d2VudHlcblxubGV0IHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRlY2ltYWxzPSVkIGlzIG5lZ2F0aXZlXCIgbW9kdWxlX25hbWUgbmFtZSBkZWNpbWFscyAoKVxuOztcblxubGV0IHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRpZ2l0cz0lZCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIiBtb2R1bGVfbmFtZSBuYW1lIGRpZ2l0cyAoKVxuOztcblxubGV0IHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGUgPVxuICBpbnZhbGlkX2FyZ2ZcbiAgICBcIiVzLiVzOiBzY2FsZT0lTGQgb3V0IG9mIHJhbmdlIFslTGQsICVMZF1cIlxuICAgIG1vZHVsZV9uYW1lXG4gICAgbmFtZVxuICAgIChJbnQ2My50b19pbnQ2NCBzY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWluX3NjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtYXhfc2NhbGUpXG4gICAgKClcbjs7XG5cbmxldCByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgPj0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6IHBvcz0lZCBvdXQgb2YgcmFuZ2UgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiAlZCBkaWdpdHMgZG8gbm90IGZpdCBhdCBwb3MgJWQgaW4gc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgZGlnaXRzXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbjs7XG5cbmxldCByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50ID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQgbWF4ICgpXG47O1xuXG5sZXQgcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjMgPVxuICBpbnZhbGlkX2FyZ2YgIVwiJXMuJXM6ICV7SW50NjN9IG91dCBvZiByYW5nZSBbMCwgJXtJbnQ2M31dXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQ2MyBtYXggKClcbjs7XG5cbmxldCBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGlmIGRlY2ltYWxzIDwgMCB0aGVuIHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9IGlmIGRpZ2l0cyA8IDEgdGhlbiByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0c1xuXG5sZXQgY2hlY2tfcG9zIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyArIGRpZ2l0cyA+IGxlbiB0aGVuIHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCBjaGVja19pbnQgbmFtZSB+bWF4IGludCA9XG4gIGlmIGludCA8IDAgfHwgaW50ID4gbWF4IHRoZW4gcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGlmIEludDYzLiggPCApIGludDYzIEludDYzLnplcm8gfHwgSW50NjMuKCA+ICkgaW50NjMgbWF4XG4gIHRoZW4gcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCBjaGVja19zY2FsZSBuYW1lIH5zY2FsZSA9XG4gIGlmIEludDYzLiggPCApIHNjYWxlIG1pbl9zY2FsZSB8fCBJbnQ2My4oID4gKSBzY2FsZSBtYXhfc2NhbGVcbiAgdGhlbiByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlXG47O1xuXG5sZXQgY2hlY2tfd3JpdGUgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIH5tYXggaW50ID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50IG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja193cml0ZTYzIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBtYXggPSBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzIGluXG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8xX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MSB+bWF4OjkgaW50O1xuICBVbnNhZmUud3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjIgfm1heDo5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8zX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MyB+bWF4Ojk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV80X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NCB+bWF4OjlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzVfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo1IH5tYXg6OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzZfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo2IH5tYXg6OTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV83X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NyB+bWF4OjlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV84X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OCB+bWF4Ojk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjkgfm1heDo5OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX3dyaXRlNjMgXCJ3cml0ZV9pbnQ2M1wiIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjM7XG4gIFVuc2FmZS53cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjNcbjs7XG5cbmxldCBjaGVja19yZWFkIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjMgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2M19kZWNpbWFsIG5hbWUgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHM7XG4gIGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlO1xuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzOmRlY2ltYWxzIH5sZW4gfnBvc1xuOztcblxubGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8xX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjE7XG4gIFVuc2FmZS5yZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzJfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MjtcbiAgVW5zYWZlLnJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfM19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czozO1xuICBVbnNhZmUucmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF80X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjQ7XG4gIFVuc2FmZS5yZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzVfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NTtcbiAgVW5zYWZlLnJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo2O1xuICBVbnNhZmUucmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF83X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjc7XG4gIFVuc2FmZS5yZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzhfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6ODtcbiAgVW5zYWZlLnJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo5O1xuICBVbnNhZmUucmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX3JlYWQ2MyBcInJlYWRfaW50NjNcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0cztcbiAgVW5zYWZlLnJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgY2hlY2tfcmVhZDYzX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIiB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZTtcbiAgVW5zYWZlLnJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgSmFuXG4gICAgICB8IEZlYlxuICAgICAgfCBNYXJcbiAgICAgIHwgQXByXG4gICAgICB8IE1heVxuICAgICAgfCBKdW5cbiAgICAgIHwgSnVsXG4gICAgICB8IEF1Z1xuICAgICAgfCBTZXBcbiAgICAgIHwgT2N0XG4gICAgICB8IE5vdlxuICAgICAgfCBEZWNcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrLCB2YXJpYW50c11cblxuICAgIGxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbiAgICBsZXQgb2ZfaW50X2V4biBpIDogdCA9XG4gICAgICBtYXRjaCBpIHdpdGhcbiAgICAgIHwgMSAtPiBKYW5cbiAgICAgIHwgMiAtPiBGZWJcbiAgICAgIHwgMyAtPiBNYXJcbiAgICAgIHwgNCAtPiBBcHJcbiAgICAgIHwgNSAtPiBNYXlcbiAgICAgIHwgNiAtPiBKdW5cbiAgICAgIHwgNyAtPiBKdWxcbiAgICAgIHwgOCAtPiBBdWdcbiAgICAgIHwgOSAtPiBTZXBcbiAgICAgIHwgMTAgLT4gT2N0XG4gICAgICB8IDExIC0+IE5vdlxuICAgICAgfCAxMiAtPiBEZWNcbiAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJNb250aC5vZl9pbnRfZXhuICVkXCIgaSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfaW50IGkgPVxuICAgICAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2ludCAodCA6IHQpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBKYW4gLT4gMVxuICAgICAgfCBGZWIgLT4gMlxuICAgICAgfCBNYXIgLT4gM1xuICAgICAgfCBBcHIgLT4gNFxuICAgICAgfCBNYXkgLT4gNVxuICAgICAgfCBKdW4gLT4gNlxuICAgICAgfCBKdWwgLT4gN1xuICAgICAgfCBBdWcgLT4gOFxuICAgICAgfCBTZXAgLT4gOVxuICAgICAgfCBPY3QgLT4gMTBcbiAgICAgIHwgTm92IC0+IDExXG4gICAgICB8IERlYyAtPiAxMlxuICAgIDs7XG5cbiAgICBsZXQgdG9fYmluYWJsZSB0ID0gdG9faW50IHQgLSAxXG4gICAgbGV0IG9mX2JpbmFibGUgaSA9IG9mX2ludF9leG4gKGkgKyAxKVxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2JpbmFibGVcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2JpbmFibGVcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcblxuICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGUgSW50LlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgbnVtX21vbnRocyA9IDEyXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5cbiAgbGV0IGFsbCA9IFsgSmFuOyBGZWI7IE1hcjsgQXByOyBNYXk7IEp1bjsgSnVsOyBBdWc7IFNlcDsgT2N0OyBOb3Y7IERlYyBdXG4gIGxldCBoYXNoID0gdG9faW50XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICBlbmQpIDpcbiAgICBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgICgqIEluIDEwOC4wNmEgYW5kIGVhcmxpZXIsIG1vbnRocyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGludHMuICBGcm9tIDEwOC4wN1xuICAgICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZFxuICAgICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXNcbiAgICAgICBjaGFuZ2VkIGZyb20gcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlXG4gICAgICAgbW9zdCBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgICAgcmF3LiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBJbnQudF9vZl9zZXhwIHNleHApIHdpdGhcbiAgICAgIHwgU29tZSBpIC0+IG9mX2ludF9leG4gKGkgKyAxKVxuICAgICAgfCBOb25lIC0+IFQudF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbigqIFJlcGxhY2UgdGhlIG92ZXJyaWRlbiBzZXhwIGNvbnZlcnRlcnMgZnJvbSBbQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVdIHdpdGggdGhlIG9yZGluYXJ5XG4gICBzeW1ib2xpYyBjb252ZXJ0ZXJzLiAqKVxubGV0IHNleHBfb2ZfdCA9IFQuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gVC50X29mX3NleHBcbmxldCBzaGlmdCB0IGkgPSBvZl9pbnRfZXhuICgxICsgSW50LiggJSApICh0b19pbnQgdCAtIDEgKyBpKSBudW1fbW9udGhzKVxuXG5sZXQgYWxsX3N0cmluZ3MgPVxuICBsYXp5XG4gICAgKEFycmF5Lm9mX2xpc3QgKExpc3QubWFwIGFsbCB+ZjooZnVuIHZhcmlhbnQgLT4gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB2YXJpYW50KSkpKVxuOztcblxubGV0IHRvX3N0cmluZyAodCA6IHQpID1cbiAgbGV0IGFsbF9zdHJpbmdzID0gTGF6eS5mb3JjZSBhbGxfc3RyaW5ncyBpblxuICBhbGxfc3RyaW5ncy4odG9faW50IHQgLSAxKVxuOztcblxubGV0IG9mX3N0cmluZyA9XG4gIGxldCB0YWJsZSA9XG4gICAgbGF6eVxuICAgICAgKGxldCBtb2R1bGUgVCA9IFN0cmluZy5UYWJsZSBpblxuICAgICAgIGxldCB0YWJsZSA9IFQuY3JlYXRlIH5zaXplOm51bV9tb250aHMgKCkgaW5cbiAgICAgICBBcnJheS5pdGVyaSAoTGF6eS5mb3JjZSBhbGxfc3RyaW5ncykgfmY6KGZ1biBpIHMgLT5cbiAgICAgICAgIGxldCB0ID0gb2ZfaW50X2V4biAoaSArIDEpIGluXG4gICAgICAgICBIYXNodGJsLnNldCB0YWJsZSB+a2V5OnMgfmRhdGE6dDtcbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy5sb3dlcmNhc2UgcykgfmRhdGE6dDtcbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6KFN0cmluZy51cHBlcmNhc2UgcykgfmRhdGE6dCk7XG4gICAgICAgdGFibGUpXG4gIGluXG4gIGZ1biBzdHIgLT5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgKExhenkuZm9yY2UgdGFibGUpIHN0ciB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJJbnZhbGlkIG1vbnRoOiAlc1wiIHN0ciAoKVxuOztcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICB0eXBlIG1vbnRoID0gdCA9XG4gICAgfCBKYW5cbiAgICB8IEZlYlxuICAgIHwgTWFyXG4gICAgfCBBcHJcbiAgICB8IE1heVxuICAgIHwgSnVuXG4gICAgfCBKdWxcbiAgICB8IEF1Z1xuICAgIHwgU2VwXG4gICAgfCBPY3RcbiAgICB8IE5vdlxuICAgIHwgRGVjXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IGlzX2xlYXBfeWVhciB+eWVhciA9ICh5ZWFyIG1vZCA0ID0gMCAmJiBub3QgKHllYXIgbW9kIDEwMCA9IDApKSB8fCB5ZWFyIG1vZCA0MDAgPSAwXG5cbigqIENyZWF0ZSBhIGxvY2FsIHByaXZhdGUgZGF0ZSB0eXBlIHRvIGVuc3VyZSB0aGF0IGFsbCBkYXRlcyBhcmUgY3JlYXRlZCB2aWFcbiAgIERhdGUuY3JlYXRlX2V4bi5cbiopXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbXBhcmFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICAgIHR5cGUgdFxuICAgICAgICBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogeTppbnQgLT4gbTpNb250aC5TdGFibGUuVjEudCAtPiBkOmludCAtPiB0XG4gICAgICAgIHZhbCB5ZWFyIDogdCAtPiBpbnRcbiAgICAgICAgdmFsIG1vbnRoIDogdCAtPiBNb250aC5TdGFibGUuVjEudFxuICAgICAgICB2YWwgZGF5IDogdCAtPiBpbnRcbiAgICAgICAgdmFsIGRheXNfaW5fbW9udGggOiB5ZWFyOmludCAtPiBtb250aDpNb250aC50IC0+IGludFxuICAgICAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICAgICAgdmFsIG9mX2ludF9leG4gOiBpbnQgLT4gdFxuICAgICAgICB2YWwgb2ZfaW50X3VuY2hlY2tlZCA6IGludCAtPiB0XG4gICAgICAgIHZhbCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkgOiB0XG4gICAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgKCogV2UgdXNlZCB0byBzdG9yZSBkYXRlcyBsaWtlIHRoaXM6XG4gICAgICAgICAgIHR5cGUgdCA9IHsgeTogaW50OyBtOiBNb250aC5TdGFibGUuVjEudDsgZDogaW50OyB9XG4gICAgICAgICAgIEluIHRoZSBiZWxvdyB3ZSBtYWtlIHN1cmUgdGhhdCB0aGUgYmluX2lvIHJlcHJlc2VudGF0aW9uIGlzXG4gICAgICAgICAgIGlkZW50aWNhbCAoYW5kIHRoZSBzdGFibGUgdW5pdCB0ZXN0cyBjaGVjayB0aGlzKVxuXG4gICAgICAgICAgIEluIG1lbW9yeSB3ZSB1c2UgdGhlIGZvbGxvd2luZyBtdWNoIG1vcmUgY29tcGFjdCByZXByZXNlbnRhdGlvbjpcbiAgICAgICAgICAgMiBieXRlcyB5ZWFyXG4gICAgICAgICAgIDEgYnl0ZSBtb250aFxuICAgICAgICAgICAxIGJ5dGUgZGF5XG5cbiAgICAgICAgICAgYWxsIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGltbWVkaWF0ZSBpbnQgKHNvIGZyb20gNCB3b3JkcyBkb3duIHRvIDEpLlxuICAgICAgICAqKVxuICAgICAgICB0eXBlIHQgPSBpbnRcbiAgICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgICBjb21wYXJlXG4gICAgICAgICwgZXF1YWxcbiAgICAgICAgLCBoYXNoXG4gICAgICAgICwgdHlwZXJlcFxuICAgICAgICAsIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4OTllZTNlMC00OTBhLTExZTYtYTEwYS1hMzczNGY3MzM1NjZcIlxuICAgICAgICAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICAgIGxldCBjcmVhdGUwIH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICAoKiBjcmVhdGVfZXhuJ3MgdmFsaWRhdGlvbiBtYWtlIHN1cmUgdGhhdCBlYWNoIHZhbHVlIGZpdHMgKilcbiAgICAgICAgICAoeWVhciBsc2wgMTYpIGxvciAoTW9udGgudG9faW50IG1vbnRoIGxzbCA4KSBsb3IgZGF5XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2ludF91bmNoZWNrZWQgdCA9IHRcbiAgICAgICAgbGV0IHllYXIgdCA9IHQgbHNyIDE2XG4gICAgICAgIGxldCBtb250aCB0ID0gTW9udGgub2ZfaW50X2V4biAoKHQgbHNyIDgpIGxhbmQgMHhmZilcbiAgICAgICAgbGV0IGRheSB0ID0gdCBsYW5kIDB4ZmZcblxuICAgICAgICBsZXQgZGF5c19pbl9tb250aCB+eWVhciB+bW9udGggPVxuICAgICAgICAgIG1hdGNoIChtb250aCA6IE1vbnRoLnQpIHdpdGhcbiAgICAgICAgICB8IEphbiB8IE1hciB8IE1heSB8IEp1bCB8IEF1ZyB8IE9jdCB8IERlYyAtPiAzMVxuICAgICAgICAgIHwgQXByIHwgSnVuIHwgU2VwIHwgTm92IC0+IDMwXG4gICAgICAgICAgfCBGZWIgLT4gaWYgaXNfbGVhcF95ZWFyIH55ZWFyIHRoZW4gMjkgZWxzZSAyOFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIH55OnllYXIgfm06bW9udGggfmQ6ZGF5ID1cbiAgICAgICAgICAoKiB5ZWFyLCBtb250aCwgYW5kIGRheSBuZWVkIHRvIGJlIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIHRvIGF2b2lkIGFsbG9jYXRpbmdcbiAgICAgICAgICAgICBhIGNsb3N1cmUgKHNlZSB1bml0IHRlc3QgYmVsb3cpICopXG4gICAgICAgICAgbGV0IGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgbXNnID1cbiAgICAgICAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICAgICAgICAhXCJEYXRlLmNyZWF0ZV9leG4gfnk6JWQgfm06JXtNb250aH0gfmQ6JWQgZXJyb3I6ICVzXCJcbiAgICAgICAgICAgICAgeWVhclxuICAgICAgICAgICAgICBtb250aFxuICAgICAgICAgICAgICBkYXlcbiAgICAgICAgICAgICAgbXNnXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiB5ZWFyIDwgMCB8fCB5ZWFyID4gOTk5OVxuICAgICAgICAgIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcInllYXIgb3V0c2lkZSBvZiBbMC4uOTk5OV1cIjtcbiAgICAgICAgICBpZiBkYXkgPD0gMCB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgXCJkYXkgPD0gMFwiO1xuICAgICAgICAgIGxldCBkYXlzX2luX21vbnRoID0gZGF5c19pbl9tb250aCB+eWVhciB+bW9udGggaW5cbiAgICAgICAgICBpZiBkYXkgPiBkYXlzX2luX21vbnRoXG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IChzcHJpbnRmIFwiJWQgZGF5IG1vbnRoIHZpb2xhdGlvblwiIGRheXNfaW5fbW9udGgpO1xuICAgICAgICAgIGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXlcbiAgICAgICAgOztcblxuICAgICAgICAoKiBXZSBkb24ndCB1c2UgTWFrZV9iaW5hYmxlIGhlcmUsIGJlY2F1c2UgdGhhdCB3b3VsZCBnbyB2aWEgYW4gaW1tZWRpYXRlXG4gICAgICAgICAgIHR1cGxlIG9yIHJlY29yZC4gIFRoYXQgaXMgZXhhY3RseSB0aGUgMzIgYnl0ZXMgd2Ugd29ya2VkIHNvIGhhcmQgYWJvdmUgdG9cbiAgICAgICAgICAgZ2V0IHJpZCBvZi4gIFdlIGFsc28gZG9uJ3Qgd2FudCB0byBqdXN0IGJpbl9pbyB0aGUgaW50ZWdlciBkaXJlY3RseVxuICAgICAgICAgICBiZWNhdXNlIHRoYXQgd291bGQgbWVhbiBhIG5ldyBiaW5faW8gZm9ybWF0LiAgKilcblxuICAgICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICAgIGxldCB5ZWFyID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgbGV0IG1vbnRoID0gTW9udGguU3RhYmxlLlYxLmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgbGV0IGRheSA9IEludC5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICAgIGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgKCogX19iaW5fcmVhZF90IGlzIG9ubHkgbmVlZGVkIGZvciB2YXJpYW50cyAqKVxuICAgICAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJEYXRlLnRcIiAhcG9zX3JlZlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fcmVhZGVyX3QgPVxuICAgICAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fc2l6ZV90IHQgPVxuICAgICAgICAgIEludC5iaW5fc2l6ZV90ICh5ZWFyIHQpICsgTW9udGguYmluX3NpemVfdCAobW9udGggdCkgKyBJbnQuYmluX3NpemVfdCAoZGF5IHQpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICAgIGxldCBwb3MgPSBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKHllYXIgdCkgaW5cbiAgICAgICAgICBsZXQgcG9zID0gTW9udGguYmluX3dyaXRlX3QgYnVmIH5wb3MgKG1vbnRoIHQpIGluXG4gICAgICAgICAgSW50LmJpbl93cml0ZV90IGJ1ZiB+cG9zIChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlcl90ID0geyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgPSBiaW5fc2l6ZV90OyB3cml0ZSA9IGJpbl93cml0ZV90IH1cblxuICAgICAgICBsZXQgYmluX3QgPVxuICAgICAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgICAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgICAgIH1cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9faW50IHQgPSB0XG4gICAgICAgIGxldCBvZl9pbnRfZXhuIG4gPSBjcmVhdGVfZXhuIH55Oih5ZWFyIG4pIH5tOihtb250aCBuKSB+ZDooZGF5IG4pXG4gICAgICAgIGxldCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkgPSAwXG5cbiAgICAgICAgbGV0JXRlc3QgXCJpbnZhbGlkIHZhbHVlXCIgPVxuICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgOiB0IC0+IG9mX2ludF9leG4gaW52YWxpZF92YWx1ZV9fZm9yX2ludGVybmFsX3VzZV9vbmx5KVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG5cbiAgICAgICgqKiBZWVlZLU1NLUREICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgdCA9XG4gICAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgMTAgaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA0ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NSAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNyAnLSc7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjggKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZFxuXG4gICAgICAoKiogWVlZWU1NREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKHllYXIgdCk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjQgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo2IChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICAoKiogTU0vREQvWVlZWSAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19hbWVyaWNhbiB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICcvJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MyAoZGF5IHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDUgJy8nO1xuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczo2ICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX3llYXI0IHN0ciBwb3MgPSByZWFkXzRfZGlnaXRfaW50IHN0ciB+cG9zXG4gICAgICBsZXQgcGFyc2VfbW9udGggc3RyIHBvcyA9IE1vbnRoLm9mX2ludF9leG4gKHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3MpXG4gICAgICBsZXQgcGFyc2VfZGF5IHN0ciBwb3MgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IG9mX3N0cmluZ19pc284NjAxX2Jhc2ljIHN0ciB+cG9zID1cbiAgICAgICAgaWYgcG9zICsgOCA+IFN0cmluZy5sZW5ndGggc3RyXG4gICAgICAgIHRoZW4gaW52YWxpZF9hcmcgXCJEYXRlLm9mX3N0cmluZ19pc284NjAxX2Jhc2ljOiBwb3MgKyA4ID4gc3RyaW5nIGxlbmd0aFwiO1xuICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgfnk6KHBhcnNlX3llYXI0IHN0ciBwb3MpXG4gICAgICAgICAgfm06KHBhcnNlX21vbnRoIHN0ciAocG9zICsgNCkpXG4gICAgICAgICAgfmQ6KHBhcnNlX2RheSBzdHIgKHBvcyArIDYpKVxuICAgICAgOztcblxuICAgICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhIG1hdGVyaWFsIHdheSwgYmUgc3VyZSB5b3VcbiAgICAgICAgIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB3b3JraW5nIGluIFN0YWJsZSAqKVxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgbGV0IGludmFsaWQgKCkgPSBmYWlsd2l0aCAoXCJpbnZhbGlkIGRhdGU6IFwiIF4gcykgaW5cbiAgICAgICAgbGV0IGVuc3VyZSBiID0gaWYgbm90IGIgdGhlbiBpbnZhbGlkICgpIGluXG4gICAgICAgIGxldCBtb250aF9udW0gfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG4gfnk6KHBhcnNlX3llYXI0IHMgeWVhcikgfm06KHBhcnNlX21vbnRoIHMgbW9udGgpIH5kOihwYXJzZV9kYXkgcyBkYXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb250aF9hYnJ2IH55ZWFyIH5tb250aCB+ZGF5ID1cbiAgICAgICAgICBjcmVhdGVfZXhuXG4gICAgICAgICAgICB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKVxuICAgICAgICAgICAgfm06KE1vbnRoLm9mX3N0cmluZyAoU3RyaW5nLnN1YiBzIH5wb3M6bW9udGggfmxlbjozKSlcbiAgICAgICAgICAgIH5kOihwYXJzZV9kYXkgcyBkYXkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFN0cmluZy5jb250YWlucyBzICcvJ1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeSwgbSwgZCA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246Jy8nIHdpdGhcbiAgICAgICAgICAgIHwgWyBhOyBiOyBjIF0gLT5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBhID0gNCB0aGVuIGEsIGIsIGMgKCogeS9tL2QgKikgZWxzZSBjLCBhLCBiICgqIG0vZC95ICopXG4gICAgICAgICAgICB8IF8gLT4gaW52YWxpZCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQub2Zfc3RyaW5nIHkgaW5cbiAgICAgICAgICBsZXQgeWVhciA9XG4gICAgICAgICAgICBpZiB5ZWFyID49IDEwMCB0aGVuIHllYXIgZWxzZSBpZiB5ZWFyIDwgNzUgdGhlbiAyMDAwICsgeWVhciBlbHNlIDE5MDAgKyB5ZWFyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5vZl9pbnRfZXhuIChJbnQub2Zfc3RyaW5nIG0pIGluXG4gICAgICAgICAgbGV0IGRheSA9IEludC5vZl9zdHJpbmcgZCBpblxuICAgICAgICAgIGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkpXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy0nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIHl5eXktbW0tZGQgKilcbiAgICAgICAgICBlbnN1cmUgKFN0cmluZy5sZW5ndGggcyA9IDEwICYmIENoYXIuKCA9ICkgcy5bNF0gJy0nICYmIENoYXIuKCA9ICkgcy5bN10gJy0nKTtcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NSB+ZGF5OjgpXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJyAnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAxMSAmJiBDaGFyLiggPSApIHMuWzJdICcgJyAmJiBDaGFyLiggPSApIHMuWzZdICcgJ1xuICAgICAgICAgIHRoZW4gKCogREQgTU1NIFlZWVkgKilcbiAgICAgICAgICAgIG1vbnRoX2FicnYgfmRheTowIH5tb250aDozIH55ZWFyOjdcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICgqIFlZWVkgTU1NIEREICopXG4gICAgICAgICAgICBlbnN1cmUgKFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bNF0gJyAnICYmIENoYXIuKCA9ICkgcy5bOF0gJyAnKTtcbiAgICAgICAgICAgIG1vbnRoX2FicnYgfmRheTo5IH5tb250aDo1IH55ZWFyOjApXG4gICAgICAgIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBzID0gOVxuICAgICAgICB0aGVuICgqIERETU1NWVlZWSAqKVxuICAgICAgICAgIG1vbnRoX2FicnYgfmRheTowIH5tb250aDoyIH55ZWFyOjVcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA4XG4gICAgICAgIHRoZW4gKCogYXNzdW1lIFlZWVlNTUREICopXG4gICAgICAgICAgbW9udGhfbnVtIH55ZWFyOjAgfm1vbnRoOjQgfmRheTo2XG4gICAgICAgIGVsc2UgaW52YWxpZCAoKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiRGF0ZS5vZl9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgICAgICBtb2R1bGUgT2xkX2RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgeyB5IDogaW50XG4gICAgICAgICAgICA7IG0gOiBpbnRcbiAgICAgICAgICAgIDsgZCA6IGludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgICBsZXQgdG9fZGF0ZSB0ID0gVC5jcmVhdGVfZXhuIH55OnQueSB+bTooTW9udGgub2ZfaW50X2V4biB0Lm0pIH5kOnQuZFxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHAuQXRvbSBzIC0+IG9mX3N0cmluZyBzXG4gICAgICAgICAgfCBTZXhwLkxpc3QgXyBhcyBzZXhwIC0+IE9sZF9kYXRlLnRvX2RhdGUgKE9sZF9kYXRlLnRfb2Zfc2V4cCBzZXhwKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICAgICAgdHJ5IHRfb2Zfc2V4cCBzIHdpdGhcbiAgICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBleG4gLT4gcmFpc2UgZXhuXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGEgLT4gb2Zfc2V4cF9lcnJvciBhIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9XG4gICAgICAgICAgbGV0IG9wZW4gU2V4cGxpYiBpblxuICAgICAgICAgIFNleHBfZ3JhbW1hci50YWdcbiAgICAgICAgICAgIChTZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hciA6IHQgU2V4cF9ncmFtbWFyLnQpXG4gICAgICAgICAgICB+a2V5OlNleHBfZ3JhbW1hci50eXBlX25hbWVfdGFnXG4gICAgICAgICAgICB+dmFsdWU6KEF0b20gXCJDb3JlLkRhdGUudFwiKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFdpdGhvdXRfY29tcGFyYWJsZVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChXaXRob3V0X2NvbXBhcmFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChXaXRob3V0X2NvbXBhcmFibGUpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludFxuICAgICAgW0BAZGVyaXZpbmdcbiAgICAgICAgYmluX2lvXG4gICAgICAsIGJpbl9zaGFwZSB+YmFzZXR5cGU6XCI4MjZhM2U3OS0zMzIxLTQ1MWEtOTcwNy1lZDZjMDNiODRlMmZcIlxuICAgICAgLCBjb21wYXJlXG4gICAgICAsIGhhc2hcbiAgICAgICwgdHlwZXJlcFxuICAgICAgLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IG5vbmUgPSBWMS4odG9faW50IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSlcbiAgICAgIGxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSBfID0gdHJ1ZVxuICAgICAgbGV0IHNvbWUgdCA9IFYxLnRvX2ludCB0XG4gICAgICBsZXQgdW5jaGVja2VkX3ZhbHVlID0gVjEub2ZfaW50X3VuY2hlY2tlZFxuICAgICAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfc29tZSB0IHRoZW4gU29tZSAodW5jaGVja2VkX3ZhbHVlIHQpIGVsc2UgTm9uZVxuXG4gICAgICBsZXQgb2Zfb3B0aW9uIG9wdCA9XG4gICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSB2IC0+IHNvbWUgdlxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICAgICAgaWYgaXNfc29tZSB0XG4gICAgICAgIHRoZW4gdW5jaGVja2VkX3ZhbHVlIHRcbiAgICAgICAgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiRGF0ZS5PcHRpb24udmFsdWVfZXhuIG5vbmVcIl1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5jaGVja2VkX3ZhbHVlIHQpXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYxLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjEudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMS50IE9wdGlvbi50XVxuXG4gICAgICBsZXQgb2ZfaW50X2V4biB0ID1cbiAgICAgICAgKCogRG9uJ3QganVzdCBibGluZGx5IGNvbnZlcnQgZnJvbSBhbiBpbnRlZ2VyLiBVc2UgW1YxLm9mX2ludF9leG5dIHRvIHZhbGlkYXRlIHRoZVxuICAgICAgICAgICBkYXRlLiAqKVxuICAgICAgICBpZiB0ID0gbm9uZSB0aGVuIG5vbmUgZWxzZSBzb21lIChWMS5vZl9pbnRfZXhuIHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9faW50IHQgPSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmFibGUgPSBTdGFibGUuVjEuV2l0aG91dF9jb21wYXJhYmxlXG5pbmNsdWRlIFdpdGhvdXRfY29tcGFyYWJsZVxubW9kdWxlIEMgPSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChXaXRob3V0X2NvbXBhcmFibGUpXG5pbmNsdWRlIENcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoQyA6IENvbXBhcmFibGUuSW5maXggd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5pbmNsdWRlIChcbiAgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlXG4gICAgaW5jbHVkZSBCaW5hYmxlXG5cbiAgICBsZXQgY29tcGFyZSAoYSA6IHQpIChiIDogdCkgPSBjb21wYXJlIGEgYlxuICBlbmQpIDpcbiAgICBIYXNoYWJsZS5TX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5EYXRlXCJcbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gIGVuZClcblxubGV0IHVuaXhfZXBvY2ggPSBjcmVhdGVfZXhuIH55OjE5NzAgfm06SmFuIH5kOjFcblxuKCogVGhlIERheXMgbW9kdWxlIGlzIHVzZWQgZm9yIGNhbGN1bGF0aW9ucyB0aGF0IGludm9sdmUgYWRkaW5nIG9yIHJlbW92aW5nIGEga25vd24gbnVtYmVyXG4gICBvZiBkYXlzIGZyb20gYSBkYXRlLiAgSW50ZXJuYWxseSB0aGUgZGF0ZSBpcyB0cmFuc2xhdGVkIHRvIGEgZGF5IG51bWJlciwgdGhlIGRheXMgYXJlXG4gICBhZGRlZCwgYW5kIHRoZSBuZXcgZGF0ZSBpcyByZXR1cm5lZC4gIFRob3NlIGludGVyZXN0ZWQgaW4gdGhlIG1hdGggY2FuIHJlYWQ6XG5cbiAgIGh0dHA6Ly9hbGNvci5jb25jb3JkaWEuY2Evfmdwa2F0Y2gvZ2RhdGUtbWV0aG9kLmh0bWxcblxuICAgbm90ZTogdW5pdCB0ZXN0cyBhcmUgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubW9kdWxlIERheXMgOiBzaWdcbiAgdHlwZSBkYXRlID0gdFxuICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuXG4gIHZhbCBvZl9kYXRlIDogZGF0ZSAtPiB0XG4gIHZhbCB0b19kYXRlIDogdCAtPiBkYXRlXG4gIHZhbCBkaWZmIDogdCAtPiB0IC0+IGludFxuICB2YWwgYWRkX2RheXMgOiB0IC0+IGludCAtPiB0XG4gIHZhbCB1bml4X2Vwb2NoIDogdFxuZW5kXG53aXRoIHR5cGUgZGF0ZSA6PSB0ID0gc3RydWN0XG4gIG9wZW4gSW50XG5cbiAgdHlwZSB0ID0gaW50XG5cbiAgbGV0IG9mX3llYXIgeSA9ICgzNjUgKiB5KSArICh5IC8gNCkgLSAoeSAvIDEwMCkgKyAoeSAvIDQwMClcblxuICBsZXQgb2ZfZGF0ZSBkYXRlID1cbiAgICBsZXQgbSA9IChNb250aC50b19pbnQgKG1vbnRoIGRhdGUpICsgOSkgJSAxMiBpblxuICAgIGxldCB5ID0geWVhciBkYXRlIC0gKG0gLyAxMCkgaW5cbiAgICBvZl95ZWFyIHkgKyAoKChtICogMzA2KSArIDUpIC8gMTApICsgKGRheSBkYXRlIC0gMSlcbiAgOztcblxuICBsZXQgY18xMF8wMDAgPSBJbnQ2My5vZl9pbnQgMTBfMDAwXG4gIGxldCBjXzE0Xzc4MCA9IEludDYzLm9mX2ludCAxNF83ODBcbiAgbGV0IGNfM182NTJfNDI1ID0gSW50NjMub2ZfaW50IDNfNjUyXzQyNVxuXG4gIGxldCB0b19kYXRlIGRheXMgPVxuICAgIGxldCB5ID1cbiAgICAgIGxldCBvcGVuIEludDYzIGluXG4gICAgICB0b19pbnRfZXhuICgoKGNfMTBfMDAwICogb2ZfaW50IGRheXMpICsgY18xNF83ODApIC8gY18zXzY1Ml80MjUpXG4gICAgaW5cbiAgICBsZXQgZGRkID0gZGF5cyAtIG9mX3llYXIgeSBpblxuICAgIGxldCB5LCBkZGQgPVxuICAgICAgaWYgZGRkIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB5ID0geSAtIDEgaW5cbiAgICAgICAgeSwgZGF5cyAtIG9mX3llYXIgeSlcbiAgICAgIGVsc2UgeSwgZGRkXG4gICAgaW5cbiAgICBsZXQgbWkgPSAoKDEwMCAqIGRkZCkgKyA1MikgLyAzXzA2MCBpblxuICAgIGxldCB5ID0geSArICgobWkgKyAyKSAvIDEyKSBpblxuICAgIGxldCBtID0gKChtaSArIDIpICUgMTIpICsgMSBpblxuICAgIGxldCBkID0gZGRkIC0gKCgobWkgKiAzMDYpICsgNSkgLyAxMCkgKyAxIGluXG4gICAgY3JlYXRlX2V4biB+eSB+bTooTW9udGgub2ZfaW50X2V4biBtKSB+ZFxuICA7O1xuXG4gIGxldCB1bml4X2Vwb2NoID0gb2ZfZGF0ZSB1bml4X2Vwb2NoXG4gIGxldCBhZGRfZGF5cyB0IGRheXMgPSB0ICsgZGF5c1xuICBsZXQgZGlmZiB0MSB0MiA9IHQxIC0gdDJcbmVuZFxuXG5sZXQgYWRkX2RheXMgdCBkYXlzID0gRGF5cy50b19kYXRlIChEYXlzLmFkZF9kYXlzIChEYXlzLm9mX2RhdGUgdCkgZGF5cylcbmxldCBkaWZmIHQxIHQyID0gRGF5cy5kaWZmIChEYXlzLm9mX2RhdGUgdDEpIChEYXlzLm9mX2RhdGUgdDIpXG5cbmxldCBhZGRfbW9udGhzIHQgbiA9XG4gIGxldCB0b3RhbF9tb250aHMgPSBNb250aC50b19pbnQgKG1vbnRoIHQpICsgbiBpblxuICBsZXQgeSA9IHllYXIgdCArICh0b3RhbF9tb250aHMgLyUgMTIpIGluXG4gIGxldCBtID0gdG90YWxfbW9udGhzICUgMTIgaW5cbiAgKCogY29ycmVjdCBmb3IgZGVjZW1iZXIgKilcbiAgbGV0IHksIG0gPSBpZiBJbnQuKCA9ICkgbSAwIHRoZW4geSAtIDEsIG0gKyAxMiBlbHNlIHksIG0gaW5cbiAgbGV0IG0gPSBNb250aC5vZl9pbnRfZXhuIG0gaW5cbiAgKCogaGFuZGxlIGludmFsaWQgZGF0ZXMgZm9yIG1vbnRocyB3aXRoIGZld2VyIG51bWJlciBvZiBkYXlzICopXG4gIGxldCByZWMgdHJ5X2NyZWF0ZSBkID1cbiAgICB0cnkgY3JlYXRlX2V4biB+eSB+bSB+ZCB3aXRoXG4gICAgfCBfZXhuIC0+XG4gICAgICBhc3NlcnQgKEludC4oID49ICkgZCAxKTtcbiAgICAgIHRyeV9jcmVhdGUgKGQgLSAxKVxuICBpblxuICB0cnlfY3JlYXRlIChkYXkgdClcbjs7XG5cbmxldCBhZGRfeWVhcnMgdCBuID0gYWRkX21vbnRocyB0IChuICogMTIpXG5cbigqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRGV0ZXJtaW5hdGlvbl9vZl90aGVfZGF5X29mX3RoZV93ZWVrI1B1cmVseV9tYXRoZW1hdGljYWxfbWV0aG9kc1xuXG4gICBub3RlOiB1bml0IHRlc3RzIGluIGxpYl90ZXN0L3RpbWVfdGVzdC5tbFxuKilcbmxldCBkYXlfb2Zfd2VlayA9XG4gIGxldCB0YWJsZSA9IFt8IDA7IDM7IDI7IDU7IDA7IDM7IDU7IDE7IDQ7IDY7IDI7IDQgfF0gaW5cbiAgZnVuIHQgLT5cbiAgICBsZXQgbSA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgaW5cbiAgICBsZXQgeSA9IGlmIEludC4oIDwgKSBtIDMgdGhlbiB5ZWFyIHQgLSAxIGVsc2UgeWVhciB0IGluXG4gICAgRGF5X29mX3dlZWsub2ZfaW50X2V4blxuICAgICAgKCh5ICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKSArIHRhYmxlLihtIC0gMSkgKyBkYXkgdCkgJSA3KVxuOztcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcmRpbmFsX2RhdGUgKilcbmxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gW3wgMDsgMzE7IDU5OyA5MDsgMTIwOyAxNTE7IDE4MTsgMjEyOyAyNDM7IDI3MzsgMzA0OyAzMzQgfF1cbmxldCBsZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNjA7IDkxOyAxMjE7IDE1MjsgMTgyOyAyMTM7IDI0NDsgMjc0OyAzMDU7IDMzNSB8XVxuXG5sZXQgb3JkaW5hbF9kYXRlIHQgPVxuICBsZXQgdGFibGUgPVxuICAgIGlmIGlzX2xlYXBfeWVhciB+eWVhcjooeWVhciB0KSB0aGVuIGxlYXBfeWVhcl90YWJsZSBlbHNlIG5vbl9sZWFwX3llYXJfdGFibGVcbiAgaW5cbiAgbGV0IG9mZnNldCA9IHRhYmxlLihNb250aC50b19pbnQgKG1vbnRoIHQpIC0gMSkgaW5cbiAgZGF5IHQgKyBvZmZzZXRcbjs7XG5cbmxldCBsYXN0X3dlZWtfb2ZfeWVhciB5ID1cbiAgbGV0IGZpcnN0X29mX3llYXIgPSBjcmVhdGVfZXhuIH55IH5tOkphbiB+ZDoxIGluXG4gIGxldCBpcyB0IGRheSA9IERheV9vZl93ZWVrLmVxdWFsIChkYXlfb2Zfd2VlayB0KSBkYXkgaW5cbiAgaWYgaXMgZmlyc3Rfb2ZfeWVhciBUaHUgfHwgKGlzX2xlYXBfeWVhciB+eWVhcjp5ICYmIGlzIGZpcnN0X29mX3llYXIgV2VkKVxuICB0aGVuIDUzXG4gIGVsc2UgNTJcbjs7XG5cbigqIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUgb3IgSVNPIDg2MDEgZm9yIHRoZSBkZXRhaWxzIG9mIHRoaXNcbiAgIGFsZ29yaXRobS5cblxuICAgVXNlcyBhIFt+Zl0gYXJndW1lbnQgdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlIHdoZW4gY2FsbGVkIGJ5IFt3ZWVrX251bWJlcl0uXG4qKVxubGV0IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmYgPVxuICBsZXQgb3JkaW5hbCA9IG9yZGluYWxfZGF0ZSB0IGluXG4gIGxldCB3ZWVrZGF5ID0gRGF5X29mX3dlZWsuaXNvXzg2MDFfd2Vla2RheV9udW1iZXIgKGRheV9vZl93ZWVrIHQpIGluXG4gICgqIFtvcmRpbmFsIC0gd2Vla2RheSArIDRdIGlzIHRoZSBvcmRpbmFsIG9mIHRoaXMgd2VlaydzIFRodXJzZGF5LCB0aGVuIChuICsgNikgLyA3IGlzXG4gICAgIGRpdmlzaW9uIGJ5IDcgcm91bmRpbmcgdXAgKilcbiAgbGV0IHdlZWsgPSAob3JkaW5hbCAtIHdlZWtkYXkgKyAxMCkgLyA3IGluXG4gIGxldCB5ZWFyID0geWVhciB0IGluXG4gIGlmIEludC4oIDwgKSB3ZWVrIDFcbiAgdGhlbiBmIH53ZWVrOihsYXN0X3dlZWtfb2ZfeWVhciAoeWVhciAtIDEpKSB+eWVhcjooeWVhciAtIDEpXG4gIGVsc2UgaWYgSW50LiggPiApIHdlZWsgKGxhc3Rfd2Vla19vZl95ZWFyIHllYXIpXG4gIHRoZW4gZiB+d2VlazoxIH55ZWFyOih5ZWFyICsgMSlcbiAgZWxzZSBmIH53ZWVrIH55ZWFyXG47O1xuXG5sZXQgd2Vla19udW1iZXJfYW5kX3llYXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhciAtPiB3ZWVrLCB5ZWFyKVxubGV0IHdlZWtfbnVtYmVyIHQgPSBjYWxsX3dpdGhfd2Vla19hbmRfeWVhciB0IH5mOihmdW4gfndlZWsgfnllYXI6XyAtPiB3ZWVrKVxubGV0IGlzX3dlZWtlbmQgdCA9IERheV9vZl93ZWVrLmlzX3N1bl9vcl9zYXQgKGRheV9vZl93ZWVrIHQpXG5sZXQgaXNfd2Vla2RheSB0ID0gbm90IChpc193ZWVrZW5kIHQpXG5sZXQgaXNfYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPSBpc193ZWVrZGF5IHQgJiYgbm90IChpc19ob2xpZGF5IHQpXG5cbmxldCByZWMgZGlmZl93ZWVrZW5kX2RheXMgdDEgdDIgPVxuICBpZiB0MSA8IHQyXG4gIHRoZW4gLWRpZmZfd2Vla2VuZF9kYXlzIHQyIHQxXG4gIGVsc2UgKFxuICAgICgqIEJhc2ljIGRhdGUgZGlmZiAqKVxuICAgIGxldCBkaWZmID0gZGlmZiB0MSB0MiBpblxuICAgICgqIENvbXB1dGUgdGhlIG51bWJlciBvZiBTYXR1cmRheSAtPiBTdW5kYXkgY3Jvc3NpbmdzICopXG4gICAgbGV0IGQxID0gZGF5X29mX3dlZWsgdDEgaW5cbiAgICBsZXQgZDIgPSBkYXlfb2Zfd2VlayB0MiBpblxuICAgIGxldCBudW1fc2F0c3VuX2Nyb3NzaW5ncyA9XG4gICAgICBpZiBJbnQuKCA8ICkgKERheV9vZl93ZWVrLnRvX2ludCBkMSkgKERheV9vZl93ZWVrLnRvX2ludCBkMilcbiAgICAgIHRoZW4gMSArIChkaWZmIC8gNylcbiAgICAgIGVsc2UgZGlmZiAvIDdcbiAgICBpblxuICAgIChudW1fc2F0c3VuX2Nyb3NzaW5ncyAqIDIpXG4gICAgKyAoaWYgRGF5X29mX3dlZWsuKCA9ICkgZDIgRGF5X29mX3dlZWsuU3VuIHRoZW4gMSBlbHNlIDApXG4gICAgKyBpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMSBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAtMSBlbHNlIDApXG47O1xuXG5sZXQgZGlmZl93ZWVrZGF5cyB0MSB0MiA9IGRpZmYgdDEgdDIgLSBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MlxuXG5sZXQgYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcCBuID1cbiAgbGV0IHN0ZXAgPSBpZiBJbnQuKCA+PSApIG4gMCB0aGVuIDEgZWxzZSAtMSBpblxuICBsZXQgcmVjIGxvb3AgdCBrID1cbiAgICBsZXQgdF9uZXh0ID0gYWRkX2RheXMgdCBzdGVwIGluXG4gICAgaWYgc2tpcCB0IHRoZW4gbG9vcCB0X25leHQgayBlbHNlIGlmIEludC4oID0gKSBrIDAgdGhlbiB0IGVsc2UgbG9vcCB0X25leHQgKGsgLSAxKVxuICBpblxuICBsb29wIHQgKGFicyBuKVxuOztcblxubGV0IHJlYyBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwIH5jb25kaXRpb24gPVxuICBpZiBjb25kaXRpb24gdCB0aGVuIHQgZWxzZSBmaXJzdF9kYXlfc2F0aXNmeWluZyAoYWRkX2RheXMgdCBzdGVwKSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgbmV4dF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwIH5jb25kaXRpb24gPVxuICBsZXQgbmV4dF9kYXkgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgbmV4dF9kYXkgfnN0ZXAgfmNvbmRpdGlvblxuOztcblxubGV0IGZvbGxvd2luZ193ZWVrZGF5IHQgPSBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCBwcmV2aW91c193ZWVrZGF5IHQgPSBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCByb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6MSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcbmxldCByb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQgPSBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOigtMSkgfmNvbmRpdGlvbjppc193ZWVrZGF5XG5cbmxldCByb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCByb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9XG4gIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOihpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkpXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzIHQgbiA9IGFkZF9kYXlzX3NraXBwaW5nIHQgfnNraXA6aXNfd2Vla2VuZCBuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2luX2RpcmVjdGlvbl9vZl9zdGVwID0gYWRkX3dlZWtkYXlzXG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfZm9yd2FyZCB0IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfZm9yd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19iYWNrd2FyZCB0IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfYmFja3dhcmRfdG9fd2Vla2RheSB0KSB+c2tpcDppc193ZWVrZW5kIG5cbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5cyB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyB0IG4gfnNraXA6KGZ1biBkIC0+IGlzX3dlZWtlbmQgZCB8fCBpc19ob2xpZGF5IGQpXG47O1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfYnVzaW5lc3NfZGF5c1xuXG5sZXQgYWRkX2J1c2luZXNzX2RheXNfcm91bmRpbmdfZm9yd2FyZCB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfZm9yd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWNrd2FyZCB0IH5pc19ob2xpZGF5IG4gPVxuICBhZGRfZGF5c19za2lwcGluZyAocm91bmRfYmFja3dhcmRfdG9fYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IHQpIG4gfnNraXA6KGZ1biBkIC0+XG4gICAgbm90IChpc19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgZCkpXG47O1xuXG5sZXQgZGF0ZXNfYmV0d2VlbiB+bWluOnQxIH5tYXg6dDIgPVxuICBsZXQgcmVjIGxvb3AgdCBsID0gaWYgdCA8IHQxIHRoZW4gbCBlbHNlIGxvb3AgKGFkZF9kYXlzIHQgKC0xKSkgKHQgOjogbCkgaW5cbiAgbG9vcCB0MiBbXVxuOztcblxubGV0IHdlZWtkYXlzX2JldHdlZW4gfm1pbiB+bWF4ID1cbiAgbGV0IGFsbF9kYXRlcyA9IGRhdGVzX2JldHdlZW4gfm1pbiB+bWF4IGluXG4gIE9wdGlvbi52YWx1ZV9tYXAgKExpc3QuaGQgYWxsX2RhdGVzKSB+ZGVmYXVsdDpbXSB+ZjooZnVuIGZpcnN0X2RhdGUgLT5cbiAgICAoKiB0byBhdm9pZCBhIHN5c3RlbSBjYWxsIG9uIGV2ZXJ5IGRhdGUsIHdlIGp1c3QgZ2V0IHRoZSB3ZWVrZGF5IGZvciB0aGUgZmlyc3RcbiAgICAgICBkYXRlIGFuZCB1c2UgaXQgdG8gZ2V0IGFsbCB0aGUgb3RoZXIgd2Vla2RheXMgKilcbiAgICBsZXQgZmlyc3Rfd2Vla2RheSA9IGRheV9vZl93ZWVrIGZpcnN0X2RhdGUgaW5cbiAgICBsZXQgZGF0ZV9hbmRfd2Vla2RheXMgPVxuICAgICAgTGlzdC5tYXBpIGFsbF9kYXRlcyB+ZjooZnVuIGkgZGF0ZSAtPiBkYXRlLCBEYXlfb2Zfd2Vlay5zaGlmdCBmaXJzdF93ZWVrZGF5IGkpXG4gICAgaW5cbiAgICBMaXN0LmZpbHRlcl9tYXAgZGF0ZV9hbmRfd2Vla2RheXMgfmY6KGZ1biAoZGF0ZSwgd2Vla2RheSkgLT5cbiAgICAgIGlmIERheV9vZl93ZWVrLmlzX3N1bl9vcl9zYXQgd2Vla2RheSB0aGVuIE5vbmUgZWxzZSBTb21lIGRhdGUpKVxuOztcblxubGV0IGJ1c2luZXNzX2RhdGVzX2JldHdlZW4gfm1pbiB+bWF4IH5pc19ob2xpZGF5ID1cbiAgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biBkIC0+IG5vdCAoaXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBmaXJzdF9zdHJpY3RseV9hZnRlciB0IH5vbjpkb3cgPVxuICBsZXQgZG93ID0gRGF5X29mX3dlZWsudG9faW50IGRvdyBpblxuICBsZXQgdHBsdXMxID0gYWRkX2RheXMgdCAxIGluXG4gIGxldCBjdXIgPSBEYXlfb2Zfd2Vlay50b19pbnQgKGRheV9vZl93ZWVrIHRwbHVzMSkgaW5cbiAgbGV0IGRpZmYgPSAoZG93ICsgNyAtIGN1cikgbW9kIDcgaW5cbiAgYWRkX2RheXMgdHBsdXMxIGRpZmZcbjs7XG5cbm1vZHVsZSBGb3JfcXVpY2tjaGVjayA9IHN0cnVjdFxuICBvcGVuIFF1aWNrY2hlY2tcblxuICBsZXQgZ2VuX3VuaWZvcm1faW5jbCBkMSBkMiA9XG4gICAgaWYgZDEgPiBkMlxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJEYXRlLmdlbl91bmlmb3JtX2luY2w6IGJvdW5kcyBhcmUgY3Jvc3NlZFwiXG4gICAgICAgICAgICB+bG93ZXJfYm91bmQ6KGQxIDogdClcbiAgICAgICAgICAgIH51cHBlcl9ib3VuZDooZDIgOiB0KV07XG4gICAgR2VuZXJhdG9yLm1hcCAoSW50Lmdlbl91bmlmb3JtX2luY2wgMCAoZGlmZiBkMiBkMSkpIH5mOihmdW4gZGF5cyAtPiBhZGRfZGF5cyBkMSBkYXlzKVxuICA7O1xuXG4gIGxldCBnZW5faW5jbCBkMSBkMiA9XG4gICAgR2VuZXJhdG9yLndlaWdodGVkX3VuaW9uXG4gICAgICBbIDEuLCBHZW5lcmF0b3IucmV0dXJuIGQxOyAxLiwgR2VuZXJhdG9yLnJldHVybiBkMjsgMTguLCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyIF1cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCAob2Zfc3RyaW5nIFwiMTkwMC0wMS0wMVwiKSAob2Zfc3RyaW5nIFwiMjEwMC0wMS0wMVwiKVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IE9ic2VydmVyLmNyZWF0ZSAoZnVuIHQgfnNpemU6XyB+aGFzaCAtPiBoYXNoX2ZvbGRfdCBoYXNoIHQpXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gU2hyaW5rZXIuZW1wdHkgKClcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvclxubGV0IGdlbl9pbmNsID0gRm9yX3F1aWNrY2hlY2suZ2VuX2luY2xcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gRm9yX3F1aWNrY2hlY2suZ2VuX3VuaWZvcm1faW5jbFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfc2hyaW5rZXJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGxlYXBfeWVhcl90YWJsZSA9IGxlYXBfeWVhcl90YWJsZVxuICBsZXQgbm9uX2xlYXBfeWVhcl90YWJsZSA9IG5vbl9sZWFwX3llYXJfdGFibGVcbiAgbGV0IG9yZGluYWxfZGF0ZSA9IG9yZGluYWxfZGF0ZVxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZS5PcHRpb25cbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwXG4gICAgICAoT3B0aW9uLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIHF1aWNrY2hlY2tfZ2VuZXJhdG9yKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIubWFwXG4gICAgICAoT3B0aW9uLnF1aWNrY2hlY2tfc2hyaW5rZXIgcXVpY2tjaGVja19zaHJpbmtlcilcbiAgICAgIH5mOm9mX29wdGlvblxuICAgICAgfmZfaW52ZXJzZTp0b19vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci5vZl9oYXNoXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5cbmxldCBzdWZmaXhlcyBjaGFyID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBbIHNwcmludGYgXCIlY1wiIGNoYXI7IHNwcmludGYgXCIlY01cIiBjaGFyOyBzcHJpbnRmIFwiJWMuTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NLlwiIGNoYXIgXVxuICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biBzdWZmaXggLT5cbiAgICBbIFN0cmluZy5sb3dlcmNhc2Ugc3VmZml4OyBTdHJpbmcudXBwZXJjYXNlIHN1ZmZpeCBdKVxuOztcblxubGV0IGFtX3N1ZmZpeGVzID0gbGF6eSAoc3VmZml4ZXMgJ0EnKVxubGV0IHBtX3N1ZmZpeGVzID0gbGF6eSAoc3VmZml4ZXMgJ1AnKVxuXG4oKiBBdm9pZHMgdGhlIGFsbG9jYXRpb24gdGhhdCBbTGlzdC5maW5kXSB3b3VsZCBlbnRhaWwgaW4gYm90aCBib3RoIHRoZSBjbG9zdXJlIGlucHV0IGFuZFxuICAgdGhlIG9wdGlvbiBvdXRwdXQuICopXG5sZXQgcmVjIGZpbmRfc3VmZml4IHN0cmluZyBzdWZmaXhlcyA9XG4gIG1hdGNoIHN1ZmZpeGVzIHdpdGhcbiAgfCBzdWZmaXggOjogc3VmZml4ZXMgLT5cbiAgICBpZiBTdHJpbmcuaXNfc3VmZml4IHN0cmluZyB+c3VmZml4IHRoZW4gc3VmZml4IGVsc2UgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzXG4gIHwgW10gLT4gXCJcIlxuOztcblxubGV0IGhhc19jb2xvbiBzdHJpbmcgcG9zIH51bnRpbCA9IHBvcyA8IHVudGlsICYmIENoYXIuZXF1YWwgJzonIHN0cmluZy5bcG9zXVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGRlZmluZXMgd2hhdCB3ZSBtZWFudCBieSBcImRlY2ltYWwgcG9pbnRcIiwgYmVjYXVzZSBpbiBzb21lIHN0cmluZyBmb3JtYXRzXG4gICBpdCBtZWFucyAnLicgYW5kIGluIHNvbWUgaXQgY2FuIGJlICcuJyBvciAnLCcuIFRoZXJlJ3Mgbm8gcGFydGljdWxhciBkZW1hbmQgZm9yIHN1cHBvcnRcbiAgIGZvciAnLCcsIGFuZCB1c2luZyBqdXN0ICcuJyBsZXRzIHVzIHVzZSBbRmxvYXQub2Zfc3RyaW5nXSBmb3IgdGhlIGRlY2ltYWwgc3Vic3RyaW5nXG4gICB3aXRob3V0IGFueSBzdWJzdGl0dXRpb25zLiAqKVxubGV0IGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zID0gQ2hhci5lcXVhbCAnLicgc3RyaW5nLltwb3NdXG5cbmxldCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIGxlbiA9XG4gIGlmIGxlbiA+IDAgJiYgQ2hhci5lcXVhbCAnICcgc3RyaW5nLltsZW4gLSAxXSB0aGVuIGxlbiAtIDEgZWxzZSBsZW5cbjs7XG5cbmxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWUuT2ZkYXk6IGludmFsaWQgc3RyaW5nXCIgc3RyaW5nIHJlYXNvbl1cbjs7XG5cbmxldCBjaGVja19kaWdpdHNfd2l0aF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgcG9zIH51bnRpbCA9XG4gIGxldCBub256ZXJvID0gcmVmIGZhbHNlIGluXG4gIGZvciBwb3MgPSBwb3MgdG8gdW50aWwgLSAxIGRvXG4gICAgbWF0Y2ggc3RyaW5nLltwb3NdIHdpdGhcbiAgICB8ICcwJyB8ICdfJyAtPiAoKVxuICAgIHwgJzEnIC4uICc5JyAtPiBub256ZXJvIDo9IHRydWVcbiAgICB8IF8gLT5cbiAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgIHN0cmluZ1xuICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgZGlnaXRzIGFuZC9vciB1bmRlcnNjb3JlcyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBjaGVja19kaWdpdHNfd2l0aG91dF91bmRlcnNjb3JlX2FuZF9yZXR1cm5faWZfbm9uemVybyBzdHJpbmcgcG9zIH51bnRpbCA9XG4gIGxldCBub256ZXJvID0gcmVmIGZhbHNlIGluXG4gIGZvciBwb3MgPSBwb3MgdG8gdW50aWwgLSAxIGRvXG4gICAgbWF0Y2ggc3RyaW5nLltwb3NdIHdpdGhcbiAgICB8ICcwJyAtPiAoKVxuICAgIHwgJzEnIC4uICc5JyAtPiBub256ZXJvIDo9IHRydWVcbiAgICB8IF8gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludFwiXG4gIGRvbmU7XG4gICFub256ZXJvXG47O1xuXG5sZXQgcGFyc2Ugc3RyaW5nIH5mID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gIGxldCBhbV9vcl9wbSwgdW50aWwgPVxuICAgICgqIGRpc2NyaW1pbmF0ZSBhbW9uZyBBTSAoMTozMGFtKSwgUE0gKDEyOjMwOjAwIFAuTS4pLCBvciAyNC1ociAoMTM6MDApLiAqKVxuICAgIG1hdGNoXG4gICAgICAoIGZpbmRfc3VmZml4IHN0cmluZyAoTGF6eS5mb3JjZSBhbV9zdWZmaXhlcylcbiAgICAgICwgZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIHBtX3N1ZmZpeGVzKSApXG4gICAgd2l0aFxuICAgIHwgXCJcIiwgXCJcIiAtPiBgaHJfMjQsIGxlblxuICAgIHwgYW0sIFwiXCIgLT4gYGhyX0FNLCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIChsZW4gLSBTdHJpbmcubGVuZ3RoIGFtKVxuICAgIHwgXCJcIiwgcG0gLT4gYGhyX1BNLCBkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3BhY2Ugc3RyaW5nIChsZW4gLSBTdHJpbmcubGVuZ3RoIHBtKVxuICAgIHwgXywgXyAtPiBgaHJfMjQsIGFzc2VydCBmYWxzZVxuICAgICgqIEltbWVkaWF0ZWx5IGFib3ZlLCBpdCBtYXkgc2VlbSBub25zZW5zaWNhbCB0byB3cml0ZSBbYGhyXzI0LCBhc3NlcnQgZmFsc2VdIHdoZW4gdGhlXG4gICAgICAgW2Bocl8yNF0gY2FuIG5ldmVyIGJlIHJldHVybmVkLiBXZSBkbyB0aGlzIHRvIGhlbHAgdGhlIGNvbXBpbGVyIGZpZ3VyZSBvdXQgbmV2ZXIgdG9cbiAgICAgICBhbGxvY2F0ZSBhIHR1cGxlIGluIHRoaXMgY29kZTogdGhlIFtsZXRdIHBhdHRlcm4gaXMgc3ludGFjdGljYWxseSBhIHR1cGxlIGFuZCBldmVyeVxuICAgICAgIG1hdGNoIGNsYXVzZSBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUuICopXG4gIGluXG4gIGxldCBwb3MgPSAwIGluXG4gIGxldCBwb3MsIGhyLCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyA9XG4gICAgKCogZS5nLiBcIjE6MDBcIiBvciBcIjE6MDA6MDBcIiAqKVxuICAgIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDEpIH51bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDIsIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMTI6MDBcIiBvciBcIjEyOjAwOjAwXCIgKilcbiAgICBlbHNlIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDIpIH51bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDMsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzXG4gICAgICAoKiBlLmcuIFwiMWFtXCI7IG11c3QgaGF2ZSBBTSBvciBQTSAoY2hlY2tlZCBiZWxvdykgKilcbiAgICBlbHNlIGlmIHBvcyArIDEgPSB1bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDEsIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMmFtXCI7IG11c3QgaGF2ZSBBTSBvciBQTSAoY2hlY2tlZCBiZWxvdykgKilcbiAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgIHRoZW5cbiAgICAgIHBvcyArIDIsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MsIGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIwOTMwXCI7IG11c3Qgbm90IGhhdmUgc2Vjb25kcyAqKVxuICAgIGVsc2UgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzXG4gIGluXG4gIGxldCBwb3MsIG1pbiwgZXhwZWN0X3NlY29uZHMgPVxuICAgIG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICgqIGUuZy4gXCIxMmFtXCIgKilcbiAgICAgIHBvcywgMCwgZmFsc2VcbiAgICB8IChgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcykgYXMgbWF5YmVfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgIGlmIGhhc19jb2xvbiBzdHJpbmcgKHBvcyArIDIpIH51bnRpbFxuICAgICAgdGhlblxuICAgICAgICAoIHBvcyArIDNcbiAgICAgICAgLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zXG4gICAgICAgICwgbWF0Y2ggbWF5YmVfc2Vjb25kcyB3aXRoXG4gICAgICAgIHwgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHMgLT4gdHJ1ZVxuICAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyAtPlxuICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyBhZnRlciBtaW51dGVzXCIgKVxuICAgICAgICAoKiBlLmcuIFwiMTI6MDBcIiAqKVxuICAgICAgZWxzZSBpZiBwb3MgKyAyID0gdW50aWxcbiAgICAgIHRoZW4gcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICB+cmVhc29uOlwiZXhwZWN0ZWQgY29sb24gb3IgYW0vcG0gc3VmZml4IHdpdGggb3B0aW9uYWwgc3BhY2UgYWZ0ZXIgbWludXRlc1wiXG4gIGluXG4gIGxldCBzZWMsIHN1YnNlY19wb3MsIHN1YnNlY19sZW4sIHN1YnNlY19ub256ZXJvID1cbiAgICBtYXRjaCBleHBlY3Rfc2Vjb25kcyB3aXRoXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiBvciBcIjEyOjAwXCIgKilcbiAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICB0aGVuIDAsIHBvcywgMCwgZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGFjdHVhbGx5IHVucmVhY2hhYmxlLCBiYXNlZCBvbiB0aGUgdmFyaW91cyB3YXlzIHRoYXRcbiAgICAgICAgICAgW2V4cGVjdF9zZWNvbmRzXSBjYW4gZW5kIHVwIGZhbHNlLiAqKVxuICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIkJVRzogZGlkIG5vdCBleHBlY3Qgc2Vjb25kcywgYnV0IGZvdW5kIHRoZW1cIlxuICAgIHwgdHJ1ZSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwOjAwXCIgKilcbiAgICAgIGlmIHBvcyArIDIgPiB1bnRpbFxuICAgICAgdGhlblxuICAgICAgICAoKiBlLmcuIFwiMTI6MDA6MFwiICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZXhwZWN0ZWQgdHdvIGRpZ2l0cyBvZiBzZWNvbmRzXCJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc2VjID0gcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyBpblxuICAgICAgICBsZXQgcG9zID0gcG9zICsgMiBpblxuICAgICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgICBpZiBwb3MgPSB1bnRpbFxuICAgICAgICB0aGVuIHNlYywgcG9zLCAwLCBmYWxzZSAoKiBlLmcuIFwiMTI6MDA6MDAuMTIzXCIgKilcbiAgICAgICAgZWxzZSBpZiBwb3MgPCB1bnRpbCAmJiBjaGFyX2lzX2RlY2ltYWxfcG9pbnQgc3RyaW5nIHBvc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgKCBzZWNcbiAgICAgICAgICAsIHBvc1xuICAgICAgICAgICwgdW50aWwgLSBwb3NcbiAgICAgICAgICAsIGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyAocG9zICsgMSkgfnVudGlsIClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfc3RyaW5nXG4gICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkZWNpbWFsIHBvaW50IG9yIGFtL3BtIHN1ZmZpeCBhZnRlciBzZWNvbmRzXCIpXG4gIGluXG4gIGxldCBociA9XG4gICAgKCogTkIuIFdlIGFscmVhZHkga25vdyBbaHJdIGlzIG5vbi1uZWdhdGl2ZSwgYmVjYXVzZSBpdCdzIHRoZSByZXN1bHQgb2ZcbiAgICAgICBbcmVhZF8yX2RpZ2l0X2ludF0uICopXG4gICAgbWF0Y2ggYW1fb3JfcG0gd2l0aFxuICAgIHwgYGhyX0FNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBhbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2UgaHJcbiAgICB8IGBocl9QTSAtPlxuICAgICAgKCogZS5nLiBcIjEyOjAwcG1cIiAqKVxuICAgICAgaWYgaHIgPCAxIHx8IGhyID4gMTJcbiAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJob3VycyBvdXQgb2YgYm91bmRzXCJcbiAgICAgIGVsc2UgaWYgaHIgPSAxMlxuICAgICAgdGhlbiAxMlxuICAgICAgZWxzZSBociArIDEyXG4gICAgfCBgaHJfMjQgLT5cbiAgICAgIChtYXRjaCBleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyB3aXRoXG4gICAgICAgfCBgTmVpdGhlcl9taW51dGVzX25vcl9zZWNvbmRzIC0+XG4gICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIHdpdGhvdXQgbWludXRlcyBvciBBTS9QTVwiXG4gICAgICAgfCBgTWludXRlc19idXRfbm90X3NlY29uZHMgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPlxuICAgICAgICAgaWYgaHIgPiAyNFxuICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgICAgZWxzZSBpZiBociA9IDI0ICYmIChtaW4gPiAwIHx8IHNlYyA+IDAgfHwgc3Vic2VjX25vbnplcm8pXG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidGltZSBpcyBwYXN0IDI0OjAwOjAwXCIgKCogZS5nLiBcIjEzOjAwOjAwXCIgKilcbiAgICAgICAgIGVsc2UgaHIpXG4gIGluXG4gIGxldCBtaW4gPVxuICAgIGlmIG1pbiA+IDU5IHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJtaW51dGVzIG91dCBvZiBib3VuZHNcIiBlbHNlIG1pblxuICBpblxuICBsZXQgc2VjID1cbiAgICBpZiBzZWMgPiA2MCB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwic2Vjb25kcyBvdXQgb2YgYm91bmRzXCIgZWxzZSBzZWNcbiAgaW5cbiAgbGV0IHN1YnNlY19sZW4gPSBpZiBzZWMgPSA2MCB8fCBub3Qgc3Vic2VjX25vbnplcm8gdGhlbiAwIGVsc2Ugc3Vic2VjX2xlbiBpblxuICBmIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuXG47O1xuXG5sZXQgcGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBtYXRjaFxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbiAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgd2l0aFxuICAgIHwgUmVzdWx0Lk9rIHogLT4gelxuICAgIHwgUmVzdWx0LkVycm9yIHMgLT5cbiAgICAgIGZhaWx3aXRoZiBcIk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkOiAlc1wiIChFcnJvci50b19zdHJpbmdfbWFjaCBzKSAoKVxuICBpblxuICBpZiBsZW4gPCAyXG4gIHRoZW4gZmFpbHdpdGggXCJsZW4gPCAyXCJcbiAgZWxzZSAoXG4gICAgbGV0IGhyID0gcmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcyBpblxuICAgIGlmIGhyID4gMjQgdGhlbiBmYWlsd2l0aCBcImhvdXIgPiAyNFwiO1xuICAgIGlmIGxlbiA9IDJcbiAgICB0aGVuIGYgc3RyIH5ociB+bWluOjAgfnNlYzowIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICBlbHNlIGlmIGxlbiA8IDVcbiAgICB0aGVuIGZhaWx3aXRoIFwiMiA8IGxlbiA8IDVcIlxuICAgIGVsc2UgaWYgbm90IChDaGFyLmVxdWFsIHN0ci5bcG9zICsgMl0gJzonKVxuICAgIHRoZW4gZmFpbHdpdGggXCJmaXJzdCBjb2xvbiBtaXNzaW5nXCJcbiAgICBlbHNlIChcbiAgICAgIGxldCBtaW4gPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zOihwb3MgKyAzKSBpblxuICAgICAgaWYgbWluID49IDYwIHRoZW4gZmFpbHdpdGggXCJtaW51dGUgPiA2MFwiO1xuICAgICAgaWYgaHIgPSAyNCAmJiBtaW4gPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIG1pbnV0ZVwiO1xuICAgICAgaWYgbGVuID0gNVxuICAgICAgdGhlbiBmIHN0ciB+aHIgfm1pbiB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgZWxzZSBpZiBsZW4gPCA4XG4gICAgICB0aGVuIGZhaWx3aXRoIFwiNSA8IGxlbiA8IDhcIlxuICAgICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyA1XSAnOicpXG4gICAgICB0aGVuIGZhaWx3aXRoIFwic2Vjb25kIGNvbG9uIG1pc3NpbmdcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zOihwb3MgKyA2KSBpblxuICAgICAgICAoKiBzZWNvbmQgY2FuIGJlIDYwIGluIHRoZSBjYXNlIG9mIGEgbGVhcCBzZWNvbmQuIFVuZm9ydHVuYXRlbHksIHdoYXQgd2l0aFxuICAgICAgICAgICBub24taG91ci1tdWx0aXBsZSB0aW1lem9uZSBvZmZzZXRzLCB3ZSBjYW4ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hhdFxuICAgICAgICAgICB0aGUgaG91ciBvciBtaW51dGUgbXVzdCBiZSBpbiB0aGF0IGNhc2UgKilcbiAgICAgICAgaWYgc2VjID4gNjAgdGhlbiBmYWlsd2l0aGYgXCJpbnZhbGlkIHNlY29uZDogJWlcIiBzZWMgKCk7XG4gICAgICAgIGlmIGhyID0gMjQgJiYgc2VjIDw+IDAgdGhlbiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBzZWNvbmRzXCI7XG4gICAgICAgIGlmIGxlbiA9IDhcbiAgICAgICAgdGhlbiBmIHN0ciB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zOihwb3MgKyBsZW4pIH5zdWJzZWNfbGVuOjBcbiAgICAgICAgZWxzZSBpZiBsZW4gPSA5XG4gICAgICAgIHRoZW4gZmFpbHdpdGggXCJsZW5ndGggPSA5XCJcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggc3RyLltwb3MgKyA4XSB3aXRoXG4gICAgICAgICAgfCAnLicgfCAnLCcgLT5cbiAgICAgICAgICAgIGxldCBzdWJzZWNfcG9zID0gcG9zICsgOCBpblxuICAgICAgICAgICAgbGV0IHN1YnNlY19sZW4gPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvXG4gICAgICAgICAgICAgICAgICBzdHJcbiAgICAgICAgICAgICAgICAgIChzdWJzZWNfcG9zICsgMSlcbiAgICAgICAgICAgICAgICAgIH51bnRpbDoocG9zICsgbGVuKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgdHJ1ZSB3aGVuIHNlYyA9IDYwIC0+IDBcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gaHIgPSAyNCAtPiBmYWlsd2l0aCBcIjI0IGhvdXJzIGFuZCBub24temVybyBzdWJzZWNvbmRzXCJcbiAgICAgICAgICAgICAgfCBfIC0+IGxlbiAtIDhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBmIHN0ciB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuXG4gICAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwibWlzc2luZyBzdWJzZWNvbmQgc2VwYXJhdG9yXCIpKSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJpbl9wcm90LlN0ZFxuaW5jbHVkZSBIYXNoLkJ1aWx0aW5cbmluY2x1ZGUgU3RhYmxlX3dpdG5lc3MuRXhwb3J0XG5cbmluY2x1ZGUgKFxuICBCYXNlIDpcbiAgc2lnXG4gICAgdHlwZSBub25yZWMgJ2EgYXJyYXkgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgYm9vbCA9IGJvb2wgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGNoYXIgPSBjaGFyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBleG4gPSBleG4gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlIG5vbnJlYyBmbG9hdCA9IGZsb2F0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludDMyID0gaW50MzIgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGludDY0ID0gaW50NjQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBuYXRpdmVpbnQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIG9wdGlvbiA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgJ2EgcmVmID0gJ2EgcmVmIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBzdHJpbmcgPSBzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJ5dGVzID0gYnl0ZXMgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIHVuaXQgPSB1bml0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxuICB3aXRoIHR5cGUgYm9vbCA6PSBib29sXG4gIHdpdGggdHlwZSBjaGFyIDo9IGNoYXJcbiAgd2l0aCB0eXBlIGV4biA6PSBleG5cbiAgd2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG4gIHdpdGggdHlwZSBpbnQgOj0gaW50XG4gIHdpdGggdHlwZSBpbnQzMiA6PSBpbnQzMlxuICB3aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbiAgd2l0aCB0eXBlICdhIGxpc3QgOj0gJ2EgbGlzdFxuICB3aXRoIHR5cGUgbmF0aXZlaW50IDo9IG5hdGl2ZWludFxuICB3aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgc3RyaW5nIDo9IHN0cmluZ1xuICB3aXRoIHR5cGUgYnl0ZXMgOj0gYnl0ZXNcbiAgd2l0aCB0eXBlIHVuaXQgOj0gdW5pdClcbiIsIm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgZXhjZXB0aW9uIE5hbl9vcl9pbmYgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzdGFibGVfd2l0bmVzc11cblxuICAgIGxldCB2ZXJpZnkgdCA9XG4gICAgICBtYXRjaCBTdGRsaWIuY2xhc3NpZnlfZmxvYXQgdCB3aXRoXG4gICAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX3plcm8gLT4gKClcbiAgICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gcmFpc2UgTmFuX29yX2luZlxuICAgIDs7XG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZsb2F0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlIHQgPVxuICAgICAgICAgICAgdmVyaWZ5IHQ7XG4gICAgICAgICAgICB0XG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlIHQgPVxuICAgICAgICAgICAgdmVyaWZ5IHQ7XG4gICAgICAgICAgICB0XG4gICAgICAgICAgOztcbiAgICAgICAgZW5kKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IEZsb2F0LnNleHBfb2ZfdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIGFzIHNleHAgLT5cbiAgICAgICAgbGV0IHQgPSBGbG9hdC50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAodHJ5IHZlcmlmeSB0IHdpdGhcbiAgICAgICAgIHwgZSAtPiBJbXBvcnQub2Zfc2V4cF9lcnJvciAoSW1wb3J0LkV4bi50b19zdHJpbmcgZSkgc2V4cCk7XG4gICAgICAgIHRcbiAgICAgIHwgcyAtPiBJbXBvcnQub2Zfc2V4cF9lcnJvciBcIkRlY2ltYWwudF9vZl9zZXhwOiBFeHBlY3RlZCBBdG9tLCBmb3VuZCBMaXN0XCIgc1xuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBGbG9hdC50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChmbG9hdFtAcXVpY2tjaGVjay5nZW5lcmF0b3IgRmxvYXQuZ2VuX2Zpbml0ZV0pXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAoKiBGb3IgW3NdIHdoaWNoIGlzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZmluaXRlIGZsb2F0LCBpbiBlaXRoZXIgZGVjaW1hbCBvclxuICAgICAgIHNjaWVudGlmaWMgbm90YXRpb24sIHNoaWZ0IHRoZSBkZWNpbWFsIHBvaW50IG9yIGFkanVzdCB0aGUgc2NpZW50aWZpYyBub3RhdGlvblxuICAgICAgIGV4cG9uZW50IGJ5IFtieV0sIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gbXVsdGlwbHlpbmcgdGhlIG51bWJlciBieSBbMTAqKmJ5XS5cblxuICAgICAgIFRoZSBvdXRwdXQgd2lsbCBiZSBpbiBzY2llbnRpZmljIG5vdGF0aW9uIGlmZiB0aGUgaW5wdXQgd2FzLCBleGNlcHQgd2hlbiB0aGVcbiAgICAgICByZXN1bHRpbmcgZXhwb25lbnQgYWZ0ZXIgdGhlIHNoaWZ0IGJlY29tZXMgMC5cblxuICAgICAgIE5vIGVmZm9ydCBpcyBtYWRlIHRvIG5vcm1hbGl6ZSB0aGUgc2NpZW50aWZpYyBub3RhdGlvbiBpZiBpdCB3YXMgbm90IG5vcm1hbGl6ZWQsIG9yXG4gICAgICAgdG8gc3dpdGNoIHRvL2Zyb20gc2NpZW50aWZpYyBub3RhdGlvbiB0byBoZWxwIHJlYWRhYmlsaXR5IChleGNlcHQgZm9yIHRoZSBFMCBjYXNlXG4gICAgICAgbWVudGlvbmVkIGFib3ZlKS4gKilcbiAgICBsZXQgcmVjIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnkgPVxuICAgICAgaWYgYnkgPSAwXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcyA9IFN0cmluZy5sc3RyaXAgcyBpblxuICAgICAgICBsZXQgZCwgZSwgemVybywgdW5kZXJzY29yZSA9XG4gICAgICAgICAgKCogRmluZCB0aGUgcG9zaXRpb24gb2YgdGhlIGRlY2ltYWwgcG9pbnQgW2RdLCB0aGUgZXhwb25lbnQgc2lnbiBbZV0sIGFuZCBjaGVja1xuICAgICAgICAgICAgIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXplcm8gc2lnbmlmaWNhbnQgZGlnaXRzIChvbmx5IGJlZm9yZSB0aGUgZXhwb25lbnQgc2lnbilcbiAgICAgICAgICAgICB0byBkZXRlcm1pbmUgaWYgdGhlIG51bWJlciBpcyBlcXVhbCB0byAwLjAgKilcbiAgICAgICAgICBsZXQgZCA9IHJlZiBOb25lIGluXG4gICAgICAgICAgbGV0IGUgPSByZWYgTm9uZSBpblxuICAgICAgICAgIGxldCBub3RfemVybyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCB1bmRlcnNjb3JlID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgIHwgJy4nIC0+XG4gICAgICAgICAgICAgIGlmIE9wdGlvbi5pc19zb21lICFkXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aGYgXCJFcnJvciBwYXJzaW5nIFBlcmNlbnQudDogdG9vIG1hbnkgZGVjaW1hbCBwb2ludHMgaW4gJyVzJ1wiIHMgKCk7XG4gICAgICAgICAgICAgIGQgOj0gU29tZSBpXG4gICAgICAgICAgICB8ICdlJyB8ICdFJyAtPlxuICAgICAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSAhZVxuICAgICAgICAgICAgICB0aGVuIGZhaWx3aXRoZiBcIkVycm9yIHBhcnNpbmcgUGVyY2VudC50OiB0b28gbWFueSBFcyBpbiAnJXMnXCIgcyAoKTtcbiAgICAgICAgICAgICAgZSA6PSBTb21lIGlcbiAgICAgICAgICAgIHwgJy0nIHwgJysnIHwgJzAnIC0+ICgpXG4gICAgICAgICAgICB8ICdfJyAtPiB1bmRlcnNjb3JlIDo9IHRydWVcbiAgICAgICAgICAgIHwgJzEnIC4uICc5JyAtPiBpZiBPcHRpb24uaXNfbm9uZSAhZSB0aGVuIG5vdF96ZXJvIDo9IHRydWVcbiAgICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgICBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkIGNoYXJhY3RlciB3aGVuIHBhcnNpbmcgUGVyY2VudC50OiAnJWMnIGluICclcydcIiBjIHMgKClcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgICFkLCAhZSwgbm90ICFub3RfemVybywgIXVuZGVyc2NvcmVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgdW5kZXJzY29yZVxuICAgICAgICB0aGVuIHNoaWZ0X2RlY2ltYWxfcG9pbnQgKFN0cmluZy5maWx0ZXIgcyB+ZjooZnVuIGMgLT4gQ2hhci4oYyA8PiAnXycpKSkgfmJ5XG4gICAgICAgIGVsc2UgaWYgemVyb1xuICAgICAgICB0aGVuIHNcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICgqIFtzXSBpcyBpbiBzY2llbnRpZmljIG5vdGF0aW9uLiAgU2ltcGx5IGFkanVzdCB0aGUgZXhwb25lbnQgYWZ0ZXIgJ2UnLiAqKVxuICAgICAgICAgICAgbGV0IGV4cCA9IEludC5vZl9zdHJpbmcgKFN0cmluZy5kcm9wX3ByZWZpeCBzIChlICsgMSkpIGluXG4gICAgICAgICAgICBsZXQgZXhwID0gZXhwICsgYnkgaW5cbiAgICAgICAgICAgIGlmIGV4cCA9IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKCogV2UgZW5kIHVwIHdpdGggZXhwb25lbnQgMCwgc28gd2UganVzdCBza2lwIHRoZSBcImVcIiBhbHRvZ2V0aGVyICopXG4gICAgICAgICAgICAgIFN0cmluZy5wcmVmaXggcyBlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgICAgICBbIFN0cmluZy5wcmVmaXggcyAoZSArIDEpXG4gICAgICAgICAgICAgICAgOyAoaWYgZXhwID4gMCB0aGVuIFwiK1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgICAgICA7IEludC50b19zdHJpbmcgZXhwXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKCogW3NdIGlzIGluIGRlY2ltYWwgbm90YXRpb24uICBTdGFydCBieSBkcm9wcGluZyB0aGUgbGVhZGluZyBzaWduIGlmIHRoZXJlIGlzXG4gICAgICAgICAgICAgICBvbmUuICBXZSdsbCByZS1hZGQgaXQgYXQgdGhlIGVuZCB0byBrZWVwIHRoZSByZXN0IG9mIHRoZSBjb2RlIHNpbXBsZXIuICopXG4gICAgICAgICAgICBsZXQgbmVnID0gQ2hhci4oID0gKSBzLlswXSAnLScgaW5cbiAgICAgICAgICAgIGxldCBzaWduZWQgPSBuZWcgfHwgQ2hhci4oID0gKSBzLlswXSAnKycgaW5cbiAgICAgICAgICAgIGxldCBzID0gaWYgc2lnbmVkIHRoZW4gU3RyaW5nLmRyb3BfcHJlZml4IHMgMSBlbHNlIHMgaW5cbiAgICAgICAgICAgIGxldCBzLCBieSA9XG4gICAgICAgICAgICAgICgqIE5leHQsIHNjcmF0Y2ggdGhlIGRlY2ltYWwgcG9pbnQgaWYgdGhlcmUgaXMgb25lLCBzbyB0aGF0IFtzXSBiZWNvbWVzIGFuXG4gICAgICAgICAgICAgICAgIGludGVnZXIsIGFuZCBhZGp1c3QgW2J5XSBhY2NvcmRpbmdseSB0byBrZWVwIHRoZSByZXN1bHQgdW5jaGFuZ2VkLiAgV2VcbiAgICAgICAgICAgICAgICAgYWxzbyBrbm93IHRoYXQgW3MgPD4gMC4wXSBzbyB3ZSByZW1vdmUgbGVhZGluZyB6ZXJvcy4gIFdlIG1heSBiZSB3YXN0aW5nXG4gICAgICAgICAgICAgICAgIHNvbWUgd29yayBiZWNhdXNlIHdlIG1heSBoYXZlIHRvIGFkZCB0aGVtIGJhY2sgYmVsb3csIGJ1dCB0aGUgY29kZSBpc1xuICAgICAgICAgICAgICAgICBzaW1wbGVyIHRoYXQgd2F5LiAqKVxuICAgICAgICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHMsIGJ5XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+XG4gICAgICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICAgICAgKCogV2UgY2FsY3VsYXRlZCBbZF0gYmVmb3JlIHJlbW92aW5nIHRoZSBcIi1cIiBzaWduLCBzbyB3ZSBtYXkgaGF2ZSB0b1xuICAgICAgICAgICAgICAgICAgICAgYWRqdXN0IGl0IG5vdyAqKVxuICAgICAgICAgICAgICAgICAgZCAtIGlmIHNpZ25lZCB0aGVuIDEgZWxzZSAwXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3VmID0gU3RyaW5nLmRyb3BfcHJlZml4IHMgKGQgKyAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVmID0gU3RyaW5nLnByZWZpeCBzIGQgaW5cbiAgICAgICAgICAgICAgICBsZXQgcyA9IHByZWYgXiBzdWYgfD4gU3RyaW5nLmxzdHJpcCB+ZHJvcDooQ2hhci4oID0gKSAnMCcpIGluXG4gICAgICAgICAgICAgICAgbGV0IGJ5ID0gYnkgLSBTdHJpbmcubGVuZ3RoIHN1ZiBpblxuICAgICAgICAgICAgICAgIHMsIGJ5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogUmVtb3ZlIHRyYWlsaW5nIHplcm9zIHRvbyAqKVxuICAgICAgICAgICAgbGV0IHMsIGJ5ID1cbiAgICAgICAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBsZXQgcyA9IHMgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooQ2hhci4oID0gKSAnMCcpIGluXG4gICAgICAgICAgICAgIGxldCBieSA9IGJ5ICsgbGVuIC0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIHMsIGJ5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICAgIGlmIGJ5ID0gMFxuICAgICAgICAgICAgICB0aGVuIHNcbiAgICAgICAgICAgICAgZWxzZSBpZiBieSA+IDBcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICgqIENhc2UgMTogW3NdIGlzIGFuIGludGVnZXIgd2hpY2ggd2UgbmVlZCB0byBmdXJ0aGVyIG11bHRpcGx5IGJ5IGFcbiAgICAgICAgICAgICAgICAgICBwb3NpdGl2ZSBwb3dlciBvZiAxMCwgc28gd2UganVzdCBhZGQgMHMgYXQgdGhlIGVuZC4gKilcbiAgICAgICAgICAgICAgICBzIF4gU3RyaW5nLm1ha2UgYnkgJzAnXG4gICAgICAgICAgICAgIGVsc2UgaWYgYnkgPiAtbGVuXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAoKiBDYXNlIDI6IFtzXSBpcyBhbiBpbnRlZ2VyIHdoaWNoIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IGEgcG9zaXRpdmUgcG93ZXJcbiAgICAgICAgICAgICAgICAgICBvZiAxMCwgYW5kIGl0IGhhcyBlbm91Z2ggZGlnaXRzIHRoYXQgd2UgY2FuIGp1c3QgaW5zZXJ0IHRoZSAnLicgaW5cbiAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZW0uICopXG4gICAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIFN0cmluZy5kcm9wX3N1ZmZpeCBzICgtYnkpOyBcIi5cIjsgU3RyaW5nLnN1ZmZpeCBzICgtYnkpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICgqIENhc2UgMyAoYnkgPD0gLWxlbik6IFtzXSBpcyBhbiBpbnRlZ2VyIHdoaWNoIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IGFcbiAgICAgICAgICAgICAgICAgICBsYXJnZSBlbm91Z2ggcG9zaXRpdmUgcG93ZXIgb2YgMTAgdGhhdCB3ZSBuZWVkIHRvIGFkZCBsZWFkaW5nIDBzLiAqKVxuICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBcIjAuXCI7IFN0cmluZy5tYWtlICgtYnkgLSBsZW4pICcwJzsgcyBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCogRmluYWxseSwgcmVzdG9yZSB0aGUgc2lnbi4gIFdlIGNhbid0IGp1c3QgZHJvcCB0aGUgJysnIHNpZ24sIHdlIG5lZWQgdG9cbiAgICAgICAgICAgICAgIHJlc3RvcmUgaXQgdG9vLCBiZWNhdXNlIGlmIHdlIGRpZG4ndCwgd2Ugd291bGQgc2lsZW50bHkgcGFyc2UgbnVtYmVycyBsaWtlXG4gICAgICAgICAgICAgICBcIistMTMlXCIgb3IgXCIrKzE3YnBcIiB3aXRob3V0IHJhaXNpbmcgYW4gZXJyb3IuICopXG4gICAgICAgICAgICBpZiBzaWduZWQgdGhlbiAoaWYgbmVnIHRoZW4gXCItXCIgZWxzZSBcIitcIikgXiBzIGVsc2UgcykpXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInNoaWZ0X2RlY2ltYWxfcG9pbnQgMVwiID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICBbIFwiM1wiXG4gICAgICAgIDsgXCI1MS4yXCJcbiAgICAgICAgOyBcIi01MFwiXG4gICAgICAgIDsgXCIzMTI3MDAwLjAwMFwiXG4gICAgICAgIDsgXCIxLjc5RSszMDhcIlxuICAgICAgICA7IFwiNC45NDA2NTZFLTMyNFwiXG4gICAgICAgIDsgXCItMC4wMDBlMTNcIlxuICAgICAgICA7IFwiMS40NzY1MUUrMTBcIlxuICAgICAgICBdXG4gICAgICAgIH5mOihmdW4gcyAtPlxuICAgICAgICAgIHByaW50ZiBcIj09ICVzID09XFxuXCIgcztcbiAgICAgICAgICBsZXQgeCA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgICAgICAgTGlzdC5pdGVyIFsgLTQwOyAtMTA7IC0yOyAtMTsgMDsgMTsgMjsgMTA7IDQwIF0gfmY6KGZ1biBieSAtPlxuICAgICAgICAgICAgbGV0IHMxID0gc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieSBpblxuICAgICAgICAgICAgcHJpbnRmIFwiJXNcXG5cIiBzMTtcbiAgICAgICAgICAgIGxldCB4MSA9IEZsb2F0Lm9mX3N0cmluZyBzMSBpblxuICAgICAgICAgICAgbGV0IHgyID0geCAqLiAoMTAuICoqIGZsb2F0IGJ5KSBpblxuICAgICAgICAgICAgYXNzZXJ0IChGbG9hdC4oeDEgPSB4MiB8fCBhYnMgKCh4MSAtIHgyKSAvIHgxKSA8IDFlLTYpIDogYm9vbCkpO1xuICAgICAgICAgIHByaW50ZiBcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuXCIpO1xuICAgICAgKCogTm90ZSBcIi0wLjAwMGUxM1wiIGlzIG5vdCBhZGp1c3RlZCAqKVxuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAgICAgPT0gMyA9PVxuICAgICAgICAwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNcbiAgICAgICAgMC4wMDAwMDAwMDAzXG4gICAgICAgIDAuMDNcbiAgICAgICAgMC4zXG4gICAgICAgIDNcbiAgICAgICAgMzBcbiAgICAgICAgMzAwXG4gICAgICAgIDMwMDAwMDAwMDAwXG4gICAgICAgIDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDUxLjIgPT1cbiAgICAgICAgMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUxMlxuICAgICAgICAwLjAwMDAwMDAwNTEyXG4gICAgICAgIDAuNTEyXG4gICAgICAgIDUuMTJcbiAgICAgICAgNTEuMlxuICAgICAgICA1MTJcbiAgICAgICAgNTEyMFxuICAgICAgICA1MTIwMDAwMDAwMDBcbiAgICAgICAgNTEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IC01MCA9PVxuICAgICAgICAtMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVcbiAgICAgICAgLTAuMDAwMDAwMDA1XG4gICAgICAgIC0wLjVcbiAgICAgICAgLTVcbiAgICAgICAgLTUwXG4gICAgICAgIC01MDBcbiAgICAgICAgLTUwMDBcbiAgICAgICAgLTUwMDAwMDAwMDAwMFxuICAgICAgICAtNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXG4gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgID09IDMxMjcwMDAuMDAwID09XG4gICAgICAgIDAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzEyN1xuICAgICAgICAwLjAwMDMxMjdcbiAgICAgICAgMzEyNzBcbiAgICAgICAgMzEyNzAwXG4gICAgICAgIDMxMjcwMDAuMDAwXG4gICAgICAgIDMxMjcwMDAwXG4gICAgICAgIDMxMjcwMDAwMFxuICAgICAgICAzMTI3MDAwMDAwMDAwMDAwMFxuICAgICAgICAzMTI3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAxLjc5RSszMDggPT1cbiAgICAgICAgMS43OUUrMjY4XG4gICAgICAgIDEuNzlFKzI5OFxuICAgICAgICAxLjc5RSszMDZcbiAgICAgICAgMS43OUUrMzA3XG4gICAgICAgIDEuNzlFKzMwOFxuICAgICAgICAxLjc5RSszMDlcbiAgICAgICAgMS43OUUrMzEwXG4gICAgICAgIDEuNzlFKzMxOFxuICAgICAgICAxLjc5RSszNDhcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gNC45NDA2NTZFLTMyNCA9PVxuICAgICAgICA0Ljk0MDY1NkUtMzY0XG4gICAgICAgIDQuOTQwNjU2RS0zMzRcbiAgICAgICAgNC45NDA2NTZFLTMyNlxuICAgICAgICA0Ljk0MDY1NkUtMzI1XG4gICAgICAgIDQuOTQwNjU2RS0zMjRcbiAgICAgICAgNC45NDA2NTZFLTMyM1xuICAgICAgICA0Ljk0MDY1NkUtMzIyXG4gICAgICAgIDQuOTQwNjU2RS0zMTRcbiAgICAgICAgNC45NDA2NTZFLTI4NFxuICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICA9PSAtMC4wMDBlMTMgPT1cbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLTAuMDAwZTEzXG4gICAgICAgIC0wLjAwMGUxM1xuICAgICAgICAtMC4wMDBlMTNcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgPT0gMS40NzY1MUUrMTAgPT1cbiAgICAgICAgMS40NzY1MUUtMzBcbiAgICAgICAgMS40NzY1MVxuICAgICAgICAxLjQ3NjUxRSs4XG4gICAgICAgIDEuNDc2NTFFKzlcbiAgICAgICAgMS40NzY1MUUrMTBcbiAgICAgICAgMS40NzY1MUUrMTFcbiAgICAgICAgMS40NzY1MUUrMTJcbiAgICAgICAgMS40NzY1MUUrMjBcbiAgICAgICAgMS40NzY1MUUrNTBcbiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfH1dXG4gICAgOztcblxuICAgIG1vZHVsZSBTdHJpbmdhYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICBleHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbiAgICAgICgqIExvZ2ljIHN0b2xlbiBmcm9tIGxpYi9iYXNlL3NyYy9mbG9hdC5tbCwgYnV0IHRoaXMgZG9lcyBub3QgY2FsbFxuICAgICAgICAgW3ZhbGlkX2Zsb2F0X2xleGVtXSBzbyBub3QgYWRkaW5nIGEgdHJhaWxpbmcgXCIuXCIgYW5kIGFsc28sIHdlJ3JlIHVzaW5nXG4gICAgICAgICB1cHBlcmNhc2UgKCVHIHZzICVnKSBmb3IgY29uc2lzdGVuY3kgd2l0aCBbUGVyY2VudC5TdGFibGUuVjJdLiAqKVxuICAgICAgbGV0IGZsb2F0X3RvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1R1wiIHggaW5cbiAgICAgICAgaWYgRmxvYXQuKCA9ICkgKGZsb2F0X29mX3N0cmluZyB5KSB4IHRoZW4geSBlbHNlIGZvcm1hdF9mbG9hdCBcIiUuMTdHXCIgeFxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZycgZmxvYXRfdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgICB0aGVuIFwiMHhcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcyA9IGZsb2F0X3RvX3N0cmluZyB4IGluXG4gICAgICAgICAgKCogVW5pbXBvcnRhbnQgbm90ZTogVjMgc2VyaWFsaXplcyBuYW4gYXMgXCJOQU54XCIsIHdoaWxlIFYyIHNlcmlhbGl6ZXMgaXQgYXNcbiAgICAgICAgICAgICBcIk5BTmJwXCIgKilcbiAgICAgICAgICBpZiBGbG9hdC4oaXNfbmFuIHggfHwgaXNfaW5mIHggfHwgeF9hYnMgPj0gMS4pXG4gICAgICAgICAgdGhlbiBzIF4gXCJ4XCJcbiAgICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICAgICAgdGhlbiBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjIgXiBcIiVcIlxuICAgICAgICAgIGVsc2Ugc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieTo0IF4gXCJicFwiKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nJyBmbG9hdF90b19zdHJpbmcgeFxuXG4gICAgICBsZXQgcmVhbGx5X29mX3N0cmluZyBzdHIgZmxvYXRfb2Zfc3RyaW5nID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNob3Bfc3VmZml4IHN0ciB+c3VmZml4OlwieFwiIHdpdGhcbiAgICAgICAgfCBTb21lIHN0ciAtPiBmbG9hdF9vZl9zdHJpbmcgc3RyIH5ieTowXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCIlXCIgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgfmJ5OigtMilcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcImJwXCIgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHIgfmJ5OigtNClcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIlBlcmNlbnQub2Zfc3RyaW5nOiBtdXN0IGVuZCBpbiB4LCAlJSwgb3IgYnA6ICVzXCIgc3RyICgpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgeCA9XG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgeCAoZnVuIHMgfmJ5IC0+XG4gICAgICAgICAgc2hpZnRfZGVjaW1hbF9wb2ludCBzIH5ieVxuICAgICAgICAgIHw+IFNleHAuQXRvbVxuICAgICAgICAgIHw+IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi50X29mX3NleHApXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHggPVxuICAgICAgICByZWFsbHlfb2Zfc3RyaW5nIHggKGZ1biBzIH5ieSAtPlxuICAgICAgICAgIG1hdGNoIFN0cmluZy5sb3dlcmNhc2UgcyB3aXRoXG4gICAgICAgICAgfCBcIm5hblwiXG4gICAgICAgICAgfCBcIi1uYW5cIlxuICAgICAgICAgIHwgXCIrbmFuXCJcbiAgICAgICAgICB8IFwiaW5mXCJcbiAgICAgICAgICB8IFwiaW5maW5pdHlcIlxuICAgICAgICAgIHwgXCIraW5mXCJcbiAgICAgICAgICB8IFwiK2luZmluaXR5XCJcbiAgICAgICAgICB8IFwiLWluZlwiXG4gICAgICAgICAgfCBcIi1pbmZpbml0eVwiIC0+XG4gICAgICAgICAgICAoKiBXZSBwYXJzZSB0aGVzZSBuYW4gb3IgaW5mIHN0cmluZ3MgZGlyZWN0bHksIGJlY2F1c2VcbiAgICAgICAgICAgICAgIFtzaGlmdF9kZWNpbWFsX3BvaW50XSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gKilcbiAgICAgICAgICAgIEZsb2F0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgfCBfIC0+IHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+YnkgfD4gRmxvYXQub2Zfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nYWJsZSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgICB2YWwgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIDogc3RyaW5nIC0+IHRcbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgIGluY2x1ZGUgKFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChTdHJpbmdhYmxlKSA6IFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBpbmNsdWRlIChGbG9hdCA6IEJpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICgqIFVzZSBhIGRpZmZlcmVudCBiaW5fc2hhcGVfdCB0aGFuIFBlcmNlbnQuU3RhYmxlLlYyLCBldmVuIHRob3VnaCB0aGVzZSB0d28gdmVyc2lvbnNcbiAgICAgICBoYXZlIGNvbXBhdGlibGUgYmluX2lvIHNlcmlhbGl6YXRpb24uICBTaW5jZSB0aGV5IGRvIGRpZmZlciBpbiBzZXhwIHNlcmlhbGl6YXRpb24sXG4gICAgICAgd2UgZXJyIG9uIHRoZSBzaWRlIG9mIHNhZmV0eSBhbmQgY2hhbmdlIHRoZSBiaW4gc2hhcGUgdG8gd2FybiB0aGF0IFYzIGlzIG5vdCBhbHdheXNcbiAgICAgICBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIFYyLiAqKVxuICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAoQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJiMzJmMmExZS02YjQzLTExZWQtYjMzYi1hYWMyYTU2M2YxMGFcIilcbiAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgOztcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICAgICAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICAgICAgbGV0IHMgPSBTdHJpbmdhYmxlLmZsb2F0X3RvX3N0cmluZyB4IGluXG4gICAgICAgIHNoaWZ0X2RlY2ltYWxfcG9pbnQgcyB+Ynk6MiBeIFwiJVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGdsb2JhbGl6ZSwgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBsZXQgb2ZfbXVsdCBmID0gZlxuICAgIGxldCB0b19tdWx0IHQgPSB0XG4gICAgbGV0IG9mX3BlcmNlbnRhZ2UgZiA9IGYgLy4gMTAwLlxuICAgIGxldCB0b19wZXJjZW50YWdlIHQgPSB0ICouIDEwMC5cbiAgICBsZXQgb2ZfYnAgZiA9IGYgLy4gMTBfMDAwLlxuICAgIGxldCB0b19icCB0ID0gdCAqLiAxMF8wMDAuXG4gICAgbGV0IG9mX2JwX2ludCBpID0gb2ZfYnAgKEZsb2F0Lm9mX2ludCBpKVxuICAgIGxldCB0b19icF9pbnQgdCA9IEZsb2F0LnRvX2ludCAodG9fYnAgdClcblxuICAgICgqIE11bHRpcGx5IHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0IFtmXSBieSBbMTAqKmJ5XSwgYW5kIGNvbnZlcnQgYmFjayB0b1xuICAgICAgIHRoZSBuZWFyZXN0IHJlcHJlc2VudGFibGUgZmxvYXQuICopXG4gICAgbGV0IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+YnkgPVxuICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZilcbiAgICAgIHRoZW4gZlxuICAgICAgZWxzZSBGbG9hdC50b19zdHJpbmcgZiB8PiBWMy5zaGlmdF9kZWNpbWFsX3BvaW50IH5ieSB8PiBGbG9hdC5vZl9zdHJpbmdcbiAgICA7O1xuXG4gICAgbGV0IG9mX3BlcmNlbnRhZ2Vfc2xvd19tb3JlX2FjY3VyYXRlIGYgPSBzaGlmdF9kZWNpbWFsX3BvaW50X2luX2Zsb2F0IGYgfmJ5OigtMilcbiAgICBsZXQgdG9fcGVyY2VudGFnZV9zbG93X21vcmVfYWNjdXJhdGUgZiA9IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+Ynk6MlxuICAgIGxldCBvZl9icF9zbG93X21vcmVfYWNjdXJhdGUgZiA9IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+Ynk6KC00KVxuICAgIGxldCB0b19icF9zbG93X21vcmVfYWNjdXJhdGUgZiA9IHNoaWZ0X2RlY2ltYWxfcG9pbnRfaW5fZmxvYXQgZiB+Ynk6NFxuXG4gICAgbGV0IHJvdW5kX3NpZ25pZmljYW50IHAgfnNpZ25pZmljYW50X2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHNcbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfbXVsdCBwIH5kZWNpbWFsX2RpZ2l0cyA9IEZsb2F0LnJvdW5kX2RlY2ltYWwgcCB+ZGVjaW1hbF9kaWdpdHNcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX3BlcmNlbnRhZ2UgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAuKSB+ZGVjaW1hbF9kaWdpdHMgLy4gMTAwLlxuICAgIDs7XG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9icCBwIH5kZWNpbWFsX2RpZ2l0cyA9XG4gICAgICBGbG9hdC5yb3VuZF9kZWNpbWFsIChwICouIDEwMDAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMDAwLlxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEV4cG9uZW50IG9mIGludFxuICAgICAgICB8IEV4cG9uZW50X0Ugb2YgaW50XG4gICAgICAgIHwgRGVjaW1hbCBvZiBpbnRcbiAgICAgICAgfCBPY2FtbFxuICAgICAgICB8IENvbXBhY3Qgb2YgaW50XG4gICAgICAgIHwgQ29tcGFjdF9FIG9mIGludFxuICAgICAgICB8IEhleCBvZiBpbnRcbiAgICAgICAgfCBIZXhfRSBvZiBpbnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBleHBvbmVudCB+cHJlY2lzaW9uID0gRXhwb25lbnQgcHJlY2lzaW9uXG4gICAgICBsZXQgZXhwb25lbnRfRSB+cHJlY2lzaW9uID0gRXhwb25lbnRfRSBwcmVjaXNpb25cbiAgICAgIGxldCBkZWNpbWFsIH5wcmVjaXNpb24gPSBEZWNpbWFsIHByZWNpc2lvblxuICAgICAgbGV0IG9jYW1sID0gT2NhbWxcbiAgICAgIGxldCBjb21wYWN0IH5wcmVjaXNpb24gPSBDb21wYWN0IHByZWNpc2lvblxuICAgICAgbGV0IGNvbXBhY3RfRSB+cHJlY2lzaW9uID0gQ29tcGFjdF9FIHByZWNpc2lvblxuICAgICAgbGV0IGhleCB+cHJlY2lzaW9uID0gSGV4IHByZWNpc2lvblxuICAgICAgbGV0IGhleF9FIH5wcmVjaXNpb24gPSBIZXhfRSBwcmVjaXNpb25cblxuICAgICAgbGV0IGZvcm1hdF9mbG9hdCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRXhwb25lbnQgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLiplXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRXhwb25lbnRfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkVcIiBwcmVjaXNpb25cbiAgICAgICAgfCBEZWNpbWFsIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZlwiIHByZWNpc2lvblxuICAgICAgICB8IE9jYW1sIC0+IHNwcmludGYgXCIlRlwiXG4gICAgICAgIHwgQ29tcGFjdCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmdcIiBwcmVjaXNpb25cbiAgICAgICAgfCBDb21wYWN0X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipHXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgSGV4IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qaFwiIHByZWNpc2lvblxuICAgICAgICB8IEhleF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qSFwiIHByZWNpc2lvblxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBmb3JtYXQgeCBmb3JtYXQgPVxuICAgICAgbGV0IHhfYWJzID0gRmxvYXQuYWJzIHggaW5cbiAgICAgIGxldCBzdHJpbmcgZmxvYXQgPSBGb3JtYXQuZm9ybWF0X2Zsb2F0IGZvcm1hdCBmbG9hdCBpblxuICAgICAgaWYgRmxvYXQuKCA9ICkgeF9hYnMgMC5cbiAgICAgIHRoZW4gXCIweFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAxLlxuICAgICAgdGhlbiBzdHJpbmcgKHggKi4gMS4pIF4gXCJ4XCJcbiAgICAgIGVsc2UgaWYgRmxvYXQuKCA+PSApIHhfYWJzIDAuMDFcbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgICAgIGVsc2Ugc3RyaW5nICh4ICouIDEwXzAwMC4pIF4gXCJicFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBTdHJpbmdhYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBmbG9hdFxuXG4gICAgICAoKiBXQVJOSU5HIC0gUExFQVNFIFJFQUQgQkVGT1JFIEVESVRJTkcgVEhFU0UgRlVOQ1RJT05TOlxuXG4gICAgICAgICBUaGUgc3RyaW5nIGNvbnZlcnRlcnMgaW4gU3RhYmxlLlYzL1YyL1YxIHNob3VsZCBuZXZlciBjaGFuZ2UuIElmIHlvdSBhcmUgY2hhbmdpbmdcbiAgICAgICAgIHRoZSBzZW1hbnRpY3Mgb2YgYW55dGhpbmcgdGhhdCBhZmZlY3RzIHRoZSBzZXhwIG9yIGJpbi1pbyByZXByZXNlbnRhdGlvbiBvZlxuICAgICAgICAgdmFsdWVzIG9mIHRoaXMgdHlwZSAodGhpcyBpbmNsdWRlcyB0b19zdHJpbmcgYW5kIG9mX3N0cmluZykgbWFrZSBhIFN0YWJsZS5WNCBhbmRcbiAgICAgICAgIG1ha2UgeW91ciBjaGFuZ2VzIHRoZXJlLiBUaGFua3MhICopXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gc3ByaW50ZiBcIiUuNkdcIiBmbG9hdCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgICB0aGVuIFwiMHhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAxLlxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgPSBWMy5vZl9zdHJpbmdcbiAgICAgIGxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgPSBWMy5vZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmZcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RyaW5nYWJsZSA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgICAgICB2YWwgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIDogc3RyaW5nIC0+IHRcbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgIGluY2x1ZGUgKFNleHBhYmxlLlN0YWJsZS5PZl9zdHJpbmdhYmxlLlYxIChTdHJpbmdhYmxlKSA6IFNleHBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcbiAgICBpbmNsdWRlIChGbG9hdCA6IEJpbmFibGUgd2l0aCB0eXBlIHQgOj0gdClcblxuICAgICgqIE1pbnQgYSB1bmlxdWUgW2Jpbl9zaGFwZV90XSB0aGF0J3MgZGlzdGluY3QgZnJvbSB0aGUgaGlkZGVuIHVuZGVybHlpbmdcbiAgICAgICByZXByZXNlbnRhdGlvbiBvZiBmbG9hdC4gKilcbiAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuYmFzZXR5cGVcbiAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiMWQxZTc2YmMtZWE0Yi0xMWViLWExNmEtYWE1YjI4ZDFmNGQ3XCIpXG4gICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVjMuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBWMy5jb21wYXJhdG9yXG4gICAgICBlbmQpXG5cbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFYzLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVjJcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gRmxvYXQuYmluX3NoYXBlX3RcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBiaW5faW9dXG4gICAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBWMy5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICAgIGxldCBjb21wYXJhdG9yID0gVjMuY29tcGFyYXRvclxuXG4gICAgICAgICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgY29tcGFyYWJsZS1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0XG4gICAgICAgICAgICAgc2VyaWFsaXphdGlvbiByYXRoZXIgdGhhbiBwZXJjZW50IHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZ1xuICAgICAgICAgICAgIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyIHNlcmlhbGl6YXRpb24uXG4gICAgICAgICAgKilcbiAgICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgICAgICAgfCBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcbiAgZW5kXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBPcHRpb25fcmVwciA9IHN0cnVjdFxuICAgICAgbGV0IG5vbmUgPSBGbG9hdC5uYW5cbiAgICAgIGxldCBpc19ub25lIHQgPSBGbG9hdC5pc19uYW4gdFxuICAgICAgbGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxuICAgICAgbGV0IHNvbWVfaXNfcmVwcmVzZW50YWJsZSA9IGlzX3NvbWVcbiAgICAgIGxldCBzb21lID0gRm4uaWRcbiAgICAgIGxldCB1bmNoZWNrZWRfdmFsdWUgPSBGbi5pZFxuICAgICAgbGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfc29tZSB0IHRoZW4gU29tZSAodW5jaGVja2VkX3ZhbHVlIHQpIGVsc2UgTm9uZVxuICAgICAgbGV0IGFwcGx5X3dpdGhfbm9uZV9hc19uYW4gPSAoICouIClcbiAgICAgIGxldCBvZl9tdWx0X3dpdGhfbmFuX2FzX25vbmUgPSBGbi5pZFxuICAgICAgbGV0IHRvX211bHRfd2l0aF9ub25lX2FzX25hbiA9IEZuLmlkXG5cbiAgICAgIGxldCBvZl9vcHRpb24gb3B0ID1cbiAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG5vbmVcbiAgICAgICAgfCBTb21lIHYgLT4gc29tZSB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWVfZXhuIHQgPVxuICAgICAgICBpZiBpc19zb21lIHRcbiAgICAgICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgICAgICBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFslaGVyZV0gXCJQZXJjZW50Lk9wdGlvbi52YWx1ZV9leG4gbm9uZVwiXVxuICAgICAgOztcblxuICAgICAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBCb29sLnNlbGVjdCAoaXNfbm9uZSB0KSBkZWZhdWx0ICh1bmNoZWNrZWRfdmFsdWUgdClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gVjMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIHN0YWJsZV93aXRuZXNzXVxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5iYXNldHlwZVxuICAgICAgICAgIChCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImU5YjUyMDI4LTZiNDUtMTFlZC1hNmI2LWFhYzJhNTYzZjEwYVwiKVxuICAgICAgICAgIFsgYmluX3NoYXBlX3QgXVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSBPcHRpb25fcmVwclxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSB0b19vcHRpb24gdCB8PiBPcHRpb24uc2V4cF9vZl90IFYzLnNleHBfb2ZfdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gKE9wdGlvbi50X29mX3NleHAgVjMudF9vZl9zZXhwKSBzZXhwIHw+IG9mX29wdGlvblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFslc2V4cF9ncmFtbWFyOiBWMy50IE9wdGlvbi50XVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBWMi50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLmJhc2V0eXBlXG4gICAgICAgICAgKEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZjdhYTA0ZTgtZGEzZS0xMWVjLWI1NDYtYWE3MzI4NDMzYjcwXCIpXG4gICAgICAgICAgWyBiaW5fc2hhcGVfdCBdXG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlIE9wdGlvbl9yZXByXG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX29wdGlvbiB0IHw+IE9wdGlvbi5zZXhwX29mX3QgVjIuc2V4cF9vZl90XG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSAoT3B0aW9uLnRfb2Zfc2V4cCBWMi50X29mX3NleHApIHNleHAgfD4gb2Zfb3B0aW9uXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgWyVzZXhwX2dyYW1tYXI6IFYyLnQgT3B0aW9uLnRdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5fc2hhcGVfc2FtZV9hc19mbG9hdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFYyXG5cbiAgICAgICAgbGV0IGJpbl9zaGFwZV90ID0gRmxvYXQuYmluX3NoYXBlX3RcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIEJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxLkJpbl9zaGFwZV9zYW1lX2FzX2Zsb2F0XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IFN0YWJsZS5PcHRpb25cbiAgaW5jbHVkZSBTdGFibGUuVjEuQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcblxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5jaGVja2VkX3ZhbHVlXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmxldCBpc196ZXJvIHQgPSB0ID0gMC5cbmxldCBhcHBseSB0IGYgPSB0ICouIGZcbmxldCBzY2FsZSB0IGYgPSB0ICouIGZcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBGbG9hdFxuXG4gIGxldCBvbmVfaHVuZHJlZF9wZXJjZW50ID0gMS5cbiAgbGV0ICggLy8gKSB4IHkgPSBvZl9tdWx0IHggLy4gb2ZfbXVsdCB5XG5lbmQgOlxuc2lnXG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgb25lX2h1bmRyZWRfcGVyY2VudCA6IHRcbiAgdmFsICggKiApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLy8gKSA6IHQgLT4gdCAtPiBmbG9hdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIGlzX25hbiA6IHQgLT4gYm9vbFxuICB2YWwgaXNfaW5mIDogdCAtPiBib29sXG4gIHZhbCBzaWduX2V4biA6IHQgLT4gU2lnbi50XG5cbiAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBTdGFibGUuVjEuQmluX3NoYXBlX3NhbWVfYXNfZmxvYXRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCB2YWxpZGF0ZSA9IEZsb2F0LnZhbGlkYXRlX29yZGluYXJ5XG5sZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHMgPSBTdHJpbmdhYmxlLm9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiBzXG5sZXQgdF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIHNleHAgPSBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgKFNleHAudG9fc3RyaW5nIHNleHApXG5cbm1vZHVsZSBBbHdheXNfcGVyY2VudGFnZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBmb3JtYXQgeCBmb3JtYXQgPSBGb3JtYXQuZm9ybWF0X2Zsb2F0IGZvcm1hdCAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gIGxldCB0b19zdHJpbmcgeCA9IHNwcmludGYgXCIlLjZHJSVcIiAoeCAqIDEwMC4pXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5lbmRcblxubGV0IHRvX3N0cmluZ19yb3VuZF90cmlwcGFibGUgPSBTdGFibGUuVjMudG9fc3RyaW5nXG5cbm1vZHVsZSBBbG1vc3Rfcm91bmRfdHJpcHBhYmxlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cblxuICBsZXQgdG9fc3RyaW5nIHggPSBTdGFibGUuVjMuU3RyaW5nYWJsZS4odG9fc3RyaW5nJyAoZm9ybWF0X2Zsb2F0IFwiJS4xNEdcIikgeClcbiAgbGV0IG9mX3N0cmluZyB4ID0gU3RhYmxlLlYzLlN0cmluZ2FibGUub2Zfc3RyaW5nIHhcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbiAgbGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMy50X29mX3NleHBcblxuICBtb2R1bGUgQWx3YXlzX3BlcmNlbnRhZ2UgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgbGV0IG9wZW4gU3RhYmxlLlYzIGluXG4gICAgICBsZXQgcyA9IFN0cmluZ2FibGUuZm9ybWF0X2Zsb2F0IFwiJS4xNEdcIiB4IGluXG4gICAgICBzaGlmdF9kZWNpbWFsX3BvaW50IHMgfmJ5OjIgXiBcIiVcIlxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgcmFuZG9taXplIHNwYW4gcmFuZG9tX3N0YXRlIH5wZXJjZW50IH5zY2FsZSA9XG4gIGxldCBtdWx0ID0gUGVyY2VudC50b19tdWx0IHBlcmNlbnQgaW5cbiAgaWYgRmxvYXQuKCA8ICkgbXVsdCAwLiB8fCBGbG9hdC4oID4gKSBtdWx0IDEuXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJTcGFuLnJhbmRvbWl6ZTogcGVyY2VudCBpcyBvdXQgb2YgcmFuZ2UgWzB4LCAxeF1cIiAocGVyY2VudCA6IFBlcmNlbnQudCldO1xuICBsZXQgZmFjdG9yID1cbiAgICBSYW5kb20uU3RhdGUuZmxvYXRfcmFuZ2UgcmFuZG9tX3N0YXRlICgxLiAtLiBtdWx0KSAoRmxvYXQub25lX3VscCBgVXAgKDEuICsuIG11bHQpKVxuICBpblxuICBzY2FsZSBzcGFuIGZhY3RvclxuOztcblxubGV0IGZvcm1hdF9kZWNpbWFsIG4gdGVudGhzIHVuaXRzID1cbiAgYXNzZXJ0ICh0ZW50aHMgPj0gMCAmJiB0ZW50aHMgPCAxMCk7XG4gIGlmIG4gPCAxMCAmJiB0ZW50aHMgPD4gMFxuICB0aGVuIHNwcmludGYgXCIlZC4lZCVzXCIgbiB0ZW50aHMgdW5pdHNcbiAgZWxzZSBzcHJpbnRmIFwiJWQlc1wiIG4gdW5pdHNcbjs7XG5cbmxldCBzaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyA9XG4gIGxldCBzID1cbiAgICBpZiBociA+PSAyNFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgKGhyIC8gMjQpIChJbnQub2ZfZmxvYXQgKEZsb2F0Lm9mX2ludCAoaHIgJSAyNCkgLy4gMi40KSkgXCJkXCJcbiAgICBlbHNlIGlmIGhyID4gMFxuICAgIHRoZW4gZm9ybWF0X2RlY2ltYWwgaHIgKG1pbiAvIDYpIFwiaFwiXG4gICAgZWxzZSBpZiBtaW4gPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBtaW4gKHNlYyAvIDYpIFwibVwiXG4gICAgZWxzZSBpZiBzZWMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBzZWMgKG1zIC8gMTAwKSBcInNcIlxuICAgIGVsc2UgaWYgbXMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBtcyAodXMgLyAxMDApIFwibXNcIlxuICAgIGVsc2UgaWYgdXMgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCB1cyAobnMgLyAxMDApIFwidXNcIlxuICAgIGVsc2Ugc3ByaW50ZiBcIiVpbnNcIiBuc1xuICBpblxuICBtYXRjaCAoc2lnbiA6IFNpZ24udCkgd2l0aFxuICB8IE5lZyAtPiBcIi1cIiBeIHNcbiAgfCBaZXJvIHwgUG9zIC0+IHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFBhcnRzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHNpZ24gOiBTaWduLnRcbiAgICAgICAgOyBociA6IGludFxuICAgICAgICA7IG1pbiA6IGludFxuICAgICAgICA7IHNlYyA6IGludFxuICAgICAgICA7IG1zIDogaW50XG4gICAgICAgIDsgdXMgOiBpbnRcbiAgICAgICAgOyBucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBMaWtlX2FfZmxvYXQgPSBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgemVybyA6IHRcbiAgICAgIHZhbCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgOiB0XG4gICAgICB2YWwgYWJzIDogdCAtPiB0XG4gICAgICB2YWwgbmVnIDogdCAtPiB0XG4gICAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGluY2x1ZGUgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAgIG1vZHVsZSBDb25zdGFudCA6IHNpZ1xuICAgICAgICB2YWwgbmFub3NlY29uZHNfcGVyX3NlY29uZCA6IGZsb2F0XG4gICAgICAgIHZhbCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA6IGZsb2F0XG4gICAgICAgIHZhbCBtaWxsaXNlY29uZHNfcGVyX3NlY29uZCA6IGZsb2F0XG4gICAgICAgIHZhbCBuYW5vc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaWxsaXNlY29uZCA6IHRcbiAgICAgICAgdmFsIHNlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pbnV0ZSA6IHRcbiAgICAgICAgdmFsIGhvdXIgOiB0XG4gICAgICAgIHZhbCBkYXkgOiB0XG4gICAgICBlbmRcblxuICAgICAgdmFsIHRvX3BhcnRzIDogdCAtPiBQYXJ0cy50XG4gICAgICB2YWwgbmV4dCA6IHQgLT4gdFxuICAgICAgdmFsIHByZXYgOiB0IC0+IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2gsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBoYXNoLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgbGV0IG5leHQgdCA9IEZsb2F0Lm9uZV91bHAgYFVwIHRcbiAgICAgIGxldCBwcmV2IHQgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHRcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuU3BhbiB2ZXJzaW9uIHRvIHN0YWJsZS5tbCAqKVxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cbiAgICAgIGVuZCA6XG4gICAgICAgIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICAgICAgcHJlY2lzaW9uICopXG4gICAgICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgICAgIGVuZClcblxuICAgICAgKCogdGhpcyBwcmV2ZW50cyBhbnkgd29ycnkgYWJvdXQgaGF2aW5nIHRoZXNlIHZlcnkgY29tbW9uIG5hbWVzIHJlZGVmaW5lZCBiZWxvdyBhbmRcbiAgICAgICAgIG1ha2VzIHRoZWlyIHVzYWdlIHdpdGhpbiB0aGlzIG1vZHVsZSBzYWZlci4gIENvbnN0YW50IGlzIGluY2x1ZGVkIGF0IHRoZSB2ZXJ5XG4gICAgICAgICBib3R0b20gdG8gcmUtZXhwb3J0IHRoZXNlIGNvbnN0YW50cyBpbiBhIG1vcmUgY29udmVuaWVudCB3YXkgKilcbiAgICAgIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgICAgICBsZXQgbmFub3NlY29uZHNfcGVyX3NlY29uZCA9IDFFOVxuICAgICAgICBsZXQgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTZcbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kc19wZXJfc2Vjb25kID0gMUUzXG5cbiAgICAgICAgKCogc3BhbnMgYXJlIHN0b3JlZCBhcyBhIGZsb2F0IGluIHNlY29uZHMgKilcbiAgICAgICAgbGV0IG5hbm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kID0gb2ZfZmxvYXQgKDEuIC8uIG1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWlsbGlzZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBzZWNvbmQgPSBvZl9mbG9hdCAxLlxuICAgICAgICBsZXQgbWludXRlID0gb2ZfZmxvYXQgNjAuXG4gICAgICAgIGxldCBob3VyID0gb2ZfZmxvYXQgKDYwLiAqLiA2MC4pXG4gICAgICAgIGxldCBkYXkgPSBvZl9mbG9hdCAoMjQuICouIDYwLiAqLiA2MC4pXG4gICAgICBlbmRcblxuXG4gICAgICBsZXQgdG9fcGFydHMgdCA6IFBhcnRzLnQgPVxuICAgICAgICBsZXQgc2lnbiA9IEZsb2F0LnNpZ25fZXhuIHQgaW5cbiAgICAgICAgbGV0IHQgPSBhYnMgdCBpblxuICAgICAgICBsZXQgaW50ZWdyYWwgPSBGbG9hdC5yb3VuZF9kb3duIHQgaW5cbiAgICAgICAgbGV0IGZyYWN0aW9uYWwgPSB0IC0uIGludGVncmFsIGluXG4gICAgICAgIGxldCBzZWNvbmRzID0gRmxvYXQuaXJvdW5kX2Rvd25fZXhuIGludGVncmFsIGluXG4gICAgICAgIGxldCBuYW5vc2Vjb25kcyA9IEZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4biAoZnJhY3Rpb25hbCAqLiAxRTkpIGluXG4gICAgICAgIGxldCBzZWNvbmRzLCBuYW5vc2Vjb25kcyA9XG4gICAgICAgICAgaWYgSW50LmVxdWFsIG5hbm9zZWNvbmRzIDFfMDAwXzAwMF8wMDBcbiAgICAgICAgICB0aGVuIEludC5zdWNjIHNlY29uZHMsIDBcbiAgICAgICAgICBlbHNlIHNlY29uZHMsIG5hbm9zZWNvbmRzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzZWMgPSBzZWNvbmRzIG1vZCA2MCBpblxuICAgICAgICBsZXQgbWludXRlcyA9IHNlY29uZHMgLyA2MCBpblxuICAgICAgICBsZXQgbWluID0gbWludXRlcyBtb2QgNjAgaW5cbiAgICAgICAgbGV0IGhyID0gbWludXRlcyAvIDYwIGluXG4gICAgICAgIGxldCBucyA9IG5hbm9zZWNvbmRzIG1vZCAxMDAwIGluXG4gICAgICAgIGxldCBtaWNyb3NlY29uZHMgPSBuYW5vc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IHVzID0gbWljcm9zZWNvbmRzIG1vZCAxMDAwIGluXG4gICAgICAgIGxldCBtaWxsaXNlY29uZHMgPSBtaWNyb3NlY29uZHMgLyAxMDAwIGluXG4gICAgICAgIGxldCBtcyA9IG1pbGxpc2Vjb25kcyBpblxuICAgICAgICB7IHNpZ247IGhyOyBtaW47IHNlYzsgbXM7IHVzOyBucyB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0ICggLyApIHQgZiA9IFQub2ZfZmxvYXQgKCh0IDogVC50IDo+IGZsb2F0KSAvLiBmKVxuICAgIGxldCAoIC8vICkgKGYgOiBULnQpICh0IDogVC50KSA9IChmIDo+IGZsb2F0KSAvLiAodCA6PiBmbG9hdClcblxuICAgICgqIE11bHRpcGx5aW5nIGJ5IDFFMyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gZGl2aXNpb24gYnkgMUUtMyAqKVxuICAgIGxldCB0b19ucyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdCkgKi4gVC5Db25zdGFudC5uYW5vc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX3VzICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm1pY3Jvc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX21zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm1pbGxpc2Vjb25kc19wZXJfc2Vjb25kXG4gICAgbGV0IHRvX3NlYyAoeCA6IFQudCkgPSAoeCA6PiBmbG9hdClcbiAgICBsZXQgdG9fbWluIHggPSB4IC8vIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IHRvX2hyIHggPSB4IC8vIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCB0b19kYXkgeCA9IHggLy8gVC5Db25zdGFudC5kYXlcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB4ID0gRmxvYXQuaW50NjNfcm91bmRfZG93bl9leG4gKHRvX3NlYyB4KVxuICAgIGxldCAoICoqICkgZiAodCA6IFQudCkgPSBULm9mX2Zsb2F0IChmICouICh0IDo+IGZsb2F0KSlcblxuICAgICgqIERpdmlzaW9uIGJ5IDFFMyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gbXVsdGlwbHlpbmcgYnkgMUUtMyAqKVxuICAgIGxldCBvZl9ucyB4ID0gVC5vZl9mbG9hdCAoeCAvLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX3VzIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX21zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgbGV0IG9mX3NlYyB4ID0gVC5vZl9mbG9hdCB4XG4gICAgbGV0IG9mX2ludDMyX3NlY29uZHMgc2VjID0gb2Zfc2VjIChJbnQzMi50b19mbG9hdCBzZWMpXG5cbiAgICAoKiBOb3RlIHRoYXQgW0ludDYzLnRvX2Zsb2F0XSBjYW4gbG9zZSBwcmVjaXNpb24sIGJ1dCBvbmx5IG9uIGlucHV0cyBsYXJnZSBlbm91Z2ggdGhhdFxuICAgICAgIFtvZl9zZWNdIGluIGVpdGhlciB0aGUgVGltZV9ucyBvciBUaW1lX2Zsb2F0IGNhc2Ugd291bGQgbG9zZSBwcmVjaXNpb24gKG9yIGp1c3QgYmVcbiAgICAgICBwbGFpbiBvdXQgb2YgYm91bmRzKSBhbnl3YXkuICopXG4gICAgbGV0IG9mX2ludDYzX3NlY29uZHMgc2VjID0gb2Zfc2VjIChJbnQ2My50b19mbG9hdCBzZWMpXG4gICAgbGV0IG9mX21pbiB4ID0geCAqKiBULkNvbnN0YW50Lm1pbnV0ZVxuICAgIGxldCBvZl9ociB4ID0geCAqKiBULkNvbnN0YW50LmhvdXJcbiAgICBsZXQgb2ZfZGF5IHggPSB4ICoqIFQuQ29uc3RhbnQuZGF5XG4gICAgbGV0IG9mX2ludF9ucyB4ID0gb2ZfbnMgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfdXMgeCA9IG9mX3VzIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50X21zIHggPSBvZl9tcyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9zZWMgeCA9IG9mX3NlYyAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9taW4geCA9IG9mX21pbiAoRmxvYXQub2ZfaW50IHgpXG4gICAgbGV0IG9mX2ludF9ociB4ID0gb2ZfaHIgKEZsb2F0Lm9mX2ludCB4KVxuICAgIGxldCBvZl9pbnRfZGF5IHggPSBvZl9kYXkgKEZsb2F0Lm9mX2ludCB4KVxuXG4gICAgbGV0IGRpdmlkZV9ieV91bml0X29mX3RpbWUgdCB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gdG9fbnMgdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiB0b191cyB0XG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHRcbiAgICAgIHwgU2Vjb25kIC0+IHRvX3NlYyB0XG4gICAgICB8IE1pbnV0ZSAtPiB0b19taW4gdFxuICAgICAgfCBIb3VyIC0+IHRvX2hyIHRcbiAgICAgIHwgRGF5IC0+IHRvX2RheSB0XG4gICAgOztcblxuICAgIGxldCBzY2FsZV9ieV91bml0X29mX3RpbWUgZmxvYXQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG9mX25zIGZsb2F0XG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IG9mX3VzIGZsb2F0XG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IG9mX21zIGZsb2F0XG4gICAgICB8IFNlY29uZCAtPiBvZl9zZWMgZmxvYXRcbiAgICAgIHwgTWludXRlIC0+IG9mX21pbiBmbG9hdFxuICAgICAgfCBIb3VyIC0+IG9mX2hyIGZsb2F0XG4gICAgICB8IERheSAtPiBvZl9kYXkgZmxvYXRcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZVxuICAgICAgICAgID8oc2lnbiA9IFNpZ24uUG9zKVxuICAgICAgICAgID8oZGF5ID0gMClcbiAgICAgICAgICA/KGhyID0gMClcbiAgICAgICAgICA/KG1pbiA9IDApXG4gICAgICAgICAgPyhzZWMgPSAwKVxuICAgICAgICAgID8obXMgPSAwKVxuICAgICAgICAgID8odXMgPSAwKVxuICAgICAgICAgID8obnMgPSAwKVxuICAgICAgICAgICgpXG4gICAgICA9XG4gICAgICBsZXQgKCArICkgPSBULiggKyApIGluXG4gICAgICBsZXQgdCA9XG4gICAgICAgIG9mX2RheSAoRmxvYXQub2ZfaW50IGRheSlcbiAgICAgICAgKyBvZl9ociAoRmxvYXQub2ZfaW50IGhyKVxuICAgICAgICArIG9mX21pbiAoRmxvYXQub2ZfaW50IG1pbilcbiAgICAgICAgKyBvZl9zZWMgKEZsb2F0Lm9mX2ludCBzZWMpXG4gICAgICAgICsgb2ZfbXMgKEZsb2F0Lm9mX2ludCBtcylcbiAgICAgICAgKyBvZl91cyAoRmxvYXQub2ZfaW50IHVzKVxuICAgICAgICArIG9mX25zIChGbG9hdC5vZl9pbnQgbnMpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2lnbiB3aXRoXG4gICAgICB8IE5lZyAtPiBULiggLSApIFQuemVybyB0XG4gICAgICB8IFBvcyB8IFplcm8gLT4gdFxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbnN0YW50XG5cbiAgICBsZXQgcmFuZG9taXplID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgdCB+cGVyY2VudCA9XG4gICAgICBTcGFuX2hlbHBlcnMucmFuZG9taXplIHQgc3RhdGUgfnBlcmNlbnQgfnNjYWxlXG4gICAgOztcblxuICAgIGxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gICAgICBsZXQgKHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gOiBQYXJ0cy50KSA9IHRvX3BhcnRzIHQgaW5cbiAgICAgIFNwYW5faGVscGVycy5zaG9ydF9zdHJpbmcgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5uc1xuICAgIDs7XG5cbiAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGFueSBtYXRlcmlhbCB3YXksIG1ha2Ugc3VyZVxuICAgICAgIHlvdSB1cGRhdGUgU3RhYmxlIGFwcHJvcHJpYXRlbHkuICopXG4gICAgbGV0IG9mX3N0cmluZ192MV92MiAocyA6IHN0cmluZykgfmlzX3YyID1cbiAgICAgIHRyeVxuICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IGZhaWx3aXRoIFwiZW1wdHkgc3RyaW5nXCJcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGZsb2F0IG4gPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmRyb3Bfc3VmZml4IHMgbiB3aXRoXG4gICAgICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJubyBudW1iZXIgZ2l2ZW5cIlxuICAgICAgICAgICAgfCBzIC0+XG4gICAgICAgICAgICAgIGxldCB2ID0gRmxvYXQub2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICAgICAgVmFsaWRhdGUubWF5YmVfcmFpc2UgKEZsb2F0LnZhbGlkYXRlX29yZGluYXJ5IHYpO1xuICAgICAgICAgICAgICB2XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgKG1hdGNoIHMuW0ludC4oIC0gKSBsZW4gMV0gd2l0aFxuICAgICAgICAgICB8ICdzJyAtPlxuICAgICAgICAgICAgIGlmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICdtJ1xuICAgICAgICAgICAgIHRoZW4gb2ZfbXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAndSdcbiAgICAgICAgICAgICB0aGVuIG9mX3VzIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgaWYgaXNfdjIgJiYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ24nXG4gICAgICAgICAgICAgdGhlbiBvZl9ucyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIFQub2ZfZmxvYXQgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ20nIC0+IG9mX21pbiAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnaCcgLT4gb2ZfaHIgKGZsb2F0IDEpXG4gICAgICAgICAgIHwgJ2QnIC0+IG9mX2RheSAoZmxvYXQgMSlcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgaWYgaXNfdjJcbiAgICAgICAgICAgICB0aGVuIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBucywgdXMsIG1zLCBzLCBtLCBoLCBvciBkLlwiXG4gICAgICAgICAgICAgZWxzZSBmYWlsd2l0aCBcIlRpbWUgc3BhbnMgbXVzdCBlbmQgaW4gbXMsIHMsIG0sIGgsIG9yIGQuXCIpXG4gICAgICB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBpbnZhbGlkX2FyZ2YgXCJTcGFuLm9mX3N0cmluZyBjb3VsZCBub3QgcGFyc2UgJyVzJzogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwID0gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHBcblxuICAgIGV4Y2VwdGlvbiBUX29mX3NleHAgb2YgU2V4cC50ICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cF9leHBlY3RlZF9hdG9tX2J1dF9nb3Qgb2YgU2V4cC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkF0b20geCAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZ192MV92MiB4IH5pc192MiB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biAoVF9vZl9zZXhwIChzZXhwLCBleG4pKSBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yX2V4biAoVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBzZXhwKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzdHJpbmcgfmlzX3YyIHN1ZmZpeCBmbG9hdCA9XG4gICAgICBpZiBpc192MlxuICAgICAgKCogVGhpcyBpcyB0aGUgc2FtZSBmbG9hdC10by1zdHJpbmcgY29udmVyc2lvbiB1c2VkIGluIFtGbG9hdC5zZXhwX29mX3RdLiAgSXQncyBsaWtlXG4gICAgICAgICBbRmxvYXQudG9fc3RyaW5nXSwgYnV0IG1heSBsZWF2ZSBvZmYgdHJhaWxpbmcgcGVyaW9kLiAqKVxuICAgICAgdGhlbiAhU2V4cGxpYi5Db252LmRlZmF1bHRfc3RyaW5nX29mX2Zsb2F0IGZsb2F0IF4gc3VmZml4XG4gICAgICBlbHNlIHNwcmludGYgXCIlZyVzXCIgZmxvYXQgc3VmZml4XG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICAoKiBJJ2QgbGlrZSBpdCB0byBiZSB0aGUgY2FzZSB0aGF0IHlvdSBjb3VsZCBuZXZlciBjb25zdHJ1Y3QgYW4gaW5maW5pdGUgc3BhbiwgYnV0IElcbiAgICAgICBjYW4ndCB0aGluayBvZiBhIGdvb2Qgd2F5IHRvIGVuZm9yY2UgaXQuICBTbyB0aGlzIHRvX3N0cmluZyBmdW5jdGlvbiBjYW4gcHJvZHVjZVxuICAgICAgIHN0cmluZ3MgdGhhdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZXkgYXJlIGZlZCB0byBvZl9zdHJpbmcgKilcbiAgICBsZXQgdG9fc3RyaW5nX3YxX3YyICh0IDogVC50KSB+aXNfdjIgPVxuICAgICAgKCogdGhpcyBpcyBhIHNhZCBicm9rZW4gYWJzdHJhY3Rpb24uLi4gKilcbiAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSAodCA6PiBmbG9hdCkgd2l0aFxuICAgICAgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPiBcIjBzXCJcbiAgICAgIHwgQy5JbmZpbml0ZSAtPiBpZiBULiggPiApIHQgVC56ZXJvIHRoZW4gXCJpbmZcIiBlbHNlIFwiLWluZlwiXG4gICAgICB8IEMuTmFuIC0+IFwibmFuXCJcbiAgICAgIHwgQy5Ob3JtYWwgLT5cbiAgICAgICAgbGV0ICggPCApID0gVC4oIDwgKSBpblxuICAgICAgICBsZXQgYWJzX3QgPSBULm9mX2Zsb2F0IChGbG9hdC5hYnMgKHQgOj4gZmxvYXQpKSBpblxuICAgICAgICBpZiBpc192MiAmJiBhYnNfdCA8IFQuQ29uc3RhbnQubWljcm9zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibnNcIiAodG9fbnMgdClcbiAgICAgICAgZWxzZSBpZiBpc192MiAmJiBhYnNfdCA8IFQuQ29uc3RhbnQubWlsbGlzZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwidXNcIiAodG9fdXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuc2Vjb25kXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm1zXCIgKHRvX21zIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50Lm1pbnV0ZVxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJzXCIgKHRvX3NlYyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5ob3VyXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcIm1cIiAodG9fbWluIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmRheVxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJoXCIgKHRvX2hyIHQpXG4gICAgICAgIGVsc2Ugc3RyaW5nIH5pc192MiBcImRcIiAodG9fZGF5IHQpXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjIgPSBTZXhwLkF0b20gKHRvX3N0cmluZ192MV92MiB0IH5pc192MilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjI6ZmFsc2VcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6ZmFsc2VcbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVjFcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192Mjp0cnVlXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3YxX3YyIHQgfmlzX3YyOnRydWVcbiAgZW5kXG5cbiAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRvX3VuaXRfb2ZfdGltZSB0IDogVW5pdF9vZl90aW1lLnQgPVxuICAgICAgbGV0IG9wZW4gVCBpblxuICAgICAgbGV0IG9wZW4gQ29uc3RhbnQgaW5cbiAgICAgIGxldCBhYnNfdCA9IFQuYWJzIHQgaW5cbiAgICAgIGlmIGFic190ID49IGRheVxuICAgICAgdGhlbiBEYXlcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICAgICAgdGhlbiBIb3VyXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbnV0ZVxuICAgICAgdGhlbiBNaW51dGVcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gc2Vjb25kXG4gICAgICB0aGVuIFNlY29uZFxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICAgICAgdGhlbiBNaWxsaXNlY29uZFxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBtaWNyb3NlY29uZFxuICAgICAgdGhlbiBNaWNyb3NlY29uZFxuICAgICAgZWxzZSBOYW5vc2Vjb25kXG4gICAgOztcblxuICAgIGxldCBvZl91bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCAtPiBULnQgPVxuICAgICAgbGV0IG9wZW4gVC5Db25zdGFudCBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgTmFub3NlY29uZCAtPiBuYW5vc2Vjb25kXG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IG1pbGxpc2Vjb25kXG4gICAgICB8IFNlY29uZCAtPiBzZWNvbmRcbiAgICAgIHwgTWludXRlIC0+IG1pbnV0ZVxuICAgICAgfCBIb3VyIC0+IGhvdXJcbiAgICAgIHwgRGF5IC0+IGRheVxuICAgIDs7XG5cbiAgICBsZXQgc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgPVxuICAgICAgbWF0Y2ggKHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gICAgICB8IE5hbm9zZWNvbmQgLT4gXCJuc1wiXG4gICAgICB8IE1pY3Jvc2Vjb25kIC0+IFwidXNcIlxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBcIm1zXCJcbiAgICAgIHwgU2Vjb25kIC0+IFwic1wiXG4gICAgICB8IE1pbnV0ZSAtPiBcIm1cIlxuICAgICAgfCBIb3VyIC0+IFwiaFwiXG4gICAgICB8IERheSAtPiBcImRcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICBsZXQgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiVGltZS5TcGFuLm9mX3N0cmluZzogXCIgXiByZWFzb24gaW5cbiAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgbWVzc2FnZSBzdHJpbmddXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IHVuaXRfb2ZfdGltZV9saXN0ID1cbiAgICAgICAgbWF0Y2ggdW5pdF9vZl90aW1lX2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaW52YWxpZCBzcGFuIHBhcnQgc3VmZml4XCJcbiAgICAgICAgfCB1bml0X29mX3RpbWUgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBzdWZmaXggPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSBpblxuICAgICAgICAgIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgc3RyaW5nIH5wb3M6aW5kZXggfnN1YnN0cmluZzpzdWZmaXhcbiAgICAgICAgICB0aGVuIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGVsc2UgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggcmVzdFxuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX3N1ZmZpeCBzdHJpbmcgfmluZGV4ID1cbiAgICAgICAgKCogV2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IFwibXNcIiBjb21lcyBiZWZvcmUgXCJtXCIgaW4gW1VuaXRfb2ZfdGltZS5hbGxdIHRvIGdldCBhXG4gICAgICAgICAgIGNvcnJlY3QgbWF0Y2ggb24gbWlsbGlzZWNvbmQgdGltZXN0YW1wcy4gVGhpcyBhc3N1bXB0aW9uIGlzIGRlbW9uc3RyYXRlZCBpbiB0aGVcbiAgICAgICAgICAgZXhwZWN0IHRlc3QgYmVsb3cuICopXG4gICAgICAgIGZpbmRfdW5pdF9vZl90aW1lX2J5X3N1ZmZpeCBzdHJpbmcgfmluZGV4IFVuaXRfb2ZfdGltZS5hbGxcbiAgICAgIDs7XG5cbiAgICAgICgqIFdlIHZhbGlkYXRlIG1hZ25pdHVkZSBzdHJpbmdzIHNvIHRoYXQgd2Uga25vdyB3aGVyZSB0aGUgdW5pdC1vZi10aW1lIHN1ZmZpeFxuICAgICAgICAgYmVnaW5zLCBhbmQgc28gdGhhdCBvbmx5IHNlbnNpYmxlIHN0cmluZ3MgYXJlIGFsbG93ZWQuIFdlIGRvIG5vdCB3YW50IHRvIGJlIGFzXG4gICAgICAgICBwZXJtaXNzaXZlIGFzIFtGbG9hdC5vZl9zdHJpbmddOyBmb3IgZXhhbXBsZSwgaGV4YWRlY2ltYWwgc3BhbiBtYWduaXR1ZGVzIGFyZSBub3RcbiAgICAgICAgIGFsbG93ZWQuIEFmdGVyIHZhbGlkYXRpb24sIHdlIHN0aWxsIHVzZSBbRmxvYXQub2Zfc3RyaW5nXSB0byBwcm9kdWNlIHRoZSBhY3R1YWxcbiAgICAgICAgIHZhbHVlLiAqKVxuICAgICAgbW9kdWxlIEZsb2F0X3BhcnNlciA9IHN0cnVjdFxuICAgICAgICAoKiBbSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XSBpbmNsdWRlcyBoYXZpbmcgYSBkaWdpdCBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuICopXG4gICAgICAgIHR5cGUgc3RhdGUgPVxuICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcblxuICAgICAgICB0eXBlIHRva2VuID1cbiAgICAgICAgICB8IERpZ2l0XG4gICAgICAgICAgfCBQb2ludFxuICAgICAgICAgIHwgVW5kZXJcbiAgICAgICAgICB8IFNpZ25cbiAgICAgICAgICB8IEV4cHRcblxuICAgICAgICBsZXQgc3RhdGVfaXNfZmluYWwgPSBmdW5jdGlvblxuICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCAtPiB0cnVlXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0IC0+IGZhbHNlXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRva2VuX29mX2NoYXIgPSBmdW5jdGlvblxuICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBTb21lIERpZ2l0XG4gICAgICAgICAgfCAnLicgLT4gU29tZSBQb2ludFxuICAgICAgICAgIHwgJ18nIC0+IFNvbWUgVW5kZXJcbiAgICAgICAgICB8ICctJyB8ICcrJyAtPiBTb21lIFNpZ25cbiAgICAgICAgICB8ICdFJyB8ICdlJyAtPiBTb21lIEV4cHRcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaW52YWxpZCBzcGFuIHBhcnQgbWFnbml0dWRlXCJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgcmVjIGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXRfaW5fc3RhdGUgc3RyaW5nIH5pbmRleCB+bGVuIH5zdGF0ZSA9XG4gICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICBpZiBpbmRleCA9IGxlblxuICAgICAgICAgIHRoZW4gaWYgc3RhdGVfaXNfZmluYWwgc3RhdGUgdGhlbiBpbmRleCBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggdG9rZW5fb2ZfY2hhciBzdHJpbmcuW2luZGV4XSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gaWYgc3RhdGVfaXNfZmluYWwgc3RhdGUgdGhlbiBpbmRleCBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgfCBTb21lIHRva2VuIC0+XG4gICAgICAgICAgICAgIGxldCBzdGF0ZSA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggc3RhdGUsIHRva2VuIHdpdGhcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRGlnaXQgLT4gSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFBvaW50IC0+IEluX2RlY2ltYWxfbmVlZF9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBTaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIEV4cHQgLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5faW50ZWdlcl9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFBvaW50IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBFeHB0IC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2RlY2ltYWxfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBFeHB0IC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBQb2ludCB8IEluX2RlY2ltYWxfaGF2ZV9kaWdpdCwgU2lnbiAtPlxuICAgICAgICAgICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgU2lnbiAtPiBJbl9leHBvbmVudF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ24sIEV4cHQgLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIEV4cHRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBEaWdpdCB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9leHBvbmVudF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4OihpbmRleCArIDEpIH5sZW4gfnN0YXRlKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiA9XG4gICAgICAgICAgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlOkluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCByZWMgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGUgfmluZGV4IH5sZW4gPVxuICAgICAgICBpZiBJbnQuZXF1YWwgaW5kZXggbGVuXG4gICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzdWZmaXhfaW5kZXggPSBGbG9hdF9wYXJzZXIuZmluZF9pbmRleF9hZnRlcl9mbG9hdCBzdHJpbmcgfmluZGV4IH5sZW4gaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXg6c3VmZml4X2luZGV4IGluXG4gICAgICAgICAgbGV0IHVudGlsX2luZGV4ID1cbiAgICAgICAgICAgIEludC4oICsgKSBzdWZmaXhfaW5kZXggKFN0cmluZy5sZW5ndGggKHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmbG9hdF9zdHJpbmcgPVxuICAgICAgICAgICAgU3RyaW5nLnN1YiBzdHJpbmcgfnBvczppbmRleCB+bGVuOihJbnQuKCAtICkgc3VmZml4X2luZGV4IGluZGV4KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0ID0gRmxvYXQub2Zfc3RyaW5nIGZsb2F0X3N0cmluZyBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGUgPSBtYWduaXR1ZGUgKyBzY2FsZV9ieV91bml0X29mX3RpbWUgZmxvYXQgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGUgfmluZGV4OnVudGlsX2luZGV4IH5sZW4pXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiA9XG4gICAgICAgIGFjY3VtdWxhdGVfbWFnbml0dWRlIHN0cmluZyB+bWFnbml0dWRlOlQuemVybyB+aW5kZXggfmxlblxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICBtYXRjaCBzdHJpbmcgd2l0aFxuICAgICAgICB8IFwiTkFOc1wiIC0+IG9mX3NlYyBGbG9hdC5uYW5cbiAgICAgICAgfCBcIi1JTkZzXCIgLT4gb2Zfc2VjIEZsb2F0Lm5lZ19pbmZpbml0eVxuICAgICAgICB8IFwiSU5Gc1wiIC0+IG9mX3NlYyBGbG9hdC5pbmZpbml0eVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJlbXB0eSBpbnB1dFwiO1xuICAgICAgICAgIGxldCBuZWdhdGl2ZSwgaW5kZXggPVxuICAgICAgICAgICAgbWF0Y2ggc3RyaW5nLlswXSB3aXRoXG4gICAgICAgICAgICB8ICctJyAtPiB0cnVlLCAxXG4gICAgICAgICAgICB8ICcrJyAtPiBmYWxzZSwgMVxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlLCAwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBpbmRleCA+PSBsZW4gdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IHBhcnNlX21hZ25pdHVkZSBzdHJpbmcgfmluZGV4IH5sZW4gaW5cbiAgICAgICAgICBpZiBuZWdhdGl2ZSB0aGVuIFQubmVnIG1hZ25pdHVkZSBlbHNlIG1hZ25pdHVkZVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG5cbiAgICBtb2R1bGUgVG9fc3RyaW5nID0gc3RydWN0XG4gICAgICBsZXQgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBmbG9hdCA9XG4gICAgICAgIGxldCBzdHJpbmcgPSBGbG9hdC50b19zdHJpbmcgZmxvYXQgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFwiLlwiIGluXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgdGhlbiBTdHJpbmcuY2hvcF9zdWZmaXhfZXhuIHN0cmluZyB+c3VmZml4XG4gICAgICAgIGVsc2Ugc3RyaW5nXG4gICAgICA7O1xuXG4gICAgICAoKiBBcyB3ZSBidWlsZCB1cCBhIHN0cmluZywgd2Uga2VlcCBhIHJ1bm5pbmcgc3VtIG9mIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgcmVhZFxuICAgICAgICAgYmFjayBpbiwgc28gdGhhdCB3ZSBjYW4gY29tcHV0ZSB0aGUgcmVtYWluZGVyIHRoYXQgbmVlZHMgdG8gYmUgZ2VuZXJhdGVkLiAqKVxuICAgICAgbGV0IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlID1cbiAgICAgICAgc3VtX3QgKyBzY2FsZV9ieV91bml0X29mX3RpbWUgbWFnbml0dWRlIHVuaXRfb2ZfdGltZVxuICAgICAgOztcblxuICAgICAgKCogRm9yIHNvbWUgdW5pdHMgKHZlcnkgbGFyZ2UgbnVtYmVycyBvZiBkYXlzLCBvciBzZWNvbmRzIGFuZCBzbWFsbGVyKSB3ZSBqdXN0XG4gICAgICAgICByZW5kZXIgYSBmbG9hdCBkaXJlY3RseSwgd2l0aCBhIGZpeCBmb3Igcm91bmRvZmYgZXJyb3IuICopXG4gICAgICBsZXQgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWUgPVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSBhYnNfdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICBpZiBzdW1fdCA9IGFic190XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9XG4gICAgICAgICAgICBpZiBzdW1fdCA8IGFic190XG4gICAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgICAgZWxzZSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIChwcmV2IGFic190KSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdW1fdCA9IHN1bSB+c3VtX3Q6emVybyB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICAgbGV0IGZpeHVwX21hZ25pdHVkZSA9IGRpdmlkZV9ieV91bml0X29mX3RpbWUgcmVtX3QgZml4dXBfdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgc3RyaW5nX29mX2Zsb2F0X3dpdGhvdXRfdHJhaWxpbmdfZGVjaW1hbCBtYWduaXR1ZGVcbiAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgKCogW3JlbV90XSBpcyBhdCBVTFAgc2l6ZSBvZiBbYWJzX3RdLCBpdCBuZWVkcyBqdXN0IG9uZSBiaXQgb2YgcHJlY2lzaW9uICopXG4gICAgICAgICAgXiBzcHJpbnRmIFwiJS4xZ1wiIGZpeHVwX21hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSBmaXh1cF91bml0X29mX3RpbWUpXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igbm9uLWRlY2ltYWwgdW5pdHMgKG1pbnV0ZXMgYW5kIGdyZWF0ZXIpLCB3ZSByZW5kZXIgYW4gaW50ZWdlciBtYWduaXR1ZGUsIGFuZFxuICAgICAgICAgcmV0dXJuIHRoYXQgd2l0aCB0aGUgcnVubmluZyBzdW0gc28gdGhlIHJlbWFpbmRlciBjYW4gYmUgcmVuZGVyZWQgYXQgYSBzbWFsbGVyXG4gICAgICAgICB1bml0LiAqKVxuICAgICAgbGV0IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB1bml0X29mX3RpbWUgfmFic190IH5zdW1fdCA9XG4gICAgICAgIGxldCB1bml0X3NwYW4gPSBvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgKCogV2UgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBtdWx0aXBsZSBvZiBbdW5pdF9vZl90aW1lXSB0aGF0IG5lZWRzIHRvIGJlXG4gICAgICAgICAgIGFkZGVkIHRvIFtzdW1fdF0uIER1ZSB0byByb3VuZGluZywgdGhpcyBjYW4gYmUgb2ZmIGJ5IG9uZSAod2UndmUgbmV2ZXIgc2VlbiBhXG4gICAgICAgICAgIGNhc2Ugb2ZmIGJ5IHR3byBvciBtb3JlKSwgc28gd2UgcmUtY29tcHV0ZSB0aGUgcmVtYWluZGVyIGFuZCBjb3JyZWN0IGlmXG4gICAgICAgICAgIG5lY2Vzc2FyeS4gKilcbiAgICAgICAgbGV0IG1hZ25pdHVkZSA9IEZsb2F0LnJvdW5kX2Rvd24gKHJlbV90IC8vIHVuaXRfc3BhbikgaW5cbiAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGxldCBuZXdfcmVtX3QgPSBhYnNfdCAtIG5ld19zdW1fdCBpblxuICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICBpZiBuZXdfcmVtX3QgPSB6ZXJvXG4gICAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgICBlbHNlIGlmIG5ld19yZW1fdCA8IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZSAtLiAxLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IG5leHRfbWFnbml0dWRlID0gbWFnbml0dWRlICsuIDEuIGluXG4gICAgICAgICAgICBsZXQgbmV4dF9zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlOm5leHRfbWFnbml0dWRlIGluXG4gICAgICAgICAgICBsZXQgbmV4dF9yZW1fdCA9IGFic190IC0gbmV4dF9zdW1fdCBpblxuICAgICAgICAgICAgaWYgbmV4dF9yZW1fdCA8IHplcm8gdGhlbiBtYWduaXR1ZGUgZWxzZSBuZXh0X21hZ25pdHVkZSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgRmxvYXQuKCA8PSApIG1hZ25pdHVkZSAwLlxuICAgICAgICB0aGVuIFwiXCIsIHN1bV90XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCBzdHJpbmcgPVxuICAgICAgICAgICAgSW50NjMudG9fc3RyaW5nIChJbnQ2My5vZl9mbG9hdCBtYWduaXR1ZGUpXG4gICAgICAgICAgICBeIHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzdHJpbmcsIG5ld19zdW1fdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSB0ID0gRmxvYXQubG9nMTAgKHRvX3NlYyB0KVxuXG4gICAgICAoKiBUaGUgZmluYWwgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgbmVlZHMgdG8gYmUgcHJpbnRlZCB3aXRoIGVub3VnaCBkaWdpdHMgdG9cbiAgICAgICAgIHJvdW5kLXRyaXAgdGhlIHdob2xlIHNwYW4gKHdoaWNoIGlzIG1pbnV0ZXMgb3IgZ3JlYXRlcik7IHRoaXMgY2FuIGJlXG4gICAgICAgICBzaWduaWZpY2FudGx5IGZld2VyIGRpZ2l0cyB0aGFuIHdvdWxkIGJlIG5lZWRlZCBmb3IgdGhlIHNlY29uZHMtb3Itc21hbGxlclxuICAgICAgICAgcmVtYWluZGVyIGl0c2VsZi4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmdfYWZ0ZXJfaW50X3N0cmluZ3MgfnN1bV90IH5hYnNfdCA9XG4gICAgICAgIGlmIHN1bV90ID49IGFic190XG4gICAgICAgIHRoZW4gXCJcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgcmVtX3QgPSBhYnNfdCAtIHN1bV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA9IHRvX3VuaXRfb2ZfdGltZSByZW1fdCBpblxuICAgICAgICAgIGxldCB1bml0X3NwYW4gPSBvZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IHJlbV90IC8vIHVuaXRfc3BhbiBpblxuICAgICAgICAgIGxldCBuZXdfc3VtX3QgPSBzdW0gfnN1bV90IH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCBuZXdfcmVtX3QgPSBhYnNfdCAtIG5ld19zdW1fdCBpblxuICAgICAgICAgIGlmIGFicyByZW1fdCA8PSBhYnMgbmV3X3JlbV90XG4gICAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpcnN0X2RpZ2l0ID1cbiAgICAgICAgICAgICAgRmxvYXQuaXJvdW5kX2Rvd25fZXhuIChkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSByZW1fdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaGFsZl91bHAgPSAoYWJzX3QgLSBwcmV2IGFic190KSAvIDIuIGluXG4gICAgICAgICAgICBsZXQgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpZ2l0ID1cbiAgICAgICAgICAgICAgKCogVGhpcyB3b3JrcyBvdXQgdG8gcm91bmRpbmcgZG93biwgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGV4YWN0IGludGVnZXJzLFxuICAgICAgICAgICAgICAgICB3aGljaCBhcmUgZGVjcmVtZW50ZWQuIFRoaXMgbWFrZXMgc3VyZSB3ZSBhbHdheXMgc3RvcCBhdCBhIGRpZ2l0IHdpdGhcbiAgICAgICAgICAgICAgICAgc3RyaWN0bHkgbW9yZSBwcmVjaXNpb24gdGhhbiBoYWxmIHRoZSBVTFAuICopXG4gICAgICAgICAgICAgIEludC5wcmVkIChGbG9hdC5pcm91bmRfdXBfZXhuIChkZWNpbWFsX29yZGVyX29mX21hZ25pdHVkZSBoYWxmX3VscCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG51bWJlcl9vZl9kaWdpdHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICAxICsgb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpcnN0X2RpZ2l0IC0gb3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpZ2l0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgICBzcHJpbnRmIFwiJS4qZ1wiIG51bWJlcl9vZl9kaWdpdHMgbWFnbml0dWRlIF4gc3VmZml4KSlcbiAgICAgIDs7XG5cbiAgICAgICgqIFRoaXMgaGVscGVyIGF2b2lkcyB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9uLCBiZWNhdXNlIGZvciBvdXIgdXNlIGJlbG93LCBpdCBpc1xuICAgICAgICAgY29tbW9uIHRvIGhhdmUgZWl0aGVyIG9yIGJvdGggYXJndW1lbnRzIGJlIGVtcHR5LiBDdXJyZW50bHkgKDIwMTgtMDIpLCB0aGVcbiAgICAgICAgIGJ1aWx0LWluIFteXSBhbGxvY2F0ZXMgZXZlbiB3aGVuIGFwcGVuZGluZyB0byBhbiBlbXB0eSBzdHJpbmcuICopXG4gICAgICBsZXQgKCBePyApIHggeSA9XG4gICAgICAgIGlmIFN0cmluZy5pc19lbXB0eSB4IHRoZW4geSBlbHNlIGlmIFN0cmluZy5pc19lbXB0eSB5IHRoZW4geCBlbHNlIHggXiB5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgZmxvYXQgPSB0b19mbG9hdCB0IGluXG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIGZsb2F0KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgKCogV2UgcHJpbnQgc3BlY2lmaWMgc3BlY2lhbCBzdHJpbmdzIGZvciBub24tZmluaXRlIGZsb2F0cyAqKVxuICAgICAgICAgICAgRmxvYXQuaXNfbmFuIGZsb2F0XG4gICAgICAgICAgdGhlbiBcIk5BTnNcIlxuICAgICAgICAgIGVsc2UgaWYgRmxvYXQuaXNfbmVnYXRpdmUgZmxvYXRcbiAgICAgICAgICB0aGVuIFwiLUlORnNcIlxuICAgICAgICAgIGVsc2UgXCJJTkZzXCJcbiAgICAgICAgZWxzZSBpZiB0ID0gemVyb1xuICAgICAgICB0aGVuIFwiMHNcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHQgaW5cbiAgICAgICAgICBsZXQgYWJzX3QgPSBhYnMgdCBpblxuICAgICAgICAgIGxldCBzaWduID0gaWYgdCA8IHplcm8gdGhlbiBcIi1cIiBlbHNlIFwiXCIgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlX3N0cmluZyA9XG4gICAgICAgICAgICBtYXRjaCB1bml0X29mX3RpbWUgd2l0aFxuICAgICAgICAgICAgKCogV2UgY2FuIHVzZSBub3JtYWwgZmxvYXQgbm90YXRpb24gZm9yIHNlY29uZHMgYW5kIHN1Yi1zZWNvbmQgdW5pdHMsIHRoZXkgYXJlXG4gICAgICAgICAgICAgICByZWFkYWJsZSB3aXRoIGEgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgICAgIHwgTmFub3NlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTWlsbGlzZWNvbmQgfCBTZWNvbmQgLT5cbiAgICAgICAgICAgICAgdG9fZmxvYXRfc3RyaW5nIH5hYnNfdCB+dW5pdF9vZl90aW1lIH5maXh1cF91bml0X29mX3RpbWU6TmFub3NlY29uZFxuICAgICAgICAgICAgKCogRm9yIGxhcmdlIGVub3VnaCB2YWx1ZXMgdGhhdCB0aGUgVUxQIGlzIGEgZGF5IG9yIG1vcmUsIHdlIGNhbiB1c2UgZmxvYXRcbiAgICAgICAgICAgICAgIG5vdGF0aW9uIGJlY2F1c2Ugd2UgYXJlIGV4cHJlc3NpbmcgYSBzaW5nbGUsIHZlcnkgbGFyZ2UgaW50ZWdlci4gKilcbiAgICAgICAgICAgIHwgRGF5IHdoZW4gbmV4dCBhYnNfdCAtIGFic190ID49IGRheSAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpEYXlcbiAgICAgICAgICAgICgqIEZvciBldmVyeXRoaW5nIGluIGJldHdlZW4sIHdlIG5lZWQgdG8gdXNlIGludGVnZXIgdW5pdHMgb2YgZGF5cywgaG91cnMsXG4gICAgICAgICAgICAgICBhbmQvb3IgbWludXRlcywgYmVjYXVzZSB0aG9zZSB1bml0cyBhcmUgbm90IHJlYWRhYmxlIGFzIGRlY2ltYWxzLCBhbmQgd2VcbiAgICAgICAgICAgICAgIHRhY2sgb24gYSBkZWNpbWFsIHJlbWFpbmRlciBvZiBhIHNlY29uZHMtb3Itc21hbGxlciB1bml0IGlmIG5lY2Vzc2FyeS4gKilcbiAgICAgICAgICAgIHwgTWludXRlIHwgSG91ciB8IERheSAtPlxuICAgICAgICAgICAgICBsZXQgc3VtX3QgPSB6ZXJvIGluXG4gICAgICAgICAgICAgIGxldCBkYXlfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IERheSBpblxuICAgICAgICAgICAgICBsZXQgaG91cl9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgSG91ciBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBNaW51dGUgaW5cbiAgICAgICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+YWJzX3QgfnN1bV90IGluXG4gICAgICAgICAgICAgIGRheV9zdHJpbmcgXj8gaG91cl9zdHJpbmcgXj8gbWludXRlX3N0cmluZyBePyBmbG9hdF9zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIHNpZ24gXj8gbWFnbml0dWRlX3N0cmluZylcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgdG9fc3RyaW5nID0gVG9fc3RyaW5nLnRvX3N0cmluZ1xuICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHMpXG4gICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lLlNwYW4uU3RhYmxlLlYzLnRfb2Zfc2V4cDogc2V4cCBtdXN0IGJlIGFuIEF0b21cIiBzXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjNcblxubGV0IHRvX3Byb3BvcnRpb25hbF9mbG9hdCA9IHRvX2Zsb2F0XG5cbmxldCB0b19zdHJpbmdfaHVtXG4gICAgICA/KGRlbGltaXRlciA9ICdfJylcbiAgICAgID8oZGVjaW1hbHMgPSAzKVxuICAgICAgPyhhbGlnbl9kZWNpbWFsID0gZmFsc2UpXG4gICAgICA/dW5pdF9vZl90aW1lXG4gICAgICB0XG4gID1cbiAgbGV0IGZsb2F0LCBzdWZmaXggPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZSB1bml0X29mX3RpbWUgfmRlZmF1bHQ6KHRvX3VuaXRfb2ZfdGltZSB0KSB3aXRoXG4gICAgfCBEYXkgLT4gdG9fZGF5IHQsIFwiZFwiXG4gICAgfCBIb3VyIC0+IHRvX2hyIHQsIFwiaFwiXG4gICAgfCBNaW51dGUgLT4gdG9fbWluIHQsIFwibVwiXG4gICAgfCBTZWNvbmQgLT4gdG9fc2VjIHQsIFwic1wiXG4gICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0LCBcIm1zXCJcbiAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHQsIFwidXNcIlxuICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0LCBcIm5zXCJcbiAgaW5cbiAgbGV0IHByZWZpeCA9XG4gICAgRmxvYXQudG9fc3RyaW5nX2h1bSBmbG9hdCB+ZGVsaW1pdGVyIH5kZWNpbWFscyB+c3RyaXBfemVybzoobm90IGFsaWduX2RlY2ltYWwpXG4gIGluXG4gIGxldCBzdWZmaXggPVxuICAgIGlmIGFsaWduX2RlY2ltYWwgJiYgSW50LiggPSApIChTdHJpbmcubGVuZ3RoIHN1ZmZpeCkgMSB0aGVuIHN1ZmZpeCBeIFwiIFwiIGVsc2Ugc3VmZml4XG4gIGluXG4gIHByZWZpeCBeIHN1ZmZpeFxuOztcblxubGV0IGdlbl9pbmNsIGxvIGhpID1cbiAgRmxvYXQuZ2VuX2luY2wgKHRvX3NlYyBsbykgKHRvX3NlYyBoaSkgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NlY1xuOztcblxubGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAoKiBUZWNobmljYWxseSBleGNsdXNpdmUgcmF0aGVyIHRoYW4gaW5jbHVzaXZlLCBidXQgb3RoZXJ3aXNlIHNhdGlzZmllcyB0aGUgY29udHJhY3QgdG9cbiAgICAgd2l0aGluIDF1bHAgb2YgdGhlIGdpdmVuIGJvdW5kcy4gKilcbiAgRmxvYXQuZ2VuX3VuaWZvcm1fZXhjbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAoKiBXZSBnZW5lcmF0ZSBzcGFucyB1cCB0byAoc2xpZ2h0bHkgbW9yZSB0aGFuKSBhIG1pbGxlbml1bSwgcG9zaXRpdmUgb3IgbmVnYXRpdmUuIFRoaXNcbiAgICAgaXMgYmFzZWQgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgaW4gd2hpY2ggeWVhcnMgYXZlcmFnZSAzNjUuMjQyNSBkYXlzIHdoZW5cbiAgICAgYWNjb3VudGluZyBmb3IgbGVhcCBkYXlzLiBDb3ZlcmluZyBhIHR3by1taWxsZW5pdW0gc3BhbiBpcyBtb3JlIHRoYW4gZW5vdWdoIGZvciBtb3N0XG4gICAgIHByYWN0aWNhbCBwdXJwb3NlcywgY2VydGFpbmx5IG1vcmUgdGhhbiBlbm91Z2ggdG8gY292ZXIgdGhlIHJlcHJlc2VudGFibGUgcmFuZ2Ugb2ZcbiAgICAgW1NwYW5fbnNdLCBhbmQgcmVzdWx0cyBpbiBmaW5pdGUgc3BhbnMgYW5kIHRpbWVzIHRoYXQgY2FuIGJlIHNlcmlhbGl6ZWQuXG5cbiAgICAgV2UgZ2VuZXJhdGUgYnkgZmlsdGVyaW5nIHRoZSBkZWZhdWx0IGdlbmVyYXRvciBzbyB0aGF0IHNwYW5zIGFyZSBzdGlsbCBza2V3ZWQgdG93YXJkXG4gICAgIHNtYWxsIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhlIGJvdW5kcyBhcmUgbGFyZ2UuICopXG4gIGxldCBtaWxsZW5pdW0gPSBvZl9kYXkgKEZsb2F0LnJvdW5kX3VwICgzNjUuMjQyNSAqLiAxMDAwLikpIGluXG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciBxdWlja2NoZWNrX2dlbmVyYXRvciB+ZjooZnVuIHQgLT5cbiAgICBuZWcgbWlsbGVuaXVtIDw9IHQgJiYgdCA8PSBtaWxsZW5pdW0pXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lLlNwYW5cIlxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXQgc2VyaWFsaXphdGlvbiByYXRoZXJcbiAgICAgICB0aGFuIHRpbWUgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nIGhhc2gtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyXG4gICAgICAgc2VyaWFsaXphdGlvbi4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBmbG9hdCAtPiBvZl9mbG9hdCBmbG9hdFxuICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVC5jb21wYXJhdG9yXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgc3BhbnMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBmbG9hdHMuICBGcm9tIDEwOC4wN1xuICAgICB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmQgcHJldHR5XG4gICAgIGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhcyBjaGFuZ2VkIGZyb21cbiAgICAgcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlIG1vc3RcbiAgICAgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICByYXcuICopXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IFQub2ZfZmxvYXQgKEZsb2F0LnRfb2Zfc2V4cCBzZXhwKSkgd2l0aFxuICAgIHwgU29tZSB0IC0+IHRcbiAgICB8IE5vbmUgLT4gdF9vZl9zZXhwIHNleHBcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxubW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZVxuICBsZXQgcGFyc2Vfc3VmZml4ID0gU3RhYmxlLlYzLk9mX3N0cmluZy5wYXJzZV9zdWZmaXhcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5cbigqIENyZWF0ZSBhbiBhYnN0cmFjdCB0eXBlIGZvciBPZmRheSB0byBwcmV2ZW50IHVzIGZyb20gY29uZnVzaW5nIGl0IHdpdGhcbiAgIG90aGVyIGZsb2F0cy5cbiopXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUIDogc2lnXG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdFxuICAgICAgdHlwZSB0ID0gcHJpdmF0ZSB1bmRlcmx5aW5nIFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TX2NvbW1vbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgYWRkIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBzdWIgOiB0IC0+IFNwYW4udCAtPiB0IG9wdGlvblxuICAgICAgdmFsIG5leHQgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgcHJldiA6IHQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBkaWZmIDogdCAtPiB0IC0+IFNwYW4udFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIDogU3Bhbi50IC0+IHRcbiAgICAgIHZhbCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCA6IFNwYW4udCAtPiBib29sXG4gICAgICB2YWwgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiB0IC0+IFNwYW4udFxuICAgICAgdmFsIHN0YXJ0X29mX2RheSA6IHRcbiAgICAgIHZhbCBzdGFydF9vZl9uZXh0X2RheSA6IHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgICgqIE51bWJlciBvZiBzZWNvbmRzIHNpbmNlIG1pZG5pZ2h0LiAqKVxuICAgICAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICAgICAgU3RhYmxlX3dpdG5lc3MuRXhwb3J0LnN0YWJsZV93aXRuZXNzX2Zsb2F0XG4gICAgICAgIDs7XG4gICAgICBlbmQgOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICBpbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgZW5kKVxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5PZmRheSB2ZXJzaW9uIHRvIHN0YWJsZS5tbCAqKVxuXG4gICAgICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICAgICAgcHJlY2lzaW9uICopXG4gICAgICBpbmNsdWRlIEZsb2F0LlJvYnVzdF9jb21wYXJlLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPSBTcGFuLm9mX3NlYyB0XG5cbiAgICAgICgqIEFub3RoZXIgcmVhc29uYWJsZSBjaG9pY2Ugd291bGQgYmUgb25seSBhbGxvd2luZyBPZmRheS50IHRvIGJlIDwgMjRociwgYnV0IHRoaXNcbiAgICAgICAgIGNob2ljZSB3YXMgbWFkZSBlYXJseSBvbiBhbmQgcGVvcGxlIGJlY2FtZSB1c2VkIHRvIGJlaW5nIGFibGUgdG8gZWFzaWx5IGNhbGwgMjRoclxuICAgICAgICAgdGhlIGVuZCBvZiB0aGUgZGF5LiAgSXQncyBhIGJpdCBzYWQgYmVjYXVzZSBpdCBzaGFyZXMgdGhhdCBtb21lbnQgd2l0aCB0aGVcbiAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBkYXksIGFuZCByb3VuZCB0cmlwcyBvZGRseSBpZiBwYXNzZWQgdGhyb3VnaFxuICAgICAgICAgVGltZS50b19kYXRlX29mZGF5L1RpbWUub2ZfZGF0ZV9vZmRheS5cblxuICAgICAgICAgTm90ZTogW1NjaGVkdWxlLnRdIHJlcXVpcmVzIHRoYXQgdGhlIGVuZCBvZiBkYXkgYmUgcmVwcmVzZW50YWJsZSwgYXMgaXQncyB0aGVcbiAgICAgICAgIG9ubHkgd2F5IHRvIHdyaXRlIGEgc2NoZWR1bGUgaW4gdGVybXMgb2YgW09mZGF5LnRdcyB0aGF0IHNwYW5zIHR3byB3ZWVrZGF5cy4gKilcbiAgICAgICgqIG9mZGF5IG11c3QgYmUgPj0gMCBhbmQgPD0gMjRoICopXG4gICAgICBsZXQgaXNfdmFsaWQgKHQgOiB0KSA9XG4gICAgICAgIGxldCB0ID0gdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCBpblxuICAgICAgICBTcGFuLiggPD0gKSBTcGFuLnplcm8gdCAmJiBTcGFuLiggPD0gKSB0IFNwYW4uZGF5XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfdW5jaGVja2VkIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG5cbiAgICAgIGxldCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9pc192YWxpZCBzcGFuID1cbiAgICAgICAgaXNfdmFsaWQgKG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgICAgbGV0IHMgPSBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5IHMgd2l0aFxuICAgICAgICB8IEMuSW5maW5pdGUgLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IGluZmluaXRlIHZhbHVlXCJcbiAgICAgICAgfCBDLk5hbiAtPiBpbnZhbGlkX2FyZyBcIk9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4bjogTmFOIHZhbHVlXCJcbiAgICAgICAgfCBDLk5vcm1hbCB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+XG4gICAgICAgICAgaWYgbm90IChpc192YWxpZCBzKVxuICAgICAgICAgIHRoZW4gaW52YWxpZF9hcmdmICFcIk9mZGF5IG91dCBvZiByYW5nZTogJXtTcGFufVwiIHNwYW4gKClcbiAgICAgICAgICBlbHNlIHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdGFydF9vZl9kYXkgPSAwLlxuICAgICAgbGV0IHN0YXJ0X29mX25leHRfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIFNwYW4uZGF5XG5cbiAgICAgIGxldCBhZGQgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgKy4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHN1YiAodCA6IHQpIChzcGFuIDogU3Bhbi50KSA9XG4gICAgICAgIGxldCB0ID0gdCAtLiBTcGFuLnRvX3NlYyBzcGFuIGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIHQgdGhlbiBTb21lIHQgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgbmV4dCB0ID1cbiAgICAgICAgbGV0IGNhbmRpZGF0ZSA9IEZsb2F0Lm9uZV91bHAgYFVwIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgcHJldiB0ID1cbiAgICAgICAgbGV0IGNhbmRpZGF0ZSA9IEZsb2F0Lm9uZV91bHAgYERvd24gdCBpblxuICAgICAgICBpZiBpc192YWxpZCBjYW5kaWRhdGUgdGhlbiBTb21lIGNhbmRpZGF0ZSBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBkaWZmIHQxIHQyID1cbiAgICAgICAgU3Bhbi4oIC0gKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDEpICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0MilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9XG4gICAgICBPcHRpb24udmFsdWVfZXhuIChULnN1YiBULnN0YXJ0X29mX25leHRfZGF5IFNwYW4ubWljcm9zZWNvbmQpXG4gICAgOztcblxuICAgICgqIFtjcmVhdGVdIGNob3BzIG9mZiBhbnkgc3Vic2Vjb25kIHBhcnQgd2hlbiBbc2VjID0gNjBdIHRvIGhhbmRsZSBsZWFwIHNlY29uZHMuIEluXG4gICAgICAgcGFydGljdWxhciBpdCdzIHRyeWluZyB0byBiZSBnZW5lcm91cyBhYm91dCByZWFkaW5nIGluIHRpbWVzIG9uIHRoaW5ncyBsaWtlIGZpeFxuICAgICAgIG1lc3NhZ2VzIHRoYXQgbWlnaHQgaW5jbHVkZSBhbiBleHRyYSB1bmxpa2VseSBzZWNvbmQuXG5cbiAgICAgICBPdGhlciB3YXlzIG9mIHdyaXRpbmcgYSB0aW1lLCBsaWtlIDEwMDBtcywgd2hpbGUgbWF0aGVtYXRpY2FsbHkgdmFsaWQsIGRvbid0IG1hdGNoXG4gICAgICAgd2F5cyB0aGF0IHBlb3BsZSBhY3R1YWxseSB3cml0ZSB0aW1lcyBkb3duLCBzbyB3ZSBkaWRuJ3Qgc2VlIHRoZSBuZWVkIHRvIHN1cHBvcnRcbiAgICAgICB0aGVtLiBUaGF0IGlzLCBhIGNsb2NrIG1pZ2h0IGxlZ2l0aW1hdGVseSByZWFkIDIzOjU5OjYwIChvciwgd2l0aCA2MCBzZWNvbmRzIGF0XG4gICAgICAgdGltZXMgb2YgZGF5IG90aGVyIHRoYW4gMjM6NTksIGRlcGVuZGluZyBvbiB0aGUgdGltZSB6b25lKSwgYnV0IGl0IGRvZXNuJ3Qgc2VlbVxuICAgICAgIHJlYXNvbmFibGUgZm9yIGEgY2xvY2sgdG8gcmVhZCBcIjIzOjU5OjU5IGFuZCAxMDAwbXNcIi4gKilcbiAgICBsZXQgY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkgPVxuICAgICAgbGV0IG1zLCB1cywgbnMgPVxuICAgICAgICBtYXRjaCBzZWMgd2l0aFxuICAgICAgICB8IFNvbWUgNjAgLT4gU29tZSAwLCBTb21lIDAsIFNvbWUgMFxuICAgICAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICAgICAgaW5cbiAgICAgIFQub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fcGFydHMgdCA9IFNwYW4udG9fcGFydHMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdClcblxuICAgIGxldCB0b19zdHJpbmdfZ2VuIH5kcm9wX21zIH5kcm9wX3VzIH50cmltIHQgPVxuICAgICAgbGV0ICggLyApID0gSW50NjMuKCAvICkgaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCBpID0gSW50NjMudG9faW50X2V4biBpblxuICAgICAgYXNzZXJ0IChpZiBkcm9wX21zIHRoZW4gZHJvcF91cyBlbHNlIHRydWUpO1xuICAgICAgbGV0IGZsb2F0X3NlYyA9IFNwYW4udG9fc2VjIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpIGluXG4gICAgICBsZXQgdXMgPSBGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X2V4biAoZmxvYXRfc2VjICouIDFlNikgaW5cbiAgICAgIGxldCBtcywgdXMgPSB1cyAvICExMDAwLCB1cyBtb2QgITEwMDAgfD4gaSBpblxuICAgICAgbGV0IHNlYywgbXMgPSBtcyAvICExMDAwLCBtcyBtb2QgITEwMDAgfD4gaSBpblxuICAgICAgbGV0IG1pbiwgc2VjID0gc2VjIC8gITYwLCBzZWMgbW9kICE2MCB8PiBpIGluXG4gICAgICBsZXQgaHIsIG1pbiA9IG1pbiAvICE2MCwgbWluIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyID0gaSBociBpblxuICAgICAgbGV0IGRvbnRfcHJpbnRfdXMgPSBkcm9wX3VzIHx8ICh0cmltICYmIHVzID0gMCkgaW5cbiAgICAgIGxldCBkb250X3ByaW50X21zID0gZHJvcF9tcyB8fCAodHJpbSAmJiBtcyA9IDAgJiYgZG9udF9wcmludF91cykgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3MgPSB0cmltICYmIHNlYyA9IDAgJiYgZG9udF9wcmludF9tcyBpblxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfc1xuICAgICAgICB0aGVuIDVcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X21zXG4gICAgICAgIHRoZW4gOFxuICAgICAgICBlbHNlIGlmIGRvbnRfcHJpbnRfdXNcbiAgICAgICAgdGhlbiAxMlxuICAgICAgICBlbHNlIDE1XG4gICAgICBpblxuICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgaHI7XG4gICAgICBCeXRlcy5zZXQgYnVmIDIgJzonO1xuICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6MyBtaW47XG4gICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBCeXRlcy5zZXQgYnVmIDUgJzonO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo2IHNlYztcbiAgICAgICAgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIEJ5dGVzLnNldCBidWYgOCAnLic7XG4gICAgICAgICAgd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6OSBtcztcbiAgICAgICAgICBpZiBkb250X3ByaW50X3VzIHRoZW4gKCkgZWxzZSB3cml0ZV8zX2RpZ2l0X2ludCBidWYgfnBvczoxMiB1cykpO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOnRydWUgdFxuICAgIGxldCB0b19zZWNfc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOnRydWUgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG4gICAgbGV0IHRvX21pbGxpc2Vjb25kX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czp0cnVlIH50cmltOmZhbHNlIHRcblxuICAgIGxldCBzbWFsbF9kaWZmID1cbiAgICAgIGxldCBob3VyID0gMzYwMC4gaW5cbiAgICAgIGZ1biBvZmRheTEgb2ZkYXkyIC0+XG4gICAgICAgIGxldCBvZmRheTEgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTEpIGluXG4gICAgICAgIGxldCBvZmRheTIgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTIpIGluXG4gICAgICAgIGxldCBkaWZmID0gb2ZkYXkxIC0uIG9mZGF5MiBpblxuICAgICAgICAoKiAgZDEgaXMgaW4gKC1ob3VyOyBob3VyKSAqKVxuICAgICAgICBsZXQgZDEgPSBGbG9hdC5tb2RfZmxvYXQgZGlmZiBob3VyIGluXG4gICAgICAgICgqICBkMiBpcyBpbiAoMDtob3VyKSAqKVxuICAgICAgICBsZXQgZDIgPSBGbG9hdC5tb2RfZmxvYXQgKGQxICsuIGhvdXIpIGhvdXIgaW5cbiAgICAgICAgbGV0IGQgPSBpZiBGbG9hdC4oID4gKSBkMiAoaG91ciAvLiAyLikgdGhlbiBkMiAtLiBob3VyIGVsc2UgZDIgaW5cbiAgICAgICAgU3Bhbi5vZl9zZWMgZFxuICAgIDs7XG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6ZmFsc2UgfnRyaW06ZmFsc2UgdFxuXG4gICAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZS5PZmRheVwiXG4gICAgICBlbmQpXG5cbiAgICBsZXQgY3JlYXRlX2Zyb21fcGFyc2VkIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuID1cbiAgICAgIGxldCBzdWJzZWMgPVxuICAgICAgICBpZiBJbnQuZXF1YWwgc3Vic2VjX2xlbiAwXG4gICAgICAgIHRoZW4gMC5cbiAgICAgICAgZWxzZSBGbG9hdC5vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6c3Vic2VjX3BvcyB+bGVuOnN1YnNlY19sZW4pXG4gICAgICBpblxuICAgICAgRmxvYXQub2ZfaW50ICgoaHIgKiAzNjAwKSArIChtaW4gKiA2MCkgKyBzZWMpICsuIHN1YnNlY1xuICAgICAgfD4gU3Bhbi5vZl9zZWNcbiAgICAgIHw+IFQub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IE9mZGF5X2hlbHBlcnMucGFyc2UgcyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgcyAtPiBvZl9zZXhwX2Vycm9yIChcIk9mZGF5LnRfb2Zfc2V4cDogXCIgXiBzKSBzZXhwKVxuICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJPZmRheS50X29mX3NleHBcIiBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgc2V4cF9vZl90IHNwYW4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBzcGFuKVxuXG4gICAgbGV0IG9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgPVxuICAgICAgdHJ5IE9mZGF5X2hlbHBlcnMucGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mOmNyZWF0ZV9mcm9tX3BhcnNlZCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgICBcIk9mZGF5Lm9mX3N0cmluZ19pc284NjAxX2V4dGVuZGVkKCVzKTogJXNcIlxuICAgICAgICAgIChTdHJpbmcuc3VibyBzdHIgP3BvcyA/bGVuKVxuICAgICAgICAgIChFeG4udG9fc3RyaW5nIGV4bilcbiAgICAgICAgICAoKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5cbmxldCBnZW5faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGxvKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaGkpXG4gIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbjs7XG5cbmxldCBnZW5fdW5pZm9ybV9pbmNsIGxvIGhpID1cbiAgU3Bhbi5nZW5fdW5pZm9ybV9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5faW5jbCBzdGFydF9vZl9kYXkgc3RhcnRfb2ZfbmV4dF9kYXlcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFNwYW4ucXVpY2tjaGVja19vYnNlcnZlciB+Zjp0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheVxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBRdWlja2NoZWNrLlNocmlua2VyLmVtcHR5ICgpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICAoKiBQcmV2aW91cyB2ZXJzaW9ucyByZW5kZXJlZCBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgdXNpbmcgZmxvYXQgc2VyaWFsaXphdGlvbiByYXRoZXJcbiAgICAgICB0aGFuIHRpbWUgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nIGhhc2gtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyXG4gICAgICAgc2VyaWFsaXphdGlvbi4gKilcbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgfCBmbG9hdCAtPiBvZl9mbG9hdCBmbG9hdFxuICAgICAgfCBleGNlcHRpb24gXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIEMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yID0gVC5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJhdG9yLmNvbXBhcmVcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBvZmRheXMgaW4gc2V4cHMgb2YgTWFwcyBhbmQgU2V0cyB3ZXJlIHJhdyBmbG9hdHMuICBGcm9tXG4gICAgIDEwOC4wNyB0aHJvdWdoIDEwOS4xMywgdGhlIG91dHB1dCBmb3JtYXQgcmVtYWluZWQgcmF3IGFzIGJlZm9yZSwgYnV0IGJvdGggdGhlIHJhdyBhbmRcbiAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhcyBjaGFuZ2VkXG4gICAgIGZyb20gcmF3IHRvIHByZXR0eSwgd2hpbGUgY29udGludWluZyB0byBhY2NlcHQgYm90aCBmb3JtYXRzLiAgT25jZSB3ZSBiZWxpZXZlIG1vc3RcbiAgICAgcHJvZ3JhbXMgYXJlIGJleW9uZCAxMDkuMTQsIHdlIHdpbGwgc3dpdGNoIHRoZSBpbnB1dCBmb3JtYXQgdG8gbm8gbG9uZ2VyIGFjY2VwdFxuICAgICByYXcuICopXG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IFQub2ZfZmxvYXQgKEZsb2F0LnRfb2Zfc2V4cCBzZXhwKSkgd2l0aFxuICAgIHwgU29tZSB0IC0+IHRcbiAgICB8IE5vbmUgLT4gdF9vZl9zZXhwIHNleHBcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxubW9kdWxlIFNldCA9IFNldC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZSAoQylcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG5sZXQgdG9fbWlsbGlzZWNfc3RyaW5nID0gdG9fbWlsbGlzZWNvbmRfc3RyaW5nXG4iLCIoKiBTZWUgdGltZV9mbG9hdC5tbCBmb3IgdGhlIHByaW1hcnkgaW5zdGFudGlhdGlvbiBvZiB0aGlzIGZ1bmN0b3IgdGhhdCBpcyB2aXNpYmxlIG91dHNpZGVcbiAgIG9mIENvcmUgYXMgVGltZSAoc2VlIGNvcmUubWwpLiAqKVxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBUaW1lX2ludGZcblxubW9kdWxlIE1ha2UgKFRpbWUwIDogVGltZTBfaW50Zi5TKSA9IHN0cnVjdFxuICBtb2R1bGUgVGltZTAgPSBUaW1lMFxuICBpbmNsdWRlIFRpbWUwXG5cbiAgbGV0IGVwb2NoID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLnplcm9cbiAgbGV0IGlzX2VhcmxpZXIgdDEgfnRoYW46dDIgPSB0MSA8LiB0MlxuICBsZXQgaXNfbGF0ZXIgdDEgfnRoYW46dDIgPSB0MSA+LiB0MlxuXG4gIG1vZHVsZSBab25lIDogc2lnXG4gICAgaW5jbHVkZSBUaW1lX2ludGYuWm9uZSB3aXRoIG1vZHVsZSBUaW1lIDo9IFRpbWUwXG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWm9uZVxuXG4gICAgbGV0IG9mX3NwYW5faW5fc2Vjb25kcyBzcGFuX2luX3NlY29uZHMgPVxuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHNwYW5faW5fc2Vjb25kc1xuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgOztcblxuICAgIGxldCBvZl90aW1lX2luX3NlY29uZHMgdGltZV9pbl9zZWNvbmRzID1cbiAgICAgIFRpbWVfaW5fc2Vjb25kcy50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVfaW5fc2Vjb25kc1xuICAgICAgKCogTkIuIG5vIGFjdHVhbCByb3VuZGluZyBvciBleG5zIGNhbiBvY2N1ciBoZXJlICopXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lMC5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lID1cbiAgICAgIFRpbWUwLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZVxuICAgICAgfD4gVGltZTAuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSA9XG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCByZWxhdGl2ZVxuICAgICAgfD4gVGltZTAuU3Bhbi50b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lX2luX3NlY29uZHMuRGF0ZV9hbmRfb2ZkYXkub2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4IHQgdGltZSA9IGluZGV4IHQgKHRvX3RpbWVfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biB0aW1lKVxuXG4gICAgbGV0IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgPVxuICAgICAgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCAodG9fZGF0ZV9hbmRfb2ZkYXlfaW5fc2Vjb25kc19yb3VuZF9kb3duX2V4biByZWxhdGl2ZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gICAgICBvZl90aW1lX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgYWJicmV2aWF0aW9uIHQgdGltZSA9XG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGluZGV4X2FiYnJldmlhdGlvbl9leG4gdCAoaW5kZXggdCB0aW1lKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhYnNfZGlmZiB0MSB0MiA9IFNwYW4uYWJzIChkaWZmIHQxIHQyKVxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbXV0YWJsZSB6b25lIDogWm9uZS50XG4gICAgICA7IG11dGFibGUgY2FjaGVfc3RhcnRfaW5jbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV91bnRpbF9leGNsIDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGVmZmVjdGl2ZV9kYXlfc3RhcnQgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgZGF0ZSA6IERhdGUwLnRcbiAgICAgIH1cbiAgZW5kXG5cbiAgbGV0IGRhdGVfY2FjaGUgOiBEYXRlX2NhY2hlLnQgPVxuICAgIHsgem9uZSA9IFpvbmUudXRjXG4gICAgOyBjYWNoZV9zdGFydF9pbmNsID0gZXBvY2hcbiAgICA7IGNhY2hlX3VudGlsX2V4Y2wgPSBlcG9jaFxuICAgIDsgZWZmZWN0aXZlX2RheV9zdGFydCA9IGVwb2NoXG4gICAgOyBkYXRlID0gRGF0ZTAudW5peF9lcG9jaFxuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXRfZGF0ZV9jYWNoZSAoKSA9XG4gICAgZGF0ZV9jYWNoZS56b25lIDwtIFpvbmUudXRjO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBEYXRlMC51bml4X2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIHBoeXNfZXF1YWwgem9uZSBkYXRlX2NhY2hlLnpvbmVcbiAgICAmJiBUaW1lMC4oID49ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiBUaW1lMC4oIDwgKSB0aW1lIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbFxuICA7O1xuXG4gIGxldCBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lID1cbiAgICBtYXRjaCBpc19pbl9jYWNoZSB0aW1lIH56b25lIHdpdGhcbiAgICB8IHRydWUgLT4gKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgaW5kZXggPSBab25lLmluZGV4IHpvbmUgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW1pvbmUuaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBab25lLmluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gem9uZSBpbmRleCBpblxuICAgICAgbGV0IHJlbCA9IERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0YyBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlX2FuZF9vZmRheS50b19kYXRlIHJlbCBpblxuICAgICAgbGV0IHNwYW4gPSBEYXRlX2FuZF9vZmRheS50b19vZmRheSByZWwgfD4gT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3N0YXJ0ID1cbiAgICAgICAgVGltZTAuc3ViIChEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWwgfm9mZnNldF9mcm9tX3V0Yykgc3BhblxuICAgICAgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3VudGlsID0gVGltZTAuYWRkIGVmZmVjdGl2ZV9kYXlfc3RhcnQgU3Bhbi5kYXkgaW5cbiAgICAgIGxldCBjYWNoZV9zdGFydF9pbmNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgICB8PiBUaW1lMC5tYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWxcbiAgICAgICAgICB8PiBUaW1lMC5taW4gKFpvbmUuaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGRhdGVfY2FjaGUuem9uZSA8LSB6b25lO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGNhY2hlX3N0YXJ0X2luY2w7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2wgPC0gY2FjaGVfdW50aWxfZXhjbDtcbiAgICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlZmZlY3RpdmVfZGF5X3N0YXJ0O1xuICAgICAgZGF0ZV9jYWNoZS5kYXRlIDwtIGRhdGVcbiAgOztcblxuICBsZXQgdG9fZGF0ZSB0aW1lIH56b25lID1cbiAgICBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lO1xuICAgIGRhdGVfY2FjaGUuZGF0ZVxuICA7O1xuXG4gIGxldCBlbmRfb2ZfZGF5ID0gT2ZkYXkucHJldiBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB8PiBPcHRpb24udmFsdWVfZXhuIH5oZXJlOlslaGVyZV1cblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBsZXQgb2ZfZGF5ID1cbiAgICAgIFRpbWUwLmRpZmYgdGltZSBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIGluXG4gICAgaWYgT2ZkYXkuZXF1YWwgb2ZfZGF5IE9mZGF5LnN0YXJ0X29mX25leHRfZGF5IHRoZW4gZW5kX29mX2RheSBlbHNlIG9mX2RheVxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPi4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBzaGlmdGVkIHJlY2VudGx5ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGZvcndhcmQgcmVjZW50bHk6IHdlIHNraXBwZWQgYSB0aW1lICopXG4gICAgICAgICAgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgYmFjayByZWNlbnRseTogdGhpcyBkYXRlL29mZGF5IGFscmVhZHkgaGFwcGVuZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoc3ViIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfLCBTb21lIChzdGFydCwgYW1vdW50KSB3aGVuIHN1YiBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA8PS4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBpcyBhYm91dCB0byBzaGlmdCAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGZvcndhcmQ6IG5vIGVmZmVjdCAqKVxuICAgICAgICAgIGBPbmx5XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIGFib3V0IHRvIHNoaWZ0IGJhY2s6IHRoaXMgZGF0ZS9vZmRheSB3aWxsIGJlIHJlcGVhdGVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKGFkZCB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXyAtPiBgT25seVxuICAgIGluXG4gICAgZGF0ZSwgb2ZkYXksIGFtYmlndWl0eVxuICA7O1xuXG4gIGxldCBjb252ZXJ0IH5mcm9tX3R6IH50b190eiBkYXRlIG9mZGF5ID1cbiAgICBsZXQgc3RhcnRfdGltZSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6ZnJvbV90eiBkYXRlIG9mZGF5IGluXG4gICAgdG9fZGF0ZV9vZmRheSB+em9uZTp0b190eiBzdGFydF90aW1lXG4gIDs7XG5cbiAgbGV0IHV0Y19vZmZzZXQgdCB+em9uZSA9XG4gICAgbGV0IHV0Y19lcG9jaCA9IFpvbmUuZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB6b25lIHQgaW5cbiAgICBTcGFuLiggLSApXG4gICAgICAoRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggdXRjX2Vwb2NoKVxuICAgICAgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbiAgOztcblxuICBsZXQgb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lID1cbiAgICBsZXQgdXRjX29mZnNldCA9IHV0Y19vZmZzZXQgdGltZSB+em9uZSBpblxuICAgIGxldCBpc191dGMgPSBTcGFuLiggPSApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIGluXG4gICAgaWYgaXNfdXRjXG4gICAgdGhlbiBcIlpcIlxuICAgIGVsc2VcbiAgICAgIFN0cmluZy5jb25jYXRcbiAgICAgICAgWyAoaWYgU3Bhbi4oIDwgKSB1dGNfb2Zmc2V0IFNwYW4uemVybyB0aGVuIFwiLVwiIGVsc2UgXCIrXCIpXG4gICAgICAgIDsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWRcbiAgICAgICAgICAgIChPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uYWJzIHV0Y19vZmZzZXQpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfcGFydHMgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgOyBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIE9mZGF5LnRvX3N0cmluZyBvZmRheTsgb2Zmc2V0X3N0cmluZyBdXG4gICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICBTdHJpbmcuY29uY2F0XG4gICAgICB+c2VwOlwiIFwiXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBvZmRheSBeIG9mZnNldF9zdHJpbmcgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzIHRpbWUgfnpvbmUgPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgbGV0IHRvX3N0cmluZ191dGMgdCA9IHRvX3N0cmluZ19hYnMgdCB+em9uZTpab25lLnV0Y1xuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX3V0Y1xuXG4gIGxldCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyB0aW1lIH56b25lID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJUXCIgKHRvX3N0cmluZ19hYnNfcGFydHMgfnpvbmUgdGltZSlcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX3RyaW1tZWQgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zdHJpbmdfdHJpbW1lZCBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3NlY19zdHJpbmcgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmdfd2l0aF96b25lIHQgfnpvbmUgPSB0b19zZWNfc3RyaW5nIHQgfnpvbmUgXiBvZmZzZXRfc3RyaW5nIHQgfnpvbmVcblxuICBsZXQgdG9fZmlsZW5hbWVfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgXiBcIl9cIlxuICAgIF4gU3RyaW5nLnRyIH50YXJnZXQ6JzonIH5yZXBsYWNlbWVudDonLScgKE9mZGF5LnRvX3N0cmluZyBvZmRheSlcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgU3Bhbi5xdWlja2NoZWNrX3Nocmlua2VyXG4gICAgICB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICB+Zl9pbnZlcnNlOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIFNwYW4ucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuXG4gIGxldCBnZW5faW5jbCBsbyBoaSA9XG4gICAgU3Bhbi5nZW5faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICAgU3Bhbi5nZW5fdW5pZm9ybV9pbmNsICh0b19zcGFuX3NpbmNlX2Vwb2NoIGxvKSAodG9fc3Bhbl9zaW5jZV9lcG9jaCBoaSlcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcbm1vZHVsZSBPZmRheSA9IE9mZGF5X2Zsb2F0XG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICB0eXBlIHVuZGVybHlpbmcgPSBGbG9hdC50XG5cbiAgaW5jbHVkZSAoXG4gICAgRmxvYXQgOlxuICAgIHNpZ1xuICAgICAgdHlwZSB0ID0gZmxvYXQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0Lk9cbiAgICAgIGVuZFxuICAgIGVuZClcblxuICAoKiBkdWUgdG8gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIGZsb2F0IHdlIGNhbid0IGV4cGVjdCBiZXR0ZXIgdGhhbiBtaWNyb3NlY29uZFxuICAgICBwcmVjaXNpb24gKilcbiAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSAxRS02XG4gICAgZW5kKVxuXG4gIGxldCBkaWZmIHQxIHQyID0gU3Bhbi5vZl9zZWMgKHQxIC0gdDIpXG4gIGxldCBhZGQgdCBzcGFuID0gdCArLiBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCBzdWIgdCBzcGFuID0gdCAtLiBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCBwcmV2IHQgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHRcbiAgbGV0IG5leHQgdCA9IEZsb2F0Lm9uZV91bHAgYFVwIHRcbiAgbGV0IHRvX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLm9mX3NlY1xuICBsZXQgb2Zfc3Bhbl9zaW5jZV9lcG9jaCA9IFNwYW4udG9fc2VjXG5lbmRcblxuaW5jbHVkZSBBYnNvbHV0ZVxuXG5tb2R1bGUgRGF0ZV9hbmRfb2ZkYXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcblxuICBsZXQgb2Zfc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggc3BhbiA9IFNwYW4udG9fc2VjIHNwYW5cbiAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX3NlYyB0XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSA9XG4gICAgbGV0IGRheXMgPVxuICAgICAgRmxvYXQub2ZfaW50IChEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2gpXG4gICAgaW5cbiAgICAoZGF5cyAqLiA4NjQwMC4pICsuIFNwYW4udG9fc2VjIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgOztcblxuICBsZXQgdG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0YyA9IHN1YiByZWxhdGl2ZSBvZmZzZXRfZnJvbV91dGNcbiAgbGV0IG9mX2Fic29sdXRlIGFic29sdXRlIH5vZmZzZXRfZnJvbV91dGMgPSBhZGQgYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjXG5cbiAgKCogWWVhcnMgb3V0IG9mIHJhbmdlIGZvciBbRGF0ZS5jcmVhdGVfZXhuXS4gKilcbiAgbGV0W0Bjb2xkXSBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2ggPVxuICAgICgqICQgVFo9VVRDIGRhdGUgLS1kYXRlPUAtNjIxNjcyMTkyMDBcbiAgICAgICBTYXQgSmFuICAxIDAwOjAwOjAwIFVUQyAwMDAwICopXG4gICAgbGV0IGdtdGltZV9sb3dlcl9ib3VuZCA9IC02Ml8xNjdfMjE5XzIwMC4gaW5cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1AMjUzNDAyMzAwNzk5XG4gICAgICAgRnJpIERlYyAzMSAyMzo1OTo1OSBVVEMgOTk5OSAqKVxuICAgIGxldCBnbXRpbWVfdXBwZXJfYm91bmQgPSAyNTNfNDAyXzMwMF83OTkuIGluXG4gICAgaWYgRmxvYXQuKCA+PSApIHNlY19zaW5jZV9lcG9jaCAoZ210aW1lX3VwcGVyX2JvdW5kICsuIDEuKVxuICAgIHx8IEZsb2F0LiggPCApIHNlY19zaW5jZV9lcG9jaCBnbXRpbWVfbG93ZXJfYm91bmRcbiAgICB0aGVuIGZhaWx3aXRoZiBcIlRpbWUuZ210aW1lOiBvdXQgb2YgcmFuZ2UgKCVmKVwiIHNlY19zaW5jZV9lcG9jaCAoKVxuICA7O1xuXG4gIGxldCBzZWNfcGVyX2RheSA9IEludDYzLm9mX2ludCA4Nl80MDBcblxuICBsZXQgdG9fZGF5c19mcm9tX2Vwb2NoIHQgPVxuICAgIGFzc2VydF9pbl9ib3VuZHMgfnNlY19zaW5jZV9lcG9jaDp0O1xuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IEludDYzLm9mX2Zsb2F0IHQgLyBzZWNfcGVyX2RheSBpblxuICAgICgqIHdoZW4gW3RdIGlzIG5lZ2F0aXZlIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIHRoYXQgY2FsY3VsYXRlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgIHdhbnQgLTEpIC0tIGFkanVzdCBmb3IgdGhhdCBoZXJlLiAqKVxuICAgIGlmIEZsb2F0LiggPCApIHQgKEludDYzLnRvX2Zsb2F0IChkYXlzX2Zyb21fZXBvY2hfYXBwcm94ICogc2VjX3Blcl9kYXkpKVxuICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgZWxzZSBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gIDs7XG5cbiAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2luX3NlYyA9IEludDYzLnRvX2Zsb2F0IChkYXlzX2Zyb21fZXBvY2ggKiBzZWNfcGVyX2RheSkgaW5cbiAgICBsZXQgcmVtYWluZGVyID0gdCAtLiBkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIGluXG4gICAgU3Bhbi5vZl9zZWMgcmVtYWluZGVyIHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBJbnQ2My50b19pbnRfZXhuIGRheXNfZnJvbV9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19vZmRheSB0ID1cbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGVfb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgbGV0IGRhdGUgPSBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoIGluXG4gICAgbGV0IG9mZGF5ID0gb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGRhdGUsIG9mZGF5XG4gIDs7XG5lbmRcblxubGV0IG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsID1cbiAgaWYgU3Bhbi4oIDw9ICkgaW50ZXJ2YWwgU3Bhbi56ZXJvXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZS5uZXh0X211bHRpcGxlIGdvdCBub25wb3NpdGl2ZSBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBTcGFuLnRdO1xuICBsZXQgYmFzZV90b19hZnRlciA9IGRpZmYgYWZ0ZXIgYmFzZSBpblxuICBpZiBTcGFuLiggPCApIGJhc2VfdG9fYWZ0ZXIgU3Bhbi56ZXJvXG4gIHRoZW4gYmFzZSAoKiBbYWZ0ZXIgPCBiYXNlXSwgY2hvb3NlIFtrID0gMF0uICopXG4gIGVsc2UgKFxuICAgIGxldCBuZXh0ID1cbiAgICAgIGFkZFxuICAgICAgICBiYXNlXG4gICAgICAgIChTcGFuLnNjYWxlXG4gICAgICAgICAgIGludGVydmFsXG4gICAgICAgICAgIChGbG9hdC5yb3VuZCB+ZGlyOmBEb3duIChTcGFuLiggLy8gKSBiYXNlX3RvX2FmdGVyIGludGVydmFsKSkpXG4gICAgaW5cbiAgICBpZiBuZXh0ID4gYWZ0ZXIgfHwgKGNhbl9lcXVhbF9hZnRlciAmJiBuZXh0ID0gYWZ0ZXIpIHRoZW4gbmV4dCBlbHNlIGFkZCBuZXh0IGludGVydmFsKVxuOztcblxubGV0IG5leHRfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYWZ0ZXIgPSBmYWxzZSkgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsXG47O1xuXG5sZXQgcHJldl9tdWx0aXBsZSA/KGNhbl9lcXVhbF9iZWZvcmUgPSBmYWxzZSkgfmJhc2UgfmJlZm9yZSB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsXG4gICAgfmNhbl9lcXVhbF9hZnRlcjoobm90IGNhbl9lcXVhbF9iZWZvcmUpXG4gICAgfmJhc2VcbiAgICB+YWZ0ZXI6KHN1YiBiZWZvcmUgaW50ZXJ2YWwpXG4gICAgfmludGVydmFsXG47O1xuXG5sZXQgbm93ICgpID1cbiAgbGV0IGZsb2F0X25zID0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSB8PiBJbnQ2My50b19mbG9hdCBpblxuICBvZl9zcGFuX3NpbmNlX2Vwb2NoIChTcGFuLm9mX3NlYyAoZmxvYXRfbnMgKi4gMUUtOSkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBTcGFuID0gU3Bhbi5TdGFibGVcbiAgbW9kdWxlIE9mZGF5ID0gT2ZkYXkuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSB0eXBlIFNfa2VybmVsX3dpdGhvdXRfem9uZSA9IFRpbWUwX2ludGYuU1xubW9kdWxlIHR5cGUgU19rZXJuZWwgPSBUaW1lX2ludGYuU1xuXG5tb2R1bGUgWm9uZV9zdGFibGUgPSBab25lLlN0YWJsZVxuaW5jbHVkZSBUaW1lLk1ha2UgKFRpbWVfZmxvYXQwKVxuaW5jbHVkZSBUaW1lX2Zsb2F0MFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9mbG9hdDAuU3RhYmxlXG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFdpdGhfdF9vZl9zZXhwX2FicyA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgT2ZkYXkgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE9mZGF5XG4gICAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuICBlbmRcblxuICBtb2R1bGUgV2l0aF91dGNfc2V4cCA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKHRvX3N0cmluZ19hYnNfcGFydHMgdCB+em9uZTpab25lLnV0YyA6IHN0cmluZyBsaXN0KV1cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcblxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZGF0ZTsgU2V4cC5BdG9tIG9mZGF5X2FuZF9wb3NzaWJseV96b25lIF0gLT5cbiAgICAgICAgICAgIG9mX3N0cmluZ19nZW5cbiAgICAgICAgICAgICAgfmRlZmF1bHRfem9uZTooZnVuICgpIC0+IFpvbmUudXRjKVxuICAgICAgICAgICAgICB+ZmluZF96b25lOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgIG9mX3NleHBfZXJyb3IgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6IHVua25vd24gdGltZSB6b25lXCIgc2V4cClcbiAgICAgICAgICAgICAgKGRhdGUgXiBcIiBcIiBeIG9mZGF5X2FuZF9wb3NzaWJseV96b25lKVxuICAgICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwXCIgc2V4cFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT4gcmFpc2UgZVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICAoc3ByaW50ZiBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cDogJXNcIiAoRXhuLnRvX3N0cmluZyBlKSlcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTZXhwbGliLlNleHAudF9zZXhwX2dyYW1tYXJcbiAgICAgIGxldCBjb21wYXJhdG9yID0gYFVzZV9UaW1lX3VuaXhcblxuICAgICAgbW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbiAgICAgIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBab25lID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICAgIGluY2x1ZGUgWm9uZV9zdGFibGVcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gIGluY2x1ZGUgT2ZkYXlcblxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbm93ID0gYFVzZV9UaW1lX3VuaXhcblxuICBtb2R1bGUgWm9uZWQgPSBzdHJ1Y3QgZW5kXG5lbmRcblxubW9kdWxlIFNwYW4gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTcGFuXG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbmVuZFxuXG5tb2R1bGUgWm9uZSA9IHN0cnVjdFxuICBpbmNsdWRlIFpvbmVcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxuXG4gIGxldCAoIDwgKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoIDw9ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PiApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPiApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPj0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBfX2Jpbl9yZWFkX3RfXyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBhc2NlbmRpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmV0d2VlbiA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZF90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl9yZWFkZXJfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fc2hhcGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fc2l6ZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl93cml0ZV90ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJpbl93cml0ZXJfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjbGFtcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBjbGFtcF9leG4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG4gIGxldCBkZXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGVxdWFsID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZmluZF9leG4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoX2ZvbGRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0ID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGluaXRpYWxpemVkX3pvbmVzID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGxvY2FsID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG1heCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtaW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgb2Zfc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHBwID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0b19zdHJpbmcgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfYm91bmQgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdmFsaWRhdGVfbGJvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIEV4cG9zZWRfZm9yX3Rlc3RzID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfcXVldWUgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgTWFwID0gc3RydWN0IGVuZFxubW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxubGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBmb3JtYXQgPSBgVXNlX1RpbWVfdW5peFxubGV0IGdldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IGhhc2hhYmxlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBpbnRlcnJ1cHRpYmxlX3BhdXNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl9kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl9zdHJpbmdfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl9zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhdXNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZV9mb3JldmVyID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwcCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBzZXhwX29mX3RfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRfb2Zfc2V4cF9hYnMgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfdW5peFxubGV0IHRvX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19zdHJpbmdfZml4X3Byb3RvID0gYFVzZV9UaW1lX3VuaXhcbiIsImluY2x1ZGUgRGF0ZTBcblxubGV0IG9mX3RpbWUgdGltZSB+em9uZSA9IFRpbWVfZmxvYXQudG9fZGF0ZSB+em9uZSB0aW1lXG5sZXQgdG9kYXkgfnpvbmUgPSBvZl90aW1lIChUaW1lX2Zsb2F0Lm5vdyAoKSkgfnpvbmVcbmxldCBmb3JtYXQgPSBgVXNlX0RhdGVfdW5peFxubGV0IG9mX3RtID0gYFVzZV9EYXRlX3VuaXhcbmxldCBwYXJzZSA9IGBVc2VfRGF0ZV91bml4XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuISBJbnQ2My5PXG5cbmxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLlNwYW5cIlxuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG5cbmxldCBhcmNoX3NpeHR5Zm91ciA9IEludC5lcXVhbCBTeXMud29yZF9zaXplX2luX2JpdHMgNjRcbmxldCByb3VuZF9uZWFyZXN0ID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG5cbmxldCBmbG9hdCB4ID0gSW50NjMudG9fZmxvYXQgeFxuXG4oKiBbU3Bhbl0gaXMgYmFzaWNhbGx5IGEgW0ludDYzXS4gIEl0IGV2ZW4gc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvdy4gKilcbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IEludDYzLnQgKCogbmFub3NlY29uZHMgKikgW0BAZGVyaXZpbmcgaGFzaCwgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBJbnQ2My5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgemVybyA9IEludDYzLnplcm9cbmVuZFxuXG5pbmNsdWRlIFRcbm9wZW4gUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBQYXJ0cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc2lnbiA6IFNpZ24udFxuICAgIDsgaHIgOiBpbnRcbiAgICA7IG1pbiA6IGludFxuICAgIDsgc2VjIDogaW50XG4gICAgOyBtcyA6IGludFxuICAgIDsgdXMgOiBpbnRcbiAgICA7IG5zIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxubGV0IG5leHQgdCA9IEludDYzLnN1Y2MgdFxubGV0IHByZXYgdCA9IEludDYzLnByZWQgdFxubGV0IG5hbm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgMVxubGV0IG1pY3Jvc2Vjb25kID0gSW50NjMuKG9mX2ludCAxMDAwICogbmFub3NlY29uZClcbmxldCBtaWxsaXNlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG1pY3Jvc2Vjb25kKVxubGV0IHNlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG1pbGxpc2Vjb25kKVxubGV0IG1pbnV0ZSA9IEludDYzLihvZl9pbnQgNjAgKiBzZWNvbmQpXG5sZXQgaG91ciA9IEludDYzLihvZl9pbnQgNjAgKiBtaW51dGUpXG5sZXQgZGF5ID0gSW50NjMuKG9mX2ludCAyNCAqIGhvdXIpXG5cbigqIEJleW9uZCBbbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcuLm1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXSwgbm90IGV2ZXJ5IG1pY3Jvc2Vjb25kXG4gICBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBbZmxvYXRdIG51bWJlciBvZiBzZWNvbmRzLiAoSW4gZmFjdCwgaXQgaXMgYXJvdW5kIDEzNXksIGJ1dCB3ZVxuICAgbGVhdmUgYSBzbWFsbCBtYXJnaW4uKVxuXG4gICBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2lsZW50bHkgaWdub3JlZCBvdmVyZmxvdywgbm90ZSB0aGF0IFt0XSBpcyBub3QgYWN0dWFsbHkgYm91bmQgdG9cbiAgIHN0YXkgYmV0d2VlbiB0aGVzZSBsaW1pdHMuICopXG5sZXQgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBJbnQ2My4ob2ZfaW50IDEzNSAqIG9mX2ludCAzNjUgKiBkYXkpXG5sZXQgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPSBJbnQ2My5uZWcgbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcblxubGV0IGNyZWF0ZVxuICAgICAgP3NpZ246KHNpZ25fID0gU2lnbi5Qb3MgKCogcmViaW5kIHNvIG5vdCBzaGFkb3dlZCBieSBbb3BlbiBJbnQ2M10gYmVsb3cgKikpXG4gICAgICA/ZGF5OihkYXlzID0gMClcbiAgICAgID8oaHIgPSAwKVxuICAgICAgP21pbjoobWludXRlcyA9IDApXG4gICAgICA/KHNlYyA9IDApXG4gICAgICA/KG1zID0gMClcbiAgICAgID8odXMgPSAwKVxuICAgICAgPyhucyA9IDApXG4gICAgICAoKVxuICA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCB0ID1cbiAgICAob2ZfaW50IGRheXMgKiBkYXkpXG4gICAgKyAob2ZfaW50IGhyICogaG91cilcbiAgICArIChvZl9pbnQgbWludXRlcyAqIG1pbnV0ZSlcbiAgICArIChvZl9pbnQgc2VjICogc2Vjb25kKVxuICAgICsgKG9mX2ludCBtcyAqIG1pbGxpc2Vjb25kKVxuICAgICsgKG9mX2ludCB1cyAqIG1pY3Jvc2Vjb25kKVxuICAgICsgKG9mX2ludCBucyAqIG5hbm9zZWNvbmQpXG4gIGluXG4gIG1hdGNoIHNpZ25fIHdpdGhcbiAgfCBOZWcgLT4gbmVnIHRcbiAgfCBQb3MgfCBaZXJvIC0+IHRcbjs7XG5cbmxldCB0b19wYXJ0cyB0ID1cbiAgbGV0IG9wZW4gSW50NjMgaW5cbiAgbGV0IG1hZyA9IGFicyB0IGluXG4gIHsgUGFydHMuc2lnbiA9IChpZiB0IDwgemVybyB0aGVuIE5lZyBlbHNlIGlmIHQgPiB6ZXJvIHRoZW4gUG9zIGVsc2UgWmVybylcbiAgOyBociA9IHRvX2ludF9leG4gKG1hZyAvIGhvdXIpXG4gIDsgbWluID0gdG9faW50X2V4biAocmVtIG1hZyBob3VyIC8gbWludXRlKVxuICA7IHNlYyA9IHRvX2ludF9leG4gKHJlbSBtYWcgbWludXRlIC8gc2Vjb25kKVxuICA7IG1zID0gdG9faW50X2V4biAocmVtIG1hZyBzZWNvbmQgLyBtaWxsaXNlY29uZClcbiAgOyB1cyA9IHRvX2ludF9leG4gKHJlbSBtYWcgbWlsbGlzZWNvbmQgLyBtaWNyb3NlY29uZClcbiAgOyBucyA9IHRvX2ludF9leG4gKHJlbSBtYWcgbWljcm9zZWNvbmQgLyBuYW5vc2Vjb25kKVxuICB9XG47O1xuXG5sZXQgb2ZfcGFydHMgeyBQYXJ0cy5zaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA9XG4gIGNyZWF0ZSB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zICgpXG47O1xuXG5sZXQgb2ZfbnMgZiA9IHJvdW5kX25lYXJlc3QgZlxubGV0IG9mX2ludDYzX25zIGkgPSBpXG5sZXQgb2ZfaW50X3VzIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWNyb3NlY29uZClcbmxldCBvZl9pbnRfbXMgaSA9IEludDYzLihvZl9pbnQgaSAqIG1pbGxpc2Vjb25kKVxubGV0IG9mX2ludF9zZWMgaSA9IEludDYzLihvZl9pbnQgaSAqIHNlY29uZClcbmxldCBvZl9pbnRfbWluIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaW51dGUpXG5sZXQgb2ZfaW50X2hyIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBob3VyKVxubGV0IG9mX2ludF9kYXkgaSA9IEludDYzLihvZl9pbnQgaSAqIGRheSlcbmxldCBvZl91cyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBtaWNyb3NlY29uZClcbmxldCBvZl9tcyBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBtaWxsaXNlY29uZClcbmxldCBvZl9zZWMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgc2Vjb25kKVxubGV0IG9mX21pbiBmID0gcm91bmRfbmVhcmVzdCAoZiAqLiBmbG9hdCBtaW51dGUpXG5sZXQgb2ZfaHIgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgaG91cilcbmxldCBvZl9kYXkgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgZGF5KVxuXG5sZXQgb2Zfc2VjX3dpdGhfbWljcm9zZWNvbmRfcHJlY2lzaW9uIHNlYyA9XG4gIGxldCB1cyA9IHJvdW5kX25lYXJlc3QgKHNlYyAqLiAxZTYpIGluXG4gIG9mX2ludDYzX25zIEludDYzLih1cyAqIG9mX2ludCAxMDAwKVxuOztcblxubGV0IG9mX2ludDYzX3NlY29uZHMgeCA9IHggKiBzZWNvbmRcbmxldCBvZl9pbnQzMl9zZWNvbmRzIHggPSBvZl9pbnQ2M19zZWNvbmRzIChJbnQ2My5vZl9pbnQzMiB4KVxuXG5sZXQgdG9fbnMgdCA9IGZsb2F0IHRcbmxldCB0b19pbnQ2M19ucyB0ID0gdFxubGV0IHRvX3VzIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pY3Jvc2Vjb25kXG5sZXQgdG9fbXMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgbWlsbGlzZWNvbmRcbmxldCB0b19zZWMgdCA9IGZsb2F0IHQgLy4gZmxvYXQgc2Vjb25kXG5sZXQgdG9fbWluIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbnV0ZVxubGV0IHRvX2hyIHQgPSBmbG9hdCB0IC8uIGZsb2F0IGhvdXJcbmxldCB0b19kYXkgdCA9IGZsb2F0IHQgLy4gZmxvYXQgZGF5XG5sZXQgdG9faW50X3VzIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pY3Jvc2Vjb25kKSlcbmxldCB0b19pbnRfbXMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gbWlsbGlzZWNvbmQpKVxubGV0IHRvX2ludF9zZWMgdCA9IEludDYzLih0b19pbnRfZXhuICh0IC8gc2Vjb25kKSlcbmxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHQgPSB0IC8lIHNlY29uZFxubGV0IG9mX2ludF9ucyBpID0gb2ZfaW50NjNfbnMgKEludDYzLm9mX2ludCBpKVxuXG5sZXQgdG9faW50X25zID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gdCAtPiBJbnQ2My50b19pbnRfZXhuICh0b19pbnQ2M19ucyB0KVxuICBlbHNlIGZ1biBfIC0+IGZhaWx3aXRoIFwiVGltZV9ucy5TcGFuLnRvX2ludF9uczogdW5zdXBwb3J0ZWQgb24gMzJiaXQgbWFjaGluZXNcIlxuOztcblxubGV0ICggKyApIHQgdSA9IEludDYzLiggKyApIHQgdVxubGV0ICggLSApIHQgdSA9IEludDYzLiggLSApIHQgdVxubGV0IGFicyA9IEludDYzLmFic1xubGV0IG5lZyA9IEludDYzLm5lZ1xubGV0IHNjYWxlIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgKi4gZilcbmxldCBzY2FsZV9pbnQ2MyB0IGkgPSBJbnQ2My4oICogKSB0IGlcbmxldCBzY2FsZV9pbnQgdCBpID0gc2NhbGVfaW50NjMgdCAoSW50NjMub2ZfaW50IGkpXG5sZXQgZGl2ID0gSW50NjMuKCAvJSApXG5sZXQgKCAvICkgdCBmID0gcm91bmRfbmVhcmVzdCAoZmxvYXQgdCAvLiBmKVxubGV0ICggLy8gKSA9IEludDYzLiggLy8gKVxubGV0IHRvX3Byb3BvcnRpb25hbF9mbG9hdCB0ID0gSW50NjMudG9fZmxvYXQgdFxuXG5sZXQgb2ZfdW5pdF9vZl90aW1lIHUgPVxuICBtYXRjaCAodSA6IFVuaXRfb2ZfdGltZS50KSB3aXRoXG4gIHwgTmFub3NlY29uZCAtPiBuYW5vc2Vjb25kXG4gIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgfCBNaWxsaXNlY29uZCAtPiBtaWxsaXNlY29uZFxuICB8IFNlY29uZCAtPiBzZWNvbmRcbiAgfCBNaW51dGUgLT4gbWludXRlXG4gIHwgSG91ciAtPiBob3VyXG4gIHwgRGF5IC0+IGRheVxuOztcblxubGV0IHRvX3VuaXRfb2ZfdGltZSB0IDogVW5pdF9vZl90aW1lLnQgPVxuICBsZXQgYWJzX3QgPSBhYnMgdCBpblxuICBpZiBhYnNfdCA+PSBkYXlcbiAgdGhlbiBEYXlcbiAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gIHRoZW4gSG91clxuICBlbHNlIGlmIGFic190ID49IG1pbnV0ZVxuICB0aGVuIE1pbnV0ZVxuICBlbHNlIGlmIGFic190ID49IHNlY29uZFxuICB0aGVuIFNlY29uZFxuICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gIHRoZW4gTWlsbGlzZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWNyb3NlY29uZFxuICB0aGVuIE1pY3Jvc2Vjb25kXG4gIGVsc2UgTmFub3NlY29uZFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0ID0gU3Bhbl9mbG9hdC5vZl9zZWMgKHRvX3NlYyB0KVxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBzID0gb2Zfc2VjIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxuXG5tb2R1bGUgU3RhYmxlMCA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID0gU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBUaW1lX2Zsb2F0LlN0YWJsZS5TcGFuLlYxLnNleHBfb2ZfdCAodG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IHQpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwIHMgPVxuICAgICAgICBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKFRpbWVfZmxvYXQuU3RhYmxlLlNwYW4uVjEudF9vZl9zZXhwIHMpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9pbnQ2M19ucyB0XG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRvX2ludDYzX25zIHRcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMCA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsXVxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9pbnQ2M19ucyB0XG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuXG4gICAgICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBcbiAgICAgICAgICAgIHRoZW4gMVxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDFfMDAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXzAwMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBfMDAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIHNwYW4gcGFydCBtYWduaXR1ZGVzIGFyZSBhbHdheXMgPCAxMDBfMDAwICopXG5cbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBhc3NlcnQgKGJpbGxpb250aHMgPj0gMCAmJiBiaWxsaW9udGhzIDw9IDk5OV85OTlfOTk5KTtcbiAgICAgICAgICAgIGlmIGJpbGxpb250aHMgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA3XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA2XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9jaGFyIGJ1ZiB+cG9zIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyO1xuICAgICAgICAgICAgcG9zICsgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfMl9jaGFycyBidWYgfnBvcyBjaGFyMSBjaGFyMiA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXIxO1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgKHBvcyArIDEpIGNoYXIyO1xuICAgICAgICAgICAgcG9zICsgMlxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2MyBidWYgfnBvcyB+ZGlnaXRzIChJbnQ2My5vZl9pbnQgaW50KTtcbiAgICAgICAgICAgIHBvcyArIGRpZ2l0c1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmRlY2ltYWxzIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2M1xuICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICB+ZGlnaXRzOmRlY2ltYWxzXG4gICAgICAgICAgICAgIChJbnQ2My5vZl9pbnQgKGJpbGxpb250aHMgLyBJbnQucG93IDEwICg5IC0gZGVjaW1hbHMpKSk7XG4gICAgICAgICAgICBwb3MgKyBkZWNpbWFsc1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHMgaW50IHN1ZmZpeCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50IGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zIHN1ZmZpeCBpblxuICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWxsaXNlY29uZCA9IHRvX2ludDYzX25zIG1pbGxpc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWljcm9zZWNvbmQgPSB0b19pbnQ2M19ucyBtaWNyb3NlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IGludDYzXzYwID0gSW50NjMub2ZfaW50IDYwXG4gICAgICAgICAgbGV0IGludDYzXzI0ID0gSW50NjMub2ZfaW50IDI0XG5cbiAgICAgICAgICAoKiBVbml0cyBvZiBzZWNvbmRzIGFuZCBzbWFsbGVyIGNhbiBiZSB3cml0dGVuIGluIGRlY2ltYWwgbm90YXRpb24gd2l0aG91dFxuICAgICAgICAgICAgIHdvcnJ5aW5nIGFib3V0IG5vbi1wb3dlci1vZi10ZW4gZmFjdG9ycy4gKilcbiAgICAgICAgICBtb2R1bGUgRGVjaW1hbF91bml0ID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IFNlY29uZFxuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIHwgTm9uZVxuICAgICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgICAgICAgbGV0IGNyZWF0ZSB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBzID4gMFxuICAgICAgICAgICAgICB0aGVuIFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gMVxuICAgICAgICAgICAgICB0aGVuIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgaW50ZWdlciB0IH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBzXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgYmlsbGlvbnRocyB0IH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgKiAxXzAwMFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWljcm9zZWNvbmQgKiAxXzAwMF8wMDBcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IDBcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBsZW5ndGggdCB+ZGlnaXRzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfbGVuID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNlY29uZCAtPiBkaWdpdHMgKyAxXG4gICAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTmFub3NlY29uZCAtPiBkaWdpdHMgKyAyXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX2xlbiA9IGlmIGRlY2ltYWxzID4gMCB0aGVuIGRlY2ltYWxzICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgZGlnaXRzX2xlbiArIGRlY2ltYWxzX2xlblxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zID1cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHdyaXRlX2NoYXIgYnVmIH5wb3MgJ3MnXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbScgJ3MnXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAndScgJ3MnXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICduJyAncydcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlIHQgYnVmIH5wb3MgfmludGVnZXIgfmRpZ2l0cyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgaW50ZWdlciB+ZGlnaXRzIGluXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWNpbWFscyA9IDBcbiAgICAgICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3MgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5iaWxsaW9udGhzIH5kZWNpbWFscylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmRcblxuICAgICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgICBpZiBlcXVhbCB0IHplcm9cbiAgICAgICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID0gdCA8IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My4oIC8gKSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgICBJbnQ2My5yZW0gKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My5hYnMgc2Vjb25kcyBpblxuICAgICAgICAgICAgICBsZXQgbnMgPSBJbnQuYWJzIG5zIGluXG4gICAgICAgICAgICAgIGxldCBzID0gSW50NjMucmVtIHNlY29uZHMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlcyA9IEludDYzLiggLyApIHNlY29uZHMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IG0gPSBJbnQ2My5yZW0gbWludXRlcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBob3VycyA9IEludDYzLiggLyApIG1pbnV0ZXMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IGggPSBJbnQ2My5yZW0gaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgZCA9IEludDYzLiggLyApIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfaCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6aCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX20gPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOm0gaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdCA9IERlY2ltYWxfdW5pdC5jcmVhdGUgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfaW50ZWdlciA9IERlY2ltYWxfdW5pdC5pbnRlZ2VyIGRlY2ltYWxfdW5pdCB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9iaWxsaW9udGhzID0gRGVjaW1hbF91bml0LmJpbGxpb250aHMgZGVjaW1hbF91bml0IH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHN0cmluZ19sZW5ndGggPVxuICAgICAgICAgICAgICAgIGxldCBzaWduX2xlbiA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZF9sZW4gPSBpZiBkaWdpdHNfb2ZfZCA+IDAgdGhlbiBkaWdpdHNfb2ZfZCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGhfbGVuID0gaWYgZGlnaXRzX29mX2ggPiAwIHRoZW4gZGlnaXRzX29mX2ggKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBtX2xlbiA9IGlmIGRpZ2l0c19vZl9tID4gMCB0aGVuIGRpZ2l0c19vZl9tICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2xlbiA9XG4gICAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgc2lnbl9sZW4gKyBkX2xlbiArIGhfbGVuICsgbV9sZW4gKyBkZWNpbWFsX3VuaXRfbGVuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAoc3RyaW5nX2xlbmd0aCA+IDApO1xuICAgICAgICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIHN0cmluZ19sZW5ndGggaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gd3JpdGVfY2hhciBidWYgfnBvcyAnLScgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9kIGQgJ2QnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfaCBoICdoJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX20gbSAnbScgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgRGVjaW1hbF91bml0LndyaXRlXG4gICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgfmludGVnZXI6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChwb3MgPSBzdHJpbmdfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYpXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcblxuICAgICAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgKCogV2UgZG8gY29tcHV0YXRpb25zIHVzaW5nIG5lZ2F0aXZlIG51bWJlcnMgZXZlcnl3aGVyZSBhbmQgdGVzdCBhZ2FpbnN0XG4gICAgICAgICAgICAgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1pbl92YWx1ZV0gcmF0aGVyIHRoYW4gdXNpbmcgcG9zaXRpdmUgbnVtYmVyc1xuICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIGFnYWluc3QgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1heF92YWx1ZV0gYmVjYXVzZSB0aGVcbiAgICAgICAgICAgICBuZWdhdGl2ZSBpbnRlZ2VyIHJhbmdlIGlzIG9uZSB3aWRlciB0aGFuIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIHJhbmdlXG4gICAgICAgICAgICAgKC0yKio2MyB2cyAyKio2My0xKSwgYW5kIHdlIG5lZWQgdGhhdCB0byBiZSBhYmxlIHRvIGhhbmRsZSBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICBuaWNlbHkuICopXG5cbiAgICAgICAgICBsZXQgaW50NjNfMTAgPSBJbnQ2My5vZl9pbnQgMTBcbiAgICAgICAgICBsZXQgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvdyA9IEludDYzLihtaW5fdmFsdWUgLyBpbnQ2M18xMClcblxuICAgICAgICAgIGxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5vZl9zdHJpbmc6IGludmFsaWQgc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgOiBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAocmVhc29uIDogc3RyaW5nKV1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogQXNzdW1lcyB4IGFuZCB5IGFyZSBib3RoIG5vbnBvc2l0aXZlICopXG4gICAgICAgICAgbGV0IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIHggeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgc3VtID0geCArIHkgaW5cbiAgICAgICAgICAgIGlmIHN1bSA+IHhcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIHN1bVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgYWRkX25lZ19kaWdpdCB+c3RyaW5nIGludDYzIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChDaGFyLmdldF9kaWdpdF9leG4gY2hhcikgaW5cbiAgICAgICAgICAgIGlmIGludDYzIDwgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgKGludDYzICogaW50NjNfMTApICgtZGlnaXQpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBtaW5fZmFjdG9yX29mIHNwYW4gPSBJbnQ2My4oIC8gKSBJbnQ2My5taW5fdmFsdWUgKHRvX2ludDYzX25zIHNwYW4pXG4gICAgICAgICAgbGV0IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBkYXlcbiAgICAgICAgICBsZXQgbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBob3VyXG4gICAgICAgICAgbGV0IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaW51dGVcbiAgICAgICAgICBsZXQgbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIHNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWxsaXNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWNyb3NlY29uZFxuICAgICAgICAgIGxldCBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG5hbm9zZWNvbmRcblxuICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgICAgICAgIHwgRGF5IC0+IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IEhvdXIgLT4gbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbnV0ZSAtPiBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBTZWNvbmQgLT4gbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IHNjYWxlID0gdG9faW50NjNfbnMgKG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpIGluXG4gICAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93ID1cbiAgICAgICAgICAgICAgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBJbnQ2My4oIDwgKSBuZWdfaW50ZWdlciBtaW5fd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlcl9ucyA9IEludDYzLiggKiApIG5lZ19pbnRlZ2VyIHNjYWxlIGluXG4gICAgICAgICAgICBsZXQgZnJhY3Rpb25fcG9zID0gZGVjaW1hbF9wb3MgKyAxIGluXG4gICAgICAgICAgICBpZiBmcmFjdGlvbl9wb3MgPj0gZW5kX3Bvc1xuICAgICAgICAgICAgdGhlbiBuZWdfaW50ZWdlcl9uc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX25zID1cbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy5yZWFkX2ludDYzX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfnBvczpmcmFjdGlvbl9wb3NcbiAgICAgICAgICAgICAgICAgIH5zY2FsZVxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOihlbmRfcG9zIC0gZnJhY3Rpb25fcG9zKVxuICAgICAgICAgICAgICAgICAgfmFsbG93X3VuZGVyc2NvcmU6dHJ1ZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXM6cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgbmVnX2ludGVnZXJfbnMgKEludDYzLiggfi0gKSBkZWNpbWFsX25zKSlcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBuZWdfbnMgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IHN0cmluZ1wiO1xuICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgfCAnKycgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmcgOiBEaWdpdF9zdHJpbmdfaGVscGVycy5Sb3VuZC50ID1cbiAgICAgICAgICAgICAgKCogVWx0aW1hdGVseSwgd2UgYWx3YXlzIHJvdW5kIHBhcnNlZCBzcGFucyB0b3dhcmRzIHBvc2l0aXZlIGluZmluaXR5IHdoZW5cbiAgICAgICAgICAgICAgICAgdGhlIG5lYXJlc3Qgcm91bmQgbnMgYXJlIGVxdWlkaXN0YW50LiBGb3IgZXhhbXBsZSwgXCIxLjVuc1wiIGlzIHJlYWQgYXNcbiAgICAgICAgICAgICAgICAgMi4wbnMsIGFuZCBcIi0xLjVuc1wiIGlzIHJlYWQgYXMgLTFucy4gU2luY2Ugd2UgcmVhZCBhYnNvbHV0ZSB2YWx1ZXMgYmVmb3JlXG4gICAgICAgICAgICAgICAgIGFwcGx5aW5nIHRoZSBzaWduLCB3ZSBtdXN0IGNob29zZSBvdXIgcm91bmRpbmcgZGlyZWN0aW9uIGJhc2VkIG9uIHRoZVxuICAgICAgICAgICAgICAgICBzaWduLiBSb3VuZGluZyBkZWNpbWFsIHZhbHVlcyBoYXBwZW5zIGJlZm9yZSBuZWdhdGluZyB0aGVpciBtYWduaXR1ZGUuICopXG4gICAgICAgICAgICAgIG1hdGNoIGlzX25lZ2F0aXZlIHdpdGhcbiAgICAgICAgICAgICAgfCBmYWxzZSAtPiBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgICAgfCB0cnVlIC0+IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIExvb3Agb3ZlciBwYXJ0cywgbGlrZSBcIjVtXCIgaW4gXCIxaDVtMzBzXCIgKilcbiAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gZG9cbiAgICAgICAgICAgICAgbGV0IGhhc19kaWdpdCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICBsZXQgbmVnX2ludGVnZXIgPVxuICAgICAgICAgICAgICAgIGxldCBpID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RpZ2l0cyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGlnaXRzIGRvXG4gICAgICAgICAgICAgICAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBpIDo9IGFkZF9uZWdfZGlnaXQgfnN0cmluZyAhaSBjO1xuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RpZ2l0cyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAhaVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmICFwb3MgPCBsZW4gJiYgQ2hhci5lcXVhbCAnLicgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zKVxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RlY2ltYWxzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kZWNpbWFscyBkb1xuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGVjaW1hbHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICAgICBsZXQgZW5kX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgbm90ICFoYXNfZGlnaXRcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIGRpZ2l0cyBiZWZvcmUgdW5pdCBzdWZmaXhcIjtcbiAgICAgICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgICAgICAgICAgICBpZiAhcG9zICsgMSA8IGxlbiAmJiBDaGFyLmVxdWFsICdzJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICghcG9zICsgMSkpXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICd1JyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICduJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAhcG9zIDwgbGVuXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdkJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgRGF5XG4gICAgICAgICAgICAgICAgICB8ICdoJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgSG91clxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIFNlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gdW5pdCBzdWZmaXggYWZ0ZXIgZGlnaXRzXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19uYW5vc19vZl9wYXJ0ID1cbiAgICAgICAgICAgICAgICBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG5lZ19ucyA6PSBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAhbmVnX25zIG5lZ19uYW5vc19vZl9wYXJ0XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgaWYgaXNfbmVnYXRpdmVcbiAgICAgICAgICAgICAgdGhlbiAhbmVnX25zXG4gICAgICAgICAgICAgIGVsc2UgaWYgSW50NjMuKCA9ICkgIW5lZ19ucyBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiXG4gICAgICAgICAgICAgIGVsc2UgSW50NjMuKCB+LSApICFuZWdfbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvZl9pbnQ2M19ucyBuc1xuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZV9ucy5TcGFuLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQwXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQwKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5XaXRoX3N0YWJsZV93aXRuZXNzLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBTdGFibGUwXG5lbmRcblxubGV0IHRvX3N0cmluZyA9IFN0YWJsZS5WMi50b19zdHJpbmdcbmxldCBvZl9zdHJpbmcgPSBTdGFibGUuVjIub2Zfc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gU3RhYmxlLlYyLnNleHBfb2ZfdFxubGV0IHRfb2Zfc2V4cCA9IFN0YWJsZS5WMi50X29mX3NleHBcbmxldCB0X3NleHBfZ3JhbW1hciA9IFN0YWJsZS5WMi50X3NleHBfZ3JhbW1hclxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBGdW5jdGlvbnMgcmVxdWlyZWQgYnkgW1JvYnVzdGx5X2NvbXBhcmFibGVdOiBhbGxvd3MgZm9yIFtyb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VdXG4gICBncmFudWxhcml0eS5cblxuICAgQSBtaWNyb3NlY29uZCBpcyBhIHJlYXNvbmFibGUgZ3JhbnVsYXJpdHkgYmVjYXVzZSB0aGVyZSBpcyB2ZXJ5IGxpdHRsZSBuZXR3b3JrXG4gICBhY3Rpdml0eSB0aGF0IGNhbiBiZSBtZWFzdXJlZCB0byBzdWItbWljcm9zZWNvbmQgcmVzb2x1dGlvbi4gKilcbmxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBtaWNyb3NlY29uZFxubGV0ICggPj0uICkgdCB1ID0gdCA+PSBJbnQ2My4odSAtIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDw9LiApIHQgdSA9IHQgPD0gSW50NjMuKHUgKyByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA9LiApIHQgdSA9IEludDYzLihhYnMgKHQgLSB1KSkgPD0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgKCA+LiApIHQgdSA9IHQgPiBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoIDwuICkgdCB1ID0gdCA8IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD4uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA+IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxubGV0IHJvYnVzdGx5X2NvbXBhcmUgdCB1ID0gaWYgdCA8LiB1IHRoZW4gLTEgZWxzZSBpZiB0ID4uIHUgdGhlbiAxIGVsc2UgMFxuXG4oKiBXZSBkb24ndCBqdXN0IGNvbnZlcnQgdG8gW1RpbWUuU3Bhbi50XSBhbmQgdXNlIHRoZSBjb252ZXJzaW9uIHRoZXJlIGJlY2F1c2Ugb3VyXG4gICBbdG9fc3Bhbl0gY29udmVyc2lvbiBpcyBsaW1pdGVkIHRvIG1pY3Jvc2Vjb25kIHByZWNpc2lvbi4gKilcbmxldCB0b19zdHJpbmdfaHVtXG4gICAgICA/KGRlbGltaXRlciA9ICdfJylcbiAgICAgID8oZGVjaW1hbHMgPSAzKVxuICAgICAgPyhhbGlnbl9kZWNpbWFsID0gZmFsc2UpXG4gICAgICA/dW5pdF9vZl90aW1lXG4gICAgICB0XG4gID1cbiAgbGV0IGZsb2F0LCBzdWZmaXggPVxuICAgIG1hdGNoIE9wdGlvbi52YWx1ZSB1bml0X29mX3RpbWUgfmRlZmF1bHQ6KHRvX3VuaXRfb2ZfdGltZSB0KSB3aXRoXG4gICAgfCBEYXkgLT4gdG9fZGF5IHQsIFwiZFwiXG4gICAgfCBIb3VyIC0+IHRvX2hyIHQsIFwiaFwiXG4gICAgfCBNaW51dGUgLT4gdG9fbWluIHQsIFwibVwiXG4gICAgfCBTZWNvbmQgLT4gdG9fc2VjIHQsIFwic1wiXG4gICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0LCBcIm1zXCJcbiAgICB8IE1pY3Jvc2Vjb25kIC0+IHRvX3VzIHQsIFwidXNcIlxuICAgIHwgTmFub3NlY29uZCAtPiB0b19ucyB0LCBcIm5zXCJcbiAgaW5cbiAgbGV0IHByZWZpeCA9XG4gICAgRmxvYXQudG9fc3RyaW5nX2h1bSBmbG9hdCB+ZGVsaW1pdGVyIH5kZWNpbWFscyB+c3RyaXBfemVybzoobm90IGFsaWduX2RlY2ltYWwpXG4gIGluXG4gIGxldCBzdWZmaXggPVxuICAgIGlmIGFsaWduX2RlY2ltYWwgJiYgSW50LiggPSApIChTdHJpbmcubGVuZ3RoIHN1ZmZpeCkgMSB0aGVuIHN1ZmZpeCBeIFwiIFwiIGVsc2Ugc3VmZml4XG4gIGluXG4gIHByZWZpeCBeIHN1ZmZpeFxuOztcblxubGV0IHNpbmNlX3VuaXhfZXBvY2ggKCkgPSBUaW1lX25vdy5uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoICgpIHw+IG9mX2ludDYzX25zXG5cbmxldCByYW5kb20gP3N0YXRlICgpID1cbiAgSW50NjMucmFuZG9tID9zdGF0ZSAobWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG4gIC0gSW50NjMucmFuZG9tID9zdGF0ZSAobmVnIG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICsgSW50NjMub25lKVxuOztcblxubGV0IHJhbmRvbWl6ZSA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgfnBlcmNlbnQgPVxuICBTcGFuX2hlbHBlcnMucmFuZG9taXplIHQgc3RhdGUgfnBlcmNlbnQgfnNjYWxlXG47O1xuXG5sZXQgdG9fc2hvcnRfc3RyaW5nIHQgPVxuICBsZXQgKHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gOiBQYXJ0cy50KSA9IHRvX3BhcnRzIHQgaW5cbiAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG47O1xuXG5sZXQgZ2VuX2luY2wgPSBJbnQ2My5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBJbnQ2My5nZW5fdW5pZm9ybV9pbmNsXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gbW9kdWxlX25hbWVcbiAgZW5kKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmQpXG5cbnR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYyLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIGxldCBjb21wYXJhdG9yID0gU3RhYmxlLlYyLmNvbXBhcmF0b3JcbiAgZW5kKVxuXG4oKiByZS1pbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFuZCBpdHMgY29tcGFyaXNvbnMgdG8gc2hhZG93IHRoZVxuICAgdW4taW5saW5lYWJsZSBvbmVzIGZyb20gW0NvbXBhcmFibGVdICopXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gVC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBoYWxmX21pY3Jvc2Vjb25kID0gSW50NjMub2ZfaW50IDUwMFxubGV0IG5lYXJlc3RfbWljcm9zZWNvbmQgdCA9IEludDYzLigodG9faW50NjNfbnMgdCArIGhhbGZfbWljcm9zZWNvbmQpIC8lIG9mX2ludCAxMDAwKVxuXG5sZXRbQGNvbGRdIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJTcGFuLnQgZXhjZWVkcyBsaW1pdHNcIlxuICAgICAgICAodCA6IHQpXG4gICAgICAgIChtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA6IHQpXG4gICAgICAgIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA6IHQpXVxuOztcblxubGV0IGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCA9XG4gIGlmIHQgPCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyB8fCB0ID4gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlbiBpbnZhbGlkX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdFxuICBlbHNlIHRcbjs7XG5cbmxldCB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFNwYW5fZmxvYXQub2ZfdXMgKEludDYzLnRvX2Zsb2F0IChuZWFyZXN0X21pY3Jvc2Vjb25kIChjaGVja19yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQpKSlcbjs7XG5cbmxldCBtaW5fc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCBzID1cbiAgaWYgU3Bhbl9mbG9hdC4oID4gKSBzIG1heF9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgfHwgU3Bhbl9mbG9hdC4oIDwgKSBzIG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUaW1lX25zLlNwYW4gZG9lcyBub3Qgc3VwcG9ydCB0aGlzIHNwYW5cIlxuICAgICAgc1xuICAgICAgWyVzZXhwX29mOiBTcGFuX2Zsb2F0LnRdO1xuICAoKiBVc2luZyBbVGltZS5TcGFuLnRvX3NlY10gKGJlaW5nIHRoZSBpZGVudGl0eSkgc28gdGhhdFxuICAgICB3ZSBtYWtlIGRvbid0IGFwcGx5IHRvbyBtYW55IGNvbnZlcnNpb25cbiAgICAgLSBUb28gbWFueSA6IGBbU3Bhbi50XSAtPiBbYV0gLT4gW3RdYFxuICAgICAtIE9ubHkgT25lIDogYFtTcGFuLnRdPT1bYV0gLT4gW3RdYC4gKilcbiAgb2Zfc2VjX3dpdGhfbWljcm9zZWNvbmRfcHJlY2lzaW9uIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxuOztcblxubGV0IG1pbl92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2ZfaW50NjNfbnMgSW50NjMubWluX3ZhbHVlXG5sZXQgbWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5tYXhfdmFsdWVcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IG9mX3BhcnRzID0gb2ZfcGFydHNcbiAgbGV0IHRvX3BhcnRzID0gdG9fcGFydHNcbmVuZFxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG9mX3NwYW4gPSBvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCB0b19zcGFuID0gdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSBzcGFuID0gdCBbQEBkZXJpdmluZyBzZXhwXVxuICB0eXBlIHQgPSBJbnQ2My50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbiAgKCogbmFub3NlY29uZHMgb3Igbm9uZSAqKVxuXG4gIGxldCBub25lID0gSW50NjMubWluX3ZhbHVlXG4gIGxldCBpc19ub25lIHQgPSBJbnQ2My4odCA9IG5vbmUpXG4gIGxldCBpc19zb21lIHQgPSBJbnQ2My4odCA8PiBub25lKVxuICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlIHNwYW4gPSBpc19zb21lICh0b19pbnQ2M19ucyBzcGFuKVxuXG4gIGxldFtAY29sZF0gcmFpc2Vfc29tZV9lcnJvciBzcGFuID1cbiAgICByYWlzZV9zIFslbWVzc2FnZSBbJWhlcmVdIFwiU3Bhbi5PcHRpb24uc29tZSB2YWx1ZSBub3QgcmVwcmVzZW50YWJsZVwiIChzcGFuIDogc3BhbildXG4gIDs7XG5cbiAgbGV0IHNvbWUgc3BhbiA9XG4gICAgaWYgc29tZV9pc19yZXByZXNlbnRhYmxlIHNwYW4gdGhlbiB0b19pbnQ2M19ucyBzcGFuIGVsc2UgcmFpc2Vfc29tZV9lcnJvciBzcGFuXG4gIDs7XG5cbiAgbGV0IHVuY2hlY2tlZF92YWx1ZSB0ID0gb2ZfaW50NjNfbnMgdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IEJvb2wuc2VsZWN0IChpc19ub25lIHQpIGRlZmF1bHQgKHVuY2hlY2tlZF92YWx1ZSB0KVxuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfc29tZSB0XG4gICAgdGhlbiB1bmNoZWNrZWRfdmFsdWUgdFxuICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlNwYW4uT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gIDs7XG5cbiAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgdCAtPiBzb21lIHRcbiAgOztcblxuICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAob2ZfaW50NjNfbnMgdClcblxuICBtb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU29tZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3BhblxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgcXVpY2tjaGVja19nZW5lcmF0b3IgfmY6c29tZV9pc19yZXByZXNlbnRhYmxlXG4gICAgICA7O1xuXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXJcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIHF1aWNrY2hlY2tfc2hyaW5rZXIgfmY6c29tZV9pc19yZXByZXNlbnRhYmxlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gU29tZS50IG9wdGlvbiBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvciB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgYmluX2lvXVxuXG4gICAgICAgIGxldCB2MV9zb21lIHNwYW4gPVxuICAgICAgICAgIGFzc2VydCAoc29tZV9pc19yZXByZXNlbnRhYmxlIHNwYW4pO1xuICAgICAgICAgIHRvX2ludDYzX25zIHNwYW5cbiAgICAgICAgOztcblxuICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHBfb2Y6IFN0YWJsZS5WMS50IG9wdGlvbl0gKHRvX29wdGlvbiB0KVxuICAgICAgICBsZXQgdF9vZl9zZXhwIHMgPSBvZl9vcHRpb24gKFslb2Zfc2V4cDogU3RhYmxlLlYxLnQgb3B0aW9uXSBzKVxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIGkgPSBpZiBpc19ub25lIGkgdGhlbiBub25lIGVsc2UgdjFfc29tZSAob2ZfaW50NjNfbnMgaSlcbiAgICAgICAgbGV0IHRvX2ludDYzIHQgPSB0XG5cbiAgICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIDogdCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICAgIEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgICAgb2ZfaW50NjNfZXhuXG4gICAgICAgICAgICB0b19pbnQ2M1xuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICAgICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgICAgICBTZXhwLkxpc3RcbiAgICAgICAgICAgIChpZiBpc19ub25lIHQgdGhlbiBbXSBlbHNlIFsgU3RhYmxlLlYyLnNleHBfb2ZfdCAodW5jaGVja2VkX3ZhbHVlIHQpIF0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgZmFpbCAoKSA9XG4gICAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICAgIFwiVGltZV9ucy5TcGFuLk9wdGlvbi5TdGFibGUuVjIudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYSBMaXN0IG9mIDAtMSBBdG9tXCJcbiAgICAgICAgICAgICAgc2V4cFxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20gXyAtPiBmYWlsICgpXG4gICAgICAgICAgfCBTZXhwLkxpc3QgbGlzdCAtPlxuICAgICAgICAgICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgICAgIHwgW10gLT4gbm9uZVxuICAgICAgICAgICAgIHwgWyBTZXhwLkF0b20geCBdIC0+XG4gICAgICAgICAgICAgICBzb21lXG4gICAgICAgICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHggd2l0aFxuICAgICAgICAgICAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvciAoRXhuLnRvX3N0cmluZyBleG4pIHNleHApXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgKCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2ludDYzX2V4biBpID0gaVxuICAgICAgICBsZXQgdG9faW50NjMgdCA9IHRcblxuICAgICAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgSW50NjMuU3RhYmxlLlYxLnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgICBvZl9pbnQ2M19leG5cbiAgICAgICAgICAgIHRvX2ludDYzXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgPSBTdGFibGUuVjIudF9vZl9zZXhwXG5cbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW8sIGhhc2hdXG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5UaW1lX25zLlNwYW4uT3B0aW9uXCJcblxuICAgICAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgKEludDYzIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUwXG5cbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IE9wdGlvbi5TdGFibGUuVjFcbiAgICBtb2R1bGUgVjIgPSBPcHRpb24uU3RhYmxlLlYyXG4gIGVuZFxuZW5kXG5cbmxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3BhbiA9IFNwYW5fbnNcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxudHlwZSB0ID0gU3Bhbi50ICgqIHNpbmNlIHdhbGwtY2xvY2sgbWlkbmlnaHQgKikgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZSAoU3BhbiA6IFJvYnVzdGx5X2NvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG5sZXQgdG9fcGFydHMgdCA9IFNwYW4udG9fcGFydHMgdFxuXG5cbmxldCBzdGFydF9vZl9kYXkgOiB0ID0gU3Bhbi56ZXJvXG5sZXQgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0ID0gU3Bhbi5kYXlcbmxldCBhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5ID0gU3Bhbi4oIC0gKSBzdGFydF9vZl9uZXh0X2RheSBTcGFuLm5hbm9zZWNvbmRcbmxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gdFxuXG5sZXRbQGNvbGRdIGlucHV0X291dF9vZl9ib3VuZHMgc3BhbiA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltZV9ucy5PZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IGlucHV0IG91dCBvZiBib3VuZHNcIlxuICAgICAgICB+Xzooc3BhbiA6IFNwYW4udCldXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIGlzX2ludmFsaWQgc3BhbiA9XG4gICgqIFdoeSB3ZSB1c2UgW1NwYW4uKCA+ICldIHJhdGhlciB0aGFuIFsoID49ICldIGJlbG93OlxuXG4gICAgIFdlIGFsbG93IHRvIHJlcHJlc2VudCB0aGUgZW5kLW9mLWRheSBzZW50aW5lbCB2YWx1ZSAoWzI0LjAwMDAwMDAwMGhdKSwgd2hpY2ggaXMgbm90XG4gICAgIGl0c2VsZiBhIHZhbGlkIGNsb2NrIGZhY2UgdGltZS4gIEhvd2V2ZXIsIHNpbmNlIHZhbGlkIGNsb2NrIGZhY2UgdGltZXMgcmVhZGlseVxuICAgICByb3VuZCB1cCB0byBpdCwgaXQncyBiZXR0ZXIgdG8gYWxsb3cgaXQgdG8gYmUgcmVwcmVzZW50ZWQuICopXG4gIFNwYW4uKCA8ICkgc3BhbiBzdGFydF9vZl9kYXkgfHwgU3Bhbi4oID4gKSBzcGFuIHN0YXJ0X29mX25leHRfZGF5XG47O1xuXG5sZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9IG5vdCAoaXNfaW52YWxpZCBzcGFuKVxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gc3BhblxuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIHNwYW4gPVxuICBpZiBpc19pbnZhbGlkIHNwYW4gdGhlbiBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gZWxzZSBzcGFuXG47O1xuXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IHNwYW4gPSBpZiBpc19pbnZhbGlkIHNwYW4gdGhlbiBOb25lIGVsc2UgU29tZSBzcGFuXG5sZXQgYWRkX2V4biB0IHNwYW4gPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uKCArICkgdCBzcGFuKVxubGV0IHN1Yl9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggLSApIHQgc3BhbilcbmxldCBhZGQgdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWIgdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLiggLSApIHQgc3BhbilcbmxldCBuZXh0IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ubmV4dCB0KVxubGV0IHByZXYgdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi5wcmV2IHQpXG5sZXQgZGlmZiB0IHUgPSBTcGFuLiggLSApIHQgdVxuXG5sZXQgY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkgPVxuICAoKiBTaW1pbGFyIHRvIFtUaW1lLk9mZGF5LmNyZWF0ZV0sIGlmIHdlIGRldGVjdCBhIGxlYXAgc2Vjb25kIHdlIHN0cmlwIG9mZiBhbGxcbiAgICAgc3ViLXNlY29uZCBlbGVtZW50cyBzbyB0aGF0IEhIOk1NOjYwLlhYWFhYWFhYWCBpcyBhbGwgbWFwcGVkIHRvIEhIOk1NOjYwLiAqKVxuICBsZXQgbXMsIHVzLCBucyA9XG4gICAgbWF0Y2ggc2VjIHdpdGhcbiAgICB8IFNvbWUgNjAgLT4gU29tZSAwLCBTb21lIDAsIFNvbWUgMFxuICAgIHwgXyAtPiBtcywgdXMsIG5zXG4gIGluXG4gIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNwYW4uU3RhYmxlLlYyLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFNwYW4uU3RhYmxlLlYyIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3Bhbi5TdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzKVxuXG4gICAgbGV0IHRvX3N0cmluZ193aXRoX3VuaXQgPVxuICAgICAgbGV0ICggLyApID0gSW50NjMuKCAvICkgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCBpID0gSW50NjMudG9faW50X2V4biBpblxuICAgICAgZnVuIHQgfnVuaXQgLT5cbiAgICAgICAgaWYgU3Bhbi4oIDwgKSB0IHN0YXJ0X29mX2RheSB8fCBTcGFuLiggPCApIHN0YXJ0X29mX25leHRfZGF5IHRcbiAgICAgICAgdGhlbiBcIkluY29ycmVjdCBkYXlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2l4dHkgPSAhNjAgaW5cbiAgICAgICAgICBsZXQgdGhvdXNhbmQgPSAhMTAwMCBpblxuICAgICAgICAgIGxldCBucyA9IFNwYW4udG9faW50NjNfbnMgdCBpblxuICAgICAgICAgIGxldCB1cyA9IG5zIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgbnMgPSBucyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBtcyA9IHVzIC8gdGhvdXNhbmQgaW5cbiAgICAgICAgICBsZXQgdXMgPSB1cyBtb2QgdGhvdXNhbmQgfD4gaSBpblxuICAgICAgICAgIGxldCBzID0gbXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBtcyA9IG1zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG0gPSBzIC8gc2l4dHkgaW5cbiAgICAgICAgICBsZXQgcyA9IHMgbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgaCA9IG0gLyBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IG0gPSBtIG1vZCBzaXh0eSB8PiBpIGluXG4gICAgICAgICAgbGV0IHVuaXQgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICB8IChgTmFub3NlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBNaWxsaXNlY29uZCB8IGBTZWNvbmQpIGFzIHVuaXQgLT4gdW5pdFxuICAgICAgICAgICAgfCBgTWludXRlX29yX2xlc3MgLT5cbiAgICAgICAgICAgICAgaWYgbnMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgdXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWNyb3NlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG1zIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBzIDw+IDBcbiAgICAgICAgICAgICAgdGhlbiBgU2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgYE1pbnV0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxlbiA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgYE1pbnV0ZSAtPiA1XG4gICAgICAgICAgICB8IGBTZWNvbmQgLT4gOFxuICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gMTJcbiAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+IDE1XG4gICAgICAgICAgICB8IGBOYW5vc2Vjb25kIC0+IDE4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjAgaDtcbiAgICAgICAgICBCeXRlcy5zZXQgc3RyIDIgJzonO1xuICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjMgbTtcbiAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgIHwgYE1pbnV0ZSAtPiAoKVxuICAgICAgICAgICB8IChgU2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICBCeXRlcy5zZXQgc3RyIDUgJzonO1xuICAgICAgICAgICAgIERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzJfZGlnaXRfaW50IHN0ciB+cG9zOjYgcztcbiAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgIHwgYFNlY29uZCAtPiAoKVxuICAgICAgICAgICAgICB8IChgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgOCAnLic7XG4gICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6OSBtcztcbiAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYE1pbGxpc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgIHwgKGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTIgdXM7XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBNaWNyb3NlY29uZCAtPiAoKVxuICAgICAgICAgICAgICAgICAgICB8IGBOYW5vc2Vjb25kIC0+IERpZ2l0X3N0cmluZ19oZWxwZXJzLndyaXRlXzNfZGlnaXRfaW50IHN0ciB+cG9zOjE1IG5zKSkpKTtcbiAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnN0cilcbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zIH51bnRpbCA9XG4gICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgbGV0IGRpZ2l0cyA9IHJlZiAwIGluXG4gICAgICBsZXQgbnVtX2RpZ2l0cyA9IHJlZiAwIGluXG4gICAgICBsZXQgcG9zID0gcmVmIHBvcyBpblxuICAgICAgKCogcmVhZCB1cCB0byAxMCBkaWdpdHM7IHN0b3JlIHRoZSBmaXJzdCA5LCB1c2UgdGhlIDEwdGggdG8gcm91bmQgKilcbiAgICAgIHdoaWxlICFwb3MgPCB1bnRpbCAmJiAhbnVtX2RpZ2l0cyA8IDEwIGRvXG4gICAgICAgIGxldCBjID0gc3RyaW5nLlshcG9zXSBpblxuICAgICAgICBpZiBDaGFyLmlzX2RpZ2l0IGNcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgaW5jciBudW1fZGlnaXRzO1xuICAgICAgICAgIGlmICFudW1fZGlnaXRzIDwgMTBcbiAgICAgICAgICB0aGVuIGRpZ2l0cyA6PSAoIWRpZ2l0cyAqIDEwKSArIENoYXIuZ2V0X2RpZ2l0X2V4biBjXG4gICAgICAgICAgZWxzZSBpZiBDaGFyLmdldF9kaWdpdF9leG4gYyA+PSA1XG4gICAgICAgICAgdGhlbiBpbmNyIGRpZ2l0c1xuICAgICAgICAgIGVsc2UgKCkpO1xuICAgICAgICBpbmNyIHBvc1xuICAgICAgZG9uZTtcbiAgICAgICgqIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGRpZ2l0cywgYWRkIHplcm9lcyAqKVxuICAgICAgaWYgIW51bV9kaWdpdHMgPCA5IHRoZW4gZGlnaXRzIDo9ICFkaWdpdHMgKiBJbnQucG93IDEwICg5IC0gIW51bV9kaWdpdHMpO1xuICAgICAgIWRpZ2l0c1xuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlX2Zyb21fcGFyc2VkIHN0cmluZyB+aHIgfm1pbiB+c2VjIH5zdWJzZWNfcG9zIH5zdWJzZWNfbGVuID1cbiAgICAgIGxldCBuYW5vc2Vjb25kcyA9XG4gICAgICAgIGlmIEludC5lcXVhbCBzdWJzZWNfbGVuIDBcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBwYXJzZV9uYW5vc2Vjb25kcyBzdHJpbmcgfnBvczooc3Vic2VjX3BvcyArIDEpIH51bnRpbDooc3Vic2VjX3BvcyArIHN1YnNlY19sZW4pXG4gICAgICBpblxuICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IG5hbm9zZWNvbmRzKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5zZWNvbmQgc2VjKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5taW51dGUgbWluKVxuICAgICAgfD4gU3Bhbi4oICsgKSAoU3Bhbi5zY2FsZV9pbnQgU3Bhbi5ob3VyIGhyKVxuICAgICAgfD4gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gT2ZkYXlfaGVscGVycy5wYXJzZSBzdHJpbmcgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgOiB0ID1cbiAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZXhwZWN0ZWQgYW4gYXRvbVwiIHNleHBcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cClcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgIGxldCBvcGVuIFNleHBsaWIgaW5cbiAgICAgIFNleHBfZ3JhbW1hci50YWdcbiAgICAgICAgKFNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyIDogdCBTZXhwX2dyYW1tYXIudClcbiAgICAgICAgfmtleTpTZXhwX2dyYW1tYXIudHlwZV9uYW1lX3RhZ1xuICAgICAgICB+dmFsdWU6KEF0b20gXCJDb3JlLlRpbWVfbnMuT2ZkYXkudFwiKVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nICh0IDogdCkgPSB0b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE5hbm9zZWNvbmRcbiAgICBsZXQgc2V4cF9vZl90ICh0IDogdCkgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICAgIGxldCB0b19pbnQ2MyB0ID0gU3Bhbl9ucy5TdGFibGUuVjIudG9faW50NjMgdFxuICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbl9ucy5TdGFibGUuVjIub2ZfaW50NjNfZXhuIHQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBTdGFibGUuVjEgOlxuICAgIENvbXBhcmF0b3IuU1xuICB3aXRoIHR5cGUgdCA6PSB0XG4gICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RhYmxlLlYxIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGluY2x1ZGUgKFN0YWJsZS5WMSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuT2ZkYXlcIlxuICBlbmQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdGFibGUuVjEudF9zZXhwX2dyYW1tYXJcbmxldCB0b19taWNyb3NlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pY3Jvc2Vjb25kXG5sZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWxsaXNlY29uZFxubGV0IHRvX3NlY19zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YFNlY29uZFxubGV0IHRvX3N0cmluZ190cmltbWVkIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaW51dGVfb3JfbGVzc1xuXG5sZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gIHRyeVxuICAgIE9mZGF5X2hlbHBlcnMucGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mOlN0YWJsZS5WMS5jcmVhdGVfZnJvbV9wYXJzZWRcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6IGNhbm5vdCBwYXJzZSBzdHJpbmdcIlxuICAgICAgICAgIH5fOihTdHJpbmcuc3VibyBzdHIgP3BvcyA/bGVuIDogc3RyaW5nKVxuICAgICAgICAgIH5fOihleG4gOiBleG4pXVxuOztcblxubGV0IGV2ZXJ5ID1cbiAgbGV0IHJlYyBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2MgPVxuICAgICgqIEFzc3VtZXMgW3NwYW5dLCBbc3RhcnRdLCBhbmQgW3N0b3BdIGFyZSB2YWxpZCBvZmRheXMuIEFzc3VtZXMgW3N0YXJ0IDwgc3RvcF0uXG4gICAgICAgQXNzdW1lcyBbc3BhbiA+IDBdLiAqKVxuICAgIGxldCBhY2MgPSBzdGFydCA6OiBhY2MgaW5cbiAgICBsZXQgc3RhcnQgPSBTcGFuLiggKyApIHN0YXJ0IHNwYW4gaW5cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3AgKCogY2Fubm90IG92ZXJmbG93ICopXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjY1xuICBpblxuICAoKiBpbnRlcm5hbCBbZXZlcnldIG5hbWVkIHRvIHNob3cgdXAgaW4gc3RhY2sgdHJhY2VzICopXG4gIGxldCBldmVyeSBzcGFuIH5zdGFydCB+c3RvcCA9XG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBbc3RhcnRdID4gW3N0b3BdXCIgKHN0YXJ0IDogdCkgKHN0b3AgOiB0KV1cbiAgICBlbHNlIGlmIFNwYW4uKCA8PSApIHNwYW4gU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggbmVnYXRpdmUgc3BhblwiIH5fOihzcGFuIDogU3Bhbi50KV1cbiAgICBlbHNlIGlmIGlzX2ludmFsaWQgc3BhblxuICAgIHRoZW4gT2sgWyBzdGFydCBdXG4gICAgZWxzZSBPayAoZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjOltdKVxuICBpblxuICBldmVyeVxuOztcblxubGV0IHNtYWxsX2RpZmYgPVxuICBsZXQgaG91ciA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5ob3VyIGluXG4gIGZ1biBvZmRheTEgb2ZkYXkyIC0+XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBvZmRheTEgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTEpIGluXG4gICAgbGV0IG9mZGF5MiA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICBsZXQgZGlmZiA9IG9mZGF5MSAtIG9mZGF5MiBpblxuICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgbGV0IGQxID0gSW50NjMucmVtIGRpZmYgaG91ciBpblxuICAgICgqICBkMiBpcyBpbiAoMDtob3VyKSAqKVxuICAgIGxldCBkMiA9IEludDYzLnJlbSAoZDEgKyBob3VyKSBob3VyIGluXG4gICAgbGV0IGQgPSBpZiBkMiA+IGhvdXIgLyBJbnQ2My5vZl9pbnQgMiB0aGVuIGQyIC0gaG91ciBlbHNlIGQyIGluXG4gICAgU3Bhbi5vZl9pbnQ2M19ucyBkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJzbWFsbF9kaWZmXCIgPVxuICBsZXQgdGVzdCB4IHkgPVxuICAgIGxldCBkaWZmID0gc21hbGxfZGlmZiB4IHkgaW5cbiAgICBwcmludGYgIVwic21hbGxfZGlmZiAlcyAlcyA9ICVzXFxuXCIgKHRvX3N0cmluZyB4KSAodG9fc3RyaW5nIHkpIChTcGFuLnRvX3N0cmluZyBkaWZmKVxuICBpblxuICBsZXQgZXhhbXBsZXMgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuICh4LCB5KSAtPiBvZl9zdHJpbmcgeCwgb2Zfc3RyaW5nIHkpXG4gICAgICBbIFwiMTI6MDBcIiwgXCIxMjowNVwiOyBcIjEyOjU4XCIsIFwiMTM6MDJcIjsgXCIwMDo1MlwiLCBcIjIzOjE5XCI7IFwiMDA6MDBcIiwgXCIyNDowMFwiIF1cbiAgaW5cbiAgTGlzdC5pdGVyIGV4YW1wbGVzIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgdGVzdCB4IHk7XG4gICAgdGVzdCB5IHgpO1xuICBbJWV4cGVjdFxuICAgIHt8XG4gICAgc21hbGxfZGlmZiAxMjowMDowMC4wMDAwMDAwMDAgMTI6MDU6MDAuMDAwMDAwMDAwID0gLTVtXG4gICAgc21hbGxfZGlmZiAxMjowNTowMC4wMDAwMDAwMDAgMTI6MDA6MDAuMDAwMDAwMDAwID0gNW1cbiAgICBzbWFsbF9kaWZmIDEyOjU4OjAwLjAwMDAwMDAwMCAxMzowMjowMC4wMDAwMDAwMDAgPSAtNG1cbiAgICBzbWFsbF9kaWZmIDEzOjAyOjAwLjAwMDAwMDAwMCAxMjo1ODowMC4wMDAwMDAwMDAgPSA0bVxuICAgIHNtYWxsX2RpZmYgMDA6NTI6MDAuMDAwMDAwMDAwIDIzOjE5OjAwLjAwMDAwMDAwMCA9IC0yN21cbiAgICBzbWFsbF9kaWZmIDIzOjE5OjAwLjAwMDAwMDAwMCAwMDo1MjowMC4wMDAwMDAwMDAgPSAyN21cbiAgICBzbWFsbF9kaWZmIDAwOjAwOjAwLjAwMDAwMDAwMCAyNDowMDowMC4wMDAwMDAwMDAgPSAwc1xuICAgIHNtYWxsX2RpZmYgMjQ6MDA6MDAuMDAwMDAwMDAwIDAwOjAwOjAwLjAwMDAwMDAwMCA9IDBzIHx9XVxuOztcblxubGV0IGdlbl9pbmNsID0gU3Bhbi5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBTcGFuLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIChTcGFuIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmdzICopXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgbm93ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9uc1xuXG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2UgdGhlIFVuaXggZXBvY2ggKDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDKSAqKVxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudCA9IFNwYW4uUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIChTcGFuIDogUXVpY2tjaGVjay5TX3JhbmdlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCBub3cgPSBTcGFuLnNpbmNlX3VuaXhfZXBvY2hcbmxldCBlcXVhbCA9IFNwYW4uZXF1YWxcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBlcG9jaCA9IFNwYW4uemVyb1xubGV0IGFkZCA9IFNwYW4uKCArIClcbmxldCBzdWIgPSBTcGFuLiggLSApXG5sZXQgZGlmZiA9IFNwYW4uKCAtIClcbmxldCBhYnNfZGlmZiB0IHUgPSBTcGFuLmFicyAoZGlmZiB0IHUpXG5sZXQgbWF4ID0gU3Bhbi5tYXhcbmxldCBtaW4gPSBTcGFuLm1pblxubGV0IG5leHQgPSBTcGFuLm5leHRcbmxldCBwcmV2ID0gU3Bhbi5wcmV2XG5sZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0ID0gdFxubGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggcyA9IHNcbmxldCB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IDogSW50NjMudCA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbmxldFtAaW5saW5lXSBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCBpID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9pbnQ2M19ucyBpKVxubGV0W0Bjb2xkXSBvdmVyZmxvdyAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9uczogb3ZlcmZsb3dcIl1cbmxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPCB0MlxubGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPiB0MlxuXG5sZXQgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oIDwgKSBzdW0geCBlbHNlIFNwYW4uKCA+ICkgc3VtIHhcbjs7XG5cbmxldCBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oID4gKSBkaWZmIHggZWxzZSBTcGFuLiggPCApIGRpZmYgeFxuOztcblxubGV0IGFkZF9leG4geCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gdGhlbiBvdmVyZmxvdyAoKSBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9leG4geCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiB0aGVuIG92ZXJmbG93ICgpIGVsc2UgZGlmZlxuOztcblxubGV0IGFkZF9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmZcbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2UgZGlmZlxuOztcblxubGV0IHRvX2ludF9uc19zaW5jZV9lcG9jaCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnNfc2luY2VfZXBvY2ggdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMudG9faW50X25zX3NpbmNlX2Vwb2NoOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgb2ZfaW50X25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZSA9XG4gIGlmIFRpbWVfZmxvYXQuKCA8ICkgdGltZSBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFRpbWVfZmxvYXQuKCA+ICkgdGltZSBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdGltZVwiXG4gICAgICB0aW1lXG4gICAgICBbJXNleHBfb2Y6IFRpbWVfZmxvYXQuU3RhYmxlLldpdGhfdXRjX3NleHAuVjIudF1cbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdGltZSA9XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdGltZSA9XG4gIGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZTtcbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbCA9XG4gIGZhaWx3aXRoc1xuICAgIH5oZXJlOlslaGVyZV1cbiAgICBcIlRpbWVfbnMubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgIGludGVydmFsXG4gICAgWyVzZXhwX29mOiBTcGFuLnRdXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlbiByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbDtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9IGFkZCBiYXNlIChTcGFuLnNjYWxlX2ludDYzIGludGVydmFsIChTcGFuLmRpdiBiYXNlX3RvX2FmdGVyIGludGVydmFsKSkgaW5cbiAgICBpZiBuZXh0ID4gYWZ0ZXIgfHwgKGNhbl9lcXVhbF9hZnRlciAmJiBuZXh0ID0gYWZ0ZXIpIHRoZW4gbmV4dCBlbHNlIGFkZCBuZXh0IGludGVydmFsKVxuOztcblxubGV0IG5leHRfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYWZ0ZXIgPSBmYWxzZSkgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsXG47O1xuXG5sZXQgcHJldl9tdWx0aXBsZSA/KGNhbl9lcXVhbF9iZWZvcmUgPSBmYWxzZSkgfmJhc2UgfmJlZm9yZSB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsXG4gICAgfmNhbl9lcXVhbF9hZnRlcjoobm90IGNhbl9lcXVhbF9iZWZvcmUpXG4gICAgfmJhc2VcbiAgICB+YWZ0ZXI6KHN1YiBiZWZvcmUgaW50ZXJ2YWwpXG4gICAgfmludGVydmFsXG47O1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9IFNwYW4ucmFuZG9tID9zdGF0ZSAoKVxuXG5tb2R1bGUgVXRjIDogc2lnXG4gIHZhbCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gRGF0ZTAudCAqIFNwYW4udFxuICB2YWwgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiBEYXRlMC50IC0+IFNwYW4udCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogYSByZWNyZWF0aW9uIG9mIHRoZSBzeXN0ZW0gY2FsbCBnbXRpbWUgc3BlY2lhbGl6ZWQgdG8gdGhlIGZpZWxkcyB3ZSBuZWVkIHRoYXQgYWxzb1xuICAgICBkb2Vzbid0IHJlbHkgb24gVW5peC4gKilcbiAgbGV0IHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgKCAhPCApIGkgPSBJbnQ2My5vZl9pbnRfZXhuIGkgaW5cbiAgICBsZXQgKCAhPiApIHQgPSBJbnQ2My50b19pbnRfZXhuIHQgaW5cbiAgICBsZXQgbnNfc2luY2VfZXBvY2ggPSB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IGluXG4gICAgbGV0IG5zX3Blcl9kYXkgPSAhPDg2XzQwMCAqICE8MV8wMDBfMDAwXzAwMCBpblxuICAgIGxldCBhcHByb3hfZGF5c19mcm9tX2Vwb2NoID0gbnNfc2luY2VfZXBvY2ggLyBuc19wZXJfZGF5IGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBpZiBuc19zaW5jZV9lcG9jaCA8ICE8MCAmJiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSA8PiBuc19zaW5jZV9lcG9jaFxuICAgICAgdGhlbiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoIC0gITwxXG4gICAgICBlbHNlIGFwcHJveF9kYXlzX2Zyb21fZXBvY2hcbiAgICBpblxuICAgIGxldCBuc19zaW5jZV9zdGFydF9vZl9kYXkgPSBuc19zaW5jZV9lcG9jaCAtIChuc19wZXJfZGF5ICogZGF5c19mcm9tX2Vwb2NoKSBpblxuICAgIGxldCBkYXRlID1cbiAgICAgIERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoICE+ZGF5c19mcm9tX2Vwb2NoIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIGluXG4gICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gU3Bhbi5vZl9pbnQ2M19ucyBuc19zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID1cbiAgICBhc3NlcnQgKFxuICAgICAgU3Bhbi4oID49ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi56ZXJvXG4gICAgICAmJiBTcGFuLiggPCApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uZGF5KTtcbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIGluXG4gICAgbGV0IHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCA9IFNwYW4uc2NhbGVfaW50IFNwYW4uZGF5IGRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBzcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi4oICsgKSBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBvZl9zcGFuX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbW9kdWxlIE9mZGF5X2FzX3NwYW4gPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSW50Lk9cblxuICAgICAgbGV0IHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiA9XG4gICAgICAgIGxldCBzZWNvbmRzID0gU3Bhbi50b19pbnRfc2VjIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBsZXQgaCA9IHNlY29uZHMgLyAzNjAwIGluXG4gICAgICAgIGxldCBtID0gc2Vjb25kcyAvIDYwICUgNjAgaW5cbiAgICAgICAgbGV0IHMgPSBzZWNvbmRzICUgNjAgaW5cbiAgICAgICAgc3ByaW50ZiBcIiUwMmQ6JTAyZDolMDJkXCIgaCBtIHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0d29fZGlnaXRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgPSAyICYmIFN0cmluZy5mb3JfYWxsIHN0cmluZyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgSW50Lm9mX3N0cmluZyBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzZWNvbmRzX3N0cmluZyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhfc3RyaW5nOyBtX3N0cmluZzsgc19zdHJpbmcgXSAtPlxuICAgICAgICAgIGxldCBoID0gdHdvX2RpZ2l0X29mX3N0cmluZyBoX3N0cmluZyBpblxuICAgICAgICAgIGxldCBtID0gdHdvX2RpZ2l0X29mX3N0cmluZyBtX3N0cmluZyBpblxuICAgICAgICAgIGxldCBzID0gdHdvX2RpZ2l0X29mX3N0cmluZyBzX3N0cmluZyBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50X3NlYyAoKCgoaCAqIDYwKSArIG0pICogNjApICsgcylcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IG5zX29mXzEwMF9tcyA9IDEwMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbXMgPSAxMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV9tcyA9IDFfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF91cyA9IDEwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF91cyA9IDEwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfdXMgPSAxXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF9ucyA9IDEwMFxuICAgICAgbGV0IG5zX29mXzEwX25zID0gMTBcbiAgICAgIGxldCBuc19vZl8xX25zID0gMVxuXG4gICAgICBsZXQgc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyBzdWJfc2Vjb25kX3NwYW4gfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICBpZiBucyA9IDBcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDFkXCIgKG5zIC8gbnNfb2ZfMTAwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDJkXCIgKG5zIC8gbnNfb2ZfMTBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAzZFwiIChucyAvIG5zX29mXzFfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDRkXCIgKG5zIC8gbnNfb2ZfMTAwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDVkXCIgKG5zIC8gbnNfb2ZfMTBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA2ZFwiIChucyAvIG5zX29mXzFfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDdkXCIgKG5zIC8gbnNfb2ZfMTAwX25zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDhkXCIgKG5zIC8gbnNfb2ZfMTBfbnMpXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIi4lMDlkXCIgbnNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICAgIHRoZW4gU3Bhbi56ZXJvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaWdpdHMgPSBTdHJpbmcuY2hvcF9wcmVmaXhfZXhuIHN0cmluZyB+cHJlZml4OlwiLlwiIGluXG4gICAgICAgICAgYXNzZXJ0IChTdHJpbmcuZm9yX2FsbCBkaWdpdHMgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgICAgbGV0IG11bHRpcGxpZXIgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBkaWdpdHMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IG5zX29mXzEwMF9tc1xuICAgICAgICAgICAgfCAyIC0+IG5zX29mXzEwX21zXG4gICAgICAgICAgICB8IDMgLT4gbnNfb2ZfMV9tc1xuICAgICAgICAgICAgfCA0IC0+IG5zX29mXzEwMF91c1xuICAgICAgICAgICAgfCA1IC0+IG5zX29mXzEwX3VzXG4gICAgICAgICAgICB8IDYgLT4gbnNfb2ZfMV91c1xuICAgICAgICAgICAgfCA3IC0+IG5zX29mXzEwMF9uc1xuICAgICAgICAgICAgfCA4IC0+IG5zX29mXzEwX25zXG4gICAgICAgICAgICB8IDkgLT4gbnNfb2ZfMV9uc1xuICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IChJbnQub2Zfc3RyaW5nIGRpZ2l0cyAqIG11bHRpcGxpZXIpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgc3BhbiA9XG4gICAgICAgIGFzc2VydCAoU3Bhbi4oID49ICkgc3BhbiBTcGFuLnplcm8gJiYgU3Bhbi4oIDwgKSBzcGFuIFNwYW4uZGF5KTtcbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNwYW4gfD4gU3Bhbi50b19pbnRfc2VjIHw+IFNwYW4ub2ZfaW50X3NlYyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gU3Bhbi4oIC0gKSBzcGFuIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gXiBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgIGxldCBwcmVmaXhfbGVuID0gOCBpblxuICAgICAgICAoKiBcIkhIOk1NOkREXCIgKilcbiAgICAgICAgbGV0IHN1ZmZpeF9sZW4gPSBsZW4gLSBwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6MCB+bGVuOnByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpwcmVmaXhfbGVuIH5sZW46c3VmZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN1Yl9zZWNvbmRfc3RyaW5nIGluXG4gICAgICAgIFNwYW4uKCArICkgc2Vjb25kc19zcGFuIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBsZXQgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBVdGMudG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCBpblxuICAgICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5X2FzX3NwYW4udG9fc3RyaW5nIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IF4gXCJaXCJcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgbGV0IGRhdGVfc3RyaW5nLCBvZmRheV9zdHJpbmdfd2l0aF96b25lID0gU3RyaW5nLmxzcGxpdDJfZXhuIHN0cmluZyB+b246JyAnIGluXG4gICAgICBsZXQgb2ZkYXlfc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBvZmRheV9zdHJpbmdfd2l0aF96b25lIH5zdWZmaXg6XCJaXCIgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGVfc3RyaW5nIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheV9hc19zcGFuLm9mX3N0cmluZyBvZmRheV9zdHJpbmcgaW5cbiAgICAgIFV0Yy5vZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIG9mZGF5XG4gICAgOztcblxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBlbmQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgbGV0IG9wZW4gU2V4cGxpYiBpblxuICAgICAgU2V4cF9ncmFtbWFyLnRhZ1xuICAgICAgICB0X3NleHBfZ3JhbW1hclxuICAgICAgICB+a2V5OlNleHBfZ3JhbW1hci50eXBlX25hbWVfdGFnXG4gICAgICAgIH52YWx1ZTooQXRvbSBcIkNvcmUuVGltZV9ucy5BbHRlcm5hdGVfc2V4cC50XCIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuICBpbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV9lZmZpY2llbnRcblxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAoKiBzZWUgdGVzdHMgaW4gbGliL2NvcmUvdGVzdC9zcmMvdGVzdF90aW1lX25zIHRoYXQgZW5zdXJlIHN0YWJpbGl0eSBvZiB0aGlzXG4gICAgICAgICAgIHJlcHJlc2VudGF0aW9uICopXG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA6IHQgU3RhYmxlX3dpdG5lc3MudCA9IFN0YWJsZV93aXRuZXNzLmFzc2VydF9zdGFibGVcblxuICAgICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbiAgbW9kdWxlIEFsdGVybmF0ZV9zZXhwID0gQWx0ZXJuYXRlX3NleHAuU3RhYmxlXG4gIG1vZHVsZSBTcGFuID0gU3Bhbi5TdGFibGVcbiAgbW9kdWxlIE9mZGF5ID0gT2ZkYXkuU3RhYmxlXG5lbmRcblxuKCogdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGR1cGxpY2F0ZWQgZnJvbSBUaW1lLm1sIGZ1bmN0b3IsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0IFRpbWVfbnNcbiAgIHRvL29mX3N0cmluZyB3b3JraW5nICopXG5tb2R1bGUgVG9fYW5kX29mX3N0cmluZyA6IHNpZ1xuICB2YWwgb2ZfZGF0ZV9vZmRheSA6IHpvbmU6Wm9uZS50IC0+IERhdGUudCAtPiBPZmRheS50IC0+IHRcblxuICB2YWwgb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgRGF0ZS50XG4gICAgLT4gT2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gWyBgT25jZSBvZiB0IHwgYFR3aWNlIG9mIHQgKiB0IHwgYE5ldmVyIG9mIHQgXVxuXG4gIHZhbCB0b19kYXRlX29mZGF5IDogdCAtPiB6b25lOlpvbmUudCAtPiBEYXRlLnQgKiBPZmRheS50XG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXlfcHJlY2lzZVxuICAgIDogIHRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IERhdGUudCAqIE9mZGF5LnQgKiBbIGBPbmx5IHwgYEFsc29fYXQgb2YgdCB8IGBBbHNvX3NraXBwZWQgb2YgRGF0ZS50ICogT2ZkYXkudCBdXG5cbiAgdmFsIHRvX2RhdGUgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudFxuICB2YWwgdG9fb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IE9mZGF5LnRcbiAgdmFsIGNvbnZlcnQgOiBmcm9tX3R6OlpvbmUudCAtPiB0b190ejpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gRGF0ZS50ICogT2ZkYXkudFxuICB2YWwgcmVzZXRfZGF0ZV9jYWNoZSA6IHVuaXQgLT4gdW5pdFxuICB2YWwgdXRjX29mZnNldCA6IHQgLT4gem9uZTpab25lLnQgLT4gU3Bhbi50XG5cbiAgdmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiB0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFtvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0XVwiXVxuXG4gIHZhbCBvZl9zdHJpbmdfd2l0aF91dGNfb2Zmc2V0IDogc3RyaW5nIC0+IHRcbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNF0gVXNlIFt0b19zdHJpbmdfdXRjXVwiXVxuICB2YWwgdG9fc3RyaW5nX3V0YyA6IHQgLT4gc3RyaW5nXG4gIHZhbCB0b19maWxlbmFtZV9zdHJpbmcgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgb2ZfZmlsZW5hbWVfc3RyaW5nIDogc3RyaW5nIC0+IHpvbmU6Wm9uZS50IC0+IHRcbiAgdmFsIHRvX3N0cmluZ190cmltbWVkIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3NlY19zdHJpbmcgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgb2ZfbG9jYWxpemVkX3N0cmluZyA6IHpvbmU6Wm9uZS50IC0+IHN0cmluZyAtPiB0XG5cbiAgdmFsIG9mX3N0cmluZ19nZW5cbiAgICA6ICBkZWZhdWx0X3pvbmU6KHVuaXQgLT4gWm9uZS50KVxuICAgIC0+IGZpbmRfem9uZTooc3RyaW5nIC0+IFpvbmUudClcbiAgICAtPiBzdHJpbmdcbiAgICAtPiB0XG5cbiAgdmFsIHRvX3N0cmluZ19hYnMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic190cmltbWVkIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcbiAgdmFsIHRvX3N0cmluZ19hYnNfcGFydHMgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmdfaXNvODYwMV9iYXNpYyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG5cbiAgdmFsIG9jY3VycmVuY2VcbiAgICA6ICBbIGBGaXJzdF9hZnRlcl9vcl9hdCB8IGBMYXN0X2JlZm9yZV9vcl9hdCBdXG4gICAgLT4gdFxuICAgIC0+IG9mZGF5Ok9mZGF5LnRcbiAgICAtPiB6b25lOlpvbmUudFxuICAgIC0+IHRcbmVuZCA9IHN0cnVjdFxuICAoKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWVfZmxvYXQwLm1sLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldFxuICAgICBUaW1lX25zIHRvL29mX3N0cmluZyB3b3JraW5nICopXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9pbnQ2M19ucyB0XG5cbiAgICBsZXQgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5ID1cbiAgICAgIGxldCBkYXlzID1cbiAgICAgICAgRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoIHw+IEludDYzLm9mX2ludFxuICAgICAgaW5cbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIChkYXlzICogU3Bhbi50b19pbnQ2M19ucyBTcGFuLmRheSlcbiAgICAgICsgU3Bhbi50b19pbnQ2M19ucyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gICAgOztcblxuICAgIGxldCB0b19hYnNvbHV0ZSByZWxhdGl2ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIHN1Yl9leG4gKFNwYW4ub2ZfaW50NjNfbnMgcmVsYXRpdmUpIG9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfYWJzb2x1dGUgYWJzb2x1dGUgfm9mZnNldF9mcm9tX3V0YyA9XG4gICAgICBTcGFuLnRvX2ludDYzX25zIChhZGRfZXhuIGFic29sdXRlIG9mZnNldF9mcm9tX3V0YylcbiAgICA7O1xuXG4gICAgbGV0IG5zX3Blcl9kYXkgPSBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5XG5cbiAgICBsZXQgdG9fZGF5c19mcm9tX2Vwb2NoIHQgPVxuICAgICAgKCogbm90ZSBUaW1lX25zIHJlcHJlc2VudHMgYWJvdXQgMTQ2IHllYXJzLCBub3QgZW5vdWdoIGZvciBbRGF0ZS5jcmVhdGVfZXhuXSB0byBldmVyXG4gICAgICAgICByYWlzZSAqKVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSB0IC8gbnNfcGVyX2RheSBpblxuICAgICAgKCogd2hlbiBbdF0gaXMgbmVnYXRpdmUgdGhlIGludGVnZXIgZGl2aXNpb24gdGhhdCBjYWxjdWxhdGVkIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICAgIHdhbnQgLTEpIC0tIGFkanVzdCBmb3IgdGhhdCBoZXJlLiAqKVxuICAgICAgaWYgdCA8IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggKiBuc19wZXJfZGF5XG4gICAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgZWxzZSBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgOztcblxuICAgIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2hfaW5fbnMgPSBkYXlzX2Zyb21fZXBvY2ggKiBuc19wZXJfZGF5IGluXG4gICAgICBsZXQgcmVtYWluZGVyID0gdCAtIGRheXNfZnJvbV9lcG9jaF9pbl9ucyBpblxuICAgICAgU3Bhbi5vZl9pbnQ2M19ucyByZW1haW5kZXIgfD4gT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG4gICAgOztcblxuICAgIGxldCBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIEludDYzLnRvX2ludF9leG4gZGF5c19mcm9tX2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgICAgfD4gRGF0ZTAuRGF5cy50b19kYXRlXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlIHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBkYXRlX29mX2RheXNfZnJvbV9lcG9jaCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19vZmRheSB0ID1cbiAgICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBab25lIDogc2lnXG4gICAgKCogVGhpcyBpbnRlcmZhY2UgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWVfaW50Zi5ab25lLCBjb252ZXJ0ZWQgZW5vdWdoIHRvIGdldFxuICAgICAgIHRoaXMgdG8gd29yay5cblxuICAgICAgIFRoZSBwcm9ibGVtIGlzIGhhcyByZWZlcmVuY2VzIHRvIFRpbWUwX2ludGYuUywgd2hpY2ggaXMgdGhlIGZ1bmN0b3IgaW5wdXQgaW50ZXJmYWNlXG4gICAgICAgdGhhdCBUaW1lX25zIGN1cnJlbnRseSBkb2VzIG5vdCBzYXRpc2Z5LiAqKVxuXG4gICAgdHlwZSB0aW1lID0gdFxuICAgIHR5cGUgdCA9IFpvbmUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbW9kdWxlIEluZGV4ID0gWm9uZS5JbmRleFxuXG4gICAgKCogY29waWVkIGZ1bmN0aW9ucyByZWV4cG9ydGVkIGZyb20gWm9uZSAqKVxuXG4gICAgdmFsIHV0YyA6IHRcbiAgICB2YWwgaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgOiB0IC0+IEluZGV4LnQgLT4gYm9vbFxuICAgIHZhbCBpbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG5cbiAgICAoKiBuZXcgZnVuY3Rpb25zIGRlZmluZWQgYmVsb3cgKilcblxuICAgIHZhbCBpbmRleCA6IHQgLT4gdGltZSAtPiBJbmRleC50XG4gICAgdmFsIGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgOiB0IC0+IERhdGVfYW5kX29mZGF5LnQgLT4gdGltZVxuICAgIHZhbCBkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIDogdCAtPiB0aW1lIC0+IERhdGVfYW5kX29mZGF5LnRcbiAgICB2YWwgbmV4dF9jbG9ja19zaGlmdCA6IHQgLT4gc3RyaWN0bHlfYWZ0ZXI6dGltZSAtPiAodGltZSAqIFNwYW4udCkgb3B0aW9uXG4gICAgdmFsIHByZXZfY2xvY2tfc2hpZnQgOiB0IC0+IGF0X29yX2JlZm9yZTp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSB0aW1lID0gdFxuXG4gICAgaW5jbHVkZSBab25lXG5cbiAgICBsZXQgb2Zfc3Bhbl9pbl9zZWNvbmRzIHNwYW5faW5fc2Vjb25kcyA9XG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG4gc3Bhbl9pbl9zZWNvbmRzXG4gICAgICB8PiBTcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RpbWVfaW5fc2Vjb25kcyB0aW1lX2luX3NlY29uZHMgPVxuICAgICAgVGltZV9pbl9zZWNvbmRzLnRvX3NwYW5fc2luY2VfZXBvY2ggdGltZV9pbl9zZWNvbmRzXG4gICAgICAoKiBOQi4gbm8gYWN0dWFsIHJvdW5kaW5nIG9yIGV4bnMgY2FuIG9jY3VyIGhlcmUgKilcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgdG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUgPVxuICAgICAgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gICAgICB8PiBTcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlID1cbiAgICAgIERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHJlbGF0aXZlXG4gICAgICB8PiBTcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgICAgIHw+IFRpbWVfaW5fc2Vjb25kcy5EYXRlX2FuZF9vZmRheS5vZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXggdCB0aW1lID0gaW5kZXggdCAodG9fdGltZV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHRpbWUpXG5cbiAgICBsZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0ICh0b19kYXRlX2FuZF9vZmRheV9pbl9zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHJlbGF0aXZlKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3NwYW5faW5fc2Vjb25kcyAoaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4ID1cbiAgICAgIG9mX3RpbWVfaW5fc2Vjb25kcyAoaW5kZXhfbmV4dF9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPVxuICAgICAgeyBtdXRhYmxlIHpvbmUgOiBab25lLnRcbiAgICAgIDsgbXV0YWJsZSBjYWNoZV9zdGFydF9pbmNsIDogdFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3VudGlsX2V4Y2wgOiB0XG4gICAgICA7IG11dGFibGUgZWZmZWN0aXZlX2RheV9zdGFydCA6IHRcbiAgICAgIDsgbXV0YWJsZSBkYXRlIDogRGF0ZTAudFxuICAgICAgfVxuICBlbmRcblxuICBsZXQgZGF0ZV9jYWNoZSA6IERhdGVfY2FjaGUudCA9XG4gICAgeyB6b25lID0gWm9uZS51dGNcbiAgICA7IGNhY2hlX3N0YXJ0X2luY2wgPSBlcG9jaFxuICAgIDsgY2FjaGVfdW50aWxfZXhjbCA9IGVwb2NoXG4gICAgOyBlZmZlY3RpdmVfZGF5X3N0YXJ0ID0gZXBvY2hcbiAgICA7IGRhdGUgPSBEYXRlMC51bml4X2Vwb2NoXG4gICAgfVxuICA7O1xuXG4gIGxldCByZXNldF9kYXRlX2NhY2hlICgpID1cbiAgICBkYXRlX2NhY2hlLnpvbmUgPC0gWm9uZS51dGM7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5kYXRlIDwtIERhdGUwLnVuaXhfZXBvY2hcbiAgOztcblxuICBsZXQgaXNfaW5fY2FjaGUgdGltZSB+em9uZSA9XG4gICAgcGh5c19lcXVhbCB6b25lIGRhdGVfY2FjaGUuem9uZVxuICAgICYmIHRpbWUgPj0gZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgdGltZSA8IGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbFxuICA7O1xuXG4gIGxldCBzZXRfZGF0ZV9jYWNoZSB0aW1lIH56b25lID1cbiAgICBtYXRjaCBpc19pbl9jYWNoZSB0aW1lIH56b25lIHdpdGhcbiAgICB8IHRydWUgLT4gKClcbiAgICB8IGZhbHNlIC0+XG4gICAgICBsZXQgaW5kZXggPSBab25lLmluZGV4IHpvbmUgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW1pvbmUuaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBab25lLmluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gem9uZSBpbmRleCBpblxuICAgICAgbGV0IHJlbCA9IERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0YyBpblxuICAgICAgbGV0IGRhdGUgPSBEYXRlX2FuZF9vZmRheS50b19kYXRlIHJlbCBpblxuICAgICAgbGV0IHNwYW4gPSBEYXRlX2FuZF9vZmRheS50b19vZmRheSByZWwgfD4gT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3N0YXJ0ID1cbiAgICAgICAgc3ViIChEYXRlX2FuZF9vZmRheS50b19hYnNvbHV0ZSByZWwgfm9mZnNldF9mcm9tX3V0Yykgc3BhblxuICAgICAgaW5cbiAgICAgIGxldCBlZmZlY3RpdmVfZGF5X3VudGlsID0gYWRkIGVmZmVjdGl2ZV9kYXlfc3RhcnQgU3Bhbi5kYXkgaW5cbiAgICAgIGxldCBjYWNoZV9zdGFydF9pbmNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfc3RhcnQgfD4gbWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsIHw+IG1pbiAoWm9uZS5pbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHpvbmUgaW5kZXgpXG4gICAgICBpblxuICAgICAgZGF0ZV9jYWNoZS56b25lIDwtIHpvbmU7XG4gICAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gY2FjaGVfc3RhcnRfaW5jbDtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfdW50aWxfZXhjbCA8LSBjYWNoZV91bnRpbF9leGNsO1xuICAgICAgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IDwtIGVmZmVjdGl2ZV9kYXlfc3RhcnQ7XG4gICAgICBkYXRlX2NhY2hlLmRhdGUgPC0gZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGF0ZV9jYWNoZS5kYXRlXG4gIDs7XG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgZGlmZiB0aW1lIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4gdGltZSAtPlxuICAgICAgICAoKiBjbG9jayBzaGlmdGVkIHJlY2VudGx5ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGZvcndhcmQgcmVjZW50bHk6IHdlIHNraXBwZWQgYSB0aW1lICopXG4gICAgICAgICAgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgYmFjayByZWNlbnRseTogdGhpcyBkYXRlL29mZGF5IGFscmVhZHkgaGFwcGVuZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoc3ViIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfLCBTb21lIChzdGFydCwgYW1vdW50KSB3aGVuIHN1YiBzdGFydCAoU3Bhbi5hYnMgYW1vdW50KSA8PSB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIGlzIGFib3V0IHRvIHNoaWZ0ICopXG4gICAgICAgIGlmIFNwYW4uKGFtb3VudCA+IHplcm8pXG4gICAgICAgIHRoZW4gKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgZm9yd2FyZDogbm8gZWZmZWN0ICopXG4gICAgICAgICAgYE9ubHlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgYWJvdXQgdG8gc2hpZnQgYmFjazogdGhpcyBkYXRlL29mZGF5IHdpbGwgYmUgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFNwYW4uKGFtb3VudCA8IHplcm8pKTtcbiAgICAgICAgICBgQWxzb19hdCAoYWRkIHRpbWUgKFNwYW4uYWJzIGFtb3VudCkpKVxuICAgICAgfCBfIC0+IGBPbmx5XG4gICAgaW5cbiAgICBkYXRlLCBvZmRheSwgYW1iaWd1aXR5XG4gIDs7XG5cbiAgbGV0IGNvbnZlcnQgfmZyb21fdHogfnRvX3R6IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBzdGFydF90aW1lID0gb2ZfZGF0ZV9vZmRheSB+em9uZTpmcm9tX3R6IGRhdGUgb2ZkYXkgaW5cbiAgICB0b19kYXRlX29mZGF5IH56b25lOnRvX3R6IHN0YXJ0X3RpbWVcbiAgOztcblxuICBsZXQgdXRjX29mZnNldCB0IH56b25lID1cbiAgICBsZXQgdXRjX2Vwb2NoID0gWm9uZS5kYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW1lIHpvbmUgdCBpblxuICAgIFNwYW4uKCAtIClcbiAgICAgIChEYXRlX2FuZF9vZmRheS50b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB1dGNfZXBvY2gpXG4gICAgICAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KVxuICA7O1xuXG4gIGxldCBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgPVxuICAgIGxldCB1dGNfb2Zmc2V0ID0gdXRjX29mZnNldCB0aW1lIH56b25lIGluXG4gICAgbGV0IGlzX3V0YyA9IFNwYW4uKCA9ICkgdXRjX29mZnNldCBTcGFuLnplcm8gaW5cbiAgICBpZiBpc191dGNcbiAgICB0aGVuIFwiWlwiXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIChpZiBTcGFuLiggPCApIHV0Y19vZmZzZXQgU3Bhbi56ZXJvIHRoZW4gXCItXCIgZWxzZSBcIitcIilcbiAgICAgICAgOyBPZmRheS50b19zdHJpbmdfdHJpbW1lZFxuICAgICAgICAgICAgKE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5hYnMgdXRjX29mZnNldCkpXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic19wYXJ0cyA9XG4gICAgbGV0IGF0dGVtcHQgdGltZSB+em9uZSA9XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgICBbIERhdGUwLnRvX3N0cmluZyBkYXRlXG4gICAgICA7IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgT2ZkYXkudG9fc3RyaW5nIG9mZGF5OyBvZmZzZXRfc3RyaW5nIF1cbiAgICAgIF1cbiAgICBpblxuICAgIGZ1biB0aW1lIH56b25lIC0+XG4gICAgICB0cnkgYXR0ZW1wdCB0aW1lIH56b25lIHdpdGhcbiAgICAgIHwgKF8gOiBleG4pIC0+XG4gICAgICAgICgqIElmIHdlIG92ZXJmbG93IGFwcGx5aW5nIHRoZSBVVEMgb2Zmc2V0LCB0cnkgYWdhaW4gd2l0aCBVVEMgdGltZS4gKilcbiAgICAgICAgYXR0ZW1wdCB0aW1lIH56b25lOlpvbmUudXRjXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnNfdHJpbW1lZCB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgb2Zmc2V0X3N0cmluZyA9IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSBpblxuICAgIFN0cmluZy5jb25jYXRcbiAgICAgIH5zZXA6XCIgXCJcbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGU7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkIG9mZGF5IF4gb2Zmc2V0X3N0cmluZyBdXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19hYnMgdGltZSB+em9uZSA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICBsZXQgdG9fc3RyaW5nX3V0YyB0ID0gdG9fc3RyaW5nX2FicyB0IH56b25lOlpvbmUudXRjXG4gIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdfdXRjXG5cbiAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHRpbWUgfnpvbmUgPVxuICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIlRcIiAodG9fc3RyaW5nX2Fic19wYXJ0cyB+em9uZSB0aW1lKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgc2VjID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5LnRvX3N0cmluZ190cmltbWVkIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc2VjX3N0cmluZyBzZWNcbiAgOztcblxuICBsZXQgdG9fc2VjX3N0cmluZ193aXRoX3pvbmUgdCB+em9uZSA9IHRvX3NlY19zdHJpbmcgdCB+em9uZSBeIG9mZnNldF9zdHJpbmcgdCB+em9uZVxuXG4gIGxldCB0b19maWxlbmFtZV9zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB+em9uZSB0IGluXG4gICAgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICBeIFwiX1wiXG4gICAgXiBTdHJpbmcudHJcbiAgICAgICAgfnRhcmdldDonOidcbiAgICAgICAgfnJlcGxhY2VtZW50OictJ1xuICAgICAgICAoU3RyaW5nLmRyb3Bfc3VmZml4IChPZmRheS50b19zdHJpbmcgb2ZkYXkpIDMpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfbnNfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX25zX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcbmVuZFxuXG5pbmNsdWRlIFRvX2FuZF9vZl9zdHJpbmdcblxubGV0IG1pbl92YWx1ZV9yZXByZXNlbnRhYmxlID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCBTcGFuLm1pbl92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWF4X3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWF4X3ZhbHVlX3JlcHJlc2VudGFibGVcblxuKCogTGVnYWN5IGRlZmluaXRpb25zIGJhc2VkIG9uIHJvdW5kaW5nIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAqKVxubGV0IG1pbl92YWx1ZSA9IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCB0b190aW1lID0gdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5sZXQgb2ZfdGltZSA9IG9mX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxuXG5tb2R1bGUgXyA9IHN0cnVjdFxuICBvcGVuIFBweF9tb2R1bGVfdGltZXJfcnVudGltZVxuXG4gIGxldCAoKSA9XG4gICAgRHVyYXRpb24uZm9ybWF0XG4gICAgOj0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGxldCBkdXJhdGlvbl9vZl9zcGFuIHMgPSBzIHw+IFNwYW4udG9faW50NjNfbnMgfD4gRHVyYXRpb24ub2ZfbmFub3NlY29uZHNcbiAgICAgIGxldCBzcGFuX29mX2R1cmF0aW9uIGQgPSBkIHw+IER1cmF0aW9uLnRvX25hbm9zZWNvbmRzIHw+IFNwYW4ub2ZfaW50NjNfbnNcbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gc3RyaW5nIHw+IFNwYW4ub2Zfc3RyaW5nIHw+IGR1cmF0aW9uX29mX3NwYW5cblxuICAgICAgbGV0IHRvX3N0cmluZ193aXRoX3NhbWVfdW5pdCBkdXJhdGlvbnMgPVxuICAgICAgICBsZXQgc3BhbnMgPSBkdXJhdGlvbnMgfD4gTGlzdC5tYXAgfmY6c3Bhbl9vZl9kdXJhdGlvbiBpblxuICAgICAgICBsZXQgdW5pdF9vZl90aW1lID1cbiAgICAgICAgICBzcGFuc1xuICAgICAgICAgIHw+IExpc3QubWF4X2VsdCB+Y29tcGFyZTpTcGFuLmNvbXBhcmVcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgICAgICAgICB+ZjpTcGFuLnRvX3VuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgfmRlZmF1bHQ6VW5pdF9vZl90aW1lLk5hbm9zZWNvbmRcbiAgICAgICAgaW5cbiAgICAgICAgc3BhbnMgfD4gTGlzdC5tYXAgfmY6KFNwYW4udG9fc3RyaW5nX2h1bSB+dW5pdF9vZl90aW1lIH5hbGlnbl9kZWNpbWFsOnRydWUpXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSGFzaF9xdWV1ZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3NldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxubW9kdWxlIFNldCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lID0gc3RydWN0IGVuZFxuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGdldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IGludGVycnVwdGlibGVfcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX2RhdGVfb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX3N0cmluZ19hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IG9mX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwYXVzZV9mb3JldmVyID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBwcCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgc2V4cF9vZl90ID0gYFVzZV9UaW1lX25zX3VuaXhfb3JfVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV9uc191bml4X29yX1RpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdmFsaWRhdGVfdWJvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbiIsIigqIEEgc3Vic3RyaW5nIGlzIGEgY29udGlndW91cyBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLiAgV2UgdXNlIGFcbiAgIGZ1bmN0b3IgYmVjYXVzZSB3ZSB3YW50IHN1YnN0cmluZ3Mgb2YgW3N0cmluZ10gYW5kIFtiaWdzdHJpbmddLlxuKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZ19pbnRmXG5cbnR5cGUgYmlnc3RyaW5nID0gQmlnc3RyaW5nLnRcblxubW9kdWxlIEJsaXQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3NyYywgJ2RzdCkgdCA9ICgnc3JjLCAnZHN0KSBCbGl0LmJsaXRvXG5cbiAgbGV0IHN0cmluZ19ieXRlcyB+c3JjID9zcmNfcG9zID9zcmNfbGVuIH5kc3QgPyhkc3RfcG9zID0gMCkgKCkgPVxuICAgIGxldCBzcmNfcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG5cbiAgICAgICAgKClcbiAgICAgICAgP3BvczpzcmNfcG9zXG4gICAgICAgID9sZW46c3JjX2xlblxuICAgICAgICB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHNyYylcbiAgICBpblxuICAgIEJ5dGVzLkZyb21fc3RyaW5nLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICBsZXQgc3RyaW5nX3N0cmluZyA9IHN0cmluZ19ieXRlc1xuICBsZXQgYnl0ZXNfYnl0ZXMgPSBCeXRlcy5ibGl0b1xuICBsZXQgc3RyaW5nX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0b1xuICBsZXQgYnl0ZXNfYmlnc3RyaW5nID0gQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG9cbiAgbGV0IGJpZ3N0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuYmxpdG9cbiAgbGV0IGJpZ3N0cmluZ19zdHJpbmcgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbiAgbGV0IGJpZ3N0cmluZ19ieXRlcyA9IEJpZ3N0cmluZy5Ub19ieXRlcy5ibGl0b1xuZW5kXG5cbigqIFdlIGNhbid0IGNhbGwgdGhlIGJhc2UgbW9kdWxlIFtCYXNlXSBiZWNhdXNlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdIHdhbnRzIHRvIGFjY2Vzc1xuICAgdGhlIFtCYXNlXSBsaWJyYXJ5IGRpcmVjdGx5LCBhbmQgd2UnZCBiZSBzaGFkb3dpbmcgaXQuICopXG5tb2R1bGUgRiAoVW5kZXJseWluZyA6IEJhc2UpIDogUyB3aXRoIHR5cGUgYmFzZSA9IFVuZGVybHlpbmcudCA9IHN0cnVjdFxuICB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnRcblxuICB0eXBlIHQgPVxuICAgIHsgYmFzZSA6IFVuZGVybHlpbmcudFxuICAgIDsgcG9zIDogaW50XG4gICAgOyBsZW4gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgKCogbm90ZSB3ZSBvdmVycmlkZSB0aGUgZ2VuZXJhdGVkIFtxdWlja2NoZWNrX2dlbmVyYXRvcl0gYmVsb3csIG9uY2Ugd2UndmUgZGVmaW5lZFxuICAgICBbY3JlYXRlXSAqKVxuXG4gICgqIHtbXG4gICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgIGFzc2VydCAoMCA8PSB0LnBvcyk7XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5sZW4pO1xuICAgICAgICAgYXNzZXJ0ICh0LnBvcyArIHQubGVuIDw9IEJhc2UubGVuZ3RoIHQuYmFzZSk7XG4gICAgICAgOzsgXX0gKilcblxuICBsZXQgYmFzZSB0ID0gdC5iYXNlXG4gIGxldCBwb3MgdCA9IHQucG9zXG4gIGxldCBsZW5ndGggdCA9IHQubGVuXG4gIGxldCBpc19lbXB0eSB0ID0gSW50LmVxdWFsIHQubGVuIDBcblxuICBsZXQgYmFzZV9vZl9zdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9zdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBiYXNlX29mX2JpZ3N0cmluZyBzID1cbiAgICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGJ1ZiA9IFVuZGVybHlpbmcuY3JlYXRlIGxlbiBpblxuICAgIFVuZGVybHlpbmcuYmxpdF9mcm9tX2JpZ3N0cmluZyB+c3JjOnMgfmRzdDpidWYgKCk7XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSA/cG9zID9sZW4gYmFzZSA9XG4gICAgbGV0IHBvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3NcbiAgICAgICAgP2xlblxuICAgICAgICB+dG90YWxfbGVuZ3RoOihVbmRlcmx5aW5nLmxlbmd0aCBiYXNlKVxuICAgIGluXG4gICAgeyBiYXNlOyBwb3M7IGxlbiB9XG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBsZXQgb3BlbiBRdWlja2NoZWNrLkxldF9zeW50YXggaW5cbiAgICBsZXQlYmluZCBiYXNlID0gVW5kZXJseWluZy5xdWlja2NoZWNrX2dlbmVyYXRvciBpblxuICAgIGxldCBiYXNlX2xlbiA9IFVuZGVybHlpbmcubGVuZ3RoIGJhc2UgaW5cbiAgICBsZXQlYmluZCBsZW4gPSBJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIGJhc2VfbGVuIGluXG4gICAgbGV0JWJpbmQgcG9zID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCAoYmFzZV9sZW4gLSBsZW4pIGluXG4gICAgcmV0dXJuIChjcmVhdGUgfnBvcyB+bGVuIGJhc2UpXG4gIDs7XG5cbiAgbGV0IGdldF9ub19ib3VuZHNfY2hlY2sgdCBpID0gVW5kZXJseWluZy5nZXQgKGJhc2UgdCkgKHBvcyB0ICsgaSlcblxuICBsZXQgZ2V0IHQgaSA9XG4gICAgaWYgaSA+PSAwICYmIGkgPCBsZW5ndGggdFxuICAgIHRoZW4gZ2V0X25vX2JvdW5kc19jaGVjayB0IGlcbiAgICBlbHNlIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuICA7O1xuXG4gIGxldCBzdWIgP3BvcyA/bGVuIHQgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gICAgaW5cbiAgICB7IGJhc2UgPSB0LmJhc2U7IHBvcyA9IHQucG9zICsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIG1vZHVsZSBNYWtlX2FyZyA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBtb2R1bGUgRWx0ID0gQ2hhclxuXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGdvIGFjYyBpID0gaWYgaSA+PSBsZW5ndGggdCB0aGVuIGFjYyBlbHNlIGdvIChmIGFjYyAoZ2V0IHQgaSkpIChpICsgMSkgaW5cbiAgICAgIGdvIGluaXQgMCBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBpdGVyID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICAgICAgICAgICBmIChnZXQgdCBpKVxuICAgICAgICAgICBkb25lKVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZGkgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmluaXQgfmYgLT5cbiAgICAgICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9XG4gICAgICAgICAgICAgaWYgaSA+PSBsZW5ndGggdCB0aGVuIGFjYyBlbHNlIGdvIChmIGkgYWNjIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSkpIChpICsgMSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZ28gaW5pdCAwIFtAbm9udGFpbF0pXG4gICAgOztcblxuICAgIGxldCBpdGVyaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiBpIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZFxuXG4gIG1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZTAgKE1ha2VfYXJnKVxuXG4gIGxldCBmb2xkID0gQy5mb2xkXG4gIGxldCBpdGVyID0gQy5pdGVyXG4gIGxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbiAgbGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuICAoKiBbQy50b19saXN0XSBoYXMgdG8gY29uc3RydWN0IHRoZW4gcmV2ZXJzZSB0aGUgbGlzdCAqKVxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGdldCB0KVxuICBsZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG4gIGxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbiAgbGV0IGZpbmQgPSBDLmZpbmRcbiAgbGV0IGV4aXN0cyA9IEMuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG4gIGxldCBtZW0gPSBDLm1lbVxuICBsZXQgY291bnQgPSBDLmNvdW50XG4gIGxldCBzdW0gPSBDLnN1bVxuICBsZXQgbWluX2VsdCA9IEMubWluX2VsdFxuICBsZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxuICBsZXQgZm9sZGkgPSBDLmZvbGRpXG4gIGxldCBpdGVyaSA9IEMuaXRlcmlcbiAgbGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbiAgbGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuICBsZXQgY291bnRpID0gQy5jb3VudGlcbiAgbGV0IGZpbmRpID0gQy5maW5kaVxuICBsZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcblxuICBsZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gICAgaWYgbiA8IDBcbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICAgIGVsc2UgKFxuICAgICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgICB8IF8gLT4gb25fZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3ByZWZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOm5cbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3Bfc3VmZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG4gIGxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG4gIGxldCBibGl0X3RvICh0eXBlIGEpIChibGl0IDogKFVuZGVybHlpbmcudCwgYSkgQmxpdC50KSB0IH5kc3QgfmRzdF9wb3MgPVxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X3RvX3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2J5dGVzID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG4gIGxldCBibGl0X2Jhc2UgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdFxuXG4gIGxldCBibGl0X2Zyb20gfm5hbWUgKHR5cGUgYSkgKGJsaXQgOiAoYSwgYmFzZSkgQmxpdC50KSB0IH5zcmMgfnNyY19wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gdC5sZW5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJTdWJzdHJpbmcuYmxpdF9mcm9tXyVzIGxlbiA+IHN1YnN0cmluZyBsZW5ndGggOiAlZCA+ICVkXCJcbiAgICAgICAgbmFtZVxuICAgICAgICBsZW5cbiAgICAgICAgdC5sZW5cbiAgICAgICAgKCk7XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuOmxlbiB+ZHN0OnQuYmFzZSB+ZHN0X3Bvczp0LnBvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X2Zyb21fc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwic3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nXG4gIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwiYmlnc3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nXG4gIGxldCBvZl9iYXNlIGJhc2UgPSB7IGJhc2U7IHBvcyA9IDA7IGxlbiA9IFVuZGVybHlpbmcubGVuZ3RoIGJhc2UgfVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX3N0cmluZyB4KVxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX2JpZ3N0cmluZyB4KVxuXG4gIGxldCBtYWtlICh0eXBlIGEpIGNyZWF0ZSAoYmxpdCA6IChiYXNlLCBhKSBCbGl0LnQpIHQgPVxuICAgIGxldCBkc3QgPSBjcmVhdGUgdC5sZW4gaW5cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3M6MCAoKTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihtYWtlIEJ5dGVzLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXMgeClcbiAgOztcblxuICBsZXQgdG9fYmlnc3RyaW5nID0gbWFrZSBCaWdzdHJpbmcuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcblxuICBsZXQgY29uY2F0X2dlbiBjcmVhdGVfZHN0IGJsaXRfZHN0IHRzID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBsZW4gdCAtPiBsZW4gKyBsZW5ndGggdCkgaW5cbiAgICBsZXQgZHN0ID0gY3JlYXRlX2RzdCBsZW4gaW5cbiAgICBpZ25vcmVcbiAgICAgIChMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGRzdF9wb3MgdCAtPlxuICAgICAgICAgYmxpdF9kc3QgdCB+ZHN0IH5kc3RfcG9zO1xuICAgICAgICAgZHN0X3BvcyArIGxlbmd0aCB0KVxuICAgICAgIDogaW50KTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgY29uY2F0IHRzID0gb2ZfYmFzZSAoY29uY2F0X2dlbiBVbmRlcmx5aW5nLmNyZWF0ZSBibGl0X2Jhc2UgdHMpXG5cbiAgbGV0IGNvbmNhdF9zdHJpbmcgdHMgPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihjb25jYXRfZ2VuIEJ5dGVzLmNyZWF0ZSBibGl0X3RvX3N0cmluZyB0cylcbiAgOztcblxuICBsZXQgY29uY2F0X2JpZ3N0cmluZyB0cyA9IGNvbmNhdF9nZW4gQmlnc3RyaW5nLmNyZWF0ZSBibGl0X3RvX2JpZ3N0cmluZyB0c1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IE1ha2Vfc3Vic3RyaW5nLlNcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCeXRlcy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQnl0ZXMuY3JlYXRlXG4gICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCeXRlcy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYnl0ZXNfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdHJpbmdfaWRfaW50ZlxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJfd2l0aF9iaW5fc2hhcGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fcHJvdC5TaGFwZS5VdWlkLnQgb3B0aW9uXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgICAgY29tcGFyZSwgZXF1YWwsIGdsb2JhbGl6ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBsZXQgY2hlY2tfZm9yX3doaXRlc3BhY2UgPVxuICAgICAgICAgIGxldCBpbnZhbGlkIHMgcmVhc29uID1cbiAgICAgICAgICAgIEVycm9yIChzcHJpbnRmIFwiJyVzJyBpcyBub3QgYSB2YWxpZCAlcyBiZWNhdXNlICVzXCIgcyBNLm1vZHVsZV9uYW1lIHJlYXNvbilcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBzIC0+XG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgICAgICAgICBpZiBJbnQuKCA9ICkgbGVuIDBcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaXMgZW1wdHlcIlxuICAgICAgICAgICAgZWxzZSBpZiBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bMF0gfHwgQ2hhci5pc193aGl0ZXNwYWNlIHMuW2xlbiAtIDFdXG4gICAgICAgICAgICB0aGVuIGludmFsaWQgcyBcIml0IGhhcyB3aGl0ZXNwYWNlIG9uIHRoZSBlZGdlXCJcbiAgICAgICAgICAgIGVsc2UgT2sgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdmFsaWRhdGUgcyA9IFJlc3VsdC5tYXBfZXJyb3IgKE0udmFsaWRhdGUgcykgfmY6RXJyb3IudG9fc3RyaW5nX21hY2hcblxuICAgICAgICBsZXQgY2hlY2sgcyA9XG4gICAgICAgICAgaWYgTS5pbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvblxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggY2hlY2tfZm9yX3doaXRlc3BhY2UgcyB3aXRoXG4gICAgICAgICAgICB8IE9rICgpIC0+IHZhbGlkYXRlIHNcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gRXJyb3IgZXJyb3IpXG4gICAgICAgICAgZWxzZSB2YWxpZGF0ZSBzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgICAgIGxldCBwcCA9IFN0cmluZy5wcFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgICAgbWF0Y2ggY2hlY2sgcyB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBzXG4gICAgICAgICAgfCBFcnJvciBlcnIgLT4gaW52YWxpZF9hcmcgZXJyXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBsZXQgcyA9IFN0cmluZy5TdGFibGUuVjEudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBvZl9zZXhwX2Vycm9yIGVyciBzZXhwXG4gICAgICAgIDs7XG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIEJpbmFibGUuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAgIChTdHJpbmcpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0cmluZ1xuICAgICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgICAgICAgbGV0IG9wZW4gQmluX3Byb3QuU2hhcGUgaW5cbiAgICAgICAgICBtYXRjaCBNLmNhbGxlcl9pZGVudGl0eSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJpbl9zaGFwZV90XG4gICAgICAgICAgfCBTb21lIHV1aWQgLT4gYW5ub3RhdGUgdXVpZCBiaW5fc2hhcGVfdFxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBUX3dpdGhfY29tcGFyYXRvciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVF93aXRoX2NvbXBhcmF0b3JcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVF93aXRoX2NvbXBhcmF0b3IpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGVfbGF0ZXN0ID0gU3RhYmxlLlYxXG4gIGluY2x1ZGUgU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvclxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3IpXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IFN0cmluZy5xdWlja2NoZWNrX29ic2VydmVyXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBTdHJpbmcuZ2VuX25vbmVtcHR5JyBDaGFyLmdlbl9wcmludFxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlciB+ZjooZnVuIHN0cmluZyAtPiBjaGVjayBzdHJpbmcgfD4gUmVzdWx0LmlzX29rKVxuICA7O1xuXG4gIGxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIG9mX3N0cmluZ1xuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyX3dpdGhfYmluX3NoYXBlXG4gICAgICAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgTVxuXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXJcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgICBsZXQgdmFsaWRhdGUgPSBGbi5jb25zdCAoT2sgKCkpXG4gICAgICAgIGxldCBpbmNsdWRlX2RlZmF1bHRfdmFsaWRhdGlvbiA9IHRydWVcbiAgICAgIGVuZClcbiAgICAgICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF92YWxpZGF0ZSAoTSA6IHNpZ1xuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCB2YWxpZGF0ZSA6IHN0cmluZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gOiBib29sXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfdmFsaWRhdGVfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSkgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKVxuICAgICgpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aG91dF9wcmV0dHlfcHJpbnRlciAoTSkgKClcblxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0aF9kaXN0aW5jdF9iaW5fc2hhcGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3Byb3QuU2hhcGUuVXVpZC50XG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyX3dpdGhfYmluX3NoYXBlXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPSBTb21lIE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gICAgICAoKVxuXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlXG4gIE1ha2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuU3RyaW5nX2lkXCJcbiAgICBlbmQpXG4gICAgKClcblxubW9kdWxlIFN0cmluZ193aXRob3V0X3ZhbGlkYXRpb25fd2l0aG91dF9wcmV0dHlfcHJpbnRlciA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBnbG9iYWxpemUgPSBnbG9iYWxpemVfc3RyaW5nXG4gIGxldCBhcmdfdHlwZSA9IENvbW1hbmQuQXJnX3R5cGUuY3JlYXRlIEZuLmlkXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgU3RhYmxlX3VuaXRfdGVzdF9pbnRmXG5cbm1vZHVsZSBNYWtlX3NleHBfZGVzZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBkZXNlcmlhbGl6YXRpb25cIiA9XG4gICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgKExpc3QubWFwIFQudGVzdHMgfmY6KGZ1biAodCwgc2V4cF9hc19zdHJpbmcsIF8pIC0+XG4gICAgICAgICBtYXRjaFxuICAgICAgICAgICBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgc2V4cF9hc19zdHJpbmcgfD4gU2V4cC5vZl9zdHJpbmcgfD4gWyVvZl9zZXhwOiBULnRdKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBFcnJvciBfIGFzIGVycm9yIC0+XG4gICAgICAgICAgIE9yX2Vycm9yLnRhZ19hcmdcbiAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgIFwiY291bGQgbm90IGRlc2VyaWFsaXplIHNleHBcIlxuICAgICAgICAgICAgIChzZXhwX2FzX3N0cmluZywgYEV4cGVjdGVkIHQpXG4gICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBbIGBFeHBlY3RlZCBvZiBULnQgXV1cbiAgICAgICAgIHwgT2sgdCcgLT5cbiAgICAgICAgICAgaWYgVC5lcXVhbCB0IHQnXG4gICAgICAgICAgIHRoZW4gT2sgKClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICAgIHw+IG9rX2V4blxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX3NleHBfc2VyaWFsaXphdGlvbl90ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcInNleHAgc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgbGV0IHNleHAgPSBTZXhwLm9mX3N0cmluZyBzZXhwX2FzX3N0cmluZyBpblxuICAgICAgICAgICBsZXQgc2VyaWFsaXplZF9zZXhwID0gVC5zZXhwX29mX3QgdCBpblxuICAgICAgICAgICBpZiBTZXhwLiggPD4gKSBzZXJpYWxpemVkX3NleHAgc2V4cFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgICBcInNleHAgc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAgICAoYEV4cGVjdGVkIHNleHAsIGBCdXRfZ290IHNlcmlhbGl6ZWRfc2V4cClcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IF0gKiBbIGBCdXRfZ290IG9mIFNleHAudCBdXSkpKVxuICAgIHw+IG9rX2V4blxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2Jpbl9pb190ZXN0IChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLkFyZykgPSBzdHJ1Y3RcbiAgbGV0JXRlc3RfdW5pdCBcImJpbl9pb1wiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCBfLCBleHBlY3RlZF9iaW5faW8pIC0+XG4gICAgICBsZXQgYmluYWJsZV9tID0gKG1vZHVsZSBUIDogQmluYWJsZS5TIHdpdGggdHlwZSB0ID0gVC50KSBpblxuICAgICAgbGV0IHRvX2Jpbl9zdHJpbmcgdCA9IEJpbmFibGUudG9fc3RyaW5nIGJpbmFibGVfbSB0IGluXG4gICAgICBsZXQgc2VyaWFsaXplZF9iaW5faW8gPSB0b19iaW5fc3RyaW5nIHQgaW5cbiAgICAgIGlmIFN0cmluZy4oIDw+ICkgc2VyaWFsaXplZF9iaW5faW8gZXhwZWN0ZWRfYmluX2lvXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImJpbl9pbyBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAodCwgYEV4cGVjdGVkIGV4cGVjdGVkX2Jpbl9pbywgYEJ1dF9nb3Qgc2VyaWFsaXplZF9iaW5faW8pXG4gICAgICAgICAgWyVzZXhwX29mOiBULnQgKiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgXSAqIFsgYEJ1dF9nb3Qgb2Ygc3RyaW5nIF1dO1xuICAgICAgbGV0IHQnID0gQmluYWJsZS5vZl9zdHJpbmcgYmluYWJsZV9tIHNlcmlhbGl6ZWRfYmluX2lvIGluXG4gICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVClcbiAgaW5jbHVkZSBNYWtlX3NleHBfc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2VfYmluX2lvX3Rlc3QgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdW5vcmRlcmVkX2NvbnRhaW5lciAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5Vbm9yZGVyZWRfY29udGFpbmVyX2FyZykgPVxuc3RydWN0XG4gIG1vZHVsZSBUZXN0ID0gU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfdGVzdFxuXG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5zZXhwczsgXyB9KSAtPlxuICAgICAgbGV0IHNleHBzID0gTGlzdC5tYXAgc2V4cHMgfmY6U2V4cC5vZl9zdHJpbmcgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2VsZW1lbnRzID1cbiAgICAgICAgbWF0Y2ggVC5zZXhwX29mX3QgdCB3aXRoXG4gICAgICAgIHwgU2V4cC5MaXN0IHNleHBzIC0+IHNleHBzXG4gICAgICAgIHwgU2V4cC5BdG9tIF8gLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiZXhwZWN0ZWQgbGlzdCB3aGVuIHNlcmlhbGl6aW5nIHVub3JkZXJlZCBjb250YWluZXJcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgVC5zZXhwX29mX3RcbiAgICAgIGluXG4gICAgICBsZXQgc29ydGVkX3NleHBzID0gTGlzdC5zb3J0IH5jb21wYXJlOlNleHAuY29tcGFyZSBzZXhwcyBpblxuICAgICAgbGV0IHNvcnRlZF9zZXJpYWxpemVkID0gTGlzdC5zb3J0IH5jb21wYXJlOlNleHAuY29tcGFyZSBzZXJpYWxpemVkX2VsZW1lbnRzIGluXG4gICAgICBpZiBub3QgKExpc3QuZXF1YWwgU2V4cC4oID0gKSBzb3J0ZWRfc2V4cHMgc29ydGVkX3NlcmlhbGl6ZWQpXG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcInNleHAgc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCBzZXhwcywgYEJ1dF9nb3Qgc2VyaWFsaXplZF9lbGVtZW50cylcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFNleHAudCBsaXN0IF0gKiBbIGBCdXRfZ290IG9mIFNleHAudCBsaXN0IF1dO1xuICAgICAgbGV0IHNleHBfcGVybXV0YXRpb25zID0gTGlzdC5pbml0IDEwIH5mOihmdW4gXyAtPiBMaXN0LnBlcm11dGUgc2V4cHMpIGluXG4gICAgICBMaXN0Lml0ZXIgc2V4cF9wZXJtdXRhdGlvbnMgfmY6KGZ1biBzZXhwcyAtPlxuICAgICAgICBsZXQgdCcgPSBULnRfb2Zfc2V4cCAoU2V4cC5MaXN0IHNleHBzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJzZXhwIGRlc2VyaWFsaXphdGlvbiBtc2ltYXRjaFwiXG4gICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgOztcblxuICBsZXQgcmVjIGlzX2NvbmNhdGVuYXRpb24gc3RyaW5nIHN0cmluZ3MgPVxuICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICB0aGVuIExpc3QuZm9yX2FsbCBzdHJpbmdzIH5mOlN0cmluZy5pc19lbXB0eVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHJldl9za2lwcGVkIHN0cmluZ3MgPVxuICAgICAgICBtYXRjaCBzdHJpbmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgICB8IHByZWZpeCA6OiBzdHJpbmdzIC0+XG4gICAgICAgICAgbGV0IGNvbnRpbnVlICgpID0gbG9vcCAocHJlZml4IDo6IHJldl9za2lwcGVkKSBzdHJpbmdzIGluXG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4IHN0cmluZyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBjb250aW51ZSAoKVxuICAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgICAgICAgICAgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgKExpc3QucmV2X2FwcGVuZCByZXZfc2tpcHBlZCBzdHJpbmdzKSB8fCBjb250aW51ZSAoKSlcbiAgICAgIGluXG4gICAgICBsb29wIFtdIHN0cmluZ3MpXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImJpbl9pb1wiID1cbiAgICBMaXN0Lml0ZXIgVC50ZXN0cyB+ZjooZnVuICh0LCB7IFRlc3QuYmluX2lvX2hlYWRlcjsgYmluX2lvX2VsZW1lbnRzOyBfIH0pIC0+XG4gICAgICBsZXQgYmluYWJsZV9tID0gKG1vZHVsZSBUIDogQmluYWJsZS5TIHdpdGggdHlwZSB0ID0gVC50KSBpblxuICAgICAgbGV0IGVsZW1lbnRzID0gYmluX2lvX2VsZW1lbnRzIGluXG4gICAgICBsZXQgYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzID0gYmluX2lvX2hlYWRlciBeIFN0cmluZy5jb25jYXQgZWxlbWVudHMgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemF0aW9uX21hdGNoZXMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9wcmVmaXggfnByZWZpeDpiaW5faW9faGVhZGVyIHNlcmlhbGl6ZWQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIGVsZW1lbnRzX3N0cmluZyAtPiBpc19jb25jYXRlbmF0aW9uIGVsZW1lbnRzX3N0cmluZyBlbGVtZW50c1xuICAgICAgaW5cbiAgICAgIGlmIG5vdCBzZXJpYWxpemF0aW9uX21hdGNoZXNcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgKGBFeHBlY3RlZCAoYmluX2lvX2hlYWRlciwgZWxlbWVudHMpLCBgQnV0X2dvdCBzZXJpYWxpemVkKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2Ygc3RyaW5nICogc3RyaW5nIGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2Ygc3RyaW5nIF1dO1xuICAgICAgbGV0IHBlcm11dGF0YXRpb25zID0gTGlzdC5pbml0IDEwIH5mOihmdW4gXyAtPiBMaXN0LnBlcm11dGUgZWxlbWVudHMpIGluXG4gICAgICBMaXN0Lml0ZXIgcGVybXV0YXRhdGlvbnMgfmY6KGZ1biBlbGVtZW50cyAtPlxuICAgICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gKGJpbl9pb19vZl9lbGVtZW50cyBlbGVtZW50cykgaW5cbiAgICAgICAgaWYgbm90IChULmVxdWFsIHQgdCcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiYmluLWlvIGRlc2VyaWFsaXphdGlvbiBtaXNtYXRjaFwiXG4gICAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBULnQgXSAqIFsgYEJ1dF9nb3Qgb2YgVC50IF1dKSlcbiAgOztcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbigqIFRoZSBtb2R1bGUgW1RdIHNlcnZlcyB0byBlbmZvcmNlIHRoZSBpbnZhcmlhbnQgdGhhdCBhbGwgQmxhbmcudCB2YWx1ZXMgYXJlIGluIGFcbiAgIG5vcm1hbCBmb3JtIHdoZXJlYnkgYm9vbGVhbiBjb25zdGFudHMgVHJ1ZSBhbmQgRmFsc2Ugb25seSBhcHBlYXIgYXMgdGhlIHRvcG1vc3RcbiAgIGNvbnN0cnVjdG9yIC0tIGluIGFueSBvdGhlciBwb3NpdGlvbiB0aGV5IGFyZSBzaW1wbGlmaWVkIGF3YXkgdXNpbmcgbGF3cyBvZlxuICAgYm9vbGVhbiBhbGdlYnJhLlxuXG4gICBXZSBhbHNvIGVuZm9yY2UgdGhhdCBuZXN0ZWQgW0FuZF1zIGFuZCBbT3JdcyBlYWNoIGxlYW4gdG8gdGhlIHJpZ2h0IHNvIHRoYXQgW2V2YWxdXG4gICBkb2Vzbid0IG5lZWQgc28gbXVjaCBzdGFjayBzcGFjZSBhcyBpdCB3b3VsZCBpZiB0aGV5IGxlYW5lZCB0byB0aGUgbGVmdC4gIFRob3VnaHRcbiAgIGV4cGVyaW1lbnQ6IGNvbXBhcmUgaG93IFtldmFsXSB3b3JrcyBvbiByaWdodC1sZWFuaW5nIFtBbmQgKGEsIEFuZCAoYiwgQW5kIChjLCBkKSkpXVxuICAgdmVyc3VzIGxlZnQtbGVhbmluZyBbQW5kIChBbmQgKEFuZCAoYSwgYiksIGMpLCBkKV0uICBUaGUgZm9ybWVyIGlzIHRoZSBiZXN0IGNhc2UgYW5kIGlzXG4gICBlbmZvcmNlZC5cblxuICAgTm90ZTogdGhpcyBmaWxlIGRldmlhdGVzIGZyb20gdGhlIHVzdWFsIHBhdHRlcm4gb2YgbW9kdWxlcyB3aXRoIFN0YWJsZSBpbnRlcmZhY2VzIGluXG4gICB0aGF0IHRoZSBTdGFibGUgc3ViLW1vZHVsZSBpcyBub3QgdGhlIGZpcnN0IHRoaW5nIHRvIGJlIGRlZmluZWQgaW4gdGhlIG1vZHVsZS4gIFRoZVxuICAgcmVhc29uIGZvciB0aGlzIGRldmlhdGlvbiBpcyBzbyB0aGF0IG9uZSBjYW4gY29udmluY2Ugb25lc2VsZiBvZiB0aGUgYWZvcmVtZW50aW9uZWRcbiAgIGludmFyaWFudCBhZnRlciByZWFkaW5nIG9ubHkgdGhpcyBzbWFsbCBhbW91bnQgb2YgY29kZS4gIEFmdGVyIGRlZmluaW5nIFQgd2UgdGhlblxuICAgaW1tZWRpYXRlbHkgZGVmaW5lIGl0cyBTdGFibGUgaW50ZXJmYWNlLlxuKilcbm1vZHVsZSBUIDogc2lnXG4gIHR5cGUgKydhIHQgPSBwcml2YXRlXG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCB0eXBlcmVwXVxuXG4gIHZhbCBpbnZhcmlhbnQgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHRydWVfIDogJ2EgdFxuICB2YWwgZmFsc2VfIDogJ2EgdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kYWxzbyA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBvcmVsc2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgYmFzZSA6ICdhIC0+ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID1cbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgbGV0IGludmFyaWFudCA9XG4gICAgbGV0IHN1YnRlcm1zID0gZnVuY3Rpb25cbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIHwgQmFzZSBfIC0+IFtdXG4gICAgICB8IE5vdCB0MSAtPiBbIHQxIF1cbiAgICAgIHwgQW5kICh0MSwgdDIpIHwgT3IgKHQxLCB0MikgLT4gWyB0MTsgdDIgXVxuICAgICAgfCBJZiAodDEsIHQyLCB0MykgLT4gWyB0MTsgdDI7IHQzIF1cbiAgICBpblxuICAgIGxldCByZWMgY29udGFpbnNfbm9fY29uc3RhbnRzID0gZnVuY3Rpb25cbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gICAgaW5cbiAgICBmdW4gdCAtPiBMaXN0Lml0ZXIgfmY6Y29udGFpbnNfbm9fY29uc3RhbnRzIChzdWJ0ZXJtcyB0KVxuICA7O1xuXG4gIGxldCB0cnVlXyA9IFRydWVcbiAgbGV0IGZhbHNlXyA9IEZhbHNlXG4gIGxldCBiYXNlIHYgPSBCYXNlIHZcblxuICBsZXQgbm90XyA9IGZ1bmN0aW9uXG4gICAgfCBUcnVlIC0+IEZhbHNlXG4gICAgfCBGYWxzZSAtPiBUcnVlXG4gICAgfCBOb3QgdCAtPiB0XG4gICAgfCB0IC0+IE5vdCB0XG4gIDs7XG5cbiAgbGV0IHJlYyBhbmRhbHNvIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgRmFsc2UgfCBGYWxzZSwgXyAtPiBGYWxzZVxuICAgIHwgb3RoZXIsIFRydWUgfCBUcnVlLCBvdGhlciAtPiBvdGhlclxuICAgIHwgQW5kICh0MWEsIHQxYiksIF8gLT5cbiAgICAgICgqIG5lc3RlZCBbQW5kXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgQW5kICh0MWEsIGFuZGFsc28gdDFiIHQyKVxuICAgIHwgXyAtPiBBbmQgKHQxLCB0MilcbiAgOztcblxuICBsZXQgcmVjIG9yZWxzZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IF8sIFRydWUgfCBUcnVlLCBfIC0+IFRydWVcbiAgICB8IG90aGVyLCBGYWxzZSB8IEZhbHNlLCBvdGhlciAtPiBvdGhlclxuICAgIHwgT3IgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtPcl1zIGxlYW4gcmlnaHQgLS0gc2VlIGNvbW1lbnQgYWJvdmUgKilcbiAgICAgIE9yICh0MWEsIG9yZWxzZSB0MWIgdDIpXG4gICAgfCBfIC0+IE9yICh0MSwgdDIpXG4gIDs7XG5cbiAgbGV0IGlmXyBhIGIgYyA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBUcnVlIC0+IGJcbiAgICB8IEZhbHNlIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBiLCBjIHdpdGhcbiAgICAgICB8IFRydWUsIF8gLT4gb3JlbHNlIGEgY1xuICAgICAgIHwgXywgRmFsc2UgLT4gYW5kYWxzbyBhIGJcbiAgICAgICB8IF8sIFRydWUgLT4gb3JlbHNlIChub3RfIGEpIGJcbiAgICAgICB8IEZhbHNlLCBfIC0+IGFuZGFsc28gKG5vdF8gYSkgY1xuICAgICAgIHwgXyAtPiBJZiAoYSwgYiwgYykpXG4gIDs7XG5lbmRcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgfCBUcnVlXG4gICAgfCBGYWxzZVxuICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgIHwgTm90IG9mICdhIHRcbiAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgIHwgQmFzZSBvZiAnYVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgICgqIFRISVMgVFlQRSBBTkQgSVRTIFNFUklBTElaQVRJT05TIFNIT1VMRCBORVZFUiBCRSBDSEFOR0VEIC0gUExFQVNFIFNQRUFLIFdJVEhcbiAgICAgICBBTk9USEVSIERFVkVMT1BFUiBJRiBZT1UgTkVFRCBNT1JFIERFVEFJTCAqKVxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc3RhYmxlX3dpdG5lc3MsIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICAoKiB0aGUgcmVtYWluZGVyIG9mIHRoaXMgc2lnbmF0dXJlIGNvbnNpc3RzIG9mIGZ1bmN0aW9ucyB1c2VkIGluIHRoZSBkZWZpbml0aW9uc1xuICAgICAgIG9mIHNleHAgY29udmVyc2lvbnMgdGhhdCBhcmUgYWxzbyB1c2VmdWwgbW9yZSBnZW5lcmFsbHkgKilcblxuICAgIHZhbCBhbmRfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgICB2YWwgb3JfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgICB2YWwgZ2F0aGVyX2Nvbmp1bmN0cyA6ICdhIHQgLT4gJ2EgdCBsaXN0XG4gICAgdmFsIGdhdGhlcl9kaXNqdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG5cbiAgICAoKiBUaGlzIHR5cGUgaXMgYXNzdW1lZCB0byBiZSBzdGFibGUgaWYgdGhlICdhIGlzIHN0YWJsZSAoc2VlIGJpZyBjb21tZW50IGFib3ZlKS4gKilcbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgKF8gOiAnYSBTdGFibGVfd2l0bmVzcy50KSA6ICdhIHQgU3RhYmxlX3dpdG5lc3MudCA9XG4gICAgICBTdGFibGVfd2l0bmVzcy5hc3NlcnRfc3RhYmxlXG4gICAgOztcblxuICAgIGluY2x1ZGUgKFxuICAgICAgVCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHQpXG5cbiAgICB0eXBlIHNleHAgPSBTZXhwLnQgPVxuICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgfCBMaXN0IG9mIHNleHAgbGlzdFxuXG4gICAgKCogY2hlYXAgaW1wb3J0ICopXG5cbiAgICAoKiBmbGF0dGVuIG91dCBuZXN0ZWQgYW5kJ3MgKilcbiAgICBsZXQgZ2F0aGVyX2Nvbmp1bmN0cyB0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICAgICAgfCBBbmQgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgICAgICB8IHQgOjogdHMgLT4gbG9vcCAodCA6OiBhY2MpIHRzXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBbIHQgXVxuICAgIDs7XG5cbiAgICAoKiBmbGF0dGVuIG91dCBuZXN0ZWQgb3IncyAqKVxuICAgIGxldCBnYXRoZXJfZGlzanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRmFsc2UgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICAgICAgfCBPciAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIFthbmRfXSBhbmQgW29yX10gdXNlIFtmb2xkX3JpZ2h0XSBpbnN0ZWFkIG9mIFtmb2xkX2xlZnRdIHRvIGF2b2lkIHF1YWRyYXRpY1xuICAgICAgIGJlaGF2aW9yIHdpdGggW2FuZGFsc29dIG9yIFtvcmVsc2VdLCByZXNwZWN0aXZlbHkuICopXG4gICAgbGV0IGFuZF8gdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6dHJ1ZV8gfmY6YW5kYWxzb1xuICAgIGxldCBvcl8gdHMgPSBMaXN0LmZvbGRfcmlnaHQgdHMgfmluaXQ6ZmFsc2VfIH5mOm9yZWxzZVxuXG4gICAgbGV0IHVuYXJ5IG5hbWUgYXJncyBzZXhwID1cbiAgICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgfCBbIHggXSAtPiB4XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBhcmdzIGluXG4gICAgICAgIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlcyBleHBlY3RzIG9uZSBhcmd1bWVudCwgJWQgZm91bmRcIiBuYW1lIG4pIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHRlcm5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeDsgeTsgeiBdIC0+IHgsIHksIHpcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgdGhyZWUgYXJndW1lbnRzLCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSB4IC0+IHNleHBfb2ZfdmFsdWUgeFxuICAgICAgICB8IFRydWUgLT4gQXRvbSBcInRydWVcIlxuICAgICAgICB8IEZhbHNlIC0+IEF0b20gXCJmYWxzZVwiXG4gICAgICAgIHwgTm90IHQgLT4gTGlzdCBbIEF0b20gXCJub3RcIjsgYXV4IHQgXVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBMaXN0IFsgQXRvbSBcImlmXCI7IGF1eCB0MTsgYXV4IHQyOyBhdXggdDMgXVxuICAgICAgICB8IEFuZCBfIGFzIHQgLT5cbiAgICAgICAgICBsZXQgdHMgPSBnYXRoZXJfY29uanVuY3RzIHQgaW5cbiAgICAgICAgICBMaXN0IChBdG9tIFwiYW5kXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgICB8IE9yIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9kaXNqdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJvclwiIDo6IExpc3QubWFwIH5mOmF1eCB0cylcbiAgICAgIGluXG4gICAgICBhdXggdFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIGJhc2Vfb2Zfc2V4cCBzZXhwID1cbiAgICAgIGxldCBiYXNlIHNleHAgPSBiYXNlIChiYXNlX29mX3NleHAgc2V4cCkgaW5cbiAgICAgIGxldCByZWMgYXV4IHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBBdG9tIGt3IC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5sb3dlcmNhc2Uga3cgd2l0aFxuICAgICAgICAgICB8IFwidHJ1ZVwiIC0+IHRydWVfXG4gICAgICAgICAgIHwgXCJmYWxzZVwiIC0+IGZhbHNlX1xuICAgICAgICAgICB8IF8gLT4gYmFzZSBzZXhwKVxuICAgICAgICB8IExpc3QgKEF0b20ga3cgOjogYXJncykgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJhbmRcIiAtPiBhbmRfIChMaXN0Lm1hcCB+ZjphdXggYXJncylcbiAgICAgICAgICAgfCBcIm9yXCIgLT4gb3JfIChMaXN0Lm1hcCB+ZjphdXggYXJncylcbiAgICAgICAgICAgfCBcIm5vdFwiIC0+IG5vdF8gKGF1eCAodW5hcnkgXCJub3RcIiBhcmdzIHNleHApKVxuICAgICAgICAgICB8IFwiaWZcIiAtPlxuICAgICAgICAgICAgIGxldCB4LCB5LCB6ID0gdGVybmFyeSBcImlmXCIgYXJncyBzZXhwIGluXG4gICAgICAgICAgICAgaWZfIChhdXggeCkgKGF1eCB5KSAoYXV4IHopXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgXyAtPiBiYXNlIHNleHBcbiAgICAgIGluXG4gICAgICBhdXggc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgOiAnYS4gJ2EgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgICAgbGV0IGRlZm5zIDogU2V4cGxpYi5TZXhwX2dyYW1tYXIuZGVmbiBsaXN0ID1cbiAgICAgICAgbGV0IGJsYW5nIDogU2V4cGxpYi5TZXhwX2dyYW1tYXIuZ3JhbW1hciA9IFJlY3Vyc2l2ZSAoXCJibGFuZ1wiLCBbIFR5dmFyIFwiYVwiIF0pIGluXG4gICAgICAgIFsgeyB0eWNvbiA9IFwiYmxhbmdcIlxuICAgICAgICAgIDsgdHl2YXJzID0gWyBcImFcIiBdXG4gICAgICAgICAgOyBncmFtbWFyID1cbiAgICAgICAgICAgICAgVW5pb25cbiAgICAgICAgICAgICAgICBbIFR5dmFyIFwiYVwiXG4gICAgICAgICAgICAgICAgOyBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2VfaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFsgTm9fdGFnIHsgbmFtZSA9IFwidHJ1ZVwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiZmFsc2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiaWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9IENvbnMgKGJsYW5nLCBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIEVtcHR5KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBNYW55IGJsYW5nIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwib3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPSBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBNYW55IGJsYW5nIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwibm90XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gQ29ucyAoYmxhbmcsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIGZ1biBiYXNlX2dyYW1tYXIgLT4geyB1bnR5cGVkID0gVHljb24gKFwiYmxhbmdcIiwgWyBiYXNlX2dyYW1tYXIudW50eXBlZCBdLCBkZWZucykgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFN0YWJsZS5WMSA6IG1vZHVsZSB0eXBlIG9mIFN0YWJsZS5WMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG5sZXQgY29uc3RhbnQgYiA9IGlmIGIgdGhlbiB0cnVlXyBlbHNlIGZhbHNlX1xuXG5tb2R1bGUgdHlwZSBDb25zdHJ1Y3RvcnMgPSBzaWdcbiAgdmFsIGJhc2UgOiAnYSAtPiAnYSB0XG4gIHZhbCB0cnVlXyA6IF8gdFxuICB2YWwgZmFsc2VfIDogXyB0XG4gIHZhbCBjb25zdGFudCA6IGJvb2wgLT4gXyB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRfIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG5cbiAgbGV0IG5vdCA9IG5vdF9cbiAgbGV0IGFuZF8gPSBhbmRfXG4gIGxldCBvcl8gPSBvcl9cbiAgbGV0IGNvbnN0YW50ID0gY29uc3RhbnRcbiAgbGV0ICggJiYgKSA9IGFuZGFsc29cbiAgbGV0ICggfHwgKSA9IG9yZWxzZVxuICBsZXQgKCA9PT4gKSBhIGIgPSAobm90IGEpIHx8IGJcbmVuZFxuXG5sZXQgY29uc3RhbnRfdmFsdWUgPSBmdW5jdGlvblxuICB8IFRydWUgLT4gU29tZSB0cnVlXG4gIHwgRmFsc2UgLT4gU29tZSBmYWxzZVxuICB8IF8gLT4gTm9uZVxuOztcblxuKCogW3ZhbHVlcyB0XSBsaXN0cyB0aGUgYmFzZSBwcmVkaWNhdGVzIGluIFt0XSBmcm9tIGxlZnQgdG8gcmlnaHQgKilcbmxldCB2YWx1ZXMgdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgQmFzZSB2IDo6IHRzIC0+IGxvb3AgKHYgOjogYWNjKSB0c1xuICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgIHwgRmFsc2UgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IE5vdCB0MSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdHMpXG4gICAgfCBBbmQgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgIHwgT3IgKHQxLCB0MikgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHQyIDo6IHRzKVxuICAgIHwgSWYgKHQxLCB0MiwgdDMpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0MyA6OiB0cylcbiAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICBpblxuICBsb29wIFtdIFsgdCBdXG47O1xuXG5tb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyB0IHBlbmRpbmcgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIGEgLT4gbmV4dCAoZiBhY2MgYSkgcGVuZGluZ1xuICAgICAgICB8IFRydWUgfCBGYWxzZSAtPiBuZXh0IGFjYyBwZW5kaW5nXG4gICAgICAgIHwgTm90IHQgLT4gbG9vcCBhY2MgdCBwZW5kaW5nXG4gICAgICAgIHwgQW5kICh0MSwgdDIpIHwgT3IgKHQxLCB0MikgLT4gbG9vcCBhY2MgdDEgKHQyIDo6IHBlbmRpbmcpXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiB0MyA6OiBwZW5kaW5nKVxuICAgICAgYW5kIG5leHQgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgYWNjIHQgdHNcbiAgICAgIGluXG4gICAgICBsb29wIGluaXQgdCBbXSBbQG5vbnRhaWxdXG4gICAgOztcblxuICAgIGxldCBpdGVyID0gYERlZmluZV91c2luZ19mb2xkXG4gICAgbGV0IGxlbmd0aCA9IGBEZWZpbmVfdXNpbmdfZm9sZFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IGZvbGQgPSBDLmZvbGRcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgaXNfZW1wdHkgPSBDLmlzX2VtcHR5XG5sZXQgaXRlciA9IEMuaXRlclxubGV0IGxlbmd0aCA9IEMubGVuZ3RoXG5sZXQgbWVtID0gQy5tZW1cbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgbWluX2VsdCA9IEMubWluX2VsdFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5cbmxldCByZWMgYmluZCB0IH5mOmsgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBCYXNlIHYgLT4gayB2XG4gIHwgVHJ1ZSAtPiB0cnVlX1xuICB8IEZhbHNlIC0+IGZhbHNlX1xuICB8IE5vdCB0MSAtPiBub3RfIChiaW5kIHQxIH5mOmspXG4gICgqIFVuZm9ydHVuYXRlbHkgd2UgbmVlZCB0byBkdXBsaWNhdGUgc29tZSBvZiB0aGUgc2hvcnQtY2lyY3VpdGluZyBmcm9tIFthbmRhbHNvXSBhbmRcbiAgICAgZnJpZW5kcyBoZXJlLiBJbiBwcmluY2lwbGUgd2UgY291bGQgZG8gc29tZXRoaW5nIGludm9sdmluZyBbTGF6eS50XSBidXQgdGhlXG4gICAgIG92ZXJoZWFkIHByb2JhYmx5IHdvdWxkbid0IGJlIHdvcnRoIGl0LiAqKVxuICB8IEFuZCAodDEsIHQyKSAtPlxuICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICB8IEZhbHNlIC0+IGZhbHNlX1xuICAgICB8IG90aGVyIC0+IGFuZGFsc28gb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gIHwgT3IgKHQxLCB0MikgLT5cbiAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgfCBUcnVlIC0+IHRydWVfXG4gICAgIHwgb3RoZXIgLT4gb3JlbHNlIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPlxuICAgIChtYXRjaCBiaW5kIHQxIH5mOmsgd2l0aFxuICAgICB8IFRydWUgLT4gYmluZCB0MiB+ZjprXG4gICAgIHwgRmFsc2UgLT4gYmluZCB0MyB+ZjprXG4gICAgIHwgb3RoZXIgLT4gaWZfIG90aGVyIChiaW5kIHQyIH5mOmspIChiaW5kIHQzIH5mOmspKVxuOztcblxuKCogc2VtYW50aWNzICopXG5cbmxldCByZWMgZXZhbCB0IGJhc2VfZXZhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFRydWUgLT4gdHJ1ZVxuICB8IEZhbHNlIC0+IGZhbHNlXG4gIHwgQW5kICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsICYmIGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgT3IgKHQxLCB0MikgLT4gZXZhbCB0MSBiYXNlX2V2YWwgfHwgZXZhbCB0MiBiYXNlX2V2YWxcbiAgfCBOb3QgdCAtPiBub3QgKGV2YWwgdCBiYXNlX2V2YWwpXG4gIHwgSWYgKHQxLCB0MiwgdDMpIC0+IGlmIGV2YWwgdDEgYmFzZV9ldmFsIHRoZW4gZXZhbCB0MiBiYXNlX2V2YWwgZWxzZSBldmFsIHQzIGJhc2VfZXZhbFxuICB8IEJhc2UgeCAtPiBiYXNlX2V2YWwgeFxuOztcblxubGV0IHNwZWNpYWxpemUgdCBmID1cbiAgYmluZCB0IH5mOihmdW4gdiAtPlxuICAgIG1hdGNoIGYgdiB3aXRoXG4gICAgfCBgS25vd24gYyAtPiBjb25zdGFudCBjXG4gICAgfCBgVW5rbm93biAtPiBiYXNlIHYpIFtAbm9udGFpbF1cbjs7XG5cbmxldCBldmFsX3NldCB+dW5pdmVyc2U6YWxsIHNldF9vZl9iYXNlIHQgPVxuICBsZXQgcmVjIGF1eCAoYiA6IF8gdCkgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgIHwgVHJ1ZSAtPiBmb3JjZSBhbGxcbiAgICB8IEZhbHNlIC0+IFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihTZXQuY29tcGFyYXRvciAoZm9yY2UgYWxsKSlcbiAgICB8IEFuZCAoYSwgYikgLT4gU2V0LmludGVyIChhdXggYSkgKGF1eCBiKVxuICAgIHwgT3IgKGEsIGIpIC0+IFNldC51bmlvbiAoYXV4IGEpIChhdXggYilcbiAgICB8IE5vdCBhIC0+IFNldC5kaWZmIChmb3JjZSBhbGwpIChhdXggYSlcbiAgICB8IEJhc2UgYSAtPiBzZXRfb2ZfYmFzZSBhXG4gICAgfCBJZiAoY29uZCwgYSwgYikgLT5cbiAgICAgIGxldCBjb25kID0gYXV4IGNvbmQgaW5cbiAgICAgIFNldC51bmlvbiAoU2V0LmludGVyIGNvbmQgKGF1eCBhKSkgKFNldC5pbnRlciAoU2V0LmRpZmYgKGZvcmNlIGFsbCkgY29uZCkgKGF1eCBiKSlcbiAgaW5cbiAgYXV4IHQgW0Bub250YWlsXVxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCByZXR1cm4gPSBiYXNlXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBEZWZpbmVfdXNpbmdfYmluZFxuICBlbmQpXG5cbm1vZHVsZSB0eXBlIE1vbmFkaWMgPSBzaWdcbiAgbW9kdWxlIE0gOiBNb25hZC5TXG5cbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBNLnQpIC0+ICdiIHQgTS50XG4gIHZhbCBldmFsIDogJ2EgdCAtPiBmOignYSAtPiBib29sIE0udCkgLT4gYm9vbCBNLnRcbmVuZFxuXG5tb2R1bGUgRm9yX21vbmFkIChNIDogTW9uYWQuUykgOiBNb25hZGljIHdpdGggbW9kdWxlIE0gOj0gTSA9IHN0cnVjdFxuICBvcGVuIE0uTW9uYWRfaW5maXhcblxuICBsZXQgcmVjIGJpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIHggLT4gZiB4XG4gICAgfCBUcnVlIC0+IE0ucmV0dXJuIHRydWVfXG4gICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICB8IEFuZCAoYSwgYikgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IEZhbHNlIC0+IE0ucmV0dXJuIGZhbHNlX1xuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj58IGZ1biBiIC0+IGFuZGFsc28gYSBiKVxuICAgIHwgT3IgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBUcnVlIC0+IE0ucmV0dXJuIHRydWVfXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj58IGZ1biBiIC0+IG9yZWxzZSBhIGIpXG4gICAgfCBOb3QgYSAtPiBiaW5kIGEgfmYgPj58IG5vdF9cbiAgICB8IElmIChhLCBiLCBjKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBiaW5kIGIgfmZcbiAgICAgICAgfCBGYWxzZSAtPiBiaW5kIGMgfmZcbiAgICAgICAgfCBhIC0+IGJpbmQgYiB+ZiA+Pj0gZnVuIGIgLT4gYmluZCBjIH5mID4+fCBmdW4gYyAtPiBpZl8gYSBiIGMpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gYmluZCB0IH5mOihmdW4geCAtPiBmIHggPj58IGJhc2UpXG5cbiAgbGV0IGV2YWwgdCB+ZiA9XG4gICAgYmluZCB0IH5mOihmdW4geCAtPlxuICAgICAgZiB4XG4gICAgICA+PnwgZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiB0cnVlX1xuICAgICAgfCBmYWxzZSAtPiBmYWxzZV8pXG4gICAgPj58IGZ1biB0IC0+IGV2YWwgdCBOb3RoaW5nLnVucmVhY2hhYmxlX2NvZGVcbiAgOztcbmVuZFxuXG4oKiogV2UgYXZvaWQgZGVyaXZpbmcgcXVpY2tjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgaW52YXJpYW50cyBkZXNjcmliZWQgaW4gW1RdJ3MgY29tbWVudHNcbiAgICBhYm92ZSBhcmUgcHJlc2VydmVkLiAqKVxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGFfZ2VuZXJhdG9yID1cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IucmVjdXJzaXZlX3VuaW9uXG4gICAgWyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6YmFzZSBhX2dlbmVyYXRvclxuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIHRydWVfXG4gICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5zaW5nbGV0b24gZmFsc2VfXG4gICAgXVxuICAgIH5mOihmdW4gc2VsZiAtPlxuICAgICAgWyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgc2VsZiB+Zjpub3RfXG4gICAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcDIgc2VsZiBzZWxmIH5mOk8uKCB8fCApXG4gICAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcDIgc2VsZiBzZWxmIH5mOk8uKCAmJiApXG4gICAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcDMgc2VsZiBzZWxmIHNlbGYgfmY6aWZfXG4gICAgICBdKVxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgKHR5cGUgYSkgKGFfc2hyaW5rZXIgOiBhIFF1aWNrY2hlY2suU2hyaW5rZXIudCkgPVxuICBRdWlja2NoZWNrLlNocmlua2VyLmZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCBiaW5vcCBvcGVyYXRvciBsZWZ0IHJpZ2h0ID1cbiAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGxlZnRcbiAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gcmlnaHRcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgbGVmdCkgfmY6KGZ1biBsZWZ0IC0+XG4gICAgICAgICAgICBvcGVyYXRvciBsZWZ0IHJpZ2h0KVxuICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiByaWdodCkgfmY6KGZ1biByaWdodCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgXVxuICAgIGluXG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5jcmVhdGUgKGZ1biB0IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgVHJ1ZSB8IEZhbHNlIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IEJhc2UgYSAtPiBTZXF1ZW5jZS5tYXAgfmY6YmFzZSAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgYV9zaHJpbmtlciBhKVxuICAgICAgfCBPciAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCB8fCApIGxlZnQgcmlnaHRcbiAgICAgIHwgQW5kIChsZWZ0LCByaWdodCkgLT4gYmlub3AgTy4oICYmICkgbGVmdCByaWdodFxuICAgICAgfCBOb3QgdCAtPlxuICAgICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgICAoU2VxdWVuY2Uuc2luZ2xldG9uIHQpXG4gICAgICAgICAgKFNlcXVlbmNlLm1hcCB+Zjpub3RfIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHQpKVxuICAgICAgfCBJZiAoaWZfLCB0aGVuXywgZWxzZV8pIC0+XG4gICAgICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluXG4gICAgICAgICAgWyBTZXF1ZW5jZS5zaW5nbGV0b24gaWZfXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gdGhlbl9cbiAgICAgICAgICA7IFNlcXVlbmNlLnNpbmdsZXRvbiBlbHNlX1xuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGlmXykgfmY6KGZ1biBpZl8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIHRoZW5fKSB+ZjooZnVuIHRoZW5fIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBlbHNlXykgfmY6KGZ1biBlbHNlXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciAodHlwZSBhKSAoYV9vYnNlcnZlciA6IGEgUXVpY2tjaGVjay5PYnNlcnZlci50KSA9XG4gIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5jcmVhdGUgKGZ1biB0IH5zaXplIH5oYXNoIC0+XG4gICAgaGFzaF9mb2xkX3RcbiAgICAgIChmdW4gaGFzaCBhIC0+IFF1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZSBhX29ic2VydmVyIGEgfnNpemUgfmhhc2gpXG4gICAgICBoYXNoXG4gICAgICB0KVxuOztcbiIsIigqIENvbnZlcnNpb25zIGJldHdlZW4gdW5pdHMgb2YgbWVhc3VyZSBiYXNlZCBvbiBieXRlcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xubW9kdWxlIFQgPSBCeXRlX3VuaXRzMFxuaW5jbHVkZSAoVCA6IG1vZHVsZSB0eXBlIG9mIFQgd2l0aCBtb2R1bGUgUmVwciA6PSBSZXByKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCAtICkgYSBiID0gb2ZfcmVwciAoUmVwci4oIC0gKSAodG9fcmVwciBhKSAodG9fcmVwciBiKSlcbiAgbGV0ICggKyApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCArICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoIC8vICkgYSBiID0gUmVwci4oIC8vICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYilcblxuICBsZXQgKCAvICkgdCBzID0gb2ZfcmVwciAoUmVwci5vZl9mbG9hdCAoUmVwci50b19mbG9hdCAodG9fcmVwciB0KSAvLiBzKSlcbiAgbGV0ICggKiApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgKi4gcykpXG5lbmRcblxuaW5jbHVkZSBJbmZpeFxuXG5sZXQgYWJzIHQgPSBvZl9yZXByIChSZXByLmFicyAodG9fcmVwciB0KSlcbmxldCBuZWcgdCA9IG9mX3JlcHIgKFJlcHIubmVnICh0b19yZXByIHQpKVxubGV0IHNpZ24gdCA9IFJlcHIuc2lnbiAodG9fcmVwciB0KVxubGV0IHplcm8gPSBvZl9yZXByIFJlcHIuemVyb1xubGV0IG1pbl92YWx1ZSA9IG9mX3JlcHIgUmVwci5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWUgPSBvZl9yZXByIFJlcHIubWF4X3ZhbHVlXG5sZXQgc2NhbGUgPSBJbmZpeC4oICogKVxubGV0IGlzY2FsZSB0IHMgPSBvZl9yZXByIChSZXByLiggKiApICh0b19yZXByIHQpIChSZXByLm9mX2ludCBzKSlcbmxldCBieXRlc19pbnRfZXhuID0gVC5ieXRlc19pbnRfZXhuXG5sZXQgYnl0ZXNfaW50NjMgPSB0b19yZXByXG5sZXQgYnl0ZXNfaW50NjQgdCA9IFJlcHIudG9faW50NjQgKHRvX3JlcHIgdClcbmxldCBieXRlc19mbG9hdCB0ID0gUmVwci50b19mbG9hdCAodG9fcmVwciB0KVxubGV0IG9mX2J5dGVzX2ludCBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQgYilcbmxldCBvZl9ieXRlc19pbnQ2MyA9IG9mX3JlcHJcbmxldCBvZl9ieXRlc19pbnQ2NF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50NjRfZXhuIGIpXG5sZXQgb2ZfYnl0ZXNfZmxvYXRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IGIpXG5cbmxldCAoYnl0ZXMgW0BkZXByZWNhdGVkXG4gICAgICAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtieXRlc19pbnRfZXhuXSwgW2J5dGVzX2ludDYzXSwgW2J5dGVzX2ludDY0XSBvciBcXFxuICAgICAgICBbYnl0ZXNfZmxvYXRdIGFzIGFwcHJvcHJpYXRlLlwiXSlcbiAgPVxuICBieXRlc19mbG9hdFxuOztcblxubGV0IChvZl9ieXRlcyBbQGRlcHJlY2F0ZWRcbiAgICAgICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX2J5dGVzX2ludF0sIFtvZl9ieXRlc19pbnQ2M10sIFxcXG4gICAgICAgIFtvZl9ieXRlc19pbnQ2NF9leG5dIG9yIFtvZl9ieXRlc19mbG9hdF9leG5dIGFzIGFwcHJvcHJpYXRlLlwiXSlcbiAgPVxuICBvZl9ieXRlc19mbG9hdF9leG5cbjs7XG5cbmxldCBraWxvYnl0ZSA6IHQgPSBvZl9ieXRlc19pbnQgMTAyNFxubGV0IG1lZ2FieXRlID0gaXNjYWxlIGtpbG9ieXRlIDEwMjRcbmxldCBnaWdhYnl0ZSA9IGlzY2FsZSBtZWdhYnl0ZSAxMDI0XG5sZXQgdGVyYWJ5dGUgPSBpc2NhbGUgZ2lnYWJ5dGUgMTAyNFxubGV0IHBldGFieXRlID0gaXNjYWxlIHRlcmFieXRlIDEwMjRcbmxldCBleGFieXRlID0gaXNjYWxlIHBldGFieXRlIDEwMjRcblxubGV0IHdvcmQgPVxuICBsZXQgbW9kdWxlIFcgPSBXb3JkX3NpemUgaW5cbiAgbWF0Y2ggVy53b3JkX3NpemUgd2l0aFxuICB8IFcuVzMyIC0+IG9mX2J5dGVzX2ludCA0XG4gIHwgVy5XNjQgLT4gb2ZfYnl0ZXNfaW50IDhcbjs7XG5cbmxldCBraWxvYnl0ZXMgdCA6IGZsb2F0ID0gSW5maXguKCAvLyApIHQga2lsb2J5dGVcbmxldCBtZWdhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IG1lZ2FieXRlXG5sZXQgZ2lnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBnaWdhYnl0ZVxubGV0IHRlcmFieXRlcyB0ID0gSW5maXguKCAvLyApIHQgdGVyYWJ5dGVcbmxldCBwZXRhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHBldGFieXRlXG5sZXQgZXhhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IGV4YWJ5dGVcbmxldCB3b3Jkc19pbnRfZXhuIHQgPSBSZXByLnRvX2ludF9leG4gKFJlcHIuKCAvICkgKHRvX3JlcHIgdCkgKHRvX3JlcHIgd29yZCkpXG5sZXQgd29yZHNfZmxvYXQgdCA9IEluZml4LiggLy8gKSB0IHdvcmRcbmxldCBvZl9raWxvYnl0ZXMgdCA6IHQgPSBJbmZpeC4oICogKSBraWxvYnl0ZSB0XG5sZXQgb2ZfbWVnYWJ5dGVzIHQgPSBJbmZpeC4oICogKSBtZWdhYnl0ZSB0XG5sZXQgb2ZfZ2lnYWJ5dGVzIHQgPSBJbmZpeC4oICogKSBnaWdhYnl0ZSB0XG5sZXQgb2ZfdGVyYWJ5dGVzIHQgPSBJbmZpeC4oICogKSB0ZXJhYnl0ZSB0XG5sZXQgb2ZfcGV0YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBwZXRhYnl0ZSB0XG5sZXQgb2ZfZXhhYnl0ZXMgdCA9IEluZml4LiggKiApIGV4YWJ5dGUgdFxubGV0IG9mX3dvcmRzX2ludCB0ID0gaXNjYWxlIHdvcmQgdFxubGV0IG9mX3dvcmRzX2Zsb2F0X2V4biB0ID0gSW5maXguKCAqICkgd29yZCB0XG5cbmxldCAod29yZHMgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbd29yZHNfaW50X2V4bl0gb3IgW3dvcmRzX2Zsb2F0XVwiXSkgPVxuICB3b3Jkc19mbG9hdFxuOztcblxubGV0IChvZl93b3JkcyBbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl93b3Jkc19pbnRdIG9yIFtvZl93b3Jkc19mbG9hdF9leG5dXCJdKSA9XG4gIG9mX3dvcmRzX2Zsb2F0X2V4blxuOztcblxubGV0IG9mX3N0cmluZyBzID1cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBJbnQuKCA8ICkgbGVuZ3RoIDJcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtIHRvbyBzaG9ydFwiIHMgKCk7XG4gIGxldCBiYXNlX3N0ciA9IFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjooSW50LiggLSApIGxlbmd0aCAxKSBpblxuICBsZXQgZXh0X2NoYXIgPSBDaGFyLmxvd2VyY2FzZSBzLltJbnQuKCAtICkgbGVuZ3RoIDFdIGluXG4gIGxldCBiYXNlID1cbiAgICB0cnkgRmxvYXQub2Zfc3RyaW5nIGJhc2Vfc3RyIHdpdGhcbiAgICB8IF8gLT5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gJXMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBmbG9hdCBcIlxuICAgICAgICBzXG4gICAgICAgIGJhc2Vfc3RyXG4gICAgICAgICgpXG4gIGluXG4gIG1hdGNoIGV4dF9jaGFyIHdpdGhcbiAgfCAnYicgLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIGJhc2VcbiAgfCAnaycgLT4gb2Zfa2lsb2J5dGVzIGJhc2VcbiAgfCAnbScgLT4gb2ZfbWVnYWJ5dGVzIGJhc2VcbiAgfCAnZycgLT4gb2ZfZ2lnYWJ5dGVzIGJhc2VcbiAgfCAndCcgLT4gb2ZfdGVyYWJ5dGVzIGJhc2VcbiAgfCAncCcgLT4gb2ZfcGV0YWJ5dGVzIGJhc2VcbiAgfCAnZScgLT4gb2ZfZXhhYnl0ZXMgYmFzZVxuICB8ICd3JyAtPiBvZl93b3Jkc19mbG9hdF9leG4gYmFzZVxuICB8IGV4dCAtPlxuICAgIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gaWxsZWdhbCBleHRlbnNpb24gJWNcIiBzIGV4dCAoKVxuOztcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5cbmxldCBsYXJnZXN0X21lYXN1cmUgdCA9XG4gIGxldCB0X2FicyA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKSBpblxuICBpZiB0X2FicyA+PSBleGFieXRlXG4gIHRoZW4gYEV4YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gcGV0YWJ5dGVcbiAgdGhlbiBgUGV0YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gdGVyYWJ5dGVcbiAgdGhlbiBgVGVyYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gZ2lnYWJ5dGVcbiAgdGhlbiBgR2lnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gbWVnYWJ5dGVcbiAgdGhlbiBgTWVnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0ga2lsb2J5dGVcbiAgdGhlbiBgS2lsb2J5dGVzXG4gIGVsc2UgYEJ5dGVzXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICgqIFNoYXJlIHRoZSBjb21tb24gW29mX3NleHBdIGNvZGUgZm9yIFtWMV0gYW5kIFtWMl0uICopXG4gIG1vZHVsZSBPZl9zZXhwX3YxX3YyIDogc2lnXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBub19tYXRjaCAoKSA9IGZhaWx3aXRoIFwiTm90IGEgcmVjb2duaXplZCBbQnl0ZV91bml0cy50XSByZXByZXNlbnRhdGlvblwiXG5cbiAgICBsZXQgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbF9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgXCJCeXRlc1wiIC0+XG4gICAgICAgICh0cnkgb2ZfYnl0ZXNfaW50NjMgKEludDYzLnRfb2Zfc2V4cCB2YWxfc2V4cCkgd2l0aFxuICAgICAgICAgfCBfIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biAoRmxvYXQudF9vZl9zZXhwIHZhbF9zZXhwKSlcbiAgICAgIHwgXCJLaWxvYnl0ZXNcIiAtPiBvZl9raWxvYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiTWVnYWJ5dGVzXCIgLT4gb2ZfbWVnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkdpZ2FieXRlc1wiIC0+IG9mX2dpZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJUZXJhYnl0ZXNcIiAtPiBvZl90ZXJhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiUGV0YWJ5dGVzXCIgLT4gb2ZfcGV0YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkV4YWJ5dGVzXCIgLT4gb2ZfZXhhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiV29yZHNcIiAtPiBvZl93b3Jkc19mbG9hdF9leG4gKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICAgICAgfCBTZXhwLkxpc3QgWyBTZXhwLkF0b20gdW5pdF9uYW1lOyB2YWx1ZSBdIC0+XG4gICAgICAgIG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWx1ZSB1bml0X25hbWVcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgdHJ5IHRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZXhuIC0+IHJhaXNlIChTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc2V4cCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCB0b19iaW5hYmxlID0gYnl0ZXNfZmxvYXRcbiAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2J5dGVzX2Zsb2F0X2V4blxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZTAuT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZsb2F0KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIHN0YWJsZV93aXRuZXNzX2Zsb2F0IG9mX2JpbmFibGUgdG9fYmluYWJsZVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIE9mX3NleHBfdjFfdjJcblxuICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAoKiBWMSBvbmx5IGdvZXMgdXAgdG8gZ2lnYWJ5dGVzICopXG4gICAgICBtYXRjaCBsYXJnZXN0X21lYXN1cmUgdCB3aXRoXG4gICAgICB8IGBCeXRlcyAtPiBbJXNleHAgYEJ5dGVzIChieXRlc19mbG9hdCB0IDogZmxvYXQpXVxuICAgICAgfCBgS2lsb2J5dGVzIC0+IFslc2V4cCBgS2lsb2J5dGVzIChraWxvYnl0ZXMgdCA6IGZsb2F0KV1cbiAgICAgIHwgYE1lZ2FieXRlcyAtPiBbJXNleHAgYE1lZ2FieXRlcyAobWVnYWJ5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBHaWdhYnl0ZXMgfCBgVGVyYWJ5dGVzIHwgYFBldGFieXRlcyB8IGBFeGFieXRlcyAtPlxuICAgICAgICBbJXNleHAgYEdpZ2FieXRlcyAoZ2lnYWJ5dGVzIHQgOiBmbG9hdCldXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5sb3dlcmNhc2UgKHRvX3N0cmluZyB0KVxuICAgIGxldCBvZl9zdHJpbmcgPSBvZl9zdHJpbmdcblxuICAgICgqIFRoaXMgdGVzdCBkb2N1bWVudHMgdGhlIG9yaWdpbmFsIHRvLXN0cmluZyByZXByZXNlbnRhdGlvbiBhbmQgZmFpbHMgdW5kZXIgamF2YXNjcmlwdFxuICAgICAgIGR1ZSB0byBkaWZmZXJlbmNlcyBpbiB0aGUgcm91bmRpbmcuICopXG4gICAgbGV0JWV4cGVjdF90ZXN0IChfIFtAdGFncyBcIm5vLWpzXCJdKSA9XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMDBiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjMpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyM2IgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNCk7XG4gICAgICBbJWV4cGVjdCB7fCAxayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI1KTtcbiAgICAgIFslZXhwZWN0IHt8IDEuMDAwOThrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDE1MDApO1xuICAgICAgWyVleHBlY3Qge3wgMS40NjQ4NGsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOS43NjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3LjY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOTc2LjU2MmsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDAwMDApO1xuICAgICAgWyVleHBlY3Qge3wgOS41MzY3NG0gfH1dXG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IG9mX3NleHBfZXJyb3IgbXNnIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCB0b19iaW5hYmxlID0gYnl0ZXNfaW50NjNcbiAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2J5dGVzX2ludDYzXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjMuU3RhYmxlLlYxKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYmluYWJsZVxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYmluYWJsZVxuICAgICAgICBlbmQpXG5cbiAgICBsZXQgc3RhYmxlX3dpdG5lc3MgOiB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlIEludDYzLlN0YWJsZS5WMS5zdGFibGVfd2l0bmVzcyBvZl9iaW5hYmxlIHRvX2JpbmFibGVcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgYEJ5dGVzIChieXRlc19pbnQ2MyB0IDogSW50NjMudCldXG4gIGVuZFxuZW5kXG5cbmxldCB0b19zdHJpbmdfaHVtID0gVC50b19zdHJpbmdcblxubW9kdWxlIFNob3J0ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBsZXQgdG9fdW5pdHNfc3RyIHRvX3VuaXQgZXh0ID1cbiAgICAgIGxldCBmID0gdG9fdW5pdCB0IGluXG4gICAgICBsZXQgZl9hYnMgPSBGbG9hdC5hYnMgZiBpblxuICAgICAgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMGYlY1wiIGYgZXh0XG4gICAgICBlbHNlIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMWYlY1wiIGYgZXh0XG4gICAgICBlbHNlIHNwcmludGYgXCIlLjJmJWNcIiBmIGV4dFxuICAgIGluXG4gICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgIHwgYEJ5dGVzIC0+IHNwcmludGYgXCIlZEJcIiAoYnl0ZXNfaW50X2V4biB0KVxuICAgIHwgYEtpbG9ieXRlcyAtPiB0b191bml0c19zdHIga2lsb2J5dGVzICdLJ1xuICAgIHwgYE1lZ2FieXRlcyAtPiB0b191bml0c19zdHIgbWVnYWJ5dGVzICdNJ1xuICAgIHwgYEdpZ2FieXRlcyAtPiB0b191bml0c19zdHIgZ2lnYWJ5dGVzICdHJ1xuICAgIHwgYFRlcmFieXRlcyAtPiB0b191bml0c19zdHIgdGVyYWJ5dGVzICdUJ1xuICAgIHwgYFBldGFieXRlcyAtPiB0b191bml0c19zdHIgcGV0YWJ5dGVzICdQJ1xuICAgIHwgYEV4YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBleGFieXRlcyAnRSdcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwKTtcbiAgICBbJWV4cGVjdCB7fCAxMDAwQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgWyVleHBlY3Qge3wgMTAyM0IgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI1KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3LjdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5NzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS41NE0gfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOS4zMUcgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDEwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5MzFHIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2Zsb2F0X2V4biAxMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5MC45VCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19mbG9hdF9leG4gMTAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgODguOFAgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfZmxvYXRfZXhuIDMwMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCAyLjYwRSB8fV07XG4gICAgKClcbiAgOztcbmVuZFxuXG5sZXQgdG9fc3RyaW5nX3Nob3J0ID0gU2hvcnQudG9fc3RyaW5nXG5cbmxldCAoY3JlYXRlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMTktMDFdIFVzZSBbb2ZfYnl0ZXNdLCBbb2Zfa2lsb2J5dGVzXSwgW29mX21lZ2FieXRlc10sIGV0YyBhcyBcXFxuICAgICAgICBhcHByb3ByaWF0ZS5cIl0pXG4gID1cbiAgZnVuIHVuaXRzIHZhbHVlIC0+XG4gIG1hdGNoIHVuaXRzIHdpdGhcbiAgfCBgQnl0ZXMgLT4gb2ZfYnl0ZXNfZmxvYXRfZXhuIHZhbHVlXG4gIHwgYEtpbG9ieXRlcyAtPiBvZl9raWxvYnl0ZXMgdmFsdWVcbiAgfCBgTWVnYWJ5dGVzIC0+IG9mX21lZ2FieXRlcyB2YWx1ZVxuICB8IGBHaWdhYnl0ZXMgLT4gb2ZfZ2lnYWJ5dGVzIHZhbHVlXG4gIHwgYFdvcmRzIC0+IG9mX3dvcmRzX2Zsb2F0X2V4biB2YWx1ZVxuOztcblxuaW5jbHVkZVxuICBRdWlja2NoZWNrYWJsZS5PZl9xdWlja2NoZWNrYWJsZVxuICAgIChSZXByKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBvZl9xdWlja2NoZWNrYWJsZSA9IG9mX3JlcHJcbiAgICAgIGxldCB0b19xdWlja2NoZWNrYWJsZSA9IHRvX3JlcHJcbiAgICBlbmQpXG4iLCIoKiogU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgcG9seW1vcnBoaWMgZnVuY3Rpb25hbCBkb3VibGUtZW5kZWQgcXVldWUuICopXG5cbigqKiBJbnZhcmlhbnRzOlxuICAgIC0gcXVldWUubGVuZ3RoID0gTGlzdC5sZW5ndGggcXVldWUuZnJvbnQgKyBMaXN0Lmxlbmd0aCBxdWV1ZS5iYWNrXG4gICAgLSBpZiBxdWV1ZSBoYXMgPj0gMiBlbGVtZW50cywgbmVpdGhlciBmcm9udCBub3IgYmFjayBhcmUgZW1wdHlcbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuZXhjZXB0aW9uIEVtcHR5IFtAQGRlcml2aW5nIHNleHBdXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZnJvbnQgOiAnYSBsaXN0XG4gIDsgYmFjayA6ICdhIGxpc3RcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcblxubGV0IGludmFyaWFudCBmIHQgPVxuICBsZXQgbl9mcm9udCA9IExpc3QubGVuZ3RoIHQuZnJvbnQgaW5cbiAgbGV0IG5fYmFjayA9IExpc3QubGVuZ3RoIHQuYmFjayBpblxuICBhc3NlcnQgKHQubGVuZ3RoID0gbl9mcm9udCArIG5fYmFjayk7XG4gIGFzc2VydCAodC5sZW5ndGggPCAyIHx8IChuX2Zyb250IDw+IDAgJiYgbl9iYWNrIDw+IDApKTtcbiAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gIExpc3QuaXRlciB0LmJhY2sgfmZcbjs7XG5cbmxldCBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrID1cbiAgbWF0Y2ggZnJvbnQsIGJhY2sgd2l0aFxuICB8IFtdLCBbXSB8IFsgXyBdLCBbXSB8IFtdLCBbIF8gXSB8IF8gOjogXywgXyA6OiBfIC0+IHsgZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgW10sIF8gOjogXyA6OiBfIC0+XG4gICAgbGV0IGJhY2ssIHJldl9mcm9udCA9IExpc3Quc3BsaXRfbiBiYWNrIChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQgPSBMaXN0LnJldiByZXZfZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgXyA6OiBfIDo6IF8sIFtdIC0+XG4gICAgbGV0IGZyb250LCByZXZfYmFjayA9IExpc3Quc3BsaXRfbiBmcm9udCAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250OyBiYWNrID0gTGlzdC5yZXYgcmV2X2JhY2s7IGxlbmd0aCB9XG47O1xuXG5sZXQgZW1wdHkgPSB7IGZyb250ID0gW107IGJhY2sgPSBbXTsgbGVuZ3RoID0gMCB9XG5sZXQgZW5xdWV1ZV9mcm9udCB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmZyb250Oih4IDo6IHQuZnJvbnQpIH5iYWNrOnQuYmFja1xubGV0IGVucXVldWVfYmFjayB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmJhY2s6KHggOjogdC5iYWNrKSB+ZnJvbnQ6dC5mcm9udFxuXG5sZXRbQGNvbGRdIHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxmcm9udHwgPSAwLCB8YmFja3wgPj0gMlwiXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iYWNrX2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxiYWNrfCA9IDAsIHxmcm9udHwgPj0gMlwiXVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmZyb250OnhzIH5iYWNrOnQuYmFja1xuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5iYWNrOnhzIH5mcm9udDp0LmZyb250XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBwZWVrX2Zyb250X2V4biB0LCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gcGVla19iYWNrX2V4biB0LCBkcm9wX2JhY2tfZXhuIHRcblxubGV0IG9wdGlvbmFsIGYgdCA9XG4gIG1hdGNoIGYgdCB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gRW1wdHkgLT4gTm9uZVxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IG9wdGlvbmFsIHBlZWtfZnJvbnRfZXhuIHRcbmxldCBwZWVrX2JhY2sgdCA9IG9wdGlvbmFsIHBlZWtfYmFja19leG4gdFxubGV0IGRyb3BfZnJvbnQgdCA9IG9wdGlvbmFsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkcm9wX2JhY2sgdCA9IG9wdGlvbmFsIGRyb3BfYmFja19leG4gdFxubGV0IGRlcXVldWVfZnJvbnQgdCA9IG9wdGlvbmFsIGRlcXVldWVfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2sgdCA9IG9wdGlvbmFsIGRlcXVldWVfYmFja19leG4gdFxuXG5sZXQgZW5xdWV1ZSB0IHNpZGUgeCA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgeFxuICB8IGBiYWNrIC0+IGVucXVldWVfYmFjayB0IHhcbjs7XG5cbmxldCBwZWVrIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuOztcblxubGV0IHBlZWtfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrX2V4biB0XG47O1xuXG5sZXQgZHJvcCB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2tfZXhuIHRcbjs7XG5cbmxldCByZXYgdCA9IHsgdCB3aXRoIGZyb250ID0gdC5iYWNrOyBiYWNrID0gdC5mcm9udCB9XG5cbm1vZHVsZSBBcmJpdHJhcnlfb3JkZXIgPSBzdHJ1Y3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5yZXZfYXBwZW5kIHQuZnJvbnQgdC5iYWNrXG4gIGxldCB0b19hcnJheSB0ID0gQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KVxuICBsZXQgdG9fc2VxdWVuY2UgdCA9IFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spXG5cbiAgbGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgICBsZXQgb3BlbiBNIGluXG4gICAgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmZyb250IH5mICsgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgdC5mcm9udCB+ZiArIExpc3QuY291bnQgdC5iYWNrIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgdC5mcm9udCB+ZiAmJiBMaXN0LmZvcl9hbGwgdC5iYWNrIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIHQuZnJvbnQgfmYgfHwgTGlzdC5leGlzdHMgdC5iYWNrIH5mXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCB0LmZyb250IHggfHwgTGlzdC5tZW0gfmVxdWFsIHQuYmFjayB4XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gICAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIChMaXN0LmZvbGQgdC5mcm9udCB+aW5pdCB+ZiB8PiBmdW4gaW5pdCAtPiBMaXN0LmZvbGQgdC5iYWNrIH5pbml0IH5mKSBbQG5vbnRhaWxdXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2ggPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0IH5maW5pc2hcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBtYXRjaCBMaXN0LmZpbmQgdC5mcm9udCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IExpc3QuZmluZCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCBMaXN0LmZpbmRfbWFwIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmRfbWFwIHQuYmFjayB+ZlxuICAgIHwgc29tZSAtPiBzb21lXG4gIDs7XG5cbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5tYXhfZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWF4X2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5ID49IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcblxuICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID1cbiAgICBtYXRjaCBMaXN0Lm1pbl9lbHQgdC5mcm9udCB+Y29tcGFyZSwgTGlzdC5taW5fZWx0IHQuYmFjayB+Y29tcGFyZSB3aXRoXG4gICAgfCBOb25lLCBvcHQgfCBvcHQsIE5vbmUgLT4gb3B0XG4gICAgfCAoU29tZSB4IGFzIHNvbWVfeCksIChTb21lIHkgYXMgc29tZV95KSAtPlxuICAgICAgaWYgY29tcGFyZSB4IHkgPD0gMCB0aGVuIHNvbWVfeCBlbHNlIHNvbWVfeVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2NvbnRhaW5lciAoRiA6IHNpZ1xuICAgIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCB0b19saXN0ID0gRi50b19saXN0XG4gIGxldCBpc19lbXB0eSA9IGlzX2VtcHR5XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgbGV0IG1lbSB0IHggfmVxdWFsID0gTGlzdC5tZW0gfmVxdWFsICh0b19saXN0IHQpIHhcbiAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gTGlzdC5mb2xkICh0b19saXN0IHQpIH5pbml0IH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzICh0b19saXN0IHQpIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBMaXN0LmNvdW50ICh0b19saXN0IHQpIH5mXG4gIGxldCBzdW0gbSB0IH5mID0gTGlzdC5zdW0gbSAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZCB0IH5mID0gTGlzdC5maW5kICh0b19saXN0IHQpIH5mXG4gIGxldCBmaW5kX21hcCB0IH5mID0gTGlzdC5maW5kX21hcCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgdG9fYXJyYXkgdCA9IExpc3QudG9fYXJyYXkgKHRvX2xpc3QgdClcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWluX2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gTGlzdC5tYXhfZWx0ICh0b19saXN0IHQpIH5jb21wYXJlXG4gIGxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdCB+ZmluaXNoXG5lbmRcblxubW9kdWxlIEZyb250X3RvX2JhY2sgPSBzdHJ1Y3RcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmZyb250Omxpc3QgfmJhY2s6W11cbiAgbGV0IHRvX2xpc3QgdCA9IHQuZnJvbnQgQCBMaXN0LnJldiB0LmJhY2tcblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmJhY2spKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgYmFjayA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250OltdIH5iYWNrXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEJhY2tfdG9fZnJvbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgdCA9IHQuYmFjayBAIExpc3QucmV2IHQuZnJvbnRcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmJhY2s6bGlzdCB+ZnJvbnQ6W11cblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaykgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuZnJvbnQpKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgZnJvbnQgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjazpbXVxuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGUgRnJvbnRfdG9fYmFja1xuXG5sZXQgc2luZ2xldG9uIHggPSBvZl9saXN0IFsgeCBdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCBlbHQgLT4gZm9sZCAoZiBlbHQpIH5pbml0OnQgfmY6ZW5xdWV1ZV9iYWNrKVxuICAgIDs7XG5cbiAgICBsZXQgcmV0dXJuID0gc2luZ2xldG9uXG5cbiAgICBsZXQgbWFwID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIHsgZnJvbnQgPSBMaXN0Lm1hcCB0LmZyb250IH5mOyBiYWNrID0gTGlzdC5tYXAgdC5iYWNrIH5mOyBsZW5ndGggPSB0Lmxlbmd0aCB9KVxuICAgIDs7XG4gIGVuZClcblxubGV0IGNvbXBhcmUgY21wIHQxIHQyID0gTGlzdC5jb21wYXJlIGNtcCAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5sZXQgZXF1YWwgZXEgdDEgdDIgPSBMaXN0LmVxdWFsIGVxICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcblxubGV0IGhhc2hfZm9sZF90IGhhc2hfZm9sZF9hIHN0YXRlIHQgPVxuICBmb2xkIH5mOmhhc2hfZm9sZF9hIH5pbml0OihbJWhhc2hfZm9sZDogaW50XSBzdGF0ZSAobGVuZ3RoIHQpKSB0XG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBbJXNleHBfb2Y6IGVsdCBsaXN0XSAodG9fbGlzdCB0KVxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKFslb2Zfc2V4cDogZWx0IGxpc3RdIHNleHApXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gTGlzdC50X3NleHBfZ3JhbW1hclxuICAgIGxldCBtYXAgPSBtYXBcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4M2Y5Njk4Mi00OTkyLTExZTYtOTE5ZC1mYmRkY2ZkY2E1NzZcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkZkZXF1ZVwiXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciAodG9fbGlzdCB0KSB+ZlxuXG4gICAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBuZXh0IGFjYyBuID1cbiAgICAgICAgICAgIGlmIGxlbiA9IG5cbiAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgYXNzZXJ0IChuID0gbGVuZ3RoIGFjYyk7XG4gICAgICAgICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICAgICAgICBsb29wIG5leHQgKGVucXVldWVfYmFjayBhY2MgeCkgKG4gKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgbmV4dCBlbXB0eSAwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG5cbiAgICAoKiBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHByb2R1Y2VkIGJ5IEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgaXNcbiAgICAgICBhc3N1bWVkIHRvIGJlIHN0YWJsZSAoaWYgdGhlICdhIGlzIHN0YWJsZSkuICopXG4gICAgbGV0IHN0YWJsZV93aXRuZXNzIChfIDogJ2EgU3RhYmxlX3dpdG5lc3MudCkgOiAnYSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFN0YWJsZS5WMSA6IG1vZHVsZSB0eXBlIG9mIFN0YWJsZS5WMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYnVpbGQgfmZyb250IH5iYWNrID1cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggZnJvbnQgKyBMaXN0Lmxlbmd0aCBiYWNrIGluXG4gICAgbGV0IHQgPSB7IGxlbmd0aDsgZnJvbnQ7IGJhY2sgfSBpblxuICAgIGludmFyaWFudCBpZ25vcmUgdDtcbiAgICB0XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmcuU3RhYmxlLlYxIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCBzdGFibGVfd2l0bmVzc11cblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TXG4gICAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmFibGUgOj0gdFxuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdHJpbmcuU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG5cbiAgICAgICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuV2l0aF9zdGFibGVfd2l0bmVzcy5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICAgICAgZW5kKVxuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBGaWxlbmFtZV9iYXNlXG5cbmluY2x1ZGUgKFxuICBTdHJpbmcgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEZkZXF1ZVxuXG5sZXQgZW5xdWV1ZSA9IGVucXVldWVfYmFja1xubGV0IHBlZWtfZXhuID0gcGVla19mcm9udF9leG5cbmxldCBwZWVrID0gcGVla19mcm9udFxubGV0IGRlcXVldWVfZXhuID0gZGVxdWV1ZV9mcm9udF9leG5cbmxldCBkZXF1ZXVlID0gZGVxdWV1ZV9mcm9udFxubGV0IGRyb3BfZXhuID0gZHJvcF9mcm9udF9leG5cbmxldCB0b19zZXF1ZW5jZSA9IEZyb250X3RvX2JhY2sudG9fc2VxdWVuY2VcbmxldCBvZl9zZXF1ZW5jZSA9IEZyb250X3RvX2JhY2sub2Zfc2VxdWVuY2VcblxuKCogRGVwcmVjYXRlZCBhbGlhc2VzICopXG5sZXQgdG9wID0gcGVla1xubGV0IHRvcF9leG4gPSBwZWVrX2V4blxubGV0IGRpc2NhcmRfZXhuID0gZHJvcF9leG5cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBOZXh0X2ZpdFxuICAgICAgICB8IEZpcnN0X2ZpdFxuICAgICAgICB8IEJlc3RfZml0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXQgPSBzdHJ1Y3RcbiAgICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBtb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gU3RkbGliLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG11dGFibGUgbWlub3JfaGVhcF9zaXplIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHZlcmJvc2UgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIGFsbG9jYXRpb25fcG9saWN5IDogaW50XG4gICAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfcmF0aW8gOiBpbnRcbiAgICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBbJSVlbHNlXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgICAgOyBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgICA7IHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgICA7IG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgICA7IHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgICA7IGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICBlbmRcblxuICAgIFslJWVuZGlmXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0ZGxpYi5HY1xuXG5tb2R1bGUgU3RhdCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgdHlwZSB0ID0gU3RkbGliLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBiaW5faW8sIHNleHAsIGZpZWxkc11cblxuICAgIFslJWVsc2VdXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2Muc3RhdCA9XG4gICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtYWpvcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICA7IGhlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgOyBsaXZlX2Jsb2NrcyA6IGludFxuICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICA7IGxhcmdlc3RfZnJlZSA6IGludFxuICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgIDsgdG9wX2hlYXBfd29yZHMgOiBpbnRcbiAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwX29mLCBmaWVsZHNdXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuXG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gIGxldCBjb21iaW5lIGZpcnN0IHNlY29uZCB+ZmxvYXRfZiB+aW50X2YgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1pbm9yX3dvcmRzIHNlY29uZC5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBmbG9hdF9mIGZpcnN0LnByb21vdGVkX3dvcmRzIHNlY29uZC5wcm9tb3RlZF93b3Jkc1xuICAgIDsgbWFqb3Jfd29yZHMgPSBmbG9hdF9mIGZpcnN0Lm1ham9yX3dvcmRzIHNlY29uZC5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBpbnRfZiBmaXJzdC5taW5vcl9jb2xsZWN0aW9ucyBzZWNvbmQubWlub3JfY29sbGVjdGlvbnNcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWFqb3JfY29sbGVjdGlvbnMgc2Vjb25kLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gaW50X2YgZmlyc3QuaGVhcF93b3JkcyBzZWNvbmQuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBpbnRfZiBmaXJzdC5oZWFwX2NodW5rcyBzZWNvbmQuaGVhcF9jaHVua3NcbiAgICA7IGxpdmVfd29yZHMgPSBpbnRfZiBmaXJzdC5saXZlX3dvcmRzIHNlY29uZC5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmxpdmVfYmxvY2tzIHNlY29uZC5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGludF9mIGZpcnN0LmZyZWVfd29yZHMgc2Vjb25kLmZyZWVfd29yZHNcbiAgICA7IGZyZWVfYmxvY2tzID0gaW50X2YgZmlyc3QuZnJlZV9ibG9ja3Mgc2Vjb25kLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBpbnRfZiBmaXJzdC5sYXJnZXN0X2ZyZWUgc2Vjb25kLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gaW50X2YgZmlyc3QuZnJhZ21lbnRzIHNlY29uZC5mcmFnbWVudHNcbiAgICA7IGNvbXBhY3Rpb25zID0gaW50X2YgZmlyc3QuY29tcGFjdGlvbnMgc2Vjb25kLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LnRvcF9oZWFwX3dvcmRzIHNlY29uZC50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGludF9mIGZpcnN0LnN0YWNrX3NpemUgc2Vjb25kLnN0YWNrX3NpemVcbiAgICB9XG4gIDs7XG5cbiAgWyUlZWxzZV1cblxuICBsZXQgY29tYmluZSBmaXJzdCBzZWNvbmQgfmZsb2F0X2YgfmludF9mID1cbiAgICB7IG1pbm9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5taW5vcl93b3JkcyBzZWNvbmQubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5wcm9tb3RlZF93b3JkcyBzZWNvbmQucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gZmxvYXRfZiBmaXJzdC5tYWpvcl93b3JkcyBzZWNvbmQubWFqb3Jfd29yZHNcbiAgICA7IG1pbm9yX2NvbGxlY3Rpb25zID0gaW50X2YgZmlyc3QubWlub3JfY29sbGVjdGlvbnMgc2Vjb25kLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGludF9mIGZpcnN0Lm1ham9yX2NvbGxlY3Rpb25zIHNlY29uZC5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGludF9mIGZpcnN0LmhlYXBfd29yZHMgc2Vjb25kLmhlYXBfd29yZHNcbiAgICA7IGhlYXBfY2h1bmtzID0gaW50X2YgZmlyc3QuaGVhcF9jaHVua3Mgc2Vjb25kLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gaW50X2YgZmlyc3QubGl2ZV93b3JkcyBzZWNvbmQubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBpbnRfZiBmaXJzdC5saXZlX2Jsb2NrcyBzZWNvbmQubGl2ZV9ibG9ja3NcbiAgICA7IGZyZWVfd29yZHMgPSBpbnRfZiBmaXJzdC5mcmVlX3dvcmRzIHNlY29uZC5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGludF9mIGZpcnN0LmZyZWVfYmxvY2tzIHNlY29uZC5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gaW50X2YgZmlyc3QubGFyZ2VzdF9mcmVlIHNlY29uZC5sYXJnZXN0X2ZyZWVcbiAgICA7IGZyYWdtZW50cyA9IGludF9mIGZpcnN0LmZyYWdtZW50cyBzZWNvbmQuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGludF9mIGZpcnN0LmNvbXBhY3Rpb25zIHNlY29uZC5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBpbnRfZiBmaXJzdC50b3BfaGVhcF93b3JkcyBzZWNvbmQudG9wX2hlYXBfd29yZHNcbiAgICA7IHN0YWNrX3NpemUgPSBpbnRfZiBmaXJzdC5zdGFja19zaXplIHNlY29uZC5zdGFja19zaXplXG4gICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgPVxuICAgICAgICBpbnRfZiBmaXJzdC5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgc2Vjb25kLmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc1xuICAgIH1cbiAgOztcblxuICBbJSVlbmRpZl1cblxuICBsZXQgYWRkID0gY29tYmluZSB+ZmxvYXRfZjpGbG9hdC4oICsgKSB+aW50X2Y6SW50LiggKyApXG4gIGxldCBkaWZmID0gY29tYmluZSB+ZmxvYXRfZjpGbG9hdC4oIC0gKSB+aW50X2Y6SW50LiggLSApXG5lbmRcblxubW9kdWxlIENvbnRyb2wgPSBzdHJ1Y3RcbiAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg1LCAwLCAwKV1cblxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgIHR5cGUgdCA9IFN0ZGxpYi5HYy5jb250cm9sID1cbiAgICAgIHsgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgdmVyYm9zZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICA7IG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJWVsc2VdXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBTdGRsaWIuR2MuY29udHJvbCA9XG4gICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtYWpvcl9oZWFwX2luY3JlbWVudCA6IGludFxuICAgICAgOyBzcGFjZV9vdmVyaGVhZCA6IGludFxuICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICA7IG1heF9vdmVyaGVhZCA6IGludFxuICAgICAgOyBzdGFja19saW1pdCA6IGludFxuICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlZW5kaWZdXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuZW5kXG5cbm1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuQWxsb2NhdGlvbl9wb2xpY3kuVjEudCA9XG4gICAgfCBOZXh0X2ZpdFxuICAgIHwgRmlyc3RfZml0XG4gICAgfCBCZXN0X2ZpdFxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF9vZl1cblxuICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICB8IE5leHRfZml0IC0+IDBcbiAgICB8IEZpcnN0X2ZpdCAtPiAxXG4gICAgfCBCZXN0X2ZpdCAtPiAyXG4gIDs7XG5lbmRcblxubGV0IHR1bmVcbiAgICAgID9sb2dnZXJcbiAgICAgID9taW5vcl9oZWFwX3NpemVcbiAgICAgID9tYWpvcl9oZWFwX2luY3JlbWVudFxuICAgICAgP3NwYWNlX292ZXJoZWFkXG4gICAgICA/dmVyYm9zZVxuICAgICAgP21heF9vdmVyaGVhZFxuICAgICAgP3N0YWNrX2xpbWl0XG4gICAgICA/YWxsb2NhdGlvbl9wb2xpY3lcbiAgICAgID93aW5kb3dfc2l6ZVxuICAgICAgP2N1c3RvbV9tYWpvcl9yYXRpb1xuICAgICAgP2N1c3RvbV9taW5vcl9yYXRpb1xuICAgICAgP2N1c3RvbV9taW5vcl9tYXhfc2l6ZVxuICAgICAgKClcbiAgPVxuICBsZXQgb2xkX2NvbnRyb2xfcGFyYW1zID0gZ2V0ICgpIGluXG4gIGxldCBmIG9wdCB0b19zdHJpbmcgZmllbGQgPVxuICAgIGxldCBvbGRfdmFsdWUgPSBGaWVsZC5nZXQgZmllbGQgb2xkX2NvbnRyb2xfcGFyYW1zIGluXG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gb2xkX3ZhbHVlXG4gICAgfCBTb21lIG5ld192YWx1ZSAtPlxuICAgICAgT3B0aW9uLml0ZXIgbG9nZ2VyIH5mOihmdW4gZiAtPlxuICAgICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgICBmXG4gICAgICAgICAgXCJHYy5Db250cm9sLiVzOiAlcyAtPiAlc1wiXG4gICAgICAgICAgKEZpZWxkLm5hbWUgZmllbGQpXG4gICAgICAgICAgKHRvX3N0cmluZyBvbGRfdmFsdWUpXG4gICAgICAgICAgKHRvX3N0cmluZyBuZXdfdmFsdWUpKTtcbiAgICAgIG5ld192YWx1ZVxuICBpblxuICBsZXQgYWxsb2NhdGlvbl9wb2xpY3kgPSBPcHRpb24ubWFwIGFsbG9jYXRpb25fcG9saWN5IH5mOkFsbG9jYXRpb25fcG9saWN5LnRvX2ludCBpblxuICBsZXQgbmV3X2NvbnRyb2xfcGFyYW1zID1cbiAgICBDb250cm9sLkZpZWxkcy5tYXBcbiAgICAgIH5taW5vcl9oZWFwX3NpemU6KGYgbWlub3JfaGVhcF9zaXplIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWFqb3JfaGVhcF9pbmNyZW1lbnQ6KGYgbWFqb3JfaGVhcF9pbmNyZW1lbnQgc3RyaW5nX29mX2ludClcbiAgICAgIH5zcGFjZV9vdmVyaGVhZDooZiBzcGFjZV9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnZlcmJvc2U6KGYgdmVyYm9zZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfm1heF9vdmVyaGVhZDooZiBtYXhfb3ZlcmhlYWQgc3RyaW5nX29mX2ludClcbiAgICAgIH5zdGFja19saW1pdDooZiBzdGFja19saW1pdCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmFsbG9jYXRpb25fcG9saWN5OihmIGFsbG9jYXRpb25fcG9saWN5IHN0cmluZ19vZl9pbnQpXG4gICAgICB+d2luZG93X3NpemU6KGYgd2luZG93X3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWFqb3JfcmF0aW86KGYgY3VzdG9tX21ham9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX3JhdGlvOihmIGN1c3RvbV9taW5vcl9yYXRpbyBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9taW5vcl9tYXhfc2l6ZTooZiBjdXN0b21fbWlub3JfbWF4X3NpemUgc3RyaW5nX29mX2ludClcbiAgaW5cbiAgc2V0IG5ld19jb250cm9sX3BhcmFtc1xuOztcblxubGV0IGRpc2FibGVfY29tcGFjdGlvbiA/bG9nZ2VyIH5hbGxvY2F0aW9uX3BvbGljeSAoKSA9XG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9XG4gICAgbWF0Y2ggYWxsb2NhdGlvbl9wb2xpY3kgd2l0aFxuICAgIHwgYERvbid0X2NoYW5nZSAtPiBOb25lXG4gICAgfCBgU2V0X3RvIHBvbGljeSAtPiBTb21lIHBvbGljeVxuICBpblxuICAoKiBUaGUgdmFsdWUgMV8wMDBfMDAwLCBhY2NvcmRpbmcgdG9cbiAgICAgaHR0cDovL2NhbWwuaW5yaWEuZnIvcHViL2RvY3MvbWFudWFsLW9jYW1sLTQuMDIvbGlicmVmL0djLmh0bWxcbiAgICAgd2lsbCBkaXNhYmxlIGNvbXBhY3Rpb25zLlxuICAqKVxuICB0dW5lID9sb2dnZXIgP2FsbG9jYXRpb25fcG9saWN5IH5tYXhfb3ZlcmhlYWQ6MV8wMDBfMDAwICgpXG47O1xuXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIG1ham9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3Jfd29yZHNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcHJvbW90ZWRfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19wcm9tb3RlZF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtaW5vcl9jb2xsZWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX21pbm9yX2NvbGxlY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29tcGFjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19jb21wYWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtYWpvcl9wbHVzX21pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3Jkc1wiXG5leHRlcm5hbCBhbGxvY2F0ZWRfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19hbGxvY2F0ZWRfd29yZHNcIlxuZXh0ZXJuYWwgcnVuX21lbXByb2ZfY2FsbGJhY2tzIDogdW5pdCAtPiB1bml0ID0gXCJjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrc1wiXG5cblslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbmV4dGVybmFsIGhlYXBfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19oZWFwX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIGhlYXBfY2h1bmtzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfaGVhcF9jaHVua3NcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9wX2hlYXBfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY190b3BfaGVhcF93b3Jkc1wiIFtAQG5vYWxsb2NdXG5cblslJWVuZGlmXVxuXG5sZXQgc3RhdF9zaXplX2xhenkgPVxuICBsYXp5IChPYmoucmVhY2hhYmxlX3dvcmRzIChPYmoucmVwciAoU3RkbGliLkdjLnF1aWNrX3N0YXQgKCkgOiBTdGF0LnQpKSlcbjs7XG5cbmxldCBzdGF0X3NpemUgKCkgPSBMYXp5LmZvcmNlIHN0YXRfc2l6ZV9sYXp5XG5sZXQgemVybyA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKGludF9vZl9zdHJpbmcgXCIwXCIpXG5cbigqIFRoZSBjb21waWxlciB3b24ndCBvcHRpbWl6ZSBpbnRfb2Zfc3RyaW5nIGF3YXkgc28gaXQgd29uJ3RcbiAgIHBlcmZvcm0gY29uc3RhbnQgZm9sZGluZyBiZWxvdy4gKilcbmxldCByZWMga2VlcF9hbGl2ZSBvID0gaWYgemVybyA8PiAwIHRoZW4ga2VlcF9hbGl2ZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBvKVxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgKCogV2UgZGlzYWJsZSBpbmxpbmluZyBmb3IgdGhpcyBmdW5jdGlvbiBzbyB0aGUgR0Mgc3RhdHMgYW5kIHRoZSBjYWxsIHRvIFtmXSBhcmUgbmV2ZXJcbiAgICAgcmVhcnJhbmdlZC4gKilcbiAgbGV0W0Bjb2xkXSBtZWFzdXJlX2ludGVybmFsIH5vbl9yZXN1bHQgZiA9XG4gICAgbGV0IG1pbm9yX3dvcmRzX2JlZm9yZSA9IG1pbm9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2JlZm9yZSA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgKCogV2Ugd3JhcCBbZiAoKV0gd2l0aCBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gdG8gcHJldmVudCB0aGUgcmV0dXJuIHZhbHVlIGZyb20gYmVpbmdcbiAgICAgICBvcHRpbWl6ZWQgYXdheS4gKilcbiAgICBsZXQgeCA9IFN5cy5vcGFxdWVfaWRlbnRpdHkgKGYgKCkpIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FmdGVyID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYWZ0ZXIgPSBtYWpvcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hbGxvY2F0ZWQgPSBtYWpvcl93b3Jkc19hZnRlciAtIG1ham9yX3dvcmRzX2JlZm9yZSBpblxuICAgIGxldCBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgPSBtaW5vcl93b3Jkc19hZnRlciAtIG1pbm9yX3dvcmRzX2JlZm9yZSBpblxuICAgIG9uX3Jlc3VsdCB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgeFxuICA7O1xuXG4gIGxldCBpc196ZXJvX2FsbG9jICh0eXBlIGEpIChmIDogdW5pdCAtPiBhKSA9XG4gICAgKCogSW5zdGVhZCBvZiB1c2luZyBbQWxsb2NhdGlvbl9yZXBvcnQubWVhc3VyZV0sIGFuZCBtYXRjaGluZyBvbiB0aGUgcmVzdWx0LCB3ZSB1c2VcbiAgICAgICB0aGlzIGNvbnN0cnVjdGlvbiwgaW4gb3JkZXIgdG8gaGF2ZSBbaXNfemVyb19hbGxvY10gbm90IGFsbG9jYXRlIGl0c2VsZi4gVGhpc1xuICAgICAgIGVuYWJsZXMgW2lzX3plcm9fYWxsb2NdIHRvIGJlIHVzZWQgaW4gYSBuZXN0ZWQgd2F5LiAqKVxuICAgIG1lYXN1cmVfaW50ZXJuYWxcbiAgICAgIGZcbiAgICAgIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgdmFsdWUgLT5cbiAgICAgICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHZhbHVlIDogYSk7XG4gICAgICAgIG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwICYmIG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX3JlcG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQ7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCB9XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1lYXN1cmVfYWxsb2NhdGlvbiBmID1cbiAgICBtZWFzdXJlX2ludGVybmFsIGYgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4IC0+XG4gICAgICB4LCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX2xvZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNpemVfaW5fd29yZHMgOiBpbnRcbiAgICAgIDsgaXNfbWFqb3IgOiBib29sXG4gICAgICA7IGJhY2t0cmFjZSA6IHN0cmluZ1xuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDExLCAwKV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IGxvZyA6IEFsbG9jYXRpb25fbG9nLnQgbGlzdCByZWYgPSByZWYgW11cbiAgICBhbmQgbWFqb3JfYWxsb2NzID0gcmVmIDBcbiAgICBhbmQgbWlub3JfYWxsb2NzID0gcmVmIDAgaW5cbiAgICBsZXQgb25fYWxsb2MgfmlzX21ham9yIChpbmZvIDogU3RkbGliLkdjLk1lbXByb2YuYWxsb2NhdGlvbikgPVxuICAgICAgaWYgaXNfbWFqb3JcbiAgICAgIHRoZW4gbWFqb3JfYWxsb2NzIDo9ICFtYWpvcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlc1xuICAgICAgZWxzZSBtaW5vcl9hbGxvY3MgOj0gIW1pbm9yX2FsbG9jcyArIGluZm8ubl9zYW1wbGVzO1xuICAgICAgbGV0IGJhY2t0cmFjZSA9IFN0ZGxpYi5QcmludGV4Yy5yYXdfYmFja3RyYWNlX3RvX3N0cmluZyBpbmZvLmNhbGxzdGFjayBpblxuICAgICAgKCogTWFrZSBiYWNrdHJhY2VzIGVhc2llciB0byByZWFkIGJ5IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgYmVsb3cgdGhpcyBmdW5jdGlvbiAqKVxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zdWJzdHJfaW5kZXggYmFja3RyYWNlIH5wYXR0ZXJuOlwibWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb25cIiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBwb3NzaWJsZTogd2UgbWF5IGhhdmUgbG9nZ2VkIGFsbG9jYXRpb25zIGluIGFub3RoZXIgdGhyZWFkICopXG4gICAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgU3RyaW5nLnN1YiB+cG9zOjAgfmxlbjpwIGJhY2t0cmFjZVxuICAgICAgICAgIHw+IFN0cmluZy5yc3RyaXAgfmRyb3A6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8ICdcXG4nIC0+IGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgaW5mbyA6IEFsbG9jYXRpb25fbG9nLnQgPVxuICAgICAgICB7IHNpemVfaW5fd29yZHMgPSBpbmZvLm5fc2FtcGxlczsgaXNfbWFqb3I7IGJhY2t0cmFjZSB9XG4gICAgICBpblxuICAgICAgbG9nIDo9IGluZm8gOjogIWxvZztcbiAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCB0cmFja2VyID1cbiAgICAgIHsgU3RkbGliLkdjLk1lbXByb2YubnVsbF90cmFja2VyIHdpdGhcbiAgICAgICAgYWxsb2NfbWlub3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6ZmFsc2VcbiAgICAgIDsgYWxsb2NfbWFqb3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6dHJ1ZVxuICAgICAgfVxuICAgIGluXG4gICAgU3RkbGliLkdjLk1lbXByb2Yuc3RhcnQgfnNhbXBsaW5nX3JhdGU6MS4wIHRyYWNrZXI7XG4gICAgKCogRXhuLnByb3RlY3QsIG1hbnVhbGx5IGlubGluZWQgdG8gZ3VhcmFudGVlIG5vIGFsbG9jYXRpb25zICopXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCBmICgpIHdpdGhcbiAgICAgIHwgeCAtPlxuICAgICAgICAoKiBNZW1wcm9mLnN0b3AgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYWxsIG1lbXByb2YgY2FsbGJhY2tzIGFyZSBydW4gKHNvbWUgbWF5IGJlXG4gICAgICAgICAgIGRlbGF5ZWQgaWYgdGhleSBoYXBwZW5lZCBkdXJpbmcgQyBjb2RlIGFuZCB0aGVyZSBoYXMgYmVlbiBubyBhbGxvY2F0aW9uIHNpbmNlKSxcbiAgICAgICAgICAgc28gd2UgZXhwbGljdGx5IGZsdXNoIHRoZW0gKilcbiAgICAgICAgcnVuX21lbXByb2ZfY2FsbGJhY2tzICgpO1xuICAgICAgICBTdGRsaWIuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICB4XG4gICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIHJ1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKTtcbiAgICAgICAgU3RkbGliLkdjLk1lbXByb2Yuc3RvcCAoKTtcbiAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgKCByZXN1bHRcbiAgICAsIEFsbG9jYXRpb25fcmVwb3J0LmNyZWF0ZVxuICAgICAgICB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkOiFtYWpvcl9hbGxvY3NcbiAgICAgICAgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZDohbWlub3JfYWxsb2NzXG4gICAgLCBMaXN0LnJldiAhbG9nIClcbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvbiBmID1cbiAgICBsZXQgeCwgcmVwb3J0ID0gbWVhc3VyZV9hbGxvY2F0aW9uIGYgaW5cbiAgICB4LCByZXBvcnQsIFtdXG4gIDs7XG5cbiAgWyUlZW5kaWZdXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgYWRkX2ZpbmFsaXplciB4IGYgPVxuICAgIHRyeSBTdGRsaWIuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplciBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICAoKiBbYWRkX2ZpbmFsaXplcl9leG5dIGlzIHRoZSBzYW1lIGFzIFthZGRfZmluYWxpemVyXS4gIEhvd2V2ZXIsIHRoZWlyIHR5cGVzIGluXG4gICAgIGNvcmVfZ2MubWxpIGFyZSBkaWZmZXJlbnQsIGFuZCB0aGUgdHlwZSBvZiBbYWRkX2ZpbmFsaXplcl0gZ3VhcmFudGVlcyB0aGF0IGl0IGFsd2F5c1xuICAgICByZWNlaXZlcyBhIGhlYXAgYmxvY2ssIHdoaWNoIGVuc3VyZXMgdGhhdCBpdCB3aWxsIG5vdCByYWlzZSwgd2hpbGVcbiAgICAgW2FkZF9maW5hbGl6ZXJfZXhuXSBhY2NlcHRzIGFueSB0eXBlLCBhbmQgc28gbWF5IHJhaXNlLiAqKVxuICBsZXQgYWRkX2ZpbmFsaXplcl9leG4geCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlIChmdW4geCAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IChmdW4gKCkgLT4gZiB4KSkgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGlnbm9yZSAoSGVhcF9ibG9jay5jcmVhdGUgeCA6IF8gSGVhcF9ibG9jay50IG9wdGlvbik7XG4gICAgICAoKiBJZiBbSGVhcF9ibG9jay5jcmVhdGVdIHN1Y2NlZWRzIHRoZW4gW3hdIGlzIHN0YXRpYyBkYXRhIGFuZCBzb1xuICAgICAgICAgd2UgY2FuIHNpbXBseSBkcm9wIHRoZSBmaW5hbGlzZXIuICopXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBhZGRfZmluYWxpemVyX2xhc3QgeCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAoKiBUaGUgdHlwZSBvZiBhZGRfZmluYWxpemVyX2xhc3QgZW5zdXJlcyB0aGF0IHRoZSBvbmx5IHBvc3NpYmxlIGZhaWx1cmVcbiAgICAgICAgIGlzIGR1ZSB0byBbeF0gYmVpbmcgc3RhdGljIGRhdGEuIEluIHRoaXMgY2FzZSwgd2Ugc2ltcGx5IGRyb3AgdGhlXG4gICAgICAgICBmaW5hbGl6ZXIgc2luY2Ugc3RhdGljIGRhdGEgd291bGQgbmV2ZXIgaGF2ZSBiZWVuIGNvbGxlY3RlZCBieSB0aGVcbiAgICAgICAgIEdDIGFueXdheS4gKilcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4geCBmID1cbiAgICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgZmluYWxpemVfcmVsZWFzZSA9IFN0ZGxpYi5HYy5maW5hbGlzZV9yZWxlYXNlXG5cbiAgbW9kdWxlIEFsYXJtID0gc3RydWN0XG4gICAgdHlwZSB0ID0gYWxhcm1cblxuICAgIGxldCBzZXhwX29mX3QgXyA9IFwiPGdjIGFsYXJtPlwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIGxldCBjcmVhdGUgZiA9IGNyZWF0ZV9hbGFybSAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZilcbiAgICBsZXQgZGVsZXRlID0gZGVsZXRlX2FsYXJtXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFNlcmlhbGl6YWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gc3RyaW5nICogaW50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgc3RhYmxlX3dpdG5lc3NdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaG9zdCA6IFN0cmluZy50XG4gICAgICAgIDsgcG9ydCA6IEludC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBxdWlja2NoZWNrXVxuXG4gICAgICBsZXQgdG9fc2VyaWFsaXphYmxlIHsgaG9zdDsgcG9ydCB9ID0gaG9zdCwgcG9ydFxuICAgICAgbGV0IG9mX3NlcmlhbGl6YWJsZSAoaG9zdCwgcG9ydCkgPSB7IGhvc3Q7IHBvcnQgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFQwXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXJpYWxpemFibGUpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFNlcmlhbGl6YWJsZS5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIG9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIHRvX3NlcmlhbGl6YWJsZVxuICAgICAgOztcblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IFwic3RhYmxlXCIgPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBTZXJpYWxpemFibGUudF07XG4gICAgICAgIFslZXhwZWN0XG4gICAgICAgICAge3xcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwXG4gICAgICAgICAgICAgICAgICA5NTc5OTBmMGZjNDE2MWZiODc0ZTY2ODcyNTUwZmI0MCB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKFNlcmlhbGl6YWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFQwXG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3NlcmlhbGl6YWJsZVxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBvcGVuISBJbXBvcnRcbiAgICAgIG9wZW4hIFN0ZF9pbnRlcm5hbFxuICAgICAgb3BlbiEgVDBcblxuICAgICAgbGV0IHRvX3N0cmluZyB7IGhvc3Q7IHBvcnQgfSA9IHNwcmludGYgXCIlczolZFwiIGhvc3QgcG9ydFxuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhvc3Q7IHBvcnQgXSAtPlxuICAgICAgICAgIGxldCBwb3J0ID1cbiAgICAgICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIHBvcnQgd2l0aFxuICAgICAgICAgICAgfCBfZXhuIC0+IGZhaWx3aXRoZiBcIkhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nOiBiYWQgcG9ydDogJXNcIiBzICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB7IGhvc3Q7IHBvcnQgfVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6ICVzXCIgcyAoKVxuICAgICAgOztcblxuICAgICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cC5BdG9tIHMgYXMgc2V4cCAtPlxuICAgICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgICB8IEZhaWx1cmUgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHApXG4gICAgICAgIHwgc2V4cCAtPiB0X29mX3NleHAgc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID1cbiAgICAgICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuXG4gICAgICAgICAgeyB1bnR5cGVkID1cbiAgICAgICAgICAgICAgVW5pb25cbiAgICAgICAgICAgICAgICBbICgqIGhhbmRsZXMgdGhlIGhvc3Q6cG9ydCBzdHJpbmcgY2FzZSAqKVxuICAgICAgICAgICAgICAgICAgU3RyaW5nXG4gICAgICAgICAgICAgICAgICA7ICgqIGhhbmRsZXMgdGhlIGxpc3QgKGhvc3QgcG9ydCkgY2FzZSAgKilcbiAgICAgICAgICAgICAgICAgIExpc3QgKENvbnMgKFN0cmluZywgQ29ucyAoSW50ZWdlciwgRW1wdHkpKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVDFcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoVDEpXG5cbiAgICBsZXQldGVzdF91bml0IFwidF9vZl9zZXhwXCIgPVxuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3wobG9jYWxob3N0IDgwODApfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH07XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fGxvY2FsaG9zdDo4MDgwfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH1cbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInNleHAgcm91bmR0cmlwXCIgPVxuICAgICAgUXVpY2tjaGVjay50ZXN0IFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgICBbJXRlc3RfcmVzdWx0OiB0XSAodF9vZl9zZXhwIChzZXhwX29mX3QgdCkpIH5leHBlY3Q6dClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxuaW5jbHVkZSBMYXRlc3RcblxubGV0IGNyZWF0ZSB+aG9zdCB+cG9ydCA9IHsgaG9zdDsgcG9ydCB9XG5sZXQgaG9zdCB0ID0gdC5ob3N0XG5sZXQgcG9ydCB0ID0gdC5wb3J0XG5sZXQgdHVwbGUgdCA9IHRvX3NlcmlhbGl6YWJsZSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkhvc3RfYW5kX3BvcnRcIlxuICBlbmQpXG5cbmluY2x1ZGUgKEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoTGF0ZXN0KSA6IEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChMYXRlc3QpXG5cbmxldCB0eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJIb3N0X2FuZF9wb3J0XCIgc2V4cF9vZl90XG4iLCJvcGVuIFN0YWJsZV9tb2R1bGVfdHlwZXNcbm1vZHVsZSBCaW5hYmxlID0gQmluYWJsZS5TdGFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvci5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxuXG5tb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdCA9IHN0cnVjdFxuICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogdCAtPiBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICBlbmQpIDogUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVDEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUMiA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIE1cblxuICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVDJcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUuVjEgKFN0YWJsZV9mb3JtYXQpIChUMilcbiAgICAgIGluY2x1ZGUgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFQxXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlYxLk1ha2UgKFQxKVxuICBlbmRcblxuICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogdCAtPiBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogU3RhYmxlX2Zvcm1hdC50IC0+IHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMiAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUxLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAnYSBTdGFibGVfZm9ybWF0LnQgLT4gJ2EgdFxuICAgICAgICAgICAgdmFsIGNhbGxlcl9pZGVudGl0eSA6IEJpbl9zaGFwZS5VdWlkLnRcbiAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUxLlYyIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQyID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMi5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUyLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMikgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIpIHQgLT4gKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyKSB0XG4gICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMi5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUyLlYyIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQzID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgbWFwXG4gICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgIC0+IGYxOignYTEgLT4gJ2IxKVxuICAgICAgICAgICAgICAtPiBmMjooJ2EyIC0+ICdiMilcbiAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgIC0+ICgnYjEsICdiMiwgJ2IzKSB0XG5cbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyLCAnYTMpIHQgLT4gKCdhMSwgJ2EyLCAnYTMpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMy5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUzLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5cbiAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXBcbiAgICAgICAgICAgICAgOiAgKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgICAgICAgICAgIC0+IGYyOignYTIgLT4gJ2IyKVxuICAgICAgICAgICAgICAtPiBmMzooJ2EzIC0+ICdiMylcbiAgICAgICAgICAgICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcblxuICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgdCAtPiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnQgLT4gKCdhMSwgJ2EyLCAnYTMpIHRcbiAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2ExLCAnYTIsICdhMykgdCA9ICgnYTEsICdhMiwgJ2EzKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMy5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUzLlYyIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhfc3RhYmxlX3dpdG5lc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogdCAtPiBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdC5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogdCAtPiBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiBTdGFibGVfZm9ybWF0LnQgLT4gdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzAgd2l0aCB0eXBlIHQgPSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdC5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyA9XG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9zdGFibGVfZm9ybWF0MSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0MS5WMSAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBhKSA6IGEgU3RhYmxlX3dpdG5lc3MudCAtPiBhIE0udCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgZnVuIHdpdG5lc3MgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTEgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBzdGFibGVfd2l0bmVzc11cbiAgICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgICAgdmFsIHRvX3N0YWJsZV9mb3JtYXQgOiAnYSB0IC0+ICdhIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICdhIFN0YWJsZV9mb3JtYXQudCAtPiAnYSB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIE0udCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBPZl9zdGFibGVfZm9ybWF0MS5WMiAoU3RhYmxlX2Zvcm1hdCkgKE0pXG5cbiAgICAgIGxldCBzdGFibGVfd2l0bmVzcyAodHlwZSBhKSA6IGEgU3RhYmxlX3dpdG5lc3MudCAtPiBhIE0udCBTdGFibGVfd2l0bmVzcy50ID1cbiAgICAgICAgZnVuIHdpdG5lc3MgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTdGFibGVfd2l0bmVzcyA9IFN0YWJsZV93aXRuZXNzLk9mX3NlcmlhbGl6YWJsZTEgKFN0YWJsZV9mb3JtYXQpIChNKSBpblxuICAgICAgICBTdGFibGVfd2l0bmVzcy5vZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBTdGFibGVfZm9ybWF0LnN0YWJsZV93aXRuZXNzXG4gICAgICAgICAgTS5vZl9zdGFibGVfZm9ybWF0XG4gICAgICAgICAgTS50b19zdGFibGVfZm9ybWF0XG4gICAgICAgICAgd2l0bmVzc1xuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQyLlYxIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMiAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgc3RhYmxlX3dpdG5lc3NdXG4gICAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIG1hcCA6ICgnYTEsICdhMikgdCAtPiBmMTooJ2ExIC0+ICdiMSkgLT4gZjI6KCdhMiAtPiAnYjIpIC0+ICgnYjEsICdiMikgdFxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgdCAtPiAoJ2ExLCAnYTIpIFN0YWJsZV9mb3JtYXQudFxuICAgICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgICAgICB2YWwgY2FsbGVyX2lkZW50aXR5IDogQmluX3NoYXBlLlV1aWQudFxuICAgICAgICAgICAgZW5kKSA6IFdpdGhfc3RhYmxlX3dpdG5lc3MuUzIgd2l0aCB0eXBlICgnYTEsICdhMikgdCA9ICgnYTEsICdhMikgTS50ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIE9mX3N0YWJsZV9mb3JtYXQyLlYyIChTdGFibGVfZm9ybWF0KSAoTSlcblxuICAgICAgbGV0IHN0YWJsZV93aXRuZXNzIHdpdG5lc3MgPVxuICAgICAgICBsZXQgbW9kdWxlIFN0YWJsZV93aXRuZXNzID0gU3RhYmxlX3dpdG5lc3MuT2Zfc2VyaWFsaXphYmxlMiAoU3RhYmxlX2Zvcm1hdCkgKE0pIGluXG4gICAgICAgIFN0YWJsZV93aXRuZXNzLm9mX3NlcmlhbGl6YWJsZVxuICAgICAgICAgIFN0YWJsZV9mb3JtYXQuc3RhYmxlX3dpdG5lc3NcbiAgICAgICAgICBNLm9mX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICBNLnRvX3N0YWJsZV9mb3JtYXRcbiAgICAgICAgICB3aXRuZXNzXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RhYmxlX2Zvcm1hdDMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID1cbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDMuVjEgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUzIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgKFN0YWJsZV9mb3JtYXQgOiBzaWdcbiAgICAgICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHN0YWJsZV93aXRuZXNzXVxuICAgICAgZW5kKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICB0eXBlICgnYTEsICdhMiwgJ2EzKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgICAgdmFsIG1hcFxuICAgICAgICAgICAgICAgIDogICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgICAgLT4gZjE6KCdhMSAtPiAnYjEpXG4gICAgICAgICAgICAgICAgLT4gZjI6KCdhMiAtPiAnYjIpXG4gICAgICAgICAgICAgICAgLT4gZjM6KCdhMyAtPiAnYjMpXG4gICAgICAgICAgICAgICAgLT4gKCdiMSwgJ2IyLCAnYjMpIHRcblxuICAgICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMiwgJ2EzKSB0IC0+ICgnYTEsICdhMiwgJ2EzKSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgICAgdmFsIG9mX3N0YWJsZV9mb3JtYXQgOiAoJ2ExLCAnYTIsICdhMykgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMiwgJ2EzKSB0XG4gICAgICAgICAgICAgIHZhbCBjYWxsZXJfaWRlbnRpdHkgOiBCaW5fc2hhcGUuVXVpZC50XG4gICAgICAgICAgICBlbmQpIDogV2l0aF9zdGFibGVfd2l0bmVzcy5TMyB3aXRoIHR5cGUgKCdhMSwgJ2EyLCAnYTMpIHQgPSAoJ2ExLCAnYTIsICdhMykgTS50ID1cbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgT2Zfc3RhYmxlX2Zvcm1hdDMuVjIgKFN0YWJsZV9mb3JtYXQpIChNKVxuXG4gICAgICBsZXQgc3RhYmxlX3dpdG5lc3Mgd2l0bmVzcyA9XG4gICAgICAgIGxldCBtb2R1bGUgU3RhYmxlX3dpdG5lc3MgPSBTdGFibGVfd2l0bmVzcy5PZl9zZXJpYWxpemFibGUzIChTdGFibGVfZm9ybWF0KSAoTSkgaW5cbiAgICAgICAgU3RhYmxlX3dpdG5lc3Mub2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgU3RhYmxlX2Zvcm1hdC5zdGFibGVfd2l0bmVzc1xuICAgICAgICAgIE0ub2Zfc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIE0udG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICAgIHdpdG5lc3NcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbnRhaW5lcnMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGV4Y2VwdGlvbiBQaWRfbXVzdF9iZV9wb3NpdGl2ZSBvZiBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGVuc3VyZSBpID0gaWYgaSA8PSAwIHRoZW4gcmFpc2UgKFBpZF9tdXN0X2JlX3Bvc2l0aXZlIGkpIGVsc2UgaVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgPSBGbi5pZFxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gZW5zdXJlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50LlN0YWJsZS5WMSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPSBJbnQuU3RhYmxlLlYxLnRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBGbi5pZFxuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoV2l0aG91dF9jb250YWluZXJzKVxuICAgIGluY2x1ZGUgV2l0aG91dF9jb250YWluZXJzXG4gIGVuZFxuXG4gIG1vZHVsZSBMYXRlc3QgPSBWMVxuZW5kXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFibGUuTGF0ZXN0LldpdGhvdXRfY29udGFpbmVyc1xuXG50eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgaGFzaF1cblxubGV0IG9mX2ludCBpID0gZW5zdXJlIGlcbmxldCB0b19pbnQgPSBGbi5pZFxubGV0IG9mX3N0cmluZyBzdHJpbmcgPSBlbnN1cmUgKEludC5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbmxldCBpbml0ID0gb2ZfaW50IDFcblxuaW5jbHVkZVxuICBRdWlja2NoZWNrYWJsZS5PZl9xdWlja2NoZWNrYWJsZV9maWx0ZXJlZFxuICAgIChJbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlIG4gPSBPcHRpb24uc29tZV9pZiAobiA+IDApIG5cbiAgICAgIGxldCB0b19xdWlja2NoZWNrYWJsZSA9IHRvX2ludFxuICAgIGVuZClcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5QaWRcIlxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5RdWV1ZVxuXG5pbmNsdWRlIFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgYSA9XG4gICAgICAgIGxldCByID0gY3JlYXRlICgpIGluXG4gICAgICAgICgqIFdlIGVucXVldWUgZXZlcnl0aGluZyB0d2ljZSwgYW5kIGRlcXVldWUgaXQgb25jZSB0byBlbnN1cmU6XG4gICAgICAgICAgIC0gdGhhdCB0aGUgcXVldWUgaGFzIHRoZSBzYW1lIGNvbnRlbnQgYXMgdGhlIGFycmF5LlxuICAgICAgICAgICAtIHRoYXQgaXQgaGFzLCBpbiBtb3N0IGNhc2VzLCBhbiBpbnRlcmVzdGluZyBpbnRlcm5hbCBzdHJ1Y3R1cmUqKVxuICAgICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgICAgZW5xdWV1ZSByIGEuKGkpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBpZ25vcmUgKGRlcXVldWVfZXhuIHIgOiBib29sKTtcbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgclxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kKVxuXG5tb2R1bGUgU2VyaWFsaXphdGlvbl92MSA9IHN0cnVjdFxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gdF9zZXhwX2dyYW1tYXJcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcImI0Yzg0MjU0LTQ5OTItMTFlNi05YmE3LTczNGUxNTQwMjdiZFwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5RdWV1ZVwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciA9IGl0ZXJcbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPSBpbml0IGxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSlcbiAgICBlbmQpXG5cbiAgbGV0IHN0YWJsZV93aXRuZXNzIChfIDogJ2EgU3RhYmxlX3dpdG5lc3MudCkgOiAnYSB0IFN0YWJsZV93aXRuZXNzLnQgPVxuICAgICgqIFNlcmlhbGl6YXRpb25fdjEgZGVmaW5lcyBhIHN0YWJsZSBzZXJpYWxpemF0aW9uICopXG4gICAgU3RhYmxlX3dpdG5lc3MuYXNzZXJ0X3N0YWJsZVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgU2VyaWFsaXphdGlvbl92MVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxuICAgICgqIFdlIGRvbid0IGhhdmUgYSBbJWJpbl9kaWdlc3RdIGV4cGVjdCB0ZXN0IGhlcmUgYmVjYXVzZSB0aGUgYmluX2lvIGlzIG1vc3RseSBoYW5kXG4gICAgICAgd3JpdHRlbiwgYW5kIFtjb3JlX3F1ZXVlX3VuaXRfdGVzdHMubWxdIGhhcyB1bml0IHRlc3RzIGZvciBzcGVjaWZpYyB2YWx1ZXMuICopXG5cbiAgICBsZXQgbWFwID0gbWFwXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgVW5pdF90ZXN0ID0gU3RhYmxlX3VuaXRfdGVzdC5NYWtlXG5cblxubW9kdWxlIHR5cGUgU3RhYmxlID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMFxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhvdXRfY29tcGFyYXRvciA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBfd2l0aG91dF9jb21wYXJhdG9yXG5tb2R1bGUgdHlwZSBTdGFibGUxID0gU3RhYmxlX21vZHVsZV90eXBlcy5TMVxubW9kdWxlIHR5cGUgU3RhYmxlMiA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzJcbm1vZHVsZSB0eXBlIFN0YWJsZTMgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMzXG5tb2R1bGUgdHlwZSBTdGFibGU0ID0gU3RhYmxlX21vZHVsZV90eXBlcy5TNFxubW9kdWxlIHR5cGUgU3RhYmxlX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMFxubW9kdWxlIHR5cGUgU3RhYmxlX2ludDYzYWJsZV93aXRoX3dpdG5lc3MgPSBTdGFibGVfaW50NjNhYmxlLldpdGhfc3RhYmxlX3dpdG5lc3MuU1xuXG5tb2R1bGUgdHlwZSBTdGFibGVfd2l0aG91dF9jb21wYXJhdG9yX3dpdGhfd2l0bmVzcyA9XG4gIFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TMF93aXRob3V0X2NvbXBhcmF0b3JcblxubW9kdWxlIHR5cGUgU3RhYmxlMV93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTJfd2l0aF93aXRuZXNzID0gU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzX3dpdGhfd2l0bmVzcyA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuV2l0aF9zdGFibGVfd2l0bmVzcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNF93aXRoX3dpdG5lc3MgPSBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzRcblxubW9kdWxlIE1ha2Vfc3RhYmxlID0gTWFrZV9zdGFibGVcbmluY2x1ZGUgU3RhYmxlX2ludGVybmFsXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZS5TdGFibGVcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmcuU3RhYmxlXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZy5TdGFibGVcbm1vZHVsZSBCb29sID0gQm9vbC5TdGFibGVcbm1vZHVsZSBCeXRlX3VuaXRzID0gQnl0ZV91bml0cy5TdGFibGVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzLlN0YWJsZVxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlLlN0YWJsZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWsuU3RhYmxlXG5tb2R1bGUgTWQ1ID0gTWQ1LlN0YWJsZVxubW9kdWxlIEVpdGhlciA9IEVpdGhlci5TdGFibGVcbm1vZHVsZSBFcnJvciA9IEVycm9yLlN0YWJsZVxubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZS5TdGFibGVcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lLlN0YWJsZVxubW9kdWxlIEZsb2F0ID0gRmxvYXQuU3RhYmxlXG5tb2R1bGUgRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uID0gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uLlN0YWJsZVxubW9kdWxlIEZxdWV1ZSA9IEZxdWV1ZS5TdGFibGVcbm1vZHVsZSBHYyA9IEdjLlN0YWJsZVxubW9kdWxlIEhvc3RfYW5kX3BvcnQgPSBIb3N0X2FuZF9wb3J0LlN0YWJsZVxubW9kdWxlIEluZm8gPSBJbmZvLlN0YWJsZVxubW9kdWxlIEludCA9IEludC5TdGFibGVcbm1vZHVsZSBJbnQ2MyA9IEludDYzLlN0YWJsZVxubW9kdWxlIExhenkgPSBMYXp5LlN0YWJsZVxubW9kdWxlIExpc3QgPSBMaXN0LlN0YWJsZVxubW9kdWxlIE1hcCA9IE1hcC5TdGFibGVcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kLlN0YWJsZVxubW9kdWxlIE1vbnRoID0gTW9udGguU3RhYmxlXG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmcuU3RhYmxlXG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uLlN0YWJsZVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3IuU3RhYmxlXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnQuU3RhYmxlXG5tb2R1bGUgUGVybXMgPSBQZXJtcy5TdGFibGVcbm1vZHVsZSBQaWQgPSBQaWQuU3RhYmxlXG5tb2R1bGUgUXVldWUgPSBRdWV1ZS5TdGFibGVcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHQuU3RhYmxlXG5tb2R1bGUgU2V0ID0gU2V0LlN0YWJsZVxubW9kdWxlIFNleHAgPSBTZXhwLlN0YWJsZVxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGUuU3RhYmxlXG5tb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBTb3VyY2VfY29kZV9wb3NpdGlvbi5TdGFibGVcbm1vZHVsZSBTdHJpbmcgPSBTdHJpbmcuU3RhYmxlXG5tb2R1bGUgU3RyaW5nX2lkID0gU3RyaW5nX2lkLlN0YWJsZVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zLlN0YWJsZVxuXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXQuU3RhYmxlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMTFdIFVzZSBbVGltZV9mbG9hdF0gb3IgW1RpbWVfZmxvYXRfdW5peF0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgVGltZV9mbG9hdCA9IFRpbWVfZmxvYXQuU3RhYmxlXG5tb2R1bGUgVW5pdCA9IFVuaXQuU3RhYmxlXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NvcmVfdW5peC5TdGFibGVdXCJdXG5pbmNsdWRlIFBlcm1zLkV4cG9ydFxuXG5pbmNsdWRlIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5pbmNsdWRlIEJhc2UuRXhwb3J0ZWRfZm9yX3NwZWNpZmljX3VzZXMuR2xvYmFsaXplXG5pbmNsdWRlIEltcG9ydC5Ob3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbiAgSW50IDpcbiAgc2lnXG4gICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIEhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpXG5cbmxldCBvZl9jYW1sX2ludCB0ID0gdFxubGV0IHRvX2NhbWxfaW50IHQgPSB0XG5cbnR5cGUgc3lzX2JlaGF2aW9yID1cbiAgWyBgQ29udGludWUgKCoqIENvbnRpbnVlIHRoZSBwcm9jZXNzIGlmIGl0IGlzIGN1cnJlbnRseSBzdG9wcGVkICopXG4gIHwgYER1bXBfY29yZSAoKiogVGVybWluYXRlIHRoZSBwcm9jZXNzIGFuZCBkdW1wIGNvcmUgKilcbiAgfCBgSWdub3JlICgqKiBJZ25vcmUgdGhlIHNpZ25hbCAqKVxuICB8IGBTdG9wICgqKiBTdG9wIHRoZSBwcm9jZXNzICopXG4gIHwgYFRlcm1pbmF0ZSAoKiogVGVybWluYXRlIHRoZSBwcm9jZXNzICopXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbmxldCBlcXVhbCAodCA6IHQpIHQnID0gdCA9IHQnXG5cbmluY2x1ZGUgc3RydWN0XG4gICgqIFBsZWFzZSBrZWVwIGluIHN5bmMgd2l0aCB0aGUgbGlzdCBmb3IgdG9fc3RyaW5nL3N5c19iZWhhdmlvciAqKVxuICBvcGVuIFN0ZGxpYi5TeXNcblxuICBsZXQgYWJydCA9IHNpZ2FicnRcbiAgbGV0IGFscm0gPSBzaWdhbHJtXG4gIGxldCBidXMgPSBzaWdidXNcbiAgbGV0IGNobGQgPSBzaWdjaGxkXG4gIGxldCBjb250ID0gc2lnY29udFxuICBsZXQgZnBlID0gc2lnZnBlXG4gIGxldCBodXAgPSBzaWdodXBcbiAgbGV0IGlsbCA9IHNpZ2lsbFxuICBsZXQgaW50ID0gc2lnaW50XG4gIGxldCBraWxsID0gc2lna2lsbFxuICBsZXQgcGlwZSA9IHNpZ3BpcGVcbiAgbGV0IHBvbGwgPSBzaWdwb2xsXG4gIGxldCBwcm9mID0gc2lncHJvZlxuICBsZXQgcXVpdCA9IHNpZ3F1aXRcbiAgbGV0IHNlZ3YgPSBzaWdzZWd2XG4gIGxldCBzdG9wID0gc2lnc3RvcFxuICBsZXQgc3lzID0gc2lnc3lzXG4gIGxldCB0ZXJtID0gc2lndGVybVxuICBsZXQgdHJhcCA9IHNpZ3RyYXBcbiAgbGV0IHRzdHAgPSBzaWd0c3RwXG4gIGxldCB0dGluID0gc2lndHRpblxuICBsZXQgdHRvdSA9IHNpZ3R0b3VcbiAgbGV0IHVyZyA9IHNpZ3VyZ1xuICBsZXQgdXNyMSA9IHNpZ3VzcjFcbiAgbGV0IHVzcjIgPSBzaWd1c3IyXG4gIGxldCB2dGFscm0gPSBzaWd2dGFscm1cbiAgbGV0IHhjcHUgPSBzaWd4Y3B1XG4gIGxldCB4ZnN6ID0gc2lneGZzelxuICBsZXQgemVybyA9IDBcbmVuZFxuXG5leGNlcHRpb24gSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvciA9XG4gIGxldCBrbm93biA9XG4gICAgW1xuICAgICAgXCJzaWdhYnJ0XCIsIGFicnQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnYWxybVwiLCBhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2J1c1wiLCBidXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnY2hsZFwiLCBjaGxkLCBgSWdub3JlLCAxXG4gICAgOyBcInNpZ2NvbnRcIiwgY29udCwgYENvbnRpbnVlLCAxXG4gICAgOyBcInNpZ2ZwZVwiLCBmcGUsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaHVwXCIsIGh1cCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdpbGxcIiwgaWxsLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2ludFwiLCBpbnQsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lna2lsbFwiLCBraWxsLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BpcGVcIiwgcGlwZSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwb2xsXCIsIHBvbGwsIGBUZXJtaW5hdGUsIDJcbiAgICA7IFwic2lncHJvZlwiLCBwcm9mLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3F1aXRcIiwgcXVpdCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzZWd2XCIsIHNlZ3YsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc3RvcFwiLCBzdG9wLCBgU3RvcCwgMVxuICAgIDsgXCJzaWdzeXNcIiwgc3lzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3Rlcm1cIiwgdGVybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd0cmFwXCIsIHRyYXAsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndHN0cFwiLCB0c3RwLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dGluXCIsIHR0aW4sIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0b3VcIiwgdHRvdSwgYFN0b3AsIDFcbiAgICA7IFwic2lndXJnXCIsIHVyZywgYElnbm9yZSwgMlxuICAgIDsgXCJzaWd1c3IxXCIsIHVzcjEsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndXNyMlwiLCB1c3IyLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3Z0YWxybVwiLCB2dGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lneGNwdVwiLCB4Y3B1LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3hmc3pcIiwgeGZzeiwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd6ZXJvXCIsIHplcm8sIGBJZ25vcmUsIDFcbiAgICBdXG4gIGluXG4gIGxldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IHRfYnlfbmFtZSA9IFN0cmluZy5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgYmVoYXZpb3JfYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBMaXN0Lml0ZXIga25vd24gfmY6KGZ1biAobmFtZSwgdCwgYmVoYXZpb3IsIHN0YWJsZV92ZXJzaW9uKSAtPlxuICAgIEhhc2h0Ymwuc2V0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB+a2V5OnQgfmRhdGE6KG5hbWUsIHN0YWJsZV92ZXJzaW9uKTtcbiAgICBIYXNodGJsLnNldCB0X2J5X25hbWUgfmtleTpuYW1lIH5kYXRhOnQ7XG4gICAgSGFzaHRibC5zZXQgYmVoYXZpb3JfYnlfdCB+a2V5OnQgfmRhdGE6YmVoYXZpb3IpO1xuICAoKiBGb3IgdW5rbm93biBzaWduYWwgbnVtYmVycywgW3RvX3N0cmluZ10gcmV0dXJucyBhIG1lYW5pbmdmdWxcbiAgICAgc3RyaW5nLCB3aGlsZSBbZGVmYXVsdF9zeXNfYmVoYXZpb3JdIGhhcyB0byByYWlzZSBhbiBleGNlcHRpb25cbiAgICAgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHJpZ2h0IGFuc3dlciBpcy4gKilcbiAgbGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjpyZXF1ZXN0ZWRfdmVyc2lvbiA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB0IHdpdGhcbiAgICB8IFNvbWUgKHN0cmluZywgbmVlZGVkX3ZlcnNpb24pIHdoZW4gcmVxdWVzdGVkX3ZlcnNpb24gPj0gbmVlZGVkX3ZlcnNpb24gLT4gc3RyaW5nXG4gICAgfCBfIC0+IFwiPHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0IF4gXCI+XCJcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgcyA9IFN0cmluZy5sb3dlcmNhc2UgKFN0cmluZy5zdHJpcCBzKSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0X2J5X25hbWUgcyB3aXRoXG4gICAgfCBTb21lIHNuIC0+IHNuXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIjx1bmtub3duIHNpZ25hbCBcIlxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuc2xpY2UgcyAxNiB+LTEpIHdpdGhcbiAgICAgICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcykpXG4gICAgICBlbHNlIHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcylcbiAgaW5cbiAgbGV0IGRlZmF1bHRfc3lzX2JlaGF2aW9yIHQgPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBiZWhhdmlvcl9ieV90IHQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEludmFsaWRfYXJndW1lbnRcbiAgICAgICAgICAgKFwiU2lnbmFsLmRlZmF1bHRfc3lzX2JlaGF2aW9yOiB1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCkpXG4gICAgfCBTb21lIGJlaGF2aW9yIC0+IGJlaGF2aW9yXG4gIGluXG4gIHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3Jcbjs7XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZF9hdG9tIG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uID0gU2V4cC5BdG9tICh0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24pXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHMgfnZlcnNpb246MlxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjJcblxubGV0IHRfb2Zfc2V4cCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgfCBfIC0+IHJhaXNlIChFeHBlY3RlZF9hdG9tIHMpXG47O1xuXG50eXBlIHBpZF9zcGVjID0gWyBgVXNlX1NpZ25hbF91bml4IF1cbnR5cGUgc2lncHJvY21hc2tfY29tbWFuZCA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG5cbmxldCBjYW5fc2VuZF90byA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBvZl9zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9leG4gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9pID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNleHBfb2ZfcGlkX3NwZWMgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncGVuZGluZyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwcm9jbWFzayA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdzdXNwZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHRvX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgdHlwZSBiZWhhdmlvciA9XG4gICAgWyBgRGVmYXVsdFxuICAgIHwgYElnbm9yZVxuICAgIHwgYEhhbmRsZSBvZiB0IC0+IHVuaXRcbiAgICBdXG5cbiAgbW9kdWxlIEJlaGF2aW9yID0gc3RydWN0XG4gICAgbGV0IG9mX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBTdGRsaWIuU3lzLlNpZ25hbF9kZWZhdWx0IC0+IGBEZWZhdWx0XG4gICAgICB8IFNpZ25hbF9pZ25vcmUgLT4gYElnbm9yZVxuICAgICAgfCBTaWduYWxfaGFuZGxlIGYgLT4gYEhhbmRsZSBmXG4gICAgOztcblxuICAgIGxldCB0b19jYW1sID0gZnVuY3Rpb25cbiAgICAgIHwgYERlZmF1bHQgLT4gU3RkbGliLlN5cy5TaWduYWxfZGVmYXVsdFxuICAgICAgfCBgSWdub3JlIC0+IFNpZ25hbF9pZ25vcmVcbiAgICAgIHwgYEhhbmRsZSBmIC0+IFNpZ25hbF9oYW5kbGUgKGZ1biB0IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaWduYWwgdCBiZWhhdmlvciA9XG4gICAgQmVoYXZpb3Iub2ZfY2FtbCAoU3RkbGliLlN5cy5zaWduYWwgdCAoQmVoYXZpb3IudG9fY2FtbCBiZWhhdmlvcikpXG4gIDs7XG5cbiAgbGV0IHNldCB0IGJlaGF2aW9yID0gaWdub3JlIChzaWduYWwgdCBiZWhhdmlvciA6IGJlaGF2aW9yKVxuICBsZXQgaGFuZGxlIHQgZiA9IHNldCB0IChgSGFuZGxlIGYpXG5lbmRcblxub3BlbiBFeHBlcnRcblxubGV0IGhhbmRsZV9kZWZhdWx0IHQgPSBzZXQgdCBgRGVmYXVsdFxubGV0IGlnbm9yZSB0ID0gc2V0IHQgYElnbm9yZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MlxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmVdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gdF9vZl9zZXhwXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjFcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFNpZ25fb3JfbmFuID0gQmFzZS5TaWduX29yX25hblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ25fb3JfbmFuLnQgPVxuICAgICAgfCBOZWdcbiAgICAgIHwgWmVyb1xuICAgICAgfCBQb3NcbiAgICAgIHwgTmFuXG4gICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwLCBlbnVtZXJhdGVdXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFNpZ25fb3JfbmFuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ25fb3JfbmFuKSAoU3RhYmxlLlYxKVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuIFN0YWJsZV9pbnRlcm5hbFxuXG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIE9wdGlvbi50XG4gICAgICA7IG11dGFibGUgc2V0X2F0IDogU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICBbQGNvbXBhcmUuaWdub3JlXSBbQGVxdWFsLmlnbm9yZV1cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgZmllbGRzXVxuICBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb24gcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgICAgbGV0IG9mX2Zvcm1hdCAodjEgOiAnYSBGb3JtYXQudCkgOiAnYSB0ID0geyB2YWx1ZSA9ICF2MTsgc2V0X2F0ID0gWyVoZXJlXSB9XG4gICAgICBsZXQgdG9fZm9ybWF0ICh0IDogJ2EgdCkgOiAnYSBGb3JtYXQudCA9IHJlZiB0LnZhbHVlXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUuT2ZfYmluYWJsZTFfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGb3JtYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19mb3JtYXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZVxuICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGUxXG4gICAgICAgIChGb3JtYXQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICBpbmNsdWRlIFRcblxuICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2Zvcm1hdFxuICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFVuc3RhYmxlID0gU3RhYmxlLlYxXG5vcGVuIFN0YWJsZS5UXG5cbnR5cGUgJ2EgdCA9ICdhIFN0YWJsZS5ULnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHsgdmFsdWU7IHNldF9hdCB9ID1cbiAgbWF0Y2ggdmFsdWUgd2l0aFxuICB8IE5vbmUgLT4gWyVtZXNzYWdlIFwidW5zZXRcIl1cbiAgfCBTb21lIHZhbHVlIC0+XG4gICAgWyVtZXNzYWdlIFwiXCIgKHZhbHVlIDogYSkgfnNldF9hdDooc2V0X2F0IHw+IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRvX3N0cmluZyldXG47O1xuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0LnZhbHVlIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBhIC0+IGludmFyaWFudF9hIGFcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gTm9uZTsgc2V0X2F0ID0gWyVoZXJlXSB9XG5cbmxldCBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlID1cbiAgdC52YWx1ZSA8LSBTb21lIHZhbHVlO1xuICB0LnNldF9hdCA8LSBoZXJlXG47O1xuXG5sZXQgc2V0X2lmX25vbmUgdCBoZXJlIHZhbHVlID0gaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZSB0aGVuIHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWVcblxubGV0IHNldCB0IGhlcmUgdmFsdWUgPVxuICBpZiBPcHRpb24uaXNfbm9uZSB0LnZhbHVlXG4gIHRoZW4gKFxuICAgIHNldF9pbnRlcm5hbCB0IGhlcmUgdmFsdWU7XG4gICAgT2sgKCkpXG4gIGVsc2VcbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbU2V0X29uY2Uuc2V0X2V4bl0gYWxyZWFkeSBzZXRcIlxuICAgICAgICAgIH5zZXR0aW5nX2F0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udClcbiAgICAgICAgICB+cHJldmlvdXNseV9zZXRfYXQ6KHQuc2V0X2F0IDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgc2V0X2V4biB0IGhlcmUgdmFsdWUgPSBPcl9lcnJvci5va19leG4gKHNldCB0IGhlcmUgdmFsdWUpXG5sZXQgZ2V0IHQgPSB0LnZhbHVlXG5cbmxldCBnZXRfZXhuICh0IDogXyB0KSBoZXJlID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgU29tZSBhIC0+IGFcbiAgfCBOb25lIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJbU2V0X29uY2UuZ2V0X2V4bl0gdW5zZXRcIiB+YXQ6KGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbjs7XG5cbmxldCBpc19ub25lIHQgPSBPcHRpb24uaXNfbm9uZSB0LnZhbHVlXG5sZXQgaXNfc29tZSB0ID0gT3B0aW9uLmlzX3NvbWUgdC52YWx1ZVxubGV0IGl0ZXIgdCB+ZiA9IE9wdGlvbi5pdGVyIHQudmFsdWUgfmZcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSB0ID0gZ2V0X2V4biB0IFslaGVyZV1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgdG9fc3RyaW5nIF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgcHJpbnQgXyA9IGBEZXByZWNhdGVkX3VzZV9FeG5fdG9fc3RyaW5nX2luc3RlYWRcbmxldCBjYXRjaCBfIF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX2hhbmRsZV91bmNhdWdodF9pbnN0ZWFkXG5sZXQgcHJpbnRfYmFja3RyYWNlID0gU3RkbGliLlByaW50ZXhjLnByaW50X2JhY2t0cmFjZVxubGV0IGdldF9iYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZVxubGV0IHJlY29yZF9iYWNrdHJhY2UgPSBTdGRsaWIuUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZVxubGV0IGJhY2t0cmFjZV9zdGF0dXMgPSBTdGRsaWIuUHJpbnRleGMuYmFja3RyYWNlX3N0YXR1c1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuT3B0aW9uX2FycmF5XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBvcHRpb24gYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2FycmF5XG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5MYXp5fVtCYXNlLkxhenldfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEJhc2UuTGF6eS50XG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdCAoKiogQGlubGluZSAqKVxuXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5XaXRoX3N0YWJsZV93aXRuZXNzLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIGNvbXBhcmUgPVxuICBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG4gIC0+IFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuXG5sZXQgY29tcGFyZSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPCApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA+ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID49ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPD4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0IGVxdWFsIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgbWluIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgbWF4IF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgKCdhLCAnYikgZm4gPSAnYSAtPiAnYlxuXG5tb2R1bGUgUmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBSdmFsIG9mICdhXG4gICAgfCBFeHB0IG9mIGV4blxuXG4gIGxldCByZXR1cm4gPSBmdW5jdGlvblxuICAgIHwgUnZhbCB2IC0+IHZcbiAgICB8IEV4cHQgZSAtPiByYWlzZSBlXG4gIDs7XG5cbiAgbGV0IGNhcHR1cmUgZiB4ID1cbiAgICB0cnkgUnZhbCAoZiB4KSB3aXRoXG4gICAgfCBlIC0+IEV4cHQgZVxuICA7O1xuZW5kXG5cbmxldCB1bml0IGYgPVxuICBsZXQgbCA9IExhenkuZnJvbV9mdW4gZiBpblxuICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBsXG47O1xuXG5sZXQgdW5ib3VuZGVkICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIGYgPVxuICBsZXQgY2FjaGUgPVxuICAgIGxldCBtb2R1bGUgQSA9XG4gICAgICBIYXNoYWJsZS5NYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBhXG5cbiAgICAgICAgbGV0IHsgSGFzaHRibC5IYXNoYWJsZS5oYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9IGhhc2hhYmxlXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBBLlRhYmxlLmNyZWF0ZSAoKSB+c2l6ZTowXG4gIGluXG4gICgqIEFsbG9jYXRlIHRoaXMgY2xvc3VyZSBhdCB0aGUgY2FsbCB0byBbdW5ib3VuZGVkXSwgbm90IGF0IGVhY2ggY2FsbCB0byB0aGUgbWVtb2l6ZWRcbiAgICAgZnVuY3Rpb24uICopXG4gIGxldCByZWFsbHlfY2FsbF9mIGFyZyA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gIGZ1biBhcmcgLT4gUmVzdWx0LnJldHVybiAoSGFzaHRibC5maW5kaV9vcl9hZGQgY2FjaGUgYXJnIH5kZWZhdWx0OnJlYWxseV9jYWxsX2YpXG47O1xuXG4oKiB0aGUgc2FtZSBidXQgd2l0aCBhIGJvdW5kIG9uIGNhY2hlIHNpemUgKilcbmxldCBscnUgKHR5cGUgYSkgPyhoYXNoYWJsZSA9IEhhc2h0YmwuSGFzaGFibGUucG9seSkgfm1heF9jYWNoZV9zaXplIGYgPVxuICBpZiBtYXhfY2FjaGVfc2l6ZSA8PSAwXG4gIHRoZW4gZmFpbHdpdGhmIFwiTWVtby5scnU6IG1heF9jYWNoZV9zaXplIG9mICVpIDw9IDBcIiBtYXhfY2FjaGVfc2l6ZSAoKTtcbiAgbGV0IG1vZHVsZSBDYWNoZSA9XG4gICAgSGFzaF9xdWV1ZS5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IHsgSGFzaHRibC5IYXNoYWJsZS5oYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuICBpblxuICBsZXQgY2FjaGUgPSBDYWNoZS5jcmVhdGUgKCkgaW5cbiAgZnVuIGFyZyAtPlxuICAgIFJlc3VsdC5yZXR1cm5cbiAgICAgIChtYXRjaCBDYWNoZS5sb29rdXBfYW5kX21vdmVfdG9fYmFjayBjYWNoZSBhcmcgd2l0aFxuICAgICAgIHwgU29tZSByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgcmVzdWx0ID0gUmVzdWx0LmNhcHR1cmUgZiBhcmcgaW5cbiAgICAgICAgIENhY2hlLmVucXVldWVfYmFja19leG4gY2FjaGUgYXJnIHJlc3VsdDtcbiAgICAgICAgICgqIGVqZWN0IGxlYXN0IHJlY2VudGx5IHVzZWQgY2FjaGUgZW50cnkgKilcbiAgICAgICAgIGlmIENhY2hlLmxlbmd0aCBjYWNoZSA+IG1heF9jYWNoZV9zaXplXG4gICAgICAgICB0aGVuIGlnbm9yZSAoQ2FjaGUuZGVxdWV1ZV9mcm9udF9leG4gY2FjaGUgOiBfIFJlc3VsdC50KTtcbiAgICAgICAgIHJlc3VsdClcbjs7XG5cbmxldCBnZW5lcmFsID9oYXNoYWJsZSA/Y2FjaGVfc2l6ZV9ib3VuZCBmID1cbiAgbWF0Y2ggY2FjaGVfc2l6ZV9ib3VuZCB3aXRoXG4gIHwgTm9uZSAtPiB1bmJvdW5kZWQgP2hhc2hhYmxlIGZcbiAgfCBTb21lIG4gLT4gbHJ1ID9oYXNoYWJsZSB+bWF4X2NhY2hlX3NpemU6biBmXG47O1xuXG4oKiBXZSBleHBlY3QgW2Zfb25lc3RlcF0gdG8gYmUgYSBvbmUtc3RlcCB1bnJvbGxlZCByZWN1cnNpdmUgZnVuY3Rpb247IHNlZSB0aGUgbWxpLiBIZW5jZSxcbiAgIGhlcmUgd2UgY3JlYXRlIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBfYW5kXyBwYXNzIGl0IHRvIFtmX29uZXN0ZXBdIHRvIGJlIHVzZWQgZm9yXG4gICByZWN1cnNpdmUgY2FsbHMuXG5cbiAgIE5vdGUgdGhhdCB3ZSBpbW1lZGlhdGVseSBhcHBseSBbZl9vbmVzdGVwXSB0byBpdHMgZmlyc3QgYXJndW1lbnQgaGVyZSBzbyB0aGF0IGFueVxuICAgcHJlY29tcHV0YXRpb24gaXMgcGVyZm9ybWVkIHdoZW4gdGhlIHVzZXIgY2FsbHMgW3JlY3Vyc2l2ZV0uXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGlmIHNvbWVvbmUgd3JpdGVzIHRoaXMgbm9uLW1lbW9pemVkIGNvZGU6XG5cbiAgIFsgbGV0IHJlYyBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gXVxuXG4gICBhbmQgY29udmVydHMgdG8gbWVtb2l6YXRpb24gYnkgZG9pbmc6XG5cbiAgIHtbXG4gICAgIGxldCBmID1cbiAgICAgICBsZXQgZl9vbmVzdGVwIGYgPSBsZXQgZGF0YSA9IGNvbXB1dGVfd2l0aG91dF91c2luZ19mICgpIGluIGZ1biB4IC0+IC4uLiBmIC4uLiBpblxuICAgICAgIHJlY3Vyc2l2ZSBmX29uZXN0ZXBcbiAgIF19XG5cbiAgIHdlIHdhbnQgdG8gY29tcHV0ZSBbZGF0YV0gaW1tZWRpYXRlbHkuIElmIHdlIGhhZCBbZnVuIHggLT4gZl9vbmVzdGVwIChmb3JjZSBtZW1vaXplZClcbiAgIHhdIGJlbG93LCB3ZSdkIHJlY29tcHV0ZSBbZGF0YV0gZWFjaCB0aW1lIHRoZSB1c2VyIGNhbGxzIFtmXSBvbiBhbiBhcmd1bWVudCB0aGF0IGhhZG4ndFxuICAgeWV0IGJlZW4gbWVtb2l6ZWQuICopXG5sZXQgcmVjdXJzaXZlIH5oYXNoYWJsZSA/Y2FjaGVfc2l6ZV9ib3VuZCBmX29uZXN0ZXAgPVxuICBsZXQgcmVjIG1lbW9pemVkID1cbiAgICBsYXp5IChnZW5lcmFsIH5oYXNoYWJsZSA/Y2FjaGVfc2l6ZV9ib3VuZCAoZl9vbmVzdGVwIChmdW4geCAtPiAoZm9yY2UgbWVtb2l6ZWQpIHgpKSlcbiAgaW5cbiAgZm9yY2UgbWVtb2l6ZWRcbjs7XG5cbmxldCBvZl9jb21wYXJhYmxlICh0eXBlIGluZGV4KSAobW9kdWxlIE0gOiBDb21wYXJhYmxlLlNfcGxhaW4gd2l0aCB0eXBlIHQgPSBpbmRleCkgZiA9XG4gIGxldCBtID0gcmVmIE0uTWFwLmVtcHR5IGluXG4gIGZ1biAoeCA6IE0udCkgLT5cbiAgICBsZXQgdiA9XG4gICAgICBtYXRjaCBNYXAuZmluZCAhbSB4IHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgdiA9IFJlc3VsdC5jYXB0dXJlIGYgeCBpblxuICAgICAgICBtIDo9IE1hcC5zZXQgIW0gfmtleTp4IH5kYXRhOnY7XG4gICAgICAgIHZcbiAgICBpblxuICAgIFJlc3VsdC5yZXR1cm4gdlxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIFF1ZXVlID0gQmFzZS5MaW5rZWRfcXVldWVcbmluY2x1ZGUgUXVldWVcblxuaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBRdWV1ZS50XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4MDBkZjlhMC00OTkyLTExZTYtODgxZC1mZmUxYTVjOGFjZWRcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5MaW5rZWRfcXVldWVcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciA9IGl0ZXJcblxuICAgICgqIEJpbl9wcm90IHJlYWRzIHRoZSBlbGVtZW50cyBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IHdlcmUgd3JpdHRlbiBvdXQsIGFzIGRldGVybWluZWRcbiAgICAgICBieSBbaXRlcl0uICBTbywgd2UgY2FuIGlnbm9yZSB0aGUgaW5kZXggYW5kIGp1c3QgZW5xdWV1ZSBlYWNoIGVsZW1lbnQgYXMgaXQgaXMgcmVhZFxuICAgICAgIGluLiAqKVxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgICAgIGZvciBfID0gMSB0byBsZW4gZG9cbiAgICAgICAgZW5xdWV1ZSB0IChuZXh0ICgpKVxuICAgICAgZG9uZTtcbiAgICAgIHRcbiAgICA7O1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgRGVyaXZpbmdfaGFzaF9pbnRmXG5cbm1vZHVsZSBPZl9kZXJpdmluZ19oYXNoXG4gICAgKFJlcHIgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgIHZhbCB0b19yZXByIDogdCAtPiBSZXByLnRcbiAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFJlcHIuaGFzaF9mb2xkX3Qgc3RhdGUgKE0udG9fcmVwciB0KVxuICBsZXQgaGFzaCA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5vZl9mb2xkIGhhc2hfZm9sZF90XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAnYSB0ID1cbiAgeyAoKiBbYXJyXSBpcyBhIGN5Y2xpYyBidWZmZXIgKilcbiAgICBtdXRhYmxlIGFyciA6ICdhIE9wdGlvbl9hcnJheS50XG4gIDsgKCogW2Zyb250X2luZGV4XSBhbmQgW2JhY2tfaW5kZXhdIGFyZSB0aGUgcG9zaXRpb25zIGluIHdoaWNoIG5ldyBlbGVtZW50cyBtYXkgYmVcbiAgICAgICBlbnF1ZXVlZC4gIFRoaXMgbWFrZXMgdGhlIGFjdGl2ZSBwYXJ0IG9mIFthcnJdIHRoZSByYW5nZSBmcm9tIFtmcm9udF9pbmRleCsxXSB0b1xuICAgICAgIFtiYWNrX2luZGV4LTFdIChtb2R1bG8gdGhlIGxlbmd0aCBvZiBbYXJyXSBhbmQgd3JhcHBpbmcgYXJvdW5kIGlmIG5lY2Vzc2FyeSkuICBOb3RlXG4gICAgICAgdGhhdCB0aGlzIG1lYW5zIHRoZSBhY3RpdmUgcmFuZ2UgaXMgbWF4aW1pemVkIHdoZW4gW2Zyb250X2luZGV4ID0gYmFja19pbmRleF0sIHdoaWNoXG4gICAgICAgb2NjdXJzIHdoZW4gdGhlcmUgYXJlIFtBcnJheS5sZW5ndGggYXJyIC0gMV0gYWN0aXZlIGVsZW1lbnRzLiAqKVxuICAgIG11dGFibGUgZnJvbnRfaW5kZXggOiBpbnRcbiAgOyBtdXRhYmxlIGJhY2tfaW5kZXggOiBpbnRcbiAgOyAoKiBhcHBhcmVudF9mcm9udF9pbmRleCBpcyB3aGF0IGlzIGV4cG9zZWQgYXMgdGhlIGZyb250IGluZGV4IGV4dGVybmFsbHkuICBJdCBoYXMgbm9cbiAgICAgICByZWFsIHJlbGF0aW9uIHRvIHRoZSBhcnJheSAtLSBldmVyeSBlbnF1ZXVlIHRvIHRoZSBmcm9udCBkZWNyZW1lbnRzIGl0IGFuZCBldmVyeVxuICAgICAgIGRlcXVldWUgZnJvbSB0aGUgZnJvbnQgaW5jcmVtZW50cyBpdC4gKilcbiAgICBtdXRhYmxlIGFwcGFyZW50X2Zyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyAoKiBXZSBrZWVwIGFycl9sZW5ndGggaGVyZSBhcyBhIHNwZWVkIGhhY2suICBDYWxsaW5nIEFycmF5Lmxlbmd0aCBvbiBhcnIgaXMgYWN0dWFsbHlcbiAgICAgICBtZWFuaW5nZnVsbHkgc2xvd2VyLiAqKVxuICAgIG11dGFibGUgYXJyX2xlbmd0aCA6IGludFxuICA7IG5ldmVyX3NocmluayA6IGJvb2xcbiAgfVxuXG5sZXQgY3JlYXRlID9pbml0aWFsX2xlbmd0aCA/bmV2ZXJfc2hyaW5rICgpID1cbiAgbGV0IG5ldmVyX3NocmluayA9XG4gICAgbWF0Y2ggbmV2ZXJfc2hyaW5rIHdpdGhcbiAgICB8IE5vbmUgLT4gT3B0aW9uLmlzX3NvbWUgaW5pdGlhbF9sZW5ndGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gIGluXG4gIGxldCBpbml0aWFsX2xlbmd0aCA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDo3IGluaXRpYWxfbGVuZ3RoIGluXG4gIGlmIGluaXRpYWxfbGVuZ3RoIDwgMFxuICB0aGVuIGludmFsaWRfYXJnZiBcInBhc3NlZCBuZWdhdGl2ZSBpbml0aWFsX2xlbmd0aCB0byBEZXF1ZS5jcmVhdGU6ICVpXCIgaW5pdGlhbF9sZW5ndGggKCk7XG4gICgqIE1ha2UgdGhlIGluaXRpYWwgYXJyYXkgbGVuZ3RoIGJlIFtpbml0aWFsX2xlbmd0aCArIDFdIHNvIHdlIGNhbiBmaXQgW2luaXRpYWxfbGVuZ3RoXVxuICAgICBlbGVtZW50cyB3aXRob3V0IGdyb3dpbmcuICBXZSBuZXZlciBxdWl0ZSB1c2UgdGhlIHdob2xlIGFycmF5LiAqKVxuICBsZXQgYXJyX2xlbmd0aCA9IGluaXRpYWxfbGVuZ3RoICsgMSBpblxuICB7IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjphcnJfbGVuZ3RoXG4gIDsgZnJvbnRfaW5kZXggPSAwXG4gIDsgYmFja19pbmRleCA9IDFcbiAgOyBhcHBhcmVudF9mcm9udF9pbmRleCA9IDBcbiAgOyBsZW5ndGggPSAwXG4gIDsgYXJyX2xlbmd0aFxuICA7IG5ldmVyX3Nocmlua1xuICB9XG47O1xuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcblxuKCogV2Uga2VlcCB0cmFjayBvZiB0aGUgbGVuZ3RoIGluIGEgbXV0YWJsZSBmaWVsZCBmb3Igc3BlZWQsIGJ1dCB0aGlzIGNhbGN1bGF0aW9uIHNob3VsZFxuICAgYmUgY29ycmVjdCBieSBjb25zdHJ1Y3Rpb24sIGFuZCBjYW4gYmUgdXNlZCBmb3IgdGVzdGluZy4gKilcbmxldCBfaW52YXJpYW50X2xlbmd0aCB0ID1cbiAgbGV0IGNvbnN0cnVjdGVkX2xlbmd0aCA9XG4gICAgaWYgdC5mcm9udF9pbmRleCA8IHQuYmFja19pbmRleFxuICAgIHRoZW4gdC5iYWNrX2luZGV4IC0gdC5mcm9udF9pbmRleCAtIDFcbiAgICBlbHNlIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxICsgdC5hcnJfbGVuZ3RoXG4gIGluXG4gIGFzc2VydCAobGVuZ3RoIHQgPSBjb25zdHJ1Y3RlZF9sZW5ndGgpXG47O1xuXG4oKiBUaGUgdmFyaW91cyBcIndoZW5fbm90X2VtcHR5XCIgZnVuY3Rpb25zIHJldHVybiBtaXNsZWFkaW5nIG51bWJlcnMgd2hlbiB0aGUgZGVxdWV1ZSBpc1xuICAgZW1wdHkuICBUaGV5IGFyZSBzYWZlIHRvIGNhbGwgaWYgaXQgaXMga25vd24gdGhhdCB0aGUgZGVxdWV1ZSBpcyBub24tZW1wdHkuICopXG5sZXQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9IHQuYXBwYXJlbnRfZnJvbnRfaW5kZXhcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgbGVuZ3RoIHQgLSAxXG5cbmxldCBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmFycl9sZW5ndGggLSAxIHRoZW4gMCBlbHNlIHQuZnJvbnRfaW5kZXggKyAxXG47O1xuXG5sZXQgYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCA9XG4gIGlmIHQuYmFja19pbmRleCA9IDAgdGhlbiB0LmFycl9sZW5ndGggLSAxIGVsc2UgdC5iYWNrX2luZGV4IC0gMVxuOztcblxubGV0IGNoZWNrZWQgdCBmID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChmIHQpXG5sZXQgYXBwYXJlbnRfZnJvbnRfaW5kZXggdCA9IGNoZWNrZWQgdCBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eVxubGV0IGFwcGFyZW50X2JhY2tfaW5kZXggdCA9IGNoZWNrZWQgdCBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5XG5cbmxldCBmb2xkaScgdCBkaXIgfmluaXQgfmYgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gaW5pdFxuICBlbHNlIChcbiAgICBsZXQgYXBwYXJlbnRfZnJvbnQgPSBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFwcGFyZW50X2JhY2sgPSBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgYWN0dWFsX2JhY2sgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyB+YXBwYXJlbnRfaSB+cmVhbF9pIH5zdG9wX3BvcyB+c3RlcCA9XG4gICAgICBpZiByZWFsX2kgPSBzdG9wX3Bvc1xuICAgICAgdGhlbiBhY2MsIGFwcGFyZW50X2lcbiAgICAgIGVsc2VcbiAgICAgICAgbG9vcFxuICAgICAgICAgIChmIGFwcGFyZW50X2kgYWNjIChPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIHJlYWxfaSkpXG4gICAgICAgICAgfmFwcGFyZW50X2k6KGFwcGFyZW50X2kgKyBzdGVwKVxuICAgICAgICAgIH5yZWFsX2k6KHJlYWxfaSArIHN0ZXApXG4gICAgICAgICAgfnN0b3BfcG9zXG4gICAgICAgICAgfnN0ZXBcbiAgICBpblxuICAgICgqIFdlIHdhbnQgdG8gaXRlcmF0ZSBmcm9tIGFjdHVhbF9mcm9udCB0byBhY3R1YWxfYmFjayAob3IgdmljZSB2ZXJzYSksIGJ1dCB3ZSBtYXlcbiAgICAgICBuZWVkIHRvIHdyYXAgYXJvdW5kIHRoZSBhcnJheSB0byBkbyBzby4gIFRodXMgd2UgZG8gdGhlIGZvbGxvd2luZzpcbiAgICAgICAxLiAgSWYgdGhlIGFjdGl2ZSByYW5nZSBpcyBjb250aWd1b3VzIChpLmUuIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFjayksIHRoZW4gbG9vcFxuICAgICAgIHN0YXJ0aW5nIGF0IHRoZSBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB1bnRpbCB3ZSByZWFjaCB0aGUgZmlyc3RcbiAgICAgICBlbGVtZW50IG91dHNpZGUgb2YgaXQuXG4gICAgICAgMi4gIElmIGl0IGlzIG5vdCBjb250aWd1b3VzIChhY3R1YWxfZnJvbnQgPiBhY3R1YWxfYmFjayksIHRoZW4gZmlyc3QgbG9vcCBmcm9tIHRoZVxuICAgICAgIGFwcHJvcHJpYXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiAgVGhlbiwgbG9vcCBmcm9tXG4gICAgICAgdGhlIG9wcG9zaXRlIGVuZCBvZiB0aGUgYXJyYXkgdG8gdGhlIG9wcG9zaXRlIGVuZCBvZiB0aGUgYWN0aXZlIHJhbmdlLlxuICAgICopXG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IGBmcm9udF90b19iYWNrIC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9mcm9udFxuICAgICAgICAgICAgfnJlYWxfaTphY3R1YWxfZnJvbnRcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKVxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBhY2MpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFjYywgYXBwYXJlbnRfaSA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6dC5hcnJfbGVuZ3RoXG4gICAgICAgICAgICB+c3RlcDoxXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MsIF8gPSBsb29wIGFjYyB+YXBwYXJlbnRfaSB+cmVhbF9pOjAgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpIH5zdGVwOjEgaW5cbiAgICAgICAgYWNjKVxuICAgIHwgYGJhY2tfdG9fZnJvbnQgLT5cbiAgICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2JhY2tcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2JhY2tcbiAgICAgICAgICAgIH5zdG9wX3BvczooYWN0dWFsX2Zyb250IC0gMSlcbiAgICAgICAgICAgIH5zdGVwOigtMSlcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2JhY2tcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2JhY2tcbiAgICAgICAgICAgIH5zdG9wX3BvczooLTEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MsIF8gPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgfmFwcGFyZW50X2lcbiAgICAgICAgICAgIH5yZWFsX2k6KHQuYXJyX2xlbmd0aCAtIDEpXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYykpXG47O1xuXG5sZXQgZm9sZCcgdCBkaXIgfmluaXQgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQgfmY6KGZ1biBfIGFjYyB2IC0+IGYgYWNjIHYpIFtAbm9udGFpbF1cbmxldCBpdGVyaScgdCBkaXIgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHYgLT4gZiBpIHYpXG5sZXQgaXRlcicgdCBkaXIgfmYgPSBmb2xkaScgdCBkaXIgfmluaXQ6KCkgfmY6KGZ1biBfICgpIHYgLT4gZiB2KVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGQnIHQgYGZyb250X3RvX2JhY2sgfmluaXQgfmZcbmxldCBmb2xkaSB0IH5pbml0IH5mID0gZm9sZGknIHQgYGZyb250X3RvX2JhY2sgfmluaXQgfmZcbmxldCBpdGVyaSB0IH5mID0gaXRlcmknIHQgYGZyb250X3RvX2JhY2sgfmZcblxubGV0IGl0ZXJpX2ludGVybmFsIHQgfmYgPVxuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gKFxuICAgIGxldCBhY3R1YWxfZnJvbnQgPSBhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBsZXQgcmVjIGxvb3AgfnJlYWxfaSB+c3RvcF9wb3MgPVxuICAgICAgaWYgcmVhbF9pIDwgc3RvcF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBmIHQuYXJyIHJlYWxfaTtcbiAgICAgICAgbG9vcCB+cmVhbF9pOihyZWFsX2kgKyAxKSB+c3RvcF9wb3MpXG4gICAgaW5cbiAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICB0aGVuIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOihhY3R1YWxfYmFjayArIDEpIFtAbm9udGFpbF1cbiAgICBlbHNlIChcbiAgICAgIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aDtcbiAgICAgIGxvb3AgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSBbQG5vbnRhaWxdKSlcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBpdGVyaV9pbnRlcm5hbCB0IH5mOihmdW4gYXJyIGkgLT4gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBhcnIgaSB8PiBmKSBbQG5vbnRhaWxdXG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIGlmIHQubmV2ZXJfc2hyaW5rXG4gIHRoZW5cbiAgICAoKiBjbGVhciB0aGUgYXJyYXkgdG8gYWxsb3cgZWxlbWVudHMgdG8gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgKilcbiAgICBpdGVyaV9pbnRlcm5hbCB0IH5mOk9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmVcbiAgZWxzZSB0LmFyciA8LSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46ODtcbiAgdC5mcm9udF9pbmRleCA8LSAwO1xuICB0LmJhY2tfaW5kZXggPC0gMTtcbiAgdC5sZW5ndGggPC0gMDtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggdC5hcnJcbjs7XG5cbigqIFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlLCBpbXBvcnRpbmcgYWxsIG9mIENvbnRhaW5lci5NYWtlIHdvdWxkIGNoYW5nZSB0aGUgcnVudGltZSBvZlxuICAgc29tZSBmdW5jdGlvbnMgKFtsZW5ndGhdIG1pbmltYWxseSkgc2lsZW50bHkgd2l0aG91dCBjaGFuZ2luZyB0aGUgc2VtYW50aWNzLiAgV2UgZ2V0XG4gICBhcm91bmQgdGhhdCBieSBpbXBvcnRpbmcgdGhpbmdzIGV4cGxpY2l0bHkuICAqKVxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBtZW0gPSBDLm1lbVxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgYmxpdCBuZXdfYXJyIHQgPVxuICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgYWN0dWFsX2Zyb250ID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICBsZXQgb2xkX2FyciA9IHQuYXJyIGluXG4gIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICB0aGVuXG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczphY3R1YWxfZnJvbnRcbiAgICAgIH5kc3RfcG9zOjBcbiAgICAgIH5sZW46KGxlbmd0aCB0KVxuICBlbHNlIChcbiAgICBsZXQgYnJlYWtfcG9zID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBvbGRfYXJyIC0gYWN0dWFsX2Zyb250IGluXG4gICAgT3B0aW9uX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6b2xkX2FyclxuICAgICAgfmRzdDpuZXdfYXJyXG4gICAgICB+c3JjX3BvczphY3R1YWxfZnJvbnRcbiAgICAgIH5kc3RfcG9zOjBcbiAgICAgIH5sZW46YnJlYWtfcG9zO1xuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6YnJlYWtfcG9zXG4gICAgICB+bGVuOihhY3R1YWxfYmFjayArIDEpKTtcbiAgKCogbGVuZ3RoIGRlcGVuZHMgb24gdC5hcnIgYW5kIHQuZnJvbnRfaW5kZXgsIHNvIHRoaXMgbmVlZHMgdG8gYmUgZmlyc3QgKilcbiAgdC5iYWNrX2luZGV4IDwtIGxlbmd0aCB0O1xuICB0LmFyciA8LSBuZXdfYXJyO1xuICB0LmFycl9sZW5ndGggPC0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyO1xuICB0LmZyb250X2luZGV4IDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciAtIDE7XG4gICgqIFNpbmNlIHQuZnJvbnRfaW5kZXggPSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxLCB0aGlzIGlzIGFzc2VydGluZyB0aGF0IHQuYmFja19pbmRleFxuICAgICBpcyBhIHZhbGlkIGluZGV4IGluIHRoZSBhcnJheSBhbmQgdGhhdCB0aGUgYXJyYXkgY2FuIHN1cHBvcnQgYXQgbGVhc3Qgb25lIG1vcmVcbiAgICAgZWxlbWVudCAtLSByZWNhbGwsIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiB0aGUgYXJyYXkgaXMgZnVsbC5cblxuICAgICBOb3RlIHRoYXQgdGhpcyBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FyciA+IGxlbmd0aCB0ICsgMS5cbiAgKilcbiAgYXNzZXJ0ICh0LmZyb250X2luZGV4ID4gdC5iYWNrX2luZGV4KVxuOztcblxubGV0IG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQgPVxuICBpZiAobm90IHQubmV2ZXJfc2hyaW5rKSAmJiB0LmFycl9sZW5ndGggPiAxMCAmJiB0LmFycl9sZW5ndGggLyAzID4gbGVuZ3RoIHRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAvIDIpIGluXG4gICAgYmxpdCBuZXdfYXJyIHQpXG47O1xuXG5sZXQgZ3Jvd191bmRlcmx5aW5nIHQgPVxuICBsZXQgbmV3X2FyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoodC5hcnJfbGVuZ3RoICogMikgaW5cbiAgYmxpdCBuZXdfYXJyIHRcbjs7XG5cbmxldCBlbnF1ZXVlX2JhY2sgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5iYWNrX2luZGV4IHY7XG4gIHQuYmFja19pbmRleCA8LSAoaWYgdC5iYWNrX2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmJhY2tfaW5kZXggKyAxKTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZW5xdWV1ZV9mcm9udCB0IHYgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gZ3Jvd191bmRlcmx5aW5nIHQ7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmFyciB0LmZyb250X2luZGV4IHY7XG4gIHQuZnJvbnRfaW5kZXggPC0gKGlmIHQuZnJvbnRfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuZnJvbnRfaW5kZXggLSAxKTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4IC0gMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQgdiA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGVucXVldWVfYmFjayB0IHZcbiAgfCBgZnJvbnQgLT4gZW5xdWV1ZV9mcm9udCB0IHZcbjs7XG5cbmxldCBwZWVrX2Zyb250X25vbmVtcHR5IHQgPVxuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIChhY3R1YWxfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdClcbjs7XG5cbmxldCBwZWVrX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBwZWVrX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBwZWVrX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IHBlZWtfYmFja19ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdClcbjs7XG5cbmxldCBwZWVrX2JhY2tfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5wZWVrX2JhY2tfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19iYWNrX25vbmVtcHR5IHRcbjs7XG5cbmxldCBwZWVrX2JhY2sgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAocGVla19iYWNrX25vbmVtcHR5IHQpXG5cbmxldCBwZWVrIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IHBlZWtfYmFjayB0XG4gIHwgYGZyb250IC0+IHBlZWtfZnJvbnQgdFxuOztcblxubGV0IGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdCA9XG4gIGxldCBpID0gYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5hcnIgaTtcbiAgdC5mcm9udF9pbmRleCA8LSBpO1xuICB0LmFwcGFyZW50X2Zyb250X2luZGV4IDwtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJEZXF1ZS5kZXF1ZXVlX2Zyb250X2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfZnJvbnQgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9mcm9udF9ub25lbXB0eSB0KVxuXG5sZXQgZGVxdWV1ZV9iYWNrX25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IHJlcyA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgaSBpblxuICBPcHRpb25fYXJyYXkuc2V0X25vbmUgdC5hcnIgaTtcbiAgdC5iYWNrX2luZGV4IDwtIGk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbWF5YmVfc2hyaW5rX3VuZGVybHlpbmcgdDtcbiAgcmVzXG47O1xuXG5sZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIGRlcXVldWVfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgZGVxdWV1ZV9iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgZGVxdWV1ZV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2tfZXhuIHRcbjs7XG5cbmxldCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250IHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2sgdFxuOztcblxubGV0IGRyb3BfZ2VuID8obiA9IDEpIH5kZXF1ZXVlIHQgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIkRlcXVlLmRyb3A6ICBuZWdhdGl2ZSBpbnB1dCAoJWQpXCIgbiAoKTtcbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPiAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBkZXF1ZXVlIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChuIC0gMSkpXG4gIGluXG4gIGxvb3AgblxuOztcblxubGV0IGRyb3BfZnJvbnQgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfZnJvbnQgdFxubGV0IGRyb3BfYmFjayA/biB0ID0gZHJvcF9nZW4gP24gfmRlcXVldWU6ZGVxdWV1ZV9iYWNrIHRcblxubGV0IGRyb3AgP24gdCBiYWNrX29yX2Zyb250ID1cbiAgbWF0Y2ggYmFja19vcl9mcm9udCB3aXRoXG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrID9uIHRcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udCA/biB0XG47O1xuXG5sZXQgYXNzZXJ0X25vdF9lbXB0eSB0IG5hbWUgPSBpZiBpc19lbXB0eSB0IHRoZW4gZmFpbHdpdGhmIFwiJXM6IERlcXVlLnQgaXMgZW1wdHlcIiBuYW1lICgpXG5cbmxldCB0cnVlX2luZGV4X2V4biB0IGkgPVxuICBsZXQgaV9mcm9tX3plcm8gPSBpIC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCBpblxuICBpZiBpX2Zyb21femVybyA8IDAgfHwgbGVuZ3RoIHQgPD0gaV9mcm9tX3plcm9cbiAgdGhlbiAoXG4gICAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUudHJ1ZV9pbmRleF9leG5cIjtcbiAgICBsZXQgYXBwYXJlbnRfZnJvbnQgPSBhcHBhcmVudF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFwcGFyZW50X2JhY2sgPSBhcHBhcmVudF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiaW52YWxpZCBpbmRleDogJWkgZm9yIGFycmF5IHdpdGggaW5kaWNlcyAoJWksJWkpXCJcbiAgICAgIGlcbiAgICAgIGFwcGFyZW50X2Zyb250XG4gICAgICBhcHBhcmVudF9iYWNrXG4gICAgICAoKSk7XG4gIGxldCB0cnVlX2kgPSB0LmZyb250X2luZGV4ICsgMSArIGlfZnJvbV96ZXJvIGluXG4gIGlmIHRydWVfaSA+PSB0LmFycl9sZW5ndGggdGhlbiB0cnVlX2kgLSB0LmFycl9sZW5ndGggZWxzZSB0cnVlX2lcbjs7XG5cbmxldCBnZXQgdCBpID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAodHJ1ZV9pbmRleF9leG4gdCBpKVxuXG5sZXQgZ2V0X29wdCB0IGkgPVxuICB0cnkgU29tZSAoZ2V0IHQgaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHNldF9leG4gdCBpIHYgPSBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSkgdlxuXG5sZXQgdG9fYXJyYXkgdCA9XG4gIG1hdGNoIHBlZWtfZnJvbnQgdCB3aXRoXG4gIHwgTm9uZSAtPiBbfHxdXG4gIHwgU29tZSBmcm9udCAtPlxuICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgfmxlbjoobGVuZ3RoIHQpIGZyb250IGluXG4gICAgaWdub3JlXG4gICAgICAoZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBpIHYgLT5cbiAgICAgICAgIGFyci4oaSkgPC0gdjtcbiAgICAgICAgIGkgKyAxKVxuICAgICAgIDogaW50KTtcbiAgICBhcnJcbjs7XG5cbmxldCBvZl9hcnJheSBhcnIgPVxuICBsZXQgdCA9IGNyZWF0ZSB+aW5pdGlhbF9sZW5ndGg6KEFycmF5Lmxlbmd0aCBhcnIgKyAxKSAoKSBpblxuICBBcnJheS5pdGVyIGFyciB+ZjooZnVuIHYgLT4gZW5xdWV1ZV9iYWNrIHQgdik7XG4gIHRcbjs7XG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICB0eXBlICdhIGVsID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjM0YzFlOWNhLTQ5OTItMTFlNi1hNjg2LThiNGJkNGY4Nzc5NlwiXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkRlcXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXIgdCB+ZlxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSB+aW5pdGlhbF9sZW5ndGg6bGVuICgpIGluXG4gICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IHggPSBuZXh0ICgpIGluXG4gICAgICAgIGVucXVldWVfYmFjayB0IHhcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuXG5sZXQgdF9vZl9zZXhwIGYgc2V4cCA9IG9mX2FycmF5IChBcnJheS50X29mX3NleHAgZiBzZXhwKVxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdClcblxubGV0IHRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyID1cbiAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hcilcbjs7XG5cbigqIHJlLWV4cG9zZSB0aGVzZSBoZXJlIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUgdG8gYXZvaWQgaW50ZXJuYWwgY29uZnVzaW9uICopXG5sZXQgYmFja19pbmRleCA9IGFwcGFyZW50X2JhY2tfaW5kZXhcbmxldCBmcm9udF9pbmRleCA9IGFwcGFyZW50X2Zyb250X2luZGV4XG5cbmxldCBiYWNrX2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuYmFja19pbmRleF9leG5cIjtcbiAgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0XG47O1xuXG5sZXQgZnJvbnRfaW5kZXhfZXhuIHQgPVxuICBhc3NlcnRfbm90X2VtcHR5IHQgXCJEZXF1ZS5mcm9udF9pbmRleF9leG5cIjtcbiAgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgdCBpID0gZ2V0IHQgKGZyb250X2luZGV4X2V4biB0ICsgaSlcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSA9IG9mX2FycmF5XG4gICAgZW5kXG4gIGVuZClcblxuKCogVGhlIFwic3RhYmxlXCIgaW5kaWNlcyB1c2VkIGluIHRoaXMgbW9kdWxlIG1ha2UgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZVxuICAgW0JpbmFyeV9zZWFyY2hhYmxlXSBmdW5jdG9yIGF3a3dhcmQuICBXZSBuZWVkIHRvIGJlIHN1cmUgdG8gdHJhbnNsYXRlIGluY29taW5nXG4gICBwb3NpdGlvbnMgZnJvbSBzdGFibGUgc3BhY2UgdG8gdGhlIGV4cGVjdGVkIDAgLT4gbGVuZ3RoIC0gMSBzcGFjZSBhbmQgdGhlbiB3ZSBuZWVkIHRvXG4gICB0cmFuc2xhdGUgdGhlbSBiYWNrIG9uIHJldHVybi4gKilcbmxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB0IH5jb21wYXJlIGhvdyB2ID1cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwb3MgLT4gU29tZSAocG9zIC0gdC5hcHBhcmVudF9mcm9udF9pbmRleClcbiAgaW5cbiAgbWF0Y2ggQmluYXJ5X3NlYXJjaGFibGUuYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwb3MgLT4gU29tZSAocG9zIC0gdC5hcHBhcmVudF9mcm9udF9pbmRleClcbiAgaW5cbiAgbWF0Y2ggQmluYXJ5X3NlYXJjaGFibGUuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVudHJhbnNsYXRlZF9pIC0+IFNvbWUgKHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggKyB1bnRyYW5zbGF0ZWRfaSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcblxubGV0IGVwcmludCBtZXNzYWdlID0gUHJpbnRmLmVwcmludGYgXCIlc1xcbiUhXCIgbWVzc2FnZVxubGV0IGVwcmludF9zIHNleHAgPSBlcHJpbnQgKFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxubGV0IGVwcmludHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9IGVwcmludF9zIChbJXNleHBfb2Y6IHN0cmluZyAqIGFdIChtZXNzYWdlLCBhKSlcbmxldCBlcHJpbnRmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcHJpbnQgZm9ybWF0XG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5cbm1vZHVsZSBNYWtlICgpID0gc3RydWN0XG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgdHJ1ZVxuICBsZXQgc2hvd19tZXNzYWdlcyA9IHJlZiB0cnVlXG5cbiAgbGV0IGRlYnVnIGludmFyaWFudCB+bW9kdWxlX25hbWUgbmFtZSB0cyBhcmcgc2V4cF9vZl9hcmcgc2V4cF9vZl9yZXN1bHQgZiA9XG4gICAgaWYgIXNob3dfbWVzc2FnZXNcbiAgICB0aGVuIGVwcmludHMgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lIF0pIGFyZyBzZXhwX29mX2FyZztcbiAgICBpZiAhY2hlY2tfaW52YXJpYW50XG4gICAgdGhlbiAoXG4gICAgICB0cnkgTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudCB3aXRoXG4gICAgICB8IGV4biAtPlxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJpbnZhcmlhbnQgcHJlLWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBsZXQgcmVzdWx0X29yX2V4biA9IFJlc3VsdC50cnlfd2l0aCBmIGluXG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHBvc3QtY29uZGl0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgKG5hbWUsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGV4bl0pO1xuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlblxuICAgICAgZXByaW50c1xuICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBtb2R1bGVfbmFtZTsgXCIuXCI7IG5hbWU7IFwiLXJlc3VsdFwiIF0pXG4gICAgICAgIHJlc3VsdF9vcl9leG5cbiAgICAgICAgWyVzZXhwX29mOiAocmVzdWx0LCBleG4pIFJlc3VsdC50XTtcbiAgICBSZXN1bHQub2tfZXhuIHJlc3VsdF9vcl9leG5cbiAgOztcbmVuZFxuXG5sZXQgc2hvdWxkX3ByaW50X2JhY2t0cmFjZSA9IHJlZiBmYWxzZVxuXG5sZXQgYW1faW50ZXJuYWwgaGVyZSBtZXNzYWdlID1cbiAgKCogSW4gdGhpcyBmdW5jdGlvbiB3ZSB1c2UgW1ByaW50Zi5lcHJpbnRmXSByYXRoZXIgdGhhbiBbRGVidWcuZXByaW50Zl0sIGJlY2F1c2UgdGhlXG4gICAgIGZvcm1lciBkb2Vzbid0IGZsdXNoLCB3aGlsZSB0aGUgbGF0dGVyIGRvZXMuICBXZSdkIHJhdGhlciBmbHVzaCBvbmNlIGF0IHRoZSBlbmQsXG4gICAgIHJhdGhlciB0aGFuIHRocmVlIHRpbWVzLiAqKVxuICBQcmludGYuZXByaW50ZiBcIiVzOlxcblwiIChTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcgaGVyZSk7XG4gIGlmICFzaG91bGRfcHJpbnRfYmFja3RyYWNlXG4gIHRoZW5cbiAgICBQcmludGYuZXByaW50ZlxuICAgICAgXCIlc1xcblwiXG4gICAgICAoQmFja3RyYWNlLmdldCAoKSB8PiBbJXNleHBfb2Y6IEJhY2t0cmFjZS50XSB8PiBTZXhwLnRvX3N0cmluZ19odW0pO1xuICAobWF0Y2ggbWVzc2FnZSB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBtZXNzYWdlIC0+IFByaW50Zi5lcHJpbnRmIFwiJXNcXG5cIiBtZXNzYWdlKTtcbiAgUHJpbnRmLmVwcmludGYgXCIlIVwiXG47O1xuXG5sZXQgYW0gaGVyZSA9IGFtX2ludGVybmFsIGhlcmUgTm9uZVxubGV0IGFtZiBoZXJlIGZtdCA9IFByaW50Zi5rc3ByaW50ZiAoZnVuIHN0cmluZyAtPiBhbV9pbnRlcm5hbCBoZXJlIChTb21lIHN0cmluZykpIGZtdFxuXG5sZXQgYW1zIGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIGFtX2ludGVybmFsIGhlcmUgKFNvbWUgKChtZXNzYWdlLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdIHw+IFNleHAudG9fc3RyaW5nX2h1bSkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3lzXG5cbmxldCB1bml4X3F1b3RlIHggPVxuICBpZiAobm90IChTdHJpbmcuaXNfZW1wdHkgeCkpXG4gICYmIFN0cmluZy5mb3JfYWxsIHggfmY6KGZ1bmN0aW9uXG4gICAgICAgfCAnYScgLi4gJ3onXG4gICAgICAgfCAnQScgLi4gJ1onXG4gICAgICAgfCAnMCcgLi4gJzknXG4gICAgICAgfCAnXycgfCAnLScgfCAnOicgfCAnLicgfCAnLycgfCAnLCcgfCAnKycgfCAnPScgfCAnJScgfCAnQCcgLT4gdHJ1ZVxuICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgdGhlbiAoXG4gICAgKCogU2hlbGwga2V5d29yZHMsIGFzIG91dHB1dCBieSBbY29tcGdlbiAta10gZm9yIGJhc2gsIFttYW4gZGFzaF0gZm9yIGRhc2gsIGFuZCBbUEFUSD1cbiAgICAgICB0eXBlIC1tICcqJyB8IGdyZXAgcmVzZXJ2ZWRdIGZvciB6c2gsIGV4Y2VwdCBmb3Iga2V5d29yZHMgdGhhdCBoYXZlIHNwZWNpYWxcbiAgICAgICBjaGFyYWN0ZXJzIGxpa2UgW1suIE5vdGUgdGhhdCBidWlsdGlucyBkb24ndCBtYXR0ZXIgYmVjYXVzZSAnYWxpYXMnIGFuZCBhbGlhc1xuICAgICAgIGJlaGF2ZSB0aGUgc2FtZSwgdW5saWtlICdpZicgYW5kIGlmLiAqKVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgXCJpZlwiXG4gICAgfCBcInRoZW5cIlxuICAgIHwgXCJlbHNlXCJcbiAgICB8IFwiZWxpZlwiXG4gICAgfCBcImZpXCJcbiAgICB8IFwiY2FzZVwiXG4gICAgfCBcImVzYWNcIlxuICAgIHwgXCJmb3JcIlxuICAgIHwgXCJzZWxlY3RcIlxuICAgIHwgXCJ3aGlsZVwiXG4gICAgfCBcInVudGlsXCJcbiAgICB8IFwiZG9cIlxuICAgIHwgXCJkb25lXCJcbiAgICB8IFwiaW5cIlxuICAgIHwgXCJmdW5jdGlvblwiXG4gICAgfCBcInRpbWVcIlxuICAgIHwgXCJjb3Byb2NcIlxuICAgIHwgXCJmb3JlYWNoXCJcbiAgICB8IFwicmVwZWF0XCJcbiAgICB8IFwibm9jb3JyZWN0XCIgLT4gRmlsZW5hbWUucXVvdGUgeFxuICAgIHwgXyAtPiB4KVxuICBlbHNlIEZpbGVuYW1lLnF1b3RlIHhcbjs7XG5cbmxldCBxdW90ZSA9XG4gIG1hdGNoIFN0ZGxpYi5TeXMub3NfdHlwZSB3aXRoXG4gIHwgXCJVbml4XCIgLT4gdW5peF9xdW90ZVxuICB8IF8gLT4gRmlsZW5hbWUucXVvdGVcbjs7XG5cbmxldCBjb25jYXRfcXVvdGVkIHNwbGl0X2NvbW1hbmQgPVxuICBMaXN0Lm1hcCB+ZjpxdW90ZSBzcGxpdF9jb21tYW5kIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuOztcblxubGV0IGNfaW50X3NpemUgPSBgVXNlX1N5c191bml4XG5sZXQgY2F0Y2hfYnJlYWsgPSBgVXNlX1N5c191bml4XG5sZXQgY2hkaXIgPSBgVXNlX1N5c191bml4XG5sZXQgY29tbWFuZCA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kX2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRhYmxlX25hbWUgPSBgVXNlX1N5c191bml4XG5sZXQgZXhlY3V0aW9uX21vZGUgPSBgVXNlX1N5c191bml4XG5sZXQgZmlsZV9leGlzdHMgPSBgVXNlX1N5c191bml4XG5sZXQgZmlsZV9leGlzdHNfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGZvbGRfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IGdldGN3ZCA9IGBVc2VfU3lzX3VuaXhcbmxldCBob21lX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnkgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZGlyZWN0b3J5X2V4biA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19maWxlID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGVfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGxzX2RpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBvdmVycmlkZV9hcmd2ID0gYFVzZV9TeXNfdW5peFxubGV0IHJlYWRkaXIgPSBgVXNlX1N5c191bml4XG5sZXQgcmVtb3ZlID0gYFVzZV9TeXNfdW5peFxubGV0IHJlbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCB1bnNhZmVfZ2V0ZW52ID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnZfZXhuID0gYFVzZV9TeXNfdW5peFxuXG5leGNlcHRpb24gQnJlYWsgPSBTdGRsaWIuU3lzLkJyZWFrXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB1bml4X3F1b3RlID0gdW5peF9xdW90ZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RkbGliLkFyZ1xuXG50eXBlIHQgPSBrZXkgKiBzcGVjICogZG9jXG5cbmxldCBzb3J0X2FuZF9hbGlnbiBsc3QgPVxuICBhbGlnbiAoQmFzZS5MaXN0LnNvcnQgbHN0IH5jb21wYXJlOihmdW4gKGEsIF8sIF8pIChiLCBfLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYWdfaW50ZlxuaW5jbHVkZSAoRG91Ymx5X2xpbmtlZCA6IERvdWJseV9saW5rZWQuUylcblxubGV0IGFkZCA9IGluc2VydF9maXJzdFxubGV0IGFkZF91bml0IHQgdiA9IGFkZCB0IHYgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdClcbmxldCBlbHRzIHQgPSBmb2xkX2VsdCB0IH5pbml0OltdIH5mOihmdW4gYWNjIGVsdCAtPiBlbHQgOjogYWNjKVxubGV0IHJlbW92ZV9vbmUgPSByZW1vdmVfZmlyc3RcbmxldCBjaG9vc2UgPSBmaXJzdF9lbHRcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgT3B0aW9uLml0ZXIgKHJlbW92ZV9vbmUgdCkgfmY6KGZ1biB2IC0+XG4gICAgICBmIHY7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgbXV0YWJsZSBic3RyIDogQmlnc3RyaW5nLnRcbiAgOyBtdXRhYmxlIHBvcyA6IGludFxuICA7IG11dGFibGUgbGVuIDogaW50XG4gIDsgaW5pdCA6IEJpZ3N0cmluZy50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCByZXNpemUgYnVmIG1vcmUgPVxuICBsZXQgbWluX2xlbiA9IGJ1Zi5sZW4gKyBtb3JlIGluXG4gIGxldCBuZXdfbGVuID0gbWluX2xlbiArIG1pbl9sZW4gaW5cbiAgbGV0IG5ld19idWYgPSBCaWdzdHJpbmcuY3JlYXRlIG5ld19sZW4gaW5cbiAgQmlnc3RyaW5nLmJsaXRvIH5zcmM6YnVmLmJzdHIgfnNyY19sZW46YnVmLnBvcyB+ZHN0Om5ld19idWYgKCk7XG4gIGJ1Zi5ic3RyIDwtIG5ld19idWY7XG4gIGJ1Zi5sZW4gPC0gbmV3X2xlblxuOztcbiIsIigqIFNvbWUgY29kZSB0YWtlbiBmcm9tIElOUklBJ3MgYnVmZmVyIG1vZHVsZS4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuIEJpZ3N0cmluZ1xuaW5jbHVkZSBCaWdidWZmZXJfaW50ZXJuYWxcblxubGV0IF9faW50ZXJuYWwgKHQgOiB0KSA9IHRcbmxldCBsZW5ndGggdCA9IHQucG9zXG5cbigqIHtbIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodC5sZW4gPT0gQmlnc3RyaW5nLmxlbmd0aCB0LmJzdHIpIF19ICopXG5cbmxldCBjcmVhdGUgbiA9XG4gIGxldCBuID0gbWF4IDEgbiBpblxuICBsZXQgYnN0ciA9IEJpZ3N0cmluZy5jcmVhdGUgbiBpblxuICB7IGJzdHI7IHBvcyA9IDA7IGxlbiA9IG47IGluaXQgPSBic3RyIH1cbjs7XG5cbmxldCBjb250ZW50cyBidWYgPSBCaWdzdHJpbmcudG9fc3RyaW5nIGJ1Zi5ic3RyIH5sZW46YnVmLnBvc1xubGV0IGNvbnRlbnRzX2J5dGVzIGJ1ZiA9IEJpZ3N0cmluZy50b19ieXRlcyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBiaWdfY29udGVudHMgYnVmID0gc3VibyB+bGVuOmJ1Zi5wb3MgYnVmLmJzdHJcbmxldCB2b2xhdGlsZV9jb250ZW50cyBidWYgPSBidWYuYnN0clxuXG5sZXQgYWRkX2NoYXIgYnVmIGMgPVxuICBsZXQgcG9zID0gYnVmLnBvcyBpblxuICBpZiBwb3MgPj0gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgMTtcbiAgYnVmLmJzdHIue3Bvc30gPC0gYztcbiAgYnVmLnBvcyA8LSBwb3MgKyAxXG47O1xuXG5tb2R1bGUgVG9fYnl0ZXMgPVxuICBUZXN0X2JsaXQuTWFrZV9kaXN0aW5jdF9hbmRfdGVzdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgbGV0IGVxdWFsID0gQ2hhci5lcXVhbFxuICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAnYScgZWxzZSAnYidcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID1cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgbGVuIGluXG4gICAgICAgIGZvciBfID0gMSB0byBsZW4gZG9cbiAgICAgICAgICBhZGRfY2hhciB0ICdhJ1xuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgc2V0IHQgaSBjID0gQmlnc3RyaW5nLnNldCB0LmJzdHIgaSBjXG4gICAgICBsZXQgZ2V0IHQgaSA9IEJpZ3N0cmluZy5nZXQgdC5ic3RyIGlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBCeXRlc1xuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgbGVuXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIEJpZ3N0cmluZy5Ub19ieXRlcy51bnNhZmVfYmxpdCB+c3JjOnNyYy5ic3RyIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICAgICAgOztcbiAgICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbm1vZHVsZSBUb19zdHJpbmcgPSBCbGl0Lk1ha2VfdG9fc3RyaW5nIChCaWdidWZmZXJfaW50ZXJuYWwpIChUb19ieXRlcylcblxubGV0IG50aCBidWYgcG9zID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgPj0gYnVmLnBvcyB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLm50aFwiIGVsc2UgYnVmLmJzdHIue3Bvc31cbjs7XG5cbmxldCBjbGVhciBidWYgPSBidWYucG9zIDwtIDBcblxubGV0IHJlc2V0IGJ1ZiA9XG4gIGJ1Zi5wb3MgPC0gMDtcbiAgYnVmLmJzdHIgPC0gYnVmLmluaXQ7XG4gIGJ1Zi5sZW4gPC0gQmlnc3RyaW5nLmxlbmd0aCBidWYuYnN0clxuOztcblxubGV0IGFkZF9zdWJzdHJpbmcgYnVmIHNyYyB+cG9zOnNyY19wb3MgfmxlbiA9XG4gIGlmIHNyY19wb3MgPCAwIHx8IGxlbiA8IDAgfHwgc3JjX3BvcyA+IFN0cmluZy5sZW5ndGggc3JjIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIuYWRkX3N1YnN0cmluZ1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXQgfnNyYyB+c3JjX3BvcyB+bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcztcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX3N1YmJ5dGVzIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBCeXRlcy5sZW5ndGggc3JjIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdidWZmZXIuYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9iaWdzdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBCaWdzdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX3N0cmluZyBidWYgc3JjID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnl0ZXMgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBuZXdfcG9zID0gYnVmLnBvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmLmxlbiB0aGVuIHJlc2l6ZSBidWYgbGVuO1xuICBCaWdzdHJpbmcuRnJvbV9ieXRlcy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9idWZmZXIgYnVmX2RzdCBidWZfc3JjID1cbiAgbGV0IGxlbiA9IGJ1Zl9zcmMucG9zIGluXG4gIGxldCBkc3RfcG9zID0gYnVmX2RzdC5wb3MgaW5cbiAgbGV0IG5ld19wb3MgPSBkc3RfcG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWZfZHN0LmxlbiB0aGVuIHJlc2l6ZSBidWZfZHN0IGxlbjtcbiAgQmlnc3RyaW5nLmJsaXRvIH5zcmM6YnVmX3NyYy5ic3RyIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zl9kc3QuYnN0ciB+ZHN0X3BvcyAoKTtcbiAgYnVmX2RzdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9iaW5fcHJvdCB0ICh3cml0ZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyKSB4ID1cbiAgbGV0IG5ld19wb3MgPVxuICAgIG1hdGNoIHdyaXRlci53cml0ZSB0LmJzdHIgfnBvczp0LnBvcyB4IHdpdGhcbiAgICB8IHBvcyAtPiBwb3NcbiAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAoKiBJdCdzIGxpa2VreSB0aGF0IHRoZSBleGNlcHRpb24gaXMgZHVlIHRvIGEgYnVmZmVyIG92ZXJmbG93LCBzbyByZXNpemUgdGhlXG4gICAgICAgICBpbnRlcm5hbCBidWZmZXIgYW5kIHRyeSBhZ2Fpbi4gVGVjaG5pY2FsbHkgd2UgY291bGQgbWF0Y2ggb25cbiAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXQgY3VzdG9tXG4gICAgICAgICBiaW5fd3JpdGVfeHh4IGZ1bmN0aW9ucyBkbyByYWlzZSB0aGlzIHBhcnRpY3VsYXIgZXhjZXB0aW9uIGFuZCBub3RcbiAgICAgICAgIFtJbnZhbGlkX2FyZ3VtZW50XSBvciBbRmFpbHVyZV0gZm9yIGluc3RhbmNlLiAqKVxuICAgICAgbGV0IHNpemUgPSB3cml0ZXIuc2l6ZSB4IGluXG4gICAgICBpZiB0LnBvcyArIHNpemUgPiB0LmxlbiB0aGVuIHJlc2l6ZSB0IHNpemU7XG4gICAgICB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeFxuICBpblxuICB0LnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgIGs6IGJhbGFuY2Ugb2Ygb3BlbmluZyBhbmQgY2xvc2luZyBjaGFyc1xuICAgczogdGhlIHN0cmluZyB3aGVyZSB3ZSBhcmUgc2VhcmNoaW5nXG4gICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG5sZXQgYWR2YW5jZV90b19jbG9zaW5nIG9wZW5pbmcgY2xvc2luZyBrIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgayBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW1cbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoTm90X2ZvdW5kX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCaWdidWZmZXIuYWRkX3N1YnN0aXR1dGU6IGNhbm5vdCBmaW5kIGNsb3NpbmcgZGVsaW1pdGVyXCJcbiAgICAgICAgICAgICAgIChvcGVuaW5nIDogY2hhcilcbiAgICAgICAgICAgICAgIChjbG9zaW5nIDogY2hhcilcbiAgICAgICAgICAgICAgIChzdGFydCA6IGludClcbiAgICAgICAgICAgICAgIHNdKVxuICAgIGVsc2UgaWYgQ2hhci5lcXVhbCBzLltpXSBvcGVuaW5nXG4gICAgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gY2xvc2luZ1xuICAgIHRoZW4gaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW1cbiAgaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG47O1xuXG5sZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBpIGxpbSA9XG4gICAgaWYgaSA+PSBsaW1cbiAgICB0aGVuIGxpbVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onXG4gICAgICB8ICdBJyAuLiAnWidcbiAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgfCAnXydcbiAgICAgIHwgJ+knXG4gICAgICB8ICfgJ1xuICAgICAgfCAn4SdcbiAgICAgIHwgJ+gnXG4gICAgICB8ICf5J1xuICAgICAgfCAn4idcbiAgICAgIHwgJ+onXG4gICAgICB8ICfuJ1xuICAgICAgfCAn9CdcbiAgICAgIHwgJ/snXG4gICAgICB8ICfrJ1xuICAgICAgfCAn7ydcbiAgICAgIHwgJ/wnXG4gICAgICB8ICfnJ1xuICAgICAgfCAnySdcbiAgICAgIHwgJ8AnXG4gICAgICB8ICfBJ1xuICAgICAgfCAnyCdcbiAgICAgIHwgJ9knXG4gICAgICB8ICfCJ1xuICAgICAgfCAnyidcbiAgICAgIHwgJ84nXG4gICAgICB8ICfUJ1xuICAgICAgfCAn2ydcbiAgICAgIHwgJ8snXG4gICAgICB8ICfPJ1xuICAgICAgfCAn3CdcbiAgICAgIHwgJ8cnIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICAgIHwgXyAtPiBpKVxuICBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG47O1xuXG4oKiBXZSBhcmUganVzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIGlkZW50IGluIHMsIHN0YXJ0aW5nIGF0IHN0YXJ0LiAqKVxubGV0IGZpbmRfaWRlbnQgcyBzdGFydCA9XG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICgnKCcgfCAneycpIGFzIGMgLT5cbiAgICBsZXQgbmV3X3N0YXJ0ID0gc3RhcnQgKyAxIGluXG4gICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgU3RyaW5nLnN1YiBzIH5wb3M6bmV3X3N0YXJ0IH5sZW46KHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KHN0b3AgLSBzdGFydCksIHN0b3Bcbjs7XG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGJ1ZiBmIHMgPVxuICBsZXQgbGltID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgaWYgaSA8IGxpbVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIENoYXIuZXF1YWwgcHJldmlvdXMgJ1xcXFwnIC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIChpICsgMSkgaW5cbiAgICAgICAgYWRkX3N0cmluZyBidWYgKGYgaWRlbnQpO1xuICAgICAgICBzdWJzdCAnICcgbmV4dF9pXG4gICAgICB8IGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCBjdXJyZW50IC0+XG4gICAgICAgIGFkZF9jaGFyIGJ1ZiBjdXJyZW50O1xuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSkpXG4gIGluXG4gIHN1YnN0ICcgJyAwXG47O1xuXG5tb2R1bGUgRm9ybWF0ID0gc3RydWN0XG4gIGxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiA9XG4gICAgRm9ybWF0Lm1ha2VfZm9ybWF0dGVyIChmdW4gcyBwb3MgbGVuIC0+IGFkZF9zdWJzdHJpbmcgYnVmIHMgfnBvcyB+bGVuKSBpZ25vcmVcbiAgOztcblxuICBsZXQgYnByaW50ZiBidWYgPSBGb3JtYXQua2ZwcmludGYgaWdub3JlIChmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZilcbmVuZFxuXG5tb2R1bGUgUHJpbnRmID0gc3RydWN0XG4gIGxldCBicHJpbnRmIGJ1ZiA9IFByaW50Zi5rc3ByaW50ZiAoYWRkX3N0cmluZyBidWYpXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuQnl0ZXN9W0Jhc2UuQnl0ZXNdfS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGJ5dGVzIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIEBpbmxpbmUgKilcbmluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5CeXRlc1xuZW5kXG53aXRoIHR5cGUgdCA6PSB0XG5cbmluY2x1ZGUgSGV4ZHVtcC5TIHdpdGggdHlwZSB0IDo9IHRcbmluY2x1ZGUgUXVpY2tjaGVja2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbigqKiBMaWtlIFtnZW5dLCBidXQgZ2VuZXJhdGUgYnl0ZXMgd2l0aCB0aGUgZ2l2ZW4gZGlzdHJpYnV0aW9uIG9mIGNoYXJhY3RlcnMuICopXG52YWwgZ2VuJyA6IGNoYXIgUXVpY2tjaGVjay5HZW5lcmF0b3IudCAtPiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuKCoqIExpa2UgW2dlbiddLCBidXQgZ2VuZXJhdGUgYnl0ZXMgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoLiAqKVxudmFsIGdlbl93aXRoX2xlbmd0aCA6IGludCAtPiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBOb3RlIHRoYXQgW2J5dGVzXSBpcyBhbHJlYWR5IHN0YWJsZSBieSBpdHNlbGYsIHNpbmNlIGFzIGEgcHJpbWl0aXZlIHR5cGUgaXQgaXMgYW5cbiAgICBpbnRlZ3JhbCBwYXJ0IG9mIHRoZSBzZXhwIC8gYmluX2lvIHByb3RvY29sLiBbQnl0ZXMuU3RhYmxlXSBleGlzdHMgb25seSB0byBwcm92aWRlXG4gICAgaW50ZXJmYWNlIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBzdGFibGUgdHlwZXMuICopXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlXG4gICAgICBTdGFibGVfbW9kdWxlX3R5cGVzLldpdGhfc3RhYmxlX3dpdG5lc3MuUzBcbiAgICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gIGVuZFxuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIE1ha2Vfc3Vic3RyaW5nLkYgKHN0cnVjdFxuICAgIHR5cGUgdCA9IEJpZ3N0cmluZy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQmlnc3RyaW5nLmNyZWF0ZSA/bWF4X21lbV93YWl0aW5nX2djOk5vbmVcbiAgICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCaWdzdHJpbmcuZ2V0XG5cbiAgICBtb2R1bGUgQmxpdCA9IE1ha2Vfc3Vic3RyaW5nLkJsaXRcblxuICAgIGxldCBibGl0ID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19ieXRlcyA9IEJsaXQuYmlnc3RyaW5nX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX2JpZ3N0cmluZyA9IEJsaXQuYmlnc3RyaW5nX2JpZ3N0cmluZ1xuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0YWJsZV9pbnRlcm5hbFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgICAgIHZhbCBsYWJlbCA6IHN0cmluZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGluZGV4IDogaW50XG4gICAgICAgIDsgbWluX2luZGV4IDogaW50XG4gICAgICAgIDsgbWF4X2luZGV4IDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc3RhYmxlX3dpdG5lc3NdXG5cbiAgICAgIGxldCBjcmVhdGUgaW5kZXggfm1pbiB+bWF4ID1cbiAgICAgICAgaWYgaW5kZXggPCBtaW4gfHwgaW5kZXggPiBtYXhcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcImluZGV4IG91dCBvZiBib3VuZHNcIiAoaW5kZXggOiBpbnQpIChtaW4gOiBpbnQpIChtYXggOiBpbnQpXVxuICAgICAgICBlbHNlIHsgaW5kZXg7IG1pbl9pbmRleCA9IG1pbjsgbWF4X2luZGV4ID0gbWF4IH1cbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBGb3Jfc2V4cGFibGUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nICogaW50ICogc3RyaW5nICogaW50ICogc3RyaW5nICogaW50IFtAQGRlcml2aW5nIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoRm9yX3NleHBhYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSB0ID0gTS5sYWJlbCwgdC5pbmRleCwgXCJvZlwiLCB0Lm1pbl9pbmRleCwgXCJ0b1wiLCB0Lm1heF9pbmRleFxuXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgKGxhYmVsLCBpbmRleCwgb2ZfLCBtaW4sIHRvXywgbWF4KSA9XG4gICAgICAgICAgICAgIGlmIFN0cmluZy5lcXVhbCBsYWJlbCBNLmxhYmVsXG4gICAgICAgICAgICAgICYmIFN0cmluZy5lcXVhbCBvZl8gXCJvZlwiXG4gICAgICAgICAgICAgICYmIFN0cmluZy5lcXVhbCB0b18gXCJ0b1wiXG4gICAgICAgICAgICAgIHRoZW4gY3JlYXRlIGluZGV4IH5taW4gfm1heFxuICAgICAgICAgICAgICBlbHNlIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiaW52YWxpZCBzZXhwIGZvciBpbmRleFwiIH5sYWJlbDpNLmxhYmVsXVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLldpdGhfc3RhYmxlX3dpdG5lc3MuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgYmluX2lvLCBzdGFibGVfd2l0bmVzc11cbiAgICAgICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTID0gQm91bmRlZF9pbmRleF9pbnRmLlNcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB2YWwgbGFiZWwgOiBzdHJpbmdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IFN0YWJsZS5WMS5NYWtlIChNKVxuICBlbmRcblxuICBvcGVuIFN0YWJsZS5WMVxuXG4gIHR5cGUgdCA9IFN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNyZWF0ZSA9IFN0YWJsZS5WMS5jcmVhdGVcblxuICBsZXQgY3JlYXRlX2FsbCB+bWluIH5tYXggPVxuICAgIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDptaW4gfmY6KGZ1biBpbmRleCAtPlxuICAgICAgaWYgaW5kZXggPCBtaW4gfHwgaW5kZXggPiBtYXggdGhlbiBOb25lIGVsc2UgU29tZSAoY3JlYXRlIGluZGV4IH5taW4gfm1heCwgaW5kZXggKyAxKSlcbiAgICB8PiBTZXF1ZW5jZS50b19saXN0XG4gIDs7XG5cbiAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gIGxldCBtYXhfaW5kZXggdCA9IHQubWF4X2luZGV4XG4gIGxldCBtaW5faW5kZXggdCA9IHQubWluX2luZGV4XG4gIGxldCB6ZXJvX2Jhc2VkX2luZGV4IHQgPSBpbmRleCB0IC0gbWluX2luZGV4IHRcbiAgbGV0IG51bV9pbmRleGVzIHQgPSBtYXhfaW5kZXggdCAtIG1pbl9pbmRleCB0ICsgMVxuXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGVuZClcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICAgICAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gTS5tb2R1bGVfbmFtZVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgQ29tbWFuZFxuXG5tb2R1bGUgQXJnX3R5cGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcmdfdHlwZVxuXG4gIG1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cG9ydFxuXG4gICAgbGV0IGRhdGUgPSBjcmVhdGUgRGF0ZS5vZl9zdHJpbmdcbiAgICBsZXQgcGVyY2VudCA9IGNyZWF0ZSBQZXJjZW50Lm9mX3N0cmluZ1xuICAgIGxldCBob3N0X2FuZF9wb3J0ID0gY3JlYXRlIEhvc3RfYW5kX3BvcnQub2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQYXJhbSA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBQYXJhbSA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFBhcmFtIHdpdGggbW9kdWxlIEFyZ190eXBlIDo9IFBhcmFtLkFyZ190eXBlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBBcmdfdHlwZSA9IEFyZ190eXBlXG4gIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG5lbmRcblxubW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU3BlYyA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIFNwZWMgd2l0aCBtb2R1bGUgQXJnX3R5cGUgOj0gU3BlYy5BcmdfdHlwZVxuICAgIGVuZClcblxuICBtb2R1bGUgQXJnX3R5cGUgPSBBcmdfdHlwZVxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgaW5jbHVkZSBMZXRfc3ludGF4XG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gUGFyYW1cbiAgZW5kXG5lbmRcbiIsIigqKiBDb3JlIGdyZWF0bHkgZXhwYW5kcyB0aGUgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUgaW4gQmFzZSB3aGlsZSBzdGlsbCByZW1haW5pbmdcbiAgICBwbGF0Zm9ybS1hZ25vc3RpYy4gIENvcmUgY2hhbmdlcyBtb3JlIGZyZXF1ZW50bHkgKGkuZS4sIGlzIGxlc3Mgc3RhYmxlKSB0aGFuIEJhc2UuXG5cbiAgICBTb21lIG1vZHVsZXMgYXJlIG1lcmUgZXh0ZW5zaW9ucyBvZiB0aGVpciBjb3VudGVycGFydHMgaW4gQmFzZSwgdXN1YWxseSBhZGRpbmcgZ2VuZXJpY1xuICAgIGZ1bmN0aW9uYWxpdHkgYnkgaW5jbHVkaW5nIGZ1bmN0b3JzIHRoYXQgbWFrZSB0aGVtIGJpbmFibGUsIGNvbXBhcmFibGUsIHNleHBhYmxlLFxuICAgIGJsaXRhYmxlLCBldGMuICBUaGUgYnVsayBvZiBDb3JlLCB0aG91Z2gsIGlzIG1vZHVsZXMgcHJvdmlkaW5nIGVudGlyZWx5IG5ld1xuICAgIGZ1bmN0aW9uYWxpdHkuICopXG5cbm9wZW4hIEltcG9ydFxuXG5cbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJnID0gQXJnXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmFnID0gQmFnXG5tb2R1bGUgQmlnYnVmZmVyID0gQmlnYnVmZmVyXG5tb2R1bGUgQmlnc3RyaW5nID0gQmlnc3RyaW5nXG5tb2R1bGUgQmlnc3Vic3RyaW5nID0gQmlnc3Vic3RyaW5nXG5tb2R1bGUgQmluX3Byb3QgPSBDb3JlX2Jpbl9wcm90XG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmluYXJ5X3NlYXJjaFxubW9kdWxlIEJpbmFyeV9zZWFyY2hhYmxlID0gQmluYXJ5X3NlYXJjaGFibGVcbm1vZHVsZSBCbGFuZyA9IEJsYW5nXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJvdW5kZWRfaW5kZXggPSBCb3VuZGVkX2luZGV4XG5tb2R1bGUgQnVmZmVyID0gQmFzZS5CdWZmZXJcbm1vZHVsZSBCeXRlX3VuaXRzID0gQnl0ZV91bml0c1xubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDYW1sID0gQ2FtbCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjMtMDFdIHVzZSBTdGRsaWIgaW5zdGVhZCBvZiBDYW1sXCJdXG5tb2R1bGUgQ2hhciA9IENoYXJcbm1vZHVsZSBDb21tYW5kID0gQ29tbWFuZF9pbnRlcm5hbFxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgQ29udGFpbmVyX2ludGYgPSBDb250YWluZXJfaW50ZlxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250aW51ZV9vcl9zdG9wXG5cbm1vZHVsZSBDb3JlX2tlcm5lbF9zdGFibGUgPSBTdGFibGVcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wNV0gVXNlIFtDb3JlX3N0YWJsZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cblxubW9kdWxlIENvcmVfc3RhYmxlID0gU3RhYmxlXG5tb2R1bGUgRGF0ZSA9IERhdGVcbm1vZHVsZSBEYXlfb2Zfd2VlayA9IERheV9vZl93ZWVrXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIERlcXVlID0gRGVxdWVcbm1vZHVsZSBEZXJpdmluZ19oYXNoID0gRGVyaXZpbmdfaGFzaFxubW9kdWxlIERpZ2VzdCA9IE1kNSBbQEBvY2FtbC5kZXByZWNhdGVkIFwiW3NpbmNlIDIwMTctMDVdIFVzZSBNZDUgaW5zdGVhZC5cIl1cbm1vZHVsZSBEb3VibHlfbGlua2VkID0gRG91Ymx5X2xpbmtlZFxubW9kdWxlIEVpdGhlciA9IEVpdGhlclxubW9kdWxlIEVwaGVtZXJvbiA9IFN0ZGxpYi5FcGhlbWVyb25cbm1vZHVsZSBFcXVhbCA9IEVxdWFsXG5tb2R1bGUgRXJyb3IgPSBFcnJvclxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnID0gRXhwZWN0X3Rlc3RfY29uZmlnXG5tb2R1bGUgRmRlcXVlID0gRmRlcXVlXG5tb2R1bGUgRmllbGQgPSBGaWVsZFxubW9kdWxlIEZpbGVuYW1lID0gRmlsZW5hbWVcbm1vZHVsZSBGbG9hdCA9IEZsb2F0XG5tb2R1bGUgRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uID0gRmxvYXRfd2l0aF9maW5pdGVfb25seV9zZXJpYWxpemF0aW9uXG5tb2R1bGUgRmxvYXRhYmxlID0gRmxvYXRhYmxlXG5tb2R1bGUgRm4gPSBGblxubW9kdWxlIEZvcm1hdHRlciA9IEZvcm1hdHRlclxubW9kdWxlIEZxdWV1ZSA9IEZxdWV1ZVxubW9kdWxlIEdjID0gR2Ncbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlXG5tb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldFxubW9kdWxlIEhhc2hhYmxlID0gSGFzaGFibGVcbm1vZHVsZSBIYXNodGJsID0gSGFzaHRibFxubW9kdWxlIEhhc2h0YmxfaW50ZiA9IEhhc2h0YmxfaW50ZlxubW9kdWxlIEhlYXBfYmxvY2sgPSBIZWFwX2Jsb2NrXG5tb2R1bGUgSGV4ZHVtcCA9IEhleGR1bXBcbm1vZHVsZSBIZXhkdW1wX2ludGYgPSBIZXhkdW1wX2ludGZcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydFxubW9kdWxlIElkZW50aWZpYWJsZSA9IElkZW50aWZpYWJsZVxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb24gPSBJbW1lZGlhdGVfb3B0aW9uXG5tb2R1bGUgSW1tZWRpYXRlX29wdGlvbl9pbnRmID0gSW1tZWRpYXRlX29wdGlvbl9pbnRmXG5tb2R1bGUgSW5fY2hhbm5lbCA9IEluX2NoYW5uZWxcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnRfaW50ZiA9IEludF9pbnRmXG5tb2R1bGUgSW50X21hdGggPSBJbnRfbWF0aFxubW9kdWxlIEludGFibGUgPSBJbnRhYmxlXG5tb2R1bGUgSW50ZXJmYWNlcyA9IEludGVyZmFjZXNcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWFwX2ludGYgPSBNYXBfaW50ZlxubW9kdWxlIE1heWJlX2JvdW5kID0gTWF5YmVfYm91bmRcbm1vZHVsZSBNZDUgPSBNZDVcbm1vZHVsZSBNZW1vID0gTWVtb1xubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBNb250aCA9IE1vbnRoXG5cbm1vZHVsZSBNdXRleCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMl0gVXNlIFtFcnJvcl9jaGVja2luZ19tdXRleF0gb3IgW0NhbWxfdGhyZWFkcy5NdXRleF1cIl1cblxubW9kdWxlIE5hdGl2ZWludCA9IE5hdGl2ZWludFxubW9kdWxlIE5vX3BvbHltb3JwaGljX2NvbXBhcmUgPSBOb19wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgTm90aGluZyA9IE5vdGhpbmdcbm1vZHVsZSBPbmx5X2luX3Rlc3QgPSBPbmx5X2luX3Rlc3Rcbm1vZHVsZSBPcHRpb24gPSBPcHRpb25cbm1vZHVsZSBPcHRpb25fYXJyYXkgPSBPcHRpb25fYXJyYXlcbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBPcHRpb25hbF9zeW50YXhcbm1vZHVsZSBPcHRpb25hbF9zeW50YXhfaW50ZiA9IE9wdGlvbmFsX3N5bnRheF9pbnRmXG5tb2R1bGUgT3JfZXJyb3IgPSBPcl9lcnJvclxubW9kdWxlIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24gPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uXG5tb2R1bGUgT3JkZXJpbmcgPSBPcmRlcmluZ1xubW9kdWxlIE91dF9jaGFubmVsID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQZXJjZW50ID0gUGVyY2VudFxubW9kdWxlIFBlcm1zID0gUGVybXNcbm1vZHVsZSBQaWQgPSBQaWRcbm1vZHVsZSBQb2x5ID0gUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGV4YyA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFF1aWNrY2hlY2sgPSBRdWlja2NoZWNrXG5tb2R1bGUgUXVpY2tjaGVja19pbnRmID0gUXVpY2tjaGVja19pbnRmXG5tb2R1bGUgUXVpY2tjaGVja2FibGUgPSBRdWlja2NoZWNrYWJsZVxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgUm9idXN0bHlfY29tcGFyYWJsZSA9IFJvYnVzdGx5X2NvbXBhcmFibGVcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V0X2ludGYgPSBTZXRfaW50ZlxubW9kdWxlIFNldF9vbmNlID0gU2V0X29uY2Vcbm1vZHVsZSBTZXhwX21heWJlID0gU2V4cC5TZXhwX21heWJlXG5cbm1vZHVsZSBTZXhwID0gU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25hbCA9IFNpZ25hbFxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3BsaXR0YWJsZV9yYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbVxubW9kdWxlIFN0YWJsZV9jb21wYXJhYmxlID0gU3RhYmxlX2NvbXBhcmFibGVcbm1vZHVsZSBTdGFibGVfdW5pdF90ZXN0ID0gU3RhYmxlX3VuaXRfdGVzdFxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZFxubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3Vic3RyaW5nID0gU3Vic3RyaW5nXG5tb2R1bGUgU3Vic3RyaW5nX2ludGYgPSBTdWJzdHJpbmdfaW50ZlxubW9kdWxlIFN5cyA9IENvcmVfc3lzXG5cbm1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbQ29yZV90aHJlYWRdIG9yIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMV0gVXNlIFtUaW1lX2Zsb2F0XSBvciBbVGltZV9mbG9hdF91bml4XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBUaW1lX2Zsb2F0ID0gVGltZV9mbG9hdFxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVHVwbGUgPSBUdXBsZVxubW9kdWxlIFR1cGxlMiA9IFR1cGxlLlQyXG5tb2R1bGUgVHVwbGUzID0gVHVwbGUuVDNcbm1vZHVsZSBUeXBlX2VxdWFsID0gVHlwZV9lcXVhbFxubW9kdWxlIFR5cGVfaW1tZWRpYWN5ID0gVHlwZV9pbW1lZGlhY3lcbm1vZHVsZSBVY2hhciA9IFVjaGFyXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbmlvbl9maW5kID0gVW5pb25fZmluZFxubW9kdWxlIFVuaXF1ZV9pZCA9IFVuaXF1ZV9pZFxubW9kdWxlIFVuaXQgPSBVbml0XG5tb2R1bGUgVW5pdF9vZl90aW1lID0gVW5pdF9vZl90aW1lXG5tb2R1bGUgVW5pdl9tYXAgPSBVbml2X21hcFxuXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAyMC0wM10gQ29yZSBzaGFkb3dzIFVuaXguIFVzZSBDb3JlX3VuaXgsIHdoaWNoIG92ZXJyaWRlcyBzb21lIG9mIFVuaXgncyBcXFxuICAgYmVoYXZpb3IuIElmIG5lY2Vzc2FyeSwgVW5peCBpcyBhdmFpbGFibGUgYW5kIHVuc2hhZG93ZWQgYXMgQ2FtbF91bml4LlwiXVxuXG5tb2R1bGUgVmFsaWRhdGUgPSBWYWxpZGF0ZVxubW9kdWxlIFZhbGlkYXRlZCA9IFZhbGlkYXRlZFxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50XG5tb2R1bGUgV2VhayA9IFdlYWtcbm1vZHVsZSBXaXRoX3JldHVybiA9IFdpdGhfcmV0dXJuXG5tb2R1bGUgV29yZF9zaXplID0gV29yZF9zaXplXG5cbm1vZHVsZSB0eXBlIFVuaXF1ZV9pZCA9IFVuaXF1ZV9pZC5JZFxuXG5pbmNsdWRlIFQgKCoqIEBvcGVuICopXG5cbmluY2x1ZGUgU3RkX2ludGVybmFsXG5pbmNsdWRlIE5vdF9mb3VuZFxuXG4oKiogezIgVG9wLWxldmVsIHZhbHVlc30gKilcblxuZXh0ZXJuYWwgcGh5c19lcXVhbCA6ICgnYVtAbG9jYWxfb3B0XSkgLT4gKCdhW0Bsb2NhbF9vcHRdKSAtPiBib29sID0gXCIlZXFcIlxuXG50eXBlICdhIF9tYXliZV9ib3VuZCA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbmxldCBkb2VzX3JhaXNlID0gRXhuLmRvZXNfcmFpc2VcbmxldCBzZWMgPSBUaW1lX2Zsb2F0LlNwYW4ub2Zfc2VjXG5sZXQgKCBeLyApID0gRmlsZW5hbWUuY29uY2F0XG5cbigqKiBXZSBwZXJmb3JtIHRoZXNlIHNpZGUgZWZmZWN0cyBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGVtIHRvIHJ1biBmb3IgYW55IGNvZGUgdGhhdCB1c2VzXG4gICAgW0NvcmVdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtDb3JlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICAgdGhlbiB0aGUgc2lkZSBlZmZlY3RzIG1pZ2h0IG5vdCBiZSBydW4gaW4gdGhhdCBwcm9ncmFtLiAgVGhpcyB3aWxsIHJ1biBhcyBsb25nIGFzIHRoZVxuICAgIHByb2dyYW0gcmVmZXJzIHRvIGF0IGxlYXN0IG9uZSB2YWx1ZSBkaXJlY3RseSBpbiBDb3JlOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICAgW0NvcmUuQm9vbF0sIGZvciBleGFtcGxlLCBpcyBub3Qgc3VmZmljaWVudC4gKilcbmxldCAoKSA9IEV4bi5pbml0aWFsaXplX21vZHVsZSAoKVxuXG4oKiogVG8gYmUgdXNlZCBpbiBpbXBsZW1lbnRpbmcgQ29yZSwgYnV0IG5vdCBieSBlbmQgdXNlcnMuICopXG5tb2R1bGUgQ29yZV9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEaWdpdF9zdHJpbmdfaGVscGVycyA9IERpZ2l0X3N0cmluZ19oZWxwZXJzXG4gIG1vZHVsZSBUaW1lX3pvbmUgPSBab25lXG4gIG1vZHVsZSBPZmRheV9oZWxwZXJzID0gT2ZkYXlfaGVscGVyc1xuICBtb2R1bGUgU3Bhbl9mbG9hdCA9IFNwYW5fZmxvYXRcblxuICBtb2R1bGUgQmlnYnVmZmVyX2ludGVybmFsID0gQmlnYnVmZmVyX2ludGVybmFsXG4gIG1vZHVsZSBTdGFibGVfaW50ZXJuYWwgPSBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIFN0ZF9pbnRlcm5hbCA9IFN0ZF9pbnRlcm5hbFxuXG4gIG1vZHVsZSBUaW1lX25zX2FsdGVybmF0ZV9zZXhwID0gVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuZW5kXG5cbm1vZHVsZSBDb3JlX2tlcm5lbF9wcml2YXRlID0gQ29yZV9wcml2YXRlXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDVdIFVzZSBbQ29yZV9wcml2YXRlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuIiwiaW5jbHVkZSBDb21tYW5kLlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiEgU3RhYmxlX2ludGVybmFsXG4gIG9wZW4hIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbiAgbW9kdWxlIEFub25zID0gc3RydWN0XG4gICAgbW9kdWxlIEdyYW1tYXIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkFub25zLkdyYW1tYXIuVjFcblxuICAgICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Bbm9ucy5HcmFtbWFyLlYxLnQgPVxuICAgICAgICAgIHwgWmVyb1xuICAgICAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgICAgIHwgTWFueSBvZiB0XG4gICAgICAgICAgfCBNYXliZSBvZiB0XG4gICAgICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICAgIFslZXhwZWN0IHt8IGExN2ZkMzRlYzIxM2U1MDhkYjQ1MGY2NDY5ZjdmZTk5IHx9XVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuVjJcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuQW5vbnMuVjIudCA9XG4gICAgICAgIHwgVXNhZ2Ugb2Ygc3RyaW5nXG4gICAgICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLlYxLnRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDA4MWQ5ZWMxNjc5MDNmOGY4YzQ5Y2JmOGUzZmIzYTY2IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5GbGFnX2luZm8uVjFcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuRmxhZ19pbmZvLlYxLnQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgYmQ4ZDZmYjdhNjYyZDJjMGI1ZTBkMjAyNmM2ZDJkMjEgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICBpbmNsdWRlIENvbW1hbmQuU2hhcGUuU3RhYmxlLkJhc2VfaW5mby5WMlxuXG4gICAgICB0eXBlIHQgPSBDb21tYW5kLlNoYXBlLlN0YWJsZS5CYXNlX2luZm8uVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOGZhYWMxZThkOWRlYjBiYWFhNTZhYzhlYmY4NWI0OTggfH1dXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuR3JvdXBfaW5mby5WMlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBDb21tYW5kLlNoYXBlLlN0YWJsZS5Hcm91cF9pbmZvLlYyLnQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QuU3RhYmxlLlYxLnQgTGF6eS5TdGFibGUuVjEudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IGEgdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDJjYzNlZWI1OGQxMmQ4ZmU0NDAwMDA5ZTU5MmQ3ODI3IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4ZWNfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMyA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBDb21tYW5kLlNoYXBlLlN0YWJsZS5FeGVjX2luZm8uVjNcblxuICAgICAgdHlwZSB0ID0gQ29tbWFuZC5TaGFwZS5TdGFibGUuRXhlY19pbmZvLlYzLnQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCBjMGM4MjU2ZTkyMzhjZGQ4ZjJlYzFmODc4NWUwMmFlMCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBGdWxseV9mb3JjZWQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQ29tbWFuZC5TaGFwZS5TdGFibGUuRnVsbHlfZm9yY2VkLlYxXG5cbiAgICAgIHR5cGUgdCA9IENvbW1hbmQuU2hhcGUuU3RhYmxlLkZ1bGx5X2ZvcmNlZC5WMS50ID1cbiAgICAgICAgfCBCYXNpYyBvZiBCYXNlX2luZm8uVjIudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMi50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjMudCAqIHRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDk4MTE1NGVmMzkxOTQzN2M2YzgyMjYxOTg4Mjg0MWQ0IHx9XVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IElkZW50XG4gICAgfCBGdW5jdGlvblxuICAgIHwgQXRrZXl3b3JkXG4gICAgfCBIYXNoXG4gICAgfCBTdHJpbmdcbiAgICB8IFVyaVxuICAgIHwgRGVsaW1cbiAgICB8IE51bWJlclxuICAgIHwgUGVyY2VudGFnZVxuICAgIHwgRGltZW5zaW9uXG4gICAgfCBXaGl0ZV9zcGFjZVxuICAgIHwgQ29sb25cbiAgICB8IFNlbWlfY29sb25cbiAgICB8IENvbW1hXG4gICAgfCBMYnJhY2tldFxuICAgIHwgUmJyYWNrZXRcbiAgICB8IExwYXJlblxuICAgIHwgUnBhcmVuXG4gICAgfCBMY3VybHlcbiAgICB8IFJjdXJseVxuICAgIHwgQ29tbWVudFxuICAgIHwgRW9mXG4gICAgfCBFcnJvclxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7ICgqIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyAoKiBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGN1cnJlbnQgOiBUb2tlbi50XG4gIH1cblxudHlwZSBtYXJrID0gTWFyayBvZiBpbnQgW0BAdW5ib3hlZF1cblxubGV0IG1hcmsgdCA9IE1hcmsgdC5sZW5cbmxldCBzb3VyY2UgdCA9IHQuc1xubGV0IG5leHRfcG9zIHQgPSB0Lm9mZiArIHQubGVuXG5sZXQgaXNfbmV4dF9lb2YgdCA9IG5leHRfcG9zIHQgPj0gU3RyaW5nLmxlbmd0aCB0LnNcbmxldCBuZXh0X2NoYXIgdCA9IHQucy5bbmV4dF9wb3MgdF1cbmxldCByZXNldCB0IChNYXJrIHYpID0gdC5sZW4gPC0gdlxubGV0IGNvbnN1bWVfMSB0ID0gdC5sZW4gPC0gdC5sZW4gKyAxXG5sZXQgY29uc3VtZV9uIHQgbiA9IHQubGVuIDwtIHQubGVuICsgblxuXG5sZXQgb25lX2NoYXJfdG9rZW4gdCB0b2sgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGNvbnN1bWVfMSB0O1xuICB0LmN1cnJlbnQgPC0gdG9rXG47O1xuXG5leGNlcHRpb24gRXJyb3JfaGFwcGVuZWRcblxubGV0IGVycm9yIHQgPVxuICB0LmN1cnJlbnQgPC0gRXJyb3I7XG4gIHJhaXNlIEVycm9yX2hhcHBlbmVkXG47O1xuXG5sZXQgYWNjZXB0IHQgZiA9XG4gIGlmIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdClcbiAgdGhlbiAoXG4gICAgY29uc3VtZV8xIHQ7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGFjY2VwdF9jaGFyIHQgY2ggPSBhY2NlcHQgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IGFjY2VwdF9zdHJpbmcgdCBzdHIgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA9IDBcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBwb3MgPSBuZXh0X3BvcyB0IGluXG4gICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGlmIHBvcyArIHN0cl9sZW4gPiBTdHJpbmcubGVuZ3RoIHQuc1xuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgdC5zIH5wb3MgfnN1YnN0cmluZzpzdHJcbiAgICB0aGVuIChcbiAgICAgIGNvbnN1bWVfbiB0IHN0cl9sZW47XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpXG47O1xuXG5sZXQgZXhwZWN0IHQgZiA9IGlmIGFjY2VwdCB0IGYgdGhlbiAoKSBlbHNlIGVycm9yIHRcbmxldCBleHBlY3RfY2hhciB0IGNoID0gZXhwZWN0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBtYW55IHQgZiA9XG4gIHdoaWxlIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdCkgZG9cbiAgICBjb25zdW1lXzEgdFxuICBkb25lXG47O1xuXG5sZXQgbWFueTEgdCBmID1cbiAgZXhwZWN0IHQgZjtcbiAgbWFueSB0IGZcbjs7XG5cbmxldCBwbHVzX29yX21pbnVzID0gZnVuY3Rpb25cbiAgfCAnLScgfCAnKycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubXN0YXJ0ID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaWRlbnQgdCA9XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gIHRoZW5cbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICAgIHRoZW4gbWFueSB0IG5tY2hhclxuICAgIGVsc2UgKFxuICAgICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICAgIG1hbnkgdCBubWNoYXIpXG4gIGVsc2UgKFxuICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgbWFueSB0IG5tY2hhcilcbjs7XG5cbmxldCBpZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgaWRlbnQgdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnKCcgdGhlbiB0LmN1cnJlbnQgPC0gRnVuY3Rpb24gZWxzZSB0LmN1cnJlbnQgPC0gSWRlbnRcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFx0JyB8ICdcXHInIHwgJ1xcbicgfCAnXFx4MGMnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZycgdCB+cXVvdGUgPVxuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSBxdW90ZSk7XG4gIGNvbnN1bWVfMSB0O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHgwYycgfCAnXFxcXCcgLT4gZmFsc2VcbiAgICAgIHwgYyB3aGVuIENoYXIuZXF1YWwgYyBxdW90ZSAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpO1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJ1xcXFwnXG4gICAgdGhlblxuICAgICAgaWYgYWNjZXB0X2NoYXIgdCBxdW90ZVxuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgICAgICB8ICdcXG4nIHwgJ1xceDBjJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnXFxuJyA6IGJvb2wpO1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCBfYyAtPlxuICAgICAgICAgICgqIEhhbmRsZSB0aGUgXCJlc2NhcGVcIiBydWxlOlxuICAgICAgICAgICAgIHt2XG4gICAgICAgICAgICAgICAgdW5pY29kZTogXFxcXFswLTlhLWZdezEsNn0oXFxyXFxufFsgXFxuXFxyXFx0XFxmXSk/XG4gICAgICAgICAgICAgICAgZXNjYXBlIDoge3VuaWNvZGV9fFxcXFxbXlxcblxcclxcZjAtOWEtZl1cbiAgICAgICAgICAgICAgdn1cbiAgICAgICAgICAqKVxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCk7XG4gIGV4cGVjdF9jaGFyIHQgcXVvdGVcbjs7XG5cbmxldCBzdGFydF9udW0gdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnLicgOiBib29sKTtcbiAgICBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgc3RhcnRfaWRlbnQgfnByZWZpeCB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgYWNjZXB0X3N0cmluZyB0IHByZWZpeFxuICAgICYmXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLScgdGhlbiBhY2NlcHRfY2hhciB0ICctJyB8fCBhY2NlcHQgdCBubXN0YXJ0IGVsc2UgYWNjZXB0IHQgbm1zdGFydFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGUgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlO1xuICB0LmN1cnJlbnQgPC0gU3RyaW5nXG47O1xuXG5sZXQgZXhwb25lbnRpYWxfcGFydCB0ID1cbiAgbGV0IG1hcmsgPSBtYXJrIHQgaW5cbiAgaWYgYWNjZXB0IHQgKGZ1bmN0aW9uXG4gICAgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZSlcbiAgdGhlblxuICAgIGlmIGFjY2VwdCB0IHBsdXNfb3JfbWludXNcbiAgICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2UgaWYgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICAgIHRoZW4gbWFueSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlXG4gICAgICAoKiBCYWNrdHJhY2sgaWYgdGhlcmUgYXJlIG5vIGRpZ2l0cyBvciBzaWducyBhZnRlciB0aGUgJ2UnIGJlY2F1c2VcbiAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlICdlJyB3YXMgYWN0dWFsbHkgYSBwYXJ0IG9mIHNvbWV0aGluZyBlbHNlLiBGb3JcbiAgICAgICAgIGV4YW1wbGUsIHRoZSAnZScgY291bGQgYmUgcGFydCBvZiBhbiAnZW0nIG9yICdlbicgZGltZW5zaW9uIGluc3RlYWRcbiAgICAgICAgIG9mIGJlZ2lubmluZyB0aGUgZXhwb25lbnRpYWwgcGFydCBvZiBhIHNjaWVudGlmaWMgbm90YXRpb24gbnVtYmVyLlxuXG4gICAgICAgICBFeGFtcGxlOiAxLjJlMyBpcyBzY2llbnRpZmljIG5vdGF0aW9uLCBidXQgMS4yZW0gaXMgYSBudW1iZXIgd2l0aCBhXG4gICAgICAgICBkaW1lbnNpb24uICopXG4gICAgICByZXNldCB0IG1hcmtcbjs7XG5cbmxldCBudW0gdCA9XG4gIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICBpZiBhY2NlcHRfY2hhciB0ICcuJ1xuICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICBlbHNlIChcbiAgICBtYW55MSB0IENoYXIuaXNfZGlnaXQ7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLicgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXQpO1xuICBleHBvbmVudGlhbF9wYXJ0IHRcbjs7XG5cbmxldCBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgbnVtIHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJyUnXG4gIHRoZW4gdC5jdXJyZW50IDwtIFBlcmNlbnRhZ2VcbiAgZWxzZSBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICB0aGVuIChcbiAgICBpZGVudCB0O1xuICAgIHQuY3VycmVudCA8LSBEaW1lbnNpb24pXG4gIGVsc2UgdC5jdXJyZW50IDwtIE51bWJlclxuOztcblxubGV0IGhhc2hfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJyMnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlmIGFjY2VwdCB0IG5tY2hhclxuICB0aGVuIChcbiAgICBtYW55MSB0IG5tY2hhcjtcbiAgICB0LmN1cnJlbnQgPC0gSGFzaClcbiAgZWxzZSB0LmN1cnJlbnQgPC0gRGVsaW1cbjs7XG5cbmxldCBhdGtleXdvcmQgdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ0AnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlkZW50IHQ7XG4gIHQuY3VycmVudCA8LSBBdGtleXdvcmRcbjs7XG5cbmxldCB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ3UnKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwidXJsKFwiXG4gIHRoZW4gKFxuICAgIGxldCBtID0gbWFyayB0IGluXG4gICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgaWYgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcIicgfHwgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcXCcnXG4gICAgdGhlbiAoXG4gICAgICByZXNldCB0IG07XG4gICAgICB0LmN1cnJlbnQgPC0gRnVuY3Rpb24pXG4gICAgZWxzZSAoXG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyknIHwgJyAnIC0+IGZhbHNlXG4gICAgICAgIHwgJ1xcJycgfCAnXCInIHwgJygnIC0+IGVycm9yIHRcbiAgICAgICAgfCBjIHdoZW4gQ2hhci5pc19wcmludCBjIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGVycm9yIHQpO1xuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICBleHBlY3RfY2hhciB0ICcpJztcbiAgICAgIHQuY3VycmVudCA8LSBVcmkpKVxuICBlbHNlIGlkZW50X29yX2Z1bmN0aW9uIHRcbjs7XG5cbmxldCBjb21tZW50X29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcIi8qXCJcbiAgdGhlbiAoXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKicgLT4gZmFsc2VcbiAgICAgICAgfCBfIC0+IHRydWUpO1xuICAgICAgaWYgYWNjZXB0X3N0cmluZyB0IFwiKi9cIlxuICAgICAgdGhlbiB0LmN1cnJlbnQgPC0gQ29tbWVudFxuICAgICAgZWxzZSBpZiBhY2NlcHRfY2hhciB0ICcqJ1xuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIGVycm9yIHRcbiAgICBpblxuICAgIGxvb3AgKCkpXG4gIGVsc2UgKFxuICAgIGV4cGVjdF9jaGFyIHQgJy8nO1xuICAgIHQuY3VycmVudCA8LSBEZWxpbSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICBsZXQgbmV3X29mZiA9IG5leHRfcG9zIHQgaW5cbiAgdC5vZmYgPC0gbmV3X29mZjtcbiAgdC5sZW4gPC0gMDtcbiAgaWYgaXNfbmV4dF9lb2YgdFxuICB0aGVuIHQuY3VycmVudCA8LSBFb2ZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgIHwgYyB3aGVuIGlzX3doaXRlc3BhY2UgYyAtPlxuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICB0LmN1cnJlbnQgPC0gV2hpdGVfc3BhY2VcbiAgICB8ICc6JyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbG9uXG4gICAgfCAnOycgLT4gb25lX2NoYXJfdG9rZW4gdCBTZW1pX2NvbG9uXG4gICAgfCAneycgLT4gb25lX2NoYXJfdG9rZW4gdCBMY3VybHlcbiAgICB8ICd9JyAtPiBvbmVfY2hhcl90b2tlbiB0IFJjdXJseVxuICAgIHwgJ1snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGJyYWNrZXRcbiAgICB8ICddJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJicmFja2V0XG4gICAgfCAnKCcgLT4gb25lX2NoYXJfdG9rZW4gdCBMcGFyZW5cbiAgICB8ICcpJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJwYXJlblxuICAgIHwgJywnIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29tbWFcbiAgICB8ICgnXFwnJyB8ICdcIicpIGFzIHF1b3RlIC0+IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGVcbiAgICB8ICgnMCcgLi4gJzknIHwgJy4nIHwgJysnIHwgJy0nKSB3aGVuIHN0YXJ0X251bSB0IC0+XG4gICAgICBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdFxuICAgIHwgJy8nIC0+IGNvbW1lbnRfb3JfZGVsaW0gdFxuICAgIHwgJyMnIC0+IGhhc2hfb3JfZGVsaW0gdFxuICAgIHwgJ0AnIHdoZW4gc3RhcnRfaWRlbnQgfnByZWZpeDpcIkBcIiB0IC0+IGF0a2V5d29yZCB0XG4gICAgfCAndScgLT4gdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHRcbiAgICB8IF8gLT5cbiAgICAgIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gICAgICB0aGVuIGlkZW50X29yX2Z1bmN0aW9uIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgKCogdGhpcyBpcyB3ZWlyZCBidXQgdGhlIHNwZWMgaXMgd2VpcmQgKilcbiAgICAgICAgdC5jdXJyZW50IDwtIERlbGltKSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICAoKiBNYWtlIHN1cmUgd2UgYXJlIGlkZW1wb3RlbnQgd2hlbiB3ZSBnZXQgaW50byB0aGUgZXJyb3Igc3RhdGUgKilcbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVycm9yXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgdHJ5IG5leHQgdCB3aXRoXG4gICAgfCBFcnJvcl9oYXBwZW5lZCAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgcyA9XG4gICgqIGN1cnJlbnQgaXMgZHVtbXkgYW5kIHdpbGwgYmUgc2V0IGJ5IGNhbGwgdG8gbmV4dCAqKVxuICBsZXQgdCA9IHsgczsgb2ZmID0gMDsgbGVuID0gMDsgY3VycmVudCA9IFdoaXRlX3NwYWNlIH0gaW5cbiAgbmV4dCB0O1xuICB0XG47O1xuXG5sZXQgc2xpY2UgdCA9IHQub2ZmLCB0LmxlblxubGV0IGN1cnJlbnQgdCA9IHQuY3VycmVudFxuXG5sZXQgY3VycmVudF90ZXh0IHQgPVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRW9mXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgcG9zLCBsZW4gPSBzbGljZSB0IGluXG4gICAgU3RyaW5nLnN1YiB0LnMgfnBvcyB+bGVuKVxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCB0ID0gY3JlYXRlIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbGV0IHN0YXJ0LCBsZW4gPSBzbGljZSB0IGluXG4gICAgbGV0IGFjYyA9IChjdXJyZW50IHQsIHN0YXJ0LCBsZW4pIDo6IGFjYyBpblxuICAgIGlmIFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVvZiB8fCBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFcnJvclxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSAoXG4gICAgICBuZXh0IHQ7XG4gICAgICBsb29wIGFjYylcbiAgaW5cbiAgbG9vcCBbXVxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IHRlc3QgcyA9XG4gICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgIChTZXhwLnRvX3N0cmluZ19tYWNoIChbJXNleHBfb2Y6IChUb2tlbi50ICogaW50ICogaW50KSBsaXN0XSAodG9fbGlzdCBzKSkpXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVvZlwiID1cbiAgICAgIHRlc3QgXCJcIjtcbiAgICAgIFslZXhwZWN0IHt8KChFb2YgMCAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2ltcGxlX3Rva2Vuc1wiID1cbiAgICAgIHRlc3QgXCIpKHt9W107OlwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChScGFyZW4gMCAxKShMcGFyZW4gMSAxKShMY3VybHkgMiAxKShSY3VybHkgMyAxKShMYnJhY2tldCA0IDEpKFJicmFja2V0IDUgMSkoU2VtaV9jb2xvbiA2IDEpKENvbG9uIDcgMSkoRW9mIDggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpZGVudFwiID1cbiAgICAgIHRlc3QgXCItZm9vLWJhcjogYmF6XCI7XG4gICAgICB0ZXN0IFwiLWZvby1iYXIoXCI7XG4gICAgICB0ZXN0IFwiQGZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALS1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiLS12YXJcIjtcbiAgICAgIHRlc3QgXCJSR0JBXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA4KShDb2xvbiA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoRnVuY3Rpb24gMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDgpKEVvZiA4IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCAxMCkoRW9mIDEwIDApKVxuICAgICgoSWRlbnQgMCA1KShFb2YgNSAwKSlcbiAgICAoKElkZW50IDAgNCkoRW9mIDQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ3aGl0ZXNwYWNlXCIgPVxuICAgICAgdGVzdCBcIiAgXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoV2hpdGVfc3BhY2UgMCAyKShFb2YgMiAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwibnVtYmVyc1wiID1cbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVuXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlbVwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41aW5cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogM2NtXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDEyMCVcIjtcbiAgICAgIHRlc3QgXCJncmlkOiAwIDEgZm9vXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjUtaW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZTIwXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoRGltZW5zaW9uIDEzIDMpKEVvZiAxNiAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKFBlcmNlbnRhZ2UgMTMgNCkoRW9mIDE3IDApKVxuICAgICgoSWRlbnQgMCA0KShDb2xvbiA0IDEpKFdoaXRlX3NwYWNlIDUgMSkoTnVtYmVyIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImJhZGx5X3F1b3RlZFwiID1cbiAgICAgIHRlc3QgXCInZm9vIGJhclwiO1xuICAgICAgdGVzdCBcIidcIjtcbiAgICAgIHRlc3QgXCInXFxcXCdcIjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKChFcnJvciAwIDgpKVxuICAgICgoRXJyb3IgMCAxKSlcbiAgICAoKEVycm9yIDAgMykpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJxdW90ZWRcIiA9XG4gICAgICB0ZXN0IHt8J0ZvbyAnXCJCYXJcIic7JyAnXFwnJyBcIlxcXCJcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChTdHJpbmcgMCA2KShTdHJpbmcgNiA1KShTdHJpbmcgMTEgMykoV2hpdGVfc3BhY2UgMTQgMSkoU3RyaW5nIDE1IDQpKFdoaXRlX3NwYWNlIDE5IDEpKFN0cmluZyAyMCA0KShFb2YgMjQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJjb2xvcnNcIiA9XG4gICAgICB0ZXN0IHt8Y29sb3I6ICNmMDB8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEhhc2ggNyA0KShFb2YgMTEgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpbXBvcnRcIiA9XG4gICAgICB0ZXN0IHt8QGltcG9ydCBcImZvby5iYXJcIjt8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoQXRrZXl3b3JkIDAgNykoV2hpdGVfc3BhY2UgNyAxKShTdHJpbmcgOCA5KShTZW1pX2NvbG9uIDE3IDEpKEVvZiAxOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInJlZCBleGFtcGxlXCIgPVxuICAgICAgdGVzdCBcInJlZC0tPlwiO1xuICAgICAgWyVleHBlY3Qge3wgKChJZGVudCAwIDUpKERlbGltIDUgMSkoRW9mIDYgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1cmxcIiA9XG4gICAgICB0ZXN0IHt8dXJsKCBcImh0dHA6Ly93d3d3Lmdvb2dsZS5jb21cIil8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScgKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5jb20gKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5cImNvbSApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoRnVuY3Rpb24gMCA0KShXaGl0ZV9zcGFjZSA0IDEpKFN0cmluZyA1IDI0KShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoUnBhcmVuIDI4IDEpKEVvZiAyOSAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFdoaXRlX3NwYWNlIDI4IDEpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChVcmkgMCAzMCkoRW9mIDMwIDApKVxuICAgICgoRXJyb3IgMCAyNSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlc2NhcGVcIiA9XG4gICAgICB0ZXN0IHt8XCJ0ZXN0XFwxOWFiZjJcXDJcInx9O1xuICAgICAgdGVzdCB7fFwiXFwwMTBcXHhGRmFcXG8xMjNcXG5cXFxcXFx1ezEyMzQ1fWFh8J+QqvCfkKrwn5Cq8J+QqvCfkKpcInx9O1xuICAgICAgdGVzdCB7fFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKFN0cmluZyAwIDE1KShFb2YgMTUgMCkpXG4gICAgKChTdHJpbmcgMCA1MSkoRW9mIDUxIDApKVxuICAgICgoU3RyaW5nIDAgNDkpKEVvZiA0OSAwKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlcnMuICBBIHBhcnNlciByZXR1cm5zIGZhbHNlIGlmIGJhc2VkIG9uIGFcbiAgIHNpbmdsZSB0b2tlbiBsb29rYWhlYWQgaXQgZGVjaWRlcyB0aGF0IHRoZSBnaXZlbiB0ZXh0IGNhbiBub3QgYmVcbiAgIHBhcnNlZC4gIEFueSBvdGhlciBwYXJzZSBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgcmFpc2luZyBleGNlcHRpb25zLlxuXG4gICBTb21lIHBhcnNlcnMgcmV0dXJuIHVuaXQgYmVjYXVzZSB3ZSBvbmx5IGNhbGwgdGhlbSB3aGVuIGEgZmFpbHVyZVxuICAgdG8gcGFyc2UgaW1wbGllcyBhIHBhcnNlIGVycm9yIChhbmQgbm90IHRoYXQgc29tZSBwYXJzZXIgaGlnaGVyIHVwXG4gICBpbiB0aGUgY2FsbCBjaGFpbiBzaG91bGQgdHJ5IHRvIHBhcnNlIHNvbWV0aGluZyBlbHNlKS5cblxuICAgRm9yIHNpbXBsaWNpdHkgdGhlIHBhcnNlcnMgdGhlbXNlbHZlcyBqdXN0IHZhbGlkYXRlIGFuZCBkb24ndFxuICAgcHJvZHVjZSBhbnkgdmFsdWVzLiAgVGhhdCBsZWFkcyB0byBhIGZldyB1bmVsZWdhbnQgY29uc3RydWN0c1xuICAgKHByaW1hcmlseSBpbiBkZWNsYXJhdGlvbiksIGJ1dCBtZWFucyB3ZSBvdGhlcndpc2UgaGF2ZSByYXRoZXJcbiAgIHNpbXBsZSBjb2RlIHRoYXQgYWxzbyBhbGxvY2F0ZXMgdmVyeSBsaXR0bGUuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHJlYyBuZXh0IGN0ID1cbiAgQ3NzX3Rva2VuaXplci5uZXh0IGN0O1xuICBpZiBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgdGhlbiBuZXh0IGN0IGVsc2UgKClcbjs7XG5cbmxldCBza2lwX3doaXRlX3NwYWNlIGN0ID1cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIFdoaXRlX3NwYWNlKSBkb1xuICAgIG5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IGFjY2VwdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiAoXG4gICAgbmV4dCBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgZXhwZWN0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIG5leHQgY3RcbiAgZWxzZVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlVuZXhwZWN0ZWQgdG9rZW5cIlxuICAgICAgICAgIChleHBlY3RlZCA6IENzc190b2tlbml6ZXIuVG9rZW4udClcbiAgICAgICAgICAoZ290IDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KV1cbjs7XG5cbmxldCByZWMgbWFueSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPSBpZiBmIGN0IHRoZW4gbWFueSBjdCBmIGVsc2UgKClcblxubGV0IG1hbnkxIChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9XG4gIGlmIGYgY3RcbiAgdGhlbiAoXG4gICAgbWFueSBjdCBmO1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCByZWMgYW55IGN0IDogYm9vbCA9XG4gIGxldCByZXMgPVxuICAgIG1hdGNoIENzc190b2tlbml6ZXIuY3VycmVudCBjdCB3aXRoXG4gICAgfCBJZGVudCB8IE51bWJlciB8IFBlcmNlbnRhZ2UgfCBEaW1lbnNpb24gfCBTdHJpbmcgfCBVcmkgfCBEZWxpbSB8IEhhc2ggfCBDb21tYSAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHRydWVcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIG1hbnkgY3QgYW55O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExwYXJlbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExicmFja2V0IC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUmJyYWNrZXQ7XG4gICAgICB0cnVlXG4gICAgfCBSY3VybHkgfCBScGFyZW4gfCBSYnJhY2tldCAtPiBmYWxzZVxuICAgIHwgTGN1cmx5IC0+IGZhbHNlXG4gICAgfCBBdGtleXdvcmQgfCBDb2xvbiB8IFNlbWlfY29sb24gLT4gZmFsc2VcbiAgICB8IENvbW1lbnQgfCBXaGl0ZV9zcGFjZSB8IEVvZiB8IEVycm9yIC0+IGZhbHNlXG4gIGluXG4gIGlmIHJlcyB0aGVuIHNraXBfd2hpdGVfc3BhY2UgY3QgZWxzZSAoKTtcbiAgcmVzXG5cbmFuZCBleHBlY3RfYW55IGN0ID0gaWYgYW55IGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxhbnk+XCJdXG5cbmFuZCB2YWx1ZTAgY3QgPVxuICBhbnkgY3RcbiAgfHwgYmxvY2sgY3RcbiAgfHxcbiAgaWYgYWNjZXB0IGN0IEF0a2V5d29yZFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIHZhbHVlIGN0ID0gbWFueTEgY3QgdmFsdWUwXG5cbmFuZCBibG9jayBjdCA6IGJvb2wgPVxuICBpZiBhY2NlcHQgY3QgTGN1cmx5XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgICB2YWx1ZTAgY3RcbiAgICAgIHx8XG4gICAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgICAgdGhlbiAoXG4gICAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICAgIHRydWUpXG4gICAgICBlbHNlIGZhbHNlKTtcbiAgICBleHBlY3QgY3QgUmN1cmx5O1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgZXhwZWN0X3ZhbHVlIGN0ID0gaWYgdmFsdWUgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPHZhbHVlPlwiXVxuXG5sZXQgZGVjbGFyYXRpb24gY3QgPVxuICBsZXQgaWRlbnRfc3RhcnQsIGlkZW50X2xlbiA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgaW5cbiAgaWYgYWNjZXB0IGN0IElkZW50XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgZXhwZWN0IGN0IENvbG9uO1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbGV0IHZhbHVlX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBleHBlY3RfdmFsdWUgY3Q7XG4gICAgbGV0IG5leHRfdG9rZW5fc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGxldCBzb3VyY2UgPSBDc3NfdG9rZW5pemVyLnNvdXJjZSBjdCBpblxuICAgIFNvbWVcbiAgICAgICggU3RyaW5nLnN1YiBzb3VyY2UgfnBvczppZGVudF9zdGFydCB+bGVuOmlkZW50X2xlblxuICAgICAgLCBTdHJpbmcucnN0cmlwXG4gICAgICAgICAgKFN0cmluZy5zdWIgc291cmNlIH5wb3M6dmFsdWVfc3RhcnQgfmxlbjoobmV4dF90b2tlbl9zdGFydCAtIHZhbHVlX3N0YXJ0KSkgKSlcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uIGN0ID1cbiAgbWF0Y2ggZGVjbGFyYXRpb24gY3Qgd2l0aFxuICB8IFNvbWUgKGZpZWxkLCB2YWx1ZSkgLT4gZmllbGQsIHZhbHVlXG4gIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxkZWNsYXJhdGlvbj5cIl1cbjs7XG5cbigqIEFzIHBlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zdHlsZS1hdHRyL1xuICAgZGVjbGFyYXRpb24tbGlzdFxuICAgOiBTKiBkZWNsYXJhdGlvbj8gWyAnOycgUyogZGVjbGFyYXRpb24/IF0qXG4gICA7XG4qKVxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IGN0ID1cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBsZXQgYWRkIGt2ID1cbiAgICBtYXRjaCBrdiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChrLCB2KSAtPiByZXMgOj0gKGssIHYpIDo6ICFyZXNcbiAgaW5cbiAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgdGhlbiAoXG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpO1xuICBMaXN0LnJldiAhcmVzXG47O1xuXG5sZXQgcGFyc2UgcGFyc2VyX2YgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIGRvXG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmU7XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICBsZXQgcmVzID0gcGFyc2VyX2YgY3QgaW5cbiAgICBleHBlY3QgY3QgRW9mO1xuICAgIHJlcylcbjs7XG5cbmxldCBwcmludF90b2tlbnMgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4obm90IChUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgRW9mKSkgZG9cbiAgICBwcmludF9zIChDc3NfdG9rZW5pemVyLlRva2VuLnNleHBfb2ZfdCAoQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0KSk7XG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCB2YWxpZGF0ZV92YWx1ZSA9IHBhcnNlIGV4cGVjdF92YWx1ZVxubGV0IHBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyA9IHBhcnNlIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IHNcblxubGV0IHRlc3RfcGFyc2VyIHAgc2V4cF9vZl9hcmcgcyA9XG4gIGxldCByID0gcGFyc2UgcCBzIGluXG4gIHByaW50ZiAhXCIlcyAtLT4gJXtzZXhwOmFyZyBPcl9lcnJvci50fVxcblwiIHMgclxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiXCIgPVxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgXCIwIDRweCA4cHggMCBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4xMiksIDAgMnB4IDRweCAwIFxcXG4gICAgICAgICBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4wOClcIlxuICAgICAgaW5cbiAgICAgIHByaW50X3Rva2VucyB2YWx1ZTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlbiB8fV07XG4gICAgICBwcmludF9zIFslbWVzc2FnZSAodmFsaWRhdGVfdmFsdWUgdmFsdWUgOiB1bml0IE9yX2Vycm9yLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKFwidmFsaWRhdGVfdmFsdWUgdmFsdWVcIiAoT2sgKCkpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidmFsdWVzXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfdmFsdWUgVW5pdC5zZXhwX29mX3QgaW5cbiAgICAgIHRlc3QgXCJ4XCI7XG4gICAgICB0ZXN0IFwiM1wiO1xuICAgICAgdGVzdCBcIjNpblwiO1xuICAgICAgdGVzdCBcIjMlXCI7XG4gICAgICB0ZXN0IFwiI2ZmZlwiO1xuICAgICAgdGVzdCBcIjEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcInJnYigwLDAsMClcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICB4IC0tPiAoT2sgKCkpXG4gICAgICAzIC0tPiAoT2sgKCkpXG4gICAgICAzaW4gLS0+IChPayAoKSlcbiAgICAgIDMlIC0tPiAoT2sgKCkpXG4gICAgICAjZmZmIC0tPiAoT2sgKCkpXG4gICAgICAxIDAgYXV0byAtLT4gKE9rICgpKVxuICAgICAgJ0hlbGxvIFdvcmxkJyAtLT4gKE9rICgpKVxuICAgICAgcmdiKDAsMCwwKSAtLT4gKE9rICgpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb25cIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6ICdIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiBmb287XCI7XG4gICAgICAoKiBTZW1pJ3MgYXJlIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gbGlzdCAqKVxuICAgICAgdGVzdCBcImNvbnRlbnQ6IGJhciBcIjtcbiAgICAgICgqIGJ1dCB3aGl0ZXNwYWNlIGlzIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gKGFueSByZWFsbHkpICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoZmxleCBcIjEgMCBhdXRvXCIpKVxuICAgICAgY29udGVudDogJ0hlbGxvIFdvcmxkJyAtLT4gKE9rIChjb250ZW50IFwiJ0hlbGxvIFdvcmxkJ1wiKSlcbiAgICAgIGNvbnRlbnQ6IGZvbzsgLS0+IChFcnJvciAoXCJVbmV4cGVjdGVkIHRva2VuXCIgKGV4cGVjdGVkIEVvZikgKGdvdCBTZW1pX2NvbG9uKSkpXG4gICAgICBjb250ZW50OiBiYXIgIC0tPiAoT2sgKGNvbnRlbnQgYmFyKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVuaWNvZGVcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnXCI7XG4gICAgICBwcmludF9lbmRsaW5lIChTZXhwLnRvX3N0cmluZyAoU2V4cC5BdG9tIFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcIikpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnIC0tPiAoT2tcbiAgICAgKGNvbnRlbnRcbiAgICAgIFwiJ1xcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyJ1wiKSlcbiAgICBcIlxcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyXCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uIGxpc3RcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IFslc2V4cF9vZjogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvO1wiO1xuICAgICAgdGVzdFxuICAgICAgICBcImJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4XCI7XG4gICAgICB0ZXN0IFwiOzs7OztcIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhIFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBmbGV4OiAxIDAgYXV0bzsgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXCJpbWdfdHJlZS5wbmdcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweCAtLT4gKE9rXG4gICAgICgoYmFja2dyb3VuZCBcIiM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnRcIilcbiAgICAgIChtYXJnaW4tbGVmdCAyMDBweCkpKVxuICAgIDs7Ozs7IC0tPiAoT2sgKCkpXG4gICAgZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSAgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSAob3RoZXIgc2EpKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgKCoqIChmaWVsZCAqIHZhbHVlKSBsaXN0LiAgV2hlcmUgdmFsdWUgc2hvdWxkIGJlIGVzY2FwZWQgLyBxdW90ZWRcbiAgICAgICAgYXMgbmVjZXNzYXJ5IGFzIHBlciBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3J1bGUtc2V0cy4gKilcbiAgICB0eXBlIHQgPSAoc3RyaW5nICogc3RyaW5nKSBsaXN0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pb11cbiAgZW5kXG5lbmRcblxub3BlbiBDb3JlXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG50eXBlIGNzc19nbG9iYWxfdmFsdWVzID1cbiAgWyBgSW5oZXJpdFxuICB8IGBJbml0aWFsXG4gIF1cbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkID0gcmVmIChmdW4gZGlnaXRzIGYgLT4gc3ByaW50ZiBcIiUuKmZcIiBkaWdpdHMgZilcbmVuZFxuXG5sZXQgZjJzIGRpZ2l0cyBmID0gIVByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgZGlnaXRzIGZcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFJHQkEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgciA6IGludFxuICAgICAgICA7IGcgOiBpbnRcbiAgICAgICAgOyBiIDogaW50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfnIgfmcgfmIgP2EgKCkgPSB7IHI7IGc7IGI7IGEgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEhTTEEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaCA6IGludFxuICAgICAgICA7IHMgOiBQZXJjZW50LnRcbiAgICAgICAgOyBsIDogUGVyY2VudC50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfmggfnMgfmwgP2EgKCkgPSB7IGg7IHM7IGw7IGEgfVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID1cbiAgICAgIFsgYFJHQkEgb2YgUkdCQS50XG4gICAgICB8IGBIU0xBIG9mIEhTTEEudFxuICAgICAgfCBgTmFtZSBvZiBzdHJpbmdcbiAgICAgIHwgYEhleCBvZiBzdHJpbmdcbiAgICAgIHwgYFZhciBvZiBzdHJpbmdcbiAgICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgOiBbPCB0IF0gLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFJHQkEgeyBSR0JBLnI7IGc7IGI7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBbJXN0cmluZyBcInJnYigle3IjSW50fSwle2cjSW50fSwle2IjSW50fSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmcgXCJyZ2JhKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9LCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYEhTTEEgeyBIU0xBLmg7IHM7IGw7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2woJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lKVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbGEoJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lLCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYE5hbWUgbmFtZSAtPiBuYW1lXG4gICAgfCBgSGV4IGhleCAtPiBoZXhcbiAgICB8IGBWYXIgdmFyIC0+IFslc3RyaW5nIFwidmFyKCV7dmFyfSlcIl1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxpZ25tZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGVmdFxuICAgIHwgYFJpZ2h0XG4gICAgfCBgQ2VudGVyICgqIGhvcml6b250YWwgKilcbiAgICB8IGBUb3BcbiAgICB8IGBCb3R0b21cbiAgICB8IGBNaWRkbGUgKCogdmVydGljYWwgKilcbiAgICB8IGBKdXN0aWZ5ICgqIHRleHQtYWxpZ24gKGluIGFkZGl0aW9uIHRvIFtob3Jpem9udGFsXSkgKilcbiAgICB8IGBTdXBlciAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYFN1YiAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYFRvcCAtPiBcInRvcFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQm90dG9tIC0+IFwiYm90dG9tXCJcbiAgICB8IGBTdXBlciAtPiBcInN1cGVyXCJcbiAgICB8IGBTdWIgLT4gXCJzdWJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgUmF3IG9mIHN0cmluZ1xuICAgIHwgYENoIG9mIGZsb2F0XG4gICAgfCBgUmVtIG9mIGZsb2F0XG4gICAgfCBgRW0gb2YgaW50XG4gICAgfCBgRW1fZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBQZXJjZW50IG9mIFBlcmNlbnQudFxuICAgIHwgYFB0IG9mIGZsb2F0XG4gICAgfCBgUHggb2YgaW50XG4gICAgfCBgUHhfZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBWaCBvZiBQZXJjZW50LnRcbiAgICB8IGBWdyBvZiBQZXJjZW50LnRcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYFJhdyBzIC0+IHNcbiAgICB8IGBDaCBjIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBjfWNoXCJdXG4gICAgfCBgUmVtIGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cmVtXCJdXG4gICAgfCBgRW0gaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9ZW1cIl1cbiAgICB8IGBFbV9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfWVtXCJdXG4gICAgfCBgUGVyY2VudCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfSVcIl1cbiAgICB8IGBQdCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBwfXB0XCJdXG4gICAgfCBgUHggaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9cHhcIl1cbiAgICB8IGBQeF9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXB4XCJdXG4gICAgfCBgVmggcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12aFwiXVxuICAgIHwgYFZ3IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dndcIl1cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuXG4gIGxldCBwZXJjZW50MTAwID0gYFBlcmNlbnQgKFBlcmNlbnQub2ZfcGVyY2VudGFnZSAxMDAuKVxuZW5kXG5cbm1vZHVsZSBBdXRvX29yX2xlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYEF1dG9cbiAgICB8IExlbmd0aC50XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8ICNMZW5ndGgudCBhcyBsIC0+IExlbmd0aC50b19zdHJpbmdfY3NzIGxcbiAgOztcbmVuZFxuXG5sZXQgdmFsdWVfbWFwIG8gfmYgPSBPcHRpb24udmFsdWVfbWFwIG8gfmRlZmF1bHQ6XCJcIiB+ZlxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgKCBAPiApID0gY29tYmluZVxubGV0IGNvbmNhdCBsID0gTGlzdC5jb25jYXQgbFxubGV0IHRvX3N0cmluZ19saXN0ID0gRm4uaWRcblxubGV0IHRvX3N0cmluZ19jc3MgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biAoZmllbGQsIHZhbHVlKSAtPiBbJXN0cmluZyBcIiV7ZmllbGR9OiAle3ZhbHVlfVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiO1wiXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2Nzc19leG4gcyA9IENzc19wYXJzZXIucGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzIHw+IE9yX2Vycm9yLm9rX2V4blxuXG4oKiogY3JlYXRlX3JhdyBjcmVhdGVzIGEgc2luZ2xlIGZpZWxkLCB2YWx1ZSBwYWlyLiAgSXQgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSBpcyBhIHZhbGlkXG4gICAgY3NzIHZhbHVlLiAgQXMgc3VjaCBpdCBpcyB1bnNhZmUgdG8gdXNlIHdpdGggYXJiaXRyYXJ5IHZhbHVlIHN0cmluZ3MuICBCdXQgZm9yIHRoZVxuICAgIHZhc3QgbWFqb3JpdHkgb2YgY29tYmluYXRvcnMgaW4gdGhpcyBtb2R1bGUgaXQgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIHVzZSwgYXMgd2Uga25vd1xuICAgIGJ5IGNvbnN0cnVjdGlvbiB0aGF0IHRoZSB2YWx1ZXMgZG8gbm90IG5lZWQgcXVvdGluZyAvIGVzY2FwaW5nLiAqKVxubGV0IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZSA9IFsgZmllbGQsIHZhbHVlIF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgc2hvdWxkX3ZhbGlkYXRlID0gcmVmIGZhbHNlXG5lbmRcblxubGV0IGNyZWF0ZSB+ZmllbGQgfnZhbHVlID1cbiAgaWYgIUV4cGVydC5zaG91bGRfdmFsaWRhdGUgdGhlbiBDc3NfcGFyc2VyLnZhbGlkYXRlX3ZhbHVlIHZhbHVlIHw+IE9yX2Vycm9yLm9rX2V4bjtcbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgZW1wdHkgPSBbXVxubGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxubGV0IGNyZWF0ZV9wbGFjZW1lbnQgbmFtZSBsZW5ndGggPSBjcmVhdGUgfmZpZWxkOm5hbWUgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsZW5ndGgpXG5sZXQgbGVmdCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJsZWZ0XCJcbmxldCB0b3AgPSBjcmVhdGVfcGxhY2VtZW50IFwidG9wXCJcbmxldCBib3R0b20gPSBjcmVhdGVfcGxhY2VtZW50IFwiYm90dG9tXCJcbmxldCByaWdodCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJyaWdodFwiXG5cbmxldCBwb3NpdGlvbiA/dG9wOnRwID9ib3R0b206YnQgP2xlZnQ6bHQgP3JpZ2h0OnJ0IHBvcyA9XG4gIGxldCBwb3MgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBtYXRjaCBwb3Mgd2l0aFxuICAgICAgfCBgU3RhdGljIC0+IFwic3RhdGljXCJcbiAgICAgIHwgYEFic29sdXRlIC0+IFwiYWJzb2x1dGVcIlxuICAgICAgfCBgU3RpY2t5IC0+IFwic3RpY2t5XCJcbiAgICAgIHwgYFJlbGF0aXZlIC0+IFwicmVsYXRpdmVcIlxuICAgICAgfCBgRml4ZWQgLT4gXCJmaXhlZFwiXG4gICAgaW5cbiAgICBjcmVhdGUgfmZpZWxkOlwicG9zaXRpb25cIiB+dmFsdWVcbiAgaW5cbiAgbGV0IGNvbnZlcnQgb3B0X2wgZiA9IE9wdGlvbi52YWx1ZV9tYXAgb3B0X2wgfmRlZmF1bHQ6ZW1wdHkgfmYgaW5cbiAgY29uY2F0IFsgcG9zOyBjb252ZXJ0IHRwIHRvcDsgY29udmVydCBsdCBsZWZ0OyBjb252ZXJ0IHJ0IHJpZ2h0OyBjb252ZXJ0IGJ0IGJvdHRvbSBdXG47O1xuXG5sZXQgYm94X3NpemluZyB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBDb250ZW50X2JveCAtPiBcImNvbnRlbnQtYm94XCJcbiAgICB8IGBCb3JkZXJfYm94IC0+IFwiYm9yZGVyLWJveFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3gtc2l6aW5nXCIgfnZhbHVlXG47O1xuXG5sZXQgZGlzcGxheSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBJbmxpbmUgLT4gXCJpbmxpbmVcIlxuICAgIHwgYEJsb2NrIC0+IFwiYmxvY2tcIlxuICAgIHwgYElubGluZV9ibG9jayAtPiBcImlubGluZS1ibG9ja1wiXG4gICAgfCBgTGlzdF9pdGVtIC0+IFwibGlzdC1pdGVtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBJbmxpbmVfdGFibGUgLT4gXCJpbmxpbmUtdGFibGVcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBGbGV4IC0+IFwiZmxleFwiXG4gICAgfCBgSW5saW5lX2ZsZXggLT4gXCJpbmxpbmUtZmxleFwiXG4gICAgfCBgSW5saW5lX2dyaWQgLT4gXCJpbmxpbmUtZ3JpZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJkaXNwbGF5XCIgfnZhbHVlXG47O1xuXG5sZXQgdmlzaWJpbGl0eSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBDb2xsYXBzZSAtPiBcImNvbGxhcHNlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInZpc2liaWxpdHlcIiB+dmFsdWVcbjs7XG5cbnR5cGUgb3ZlcmZsb3cgPVxuICBbIGBWaXNpYmxlXG4gIHwgYEhpZGRlblxuICB8IGBTY3JvbGxcbiAgfCBgQXV0b1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IG1ha2Vfb3ZlcmZsb3cgZmllbGQgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgU2Nyb2xsIC0+IFwic2Nyb2xsXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgb3ZlcmZsb3cgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3dcIlxubGV0IG92ZXJmbG93X3ggPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteFwiXG5sZXQgb3ZlcmZsb3dfeSA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy15XCJcbmxldCB6X2luZGV4IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcInotaW5kZXhcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSlcbmxldCBvcGFjaXR5IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcIm9wYWNpdHlcIiB+dmFsdWU6KGYycyA2IGkpXG5cbmxldCBjcmVhdGVfbGVuZ3RoX2ZpZWxkIGZpZWxkIGwgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgbClcbjs7XG5cbmxldCB3aGl0ZV9zcGFjZSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vd3JhcCAtPiBcIm5vd3JhcFwiXG4gICAgfCBgUHJlIC0+IFwicHJlXCJcbiAgICB8IGBQcmVfbGluZSAtPiBcInByZS1saW5lXCJcbiAgICB8IGBQcmVfd3JhcCAtPiBcInByZS13cmFwXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGUgfmZpZWxkOlwid2hpdGUtc3BhY2VcIiB+dmFsdWVcbjs7XG5cbnR5cGUgZm9udF9zdHlsZSA9XG4gIFsgYE5vcm1hbFxuICB8IGBJdGFsaWNcbiAgfCBgT2JsaXF1ZVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3dlaWdodCA9XG4gIFsgYE5vcm1hbFxuICB8IGBCb2xkXG4gIHwgYEJvbGRlclxuICB8IGBMaWdodGVyXG4gIHwgYE51bWJlciBvZiBpbnRcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF92YXJpYW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYFNtYWxsX2NhcHNcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBmb250X3NpemUgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiZm9udC1zaXplXCJcbmxldCBmb250X2ZhbWlseSBsID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LWZhbWlseVwiIH52YWx1ZTooU3RyaW5nLmNvbmNhdCBsIH5zZXA6XCIsXCIpXG5cbmxldCBmb250X3N0eWxlIHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgSXRhbGljIC0+IFwiaXRhbGljXCJcbiAgICB8IGBPYmxpcXVlIC0+IFwib2JsaXF1ZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXN0eWxlXCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udF93ZWlnaHQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTnVtYmVyIGkgLT4gSW50LnRvX3N0cmluZyBpXG4gICAgfCBgQm9sZCAtPiBcImJvbGRcIlxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTGlnaHRlciAtPiBcImxpZ2h0ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBCb2xkZXIgLT4gXCJib2xkZXJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXdlaWdodFwiIH52YWx1ZVxuOztcblxubGV0IGJvbGQgPSBmb250X3dlaWdodCBgQm9sZFxuXG5sZXQgZm9udF92YXJpYW50IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgU21hbGxfY2FwcyAtPiBcInNtYWxsLWNhcHNcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC12YXJpYW50XCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udCB+c2l6ZSB+ZmFtaWx5ID9zdHlsZSA/d2VpZ2h0ID92YXJpYW50ICgpID1cbiAgWyBTb21lIChmb250X3NpemUgc2l6ZSlcbiAgOyBTb21lIChmb250X2ZhbWlseSBmYW1pbHkpXG4gIDsgT3B0aW9uLm1hcCBzdHlsZSB+Zjpmb250X3N0eWxlXG4gIDsgT3B0aW9uLm1hcCB3ZWlnaHQgfmY6Zm9udF93ZWlnaHRcbiAgOyBPcHRpb24ubWFwIHZhcmlhbnQgfmY6Zm9udF92YXJpYW50XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZCB+Y29sb3IgPSBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KENvbG9yLnRvX3N0cmluZ19jc3MgY29sb3IpXG5sZXQgY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJjb2xvclwiIH5jb2xvclxubGV0IGJhY2tncm91bmRfY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWNvbG9yXCIgfmNvbG9yXG5sZXQgZmlsbCBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImZpbGxcIiB+Y29sb3JcblxudHlwZSBzdG9wcyA9IChQZXJjZW50LnQgKiBDb2xvci50KSBsaXN0XG5cbnR5cGUgbGluZWFyX2dyYWRpZW50ID1cbiAgeyBkaXJlY3Rpb24gOiBbIGBEZWcgb2YgaW50IF1cbiAgOyBzdG9wcyA6IHN0b3BzXG4gIH1cblxudHlwZSByYWRpYWxfZ3JhZGllbnQgPSB7IHN0b3BzIDogc3RvcHMgfVxuXG50eXBlIGJhY2tncm91bmRfaW1hZ2UgPVxuICBbIGBVcmwgb2Ygc3RyaW5nXG4gIHwgYExpbmVhcl9ncmFkaWVudCBvZiBsaW5lYXJfZ3JhZGllbnRcbiAgfCBgUmFkaWFsX2dyYWRpZW50IG9mIHJhZGlhbF9ncmFkaWVudFxuICBdXG5cbnR5cGUgdGV4dF9hbGlnbiA9XG4gIFsgYExlZnRcbiAgfCBgUmlnaHRcbiAgfCBgQ2VudGVyXG4gIHwgYEp1c3RpZnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBzdG9wc190b19zdHJpbmcgc3RvcHMgPVxuICBMaXN0Lm1hcCBzdG9wcyB+ZjooZnVuIChwY3QsIGNvbG9yKSAtPlxuICAgICgqIE5vdGU6IFBlcmNlbnQudG9fc3RyaW5nIHByb2R1Y2VkIGUuZy4gXCIweFwiLCBcIjF4XCIsIHdvbid0IHdvcmsgaGVyZS4gKilcbiAgICBbJXN0cmluZyBcIiV7Q29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcn0gJXtmMnMgNiAoUGVyY2VudC50b19wZXJjZW50YWdlIHBjdCl9JVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuOztcblxubGV0IGJhY2tncm91bmRfaW1hZ2Ugc3BlYyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBgVXJsIHVybCAtPiBbJXN0cmluZyBcInVybCgle3VybH0pXCJdXG4gICAgfCBgTGluZWFyX2dyYWRpZW50IHsgZGlyZWN0aW9uID0gYERlZyBkaXJlY3Rpb247IHN0b3BzIH0gLT5cbiAgICAgIFslc3RyaW5nIFwibGluZWFyLWdyYWRpZW50KCV7ZGlyZWN0aW9uI0ludH1kZWcsICV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgICB8IGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyB9IC0+IFslc3RyaW5nIFwicmFkaWFsLWdyYWRpZW50KCV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWltYWdlXCIgfnZhbHVlXG47O1xuXG5sZXQgY3JlYXRlX2FsaWdubWVudCBmaWVsZCBhID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBbGlnbm1lbnQudG9fc3RyaW5nX2NzcyAoYSA6PiBBbGlnbm1lbnQudCkpXG47O1xuXG5sZXQgdGV4dF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ0ZXh0LWFsaWduXCJcbmxldCBob3Jpem9udGFsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcImhvcml6b250YWwtYWxpZ25cIlxubGV0IHZlcnRpY2FsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInZlcnRpY2FsLWFsaWduXCJcblxubGV0IGZsb2F0IGYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIGYgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbG9hdFwiIH52YWx1ZVxuOztcblxubGV0IGxpbmVfaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImxpbmUtaGVpZ2h0XCJcbmxldCB3aWR0aCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJ3aWR0aFwiXG5sZXQgbWluX3dpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi13aWR0aFwiXG5sZXQgbWF4X3dpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1heC13aWR0aFwiXG5sZXQgaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImhlaWdodFwiXG5sZXQgbWluX2hlaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtaW4taGVpZ2h0XCJcbmxldCBtYXhfaGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1heC1oZWlnaHRcIlxubGV0IHBhZGRpbmdfdG9wID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctdG9wXCJcbmxldCBwYWRkaW5nX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLWJvdHRvbVwiXG5sZXQgcGFkZGluZ19sZWZ0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctbGVmdFwiXG5sZXQgcGFkZGluZ19yaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJwYWRkaW5nLXJpZ2h0XCJcblxubGV0IHBhZGRpbmcgP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOnBhZGRpbmdfdG9wXG4gIDsgbSBib3R0b20gfmY6cGFkZGluZ19ib3R0b21cbiAgOyBtIGxlZnQgfmY6cGFkZGluZ19sZWZ0XG4gIDsgbSByaWdodCB+ZjpwYWRkaW5nX3JpZ2h0XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IHVuaWZvcm1fcGFkZGluZyBsID0gcGFkZGluZyB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcbmxldCBtYXJnaW5fdG9wID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi10b3BcIlxubGV0IG1hcmdpbl9ib3R0b20gPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLWJvdHRvbVwiXG5sZXQgbWFyZ2luX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLWxlZnRcIlxubGV0IG1hcmdpbl9yaWdodCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tcmlnaHRcIlxuXG5sZXQgbWFyZ2luID90b3AgP2JvdHRvbSA/bGVmdCA/cmlnaHQgKCkgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgWyBtIHRvcCB+ZjptYXJnaW5fdG9wXG4gIDsgbSBib3R0b20gfmY6bWFyZ2luX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjptYXJnaW5fbGVmdFxuICA7IG0gcmlnaHQgfmY6bWFyZ2luX3JpZ2h0XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IHVuaWZvcm1fbWFyZ2luIGwgPSBtYXJnaW4gfnRvcDpsIH5ib3R0b206bCB+bGVmdDpsIH5yaWdodDpsICgpXG5sZXQgcm93X2dhcCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJyb3ctZ2FwXCJcbmxldCBjb2x1bW5fZ2FwID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImNvbHVtbi1nYXBcIlxuXG50eXBlIGJvcmRlcl9zdHlsZSA9XG4gIFsgYE5vbmVcbiAgfCBgSGlkZGVuXG4gIHwgYERvdHRlZFxuICB8IGBEYXNoZWRcbiAgfCBgU29saWRcbiAgfCBgRG91YmxlXG4gIHwgYEdyb292ZVxuICB8IGBSaWRnZVxuICB8IGBJbnNldFxuICB8IGBPdXRzZXRcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbigqKiBDb25jYXQgMiB2YWx1ZXMgd2l0aCBhIHNwYWNlIGluIGJldHdlZW4uICBJZiBlaXRoZXIgaXMgdGhlIGVtcHR5IHN0cmluZ1xuICAgIGRvbid0IHB1dCBpbiB1bm5lY2Vzc2FyeSB3aGl0ZXNwYWNlLiAqKVxubGV0IGNvbmNhdDJ2IHYxIHYyID1cbiAgbWF0Y2ggdjEsIHYyIHdpdGhcbiAgfCBcIlwiLCB4IC0+IHhcbiAgfCB4LCBcIlwiIC0+IHhcbiAgfCB4LCB5IC0+IHggXiBcIiBcIiBeIHlcbjs7XG5cbigqKiBDb25jYXQgdXAgdG8gMyB2YWx1ZXMgd2l0aCBzcGFjZXMgaW4gYmV0d2Vlbi4gKilcbmxldCBjb25jYXQzdiB2MSB2MiB2MyA9IGNvbmNhdDJ2IChjb25jYXQydiB2MSB2MikgdjNcblxubGV0IGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH4oc3R5bGUgOiBib3JkZXJfc3R5bGUpICgpID1cbiAgbGV0IHN0eWxlID1cbiAgICBtYXRjaCBzdHlsZSB3aXRoXG4gICAgfCBgUmlkZ2UgLT4gXCJyaWRnZVwiXG4gICAgfCBgT3V0c2V0IC0+IFwib3V0c2V0XCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgR3Jvb3ZlIC0+IFwiZ3Jvb3ZlXCJcbiAgICB8IGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbnNldCAtPiBcImluc2V0XCJcbiAgICB8IGBIaWRkZW4gLT4gXCJoaWRkZW5cIlxuICAgIHwgYERvdWJsZSAtPiBcImRvdWJsZVwiXG4gICAgfCBgRG90dGVkIC0+IFwiZG90dGVkXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgU29saWQgLT4gXCJzb2xpZFwiXG4gIGluXG4gIGxldCB3aWR0aCA9IHZhbHVlX21hcCB3aWR0aCB+ZjpMZW5ndGgudG9fc3RyaW5nX2NzcyBpblxuICBsZXQgY29sb3IgPSB2YWx1ZV9tYXAgY29sb3IgfmY6Q29sb3IudG9fc3RyaW5nX2NzcyBpblxuICBjb25jYXQzdiB3aWR0aCBzdHlsZSBjb2xvclxuOztcblxubGV0IGNyZWF0ZV9ib3JkZXIgP3NpZGUgKCkgPVxuICBsZXQgZmllbGQgPVxuICAgIG1hdGNoIHNpZGUgd2l0aFxuICAgIHwgU29tZSBgVG9wIC0+IFwiYm9yZGVyLXRvcFwiXG4gICAgfCBTb21lIGBCb3R0b20gLT4gXCJib3JkZXItYm90dG9tXCJcbiAgICB8IFNvbWUgYFJpZ2h0IC0+IFwiYm9yZGVyLXJpZ2h0XCJcbiAgICB8IFNvbWUgYExlZnQgLT4gXCJib3JkZXItbGVmdFwiXG4gICAgfCBOb25lIC0+IFwiYm9yZGVyXCJcbiAgaW5cbiAgZnVuID93aWR0aCA/Y29sb3IgfnN0eWxlICgpIC0+XG4gICAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkpXG47O1xuXG5sZXQgYm9yZGVyX3RvcCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YFRvcCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlcl9ib3R0b20gP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBCb3R0b20gKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfbGVmdCA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9ib3JkZXIgfnNpZGU6YExlZnQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfcmlnaHQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBSaWdodCAoKSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKVxuOztcblxubGV0IGJvcmRlciA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9IGNyZWF0ZV9ib3JkZXIgP3NpZGU6Tm9uZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAoKVxuXG5sZXQgb3V0bGluZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSA9XG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwib3V0bGluZVwiIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl9jb2xsYXBzZSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBTZXBhcmF0ZSAtPiBcInNlcGFyYXRlXCJcbiAgICB8IGBDb2xsYXBzZSAtPiBcImNvbGxhcHNlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImJvcmRlci1jb2xsYXBzZVwiIH52YWx1ZVxuOztcblxubGV0IGJvcmRlcl9zcGFjaW5nID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcImJvcmRlci1zcGFjaW5nXCJcbmxldCBib3JkZXJfcmFkaXVzIGwgPSBjcmVhdGUgfmZpZWxkOlwiYm9yZGVyLXJhZGl1c1wiIH52YWx1ZTooTGVuZ3RoLnRvX3N0cmluZ19jc3MgbClcblxudHlwZSB0ZXh0X2RlY29yYXRpb25fbGluZSA9XG4gIFsgYE5vbmVcbiAgfCBgVW5kZXJsaW5lXG4gIHwgYE92ZXJsaW5lXG4gIHwgYExpbmVfdGhyb3VnaFxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX3N0eWxlID1cbiAgWyBgU29saWRcbiAgfCBgRG91YmxlXG4gIHwgYERvdHRlZFxuICB8IGBEYXNoZWRcbiAgfCBgV2F2eVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cbltAQGRlcml2aW5nIHNleHBdXG5cbmxldCB0ZXh0X2RlY29yYXRpb24gP3N0eWxlID9jb2xvciB+bGluZSAoKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbGV0IGxpbmUgPVxuICAgICAgTGlzdC5tYXAgbGluZSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBgTGluZV90aHJvdWdoIC0+IFwibGluZS10aHJvdWdoXCJcbiAgICAgICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYE92ZXJsaW5lIC0+IFwib3ZlcmxpbmVcIlxuICAgICAgICB8IGBVbmRlcmxpbmUgLT4gXCJ1bmRlcmxpbmVcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiKVxuICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gICAgaW5cbiAgICBsZXQgc3R5bGUgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgIHwgU29tZSBgU29saWQgLT4gXCJzb2xpZFwiXG4gICAgICB8IFNvbWUgYERvdWJsZSAtPiBcImRvdWJsZVwiXG4gICAgICB8IFNvbWUgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgICB8IFNvbWUgYERhc2hlZCAtPiBcImRhc2hlZFwiXG4gICAgICB8IFNvbWUgYFdhdnkgLT4gXCJ3YXZ5XCJcbiAgICAgIHwgU29tZSBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgfCBTb21lIGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgaW5cbiAgICBsZXQgY29sb3IgPSB2YWx1ZV9tYXAgY29sb3IgfmY6Q29sb3IudG9fc3RyaW5nX2NzcyBpblxuICAgIGNvbmNhdDN2IGxpbmUgc3R5bGUgY29sb3JcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ0ZXh0LWRlY29yYXRpb25cIiB+dmFsdWVcbjs7XG5cbnR5cGUgY29udGVudF9hbGlnbm1lbnQgPVxuICBbIGBOb3JtYWxcbiAgfCBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgU3BhY2VfYmV0d2VlblxuICB8IGBTcGFjZV9hcm91bmRcbiAgfCBgU3BhY2VfZXZlbmx5XG4gIHwgYFN0cmV0Y2hcbiAgXVxuXG5sZXQgY29udGVudF9hbGlnbm1lbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbiAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuOztcblxudHlwZSBpdGVtX2FsaWdubWVudCA9XG4gIFsgYEF1dG9cbiAgfCBgRmxleF9zdGFydFxuICB8IGBGbGV4X2VuZFxuICB8IGBDZW50ZXJcbiAgfCBgQmFzZWxpbmVcbiAgfCBgU3RyZXRjaFxuICBdXG5cbmxldCBpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzID0gZnVuY3Rpb25cbiAgfCBgQXV0byAtPiBcImF1dG9cIlxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBCYXNlbGluZSAtPiBcImJhc2VsaW5lXCJcbiAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuOztcblxudHlwZSBqdXN0aWZ5X2NvbnRlbnQgPVxuICBbIGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBTcGFjZV9iZXR3ZWVuXG4gIHwgYFNwYWNlX2Fyb3VuZFxuICB8IGBTcGFjZV9ldmVubHlcbiAgXVxuXG5sZXQganVzdGlmeV9jb250ZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBGbGV4X3N0YXJ0IC0+IFwiZmxleC1zdGFydFwiXG4gIHwgYEZsZXhfZW5kIC0+IFwiZmxleC1lbmRcIlxuICB8IGBDZW50ZXIgLT4gXCJjZW50ZXJcIlxuICB8IGBTcGFjZV9iZXR3ZWVuIC0+IFwic3BhY2UtYmV0d2VlblwiXG4gIHwgYFNwYWNlX2Fyb3VuZCAtPiBcInNwYWNlLWFyb3VuZFwiXG4gIHwgYFNwYWNlX2V2ZW5seSAtPiBcInNwYWNlLWV2ZW5seVwiXG47O1xuXG5sZXQgZmxleF9jb250YWluZXJcbiAgICAgID8oaW5saW5lID0gZmFsc2UpXG4gICAgICA/KGRpcmVjdGlvbiA9IGBSb3cpXG4gICAgICA/KHdyYXAgPSBgTm93cmFwKVxuICAgICAgP2FsaWduX2l0ZW1zXG4gICAgICA/YWxpZ25fY29udGVudFxuICAgICAgP2p1c3RpZnlfY29udGVudFxuICAgICAgP3Jvd19nYXA6cmdcbiAgICAgID9jb2x1bW5fZ2FwOmNnXG4gICAgICAoKVxuICA9XG4gIGxldCBkaXJlY3Rpb24gPVxuICAgIGxldCBtYWtlX2RpciB2ID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4LWRpcmVjdGlvblwiIH52YWx1ZTp2IGluXG4gICAgbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBSb3cgLT4gbWFrZV9kaXIgXCJyb3dcIlxuICAgIHwgYFJvd19yZXZlcnNlIC0+IG1ha2VfZGlyIFwicm93LXJldmVyc2VcIlxuICAgIHwgYENvbHVtbiAtPiBtYWtlX2RpciBcImNvbHVtblwiXG4gICAgfCBgQ29sdW1uX3JldmVyc2UgLT4gbWFrZV9kaXIgXCJjb2x1bW4tcmV2ZXJzZVwiXG4gICAgfCBgRGVmYXVsdCAtPiBlbXB0eVxuICBpblxuICBsZXQgd3JhcCA9XG4gICAgbGV0IG1ha2Vfd3JhcCB2ID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4LXdyYXBcIiB+dmFsdWU6diBpblxuICAgIG1hdGNoIHdyYXAgd2l0aFxuICAgIHwgYE5vd3JhcCAtPiBtYWtlX3dyYXAgXCJub3dyYXBcIlxuICAgIHwgYFdyYXAgLT4gbWFrZV93cmFwIFwid3JhcFwiXG4gICAgfCBgV3JhcF9yZXZlcnNlIC0+IG1ha2Vfd3JhcCBcIndyYXAtcmV2ZXJzZVwiXG4gICAgfCBgRGVmYXVsdCAtPiBlbXB0eVxuICBpblxuICBsZXQgYWxpZ25faXRlbXMgPVxuICAgIG1hdGNoIGFsaWduX2l0ZW1zIHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWl0ZW1zXCIgfnZhbHVlOihpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCBhbGlnbl9jb250ZW50ID1cbiAgICBtYXRjaCBhbGlnbl9jb250ZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1jb250ZW50XCIgfnZhbHVlOihjb250ZW50X2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCBqdXN0aWZ5X2NvbnRlbnQgPVxuICAgIG1hdGNoIGp1c3RpZnlfY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwianVzdGlmeS1jb250ZW50XCIgfnZhbHVlOihqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBsZXQgcm93X2dhcCA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6ZW1wdHkgfmY6cm93X2dhcCByZyBpblxuICBsZXQgY29sdW1uX2dhcCA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6ZW1wdHkgfmY6Y29sdW1uX2dhcCBjZyBpblxuICBjb25jYXRcbiAgICBbIGRpc3BsYXkgKGlmIGlubGluZSB0aGVuIGBJbmxpbmVfZmxleCBlbHNlIGBGbGV4KVxuICAgIDsgZGlyZWN0aW9uXG4gICAgOyB3cmFwXG4gICAgOyBhbGlnbl9pdGVtc1xuICAgIDsgYWxpZ25fY29udGVudFxuICAgIDsganVzdGlmeV9jb250ZW50XG4gICAgOyBjb2x1bW5fZ2FwXG4gICAgOyByb3dfZ2FwXG4gICAgXVxuOztcblxubGV0IGZsZXhfaXRlbSA/b3JkZXIgPyhiYXNpcyA9IGBBdXRvKSA/KHNocmluayA9IDEuKSB+Z3JvdyAoKSA9XG4gIGxldCBvcmRlciA9XG4gICAgT3B0aW9uLm1hcCBvcmRlciB+ZjooZnVuIGkgLT4gY3JlYXRlX3JhdyB+ZmllbGQ6XCJvcmRlclwiIH52YWx1ZTooSW50LnRvX3N0cmluZyBpKSlcbiAgICB8PiBPcHRpb24udG9fbGlzdFxuICAgIHw+IExpc3Quam9pblxuICBpblxuICBsZXQgZmxleCA9XG4gICAgbGV0IGJhc2lzID0gQXV0b19vcl9sZW5ndGgudG9fc3RyaW5nX2NzcyBiYXNpcyBpblxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleFwiIH52YWx1ZTpbJXN0cmluZyBcIiV7ZjJzIDYgZ3Jvd30gJXtmMnMgNiBzaHJpbmt9ICV7YmFzaXN9XCJdXG4gIGluXG4gIGNvbmNhdCBbIGZsZXg7IG9yZGVyIF1cbjs7XG5cbmxldCBhbGlnbl9zZWxmIGEgPVxuICBsZXQgdmFsdWUgPSBpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbGlnbi1zZWxmXCIgfnZhbHVlXG47O1xuXG5sZXQgcmVzaXplICh2YWx1ZSA6IFsgYE5vbmUgfCBgQm90aCB8IGBIb3Jpem9udGFsIHwgYFZlcnRpY2FsIHwgY3NzX2dsb2JhbF92YWx1ZXMgXSkgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgQm90aCAtPiBcImJvdGhcIlxuICAgIHwgYEhvcml6b250YWwgLT4gXCJob3Jpem9udGFsXCJcbiAgICB8IGBWZXJ0aWNhbCAtPiBcInZlcnRpY2FsXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInJlc2l6ZVwiIH52YWx1ZVxuOztcblxubGV0IGFuaW1hdGlvbiB+bmFtZSB+ZHVyYXRpb24gP2RlbGF5ID9kaXJlY3Rpb24gP2ZpbGxfbW9kZSA/aXRlcl9jb3VudCA/dGltaW5nX2Z1bmN0aW9uICgpXG4gID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIGxldCBzcGFuX3RvX3N0cmluZyBzID0gWyVzdHJpbmcgXCIle2YycyAyIChUaW1lX25zLlNwYW4udG9fc2VjIHMpfXNcIl0gaW5cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbSBkaXJlY3Rpb24gfmY6KGZ1biBkIC0+XG4gICAgICBsZXQgdmFsdWUgPVxuICAgICAgICBtYXRjaCBkIHdpdGhcbiAgICAgICAgfCBgTm9ybWFsIC0+IFwibm9ybWFsXCJcbiAgICAgICAgfCBgUmV2ZXJzZSAtPiBcInJldmVyc2VcIlxuICAgICAgICB8IGBBbHRlcm5hdGUgLT4gXCJhbHRlcm5hdGVcIlxuICAgICAgICB8IGBBbHRlcm5hdGVfcmV2ZXJzZSAtPiBcImFsdGVybmF0ZS1yZXZlcnNlXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZGlyZWN0aW9uXCIgfnZhbHVlKVxuICBpblxuICBsZXQgZmlsbF9tb2RlID1cbiAgICBtIGZpbGxfbW9kZSB+ZjooZnVuIGYgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGYgd2l0aFxuICAgICAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgICAgIHwgYEZvcndhcmRzIC0+IFwiZm9yd2FyZHNcIlxuICAgICAgICB8IGBCYWNrd2FyZHMgLT4gXCJiYWNrd2FyZHNcIlxuICAgICAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgICAgaW5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIH52YWx1ZSlcbiAgaW5cbiAgWyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1uYW1lXCIgfnZhbHVlOm5hbWUpXG4gIDsgU29tZSAoY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZHVyYXRpb25cIiB+dmFsdWU6KHNwYW5fdG9fc3RyaW5nIGR1cmF0aW9uKSlcbiAgOyBtIGRlbGF5IH5mOihmdW4gcyAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kZWxheVwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgcykpXG4gIDsgbSBpdGVyX2NvdW50IH5mOihmdW4gaSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICA7IG0gdGltaW5nX2Z1bmN0aW9uIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIH52YWx1ZSlcbiAgOyBkaXJlY3Rpb25cbiAgOyBmaWxsX21vZGVcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG50eXBlIHVzZXJfc2VsZWN0ID1cbiAgWyBgQWxsXG4gIHwgYEF1dG9cbiAgfCBgTm9uZVxuICB8IGBUZXh0XG4gIF1cblxubGV0IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBbGwgLT4gXCJhbGxcIlxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgfCBgVGV4dCAtPiBcInRleHRcIlxuOztcblxubGV0IHVzZXJfc2VsZWN0IHMgPVxuICBsZXQgdmFsdWUgPSB1c2VyX3NlbGVjdF90b19zdHJpbmdfY3NzIHMgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJ1c2VyLXNlbGVjdFwiIH52YWx1ZVxuOztcblxuXG5sZXQldGVzdF9tb2R1bGUgXCJ0ZXN0c1wiID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19zdHJpbmdfY3NzIC0+IG9mX3N0cmluZ19jc3NfZXhuIC0+IHRvX3N0cmluZ19jc3NcIiA9XG4gICAgICBsZXQgdCBjc3MgPVxuICAgICAgICBsZXQgcyA9IHRvX3N0cmluZ19jc3MgY3NzIGluXG4gICAgICAgIGxldCBzMiA9IHRvX3N0cmluZ19jc3MgKG9mX3N0cmluZ19jc3NfZXhuIHMpIGluXG4gICAgICAgIHByaW50X2VuZGxpbmUgcztcbiAgICAgICAgcHJpbnRfZW5kbGluZSBzMlxuICAgICAgaW5cbiAgICAgIHQgKGZsZXhfaXRlbSB+Z3JvdzoxLjAgKCkgQD4gb3ZlcmZsb3cgYFNjcm9sbCk7XG4gICAgICB0IChmbGV4X2NvbnRhaW5lciB+aW5saW5lOnRydWUgfmRpcmVjdGlvbjpgQ29sdW1uICgpIEA+IGJvcmRlciB+c3R5bGU6YERhc2hlZCAoKSk7XG4gICAgICB0IChjb2xvciAoYFJHQkEgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+ZzoxMDAgfmI6MTAwICgpKSkpO1xuICAgICAgdFxuICAgICAgICAoY29sb3JcbiAgICAgICAgICAgKGBIU0xBXG4gICAgICAgICAgICAgIChDb2xvci5IU0xBLmNyZWF0ZVxuICAgICAgICAgICAgICAgICB+aDoxMDBcbiAgICAgICAgICAgICAgICAgfnM6KFBlcmNlbnQub2ZfbXVsdCAwLjc1KVxuICAgICAgICAgICAgICAgICB+bDooUGVyY2VudC5vZl9tdWx0IDAuNjApXG4gICAgICAgICAgICAgICAgICgpKSkpO1xuICAgICAgdCAoY3JlYXRlIH5maWVsZDpcImNvbnRlbnRcIiB+dmFsdWU6e3xcIjtcInx9KTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgZmxleDogMS4wMDAwMDAgMS4wMDAwMDAgYXV0bztvdmVyZmxvdzogc2Nyb2xsXG4gICAgZmxleDogMS4wMDAwMDAgMS4wMDAwMDAgYXV0bztvdmVyZmxvdzogc2Nyb2xsXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47ZmxleC13cmFwOiBub3dyYXA7Ym9yZGVyOiBkYXNoZWRcbiAgICBjb2xvcjogcmdiKDEwMCwxMDAsMTAwKVxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IGhzbCgxMDAsNzUlLDYwJSlcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbnRlbnQ6IFwiO1wiXG4gICAgY29udGVudDogXCI7XCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImdyYWRpZW50c1wiID1cbiAgICAgIGxldCBwIHggPSBQZXJjZW50Lm9mX211bHQgeCBpblxuICAgICAgbGV0IGMgcyA9IGBOYW1lIHMgaW5cbiAgICAgIGxldCB0IGNzcyA9IHByaW50X2VuZGxpbmUgKHRvX3N0cmluZ19jc3MgY3NzKSBpblxuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYExpbmVhcl9ncmFkaWVudFxuICAgICAgICAgICAgICB7IGRpcmVjdGlvbiA9IGBEZWcgOTBcbiAgICAgICAgICAgICAgOyBzdG9wcyA9XG4gICAgICAgICAgICAgICAgICBbIHAgMC4sIGMgXCJibGFja1wiXG4gICAgICAgICAgICAgICAgICA7IHAgMC4yLCBjIFwiI2ZmMDAwMFwiXG4gICAgICAgICAgICAgICAgICA7IHAgMC40LCBjIFwicmVkXCJcbiAgICAgICAgICAgICAgICAgIDsgKCBwIDEuXG4gICAgICAgICAgICAgICAgICAgICwgYFJHQkFcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2xvci5SR0JBLmNyZWF0ZSB+cjoxMDAgfmc6NTAgfmI6MzAgfmE6KFBlcmNlbnQub2ZfbXVsdCAwLjc1KSAoKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9KSk7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fCBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIGJsYWNrIDAuMDAwMDAwJSwgI2ZmMDAwMCAyMC4wMDAwMDAlLCByZWQgNDAuMDAwMDAwJSwgcmdiYSgxMDAsNTAsMzAsMC43NSkgMTAwLjAwMDAwMCUpIHx9XTtcbiAgICAgIHRcbiAgICAgICAgKGJhY2tncm91bmRfaW1hZ2VcbiAgICAgICAgICAgKGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyA9IFsgcCAwLiwgYyBcImJsYWNrXCI7IHAgMS4sIGMgXCJyZWRcIiBdIH0pKTtcbiAgICAgIFslZXhwZWN0IHt8IGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChibGFjayAwLjAwMDAwMCUsIHJlZCAxMDAuMDAwMDAwJSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHRvX2pzX3N0cmluZyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b1N0cmluZ1xubGV0IHRvX2pzX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9GaXhlZCBkaWdpdHNcbmxldCB0b19qc19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b1ByZWNpc2lvbiBkaWdpdHNcbmxldCB0b19qc19zdHJpbmdfZXhwb25lbnRpYWwgdmFsdWUgPSAoSnMubnVtYmVyX29mX2Zsb2F0IHZhbHVlKSMjdG9FeHBvbmVudGlhbFxubGV0IHRvX3N0cmluZyB2YWx1ZSA9IHRvX2pzX3N0cmluZyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSB8PiBKcy50b19zdHJpbmdcbmxldCB0b19zdHJpbmdfcHJlY2lzaW9uIGRpZ2l0cyB2YWx1ZSA9IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSB8PiBKcy50b19zdHJpbmdcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgb3BlbiBDb3JlIGluXG4gIGxldCBwcmludCBmID0gcHJpbnRmIFwiJXNcIiAodG9fc3RyaW5nIGYpIGluXG4gIHByaW50IDEuO1xuICBbJWV4cGVjdCB7fCAxIHx9XTtcbiAgcHJpbnQgRmxvYXQubmFuO1xuICBbJWV4cGVjdCB7fCBOYU4gfH1dO1xuICBwcmludCBGbG9hdC5pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgSW5maW5pdHkgfH1dO1xuICBwcmludCBGbG9hdC5uZWdfaW5maW5pdHk7XG4gIFslZXhwZWN0IHt8IC1JbmZpbml0eSB8fV07XG4gIHByaW50IDAuMDAwMDAwMDE7XG4gIFslZXhwZWN0IHt8IDFlLTggfH1dO1xuICBwcmludCAoLTEuKTtcbiAgWyVleHBlY3Qge3wgLTEgfH1dO1xuICBwcmludCAxLjAwMDAwMDE7XG4gIFslZXhwZWN0IHt8IDEuMDAwMDAwMSB8fV1cbjs7XG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcbmluY2x1ZGUgVWlfZWZmZWN0XG5cbigqIEFsbCB2aXNpYmlsaXR5IGhhbmRsZXJzIHNlZSBhbGwgZXZlbnRzLCBzbyBhIHNpbXBsZSBsaXN0IGlzIGVub3VnaC4gICopXG5sZXQgdmlzaWJpbGl0eV9oYW5kbGVycyA6ICh1bml0IC0+IHVuaXQpIGxpc3QgcmVmID0gcmVmIFtdXG5cbm1vZHVsZSB0eXBlIFZpc2liaWxpdHlfaGFuZGxlciA9IHNpZ1xuICB2YWwgaGFuZGxlIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIERlZmluZV92aXNpYmlsaXR5IChWSCA6IFZpc2liaWxpdHlfaGFuZGxlcikgPSBzdHJ1Y3RcbiAgbGV0ICgpID0gdmlzaWJpbGl0eV9oYW5kbGVycyA6PSBWSC5oYW5kbGUgOjogIXZpc2liaWxpdHlfaGFuZGxlcnNcbmVuZFxuXG50eXBlIF8gdCArPVxuICB8IFZpZXdwb3J0X2NoYW5nZWRcbiAgfCBTdG9wX3Byb3BhZ2F0aW9uXG4gIHwgU3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb25cbiAgfCBQcmV2ZW50X2RlZmF1bHRcblxubGV0IHNlcXVlbmNlX2FzX3NpYmxpbmcgbGVmdCB+dW5sZXNzX3N0b3BwZWQgPVxuICBsZXQgcmVjIGNvbnRhaW5zX3N0b3AgPSBmdW5jdGlvblxuICAgIHwgTWFueSBlcyAtPiBMaXN0LmV4aXN0cyBlcyB+Zjpjb250YWluc19zdG9wXG4gICAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvbiAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGNvbnRhaW5zX3N0b3AgbGVmdCB0aGVuIGxlZnQgZWxzZSBVaV9lZmZlY3QuTWFueSBbIGxlZnQ7IHVubGVzc19zdG9wcGVkICgpIF1cbjs7XG5cbigqIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBkb20gZXZlbnQgaGVyZSBzbyB0aGF0XG4gICBtb3ZlbWVudCBiZXR3ZWVuIFtWZG9tLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBhbmRcbiAgIFtVaV9jb25jcmV0ZS5FZmZlY3QuRXhwZXJ0LmhhbmRsZV0ga2VlcHMgdGhlIG9yaWdpbmFsXG4gICBkb20gZXZlbnQgYXJvdW5kLiAqKVxubGV0IGN1cnJlbnRfZG9tX2V2ZW50ID0gcmVmIE5vbmVcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpTdGRsaWIuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBWaWV3cG9ydF9jaGFuZ2VkKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gTGlzdC5pdGVyICF2aXNpYmlsaXR5X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmICgpKSlcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6U3RkbGliLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgU3RvcF9wcm9wYWdhdGlvbikpXG4gICAgfmRhdGE6KGZ1biBfIC0+IE9wdGlvbi5pdGVyICFjdXJyZW50X2RvbV9ldmVudCB+ZjpEb21faHRtbC5zdG9wUHJvcGFnYXRpb24pXG47O1xuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OlN0ZGxpYi5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFByZXZlbnRfZGVmYXVsdCkpXG4gICAgfmRhdGE6KGZ1biBfIC0+IE9wdGlvbi5pdGVyICFjdXJyZW50X2RvbV9ldmVudCB+ZjpEb20ucHJldmVudERlZmF1bHQpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gPSBFeHBlcnQuaGFuZGxlXG5cbiAgbGV0IGhhbmRsZSBkb21fZXZlbnQgZXZlbnQgPVxuICAgIGxldCBvbGQgPSAhY3VycmVudF9kb21fZXZlbnQgaW5cbiAgICBjdXJyZW50X2RvbV9ldmVudCA6PSBTb21lIChkb21fZXZlbnQgOj4gRG9tX2h0bWwuZWxlbWVudCBEb20uZXZlbnQgSnMudCk7XG4gICAgRXhwZXJ0LmhhbmRsZSBldmVudDtcbiAgICBjdXJyZW50X2RvbV9ldmVudCA6PSBvbGRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSnNfb2Zfb2NhbWxcblxubW9kdWxlIHR5cGUgUyA9IEhvb2tzX2ludGYuU1xubW9kdWxlIHR5cGUgSW5wdXQgPSBIb29rc19pbnRmLklucHV0XG5cbmxldCBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGlkID0gRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBpZFxuXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgZiA9XG4gIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIChKcy53cmFwX2NhbGxiYWNrIGYpXG47O1xuXG5tb2R1bGUgRXh0cmEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgeyB0eXBlX2lkOyB2YWx1ZSB9KSA9IFR5cGVfZXF1YWwuSWQudG9fc2V4cCB0eXBlX2lkIHZhbHVlXG5lbmRcblxudHlwZSB0ID1cbiAgfCBUIDpcbiAgICAgIHsgaW5wdXQgOiAnaW5wdXRcbiAgICAgIDsgaW5wdXRfaWQgOiAnaW5wdXQgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGNvbWJpbmVfaW5wdXRzIDogJ2lucHV0IC0+ICdpbnB1dCAtPiAnaW5wdXRcbiAgICAgIDsgaW5pdCA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgdXBkYXRlIDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IGRlc3Ryb3kgOlxuICAgICAgICAgICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gdW5pdFxuICAgICAgOyBpZCA6ICgnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZSkgQ29yZS5UeXBlX2VxdWFsLklkLnRcbiAgICAgIH1cbiAgICAgIC0+IHRcblxubGV0IGdlbmVyaWNfaG9vayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJHZW5lcmljSG9va1wiKSlcblxubGV0IG1ha2VfaG9vayB+Y29tYmluZV9pbnB1dHMgfmluaXQgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpIH51cGRhdGUgfmRlc3Ryb3kgfmlkID1cbiAgVCB7IGluaXQ7IGNvbWJpbmVfaW5wdXRzOyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfVxuOztcblxubGV0IHBhY2sgKFQgeyBpbml0OyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQ7IF8gfSkgPVxuICBsZXQgd3JhcCBhID0gYSB8PiBKcy53cmFwX2NhbGxiYWNrIHw+IEpzLlVuc2FmZS5pbmplY3QgaW5cbiAgbGV0IGluaXQgPSB3cmFwIChpbml0IGlucHV0KSBpblxuICBsZXQgdXBkYXRlID0gd3JhcCAodXBkYXRlIGlucHV0KSBpblxuICBsZXQgZGVzdHJveSA9IHdyYXAgZGVzdHJveSBpblxuICBsZXQgZ2VuZXJpY19ob29rID0gTGF6eS5mb3JjZSBnZW5lcmljX2hvb2sgaW5cbiAgbGV0IGV4dHJhID0gRXh0cmEuVCB7IHR5cGVfaWQgPSBpbnB1dF9pZDsgdmFsdWUgPSBpbnB1dCB9IGluXG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIGdlbmVyaWNfaG9va1xuICAgIFt8IGluaXQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfD4gSnMuVW5zYWZlLmluamVjdDsgZXh0cmEgfD4gSnMuVW5zYWZlLmluamVjdCB8XVxuOztcblxubGV0IGNvbWJpbmUgKFQgbGVmdCkgKFQgcmlnaHQpID1cbiAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbGVmdC5pbnB1dF9pZCByaWdodC5pbnB1dF9pZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGVwcmludF9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJob29rcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLCBzbyB0aGV5IGNhbm5vdCBiZSBjb21iaW5lZDsgdGFraW5nIHRoZSBzZWNvbmQgXFxcbiAgICAgICAgIG9mIHRoZSB0d29cIl07XG4gICAgVCByaWdodFxuICB8IFNvbWUgVCAtPiBUIHsgcmlnaHQgd2l0aCBpbnB1dCA9IHJpZ2h0LmNvbWJpbmVfaW5wdXRzIGxlZnQuaW5wdXQgcmlnaHQuaW5wdXQgfVxuOztcblxubW9kdWxlIE1ha2UgKFMgOiBTKSA9IHN0cnVjdFxuICBsZXQgaW5wdXRfYW5kX3N0YXRlX2lkID1cbiAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIChmdW4gKGlucHV0LCBfYW5pbWF0aW9uX2lkLCBzdGF0ZSkgLT5cbiAgICAgIFslc2V4cF9vZjogUy5JbnB1dC50ICogb3BhcXVlXSAoaW5wdXQsIHN0YXRlKSlcbiAgOztcblxuICBsZXQgaW5wdXRfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIFMuSW5wdXQuc2V4cF9vZl90XG5cbiAgbGV0IGluaXQgaW5wdXQgZWxlbWVudCA9XG4gICAgbGV0IHN0YXRlID0gUy5pbml0IGlucHV0IGVsZW1lbnQgaW5cbiAgICBsZXQgYW5pbWF0aW9uX2lkID1cbiAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIChmdW4gXyAtPiBTLm9uX21vdW50IGlucHV0IHN0YXRlIGVsZW1lbnQpXG4gICAgaW5cbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgaW5wdXQgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgUy51cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmlucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgZGVzdHJveSAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGFuaW1hdGlvbl9pZDtcbiAgICBTLmRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnRcbiAgOztcblxuICBsZXQgY3JlYXRlIGlucHV0ID1cbiAgICBtYWtlX2hvb2tcbiAgICAgIH5leHRyYTooaW5wdXQsIGlucHV0X2lkKVxuICAgICAgfmNvbWJpbmVfaW5wdXRzOlMuSW5wdXQuY29tYmluZVxuICAgICAgfmlkOmlucHV0X2FuZF9zdGF0ZV9pZFxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGVcbiAgICAgIH5kZXN0cm95XG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHR5cGVfaWQgPSBpbnB1dF9pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4dHJhID0gRXh0cmFcbmVuZFxuIiwib3BlbiEgSnNfb2Zfb2NhbWxcbm9wZW4hIEpzXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gbWFwID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHNldCA6ICdhIC0+ICdiIC0+IHVuaXQgbWV0aFxuICBtZXRob2QgZ2V0IDogJ2EgLT4gJ2IgT3B0ZGVmLnQgbWV0aFxuICBtZXRob2QgZGVsZXRlIDogJ2EgLT4gdW5pdCBtZXRoXG5lbmRcblxudHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgbWFwIEpzLnRcblxubGV0IG1hcCA6IHVuaXQgLT4gKCdhLCAnYikgbWFwIEpzLnQgSnMuY29uc3RyID0gZnVuICgpIC0+IFVuc2FmZS5nbG9iYWwjIy5fTWFwXG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgbWFwID0gbWFwICgpIGluXG4gIG5ldyVqcyBtYXBcbjs7XG5cbmxldCBzZXQgdCBhIGIgPSB0IyNzZXQgYSBiXG5sZXQgZ2V0IHQgYSA9IEpzLk9wdGRlZi50b19vcHRpb24gKHQjI2dldCBhKVxubGV0IGRlbGV0ZSB0IGEgPSB0IyNkZWxldGUgYVxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBKc19vYmplY3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSnMuVW5zYWZlLmFueVxuXG4gIGxldCBlbXB0eV9vYmogKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cbiAgbGV0IHNldF9wcm9wX2FzY2lpIHQgbmFtZSB2YWx1ZSA9IEpzLlVuc2FmZS5zZXQgdCAoSnMuc3RyaW5nIG5hbWUpIHZhbHVlXG4gIGxldCBnZXRfcHJvcF9hc2NpaSB0IG5hbWUgPSBKcy5VbnNhZmUuZ2V0IHQgKEpzLnN0cmluZyBuYW1lKVxuICBsZXQgaGFzX3Byb3BlcnR5IHQgbmFtZSA9IEpzLk9wdGRlZi50ZXN0IChKcy5VbnNhZmUuZ2V0IHQgKEpzLnN0cmluZyBuYW1lKSlcbiAgbGV0IGlzX3VuZGVmaW5lZCBhID0gbm90IChKcy5PcHRkZWYudGVzdCBhKVxuZW5kXG5cbm1vZHVsZSBBdHRycyA9IHN0cnVjdFxuICB0eXBlIHQgPSBKc19vYmplY3QudFxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID0gSnNfb2JqZWN0LmVtcHR5X29iaiAoKVxuXG4gIGxldCBzZXRfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT4gSnNfb2JqZWN0LnNldF9wcm9wX2FzY2lpIHQgbmFtZSB2YWx1ZVxuICA7O1xuXG4gIGxldCBoYXNfcHJvcGVydHkgOiB0IC0+IHN0cmluZyAtPiBib29sID0gSnNfb2JqZWN0Lmhhc19wcm9wZXJ0eVxuXG4gIGxldCBoYXNfYXR0cmlidXRlIHQgbmFtZSA9XG4gICAgSnNfb2JqZWN0Lmhhc19wcm9wZXJ0eSB0IFwiYXR0cmlidXRlc1wiXG4gICAgJiYgSnNfb2JqZWN0Lmhhc19wcm9wZXJ0eSAoSnNfb2JqZWN0LmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIG5hbWVcbiAgOztcblxuICBsZXQgc2V0X2F0dHJpYnV0ZSA6IHQgLT4gc3RyaW5nIC0+IHQgLT4gdW5pdCA9XG4gICAgZnVuIHQgbmFtZSB2YWx1ZSAtPlxuICAgICAgaWYgSnNfb2JqZWN0LmlzX3VuZGVmaW5lZCAoSnNfb2JqZWN0LmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpXG4gICAgICB0aGVuIEpzX29iamVjdC5zZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiIChKc19vYmplY3QuZW1wdHlfb2JqICgpKTtcbiAgICAgIEpzX29iamVjdC5zZXRfcHJvcF9hc2NpaSAoSnNfb2JqZWN0LmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIG5hbWUgdmFsdWVcbiAgOztcbmVuZFxuXG50eXBlIHZpcnR1YWxfZG9tX25vZGVcbnR5cGUgdmlydHVhbF9kb21fcGF0Y2hcblxubW9kdWxlIFZpcnR1YWxfZG9tID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgdmlydHVhbF9kb20gPSBvYmplY3RcbiAgICBtZXRob2QgX1ZOb2RlIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudFxuICAgICAgIC0+IEF0dHJzLnRcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZlxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudClcbiAgICAgICAgSnMuY29uc3RyXG4gICAgICAgIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfVlRleHQgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudCkgSnMuY29uc3RyIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjcmVhdGVFbGVtZW50IDogdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgZGlmZiA6XG4gICAgICB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IC0+IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHBhdGNoIDpcbiAgICAgIERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2aXJ0dWFsX2RvbV9wYXRjaCBKcy50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2Qgc3ZnIDpcbiAgICAgIChKcy5qc19zdHJpbmcgSnMudFxuICAgICAgIC0+IEF0dHJzLnRcbiAgICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZlxuICAgICAgIC0+IHZpcnR1YWxfZG9tX25vZGUgSnMudClcbiAgICAgICAgSnMuY29uc3RyXG4gICAgICAgIEpzLnJlYWRvbmx5X3Byb3BcbiAgZW5kXG5cbiAgbGV0IHZpcnR1YWxfZG9tIDogdmlydHVhbF9kb20gSnMudCA9IEpzLlVuc2FmZS5nbG9iYWwgIyMuIFZpcnR1YWxEb21cbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICBvcGVuIFZpcnR1YWxfZG9tXG5cbiAgdHlwZSB0ID0gdmlydHVhbF9kb21fbm9kZSBKcy50XG5cbiAgbGV0IHRvX2RvbSA6IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgPVxuICAgIGZ1biB2bm9kZSAtPiB2aXJ0dWFsX2RvbSMjY3JlYXRlRWxlbWVudCB2bm9kZVxuICA7O1xuXG4gIGxldCBub2RlXG4gICAgOiAgc3RyaW5nIC0+IEF0dHJzLnQgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gc3RyaW5nIG9wdGlvblxuICAgICAgLT4gdmlydHVhbF9kb21fbm9kZSBKcy50XG4gICAgPVxuICAgIGZ1biB0YWcgYXR0cnMgY2hpbGRyZW4ga2V5IC0+XG4gICAgICBsZXQgdGFnID0gSnMuc3RyaW5nIHRhZyBpblxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIG1hdGNoIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBKcy5PcHRkZWYuZW1wdHlcbiAgICAgICAgfCBTb21lIGtleSAtPiBKcy5PcHRkZWYucmV0dXJuIChKc19vZl9vY2FtbC5Kcy5zdHJpbmcga2V5KVxuICAgICAgaW5cbiAgICAgIGxldCB2bm9kZSA9IHZpcnR1YWxfZG9tIyMuX1ZOb2RlIGluXG4gICAgICBuZXclanMgdm5vZGUgdGFnIGF0dHJzIGNoaWxkcmVuIGtleVxuICA7O1xuXG4gIGxldCBzdmdcbiAgICA6ICBzdHJpbmcgLT4gQXR0cnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnRcbiAgICA9XG4gICAgZnVuIHRhZyBhdHRycyBjaGlsZHJlbiBrZXkgLT5cbiAgICAgIGxldCB0YWcgPSBKcy5zdHJpbmcgdGFnIGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgbWF0Y2gga2V5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEpzLk9wdGRlZi5lbXB0eVxuICAgICAgICB8IFNvbWUga2V5IC0+IEpzLk9wdGRlZi5yZXR1cm4gKEpzLnN0cmluZyBrZXkpXG4gICAgICBpblxuICAgICAgbGV0IHZzdmcgPSB2aXJ0dWFsX2RvbSMjLnN2ZyBpblxuICAgICAgbmV3JWpzIHZzdmcgdGFnIGF0dHJzIGNoaWxkcmVuIGtleVxuICA7O1xuXG4gIGxldCB0ZXh0IHMgPVxuICAgIGxldCB2dGV4dCA9IHZpcnR1YWxfZG9tIyMuX1ZUZXh0IGluXG4gICAgbmV3JWpzIHZ0ZXh0IChKcy5zdHJpbmcgcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgb3BlbiBWaXJ0dWFsX2RvbVxuXG4gIHR5cGUgdCA9IHZpcnR1YWxfZG9tX3BhdGNoIEpzLnRcblxuICBsZXQgZGlmZiA6IHZpcnR1YWxfZG9tX25vZGUgSnMudCAtPiB2aXJ0dWFsX2RvbV9ub2RlIEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCA9XG4gICAgZnVuIGEgYiAtPiB2aXJ0dWFsX2RvbSMjZGlmZiBhIGJcbiAgOztcblxuICBsZXQgcGF0Y2ggOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gdmlydHVhbF9kb21fcGF0Y2ggSnMudCAtPiBEb21faHRtbC5lbGVtZW50IEpzLnQgPVxuICAgIGZ1biBlbGVtZW50IHZub2RlIC0+IHZpcnR1YWxfZG9tIyNwYXRjaCBlbGVtZW50IHZub2RlXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cHJldmlvdXMgfmN1cnJlbnQgPSBkaWZmIHByZXZpb3VzIGN1cnJlbnRcbiAgbGV0IGFwcGx5ID0gcGF0Y2hcblxuICBsZXQgaXNfZW1wdHkgOiB0IC0+IGJvb2wgPVxuICAgIGxldCBmID1cbiAgICAgIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICAgICAge2pzfFxuICAgICAgICAoZnVuY3Rpb24gKHBhdGNoKSB7XG4gICAgICAgICAgZm9yICh2YXIga2V5IGluIHBhdGNoKSB7XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSAnYScpIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgfGpzfVxuICAgIGluXG4gICAgZnVuICh0IDogdCkgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIGYgW3wgSnMuVW5zYWZlLmluamVjdCB0IHxdIHw+IEpzLnRvX2Jvb2xcbiAgOztcbmVuZFxuXG5tb2R1bGUgV2lkZ2V0ID0gc3RydWN0XG4gIGNsYXNzIHR5cGUgWydzLCAnZWxlbWVudF0gd2lkZ2V0ID0gb2JqZWN0XG4gICAgY29uc3RyYWludCAnZWxlbWVudCA9ICNEb21faHRtbC5lbGVtZW50IEpzLnRcbiAgICBtZXRob2QgdHlwZV8gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgKCogdmlydHVhbC1kb20gY29uc2lkZXJzIHR3byB3aWRnZXRzIG9mIGJlaW5nIG9mIHRoZSBzYW1lIFwia2luZFwiIGlmIGVpdGhlclxuICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgaG9sZHM6XG5cbiAgICAgICAxLiBUaGV5IGJvdGggaGF2ZSBhIFwibmFtZVwiIGF0dHJpYnV0ZSBhbmQgdGhlaXIgXCJpZFwiIGZpZWxkcyBhcmUgZXF1YWwuXG4gICAgICAgKEkgdGhpbmsgdGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB2aXJ0dWFsLWRvbSBhbmQgaGF2ZSBmaWVsZCBhbiBpc3N1ZVxuICAgICAgIG9uIGdpdGh1YjogW2h0dHBzOi8vZ2l0aHViLmNvbS9NYXR0LUVzY2gvdmlydHVhbC1kb20vaXNzdWVzLzM4MF0pXG5cbiAgICAgICAyLiBUaGVpciBbaW5pdF0gbWV0aG9kcyBhcmUgXCI9PT1cIiBlcXVhbC4gVGhpcyBpcyB0cnVlIHdoZW4gdXNpbmcgdmlydHVhbC1kb21cbiAgICAgICB3aWRnZXRzIGluIHRoZSB1c3VhbCBzdHlsZSBpbiBKYXZhc2NyaXB0LCBzaW5jZSB0aGUgW2luaXRdIG1ldGhvZCB3aWxsIGJlIGRlZmluZWRcbiAgICAgICBvbiBhIHByb3RvdHlwZSwgYnV0IGlzIG5vdCB0cnVlIGluIHRoaXMgYmluZGluZyBhcyBpdCBpcyByZWRlZmluZWQgZm9yIGVhY2hcbiAgICAgICBjYWxsIHRvIFt3aWRnZXRdLlxuXG4gICAgICAgU28sIHdlIGdvIHdpdGggb3B0aW9uIDEgYW5kIG11c3QgaGF2ZSBhIHRyaXZpYWwgZmllbGQgY2FsbGVkIFtuYW1lXS5cbiAgICAqKVxuICAgIG1ldGhvZCBuYW1lIDogdW5pdCBKcy53cml0ZW9ubHlfcHJvcFxuICAgIG1ldGhvZCBpZCA6ICgncyAqICdlbGVtZW50KSBUeXBlX2VxdWFsLklkLnQgSnMucHJvcFxuICAgIG1ldGhvZCBzdGF0ZSA6ICdzIEpzLnByb3BcbiAgICBtZXRob2QgdmRvbUZvclRlc3RpbmcgOiBOb2RlLnQgTGF6eS50IG9wdGlvbiBKcy5wcm9wXG4gICAgbWV0aG9kIGluZm8gOiBTZXhwLnQgTGF6eS50IG9wdGlvbiBKcy5wcm9wXG4gICAgbWV0aG9kIGRlc3Ryb3kgOiAoJ2VsZW1lbnQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCB1cGRhdGUgOlxuICAgICAgKCgnb3RoZXJfc3RhdGUsICdvdGhlcl9lbGVtZW50KSB3aWRnZXQgSnMudCAtPiAnZWxlbWVudCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2tcbiAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpbml0IDogKHVuaXQgLT4gJ2VsZW1lbnQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG4gIGVuZFxuXG4gICgqIFdlIG1vZGVsIEpTIGxldmVsIG9iamVjdHMgaGVyZSBzbyB0aGVyZSBpcyBhIGxvdCBvZiB0aHJvd2luZyBhd2F5IG9mIHR5cGVcbiAgICAgaW5mb3JtYXRpb24uICBXZSBjb3VsZCBwb3NzaWJseSB0cnkgdG8gcmVkaXNjb3ZlciBtb3JlIG9mIGl0LiAgT3IgbWF5YmUgd2VcbiAgICAgc2hvdWxkIHNlZSBpZiB3ZSBjYW4gZ2V0IHJpZCBXaWRnZXQgY29tcGxldGVseS5cbiAgICAgdGhlIHVuaXQgdHlwZSBwYXJhbWV0ZXJzIGhlcmUgYXJlIG5vdCBhY3R1YWxseSB1bml0LCBidXQgcGFydCBvZlxuICAgICB0aGUgdHlwZSBpbmZvIHdlIGhhdmUgdGhyb3duIGF3YXkgaW50byBvdXIgZGFuY2VcbiAgICAgd2l0aCBKUyAqKVxuICB0eXBlIHQgPSBOb2RlLnRcblxuICAoKiBoZXJlIGlzIGhvdyB3ZSB0aHJvdyBhd2F5IHR5cGUgaW5mb3JtYXRpb24uICBPdXIgZ29vZCBvbGQgZnJpZW5kIE9iai5tYWdpYyxcbiAgICAgYnV0IGNvbnN0cmFpbmVkIGEgbGl0dGxlIGJpdCAqKVxuICBsZXQgbm9kZV9vZl93aWRnZXQgOiAoXywgXykgd2lkZ2V0IEpzLnQgLT4gTm9kZS50ID0gU3RkbGliLk9iai5tYWdpY1xuXG4gIG1vZHVsZSBTdGF0ZV9rZWVwZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIGJveCA9IFQgOiAoJ2EgKiBfKSBUeXBlX2VxdWFsLklkLnQgKiAnYSAtPiBib3hcblxuICAgIGxldCB0IDogKEpzLlVuc2FmZS5hbnksIGJveCkgSnNfbWFwLnQgPSBKc19tYXAuY3JlYXRlICgpXG4gICAgbGV0IHNldCB+aWQgZWxlbWVudCBzdGF0ZSA9IEpzX21hcC5zZXQgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KSAoVCAoaWQsIHN0YXRlKSlcblxuICAgIGxldCBnZXQgOiB0eXBlIGEgYi4gaWQ6KGEgKiBiKSBUeXBlX2VxdWFsLklkLnQgLT4gXyAtPiBhID1cbiAgICAgIGZ1biB+aWQgZWxlbWVudCAtPlxuICAgICAgbGV0IGVsZW1lbnQgPSBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQgaW5cbiAgICAgIG1hdGNoIEpzX21hcC5nZXQgdCBlbGVtZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgaWRfc2V4cCA9IFR5cGVfZXF1YWwuSWQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCI8b3BhcXVlPlwiKSBpZCBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogZWxlbWVudCBzdGF0ZSBub3QgZm91bmRcIiAoaWRfc2V4cCA6IFNleHAudCldXG4gICAgICB8IFNvbWUgKFQgKGZfaWQsIHN0YXRlKSkgLT5cbiAgICAgICAgbGV0IFQgPSBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gaWQgZl9pZCBpblxuICAgICAgICBzdGF0ZVxuICAgIDs7XG5cbiAgICBsZXQgZGVsZXRlIGVsZW1lbnQgPSBKc19tYXAuZGVsZXRlIHQgKEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudClcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICAodHlwZSBzKVxuICAgICAgICA/KHZkb21fZm9yX3Rlc3RpbmcgOiBOb2RlLnQgTGF6eS50IG9wdGlvbilcbiAgICAgICAgPyhkZXN0cm95IDogcyAtPiAnZWxlbWVudCAtPiB1bml0ID0gZnVuIF8gXyAtPiAoKSlcbiAgICAgICAgPyh1cGRhdGUgOiBzIC0+ICdlbGVtZW50IC0+IHMgKiAnZWxlbWVudCA9IGZ1biBzIGVsdCAtPiBzLCBlbHQpXG4gICAgICAgIH4oaWQgOiAocyAqICdlbGVtZW50KSBUeXBlX2VxdWFsLklkLnQpXG4gICAgICAgIH4oaW5pdCA6IHVuaXQgLT4gcyAqICdlbGVtZW50KVxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb2JqIDogKHMsIF8pIHdpZGdldCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgb2JqIyMudHlwZV8gOj0gSnMuc3RyaW5nIFwiV2lkZ2V0XCI7XG4gICAgb2JqIyMubmFtZSA6PSAoKTtcbiAgICBvYmojIy5pZCA6PSBpZDtcbiAgICBvYmojIy52ZG9tRm9yVGVzdGluZyA6PSB2ZG9tX2Zvcl90ZXN0aW5nO1xuICAgIG9iaiMjLmluaXRcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBzMCwgZG9tX25vZGUgPSBpbml0ICgpIGluXG4gICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZSBzMDtcbiAgICAgIGRvbV9ub2RlKTtcbiAgICBvYmojIy51cGRhdGVcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJldiBkb21fbm9kZSAtPlxuICAgICAgKCogVGhlIFt1cGRhdGVdIG1ldGhvZCBvZiBbb2JqXSBpcyBvbmx5IGNhbGxlZCBieSB2aXJ0dWFsLWRvbSBhZnRlciBpdCBoYXMgY2hlY2tlZFxuICAgICAgICAgdGhhdCB0aGUgW2lkXXMgb2YgW3ByZXZdIGFuZCBbb2JqXSBhcmUgXCI9PT1cIiBlcXVhbC4gVGh1cyBbc2FtZV93aXRuZXNzX2V4bl0gd2lsbFxuICAgICAgICAgbmV2ZXIgcmFpc2UuICopXG4gICAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gcHJldiMjLmlkIGlkIHdpdGhcbiAgICAgIHwgVHlwZV9lcXVhbC5UIC0+XG4gICAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgICAgbGV0IHN0YXRlJywgZG9tX25vZGUnID0gdXBkYXRlIHByZXZfc3RhdGUgZG9tX25vZGUgaW5cbiAgICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZTtcbiAgICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUnIHN0YXRlJztcbiAgICAgICAgZG9tX25vZGUnKTtcbiAgICBvYmojIy5kZXN0cm95XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGRvbV9ub2RlIC0+XG4gICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICBkZXN0cm95IHByZXZfc3RhdGUgZG9tX25vZGU7XG4gICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlKTtcbiAgICBub2RlX29mX3dpZGdldCBvYmpcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIFZkb21fcmF3ID0gUmF3XG5cbmxldCAoKSA9XG4gICgqIHVzZSB0aGUgbmF0aXZlLWphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgZmxvYXQgLT4gc3RyaW5nIHdpdGggYSBmaXhlZCBudW1iZXIgb2ZcbiAgICAgbnVtYmVycyBhZnRlciB0aGUgZGVjaW1hbCBwbGFjZS4gKilcbiAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbjs7XG5cbigqKiBUaGlzIGhhcyAzIGtpbmRzIG9mIGNvbnN0cnVjdG9ycy5cbiAgICB7dlxuICAgICAgLSBjb25zdHJ1Y3RvcnMgZm9yIHByb3BlcnRpZXMgLyBhdHRyaWJ1dGVzIGZvciB3aGljaCB3ZVxuICAgICAgICBoYXZlIHdyaXR0ZW4gZmlyc3QgY2xhc3Mgb2NhbWwgcmVwcmVzZW50YXRpb25zIChzbyBmYXIgb25seSBTdHlsZSxcbiAgICAgICAgQ2xhc3MsIGFuZCBIYW5kbGVyKVxuXG4gICAgICAtIFRob3NlIHdoaWNoIHdlIGltbWVkaWF0ZWx5IGNvbnZlcnQgaW50byBKcyBjYWxsZWQgUmF3LCB3aGljaFxuICAgICAgICBpbiB0dXJuIGhhcyB0d28gY2FzZXM6XG4gICAgICAgIC0gUHJvcGVydHkgZm9yIHByb3BlcnRpZXMgb24gdGhlIERPTVxuICAgICAgICAtIEF0dHJpYnV0ZSBmb3IgYXR0cmlidXRlcyBvbiB0aGUgRE9NXG5cbiAgICAgIC0gSG9va3MsIHdoaWNoIHJlZ2lzdGVyIGNhbGxiYWNrcyBvbiBwcm9wZXJ0eSBhZGRpdGlvbiBhbmQgcmVtb3ZhbC5cbiAgICB2fVxuXG4gICAgR2VuZXJhbGx5IHNwZWFraW5nIG9uZSBzaG91bGQgYXZvaWQgY3JlYXRpbmcgYSBwcm9wZXJ0eSBvciBhdHRyaWJ1dGVcbiAgICBmb3Igc29tZXRoaW5nIGZvciB3aGljaCB3ZSBoYXZlIGEgZmlyc3QgY2xhc3MgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5tb2R1bGUgRXZlbnRfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVCA6XG4gICAgICAgIHsgdHlwZV9pZCA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgICA7IGhhbmRsZXIgOiAoI0RvbV9odG1sLmV2ZW50IGFzICdhKSBKcy50IC0+IHVuaXQgVWlfZWZmZWN0LnRcbiAgICAgICAgfVxuICAgICAgICAtPiB0XG5cbiAgbGV0IGNvbWJpbmVcbiAgICAgICAgKFQgeyB0eXBlX2lkID0gbHRpZDsgaGFuZGxlciA9IGxoYW5kbGVyIH0pXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IHJ0aWQ7IGhhbmRsZXIgPSByaGFuZGxlciB9IGFzIHJpZ2h0KVxuICAgID1cbiAgICAoKiBJZiB0aGV5IGFyZSBub3QgdGhlIHNhbWUgd2l0bmVzcywgdGhlbiBpdCBpcyBhIGJ1ZyBpbiB2aXJ0dWFsX2RvbSwgc2luY2VcbiAgICAgICB3ZSBkbyBub3QgZXhwb3NlIFtvbl0gYW55bW9yZSB3aGljaCBtZWFucyB0aGlzIGxpYnJhcnkgY2FuIGRldGVybWluZWQgdGhlXG4gICAgICAgW1R5cGVfZXF1YWwuSWRdIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBldmVudC4gdmlydHVhbF9kb20gbWFpbnRhaW5zIHRoZVxuICAgICAgIGludmFyaWFudCB0aGF0IGFueSB0d28gZXZlbnRzIHdpdGggdGhlIHNhbWUgbmFtZSB3aWxsIHByb2R1Y2UgaGFuZGxlcnNcbiAgICAgICB0aGF0IGhhdmUgdGhlIHNhbWUgW1R5cGVfZXF1YWwuSWRdLiAqKVxuICAgIG1hdGNoIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzIGx0aWQgcnRpZCB3aXRoXG4gICAgfCBTb21lIFQgLT5cbiAgICAgIFRcbiAgICAgICAgeyB0eXBlX2lkID0gbHRpZFxuICAgICAgICA7IGhhbmRsZXIgPVxuICAgICAgICAgICAgKGZ1biB2YWx1ZSAtPlxuICAgICAgICAgICAgICAgRWZmZWN0LnNlcXVlbmNlX2FzX3NpYmxpbmcgKGxoYW5kbGVyIHZhbHVlKSB+dW5sZXNzX3N0b3BwZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICByaGFuZGxlciB2YWx1ZSkpXG4gICAgICAgIH1cbiAgICB8IE5vbmUgLT5cbiAgICAgIGVwcmludF9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiQlVHISAgVHlwZS1pZHMgZm9yIGV2ZW50IGhhbmRsZXJzIGRpZmZlclwiXG4gICAgICAgICAgICAobHRpZCA6IF8gVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICAgICAgKHJ0aWQgOiBfIFR5cGVfZXF1YWwuSWQudCldO1xuICAgICAgcmlnaHRcbiAgOztcbmVuZFxuXG50eXBlIHQgPVxuICB8IFByb3BlcnR5IG9mXG4gICAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzIDogYm9vbFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHZhbHVlIDogSnMuVW5zYWZlLmFueVxuICAgICAgfVxuICB8IEF0dHJpYnV0ZSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBIYW5kbGVyIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaGFuZGxlciA6IEV2ZW50X2hhbmRsZXIudFxuICAgICAgfVxuICB8IEhvb2sgb2ZcbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyBob29rIDogSG9va3MudFxuICAgICAgfVxuICB8IFN0eWxlIG9mIENzc19nZW4udFxuICB8IENsYXNzIG9mIHN0cmluZyBsaXN0XG4gIHwgTWFueSBvZiB0IGxpc3RcbiAgfCBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIG9mXG4gICAgICB0IGxpc3QgKiAoQ3NzX2dlbi50IC0+IENzc19nZW4udCkgKiAoc3RyaW5nIGxpc3QgLT4gc3RyaW5nIGxpc3QpXG4gIHwgTWFueV93aXRob3V0X21lcmdlIG9mIHQgbGlzdFxuXG5sZXQgY3JlYXRlIG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0IG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2VcbiAgICA7IG5hbWVcbiAgICA7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoRG9tX2Zsb2F0LnRvX2pzX3N0cmluZyB2YWx1ZSlcbiAgICB9XG47O1xuXG5sZXQgcHJvcGVydHkgbmFtZSB2YWx1ZSA9IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgfVxuXG5sZXQgc3RyaW5nX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBib29sX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5ib29sIHZhbHVlKSB9XG47O1xuXG5sZXQgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmdW5jdGlvblxuICB8IEF0dHJpYnV0ZSBhdHRyaWJ1dGUgLT4gQXR0cmlidXRlIHsgYXR0cmlidXRlIHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCBQcm9wZXJ0eSBwcm9wZXJ0eSAtPiBQcm9wZXJ0eSB7IHByb3BlcnR5IHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjcmVhdGVfaG9vayBuYW1lIGhvb2sgPSBIb29rIHsgbmFtZTsgaG9vayB9XG5sZXQgbWFueSBhdHRycyA9IE1hbnkgYXR0cnNcbmxldCBtYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgPSBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnNcbmxldCBlbXB0eSA9IE1hbnkgW11cbmxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBNYW55IFsgbGVmdDsgcmlnaHQgXVxubGV0ICggQCApID0gY29tYmluZVxuXG5tb2R1bGUgVW5tZXJnZWRfd2FybmluZ19tb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb193YXJuaW5nc1xuICAgIHwgQWxsX3dhcm5pbmdzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIG9mIGludFxuXG4gIGxldCB3YXJuaW5nX2NvdW50ID0gcmVmIDBcbiAgbGV0IGN1cnJlbnQgPSByZWYgKFN0b3BfYWZ0ZXJfcXVvdGEgMTAwKVxuXG4gIGxldCB3YXJuX3MgcyA9XG4gICAgaW5jciB3YXJuaW5nX2NvdW50O1xuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vX3dhcm5pbmdzIC0+ICgpXG4gICAgfCBBbGxfd2FybmluZ3MgLT4gZXByaW50X3Mgc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBxdW90YSAtPlxuICAgICAgbGV0IHdhcm5pbmdfY291bnQgPSAhd2FybmluZ19jb3VudCBpblxuICAgICAgaWYgd2FybmluZ19jb3VudCA8PSBxdW90YVxuICAgICAgdGhlbiAoXG4gICAgICAgIGVwcmludF9zIHM7XG4gICAgICAgIGlmIHdhcm5pbmdfY291bnQgPSBxdW90YVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZXByaW50X3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIldBUk5JTkc6IHJlYWNoZWQgd2FybmluZyBtZXNzYWdlIHF1b3RhOyBubyBtb3JlIG1lc3NhZ2VzIHdpbGwgYmUgcHJpbnRlZFwiXG4gICAgICAgICAgICAgICAgKHF1b3RhIDogaW50KV0pXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHJlc2V0X3dhcm5pbmdfY291bnQgKCkgPSB3YXJuaW5nX2NvdW50IDo9IDBcbiAgZW5kXG5lbmRcblxudHlwZSBtZXJnZSA9XG4gIHsgc3R5bGVzIDogQ3NzX2dlbi50XG4gIDsgY2xhc3NlcyA6IHN0cmluZyBsaXN0XG4gIDsgaGFuZGxlcnMgOiBFdmVudF9oYW5kbGVyLnQgTWFwLk0oU3RyaW5nKS50XG4gIDsgaG9va3MgOiBIb29rcy50IE1hcC5NKFN0cmluZykudFxuICB9XG5cbmxldCBjb21iaW5pbmdfbWFwX2FkZCBtYXAga2V5IHZhbHVlIH5jb21iaW5lID1cbiAgTWFwLnVwZGF0ZSBtYXAga2V5IH5mOihmdW5jdGlvblxuICAgIHwgU29tZSBleGlzdGluZ192YWx1ZSAtPiBjb21iaW5lIH5rZXkgZXhpc3RpbmdfdmFsdWUgdmFsdWVcbiAgICB8IE5vbmUgLT4gdmFsdWUpXG47O1xuXG5sZXQgZW1wdHlfbWVyZ2UgPVxuICB7IHN0eWxlcyA9IENzc19nZW4uZW1wdHlcbiAgOyBjbGFzc2VzID0gW11cbiAgOyBoYW5kbGVycyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBob29rcyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgfVxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbGV0IGF0dHJzID0gWyBhdHRyIF0gaW5cbiAgKCogV2hlbiBpbnB1dCBlbGVtZW50cyBoYXZlIHRoZWlyIHZhbHVlIHNldCB0byB3aGF0IGl0IGFscmVhZHkgaXNcbiAgICAgdGhlIGN1cnNvciBnZXRzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGV2ZW4gd2hlbiB0aGUgdXNlclxuICAgICBpcyBlZGl0aW5nIGluIHRoZSBtaWRkbGUuIFNvZnRTZXRIb29rIChmcm9tIC4vc29mdC1zZXQtaG9vay5qcylcbiAgICAgY29tcGFyZXMgYmVmb3JlIHNldHRpbmcsIGF2b2lkaW5nIHRoZSBwcm9ibGVtIGp1c3QgbGlrZSBpblxuICAgICBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvOTQ3ZWNmOTJiNjdkMjViYjY5M2EwZjYyNWZhOGU5MGMwOTk4ODdkNS92aXJ0dWFsLWh5cGVyc2NyaXB0L2luZGV4LmpzI0w0My1MNTFcblxuICAgICBub3RlIHRoYXQgRWxtJ3MgdmlydHVhbC1kb20gaW5jbHVkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGlzIHNvXG4gICAgIGlmIHdlIHN3aXRjaCB0byB0aGF0IHRoZSB3b3JrYXJvdW5kIGhlcmUgd2lsbCBiZSB1bm5lY2Vzc2FyeS5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL2VsbS1sYW5nL3ZpcnR1YWwtZG9tL2Jsb2IvMTdiMzBmYjdkZTQ4NjcyNTY1ZDYyMjdkMzNjMDE3NmYwNzU3ODZkYi9zcmMvTmF0aXZlL1ZpcnR1YWxEb20uanMjTDQzNC1MNDM5XG4gICopXG4gIGxldCBhdHRyc19vYmogOiBWZG9tX3Jhdy5BdHRycy50ID0gVmRvbV9yYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICgqIFt0YWtlX3NlY29uZF8qXSBpcyB0aGUgdHJpdmlhbCBtZXJnZSBmdW5jdGlvbiAoaS5lLiBubyBtZXJnZSBhdCBhbGwpOyBpdFxuICAgICB0YWtlcyB0d28gYXR0cmlidXRlcyBvZiB0aGUgc2FtZSBraW5kLCBpZ25vcmVzIGEgZmlyc3QsIGFuZCBlbWl0c1xuICAgICBhIHdhcm5pbmcgaWYgW3dhcm5fYWJvdXRfdW5tZXJnZWRfYXR0cmlidXRlc10gaXMgZW5hYmxlZC4gKilcbiAgbGV0IHRha2Vfc2Vjb25kX3N0eWxlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBzdHlsZXNcIiAoZmlyc3QgOiBDc3NfZ2VuLnQpIChzZWNvbmQgOiBDc3NfZ2VuLnQpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2NsYXNzZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKExpc3QuaXNfZW1wdHkgZmlyc3QpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgZmlyc3QgPSBMaXN0LnNvcnQgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddIGZpcnN0IGluXG4gICAgICBsZXQgc2Vjb25kID0gTGlzdC5zb3J0IH5jb21wYXJlOlslY29tcGFyZTogc3RyaW5nXSBzZWNvbmQgaW5cbiAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGNsYXNzZXNcIiAoZmlyc3QgOiBzdHJpbmcgbGlzdCkgKHNlY29uZCA6IHN0cmluZyBsaXN0KV0pO1xuICAgIHNlY29uZFxuICBpblxuICBsZXQgdGFrZV9zZWNvbmRfaGFuZGxlciB+a2V5Om5hbWUgX2ZpcnN0IHNlY29uZCA9XG4gICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBoYW5kbGVyc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9ob29rIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgaG9va3NcIiAobmFtZSA6IHN0cmluZyldO1xuICAgIHNlY29uZFxuICBpblxuICAoKiBXZSBtZXJnZSBhdHRyaWJ1dGVzIHdoZW4gdGhleSBhcmUgd3JpdHRlbiB0byB0aGUgcmF3IGF0dHJpYnV0ZSBvYmplY3QsXG4gICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHVzZXItZmFjaW5nIG1lcmdlIGZ1bmN0aW9ucyAoW21hbnldLCBbY29tYmluZV0sIGFuZFxuICAgICBbQF0pIGFyZSBjYWxsZWQuIFRoaXMgc3RyYXRlZ3kgaXMgYmV0dGVyIGluIGJvdGggc3BlZWQgYW5kIG1lbW9yeSB1c2FnZSxcbiAgICAgc2luY2UgaXQgbWVhbnMgd2UgZG8gbm90IG5lZWQgdG8gY29uY2F0ZW5hdGUgdGhlIGxpc3Qgb2YgXCJ1bm1lcmdlYWJsZVwiXG4gICAgIGF0dHJpYnV0ZXMgKFByb3BlcnR5IGFuZCBBdHRyaWJ1dGUpOyBpbnN0ZWFkLCB3ZSBjYW4gaXRlcmF0ZSB0aHJvdWdoIHRoZVxuICAgICB0cmVlIG9mIGF0dHJpYnV0ZXMgYW5kIGVhZ2VybHkgd3JpdGUgdW5tZXJnZWFibGUgYXR0cmlidXRlcyB0byB0aGVcbiAgICAgYXR0cmlidXRlIG9iamVjdCBhcyB3ZSBmaW5kIHRoZW0uIElmIHR3byB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIGhhdmUgdGhlXG4gICAgIHNhbWUgbmFtZSwgdGhlIHNlY29uZCB3aWxsIHNpbXBseSBvdmVyd3JpdGUgdGhlIGZpcnN0LCBhcyBkZXNpcmVkLlxuXG4gICAgIEluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBleGlzdGluZyBiZWhhdmlvciBvZiB0aGUgW011bHRpXSBtb2R1bGUgKHRoYXQgaXMsXG4gICAgIGl0IG11c3QgYmUgcG9zc2libGUgdG8gbWVyZ2UgY2xhc3NlcyBhbmQgc3R5bGVzLCBidXQgbm90IGhvb2tzIGFuZFxuICAgICBoYW5kbGVycyksIHdlIGludHJvZHVjZSB0aGUgd29ya2Fyb3VuZCBjb25zdHJ1Y3RvclxuICAgICBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10uXG5cbiAgICAgVGhlcmUgYXJlIHRodXMgdGhyZWUgY2FzZXMgdGhhdCBlYWNoIGhhdmUgZGlmZmVyZW50IG1lcmdlIGJlaGF2aW9yczpcbiAgICAgLSBTaW1wbGUgbGlzdHMgLSBubyBtZXJnaW5nXG4gICAgIC0gTGlzdHMgd3JhcHBlZCBpbiBhIFtNYW55XSAtIG1lcmdlcyBjbGFzc2VzLCBzdHlsZXMsIGhvb2tzLCBhbmQgaGFuZGxlcnNcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXNdIC0gbWVyZ2VzIGNsYXNzZXMgYW5kIHN0eWxlc1xuXG4gICAgIFRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSBtYXRjaCBleHByZXNzaW9uIGxvZ2ljLCB3ZSBwYXJlbWV0ZXJpemUgaXQgYnkgdGhlXG4gICAgIG1lcmdpbmcgYmVoYXZpb3IsIHNpbmNlIFwibm8gbWVyZ2VcIiByZWFsbHkgbWVhbnMgXCJtZXJnZSBieSB0YWtpbmcgdGhlXG4gICAgIHNlY29uZCBvbmVcIi4gKilcbiAgbGV0IHJlYyBtZXJnZSB+Y29tYmluZV9ob29rIH5jb21iaW5lX2hhbmRsZXIgfmNvbWJpbmVfc3R5bGVzIH5jb21iaW5lX2NsYXNzZXMgYWNjID1cbiAgICBMaXN0LmZvbGQgfmluaXQ6YWNjIH5mOihmdW4gYWNjIGF0dHIgLT5cbiAgICAgIG1hdGNoIGF0dHIgd2l0aFxuICAgICAgfCBQcm9wZXJ0eSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgJiYgbm90IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIHByb3BlcnRpZXNcIiAobmFtZSA6IHN0cmluZyldO1xuICAgICAgICAobWF0Y2ggbmFtZSB3aXRoXG4gICAgICAgICB8IFwidmFsdWVcIiAtPlxuICAgICAgICAgICBsZXQgc29mdFNldEhvb2sgeCA6IEpzLlVuc2FmZS5hbnkgPSBKcy5VbnNhZmUuZ2xvYmFsICMjIFNvZnRTZXRIb29rIHggaW5cbiAgICAgICAgICAgbGV0IHZhbHVlID0gc29mdFNldEhvb2sgdmFsdWUgaW5cbiAgICAgICAgICAgVmRvbV9yYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInZhbHVlXCIgdmFsdWVcbiAgICAgICAgIHwgbmFtZSAtPiBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBuYW1lIHZhbHVlKTtcbiAgICAgICAgYWNjXG4gICAgICB8IEF0dHJpYnV0ZSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBhdHRyaWJ1dGVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgdmFsdWU7XG4gICAgICAgIGFjY1xuICAgICAgfCBTdHlsZSBuZXdfc3R5bGVzIC0+IHsgYWNjIHdpdGggc3R5bGVzID0gY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBuZXdfc3R5bGVzIH1cbiAgICAgIHwgQ2xhc3MgbmV3X2NsYXNzZXMgLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIG5ld19jbGFzc2VzIH1cbiAgICAgIHwgSG9vayB7IG5hbWU7IGhvb2sgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoIGhvb2tzID0gY29tYmluaW5nX21hcF9hZGQgYWNjLmhvb2tzIG5hbWUgaG9vayB+Y29tYmluZTpjb21iaW5lX2hvb2sgfVxuICAgICAgfCBIYW5kbGVyIHsgbmFtZTsgaGFuZGxlciB9IC0+XG4gICAgICAgIHsgYWNjIHdpdGhcbiAgICAgICAgICBoYW5kbGVycyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5oYW5kbGVycyBuYW1lIGhhbmRsZXIgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIH1cbiAgICAgIHwgTWFueSBhdHRycyAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazooZnVuIH5rZXk6XyAtPiBIb29rcy5jb21iaW5lKVxuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjooZnVuIH5rZXk6XyAtPiBFdmVudF9oYW5kbGVyLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOkNvcmUuKCBAIClcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlc1xuICAgICAgICA7IGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXNcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH1cbiAgICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIG1hcF9zdHlsZXMsIG1hcF9jbGFzc2VzKSAtPlxuICAgICAgICBsZXQgc3ViX21lcmdlID1cbiAgICAgICAgICBtZXJnZVxuICAgICAgICAgICAgfmNvbWJpbmVfaG9vazp0YWtlX3NlY29uZF9ob29rXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOnRha2Vfc2Vjb25kX2hhbmRsZXJcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6Q29yZS4oIEAgKVxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gbWFwX3N0eWxlcyAoY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzKVxuICAgICAgICA7IGNsYXNzZXMgPSBtYXBfY2xhc3NlcyAoY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzKVxuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlc1xuICAgICAgICA7IGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXNcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH0pXG4gIGluXG4gIGxldCBtZXJnZSA9XG4gICAgbWVyZ2VcbiAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgIGVtcHR5X21lcmdlXG4gICAgICBhdHRyc1xuICBpblxuICBNYXAuaXRlcmkgbWVyZ2UuaG9va3MgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6aG9vayAtPlxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKEhvb2tzLnBhY2sgaG9vaykpO1xuICBNYXAuaXRlcmkgbWVyZ2UuaGFuZGxlcnMgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6KEV2ZW50X2hhbmRsZXIuVCB7IGhhbmRsZXI7IF8gfSkgLT5cbiAgICBsZXQgZiBlID1cbiAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlIGUgKGhhbmRsZXIgZSk7XG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG4gICAgUmF3LkF0dHJzLnNldF9wcm9wZXJ0eSBhdHRyc19vYmogKFwib25cIiBeIG5hbWUpIChKcy5VbnNhZmUuaW5qZWN0IChEb20uaGFuZGxlciBmKSkpO1xuICBsZXQgKCkgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBtZXJnZS5zdHlsZXMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcHJvcHMgPSBDc3NfZ2VuLnRvX3N0cmluZ19saXN0IG1lcmdlLnN0eWxlcyBpblxuICAgICAgbGV0IG9iaiA9IFJhdy5BdHRycy5jcmVhdGUgKCkgaW5cbiAgICAgIExpc3QuaXRlciBwcm9wcyB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IG9iaiBrIChKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdikpKTtcbiAgICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwic3R5bGVcIiAob2JqIDo+IEpzLlVuc2FmZS5hbnkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgbWVyZ2UuY2xhc3Nlc1xuICAgIHRoZW4gKClcbiAgICBlbHNlXG4gICAgICBSYXcuQXR0cnMuc2V0X2F0dHJpYnV0ZVxuICAgICAgICBhdHRyc19vYmpcbiAgICAgICAgXCJjbGFzc1wiXG4gICAgICAgIChKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgbWVyZ2UuY2xhc3NlcyB+c2VwOlwiIFwiKSkpXG4gIGluXG4gIGF0dHJzX29ialxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbWF0Y2ggYXR0ciB3aXRoXG4gIHwgTWFueSBbXSB8IE1hbnlfd2l0aG91dF9tZXJnZSBbXSAtPiBSYXcuQXR0cnMuY3JlYXRlICgpXG4gIHwgYXR0ciAtPiB0b19yYXcgYXR0clxuOztcblxubGV0IHN0eWxlIGNzcyA9IFN0eWxlIGNzc1xubGV0IGNsYXNzXyBjbGFzc25hbWUgPSBDbGFzcyBbIGNsYXNzbmFtZSBdXG5sZXQgY2xhc3NlcycgY2xhc3NlcyA9IENsYXNzIChTZXQudG9fbGlzdCBjbGFzc2VzKVxubGV0IGNsYXNzZXMgY2xhc3NuYW1lcyA9IENsYXNzIGNsYXNzbmFtZXNcbmxldCBpZCBzID0gY3JlYXRlIFwiaWRcIiBzXG5sZXQgbmFtZSBzID0gY3JlYXRlIFwibmFtZVwiIHNcbmxldCBocmVmIHIgPSBjcmVhdGUgXCJocmVmXCIgclxubGV0IGxhYmVsIHIgPSBjcmVhdGUgXCJsYWJlbFwiIHJcbmxldCB0YXJnZXQgcyA9IGNyZWF0ZSBcInRhcmdldFwiIHNcbmxldCBjaGVja2VkID0gY3JlYXRlIFwiY2hlY2tlZFwiIFwiXCJcbmxldCBzZWxlY3RlZCA9IGNyZWF0ZSBcInNlbGVjdGVkXCIgXCJcIlxubGV0IGhpZGRlbiA9IGNyZWF0ZSBcImhpZGRlblwiIFwiXCJcbmxldCByZWFkb25seSA9IGNyZWF0ZSBcInJlYWRvbmx5XCIgXCJcIlxubGV0IGRpc2FibGVkID0gY3JlYXRlIFwiZGlzYWJsZWRcIiBcIlwiXG5sZXQgcGxhY2Vob2xkZXIgeCA9IGNyZWF0ZSBcInBsYWNlaG9sZGVyXCIgeFxuXG5sZXQgYXV0b2ZvY3VzID0gZnVuY3Rpb25cbiAgfCB0cnVlIC0+IGNyZWF0ZSBcImF1dG9mb2N1c1wiIFwiXCJcbiAgfCBmYWxzZSAtPiBlbXB0eVxuOztcblxubGV0IGZvcl8geCA9IGNyZWF0ZSBcImZvclwiIHhcbmxldCB0eXBlXyB4ID0gY3JlYXRlIFwidHlwZVwiIHhcbmxldCB2YWx1ZSB4ID0gY3JlYXRlIFwidmFsdWVcIiB4XG5sZXQgdmFsdWVfcHJvcCB4ID0gc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB4XG5sZXQgdGFiaW5kZXggeCA9IGNyZWF0ZSBcInRhYmluZGV4XCIgKEludC50b19zdHJpbmcgeClcbmxldCB0aXRsZSB4ID0gY3JlYXRlIFwidGl0bGVcIiB4XG5sZXQgYWx0IHggPSBjcmVhdGUgXCJhbHRcIiB4XG5sZXQgc3JjIHggPSBjcmVhdGUgXCJzcmNcIiB4XG5sZXQgb3Blbl8gPSBjcmVhdGUgXCJvcGVuXCIgXCJcIlxubGV0IHN0YXJ0IHggPSBjcmVhdGUgXCJzdGFydFwiIChJbnQudG9fc3RyaW5nIHgpXG5sZXQgbWluIHggPSBjcmVhdGVfZmxvYXQgXCJtaW5cIiB4XG5sZXQgbWF4IHggPSBjcmVhdGVfZmxvYXQgXCJtYXhcIiB4XG5sZXQgbWluX2RhdGUgeCA9IGNyZWF0ZSBcIm1pblwiIChEYXRlLnRvX3N0cmluZyB4KVxubGV0IG1heF9kYXRlIHggPSBjcmVhdGUgXCJtYXhcIiAoRGF0ZS50b19zdHJpbmcgeClcbmxldCBtaW5fZGF0ZV90aW1lIHggPSBjcmVhdGUgXCJtaW5cIiAoRGF0ZS50b19zdHJpbmcgeCBeIFwiVDAwOjAwXCIpXG5sZXQgbWF4X2RhdGVfdGltZSB4ID0gY3JlYXRlIFwibWF4XCIgKERhdGUudG9fc3RyaW5nIHggXiBcIlQyMzo1OVwiKVxubGV0IGNvbHNwYW4geCA9IGNyZWF0ZSBcImNvbHNwYW5cIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHJvd3NwYW4geCA9IGNyZWF0ZSBcInJvd3NwYW5cIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IGRyYWdnYWJsZSBiID0gY3JlYXRlIFwiZHJhZ2dhYmxlXCIgKEJvb2wudG9fc3RyaW5nIGIpXG5cbm1vZHVsZSBUeXBlX2lkID0gc3RydWN0XG4gICgqIFdlIHByb3ZpZGUgYSB0cml2aWFsIFt0b19zZXhwXSBmdW5jdGlvbiBzaW5jZSB3ZSBvbmx5IHdhbnRcbiAgICAgdG8gdW5pZnkgdHlwZSBpZHMgYW5kIG5vdCBjb252ZXJ0IHR5cGVzIHRvIGlkcyAqKVxuICBsZXQgY3JlYXRlIG5hbWUgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZSAoZnVuIF8gLT4gU2V4cGxpYi5TZXhwLkxpc3QgW10pXG4gIGxldCAoZXZlbnQgOiBEb21faHRtbC5ldmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZXZlbnRcIlxuICBsZXQgKGZvY3VzIDogRG9tX2h0bWwuZm9jdXNFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiZm9jdXNFdmVudFwiXG4gIGxldCAobW91c2UgOiBEb21faHRtbC5tb3VzZUV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJtb3VzZUV2ZW50XCJcbiAgbGV0IChrZXlib2FyZCA6IERvbV9odG1sLmtleWJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImtleWJvYXJkRXZlbnRcIlxuICBsZXQgKHN1Ym1pdCA6IERvbV9odG1sLnN1Ym1pdEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJzdWJtaXRFdmVudFwiXG4gIGxldCAobW91c2V3aGVlbCA6IERvbV9odG1sLm1vdXNld2hlZWxFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2V3aGVlbEV2ZW50XCJcblxuICBsZXQgKHdoZWVsIDogSnNfb2Zfb2NhbWxfcGF0Y2hlcy5Eb21faHRtbC53aGVlbEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPVxuICAgIGNyZWF0ZSBcIndoZWVsd2hlZWxFdmVudFwiXG4gIDs7XG5cbiAgbGV0IChjbGlwYm9hcmQgOiBEb21faHRtbC5jbGlwYm9hcmRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiY2xpcGJvYXJkRXZlbnRcIlxuICBsZXQgKGRyYWcgOiBEb21faHRtbC5kcmFnRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImRyYWdFdmVudFwiXG4gIGxldCAocG9pbnRlciA6IERvbV9odG1sLnBvaW50ZXJFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwicG9pbnRlckV2ZW50XCJcbiAgbGV0IChhbmltYXRpb24gOiBEb21faHRtbC5hbmltYXRpb25FdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwiYW5pbWF0aW9uRXZlbnRcIlxuZW5kXG5cbmxldCBvbiB0eXBlX2lkIG5hbWUgKGhhbmRsZXIgOiAjRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50KSA6IHQgPVxuICBIYW5kbGVyIHsgbmFtZTsgaGFuZGxlciA9IFQgeyBoYW5kbGVyOyB0eXBlX2lkIH0gfVxuOztcblxubGV0IG9uX2ZvY3VzID0gb24gVHlwZV9pZC5mb2N1cyBcImZvY3VzXCJcbmxldCBvbl9ibHVyID0gb24gVHlwZV9pZC5mb2N1cyBcImJsdXJcIlxubGV0IG9uX2NsaWNrID0gb24gVHlwZV9pZC5tb3VzZSBcImNsaWNrXCJcbmxldCBvbl9jb250ZXh0bWVudSA9IG9uIFR5cGVfaWQubW91c2UgXCJjb250ZXh0bWVudVwiXG5sZXQgb25fZG91YmxlX2NsaWNrID0gb24gVHlwZV9pZC5tb3VzZSBcImRibGNsaWNrXCJcbmxldCBvbl9kcmFnID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ1wiXG5sZXQgb25fZHJhZ3N0YXJ0ID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ3N0YXJ0XCJcbmxldCBvbl9kcmFnZW5kID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2VuZFwiXG5sZXQgb25fZHJhZ2VudGVyID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2VudGVyXCJcbmxldCBvbl9kcmFnbGVhdmUgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcmFnbGVhdmVcIlxubGV0IG9uX2RyYWdvdmVyID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ292ZXJcIlxubGV0IG9uX2Ryb3AgPSBvbiBUeXBlX2lkLmRyYWcgXCJkcm9wXCJcbmxldCBvbl9tb3VzZW1vdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vtb3ZlXCJcbmxldCBvbl9tb3VzZXVwID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNldXBcIlxubGV0IG9uX21vdXNlZG93biA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWRvd25cIlxubGV0IG9uX21vdXNlZW50ZXIgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VlbnRlclwiXG5sZXQgb25fbW91c2VsZWF2ZSA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZWxlYXZlXCJcbmxldCBvbl9tb3VzZW92ZXIgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdmVyXCJcbmxldCBvbl9tb3VzZW91dCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZW91dFwiXG5sZXQgb25fa2V5dXAgPSBvbiBUeXBlX2lkLmtleWJvYXJkIFwia2V5dXBcIlxubGV0IG9uX2tleXByZXNzID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXByZXNzXCJcbmxldCBvbl9rZXlkb3duID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleWRvd25cIlxubGV0IG9uX3Njcm9sbCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJzY3JvbGxcIlxubGV0IG9uX2xvYWQgPSBvbiBUeXBlX2lkLmV2ZW50IFwibG9hZFwiXG5sZXQgb25fc3VibWl0ID0gb24gVHlwZV9pZC5zdWJtaXQgXCJzdWJtaXRcIlxubGV0IG9uX3BvaW50ZXJkb3duID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcmRvd25cIlxubGV0IG9uX3BvaW50ZXJ1cCA9IG9uIFR5cGVfaWQucG9pbnRlciBcInBvaW50ZXJ1cFwiXG5sZXQgb25fbW91c2V3aGVlbCA9IG9uIFR5cGVfaWQubW91c2V3aGVlbCBcIm1vdXNld2hlZWxcIlxubGV0IG9uX3doZWVsID0gb24gVHlwZV9pZC53aGVlbCBcIndoZWVsXCJcbmxldCBvbl9jb3B5ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjb3B5XCJcbmxldCBvbl9jdXQgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcImN1dFwiXG5sZXQgb25fcGFzdGUgPSBvbiBUeXBlX2lkLmNsaXBib2FyZCBcInBhc3RlXCJcbmxldCBvbl9yZXNldCA9IG9uIFR5cGVfaWQuZXZlbnQgXCJyZXNldFwiXG5sZXQgb25fYW5pbWF0aW9uZW5kID0gb24gVHlwZV9pZC5hbmltYXRpb24gXCJhbmltYXRpb25lbmRcIlxubGV0IGNvbnN0X2lnbm9yZSBfID0gRWZmZWN0Lklnbm9yZVxuXG5jbGFzcyB0eXBlIHZhbHVlX2VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb21faHRtbC5lbGVtZW50XG4gIG1ldGhvZCB2YWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbmVuZFxuXG50eXBlIHZhbHVlX2NvZXJjaW9uID0gRG9tX2h0bWwuZWxlbWVudCBKcy50IC0+IHZhbHVlX2VsZW1lbnQgSnMudCBKcy5vcHRcblxubGV0IHJ1bl9jb2VyY2lvbiBjb2VyY2lvbiB0YXJnZXQgcHJldiA9XG4gIG1hdGNoIHByZXYgd2l0aFxuICB8IFNvbWUgXyAtPiBwcmV2XG4gIHwgTm9uZSAtPiBKcy5PcHQudG9fb3B0aW9uIChjb2VyY2lvbiB0YXJnZXQpXG47O1xuXG5sZXQgY29lcmNlX3ZhbHVlX2VsZW1lbnQgdGFyZ2V0ID1cbiAgbGV0IG9wZW4gRG9tX2h0bWwuQ29lcmNlVG8gaW5cbiAgTm9uZVxuICB8PiBydW5fY29lcmNpb24gKGlucHV0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uIChzZWxlY3QgOj4gdmFsdWVfY29lcmNpb24pIHRhcmdldFxuICB8PiBydW5fY29lcmNpb24gKHRleHRhcmVhIDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbjs7XG5cbmxldCBvbl9pbnB1dF9ldmVudCB0eXBlX2lkIGV2ZW50IGhhbmRsZXIgPVxuICBvbiB0eXBlX2lkIGV2ZW50IChmdW4gZXYgLT5cbiAgICBKcy5PcHQuY2FzZSBldiMjLnRhcmdldCBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgKGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldClcbiAgICAgICAgfmRlZmF1bHQ6RWZmZWN0Lklnbm9yZVxuICAgICAgICB+ZjooZnVuIHRhcmdldCAtPlxuICAgICAgICAgIGxldCB0ZXh0ID0gSnMudG9fc3RyaW5nIHRhcmdldCMjLnZhbHVlIGluXG4gICAgICAgICAgaGFuZGxlciBldiB0ZXh0KSkpXG47O1xuXG5sZXQgb25fY2hhbmdlID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImNoYW5nZVwiXG5sZXQgb25faW5wdXQgPSBvbl9pbnB1dF9ldmVudCBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIlxubGV0IHRvX3JhdyBsID0gdG9fcmF3IGxcblxubGV0IG9uX2ZpbGVfaW5wdXQgaGFuZGxlciA9XG4gIG9uIFR5cGVfaWQuZXZlbnQgXCJpbnB1dFwiIChmdW4gZXYgLT5cbiAgICBKcy5PcHQuY2FzZSBldiMjLnRhcmdldCBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgIEpzLk9wdC5jYXNlIChEb21faHRtbC5Db2VyY2VUby5pbnB1dCB0YXJnZXQpIGNvbnN0X2lnbm9yZSAoZnVuIHRhcmdldCAtPlxuICAgICAgICBKcy5PcHRkZWYuY2FzZSB0YXJnZXQjIy5maWxlcyBjb25zdF9pZ25vcmUgKGZ1biBmaWxlcyAtPiBoYW5kbGVyIGV2IGZpbGVzKSkpKVxuOztcblxubW9kdWxlIEFsd2F5c19mb2N1c19ob29rID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXRcblxuICAgICAgbGV0IGNvbWJpbmUgKCkgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgKCkgXyA9ICgpXG4gICAgbGV0IG9uX21vdW50ICgpICgpIGVsZW1lbnQgPSBlbGVtZW50IyNmb2N1c1xuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDooKSB+bmV3X2lucHV0OigpICgpIF8gPSAoKVxuICAgIGxldCBkZXN0cm95ICgpICgpIF8gPSAoKVxuICBlbmRcblxuICBtb2R1bGUgSG9vayA9IEhvb2tzLk1ha2UgKFQpXG5cbiAgbGV0IGF0dHIgYFJlYWRfdGhlX2RvY3NfX3RoaXNfaG9va19pc191bnByZWRpY3RhYmxlID1cbiAgICAoKiBBcHBlbmQgdGhlIGlkIHRvIHRoZSBuYW1lIG9mIHRoZSBob29rIHRvIGVuc3VyZSB0aGF0IGl0IGlzIGRpc3RpbmN0XG4gICAgICAgZnJvbSBhbGwgb3RoZXIgZm9jdXMgaG9va3MuICopXG4gICAgY3JlYXRlX2hvb2sgXCJhbHdheXMtZm9jdXMtaG9va1wiIChIb29rLmNyZWF0ZSAoKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2luZ2xlX2ZvY3VzX2hvb2sgKCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdGUgPSBVbml0XG5cbiAgICBsZXQgaGFzX2JlZW5fdXNlZCA9IHJlZiBmYWxzZVxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAodW5pdCBVaV9lZmZlY3QudFtAc2V4cC5vcGFxdWVdKSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgY29tYmluZSBsZWZ0IHJpZ2h0ID0gVWlfZWZmZWN0Lk1hbnkgWyBsZWZ0OyByaWdodCBdXG4gICAgZW5kXG5cbiAgICBsZXQgaW5pdCBfIF8gPSAoKVxuXG4gICAgbGV0IG9uX21vdW50IGV2ZW50ICgpIGVsZW1lbnQgPVxuICAgICAgaWYgbm90ICFoYXNfYmVlbl91c2VkXG4gICAgICB0aGVuIChcbiAgICAgICAgaGFzX2JlZW5fdXNlZCA6PSB0cnVlO1xuICAgICAgICBlbGVtZW50IyNmb2N1cztcbiAgICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gZXZlbnQpXG4gICAgOztcblxuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dDpfIH5uZXdfaW5wdXQ6XyAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSBfICgpIF8gPSAoKVxuICBlbmRcblxuICBtb2R1bGUgSG9vayA9IEhvb2tzLk1ha2UgKFQpXG5cbiAgbGV0IGF0dHIgYFJlYWRfdGhlX2RvY3NfX3RoaXNfaG9va19pc191bnByZWRpY3RhYmxlIH5hZnRlciA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwic2luZ2xlLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgYWZ0ZXIpXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vX29wX2hvb2sgKE0gOiBzaWdcbiAgICBtb2R1bGUgSW5wdXQgOiBIb29rc19pbnRmLklucHV0XG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgSG9vayA9IEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuICAgICAgbW9kdWxlIElucHV0ID0gTS5JbnB1dFxuXG4gICAgICBsZXQgaW5pdCBfIF8gPSAoKVxuICAgICAgbGV0IG9uX21vdW50IF8gKCkgXyA9ICgpXG4gICAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgICBsZXQgZGVzdHJveSBfICgpIF8gPSAoKVxuICAgIGVuZClcblxuICBsZXQgYXR0ciBpbnB1dCA9IGNyZWF0ZV9ob29rIE0ubmFtZSAoSG9vay5jcmVhdGUgaW5wdXQpXG4gIGxldCB0eXBlX2lkID0gSG9vay5Gb3JfdGVzdGluZy50eXBlX2lkXG5lbmRcblxubW9kdWxlIE11bHRpID0gc3RydWN0XG5cbiAgdHlwZSBub25yZWMgdCA9IHQgbGlzdFxuXG4gIGxldCBtYXBfc3R5bGUgdCB+ZiA9IFsgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAodCwgZiwgRm4uaWQpIF1cbiAgbGV0IGFkZF9jbGFzcyB0IGMgPSBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIEZuLmlkLCBmdW4gY3MgLT4gYyA6OiBjcykgXVxuICBsZXQgYWRkX3N0eWxlIHQgcyA9IG1hcF9zdHlsZSB0IH5mOihmdW4gc3MgLT4gQ3NzX2dlbi5jb21iaW5lIHNzIHMpXG5cbiAgbGV0IG1lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyB0ID1cbiAgICBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIEZuLmlkLCBGbi5pZCkgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDc3NfdmFyX2hvb2sgPSBIb29rcy5NYWtlIChzdHJ1Y3RcbiAgICBvcGVuIEpzX29mX29jYW1sXG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSAoc3RyaW5nICogc3RyaW5nKSBsaXN0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21iaW5lID0gTGlzdC5hcHBlbmRcbiAgICBlbmRcblxuICAgIGxldCBpbml0IGlucHV0IChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gICAgICBMaXN0Lml0ZXIgaW5wdXQgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgZWxlbWVudCMjLnN0eWxlIyNzZXRQcm9wZXJ0eSAoSnMuc3RyaW5nIGspIChKcy5zdHJpbmcgdikgSnMudW5kZWZpbmVkXG4gICAgICAgIHw+IChpZ25vcmUgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSlcbiAgICA7O1xuXG4gICAgbGV0IG9uX21vdW50IF8gKCkgXyA9ICgpXG5cbiAgICBsZXQgZGVzdHJveSBpbnB1dCAoKSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICAgICAgTGlzdC5pdGVyIGlucHV0IH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIGVsZW1lbnQjIy5zdHlsZSMjcmVtb3ZlUHJvcGVydHkgKEpzLnN0cmluZyBrKVxuICAgICAgICB8PiAoaWdub3JlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkpXG4gICAgOztcblxuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0ICgpIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gICAgICBpZiBwaHlzX2VxdWFsIG9sZF9pbnB1dCBuZXdfaW5wdXRcbiAgICAgIHx8IFslZXF1YWw6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RdIG9sZF9pbnB1dCBuZXdfaW5wdXRcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBkZXN0cm95IG9sZF9pbnB1dCAoKSBlbGVtZW50O1xuICAgICAgICBpbml0IG5ld19pbnB1dCBlbGVtZW50KVxuICAgIDs7XG4gIGVuZClcblxubGV0IF9fY3NzX3ZhcnNfbm9fa2ViYWJzIGFsaXN0ID0gY3JlYXRlX2hvb2sgXCJjdXN0b20tY3NzLXZhcnNcIiAoQ3NzX3Zhcl9ob29rLmNyZWF0ZSBhbGlzdClcbmxldCBjc3NfdmFyIH5uYW1lIHYgPSBfX2Nzc192YXJzX25vX2tlYmFicyBbIFwiLS1cIiBeIG5hbWUsIHYgXVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByZWMgZmlsdGVyX2J5X2tpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBQcm9wZXJ0eSBfIC0+IGlmIGYgYFByb3BlcnR5IHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBBdHRyaWJ1dGUgXyAtPiBpZiBmIGBBdHRyaWJ1dGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhvb2sgXyAtPiBpZiBmIGBIb29rIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIYW5kbGVyIF8gLT4gaWYgZiBgSGFuZGxlciB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgU3R5bGUgXyAtPiBpZiBmIGBTdHlsZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQ2xhc3MgXyAtPiBpZiBmIGBDbGFzcyB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgTWFueSBhdHRycyAtPiBNYW55IChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIGEsIGIpIC0+XG4gICAgICBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpLCBhLCBiKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICBNYW55X3dpdGhvdXRfbWVyZ2UgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb250YWluc19uYW1lIGxvb2tpbmdfZm9yID0gZnVuY3Rpb25cbiAgICB8IFByb3BlcnR5IHsgbmFtZTsgXyB9IHwgQXR0cmlidXRlIHsgbmFtZTsgXyB9IHwgSG9vayB7IG5hbWU7IF8gfSAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIG5hbWVcbiAgICB8IEhhbmRsZXIgeyBuYW1lOyBfIH0gLT4gU3RyaW5nLmVxdWFsIChcIm9uXCIgXiBuYW1lKSBsb29raW5nX2ZvclxuICAgIHwgU3R5bGUgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJzdHlsZVwiXG4gICAgfCBDbGFzcyBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcImNsYXNzXCJcbiAgICB8IE1hbnkgYXR0cnNcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBfLCBfKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+IExpc3QuZXhpc3RzIH5mOihjb250YWluc19uYW1lIGxvb2tpbmdfZm9yKSBhdHRyc1xuICA7O1xuZW5kXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBNYWtlIChYIDogc2lnXG4gICAgdHlwZSBldmVudCA9IHByaXZhdGUgI0RvbV9odG1sLmV2ZW50XG5cbiAgICB2YWwgZXZlbnRfa2luZCA6IGV2ZW50IEpzLnQgRG9tLkV2ZW50LnR5cFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IFguZXZlbnQgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IGNvbWJpbmUgZiBnIGV2ZW50ID0gVWlfZWZmZWN0Lk1hbnkgWyBmIGV2ZW50OyBnIGV2ZW50IF1cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGxpc3RlbmVyIDogKERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkW0BzZXhwLm9wYXF1ZV0pIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBsZXQgc2V0IGYgPVxuICAgICAgICBsZXQgaGFuZGxlciA9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBldiAtPlxuICAgICAgICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGUgZXYgKGYgZXYpO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICAgIGluXG4gICAgICAgIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgRG9tX2h0bWwud2luZG93IFguZXZlbnRfa2luZCBoYW5kbGVyIEpzLl90cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW5pdCBmIF9lbGVtZW50ID0geyBTdGF0ZS5saXN0ZW5lciA9IHNldCBmIH1cbiAgICAgIGxldCBkZXN0cm95IF9pbnB1dCBzdGF0ZSBfZWxlbWVudCA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgc3RhdGUuU3RhdGUubGlzdGVuZXJcblxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6ZiBzdGF0ZSBlbGVtZW50ID1cbiAgICAgICAgKCogaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNoYW5nZXMsIGNhbmNlbCB0aGUgb2xkIG9uZSBhbmQgcmUtaW5zdGFsbCAqKVxuICAgICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgICBsZXQgbmV3X3N0YXRlID0gaW5pdCBmIGVsZW1lbnQgaW5cbiAgICAgICAgc3RhdGUuU3RhdGUubGlzdGVuZXIgPC0gbmV3X3N0YXRlLmxpc3RlbmVyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNb3VzZXVwID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSBldmVudCA9IERvbV9odG1sLm1vdXNlRXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2V1cFxuICBlbmQpXG5cbm1vZHVsZSBNb3VzZW1vdmUgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZW1vdmVcbiAgZW5kKVxuXG5tb2R1bGUgQ2xpY2sgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwubW91c2VFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5jbGlja1xuICBlbmQpXG5cbm1vZHVsZSBDb250ZXh0bWVudSA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgZXZlbnQgPSBEb21faHRtbC5tb3VzZUV2ZW50XG5cbiAgICBsZXQgZXZlbnRfa2luZCA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJjb250ZXh0bWVudVwiXG4gIGVuZClcblxubW9kdWxlIEtleWRvd24gPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwua2V5Ym9hcmRFdmVudFxuXG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5rZXlkb3duXG4gIGVuZClcblxubW9kdWxlIFZpc2liaWxpdHljaGFuZ2UgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwuZXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcInZpc2liaWxpdHljaGFuZ2VcIlxuICBlbmQpXG5cbm1vZHVsZSBCZWZvcmV1bmxvYWQgPSBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIGV2ZW50ID0gRG9tX2h0bWwuZXZlbnRcblxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG4gIGVuZClcblxubGV0IG1vdXNldXAgZiA9IE1vdXNldXAuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZXVwLWxpc3RlbmVyXCJcbmxldCBtb3VzZW1vdmUgZiA9IE1vdXNlbW92ZS5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLW1vdXNlbW92ZS1saXN0ZW5lclwiXG5sZXQgY2xpY2sgZiA9IENsaWNrLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwtY2xpY2stbGlzdGVuZXJcIlxubGV0IGNvbnRleHRtZW51IGYgPSBDb250ZXh0bWVudS5jcmVhdGUgZiB8PiBBdHRyLmNyZWF0ZV9ob29rIFwiZ2xvYmFsLWNvbnRleHRtZW51LWxpc3RlbmVyXCJcbmxldCBrZXlkb3duIGYgPSBLZXlkb3duLmNyZWF0ZSBmIHw+IEF0dHIuY3JlYXRlX2hvb2sgXCJnbG9iYWwta2V5ZG93bi1saXN0ZW5lclwiXG5cbmNsYXNzIHR5cGUgZXZlbnRfd2l0aF9zdHJpbmdfcmV0dXJuX3ZhbHVlID0gb2JqZWN0XG4gICgqIEV2ZW50cyB3aXRoIFtyZXR1cm5WYWx1ZV0gYXJlIGltcG9zc2libGUgdG8gcHJvcGVybHkgdHlwZSwgc28gd2UgbWFrZSBvbmUgdGhhdFxuICAgICBpcyBzcGVjaWFsaXplZCBmb3Igc3RyaW5nLCBhbmQgY2FzdCBvdXIgYmVmb3JlX3VubG9hZCB0eXBlIHRvIGl0LiAqKVxuICBtZXRob2QgcmV0dXJuVmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmxldCBiZWZvcmV1bmxvYWQgZiA9XG4gIGxldCBmIGV2ZW50ID1cbiAgICBtYXRjaCViaW5kLkVmZmVjdCBmIGV2ZW50IHdpdGhcbiAgICB8IGBTaG93X3dhcm5pbmcgLT5cbiAgICAgIGxldCBldmVudCA6IGV2ZW50X3dpdGhfc3RyaW5nX3JldHVybl92YWx1ZSBKcy50ID0gT2JqLm1hZ2ljIGV2ZW50IGluXG4gICAgICBldmVudCMjLnJldHVyblZhbHVlIDo9IEpzLnN0cmluZyBcInRoaXMgc3RyaW5nIGNhbiBiZSBhbnl0aGluZ1wiO1xuICAgICAgRWZmZWN0Lklnbm9yZVxuICAgIHwgYERvX25vdGhpbmcgLT4gRWZmZWN0Lklnbm9yZVxuICBpblxuICBCZWZvcmV1bmxvYWQuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1iZWZvcmV1bmxvYWQtbGlzdGVuZXJcIlxuOztcblxubGV0IHZpc2liaWxpdHljaGFuZ2UgZiA9XG4gIFZpc2liaWxpdHljaGFuZ2UuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC12aXNpYmlsaXR5Y2hhbmdlLWxpc3RlbmVyXCJcbjs7XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBsZXQgbW91c2V1cF90eXBlX2lkID0gTW91c2V1cC5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBtb3VzZW1vdmVfdHlwZV9pZCA9IE1vdXNlbW92ZS5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBrZXlkb3duX3R5cGVfaWQgPSBLZXlkb3duLkZvcl90ZXN0aW5nLnR5cGVfaWRcbiAgbGV0IGNsaWNrX3R5cGVfaWQgPSBDbGljay5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBjb250ZXh0bWVudV90eXBlX2lkID0gQ29udGV4dG1lbnUuRm9yX3Rlc3RpbmcudHlwZV9pZFxuICBsZXQgdmlzaWJpbGl0eWNoYW5nZV90eXBlX2lkID0gVmlzaWJpbGl0eWNoYW5nZS5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBiZWZvcmV1bmxvYWRfdHlwZV9pZCA9IEJlZm9yZXVubG9hZC5Gb3JfdGVzdGluZy50eXBlX2lkXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEpzX29mX29jYW1sXG5cbnR5cGUgdCA9IFJhdy5Ob2RlLnRcblxubGV0IHZkb21fdGh1bmsgPSBsYXp5IEpzLlVuc2FmZS4oZ2V0IGdsb2JhbCAoSnMuc3RyaW5nIFwiVmRvbVRodW5rXCIpKVxuXG5sZXQgY3JlYXRlIH5rZXkgYXJnIH5mID1cbiAgbGV0IGtleSA9XG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IFNvbWUga2V5IC0+IEpzLk9wdGRlZi5yZXR1cm4gKEpzLnN0cmluZyBrZXkpXG4gICAgfCBOb25lIC0+IEpzLk9wdGRlZi5lbXB0eVxuICBpblxuICBsZXQga2V5ID0gSnMuVW5zYWZlLmluamVjdCBrZXkgaW5cbiAgbGV0IGYgPSBKcy53cmFwX2NhbGxiYWNrIChmdW4gYSAtPiBmIGEpIHw+IEpzLlVuc2FmZS5pbmplY3QgaW5cbiAgbGV0IGFyZyA9IEpzLlVuc2FmZS5pbmplY3QgYXJnIGluXG4gIChPYmoubWFnaWMgOiBfIC0+IFJhdy5Ob2RlLnQpXG4gICAgKEpzLlVuc2FmZS5mdW5fY2FsbCAoTGF6eS5mb3JjZSB2ZG9tX3RodW5rKSBbfCBmOyBhcmc7IGtleSB8XSlcbjs7XG4iLCJvcGVuIEJhc2Vcbm9wZW4gSnNfb2Zfb2NhbWxcblxudHlwZSBlbGVtZW50ID1cbiAgeyB0YWcgOiBzdHJpbmdcbiAgOyBrZXkgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYXR0cnMgOiBBdHRyLnRcbiAgOyByYXdfYXR0cnMgOiBSYXcuQXR0cnMudCBMYXp5LnRcbiAgOyBjaGlsZHJlbiA6IFJhdy5Ob2RlLnQgSnMuanNfYXJyYXkgSnMudFxuICA7IGtpbmQgOiBbIGBWbm9kZSB8IGBTdmcgXVxuICB9XG5cbmFuZCB3aWRnZXQgPSBSYXcuV2lkZ2V0LnRcblxuYW5kIHQgPVxuICB8IE5vbmVcbiAgfCBUZXh0IG9mIHN0cmluZ1xuICB8IEVsZW1lbnQgb2YgZWxlbWVudFxuICB8IFdpZGdldCBvZiB3aWRnZXRcbiAgfCBMYXp5IG9mXG4gICAgICB7IGtleSA6IHN0cmluZyBvcHRpb25cbiAgICAgIDsgdCA6IHQgTGF6eS50XG4gICAgICB9XG5cbm1vZHVsZSBBbGlhc2VzID0gc3RydWN0XG4gIHR5cGUgbm9kZV9jcmVhdG9yID0gP2tleTpzdHJpbmcgLT4gP2F0dHJzOkF0dHIudCBsaXN0IC0+IHQgbGlzdCAtPiB0XG4gIHR5cGUgbm9kZV9jcmVhdG9yX2NoaWxkbGVzcyA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyczpBdHRyLnQgbGlzdCAtPiB1bml0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRWxlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBlbGVtZW50XG5cbiAgbGV0IHRhZyB0ID0gdC50YWdcbiAgbGV0IGF0dHJzIHQgPSB0LmF0dHJzXG4gIGxldCBrZXkgdCA9IHQua2V5XG4gIGxldCB3aXRoX2tleSB0IGtleSA9IHsgdCB3aXRoIGtleSA9IFNvbWUga2V5IH1cblxuICBsZXQgbWFwX2F0dHJzIHQgfmYgPVxuICAgIGxldCBhdHRycyA9IGYgdC5hdHRycyBpblxuICAgIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgICB7IHQgd2l0aCBhdHRyczsgcmF3X2F0dHJzIH1cbiAgOztcblxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NfIGMpKVxuICBsZXQgYWRkX2NsYXNzZXMgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc2VzIGMpKVxuICBsZXQgYWRkX3N0eWxlIHQgcyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgc3R5bGUgcykpXG5lbmRcblxubGV0IHJlYyB0X3RvX2pzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAgKCogV2Ugbm9ybWFsbHkgZmlsdGVyIHRoZXNlIG91dCwgYnV0IGlmIFt0b19qc10gaXMgY2FsbGVkIGRpcmVjdGx5IG9uIGEgW05vbmVdIG5vZGUsXG4gICAgICAgd2UgdXNlIHRoaXMgaGFjay4gQXNpZGUgZnJvbSBoYXZpbmcgYSBbVGV4dF0gbm9kZSB3aXRob3V0IGFueSB0ZXh0IHByZXNlbnQgaW4gdGhlXG4gICAgICAgRG9tLCB0aGVyZSBzaG91bGQgYmUgbm8gdW53YW50ZWQgc2lkZS1lZmZlY3RzLiAgSW4gYW4gSW5jcl9kb20gYXBwbGljYXRpb24sIHRoaXNcbiAgICAgICBjYW4gb25seSBoYXBwZW4gd2hlbiB0aGUgcm9vdCB2aWV3IEluY3JlbWVudGFsIGlzIGluaGFiaXRlZCBieSBhIFtOb25lXS4gKilcbiAgICBSYXcuTm9kZS50ZXh0IFwiXCJcbiAgfCBUZXh0IHMgLT4gUmF3Lk5vZGUudGV4dCBzXG4gIHwgRWxlbWVudCB7IHRhZzsga2V5OyBhdHRycyA9IF87IHJhd19hdHRycyA9IChsYXp5IHJhd19hdHRycyk7IGNoaWxkcmVuOyBraW5kID0gYFZub2RlIH1cbiAgICAtPiBSYXcuTm9kZS5ub2RlIHRhZyByYXdfYXR0cnMgY2hpbGRyZW4ga2V5XG4gIHwgRWxlbWVudCB7IHRhZzsga2V5OyBhdHRycyA9IF87IHJhd19hdHRycyA9IChsYXp5IHJhd19hdHRycyk7IGNoaWxkcmVuOyBraW5kID0gYFN2ZyB9XG4gICAgLT4gUmF3Lk5vZGUuc3ZnIHRhZyByYXdfYXR0cnMgY2hpbGRyZW4ga2V5XG4gIHwgV2lkZ2V0IHcgLT4gd1xuICB8IExhenkgeyB0OyBrZXkgfSAtPiBUaHVuay5jcmVhdGUgfmtleSB0IH5mOnRfdG9fanNfbGF6eVxuXG5hbmQgdF90b19qc19sYXp5IChsYXp5IHQpID0gdF90b19qcyB0XG5cbmxldCB0ZXh0IHMgPSBUZXh0IHNcblxubGV0IGVsZW1lbnQga2luZCB+dGFnIH5rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgY2hpbGRyZW5fcmF3ID0gbmV3JWpzIEpzLmFycmF5X2VtcHR5IGluXG4gIExpc3QuaXRlciBjaGlsZHJlbiB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IChUZXh0IF8gfCBFbGVtZW50IF8gfCBXaWRnZXQgXyB8IExhenkgXykgYXMgb3RoZXIgLT5cbiAgICAgIGxldCAoXyA6IGludCkgPSBjaGlsZHJlbl9yYXcjI3B1c2ggKHRfdG9fanMgb3RoZXIpIGluXG4gICAgICAoKSk7XG4gIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgeyBraW5kOyB0YWc7IGtleTsgYXR0cnM7IHJhd19hdHRyczsgY2hpbGRyZW4gPSBjaGlsZHJlbl9yYXcgfVxuOztcblxubGV0IGNyZWF0ZSB0YWcgP2tleSA/KGF0dHJzID0gW10pIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgVm5vZGUgfnRhZyB+a2V5IChBdHRyLm1hbnkgYXR0cnMpIGNoaWxkcmVuKVxuOztcblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBvcGVuIEpzX29mX29jYW1sXG5cbiAgbGV0IGNyZWF0ZV9lbGVtZW50ID0gY3JlYXRlXG5cbiAgdHlwZSB2ZG9tX25vZGUgPSB0XG5cbiAgaW5jbHVkZSBSYXcuV2lkZ2V0XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgZG9tID0gcHJpdmF0ZSAjRG9tX2h0bWwuZWxlbWVudFxuXG4gICAgbW9kdWxlIElucHV0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdGF0ZSA6IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBjcmVhdGUgOiBJbnB1dC50IC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIHVwZGF0ZVxuICAgICAgOiAgcHJldl9pbnB1dDpJbnB1dC50XG4gICAgICAtPiBpbnB1dDpJbnB1dC50XG4gICAgICAtPiBzdGF0ZTpTdGF0ZS50XG4gICAgICAtPiBlbGVtZW50OmRvbSBKcy50XG4gICAgICAtPiBTdGF0ZS50ICogZG9tIEpzLnRcblxuICAgIHZhbCBkZXN0cm95IDogcHJldl9pbnB1dDpJbnB1dC50IC0+IHN0YXRlOlN0YXRlLnQgLT4gZWxlbWVudDpkb20gSnMudCAtPiB1bml0XG4gICAgdmFsIHRvX3Zkb21fZm9yX3Rlc3RpbmcgOiBbIGBDdXN0b20gb2YgSW5wdXQudCAtPiB2ZG9tX25vZGUgfCBgU2V4cF9vZl9pbnB1dCBdXG4gIGVuZFxuXG4gIGxldCBvZl9tb2R1bGUgKHR5cGUgaW5wdXQpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIElucHV0LnQgPSBpbnB1dCkgPVxuICAgIGxldCBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5wdXQgOiBNLklucHV0LnRcbiAgICAgICAgOyBzdGF0ZSA6IE0uU3RhdGUudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuICAgIGluXG4gICAgbGV0IHNleHBfb2ZfZG9tIDogTS5kb20gSnMudCAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCI8b3BhcXVlPlwiIGluXG4gICAgbGV0IGlkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6TS5uYW1lIFslc2V4cF9vZjogU3RhdGUudCAqIGRvbV0gaW5cbiAgICBCYXNlLlN0YWdlZC5zdGFnZSAoZnVuIGlucHV0IC0+XG4gICAgICBsZXQgdmRvbV9mb3JfdGVzdGluZyA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAodF90b19qc1xuICAgICAgICAgICAgIChtYXRjaCBNLnRvX3Zkb21fZm9yX3Rlc3Rpbmcgd2l0aFxuICAgICAgICAgICAgICB8IGBDdXN0b20gZiAtPiBmIGlucHV0XG4gICAgICAgICAgICAgIHwgYFNleHBfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggTS5JbnB1dC5zZXhwX29mX3QgaW5wdXQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBBdG9tIFwiPG9wYXF1ZT5cIiAtPiBbXVxuICAgICAgICAgICAgICAgICAgfCBvdGhlciAtPiBbIHRleHQgKFNleHAudG9fc3RyaW5nX2h1bSBvdGhlcikgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgY3JlYXRlX2VsZW1lbnQgKE0ubmFtZSBeIFwiLXdpZGdldFwiKSBjaGlsZHJlbikpXG4gICAgICBpblxuICAgICAgY3JlYXRlXG4gICAgICAgIH5pZFxuICAgICAgICB+dmRvbV9mb3JfdGVzdGluZ1xuICAgICAgICB+aW5pdDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS5jcmVhdGUgaW5wdXQgaW5cbiAgICAgICAgICB7IGlucHV0OyBzdGF0ZSB9LCBlbGVtZW50KVxuICAgICAgICB+dXBkYXRlOihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIGxldCBzdGF0ZSwgZWxlbWVudCA9IE0udXBkYXRlIH5wcmV2X2lucHV0IH5pbnB1dCB+c3RhdGUgfmVsZW1lbnQgaW5cbiAgICAgICAgICB7IGlucHV0OyBzdGF0ZSB9LCBlbGVtZW50KVxuICAgICAgICB+ZGVzdHJveTooZnVuIHsgU3RhdGUuaW5wdXQgPSBwcmV2X2lucHV0OyBzdGF0ZSB9IGVsZW1lbnQgLT5cbiAgICAgICAgICBNLmRlc3Ryb3kgfnByZXZfaW5wdXQgfnN0YXRlIH5lbGVtZW50KVxuICAgICAgICAoKSlcbiAgOztcbmVuZFxuXG5sZXQgbGF6eV8gP2tleSB0ID0gTGF6eSB7IGtleTsgdCB9XG5cbmxldCBlbGVtZW50X2V4cGVydCBraW5kIH50YWcgP2tleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgeyBraW5kOyB0YWc7IGtleTsgYXR0cnM7IHJhd19hdHRyczsgY2hpbGRyZW4gfVxuOztcblxubGV0IHdpZGdldCA/dmRvbV9mb3JfdGVzdGluZyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSA9XG4gIGxldCB2ZG9tX2Zvcl90ZXN0aW5nID1cbiAgICBsYXp5XG4gICAgICAobWF0Y2ggdmRvbV9mb3JfdGVzdGluZyB3aXRoXG4gICAgICAgfCBTb21lIHQgLT4gdF90b19qcyAoTGF6eS5mb3JjZSB0KVxuICAgICAgIHwgTm9uZSAtPiB0X3RvX2pzIChjcmVhdGUgKFR5cGVfZXF1YWwuSWQubmFtZSBpZCBeIFwiLXdpZGdldFwiKSBbXSkpXG4gIGluXG4gIFdpZGdldCAoV2lkZ2V0LmNyZWF0ZSB+dmRvbV9mb3JfdGVzdGluZyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSlcbjs7XG5cbmxldCBjcmVhdGVfY2hpbGRsZXNzIHRhZyA/a2V5ID9hdHRycyAoKSA9IGNyZWF0ZSB0YWcgP2tleSA/YXR0cnMgW11cblxubGV0IGNyZWF0ZV9zdmcgdGFnID9rZXkgPyhhdHRycyA9IFtdKSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFN2ZyB+dGFnIH5rZXkgKEF0dHIubWFueSBhdHRycykgY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlX3N2Z19tb25vaWQgdGFnID9rZXkgPyhhdHRycyA9IFtdKSBjaGlsZHJlbiA9XG4gIEVsZW1lbnQgKGVsZW1lbnQgYFN2ZyB+dGFnIH5rZXkgKEF0dHIubWFueSBhdHRycykgY2hpbGRyZW4pXG47O1xuXG5sZXQgbm9uZSA9IE5vbmVcbmxldCB0ZXh0ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgdGV4dCBmb3JtYXRcblxubGV0IHdpZGdldF9vZl9tb2R1bGUgbSA9XG4gIGxldCBmID0gQmFzZS5TdGFnZWQudW5zdGFnZSAoV2lkZ2V0Lm9mX21vZHVsZSBtKSBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSAoZnVuIGkgLT4gV2lkZ2V0IChmIGkpKVxuOztcblxubGV0IHRvX3JhdyA9IHRfdG9fanNcbmxldCB0b19kb20gdCA9IFJhdy5Ob2RlLnRvX2RvbSAodG9fcmF3IHQpXG5cbm1vZHVsZSBJbm5lcl9odG1sID0gc3RydWN0XG4gIGxldCB3aWRnZXQgfm5hbWUgY3JlYXRlID1cbiAgICBsZXQgaWQgPVxuICAgICAgKCogc3RhZ2UgdGhlIGlkIGdlbmVyYXRpb24gKilcbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIChmdW4gKChjb250ZW50LCBfLCBfKSwgXykgLT4gU2V4cC5BdG9tIGNvbnRlbnQpXG4gICAgaW5cbiAgICBTdGFnZWQuc3RhZ2VcbiAgICAgIChmdW5cbiAgICAgICAgP292ZXJyaWRlX3Zkb21fZm9yX3Rlc3RpbmdcbiAgICAgICAgfnRhZ1xuICAgICAgICB+YXR0cnNcbiAgICAgICAgfnRoaXNfaHRtbF9pc19zYW5pdGl6ZWRfYW5kX2lzX3RvdGFsbHlfc2FmZV90cnVzdF9tZTpjb250ZW50XG4gICAgICAgICgpXG4gICAgICAgIC0+XG4gICAgICAgICAgbGV0IGVsZW1lbnQgPSBjcmVhdGUgdGFnIH5hdHRycyBbXSBpblxuICAgICAgICAgIGxldCBpbml0ICgpID1cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gdG9fZG9tIGVsZW1lbnQgaW5cbiAgICAgICAgICAgIGVsZW1lbnQjIy5pbm5lckhUTUwgOj0gSnMuc3RyaW5nIGNvbnRlbnQ7XG4gICAgICAgICAgICAoY29udGVudCwgdGFnLCBhdHRycyksIGVsZW1lbnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB1cGRhdGUgKHByZXZfY29udGVudCwgcHJldl90YWcsIHByZXZfYXR0cikgZWxlbWVudCA9XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9XG4gICAgICAgICAgICAgICgqIGlmIHRoZSB0YWcgb3IgdGhlIGF0dHJpYnV0ZXMgYXJlIGRpZmZlcmVudCwgZG8gYSBkaWZmL3BhdGNoIGN5Y2xlIHRvXG4gICAgICAgICAgICAgICAgIGdldCBpdCB1cCB0byBkYXRlICopXG4gICAgICAgICAgICAgIGlmIChub3QgKFN0cmluZy5lcXVhbCBwcmV2X3RhZyB0YWcpKSB8fCBub3QgKHBoeXNfZXF1YWwgcHJldl9hdHRyIGF0dHJzKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgUmF3LlBhdGNoLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgfnByZXZpb3VzOihjcmVhdGUgcHJldl90YWcgfmF0dHJzOnByZXZfYXR0ciBbXSB8PiB0b19yYXcpXG4gICAgICAgICAgICAgICAgICB+Y3VycmVudDooY3JlYXRlIHRhZyB+YXR0cnMgW10gfD4gdG9fcmF3KVxuICAgICAgICAgICAgICAgIHw+IFJhdy5QYXRjaC5hcHBseSBlbGVtZW50XG4gICAgICAgICAgICAgIGVsc2UgZWxlbWVudFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIGlmIHRoZSB0YWcgY2hhbmdlZCwgdGhlbiBbZWxlbWVudF0gd2lsbCBiZSBlbXB0eSwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlXG4gICAgICAgICAgICAgICBpbm5lckhUTUwuICBJZiB0aGUgY29udGVudCBjaGFuZ2VkLCB0aGVuIHdlIG5lZWQgdG8gc2V0IHRoZSBpbm5lckhUTUwgZm9yXG4gICAgICAgICAgICAgICBvYnZpb3VzIHJlYXNvbnMuICopXG4gICAgICAgICAgICBpZiAobm90IChTdHJpbmcuZXF1YWwgcHJldl90YWcgdGFnKSkgfHwgbm90IChTdHJpbmcuZXF1YWwgcHJldl9jb250ZW50IGNvbnRlbnQpXG4gICAgICAgICAgICB0aGVuIGVsZW1lbnQjIy5pbm5lckhUTUwgOj0gSnMuc3RyaW5nIGNvbnRlbnQ7XG4gICAgICAgICAgICAoY29udGVudCwgdGFnLCBhdHRycyksIGVsZW1lbnRcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIHVzZSB0aGUgW3dpZGdldF0gZnVuY3Rpb24gZGlyZWN0bHksIHJhdGhlciB0aGFuIHRocm91Z2ggdGhlXG4gICAgICAgICAgICAgZWFzaWVyLXRvLXVzZSBbd2lkZ2V0X29mX21vZHVsZV0gZnVuY3Rpb24gYmVjYXVzZSB3ZSB3YW50IHRvXG4gICAgICAgICAgICAgZXhwbGljaXRseSBjcmVhdGUgdGhlIGlkIHN1Y2ggdGhhdCBpdCBpcyBkaXN0aW5jdCBiZXR3ZWVuXG4gICAgICAgICAgICAgW2lubmVyX2h0bWxdIGFuZCBbaW5uZXJfaHRtbF9zdmddLiAqKVxuICAgICAgICAgIGxldCB2ZG9tX2Zvcl90ZXN0aW5nID1cbiAgICAgICAgICAgIG1hdGNoIG92ZXJyaWRlX3Zkb21fZm9yX3Rlc3Rpbmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGxhenkgKGNyZWF0ZSB0YWcgfmF0dHJzIFsgdGV4dCBjb250ZW50IF0pXG4gICAgICAgICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICAgICAgaW5cbiAgICAgICAgICB3aWRnZXQgfmlkIH52ZG9tX2Zvcl90ZXN0aW5nIH5pbml0IH51cGRhdGUgKCkpXG4gIDs7XG5lbmRcblxubGV0IGlubmVyX2h0bWxfc3ZnID1cbiAgSW5uZXJfaHRtbC53aWRnZXQgfm5hbWU6XCJpbm5lci1odG1sLXN2Zy1ub2RlXCIgKGZ1biB0YWcgfmF0dHJzIC0+XG4gICAgY3JlYXRlX3N2Z19tb25vaWQgdGFnID9rZXk6Tm9uZSB+YXR0cnMpXG4gIHw+IFN0YWdlZC51bnN0YWdlXG47O1xuXG5sZXQgaW5uZXJfaHRtbCA9XG4gIElubmVyX2h0bWwud2lkZ2V0IH5uYW1lOlwiaW5uZXItaHRtbC1ub2RlXCIgKGZ1biB0YWcgfmF0dHJzIC0+XG4gICAgY3JlYXRlIHRhZyA/a2V5Ok5vbmUgfmF0dHJzKVxuICB8PiBTdGFnZWQudW5zdGFnZVxuOztcblxubGV0IGEgPSBjcmVhdGUgXCJhXCJcbmxldCBhYmJyID0gY3JlYXRlIFwiYWJiclwiXG5sZXQgYm9keSA9IGNyZWF0ZSBcImJvZHlcIlxubGV0IGJ1dHRvbiA9IGNyZWF0ZSBcImJ1dHRvblwiXG5sZXQgY29kZSA9IGNyZWF0ZSBcImNvZGVcIlxubGV0IGRhdGFsaXN0ID0gY3JlYXRlIFwiZGF0YWxpc3RcIlxubGV0IGRldGFpbHMgPSBjcmVhdGUgXCJkZXRhaWxzXCJcbmxldCBkaXYgPSBjcmVhdGUgXCJkaXZcIlxubGV0IG1haW4gPSBjcmVhdGUgXCJtYWluXCJcbmxldCBmaWVsZHNldCA9IGNyZWF0ZSBcImZpZWxkc2V0XCJcbmxldCBsZWdlbmQgPSBjcmVhdGUgXCJsZWdlbmRcIlxubGV0IGZvb3RlciA9IGNyZWF0ZSBcImZvb3RlclwiXG5sZXQgaDEgPSBjcmVhdGUgXCJoMVwiXG5sZXQgaDIgPSBjcmVhdGUgXCJoMlwiXG5sZXQgaDMgPSBjcmVhdGUgXCJoM1wiXG5sZXQgaDQgPSBjcmVhdGUgXCJoNFwiXG5sZXQgaDUgPSBjcmVhdGUgXCJoNVwiXG5sZXQgaDYgPSBjcmVhdGUgXCJoNlwiXG5sZXQgaGVhZGVyID0gY3JlYXRlIFwiaGVhZGVyXCJcbmxldCBodG1sID0gY3JlYXRlIFwiaHRtbFwiXG5sZXQgaW5wdXQgPSBjcmVhdGVfY2hpbGRsZXNzIFwiaW5wdXRcIlxubGV0IGltZyA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJpbWdcIlxubGV0IGlucHV0X2RlcHJlY2F0ZWQgPSBjcmVhdGUgXCJpbnB1dFwiXG5sZXQgdGV4dGFyZWEgPSBjcmVhdGUgXCJ0ZXh0YXJlYVwiXG5sZXQgc2VsZWN0ID0gY3JlYXRlIFwic2VsZWN0XCJcbmxldCBvcHRncm91cCA9IGNyZWF0ZSBcIm9wdGdyb3VwXCJcbmxldCBvcHRpb24gPSBjcmVhdGUgXCJvcHRpb25cIlxubGV0IGxhYmVsID0gY3JlYXRlIFwibGFiZWxcIlxubGV0IGxpID0gY3JlYXRlIFwibGlcIlxubGV0IHAgPSBjcmVhdGUgXCJwXCJcbmxldCBwcmUgPSBjcmVhdGUgXCJwcmVcIlxubGV0IHNlY3Rpb24gPSBjcmVhdGUgXCJzZWN0aW9uXCJcbmxldCBzcGFuID0gY3JlYXRlIFwic3BhblwiXG5sZXQgc3Ryb25nID0gY3JlYXRlIFwic3Ryb25nXCJcbmxldCBlbSA9IGNyZWF0ZSBcImVtXCJcbmxldCBibG9ja3F1b3RlID0gY3JlYXRlIFwiYmxvY2txdW90ZVwiXG5sZXQgc3VtbWFyeSA9IGNyZWF0ZSBcInN1bW1hcnlcIlxubGV0IGlmcmFtZSA9IGNyZWF0ZSBcImlmcmFtZVwiXG5sZXQgdGFibGUgPSBjcmVhdGUgXCJ0YWJsZVwiXG5sZXQgdGJvZHkgPSBjcmVhdGUgXCJ0Ym9keVwiXG5sZXQgdGQgPSBjcmVhdGUgXCJ0ZFwiXG5sZXQgdGggPSBjcmVhdGUgXCJ0aFwiXG5sZXQgdGhlYWQgPSBjcmVhdGUgXCJ0aGVhZFwiXG5sZXQgdHIgPSBjcmVhdGUgXCJ0clwiXG5sZXQgdWwgPSBjcmVhdGUgXCJ1bFwiXG5sZXQgb2wgPSBjcmVhdGUgXCJvbFwiXG5sZXQgYnIgPSBjcmVhdGVfY2hpbGRsZXNzIFwiYnJcIlxubGV0IGhyID0gY3JlYXRlX2NoaWxkbGVzcyBcImhyXCJcbmxldCBkbCA9IGNyZWF0ZSBcImRsXCJcbmxldCBkdCA9IGNyZWF0ZSBcImR0XCJcbmxldCBkZCA9IGNyZWF0ZSBcImRkXCJcblxubGV0IHNleHBfZm9yX2RlYnVnZ2luZyA/aW5kZW50IHNleHAgPVxuICBzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSA/aW5kZW50IHw+IHRleHQgfD4gTGlzdC5yZXR1cm4gfD4gcHJlIH5hdHRyczpbXVxuOztcblxubW9kdWxlIFBhdGNoID0gc3RydWN0XG4gIHR5cGUgdCA9IFJhdy5QYXRjaC50XG5cbiAgbGV0IGNyZWF0ZSB+cHJldmlvdXMgfmN1cnJlbnQgPVxuICAgIFJhdy5QYXRjaC5jcmVhdGUgfnByZXZpb3VzOih0X3RvX2pzIHByZXZpb3VzKSB+Y3VycmVudDoodF90b19qcyBjdXJyZW50KVxuICA7O1xuXG4gIGxldCBhcHBseSB0IGVsdCA9IFJhdy5QYXRjaC5hcHBseSBlbHQgdFxuICBsZXQgaXNfZW1wdHkgdCA9IFJhdy5QYXRjaC5pc19lbXB0eSB0XG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9rZXkgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBFbGVtZW50IChlbGVtZW50X2V4cGVydCBgVm5vZGUgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuXG4gIGxldCBjcmVhdGVfc3ZnID9rZXkgdGFnIGF0dHJzIGNoaWxkcmVuID1cbiAgICBFbGVtZW50IChlbGVtZW50X2V4cGVydCBgU3ZnID9rZXkgfnRhZyBhdHRycyBjaGlsZHJlbilcbiAgOztcbmVuZFxuIiwibW9kdWxlIEF0dHIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBdHRyXG4gIG1vZHVsZSBIb29rcyA9IEhvb2tzXG4gIG1vZHVsZSBHbG9iYWxfbGlzdGVuZXJzID0gR2xvYmFsX2xpc3RlbmVyc1xuZW5kXG5cbm1vZHVsZSBBdHRycyA9IEF0dHIuTXVsdGlcbm1vZHVsZSBFZmZlY3QgPSBFZmZlY3Rcbm1vZHVsZSBOb2RlID0gTm9kZVxuIiwibW9kdWxlIFZkb20gPSBWZG9tXG5tb2R1bGUgRG9tX2Zsb2F0ID0gRG9tX2Zsb2F0XG5tb2R1bGUgSnNfbWFwID0gSnNfbWFwXG5cbm1vZHVsZSBUb3BfbGV2ZWxfZWZmZWN0cyA9IHN0cnVjdFxuICBsZXQgKCkgPVxuICAgICgqIHVzZSB0aGUgbmF0aXZlLWphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgZmxvYXQgLT4gc3RyaW5nIHdpdGggYSBmaXhlZCBudW1iZXIgb2ZcbiAgICAgICBudW1iZXJzIGFmdGVyIHRoZSBkZWNpbWFsIHBsYWNlLiAqKVxuICAgIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQ3B1c2V0ID0gc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gSW50LlNldC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgIGxldCBoZXJlID0gWyVoZXJlXVxuXG4gICAgICBsZXQgdmFsaWRhdGUgdCA9XG4gICAgICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmVcbiAgICAgICAgICAoSW50LnZhbGlkYXRlX2xib3VuZCB+bWluOihJbmNsIDEpIChTZXQubGVuZ3RoIHQpKVxuICAgICAgICAgIChTZXQudG9fbGlzdCB0XG4gICAgICAgICAgIHw+IExpc3QubWFwIH5mOkludC52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgICAgICAgICAgfD4gVmFsaWRhdGUubmFtZV9saXN0IFwiVGhyZWFkX3Bvb2xfY3B1c2V0XCIpXG4gICAgICA7O1xuICAgIGVuZClcblxuICBsZXQgZXF1YWwgdDEgdDIgPSBJbnQuU2V0LmVxdWFsICh0MSB8PiByYXcpICh0MiB8PiByYXcpXG5lbmRcblxudHlwZSB0ID1cbiAgfCBJbmhlcml0XG4gIHwgQ3B1c2V0IG9mIENwdXNldC50XG5bQEBkZXJpdmluZyBzZXhwXVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR1cGxlX3R5cGVfaW50ZlxuXG5tb2R1bGUgU2xvdHMgPSBzdHJ1Y3RcbiAgdHlwZSB1XyA9IHsgc2xvdHNfcGVyX3R1cGxlIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ3R1cGxlLCAndmFyaWFudCkgdSA9IHVfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgdF8gPSBbIGBTbG90cyBvZiB1XyBdIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzbG90c19wZXJfdHVwbGUgKGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IG4gfSkgPSBuXG5cbiAgdHlwZSAnYTAgdDEgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSkgdDIgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyKSB0MyA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMykgdDQgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCkgdDUgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1KSB0NiA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNikgdDcgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNykgdDggPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4KSB0OSA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSkgdDEwID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTApIHQxMSA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExKSB0MTIgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSwgJ2ExMikgdDEzID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIsICdhMTMpIHQxNCA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHQxID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMSB9XG4gIGxldCB0MiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDIgfVxuICBsZXQgdDMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAzIH1cbiAgbGV0IHQ0ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNCB9XG4gIGxldCB0NSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDUgfVxuICBsZXQgdDYgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA2IH1cbiAgbGV0IHQ3ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNyB9XG4gIGxldCB0OCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDggfVxuICBsZXQgdDkgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA5IH1cbiAgbGV0IHQxMCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEwIH1cbiAgbGV0IHQxMSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDExIH1cbiAgbGV0IHQxMiA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEyIH1cbiAgbGV0IHQxMyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEzIH1cbiAgbGV0IHQxNCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDE0IH1cbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR1cGxlX3Bvb2xfaW50ZlxubW9kdWxlIFR1cGxlX3R5cGUgPSBUdXBsZV90eXBlXG5cbmxldCBmYWlsd2l0aHMgPSBFcnJvci5mYWlsd2l0aHNcbmxldCBwaHlzX2VxdWFsID0gU3RkbGliLiggPT0gKVxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBsZXQgbnVtX2JpdHMgPSBJbnQubnVtX2JpdHNcbiAgbGV0IG1heF92YWx1ZSA9IFN0ZGxpYi5tYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxubGV0IGNvbmNhdCBsID0gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBsXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5cbm1vZHVsZSBQb29sID0gc3RydWN0XG4gIGxldCBncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IGlmIG9sZF9jYXBhY2l0eSA9IDAgdGhlbiAxIGVsc2Ugb2xkX2NhcGFjaXR5ICogMlxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPD0gb2xkX2NhcGFjaXR5XG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvb2wuZ3JvdyBnb3QgdG9vIHNtYWxsIGNhcGFjaXR5XCJcbiAgICAgICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5LCBgb2xkX2NhcGFjaXR5IG9sZF9jYXBhY2l0eSlcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBdICogWyBgb2xkX2NhcGFjaXR5IG9mIGludCBdXTtcbiAgICAgIGNhcGFjaXR5XG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gVHVwbGVfdHlwZS5TbG90c1xuXG4gIGxldCBtYXhfc2xvdCA9IDE0XG5cbiAgKCogVGhlIHBvb2wgaXMgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGUgW1VuaWZvcm1fYXJyYXkudF0sIHdoZXJlIGluZGV4IHplcm8gaGFzIHRoZVxuICAgICBtZXRhZGF0YSBhYm91dCB0aGUgcG9vbCBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGFyZSB0aGUgdHVwbGVzIGxheWVkIG91dCBvbmUgYWZ0ZXJcbiAgICAgdGhlIG90aGVyLiAgRWFjaCB0dXBsZSB0YWtlcyBbMSArIHNsb3RzX3Blcl90dXBsZV0gaW5kaWNlcyBpbiB0aGUgcG9vbCwgd2hlcmUgdGhlXG4gICAgIGZpcnN0IGluZGV4IGhvbGRzIGEgaGVhZGVyIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgaG9sZCB0aGUgdHVwbGUncyBzbG90czpcblxuICAgICB7dlxuICAgICB8IGhlYWRlciB8IHMwIHwgczEgfCAuLi4gfCBzPE4tMT4gfFxuICAgICB2fVxuXG4gICAgIEEgW1BvaW50ZXIudF0gdG8gYSB0dXBsZSBjb250YWlucyB0aGUgaW50ZWdlciBpbmRleCB3aGVyZSBpdHMgaGVhZGVyIGlzLCBhcyB3ZWxsIGFzXG4gICAgIChhIG1hc2sgb2YpIHRoZSB0dXBsZSdzIHVuaXF1ZSBpZC5cblxuICAgICBUaGUgZnJlZSB0dXBsZXMgYXJlIHNpbmdseSBsaW5rZWQgdmlhIHRoZSBoZWFkZXJzLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgbWFya2VkIHRvIGluZGljYXRlIHNvLCBhbmQgYWxzbyB0byBpbmNsdWRlIHRoZVxuICAgICB0dXBsZSdzIHVuaXF1ZSBpZC4gIFRoaXMgYWxsb3dzIHVzIHRvIGNoZWNrIGluIGNvbnN0YW50IHRpbWUgd2hldGhlciBhIHBvaW50ZXIgaXNcbiAgICAgdmFsaWQsIGJ5IGNvbXBhcmluZyB0aGUgaWQgaW4gdGhlIHBvaW50ZXIgd2l0aCB0aGUgaWQgaW4gdGhlIGhlYWRlci5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgbm90IGluIHVzZSwgaXRzIGhlYWRlciBpcyBwYXJ0IG9mIHRoZSBmcmVlIGxpc3QsIGFuZCBpdHMgdHVwbGUgc2xvdHNcbiAgICAgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGVzLCBmcm9tIHRoZSBbZHVtbXldIHR1cGxlIHN1cHBsaWVkIHRvXG4gICAgIFtjcmVhdGVdLiAgV2UgbXVzdCBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgY29ycmVjdCB0eXBlIHRvIHByZXZlbnQgYSBzZWdmYXVsdCBpblxuICAgICBjb2RlIHRoYXQgKG1pc3Rha2VubHkpIHVzZXMgYSBwb2ludGVyIHRvIGEgZnJlZSB0dXBsZS5cblxuICAgICBGb3IgW1Bvb2wuVW5zYWZlXSwgYSBzbG90IGluIGEgZnJlZSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSBhbiBpbnQ7IGl0IG11c3Qgbm90IGJlXG4gICAgIHBvaW50ZXIgdG8gcHJldmVudCBhIHNwYWNlIGxlYWsuICBIb3dldmVyLCB0aGUgaW50IGluIHRoZSBzbG90IG1heSBub3QgcmVwcmVzZW50IGFcbiAgICAgdmFsaWQgdmFsdWUgb2YgdGhlIHR5cGUuXG4gICopXG5cbiAgbW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgICB0eXBlICgnc2xvdHMsICdhKSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCB0MCA9IDFcbiAgICBsZXQgdDEgPSAyXG4gICAgbGV0IHQyID0gM1xuICAgIGxldCB0MyA9IDRcbiAgICBsZXQgdDQgPSA1XG4gICAgbGV0IHQ1ID0gNlxuICAgIGxldCB0NiA9IDdcbiAgICBsZXQgdDcgPSA4XG4gICAgbGV0IHQ4ID0gOVxuICAgIGxldCB0OSA9IDEwXG4gICAgbGV0IHQxMCA9IDExXG4gICAgbGV0IHQxMSA9IDEyXG4gICAgbGV0IHQxMiA9IDEzXG4gICAgbGV0IHQxMyA9IDE0XG4gICAgbGV0JXRlc3QgXyA9IHQxMyA9IG1heF9zbG90XG4gIGVuZFxuXG4gICgqIFdlIG9ubHkgaGF2ZSBbSW50Lm51bV9iaXRzXSBiaXRzIGF2YWlsYWJsZSBmb3IgcG9vbCBwb2ludGVycy4gIFRoZSBiaXRzIG9mIGEgcG9vbFxuICAgICBwb2ludGVyIGVuY29kZSB0d28gdGhpbmdzOlxuXG4gICAgIC0gdGhlIHR1cGxlJ3MgYXJyYXkgaW5kZXggaW4gdGhlIHBvb2xcbiAgICAgLSB0aGUgdHVwbGUncyBpZGVudGlmaWVyIChub3QgbmVjZXNzYXJpbHkgdW5pcXVlKVxuXG4gICAgIFdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGFzIGxhcmdlIGFzIG5lZWRlZCBmb3IgdGhlIG1heGltdW0gcG9vbCBjYXBhY2l0eVxuICAgICB0aGF0IHdlIHdhbnQgdG8gc3VwcG9ydCwgYW5kIHVzZSB0aGUgcmVtYWluaW5nIFttYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHNdIGJpdHMgZm9yXG4gICAgIHRoZSBpZGVudGlmaWVyLiAgNjQtYml0IGFuZCAzMi1iaXQgYXJjaGl0ZWN0dXJlcyB0eXBpY2FsbHkgaGF2ZSB2ZXJ5IGRpZmZlcmVudFxuICAgICBhZGRyZXNzLXNwYWNlIHNpemVzLCBzbyB3ZSBjaG9vc2UgW2FycmF5X2luZGV4X251bV9iaXRzXSBkaWZmZXJlbnRseS4gKilcblxuICBsZXQgYXJyYXlfaW5kZXhfbnVtX2JpdHMgPVxuICAgIGlmIGFyY2hfc2l4dHlmb3VyXG4gICAgdGhlbiAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDYzKTtcbiAgICAgIDMwKVxuICAgIGVsc2UgKFxuICAgICAgYXNzZXJ0IChJbnQubnVtX2JpdHMgPSAzMSB8fCBJbnQubnVtX2JpdHMgPSAzMik7XG4gICAgICAyMilcbiAgOztcblxuICBsZXQgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzID0gSW50Lm51bV9iaXRzIC0gYXJyYXlfaW5kZXhfbnVtX2JpdHNcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzID4gMFxuICBsZXQldGVzdCBfID0gbWFza2VkX3R1cGxlX2lkX251bV9iaXRzID4gMFxuICBsZXQldGVzdCBfID0gYXJyYXlfaW5kZXhfbnVtX2JpdHMgKyBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPD0gSW50Lm51bV9iaXRzXG4gIGxldCBtYXhfYXJyYXlfbGVuZ3RoID0gMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHNcblxuICBtb2R1bGUgVHVwbGVfaWQgOiBzaWdcbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpbml0IDogdFxuICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIGV4YW1wbGVzIDogdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgKCogV2UgZ3VhcmFudGVlIHRoYXQgdHVwbGUgaWRzIGFyZSBub25uZWdhdGl2ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGVuY29kZWQgaW5cbiAgICAgICBoZWFkZXJzLiAqKVxuICAgIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAwKVxuICAgIGxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG4gICAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCBpbml0ID0gMFxuICAgIGxldCBuZXh0IHQgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIHQgKyAxIGVsc2UgaWYgdCA9IEludC5tYXhfdmFsdWUgdGhlbiAwIGVsc2UgdCArIDFcbiAgICBsZXQgdG9faW50IHQgPSB0XG5cbiAgICBsZXQgb2ZfaW50IGkgPVxuICAgICAgaWYgaSA8IDBcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUdXBsZV9pZC5vZl9pbnQgZ290IG5lZ2F0aXZlIGludFwiIGkgWyVzZXhwX29mOiBpbnRdO1xuICAgICAgaVxuICAgIDs7XG5cbiAgICBsZXQgZXhhbXBsZXMgPSBbIDA7IDE7IDB4MUZGRl9GRkZGOyBJbnQubWF4X3ZhbHVlIF1cbiAgZW5kXG5cbiAgbGV0IHR1cGxlX2lkX21hc2sgPSAoMSBsc2wgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzKSAtIDFcblxuICBtb2R1bGUgUG9pbnRlciA6IHNpZ1xuICAgICgqIFtQb2ludGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgc3VtIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IE5vcm1hbCBvZiB7IGhlYWRlcl9pbmRleCA6IGludDsgbWFza2VkX3R1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgVGhlIGVuY29kaW5nIGlzIGNob3NlbiB0byBvcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gb3BlcmF0aW9uLCBuYW1lbHkgdHVwbGUtc2xvdFxuICAgICAgIGFjY2VzcywgdGhlIFtzbG90X2luZGV4XSBmdW5jdGlvbi4gIFRoZSBlbmNvZGluZyBpcyBkZXNpZ25lZCBzbyB0aGF0IFtzbG90X2luZGV4XVxuICAgICAgIHByb2R1Y2VzIGEgbmVnYXRpdmUgbnVtYmVyIGZvciBbTnVsbF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHN1YnNlcXVlbnQgYXJyYXkgYm91bmRzXG4gICAgICAgY2hlY2sgdG8gZmFpbC4gKilcblxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHBoeXNfY29tcGFyZSA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgcGh5c19lcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiBUaGUgbnVsbCBwb2ludGVyLiAgW251bGxdIGlzIGEgZnVuY3Rpb24gZHVlIHRvIGlzc3VlcyB3aXRoIHRoZSB2YWx1ZSByZXN0cmljdGlvbi4gKilcblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG5cbiAgICAoKiBOb3JtYWwgcG9pbnRlcnMuICopXG5cbiAgICB2YWwgY3JlYXRlIDogaGVhZGVyX2luZGV4OmludCAtPiBUdXBsZV9pZC50IC0+IF8gdFxuICAgIHZhbCBoZWFkZXJfaW5kZXggOiBfIHQgLT4gaW50XG4gICAgdmFsIG1hc2tlZF90dXBsZV9pZCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgc2xvdF9pbmRleCA6IF8gdCAtPiAoXywgXykgU2xvdC50IC0+IGludFxuICAgIHZhbCBmaXJzdF9zbG90X2luZGV4IDogXyB0IC0+IGludFxuXG4gICAgbW9kdWxlIElkIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICAgIHZhbCBvZl9pbnQ2MyA6IEludDYzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIHRvX2lkIDogXyB0IC0+IElkLnRcbiAgICB2YWwgb2ZfaWRfZXhuIDogSWQudCAtPiBfIHRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogQSBwb2ludGVyIGlzIGVpdGhlciBbbnVsbF0gb3IgdGhlIChwb3NpdGl2ZSkgaW5kZXggaW4gdGhlIHBvb2wgb2YgdGhlIG5leHQtZnJlZVxuICAgICAgIGZpZWxkIHByZWNlZWRpbmcgdGhlIHR1cGxlJ3Mgc2xvdHMuICopXG4gICAgdHlwZSAnc2xvdHMgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfIHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8UG9vbC5Qb2ludGVyLnQ6IDB4JTA4eD5cIiB0KVxuICAgIGxldCBwaHlzX2VxdWFsICh0MSA6IF8gdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG4gICAgbGV0IHBoeXNfY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgbnVsbCAoKSA9IC1tYXhfc2xvdCAtIDFcbiAgICBsZXQgaXNfbnVsbCB0ID0gcGh5c19lcXVhbCB0IChudWxsICgpKVxuXG4gICAgKCogW251bGxdIG11c3QgYmUgc3VjaCB0aGF0IFtudWxsICsgc2xvdF0gaXMgYW4gaW52YWxpZCBhcnJheSBpbmRleCBmb3IgYWxsIHNsb3RzLlxuICAgICAgIE90aGVyd2lzZSBnZXQvc2V0IG9uIHRoZSBudWxsIHBvaW50ZXIgbWF5IGxlYWQgdG8gYSBzZWdmYXVsdC4gKilcbiAgICBsZXQldGVzdCBfID0gbnVsbCAoKSArIG1heF9zbG90IDwgMFxuXG4gICAgbGV0IGNyZWF0ZSB+aGVhZGVyX2luZGV4ICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID1cbiAgICAgIGhlYWRlcl9pbmRleFxuICAgICAgbG9yICgoVHVwbGVfaWQudG9faW50IHR1cGxlX2lkIGxhbmQgdHVwbGVfaWRfbWFzaykgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKVxuICAgIDs7XG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X21hc2sgPSAoMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpIC0gMVxuICAgIGxldCBtYXNrZWRfdHVwbGVfaWQgdCA9IHQgbHNyIGFycmF5X2luZGV4X251bV9iaXRzXG4gICAgbGV0IGhlYWRlcl9pbmRleCB0ID0gdCBsYW5kIGhlYWRlcl9pbmRleF9tYXNrXG4gICAgbGV0IGludmFyaWFudCBfIHQgPSBpZiBub3QgKGlzX251bGwgdCkgdGhlbiBhc3NlcnQgKGhlYWRlcl9pbmRleCB0ID4gMClcbiAgICBsZXQldGVzdF91bml0IF8gPSBpbnZhcmlhbnQgaWdub3JlIChudWxsICgpKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIExpc3QuaXRlciBUdXBsZV9pZC5leGFtcGxlcyB+ZjooZnVuIHR1cGxlX2lkIC0+XG4gICAgICAgIGludmFyaWFudCBpZ25vcmUgKGNyZWF0ZSB+aGVhZGVyX2luZGV4OjEgdHVwbGVfaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2xvdF9pbmRleCB0IHNsb3QgPSBoZWFkZXJfaW5kZXggdCArIHNsb3RcbiAgICBsZXQgZmlyc3Rfc2xvdF9pbmRleCB0ID0gc2xvdF9pbmRleCB0IFNsb3QudDBcblxuICAgIG1vZHVsZSBJZCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgdG9faW50NjMgdCA9IHRcbiAgICAgIGxldCBvZl9pbnQ2MyBpID0gaVxuICAgIGVuZFxuXG4gICAgbGV0IHRvX2lkIHQgPSBJZC5vZl9pbnQgdFxuXG4gICAgbGV0IG9mX2lkX2V4biBpZCA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHQgPSBJZC50b19pbnRfZXhuIGlkIGluXG4gICAgICAgIGlmIGlzX251bGwgdFxuICAgICAgICB0aGVuIHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHNob3VsZF9lcXVhbCA9XG4gICAgICAgICAgICBjcmVhdGUgfmhlYWRlcl9pbmRleDooaGVhZGVyX2luZGV4IHQpIChUdXBsZV9pZC5vZl9pbnQgKG1hc2tlZF90dXBsZV9pZCB0KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdCBzaG91bGRfZXF1YWxcbiAgICAgICAgICB0aGVuIHRcbiAgICAgICAgICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwic2hvdWxkIGVxdWFsXCIgc2hvdWxkX2VxdWFsIFslc2V4cF9vZjogXyB0XSlcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvaW50ZXIub2ZfaWRfZXhuIGdvdCBzdHJhbmdlIGlkXCJcbiAgICAgICAgICAoaWQsIGV4bilcbiAgICAgICAgICBbJXNleHBfb2Y6IElkLnQgKiBleG5dXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEhlYWRlciA6IHNpZ1xuICAgICgqIEEgW0hlYWRlci50XSBpcyBhbiBlbmNvZGluZyBhcyBhbiBbaW50XSBvZiB0aGUgZm9sbG93aW5nIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IEZyZWUgb2YgeyBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IDogaW50IH1cbiAgICAgICAgIHwgVXNlZCBvZiB7IHR1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBmcmVlLCBpdHMgaGVhZGVyIGlzIHNldCB0byBlaXRoZXIgW051bGxdIG9yIFtGcmVlXSB3aXRoXG4gICAgICAgW25leHRfZnJlZV9oZWFkZXJfaW5kZXhdIGluZGljYXRpbmcgdGhlIGhlYWRlciBvZiB0aGUgbmV4dCB0dXBsZSBvbiB0aGUgZnJlZSBsaXN0LlxuICAgICAgIElmIGEgdHVwbGUgaXMgaW4gdXNlLCBpdCBoZWFkZXIgaXMgc2V0IHRvIFtVc2VkXS4gKilcblxuICAgIHR5cGUgdCA9IHByaXZhdGUgaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB2YWwgbnVsbCA6IHRcbiAgICB2YWwgaXNfbnVsbCA6IHQgLT4gYm9vbFxuICAgIHZhbCBmcmVlIDogbmV4dF9mcmVlX2hlYWRlcl9pbmRleDppbnQgLT4gdFxuICAgIHZhbCBpc19mcmVlIDogdCAtPiBib29sXG4gICAgdmFsIG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiB0IC0+IGludFxuXG4gICAgKCogb25seSB2YWxpZCBpZiBbaXNfZnJlZSB0XSAqKVxuXG4gICAgdmFsIHVzZWQgOiBUdXBsZV9pZC50IC0+IHRcbiAgICB2YWwgaXNfdXNlZCA6IHQgLT4gYm9vbFxuICAgIHZhbCB0dXBsZV9pZCA6IHQgLT4gVHVwbGVfaWQudFxuXG4gICAgKCogb25seSB2YWxpZCBpZiBbaXNfdXNlZCB0XSAqKVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnRcblxuICAgIGxldCBudWxsID0gMFxuICAgIGxldCBpc19udWxsIHQgPSB0ID0gMFxuXG4gICAgKCogV2Uga25vdyB0aGF0IGhlYWRlciBpbmRpY2VzIGFyZSBbPiAwXSwgYmVjYXVzZSBpbmRleCBbMF0gaG9sZHMgdGhlIG1ldGFkYXRhLiAqKVxuICAgIGxldCBmcmVlIH5uZXh0X2ZyZWVfaGVhZGVyX2luZGV4ID0gbmV4dF9mcmVlX2hlYWRlcl9pbmRleFxuICAgIGxldCBpc19mcmVlIHQgPSB0ID4gMFxuICAgIGxldCBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IHQgPSB0XG4gICAgbGV0IHVzZWQgKHR1cGxlX2lkIDogVHVwbGVfaWQudCkgPSAtMSAtICh0dXBsZV9pZCA6PiBpbnQpXG4gICAgbGV0IGlzX3VzZWQgdCA9IHQgPCAwXG4gICAgbGV0IHR1cGxlX2lkIHQgPSBUdXBsZV9pZC5vZl9pbnQgKC0odCArIDEpKVxuXG4gICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgIExpc3QuaXRlciBUdXBsZV9pZC5leGFtcGxlcyB+ZjooZnVuIGlkIC0+XG4gICAgICAgIGxldCB0ID0gdXNlZCBpZCBpblxuICAgICAgICBhc3NlcnQgKGlzX3VzZWQgdCk7XG4gICAgICAgIGFzc2VydCAoVHVwbGVfaWQuZXF1YWwgKHR1cGxlX2lkIHQpIGlkKSlcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIGlmIGlzX251bGwgdFxuICAgICAgdGhlbiBTZXhwLkF0b20gXCJudWxsXCJcbiAgICAgIGVsc2UgaWYgaXNfZnJlZSB0XG4gICAgICB0aGVuIFNleHAuKExpc3QgWyBBdG9tIFwiRnJlZVwiOyBBdG9tIChJbnQudG9fc3RyaW5nIChuZXh0X2ZyZWVfaGVhZGVyX2luZGV4IHQpKSBdKVxuICAgICAgZWxzZSBTZXhwLihMaXN0IFsgQXRvbSBcIlVzZWRcIjsgQXRvbSAoVHVwbGVfaWQudG9fc3RyaW5nICh0dXBsZV9pZCB0KSkgXSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWV0YWRhdGFfaW5kZXggPSAwXG4gIGxldCBzdGFydF9vZl90dXBsZXNfaW5kZXggPSAxXG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICAobWF4X2FycmF5X2xlbmd0aCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleCkgLyAoMSArIHNsb3RzX3Blcl90dXBsZSlcbiAgOztcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGZvciBzbG90c19wZXJfdHVwbGUgPSAxIHRvIG1heF9zbG90IGRvXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAoKDEgKyBzbG90c19wZXJfdHVwbGUpICogbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgIDw9IG1heF9hcnJheV9sZW5ndGgpXG4gICAgZG9uZVxuICA7O1xuXG4gIG1vZHVsZSBNZXRhZGF0YSA9IHN0cnVjdFxuICAgIHR5cGUgJ3Nsb3RzIHQgPVxuICAgICAgeyAoKiBbc2xvdHNfcGVyX3R1cGxlXSBpcyBudW1iZXIgb2Ygc2xvdHMgaW4gYSB0dXBsZSBhcyBzZWVuIGJ5IHRoZSB1c2VyOyBpLmUuIG5vdFxuICAgICAgICAgICBjb3VudGluZyB0aGUgbmV4dC1mcmVlIHBvaW50ZXIuICopXG4gICAgICAgIHNsb3RzX3Blcl90dXBsZSA6IGludFxuICAgICAgOyBjYXBhY2l0eSA6IGludFxuICAgICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgICAgOyBtdXRhYmxlIG5leHRfaWQgOiBUdXBsZV9pZC50XG4gICAgICA7IG11dGFibGUgZmlyc3RfZnJlZSA6IEhlYWRlci50XG4gICAgICAoKiBbZHVtbXldIGlzIFtOb25lXSBpbiBhbiB1bnNhZmUgcG9vbC4gIEluIGEgc2FmZSBwb29sLCBbZHVtbXldIGlzIFtTb21lIGFdLCB3aXRoXG4gICAgICAgICBbVW5pZm9ybV9hcnJheS5sZW5ndGggYSA9IHNsb3RzX3Blcl90dXBsZV0uICBbZHVtbXldIGlzIGFjdHVhbGx5IGEgdHVwbGUgdmFsdWVcbiAgICAgICAgIHdpdGggdGhlIGNvcnJlY3QgdHlwZSAoY29ycmVzcG9uZGluZyB0byBbJ3Nsb3RzXSksIGJ1dCB3ZSBtYWtlIHRoZSB0eXBlIG9mXG4gICAgICAgICBbZHVtbXldIGJlIFtPYmoudCBVbmlmb3JtX2FycmF5LnRdIGJlY2F1c2Ugd2UgY2FuJ3Qgd3JpdGUgdGhhdCB0eXBlIGhlcmUuICBBbHNvLFxuICAgICAgICAgdGhlIHB1cnBvc2Ugb2YgW2R1bW15XSBpcyB0byBpbml0aWFsaXplIGEgcG9vbCBlbGVtZW50LCBtYWtpbmcgW2R1bW15XSBhbiBbT2JqLnRcbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudF0gbGV0cyB1cyBpbml0aWFsaXplIGEgcG9vbCBlbGVtZW50IHVzaW5nIFtVbmlmb3JtX2FycmF5LmJsaXRdXG4gICAgICAgICBmcm9tIFtkdW1teV0gdG8gdGhlIHBvb2wsIHdoaWNoIGlzIGFuIFtPYmoudCBVbmlmb3JtX2FycmF5LnRdLiAqKVxuICAgICAgOyBkdW1teSA6IChPYmoudCBVbmlmb3JtX2FycmF5LnRbQHNleHAub3BhcXVlXSkgb3B0aW9uXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQgPSAxICsgdC5zbG90c19wZXJfdHVwbGVcbiAgICBsZXQgYXJyYXlfbGVuZ3RoIHQgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggKyAodC5jYXBhY2l0eSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSB0IH5oZWFkZXJfaW5kZXggPVxuICAgICAgKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleCkgLyBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0XG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtID1cbiAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0dXBsZV9udW0gKiBhcnJheV9pbmRpY2VzX3Blcl90dXBsZSB0KVxuICAgIDs7XG5cbiAgICBsZXQgdHVwbGVfbnVtX3RvX2ZpcnN0X3Nsb3RfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgdHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCB0IHR1cGxlX251bSArIDFcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IHQubGVuZ3RoID0gdC5jYXBhY2l0eVxuICBlbmRcblxuICBvcGVuIE1ldGFkYXRhXG5cbiAgKCogV2UgdXNlIHR5cGUgW09iai50XSBiZWNhdXNlIHRoZSBhcnJheSBob2xkcyBhIG1peCBvZiBpbnRlZ2VycyBhcyB3ZWxsIGFzIE9DYW1sIHZhbHVlc1xuICAgICBvZiBhcmJpdHJhcnkgdHlwZS4gKilcbiAgdHlwZSAnc2xvdHMgdCA9IE9iai50IFVuaWZvcm1fYXJyYXkudFxuXG4gIGxldCBtZXRhZGF0YSAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgbWV0YWRhdGFfaW5kZXggfD4gKE9iai5vYmogOiBfIC0+IHNsb3RzIE1ldGFkYXRhLnQpXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID0gKG1ldGFkYXRhIHQpLmxlbmd0aFxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdHkgdCA9IE1ldGFkYXRhLnNleHBfb2ZfdCBzZXhwX29mX3R5IChtZXRhZGF0YSB0KVxuXG4gICgqIEJlY2F1c2UgW3Vuc2FmZV9oZWFkZXJdIGFuZCBbdW5zYWZlX3NldF9oZWFkZXJdIGRvIG5vdCBkbyBhIGJvdW5kcyBjaGVjaywgb25lIG11c3QgYmVcbiAgICAgc3VyZSB0aGF0IG9uZSBoYXMgYSB2YWxpZCBbaGVhZGVyX2luZGV4XSBiZWZvcmUgY2FsbGluZyB0aGVtLiAqKVxuICBsZXQgdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGhlYWRlcl9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gSGVhZGVyLnQpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCAoaGVhZGVyIDogSGVhZGVyLnQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBoZWFkZXJfaW5kZXggKGhlYWRlciA6PiBpbnQpXG4gIDs7XG5cbiAgbGV0IGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4ID1cbiAgICBoZWFkZXJfaW5kZXggPj0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICYmIGhlYWRlcl9pbmRleCA8IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHRcbiAgOztcblxuICBsZXQgdW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXIgPVxuICAgIGxldCBoZWFkZXJfaW5kZXggPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IGluXG4gICAgSGVhZGVyLmlzX3VzZWQgaGVhZGVyXG4gICAgJiYgVHVwbGVfaWQudG9faW50IChIZWFkZXIudHVwbGVfaWQgaGVhZGVyKSBsYW5kIHR1cGxlX2lkX21hc2tcbiAgICAgICA9IFBvaW50ZXIubWFza2VkX3R1cGxlX2lkIHBvaW50ZXJcbiAgOztcblxuICBsZXQgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgPVxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKVxuICAgICgqIEF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhlIHBvaW50ZXIgaXNuJ3QgW251bGxdIGFuZCBpcyBpbiBib3VuZHMsIHNvIHdlIGtub3cgaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgYSBoZWFkZXIsIHNpbmNlIHdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBhbGwgcG9pbnRlcnMgb3RoZXIgdGhhblxuICAgICAgIFtudWxsXSBhcmUuICopXG4gICAgJiYgdW5zYWZlX3BvaW50ZXJfaXNfbGl2ZSB0IHBvaW50ZXJcbiAgOztcblxuICBsZXQgaWRfb2ZfcG9pbnRlciBfdCBwb2ludGVyID0gUG9pbnRlci50b19pZCBwb2ludGVyXG5cbiAgbGV0IGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGxldCBtZXRhZGF0YSA9IG1ldGFkYXRhIHQgaW5cbiAgICBoZWFkZXJfaW5kZXhfaXNfaW5fYm91bmRzIHQgfmhlYWRlcl9pbmRleFxuICAgICYmIDBcbiAgICAgICA9IChoZWFkZXJfaW5kZXggLSBzdGFydF9vZl90dXBsZXNfaW5kZXgpXG4gICAgICAgICBtb2QgTWV0YWRhdGEuYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgcG9pbnRlcl9vZl9pZF9leG4gdCBpZCA9XG4gICAgdHJ5XG4gICAgICBsZXQgcG9pbnRlciA9IFBvaW50ZXIub2ZfaWRfZXhuIGlkIGluXG4gICAgICBpZiBub3QgKFBvaW50ZXIuaXNfbnVsbCBwb2ludGVyKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgICAgIGlmIG5vdCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleClcbiAgICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImludmFsaWQgaGVhZGVyIGluZGV4XCIgaGVhZGVyX2luZGV4IFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgaWYgbm90ICh1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlcikgdGhlbiBmYWlsd2l0aCBcInBvaW50ZXIgbm90IGxpdmVcIik7XG4gICAgICBwb2ludGVyXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlBvb2wucG9pbnRlcl9vZl9pZF9leG4gZ290IGludmFsaWQgaWRcIlxuICAgICAgICAoaWQsIHQsIGV4bilcbiAgICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnQgKiBfIHQgKiBleG5dXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgbWV0YWRhdGEpIGluXG4gICAgICBNZXRhZGF0YS5GaWVsZHMuaXRlclxuICAgICAgICB+c2xvdHNfcGVyX3R1cGxlOihjaGVjayAoZnVuIHNsb3RzX3Blcl90dXBsZSAtPiBhc3NlcnQgKHNsb3RzX3Blcl90dXBsZSA+IDApKSlcbiAgICAgICAgfmNhcGFjaXR5OlxuICAgICAgICAgIChjaGVjayAoZnVuIGNhcGFjaXR5IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSA+PSAwKTtcbiAgICAgICAgICAgICBhc3NlcnQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQgPSBNZXRhZGF0YS5hcnJheV9sZW5ndGggbWV0YWRhdGEpKSlcbiAgICAgICAgfmxlbmd0aDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA8PSBtZXRhZGF0YS5jYXBhY2l0eSkpKVxuICAgICAgICB+bmV4dF9pZDooY2hlY2sgVHVwbGVfaWQuaW52YXJpYW50KVxuICAgICAgICB+Zmlyc3RfZnJlZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJzdF9mcmVlIC0+XG4gICAgICAgICAgICAgbGV0IGZyZWUgPSBBcnJheS5jcmVhdGUgfmxlbjptZXRhZGF0YS5jYXBhY2l0eSBmYWxzZSBpblxuICAgICAgICAgICAgIGxldCByID0gcmVmIGZpcnN0X2ZyZWUgaW5cbiAgICAgICAgICAgICB3aGlsZSBub3QgKEhlYWRlci5pc19udWxsICFyKSBkb1xuICAgICAgICAgICAgICAgbGV0IGhlYWRlciA9ICFyIGluXG4gICAgICAgICAgICAgICBhc3NlcnQgKEhlYWRlci5pc19mcmVlIGhlYWRlcik7XG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyX2luZGV4ID0gSGVhZGVyLm5leHRfZnJlZV9oZWFkZXJfaW5kZXggaGVhZGVyIGluXG4gICAgICAgICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkX2hlYWRlcl9pbmRleCB0IH5oZWFkZXJfaW5kZXgpO1xuICAgICAgICAgICAgICAgbGV0IHR1cGxlX251bSA9IGhlYWRlcl9pbmRleF90b190dXBsZV9udW0gbWV0YWRhdGEgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgaWYgZnJlZS4odHVwbGVfbnVtKVxuICAgICAgICAgICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImN5Y2xlIGluIGZyZWUgbGlzdFwiIHR1cGxlX251bSBbJXNleHBfb2Y6IGludF07XG4gICAgICAgICAgICAgICBmcmVlLih0dXBsZV9udW0pIDwtIHRydWU7XG4gICAgICAgICAgICAgICByIDo9IHVuc2FmZV9oZWFkZXIgdCB+aGVhZGVyX2luZGV4XG4gICAgICAgICAgICAgZG9uZSkpXG4gICAgICAgIH5kdW1teTpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBTb21lIGR1bW15IC0+IGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHVtbXkgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBpZiBIZWFkZXIuaXNfZnJlZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0X3Nsb3QgPSB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgICBmb3Igc2xvdCA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChPYmouaXNfaW50IChVbmlmb3JtX2FycmF5LmdldCB0IChmaXJzdF9zbG90ICsgc2xvdCkpKVxuICAgICAgICAgICAgICAgICAgIGRvbmUpXG4gICAgICAgICAgICAgICBkb25lKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biwgdCkgWyVzZXhwX29mOiBleG4gKiBfIHRdXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPSAobWV0YWRhdGEgdCkuY2FwYWNpdHlcbiAgbGV0IGlzX2Z1bGwgdCA9IE1ldGFkYXRhLmlzX2Z1bGwgKG1ldGFkYXRhIHQpXG5cbiAgbGV0IHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleCA9XG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IG1ldGFkYXRhLmZpcnN0X2ZyZWU7XG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSBIZWFkZXIuZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleDpoZWFkZXJfaW5kZXhcbiAgOztcblxuICBsZXQgc2V0X21ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIG1ldGFkYXRhID1cbiAgICBVbmlmb3JtX2FycmF5LnNldCB0IG1ldGFkYXRhX2luZGV4IChPYmoucmVwciAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlX2FycmF5ICh0eXBlIHNsb3RzKSAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSA6IHNsb3RzIHQgPVxuICAgIGxldCB0ID0gVW5pZm9ybV9hcnJheS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YTtcbiAgICB0XG4gIDs7XG5cbiAgKCogSW5pdGlhbGl6ZSB0dXBsZXMgbnVtYmVyZWQgZnJvbSBbbG9dIChpbmNsdXNpdmUpIHVwIHRvIFtoaV0gKGV4Y2x1c2l2ZSkuICBGb3IgZWFjaFxuICAgICB0dXBsZSwgdGhpcyBwdXRzIGR1bW15IHZhbHVlcyBpbiB0aGUgdHVwbGUncyBzbG90cyBhbmQgYWRkcyB0aGUgdHVwbGUgdG8gdGhlIGZyZWVcbiAgICAgbGlzdC4gKilcbiAgbGV0IHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvIH5oaSA9XG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSBsbyB0byBoaSAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOih0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgZm9yIHR1cGxlX251bSA9IGhpIC0gMSBkb3dudG8gbG8gZG9cbiAgICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0XG4gICAgICAgIHRcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgfmhlYWRlcl9pbmRleDoodHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuY3JlYXRlIGdvdCBpbnZhbGlkIGNhcGFjaXR5XCIgY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBzbG90c19wZXJfdHVwbGUgPSBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgaW5cbiAgICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBjYXBhY2l0eSA+IG1heF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5jcmVhdGUgZ290IHRvbyBsYXJnZSBjYXBhY2l0eVwiXG4gICAgICAgIChjYXBhY2l0eSwgYG1heCBtYXhfY2FwYWNpdHkpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4IG9mIGludCBdXTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gVHVwbGVfaWQuaW5pdFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG86MCB+aGk6Y2FwYWNpdHk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUgKHR5cGUgdHVwbGUpIChzbG90cyA6ICh0dXBsZSwgXykgU2xvdHMudCkgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgbGV0IGR1bW15ID1cbiAgICAgIGlmIFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyA9IDFcbiAgICAgIHRoZW4gVW5pZm9ybV9hcnJheS5zaW5nbGV0b24gKE9iai5yZXByIChkdW1teSA6IHR1cGxlKSlcbiAgICAgIGVsc2UgKE9iai5tYWdpYyAoZHVtbXkgOiB0dXBsZSkgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15OihTb21lIGR1bW15KVxuICA7O1xuXG4gICgqIFB1cmdlIGEgcG9vbCBhbmQgbWFrZSBpdCB1bnVzYWJsZS4gKilcbiAgbGV0IGRlc3Ryb3kgdCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICgqIFdlIGNsZWFyIG91dCBhbGwgdGhlIHBvb2wncyBlbnRyaWVzLCB3aGljaCBjYXVzZXMgYWxsIHBvaW50ZXJzIHRvIGJlIGludmFsaWQuICBUaGlzXG4gICAgICAgYWxzbyBwcmV2ZW50cyB0aGUgZGVzdHJveWVkIHBvb2wgZnJvbSB1bm5lY2Vzc2FyaWx5IGtlZXBpbmcgaGVhcCBibG9ja3MgYWxpdmUuXG4gICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIFtmcmVlXWluZyBhbGwgdGhlIGVudHJpZXMgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHdlIG1ha2UgdGhlXG4gICAgICAgZnJlZSBsaXN0IGVtcHR5IGFzIHdlbGwuICopXG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZm9yIGkgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdCAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKE9iai5yZXByIDApXG4gICAgICAgZG9uZVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IEhlYWRlci5udWxsO1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KGhlYWRlcl9pbmRleCArIDEpXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5ID0gMFxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBtZXRhZGF0YS5uZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teSA9IG1ldGFkYXRhLmR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldFtAY29sZF0gZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgbGV0IHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIDsgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICAgICAgOyBsZW5ndGhcbiAgICAgICAgOyBuZXh0X2lkXG4gICAgICAgIDsgZmlyc3RfZnJlZSA9IF9cbiAgICAgICAgOyBkdW1teVxuICAgICAgICB9XG4gICAgICA9XG4gICAgICBtZXRhZGF0YSB0XG4gICAgaW5cbiAgICBsZXQgY2FwYWNpdHkgPVxuICAgICAgbWluIChtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSkgKGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkpXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5ncm93IGNhbm5vdCBncm93IHBvb2w7IGNhcGFjaXR5IGFscmVhZHkgYXQgbWF4aW11bVwiXG4gICAgICAgIGNhcGFjaXR5XG4gICAgICAgIFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoXG4gICAgICA7IG5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCcgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6dFxuICAgICAgfnNyY19wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+ZHN0OnQnXG4gICAgICB+ZHN0X3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5sZW46KG9sZF9jYXBhY2l0eSAqIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhKTtcbiAgICBkZXN0cm95IHQ7XG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCcgbWV0YWRhdGEgfmxvOm9sZF9jYXBhY2l0eSB+aGk6Y2FwYWNpdHk7XG4gICAgZm9yIHR1cGxlX251bSA9IG9sZF9jYXBhY2l0eSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCcgfmhlYWRlcl9pbmRleCBpblxuICAgICAgaWYgbm90IChIZWFkZXIuaXNfdXNlZCBoZWFkZXIpXG4gICAgICB0aGVuIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQnIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXhcbiAgICBkb25lO1xuICAgIHQnXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9tYWxsb2NfZnVsbCB0ID1cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wubWFsbG9jIG9mIGZ1bGwgcG9vbFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIDs7XG5cbiAgbGV0IG1hbGxvYyAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA6IHNsb3RzIFBvaW50ZXIudCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBmaXJzdF9mcmVlID0gbWV0YWRhdGEuZmlyc3RfZnJlZSBpblxuICAgIGlmIEhlYWRlci5pc19udWxsIGZpcnN0X2ZyZWUgdGhlbiByYWlzZV9tYWxsb2NfZnVsbCB0O1xuICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBmaXJzdF9mcmVlIGluXG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleDtcbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoICsgMTtcbiAgICBsZXQgdHVwbGVfaWQgPSBtZXRhZGF0YS5uZXh0X2lkIGluXG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChIZWFkZXIudXNlZCB0dXBsZV9pZCk7XG4gICAgbWV0YWRhdGEubmV4dF9pZCA8LSBUdXBsZV9pZC5uZXh0IHR1cGxlX2lkO1xuICAgIFBvaW50ZXIuY3JlYXRlIH5oZWFkZXJfaW5kZXggdHVwbGVfaWRcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCAtIDE7XG4gICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKTtcbiAgICBtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcG9zID0gUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIgaW5cbiAgICAgIGZvciBpID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCAocG9zICsgaSlcbiAgICAgIGRvbmVcbiAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIH5kc3Q6dFxuICAgICAgICB+ZHN0X3BvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICAoKiBDaGVjayBbcG9pbnRlcl9pc192YWxpZF0gdG86XG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgbnVsbCBwb2ludGVyXG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgZnJlZSBwb2ludGVyICh0aGlzIHdvdWxkIGxlYWQgdG8gYSBwb29sIGluY29uc2lzdGVuY3kpXG4gICAgICAgLSBiZSBhYmxlIHRvIHVzZSB1bnNhZmUgZnVuY3Rpb25zIGFmdGVyLiAqKVxuICAgIGlmIG5vdCAocG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmZyZWUgb2YgaW52YWxpZCBwb2ludGVyXCJcbiAgICAgICAgKHBvaW50ZXIsIHQpXG4gICAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnQgKiBfIHRdO1xuICAgIHVuc2FmZV9mcmVlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MiB0IGEwIGExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxNCkgKE9iai5yZXByIGExMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBnZXQgdCBwIHNsb3QgPSBPYmoub2JqIChVbmlmb3JtX2FycmF5LmdldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcblxuICBsZXQgdW5zYWZlX2dldCB0IHAgc2xvdCA9XG4gICAgT2JqLm9iaiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwIHNsb3QgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuXG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlICh0eXBlIHR1cGxlKSAodCA6ICh0dXBsZSwgXykgU2xvdHMudCB0KSBwb2ludGVyID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGxlbiA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGxlbiA9IDFcbiAgICB0aGVuIGdldCB0IHBvaW50ZXIgU2xvdC50MFxuICAgIGVsc2VcbiAgICAgIChPYmoubWFnaWNcbiAgICAgICAgIChVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKSB+bGVuXG4gICAgICAgICAgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgICAgOiB0dXBsZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvb2xcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvb2xcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSA9IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6Tm9uZVxuZW5kXG5cbm1vZHVsZSBEZWJ1ZyAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgdHJ1ZVxuICBsZXQgc2hvd19tZXNzYWdlcyA9IHJlZiB0cnVlXG5cbiAgbGV0IGRlYnVnIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGxldCBwcmVmaXggPSBcIlBvb2wuXCIgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIHRzIH5mOihpbnZhcmlhbnQgaWdub3JlKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlcyB0aGVuIERlYnVnLmVwcmludHMgKGNvbmNhdCBbIHByZWZpeDsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlblxuICAgICAgRGVidWcuZXByaW50c1xuICAgICAgICAoY29uY2F0IFsgcHJlZml4OyBuYW1lOyBcIiByZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICBvcGVuIFBvaW50ZXJcblxuICAgIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfY29tcGFyZVwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2NvbXBhcmUgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2VxdWFsXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2VxdWFsIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbnVsbCB0ID1cbiAgICAgIGRlYnVnIFwiUG9pbnRlci5pc19udWxsXCIgW10gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX251bGwgdClcbiAgICA7O1xuXG4gICAgbGV0IG51bGwgPSBudWxsXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSWRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICBsZXQgb2ZfaW50NjMgaSA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC5vZl9pbnQ2M1wiIFtdIGkgWyVzZXhwX29mOiBJbnQ2My50XSBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICBvZl9pbnQ2MyBpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQudG9faW50NjNcIiBbXSB0IFslc2V4cF9vZjogdF0gWyVzZXhwX29mOiBJbnQ2My50XSAoZnVuICgpIC0+XG4gICAgICAgICAgdG9faW50NjMgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcImlkX29mX3BvaW50ZXJcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIChmdW4gKCkgLT4gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfb2ZfaWRfZXhuXCJcbiAgICAgIFsgdCBdXG4gICAgICBpZFxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX29mX2lkX2V4biB0IGlkKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9pc192YWxpZFwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBkZWJ1ZyBcImNyZWF0ZVwiIFtdIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkpXG4gIDs7XG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICBkZWJ1ZyBcIm1heF9jYXBhY2l0eVwiIFtdIHNsb3RzX3Blcl90dXBsZSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT5cbiAgICAgIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID1cbiAgICBkZWJ1ZyBcImNhcGFjaXR5XCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT4gY2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgZGVidWdcbiAgICAgIFwiZ3Jvd1wiXG4gICAgICBbIHQgXVxuICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSlcbiAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IG9wdGlvbiBdXVxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gICAgICAoZnVuICgpIC0+IGdyb3cgP2NhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGlzX2Z1bGwgdCA9XG4gICAgZGVidWcgXCJpc19mdWxsXCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX2Z1bGwgdClcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcInVuc2FmZV9mcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIHVuc2FmZV9mcmVlIHQgcClcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwiZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+IGZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19uZXcgdCBmID0gZGVidWcgXCJuZXdcIiBbIHQgXSAoKSBbJXNleHBfb2Y6IHVuaXRdIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIGZcbiAgbGV0IG5ldzEgdCBhMCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBcImdldF90dXBsZVwiIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+XG4gICAgICBnZXRfdHVwbGUgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19nZXQgbmFtZSBmIHQgcG9pbnRlciA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPiBmIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwiZ2V0XCIgZ2V0IHQgcG9pbnRlciBzbG90XG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwidW5zYWZlX2dldFwiIHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3RcblxuICBsZXQgZGVidWdfc2V0IG5hbWUgZiB0IHBvaW50ZXIgc2xvdCBhID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICBmIHQgcG9pbnRlciBzbG90IGEpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwic2V0XCIgc2V0IHQgcG9pbnRlciBzbG90IGFcbiAgbGV0IHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInVuc2FmZV9zZXRcIiB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGFcbmVuZFxuXG5tb2R1bGUgRXJyb3JfY2hlY2sgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgbXV0YWJsZSBpc192YWxpZCA6IGJvb2xcbiAgICAgIDsgcG9pbnRlciA6ICdzbG90cyBQb2ludGVyLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IGNyZWF0ZSBwb2ludGVyID0geyBpc192YWxpZCA9IHRydWU7IHBvaW50ZXIgfVxuICAgIGxldCBudWxsICgpID0geyBpc192YWxpZCA9IGZhbHNlOyBwb2ludGVyID0gUG9pbnRlci5udWxsICgpIH1cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID0gUG9pbnRlci5waHlzX2NvbXBhcmUgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IGlzX251bGwgdCA9IFBvaW50ZXIuaXNfbnVsbCB0LnBvaW50ZXJcblxuICAgIGxldCBmb2xsb3cgdCA9XG4gICAgICBpZiBub3QgdC5pc192YWxpZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gdXNlIGludmFsaWQgcG9pbnRlclwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgICAgdC5wb2ludGVyXG4gICAgOztcblxuICAgIGxldCBpbnZhbGlkYXRlIHQgPSB0LmlzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgICBtb2R1bGUgSWQgPSBQb2ludGVyLklkXG4gIGVuZFxuXG4gIHR5cGUgJ3Nsb3RzIHQgPSAnc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfSA9XG4gICAgaXNfdmFsaWQgJiYgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXJcbiAgOztcblxuICAoKiBXZSBkb24ndCBkbyBbUG9pbnRlci5mb2xsb3cgcG9pbnRlcl0sIGJlY2F1c2UgdGhhdCB3b3VsZCBkaXNhbGxvdyBbaWRfb2ZfcG9pbnRlciB0XG4gICAgIChQb2ludGVyLm51bGwgKCkpXS4gKilcbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID0gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIuUG9pbnRlci5wb2ludGVyXG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGxldCBwb2ludGVyID0gcG9pbnRlcl9vZl9pZF9leG4gdCBpZCBpblxuICAgIGxldCBpc192YWxpZCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgaW5cbiAgICB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHlcbiAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eVxuICBsZXQgZ3JvdyA9IGdyb3dcbiAgbGV0IGlzX2Z1bGwgPSBpc19mdWxsXG4gIGxldCBnZXRfdHVwbGUgdCBwID0gZ2V0X3R1cGxlIHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBnZXQgdCBwID0gZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCA9IHVuc2FmZV9nZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHNldCB0IHAgc2xvdCB2ID0gc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB2ID0gdW5zYWZlX3NldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICB1bnNhZmVfZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuZW5kXG4iLCIoKiBCZSBzdXJlIGFuZCBmaXJzdCByZWFkIHRoZSBpbXBsZW1lbnRhdGlvbiBvdmVydmlldyBpbiB0aW1pbmdfd2hlZWxfaW50Zi5tbC5cblxuICAgQSB0aW1pbmcgd2hlZWwgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgb2YgXCJsZXZlbHNcIiwgd2hlcmUgZWFjaCBsZXZlbCBpcyBhbiBhcnJheSBvZlxuICAgXCJzbG90c1wiLiAgRWFjaCBzbG90IHJlcHJlc2VudHMgYSByYW5nZSBvZiBrZXlzLCBhbmQgaG9sZHMgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoXG4gICB0aG9zZSBrZXlzLiAgRWFjaCBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IHR3byBwYXJhbWV0ZXJzOiBbYml0c10sIHRoZSBudW1iZXIgb2Yga2V5IGJpdHNcbiAgIHRoYXQgdGhhdCBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IgZGlzdGluZ3Vpc2hpbmcsIGFuZCBbYml0c19wZXJfc2xvdF0sIHRoZSBzaXplIG9mIHRoZVxuICAgcmFuZ2Ugb2Yga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgc2xvdCBpbiB0aGUgYXJyYXkuICBDb25jZXB0dWFsbHksIGVhY2ggbGV2ZWxcbiAgIGJyZWFrcyB1cCBhbGwgcG9zc2libGUga2V5cyBpbnRvIHJhbmdlcyBvZiBzaXplIFsyXmJpdHNfcGVyX3Nsb3RdLiAgVGhlIGxlbmd0aCBvZiBhXG4gICBsZXZlbCBhcnJheSBpcyBbMl5iaXRzXSwgYW5kIHRoZSBhcnJheSBpcyB1c2VkIGxpa2UgYSBjaXJjdWxhciBidWZmZXIgdG8gdHJhdmVyc2UgdGhlXG4gICByYW5nZXMgYXMgdGhlIHRpbWluZyB3aGVlbCdzIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcy4gIEEga2V5IFtrXSwgaWYgc3RvcmVkIGluIHRoZVxuICAgbGV2ZWwsIGlzIHN0b3JlZCBhdCBpbmRleCBbKGsgLyAyXmJpdHNfcGVyX3Nsb3QpIG1vZCAyXmJpdHNdLlxuXG4gICBUaGUgc2V0dGluZ3Mgb2YgdGhlIFtiaXRzXSB2YWx1ZXMgYXJlIGNvbmZpZ3VyYWJsZSBieSB1c2VyIGNvZGUgdXNpbmcgW0xldmVsX2JpdHNdLFxuICAgYWx0aG91Z2ggdGhlcmUgaXMgYSByZWFzb25hYmxlIGRlZmF1bHQgc2V0dGluZy4gIEdpdmVuIHRoZSBbYml0c10gdmFsdWVzLCB0aGVcbiAgIFtiaXRzX3Blcl9zbG90XSBhcmUgY2hvc2VuIHNvIHRoYXQgW2JpdHNfcGVyX3Nsb3RdIGF0IGxldmVsIFtpXSBpcyB0aGUgc3VtIG9mIHRoZVxuICAgW2JpdHNdIGF0IGFsbCBsb3dlciBsZXZlbHMuICBUaHVzLCBhIHNsb3QncyByYW5nZSBhdCBsZXZlbCBbaV0gaXMgYXMgbGFyZ2UgYXMgdGhlXG4gICBlbnRpcmUgcmFuZ2Ugb2YgdGhlIGFycmF5IGF0IGxldmVsIFtpIC0gMV0uXG5cbiAgIEVhY2ggbGV2ZWwgaGFzIGEgW21pbl9hbGxvd2VkX2tleV0gYW5kIGEgW21heF9hbGxvd2VkX2tleV0gdGhhdCBkZXRlcm1pbmUgdGhlIHJhbmdlIG9mXG4gICBrZXlzIHRoYXQgaXQgY3VycmVudGx5IHJlcHJlc2VudHMuICBUaGUgY3J1Y2lhbCBpbnZhcmlhbnQgb2YgdGhlIHRpbWluZyB3aGVlbCBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGhhdCB0aGUgW21pbl9hbGxvd2VkX2tleV0gYXQgbGV2ZWwgW2ldIGlzIG5vIG1vcmUgdGhhbiB0aGVcbiAgIFttYXhfYWxsb3dlZF9rZXkgKyAxXSBvZiBsZXZlbCBbaSAtIDFdLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGxldmVscyBjYW4gcmVwcmVzZW50IGFsbFxuICAga2V5cyBmcm9tIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgbG93ZXN0IGxldmVsIHRvIHRoZSBbbWF4X2FsbG93ZWRfa2V5XSBvZiB0aGVcbiAgIGhpZ2hlc3QgbGV2ZWwuICBUaGUgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJlc3RvcmluZ1xuICAgdGhpcyBpbnZhcmlhbnQuXG5cbiAgIEF0IGxldmVsIDAsIFtiaXRzX3Blcl9zbG90ID0gMF0sIGFuZCBzbyB0aGUgc2l6ZSBvZiBlYWNoIHNsb3QgaXMgWzFdLiAgVGhhdCBpcywgbGV2ZWwgMFxuICAgcHJlY2lzZWx5IGRpc3Rpbmd1aXNoZXMgYWxsIHRoZSBrZXlzIGJldHdlZW4gaXRzIFttaW5fYWxsb3dlZF9rZXldICh3aGljaCBpcyB0aGUgc2FtZVxuICAgYXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsKSBhbmQgW21heF9hbGxvd2VkX2tleV0uICBBcyB0aGVcbiAgIGxldmVscyBpbmNyZWFzZSwgdGhlIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgdGhlIFtiaXRzX3Blcl9zbG90XSBpbmNyZWFzZXMsIGFuZFxuICAgdGhlIHJhbmdlIG9mIGtleXMgc3RvcmVkIGluIHRoZSBsZXZlbCBpbmNyZWFzZXMgKGRyYW1hdGljYWxseSkuXG5cbiAgIFRoZSBpZGVhIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBoaWVyYXJjaGljYWwgYXBwcm9hY2ggZGVzY3JpYmVkIGluOlxuXG4gICB7dlxuICAgICBIYXNoZWQgYW5kIEhpZXJhcmNoaWNhbCBUaW1pbmcgV2hlZWxzOlxuICAgICBFZmZpY2llbnQgRGF0YSBTdHJ1Y3R1cmVzIGZvciBJbXBsZW1lbnRpbmcgYSBUaW1lciBGYWNpbGl0eVxuXG4gICAgIFZhcmdoZXNlICYgTGF1Y2ssIDE5OTZcbiAgIHZ9XG5cbiAgIEhvd2V2ZXIsIHRoZSBjb2RlIGlzIGNvbXBsZXRlbHkgbmV3LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIFRpbWluZ193aGVlbF9pbnRmXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxubGV0IHNleHBfb2ZfdF9zdHlsZSA6IFsgYFByZXR0eSB8IGBJbnRlcm5hbCBdIHJlZiA9IHJlZiBgUHJldHR5XG5cbigqIFt7bWF4LG1pbn1fdGltZV0gYXJlIGJvdW5kcyBvbiB0aGUgdGltZXMgc3VwcG9ydGVkIGJ5IGEgdGltaW5nIHdoZWVsLiAqKVxuXG5sZXQgbWF4X3RpbWUgPSBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWluX3RpbWUgPSBUaW1lX25zLmVwb2NoXG5cbm1vZHVsZSBOdW1fa2V5X2JpdHMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBpbmNsdWRlIENvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgemVybyA6IHRcblxuICAoKiB2YWwgbWluX3ZhbHVlIDogdCAqKVxuXG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdzIgOiB0IC0+IEludDYzLnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBtaW5fdmFsdWUgPSAwXG5cbiAgKCoqIFdlIHN1cHBvcnQgYWxsIG5vbi1uZWdhdGl2ZSBbVGltZV9ucy50XSB2YWx1ZXMuICopXG4gIGxldCBtYXhfdmFsdWUgPSBJbnQ2My5udW1fYml0cyAtIDFcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAodCA+PSBtaW5fdmFsdWUpO1xuICAgIGFzc2VydCAodCA8PSBtYXhfdmFsdWUpXG4gIDs7XG5cbiAgbGV0IG9mX2ludCBpID1cbiAgICBpbnZhcmlhbnQgaTtcbiAgICBpXG4gIDs7XG5cbiAgbGV0ICggKyApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxICsgdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0ICggLSApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxIC0gdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHBvdzIgdCA9IEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIHRcbmVuZFxuXG5tb2R1bGUgTGV2ZWxfYml0cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBOdW1fa2V5X2JpdHMudCBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1heF9udW1fYml0cyA9IChOdW1fa2V5X2JpdHMubWF4X3ZhbHVlIDo+IGludClcbiAgbGV0IG51bV9iaXRzX2ludGVybmFsIHQgPSBMaXN0LmZvbGQgdCB+aW5pdDpOdW1fa2V5X2JpdHMuemVybyB+ZjpOdW1fa2V5X2JpdHMuKCArIClcbiAgbGV0IG51bV9iaXRzIHQgPSAobnVtX2JpdHNfaW50ZXJuYWwgdCA6PiBpbnQpXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKG5vdCAoTGlzdC5pc19lbXB0eSB0KSk7XG4gICAgTGlzdC5pdGVyIHQgfmY6KGZ1biBudW1fa2V5X2JpdHMgLT5cbiAgICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgbnVtX2tleV9iaXRzO1xuICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgbnVtX2tleV9iaXRzIE51bV9rZXlfYml0cy56ZXJvKSk7XG4gICAgTnVtX2tleV9iaXRzLmludmFyaWFudCAobnVtX2JpdHNfaW50ZXJuYWwgdClcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCB0ID0gc2V4cCB8PiBbJW9mX3NleHA6IHRdIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuID8oZXh0ZW5kX3RvX21heF9udW1fYml0cyA9IGZhbHNlKSBpbnRzID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludHMgdGhlbiBmYWlsd2l0aCBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biByZXF1aXJlcyBhIG5vbmVtcHR5IGxpc3RcIjtcbiAgICBpZiBMaXN0LmV4aXN0cyBpbnRzIH5mOihmdW4gYml0cyAtPiBiaXRzIDw9IDApXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IG5vbnBvc2l0aXZlIG51bSBiaXRzXCIgfl86KGludHMgOiBpbnQgbGlzdCldO1xuICAgIGxldCBudW1fYml0cyA9IExpc3QuZm9sZCBpbnRzIH5pbml0OjAgfmY6KCArICkgaW5cbiAgICBpZiBudW1fYml0cyA+IG1heF9udW1fYml0c1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IHRvbyBtYW55IGJpdHNcIlxuICAgICAgICAgICAgfl86KGludHMgOiBpbnQgbGlzdClcbiAgICAgICAgICAgIH5nb3Q6KG51bV9iaXRzIDogaW50KVxuICAgICAgICAgICAgKG1heF9udW1fYml0cyA6IGludCldO1xuICAgIGxldCBpbnRzID1cbiAgICAgIGlmIGV4dGVuZF90b19tYXhfbnVtX2JpdHNcbiAgICAgIHRoZW4gaW50cyBAIExpc3QuaW5pdCAobWF4X251bV9iaXRzIC0gbnVtX2JpdHMpIH5mOihjb25zdCAxKVxuICAgICAgZWxzZSBpbnRzXG4gICAgaW5cbiAgICBMaXN0Lm1hcCBpbnRzIH5mOk51bV9rZXlfYml0cy5vZl9pbnRcbiAgOztcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gWyAxMTsgMTA7IDEwOyAxMDsgMTA7IDEwOyAxIF1cblxuICBsZXQgdHJpbSB0IH5tYXhfbnVtX2JpdHMgPVxuICAgIGlmIE51bV9rZXlfYml0cy4oIDw9ICkgKG51bV9iaXRzX2ludGVybmFsIHQpIG1heF9udW1fYml0c1xuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHQgfnJlbWFpbmluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgYiA6OiB0IC0+XG4gICAgICAgICAgaWYgTnVtX2tleV9iaXRzLiggPj0gKSBiIHJlbWFpbmluZ1xuICAgICAgICAgIHRoZW4gWyByZW1haW5pbmcgXVxuICAgICAgICAgIGVsc2UgYiA6OiBsb29wIHQgfnJlbWFpbmluZzooTnVtX2tleV9iaXRzLiggLSApIHJlbWFpbmluZyBiKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCB+cmVtYWluaW5nOm1heF9udW1fYml0cylcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uIDogc2lnXG4gIGluY2x1ZGUgQWxhcm1fcHJlY2lzaW9uXG5cbiAgdmFsIG51bV9rZXlfYml0cyA6IHQgLT4gTnVtX2tleV9iaXRzLnRcbiAgdmFsIGludGVydmFsX251bSA6IHQgLT4gVGltZV9ucy50IC0+IEludDYzLnRcbiAgdmFsIGludGVydmFsX251bV9zdGFydCA6IHQgLT4gSW50NjMudCAtPiBUaW1lX25zLnRcbmVuZCA9IHN0cnVjdFxuICAoKiogW3RdIGlzIHJlcHJlc2VudGVkIGFzIHRoZSBsb2cyIG9mIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqKVxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGxldCBudW1fa2V5X2JpdHMgdCA9IHQgfD4gTnVtX2tleV9iaXRzLm9mX2ludFxuXG4gIGxldCB0b19zcGFuIHQgPVxuICAgIGlmIHQgPCAwXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24udG9fc3Bhbl0gb2YgbmVnYXRpdmUgcG93ZXIgb2YgdHdvIG5hbm9zZWNvbmRzXCIgfl86KHQgOiBpbnQpXTtcbiAgICBJbnQ2My4oc2hpZnRfbGVmdCBvbmUpIHQgfD4gVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IHw+IHRvX3NwYW4gOiBUaW1lX25zLlNwYW4udCldXG4gIGxldCBvbmVfbmFub3NlY29uZCA9IDBcbiAgbGV0IGFib3V0X29uZV9taWNyb3NlY29uZCA9IDEwXG4gIGxldCBhYm91dF9vbmVfbWlsbGlzZWNvbmQgPSAyMFxuICBsZXQgYWJvdXRfb25lX3NlY29uZCA9IDMwXG4gIGxldCBhYm91dF9vbmVfZGF5ID0gNDZcbiAgbGV0IG11bCB0IH5wb3cyID0gdCArIHBvdzJcbiAgbGV0IGRpdiB0IH5wb3cyID0gdCAtIHBvdzJcbiAgbGV0IGludGVydmFsX251bSB0IHRpbWUgPSBJbnQ2My5zaGlmdF9yaWdodCAodGltZSB8PiBUaW1lX25zLnRvX2ludDYzX25zX3NpbmNlX2Vwb2NoKSB0XG5cbiAgbGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gICAgSW50NjMuc2hpZnRfbGVmdCBpbnRlcnZhbF9udW0gdCB8PiBUaW1lX25zLm9mX2ludDYzX25zX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW5fZmxvb3JfcG93Ml9ucyBzcGFuID1cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8PSApIHNwYW4gVGltZV9ucy5TcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi5vZl9zcGFuX2Zsb29yX3BvdzJfbnNdIGdvdCBub24tcG9zaXRpdmUgc3BhblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gICAgc3BhbiB8PiBUaW1lX25zLlNwYW4udG9faW50NjNfbnMgfD4gSW50NjMuZmxvb3JfbG9nMlxuICA7O1xuXG4gIGxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG5cbiAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3NwYW5cbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3BhblxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChUaW1lX25zLlNwYW4pIChUKVxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUgKFRpbWVfbnMuU3BhbikgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGxldmVsX2JpdHNfZGVmYXVsdCA9IExldmVsX2JpdHMuZGVmYXVsdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhbGFybV9wcmVjaXNpb24gOiBBbGFybV9wcmVjaXNpb24uVW5zdGFibGUudFxuICAgIDsgbGV2ZWxfYml0cyA6IExldmVsX2JpdHMudCBbQGRlZmF1bHQgbGV2ZWxfYml0c19kZWZhdWx0XVxuICAgIDsgY2FwYWNpdHkgOiBpbnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW4gdC5hbGFybV9wcmVjaXNpb25cblxuICAoKiBbbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGxldmVsIGJpdHMgbmVlZGVkIGZvciBhXG4gICAgIHRpbWluZyB3aGVlbCB3aXRoIHRoZSBzcGVjaWZpZWQgW2FsYXJtX3ByZWNpc2lvbl0gdG8gYmUgYWJsZSB0byByZXByZXNlbnQgYWxsXG4gICAgIHBvc3NpYmxlIHRpbWVzIGZyb20gW1RpbWVfbnMuZXBvY2hdIG9ud2FyZC4gIFNpbmNlIG5vbi1uZWdhdGl2ZSB0aW1lcyBoYXZlIDYyIGJpdHMsXG4gICAgIHdlIHJlcXVpcmUgW0wgPD0gNjIgLSBBXSwgd2hlcmUgW0FdIGlzIHRoZSBudW1iZXIgb2YgYWxhcm0gYml0cyBhbmQgW0xdIGlzIHRoZVxuICAgICBudW1iZXIgb2YgbGV2ZWwgYml0cy4gKilcbiAgbGV0IG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24gPVxuICAgIE51bV9rZXlfYml0cy4oIC0gKVxuICAgICAgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgICAgKEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBOdW1fa2V5X2JpdHMuKCA8PSApXG4gICAgICAgICAgKExldmVsX2JpdHMubnVtX2JpdHNfaW50ZXJuYWwgdC5sZXZlbF9iaXRzKVxuICAgICAgICAgIChtYXhfbnVtX2xldmVsX2JpdHMgdC5hbGFybV9wcmVjaXNpb24pKTtcbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvbjppZ25vcmVcbiAgICAgICAgfmNhcGFjaXR5Omlnbm9yZVxuICAgICAgICB+bGV2ZWxfYml0czooY2hlY2sgTGV2ZWxfYml0cy5pbnZhcmlhbnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID8obGV2ZWxfYml0cyA9IGxldmVsX2JpdHNfZGVmYXVsdCkgfmFsYXJtX3ByZWNpc2lvbiAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgTGV2ZWxfYml0cy50cmltIGxldmVsX2JpdHMgfm1heF9udW1fYml0czoobWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgICBpblxuICAgIHsgYWxhcm1fcHJlY2lzaW9uOyBsZXZlbF9iaXRzOyBjYXBhY2l0eSB9XG4gIDs7XG5cbiAgbGV0IG1pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoKSA9XG4gICAgY3JlYXRlXG4gICAgICAoKVxuICAgICAgfmFsYXJtX3ByZWNpc2lvbjpBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pY3Jvc2Vjb25kXG4gICAgICB+bGV2ZWxfYml0czooTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTA7IDEwOyA2OyA2OyA1IF0pXG4gIDs7XG5cbiAgbGV0IGR1cmF0aW9ucyB0ID1cbiAgICBMaXN0LmZvbGRpbmdfbWFwXG4gICAgICB0LmxldmVsX2JpdHNcbiAgICAgIH5pbml0OihBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uIHw+IE51bV9rZXlfYml0cy50b19pbnQpXG4gICAgICB+ZjooZnVuIG51bV9iaXRzX2FjY3VtIGxldmVsX251bV9iaXRzIC0+XG4gICAgICAgIGxldCBudW1fYml0c19hY2N1bSA9IG51bV9iaXRzX2FjY3VtICsgKGxldmVsX251bV9iaXRzIHw+IE51bV9rZXlfYml0cy50b19pbnQpIGluXG4gICAgICAgIGxldCBkdXJhdGlvbiA9XG4gICAgICAgICAgVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gICAgICAgICAgICAoaWYgbnVtX2JpdHNfYWNjdW0gPSBJbnQ2My5udW1fYml0cyAtIDFcbiAgICAgICAgICAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgICAgICAgICAgIGVsc2UgSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHNfYWNjdW0pXG4gICAgICAgIGluXG4gICAgICAgIG51bV9iaXRzX2FjY3VtLCBkdXJhdGlvbilcbiAgOztcbmVuZFxuXG5cbigqKiBUaW1pbmcgd2hlZWwgaXMgaW1wbGVtZW50ZWQgYXMgYSBwcmlvcml0eSBxdWV1ZSBpbiB3aGljaCB0aGUga2V5cyBhcmVcbiAgICBub24tbmVnYXRpdmUgaW50ZWdlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJ2YWxzIG9mIHRpbWUuICBUaGUgcHJpb3JpdHkgcXVldWUgaXNcbiAgICB1bmxpa2UgYSB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlIGluIHRoYXQgcmF0aGVyIHRoYW4gaGF2aW5nIGEgXCJkZWxldGUgbWluXCIgb3BlcmF0aW9uLFxuICAgIGl0IGhhcyBhIG5vbmRlY3JlYXNpbmcgbWluaW11bSBhbGxvd2VkIGtleSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQgdGltZSxcbiAgICBhbmQgYW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gb3BlcmF0aW9uLCB3aGljaCBpbXBsZW1lbnRzIFthZHZhbmNlX2Nsb2NrXS5cbiAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBhcyBhIHNpZGUgZWZmZWN0IHJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIHRpbWluZ1xuICAgIHdoZWVsIHdob3NlIGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG5ldyBtaW5pbXVtLCB3aGljaCBpbXBsZW1lbnRzIGZpcmluZyB0aGUgYWxhcm1zXG4gICAgd2hvc2UgdGltZSBoYXMgZXhwaXJlZC5cblxuICAgIEFkZGluZyBlbGVtZW50cyB0byBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgZnJvbSBhIHRpbWluZyB3aGVlbCB0YWtlcyBjb25zdGFudCB0aW1lLFxuICAgIHVubGlrZSBhIGhlYXAtYmFzZWQgcHJpb3JpdHkgcXVldWUgd2hpY2ggdGFrZXMgbG9nKE4pLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2ZcbiAgICBlbGVtZW50cyBpbiB0aGUgaGVhcC4gIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIHRoZVxuICAgIGFtb3VudCBvZiBpbmNyZWFzZSBpbiB0aGUgbWluLWFsbG93ZWQga2V5LCBhcyBjb21wYXJlZCB0byBsb2coTikgZm9yIGEgaGVhcC4gIEl0IGlzXG4gICAgdGhlc2UgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZXMgdGhhdCBtb3RpdmF0ZSB0aGUgZXhpc3RlbmNlIG9mIHRpbWluZyB3aGVlbHMgYW5kIG1ha2VcbiAgICB0aGVtIGEgZ29vZCBjaG9pY2UgZm9yIG1haW50YWluZyBhIHNldCBvZiBhbGFybXMuICBXaXRoIGEgdGltaW5nIHdoZWVsLCBvbmUgY2FuXG4gICAgc3VwcG9ydCBhbnkgbnVtYmVyIG9mIGFsYXJtcyBwYXlpbmcgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIGFsYXJtLCB3aGlsZSBwYXlpbmcgYVxuICAgIHNtYWxsIGNvbnN0YW50IG92ZXJoZWFkIHBlciB1bml0IG9mIHRpbWUgcGFzc2VkLlxuXG4gICAgQXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aGUgdGltaW5nIHdoZWVsIGRvZXMgYSBsYXp5IHJhZGl4IHNvcnQgb2YgdGhlXG4gICAgZWxlbWVudCBrZXlzLCB3aXRoIGxldmVsIDAgaGFuZGxpbmcgdGhlIGxlYXN0IHNpZ25pZmljYW50IFtiXzBdIGJpdHMgaW4gYSBrZXksIGFuZFxuICAgIGVhY2ggc3Vic2VxdWVudCBsZXZlbCBbaV0gaGFuZGxpbmcgdGhlIG5leHQgbW9zdCBzaWduaWZpY2FudCBbYl9pXSBiaXRzLiAgVGhlIGxldmVsc1xuICAgIGhvbGQgaW5jcmVhc2luZ2x5IGxhcmdlciByYW5nZXMgb2Yga2V5cywgd2hlcmUgdGhlIHVuaW9uIG9mIGFsbCB0aGUgbGV2ZWxzIGNhbiBob2xkXG4gICAgYW55IGtleSBmcm9tIFttaW5fYWxsb3dlZF9rZXkgdF0gdG8gW21heF9hbGxvd2VkX2tleSB0XS4gIFdoZW4gYSBrZXkgaXMgYWRkZWQgdG8gdGhlXG4gICAgdGltaW5nIHdoZWVsLCBpdCBpcyBhZGRlZCBhdCB0aGUgbG93ZXN0IHBvc3NpYmxlIGxldmVsIHRoYXQgY2FuIHN0b3JlIHRoZSBrZXkuICBBc1xuICAgIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGltaW5nLXdoZWVsIGVsZW1lbnRzIG1vdmUgZG93biBsZXZlbHMgdW50aWwgdGhleVxuICAgIHJlYWNoIGxldmVsIDAsIGFuZCB0aGVuIGFyZSBldmVudHVhbGx5IHJlbW92ZWQuICAqKVxubW9kdWxlIFByaW9yaXR5X3F1ZXVlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBLZXkgOiBJbnRlcnZhbF9udW1cblxuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgKCoqIEFuIFtFbHQudF0gcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgd2FzIGFkZGVkIHRvIGEgdGltaW5nIHdoZWVsLiAqKVxuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIGF0IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwga2V5IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCB2YWx1ZSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFbHQudFxuICBlbmRcblxuICB2YWwgcG9vbCA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAoKiogW2NyZWF0ZSA/bGV2ZWxfYml0cyAoKV0gY3JlYXRlcyBhIG5ldyBlbXB0eSB0aW1pbmcgd2hlZWwsIFt0XSwgd2l0aCBbbGVuZ3RoIHQgPSAwXVxuICAgICAgYW5kIFttaW5fYWxsb3dlZF9rZXkgdCA9IDBdLiAqKVxuICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiA/bGV2ZWxfYml0czpMZXZlbF9iaXRzLnQgLT4gdW5pdCAtPiAnYSB0XG5cbiAgKCoqIFtsZW5ndGggdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5cbiAgKCoqIFttaW5fYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1pbmltdW0ga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBUaGlzIG9ubHlcbiAgICAgIGluZGljYXRlcyB0aGUgcG9zc2liaWxpdHk7IHRoZXJlIG5lZWQgbm90IGJlIGFuIGVsZW1lbnQgW2VsdF0gaW4gW3RdIHdpdGggW0VsdC5rZXlcbiAgICAgIGVsdCA9IG1pbl9hbGxvd2VkX2tleSB0XS4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBcIm1pbl9rZXlcIiBvcGVyYXRpb24gaW4gYVxuICAgICAgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZS5cblxuICAgICAgW21pbl9hbGxvd2VkX2tleSB0XSBjYW4gaW5jcmVhc2Ugb3ZlciB0aW1lLCB2aWEgY2FsbHMgdG9cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldLiAqKVxuICB2YWwgbWluX2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgKCoqIFttYXhfYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1heGltdW0gYWxsb3dlZCBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIEFzXG4gICAgICBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHNvIGRvZXMgW21heF9hbGxvd2VkX2tleV07IGhvd2V2ZXIgaXQgaXMgbm90IHRoZSBjYXNlXG4gICAgICB0aGF0IFttYXhfYWxsb3dlZF9rZXkgdCAtIG1pbl9hbGxvd2VkX2tleSB0XSBpcyBhIGNvbnN0YW50LiAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0XG4gICAgICBbbWF4X2FsbG93ZWRfa2V5IHQgPj0gbWluX2FsbG93ZWRfa2V5IHQgKyAyXkIgLSAxXSxcbiAgICAgIHdoZXJlIFtCXSBpcyB0aGUgc3VtIG9mIHRoZSBiX2kgaW4gW2xldmVsX2JpdHNdLiAqKVxuICB2YWwgbWF4X2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgdmFsIG1pbl9lbHRfIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQudFxuICB2YWwgaW50ZXJuYWxfYWRkIDogJ2EgdCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+ICdhIC0+ICdhIEludGVybmFsX2VsdC50XG5cbiAgKCoqIFtyZW1vdmUgdCBlbHRdIHJlbW92ZXMgW2VsdF0gZnJvbSBbdF0uICBJdCBpcyBhbiBlcnJvciBpZiBbZWx0XSBpcyBub3QgY3VycmVudGx5XG4gICAgICBpbiBbdF0sIGFuZCB0aGlzIGVycm9yIG1heSBvciBtYXkgbm90IGJlIGRldGVjdGVkLiAqKVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiB1bml0XG5cbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiB1bml0XG5cbiAgKCoqIFtjbGVhciB0XSByZW1vdmVzIGFsbCBlbHRzIGZyb20gW3RdLiAqKVxuICB2YWwgY2xlYXIgOiBfIHQgLT4gdW5pdFxuXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIEVsdC50IC0+IGJvb2xcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICAoKiogW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkXSBpbmNyZWFzZXMgdGhlIG1pbmltdW0gYWxsb3dlZFxuICAgICAga2V5IGluIFt0XSB0byBba2V5XSwgYW5kIHJlbW92ZXMgYWxsIGVsZW1lbnRzIHdpdGgga2V5cyBsZXNzIHRoYW4gW2tleV0sIGFwcGx5aW5nXG4gICAgICBbaGFuZGxlX3JlbW92ZWRdIHRvIGVhY2ggZWxlbWVudCB0aGF0IGlzIHJlbW92ZWQuICBJZiBba2V5IDw9IG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIHRoZW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZG9lcyBub3RoaW5nLiAgT3RoZXJ3aXNlLCBpZlxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gcmV0dXJucyBzdWNjZXNzZnVsbHksIFttaW5fYWxsb3dlZF9rZXkgdCA9IGtleV0uXG5cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIFtrZXkgLSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICBhbHRob3VnaCBwb3NzaWJseSBsZXNzIHRpbWUuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtoYW5kbGVfcmVtb3ZlZF0gYWNjZXNzZXMgW3RdIGluIGFueSB3YXkgb3RoZXIgdGhhblxuICAgICAgW0VsdF0gZnVuY3Rpb25zLiAqKVxuICB2YWwgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IGhhbmRsZV9yZW1vdmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudFxuXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBFbHQudCAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGZpcmVfcGFzdF9hbGFybXNcbiAgICA6ICAnYSB0XG4gICAgLT4gaGFuZGxlX2ZpcmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IG5vdzpUaW1lX25zLnRcbiAgICAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIEVhY2ggc2xvdCBpbiBhIGxldmVsIGlzIGEgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXIgdG8gYSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIG9mIGVsZW1lbnRzLiAgV2UgcG9vbCB0aGUgZWxlbWVudHMgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlbSBhZnRlciB0aGV5IGFyZSByZW1vdmVkXG4gICAgICBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgKGVpdGhlciB2aWEgW3JlbW92ZV0gb3IgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0pLiAgSW5cbiAgICAgIGFkZGl0aW9uIHRvIHN0b3JpbmcgdGhlIFtrZXldLCBbYXRdLCBhbmQgW3ZhbHVlXSBpbiB0aGUgZWxlbWVudCwgd2Ugc3RvcmUgdGhlXG4gICAgICBbbGV2ZWxfaW5kZXhdIHNvIHRoYXQgd2UgY2FuIHF1aWNrbHkgZ2V0IHRvIHRoZSBsZXZlbCBob2xkaW5nIGFuIGVsZW1lbnQgd2hlbiB3ZVxuICAgICAgW3JlbW92ZV0gaXQuXG5cbiAgICAgIFdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gW0V4dGVybmFsX2VsdF0gYW5kIFtJbnRlcm5hbF9lbHRdLCB3aGljaCBhcmUgdGhlIHNhbWVcbiAgICAgIHVuZGVybmVhdGguICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYW4gW0ludGVybmFsX2VsdF0gaXMgZWl0aGVyIFtudWxsXSBvciBhXG4gICAgICB2YWxpZCBwb2ludGVyLiAgT24gdGhlIG90aGVyIGhhbmQsIFtFeHRlcm5hbF9lbHRdcyBhcmUgcmV0dXJuZWQgdG8gdXNlciBjb2RlLCBzb1xuICAgICAgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIG9mIHZhbGlkaXR5IC0tIHdlIGFsd2F5cyB2YWxpZGF0ZSBhbiBbRXh0ZXJuYWxfZWx0XSBiZWZvcmVcbiAgICAgIGRvaW5nIGFueXRoaW5nIHdpdGggaXQuXG5cbiAgICAgIEl0IGlzIHRoZXJlZm9yZSBPSyB0byB1c2UgW1Bvb2wuVW5zYWZlXSwgYmVjYXVzZSB3ZSB3aWxsIG5ldmVyIGF0dGVtcHQgdG8gYWNjZXNzIGFcbiAgICAgIHNsb3Qgb2YgYW4gaW52YWxpZCBwb2ludGVyLiAqKVxuICBtb2R1bGUgUG9vbCA9IFBvb2wuVW5zYWZlXG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgKCoqIFtJbnRlcnZhbF9udW1dIGlzIHRoZSBwdWJsaWMgQVBJLiAgRXZlcnl0aGluZyBmb2xsb3dpbmcgaW4gdGhlIHNpZ25hdHVyZSBpc1xuICAgICAgICBmb3IgaW50ZXJuYWwgdXNlLiAqKVxuICAgIGluY2x1ZGUgVGltaW5nX3doZWVsX2ludGYuSW50ZXJ2YWxfbnVtXG5cbiAgICAoKiogW2FkZF9jbGFtcF90b19tYXhdIGRvZXNuJ3Qgd29yayBhdCBhbGwgd2l0aCBuZWdhdGl2ZSBzcGFucyAqKVxuICAgIHZhbCBhZGRfY2xhbXBfdG9fbWF4IDogdCAtPiBTcGFuLnQgLT4gdFxuXG4gICAgdmFsIHN1Y2NfY2xhbXBfdG9fbWF4IDogdCAtPiB0XG5cbiAgICAoKiogW1Nsb3RzX21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgYSBrZXkncyBzbG90IGluIGEgZ2l2ZW4gbGV2ZWwuICopXG4gICAgbW9kdWxlIFNsb3RzX21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICB2YWwgY3JlYXRlIDogbGV2ZWxfYml0czpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgICB2YWwgbmV4dF9zbG90IDogdCAtPiBpbnQgLT4gaW50XG4gICAgZW5kXG5cbiAgICAoKiogW01pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG1pbmltdW0ga2V5IGluIHRoZVxuICAgICAgICBzYW1lIHNsb3QgYXMgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgY3JlYXRlIDogYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgbnVtX2tleXMgOiBOdW1fa2V5X2JpdHMudCAtPiBTcGFuLnRcbiAgICB2YWwgbWluX2tleV9pbl9zYW1lX3Nsb3QgOiB0IC0+IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudCAtPiB0XG4gICAgdmFsIHNsb3QgOiB0IC0+IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gc2xvdHNfbWFzazpTbG90c19tYXNrLnQgLT4gaW50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTbG90c19tYXNrID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxldmVsX2JpdHMgPSBJbnQ2My4oIC0gKSAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykgSW50NjMub25lXG4gICAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IChzbG90ICsgMSkgbGFuZCBJbnQ2My50b19pbnRfZXhuIHRcbiAgICBlbmRcblxuICAgIGxldCBudW1fa2V5cyBudW1fYml0cyA9IE51bV9rZXlfYml0cy5wb3cyIG51bV9iaXRzXG5cbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgY3JlYXRlIH5iaXRzX3Blcl9zbG90ID0gYml0X25vdCAoTnVtX2tleV9iaXRzLnBvdzIgYml0c19wZXJfc2xvdCAtIG9uZSlcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgICBsZXQgc2NhbGVfaW50IHQgaSA9IHQgKiBvZl9pbnQgaVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgbGV0IGFkZCB0IGkgPSB0ICsgaVxuICAgIGxldCBhZGRfY2xhbXBfdG9fbWF4IHQgaSA9IGlmIHQgPiBtYXhfdmFsdWUgLSBpIHRoZW4gbWF4X3ZhbHVlIGVsc2UgdCArIGlcbiAgICBsZXQgc3VjY19jbGFtcF90b19tYXggdCA9IGlmIHQgPSBtYXhfdmFsdWUgdGhlbiBtYXhfdmFsdWUgZWxzZSBzdWNjIHRcbiAgICBsZXQgc3ViIHQgaSA9IHQgLSBpXG4gICAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5cbiAgICBsZXQgc2xvdCB0IH4oYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50KSB+c2xvdHNfbWFzayA9XG4gICAgICB0b19pbnRfZXhuIChiaXRfYW5kIChzaGlmdF9yaWdodCB0IChiaXRzX3Blcl9zbG90IDo+IGludCkpIHNsb3RzX21hc2spXG4gICAgOztcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPVxuICAgICAgYml0X2FuZCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IEtleS5NaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gIG1vZHVsZSBTbG90c19tYXNrID0gS2V5LlNsb3RzX21hc2tcblxuICBtb2R1bGUgRXh0ZXJuYWxfZWx0ID0gc3RydWN0XG5cbiAgICAoKiogVGhlIFtwb29sX3Nsb3RzXSBoZXJlIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIHNsb3RzIGluIGEgbGV2ZWwgYXJyYXkuICBUaGlzIGlzXG4gICAgICAgIGZvciB0aGUgc2xvdHMgaW4gdGhlIHBvb2wgdHVwbGUgcmVwcmVzZW50aW5nIGEgbGV2ZWwgZWxlbWVudC4gKilcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPVxuICAgICAgKCBLZXkudFxuICAgICAgLCBUaW1lX25zLnRcbiAgICAgICwgJ2FcbiAgICAgICwgaW50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IClcbiAgICAgICAgUG9vbC5TbG90cy50NlxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiB1bml0IC0+IF8gdFxuICAgICAgdmFsIGlzX2Z1bGwgOiBfIHQgLT4gYm9vbFxuICAgICAgdmFsIGdyb3cgOiA/Y2FwYWNpdHk6aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gcHJpdmF0ZSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiogRGVhbGluZyB3aXRoIFtFeHRlcm5hbF9lbHRdcy4gKilcblxuICAgIHZhbCBleHRlcm5hbF9pc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFeHRlcm5hbF9lbHQudFxuICAgIHZhbCBvZl9leHRlcm5hbF9leG4gOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gJ2EgdFxuICAgIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGludmFyaWFudCA6ICdhIFBvb2wudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2NyZWF0ZV0gcmV0dXJucyBhbiBlbGVtZW50IHdob3NlIFtuZXh0XSBhbmQgW3ByZXZdIGFyZSBbbnVsbF0uICopXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgJ2EgUG9vbC50XG4gICAgICAtPiBrZXk6S2V5LnRcbiAgICAgICgqKiBbYXRdIGlzIHVzZWQgd2hlbiB0aGUgcHJpb3JpdHkgcXVldWUgaXMgdXNlZCB0byBpbXBsZW1lbnQgYSB0aW1pbmcgd2hlZWwuICBJZlxuICAgICAgICAgIHVudXNlZCwgaXQgd2lsbCBiZSBbVGltZV9ucy5lcG9jaF0uICopXG4gICAgICAtPiBhdDpUaW1lX25zLnRcbiAgICAgIC0+IHZhbHVlOidhXG4gICAgICAtPiBsZXZlbF9pbmRleDppbnRcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmcmVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIGFjY2Vzc29ycyAqKVxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIGF0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGxldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIG5leHQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHZhbHVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2FcblxuICAgICgqKiBtdXRhdG9ycyAqKVxuXG4gICAgdmFsIHNldF9rZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudCAtPiB1bml0XG4gICAgdmFsIHNldF9hdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudCAtPiB1bml0XG4gICAgdmFsIHNldF9sZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludCAtPiB1bml0XG5cbiAgICAoKiogW2luc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGRdIHRyZWF0cyBbdF0gYXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYW5kIGFkZHMgW3RvX2FkZF1cbiAgICAgICAgdG8gdGhlIGVuZCBvZiBpdC4gKilcbiAgICB2YWwgaW5zZXJ0X2F0X2VuZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHRvX2FkZDonYSB0IC0+IHVuaXRcblxuICAgICgqKiBbbGlua190b19zZWxmIHBvb2wgdF0gbWFrZXMgW3RdIGJlIGEgc2luZ2xldG9uIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdC4gKilcbiAgICB2YWwgbGlua190b19zZWxmIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFt1bmxpbmsgcCB0XSB1bmxpbmtzIFt0XSBmcm9tIHRoZSBjaXJjdWxhcmx5IGRvdWJseS1saW5rZWQgbGlzdCB0aGF0IGl0IGlzIGluLiAgSXRcbiAgICAgICAgY2hhbmdlcyB0aGUgcG9pbnRlcnMgb2YgW3RdJ3MgW3ByZXZdIGFuZCBbbmV4dF0gZWx0cywgYnV0IG5vdCBbdF0ncyBbcHJldl0gYW5kXG4gICAgICAgIFtuZXh0XSBwb2ludGVycy4gIFt1bmxpbmtdIGlzIG1lYW5pbmdsZXNzIGlmIFt0XSBpcyBhIHNpbmdsZXRvbi4gKilcbiAgICB2YWwgdW5saW5rIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIEl0ZXJhdG9ycy4gIFtpdGVyIHAgdCB+aW5pdCB+Zl0gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICAgIGNvbnRhaW5pbmcgW3RdLCBzdGFydGluZyBhdCBbdF0sIGFuZCBmb2xsb3dpbmcgW25leHRdIHBvaW50ZXJzLiAgW2xlbmd0aF0gY291bnRzXG4gICAgICAgIGJ5IHZpc2l0aW5nIGVhY2ggZWxlbWVudCBpbiB0aGUgbGlzdC4gKilcbiAgICB2YWwgaXRlciA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGY6KCdhIHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGxlbmd0aCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuXG4gICAgKCoqIFttYXhfYWxhcm1fdGltZSB0IGVsdCB+d2l0aF9rZXldIGZpbmRzIHRoZSBtYXggW2F0XSBpbiBbZWx0XSdzIGxpc3QgYW1vbmcgdGhlIGVsdHNcbiAgICAgICAgd2hvc2Uga2V5IGlzIFt3aXRoX2tleV0sIHJldHVybmluZyBbVGltZV9ucy5lcG9jaF0gaWYgdGhlIGxpc3QgaXMgZW1wdHkuICopXG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG5cbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID0gJ2EgRXh0ZXJuYWxfZWx0LnBvb2xfc2xvdHMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgICBsZXQgaXNfbnVsbCA9IFBvaW50ZXIuaXNfbnVsbFxuICAgIGxldCBlcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MSB0MlxuXG4gICAgbGV0IGNyZWF0ZSBwb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXggPVxuICAgICAgUG9vbC5uZXc2IHBvb2wga2V5IGF0IHZhbHVlIGxldmVsX2luZGV4IChudWxsICgpKSAobnVsbCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGZyZWUgPSBQb29sLmZyZWVcbiAgICBsZXQga2V5IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDBcbiAgICBsZXQgc2V0X2tleSBwIHQgayA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDAga1xuICAgIGxldCBhdCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQxXG4gICAgbGV0IHNldF9hdCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDEgeFxuICAgIGxldCB2YWx1ZSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQyXG4gICAgbGV0IGxldmVsX2luZGV4IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDNcbiAgICBsZXQgc2V0X2xldmVsX2luZGV4IHAgdCBpID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MyBpXG4gICAgbGV0IHByZXYgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NFxuICAgIGxldCBzZXRfcHJldiBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDQgeFxuICAgIGxldCBuZXh0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDVcbiAgICBsZXQgc2V0X25leHQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ1IHhcbiAgICBsZXQgaXNfdmFsaWQgcCB0ID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHAgdFxuICAgIGxldCBleHRlcm5hbF9pc192YWxpZCA9IGlzX3ZhbGlkXG5cbiAgICBsZXQgaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkIHBvb2wgdCk7XG4gICAgICAgIGludmFyaWFudF9hICh2YWx1ZSBwb29sIHQpO1xuICAgICAgICBsZXQgbiA9IG5leHQgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBuIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChwcmV2IHBvb2wgbikpO1xuICAgICAgICBsZXQgcCA9IHByZXYgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBwIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChuZXh0IHBvb2wgcCkpKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG4gICAgICBsZXQgY3JlYXRlID8oY2FwYWNpdHkgPSAxKSAoKSA9IFBvb2wuY3JlYXRlIFBvb2wuU2xvdHMudDYgfmNhcGFjaXR5XG4gICAgICBsZXQgZ3JvdyA9IFBvb2wuZ3Jvd1xuICAgICAgbGV0IGlzX2Z1bGwgPSBQb29sLmlzX2Z1bGxcbiAgICBlbmRcblxuICAgIGxldCB0b19leHRlcm5hbCB0ID0gdFxuXG4gICAgbGV0IG9mX2V4dGVybmFsX2V4biBwb29sIHQgPVxuICAgICAgaWYgaXNfdmFsaWQgcG9vbCB0IHRoZW4gdCBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsIGdvdCBpbnZhbGlkIGFsYXJtXCJdXG4gICAgOztcblxuICAgIGxldCB1bmxpbmsgcG9vbCB0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgKHByZXYgcG9vbCB0KSAobmV4dCBwb29sIHQpO1xuICAgICAgc2V0X3ByZXYgcG9vbCAobmV4dCBwb29sIHQpIChwcmV2IHBvb2wgdClcbiAgICA7O1xuXG4gICAgbGV0IGxpbmsgcG9vbCBwcmV2IG5leHQgPVxuICAgICAgc2V0X25leHQgcG9vbCBwcmV2IG5leHQ7XG4gICAgICBzZXRfcHJldiBwb29sIG5leHQgcHJldlxuICAgIDs7XG5cbiAgICBsZXQgbGlua190b19zZWxmIHBvb2wgdCA9IGxpbmsgcG9vbCB0IHRcblxuICAgIGxldCBpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkID1cbiAgICAgIGxldCBwcmV2ID0gcHJldiBwb29sIHQgaW5cbiAgICAgIGxpbmsgcG9vbCBwcmV2IHRvX2FkZDtcbiAgICAgIGxpbmsgcG9vbCB0b19hZGQgdFxuICAgIDs7XG5cbiAgICBsZXQgaXRlciBwb29sIGZpcnN0IH5mID1cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICgqIFdlIGdldCBbbmV4dF0gYmVmb3JlIGNhbGxpbmcgW2ZdIHNvIHRoYXQgW2ZdIGNhbiBtb2RpZnkgb3IgW2ZyZWVdIFshY3VycmVudF0uICopXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGYgIWN1cnJlbnQ7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggcG9vbCBmaXJzdCA9XG4gICAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBpbmNyIHI7XG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICA7O1xuXG4gICAgbGV0IG1heF9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtYXhfYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLmVwb2NoIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1heF9hbGFybV90aW1lIDo9IFRpbWVfbnMubWF4IChhdCBwb29sICFjdXJyZW50KSAhbWF4X2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1heF9hbGFybV90aW1lXG4gICAgOztcblxuICAgIGxldCBtaW5fYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgKCogVGhlIFtrZXldIGNvbXBhcmlzb24gaXMgbmVjZXNzYXJ5IGZvciBbbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSBiZWNhdXNlXG4gICAgICAgICAgIG1heCB0aW1lIHBlciBpbnRlcnZhbCBpcyBub3QgdGhlIHNhbWUgYXMgbWF4IHRpbWUgZ2xvYmFsbHkuXG5cbiAgICAgICAgICAgVGhpcyBpcyBub3Qgc28gZm9yIFttaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdLCBzbyB0aGlzIGNhbiBwb3RlbnRpYWxseVxuICAgICAgICAgICBiZSBzaW1wbGlmaWVkLlxuXG4gICAgICAgICAgIFByb2JhYmx5IGEgYmV0dGVyIGNoYW5nZSB3b3VsZCBiZSB0byBzaW1wbHkgdHJhbnNmZXIgdGhlIGV2ZW50cyB0byB0aGVcbiAgICAgICAgICAgXCJmaXJlZFwiIGNvbGxlY3Rpb24gKGFuZCByZW5hbWUgaXQgdG8gXCJhYm91dCB0byBmaXJlXCIpLCB3aGljaCBpcyBzb3J0ZWQgYnkgdGltZSxcbiAgICAgICAgICAgc28gZ2V0dGluZyB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIHRoYXQgY29sbGVjdGlvbiBpcyBlZmZpY2llbnQuXG4gICAgICAgICopXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWluX2FsYXJtX3RpbWUgOj0gVGltZV9ucy5taW4gKGF0IHBvb2wgIWN1cnJlbnQpICFtaW5fYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWluX2FsYXJtX3RpbWVcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTGV2ZWwgPSBzdHJ1Y3RcbiAgICAoKiogRm9yIGdpdmVuIGxldmVsLCBvbmUgY2FuIGJyZWFrIHRoZSBiaXRzIGludG8gYSBrZXkgaW50byB0aHJlZSByZWdpb25zOlxuXG4gICAgICAgIHt2XG4gICAgICAgICB8IGhpZ2hlciBsZXZlbHMgfCB0aGlzIGxldmVsIHwgbG93ZXIgbGV2ZWxzIHxcbiAgICAgICAgdn1cblxuICAgICAgICBcIkxvd2VyIGxldmVsc1wiIGlzIFtiaXRzX3Blcl9zbG90XSBiaXRzIHdpZGUuICBcIlRoaXMgbGV2ZWxcIiBpcyBbYml0c10gd2lkZS4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBUaGUgW2luZGV4XSBpbiB0aGUgdGltaW5nIHdoZWVsJ3MgYXJyYXkgb2YgbGV2ZWxzIHdoZXJlIHRoaXMgbGV2ZWwgaXMuICopXG4gICAgICAgIGluZGV4IDogaW50XG4gICAgICA7ICgqIEhvdyBtYW55IFtiaXRzXSB0aGlzIGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvci4gKilcbiAgICAgICAgYml0cyA6IE51bV9rZXlfYml0cy50XG4gICAgICA7ICgqIFtzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6dC5iaXRzXS4gKilcbiAgICAgICAgc2xvdHNfbWFzayA6IFNsb3RzX21hc2sudFxuICAgICAgOyAoKiBbYml0c19wZXJfc2xvdF0gaXMgaG93IG1hbnkgYml0cyBlYWNoIHNsb3QgZGlzdGluZ3Vpc2hlcywgYW5kIGlzIHRoZSBzdW0gb2Ygb2ZcbiAgICAgICAgICAgdGhlIFtiaXRzXSBvZiBhbGwgdGhlIGxvd2VyIGxldmVscy4gKilcbiAgICAgICAgYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50XG4gICAgICA7IGtleXNfcGVyX3Nsb3QgOiBLZXkuU3Bhbi50XG4gICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnRcbiAgICAgIDsgKCogW2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9IGtleXNfcGVyX3Nsb3QgKiBBcnJheS5sZW5ndGggc2xvdHMgLSAxXSAqKVxuICAgICAgICBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgOiBLZXkuU3Bhbi50XG4gICAgICA7ICgqIFtsZW5ndGhdIGlzIHRoZSBudW1iZXIgb2YgZWx0cyBjdXJyZW50bHkgaW4gdGhpcyBsZXZlbC4gKilcbiAgICAgICAgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgKCogQWxsIGVsZW1lbnRzIGF0IHRoaXMgbGV2ZWwgaGF2ZSB0aGVpciBba2V5XSBzYXRpc2Z5IFttaW5fYWxsb3dlZF9rZXkgPD0ga2V5IDw9XG4gICAgICAgICAgIG1heF9hbGxvd2VkX2tleV0uICBBbHNvLCBbbWluX2FsbG93ZWRfa2V5XSBpcyBhIG11bHRpcGxlIG9mIFtrZXlzX3Blcl9zbG90XS4gKilcbiAgICAgICAgbXV0YWJsZSBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7ICgqIFtzbG90c10gaG9sZHMgdGhlIChwb3NzaWJseSBudWxsKSBwb2ludGVycyB0byB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0c1xuICAgICAgICAgICBvZiBlbHRzLiAgW0FycmF5Lmxlbmd0aCBzbG90cyA9IDEgbHNsIGJpdHNdLiAqKVxuICAgICAgICBzbG90cyA6ICgnYSBJbnRlcm5hbF9lbHQudCBhcnJheVtAc2V4cC5vcGFxdWVdKVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzbG90IHQgfmtleSA9IEtleS5zbG90IGtleSB+Yml0c19wZXJfc2xvdDp0LmJpdHNfcGVyX3Nsb3QgfnNsb3RzX21hc2s6dC5zbG90c19tYXNrXG4gICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSBTbG90c19tYXNrLm5leHRfc2xvdCB0LnNsb3RzX21hc2sgc2xvdFxuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleSA9XG4gICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3Qga2V5IHQubWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG5cbiAgICBsZXQgY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgdCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgKCogVGhpcyBjb21wdXRhdGlvbiBlbnN1cmVzIHRoYXQgW3RdJ3MgW21pbl9hbGxvd2VkX2tleV0gaXMgYXMgbGFyZ2UgYXMgcG9zc2libGVcbiAgICAgICAgIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGVyZSBpcyBubyBpbnRlci1sZXZlbCBnYXAuICopXG4gICAgICBpZiBLZXkuZXF1YWwgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgdGhlbiBLZXkubWF4X3ZhbHVlXG4gICAgICBlbHNlIG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleTooS2V5LnN1Y2MgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIHBvb2wgOiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG4gICAgOyAoKiBbbWluX2VsdF0gaXMgZWl0aGVyIG51bGwgb3IgYW4gZWxlbWVudCB3aG9zZSBrZXkgaXMgW2VsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBtaW5fZWx0IDogJ2EgSW50ZXJuYWxfZWx0LnRcbiAgICA7ICgqIEFsbCBlbGVtZW50cyBpbiB0aGUgcHJpb3JpdHkgcXVldWUgaGF2ZSB0aGVpciBrZXkgWz49IGVsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBlbHRfa2V5X2xvd2VyX2JvdW5kIDogS2V5LnRcbiAgICA7IGxldmVscyA6ICdhIExldmVsLnQgYXJyYXlcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBFeHRlcm5hbF9lbHQubnVsbFxuICAgIGxldCBhdCBwIHQgPSBJbnRlcm5hbF9lbHQuYXQgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCBrZXkgcCB0ID0gSW50ZXJuYWxfZWx0LmtleSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IHZhbHVlIHAgdCA9IEludGVybmFsX2VsdC52YWx1ZSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbiAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbiAgbGV0IG51bV9sZXZlbHMgdCA9IEFycmF5Lmxlbmd0aCB0LmxldmVsc1xuICBsZXQgbWluX2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5sZXZlbHMuKDApXG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgdCA9IExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4obnVtX2xldmVscyB0IC0gMSlcblxuICBsZXQgaW50ZXJuYWxfaXRlciB0IH5mID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdCkgdGhlbiBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZlxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBpbnRlcm5hbF9pdGVyIHQgfmY6KGYgOiBfIEVsdC50IC0+IHVuaXQgOj4gXyBJbnRlcm5hbF9lbHQudCAtPiB1bml0KVxuXG4gIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IGtleSA6IEtleS50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgZWx0cyA6ICdhIEVsdC50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgcHJldHR5IHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgeyBQcmV0dHkubWluX2FsbG93ZWRfa2V5ID0gbWluX2FsbG93ZWRfa2V5IHRcbiAgICA7IG1heF9hbGxvd2VkX2tleSA9IG1heF9hbGxvd2VkX2tleSB0XG4gICAgOyBlbHRzID1cbiAgICAgICAgKGxldCByID0gcmVmIFtdIGluXG4gICAgICAgICBpbnRlcm5hbF9pdGVyIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgclxuICAgICAgICAgICA6PSB7IFByZXR0eS5FbHQua2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdFxuICAgICAgICAgICAgICA7IHZhbHVlID0gSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogIXIpO1xuICAgICAgICAgTGlzdC5yZXYgIXIpXG4gICAgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICAgIHwgYEludGVybmFsIC0+IFslc2V4cCAodCA6IGEgdF9pbnRlcm5hbCldXG4gICAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbiAgOztcblxuICBsZXQgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3QgPVxuICAgIGxldCBiaXRzID0gTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdCBpblxuICAgIGlmIE51bV9rZXlfYml0cy5lcXVhbCBiaXRzIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICB0aGVuIEtleS5TcGFuLm1heF92YWx1ZVxuICAgIGVsc2UgS2V5LlNwYW4ucHJlZCAoS2V5Lm51bV9rZXlzIGJpdHMpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgbGV2ZWxfaW52YXJpYW50IGxldmVsID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSBsZXZlbCBbJXNleHBfb2Y6IF8gTGV2ZWwudF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCBsZXZlbCBmIGluXG4gICAgICAgIExldmVsLkZpZWxkcy5pdGVyXG4gICAgICAgICAgfmluZGV4OihjaGVjayAoZnVuIGluZGV4IC0+IGFzc2VydCAoaW5kZXggPj0gMCkpKVxuICAgICAgICAgIH5iaXRzOihjaGVjayAoZnVuIGJpdHMgLT4gYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgYml0cyBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5zbG90c19tYXNrOlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogU2xvdHNfbWFzay50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDooU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6bGV2ZWwuYml0cykpKVxuICAgICAgICAgIH5iaXRzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYml0c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+PSApIGJpdHNfcGVyX3Nsb3QgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+a2V5c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGtleXNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgIGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5Lm51bV9rZXlzIGxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzazpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suZXF1YWxcbiAgICAgICAgICAgICAgICAgICBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgICAgKE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSkpXG4gICAgICAgICAgfmRpZmZfbWF4X21pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAoY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICAgfmxldmVsX2JpdHM6bGV2ZWwuYml0c1xuICAgICAgICAgICAgICAgICAgICAgICB+Yml0c19wZXJfc2xvdDpsZXZlbC5iaXRzX3Blcl9zbG90KSkpXG4gICAgICAgICAgfmxlbmd0aDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gICAgICAgICAgICAgICAgID0gQXJyYXkuZm9sZCBsZXZlbC5zbG90cyB+aW5pdDowIH5mOihmdW4gbiBlbHQgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgICAgICAgICAgICAgICAgICB0aGVuIG5cbiAgICAgICAgICAgICAgICAgICBlbHNlIG4gKyBJbnRlcm5hbF9lbHQubGVuZ3RoIHBvb2wgZWx0KSkpKVxuICAgICAgICAgIH5taW5fYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtaW5fYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSBtaW5fYWxsb3dlZF9rZXkgS2V5Lnplcm8pO1xuICAgICAgICAgICAgICAgaWYgS2V5LiggPCApIG1pbl9hbGxvd2VkX2tleSBLZXkubWF4X3ZhbHVlXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgICAgKEtleS5yZW0gbWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QpXG4gICAgICAgICAgICAgICAgICAgfmV4cGVjdDpLZXkuU3Bhbi56ZXJvKSlcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbWF4X2FsbG93ZWRfa2V5IC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgKEtleS5hZGRfY2xhbXBfdG9fbWF4XG4gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgbGV2ZWwuZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5KSkpXG4gICAgICAgICAgfnNsb3RzOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gc2xvdHMgLT5cbiAgICAgICAgICAgICAgIEFycmF5Lml0ZXIgc2xvdHMgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQpXG4gICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgIEludGVybmFsX2VsdC5pbnZhcmlhbnQgcG9vbCBpbnZhcmlhbnRfYSBlbHQ7XG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0Lml0ZXIgcG9vbCBlbHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgbGV2ZWwubWluX2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPD0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoSW50ZXJuYWxfZWx0LmxldmVsX2luZGV4IHBvb2wgZWx0ID0gbGV2ZWwuaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgaW52YXJpYW50X2EgKEludGVybmFsX2VsdC52YWx1ZSBwb29sIGVsdCkpKSkpKSlcbiAgICBpblxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0X2ludGVybmFsXSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAobWluX2FsbG93ZWRfa2V5IHQpIEtleS56ZXJvKTtcbiAgICAgIGFzc2VydCAoS2V5LiggPj0gKSAobWF4X2FsbG93ZWRfa2V5IHQpIChtaW5fYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmxlbmd0aDooY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPj0gMCkpKVxuICAgICAgICB+cG9vbDooY2hlY2sgKEludGVybmFsX2VsdC5Qb29sLmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgICB+bWluX2VsdDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfIC0+XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRfKVxuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQuaXNfdmFsaWQgdC5wb29sIGVsdF8pO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuZXF1YWwgdC5lbHRfa2V5X2xvd2VyX2JvdW5kIChJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHRfKSkpKSlcbiAgICAgICAgfmVsdF9rZXlfbG93ZXJfYm91bmQ6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZWx0X2tleV9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPj0gKSBlbHRfa2V5X2xvd2VyX2JvdW5kIChtaW5fYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgICAgICAgIGFzc2VydCAoS2V5LiggPD0gKSBlbHRfa2V5X2xvd2VyX2JvdW5kIChtYXhfYWxsb3dlZF9rZXkgdCkpO1xuICAgICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgdC5taW5fZWx0KVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoS2V5LmVxdWFsIGVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIHQubWluX2VsdCkpKSlcbiAgICAgICAgfmxldmVsczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZXZlbHMgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKG51bV9sZXZlbHMgdCA+IDApO1xuICAgICAgICAgICAgIEFycmF5Lml0ZXJpIGxldmVscyB+ZjooZnVuIGxldmVsX2luZGV4IGxldmVsIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKGxldmVsX2luZGV4ID0gTGV2ZWwuaW5kZXggbGV2ZWwpO1xuICAgICAgICAgICAgICAgbGV2ZWxfaW52YXJpYW50IGxldmVsO1xuICAgICAgICAgICAgICAgaWYgbGV2ZWxfaW5kZXggPiAwXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHByZXZfbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4IC0gMSkgaW5cbiAgICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBMID0gTGV2ZWwgaW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoTC5rZXlzX3Blcl9zbG90IGxldmVsKVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5TcGFuLnN1Y2MgcHJldl9sZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAgKExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OnByZXZfbGV2ZWwubWF4X2FsbG93ZWRfa2V5KSkpKSkpXG4gIDs7XG5cbiAgKCoqIFttaW5fZWx0X10gcmV0dXJucyBbbnVsbF0gaWYgaXQgY2FuJ3QgZmluZCB0aGUgZGVzaXJlZCBlbGVtZW50LiAgV2Ugd3JhcCBpdCB1cFxuICAgICAgYWZ0ZXJ3YXJkcyB0byByZXR1cm4gYW4gW29wdGlvbl0uICopXG4gIGxldCBtaW5fZWx0XyB0ID1cbiAgICBpZiBpc19lbXB0eSB0XG4gICAgdGhlbiBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgdGhlbiB0Lm1pbl9lbHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbWluX2VsdF9hbHJlYWR5X2ZvdW5kID0gcmVmIChJbnRlcm5hbF9lbHQubnVsbCAoKSkgaW5cbiAgICAgIGxldCBtaW5fa2V5X2FscmVhZHlfZm91bmQgPSByZWYgS2V5Lm1heF92YWx1ZSBpblxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIEtleS4oID4gKSAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIGFueSBtb3JlIGxldmVscy4gIFF1aXQgdGhlIGxvb3AuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVsc1xuICAgICAgICBlbHNlIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgICAgdGhlbiBpbmNyIGxldmVsX2luZGV4XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExvb2sgaW4gW2xldmVsXS4gKilcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGxldCBzbG90X21pbl9rZXkgPVxuICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICAgIChMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICB+a2V5OihLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohc2xvdF9taW5fa2V5KSBpblxuICAgICAgICAgICgqIEZpbmQgdGhlIGZpcnN0IG5vbmVtcHR5IHNsb3Qgd2l0aCBhIHNtYWxsIGVub3VnaCBbc2xvdF9taW5fa2V5XS4gKilcbiAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmlzX251bGwgc2xvdHMuKCFzbG90KVxuICAgICAgICAgICAgJiYgS2V5LiggPCApICFzbG90X21pbl9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgIGRvXG4gICAgICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgICAgIHNsb3RfbWluX2tleSA6PSBLZXkuYWRkICFzbG90X21pbl9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdFxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBWaXNpdCBhbGwgb2YgdGhlIGVsdHMgaW4gdGhpcyBzbG90IGFuZCBmaW5kIG9uZSB3aXRoIG1pbmltdW0ga2V5LiAqKVxuICAgICAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfa2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgIGlmIEtleS4oIDw9ICkgY3VycmVudF9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBtaW5fZWx0X2FscmVhZHlfZm91bmQgOj0gIWN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgbWluX2tleV9hbHJlYWR5X2ZvdW5kIDo9IGN1cnJlbnRfa2V5KTtcbiAgICAgICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgICgqIElmIFshbGV2ZWxfaW5kZXggPSAwXSB0aGVuIGFsbCBlbHRzIGluIHRoaXMgc2xvdCBoYXZlIHRoZSBzYW1lIFtrZXldLFxuICAgICAgICAgICAgICAgICBpLmUuIFshc2xvdF9taW5fa2V5XS4gIFNvLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueSBlbGVtZW50cyBhZnRlclxuICAgICAgICAgICAgICAgICBbZmlyc3RdLiAgVGhpcyBpcyBhIHVzZWZ1bCBzaG9ydCBjdXQgaW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgdGhlcmUgYXJlXG4gICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG1pbiBzbG90IGluIGxldmVsIDAuICopXG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB8fCAhbGV2ZWxfaW5kZXggPSAwXG4gICAgICAgICAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgICAgICAgICAgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICgqIEZpbmlzaGVkIGxvb2tpbmcgaW4gW2xldmVsXS4gIE1vdmUgdXAgdG8gdGhlIG5leHQgbGV2ZWwuICopXG4gICAgICAgICAgaW5jciBsZXZlbF9pbmRleClcbiAgICAgIGRvbmU7XG4gICAgICB0Lm1pbl9lbHQgPC0gIW1pbl9lbHRfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5taW5fZWx0KVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICAgKGtleSA6IEtleS50KVxuICAgICAgICAgIChtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIChtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5wcmlvcml0eV9xdWV1ZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbCA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGxldmVsIGJvdW5kc1wiIChrZXkgOiBLZXkudCkgKGxldmVsIDogXyBMZXZlbC50KV1cbiAgOztcblxuICBsZXQgYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSAmJiBLZXkuKCA8PSApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpKVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleTtcbiAgICAoKiBGaW5kIHRoZSBsb3dlc3QgbGV2ZWwgdGhhdCB3aWxsIGhvbGQgW2VsdF0uICopXG4gICAgbGV0IGxldmVsX2luZGV4ID1cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICB3aGlsZSBLZXkuKCA+ICkga2V5IChMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkpIGRvXG4gICAgICAgIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgIGRvbmU7XG4gICAgICAhbGV2ZWxfaW5kZXhcbiAgICBpblxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IGxldmVsLm1pbl9hbGxvd2VkX2tleSAmJiBLZXkuKCA8PSApIGtleSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbDtcbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoICsgMTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2xldmVsX2luZGV4IHBvb2wgZWx0IGxldmVsX2luZGV4O1xuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lmluc2VydF9hdF9lbmQgcG9vbCBmaXJzdCB+dG9fYWRkOmVsdFxuICAgIGVsc2UgKFxuICAgICAgc2xvdHMuKHNsb3QpIDwtIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC5saW5rX3RvX3NlbGYgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHQgaW5cbiAgICBpZiBLZXkuKCA8ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gKFxuICAgICAgdC5taW5fZWx0IDwtIGVsdDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBrZXkpO1xuICAgIGFkZF9lbHQgdCBlbHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5hZGRfYXRfaW50ZXJ2YWxfbnVtIGdvdCBpbnZhbGlkIGludGVydmFsIG51bVwiXG4gICAgICAgICAgfmludGVydmFsX251bTooa2V5IDogS2V5LnQpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KV1cbiAgOztcblxuICBsZXQgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXkgPVxuICAgIGlmIEtleS4oIDwgKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSB8fCBLZXkuKCA+ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGQgdCB+a2V5IH5hdCB2YWx1ZSA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgaWYgSW50ZXJuYWxfZWx0LlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gSW50ZXJuYWxfZWx0LlBvb2wuZ3JvdyB0LnBvb2w7XG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5jcmVhdGUgdC5wb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXg6KC0xKSBpblxuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHQ7XG4gICAgZWx0XG4gIDs7XG5cbiAgKCoqIFtyZW1vdmVfb3JfcmVfYWRkX2VsdHNdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgW2ZpcnN0XS4gIElmIHRoZSBlbGVtZW50J3Mga2V5IGlzIFs+PSB0X21pbl9hbGxvd2VkX2tleV0sIHRoZW4gaXQgYWRkcyB0aGUgZWxlbWVudFxuICAgICAgYmFjayBhdCBhIGxvd2VyIGxldmVsLiAgSWYgbm90LCB0aGVuIGl0IGNhbGxzIFtoYW5kbGVfcmVtb3ZlZF0gYW5kIFtmcmVlXXMgdGhlXG4gICAgICBlbGVtZW50LiAqKVxuICBsZXQgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgKGxldmVsIDogXyBMZXZlbC50KSBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgKCogV2UgZXh0cmFjdCBbbmV4dF0gZnJvbSBbY3VycmVudF0gZmlyc3QsIGJlY2F1c2Ugd2Ugd2lsbCBtb2RpZnkgb3IgW2ZyZWVdXG4gICAgICAgICBbY3VycmVudF0gYmVmb3JlIGNvbnRpbnVpbmcgdGhlIGxvb3AuICopXG4gICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgICAgaWYgS2V5LiggPj0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50KSB0X21pbl9hbGxvd2VkX2tleVxuICAgICAgdGhlbiBhZGRfZWx0IHQgIWN1cnJlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGhhbmRsZV9yZW1vdmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgIWN1cnJlbnQpO1xuICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sICFjdXJyZW50KTtcbiAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgZG9uZVxuICA7O1xuXG4gICgqKiBbaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIFtsZXZlbF0gdG8gYXNcbiAgICAgIGxhcmdlIGEgdmFsdWUgYXMgcG9zc2libGUsIGJ1dCBubyBtb3JlIHRoYW4gW21heF9sZXZlbF9taW5fYWxsb3dlZF9rZXldLlxuICAgICAgW3RfbWluX2FsbG93ZWRfa2V5XSBpcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBmb3IgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwuICBBc1xuICAgICAgZWxlbWVudHMgYXJlIGVuY291bnRlcmVkLCB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIHRpbWluZyB3aGVlbCBpZiB0aGVpciBrZXkgaXNcbiAgICAgIHNtYWxsZXIgdGhhbiBbdF9taW5fYWxsb3dlZF9rZXldLCBvciBhZGRlZCBhdCBhIGxvd2VyIGxldmVsIGlmIG5vdC4gKilcbiAgbGV0IGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0XG4gICAgICAgIChsZXZlbCA6IF8gTGV2ZWwudClcbiAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgIH50X21pbl9hbGxvd2VkX2tleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IGxldmVsIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgIGluXG4gICAgKCogV2UgcmVxdWlyZSB0aGF0IFttb2QgbGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QgPSAwXS4gIFNvLFxuICAgICAgIHdlIHN0YXJ0IFtsZXZlbF9taW5fYWxsb3dlZF9rZXldIHdoZXJlIHRoYXQgaXMgdHJ1ZSwgYW5kIHRoZW4gaW5jcmVhc2UgaXQgYnlcbiAgICAgICBba2V5c19wZXJfc2xvdF0gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuICopXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICBsZXZlbFxuICAgICAgICB+a2V5OlxuICAgICAgICAgIChLZXkubWluXG4gICAgICAgICAgICAgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAoS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICBpblxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPSByZWYgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGluXG4gICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohbGV2ZWxfbWluX2FsbG93ZWRfa2V5KSBpblxuICAgIGxldCBrZXlzX3Blcl9zbG90ID0gbGV2ZWwua2V5c19wZXJfc2xvdCBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgd2hpbGUgS2V5LiggPCApICFsZXZlbF9taW5fYWxsb3dlZF9rZXkgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgZG9cbiAgICAgIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgKCogSWYgbm8gZWxlbWVudHMgcmVtYWluIGF0IHRoaXMgbGV2ZWwsIHdlIGNhbiBqdXN0IHNldCBbbWluX2FsbG93ZWRfa2V5XSB0byB0aGVcbiAgICAgICAgICAgZGVzaXJlZCB2YWx1ZS4gKilcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzbG90cy4oIXNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICAgIHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IGxldmVsIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWQpO1xuICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IEtleS5hZGRfY2xhbXBfdG9fbWF4ICFsZXZlbF9taW5fYWxsb3dlZF9rZXkga2V5c19wZXJfc2xvdClcbiAgICBkb25lO1xuICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSA8LSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleTtcbiAgICBsZXZlbC5tYXhfYWxsb3dlZF9rZXlcbiAgICA8LSBLZXkuYWRkX2NsYW1wX3RvX21heCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgOztcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICBsZXQgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWQgOiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnQgPVxuICAgIGlmIEtleS4oIDw9ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgIGVsc2UgKFxuICAgICAgKCogV2UgaW5jcmVhc2UgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIGxldmVscyBpbiBvcmRlciB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnRcbiAgICAgICAgIHRoYXQgdGhleSBoYXZlIGFzIGxhcmdlIGFzIHBvc3NpYmxlIGEgW21pbl9hbGxvd2VkX2tleV0sIHdoaWxlIGxlYXZpbmcgbm8gZ2Fwc1xuICAgICAgICAgaW4ga2V5cy4gKilcbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQuTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgaW5cbiAgICAgIGxldCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9IHJlZiAoS2V5LnByZWQga2V5KSBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleV9iZWZvcmUgPSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgaW5cbiAgICAgICAgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgdFxuICAgICAgICAgIGxldmVsXG4gICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OiFwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICAgIH50X21pbl9hbGxvd2VkX2tleTprZXlcbiAgICAgICAgICB+aGFuZGxlX3JlbW92ZWQ7XG4gICAgICAgIGlmIEtleS5lcXVhbCAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIFRoaXMgbGV2ZWwgZGlkIG5vdCBzaGlmdC4gIERvbid0IHNoaWZ0IGFueSBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHM7XG4gICAgICAgICAgcmVzdWx0IDo9IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTGV2ZWwgW2xldmVsX2luZGV4XSBzaGlmdGVkLiAgQ29uc2lkZXIgc2hpZnRpbmcgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSAhbGV2ZWxfaW5kZXggKyAxO1xuICAgICAgICAgIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IDo9IExldmVsLm1heF9hbGxvd2VkX2tleSBsZXZlbClcbiAgICAgIGRvbmU7XG4gICAgICBpZiBLZXkuKCA+ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFdlIGhhdmUgcmVtb3ZlZCBbdC5taW5fZWx0XSBvciBpdCB3YXMgYWxyZWFkeSBudWxsLCBzbyBqdXN0IHNldCBpdCB0b1xuICAgICAgICAgICBudWxsLiAqKVxuICAgICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBtaW5fYWxsb3dlZF9rZXkgdCk7XG4gICAgICAhcmVzdWx0KVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID9sZXZlbF9iaXRzICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBtYXRjaCBsZXZlbF9iaXRzIHdpdGhcbiAgICAgIHwgU29tZSBsIC0+IGxcbiAgICAgIHwgTm9uZSAtPiBMZXZlbF9iaXRzLmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBfLCBfLCBsZXZlbHMgPVxuICAgICAgTGlzdC5mb2xkaVxuICAgICAgICBsZXZlbF9iaXRzXG4gICAgICAgIH5pbml0OihOdW1fa2V5X2JpdHMuemVybywgS2V5Lnplcm8sIFtdKVxuICAgICAgICB+ZjpcbiAgICAgICAgICAoZnVuXG4gICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKGJpdHNfcGVyX3Nsb3QsIG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXksIGxldmVscylcbiAgICAgICAgICAgIChsZXZlbF9iaXRzIDogTnVtX2tleV9iaXRzLnQpXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBsZXQga2V5c19wZXJfc2xvdCA9IEtleS5udW1fa2V5cyBiaXRzX3Blcl9zbG90IGluXG4gICAgICAgICAgICAgIGxldCBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgIGNvbXB1dGVfZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5IH5sZXZlbF9iaXRzIH5iaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID0gTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleSA9XG4gICAgICAgICAgICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXkgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWF4X2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICBLZXkuYWRkX2NsYW1wX3RvX21heCBtaW5fYWxsb3dlZF9rZXkgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsZXZlbCA9XG4gICAgICAgICAgICAgICAgeyBMZXZlbC5pbmRleFxuICAgICAgICAgICAgICAgIDsgYml0cyA9IGxldmVsX2JpdHNcbiAgICAgICAgICAgICAgICA7IHNsb3RzX21hc2sgPSBTbG90c19tYXNrLmNyZWF0ZSB+bGV2ZWxfYml0c1xuICAgICAgICAgICAgICAgIDsgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgIDsga2V5c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgIDsgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgIDsgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgOyBsZW5ndGggPSAwXG4gICAgICAgICAgICAgICAgOyBtaW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICA7IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgIDsgc2xvdHMgPVxuICAgICAgICAgICAgICAgICAgICBBcnJheS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuOihJbnQ2My50b19pbnRfZXhuIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSlcbiAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0Lm51bGwgKCkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIE51bV9rZXlfYml0cy4oICsgKSBsZXZlbF9iaXRzIGJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgLCBLZXkuc3VjY19jbGFtcF90b19tYXggbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICwgbGV2ZWwgOjogbGV2ZWxzICkpXG4gICAgaW5cbiAgICB7IGxlbmd0aCA9IDBcbiAgICA7IHBvb2wgPSBJbnRlcm5hbF9lbHQuUG9vbC5jcmVhdGUgP2NhcGFjaXR5ICgpXG4gICAgOyBtaW5fZWx0ID0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICA7IGVsdF9rZXlfbG93ZXJfYm91bmQgPSBLZXkuemVyb1xuICAgIDsgbGV2ZWxzID0gQXJyYXkub2ZfbGlzdF9yZXYgbGV2ZWxzXG4gICAgfVxuICA7O1xuXG4gIGxldCBtZW0gdCBlbHQgPSBJbnRlcm5hbF9lbHQuZXh0ZXJuYWxfaXNfdmFsaWQgdC5wb29sIGVsdFxuXG4gIGxldCBpbnRlcm5hbF9yZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgaWYgSW50ZXJuYWxfZWx0LmVxdWFsIGVsdCB0Lm1pbl9lbHRcbiAgICB0aGVuXG4gICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICAoKiBXZSBrZWVwIFt0LmVsdF9sb3dlcl9ib3VuZF0gc2luY2UgaXQgaXMgdmFsaWQgZXZlbiB0aG91Z2ggW3QubWluX2VsdF0gaXMgYmVpbmdcbiAgICAgICByZW1vdmVkLiAqKTtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCkgaW5cbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIHBoeXNfZXF1YWwgZWx0IChJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdClcbiAgICB0aGVuICgqIFtlbHRdIGlzIHRoZSBvbmx5IGVsZW1lbnQgaW4gdGhlIHNsb3QgKilcbiAgICAgIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBlbHQgZmlyc3QgdGhlbiBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQudW5saW5rIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHRcbiAgOztcblxuICBsZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgfmtleSB+bm93ID1cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oMCkgaW5cbiAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZmlyc3QgPSByZWYgc2xvdHMuKHNsb3QpIGluXG4gICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsICFmaXJzdClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY3VycmVudCA9IHJlZiAhZmlyc3QgaW5cbiAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgbGV0IGVsdCA9ICFjdXJyZW50IGluXG4gICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdCBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCAhZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dDtcbiAgICAgICAgICBpZiBUaW1lX25zLiggPD0gKSAoSW50ZXJuYWxfZWx0LmF0IHBvb2wgZWx0KSBub3dcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGhhbmRsZV9maXJlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsIGVsdCk7XG4gICAgICAgICAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdDtcbiAgICAgICAgICAgICgqIFdlIHJlY29tcHV0ZSBbZmlyc3RdIGJlY2F1c2UgW2ludGVybmFsX3JlbW92ZV0gbWF5IGhhdmUgY2hhbmdlZCBpdC4gKilcbiAgICAgICAgICAgIGZpcnN0IDo9IHNsb3RzLihzbG90KSlcbiAgICAgICAgZG9uZSkpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGVsdCB+a2V5IH5hdCA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2tleSBwb29sIGVsdCBrZXk7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9hdCBwb29sIGVsdCBhdDtcbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0XG4gIDs7XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZyZWVfZWx0IGVsdCA9IEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0IGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXZlbC5sZW5ndGggPC0gMDtcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjpmcmVlX2VsdDtcbiAgICAgICAgICAgICAgc2xvdHMuKHNsb3RfaW5kZXgpIDwtIEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbF9lbHQgPSBQcmlvcml0eV9xdWV1ZS5JbnRlcm5hbF9lbHRcbm1vZHVsZSBLZXkgPSBQcmlvcml0eV9xdWV1ZS5LZXlcbm1vZHVsZSBJbnRlcnZhbF9udW0gPSBLZXlcblxubGV0IG1pbl9pbnRlcnZhbF9udW0gPSBJbnRlcnZhbF9udW0uemVyb1xuXG4oKiBBbGwgdGltZSBmcm9tIHRoZSBlcG9jaCBvbndhcmRzIGlzIGJyb2tlbiBpbnRvIGhhbGYtb3BlbiBpbnRlcnZhbHMgb2Ygc2l6ZVxuICAgW0NvbmZpZy5hbGFybV9wcmVjaXNpb24gY29uZmlnXS4gIFRoZSBpbnRlcnZhbHMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGF0IHplcm8sIGFuZCBhXG4gICB0aW1lJ3MgaW50ZXJ2YWwgbnVtYmVyIHNlcnZlcyBhcyBpdHMga2V5IGluIFtwcmlvcml0eV9xdWV1ZV0uICopXG50eXBlICdhIHQgPVxuICB7IGNvbmZpZyA6IENvbmZpZy50XG4gIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgOyAoKiBbbWF4X2ludGVydmFsX251bV0gaXMgdGhlIGludGVydmFsIG51bWJlciBvZiBbbWF4X3RpbWVdLiAqKVxuICAgIG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICA7IG11dGFibGUgbm93IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50XG4gIDsgcHJpb3JpdHlfcXVldWUgOiAnYSBQcmlvcml0eV9xdWV1ZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSB0aW1pbmdfd2hlZWwgPSAnYSB0XG50eXBlICdhIHRfbm93ID0gJ2EgdFxuXG5sZXQgc2V4cF9vZl90X25vdyBfIHQgPSBbJXNleHAgKHQubm93IDogVGltZV9ucy50KV1cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IENvbmZpZy5hbGFybV9wcmVjaXNpb24gdC5jb25maWdcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByaW9yaXR5X3F1ZXVlLkVsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IG51bGwgPSBQcmlvcml0eV9xdWV1ZS5FbHQubnVsbFxuICBsZXQgYXQgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5hdCB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCB2YWx1ZSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LnZhbHVlIHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IGludGVydmFsX251bSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmtleSB0dy5wcmlvcml0eV9xdWV1ZSB0XG5lbmRcblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IGl0ZXIgdCB+ZiA9IFByaW9yaXR5X3F1ZXVlLml0ZXIgdC5wcmlvcml0eV9xdWV1ZSB+ZlxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGF0IDogVGltZV9ucy50XG4gICAgICA7IHZhbHVlIDogJ2FcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHQgYWxhcm0gPSB7IGF0ID0gQWxhcm0uYXQgdCBhbGFybTsgdmFsdWUgPSBBbGFybS52YWx1ZSB0IGFsYXJtIH1cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9IFRpbWVfbnMuY29tcGFyZSAoYXQgdDEpIChhdCB0MilcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbmZpZyA6IENvbmZpZy50XG4gICAgOyBzdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gICAgOyBub3cgOiBUaW1lX25zLnRcbiAgICA7IGFsYXJtcyA6ICdhIEFsYXJtLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgcHJldHR5XG4gICAgICAoeyBjb25maWdcbiAgICAgICA7IHN0YXJ0XG4gICAgICAgOyBtYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgOyBub3dcbiAgICAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPSBfXG4gICAgICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gX1xuICAgICAgIDsgcHJpb3JpdHlfcXVldWUgPSBfXG4gICAgICAgfSBhcyB0KVxuICA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gciA6PSBQcmV0dHkuQWxhcm0uY3JlYXRlIHQgYSA6OiAhcik7XG4gIGxldCBhbGFybXMgPSBMaXN0LnNvcnQgIXIgfmNvbXBhcmU6UHJldHR5LkFsYXJtLmNvbXBhcmUgaW5cbiAgeyBQcmV0dHkuY29uZmlnOyBzdGFydDsgbWF4X2ludGVydmFsX251bTsgbm93OyBhbGFybXMgfVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICB8IGBJbnRlcm5hbCAtPiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9hIHRcbiAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbjs7XG5cbmxldCBsZW5ndGggdCA9IFByaW9yaXR5X3F1ZXVlLmxlbmd0aCB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCIgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2l0aCBhbGwgYWxhcm1zIGluIG1heCBpbnRlcnZhbFwiXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0IHBvb2wgdCA9IFByaW9yaXR5X3F1ZXVlLnBvb2wgdC5wcmlvcml0eV9xdWV1ZVxuXG5sZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb24gPVxuICBJbnRlcnZhbF9udW0ub2ZfaW50NjMgKEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW0gYWxhcm1fcHJlY2lzaW9uIHRpbWUpXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWUgPVxuICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbjp0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbjs7XG5cbmxldCBpbnRlcnZhbF9udW0gdCB0aW1lID1cbiAgaWYgVGltZV9ucy4oIDwgKSB0aW1lIG1pbl90aW1lXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtIGdvdCB0aW1lIHRvbyBmYXIgaW4gdGhlIHBhc3RcIiAodGltZSA6IFRpbWVfbnMudCldO1xuICBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW0gPVxuICBBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgdC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgKGludGVydmFsX251bSB8PiBJbnRlcnZhbF9udW0udG9faW50NjMpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIHNtYWxsIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKG1pbl9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gbGFyZ2UgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAodC5tYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gIGlmIEludGVydmFsX251bS4oIDwgKSBpbnRlcnZhbF9udW0gbWluX2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bTtcbiAgaWYgSW50ZXJ2YWxfbnVtLiggPiApIGludGVydmFsX251bSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bTtcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkgPVxuICAoKiBbaW50ZXJ2YWxfbnVtX3N0YXJ0IHQga2V5XSBpcyB0aGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0aW1lIGludGVydmFsXG4gICAgIGhvbGRpbmcgdGhlIGZpcnN0IGFsYXJtIGluIFt0XS4gIEFkdmFuY2luZyB0byB0aGF0IHdvdWxkIG5vdCBiZSBlbm91Z2gsIHNpbmNlIHRoZVxuICAgICBhbGFybXMgaW4gdGhhdCBpbnRlcnZhbCBkb24ndCBmaXJlIHVudGlsIHRoZSBjbG9jayBpcyBhZHZhbmNlZCB0byB0aGUgc3RhcnQgb2YgdGhlXG4gICAgIG5leHQgaW50ZXJ2YWwuICBTbywgd2UgdXNlIFtzdWNjIGtleV0gdG8gYWR2YW5jZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgaW50ZXJ2YWwuICopXG4gIGludGVydmFsX251bV9zdGFydCB0IChLZXkuc3VjYyBrZXkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAobmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0O1xuICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdDtcbiAgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleVxuOztcblxubGV0IGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID1cbiAgbGV0IG1heF9hbGxvd2VkX2tleSA9IFByaW9yaXR5X3F1ZXVlLm1heF9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVydmFsX251bS4oID49ICkgbWF4X2FsbG93ZWRfa2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIG1heF90aW1lXG4gIGVsc2VcbiAgICBUaW1lX25zLmFkZFxuICAgICAgKGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBtYXhfYWxsb3dlZF9rZXkpXG4gICAgICAoVGltZV9ucy5TcGFuLiggLSApIChhbGFybV9wcmVjaXNpb24gdCkgVGltZV9ucy5TcGFuLm5hbm9zZWNvbmQpXG47O1xuXG5sZXQgbm93X2ludGVydmFsX251bSB0ID0gUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWVcbmxldCBtaW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gPSBub3dfaW50ZXJ2YWxfbnVtXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIHQgPSBpbnRlcnZhbF9udW0gdCAobWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxubGV0IGludGVydmFsX3N0YXJ0IHQgdGltZSA9IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCAoaW50ZXJ2YWxfbnVtIHQgdGltZSlcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNvbmZpZzooY2hlY2sgQ29uZmlnLmludmFyaWFudClcbiAgICAgIH5zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gc3RhcnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBzdGFydCBtaW5fdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgc3RhcnQgbWF4X3RpbWUpKSlcbiAgICAgIH5tYXhfaW50ZXJ2YWxfbnVtOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaW50ZXJ2YWxfbnVtIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCBtYXhfdGltZSk7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgbWF4X2ludGVydmFsX251bSkpKSlcbiAgICAgIH5ub3c6XG4gICAgICAgIChjaGVjayAoZnVuIG5vdyAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIG5vdyB0LnN0YXJ0KTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBub3cgbWF4X3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgICAgICAgKGludGVydmFsX251bSB0IHQubm93KVxuICAgICAgICAgICAgICAgKFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlKSkpKVxuICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgICAgICAgICAgICB+ZXhwZWN0OihpbnRlcnZhbF9udW1fc3RhcnQgdCAobm93X2ludGVydmFsX251bSB0KSkpKVxuICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG1heF9hbGxvd2VkX2FsYXJtX3RpbWVcbiAgICAgICAgICAgICB+ZXhwZWN0Oihjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpKVxuICAgICAgfnByaW9yaXR5X3F1ZXVlOihjaGVjayAoUHJpb3JpdHlfcXVldWUuaW52YXJpYW50IGludmFyaWFudF9hKSk7XG4gICAgaXRlciB0IH5mOihmdW4gYWxhcm0gLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgIChBbGFybS5pbnRlcnZhbF9udW0gdCBhbGFybSlcbiAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKEFsYXJtLmF0IHQgYWxhcm0pKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPj0gKSAoaW50ZXJ2YWxfc3RhcnQgdCAoQWxhcm0uYXQgdCBhbGFybSkpIChpbnRlcnZhbF9zdGFydCB0IChub3cgdCkpKTtcbiAgICAgIGFzc2VydCAoVGltZV9ucy4oID4gKSAoQWxhcm0uYXQgdCBhbGFybSkgKFRpbWVfbnMuc3ViIChub3cgdCkgKGFsYXJtX3ByZWNpc2lvbiB0KSkpKSlcbjs7XG5cbmxldCBkZWJ1ZyA9IGZhbHNlXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+aGFuZGxlX2ZpcmVkID1cbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyB0KVxuICB0aGVuIChcbiAgICB0Lm5vdyA8LSB0b187XG4gICAgbGV0IGtleSA9IGludGVydmFsX251bV91bmNoZWNrZWQgdCB0b18gaW5cbiAgICB0Lm5vd19pbnRlcnZhbF9udW1fc3RhcnQgPC0gaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGtleTtcbiAgICBtYXRjaFxuICAgICAgUHJpb3JpdHlfcXVldWUuaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICAgfmtleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWQ6aGFuZGxlX2ZpcmVkXG4gICAgd2l0aFxuICAgIHwgTWF4X2FsbG93ZWRfa2V5X2RpZF9ub3RfY2hhbmdlIC0+XG4gICAgICBpZiBkZWJ1Z1xuICAgICAgdGhlblxuICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA9ICkgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIChjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZCAtPlxuICAgICAgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDwtIGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxuOztcblxubGV0IGNyZWF0ZSB+Y29uZmlnIH5zdGFydCA9XG4gIGlmIFRpbWVfbnMuKCA8ICkgc3RhcnQgVGltZV9ucy5lcG9jaFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsLmNyZWF0ZSBnb3Qgc3RhcnQgYmVmb3JlIHRoZSBlcG9jaFwiIChzdGFydCA6IFRpbWVfbnMudCldO1xuICBsZXQgdCA9XG4gICAgeyBjb25maWdcbiAgICA7IHN0YXJ0XG4gICAgOyBtYXhfaW50ZXJ2YWxfbnVtID1cbiAgICAgICAgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lOm1heF90aW1lIH5hbGFybV9wcmVjaXNpb246Y29uZmlnLmFsYXJtX3ByZWNpc2lvblxuICAgIDsgbm93ID0gVGltZV9ucy5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5taW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gbWF4X3RpbWUgKCogc2V0IGJ5IFthZHZhbmNlX2Nsb2NrXSBiZWxvdyAqKVxuICAgIDsgcHJpb3JpdHlfcXVldWUgPVxuICAgICAgICBQcmlvcml0eV9xdWV1ZS5jcmVhdGUgP2NhcGFjaXR5OmNvbmZpZy5jYXBhY2l0eSB+bGV2ZWxfYml0czpjb25maWcubGV2ZWxfYml0cyAoKVxuICAgIH1cbiAgaW5cbiAgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDwtIGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0O1xuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXzpzdGFydCB+aGFuZGxlX2ZpcmVkOihmdW4gXyAtPiBhc3NlcnQgZmFsc2UpO1xuICB0XG47O1xuXG5sZXQgYWRkX2F0X2ludGVydmFsX251bSB0IH5hdCB2YWx1ZSA9XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTphdFxuICAgICAgIH5hdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgYXQpXG4gICAgICAgdmFsdWUpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX3RoYXRfZmFyX2luX3RoZV9mdXR1cmUgdCBhdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsIGNhbm5vdCBzY2hlZHVsZSBhbGFybSB0aGF0IGZhciBpbiB0aGUgZnV0dXJlXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1fdGltZToodC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50KV1cbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdCA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsIGNhbm5vdCBzY2hlZHVsZSBhbGFybSBiZWZvcmUgc3RhcnQgb2YgY3VycmVudCBpbnRlcnZhbFwiXG4gICAgICAgIChhdCA6IFRpbWVfbnMudClcbiAgICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6KHQubm93X2ludGVydmFsX251bV9zdGFydCA6IFRpbWVfbnMudCldXG47O1xuXG5sZXQgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdCA9XG4gIGlmIFRpbWVfbnMuKCA+ICkgYXQgdC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHRoZW4gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0O1xuICBpZiBUaW1lX25zLiggPCApIGF0IHQubm93X2ludGVydmFsX251bV9zdGFydFxuICB0aGVuIHJhaXNlX2JlZm9yZV9zdGFydF9vZl9jdXJyZW50X2ludGVydmFsIHQgYXRcbjs7XG5cbmxldCBhZGQgdCB+YXQgdmFsdWUgPVxuICBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0O1xuICBJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWxcbiAgICAoUHJpb3JpdHlfcXVldWUuaW50ZXJuYWxfYWRkXG4gICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgIH5rZXk6KGludGVydmFsX251bV91bmNoZWNrZWQgdCBhdClcbiAgICAgICB+YXRcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldCByZW1vdmUgdCBhbGFybSA9IFByaW9yaXR5X3F1ZXVlLnJlbW92ZSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtXG5sZXQgY2xlYXIgdCA9IFByaW9yaXR5X3F1ZXVlLmNsZWFyIHQucHJpb3JpdHlfcXVldWVcbmxldCBtZW0gdCBhbGFybSA9IFByaW9yaXR5X3F1ZXVlLm1lbSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtXG5cbmxldCByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXkgfmF0ID1cbiAgaWYgbm90IChtZW0gdCBhbGFybSlcbiAgdGhlbiBmYWlsd2l0aCBcIlRpbWluZ193aGVlbCBjYW5ub3QgcmVzY2hlZHVsZSBhbGFybSBub3QgaW4gdGltaW5nIHdoZWVsXCI7XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIFByaW9yaXR5X3F1ZXVlLmNoYW5nZSB0LnByaW9yaXR5X3F1ZXVlIGFsYXJtIH5rZXkgfmF0XG47O1xuXG5sZXQgcmVzY2hlZHVsZSB0IGFsYXJtIH5hdCA9IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KSB+YXRcblxubGV0IHJlc2NoZWR1bGVfYXRfaW50ZXJ2YWxfbnVtIHQgYWxhcm0gfmF0ID1cbiAgcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OmF0IH5hdDooaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgYXQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bSB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5taW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biBvZiBlbXB0eSB0aW1pbmdfd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuICBlbHNlIEludGVybmFsX2VsdC5rZXkgKHBvb2wgdCkgZWx0XG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdCA9XG4gIGxldCBwb29sID0gcG9vbCB0IGluXG4gIEludGVybmFsX2VsdC5tYXhfYWxhcm1fdGltZSBwb29sIGVsdCB+d2l0aF9rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdCA9XG4gIGxldCBwb29sID0gcG9vbCB0IGluXG4gIEludGVybmFsX2VsdC5taW5fYWxhcm1fdGltZSBwb29sIGVsdCB+d2l0aF9rZXk6KEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAobWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1heF9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHRcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIG9mIGVtcHR5IHRpbWluZyB3aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldO1xuICBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0XG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgPVxuICBQcmlvcml0eV9xdWV1ZS5maXJlX3Bhc3RfYWxhcm1zXG4gICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgIH5oYW5kbGVfZmlyZWRcbiAgICB+a2V5Oihub3dfaW50ZXJ2YWxfbnVtIHQpXG4gICAgfm5vdzp0Lm5vd1xuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE51bV9rZXlfYml0cyA9IE51bV9rZXlfYml0c1xuXG4gIGxldCBpbnRlcnZhbF9udW1faW50ZXJuYWwgPSBpbnRlcnZhbF9udW1faW50ZXJuYWxcbiAgbGV0IG1heF90aW1lID0gbWF4X3RpbWVcbmVuZFxuIiwibW9kdWxlIElucmlhX3N5cyA9IFN5c1xub3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5vcGVuIFBvbHlcblxubGV0IHNlYyA9IFRpbWVfbnMuU3Bhbi5vZl9zZWNcbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5cbm1vZHVsZSBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUaW1lX25zLlNwYW5cblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IFRpbWVfbnMuU3Bhbi52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUaW1lX25zLlNwYW5cblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IFRpbWVfbnMuU3Bhbi52YWxpZGF0ZV9ub25fbmVnYXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gc3RydWN0XG4gIGluY2x1ZGUgVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnRcblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgICBlbmQpXG5cbiAgbGV0IGRlZmF1bHQgPSBjcmVhdGVfZXhuICgxIGxzbCAxNilcbiAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuZW5kXG5cbm1vZHVsZSBNYXhfbnVtX3RocmVhZHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIER1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhvd190b19kdW1wID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRGVmYXVsdFxuICAgICAgfCBDYWxsX2Fib3J0XG4gICAgICB8IENhbGxfZ2NvcmVcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICB0eXBlIHdhdGNoID1cbiAgICB7IGR1bXBfaWZfZGVsYXllZF9ieSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBob3dfdG9fZHVtcCA6IEhvd190b19kdW1wLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgdHlwZSB0ID1cbiAgICB8IFdhdGNoIG9mIHdhdGNoXG4gICAgfCBEb19ub3Rfd2F0Y2hcbiAgW0BAZGVyaXZpbmcgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRGVidWdfdGFnID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQWxsXG4gICAgICB8IENsb2NrXG4gICAgICB8IEZkXG4gICAgICB8IEZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgICAgfCBGaW5hbGl6ZXJzXG4gICAgICB8IEludGVycnVwdG9yXG4gICAgICB8IE1vbml0b3JcbiAgICAgIHwgTW9uaXRvcl9zZW5kX2V4blxuICAgICAgfCBQYXJhbGxlbFxuICAgICAgfCBSZWFkZXJcbiAgICAgIHwgU2NoZWR1bGVyXG4gICAgICB8IFNodXRkb3duXG4gICAgICB8IFRocmVhZF9wb29sXG4gICAgICB8IFRocmVhZF9zYWZlXG4gICAgICB8IFdyaXRlclxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IGxpc3QgPVxuICAgIFsgQWxsXG4gICAgOyBDbG9ja1xuICAgIDsgRmRcbiAgICA7IEZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgIDsgRmluYWxpemVyc1xuICAgIDsgSW50ZXJydXB0b3JcbiAgICA7IE1vbml0b3JcbiAgICA7IE1vbml0b3Jfc2VuZF9leG5cbiAgICA7IFBhcmFsbGVsXG4gICAgOyBSZWFkZXJcbiAgICA7IFNjaGVkdWxlclxuICAgIDsgU2h1dGRvd25cbiAgICA7IFRocmVhZF9wb29sXG4gICAgOyBUaHJlYWRfc2FmZVxuICAgIDsgV3JpdGVyXG4gICAgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGaWxlX2Rlc2NyX3dhdGNoZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBFcG9sbF9pZl90aW1lcmZkXG4gICAgICB8IEVwb2xsXG4gICAgICB8IFNlbGVjdFxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IGxpc3QgPSBbIEVwb2xsX2lmX3RpbWVyZmQ7IEVwb2xsOyBTZWxlY3QgXVxuZW5kXG5cbnR5cGUgdCA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgY2hlY2tfaW52YXJpYW50cyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5IDogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgOiBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyIDogRmlsZV9kZXNjcl93YXRjaGVyLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgOiBNYXhfaW50ZXJfY3ljbGVfdGltZW91dC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA6IE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fdGhyZWFkcyA6IE1heF9udW1fdGhyZWFkcy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudCBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgOiBNaW5faW50ZXJfY3ljbGVfdGltZW91dC50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA6IERlYnVnX3RhZy50IGxpc3Qgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnIDogVGltaW5nX3doZWVsLkNvbmZpZy50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbmxldCBlbXB0eSA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBOb25lXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gTm9uZVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBOb25lXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IE5vbmVcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBOb25lXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBOb25lXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gTm9uZVxuICA7IG1heF9udW1fdGhyZWFkcyA9IE5vbmVcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IE5vbmVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBOb25lXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBOb25lXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IE5vbmVcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBOb25lXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IE5vbmVcbiAgfVxuOztcblxubGV0IGNyZWF0ZVxuICAgICAgP2Fib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICAgICAgP2NoZWNrX2ludmFyaWFudHNcbiAgICAgID9kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgICAgID9kdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gICAgICA/ZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICAgICAgP2ZpbGVfZGVzY3Jfd2F0Y2hlclxuICAgICAgP21heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/bWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gICAgICA/bWF4X251bV90aHJlYWRzXG4gICAgICA/bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICAgID9taW5faW50ZXJfY3ljbGVfdGltZW91dFxuICAgICAgP3ByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICAgICAgP3JlY29yZF9iYWNrdHJhY2VzXG4gICAgICA/cmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICAgICAgP3RocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICAgICAgP3RpbWluZ193aGVlbF9jb25maWdcbiAgICAgICgpXG4gID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyBjaGVja19pbnZhcmlhbnRzXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXJcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICA7IG1heF9udW1fdGhyZWFkc1xuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgOyByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSAod29yZF9zaXplIDogV29yZF9zaXplLnQpID1cbiAgbGV0IG1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uIGluXG4gIGxldCBhbGFybV9wcmVjaXNpb24sIGxldmVsX2JpdHMgPVxuICAgIG1hdGNoIHdvcmRfc2l6ZSB3aXRoXG4gICAgfCBXMzIgLT4gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCwgWyAxMDsgMTA7IDkgXVxuICAgIHwgVzY0IC0+IEFsYXJtX3ByZWNpc2lvbi4oZGl2IGFib3V0X29uZV9taWxsaXNlY29uZCB+cG93MjozKSwgWyAxNDsgMTU7IDk7IDYgXVxuICBpblxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb25cbiAgICB+bGV2ZWxfYml0czooVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBsZXZlbF9iaXRzKVxuICAgICgpXG47O1xuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnX2Zvcl93b3JkX3NpemUgV29yZF9zaXplLndvcmRfc2l6ZVxuOztcblxubGV0IGRlZmF1bHQgPVxuICAoKiBGb3IgW2ZpbGVfZGVzY3Jfd2F0Y2hlcl0gYW5kIFttYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNdIHdlIGNob29zZSB0aGUgZGVmYXVsdCBmb3IgdGhlXG4gICAgIGNvbW1vbiBjYXNlIHRoYXQgW2Vwb2xsXSBpcyBhdmFpbGFibGUuICBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgY29kZSBpblxuICAgICBbQXN5bmNfdW5peC5Db25maWddIHRoYXQgY2hlY2tzIHdoZXRoZXIgW2Vwb2xsXSBpcyBhY3R1YWxseSBhdmFpbGFibGUsIGFuZCBpZiBub3QsXG4gICAgIHVzZXMgW3NlbGVjdF0gYW5kIGEgc21hbGxlciBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycy4gKilcbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIChzZWMgNjAuKVxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGZhbHNlXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gU29tZSBmYWxzZVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIERvX25vdF93YXRjaFxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIChFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLmNyZWF0ZV9leG4gMjU2KVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IFNvbWUgRXBvbGxfaWZfdGltZXJmZFxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuMDUpKVxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLmRlZmF1bHRcbiAgOyBtYXhfbnVtX3RocmVhZHMgPSBTb21lIChNYXhfbnVtX3RocmVhZHMuY3JlYXRlX2V4biA1MClcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICBTb21lIChNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIDUwMClcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgKE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LmNyZWF0ZV9leG4gKHNlYyAwLikpXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gU29tZSBbXVxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSBmYWxzZVxuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIChzZWMgMS4pXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gU29tZSBJbmhlcml0XG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IFNvbWUgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCBleGFtcGxlID1cbiAgeyBkZWZhdWx0IHdpdGhcbiAgICBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIERlYnVnX3RhZy5bIEZkOyBTY2hlZHVsZXIgXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9XG4gICAgICBTb21lXG4gICAgICAgIChDcHVzZXRcbiAgICAgICAgICAgKFsgMDsgMTsgMiBdIHw+IEludC5TZXQub2ZfbGlzdCB8PiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkuQ3B1c2V0LmNyZWF0ZV9leG4pKVxuICB9XG47O1xuXG5sZXQgZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIkFTWU5DX0NPTkZJR1wiXG5cbmxldCBmaWVsZF9kZXNjcmlwdGlvbnMgKCkgOiBzdHJpbmcgPVxuICBsZXQgZmllbGQgdG9fc2V4cCBkZXNjcmlwdGlvbiBhYyBmaWVsZCA9XG4gICAgKEZpZWxkLm5hbWUgZmllbGQsIHRvX3NleHAgKE9wdGlvbi52YWx1ZV9leG4gKEZpZWxkLmdldCBmaWVsZCBkZWZhdWx0KSksIGRlc2NyaXB0aW9uKVxuICAgIDo6IGFjXG4gIGluXG4gIGxldCBmaWVsZHMgPVxuICAgIEZpZWxkcy5mb2xkXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdXG4gICAgICAgICAgIFsge3xcbiAgQnkgZGVmYXVsdCwgQXN5bmMgd2lsbCBzZW5kIGFuIGV4Y2VwdGlvbiB0byB0aGUgdG9wbGV2ZWwgbW9uaXRvclxuICBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIHRocmVhZCBwb29sIGlzIHN0dWNrIGZvciBsb25nZXIgdGhhbiB0aGlzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5jaGVja19pbnZhcmlhbnRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIGNhdXNlcyBBc3luYyB0byByZWd1bGFybHkgY2hlY2sgaW52YXJpYW50cyBvZiBpdHMgaW50ZXJuYWxcbiAgZGF0YSBzdHJ1Y3R1cmVzLiAgVGhpcyBjYW4gc3Vic3RhbnRpYWxseSBzbG93IGRvd24geW91ciBwcm9ncmFtLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5kZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHJvdXRpbmVzIHRvIGNoZWNrIGlmIHRoZXkgYXJlIGJlaW5nIGFjY2Vzc2VkXG4gIGZyb20gc29tZSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUgdGhyZWFkIGN1cnJlbnRseSBob2xkaW5nIHRoZSBBc3luY1xuICBsb2NrLCB3aGljaCBpcyBub3QgYWxsb3dlZCBhbmQgY2FuIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcgYmVoYXZpb3IuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmR1bXBfY29yZV9vbl9qb2JfZGVsYXk6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IER1bXBfY29yZV9vbl9qb2JfZGVsYXkudF1cbiAgICAgICAgICAgWyB7fFxuICBDYW4gYmUgc2V0IHRvIFtEb19ub3Rfd2F0Y2hdIG9yOlxuXG4gICAgKFdhdGNoICgoZHVtcF9pZl9kZWxheWVkX2J5IFNQQU4pIChob3dfdG9fZHVtcCBIT1cpKSlcblxuICBJZiBzZXQgdG8gW1dhdGNoXSwgdGhlbiBvbiBwcm9ncmFtIHN0YXJ0IHRoaXMgd2lsbCBzdGFydCBhIHJlZ3VsYXJcbiAgQXN5bmMgam9iIHRoYXQgaW5jcmVtZW50cyBhIGNvdW50ZXIsIGFuZCBhIEMgdGhyZWFkIHRoYXQgd2lsbFxuICBkZXRlY3QgaWYgdGhhdCBqb2IgaXMgZGVsYXllZCBieSBbZHVtcF9pZl9kZWxheWVkX2J5XSwgYW5kIGlmIHNvLFxuICB3aWxsIGNvcmUgZHVtcCB0aGUgcHJvZ3JhbS4gIElmIGF2YWlsYWJsZSwgWy91c3IvYmluL2djb3JlXSBpc1xuICB1c2VkIGJ5IGRlZmF1bHQgdG8gZHVtcCB0aGUgY29yZSwgd2hpY2ggc2hvdWxkIGFsbG93IHRoZSBwcm9ncmFtXG4gIHRvIGNvbnRpbnVlIHJ1bm5pbmcuICBPdGhlcndpc2UsIFthYm9ydF0gd2lsbCBiZSBjYWxsZWQgZnJvbSBDLFxuICB3aGljaCB3aWxsIGtpbGwgdGhlIHByb2dyYW0gd2hpbGUgY2F1c2luZyBhIGNvcmUgZHVtcC4gIE9uZSBjYW5cbiAgZm9yY2UgW2Fib3J0XSBvciBbZ2NvcmVdIHZpYSBbaG93X3RvX2R1bXBdLCB3aGljaCBzaG91bGQgYmUgb25lIG9mOlxuICBbQ2FsbF9hYm9ydF0sIFtDYWxsX2djb3JlXSwgb3IgW0RlZmF1bHRdLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5lcG9sbF9tYXhfcmVhZHlfZXZlbnRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBFcG9sbF9tYXhfcmVhZHlfZXZlbnRzLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHJlYWR5IGV2ZW50cyB0aGF0IEFzeW5jJ3MgY2FsbCB0byBbRXBvbGwud2FpdF1cbiAgd2lsbCBoYW5kbGUuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmZpbGVfZGVzY3Jfd2F0Y2hlcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRmlsZV9kZXNjcl93YXRjaGVyLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBkZXRlcm1pbmVzIHdoYXQgT1Mgc3Vic3lzdGVtIEFzeW5jIHVzZXMgdG8gd2F0Y2ggZmlsZSBkZXNjcmlwdG9ycyBmb3IgYmVpbmcgcmVhZHkuXG4gIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSBbZXBvbGxdIGlmIHRpbWVyZmQncyBhcmUgc3VwcG9ydGVkIGFuZCBpZiBub3QsIHVzZSBbc2VsZWN0XS5cblxuICBBbGxvd2VkIHZhbHVlcyBhcmU6fH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAoTGlzdC5tYXAgRmlsZV9kZXNjcl93YXRjaGVyLmxpc3QgfmY6RmlsZV9kZXNjcl93YXRjaGVyLnRvX3N0cmluZylcbiAgICAgICAgICAgOyB7fC5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgKGZ1biBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgIH5fOlxuICAgICAgICAgICAgICAgICAgICAoY29uY2F0XG4gICAgICAgICAgICAgICAgICAgICAgIFsgXCJtaW4gXCJcbiAgICAgICAgICAgICAgICAgICAgICAgOyBkZWZhdWx0IHw+IE1heF9udW1fb3Blbl9maWxlX2Rlc2Nycy5yYXcgfD4gSW50LnRvX3N0cmluZ19odW1cbiAgICAgICAgICAgICAgICAgICAgICAgOyBcIiBbdWxpbWl0IC1uIC1IXVwiXG4gICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIDogc3RyaW5nKV0pXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBhbGxvd2VkIGF0IGFueSBvbmUgdGltZS58fSBdKVxuICAgICAgfm1heF9udW1fdGhyZWFkczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X251bV90aHJlYWRzLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBBc3luYyB3aWxsIGNyZWF0ZSB0byBkbyBibG9ja2luZ1xuICBzeXN0ZW0gY2FsbHMgYW5kIGhhbmRsZSBjYWxscyB0byBbSW5fdGhyZWFkLnJ1bl0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9pbnRlcl9jeWNsZV90aW1lb3V0OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfaW50ZXJfY3ljbGVfdGltZW91dC50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSBzY2hlZHVsZXIgd2lsbCBwYXVzZSBiZXR3ZWVuIGN5Y2xlc1xuICB3aGVuIGl0IGhhcyBubyBqb2JzIGFuZCBpcyBnb2luZyB0byB3YWl0IGZvciBJL08uICBJbiBwcmluY2lwbGUgb25lXG4gIGRvZXNuJ3QgbmVlZCB0aGlzLCBhbmQgd2UgY291bGQgdXNlIGFuIGluZmluaXRlIHRpbWVvdXQuICBXZSBpbnN0ZWFkXG4gIHVzZSBhIHNtYWxsIHRpbWVvdXQgKGJ5IGRlZmF1bHQpLCB0byBiZSBtb3JlIHJvYnVzdCB0byBidWdzIHRoYXRcbiAgY291bGQgcHJldmVudCBBc3luYyBmcm9tIHdha2luZyB1cCBhbmQgc2VydmljaW5nIGV2ZW50cy4gIEZvclxuICBleGFtcGxlLCBhcyBvZiAyMDEzLTAxLCB0aGUgT0NhbWwgcnVudGltZSBoYXMgYSBidWcgdGhhdCBjYXVzZXMgaXRcbiAgdG8gbm90IG5lY2Vzc2FyaWx5IHJ1biBhbiBPQ2FtbCBzaWduYWwgaGFuZGxlciBpbiBhIHRpbWVseSBtYW5uZXIuXG4gIFRoaXMgaW4gdHVybiBjYW4gY2F1c2UgYSBzaW1wbGUgQXN5bmMgcHJvZ3JhbSB0aGF0IGlzIHdhaXRpbmcgb24gYVxuICBzaWduYWwgdG8gaGFuZywgd2hlbiBpbiBmYWN0IGl0IHNob3VsZCBoYW5kbGUgdGhlIHNpZ25hbC5cblxuICBXZSB1c2UgNTBtcyBhcyB0aGUgZGVmYXVsdCB0aW1lb3V0LCBiZWNhdXNlIGl0IGlzIGluZnJlcXVlbnQgZW5vdWdoXG4gIHRvIGhhdmUgYSBuZWdsaWdpYmxlIHBlcmZvcm1hbmNlIGltcGFjdCwgYW5kIGZyZXF1ZW50IGVub3VnaCB0aGF0XG4gIHRoZSBsYXRlbmN5IHdvdWxkIHR5cGljYWxseSBiZSBub3Qgbm90aWNlYWJsZS4gIEFsc28sIDUwbXMgaXMgd2hhdFxuICB0aGUgT0NhbWwgdGlja2VyIHRocmVhZCB1c2VzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygam9icyB0aGF0IHdpbGwgYmUgZG9uZSBhdCBlYWNoIHByaW9yaXR5IHdpdGhpblxuICBlYWNoIEFzeW5jIGN5Y2xlLiAgVGhpcyBsaW1pdHMgaG93IG1hbnkgam9icyB0aGUgc2NoZWR1bGVyIHdpbGwgcnVuXG4gIGJlZm9yZSBwYXVzaW5nIHRvIGNoZWNrIGZvciBJL08uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNaW5faW50ZXJfY3ljbGVfdGltZW91dC50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtaW5pbXVtIHRpbWVvdXQgdGhlIHNjaGVkdWxlciB3aWxsIHBhc3MgdG8gdGhlIE9TIHdoZW4gaXQgY2hlY2tzXG4gIGZvciBJL08gYmV0d2VlbiBjeWNsZXMuICBUaGlzIGlzIHplcm8gYnkgZGVmYXVsdC4gIFNldHRpbmcgaXQgdG8gYVxuICBub256ZXJvIHZhbHVlIGlzIHVzZWQgdG8gaW5jcmVhc2UgdGhyZWFkIGZhaXJuZXNzIGJldHdlZW4gdGhlIHNjaGVkdWxlclxuICBhbmQgb3RoZXIgdGhyZWFkcy4gIEEgcGxhdXNpYmxlIHNldHRpbmcgaXMgMXVzLiAgVGhpcyBpcyBhbHNvXG4gIGNvbmZpZ3VyYWJsZSBpbiBPQ2FtbCB2aWEgW1NjaGVkdWxlci5zZXRfbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRdLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3I6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IERlYnVnX3RhZy50IGxpc3RdXG4gICAgICAgICAgIFsge3xcbiAgQSBsaXN0IG9mIHRhZ3Mgc3BlY2lmeWluZyB3aGljaCBBc3luYyBmdW5jdGlvbnMgc2hvdWxkIHByaW50IGRlYnVnXG4gIG1lc3NhZ2VzIHRvIHN0ZGVyci4gIEVhY2ggdGFnIGlkZW50aWZpZXMgYSBncm91cCBvZiByZWxhdGVkIEFzeW5jXG4gIGZ1bmN0aW9ucy4gIFRoZSB0YWcgW2FsbF0gbWVhbnMgdG8gcHJpbnQgZGVidWcgbWVzc2FnZXMgZm9yIGFsbFxuICBmdW5jdGlvbnMuICBBbGxvd2VkIHZhbHVlcyBhcmU6XG5cbnx9XG4gICAgICAgICAgIDsgY29uY2F0XG4gICAgICAgICAgICAgICAoTGlzdC5tYXAgRGVidWdfdGFnLmxpc3QgfmY6KGZ1biBkIC0+XG4gICAgICAgICAgICAgICAgICBjb25jYXQgWyBcIiAgICBcIjsgRGVidWdfdGFnLnRvX3N0cmluZyBkOyBcIlxcblwiIF0pKVxuICAgICAgICAgICA7IHt8XG4gIFR1cm5pbmcgb24gZGVidWcgbWVzc2FnZXMgd2lsbCBzdWJzdGFudGlhbGx5IHNsb3cgZG93biBtb3N0IHByb2dyYW1zLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCB0aGlzIHdpbGwgY2F1c2UgQXN5bmMgdG8ga2VlcCBpbiB0aGUgZXhlY3V0aW9uIGNvbnRleHQgdGhlXG4gIGhpc3Rvcnkgb2Ygc3RhY2sgYmFja3RyYWNlcyAob2J0YWluZWQgdmlhIFtCYWNrdHJhY2UuZ2V0XSkgdGhhdCBsZWRcbiAgdG8gdGhlIGN1cnJlbnQgam9iLiAgSWYgYW4gQXN5bmMgam9iIGhhcyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLFxuICB0aGlzIGJhY2t0cmFjZSBoaXN0b3J5IHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlIGV4Y2VwdGlvbi4gIEluXG4gIHBhcnRpY3VsYXIgdGhlIGhpc3Rvcnkgd2lsbCBhcHBlYXIgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiB0aGF0XG4gIHJlYWNoZXMgdGhlIG1haW4gbW9uaXRvci4gIFRoaXMgY2FuIGhhdmUgYSBzdWJzdGFudGlhbCBwZXJmb3JtYW5jZVxuICBpbXBhY3QsIGJvdGggaW4gcnVubmluZyB0aW1lIGFuZCBzcGFjZSB1c2FnZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+cmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltZV9ucy5TcGFuLnRdXG4gICAgICAgICAgIFsge3xcbiAgQnkgZGVmYXVsdCwgQXN5bmMgd2lsbCBwcmludCBhIG1lc3NhZ2UgdG8gc3RkZXJyIGV2ZXJ5IHNlY29uZCBpZlxuICB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnRocmVhZF9wb29sX2NwdV9hZmZpbml0eTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5LnRdXG4gICAgICAgICAgIFsge3xcbiAgIFdoZXRoZXIgYW5kIGhvdyB0aHJlYWRzIGluIHRoZSB0aHJlYWQgcG9vbCBzaG91bGQgYmUgYWZmaW5pdGl6ZWQgdG8gQ1BVcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGltaW5nX3doZWVsX2NvbmZpZzpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogVGltaW5nX3doZWVsLkNvbmZpZy50XVxuICAgICAgICAgICBbIHt8XG4gIFRoaXMgaXMgdXNlZCB0byBhZGp1c3QgdGhlIHRpbWUvc3BhY2UgdHJhZGVvZmYgaW4gdGhlIHRpbWluZyB3aGVlbFxuICB1c2VkIHRvIGltcGxlbWVudCBBc3luYydzIGNsb2NrLiAgVGltZSBpcyBzcGxpdCBpbnRvIGludGVydmFscyBvZlxuICBzaXplIFthbGFybV9wcmVjaXNpb25dLCBhbmQgYWxhcm1zIHdpdGggdGltZXMgaW4gdGhlIHNhbWUgaW50ZXJ2YWxcbiAgZmlyZSBpbiB0aGUgc2FtZSBjeWNsZS4gIExldmVsIFtpXSBpbiB0aGUgdGltaW5nIHdoZWVsIGhhcyBhblxuICBhcnJheSBvZiBzaXplIFsyXmJdLCB3aGVyZSBbYl0gaXMgdGhlIFtpXSd0aCBlbnRyeSBpbiBbbGV2ZWxfYml0c10uXG58fVxuICAgICAgICAgICBdKVxuICBpblxuICBjb25jYXRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoTGlzdC5zb3J0IGZpZWxkcyB+Y29tcGFyZTooZnVuIChuYW1lMSwgXywgXykgKG5hbWUyLCBfLCBfKSAtPlxuICAgICAgICAgIFN0cmluZy5jb21wYXJlIG5hbWUxIG5hbWUyKSlcbiAgICAgICB+ZjooZnVuIChuYW1lLCBkZWZhdWx0LCBkZXNjcmlwdGlvbikgLT5cbiAgICAgICAgIGNvbmNhdFxuICAgICAgICAgICAoXCJcXG5cIiA6OiBuYW1lIDo6IFwiIChkZWZhdWx0IFwiIDo6IFNleHAudG9fc3RyaW5nIGRlZmF1bHQgOjogXCIpXCIgOjogZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBoZWxwX21lc3NhZ2UgKCkgPVxuICBjb25jYXRcbiAgICBbIFwiVGhlIFwiXG4gICAgOyBlbnZpcm9ubWVudF92YXJpYWJsZVxuICAgIDsge3wgZW52aXJvbm1lbnQgdmFyaWFibGUgYWZmZWN0cyBBc3luY1xuaW4gdmFyaW91cyB3YXlzLiAgSXRzIHZhbHVlIHNob3VsZCBiZSBhIHNleHAgb2YgdGhlIGZvbGxvd2luZyBmb3JtLFxud2hlcmUgYWxsIGZpZWxkcyBhcmUgb3B0aW9uYWw6XG5cbnx9XG4gICAgOyBTZXhwLnRvX3N0cmluZ19odW0gKHNleHBfb2ZfdCBleGFtcGxlKVxuICAgIDsge3xcblxuSGVyZSBpcyBhbiBleHBsYW5hdGlvbiBvZiBlYWNoIGZpZWxkLlxufH1cbiAgICA7IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKVxuICAgIF1cbjs7XG5cbmxldCB1c2FnZSAoKSA9XG4gIGVwcmludGYgXCIlcyUhXCIgKGhlbHBfbWVzc2FnZSAoKSk7XG4gIGV4aXQgMVxuOztcblxubGV0IHQgPVxuICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBJbnJpYV9zeXMuZ2V0ZW52IGVudmlyb25tZW50X3ZhcmlhYmxlKSB3aXRoXG4gIHwgTm9uZSAtPiBlbXB0eVxuICB8IFNvbWUgXCJcIiAtPiB1c2FnZSAoKVxuICB8IFNvbWUgc3RyaW5nIC0+XG4gICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgc3RyaW5nKSkgd2l0aFxuICAgICB8IE9rIHQgLT4gdFxuICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgIGVwcmludGZcbiAgICAgICAgIFwiJXNcXG5cXG5cIlxuICAgICAgICAgKFNleHAudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgKEVycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgKEVycm9yLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgIFwiaW52YWxpZCB2YWx1ZSBmb3IgJXMgZW52aXJvbm1lbnQgdmFyaWFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnRfdmFyaWFibGUpXG4gICAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICAgIFslc2V4cF9vZjogZXhuXSkpKTtcbiAgICAgICB1c2FnZSAoKSlcbjs7XG5cbm1vZHVsZSBQcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBzdHJ1Y3RcbiAgbGV0IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWcgPVxuICAgIG1hdGNoIHQucHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbCAtPiBMaXN0Lm1lbSBsIHRhZyB+ZXF1YWw6RGVidWdfdGFnLmVxdWFsXG4gIDs7XG5cbiAgbGV0IGFsbCA9IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciBBbGxcbiAgbGV0IGRlYnVnIHRhZyA9IGFsbCB8fCBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgdGFnXG4gIGxldCBjbG9jayA9IGRlYnVnIENsb2NrXG4gIGxldCBmZCA9IGRlYnVnIEZkXG4gIGxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBkZWJ1ZyBGaWxlX2Rlc2NyX3dhdGNoZXJcbiAgbGV0IGZpbmFsaXplcnMgPSBkZWJ1ZyBGaW5hbGl6ZXJzXG4gIGxldCBpbnRlcnJ1cHRvciA9IGRlYnVnIEludGVycnVwdG9yXG4gIGxldCBtb25pdG9yID0gZGVidWcgTW9uaXRvclxuICBsZXQgbW9uaXRvcl9zZW5kX2V4biA9IGRlYnVnIE1vbml0b3Jfc2VuZF9leG5cbiAgbGV0IHBhcmFsbGVsID0gZGVidWcgUGFyYWxsZWxcbiAgbGV0IHJlYWRlciA9IGRlYnVnIFJlYWRlclxuICBsZXQgc2NoZWR1bGVyID0gZGVidWcgU2NoZWR1bGVyXG4gIGxldCBzaHV0ZG93biA9IGRlYnVnIFNodXRkb3duXG4gIGxldCB0aHJlYWRfcG9vbCA9IGRlYnVnIFRocmVhZF9wb29sXG4gIGxldCB0aHJlYWRfc2FmZSA9IGRlYnVnIFRocmVhZF9zYWZlXG4gIGxldCB3cml0ZXIgPSBkZWJ1ZyBXcml0ZXJcbmVuZFxuXG5sZXQgKCAhISApIGZpZWxkID1cbiAgT3B0aW9uLnZhbHVlIChGaWVsZC5nZXQgZmllbGQgdCkgfmRlZmF1bHQ6KE9wdGlvbi52YWx1ZV9leG4gKEZpZWxkLmdldCBmaWVsZCBkZWZhdWx0KSlcbjs7XG5cbmxldCBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSAhIUZpZWxkcy5hYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCBjaGVja19pbnZhcmlhbnRzID0gISFGaWVsZHMuY2hlY2tfaW52YXJpYW50c1xubGV0IGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZCA9ICEhRmllbGRzLmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxubGV0IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSAhIUZpZWxkcy5lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG5sZXQgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gISFGaWVsZHMudGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG5sZXQgZmlsZV9kZXNjcl93YXRjaGVyID0gISFGaWVsZHMuZmlsZV9kZXNjcl93YXRjaGVyXG5sZXQgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSAhIUZpZWxkcy5tYXhfaW50ZXJfY3ljbGVfdGltZW91dFxubGV0IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9ICEhRmllbGRzLm1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xubGV0IG1heF9udW1fdGhyZWFkcyA9ICEhRmllbGRzLm1heF9udW1fdGhyZWFkc1xubGV0IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gISFGaWVsZHMubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbmxldCBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgcmVjb3JkX2JhY2t0cmFjZXMgPSAhIUZpZWxkcy5yZWNvcmRfYmFja3RyYWNlc1xubGV0IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSAhIUZpZWxkcy5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG5sZXQgdGltaW5nX3doZWVsX2NvbmZpZyA9ICEhRmllbGRzLnRpbWluZ193aGVlbF9jb25maWdcbmxldCBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gISFGaWVsZHMuZHVtcF9jb3JlX29uX2pvYl9kZWxheVxuXG5sZXQgdCA9XG4gIHsgYWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyBjaGVja19pbnZhcmlhbnRzID0gU29tZSBjaGVja19pbnZhcmlhbnRzXG4gIDsgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gU29tZSBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5ID0gU29tZSBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID0gU29tZSB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gU29tZSBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBmaWxlX2Rlc2NyX3dhdGNoZXJcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBTb21lIG1heF9udW1fb3Blbl9maWxlX2Rlc2Nyc1xuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSBTb21lIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDsgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yID0gdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3JcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IFNvbWUgcmVjb3JkX2JhY2t0cmFjZXNcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gU29tZSByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gIDsgdGltaW5nX3doZWVsX2NvbmZpZyA9IFNvbWUgdGltaW5nX3doZWVsX2NvbmZpZ1xuICB9XG47O1xuXG5sZXQgdGFza19pZCA9IHJlZiAoZnVuICgpIC0+IFNleHAuQXRvbSBcIjxubyB0YXNrIGlkPlwiKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4oKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICBbcGh5c19zYW1lXSBhcyB0aGlzIG9uZS5cblxuICAgdGhpcyBjb2RlIGlzIGR1cGxpY2F0ZWQgaW4gT3B0aW9uX2FycmF5LkNoZWFwX29wdGlvbiwgYW5kIGlmIHdlIGZpbmQgeWV0IGFub3RoZXJcbiAgIHBsYWNlIHdoZXJlIHdlIHdhbnQgaXQgd2Ugc2hvdWxkIHJlY29uc2lkZXIgbWFraW5nIGl0IHNoYXJlZC4gKilcbmxldCBub25lID0gT2JqLm9iaiAoT2JqLm5ld19ibG9jayBPYmouYWJzdHJhY3RfdGFnIDEpXG5sZXQgY3JlYXRlICgpID0gcmVmIG5vbmVcbmxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsICF4IG5vbmVcbmxldCBpc19zb21lIHggPSBub3QgKGlzX25vbmUgeClcbmxldCBnZXRfc29tZV9leG4geCA9IGlmIGlzX25vbmUgeCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTW9wdGlvbi5nZXRfc29tZV9leG5cIl0gZWxzZSAheFxubGV0IGdldCB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgIXRcbmxldCB1bnNhZmVfZ2V0IHQgPSAhdFxubGV0IHNldF9zb21lIHQgdiA9IHQgOj0gdlxubGV0IHNldF9ub25lIHQgPSB0IDo9IG5vbmVcblxubGV0IHNldCB0IHYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBOb25lIC0+IHNldF9ub25lIHRcbiAgfCBTb21lIHYgLT4gc2V0X3NvbWUgdCB2XG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgb3B0aW9uKV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBPcHRpb24uaXRlciAoZ2V0IHQpIH5mOmludmFyaWFudF9hKVxuOztcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG4gICAgbGV0IHVuc2FmZV92YWx1ZSA9IHVuc2FmZV9nZXRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxubW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuKCogVGhpcyBwb29sIGhvbGRzIG5vZGVzIHRoYXQgd291bGQgYmUgcmVwcmVzZW50ZWQgbW9yZSB0cmFkaXRpb25hbGx5IGFzOlxuXG4gICB7W1xuICAgICB0eXBlICdhIHQgPVxuICAgICAgIHwgRW1wdHlcbiAgICAgICB8IEhlYXAgb2YgJ2EgKiAnYSB0IGxpc3QgXX1cblxuICAgV2Ugd2lsbCByZXByZXNlbnQgdGhlbSBhcyBhIGxlZnQtY2hpbGQsIHJpZ2h0LXNpYmxpbmcgdHJlZSBpbiBhIHRyaXBsZXRcbiAgICh2YWx1ZSAqIGxlZnRfY2hpbGQgKiByaWdodF9zaWJsaW5nKS4gIFRoZSBsZWZ0IGNoaWxkIGFuZCBhbGwgcmlnaHQgc2libGluZ3NcbiAgIG9mIHRoZSBsZWZ0IGNoaWxkIGZvcm0gYSBsaW5rZWQgbGlzdCByZXByZXNlbnRpbmcgdGhlIHN1YmhlYXBzIG9mIGEgZ2l2ZW4gaGVhcDpcblxuICAge3ZcbiAgICAgICAgIEFcbiAgICAgICAgL1xuICAgICAgIEIgLT4gQyAtPiBEIC0+IEUgLT4gRlxuICAgICAgLyAgICAgICAgIC8gICAgICAgICAvXG4gICAgIEcgICAgICAgICBILT5JLT5KICAgSy0+TFxuICAgdn0gKilcblxubW9kdWxlIE5vZGUgOiBzaWdcbiAgKCogRXhwb3NpbmcgW3ByaXZhdGUgaW50XSBpcyBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBiZWNhdXNlIGl0IGFsbG93c1xuICAgICB0aGUgY29tcGlsZXIgdG8gc2tpcCB0aGUgd3JpdGUgYmFycmllci4gKilcblxuICB0eXBlICdhIHQgPSBwcml2YXRlIGludFxuXG4gIG1vZHVsZSBJZCA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgZW5kXG5cbiAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICB0eXBlICdhIG5vZGUgPSAnYSB0XG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY3JlYXRlIDogbWluX3NpemU6aW50IC0+ICdhIHRcbiAgICB2YWwgaXNfZnVsbCA6ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBncm93IDogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIG5vZGUgLT4gJ2Egbm9kZSAqICdhIHRcbiAgZW5kXG5cbiAgKCoqIFthbGxvY2F0ZSB2IH5wb29sXSBhbGxvY2F0ZXMgYSBuZXcgbm9kZSBmcm9tIHRoZSBwb29sIHdpdGggbm8gY2hpbGQgb3Igc2libGluZyAqKVxuICB2YWwgYWxsb2NhdGUgOiAnYSAtPiBwb29sOidhIFBvb2wudCAtPiBpZDpJZC50IC0+ICdhIHRcblxuICAoKiogW2ZyZWUgdCB+cG9vbF0gZnJlZXMgW3RdIGZvciByZXVzZS4gIEl0IGlzIGFuIGVycm9yIHRvIGFjY2VzcyBbdF0gYWZ0ZXIgdGhpcy4gKilcbiAgdmFsIGZyZWUgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcblxuICAoKiogYSBzcGVjaWFsIFt0XSB0aGF0IHJlcHJlc2VudHMgdGhlIGVtcHR5IG5vZGUgKilcbiAgdmFsIGVtcHR5IDogdW5pdCAtPiAnYSB0XG5cbiAgdmFsIGlzX2VtcHR5IDogJ2EgdCAtPiBib29sXG4gIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgKCoqIFt2YWx1ZV9leG4gdCB+cG9vbF0gcmV0dXJuIHRoZSB2YWx1ZSBvZiBbdF0sIHJhaXNlIGlmIFtpc19lbXB0eSB0XSAqKVxuICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYVxuXG4gIHZhbCBpZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gSWQudFxuICB2YWwgY2hpbGQgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcbiAgdmFsIHNpYmxpbmcgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW3ByZXYgdF0gaXMgZWl0aGVyIHRoZSBwYXJlbnQgb2YgW3RdIG9yIHRoZSBzaWJsaW5nIGltbWVkaWF0ZWx5IGxlZnQgb2YgW3RdICopXG4gIHZhbCBwcmV2IDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFthZGRfY2hpbGQgdCB+Y2hpbGQgfnBvb2xdIEFkZCBhIGNoaWxkIHRvIFt0XSwgcHJlc2VydmluZyBleGlzdGluZyBjaGlsZHJlbiBhc1xuICAgICAgc2libGluZ3Mgb2YgW2NoaWxkXS4gW3RdIGFuZCBbY2hpbGRdIHNob3VsZCBub3QgYmUgZW1wdHkgYW5kIFtjaGlsZF0gc2hvdWxkIGhhdmUgbm9cbiAgICAgIHNpYmxpbmcgYW5kIGhhdmUgbm8gcHJldiBub2RlLiAqKVxuICB2YWwgYWRkX2NoaWxkIDogJ2EgdCAtPiBjaGlsZDonYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+IHVuaXRcblxuICAoKiogZGlzY29ubmVjdCBhbmQgcmV0dXJuIHRoZSBzaWJsaW5nICopXG4gIHZhbCBkaXNjb25uZWN0X3NpYmxpbmcgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogZGlzY29ubmVjdCBhbmQgcmV0dXJuIHRoZSBjaGlsZCAqKVxuICB2YWwgZGlzY29ubmVjdF9jaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbZGV0YWNoIHQgfnBvb2xdIHJlbW92ZXMgW3RdIGZyb20gdGhlIHRyZWUsIGFkanVzdGluZyBwb2ludGVycyBhcm91bmQgaXQuIEFmdGVyXG4gICAgICBbZGV0YWNoXSwgW3RdIGlzIHRoZSByb290IG9mIGEgc3RhbmRhbG9uZSBoZWFwLCB3aGljaCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBvcmlnaW5hbFxuICAgICAgaGVhcC4gKilcbiAgdmFsIGRldGFjaCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBJZCA9IEludFxuXG4gIGxldCBkdW1teV9pZCA6IElkLnQgPSAtMVxuXG4gIHR5cGUgJ2Egbm9kZSA9XG4gICAgKCdhLCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsICdhIG5vZGUgUG9pbnRlci50LCBJZC50KSBQb29sLlNsb3RzLnQ1XG5cbiAgdHlwZSAnYSB0ID0gJ2Egbm9kZSBQb2ludGVyLnRcblxuICBsZXQgZW1wdHkgPSBQb2ludGVyLm51bGxcbiAgbGV0IGlzX2VtcHR5ID0gUG9pbnRlci5pc19udWxsXG4gIGxldCBlcXVhbCA9IFBvaW50ZXIucGh5c19lcXVhbFxuICBsZXQgdmFsdWUgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDBcbiAgbGV0IGNoaWxkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQxXG4gIGxldCBzaWJsaW5nIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQyXG4gIGxldCBwcmV2IHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQzXG4gIGxldCBpZCB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50NFxuXG4gICgqIGxldCBzZXRfdmFsdWUgICB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQwIHYgKilcbiAgbGV0IHNldF9jaGlsZCB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQxIHZcbiAgbGV0IHNldF9zaWJsaW5nIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDIgdlxuICBsZXQgc2V0X3ByZXYgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MyB2XG5cbiAgbGV0IHZhbHVlX2V4biB0IH5wb29sID1cbiAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICAgIHZhbHVlIHQgfnBvb2xcbiAgOztcblxuICBsZXQgYWxsb2NhdGUgdmFsdWUgfnBvb2wgfmlkID0gUG9vbC5uZXc1IHBvb2wgdmFsdWUgKGVtcHR5ICgpKSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgaWRcbiAgbGV0IGZyZWUgdCB+cG9vbCA9IFBvb2wudW5zYWZlX2ZyZWUgcG9vbCB0XG5cbiAgbGV0IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sID1cbiAgICBsZXQgc2libGluZyA9IHNpYmxpbmcgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgc2libGluZylcbiAgICB0aGVuIChcbiAgICAgIHNldF9zaWJsaW5nIHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgIHNldF9wcmV2IHNpYmxpbmcgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgc2libGluZ1xuICA7O1xuXG4gIGxldCBkaXNjb25uZWN0X2NoaWxkIHQgfnBvb2wgPVxuICAgIGxldCBjaGlsZCA9IGNoaWxkIHQgfnBvb2wgaW5cbiAgICBpZiBub3QgKGlzX2VtcHR5IGNoaWxkKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X2NoaWxkIHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgIHNldF9wcmV2IGNoaWxkIChlbXB0eSAoKSkgfnBvb2wpO1xuICAgIGNoaWxkXG4gIDs7XG5cbiAgbGV0IGFkZF9jaGlsZCB0IH5jaGlsZDpuZXdfY2hpbGQgfnBvb2wgPVxuICAgICgqIGFzc2VydGlvbnMgd2Ugd291bGQgbWFrZSwgYnV0IGZvciBzcGVlZDpcbiAgICAgICBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSBuZXdfY2hpbGQpKTtcbiAgICAgICBhc3NlcnQgKGlzX2VtcHR5IChzaWJsaW5nIG5ld19jaGlsZCB+cG9vbCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHByZXYgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgKilcbiAgICBsZXQgY3VycmVudF9jaGlsZCA9IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCBpblxuICAgICgqIGFkZCBbbmV3X2NoaWxkXSB0byB0aGUgbGlzdCBvZiBbdF0ncyBjaGlsZHJlbiAod2hpY2ggbWF5IGJlIGVtcHR5KSAqKVxuICAgIHNldF9zaWJsaW5nIG5ld19jaGlsZCBjdXJyZW50X2NoaWxkIH5wb29sO1xuICAgIGlmIG5vdCAoaXNfZW1wdHkgY3VycmVudF9jaGlsZCkgdGhlbiBzZXRfcHJldiBjdXJyZW50X2NoaWxkIG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfY2hpbGQgdCBuZXdfY2hpbGQgfnBvb2w7XG4gICAgc2V0X3ByZXYgbmV3X2NoaWxkIHQgfnBvb2xcbiAgOztcblxuICBsZXQgZGV0YWNoIHQgfnBvb2wgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcmV2ID0gcHJldiB0IH5wb29sIGluXG4gICAgICBpZiBub3QgKGlzX2VtcHR5IHByZXYpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHJlbGF0aW9uX3RvX3ByZXYgPSBpZiBlcXVhbCB0IChjaGlsZCBwcmV2IH5wb29sKSB0aGVuIGBjaGlsZCBlbHNlIGBzaWJsaW5nIGluXG4gICAgICAgIHNldF9wcmV2IHQgKGVtcHR5ICgpKSB+cG9vbDtcbiAgICAgICAgbGV0IHNpYmxpbmcgPSBkaXNjb25uZWN0X3NpYmxpbmcgdCB+cG9vbCBpblxuICAgICAgICAobWF0Y2ggcmVsYXRpb25fdG9fcHJldiB3aXRoXG4gICAgICAgICB8IGBjaGlsZCAtPiBzZXRfY2hpbGQgcHJldiBzaWJsaW5nIH5wb29sXG4gICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIHByZXYgc2libGluZyB+cG9vbCk7XG4gICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgc2libGluZykgdGhlbiBzZXRfcHJldiBzaWJsaW5nIHByZXYgfnBvb2wpKVxuICA7O1xuXG4gIG1vZHVsZSBQb29sID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egbm9kZSBQb29sLnRcbiAgICB0eXBlIG5vbnJlYyAnYSBub2RlID0gJ2Egbm9kZSBQb2ludGVyLnRcblxuICAgIGxldCBjcmVhdGUgKHR5cGUgYSkgfm1pbl9zaXplOmNhcGFjaXR5IDogYSB0ID1cbiAgICAgIFBvb2wuY3JlYXRlXG4gICAgICAgIFBvb2wuU2xvdHMudDVcbiAgICAgICAgfmNhcGFjaXR5XG4gICAgICAgIH5kdW1teTpcbiAgICAgICAgICAoIChPYmoubWFnaWMgTm9uZSA6IGEpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBkdW1teV9pZCApXG4gICAgOztcblxuICAgIGxldCBpc19mdWxsIHQgPSBQb29sLmlzX2Z1bGwgdFxuICAgIGxldCBsZW5ndGggdCA9IFBvb2wubGVuZ3RoIHRcbiAgICBsZXQgZ3JvdyB0ID0gUG9vbC5ncm93IHRcblxuICAgIGxldCBjb3B5IHQgc3RhcnQgPVxuICAgICAgbGV0IHQnID0gY3JlYXRlIH5taW5fc2l6ZTooUG9vbC5jYXBhY2l0eSB0KSBpblxuICAgICAgbGV0IGNvcHlfbm9kZSBub2RlIHRvX3Zpc2l0ID1cbiAgICAgICAgaWYgaXNfZW1wdHkgbm9kZVxuICAgICAgICB0aGVuIGVtcHR5ICgpLCB0b192aXNpdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiB3ZSB1c2UgdGhlIHNhbWUgaWQsIGJ1dCB0aGF0J3Mgb2sgc2luY2UgaWRzIHNob3VsZCBiZSB1bmlxdWUgcGVyIGhlYXAgKilcbiAgICAgICAgICBsZXQgbmV3X25vZGUgPVxuICAgICAgICAgICAgYWxsb2NhdGUgKHZhbHVlX2V4biBub2RlIH5wb29sOnQpIH5wb29sOnQnIH5pZDooaWQgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRvX3Zpc2l0ID1cbiAgICAgICAgICAgIChuZXdfbm9kZSwgYGNoaWxkLCBjaGlsZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgICA6OiAobmV3X25vZGUsIGBzaWJsaW5nLCBzaWJsaW5nIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IHRvX3Zpc2l0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBuZXdfbm9kZSwgdG9fdmlzaXQpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICAgICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgKG5vZGVfdG9fdXBkYXRlLCBzbG90LCBub2RlX3RvX2NvcHkpIDo6IHJlc3QgLT5cbiAgICAgICAgICBsZXQgbmV3X25vZGUsIHRvX3Zpc2l0ID0gY29weV9ub2RlIG5vZGVfdG9fY29weSByZXN0IGluXG4gICAgICAgICAgKG1hdGNoIHNsb3Qgd2l0aFxuICAgICAgICAgICB8IGBjaGlsZCAtPiBzZXRfY2hpbGQgbm9kZV90b191cGRhdGUgbmV3X25vZGUgfnBvb2w6dCdcbiAgICAgICAgICAgfCBgc2libGluZyAtPiBzZXRfc2libGluZyBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0Jyk7XG4gICAgICAgICAgaWYgbm90IChpc19lbXB0eSBuZXdfbm9kZSkgdGhlbiBzZXRfcHJldiBuZXdfbm9kZSBub2RlX3RvX3VwZGF0ZSB+cG9vbDp0JztcbiAgICAgICAgICBsb29wIHRvX3Zpc2l0XG4gICAgICBpblxuICAgICAgbGV0IG5ld19zdGFydCwgdG9fdmlzaXQgPSBjb3B5X25vZGUgc3RhcnQgW10gaW5cbiAgICAgIGxvb3AgdG9fdmlzaXQ7XG4gICAgICBuZXdfc3RhcnQsIHQnXG4gICAgOztcbiAgZW5kXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyAoKiBjbXAgaXMgcGxhY2VkIGZpcnN0IHRvIHNob3J0LWNpcmN1aXQgcG9seW1vcnBoaWMgY29tcGFyZSAqKVxuICAgIGNtcCA6ICdhIC0+ICdhIC0+IGludFxuICA7IG11dGFibGUgcG9vbCA6ICdhIE5vZGUuUG9vbC50XG4gIDsgKCogaW52YXJpYW50OiAgW3Jvb3RdIG5ldmVyIGhhcyBhIHNpYmxpbmcgKilcbiAgICBtdXRhYmxlIHJvb3QgOiAnYSBOb2RlLnRcbiAgOyBtdXRhYmxlIG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgOiBpbnRcbiAgfVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IChub2RlLCBleHBlY3RlZF9wcmV2LCBtYXliZV9wYXJlbnRfdmFsdWUpIDo6IHJlc3QgLT5cbiAgICAgIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBub2RlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCB0aGlzX3ZhbHVlID0gTm9kZS52YWx1ZV9leG4gbm9kZSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgYXNzZXJ0IChOb2RlLmVxdWFsIChOb2RlLnByZXYgbm9kZSB+cG9vbDp0LnBvb2wpIGV4cGVjdGVkX3ByZXYpO1xuICAgICAgICBPcHRpb24uaXRlciBtYXliZV9wYXJlbnRfdmFsdWUgfmY6KGZ1biBwYXJlbnRfdmFsdWUgLT5cbiAgICAgICAgICBhc3NlcnQgKHQuY21wIHBhcmVudF92YWx1ZSB0aGlzX3ZhbHVlIDw9IDApKTtcbiAgICAgICAgbG9vcFxuICAgICAgICAgICgoTm9kZS5jaGlsZCBub2RlIH5wb29sOnQucG9vbCwgbm9kZSwgU29tZSB0aGlzX3ZhbHVlKVxuICAgICAgICAgICA6OiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBtYXliZV9wYXJlbnRfdmFsdWUpXG4gICAgICAgICAgIDo6IHJlc3QpKVxuICAgICAgZWxzZSBsb29wIHJlc3RcbiAgaW5cbiAgYXNzZXJ0IChOb2RlLmlzX2VtcHR5IHQucm9vdCB8fCBOb2RlLmlzX2VtcHR5IChOb2RlLnNpYmxpbmcgdC5yb290IH5wb29sOnQucG9vbCkpO1xuICBsb29wIFsgdC5yb290LCBOb2RlLmVtcHR5ICgpLCBOb25lIF1cbjs7XG5cbmxldCBjcmVhdGUgPyhtaW5fc2l6ZSA9IDEpIH5jbXAgKCkgPVxuICB7IGNtcFxuICA7IHBvb2wgPSBOb2RlLlBvb2wuY3JlYXRlIH5taW5fc2l6ZVxuICA7IHJvb3QgPSBOb2RlLmVtcHR5ICgpXG4gIDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA9IDBcbiAgfVxuOztcblxubGV0IGNvcHkgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfSA9XG4gIGxldCByb290LCBwb29sID0gTm9kZS5Qb29sLmNvcHkgcG9vbCByb290IGluXG4gIHsgY21wOyBwb29sOyByb290OyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzIH1cbjs7XG5cbmxldCBhbGxvY2F0ZSB0IHYgPVxuICBpZiBOb2RlLlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gTm9kZS5Qb29sLmdyb3cgdC5wb29sO1xuICB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgPC0gdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzICsgMTtcbiAgTm9kZS5hbGxvY2F0ZSB2IH5wb29sOnQucG9vbCB+aWQ6KE5vZGUuSWQub2ZfaW50IHQubnVtX29mX2FsbG9jYXRlZF9ub2Rlcylcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggcm9vdDEsIHJvb3QyIHdpdGhcbiAgICAgfCBOb25lLCBoIHwgaCwgTm9uZSAtPiBoXG4gICAgIHwgU29tZSAoTm9kZSAodjEsIGNoaWxkcmVuMSkpLCBTb21lIChOb2RlICh2MiwgY2hpbGRyZW4yKSkgLT5cbiAgICAgICBpZiB2MSA8IHYyXG4gICAgICAgdGhlbiBTb21lIChOb2RlICh2MSwgcm9vdDIgOjogY2hpbGRyZW4xKSlcbiAgICAgICBlbHNlIFNvbWUgKE5vZGUgKHYyLCByb290MSA6OiBjaGlsZHJlbjIpKVxuICAgXX1cblxuICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIG5laXRoZXIgcm9vdCBoYXMgYSBwcmV2IG5vZGUgKHVzdWFsbHkgYmVjYXVzZSB0aGUgaW5wdXRzIGNvbWVcbiAgIGZyb20gW2Rpc2Nvbm5lY3RfKl0gb3IgYXJlIHRoZSB0b3Agb2YgdGhlIGhlYXAgb3IgYXJlIHRoZSBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbikuICopXG5sZXQgbWVyZ2UgdCByb290MSByb290MiA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgcm9vdDFcbiAgdGhlbiByb290MlxuICBlbHNlIGlmIE5vZGUuaXNfZW1wdHkgcm9vdDJcbiAgdGhlbiByb290MVxuICBlbHNlIChcbiAgICBsZXQgYWRkX2NoaWxkIHQgbm9kZSB+Y2hpbGQgPVxuICAgICAgTm9kZS5hZGRfY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgfmNoaWxkO1xuICAgICAgbm9kZVxuICAgIGluXG4gICAgbGV0IHYxID0gTm9kZS52YWx1ZV9leG4gcm9vdDEgfnBvb2w6dC5wb29sIGluXG4gICAgbGV0IHYyID0gTm9kZS52YWx1ZV9leG4gcm9vdDIgfnBvb2w6dC5wb29sIGluXG4gICAgaWYgdC5jbXAgdjEgdjIgPCAwXG4gICAgdGhlbiBhZGRfY2hpbGQgdCByb290MSB+Y2hpbGQ6cm9vdDJcbiAgICBlbHNlIGFkZF9jaGlsZCB0IHJvb3QyIH5jaGlsZDpyb290MSlcbjs7XG5cbmxldCB0b3BfZXhuIHQgPVxuICBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdFxuICB0aGVuIGZhaWx3aXRoIFwiSGVhcC50b3BfZXhuIGNhbGxlZCBvbiBhbiBlbXB0eSBoZWFwXCJcbiAgZWxzZSBOb2RlLnZhbHVlX2V4biB0LnJvb3QgfnBvb2w6dC5wb29sXG47O1xuXG5sZXQgdG9wIHQgPSBpZiBOb2RlLmlzX2VtcHR5IHQucm9vdCB0aGVuIE5vbmUgZWxzZSBTb21lICh0b3BfZXhuIHQpXG5cbmxldCBhZGRfbm9kZSB0IHYgPVxuICBsZXQgbm9kZSA9IGFsbG9jYXRlIHQgdiBpblxuICB0LnJvb3QgPC0gbWVyZ2UgdCB0LnJvb3Qgbm9kZTtcbiAgbm9kZVxuOztcblxubGV0IGFkZCB0IHYgPSBpZ25vcmUgKGFkZF9ub2RlIHQgdiA6IF8gTm9kZS50KVxuXG4oKiBbbWVyZ2VfcGFpcnNdIHRha2VzIGEgbGlzdCBvZiBoZWFwIHJvb3RzIGFuZCBtZXJnZXMgY29uc2VjdXRpdmUgcGFpcnMsIHJlZHVjaW5nIHRoZVxuICAgbGlzdCBvZiBsZW5ndGggbiB0byBuLzIuICBUaGVuIGl0IG1lcmdlcyB0aGUgbWVyZ2VkIHBhaXJzIGludG8gYSBzaW5nbGUgaGVhcC4gIE9uZVxuICAgaW50dWl0aW9uIGlzIHRoYXQgdGhpcyBpcyBzb21ld2hhdCBsaWtlIGJ1aWxkaW5nIGEgc2luZ2xlIGxldmVsIG9mIGEgYmluYXJ5IHRyZWUuXG5cbiAgIFRoZSBvdXRwdXQgaGVhcCBkb2VzIG5vdCBjb250YWluIHRoZSB2YWx1ZSB0aGF0IHdhcyBhdCB0aGUgcm9vdCBvZiB0aGUgaW5wdXQgaGVhcC5cblxuICAgV2UgYnJlYWsgdGhlIGZ1bmN0aW9uIGludG8gdHdvIHBhcnRzLiAgQSBmaXJzdCBzdGFnZSB0aGF0IGlzIHdpbGxpbmcgdG8gdXNlIGxpbWl0ZWRcbiAgIHN0YWNrIGluc3RlYWQgb2YgaGVhcCBhbGxvY2F0aW9uIGZvciBib29ra2VlcGluZywgYW5kIGEgc2Vjb25kIHN0YWdlIHRoYXQgc2hpZnRzIHRvXG4gICB1c2luZyBhIGxpc3QgYXMgYW4gYWNjdW11bGF0b3IgaWYgd2UgZ28gdG9vIGRlZXAuXG5cbiAgIFRoaXMgY2FuIGJlIG1hZGUgdGFpbCByZWN1cnNpdmUgYW5kIG5vbi1hbGxvY2F0aW5nIGJ5IHN0YXJ0aW5nIHdpdGggYW4gZW1wdHkgaGVhcCBhbmRcbiAgIG1lcmdpbmcgbWVyZ2VkIHBhaXJzIGludG8gaXQuIFVuZm9ydHVuYXRlbHkgdGhpcyBcImxlZnQgZm9sZFwiIHZlcnNpb24gaXMgbm90IHdoYXQgaXNcbiAgIGRlc2NyaWJlZCBpbiB0aGUgb3JpZ2luYWwgcGFwZXIgYnkgRnJlZG1hbiBldCBhbC47IHRoZXkgc3BlY2lmaWNhbGx5IHNheSB0aGF0XG4gICBjaGlsZHJlbiBzaG91bGQgYmUgbWVyZ2VkIHRvZ2V0aGVyIGZyb20gdGhlIGVuZCBvZiB0aGUgbGlzdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgbGlzdC4gKFttZXJnZV0gaXMgbm90IGFzc29jaWF0aXZlLCBzbyBvcmRlciBtYXR0ZXJzLilcbiopXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgfCBbaGVhZF0gLT4gaGVhZCA6OiBhY2NcbiAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT4gbG9vcCAobWVyZ2UgaGVhZCBuZXh0MSA6OiBhY2MpIG5leHQyXG4gICAgIGluXG4gICAgIG1hdGNoIGxvb3AgW10gY2hpbGRyZW4gd2l0aFxuICAgICB8IFtdIC0+IE5vbmVcbiAgICAgfCBbaF0gLT4gU29tZSBoXG4gICAgIHwgeCA6OiB4cyAtPiBTb21lIChMaXN0LmZvbGQgeHMgfmluaXQ6eCB+ZjptZXJnZSlcbiAgIF19XG4qKVxubGV0IGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBoZWFkID1cbiAgbGV0IHJlYyBsb29wIGFjYyBoZWFkID1cbiAgICBpZiBOb2RlLmlzX2VtcHR5IGhlYWRcbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHQxID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgaGVhZCB+cG9vbDp0LnBvb2wgaW5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbmV4dDFcbiAgICAgIHRoZW4gaGVhZCA6OiBhY2NcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV4dDIgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBuZXh0MSB+cG9vbDp0LnBvb2wgaW5cbiAgICAgICAgbG9vcCAobWVyZ2UgdCBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDIpKVxuICBpblxuICBtYXRjaCBsb29wIFtdIGhlYWQgd2l0aFxuICB8IFtdIC0+IE5vZGUuZW1wdHkgKClcbiAgfCBbIGggXSAtPiBoXG4gIHwgeCA6OiB4cyAtPiBMaXN0LmZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIGFjYyBoZWFwIC0+IG1lcmdlIHQgYWNjIGhlYXApXG47O1xuXG4oKiB0cmFuc2xhdGlvbjpcbiAgIHtbXG4gICAgIG1hdGNoIHQucm9vdCB3aXRoXG4gICAgIHwgTm9kZSAoXywgY2hpbGRyZW4pIC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGRlcHRoIGNoaWxkcmVuID1cbiAgICAgICAgIGlmIGRlcHRoID49IG1heF9zdGFja19kZXB0aFxuICAgICAgICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgY2hpbGRlblxuICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICB8IFtoZWFkXSAtPiBTb21lIGhlYWRcbiAgICAgICAgICAgfCBoZWFkIDo6IG5leHQxIDo6IG5leHQyIC0+XG4gICAgICAgICAgICAgbWVyZ2UgKG1lcmdlIGhlYWQgbmV4dDEpIChsb29wIChkZXB0aCArIDEpIG5leHQyKVxuICAgICAgICAgZW5kXG4gICAgICAgaW5cbiAgICAgICBsb29wIDAgY2hpbGRyZW5cbiAgIF19XG4qKVxubGV0IG1lcmdlX3BhaXJzID1cbiAgbGV0IG1heF9zdGFja19kZXB0aCA9IDFfMDAwIGluXG4gIGxldCByZWMgbG9vcCB0IGRlcHRoIGhlYWQgPVxuICAgIGlmIGRlcHRoID49IG1heF9zdGFja19kZXB0aFxuICAgIHRoZW4gYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWRcbiAgICBlbHNlIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gaGVhZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHQxID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgaGVhZCB+cG9vbDp0LnBvb2wgaW5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbmV4dDFcbiAgICAgIHRoZW4gaGVhZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICAoKiBtZXJnZSB0aGUgZmlyc3QgdHdvIG5vZGVzIGluIG91ciBsaXN0LCBhbmQgdGhlbiBtZXJnZSB0aGUgcmVzdWx0IHdpdGggdGhlXG4gICAgICAgICAgIHJlc3VsdCBvZiByZWN1cnNpdmVseSBjYWxsaW5nIG1lcmdlX3BhaXJzIG9uIHRoZSB0YWlsICopXG4gICAgICAgIG1lcmdlIHQgKG1lcmdlIHQgaGVhZCBuZXh0MSkgKGxvb3AgdCAoZGVwdGggKyAxKSBuZXh0MikpKVxuICBpblxuICBmdW4gdCBoZWFkIC0+IGxvb3AgdCAwIGhlYWRcbjs7XG5cbmxldCByZW1vdmVfbm9uX2VtcHR5IHQgbm9kZSA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIE5vZGUuZGV0YWNoIG5vZGUgfnBvb2w7XG4gIGxldCBtZXJnZWRfY2hpbGRyZW4gPSBtZXJnZV9wYWlycyB0IChOb2RlLmRpc2Nvbm5lY3RfY2hpbGQgbm9kZSB+cG9vbCkgaW5cbiAgbGV0IG5ld19yb290ID1cbiAgICBpZiBOb2RlLmVxdWFsIHQucm9vdCBub2RlIHRoZW4gbWVyZ2VkX2NoaWxkcmVuIGVsc2UgbWVyZ2UgdCB0LnJvb3QgbWVyZ2VkX2NoaWxkcmVuXG4gIGluXG4gIE5vZGUuZnJlZSBub2RlIH5wb29sO1xuICB0LnJvb3QgPC0gbmV3X3Jvb3Rcbjs7XG5cbmxldCByZW1vdmVfdG9wIHQgPSBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KSB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0LnJvb3RcblxuKCogTm90ZSB0aGF0IHRoaXMgaXMgdGFpbC1yZWN1cnNpdmUgYW5kIHRoYXQgZWFjaCBub2RlIGlzIHZpc2l0ZWQgYXQgbW9zdCAzIHRpbWVzIChvbmNlXG4gICBmb3IgZWFjaCBicmFuY2ggb2YgdGhlIFwiaWZcIiksIHNvIGl0IHRha2VzIGxpbmVhciB0aW1lIGFuZCBjb25zdGFudCBzcGFjZS4gKilcbmxldCByZWMgcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgbm9kZSB+cG9vbCA9XG4gIGxldCBjaGlsZCA9IE5vZGUuY2hpbGQgbm9kZSB+cG9vbCBpblxuICBsZXQgc2libGluZyA9IE5vZGUuc2libGluZyBub2RlIH5wb29sIGluXG4gIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBjaGlsZClcbiAgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBjaGlsZCB+cG9vbFxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSBzaWJsaW5nKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IHNpYmxpbmcgfnBvb2xcbiAgZWxzZSAoXG4gICAgbGV0IHByZXYgPSBOb2RlLnByZXYgbm9kZSB+cG9vbCBpblxuICAgIE5vZGUuZGV0YWNoIG5vZGUgfnBvb2w7XG4gICAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IHByZXYpIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgcHJldiB+cG9vbClcbjs7XG5cbmxldCBjbGVhciB0ID1cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IHQucm9vdClcbiAgdGhlbiAoXG4gICAgcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgdC5yb290IH5wb29sOnQucG9vbDtcbiAgICB0LnJvb3QgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBwb3BfZXhuIHQgPVxuICBsZXQgciA9IHRvcF9leG4gdCBpblxuICByZW1vdmVfdG9wIHQ7XG4gIHJcbjs7XG5cbmxldCBwb3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBvcF9leG4gdClcblxubGV0IHBvcF9pZiB0IGYgPVxuICBtYXRjaCB0b3AgdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB2IC0+XG4gICAgaWYgZiB2XG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfdG9wIHQ7XG4gICAgICBTb21lIHYpXG4gICAgZWxzZSBOb25lXG47O1xuXG4oKiBwYWlyaW5nIGhlYXBzIGFyZSBub3QgYmFsYW5jZWQgdHJlZXMsIGFuZCB0aGVyZWZvcmUgd2UgY2FuJ3QgcmVseSBvbiBhIGJhbGFuY2VcbiAgIHByb3BlcnR5IHRvIHN0b3Agb3Vyc2VsdmVzIGZyb20gb3ZlcmZsb3dpbmcgdGhlIHN0YWNrLiAqKVxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCBhY2MgdG9fdmlzaXQgPVxuICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCBhY2MgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB0b192aXNpdCA9IE5vZGUuc2libGluZyB+cG9vbCBub2RlIDo6IE5vZGUuY2hpbGQgfnBvb2wgbm9kZSA6OiByZXN0IGluXG4gICAgICAgIGxvb3AgKGYgYWNjIChOb2RlLnZhbHVlX2V4biB+cG9vbCBub2RlKSkgdG9fdmlzaXQpXG4gIGluXG4gIGxvb3AgaW5pdCBbIHQucm9vdCBdIFtAbm9udGFpbF1cbjs7XG5cbigqIGFsbW9zdCBpZGVudGljYWwgdG8gZm9sZCwgY29waWVkIGZvciBzcGVlZCBwdXJwb3NlcyAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGYgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpO1xuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIFsgdC5yb290IF0gW0Bub250YWlsXVxuOztcblxubGV0IGxlbmd0aCB0ID0gTm9kZS5Qb29sLmxlbmd0aCB0LnBvb2xcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGlzX2VtcHR5IHQgPSBOb2RlLmlzX2VtcHR5IHQucm9vdFxubGV0IG1lbSA9IEMubWVtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgc3VtID0gQy5zdW1cbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgdG9fbGlzdCA9IEMudG9fbGlzdFxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgb2ZfYXJyYXkgYXJyIH5jbXAgPVxuICBsZXQgdCA9IGNyZWF0ZSB+bWluX3NpemU6KEFycmF5Lmxlbmd0aCBhcnIpIH5jbXAgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGFkZCB0IHYpO1xuICB0XG47O1xuXG5sZXQgb2ZfbGlzdCBsIH5jbXAgPSBvZl9hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSB+Y21wXG5sZXQgc2V4cF9vZl90IGYgdCA9IEFycmF5LnNleHBfb2ZfdCBmICh0b19hcnJheSB0IHw+IEFycmF5LnNvcnRlZF9jb3B5IH5jb21wYXJlOnQuY21wKVxuXG5tb2R1bGUgRWx0ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPVxuICAgIHsgbXV0YWJsZSBub2RlIDogJ2EgTm9kZS50XG4gICAgOyBub2RlX2lkIDogTm9kZS5JZC50XG4gICAgOyBoZWFwIDogJ2EgdFxuICAgIH1cblxuICAoKiBJZiBpZHMgYXJlIGRpZmZlcmVudCwgaXQgbWVhbnMgdGhhdCB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZVxuICAgICBvdGhlciBtZWFucyAoYW5kIHBvc3NpYmx5IHJldXNlZCkuICopXG4gIGxldCBpc19ub2RlX3ZhbGlkIHQgPSBOb2RlLklkLmVxdWFsIChOb2RlLmlkIH5wb29sOnQuaGVhcC5wb29sIHQubm9kZSkgdC5ub2RlX2lkXG5cbiAgbGV0IHZhbHVlIHQgPVxuICAgIGlmIGlzX25vZGVfdmFsaWQgdCB0aGVuIFNvbWUgKE5vZGUudmFsdWVfZXhuIHQubm9kZSB+cG9vbDp0LmhlYXAucG9vbCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHZhbHVlX2V4biB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHRcbiAgICB0aGVuIE5vZGUudmFsdWVfZXhuIHQubm9kZSB+cG9vbDp0LmhlYXAucG9vbFxuICAgIGVsc2UgZmFpbHdpdGggXCJIZWFwLnZhbHVlX2V4bjogbm9kZSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBoZWFwXCJcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh2YWx1ZSB0IDogYSBvcHRpb24pXVxuZW5kXG5cbmxldCByZW1vdmUgdCAodG9rZW4gOiBfIEVsdC50KSA9XG4gIGlmIG5vdCAocGh5c19lcXVhbCB0IHRva2VuLmhlYXApXG4gIHRoZW4gZmFpbHdpdGggXCJjYW5ub3QgcmVtb3ZlIGZyb20gYSBkaWZmZXJlbnQgaGVhcFwiXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHRva2VuLm5vZGUpXG4gIHRoZW4gKFxuICAgIGlmIEVsdC5pc19ub2RlX3ZhbGlkIHRva2VuIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHRva2VuLm5vZGU7XG4gICAgdG9rZW4ubm9kZSA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IGFkZF9yZW1vdmFibGUgdCB2ID1cbiAgbGV0IG5vZGUgPSBhZGRfbm9kZSB0IHYgaW5cbiAgeyBFbHQubm9kZTsgaGVhcCA9IHQ7IG5vZGVfaWQgPSBOb2RlLmlkIH5wb29sOnQucG9vbCBub2RlIH1cbjs7XG5cbmxldCB1cGRhdGUgdCB0b2tlbiB2ID1cbiAgcmVtb3ZlIHQgdG9rZW47XG4gIGFkZF9yZW1vdmFibGUgdCB2XG47O1xuXG5sZXQgZmluZF9lbHQgPVxuICBsZXQgcmVjIGxvb3AgdCBmIG5vZGVzID1cbiAgICBtYXRjaCBub2RlcyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIHQgZiByZXN0XG4gICAgICBlbHNlIGlmIGYgKE5vZGUudmFsdWVfZXhuIG5vZGUgfnBvb2w6dC5wb29sKVxuICAgICAgdGhlbiBTb21lIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgdCBmIChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wgOjogTm9kZS5jaGlsZCBub2RlIH5wb29sOnQucG9vbCA6OiByZXN0KVxuICBpblxuICBmdW4gdCB+ZiAtPiBsb29wIHQgZiBbIHQucm9vdCBdXG47O1xuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIGhlYXAgPSAnYSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgTm9kZS50XG5cbiAgICBsZXQgdmFsdWUgdCBoZWFwID0gTm9kZS52YWx1ZV9leG4gfnBvb2w6aGVhcC5wb29sIHRcbiAgZW5kXG5cbiAgbGV0IGFkZF9yZW1vdmFibGUgPSBhZGRfbm9kZVxuICBsZXQgcmVtb3ZlID0gcmVtb3ZlX25vbl9lbXB0eVxuXG4gIGxldCB1cGRhdGUgdCBlbHQgdiA9XG4gICAgcmVtb3ZlIHQgZWx0O1xuICAgIGFkZF9yZW1vdmFibGUgdCB2XG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICB2YWwgYW1fcnVubmluZ190ZXN0IDogYm9vbFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIGEgPVxuICAgIGlmIE0uYW1fcnVubmluZ190ZXN0IHRoZW4gU2V4cC5BdG9tIFwiPGhpZGRlbl9pbl90ZXN0PlwiIGVsc2Ugc2V4cF9vZl9hIGFcbiAgOztcblxuICBtb2R1bGUgV2l0aF9ub25fcm91bmR0cmlwcGluZ19pbl90ZXN0X29mX3NleHAgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbW9kdWxlIFR1cm5lZF9vZmYgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vZmYgPSBNYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gZmFsc2VcbiAgICAgICAgZW5kKVxuXG4gICAgICB0eXBlIG5vbnJlYyB0ID0gaW50IFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVHVybmVkX29uID0gc3RydWN0XG4gICAgICBtb2R1bGUgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb24gPSBNYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gdHJ1ZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb24udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiVHVybmVkIG9uXCIgPVxuICAgICAgcHJpbnRfcyBbJXNleHAgKDEwMjQgOiBUdXJuZWRfb24udCldO1xuICAgICAgWyVleHBlY3Qge3wgPGhpZGRlbl9pbl90ZXN0PiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiVHVybmVkIG9mZlwiID1cbiAgICAgIHByaW50X3MgKFslc2V4cF9vZjogVHVybmVkX29mZi50XSAxMDI0KTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjQgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcblxuaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG4gIGVuZClcbiIsIm9wZW4gQmFzZVxuXG50eXBlICsnYSB0XG5cbigqIFRoaXMgW09iai5tYWdpY10gaXMgT0sgYmVjYXVzZSB3ZSBuZXZlciBhbGxvdyB1c2VyIGNvZGUgYWNjZXNzIHRvIFtub25lXSAoZXhjZXB0IHZpYVxuICAgW3Vuc2FmZV92YWx1ZV0pLiAgV2UgZGlzYWxsb3cgW18gVW9wdC50IFVvcHQudF0sIHNvIHRoZXJlIGlzIG5vIGNoYW5jZSBvZiBjb25mdXNpbmdcbiAgIFtub25lXSB3aXRoIFtzb21lIG5vbmVdLiAgQW5kIFtmbG9hdCBVb3B0LnQgYXJyYXldIGlzIHNpbWlsYXJseSBkaXNhbGxvd2VkLiAqKVxubGV0IG5vbmUgOiAnYSB0ID0gU3RkbGliLk9iai5tYWdpYyBcIlVvcHQubm9uZVwiXG5cbmxldFtAaW5saW5lXSBzb21lICh4IDogJ2EpID1cbiAgbGV0IHIgOiAnYSB0ID0gU3RkbGliLk9iai5tYWdpYyB4IGluXG4gIGlmIHBoeXNfZXF1YWwgciBub25lIHRoZW4gZmFpbHdpdGggXCJVb3B0LnNvbWUgVW9wdC5ub25lXCI7XG4gIHJcbjs7XG5cbmxldCBzb21lX2xvY2FsID0gU3RkbGliLk9iai5tYWdpYyBzb21lXG5sZXQgc29tZV9sb2NhbCA6ICdhLiAoJ2FbQGxvY2FsXSkgLT4gKCdhIHRbQGxvY2FsXSkgPSBzb21lX2xvY2FsXG5sZXQgdW5zYWZlX3ZhbHVlICh4IDogJ2EgdCkgOiAnYSA9IFN0ZGxpYi5PYmoubWFnaWMgeFxubGV0IHVuc2FmZV92YWx1ZV9sb2NhbCA9IFN0ZGxpYi5PYmoubWFnaWMgdW5zYWZlX3ZhbHVlXG5sZXQgdW5zYWZlX3ZhbHVlX2xvY2FsIDogJ2EuICgnYSB0W0Bsb2NhbF0pIC0+ICgnYVtAbG9jYWxdKSA9IHVuc2FmZV92YWx1ZV9sb2NhbFxubGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG5sZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpZiBpc19zb21lIHQgdGhlbiBpbnZhcmlhbnRfYSAodW5zYWZlX3ZhbHVlIHQpXG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICBpZiBpc19ub25lIHQgdGhlbiBbJXNleHAgTm9uZV0gZWxzZSBbJXNleHAgU29tZSAodW5zYWZlX3ZhbHVlIHQgOiBhKV1cbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9IGlmIGlzX25vbmUgdCB0aGVuIGZhaWx3aXRoIFwiVW9wdC52YWx1ZV9leG5cIiBlbHNlIHVuc2FmZV92YWx1ZSB0XG5sZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAodW5zYWZlX3ZhbHVlIHQpXG5cbmxldCBvZl9vcHRpb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gbm9uZVxuICB8IFNvbWUgYSAtPiBzb21lIGFcbjs7XG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfdmFsdWVcbiAgZW5kXG5lbmRcblxubW9kdWxlIExvY2FsID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bnNhZmVfdmFsdWVfbG9jYWxcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCAoXCJ1c2luZyB0aGUgc2FtZSBzZW50aW5lbCB2YWx1ZVwiIFtAdGFncyBcIm5vLWpzXCJdKSA9XG4gICAgICBtYXRjaCBzb21lIFwiVW9wdC5ub25lXCIgd2l0aFxuICAgICAgfCAoXyA6IHN0cmluZyB0KSAtPiBmYWlsd2l0aCBcInNob3VsZCBub3QgaGF2ZSBnb3R0ZW4gdG8gdGhpcyBwb2ludFwiXG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+ICgpXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGV4cGxvaXRzIHRoZSBmYWN0IHRoYXQgT0NhbWwgZG9lcyBub3QgcGVyZm9ybSBjb250ZXh0LXN3aXRjaGVzIHVuZGVyXG4gICBjZXJ0YWluIGNvbmRpdGlvbnMuICBJdCBjYW4gdGhlcmVmb3JlIGF2b2lkIHVzaW5nIG11dGV4ZXMuXG5cbiAgIEdpdmVuIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGN1cnJlbnQgT0NhbWwgcnVudGltZSAoYW5kIGZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlKSwgY29kZVxuICAgc2VjdGlvbnMgZG9jdW1lbnRlZCBhcyBhdG9taWMgYmVsb3cgd2lsbCBuZXZlciBjb250YWluIGEgY29udGV4dC1zd2l0Y2guICBUaGUgZGVjaWRpbmdcbiAgIGNyaXRlcmlvbiBpcyB3aGV0aGVyIHRoZXkgY29udGFpbiBhbGxvY2F0aW9ucyBvciBjYWxscyB0byBleHRlcm5hbC9idWlsdGluIGZ1bmN0aW9ucy5cbiAgIElmIHRoZXJlIGlzIG5vbmUsIGEgY29udGV4dC1zd2l0Y2ggY2Fubm90IGhhcHBlbi4gIEFzc2lnbm1lbnRzIHdpdGhvdXQgYWxsb2NhdGlvbnMsXG4gICBmaWVsZCBhY2Nlc3MsIHBhdHRlcm4tbWF0Y2hpbmcsIGV0Yy4sIGRvIG5vdCB0cmlnZ2VyIGNvbnRleHQtc3dpdGNoZXMuXG5cbiAgIENvZGUgcmV2aWV3ZXJzIHNob3VsZCB0aGVyZWZvcmUgbWFrZSBzdXJlIHRoYXQgdGhlIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93XG4gICBkbyBub3QgdmlvbGF0ZSB0aGUgYWJvdmUgYXNzdW1wdGlvbnMuICBJdCBpcyBwcnVkZW50IHRvIGRpc2Fzc2VtYmxlIHRoZSAubyBmaWxlICh1c2luZ1xuICAgW29iamR1bXAgLWRyXSkgYW5kIGV4YW1pbmUgaXQuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHQgOiAoJ2EgdCBVb3B0LnRbQHNleHAub3BhcXVlXSlcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IHsgdmFsdWUgPSBVb3B0Lm5vbmU7IG5leHQgPSBVb3B0Lm5vbmUgfVxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgKCogW2Zyb250XSB0byBbYmFja10gaGFzIFtsZW5ndGggKyAxXSBsaW5rZWQgZWxlbWVudHMsIHdoZXJlIHRoZSBmaXJzdCBbbGVuZ3RoXSBob2xkIHRoZVxuICAgICB2YWx1ZXMgaW4gdGhlIHF1ZXVlLCBhbmQgdGhlIGxhc3QgaXMgW2JhY2tdLCBob2xkaW5nIG5vIHZhbHVlLiAqKVxuICA7IG11dGFibGUgZnJvbnQgOiAnYSBFbHQudFxuICA7IG11dGFibGUgYmFjayA6ICdhIEVsdC50XG4gICgqIFt1bnVzZWRfZWx0c10gaXMgc2luZ2x5IGxpbmtlZCB2aWEgW25leHRdLCBhbmQgZW5kcyB3aXRoIFtzZW50aW5lbF0uICBBbGwgZWx0cyBpblxuICAgICBbdW51c2VkX2VsdHNdIGhhdmUgW1VvcHQuaXNfbm9uZSBlbHQudmFsdWVdLiAqKVxuICA7IG11dGFibGUgdW51c2VkX2VsdHMgOiAnYSBFbHQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmxlbmd0aDooY2hlY2sgKGZ1biBsZW5ndGggLT4gYXNzZXJ0IChsZW5ndGggPj0gMCkpKVxuICAgICAgfmZyb250OlxuICAgICAgICAoY2hlY2sgKGZ1biBmcm9udCAtPlxuICAgICAgICAgICBsZXQgaSA9IHJlZiB0Lmxlbmd0aCBpblxuICAgICAgICAgICBsZXQgciA9IHJlZiBmcm9udCBpblxuICAgICAgICAgICB3aGlsZSAhaSA+IDAgZG9cbiAgICAgICAgICAgICBkZWNyIGk7XG4gICAgICAgICAgICAgbGV0IGVsdCA9ICFyIGluXG4gICAgICAgICAgICAgciA6PSBVb3B0LnZhbHVlX2V4biBlbHQuRWx0Lm5leHQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgZWx0LnZhbHVlKVxuICAgICAgICAgICBkb25lO1xuICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgIXIgdC5iYWNrKSkpXG4gICAgICB+YmFjazooY2hlY2sgKGZ1biBiYWNrIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIGJhY2suRWx0LnZhbHVlKSkpXG4gICAgICB+dW51c2VkX2VsdHM6XG4gICAgICAgIChjaGVjayAoZnVuIHVudXNlZF9lbHRzIC0+XG4gICAgICAgICAgIGxldCByID0gcmVmIHVudXNlZF9lbHRzIGluXG4gICAgICAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICAgICAgIGxldCBlbHQgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgICAgICAgICAgIHIgOj0gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZSkpKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBlbHQgPSBFbHQuY3JlYXRlICgpIGluXG4gIHsgZnJvbnQgPSBlbHQ7IGJhY2sgPSBlbHQ7IGxlbmd0aCA9IDA7IHVudXNlZF9lbHRzID0gVW9wdC5ub25lIH1cbjs7XG5cbmxldCBnZXRfdW51c2VkX2VsdCB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgVW9wdC5pc19zb21lIHQudW51c2VkX2VsdHNcbiAgdGhlbiAoXG4gICAgbGV0IGVsdCA9IFVvcHQudW5zYWZlX3ZhbHVlIHQudW51c2VkX2VsdHMgaW5cbiAgICB0LnVudXNlZF9lbHRzIDwtIGVsdC5uZXh0O1xuICAgIGVsdCAoKiBFTkQgQVRPTUlDIFNFQ1RJT04gKikpXG4gIGVsc2UgRWx0LmNyZWF0ZSAoKVxuOztcblxubGV0IGVucXVldWUgKHR5cGUgYSkgKHQgOiBhIHQpIChhIDogYSkgPVxuICBsZXQgbmV3X2JhY2sgPSBnZXRfdW51c2VkX2VsdCB0IGluXG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgdC5iYWNrLnZhbHVlIDwtIFVvcHQuc29tZSBhO1xuICB0LmJhY2submV4dCA8LSBVb3B0LnNvbWUgbmV3X2JhY2s7XG4gIHQuYmFjayA8LSBuZXdfYmFja1xuOztcblxuKCogRU5EIEFUT01JQyBTRUNUSU9OICopXG5cbmxldCByZXR1cm5fdW51c2VkX2VsdCB0IChlbHQgOiBfIEVsdC50KSA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGVsdC52YWx1ZSA8LSBVb3B0Lm5vbmU7XG4gIGVsdC5uZXh0IDwtIHQudW51c2VkX2VsdHM7XG4gIHQudW51c2VkX2VsdHMgPC0gVW9wdC5zb21lIGVsdDtcbiAgKCogRU5EIEFUT01JQyBTRUNUSU9OICopXG4gICgpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2RlcXVldWVfZW1wdHkgdCA9XG4gIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gb2YgZW1wdHkgcXVldWVcIiB0IFslc2V4cF9vZjogXyB0XVxuOztcblxubGV0IGRlcXVldWVfZXhuIHQgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9kZXF1ZXVlX2VtcHR5IHQ7XG4gIGxldCBlbHQgPSB0LmZyb250IGluXG4gIGxldCBhID0gZWx0LnZhbHVlIGluXG4gIHQuZnJvbnQgPC0gVW9wdC51bnNhZmVfdmFsdWUgZWx0Lm5leHQ7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgKCogRU5EIEFUT01JQyBTRUNUSU9OICopXG4gIHJldHVybl91bnVzZWRfZWx0IHQgZWx0O1xuICBVb3B0LnVuc2FmZV92YWx1ZSBhXG47O1xuXG5sZXQgY2xlYXJfaW50ZXJuYWxfcG9vbCB0ID0gdC51bnVzZWRfZWx0cyA8LSBVb3B0Lm5vbmVcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVvcHQgPSBVb3B0XG5lbmRcbiIsImluY2x1ZGUgQ29yZS5Db3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxuXG4oKiBbYWZ0ZXJdIGlzIGxpa2UgW2FkZF0sIGJ1dCBkZWFscyBuaWNlbHkgd2l0aCB0aGUgY2FzZSBvZiBvdmVyZmxvdyBieSBpbnN0ZWFkIHJldHVybmluZ1xuICAgW21heF92YWx1ZV0uICBUaW1lLXNvdXJjZSBmdW5jdGlvbnMgdXNlIFthZnRlcl0gdG8gYXZvaWQgaW1tZWRpYXRlbHkgZmlyaW5nIGV2ZW50cyB0aGF0XG4gICBzaG91bGQgbmV2ZXIgZmlyZSwgZHVlIHRvIHRoZSBvdmVyZmxvdyBsZWFkaW5nIHRvIGEgbmVnYXRpdmUgdGltZSB0aGF0IGFwcGVhcnMgdG8gYmUgaW5cbiAgIHRoZSBwYXN0LiAgV2UgZG9uJ3QgY2hlY2sgdW5kZXJmbG93IGJlY2F1c2UgdGhhdCBpcyB2ZXJ5IHVubGlrZWx5LCByZXF1aXJpbmcgYm90aCBhXG4gICBuZWdhdGl2ZSB0aW1lIGFuZCBhIG5lZ2F0aXZlIHNwYW4uICopXG5sZXQgYWZ0ZXIgdCBzcGFuID1cbiAgbGV0IHJlc3VsdCA9IGFkZCB0IHNwYW4gaW5cbiAgaWYgU3Bhbi4oID4gKSBzcGFuIFNwYW4uemVybyAmJiByZXN1bHQgPCB0IHRoZW4gbWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgZWxzZSByZXN1bHRcbjs7XG4iLCJtb2R1bGUgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeSA9IFRpbWVfbnNcbm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zX2luX3RoaXNfZGlyZWN0b3J5XG5pbmNsdWRlIEFzeW5jX2tlcm5lbF9jb25maWcuUHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG5cbmxldCBsb2cgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIGVwcmludGZcbiAgICBcIiVzXFxuJSFcIlxuICAgIChTZXhwLnRvX3N0cmluZ19odW1cbiAgICAgICAoWyVzZXhwX29mOiBTZXhwLnQgKiBUaW1lX25zLnQgKiBzdHJpbmcgKiBhXVxuICAgICAgICAgICghQXN5bmNfa2VybmVsX2NvbmZpZy50YXNrX2lkICgpLCBUaW1lX25zLm5vdyAoKSwgbWVzc2FnZSwgYSkpKVxuOztcblxubGV0IGxvZ19zdHJpbmcgbWVzc2FnZSA9IGxvZyBtZXNzYWdlICgpIFslc2V4cF9vZjogdW5pdF1cbiIsIm1vZHVsZSBEZWJ1Z19pbl90aGlzX2RpcmVjdG9yeSA9IERlYnVnXG5tb2R1bGUgVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeSA9IFRpbWVfbnNcbm9wZW4hIENvcmVcbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIERlYnVnID0gRGVidWdfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5cbm1vZHVsZSBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gIEFzeW5jX2tlcm5lbF9jb25maWcuTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCBlcHJpbnQgPSBDb3JlLkRlYnVnLmVwcmludFxubGV0IGVwcmludF9zID0gQ29yZS5EZWJ1Zy5lcHJpbnRfc1xubGV0IGVwcmludHMgPSBDb3JlLkRlYnVnLmVwcmludHNcbmxldCBwcmludF9zIHNleHAgPSBwcmludGYgXCIlc1xcbiUhXCIgKHNleHAgfD4gU2V4cC50b19zdHJpbmdfaHVtKVxubGV0IHNlYyA9IFRpbWVfbnMuU3Bhbi5vZl9zZWNcblxuKCogV2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlc2UgbW9kdWxlcyBpbiBBc3luY19rZXJuZWwsIHRvIGF2b2lkIGRpZmZpY3VsdGllcyB3aXRoXG4gICB1c2luZyBpdCBvbiBqc19vZl9vY2FtbC4gKilcbm1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVW5peCA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5vcm1hbFxuICB8IExvd1xuW0BAZGVyaXZpbmcgc2V4cF9vZiwgZW51bWVyYXRlXVxuXG5sZXQgbm9ybWFsID0gTm9ybWFsXG5sZXQgbG93ID0gTG93XG4iLCIoKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIGF0IHRoZSBoZWFydCBvZiBBc3luYy4gIFRoZSBmdW5jdGlvbnNcbiAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHlwZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmlsZShzKSBmb3IgZWFjaCBtb2R1bGUuXG4gICBUaGlzIGZpbGUgc2hvdWxkIGRlZmluZSBvbmx5IHR5cGVzLCBub3QgZnVuY3Rpb25zLCBzaW5jZSBmdW5jdGlvbnMgZGVmaW5lZCBpbnNpZGUgdGhlXG4gICByZWN1cnNpdmUgbW9kdWxlcyBhcmUgbm90IGlubGluZWQuXG5cbiAgIElmIHlvdSBuZWVkIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHRvIGEgbW9kdWxlIGJ1dCBkb2luZyBzbyB3b3VsZCBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gICBjeWNsZSwgc3BsaXQgdGhlIGZpbGUgaW50byBwaWVjZXMgYXMgbmVlZGVkIHRvIGJyZWFrIHRoZSBjeWNsZSwgZS5nLiBzY2hlZHVsZXIwLm1sLFxuICAgc2NoZWR1bGVyMS5tbCwgc2NoZWR1bGVyLm1sLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIHJlYyBDZWxsIDogc2lnXG4gIHR5cGUgYW55ID1cbiAgICBbIGBFbXB0eVxuICAgIHwgYEVtcHR5X29uZV9oYW5kbGVyXG4gICAgfCBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICB8IGBGdWxsXG4gICAgfCBgSW5kaXJcbiAgICBdXG5cbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgICAgeyBtdXRhYmxlIHJ1biA6ICdhIC0+IHVuaXRcbiAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgOyBtdXRhYmxlIHByZXYgOiAnYSBIYW5kbGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIG5leHQgOiAnYSBIYW5kbGVyLnRcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSB0XG4gICAgfCBFbXB0eV9vbmVfaGFuZGxlciA6XG4gICAgICAgICgnYSAtPiB1bml0KSAqIEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgdFxuICAgIHwgRW1wdHkgOiAoJ2EsIFs+IGBFbXB0eSBdKSB0XG4gICAgfCBGdWxsIDogJ2EgLT4gKCdhLCBbPiBgRnVsbCBdKSB0XG4gICAgfCBJbmRpciA6ICdhIEl2YXIudCAtPiAoJ2EsIFs+IGBJbmRpciBdKSB0XG5lbmQgPVxuICBDZWxsXG5cbmFuZCBIYW5kbGVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgQ2VsbC50XG5lbmQgPVxuICBIYW5kbGVyXG5cbmFuZCBJdmFyIDogc2lnXG4gIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjZWxsIDogKCdhLCBDZWxsLmFueSkgQ2VsbC50IH1cblxuICBtb2R1bGUgSW1tdXRhYmxlIDogc2lnXG4gICAgdHlwZSAnYSB0ID0geyBjZWxsIDogKCdhLCBDZWxsLmFueSkgQ2VsbC50IH1cbiAgZW5kXG5lbmQgPVxuICBJdmFyXG5cbmFuZCBEZWZlcnJlZCA6IHNpZ1xuICB0eXBlICshJ2EgdFxuZW5kID1cbiAgRGVmZXJyZWRcblxuYW5kIEV4ZWN1dGlvbl9jb250ZXh0IDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtb25pdG9yIDogTW9uaXRvci50XG4gICAgOyBwcmlvcml0eSA6IFByaW9yaXR5LnRcbiAgICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gICAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgICB9XG5lbmQgPVxuICBFeGVjdXRpb25fY29udGV4dFxuXG5hbmQgRm9yd2FyZGluZyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgRGV0YWNoZWRcbiAgICB8IFBhcmVudCBvZiBNb25pdG9yLnRcbiAgICB8IFJlcG9ydF91bmNhdWdodF9leG5cbmVuZCA9XG4gIEZvcndhcmRpbmdcblxuYW5kIE1vbml0b3IgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG5hbWUgOiBJbmZvLnRcbiAgICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICAgIDsgaWQgOiBpbnRcbiAgICA7IG11dGFibGUgbmV4dF9lcnJvciA6IGV4biBJdmFyLnRcbiAgICA7IG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gICAgOyBtdXRhYmxlIHRhaWxzX2Zvcl9hbGxfZXJyb3JzIDogZXhuIFRhaWwudCBsaXN0XG4gICAgOyBtdXRhYmxlIGhhc19zZWVuX2Vycm9yIDogYm9vbFxuICAgIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gICAgfVxuZW5kID1cbiAgTW9uaXRvclxuXG5hbmQgVGFpbCA6IHNpZ1xuICB0eXBlICdhIHQgPSB7IG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5lbmQgPVxuICBUYWlsXG5cbmFuZCBTdHJlYW0gOiBzaWdcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPVxuICAgIHwgTmlsXG4gICAgfCBDb25zIG9mICdhICogJ2EgdFxuZW5kID1cbiAgU3RyZWFtXG5cbigqIFdlIGF2b2lkIHVzaW5nIFttb2R1bGUgcmVjXSB0byBkZWZpbmUgW0J2YXJdLCBzbyB0aGF0IFt0b19yZXByXSBhbmQgW29mX3JlcHJdIGFyZVxuICAgaW5saW5lZC4gKilcbm1vZHVsZSBCdmFyIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1pc3Npb24pIHRcblxuICAoKiogW3JlcHJdIGV4aXN0cyBzbyB0aGF0IHdlIG1heSBoaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFtCdmFyLnRdLCBhbmQgdGhlbiBhZGQgYVxuICAgICAgcGhhbnRvbSB0eXBlIHRvIGl0IHVwc3RyZWFtLiAgV2l0aG91dCB0aGlzLCB0aGUgcGhhbnRvbSB0eXBlIHZhcmlhYmxlIHdvdWxkIGFsbG93XG4gICAgICBmb3IgYW55dGhpbmcgdG8gYmUgY29lcmNlZCBpbiBhbmQgb3V0LCBzaW5jZSBpdCBpcyB1bnVzZWQuICopXG4gIHR5cGUgJ2EgcmVwciA9XG4gICAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICAgIH1cblxuICB2YWwgb2ZfcmVwciA6ICdhIHJlcHIgLT4gKCdhLCAncGVybWlzc2lvbikgdFxuICB2YWwgdG9fcmVwciA6ICgnYSwgJ3Blcm1pc3Npb24pIHQgLT4gJ2EgcmVwclxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgcmVwciA9XG4gICAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgICA7IG11dGFibGUgaXZhciA6ICdhIEl2YXIudFxuICAgIH1cblxuICB0eXBlICgnYSwgJ3Blcm1pc3Npb24pIHQgPSAnYSByZXByXG5cbiAgbGV0IHRvX3JlcHIgdCA9IHRcbiAgbGV0IG9mX3JlcHIgdCA9IHRcbmVuZFxuXG5tb2R1bGUgcmVjIEV2ZW50IDogc2lnXG4gIG1vZHVsZSBTdGF0dXMgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBGaXJlZFxuICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRcbiAgICAgIHwgU2NoZWR1bGVkXG4gICAgICB8IFVuc2NoZWR1bGVkXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gOiBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kID1cbiAgRXZlbnRcblxuYW5kIEV4dGVybmFsX2pvYiA6IHNpZ1xuICB0eXBlIHQgPSBUIDogRXhlY3V0aW9uX2NvbnRleHQudCAqICgnYSAtPiB1bml0KSAqICdhIC0+IHRcbmVuZCA9XG4gIEV4dGVybmFsX2pvYlxuXG5hbmQgSm9iIDogc2lnXG4gIHR5cGUgc2xvdHMgPSAoRXhlY3V0aW9uX2NvbnRleHQudCwgT2JqLnQgLT4gdW5pdCwgT2JqLnQpIFBvb2wuU2xvdHMudDNcbiAgdHlwZSB0ID0gc2xvdHMgUG9vbC5Qb2ludGVyLnRcbmVuZCA9XG4gIEpvYlxuXG5hbmQgSm9iX29yX2V2ZW50IDogc2lnXG4gIHR5cGUgdFxuZW5kID1cbiAgSm9iX29yX2V2ZW50XG5cbmFuZCBKb2JfcG9vbCA6IHNpZ1xuICB0eXBlIHQgPSBKb2Iuc2xvdHMgUG9vbC50XG5lbmQgPVxuICBKb2JfcG9vbFxuXG5hbmQgSm9iX3F1ZXVlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIG51bV9qb2JzX3J1biA6IGludFxuICAgIDsgbXV0YWJsZSBqb2JzX2xlZnRfdGhpc19jeWNsZSA6IGludFxuICAgIDsgbXV0YWJsZSBqb2JzIDogT2JqLnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIG1hc2sgOiBpbnRcbiAgICA7IG11dGFibGUgZnJvbnQgOiBpbnRcbiAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgfVxuZW5kID1cbiAgSm9iX3F1ZXVlXG5cbmFuZCBKb2JzIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIudFxuICAgIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgICA7IG5vcm1hbCA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3cgOiBKb2JfcXVldWUudFxuICAgIH1cbmVuZCA9XG4gIEpvYnNcblxuYW5kIFNjaGVkdWxlciA6IHNpZ1xuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNoZWNrX2FjY2VzcyA6ICh1bml0IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBqb2JfcG9vbCA6IEpvYl9wb29sLnRcbiAgICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgICA7IGxvd19wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgOiBWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIudCBEZXF1ZS50XG4gICAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIHVuY2F1Z2h0X2V4biA6IChFeG4udCAqIFNleHAudCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGN5Y2xlX2NvdW50IDogaW50XG4gICAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gICAgOyBtdXRhYmxlIGluX2N5Y2xlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfc3RhcnQgOiBDeWNsZV9ob29rLnQgYXJyYXlcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogQ3ljbGVfaG9vay50IGFycmF5XG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIDogKEN5Y2xlX2hvb2tfaGFuZGxlLnQsIEN5Y2xlX2hvb2sudCkgSGFzaHRibC50XG4gICAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfbnVtX2pvYnMgOiBpbnRcbiAgICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBtdXRhYmxlIHRpbWVfc291cmNlIDogcmVhZF93cml0ZSBUaW1lX3NvdXJjZS50MVxuICAgIDsgZXh0ZXJuYWxfam9icyA6IEV4dGVybmFsX2pvYi50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG11dGFibGUgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IG11dGFibGUgam9iX3F1ZXVlZF9ob29rIDogKFByaW9yaXR5LnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIGV2ZW50X2FkZGVkX2hvb2sgOiAoVGltZV9ucy50IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSB5aWVsZCA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gICAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gICAgOyBtdXRhYmxlIG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlIDogTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUudFxuICAgIDsgbXV0YWJsZSByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBTY2hlZHVsZXJcblxuYW5kIEN5Y2xlX2hvb2sgOiBzaWdcbiAgdHlwZSB0ID0gdW5pdCAtPiB1bml0XG5lbmQgPVxuICBDeWNsZV9ob29rXG5cbmFuZCBDeWNsZV9ob29rX2hhbmRsZSA6IFVuaXF1ZV9pZC5JZCA9IFVuaXF1ZV9pZC5JbnQ2MyAoKVxuYW5kIFRpbWVfc291cmNlX2lkIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbmFuZCBUaW1lX3NvdXJjZSA6IHNpZ1xuICB0eXBlIC0ncncgdDEgPVxuICAgIHsgaWQgOiBUaW1lX3NvdXJjZV9pZC50XG4gICAgOyBtdXRhYmxlIGFkdmFuY2VfZXJyb3JzIDogRXJyb3IudCBsaXN0XG4gICAgOyBtdXRhYmxlIGFtX2FkdmFuY2luZyA6IGJvb2xcbiAgICA7IGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC50XG4gICAgOyBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBtdXRhYmxlIG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udFxuICAgIDsgaGFuZGxlX2ZpcmVkIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlci50XG4gICAgfVxuZW5kID1cbiAgVGltZV9zb3VyY2VcblxuYW5kIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA6IHNpZ1xuICBtb2R1bGUgRXhlY19yZXN1bHQgOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBGaW5pc2hlZFxuICAgICAgfCBOb3RfZmluaXNoZWRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbmVuZCA9XG4gIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlclxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5tb25pdG9yXG5cbm1vZHVsZSBGb3J3YXJkaW5nID0gVHlwZXMuRm9yd2FyZGluZ1xuXG50eXBlIHQgPSBUeXBlcy5Nb25pdG9yLnQgPVxuICB7IG5hbWUgOiBJbmZvLnRcbiAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgOyBpZCA6IGludFxuICA7IG11dGFibGUgbmV4dF9lcnJvciA6IGV4biBUeXBlcy5JdmFyLnRcbiAgOyAoKiBbTW9uaXRvci5zZW5kX2V4bl0gc2NoZWR1bGVzIGEgam9iIGZvciBlYWNoIGVsZW1lbnQgb2YgW2hhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzXS4gKilcbiAgICBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKFR5cGVzLkV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBleHRlbmRzIGVhY2ggdGFpbCBpbiBbdGFpbHNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgdGFpbHNfZm9yX2FsbF9lcnJvcnMgOiBleG4gVHlwZXMuVGFpbC50IGxpc3RcbiAgOyBtdXRhYmxlIGhhc19zZWVuX2Vycm9yIDogYm9vbFxuICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBkZXNjcmlwdGlvbiB0ID1cbiAgbWF0Y2ggdC5oZXJlIHdpdGhcbiAgfCBOb25lIC0+IFslc2V4cCAodC5uYW1lIDogSW5mby50KV1cbiAgfCBTb21lIGhlcmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpLCAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IGRlc2NyaXB0aW9ucyA9XG4gIGxldCByZWMgbG9vcCB0IGFjID1cbiAgICBsZXQgYWMgPSBkZXNjcmlwdGlvbiB0IDo6IGFjIGluXG4gICAgbWF0Y2ggdC5mb3J3YXJkaW5nIHdpdGhcbiAgICB8IERldGFjaGVkIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPiBMaXN0LnJldiBhY1xuICAgIHwgUGFyZW50IHQgLT4gbG9vcCB0IGFjXG4gIGluXG4gIGZ1biB0IC0+IGxvb3AgdCBbXVxuOztcblxubGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwIChkZXNjcmlwdGlvbnMgdCA6IFNleHAudCBsaXN0KV1cblxubGV0IG5leHRfaWQgPVxuICBsZXQgciA9IHJlZiAwIGluXG4gIGZ1biAoKSAtPlxuICAgIGluY3IgcjtcbiAgICAhclxuOztcblxubGV0IGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSBwYXJlbnQgPVxuICBsZXQgaWQgPSBuZXh0X2lkICgpIGluXG4gIGxldCBuYW1lID1cbiAgICBtYXRjaCBpbmZvLCBuYW1lIHdpdGhcbiAgICB8IFNvbWUgaSwgTm9uZSAtPiBpXG4gICAgfCBTb21lIGksIFNvbWUgcyAtPiBJbmZvLnRhZyBpIH50YWc6c1xuICAgIHwgTm9uZSwgU29tZSBzIC0+IEluZm8ub2Zfc3RyaW5nIHNcbiAgICB8IE5vbmUsIE5vbmUgLT4gSW5mby5jcmVhdGUgXCJpZFwiIGlkIFslc2V4cF9vZjogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudF1cbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgbmFtZVxuICAgIDsgaGVyZVxuICAgIDsgZm9yd2FyZGluZyA9XG4gICAgICAgIChtYXRjaCBwYXJlbnQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IFJlcG9ydF91bmNhdWdodF9leG5cbiAgICAgICAgIHwgU29tZSBwYXJlbnQgLT4gUGFyZW50IHBhcmVudClcbiAgICA7IGlkXG4gICAgOyBuZXh0X2Vycm9yID0geyBjZWxsID0gRW1wdHkgfVxuICAgIDsgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgPSBCYWcuY3JlYXRlICgpXG4gICAgOyB0YWlsc19mb3JfYWxsX2Vycm9ycyA9IFtdXG4gICAgOyBoYXNfc2Vlbl9lcnJvciA9IGZhbHNlXG4gICAgfVxuICBpblxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcImNyZWF0ZWQgbW9uaXRvclwiIHQgWyVzZXhwX29mOiB0XTtcbiAgdFxuOztcblxubGV0IG1haW4gPSBjcmVhdGVfd2l0aF9wYXJlbnQgfm5hbWU6XCJtYWluXCIgTm9uZVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTW9uaXRvciA9IE1vbml0b3IwXG5cbnR5cGUgdCA9IFR5cGVzLkV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICB7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgOyBwcmlvcml0eSA6IFByaW9yaXR5LnRcbiAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5cbmxldCBtYWluID1cbiAgeyBtb25pdG9yID0gTW9uaXRvci5tYWluXG4gIDsgcHJpb3JpdHkgPSBQcmlvcml0eS5ub3JtYWxcbiAgOyBsb2NhbF9zdG9yYWdlID0gVW5pdl9tYXAuZW1wdHlcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IFtdXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfbGlrZSA/bW9uaXRvciA/cHJpb3JpdHkgP2xvY2FsX3N0b3JhZ2UgdCA9XG4gIG1hdGNoIG1vbml0b3IsIHByaW9yaXR5LCBsb2NhbF9zdG9yYWdlIHdpdGhcbiAgfCBOb25lLCBOb25lLCBOb25lIC0+XG4gICAgKCogYXZvaWQgYWxsb2NhdGluZyBpbiB0aGUgdHJpdmlhbCBjYXNlLCB3aGljaCBlLmcuIGhhcHBlbnMgd2hlbiBjYWxsaW5nXG4gICAgICAgW0FzeW5jLnNjaGVkdWxlXSB3aXRob3V0IG9wdGlvbmFsIGFyZ3MgKilcbiAgICB0XG4gIHwgXyAtPlxuICAgIGxldCBtb25pdG9yID0gT3B0aW9uLnZhbHVlIG1vbml0b3IgfmRlZmF1bHQ6dC5tb25pdG9yIGluXG4gICAgeyBtb25pdG9yXG4gICAgOyBwcmlvcml0eSA9IE9wdGlvbi52YWx1ZSBwcmlvcml0eSB+ZGVmYXVsdDp0LnByaW9yaXR5XG4gICAgOyBsb2NhbF9zdG9yYWdlID0gT3B0aW9uLnZhbHVlIGxvY2FsX3N0b3JhZ2UgfmRlZmF1bHQ6dC5sb2NhbF9zdG9yYWdlXG4gICAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IHQuYmFja3RyYWNlX2hpc3RvcnlcbiAgICB9XG47O1xuXG5sZXQgZmluZF9sb2NhbCB0IGtleSA9IFVuaXZfbWFwLmZpbmQgdC5sb2NhbF9zdG9yYWdlIGtleVxuXG5sZXQgd2l0aF9sb2NhbCB0IGtleSBkYXRhID1cbiAgeyB0IHdpdGggbG9jYWxfc3RvcmFnZSA9IFVuaXZfbWFwLmNoYW5nZSB0LmxvY2FsX3N0b3JhZ2Uga2V5IH5mOihmdW4gXyAtPiBkYXRhKSB9XG47O1xuXG5sZXQgcmVjb3JkX2JhY2t0cmFjZSB0ID1cbiAgeyB0IHdpdGggYmFja3RyYWNlX2hpc3RvcnkgPSBCYWNrdHJhY2UuZ2V0ICgpIDo6IHQuYmFja3RyYWNlX2hpc3RvcnkgfVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUeXBlcy5FeHRlcm5hbF9qb2JcblxubGV0IHNleHBfb2ZfdCBfID0gU2V4cC5BdG9tIFwiPGpvYj5cIlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFBvb2xcblxubGV0IGR1bW15X2UgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG5sZXQgZHVtbXlfZiA6IE9iai50IC0+IHVuaXQgPSBpZ25vcmVcbmxldCBkdW1teV9hIDogT2JqLnQgPSBPYmoucmVwciAoKVxuXG50eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIChPYmoudFtAc2V4cC5vcGFxdWVdKSkgU2xvdHMudDNcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgdCA9IHNsb3RzIFBvb2wudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPSBQb29sLmludmFyaWFudCBpZ25vcmUgdFxubGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZSBTbG90cy50MyB+Y2FwYWNpdHk6MSB+ZHVtbXk6KGR1bW15X2UsIGR1bW15X2YsIGR1bW15X2EpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID0gSm9iX3Bvb2wuc2xvdHMgUG9vbC5Qb2ludGVyLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEV2ZW50ID0gVHlwZXMuRXZlbnRcbm1vZHVsZSBKb2IgPSBUeXBlcy5Kb2JcbmluY2x1ZGUgVHlwZXMuSm9iX29yX2V2ZW50XG5cbigqIFRoaXMgcmVkZWZpbml0aW9uIG9mIFtFdmVudF0gaXMgaGVyZSBzbyB0aGUgdHlwZSBjaGVja3MgYXJlIHJpZ2h0IG5leHQgdG9cbiAgIFtPYmoubWFnaWNdcy4gKilcbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBvcGVuIFR5cGVzXG4gIG9wZW4gRXZlbnRcblxuICB0eXBlIF90ID0gdCA9XG4gICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICB9XG5lbmRcblxubW9kdWxlIF8gOiBzaWcgZW5kID0gc3RydWN0XG4gIG1vZHVsZSBFbnN1cmVfcHJpdmF0ZV9pbnQgKE0gOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgaW50XG4gICAgZW5kKSA9XG4gIHN0cnVjdFxuICAgIHR5cGUgX3QgPSBNLnRcbiAgZW5kXG5cbiAgaW5jbHVkZSBFbnN1cmVfcHJpdmF0ZV9pbnQgKEpvYilcbmVuZFxuXG5sZXQgb2ZfZXZlbnQgZXZlbnQgOiB0ID0gT2JqLm1hZ2ljIChldmVudCA6IEV2ZW50LnQpXG5sZXQgb2Zfam9iIGpvYiA6IHQgPSBPYmoubWFnaWMgKGpvYiA6IEpvYi50KVxubGV0IGlzX2V2ZW50ICh0IDogdCkgPSBPYmouaXNfYmxvY2sgKE9iai5yZXByIHQpXG5sZXQgaXNfam9iICh0IDogdCkgPSBPYmouaXNfaW50IChPYmoucmVwciB0KVxuXG5tb2R1bGUgTWF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSBfIGtpbmQgPVxuICAgIHwgRXZlbnQgOiBFdmVudC50IGtpbmRcbiAgICB8IEpvYiA6IEpvYi50IGtpbmRcblxuICB0eXBlIHBhY2tlZCA9IEsgOiBfIGtpbmQgLT4gcGFja2VkIFtAQHVuYm94ZWRdXG5cbiAgbGV0IGtpbmQgdCA9IGlmIGlzX2V2ZW50IHQgdGhlbiBLIEV2ZW50IGVsc2UgSyBKb2JcbiAgbGV0IHByb2plY3QgKHR5cGUgYSkgKF8gOiBhIGtpbmQpIGpvYl9vcl9ldmVudCA9IChPYmoubWFnaWMgOiB0IC0+IGEpIGpvYl9vcl9ldmVudFxuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuU2NoZWR1bGVyXG5cbmxldCBldmVudHMgdCA9IHQudGltZV9zb3VyY2UuZXZlbnRzXG5cbmxldCBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCBleGVjdXRpb25fY29udGV4dCA9XG4gICgqIEF2b2lkIGEgY2FtbF9tb2RpZnkgaW4gbW9zdCBjYXNlcy4gKilcbiAgaWYgbm90IChwaHlzX2VxdWFsIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBleGVjdXRpb25fY29udGV4dClcbiAgdGhlbiB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgPC0gZXhlY3V0aW9uX2NvbnRleHRcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIwXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcbmxldCBzbG90c19wZXJfZWx0ID0gM1xuXG5tb2R1bGUgQSA9IFVuaWZvcm1fYXJyYXlcblxuKCogVGhpcyBpcyBlc3NlbnRpYWxseSBhIHNwZWNpYWxpemVkIFtGbGF0X3F1ZXVlXSwgZG9uZSBmb3IgcmVhc29ucyBvZiBzcGVlZC4gKilcbnR5cGUgdCA9IFR5cGVzLkpvYl9xdWV1ZS50ID1cbiAgeyBtdXRhYmxlIG51bV9qb2JzX3J1biA6IGludFxuICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgOyAoKiBbam9ic10gaXMgYW4gYXJyYXkgb2YgbGVuZ3RoIFtjYXBhY2l0eSB0ICogc2xvdHNfcGVyX2VsdF0sIHdoZXJlIGVhY2ggZWx0IGhhcyB0aGVcbiAgICAgICB0aHJlZSBjb21wb25lbnRzIG9mIGEgam9iIChbZXhlY3V0aW9uX2NvbnRleHRdLCBbZl0sIFthXSkgaW4gY29uc2VjdXRpdmUgc3BvdHMgaW5cbiAgICAgICBbam9ic10uICBbZW5xdWV1ZV0gZG91YmxlcyB0aGUgbGVuZ3RoIG9mIFtqb2JzXSBpZiBbam9ic10gaXMgZnVsbC4gIFtqb2JzXSBuZXZlclxuICAgICAgIHNocmlua3MuICBbam9ic10gaXMgc29tZXdoYXQgbGlrZSBhIFtDb3JlLlBvb2xdIHNwZWNpYWxpemVkIHRvIDMtdHVwbGVzOyB3ZVxuICAgICAgIGRvbid0IHVzZSBbUG9vbF0gYmVjYXVzZSB0aGF0IGltcGxlbWVudHMgYSBzZXQsIHdoZXJlIFtqb2JzXSBpcyBhIHF1ZXVlLiAqKVxuICAgIG11dGFibGUgam9icyA6IChPYmoudCBBLnRbQHNleHAub3BhcXVlXSlcbiAgOyAoKiBbbWFza10gaXMgW2NhcGFjaXR5IHQgLSAxXSwgYW5kIGlzIHVzZWQgZm9yIHF1aWNrbHkgY29tcHV0aW5nIFtpIG1vZCAoY2FwYWNpdHlcbiAgICAgICB0KV0uIEEgc3BlY2lhbCBjYXNlIHdoZW4gdGhlIGpvYiBxdWV1ZSBoYXMgY2FwYWNpdHkgMCBpcyByZXByZXNlbnRlZFxuICAgICAgIHdpdGggW21hc2sgPSAtMV0uIFRoaXMgdmFsdWUgaXMgbm90IHVzZWZ1bCBhcyBhIGJpdC1tYXNrLCBidXQgd2Ugb25seSB1c2VcbiAgICAgICB0aGUgYml0LW1hc2sgd2hlbiB0aGVyZSdzIGNhcGFjaXR5IGluIHRoZSBhcnJheSwgc28gdGhhdCBpcyBub3QgYSBwcm9ibGVtLlxuICAgICopXG4gICAgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgKCogW2Zyb250XSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGpvYiBpbiB0aGUgcXVldWUuICBUaGUgYXJyYXkgaW5kZXggb2YgdGhhdCBqb2Inc1xuICAgICAgIGV4ZWN1dGlvbiBjb250ZXh0IGlzIFtmcm9udCAqIHNsb3RzX3Blcl9lbHRdLiAqKVxuICAgIG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgb2Zmc2V0IHQgaSA9ICh0LmZyb250ICsgaSkgbGFuZCB0Lm1hc2sgKiBzbG90c19wZXJfZWx0XG5sZXQgY2FwYWNpdHkgdCA9IHQubWFzayArIDFcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bnVtX2pvYnNfcnVuOihjaGVjayAoZnVuIG51bV9qb2JzX3J1biAtPiBhc3NlcnQgKG51bV9qb2JzX3J1biA+PSAwKSkpXG4gICAgICB+am9ic19sZWZ0X3RoaXNfY3ljbGU6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYnNfbGVmdF90aGlzX2N5Y2xlIC0+IGFzc2VydCAoam9ic19sZWZ0X3RoaXNfY3ljbGUgPj0gMCkpKVxuICAgICAgfmpvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYnMgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgICAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudFxuICAgICAgICAgICAgICAgKE9iai5vYmogKEEuZ2V0IGpvYnMgKG9mZnNldCB0IGkpKSA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1hc2s6XG4gICAgICAgIChjaGVjayAoZnVuIG1hc2sgLT5cbiAgICAgICAgICAgbGV0IGNhcGFjaXR5ID0gbWFzayArIDEgaW5cbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSA9IDAgfHwgSW50LmlzX3BvdzIgY2FwYWNpdHkpO1xuICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdCA9IEEubGVuZ3RoIHQuam9icykpKVxuICAgICAgfmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlOihmdW4gXyAtPiAoKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA8IG1heCAxIChjYXBhY2l0eSB0KSkpKVxuICAgICAgfmxlbmd0aDpcbiAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA8PSBjYXBhY2l0eSB0KSkpKVxuOztcblxubGV0IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHkgPSBBLmNyZWF0ZV9vYmpfYXJyYXkgfmxlbjooY2FwYWNpdHkgKiBzbG90c19wZXJfZWx0KVxuXG5sZXQgY3JlYXRlICgpID1cbiAgKCogV2Ugc3RhcnQgd2l0aCBbY2FwYWNpdHkgID0gMF0gc28gdGhhdCB0aGUgZmlyc3Qgam9iIHRoYXQgaXMgYWRkZWQgY2FsbHMgW2dyb3ddIGFuZFxuICAgICBmaWxscyBpbiB0aGUgW2JhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlXS4gKilcbiAgbGV0IGNhcGFjaXR5ID0gMCBpblxuICB7IG51bV9qb2JzX3J1biA9IDBcbiAgOyBqb2JzX2xlZnRfdGhpc19jeWNsZSA9IDBcbiAgOyBqb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eVxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBmcm9udCA9IDBcbiAgOyBsZW5ndGggPSAwXG4gIDsgYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgPSBOb25lXG4gIH1cbjs7XG5cbmxldCBiYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZSB0ID0gdC5iYWNrdHJhY2Vfb2ZfZmlyc3RfZW5xdWV1ZVxuXG5sZXQgY2xlYXIgdCA9XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5sZW5ndGggPC0gMDtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSAwXG47O1xuXG5sZXQgZ3JvdyB0ID1cbiAgKG1hdGNoIHQuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgd2l0aFxuICAgfCBTb21lIF8gLT4gYXNzZXJ0IChjYXBhY2l0eSB0ID4gMClcbiAgIHwgTm9uZSAtPiB0LmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIDwtIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpKTtcbiAgbGV0IG9sZF9jYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCAxIChvbGRfY2FwYWNpdHkgKiAyKSBpblxuICBsZXQgb2xkX2pvYnMgPSB0LmpvYnMgaW5cbiAgbGV0IG9sZF9mcm9udCA9IHQuZnJvbnQgaW5cbiAgbGV0IGxlbjEgPSBJbnQubWluIHQubGVuZ3RoIChvbGRfY2FwYWNpdHkgLSBvbGRfZnJvbnQpICogc2xvdHNfcGVyX2VsdCBpblxuICBsZXQgbGVuMiA9ICh0Lmxlbmd0aCAqIHNsb3RzX3Blcl9lbHQpIC0gbGVuMSBpblxuICBsZXQgbmV3X2pvYnMgPSBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5Om5ld19jYXBhY2l0eSBpblxuICBBLmJsaXRcbiAgICB+bGVuOmxlbjFcbiAgICB+c3JjOm9sZF9qb2JzXG4gICAgfnNyY19wb3M6KG9sZF9mcm9udCAqIHNsb3RzX3Blcl9lbHQpXG4gICAgfmRzdDpuZXdfam9ic1xuICAgIH5kc3RfcG9zOjA7XG4gIEEuYmxpdCB+bGVuOmxlbjIgfnNyYzpvbGRfam9icyB+c3JjX3BvczowIH5kc3Q6bmV3X2pvYnMgfmRzdF9wb3M6bGVuMTtcbiAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gIHQuam9icyA8LSBuZXdfam9icztcbiAgdC5mcm9udCA8LSAwXG47O1xuXG5sZXQgc2V0ICh0eXBlIGEpIHQgaSBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBsZXQgb2Zmc2V0ID0gb2Zmc2V0IHQgaSBpblxuICBBLnVuc2FmZV9zZXQgdC5qb2JzIG9mZnNldCAoT2JqLnJlcHIgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCkpO1xuICBBLnVuc2FmZV9zZXQgdC5qb2JzIChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgKGYgOiBhIC0+IHVuaXQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMikgKE9iai5yZXByIChhIDogYSkpXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIHQubGVuZ3RoID0gY2FwYWNpdHkgdCB0aGVuIGdyb3cgdDtcbiAgc2V0IHQgdC5sZW5ndGggZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDFcbjs7XG5cbmxldCBzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdCBuID1cbiAgaWYgbiA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIkpvYnMuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIGdvdCBuZWdhdGl2ZSBudW1iZXJcIiAobiA6IGludCkgKHQgOiB0KV07XG4gIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gblxuOztcblxubGV0IGNhbl9ydW5fYV9qb2IgdCA9IHQubGVuZ3RoID4gMCAmJiB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlID4gMFxuXG5sZXQgcnVuX2pvYiB0IChzY2hlZHVsZXIgOiBTY2hlZHVsZXIudCkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgdC5udW1fam9ic19ydW4gPC0gdC5udW1fam9ic19ydW4gKyAxO1xuICBTY2hlZHVsZXIuc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dDtcbiAgZiBhXG47O1xuXG5sZXQgcnVuX2V4dGVybmFsX2pvYnMgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpID1cbiAgbGV0IGV4dGVybmFsX2pvYnMgPSBzY2hlZHVsZXIuZXh0ZXJuYWxfam9icyBpblxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggZXh0ZXJuYWxfam9icyA+IDAgZG9cbiAgICBsZXQgKEV4dGVybmFsX2pvYi5UIChleGVjdXRpb25fY29udGV4dCwgZiwgYSkpID1cbiAgICAgIFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIGV4dGVybmFsX2pvYnNcbiAgICBpblxuICAgIHJ1bl9qb2IgdCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhXG4gIGRvbmVcbjs7XG5cbmxldCBydW5fam9icyAodHlwZSBhKSB0IHNjaGVkdWxlciA9XG4gICgqIFdlIGRvIHRoZSBbdHJ5LXdpdGhdIG91dHNpZGUgb2YgdGhlIFt3aGlsZV0gYmVjYXVzZSBpdCBpcyBjaGVhcGVyIHRoYW4gZG9pbmcgYVxuICAgICBbdHJ5LXdpdGhdIGZvciBlYWNoIGpvYi4gKilcbiAgKCogW3J1bl9leHRlcm5hbF9qb2JzXSBiZWZvcmUgZW50ZXJpbmcgdGhlIGxvb3AsIHNpbmNlIGl0IG1pZ2h0IGVucXVldWUgYSBqb2IsXG4gICAgIGNoYW5naW5nIFt0Lmxlbmd0aF0uICopXG4gIHRyeVxuICAgIHJ1bl9leHRlcm5hbF9qb2JzIHQgc2NoZWR1bGVyO1xuICAgIHdoaWxlIGNhbl9ydW5fYV9qb2IgdCBkb1xuICAgICAgbGV0IHRoaXNfam9iID0gb2Zmc2V0IHQgMCBpblxuICAgICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gICAgICAgIE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgdGhpc19qb2IpXG4gICAgICBpblxuICAgICAgbGV0IGYgOiBhIC0+IHVuaXQgPSBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzICh0aGlzX2pvYiArIDEpKSBpblxuICAgICAgbGV0IGEgOiBhID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAyKSkgaW5cbiAgICAgICgqIFdlIGNsZWFyIG91dCB0aGUgam9iIHJpZ2h0IG5vdyBzbyB0aGF0IGl0IGlzbid0IGxpdmUgYXQgdGhlIG5leHQgbWlub3JcbiAgICAgICAgIGNvbGxlY3Rpb24uICBXZSB0cmllZCBub3QgZG9pbmcgdGhpcyBhbmQgc2F3IHNpZ25pZmljYW50ICgxNSUgb3Igc28pIHBlcmZvcm1hbmNlXG4gICAgICAgICBoaXRzIGR1ZSB0byBzcHVyaW91cyBwcm9tb3Rpb24uICopXG4gICAgICBzZXQgdCAwIGR1bW15X2UgZHVtbXlfZiBkdW1teV9hO1xuICAgICAgdC5mcm9udCA8LSAodC5mcm9udCArIDEpIGxhbmQgdC5tYXNrO1xuICAgICAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICAgICAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIC0gMTtcbiAgICAgICgqIEl0IGlzIE9LIGlmIFtydW5fam9iXSBvciBbcnVuX2V4dGVybmFsX2pvYnNdIHJhaXNlcywgaW4gd2hpY2ggY2FzZSB0aGUgZXhuIGlzXG4gICAgICAgICBoYW5kbGVkIGJ5IHRoZSBvdXRlciB0cnktd2l0aC4gIFRoZSBvbmx5IHNpZGUgZWZmZWN0cyB3ZSBoYXZlIGRvbmUgYXJlIHRvIHRha2VcbiAgICAgICAgIHRoZSBqb2Igb3V0IG9mIHRoZSBxdWV1ZSBhbmQgZGVjcmVtZW50IFtqb2JzX2xlZnRfdGhpc19jeWNsZV0uICBbcnVuX2pvYl0gb3JcbiAgICAgICAgIFtydW5fZXh0ZXJuYWxfam9ic10gbWF5IHNpZGUgZWZmZWN0IFt0XSwgZWl0aGVyIGJ5IGVucXVldWVpbmcgam9icywgb3IgYnlcbiAgICAgICAgIGNsZWFyaW5nIFt0XS4gKilcbiAgICAgIHJ1bl9qb2IgdCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgICAgKCogW3J1bl9leHRlcm5hbF9qb2JzXSBhdCBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgW3doaWxlXSBsb29wLCBmb3IgZmFpcm5lc3MuICopXG4gICAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlclxuICAgIGRvbmU7XG4gICAgT2sgKClcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgICgqIFdlIGNhbGwgW0V4bi5iYWNrdHJhY2VdIGltbWVkaWF0ZWx5IGFmdGVyIGNhdGNoaW5nIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sIHRvXG4gICAgICAgZW5zdXJlIHRoZXJlIGlzIG5vIGludGVydmVuaW5nIGNvZGUgdGhhdCBpbnRlcmZlcmVzIHdpdGggdGhlIGdsb2JhbCBiYWNrdHJhY2VcbiAgICAgICBzdGF0ZS4gKilcbiAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgIEVycm9yIChleG4sIGJhY2t0cmFjZSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgZXh0ZXJuYWwgZm9ybWF0IDogZmxvYXQgLT4gc3RyaW5nIC0+IHN0cmluZyA9IFwiY29yZV90aW1lX25zX2Zvcm1hdFwiXG5cbiAgKCogV2UgdXNlIGEgbW9yZSBwbGVhc2FudCBmb3JtYXQgdGhhbiBbQ29yZS5UaW1lX25zLnNleHBfb2ZfdF0sXG4gICAgIHdoaWNoIGhhcyB0byBiZSBtZXNzaWVyIGZvciByb3VuZCB0cmlwcGFiaWxpdHkuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgWyVzZXhwXG4gICAgICAoZm9ybWF0ICh0IHw+IHRvX3NwYW5fc2luY2VfZXBvY2ggfD4gU3Bhbi50b19zZWMpIFwiJVktJW0tJWRUJUg6JU06JVMlelwiIDogc3RyaW5nKV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1pbmdfd2hlZWwuQWxhcm1cblxuICBsZXQgaXNfbnVsbCB0ID0gcGh5c19lcXVhbCB0IChudWxsICgpKVxuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uXG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICAoKiAxLzh0aCBvZiBhIG1pbGxpc2Vjb25kIGFsYXJtX3ByZWNpc2lvbiBzZWVtcyBzdWZmaWNpZW50IHRvIGF2b2lkIGhhdmluZyBtYW55IGFsYXJtc1xuICAgICBpbiB0aGUgc2FtZSBpbnRlcnZhbCwgd2hpY2ggYXZvaWRzIHF1YWRyYXRpYyBpbnNlcnRpb24gc29ydCB3aGVuIGZpcmluZyBhbGFybXMuICBBbmRcbiAgICAgdGhlIGxldmVsIGJpdHMgZ2l2ZSB1cyBsZXZlbHMgb2YgPjFzLCA+MW0sID4xaCwgPjFkLiAgU2VlIHRlc3QgaW5cbiAgICAgWy4uL3Rlc3QvdGVzdF9zeW5jaHJvbm91c190aW1lX3NvdXJjZS5tbF0uICopXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvbjpBbGFybV9wcmVjaXNpb24uKGRpdiBhYm91dF9vbmVfbWlsbGlzZWNvbmQgfnBvdzI6MylcbiAgICB+bGV2ZWxfYml0czooVGltaW5nX3doZWVsLkxldmVsX2JpdHMuY3JlYXRlX2V4biBbIDEzOyA2OyA2OyA1IF0pXG4gICAgKClcbjs7XG5cbnR5cGUgY2FsbGJhY2sgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIElkID0gVHlwZXMuVGltZV9zb3VyY2VfaWRcblxubW9kdWxlIFQxID0gc3RydWN0XG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50LlN0YXR1cy50ID1cbiAgICAgICAgfCBGaXJlZCAoKiBpbiBbZmlyZWRfZXZlbnRzXSwgcmVhZHkgdG8gcnVuICopXG4gICAgICAgIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XG4gICAgICAgICgqIGN1cnJlbnRseSBydW5uaW5nIHRoZSBjYWxsYmFjayAoZm9yIGEgcGVyaW9kaWMgZXZlbnQpICopXG4gICAgICAgIHwgU2NoZWR1bGVkICgqIGluIHRoZSB0aW1pbmcgd2hlZWwgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCAoKiBub3QgaW4gdGltaW5nIHdoZWVsIG9yIFtmaXJlZF9ldmVudHNdICopXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgICAgbGV0IHRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fID1cbiAgICAgICAgbWF0Y2ggZnJvbSwgdG9fIHdpdGhcbiAgICAgICAgfCAoIEZpcmVkXG4gICAgICAgICAgLCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgKCogc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrIChmb3IgYSBwZXJpb2RpYyBldmVudCkgKilcbiAgICAgICAgICApXG4gICAgICAgIHwgKCBGaXJlZFxuICAgICAgICAgICwgVW5zY2hlZHVsZWRcbiAgICAgICAgICAgICgqIGFib3J0ZWQsIG9yIHN0YXJ0ZWQgcnVubmluZyBjYWxsYmFjayAoZm9yIGEgbm9uLXBlcmlvZGljIGV2ZW50KSAqKSApXG4gICAgICAgICgqIFtyZXNjaGVkdWxlXypdIGdvZXMgdGhyb3VnaCBhbiBpbnRlcm1lZGlhdGUgW0ZpcmVkLCBVbnNjaGVkdWxlZF0gc3RhdGUsXG4gICAgICAgICAgIHNvIHdlIG5ldmVyIHRyYW5zaXRpb24gZnJvbSBbRmlyZWRdIGRpcmVjdGx5IHRvIFtTY2hlZHVsZWRdLiAqKVxuICAgICAgICB8ICggSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XG4gICAgICAgICAgLCBTY2hlZHVsZWQgKCogc2NoZWR1bGVkIG5leHQgaXRlcmF0aW9uIG9mIGEgcGVyaW9kaWMgZXZlbnQgKikgKVxuICAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgRmlyZWQgKCogbW92ZWQgZnJvbSB0aW1pbmcgd2hlZWwgdG8gW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgICAgfCBTY2hlZHVsZWQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgRmlyZWQgKCogZXZlbnQgc2NoZWR1bGVkIGluIHRoZSBwYXN0ICopXG4gICAgICAgIHwgVW5zY2hlZHVsZWQsIFNjaGVkdWxlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIGZ1dHVyZSAqKSAtPiB0cnVlXG4gICAgICAgIHwgKEZpcmVkIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgU2NoZWR1bGVkIHwgVW5zY2hlZHVsZWQpLCBfIC0+IGZhbHNlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSBldmVudCA9IFR5cGVzLkV2ZW50LnRcblxuICAgIGxldCBzZXhwX29mX2V2ZW50XG4gICAgICAgICAgKHsgYWxhcm0gPSBfXG4gICAgICAgICAgIDsgYXRcbiAgICAgICAgICAgOyBjYWxsYmFjayA9IF9cbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IF9cbiAgICAgICAgICAgOyBpbnRlcnZhbFxuICAgICAgICAgICA7IG5leHRfZmlyZWQgPSBfXG4gICAgICAgICAgIDsgcHJldl9maXJlZCA9IF9cbiAgICAgICAgICAgOyBzdGF0dXNcbiAgICAgICAgICAgfSA6XG4gICAgICAgICAgICAgZXZlbnQpXG4gICAgICA9XG4gICAgICBbJXNleHBcbiAgICAgICAgeyBzdGF0dXMgOiBTdGF0dXMudFxuICAgICAgICA7IGF0IDogVGltZV9ucy50XG4gICAgICAgIDsgaW50ZXJ2YWwgOiAoVGltZV9ucy5TcGFuLnQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgIH1dXG4gICAgOztcblxuICAgIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICAgICgqIFRoaXMgcmVkZWZpbml0aW9uIG9mIFtFdmVudF0gaXMgaGVyZSBzbyB0aGUgdHlwZSBjaGVja3MgYXJlIHJpZ2h0IG5leHRcbiAgICAgICAgIHRvIFtPYmoubWFnaWNdcy4gKilcbiAgICAgIG1vZHVsZSBFdmVudF9pc19ibG9jayA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBUeXBlc1xuICAgICAgICBvcGVuIEV2ZW50XG5cbiAgICAgICAgdHlwZSBfdCA9IHQgPVxuICAgICAgICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgICAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgICAgICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgICAgICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgICAgICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgdCA9IFR5cGVzLkV2ZW50Lk9wdGlvbi50XG5cbiAgICAgICgqIFVzaW5nIGFuIGltbWVkaWF0ZSByYXRoZXIgdGhhbiBhIHN0YXRpY2FsbHktYWxsb2NhdGVkIHJlY29yZCBoZXJlIHNlZW1zIHRvXG4gICAgICAgICBpbXByb3ZlIHBlcmZvcm1hbmNlIG5vdGljZWFibHkgKFsuLi9iZW5jaC9iaW4vYmVuY2hfdGltZV9zb3VyY2UuZXhlXSBiZW5jaG1hcmtcbiAgICAgICAgIGlzIGZhc3RlciBieSB+MTBucyBwZXIgYWxhcm0pLCBwcmVzdW1hYmx5IGJlY2F1c2UgaXQgYXZvaWRzIHRoZSBleHBlbnNpdmVcbiAgICAgICAgIHBhcnRzIG9mIGNhbWxfbW9kaWZ5LiAqKVxuICAgICAgbGV0IG5vbmUgPSAoT2JqLm1hZ2ljIE5vbmUgOiB0KSAoKiBhbiBhcmJpdHJhcnkgaW1tZWRpYXRlICopXG4gICAgICBsZXQgc29tZSA9IChPYmoubWFnaWMgOiBUeXBlcy5FdmVudC50IC0+IHQpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gcGh5c19lcXVhbCB0IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBmaXJzdF9zb21lIHQxIHQyID0gaWYgaXNfc29tZSB0MSB0aGVuIHQxIGVsc2UgdDJcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSAoT2JqLm1hZ2ljIDogdCAtPiBUeXBlcy5FdmVudC50KVxuXG4gICAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgICAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG9wZW4gT3B0aW9uYWxfc3ludGF4XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gWyVzZXhwICgpXVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gWyVzZXhwIChldmVudCA6IGV2ZW50KV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gQm9vbC5zZWxlY3QgKGlzX25vbmUgdCkgZGVmYXVsdCAodW5zYWZlX3ZhbHVlIHQpXG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJXNleHAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuT3B0aW9uLnZhbHVlX2V4biBOb25lXVwiXVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gU29tZSBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBzb21lIGV2ZW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQudCA9XG4gICAgICB7ICgqIFthbGFybV0gaXMgbm9uLW51bGwgaWZmIHRoZSBldmVudCBpcyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbaW50ZXJ2YWxdIGlzIHRoZSBwZXJpb2QgZm9yIHRoZSBwZXJpb2RpYyBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgIDsgKCogW25leHRfZmlyZWRdIGFuZCBbcHJldl9maXJlZF0gY3JlYXRlIGEgZG91Ymx5LWxpbmtlZCAobm9uLWNpcmN1bGFyKSBsaXN0IG9mXG4gICAgICAgICAgIGZpcmVkIGV2ZW50cywgbGlua2VkIHZpYSB0aGVzZSBmaWVsZHMuIEFuIGV2ZW50IGlzIGFkZGVkIHRvIHRoZSBsaXN0IHdoZW5cbiAgICAgICAgICAgaXQgZmlyZXMsIGVpdGhlciBiZWNhdXNlIGl0IGlzIGFkZGVkIHdpdGggYSB0aW1lIGluIHRoZSBwYXN0LCBvclxuICAgICAgICAgICBiZWNhdXNlIHRpbWUgYWR2YW5jZXMuIFthZHZhbmNlX2J5X2FsYXJtc10gaXRlcmF0ZXMgb3ZlciB0aGUgZXZlbnRzXG4gICAgICAgICAgIGluIFtuZXh0X2ZpcmVkXSBhbmQgcnVucyB0aGVtLCBlbXB0eWluZyB0aGUgbGlzdC4gW25vbmVdIGlzIHVzZWQgdG9cbiAgICAgICAgICAgaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IFslc2V4cF9vZjogZXZlbnRdXG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgICBGaWVsZHMuaXRlclxuICAgICAgICAgIH5hbGFybTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgICAgICAoQWxhcm0uaXNfbnVsbCBhbGFybSlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZpcmVkIHwgSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IHwgVW5zY2hlZHVsZWQgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB8IFNjaGVkdWxlZCAtPiBmYWxzZSkpKVxuICAgICAgICAgIH5hdDppZ25vcmVcbiAgICAgICAgICB+Y2FsbGJhY2s6aWdub3JlXG4gICAgICAgICAgfmV4ZWN1dGlvbl9jb250ZXh0Omlnbm9yZVxuICAgICAgICAgIH5pbnRlcnZhbDppZ25vcmVcbiAgICAgICAgICB+bmV4dF9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChuZXh0X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbbmV4dF9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGVuZCBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIG5leHRfZmlyZWQucHJldl9maXJlZCkpKVxuICAgICAgICAgIH5wcmV2X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKHByZXZfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtwcmV2X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgcHJldl9maXJlZC5uZXh0X2ZpcmVkKSkpXG4gICAgICAgICAgfnN0YXR1czpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIChzdGF0dXMgOiBTdGF0dXMudCkgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAtPiBhc3NlcnQgKENvcmUuT3B0aW9uLmlzX3NvbWUgdC5pbnRlcnZhbClcbiAgICAgICAgICAgICAgIHwgRmlyZWQgfCBVbnNjaGVkdWxlZCB8IFNjaGVkdWxlZCAtPiAoKSkpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V0X3N0YXR1cyB0IHRvXyA9XG4gICAgICBsZXQgZnJvbSA9IHQuc3RhdHVzIGluXG4gICAgICBpZiBub3QgKFN0YXR1cy50cmFuc2l0aW9uX2lzX2FsbG93ZWQgfmZyb20gfnRvXylcbiAgICAgIHRoZW5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgWyVoZXJlXVxuICAgICAgICAgICAgICBcImJ1ZyAtLSBzZXRfc3RhdHVzIHRyYW5zaXRpb24gbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgICAoZnJvbSA6IFN0YXR1cy50KVxuICAgICAgICAgICAgICAodG9fIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgIH5ldmVudDoodCA6IHQpXTtcbiAgICAgIHQuc3RhdHVzIDwtIHRvX1xuICAgIDs7XG5cbiAgICBsZXQgc2V0X3N0YXR1c19pZiB+aXMgdCB0b18gPSBpZiBTdGF0dXMuZXF1YWwgaXMgdC5zdGF0dXMgdGhlbiBzZXRfc3RhdHVzIHQgdG9fXG4gICAgbGV0IHNjaGVkdWxlZF9hdCA9IGF0XG4gIGVuZFxuXG4gIG1vZHVsZSBKb2Jfb3JfZXZlbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEpvYl9vcl9ldmVudFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgICAgbGV0IChLIGspID0ga2luZCB0IGluXG4gICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgdCB3aXRoXG4gICAgICB8IEV2ZW50LCBldmVudCAtPiBbJXNleHAgKGV2ZW50IDogRXZlbnQudCldXG4gICAgICB8IEpvYiwgXyAtPlxuICAgICAgICAoKiBXZSBkb24ndCBkaXNwbGF5IHRoZSBbSm9iLnRdcyBpbiBbZXZlbnRzXSBiZWNhdXNlIHRob3NlIGFyZVxuICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgWyVtZXNzYWdlIFwiPEpvYi50PlwiXVxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgLSdydyB0ID0gJ3J3IFR5cGVzLlRpbWVfc291cmNlLnQxID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgKCogW2FkdmFuY2VfZXJyb3JzXSBhY2N1bXVsYXRlcyBlcnJvcnMgcmFpc2VkIGJ5IGFsYXJtcyBydW4gYnlcbiAgICAgICAgIFthZHZhbmNlX2J5X2FsYXJtc10uICopXG4gICAgICBtdXRhYmxlIGFkdmFuY2VfZXJyb3JzIDogRXJyb3IudCBsaXN0XG4gICAgOyAoKiBbYW1fYWR2YW5jaW5nXSBpcyB0cnVlIG9ubHkgZHVyaW5nIFthZHZhbmNlX2J5X2FsYXJtc10sIGFuZCBpcyB1c2VkIHRvIGNhdXNlXG4gICAgICAgICBjYWxsYmFja3MgdG8gcmFpc2UgaWYgdGhleSBjYWxsIFthZHZhbmNlX2J5X2FsYXJtc10uICopXG4gICAgICBtdXRhYmxlIGFtX2FkdmFuY2luZyA6IGJvb2xcbiAgICA7IGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC50XG4gICAgOyAoKiBbZmlyZWRfZXZlbnRzXSBpcyB0aGUgZnJvbnQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdCBvZiBmaXJlZCBldmVudHMsXG4gICAgICAgICB3aGljaCBpcyBzdG9yZWQgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBbRXZlbnQuYXRdLiAqKVxuICAgICAgbXV0YWJsZSBmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udFxuICAgIDsgKCogW21vc3RfcmVjZW50bHlfZmlyZWRdIGlzIHRoZSBldmVudCB0aGF0IHdhcyBtb3N0IHJlY2VudGx5IGluc2VydGVkIGludG9cbiAgICAgICAgIFtmaXJlZF9ldmVudHNdLiBJdCBpcyB1c2VkIGFzIGFuIG9wdGltaXphdGlvbiB0byBhbGxvdyBpbnNlcnRpb24gb2ZcbiAgICAgICAgIHN1YnNlcXVlbnQgZXZlbnRzIHRvIHN0YXJ0IGxhdGVyIGluIHRoZSBsaXN0IHJhdGhlciB0aGFuIGF0IHRoZSBiZWdpbm5pbmcuXG4gICAgICAgICBJdCBzcGVjaWZpY2FsbHkgYXZvaWRzIHF1YWRyYXRpYyBiZWhhdmlvciB3aGVuIGluc2VydGluZyBtdWx0aXBsZSBldmVudHNcbiAgICAgICAgIHRoYXQgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHRpbWUgLS0gdGhlIHRpbWUgc291cmNlIGZpcmVzIHN1Y2ggZXZlbnRzIGluXG4gICAgICAgICB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIGluIHRoYXQgc2FtZSBvcmRlciBpblxuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uICopXG4gICAgICBtdXRhYmxlIG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udFxuICAgIDsgKCogV2Ugc3RvcmUgW2hhbmRsZV9maXJlZF0gaW4gW3RdIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgZXZlcnkgdGltZSB3ZSBjYWxsXG4gICAgICAgICBbYWR2YW5jZV9jbG9ja10uICopXG4gICAgICBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBBbGFybS50IC0+IHVuaXRcbiAgICA7IGlzX3dhbGxfY2xvY2sgOiBib29sXG4gICAgOyBzY2hlZHVsZXIgOiBTY2hlZHVsZXIwLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAoKiBXZSBkb24ndCBpbmNsdWRlIHRoZSBbaWRdIGluIHRoZSBzZXhwIGJlY2F1c2UgdGhlIHVzZXIgKHJpZ2h0bHkpIGNhbid0IGNvbnRyb2wgaXQsIHNvXG4gICAgIGl0J3MgaGFyZCB0byBtYWtlIGl0IGRldGVybWluaXN0aWMgaW4gdGVzdHMuICopXG4gIGxldCBzZXhwX29mX3RcbiAgICAgICAgX1xuICAgICAgICB7IGlkID0gX1xuICAgICAgICA7IGFkdmFuY2VfZXJyb3JzID0gX1xuICAgICAgICA7IGFtX2FkdmFuY2luZyA9IF9cbiAgICAgICAgOyBldmVudHNcbiAgICAgICAgOyBmaXJlZF9ldmVudHMgPSBfXG4gICAgICAgIDsgaGFuZGxlX2ZpcmVkID0gX1xuICAgICAgICA7IGlzX3dhbGxfY2xvY2tcbiAgICAgICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gX1xuICAgICAgICA7IHNjaGVkdWxlciA9IF9cbiAgICAgICAgfVxuICAgID1cbiAgICBsZXQgbm93ID0gVGltaW5nX3doZWVsLm5vdyBldmVudHMgaW5cbiAgICBpZiBpc193YWxsX2Nsb2NrXG4gICAgdGhlbiBbJW1lc3NhZ2UgXCJ3YWxsX2Nsb2NrXCIgKG5vdyA6IFRpbWVfbnMudCldXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYWxsX2V2ZW50cyA9IHJlZiBbXSBpblxuICAgICAgVGltaW5nX3doZWVsLml0ZXIgZXZlbnRzIH5mOihmdW4gYWxhcm0gLT5cbiAgICAgICAgYWxsX2V2ZW50cyA6PSAoQWxhcm0uYXQgZXZlbnRzIGFsYXJtLCBBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pIDo6ICFhbGxfZXZlbnRzKTtcbiAgICAgIGxldCBldmVudHMgPVxuICAgICAgICBMaXN0LnNvcnQgIWFsbF9ldmVudHMgfmNvbXBhcmU6KGZ1biAoYXQxLCBfKSAoYXQyLCBfKSAtPiBUaW1lX25zLmNvbXBhcmUgYXQxIGF0MilcbiAgICAgICAgfD4gTGlzdC5tYXAgfmY6c25kXG4gICAgICBpblxuICAgICAgWyVtZXNzYWdlIFwiXCIgKG5vdyA6IFRpbWVfbnMudCkgKGV2ZW50cyA6IEpvYl9vcl9ldmVudC50IGxpc3QpXSlcbiAgOztcblxuICBsZXQgdGltaW5nX3doZWVsX25vdyB0ID0gVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50c1xuXG4gIGxldCBpc19pbl9maXJlZF9ldmVudHMgPVxuICAgIGxldCByZWMgc2VhcmNoIGN1cnJlbnQgfnRhcmdldF9ldmVudCA9XG4gICAgICBtYXRjaCVvcHRpb25hbCAoY3VycmVudCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBjdXJyZW50IC0+XG4gICAgICAgIHBoeXNfZXF1YWwgY3VycmVudCB0YXJnZXRfZXZlbnQgfHwgc2VhcmNoIGN1cnJlbnQubmV4dF9maXJlZCB+dGFyZ2V0X2V2ZW50XG4gICAgaW5cbiAgICBmdW4gdCB0YXJnZXRfZXZlbnQgLT4gc2VhcmNoIHQuZmlyZWRfZXZlbnRzIH50YXJnZXRfZXZlbnRcbiAgOztcblxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyAodHlwZSBydykgfmpvYjooam9iX2ludmFyaWFudCA6IEpvYi50IC0+IHVuaXQpICh0IDogcncgdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5pZDppZ25vcmVcbiAgICAgICAgfmFkdmFuY2VfZXJyb3JzOmlnbm9yZVxuICAgICAgICB+YW1fYWR2YW5jaW5nOmlnbm9yZVxuICAgICAgICB+ZXZlbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuIGV2ZW50cyAtPlxuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pbnZhcmlhbnQgaWdub3JlIGV2ZW50cztcbiAgICAgICAgICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICAgICAgICAgbGV0IGpvYl9vcl9ldmVudCA9IEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSBpblxuICAgICAgICAgICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICAgICAgICAgICBsZXQgKEsgaykgPSBraW5kIGpvYl9vcl9ldmVudCBpblxuICAgICAgICAgICAgICAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gICAgICAgICAgICAgICB8IEpvYiwgam9iIC0+IGpvYl9pbnZhcmlhbnQgam9iXG4gICAgICAgICAgICAgICB8IEV2ZW50LCBldmVudCAtPlxuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgYWxhcm0gZXZlbnQuYWxhcm0pO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdIGV2ZW50LmF0IH5leHBlY3Q6KEFsYXJtLmF0IGV2ZW50cyBhbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEV2ZW50LlN0YXR1cy50XSBldmVudC5zdGF0dXMgfmV4cGVjdDpTY2hlZHVsZWQ7XG4gICAgICAgICAgICAgICAgIEV2ZW50LmludmFyaWFudCBldmVudCkpKVxuICAgICAgICB+ZmlyZWRfZXZlbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuIChmaXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgLT5cbiAgICAgICAgICAgICBsZXQgcmVjIGNoZWNrX2V2ZW50IChjdXJyZW50IDogRXZlbnQudCkgPVxuICAgICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBjdXJyZW50LmF0ICh0aW1pbmdfd2hlZWxfbm93IHQpKTtcbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsLkV2ZW50Lk9wdGlvbiBjdXJyZW50Lm5leHRfZmlyZWQgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgbmV4dC5hdCk7XG4gICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50IG5leHRcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsLkV2ZW50Lk9wdGlvbiBmaXJlZF9ldmVudHMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBldmVudCAtPiBjaGVja19ldmVudCBldmVudCkpXG4gICAgICAgIH5oYW5kbGVfZmlyZWQ6aWdub3JlXG4gICAgICAgIH5pc193YWxsX2Nsb2NrOmlnbm9yZVxuICAgICAgICB+bW9zdF9yZWNlbnRseV9maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBtb3N0X3JlY2VudGx5X2ZpcmVkIC0+XG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKG1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBldmVudCAtPiBhc3NlcnQgKGlzX2luX2ZpcmVkX2V2ZW50cyB0IGV2ZW50KSkpXG4gICAgICAgIH5zY2hlZHVsZXI6aWdub3JlKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9IGludmFyaWFudF93aXRoX2pvYnMgfmpvYjooZnVuIF8gLT4gKCkpIHRcbmVuZFxuXG5vcGVuIFQxXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gcmVhZF93cml0ZSBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmVuZFxuXG5sZXQgaWQgdCA9IHQuaWRcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBsZW5ndGggdCA9IFRpbWluZ193aGVlbC5sZW5ndGggdC5ldmVudHNcbmxldCBtYXhfYWxsb3dlZF9hbGFybV90aW1lIHQgPSBUaW1pbmdfd2hlZWwubWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0LmV2ZW50c1xubGV0IHJlYWRfb25seSAodCA6IFs+IHJlYWQgXSBUMS50KSA9ICh0IDo+IHQpXG5cbigqIFtmaXJlIHQgZXZlbnRdIHNldHMgW2V2ZW50LnN0YXR1cyA9IEZpcmVkXSBhbmQgaW5zZXJ0cyBbZXZlbnRdIGludG9cbiAgIFt0LmZpcmVkX2V2ZW50c10gaW4gc29ydGVkIHRpbWUgb3JkZXIuICopXG5sZXQgZmlyZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBGaXJlZDtcbiAgZXZlbnQuYWxhcm0gPC0gQWxhcm0ubnVsbCAoKTtcbiAgbGV0ICgpID1cbiAgICAoKiBJZiBbZXZlbnRdIGJlbG9uZ3MgYWZ0ZXIgW3QubW9zdF9yZWNlbnRseV9maXJlZF0sIHRoZW4gd2Ugc3RhcnQgdGhlXG4gICAgICAgaW5zZXJ0aW9uIHRoZXJlIHJhdGhlciB0aGFuIGF0IHRoZSBmcm9udCBvZiBbdC5maXJlZF9ldmVudHNdLiBUaGlzIHdvcmtzXG4gICAgICAgbmljZWx5IGlmIHdlJ3JlIGdldHRpbmcgdGhlIGFsYXJtcyBpbiBub24tZGVjcmVhc2luZyB0aW1lIG9yZGVyLCB3aGljaCBpc1xuICAgICAgIGNsb3NlIHRvIHdoYXQgW1RpbWluZ193aGVlbF0gcHJvdmlkZXMgKGFsdGhvdWdoIFtUaW1pbmdfd2hlZWxdIGRvZXNuJ3RcbiAgICAgICBndWFyYW50ZWUgdGltZSBvcmRlcmluZyBmb3IgdGltZXMgaW4gdGhlIHNhbWUgaW50ZXJ2YWwpLiAqKVxuICAgIG1hdGNoJW9wdGlvbmFsICh0Lm1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgU29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkIHdoZW4gVGltZV9ucy4oIDw9ICkgbW9zdF9yZWNlbnRseV9maXJlZC5hdCBldmVudC5hdCAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkO1xuICAgICAgZXZlbnQubmV4dF9maXJlZCA8LSBtb3N0X3JlY2VudGx5X2ZpcmVkLm5leHRfZmlyZWRcbiAgICB8IF8gLT5cbiAgICAgIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIHQuZmlyZWRfZXZlbnRzXG4gIGluXG4gIHQubW9zdF9yZWNlbnRseV9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudDtcbiAgKCogV2UgdXNlIFtUaW1lX25zLiggPD0gKV0gcmF0aGVyIHRoYW4gWzxdIHNvIHRoYXQgW2V2ZW50XSBpcyBhZGRlZCBhZnRlciBvdGhlclxuICAgICBldmVudHMgYXQgdGhlIHNhbWUgdGltZS4gU2luY2UgW1RpbWluZ193aGVlbF0gZmlyZXMgYWxhcm1zIGluIGEgYnVja2V0IGluXG4gICAgIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQsIHVzaW5nIFs8PV0ga2VlcHMgZXZlbnRzIGF0IHRoZSBzYW1lXG4gICAgIHRpbWUgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZC4gKilcbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIG5leHQgLT5cbiAgICAgIGxldCBjb250aW51ZSA9IFRpbWVfbnMuKCA8PSApIG5leHQuYXQgZXZlbnQuYXQgaW5cbiAgICAgIGlmIGNvbnRpbnVlXG4gICAgICB0aGVuIChcbiAgICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBldmVudC5uZXh0X2ZpcmVkO1xuICAgICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG5leHQubmV4dF9maXJlZCk7XG4gICAgICBjb250aW51ZVxuICBkb1xuICAgICgpXG4gIGRvbmU7XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXh0IC0+IG5leHQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuICBpblxuICBtYXRjaCVvcHRpb25hbCAoZXZlbnQucHJldl9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuICB8IFNvbWUgcHJldiAtPiBwcmV2Lm5leHRfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLnNvbWUgZXZlbnRcbjs7XG5cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xuXG5sZXQgbmV4dF9hbGFybV9ydW5zX2F0IHQgPVxuICBpZiBFdmVudC5PcHRpb24uaXNfc29tZSB0LmZpcmVkX2V2ZW50c1xuICB0aGVuIFNvbWUgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgZWxzZSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xuOztcblxubGV0IG5vdyB0ID0gaWYgdC5pc193YWxsX2Nsb2NrIHRoZW4gVGltZV9ucy5ub3cgKCkgZWxzZSB0aW1pbmdfd2hlZWxfbm93IHRcbmxldCB0aW1pbmdfd2hlZWxfbm93ID0gdGltaW5nX3doZWVsX25vd1xuXG5sZXQgc2NoZWR1bGUgdCAoZXZlbnQgOiBFdmVudC50KSA9XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgU2NoZWR1bGVkO1xuICBldmVudC5hbGFybSA8LSBUaW1pbmdfd2hlZWwuYWRkIHQuZXZlbnRzIH5hdDpldmVudC5hdCAoZXZlbnQgfD4gSm9iX29yX2V2ZW50Lm9mX2V2ZW50KVxuOztcblxubGV0IHJlbW92ZV9mcm9tX2ZpcmVkIHQgKGV2ZW50IDogRXZlbnQudCkgfm5ld19zdGF0dXMgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsICh0Lm1vc3RfcmVjZW50bHlfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBtb3N0X3JlY2VudGx5X2ZpcmVkIC0+XG4gICAgICBpZiBwaHlzX2VxdWFsIGV2ZW50IG1vc3RfcmVjZW50bHlfZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5maXJzdF9zb21lIGV2ZW50Lm5leHRfZmlyZWQgZXZlbnQucHJldl9maXJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gdC5maXJlZF9ldmVudHMgPC0gZXZlbnQubmV4dF9maXJlZFxuICAgIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBldmVudC5uZXh0X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50Lm5leHRfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuZXh0IC0+IG5leHQucHJldl9maXJlZCA8LSBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGV2ZW50Lm5leHRfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gIGV2ZW50LnByZXZfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLm5vbmU7XG4gIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgbmV3X3N0YXR1c1xuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgRXZlbnRcblxuICBsZXQgY3JlYXRlX2ludGVybmFsIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgPVxuICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgOyBhdFxuICAgIDsgY2FsbGJhY2tcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gdC5zY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICAgIDsgaW50ZXJ2YWxcbiAgICA7IG5leHRfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgcHJldl9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzdGF0dXMgPSBVbnNjaGVkdWxlZFxuICAgIH1cbiAgOztcblxuICBsZXQgYWRkIHQgZXZlbnQgPVxuICAgIGlmIFRpbWVfbnMuKCA8PSApIGV2ZW50LmF0ICh0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgdGhlbiBmaXJlIHQgZXZlbnRcbiAgICBlbHNlIHNjaGVkdWxlIHQgZXZlbnRcbiAgOztcblxuICBsZXQgY3JlYXRlX2FuZF9hZGQgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgbGV0IGV2ZW50ID0gY3JlYXRlX2ludGVybmFsIHQgfmF0IH5pbnRlcnZhbCB+Y2FsbGJhY2sgaW5cbiAgICBhZGQgdCBldmVudDtcbiAgICBldmVudFxuICA7O1xuXG4gIGxldCBhdCB0IGF0IGNhbGxiYWNrID0gY3JlYXRlX2FuZF9hZGQgdCB+YXQgfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IGFmdGVyIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKSB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcbiAgOztcblxuICBsZXQgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW4gPVxuICAgIGxldCBhbGFybV9wcmVjaXNpb24gPSBhbGFybV9wcmVjaXNpb24gdCBpblxuICAgIGlmIFRpbWVfbnMuU3Bhbi4oIDwgKSBzcGFuIGFsYXJtX3ByZWNpc2lvblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJpbnRlcnZhbCBzcGFuIHNtYWxsZXIgdGhhbiBhbGFybSBwcmVjaXNpb25cIlxuICAgICAgICAgICAgKHNwYW4gOiBUaW1lX25zLlNwYW4udClcbiAgICAgICAgICAgIChhbGFybV9wcmVjaXNpb24gOiBUaW1lX25zLlNwYW4udCldXG4gIDs7XG5cbiAgbGV0IGF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICAgIHJlcXVpcmVfc3Bhbl9hdF9sZWFzdF9hbGFybV9wcmVjaXNpb24gdCBzcGFuO1xuICAgIGNyZWF0ZV9hbmRfYWRkIHQgfmF0Oihub3cgdCkgfmludGVydmFsOihTb21lIHNwYW4pIH5jYWxsYmFja1xuICA7O1xuXG4gIG1vZHVsZSBBYm9ydF9yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBPa1xuICAgICAgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgKGV2ZW50IDogdCkgOiBBYm9ydF9yZXN1bHQudCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCAtPlxuICAgICAgKG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIChfIDogVGltZV9ucy5TcGFuLnQpIC0+XG4gICAgICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgICAgZXZlbnQuc3RhdHVzIDwtIFVuc2NoZWR1bGVkO1xuICAgICAgICAgT2spXG4gICAgfCBGaXJlZCAtPlxuICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1czpVbnNjaGVkdWxlZDtcbiAgICAgIE9rXG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIEV2ZW50LnNldF9zdGF0dXMgZXZlbnQgVW5zY2hlZHVsZWQ7XG4gICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgZXZlbnQuYWxhcm0gPC0gQWxhcm0ubnVsbCAoKTtcbiAgICAgIE9rXG4gICAgfCBVbnNjaGVkdWxlZCAtPiBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgZXZlbnQgPSBpZ25vcmUgKGFib3J0IHQgZXZlbnQgOiBBYm9ydF9yZXN1bHQudClcblxuICBsZXQgYWJvcnRfZXhuIHQgZXZlbnQgPVxuICAgIG1hdGNoIGFib3J0IHQgZXZlbnQgd2l0aFxuICAgIHwgT2sgLT4gKClcbiAgICB8IHJlYXNvbiAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltTeW5jaHJvbm91c190aW1lX3NvdXJjZS5hYm9ydF9leG5dIGNhbm5vdCBhYm9ydCBldmVudFwiXG4gICAgICAgICAgICAocmVhc29uIDogQWJvcnRfcmVzdWx0LnQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgdCBjYWxsYmFjayA9IGNyZWF0ZV9pbnRlcm5hbCB0IH5hdDpUaW1lX25zLmVwb2NoIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuXG4gIGxldCBpc19zY2hlZHVsZWQgKGV2ZW50IDogdCkgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBTY2hlZHVsZWQgfCBGaXJlZCAtPiB0cnVlXG4gICAgfCBVbnNjaGVkdWxlZCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IChldmVudCA6IHQpIGF0IH5pbnRlcnZhbCA9XG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IChIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBTY2hlZHVsZWQgfCBGaXJlZCkgYXMgc3RhdHVzIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslc2V4cCBcImNhbm5vdCBzY2hlZHVsZSBhbiBldmVudCB3aXRoIHN0YXR1c1wiLCAoc3RhdHVzIDogRXZlbnQuU3RhdHVzLnQpXVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gaW50ZXJ2YWw7XG4gICAgICBhZGQgdCBldmVudDtcbiAgICAgIE9rICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgPSBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IGF0IH5pbnRlcnZhbDpOb25lXG4gIGxldCBzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSBzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJ2YWxzIHQgZXZlbnQgc3BhbiA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCAobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKVxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgOiB1bml0ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgLT5cbiAgICAgICgqIEhhcHBlbmluZ19wZXJpb2RpY19ldmVudCBldmVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIFtmaXJlZF0uICopXG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgaWYgVGltZV9ucy4oID4gKSBhdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgdGhlbiBUaW1pbmdfd2hlZWwucmVzY2hlZHVsZSB0LmV2ZW50cyBldmVudC5hbGFybSB+YXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgICBmaXJlIHQgZXZlbnQpXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgYWRkIHQgZXZlbnRcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSByZXNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG5lbmRcblxubGV0IHJ1bl9hZnRlciB0IHNwYW4gY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmFmdGVyIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG5sZXQgcnVuX2F0IHQgYXQgY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmF0IHQgYXQgY2FsbGJhY2sgOiBFdmVudC50KVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICBpZ25vcmUgKEV2ZW50LmF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxuOztcblxudHlwZSBzZW5kX2V4biA9IE1vbml0b3IwLnQgLT4gP2JhY2t0cmFjZTpbIGBHZXQgfCBgVGhpcyBvZiBCYWNrdHJhY2UudCBdIC0+IGV4biAtPiB1bml0XG5cbmxldCBydW5fZmlyZWRfZXZlbnRzIHQgfihzZW5kX2V4biA6IHNlbmRfZXhuIG9wdGlvbikgPVxuICBsZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAodC5maXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgKG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgICAgfCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IEZpcmVkIC0+XG4gICAgICAgICBsZXQgbmV3X3N0YXR1cyA9XG4gICAgICAgICAgIG1hdGNoIGV2ZW50LmludGVydmFsIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IChVbnNjaGVkdWxlZCA6IEV2ZW50LlN0YXR1cy50KVxuICAgICAgICAgICB8IFNvbWUgXyAtPiAoSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50IDogRXZlbnQuU3RhdHVzLnQpXG4gICAgICAgICBpblxuICAgICAgICAgcmVtb3ZlX2Zyb21fZmlyZWQgdCBldmVudCB+bmV3X3N0YXR1cztcbiAgICAgICAgICgqIFdlIHNldCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBbZXZlbnQuY2FsbGJhY2tdIHJ1bnMgaW4gdGhlIHNhbWUgY29udGV4dFxuICAgICAgICAgICAgdGhhdCB3YXMgaW4gcGxhY2Ugd2hlbiBbZXZlbnRdIHdhcyBjcmVhdGVkLiAqKVxuICAgICAgICAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICAgICAoKiBBbnkgbW9kaWZpY2F0aW9uIG9mIFtzdGF0dXNdIGJlbG93IG5lZWRzIHRvIGZpcnN0IGNoZWNrIHRoYXQgdGhlIGV2ZW50IGlzXG4gICAgICAgICAgICBzdGlsbCBbSGFwcGVuaW5nX3BlcmlvZGljX2V2ZW50XS4gSWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBub3RcbiAgICAgICAgICAgIFtIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnRdIHRoZW4gdGhlIGV2ZW50J3MgY2FsbGJhY2sgbXVzdCBoYXZlIHJlc2NoZWR1bGVkIHRoZVxuICAgICAgICAgICAgZXZlbnQuIEluIHRoYXQgY2FzZSwgZG8gbm90IHNldCB0aGUgc3RhdHVzIG9yIGF0dGVtcHQgdG8gcmVzY2hlZHVsZSBhXG4gICAgICAgICAgICByZXBlYXRpbmcgZXZlbnQuXG5cbiAgICAgICAgICAgIFRoaXMgY29kZSBjb3VsZCBiZSBtdWNoIHNpbXBsZXIgaWYgd2UgaW1tZWRpYXRlbHkgcmVzY2hlZHVsZWQgdGhlIGV2ZW50IGJlZm9yZVxuICAgICAgICAgICAgcnVubmluZyB0aGUgY2FsbGJhY2sgKG5vIG5lZWQgZm9yIHRoZSBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgc3RhdGUgdGhlbikuXG4gICAgICAgICAgICBPbmUgcmVhc29uIHdlIGRvbid0IGRvIHRoYXQgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGF1dG9tYXRpY2FsbHkgcmVzY2hlZHVsZVxuICAgICAgICAgICAgYSBwZXJpb2RpYyBldmVudCBpZiBpdHMgY2FsbGJhY2sgcmFpc2VzLiAqKVxuICAgICAgICAgKG1hdGNoIGV2ZW50LmNhbGxiYWNrICgpIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIChtYXRjaCBzZW5kX2V4biB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IHQuYWR2YW5jZV9lcnJvcnMgPC0gRXJyb3Iub2ZfZXhuIGV4biA6OiB0LmFkdmFuY2VfZXJyb3JzXG4gICAgICAgICAgICAgfCBTb21lIHNlbmRfZXhuIC0+XG4gICAgICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgICAgICAgICAgc2VuZF9leG4gZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQubW9uaXRvciBleG4gfmJhY2t0cmFjZTooYFRoaXMgYmFja3RyYWNlKSk7XG4gICAgICAgICAgICBFdmVudC5zZXRfc3RhdHVzX2lmIH5pczpIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnQgVW5zY2hlZHVsZWRcbiAgICAgICAgICB8ICgpIC0+XG4gICAgICAgICAgICAobWF0Y2ggZXZlbnQuaW50ZXJ2YWwgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiBFdmVudC5zZXRfc3RhdHVzX2lmIH5pczpIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnQgVW5zY2hlZHVsZWRcbiAgICAgICAgICAgICB8IFNvbWUgaW50ZXJ2YWwgLT5cbiAgICAgICAgICAgICAgIGlmIEV2ZW50LlN0YXR1cy5lcXVhbCBIYXBwZW5pbmdfcGVyaW9kaWNfZXZlbnQgZXZlbnQuc3RhdHVzXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgKCogVGhlIGV2ZW50J3MgY2FsbGJhY2sgZGlkIG5vdCByZXNjaGVkdWxlIHRoZSBldmVudC4gU28gcmVzY2hlZHVsZSB0aGVcbiAgICAgICAgICAgICAgICAgICAgcmVwZWF0aW5nIHRpbWVyIGJhc2VkIG9uIHRoZSBsYXN0IFthdF0gdGltZS4gKilcbiAgICAgICAgICAgICAgICAgZXZlbnQuYXRcbiAgICAgICAgICAgICAgICAgPC0gVGltZV9ucy5uZXh0X211bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICB+YmFzZTpldmVudC5hdFxuICAgICAgICAgICAgICAgICAgICAgIH5hZnRlcjoodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgICAgICAgICAgICAgICAgIH5pbnRlcnZhbDtcbiAgICAgICAgICAgICAgICAgc2NoZWR1bGUgdCBldmVudCkpKTtcbiAgICAgICAgIHRydWUpXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IGFueV9maXJlZF9ldmVudHNfdG9fcnVuIHQgPSBFdmVudC5PcHRpb24uaXNfc29tZSAodC5maXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udClcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrIHQuZXZlbnRzIH50b18gfmhhbmRsZV9maXJlZDp0LmhhbmRsZV9maXJlZDtcbiAgcnVuX2ZpcmVkX2V2ZW50cyB0IH5zZW5kX2V4blxuOztcblxubGV0IGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG4gPVxuICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyB0LmV2ZW50cyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuID1cbiAgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuO1xuICBmaXJlX3Bhc3RfYWxhcm1zIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuID1cbiAgaWYgdC5hbV9hZHZhbmNpbmdcbiAgdGhlblxuICAgIHJhaXNlX3MgWyVzZXhwIFwiY2Fubm90IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXSBvciBbYWR2YW5jZV9kaXJlY3RseV0gZnJvbSBjYWxsYmFja1wiXTtcbiAgdC5hbV9hZHZhbmNpbmcgPC0gdHJ1ZTtcbiAgKG1hdGNoIHQuYWR2YW5jZV9lcnJvcnMgd2l0aFxuICAgfCBbXSAtPiAoKVxuICAgfCBfIC0+IHQuYWR2YW5jZV9lcnJvcnMgPC0gW10pO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmluaXNoX2FkdmFuY2luZyB0ID1cbiAgdC5hbV9hZHZhbmNpbmcgPC0gZmFsc2U7XG4gIG1hdGNoIHQuYWR2YW5jZV9lcnJvcnMgd2l0aFxuICB8IFtdIC0+IE9rICgpXG4gIHwgZXJyb3JzIC0+XG4gICAgdC5hZHZhbmNlX2Vycm9ycyA8LSBbXTtcbiAgICBFcnJvciAoRXJyb3Iub2ZfbGlzdCBlcnJvcnMpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXMgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFjb250aW51ZSBkb1xuICAgIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB0LmV2ZW50c1xuICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICBlbHNlIChcbiAgICAgIGxldCBtaW5fYWxhcm1fdGltZSA9IFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzIGluXG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZSB0b19cbiAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgIGVsc2VcbiAgICAgICAgKCogV2UgdXNlIHRoZSBhY3R1YWwgYWxhcm0gdGltZSwgcmF0aGVyIHRoYW4gW25leHRfYWxhcm1fZmlyZXNfYXRdLCBzbyBhcyBub3QgdG9cbiAgICAgICAgICAgZXhwb3NlIChvciBhY2N1bXVsYXRlIGVycm9ycyBhc3NvY2lhdGVkIHdpdGgpIHRoZSBwcmVjaXNpb24gb2ZcbiAgICAgICAgICAgW1RpbWluZ193aGVlbF0uICopXG4gICAgICAgIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fOm1pbl9hbGFybV90aW1lIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtc19ieSB0IGJ5ID0gYWR2YW5jZV9ieV9hbGFybXMgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgdCB+dG9fID1cbiAgbGV0IHNlbmRfZXhuID0gTm9uZSBpblxuICBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG47XG4gIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFjb250aW51ZSBkb1xuICAgIGlmIFRpbWluZ193aGVlbC5pc19lbXB0eSB0LmV2ZW50c1xuICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICBlbHNlIChcbiAgICAgIGxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIHQuZXZlbnRzIGluXG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBuZXh0X2FsYXJtX2ZpcmVzX2F0IHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbFxuICAgICAgICAgIHRcbiAgICAgICAgICB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cylcbiAgICAgICAgICB+c2VuZF9leG4pXG4gIGRvbmU7XG4gIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIH5zZW5kX2V4bjtcbiAgZmluaXNoX2FkdmFuY2luZyB0XG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseSB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2J5IHQgYnkgPSBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxuXG5sZXQgZHVyYXRpb25fb2YgdCBmID1cbiAgbGV0IHN0YXJ0ID0gbm93IHQgaW5cbiAgbGV0IHJlc3VsdCA9IGYgKCkgaW5cbiAgbGV0IGR1cmF0aW9uID0gVGltZV9ucy5kaWZmIChub3cgdCkgc3RhcnQgaW5cbiAgcmVzdWx0LCBkdXJhdGlvblxuOztcblxubGV0IG1heF9hbGFybV90aW1lX2luX21pbl90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgdCA9XG4gIFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHNcbjs7XG5cbmxldCBoYXNfZXZlbnRzX3RvX3J1biB0ID0gRXZlbnQuT3B0aW9uLmlzX3NvbWUgdC5maXJlZF9ldmVudHNcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbmluY2x1ZGUgU2NoZWR1bGVyMFxubW9kdWxlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UwXG5tb2R1bGUgRXZlbnQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudFxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5tb2R1bGUgSm9iX29yX2V2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEuSm9iX29yX2V2ZW50XG5cbmxldCBkZWJ1ZyA9IERlYnVnLnNjaGVkdWxlclxuXG5tb2R1bGUgSXZhciA9IHN0cnVjdFxuICBvcGVuIFR5cGVzLkl2YXJcblxuICBsZXQgY3JlYXRlX3dpdGhfY2VsbCBjZWxsID0geyBjZWxsIH1cbiAgbGV0IGNyZWF0ZSAoKSA9IGNyZWF0ZV93aXRoX2NlbGwgRW1wdHlcblxuICBsZXQgY3JlYXRlX2Z1bGwgKHR5cGUgYSkgKGEgOiBhKSA9XG4gICAgKCogV2UgYWxsb2NhdGUgYW4gaW1tdXRhYmxlIGl2YXIgYW5kIHRoZW4gY2FzdCBpdCB0byBhIG11dGFibGUgaXZhci4gIFRoZSBpbW11dGFiaWxpdHlcbiAgICAgICBhbGxvd3MgT0NhbWwgdG8gc3RhdGljYWxseSBhbGxvY2F0ZSB0aGUgaXZhciBpZiBbYV0gaXMgY29uc3RhbnQuICBUaGlzIGNhc3QgaXMgc2FmZVxuICAgICAgIGJlY2F1c2UgYSBmdWxsIGl2YXIgaXMgbmV2ZXIgbXV0YXRlZC4gIFdlIGFsc28gYmVsaWV2ZSB0aGF0IHdlIHdpbGwgbm90IHRyaWdnZXJcbiAgICAgICBmbGFtYmRhIHRvIHNwdXJpb3VzbHkgcmVwb3Igd2FybmluZyA1OSwgbXV0YXRpb24gb2Yga25vd24gaW1tdXRhYmxlIGRhdGEuICBBbGxcbiAgICAgICBtdXRhdGlvbnMgb2YgYW4gaXZhciBjZWxsLCBpLmUuIFtmb28uY2VsbCA8LSAuLi5dLCBhcmUgZGlyZWN0bHkgcHJlY2VkZWQgYnkgYVxuICAgICAgIFttYXRjaCBmb28uY2VsbF0gdGhhdCBwcmV2ZW50cyB0aGUgW0Z1bGxdIGNhc2UgZnJvbSByZWFjaGluZyB0aGUgbW9kaWZpY2F0aW9uLiAgU29cbiAgICAgICBmbGFtYmRhIHNob3VsZCBhbHdheXMgZWxpbWluYXRlIHRoZSBbZm9vLmNlbGwgPC0gLi4uXSBvZiBhIGNvbnN0YW50IFtGdWxsXSBpdmFyLFxuICAgICAgIGFuZCBub3Qgd2Fybi4gKilcbiAgICAoT2JqLm1hZ2ljIDogYSBJbW11dGFibGUudCAtPiBhIHQpIHsgY2VsbCA9IEZ1bGwgYSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIEJ2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5CdmFyXG5cbiAgbGV0IGNyZWF0ZSAoKSA9IG9mX3JlcHIgeyBoYXNfYW55X3dhaXRlcnMgPSBmYWxzZTsgaXZhciA9IEl2YXIuY3JlYXRlICgpIH1cbmVuZFxuXG5tb2R1bGUgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyID0gc3RydWN0XG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5FeGVjX3Jlc3VsdC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgTm90X2ZpbmlzaGVkXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gVHlwZXMuVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXIgfmV4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpIH5leGVjOmlnbm9yZSlcbiAgOztcbmVuZFxuXG50eXBlIHQgPSBTY2hlZHVsZXIwLnQgPVxuICB7ICgqIFtjaGVja19hY2Nlc3NdIG9wdGlvbmFsbHkgaG9sZHMgYSBmdW5jdGlvbiB0byBydW4gdG8gY2hlY2sgd2hldGhlciBhY2Nlc3MgdG8gW3RdIGlzXG4gICAgICAgY3VycmVudGx5IGFsbG93ZWQuICBJdCBpcyB1c2VkIHRvIGRldGVjdCBpbnZhbGlkIGFjY2VzcyB0byB0aGUgc2NoZWR1bGVyIGZyb20gYVxuICAgICAgIHRocmVhZC4gKilcbiAgICBtdXRhYmxlIGNoZWNrX2FjY2VzcyA6ICh1bml0IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgOiBKb2JfcXVldWUudFxuICA7IGxvd19wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICA7IG11dGFibGUgbWFpbl9leGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgOyBtdXRhYmxlIGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICgqIFRoZSBzY2hlZHVsZXIgY2FsbHMgW2dvdF91bmNhdWdodF9leG5dIHdoZW4gYW4gZXhjZXB0aW9uIGJ1YmJsZXMgdG8gdGhlIHRvcCBvZiB0aGVcbiAgICAgbW9uaXRvciB0cmVlIHdpdGhvdXQgYmVpbmcgaGFuZGxlZC4gIFRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0byBuZXZlciBydW4gYW5vdGhlclxuICAgICBqb2IgYWZ0ZXIgdGhpcyBieSBjYWxsaW5nIFtjbGVhcl0gYW5kIGJlY2F1c2UgW2VucXVldWVfam9iXSB3aWxsIG5ldmVyIGFkZCBhbm90aGVyXG4gICAgIGpvYi4gKilcbiAgOyBtdXRhYmxlIHVuY2F1Z2h0X2V4biA6IChFeG4udCAqIFNleHAudCkgb3B0aW9uXG4gIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICA7IG11dGFibGUgY3ljbGVfc3RhcnQgOiBUaW1lX25zLnRcbiAgOyBtdXRhYmxlIGluX2N5Y2xlIDogYm9vbFxuICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSBhcnJheVxuICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSBhcnJheVxuICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOlxuICAgICAgKFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnQsIChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIGxhc3RfY3ljbGVfbnVtX2pvYnMgOiBpbnRcbiAgOyBtdXRhYmxlIHRvdGFsX2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnRcbiAgKCogW2V4dGVybmFsX2pvYnNdIGlzIGEgcXVldWUgb2YgYWN0aW9ucyBzZW50IGZyb20gb3V0c2lkZSBvZiBhc3luYy4gIFRoaXMgaXMgZm9yIHRoZVxuICAgICBjYXNlIHdoZXJlIHdlIHdhbnQgdG8gc2NoZWR1bGUgYSBqb2Igb3IgZmlsbCBhbiBpdmFyIGZyb20gYSBjb250ZXh0IHdoZXJlIGl0IGlzIG5vdFxuICAgICBzYWZlIHRvIHJ1biBhc3luYyBjb2RlLCBiZWNhdXNlIHRoZSBhc3luYyBsb2NrIGlzbid0IGhlbGQuICBGb3IgaW5zdGFuY2U6IC0gaW4gYW5cbiAgICAgT0NhbWwgZmluYWxpemVyLCBhcyB0aGV5IGNhbiBydW4gYXQgYW55IHRpbWUgaW4gYW55IHRocmVhZC5cblxuICAgICBUaGUgd2F5IHRvIGRvIGl0IGlzIHRvIHF1ZXVlIGEgdGh1bmsgaW4gW2V4dGVybmFsX2pvYnNdIGFuZCBjYWxsXG4gICAgIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBub3RpZnlpbmcgdGhlIHNjaGVkdWxlclxuICAgICB0aGF0IG5ldyBhY3Rpb25zIGFyZSBhdmFpbGFibGUuXG5cbiAgICAgV2hlbiB1c2luZyBBc3luYyBvbiB1bml4LCBbdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tdIGlzIHNldCBpbiBbQXN5bmNfdW5peF1cbiAgICAgdG8gY2FsbCBbSW50ZXJydXB0b3IudGhyZWFkX3NhZmVfaW50ZXJydXB0XSwgd2hpY2ggd2lsbCB3YWtlIHVwIHRoZVxuICAgICBbQXN5bmNfdW5peF0gc2NoZWR1bGVyIGFuZCBydW4gYSBjeWNsZS5cblxuICAgICBOb3RlIHRoYXQgdGhpcyBob29rIG1pZ2h0IGJlIHVzZWQgaW4gb3RoZXIgY29udGV4dCAoanNfb2Zfb2NhbWwsIG1pcmFnZSkuXG5cbiAgICAgV2hlbiBydW5uaW5nIGEgY3ljbGUsIHdlIHB1bGwgZXh0ZXJuYWwgYWN0aW9ucyBhdCBldmVyeSBqb2IgYW5kIHBlcmZvcm0gdGhlbVxuICAgICBpbW1lZGlhdGVseS4gKilcbiAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgOiB1bml0IC0+IHVuaXRcbiAgKCogW2pvYl9xdWV1ZWRfaG9va10gYW5kIFtldmVudF9hZGRlZF9ob29rXSBhaW0gdG8gYmUgdXNlZCBieSBqc19vZl9vY2FtbC4gKilcbiAgKCogV2UgdXNlIFtfIG9wdGlvbl0gaGVyZSBiZWNhdXNlIHRob3NlIGhvb2tzIHdpbGwgbm90IGJlIHNldCBpbiB0aGUgY29tbW9uIGNhc2VcbiAgICAgYW5kIHdlIHdhbnQgdG8gYXZvaWQgZXh0cmEgZnVuY3Rpb24gY2FsbHMuICopXG4gIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGV2ZW50X2FkZGVkX2hvb2sgOiAoVGltZV9ucy50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgeWllbGQgOiAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdKVxuICA7IG11dGFibGVcbiAgICB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6XG4gICAgICAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdICgqIGNvbmZpZ3VyYXRpb24qKSlcbiAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG5fdW53cmFwcGVkID0gdW5jYXVnaHRfZXhuXG5cbmxldCB1bmNhdWdodF9leG4gdCA9XG4gIG1hdGNoIHQudW5jYXVnaHRfZXhuIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChleG4sIHNleHApIC0+XG4gICAgU29tZSAoRXJyb3IuY3JlYXRlIFwidW5oYW5kbGVkIGV4Y2VwdGlvblwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdKVxuOztcblxubGV0IG51bV9wZW5kaW5nX2pvYnMgdCA9XG4gIEpvYl9xdWV1ZS5sZW5ndGggdC5ub3JtYWxfcHJpb3JpdHlfam9icyArIEpvYl9xdWV1ZS5sZW5ndGggdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IG51bV9qb2JzX3J1biB0ID1cbiAgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICsgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbGFzdF9jeWNsZV9udW1fam9icyB0ID0gdC5sYXN0X2N5Y2xlX251bV9qb2JzXG5cbmxldCB1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWwgfnN1Ymxpc3Q6c21hbGwgbGFyZ2UgPVxuICBsZXQgbGFyZ2UgPSBBcnJheS50b19saXN0IGxhcmdlIGluXG4gIGxldCByZW1vdmUgYSB4ID1cbiAgICBtYXRjaCBMaXN0LnNwbGl0X3doaWxlIGEgfmY6KGZ1biB5IC0+IG5vdCAoZXF1YWwgeSB4KSkgd2l0aFxuICAgIHwgXywgW10gLT4gTm9uZVxuICAgIHwgbCwgXyA6OiByIC0+IFNvbWUgKGwgQCByKVxuICBpblxuICBPcHRpb24uaXNfc29tZVxuICAgIChMaXN0LmZvbGQgc21hbGwgfmluaXQ6KFNvbWUgbGFyZ2UpIH5mOihmdW4gYWNjIHggLT5cbiAgICAgICBPcHRpb24uYmluZCBhY2MgfmY6KGZ1biBsIC0+IHJlbW92ZSBsIHgpKSlcbjs7XG5cbmxldCBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCB0YWJsZSBhcnJheSA9XG4gICgqIFlvdSBjYW4gaW4gZmFjdCBoYXZlIGhvb2tzIGluIHRoZSBsaXN0IGZvciB3aGljaCB0aGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGVudHJ5IGluXG4gICAgIHRoZSB0YWJsZS4gU3VjaCBob29rcyBjYW4gbmV2ZXIgYmUgcmVtb3ZlZC4gKilcbiAgYXNzZXJ0ICh1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWw6cGh5c19lcXVhbCB+c3VibGlzdDooSGFzaHRibC5kYXRhIHRhYmxlKSBhcnJheSlcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICB0cnlcbiAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+Y2hlY2tfYWNjZXNzOmlnbm9yZVxuICAgICAgfmpvYl9wb29sOihjaGVjayBKb2JfcG9vbC5pbnZhcmlhbnQpXG4gICAgICB+bm9ybWFsX3ByaW9yaXR5X2pvYnM6KGNoZWNrIEpvYl9xdWV1ZS5pbnZhcmlhbnQpXG4gICAgICB+bG93X3ByaW9yaXR5X2pvYnM6KGNoZWNrIEpvYl9xdWV1ZS5pbnZhcmlhbnQpXG4gICAgICB+dmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyczpcbiAgICAgICAgKGNoZWNrIChmdW4gcSAtPiBEZXF1ZS5pdGVyIHEgfmY6VmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLmludmFyaWFudCkpXG4gICAgICB+bWFpbl9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQ6KGNoZWNrIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudClcbiAgICAgIH51bmNhdWdodF9leG46XG4gICAgICAgIChjaGVjayAoZnVuIHVuY2F1Z2h0X2V4biAtPlxuICAgICAgICAgICBpZiBpc19zb21lIHVuY2F1Z2h0X2V4biB0aGVuIGFzc2VydCAobnVtX3BlbmRpbmdfam9icyB0ID0gMCkpKVxuICAgICAgfmN5Y2xlX2NvdW50OihjaGVjayAoZnVuIGN5Y2xlX2NvdW50IC0+IGFzc2VydCAoY3ljbGVfY291bnQgPj0gMCkpKVxuICAgICAgfmN5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfmluX2N5Y2xlOmlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydDppZ25vcmVcbiAgICAgIH5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGU6XG4gICAgICAgIChjaGVjayAoZnVuIHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCBydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQpKVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCkpXG4gICAgICB+bGFzdF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfnRvdGFsX2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+bGFzdF9jeWNsZV9udW1fam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbGFzdF9jeWNsZV9udW1fam9icyAtPiBhc3NlcnQgKGxhc3RfY3ljbGVfbnVtX2pvYnMgPj0gMCkpKVxuICAgICAgfnRpbWVfc291cmNlOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlJlYWRfd3JpdGUuaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gam9iIC0+XG4gICAgICAgICAgICAgIGFzc2VydCAoUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQuam9iX3Bvb2wgam9iKSkpKVxuICAgICAgfmV4dGVybmFsX2pvYnM6aWdub3JlXG4gICAgICB+dGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2s6aWdub3JlXG4gICAgICB+am9iX3F1ZXVlZF9ob29rOmlnbm9yZVxuICAgICAgfmV2ZW50X2FkZGVkX2hvb2s6aWdub3JlXG4gICAgICB+eWllbGQ6aWdub3JlXG4gICAgICB+eWllbGRfdW50aWxfbm9fam9ic19yZW1haW46aWdub3JlXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czppZ25vcmVcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTppZ25vcmVcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczppZ25vcmVcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiB0KV1cbjs7XG5cbmxldCBmcmVlX2pvYiB0IGpvYiA9IFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuXG5sZXQgZW5xdWV1ZSB0IChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpIGYgYSA9XG4gICgqIElmIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4sIHdlIGRvbid0IGFkZCB0aGUgam9iLCBzaW5jZSB3ZSBkb24ndCB3YW50IGFueSBqb2JzXG4gICAgIHRvIHJ1biBvbmNlIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4uICopXG4gIGlmIGlzX25vbmUgdC51bmNhdWdodF9leG5cbiAgdGhlbiAoXG4gICAgbGV0IHByaW9yaXR5ID0gZXhlY3V0aW9uX2NvbnRleHQucHJpb3JpdHkgaW5cbiAgICBsZXQgam9iX3F1ZXVlID1cbiAgICAgIG1hdGNoIHByaW9yaXR5IHdpdGhcbiAgICAgIHwgTm9ybWFsIC0+IHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgIHwgTG93IC0+IHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICBpblxuICAgIEpvYl9xdWV1ZS5lbnF1ZXVlIGpvYl9xdWV1ZSBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgbWF0Y2ggdC5qb2JfcXVldWVkX2hvb2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+IGYgcHJpb3JpdHkpXG47O1xuXG5sZXQgZW5xdWV1ZV9qb2IgdCBqb2IgfmZyZWVfam9iID1cbiAgbGV0IGpvYl9wb29sID0gdC5qb2JfcG9vbCBpblxuICBlbnF1ZXVlXG4gICAgdFxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQwKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQxKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQyKTtcbiAgaWYgZnJlZV9qb2IgdGhlbiBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZmlyZWQgKHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50KSBqb2Jfb3JfZXZlbnQgPVxuICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gIHwgSm9iLCBqb2IgLT4gZW5xdWV1ZV9qb2IgdGltZV9zb3VyY2Uuc2NoZWR1bGVyIGpvYiB+ZnJlZV9qb2I6dHJ1ZVxuICB8IEV2ZW50LCBldmVudCAtPiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5maXJlIHRpbWVfc291cmNlIGV2ZW50XG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIGxldCByZWMgdCA9XG4gICAgeyBjaGVja19hY2Nlc3MgPSBOb25lXG4gICAgOyBqb2JfcG9vbCA9IEpvYl9wb29sLmNyZWF0ZSAoKVxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgPSBEZXF1ZS5jcmVhdGUgKClcbiAgICA7IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgdW5jYXVnaHRfZXhuID0gTm9uZVxuICAgIDsgY3ljbGVfc3RhcnQgPSBub3dcbiAgICA7IGN5Y2xlX2NvdW50ID0gMFxuICAgIDsgaW5fY3ljbGUgPSBmYWxzZVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ID0gW3x8XVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZSlcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmQgPSBbfHxdXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZSlcbiAgICA7IGxhc3RfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgbGFzdF9jeWNsZV9udW1fam9icyA9IDBcbiAgICA7IHRvdGFsX2N5Y2xlX3RpbWUgPSBzZWMgMC5cbiAgICA7IHRpbWVfc291cmNlXG4gICAgOyBleHRlcm5hbF9qb2JzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA9IGlnbm9yZVxuICAgIDsgam9iX3F1ZXVlZF9ob29rID0gTm9uZVxuICAgIDsgZXZlbnRfYWRkZWRfaG9vayA9IE5vbmVcbiAgICA7IHlpZWxkID0gQnZhci5jcmVhdGUgKClcbiAgICA7IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID0gQnZhci5jcmVhdGUgKCkgKCogY29uZmlndXJhdGlvbiAqKVxuICAgIDsgY2hlY2tfaW52YXJpYW50cyA9IEFzeW5jX2tlcm5lbF9jb25maWcuY2hlY2tfaW52YXJpYW50c1xuICAgIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICAgICAgICBBc3luY19rZXJuZWxfY29uZmlnLm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gICAgOyByZWNvcmRfYmFja3RyYWNlcyA9IEFzeW5jX2tlcm5lbF9jb25maWcucmVjb3JkX2JhY2t0cmFjZXNcbiAgICB9XG4gIGFuZCBldmVudHMgPVxuICAgIFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzpBc3luY19rZXJuZWxfY29uZmlnLnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0Om5vd1xuICBhbmQgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSB0cnVlXG4gICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHNjaGVkdWxlciA9IHRcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCBpc19kZWFkIHQgPSBpc19zb21lIHQudW5jYXVnaHRfZXhuXG5sZXQgc2V0X2NoZWNrX2FjY2VzcyB0IGYgPSB0LmNoZWNrX2FjY2VzcyA8LSBmXG5cbmxldCBiYWNrdHJhY2Vfb2ZfZmlyc3Rfam9iIHQgPVxuICBPcHRpb24uZmlyc3Rfc29tZVxuICAgIChKb2JfcXVldWUuYmFja3RyYWNlX29mX2ZpcnN0X2VucXVldWUgdC5ub3JtYWxfcHJpb3JpdHlfam9icylcbiAgICAoSm9iX3F1ZXVlLmJhY2t0cmFjZV9vZl9maXJzdF9lbnF1ZXVlIHQubG93X3ByaW9yaXR5X2pvYnMpXG47O1xuXG5sZXQgdF9yZWYgPVxuICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggY3JlYXRlIHdpdGhcbiAgfCBPayB0IC0+IHJlZiB0XG4gIHwgRXJyb3IgZXhuIC0+XG4gICAgRGVidWcubG9nIFwiQXN5bmMgY2Fubm90IGNyZWF0ZSBpdHMgcmF3IHNjaGVkdWxlclwiIGV4biBbJXNleHBfb2Y6IGV4bl07XG4gICAgZXhpdCAxXG47O1xuXG5sZXQgY2hlY2tfYWNjZXNzIHQgPVxuICBtYXRjaCB0LmNoZWNrX2FjY2VzcyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZiAtPiBmICgpXG47O1xuXG5sZXQgdCAoKSA9XG4gIGxldCB0ID0gIXRfcmVmIGluXG4gIGNoZWNrX2FjY2VzcyB0O1xuICB0XG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0ID1cbiAgaWYgdC5yZWNvcmRfYmFja3RyYWNlc1xuICB0aGVuIEV4ZWN1dGlvbl9jb250ZXh0LnJlY29yZF9iYWNrdHJhY2UgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gIGVsc2UgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiB4ID1cbiAgbGV0IG9sZF9jb250ZXh0ID0gY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0IGluXG4gIHNldF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0O1xuICBwcm90ZWN0eCB+ZiB4IH5maW5hbGx5OihmdW4gXyAtPiBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCBvbGRfY29udGV4dClcbjs7XG5cbmxldCB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgdG1wX2NvbnRleHQgfmYgPSB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0MSB0IHRtcF9jb250ZXh0IH5mICgpXG5cbmxldCBjcmVhdGVfam9iICh0eXBlIGEpIHQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgaWYgUG9vbC5pc19mdWxsIHQuam9iX3Bvb2wgdGhlbiB0LmpvYl9wb29sIDwtIFBvb2wuZ3JvdyB0LmpvYl9wb29sO1xuICBQb29sLm5ldzNcbiAgICB0LmpvYl9wb29sXG4gICAgZXhlY3V0aW9uX2NvbnRleHRcbiAgICAoT2JqLm1hZ2ljIChmIDogYSAtPiB1bml0KSA6IE9iai50IC0+IHVuaXQpXG4gICAgKE9iai5yZXByIChhIDogYSkpXG47O1xuXG5sZXQgZ290X3VuY2F1Z2h0X2V4biB0IGV4biBzZXhwID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJnb3RfdW5jYXVnaHRfZXhuXCIgKGV4biwgc2V4cCkgWyVzZXhwX29mOiBFeG4udCAqIFNleHAudF07XG4gIExpc3QuaXRlciBbIHQubm9ybWFsX3ByaW9yaXR5X2pvYnM7IHQubG93X3ByaW9yaXR5X2pvYnMgXSB+ZjpKb2JfcXVldWUuY2xlYXI7XG4gIHQudW5jYXVnaHRfZXhuIDwtIFNvbWUgKGV4biwgc2V4cClcbjs7XG5cbigqIFtzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XSBlbmFibGVzIHN1YnNlcXVlbnQgY2FsbHMgb2YgW3J1bl9qb2JzXVxuICAgdG8gcnVuIHVwIHRvIFttYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5XSBqb2JzIG9mIGVhY2ggcHJpb3JpdHkgbGV2ZWwuICopXG5sZXQgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eSA9XG4gIGxldCBuID0gTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUucmF3IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgaW5cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIG47XG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5sb3dfcHJpb3JpdHlfam9icyBuXG47O1xuXG4oKiBbcnVuX2pvYnMgdF0gcmVtb3ZlcyBqb2JzIGZyb20gW3RdIG9uZSBhdCBhIHRpbWUgYW5kIHJ1bnMgdGhlbSwgc3RvcHBpbmcgYXMgc29vblxuICAgYXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiBpcyByYWlzZWQsIG9yIHdoZW4gbm8gbW9yZSBqb2JzIGNhbiBiZSBydW4gYXQgYW55IHByaW9yaXR5LFxuICAgYXMgcGVyIFt+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0uICopXG5sZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICBtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5ub3JtYWxfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICB8IE9rICgpIC0+XG4gICAgKG1hdGNoIEpvYl9xdWV1ZS5ydW5fam9icyB0Lmxvd19wcmlvcml0eV9qb2JzIHQgd2l0aFxuICAgICB8IEVycm9yIF8gYXMgZSAtPiBlXG4gICAgIHwgT2sgKCkgLT5cbiAgICAgICBpZiBKb2JfcXVldWUuY2FuX3J1bl9hX2pvYiB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICAgICAgfHwgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5sb3dfcHJpb3JpdHlfam9ic1xuICAgICAgIHRoZW4gcnVuX2pvYnMgdFxuICAgICAgIGVsc2UgT2sgKCkpXG47O1xuXG5sZXQgc3RhYmlsaXplIHQgPVxuICBzdGFydF9jeWNsZVxuICAgIHRcbiAgICB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTpcbiAgICAgIChNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS5jcmVhdGVfZXhuIEludC5tYXhfdmFsdWUpO1xuICBtYXRjaCBydW5fam9icyB0IHdpdGhcbiAgfCBPayAoKSAtPiBPayAoKVxuICB8IEVycm9yIChleG4sIF9iYWNrdHJhY2UpIC0+IEVycm9yIGV4blxuOztcblxubGV0IGNyZWF0ZV90aW1lX3NvdXJjZVxuICAgICAgPyh0aW1pbmdfd2hlZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZy50aW1pbmdfd2hlZWxfY29uZmlnKVxuICAgICAgfm5vd1xuICAgICAgKClcbiAgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV2ZW50cyA9IFRpbWluZ193aGVlbC5jcmVhdGUgfmNvbmZpZzp0aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydDpub3cgaW5cbiAgbGV0IHJlYyB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IGZhbHNlXG4gICAgOyBtb3N0X3JlY2VudGx5X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHNjaGVkdWxlciA9IHRcbiAgICB9XG4gIGluXG4gIHRpbWVfc291cmNlXG47O1xuXG5sZXQgd2FsbF9jbG9jayAoKSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLnJlYWRfb25seSAodCAoKSkudGltZV9zb3VyY2VcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBDZWxsID0gVHlwZXMuQ2VsbFxuXG50eXBlIGFueSA9XG4gIFsgYEVtcHR5XG4gIHwgYEVtcHR5X29uZV9oYW5kbGVyXG4gIHwgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gIHwgYEZ1bGxcbiAgfCBgSW5kaXJcbiAgXVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JdmFyLnQgPSB7IG11dGFibGUgY2VsbCA6ICgnYSwgYW55KSBjZWxsIH1cblxuKCogVGhlIFsnYl0gaXMgdXNlZCB0byBlbmNvZGUgdGhlIGNvbnN0cnVjdG9yLiAgVGhpcyBhbGxvd3MgdXMgdG8gd3JpdGUgZnVuY3Rpb25zIHRoYXRcbiAgIHRha2Ugb25seSBvbmUgb2YgdGhlIGNvbnN0cnVjdG9ycywgd2l0aCBubyBydW50aW1lIHRlc3QuXG5cbiAgIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUgZGlyZWN0ZWQgZ3JhcGggd2l0aCBpdmFycyBhcyBub2RlcyBhbmQgW0luZGlyXXMgYXNcbiAgIGVkZ2VzIGlzIGFjeWNsaWMuICBUaGUgb25seSBmdW5jdGlvbnMgdGhhdCBjcmVhdGUgYW4gW0luZGlyXSBhcmUgW3NxdWFzaF0gYW5kXG4gICBbY29ubmVjdF0sIGFuZCBmb3IgdGhvc2UsIHRoZSB0YXJnZXQgb2YgdGhlIFtJbmRpcl0gaXMgYWx3YXlzIGEgbm9uLVtJbmRpcl0uICBUaHVzLCB0aGVcbiAgIG5ld2x5IGFkZGVkIGVkZ2VzIGFyZSBuZXZlciBwYXJ0IG9mIGEgY3ljbGUuICopXG5hbmQgKCdhLCAnYikgY2VsbCA9ICgnYSwgJ2IpIFR5cGVzLkNlbGwudCA9XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgeyAoKiBbcnVuXSBpcyBtdXRhYmxlIHNvIHdlIGNhbiBzZXQgaXQgdG8gW2lnbm9yZV0gd2hlbiB0aGUgaGFuZGxlciBpcyByZW1vdmVkLlxuICAgICAgICAgICBUaGlzIGlzIHVzZWQgd2hlbiB3ZSBpbnN0YWxsIGEgaGFuZGxlciBvbiBhIGZ1bGwgaXZhciBzaW5jZSBpdCBpcyBpbW1lZGlhdGVseVxuICAgICAgICAgICBhZGRlZCB0byB0aGUgc2NoZWR1bGVyLiAqKVxuICAgICAgICBtdXRhYmxlIHJ1biA6ICdhIC0+IHVuaXRcbiAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICA7ICgqIFtwcmV2XSBhbmQgW25leHRdIGNpcmN1bGFybHkgZG91Ymx5IGxpbmsgYWxsIGhhbmRsZXJzIG9mIHRoZSBzYW1lIGl2YXIuICopXG4gICAgICAgIG11dGFibGUgcHJldiA6ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuICAgICAgOyBtdXRhYmxlIG5leHQgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIH1cbiAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciA6XG4gICAgICAoJ2EgLT4gdW5pdCkgKiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSBjZWxsXG4gIHwgRW1wdHkgOiAoJ2EsIFs+IGBFbXB0eSBdKSBjZWxsXG4gIHwgRnVsbCA6ICdhIC0+ICgnYSwgWz4gYEZ1bGwgXSkgY2VsbFxuICB8IEluZGlyIDogJ2EgdCAtPiAoJ2EsIFs+IGBJbmRpciBdKSBjZWxsXG5cbm1vZHVsZSBIYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgWyBgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXSkgY2VsbFxuXG4gIGxldCBydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5ydW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQuZXhlY3V0aW9uX2NvbnRleHRcbiAgbGV0IHByZXYgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpID0gdC5wcmV2XG4gIGxldCBuZXh0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQubmV4dFxuICBsZXQgc2V0X3J1biAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucnVuIDwtIHhcbiAgbGV0IHNldF9wcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5wcmV2IDwtIHhcbiAgbGV0IHNldF9uZXh0IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSB4ID0gdC5uZXh0IDwtIHhcblxuICBsZXQgY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgKCogQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mOlxuXG4gICAgICAge1tcbiAgICAgICAgIGxldCByZWMgdCA9XG4gICAgICAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgICAgICAgeyBydW5cbiAgICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHRcbiAgICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdCB9XG4gICAgICAgICBpblxuICAgICAgICAgaDEgXX1cblxuICAgICAgIEhvd2V2ZXIgdGhlIGNvbXBpbGF0aW9uIG9mIHJlY3Vyc2l2ZSB2YWx1ZSBpbiBPQ2FtbCBpcyBub3Qgb3B0aW1hbDogdGhlIHZhbHVlIGlzXG4gICAgICAgYWxsb2NhdGVkIHR3aWNlIGFuZCBjb3BpZWQgb25jZSAod2l0aCBhIGxvb3AgY2FsbGluZyBjYW1sX21vZGlmeSkuICBUaGlzIGlzIG5vdFxuICAgICAgIG5lY2Vzc2FyeSBmb3Igc2ltcGxlIHJlY3Vyc2l2ZSBkZWZpbml0aW9ucyBsaWtlIHRoaXMgb25lLlxuXG4gICAgICAgSW5zdGVhZCB3ZSBhbGxvY2F0ZSB0aGUgdmFsdWUgd2l0aCBkdW1teSBmaWVsZHMgYW5kIHVwZGF0ZSB0aGVtIGFmdGVyLiAqKVxuICAgIGxldCB0ID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldiA9IE9iai5tYWdpYyBOb25lOyBuZXh0ID0gT2JqLm1hZ2ljIE5vbmUgfVxuICAgIGluXG4gICAgc2V0X3ByZXYgdCB0O1xuICAgIHNldF9uZXh0IHQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZTIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgcnVuMiBleGVjdXRpb25fY29udGV4dDIgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQxID1cbiAgICAgICAgICAgeyBydW4gICAgICAgICAgICAgICA9IHJ1bjFcbiAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dCA9IGV4ZWN1dGlvbl9jb250ZXh0MVxuICAgICAgICAgICA7IHByZXYgICAgICAgICAgICAgID0gdDJcbiAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQyIH1cbiAgICAgICAgIGFuZCB0MiA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4yXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDJcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQxXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MSB9XG4gICAgICAgICBpblxuICAgICAgICAgdDEgXX0gKilcbiAgICBsZXQgdDEgPVxuICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnNcbiAgICAgICAgeyBydW4gPSBydW4xXG4gICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgOyBwcmV2ID0gT2JqLm1hZ2ljIE5vbmVcbiAgICAgICAgOyBuZXh0ID0gT2JqLm1hZ2ljIE5vbmVcbiAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IHQyID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMjsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDI7IHByZXYgPSB0MTsgbmV4dCA9IHQxIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQxIHQyO1xuICAgIHNldF9uZXh0IHQxIHQyO1xuICAgIHQxXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgKGV4ZWN1dGlvbl9jb250ZXh0IHQpO1xuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBsZXQgdDEgPSAhciBpblxuICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIChwcmV2IChuZXh0IHQxKSkgdDEpO1xuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0MSk7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gcGh5c19lcXVhbCB0IChuZXh0IHQpXG5cbiAgbGV0IGxlbmd0aCB0ID1cbiAgICBsZXQgbiA9IHJlZiAxIGluXG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGluY3IgbjtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmU7XG4gICAgIW5cbiAgOztcblxuICBsZXQgZW5xdWV1ZSB0IHNjaGVkdWxlciB2ID0gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIChleGVjdXRpb25fY29udGV4dCB0KSAocnVuIHQpIHZcblxuICBsZXQgc2NoZWR1bGVfam9icyB0IHYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGVucXVldWUgdCBzY2hlZHVsZXIgdjtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgZW5xdWV1ZSAhciBzY2hlZHVsZXIgdjtcbiAgICAgIHIgOj0gbmV4dCAhclxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgdW5saW5rIHQgPVxuICAgIHNldF9wcmV2IChuZXh0IHQpIChwcmV2IHQpO1xuICAgIHNldF9uZXh0IChwcmV2IHQpIChuZXh0IHQpO1xuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHRcbiAgOztcblxuICBsZXQgYWRkIHQgcnVuIGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuOyBleGVjdXRpb25fY29udGV4dDsgcHJldiA9IHByZXYgdDsgbmV4dCA9IHQgfVxuICAgIGluXG4gICAgc2V0X25leHQgKHByZXYgdCkgcmVzdWx0O1xuICAgIHNldF9wcmV2IHQgcmVzdWx0O1xuICAgIHJlc3VsdFxuICA7O1xuXG4gICgqIFtzcGxpY2UgdDEgdDJdIGNyZWF0ZXM6XG5cbiAgICAge3ZcbiAgICAgICAtLT4gdDEgPC0tPiAuLi4gPC0tPiBsYXN0MSA8LS0+IHQyIDwtLT4gLi4uIDwtLT4gbGFzdDIgPC0tXG4gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgdn0gKilcbiAgbGV0IHNwbGljZSB0MSB0MiA9XG4gICAgbGV0IGxhc3QxID0gcHJldiB0MSBpblxuICAgIGxldCBsYXN0MiA9IHByZXYgdDIgaW5cbiAgICBzZXRfbmV4dCBsYXN0MSB0MjtcbiAgICBzZXRfbmV4dCBsYXN0MiB0MTtcbiAgICBzZXRfcHJldiB0MSBsYXN0MjtcbiAgICBzZXRfcHJldiB0MiBsYXN0MVxuICA7O1xuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIDo6IGwgLT5cbiAgICAgIGxldCBmaXJzdCA9IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICAgIGxldCByZWMgbG9vcCBwcmV2IGwgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZXRfcHJldiBmaXJzdCBwcmV2XG4gICAgICAgIHwgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpIDo6IGwgLT5cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXY7IG5leHQgPSBmaXJzdCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBzZXRfbmV4dCBwcmV2IHQ7XG4gICAgICAgICAgbG9vcCB0IGxcbiAgICAgIGluXG4gICAgICBsb29wIGZpcnN0IGw7XG4gICAgICBTb21lIGZpcnN0XG4gIDs7XG5cbiAgbGV0IHRvX2xpc3QgZmlyc3QgPVxuICAgIGxldCByZWMgbG9vcCB0IGFjYyA9XG4gICAgICBsZXQgYWNjID0gKHJ1biB0LCBleGVjdXRpb25fY29udGV4dCB0KSA6OiBhY2MgaW5cbiAgICAgIGlmIHBoeXNfZXF1YWwgdCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgKHByZXYgdCkgYWNjXG4gICAgaW5cbiAgICBsb29wIChwcmV2IGZpcnN0KSBbXVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgXyAodCA6IF8gdCkgPVxuICAgIGxldCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW4gPSBfOyBleGVjdXRpb25fY29udGV4dDsgbmV4dCA9IF87IHByZXYgPSBfIH0pID1cbiAgICAgIHRcbiAgICBpblxuICAgIFslbWVzc2FnZSAoZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50KV1cbiAgOztcbmVuZFxuXG50eXBlICdhIGl2YXIgPSAnYSB0XG5cbigqIENvbXBpbGVkIGFzIHRoZSBpZGVudGl0eS4gKilcbmxldCBjZWxsX29mX2hhbmRsZXIgOiBfIEhhbmRsZXIudCAtPiBfID0gZnVuY3Rpb25cbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIHggLT4gKHggOj4gKF8sIGFueSkgY2VsbClcbjs7XG5cbmxldCBlcXVhbCAodCA6IF8gdCkgdCcgPSBwaHlzX2VxdWFsIHQgdCdcbmxldCBpbmRpciB0ID0geyBjZWxsID0gSW5kaXIgdCB9XG5cbmluY2x1ZGUgU2NoZWR1bGVyLkl2YXJcblxuKCogW3NxdWFzaCB0XSByZXR1cm5zIHRoZSBub24tW0luZGlyXSBpdmFyIGF0IHRoZSBlbmQgb2YgdGhlIChwb3NzaWJseSBlbXB0eSkgY2hhaW4gb2ZcbiAgIFtJbmRpcl1zIHN0YXJ0aW5nIHdpdGggW3RdIGFuZCBlbnN1cmVzIHRoYXQgYWxsIFtJbmRpcl1zIGFsb25nIHRoYXQgY2hhaW4gYXJlIHJlcGxhY2VkXG4gICB3aXRoIGFuIFtJbmRpcl0gcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4uICopXG5sZXQgc3F1YXNoID1cbiAgbGV0IHJlYyBmb2xsb3cgaW5kaXIgdCA9XG4gICAgKCogW2luZGlyID0gSW5kaXIgdF0gKilcbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgYXMgaW5kaXInIC0+IGZvbGxvdyBpbmRpcicgdCdcbiAgICB8IF8gLT4gaW5kaXJcbiAgaW5cbiAgbGV0IHJlYyB1cGRhdGUgdCBpbmRpciA9XG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIC0+XG4gICAgICB0LmNlbGwgPC0gaW5kaXI7XG4gICAgICB1cGRhdGUgdCcgaW5kaXJcbiAgICB8IF8gLT4gdFxuICBpblxuICBmdW4gdCAtPlxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgKG1hdGNoIHQnLmNlbGwgd2l0aFxuICAgICAgIHwgSW5kaXIgdCcnIGFzIGluZGlyIC0+IHVwZGF0ZSB0IChmb2xsb3cgaW5kaXIgdCcnKVxuICAgICAgIHwgXyAtPiB0JyAoKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXMgYSBjaGFpbiB3aXRoIGEgc2luZ2xlIFtJbmRpcl0gKikpXG4gICAgfCBfIC0+IHRcbjs7XG5cbigqIG5vdGhpbmcgdG8gZG8sIHNpbmNlIFt0XSBpc24ndCBhbiBbSW5kaXJdLiAqKVxuXG5sZXQgaW52YXJpYW50IGFfaW52YXJpYW50IHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IGFfaW52YXJpYW50IGFcbiAgfCBFbXB0eSAtPiAoKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChfLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQgZXhlY3V0aW9uX2NvbnRleHRcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT4gSGFuZGxlci5pbnZhcmlhbnQgaGFuZGxlclxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA6IFNleHAudCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gTGlzdCBbIEF0b20gXCJGdWxsXCI7IHNleHBfb2ZfYSBhIF1cbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IEF0b20gXCJFbXB0eVwiXG47O1xuXG5sZXQgcGVlayB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBTb21lIGFcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IE5vbmVcbjs7XG5cbmxldCB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPlxuICAgIGZhaWx3aXRoIGlmX2VtcHR5X3RoZW5fZmFpbHdpdGhcbjs7XG5cbmxldCB2YWx1ZV9leG4gdCA9IHZhbHVlIHQgfmlmX2VtcHR5X3RoZW5fZmFpbHdpdGg6XCJJdmFyLnZhbHVlX2V4biBjYWxsZWQgb24gZW1wdHkgaXZhclwiXG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgXyAtPiBmYWxzZVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gdHJ1ZVxuOztcblxubGV0IGlzX2Z1bGwgdCA9IG5vdCAoaXNfZW1wdHkgdClcblxubGV0IGZpbGwgdCB2ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkl2YXIuZmlsbCBvZiBmdWxsIGl2YXJcIiAodCA6IF8gdCldXG4gIHwgRW1wdHkgLT4gdC5jZWxsIDwtIEZ1bGwgdlxuICB8IEVtcHR5X29uZV9oYW5kbGVyIChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSAtPlxuICAgIHQuY2VsbCA8LSBGdWxsIHY7XG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIEhhbmRsZXIuc2NoZWR1bGVfam9icyBoYW5kbGVyIHZcbjs7XG5cbmxldCByZW1vdmVfaGFuZGxlciB0IChoYW5kbGVyIDogXyBIYW5kbGVyLnQpID1cbiAgSGFuZGxlci5zZXRfcnVuIGhhbmRsZXIgaWdub3JlO1xuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIC0+XG4gICAgKCogVGhlc2UgYXJlIG9ubHkgcG9zc2libGUgaWYgW2hhbmRsZXJdIHdhcyBhbHJlYWR5IHJlbW92ZWQuICAqKVxuICAgICgpXG4gIHwgRnVsbCBfIC0+XG4gICAgKCogVGhpcyBpcyBwb3NzaWJsZSBpZiBbdF0gd2FzIGZpbGxlZCBiZWZvcmUgd2UgdHJ5IHRvIHJlbW92ZSB0aGUgaGFuZGxlci4gIEUuZy5cbiAgICAgICBbRGVmZXJyZWQuY2hvb3NlXSB3aWxsIGRvIHRoaXMuICopXG4gICAgKClcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGNlbGwgLT5cbiAgICBpZiBIYW5kbGVyLmlzX3NpbmdsZXRvbiBoYW5kbGVyXG4gICAgdGhlbiB0LmNlbGwgPC0gRW1wdHlcbiAgICBlbHNlIChcbiAgICAgIGlmIHBoeXNfZXF1YWwgaGFuZGxlciBjZWxsIHRoZW4gdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciAoSGFuZGxlci5uZXh0IGhhbmRsZXIpO1xuICAgICAgSGFuZGxlci51bmxpbmsgaGFuZGxlcilcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBFbXB0eSAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyO1xuICAgIGhhbmRsZXJcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuJywgZXhlY3V0aW9uX2NvbnRleHQnKSAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUyIHJ1biBleGVjdXRpb25fY29udGV4dCBydW4nIGV4ZWN1dGlvbl9jb250ZXh0JyBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuYWRkIGhhbmRsZXIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRnVsbCB2IC0+XG4gICAgbGV0IGhhbmRsZXIgPSBIYW5kbGVyLmNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgICAoKiBbcnVuXSBjYWxscyBbaGFuZGxlci5ydW5dLCB3aGljaCwgaWYgW2hhbmRsZXJdIGhhcyBiZWVuIHJlbW92ZWQsIGhhcyBiZWVuIGNoYW5nZWRcbiAgICAgICB0byBbaWdub3JlXS4gKilcbiAgICBsZXQgcnVuIHYgPSBIYW5kbGVyLnJ1biBoYW5kbGVyIHYgaW5cbiAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdjtcbiAgICBoYW5kbGVyXG47O1xuXG5sZXQgaGFzX2hhbmRsZXJzIHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT4gdHJ1ZVxuICB8IEVtcHR5IHwgRnVsbCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgdXBvbicgdCBydW4gPSBhZGRfaGFuZGxlciB0IHJ1biBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxuXG4oKiBbdXBvbl0gaXMgY29uY2VwdHVhbGx5IHRoZSBzYW1lIGFzOlxuXG4gICB7W1xuICAgICBsZXQgdXBvbiB0IGYgPSBpZ25vcmUgKHVwb24nIHQgcnVuKSBdfVxuXG4gICBIb3dldmVyLCBiZWxvdyBpcyBhIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyB3b3J0aCBkb2luZyBiZWNhdXNlIFt1cG9uXVxuICAgaXMgdmVyeSB3aWRlbHkgdXNlZCBhbmQgaXMgc28gbXVjaCBtb3JlIGNvbW1vbiB0aGFuIFt1cG9uJ10uICBUaGUgYmVsb3cgaW1wbGVtZW50YXRpb25cbiAgIGF2b2lkcyB0aGUgdXNlIG9mIHRoZSBiYWcgb2YgaGFuZGxlcnMgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSBvZiBvbmUgaGFuZGxlciBmb3JcbiAgIHRoZSBkZWZlcnJlZC4gKilcbmxldCB1cG9uIHQgcnVuID1cbiAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCB2IC0+IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuJywgZXhlY3V0aW9uX2NvbnRleHQnKSAtPlxuICAgIHQuY2VsbFxuICAgIDwtIGNlbGxfb2ZfaGFuZGxlciAoSGFuZGxlci5jcmVhdGUyIHJ1biBleGVjdXRpb25fY29udGV4dCBydW4nIGV4ZWN1dGlvbl9jb250ZXh0JylcbiAgfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIgLT5cbiAgICBpZ25vcmUgKEhhbmRsZXIuYWRkIGhhbmRsZXIgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IDogXyBIYW5kbGVyLnQpXG47O1xuXG4oKiBbY29ubmVjdF0gdGFrZXMgaXZhcnMgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSwgYW5kIG1ha2VzIFtiaW5kX3Joc11cbiAgIGJlIGFuIFtJbmRpcl0gcG9pbnRpbmcgdG8gdGhlIG5vbi1pbmRpciBjZWxsIHJlYWNoYWJsZSBmcm9tIFtiaW5kX3Jlc3VsdF0uICBPbiBlbnRyeVxuICAgdG8gW2Nvbm5lY3RdLCBbYmluZF9yZXN1bHRdIGFuZCBbYmluZF9yaHNdIG1heSBiZSBjaGFpbnMsIHNpbmNlIFtiaW5kX3Joc10gaXMgYW5cbiAgIGFyYml0cmFyeSB1c2VyLXN1cHBsaWVkIGRlZmVycmVkLCBhbmQgW2JpbmRfcmVzdWx0XSBpcyByZXR1cm5lZCB0byB0aGUgdXNlciBwcmlvciB0b1xuICAgYmVpbmcgW2Nvbm5lY3RdZWQsIGFuZCBtYXkgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBhbiBpbmRpcmVjdGlvbiBpbiB0aGUgY2FzZSBvZlxuICAgcmlnaHQtbmVzdGVkIGJpbmRzLlxuXG4gICBUaGUgcHVycG9zZSBvZiBbY29ubmVjdF0gaXMgdG8gbWFrZSB0YWlsLXJlY3Vyc2l2ZSBiaW5kIGxvb3BzIHVzZSBjb25zdGFudCBzcGFjZS5cbiAgIEUuZy46XG5cbiAgIHtbXG4gICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICBpZiBpID0gMFxuICAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBsZXQlYmluZCAoKSA9IGFmdGVyIChzZWMgMS4pIGluXG4gICAgICAgICBsb29wIChpIC0gMSkpIF19XG5cbiAgIFtjb25uZWN0XSBtYWtlcyBpbnRlcm1lZGlhdGUgYmluZCByZXN1bHRzIGFsbCBiZSBbSW5kaXJdcyBwb2ludGluZyBhdCB0aGUgb3V0ZXJtb3N0XG4gICBiaW5kLCByYXRoZXIgdGhhbiBiZWluZyBhIGxpbmVhci1sZW5ndGggY2hhaW4sIHdpdGggZWFjaCBwb2ludGluZyB0byB0aGUgcHJldmlvdXMgb25lLlxuICAgVGhlbiwgc2luY2UgdGhlIHByb2dyYW0gaXMgb25seSBob2xkaW5nIG9uIHRvIHRoZSBpbm5lcm1vc3QgYW5kIG91dGVybW9zdCBiaW5kcyBhbGwgdGhlXG4gICBpbnRlcm1lZGlhdGUgb25lcyBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuXG5cbiAgIFtjb25uZWN0XSB3b3JrcyBieSBzcXVhc2hpbmcgaXRzIGFyZ3VtZW50cyBzbyB0aGF0IHRoZSBbYmluZF9yaHNdIGFsd2F5cyBwb2ludHMgYXQgdGhlXG4gICB1bHRpbWF0ZSByZXN1bHQuICopXG5sZXQgY29ubmVjdCA9XG4gICgqIFtyZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0XSByZXBvaW50cyB0byBbaW5kaXJdIGFsbCB0aGUgaXZhcnMgaW4gdGhlXG4gICAgIGNoYWluIHJlYWNoYWJsZSBmcm9tIFtpdmFyXSwgYW5kIHJldHVybnMgdGhlIG5vbi1bSW5kaXJdIGNlbGwgYXQgdGhlIGVuZCBvZiB0aGVcbiAgICAgY2hhaW4uICBBZnRlciByZXBvaW50aW5nLCB3ZSB3aWxsIG1lcmdlIHRoZSBoYW5kbGVycyBpbiB0aGF0IGNlbGwgd2l0aCB0aGUgaGFuZGxlcnNcbiAgICAgaW4gW2JpbmRfcmVzdWx0XSwgYW5kIHB1dCB0aGUgbWVyZ2VkIHNldCBvZiBoYW5kbGVycyBpbiBbYmluZF9yZXN1bHRdLiAqKVxuICBsZXQgcmVjIHJlcG9pbnRfaW5kaXJzIH5pdmFyIH5pbmRpciB+YmluZF9yZXN1bHQgPVxuICAgIGxldCBjZWxsID0gaXZhci5jZWxsIGluXG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBJbmRpciBpdmFyJyAtPlxuICAgICAgaXZhci5jZWxsIDwtIGluZGlyO1xuICAgICAgcmVwb2ludF9pbmRpcnMgfml2YXI6aXZhcicgfmluZGlyIH5iaW5kX3Jlc3VsdFxuICAgIHwgRnVsbCBfIC0+IGNlbGxcbiAgICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICAgICgqIEl0IGlzIHBvc3NpYmxlIHRoYXQgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBhcmUgbm90IGVxdWFsLCBidXQgdGhlaXIgY2hhaW5zXG4gICAgICAgICBvZiBpbmRpcnMgbGVhZCB0byB0aGUgc2FtZSBub24tW0luZGlyXSBjZWxsLCBpbiB3aGljaCBjYXNlIHdlIGNhbm5vdCBzZXQgdGhhdFxuICAgICAgICAgY2VsbCB0byBwb2ludCB0byBpdHNlbGYsIGJlY2F1c2UgdGhhdCB3b3VsZCBpbnRyb2R1Y2UgYSBjeWNsZS4gKilcbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBpdmFyIGJpbmRfcmVzdWx0KSB0aGVuIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIGNlbGxcbiAgaW5cbiAgZnVuIH5iaW5kX3Jlc3VsdCB+YmluZF9yaHMgLT5cbiAgICBpZiBub3QgKHBoeXNfZXF1YWwgYmluZF9yZXN1bHQgYmluZF9yaHMpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgYmluZF9yZXN1bHQgPSBzcXVhc2ggYmluZF9yZXN1bHQgaW5cbiAgICAgIGxldCBpbmRpciA9IEluZGlyIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgYmluZF9yaHNfY29udGVudHMgPSByZXBvaW50X2luZGlycyB+aXZhcjpiaW5kX3JocyB+aW5kaXIgfmJpbmRfcmVzdWx0IGluXG4gICAgICAoKiB1cGRhdGUgW2JpbmRfcmVzdWx0XSB3aXRoIHRoZSB1bmlvbiBvZiBoYW5kbGVycyBpbiBbYmluZF9yZXN1bHRdIGFuZFxuICAgICAgICAgW2JpbmRfcmhzXSAqKVxuICAgICAgbWF0Y2ggYmluZF9yZXN1bHQuY2VsbCwgYmluZF9yaHNfY29udGVudHMgd2l0aFxuICAgICAgfCBJbmRpciBfLCBfIHwgXywgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSBhbmQgW3JlcG9pbnRfaW5kaXJzXSAqKVxuICAgICAgKCogW2Nvbm5lY3RdIGlzIG9ubHkgdXNlZCBpbiBiaW5kLCB3aG9zZSBpdmFyIGlzIG9ubHkgZXZlciBleHBvcnRlZCBhcyBhIHJlYWQtb25seVxuICAgICAgICAgZGVmZXJyZWQuICBUaHVzLCBbYmluZF9yZXN1bHRdIG11c3QgYmUgZW1wdHkuICopXG4gICAgICB8IEZ1bGwgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgXywgRW1wdHkgLT4gKClcbiAgICAgIHwgRW1wdHksIF8gLT4gYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50c1xuICAgICAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBTY2hlZHVsZXIuKGVucXVldWUgKHQgKCkpKSBleGVjdXRpb25fY29udGV4dCBydW4gdlxuICAgICAgfCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyKSwgRnVsbCB2IC0+XG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHM7XG4gICAgICAgIEhhbmRsZXIuc2NoZWR1bGVfam9icyBoYW5kbGVyIHZcbiAgICAgIHwgKCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMSwgZXhlY3V0aW9uX2NvbnRleHQxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5jcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyIGluXG4gICAgICAgIGJpbmRfcmVzdWx0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXIxXG4gICAgICB8ICggKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjEpXG4gICAgICAgICwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjIsIGV4ZWN1dGlvbl9jb250ZXh0MikgKSAtPlxuICAgICAgICBpZ25vcmUgKEhhbmRsZXIuYWRkIGhhbmRsZXIxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyIDogXyBIYW5kbGVyLnQpXG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPlxuICAgICAgICBsZXQgaGFuZGxlcjEgPSBIYW5kbGVyLmFkZCBoYW5kbGVyMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIyKSApIC0+IEhhbmRsZXIuc3BsaWNlIGhhbmRsZXIxIGhhbmRsZXIyKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEl2YXIgPSBJdmFyMFxubW9kdWxlIEhhbmRsZXIgPSBJdmFyLkhhbmRsZXJcblxuKCogRGVmZXJyZWRzIHByZXNlbnQgYSBjb3ZhcmlhbnQgdmlldyBvZiBpdmFycy4gIFdlIGNvdWxkIGFjdHVhbGx5IGltcGxlbWVudCBkZWZlcnJlZHNcbiAgIHVzaW5nIGEgcmVjb3JkIG9mIGNsb3N1cmVzLCBhcyBpbiB0aGUgW2Vzc2VuY2Vfb2ZfZGVmZXJyZWRdIHJlY29yZCBiZWxvdywgZm9yIHdoaWNoIHRoZVxuICAgT0NhbWwgdHlwZSBjaGVja2VyIGNhbiBpbmZlciBjb3ZhcmlhbmNlLiAgSG93ZXZlciwgZG9pbmcgc28gd291bGQgbWFrZSBbSXZhci5yZWFkXSB2ZXJ5XG4gICBjb3N0bHksIGJlY2F1c2UgaXQgd291bGQgaGF2ZSB0byBhbGxvY2F0ZSBsb3RzIG9mIGNsb3N1cmVzIGFuZCBhIHJlY29yZC4gIEluc3RlYWQgb2ZcbiAgIGRvaW5nIHRoaXMsIHdlIG1ha2UgZGVmZXJyZWRzIGFuIGFic3RyYWN0IGNvdmFyaWFudCB0eXBlLCB3aGljaCBjb25jcmV0ZWx5IGlzIGp1c3QgdGhlXG4gICBpdmFyLCBhbmQgdXNlIFtPYmoubWFnaWNdIHRvIGNvbnZlcnQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiBhIGRlZmVycmVkIGFuZCBpdHMgY29uY3JldGVcbiAgIHJlcHJlc2VudGF0aW9uIGFzIGFuIGl2YXIuICBUaGlzIFtPYmoubWFnaWNdIGlzIHNhZmUgYmVjYXVzZSB0aGUgcmVwcmVzZW50YXRpb24gaXNcbiAgIGFsd2F5cyBqdXN0IGFuIGl2YXIsIGFuZCB0aGUgY292YXJpYW5jZSBmb2xsb3dzIGZyb20gdGhlIGZhY3QgdGhhdCBhbGwgdGhlIGRlZmVycmVkXG4gICBvcGVyYXRpb25zIGFyZSBlcXVpdmFsZW50IHRvIHRob3NlIGltcGxlbWVudGVkIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGVcbiAgIFtlc3NlbmNlX29mX2RlZmVycmVkXS5cblxuICAge1tcbiAgICAgdHlwZSAoKydhLCAnZXhlY3V0aW9uX2NvbnRleHQpIGVzc2VuY2Vfb2ZfZGVmZXJyZWQgPVxuICAgICAgIHsgcGVlayAgICAgICAgICAgICAgICAgICAgICA6IHVuaXQgLT4gJ2Egb3B0aW9uXG4gICAgICAgOyBpc19kZXRlcm1pbmVkICAgICAgICAgICAgIDogdW5pdCAtPiBib29sXG4gICAgICAgOyB1cG9uICAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgICAgICA7IHVwb24nICAgICAgICAgICAgICAgICAgICAgOiAoJ2EgLT4gdW5pdCkgLT4gVW5yZWdpc3Rlci50XG4gICAgICAgOyBpbnN0YWxsX3JlbW92YWJsZV9oYW5kbGVyIDogKCdhLCAnZXhlY3V0aW9uX2NvbnRleHQpIFJhd19oYW5kbGVyLnQgLT4gVW5yZWdpc3Rlci50OyB9IF19ICopXG5cbnR5cGUgKydhIHQgPSAnYSBUeXBlcy5EZWZlcnJlZC50XG5cbigqIHRoZSBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgZXF1aXZhbGVudCB0byBpdmFyICopXG5cbmxldCBvZl9pdmFyICh0eXBlIGEpIChpdmFyIDogYSBJdmFyLnQpIDogYSB0ID0gT2JqLm1hZ2ljIGl2YXJcbmxldCB0b19pdmFyICh0eXBlIGEpIHQgOiBhIEl2YXIudCA9IE9iai5tYWdpYyAodCA6IGEgdClcbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IEl2YXIuaW52YXJpYW50IGludmFyaWFudF9hICh0b19pdmFyIHQpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gSXZhci5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19pdmFyIHQpXG5sZXQgcGVlayB0ID0gSXZhci5wZWVrICh0b19pdmFyIHQpXG5sZXQgcmV0dXJuIGEgPSBvZl9pdmFyIChJdmFyLmNyZWF0ZV9mdWxsIGEpXG5sZXQgaXNfZGV0ZXJtaW5lZCB0ID0gSXZhci5pc19mdWxsICh0b19pdmFyIHQpXG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIEl2YXIudmFsdWVcbiAgICAodG9faXZhciB0KVxuICAgIH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiRGVmZXJyZWQudmFsdWVfZXhuIGNhbGxlZCBvbiB1bmRldGVybWluZWQgZGVmZXJyZWRcIlxuOztcblxubGV0IHVwb24gdCBmID0gSXZhci51cG9uICh0b19pdmFyIHQpIGZcblxubGV0IGNyZWF0ZSBmID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGYgcmVzdWx0O1xuICBvZl9pdmFyIHJlc3VsdFxuOztcblxuKCogZG9uJ3QgdXNlIFtjcmVhdGVdIGhlcmUgYXMgaXQgd291bGQgYWxsb2NhdGUgb25lIG1vcmUgY2xvc3VyZSAqKVxubGV0IGJpbmQgdCB+ZiA9XG4gIGxldCBiaW5kX3Jlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIHVwb24gdCAoZnVuIGEgLT4gSXZhci5jb25uZWN0IH5iaW5kX3Jlc3VsdCB+YmluZF9yaHM6KHRvX2l2YXIgKGYgYSkpKTtcbiAgb2ZfaXZhciBiaW5kX3Jlc3VsdFxuOztcblxubGV0IGFkZF9oYW5kbGVyIHQgZiBleGVjdXRpb25fY29udGV4dCA9IEl2YXIuYWRkX2hhbmRsZXIgKHRvX2l2YXIgdCkgZiBleGVjdXRpb25fY29udGV4dFxubGV0IHJlbW92ZV9oYW5kbGVyIHQgaCA9IEl2YXIucmVtb3ZlX2hhbmRsZXIgKHRvX2l2YXIgdCkgaFxuIiwib3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDBcbmluY2x1ZGUgSXZhcjBcblxubGV0IHJlYWQgPSBEZWZlcnJlZC5vZl9pdmFyXG5sZXQgZmlsbF9pZl9lbXB0eSB0IHYgPSBpZiBpc19lbXB0eSB0IHRoZW4gZmlsbCB0IHZcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChPcHRpb24pXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX2JpbmFibGUgdCA9IHBlZWsgdFxuXG4gICAgICBsZXQgb2ZfYmluYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgICAgICAgfCBTb21lIGEgLT4gY3JlYXRlX2Z1bGwgYVxuICAgICAgOztcbiAgICBlbmQpXG4iLCIoKiogW01vbmFkX3NlcXVlbmNlLlNdIGlzIGEgZ2VuZXJpYyBpbnRlcmZhY2Ugc3BlY2lmeWluZyBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGggYVxuICAgIGNvbnRhaW5lciBhbmQgYSBtb25hZC4gIEl0IGlzIHNwZWNpYWxpemVkIHRvIHRoZSBbRGVmZXJyZWRdIG1vbmFkIGFuZCB1c2VkIHdpdGhcbiAgICB2YXJpb3VzIGNvbnRhaW5lcnMgaW4gbW9kdWxlcyBbRGVmZXJyZWQuQXJyYXldLCBbRGVmZXJyZWQuTGlzdF0sIFtEZWZlcnJlZC5RdWV1ZV0sIGFuZFxuICAgIFtEZWZlcnJlZC5TZXF1ZW5jZV0uICBUaGUgW01vbmFkX3NlcXVlbmNlLmhvd10gdHlwZSBzcGVjaWZpZXMgdGhlIHBhcmFsbGVsaXNtIG9mXG4gICAgY29udGFpbmVyIGl0ZXJhdG9ycy4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgaG93ID1cbiAgWyBgUGFyYWxsZWwgKCoqIGxpa2UgW2BNYXhfY29uY3VycmVudF9qb2JzIEludC5tYXhfdmFsdWVdICopXG4gIHwgYFNlcXVlbnRpYWxcbiAgKCoqIFtgU2VxdWVudGlhbF0gaXMgb2Z0ZW4gYnV0IG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgW2BNYXhfY29uY3VycmVudF9qb2JzIDFdXG4gICAgICAoZm9yIGV4YW1wbGUsIHRoZXkgZGlmZmVyIGluIHRoZSBbT3JfZXJyb3JdIG1vbmFkKS4gKilcbiAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBvZiBpbnRcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIG1vbmFkXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBmb2xkaSA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIG1vbmFkXG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2Egb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IChpbnQgKiAnYSkgb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiBvcHRpb24gbW9uYWRcbiAgdmFsIGZpbmRfbWFwaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+IGJvb2wgbW9uYWRcbiAgdmFsIGFsbCA6ICdhIG1vbmFkIHQgLT4gJ2EgdCBtb25hZFxuICB2YWwgYWxsX3VuaXQgOiB1bml0IG1vbmFkIHQgLT4gdW5pdCBtb25hZFxuXG4gICgqKiB7MiBEZWZlcnJlZCBpdGVyYXRvcnN9XG5cbiAgICAgIEluIHRoZSBmb2xsb3dpbmcsIHRoZSBkZWZhdWx0IFtob3ddIGlzIFtgU2VxdWVudGlhbF0gKilcblxuICB2YWwgaW5pdCA6IGhvdzpob3cgLT4gaW50IC0+IGY6KGludCAtPiAnYSBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgaXRlciA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBpdGVyaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCBtb25hZCkgLT4gdW5pdCBtb25hZFxuICB2YWwgbWFwIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBtYXBpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGZpbHRlcmkgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIHQgbW9uYWRcbiAgdmFsIGZpbHRlcl9tYXAgOiBob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwaSA6IGhvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBjb25jYXRfbWFwIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIGNvbmNhdF9tYXBpIDogaG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG5lbmRcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbmluY2x1ZGUgRGVmZXJyZWQwXG5cbigqIFRvIGF2b2lkIGEgc3BhY2UgbGVhaywgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgW25ldmVyXSBhbGxvY2F0ZXMgYSBuZXcgaXZhciB3aGVuZXZlciBpdCBpc1xuICAgY2FsbGVkLiAgQ29kZSBjYW4gYmluZCBvbiBbbmV2ZXIgKCldLCBzbyBpZiB3ZSByZS11c2VkIHRoZSBpdmFyLCB3ZSBjb3VsZCBlbmRsZXNzbHlcbiAgIGFjY3VtdWxhdGUgaGFuZGxlcnMuICopXG5sZXQgbmV2ZXIgKCkgPSBJdmFyLnJlYWQgKEl2YXIuY3JlYXRlICgpKVxuXG5tb2R1bGUgTSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmZXJyZWQwXG5cbiAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgKCogV2UgbWFudWFsbHkgaW5saW5lIFtEZWZlcnJlZC5jcmVhdGVdIGhlcmUsIGJlY2F1c2UgdGhlIG5vbi1mbGFtYmRhIGNvbXBpbGVyIGlzbid0XG4gICAgICAgICBhYmxlIHRvIG9wdGltaXplIGF3YXkgdGhlIGNsb3N1cmUgdGhhdCB3b3VsZCBiZSBiZSBjcmVhdGVkLiAqKVxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuZmlsbCByZXN1bHQgKGYgYSkpO1xuICAgICAgb2ZfaXZhciByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxuaW5jbHVkZSBNXG5cbigqIFdlIHJlYmluZCBhbGwgdGhlIHZhcmlvdXMgW3JldHVybl1zIGJlY2F1c2UgdGhlIHVzZSBvZiB0aGUgW01vbmFkLk1ha2VdIGZ1bmN0b3JcbiAgIGNhdXNlcyB0aGUgY29tcGlsZXIgdG8gbm90IGlubGluZSBbcmV0dXJuXSwgYW5kIGhlbmNlIG1ha2VzIGl0IGltcG9zc2libGUgdG9cbiAgIHN0YXRpY2FsbHkgYWxsb2NhdGUgY29uc3RhbnRzIGxpa2UgW3JldHVybiAoKV0uICBCeSByZWJpbmRpbmcgW3JldHVybl0gYXNcbiAgIFtEZWZlcnJlZDAucmV0dXJuXSwgdGhlIGNvbXBpbGVyIGNhbiBzZWUgdGhhdDpcblxuICAge1tcbiAgICAgcmV0dXJuIGEgPSB7IEl2YXIuSW1tdXRhYmxlLiBjZWxsID0gRnVsbCBhIH0gXX1cblxuICAgQW5kIGhlbmNlLCBpZiBbYV0gaXMgY29uc3RhbnQsIHRoZW4gdGhlIHJldHVybiBpcyBjb25zdGFudCBhbmQgY2FuIGJlIHN0YXRpY2FsbHlcbiAgIGFsbG9jYXRlZC4gIFdoZW4gY29tcGlsaW5nIHdpdGggZmxhbWJkYSwgdGhlIGNvbXBpbGVyIGlubGluZXMgW3JldHVybl0gYW5kIHRoaXMgbWFudWFsXG4gICByZWJpbmRpbmcgd291bGQgbm90IGhlbHA7IHdlJ3ZlIGRlY2lkZWQgdG8gZG8gaXQgYW55d2F5IHNvIHRoYXQgbm9uLWZsYW1iZGEgYnVpbGRzXG4gICBnZXQgdGhlIG9wdGltaXphdGlvbi4gKilcbmxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgTS5MZXRfc3ludGF4XG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTS5MZXRfc3ludGF4LkxldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG4oKiBXZSBzaGFkb3cgW2FsbF0gb24tcHVycG9zZSBoZXJlLCBzaW5jZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uIGludHJvZHVjZXMgYSBjaGFpbiBvZlxuICAgYmluZHMgYXMgbG9uZyBhcyB0aGUgbGlzdC4gKilcbmxldCBhbGwgPSBgTWFrZV9zdXJlX3RvX2RlZmluZV9hbGxfZWxzZXdoZXJlXG5sZXQgXyA9IGFsbFxubGV0IHVuaXQgPSByZXR1cm4gKClcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuICBsZXQgcHB4X2JvdGggPSBib3RoXG5lbmRcblxub3BlbiBJbmZpeFxuXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgKF8gOiB1bml0IHQpID0gKClcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID0gVCA6ICdiIERlZmVycmVkMC50ICogKCdiIC0+ICdhKSAtPiAnYSB0XG5cbiAgbGV0IG1hcCAoVCAodCwgZjEpKSB+ZjpmMiA9IFQgKHQsIGZ1biB4IC0+IGYyIChmMSB4KSlcbmVuZFxuXG5tb2R1bGUgVW5yZWdpc3RlciA9IHN0cnVjdFxuICAoKiBUaGlzIHJlcHJlc2VudGF0aW9uIHNhdmVzIDJuIHdvcmRzIGZvciBhIGxpc3Qgb2YgbiBjaG9pY2VzLiAqKVxuICB0eXBlICdyIHQgPVxuICAgIHwgTmlsIDogJ3IgdFxuICAgIHwgQ29ucyA6ICdhIERlZmVycmVkMC50ICogKCdhIC0+ICdyKSAqICdhIERlZmVycmVkMC5IYW5kbGVyLnQgKiAnciB0IC0+ICdyIHRcblxuICBsZXQgcmVjIHByb2Nlc3MgPSBmdW5jdGlvblxuICAgIHwgTmlsIC0+ICgpXG4gICAgfCBDb25zICh0LCBfZiwgaGFuZGxlciwgcmVzdCkgLT5cbiAgICAgIHJlbW92ZV9oYW5kbGVyIHQgaGFuZGxlcjtcbiAgICAgIHByb2Nlc3MgcmVzdFxuICA7O1xuZW5kXG5cbmxldCBjaG9pY2UgdCBmID0gQ2hvaWNlLlQgKHQsIGYpXG5cbmxldCBlbmFibGVkIGNob2ljZXMgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IHVucmVnaXN0ZXJzID0gcmVmIFVucmVnaXN0ZXIuTmlsIGluXG4gIGxldCByZWFkeSBfID1cbiAgICBpZiBJdmFyLmlzX2VtcHR5IHJlc3VsdFxuICAgIHRoZW4gKFxuICAgICAgVW5yZWdpc3Rlci5wcm9jZXNzICF1bnJlZ2lzdGVycztcbiAgICAgIEl2YXIuZmlsbCByZXN1bHQgKGZ1biAoKSAtPlxuICAgICAgICBMaXN0LnJldlxuICAgICAgICAgIChMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpbXSB+ZjooZnVuIGFjIChDaG9pY2UuVCAodCwgZikpIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcGVlayB0IHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gYWNcbiAgICAgICAgICAgICB8IFNvbWUgdiAtPiBmIHYgOjogYWMpKSkpXG4gIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGluXG4gIHVucmVnaXN0ZXJzXG4gIDo9IExpc3QuZm9sZCBjaG9pY2VzIH5pbml0OlVucmVnaXN0ZXIuTmlsIH5mOihmdW4gYWNjIChDaG9pY2UuVCAodCwgZikpIC0+XG4gICAgQ29ucyAodCwgZiwgRGVmZXJyZWQwLmFkZF9oYW5kbGVyIHQgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQsIGFjYykpO1xuICBJdmFyLnJlYWQgcmVzdWx0XG47O1xuXG5sZXQgcmVjIGNob29zZV9yZXN1bHQgY2hvaWNlcyA9XG4gIG1hdGNoIGNob2ljZXMgd2l0aFxuICB8IFVucmVnaXN0ZXIuTmlsIC0+IGFzc2VydCBmYWxzZVxuICB8IFVucmVnaXN0ZXIuQ29ucyAodCwgZiwgXywgcmVzdCkgLT5cbiAgICAobWF0Y2ggcGVlayB0IHdpdGhcbiAgICAgfCBOb25lIC0+IGNob29zZV9yZXN1bHQgcmVzdFxuICAgICB8IFNvbWUgdiAtPiBmIHYpXG47O1xuXG5sZXQgZ2VuZXJpY19jaG9vc2UgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICAoKiBBIGJhY2stcGF0Y2hlZCByZWYgY291bGQgYmUgdXNlZCBoZXJlLCBidXQgdXNpbmcgbGF6eSBzYXZlcyBzb21lIG1lbW9yeVxuICAgICBiZWNhdXNlIHRoZSBHQyBldmVudHVhbGx5IHJlbW92ZXMgdGhlIGV4dHJhIGluZGlyZWN0aW9uLiAqKVxuICBsZXQgcmVjIHVucmVnaXN0ZXJzID1cbiAgICBsYXp5XG4gICAgICAoTGlzdC5mb2xkX3JpZ2h0IGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biAoQ2hvaWNlLlQgKHQsIGYpKSBhY2MgLT5cbiAgICAgICAgIFVucmVnaXN0ZXIuQ29ucyAodCwgZiwgRGVmZXJyZWQwLmFkZF9oYW5kbGVyIHQgcmVhZHkgZXhlY3V0aW9uX2NvbnRleHQsIGFjYykpKVxuICBhbmQgcmVhZHkgOiAnYS4gJ2EgLT4gdW5pdCA9XG4gICAgZnVuIF8gLT5cbiAgICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHVucmVnaXN0ZXJzID0gTGF6eS5mb3JjZSB1bnJlZ2lzdGVycyBpblxuICAgICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgdW5yZWdpc3RlcnM7XG4gICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKGNob29zZV9yZXN1bHQgdW5yZWdpc3RlcnMpKVxuICBpblxuICBsZXQgKF8gOiBfKSA9IExhenkuZm9yY2UgdW5yZWdpc3RlcnMgaW5cbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxuKCogW2Nob29zZTJdIGlzIGEgc3BlY2lhbGl6YXRpb24gb2YgW2Nob29zZV0gdGhhdCBoYXMgYmV0dGVyIG1lbW9yeSB1c2FnZS5cbiAgIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIFtjaG9vc2UyXSBrZWVwcyAyMiBleHRyYSB3b3JkcyBhbGl2ZVxuICAgZm9yIHRoZSBkdXJhdGlvbiBvZiBjaG9pY2Ugc3RheWluZyB1bmRldGVybWluZWQsIHdoaWxlIHRoZSBlcXVpdmFsZW50IGdlbmVyaWNcbiAgIFtjaG9vc2VdIGtlZXBzIDI3IChzZWUgdGhlIGJlbmNobWFyayBpbiAuLi9iZW5jaC9iaW4vYmVuY2hfY2hvb3NlX21lbW9yeV91c2FnZS5tbCkuICopXG5sZXQgY2hvb3NlMiBhIGZhIGIgZmIgPVxuICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgbGV0IHJlYyBhX2hhbmRsZXIgPSBsYXp5IChEZWZlcnJlZDAuYWRkX2hhbmRsZXIgYSByZWFkeSBleGVjdXRpb25fY29udGV4dClcbiAgYW5kIGJfaGFuZGxlciA9IGxhenkgKERlZmVycmVkMC5hZGRfaGFuZGxlciBiIHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0KVxuICBhbmQgcmVhZHkgOiAnYS4gJ2EgLT4gdW5pdCA9XG4gICAgZnVuIF8gLT5cbiAgICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgICB0aGVuIChcbiAgICAgICAgKCogVGhlIG9yZGVyIG9mIHRoZXNlIG9wZXJhdGlvbnMgbWF0dGVyczpcbiAgICAgICAgICAgaWYgd2UgY2FsbCBbZmJdIG9yIFtmYV0gZmlyc3QgYW5kIFtyZW1vdmVfaGFuZGxlcl0gYWZ0ZXIsIHRoZW5cbiAgICAgICAgICAgYW55IGV4Y2VwdGlvbnMgcmFpc2VkIHdpbGwgY2F1c2UgdGhlIGhhbmRsZXJzIHRvIHJlbWFpbiBhbmQgdGhlblxuICAgICAgICAgICB0aGUgXCJzZWNvbmQgY2hvaWNlXCIgZ2V0cyBhIGNoYW5jZSB0byBydW4uXG4gICAgICAgICopXG4gICAgICAgIHJlbW92ZV9oYW5kbGVyIGEgKExhenkuZm9yY2UgYV9oYW5kbGVyKTtcbiAgICAgICAgcmVtb3ZlX2hhbmRsZXIgYiAoTGF6eS5mb3JjZSBiX2hhbmRsZXIpO1xuICAgICAgICBtYXRjaCBwZWVrIGEgd2l0aFxuICAgICAgICB8IFNvbWUgYXYgLT4gSXZhci5maWxsIHJlc3VsdCAoZmEgYXYpXG4gICAgICAgIHwgTm9uZSAtPiBJdmFyLmZpbGwgcmVzdWx0IChmYiAodmFsdWVfZXhuIGIpKSlcbiAgaW5cbiAgbGV0IChfIDogXykgPSBMYXp5LmZvcmNlIGFfaGFuZGxlciBpblxuICBsZXQgKF8gOiBfKSA9IExhenkuZm9yY2UgYl9oYW5kbGVyIGluXG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCBjaG9vc2UgY2hvaWNlcyA9XG4gIG1hdGNoIGNob2ljZXMgd2l0aFxuICB8IFsgQ2hvaWNlLlQgKGEsIGZhKTsgQ2hvaWNlLlQgKGIsIGZiKSBdIC0+IGNob29zZTIgYSBmYSBiIGZiXG4gIHwgY2hvaWNlcyAtPiBnZW5lcmljX2Nob29zZSBjaG9pY2VzXG47O1xuXG5sZXQgYW55X2YgdHMgZiA9IGNob29zZSAoTGlzdC5tYXAgdHMgfmY6KGZ1biB0IC0+IGNob2ljZSB0IGYpKVxubGV0IGFueSB0cyA9IGFueV9mIHRzIEZuLmlkXG5sZXQgYW55X3VuaXQgdHMgPSBhbnlfZiB0cyAoRm4uaWdub3JlIDogdW5pdCAtPiB1bml0KVxuXG5sZXQgZm9yXyBzdGFydCB+dG9fIH5kb18gPVxuICBpZiBzdGFydCA+IHRvX1xuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBsZXQlYmluZCAoKSA9IGRvXyBpIGluXG4gICAgICBpZiBpID49IHRvXyB0aGVuIHJldHVybiAoKSBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCBzdGFydClcbjs7XG5cbmxldCByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIGNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICAgIGYgc3RhdGVcbiAgICAgID4+PiBmdW5jdGlvblxuICAgICAgfCBgUmVwZWF0IHN0YXRlIC0+IGxvb3Agc3RhdGVcbiAgICAgIHwgYEZpbmlzaGVkIHJlc3VsdCAtPiBJdmFyLmZpbGwgZmluaXNoZWQgcmVzdWx0XG4gICAgaW5cbiAgICBsb29wIHN0YXRlKVxuOztcblxubGV0IGZvcmV2ZXIgc3RhdGUgZiA9XG4gIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSAoZnVuIHN0YXRlIC0+XG4gICAgbGV0JW1hcCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICBgUmVwZWF0IHN0YXRlKVxuICA+Pj4gbmV2ZXJfcmV0dXJuc1xuOztcblxudHlwZSBob3cgPSBNb25hZF9zZXF1ZW5jZS5ob3cgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIHR5cGUgTW9uYWRfc2VxdWVuY2UgPSBNb25hZF9zZXF1ZW5jZS5TIHdpdGggdHlwZSAnYSBtb25hZCA6PSAnYSB0XG5cblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgfCB4IDo6IHhzIC0+IGYgYiB4ID4+PiBmdW4gYiAtPiBsb29wIHhzIGJcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IHNlcW1hcCB0IH5mID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYnMgYSAtPiBmIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpID4+fCBMaXN0LnJldlxubGV0IGFsbCBkcyA9IHNlcW1hcCBkcyB+ZjpGbi5pZFxubGV0IGFsbF91bml0IGRzID0gZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZClcbmxldCBvayB4ID0geCA+PnwgZnVuIHggLT4gT2sgeFxuXG5tb2R1bGUgRm9yX3Rlc3RzID0gc3RydWN0XG4gIGxldCBnZW5lcmljX2Nob29zZSA9IGdlbmVyaWNfY2hvb3NlXG5lbmRcbiIsIm9wZW4gRGVmZXJyZWQxXG5pbmNsdWRlIEluZml4XG5pbmNsdWRlIExldF9zeW50YXhcblxubGV0IGNob2ljZSA9IGNob2ljZVxubGV0IGNob29zZSA9IGNob29zZVxubGV0IGRvbid0X3dhaXRfZm9yID0gZG9uJ3Rfd2FpdF9mb3JcbmxldCBuZXZlciA9IG5ldmVyXG5sZXQgcmV0dXJuID0gcmV0dXJuXG5sZXQgdXBvbiA9IHVwb25cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHUgPVxuICB8IEVtcHR5IG9mICdhIEl2YXIudFxuICB8IEZ1bGxcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgJ2EgdCA9ICdhIHUgcmVmIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBGdWxsIC0+ICgpXG4gICAgfCBFbXB0eSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB0ID0gcmVmIChFbXB0eSBpdmFyKSBpblxuICB0LCBJdmFyLnJlYWQgaXZhclxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgRW1wdHkgXyAtPiB0cnVlXG4gIHwgRnVsbCAtPiBmYWxzZVxuOztcblxubGV0IGZpbGwgdCBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IGkgLT5cbiAgICB0IDo9IEZ1bGw7XG4gICAgSXZhci5maWxsIGkgYVxuICB8IEZ1bGwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGZpbGwgZnVsbCBpdmFyXCJdXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFN0cmVhbSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBuZXh0IERlZmVycmVkLnRcblxuICBhbmQgJ2EgbmV4dCA9ICdhIFR5cGVzLlN0cmVhbS5uZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgICBsZXQgcmVjIGxvb3AgZCBhYyA6IFNleHAudCA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgfCBOb25lIC0+IExpc3QgKExpc3QucmV2IChTZXhwLkF0b20gXCIuLi5cIiA6OiBhYykpXG4gICAgICB8IFNvbWUgTmlsIC0+IExpc3QgKExpc3QucmV2IGFjKVxuICAgICAgfCBTb21lIChDb25zIChhLCB0KSkgLT4gbG9vcCB0IChzZXhwX29mX2EgYSA6OiBhYylcbiAgICBpblxuICAgIGxvb3AgdCBbXVxuICA7O1xuXG4gIGxldCBuZXh0IHQgPSB0XG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuVGFpbC50ID1cbiAgeyAoKiBbbmV4dF0gcG9pbnRzIGF0IHRoZSB0YWlsIG9mIHRoZSBzdHJlYW0gKikgbXV0YWJsZSBuZXh0IDogJ2EgU3RyZWFtLm5leHQgSXZhci50IH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IHNleHBfb2ZfdCBfIHQgOiBTZXhwLnQgPVxuICBBdG9tIChpZiBJdmFyLmlzX2VtcHR5IHQubmV4dCB0aGVuIFwiPG9wZW4gdGFpbD5cIiBlbHNlIFwiPGNsb3NlZCB0YWlsPlwiKVxuOztcblxubGV0IGNyZWF0ZSAoKSA9IHsgbmV4dCA9IEl2YXIuY3JlYXRlICgpIH1cbmxldCBjb2xsZWN0IHQgPSBJdmFyLnJlYWQgKG5leHQgdClcbmxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCAobmV4dCB0KVxuXG5sZXQgZmlsbF9leG4gdCB2ID1cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcInN0cmVhbSBpcyBjbG9zZWRcIl0gZWxzZSBJdmFyLmZpbGwgKG5leHQgdCkgdlxuOztcblxubGV0IGNsb3NlX2V4biB0ID0gZmlsbF9leG4gdCBOaWxcbmxldCBjbG9zZV9pZl9vcGVuIHQgPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIEl2YXIuZmlsbCAobmV4dCB0KSBOaWxcblxubGV0IGV4dGVuZCB0IHYgPVxuICBsZXQgbmV4dCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGZpbGxfZXhuIHQgKENvbnMgKHYsIEl2YXIucmVhZCBuZXh0KSk7XG4gIHQubmV4dCA8LSBuZXh0XG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBTdHJlYW0gPSBUYWlsLlN0cmVhbVxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yMFxuaW5jbHVkZSBNb25pdG9yXG5cbnR5cGUgbW9uaXRvciA9IHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5uYW1lOmlnbm9yZVxuICAgICAgfmhlcmU6aWdub3JlXG4gICAgICB+aWQ6aWdub3JlXG4gICAgICB+Zm9yd2FyZGluZzppZ25vcmVcbiAgICAgIH5uZXh0X2Vycm9yOihjaGVjayAoZnVuIG5leHRfZXJyb3IgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IG5leHRfZXJyb3IpKSlcbiAgICAgIH5oYW5kbGVyc19mb3JfYWxsX2Vycm9yczppZ25vcmVcbiAgICAgIH50YWlsc19mb3JfYWxsX2Vycm9yczppZ25vcmVcbiAgICAgIH5oYXNfc2Vlbl9lcnJvcjppZ25vcmUpXG47O1xuXG5sZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSA9IFNjaGVkdWxlci4oY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpXG5sZXQgY3VycmVudCAoKSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpXG5sZXQgZGV0YWNoIHQgPSB0LmZvcndhcmRpbmcgPC0gRGV0YWNoZWRcblxudHlwZSBoYW5kbGVyX3N0YXRlID1cbiAgfCBVbmluaXRpYWxpemVkXG4gIHwgUnVubmluZyBvZiAoRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy5FbHQudFxuICB8IFRlcm1pbmF0ZWRcblxubGV0IGRldGFjaF9hbmRfaXRlcl9lcnJvcnMgdCB+ZiA9XG4gIGRldGFjaCB0O1xuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gIGxldCBoYW5kbGVyX3N0YXRlX3JlZiA9IHJlZiBVbmluaXRpYWxpemVkIGluXG4gIGxldCBydW5fZiBleG4gPVxuICAgIG1hdGNoICFoYW5kbGVyX3N0YXRlX3JlZiB3aXRoXG4gICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVGVybWluYXRlZCAtPiAoKVxuICAgIHwgUnVubmluZyBiYWdfZWx0IC0+XG4gICAgICAodHJ5IGYgZXhuIHdpdGhcbiAgICAgICB8IGlubmVyX2V4biAtPlxuICAgICAgICAgaGFuZGxlcl9zdGF0ZV9yZWYgOj0gVGVybWluYXRlZDtcbiAgICAgICAgIEJhZy5yZW1vdmUgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyBiYWdfZWx0O1xuICAgICAgICAgKCogW3J1bl9mXSBhbHdheXMgcnVucyBpbiBbZXhlY3V0aW9uX2NvbnRleHRdLiAgSGVuY2UsIFtyYWlzZSBpbm5lcl9leG5dIHNlbmRzXG4gICAgICAgICAgICBbaW5uZXJfZXhuXSB0byBbZXhlY3V0aW9uX2NvbnRleHRdJ3MgbW9uaXRvciwgaS5lLiB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlblxuICAgICAgICAgICAgW2RldGFjaF9hbmRfaXRlcl9lcnJvcnNdIHdhcyBjYWxsZWQuICopXG4gICAgICAgICByYWlzZSBpbm5lcl9leG4pXG4gIGluXG4gIGhhbmRsZXJfc3RhdGVfcmVmXG4gIDo9IFJ1bm5pbmcgKEJhZy5hZGQgdC5oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyAoZXhlY3V0aW9uX2NvbnRleHQsIHJ1bl9mKSlcbjs7XG5cbmxldCBkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gdCA9XG4gIGRldGFjaCB0O1xuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIHQudGFpbHNfZm9yX2FsbF9lcnJvcnMgPC0gdGFpbCA6OiB0LnRhaWxzX2Zvcl9hbGxfZXJyb3JzO1xuICBUYWlsLmNvbGxlY3QgdGFpbFxuOztcblxubGV0IGdldF9uZXh0X2Vycm9yIHQgPSBJdmFyLnJlYWQgdC5uZXh0X2Vycm9yXG5cbmxldCBkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIHQgPVxuICBkZXRhY2ggdDtcbiAgZ2V0X25leHRfZXJyb3IgdFxuOztcblxubGV0IGNyZWF0ZSA/aGVyZSA/aW5mbyA/bmFtZSAoKSA9XG4gIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gIGNyZWF0ZV93aXRoX3BhcmVudCA/aGVyZSA/aW5mbyA/bmFtZSAoU29tZSBwYXJlbnQpXG47O1xuXG5tb2R1bGUgTW9uaXRvcl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4biA6IGV4blxuICAgIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gICAgOyBiYWNrdHJhY2VfaGlzdG9yeSA6IEJhY2t0cmFjZS50IGxpc3RcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICB9XG5cbiAgbGV0IGJhY2t0cmFjZSB0ID0gdC5iYWNrdHJhY2VcbiAgbGV0IGV4dHJhY3RfZXhuIHQgPSB0LmV4blxuXG4gIGxldCBiYWNrdHJhY2VfdHJ1bmNhdGlvbl9oZXVyaXN0aWNzID1cbiAgICBsZXQgam9iX3F1ZXVlID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJqb2JfcXVldWUubWxcXFwiXCIgaW5cbiAgICBsZXQgZGVmZXJyZWQwID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJkZWZlcnJlZDAubWxcXFwiXCIgaW5cbiAgICBsZXQgZGVmZXJyZWQxID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJkZWZlcnJlZDEubWxcXFwiXCIgaW5cbiAgICBsZXQgbW9uaXRvciA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwibW9uaXRvci5tbFxcXCJcIiBpblxuICAgIGxldCBpbXBvcnQwID0gXCJSYWlzZWQgYXQgZmlsZSBcXFwiaW1wb3J0MC5tbFxcXCJcIiBpblxuICAgIGxldCBlcnJvciA9IFwiQ2FsbGVkIGZyb20gZmlsZSBcXFwiZXJyb3IubWxcXFwiXCIgaW5cbiAgICBmdW4gdHJhY2VzIC0+XG4gICAgICAoKiAuLi90ZXN0L3Rlc3RfdHJ5X3dpdGhfZXJyb3JfZGlzcGxheS5tbCBtYWtlcyBzdXJlIHRoaXMgc3RheXMgdXAtdG8tZGF0ZS4gKilcbiAgICAgIGxldCB0cmFjZXMgPVxuICAgICAgICBtYXRjaCB0cmFjZXMgd2l0aFxuICAgICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6aW1wb3J0MCAtPlxuICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgfCB0MiA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmVycm9yIC0+XG4gICAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgICB8IHQzIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQzIH5wcmVmaXg6ZXJyb3IgLT4gcmVzdFxuICAgICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgICAgfCBfIC0+IHJlc3QpXG4gICAgICAgIHwgXyAtPiB0cmFjZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBMaXN0LnJldiB0cmFjZXMgd2l0aFxuICAgICAgfCB0MSA6OiByZXN0IHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MSB+cHJlZml4OmpvYl9xdWV1ZSAtPlxuICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgICAgIHwgdDIgOjogcmVzdFxuICAgICAgICAgICAgICB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpkZWZlcnJlZDBcbiAgICAgICAgICAgICAgICAoKiBiaW5kICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMVxuICAgICAgICAgICAgICAgICgqIG1hcCAqKVxuICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDptb25pdG9yXG4gICAgICAgICAgICAgICgqIHRyeV93aXRoICopIC0+IExpc3QucmV2IHJlc3RcbiAgICAgICAgICAgIHwgXyAtPiBMaXN0LnJldiByZXN0KVxuICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICB8IF8gLT4gdHJhY2VzXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB7IGV4bjsgYmFja3RyYWNlOyBiYWNrdHJhY2VfaGlzdG9yeTsgbW9uaXRvciB9ID1cbiAgICBsZXQgbW9uaXRvciA9XG4gICAgICBsZXQgbmFtZSA9XG4gICAgICAgIG1hdGNoIEluZm8udG9fc3RyaW5nX2h1bSBtb25pdG9yLm5hbWUgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgICB8IHMgLT4gU29tZSBzXG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIG1hdGNoIG1vbml0b3IuaGVyZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBoZXJlIC0+XG4gICAgICAgICAgKCogV2UgZGlzcGxheSB0aGUgZnVsbCBmaWxlbmFtZSwgd2hlcmVhcyBiYWNrdHJhY2VzIG9ubHkgaGF2ZSBiYXNlbmFtZXMsIGJ1dFxuICAgICAgICAgICAgIHBlcmhhcHMgdGhhdCdzIHdoYXQgc2hvdWxkIGNoYW5nZS4gKilcbiAgICAgICAgICBsZXQgY29sdW1uID0gaGVyZS5wb3NfY251bSAtIGhlcmUucG9zX2JvbCBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICgqIFdlIGhpZGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgd2hlbiBbYW1fcnVubmluZ190ZXN0XSB0byBtYWtlIHRlc3Qgb3V0cHV0XG4gICAgICAgICAgICAgICBtb3JlIHJvYnVzdC4gIFRoaXMgc2F2ZXMgcGVvcGxlIG1hbnVhbGx5IGhpZGluZyB0aGUgbnVtYmVycyBvciBldmVuIHdvcnNlLFxuICAgICAgICAgICAgICAgbGVhdmluZyB0aGVtIGluIHRlc3Qgb3V0cHV0LiAgSGlkaW5nIGluIHRlc3QgaXMgZGlmZmVyZW50IGNob2ljZSBmb3JcbiAgICAgICAgICAgICAgIGJlaGF2aW9yIHRoYW4gb3VyIGNvZGViYXNlIG1ha2VzIGZvciBbQmFja3RyYWNlLmVsaWRlXSwgd2hpY2ggaGFzIGRlZmF1bHRcbiAgICAgICAgICAgICAgIFtmYWxzZV0sIGFuZCB0aHVzIHNob3dzIGJhY2t0cmFjZXMgaW4gdGVzdC4gIFRoZXJlIGFyZSBhIGNvdXBsZSByZWFzb25zIGZvclxuICAgICAgICAgICAgICAgdGhpcyBkaWZmZXJlbnQgY2hvaWNlLiAgRmlyc3QsIGV4cGVjdC10ZXN0IG1hY2hpbmVyeSBoYXMgY2hlY2sgdG8gcHJldmVudFxuICAgICAgICAgICAgICAgYmFja3RyYWNlcyBmcm9tIGFwcGVhcmluZyBpbiB0ZXN0IG91dHB1dC4gIEl0IGhhcyBubyBzdWNoIGNoZWNrcyBmb3IgbGluZVxuICAgICAgICAgICAgICAgYW5kIGNvbHVtbiBudW1iZXJzLiAgU2Vjb25kLCB3aGVuIHRoZXJlIGlzIGEgcmVhbCBlcnJvciBhbmQgeW91IHdhbnQgdG8gc2VlXG4gICAgICAgICAgICAgICB0aGUgYmFja3RyYWNlLCB0aHJvd2luZyBhd2F5IHRoZSB3aG9sZSBiYWNrdHJhY2UgbG9zZXMgYSBsb3Qgb2YgcG90ZW50aWFsbHlcbiAgICAgICAgICAgICAgIHVzZWZ1bCBpbmZvcm1hdGlvbiB0aGF0IG1heSBiZSBoYXJkIHRvIHJlY292ZXIuICBXaGVyZWFzIHdlJ3JlIGp1c3RcbiAgICAgICAgICAgICAgIHRocm93aW5nIGEgd2F5IGEgbGluZSBudW1iZXIgYW5kIGNvbHVtbiwgd2hpY2ggYXJlIGEgbWlub3IgY29udmVuaWVuY2VcbiAgICAgICAgICAgICAgIGdpdmVuIHRoYXQgdGhlIGZpbGVuYW1lIGhhcyBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbi4gKilcbiAgICAgICAgICAgIChpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgICAgICAgICB0aGVuIHNwcmludGYgXCJmaWxlICVTLCBsaW5lIExJTkUsIGNoYXJhY3RlcnMgQzEtQzJcIiBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJmaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgICAgaGVyZS5wb3NfZm5hbWVcbiAgICAgICAgICAgICAgICAgaGVyZS5wb3NfbG51bVxuICAgICAgICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgICAgICAgY29sdW1uKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHBvcywgbmFtZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSBwb3MsIE5vbmUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgYXQgJXNcIiBwb3MgXVxuICAgICAgfCBOb25lLCBTb21lIG5hbWUgLT4gWyBzcHJpbnRmIFwiQ2F1Z2h0IGJ5IG1vbml0b3IgJXNcIiBuYW1lIF1cbiAgICAgIHwgU29tZSBwb3MsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlcyBhdCAlc1wiIG5hbWUgcG9zIF1cbiAgICBpblxuICAgIGxldCBiYWNrdHJhY2UgPVxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICB8IFNvbWUgYmFja3RyYWNlIC0+IEJhY2t0cmFjZS50b19zdHJpbmdfbGlzdCBiYWNrdHJhY2VcbiAgICAgIGluXG4gICAgICBiYWNrdHJhY2VfdHJ1bmNhdGlvbl9oZXVyaXN0aWNzIGJhY2t0cmFjZSBAIG1vbml0b3JcbiAgICBpblxuICAgIGxldCBsaXN0X2lmX25vdF9lbXB0eSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgXyA6OiBfIGFzIGwgLT4gU29tZSBsXG4gICAgaW5cbiAgICBbJXNleHBcbiAgICAgIChleG4gOiBleG4pXG4gICAgLCAobGlzdF9pZl9ub3RfZW1wdHkgYmFja3RyYWNlIDogKHN0cmluZyBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAsIGBiYWNrdHJhY2VfaGlzdG9yeVxuICAgICAgICAobGlzdF9pZl9ub3RfZW1wdHkgYmFja3RyYWNlX2hpc3RvcnkgOiAoQmFja3RyYWNlLnQgbGlzdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICA7O1xuZW5kXG5cbmV4Y2VwdGlvbiBNb25pdG9yX2V4biBvZiBNb25pdG9yX2V4bi50XG5cbmxldCAoKSA9XG4gIFNleHBsaWIuQ29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBNb25pdG9yX2V4bl0gKGZ1bmN0aW9uXG4gICAgfCBNb25pdG9yX2V4biB0IC0+IFslc2V4cCBcIm1vbml0b3IubWwuRXJyb3JcIiA6OiAodCA6IE1vbml0b3JfZXhuLnQpXVxuICAgIHwgXyAtPlxuICAgICAgKCogUmVhY2hpbmcgdGhpcyBicmFuY2ggaW5kaWNhdGVzIGEgYnVnIGluIHNleHBsaWIuICopXG4gICAgICBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgZXh0cmFjdF9leG4gZXhuID1cbiAgbWF0Y2ggZXhuIHdpdGhcbiAgfCBNb25pdG9yX2V4biBlcnJvciAtPiBlcnJvci5leG5cbiAgfCBleG4gLT4gZXhuXG47O1xuXG5sZXQgc2VuZF9leG4gdCA/KGJhY2t0cmFjZSA9IGBHZXQpIGV4biA9XG4gIGxldCBleG4gPVxuICAgIG1hdGNoIGV4biB3aXRoXG4gICAgfCBNb25pdG9yX2V4biBfIC0+IGV4blxuICAgIHwgXyAtPlxuICAgICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgICAgIHwgYEdldCAtPiBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50X2Zvcl9leG4gZXhuXG4gICAgICAgIHwgYFRoaXMgYiAtPiBTb21lIGJcbiAgICAgIGluXG4gICAgICBsZXQgYmFja3RyYWNlX2hpc3RvcnkgPSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkuYmFja3RyYWNlX2hpc3RvcnkgaW5cbiAgICAgIE1vbml0b3JfZXhuIHsgTW9uaXRvcl9leG4uZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yID0gdCB9XG4gIGluXG4gIGlmIERlYnVnLm1vbml0b3Jfc2VuZF9leG4gdGhlbiBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgdC5oYXNfc2Vlbl9lcnJvciA8LSB0cnVlO1xuICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIEl2YXIuZmlsbCB0Lm5leHRfZXJyb3IgZXhuO1xuICAgIHQubmV4dF9lcnJvciA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgLT5cbiAgICAgIGlmIERlYnVnLm1vbml0b3Jfc2VuZF9leG5cbiAgICAgIHRoZW5cbiAgICAgICAgRGVidWcubG9nIFwiTW9uaXRvci5zZW5kX2V4biBmb3VuZCBsaXN0ZW5pbmcgbW9uaXRvclwiICh0LCBleG4pIFslc2V4cF9vZjogdCAqIGV4bl07XG4gICAgICBCYWcuaXRlciB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIH5mOihmdW4gKGV4ZWN1dGlvbl9jb250ZXh0LCBmKSAtPlxuICAgICAgICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBleG4pO1xuICAgICAgTGlzdC5pdGVyIHQudGFpbHNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biB0YWlsIC0+IFRhaWwuZXh0ZW5kIHRhaWwgZXhuKVxuICAgIHwgUGFyZW50IHBhcmVudCAtPiBsb29wIHBhcmVudFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPlxuICAgICAgKCogRG8gbm90IGNoYW5nZSB0aGlzIGJyYW5jaCB0byBwcmludCB0aGUgZXhjZXB0aW9uIG9yIHRvIGV4aXQuICBIYXZpbmcgdGhlXG4gICAgICAgICBzY2hlZHVsZXIgcmFpc2UgYW4gdW5jYXVnaHQgZXhjZXB0aW9uIGlzIHRoZSBuZWNlc3NhcnkgYmVoYXZpb3IgZm9yIHByb2dyYW1zXG4gICAgICAgICB0aGF0IGNhbGwgW1NjaGVkdWxlci5nb10gYW5kIHdhbnQgdG8gaGFuZGxlIGl0LiAqKVxuICAgICAgU2NoZWR1bGVyLihnb3RfdW5jYXVnaHRfZXhuICh0ICgpKSkgZXhuICghQXN5bmNfa2VybmVsX2NvbmZpZy50YXNrX2lkICgpKVxuICBpblxuICBsb29wIHRcbjs7XG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyID0gc3RydWN0XG4gIGxldCB3aXRoaW5fY29udGV4dCBjb250ZXh0IGYgPVxuICAgIFNjaGVkdWxlci4od2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGNvbnRleHQgfmY6KGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGYgd2l0aFxuICAgICAgfCBPayB4IC0+IE9rIHhcbiAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgIHNlbmRfZXhuIChFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIGNvbnRleHQpIGV4biB+YmFja3RyYWNlOmBHZXQ7XG4gICAgICAgIEVycm9yICgpKVxuICA7O1xuXG4gIGxldCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBsZXQgdG1wX2NvbnRleHQgPVxuICAgICAgRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2UgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkpID9tb25pdG9yID9wcmlvcml0eVxuICAgIGluXG4gICAgd2l0aGluX2NvbnRleHQgdG1wX2NvbnRleHQgZlxuICA7O1xuXG4gIGxldCB3aXRoaW4nID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBPayBkIC0+IGRcbiAgOztcblxuICBsZXQgd2l0aGluX3YgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gTm9uZVxuICAgIHwgT2sgeCAtPiBTb21lIHhcbiAgOztcblxuICBsZXQgd2l0aGluID9tb25pdG9yID9wcmlvcml0eSBmID1cbiAgICBtYXRjaCB3aXRoaW5fZ2VuID9tb25pdG9yID9wcmlvcml0eSBmIHdpdGhcbiAgICB8IEVycm9yICgpIC0+ICgpXG4gICAgfCBPayAoKSAtPiAoKVxuICA7O1xuXG4gIGxldCBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgeCA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgU2NoZWR1bGVyLmVucXVldWVcbiAgICAgIHNjaGVkdWxlclxuICAgICAgKEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlXG4gICAgICAgICAoU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyKVxuICAgICAgICAgP21vbml0b3JcbiAgICAgICAgID9wcmlvcml0eSlcbiAgICAgIHdvcmtcbiAgICAgIHhcbiAgOztcblxuICBsZXQgc2NoZWR1bGUgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgPSBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgKClcblxuICBsZXQgc2NoZWR1bGUnID1cbiAgICAoKiBGb3IgcGVyZm9ybWFuY2UsIHdlIHVzZSBbc2NoZWR1bGVfd2l0aF9kYXRhXSB3aXRoIGEgY2xvc2VkIGZ1bmN0aW9uLCBhbmQgaW5saW5lXG4gICAgICAgW0RlZmVycmVkLmNyZWF0ZV0uICopXG4gICAgbGV0IHVwb25fd29ya19maWxsX2kgKHdvcmssIGkpID0gdXBvbiAod29yayAoKSkgKGZ1biBhIC0+IEl2YXIuZmlsbCBpIGEpIGluXG4gICAgZnVuID9tb25pdG9yID9wcmlvcml0eSB3b3JrIC0+XG4gICAgICBsZXQgaSA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBzY2hlZHVsZV93aXRoX2RhdGEgP21vbml0b3IgP3ByaW9yaXR5IHVwb25fd29ya19maWxsX2kgKHdvcmssIGkpO1xuICAgICAgSXZhci5yZWFkIGlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgbGV0IHNjaGVkdWxlciA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgc2NoZWR1bGVyIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGEpXG4gIDs7XG5cbiAgbGV0IHByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBsZXQgY2FsbF9hbmRfZmlsbCAoZiwgYSwgaSkgPSB1cG9uIChmIGEpIChmdW4gciAtPiBJdmFyLmZpbGwgaSByKSBpblxuICAgIHN0YWdlIChmdW4gYSAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaSAtPlxuICAgICAgICBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgY2FsbF9hbmRfZmlsbCAoZiwgYSwgaSkpKVxuICA7O1xuZW5kXG5cbm9wZW4gRXhwb3J0ZWRfZm9yX3NjaGVkdWxlclxuXG5sZXQgc3RyZWFtX2l0ZXIgc3RyZWFtIH5mID1cbiAgbGV0IHJlYyBsb29wIHN0cmVhbSA9XG4gICAgU3RyZWFtLm5leHQgc3RyZWFtXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHYsIHN0cmVhbSkgLT5cbiAgICAgIGxvb3Agc3RyZWFtO1xuICAgICAgZiB2XG4gIGluXG4gIGxvb3Agc3RyZWFtXG47O1xuXG4oKiBBbiBbJ2EgT2tfYW5kX2V4bnMudF0gcmVwcmVzZW50cyB0aGUgb3V0cHV0IG9mIGEgY29tcHV0YXRpb24gcnVubmluZyBpbiBhIGRldGFjaGVkXG4gICBtb25pdG9yLiAqKVxubW9kdWxlIE9rX2FuZF9leG5zID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBvayA6ICdhIERlZmVycmVkLnRcbiAgICA7IGV4bnMgOiBleG4gU3RyZWFtLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW4gZiA9XG4gICAgKCogV2UgY2FsbCBbY3JlYXRlX3dpdGhfcGFyZW50IE5vbmVdIGJlY2F1c2UgW21vbml0b3JdIGRvZXMgbm90IG5lZWQgYSBwYXJlbnQuICBJdFxuICAgICAgIGRvZXMgbm90IGJlY2F1c2Ugd2UgY2FsbCBbZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3JdIGFuZCBkZWFsIHdpdGggdGhlXG4gICAgICAgZXJyb3JzIGV4cGxpY2l0bHksIHRodXMgW3NlbmRfZXhuXSB3b3VsZCBuZXZlciBwcm9wYWdhdGUgYW4gZXhuIHBhc3QgW21vbml0b3JdLiAqKVxuICAgIGxldCBtb25pdG9yID0gY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIE5vbmUgaW5cbiAgICBsZXQgZXhucyA9IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yIGluXG4gICAgbGV0IG9rID1cbiAgICAgIG1hdGNoIHJ1biB3aXRoXG4gICAgICB8IGBOb3cgLT4gd2l0aGluJyB+bW9uaXRvciBmXG4gICAgICB8IGBTY2hlZHVsZSAtPiBzY2hlZHVsZScgfm1vbml0b3IgZlxuICAgIGluXG4gICAgeyBvazsgZXhucyB9XG4gIDs7XG5lbmRcblxubGV0IGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgIHJlc3VsdFxuICAgICAgZXhuc1xuICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0XG4gID1cbiAgaWYgSXZhcl9maWxsZXIuaXNfZW1wdHkgcmVzdWx0X2ZpbGxlclxuICB0aGVuIChcbiAgICBJdmFyX2ZpbGxlci5maWxsIHJlc3VsdF9maWxsZXIgcmVzdWx0O1xuICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zKVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGhfbG9nX2V4biA6IChleG4gLT4gdW5pdCkgcmVmID1cbiAgICByZWYgKGZ1biBleG4gLT5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiZmFpbGVkIHRvIHNldCBbTW9uaXRvci5FeHBlcnQudHJ5X3dpdGhfbG9nX2V4bl1cIiAoZXhuIDogRXhuLnQpXSlcbiAgOztcbmVuZFxuXG5sZXQgbWFrZV9oYW5kbGVfZXhuIHJlc3QgPVxuICBtYXRjaCByZXN0IHdpdGhcbiAgfCBgTG9nIC0+XG4gICAgKCogV2UgYXJlIGNhcmVmdWwgdG8gbm90IGNsb3NlIG92ZXIgY3VycmVudCBjb250ZXh0LCB3aGljaCBpcyBub3QgbmVlZGVkLiAqKVxuICAgICFFeHBlcnQudHJ5X3dpdGhfbG9nX2V4blxuICB8IGBSYWlzZSAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiBzZW5kX2V4biBwYXJlbnQgZXhuID9iYWNrdHJhY2U6Tm9uZVxuICB8IGBDYWxsIGYgLT5cbiAgICBsZXQgcGFyZW50ID0gY3VycmVudCAoKSBpblxuICAgIGZ1biBleG4gLT4gd2l0aGluIH5tb25pdG9yOnBhcmVudCAoZnVuICgpIC0+IGYgZXhuKVxuOztcblxubGV0IHRyeV93aXRoXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwiXCIpXG4gICAgICA/ZXh0cmFjdF9leG46KGRvX2V4dHJhY3RfZXhuID0gZmFsc2UpXG4gICAgICA/KHJ1biA9IGBOb3cpXG4gICAgICA/KHJlc3QgPSBgUmFpc2UpXG4gICAgICBmXG4gID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMub2s7IGV4bnMgfSA9IE9rX2FuZF9leG5zLmNyZWF0ZSA/aGVyZSA/aW5mbyB+bmFtZSB+cnVuIGYgaW5cbiAgbGV0IGhhbmRsZV9leG4gPSBtYWtlX2hhbmRsZV9leG4gcmVzdCBpblxuICBsZXQgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMgPSBzdHJlYW1faXRlciBleG5zIH5mOmhhbmRsZV9leG4gaW5cbiAgKCogV2UgcnVuIFt3aXRoaW4nIH5tb25pdG9yOm1haW5dIHRvIGF2b2lkIGhvbGRpbmcgb24gdG8gcmVmZXJlbmNlcyB0byB0aGUgZXZhbHVhdGlvblxuICAgICBjb250ZXh0IGluIHdoaWNoIFt0cnlfd2l0aF0gd2FzIGNhbGxlZC4gIFRoaXMgYXZvaWRzIGEgc3BhY2UgbGVhayB3aGVuIGEgY2hhaW4gb2ZcbiAgICAgW3RyeV93aXRoXSdzIGFyZSBydW4gZWFjaCBuZXN0ZWQgd2l0aGluIHRoZSBwcmV2aW91cyBvbmUuICBXaXRob3V0IHRoZSBbd2l0aGluJ10sIHRoZVxuICAgICBlcnJvciBoYW5kbGluZyBmb3IgdGhlIGlubmVybW9zdCBbdHJ5X3dpdGhdIHdvdWxkIGtlZXAgYWxpdmUgdGhlIGVudGlyZSBjaGFpbi4gKilcbiAgd2l0aGluJyB+bW9uaXRvcjptYWluIChmdW4gKCkgLT5cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIG9rXG4gICAgdGhlbiAoXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucztcbiAgICAgIHJldHVybiAoT2sgKERlZmVycmVkLnZhbHVlX2V4biBvaykpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlc3VsdF9maWxsZXIsIHJlc3VsdCA9IEl2YXJfZmlsbGVyLmNyZWF0ZSAoKSBpblxuICAgICAgdXBvbiBvayAoZnVuIHJlcyAtPlxuICAgICAgICBmaWxsX3Jlc3VsdF9hbmRfaGFuZGxlX2JhY2tncm91bmRfZXJyb3JzXG4gICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgIChPayByZXMpXG4gICAgICAgICAgZXhuc1xuICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICB1cG9uIChTdHJlYW0ubmV4dCBleG5zKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgQ29ucyAoZXhuLCBleG5zKSAtPlxuICAgICAgICAgIGxldCBleG4gPSBpZiBkb19leHRyYWN0X2V4biB0aGVuIGV4dHJhY3RfZXhuIGV4biBlbHNlIGV4biBpblxuICAgICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICAgIHJlc3VsdF9maWxsZXJcbiAgICAgICAgICAgIChFcnJvciBleG4pXG4gICAgICAgICAgICBleG5zXG4gICAgICAgICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQpO1xuICAgICAgcmVzdWx0KSlcbjs7XG5cbmxldCB0cnlfd2l0aF9vcl9lcnJvciA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcInRyeV93aXRoX29yX2Vycm9yXCIpID9leHRyYWN0X2V4biA/cmVzdCBmID1cbiAgdHJ5X3dpdGggZiA/aGVyZSA/aW5mbyB+bmFtZSA/ZXh0cmFjdF9leG4gfnJ1bjpgTm93ID9yZXN0ID4+fCBPcl9lcnJvci5vZl9leG5fcmVzdWx0XG47O1xuXG5sZXQgdHJ5X3dpdGhfam9pbl9vcl9lcnJvclxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICA/KG5hbWUgPSBcInRyeV93aXRoX2pvaW5fb3JfZXJyb3JcIilcbiAgICAgID9leHRyYWN0X2V4blxuICAgICAgP3Jlc3RcbiAgICAgIGZcbiAgPVxuICB0cnlfd2l0aF9vcl9lcnJvciBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biA/cmVzdCA+PnwgT3JfZXJyb3Iuam9pblxuOztcblxubGV0IHByb3RlY3QgP2hlcmUgP2luZm8gPyhuYW1lID0gXCJNb25pdG9yLnByb3RlY3RcIikgP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgZiB+ZmluYWxseSA9XG4gIGxldCViaW5kIHIgPSB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP2hlcmUgP2luZm8gP3J1biA/cmVzdCB+bmFtZSBmIGluXG4gIGxldCVtYXAgZnIgPVxuICAgIHRyeV93aXRoXG4gICAgICB+ZXh0cmFjdF9leG46ZmFsc2VcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgfnJ1bjpgU2NoZWR1bGUgKCogY29uc2lkZXIgW35ydW46YE5vd10gKilcbiAgICAgID9yZXN0XG4gICAgICB+bmFtZTpcImZpbmFsbHlcIlxuICAgICAgZmluYWxseVxuICBpblxuICBtYXRjaCByLCBmciB3aXRoXG4gIHwgRXJyb3IgZXhuLCBFcnJvciBmaW5hbGx5X2V4biAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQXN5bmMgZmluYWxseVwiIChleG4gOiBleG4pIChmaW5hbGx5X2V4biA6IGV4bildXG4gIHwgRXJyb3IgZSwgT2sgKCkgfCBPayBfLCBFcnJvciBlIC0+IHJhaXNlIGVcbiAgfCBPayByLCBPayAoKSAtPiByXG47O1xuXG5sZXQgaGFuZGxlX2Vycm9ycyA/aGVyZSA/aW5mbyA/bmFtZSBmIGhhbmRsZXIgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW46YE5vdyBmIGluXG4gIHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlcjtcbiAgb2tcbjs7XG5cbmxldCBjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZiA9XG4gIGxldCB7IE9rX2FuZF9leG5zLmV4bnM7IF8gfSA9XG4gICAgT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvID9uYW1lIH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICBmICgpO1xuICAgICAgcmV0dXJuICgpKVxuICBpblxuICBleG5zXG47O1xuXG5sZXQgY2F0Y2ggP2hlcmUgP2luZm8gP25hbWUgZiA9XG4gIG1hdGNoJW1hcCBTdHJlYW0ubmV4dCAoY2F0Y2hfc3RyZWFtID9oZXJlID9pbmZvID9uYW1lIGYpIHdpdGhcbiAgfCBDb25zICh4LCBfKSAtPiB4XG4gIHwgTmlsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiTW9uaXRvci5jYXRjaCBnb3QgdW5leHBlY3RlZCBlbXB0eSBzdHJlYW1cIl1cbjs7XG5cbmxldCBjYXRjaF9lcnJvciA/aGVyZSA/aW5mbyA/bmFtZSBmID0gY2F0Y2ggP2hlcmUgP2luZm8gP25hbWUgZiA+PnwgRXJyb3Iub2ZfZXhuXG5cbm1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgbGV0IHBhcmVudCB0ID1cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgUmVwb3J0X3VuY2F1Z2h0X2V4biAtPiBOb25lXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IFNvbWUgcGFyZW50XG4gICAgfCBEZXRhY2hlZCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGRlcHRoIHQgPVxuICAgIGxldCByZWMgbG9vcCB0IG4gPVxuICAgICAgbWF0Y2ggcGFyZW50IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IG5cbiAgICAgIHwgU29tZSB0IC0+IGxvb3AgdCAobiArIDEpXG4gICAgaW5cbiAgICBsb29wIHQgMFxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbmluY2x1ZGUgVGFpbC5TdHJlYW1cblxubGV0IGZpcnN0X2V4biB0ID1cbiAgbWF0Y2glbWFwIG5leHQgdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiU3RyZWFtLmZpcnN0IG9mIGVtcHR5IHN0cmVhbVwiXVxuICB8IENvbnMgKHgsIF8pIC0+IHhcbjs7XG5cbmxldCBmb2xkJyB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICB1cG9uIChuZXh0IHQpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgICAgfCBDb25zICh2LCB0KSAtPiB1cG9uIChmIGIgdikgKGxvb3AgdCkpXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbigqIFtmb2xkXSBpcyBpbXBsZW1lbnRlZCB0byBhdm9pZCBwZXItc3RyZWFtLWVsZW1lbnQgZGVmZXJyZWQgb3ZlcmhlYWQgaW4gdGhlIGNhc2Ugd2hlblxuICAgbXVsdGlwbGUgc3RyZWFtIGVsZW1lbnRzIGFyZSBhdmFpbGFibGUgc2ltdWx0YW5lb3VzbHkuICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChuZXh0IHQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB1cG9uIChuZXh0IHQpIChmdW4gbmV4dCAtPiBsb29wX25leHQgbmV4dCBiKVxuICAgICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHQgYlxuICAgIGFuZCBsb29wX25leHQgbmV4dCBiID1cbiAgICAgIG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBOaWwgLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IENvbnMgKHYsIHQpIC0+IGxvb3AgdCAoZiBiIHYpXG4gICAgaW5cbiAgICBsb29wIHQgaW5pdClcbjs7XG5cbmxldCBsZW5ndGggdCA9IGZvbGQgdCB+aW5pdDowIH5mOihmdW4gbiBfIC0+IG4gKyAxKVxubGV0IGl0ZXInIHQgfmYgPSBmb2xkJyB0IH5pbml0OigpIH5mOihmdW4gKCkgdiAtPiBmIHYpXG5cbmxldCBjbG9zZWQgdCA9XG4gIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICB8IFNvbWUgTmlsIC0+IHJldHVybiAoKVxuICB8IF8gLT4gaXRlcicgdCB+ZjooZnVuIF8gLT4gcmV0dXJuICgpKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9XG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGl0ZXInIHQgfmY6KGZ1biBhIC0+XG4gICAgICAgZiBhO1xuICAgICAgIHJldHVybiAoKSkpXG47O1xuXG5sZXQgY3JlYXRlIGYgPVxuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gICgqIGNvbGxlY3QgYmVmb3JlIGNhbGxpbmcgW2ZdLCBpbiBjYXNlIFtmXSBpbW1lZGlhdGVseSBleHRlbmRzLiAqKVxuICBsZXQgdCA9IFRhaWwuY29sbGVjdCB0YWlsIGluXG4gIGYgdGFpbDtcbiAgdFxuOztcblxubGV0IHVuZm9sZCBiIH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCBiID1cbiAgICAgIHVwb24gKGYgYikgKGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgIHwgU29tZSAoYSwgYikgLT5cbiAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIGE7XG4gICAgICAgICAgbG9vcCBiKVxuICAgIGluXG4gICAgbG9vcCBiKVxuOztcblxubGV0IG9mX2xpc3QgbCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxubGV0IHRvX2xpc3QgcyA9IGZvbGQnIHMgfmluaXQ6W10gfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChhIDo6IGIpKSA+PnwgTGlzdC5yZXZcbmxldCBjb3B5X3RvX3RhaWwgdCB0YWlsID0gaXRlcicgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChUYWlsLmV4dGVuZCB0YWlsIGEpKVxuXG5sZXQgYXBwZW5kIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MSB0YWlsKSAoZnVuICgpIC0+XG4gICAgICB1cG9uIChjb3B5X3RvX3RhaWwgdDIgdGFpbCkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSkpXG47O1xuXG5sZXQgY29uY2F0IHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoaXRlcicgdCB+ZjooZnVuIHQgLT4gY29weV90b190YWlsIHQgdGFpbCkpIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IGZhbHNlIC0+ICgpXG4gICAgICAgICB8IHRydWUgLT4gVGFpbC5leHRlbmQgdGFpbCB2KSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgZmlsdGVyX2RlcHJlY2F0ZWQgdCB+ZiA9IGZpbHRlcicgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlsdGVyX21hcCcgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIHYgLT5cbiAgICAgICAgIG1hdGNoJW1hcCBmIHYgd2l0aFxuICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICB8IFNvbWUgdiAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2RlcHJlY2F0ZWQgdCB+ZiA9IGZpbHRlcl9tYXAnIHQgfmY6KGZ1biBhIC0+IHJldHVybiAoZiBhKSlcblxubGV0IG1hcCcgdCB+ZiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdiAtPiBmIHYgPj58IFRhaWwuZXh0ZW5kIHRhaWwpKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IG1hcCB0IH5mID0gbWFwJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaXJzdF9uIHMgbiA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBsZXQgcmVjIGxvb3AgcyBuID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgIGVsc2VcbiAgICAgICAgdXBvbiAobmV4dCBzKSAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5pbCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgICAgfCBDb25zICh4LCB0KSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0IChuIC0gMSkpXG4gICAgaW5cbiAgICBsb29wIHMgbilcbjs7XG5cbmxldCBhdmFpbGFibGVfbm93IHQgPVxuICBsZXQgcmVjIGxvb3AgdCBhYyA9XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBOaWwgLT4gTGlzdC5yZXYgYWMsIHRcbiAgICB8IFNvbWUgKENvbnMgKHgsIHQpKSAtPiBsb29wIHQgKHggOjogYWMpXG4gIGluXG4gIGxvb3AgdCBbXVxuOztcblxubGV0IHNwbGl0ID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKSA/KGYgPSBmdW4gXyAtPiBgQ29udGludWUpIHQgPVxuICBsZXQgcmVhc29uX2Zvcl9zdG9wcGluZyA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCBwcmVmaXggPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgZmluaXNoIHYgPVxuICAgIFRhaWwuY2xvc2VfZXhuIHByZWZpeDtcbiAgICBJdmFyLmZpbGwgcmVhc29uX2Zvcl9zdG9wcGluZyB2XG4gIGluXG4gIGxldCByZWMgbG9vcCB0ID1cbiAgICBjaG9vc2UgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wcGVkKTsgY2hvaWNlIChuZXh0IHQpIChmdW4gbyAtPiBgTmV4dCBvKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcHBlZCAtPiBmaW5pc2ggKGBTdG9wcGVkIHQpXG4gICAgfCBgTmV4dCBvIC0+XG4gICAgICAobWF0Y2ggbyB3aXRoXG4gICAgICAgfCBOaWwgLT4gZmluaXNoIGBFbmRfb2Zfc3RyZWFtXG4gICAgICAgfCBDb25zIChhLCB0KSAtPlxuICAgICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgICAgfCBgQ29udGludWUgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHByZWZpeCBhO1xuICAgICAgICAgICAgbG9vcCB0XG4gICAgICAgICAgfCBgRm91bmQgYiAtPiBmaW5pc2ggKGBGb3VuZCAoYiwgdCkpKSlcbiAgaW5cbiAgbG9vcCB0O1xuICBUYWlsLmNvbGxlY3QgcHJlZml4LCBJdmFyLnJlYWQgcmVhc29uX2Zvcl9zdG9wcGluZ1xuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGxldCBfLCBmb3VuZCA9IHNwbGl0IHQgfmY6KGZ1biBhIC0+IGlmIGYgYSB0aGVuIGBGb3VuZCBhIGVsc2UgYENvbnRpbnVlKSBpblxuICBtYXRjaCVtYXAgZm91bmQgd2l0aFxuICB8IGBTdG9wcGVkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgKGBFbmRfb2Zfc3RyZWFtIHwgYEZvdW5kIF8pIGFzIHggLT4geFxuOztcblxubGV0IHVuZ3JvdXAgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uXG4gICAgICAoaXRlcicgdCB+ZjooZnVuIGwgLT5cbiAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgICAgICAgcmV0dXJuICgpKSlcbiAgICAgIChmdW4gKCkgLT4gVGFpbC5jbG9zZV9leG4gdGFpbCkpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZSB0cyA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICAoKiBUaGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHNob3VsZCBiZSBjbG9zZWQgd2hlbiB0aGUgb3V0ZXIgc3RyZWFtIGFuZCBhbGwgb2ZcbiAgICAgICB0aGUgaW5uZXIgc3RyZWFtcyBoYXZlIGJlZW4gY2xvc2VkLiAgS2VlcCBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2Ygb3BlblxuICAgICAgIHN0cmVhbXMgYW5kIGNsb3NlIHRoZSBpbnRlcmxlYXZlZCBzdHJlYW0gd2hlbiB0aGF0IGNvdW50IGJlY29tZXNcbiAgICAgICB6ZXJvLiAqKVxuICAgIGxldCBudW1fb3BlbiA9IHJlZiAxIGluXG4gICAgKCogMSBmb3IgdGhlIG91dGVyIHN0cmVhbSB0aGF0IGlzIG9wZW4gKilcbiAgICBsZXQgY2xvc2UgKCkgPVxuICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuIC0gMTtcbiAgICAgIGlmICFudW1fb3BlbiA9IDAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgaW5cbiAgICBsZXQgb3V0ZXJfY2xvc2VkID1cbiAgICAgIGl0ZXInIHRzIH5mOihmdW4gdCAtPlxuICAgICAgICBudW1fb3BlbiA6PSAhbnVtX29wZW4gKyAxO1xuICAgICAgICB1cG9uIChjb3B5X3RvX3RhaWwgdCB0YWlsKSBjbG9zZTtcbiAgICAgICAgcmV0dXJuICgpKVxuICAgIGluXG4gICAgdXBvbiBvdXRlcl9jbG9zZWQgY2xvc2UpXG47O1xuXG5sZXQgdGFrZV91bnRpbCB0IGQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgdXBvblxuICAgICAgICAoY2hvb3NlIFsgY2hvaWNlIGQgKGZ1biAoKSAtPiBgU3RvcCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIHogLT4gYE5leHQgeikgXSlcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBgU3RvcCB8IGBOZXh0IE5pbCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICAgICAgfCBgTmV4dCAoQ29ucyAoeCwgdCkpIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCB0YWlsIHg7XG4gICAgICAgICAgICBsb29wIHQpXG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5JyB0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbmV4dCB0XG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgICAgfnJlc3Q6YFJhaXNlXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgICAgID4+PiBmdW4geiAtPlxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIChtYXRjaCB6IHdpdGhcbiAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgIHwgRXJyb3IgZSAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGUpXG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICgqIFdlIGltbWVkaWF0ZWx5IGNhbGwgW2xvb3BdLCB0aHVzIG1ha2luZyB0aGUgaXRlciBkdXJhYmxlLiAgQW55IGV4Y2VwdGlvbnNcbiAgICAgICAgICAgcmFpc2VkIGJ5IFtmXSB3aWxsIG5vdCBwcmV2ZW50IHRoZSBsb29wIGZyb20gY29udGludWluZywgYW5kIHdpbGwgZ28gdG8gdGhlXG4gICAgICAgICAgIG1vbml0b3Igb2Ygd2hvbWV2ZXIgY2FsbGVkIFtpdGVyX2R1cmFibHlfcmVwb3J0X2VuZF0uICopXG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgZiB4XG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5IHQgfmYgPSBkb24ndF93YWl0X2ZvciAoaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZilcblxubGV0IG9mX2Z1biBmID1cbiAgdW5mb2xkICgpIH5mOihmdW4gKCkgLT5cbiAgICBsZXQlbWFwIGEgPSBmICgpIGluXG4gICAgU29tZSAoYSwgKCkpKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3Blcm1pc3Npb24pIHQgPSAoJ2EsICdwZXJtaXNzaW9uKSBUeXBlcy5CdmFyLnRcblxudHlwZSAnYSByZXByID0gJ2EgVHlwZXMuQnZhci5yZXByID1cbiAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHJlcHIgWyVzZXhwX29mOiBfIHJlcHJdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCByZXByIGYgaW5cbiAgICBGaWVsZHNfb2ZfcmVwci5pdGVyXG4gICAgICB+aGFzX2FueV93YWl0ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBoYXNfYW55X3dhaXRlcnMgLT5cbiAgICAgICAgICAgaWYgSXZhci5oYXNfaGFuZGxlcnMgcmVwci5pdmFyIHRoZW4gYXNzZXJ0IGhhc19hbnlfd2FpdGVycykpXG4gICAgICB+aXZhcjpcbiAgICAgICAgKGNoZWNrIChmdW4gaXZhciAtPlxuICAgICAgICAgICBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSBpdmFyO1xuICAgICAgICAgICBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKSlcbjs7XG5cbmxldCBzZXhwX29mX3QgXyBfIHQgPVxuICBsZXQgeyBoYXNfYW55X3dhaXRlcnM7IGl2YXIgPSBfIH0gPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICAoKiBXZSBkb24ndCBzaG93IFtpdmFyXSBiZWNhdXNlIGl0J3MgYWx3YXlzIGVtcHR5LiAqKVxuICBbJW1lc3NhZ2UgKGhhc19hbnlfd2FpdGVycyA6IGJvb2wpXVxuOztcblxuaW5jbHVkZSBTY2hlZHVsZXIxLkJ2YXJcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIGlmIHJlcHIuaGFzX2FueV93YWl0ZXJzXG4gIHRoZW4gKFxuICAgIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIGZhbHNlO1xuICAgIEl2YXIuZmlsbCByZXByLml2YXIgYTtcbiAgICByZXByLml2YXIgPC0gSXZhci5jcmVhdGUgKCkpXG47O1xuXG5sZXQgd2FpdCB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVycyA8LSB0cnVlO1xuICBJdmFyLnJlYWQgcmVwci5pdmFyXG47O1xuXG5sZXQgaGFzX2FueV93YWl0ZXJzIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxubGV0IGRlYnVnID0gRGVidWcuY2xvY2tcblxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IGNob29zZSA9IERlZmVycmVkLmNob29zZVxubGV0IGNob2ljZSA9IERlZmVycmVkLmNob2ljZVxubGV0ICggPj4+ICkgPSB1cG9uXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBpbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5UMVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIjx3YWxsX2Nsb2NrPlwiXVxuICAgIGVsc2VcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICAoaXNfd2FsbF9jbG9jayA6IGJvb2wpXG4gICAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgICAoZXZlbnRzIDogXyBUaW1pbmdfd2hlZWwudCldXG4gIDs7XG5lbmRcblxub3BlbiBUMVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlci5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyLndhbGxfY2xvY2tcbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xubGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcbmxldCBpZCB0ID0gdC5pZFxuXG5tb2R1bGUgSWQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuSWRcblxubGV0IG5vdyB0ID1cbiAgaWYgdC5pc193YWxsX2Nsb2NrXG4gIHRoZW5cbiAgICAoKiBGb3IgdGhlIHdhbGwtY2xvY2sgdGltZS1zb3VyY2UsIHdlIHVzZSBbVGltZV9ucy5ub3cgKCldIHJhdGhlciB0aGFuXG4gICAgICAgW1RpbWluZ193aGVlbC5ub3cgdC5ldmVudHNdLiAgVGhlIGxhdHRlciBpcyBvbmx5IHVwZGF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2hcbiAgICAgICBjeWNsZS4gIFRoZXJlIGNhbiBiZSBzdWJzdGFudGlhbCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byB3aGVuIHBlb3BsZSBkbyBsb25nXG4gICAgICAgcnVubmluZyBjb21wdXRhdGlvbnMgb3IgbWl4IGJsb2NraW5nIGNvZGUgd2l0aCBhc3luYy4gIEFuZCBodW1hbnMgZXhwZWN0IHRoYXRcbiAgICAgICB3YWxsLWNsb2NrIHRpbWUgaXMgYmFzZWQgb24gW1RpbWUubm93XSwgbm90IHNvbWUgYXJ0aWZhY3Qgb2YgYXN5bmNcbiAgICAgICBpbXBsZW1lbnRhdGlvbi4gKilcbiAgICBUaW1lX25zLm5vdyAoKVxuICBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2J5IHQgYnkgPSBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxubGV0IGFkdmFuY2UgPSBhZHZhbmNlX2RpcmVjdGx5XG5sZXQgYWR2YW5jZV9ieSA9IGFkdmFuY2VfZGlyZWN0bHlfYnlcbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgKFNjaGVkdWxlci55aWVsZCB0LnNjaGVkdWxlcilcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBTY2hlZHVsZXIubnVtX3BlbmRpbmdfam9icyB0ID4gMCB8fCBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkXG5cbm1vZHVsZSBFYWdlcl9kZWZlcnJlZCA9IHN0cnVjdFxuICBsZXQgYmluZF91bml0IHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdFxuICAgIHRoZW4gZiAoKVxuICAgIGVsc2UgKFxuICAgICAgbGV0JWJpbmQgKCkgPSB0IGluXG4gICAgICBmICgpKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCB0XG4gICAgdGhlbiByZXR1cm4gKGYgKERlZmVycmVkLnZhbHVlX2V4biB0KSlcbiAgICBlbHNlIERlZmVycmVkLm1hcCB0IH5mXG4gIDs7XG5lbmRcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IG9uZV9zdGVwICgpID1cbiAgICBpZiBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYW55X2ZpcmVkX2V2ZW50c190b19ydW4gdFxuICAgIHRoZW4gbm93IHQsIGBjb250aW51ZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0LmV2ZW50cyB3aXRoXG4gICAgICB8IE5vbmUgLT4gdG9fLCBgZmluaXNoXG4gICAgICB8IFNvbWUgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIC0+XG4gICAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0b19cbiAgICAgICAgdGhlbiB0b18sIGBmaW5pc2hcbiAgICAgICAgZWxzZSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwsIGBjb250aW51ZSlcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbGV0IGFkdmFuY2VfdG8sIG5leHQgPSBvbmVfc3RlcCAoKSBpblxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOmFkdmFuY2VfdG87XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgIEVhZ2VyX2RlZmVycmVkLmJpbmRfdW5pdCAocnVuX3F1ZXVlZF9hbGFybXMgKCkpIH5mOihmdW4gKCkgLT5cbiAgICAgIG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBgZmluaXNoIC0+IHJldHVybiAoKVxuICAgICAgfCBgY29udGludWUgLT4gd2Fsa19hbGFybXMgKCkpXG4gIGluXG4gICgqIFRoaXMgZmlyc3QgW3J1bl9xdWV1ZWRfYWxhcm1zXSBjYWxsIGFsbG93cyBbQ2xvY2tfbnMuZXZlcnldIHRoZSBvcHBvcnR1bml0eSB0byBydW5cbiAgICAgaXRzIGNvbnRpbnVhdGlvbiBkZWZlcnJlZHMgc28gdGhhdCB0aGV5IGNhbiByZXNjaGVkdWxlIGFsYXJtcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5XG4gICAgIHVzZWZ1bCBpbiBvdXIgXCJhZHZhbmNlIGhpdHMgaW50ZXJtZWRpYXRlIGFsYXJtc1wiIHVuaXQgdGVzdCBiZWxvdywgYnV0IGxpa2VseSB1c2VmdWxcbiAgICAgaW4gb3RoZXIgY2FzZXMgd2hlcmUgW2V2ZXJ5XSBpcyBzeW5jaHJvbm91c2x5IGZvbGxvd2VkIGJ5IFthZHZhbmNlXS4gKilcbiAgbGV0JWJpbmQgKCkgPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICB3YWxrX2FsYXJtcyAoKVxuOztcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCA/d2FpdF9mb3IgdCB+dG9fID1cbiAgbGV0IHJ1bl9xdWV1ZWRfYWxhcm1zICgpID1cbiAgICAoKiBFdmVyeSB0aW1lIHdlIHdhbnQgdG8gcnVuIHF1ZXVlZCBhbGFybXMgd2UgbmVlZCB0byB5aWVsZCBjb250cm9sIGJhY2sgdG8gdGhlXG4gICAgICAgW0FzeW5jLlNjaGVkdWxlcl0gYW5kIFt3YWl0X2Zvcl0gYW55IGxvZ2ljIHRoYXQgaXMgc3VwcG9zZWQgdG8gZmluaXNoIGF0IHRoaXMgdGltZVxuICAgICAgIGJlZm9yZSBhZHZhbmNpbmcuICBJZiBubyBbd2FpdF9mb3JdIGxvZ2ljIGlzIHNwZWNpZmllZCB3ZSBjYW4gc2ltcGx5IHlpZWxkIGNvbnRyb2xcbiAgICAgICBieSBpbnZva2luZyBbeWllbGQgdF0sIHdoaWNoIGVucXVldWVzIGFub3RoZXIgam9iIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVkdWxlciBqb2JcbiAgICAgICBxdWV1ZSBzbyBhbGFybSBqb2JzIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1biBiZWZvcmUgd2UgYWR2YW5jZS4gKilcbiAgICBtYXRjaCB3YWl0X2ZvciB3aXRoXG4gICAgfCBOb25lIC0+IHlpZWxkIHRcbiAgICB8IFNvbWUgZiAtPiBmICgpXG4gIGluXG4gIGxldCBmaW5pc2ggKCkgPVxuICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fO1xuICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAoKiBzbyB0aGF0IGFsYXJtcyBzY2hlZHVsZWQgYXQgb3IgYmVmb3JlIFt0b19dIGZpcmUgKilcbiAgICBydW5fcXVldWVkX2FsYXJtcyAoKVxuICBpblxuICBsZXQgcmVjIHdhbGtfYWxhcm1zICgpID1cbiAgICBtYXRjaCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmaW5pc2ggKClcbiAgICB8IFNvbWUgbmV4dF9hbGFybV9maXJlc19hdCAtPlxuICAgICAgaWYgVGltZV9ucy4oID49ICkgbmV4dF9hbGFybV9maXJlc19hdCB0b19cbiAgICAgIHRoZW4gZmluaXNoICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKTtcbiAgICAgICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICAgICBsZXQgcXVldWVkX2FsYXJtc19yYW4gPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICAgICAgICBFYWdlcl9kZWZlcnJlZC5iaW5kX3VuaXQgcXVldWVkX2FsYXJtc19yYW4gfmY6d2Fsa19hbGFybXMpXG4gIGluXG4gIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgP3dhaXRfZm9yIHQgYnkgPVxuICBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG47O1xuXG5sZXQgc3Bhbl90b190aW1lIHQgc3BhbiA9IFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuXG5cbmxldCBzY2hlZHVsZV9qb2IgdCB+YXQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IGFsYXJtID1cbiAgICBUaW1pbmdfd2hlZWwuYWRkXG4gICAgICB0LmV2ZW50c1xuICAgICAgfmF0XG4gICAgICAoSm9iX29yX2V2ZW50Lm9mX2pvYiAoU2NoZWR1bGVyLmNyZWF0ZV9qb2IgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKSlcbiAgaW5cbiAgKG1hdGNoIHQuc2NoZWR1bGVyLmV2ZW50X2FkZGVkX2hvb2sgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZiAtPiBmIGF0KTtcbiAgYWxhcm1cbjs7XG5cbmxldCBydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGluXG4gIGlmIFRpbWVfbnMuKCA+ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgdGhlbiBzY2hlZHVsZV9qb2IgdCB+YXQ6dGltZSBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZWxzZSAoXG4gICAgU2NoZWR1bGVyLmVucXVldWUgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIEFsYXJtLm51bGwgKCkpXG47O1xuXG5sZXQgcnVuX2F0IHQgdGltZSBmIGEgPSBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhIDogXyBBbGFybS50KVxubGV0IHJ1bl9hZnRlciB0IHNwYW4gZiBhID0gcnVuX2F0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pIGYgYVxuXG5sZXQgYXQgPVxuICBsZXQgZmlsbCByZXN1bHQgPSBJdmFyLmZpbGwgcmVzdWx0ICgpIGluXG4gIGZ1biB0IHRpbWUgLT5cbiAgICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICAgIHRoZW4gcmV0dXJuICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmaWxsIHJlc3VsdCA6IF8gQWxhcm0udCk7XG4gICAgICBJdmFyLnJlYWQgcmVzdWx0KVxuOztcblxubGV0IGFmdGVyIHQgc3BhbiA9IGF0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pXG5cbmxldCByZW1vdmVfYWxhcm0gdCBhbGFybSA6IHVuaXQgPVxuICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgdC5ldmVudHMgYWxhcm0gaW5cbiAgKGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgfCBKb2IsIGpvYiAtPiBTY2hlZHVsZXIuZnJlZV9qb2IgdC5zY2hlZHVsZXIgam9iXG4gICB8IEV2ZW50LCBfIC0+XG4gICAgICgqIFRoaXMgaXMgdW5yZWFjaGFibGUgYmVjYXVzZSBbYWxhcm1dIG9ubHkgZXZlciBjb21lcyBmcm9tIFtFdmVudC5hbGFybV0gd2hpY2ggb25seVxuICAgICAgICBldmVyIGdldHMgcG9wdWxhdGVkIGJ5IGEgY2FsbCB0byBbc2NoZWR1bGVfam9iXS4gKilcbiAgICAgYXNzZXJ0IGZhbHNlKTtcbiAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBhbGFybVxuOztcblxubGV0IHJlbW92ZV9hbGFybV9pZl9zY2hlZHVsZWQgdCBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgYWxhcm0gdGhlbiByZW1vdmVfYWxhcm0gdCBhbGFybVxuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIG1vZHVsZSBGaXJlZCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICA7IG11dGFibGUgZmlyZSA6IHVuaXQgLT4gdW5pdFxuICAgIDsgKCogQXMgbG9uZyBhcyBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHdlIGhhdmUgbm90IHlldCBjb21taXR0ZWQgdG8gd2hldGhlciB0aGUgZXZlbnRcbiAgICAgICAgIHdpbGwgaGFwcGVuIG9yIGJlIGFib3J0ZWQuICBXaGVuIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgdGhlIGFsYXJtIG1heSBvciBtYXkgbm90XG4gICAgICAgICBiZSBpbiB0aGUgdGltaW5nIHdoZWVsIC0tIGlmIGl0IGlzbid0LCB0aGVuIHRoZXJlJ3MgYSBqb2IgaW4gQXN5bmMncyBqb2IgcXVldWVcbiAgICAgICAgIHRoYXQgd2lsbCBmaXJlIHRoZSBldmVudCwgdW5sZXNzIGl0IGlzIGFib3J0ZWQgYmVmb3JlIHRoYXQgam9iIGNhbiBydW4uICopXG4gICAgICBmaXJlZCA6ICgnYSwgJ2gpIEZpcmVkLnQgSXZhci50XG4gICAgOyAoKiBbbnVtX2ZpcmVzX3RvX3NraXBdIGlzIHVzZWQgdG8gcmVzY2hlZHVsZSBldmVudHMgdGhhdCBoYXZlIGZpcmVkIGFuZCBlbnRlcmVkIHRoZVxuICAgICAgICAgQXN5bmMgam9iIHF1ZXVlLCBidXQgaGF2ZSBub3QgeWV0IHJ1bi4gIFRob3NlIGpvYnMgb25seSBydW4gaWYgW251bV9maXJlc190b19za2lwXG4gICAgICAgICA9IDBdLCBhbmQgb3RoZXJ3aXNlIGp1c3QgZGVjcmVtZW50IGl0LiAgU28sIHRvIHJlc2NoZWR1bGUgYW4gZXZlbnQgaW4gc3VjaCBhXG4gICAgICAgICBzdGF0ZSwgd2UgaW5jcmVtZW50IFtudW1fZmlyZXNfdG9fc2tpcF0gYW5kIGFkZCBhIG5ldyBhbGFybSB0byB0aGUgdGltaW5nXG4gICAgICAgICB3aGVlbC4gKilcbiAgICAgIG11dGFibGUgbnVtX2ZpcmVzX3RvX3NraXAgOiBpbnRcbiAgICA7ICgqIFtzY2hlZHVsZWRfYXRdIGlzIHRoZSB0aW1lIGF0IHdoaWNoIFt0XSBoYXMgbW9zdCByZWNlbnRseSBiZWVuIHNjaGVkdWxlZCB0byBmaXJlLlxuICAgICAgICAgV2hpbGUgW3QuYWxhcm1dIGlzIHN0aWxsIGluIHRoZSB0aW1pbmcgd2hlZWwsIHRoaXMgaXMgdGhlIHNhbWUgYXMgW0FsYXJtLmF0XG4gICAgICAgICB0LmFsYXJtXS4gKilcbiAgICAgIG11dGFibGUgc2NoZWR1bGVkX2F0IDogVGltZV9ucy50XG4gICAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBmaXJlZCB0ID0gSXZhci5yZWFkIHQuZmlyZWRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9oIHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm06XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5maXJlZFxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChub3QgKFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtKSlcbiAgICAgICAgICAgICBlbHNlIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKEpvYl9vcl9ldmVudC5pc19qb2IgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpKSlcbiAgICAgICAgfmZpcmU6aWdub3JlXG4gICAgICAgIH5maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWQgOiBfIEZpcmVkLnQgSXZhci50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCBmaXJlZCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBpbnZhcmlhbnRfYSBhXG4gICAgICAgICAgICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBpbnZhcmlhbnRfaCBoKSlcbiAgICAgICAgfm51bV9maXJlc190b19za2lwOlxuICAgICAgICAgIChjaGVjayAoZnVuIG51bV9maXJlc190b19za2lwIC0+IGFzc2VydCAobnVtX2ZpcmVzX3RvX3NraXAgPj0gMCkpKVxuICAgICAgICB+c2NoZWR1bGVkX2F0OlxuICAgICAgICAgIChjaGVjayAoZnVuIHNjaGVkdWxlZF9hdCAtPlxuICAgICAgICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm1cbiAgICAgICAgICAgICB0aGVuIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gc2NoZWR1bGVkX2F0IH5leHBlY3Q6KEFsYXJtLmF0IGV2ZW50cyB0LmFsYXJtKSkpXG4gICAgICAgIH50aW1lX3NvdXJjZTppZ25vcmUpXG4gIDs7XG5cbiAgbW9kdWxlIFN0YXR1cyA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgIHwgU2NoZWR1bGVkX2F0IG9mIFRpbWVfbnMudFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBzdGF0dXMgdCA6IF8gU3RhdHVzLnQgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCB0LmZpcmVkKSB3aXRoXG4gICAgfCBOb25lIC0+IFNjaGVkdWxlZF9hdCB0LnNjaGVkdWxlZF9hdFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBBYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IEhhcHBlbmVkIGhcbiAgOztcblxuICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIG9mICdhXG4gICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudCA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5hYm9ydFwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoZmlyZWQgdCkgd2l0aFxuICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBQcmV2aW91c2x5X2Fib3J0ZWQgYVxuICAgIHwgU29tZSAoSGFwcGVuZWQgaCkgLT4gUHJldmlvdXNseV9oYXBwZW5lZCBoXG4gICAgfCBOb25lIC0+XG4gICAgICBJdmFyLmZpbGwgdC5maXJlZCAoQWJvcnRlZCBhKTtcbiAgICAgIHJlbW92ZV9hbGFybV9pZl9zY2hlZHVsZWQgdC50aW1lX3NvdXJjZSB0LmFsYXJtO1xuICAgICAgT2tcbiAgOztcblxuICBsZXQgYWJvcnRfZXhuIHQgYSA9XG4gICAgbWF0Y2ggYWJvcnQgdCBhIHdpdGhcbiAgICB8IE9rIC0+ICgpXG4gICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIF8gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiQ2xvY2suRXZlbnQuYWJvcnRfZXhuIGZhaWxlZCB0byBhYm9ydCBldmVudCB0aGF0IHByZXZpb3VzbHkgaGFwcGVuZWRcIl1cbiAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGFib3J0ZWRcIl1cbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBhID0gaWdub3JlIChhYm9ydCB0IGEgOiBfIEFib3J0X3Jlc3VsdC50KVxuICBsZXQgc2NoZWR1bGUgdCA9IHQuYWxhcm0gPC0gcnVuX2F0X2ludGVybmFsIHQudGltZV9zb3VyY2UgdC5zY2hlZHVsZWRfYXQgdC5maXJlICgpXG5cbiAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gc3RydWN0XG4gICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgIHwgT2tcbiAgICAgIHwgUHJldmlvdXNseV9hYm9ydGVkIG9mICdhXG4gICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgcmVzY2hlZHVsZV9hdCB0IGF0IDogXyBSZXNjaGVkdWxlX3Jlc3VsdC50ID1cbiAgICBpZiBkZWJ1Z1xuICAgIHRoZW5cbiAgICAgIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LnJlc2NoZWR1bGVfYXRcIiAodCwgYXQpIFslc2V4cF9vZjogKF8sIF8pIHQgKiBUaW1lX25zLnRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGV2ZW50cyA9IHQudGltZV9zb3VyY2UuZXZlbnRzIGluXG4gICAgICBsZXQgaXNfaW5fdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLm1lbSBldmVudHMgdC5hbGFybSBpblxuICAgICAgbGV0IGFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZV9mdXR1cmUgPVxuICAgICAgICBUaW1lX25zLiggPiApIGF0IChUaW1pbmdfd2hlZWwubm93IGV2ZW50cylcbiAgICAgIGluXG4gICAgICB0LnNjaGVkdWxlZF9hdCA8LSBhdDtcbiAgICAgIChtYXRjaCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlLCBpc19pbl90aW1pbmdfd2hlZWwgd2l0aFxuICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+ICgpXG4gICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgdC50aW1lX3NvdXJjZS5oYW5kbGVfZmlyZWQgdC5hbGFybTtcbiAgICAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgZXZlbnRzIHQuYWxhcm1cbiAgICAgICB8IHRydWUsIGZhbHNlIC0+XG4gICAgICAgICB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgKyAxO1xuICAgICAgICAgc2NoZWR1bGUgdFxuICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBUaW1pbmdfd2hlZWwucmVzY2hlZHVsZSBldmVudHMgdC5hbGFybSB+YXQpO1xuICAgICAgT2tcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hZnRlciB0IHNwYW4gPSByZXNjaGVkdWxlX2F0IHQgKHNwYW5fdG9fdGltZSB0LnRpbWVfc291cmNlIHNwYW4pXG5cbiAgbGV0IHJ1bl9hdCB0aW1lX3NvdXJjZSBzY2hlZHVsZWRfYXQgZiB6ID1cbiAgICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcIlRpbWVfc291cmNlLkV2ZW50LnJ1bl9hdFwiIHNjaGVkdWxlZF9hdCBbJXNleHBfb2Y6IFRpbWVfbnMudF07XG4gICAgbGV0IHQgPVxuICAgICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICAgIDsgZmlyZSA9IGlnbm9yZSAoKiBzZXQgYmVsb3cgKilcbiAgICAgIDsgZmlyZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgOyBudW1fZmlyZXNfdG9fc2tpcCA9IDBcbiAgICAgIDsgc2NoZWR1bGVkX2F0XG4gICAgICA7IHRpbWVfc291cmNlID0gcmVhZF9vbmx5IHRpbWVfc291cmNlXG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgZmlyZSAoKSA9XG4gICAgICAoKiBbZmlyZV0gcnVucyBpbiBhbiBBc3luYyBqb2IuICBUaGUgZXZlbnQgbWF5IGhhdmUgYmVlbiBhYm9ydGVkIGFmdGVyIHRoZSBqb2JcbiAgICAgICAgIHdhcyBlbnF1ZXVlZCwgc28gW2ZpcmVdIG11c3QgY2hlY2sgW2ZpcmVkXS4gKilcbiAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZFxuICAgICAgdGhlblxuICAgICAgICBpZiB0Lm51bV9maXJlc190b19za2lwID4gMFxuICAgICAgICB0aGVuIHQubnVtX2ZpcmVzX3RvX3NraXAgPC0gdC5udW1fZmlyZXNfdG9fc2tpcCAtIDFcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGYgeiBpblxuICAgICAgICAgICgqIFtmIHpdIG1heSBoYXZlIGFib3J0ZWQgdGhlIGV2ZW50LCBzbyB3ZSBtdXN0IGNoZWNrIFtmaXJlZF0gYWdhaW4uICopXG4gICAgICAgICAgaWYgSXZhci5pc19lbXB0eSB0LmZpcmVkIHRoZW4gSXZhci5maWxsIHQuZmlyZWQgKEhhcHBlbmVkIHJlc3VsdCkpXG4gICAgaW5cbiAgICB0LmZpcmUgPC0gZmlyZTtcbiAgICBzY2hlZHVsZSB0O1xuICAgIHRcbiAgOztcblxuICBsZXQgYXQgdGltZV9zb3VyY2UgdGltZSA9IHJ1bl9hdCB0aW1lX3NvdXJjZSB0aW1lIGlnbm9yZSAoKVxuXG4gIGxldCBydW5fYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiBmIGEgPVxuICAgIHJ1bl9hdCB0aW1lX3NvdXJjZSAoc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW4pIGYgYVxuICA7O1xuXG4gIGxldCBhZnRlciB0aW1lX3NvdXJjZSBzcGFuID0gYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKVxuZW5kXG5cbmxldCBhdF90aW1lcyA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgdCBuZXh0X3RpbWUgPVxuICBsZXQgdGFpbCA9IFRhaWwuY3JlYXRlICgpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgY2hvb3NlXG4gICAgICBbIGNob2ljZSBzdG9wIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKGF0IHQgKG5leHRfdGltZSAoKSkpIChmdW4gKCkgLT4gYFRpY2spIF1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IGBTdG9wIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICB8IGBUaWNrIC0+XG4gICAgICBUYWlsLmV4dGVuZCB0YWlsICgpO1xuICAgICAgbG9vcCAoKVxuICBpblxuICBsb29wICgpO1xuICBUYWlsLmNvbGxlY3QgdGFpbFxuOztcblxubGV0IGF0X3ZhcnlpbmdfaW50ZXJ2YWxzID9zdG9wIHQgY29tcHV0ZV9zcGFuID1cbiAgYXRfdGltZXMgdCA/c3RvcCAoZnVuICgpIC0+IFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSAoY29tcHV0ZV9zcGFuICgpKSlcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wIHQgaW50ZXJ2YWwgPVxuICBsZXQgc3RhcnQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IG5vdyB0XG4gIGluXG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPlxuICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZTpzdGFydCB+YWZ0ZXI6KG5vdyB0KSB+aW50ZXJ2YWwgKCkpXG47O1xuXG5tb2R1bGUgQ29udGludWUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEltbWVkaWF0ZWx5XG4gICAgfCBBZnRlciBvZiBUaW1lX25zLlNwYW4udFxuICAgIHwgTmV4dF9tdWx0aXBsZSBvZiBUaW1lX25zLnQgKiBUaW1lX25zLlNwYW4udFxuXG4gIGxldCBpbW1lZGlhdGVseSA9IEltbWVkaWF0ZWx5XG5cbiAgbGV0IGF0IHQgdGltZV9zb3VyY2UgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1tZWRpYXRlbHkgLT4gVGltaW5nX3doZWVsLm5vdyB0aW1lX3NvdXJjZS5ldmVudHNcbiAgICB8IEFmdGVyIHNwYW4gLT4gc3Bhbl90b190aW1lIHRpbWVfc291cmNlIHNwYW5cbiAgICB8IE5leHRfbXVsdGlwbGUgKGJhc2UsIGludGVydmFsKSAtPlxuICAgICAgVGltZV9ucy5uZXh0X211bHRpcGxlIH5iYXNlIH5hZnRlcjoobm93IHRpbWVfc291cmNlKSB+aW50ZXJ2YWwgKClcbiAgOztcbmVuZFxuXG5sZXQgcnVuX3JlcGVhdGVkbHlcbiAgICAgID8oc3RhcnQgPSByZXR1cm4gKCkpXG4gICAgICA/c3RvcFxuICAgICAgPyhjb250aW51ZV9vbl9lcnJvciA9IHRydWUpXG4gICAgICA/KGZpbmlzaGVkID0gSXZhci5jcmVhdGUgKCkpXG4gICAgICB0XG4gICAgICB+ZlxuICAgICAgfmNvbnRpbnVlXG4gID1cbiAgc3RhcnRcbiAgPj4+IGZ1biAoKSAtPlxuICBsZXQgYWxhcm0gPSByZWYgKEFsYXJtLm51bGwgKCkpIGluXG4gIGxldCBzdG9wID1cbiAgICBtYXRjaCBzdG9wIHdpdGhcbiAgICB8IE5vbmUgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IFNvbWUgc3RvcCAtPlxuICAgICAgdXBvbiBzdG9wIChmdW4gKCkgLT5cbiAgICAgICAgaWYgVGltaW5nX3doZWVsLm1lbSB0LmV2ZW50cyAhYWxhcm1cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgcmVtb3ZlX2FsYXJtIHQgIWFsYXJtO1xuICAgICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKSkpO1xuICAgICAgc3RvcFxuICBpblxuICAoKiBbcnVuX2ZdLCBbY29udGludWVfZl0sIGFuZCBbY29udGludWVfdHJ5X3dpdGhdIGFyZSBkZWZpbmVkIHNvIHRoYXQgd2UgYWxsb2NhdGUgdGhlaXJcbiAgICAgY2xvc3VyZXMgb25jZSwgbm90IG9uY2UgcGVyIGl0ZXJhdGlvbi4gKilcbiAgbGV0IHJlYyBydW5fZiAoKSA9XG4gICAgKCogQmVmb3JlIGNhbGxpbmcgW2ZdLCB3ZSBzeW5jaHJvbm91c2x5IGNoZWNrIHdoZXRoZXIgW3N0b3BdIGlzIGRldGVybWluZWQuICopXG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGlmIGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBNb25pdG9yLnRyeV93aXRoIGYgfnJ1bjpgTm93IH5yZXN0OmBSYWlzZSA+Pj4gY29udGludWVfdHJ5X3dpdGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBkID0gZiAoKSBpblxuICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gY29udGludWVfZiAoKSBlbHNlIGQgPj4+IGNvbnRpbnVlX2YpXG4gIGFuZCBjb250aW51ZV9mICgpID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSBmaW5pc2hlZCAoKVxuICAgIGVsc2UgYWxhcm0gOj0gcnVuX2F0X2ludGVybmFsIHQgKENvbnRpbnVlLmF0IGNvbnRpbnVlIHQpIHJ1bl9mICgpXG4gIGFuZCBjb250aW51ZV90cnlfd2l0aCBvcl9lcnJvciA9XG4gICAgKG1hdGNoIG9yX2Vycm9yIHdpdGhcbiAgICAgfCBPayAoKSAtPiAoKVxuICAgICB8IEVycm9yIGVycm9yIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXJyb3IpO1xuICAgIGNvbnRpbnVlX2YgKClcbiAgaW5cbiAgcnVuX2YgKClcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgdCBzcGFuIGYgPVxuICBpZiBUaW1lX25zLlNwYW4uKCA8PSApIHNwYW4gVGltZV9ucy5TcGFuLnplcm9cbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLmV2ZXJ5IGdvdCBub25wb3NpdGl2ZSBzcGFuXCIgKHNwYW4gOiBUaW1lX25zLlNwYW4udCldO1xuICBydW5fcmVwZWF0ZWRseSB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIH5mIH5jb250aW51ZTooQWZ0ZXIgc3Bhbilcbjs7XG5cbmxldCBldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgc3BhbiBmID1cbiAgZXZlcnknIHQgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQ6Tm9uZSBzcGFuIChmdW4gKCkgLT5cbiAgICBmICgpO1xuICAgIHJldHVybiAoKSlcbjs7XG5cbmxldCBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgZiA9XG4gIGxldCBub3cgPSBub3cgdCBpblxuICBsZXQgYmFzZSwgc3RhcnQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IE5vbmUgLT4gbm93LCBOb25lXG4gICAgfCBTb21lIHN0YXJ0IC0+XG4gICAgICAoIHN0YXJ0XG4gICAgICAsIFNvbWVcbiAgICAgICAgICAoYXRcbiAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgKFRpbWVfbnMubmV4dF9tdWx0aXBsZVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgfmJhc2U6c3RhcnRcbiAgICAgICAgICAgICAgICB+YWZ0ZXI6bm93XG4gICAgICAgICAgICAgICAgfmNhbl9lcXVhbF9hZnRlcjp0cnVlXG4gICAgICAgICAgICAgICAgfmludGVydmFsKSkgKVxuICBpblxuICBydW5fcmVwZWF0ZWRseVxuICAgIHRcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgIH5mXG4gICAgfmNvbnRpbnVlOihOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgZiA9XG4gIHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgdCBpbnRlcnZhbCAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgd2l0aF90aW1lb3V0IHQgc3BhbiBkID1cbiAgbGV0IHRpbWVvdXQgPSBFdmVudC5hZnRlciB0IHNwYW4gaW5cbiAgY2hvb3NlXG4gICAgKCogVGhlIGNvZGUgYmVsb3cgZG9lcyBleGhhdXN0aXZlIGNhc2UgYW5hbHlzaXMgaW4gYm90aCBbY2hvaWNlXXMuICBCZWNhdXNlIFt0aW1lb3V0XVxuICAgICAgIGRvZXMgbm90IGVzY2FwZSB0aGUgc2NvcGUgb2YgdGhpcyBmdW5jdGlvbiwgY2VydGFpbiBjYXNlcyBzaG91bGQgYmUgaW1wb3NzaWJsZSwgYW5kXG4gICAgICAgYXJlIG1hcmtlZCBhcyBzdWNoIHdpdGggZXhjZXB0aW9ucy4gIFdlIGRvIG5vdCBleHBlY3QgdGhvc2UgZXhjZXB0aW9ucyB0byBvY2N1cixcbiAgICAgICBidXQgaWYgdGhleSBkbywgaXQgbGlrZWx5IGluZGljYXRlcyBhIGJ1ZyBpbiBbY2hvb3NlXSByYXRoZXIgdGhhblxuICAgICAgIFt3aXRoX3RpbWVvdXRdLiAqKVxuICAgIFsgY2hvaWNlIGQgKGZ1biB2IC0+XG4gICAgICAgIChtYXRjaCBFdmVudC5hYm9ydCB0aW1lb3V0ICgpIHdpdGhcbiAgICAgICAgICgqIFtQcmV2aW91c2x5X2hhcHBlbmVkXSBjYW4gb2NjdXIgaWYgYm90aCBbZF0gYW5kIFt3YWl0XSBiZWNvbWUgZGV0ZXJtaW5lZCBhdFxuICAgICAgICAgICAgdGhlIHNhbWUgdGltZSwgZS5nLiBbd2l0aF90aW1lb3V0IChzZWMgMC4pIChyZXR1cm4gKCkpXS4gKilcbiAgICAgICAgIHwgT2sgfCBQcmV2aW91c2x5X2hhcHBlbmVkICgpIC0+ICgpXG4gICAgICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCAoKSAtPlxuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlRpbWVfc291cmNlLndpdGhfdGltZW91dCBidWc6IHNob3VsZCBvbmx5IGFib3J0IG9uY2VcIl0pO1xuICAgICAgICBgUmVzdWx0IHYpXG4gICAgOyBjaG9pY2UgKEV2ZW50LmZpcmVkIHRpbWVvdXQpIChmdW5jdGlvblxuICAgICAgICB8IEhhcHBlbmVkICgpIC0+IGBUaW1lb3V0XG4gICAgICAgIHwgQWJvcnRlZCAoKSAtPlxuICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0IGJ1ZzogYm90aCBjb21wbGV0ZWQgYW5kIHRpbWVkIG91dFwiXSlcbiAgICBdXG47O1xuXG5sZXQgZHVyYXRpb25fb2YgdCBmID1cbiAgbGV0IHN0YXJ0ID0gbm93IHQgaW5cbiAgKCogRWFnZXIgbWFwIHRvIHByb3ZpZGUgbW9yZSBhY2N1cmF0ZSB0aW1pbmdzIHdoZW4gW2ZdIGlzIHN5bmNocm9ub3VzLiAqKVxuICBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgKCkpIH5mOihmdW4gcmVzdWx0IC0+XG4gICAgbGV0IGR1cmF0aW9uID0gVGltZV9ucy5kaWZmIChub3cgdCkgc3RhcnQgaW5cbiAgICByZXN1bHQsIGR1cmF0aW9uKVxuOztcblxubGV0IG9mX3N5bmNocm9ub3VzIHQgPSB0XG5sZXQgdG9fc3luY2hyb25vdXMgdCA9IHRcblxubGV0IHRpbWluZ193aGVlbF9oYXNfZXZlbnRfYXRfb3JfYmVmb3JlIHdoZWVsIHRpbWUgPVxuICBpZiBUaW1pbmdfd2hlZWwuaXNfZW1wdHkgd2hlZWxcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBsZXQgbmV4dF9hbGFybSA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biB3aGVlbCBpblxuICAgIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkuKG5leHRfYWxhcm0gPD0gdGltZSkpXG47O1xuXG5sZXQgYWR2YW5jZV9kaXJlY3RseV9pZl9xdWllc2NlbnQgdCB+dG9fID1cbiAgbGV0IGlzX3F1ZXNjZW50ID1cbiAgICAoKiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIGp1c3QgYSBmYXN0IGNhc2Ugb2YgW2FkdmFuY2VfYnlfYWxhcm1zXSxcbiAgICAgICB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjYWxsIHRvIFtTY2hlZHVsZXIueWllbGQgKCldIGNhbiBiZSBlbGlkZWQsXG4gICAgICAgaGVuY2UgdGhlIFtjYW5fcnVuX2Ffam9iXSBjaGVjay5cblxuICAgICAgIFdlJ3JlIG5vdCBjaGVja2luZyBlcG9sbCwgYW5kIHdlJ3JlIG5vdCBjaGVja2luZyB0aGUgW2V4dGVybmFsX2pvYnNdLiAgVGhhdCBpcyBhblxuICAgICAgIG9ic2VydmFibGUgZGlmZmVyZW5jZSwgYnV0IHNpbmNlIFthZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3I6Tm9uZV0gaXMgYWxyZWFkeVxuICAgICAgIHByZXR0eSBicm9rZW4gd2hlbiB3YWl0aW5nIGZvciBleHRlcm5hbCBldmVudHMsIGl0J3Mgbm90IGdvaW5nIHRvIGJlIG1lYW5pbmdmdWwuXG4gICAgKilcbiAgICBjYW5fcnVuX2Ffam9iIHQuc2NoZWR1bGVyXG4gICAgfHwgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwLmhhc19ldmVudHNfdG9fcnVuIHRcbiAgICB8fCB0aW1pbmdfd2hlZWxfaGFzX2V2ZW50X2F0X29yX2JlZm9yZSB0LmV2ZW50cyB0b19cbiAgaW5cbiAgaWYgaXNfcXVlc2NlbnRcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICB0cnVlKVxuOztcbiIsInR5cGUgdCA9IHVuaXQgLT4gdW5pdFxuXG5tb2R1bGUgSGFuZGxlID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cbmluY2x1ZGUgKFNjaGVkdWxlciA6IG1vZHVsZSB0eXBlIG9mIFNjaGVkdWxlciB3aXRoIG1vZHVsZSBCdmFyIDo9IFNjaGVkdWxlci5CdmFyKVxuXG5sZXQgdCA9IFNjaGVkdWxlci50XG5cbmluY2x1ZGUgTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBmaW5kX2xvY2FsIGtleSA9IEV4ZWN1dGlvbl9jb250ZXh0LmZpbmRfbG9jYWwgKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBrZXlcblxubGV0IHdpdGhfbG9jYWwga2V5IHZhbHVlIH5mID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQud2l0aF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSBrZXkgdmFsdWVcbiAgaW5cbiAgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IGV4ZWN1dGlvbl9jb250ZXh0IH5mXG47O1xuXG5sZXQgbWFpbl9leGVjdXRpb25fY29udGV4dCA9ICh0ICgpKS5tYWluX2V4ZWN1dGlvbl9jb250ZXh0XG5sZXQgY2FuX3J1bl9hX2pvYiB0ID0gbnVtX3BlbmRpbmdfam9icyB0ID4gMCB8fCBCdmFyLmhhc19hbnlfd2FpdGVycyB0LnlpZWxkXG5sZXQgaGFzX3VwY29taW5nX2V2ZW50IHQgPSBub3QgKFRpbWluZ193aGVlbC5pc19lbXB0eSAoZXZlbnRzIHQpKVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IChldmVudHMgdClcbmxldCBuZXh0X3VwY29taW5nX2V2ZW50X2V4biB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXRfZXhuIChldmVudHMgdClcbmxldCBldmVudF9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gKGV2ZW50cyB0KVxubGV0IGN5Y2xlX3N0YXJ0IHQgPSB0LmN5Y2xlX3N0YXJ0XG5cbmxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZiA9XG4gICgqIFVzaW5nIGFuIGFycmF5IHJhdGhlciB0aGFuIGEgbGlzdCBmb3IgY2FjaGUgZWZmaWNpZW5jeS4gVGhpcyBhbmRcbiAgICAgW3J1bl9ldmVyeV9jeWNsZV9lbmRdIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgcHJvZ3JhbSBpbml0aWFsaXphdGlvbiwgc28gdGhlXG4gICAgIGFsbG9jYXRpb24gYW5kIGdhcmJhZ2UgY3JlYXRpb24gc2hvdWxkIG5vdCBiZSBhbiBpc3N1ZS5cblxuICAgICBOb3RlIHRoYXQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIE4gdGltZXMgdGFrZXMgTyhOXjIpIHRpbWUsIGJ1dCB0aGlzIHNob3VsZCBiZSBmaW5lXG4gICAgIGJlY2F1c2UgTiBpcyBzbWFsbC4gU2FtZSBmb3IgW3J1bl9ldmVyeV9jeWNsZV9lbmRdLiAqKVxuICB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydFxuOztcblxubGV0IHJ1bl9ldmVyeV9jeWNsZV9lbmQgdCB+ZiA9XG4gIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRcbjs7XG5cbmxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB0IH5mID1cbiAgbGV0IGhhbmRsZSA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLmNyZWF0ZSAoKSBpblxuICBIYXNodGJsLmFkZF9leG4gdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IHQgfmY7XG4gIGhhbmRsZVxuOztcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9lbmRfaG9vayB0IH5mID1cbiAgbGV0IGhhbmRsZSA9IFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlLmNyZWF0ZSAoKSBpblxuICBIYXNodGJsLmFkZF9leG4gdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIH5rZXk6aGFuZGxlIH5kYXRhOmY7XG4gIHJ1bl9ldmVyeV9jeWNsZV9lbmQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYXJyYXlfcmVtb3ZlX2ZpcnN0IGFyciB+ZiA9XG4gIG1hdGNoIEFycmF5LmZpbmRpIGFyciB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoaWR4LCBfKSAtPlxuICAgIFNvbWVcbiAgICAgIChBcnJheS5pbml0XG4gICAgICAgICAoQXJyYXkubGVuZ3RoIGFyciAtIDEpXG4gICAgICAgICB+ZjooZnVuIGkgLT4gaWYgaSA8IGlkeCB0aGVuIGFyci4oaSkgZWxzZSBhcnIuKGkgKyAxKSkpXG47O1xuXG5sZXQgcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIGFyciBmID1cbiAgKCogUmVtb3ZlIGEgc2luZ2xlIGluc3RhbmNlIG9mIFtmXSBmcm9tIFthcnJdLiBNb3JlIHRoYW4gb25lIGluc3RhbmNlIG1heSBiZSBwcmVzZW50LFxuICAgICBidXQgcmVtb3ZhbCBpcyByZWZlcmVuY2UtY291bnRlZCBieSBbcnVuX2V2ZXJ5X2N5Y2xlXyhzdGFydHxlbmQpX3N0YXRlXSB0YWJsZXMuICopXG4gIG1hdGNoIGFycmF5X3JlbW92ZV9maXJzdCB+ZjooZnVuIF8gZyAtPiBwaHlzX2VxdWFsIGYgZykgYXJyIHdpdGhcbiAgfCBTb21lIGFyciAtPiBhcnJcbiAgfCBOb25lIC0+XG4gICAgKCogVGhpcyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHNlZSB0aGUgW2ludmFyaWFudF0gaW4gW3NjaGVkdWxlcjEubWxdLiAqKVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlNjaGVkdWxlci5yZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgY2FsbGVkIHdpdGggYSBob29rIHRoYXQgaXNuJ3QgcmVnaXN0ZXJlZFwiXVxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIHN0YXJ0IGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+XG4gICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGZcbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIGVuZCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmXG47O1xuXG5sZXQgbWFwX2N5Y2xlX3RpbWVzIHQgfmYgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCAoZiB0Lmxhc3RfY3ljbGVfdGltZSkpKVxuOztcblxubGV0IGxvbmdfY3ljbGVzIHQgfmF0X2xlYXN0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+XG4gICAgICBpZiBUaW1lX25zLlNwYW4uKCA+PSApIHQubGFzdF9jeWNsZV90aW1lIGF0X2xlYXN0XG4gICAgICB0aGVuIFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX3RpbWUpKVxuOztcblxubGV0IGN5Y2xlX251bV9qb2JzIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMpKVxuOztcblxubGV0IGN5Y2xlX2NvdW50IHQgPSB0LmN5Y2xlX2NvdW50XG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCBpbnQgPVxuICB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDwtIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gaW50XG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCA9XG4gIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG47O1xuXG5sZXQgc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgZiA9IHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPC0gZlxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZXh0ZXJuYWxfam9icyAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSk7XG4gIHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgKClcbjs7XG5cbmxldCBzZXRfZXZlbnRfYWRkZWRfaG9vayB0IGYgPSB0LmV2ZW50X2FkZGVkX2hvb2sgPC0gU29tZSBmXG5sZXQgc2V0X2pvYl9xdWV1ZWRfaG9vayB0IGYgPSB0LmpvYl9xdWV1ZWRfaG9vayA8LSBTb21lIGZcblxubGV0IGNyZWF0ZV9hbGFybSB0IGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgR2MuRXhwZXJ0LkFsYXJtLmNyZWF0ZSAoZnVuICgpIC0+XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXIgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciBoZWFwX2Jsb2NrID1cbiAgICAoKiBIZXJlIHdlIGNhbiBiZSBpbiBhbnkgdGhyZWFkLCBhbmQgbWF5IG5vdCBiZSBob2xkaW5nIHRoZSBhc3luYyBsb2NrLiAgU28sIHdlIGNhblxuICAgICAgIG9ubHkgZG8gdGhyZWFkLXNhZmUgdGhpbmdzLlxuXG4gICAgICAgQnkgcHV0dGluZyBbaGVhcF9ibG9ja10gaW4gW2V4dGVybmFsX2pvYnNdLCB3ZSBhcmUga2VlcGluZyBpdCBhbGl2ZSB1bnRpbCB0aGUgbmV4dFxuICAgICAgIHRpbWUgdGhlIGFzeW5jIHNjaGVkdWxlciBnZXRzIGFyb3VuZCB0byBkZXF1ZXVlaW5nIGl0LiAgQ2FsbGluZ1xuICAgICAgIFt0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBlbnN1cmVzIHRoYXQgd2lsbCBoYXBwZW4gaW4gc2hvcnQgb3JkZXIuICBUaHVzLFxuICAgICAgIHdlIGFyZSBub3QgZHJhbWF0aWNhbGx5IGluY3JlYXNpbmcgdGhlIGxpZmV0aW1lIG9mIFtoZWFwX2Jsb2NrXSwgc2luY2UgdGhlIE9DYW1sXG4gICAgICAgcnVudGltZSBhbHJlYWR5IHJlc3VycmVjdGVkIFtoZWFwX2Jsb2NrXSBzbyB0aGF0IHdlIGNvdWxkIHJlZmVyIHRvIGl0IGhlcmUuICBUaGVcbiAgICAgICBPQ2FtbCBydW50aW1lIGFscmVhZHkgcmVtb3ZlZCB0aGUgZmluYWxpemVyIGZ1bmN0aW9uIHdoZW4gaXQgbm90aWNlZCBbaGVhcF9ibG9ja11cbiAgICAgICBjb3VsZCBiZSBmaW5hbGl6ZWQsIHNvIHRoZXJlIGlzIG5vIGluZmluaXRlIGxvb3AgaW4gd2hpY2ggd2UgYXJlIGNhdXNpbmcgdGhlXG4gICAgICAgZmluYWxpemVyIHRvIHJ1biBhZ2Fpbi4gIEFsc28sIE9DYW1sIGRvZXMgbm90IGltcG9zZSBhbnkgcmVxdWlyZW1lbnQgb24gZmluYWxpemVyXG4gICAgICAgZnVuY3Rpb25zIHRoYXQgdGhleSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIGJsb2NrLCBzbyBpdCdzIGZpbmUgdGhhdCB3ZSBrZWVwXG4gICAgICAgW2hlYXBfYmxvY2tdIGFyb3VuZCB1bnRpbCBsYXRlci4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGhlYXBfYmxvY2tcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyXSBiZWNhdXNlIHRoZSBsYXR0ZXJcbiAgICAgaGFzIGl0cyBvd24gd3JhcHBlciBhcm91bmQgW0NhbWwuR2MuZmluYWxpc2VdIHRvIHJ1biBmaW5hbGl6ZXJzIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBTdGRsaWIuR2MuZmluYWxpc2UgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9leG4gdCB4IGYgPVxuICBhZGRfZmluYWxpemVyIHQgKEhlYXBfYmxvY2suY3JlYXRlX2V4biB4KSAoZnVuIGhlYXBfYmxvY2sgLT5cbiAgICBmIChIZWFwX2Jsb2NrLnZhbHVlIGhlYXBfYmxvY2spKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdCB0IGhlYXBfYmxvY2sgZiA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBsZXQgZmluYWxpemVyICgpID1cbiAgICAoKiBIZXJlIHdlIGNhbiBiZSBpbiBhbnkgdGhyZWFkLCBhbmQgbWF5IG5vdCBiZSBob2xkaW5nIHRoZSBhc3luYyBsb2NrLiAgU28sIHdlIGNhblxuICAgICAgIG9ubHkgZG8gdGhyZWFkLXNhZmUgdGhpbmdzLiAqKVxuICAgIGlmIERlYnVnLmZpbmFsaXplcnNcbiAgICB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJlbnF1ZXVlaW5nIGZpbmFsaXplciAodXNpbmcgJ2xhc3QnIHNlbWFudGljKVwiO1xuICAgIHRocmVhZF9zYWZlX2VucXVldWVfZXh0ZXJuYWxfam9iIHQgZXhlY3V0aW9uX2NvbnRleHQgZiAoKVxuICBpblxuICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImFkZGluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgKCogV2UgdXNlIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIGluc3RlYWQgb2YgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl9sYXN0XSBiZWNhdXNlXG4gICAgIHRoZSBsYXR0ZXIgaGFzIGl0cyBvd24gd3JhcHBlciBhcm91bmQgW0NhbWwuR2MuZmluYWxpc2VfbGFzdF0gdG8gcnVuIGZpbmFsaXplcnNcbiAgICAgc3luY2hyb25vdXNseS4gKilcbiAgdHJ5IFN0ZGxpYi5HYy5maW5hbGlzZV9sYXN0IGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gdCB4IGYgPSBhZGRfZmluYWxpemVyX2xhc3QgdCAoSGVhcF9ibG9jay5jcmVhdGVfZXhuIHgpIGZcblxuKCoqIFtmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZF0gc2V0cyB0aGUgbnVtYmVyIG9mIG5vcm1hbCBqb2JzIGFsbG93ZWQgdG8gcnVuIGluIHRoaXNcbiAgICBjeWNsZSB0byB6ZXJvLiAgVGh1cywgYWZ0ZXIgdGhlIGN1cnJlbnRseSBydW5uaW5nIGpvYiBjb21wbGV0ZXMsIHRoZSBzY2hlZHVsZXIgd2lsbFxuICAgIHN3aXRjaCB0byBsb3cgcHJpb3JpdHkgam9icyBhbmQgdGhlbiBlbmQgdGhlIGN1cnJlbnQgY3ljbGUuICopXG5sZXQgZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgdCA9XG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyAwXG47O1xuXG4oKiBXZSBwcmVhbGxvY2F0ZSBbc2VuZF9leG5dIHRvIGF2b2lkIGFsbG9jYXRpbmcgaXQgb24gZWFjaCBjYWxsIHRvIFthZHZhbmNlX2Nsb2NrXS4gKilcbmxldCBzZW5kX2V4biA9IFNvbWUgTW9uaXRvci5zZW5kX2V4blxuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH5ub3cgPVxuICBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuYWR2YW5jZV9pbnRlcm5hbCB0LnRpbWVfc291cmNlIH50b186bm93IH5zZW5kX2V4blxuOztcblxubGV0IHJ1bl9jeWNsZSB0ID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJydW5fY3ljbGUgc3RhcnRpbmdcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCBub3cgPSBUaW1lX25zLm5vdyAoKSBpblxuICB0LmN5Y2xlX2NvdW50IDwtIHQuY3ljbGVfY291bnQgKyAxO1xuICB0LmN5Y2xlX3N0YXJ0IDwtIG5vdztcbiAgdC5pbl9jeWNsZSA8LSB0cnVlO1xuICBCdmFyLmJyb2FkY2FzdCB0LnlpZWxkICgpO1xuICBsZXQgbnVtX2pvYnNfcnVuX2F0X3N0YXJ0X29mX2N5Y2xlID0gbnVtX2pvYnNfcnVuIHQgaW5cbiAgQXJyYXkuaXRlciB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydCB+ZjooZnVuIGYgLT4gZiAoKSk7XG4gIGFkdmFuY2VfY2xvY2sgdCB+bm93O1xuICBzdGFydF9jeWNsZSB0IH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5OnQubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGU7XG4gIGxldCByZWMgcnVuX2pvYnMgdCA9XG4gICAgbWF0Y2ggU2NoZWR1bGVyLnJ1bl9qb2JzIHQgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIChleG4sIGJhY2t0cmFjZSkgLT5cbiAgICAgIE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJhY2t0cmFjZSk7XG4gICAgICAoKiBbcnVuX2pvYnNdIHN0b3BwZWQgZHVlIHRvIGFuIGV4bi4gIFRoZXJlIG1heSBzdGlsbCBiZSBqb2JzIHRoYXQgY291bGQgYmVcbiAgICAgICAgIHJ1biB0aGlzIGN5Y2xlLCBzbyBbcnVuX2pvYnNdIGFnYWluLiAqKVxuICAgICAgcnVuX2pvYnMgdFxuICBpblxuICBydW5fam9icyB0O1xuICBsZXQgY3ljbGVfdGltZSA9IFRpbWVfbnMuZGlmZiAoVGltZV9ucy5ub3cgKCkpIHQuY3ljbGVfc3RhcnQgaW5cbiAgdC5sYXN0X2N5Y2xlX3RpbWUgPC0gY3ljbGVfdGltZTtcbiAgdC5sYXN0X2N5Y2xlX251bV9qb2JzIDwtIG51bV9qb2JzX3J1biB0IC0gbnVtX2pvYnNfcnVuX2F0X3N0YXJ0X29mX2N5Y2xlO1xuICB0LnRvdGFsX2N5Y2xlX3RpbWUgPC0gVGltZV9ucy5TcGFuLih0LnRvdGFsX2N5Y2xlX3RpbWUgKyBjeWNsZV90aW1lKTtcbiAgaWYgQnZhci5oYXNfYW55X3dhaXRlcnMgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiAmJiBudW1fcGVuZGluZ19qb2JzIHQgPSAwXG4gIHRoZW4gQnZhci5icm9hZGNhc3QgdC55aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiAoKTtcbiAgQXJyYXkuaXRlciB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICB0LmluX2N5Y2xlIDwtIGZhbHNlO1xuICBpZiBkZWJ1Z1xuICB0aGVuXG4gICAgRGVidWcubG9nXG4gICAgICBcInJ1bl9jeWNsZSBmaW5pc2hlZFwiXG4gICAgICAodW5jYXVnaHRfZXhuIHQsIGlzX3NvbWUgKG5leHRfdXBjb21pbmdfZXZlbnQgdCkpXG4gICAgICBbJXNleHBfb2Y6IEVycm9yLnQgb3B0aW9uICogYm9vbF1cbjs7XG5cbmxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBzdGFydGluZ1wiO1xuICBsZXQgdCA9IHQgKCkgaW5cbiAgaWYgaXNfZGVhZCB0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGNhbm5vdCBwcm9jZWVkIC0tIHNjaGVkdWxlciBpcyBkZWFkXCJcbiAgICAgICAgICB+c2NoZWR1bGVyOih0IDogdCldO1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIHJ1bl9jeWNsZSB0O1xuICAgIGFkdmFuY2VfY2xvY2sgdCB+bm93OihUaW1lX25zLm5vdyAoKSk7XG4gICAgaWYgY2FuX3J1bl9hX2pvYiB0IHRoZW4gbG9vcCAoKVxuICBpblxuICBsb29wICgpO1xuICAoKiBSZXNldCB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dCB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgd2hlbiB3ZSdyZSBub3QgaW5cbiAgICAgYSBqb2IsIFtjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gbWFpbl9leGVjdXRpb25fY29udGV4dF0uICopXG4gIHNldF9leGVjdXRpb25fY29udGV4dCB0IHQubWFpbl9leGVjdXRpb25fY29udGV4dDtcbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBmaW5pc2hlZFwiO1xuICBPcHRpb24uaXRlciAodW5jYXVnaHRfZXhuIHQpIH5mOkVycm9yLnJhaXNlXG47O1xuXG5sZXQgbWFrZV9hc3luY191bnVzYWJsZSAoKSA9XG4gIGxldCB0ID0gIXRfcmVmIGluXG4gIHQuY2hlY2tfYWNjZXNzXG4gIDwtIFNvbWVcbiAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJXNleHAgXCJBc3luYyBzY2hlZHVsZXIgaXMgdW51c2FibGUgZHVlIHRvIFttYWtlX2FzeW5jX3VudXNhYmxlXVwiXSlcbjs7XG5cbmxldCByZXNldF9pbl9mb3JrZWRfcHJvY2VzcyAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzXCI7XG4gICgqIFRoZXJlIGlzIG5vIG5lZWQgdG8gZW1wdHkgW21haW5fbW9uaXRvcl9ob2xlXS4gKilcbiAgU2NoZWR1bGVyLih0X3JlZiA6PSBjcmVhdGUgKCkpXG47O1xuXG5sZXQgY2hlY2tfaW52YXJpYW50cyB0ID0gdC5jaGVja19pbnZhcmlhbnRzXG5sZXQgc2V0X2NoZWNrX2ludmFyaWFudHMgdCBiID0gdC5jaGVja19pbnZhcmlhbnRzIDwtIGJcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgdCBiID0gdC5yZWNvcmRfYmFja3RyYWNlcyA8LSBiXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCB0LnlpZWxkXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/KG1heV9yZXR1cm5faW1tZWRpYXRlbHkgPSBmYWxzZSkgdCA9XG4gIGlmIG1heV9yZXR1cm5faW1tZWRpYXRlbHkgJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIEJ2YXIud2FpdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci55aWVsZF9ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgY291bnRcIiAobiA6IGludCldXG4gIGVsc2UgaWYgbiA9IDFcbiAgdGhlbiBzdGFnZSAoZnVuIHQgLT4geWllbGQgdClcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X3VudGlsX3lpZWxkID0gcmVmIG4gaW5cbiAgICBzdGFnZSAoZnVuIHQgLT5cbiAgICAgIGRlY3IgY291bnRfdW50aWxfeWllbGQ7XG4gICAgICBpZiAhY291bnRfdW50aWxfeWllbGQgPiAwXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvdW50X3VudGlsX3lpZWxkIDo9IG47XG4gICAgICAgIHlpZWxkIHQpKSlcbjs7XG5cbmxldCB0b3RhbF9jeWNsZV90aW1lIHQgPVxuICAoKiBBZGp1c3QgZm9yIHRoZSBmYWN0IHRoZSBjYWxsZXIncyBwcm9iYWJseSBhbiBBc3luYyBqb2IuICopXG4gIGlmIHQuaW5fY3ljbGVcbiAgdGhlbiAoXG4gICAgbGV0IHRoaXNfY3ljbGVfdGltZSA9IFRpbWVfbnMuKGRpZmYgKG5vdyAoKSkgdC5jeWNsZV9zdGFydCkgaW5cbiAgICBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIHRoaXNfY3ljbGVfdGltZSkpXG4gIGVsc2UgdC50b3RhbF9jeWNsZV90aW1lXG47O1xuXG5tb2R1bGUgVmVyeV9sb3dfcHJpb3JpdHlfd29yayA9IHN0cnVjdFxuICBtb2R1bGUgV29ya2VyX3Jlc3VsdCA9IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5FeGVjX3Jlc3VsdFxuXG5cbiAgbGV0IHJlYyBydW4gdCA9IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmc6MV8wMDBcblxuICBhbmQgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIHlpZWxkX3RoZW5fcnVuIHRcbiAgICBlbHNlIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHdvcmtlciA9IERlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgICAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcblxuICBhbmQgeWllbGRfdGhlbl9ydW4gdCA9XG4gICAgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiBEZWZlcnJlZC51cG9uICh5aWVsZCB0KSAoZnVuICgpIC0+IHJ1biB0KVxuXG4gIGFuZCBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHdvcmtlci5leGVjdXRpb25fY29udGV4dCk7XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIChcbiAgICAgIERlcXVlLmVucXVldWVfZnJvbnQgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIHdvcmtlcjtcbiAgICAgIHlpZWxkX3RoZW5fcnVuIHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgLSAxIGluXG4gICAgICBtYXRjaCB3b3JrZXIuZXhlYyAoKSB3aXRoXG4gICAgICB8IEZpbmlzaGVkIC0+IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgTm90X2ZpbmlzaGVkIC0+IHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgIE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJ0KTtcbiAgICAgICAgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcbiAgOztcblxuICBsZXQgZW5xdWV1ZSB+ZiA9XG4gICAgbGV0IHQgPSB0ICgpIGluXG4gICAgbGV0IHF1ZXVlID0gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgbGV0IHJ1bm5pbmcgPSBub3QgKERlcXVlLmlzX2VtcHR5IHF1ZXVlKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSB+cHJpb3JpdHk6TG93XG4gICAgaW5cbiAgICBEZXF1ZS5lbnF1ZXVlX2JhY2sgcXVldWUgeyBleGVjdXRpb25fY29udGV4dDsgZXhlYyA9IGYgfTtcbiAgICBpZiBub3QgcnVubmluZyB0aGVuIGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBydW4gdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfYmVuY2ggPSBzdHJ1Y3RcbiAgbGV0IGFkdmFuY2VfY2xvY2sgPSBhZHZhbmNlX2Nsb2NrXG5lbmRcblxubGV0IGluX2N5Y2xlIHQgPSB0LmluX2N5Y2xlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBDb3VudGluZ19zZW1hcGhvcmUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHdhaXRfdG9fYWNxdWlyZV9qb2JfdG9rZW4gOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgcmVsZWFzZV9qb2JfdG9rZW4gOiB0IC0+IHVuaXRcbiAgdmFsIGFib3J0IDogdCAtPiB1bml0XG4gIHZhbCBjcmVhdGUgOiBtYXhfY29uY3VycmVudF9qb2JzOmludCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB3YWl0ZXIgOiB1bml0IEl2YXIudCBvcHRpb25cbiAgICA7IG11dGFibGUgYWJvcnRlZCA6IGJvb2xcbiAgICB9XG5cbiAgbGV0IHdhaXRfdG9fYWNxdWlyZV9qb2JfdG9rZW4gKHsgbWF4X2NvbmN1cnJlbnRfam9iczsgd2FpdGVyOyBhYm9ydGVkIH0gYXMgdCkgPVxuICAgIG1hdGNoIGFib3J0ZWQgd2l0aFxuICAgIHwgdHJ1ZSAtPiBEZWZlcnJlZC5uZXZlciAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGlmIG1heF9jb25jdXJyZW50X2pvYnMgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgdC5tYXhfY29uY3VycmVudF9qb2JzIDwtIG1heF9jb25jdXJyZW50X2pvYnMgLSAxO1xuICAgICAgICBEZWZlcnJlZC5yZXR1cm4gKCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgYXNzZXJ0IChPcHRpb24uaXNfbm9uZSB3YWl0ZXIpO1xuICAgICAgICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIHQud2FpdGVyIDwtIFNvbWUgaXZhcjtcbiAgICAgICAgSXZhci5yZWFkIGl2YXIpXG4gIDs7XG5cbiAgbGV0IHJlbGVhc2Vfam9iX3Rva2VuICh7IG1heF9jb25jdXJyZW50X2pvYnM7IHdhaXRlcjsgYWJvcnRlZCA9IF8gfSBhcyB0KSA9XG4gICAgbWF0Y2ggd2FpdGVyIHdpdGhcbiAgICB8IFNvbWUgaXZhciAtPlxuICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICB0LndhaXRlciA8LSBOb25lXG4gICAgfCBOb25lIC0+IHQubWF4X2NvbmN1cnJlbnRfam9icyA8LSBtYXhfY29uY3VycmVudF9qb2JzICsgMVxuICA7O1xuXG4gIGxldCBhYm9ydCB0ID1cbiAgICB0LmFib3J0ZWQgPC0gdHJ1ZTtcbiAgICB0LndhaXRlciA8LSBOb25lXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgeyBtYXhfY29uY3VycmVudF9qb2JzOyB3YWl0ZXIgPSBOb25lOyBhYm9ydGVkID0gZmFsc2UgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBjb21wdXRlIDpcbiAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQudCAtPiBDb3VudGluZ19zZW1hcGhvcmUudCAtPiAoJ2EgRGVmZXJyZWQudCAtPiB1bml0KSAtPiB1bml0XG4gICAgfVxuICBbQEB1bmJveGVkXVxuXG4gIGxldCByZXR1cm4geCA9IHsgY29tcHV0ZSA9IChmdW4gXyBfIGsgLT4gayAocmV0dXJuIHgpKSB9XG5cbiAgbGV0IG1hcCA9XG4gICAgYEN1c3RvbVxuICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICB7IGNvbXB1dGUgPVxuICAgICAgICAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgICAgICAgICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZCAtPlxuICAgICAgICAgICAgICAgICAga1xuICAgICAgICAgICAgICAgICAgICAobGV0JW1hcCByZXN1bHQgPSBkIGluXG4gICAgICAgICAgICAgICAgICAgICBmIHJlc3VsdCkpKVxuICAgICAgICAgfSlcbiAgOztcblxuICBsZXQgYXBwbHkgdF9mIHQgPVxuICAgIHsgY29tcHV0ZSA9XG4gICAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgICAgdF9mLmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZGYgLT5cbiAgICAgICAgICAgICB0LmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZHYgLT5cbiAgICAgICAgICAgICAgIGtcbiAgICAgICAgICAgICAgICAgKGxldCViaW5kIGYgPSBkZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCB2ID0gZHYgaW5cbiAgICAgICAgICAgICAgICAgIGYgdikpKSlcbiAgICB9XG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKFQpXG5cbmxldCBlbnF1ZXVlJyBzY2hlZHVsZXIgY3R4IGYgPVxuICBsZXQgaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBjdHggKGZ1biAoKSAtPiB1cG9uIChmICgpKSAoSXZhci5maWxsIGl2YXIpKSAoKTtcbiAgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBqb2IgZiA9XG4gIHsgY29tcHV0ZSA9XG4gICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICBEZWZlcnJlZC51cG9uIChDb3VudGluZ19zZW1hcGhvcmUud2FpdF90b19hY3F1aXJlX2pvYl90b2tlbiBzZW1hcGhvcmUpIChmdW4gKCkgLT5cbiAgICAgICAgICAga1xuICAgICAgICAgICAgIChlbnF1ZXVlJyAoU2NoZWR1bGVyLnQgKCkpIGV4ZWNfY3R4IChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBsZXQlbWFwIGEgPSBmICgpIGluXG4gICAgICAgICAgICAgICAgQ291bnRpbmdfc2VtYXBob3JlLnJlbGVhc2Vfam9iX3Rva2VuIHNlbWFwaG9yZTtcbiAgICAgICAgICAgICAgICBhKSkpKVxuICB9XG47O1xuXG5sZXQgcnVuIHQgfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBsZXQgc2VtYXBob3JlID0gQ291bnRpbmdfc2VtYXBob3JlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAoKiBUaGUgbmFtZSBpcyBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiBvcmRlciB0byBwcmV2ZW50IFtNb25pdG9yLnNlbmRfZXhuXVxuICAgICBmcm9tIGFwcGVuZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG1vbml0b3IgdG8gdGhlIGV4Y2VwdGlvbnMgd2UgZm9yd2FyZC5cbiAgICAgVGhpcyBtYXR0ZXJzIGJlY2F1c2Ugd2Ugd2FudCBzaW1saWFyIGJlaGF2aW9yIHRvIFtUaHJvdHRsZV0gYW5kIG5vdCBicmVha1xuICAgICBleGlzdGluZyB0ZXN0cy4gKilcbiAgbGV0IG1vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlwiICgpIGluXG4gIGxldCBwYXJlbnRfbW9uaXRvciA9IE1vbml0b3IuY3VycmVudCAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgbW9uaXRvciB+ZjooZnVuIGVyciAtPlxuICAgIENvdW50aW5nX3NlbWFwaG9yZS5hYm9ydCBzZW1hcGhvcmU7XG4gICAgTW9uaXRvci5zZW5kX2V4biBwYXJlbnRfbW9uaXRvciBlcnIpO1xuICBsZXQgZXhlY19jdHggPVxuICAgIEV4ZWN1dGlvbl9jb250ZXh0LmNyZWF0ZV9saWtlXG4gICAgICB+bW9uaXRvclxuICAgICAgKFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IChTY2hlZHVsZXIudCAoKSkpXG4gIGluXG4gIGxldCBpdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgdC5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIHIgLT4gRGVmZXJyZWQudXBvbiByIChJdmFyLmZpbGwgaXZhcikpO1xuICBJdmFyLnJlYWQgaXZhclxuOztcblxubGV0IG9mX3RodW5rIHRodW5rID1cbiAgeyBjb21wdXRlID1cbiAgICAgIChmdW4gZXhlY19jdHggc2VtYXBob3JlIGsgLT5cbiAgICAgICAgIGxldCB0ID0gdGh1bmsgKCkgaW5cbiAgICAgICAgIHQuY29tcHV0ZSBleGVjX2N0eCBzZW1hcGhvcmUgaylcbiAgfVxuOztcblxubGV0ICggKj4gKSB0MSB0MiA9XG4gIHsgY29tcHV0ZSA9XG4gICAgICAoZnVuIGV4ZWNfY3R4IHNlbWFwaG9yZSBrIC0+XG4gICAgICAgICB0MS5jb21wdXRlIGV4ZWNfY3R4IHNlbWFwaG9yZSAoZnVuIGQxIC0+XG4gICAgICAgICAgIHQyLmNvbXB1dGUgZXhlY19jdHggc2VtYXBob3JlIChmdW4gZDIgLT5cbiAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAobGV0JWJpbmQgKCkgPSBkMSBpblxuICAgICAgICAgICAgICAgIGQyKSkpKVxuICB9XG47O1xuXG5sZXQgYm90aF91bml0ID0gKCAqPiApXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgXyB0ID1cbiAgfCBTdGFjayA6ICdhIFN0YWNrLnQgLT4gJ2EgdFxuICB8IENvdW50ZXIgOiB7IG11dGFibGUgbGVuZ3RoIDogaW50IH0gLT4gdW5pdCB0XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgb2ZfbGlzdCBsaXN0ID0gU3RhY2sgKFN0YWNrLm9mX2xpc3QgbGlzdClcblxubGV0IGNyZWF0ZV9jb3VudGVyIH5sZW5ndGggPVxuICBpZiBsZW5ndGggPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJbU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlcl0gZ290IG5lZ2F0aXZlIGxlbmd0aFwiIChsZW5ndGggOiBpbnQpXTtcbiAgQ291bnRlciB7IGxlbmd0aCB9XG47O1xuXG5sZXQgbGVuZ3RoICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2subGVuZ3RoIHNcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGhcbjs7XG5cbmxldCBjbGVhciAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLmNsZWFyIHNcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gMFxuOztcblxubGV0IHB1c2ggKHR5cGUgYSkgKHQgOiBhIHQpIGEgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnB1c2ggcyBhXG4gIHwgQ291bnRlciByIC0+IHIubGVuZ3RoIDwtIHIubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9leG4gKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5wb3BfZXhuIHNcbiAgfCBDb3VudGVyIHIgLT5cbiAgICBpZiByLmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLnBvcF9leG5dIG9mIGVtcHR5IHN0YWNrXCJdO1xuICAgIHIubGVuZ3RoIDwtIHIubGVuZ3RoIC0gMVxuOztcblxubGV0IGl0ZXIgKHR5cGUgYSkgKHQgOiBhIHQpIH4oZiA6IGEgLT4gdW5pdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLml0ZXIgcyB+ZlxuICB8IENvdW50ZXIgciAtPlxuICAgIGZvciBfID0gMSB0byByLmxlbmd0aCBkb1xuICAgICAgZiAoKVxuICAgIGRvbmVcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbnR5cGUgJ2Egb3V0Y29tZSA9XG4gIFsgYE9rIG9mICdhXG4gIHwgYEFib3J0ZWRcbiAgfCBgUmFpc2VkIG9mIGV4blxuICBdXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgSW50ZXJuYWxfam9iIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBjcmVhdGUgOiAoJ2EgLT4gJ2IgRGVmZXJyZWQudCkgLT4gJ2EgdCAqICdiIG91dGNvbWUgRGVmZXJyZWQudFxuXG4gICgqIEV2ZXJ5IGludGVybmFsIGpvYiB3aWxsIGV2ZW50dWFsbHkgYmUgZWl0aGVyIFtydW5dIG9yIFthYm9ydF1lZCwgYnV0IG5vdCBib3RoLiAqKVxuXG4gIHZhbCBydW4gOiAnYSB0IC0+ICdhIC0+IFsgYE9rIHwgYFJhaXNlZCBdIERlZmVycmVkLnRcbiAgdmFsIGFib3J0IDogXyB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgc3RhcnQgOiBbIGBBYm9ydCB8IGBTdGFydCBvZiAnYSBdIEl2YXIudFxuICAgIDsgb3V0Y29tZSA6IFsgYE9rIHwgYEFib3J0ZWQgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHdvcmsgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtYXRjaCViaW5kIEl2YXIucmVhZCBzdGFydCB3aXRoXG4gICAgICB8IGBBYm9ydCAtPiByZXR1cm4gYEFib3J0ZWRcbiAgICAgIHwgYFN0YXJ0IGEgLT5cbiAgICAgICAgKG1hdGNoJW1hcFxuICAgICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiB3b3JrIGEpXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IE9rIGEgLT4gYE9rIGFcbiAgICAgICAgIHwgRXJyb3IgZXhuIC0+IGBSYWlzZWQgZXhuKVxuICAgIGluXG4gICAgbGV0IG91dGNvbWUgPVxuICAgICAgbWF0Y2glbWFwIHJlc3VsdCB3aXRoXG4gICAgICB8IGBPayBfIC0+IGBPa1xuICAgICAgfCBgQWJvcnRlZCAtPiBgQWJvcnRlZFxuICAgICAgfCBgUmFpc2VkIF8gLT4gYFJhaXNlZFxuICAgIGluXG4gICAgbGV0IHQgPSB7IHN0YXJ0OyBvdXRjb21lIH0gaW5cbiAgICB0LCByZXN1bHRcbiAgOztcblxuICBsZXQgcnVuIHQgYSA9XG4gICAgSXZhci5maWxsIHQuc3RhcnQgKGBTdGFydCBhKTtcbiAgICBtYXRjaCVtYXAgdC5vdXRjb21lIHdpdGhcbiAgICB8IGBBYm9ydGVkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGBPayB8IGBSYWlzZWQpIGFzIHggLT4geFxuICA7O1xuXG4gIGxldCBhYm9ydCB0ID0gSXZhci5maWxsIHQuc3RhcnQgYEFib3J0XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBjb250aW51ZV9vbl9lcnJvciA6IGJvb2xcbiAgOyBtYXhfY29uY3VycmVudF9qb2JzIDogaW50XG4gIDsgKCogW2pvYl9yZXNvdXJjZXNfbm90X2luX3VzZV0gaG9sZHMgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgaW4gdXNlIGJ5IGFcbiAgICAgICBydW5uaW5nIGpvYi4gKilcbiAgICBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgOiAnYSBTdGFja19vcl9jb3VudGVyLnRcbiAgO1xuICAgICgqIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIHRoZSBxdWV1ZSBvZiBqb2JzIHRoYXQgaGF2ZW4ndCB5ZXQgc3RhcnRlZC4gKilcbiAgICBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgOiAnYSBJbnRlcm5hbF9qb2IudCBRdWV1ZS50XG4gIDsgKCogWzAgPD0gbnVtX2pvYnNfcnVubmluZyA8PSBtYXhfY29uY3VycmVudF9qb2JzXS4gKilcbiAgICBtdXRhYmxlIG51bV9qb2JzX3J1bm5pbmcgOiBpbnRcbiAgOyAoKiBbY2FwYWNpdHlfYXZhaWxhYmxlXSBpcyBbU29tZSBpdmFyXSBpZiB1c2VyIGNvZGUgaGFzIGNhbGxlZCBbY2FwYWNpdHlfYXZhaWxhYmxlIHRdXG4gICAgICAgYW5kIGlzIHdhaXRpbmcgdG8gYmUgbm90aWZpZWQgd2hlbiBjYXBhY2l0eSBpcyBhdmFpbGFibGUgaW4gdGhlIHRocm90dGxlLlxuICAgICAgIFttYXliZV9zdGFydF9qb2JdIHdpbGwgZmlsbCBbaXZhcl0gd2hlbiBjYXBhY2l0eSBiZWNvbWVzIGF2YWlsYWJsZSwgaS5lLiB3aGVuXG4gICAgICAgW2pvYnNfd2FpdGluZ190b19zdGFydF0gaXMgZW1wdHkgYW5kIFtudW1fam9ic19ydW5uaW5nIDwgbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBjYXBhY2l0eV9hdmFpbGFibGUgOiB1bml0IEl2YXIudCBvcHRpb25cbiAgOyAoKiBbaXNfZGVhZF0gaXMgdHJ1ZSBpZiBbdF0gd2FzIGtpbGxlZCBkdWUgdG8gYSBqb2IgcmFpc2luZyBhbiBleGNlcHRpb24gb3IgW2tpbGwgdF1cbiAgICAgICBiZWluZyBjYWxsZWQuICopXG4gICAgbXV0YWJsZSBpc19kZWFkIDogYm9vbFxuICA7ICgqIFtjbGVhbnNdIGhvbGRzIGZ1bmN0aW9ucyB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNsZWFuIGVhY2ggcmVzb3VyY2Ugd2hlbiBbdF0gaXNcbiAgICAgICBraWxsZWQuICopXG4gICAgbXV0YWJsZSBjbGVhbnMgOiAoJ2EgLT4gdW5pdCBEZWZlcnJlZC50KSBsaXN0XG4gIDsgKCogW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIGlzIHRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHdob3NlIGNsZWFuIGZ1bmN0aW9ucyBoYXZlXG4gICAgICAgbm90IHlldCBjb21wbGV0ZWQuICBXaGlsZSBbdF0gaXMgYWxpdmUsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID1cbiAgICAgICBtYXhfY29uY3VycmVudF9qb2JzXS4gIE9uY2UgW3RdIGlzIGtpbGxlZCwgW251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRdIGRlY3JlYXNlcyB0b1xuICAgICAgIHplcm8gb3ZlciB0aW1lIGFzIHRoZSBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgbXV0YWJsZSBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDogaW50XG4gIDsgKCogW2NsZWFuZWRdIGJlY29tZXMgZGV0ZXJtaW5lZCB3aGVuIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSByZWFjaGVzIHplcm8sXG4gICAgICAgaS5lLiBhZnRlciBbdF0gaXMga2lsbGVkIGFuZCBhbGwgaXRzIGNsZWFuIGZ1bmN0aW9ucyBjb21wbGV0ZS4gKilcbiAgICBjbGVhbmVkIDogdW5pdCBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNvbnRpbnVlX29uX2Vycm9yOmlnbm9yZVxuICAgICAgfm1heF9jb25jdXJyZW50X2pvYnM6XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9jb25jdXJyZW50X2pvYnMgLT4gYXNzZXJ0IChtYXhfY29uY3VycmVudF9qb2JzID4gMCkpKVxuICAgICAgfmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIC0+XG4gICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIuaXRlciBqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgfmY6aW52YXJpYW50X2E7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlc19ub3RfaW5fdXNlXG4gICAgICAgICAgICAgPSBpZiB0LmlzX2RlYWQgdGhlbiAwIGVsc2UgdC5tYXhfY29uY3VycmVudF9qb2JzIC0gdC5udW1fam9ic19ydW5uaW5nKSkpXG4gICAgICB+am9ic193YWl0aW5nX3RvX3N0YXJ0OlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uIGpvYnNfd2FpdGluZ190b19zdGFydCAtPlxuICAgICAgICAgICBpZiB0LmlzX2RlYWQgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGpvYnNfd2FpdGluZ190b19zdGFydCkpKVxuICAgICAgfm51bV9qb2JzX3J1bm5pbmc6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9qb2JzX3J1bm5pbmcgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9qb2JzX3J1bm5pbmcgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgICAgICB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5jYXBhY2l0eV9hdmFpbGFibGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgIHwgU29tZSBpdmFyIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBpdmFyKSkpXG4gICAgICB+aXNfZGVhZDppZ25vcmVcbiAgICAgIH5jbGVhbnM6aWdub3JlXG4gICAgICB+bnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZDpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8PSB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICAgICAgICAgICBpZiBudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gYXNzZXJ0IHQuaXNfZGVhZCkpXG4gICAgICB+Y2xlYW5lZDpcbiAgICAgICAgKGNoZWNrIChmdW4gY2xlYW5lZCAtPlxuICAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgY2xlYW5lZCB0aGVuIGFzc2VydCAodC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID0gMCkpKVxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVGhyb3R0bGUuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pICh0IDogXyB0KV1cbjs7XG5cbm1vZHVsZSBUMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdraW5kKSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIHRcbmVuZFxuXG5sZXQgbnVtX2pvYnNfd2FpdGluZ190b19zdGFydCB0ID0gUXVldWUubGVuZ3RoIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0XG5cbmxldCBjbGVhbl9yZXNvdXJjZSB0IGEgPVxuICBEZWZlcnJlZC5hbGxfdW5pdCAoTGlzdC5tYXAgdC5jbGVhbnMgfmY6KGZ1biBmIC0+IGYgYSkpXG4gID4+PiBmdW4gKCkgLT5cbiAgdC5udW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIDwtIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCAtIDE7XG4gIGlmIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDAgdGhlbiBJdmFyLmZpbGwgdC5jbGVhbmVkICgpXG47O1xuXG5sZXQga2lsbCB0ID1cbiAgaWYgbm90IHQuaXNfZGVhZFxuICB0aGVuIChcbiAgICB0LmlzX2RlYWQgPC0gdHJ1ZTtcbiAgICBRdWV1ZS5pdGVyIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IH5mOkludGVybmFsX2pvYi5hYm9ydDtcbiAgICBRdWV1ZS5jbGVhciB0LmpvYnNfd2FpdGluZ190b19zdGFydDtcbiAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgfmY6KGZ1biBhIC0+IGNsZWFuX3Jlc291cmNlIHQgYSk7XG4gICAgU3RhY2tfb3JfY291bnRlci5jbGVhciB0LmpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSlcbjs7XG5cbmxldCBhdF9raWxsIHQgZiA9XG4gICgqIFdlIHByZXNlcnZlIHRoZSBleGVjdXRpb24gY29udGV4dCBzbyB0aGF0IGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IFtmXSBnbyB0byB0aGUgbW9uaXRvclxuICAgICBpbiBlZmZlY3Qgd2hlbiBbYXRfa2lsbF0gd2FzIGNhbGxlZC4gKilcbiAgbGV0IGYgPSB1bnN0YWdlIChNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIucHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYpIGluXG4gIHQuY2xlYW5zIDwtIGYgOjogdC5jbGVhbnNcbjs7XG5cbmxldCBjbGVhbmVkIHQgPSBJdmFyLnJlYWQgdC5jbGVhbmVkXG5cbmxldCByZWMgc3RhcnRfam9iIHQgPVxuICBhc3NlcnQgKG5vdCB0LmlzX2RlYWQpO1xuICBhc3NlcnQgKHQubnVtX2pvYnNfcnVubmluZyA8IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gIGFzc2VydCAobm90IChRdWV1ZS5pc19lbXB0eSB0LmpvYnNfd2FpdGluZ190b19zdGFydCkpO1xuICBsZXQgam9iID0gUXVldWUuZGVxdWV1ZV9leG4gdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgaW5cbiAgdC5udW1fam9ic19ydW5uaW5nIDwtIHQubnVtX2pvYnNfcnVubmluZyArIDE7XG4gIGxldCBqb2JfcmVzb3VyY2UgPSBTdGFja19vcl9jb3VudGVyLnBvcF9leG4gdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UgaW5cbiAgSW50ZXJuYWxfam9iLnJ1biBqb2Igam9iX3Jlc291cmNlXG4gID4+PiBmdW4gcmVzIC0+XG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgLSAxO1xuICAobWF0Y2ggcmVzIHdpdGhcbiAgIHwgYE9rIC0+ICgpXG4gICB8IGBSYWlzZWQgLT4gaWYgbm90IHQuY29udGludWVfb25fZXJyb3IgdGhlbiBraWxsIHQpO1xuICBpZiB0LmlzX2RlYWRcbiAgdGhlbiBjbGVhbl9yZXNvdXJjZSB0IGpvYl9yZXNvdXJjZVxuICBlbHNlIChcbiAgICBTdGFja19vcl9jb3VudGVyLnB1c2ggdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2Ugam9iX3Jlc291cmNlO1xuICAgIGlmIG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpXG4gICAgdGhlbiBzdGFydF9qb2IgdFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgaXZhciAtPlxuICAgICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgICAgdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gTm9uZSkpXG47O1xuXG5sZXQgY3JlYXRlX2ludGVybmFsIH5jb250aW51ZV9vbl9lcnJvciBqb2JfcmVzb3VyY2VzID1cbiAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPSBTdGFja19vcl9jb3VudGVyLmxlbmd0aCBqb2JfcmVzb3VyY2VzIGluXG4gIHsgY29udGludWVfb25fZXJyb3JcbiAgOyBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlID0gam9iX3Jlc291cmNlc1xuICA7IGpvYnNfd2FpdGluZ190b19zdGFydCA9IFF1ZXVlLmNyZWF0ZSAoKVxuICA7IG51bV9qb2JzX3J1bm5pbmcgPSAwXG4gIDsgY2FwYWNpdHlfYXZhaWxhYmxlID0gTm9uZVxuICA7IGlzX2RlYWQgPSBmYWxzZVxuICA7IGNsZWFucyA9IFtdXG4gIDsgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IG1heF9jb25jdXJyZW50X2pvYnNcbiAgOyBjbGVhbmVkID0gSXZhci5jcmVhdGUgKClcbiAgfVxuOztcblxubGV0IGNyZWF0ZV93aXRoIH5jb250aW51ZV9vbl9lcnJvciBqb2JfcmVzb3VyY2VzID1cbiAgY3JlYXRlX2ludGVybmFsIH5jb250aW51ZV9vbl9lcnJvciAoU3RhY2tfb3JfY291bnRlci5vZl9saXN0IGpvYl9yZXNvdXJjZXMpXG47O1xuXG5tb2R1bGUgU2VxdWVuY2VyID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGEgPSBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3IgWyBhIF1cbmVuZFxuXG5sZXQgY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvciB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGlmIG1heF9jb25jdXJyZW50X2pvYnMgPD0gMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGhyb3R0bGUuY3JlYXRlIHJlcXVpcmVzIHBvc2l0aXZlIG1heF9jb25jdXJyZW50X2pvYnMsIGJ1dCBnb3RcIlxuICAgICAgICAgIChtYXhfY29uY3VycmVudF9qb2JzIDogaW50KV07XG4gIGNyZWF0ZV9pbnRlcm5hbFxuICAgIH5jb250aW51ZV9vbl9lcnJvclxuICAgIChTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyIH5sZW5ndGg6bWF4X2NvbmN1cnJlbnRfam9icylcbjs7XG5cbm1vZHVsZSBKb2IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB7IGludGVybmFsX2pvYiA6ICdhIEludGVybmFsX2pvYi50XG4gICAgOyByZXN1bHQgOiBbIGBPayBvZiAnYiB8IGBBYm9ydGVkIHwgYFJhaXNlZCBvZiBleG4gXSBEZWZlcnJlZC50XG4gICAgfVxuXG4gIGxldCByZXN1bHQgdCA9IHQucmVzdWx0XG4gIGxldCBhYm9ydCB0ID0gSW50ZXJuYWxfam9iLmFib3J0IHQuaW50ZXJuYWxfam9iXG5cbiAgbGV0IGNyZWF0ZSBmID1cbiAgICBsZXQgaW50ZXJuYWxfam9iLCByZXN1bHQgPSBJbnRlcm5hbF9qb2IuY3JlYXRlIGYgaW5cbiAgICB7IGludGVybmFsX2pvYjsgcmVzdWx0IH1cbiAgOztcbmVuZFxuXG5sZXQgZW5xdWV1ZScgdCBmID1cbiAgbGV0IGpvYiA9IEpvYi5jcmVhdGUgZiBpblxuICBpZiB0LmlzX2RlYWRcbiAgdGhlbiBKb2IuYWJvcnQgam9iXG4gIGVsc2UgKFxuICAgIFF1ZXVlLmVucXVldWUgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQgam9iLmludGVybmFsX2pvYjtcbiAgICBpZiB0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMgdGhlbiBzdGFydF9qb2IgdCk7XG4gIEpvYi5yZXN1bHQgam9iXG47O1xuXG5sZXQgaGFuZGxlX2VucXVldWVfcmVzdWx0IHJlc3VsdCA9XG4gIG1hdGNoIHJlc3VsdCB3aXRoXG4gIHwgYE9rIGEgLT4gYVxuICB8IGBBYm9ydGVkIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwidGhyb3R0bGUgYWJvcnRlZCBqb2JcIl1cbiAgfCBgUmFpc2VkIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbmxldCBlbnF1ZXVlIHQgZiA9IGVucXVldWUnIHQgZiA+PnwgaGFuZGxlX2VucXVldWVfcmVzdWx0XG5cbmxldCBlbnF1ZXVlX2V4Y2x1c2l2ZSB0IGYgPVxuICBsZXQgbiA9IHQubWF4X2NvbmN1cnJlbnRfam9icyBpblxuICBpZiBJbnQuKCA+PSApIG4gMV8wMDBfMDAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJXNleHBcbiAgICAgICAgXCJbZW5xdWV1ZV9leGNsdXNpdmVdIHdhcyBjYWxsZWQgd2l0aCBhIHZlcnkgbGFyZ2UgdmFsdWUgb2YgXFxcbiAgICAgICAgIFttYXhfY29uY3VycmVudF9qb2JzXS4gVGhpcyBkb2Vzbid0IHdvcmsuXCJdO1xuICBsZXQgZG9uZV8gPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBhc3NlcnQgKG4gPiAwKTtcbiAgbGV0IGZfcGxhY2Vob2xkZXIgX3Nsb3QgPSBJdmFyLnJlYWQgZG9uZV8gaW5cbiAgZm9yIF8gPSAxIHRvIG4gLSAxIGRvXG4gICAgZG9uJ3Rfd2FpdF9mb3IgKGVucXVldWUgdCBmX3BsYWNlaG9sZGVyKVxuICBkb25lO1xuICBsZXQlbWFwIHJlc3VsdCA9IGVucXVldWUnIHQgKGZ1biBfc2xvdCAtPiBmICgpKSBpblxuICBJdmFyLmZpbGwgZG9uZV8gKCk7XG4gIGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHRcbjs7XG5cbmxldCBtb25hZF9zZXF1ZW5jZV9ob3cgfmhvdyB+ZiA9XG4gIHN0YWdlXG4gICAgKG1hdGNoIGhvdyB3aXRoXG4gICAgIHwgYFBhcmFsbGVsIC0+IGZcbiAgICAgfCAoYFNlcXVlbnRpYWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgICBsZXQgbWF4X2NvbmN1cnJlbnRfam9icyA9XG4gICAgICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgICAgfCBgU2VxdWVudGlhbCAtPiAxXG4gICAgICAgICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT4gbWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgIGluXG4gICAgICAgbGV0IHQgPSBjcmVhdGUgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIH5tYXhfY29uY3VycmVudF9qb2JzIGluXG4gICAgICAgZnVuIGEgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhKSlcbjs7XG5cbmxldCBtb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhMSBhMiAtPiBlbnF1ZXVlIHQgKGZ1biAoKSAtPiBmIGExIGEyKSlcbjs7XG5cbmxldCBwcmlvcl9qb2JzX2RvbmUgdCA9XG4gICgqIFdlIHF1ZXVlIFt0Lm1heF9jb25jdXJyZW50X2pvYnNdIGR1bW15IGpvYnMgYW5kIHdoZW4gdGhleSBhcmUgYWxsIHN0YXJ0ZWQgd2Uga25vd1xuICAgICB0aGF0IGFsbCBwcmlvciBqb2JzIGZpbmlzaGVkLiAgV2UgbWFrZSBzdXJlIHRoYXQgYWxsIGR1bW15IGpvYnMgd2FpdCBmb3IgdGhlIGxhc3Qgb25lXG4gICAgIHRvIGdldCBzdGFydGVkIGJlZm9yZSBmaW5pc2hpbmcuICopXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcgLT5cbiAgICBsZXQgZHVtbXlfam9ic19ydW5uaW5nID0gcmVmIDAgaW5cbiAgICBmb3IgXyA9IDEgdG8gdC5tYXhfY29uY3VycmVudF9qb2JzIGRvXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAoZW5xdWV1ZSB0IChmdW4gXyAtPlxuICAgICAgICAgICBpbmNyIGR1bW15X2pvYnNfcnVubmluZztcbiAgICAgICAgICAgaWYgIWR1bW15X2pvYnNfcnVubmluZyA9IHQubWF4X2NvbmN1cnJlbnRfam9ic1xuICAgICAgICAgICB0aGVuIEl2YXIuZmlsbCBhbGxfZHVtbXlfam9ic19ydW5uaW5nICgpO1xuICAgICAgICAgICBJdmFyLnJlYWQgYWxsX2R1bW15X2pvYnNfcnVubmluZykpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBjYXBhY2l0eV9hdmFpbGFibGUgdCA9XG4gIGlmIG51bV9qb2JzX3J1bm5pbmcgdCA8IG1heF9jb25jdXJyZW50X2pvYnMgdFxuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIChcbiAgICBtYXRjaCB0LmNhcGFjaXR5X2F2YWlsYWJsZSB3aXRoXG4gICAgfCBTb21lIGl2YXIgLT4gSXZhci5yZWFkIGl2YXJcbiAgICB8IE5vbmUgLT4gRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPiB0LmNhcGFjaXR5X2F2YWlsYWJsZSA8LSBTb21lIGl2YXIpKVxuOztcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UwXG5cbmxldCBjcmVhdGUgPSBTY2hlZHVsZXIxLmNyZWF0ZV90aW1lX3NvdXJjZVxubGV0IHdhbGxfY2xvY2sgPSBTY2hlZHVsZXIxLndhbGxfY2xvY2tcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXJcblxubGV0IGVucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9IGVucXVldWUgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKVxubGV0IGN5Y2xlX2NvdW50ICgpID0gY3ljbGVfY291bnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnRfbnMgKCkgPSBjeWNsZV9zdGFydCAodCAoKSlcbmxldCBjeWNsZV9zdGFydCAoKSA9IFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IChjeWNsZV9zdGFydF9ucyAoKSlcbmxldCBjeWNsZV90aW1lc19ucyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6Rm4uaWRcbmxldCBjeWNsZV90aW1lcyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6VGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdFxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgKCkgPSB0b3RhbF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxhc3RfY3ljbGVfdGltZSAoKSA9IGxhc3RfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsb25nX2N5Y2xlcyB+YXRfbGVhc3QgPSBsb25nX2N5Y2xlcyAodCAoKSkgfmF0X2xlYXN0XG5sZXQgZXZlbnRfcHJlY2lzaW9uX25zICgpID0gZXZlbnRfcHJlY2lzaW9uICh0ICgpKVxubGV0IGV2ZW50X3ByZWNpc2lvbiAoKSA9IFRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGV2ZW50X3ByZWNpc2lvbl9ucyAoKSlcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSBpID1cbiAgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKSBpXG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKCkgPSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSlcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgYm9vbCA9IHNldF9yZWNvcmRfYmFja3RyYWNlcyAodCAoKSkgYm9vbFxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICgpID0gZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKHQgKCkpXG5sZXQgeWllbGQgKCkgPSB5aWVsZCAodCAoKSlcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICgpID1cbiAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKHQgKCkpXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBsZXQgeWllbGRfZXZlcnkgPSBTdGFnZWQudW5zdGFnZSAoeWllbGRfZXZlcnkgfm4pIGluXG4gIGxldCB0ID0gdCAoKSBpblxuICBzdGFnZSAoZnVuICgpIC0+IHlpZWxkX2V2ZXJ5IHQpXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuICgpID0gbnVtX2pvYnNfcnVuICh0ICgpKVxubGV0IG51bV9wZW5kaW5nX2pvYnMgKCkgPSBudW1fcGVuZGluZ19qb2JzICh0ICgpKVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluID0gcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpblxuICBsZXQgbGFzdF9jeWNsZV9udW1fam9icyAoKSA9IGxhc3RfY3ljbGVfbnVtX2pvYnMgKHQgKCkpXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCAodCAoKSkgfmZcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9lbmQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9lbmQgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rICh0ICgpKSB+ZlxuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmZcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dDEgZXhlY3V0aW9uX2NvbnRleHQgfmYgeCA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dDEgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHhcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IFNjaGVkdWxlclxuIiwiKCoqIFNjaGVkdWxlIGpvYnMgdG8gcnVuIGF0IGEgdGltZSBpbiB0aGUgZnV0dXJlLlxuXG4gICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gdXNlcyBhIGhlYXAgb2YgZXZlbnRzLCBvbmUgZm9yIGVhY2ggam9iIHRoYXQgbmVlZHMgdG9cbiAgICBydW4gaW4gdGhlIGZ1dHVyZS4gIFRoZSBBc3luYyBzY2hlZHVsZXIgaXMgcmVzcG9uc2libGUgZm9yIHdha2luZyB1cCBhdCB0aGUgcmlnaHQgdGltZVxuICAgIHRvIHJ1biB0aGUgam9icy4gKilcblxub3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBUaW1lb3V0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENsb2NrID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gICgqKiBbcnVuX2F0IHRpbWUgZiBhXSBydW5zIFtmIGFdIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgW3RpbWVdLiAgSWYgW3RpbWVdIGlzIGluIHRoZVxuICAgICAgcGFzdCwgdGhlbiBbcnVuX2F0XSB3aWxsIGltbWVkaWF0ZWx5IHNjaGVkdWxlIGEgam9iIFt0XSB0aGF0IHdpbGwgcnVuIFtmIGFdLiAgSW4gbm9cbiAgICAgIHNpdHVhdGlvbiB3aWxsIFtydW5fYXRdIGFjdHVhbGx5IGNhbGwgW2ZdIGl0c2VsZi4gIFRoZSBjYWxsIHRvIFtmXSB3aWxsIGFsd2F5cyBiZSBpblxuICAgICAgYW5vdGhlciBqb2IuICopXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW3J1bl9hZnRlcl0gaXMgbGlrZSBbcnVuX2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhblxuICAgICAgYWJzb2x1dGUgdGltZS4gKilcbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFthdCB0aW1lXSByZXR1cm5zIGEgZGVmZXJyZWQgW2RdIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhcyBzb29uIGFzIHBvc3NpYmxlXG4gICAgICBhZnRlciBbdGltZV0uICopXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2FmdGVyXSBpcyBsaWtlIFthdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW4gYWJzb2x1dGVcbiAgICAgIHRpbWUuICopXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbd2l0aF90aW1lb3V0IHNwYW4gZF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhZnRlciBlaXRoZXJcbiAgICAgIFtzcGFuXSBlbGFwc2VzIG9yIFtkXSBpcyBkZXRlcm1pbmVkLCByZXR1cm5pbmcgZWl0aGVyIFtgVGltZW91dF0gb3IgW2BSZXN1bHRdXG4gICAgICBkZXBlbmRpbmcgb24gd2hpY2ggb25lIHN1Y2NlZWRlZCBmaXJzdC4gIEF0IHRoZSB0aW1lIHRoZSByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLCBib3RoIHRoaW5ncyBtYXkgaGF2ZSBoYXBwZW5lZCwgaW4gd2hpY2ggY2FzZSBbYFJlc3VsdF0gaXMgZ2l2ZW5cbiAgICAgIHByZWZlcmVuY2UuICopXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG5cbiAgKCoqIEV2ZW50cyBwcm92aWRlIHZhcmlhbnRzIG9mIFtydW5fYXRdIGFuZCBbcnVuX2FmdGVyXSB3aXRoIHRoZSBhYmlsaXR5IHRvIGFib3J0IG9yXG4gICAgICByZXNjaGVkdWxlIGFuIGV2ZW50IHRoYXQgaGFzbid0IHlldCBoYXBwZW5lZC4gIE9uY2UgYW4gZXZlbnQgaGFwcGVucyBvciBpcyBhYm9ydGVkLFxuICAgICAgQXN5bmMgZG9lc24ndCB1c2UgYW55IHNwYWNlIGZvciB0cmFja2luZyBpdC4gKilcbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgKCoqIElmIFtzdGF0dXNdIHJldHVybnMgW1NjaGVkdWxlZF9hdCB0aW1lXSwgaXQgaXMgcG9zc2libGUgdGhhdCBbdGltZSA8IFRpbWUubm93ICgpXVxuICAgICAgICBpZiBBc3luYydzIHNjaGVkdWxlciBoYXNuJ3QgeWV0IGdvdHRlbiB0aGUgY2hhbmNlIHRvIHVwZGF0ZSBpdHMgY2xvY2ssIGUuZy4sIGR1ZVxuICAgICAgICB0byB1c2VyIGpvYnMgcnVubmluZy4gKilcbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuXG4gICAgKCoqIExldCBbdCA9IHJ1bl9hdCB0aW1lIGYgel0uICBBdCBbdGltZV0sIHRoaXMgcnVucyBbZiB6XSBhbmQgdHJhbnNpdGlvbnMgW3N0YXR1cyB0XVxuICAgICAgICB0byBbSGFwcGVuZWQgaF0sIHdoZXJlIFtoXSBpcyByZXN1bHQgb2YgW2Ygel0uXG5cbiAgICAgICAgTW9yZSBwcmVjaXNlbHksIGF0IFt0aW1lXSwgcHJvdmlkZWQgW2Fib3J0IHQgYV0gaGFzIG5vdCBwcmV2aW91c2x5IGJlZW4gY2FsbGVkLFxuICAgICAgICB0aGlzIHdpbGwgY2FsbCBbZiB6XSwgd2l0aCB0aGUgZ3VhcmFudGVlIHRoYXQgW3N0YXR1cyB0ID0gU2NoZWR1bGVkX2F0IHRpbWVdLiAgSWZcbiAgICAgICAgW2Ygel0gcmV0dXJucyBbaF0gYW5kIGRpZCBub3QgY2FsbCBbYWJvcnQgdCBhXSwgdGhlbiBbc3RhdHVzIHRdIGJlY29tZXMgW0hhcHBlbmVkXG4gICAgICAgIGhdLiAgSWYgW2Ygel0gY2FsbHMgW2Fib3J0IHQgYV0sIHRoZW4gdGhlIHJlc3VsdCBvZiBbZl0gaXMgaWdub3JlZCwgYW5kIFtzdGF0dXMgdF1cbiAgICAgICAgaXMgW0Fib3J0ZWQgYV0uXG5cbiAgICAgICAgSWYgW2Ygel0gcmFpc2VzLCB0aGVuIFtzdGF0dXMgdF0gZG9lcyBub3QgdHJhbnNpdGlvbiBhbmQgcmVtYWlucyBbU2NoZWR1bGVkX2F0XG4gICAgICAgIHRpbWVdLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtydW5fYXRdIHdhc1xuICAgICAgICBjYWxsZWQuICopXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICAoKiogW2Fib3J0IHRdIGNoYW5nZXMgW3N0YXR1cyB0XSB0byBbQWJvcnRlZF0gYW5kIHJldHVybnMgW09rXSwgdW5sZXNzIFt0XVxuICAgICAgICBwcmV2aW91c2x5IGhhcHBlbmVkIG9yIHdhcyBwcmV2aW91c2x5IGFib3J0ZWQuICopXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuXG4gICAgKCoqIFthYm9ydF9leG4gdCBhXSByZXR1cm5zIFt1bml0XSBpZiBbYWJvcnQgdCBhID0gYE9rXSwgYW5kIG90aGVyd2lzZSByYWlzZXMuICopXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgKCoqIFthYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSldLiAqKVxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICAoKiogW3Jlc2NoZWR1bGVfYXQgdF0gYW5kIFtyZXNjaGVkdWxlX2FmdGVyIHRdIGNoYW5nZSB0aGUgdGltZSB0aGF0IFt0XSB3aWxsIGZpcmUsIGlmXG4gICAgICAgIHBvc3NpYmxlLCBhbmQgaWYgbm90LCBnaXZlIGEgcmVhc29uIHdoeS4gIExpa2UgW3J1bl9hdF0sIGlmIHRoZSByZXF1ZXN0ZWQgdGltZSBpc1xuICAgICAgICBpbiB0aGUgcGFzdCwgdGhlIGV2ZW50IHdpbGwgYmUgc2NoZWR1bGVkIHRvIHJ1biBpbW1lZGlhdGVseS4gIElmIFtyZXNjaGVkdWxlX2F0IHRcbiAgICAgICAgdGltZSA9IE9rXSwgdGhlbiBzdWJzZXF1ZW50bHkgW3NjaGVkdWxlZF9hdCB0ID0gdGltZV0uICAqKVxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgICgqKiBbYXQgdGltZV0gICAgaXMgW3J1bl9hdCAgICB0aW1lIGlnbm9yZSAoKV0uXG4gICAgICAgIFthZnRlciB0aW1lXSBpcyBbcnVuX2FmdGVyIHRpbWUgaWdub3JlICgpXS5cblxuICAgICAgICBZb3Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIHRoZSBbcnVuXypdIGZ1bmN0aW9ucywgd2hpY2ggYWxsb3cgeW91IHRvXG4gICAgICAgIHN5bmNocm9ub3VzbHkgdXBkYXRlIHN0YXRlIHZpYSBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gd2hlbiB0aGUgZXZlbnRcbiAgICAgICAgdHJhbnNpdGlvbnMgdG8gW0hhcHBlbmVkXS4gIFRoYXQgaXMsIHRoZXJlIGlzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW46XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IHJ1bl9hdCB0aW1lIGYgKCkgXX1cblxuICAgICAgICBhbmQ6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IGF0IHRpbWUgaW5cbiAgICAgICAgICBmaXJlZCB0XG4gICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBmICgpXG4gICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpIF19XG5cbiAgICAgICAgV2l0aCBbcnVuX2F0XSwgaWYgW3N0YXR1cyB0ID0gSGFwcGVuZWRdLCBvbmUga25vd3MgdGhhdCBbZl0gaGFzIHJ1bi4gIFdpdGggW2F0XVxuICAgICAgICBhbmQgW2ZpcmVkXSwgb25lIGRvZXMgbm90IGtub3cgd2hldGhlciBbZl0gaGFzIHlldCBydW47IGl0IG1heSBzdGlsbCBiZSBzY2hlZHVsZWRcbiAgICAgICAgdG8gcnVuLiAgVGh1cywgd2l0aCBbYXRdIGFuZCBbZmlyZWRdLCBpdCBpcyBlYXN5IHRvIGludHJvZHVjZSBhIHJhY2UuICBGb3JcbiAgICAgICAgZXhhbXBsZSwgY29uc2lkZXIgdGhlc2UgdHdvIGNvZGUgc25pcHBldHM6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LmFmdGVyIChzZWMgMi4pIGluXG4gICAgICAgICAgdXBvbiAoRXZlbnQuZmlyZWQgdCkgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKClcbiAgICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiVGltZXIgZmlyZWRcIik7XG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LnJ1bl9hZnRlciAoc2VjIDIuKSBwcmludGYgXCJUaW1lciBmaXJlZFwiIGluXG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAgSW4gYm90aCBzbmlwcGV0cywgaWYgW0V2ZW50LmFib3J0XSByZXR1cm5zIFtPa10sIFwiVGltZXIgZmlyZWRcIiBpcyBuZXZlciBwcmludGVkLlxuICAgICAgICBIb3dldmVyLCB0aGUgZmlyc3Qgc25pcHBldCBtaWdodCBwcmludCBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIgYW5kIHRoZW5cbiAgICAgICAgXCJUaW1lciBmaXJlZFwiLiAgVGhpcyBjb25mdXNlZCBvcmRlcmluZyBjYW5ub3QgaGFwcGVuIHdpdGggW0V2ZW50LnJ1bl9hZnRlcl0uICopXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0XG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICBlbmRcblxuICAoKiogW2F0X3ZhcnlpbmdfaW50ZXJ2YWxzIGYgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgbmV4dCBlbGVtZW50IGJlY29tZXNcbiAgICAgIGRldGVybWluZWQgYnkgY2FsbGluZyBbZiAoKV0gYW5kIHdhaXRpbmcgZm9yIHRoYXQgYW1vdW50IG9mIHRpbWUsIGFuZCB0aGVuIGxvb3BpbmdcbiAgICAgIHRvIGRldGVybWluZSBzdWJzZXF1ZW50IGVsZW1lbnRzLiAgVGhlIHN0cmVhbSB3aWxsIGVuZCBhZnRlciBbc3RvcF0gYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbYXRfaW50ZXJ2YWxzIGludGVydmFsID9zdGFydCA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBlbGVtZW50cyB3aWxsIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZCBhdCBub25uZWdhdGl2ZSBpbnRlZ2VyIG11bHRpcGxlcyBvZiBbaW50ZXJ2YWxdIGFmdGVyIHRoZSBbc3RhcnRdIHRpbWUsXG4gICAgICB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkOlxuXG4gICAgICB7dlxuICAgICAgICBzdGFydCArIDAgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDEgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDIgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDMgKiBpbnRlcnZhbFxuICAgICAgICAuLi5cbiAgICAgIHZ9XG5cbiAgICAgIE5vdGUgdGhhdCBvbmx5IGVsZW1lbnRzIHRoYXQgYXJlIHN0cmljdGx5IGluIHRoZSBmdXR1cmUgZXZlciBiZWNvbWUgZGV0ZXJtaW5lZC5cbiAgICAgIEluIHBhcnRpY3VsYXIsIGlmIFtzdGFydF0gaXMgbm90IGluIHRoZSBmdXR1cmUsIG9yIFtzdGFydF0gaXMgbm90IHByb3ZpZGVkLFxuICAgICAgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGVsZW1lbnQgYmVmb3JlIHRoZSBbaW50ZXJ2YWxdIGhhcyBwYXNzZWQuXG5cbiAgICAgIElmIHRoZSBpbnRlcnZhbCBpcyB0b28gc21hbGwgb3IgdGhlIENQVSBpcyB0b28gbG9hZGVkLCBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNraXBcbiAgICAgIHVudGlsIHRoZSBuZXh0IHVwY29taW5nIG11bHRpcGxlIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgW3N0YXJ0XS4gKilcbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmICgpXSBldmVyeSBbc3Bhbl0gYW1vdW50IG9mIHRpbWUgc3RhcnRpbmcgd2hlblxuICAgICAgW3N0YXJ0XSBiZWNvbWVzIGRldGVybWluZWQgYW5kIHN0b3BwaW5nIHdoZW4gW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFtldmVyeSddXG4gICAgICB3YWl0cyB1bnRpbCB0aGUgb3V0Y29tZSBvZiBbZiAoKV0gYmVjb21lcyBkZXRlcm1pbmVkIGJlZm9yZSB3YWl0aW5nIGZvciB0aGUgbmV4dFxuICAgICAgW3NwYW5dLlxuXG4gICAgICBJdCBpcyBndWFyYW50ZWVkIHRoYXQgaWYgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZCwgZXZlbiBkdXJpbmcgZXZhbHVhdGlvbiBvZiBbZl0sXG4gICAgICB0aGVuIFtmXSB3aWxsIG5vdCBiZSBjYWxsZWQgYWdhaW4gYnkgYSBzdWJzZXF1ZW50IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC5cblxuICAgICAgSXQgaXMgYW4gZXJyb3IgZm9yIFtzcGFuXSB0byBiZSBub25wb3NpdGl2ZS5cblxuICAgICAgW2NvbnRpbnVlX29uX2Vycm9yXSBjb250cm9scyB3aGF0IHNob3VsZCBoYXBwZW4gaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6ZmFsc2VdLCBpdGVyYXRpb24gb25seSBjb250aW51ZXMgaWYgW2ZdIHN1Y2Nlc3NmdWxseVxuICAgICAgcmV0dXJucyBhIGRlZmVycmVkIGFuZCB0aGF0IGRlZmVycmVkIGlzIGRldGVybWluZWQuXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0sIGl0ZXJhdGlvbiBhbHNvIGNvbnRpbnVlcyBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIElmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uIGFzeW5jaHJvbm91c2x5LCB0aGlzIG1heSBjYXVzZSB1cyB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAgICBuZXh0IGl0ZXJhdGlvbiB3aGlsZSB0aGUgcHJldmlvdXMgY2FsbCB0byBbZl0gaXMgc3RpbGwgcnVubmluZy5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbZXZlcnknXSB3YXNcbiAgICAgIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uXG5cbiAgICAgIElmIFtmaW5pc2hlZF0gaXMgc3VwcGxpZWQsIFtldmVyeSddIHdpbGwgZmlsbCBpdCBvbmNlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZDogW3N0YXJ0XSwgW3N0b3BdLCBhbmQgdGhlIG91dGNvbWUgb2YgdGhlIGZpbmFsIGNhbGwgdG8gW2ZdLiAqKVxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXZlcnkgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gaXNcbiAgICAgIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpXS4gKilcbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YoKV0gYXQgaW5jcmVtZW50cyBvZiBbc3RhcnQgKyBpICpcbiAgICAgIHNwYW5dIGZvciBub25uZWdhdGl2ZSBpbnRlZ2VycyBbaV0sIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuXG4gICAgICBJZiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBub3QgZGV0ZXJtaW5lZCBmYXN0IGVub3VnaCB0aGVuIHRoZSBuZXh0IGludGVydmFsKHMpXG4gICAgICBhcmUgc2tpcHBlZCBzbyB0aGF0IHRoZXJlIGFyZSBuZXZlciBtdWx0aXBsZSBjb25jdXJyZW50IGludm9jYXRpb25zIG9mIFtmXSBpblxuICAgICAgZmxpZ2h0LlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgIFtydW5fYXRfaW50ZXJ2YWxzJ10gd2FzIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZl0gaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAge1tcbiAgICAgICAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpIF19ICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZHVyYXRpb25fb2YgZl0gaW52b2tlcyBbZiAoKV0gYW5kIG1lYXN1cmVzIGhvdyBsb25nIGl0IHRha2VzIGZyb20gdGhlIGludm9jYXRpb25cbiAgICAgIHRvIGFmdGVyIHRoZSBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIG1lYXN1cmVtZW50IGlzIG5vdCBleGFjdDsgYmVjYXVzZSBpdCBpbnZvbHZlcyBhbiBhZGRpdGlvbmFsIG1hcCBvbiB0aGVcbiAgICAgIGRlZmVycmVkLCB0aGUgdGltaW5nIGFsc28gaW5jbHVkZXMgdGhlIGR1cmF0aW9uIG9mIGpvYnMgaW4gdGhlIGpvYiBxdWV1ZSB3aGVuIFtmICgpXVxuICAgICAgaXMgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbmVuZFxuXG4oKiogW0Nsb2NrX2RlcHJlY2F0ZWRdIGlzIHVzZWQgaW4gW1JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VdIHRvIGNyZWF0ZSBhIGNsb2NrXG4gICAgbW9kdWxlIGluIHdoaWNoIGFsbCBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuICopXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIEludmFyaWFudC50IC0+ICdiIEludmFyaWFudC50IC0+ICgnYSwgJ2IpIHQgSW52YXJpYW50LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgc2NoZWR1bGVkX2F0IDogKF8sIF8pIHQgLT4gVGltZS50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdmFsIHN0YXR1cyA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgU3RhdHVzLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2F0IDogVGltZS50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LkFib3J0X3Jlc3VsdFxuXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9leG4gOiAoJ2EsICdoKSB0IC0+ICdhIC0+IHVuaXRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWJvcnRfaWZfcG9zc2libGUgOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBGaXJlZCA9IFRpbWVfc291cmNlLkV2ZW50LkZpcmVkXG5cbiAgICB2YWwgZmlyZWQgOiAoJ2EsICdoKSB0IC0+ICgnYSwgJ2gpIEZpcmVkLnQgRGVmZXJyZWQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hdCA6ICgnYSwgJ2gpIHQgLT4gVGltZS50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcmVzY2hlZHVsZV9hZnRlciA6ICgnYSwgJ2gpIHQgLT4gVGltZS5TcGFuLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhdCA6IFRpbWUudCAtPiAoXywgdW5pdCkgdCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cbiAgZW5kXG5cbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeSdcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiA/ZmluaXNoZWQ6dW5pdCBJdmFyLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgZXZlcnlcbiAgICA6ICA/c3RhcnQ6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtyZXR1cm4gKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIHJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBkdXJhdGlvbl9vZiA6ICh1bml0IC0+ICdhIERlZmVycmVkLnQpIC0+ICgnYSAqIFRpbWUuU3Bhbi50KSBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cbmVuZFxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItM1wiXVxuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2spIDogQ2xvY2tfZGVwcmVjYXRlZCA9IENcblxuICBtb2R1bGUgXyAoQyA6IENsb2NrX2RlcHJlY2F0ZWQpIDogQ2xvY2sgPSBDXG5lbmQgOlxuc2lnIGVuZClcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBDbG9jayA9IENsb2NrX2ludGYuQ2xvY2tcbm1vZHVsZSB0eXBlIENsb2NrX2RlcHJlY2F0ZWQgPSBDbG9ja19pbnRmLkNsb2NrX2RlcHJlY2F0ZWRcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBDbG9ja19pbnRmLk9yX3RpbWVvdXRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB0aW1lX3NvdXJjZSAoKSA9IChTY2hlZHVsZXIudCAoKSkudGltZV9zb3VyY2UgfD4gVGltZV9zb3VyY2Uub2Zfc3luY2hyb25vdXNcbmxldCBhZnRlciBzcGFuID0gVGltZV9zb3VyY2UuYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG5sZXQgYXQgdGltZSA9IFRpbWVfc291cmNlLmF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuXG5sZXQgYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgY29tcHV0ZV9zcGFuID1cbiAgVGltZV9zb3VyY2UuYXRfdmFyeWluZ19pbnRlcnZhbHMgP3N0b3AgKHRpbWVfc291cmNlICgpKSBjb21wdXRlX3NwYW5cbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wIGludGVydmFsID1cbiAgVGltZV9zb3VyY2UuYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGludGVydmFsXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHNwYW4gZiA9XG4gIFRpbWVfc291cmNlLmV2ZXJ5JyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCAodGltZV9zb3VyY2UgKCkpIHNwYW4gZlxuOztcblxubGV0IGV2ZXJ5ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3Igc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZlxuOztcblxubGV0IHJ1bl9hZnRlciBzcGFuIGYgYSA9IFRpbWVfc291cmNlLnJ1bl9hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW4gZiBhXG5sZXQgcnVuX2F0IHRpbWUgZiBhID0gVGltZV9zb3VyY2UucnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIGFcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWwgZlxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgaW50ZXJ2YWwgZiA9XG4gIFRpbWVfc291cmNlLnJ1bl9hdF9pbnRlcnZhbHMnXG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICAodGltZV9zb3VyY2UgKCkpXG4gICAgaW50ZXJ2YWxcbiAgICBmXG47O1xuXG5sZXQgd2l0aF90aW1lb3V0IHNwYW4gZCA9IFRpbWVfc291cmNlLndpdGhfdGltZW91dCAodGltZV9zb3VyY2UgKCkpIHNwYW4gZFxubGV0IGR1cmF0aW9uX29mIGYgPSBUaW1lX3NvdXJjZS5kdXJhdGlvbl9vZiAodGltZV9zb3VyY2UgKCkpIGZcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9zb3VyY2UuRXZlbnRcblxuICBsZXQgYWZ0ZXIgc3BhbiA9IGFmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhblxuICBsZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gcnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbiAgbGV0IGF0IHRpbWUgPSBhdCAodGltZV9zb3VyY2UgKCkpIHRpbWVcbiAgbGV0IHJ1bl9hdCB0aW1lIGYgeiA9IHJ1bl9hdCAodGltZV9zb3VyY2UgKCkpIHRpbWUgZiB6XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCBpIGIgPVxuICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0XG4gICAgICB0aGVuIEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgZWxzZSBmIGkgYiB0LihpKSA+Pj4gZnVuIGIgLT4gbG9vcCAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgMCBpbml0KVxuOztcblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxubGV0IHNlcW1hcGkgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPSBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+IGYgaSBhID4+fCBmdW4gYiAtPiBiIDo6IGJzKSBpblxuICBBcnJheS5vZl9saXN0IChDb3JlLkxpc3QucmV2IGJzKVxuOztcblxubGV0IGFsbCBkcyA9IHNlcW1hcGkgZHMgfmY6KGZ1biBfIHggLT4geClcbmxldCBhbGxfdW5pdCBkcyA9IERlZmVycmVkLmlnbm9yZV9tIChmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKSlcblxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGwgKEFycmF5Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG47O1xuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBsZXQlbWFwIGJvb2xzID0gbWFwaSB0IH5ob3cgfmYgaW5cbiAgQXJyYXkub2ZfbGlzdF9yZXZcbiAgICAoQXJyYXkuZm9sZDJfZXhuIHQgYm9vbHMgfmluaXQ6W10gfmY6KGZ1biBhYyB4IGIgLT4gaWYgYiB0aGVuIHggOjogYWMgZWxzZSBhYykpXG47O1xuXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IEFycmF5LmZpbHRlcl9vcHRcblxubGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgdCA9IG1hcGkgdCB+aG93IH5mIGluXG4gIEFycmF5LmNvbmNhdCAoQXJyYXkudG9fbGlzdCB0KVxuOztcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0XG4gICAgdGhlbiByZXR1cm4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2glYmluZCBmIGkgdC4oaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGF1eCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBhdXggMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwIH5ob3cgdCB+ZiA9IG1hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwIH5ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoQXJyYXkuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgaSBiID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgeCA6OiB4cyAtPiBmIGkgYiB4ID4+PiBmdW4gYiAtPiBsb29wIHhzIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCB0IDAgaW5pdClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbmxldCBzZXFtYXBpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICBiIDo6IGJzKVxuICA+PnwgTGlzdC5yZXZcbjs7XG5cbmxldCBhbGwgZHMgPSBzZXFtYXBpIGRzIH5mOihmdW4gXyB4IC0+IHgpXG5sZXQgYWxsX3VuaXQgZHMgPSBEZWZlcnJlZC5pZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkpXG5cbmxldCBpdGVyaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBQYXJhbGxlbCBhcyBob3cgLT5cbiAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIGpvYl9jb3VudCAtPlxuICAgIGxldCByZWMgZ2VuX2NvbXB1dGF0aW9uIGlkeCA9IGZ1bmN0aW9uXG4gICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgVGhyb3R0bGVkLm9mX3RodW5rIChmdW4gKCkgLT5cbiAgICAgICAgICBUaHJvdHRsZWQuYm90aF91bml0XG4gICAgICAgICAgICAoVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgaWR4IHgpKVxuICAgICAgICAgICAgKGdlbl9jb21wdXRhdGlvbiAoaWR4ICsgMSkgeHMpKVxuICAgICAgfCBbXSAtPiBUaHJvdHRsZWQucmV0dXJuICgpXG4gICAgaW5cbiAgICBUaHJvdHRsZWQucnVuIChnZW5fY29tcHV0YXRpb24gMCB0KSB+bWF4X2NvbmN1cnJlbnRfam9iczpqb2JfY291bnRcbiAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuOztcblxubGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgUGFyYWxsZWwgYXMgaG93IC0+XG4gICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgam9iX2NvdW50IC0+XG4gICAgbGV0IHJlYyBnZW5fY29tcHV0YXRpb24gaWR4ID0gZnVuY3Rpb25cbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICBUaHJvdHRsZWQub2ZfdGh1bmsgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocm90dGxlZC5tYXAyXG4gICAgICAgICAgICAoVGhyb3R0bGVkLmpvYiAoZnVuICgpIC0+IGYgaWR4IHgpKVxuICAgICAgICAgICAgKGdlbl9jb21wdXRhdGlvbiAoaWR4ICsgMSkgeHMpXG4gICAgICAgICAgICB+ZjooZnVuIHkgeXMgLT4geSA6OiB5cykpXG4gICAgICB8IFtdIC0+IFRocm90dGxlZC5yZXR1cm4gW11cbiAgICBpblxuICAgIFRocm90dGxlZC5ydW4gKGdlbl9jb21wdXRhdGlvbiAwIHQpIH5tYXhfY29uY3VycmVudF9qb2JzOmpvYl9jb3VudFxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCB+aG93IH5mIGluXG4gIExpc3QucmV2IChMaXN0LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBmaW5kX21hcGkgdCB+ZiAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBmaWx0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBpbml0IH5ob3cgbiB+ZiA9IG1hcCB+aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxubW9kdWxlIExpc3QgPSBEZWZlcnJlZF9saXN0XG5tb2R1bGUgVGhyb3R0bGVkX21hcCA9IE1hcC5NYWtlX2FwcGxpY2F0aXZlX3RyYXZlcnNhbHMgKFRocm90dGxlZClcblxudHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNYXAudFxuXG5sZXQgY2hhbmdlIHQgayB+ZiA9XG4gIGxldCVtYXAgb3B0ID0gZiAoTWFwLmZpbmQgdCBrKSBpblxuICBNYXAuY2hhbmdlIHQgayB+ZjooZnVuIF8gLT4gb3B0KVxuOztcblxubGV0IHVwZGF0ZSB0IGsgfmYgPVxuICBsZXQlbWFwIGRhdGEgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5zZXQgdCB+a2V5OmsgfmRhdGFcbjs7XG5cbmxldCBpdGVyX2tleXMgfmhvdyB0IH5mID0gTGlzdC5pdGVyIH5ob3cgKE1hcC5rZXlzIHQpIH5mXG5sZXQgaXRlciB+aG93IHQgfmYgPSBMaXN0Lml0ZXIgfmhvdyAoTWFwLmRhdGEgdCkgfmZcbmxldCBpdGVyaSB+aG93IHQgfmYgPSBMaXN0Lml0ZXIgfmhvdyAoTWFwLnRvX2FsaXN0IHQpIH5mOihmdW4gKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZF9yaWdodCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIGxldCBhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciA9XG4gICAgTWFwLmZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgYWxpc3QgLT4gKGtleSwgZGF0YSkgOjogYWxpc3QpXG4gIGluXG4gIExpc3QuZm9sZCBhbGlzdF9pbl9kZWNyZWFzaW5nX2tleV9vcmRlciB+aW5pdCB+ZjooZnVuIGFjIChrZXksIGRhdGEpIC0+IGYgfmtleSB+ZGF0YSBhYylcbjs7XG5cbm1vZHVsZSBKb2IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9XG4gICAgeyBrZXkgOiAnYVxuICAgIDsgZGF0YSA6ICdiXG4gICAgOyBtdXRhYmxlIHJlc3VsdCA6ICdjIG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuZW5kXG5cbmxldCBmaWx0ZXJfbWFwaV9zZXF1ZW50aWFsIHQgfmYgPVxuICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIHQgaW5cbiAgbGV0IHNlcXVlbmNlID0gTWFwLnRvX3NlcXVlbmNlIH5vcmRlcjpgSW5jcmVhc2luZ19rZXkgdCBpblxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXF1ZW5jZVxuICAgICAgfmluaXQ6QmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcuZW1wdHlcbiAgICAgIH5mOihmdW4gcyAoa2V5LCBkYXRhKSB+ayAtPlxuICAgICAgICB1cG9uIChmIH5rZXkgfmRhdGEpIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBrIHNcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgbGV0IHMgPVxuICAgICAgICAgICAgICBCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5hZGRfZXhuXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgayBzKSlcbiAgICAgIH5maW5pc2g6KGZ1biB4IC0+XG4gICAgICAgIEl2YXIuZmlsbFxuICAgICAgICAgIGl2YXJcbiAgICAgICAgICAoTWFwLlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZVxuICAgICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICAgICAgICAgKEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLnRvX3RyZWUgeCkpKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaV9tYXhfY29uY3VycmVudCB0IH5mIH5tYXhfY29uY3VycmVudF9qb2JzID1cbiAgbGV0IGNvbXB1dGF0aW9uID1cbiAgICBUaHJvdHRsZWRfbWFwLmZpbHRlcl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICBUaHJvdHRsZWQuam9iIChmdW4gKCkgLT4gZiB+a2V5IH5kYXRhKSlcbiAgaW5cbiAgVGhyb3R0bGVkLnJ1biBjb21wdXRhdGlvbiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuOztcblxubGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgLT4gZmlsdGVyX21hcGlfc2VxdWVudGlhbCB0IH5mXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGZpbHRlcl9tYXBpX21heF9jb25jdXJyZW50IHQgfmYgfm1heF9jb25jdXJyZW50X2pvYnNcbiAgfCBgUGFyYWxsZWwgLT5cbiAgICBsZXQgam9icyA9IHJlZiBbXSBpblxuICAgIGxldCBqb2JfbWFwID1cbiAgICAgIE1hcC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIGxldCBqb2IgPSB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IE5vbmUgfSBpblxuICAgICAgICBqb2JzIDo9IGpvYiA6OiAham9icztcbiAgICAgICAgam9iKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9XG4gICAgICBMaXN0Lml0ZXIgfmhvdyAoQmFzZS5MaXN0LnJldiAham9icykgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgeyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBfIH0gYXMgam9iIC0+XG4gICAgICAgICAgbGV0JW1hcCB4ID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgam9iLnJlc3VsdCA8LSB4KVxuICAgIGluXG4gICAgTWFwLmZpbHRlcl9tYXAgam9iX21hcCB+ZjpKb2IucmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyX2tleXMgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYga2V5IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlcmkgfmhvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IG1hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9icyA9XG4gIGxldCBjb21wdXRhdGlvbiA9XG4gICAgVGhyb3R0bGVkX21hcC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IFRocm90dGxlZC5qb2IgKGZ1biAoKSAtPiBmIH5rZXkgfmRhdGEpKVxuICBpblxuICBUaHJvdHRsZWQucnVuIGNvbXB1dGF0aW9uIH5tYXhfY29uY3VycmVudF9qb2JzXG47O1xuXG5sZXQgbWFwaSB+aG93IHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIHwgYFBhcmFsbGVsIC0+XG4gICAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0JW1hcCB6ID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICBTb21lIHopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIG1hcGlfbWF4X2NvbmN1cnJlbnQgdCB+ZiB+bWF4X2NvbmN1cnJlbnRfam9ic1xuOztcblxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBtZXJnZSB+aG93IHQxIHQyIH5mID1cbiAgZmlsdGVyX21hcFxuICAgIH5ob3dcbiAgICAoTWFwLm1lcmdlIHQxIHQyIH5mOihmdW4gfmtleSB6IC0+IFNvbWUgKGZ1biAoKSAtPiBmIH5rZXkgeikpKVxuICAgIH5mOihmdW4gdGh1bmsgLT4gdGh1bmsgKCkpXG47O1xuXG5sZXQgYWxsIHQgPSBtYXAgdCB+ZjpGbi5pZCB+aG93OmBTZXF1ZW50aWFsXG4iLCJvcGVuISBDb3JlXG5vcGVuISBEZWZlcnJlZF9zdGRcbmluY2x1ZGUgRGVmZXJyZWRfbWVtb19pbnRmXG5cbm1vZHVsZSBNYWtlIChNIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgPSAnYSBEZWZlcnJlZDEudCkgOlxuICBTIHdpdGggdHlwZSAnYSBkZWZlcnJlZCA6PSAnYSBNLnQgPSBzdHJ1Y3RcbiAgb3BlbiEgTVxuXG4gIGxldCByZXJhaXNlID0gZnVuY3Rpb25cbiAgICB8IE9rIHggLT4geFxuICAgIHwgRXJyb3IgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biBcImNhdWdodCBleGNlcHRpb24gaW4gbWVtb2l6ZWQgZnVuY3Rpb25cIlxuICA7O1xuXG4gIGxldCBnZW5lcmFsJyAodHlwZSBhKSB+cnVuIChoYXNoYWJsZSA6IChtb2R1bGUgSGFzaGFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGEpKSBmID1cbiAgICBsZXQgbW9kdWxlIEhhc2hhYmxlID0gKHZhbCBoYXNoYWJsZSkgaW5cbiAgICBsZXQgZiA9XG4gICAgICBNZW1vLmdlbmVyYWwgfmhhc2hhYmxlOkhhc2hhYmxlLmhhc2hhYmxlIChmdW4gYSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgIH5ydW5cbiAgICAgICAgICAoZnVuICgpIC0+IGYgYSkpXG4gICAgaW5cbiAgICBTdGFnZWQuc3RhZ2UgKGZ1biBhIC0+IGYgYSA+PnwgcmVyYWlzZSlcbiAgOztcblxuICBsZXQgZ2VuZXJhbCBoYXNoYWJsZSBmID0gZ2VuZXJhbCcgfnJ1bjpgTm93IGhhc2hhYmxlIGZcblxuICBsZXQgcmVjdXJzaXZlICh0eXBlIGEpIChoYXNoYWJsZSA6IChtb2R1bGUgSGFzaGFibGUuU19wbGFpbiB3aXRoIHR5cGUgdCA9IGEpKSBmX29uZXN0ZXAgPVxuICAgIGxldCByZWMgbWVtb2l6ZWQgPVxuICAgICAgbGF6eVxuICAgICAgICAoZ2VuZXJhbCdcbiAgICAgICAgICAgfnJ1bjpgU2NoZWR1bGVcbiAgICAgICAgICAgaGFzaGFibGVcbiAgICAgICAgICAgKGZfb25lc3RlcCAoZnVuIHggLT4gKHVuc3RhZ2UgKGZvcmNlIG1lbW9pemVkKSkgeCkpKVxuICAgIGluXG4gICAgZm9yY2UgbWVtb2l6ZWRcbiAgOztcblxuICBsZXQgdW5pdCBmID1cbiAgICBsZXQgZiA9XG4gICAgICBNZW1vLnVuaXQgKGZ1biAoKSAtPlxuICAgICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgIGYpXG4gICAgaW5cbiAgICBTdGFnZWQuc3RhZ2UgKGZ1biAoKSAtPiBmICgpID4+fCByZXJhaXNlKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgTWFrZSAoRGVmZXJyZWQxKVxuIiwib3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgT3B0aW9uLnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChTb21lIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBTb21lIGEgLT4gZiBhXG4gICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5yZXR1cm4gTm9uZSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IE9wdGlvbi5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnZXJyb3IpIHQgPSAoJ2EsICdlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIGxldCVtYXAgdDEgPSB0MVxuICBhbmQgdDIgPSB0MiBpblxuICBSZXN1bHQuY29tYmluZSB0MSB0MiB+b2sgfmVyclxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKE9rIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBPayBhIC0+IGYgYVxuICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gRGVmZXJyZWQucmV0dXJuIGVycm9yKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBmYWlsIHggPSBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIHgpXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgbWFwX2Vycm9yIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcF9lcnJvciByIH5mKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID0gTW9uaXRvci50cnlfd2l0aFxuZW5kXG5cbigqIENvcGllZCB0byBbZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3Iub2ZfZXhuID9iYWNrdHJhY2UgZXhuKVxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSB0ID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLm9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSlcbmxldCBlcnJvciBtc2cgdiBzZXhwX29mID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvciBtc2cgdiBzZXhwX29mKVxubGV0IGVycm9yX3Mgc2V4cCA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3JfcyBzZXhwKVxubGV0IGVycm9yX3N0cmluZyBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyBtc2cpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IGtzcHJpbnRmIGVycm9yX3N0cmluZyBmb3JtYXRcbmxldCB0YWcgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZyB+dGFnKVxubGV0IHRhZ19zIHQgfnRhZyA9IERlZmVycmVkLm1hcCB0IH5mOihPcl9lcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zX2xhenkgfnRhZylcblxubGV0IHRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRGVmZXJyZWQubWFwIHQgfmY6KGZ1biB0IC0+IE9yX2Vycm9yLnRhZ19hcmcgdCBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IHVuaW1wbGVtZW50ZWQgbXNnID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci51bmltcGxlbWVudGVkIG1zZylcbmxldCBjb21iaW5lX2Vycm9ycyBsID0gRGVmZXJyZWQubWFwIChEZWZlcnJlZC5hbGwgbCkgfmY6T3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbmxldCBjb21iaW5lX2Vycm9yc191bml0IGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG5cbmxldCBmaWx0ZXJfb2tfYXRfbGVhc3Rfb25lIGwgPVxuICBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5maWx0ZXJfb2tfYXRfbGVhc3Rfb25lXG47O1xuXG5sZXQgZmluZF9tYXBfb2sgbCB+ZiA9XG4gIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAobCwgW10pIChmdW4gKGwsIGVycm9ycykgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgZXJyb3JzID0gRXJyb3Iub2ZfbGlzdCAoTGlzdC5yZXYgZXJyb3JzKSBpblxuICAgICAgRGVmZXJyZWQucmV0dXJuIChgRmluaXNoZWQgKEVycm9yIGVycm9ycykpXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgRGVmZXJyZWQubWFwIChmIGhkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciBjdXJyZW50X2Vycm9yIC0+IGBSZXBlYXQgKHRsLCBjdXJyZW50X2Vycm9yIDo6IGVycm9ycylcbiAgICAgICAgfCBPayByZXN1bHQgLT4gYEZpbmlzaGVkIChPayByZXN1bHQpKSlcbjs7XG5cbmxldCBva191bml0ID0gcmV0dXJuICgpXG5cbmxldCB0cnlfd2l0aCA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCA/aGVyZSA/bmFtZSBmID1cbiAgRGVmZXJyZWQubWFwIChNb25pdG9yLnRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOihmdW5jdGlvblxuICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuICAgIHwgT2sgXyBhcyBvayAtPiBvaylcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYpIH5mOk9yX2Vycm9yLmpvaW5cbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBmb2xkaSBsaXN0IH5pbml0OmFjYyB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIGkgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBsZXQlYmluZCBhY2MgPSBmIGkgYWNjIGhkIGluXG4gICAgICAgIGxvb3AgKGkgKyAxKSBhY2MgdGxcbiAgICBpblxuICAgIGxvb3AgMCBhY2MgbGlzdFxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBmb2xkaSB0IH5pbml0IH5mOihmdW4gXyBhIHggLT4gZiBhIHgpXG5cbiAgbGV0IHNlcW1hcGkgdCB+ZiA9XG4gICAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGEgaW5cbiAgICAgIGIgOjogYnMpXG4gICAgPj58IExpc3QucmV2XG4gIDs7XG5cbiAgbGV0IGFsbCA9IGFsbFxuICBsZXQgYWxsX3VuaXQgPSBhbGxfdW5pdFxuXG4gIGxldCBpdGVyaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSB+aG93IHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG4gIGxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPSBtYXBpIHQgfmhvdyB+ZiA+PnwgTGlzdC5jb25jYXRcblxuICBsZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICAgIGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIHggaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9XG4gICAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2glYmluZCBmIGkgaGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICAgIGluXG4gICAgZmluZF9tYXBpIHQgfmYgMFxuICA7O1xuXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuXG4gIGxldCBmaW5kaSB0IH5mID1cbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgZmluZF9tYXAgdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCByZWMgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBtYXRjaCViaW5kIGYgc3RhdGUgd2l0aFxuICB8IGBSZXBlYXQgc3RhdGUgLT4gcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGZcbiAgfCBgRmluaXNoZWQgc3RhdGUgLT4gcmV0dXJuIHN0YXRlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIExpc3QgPSBEZWZlcnJlZF9saXN0XG5cbigqIFdlIGltcGxlbWVudCBhbGwgb2YgdGhlIFtRdWV1ZV0gb3BlcmF0aW9ucyBieSBjb252ZXJ0aW5nIHRoZSBxdWV1ZSB0byBhIGxpc3QgYW5kIHRoZW5cbiAgIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIFtMaXN0XSBvcGVyYXRpb24uICBXZSB1c2UgbGlzdHMgcmF0aGVyIHRoYW4gYXJyYXlzIGJlY2F1c2VcbiAgIGFycmF5cyBsb25nZXIgdGhhbiBhIGNlcnRhaW4gbGVuZ3RoIGFyZSBhbGxvY2F0ZWQgaW4gdGhlIG1ham9yIGhlYXAsIHdoaWNoIGNhbiBjYXVzZVxuICAgdW5uZWNlc3NhcnkgcHJvbW90aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgcXVldWUuICBBbHNvLCB3aGVuIG9uZSBpcyBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheSwgdGhlIGVudGlyZSBhcnJheSBtdXN0IGJlIGtlcHQgYWxpdmUuICBXaGVuIGZvbGRpbmcgb3JcbiAgIGl0ZXJhdGluZyBvdmVyIGEgbGlzdCwgb25seSB0aGUgcmVtYWluaW5nIHRhaWwgb2YgdGhlIGxpc3QgaXMga2VwdCBhbGl2ZS4gIFNvLCB1c2luZ1xuICAgYXJyYXlzIHJhdGhlciB0aGFuIGxpc3RzIHdvdWxkIGluY3JlYXNlIHRoZSBsaXZlLXNwYWNlIG5lZWRlZCBieSB0aGUgcHJvZ3JhbS4gKilcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBMaXN0LmZvbGRpIChRdWV1ZS50b19saXN0IHQpIH5pbml0IH5mXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gTGlzdC5mb2xkIChRdWV1ZS50b19saXN0IHQpIH5pbml0IH5mXG5sZXQgYWxsIHQgPSBMaXN0LmFsbCAoUXVldWUudG9fbGlzdCB0KSA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGFsbF91bml0IHQgPSBMaXN0LmFsbF91bml0IChRdWV1ZS50b19saXN0IHQpXG5sZXQgaXRlciB+aG93IHQgfmYgPSBMaXN0Lml0ZXIgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA9IExpc3QuaXRlcmkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IG1hcCB+aG93IHQgfmYgPSBMaXN0Lm1hcCB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgbWFwaSB+aG93IHQgfmYgPSBMaXN0Lm1hcGkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGluaXQgfmhvdyBuIH5mID0gTGlzdC5pbml0IH5ob3cgbiB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlciB+aG93IHQgfmYgPSBMaXN0LmZpbHRlciB+aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPSBMaXN0LmZpbHRlcmkgfmhvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwaSB+aG93IHQgfmYgPSBMaXN0LmZpbHRlcl9tYXBpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcblxubGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmY6KGZ1biB4IC0+IGYgeCA+PnwgUXVldWUudG9fbGlzdClcbiAgPj58IFF1ZXVlLm9mX2xpc3Rcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB+aG93IHQgfmYgPVxuICBMaXN0LmNvbmNhdF9tYXBpIH5ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmY6KGZ1biBpIHggLT4gZiBpIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmaW5kX21hcGkgdCB+ZiA9IExpc3QuZmluZF9tYXBpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZCB0IH5mID0gTGlzdC5maW5kIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZGkgdCB+ZiA9IExpc3QuZmluZGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBmb3JfYWxsaSB0IH5mID0gTGlzdC5mb3JfYWxsaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGV4aXN0cyB0IH5mID0gTGlzdC5leGlzdHMgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHNpIHQgfmYgPSBMaXN0LmV4aXN0c2kgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG4oKiBbZm9sZF9tYXBpIH5ob3cgdCB+aW5pdCB+bWFwaV9mIH5mb2xkX2ZdIGlzIGEgbW9yZSBlZmZpY2llbnQgdmVyc2lvbiBvZjpcblxuICAge1tcbiAgICAgZm9sZCB+aW5pdCB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGZvbGRfZiBiIGEpKSAobWFwaSB0IH5ob3cgfmY6bWFwaV9mKSBdfVxuXG4gICBJdCBhdm9pZHMgY3JlYXRpbmcgdGhlIGludGVybWVkaWF0ZSBzZXF1ZW5jZSB0aGF0IHdvdWxkIHJlc3VsdCBmcm9tIFttYXBpXSwgYW5kXG4gICBhbGxvd3MgdGhlIFtmb2xkXSB0byBwcm9jZWVkIGNvbmN1cnJlbnRseSB3aXRoIHRoZSBbbWFwaV0sIHNvIHRoYXQgb25lIGNhbiBhY2N1bXVsYXRlXG4gICB0aGUgcmVzdWx0IGFzIHNvb24gYXMgcG9zc2libGUsIHBvc3NpYmx5IGF2b2lkaW5nIGNyZWF0aW5nIGFuIGludGVybWVkaWF0ZSBzdHJ1Y3R1cmVcbiAgIChlLmcuIFtpdGVyaV0gYW5kIFtmaWx0ZXJfbWFwXSB1c2VzIFtmb2xkX21hcGldIHRvIGRvIHRoaXMpLiAqKVxubGV0IGZvbGRfbWFwaVxuICAgICAgKHR5cGUgYSBiIGMpXG4gICAgICA/KGhvdyA9IGBTZXF1ZW50aWFsKVxuICAgICAgKHQgOiBhIFNlcXVlbmNlLnQpXG4gICAgICB+KGluaXQgOiBjKVxuICAgICAgfihtYXBpX2YgOiBpbnQgLT4gYSAtPiBiIERlZmVycmVkLnQpXG4gICAgICB+KGZvbGRfZiA6IGMgLT4gYiAtPiBjKVxuICA6IGMgRGVmZXJyZWQudFxuICA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgYFNlcXVlbnRpYWwgLT5cbiAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYykgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBJdmFyLmZpbGwgcmVzdWx0IGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT4gdXBvbiAobWFwaV9mIGkgYSkgKGZ1biBiIC0+IGxvb3AgKGkgKyAxKSB0IChmb2xkX2YgYyBiKSlcbiAgICBpblxuICAgIGxvb3AgMCB0IGluaXQ7XG4gICAgSXZhci5yZWFkIHJlc3VsdFxuICB8IGBQYXJhbGxlbCAtPlxuICAgIGxldCByZWMgbG9vcCBpIHQgKGMgOiBjIERlZmVycmVkLnQpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsb29wXG4gICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgIHRcbiAgICAgICAgICAobGV0JWJpbmQgYiA9IG1hcGlfZiBpIGEgaW5cbiAgICAgICAgICAgbGV0JW1hcCBjID0gYyBpblxuICAgICAgICAgICBmb2xkX2YgYyBiKVxuICAgIGluXG4gICAgbG9vcCAwIHQgKHJldHVybiBpbml0KVxuICB8IGBNYXhfY29uY3VycmVudF9qb2JzIG1heF9jb25jdXJyZW50X2pvYnMgLT5cbiAgICBsZXQgdGhyb3R0bGUgPSBUaHJvdHRsZS5jcmVhdGUgfm1heF9jb25jdXJyZW50X2pvYnMgfmNvbnRpbnVlX29uX2Vycm9yOmZhbHNlIGluXG4gICAgKCogW2xvb3BdIGZvcmNlcyB0aGUgaW5wdXQgc2VxdWVuY2UgYW5kIGVucXVldWVzIGEgdGhyb3R0bGUgam9iIG9ubHkgaWYgdGhlcmUgaXNcbiAgICAgICBjYXBhY2l0eSBhdmFpbGFibGUuICopXG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbGV0JWJpbmQgKCkgPSBUaHJvdHRsZS5jYXBhY2l0eV9hdmFpbGFibGUgdGhyb3R0bGUgaW5cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY1xuICAgICAgfCBTb21lIChhLCB0KSAtPlxuICAgICAgICBsb29wXG4gICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgIHRcbiAgICAgICAgICAobGV0JWJpbmQgYiA9IFRocm90dGxlLmVucXVldWUgdGhyb3R0bGUgKGZ1biAoKSAtPiBtYXBpX2YgaSBhKSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIFNlcXVlbmNlLmRlbGF5ZWRfZm9sZFxuICAgIHRcbiAgICB+aW5pdDooMCwgaW5pdClcbiAgICB+ZjooZnVuIChpLCBiKSBhIH5rIC0+XG4gICAgICBsZXQlYmluZCBiID0gZiBpIGIgYSBpblxuICAgICAgayAoaSArIDEsIGIpKVxuICAgIH5maW5pc2g6KGZ1biAoXywgYikgLT4gcmV0dXJuIGIpXG47O1xuXG4oKiBbZm9sZF0gaXMgbm90IGltcGxlbWVudGVkIGluIHRlcm1zIG9mIFtmb2xkaV0gdG8gc2F2ZSB0aGUgaW50ZXJtZWRpYXRlIGNsb3N1cmVcbiAgIGFsbG9jYXRpb24uICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkIHQgfmluaXQgfmY6KGZ1biBiIGEgfmsgLT4gZiBiIGEgPj49IGspIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgYWxsIHQgPVxuICBsZXQlbWFwIHJlcyA9XG4gICAgZm9sZCB0IH5pbml0OltdIH5mOihmdW4gYWNjdW0gZCAtPlxuICAgICAgbGV0JW1hcCBhID0gZCBpblxuICAgICAgYSA6OiBhY2N1bSlcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgcmVzKVxuOztcblxubGV0IGFsbF91bml0IHQgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IHYpXG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmV0dXJuIE5vbmVcbiAgICB8IFNvbWUgKHYsIHJlc3QpIC0+XG4gICAgICAobWF0Y2glYmluZCBmIGkgdiB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSByZXN0IH5mIChpICsgMSlcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHJldHVybiBzb21lKVxuICBpblxuICBmaW5kX21hcGkgdCB+ZiAwXG47O1xuXG5sZXQgZmluZGkgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIGZpbmRfbWFwaSB0IH5mOihmdW4gXyBlbHQgLT5cbiAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICB3aXRoXG4gIHwgU29tZSAoKSAtPiBmYWxzZVxuICB8IE5vbmUgLT4gdHJ1ZVxuOztcblxubGV0IGl0ZXJpIH5ob3cgdCB+ZiA6IHVuaXQgRGVmZXJyZWQudCA9XG4gIGZvbGRfbWFwaSB+aG93IHQgfm1hcGlfZjpmIH5pbml0OigpIH5mb2xkX2Y6KGZ1biAoKSAoKSAtPiAoKSlcbjs7XG5cbmxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYnMgPVxuICAgIGZvbGRfbWFwaSB+aG93IHQgfm1hcGlfZjooZnVuIGkgYSAtPiBmIGkgYSkgfmluaXQ6W10gfmZvbGRfZjooZnVuIGJzIGIgLT4gYiA6OiBicylcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgYnMpXG47O1xuXG4oKiBbZmlsdGVyX21hcGldIGlzIGltcGxlbWVudGVkIHVzaW5nIFtmb2xkX21hcGldIHJhdGhlciB0aGFuIFttYXBdIHNvIHRoYXQgd2UgbmV2ZXIgbmVlZFxuICAgdG8ga2VlcCBhIGxvbmcgc3RyZWFtIG9mIGludGVybWVkaWF0ZSBbTm9uZV0gcmVzdWx0cyBpbiB0aGUgYWNjdW11bGF0b3IsIG9ubHkgdG8gbGF0ZXJcbiAgIGZpbHRlciB0aGVtIGFsbCBvdXQuICopXG5sZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpXG4gICAgICB0XG4gICAgICB+aG93XG4gICAgICB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKVxuICAgICAgfmluaXQ6W11cbiAgICAgIH5mb2xkX2Y6KGZ1biBicyBtYXliZV92IC0+XG4gICAgICAgIG1hdGNoIG1heWJlX3Ygd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYnNcbiAgICAgICAgfCBTb21lIGIgLT4gYiA6OiBicylcbiAgaW5cbiAgU2VxdWVuY2Uub2ZfbGlzdCAoTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmYgPj58IFNlcXVlbmNlLmNvbmNhdFxuXG5sZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBpIGEgLT5cbiAgICBtYXRjaCVtYXAgZiBpIGEgd2l0aFxuICAgIHwgdHJ1ZSAtPiBTb21lIGFcbiAgICB8IGZhbHNlIC0+IE5vbmUpXG47O1xuXG5sZXQgaXRlciB+aG93IHQgfmYgPSBpdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXJfbWFwIH5ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKFNlcXVlbmNlLmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIENsb2NrX25zID0gQ2xvY2tfbnNcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFRpbWUgPSBUaW1lX2Zsb2F0XG5tb2R1bGUgQXN5bmNfa2VybmVsX3NjaGVkdWxlciA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXJcbm1vZHVsZSBEYXRlID0gRGF0ZVxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBldmVyeSA9IENsb2NrX25zLmV2ZXJ5XG5sZXQgd2l0aF90aW1lb3V0ID0gQ2xvY2tfbnMud2l0aF90aW1lb3V0XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuXG5sZXQgc2hvd19kZWJ1Z19tZXNzYWdlcyA9IHJlZiBmYWxzZVxubGV0IGNoZWNrX2ludmFyaWFudCA9IHJlZiBmYWxzZVxuXG5tb2R1bGUgRmx1c2hlZF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICBbIGBPa1xuICAgIHwgYFJlYWRlcl9jbG9zZWRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCBjb21iaW5lIChsIDogdCBEZWZlcnJlZC50IGxpc3QpID1cbiAgICBsZXQlbWFwIGwgPSBEZWZlcnJlZC5hbGwgbCBpblxuICAgIG1hdGNoIExpc3QubWVtIGwgYFJlYWRlcl9jbG9zZWQgfmVxdWFsIHdpdGhcbiAgICB8IHRydWUgLT4gYFJlYWRlcl9jbG9zZWRcbiAgICB8IGZhbHNlIC0+IGBPa1xuICA7O1xuZW5kXG5cbigqIEEgW0NvbnN1bWVyLnRdIGFjdHMgYXMgdGhlIG1vbml0b3Igb2Ygc29tZSBwcm9jZXNzIHRoYXQgcmVhZHMgdmFsdWVzIGZyb20gYSBwaXBlIGFuZFxuICAgcHJvY2Vzc2VzIHRoZW0sIGFsbG93aW5nIHRoYXQgcHJvY2VzczpcbiAgIC0gdG8gY29tbXVuaWNhdGUgdGhhdCBpdCBoYXMgdGFrZW4gcmVzcG9uc2liaWxpdHkgZm9yIHRoZSB2YWx1ZXNcbiAgIC0gdG8gc2lnbmFsIHdoZW4gaXQgaGFzIGZpbmlzaGVkIHdpdGggdGhlIHZhbHVlcyB0byBpbnRlcmVzdGVkIHBhcnRpZXMgKHZpYVxuICAgICBbZG93bnN0cmVhbV9mbHVzaGVkXSlcblxuICAgSXQgaXMgdXNlZCBpbiB0d28gc3RlcHM6XG5cbiAgIDEuIGNhbGxpbmcgW0NvbnN1bWVyLnN0YXJ0XSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGNvbnN1bWVyIHRha2VzIHZhbHVlcyBvdXQgb2YgdGhlXG4gICBQaXBlIHZpYSBbcmVhZF0gb3IgW3JlYWQnXS5cblxuICAgMi4gY2FsbGluZyBbQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV0uXG5cbiAgIEJ5IGNhbGxpbmcgW3ZhbHVlc19zZW50X2Rvd25zdHJlYW1dIG9uZSBhc3NlcnRzIHRoYXQgdGhlIFtkb3duc3RyZWFtX2ZsdXNoZWRdIGZ1bmN0aW9uXG4gICBzdXBwbGllZCB0byBbY3JlYXRlXSB3aWxsIG5vdyB3YWl0IGZvciB0aGlzIHZhbHVlLlxuXG4gICBJZiBubyBbQ29uc3VtZXIudF0gaXMgc3VwcGxpZWQgd2hlbiBhIHZhbHVlIGlzIHJlYWQgdGhlbiB0aGUgdmFsdWUgaXMgZGVmaW5lZCB0byBiZVxuICAgZmx1c2hlZCBhdCB0aGF0IHRpbWUuICopXG5tb2R1bGUgQ29uc3VtZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGNyZWF0ZVxuICAgIDogIHBpcGVfaWQ6aW50XG4gICAgLT4gZG93bnN0cmVhbV9mbHVzaGVkOih1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAtPiB0XG5cbiAgdmFsIHBpcGVfaWQgOiB0IC0+IGludFxuICB2YWwgc3RhcnQgOiB0IC0+IHVuaXRcbiAgdmFsIHZhbHVlc19zZW50X2Rvd25zdHJlYW0gOiB0IC0+IHVuaXRcbiAgdmFsIHZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgOiB0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwaXBlX2lkIDogaW50XG4gICAgOyAoKiBbdmFsdWVzX3JlYWRdIHJlZmxlY3RzIHdoZXRoZXIgdmFsdWVzIHRoZSBjb25zdW1lciBoYXMgcmVhZCBmcm9tIHRoZSBwaXBlIGhhdmUgYmVlblxuICAgICAgICAgc2VudCBkb3duc3RyZWFtIG9yIGlmIG5vdCwgaG9sZHMgYW4gaXZhciB0aGF0IGlzIHRvIGJlIGZpbGxlZCB3aGVuIHRoZXkgYXJlLiAqKVxuICAgICAgbXV0YWJsZVxuICAgICAgICB2YWx1ZXNfcmVhZCA6XG4gICAgICAgIFsgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gb2YgdW5pdCBJdmFyLnQgXVxuICAgIDsgKCogW2Rvd25zdHJlYW1fZmx1c2hlZCAoKV0gcmV0dXJucyB3aGVuIGFsbCBwcmlvciB2YWx1ZXMgdGhhdCB0aGUgY29uc3VtZXIgaGFzXG4gICAgICAgICBwYXNzZWQgZG93bnN0cmVhbSBoYXZlIGJlZW4gZmx1c2hlZCBhbGwgdGhlIHdheSBkb3duIHRoZSBjaGFpbiBvZiBwaXBlcy4gKilcbiAgICAgIGRvd25zdHJlYW1fZmx1c2hlZCA6IHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnBpcGVfaWQ6aWdub3JlXG4gICAgICAgIH52YWx1ZXNfcmVhZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgICAgICAgICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT4gYXNzZXJ0IChJdmFyLmlzX2VtcHR5IGl2YXIpKSlcbiAgICAgICAgfmRvd25zdHJlYW1fZmx1c2hlZDppZ25vcmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLkNvbnN1bWVyLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IHQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfnBpcGVfaWQgfmRvd25zdHJlYW1fZmx1c2hlZCA9XG4gICAgeyBwaXBlX2lkOyB2YWx1ZXNfcmVhZCA9IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtOyBkb3duc3RyZWFtX2ZsdXNoZWQgfVxuICA7O1xuXG4gIGxldCBzdGFydCB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBfIC0+ICgpXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gKEl2YXIuY3JlYXRlICgpKVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBpdmFyIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoKTtcbiAgICAgIHQudmFsdWVzX3JlYWQgPC0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW1cbiAgOztcblxuICBsZXQgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCB0ID1cbiAgICBtYXRjaCB0LnZhbHVlc19yZWFkIHdpdGhcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+IHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gd2hlbl9zZW50X2Rvd25zdHJlYW0gLT5cbiAgICAgIGxldCViaW5kICgpID0gSXZhci5yZWFkIHdoZW5fc2VudF9kb3duc3RyZWFtIGluXG4gICAgICB0LmRvd25zdHJlYW1fZmx1c2hlZCAoKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCbG9ja2VkX3JlYWQgPSBzdHJ1Y3RcbiAgKCogQSBbQmxvY2tlZF9yZWFkLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIHJlYWQgYXR0ZW1wdC4gIElmIHNvbWVvbmUgcmVhZHMgZnJvbSBhbiBlbXB0eVxuICAgICBwaXBlLCB0aGV5IGVucXVldWUgYSBbQmxvY2tlZF9yZWFkLnRdIGluIHRoZSBxdWV1ZSBvZiBbYmxvY2tlZF9yZWFkc10uICBMYXRlciwgd2hlblxuICAgICB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gYSBwaXBlLCB0aGF0IHdpbGwgY2F1c2Ugc29tZSBudW1iZXIgb2YgYmxvY2tlZCByZWFkcyB0byBiZVxuICAgICBmaWxsZWQsIGZpcnN0IGNvbWUgZmlyc3Qgc2VydmUuICBUaGUgYmxvY2tlZC1yZWFkIGNvbnN0cnVjdG9yIHNwZWNpZmllcyBob3cgbWFueVxuICAgICB2YWx1ZXMgYSByZWFkIHNob3VsZCBjb25zdW1lIGZyb20gdGhlIHBpcGUgd2hlbiBpdCBnZXRzIGl0cyB0dXJuLlxuXG4gICAgIElmIGEgcGlwZSBpcyBjbG9zZWQsIHRoZW4gYWxsIGJsb2NrZWQgcmVhZHMgd2lsbCBiZSBmaWxsZWQgd2l0aCBbYEVvZl0uICopXG4gIHR5cGUgJ2Egd2FudHMgPVxuICAgIHwgWmVybyBvZiBbIGBFb2YgfCBgT2sgXSBJdmFyLnRcbiAgICB8IE9uZSBvZiBbIGBFb2YgfCBgT2sgb2YgJ2EgXSBJdmFyLnRcbiAgICB8IEF0X21vc3Qgb2YgaW50ICogWyBgRW9mIHwgYE9rIG9mICdhIFF1ZXVlLnQgXSBJdmFyLnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHQgPVxuICAgIHsgd2FudHMgOiAnYSB3YW50c1xuICAgIDsgY29uc3VtZXIgOiBDb25zdW1lci50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA6IHVuaXQgPVxuICAgIHRyeVxuICAgICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH53YW50czpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBaZXJvIF8gfCBPbmUgXyAtPiAoKVxuICAgICAgICAgICAgIHwgQXRfbW9zdCAoaSwgXykgLT4gYXNzZXJ0IChpID4gMCkpKVxuICAgICAgICB+Y29uc3VtZXI6XG4gICAgICAgICAgKGNoZWNrIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSBjb25zdW1lciAtPiBDb25zdW1lci5pbnZhcmlhbnQgY29uc3VtZXIpKVxuICAgIHdpdGhcbiAgICB8IGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLkJsb2NrZWRfcmVhZC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgfnBpcGU6KHQgOiBfIHQpXVxuICA7O1xuXG4gIGxldCBjcmVhdGUgd2FudHMgY29uc3VtZXIgPSB7IHdhbnRzOyBjb25zdW1lciB9XG5cbiAgbGV0IGlzX2VtcHR5IHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICAgIHwgT25lIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBBdF9tb3N0IChfLCBpKSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgOztcblxuICBsZXQgZmlsbF93aXRoX2VvZiB0ID1cbiAgICBtYXRjaCB0LndhbnRzIHdpdGhcbiAgICB8IFplcm8gaSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gICAgfCBPbmUgaSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gICAgfCBBdF9tb3N0IChfLCBpKSAtPiBJdmFyLmZpbGwgaSBgRW9mXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfZmx1c2ggPSBzdHJ1Y3RcbiAgKCogQSBbQmxvY2tlZF9mbHVzaC50XSByZXByZXNlbnRzIGEgYmxvY2tlZCBmbHVzaCBvcGVyYXRpb24sIHdoaWNoIGNhbiBiZSBlbmFibGVkIGJ5IGFcbiAgICAgZnV0dXJlIHJlYWQuICBJZiBzb21lb25lIGRvZXMgW2ZsdXNoZWQgcF0gb24gYSBwaXBlLCB0aGF0IGJsb2NrcyB1bnRpbCBldmVyeXRoaW5nXG4gICAgIHRoYXQncyBjdXJyZW50bHkgaW4gdGhlIHBpcGUgYXQgdGhhdCBwb2ludCBoYXMgZHJhaW5lZCBvdXQgb2YgdGhlIHBpcGUuICBXaGVuIHdlIGNhbGxcbiAgICAgW2ZsdXNoZWRdLCBpdCByZWNvcmRzIHRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gc28gZmFyIGluXG4gICAgIFtmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkXS4gIFdlIGZpbGwgdGhlIFtGbHVzaC50XSB3aXRoIFtgT2tdIHdoZW4gdGhpcyBhbW91bnQgb2ZcbiAgICAgZGF0YSBoYXMgYmVlbiByZWFkIGZyb20gdGhlIHBpcGUuXG5cbiAgICAgQSBbQmxvY2tlZF9mbHVzaC50XSBjYW4gYWxzbyBiZSBmaWxsZWQgd2l0aCBbYFJlYWRlcl9jbG9zZWRdLCB3aGljaCBoYXBwZW5zIHdoZW4gdGhlXG4gICAgIHJlYWRlciBlbmQgb2YgdGhlIHBpcGUgaXMgY2xvc2VkLCBhbmQgd2UgYXJlIHRodXMgc3VyZSB0aGF0IHRoZSB1bnJlYWQgZWxlbWVudHMgcHJlY2VkaW5nIHRoZSBmbHVzaCB3aWxsIG5ldmVyIGJlIHJlYWQuICopXG4gIHR5cGUgdCA9XG4gICAgeyBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIDogaW50XG4gICAgOyByZWFkeSA6IFsgYE9rIHwgYFJlYWRlcl9jbG9zZWQgXSBJdmFyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgZmlsbCB0IHYgPSBJdmFyLmZpbGwgdC5yZWFkeSB2XG5lbmRcblxudHlwZSAoJ2EsICdwaGFudG9tKSB0ID1cbiAgeyAoKiBbaWRdIGlzIGFuIGludGVnZXIgdXNlZCB0byBkaXN0aW5ndWlzaCBwaXBlcyB3aGVuIGRlYnVnZ2luZy4gKilcbiAgICBpZCA6IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0LnRcbiAgOyAoKiBbaW5mb10gaXMgdXNlci1wcm92aWRlZCBhcmJpdHJhcnkgc2V4cCwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gKilcbiAgICBtdXRhYmxlIGluZm8gOiBTZXhwLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgKCogW2J1ZmZlcl0gaG9sZHMgdmFsdWVzIHdyaXR0ZW4gdG8gdGhlIHBpcGUgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiByZWFkLiAqKVxuICAgIG11dGFibGUgYnVmZmVyIDogJ2EgUXVldWUudFxuICA7ICgqIFtzaXplX2J1ZGdldF0gZ292ZXJucyBwdXNoYmFjayBvbiB3cml0ZXJzIHRvIHRoZSBwaXBlLlxuXG4gICAgICAgVGhlcmUgaXMgKm5vKiBpbnZhcmlhbnQgdGhhdCBbUXVldWUubGVuZ3RoIGJ1ZmZlciA8PSBzaXplX2J1ZGdldF0uXG4gICAgICAgVGhlcmUgaXMgbm8gaGFyZCB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHN0dWZmZWQgaW50byB0aGVcbiAgICAgICBbYnVmZmVyXS4gVGhpcyBpcyBkdWUgdG8gdGhlIHdheSB3ZSBoYW5kbGUgd3JpdGVzLiBXaGVuIHdlIGRvIGEgd3JpdGUsIGFsbCBvZiB0aGVcbiAgICAgICB2YWx1ZXMgd3JpdHRlbiBhcmUgaW1tZWRpYXRlbHkgZW5xdWV1ZWQgaW50byBbYnVmZmVyXS4gQWZ0ZXIgdGhlIHdyaXRlLCBpZlxuICAgICAgIFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHQuc2l6ZV9idWRnZXRdLCB0aGVuIHRoZSB3cml0ZXIgd2lsbCBiZSBub3RpZmllZCB0b1xuICAgICAgIGNvbnRpbnVlIHdyaXRpbmcuIEFmdGVyIHRoZSB3cml0ZSwgaWYgW2xlbmd0aCB0ID4gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlXG4gICAgICAgd2lsbCBibG9jayB1bnRpbCB0aGUgcGlwZSBpcyB1bmRlciBidWRnZXQuICopXG4gICAgbXV0YWJsZSBzaXplX2J1ZGdldCA6IGludFxuICA7ICgqIFtyZXNlcnZlZF9zcGFjZV0gY291bnRzIGFnYWluc3QgW3NpemVfYnVkZ2V0XSB3aXRob3V0IGFjdHVhbGx5IGJ1ZmZlcmluZyBhbnl0aGluZ1xuICAgICAgIHlldC4gV2hlbiBpdCdzIHBvc2l0aXZlLCB3cml0ZXMgZGVjcmVtZW50IGl0LiAqKVxuICAgIG11dGFibGUgcmVzZXJ2ZWRfc3BhY2UgOiBpbnRcbiAgOyAoKiBbcHVzaGJhY2tdIGlzIHVzZWQgdG8gZ2l2ZSBmZWVkYmFjayB0byB3cml0ZXJzIGFib3V0IHdoZXRoZXIgdGhleSBzaG91bGQgd3JpdGUgdG9cbiAgICAgICB0aGUgcGlwZS4gW3B1c2hiYWNrXSBpcyBmdWxsIGlmZiBbbGVuZ3RoIHQgKyByZXNlcnZlZF9zcGFjZSB0IDw9IHQuc2l6ZV9idWRnZXQgfHxcbiAgICAgICBpc19jbG9zZWQgdF0uICopXG4gICAgbXV0YWJsZSBwdXNoYmFjayA6IHVuaXQgSXZhci50XG4gIDsgKCogW251bV92YWx1ZXNfcmVhZF0ga2VlcHMgdHJhY2sgb2YgdGhlIHRvdGFsIG51bWJlciBvZiB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gcmVhZFxuICAgICAgIGZyb20gdGhlIHBpcGUuICBXZSBkbyBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBvdmVyZmxvdyBpbiBbbnVtX3ZhbHVlc19yZWFkXS4gIFlvdSdkXG4gICAgICAgbmVlZCB0byB3cml0ZSAyXjYyIGVsZW1lbnRzIHRvIHRoZSBwaXBlLCB3aGljaCB3b3VsZCB0YWtlIGFib3V0IDE0NiB5ZWFycywgYXQgYVxuICAgICAgIGZsb3cgcmF0ZSBvZiAxIHNpemUtdW5pdC9uYW5vc2Vjb25kLiAqKVxuICAgIG11dGFibGUgbnVtX3ZhbHVlc19yZWFkIDogaW50XG4gICgqIFtibG9ja2VkX2ZsdXNoZXNdIGhvbGRzIGZsdXNoZXMgd2hvc2UgcHJlY2VkaW5nIGVsZW1lbnRzIGhhdmUgbm90IGJlZW4gY29tcGxldGVseVxuICAgICByZWFkLiAgRm9yIGVhY2ggYmxvY2tlZCBmbHVzaCwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBmcm9tIHRoZVxuICAgICBwaXBlIGluIG9yZGVyIHRvIGZpbGwgdGhlIGZsdXNoIGlzICAgICAgICAgICAgICAgICAgICAgICAgOlxuXG4gICAgIGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgLSBudW1fdmFsdWVzX3JlYWRcblxuICAgICBLZWVwaW5nIHRoZSBkYXRhIGluIHRoaXMgZm9ybSBhbGxvd3MgdXMgdG8gY2hhbmdlIGEgc2luZ2xlIGZpZWxkKG51bV92YWx1ZXNfcmVhZClcbiAgICAgd2hlbiB3ZSBjb25zdW1lIHZhbHVlcyBpbnN0ZWFkIG9mIGhhdmluZyB0byBpdGVyYXRlIG92ZXIgdGhlIHdob2xlIHF1ZXVlIG9mXG4gICAgIGZsdXNoZXMuICopXG4gIDsgYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50IFF1ZXVlLnRcbiAgOyAoKiBbYmxvY2tlZF9yZWFkc10gaG9sZHMgcmVhZHMgdGhhdCBhcmUgd2FpdGluZyBvbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHBpcGUuICopXG4gICAgYmxvY2tlZF9yZWFkcyA6ICdhIEJsb2NrZWRfcmVhZC50IFF1ZXVlLnRcbiAgOyAoKiBbY2xvc2VkXSBpcyBmaWxsZWQgd2hlbiB3ZSBjbG9zZSB0aGUgd3JpdGUgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIGNsb3NlZCA6IHVuaXQgSXZhci50XG4gIDsgKCogW3JlYWRfY2xvc2VkXSBpcyBmaWxsZWQgd2hlbiB3ZSBjbG9zZSB0aGUgcmVhZCBlbmQgb2YgdGhlIHBpcGUuICopXG4gICAgcmVhZF9jbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtjb25zdW1lcnNdIGlzIGEgbGlzdCBvZiBhbGwgY29uc3VtZXJzIHRoYXQgbWF5IGJlIGhhbmRsaW5nIHZhbHVlcyByZWFkIGZyb20gdGhlXG4gICAgICAgcGlwZS4gKilcbiAgICBtdXRhYmxlIGNvbnN1bWVycyA6IENvbnN1bWVyLnQgbGlzdFxuICA7ICgqIFt1cHN0cmVhbV9mbHVzaGVkc10gaGFzIGEgZnVuY3Rpb24gZm9yIGVhY2ggcGlwZSBpbW1lZGlhdGVseSB1cHN0cmVhbSBvZiB0aGlzIG9uZS5cbiAgICAgICBUaGF0IGZ1bmN0aW9uIHdhbGtzIHRvIHRoZSBoZWFkKHMpIG9mIHRoZSB1cHN0cmVhbSBwaXBlLCBhbmQgY2FsbHNcbiAgICAgICBbZG93bnN0cmVhbV9mbHVzaGVkXSBvbiB0aGUgaGVhZChzKS4gIFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgICAgICBiZWxvdy4gKilcbiAgICB1cHN0cmVhbV9mbHVzaGVkcyA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgZWZmZWN0aXZlX3NpemVfYnVkZ2V0IHQgPSB0LnNpemVfYnVkZ2V0IC0gdC5yZXNlcnZlZF9zcGFjZVxuXG50eXBlICgnYSwgJ3BoYW50b20pIHBpcGUgPSAoJ2EsICdwaGFudG9tKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBoYXNoIHQgPSBIYXNodGJsLmhhc2ggdC5pZFxubGV0IGVxdWFsICh0MSA6IChfLCBfKSB0KSB0MiA9IHBoeXNfZXF1YWwgdDEgdDJcbmxldCBjb21wYXJlIHQxIHQyID0gSW50LmNvbXBhcmUgdDEuaWQgdDIuaWRcbmxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxubGV0IGlzX3JlYWRfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5yZWFkX2Nsb3NlZFxubGV0IGNsb3NlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VkXG5sZXQgcHVzaGJhY2sgdCA9IEl2YXIucmVhZCB0LnB1c2hiYWNrXG5sZXQgbGVuZ3RoIHQgPSBRdWV1ZS5sZW5ndGggdC5idWZmZXJcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5sZXQgdXBkYXRlX251bV92YWx1ZXNfcmVhZCB0IH5kZWx0YSA9IHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgZGVsdGFcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDppZ25vcmVcbiAgICAgIH5pbmZvOmlnbm9yZVxuICAgICAgfmJ1ZmZlcjppZ25vcmVcbiAgICAgIH5zaXplX2J1ZGdldDooY2hlY2sgKGZ1biBzaXplX2J1ZGdldCAtPiBhc3NlcnQgKHNpemVfYnVkZ2V0ID49IDApKSlcbiAgICAgIH5yZXNlcnZlZF9zcGFjZTooY2hlY2sgKGZ1biByZXNlcnZlZF9zcGFjZSAtPiBhc3NlcnQgKHJlc2VydmVkX3NwYWNlID49IDApKSlcbiAgICAgIH5wdXNoYmFjazpcbiAgICAgICAgKGNoZWNrIChmdW4gcHVzaGJhY2sgLT5cbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBCb29sLmVxdWFsXG4gICAgICAgICAgICAgICAoSXZhci5pc19mdWxsIHB1c2hiYWNrKVxuICAgICAgICAgICAgICAgKGxlbmd0aCB0IDw9IGVmZmVjdGl2ZV9zaXplX2J1ZGdldCB0IHx8IGlzX2Nsb3NlZCB0KSkpKVxuICAgICAgfm51bV92YWx1ZXNfcmVhZDppZ25vcmVcbiAgICAgIH5ibG9ja2VkX2ZsdXNoZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGJsb2NrZWRfZmx1c2hlcyAtPlxuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIChmIDogQmxvY2tlZF9mbHVzaC50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoZi5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkID4gdC5udW1fdmFsdWVzX3JlYWQpKTtcbiAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICBMaXN0LmlzX3NvcnRlZFxuICAgICAgICAgICAgICAgfmNvbXBhcmU6SW50LmNvbXBhcmVcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgKFF1ZXVlLnRvX2xpc3QgYmxvY2tlZF9mbHVzaGVzKVxuICAgICAgICAgICAgICAgICAgfmY6QmxvY2tlZF9mbHVzaC5maWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGlmIGlzX2VtcHR5IHQgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfZmx1c2hlcykpKVxuICAgICAgfmJsb2NrZWRfcmVhZHM6XG4gICAgICAgIChjaGVjayAoZnVuIGJsb2NrZWRfcmVhZHMgLT5cbiAgICAgICAgICAgKCogSWYgZGF0YSBpcyBhdmFpbGFibGUsIG5vIG9uZSBpcyB3YWl0aW5nIGZvciBpdC4gIFRoaXMgd291bGQgbmVlZCB0byBjaGFuZ2UgaWZcbiAgICAgICAgICAgICAgd2UgZXZlciBpbXBsZW1lbnQgW3JlYWRfZXhhY3RseV0gYXMgYW4gYXRvbWljIG9wZXJhdGlvbi4gKilcbiAgICAgICAgICAgaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgYmxvY2tlZF9yZWFkcyk7XG4gICAgICAgICAgIFF1ZXVlLml0ZXIgYmxvY2tlZF9yZWFkcyB+ZjooZnVuIHJlYWQgLT5cbiAgICAgICAgICAgICBCbG9ja2VkX3JlYWQuaW52YXJpYW50IHJlYWQ7XG4gICAgICAgICAgICAgYXNzZXJ0IChCbG9ja2VkX3JlYWQuaXNfZW1wdHkgcmVhZCkpO1xuICAgICAgICAgICAoKiBZb3UgbmV2ZXIgYmxvY2sgdHJ5aW5nIHRvIHJlYWQgYSBjbG9zZWQgcGlwZS4gKilcbiAgICAgICAgICAgaWYgaXNfY2xvc2VkIHQgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpKSlcbiAgICAgIH5jbG9zZWQ6aWdub3JlXG4gICAgICB+cmVhZF9jbG9zZWQ6aWdub3JlXG4gICAgICB+Y29uc3VtZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBsIC0+XG4gICAgICAgICAgIExpc3QuaXRlciBsIH5mOihmdW4gY29uc3VtZXIgLT5cbiAgICAgICAgICAgICBDb25zdW1lci5pbnZhcmlhbnQgY29uc3VtZXI7XG4gICAgICAgICAgICAgYXNzZXJ0IChDb25zdW1lci5waXBlX2lkIGNvbnN1bWVyID0gdC5pZCkpKSlcbiAgICAgIH51cHN0cmVhbV9mbHVzaGVkczppZ25vcmVcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogKF8sIF8pIHQpXVxuOztcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlIHBoYW50b20gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAnYSB0ID0gKCdhLCBwaGFudG9tKSBwaXBlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5sZXQgaWRfcmVmID0gcmVmIDBcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyID1cbiAgaW5jciBpZF9yZWY7XG4gIGxldCB0ID1cbiAgICB7IGlkID0gIWlkX3JlZlxuICAgIDsgaW5mb1xuICAgIDsgY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IHJlYWRfY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICA7XG4gICAgICBzaXplX2J1ZGdldFxuICAgIDsgcmVzZXJ2ZWRfc3BhY2UgPSAwXG4gICAgOyBwdXNoYmFjayA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyBidWZmZXIgPSBpbml0aWFsX2J1ZmZlclxuICAgIDsgbnVtX3ZhbHVlc19yZWFkID0gMFxuICAgIDsgYmxvY2tlZF9mbHVzaGVzID0gUXVldWUuY3JlYXRlICgpXG4gICAgOyBibG9ja2VkX3JlYWRzID0gUXVldWUuY3JlYXRlICgpXG4gICAgOyBjb25zdW1lcnMgPSBbXVxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHMgPSBCYWcuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgdmFsaWRhdGVfc2l6ZV9idWRnZXQgc2l6ZV9idWRnZXQgPVxuICBpZiBzaXplX2J1ZGdldCA8IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm5lZ2F0aXZlIHNpemVfYnVkZ2V0XCIgKHNpemVfYnVkZ2V0IDogaW50KV1cbiAgZWxzZSBzaXplX2J1ZGdldFxuOztcblxubGV0IGNyZWF0ZSA/c2l6ZV9idWRnZXQgP2luZm8gKCkgPVxuICBsZXQgc2l6ZV9idWRnZXQgPVxuICAgIG1hdGNoIHNpemVfYnVkZ2V0IHdpdGhcbiAgICB8IFNvbWUgdiAtPiB2YWxpZGF0ZV9zaXplX2J1ZGdldCB2XG4gICAgfCBOb25lIC0+IDBcbiAgaW5cbiAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlcjooUXVldWUuY3JlYXRlICgpKSBpblxuICAoKiBpbml0aWFsbHksIHRoZSBwaXBlIGRvZXMgbm90IHB1c2hiYWNrICopXG4gIEl2YXIuZmlsbCB0LnB1c2hiYWNrICgpO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIHQsIHRcbjs7XG5cbmxldCB1cGRhdGVfcHVzaGJhY2sgdCA9XG4gIGlmIGxlbmd0aCB0IDw9IGVmZmVjdGl2ZV9zaXplX2J1ZGdldCB0IHx8IGlzX2Nsb3NlZCB0XG4gIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IHQucHVzaGJhY2sgKClcbiAgZWxzZSBpZiBJdmFyLmlzX2Z1bGwgdC5wdXNoYmFja1xuICB0aGVuIHQucHVzaGJhY2sgPC0gSXZhci5jcmVhdGUgKClcbjs7XG5cbmxldCBjbG9zZSB0ID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwiY2xvc2VcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgICBpZiBpc19lbXB0eSB0XG4gICAgdGhlbiAoXG4gICAgICBRdWV1ZS5pdGVyIHQuYmxvY2tlZF9yZWFkcyB+ZjpCbG9ja2VkX3JlYWQuZmlsbF93aXRoX2VvZjtcbiAgICAgIFF1ZXVlLmNsZWFyIHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQpXG47O1xuXG5sZXQgY2xvc2VfcmVhZCB0ID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIFwiY2xvc2VfcmVhZFwiIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgbm90IChpc19yZWFkX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5yZWFkX2Nsb3NlZCAoKTtcbiAgICBRdWV1ZS5pdGVyIHQuYmxvY2tlZF9mbHVzaGVzIH5mOihmdW4gZmx1c2ggLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGBSZWFkZXJfY2xvc2VkKTtcbiAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfZmx1c2hlcztcbiAgICBRdWV1ZS5jbGVhciB0LmJ1ZmZlcjtcbiAgICB0LnJlc2VydmVkX3NwYWNlIDwtIDA7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgKCogd2UganVzdCBjbGVhcmVkIHRoZSBidWZmZXIsIHNvIG1heSBuZWVkIHRvIGZpbGwgW3QucHVzaGJhY2tdICopXG4gICAgY2xvc2UgdClcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgdXBvbiAoZiB3KSAoZnVuICgpIC0+IGNsb3NlIHcpO1xuICByXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlciA/c2l6ZV9idWRnZXQgfmNsb3NlX29uX2V4Y2VwdGlvbiBmID1cbiAgaWYgbm90IGNsb3NlX29uX2V4Y2VwdGlvblxuICB0aGVuIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZlxuICBlbHNlIChcbiAgICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgICAgKGZ1biAoKSAtPiBmIHcpXG4gICAgICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgICAgIGNsb3NlIHc7XG4gICAgICAgICAgIHJldHVybiAoKSkpO1xuICAgIHIpXG47O1xuXG5sZXQgY3JlYXRlX3dyaXRlciA/c2l6ZV9idWRnZXQgZiA9XG4gIGxldCByLCB3ID0gY3JlYXRlID9zaXplX2J1ZGdldCAoKSBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChNb25pdG9yLnByb3RlY3RcbiAgICAgICAoZnVuICgpIC0+IGYgcilcbiAgICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgICBjbG9zZV9yZWFkIHI7XG4gICAgICAgICByZXR1cm4gKCkpKTtcbiAgd1xuOztcblxubGV0IHZhbHVlc193ZXJlX3JlYWQgdCBjb25zdW1lciA9XG4gIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnN0YXJ0O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hdGNoIFF1ZXVlLnBlZWsgdC5ibG9ja2VkX2ZsdXNoZXMgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmbHVzaCAtPlxuICAgICAgaWYgdC5udW1fdmFsdWVzX3JlYWQgPj0gZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGlnbm9yZSAoUXVldWUuZGVxdWV1ZV9leG4gdC5ibG9ja2VkX2ZsdXNoZXMgOiBCbG9ja2VkX2ZsdXNoLnQpO1xuICAgICAgICAobWF0Y2ggY29uc3VtZXIgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgT2tcbiAgICAgICAgIHwgU29tZSBjb25zdW1lciAtPlxuICAgICAgICAgICB1cG9uXG4gICAgICAgICAgICAgKENvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQgY29uc3VtZXIpXG4gICAgICAgICAgICAgKGZ1biBmbHVzaF9yZXN1bHQgLT4gQmxvY2tlZF9mbHVzaC5maWxsIGZsdXNoIGZsdXNoX3Jlc3VsdCkpO1xuICAgICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuXG4oKiBbY29uc3VtZV9hbGwgdF0gcmVhZHMgYWxsIHRoZSBlbGVtZW50cyBpbiBbdF0uICopXG5sZXQgY29uc3VtZV9hbGwgdCBjb25zdW1lciA9XG4gIGxldCByZXN1bHQgPSB0LmJ1ZmZlciBpblxuICB0LmJ1ZmZlciA8LSBRdWV1ZS5jcmVhdGUgKCk7XG4gIHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGE6KFF1ZXVlLmxlbmd0aCByZXN1bHQpO1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lX29uZSB0IGNvbnN1bWVyID1cbiAgYXNzZXJ0IChsZW5ndGggdCA+PSAxKTtcbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYnVmZmVyIGluXG4gIHVwZGF0ZV9udW1fdmFsdWVzX3JlYWQgdCB+ZGVsdGE6MTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyID1cbiAgYXNzZXJ0IChtYXhfcXVldWVfbGVuZ3RoID49IDApO1xuICBpZiBtYXhfcXVldWVfbGVuZ3RoID49IGxlbmd0aCB0XG4gIHRoZW4gY29uc3VtZV9hbGwgdCBjb25zdW1lclxuICBlbHNlIChcbiAgICB1cGRhdGVfbnVtX3ZhbHVlc19yZWFkIHQgfmRlbHRhOm1heF9xdWV1ZV9sZW5ndGg7XG4gICAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICAgIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgfmNhcGFjaXR5Om1heF9xdWV1ZV9sZW5ndGggKCkgaW5cbiAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6dC5idWZmZXIgfmRzdDpyZXN1bHQgfmxlbjptYXhfcXVldWVfbGVuZ3RoICgpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXRfc2l6ZV9idWRnZXQgdCBzaXplX2J1ZGdldCA9XG4gIGxldCBzaXplX2J1ZGdldCA9IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0IGluXG4gIHQuc2l6ZV9idWRnZXQgPC0gc2l6ZV9idWRnZXQ7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgcmVzZXJ2ZV9zcGFjZSB0IG4gPVxuICBpZiBuIDwgMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwicmVzZXJ2aW5nIG5lZ2F0aXZlIHNwYWNlXCIgKG4gOiBpbnQpXTtcbiAgbGV0IHJlc2VydmVkX3NwYWNlID0gdC5yZXNlcnZlZF9zcGFjZSArIG4gaW5cbiAgaWYgcmVzZXJ2ZWRfc3BhY2UgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zIFslbWVzc2FnZSBcIm92ZXJmbG93IHdoZW4gcmVzZXJ2aW5nIHNwYWNlXCIgKHQucmVzZXJ2ZWRfc3BhY2UgOiBpbnQpIChuIDogaW50KV07XG4gIHQucmVzZXJ2ZWRfc3BhY2UgPC0gcmVzZXJ2ZWRfc3BhY2U7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgZmlsbF9ibG9ja2VkX3JlYWRzIHQgPVxuICB3aGlsZSAobm90IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpKSAmJiBub3QgKGlzX2VtcHR5IHQpIGRvXG4gICAgbGV0IGJsb2NrZWRfcmVhZCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9yZWFkcyBpblxuICAgIGxldCBjb25zdW1lciA9IGJsb2NrZWRfcmVhZC5jb25zdW1lciBpblxuICAgIG1hdGNoIGJsb2NrZWRfcmVhZC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYE9rXG4gICAgfCBPbmUgaXZhciAtPiBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSlcbiAgICB8IEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpKVxuICBkb25lXG47O1xuXG5sZXQgZGVjcmVhc2VfcmVzZXJ2ZWRfc3BhY2UgdCBuID0gdC5yZXNlcnZlZF9zcGFjZSA8LSBJbnQubWF4IDAgKHQucmVzZXJ2ZWRfc3BhY2UgLSBuKVxuXG4oKiBjaGVja3MgYWxsIGludmFyaWFudHMsIGNhbGxzIGEgcGFzc2VkIGluIGYgdG8gaGFuZGxlIGEgd3JpdGUsIHRoZW4gdXBkYXRlcyByZWFkcyBhbmRcbiAgIHB1c2hiYWNrICopXG5sZXQgc3RhcnRfd3JpdGUgdCB+c2l6ZSA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcIndyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwid3JpdGUgdG8gY2xvc2VkIHBpcGVcIiB+cGlwZToodCA6IChfLCBfKSB0KV07XG4gIGRlY3JlYXNlX3Jlc2VydmVkX3NwYWNlIHQgc2l6ZVxuOztcblxubGV0IGZpbmlzaF93cml0ZSB0ID1cbiAgZmlsbF9ibG9ja2VkX3JlYWRzIHQ7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdCB+c2l6ZTooUXVldWUubGVuZ3RoIGZyb20pO1xuICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6ZnJvbSB+ZHN0OnQuYnVmZmVyICgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHRyYW5zZmVyX2luIHQgfmZyb20gPVxuICB0cmFuc2Zlcl9pbl93aXRob3V0X3B1c2hiYWNrIHQgfmZyb207XG4gIHB1c2hiYWNrIHRcbjs7XG5cbmxldCBjb3B5X2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQgfnNpemU6KFF1ZXVlLmxlbmd0aCBmcm9tKTtcbiAgUXVldWUuaXRlciBmcm9tIH5mOihmdW4geCAtPiBRdWV1ZS5lbnF1ZXVlIHQuYnVmZmVyIHgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxuKCogW3dyaXRlJ10gaXMgdXNlZCBpbnRlcm5hbGx5ICopXG5sZXQgd3JpdGUnIHQgcSA9IHRyYW5zZmVyX2luIHQgfmZyb206cVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlID1cbiAgc3RhcnRfd3JpdGUgdCB+c2l6ZToxO1xuICBRdWV1ZS5lbnF1ZXVlIHQuYnVmZmVyIHZhbHVlO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlIHQgdmFsdWUgPVxuICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgdmFsdWU7XG4gIHB1c2hiYWNrIHRcbjs7XG5cbmxldCB3cml0ZV93aGVuX3JlYWR5IHQgfmYgPVxuICBsZXQlbWFwICgpID0gcHVzaGJhY2sgdCBpblxuICBpZiBpc19jbG9zZWQgdCB0aGVuIGBDbG9zZWQgZWxzZSBgT2sgKGYgKGZ1biB4IC0+IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4KSlcbjs7XG5cbmxldCB3cml0ZV9pZl9vcGVuIHQgeCA9IGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGUgdCB4IGVsc2UgcmV0dXJuICgpXG5cbmxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gdCB4ID1cbiAgaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeFxuOztcblxubGV0IGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzID9jb25zdW1lciB0ID1cbiAgbWF0Y2ggY29uc3VtZXIgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNvbnN1bWVyIC0+XG4gICAgaWYgdC5pZCA8PiBDb25zdW1lci5waXBlX2lkIGNvbnN1bWVyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkF0dGVtcHQgdG8gdXNlIGNvbnN1bWVyIHdpdGggd3JvbmcgcGlwZVwiXG4gICAgICAgICAgICAoY29uc3VtZXIgOiBDb25zdW1lci50KVxuICAgICAgICAgICAgfnBpcGU6KHQgOiBfIFJlYWRlci50KV1cbjs7XG5cbmxldCBzdGFydF9yZWFkID9jb25zdW1lciB0IGxhYmVsID1cbiAgaWYgIXNob3dfZGVidWdfbWVzc2FnZXMgdGhlbiBlcHJpbnRzIGxhYmVsIHQgWyVzZXhwX29mOiAoXywgXykgdF07XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXJcbjs7XG5cbmxldCBnZW5fcmVhZF9ub3cgP2NvbnN1bWVyIHQgY29uc3VtZSA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRfbm93XCIgP2NvbnN1bWVyO1xuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gaWYgaXNfY2xvc2VkIHQgdGhlbiBgRW9mIGVsc2UgYE5vdGhpbmdfYXZhaWxhYmxlXG4gIGVsc2UgKFxuICAgIGFzc2VydCAoUXVldWUuaXNfZW1wdHkgdC5ibG9ja2VkX3JlYWRzKTtcbiAgICAoKiBmcm9tIFtpbnZhcmlhbnRdIGFuZCBbbm90IChpc19lbXB0eSB0KV0gKilcbiAgICBgT2sgKGNvbnN1bWUgdCBjb25zdW1lcikpXG47O1xuXG5sZXQgZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggPVxuICBtYXRjaCBtYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCBOb25lIC0+IEludC5tYXhfdmFsdWVcbiAgfCBTb21lIG1heF9xdWV1ZV9sZW5ndGggLT5cbiAgICBpZiBtYXhfcXVldWVfbGVuZ3RoIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibWF4X3F1ZXVlX2xlbmd0aCA8PSAwXCIgKG1heF9xdWV1ZV9sZW5ndGggOiBpbnQpXTtcbiAgICBtYXhfcXVldWVfbGVuZ3RoXG47O1xuXG5sZXQgcmVhZF9ub3cnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgKGZ1biB0IGNvbnN1bWVyIC0+IGNvbnN1bWUgdCB+bWF4X3F1ZXVlX2xlbmd0aCBjb25zdW1lcilcbjs7XG5cbmxldCByZWFkX25vdyA/Y29uc3VtZXIgdCA9IGdlbl9yZWFkX25vdyB0ID9jb25zdW1lciBjb25zdW1lX29uZVxubGV0IHBlZWsgdCA9IFF1ZXVlLnBlZWsgdC5idWZmZXJcblxubGV0IGNsZWFyIHQgPVxuICBtYXRjaCByZWFkX25vdycgdCB3aXRoXG4gIHwgYEVvZiB8IGBOb3RoaW5nX2F2YWlsYWJsZSB8IGBPayBfIC0+ICgpXG47O1xuXG5sZXQgcmVhZCcgP2NvbnN1bWVyID9tYXhfcXVldWVfbGVuZ3RoIHQgPVxuICBsZXQgbWF4X3F1ZXVlX2xlbmd0aCA9IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoIGluXG4gIHN0YXJ0X3JlYWQgdCBcInJlYWQnXCIgP2NvbnN1bWVyO1xuICBtYXRjaCByZWFkX25vdycgdCA/Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGggd2l0aFxuICB8IChgT2sgXyB8IGBFb2YpIGFzIHIgLT4gcmV0dXJuIHJcbiAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9yZWFkc1xuICAgICAgICAoQmxvY2tlZF9yZWFkLmNyZWF0ZSAoQXRfbW9zdCAobWF4X3F1ZXVlX2xlbmd0aCwgaXZhcikpIGNvbnN1bWVyKSlcbjs7XG5cbmxldCByZWFkID9jb25zdW1lciB0ID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZFwiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgaXNfY2xvc2VkIHRcbiAgICB0aGVuIHJldHVybiBgRW9mXG4gICAgZWxzZVxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKE9uZSBpdmFyKSkgY29uc3VtZXIpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgcmV0dXJuIChgT2sgKGNvbnN1bWVfb25lIHQgY29uc3VtZXIpKSlcbjs7XG5cbmxldCByZWFkX2V4biA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoJW1hcCByZWFkID9jb25zdW1lciB0IHdpdGhcbiAgfCBgT2sgdmFsdWUgLT4gdmFsdWVcbiAgfCBgRW9mIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5yZWFkX2V4bjogcmVjZWl2ZWQgRU9GXCJdXG47O1xuXG5sZXQgdmFsdWVzX2F2YWlsYWJsZSB0ID1cbiAgc3RhcnRfcmVhZCB0IFwidmFsdWVzX2F2YWlsYWJsZVwiO1xuICBpZiBub3QgKGlzX2VtcHR5IHQpXG4gIHRoZW4gcmV0dXJuIGBPa1xuICBlbHNlIGlmIGlzX2Nsb3NlZCB0XG4gIHRoZW4gcmV0dXJuIGBFb2ZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggUXVldWUubGFzdCB0LmJsb2NrZWRfcmVhZHMgd2l0aFxuICAgIHwgU29tZSB7IGNvbnN1bWVyID0gTm9uZTsgd2FudHMgPSBaZXJvIGl2YXIgfSAtPlxuICAgICAgKCogVGhpcyBjYXNlIGlzIGFuIG9wdGltaXphdGlvbiBmb3IgbXVsdGlwbGUgY2FsbHMgdG8gW3ZhbHVlc19hdmFpbGFibGVdIGluXG4gICAgICAgICBzZXF1ZW5jZS4gIEl0IGNhdXNlcyB0aGVtIHRvIGFsbCBzaGFyZSB0aGUgc2FtZSBpdmFyLCByYXRoZXIgdGhhbiBhbGxvY2F0ZVxuICAgICAgICAgYW4gaXZhciBwZXIgY2FsbC4gKilcbiAgICAgIEl2YXIucmVhZCBpdmFyXG4gICAgfCBfIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIFF1ZXVlLmVucXVldWUgdC5ibG9ja2VkX3JlYWRzIChCbG9ja2VkX3JlYWQuKGNyZWF0ZSAoWmVybyBpdmFyKSkgTm9uZSkpKVxuOztcblxubGV0IHJlYWRfY2hvaWNlIHQgPSBjaG9pY2UgKHZhbHVlc19hdmFpbGFibGUgdCkgKGZ1biAoXyA6IFsgYE9rIHwgYEVvZiBdKSAtPiByZWFkX25vdyB0KVxuXG5sZXQgcmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4biB0IGhlcmUgPVxuICBEZWZlcnJlZC5DaG9pY2UubWFwIChyZWFkX2Nob2ljZSB0KSB+ZjooZnVuY3Rpb25cbiAgICB8IChgT2sgXyB8IGBFb2YpIGFzIHggLT4geFxuICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiUGlwZS5yZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXhuOiBjaG9pY2Ugd2FzIGVuYWJsZWQgYnV0IHBpcGUgaXMgZW1wdHk7IFxcXG4gICAgICAgICAgIHRoaXMgaXMgbGlrZWx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uIHdpdGggb25lIG9yIG1vcmUgb3RoZXIgY29uc3VtZXJzXCJcbiAgICAgICAgICAgIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldKVxuOztcblxuKCogW3JlYWRfZXhhY3RseSB0IH5udW1fdmFsdWVzXSBsb29wcywgZ2V0dGluZyB5b3UgYWxsIFtudW1fdmFsdWVzXSBpdGVtcywgdXBcbiAgIHRvIEVPRi4gKilcbmxldCByZWFkX2V4YWN0bHkgP2NvbnN1bWVyIHQgfm51bV92YWx1ZXMgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX2V4YWN0bHlcIiA/Y29uc3VtZXI7XG4gIGlmIG51bV92YWx1ZXMgPD0gMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiUGlwZS5yZWFkX2V4YWN0bHkgZ290IG51bV92YWx1ZXMgPD0gMFwiIChudW1fdmFsdWVzIDogaW50KV07XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaCAtPlxuICAgIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IFF1ZXVlLmxlbmd0aCByZXN1bHQgaW5cbiAgICAgIGFzc2VydCAoYWxyZWFkeV9yZWFkIDw9IG51bV92YWx1ZXMpO1xuICAgICAgaWYgYWxyZWFkeV9yZWFkID0gbnVtX3ZhbHVlc1xuICAgICAgdGhlbiBJdmFyLmZpbGwgZmluaXNoIChgRXhhY3RseSByZXN1bHQpXG4gICAgICBlbHNlXG4gICAgICAgIHJlYWQnID9jb25zdW1lciB0IH5tYXhfcXVldWVfbGVuZ3RoOihudW1fdmFsdWVzIC0gYWxyZWFkeV9yZWFkKVxuICAgICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2ggKGlmIGFscmVhZHlfcmVhZCA9IDAgdGhlbiBgRW9mIGVsc2UgYEZld2VyIHJlc3VsdClcbiAgICAgICAgfCBgT2sgcSAtPlxuICAgICAgICAgIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpxIH5kc3Q6cmVzdWx0ICgpO1xuICAgICAgICAgIGxvb3AgKClcbiAgICBpblxuICAgIGxvb3AgKCkpXG47O1xuXG5sZXQgZG93bnN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW5cbiAgICBpZiBMaXN0LmlzX2VtcHR5IHQuY29uc3VtZXJzXG4gICAgdGhlbiByZXR1cm4gYE9rXG4gICAgZWxzZVxuICAgICAgRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuICAgICAgICAoTGlzdC5tYXAgdC5jb25zdW1lcnMgfmY6Q29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZClcbiAgZWxzZVxuICAgICgqIFt0XSBtaWdodCBiZSBjbG9zZWQuICBCdXQgdGhlIHJlYWQgZW5kIGNhbid0IGJlIGNsb3NlZCwgYmVjYXVzZSBpZiBpdCB3ZXJlLCB0aGVuXG4gICAgICAgW3RdIHdvdWxkIGJlIGVtcHR5LiAgSWYgdGhlIHdyaXRlIGVuZCBpcyBjbG9zZWQgYnV0IG5vdCB0aGUgcmVhZCBlbmQsIHRoZW4gd2Ugd2FudFxuICAgICAgIHRvIGVucXVldWUgYSBibG9ja2VkIGZsdXNoIGJlY2F1c2UgdGhlIGVucXVldWVkIHZhbHVlcyBtYXkgZ2V0IHJlYWQuICopXG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVhZHkgLT5cbiAgICAgIFF1ZXVlLmVucXVldWVcbiAgICAgICAgdC5ibG9ja2VkX2ZsdXNoZXNcbiAgICAgICAgeyBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkID0gdC5udW1fdmFsdWVzX3JlYWQgKyBsZW5ndGggdDsgcmVhZHkgfSlcbjs7XG5cbigqIEluIHByYWN0aWNlLCBhbG9uZyB3aXRoIFtMaW5rLmNyZWF0ZV0gYW5kIFthZGRfdXBzdHJlYW1fZmx1c2hlZF0sIFt1cHN0cmVhbV9mbHVzaGVkXVxuICAgdHJhdmVyc2VzIHRoZSBncmFwaCBvZiBsaW5rZWQgcGlwZXMgdXAgdG8gdGhlIGhlYWRzIGFuZCB0aGVuIGNhbGxzIFtkb3duc3RyZWFtX2ZsdXNoZWRdXG4gICBvbiB0aGVtLiAqKVxubGV0IHVwc3RyZWFtX2ZsdXNoZWQgdCA9XG4gIGlmIEJhZy5pc19lbXB0eSB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gIHRoZW4gZG93bnN0cmVhbV9mbHVzaGVkIHRcbiAgZWxzZVxuICAgIEJhZy50b19saXN0IHQudXBzdHJlYW1fZmx1c2hlZHNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGYgLT4gZiAoKSlcbiAgICB8PiBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG47O1xuXG5sZXQgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgdCB1cHN0cmVhbV9mbHVzaGVkID0gQmFnLmFkZCB0LnVwc3RyZWFtX2ZsdXNoZWRzIHVwc3RyZWFtX2ZsdXNoZWRcblxubGV0IGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQgPVxuICBsZXQgY29uc3VtZXIgPSBDb25zdW1lci5jcmVhdGUgfnBpcGVfaWQ6dC5pZCB+ZG93bnN0cmVhbV9mbHVzaGVkIGluXG4gIHQuY29uc3VtZXJzIDwtIGNvbnN1bWVyIDo6IHQuY29uc3VtZXJzO1xuICBjb25zdW1lclxuOztcblxuKCogQSBbTGluay50XSBsaW5rcyBmbHVzaGluZyBvZiB0d28gcGlwZXMgdG9nZXRoZXIuICopXG5tb2R1bGUgTGluayA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDogdXBzdHJlYW06KF8sIF8pIHBpcGUgLT4gZG93bnN0cmVhbTooXywgXykgcGlwZSAtPiB0XG4gIHZhbCBjb25zdW1lciA6IHQgLT4gQ29uc3VtZXIudFxuXG4gICgqIFt1bmxpbmtfdXBzdHJlYW1dIHJlbW92ZXMgZG93bnN0cmVhbSdzIHJlZmVyZW5jZSB0byB1cHN0cmVhbS4gKilcblxuICB2YWwgdW5saW5rX3Vwc3RyZWFtIDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB1bnBhY2tlZCA9XG4gICAgeyBkb3duc3RyZWFtIDogKCdhLCAnYikgdFxuICAgIDsgY29uc3VtZXIgOiBDb25zdW1lci50XG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0IDogKHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KSBCYWcuRWx0LnRcbiAgICB9XG5cbiAgdHlwZSB0ID0gVCA6IChfLCBfKSB1bnBhY2tlZCAtPiB0XG5cbiAgbGV0IGNvbnN1bWVyIChUIHQpID0gdC5jb25zdW1lclxuXG4gIGxldCBjcmVhdGUgfnVwc3RyZWFtIH5kb3duc3RyZWFtID1cbiAgICBUXG4gICAgICB7IGRvd25zdHJlYW1cbiAgICAgIDsgY29uc3VtZXIgPVxuICAgICAgICAgIGFkZF9jb25zdW1lciB1cHN0cmVhbSB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgIGRvd25zdHJlYW1fZmx1c2hlZCBkb3duc3RyZWFtKVxuICAgICAgOyB1cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0ID1cbiAgICAgICAgICBhZGRfdXBzdHJlYW1fZmx1c2hlZCBkb3duc3RyZWFtIChmdW4gKCkgLT4gdXBzdHJlYW1fZmx1c2hlZCB1cHN0cmVhbSlcbiAgICAgIH1cbiAgOztcblxuICBsZXQgdW5saW5rX3Vwc3RyZWFtIChUIHQpID1cbiAgICBCYWcucmVtb3ZlIHQuZG93bnN0cmVhbS51cHN0cmVhbV9mbHVzaGVkcyB0LnVwc3RyZWFtX2ZsdXNoZWRzX2JhZ19lbHRcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmx1c2hlZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ29uc3VtZXIgb2YgQ29uc3VtZXIudFxuICAgIHwgV2hlbl92YWx1ZV9wcm9jZXNzZWRcbiAgICB8IFdoZW5fdmFsdWVfcmVhZFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBmb2xkX2dlblxuICAgICAgKHJlYWRfbm93IDogP2NvbnN1bWVyOkNvbnN1bWVyLnQgLT4gXyBSZWFkZXIudCAtPiBfKVxuICAgICAgPyhmbHVzaGVkID0gRmx1c2hlZC5XaGVuX3ZhbHVlX3JlYWQpXG4gICAgICB0XG4gICAgICB+aW5pdFxuICAgICAgfmZcbiAgPVxuICBsZXQgY29uc3VtZXIgPVxuICAgIG1hdGNoIGZsdXNoZWQgd2l0aFxuICAgIHwgV2hlbl92YWx1ZV9yZWFkIC0+IE5vbmVcbiAgICB8IENvbnN1bWVyIGNvbnN1bWVyIC0+IFNvbWUgY29uc3VtZXJcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkIC0+XG4gICAgICAoKiBUaGUgZmFjdCB0aGF0IFwibm8gY29uc3VtZXJcIiBiZWhhdmVzIGRpZmZlcmVudCBmcm9tIFwidHJpdmlhbCBjb25zdW1lclwiIGlzIHdlaXJkLFxuICAgICAgICAgYnV0IHRoYXQncyBob3cgdGhlIGNvbnN1bWVyIG1hY2hpbmVyeSB3b3Jrcy4gKilcbiAgICAgIFNvbWUgKGFkZF9jb25zdW1lciB0IH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPiByZXR1cm4gYE9rKSlcbiAgaW5cbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICAoKiBXZSBkbyBbdmFsdWVzX2F2YWlsYWJsZSB0ID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LlxuICAgICAgIFNlZSBbMV0gZm9yIG1vcmUgZGV0YWlscy4gKilcbiAgICAoKiBbMV0gRm9yIG5ldyBlbXB0eSBwaXBlcyBjcmVhdGVkIGF0IHRvcC1sZXZlbCB3ZSB3YW50IHRvIGF2b2lkIGltbWVkaWF0ZWx5XG4gICAgICAgc2NoZWR1bGluZyBhIGpvYiBvbiB0aGUgc2NoZWR1bGVyIChzZWUgW1NjaGVkdWxlci5yYWlzZV9pZl9hbnlfam9ic193ZXJlX3NjaGVkdWxlZF0pLlxuICAgICAgIEp1c3QgW3JldHVybiAoKSA+Pj5dIGRvZXNuJ3Qgd29yazogW3JldHVybiAoKV0gY3JlYXRlcyBhIGZ1bGwgaXZhciB0aGF0IGNhdXNlc1xuICAgICAgIFs+Pj5dIHRvIHNjaGVkdWxlIGEgam9iLiAqKVxuICAgIHZhbHVlc19hdmFpbGFibGUgdFxuICAgID4+PiBmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT5cbiAgICBsZXQgcmVjIGxvb3AgYiA9XG4gICAgICBtYXRjaCByZWFkX25vdyB0ID9jb25zdW1lciB3aXRoXG4gICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaGVkIGJcbiAgICAgIHwgYE9rIHYgLT4gZiBiIHYgY29udGludWVcbiAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHZhbHVlc19hdmFpbGFibGUgdCA+Pj4gZnVuIF8gLT4gbG9vcCBiXG4gICAgYW5kIGNvbnRpbnVlIGIgPVxuICAgICAgT3B0aW9uLml0ZXIgY29uc3VtZXIgfmY6Q29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbTtcbiAgICAgIGxvb3AgYlxuICAgIGluXG4gICAgbG9vcCBpbml0KVxuOztcblxubGV0IGZvbGQnID9mbHVzaGVkID9tYXhfcXVldWVfbGVuZ3RoIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSA/Zmx1c2hlZCB0IH5pbml0IH5mOihmdW4gYiBxIGxvb3AgLT5cbiAgICBmIGIgcSA+Pj4gbG9vcClcbjs7XG5cbmxldCBmb2xkID9mbHVzaGVkIHQgfmluaXQgfmYgPVxuICBmb2xkX2dlbiByZWFkX25vdyA/Zmx1c2hlZCB0IH5pbml0IH5mOihmdW4gYiBhIGxvb3AgLT4gZiBiIGEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZF93aXRob3V0X3B1c2hiYWNrID9jb25zdW1lciB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW5cbiAgICByZWFkX25vd1xuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYiBhIGxvb3AgLT4gbG9vcCAoZiBiIGEpKVxuICAgID9mbHVzaGVkOlxuICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgIHwgU29tZSBjIC0+IFNvbWUgKENvbnN1bWVyIGMpKVxuOztcblxubGV0IHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSkgZiBhID1cbiAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gIHRoZW4gZiBhXG4gIGVsc2UgKFxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIChmdW4gKCkgLT4gZiBhKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSAoTW9uaXRvci5leHRyYWN0X2V4biBleG4pKVxuOztcblxubGV0IGl0ZXInID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5mID1cbiAgZm9sZCcgP21heF9xdWV1ZV9sZW5ndGggP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHEgLT5cbiAgICB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/Y29udGludWVfb25fZXJyb3IgZiBxKVxuOztcblxubGV0IGl0ZXIgP2NvbnRpbnVlX29uX2Vycm9yID9mbHVzaGVkIHQgfmYgPVxuICBmb2xkX2dlbiByZWFkX25vdyA/Zmx1c2hlZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSBsb29wIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgYSA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG47O1xuXG4oKiBbaXRlcl93aXRob3V0X3B1c2hiYWNrXSBpcyBhIGNvbW1vbiBjYXNlLCBzbyB3ZSBpbXBsZW1lbnQgaXQgaW4gYW4gb3B0aW1pemVkIG1hbm5lcixcbiAgIHJhdGhlciB0aGFuIHZpYSBbaXRlcl0uICBUaGUgaW1wbGVtZW50YXRpb24gcmVhZHMgb25seSBvbmUgZWxlbWVudCBhdCBhIHRpbWUsIHNvIHRoYXRcbiAgIGlmIFtmXSBjbG9zZXMgW3RdIG9yIHJhaXNlcywgbm8gbW9yZSBlbGVtZW50cyB3aWxsIGJlIHJlYWQuICopXG5sZXQgaXRlcl93aXRob3V0X3B1c2hiYWNrXG4gICAgICA/Y29uc3VtZXJcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSBmYWxzZSlcbiAgICAgID9tYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gICAgICB0XG4gICAgICB+ZlxuICA9XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyO1xuICBsZXQgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA9XG4gICAgbWF0Y2ggbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiB3aXRoXG4gICAgfCBOb25lIC0+IEludC5tYXhfdmFsdWVcbiAgICB8IFNvbWUgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiAtPlxuICAgICAgaWYgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA8PSAwXG4gICAgICB0aGVuXG4gICAgICAgIHJhaXNlX3NcbiAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgIFwiaXRlcl93aXRob3V0X3B1c2hiYWNrIGdvdCBub24tcG9zaXRpdmUgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlwiXG4gICAgICAgICAgICAgIChtYXhfaXRlcmF0aW9uc19wZXJfam9iIDogaW50KV07XG4gICAgICBtYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gIGluXG4gIGxldCBmID1cbiAgICBpZiBub3QgY29udGludWVfb25fZXJyb3JcbiAgICB0aGVuIGZcbiAgICBlbHNlXG4gICAgICBmdW4gYSAtPlxuICAgICAgICB0cnkgZiBhIHdpdGhcbiAgICAgICAgfCBleG4gLT4gTW9uaXRvci5zZW5kX2V4biAoTW9uaXRvci5jdXJyZW50ICgpKSBleG5cbiAgaW5cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICAoKiBXZSBkbyBbdmFsdWVzX2F2YWlsYWJsZSB0ID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkIGFzeW5jaHJvbm91c2x5LlxuICAgICAgIFNlZSBbMV0gZm9yIG1vcmUgZGV0YWlscy4gKilcbiAgICB2YWx1ZXNfYXZhaWxhYmxlIHRcbiAgICA+Pj4gZnVuIChfIDogWyBgT2sgfCBgRW9mIF0pIC0+XG4gICAgbGV0IHJlYyBzdGFydCAoKSA9IGxvb3AgfnJlbWFpbmluZzptYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gICAgYW5kIGxvb3AgfnJlbWFpbmluZyA9XG4gICAgICBpZiByZW1haW5pbmcgPSAwXG4gICAgICB0aGVuIHJldHVybiAoKSA+Pj4gZnVuICgpIC0+IHN0YXJ0ICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaGVkICgpXG4gICAgICAgIHwgYE9rIGEgLT5cbiAgICAgICAgICBmIGE7XG4gICAgICAgICAgbG9vcCB+cmVtYWluaW5nOihyZW1haW5pbmcgLSAxKVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IHN0YXJ0ICgpKVxuICAgIGluXG4gICAgc3RhcnQgKCkpXG47O1xuXG5sZXQgZHJhaW4gdCA9IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbmxldCBkcmFpbl9hbmRfY291bnQgdCA9IGZvbGQnIHQgfmluaXQ6MCB+ZjooZnVuIHN1bSBxIC0+IHJldHVybiAoc3VtICsgUXVldWUubGVuZ3RoIHEpKVxuXG5sZXQgcmVhZF9hbGwgaW5wdXQgPVxuICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCVtYXAgKCkgPVxuICAgIGl0ZXInIGlucHV0IH5mOihmdW4gcSAtPlxuICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIHJlc3VsdFxuOztcblxubGV0IHRvX2xpc3QgciA9IHJlYWRfYWxsIHIgPj58IFF1ZXVlLnRvX2xpc3RcblxubGV0IHRvX3N0cmVhbV9kZXByZWNhdGVkIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayB0IH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpXG4gICAgPj4+IGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIG9mIFtvZl9zdHJlYW1fZGVwcmVjYXRlZF0gZG9lcyBhcyBtdWNoIGJhdGNoaW5nIGFzIHBvc3NpYmxlLiAgSXRcbiAgIGdyYWJzIGFzIG1hbnkgaXRlbXMgYXMgYXJlIGF2YWlsYWJsZSBpbnRvIGFuIGludGVybmFsIHF1ZXVlLiAgT25jZSBpdCBoYXMgZ3JhYmJlZFxuICAgZXZlcnl0aGluZywgaXQgd3JpdGVzIGl0IHRvIHRoZSBwaXBlIGFuZCB0aGVuIGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgbmV4dCBlbGVtZW50IGZyb21cbiAgIHRoZSBzdHJlYW0uXG5cbiAgIFRoZXJlJ3Mgbm8gcG9zc2liaWxpdHkgdGhhdCB3ZSdsbCBzdGFydmUgdGhlIHBpcGUgcmVhZGluZyBhbiBlbmRsZXNzIHN0cmVhbSwganVzdFxuICAgYWNjdW11bGF0aW5nIHRoZSBlbGVtZW50cyBpbnRvIG91ciBwcml2YXRlIHF1ZXVlIGZvcmV2ZXIgd2l0aG91dCBldmVyIHdyaXRpbmcgdGhlbVxuICAgZG93bnN0cmVhbSB0byB0aGUgcGlwZS4gIFdoeT8gYmVjYXVzZSB3aGlsZSB3ZSdyZSBydW5uaW5nLCB0aGUgc3RyZWFtLXByb2R1Y2VyICppc24ndCpcbiAgIHJ1bm5pbmcgLS0gdGhlcmUgYXJlIG5vIEFzeW5jIGJsb2NrIHBvaW50cyBpbiB0aGUgcXVldWUtYWNjdW11bGF0b3IgbG9vcC4gIFNvIHRoZVxuICAgcXVldWUtYWNjdW11bGF0b3IgbG9vcCB3aWxsIGV2ZW50dWFsbHkgY2F0Y2ggdXAgdG8gdGhlIGN1cnJlbnQgc3RyZWFtIHRhaWwsIGF0IHdoaWNoXG4gICBwb2ludCB3ZSdsbCBkbyB0aGUgcGlwZS13cml0ZSBhbmQgdGhlbiBibG9jayBvbiB0aGUgc3RyZWFtLi4uIHRodXMgZ2l2aW5nIHRoZVxuICAgc3RyZWFtLXByb2R1Y2VyIGEgY2hhbmNlIHRvIG1ha2UgbW9yZSBlbGVtZW50cy5cblxuICAgT25lIGNhbid0IGltcGxlbWVudCBbb2Zfc3RyZWFtXSB1c2luZyBbU3RyZWFtLml0ZXJdIG9yIFtTdHJlYW0uaXRlciddIGJlY2F1c2UgeW91XG4gICBuZWVkIHRvIGJlIGFibGUgdG8gc3RvcCBlYXJseSB3aGVuIHRoZSBjb25zdW1lciBjbG9zZXMgdGhlIHBpcGUuICBBbHNvLCB1c2luZyBlaXRoZXJcbiAgIG9mIHRob3NlIHdvdWxkIGVudGFpbCBzaWduaWZpY2FudGx5IG1vcmUgZGVmZXJyZWQgb3ZlcmhlYWQsIHdoZXJlYXMgdGhlIGJlbG93XG4gICBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgZGVmZXJyZWQgb25seSB3aGVuIGl0IG5lZWRzIHRvIHdhaXQgZm9yIGRhdGEgZnJvbSB0aGUgc3RyZWFtLiAqKVxubGV0IG9mX3N0cmVhbV9kZXByZWNhdGVkIHMgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgdHJhbnNmZXIgKCkgPVxuICAgIGlmIG5vdCAoUXVldWUuaXNfZW1wdHkgcSlcbiAgICB0aGVuXG4gICAgICAoKiBDYW4gbm90IHB1c2hiYWNrIG9uIHRoZSBzdHJlYW0sIHNvIGlnbm9yZSB0aGUgcHVzaGJhY2sgb24gdGhlIHBpcGUuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAod3JpdGUnIHcgcSlcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIGFzc2VydCAobm90IChpc19jbG9zZWQgdykpO1xuICAgIGxldCBuZXh0X2RlZmVycmVkID0gU3RyZWFtLm5leHQgcyBpblxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgbmV4dF9kZWZlcnJlZCB3aXRoXG4gICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgdXBvbiBuZXh0X2RlZmVycmVkIGNoZWNrX2Nsb3NlZF9sb29wX25leHRcbiAgYW5kIGNoZWNrX2Nsb3NlZF9sb29wX25leHQgbmV4dCA9IGlmIG5vdCAoaXNfY2xvc2VkIHcpIHRoZW4gbG9vcF9uZXh0IG5leHRcbiAgYW5kIGxvb3BfbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgY2xvc2Ugd1xuICAgIHwgQ29ucyAoeCwgcykgLT5cbiAgICAgIFF1ZXVlLmVucXVldWUgcSB4O1xuICAgICAgbG9vcCBzXG4gIGluXG4gIGxvb3AgcztcbiAgclxuOztcblxubGV0IHRyYW5zZmVyX2dlblxuICAgICAgKHJlYWRfbm93IDogP2NvbnN1bWVyOkNvbnN1bWVyLnQgLT4gXyBSZWFkZXIudCAtPiBfKVxuICAgICAgd3JpdGVcbiAgICAgIGlucHV0XG4gICAgICBvdXRwdXRcbiAgICAgIH5mXG4gID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudFxuICB0aGVuIChcbiAgICBpbnZhcmlhbnQgaW5wdXQ7XG4gICAgaW52YXJpYW50IG91dHB1dCk7XG4gIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0IH5kb3duc3RyZWFtOm91dHB1dCBpblxuICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgKCogV2hlbiB3ZSdyZSBkb25lIHdpdGggW2lucHV0XSwgd2UgdW5saW5rIHRvIHJlbW92ZSBwb2ludGVycyBmcm9tXG4gICAgIFtvdXRwdXRdIHRvIFtpbnB1dF0sIHdoaWNoIHdvdWxkIGNhdXNlIGEgc3BhY2UgbGVhayBpZiB3ZSBoYWQgc2luZ2xlIGxvbmctbGl2ZWRcbiAgICAgb3V0cHV0IGludG8gd2hpY2ggd2UgdHJhbnNmZXIgbG90cyBvZiBzaG9ydC1saXZlZCBpbnB1dHMuICopXG4gIGxldCB1bmxpbmsgKCkgPSBMaW5rLnVubGlua191cHN0cmVhbSBsaW5rIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCBpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKSA9XG4gICAgICBjaG9vc2UgWyBjaG9pY2UgKHZhbHVlc19hdmFpbGFibGUgaW5wdXQpIGlnbm9yZTsgY2hvaWNlIChjbG9zZWQgb3V0cHV0KSBpZ25vcmUgXVxuICAgIGluXG4gICAgKCogV2UgZG8gW2lucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpID4+Pl0gdG8gZW5zdXJlIHRoYXQgW2ZdIGlzIG9ubHkgY2FsbGVkXG4gICAgICAgYXN5bmNocm9ub3VzbHkuIFNlZSBbMV0gZm9yIG1vcmUgZGV0YWlscy4gKilcbiAgICBpbnB1dF9hdmFpbGFibGVfb3Jfb3V0cHV0X2Nsb3NlZCAoKVxuICAgID4+PiBmdW4gKCkgLT5cbiAgICBsZXQgb3V0cHV0X2Nsb3NlZCAoKSA9XG4gICAgICBjbG9zZV9yZWFkIGlucHV0O1xuICAgICAgdW5saW5rICgpO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGlmIGlzX2Nsb3NlZCBvdXRwdXRcbiAgICAgIHRoZW4gb3V0cHV0X2Nsb3NlZCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IH5jb25zdW1lciB3aXRoXG4gICAgICAgIHwgYEVvZiAtPlxuICAgICAgICAgIHVubGluayAoKTtcbiAgICAgICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICAgIHwgYE9rIHggLT4gZiB4IGNvbnRpbnVlXG4gICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IGlucHV0X2F2YWlsYWJsZV9vcl9vdXRwdXRfY2xvc2VkICgpID4+PiBmdW4gKCkgLT4gbG9vcCAoKSlcbiAgICBhbmQgY29udGludWUgeSA9XG4gICAgICBpZiBpc19jbG9zZWQgb3V0cHV0XG4gICAgICB0aGVuIG91dHB1dF9jbG9zZWQgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcHVzaGJhY2sgPSB3cml0ZSBvdXRwdXQgeSBpblxuICAgICAgICBDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtIGNvbnN1bWVyO1xuICAgICAgICBwdXNoYmFjayA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IHRyYW5zZmVyJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgfmYgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBmIHEgPj4+IGspXG47O1xuXG5sZXQgdHJhbnNmZXIgaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIHJlYWRfbm93IHdyaXRlIGlucHV0IG91dHB1dCB+ZjooZnVuIGEgayAtPiBrIChmIGEpKVxuOztcblxubGV0IHRyYW5zZmVyX2lkID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IG91dHB1dCA9XG4gIHRyYW5zZmVyX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgb3V0cHV0IH5mOihmdW4gcSBrIC0+IGsgcSlcbjs7XG5cbmxldCBtYXBfZ2VuIHJlYWQgd3JpdGUgaW5wdXQgfmYgPVxuICBsZXQgaW5mbyA9IE9wdGlvbi5tYXAgaW5wdXQuaW5mbyB+ZjooZnVuIGluZm8gLT4gWyVzZXhwIE1hcHBlZCAoaW5mbyA6IFNleHAudCldKSBpblxuICBsZXQgcmVzdWx0LCBvdXRwdXQgPSBjcmVhdGUgP2luZm8gKCkgaW5cbiAgdXBvbiAodHJhbnNmZXJfZ2VuIHJlYWQgd3JpdGUgaW5wdXQgb3V0cHV0IH5mKSAoZnVuICgpIC0+IGNsb3NlIG91dHB1dCk7XG4gIHJlc3VsdFxuOztcblxubGV0IG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmYgPVxuICBtYXBfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCB+ZjooZnVuIHEgayAtPiBmIHEgPj4+IGspXG47O1xuXG5sZXQgbWFwIGlucHV0IH5mID0gbWFwX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCB+ZjooZnVuIGEgayAtPiBrIChmIGEpKVxuXG5sZXQgY29uY2F0X21hcF9saXN0ID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT5cbiAgICBrIChRdWV1ZS5jb25jYXRfbWFwIHEgfmYpKVxuOztcblxubGV0IGZpbHRlcl9tYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHEgLT5cbiAgICBEZWZlcnJlZC5RdWV1ZS5maWx0ZXJfbWFwIH5ob3c6YFNlcXVlbnRpYWwgcSB+Zilcbjs7XG5cbmxldCBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT5cbiAgICBrIChRdWV1ZS5maWx0ZXJfbWFwIHEgfmY6KGZ1biB4IC0+IGlmIGlzX3JlYWRfY2xvc2VkIGlucHV0IHRoZW4gTm9uZSBlbHNlIGYgeCkpKVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQlbWFwIGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mOihmdW4gYWNjdW0gYSAtPlxuICAgIGxldCBhY2N1bSwgYiA9IGYgYWNjdW0gYSBpblxuICAgIGFjY3VtLCBTb21lIGIpXG47O1xuXG5sZXQgZmlsdGVyIGlucHV0IH5mID0gZmlsdGVyX21hcCBpbnB1dCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxubGV0IG9mX3F1ZXVlX2ludGVybmFsIHF1ZXVlID1cbiAgbGV0IHQgPSBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0OjAgfmluZm86Tm9uZSB+aW5pdGlhbF9idWZmZXI6cXVldWUgaW5cbiAgSXZhci5maWxsIHQuY2xvc2VkICgpO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgdFxuOztcblxubGV0IG9mX3F1ZXVlIHF1ZXVlID0gb2ZfcXVldWVfaW50ZXJuYWwgKFF1ZXVlLmNvcHkgcXVldWUpXG5sZXQgb2ZfbGlzdCBsID0gb2ZfcXVldWVfaW50ZXJuYWwgKFF1ZXVlLm9mX2xpc3QgbClcbmxldCBlbXB0eSAoKSA9IG9mX2xpc3QgW11cblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHJlYWRlciwgd3JpdGVyID0gY3JlYXRlICgpIGluXG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIHg7XG4gIGNsb3NlIHdyaXRlcjtcbiAgcmVhZGVyXG47O1xuXG5sZXQgdW5mb2xkIH5pbml0OnMgfmYgPVxuICAoKiBUbyBnZXQgc29tZSBiYXRjaGluZywgd2UgcnVuIHRoZSBjb250aW51YXRpb24gaW1tZWRpYXRlbHkgaWYgdGhlIGRlZmVycmVkIGlzXG4gICAgIGRldGVybWluZWQuICBIb3dldmVyLCB3ZSBhbHdheXMgY2hlY2sgZm9yIHB1c2hiYWNrLiAgQmVjYXVzZSBzaXplIGJ1ZGdldCBjYW4ndCBiZVxuICAgICBpbmZpbml0ZSwgdGhlIGJlbG93IGxvb3AgaXMgZ3VhcmFudGVlZCB0byBldmVudHVhbGx5IHlpZWxkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gIGxldCAoID4+PX4gKSBkIGYgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgfCBOb25lIC0+IGQgPj49IGZcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgZiBzXG4gICAgICA+Pj1+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuICgpXG4gICAgICB8IFNvbWUgKGEsIHMpIC0+XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgdGhlbiByZXR1cm4gKCkgZWxzZSB3cml0ZSB3cml0ZXIgYSA+Pj1+IGZ1biAoKSAtPiBsb29wIHNcbiAgICBpblxuICAgIGxvb3Agcylcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgZW5xdWV1ZV9uIHNlcXVlbmNlIGkgPVxuICAgICAgaWYgaSA8PSAwXG4gICAgICB0aGVuIHNlcXVlbmNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzZXF1ZW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZXF1ZW5jZVxuICAgICAgICB8IFNvbWUgKGEsIHNlcXVlbmNlKSAtPlxuICAgICAgICAgIGRlY3JlYXNlX3Jlc2VydmVkX3NwYWNlIHdyaXRlciAxO1xuICAgICAgICAgIFF1ZXVlLmVucXVldWUgd3JpdGVyLmJ1ZmZlciBhO1xuICAgICAgICAgIGVucXVldWVfbiBzZXF1ZW5jZSAoaSAtIDEpKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHNlcXVlbmNlID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgfHwgU2VxdWVuY2UuaXNfZW1wdHkgc2VxdWVuY2VcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgKCogW3NpemU6MF0gaGVyZSBhcyB3ZSBkb24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzZXF1ZW5jZSBzdGF0aWNhbGx5LiBXZSdsbFxuICAgICAgICAgICBjYWxsIFtkZWNyZWFzZV9yZXNlcnZlZF9zcGFjZV0gYXMgd2UgZ28uXG4gICAgICAgICAgIChhbHRob3VnaCByZWFsaXN0aWNhbGx5LCBpdCdzIGltcG9zc2libGUgZm9yIHRoZSB1c2VyIHRvIHJlc2VydmUgc3BhY2UgaW5cbiAgICAgICAgICAgdGhpcyBwaXBlIGJlY2F1c2UgeW91IG5lZWQgYSBwaXBlIHdyaXRlciBmb3IgdGhhdCwgYnV0IFtvZl9zZXF1ZW5jZV0gcmV0dXJuc1xuICAgICAgICAgICBhIHJlYWRlcikgKilcbiAgICAgICAgc3RhcnRfd3JpdGUgd3JpdGVyIH5zaXplOjA7XG4gICAgICAgIGxldCBzZXF1ZW5jZSA9IGVucXVldWVfbiBzZXF1ZW5jZSAoMSArIHdyaXRlci5zaXplX2J1ZGdldCAtIGxlbmd0aCB3cml0ZXIpIGluXG4gICAgICAgIGZpbmlzaF93cml0ZSB3cml0ZXI7XG4gICAgICAgIGxldCViaW5kICgpID0gcHVzaGJhY2sgd3JpdGVyIGluXG4gICAgICAgIGxvb3Agc2VxdWVuY2UpXG4gICAgaW5cbiAgICBsb29wIHNlcXVlbmNlKVxuOztcblxudHlwZSAnYSB0b19zZXF1ZW5jZV9lbHQgPVxuICB8IFZhbHVlIG9mICdhXG4gIHwgV2FpdF9mb3IgOiBfIERlZmVycmVkLnQgLT4gXyB0b19zZXF1ZW5jZV9lbHRcblxubGV0IHRvX3NlcXVlbmNlIHQgPVxuICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6KCkgfmY6KGZ1biAoKSAtPlxuICAgIG1hdGNoIHJlYWRfbm93IHQgd2l0aFxuICAgIHwgYEVvZiAtPiBOb25lXG4gICAgfCBgT2sgYSAtPiBTb21lIChWYWx1ZSBhLCAoKSlcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBTb21lIChXYWl0X2ZvciAodmFsdWVzX2F2YWlsYWJsZSB0KSwgKCkpKVxuOztcblxubGV0IGludGVybGVhdmVfcGlwZSBpbnB1dHMgPVxuICBsZXQgb3V0cHV0LCBvdXRwdXRfd3JpdGVyID0gY3JlYXRlIH5pbmZvOlslc2V4cCBcIlBpcGUuaW50ZXJsZWF2ZVwiXSAoKSBpblxuICAoKiBXZSBrZWVwIGEgcmVmZXJlbmNlIGNvdW50IG9mIGFsbCB0aGUgcGlwZXMgdGhhdCBbaW50ZXJsZWF2ZV9waXBlXSBpcyBtYW5hZ2luZztcbiAgICAgW2lucHV0c10gY291bnRzIGFzIG9uZS4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBkcm9wcyB0byB6ZXJvLCB3ZSBrbm93IHRoYXQgYWxsXG4gICAgIHBpcGVzIGFyZSBjbG9zZWQgYW5kIHdlIGNhbiBjbG9zZSBbb3V0cHV0X3dyaXRlcl0uICopXG4gIGxldCBudW1fcGlwZXNfcmVtYWluaW5nID0gcmVmIDEgaW5cbiAgbGV0IGRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyAoKSA9XG4gICAgZGVjciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgIGlmICFudW1fcGlwZXNfcmVtYWluaW5nID0gMCB0aGVuIGNsb3NlIG91dHB1dF93cml0ZXJcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0JW1hcCAoKSA9XG4gICAgICAgaXRlcl93aXRob3V0X3B1c2hiYWNrIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgICBpbmNyIG51bV9waXBlc19yZW1haW5pbmc7XG4gICAgICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAgICAobGV0JW1hcCAoKSA9IHRyYW5zZmVyX2lkIGlucHV0IG91dHB1dF93cml0ZXIgaW5cbiAgICAgICAgICAgIGRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyAoKSkpXG4gICAgIGluXG4gICAgIGRlY3JfbnVtX3BpcGVzX3JlbWFpbmluZyAoKSk7XG4gICgqIGZvciBbaW5wdXRzXSAqKVxuICBvdXRwdXRcbjs7XG5cbmxldCBpbnRlcmxlYXZlIGlucHV0cyA9XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBMaXN0Lml0ZXIgaW5wdXRzIH5mOmludmFyaWFudDtcbiAgaW50ZXJsZWF2ZV9waXBlIChvZl9saXN0IGlucHV0cylcbjs7XG5cbmxldCBtZXJnZSBpbnB1dHMgfmNvbXBhcmUgPVxuICBtYXRjaCBpbnB1dHMgd2l0aFxuICB8IFtdIC0+IGVtcHR5ICgpXG4gIHwgWyBpbnB1dCBdIC0+IGlucHV0XG4gIHwgaW5wdXRzIC0+XG4gICAgbGV0IG1vZHVsZSBIZWFwID0gUGFpcmluZ19oZWFwIGluXG4gICAgbGV0IHIsIHcgPSBjcmVhdGUgKCkgaW5cbiAgICB1cG9uIChjbG9zZWQgdykgKGZ1biAoKSAtPiBMaXN0Lml0ZXIgaW5wdXRzIH5mOmNsb3NlX3JlYWQpO1xuICAgIGxldCBoZWFwID0gSGVhcC5jcmVhdGUgfmNtcDooZnVuIChhMSwgXykgKGEyLCBfKSAtPiBjb21wYXJlIGExIGEyKSAoKSBpblxuICAgIGxldCBoYW5kbGVfcmVhZCBpbnB1dCBlb2Zfb3Jfb2sgPVxuICAgICAgbWF0Y2ggZW9mX29yX29rIHdpdGhcbiAgICAgIHwgYEVvZiAtPiAoKVxuICAgICAgfCBgT2sgdiAtPiBIZWFwLmFkZCBoZWFwICh2LCBpbnB1dClcbiAgICBpblxuICAgIGxldCByZWMgcG9wX2hlYXBfYW5kX2xvb3AgKCkgPVxuICAgICAgKCogQXQgdGhpcyBwb2ludCwgYWxsIGlucHV0cyBub3QgYXQgRW9mIG9jY3VyIGluIFtoZWFwXSBleGFjdGx5IG9uY2UsIHNvIHdlIGtub3dcbiAgICAgICAgIHdoYXQgdGhlIG5leHQgb3V0cHV0IGVsZW1lbnQgaXMuICBbcG9wX2hlYXBfYW5kX2xvb3BdIHJlcGVhdGVkbHkgdGFrZXMgZWxlbWVudHNcbiAgICAgICAgIGZyb20gdGhlIGlucHV0cyBhcyBsb25nIGFzIGl0IGhhcyBvbmUgZnJvbSBlYWNoIGlucHV0LiAgVGhpcyBpcyBkb25lXG4gICAgICAgICBzeW5jaHJvbm91c2x5IHRvIGF2b2lkIHRoZSBjb3N0IG9mIGEgZGVmZXJyZWQgZm9yIGVhY2ggZWxlbWVudCBvZiB0aGUgb3V0cHV0IC0tXG4gICAgICAgICB0aGVyZSdzIG5vIG5lZWQgdG8gcHVzaGJhY2sgc2luY2UgdGhhdCBpcyBvbmx5IG1vdmluZyBlbGVtZW50cyBmcm9tIG9uZSBwaXBlIHRvXG4gICAgICAgICBhbm90aGVyLiAgQXMgc29vbiBhcyBbcG9wX2hlYXBfYW5kX2xvb3BdIGNhbid0IGdldCBhbiBlbGVtZW50IGZyb20gc29tZSBpbnB1dCwgaXRcbiAgICAgICAgIHdhaXRzIG9uIHB1c2hiYWNrIGZyb20gdGhlIG91dHB1dCwgc2luY2UgaXQgaGFzIHRvIHdhaXQgb24gdGhlIGlucHV0IGFueXdheS5cbiAgICAgICAgIFRoaXMgYWxzbyBwcmV2ZW50cyBbbWVyZ2VdIGZyb20gY29uc3VtaW5nIGlucHV0cyBhdCBhIHJhdGUgZmFzdGVyIHRoYW4gaXRzIG91dHB1dFxuICAgICAgICAgaXMgY29uc3VtZWQuICopXG4gICAgICBtYXRjaCBIZWFwLnBvcCBoZWFwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjbG9zZSB3XG4gICAgICB8IFNvbWUgKHYsIGlucHV0KSAtPlxuICAgICAgICBpZiBub3QgKGlzX2Nsb3NlZCB3KVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHcgdjtcbiAgICAgICAgICBpZiBIZWFwLmxlbmd0aCBoZWFwID0gMFxuICAgICAgICAgIHRoZW4gdXBvbiAodHJhbnNmZXJfaWQgaW5wdXQgdykgKGZ1biAoKSAtPiBjbG9zZSB3KVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgd2l0aFxuICAgICAgICAgICAgfCAoYEVvZiB8IGBPayBfKSBhcyB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpXG4gICAgICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICAgICBwdXNoYmFjayB3XG4gICAgICAgICAgICAgID4+PiBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgcmVhZCBpbnB1dFxuICAgICAgICAgICAgICA+Pj4gZnVuIHggLT5cbiAgICAgICAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeDtcbiAgICAgICAgICAgICAgcG9wX2hlYXBfYW5kX2xvb3AgKCkpKVxuICAgIGluXG4gICAgbGV0IGluaXRpYWxfcHVzaCA9XG4gICAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgfmhvdzpgU2VxdWVudGlhbCBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICBsZXQlbWFwIHggPSByZWFkIGlucHV0IGluXG4gICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHgpXG4gICAgaW5cbiAgICB1cG9uIGluaXRpYWxfcHVzaCBwb3BfaGVhcF9hbmRfbG9vcDtcbiAgICByXG47O1xuXG5sZXQgY29uY2F0X3BpcGUgaW5wdXRzID1cbiAgbGV0IHIgPVxuICAgIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICAgIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0cyB+ZG93bnN0cmVhbTp3IGluXG4gICAgICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgICAgIGl0ZXIgfmZsdXNoZWQ6KENvbnN1bWVyIGNvbnN1bWVyKSBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPiB0cmFuc2Zlcl9pZCBpbnB1dCB3KSlcbiAgaW5cbiAgdXBvbiAoY2xvc2VkIHIpIChmdW4gKCkgLT4gY2xvc2UgaW5wdXRzKTtcbiAgclxuOztcblxubGV0IGNvbmNhdCBpbnB1dHMgPVxuICBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gKGZ1biB3IC0+XG4gICAgRGVmZXJyZWQuTGlzdC5pdGVyIH5ob3c6YFNlcXVlbnRpYWwgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG47O1xuXG5sZXQgZm9yayB0IH5wdXNoYmFja191c2VzID1cbiAgbGV0IHJlYWRlcjAsIHdyaXRlcjAgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHJlYWRlcjEsIHdyaXRlcjEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gIXNvbWVfcmVhZGVyX3dhc19jbG9zZWQgaW5cbiAgICAgIG1hdGNoJW1hcFxuICAgICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lIFsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjA7IGRvd25zdHJlYW1fZmx1c2hlZCB3cml0ZXIxIF1cbiAgICAgIHdpdGhcbiAgICAgIHwgYFJlYWRlcl9jbG9zZWQgLT4gYFJlYWRlcl9jbG9zZWRcbiAgICAgIHwgYE9rIC0+XG4gICAgICAgICgqIEluIHRoaXMgY2FzZSwgdGhlcmUgY291bGQgaGF2ZSBiZWVuIG5vIHBlbmRpbmcgaXRlbXMgaW4gW3dyaXRlcjBdIG5vciBpblxuICAgICAgICAgICBbd3JpdGVyMV0sIGluIHdoaWNoIGNhc2Ugd2UgY291bGQgaGF2ZSBoYWQgYSBjbG9zZWQgcGlwZSB0aGF0IG1pc3NlZCBzb21lXG4gICAgICAgICAgIHdyaXRlcywgYnV0IFtGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXSB3b3VsZCBzdGlsbCBoYXZlIHJldHVybmVkIFtgT2tdICopXG4gICAgICAgIGlmIHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgdGhlbiBgUmVhZGVyX2Nsb3NlZCBlbHNlIGBPaylcbiAgaW5cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAobGV0IHN0aWxsX29wZW4gPSBbIHdyaXRlcjA7IHdyaXRlcjEgXSBpblxuICAgICBsZXQgZmlsdGVyX29wZW4gc3RpbGxfb3BlbiA9XG4gICAgICAgKCogT25seSBjYWxsIFtmaWx0ZXJdIGFuZCByZWFsbG9jYXRlIGxpc3QgaWYgc29tZXRoaW5nIHdpbGwgZ2V0IGZpbHRlcmVkICopXG4gICAgICAgaWYgbm90IChMaXN0LmV4aXN0cyBzdGlsbF9vcGVuIH5mOmlzX2Nsb3NlZClcbiAgICAgICB0aGVuIHN0aWxsX29wZW5cbiAgICAgICBlbHNlIChcbiAgICAgICAgIHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgOj0gdHJ1ZTtcbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gTGlzdC5maWx0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gbm90IChpc19jbG9zZWQgdykpIGluXG4gICAgICAgICBpZiBMaXN0LmlzX2VtcHR5IHN0aWxsX29wZW4gdGhlbiBjbG9zZSB0O1xuICAgICAgICAgc3RpbGxfb3BlbilcbiAgICAgaW5cbiAgICAgbGV0JWJpbmQgc3RpbGxfb3BlbiA9XG4gICAgICAgZm9sZCcgdCB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIH5pbml0OnN0aWxsX29wZW4gfmY6KGZ1biBzdGlsbF9vcGVuIHF1ZXVlIC0+XG4gICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlblxuICAgICAgICAgdGhlbiByZXR1cm4gW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwdXNoYmFja191c2VzIHdpdGhcbiAgICAgICAgICAgICB8IGBGYXN0X2NvbnN1bWVyX29ubHkgLT4gRGVmZXJyZWQuYW55IChMaXN0Lm1hcCBzdGlsbF9vcGVuIH5mOnB1c2hiYWNrKVxuICAgICAgICAgICAgIHwgYEJvdGhfY29uc3VtZXJzIC0+IERlZmVycmVkLmFsbF91bml0IChMaXN0Lm1hcCBzdGlsbF9vcGVuIH5mOnB1c2hiYWNrKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgc3RpbGxfb3BlbiA9IGZpbHRlcl9vcGVuIHN0aWxsX29wZW4gaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6KGZ1biB3IC0+IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB3IH5mcm9tOnF1ZXVlKTtcbiAgICAgICAgICAgc3RpbGxfb3BlbikpXG4gICAgIGluXG4gICAgIExpc3QuaXRlciBzdGlsbF9vcGVuIH5mOmNsb3NlO1xuICAgICByZXR1cm4gKCkpO1xuICByZWFkZXIwLCByZWFkZXIxXG47O1xuXG5sZXQgc2V0X2luZm8gdCBpbmZvID0gc2V0X2luZm8gdCAoU29tZSBpbmZvKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxudHlwZSAoJ2EsICdwaGFudG9tKSB0ID1cbiAgeyBjdXJyZW50X3ZhbHVlIDogJ2EgTW9wdGlvbi50XG4gIDsgdGFrZW4gOiAodW5pdCwgcmVhZF93cml0ZSkgQnZhci50XG4gIDsgbXV0YWJsZSB2YWx1ZV9hdmFpbGFibGUgOiB1bml0IEl2YXIudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB2YWx1ZV9hdmFpbGFibGUgdCA9IEl2YXIucmVhZCB0LnZhbHVlX2F2YWlsYWJsZVxubGV0IGlzX2VtcHR5IHQgPSBNb3B0aW9uLmlzX25vbmUgdC5jdXJyZW50X3ZhbHVlXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgXyAodCA6IF8gdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jdXJyZW50X3ZhbHVlOihjaGVjayAoTW9wdGlvbi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnRha2VuOihjaGVjayAoQnZhci5pbnZhcmlhbnQgVW5pdC5pbnZhcmlhbnQgaWdub3JlKSlcbiAgICAgIH52YWx1ZV9hdmFpbGFibGU6XG4gICAgICAgIChjaGVjayAoZnVuIHZhbHVlX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgdmFsdWVfYXZhaWxhYmxlKVxuICAgICAgICAgICAgIH5leHBlY3Q6KE1vcHRpb24uaXNfc29tZSB0LmN1cnJlbnRfdmFsdWUpKSkpXG47O1xuXG5sZXQgcGVlayB0ID0gTW9wdGlvbi5nZXQgdC5jdXJyZW50X3ZhbHVlXG5cbmxldCBwZWVrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTXZhci5wZWVrX2V4biBjYWxsZWQgb24gZW1wdHkgbXZhclwiXTtcbiAgTW9wdGlvbi5nZXRfc29tZV9leG4gdC5jdXJyZW50X3ZhbHVlXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBfIHQgPSBbJXNleHAgKHBlZWsgdCA6IGEgb3B0aW9uKV1cblxubW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgcmVhZF93cml0ZSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbm1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICgnYSwgcmVhZCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSBpZ25vcmUgdFxuZW5kXG5cbmxldCByZWFkX29ubHkgKHQgOiAoJ2EsIFs+IHJlYWQgXSkgdCkgPSAodCA6PiAoJ2EsIHJlYWQpIHQpXG5sZXQgd3JpdGVfb25seSAodCA6ICgnYSwgWz4gd3JpdGUgXSkgdCkgPSAodCA6PiAoJ2EsIHdyaXRlKSB0KVxuXG5sZXQgY3JlYXRlICgpID1cbiAgeyBjdXJyZW50X3ZhbHVlID0gTW9wdGlvbi5jcmVhdGUgKClcbiAgOyB0YWtlbiA9IEJ2YXIuY3JlYXRlICgpXG4gIDsgdmFsdWVfYXZhaWxhYmxlID0gSXZhci5jcmVhdGUgKClcbiAgfVxuOztcblxubGV0IHRha2Vfbm9uZW1wdHkgdCA9XG4gIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCByID0gTW9wdGlvbi5nZXRfc29tZV9leG4gdC5jdXJyZW50X3ZhbHVlIGluXG4gIE1vcHRpb24uc2V0X25vbmUgdC5jdXJyZW50X3ZhbHVlO1xuICBCdmFyLmJyb2FkY2FzdCB0LnRha2VuICgpO1xuICB0LnZhbHVlX2F2YWlsYWJsZSA8LSBJdmFyLmNyZWF0ZSAoKTtcbiAgclxuOztcblxubGV0IHRha2Vfbm93X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiTXZhci50YWtlX2V4biBjYWxsZWQgb24gZW1wdHkgbXZhclwiXTtcbiAgdGFrZV9ub25lbXB0eSB0XG47O1xuXG5sZXQgdGFrZV9ub3cgdCA9IGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBTb21lICh0YWtlX25vbmVtcHR5IHQpIGVsc2UgTm9uZVxuXG5sZXQgcmVjIHRha2UgdCA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiByZXR1cm4gKHRha2Vfbm9uZW1wdHkgdClcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB2YWx1ZV9hdmFpbGFibGUgdCBpblxuICAgIHRha2UgdClcbjs7XG5cbmxldCBzZXQgdCB2ID1cbiAgTW9wdGlvbi5zZXRfc29tZSB0LmN1cnJlbnRfdmFsdWUgdjtcbiAgSXZhci5maWxsX2lmX2VtcHR5IHQudmFsdWVfYXZhaWxhYmxlICgpXG47O1xuXG5sZXQgdXBkYXRlIHQgfmYgPSBzZXQgdCAoZiAocGVlayB0KSlcbmxldCB1cGRhdGVfZXhuIHQgfmYgPSBzZXQgdCAoZiAocGVla19leG4gdCkpXG5sZXQgdGFrZW4gdCA9IEJ2YXIud2FpdCB0LnRha2VuXG5cbmxldCByZWMgcHV0IHQgdiA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiAoXG4gICAgc2V0IHQgdjtcbiAgICByZXR1cm4gKCkpXG4gIGVsc2UgKFxuICAgIGxldCViaW5kICgpID0gdGFrZW4gdCBpblxuICAgIHB1dCB0IHYpXG47O1xuXG5sZXQgcGlwZV93aGVuX3JlYWR5IHQgPVxuICBsZXQgciwgdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0JWJpbmQgKCkgPSB2YWx1ZV9hdmFpbGFibGUgdCBpblxuICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgdylcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRha2Vfbm93IHQgd2l0aFxuICAgICAgfCBOb25lIC0+IGxvb3AgKClcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIGxldCViaW5kICgpID0gUGlwZS53cml0ZSB3IHggaW5cbiAgICAgICAgbG9vcCAoKSlcbiAgICBlbHNlIHJldHVybiAoKVxuICBpblxuICBkb24ndF93YWl0X2ZvciAobG9vcCAoKSk7XG4gIHJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IHVuaXQgSXZhci50XG4gICAgOyByZXN1bHQgOiAnYSBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHJlc3RfZXhuID0gYExvZykgZiA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICB7IHN0YXJ0XG4gICAgOyByZXN1bHQgPVxuICAgICAgICAobGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgc3RhcnQgaW5cbiAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhfb3JfZXJyb3JcbiAgICAgICAgICAgfnJlc3Q6cmVzdF9leG5cbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9vcl9lcnJvciA/KHJlc3RfZXhuID0gYExvZykgZiA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICB7IHN0YXJ0XG4gICAgOyByZXN1bHQgPVxuICAgICAgICAobGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgc3RhcnQgaW5cbiAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhfam9pbl9vcl9lcnJvclxuICAgICAgICAgICB+cmVzdDpyZXN0X2V4blxuICAgICAgICAgICBmKVxuICAgIH1cbiAgOztcblxuICBsZXQgd2FpdCB0ID0gdC5yZXN1bHRcbiAgbGV0IHdhaXRfZXhuIHQgPSB3YWl0IHQgPj58IG9rX2V4blxuICBsZXQgc3RhcnQgdCA9IEl2YXIuZmlsbF9pZl9lbXB0eSB0LnN0YXJ0ICgpXG5cbiAgbGV0IGZvcmNlIHQgPVxuICAgIHN0YXJ0IHQ7XG4gICAgd2FpdCB0XG4gIDs7XG5cbiAgbGV0IGZvcmNlX2V4biB0ID0gZm9yY2UgdCA+Pnwgb2tfZXhuXG4gIGxldCByZXR1cm4gYSA9IGNyZWF0ZSAoZnVuICgpIC0+IHJldHVybiBhKVxuXG4gIGxldCBiaW5kIHQgfmYgPVxuICAgIGNyZWF0ZSAoZnVuICgpIC0+XG4gICAgICBsZXQlYmluZCBhID0gZm9yY2VfZXhuIHQgaW5cbiAgICAgIGZvcmNlX2V4biAoZiBhKSlcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPSBjcmVhdGUgKGZ1biAoKSAtPiBmb3JjZV9leG4gdCA+PnwgZilcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIE1vbmFkLk1ha2UgKFQpXG5cbmxldCBiaW5kJyB0IGYgPSBiaW5kIHQgfmY6KGZ1biBhIC0+IGNyZWF0ZSAoZnVuICgpIC0+IGYgYSkpXG5sZXQgaXNfZm9yY2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5zdGFydFxubGV0IGlzX2RldGVybWluZWQgdCA9IERlZmVycmVkLmlzX2RldGVybWluZWQgdC5yZXN1bHRcbmxldCBwZWVrIHQgPSBEZWZlcnJlZC5wZWVrIHQucmVzdWx0XG5sZXQgcGVla19leG4gdCA9IE9wdGlvbi5tYXAgKHBlZWsgdCkgfmY6b2tfZXhuXG4iLCJvcGVuIENvcmVcblxudHlwZSAnYSB0ID0geyB3YWl0cyA6ICdhIEl2YXIudCBRdWV1ZS50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSAoKSA9IHsgd2FpdHMgPSBRdWV1ZS5jcmVhdGUgKCkgfVxubGV0IHdhaXQgdCA9IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gUXVldWUuZW5xdWV1ZSB0LndhaXRzIGl2YXIpXG5sZXQgc2lnbmFsIHQgYSA9IE9wdGlvbi5pdGVyIChRdWV1ZS5kZXF1ZXVlIHQud2FpdHMpIH5mOihmdW4gaXZhciAtPiBJdmFyLmZpbGwgaXZhciBhKVxuXG5sZXQgYnJvYWRjYXN0IHQgYSA9XG4gIFF1ZXVlLml0ZXIgdC53YWl0cyB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSk7XG4gIFF1ZXVlLmNsZWFyIHQud2FpdHNcbjs7XG4iLCJvcGVuIENvcmVcbmluY2x1ZGUgR2NcblxuKCoqIFthZGRfZmluYWxpemVyIGYgeF0gaXMgbGlrZSBbR2MuZmluYWxpc2UgZiB4XSwgZXhjZXB0IHRoYXQgdGhlIGZpbmFsaXplciBpcyBndWFyYW50ZWVkXG4gICAgdG8gcnVuIGFzIGFuIEFzeW5jIGpvYiAoaS5lLiB3aXRob3V0IGludGVycnVwdGluZyBvdGhlciBBc3luYyBqb2JzKS4gIFVucHJvdGVjdGVkIHVzZVxuICAgIG9mIFtDYW1sLkdjLmZpbmFsaXNlXSBvciBbQ29yZS5HYy5hZGRfZmluYWxpemVyXSBpbiBBc3luYyBwcm9ncmFtcyBpcyB3cm9uZywgYmVjYXVzZVxuICAgIHRoZSBmaW5hbGl6ZXJzIHdvbid0IGhvbGQgdGhlIGFzeW5jIGxvY2ssIGFuZCB0aHVzIGNvdWxkIGludGVybGVhdmUgYXJiaXRyYXJpbHkgd2l0aFxuICAgIGFzeW5jIGpvYnMuICopXG5sZXQgYWRkX2ZpbmFsaXplciBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXIgKHQgKCkpKSBoZWFwX2Jsb2NrIGZcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9leG4gKHQgKCkpKSBoZWFwX2Jsb2NrIGZcbmxldCBhZGRfZmluYWxpemVyX2xhc3QgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2xhc3QgKHQgKCkpKSBoZWFwX2Jsb2NrIGZcblxubGV0IGFkZF9maW5hbGl6ZXJfbGFzdF9leG4gaGVhcF9ibG9jayBmID1cbiAgU2NoZWR1bGVyLihhZGRfZmluYWxpemVyX2xhc3RfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG47O1xuXG5tb2R1bGUgQWxhcm0gPSBzdHJ1Y3RcbiAgbW9kdWxlIEFsYXJtID0gR2MuRXhwZXJ0LkFsYXJtXG5cbiAgdHlwZSB0ID0gQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgZiA9IFNjaGVkdWxlci4oY3JlYXRlX2FsYXJtICh0ICgpKSkgZlxuICBsZXQgZGVsZXRlID0gQWxhcm0uZGVsZXRlXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIHNpZ25hdHVyZXMgdGhhdCBleHRlbmQgW0NvcmUuSW52YXJpYW50XSB3aXRoIGFuIFtBc3luY11cbiAgICBzdWJtb2R1bGUgZm9yIGludmFyaWFudHMgdGhhdCB1c2UgYXN5bmMgY29tcHV0YXRpb24gYW5kIHJldHVybiBbdW5pdCBEZWZlcnJlZC50XS4gKilcblxub3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBBc3luYyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSAtPiB1bml0IERlZmVycmVkLnRcbiAgdHlwZSAnYSBpbnYgPSAnYSB0XG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGludmFyaWFudCA6IHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdhIHQgaW52XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAoJ2EsICdiKSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiAnYSBpbnYgLT4gJ2IgaW52IC0+ICdjIGludiAtPiAoJ2EsICdiLCAnYykgdCBpbnZcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgQXN5bmNfaW52YXJpYW50ID0gc2lnXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgQ29yZS5JbnZhcmlhbnRcblxuICBtb2R1bGUgQXN5bmMgOiBzaWdcbiAgICBvcGVuIEFzeW5jXG5cbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgQXN5bmMudFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgICBtb2R1bGUgdHlwZSBTMSA9IFMxXG4gICAgbW9kdWxlIHR5cGUgUzIgPSBTMlxuICAgIG1vZHVsZSB0eXBlIFMzID0gUzNcblxuICAgIHZhbCBpbnZhcmlhbnRcbiAgICAgIDogIFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgICAgIC0+ICdhXG4gICAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgICAgLT4gdW5pdCBEZWZlcnJlZC50XG5cbiAgICAoKiogW2NoZWNrX2ZpZWxkXSBjYW4gYmUgdXNlZCB0byBjaGVjayByZWNvcmQgZmllbGRzIHdoZW4gdXNpbmcgW1tAQGRlcml2aW5nIGZpZWxkc11dLlxuICAgICAgICBJZGlvbWF0aWMgdXNhZ2UgbG9va3MgbGlrZTpcblxuICAgICAgICB7W1xuICAgICAgICAgIHR5cGUgdCA9IHsgZm9vIDogRm9vLnQgOyBiYXIgOiBCYXIudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gSW52YXJpYW50LkFzeW5jLmNoZWNrX2ZpZWxkIHQgaW52IGluXG4gICAgICAgICAgICAgIEZpZWxkcy5mb2xkIH5pbml0OihyZXR1cm4gKCkpXG4gICAgICAgICAgICAgICAgfmZvbzogKGNoZWNrIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogKGNoZWNrIEJhci5pbnZhcmlhbnQpIF19XG5cbiAgICAgICAgV2hlbiBzb21lIGZpZWxkcyBoYXZlIHN5bmNocm9ub3VzIGludmFyaWFudHMsIG9yIGRvIG5vdCBuZWVkIHRvIGJlIGNoZWNrZWQsIGl0XG4gICAgICAgIG1heSBiZSB1c2VmdWwgdG8gZGVmaW5lIGEgc2Vjb25kIHdyYXBwZXIgYXJvdW5kIFtjaGVja19maWVsZF06XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgOyBxdXV4IDogUXV1eC50IH1cbiAgICAgICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgICAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgICAgICAgSW52YXJpYW50LkFzeW5jLmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCBjaGVjaycgaW52ID0gSW52YXJpYW50LkFzeW5jLmNoZWNrX2ZpZWxkIHQgaW52IGluXG4gICAgICAgICAgICAgIGxldCBjaGVjayBpbnYgPSBjaGVjaycgKGZ1biB4IC0+IGludiB4OyByZXR1cm4gKCkpIGluXG4gICAgICAgICAgICAgIEZpZWxkcy5mb2xkIH5pbml0OihyZXR1cm4gKCkpXG4gICAgICAgICAgICAgICAgfmZvbzogIChjaGVjaycgRm9vLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+YmFyOiAgKGNoZWNrICBCYXIuaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5xdXV4OiAoY2hlY2sgIGlnbm9yZSkgXX0gKilcbiAgICB2YWwgY2hlY2tfZmllbGQgOiAnYSAtPiAnYiB0IC0+IHVuaXQgRGVmZXJyZWQudCAtPiAoJ2EsICdiKSBGaWVsZC50IC0+IHVuaXQgRGVmZXJyZWQudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgRGVmZXJyZWQuTGV0X3N5bnRheFxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvcmUuSW52YXJpYW50XG5cbm1vZHVsZSBBc3luYyA9IHN0cnVjdFxuICBpbmNsdWRlIEFzeW5jX2ludmFyaWFudF9pbnRmLkFzeW5jXG5cbiAgbGV0IGludmFyaWFudCBoZXJlIHQgc2V4cF9vZl90IGYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOmBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIGZcbiAgICAgICAgfmV4dHJhY3RfZXhuOnRydWVcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiaW52YXJpYW50IGZhaWxlZFwiIH5fOihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCkgKGV4biA6IGV4bikgfl86KHQgOiB0KV1cbiAgOztcblxuICBsZXQgY2hlY2tfZmllbGQgdCBmIHdhaXRfZm9yX3ByZXZpb3VzIGZpZWxkID1cbiAgICBsZXQlYmluZCAoKSA9IHdhaXRfZm9yX3ByZXZpb3VzIGluXG4gICAgbWF0Y2glbWFwXG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfmV4dHJhY3RfZXhuOnRydWVcbiAgICAgICAgKGZ1biAoKSAtPiBmIChGaWVsZC5nZXQgZmllbGQgdCkpXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJwcm9ibGVtIHdpdGggZmllbGRcIiB+ZmllbGQ6KEZpZWxkLm5hbWUgZmllbGQgOiBzdHJpbmcpIChleG4gOiBleG4pXVxuICA7O1xuZW5kXG4iLCIoKiogQ29udGFpbnMgQXN5bmMncyBjb3JlIGRhdGEgc3RydWN0dXJlcywgbGlrZSB7eyFBc3luY19rZXJuZWwuRGVmZXJyZWR9W0RlZmVycmVkXX0sXG4gICAge3shQXN5bmNfa2VybmVsLkl2YXJ9W0l2YXJdfSwgYW5kIHt7IUFzeW5jX2tlcm5lbC5DbG9ja19pbnRmLkNsb2NrfVtDbG9ja119LlxuXG4gICAgW0FzeW5jX2tlcm5lbF0gaXMgZGVzaWduZWQgdG8gZGVwZW5kIG9ubHkgb24ge3shQ29yZX1bQ29yZV19IGFuZCBzbyBpcyBtb3JlXG4gICAgcGxhdGZvcm0taW5kZXBlbmRlbnQuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEFzeW5jX2tlcm5lbF9jb25maWcgPSBBc3luY19rZXJuZWxfY29uZmlnXG5tb2R1bGUgQXN5bmNfa2VybmVsX3JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2UgPSBSZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXG5tb2R1bGUgQXN5bmNfa2VybmVsX3NjaGVkdWxlciA9IEFzeW5jX2tlcm5lbF9zY2hlZHVsZXJcbm1vZHVsZSBCdmFyID0gQnZhclxubW9kdWxlIENsb2NrX25zID0gQ2xvY2tfbnNcbm1vZHVsZSBDb25kaXRpb24gPSBBc3luY19jb25kaXRpb25cbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkXG5tb2R1bGUgRXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dFxubW9kdWxlIEdjID0gQXN5bmNfZ2Ncbm1vZHVsZSBJbnZhcmlhbnQgPSBBc3luY19pbnZhcmlhbnRcbm1vZHVsZSBJdmFyID0gSXZhclxubW9kdWxlIExhenlfZGVmZXJyZWQgPSBMYXp5X2RlZmVycmVkXG5tb2R1bGUgTW9uYWRfc2VxdWVuY2UgPSBNb25hZF9zZXF1ZW5jZVxubW9kdWxlIE1vbml0b3IgPSBNb25pdG9yXG5tb2R1bGUgTXZhciA9IE12YXJcbm1vZHVsZSBQaXBlID0gUGlwZVxubW9kdWxlIFByaW9yaXR5ID0gUHJpb3JpdHlcbm1vZHVsZSBTZXF1ZW5jZXIgPSBUaHJvdHRsZS5TZXF1ZW5jZXJcbm1vZHVsZSBTdHJlYW0gPSBBc3luY19zdHJlYW1cbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlXG5tb2R1bGUgVGFpbCA9IFRhaWxcbm1vZHVsZSBUaHJvdHRsZSA9IFRocm90dGxlXG5tb2R1bGUgVGhyb3R0bGVkID0gVGhyb3R0bGVkXG5tb2R1bGUgVGltZV9zb3VyY2UgPSBUaW1lX3NvdXJjZVxuXG5cbigqKiB7MiBUb3BsZXZlbCBmdW5jdGlvbnMgfVxuXG4gICAgVGhlIGZ1bmN0aW9ucyBiZWxvdyBhcmUgYnJvYWRseSB1c2VmdWwgd2hlbiB3cml0aW5nIEFzeW5jIHByb2dyYW1zLCBhbmQgc28gYXJlIG1hZGVcbiAgICBhdmFpbGFibGUgYXQgdGhlIHRvcGxldmVsLiAqKVxuXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGNhdGNoID0gTW9uaXRvci5jYXRjaFxubGV0IGNob2ljZSA9IERlZmVycmVkLmNob2ljZVxubGV0IGNob29zZSA9IERlZmVycmVkLmNob29zZVxubGV0IGRvbid0X3dhaXRfZm9yID0gRGVmZXJyZWQuZG9uJ3Rfd2FpdF9mb3JcbmxldCBldmVyeSA9IENsb2NrX25zLmV2ZXJ5XG5sZXQgbmV2ZXIgPSBEZWZlcnJlZC5uZXZlclxubGV0IHNjaGVkdWxlID0gU2NoZWR1bGVyLnNjaGVkdWxlXG5sZXQgc2NoZWR1bGUnID0gU2NoZWR1bGVyLnNjaGVkdWxlJ1xubGV0IHRyeV93aXRoID0gTW9uaXRvci50cnlfd2l0aFxubGV0IHVwb24gPSBEZWZlcnJlZC51cG9uXG5sZXQgd2l0aF90aW1lb3V0ID0gQ2xvY2tfbnMud2l0aF90aW1lb3V0XG5sZXQgd2l0aGluID0gU2NoZWR1bGVyLndpdGhpblxubGV0IHdpdGhpbicgPSBTY2hlZHVsZXIud2l0aGluJ1xuXG4oKiogezIgSW5maXggb3BlcmF0b3JzIGFuZCBbTGV0X3N5bnRheF0gc3VwcG9ydH0gKilcblxuaW5jbHVkZSAoRGVmZXJyZWQgOiBNb25hZC5JbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBEZWZlcnJlZC50KVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLnVwb259LiAqKVxubGV0ICggPj4+ICkgPSBEZWZlcnJlZC5JbmZpeC4oID4+PiApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0LmJpbmR9LiAqKVxubGV0ICggPj49PyApID0gRGVmZXJyZWQuUmVzdWx0LiggPj49IClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC5SZXN1bHQubWFwfS4gKilcbmxldCAoID4+fD8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+fCApXG5cbmluY2x1ZGUgRGVmZXJyZWQuTGV0X3N5bnRheFxuXG4oKiovKiopXG5cbigqKiBUaGUgbW9kdWxlcyBpbiBbQXN5bmNfa2VybmVsX3ByaXZhdGVdIGFyZSB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgYW5kIHRlc3RpbmcgQXN5bmMsIGFuZFxuICAgIHNob3VsZCBub3Qgb3RoZXJ3aXNlIGJlIHVzZWQuICopXG5tb2R1bGUgQXN5bmNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlYnVnID0gRGVidWdcbiAgbW9kdWxlIEl2YXIwID0gSXZhcjBcbiAgbW9kdWxlIEl2YXJfZmlsbGVyID0gSXZhcl9maWxsZXJcbiAgbW9kdWxlIEpvYiA9IEpvYlxuICBtb2R1bGUgU3RhY2tfb3JfY291bnRlciA9IFN0YWNrX29yX2NvdW50ZXJcbmVuZFxuXG4oKiovKiopXG5cbigqIFRoaXMgdGVzdCBtdXN0IGJlIGluIHRoaXMgbGlicmFyeSwgYmVjYXVzZSBpdCByZXF1aXJlcyBbcmV0dXJuXSB0byBiZSBpbmxpbmVkLiAgTW92aW5nXG4gICBpdCB0byBhbm90aGVyIGxpYnJhcnkgd2lsbCBjYXVzZSBpdCB0byBicmVhayB3aXRoIFtYX0xJQlJBUllfSU5MSU5JTkc9ZmFsc2VdLiAqKVxubGV0JXRlc3RfdW5pdCBcIltyZXR1cm4gKCldIGRvZXMgbm90IGFsbG9jYXRlXCIgPVxuICBsZXQgdzEgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKHJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXgucmV0dXJuICgpKSA6IF8gRGVmZXJyZWQudCk7XG4gIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSAoRGVmZXJyZWQuTGV0X3N5bnRheC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBsZXQgdzIgPSBHYy5taW5vcl93b3JkcyAoKSBpblxuICBbJXRlc3RfcmVzdWx0OiBpbnRdIHcyIH5leHBlY3Q6dzFcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID0gJ2EgRGVmZXJyZWQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCByZXR1cm4gPSBEZWZlcnJlZC5yZXR1cm5cblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQgdGhlbiBmIChEZWZlcnJlZC52YWx1ZV9leG4gdCkgZWxzZSBEZWZlcnJlZC5iaW5kIHQgfmZcbiAgOztcblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgdFxuICAgIHRoZW4gcmV0dXJuIChmIChEZWZlcnJlZC52YWx1ZV9leG4gdCkpXG4gICAgZWxzZSBEZWZlcnJlZC5tYXAgdCB+ZlxuICA7O1xuXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgY3JlYXRlID0gRGVmZXJyZWQuY3JlYXRlXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgPSBEZWZlcnJlZC5kb24ndF93YWl0X2ZvclxubGV0IGludmFyaWFudCA9IERlZmVycmVkLmludmFyaWFudFxubGV0IGlzX2RldGVybWluZWQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkXG5sZXQgbmV2ZXIgPSBEZWZlcnJlZC5uZXZlclxubGV0IHBlZWsgPSBEZWZlcnJlZC5wZWVrXG5sZXQgdW5pdCA9IERlZmVycmVkLnVuaXRcbmxldCB2YWx1ZV9leG4gPSBEZWZlcnJlZC52YWx1ZV9leG5cbmxldCB1cG9uIHQgZiA9IGlmIGlzX2RldGVybWluZWQgdCB0aGVuIGYgKHZhbHVlX2V4biB0KSBlbHNlIERlZmVycmVkLnVwb24gdCBmXG5cbmxldCBib3RoIHQxIHQyID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+IHVwb24gdDEgKGZ1biBhMSAtPiB1cG9uIHQyIChmdW4gYTIgLT4gSXZhci5maWxsIHJlc3VsdCAoYTEsIGEyKSkpKVxuOztcblxubGV0IG9rIHQgPSBpZiBpc19kZXRlcm1pbmVkIHQgdGhlbiByZXR1cm4gKE9rICh2YWx1ZV9leG4gdCkpIGVsc2UgRGVmZXJyZWQub2sgdFxubGV0IGlnbm9yZV9tIHQgPSBpZiBpc19kZXRlcm1pbmVkIHQgdGhlbiB1bml0IGVsc2UgRGVmZXJyZWQuaWdub3JlX20gdFxuXG5sZXQgYW55IHRzID1cbiAgbWF0Y2ggTGlzdC5maW5kIHRzIH5mOmlzX2RldGVybWluZWQgd2l0aFxuICB8IFNvbWUgeCAtPiByZXR1cm4gKHZhbHVlX2V4biB4KVxuICB8IE5vbmUgLT4gRGVmZXJyZWQuYW55IHRzXG47O1xuXG5sZXQgYW55X3VuaXQgdHMgPVxuICBpZiBMaXN0LmV4aXN0cyB0cyB+ZjooaXNfZGV0ZXJtaW5lZCA6IHVuaXQgdCAtPiBib29sKVxuICB0aGVuIHVuaXRcbiAgZWxzZSBEZWZlcnJlZC5hbnlfdW5pdCB0c1xuOztcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGluY2x1ZGUgTW9uYWRfaW5maXhcblxuICBsZXQgKCA+Pj4gKSA9IHVwb25cbmVuZFxuXG5sZXQgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIGYgPVxuICBsZXQgb3BlbiBJbmZpeCBpblxuICBjcmVhdGUgKGZ1biBmaW5pc2hlZCAtPlxuICAgIGxldCByZWMgbG9vcCBzdGF0ZSA9XG4gICAgICBmIHN0YXRlXG4gICAgICA+Pj4gZnVuY3Rpb25cbiAgICAgIHwgYFJlcGVhdCBzdGF0ZSAtPiBsb29wIHN0YXRlXG4gICAgICB8IGBGaW5pc2hlZCByZXN1bHQgLT4gSXZhci5maWxsIGZpbmlzaGVkIHJlc3VsdFxuICAgIGluXG4gICAgbG9vcCBzdGF0ZSlcbjs7XG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIG9wZW4gSW5maXhcbiAgb3BlbiBMZXRfc3ludGF4XG5cbiAgbGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICAgIGNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIHQgaSBiID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICAgIHwgeCA6OiB4cyAtPiBmIGkgYiB4ID4+PiBmdW4gYiAtPiBsb29wIHhzIChpICsgMSkgYlxuICAgICAgaW5cbiAgICAgIGxvb3AgdCAwIGluaXQpXG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxuICBsZXQgYWxsX3VuaXQgZHMgPSBpZ25vcmVfbSAoZm9sZCBkcyB+aW5pdDooKSB+ZjooZnVuICgpIGQgLT4gZCkgOiB1bml0IFQudClcblxuICBsZXQgaXRlcmkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsX3VuaXQgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG4gIDs7XG5cbiAgbGV0IG1hcGkgfmhvdyB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyaSB+aG93IHQgfmYgPVxuICAgIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgfmhvdyB+ZiBpblxuICAgIExpc3QucmV2XG4gICAgICAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgfmhvdyB0IH5mID0gbWFwaSB0IH5ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPiBpZiVtYXAgZiBlbHQgdGhlbiBTb21lIGVsdCBlbHNlIE5vbmUpXG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBmb3JfYWxsaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBub3QgYiB0aGVuIFNvbWUgKCkgZWxzZSBOb25lKVxuICAgIHdpdGhcbiAgICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICA7O1xuXG4gIGxldCBpdGVyIH5ob3cgdCB+ZiA9IGl0ZXJpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBtYXAgfmhvdyB0IH5mID0gbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyIH5ob3cgdCB+ZiA9IGZpbHRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlcl9tYXAgfmhvdyB0IH5mID0gZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGNvbmNhdF9tYXAgfmhvdyB0IH5mID0gY29uY2F0X21hcGkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBmb3JfYWxsaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGluaXQgfmhvdyBuIH5mID0gbWFwIH5ob3cgKExpc3QuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuZW5kXG5cbmxldCBhbGxfdW5pdCA9IExpc3QuYWxsX3VuaXRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX2tlcm5lbFxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBFYWdlcl9kZWZlcnJlZDBcbm9wZW4gRGVmZXJyZWQuTGV0X3N5bnRheFxuXG4oKiBDb3BpZWQgZnJvbSBbZGVmZXJyZWRfcmVzdWx0Lm1sXS4gIFRoZXJlIHNob3VsZCBiZSBubyBkaWZmcyBiZWxvdyB0aGlzIGxpbmUuICopXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnZXJyb3IpIHQgPSAoJ2EsICdlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIGxldCVtYXAgdDEgPSB0MVxuICBhbmQgdDIgPSB0MiBpblxuICBSZXN1bHQuY29tYmluZSB0MSB0MiB+b2sgfmVyclxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKE9rIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBPayBhIC0+IGYgYVxuICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gRGVmZXJyZWQucmV0dXJuIGVycm9yKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBmYWlsIHggPSBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIHgpXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgbWFwX2Vycm9yIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcF9lcnJvciByIH5mKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBEZWZlcnJlZCA9IEVhZ2VyX2RlZmVycmVkMFxubW9kdWxlIERlZmVycmVkX3Jlc3VsdCA9IEVhZ2VyX2RlZmVycmVkX3Jlc3VsdFxuXG5tb2R1bGUgTW9uaXRvciA9IHN0cnVjdFxuICBsZXQgdHJ5X3dpdGggPyhydW4gPSBgTm93KSA9IE1vbml0b3IudHJ5X3dpdGggfnJ1blxuZW5kXG5cbigqIENvcGllZCBmcm9tIFtkZWZlcnJlZF9vcl9lcnJvci5tbF0uICBUaGVyZSBzaG91bGQgYmUgbm8gZGlmZnMgYmVsb3cgdGhpcyBsaW5lLiAqKVxuXG5pbmNsdWRlIChEZWZlcnJlZF9yZXN1bHQgOiBNb25hZC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBEZWZlcnJlZF9yZXN1bHQudClcblxudHlwZSAnYSB0ID0gJ2EgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgRGVmZXJyZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgZlxuICAgICAgICB4XG4gICAgICAgIH5vazooZnVuIGYgeCAtPiBmIHgpXG4gICAgICAgIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuIExldF9zeW50YXhcblxubGV0IGZhaWwgZXJyb3IgPSBEZWZlcnJlZC5yZXR1cm4gKFJlc3VsdC5mYWlsIGVycm9yKVxubGV0IG9rX2V4biB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2tfZXhuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5vZl9leG4gP2JhY2t0cmFjZSBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlIHQgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdCA/YmFja3RyYWNlKVxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBmb2xkaSB0IH5pbml0OigpIH5mOihmdW4gaSAoKSB4IC0+IGYgaSB4KVxuICA7O1xuXG4gIGxldCBtYXBpIH5ob3cgdCB+ZiA9XG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICAgIGFsbCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gc2VxbWFwaSB0IH5mXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmZpbHRlcl9vcHRcbiAgbGV0IGNvbmNhdF9tYXBpIH5ob3cgdCB+ZiA9IG1hcGkgdCB+aG93IH5mID4+fCBMaXN0LmNvbmNhdFxuXG4gIGxldCBmaWx0ZXJpIH5ob3cgdCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgfmhvdyB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgeCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgeCBlbHNlIE5vbmUpXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgICBsZXQgcmVjIGZpbmRfbWFwaSB0IH5mIGkgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IHJldHVybiBOb25lXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHRsIH5mIChpICsgMSlcbiAgICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gICAgaW5cbiAgICBmaW5kX21hcGkgdCB+ZiAwXG4gIDs7XG5cbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5cbiAgbGV0IGZpbmRpIHQgfmYgPVxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZCB0IH5mID1cbiAgICBmaW5kX21hcCB0IH5mOihmdW4gZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSB0IH5mID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gICAgd2l0aFxuICAgIHwgU29tZSAoKSAtPiBmYWxzZVxuICAgIHwgTm9uZSAtPiB0cnVlXG4gIDs7XG5cbiAgbGV0IGl0ZXIgfmhvdyB0IH5mID0gaXRlcmkgfmhvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IG1hcCB+aG93IHQgfmYgPSBtYXBpIH5ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXIgfmhvdyB0IH5mID0gZmlsdGVyaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmlsdGVyX21hcCB+aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgY29uY2F0X21hcCB+aG93IHQgfmYgPSBjb25jYXRfbWFwaSB+aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgaW5pdCB+aG93IG4gfmYgPSBtYXAgfmhvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG5lbmRcblxubGV0IHJlYyByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZiA9XG4gIG1hdGNoJWJpbmQgZiBzdGF0ZSB3aXRoXG4gIHwgYFJlcGVhdCBzdGF0ZSAtPiByZXBlYXRfdW50aWxfZmluaXNoZWQgc3RhdGUgZlxuICB8IGBGaW5pc2hlZCBzdGF0ZSAtPiByZXR1cm4gc3RhdGVcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTID0gRWFnZXJfZGVmZXJyZWRfaW50Zi5TXG5cbmluY2x1ZGUgRWFnZXJfZGVmZXJyZWQxXG5cbm1vZHVsZSBVc2UgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlZmVycmVkID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgRGVmZXJyZWQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBFYWdlcl9kZWZlcnJlZDFcbiAgZW5kXG5cbiAgaW5jbHVkZSAoRWFnZXJfZGVmZXJyZWQxIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcbiAgaW5jbHVkZSBFYWdlcl9kZWZlcnJlZDEuTGV0X3N5bnRheFxuXG4gIGxldCB1cG9uID0gRWFnZXJfZGVmZXJyZWQxLnVwb25cbiAgbGV0ICggPj4+ICkgPSBFYWdlcl9kZWZlcnJlZDEuSW5maXguKCA+Pj4gKVxuXG4gIGxldCAoID4+PT8gKSB4IGYgPVxuICAgIHhcbiAgICA+Pj0gZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gcmV0dXJuIGVycm9yXG4gICAgfCBPayB2IC0+IGYgdlxuICA7O1xuXG4gIGxldCAoID4+fD8gKSB4IGYgPVxuICAgIHhcbiAgICA+PnwgZnVuY3Rpb25cbiAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gZXJyb3JcbiAgICB8IE9rIHYgLT4gT2sgKGYgdilcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZFxuICAgIHwgV3JpdGVfaW5fcHJvZ3Jlc3NcbiAgICB8IE9rX3RvX3dyaXRlXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGlzX2Nsb3NlZCA9IGZ1bmN0aW9uXG4gICAgfCBDbG9zZWQgLT4gdHJ1ZVxuICAgIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT4gZmFsc2VcbiAgICB8IE9rX3RvX3dyaXRlIC0+IGZhbHNlXG4gIDs7XG5lbmRcblxubW9kdWxlIENhbGxiYWNrX2FyaXR5ID0gc3RydWN0XG4gIHR5cGUgXyB0ID1cbiAgICB8IEFyaXR5MSA6ICgnYSAtPiB1bml0KSB0XG4gICAgfCBBcml0eTFfbG9jYWwgOiAoKCdhW0Bsb2NhbF0pIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5MiA6ICgnYSAtPiAnYiAtPiB1bml0KSB0XG4gICAgfCBBcml0eTMgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCkgdFxuICAgIHwgQXJpdHk0IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+IHVuaXQpIHRcbiAgICB8IEFyaXR5NSA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0KSB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHVzZXNfbG9jYWxfYXJncyA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPSBmdW5jdGlvblxuICAgIHwgQXJpdHkxIC0+IGZhbHNlXG4gICAgfCBBcml0eTFfbG9jYWwgLT4gdHJ1ZVxuICAgIHwgQXJpdHkyIC0+IGZhbHNlXG4gICAgfCBBcml0eTMgLT4gZmFsc2VcbiAgICB8IEFyaXR5NCAtPiBmYWxzZVxuICAgIHwgQXJpdHk1IC0+IGZhbHNlXG4gIDs7XG5lbmRcblxubW9kdWxlIExhc3RfdmFsdWUgOiBzaWdcbiAgdHlwZSAnY2FsbGJhY2sgdFxuXG4gIHZhbCBjcmVhdGVfZXhuIDogJ2NhbGxiYWNrIENhbGxiYWNrX2FyaXR5LnQgLT4gJ2NhbGxiYWNrIHRcbiAgdmFsIHNldDEgOiAoJ2EgLT4gdW5pdCkgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCBzZXQyIDogKCdhIC0+ICdiIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gdW5pdFxuICB2YWwgc2V0MyA6ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0KSB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+IHVuaXRcbiAgdmFsIHNldDQgOiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCkgdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0XG4gIHZhbCBzZXQ1IDogKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXQpIHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gdW5pdFxuICB2YWwgc2VuZCA6ICdjYWxsYmFjayB0IC0+ICdjYWxsYmFjayAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHR1cGxlID1cbiAgICB8IFR1cGxlMSA6IHsgbXV0YWJsZSBhcmcxIDogJ2EgfSAtPiAoJ2EgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlMiA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiB1bml0KSB0dXBsZVxuICAgIHwgVHVwbGUzIDpcbiAgICAgICAgeyBtdXRhYmxlIGFyZzEgOiAnYVxuICAgICAgICA7IG11dGFibGUgYXJnMiA6ICdiXG4gICAgICAgIDsgbXV0YWJsZSBhcmczIDogJ2NcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlNCA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICA7IG11dGFibGUgYXJnMyA6ICdjXG4gICAgICAgIDsgbXV0YWJsZSBhcmc0IDogJ2RcbiAgICAgICAgfVxuICAgICAgICAtPiAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gdW5pdCkgdHVwbGVcbiAgICB8IFR1cGxlNSA6XG4gICAgICAgIHsgbXV0YWJsZSBhcmcxIDogJ2FcbiAgICAgICAgOyBtdXRhYmxlIGFyZzIgOiAnYlxuICAgICAgICA7IG11dGFibGUgYXJnMyA6ICdjXG4gICAgICAgIDsgbXV0YWJsZSBhcmc0IDogJ2RcbiAgICAgICAgOyBtdXRhYmxlIGFyZzUgOiAnZVxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiB1bml0KSB0dXBsZVxuXG4gIHR5cGUgJ2NhbGxiYWNrIHQgPSAnY2FsbGJhY2sgdHVwbGUgb3B0aW9uIHJlZlxuXG4gIGxldCBjcmVhdGVfZXhuICh0eXBlIGNhbGxiYWNrKSAoYXJpdHkgOiBjYWxsYmFjayBDYWxsYmFja19hcml0eS50KSA6IGNhbGxiYWNrIHQgPVxuICAgIGlmIENhbGxiYWNrX2FyaXR5LnVzZXNfbG9jYWxfYXJncyBhcml0eVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJDYW5ub3Qgc2F2ZSBsYXN0IHZhbHVlIHdoZW4gdXNpbmcgbG9jYWwgYXJnc1wiIChhcml0eSA6IF8gQ2FsbGJhY2tfYXJpdHkudCldO1xuICAgIHJlZiBOb25lXG4gIDs7XG5cbiAgbGV0IHNldDEgdCBhID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGUxIHsgYXJnMSA9IGEgfSlcbiAgICB8IFNvbWUgKFR1cGxlMSBhcmdzKSAtPiBhcmdzLmFyZzEgPC0gYVxuICA7O1xuXG4gIGxldCBzZXQyIHQgYSBiID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGUyIHsgYXJnMSA9IGE7IGFyZzIgPSBiIH0pXG4gICAgfCBTb21lIChUdXBsZTIgYXJncykgLT5cbiAgICAgIGFyZ3MuYXJnMSA8LSBhO1xuICAgICAgYXJncy5hcmcyIDwtIGJcbiAgOztcblxuICBsZXQgc2V0MyB0IGEgYiBjID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGUzIHsgYXJnMSA9IGE7IGFyZzIgPSBiOyBhcmczID0gYyB9KVxuICAgIHwgU29tZSAoVHVwbGUzIGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBiO1xuICAgICAgYXJncy5hcmczIDwtIGNcbiAgOztcblxuICBsZXQgc2V0NCB0IGEgYiBjIGQgPVxuICAgIG1hdGNoICF0IHdpdGhcbiAgICB8IE5vbmUgLT4gdCA6PSBTb21lIChUdXBsZTQgeyBhcmcxID0gYTsgYXJnMiA9IGI7IGFyZzMgPSBjOyBhcmc0ID0gZCB9KVxuICAgIHwgU29tZSAoVHVwbGU0IGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBiO1xuICAgICAgYXJncy5hcmczIDwtIGM7XG4gICAgICBhcmdzLmFyZzQgPC0gZFxuICA7O1xuXG4gIGxldCBzZXQ1IHQgYXJnMSBhcmcyIGFyZzMgYXJnNCBhcmc1ID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHQgOj0gU29tZSAoVHVwbGU1IHsgYXJnMTsgYXJnMjsgYXJnMzsgYXJnNDsgYXJnNSB9KVxuICAgIHwgU29tZSAoVHVwbGU1IGFyZ3MpIC0+XG4gICAgICBhcmdzLmFyZzEgPC0gYXJnMTtcbiAgICAgIGFyZ3MuYXJnMiA8LSBhcmcyO1xuICAgICAgYXJncy5hcmczIDwtIGFyZzM7XG4gICAgICBhcmdzLmFyZzQgPC0gYXJnNDtcbiAgICAgIGFyZ3MuYXJnNSA8LSBhcmc1XG4gIDs7XG5cbiAgbGV0IHNlbmQgKHR5cGUgY2FsbGJhY2spICh0IDogY2FsbGJhY2sgdCkgKGNhbGxiYWNrIDogY2FsbGJhY2spIDogdW5pdCA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAoVHVwbGUxIHsgYXJnMSB9KSAtPiBjYWxsYmFjayBhcmcxXG4gICAgfCBTb21lIChUdXBsZTIgeyBhcmcxOyBhcmcyIH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMlxuICAgIHwgU29tZSAoVHVwbGUzIHsgYXJnMTsgYXJnMjsgYXJnMyB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzIgYXJnM1xuICAgIHwgU29tZSAoVHVwbGU0IHsgYXJnMTsgYXJnMjsgYXJnMzsgYXJnNCB9KSAtPiBjYWxsYmFjayBhcmcxIGFyZzIgYXJnMyBhcmc0XG4gICAgfCBTb21lIChUdXBsZTUgeyBhcmcxOyBhcmcyOyBhcmczOyBhcmc0OyBhcmc1IH0pIC0+IGNhbGxiYWNrIGFyZzEgYXJnMiBhcmczIGFyZzQgYXJnNVxuICA7O1xuZW5kXG5cbm1vZHVsZSBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEFsbG93XG4gICAgfCBBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlXG4gICAgfCBSYWlzZVxuICBbQEBkZXJpdmluZyBlbnVtZXJhdGUsIHNleHBfb2ZdXG5cbiAgbGV0IGFsbG93X3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGxvdyAtPiB0cnVlXG4gICAgfCBBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlIC0+IHRydWVcbiAgICB8IFJhaXNlIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNhdmVfbGFzdF92YWx1ZV9leG4gdCBjYWxsYmFja19hcml0eSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbGxvd19hbmRfc2VuZF9sYXN0X3ZhbHVlIC0+IFNvbWUgKExhc3RfdmFsdWUuY3JlYXRlX2V4biBjYWxsYmFja19hcml0eSlcbiAgICB8IEFsbG93IC0+IE5vbmVcbiAgICB8IFJhaXNlIC0+IE5vbmVcbiAgOztcbmVuZFxuXG5tb2R1bGUgQnVzX2lkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbm1vZHVsZSBTdWJzY3JpYmVyID0gc3RydWN0XG4gIHR5cGUgJ2NhbGxiYWNrIHQgPVxuICAgIHsgYnVzX2lkIDogQnVzX2lkLnRcbiAgICA7IGNhbGxiYWNrIDogJ2NhbGxiYWNrXG4gICAgOyBleHRyYWN0X2V4biA6IGJvb2xcbiAgICA7ICgqIFtzdWJzY3JpYmVyc19pbmRleF0gaXMgdGhlIGluZGV4IG9mIHRoaXMgc3Vic2NyaWJlciBpbiB0aGUgYnVzJ3MgW3N1YnNjcmliZXJzXVxuICAgICAgICAgYXJyYXkuICBbLTFdIGluZGljYXRlcyB0aGF0IHRoaXMgc3Vic2NyaWJlciBpcyBub3Qgc3Vic2NyaWJlZC4gKilcbiAgICAgIG11dGFibGUgc3Vic2NyaWJlcnNfaW5kZXggOiBpbnRcbiAgICA7IG9uX2NhbGxiYWNrX3JhaXNlIDogKEVycm9yLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBvbl9jbG9zZSA6ICh1bml0IC0+IHVuaXQpIG9wdGlvblxuICAgIDsgc3Vic2NyaWJlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBpc19zdWJzY3JpYmVkIHQgfnRvXyA9IHQuc3Vic2NyaWJlcnNfaW5kZXggPj0gMCAmJiBCdXNfaWQuZXF1YWwgdC5idXNfaWQgdG9fXG5cbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgY2FsbGJhY2sgPSBfXG4gICAgICAgIDsgYnVzX2lkID0gX1xuICAgICAgICA7IGV4dHJhY3RfZXhuXG4gICAgICAgIDsgc3Vic2NyaWJlcnNfaW5kZXhcbiAgICAgICAgOyBvbl9jYWxsYmFja19yYWlzZVxuICAgICAgICA7IG9uX2Nsb3NlID0gX1xuICAgICAgICA7IHN1YnNjcmliZWRfZnJvbVxuICAgICAgICB9XG4gICAgOiBTZXhwLnRcbiAgICA9XG4gICAgTGlzdFxuICAgICAgWyBBdG9tIFwiQnVzLlN1YnNjcmliZXIudFwiXG4gICAgICA7IFslbWVzc2FnZVxuICAgICAgICBcIlwiXG4gICAgICAgICAgfnN1YnNjcmliZXJzX2luZGV4OlxuICAgICAgICAgICAgKGlmIFBweF9pbmxpbmVfdGVzdF9saWIuYW1fcnVubmluZyB0aGVuIE5vbmUgZWxzZSBTb21lIHN1YnNjcmliZXJzX2luZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGludCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgKG9uX2NhbGxiYWNrX3JhaXNlIDogKChFcnJvci50IC0+IHVuaXQpIG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICB+ZXh0cmFjdF9leG46XG4gICAgICAgICAgICAoaWYgZXh0cmFjdF9leG4gdGhlbiBTb21lIHRydWUgZWxzZSBOb25lIDogKGJvb2wgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIChzdWJzY3JpYmVkX2Zyb20gOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50KV1cbiAgICAgIF1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5idXNfaWQ6aWdub3JlXG4gICAgICAgIH5jYWxsYmFjazooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICAgIH5leHRyYWN0X2V4bjppZ25vcmVcbiAgICAgICAgfnN1YnNjcmliZXJzX2luZGV4Omlnbm9yZVxuICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2U6aWdub3JlXG4gICAgICAgIH5vbl9jbG9zZTppZ25vcmVcbiAgICAgICAgfnN1YnNjcmliZWRfZnJvbTppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICAgICAgfmNhbGxiYWNrXG4gICAgICAgIH5idXNfaWRcbiAgICAgICAgfmV4dHJhY3RfZXhuXG4gICAgICAgIH5zdWJzY3JpYmVyc19pbmRleFxuICAgICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgfm9uX2Nsb3NlXG4gICAgPVxuICAgIHsgYnVzX2lkXG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXh0cmFjdF9leG5cbiAgICA7IHN1YnNjcmliZXJzX2luZGV4XG4gICAgOyBvbl9jYWxsYmFja19yYWlzZVxuICAgIDsgb25fY2xvc2VcbiAgICA7IHN1YnNjcmliZWRfZnJvbVxuICAgIH1cbiAgOztcbmVuZFxuXG50eXBlICgnY2FsbGJhY2ssICdwaGFudG9tKSB0ID1cbiAgeyBidXNfaWQgOiBCdXNfaWQudFxuICA7IG5hbWUgOiBJbmZvLnQgb3B0aW9uXG4gIDsgY2FsbGJhY2tfYXJpdHkgOiAnY2FsbGJhY2sgQ2FsbGJhY2tfYXJpdHkudFxuICA7IGNyZWF0ZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnRcbiAgOyBvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgOiBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUudFxuICA7IG9uX2NhbGxiYWNrX3JhaXNlIDogRXJyb3IudCAtPiB1bml0XG4gIDsgbGFzdF92YWx1ZSA6ICdjYWxsYmFjayBMYXN0X3ZhbHVlLnQgb3B0aW9uXG4gIDsgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgOyBtdXRhYmxlIHdyaXRlX2V2ZXJfY2FsbGVkIDogYm9vbFxuICA7IG11dGFibGUgbnVtX3N1YnNjcmliZXJzIDogaW50XG4gIDsgKCogW3N1YnNjcmliZXJzXSBjb250YWlucyBhbGwgc3Vic2NyaWJlcnMgdG8gdGhlIGJ1cywgaW4gYSBjb250aWd1b3VzIHByZWZpeCBmcm9tXG4gICAgICAgaW5kZXggWzBdIHRvIFtudW1fc3Vic2NyaWJlcnMgLSAxXS4gKilcbiAgICBtdXRhYmxlIHN1YnNjcmliZXJzIDogJ2NhbGxiYWNrIFN1YnNjcmliZXIudCBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtjYWxsYmFja3NdIGhvbGRzIHRoZSBjYWxsYmFja3Mgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZW50cmllcyBvZiBbc3Vic2NyaWJlcnNdLiAqKVxuICAgIG11dGFibGUgY2FsbGJhY2tzIDogJ2NhbGxiYWNrIE9wdGlvbl9hcnJheS50XG4gIDsgbXV0YWJsZSB1bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIDogJ2NhbGxiYWNrIFN1YnNjcmliZXIudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IHNleHBfb2ZfdFxuICAgICAgX1xuICAgICAgX1xuICAgICAgeyBidXNfaWQgPSBfXG4gICAgICA7IGNhbGxiYWNrX2FyaXR5XG4gICAgICA7IGNhbGxiYWNrcyA9IF9cbiAgICAgIDsgY3JlYXRlZF9mcm9tXG4gICAgICA7IGxhc3RfdmFsdWUgPSBfXG4gICAgICA7IG5hbWVcbiAgICAgIDsgbnVtX3N1YnNjcmliZXJzXG4gICAgICA7IG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuICAgICAgOyBvbl9jYWxsYmFja19yYWlzZSA9IF9cbiAgICAgIDsgc3RhdGVcbiAgICAgIDsgc3Vic2NyaWJlcnNcbiAgICAgIDsgd3JpdGVfZXZlcl9jYWxsZWRcbiAgICAgIDsgdW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA9IF9cbiAgICAgIH1cbiAgPVxuICBsZXQgc3Vic2NyaWJlcnMgPVxuICAgIEFycmF5LmluaXQgbnVtX3N1YnNjcmliZXJzIH5mOihmdW4gaSAtPiBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHN1YnNjcmliZXJzIGkpXG4gIGluXG4gIFslbWVzc2FnZVxuICAgIFwiXCJcbiAgICAgIChuYW1lIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAoY2FsbGJhY2tfYXJpdHkgOiBfIENhbGxiYWNrX2FyaXR5LnQpXG4gICAgICAoY3JlYXRlZF9mcm9tIDogU291cmNlX2NvZGVfcG9zaXRpb24udClcbiAgICAgIChvbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgOiBPbl9zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUudClcbiAgICAgIChzdGF0ZSA6IFN0YXRlLnQpXG4gICAgICAod3JpdGVfZXZlcl9jYWxsZWQgOiBib29sKVxuICAgICAgKHN1YnNjcmliZXJzIDogXyBTdWJzY3JpYmVyLnQgQXJyYXkudCldXG47O1xuXG50eXBlICgnY2FsbGJhY2ssICdwaGFudG9tKSBidXMgPSAoJ2NhbGxiYWNrLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVhZF9vbmx5IHQgPSAodCA6PiAoXywgcmVhZCkgdClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5idXNfaWQ6aWdub3JlXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5jYWxsYmFja3M6XG4gICAgICAgIChjaGVjayAoZnVuIGNhbGxiYWNrcyAtPlxuICAgICAgICAgICBhc3NlcnQgKE9wdGlvbl9hcnJheS5sZW5ndGggY2FsbGJhY2tzID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LnN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggY2FsbGJhY2tzIC0gMSBkb1xuICAgICAgICAgICAgIGlmIGkgPCB0Lm51bV9zdWJzY3JpYmVyc1xuICAgICAgICAgICAgIHRoZW4gaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gY2FsbGJhY2tzIGkpXG4gICAgICAgICAgICAgZWxzZSBhc3NlcnQgKE9wdGlvbl9hcnJheS5pc19ub25lIGNhbGxiYWNrcyBpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5jYWxsYmFja19hcml0eTppZ25vcmVcbiAgICAgIH5jcmVhdGVkX2Zyb206aWdub3JlXG4gICAgICB+bnVtX3N1YnNjcmliZXJzOihjaGVjayAoZnVuIG51bV9zdWJzY3JpYmVycyAtPiBhc3NlcnQgKG51bV9zdWJzY3JpYmVycyA+PSAwKSkpXG4gICAgICB+b25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlOmlnbm9yZVxuICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOmlnbm9yZVxuICAgICAgfmxhc3RfdmFsdWU6aWdub3JlXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+d3JpdGVfZXZlcl9jYWxsZWQ6aWdub3JlXG4gICAgICB+c3Vic2NyaWJlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIHN1YnNjcmliZXJzIC0+XG4gICAgICAgICAgIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIHN1YnNjcmliZXJzIC0gMSBkb1xuICAgICAgICAgICAgIGlmIGkgPCB0Lm51bV9zdWJzY3JpYmVyc1xuICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IHN1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHN1YnNjcmliZXJzIGkgaW5cbiAgICAgICAgICAgICAgIFN1YnNjcmliZXIuaW52YXJpYW50IGludmFyaWFudF9hIHN1YnNjcmliZXI7XG4gICAgICAgICAgICAgICBhc3NlcnQgKGkgPSBzdWJzY3JpYmVyLnN1YnNjcmliZXJzX2luZGV4KSlcbiAgICAgICAgICAgICBlbHNlIGFzc2VydCAoT3B0aW9uX2FycmF5LmlzX25vbmUgc3Vic2NyaWJlcnMgaSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+dW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZTppZ25vcmUpXG47O1xuXG5sZXQgaXNfY2xvc2VkIHQgPSBTdGF0ZS5pc19jbG9zZWQgdC5zdGF0ZVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlICdjYWxsYmFjayB0ID0gKCdjYWxsYmFjaywgcmVhZF93cml0ZSkgYnVzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlICdjYWxsYmFjayB0ID0gKCdjYWxsYmFjaywgcmVhZCkgYnVzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0W0Bjb2xkXSBzdGFydF93cml0ZV9mYWlsaW5nIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgLT5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIltCdXMud3JpdGVdIGNhbGxlZCBvbiBjbG9zZWQgYnVzXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XVxuICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIltCdXMud3JpdGVdIGNhbGxlZCBmcm9tIGNhbGxiYWNrIG9uIHRoZSBzYW1lIGJ1c1wiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IChfLCBfKSB0XVxuICB8IE9rX3RvX3dyaXRlIC0+IGFzc2VydCBmYWxzZVxuOztcblxubGV0IGNhcGFjaXR5IHQgPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuc3Vic2NyaWJlcnNcblxubGV0IG1heWJlX3Nocmlua19jYXBhY2l0eSB0ID1cbiAgaWYgdC5udW1fc3Vic2NyaWJlcnMgKiA0IDw9IGNhcGFjaXR5IHRcbiAgdGhlbiAoXG4gICAgbGV0IGRlc2lyZWRfY2FwYWNpdHkgPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICAgIGxldCBjb3B5X2FuZF9zaHJpbmsgYXJyYXkgPVxuICAgICAgbGV0IG5ld19hcnJheSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpkZXNpcmVkX2NhcGFjaXR5IGluXG4gICAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgICB+c3JjOmFycmF5XG4gICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgfmRzdDpuZXdfYXJyYXlcbiAgICAgICAgfmRzdF9wb3M6MFxuICAgICAgICB+bGVuOnQubnVtX3N1YnNjcmliZXJzO1xuICAgICAgbmV3X2FycmF5XG4gICAgaW5cbiAgICB0LnN1YnNjcmliZXJzIDwtIGNvcHlfYW5kX3NocmluayB0LnN1YnNjcmliZXJzO1xuICAgIHQuY2FsbGJhY2tzIDwtIGNvcHlfYW5kX3NocmluayB0LmNhbGxiYWNrcylcbjs7XG5cbmxldCBhZGRfc3Vic2NyaWJlciB0IChzdWJzY3JpYmVyIDogXyBTdWJzY3JpYmVyLnQpIH5hdF9zdWJzY3JpYmVyc19pbmRleCA9XG4gIHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggPC0gYXRfc3Vic2NyaWJlcnNfaW5kZXg7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LnN1YnNjcmliZXJzIGF0X3N1YnNjcmliZXJzX2luZGV4IHN1YnNjcmliZXI7XG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSB0LmNhbGxiYWNrcyBhdF9zdWJzY3JpYmVyc19pbmRleCBzdWJzY3JpYmVyLmNhbGxiYWNrXG47O1xuXG5sZXQgcmVtb3ZlX3N1YnNjcmliZXIgdCAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KSA9XG4gIGxldCBzdWJzY3JpYmVyc19pbmRleCA9IHN1YnNjcmliZXIuc3Vic2NyaWJlcnNfaW5kZXggaW5cbiAgc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCA8LSAtMTtcbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuc3Vic2NyaWJlcnMgc3Vic2NyaWJlcnNfaW5kZXg7XG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSB0LmNhbGxiYWNrcyBzdWJzY3JpYmVyc19pbmRleFxuOztcblxubGV0IHVuc3Vic2NyaWJlX2Fzc3VtaW5nX3ZhbGlkX3N1YnNjcmliZXIgdCAoc3Vic2NyaWJlciA6IF8gU3Vic2NyaWJlci50KSA9XG4gIGxldCBzdWJzY3JpYmVyX2luZGV4ID0gc3Vic2NyaWJlci5zdWJzY3JpYmVyc19pbmRleCBpblxuICBsZXQgbGFzdF9zdWJzY3JpYmVyX2luZGV4ID0gdC5udW1fc3Vic2NyaWJlcnMgLSAxIGluXG4gIHJlbW92ZV9zdWJzY3JpYmVyIHQgc3Vic2NyaWJlcjtcbiAgaWYgc3Vic2NyaWJlcl9pbmRleCA8IGxhc3Rfc3Vic2NyaWJlcl9pbmRleFxuICB0aGVuIChcbiAgICBsZXQgbGFzdF9zdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LnN1YnNjcmliZXJzIGxhc3Rfc3Vic2NyaWJlcl9pbmRleCBpblxuICAgIHJlbW92ZV9zdWJzY3JpYmVyIHQgbGFzdF9zdWJzY3JpYmVyO1xuICAgIGFkZF9zdWJzY3JpYmVyIHQgbGFzdF9zdWJzY3JpYmVyIH5hdF9zdWJzY3JpYmVyc19pbmRleDpzdWJzY3JpYmVyX2luZGV4KTtcbiAgdC5udW1fc3Vic2NyaWJlcnMgPC0gdC5udW1fc3Vic2NyaWJlcnMgLSAxO1xuICBtYXliZV9zaHJpbmtfY2FwYWNpdHkgdFxuOztcblxubGV0IHVuc3Vic2NyaWJlIHQgc3Vic2NyaWJlciA9XG4gIGlmIFN1YnNjcmliZXIuaXNfc3Vic2NyaWJlZCBzdWJzY3JpYmVyIH50b186dC5idXNfaWRcbiAgdGhlbiAoXG4gICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPlxuICAgICAgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIDwtIHN1YnNjcmliZXIgOjogdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlXG4gICAgfCBDbG9zZWQgLT5cbiAgICAgICgqIFRoaXMgY2FuIGhhcHBlbiBpZiBkdXJpbmcgW3dyaXRlXSwgW3Vuc3Vic2NyaWJlXSBpcyBjYWxsZWQgYWZ0ZXIgW2Nsb3NlXS4gIFdlXG4gICAgICAgICBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGJlY2F1c2UgYWxsIHN1YnNjcmliZXJzIHdpbGwgYmUgdW5zdWJzY3JpYmVkIGFmdGVyIHRoZVxuICAgICAgICAgW3dyaXRlXSBmaW5pc2hlcy4gKilcbiAgICAgICgpXG4gICAgfCBPa190b193cml0ZSAtPiB1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWJzY3JpYmVyIHQgc3Vic2NyaWJlcilcbjs7XG5cbmxldFtAY29sZF0gdW5zdWJzY3JpYmVfYWZ0ZXJfZmluaXNoX3dyaXRlIHQgPVxuICBMaXN0Lml0ZXIgdC51bnN1YnNjcmliZXNfZHVyaW5nX3dyaXRlIH5mOih1bnN1YnNjcmliZV9hc3N1bWluZ192YWxpZF9zdWJzY3JpYmVyIHQpO1xuICB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUgPC0gW11cbjs7XG5cbmxldFtAY29sZF0gdW5zdWJzY3JpYmVfYWxsIHQgPVxuICBhc3NlcnQgKGlzX2Nsb3NlZCB0KTtcbiAgZm9yIGkgPSAwIHRvIHQubnVtX3N1YnNjcmliZXJzIC0gMSBkb1xuICAgIGxldCBzdWJzY3JpYmVyID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LnN1YnNjcmliZXJzIGkgaW5cbiAgICBPcHRpb24uaXRlciBzdWJzY3JpYmVyLm9uX2Nsb3NlIH5mOihmdW4gb25fY2xvc2UgLT4gb25fY2xvc2UgKCkpO1xuICAgIHJlbW92ZV9zdWJzY3JpYmVyIHQgc3Vic2NyaWJlclxuICBkb25lO1xuICB0Lm51bV9zdWJzY3JpYmVycyA8LSAwO1xuICBtYXliZV9zaHJpbmtfY2FwYWNpdHkgdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5pc2hfd3JpdGUgdCA9XG4gIGlmIG5vdCAoTGlzdC5pc19lbXB0eSB0LnVuc3Vic2NyaWJlc19kdXJpbmdfd3JpdGUpIHRoZW4gdW5zdWJzY3JpYmVfYWZ0ZXJfZmluaXNoX3dyaXRlIHQ7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCAtPiB1bnN1YnNjcmliZV9hbGwgdFxuICB8IE9rX3RvX3dyaXRlIC0+IGFzc2VydCBmYWxzZVxuICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHQuc3RhdGUgPC0gT2tfdG9fd3JpdGVcbjs7XG5cbmxldFtAY29sZF0gY2xvc2UgdCA9XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCAtPiAoKVxuICB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHQuc3RhdGUgPC0gQ2xvc2VkXG4gIHwgT2tfdG9fd3JpdGUgLT5cbiAgICB0LnN0YXRlIDwtIENsb3NlZDtcbiAgICB1bnN1YnNjcmliZV9hbGwgdFxuOztcblxubGV0IGNhbGxfb25fY2FsbGJhY2tfcmFpc2UgdCBlcnJvciA9XG4gIHRyeSB0Lm9uX2NhbGxiYWNrX3JhaXNlIGVycm9yIHdpdGhcbiAgfCBleG4gLT5cbiAgICBjbG9zZSB0O1xuICAgIHJhaXNlIGV4blxuOztcblxubGV0IGNhbGxiYWNrX3JhaXNlZCB0IGkgZXhuID1cbiAgKCogW2ldIHdhcyBpbmNyZW1lbnRlZCBiZWZvcmUgdGhlIGNhbGxiYWNrIHdhcyBjYWxsZWQsIHNvIHdlIGhhdmUgdG8gc3VidHJhY3Qgb25lXG4gICAgIGhlcmUuICBXZSBkbyB0aGlzIGhlcmUsIHJhdGhlciB0aGFuIGF0IHRoZSBjYWxsIHNpdGUsIGJlY2F1c2UgdGhlcmUgYXJlIG11bHRpcGxlXG4gICAgIGNhbGwgc2l0ZXMgZHVlIHRvIHRoZSBvcHRpbWl6YXRpb25zIG5lZWRlZCB0byBrZWVwIHRoaXMgemVyby1hbGxvYy4gKilcbiAgbGV0IHN1YnNjcmliZXIgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuc3Vic2NyaWJlcnMgKGkgLSAxKSBpblxuICBsZXQgZXJyb3IgPVxuICAgIG1hdGNoIHN1YnNjcmliZXIuZXh0cmFjdF9leG4gd2l0aFxuICAgIHwgdHJ1ZSAtPiBFcnJvci5vZl9leG4gZXhuXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKCogVGhpcyBbQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKV0gaXMgaW50ZW5kZWQgdG8gZ3JhYiB0aGUgYmFja3RyYWNlIG9mIHRoZSBbdHJ5XG4gICAgICAgICAuLi4gd2l0aF0ncyB0aGF0IGNhbGwgW2NhbGxiYWNrX3JhaXNlZF0uICBUaGUgY2FsbCBpcyBoZXJlIHJhdGhlciB0aGFuIGVhcmxpZXIgc29cbiAgICAgICAgIHRoYXQgd2Ugb25seSBkbyBpdCB3aGVuIFtzdWJzY3JpYmVyLmV4dHJhY3RfZXhuID0gZmFsc2VdLiAqKVxuICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkJ1cyBzdWJzY3JpYmVyIHJhaXNlZFwiXG4gICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAoYmFja3RyYWNlIDogQmFja3RyYWNlLnQpXG4gICAgICAgICAgKHN1YnNjcmliZXIgOiBfIFN1YnNjcmliZXIudCldXG4gICAgICB8PiBbJW9mX3NleHA6IEVycm9yLnRdXG4gIGluXG4gIG1hdGNoIHN1YnNjcmliZXIub25fY2FsbGJhY2tfcmFpc2Ugd2l0aFxuICB8IE5vbmUgLT4gY2FsbF9vbl9jYWxsYmFja19yYWlzZSB0IGVycm9yXG4gIHwgU29tZSBmIC0+XG4gICAgKHRyeSBmIGVycm9yIHdpdGhcbiAgICAgfCBleG4gLT5cbiAgICAgICBsZXQgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSBpblxuICAgICAgIGNhbGxfb25fY2FsbGJhY2tfcmFpc2VcbiAgICAgICAgIHRcbiAgICAgICAgIChsZXQgb3JpZ2luYWxfZXJyb3IgPSBlcnJvciBpblxuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJCdXMgc3Vic2NyaWJlcidzIFtvbl9jYWxsYmFja19yYWlzZV0gcmFpc2VkXCJcbiAgICAgICAgICAgICAgKGV4biA6IGV4bilcbiAgICAgICAgICAgICAgKGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50KVxuICAgICAgICAgICAgICAob3JpZ2luYWxfZXJyb3IgOiBFcnJvci50KV1cbiAgICAgICAgICB8PiBbJW9mX3NleHA6IEVycm9yLnRdKSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX2dldF9jYWxsYmFjayBhIGkgPVxuICAoKiBXZSBjb25zaWRlcmVkIHVzaW5nIFtPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuXSBhbmRcbiAgICAgW09wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuXSBoZXJlLCBidXQgYm90aCBhcmUgc2lnbmlmaWNhbnRseSBzbG93ZXIuICBDaGVja1xuICAgICB0aGUgd3JpdGUgYmVuY2htYXJrcyBpbiBbYmVuY2hfYnVzLm1sXSBiZWZvcmUgY2hhbmdpbmcgdGhpcy4gKilcbiAgT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIGEgaVxuOztcblxubGV0IHdyaXRlX25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlX2xvY2FsX25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgKGExIFtAbG9jYWxdKSA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTFcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGUyX25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxubGV0IHdyaXRlM19ub25fb3B0aW1pemVkIHQgY2FsbGJhY2tzIGExIGEyIGEzID1cbiAgbGV0IGxlbiA9IHQubnVtX3N1YnNjcmliZXJzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gZG9cbiAgICB0cnlcbiAgICAgIGxldCBjYWxsYmFjayA9IHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzICFpIGluXG4gICAgICBpbmNyIGk7XG4gICAgICBjYWxsYmFjayBhMSBhMiBhM1xuICAgIHdpdGhcbiAgICB8IGV4biAtPiBjYWxsYmFja19yYWlzZWQgdCAhaSBleG5cbiAgZG9uZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZTRfbm9uX29wdGltaXplZCB0IGNhbGxiYWNrcyBhMSBhMiBhMyBhNCA9XG4gIGxldCBsZW4gPSB0Lm51bV9zdWJzY3JpYmVycyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuIGRvXG4gICAgdHJ5XG4gICAgICBsZXQgY2FsbGJhY2sgPSB1bnNhZmVfZ2V0X2NhbGxiYWNrIGNhbGxiYWNrcyAhaSBpblxuICAgICAgaW5jciBpO1xuICAgICAgY2FsbGJhY2sgYTEgYTIgYTMgYTRcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgIWkgZXhuXG4gIGRvbmU7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgd3JpdGU1X25vbl9vcHRpbWl6ZWQgdCBjYWxsYmFja3MgYTEgYTIgYTMgYTQgYTUgPVxuICBsZXQgbGVuID0gdC5udW1fc3Vic2NyaWJlcnMgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIHRyeVxuICAgICAgbGV0IGNhbGxiYWNrID0gdW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgIWkgaW5cbiAgICAgIGluY3IgaTtcbiAgICAgIGNhbGxiYWNrIGExIGEyIGEzIGE0IGE1XG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0ICFpIGV4blxuICBkb25lO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxuKCogVGhlIFt3cml0ZV9OXSBmdW5jdGlvbnMgYXJlIHdyaXR0ZW4gdG8gbWluaW1pc2UgcmVnaXN0ZXJzIGxpdmUgYWNyb3NzIGZ1bmN0aW9uIGNhbGxzXG4gICAodGhlc2UgaGF2ZSB0byBiZSBzcGlsbGVkKS4gIFRoZXkgYXJlIGFsc28gYW5ub3RhdGVkIGZvciBwYXJ0aWFsIGlubGluaW5nICh0aGVcbiAgIG9uZS1jYWxsYmFjayBjYXNlIGJlY29tZXMgaW5saW5lZCB3aGVyZWFzIHRoZSA+MS1jYWxsYmFjay1jYXNlIHJlcXVpcmVzIGEgZnVydGhlclxuICAgZGlyZWN0IGNhbGwpLiAqKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHdyaXRlIHQgYTEgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZV9ub25fb3B0aW1pemVkIFtAaW5saW5lZCBuZXZlcl0pIHQgY2FsbGJhY2tzIGExKTtcbiAgICAobWF0Y2ggdC5sYXN0X3ZhbHVlIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBsYXN0X3ZhbHVlIC0+IExhc3RfdmFsdWUuc2V0MSBsYXN0X3ZhbHVlIGExKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZV9sb2NhbCB0IChhMSBbQGxvY2FsXSkgPVxuICBsZXQgY2FsbGJhY2tzID0gdC5jYWxsYmFja3MgaW5cbiAgdC53cml0ZV9ldmVyX2NhbGxlZCA8LSB0cnVlO1xuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDbG9zZWQgfCBXcml0ZV9pbl9wcm9ncmVzcyAtPiBzdGFydF93cml0ZV9mYWlsaW5nIHRcbiAgfCBPa190b193cml0ZSAtPlxuICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID4gMFxuICAgIHRoZW4gKFxuICAgICAgdC5zdGF0ZSA8LSBXcml0ZV9pbl9wcm9ncmVzcztcbiAgICAgIGlmIHQubnVtX3N1YnNjcmliZXJzID0gMVxuICAgICAgdGhlbiAoXG4gICAgICAgICh0cnkgKHVuc2FmZV9nZXRfY2FsbGJhY2sgY2FsbGJhY2tzIDApIGExIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IGNhbGxiYWNrX3JhaXNlZCB0IDEgZXhuKTtcbiAgICAgICAgZmluaXNoX3dyaXRlIHQpXG4gICAgICBlbHNlICh3cml0ZV9sb2NhbF9ub25fb3B0aW1pemVkIFtAaW5saW5lZCBuZXZlcl0pIHQgY2FsbGJhY2tzIGExKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZTIgdCBhMSBhMiA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgYTIgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlMl9ub25fb3B0aW1pemVkIFtAaW5saW5lZCBuZXZlcl0pIHQgY2FsbGJhY2tzIGExIGEyKTtcbiAgICAobWF0Y2ggdC5sYXN0X3ZhbHVlIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBsYXN0X3ZhbHVlIC0+IExhc3RfdmFsdWUuc2V0MiBsYXN0X3ZhbHVlIGExIGEyKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZTMgdCBhMSBhMiBhMyA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgYTIgYTMgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlM19ub25fb3B0aW1pemVkIFtAaW5saW5lZCBuZXZlcl0pIHQgY2FsbGJhY2tzIGExIGEyIGEzKTtcbiAgICAobWF0Y2ggdC5sYXN0X3ZhbHVlIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBsYXN0X3ZhbHVlIC0+IExhc3RfdmFsdWUuc2V0MyBsYXN0X3ZhbHVlIGExIGEyIGEzKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZTQgdCBhMSBhMiBhMyBhNCA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgYTIgYTMgYTQgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlNF9ub25fb3B0aW1pemVkIFtAaW5saW5lZCBuZXZlcl0pIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0KTtcbiAgICAobWF0Y2ggdC5sYXN0X3ZhbHVlIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBsYXN0X3ZhbHVlIC0+IExhc3RfdmFsdWUuc2V0NCBsYXN0X3ZhbHVlIGExIGEyIGEzIGE0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB3cml0ZTUgdCBhMSBhMiBhMyBhNCBhNSA9XG4gIGxldCBjYWxsYmFja3MgPSB0LmNhbGxiYWNrcyBpblxuICB0LndyaXRlX2V2ZXJfY2FsbGVkIDwtIHRydWU7XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCB8IFdyaXRlX2luX3Byb2dyZXNzIC0+IHN0YXJ0X3dyaXRlX2ZhaWxpbmcgdFxuICB8IE9rX3RvX3dyaXRlIC0+XG4gICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPiAwXG4gICAgdGhlbiAoXG4gICAgICB0LnN0YXRlIDwtIFdyaXRlX2luX3Byb2dyZXNzO1xuICAgICAgaWYgdC5udW1fc3Vic2NyaWJlcnMgPSAxXG4gICAgICB0aGVuIChcbiAgICAgICAgKHRyeSAodW5zYWZlX2dldF9jYWxsYmFjayBjYWxsYmFja3MgMCkgYTEgYTIgYTMgYTQgYTUgd2l0aFxuICAgICAgICAgfCBleG4gLT4gY2FsbGJhY2tfcmFpc2VkIHQgMSBleG4pO1xuICAgICAgICBmaW5pc2hfd3JpdGUgdClcbiAgICAgIGVsc2UgKHdyaXRlNV9ub25fb3B0aW1pemVkIFtAaW5saW5lZCBuZXZlcl0pIHQgY2FsbGJhY2tzIGExIGEyIGEzIGE0IGE1KTtcbiAgICAobWF0Y2ggdC5sYXN0X3ZhbHVlIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBsYXN0X3ZhbHVlIC0+IExhc3RfdmFsdWUuc2V0NSBsYXN0X3ZhbHVlIGExIGEyIGEzIGE0IGE1KVxuOztcblxubGV0IGFsbG93X3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZSB0ID1cbiAgT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLmFsbG93X3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuICAgIHQub25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlXG47O1xuXG5sZXQgY3JlYXRlX2V4blxuICAgICAgP25hbWVcbiAgICAgIGNyZWF0ZWRfZnJvbVxuICAgICAgY2FsbGJhY2tfYXJpdHlcbiAgICAgIH4ob25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlIDogT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnQpXG4gICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgPVxuICBsZXQgbGFzdF92YWx1ZSA9XG4gICAgT25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlLnNhdmVfbGFzdF92YWx1ZV9leG5cbiAgICAgIG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuICAgICAgY2FsbGJhY2tfYXJpdHlcbiAgaW5cbiAgeyBidXNfaWQgPSBCdXNfaWQuY3JlYXRlICgpXG4gIDsgbmFtZVxuICA7IGNhbGxiYWNrX2FyaXR5XG4gIDsgY3JlYXRlZF9mcm9tXG4gIDsgbnVtX3N1YnNjcmliZXJzID0gMFxuICA7IG9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZVxuICA7IG9uX2NhbGxiYWNrX3JhaXNlXG4gIDsgbGFzdF92YWx1ZVxuICA7IHN1YnNjcmliZXJzID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjBcbiAgOyBjYWxsYmFja3MgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46MFxuICA7IHN0YXRlID0gT2tfdG9fd3JpdGVcbiAgOyB3cml0ZV9ldmVyX2NhbGxlZCA9IGZhbHNlXG4gIDsgdW5zdWJzY3JpYmVzX2R1cmluZ193cml0ZSA9IFtdXG4gIH1cbjs7XG5cbmxldCBjYW5fc3Vic2NyaWJlIHQgPSBhbGxvd19zdWJzY3JpcHRpb25fYWZ0ZXJfZmlyc3Rfd3JpdGUgdCB8fCBub3QgdC53cml0ZV9ldmVyX2NhbGxlZFxuXG5sZXQgZW5sYXJnZV9jYXBhY2l0eSB0ID1cbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHkgdCBpblxuICBsZXQgbmV3X2NhcGFjaXR5ID0gSW50Lm1heCAxIChjYXBhY2l0eSAqIDIpIGluXG4gIGxldCBjb3B5X2FuZF9kb3VibGUgYXJyYXkgPVxuICAgIGxldCBuZXdfYXJyYXkgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46bmV3X2NhcGFjaXR5IGluXG4gICAgT3B0aW9uX2FycmF5LmJsaXQgfnNyYzphcnJheSB+c3JjX3BvczowIH5kc3Q6bmV3X2FycmF5IH5kc3RfcG9zOjAgfmxlbjpjYXBhY2l0eTtcbiAgICBuZXdfYXJyYXlcbiAgaW5cbiAgdC5zdWJzY3JpYmVycyA8LSBjb3B5X2FuZF9kb3VibGUgdC5zdWJzY3JpYmVycztcbiAgdC5jYWxsYmFja3MgPC0gY29weV9hbmRfZG91YmxlIHQuY2FsbGJhY2tzXG47O1xuXG5sZXQgc3Vic2NyaWJlX2V4blxuICAgICAgPyhleHRyYWN0X2V4biA9IGZhbHNlKVxuICAgICAgP29uX2NhbGxiYWNrX3JhaXNlXG4gICAgICA/b25fY2xvc2VcbiAgICAgIHRcbiAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgfmY6Y2FsbGJhY2tcbiAgPVxuICBpZiBub3QgKGNhbl9zdWJzY3JpYmUgdClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCdXMuc3Vic2NyaWJlX2V4biBjYWxsZWQgYWZ0ZXIgZmlyc3Qgd3JpdGVcIlxuICAgICAgWyVzZXhwIH5+KHN1YnNjcmliZWRfZnJvbSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpLCB7IGJ1cyA9ICh0IDogKF8sIF8pIHQpIH1dXG4gICAgICBbJXNleHBfb2Y6IFNleHAudF07XG4gIG1hdGNoIHQuc3RhdGUgd2l0aFxuICB8IENsb3NlZCAtPlxuICAgICgqIEFueXRoaW5nIHRoYXQgc2F0aXNmaWVzIHRoZSByZXR1cm4gdHlwZSB3aWxsIGRvLiAgU2luY2UgdGhlIHN1YnNjcmliZXIgaXMgbmV2ZXJcbiAgICAgICBzdG9yZWQgaW4gdGhlIGFycmF5cywgdGhlIFtvbl9jbG9zZV0gY2FsbGJhY2sgd2lsbCBuZXZlciBiZSBjYWxsZWQuICopXG4gICAgU3Vic2NyaWJlci5jcmVhdGVcbiAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgfmJ1c19pZDp0LmJ1c19pZFxuICAgICAgfmNhbGxiYWNrXG4gICAgICB+ZXh0cmFjdF9leG5cbiAgICAgIH5zdWJzY3JpYmVyc19pbmRleDooLTEpXG4gICAgICB+b25fY2FsbGJhY2tfcmFpc2VcbiAgICAgIH5vbl9jbG9zZVxuICB8IE9rX3RvX3dyaXRlIHwgV3JpdGVfaW5fcHJvZ3Jlc3MgLT5cbiAgICAoKiBUaGUgY29kZSBiZWxvdyBzaWRlIGVmZmVjdHMgW3RdLCB3aGljaCBwb3RlbnRpYWxseSBjb3VsZCBpbnRlcmZlcmUgd2l0aCBhIHdyaXRlIGluXG4gICAgICAgcHJvZ3Jlc3MuICBIb3dldmVyLCB0aGUgc2lkZSBlZmZlY3RzIGRvbid0IGNoYW5nZSB0aGUgcHJlZml4IG9mIFt0LmNhbGxiYWNrc10gdGhhdFxuICAgICAgIHdyaXRlIHVzZXM7IHRoZXkgb25seSBjaGFuZ2UgW3QuY2FsbGJhY2tzXSBiZXlvbmQgdGhhdCBwcmVmaXguICBBbmQgYWxsIHdyaXRlc1xuICAgICAgIGV4dHJhY3QgW3QubnVtX3N1YnNjcmliZXJzXSBhdCB0aGUgc3RhcnQsIHNvIHRoYXQgdGhleSB3aWxsIG5vdCBzZWUgYW55IHN1YnNlcXVlbnRcbiAgICAgICBjaGFuZ2VzIHRvIGl0LiAqKVxuICAgIGxldCBzdWJzY3JpYmVyID1cbiAgICAgIFN1YnNjcmliZXIuY3JlYXRlXG4gICAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgICB+YnVzX2lkOnQuYnVzX2lkXG4gICAgICAgIH5jYWxsYmFja1xuICAgICAgICB+ZXh0cmFjdF9leG5cbiAgICAgICAgfnN1YnNjcmliZXJzX2luZGV4OnQubnVtX3N1YnNjcmliZXJzXG4gICAgICAgIH5vbl9jYWxsYmFja19yYWlzZVxuICAgICAgICB+b25fY2xvc2VcbiAgICBpblxuICAgIGlmIGNhcGFjaXR5IHQgPSB0Lm51bV9zdWJzY3JpYmVycyB0aGVuIGVubGFyZ2VfY2FwYWNpdHkgdDtcbiAgICBhZGRfc3Vic2NyaWJlciB0IHN1YnNjcmliZXIgfmF0X3N1YnNjcmliZXJzX2luZGV4OnQubnVtX3N1YnNjcmliZXJzO1xuICAgIHQubnVtX3N1YnNjcmliZXJzIDwtIHQubnVtX3N1YnNjcmliZXJzICsgMTtcbiAgICAobWF0Y2ggdC5sYXN0X3ZhbHVlIHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBsYXN0X3ZhbHVlIC0+IExhc3RfdmFsdWUuc2VuZCBsYXN0X3ZhbHVlIGNhbGxiYWNrKTtcbiAgICBzdWJzY3JpYmVyXG47O1xuXG5sZXQgaXRlcl9leG4gP2V4dHJhY3RfZXhuIHQgc3Vic2NyaWJlZF9mcm9tIH5mID1cbiAgaWYgbm90IChjYW5fc3Vic2NyaWJlIHQpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkJ1cy5pdGVyX2V4biBjYWxsZWQgYWZ0ZXIgZmlyc3Qgd3JpdGVcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZ25vcmUgKHN1YnNjcmliZV9leG4gP2V4dHJhY3RfZXhuIHQgc3Vic2NyaWJlZF9mcm9tIH5mIDogXyBTdWJzY3JpYmVyLnQpXG47O1xuXG5tb2R1bGUgRm9sZF9hcml0eSA9IHN0cnVjdFxuICB0eXBlIChfLCBfLCBfKSB0ID1cbiAgICB8IEFyaXR5MSA6ICgnYSAtPiB1bml0LCAncyAtPiAnYSAtPiAncywgJ3MpIHRcbiAgICB8IEFyaXR5MiA6ICgnYSAtPiAnYiAtPiB1bml0LCAncyAtPiAnYSAtPiAnYiAtPiAncywgJ3MpIHRcbiAgICB8IEFyaXR5MyA6ICgnYSAtPiAnYiAtPiAnYyAtPiB1bml0LCAncyAtPiAnYSAtPiAnYiAtPiAnYyAtPiAncywgJ3MpIHRcbiAgICB8IEFyaXR5NCA6ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiB1bml0LCAncyAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAncywgJ3MpIHRcbiAgICB8IEFyaXR5NVxuICAgICAgOiAoICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IHVuaXRcbiAgICAgICAgLCAncyAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSAtPiAnc1xuICAgICAgICAsICdzIClcbiAgICAgICAgICB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGZvbGRfZXhuXG4gICAgICA/ZXh0cmFjdF9leG5cbiAgICAgICh0eXBlIGMgZiBzKVxuICAgICAgKHQgOiAoYywgXykgdClcbiAgICAgIHN1YnNjcmliZWRfZnJvbVxuICAgICAgKGZvbGRfYXJpdHkgOiAoYywgZiwgcykgRm9sZF9hcml0eS50KVxuICAgICAgfihpbml0IDogcylcbiAgICAgIH4oZiA6IGYpXG4gID1cbiAgbGV0IHN0YXRlID0gcmVmIGluaXQgaW5cbiAgaWYgbm90IChjYW5fc3Vic2NyaWJlIHQpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIkJ1cy5mb2xkX2V4biBjYWxsZWQgYWZ0ZXIgZmlyc3Qgd3JpdGVcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpdGVyX2V4blxuICAgID9leHRyYWN0X2V4blxuICAgIHRcbiAgICBzdWJzY3JpYmVkX2Zyb21cbiAgICB+ZjpcbiAgICAgIChtYXRjaCBmb2xkX2FyaXR5IHdpdGhcbiAgICAgICB8IEFyaXR5MSAtPiBmdW4gYTEgLT4gc3RhdGUgOj0gZiAhc3RhdGUgYTFcbiAgICAgICB8IEFyaXR5MiAtPiBmdW4gYTEgYTIgLT4gc3RhdGUgOj0gZiAhc3RhdGUgYTEgYTJcbiAgICAgICB8IEFyaXR5MyAtPiBmdW4gYTEgYTIgYTMgLT4gc3RhdGUgOj0gZiAhc3RhdGUgYTEgYTIgYTNcbiAgICAgICB8IEFyaXR5NCAtPiBmdW4gYTEgYTIgYTMgYTQgLT4gc3RhdGUgOj0gZiAhc3RhdGUgYTEgYTIgYTMgYTRcbiAgICAgICB8IEFyaXR5NSAtPiBmdW4gYTEgYTIgYTMgYTQgYTUgLT4gc3RhdGUgOj0gZiAhc3RhdGUgYTEgYTIgYTMgYTQgYTUpXG47O1xuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1cyBjYWxsYmFjayB3cml0ZSA9XG4gICAgICBsZXQgYnVzX3IgPSByZWFkX29ubHkgYnVzIGluXG4gICAgICBpZ25vcmUgKHN1YnNjcmliZV9leG4gYnVzX3IgWyVoZXJlXSB+ZjpjYWxsYmFjayA6IF8gU3Vic2NyaWJlci50KTtcbiAgICAgIGxldCBzdGFydGluZ19taW5vcl93b3JkcyA9IEdjLm1pbm9yX3dvcmRzICgpIGluXG4gICAgICBsZXQgc3RhcnRpbmdfbWFqb3Jfd29yZHMgPSBHYy5tYWpvcl93b3JkcyAoKSBpblxuICAgICAgd3JpdGUgKCk7XG4gICAgICBsZXQgZW5kaW5nX21pbm9yX3dvcmRzID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgICAgIGxldCBlbmRpbmdfbWFqb3Jfd29yZHMgPSBHYy5tYWpvcl93b3JkcyAoKSBpblxuICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XSAoZW5kaW5nX21pbm9yX3dvcmRzIC0gc3RhcnRpbmdfbWlub3Jfd29yZHMpIH5leHBlY3Q6MDtcbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKGVuZGluZ19tYWpvcl93b3JkcyAtIHN0YXJ0aW5nX21ham9yX3dvcmRzKSB+ZXhwZWN0OjBcbiAgICA7O1xuXG4gICAgKCogVGhpcyB0ZXN0IG9ubHkgd29ya3Mgd2hlbiBbd3JpdGVdIGlzIHByb3Blcmx5IGlubGluZWQuICBJdCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdFxuICAgICAgIFt3cml0ZV0gbmV2ZXIgYWxsb2NhdGVzIGluIGFueSBzaXR1YXRpb24uICBGb3IgZXhhbXBsZSwgaWYgdGhpcyB0ZXN0IGlzIG1vdmVkIHRvXG4gICAgICAgYW5vdGhlciBsaWJyYXJ5IGFuZCBydW4gd2l0aCBYX0xJQlJBUllfSU5MSU5JTkc9ZmFsc2UsIGl0IGZhaWxzLiAqKVxuICAgIGxldCV0ZXN0X3VuaXQgXCJ3cml0ZSBkb2Vzbid0IGFsbG9jYXRlIHdoZW4gaW5saW5lZFwiID1cbiAgICAgIGxldCBjcmVhdGUgY3JlYXRlZF9mcm9tIGFyaXR5ID1cbiAgICAgICAgY3JlYXRlX2V4blxuICAgICAgICAgIGNyZWF0ZWRfZnJvbVxuICAgICAgICAgIGFyaXR5XG4gICAgICAgICAgfm9uX3N1YnNjcmlwdGlvbl9hZnRlcl9maXJzdF93cml0ZTpSYWlzZVxuICAgICAgICAgIH5vbl9jYWxsYmFja19yYWlzZTpFcnJvci5yYWlzZVxuICAgICAgaW5cbiAgICAgIGxldCBidXMxID0gY3JlYXRlIFslaGVyZV0gQXJpdHkxIGluXG4gICAgICBsZXQgYnVzMiA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5MiBpblxuICAgICAgbGV0IGJ1czMgPSBjcmVhdGUgWyVoZXJlXSBBcml0eTMgaW5cbiAgICAgIGxldCBidXM0ID0gY3JlYXRlIFslaGVyZV0gQXJpdHk0IGluXG4gICAgICBsZXQgYnVzNSA9IGNyZWF0ZSBbJWhlcmVdIEFyaXR5NSBpblxuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzMSAoZnVuICgpIC0+ICgpKSAoZnVuICgpIC0+IHdyaXRlIGJ1czEgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb24gYnVzMiAoZnVuICgpICgpIC0+ICgpKSAoZnVuICgpIC0+IHdyaXRlMiBidXMyICgpICgpKTtcbiAgICAgIGFzc2VydF9ub19hbGxvY2F0aW9uIGJ1czMgKGZ1biAoKSAoKSAoKSAtPiAoKSkgKGZ1biAoKSAtPiB3cml0ZTMgYnVzMyAoKSAoKSAoKSk7XG4gICAgICBhc3NlcnRfbm9fYWxsb2NhdGlvblxuICAgICAgICBidXM0XG4gICAgICAgIChmdW4gKCkgKCkgKCkgKCkgLT4gKCkpXG4gICAgICAgIChmdW4gKCkgLT4gd3JpdGU0IGJ1czQgKCkgKCkgKCkgKCkpO1xuICAgICAgYXNzZXJ0X25vX2FsbG9jYXRpb25cbiAgICAgICAgYnVzNVxuICAgICAgICAoZnVuICgpICgpICgpICgpICgpIC0+ICgpKVxuICAgICAgICAoZnVuICgpIC0+IHdyaXRlNSBidXM1ICgpICgpICgpICgpICgpKVxuICAgIDs7XG4gIGVuZClcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbm9wZW4hIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlXG5pbmNsdWRlIFBlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWxfaW50ZlxuXG4oKiBUaGlzIHBvc2l0aW9uIHNob3dzIHVwIGluIHRlc3RzIGluIGEgd2F5IHRoYXQgaXMgZGlmZmljdWx0IHRvIHN1cHByZXNzLCBzbyB3ZSBkZWZpbmUgaXRcbiAgIGhlcmUgaW4gYSBwbGFjZSB0aGF0IGlzIHVubGlrZWx5IHRvIGNoYW5nZSB2ZXJ5IG9mdGVuICopXG5sZXQgZHVtbXlfc3JjX3Bvc190aGF0X3Nob3dzX3VwX2luX3Rlc3RzID0gWyVoZXJlXVxuXG5tb2R1bGUgTWFrZSAoQ29ubiA6IENsb3NhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgQ29ubiA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQ29ublxuXG4gICAgbGV0IHNleHBfb2ZfdCAoXyA6IHQpIDogU2V4cC50ID0gQXRvbSBcIjxDb25uLnQ+XCJcbiAgZW5kXG5cbiAgdHlwZSBjb25uID0gQ29ubi50XG5cbiAgbW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgIHwgQXR0ZW1wdGluZ190b19jb25uZWN0XG4gICAgICB8IE9idGFpbmVkX2FkZHJlc3Mgb2YgJ2FkZHJlc3NcbiAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3Qgb2YgRXJyb3IudFxuICAgICAgfCBDb25uZWN0ZWQgb2YgKGNvbm5bQHNleHAub3BhcXVlXSlcbiAgICAgIHwgRGlzY29ubmVjdGVkXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHR5cGUgJ2FkZHJlc3MgZXZlbnQgPSAnYWRkcmVzcyB0XG5cbiAgICBtb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYWRkcmVzcyB0ID1cbiAgICAgICAgeyBzZXJ2ZXJfbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IG9uX2V2ZW50IDogJ2FkZHJlc3MgZXZlbnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQgbG9nX2xldmVsID0gZnVuY3Rpb25cbiAgICAgIHwgQXR0ZW1wdGluZ190b19jb25uZWN0IHwgQ29ubmVjdGVkIF8gfCBEaXNjb25uZWN0ZWQgfCBPYnRhaW5lZF9hZGRyZXNzIF8gLT4gYEluZm9cbiAgICAgIHwgRmFpbGVkX3RvX2Nvbm5lY3QgXyAtPiBgRXJyb3JcbiAgICA7O1xuXG4gICAgbGV0IGhhbmRsZSB0IHsgSGFuZGxlci5zZXJ2ZXJfbmFtZSA9IF87IG9uX2V2ZW50IH0gPSBvbl9ldmVudCB0XG4gIGVuZFxuXG4gICgqIEEgcGVyc2lzdGVudCBjb25uZWN0aW9uIHRoYXQgaXMgcG9seW1vcnBoaWMgaW4gdGhlIGFkZHJlc3MgdHlwZS4gIFdlIGhpZGUgYXdheSB0aGlzXG4gICAgIHR5cGUgbGF0ZXIgc2luY2UgaXQgb25seSBhcHBlYXJzIGluIHRoZSB0eXBlIG9mIFtjcmVhdGVdLiAqKVxuICBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB7IGdldF9hZGRyZXNzIDogdW5pdCAtPiAnYWRkcmVzcyBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgIDsgY29ubmVjdCA6ICdhZGRyZXNzIC0+IENvbm4udCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgIDsgcmV0cnlfZGVsYXkgOiB1bml0IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgOyBtdXRhYmxlIGNvbm4gOiBbIGBPayBvZiBDb25uLnQgfCBgQ2xvc2Vfc3RhcnRlZCBdIEl2YXIudFxuICAgICAgOyBtdXRhYmxlIG5leHRfY29ubmVjdF9yZXN1bHQgOiBDb25uLnQgT3JfZXJyb3IudCBJdmFyLnRcbiAgICAgIDsgZXZlbnRfaGFuZGxlciA6ICdhZGRyZXNzIEV2ZW50LkhhbmRsZXIudFxuICAgICAgOyBldmVudF9idXMgOiAodW5pdCBFdmVudC50IC0+IHVuaXQsIHJlYWRfd3JpdGUpIEJ1cy50XG4gICAgICA7IGNsb3NlX3N0YXJ0ZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBjbG9zZV9maW5pc2hlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGRvbid0X3JlY29ubmVjdCA6IHVuaXQgSXZhci50XG4gICAgICA7IGFkZHJlc3NfZXF1YWwgOiAnYWRkcmVzcyAtPiAnYWRkcmVzcyAtPiBib29sXG4gICAgICA7IHNleHBfb2ZfYWRkcmVzcyA6ICdhZGRyZXNzIC0+IFNleHAudFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzZXJ2ZXJfbmFtZSB0ID0gdC5ldmVudF9oYW5kbGVyLnNlcnZlcl9uYW1lXG5cbiAgICBsZXQgaGFuZGxlX2V2ZW50ICh0eXBlIGFkZHJlc3MpIHQgKGV2ZW50IDogYWRkcmVzcyBFdmVudC50KSA9XG4gICAgICBCdXMud3JpdGVcbiAgICAgICAgdC5ldmVudF9idXNcbiAgICAgICAgKG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgICAgIHwgT2J0YWluZWRfYWRkcmVzcyAoXyA6IGFkZHJlc3MpIC0+IE9idGFpbmVkX2FkZHJlc3MgKClcbiAgICAgICAgIHwgQXR0ZW1wdGluZ190b19jb25uZWN0IC0+IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgICAgfCBGYWlsZWRfdG9fY29ubmVjdCBlIC0+IEZhaWxlZF90b19jb25uZWN0IGVcbiAgICAgICAgIHwgQ29ubmVjdGVkIGNvbm4gLT4gQ29ubmVjdGVkIGNvbm5cbiAgICAgICAgIHwgRGlzY29ubmVjdGVkIC0+IERpc2Nvbm5lY3RlZCk7XG4gICAgICBFdmVudC5oYW5kbGUgZXZlbnQgdC5ldmVudF9oYW5kbGVyXG4gICAgOztcblxuICAgICgqIFRoaXMgZnVuY3Rpb24gZm9jdXNlcyBpbiBvbiB0aGUgdGhlIGVycm9yIGl0c2VsZiwgZGlzY2FyZGluZyBpbmZvcm1hdGlvbiBhYm91dCB3aGljaFxuICAgICAgIG1vbml0b3IgY2F1Z2h0IHRoZSBlcnJvciwgaWYgYW55LlxuXG4gICAgICAgSWYgd2UgZG9uJ3QgZG8gdGhpcywgd2Ugc29tZXRpbWVzIGVuZCB1cCB3aXRoIG5vaXN5IGxvZ3Mgd2hpY2ggcmVwb3J0IHRoZSBzYW1lIGVycm9yXG4gICAgICAgYWdhaW4gYW5kIGFnYWluLCBkaWZmZXJpbmcgb25seSBhcyB0byB3aGF0IG1vbml0b3IgY2F1Z2h0IHRoZW0uICopXG4gICAgbGV0IHNhbWVfZXJyb3IgZTEgZTIgPVxuICAgICAgbGV0IHRvX3NleHAgZSA9IEV4bi5zZXhwX29mX3QgKE1vbml0b3IuZXh0cmFjdF9leG4gKEVycm9yLnRvX2V4biBlKSkgaW5cbiAgICAgIFNleHAuZXF1YWwgKHRvX3NleHAgZTEpICh0b19zZXhwIGUyKVxuICAgIDs7XG5cbiAgICAoKiBDb250aW51ZSB0cnlpbmcgdG8gY29ubmVjdCB1bnRpbCB3ZSBhcmUgYWJsZSB0byBkbyBzbywgaW4gd2hpY2ggY2FzZSB3ZSByZXR1cm4gYm90aFxuICAgICAgIHRoZSBuZXcgY29ubmVjdGlvbiBhbmQgYSBkZWZlcnJlZCB0aGF0IHdpbGwgYmVjb21lIGRldGVybWluZWQgb25jZSB3ZSBhcmUgcmVhZHkgZm9yXG4gICAgICAgdGhlIG5leHQgcmVjb25uZWN0aW9uIGF0dGVtcHQuICopXG4gICAgbGV0IHRyeV9jb25uZWN0aW5nX3VudGlsX3N1Y2Nlc3NmdWwgdCA9XG4gICAgICAoKiBXZSB0YWtlIGNhcmUgbm90IHRvIHNwYW0gbG9ncyB3aXRoIHRoZSBzYW1lIG1lc3NhZ2Ugb3ZlciBhbmQgb3ZlciBieSBjb21wYXJpbmdcbiAgICAgICAgIGVhY2ggbG9nIG1lc3NhZ2UgdGhlIHRoZSBwcmV2aW91cyBvbmUgb2YgdGhlIHNhbWUgdHlwZS4gKilcbiAgICAgIGxldCBwcmV2aW91c19hZGRyZXNzID0gcmVmIE5vbmUgaW5cbiAgICAgIGxldCBwcmV2aW91c19lcnJvciA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgY29ubmVjdCAoKSA9XG4gICAgICAgIHQuZ2V0X2FkZHJlc3MgKClcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgRXJyb3IgZSAtPiByZXR1cm4gKEVycm9yIGUpXG4gICAgICAgIHwgT2sgYWRkciAtPlxuICAgICAgICAgIGxldCBzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MgPVxuICAgICAgICAgICAgbWF0Y2ggIXByZXZpb3VzX2FkZHJlc3Mgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgcHJldmlvdXNfYWRkcmVzcyAtPiB0LmFkZHJlc3NfZXF1YWwgYWRkciBwcmV2aW91c19hZGRyZXNzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmV2aW91c19hZGRyZXNzIDo9IFNvbWUgYWRkcjtcbiAgICAgICAgICAoaWYgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzXG4gICAgICAgICAgIHRoZW4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICBlbHNlIGhhbmRsZV9ldmVudCB0IChPYnRhaW5lZF9hZGRyZXNzIGFkZHIpKVxuICAgICAgICAgID4+PSBmdW4gKCkgLT4gdC5jb25uZWN0IGFkZHJcbiAgICAgIGluXG4gICAgICBsZXQgY29ubmVjdCAoKSA9XG4gICAgICAgICgqIENhdGNoIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSB1c2VyLXByb3ZpZGVkIFt0LmdldF9hZGRyZXNzXSBvciBbdC5jb25uZWN0XSAqKVxuICAgICAgICBEZWZlcnJlZC5Pcl9lcnJvci50cnlfd2l0aF9qb2luIH5leHRyYWN0X2V4bjphbV9ydW5uaW5nX3Rlc3QgY29ubmVjdFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgbG9vcCAoKSA9XG4gICAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZDtcbiAgICAgICAgICByZXR1cm4gYENsb3NlX3N0YXJ0ZWQpXG4gICAgICAgIGVsc2UgaWYgSXZhci5pc19mdWxsIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIHRoZW4gcmV0dXJuIGBEb24ndF9yZWNvbm5lY3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcgPSB0LnJldHJ5X2RlbGF5ICgpIGluXG4gICAgICAgICAgbGV0JWJpbmQgY29ubmVjdF9yZXN1bHQgPSBjb25uZWN0ICgpIGluXG4gICAgICAgICAgSXZhci5maWxsIHQubmV4dF9jb25uZWN0X3Jlc3VsdCBjb25uZWN0X3Jlc3VsdDtcbiAgICAgICAgICB0Lm5leHRfY29ubmVjdF9yZXN1bHQgPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgICAgICAgbWF0Y2ggY29ubmVjdF9yZXN1bHQgd2l0aFxuICAgICAgICAgIHwgT2sgY29ubiAtPlxuICAgICAgICAgICAgSXZhci5maWxsIHQuY29ubiAoYE9rIGNvbm4pO1xuICAgICAgICAgICAgcmV0dXJuIChgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpKVxuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19lcnJvciA9XG4gICAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19lcnJvciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgcHJldmlvdXNfZXJyIC0+IHNhbWVfZXJyb3IgZXJyIHByZXZpb3VzX2VyclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByZXZpb3VzX2Vycm9yIDo9IFNvbWUgZXJyO1xuICAgICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfZXJyb3JcbiAgICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICBlbHNlIGhhbmRsZV9ldmVudCB0IChGYWlsZWRfdG9fY29ubmVjdCBlcnIpKVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPiBsb29wICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQgPVxuICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgKHR5cGUgYWRkcmVzcylcbiAgICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgICA/KG9uX2V2ZW50ID0gZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgICA/KHJhbmRvbV9zdGF0ZSA9IGBTdGF0ZSBSYW5kb20uU3RhdGUuZGVmYXVsdClcbiAgICAgICAgICA/KHRpbWVfc291cmNlID0gVGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgIH5hZGRyZXNzOihtb2R1bGUgQWRkcmVzcyA6IEFkZHJlc3Mgd2l0aCB0eXBlIHQgPSBhZGRyZXNzKVxuICAgICAgICAgIGdldF9hZGRyZXNzXG4gICAgICA9XG4gICAgICBsZXQgZXZlbnRfaGFuZGxlciA9IHsgRXZlbnQuSGFuZGxlci5zZXJ2ZXJfbmFtZTsgb25fZXZlbnQgfSBpblxuICAgICAgbGV0IGRlZmF1bHRfcmV0cnlfZGVsYXkgPVxuICAgICAgICBGbi5jb25zdCAoVGltZV9ucy5TcGFuLm9mX3NlYyAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gMC4xIGVsc2UgMTAuKSlcbiAgICAgIGluXG4gICAgICBsZXQgbm9uX3JhbmRvbWl6ZWRfZGVsYXkgPSBPcHRpb24udmFsdWUgcmV0cnlfZGVsYXkgfmRlZmF1bHQ6ZGVmYXVsdF9yZXRyeV9kZWxheSBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5X3NwYW4gPVxuICAgICAgICBtYXRjaCByYW5kb21fc3RhdGUgd2l0aFxuICAgICAgICB8IGBOb25fcmFuZG9tIC0+IG5vbl9yYW5kb21pemVkX2RlbGF5XG4gICAgICAgIHwgYFN0YXRlIHJhbmRvbV9zdGF0ZSAtPlxuICAgICAgICAgIGZ1biAoKSAtPlxuICAgICAgICAgICAgbGV0IHNwYW4gPSBub25fcmFuZG9taXplZF9kZWxheSAoKSBpblxuICAgICAgICAgICAgbGV0IHNwYW4gPSBUaW1lX25zLlNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IFJhbmRvbS5TdGF0ZS5mbG9hdCByYW5kb21fc3RhdGUgKHNwYW4gKi4gMC4zKSBpblxuICAgICAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgICAgICBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgdGhlbiBzcGFuICsuIGRpc3RhbmNlXG4gICAgICAgICAgICAgIGVsc2Ugc3BhbiAtLiBkaXN0YW5jZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9zZWMgd2FpdFxuICAgICAgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheSAoKSA9IFRpbWVfc291cmNlLmFmdGVyIHRpbWVfc291cmNlIChyZXRyeV9kZWxheV9zcGFuICgpKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICB7IGV2ZW50X2hhbmRsZXJcbiAgICAgICAgOyBldmVudF9idXMgPVxuICAgICAgICAgICAgQnVzLmNyZWF0ZV9leG5cbiAgICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdCB0aGVuIGR1bW15X3NyY19wb3NfdGhhdF9zaG93c191cF9pbl90ZXN0cyBlbHNlIFslaGVyZV0pXG4gICAgICAgICAgICAgIEFyaXR5MVxuICAgICAgICAgICAgICB+b25fc3Vic2NyaXB0aW9uX2FmdGVyX2ZpcnN0X3dyaXRlOkFsbG93X2FuZF9zZW5kX2xhc3RfdmFsdWVcbiAgICAgICAgICAgICAgfm9uX2NhbGxiYWNrX3JhaXNlOmlnbm9yZVxuICAgICAgICA7IGdldF9hZGRyZXNzXG4gICAgICAgIDsgY29ubmVjdFxuICAgICAgICA7IG5leHRfY29ubmVjdF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IHJldHJ5X2RlbGF5XG4gICAgICAgIDsgY29ubiA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgY2xvc2Vfc3RhcnRlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGRvbid0X3JlY29ubmVjdCA9IEl2YXIuY3JlYXRlICgpXG4gICAgICAgIDsgYWRkcmVzc19lcXVhbCA9IEFkZHJlc3MuZXF1YWxcbiAgICAgICAgOyBzZXhwX29mX2FkZHJlc3MgPSBBZGRyZXNzLnNleHBfb2ZfdFxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgKCogdGhpcyBsb29wIGZpbmlzaGVzIG9uY2UgW2Nsb3NlIHRdIGhhcyBiZWVuIGNhbGxlZCwgaW4gd2hpY2ggY2FzZSBpdCBtYWtlcyBzdXJlIHRvXG4gICAgICAgICBsZWF2ZSBbdC5jb25uXSBmaWxsZWQgd2l0aCBbYENsb3NlX3N0YXJ0ZWRdLiAqKVxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgIEBAIERlZmVycmVkLnJlcGVhdF91bnRpbF9maW5pc2hlZCAoKSAoZnVuICgpIC0+XG4gICAgICAgIGxldCViaW5kICgpID0gaGFuZGxlX2V2ZW50IHQgQXR0ZW1wdGluZ190b19jb25uZWN0IGluXG4gICAgICAgIG1hdGNoJWJpbmQgdHJ5X2Nvbm5lY3RpbmdfdW50aWxfc3VjY2Vzc2Z1bCB0IHdpdGhcbiAgICAgICAgfCBgQ2xvc2Vfc3RhcnRlZCAtPiByZXR1cm4gKGBGaW5pc2hlZCAoKSlcbiAgICAgICAgfCBgRG9uJ3RfcmVjb25uZWN0IC0+XG4gICAgICAgICAgYWJvcnRfcmVjb25uZWN0aW5nX3dpdGhfbm9fYWN0aXZlX2Nvbm5lY3Rpb24gdDtcbiAgICAgICAgICByZXR1cm4gKGBGaW5pc2hlZCAoKSlcbiAgICAgICAgfCBgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpIC0+XG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBoYW5kbGVfZXZlbnQgdCAoQ29ubmVjdGVkIGNvbm4pIGluXG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm4gaW5cbiAgICAgICAgICB0LmNvbm4gPC0gSXZhci5jcmVhdGUgKCk7XG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBoYW5kbGVfZXZlbnQgdCBEaXNjb25uZWN0ZWQgaW5cbiAgICAgICAgICAoKiB3YWl0cyB1bnRpbCBbcmV0cnlfZGVsYXkgKCldIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgdGltZSBqdXN0IGJlZm9yZSB3ZSBsYXN0XG4gICAgICAgICAgICAgdHJpZWQgdG8gY29ubmVjdCByYXRoZXIgdGhhbiB0aGUgdGltZSB3ZSBub3RpY2VkIGJlaW5nIGRpc2Nvbm5lY3RlZCwgc28gdGhhdCBpZlxuICAgICAgICAgICAgIGEgbG9uZy1saXZlZCBjb25uZWN0aW9uIGRpZXMsIHdlIHdpbGwgYXR0ZW1wdCB0byByZWNvbm5lY3QgaW1tZWRpYXRlbHkuICopXG4gICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgaWYgSXZhci5pc19mdWxsIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgYFJlcGVhdCAoKSk7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWQgdCA9XG4gICAgICAoKiBUYWtlIGNhcmUgbm90IHRvIHJldHVybiBhIGNvbm5lY3Rpb24gdGhhdCBpcyBrbm93biB0byBiZSBjbG9zZWQgYXQgdGhlIHRpbWVcbiAgICAgICAgIFtjb25uZWN0ZWRdIHdhcyBjYWxsZWQuICBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjbGllbnQgY29kZSB0aGF0IGJlaGF2ZXMgbGlrZVxuICAgICAgICAge1tcbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICA+Pj0gZnVuIGMxIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgICAgIFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIGMxXG4gICAgICAgICAgICgqIGF0IHRoaXMgcG9pbnQgd2UgYXJlIGluIGEgcmFjZSB3aXRoIHRoZSBzYW1lIGNhbGwgaW5zaWRlXG4gICAgICAgICAgICAgIHBlcnNpc3RlbnRfY2xpZW50Lm1sICopXG4gICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICAoKiBkZXBlbmRpbmcgb24gaG93IHRoZSByYWNlIHR1cm5zIG91dCwgd2UgZG9uJ3Qgd2FudCB0byBnZXQgYSBjbG9zZWQgY29ubmVjdGlvblxuICAgICAgICAgICAgICBoZXJlICopXG4gICAgICAgICAgID4+PSBmdW4gYzIgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICBdfVxuICAgICAgICAgVGhpcyBkb2Vzbid0IHJlbW92ZSB0aGUgcmFjZSBjb25kaXRpb24sIGJ1dCBpdCBtYWtlcyBpdCBsZXNzIGxpa2VseSB0byBoYXBwZW4uXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbGV0IGQgPSBJdmFyLnJlYWQgdC5jb25uIGluXG4gICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGRcbiAgICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgICAgICB8IGBPayBjb25uIC0+IHJldHVybiBjb25uKVxuICAgICAgICB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgfCBTb21lIChgT2sgY29ubikgLT5cbiAgICAgICAgICBpZiBDb25uLmlzX2Nsb3NlZCBjb25uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogZ2l2ZSB0aGUgcmVjb25uZWN0aW9uIGxvb3AgYSBjaGFuY2UgdG8gb3ZlcndyaXRlIHRoZSBpdmFyICopXG4gICAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm4gPj49IGxvb3BcbiAgICAgICAgICBlbHNlIHJldHVybiBjb25uXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3VycmVudF9jb25uZWN0aW9uIHQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuY29ubikgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBOb25lXG4gICAgICB8IFNvbWUgKGBPayBjb25uKSAtPiBTb21lIGNvbm5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcblxuICAgIGxldCBjbG9zZSB0ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgIHRoZW5cbiAgICAgICAgKCogQW5vdGhlciBjYWxsIHRvIGNsb3NlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuICBXYWl0IGZvciBpdCB0byBmaW5pc2guICopXG4gICAgICAgIGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgICBJdmFyLnJlYWQgdC5jb25uXG4gICAgICAgID4+PSBmdW4gY29ubl9vcHQgLT5cbiAgICAgICAgKG1hdGNoIGNvbm5fb3B0IHdpdGhcbiAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgfCBgT2sgY29ubiAtPiBDb25uLmNsb3NlIGNvbm4pXG4gICAgICAgID4+fCBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQgPVxuICAgICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJQZXJzaXN0ZW50IGNvbm5lY3Rpb24gY2xvc2VkXCJdXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdCA9XG4gICAgICBpZiBpc19jbG9zZWQgdFxuICAgICAgdGhlbiByZXR1cm4gY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggY3VycmVudF9jb25uZWN0aW9uIHQgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIG5vdCAoQ29ubi5pc19jbG9zZWQgeCkgLT4gcmV0dXJuIChPayB4KVxuICAgICAgICB8IFNvbWUgKF8gOiBDb25uLnQpIHwgTm9uZSAtPlxuICAgICAgICAgIERlZmVycmVkLmNob29zZVxuICAgICAgICAgICAgWyBjaG9pY2UgKEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQpXG4gICAgICAgICAgICA7IGNob2ljZSAoSXZhci5yZWFkIHQubmV4dF9jb25uZWN0X3Jlc3VsdCkgRm4uaWRcbiAgICAgICAgICAgIF0pXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdCA9XG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgdC5kb24ndF9yZWNvbm5lY3QgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2FkZHJlc3MgUG9seS50IC0+IHQgW0BAdW5ib3hlZF1cblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gUG9seS5zZXhwX29mX3QgdC5zZXhwX29mX2FkZHJlc3MgdFxuXG4gIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgKFQgdCkgPVxuICAgIFBvbHkuY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHRcbiAgOztcblxuICBsZXQgY2xvc2VfZmluaXNoZWQgKFQgdCkgPSBQb2x5LmNsb3NlX2ZpbmlzaGVkIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB0KSA9IFBvbHkuaXNfY2xvc2VkIHRcbiAgbGV0IGV2ZW50X2J1cyAoVCB0KSA9IEJ1cy5yZWFkX29ubHkgdC5ldmVudF9idXNcbiAgbGV0IGNsb3NlIChUIHQpID0gUG9seS5jbG9zZSB0XG4gIGxldCBzZXJ2ZXJfbmFtZSAoVCB0KSA9IFBvbHkuc2VydmVyX25hbWUgdFxuICBsZXQgY3VycmVudF9jb25uZWN0aW9uIChUIHQpID0gUG9seS5jdXJyZW50X2Nvbm5lY3Rpb24gdFxuICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IChUIHQpID0gUG9seS5jb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdFxuICBsZXQgY29ubmVjdGVkIChUIHQpID0gUG9seS5jb25uZWN0ZWQgdFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgID9vbl9ldmVudFxuICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICA9XG4gICAgVFxuICAgICAgKFBvbHkuY3JlYXRlXG4gICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgID9vbl9ldmVudFxuICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICB+YWRkcmVzc1xuICAgICAgICAgZ2V0X2FkZHJlc3MpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxudHlwZSB0ID1cbiAgfCBLcmJcbiAgfCBLcmJfdGVzdF9tb2RlXG4gIHwgUnBjXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIGJpbl9pb11cblxubGV0IG1hZ2ljX3dvcmQgPSBmdW5jdGlvblxuICB8IEtyYiAtPiBcIktSQjJcIlxuICB8IEtyYl90ZXN0X21vZGUgLT4gXCJLQlRcIlxuICB8IFJwYyAtPiBcIlJQQ1wiXG47O1xuXG5sZXQgZ2VuX21hZ2ljX251bWJlciB3b3JkID1cbiAgU3RyaW5nLnRvX2xpc3RfcmV2IHdvcmRcbiAgfD4gTGlzdC5mb2xkIH5pbml0OjAgfmY6KGZ1biBhY2MgYyAtPiAoYWNjICogMjU2KSArIENoYXIudG9faW50IGMpXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyIHQgPSBnZW5fbWFnaWNfbnVtYmVyIChtYWdpY193b3JkIHQpXG5sZXQgYnlfbWFnaWNfbnVtYmVyID0gSW50Lk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIGFsbCB+ZjooZnVuIHAgLT4gbWFnaWNfbnVtYmVyIHAsIHApKVxuXG4oKiBXZSBvbmNlIG1pbnRlZCBhIG5ldyBtYWdpYyBudW1iZXIgZm9yIEtyYiBpbiBvcmRlciB0byBjaGFuZ2UgdGhlIHByb3RvY29sXG4gICBuZWdvdGlhdGlvbi4gIExldCdzIGJlIGNhcmVmdWwgdGhhdCB3ZSBkb24ndCByZXVzZSB0aGUgb2xkIG1hZ2ljIG51bWJlciAqKVxubGV0IHJldGlyZWRfa3JiX3dvcmQgPSBcIktSQlwiXG5cbigqIEVuc3VyZSB0ZXN0cyBicmVhayBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmUgY2hhbmdlZCAqKVxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljIG51bWJlcnNcIiA9XG4gIGFzc2VydCAoZ2VuX21hZ2ljX251bWJlciByZXRpcmVkX2tyYl93b3JkID0gNF8zNDZfNDQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiID0gODQzXzIwN18yNDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmJfdGVzdF9tb2RlID0gNV81MjFfOTk1KTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgUnBjID0gNF80MTFfNDc0KVxuOztcblxubW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gIGxldCBhbGxfbWFnaWNfbnVtYmVyc19pbmNsdWRpbmdfcmV0aXJlZCA9XG4gICAgbGF6eSAocmV0aXJlZF9rcmJfd29yZCA6OiBMaXN0Lm1hcCBhbGwgfmY6bWFnaWNfd29yZCB8PiBMaXN0Lm1hcCB+ZjpnZW5fbWFnaWNfbnVtYmVyKVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIExpc3Rfd2l0aF9tYXhfbGVuX2ludGZcblxubW9kdWxlIE1ha2UgKENvbmZpZyA6IENvbmZpZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25maWdcblxuICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgYmluX3dyaXRlXVxuXG4gIGxldCBfX2Jpbl9yZWFkX3RfXyA9IExpc3QuX19iaW5fcmVhZF90X19cblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIHRyeSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiB3aXRoXG4gICAgfCBleG4gLT4gRXhuLnJlcmFpc2UgZXhuIChJbmZvLnRvX3N0cmluZ19odW0gY29udGV4dClcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IChiaW5fcmVhZGVyX2EgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdCBiaW5fcmVhZGVyX2EucmVhZFxuICAgIDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gYmluX3JlYWRlcl9hLnJlYWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IChiaW5fYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MudCkgPVxuICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaGFwZSA9IGJpbl9zaGFwZV90IGJpbl9hLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgYmluX2Eud3JpdGVyXG4gICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgYmluX2EucmVhZGVyXG4gICAgfVxuICA7O1xuXG4gIGxldCBvZl9saXN0X2V4biBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGlmIGxlbiA+IG1heF9sZW5cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkxpc3QgaXMgdG9vIGxhcmdlXCIgKGNvbnRleHQgOiBJbmZvLnQpIChsZW4gOiBpbnQpIChtYXhfbGVuIDogaW50KV07XG4gICAgbFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPSBMaXN0LnNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgdF9vZl9hIHNleHAgPVxuICAgIGxldCB0ID0gTGlzdC50X29mX3NleHAgdF9vZl9hIHNleHAgaW5cbiAgICBvZl9saXN0X2V4biB0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBLbm93bl9wcm90b2NvbCA9IEtub3duX3Byb3RvY29sXG5cbmxldCBtYXhfc3VwcG9ydGVkX3ZlcnNpb24gPSAxXzAwMF8wMDBcbmxldCBvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZSBudW0gPSBudW0gPiBtYXhfc3VwcG9ydGVkX3ZlcnNpb25cblxubW9kdWxlIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZSA9XG4gIExpc3Rfd2l0aF9tYXhfbGVuLk1ha2UgKHN0cnVjdFxuICAgIGxldCBtYXhfbGVuID0gMTAwXG4gICAgbGV0IGNvbnRleHQgPSBJbmZvLm9mX3N0cmluZyBcIlByb3RvY29sX3ZlcnNpb25faGVhZGVyXCJcbiAgZW5kKVxuXG50eXBlIHQgPSBpbnQgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLnRcbltAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IGtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnMgPSBsYXp5IChNYXAua2V5X3NldCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIpXG5cbmxldCBjcmVhdGVfZXhuID8oYWRkaXRpb25hbF9tYWdpY19udW1iZXJzID0gW10pIH5wcm90b2NvbCB+c3VwcG9ydGVkX3ZlcnNpb25zICgpID1cbiAgbGV0IHByb3RvY29sX21hZ2ljX251bWJlciA9IEtub3duX3Byb3RvY29sLm1hZ2ljX251bWJlciBwcm90b2NvbCBpblxuICBpZiBMaXN0LmV4aXN0cyBzdXBwb3J0ZWRfdmVyc2lvbnMgfmY6b3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2VcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlVuYWJsZSB0byBhZHZlcnRpc2UgdmVyc2lvbnMgbGFyZ2VyIHRoYW4gbWF4IHN1cHBvcnRlZCB2ZXJzaW9uXCJcbiAgICAgICAgICAobWF4X3N1cHBvcnRlZF92ZXJzaW9uIDogaW50KVxuICAgICAgICAgIChzdXBwb3J0ZWRfdmVyc2lvbnMgOiBpbnQgbGlzdCldO1xuICBpZiBMaXN0LmV4aXN0cyBhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgfmY6KEZuLm5vbiBvdXRzaWRlX21heF9zdXBwb3J0ZWRfdmVyc2lvbl9yYW5nZSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlthZGRpdGlvbmFsX21hZ2ljX251bWJlcnNdIHNob3VsZG4ndCBiZSB3aXRoaW4gW21heF9zdXBwb3J0ZWRfdmVyc2lvbl0gcmFuZ2VcIlxuICAgICAgICAgIChtYXhfc3VwcG9ydGVkX3ZlcnNpb24gOiBpbnQpXG4gICAgICAgICAgKGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyA6IGludCBsaXN0KV07XG4gIGlmIExpc3QuZXhpc3RzXG4gICAgICAgYWRkaXRpb25hbF9tYWdpY19udW1iZXJzXG4gICAgICAgfmY6KFNldC5tZW0gKGZvcmNlIGtub3duX3Byb3RvY29sX21hZ2ljX251bWJlcnMpKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW2FkZGl0aW9uYWxfbWFnaWNfbnVtYmVyc10gc2hvdWxkbid0IGJlIG92ZXJsYXBwaW5nIHdpdGggcG90ZW50aWFsIFxcXG4gICAgICAgICBbcHJvdG9jb2xfbWFnaWNfbnVtYmVyXXNcIlxuICAgICAgICAgIChhZGRpdGlvbmFsX21hZ2ljX251bWJlcnMgOiBpbnQgbGlzdClcbiAgICAgICAgICB+a25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVyczooZm9yY2Uga25vd25fcHJvdG9jb2xfbWFnaWNfbnVtYmVycyA6IEludC5TZXQudCldO1xuICBwcm90b2NvbF9tYWdpY19udW1iZXIgOjogKGFkZGl0aW9uYWxfbWFnaWNfbnVtYmVycyBAIHN1cHBvcnRlZF92ZXJzaW9ucylcbiAgfD4gQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm9mX2xpc3RfZXhuXG47O1xuXG5sZXQgcmF3X3ZlcnNpb25fbGlzdCAodCA6IHQpID0gKHQgOj4gaW50IGxpc3QpXG5cbmxldCBnZXRfcHJvdG9jb2wgKHQgOiB0KSA9XG4gIGxldCBwcm90b2NvbHMsIHZlcnNpb25zLCBfYWRkaXRpb25hbF9tYWdpY19udW1iZXJzID1cbiAgICBMaXN0LnBhcnRpdGlvbjNfbWFwXG4gICAgICAodCA6PiBpbnQgbGlzdClcbiAgICAgIH5mOihmdW4gdiAtPlxuICAgICAgICBtYXRjaCBNYXAuZmluZCBLbm93bl9wcm90b2NvbC5ieV9tYWdpY19udW1iZXIgdiB3aXRoXG4gICAgICAgIHwgU29tZSBwIC0+IGBGc3QgcFxuICAgICAgICB8IE5vbmUgLT4gaWYgb3V0c2lkZV9tYXhfc3VwcG9ydGVkX3ZlcnNpb25fcmFuZ2UgdiB0aGVuIGBUcmQgdiBlbHNlIGBTbmQgdilcbiAgaW5cbiAgbWF0Y2ggcHJvdG9jb2xzIHdpdGhcbiAgfCBbXSAtPiBPayAoTm9uZSwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IFsgcCBdIC0+IE9rIChTb21lIHAsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBfIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG11bHRpcGxlIG1hZ2ljIG51bWJlcnMgc2Vlbi5cIlxuICAgICAgICAgIChwcm90b2NvbHMgOiBLbm93bl9wcm90b2NvbC50IGxpc3QpXG4gICAgICAgICAgKHZlcnNpb25zIDogaW50IGxpc3QpXVxuOztcblxubGV0IG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXIgfih1cyA6IHQpIH4ocGVlciA6IHQpID1cbiAgbGV0IG9wZW4gT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCwgdXNfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgdXMgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCwgcGVlcl92ZXJzaW9ucyA9IGdldF9wcm90b2NvbCBwZWVyIGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sID1cbiAgICBtYXRjaCB1c19wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJObyBtYWdpYyBudW1iZXJzIHNlZW5cIiAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXVxuICBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sID1cbiAgICBtYXRjaCBwZWVyX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCogd2UgYXNzdW1lIHBlZXIgaXMgc3BlYWtpbmcgb3VyIHByb3RvY29sIGlmIFthbGxvd19sZWdhY3lfcGVlcl0gKilcbiAgICAgIGlmIGFsbG93X2xlZ2FjeV9wZWVyXG4gICAgICB0aGVuIHJldHVybiB1c19wcm90b2NvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwZWVyX3Byb3RvY29sID0gYFVua25vd24gaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogWyBgVW5rbm93biBdKV0pXG4gIGluXG4gIGlmIG5vdCAoWyVjb21wYXJlLmVxdWFsOiBLbm93bl9wcm90b2NvbC50XSB1c19wcm90b2NvbCBwZWVyX3Byb3RvY29sKVxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV1cbiAgZWxzZSAoXG4gICAgbGV0IHByb3RvY29sID0gdXNfcHJvdG9jb2wgaW5cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIHVzX3ZlcnNpb25zIHBlZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG5vIHNoYXJlZCB2ZXJzaW9uIG51bWJlcnNcIlxuICAgICAgICAgICAgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHBlZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV0pXG47O1xuXG5sZXQgbWF0Y2hlc19tYWdpY19wcmVmaXggKHQgOiB0KSB+cHJvdG9jb2wgPVxuICBsZXQgbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIExpc3QubWVtIH5lcXVhbDpJbnQuZXF1YWwgKHJhd192ZXJzaW9uX2xpc3QgdCkgbWFnaWNfbnVtYmVyXG47O1xuXG5sZXQgY29udGFpbnNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCA9XG4gIEJpbl9wcm90LlR5cGVfY2xhc3MuY252X3JlYWRlciAobWF0Y2hlc19tYWdpY19wcmVmaXggfnByb3RvY29sKSBiaW5fdC5yZWFkZXJcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4ID1cbiAgbGV0IGYgdCA9XG4gICAgTGlzdC5maW5kIEtub3duX3Byb3RvY29sLmFsbCB+ZjooZnVuIHByb3RvY29sIC0+IG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCB0KVxuICBpblxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgZiBiaW5fdC5yZWFkZXJcbjs7XG5cbmxldCBtYWdpY19udW1iZXJfYmluX3NpemUgPSA1XG5cbm1vZHVsZSBNYWdpY19wcmVmaXhfYmluX3JlcHIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgYmluX3dyaXRlXVxuXG4gICgqIFRoZSBiaW4gcHJvdCByZXByZXNlbnRhdGlvbiBvZiBhIHByb3RvY29sIHZlcnNpb24gaGVhZGVyIGlzIHRoZSBzdGFuZGFyZFxuICAgICByZXByZXNlbnRhdGlvbiBmb3IgYW4gaW50IGxpc3Q6XG5cbiAgICAgfCBuYXQwIGluZGljYXRpbmcgc2l6ZSB8IGVsZW1lbnQgMCB8IGVsZW1lbnQgMSB8IC4uLlxuXG4gICAgIFtjcmVhdGVfZXhuXSB3aWxsIGFsd2F5cyBwdXQgdGhlIGtub3duIHByb3RvY29sIG1hZ2ljIG51bWJlciBhcyBcImVsZW1lbnQgMFwiLlxuXG4gICAgIFRoZSBiaW4gc2l6ZSBvZiBcIm5hdDAgaW5kaWNhdGluZyBzaXplXCIgYW5kIFwiZWxlbWVudCAwXCIgaXMgZml4ZWQgKHRoZXJlIGFyZSBleHBlY3RcbiAgICAgdGVzdHMgdG8gbWFrZSBzdXJlIHdlIG5ldmVyIGNoYW5nZSB0aGVtKS4gKilcbiAgbGV0IGJpbl9zaXplID1cbiAgICBiaW5fc2l6ZV90IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gICAgKyBtYWdpY19udW1iZXJfYmluX3NpemVcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCAoX2xpc3RfbGVuZ3RoIDogQmluX3Byb3QuTmF0MC50KSA9IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgaW5cbiAgICBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX2ludCBidWYgfnBvc19yZWZcbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICB7IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IEludC5fX2Jpbl9yZWFkX3RfXyB9XG4gIDs7XG5lbmRcblxubGV0IGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXMgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXJcbiAgICAoZnVuIG1hZ2ljX251bWJlciAtPiAoTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyKSBtYWdpY19udW1iZXIpXG4gICAgTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9yZWFkZXJfdFxuOztcblxubGV0IGFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZXNfYmluX3NpemUgPSBNYWdpY19wcmVmaXhfYmluX3JlcHIuYmluX3NpemVcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgcmF3X3ZlcnNpb25fbGlzdCA9IHJhd192ZXJzaW9uX2xpc3RcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1ha2VfbGlzdF93aXRoX21heF9sZW4gPSBMaXN0X3dpdGhfbWF4X2xlbi5NYWtlXG5cbiAgbGV0IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSA9IG1hZ2ljX251bWJlcl9iaW5fc2l6ZVxuICBsZXQgbWF4X3N1cHBvcnRlZF92ZXJzaW9uID0gbWF4X3N1cHBvcnRlZF92ZXJzaW9uXG5lbmRcblxubGV0JXRlc3RfdW5pdCBcImJpbiBzaXplcyBhcmUgbm90IGNoYW5nZWQgYnkgYWNjaWRlbnRcIiA9XG4gICgqIEVuc3VyZSB0aGUgYmluX3NpemUgb2YgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgICAgaXMgYWx3YXlzIDEuIFRoaXMgbWVhbnMgdGhhdCByZWdhcmRsZXNzIG9mIGhvdyBsb25nIHRoZSBsaXN0IG9mIHZlcnNpb25zIGluIHRoZVxuICAgICBwcm90b2NvbCBoZWFkZXIgaXMsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHRoZSBzYW1lIG51bWJlciBvZiBieXRlcy4gVGhlXG4gICAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludCBqdW1wcyB0byAzIGJ5dGVzIGF0IHRoZSB2YWx1ZSAxMjguICopXG4gIGxldCBib3VuZGVkX2xpc3RfYmluX3NpemUgPVxuICAgIEludC5iaW5fc2l6ZV90IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5tYXhfbGVuXG4gIGluXG4gIGFzc2VydCAoYm91bmRlZF9saXN0X2Jpbl9zaXplID0gMSk7XG4gIGFzc2VydCAoNiA9IG1hZ2ljX251bWJlcl9iaW5fc2l6ZSArIGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSk7XG4gIGFzc2VydCAoXG4gICAgYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlc19iaW5fc2l6ZVxuICAgID0gbWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKVxuOztcbiIsInR5cGUgdCA9IEJpbl9wcm90Lk5hdDAudFxuW0BAZGVyaXZpbmcgYmluX3NoYXBlIH5iYXNldHlwZTpcIjg5OWUyZjRhLTQ5MGEtMTFlNi1iNjhmLWJiZDYyNDcyNTE2Y1wiXVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgWyVleHBlY3Qge3wgNTk1ZjJhNjBmMTE4MTZiMjlhNzJkZGFiMTcwMDJiNTYgfH1dXG47O1xuXG5sZXQgYmluX3QgPSBCaW5fcHJvdC5UeXBlX2NsYXNzLmJpbl9uYXQwXG5sZXQgYmluX3NpemVfdCA9IEJpbl9wcm90LlNpemUuYmluX3NpemVfbmF0MFxubGV0IGJpbl93cml0ZXJfdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX3dyaXRlcl9uYXQwXG5sZXQgYmluX3dyaXRlX3QgPSBCaW5fcHJvdC5Xcml0ZS5iaW5fd3JpdGVfbmF0MFxubGV0IGJpbl9yZWFkZXJfdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXQwXG5sZXQgYmluX3JlYWRfdCA9IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbmF0MFxuXG5sZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdm5hdDAgPVxuICBCaW5fcHJvdC5Db21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidFwiICFwb3NfcmVmXG47O1xuXG5sZXQgb2ZfaW50X2V4biA9IEJpbl9wcm90Lk5hdDAub2ZfaW50XG4iLCJvcGVuIENvcmVcbm9wZW4gUG9seVxuXG5sZXQgb2Zfd3JpdGVyIHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9ID1cbiAgbGV0IHdyaXRlIGJ1ZiB+cG9zIGEgPVxuICAgIGxldCBsZW4gPSBOYXQwLm9mX2ludF9leG4gKHNpemUgYSkgaW5cbiAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyBsZW4gaW5cbiAgICB3cml0ZSBidWYgfnBvcyBhXG4gIGluXG4gIGxldCBzaXplIGEgPVxuICAgIGxldCBsZW4gPSBOYXQwLm9mX2ludF9leG4gKHNpemUgYSkgaW5cbiAgICBOYXQwLmJpbl9zaXplX3QgbGVuICsgKChsZW4gOiBCaW5fcHJvdC5OYXQwLnQpIDo+IGludClcbiAgaW5cbiAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH1cbjs7XG5cbmxldCBvZl90eXBlX2NsYXNzIChiaW5fYSA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9IG9mX3dyaXRlciBiaW5fYS53cml0ZXJcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCBiaWdzdHJpbmdfYmluX3Byb3QgcyA9XG4gICAgICBsZXQgYmlnc3RyaW5nID0gQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQnl0ZXMuYmluX3dyaXRlcl90IHMgaW5cbiAgICAgIEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIEJpZ3N0cmluZy5TdGFibGUuVjEuYmluX3dyaXRlcl90IGJpZ3N0cmluZ1xuICAgIDs7XG5cbiAgICBsZXQgYmluX3Byb3Rfd2l0aF9sZW5ndGggcyA9XG4gICAgICBsZXQgd3JpdGVyX3dpdGhfbGVuZ3RoID0gb2Zfd3JpdGVyIEJ5dGVzLmJpbl93cml0ZXJfdCBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgd3JpdGVyX3dpdGhfbGVuZ3RoIHNcbiAgICA7O1xuXG4gICAgbGV0IHRlc3QgbGVuID1cbiAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGJpZ3N0cmluZ192ZXJzaW9uID0gYmlnc3RyaW5nX2Jpbl9wcm90IHMgaW5cbiAgICAgIGxldCB3aXRoX2xlbmd0aF92ZXJzaW9uID0gYmluX3Byb3Rfd2l0aF9sZW5ndGggcyBpblxuICAgICAgaWYgQmlnc3RyaW5nLnRvX3N0cmluZyBiaWdzdHJpbmdfdmVyc2lvbiA8PiBCaWdzdHJpbmcudG9fc3RyaW5nIHdpdGhfbGVuZ3RoX3ZlcnNpb25cbiAgICAgIHRoZW4gZmFpbHdpdGhmIFwibWlzbWF0Y2ggZm9yIGxlbmd0aCAlZFwiIGxlbiAoKVxuICAgIDs7XG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgZm9yIGxlbiA9IDAgdG8gSW50LnBvdyAyIDEwIGRvXG4gICAgICAgIHRlc3QgbGVuXG4gICAgICBkb25lO1xuICAgICAgZm9yIHBvdyA9IDEwIHRvIDIwIGRvXG4gICAgICAgIGxldCB4ID0gSW50LnBvdyAyIHBvdyBpblxuICAgICAgICB0ZXN0ICh4IC0gMSk7XG4gICAgICAgIHRlc3QgeDtcbiAgICAgICAgdGVzdCAoeCArIDEpXG4gICAgICBkb25lXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm9wZW4gQ29yZVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmVyc2lvbiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgZXF1YWwsIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA0NTIxZjQ0ZGJjNjA5OGMwYWZjMjc3MGNjODQ1NTJiMSB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgc3VtbWFyaXplIHRzID1cbiAgTGlzdC5tYXAgdHMgfmY6KGZ1biB7IG5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICB8PiBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGQgfmluaXQ6SW50LlNldC5lbXB0eSB+ZjpDb3JlLlNldC5hZGRcbjs7XG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IGRlc2NyaXB0aW9ucyA9XG4gICAgWyB7IG5hbWUgPSBcImZvb1wiOyB2ZXJzaW9uID0gMSB9XG4gICAgOyB7IG5hbWUgPSBcImZvb1wiOyB2ZXJzaW9uID0gMiB9XG4gICAgOyB7IG5hbWUgPSBcImJhclwiOyB2ZXJzaW9uID0gNSB9XG4gICAgXVxuICBpblxuICBsZXQgc3VtbWFyeSA9IHN1bW1hcml6ZSBkZXNjcmlwdGlvbnMgaW5cbiAgcHJpbnRfcyBbJXNleHAgKHN1bW1hcnkgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07XG4gIFslZXhwZWN0IHt8ICgoYmFyICg1KSkgKGZvbyAoMSAyKSkpIHx9XVxuOztcbiIsIm9wZW4hIENvcmVcblxudHlwZSAnYSB0ID1cbiAgfCBBdXRob3JpemVkIG9mICdhXG4gIHwgTm90X2F1dGhvcml6ZWQgb2YgRXJyb3IudFxuXG5sZXQgYmluZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXV0aG9yaXplZCBhIC0+IGYgYVxuICB8IE5vdF9hdXRob3JpemVkIF8gYXMgdCAtPiB0XG47O1xuXG5sZXQgYmluZF9kZWZlcnJlZCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXV0aG9yaXplZCBhIC0+IGYgYVxuICB8IE5vdF9hdXRob3JpemVkIF8gYXMgdCAtPiBFYWdlcl9kZWZlcnJlZC5yZXR1cm4gdFxuOztcblxubGV0IG1hcF9kZWZlcnJlZCB0IH5mID1cbiAgYmluZF9kZWZlcnJlZCB0IH5mOihmdW4gYSAtPiBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgYSkgfmY6KGZ1biBhIC0+IEF1dGhvcml6ZWQgYSkpXG47O1xuXG5sZXQgbGlmdF9kZWZlcnJlZCA9IG1hcF9kZWZlcnJlZCB+ZjpGbi5pZFxuIiwiKCoqIEFzeW5jX3JwYyBwcm90b2NvbCB0eXBlcywgZm9yIGludGVybmFsIHVzZSBvbmx5ICopXG5cbigqIFdBUk5JTkc6IGRvIG5vdCBjaGFuZ2UgYW55IG9mIHRoZXNlIHR5cGVzIHdpdGhvdXQgZ29vZCByZWFzb24gKilcblxub3BlbiBCaW5fcHJvdC5TdGRcbm9wZW4gU2V4cGxpYi5TdGRcbm1vZHVsZSBDb3JlX2Zvcl90ZXN0aW5nID0gQ29yZVxubW9kdWxlIFJwY190YWcgOiBDb3JlLklkZW50aWZpYWJsZSA9IENvcmUuU3RyaW5nXG5tb2R1bGUgUXVlcnlfaWQgPSBDb3JlLlVuaXF1ZV9pZC5JbnQ2MyAoc3RydWN0IGVuZClcblxubW9kdWxlIFVudXNlZF9xdWVyeV9pZCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB0IDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFF1ZXJ5X2lkLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgWyVleHBlY3Qge3wgMmI1MjhmNGIyMmYwOGUyODg3NmZmZTAyMzkzMTVhYzIgfH1dXG4gIDs7XG5cbiAgbGV0IHQgPSBRdWVyeV9pZC5jcmVhdGUgKClcbmVuZFxuXG5tb2R1bGUgUnBjX2Vycm9yIDogc2lnXG4gIG9wZW4gQ29yZVxuXG4gIHR5cGUgdCA9XG4gICAgfCBCaW5faW9fZXhuIG9mIFNleHAudFxuICAgIHwgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICB8IFdyaXRlX2Vycm9yIG9mIFNleHAudFxuICAgIHwgVW5jYXVnaHRfZXhuIG9mIFNleHAudFxuICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgIHwgVW5rbm93bl9xdWVyeV9pZCBvZiBRdWVyeV9pZC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICBpbmNsdWRlIENvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBCaW5faW9fZXhuIG9mIENvcmUuU2V4cC50XG4gICAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IFdyaXRlX2Vycm9yIG9mIENvcmUuU2V4cC50XG4gICAgICB8IFVuY2F1Z2h0X2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmltcGxlbWVudGVkX3JwYyBvZiBScGNfdGFnLnQgKiBbIGBWZXJzaW9uIG9mIENvcmUuSW50LlN0YWJsZS5WMS50IF1cbiAgICAgIHwgVW5rbm93bl9xdWVyeV9pZCBvZiBRdWVyeV9pZC50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwLCBjb21wYXJlXVxuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic3RhYmxlXCIgPVxuICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgWyVleHBlY3Qge3wgOGNjNzY2YmVmYTJjZjU2NWVhMTQ3ZDlmY2Q1ZWFhYWIgfH1dXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29yZS5Db21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIFJwY19yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gKCdhLCBScGNfZXJyb3IudCkgQ29yZS5SZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IHRdO1xuICAgIFslZXhwZWN0IHt8IDU4NzM0YTYzYTVjODNjMWI3Y2JmYzNmZWRmYTNhZTgyIHx9XVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIZWFkZXIgPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlclxuXG5tb2R1bGUgUXVlcnlfdjEgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGJlNTg4ODY5MWQ3MzQyN2IzYWM4ZWEzMDBjMTY5NDIyIHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IG1ldGFkYXRhIDogc3RyaW5nIG9wdGlvblxuICAgIDsgZGF0YSA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgZWY3MGVhMmRkMGJiODEyYTYwMWQyODgxMGU2NjM3ZDQgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuXG4gIGxldCB0b192MSB7IHRhZzsgdmVyc2lvbjsgaWQ7IG1ldGFkYXRhID0gKF8gOiBzdHJpbmcgb3B0aW9uKTsgZGF0YSB9IDogXyBRdWVyeV92MS50ID1cbiAgICB7IHRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgfVxuICA7O1xuXG4gIGxldCBvZl92MSA/bWV0YWRhdGEgeyBRdWVyeV92MS50YWc7IHZlcnNpb247IGlkOyBkYXRhIH0gPVxuICAgIHsgdGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGE7IGRhdGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSZXNwb25zZSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgeyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IGRhdGEgOiAnYSBScGNfcmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgbmVlZHNfbGVuZ3RoXTtcbiAgICBbJWV4cGVjdCB7fCBhMjJhNzZmMTkyYjNhNGVjMWMzNzExN2M2YmIyNTJmNSB8fV1cbiAgOztcblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9xdWVyeSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgWyBgUXVlcnkgb2YgJ2FcbiAgICB8IGBBYm9ydFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IDJjMzc4Njg3NjE5NzFjNzhjYzM1NWQ0M2YwODU0ODYwIHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9pbml0aWFsX21lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPVxuICAgIHsgdW51c2VkX3F1ZXJ5X2lkIDogVW51c2VkX3F1ZXJ5X2lkLnRcbiAgICA7IGluaXRpYWwgOiAoJ3Jlc3BvbnNlLCAnZXJyb3IpIENvcmUuUmVzdWx0LnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6ICh1bml0LCB1bml0KSB0XTtcbiAgICBbJWV4cGVjdCB7fCA0NmYyMzFkZGI3ZmE1OWRhOWMyNzc1OWQ1MGFlMDFhOSB8fV1cbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyZWFtX3Jlc3BvbnNlX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYE9rIG9mICdhXG4gICAgfCBgRW9mXG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB1bml0IG5lZWRzX2xlbmd0aF07XG4gICAgWyVleHBlY3Qge3wgYzFkYmNkY2ZlMmIxMmU3OTdlYzY0ZjBkNzRkZjE4MTEgfH1dXG4gIDs7XG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuXG5tb2R1bGUgTWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlICdhIG5lZWRzX2xlbmd0aCA9XG4gICAgfCBIZWFydGJlYXRcbiAgICB8IFF1ZXJ5X3YxIG9mICdhIFF1ZXJ5X3YxLm5lZWRzX2xlbmd0aFxuICAgIHwgUmVzcG9uc2Ugb2YgJ2EgUmVzcG9uc2UubmVlZHNfbGVuZ3RoXG4gICAgfCBRdWVyeSBvZiAnYSBRdWVyeS5uZWVkc19sZW5ndGhcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgIFslZXhwZWN0IHt8IGY2MGNlMmQxMDRlMmYwZDkyNzFmNjIyZWNkOTdjZWE4IHx9XVxuICA7O1xuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgc2V4cF9vZl1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubGV0JXRlc3QgXCJ2MSBtZXNzYWdlIGNvbXBhdGliaWxpdHlcIiA9XG4gIGxldCBtb2R1bGUgTWVzc2FnZV92MSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICAgIHwgSGVhcnRiZWF0XG4gICAgICB8IFF1ZXJ5IG9mICdhIFF1ZXJ5X3YxLm5lZWRzX2xlbmd0aFxuICAgICAgfCBSZXNwb25zZSBvZiAnYSBSZXNwb25zZS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdW5pdCBuZWVkc19sZW5ndGhdO1xuICAgICAgWyVleHBlY3Qge3wgMTQ5NjViMGRiOTg0NGU2YjM3NjE1MWRkODkwODA4ZTggfH1dXG4gICAgOztcbiAgZW5kXG4gIGluXG4gIGxldCB0YWcgPSBScGNfdGFnLm9mX3N0cmluZyBcInJwY1wiIGluXG4gIGxldCBxdWVyeV9pZCA9IFF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICBsZXQgdjFfcXVlcnkgPSB7IFF1ZXJ5X3YxLnRhZzsgdmVyc2lvbiA9IDE7IGlkID0gcXVlcnlfaWQ7IGRhdGEgPSAoKSB9IGluXG4gIGxldCByZXNwb25zZSA9IHsgUmVzcG9uc2UuaWQgPSBxdWVyeV9pZDsgZGF0YSA9IE9rICgpIH0gaW5cbiAgbGV0IHYxID0gTWVzc2FnZV92MS5bIEhlYXJ0YmVhdDsgUXVlcnkgdjFfcXVlcnk7IFJlc3BvbnNlIHJlc3BvbnNlIF0gaW5cbiAgbGV0IHYyID0gTWVzc2FnZS5bIEhlYXJ0YmVhdDsgUXVlcnlfdjEgdjFfcXVlcnk7IFJlc3BvbnNlIHJlc3BvbnNlIF0gaW5cbiAgbGV0IHYxX3N0ciA9XG4gICAgQ29yZV9mb3JfdGVzdGluZy5CaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nXG4gICAgICBbJWJpbl93cml0ZXI6IHVuaXQgTWVzc2FnZV92MS5uZWVkc19sZW5ndGggbGlzdF1cbiAgICAgIHYxXG4gIGluXG4gIGxldCB2Ml9zdHIgPVxuICAgIENvcmVfZm9yX3Rlc3RpbmcuQmluX3Byb3QuV3JpdGVyLnRvX3N0cmluZ1xuICAgICAgWyViaW5fd3JpdGVyOiB1bml0IE1lc3NhZ2UubmVlZHNfbGVuZ3RoIGxpc3RdXG4gICAgICB2MlxuICBpblxuICBTdHJpbmcuZXF1YWwgdjFfc3RyIHYyX3N0clxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiEgQ29yZS5Db3JlX3N0YWJsZVxuXG4gICgqIFdlIGNhbid0IG1ha2UgW0Jpbl9wcm90LlNoYXBlLnRdIGJpbmFibGUgZGlyZWN0bHkgYmVjYXVzZSB0aGF0IHdvdWxkIGludHJvZHVjZSBhXG4gICAgIGNpcmN1bGFyIGRlcGVuZGVuY3ksIHNvIHdlIG1ha2UgaXQgW0JpbmFibGUuT2Zfc2V4cGFibGVfd2l0aF91dWlkXSBoZXJlIGluc3RlYWQuIFRoaXNcbiAgICAgYWxsb3dzIHVzIHRvIHNlbmQgdGhlIHNoYXBlIG92ZXIgdGhlIHdpcmUgYXMgcGFydCBvZiB0aGVcbiAgICAgW1ZlcnNpb25lZF9ycGMuU2hhcGVfbWVudS50XS4gW0Jpbl9wcm90LlNoYXBlLkNhbm9uaWNhbC50XSwgdGhvdWdoIGV4cG9zZWQgYW5kXG4gICAgIHRoZXJlZm9yZSBiaW5hYmxlLCBpcyBub3QgYSBzdWl0YWJsZSBhbHRlcm5hdGl2ZSBiZWNhdXNlIGl0IGhhcyBhbiBleHBvbmVudGlhbFxuICAgICBleHBhbnNpb24uICopXG4gIG1vZHVsZSBTaGFwZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBCaW5fcHJvdC5TaGFwZS5TdGFibGUuVjFcblxuICAgICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgICBCaW5fcHJvdC5TaGFwZS5VdWlkLm9mX3N0cmluZyBcIjBhYTUzNTQ5LWFkODgtNGI0Zi1hYmM3LTFmODQ1M2U3YWExMVwiXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2Zfc2V4cGFibGUuVjIgKFQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IFJwYyBvZlxuICAgICAgICAgIHsgcXVlcnkgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyByZXNwb25zZSA6IFNoYXBlLlYxLnRcbiAgICAgICAgICB9XG4gICAgICB8IE9uZV93YXkgb2YgeyBtc2cgOiBTaGFwZS5WMS50IH1cbiAgICAgIHwgU3RyZWFtaW5nX3JwYyBvZlxuICAgICAgICAgIHsgcXVlcnkgOiBTaGFwZS5WMS50XG4gICAgICAgICAgOyBpbml0aWFsX3Jlc3BvbnNlIDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgdXBkYXRlX3Jlc3BvbnNlIDogU2hhcGUuVjEudFxuICAgICAgICAgIDsgZXJyb3IgOiBTaGFwZS5WMS50XG4gICAgICAgICAgfVxuICAgICAgfCBVbmtub3duXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5vcGVuISBDb3JlXG5cbm1vZHVsZSBTaGFwZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCaW5fcHJvdC5TaGFwZS50XG5cbiAgKCogQW4gdW5zdGFibGUgc2V4cGVyIHRoYXQncyB1c2VmdWwgZm9yIGV4cGVjdCB0ZXN0cywgcHJpbnRpbmcgb3V0IHRoZSBzaGFwZSBkaWdlc3RzXG4gICAgIGluc3RlYWQgb2YgdGhlIHNoYXBlcyB0aGVtc2VsdmVzLiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKEJpbl9wcm90LlNoYXBlLmV2YWxfdG9fZGlnZXN0X3N0cmluZyB0IDogc3RyaW5nKV1cbmVuZFxuXG50eXBlIHQgPSBTdGFibGUuVjEudCA9XG4gIHwgUnBjIG9mXG4gICAgICB7IHF1ZXJ5IDogU2hhcGUudFxuICAgICAgOyByZXNwb25zZSA6IFNoYXBlLnRcbiAgICAgIH1cbiAgfCBPbmVfd2F5IG9mIHsgbXNnIDogU2hhcGUudCB9XG4gIHwgU3RyZWFtaW5nX3JwYyBvZlxuICAgICAgeyBxdWVyeSA6IFNoYXBlLnRcbiAgICAgIDsgaW5pdGlhbF9yZXNwb25zZSA6IFNoYXBlLnRcbiAgICAgIDsgdXBkYXRlX3Jlc3BvbnNlIDogU2hhcGUudFxuICAgICAgOyBlcnJvciA6IFNoYXBlLnRcbiAgICAgIH1cbiAgfCBVbmtub3duXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIG1lc3NhZ2VfaGFuZGxlciA9IEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYVxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBzdHJ1Y3RcbiAgKCoqIFJlc3VsdCBvZiBhbiBbb25fbWVzc2FnZV0gY2FsbGJhY2suICBXZSBzcGxpdCB0aGUgW0NvbnRpbnVlXSBhbmQgW1dhaXQgX10gY2FzZXMgdG9cbiAgICAgIG1ha2UgaXQgY2xlYXIgdGhhdCBbQ29udGludWVdIGlzIHRoZSBleHBlY3RlZCBjYXNlLiAgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZVxuICAgICAgb3B0aW1pemVkIGZvciB0aGlzIGNhc2UuICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdG9wIG9mICdhXG4gICAgfCBDb250aW51ZVxuICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5cbm1vZHVsZSB0eXBlIFJlYWRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG4gIHZhbCBieXRlc19yZWFkIDogdCAtPiBJbnQ2My50XG5cbiAgKCoqIFN0YXJ0IHJlYWRpbmcgaW5jb21pbmcgbWVzc2FnZXMgYW5kIHBhc3MgdGhlbSB0byBbb25fbWVzc2FnZV0sIHVudGlsIGl0IHJldHVybnNcbiAgICAgIFtTdG9wIF9dLlxuXG4gICAgICBbb25fZW5kX29mX2JhdGNoXSBpcyBjYWxsZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCBiZWZvcmUgd2FpdGluZyBmb3JcbiAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gYmVjb21lIHJlYWRhYmxlIGFnYWluLiAqKVxuICB2YWwgcmVhZF9mb3JldmVyXG4gICAgOiAgdFxuICAgIC0+IG9uX21lc3NhZ2U6KEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSBIYW5kbGVyX3Jlc3VsdC50KVxuICAgIC0+IG9uX2VuZF9vZl9iYXRjaDoodW5pdCAtPiB1bml0KVxuICAgIC0+ICgnYSwgWyBgRW9mIHwgYENsb3NlZCBdKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIFNlbmRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgbWVzc2FnZV90b29fYmlnID1cbiAgICB7IHNpemUgOiBpbnRcbiAgICA7IG1heF9tZXNzYWdlX3NpemUgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IFNlbnQgb2YgJ2FcbiAgICB8IENsb3NlZFxuICAgIHwgTWVzc2FnZV90b29fYmlnIG9mIG1lc3NhZ2VfdG9vX2JpZ1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFdyaXRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG4gIHZhbCBtb25pdG9yIDogdCAtPiBNb25pdG9yLnRcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcbiAgdmFsIGJ5dGVzX3dyaXR0ZW4gOiB0IC0+IEludDYzLnRcblxuICAoKiogQmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNlbmQgbWVzc2FnZSB1c2luZyB0aGlzIHdyaXRlcixcbiAgICAgIGZvciBpbnN0YW5jZSB3aGVuIHRoZSB3cml0ZXIgaXMgY2xvc2VkIG9yIHRoZSBjb25zdW1lciBsZWF2ZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgYnkgW1JwYy5UcmFuc3BvcnRdICopXG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2ZsdXNoZWQgdF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgbXVzdCBiZWNvbWUgZGV0ZXJtaW5lZCB3aGVuIGFsbCBwcmlvciBzZW50XG4gICAgICBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkLlxuXG4gICAgICBJdCBtdXN0IGJlIE9LIHRvIGNhbGwgW2ZsdXNoZWQgdF0gYWZ0ZXIgW3RdIGhhcyBiZWVuIGNsb3NlZC4gKilcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbcmVhZHlfdG9fd3JpdGUgdF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgYSBnb29kIHRpbWUgdG8gc2VuZCBtZXNzYWdlc1xuICAgICAgYWdhaW4uIEFzeW5jIFJQQyBjYWxscyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHNlbmRpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgdG8gYXZvaWRcbiAgICAgIGZsb29kaW5nIHRoZSB0cmFuc3BvcnQuXG5cbiAgICAgIFVzaW5nIFtsZXQgcmVhZHlfdG9fd3JpdGUgPSBmbHVzaGVkXSBpcyBhbiBhY2NlcHRhYmxlIGltcGxlbWVudGF0aW9uLiAqKVxuICB2YWwgcmVhZHlfdG9fd3JpdGUgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBBbGwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc2VuZCBleGFjdGx5IG9uZSBtZXNzYWdlLiAqKVxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90IDogdCAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciAtPiAnYSAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gICgqKiBTYW1lIGFzIFtzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmddIGJ1dCB0aGUgYmlnc3RyaW5nIGNhbid0IGJlIG1vZGlmaWVkIHVudGlsIHRoZVxuICAgICAgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lcyBkZXRlcm1pbmVkLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBjb3B5aW5nIHRoZVxuICAgICAgYmlnc3RyaW5nLiAqKVxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgRGVmZXJyZWQudCBTZW5kX3Jlc3VsdC50XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxubW9kdWxlIEhlYWRlciA9IHN0cnVjdFxuICBsZXQgbGVuZ3RoID0gOFxuICBsZXQgdW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyA9IEJpZ3N0cmluZy51bnNhZmVfZ2V0X2ludDY0X2xlX2V4biBidWYgfnBvc1xuXG4gIGxldCB1bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zIHBheWxvYWRfbGVuID1cbiAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQ2NF9sZSBidWYgfnBvcyBwYXlsb2FkX2xlblxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLkhhbmRsZXJfcmVzdWx0XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLlJlYWRlclxuXG4gIHR5cGUgdCA9IFQgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSkgKiAnYSAtPiB0XG5cbiAgbGV0IHBhY2sgbSB0ID0gVCAobSwgdClcblxuICAoKiBXZSBwdXQgdHlwZSBhbm5vdGF0aW9ucyB0byBiZSBzdXJlIHRoZSB0eXBlIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUsIGkuZS4gdG8gYXZvaWRcbiAgICAgY3JlYXRpbmcgY2xvc3VyZXMgKilcbiAgbGV0IHNleHBfb2ZfdCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgKChtb2R1bGUgTSksIHQpKSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUICgobW9kdWxlIE0pLCB0KSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgYnl0ZXNfcmVhZCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogSW50NjMudCA9IE0uYnl0ZXNfcmVhZCB0XG5cbiAgbGV0IHJlYWRfZm9yZXZlciAoVCAoKG1vZHVsZSBNKSwgdCkpIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2ggOiBfIERlZmVycmVkLnQgPVxuICAgIE0ucmVhZF9mb3JldmVyIHQgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaFxuICA7O1xuXG4gIGxldCByZWFkX29uZV9tZXNzYWdlX2Jpbl9wcm90IHQgKGJpbl9yZWFkZXIgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgcmVhZF9mb3JldmVyXG4gICAgICB0XG4gICAgICB+b25fbWVzc2FnZTooZnVuIGJ1ZiB+cG9zIH5sZW4gLT5cbiAgICAgICAgbGV0IHBvc19yZWYgPSByZWYgcG9zIGluXG4gICAgICAgIGxldCB4ID0gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA8PiBwb3MgKyBsZW5cbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJtZXNzYWdlIGxlbmd0aCAoJWQpIGRpZCBub3QgbWF0Y2ggZXhwZWN0ZWQgbGVuZ3RoICglZClcIlxuICAgICAgICAgICAgKCFwb3NfcmVmIC0gcG9zKVxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICBlbHNlIFN0b3AgeClcbiAgICAgIH5vbl9lbmRfb2ZfYmF0Y2g6aWdub3JlXG4gIDs7XG5lbmRcblxubW9kdWxlIFNlbmRfcmVzdWx0ID0gVHJhbnNwb3J0X2ludGYuU2VuZF9yZXN1bHRcblxubW9kdWxlIFdyaXRlciA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gVHJhbnNwb3J0X2ludGYuV3JpdGVyXG5cbiAgdHlwZSAnYSB3cml0ZXIgPVxuICAgIHsgaW1wbCA6IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgIDsgdCA6ICdhXG4gICAgKCogV2UgY2FjaGUgdGhlIHJlc3VsdCBvZiBbc3RvcHBlZF0gYmVjYXVzZSBpdCBpcyBvZnRlbiB0aGUgW0RlZmVycmVkLmFueV0gb2Ygc2V2ZXJhbFxuICAgICAgIG90aGVyIGRlZmVycmVkcyBhbmQgd2Ugd2FudCBbY2FuX3NlbmRdIHRvIGJlIHNpbXBsZS4gKilcbiAgICA7IHN0b3BwZWQgOiB1bml0IERlZmVycmVkLnRcbiAgICB9XG5cbiAgdHlwZSB0ID0gVCA6ICdhIHdyaXRlciAtPiB0XG5cbiAgbGV0IHBhY2sgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpIHQgPVxuICAgIFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgc3RvcHBlZCA9IE0uc3RvcHBlZCB0IH1cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBTZXhwLnQgPSBNLnNleHBfb2ZfdCB0XG4gIGxldCBjbG9zZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID0gTS5jbG9zZSB0XG4gIGxldCBpc19jbG9zZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IGJvb2wgPSBNLmlzX2Nsb3NlZCB0XG4gIGxldCBtb25pdG9yIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBNb25pdG9yLnQgPSBNLm1vbml0b3IgdFxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IGludCA9IE0uYnl0ZXNfdG9fd3JpdGUgdFxuICBsZXQgYnl0ZXNfd3JpdHRlbiAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogSW50NjMudCA9IE0uYnl0ZXNfd3JpdHRlbiB0XG4gIGxldCBmbHVzaGVkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPSBNLmZsdXNoZWQgdFxuXG4gIGxldCByZWFkeV90b193cml0ZSAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWR5X3RvX3dyaXRlIHRcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIGJpbl93cml0ZXIgeCA6IF8gU2VuZF9yZXN1bHQudCA9XG4gICAgTS5zZW5kX2Jpbl9wcm90IHQgYmluX3dyaXRlciB4XG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pXG4gICAgICAgIGJpbl93cml0ZXJcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDogXyBTZW5kX3Jlc3VsdC50XG4gICAgPVxuICAgIE0uc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgICAgICAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pXG4gICAgICAgIGJpbl93cml0ZXJcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlblxuICAgIDogXyBTZW5kX3Jlc3VsdC50XG4gICAgPVxuICAgIE0uc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgYmluX3dyaXRlciB4IH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHN0b3BwZWQgKFQgeyBzdG9wcGVkOyBfIH0pID0gc3RvcHBlZFxuXG4gIGxldCBjYW5fc2VuZCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBzdG9wcGVkIH0pID1cbiAgICBub3QgKE0uaXNfY2xvc2VkIHQgfHwgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wcGVkKVxuICA7O1xuXG4gIGxldCB0cmFuc2ZlciB0ID8obWF4X251bV92YWx1ZXNfcGVyX3JlYWQgPSAxXzAwMCkgcGlwZSBmID1cbiAgICBsZXQgY29uc3VtZXIgPVxuICAgICAgUGlwZS5hZGRfY29uc3VtZXIgcGlwZSB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgICAgbGV0JW1hcCAoKSA9IGZsdXNoZWQgdCBpblxuICAgICAgICBgT2spXG4gICAgaW5cbiAgICBsZXQgZW5kX29mX3BpcGUgPVxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBsZXQgcmVjIGl0ZXIgKCkgPVxuICAgICAgICAgIGlmIGNhbl9zZW5kIHRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIFBpcGUucmVhZF9ub3cnIHBpcGUgfmNvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoOm1heF9udW1fdmFsdWVzX3Blcl9yZWFkXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGBPayBxIC0+XG4gICAgICAgICAgICAgIFF1ZXVlLml0ZXIgcSB+ZjtcbiAgICAgICAgICAgICAgUGlwZS5Db25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtIGNvbnN1bWVyO1xuICAgICAgICAgICAgICByZWFkeV90b193cml0ZSB0ID4+PiBpdGVyXG4gICAgICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgICAgICAgICBQaXBlLnZhbHVlc19hdmFpbGFibGUgcGlwZSA+Pj4gZnVuIChgT2sgfCBgRW9mKSAtPiBpdGVyICgpXG4gICAgICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGl2YXIgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKCkpXG4gICAgaW5cbiAgICBsZXQlbWFwICgpID0gRGVmZXJyZWQuYW55IFsgZW5kX29mX3BpcGU7IHN0b3BwZWQgdCBdIGluXG4gICAgUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgOztcbmVuZFxuXG50eXBlIHQgPVxuICB7IHJlYWRlciA6IFJlYWRlci50XG4gIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlIHQgPVxuICBsZXQlYmluZCAoKSA9IFdyaXRlci5jbG9zZSB0LndyaXRlciBpblxuICBSZWFkZXIuY2xvc2UgdC5yZWFkZXJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5cbigqKiBUaGUgdHlwZXMgb2YgdGhlIFtJbXBsZW1lbnRhdGlvbl0gYW5kIFtJbXBsZW1lbnRhdGlvbnNdIG1vZHVsZXMsIHdoaWNoIGhhdmVcbiAgICBhIGRlcGVuZGVuY3kgY3lsZTogW0ltcGxlbWVudGF0aW9uXSAtPiBbRGlyZWN0X3N0cmVhbV93cml0ZXJdIC0+XG4gICAgW0ltcGxlbWVudGF0aW9uc10gLT4gW0ltcGxlbWVudGF0aW9uXS4gKilcblxubW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkID0gVW5pcXVlX2lkLkludDYzICgpXG5cbm1vZHVsZSBPbl9leGNlcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNhbGxiYWNrIDogKGV4biAtPiB1bml0KSBvcHRpb24gW0BzZXhwLm9taXRfbmlsXVxuICAgIDsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSByZWMgSW1wbGVtZW50YXRpb24gOiBzaWdcbiAgbW9kdWxlIEV4cGVydCA6IHNpZ1xuICAgIG1vZHVsZSBSZXNwb25kZXIgOiBzaWdcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgcXVlcnlfaWQgOiBRdWVyeV9pZC50XG4gICAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICAgIHwgUmVwbGllZFxuICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuICBlbmRcblxuICBtb2R1bGUgRiA6IHNpZ1xuICAgIHR5cGUgKF8sIF8pIHJlc3VsdF9tb2RlID1cbiAgICAgIHwgQmxvY2tpbmcgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQpIHJlc3VsdF9tb2RlXG4gICAgICB8IERlZmVycmVkIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpIHJlc3VsdF9tb2RlXG5cbiAgICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGwgPVxuICAgICAgfCBQaXBlIG9mXG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgICAtPiAoJ2luaXQgKiAndXBkYXRlIFBpcGUuUmVhZGVyLnQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50XG4gICAgICAgICAgICAgICAgRGVmZXJyZWQudClcbiAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgICAtPiAndXBkYXRlIERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19ycGMgPVxuICAgICAgeyBiaW5fcXVlcnlfcmVhZGVyIDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICA7IGJpbl9pbml0X3dyaXRlciA6ICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICA7IGJpbl91cGRhdGVfd3JpdGVyIDogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgKCogJ2luaXQgY2FuIGJlIGFuIGVycm9yIG9yIGFuIGluaXRpYWwgc3RhdGUgKilcbiAgICAgIDsgaW1wbCA6ICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICAgIH1cblxuICAgIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgICB8IE9uZV93YXkgOlxuICAgICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAnbXNnIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgICAgLT4gdW5pdCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGMgOlxuICAgICAgICAgICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXN1bHQpXG4gICAgICAgICAgKiAoJ3Jlc3BvbnNlLCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgUnBjX2V4cGVydCA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgICAtPiBwb3M6aW50XG4gICAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgICAgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqIChFeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0LCAncmVzdWx0KSByZXN1bHRfbW9kZVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgU3RyZWFtaW5nX3JwYyA6XG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICBlbmRcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gICAgOyBzaGFwZXMgOiBScGNfc2hhcGVzLnQgTGF6eS50XG4gICAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICAgIH1cbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uXG5cbmFuZCBJbXBsZW1lbnRhdGlvbnMgOiBzaWdcbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwYyA9XG4gICAgWyBgUmFpc2VcbiAgICB8IGBDb250aW51ZVxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb25cbiAgICB8IGBDYWxsIG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICAgIHwgYEV4cGVydCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuICAgIF1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gICAgOyBvbl91bmtub3duX3JwYyA6ICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gICAgfVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIG1vZHVsZSByZWMgSW5zdGFuY2UgOiBzaWdcbiAgICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgICB8IERpcmVjdCA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcblxuICAgIHR5cGUgJ2EgdW5wYWNrZWQgPVxuICAgICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnYSBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA6IChRdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICAgICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgICA7IGNvbm5lY3Rpb25fc3RhdGUgOiAnYVxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGVcbiAgICAgICAgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgICAoRGVzY3JpcHRpb24udCAqICdhIEltcGxlbWVudGF0aW9uLnQpIG9wdGlvblxuICAgICAgOyBwYWNrZWRfc2VsZiA6IHRcbiAgICAgIH1cblxuICAgIGFuZCB0ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuICBlbmRcbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uc1xuXG5hbmQgRGlyZWN0X3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgbW9kdWxlIFBlbmRpbmdfcmVzcG9uc2UgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3JtYWwgb2YgJ2FcbiAgICAgIHwgRXhwZXJ0IG9mIHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3Rfc3RhcnRlZCBvZiAnYSBQZW5kaW5nX3Jlc3BvbnNlLnQgUXVldWUudFxuICAgICAgfCBTdGFydGVkXG4gIGVuZFxuXG4gIG1vZHVsZSBJZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICA7IGNsb3NlZCA6IHVuaXQgSXZhci50XG4gICAgOyBpbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50XG4gICAgOyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfYmluX3dyaXRlci50XG4gICAgOyBncm91cHMgOiAnYSBncm91cF9lbnRyeSBCYWcudFxuICAgIH1cblxuICBhbmQgJ2EgZ3JvdXBfZW50cnkgPVxuICAgIHsgZ3JvdXAgOiAnYSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC50XG4gICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICB9XG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA9ICdhIHRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFtjb21wb25lbnRzXSBpcyBvbmx5IHRyYWNrZWQgc2VwYXJhdGVseSBmcm9tIFtjb21wb25lbnRzX2J5X2lkXSBzbyB3ZSBjYW4gaXRlcmF0ZVxuICAgICAgICAgICBvdmVyIGl0cyBlbGVtZW50cyBtb3JlIHF1aWNrbHkgdGhhbiB3ZSBjb3VsZCBpdGVyYXRlIG92ZXIgdGhlIHZhbHVlcyBvZlxuICAgICAgICAgICBbY29tcG9uZW50c19ieV9pZF0uICopXG4gICAgICAgIG11dGFibGUgY29tcG9uZW50cyA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy50XG4gICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgIH1cblxuICAgIGFuZCAnYSBjb21wb25lbnQgPVxuICAgICAgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy5FbHQudFxuICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIGdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgfVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIDo9ICdhIHRcbmVuZCA9XG4gIERpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmFuZCBDYWNoZWRfYmluX3dyaXRlciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICA7IG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICA7IGJpbl93cml0ZXIgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIH1cbmVuZCA9XG4gIENhY2hlZF9iaW5fd3JpdGVyXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLk9uX2V4Y2VwdGlvbi50ID1cbiAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlX2Nvbm5lY3Rpb24gPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSB0cnVlIH1cbmxldCBjb250aW51ZSA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IGZhbHNlIH1cblxubGV0IGhhbmRsZV9leG5cbiAgICAgIHsgY2FsbGJhY2s7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIH1cbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIGV4blxuICA9XG4gIE9wdGlvbi5pdGVyIGNhbGxiYWNrIH5mOihmdW4gY2FsbGJhY2sgLT4gY2FsbGJhY2sgZXhuKTtcbiAgaWYgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgdGhlbiBNb25pdG9yLnNlbmRfZXhuIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG5cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEV4cGVydC5SZXNwb25kZXIudCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgcXVlcnlfaWQgd3JpdGVyID0geyBxdWVyeV9pZDsgd3JpdGVyOyByZXNwb25kZWQgPSBmYWxzZSB9XG4gIGVuZFxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgfCBSZXBsaWVkXG4gICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBGID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0X21vZGUgPSAoJ2EsICdiKSBGLnJlc3VsdF9tb2RlID1cbiAgICB8IEJsb2NraW5nIDogKCdhLCAnYSBPcl9ub3RfYXV0aG9yaXplZC50KSByZXN1bHRfbW9kZVxuICAgIHwgRGVmZXJyZWQgOiAoJ2EsICdhIE9yX25vdF9hdXRob3JpemVkLnQgRGVmZXJyZWQudCkgcmVzdWx0X21vZGVcblxuICB0eXBlICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGwgPVxuICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgRi5zdHJlYW1pbmdfaW1wbCA9XG4gICAgfCBQaXBlIG9mXG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gJ3F1ZXJ5XG4gICAgICAgICAtPiAoJ2luaXQgKiAndXBkYXRlIFBpcGUuUmVhZGVyLnQsICdpbml0KSBSZXN1bHQudCBPcl9ub3RfYXV0aG9yaXplZC50IERlZmVycmVkLnQpXG4gICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICd1cGRhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfcnBjID1cbiAgICAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIEYuc3RyZWFtaW5nX3JwYyA9XG4gICAgeyBiaW5fcXVlcnlfcmVhZGVyIDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgOyBiaW5faW5pdF93cml0ZXIgOiAnaW5pdCBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIDsgYmluX3VwZGF0ZV93cml0ZXIgOiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgKCogJ2luaXQgY2FuIGJlIGFuIGVycm9yIG9yIGFuIGluaXRpYWwgc3RhdGUgKilcbiAgICA7IGltcGwgOiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgfVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEYudCA9XG4gICAgfCBPbmVfd2F5IDpcbiAgICAgICAgJ21zZyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAnbXNnIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+IHVuaXQgT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBScGMgOlxuICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ3F1ZXJ5IC0+ICdyZXN1bHQpXG4gICAgICAgICogKCdyZXNwb25zZSwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjX2V4cGVydCA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAtPiBCaWdzdHJpbmcudFxuICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgLT4gJ3Jlc3VsdClcbiAgICAgICAgKiAoRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCwgJ3Jlc3VsdCkgcmVzdWx0X21vZGVcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgU3RyZWFtaW5nX3JwYyA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX3JwY1xuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBfID0gZnVuY3Rpb25cbiAgICB8IE9uZV93YXlfZXhwZXJ0IF8gfCBPbmVfd2F5IF8gLT4gWyVtZXNzYWdlIFwib25lLXdheVwiXVxuICAgIHwgUnBjX2V4cGVydCBfIHwgUnBjIF8gLT4gWyVtZXNzYWdlIFwicnBjXCJdXG4gICAgfCBTdHJlYW1pbmdfcnBjIF8gLT4gWyVtZXNzYWdlIFwic3RyZWFtaW5nLXJwY1wiXVxuICA7O1xuXG4gIGxldCBsaWZ0IHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgT25lX3dheSAoYmluX21zZywgaW1wbCkgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHN0ciA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBzdHIpXG4gICAgICBpblxuICAgICAgT25lX3dheSAoYmluX21zZywgaW1wbClcbiAgICB8IE9uZV93YXlfZXhwZXJ0IGltcGwgLT5cbiAgICAgIE9uZV93YXlfZXhwZXJ0XG4gICAgICAgIChmdW4gc3RhdGUgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgYnVmIH5wb3MgfmxlbikpXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIGxldCBpbXBsIHN0YXRlIHEgPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSlcbiAgICAgIGluXG4gICAgICBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBCbG9ja2luZylcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgbGV0IGltcGwgc3RhdGUgcSA9XG4gICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgIGltcGwgYXV0aG9yaXplZF9zdGF0ZSBxKVxuICAgICAgaW5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIERlZmVycmVkKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgQmxvY2tpbmcpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgaW5cbiAgICAgIFJwY19leHBlcnQgKGltcGwsIEJsb2NraW5nKVxuICAgIHwgUnBjX2V4cGVydCAoaW1wbCwgRGVmZXJyZWQpIC0+XG4gICAgICBsZXQgaW1wbCBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgaW5cbiAgICAgIFJwY19leHBlcnQgKGltcGwsIERlZmVycmVkKVxuICAgIHwgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfSAtPlxuICAgICAgbGV0IGltcGwgPVxuICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgfCBQaXBlIGltcGwgLT5cbiAgICAgICAgICBQaXBlXG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICAgIE9yX25vdF9hdXRob3JpemVkLmJpbmRfZGVmZXJyZWQgKGYgc3RhdGUpIH5mOihmdW4gYXV0aG9yaXplZF9zdGF0ZSAtPlxuICAgICAgICAgICAgICAgICBpbXBsIGF1dGhvcml6ZWRfc3RhdGUgcSkpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT5cbiAgICAgICAgICBEaXJlY3RcbiAgICAgICAgICAgIChmdW4gc3RhdGUgcSB3IC0+XG4gICAgICAgICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5iaW5kX2RlZmVycmVkIChmIHN0YXRlKSB+ZjooZnVuIGF1dGhvcml6ZWRfc3RhdGUgLT5cbiAgICAgICAgICAgICAgICAgaW1wbCBhdXRob3JpemVkX3N0YXRlIHEgdykpXG4gICAgICBpblxuICAgICAgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfVxuICA7O1xuXG4gIGxldCBsaWZ0X2RlZmVycmVkICh0eXBlIGEgYikgKHQgOiBiIHQpIH4oZiA6IGEgLT4gYiBEZWZlcnJlZC50KSA6IGEgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBPbmVfd2F5IChiaW5fbXNnLCBpbXBsKSAtPlxuICAgICAgT25lX3dheVxuICAgICAgICAoIGJpbl9tc2dcbiAgICAgICAgLCBmdW4gc3RhdGUgc3RyIC0+IEVhZ2VyX2RlZmVycmVkLmJpbmQgKGYgc3RhdGUpIH5mOihmdW4gc3RhdGUgLT4gaW1wbCBzdGF0ZSBzdHIpXG4gICAgICAgIClcbiAgICB8IE9uZV93YXlfZXhwZXJ0IGltcGwgLT5cbiAgICAgIE9uZV93YXlfZXhwZXJ0XG4gICAgICAgIChmdW4gc3RhdGUgYnVmIH5wb3MgfmxlbiAtPlxuICAgICAgICAgICBFYWdlcl9kZWZlcnJlZC5iaW5kIChmIHN0YXRlKSB+ZjooZnVuIHN0YXRlIC0+IGltcGwgc3RhdGUgYnVmIH5wb3MgfmxlbikpXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCBCbG9ja2luZykgLT5cbiAgICAgIFJwY1xuICAgICAgICAoIGJpbl9xdWVyeVxuICAgICAgICAsIGJpbl9yZXNwb25zZVxuICAgICAgICAsIChmdW4gc3RhdGUgcSAtPlxuICAgICAgICAgICAgIGxldCVtYXAuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICAgaW1wbCBzdGF0ZSBxKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgUnBjXG4gICAgICAgICggYmluX3F1ZXJ5XG4gICAgICAgICwgYmluX3Jlc3BvbnNlXG4gICAgICAgICwgKGZ1biBzdGF0ZSBxIC0+XG4gICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICAgaW1wbCBzdGF0ZSBxKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIERlZmVycmVkKSAtPlxuICAgICAgUnBjX2V4cGVydFxuICAgICAgICAoIChmdW4gc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgICBsZXQlYmluZC5FYWdlcl9kZWZlcnJlZCBzdGF0ZSA9IGYgc3RhdGUgaW5cbiAgICAgICAgICAgIGltcGwgc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuKVxuICAgICAgICAsIERlZmVycmVkIClcbiAgICB8IFJwY19leHBlcnQgKGltcGwsIEJsb2NraW5nKSAtPlxuICAgICAgUnBjX2V4cGVydFxuICAgICAgICAoIChmdW4gc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgICAgICBsZXQlbWFwLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgaW1wbCBzdGF0ZSByZXNwIGJ1ZiB+cG9zIH5sZW4pXG4gICAgICAgICwgRGVmZXJyZWQgKVxuICAgIHwgU3RyZWFtaW5nX3JwYyB7IGJpbl9xdWVyeV9yZWFkZXI7IGJpbl9pbml0X3dyaXRlcjsgYmluX3VwZGF0ZV93cml0ZXI7IGltcGwgfSAtPlxuICAgICAgbGV0IGltcGwgPVxuICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgfCBQaXBlIGltcGwgLT5cbiAgICAgICAgICBQaXBlXG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgLT5cbiAgICAgICAgICAgICAgIGxldCViaW5kLkVhZ2VyX2RlZmVycmVkIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgICAgICAgICAgICAgaW1wbCBzdGF0ZSBxKVxuICAgICAgICB8IERpcmVjdCBpbXBsIC0+XG4gICAgICAgICAgRGlyZWN0XG4gICAgICAgICAgICAoZnVuIHN0YXRlIHEgdyAtPlxuICAgICAgICAgICAgICAgbGV0JWJpbmQuRWFnZXJfZGVmZXJyZWQgc3RhdGUgPSBmIHN0YXRlIGluXG4gICAgICAgICAgICAgICBpbXBsIHN0YXRlIHEgdylcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIHsgYmluX3F1ZXJ5X3JlYWRlcjsgYmluX2luaXRfd3JpdGVyOyBiaW5fdXBkYXRlX3dyaXRlcjsgaW1wbCB9XG4gIDs7XG5lbmRcblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSB0ID0gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuSW1wbGVtZW50YXRpb24udCA9XG4gIHsgdGFnIDogUnBjX3RhZy50XG4gIDsgdmVyc2lvbiA6IGludFxuICA7IGYgOiAnY29ubmVjdGlvbl9zdGF0ZSBGLnRcbiAgOyBzaGFwZXMgOiBScGNfc2hhcGVzLnQgTGF6eS50XG4gIDsgb25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBScGNfdGFnLnRvX3N0cmluZyB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbiB9XG5sZXQgc2hhcGVzIHQgPSBmb3JjZSB0LnNoYXBlc1xuXG5sZXQgbGlmdCAodHlwZSBhIGIpICh0IDogYSB0KSB+KGYgOiBiIC0+IGEpIDogYiB0ID1cbiAgeyB0IHdpdGggZiA9IEYubGlmdCB0LmYgfmY6KGZ1biBiIC0+IE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgYikpIH1cbjs7XG5cbmxldCB3aXRoX2F1dGhvcml6YXRpb24gdCB+ZiA9IHsgdCB3aXRoIGYgPSBGLmxpZnQgdC5mIH5mIH1cbmxldCBsaWZ0X2RlZmVycmVkIHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0X2RlZmVycmVkIHQuZiB+ZiB9XG5sZXQgdXBkYXRlX29uX2V4Y2VwdGlvbiB0IH5mID0geyB0IHdpdGggb25fZXhjZXB0aW9uID0gZiB0Lm9uX2V4Y2VwdGlvbiB9XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5pbmNsdWRlIFByb3RvY29sLlJwY19lcnJvclxuaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChQcm90b2NvbC5ScGNfZXJyb3IpXG5cbmV4Y2VwdGlvbiBScGMgb2YgdCAqIEluZm8udCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgcmFpc2UgdCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uID0gcmFpc2UgKFJwYyAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbikpXG5cbmxldCBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQ29ubmVjdGlvbl9jbG9zZWQgLT5cbiAgICBbJXNleHAgYENvbm5lY3Rpb25fY2xvc2VkIChnZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gKCkgOiBTZXhwLnQpXVxuICB8IEJpbl9pb19leG4gX1xuICB8IFdyaXRlX2Vycm9yIF9cbiAgfCBVbmNhdWdodF9leG4gX1xuICB8IFVuaW1wbGVtZW50ZWRfcnBjIF9cbiAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gc2V4cF9vZl90IHRcbjs7XG5cbigqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8ganVzdCB0YWtlIGEgW0Nvbm5lY3Rpb24udF0sIGJ1dCB3ZSB0YWtlIGl0cyBwaWVjZXMgaW5zdGVhZCB0b1xuICAgYXZvaWQgYSBkZXBlbmRlbmN5IGN5Y2xlICopXG5sZXQgdG9fZXJyb3JcbiAgICAgIHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBEZXNjcmlwdGlvbi5uYW1lID0gcnBjX25hbWU7IHZlcnNpb24gPSBycGNfdmVyc2lvbiB9XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICA9XG4gIGxldCBycGNfZXJyb3IgPVxuICAgIHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgbGV0IGNsb3NlX3JlYXNvbiA9XG4gICAgICAgICgqIFVzdWFsbHkgKGFsd2F5cz8pIGhlcmUgd2Ugd2lsbCBoYXZlIHRoZSBkZWZlcnJlZCBhbHJlYWR5IGZ1bGxcbiAgICAgICAgICAgYmVjYXVzZSBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvciBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5XG4gICAgICAgICAgIGNsb3NlZCAqKVxuICAgICAgICBEZWZlcnJlZC5wZWVrIGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgaW5cbiAgICAgIFslc2V4cCAoY2xvc2VfcmVhc29uIDogSW5mby50IG9wdGlvbildKVxuICBpblxuICBFcnJvci5jcmVhdGVfc1xuICAgIFslc2V4cFxuICAgICAgeyBycGNfZXJyb3IgOiBTZXhwLnRcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBycGNfbmFtZSA6IHN0cmluZ1xuICAgICAgOyBycGNfdmVyc2lvbiA6IGludFxuICAgICAgfV1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBsb2NhbF9zdG9yYWdlX2tleSA9XG4gIFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWU6XCJhc3luY19ycGNfa2VybmVsX21ldGFkYXRhXCIgWyVzZXhwX29mOiB0XVxuOztcblxubGV0IGdldCAoKSA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLmZpbmRfbG9jYWwgbG9jYWxfc3RvcmFnZV9rZXlcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfbWV0YWRhdGEgbWV0YWRhdGEgfmYgPVxuICAgIEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhfbG9jYWwgbG9jYWxfc3RvcmFnZV9rZXkgbWV0YWRhdGEgfmZcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIHQgPSAoJ2EsIFJwY19lcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW9dXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHVuaXQgdF07XG4gIFslZXhwZWN0IHt8IDU4NzM0YTYzYTVjODNjMWI3Y2JmYzNmZWRmYTNhZTgyIHx9XVxuOztcblxudHlwZSBsb2NhdGVkX2Vycm9yID1cbiAgeyBsb2NhdGlvbiA6IHN0cmluZ1xuICA7IGV4biA6IEV4bi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IGJpbl9pb19leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuQmluX2lvX2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCB0cnlfd2l0aCA/b25fYmFja2dyb3VuZF9leGNlcHRpb24gP3J1biB+bG9jYXRpb24gZiA9XG4gIGxldCB4ID1cbiAgICBsZXQgcmVzdCA9XG4gICAgICBtYXRjaCBvbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYExvZ1xuICAgICAgfCBTb21lIGNhbGxiYWNrIC0+IGBDYWxsIGNhbGxiYWNrXG4gICAgaW5cbiAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICB+cmVzdFxuICAgICAgfnJ1bjooT3B0aW9uLnZhbHVlIHJ1biB+ZGVmYXVsdDpgU2NoZWR1bGUpXG4gICAgICBmXG4gIGluXG4gIGxldCBqb2luID0gZnVuY3Rpb25cbiAgICB8IE9rIHggLT4geFxuICAgIHwgRXJyb3IgZXhuIC0+IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuXG4gIGluXG4gIG1hdGNoIERlZmVycmVkLnBlZWsgeCB3aXRoXG4gIHwgTm9uZSAtPiB4ID4+fCBqb2luXG4gIHwgU29tZSB4IC0+IHJldHVybiAoam9pbiB4KVxuOztcblxubGV0IG9yX2Vycm9yIH5ycGNfZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA9XG4gIFJlc3VsdC5tYXBfZXJyb3JcbiAgICB+ZjpcbiAgICAgIChScGNfZXJyb3IudG9fZXJyb3JcbiAgICAgICAgIH5ycGNfZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkKVxuOztcbiIsIm9wZW4gQ29yZVxuXG4oKiB1dGlsaXR5IGZ1bmN0aW9uIGZvciBiaW4taW8naW5nIG91dCBvZiBhIEJpZ3N0cmluZy50ICopXG5sZXQgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgIChiaW5fcmVhZGVyX3QgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKVxuICAgICAgP2FkZF9sZW5cbiAgICAgIGJ1ZlxuICAgICAgfnBvc19yZWZcbiAgICAgIH4obGVuIDogTmF0MC50KVxuICAgICAgfmxvY2F0aW9uXG4gID1cbiAgdHJ5XG4gICAgbGV0IGluaXRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgZGF0YSA9IGJpbl9yZWFkZXJfdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBhZGRfbGVuID1cbiAgICAgIG1hdGNoIGFkZF9sZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBhZGRfbGVuIC0+IGFkZF9sZW4gZGF0YVxuICAgIGluXG4gICAgaWYgIXBvc19yZWYgLSBpbml0X3BvcyArIGFkZF9sZW4gPD4gKGxlbiA6PiBpbnQpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgKCFwb3NfcmVmIC0gaW5pdF9wb3MpXG4gICAgICAgIChsZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgICAoKTtcbiAgICBPayBkYXRhXG4gIHdpdGhcbiAgfCBlIC0+IFJwY19yZXN1bHQuYmluX2lvX2V4biB+bG9jYXRpb24gZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uc1xubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFdyaXRlciA9IFRyYW5zcG9ydC5Xcml0ZXJcblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG4oKiBDb21tdXRlIFJlc3VsdCBhbmQgRGVmZXJyZWQuICopXG5sZXQgZGVmZXJfcmVzdWx0IDogJ2EgJ2IuICgnYSBEZWZlcnJlZC50LCAnYikgUmVzdWx0LnQgLT4gKCdhLCAnYikgUmVzdWx0LnQgRGVmZXJyZWQudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiByZXR1cm4gZXJyXG4gICAgfCBPayBkIC0+XG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCVtYXAgeCA9IGQgaW5cbiAgICAgICAgIE9rIHhcbiAgICAgICB8IFNvbWUgZCAtPiByZXR1cm4gKE9rIGQpKVxuOztcblxubW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXJcblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwYyA9XG4gIFsgYFJhaXNlXG4gIHwgYENvbnRpbnVlXG4gIHwgYENsb3NlX2Nvbm5lY3Rpb25cbiAgfCBgQ2FsbCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gWyBgQ2xvc2VfY29ubmVjdGlvbiB8IGBDb250aW51ZSBdXG4gIF1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydCA9XG4gIFsgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNcbiAgfCBgRXhwZXJ0IG9mXG4gICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgLT4gcnBjX3RhZzpzdHJpbmdcbiAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAtPiBSZXNwb25kZXIudFxuICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgIC0+IHBvczppbnRcbiAgICAgIC0+IGxlbjppbnRcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9ICdjb25uZWN0aW9uX3N0YXRlIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9ucy50ID1cbiAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IERlc2NyaXB0aW9uLlRhYmxlLnRcbiAgOyBvbl91bmtub3duX3JwYyA6ICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0XG4gIH1cblxudHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBpbXBsZW1lbnRhdGlvbnMgPSAnY29ubmVjdGlvbl9zdGF0ZSB0XG5cbmxldCBkZXNjcmlwdGlvbnMgdCA9IEhhc2h0Ymwua2V5cyB0LmltcGxlbWVudGF0aW9uc1xuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2UgPSBJbnN0YW5jZS5zdHJlYW1pbmdfcmVzcG9uc2UgPVxuICAgIHwgUGlwZSA6IF8gUGlwZS5SZWFkZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcbiAgICB8IERpcmVjdCA6XG4gICAgICAgIChfIEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnRbQHNleHAub3BhcXVlXSlcbiAgICAgICAgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSBzdHJlYW1pbmdfcmVzcG9uc2VzID0gKFAuUXVlcnlfaWQudCwgc3RyZWFtaW5nX3Jlc3BvbnNlKSBIYXNodGJsLnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICdhIHVucGFja2VkID0gJ2EgSW5zdGFuY2UudW5wYWNrZWQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zIDogKCdhIGltcGxlbWVudGF0aW9uc1tAc2V4cC5vcGFxdWVdKVxuICAgIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA6IHN0cmVhbWluZ19yZXNwb25zZXNcbiAgICA7IG11dGFibGUgc3RvcHBlZCA6IGJvb2xcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGUgOiAnYVxuICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIDogSW5mby50IERlZmVycmVkLnRcbiAgICA7IG11dGFibGVcbiAgICAgIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgIChEZXNjcmlwdGlvbi50ICogKCdhIEltcGxlbWVudGF0aW9uLnRbQHNleHAub3BhcXVlXSkpIG9wdGlvblxuICAgICgqIFtwYWNrZWRfc2VsZl0gaXMgaGVyZSBzbyB3ZSBjYW4gZXNzZW50aWFsbHkgcGFjayBhbiB1bnBhY2tlZCBpbnN0YW5jZSB3aXRob3V0IGRvaW5nXG4gICAgICAgYW55IGFkZGl0aW9uYWwgYWxsb2NhdGlvbi4gKilcbiAgICA7IHBhY2tlZF9zZWxmIDogKHRbQHNleHAub3BhcXVlXSlcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgYW5kIHQgPSBJbnN0YW5jZS50ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBbJXNleHBfb2Y6IF8gdW5wYWNrZWRdIHRcblxuICBsZXQgc2VuZF93cml0ZV9lcnJvciB0IGlkIHNleHAgPVxuICAgIGxldCBkYXRhIDogXyBQLk1lc3NhZ2UudCA9IFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBFcnJvciAoV3JpdGVfZXJyb3Igc2V4cCkgfSBpblxuICAgIG1hdGNoIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBkYXRhIHdpdGhcbiAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgXCJGYWlsZWQgdG8gc2VuZCB3cml0ZSBlcnJvciB0byBjbGllbnRcIlxuICAgICAgICAsIHsgZXJyb3IgPSAoc2V4cCA6IFNleHAudCk7IHJlYXNvbiA9IChyIDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgfV1cbiAgOztcblxuICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWQgKHJlc3VsdCA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgU2VudCAoKSAtPiAoKVxuICAgIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgKFslc2V4cF9vZjogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudF0gcilcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZSB0IGJpbl93cml0ZXIgeCB+aWQgPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIGJpbl93cml0ZXIgeCB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlbiB+aWQgPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX2RhdGEgZGF0YSA9XG4gICAgbGV0IGJpbl93cml0ZXIgPVxuICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfZGF0YSlcbiAgICBpblxuICAgIHdyaXRlX21lc3NhZ2UgdCB+aWQgYmluX3dyaXRlciAoUmVzcG9uc2UgeyBpZDsgZGF0YSB9KVxuICA7O1xuXG4gIG1vZHVsZSBDYWNoZWRfYmluX3dyaXRlciA6IHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9iaW5fd3JpdGVyLnRcblxuICAgIHZhbCBjcmVhdGUgOiBpZDpQLlF1ZXJ5X2lkLnQgLT4gYmluX3dyaXRlcjonYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciAtPiAnYSB0XG4gICAgdmFsIHByZXBfd3JpdGUgOiAnYSB0IC0+ICdhIC0+ICgnYSB0ICogJ2EpIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgdmFsIHByZXBfd3JpdGVfZXhwZXJ0IDogJ2EgdCAtPiBsZW46aW50IC0+ICdhIHQgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICB2YWwgcHJlcF93cml0ZV9zdHJpbmcgOiAnYSB0IC0+IHN0cmluZyAtPiAoJ2EgdCAqIHN0cmluZykgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgSW1wbGVtZW50YXRpb25fdHlwZXMuQ2FjaGVkX2Jpbl93cml0ZXIudCA9XG4gICAgICB7IGhlYWRlcl9wcmVmaXggOiBzdHJpbmcgKCogQmluX3Byb3R0ZWQgY29uc3RhbnQgcHJlZml4IG9mIHRoZSBtZXNzYWdlICopXG4gICAgICA7ICgqIExlbmd0aCBvZiB0aGUgdXNlciBkYXRhIHBhcnQuIFdlIHNldCB0aGlzIGZpZWxkIHdoZW4gc2VuZGluZyBhIG1lc3NhZ2UuIFRoaXNcbiAgICAgICAgICAgcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCBpbW1lZGlhdGVseSAod2hpY2ggaXMgdGhlXG4gICAgICAgICAgIG9ubHkgYWNjZXB0YWJsZSBzZW1hbnRpY3MgZm9yIHRoZSB0cmFuc3BvcnQgbGF5ZXIgYW55d2F5LCBhcyBpdCBkb2Vzbid0IGtub3cgaWZcbiAgICAgICAgICAgdGhlIHZhbHVlIGlzIG11dGFibGUgb3Igbm90KS5cblxuICAgICAgICAgICBbZGF0YV9sZW5dIGlzIHBhc3NlZCB0byBiaW4tcHJvdCB3cml0ZXJzIGJ5IG11dGF0aW5nIFtkYXRhX2xlbl0gaW5zdGVhZCBvZiBieVxuICAgICAgICAgICBwYXNzaW5nIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gYXZvaWQgc29tZSBhbGxvY2F0aW9uLlxuICAgICAgICAqKVxuICAgICAgICBtdXRhYmxlIGRhdGFfbGVuIDogTmF0MC50XG4gICAgICA7IGJpbl93cml0ZXIgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgfVxuXG5cbiAgICB0eXBlIHZvaWQgPSBWb2lkXG5cbiAgICBsZXQgYmluX3NpemVfdm9pZCBWb2lkID0gMFxuICAgIGxldCBiaW5fd3JpdGVfdm9pZCBfYnVmIH5wb3MgVm9pZCA9IHBvc1xuXG4gICAgdHlwZSB2b2lkX21lc3NhZ2UgPSB2b2lkIFAuTWVzc2FnZS5uZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3dyaXRlXVxuXG4gICAgdHlwZSB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhID0gdm9pZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLm5lZWRzX2xlbmd0aFxuICAgIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgICgqIFRoaXMgaXMgbm90IHJlLWVudHJhbnQgYnV0IEFzeW5jIGNvZGUgYWx3YXlzIHJ1bnMgb24gb25lIHRocmVhZCBhdCBhIHRpbWUgKilcbiAgICBsZXQgYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAzMlxuXG4gICAgbGV0IGNhY2hlX2Jpbl9wcm90dGVkIChiaW5fd3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlci53cml0ZSBidWZmZXIgfnBvczowIHggaW5cbiAgICAgIEJpZ3N0cmluZy5Ub19zdHJpbmcuc3ViIGJ1ZmZlciB+cG9zOjAgfmxlblxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIGEpIH5pZCB+YmluX3dyaXRlciA6IGEgdCA9XG4gICAgICBsZXQgaGVhZGVyX3ByZWZpeCA9XG4gICAgICAgIGNhY2hlX2Jpbl9wcm90dGVkIGJpbl93cml0ZXJfdm9pZF9tZXNzYWdlIChSZXNwb25zZSB7IGlkOyBkYXRhID0gT2sgVm9pZCB9KVxuICAgICAgaW5cbiAgICAgIHsgaGVhZGVyX3ByZWZpeDsgYmluX3dyaXRlcjsgZGF0YV9sZW4gPSBOYXQwLm9mX2ludF9leG4gMCB9XG4gICAgOztcblxuICAgICgqIFRoaXMgcGFydCBvZiB0aGUgbWVzc2FnZSBoZWFkZXIgaXMgYSBjb25zdGFudCwgbWFrZSBpdCBhIGxpdGVyYWwgdG8gbWFrZSB0aGVcbiAgICAgICB3cml0aW5nIGNvZGUgc2xpZ2h0bHkgZmFzdGVyLiAqKVxuICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuID0gNFxuICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIgPSAweDhhNzlsXG5cbiAgICBsZXQldGVzdF91bml0IFwic3RyZWFtX3Jlc3BvbnNlXyogY29uc3RhbnRzIGFyZSBjb3JyZWN0XCIgPVxuICAgICAgbGV0IGxlbiA9XG4gICAgICAgIGJpbl93cml0ZXJfdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YS53cml0ZVxuICAgICAgICAgIGJ1ZmZlclxuICAgICAgICAgIH5wb3M6MFxuICAgICAgICAgIChgT2sgVm9pZCA6IHZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEpXG4gICAgICBpblxuICAgICAgYXNzZXJ0IChsZW4gPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuKTtcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZ2V0X2ludDMyX3RfbGUgYnVmZmVyIH5wb3M6MFxuICAgICAgICA9IHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMilcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIHN0ciA9XG4gICAgICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgICAoKiBWZXJ5IGxvdy1sZXZlbCBiaW5fcHJvdCBzdHVmZi4uLiAqKVxuICAgICAgQmluX3Byb3QuQ29tbW9uLmFzc2VydF9wb3MgcG9zO1xuICAgICAgbGV0IG5leHQgPSBwb3MgKyBzdHJfbGVuIGluXG4gICAgICBCaW5fcHJvdC5Db21tb24uY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIEJpbl9wcm90LkNvbW1vbi51bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zOjAgc3RyIH5kc3RfcG9zOnBvcyBidWYgfmxlbjpzdHJfbGVuO1xuICAgICAgbmV4dFxuICAgIDs7XG5cbiAgICAoKiBUaGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIDMgdmFyaWFudHMgZXhwb3NlZCBieSB0aGlzIG1vZHVsZS4gVGhleVxuICAgICAgIHNlcmlhbGl6ZSBhIFtSZXNwb25zZSB7IGlkOyBkYXRhID0gT2sgKGBPayBkYXRhX2xlbikgfV0gdmFsdWUsIHRha2luZyBjYXJlIG9mXG4gICAgICAgd3JpdGluZyB0aGUgW05hdDAudF0gbGVuZ3RoIHByZWZpeCB3aGVyZSBhcHByb3JpYXRlLlxuXG4gICAgICAgQmVhciBpbiBtaW5kIHRoYXQgdGhlcmUgYXJlIHR3byBsZXZlbHMgb2YgbGVuZ3RoIHByZWZpeGVzIGZvciBzdHJlYW0gcmVzcG9uc2UgZGF0YVxuICAgICAgIG1lc3NhZ2U6IG9uZSBmb3IgdGhlIHVzZXIgZGF0YSAodW5kZXIgdGhlIGBPaywgYmVmb3JlIHRoZSBhY3R1YWwgZGF0YSksIGFuZCBvbmUgZm9yXG4gICAgICAgdGhlIHJlc3BvbnNlIGRhdGEgKHVuZGVyIHRoZSAuZGF0YSBmaWVsZCwgYmVmb3JlIHRoZSBPaykuICopXG4gICAgbGV0IGJpbl9zaXplX25hdDBfaGVhZGVyIHsgaGVhZGVyX3ByZWZpeDsgZGF0YV9sZW47IF8gfSA9XG4gICAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICBpblxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBTdHJpbmcubGVuZ3RoIGhlYWRlcl9wcmVmaXhcbiAgICAgICsgTmF0MC5iaW5fc2l6ZV90IChOYXQwLm9mX2ludF9leG4gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuKVxuICAgICAgKyBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHsgaGVhZGVyX3ByZWZpeDsgZGF0YV9sZW47IF8gfSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3MgaGVhZGVyX3ByZWZpeCBpblxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbiA9XG4gICAgICAgIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9sZW5cbiAgICAgICAgKyBOYXQwLmJpbl9zaXplX3QgZGF0YV9sZW5cbiAgICAgICAgKyAoZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgaW5cbiAgICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChOYXQwLm9mX2ludF9leG4gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuKSBpblxuICAgICAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gICAgICBCaW5fcHJvdC5Db21tb24uY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIEJpZ3N0cmluZy51bnNhZmVfc2V0X2ludDMyX3RfbGUgYnVmIH5wb3Mgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyO1xuICAgICAgTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvczpuZXh0IGRhdGFfbGVuXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX25hdDBfaGVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9uYXQwX2hlYWRlcjsgd3JpdGUgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NpemVfbWVzc2FnZSAodCwgXykgPSBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuXG4gICAgbGV0IGJpbl93cml0ZV9tZXNzYWdlIGJ1ZiB+cG9zICh0LCBkYXRhKSA9XG4gICAgICBsZXQgcG9zID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIGJ1ZiB+cG9zIHQgaW5cbiAgICAgIHQuYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyBkYXRhXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX21lc3NhZ2U7IHdyaXRlID0gYmluX3dyaXRlX21lc3NhZ2UgfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3NpemVfbWVzc2FnZV9hc19zdHJpbmcgKHQsIF8pID1cbiAgICAgIGJpbl9zaXplX25hdDBfaGVhZGVyIHQgKyAodC5kYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgYnVmIH5wb3MgKHQsIHN0cikgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHJcbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZV9hc19zdHJpbmcgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICAgIHsgc2l6ZSA9IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlX2FzX3N0cmluZyB9XG4gICAgOztcblxuICAgIGxldCBwcmVwX3dyaXRlIHQgZGF0YSA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAodC5iaW5fd3JpdGVyLnNpemUgZGF0YSk7XG4gICAgICBiaW5fd3JpdGVyX21lc3NhZ2VcbiAgICA7O1xuXG4gICAgbGV0IHByZXBfd3JpdGVfc3RyaW5nIHQgc3RyID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIChTdHJpbmcubGVuZ3RoIHN0cik7XG4gICAgICBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBwcmVwX3dyaXRlX2V4cGVydCB0IH5sZW4gPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gbGVuO1xuICAgICAgYmluX3dyaXRlcl9uYXQwX2hlYWRlclxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcbiAgICBtb2R1bGUgU3RhdGUgPSBULlN0YXRlXG4gICAgbW9kdWxlIElkID0gVC5JZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID1cbiAgICAgIHsgaWQgOiBJZC50XG4gICAgICA7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50XG4gICAgICA7IGNsb3NlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGluc3RhbmNlIDogSW5zdGFuY2UudFxuICAgICAgOyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBzdHJlYW1fd3JpdGVyIDogJ2EgQ2FjaGVkX2Jpbl93cml0ZXIudFxuICAgICAgOyBncm91cHMgOiAnYSBncm91cF9lbnRyeSBCYWcudFxuICAgICAgfVxuXG4gICAgYW5kICdhIGdyb3VwX2VudHJ5ID0gJ2EgVC5ncm91cF9lbnRyeSA9XG4gICAgICB7IGdyb3VwIDogJ2EgVC5Hcm91cC50XG4gICAgICA7IGVsZW1lbnRfaW5fZ3JvdXAgOiAnYSB0IEJhZy5FbHQudFxuICAgICAgfVxuXG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgbGV0IGNsb3NlZCB0ID0gSXZhci5yZWFkIHQuY2xvc2VkXG5cbiAgICBsZXQgZmx1c2hlZCB0ID1cbiAgICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0Lmluc3RhbmNlIGluXG4gICAgICBUcmFuc3BvcnQuV3JpdGVyLmZsdXNoZWQgaW5zdGFuY2Uud3JpdGVyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyIHQgPSB0LnN0cmVhbV93cml0ZXIuYmluX3dyaXRlclxuXG4gICAgbGV0IHdyaXRlX2VvZiB7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgcXVlcnlfaWQ7IF8gfSA9XG4gICAgICB3cml0ZV9yZXNwb25zZSBpbnN0YW5jZSBxdWVyeV9pZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl93cml0ZXJfbmF0MF90IChPayBgRW9mKVxuICAgIDs7XG5cbiAgICAoKiBbd3JpdGVfbWVzc2FnZV9zdHJpbmddIGFuZCBbd3JpdGVfbWVzc2FnZV0gYm90aCBhbGxvY2F0ZSAzIHdvcmRzIGZvciB0aGUgdHVwbGVzLlxuICAgICAgIFt3cml0ZV9tZXNzYWdlX2V4cGVydF0gZG9lcyBub3QgYWxsb2NhdGUuICopXG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9zdHJpbmcgdCB4ID1cbiAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nID1cbiAgICAgICAgQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZV9zdHJpbmcgdC5zdHJlYW1fd3JpdGVyIHhcbiAgICAgIGluXG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgd3JpdGVfbWVzc2FnZVxuICAgICAgICBpbnN0YW5jZVxuICAgICAgICB+aWQ6dC5xdWVyeV9pZFxuICAgICAgICBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nXG4gICAgICAgICh0LnN0cmVhbV93cml0ZXIsIHgpXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlIHQgeCA9XG4gICAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlID0gQ2FjaGVkX2Jpbl93cml0ZXIucHJlcF93cml0ZSB0LnN0cmVhbV93cml0ZXIgeCBpblxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIHdyaXRlX21lc3NhZ2UgaW5zdGFuY2UgfmlkOnQucXVlcnlfaWQgYmluX3dyaXRlcl9tZXNzYWdlICh0LnN0cmVhbV93cml0ZXIsIHgpXG4gICAgOztcblxuICAgIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5idWYgfnBvcyB+bGVuID1cbiAgICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2UgPSBDYWNoZWRfYmluX3dyaXRlci5wcmVwX3dyaXRlX2V4cGVydCB0LnN0cmVhbV93cml0ZXIgfmxlbiBpblxuICAgICAgbGV0IChUIGluc3RhbmNlKSA9IHQuaW5zdGFuY2UgaW5cbiAgICAgIHdyaXRlX21lc3NhZ2VfZXhwZXJ0XG4gICAgICAgIGluc3RhbmNlXG4gICAgICAgIH5pZDp0LnF1ZXJ5X2lkXG4gICAgICAgIGJpbl93cml0ZXJfbWVzc2FnZVxuICAgICAgICB0LnN0cmVhbV93cml0ZXJcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0ID1cbiAgICAgIGlmIG5vdCAoSXZhci5pc19mdWxsIHQuY2xvc2VkKVxuICAgICAgdGhlbiAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgICAgICAgbGV0IGdyb3VwcyA9IHQuZ3JvdXBzIGluXG4gICAgICAgIGlmIG5vdCAoQmFnLmlzX2VtcHR5IGdyb3VwcylcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuUHJpdmF0ZS5WZXJ5X2xvd19wcmlvcml0eV93b3JrLmVucXVldWUgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQmFnLnJlbW92ZV9vbmUgZ3JvdXBzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBGaW5pc2hlZFxuICAgICAgICAgICAgfCBTb21lIHsgZ3JvdXA7IGVsZW1lbnRfaW5fZ3JvdXAgfSAtPlxuICAgICAgICAgICAgICBCYWcucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHMgZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgZ3JvdXAuY29tcG9uZW50c19ieV9pZCB0LmlkO1xuICAgICAgICAgICAgICBOb3RfZmluaXNoZWQpO1xuICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgfCBOb3Rfc3RhcnRlZCBfIC0+ICgpXG4gICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9lb2YgdClcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgcXVlcnlfaWQ7IF8gfSBhcyB0KSA9XG4gICAgICBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdDtcbiAgICAgIEhhc2h0YmwucmVtb3ZlIGluc3RhbmNlLm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeV9pZFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICB0aGVuIGBDbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT4gUXVldWUuZW5xdWV1ZSBxIChOb3JtYWwgeClcbiAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlIHQgeCk7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIHggPVxuICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggd2l0aFxuICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgOztcblxuICAgIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgICAgICAgUXVldWUuZW5xdWV1ZSBxIChFeHBlcnQgKEJpZ3N0cmluZy5Ub19zdHJpbmcuc3ViIGJ1ZiB+cG9zIH5sZW4pKVxuICAgICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3Mgfmxlbik7XG4gICAgICAgICAgYE9rKVxuICAgICAgOztcblxuICAgICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgc3RhcnQgdCA9XG4gICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgIHwgU3RhcnRlZCAtPiBmYWlsd2l0aCBcImF0dGVtcHRlZCB0byBzdGFydCB3cml0ZXIgd2hpY2ggd2FzIGFscmVhZHkgc3RhcnRlZFwiXG4gICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgdC5zdGF0ZSA8LSBTdGFydGVkO1xuICAgICAgICBRdWV1ZS5pdGVyIHEgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb3JtYWwgeCAtPiB3cml0ZV9tZXNzYWdlIHQgeFxuICAgICAgICAgIHwgRXhwZXJ0IHggLT4gd3JpdGVfbWVzc2FnZV9zdHJpbmcgdCB4KTtcbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkIHRoZW4gd3JpdGVfZW9mIHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uXG4gICAgICAgIChyZXN1bHQgOiAoXywgUnBjX2Vycm9yLnQpIFJlc3VsdC50KVxuICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwKSAtPlxuICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgIHwgRXJyb3IgXyB8IE9rIF8gLT4gKClcbiAgOztcblxuICBsZXQgYXV0aG9yaXphdGlvbl9mYWlsdXJlX3Jlc3VsdCBlcnJvciB+cnBjX2tpbmQgPVxuICAgIGxldCBleG4gPSBFcnJvci50b19leG4gZXJyb3IgaW5cbiAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgZXhuXG4gICAgICB+bG9jYXRpb246WyVzdHJpbmcgXCJzZXJ2ZXItc2lkZSAle3JwY19raW5kfSBhdXRob3JpemF0aW9uXCJdXG4gIDs7XG5cbiAgbGV0IGFwcGx5X3N0cmVhbWluZ19pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIHsgSW1wbGVtZW50YXRpb24uRi5iaW5fcXVlcnlfcmVhZGVyOyBiaW5faW5pdF93cml0ZXI7IGJpbl91cGRhdGVfd3JpdGVyOyBpbXBsIH1cbiAgICAgICAgfmxlblxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmlkXG4gICAgICAgIH4ob25fZXhjZXB0aW9uIDogT25fZXhjZXB0aW9uLnQpXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICA9XG4gICAgbGV0IGRhdGEgPVxuICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5sZW5cbiAgICAgICAgfmxvY2F0aW9uOlwic3RyZWFtaW5nX3JwYyBzZXJ2ZXItc2lkZSBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICBpblxuICAgIGxldCAoVCBpbnN0YW5jZSkgPSB0LnBhY2tlZF9zZWxmIGluXG4gICAgbGV0IHN0cmVhbV93cml0ZXIgPSBDYWNoZWRfYmluX3dyaXRlci5jcmVhdGUgfmlkIH5iaW5fd3JpdGVyOmJpbl91cGRhdGVfd3JpdGVyIGluXG4gICAgbGV0IGltcGxfd2l0aF9zdGF0ZSA9XG4gICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgIHwgUGlwZSBmIC0+IGBQaXBlIGZcbiAgICAgIHwgRGlyZWN0IGYgLT5cbiAgICAgICAgbGV0IHdyaXRlciA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCA9XG4gICAgICAgICAgeyBpZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLklkLmNyZWF0ZSAoKVxuICAgICAgICAgIDsgc3RhdGUgPSBOb3Rfc3RhcnRlZCAoUXVldWUuY3JlYXRlICgpKVxuICAgICAgICAgIDsgY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgICA7IGluc3RhbmNlID0gdC5wYWNrZWRfc2VsZlxuICAgICAgICAgIDsgcXVlcnlfaWQgPSBpZFxuICAgICAgICAgIDsgZ3JvdXBzID0gQmFnLmNyZWF0ZSAoKVxuICAgICAgICAgIDsgc3RyZWFtX3dyaXRlclxuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmtleTppZCB+ZGF0YTooRGlyZWN0IHdyaXRlcik7XG4gICAgICAgIGBEaXJlY3QgKGYsIHdyaXRlcilcbiAgICBpblxuICAgIGxldCBydW5faW1wbCBpbXBsIHNwbGl0X29rIGhhbmRsZV9vayA9XG4gICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAoZnVuICgpIC0+IGRlZmVyX3Jlc3VsdCAoZGF0YSA+Pnx+IGltcGwpKVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgIGluXG4gICAgICBFYWdlcl9kZWZlcnJlZC51cG9uIHJlc3VsdCAoZnVuY3Rpb25cbiAgICAgICAgfCBFcnJvciAoUnBjX2Vycm9yLlVuY2F1Z2h0X2V4biBzZXhwIGFzIGVycikgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4blxuICAgICAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgICAgICAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycilcbiAgICAgICAgfCBPayAoT3Jfbm90X2F1dGhvcml6ZWQuTm90X2F1dGhvcml6ZWQgZXJyb3IpIC0+XG4gICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2VcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBiaW5faW5pdF93cml0ZXJcbiAgICAgICAgICAgIChhdXRob3JpemF0aW9uX2ZhaWx1cmVfcmVzdWx0IGVycm9yIH5ycGNfa2luZDpcInBpcGVfcnBjXCIpXG4gICAgICAgIHwgT2sgKEF1dGhvcml6ZWQgKEVycm9yIGVycm9yKSkgLT5cbiAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgZXJyb3IpXG4gICAgICAgIHwgT2sgKEF1dGhvcml6ZWQgKE9rIG9rKSkgLT5cbiAgICAgICAgICBsZXQgaW5pdGlhbCwgcmVzdCA9IHNwbGl0X29rIG9rIGluXG4gICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKE9rIGluaXRpYWwpO1xuICAgICAgICAgIGhhbmRsZV9vayByZXN0KVxuICAgIGluXG4gICAgbWF0Y2ggaW1wbF93aXRoX3N0YXRlIHdpdGhcbiAgICB8IGBQaXBlIGYgLT5cbiAgICAgIHJ1bl9pbXBsXG4gICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhKVxuICAgICAgICBGbi5pZFxuICAgICAgICAoZnVuIHBpcGVfciAtPlxuICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihQaXBlIHBpcGVfcik7XG4gICAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgICAgKFdyaXRlci50cmFuc2ZlciB0LndyaXRlciBwaXBlX3IgKGZ1biBkYXRhIC0+XG4gICAgICAgICAgICAgICAgbGV0IGJpbl93cml0ZXJfbWVzc2FnZSA9IENhY2hlZF9iaW5fd3JpdGVyLnByZXBfd3JpdGUgc3RyZWFtX3dyaXRlciBkYXRhIGluXG4gICAgICAgICAgICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlIChzdHJlYW1fd3JpdGVyLCBkYXRhKSkpO1xuICAgICAgICAgICBQaXBlLmNsb3NlZCBwaXBlX3JcbiAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICBQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZV9yXG4gICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl93cml0ZXJfbmF0MF90IChPayBgRW9mKTtcbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZClcbiAgICB8IGBEaXJlY3QgKGYsIHdyaXRlcikgLT5cbiAgICAgIHJ1bl9pbXBsXG4gICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhIHdyaXRlcilcbiAgICAgICAgKGZ1biB4IC0+IHgsICgpKVxuICAgICAgICAoZnVuICgpIC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLnN0YXJ0IHdyaXRlcilcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb24nXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb25cbiAgICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgICA9XG4gICAgbGV0IGlkID0gcXVlcnkuaWQgaW5cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbiB3aXRoXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLk9uZV93YXkgKGJpbl9xdWVyeV9yZWFkZXIsIGYpIC0+XG4gICAgICBsZXQgcXVlcnlfY29udGVudHMgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBtZXNzYWdlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgaW5cbiAgICAgIChtYXRjaCBxdWVyeV9jb250ZW50cyB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGVyciAtPiBTdG9wIGVyclxuICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgKCogV2UgZG9uJ3QgY2xvc2UgY29ubmVjdGlvbnMgb24gdW5hdXRob3JpemVkIFJQQ3MuIFNpbmNlIHRoZXJlIGlzIG5vIHdheSB0b1xuICAgICAgICAgICAgICAgY29tbXVuaWNhdGUgZmFpbHVyZSBiYWNrIHRvIHRoZSBzZW5kZXIgaW4gb25lLXdheSBycGNzLCB3ZSBkbyBub3RoaW5nLiBUaGVcbiAgICAgICAgICAgICAgIGRlZmVycmVkIChhbmQgYW55IGRlZmVycmVkIGV4Y2VwdGlvbnMpIGFyZSBkcm9wcGVkIGhlcmUgYXMgYSBjb25zZXF1ZW5jZSBvZlxuICAgICAgICAgICAgICAgW2xpZnRfZGVmZXJyZWRdIGV4aXN0aW5nIGZvciBvbmUtd2F5IHJwY3MuIFdlIHVzZSBbRWFnZXJfZGVmZXJyZWRdIHNvIGluXG4gICAgICAgICAgICAgICB0aGUgbm9uLWJsb2NraW5nIGNhc2VzIHRoaXMgd2lsbCBzdGlsbCBydW4gc3luY2hyb25vdXNseS4gKilcbiAgICAgICAgICAgIGxldCAoXyA6IF8gT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSA9IGYgdC5jb25uZWN0aW9uX3N0YXRlIHEgaW5cbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGNvbXB1dGF0aW9uXCIpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlKSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheV9leHBlcnQgZiAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgIGxldCAoXyA6IF8gT3Jfbm90X2F1dGhvcml6ZWQudCBEZWZlcnJlZC50KSA9XG4gICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlblxuICAgICAgICAgaW5cbiAgICAgICAgIHJlYWRfYnVmZmVyX3Bvc19yZWYgOj0gIXJlYWRfYnVmZmVyX3Bvc19yZWYgKyBsZW47XG4gICAgICAgICBDb250aW51ZVxuICAgICAgIHdpdGhcbiAgICAgICB8IGV4biAtPlxuICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgaWYgb25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFN0b3BcbiAgICAgICAgICAgICAoUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICBleG5cbiAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBvbmUtd2F5IHJwYyBleHBlcnQgY29tcHV0YXRpb25cIilcbiAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlJwYyAoYmluX3F1ZXJ5X3JlYWRlciwgYmluX3Jlc3BvbnNlX3dyaXRlciwgZiwgcmVzdWx0X21vZGUpIC0+XG4gICAgICBsZXQgcXVlcnlfY29udGVudHMgPVxuICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgIGJpbl9xdWVyeV9yZWFkZXJcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBycGMgcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgbGV0IG9yX25vdF9hdXRob3JpemVkX3RvX3JwY19yZXN1bHQgPSBmdW5jdGlvblxuICAgICAgICB8IE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgcmVzdWx0IC0+IE9rIHJlc3VsdFxuICAgICAgICB8IE5vdF9hdXRob3JpemVkIGVycm9yIC0+IGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kOlwicnBjXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcmVzdWx0X21vZGUgd2l0aFxuICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgUmVzdWx0LmJpbmQgcXVlcnlfY29udGVudHMgfmY6KGZ1biBxdWVyeSAtPlxuICAgICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxdWVyeSB8PiBvcl9ub3RfYXV0aG9yaXplZF90b19ycGNfcmVzdWx0KVxuICAgICAgICAgICAgfD4gd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAoKiBJbiB0aGUgW0RlZmVycmVkXSBicmFuY2ggd2UgdXNlIFtNb25pdG9yLnRyeV93aXRoXSwgd2hpY2ggaW5jbHVkZXNcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgd2hlbiBpdCBjYXRjaGVzIGFuIGV4Y2VwdGlvbi4gRm9yIGNvbnNpc3RlbmN5LCB3ZSBhbHNvIGdldFxuICAgICAgICAgICAgICAgYmFja3RyYWNlcyBoZXJlLiAqKVxuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICAgICAgICAgIGxldCBzZXhwID1cbiAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgeyBsb2NhdGlvbiA9IFwic2VydmVyLXNpZGUgYmxvY2tpbmcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgICAgICA7IGV4biA6IGV4blxuICAgICAgICAgICAgICAgIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnRcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciAoRXJyb3IgKFJwY19lcnJvci5VbmNhdWdodF9leG4gc2V4cCkpO1xuICAgICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuKVxuICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5EZWZlcnJlZCAtPlxuICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAoKiBXZSBnZW5lcmFsbHkgdHJ5IHRvIHdyaXRlIGEgcmVzcG9uc2UgYmVmb3JlIGhhbmRsaW5nIFtvbl9leGNlcHRpb25dIHNvIGlmIHdlXG4gICAgICAgICAgICAgIGFyZSBjbG9zaW5nIHRoZSBjb25uZWN0aW9uIHdlIHN0aWxsIGFjdHVhbGx5IHNlbmQgdGhlIHJlc3BvbnNlIGJhY2suIFdoZW4gd2VcbiAgICAgICAgICAgICAgcGFzcyBbb25fZXhjZXB0aW9uLmNhbGxiYWNrXSBoZXJlLCB3ZSBhcmUgbWFraW5nIGl0IHBvc3NpYmxlIGZvciByYWlzZWRcbiAgICAgICAgICAgICAgZXhjZXB0aW9ucyBub3QgdG8gYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBjbGllbnQgKGUuZy4gaWYgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgICAgIHJhaXNlcyBib3RoIGFzeW5jaHJvbm91c2x5IGFuZCBzeW5jaHJvbm91c2x5KS4gVGhpcyB3b3VsZCBiZSBoYXJkIHRvIGhhbmRsZVxuICAgICAgICAgICAgICBpbiBhIG1vcmUgcHJpbmNpcGxlZCB3YXkuICopXG4gICAgICAgICAgIFJwY19yZXN1bHQudHJ5X3dpdGhcbiAgICAgICAgICAgICA/b25fYmFja2dyb3VuZF9leGNlcHRpb246b25fZXhjZXB0aW9uLmNhbGxiYWNrXG4gICAgICAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggcXVlcnlfY29udGVudHMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IERlZmVycmVkLnJldHVybiAoRXJyb3IgZXJyKVxuICAgICAgICAgICAgICAgIHwgT2sgcXVlcnkgLT5cbiAgICAgICAgICAgICAgICAgIEVhZ2VyX2RlZmVycmVkLm1hcFxuICAgICAgICAgICAgICAgICAgICAoZiB0LmNvbm5lY3Rpb25fc3RhdGUgcXVlcnkpXG4gICAgICAgICAgICAgICAgICAgIH5mOm9yX25vdF9hdXRob3JpemVkX3RvX3JwY19yZXN1bHQpXG4gICAgICAgICBpblxuICAgICAgICAgKCogSW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIHJldHVybnMgYSB2YWx1ZSBpbW1lZGlhdGVseSwgd2Ugd2lsbFxuICAgICAgICAgICAgd3JpdGUgdGhlIHJlc3BvbnNlIGltbWVkaWF0ZWx5IGFzIHdlbGwgKHRoaXMgaXMgYWxzbyB3aHkgdGhlIGFib3ZlIFt0cnlfd2l0aF1cbiAgICAgICAgICAgIGhhcyBbfnJ1bjpgTm93XSkuICBUaGlzIGNhbiBiZSBhIGJpZyBwZXJmb3JtYW5jZSB3aW4gZm9yIHNlcnZlcnMgdGhhdCBnZXQgbWFueVxuICAgICAgICAgICAgcXVlcmllcyBpbiBhIHNpbmdsZSBBc3luYyBjeWNsZS4gKilcbiAgICAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgPj4+IGZ1biBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlciBkYXRhO1xuICAgICAgICAgICAgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uIGRhdGEgb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKTtcbiAgICAgIENvbnRpbnVlXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlJwY19leHBlcnQgKGYsIHJlc3VsdF9tb2RlKSAtPlxuICAgICAgbGV0IHJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9uLkV4cGVydC5SZXNwb25kZXIuY3JlYXRlIHF1ZXJ5LmlkIHQud3JpdGVyIGluXG4gICAgICBsZXQgZCA9XG4gICAgICAgICgqIFdlIG5lZWQgdGhlIFtNb25pdG9yLnRyeV93aXRoXSBldmVuIGZvciB0aGUgYmxvY2tpbmcgbW9kZSBhcyB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgbWlnaHQgcmV0dXJuIFtEZWxheWVkX3JlcG9uc2VdLCBzbyB3ZSBkb24ndCBib3RoZXIgb3B0aW1pemluZyB0aGUgYmxvY2tpbmdcbiAgICAgICAgICAgbW9kZS4gKilcbiAgICAgICAgbGV0IHJlc3QgPVxuICAgICAgICAgIG1hdGNoIG9uX2V4Y2VwdGlvbi5jYWxsYmFjayB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBgTG9nXG4gICAgICAgICAgfCBTb21lIGNhbGxiYWNrIC0+IGBDYWxsIGNhbGxiYWNrXG4gICAgICAgIGluXG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGggfnJlc3QgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVzcG9uZGVyIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlblxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggcmVzdWx0X21vZGUgd2l0aFxuICAgICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5EZWZlcnJlZCAtPiByZXN1bHRcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuQmxvY2tpbmcgLT4gRGVmZXJyZWQucmV0dXJuIHJlc3VsdClcbiAgICAgIGluXG4gICAgICBsZXQgY29tcHV0YXRpb25fZmFpbHVyZV9yZXN1bHQgZXhuID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG4gZXhuIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBleHBlcnQgY29tcHV0YXRpb25cIlxuICAgICAgaW5cbiAgICAgIGxldCBoYW5kbGVfZXhuIHJlc3VsdCA9XG4gICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgICB0aGVuIHJlc3VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX3VuaXQgcmVzdWx0O1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgaW5cbiAgICAgIGxldCBjaGVja19yZXNwb25kZWQgKCkgPVxuICAgICAgICBpZiByZXNwb25kZXIucmVzcG9uZGVkXG4gICAgICAgIHRoZW4gT2sgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGhhbmRsZV9leG5cbiAgICAgICAgICAgIChjb21wdXRhdGlvbl9mYWlsdXJlX3Jlc3VsdCAoRmFpbHVyZSBcIkV4cGVydCBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IHJlcGx5XCIpKVxuICAgICAgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgbGV0IG9wZW4gRWFnZXJfZGVmZXJyZWQuTGV0X3N5bnRheCBpblxuICAgICAgICBtYXRjaCVtYXAgZCB3aXRoXG4gICAgICAgIHwgT2sgKEF1dGhvcml6ZWQgcmVzdWx0KSAtPlxuICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICB8IFJlcGxpZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIGQgLT4gZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkXG4gICAgICAgICAgdGhlbiBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHVwb24gZCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgICAgICB8PiBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICB8PiBva19leG4pO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIHwgT2sgKE5vdF9hdXRob3JpemVkIGVycm9yKSAtPlxuICAgICAgICAgIGhhbmRsZV9leG4gKGF1dGhvcml6YXRpb25fZmFpbHVyZV9yZXN1bHQgZXJyb3IgfnJwY19raW5kOlwicnBjIGV4cGVydFwiKVxuICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgIGxldCByZXN1bHQgPSBoYW5kbGVfZXhuIChjb21wdXRhdGlvbl9mYWlsdXJlX3Jlc3VsdCBleG4pIGluXG4gICAgICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgZXhuO1xuICAgICAgICAgIHJlc3VsdFxuICAgICAgaW5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgV2FpdFxuICAgICAgICAgICAobGV0JW1hcCByID0gZCBpblxuICAgICAgICAgICAgb2tfZXhuXG4gICAgICAgICAgICAgIChScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgICAgcikpXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPlxuICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICAgIHwgRXJyb3IgXyAtPiBTdG9wIHJlc3VsdCkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlN0cmVhbWluZ19ycGMgc3RyZWFtaW5nX3JwYyAtPlxuICAgICAgbGV0IHN0cmVhbV9xdWVyeSA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgUC5TdHJlYW1fcXVlcnkuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+bGVuOnF1ZXJ5LmRhdGFcbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSBwaXBlX3JwYyBzdHJlYW1fcXVlcnkgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBBYm9ydCAtPiAwXG4gICAgICAgICAgICB8IGBRdWVyeSAobGVuIDogTmF0MC50KSAtPiAobGVuIDo+IGludCkpXG4gICAgICBpblxuICAgICAgKG1hdGNoIHN0cmVhbV9xdWVyeSB3aXRoXG4gICAgICAgfCBFcnJvciBfZXJyIC0+ICgpXG4gICAgICAgfCBPayBgQWJvcnQgLT5cbiAgICAgICAgICgqIE5vdGUgdGhhdCB0aGVyZSdzIHNvbWUgZGVsYXkgYmV0d2VlbiB3aGVuIHdlIHJlY2VpdmUgYSBwaXBlIFJQQyBxdWVyeSBhbmRcbiAgICAgICAgICAgIHdoZW4gd2UgcHV0IHNvbWV0aGluZyBpbiBbb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXSAod2Ugd2FpdCBmb3JcbiAgICAgICAgICAgIGEgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0byByZXR1cm4pLiBEdXJpbmcgdGhpcyB0aW1lLCBhbiBhYm9ydCBtZXNzYWdlIHdvdWxkXG4gICAgICAgICAgICBqdXN0IGJlIGlnbm9yZWQuIFRoZSBkaXNwYXRjaGVyIGNhbid0IGFib3J0IHRoZSBxdWVyeSB3aGlsZSB0aGlzIGlzXG4gICAgICAgICAgICBoYXBwZW5pbmcsIHRob3VnaCwgc2luY2UgdGhlIGludGVyZmFjZSBkb2Vzbid0IGV4cG9zZSB0aGUgSUQgcmVxdWlyZWQgdG9cbiAgICAgICAgICAgIGFib3J0IHRoZSBxdWVyeSB1bnRpbCBhZnRlciBhIHJlc3BvbnNlIGhhcyBiZWVuIHJldHVybmVkLiAqKVxuICAgICAgICAgT3B0aW9uLml0ZXIgKEhhc2h0YmwuZmluZCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeS5pZCkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgIHwgUGlwZSBwaXBlIC0+IFBpcGUuY2xvc2VfcmVhZCBwaXBlXG4gICAgICAgICAgIHwgRGlyZWN0IHcgLT4gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2UgdylcbiAgICAgICB8IE9rIChgUXVlcnkgbGVuKSAtPlxuICAgICAgICAgYXBwbHlfc3RyZWFtaW5nX2ltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIHRcbiAgICAgICAgICAgc3RyZWFtaW5nX3JwY1xuICAgICAgICAgICB+bGVuXG4gICAgICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICB+aWRcbiAgICAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKTtcbiAgICAgIENvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IGFwcGx5X2ltcGxlbWVudGF0aW9uXG4gICAgICAgIHRcbiAgICAgICAgaW1wbGVtZW50YXRpb25cbiAgICAgICAgfihxdWVyeSA6IE5hdDAudCBQLlF1ZXJ5LnQpXG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb25cbiAgICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgICA9XG4gICAgYXBwbHlfaW1wbGVtZW50YXRpb24nXG4gICAgICB0XG4gICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgfnF1ZXJ5XG4gICAgICB+cmVhZF9idWZmZXJcbiAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+b25fZXhjZXB0aW9uXG4gIDs7XG5cbiAgbGV0IGZsdXNoIChUIHQpID1cbiAgICBhc3NlcnQgKG5vdCB0LnN0b3BwZWQpO1xuICAgIGxldCBwcm9kdWNlcnNfZmx1c2hlZCA9XG4gICAgICBIYXNodGJsLmZvbGQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmluaXQ6W10gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+XG4gICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICB8IERpcmVjdCBfIC0+IGFjY1xuICAgICAgICB8IFBpcGUgcGlwZSAtPiBEZWZlcnJlZC5pZ25vcmVfbSAoUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGUpIDo6IGFjYylcbiAgICBpblxuICAgIERlZmVycmVkLmFsbF91bml0IHByb2R1Y2Vyc19mbHVzaGVkXG4gIDs7XG5cbiAgbGV0IHN0b3AgKFQgdCkgPVxuICAgIHQuc3RvcHBlZCA8LSB0cnVlO1xuICAgIEhhc2h0YmwuaXRlciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRGlyZWN0IHdyaXRlciAtPlxuICAgICAgICAoKiBEb24ndCByZW1vdmUgdGhlIHdyaXRlciBmcm9tIHRoZSBpbnN0YW5jZSwgYXMgdGhhdCB3b3VsZCBtb2RpZnkgdGhlIGhhc2h0YWJsZVxuICAgICAgICAgICB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaXRlcmF0aW5nIG92ZXIuICopXG4gICAgICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB3cml0ZXJcbiAgICAgIHwgUGlwZSBfIC0+ICgpKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5IDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBgUmFpc2UgLT4gUnBjX2Vycm9yLnJhaXNlIGVycm9yIHQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgfCBgQ2FsbCBmIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGZcbiAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LlAuUXVlcnkudGFnKVxuICAgICAgICAgICB+dmVyc2lvbjpxdWVyeS52ZXJzaW9uXG4gICAgICAgd2l0aFxuICAgICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgICAgfCBgQ29udGludWUgLT4gQ29udGludWUpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gPSB0LmltcGxlbWVudGF0aW9ucyBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA6IERlc2NyaXB0aW9uLnQgPVxuICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IFNvbWUgKGxhc3RfZGVzYywgaW1wbGVtZW50YXRpb24pIHdoZW4gRGVzY3JpcHRpb24uZXF1YWwgbGFzdF9kZXNjIGRlc2NyaXB0aW9uIC0+XG4gICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgfCBOb25lIHwgU29tZSBfIC0+XG4gICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGltcGxlbWVudGF0aW9ucyBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgfCBTb21lIGltcGxlbWVudGF0aW9uIC0+XG4gICAgICAgICB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA8LSBTb21lIChkZXNjcmlwdGlvbiwgaW1wbGVtZW50YXRpb24pO1xuICAgICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICAgICAgICB8IGBFeHBlcnQgaW1wbCAtPlxuICAgICAgICAgICAgbGV0IHsgUC5RdWVyeS50YWc7IHZlcnNpb247IGlkOyBtZXRhZGF0YSA9IChfIDogc3RyaW5nIG9wdGlvbik7IGRhdGEgPSBsZW4gfSA9XG4gICAgICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBsZXQgcmVzcG9uZGVyID0gUmVzcG9uZGVyLmNyZWF0ZSBpZCB0LndyaXRlciBpblxuICAgICAgICAgICAgICBpbXBsXG4gICAgICAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgdGFnKVxuICAgICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgICAgcmVzcG9uZGVyXG4gICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgfmxlbjoobGVuIDo+IGludClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBDb250aW51ZSBlbHNlIFdhaXQgZFxuICAgICAgICAgIHwgKGBDb250aW51ZSB8IGBSYWlzZSB8IGBDbG9zZV9jb25uZWN0aW9uIHwgYENhbGwgXykgYXMgb25fdW5rbm93bl9ycGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IFJwY19lcnJvci5VbmltcGxlbWVudGVkX3JwYyAocXVlcnkudGFnLCBgVmVyc2lvbiBxdWVyeS52ZXJzaW9uKSBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBxdWVyeS5pZCBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgKEVycm9yIGVycm9yKTtcbiAgICAgICAgICAgIGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5XG4gICAgICAgIChUIHQpXG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBpZiB0LnN0b3BwZWQgfHwgV3JpdGVyLmlzX2Nsb3NlZCB0LndyaXRlclxuICAgIHRoZW4gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LlN0b3AgKE9rICgpKVxuICAgIGVsc2VcbiAgICAgIFJwY19tZXRhZGF0YS5Qcml2YXRlLndpdGhfbWV0YWRhdGEgcXVlcnkubWV0YWRhdGEgfmY6KGZ1biAoKSAtPlxuICAgICAgICBoYW5kbGVfcXVlcnlfaW50ZXJuYWxcbiAgICAgICAgICB0XG4gICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IEluc3RhbmNlLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmxldCBjcmVhdGUgfmltcGxlbWVudGF0aW9uczppJ3Mgfm9uX3Vua25vd25fcnBjID1cbiAgKCogTWFrZSBzdXJlIHRoZSB0YWdzIGFyZSB1bmlxdWUuICopXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBEZXNjcmlwdGlvbi5UYWJsZS5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgbGV0IGR1cHMgPSBEZXNjcmlwdGlvbi5IYXNoX3NldC5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgTGlzdC5pdGVyIGkncyB+ZjooZnVuIChpIDogXyBJbXBsZW1lbnRhdGlvbi50KSAtPlxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICB7IERlc2NyaXB0aW9uLm5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGkudGFnOyB2ZXJzaW9uID0gaS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2NyaXB0aW9uIH5kYXRhOmkgd2l0aFxuICAgIHwgYE9rIC0+ICgpXG4gICAgfCBgRHVwbGljYXRlIC0+IEhhc2hfc2V0LmFkZCBkdXBzIGRlc2NyaXB0aW9uKTtcbiAgaWYgbm90IChIYXNoX3NldC5pc19lbXB0eSBkdXBzKVxuICB0aGVuIEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyAoSGFzaF9zZXQudG9fbGlzdCBkdXBzKSlcbiAgZWxzZSBPayB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgOj4gXyBvbl91bmtub3duX3JwY193aXRoX2V4cGVydCB9XG47O1xuXG5sZXQgaW5zdGFudGlhdGVcbiAgICAgIHRcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfndyaXRlclxuICA9XG4gIGxldCByZWMgdW5wYWNrZWQgOiBfIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA9IHRcbiAgICA7IHdyaXRlclxuICAgIDsgb3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzID0gSGFzaHRibC5Qb2x5LmNyZWF0ZSB+c2l6ZToxMCAoKVxuICAgIDsgY29ubmVjdGlvbl9zdGF0ZVxuICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgIDsgY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXG4gICAgOyBzdG9wcGVkID0gZmFsc2VcbiAgICA7IGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA9IE5vbmVcbiAgICA7IHBhY2tlZF9zZWxmID0gSW5zdGFuY2UuVCB1bnBhY2tlZFxuICAgIH1cbiAgaW5cbiAgdW5wYWNrZWQucGFja2VkX3NlbGZcbjs7XG5cbmV4Y2VwdGlvbiBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIG9mIERlc2NyaXB0aW9uLnQgbGlzdCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgY3JlYXRlX2V4biB+aW1wbGVtZW50YXRpb25zIH5vbl91bmtub3duX3JwYyA9XG4gIG1hdGNoIGNyZWF0ZSB+aW1wbGVtZW50YXRpb25zIH5vbl91bmtub3duX3JwYyB3aXRoXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgKGBEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIGR1cHMpIC0+IHJhaXNlIChEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIGR1cHMpXG47O1xuXG5sZXQgbnVsbCAoKSA9IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9uczpbXSB+b25fdW5rbm93bl9ycGM6YFJhaXNlXG5cbmxldCBhZGRfZXhuIHQgKGltcGxlbWVudGF0aW9uIDogXyBJbXBsZW1lbnRhdGlvbi50KSA9XG4gIGxldCBkZXNjIDogRGVzY3JpcHRpb24udCA9XG4gICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBpbXBsZW1lbnRhdGlvbi50YWc7IHZlcnNpb24gPSBpbXBsZW1lbnRhdGlvbi52ZXJzaW9uIH1cbiAgaW5cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IEhhc2h0YmwuY29weSB0LmltcGxlbWVudGF0aW9ucyBpblxuICBtYXRjaCBIYXNodGJsLmFkZCBpbXBsZW1lbnRhdGlvbnMgfmtleTpkZXNjIH5kYXRhOmltcGxlbWVudGF0aW9uIHdpdGhcbiAgfCBgRHVwbGljYXRlIC0+IHJhaXNlIChEdXBsaWNhdGVfaW1wbGVtZW50YXRpb25zIFsgZGVzYyBdKVxuICB8IGBPayAtPiB7IHQgd2l0aCBpbXBsZW1lbnRhdGlvbnMgfVxuOztcblxubGV0IGFkZCB0IGltcGxlbWVudGF0aW9uID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBhZGRfZXhuIHQgaW1wbGVtZW50YXRpb24pXG5cbmxldCBsaWZ0IHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9IH5mID1cbiAgbGV0IGltcGxlbWVudGF0aW9ucyA9IEhhc2h0YmwubWFwIGltcGxlbWVudGF0aW9ucyB+ZjooSW1wbGVtZW50YXRpb24ubGlmdCB+ZikgaW5cbiAgbGV0IG9uX3Vua25vd25fcnBjID1cbiAgICBtYXRjaCBvbl91bmtub3duX3JwYyB3aXRoXG4gICAgfCAoYFJhaXNlIHwgYENvbnRpbnVlIHwgYENsb3NlX2Nvbm5lY3Rpb24pIGFzIHggLT4geFxuICAgIHwgYENhbGwgY2FsbCAtPiBgQ2FsbCAoZnVuIHN0YXRlIC0+IGNhbGwgKGYgc3RhdGUpKVxuICAgIHwgYEV4cGVydCBleHBlcnQgLT4gYEV4cGVydCAoZnVuIHN0YXRlIC0+IGV4cGVydCAoZiBzdGF0ZSkpXG4gIGluXG4gIHsgaW1wbGVtZW50YXRpb25zOyBvbl91bmtub3duX3JwYyB9XG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIG1vZHVsZSBSZXNwb25kZXIgPSBSZXNwb25kZXJcblxuICBtb2R1bGUgUnBjX3Jlc3BvbmRlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFJlc3BvbmRlci50XG5cbiAgICBsZXQgY2Fubm90X3NlbmQgciA9XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIk1lc3NhZ2UgY2Fubm90IGJlIHNlbnRcIlxuICAgICAgICByXG4gICAgICAgIFslc2V4cF9vZjogXyBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudF1cbiAgICA7O1xuXG4gICAgbGV0IG1hcmtfcmVzcG9uZGVkICh0IDogdCkgPVxuICAgICAgaWYgdC5yZXNwb25kZWRcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJBbHJlYWR5IHJlc3BvbmRlZFwiIHQgWyVzZXhwX29mOiBSZXNwb25kZXIudF07XG4gICAgICB0LnJlc3BvbmRlZCA8LSB0cnVlXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZSAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgbWF0Y2hcbiAgICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ub25fY29weWluZ1xuICAgICAgICAgIHQud3JpdGVyXG4gICAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICAgaGVhZGVyXG4gICAgICAgICAgfmJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICB3aXRoXG4gICAgICB8IFNlbnQgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICAgIHwgTWVzc2FnZV90b29fYmlnIF8gYXMgciAtPiBjYW5ub3Rfc2VuZCByXG4gICAgOztcblxuICAgIGxldCBoYW5kbGVfc2VuZF9yZXN1bHQgOiB1bml0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBTZW50ICgpIHwgQ2xvc2VkIC0+ICgpXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmlnc3RyaW5nICh0IDogdCkgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICAgIFJlc3BvbnNlIHsgaWQgPSB0LnF1ZXJ5X2lkOyBkYXRhID0gT2sgKE5hdDAub2ZfaW50X2V4biBsZW4pIH1cbiAgICAgIGluXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICBoZWFkZXJcbiAgICAgICAgfmJ1ZlxuICAgICAgICB+cG9zXG4gICAgICAgIH5sZW5cbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfZXJyb3IgKHQgOiB0KSBlcnJvciA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgbGV0IGRhdGEgPVxuICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJhdyBycGMgY29tcHV0YXRpb25cIlxuICAgICAgICAgIChFcnJvci50b19leG4gZXJyb3IpXG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgIChSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSB9KVxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0XG4gICAgOztcblxuICAgIGxldCB3cml0ZV9iaW5fcHJvdCAodCA6IHQpIGJpbl93cml0ZXJfYSBhID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgICB0LndyaXRlclxuICAgICAgICAoUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfYSkpXG4gICAgICAgIChSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjcmVhdGVfZXhuID0gY3JlYXRlX2V4blxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5tb2R1bGUgVGltZV9ucyA9IENvcmVfcHJpdmF0ZS5UaW1lX25zX2FsdGVybmF0ZV9zZXhwXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgUmVhZGVyID0gVHJhbnNwb3J0LlJlYWRlclxubW9kdWxlIFdyaXRlciA9IFRyYW5zcG9ydC5Xcml0ZXJcblxubW9kdWxlIEhhbmRzaGFrZV9lcnJvciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVvZlxuICAgICAgfCBUcmFuc3BvcnRfY2xvc2VkXG4gICAgICB8IFRpbWVvdXRcbiAgICAgIHwgUmVhZGluZ19oZWFkZXJfZmFpbGVkIG9mIEVycm9yLnRcbiAgICAgIHwgTmVnb3RpYXRpb25fZmFpbGVkIG9mIEVycm9yLnRcbiAgICAgIHwgTmVnb3RpYXRlZF91bmV4cGVjdGVkX3ZlcnNpb24gb2YgaW50XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBleGNlcHRpb24gSGFuZHNoYWtlX2Vycm9yIG9mICh0ICogSW5mby50KSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGxldCB0b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gdCA9IEhhbmRzaGFrZV9lcnJvciAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbilcbmVuZFxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdmFsIHYxIDogdFxuICB2YWwgdjIgOiB0XG4gIHZhbCBuZWdvdGlhdGUgOiB1czp0IC0+IHBlZXI6dCAtPiAoaW50LCBIYW5kc2hha2VfZXJyb3IudCkgcmVzdWx0XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQLkhlYWRlclxuXG4gIGxldCBjcmVhdGUgfnN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY3JlYXRlX2V4biAoKSB+cHJvdG9jb2w6UnBjIH5zdXBwb3J0ZWRfdmVyc2lvbnNcbiAgOztcblxuICBsZXQgdjIgPSBjcmVhdGUgfnN1cHBvcnRlZF92ZXJzaW9uczpbIDE7IDIgXVxuICBsZXQgdjEgPSBjcmVhdGUgfnN1cHBvcnRlZF92ZXJzaW9uczpbIDEgXVxuXG4gIGxldCBuZWdvdGlhdGUgfnVzIH5wZWVyID1cbiAgICBtYXRjaCBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyOnRydWUgfnVzIH5wZWVyIHdpdGhcbiAgICB8IEVycm9yIGUgLT4gRXJyb3IgKEhhbmRzaGFrZV9lcnJvci5OZWdvdGlhdGlvbl9mYWlsZWQgZSlcbiAgICB8IE9rIGkgLT4gT2sgaVxuICA7O1xuZW5kXG5cbm1vZHVsZSBQcm90b2NvbF93cml0ZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2Zfd3JpdGVyIDogdCAtPiBTZXhwLnRcbiAgdmFsIGNyZWF0ZV9iZWZvcmVfbmVnb3RpYXRpb24gOiBXcml0ZXIudCAtPiB0XG4gIHZhbCBzZXRfbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIDogdCAtPiBpbnQgLT4gdW5pdFxuXG4gIHZhbCBzZW5kX3F1ZXJ5XG4gICAgOiAgdFxuICAgIC0+ICdxdWVyeSBQLlF1ZXJ5LnRcbiAgICAtPiBiaW5fd3JpdGVyX3F1ZXJ5OidxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIC0+IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRcblxuICB2YWwgc2VuZF9leHBlcnRfcXVlcnlcbiAgICA6ICB0XG4gICAgLT4gdW5pdCBQLlF1ZXJ5LnRcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZzpcbiAgICAgICAgIChXcml0ZXIudFxuICAgICAgICAgIC0+IFAuTWVzc2FnZS5uYXQwX3QgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAtPiBQLk1lc3NhZ2UubmF0MF90XG4gICAgICAgICAgLT4gYnVmOkJpZ3N0cmluZy50XG4gICAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgICAtPiAncmVzdWx0IFRyYW5zcG9ydC5TZW5kX3Jlc3VsdC50KVxuICAgIC0+ICdyZXN1bHQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRcblxuICB2YWwgc2VuZF9oZWFydGJlYXQgOiB0IC0+IHVuaXQgVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRcbiAgdmFsIGNhbl9zZW5kIDogdCAtPiBib29sXG4gIHZhbCBieXRlc190b193cml0ZSA6IHQgLT4gaW50XG4gIHZhbCBieXRlc193cml0dGVuIDogdCAtPiBJbnQ2My50XG4gIHZhbCBmbHVzaGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcbiAgdmFsIHN0b3BwZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gOiBpbnQgU2V0X29uY2UudFxuICAgIDsgd3JpdGVyIDogV3JpdGVyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2Zfd3JpdGVyIHQgPSBbJXNleHBfb2Y6IFdyaXRlci50XSB0LndyaXRlclxuXG4gIGxldCBjcmVhdGVfYmVmb3JlX25lZ290aWF0aW9uIHdyaXRlciA9XG4gICAgeyBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gPSBTZXRfb25jZS5jcmVhdGUgKCk7IHdyaXRlciB9XG4gIDs7XG5cbiAgbGV0IHNldF9uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gdCBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gPVxuICAgIFNldF9vbmNlLnNldF9leG4gdC5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gWyVoZXJlXSBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25cbiAgOztcblxuICBsZXQgcXVlcnlfbWVzc2FnZSB0IHF1ZXJ5IDogXyBQLk1lc3NhZ2UudCA9XG4gICAgbWF0Y2ggU2V0X29uY2UuZ2V0X2V4biB0Lm5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbiBbJWhlcmVdIHdpdGhcbiAgICB8IDEgLT4gUXVlcnlfdjEgKFAuUXVlcnkudG9fdjEgcXVlcnkpXG4gICAgfCBfIC0+IFF1ZXJ5IHF1ZXJ5XG4gIDs7XG5cbiAgbGV0IHNlbmRfcXVlcnkgdCBxdWVyeSB+YmluX3dyaXRlcl9xdWVyeSA9XG4gICAgbGV0IG1lc3NhZ2UgPSBxdWVyeV9tZXNzYWdlIHQgcXVlcnkgaW5cbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdFxuICAgICAgdC53cml0ZXJcbiAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9xdWVyeSkpXG4gICAgICBtZXNzYWdlXG4gIDs7XG5cbiAgbGV0IHNlbmRfZXhwZXJ0X3F1ZXJ5IHQgcXVlcnkgfmJ1ZiB+cG9zIH5sZW4gfnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyA9XG4gICAgbGV0IGhlYWRlciA9IHF1ZXJ5X21lc3NhZ2UgdCB7IHF1ZXJ5IHdpdGggZGF0YSA9IE5hdDAub2ZfaW50X2V4biBsZW4gfSBpblxuICAgIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0LndyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgaGVhZGVyIH5idWYgfnBvcyB+bGVuXG4gIDs7XG5cbiAgbGV0IHNlbmRfaGVhcnRiZWF0IHQgPVxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBIZWFydGJlYXRcbiAgOztcblxuICBsZXQgb2Zfd3JpdGVyIGYgdCA9IGYgdC53cml0ZXJcbiAgbGV0IGNhbl9zZW5kID0gb2Zfd3JpdGVyIFdyaXRlci5jYW5fc2VuZFxuICBsZXQgYnl0ZXNfdG9fd3JpdGUgPSBvZl93cml0ZXIgV3JpdGVyLmJ5dGVzX3RvX3dyaXRlXG4gIGxldCBieXRlc193cml0dGVuID0gb2Zfd3JpdGVyIFdyaXRlci5ieXRlc193cml0dGVuXG4gIGxldCBmbHVzaGVkID0gb2Zfd3JpdGVyIFdyaXRlci5mbHVzaGVkXG4gIGxldCBzdG9wcGVkID0gb2Zfd3JpdGVyIFdyaXRlci5zdG9wcGVkXG4gIGxldCBjbG9zZSA9IG9mX3dyaXRlciBXcml0ZXIuY2xvc2VcbmVuZFxuXG5tb2R1bGUgSGVhcnRiZWF0X2NvbmZpZyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdGltZW91dCA6IFRpbWVfbnMuU3Bhbi50XG4gICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgZmllbGRzXVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgWyVleHBlY3Qge3wgNzRhMWY0NzViZmIyZWVkNWE1MDliYTcxY2Q3ODkxZDIgfH1dXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KHRpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLilcbiAgICAgICAgPyhzZW5kX2V2ZXJ5ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAxMC4pXG4gICAgICAgICgpXG4gICAgPVxuICAgIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9XG4gIDs7XG5cbiAgbW9kdWxlIFJ1bnRpbWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgdG9fcnVudGltZSB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfSA9IHsgUnVudGltZS50aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbmVuZFxuXG50eXBlIHJlc3BvbnNlX2hhbmRsZXIgPVxuICBOYXQwLnQgUC5SZXNwb25zZS50XG4gIC0+IHJlYWRfYnVmZmVyOkJpZ3N0cmluZy50XG4gIC0+IHJlYWRfYnVmZmVyX3Bvc19yZWY6aW50IHJlZlxuICAtPiBbIGBrZWVwXG4gICAgIHwgYHdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIHwgYHJlbW92ZSBvZiB1bml0IFJwY19yZXN1bHQudFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIF1cblxudHlwZSB0ID1cbiAgeyBkZXNjcmlwdGlvbiA6IEluZm8udFxuICA7IGhlYXJ0YmVhdF9jb25maWcgOiBIZWFydGJlYXRfY29uZmlnLlJ1bnRpbWUudFxuICA7IG11dGFibGUgaGVhcnRiZWF0X2NhbGxiYWNrcyA6ICh1bml0IC0+IHVuaXQpIGFycmF5XG4gIDsgbXV0YWJsZSBsYXN0X3NlZW5fYWxpdmUgOiBUaW1lX25zLnRcbiAgOyBtYXhfbWV0YWRhdGFfc2l6ZSA6IEJ5dGVfdW5pdHMudFxuICA7IHJlYWRlciA6IFJlYWRlci50XG4gIDsgd3JpdGVyIDogUHJvdG9jb2xfd3JpdGVyLnRcbiAgOyBvcGVuX3F1ZXJpZXMgOiAoUC5RdWVyeV9pZC50LCAocmVzcG9uc2VfaGFuZGxlcltAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBJdmFyLnRcbiAgOyBjbG9zZV9maW5pc2hlZCA6IHVuaXQgSXZhci50XG4gICgqIFRoZXJlJ3MgYSBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gY29ubmVjdGlvbnMgYW5kIHRoZWlyIGltcGxlbWVudGF0aW9uIGluc3RhbmNlc1xuICAgICAodGhlIGxhdHRlciBkZXBlbmRzIG9uIHRoZSBjb25uZWN0aW9uIHN0YXRlLCB3aGljaCBpcyBnaXZlbiBhY2Nlc3MgdG8gdGhlIGNvbm5lY3Rpb25cbiAgICAgd2hlbiBpdCBpcyBjcmVhdGVkKS4gKilcbiAgOyBpbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgOiBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2UudCBTZXRfb25jZS50XG4gIDsgdGltZV9zb3VyY2UgOiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS50XG4gIDsgaGVhcnRiZWF0X2V2ZW50IDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQudCBTZXRfb25jZS50XG4gIDsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIDogaW50IFNldF9vbmNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdF9odW1fd3JpdGVyIHQgPVxuICBbJXNleHBcbiAgICB7IGRlc2NyaXB0aW9uIDogSW5mby50ID0gdC5kZXNjcmlwdGlvbjsgd3JpdGVyIDogUHJvdG9jb2xfd3JpdGVyLndyaXRlciA9IHQud3JpdGVyIH1dXG47O1xuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHQuZGVzY3JpcHRpb25cbmxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcblxubGV0IHdyaXRlciB0ID1cbiAgaWYgaXNfY2xvc2VkIHQgfHwgbm90IChQcm90b2NvbF93cml0ZXIuY2FuX3NlbmQgdC53cml0ZXIpXG4gIHRoZW4gRXJyb3IgYENsb3NlZFxuICBlbHNlIE9rIHQud3JpdGVyXG47O1xuXG5sZXQgYnl0ZXNfdG9fd3JpdGUgdCA9IFByb3RvY29sX3dyaXRlci5ieXRlc190b193cml0ZSB0LndyaXRlclxubGV0IGJ5dGVzX3dyaXR0ZW4gdCA9IFByb3RvY29sX3dyaXRlci5ieXRlc193cml0dGVuIHQud3JpdGVyXG5sZXQgYnl0ZXNfcmVhZCB0ID0gUmVhZGVyLmJ5dGVzX3JlYWQgdC5yZWFkZXJcbmxldCBmbHVzaGVkIHQgPSBQcm90b2NvbF93cml0ZXIuZmx1c2hlZCB0LndyaXRlclxuXG5sZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdCAtPiAnYSBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiAnYSA9XG4gIGZ1biB0IHIgLT5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgU2VudCB4IC0+IHhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbGwgb2YgdGhlIHBsYWNlcyB3ZSBjYWxsIFtoYW5kbGVfc2VuZF9yZXN1bHRdIGNoZWNrIHdoZXRoZXIgW3RdIGlzIGNsb3NlZFxuICAgICAgICh1c3VhbGx5IHZpYSB0aGUgW3dyaXRlcl0gZnVuY3Rpb24gYWJvdmUpLiBUaGlzIGNoZWNrcyB3aGV0aGVyIFt0LndyaXRlcl0gaXNcbiAgICAgICBjbG9zZWQsIHdoaWNoIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyBbdF0gaXMgY2xvc2VkLiAqKVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUlBDIGNvbm5lY3Rpb24gZ290IGNsb3NlZCB3cml0ZXJcIiB0IHNleHBfb2ZfdF9odW1fd3JpdGVyXG4gIHwgTWVzc2FnZV90b29fYmlnIF8gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJXNleHBcbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICwgeyByZWFzb24gPSAociA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpOyBjb25uZWN0aW9uID0gKHQgOiB0X2h1bV93cml0ZXIpIH1dXG47O1xuXG5sZXQgZGlzcGF0Y2ggdCB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+KHF1ZXJ5IDogXyBQLlF1ZXJ5LnQpID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgYXMgciAtPiByXG4gIHwgT2sgd3JpdGVyIC0+XG4gICAgbGV0IHF1ZXJ5ID1cbiAgICAgIG1hdGNoIHF1ZXJ5Lm1ldGFkYXRhIHdpdGhcbiAgICAgIHwgU29tZSBtZXRhZGF0YSAtPlxuICAgICAgICB7IHF1ZXJ5IHdpdGhcbiAgICAgICAgICBtZXRhZGF0YSA9XG4gICAgICAgICAgICBTb21lIChTdHJpbmcucHJlZml4IG1ldGFkYXRhIChCeXRlX3VuaXRzLmJ5dGVzX2ludF9leG4gdC5tYXhfbWV0YWRhdGFfc2l6ZSkpXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSAtPiBxdWVyeVxuICAgIGluXG4gICAgT3B0aW9uLml0ZXIgcmVzcG9uc2VfaGFuZGxlciB+ZjooZnVuIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9xdWVyaWVzIH5rZXk6cXVlcnkuaWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlcik7XG4gICAgUHJvdG9jb2xfd3JpdGVyLnNlbmRfcXVlcnkgd3JpdGVyIHF1ZXJ5IH5iaW5fd3JpdGVyX3F1ZXJ5IHw+IGhhbmRsZV9zZW5kX3Jlc3VsdCB0O1xuICAgIE9rICgpXG47O1xuXG5sZXQgbWFrZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgIGRvX3NlbmRcbiAgICAgID9tZXRhZGF0YVxuICAgICAgdFxuICAgICAgfnRhZ1xuICAgICAgfnZlcnNpb25cbiAgICAgIGJ1ZlxuICAgICAgfnBvc1xuICAgICAgfmxlblxuICAgICAgfnJlc3BvbnNlX2hhbmRsZXJcbiAgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCAtPiBFcnJvciBgQ2xvc2VkXG4gIHwgT2sgd3JpdGVyIC0+XG4gICAgbGV0IGlkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcXVlcnkgOiB1bml0IFAuUXVlcnkudCA9IHsgdGFnOyB2ZXJzaW9uOyBpZDsgbWV0YWRhdGE7IGRhdGEgPSAoKSB9IGluXG4gICAgT3B0aW9uLml0ZXIgcmVzcG9uc2VfaGFuZGxlciB+ZjooZnVuIHJlc3BvbnNlX2hhbmRsZXIgLT5cbiAgICAgIEhhc2h0Ymwuc2V0IHQub3Blbl9xdWVyaWVzIH5rZXk6aWQgfmRhdGE6cmVzcG9uc2VfaGFuZGxlcik7XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBQcm90b2NvbF93cml0ZXIuc2VuZF9leHBlcnRfcXVlcnlcbiAgICAgICAgd3JpdGVyXG4gICAgICAgIHF1ZXJ5XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICAgIH5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmc6ZG9fc2VuZFxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHRcbiAgICBpblxuICAgIE9rIHJlc3VsdFxuOztcblxubGV0IGRpc3BhdGNoX2JpZ3N0cmluZyA9IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcblxubGV0IHNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZyA9XG4gIG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbjs7XG5cbmxldCBoYW5kbGVfcmVzcG9uc2UgdCAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudCkgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZCB3aXRoXG4gIHwgTm9uZSAtPiBTdG9wIChFcnJvciAoUnBjX2Vycm9yLlVua25vd25fcXVlcnlfaWQgcmVzcG9uc2UuaWQpKVxuICB8IFNvbWUgcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgIChtYXRjaCByZXNwb25zZV9oYW5kbGVyIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiB3aXRoXG4gICAgIHwgYGtlZXAgLT4gQ29udGludWVcbiAgICAgfCBgd2FpdCB3YWl0IC0+IFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgd2FpdCAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmUgcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgKG1hdGNoIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIF8gLT4gQ29udGludWVcbiAgICAgICAgICAgfCBCaW5faW9fZXhuIF9cbiAgICAgICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgICAgICB8IFdyaXRlX2Vycm9yIF9cbiAgICAgICAgICAgfCBVbmNhdWdodF9leG4gX1xuICAgICAgICAgICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBTdG9wIChFcnJvciBlKSkpKVxuOztcblxubGV0IGhhbmRsZV9tc2dcbiAgICAgIHRcbiAgICAgIChtc2cgOiBfIFAuTWVzc2FnZS50KVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBtc2cgd2l0aFxuICB8IEhlYXJ0YmVhdCAtPlxuICAgIEFycmF5Lml0ZXIgdC5oZWFydGJlYXRfY2FsbGJhY2tzIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgICBDb250aW51ZVxuICB8IFJlc3BvbnNlIHJlc3BvbnNlIC0+IGhhbmRsZV9yZXNwb25zZSB0IHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICB8IFF1ZXJ5IHF1ZXJ5IC0+XG4gICAgbGV0IGluc3RhbmNlID0gU2V0X29uY2UuZ2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICB8IFF1ZXJ5X3YxIHF1ZXJ5IC0+XG4gICAgbGV0IGluc3RhbmNlID0gU2V0X29uY2UuZ2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluXG4gICAgbGV0IHF1ZXJ5ID0gUC5RdWVyeS5vZl92MSBxdWVyeSBpblxuICAgIEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5oYW5kbGVfcXVlcnlcbiAgICAgIGluc3RhbmNlXG4gICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICB+cXVlcnlcbiAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbjs7XG5cbmxldCBjbG9zZV9yZWFzb24gdCB+b25fY2xvc2UgPVxuICBsZXQgcmVhc29uID0gSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZCBpblxuICBtYXRjaCBvbl9jbG9zZSB3aXRoXG4gIHwgYHN0YXJ0ZWQgLT4gcmVhc29uXG4gIHwgYGZpbmlzaGVkIC0+XG4gICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZCBpblxuICAgIHJlYXNvblxuOztcblxubGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuXG5sZXQgYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayB0IGYgPVxuICAoKiBBZGRpbmcgaGVhcnRiZWF0IGNhbGxiYWNrcyBpcyByZWxhdGl2ZWx5IHJhcmUsIGJ1dCB0aGUgY2FsbGJhY2tzIGFyZSB0cmlnZ2VyZWQgYSBsb3QuXG4gICAgIFRoZSBhcnJheSByZXByZXNlbnRhdGlvbiBtYWtlcyB0aGUgYWRkaXRpb24gcXVhZHJhdGljIGZvciB0aGUgc2FrZSBvZiBrZWVwaW5nIHRoZVxuICAgICB0cmlnZ2VyaW5nIGNoZWFwLiAqKVxuICB0LmhlYXJ0YmVhdF9jYWxsYmFja3MgPC0gQXJyYXkuYXBwZW5kIFt8IGYgfF0gdC5oZWFydGJlYXRfY2FsbGJhY2tzXG47O1xuXG5sZXQgcmVzZXRfaGVhcnRiZWF0X3RpbWVvdXQgdCB0aW1lb3V0ID1cbiAgdC5oZWFydGJlYXRfY29uZmlnLnRpbWVvdXQgPC0gdGltZW91dDtcbiAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2Vcbjs7XG5cbmxldCBsYXN0X3NlZW5fYWxpdmUgdCA9IHQubGFzdF9zZWVuX2FsaXZlXG5cbmxldCBhYm9ydF9oZWFydGJlYXRpbmcgdCA9XG4gIE9wdGlvbi5pdGVyIChTZXRfb25jZS5nZXQgdC5oZWFydGJlYXRfZXZlbnQpIH5mOihmdW4gZXZlbnQgLT5cbiAgICBtYXRjaCBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5FdmVudC5hYm9ydCB0LnRpbWVfc291cmNlIGV2ZW50IHdpdGhcbiAgICB8IE9rIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZCAtPiAoKSlcbjs7XG5cbmxldCBjbG9zZSA/KHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9pbnRfc2VjIDUpIH5yZWFzb24gdCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIGFib3J0X2hlYXJ0YmVhdGluZyB0O1xuICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgcmVhc29uO1xuICAgIChtYXRjaCBTZXRfb25jZS5nZXQgdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICB8IFNvbWUgaW5zdGFuY2UgLT5cbiAgICAgICBsZXQgZmx1c2hlZCA9IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5mbHVzaCBpbnN0YW5jZSBpblxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZmx1c2hlZFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2U7XG4gICAgICAgICBmbHVzaGVkKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIERlZmVycmVkLmFueV91bml0XG4gICAgICAgICAgICAgWyBmbHVzaGVkXG4gICAgICAgICAgICAgOyBQcm90b2NvbF93cml0ZXIuc3RvcHBlZCB0LndyaXRlclxuICAgICAgICAgICAgIDsgVGltZV9zb3VyY2UuYWZ0ZXJcbiAgICAgICAgICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICAgICAgICAgIHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgICAgICAgIF1cbiAgICAgICAgIGluXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZSkpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIFByb3RvY29sX3dyaXRlci5jbG9zZSB0LndyaXRlclxuICAgID4+PiBmdW4gKCkgLT4gUmVhZGVyLmNsb3NlIHQucmVhZGVyID4+PiBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpO1xuICBjbG9zZV9maW5pc2hlZCB0XG47O1xuXG5sZXQgb25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPVxuICBsZXQgZiBidWYgfnBvcyB+bGVuOl8gOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICBsZXQgbmF0MF9tc2cgPSBQLk1lc3NhZ2UuYmluX3JlYWRfbmF0MF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgIG1hdGNoXG4gICAgICBoYW5kbGVfbXNnXG4gICAgICAgIHRcbiAgICAgICAgbmF0MF9tc2dcbiAgICAgICAgfnJlYWRfYnVmZmVyOmJ1ZlxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpwb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICB3aXRoXG4gICAgfCBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgV2FpdCBfIGFzIHJlcyAtPiByZXNcbiAgICB8IFN0b3AgcmVzdWx0IC0+XG4gICAgICBsZXQgcmVhc29uID1cbiAgICAgICAgbGV0IG1zZyA9IFwiUnBjIG1lc3NhZ2UgaGFuZGxpbmcgbG9vcCBzdG9wcGVkXCIgaW5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBJbmZvLm9mX3N0cmluZyBtc2dcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgSW5mby5jcmVhdGVcbiAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgZVxuICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgXCJDb25uZWN0aW9uLm9uX21lc3NhZ2UgcmVzdWx0ZWQgaW4gQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IuIFRoaXMgaXMgXFxcbiAgICAgICAgICAgICAgICAgIHdlaXJkLlwiXSkpXG4gICAgICBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBTdG9wIHJlYXNvblxuICBpblxuICBTdGFnZWQuc3RhZ2UgZlxuOztcblxubGV0IGhlYXJ0YmVhdF9ub3cgdCA9XG4gIGxldCBzaW5jZV9sYXN0X2hlYXJ0YmVhdCA9XG4gICAgVGltZV9ucy5kaWZmIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSkgdC5sYXN0X3NlZW5fYWxpdmVcbiAgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPiApIHNpbmNlX2xhc3RfaGVhcnRiZWF0IHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gIHRoZW4gKFxuICAgIGxldCByZWFzb24gKCkgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICAhXCJObyBoZWFydGJlYXRzIHJlY2VpdmVkIGZvciAle3NleHA6VGltZV9ucy5TcGFuLnR9LlwiXG4gICAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3RodW5rIHJlYXNvbikpKVxuICBlbHNlIChcbiAgICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+ICgpXG4gICAgfCBPayB3cml0ZXIgLT4gUHJvdG9jb2xfd3JpdGVyLnNlbmRfaGVhcnRiZWF0IHdyaXRlciB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdClcbjs7XG5cbmxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC5cblxubGV0IGNsZWFudXAgdCB+cmVhc29uIGV4biA9XG4gIGRvbid0X3dhaXRfZm9yIChjbG9zZSB+cmVhc29uIHQpO1xuICBpZiBub3QgKEhhc2h0YmwuaXNfZW1wdHkgdC5vcGVuX3F1ZXJpZXMpXG4gIHRoZW4gKFxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgfCBScGNfZXJyb3IuUnBjIChlcnJvciwgKF8gOiBJbmZvLnQpKSAtPiBlcnJvclxuICAgICAgfCBleG4gLT4gVW5jYXVnaHRfZXhuIChFeG4uc2V4cF9vZl90IGV4bilcbiAgICBpblxuICAgICgqIGNsZWFuIHVwIG9wZW4gc3RyZWFtaW5nIHJlc3BvbnNlcyAqKVxuICAgICgqIGFuIHVuZm9ydHVuYXRlIGhhY2s7IG9rIGJlY2F1c2UgdGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBoYXZlIG5vdGhpbmdcbiAgICAgICB0byByZWFkIGZvbGxvd2luZyBhIHJlc3BvbnNlIHdoZXJlIFtkYXRhXSBpcyBhbiBlcnJvciAqKVxuICAgIGxldCBkdW1teV9idWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDEgaW5cbiAgICBsZXQgZHVtbXlfcmVmID0gcmVmIDAgaW5cbiAgICBIYXNodGJsLml0ZXJpIHQub3Blbl9xdWVyaWVzIH5mOihmdW4gfmtleTpxdWVyeV9pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyOmR1bW15X2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpkdW1teV9yZWZcbiAgICAgICAgICAgeyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gRXJyb3IgZXJyb3IgfSkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3F1ZXJpZXM7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGR1bW15X2J1ZmZlcilcbjs7XG5cbmxldCBzY2hlZHVsZV9oZWFydGJlYXRzIHQgPVxuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZTtcbiAgbGV0IGhlYXJ0YmVhdF9mcm9tX25vd19vbiA9XG4gICAgKCogW2F0X2ludGVydmFsc10gd2lsbCBzY2hlZHVsZSB0aGUgZmlyc3QgaGVhcnRiZWF0IHRoZSBmaXJzdCB0aW1lIHRoZSB0aW1lX3NvdXJjZSBpc1xuICAgICAgIGFkdmFuY2VkICopXG4gICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYXRfaW50ZXJ2YWxzXG4gICAgICB0LnRpbWVfc291cmNlXG4gICAgICB0LmhlYXJ0YmVhdF9jb25maWcuc2VuZF9ldmVyeVxuICAgICAgKGZ1biAoKSAtPiBoZWFydGJlYXRfbm93IHQpXG4gIGluXG4gIFNldF9vbmNlLnNldF9leG4gdC5oZWFydGJlYXRfZXZlbnQgWyVoZXJlXSBoZWFydGJlYXRfZnJvbV9ub3dfb25cbjs7XG5cbmxldCBydW5fYWZ0ZXJfaGFuZHNoYWtlXG4gICAgICB0XG4gICAgICB3cml0ZXJcbiAgICAgIH5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25cbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyX21vbml0b3JfZXhuc1xuICA9XG4gIFByb3RvY29sX3dyaXRlci5zZXRfbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uIHQud3JpdGVyIG5lZ290aWF0ZWRfcHJvdG9jb2xfdmVyc2lvbjtcbiAgbGV0IGluc3RhbmNlID1cbiAgICBJbXBsZW1lbnRhdGlvbnMuaW5zdGFudGlhdGVcbiAgICAgIGltcGxlbWVudGF0aW9uc1xuICAgICAgfndyaXRlclxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZClcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlOihjb25uZWN0aW9uX3N0YXRlIHQpXG4gIGluXG4gIFNldF9vbmNlLnNldF9leG4gdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2UgWyVoZXJlXSBpbnN0YW5jZTtcbiAgbGV0IGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciA9IE1vbml0b3IuY3JlYXRlIH5uYW1lOlwiUlBDIGNsb3NlIGNvbm5lY3Rpb24gbW9uaXRvclwiICgpIGluXG4gIE1vbml0b3IuZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgfmY6KGZ1biBleG4gLT5cbiAgICBsZXQgcmVhc29uID1cbiAgICAgIEluZm8uY3JlYXRlX3MgWyVtZXNzYWdlIFwiVW5jYXVnaHQgZXhjZXB0aW9uIGluIGltcGxlbWVudGF0aW9uXCIgKGV4biA6IEV4bi50KV1cbiAgICBpblxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB+cmVhc29uIHQpKTtcbiAgbGV0IG1vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjb25uZWN0aW9uIGxvb3BcIiAoKSBpblxuICBsZXQgcmVhc29uIG5hbWUgZXhuID1cbiAgICBleG4sIEluZm8udGFnIChJbmZvLm9mX2V4biBleG4pIH50YWc6KFwiZXhuIHJhaXNlZCBpbiBSUEMgY29ubmVjdGlvbiBcIiBeIG5hbWUpXG4gIGluXG4gIFN0cmVhbS5pdGVyXG4gICAgKFN0cmVhbS5pbnRlcmxlYXZlXG4gICAgICAgKFN0cmVhbS5vZl9saXN0XG4gICAgICAgICAgWyBTdHJlYW0ubWFwIH5mOihyZWFzb24gXCJsb29wXCIpIChNb25pdG9yLmRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSBtb25pdG9yKVxuICAgICAgICAgIDsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwiV3JpdGVyLnRcIikgd3JpdGVyX21vbml0b3JfZXhuc1xuICAgICAgICAgIF0pKVxuICAgIH5mOihmdW4gKGV4biwgcmVhc29uKSAtPiBjbGVhbnVwIHQgZXhuIH5yZWFzb24pO1xuICB3aXRoaW4gfm1vbml0b3IgKGZ1biAoKSAtPlxuICAgIHNjaGVkdWxlX2hlYXJ0YmVhdHMgdDtcbiAgICBSZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICB0LnJlYWRlclxuICAgICAgfm9uX21lc3NhZ2U6KFN0YWdlZC51bnN0YWdlIChvbl9tZXNzYWdlIHQgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvcikpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOihmdW4gKCkgLT5cbiAgICAgICAgdC5sYXN0X3NlZW5fYWxpdmUgPC0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uubm93IHQudGltZV9zb3VyY2UpXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBPayByZWFzb24gLT4gY2xlYW51cCB0IH5yZWFzb24gKFJwY19lcnJvci5ScGMgKENvbm5lY3Rpb25fY2xvc2VkLCB0LmRlc2NyaXB0aW9uKSlcbiAgICAoKiBUaGUgcHJvdG9jb2wgaXMgc3VjaCB0aGF0IHJpZ2h0IG5vdywgdGhlIG9ubHkgb3V0Y29tZSBvZiB0aGUgb3RoZXIgc2lkZSBjbG9zaW5nIHRoZVxuICAgICAgIGNvbm5lY3Rpb24gbm9ybWFsbHkgaXMgdGhhdCB3ZSBnZXQgYW4gZW9mLiAqKVxuICAgIHwgRXJyb3IgKGBFb2YgfCBgQ2xvc2VkKSAtPlxuICAgICAgY2xlYW51cFxuICAgICAgICB0XG4gICAgICAgIH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiRU9GIG9yIGNvbm5lY3Rpb24gY2xvc2VkXCIpXG4gICAgICAgIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGRvX2hhbmRzaGFrZSB0IHdyaXRlciB+aGFuZHNoYWtlX3RpbWVvdXQgfmhlYWRlciA9XG4gIGlmIG5vdCAoV3JpdGVyLmNhbl9zZW5kIHdyaXRlcilcbiAgdGhlbiByZXR1cm4gKEVycm9yIEhhbmRzaGFrZV9lcnJvci5UcmFuc3BvcnRfY2xvc2VkKVxuICBlbHNlIChcbiAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdCB3cml0ZXIgSGVhZGVyLmJpbl90LndyaXRlciBoZWFkZXIgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgKCogSWYgd2UgdXNlIFttYXhfY29ubmVjdGlvbnNdIGluIHRoZSBzZXJ2ZXIsIHRoZW4gdGhpcyByZWFkIG1heSBqdXN0IGhhbmcgdW50aWwgdGhlXG4gICAgICAgc2VydmVyIHN0YXJ0cyBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zICh3aGljaCBjb3VsZCBiZSBuZXZlcikuICBUaGF0IGlzIHdoeSBhXG4gICAgICAgdGltZW91dCBpcyB1c2VkICopXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIChmdW4gKCkgLT4gUmVhZGVyLnJlYWRfb25lX21lc3NhZ2VfYmluX3Byb3QgdC5yZWFkZXIgSGVhZGVyLmJpbl90LnJlYWRlcilcbiAgICBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0XG4gICAgICAgIChUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91cyB0LnRpbWVfc291cmNlKVxuICAgICAgICBoYW5kc2hha2VfdGltZW91dFxuICAgICAgICByZXN1bHRcbiAgICB3aXRoXG4gICAgfCBgVGltZW91dCAtPlxuICAgICAgKCogVGhlcmUncyBhIHBlbmRpbmcgcmVhZCwgdGhlIHJlYWRlciBpcyBiYXNpY2FsbHkgdXNlbGVzcyBub3csIHNvIHdlIGNsZWFuIGl0XG4gICAgICAgICB1cC4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiSGFuZHNoYWtlIHRpbWVvdXRcIikpO1xuICAgICAgRXJyb3IgSGFuZHNoYWtlX2Vycm9yLlRpbWVvdXRcbiAgICB8IGBSZXN1bHQgKEVycm9yIGV4bikgLT5cbiAgICAgIGxldCByZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIltSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdF0gcmFpc2VkXCIgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb24pO1xuICAgICAgRXJyb3IgKFJlYWRpbmdfaGVhZGVyX2ZhaWxlZCAoRXJyb3Iub2ZfZXhuIGV4bikpXG4gICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYEVvZikpIC0+IEVycm9yIEVvZlxuICAgIHwgYFJlc3VsdCAoT2sgKEVycm9yIGBDbG9zZWQpKSAtPiBFcnJvciBUcmFuc3BvcnRfY2xvc2VkXG4gICAgfCBgUmVzdWx0IChPayAoT2sgcGVlcikpIC0+IEhlYWRlci5uZWdvdGlhdGUgfnVzOmhlYWRlciB+cGVlcilcbjs7XG5cbmxldCBjb250YWluc19tYWdpY19wcmVmaXggPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlci5jb250YWluc19tYWdpY19wcmVmaXggfnByb3RvY29sOlJwY1xubGV0IGRlZmF1bHRfaGFuZHNoYWtlX2hlYWRlciA9IEhlYWRlci52MlxuXG5sZXQgaGFuZHNoYWtlX2hlYWRlcl9vdmVycmlkZV9rZXkgPVxuICBVbml2X21hcC5LZXkuY3JlYXRlIH5uYW1lOlwiYXN5bmMgcnBjIGhhbmRzaGFrZSBoZWFkZXIgb3ZlcnJpZGVcIiBbJXNleHBfb2Y6IEhlYWRlci50XVxuOztcblxubGV0IGdldF9oYW5kc2hha2VfaGVhZGVyICgpID1cbiAgQXN5bmNfa2VybmVsX3NjaGVkdWxlci5maW5kX2xvY2FsIGhhbmRzaGFrZV9oZWFkZXJfb3ZlcnJpZGVfa2V5XG4gIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpkZWZhdWx0X2hhbmRzaGFrZV9oZWFkZXJcbjs7XG5cbmxldCBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICA/KGhhbmRzaGFrZV90aW1lb3V0ID0gZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dClcbiAgICAgID8oaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcuY3JlYXRlICgpKVxuICAgICAgPyhtYXhfbWV0YWRhdGFfc2l6ZSA9IEJ5dGVfdW5pdHMub2Zfa2lsb2J5dGVzIDEuKVxuICAgICAgPyhkZXNjcmlwdGlvbiA9IEluZm8ub2Zfc3RyaW5nIFwiPGNyZWF0ZWQtZGlyZWN0bHk+XCIpXG4gICAgICA/KHRpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICh7IHJlYWRlcjsgd3JpdGVyIH0gOiBUcmFuc3BvcnQudClcbiAgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID1cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKVxuICAgIHwgU29tZSBzIC0+IHNcbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgZGVzY3JpcHRpb25cbiAgICA7IGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLnRvX3J1bnRpbWUgaGVhcnRiZWF0X2NvbmZpZ1xuICAgIDsgaGVhcnRiZWF0X2NhbGxiYWNrcyA9IFt8fF1cbiAgICA7IGxhc3Rfc2Vlbl9hbGl2ZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0aW1lX3NvdXJjZVxuICAgIDsgbWF4X21ldGFkYXRhX3NpemVcbiAgICA7IHJlYWRlclxuICAgIDsgd3JpdGVyID0gUHJvdG9jb2xfd3JpdGVyLmNyZWF0ZV9iZWZvcmVfbmVnb3RpYXRpb24gd3JpdGVyXG4gICAgOyBvcGVuX3F1ZXJpZXMgPSBIYXNodGJsLlBvbHkuY3JlYXRlIH5zaXplOjEwICgpXG4gICAgOyBjbG9zZV9zdGFydGVkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGltcGxlbWVudGF0aW9uc19pbnN0YW5jZSA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGhlYXJ0YmVhdF9ldmVudCA9IFNldF9vbmNlLmNyZWF0ZSAoKVxuICAgIDsgbmVnb3RpYXRlZF9wcm90b2NvbF92ZXJzaW9uID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICBsZXQgd3JpdGVyX21vbml0b3JfZXhucyA9IE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIChXcml0ZXIubW9uaXRvciB3cml0ZXIpIGluXG4gIHVwb24gKFdyaXRlci5zdG9wcGVkIHdyaXRlcikgKGZ1biAoKSAtPlxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUlBDIHRyYW5zcG9ydCBzdG9wcGVkXCIpKSk7XG4gIGxldCBoZWFkZXIgPSBnZXRfaGFuZHNoYWtlX2hlYWRlciAoKSBpblxuICBtYXRjaCVtYXAgZG9faGFuZHNoYWtlIHQgd3JpdGVyIH5oYW5kc2hha2VfdGltZW91dCB+aGVhZGVyIHdpdGhcbiAgfCBPayBuZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb24gLT5cbiAgICBydW5fYWZ0ZXJfaGFuZHNoYWtlXG4gICAgICB0XG4gICAgICB3cml0ZXJcbiAgICAgIH5uZWdvdGlhdGVkX3Byb3RvY29sX3ZlcnNpb25cbiAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB+d3JpdGVyX21vbml0b3JfZXhucztcbiAgICBPayB0XG4gIHwgRXJyb3IgZXJyb3IgLT5cbiAgICBFcnJvciAoSGFuZHNoYWtlX2Vycm9yLnRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjpkZXNjcmlwdGlvbiBlcnJvcilcbjs7XG5cbmxldCB3aXRoX2Nsb3NlXG4gICAgICA/aW1wbGVtZW50YXRpb25zXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIHRyYW5zcG9ydFxuICAgICAgfmRpc3BhdGNoX3F1ZXJpZXNcbiAgICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgPVxuICBsZXQgaGFuZGxlX2hhbmRzaGFrZV9lcnJvciA9XG4gICAgbWF0Y2ggb25faGFuZHNoYWtlX2Vycm9yIHdpdGhcbiAgICB8IGBDYWxsIGYgLT4gZlxuICAgIHwgYFJhaXNlIC0+IHJhaXNlXG4gIGluXG4gIGxldCViaW5kIHQgPVxuICAgIGNyZWF0ZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRXJyb3IgZSAtPlxuICAgIGxldCViaW5kICgpID0gVHJhbnNwb3J0LmNsb3NlIHRyYW5zcG9ydCBpblxuICAgIGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgZVxuICB8IE9rIHQgLT5cbiAgICBNb25pdG9yLnByb3RlY3RcbiAgICAgIH5ydW46YFNjaGVkdWxlXG4gICAgICB+cmVzdDpgTG9nXG4gICAgICB+ZmluYWxseTooZnVuICgpIC0+XG4gICAgICAgIGNsb3NlIHQgfnJlYXNvbjooSW5mby5vZl9zdHJpbmcgXCJScGMuQ29ubmVjdGlvbi53aXRoX2Nsb3NlIGZpbmlzaGVkXCIpKVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0JWJpbmQgcmVzdWx0ID0gZGlzcGF0Y2hfcXVlcmllcyB0IGluXG4gICAgICAgICBsZXQlbWFwICgpID1cbiAgICAgICAgICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgfCBTb21lIF8gLT4gY2xvc2VfZmluaXNoZWQgdFxuICAgICAgICAgaW5cbiAgICAgICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXJ2ZXJfd2l0aF9jbG9zZVxuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIHRyYW5zcG9ydFxuICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgPVxuICBsZXQgb25faGFuZHNoYWtlX2Vycm9yID1cbiAgICBtYXRjaCBvbl9oYW5kc2hha2VfZXJyb3Igd2l0aFxuICAgIHwgYENhbGwgZiAtPiBgQ2FsbCBmXG4gICAgfCBgUmFpc2UgLT4gYFJhaXNlXG4gICAgfCBgSWdub3JlIC0+IGBDYWxsIChmdW4gXyAtPiBEZWZlcnJlZC51bml0KVxuICBpblxuICB3aXRoX2Nsb3NlXG4gICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICA/ZGVzY3JpcHRpb25cbiAgICA/dGltZV9zb3VyY2VcbiAgICB0cmFuc3BvcnRcbiAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gICAgfmRpc3BhdGNoX3F1ZXJpZXM6KGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG47O1xuXG5sZXQgY2xvc2VcbiAgICAgID9zdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXRcbiAgICAgID8ocmVhc29uID0gSW5mby5vZl9zdHJpbmcgXCJScGMuQ29ubmVjdGlvbi5jbG9zZVwiKVxuICAgICAgdFxuICA9XG4gIGNsb3NlID9zdHJlYW1pbmdfcmVzcG9uc2VzX2ZsdXNoX3RpbWVvdXQgfnJlYXNvbiB0XG47O1xuXG5tb2R1bGUgQ2xpZW50X2ltcGxlbWVudGF0aW9ucyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAncyB0ID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgOiB0IC0+ICdzXG4gICAgOyBpbXBsZW1lbnRhdGlvbnMgOiAncyBJbXBsZW1lbnRhdGlvbnMudFxuICAgIH1cblxuICBsZXQgbnVsbCAoKSA9XG4gICAgeyBjb25uZWN0aW9uX3N0YXRlID0gKGZ1biBfIC0+ICgpKTsgaW1wbGVtZW50YXRpb25zID0gSW1wbGVtZW50YXRpb25zLm51bGwgKCkgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG5cbiAgbGV0IHdpdGhfYXN5bmNfZXhlY3V0aW9uX2NvbnRleHQgfmNvbnRleHQgfmYgPVxuICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIud2l0aF9sb2NhbCBoYW5kc2hha2VfaGVhZGVyX292ZXJyaWRlX2tleSAoU29tZSBjb250ZXh0KSB+ZlxuICA7O1xuZW5kXG4iLCJcbm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gVXRpbFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb25cbm1vZHVsZSBPbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbiA9IEltcGxlbWVudGF0aW9uXG5tb2R1bGUgSW1wbGVtZW50YXRpb25zID0gSW1wbGVtZW50YXRpb25zXG5tb2R1bGUgVHJhbnNwb3J0ID0gVHJhbnNwb3J0XG5tb2R1bGUgQ29ubmVjdGlvbiA9IENvbm5lY3Rpb25cblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pj1+ICkgPSBSZXN1bHQuKCA+Pj0gKVxubGV0ICggPj58fiApID0gUmVzdWx0LiggPj58IClcblxubW9kdWxlIFJwY19jb21tb24gPSBzdHJ1Y3RcbiAgbGV0IGRpc3BhdGNoX3JhdydcbiAgICAgICAgP21ldGFkYXRhXG4gICAgICAgIGNvbm5cbiAgICAgICAgfnRhZ1xuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgICB+cXVlcnlcbiAgICAgICAgfnF1ZXJ5X2lkXG4gICAgICAgIH5yZXNwb25zZV9oYW5kbGVyXG4gICAgPVxuICAgIGxldCBxdWVyeSA9IHsgUC5RdWVyeS50YWc7IHZlcnNpb247IGlkID0gcXVlcnlfaWQ7IG1ldGFkYXRhOyBkYXRhID0gcXVlcnkgfSBpblxuICAgIG1hdGNoIENvbm5lY3Rpb24uZGlzcGF0Y2ggY29ubiB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgUnBjX2Vycm9yLkNvbm5lY3Rpb25fY2xvc2VkXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX3JhdyA/bWV0YWRhdGEgY29ubiB+dGFnIH52ZXJzaW9uIH5iaW5fd3JpdGVyX3F1ZXJ5IH5xdWVyeSB+cXVlcnlfaWQgfmYgPVxuICAgIGxldCByZXNwb25zZV9pdmFyID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAobWF0Y2hcbiAgICAgICBkaXNwYXRjaF9yYXcnXG4gICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH50YWdcbiAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIChmIHJlc3BvbnNlX2l2YXIpKVxuICAgICB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gSXZhci5maWxsIHJlc3BvbnNlX2l2YXIgZSk7XG4gICAgSXZhci5yZWFkIHJlc3BvbnNlX2l2YXJcbiAgOztcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlKSB0ID1cbiAgICB7IHRhZyA6IFAuUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBiaW5fcXVlcnkgOiAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fcmVzcG9uc2UgOiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBxdWVyeV90eXBlX2lkIDogJ3F1ZXJ5IFR5cGVfZXF1YWwuSWQudFxuICAgIDsgcmVzcG9uc2VfdHlwZV9pZCA6ICdyZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgPVxuICAgIGxldCBxdWVyeV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpxdWVyeVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OnJlc3BvbnNlXCJdIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICB7IHRhZyA9IFAuUnBjX3RhZy5vZl9zdHJpbmcgbmFtZVxuICAgIDsgdmVyc2lvblxuICAgIDsgYmluX3F1ZXJ5XG4gICAgOyBiaW5fcmVzcG9uc2VcbiAgICA7IHF1ZXJ5X3R5cGVfaWRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWRcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQucmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LmJpbl9xdWVyeVxuICBsZXQgYmluX3Jlc3BvbnNlIHQgPSB0LmJpbl9yZXNwb25zZVxuXG4gIGxldCBzaGFwZXMgdCA9XG4gICAgUnBjX3NoYXBlcy5ScGMgeyBxdWVyeSA9IHQuYmluX3F1ZXJ5LnNoYXBlOyByZXNwb25zZSA9IHQuYmluX3Jlc3BvbnNlLnNoYXBlIH1cbiAgOztcblxuICBsZXQgYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHF1ZXJ5ID1cbiAgICBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIHF1ZXJ5KVxuICA7O1xuXG4gIGxldCBkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcXVlcnkgPVxuICAgIEVhZ2VyX2RlZmVycmVkLm1hcCAoZiBzdGF0ZSBxdWVyeSkgfmY6KGZ1biBhIC0+IE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgYSlcbiAgOztcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPVxuICAgICAgICBScGNcbiAgICAgICAgICAoIHQuYmluX3F1ZXJ5LnJlYWRlclxuICAgICAgICAgICwgdC5iaW5fcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgICAgLCBkZWZlcnJlZF9ub19hdXRob3JpemF0aW9uIGZcbiAgICAgICAgICAsIERlZmVycmVkIClcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPVxuICAgICAgICBScGNcbiAgICAgICAgICAoIHQuYmluX3F1ZXJ5LnJlYWRlclxuICAgICAgICAgICwgdC5iaW5fcmVzcG9uc2Uud3JpdGVyXG4gICAgICAgICAgLCBibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGZcbiAgICAgICAgICAsIEJsb2NraW5nIClcbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpXG4gICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZSA9XG4gICAgICAgIHJlc3BvbnNlLmRhdGFcbiAgICAgICAgPj49fiBmdW4gbGVuIC0+XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgdC5iaW5fcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHJwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGwgaXZhciByZXNwb25zZTtcbiAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgP21ldGFkYXRhXG4gICAgICBjb25uXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OnQuYmluX3F1ZXJ5LndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5mOnJlc3BvbnNlX2hhbmRsZXJcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2gnID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICBycGNfcmVzdWx0X3RvX29yX2Vycm9yIHQgY29ubiByZXN1bHRcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZXhuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPj58IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUmVzcG9uZGVyID0gSW1wbGVtZW50YXRpb25zLkV4cGVydC5ScGNfcmVzcG9uZGVyXG5cbiAgICBsZXQgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBsZXQgcmVzcG9uc2VfaGFuZGxlciA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlciA9XG4gICAgICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgICAgICBtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT5cbiAgICAgICAgICAgIGhhbmRsZV9lcnJvclxuICAgICAgICAgICAgICAoRXJyb3IudF9vZl9zZXhwXG4gICAgICAgICAgICAgICAgIChScGNfZXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAgICAgIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgICAgICAgICAgKERlZmVycmVkLnBlZWsgKENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICAgICAgICAgICAgICAgICAgICAgICAgIDogSW5mby50IG9wdGlvbildKVxuICAgICAgICAgICAgICAgICAgICBlKSk7XG4gICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICAgbGV0IGxlbiA9IChsZW4gOiBOYXQwLnQgOj4gaW50KSBpblxuICAgICAgICAgICAgbGV0IGQgPSBoYW5kbGVfcmVzcG9uc2UgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuIGluXG4gICAgICAgICAgICByZWFkX2J1ZmZlcl9wb3NfcmVmIDo9ICFyZWFkX2J1ZmZlcl9wb3NfcmVmICsgbGVuO1xuICAgICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkIHRoZW4gYHJlbW92ZSAoT2sgKCkpIGVsc2UgYHJlbW92ZV9hbmRfd2FpdCBkXG4gICAgICBpblxuICAgICAgZG9fZGlzcGF0Y2hcbiAgICAgICAgP21ldGFkYXRhXG4gICAgICAgIGNvbm5cbiAgICAgICAgfnRhZzooUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnKVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICBidWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIHJlc3BvbnNlX2hhbmRsZXIpXG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaFxuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgbWFrZV9kaXNwYXRjaFxuICAgICAgICAgIENvbm5lY3Rpb24uZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICB3aXRoXG4gICAgICB8IE9rICgpIC0+IGBPa1xuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGVfZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLnNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayBkIC0+IGBGbHVzaGVkIGRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuaW1wbGVtZW50YXRpb25fcmVzdWx0ID1cbiAgICAgIHwgUmVwbGllZFxuICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuXG4gICAgbGV0IGRlZmVycmVkX25vX2F1dGhvcml6YXRpb24gZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbiA9XG4gICAgICBFYWdlcl9kZWZlcnJlZC5tYXAgKGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4pIH5mOihmdW4gYSAtPlxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIGEpXG4gICAgOztcblxuICAgIGxldCBibG9ja2luZ19ub19hdXRob3JpemF0aW9uIGYgc3RhdGUgcmVzcG9uZGVyIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgT3Jfbm90X2F1dGhvcml6ZWQuQXV0aG9yaXplZCAoZiBzdGF0ZSByZXNwb25kZXIgYnVmIH5wb3MgfmxlbilcbiAgICA7O1xuXG4gICAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmLCBEZWZlcnJlZClcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmLCBCbG9ja2luZylcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb25cbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZGVmZXJyZWRfbm9fYXV0aG9yaXphdGlvbiBmLCBEZWZlcnJlZClcbiAgICAgIDsgc2hhcGVzID0gbGF6eSBScGNfc2hhcGVzLlVua25vd25cbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbidcbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoYmxvY2tpbmdfbm9fYXV0aG9yaXphdGlvbiBmLCBCbG9ja2luZylcbiAgICAgIDsgc2hhcGVzID0gbGF6eSBScGNfc2hhcGVzLlVua25vd25cbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgdHlwZSAnbXNnIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9tc2cgOiAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgbXNnX3R5cGVfaWQgOiAnbXNnIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG5cbiAgbGV0IGNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZyA9XG4gICAgbGV0IG1zZ190eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9Om1zZ1wiXSBzZXhwX29mX29wYXF1ZSBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lOyB2ZXJzaW9uOyBiaW5fbXNnOyBtc2dfdHlwZV9pZCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID0gUnBjX3NoYXBlcy5PbmVfd2F5IHsgbXNnID0gdC5iaW5fbXNnLnNoYXBlIH1cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgbXNnX3R5cGVfaWQgdCA9IHQubXNnX3R5cGVfaWRcblxuICBsZXQgbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIHF1ZXJ5ID1cbiAgICBFYWdlcl9kZWZlcnJlZC5yZXR1cm4gKE9yX25vdF9hdXRob3JpemVkLkF1dGhvcml6ZWQgKGYgc3RhdGUgcXVlcnkpKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gT25lX3dheSAodC5iaW5fbXNnLnJlYWRlciwgbm9fYXV0aG9yaXphdGlvbiBmKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoJyA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3J1xuICAgICAgP21ldGFkYXRhXG4gICAgICBjb25uXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OnQuYmluX21zZy53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5ID1cbiAgICBkaXNwYXRjaCcgP21ldGFkYXRhIHQgY29ubiBxdWVyeSB8PiBmdW4gcmVzdWx0IC0+IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgT3JfZXJyb3Iub2tfZXhuIChkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5KVxuICA7O1xuXG4gIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXV0aG9yaXphdGlvbiBmIHN0YXRlIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgRWFnZXJfZGVmZXJyZWQucmV0dXJuIChPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChmIHN0YXRlIGJ1ZiB+cG9zIH5sZW4pKVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IE9uZV93YXlfZXhwZXJ0IChub19hdXRob3JpemF0aW9uIGYpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgICAgOyBvbl9leGNlcHRpb25cbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IGRpc3BhdGNoXG4gICAgICAgICAgP21ldGFkYXRhXG4gICAgICAgICAgeyB0YWc7IHZlcnNpb247IGJpbl9tc2cgPSBfOyBtc2dfdHlwZV9pZCA9IF8gfVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgQ29ubmVjdGlvbi5kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnRhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICB3aXRoXG4gICAgICB8IE9rICgpIC0+IGBPa1xuICAgICAgfCBFcnJvciBgQ2xvc2VkIC0+IGBDb25uZWN0aW9uX2Nsb3NlZFxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGVfZGlzcGF0Y2hcbiAgICAgICAgICA/bWV0YWRhdGFcbiAgICAgICAgICB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9XG4gICAgICAgICAgY29ublxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLnNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgID9tZXRhZGF0YVxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZmx1c2hlZCAtPiBgRmx1c2hlZCBmbHVzaGVkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFBpcGVfY2xvc2VfcmVhc29uID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDbG9zZWRfbG9jYWxseVxuICAgIHwgQ2xvc2VkX3JlbW90ZWx5XG4gICAgfCBFcnJvciBvZiBFcnJvci50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgIFslZXhwZWN0IHt8IDc0OGM4YmY0NTAyZDA5NzhkMDA3YmY3Zjk2YTdlZjdmIHx9XVxuICA7O1xuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgICAgfCBDbG9zZWRfbG9jYWxseVxuICAgICAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgICAgICB8IEVycm9yIG9mIEVycm9yLlN0YWJsZS5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA3NDhjOGJmNDUwMmQwOTc4ZDAwN2JmN2Y5NmE3ZWY3ZiB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbigqIHRoZSBiYXNpcyBvZiB0aGUgaW1wbGVtZW50YXRpb25zIG9mIFBpcGVfcnBjIGFuZCBTdGF0ZV9ycGMgKilcbm1vZHVsZSBTdHJlYW1pbmdfcnBjID0gc3RydWN0XG4gIG1vZHVsZSBJbml0aWFsX21lc3NhZ2UgPSBQLlN0cmVhbV9pbml0aWFsX21lc3NhZ2VcblxuICB0eXBlICgncXVlcnksICdpbml0aWFsX3Jlc3BvbnNlLCAndXBkYXRlX3Jlc3BvbnNlLCAnZXJyb3JfcmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlIDogJ2luaXRpYWxfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlIDogJ3VwZGF0ZV9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA6ICdlcnJvcl9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgOiAnaW5pdGlhbF9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkIDogJ3VwZGF0ZV9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgOiAnZXJyb3JfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgY2xpZW50X3B1c2hlc19iYWNrID1cbiAgICAgIG1hdGNoIGNsaWVudF9wdXNoZXNfYmFjayB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBlcnJvcl9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTplcnJvclwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA9IGJpbl9lcnJvclxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX2luaXRpYWxfbWVzc2FnZSB4ID1cbiAgICB7IEluaXRpYWxfbWVzc2FnZS51bnVzZWRfcXVlcnlfaWQgPSBQLlVudXNlZF9xdWVyeV9pZC50OyBpbml0aWFsID0geCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBScGNfc2hhcGVzLlN0cmVhbWluZ19ycGNcbiAgICAgIHsgcXVlcnkgPSB0LmJpbl9xdWVyeS5zaGFwZVxuICAgICAgOyBpbml0aWFsX3Jlc3BvbnNlID0gdC5iaW5faW5pdGlhbF9yZXNwb25zZS5zaGFwZVxuICAgICAgOyB1cGRhdGVfcmVzcG9uc2UgPSB0LmJpbl91cGRhdGVfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgZXJyb3IgPSB0LmJpbl9lcnJvcl9yZXNwb25zZS5zaGFwZVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZ2VuIHQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIGltcGwgPVxuICAgIGxldCBiaW5faW5pdF93cml0ZXIgPVxuICAgICAgSW5pdGlhbF9tZXNzYWdlLmJpbl93cml0ZXJfdFxuICAgICAgICB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICB0LmJpbl9lcnJvcl9yZXNwb25zZS53cml0ZXJcbiAgICBpblxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPVxuICAgICAgICBTdHJlYW1pbmdfcnBjXG4gICAgICAgICAgeyBiaW5fcXVlcnlfcmVhZGVyID0gdC5iaW5fcXVlcnkucmVhZGVyXG4gICAgICAgICAgOyBiaW5faW5pdF93cml0ZXJcbiAgICAgICAgICA7IGJpbl91cGRhdGVfd3JpdGVyID0gdC5iaW5fdXBkYXRlX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICAgIDsgaW1wbFxuICAgICAgICAgIH1cbiAgICA7IHNoYXBlcyA9IGxhenkgKHNoYXBlcyB0KVxuICAgIDsgb25fZXhjZXB0aW9uXG4gICAgfVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IGYgPVxuICAgIGxldCBmIGMgcXVlcnkgPVxuICAgICAgbWF0Y2glbWFwIGYgYyBxdWVyeSB3aXRoXG4gICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgKEVycm9yIGVycikpKVxuICAgICAgfCBPayAoaW5pdGlhbCwgcGlwZSkgLT4gQXV0aG9yaXplZCAoT2sgKG1ha2VfaW5pdGlhbF9tZXNzYWdlIChPayBpbml0aWFsKSwgcGlwZSkpXG4gICAgaW5cbiAgICBpbXBsZW1lbnRfZ2VuIHQgP29uX2V4Y2VwdGlvbiAoUGlwZSBmKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5IHdyaXRlciA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdyaXRlciB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiBPcl9ub3RfYXV0aG9yaXplZC5BdXRob3JpemVkIChFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgeCkpXG4gICAgICB8IE9rIF8gYXMgeCAtPiBBdXRob3JpemVkIChPayAobWFrZV9pbml0aWFsX21lc3NhZ2UgeCkpXG4gICAgaW5cbiAgICBpbXBsZW1lbnRfZ2VuID9vbl9leGNlcHRpb24gdCAoRGlyZWN0IGYpXG4gIDs7XG5cbiAgbGV0IGFib3J0IHQgY29ubiBpZCA9XG4gICAgbGV0IHF1ZXJ5ID1cbiAgICAgIHsgUC5RdWVyeS50YWcgPSB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbjsgaWQ7IG1ldGFkYXRhID0gTm9uZTsgZGF0YSA9IGBBYm9ydCB9XG4gICAgaW5cbiAgICBpZ25vcmVcbiAgICAgIChDb25uZWN0aW9uLmRpc3BhdGNoXG4gICAgICAgICBjb25uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeTpQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cmVzcG9uc2VfaGFuZGxlcjpOb25lXG4gICAgICAgOiAodW5pdCwgWyBgQ2xvc2VkIF0pIFJlc3VsdC50KVxuICA7O1xuXG4gIG1vZHVsZSBQaXBlX21lc3NhZ2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBVcGRhdGUgb2YgJ2FcbiAgICAgIHwgQ2xvc2VkIG9mIFsgYEJ5X3JlbW90ZV9zaWRlIHwgYEVycm9yIG9mIEVycm9yLnQgXVxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9yZXNwb25zZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IENvbnRpbnVlXG4gICAgICB8IFdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX21ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgY2xvc2VfcmVhc29uIDogUGlwZV9jbG9zZV9yZWFzb24udCBEZWZlcnJlZC50XG4gICAgICB9XG5cbiAgICBsZXQgaWQgdCA9IHQucXVlcnlfaWRcbiAgICBsZXQgY2xvc2VfcmVhc29uIHQgPSB0LmNsb3NlX3JlYXNvblxuICBlbmRcblxuICBtb2R1bGUgUmVzcG9uc2Vfc3RhdGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVXBkYXRlX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcmVzcG9uc2UudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEluaXRpYWwgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSB0ID1cbiAgICAgICAgeyBycGMgOiAoJ3EsICdpLCAndSwgJ2UpIHRcbiAgICAgICAgOyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgICA7IG1ha2VfdXBkYXRlX2hhbmRsZXIgOiB1bml0IC0+ICdleHRyYSAqICd1IFVwZGF0ZV9oYW5kbGVyLnRcbiAgICAgICAgOyBpdmFyIDogKFAuUXVlcnlfaWQudCAqICdpICogJ2V4dHJhLCAnZSkgUmVzdWx0LnQgUnBjX3Jlc3VsdC50IEl2YXIudFxuICAgICAgICA7IGNvbm5lY3Rpb24gOiBDb25uZWN0aW9uLnRcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IFdhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgOiAoJ3EsICdpLCAndSwgJ2UsICdleHRyYSkgSW5pdGlhbC50IC0+ICd1IHRcbiAgICAgICAgfCBXcml0aW5nX3VwZGF0ZXMgb2YgJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAnYSBVcGRhdGVfaGFuZGxlci50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSB7IG11dGFibGUgc3RhdGUgOiAnYSBTdGF0ZS50IH1cbiAgZW5kXG5cbiAgbGV0IHJlYWRfZXJyb3JcbiAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvblxuICAgICAgICAoaGFuZGxlciA6IF8gUmVzcG9uc2Vfc3RhdGUuVXBkYXRlX2hhbmRsZXIudClcbiAgICAgICAgZXJyXG4gICAgPVxuICAgIGxldCBjb3JlX2VyciA9XG4gICAgICBFcnJvci50X29mX3NleHAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBlcnIpXG4gICAgaW5cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCAoYEVycm9yIGNvcmVfZXJyKSkgOiBQaXBlX3Jlc3BvbnNlLnQpO1xuICAgIGByZW1vdmUgKEVycm9yIGVycilcbiAgOztcblxuICBsZXQgZW9mIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KSA9XG4gICAgaWdub3JlIChoYW5kbGVyIChDbG9zZWQgYEJ5X3JlbW90ZV9zaWRlKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoT2sgKCkpXG4gIDs7XG5cbiAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBpbml0aWFsX3N0YXRlXG4gICAgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXJcbiAgICA9XG4gICAgbGV0IG9wZW4gUmVzcG9uc2Vfc3RhdGUgaW5cbiAgICBsZXQgc3RhdGUgPSB7IHN0YXRlID0gV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSBpbml0aWFsX3N0YXRlIH0gaW5cbiAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICBtYXRjaCBzdGF0ZS5zdGF0ZSB3aXRoXG4gICAgICB8IFdyaXRpbmdfdXBkYXRlcyAoYmluX3JlYWRlcl91cGRhdGUsIGhhbmRsZXIpIC0+XG4gICAgICAgIChtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl9yZWFkZXJfbmF0MF90XG4gICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgICAgIH5hZGRfbGVuOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBFb2YgLT4gMFxuICAgICAgICAgICAgICAgICB8IGBPayAobGVuIDogTmF0MC50KSAtPiAobGVuIDo+IGludCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IHJlYWRfZXJyb3IgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiBoYW5kbGVyIGVyclxuICAgICAgICAgICAgfCBPayBgRW9mIC0+IGVvZiBoYW5kbGVyXG4gICAgICAgICAgICB8IE9rIChgT2sgbGVuKSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgICAgIGJpbl9yZWFkZXJfdXBkYXRlXG4gICAgICAgICAgICAgICAgICByZWFkX2J1ZmZlclxuICAgICAgICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgICAgICAgfmxlblxuICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwiY2xpZW50LXNpZGUgc3RyZWFtaW5nX3JwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICAgICB8IE9rIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIGhhbmRsZXIgKFVwZGF0ZSBkYXRhKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IENvbnRpbnVlIC0+IGBrZWVwXG4gICAgICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBgd2FpdCBkKSkpKVxuICAgICAgfCBTdGF0ZS5XYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfaGFuZGxlciAtPlxuICAgICAgICAoKiBXZSBuZXZlciB1c2UgW2ByZW1vdmUgKEVycm9yIF8pXSBoZXJlLCBzaW5jZSB0aGF0IGluZGljYXRlcyB0aGF0IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIHNob3VsZCBiZSBjbG9zZWQsIGFuZCB0aGVzZSBhcmUgXCJub3JtYWxcIiBlcnJvcnMuIChJbiBjb250cmFzdCwgdGhlXG4gICAgICAgICAgIGVycm9ycyB3ZSBnZXQgaW4gdGhlIFtXcml0aW5nX3VwZGF0ZXNfdG9fcGlwZV0gY2FzZSBpbmRpY2F0ZSBtb3JlIHNlcmlvdXNcbiAgICAgICAgICAgcHJvYmxlbXMuKSBJbnN0ZWFkLCB3ZSBqdXN0IHB1dCBlcnJvcnMgaW4gW2l2YXJdLiAqKVxuICAgICAgICBsZXQgZXJyb3IgZXJyID1cbiAgICAgICAgICBJdmFyLmZpbGwgaW5pdGlhbF9oYW5kbGVyLml2YXIgKEVycm9yIGVycik7XG4gICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCByZXNwb25zZS5kYXRhIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycm9yIGVyclxuICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgbGV0IGluaXRpYWwgPVxuICAgICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgICAoSW5pdGlhbF9tZXNzYWdlLmJpbl9yZWFkZXJfdFxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5faW5pdGlhbF9yZXNwb25zZS5yZWFkZXJcbiAgICAgICAgICAgICAgICAgIGluaXRpYWxfaGFuZGxlci5ycGMuYmluX2Vycm9yX3Jlc3BvbnNlLnJlYWRlcilcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIGluaXRpYWxfcmVzcG9uc2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIChtYXRjaCBpbml0aWFsIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycm9yIGVyclxuICAgICAgICAgICAgfCBPayBpbml0aWFsX21zZyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaW5pdGlhbF9tc2cuaW5pdGlhbCB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGwgaW5pdGlhbF9oYW5kbGVyLml2YXIgKE9rIChFcnJvciBlcnIpKTtcbiAgICAgICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgICAgICB8IE9rIGluaXRpYWwgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGV4dHJhLCBoYW5kbGVyID0gaW5pdGlhbF9oYW5kbGVyLm1ha2VfdXBkYXRlX2hhbmRsZXIgKCkgaW5cbiAgICAgICAgICAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLml2YXJcbiAgICAgICAgICAgICAgICAgICAoT2sgKE9rIChpbml0aWFsX2hhbmRsZXIucXVlcnlfaWQsIGluaXRpYWwsIGV4dHJhKSkpO1xuICAgICAgICAgICAgICAgICBzdGF0ZS5zdGF0ZVxuICAgICAgICAgICAgICAgICA8LSBXcml0aW5nX3VwZGF0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAoaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlLnJlYWRlciwgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgIGBrZWVwKSkpXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX2dlbiA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IG1ha2VfdXBkYXRlX2hhbmRsZXIgPVxuICAgIGxldCBiaW5fd3JpdGVyX3F1ZXJ5ID1cbiAgICAgIFAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoXG4gICAgICAgIChXcml0ZXJfd2l0aF9sZW5ndGgub2ZfdHlwZV9jbGFzcyB0LmJpbl9xdWVyeSlcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IGBRdWVyeSBxdWVyeSBpblxuICAgIGxldCBxdWVyeV9pZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgUnBjX2NvbW1vbi5kaXNwYXRjaF9yYXdcbiAgICAgID9tZXRhZGF0YVxuICAgICAgY29ublxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+dGFnOnQudGFnXG4gICAgICB+dmVyc2lvbjp0LnZlcnNpb25cbiAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5XG4gICAgICB+cXVlcnlcbiAgICAgIH5mOihmdW4gaXZhciAtPlxuICAgICAgICByZXNwb25zZV9oYW5kbGVyXG4gICAgICAgICAgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgKERlZmVycmVkLnBlZWsgKENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICAgICAgICAgICAgICAgOiBJbmZvLnQgb3B0aW9uKV0pXG4gICAgICAgICAgeyBycGMgPSB0OyBxdWVyeV9pZDsgY29ubmVjdGlvbiA9IGNvbm47IGl2YXI7IG1ha2VfdXBkYXRlX2hhbmRsZXIgfSlcbiAgICA+PnwgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbiB9XG4gICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkOihDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfaXRlciA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IH5mID1cbiAgICBtYXRjaCVtYXAgZGlzcGF0Y2hfZ2VuID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPiAoKSwgZikgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKCkpKSAtPiBPayAoT2sgKGlkLCBpbml0KSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBkaXNwYXRjaF9nZW4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBwaXBlX3IsIHBpcGVfdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgICAgICgqIFNldCBhIHNtYWxsIGJ1ZmZlciB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBwdXNoYmFjayBldmVudHMgKilcbiAgICAgICAgUGlwZS5zZXRfc2l6ZV9idWRnZXQgcGlwZV93IDEwMDtcbiAgICAgICAgbGV0IGNsb3NlX3JlYXNvbiA6IFBpcGVfY2xvc2VfcmVhc29uLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IGYgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQgPSBmdW5jdGlvblxuICAgICAgICAgIHwgVXBkYXRlIGRhdGEgLT5cbiAgICAgICAgICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgcGlwZV93KVxuICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayBwaXBlX3cgZGF0YTtcbiAgICAgICAgICAgICAgaWYgdC5jbGllbnRfcHVzaGVzX2JhY2sgJiYgUGlwZS5sZW5ndGggcGlwZV93ID49IFBpcGUuc2l6ZV9idWRnZXQgcGlwZV93XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBXYWl0XG4gICAgICAgICAgICAgICAgICAobWF0Y2glbWFwIFBpcGUuZG93bnN0cmVhbV9mbHVzaGVkIHBpcGVfdyB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgT2sgfCBgUmVhZGVyX2Nsb3NlZCAtPiAoKSlcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICAgICAgICAgIGVsc2UgQ29udGludWVcbiAgICAgICAgICB8IENsb3NlZCByZWFzb24gLT5cbiAgICAgICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eVxuICAgICAgICAgICAgICBjbG9zZV9yZWFzb25cbiAgICAgICAgICAgICAgKG1hdGNoIHJlYXNvbiB3aXRoXG4gICAgICAgICAgICAgICB8IGBCeV9yZW1vdGVfc2lkZSAtPiBDbG9zZWRfcmVtb3RlbHlcbiAgICAgICAgICAgICAgIHwgYEVycm9yIGVyciAtPiBFcnJvciBlcnIpO1xuICAgICAgICAgICAgUGlwZS5jbG9zZSBwaXBlX3c7XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICAocGlwZV9yLCBjbG9zZV9yZWFzb24pLCBmKVxuICAgIHdpdGhcbiAgICB8IChFcnJvciBfIHwgT2sgKEVycm9yIF8pKSBhcyBlIC0+IGVcbiAgICB8IE9rIChPayAoaWQsIGluaXQsIChwaXBlX3IsIGNsb3NlX3JlYXNvbikpKSAtPlxuICAgICAgdXBvbiAoUGlwZS5jbG9zZWQgcGlwZV9yKSAoZnVuICgpIC0+XG4gICAgICAgIGlmIG5vdCAoSXZhci5pc19mdWxsIGNsb3NlX3JlYXNvbilcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYWJvcnQgdCBjb25uIGlkO1xuICAgICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjbG9zZV9yZWFzb24gQ2xvc2VkX2xvY2FsbHkpKTtcbiAgICAgIGxldCBwaXBlX21ldGFkYXRhIDogUGlwZV9tZXRhZGF0YS50ID1cbiAgICAgICAgeyBxdWVyeV9pZCA9IGlkOyBjbG9zZV9yZWFzb24gPSBJdmFyLnJlYWQgY2xvc2VfcmVhc29uIH1cbiAgICAgIGluXG4gICAgICBPayAoT2sgKHBpcGVfbWV0YWRhdGEsIGluaXQsIHBpcGVfcikpXG4gIDs7XG5lbmRcblxuKCogQSBQaXBlX3JwYyBpcyBsaWtlIGEgU3RyZWFtaW5nX3JwYywgZXhjZXB0IHdlIGRvbid0IGNhcmUgYWJvdXQgaW5pdGlhbCBzdGF0ZSAtIHRodXNcbiAgIGl0IGlzIHJlc3RyaWN0ZWQgdG8gdW5pdCBhbmQgdWx0aW1hdGVseSBpZ25vcmVkICopXG5tb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UsICdlcnJvcikgdCA9ICgncXVlcnksIHVuaXQsICdyZXNwb25zZSwgJ2Vycm9yKSBTdHJlYW1pbmdfcnBjLnRcblxuICBtb2R1bGUgSWQgPSBQLlF1ZXJ5X2lkXG4gIG1vZHVsZSBNZXRhZGF0YSA9IFN0cmVhbWluZ19ycGMuUGlwZV9tZXRhZGF0YVxuXG4gIGxldCBjcmVhdGUgP2NsaWVudF9wdXNoZXNfYmFjayB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgfmJpbl9lcnJvciAoKSA9XG4gICAgU3RyZWFtaW5nX3JwYy5jcmVhdGVcbiAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgIH5uYW1lXG4gICAgICB+dmVyc2lvblxuICAgICAgfmJpbl9xdWVyeVxuICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlOlVuaXQuYmluX3RcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl9yZXNwb25zZVxuICAgICAgfmJpbl9lcnJvclxuICAgICAgKCogW2luaXRpYWxfcmVzcG9uc2VdIGRvZXNuJ3Qgc2hvdyB1cCBpbiBbUGlwZV9ycGNdJ3Mgc2lnbmF0dXJlLFxuICAgICAgICAgc28gdGhlIHR5cGUtaWQgY3JlYXRlZCB1c2luZyBbYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2VdIGlzXG4gICAgICAgICB1bnJlYWNoYWJsZS4gKilcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcIlwiXG4gICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZTpcInJlc3BvbnNlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3Jlc3BvbnNlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3VwZGF0ZV9yZXNwb25zZVxuICBsZXQgYmluX2Vycm9yIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2Vycm9yX3Jlc3BvbnNlXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcblxuICBsZXQgaW1wbGVtZW50ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBTdHJlYW1pbmdfcnBjLmltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgKGZ1biBhIHF1ZXJ5IC0+XG4gICAgICBsZXQlbWFwIHggPSBmIGEgcXVlcnkgaW5cbiAgICAgIHggPj58fiBmdW4geCAtPiAoKSwgeClcbiAgOztcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEltcGxlbWVudGF0aW9ucy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gICAgbW9kdWxlIEdyb3VwID0gc3RydWN0XG4gICAgICBtb2R1bGUgQnVmZmVyID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEJpZ3N0cmluZy50IHJlZlxuXG4gICAgICAgIGxldCBjcmVhdGUgPyhpbml0aWFsX3NpemUgPSA0MDk2KSAoKSA9XG4gICAgICAgICAgaWYgaW5pdGlhbF9zaXplIDwgMFxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLkJ1ZmZlci5jcmVhdGUgZ290IG5lZ2F0aXZlIGJ1ZmZlciBcXFxuICAgICAgICAgICAgICAgc2l6ZVwiXG4gICAgICAgICAgICAgIGluaXRpYWxfc2l6ZVxuICAgICAgICAgICAgICBJbnQuc2V4cF9vZl90O1xuICAgICAgICAgIHJlZiAoQmlnc3RyaW5nLmNyZWF0ZSBpbml0aWFsX3NpemUpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA9ICdhIHRcblxuICAgICAgbW9kdWxlIFQgPSBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlclxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBULkdyb3VwLnQgPVxuICAgICAgICB7IG11dGFibGUgY29tcG9uZW50cyA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy50XG4gICAgICAgIDsgY29tcG9uZW50c19ieV9pZCA6ICdhIGNvbXBvbmVudCBJZC5UYWJsZS50XG4gICAgICAgIDsgYnVmZmVyIDogQmlnc3RyaW5nLnQgcmVmXG4gICAgICAgIH1cblxuICAgICAgYW5kICdhIGNvbXBvbmVudCA9ICdhIFQuR3JvdXAuY29tcG9uZW50ID1cbiAgICAgICAgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy5FbHQudFxuICAgICAgICA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIDogJ2EgVC5ncm91cF9lbnRyeSBCYWcuRWx0LnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlID9idWZmZXIgKCkgPVxuICAgICAgICBsZXQgYnVmZmVyID1cbiAgICAgICAgICBtYXRjaCBidWZmZXIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuY3JlYXRlICgpXG4gICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICBpblxuICAgICAgICB7IGNvbXBvbmVudHMgPSBCYWcuY3JlYXRlICgpOyBjb21wb25lbnRzX2J5X2lkID0gSWQuVGFibGUuY3JlYXRlICgpOyBidWZmZXIgfVxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCB0ID0gQmFnLmxlbmd0aCB0LmNvbXBvbmVudHNcblxuICAgICAgbGV0IGFkZF9leG4gdCAod3JpdGVyIDogXyBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXIudCkgPVxuICAgICAgICBpZiBpc19jbG9zZWQgd3JpdGVyXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogY2Fubm90IGFkZCBhIGNsb3NlZCBkaXJlY3QgXFxcbiAgICAgICAgICAgICBzdHJlYW0gd3JpdGVyXCI7XG4gICAgICAgIGlmIEhhc2h0YmwubWVtIHQuY29tcG9uZW50c19ieV9pZCB3cml0ZXIuaWRcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGRfZXhuOiB0cnlpbmcgdG8gYWRkIGEgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlciB0aGF0IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgZ3JvdXBcIjtcbiAgICAgICAgKG1hdGNoIEJhZy5jaG9vc2UgdC5jb21wb25lbnRzIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgICBsZXQgb25lID0gQmFnLkVsdC52YWx1ZSBvbmUgaW5cbiAgICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIChiaW5fd3JpdGVyIG9uZSkgKGJpbl93cml0ZXIgd3JpdGVyKSlcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5hZGQ6IGNhbm5vdCBhZGQgYSBkaXJlY3Qgc3RyZWFtIFxcXG4gICAgICAgICAgICAgICAgd3JpdGVyIHdpdGggYSBkaWZmZXJlbnQgYmluX3dyaXRlclwiKTtcbiAgICAgICAgbGV0IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwID0gQmFnLmFkZCB0LmNvbXBvbmVudHMgd3JpdGVyIGluXG4gICAgICAgIGxldCBncm91cF9lbGVtZW50X2luX3dyaXRlciA9XG4gICAgICAgICAgQmFnLmFkZCB3cml0ZXIuZ3JvdXBzIHsgZ3JvdXAgPSB0OyBlbGVtZW50X2luX2dyb3VwID0gd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgfVxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLmFkZF9leG5cbiAgICAgICAgICB0LmNvbXBvbmVudHNfYnlfaWRcbiAgICAgICAgICB+a2V5OndyaXRlci5pZFxuICAgICAgICAgIH5kYXRhOnsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7IGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZW1vdmUgdCAod3JpdGVyIDogXyBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXIudCkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfYW5kX3JlbW92ZSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9IC0+XG4gICAgICAgICAgQmFnLnJlbW92ZSB0LmNvbXBvbmVudHMgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXA7XG4gICAgICAgICAgQmFnLnJlbW92ZSB3cml0ZXIuZ3JvdXBzIGdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGlzdCB0ID0gQmFnLnRvX2xpc3QgdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBmbHVzaGVkX29yX2Nsb3NlZCB0ID1cbiAgICAgICAgdG9fbGlzdCB0XG4gICAgICAgIHw+IExpc3QubWFwIH5mOihmdW4gdCAtPiBEZWZlcnJlZC5hbnlfdW5pdCBbIGZsdXNoZWQgdDsgY2xvc2VkIHQgXSlcbiAgICAgICAgfD4gRGVmZXJyZWQuYWxsX3VuaXRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBmbHVzaGVkIHQgPSBmbHVzaGVkX29yX2Nsb3NlZCB0XG5cbiAgICAgIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgICAgQmFnLml0ZXIgdC5jb21wb25lbnRzIH5mOihmdW4gZGlyZWN0X3N0cmVhbV93cml0ZXIgLT5cbiAgICAgICAgICAgICgqIFdyaXRlcnMgYXJlIGF1dG9tYXRpY2FsbHkgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGVpciBncm91cHMgd2hlblxuICAgICAgICAgICAgICAgY2xvc2VkLCBzbyBbYENsb3NlZF0gaGVyZSBqdXN0IG1lYW5zIHRoYXQgdGhlIHJlbW92YWwgZGlkbid0IGhhcHBlbiB5ZXQuICopXG4gICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAgKEV4cGVydC53cml0ZV93aXRob3V0X3B1c2hiYWNrIGRpcmVjdF9zdHJlYW1fd3JpdGVyIH5idWYgfnBvcyB+bGVuXG4gICAgICAgICAgICAgICA6IFsgYE9rIHwgYENsb3NlZCBdKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JpdGUgdCB+YnVmIH5wb3MgfmxlbiA9XG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuO1xuICAgICAgICAgIGZsdXNoZWRfb3JfY2xvc2VkIHRcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggPVxuICAgICAgICBtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgb25lIC0+XG4gICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgbGV0IHsgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZTsgc2l6ZSB9ID0gYmluX3dyaXRlciBvbmUgaW5cbiAgICAgICAgICBsZXQgYnVmZmVyID0gISh0LmJ1ZmZlcikgaW5cbiAgICAgICAgICAoKiBPcHRpbWlzdGljIGZpcnN0IHRyeSAqKVxuICAgICAgICAgIChtYXRjaCB3cml0ZSBidWZmZXIgfnBvczowIHggd2l0aFxuICAgICAgICAgICB8IGxlbiAtPiBFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWY6YnVmZmVyIH5wb3M6MCB+bGVuXG4gICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAoKiBJdCdzIGxpa2VseSB0aGF0IHRoZSBleGNlcHRpb24gaXMgZHVlIHRvIGEgYnVmZmVyIG92ZXJmbG93LCBzbyByZXNpemUgdGhlXG4gICAgICAgICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICAgICAgICAgW0Jpbl9wcm90LkNvbW1vbi5CdWZmZXJfc2hvcnRdIG9ubHksIGhvd2V2ZXIgd2UgY2FuJ3QgZWFzaWx5IGVuZm9yY2UgdGhhdFxuICAgICAgICAgICAgICAgIGN1c3RvbSBiaW5fd3JpdGVfeHh4IGZ1bmN0aW9ucyByYWlzZSB0aGlzIHBhcnRpY3VsYXIgZXhjZXB0aW9uIGFuZCBub3RcbiAgICAgICAgICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgICAgICAgICBsZXQgbGVuID0gc2l6ZSB4IGluXG4gICAgICAgICAgICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgYnVmZmVyID0gQmlnc3RyaW5nLmNyZWF0ZSAoSW50LmNlaWxfcG93MiBsZW4pIGluXG4gICAgICAgICAgICAgdC5idWZmZXIgOj0gYnVmZmVyO1xuICAgICAgICAgICAgIGxldCBsZW4gPSB3cml0ZSBidWZmZXIgfnBvczowIHggaW5cbiAgICAgICAgICAgICBFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWY6YnVmZmVyIH5wb3M6MCB+bGVuKVxuICAgICAgOztcblxuICAgICAgbGV0IHdyaXRlIHQgeCA9XG4gICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4O1xuICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbGVtZW50X2RpcmVjdCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgaW5cbiAgICByZXNwb25zZSA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCAoKSwgcGlwZV9yKSAtPiBwaXBlX3IsIG1ldGFkYXRhXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFBpcGVfcnBjX2ZhaWxlZFxuXG4gIGxldCBkaXNwYXRjaF9leG4gP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXN1bHQgPSBkaXNwYXRjaCA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IGluXG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIHJwY19lcnJvciAtPiByYWlzZSAoRXJyb3IudG9fZXhuIHJwY19lcnJvcilcbiAgICB8IE9rIChFcnJvciBfKSAtPiByYWlzZSBQaXBlX3JwY19mYWlsZWRcbiAgICB8IE9rIChPayBwaXBlX2FuZF9pZCkgLT4gcGlwZV9hbmRfaWRcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gU3RyZWFtaW5nX3JwYy5QaXBlX21lc3NhZ2VcbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfcmVzcG9uc2VcblxuICBsZXQgZGlzcGF0Y2hfaXRlciA/bWV0YWRhdGEgdCBjb25uIHF1ZXJ5IH5mID1cbiAgICBsZXQlbWFwIHJlc3BvbnNlID0gU3RyZWFtaW5nX3JwYy5kaXNwYXRjaF9pdGVyID9tZXRhZGF0YSB0IGNvbm4gcXVlcnkgfmYgaW5cbiAgICByZXNwb25zZSA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKGlkLCAoKSkgLT4gaWRcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQuU3RyZWFtaW5nX3JwYy50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQuU3RyZWFtaW5nX3JwYy52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5xdWVyeV90eXBlX2lkXG4gIGxldCBlcnJvcl90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuICBsZXQgcmVzcG9uc2VfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdzdGF0ZSwgJ3VwZGF0ZSwgJ2Vycm9yKSB0ID1cbiAgICAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlXG4gICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgIH5iaW5fdXBkYXRlXG4gICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgKClcbiAgICA9XG4gICAgU3RyZWFtaW5nX3JwYy5jcmVhdGVcbiAgICAgID9jbGllbnRfcHVzaGVzX2JhY2tcbiAgICAgIH5uYW1lXG4gICAgICB+dmVyc2lvblxuICAgICAgfmJpbl9xdWVyeVxuICAgICAgfmJpbl9pbml0aWFsX3Jlc3BvbnNlOmJpbl9zdGF0ZVxuICAgICAgfmJpbl91cGRhdGVfcmVzcG9uc2U6YmluX3VwZGF0ZVxuICAgICAgfmJpbl9lcnJvclxuICAgICAgfmFsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlOlwic3RhdGVcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJ1cGRhdGVcIlxuICAgICAgKClcbiAgOztcblxuICBsZXQgYmluX3F1ZXJ5IHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX3F1ZXJ5XG4gIGxldCBiaW5fc3RhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5faW5pdGlhbF9yZXNwb25zZVxuICBsZXQgYmluX3VwZGF0ZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgaW1wbGVtZW50ID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRcbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgPSBTdHJlYW1pbmdfcnBjLmltcGxlbWVudF9kaXJlY3RcblxuICBsZXQgZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggP21ldGFkYXRhIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlXG4gICAgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChtZXRhZGF0YSwgc3RhdGUsIHVwZGF0ZV9yKSAtPiBzdGF0ZSwgdXBkYXRlX3IsIG1ldGFkYXRhXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQuU3RyZWFtaW5nX3JwYy50YWdcbiAgbGV0IHZlcnNpb24gdCA9IHQuU3RyZWFtaW5nX3JwYy52ZXJzaW9uXG4gIGxldCBkZXNjcmlwdGlvbiB0ID0geyBEZXNjcmlwdGlvbi5uYW1lID0gbmFtZSB0OyB2ZXJzaW9uID0gdmVyc2lvbiB0IH1cbiAgbGV0IHF1ZXJ5X3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5xdWVyeV90eXBlX2lkXG4gIGxldCBzdGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuaW5pdGlhbF9yZXNwb25zZV90eXBlX2lkXG4gIGxldCB1cGRhdGVfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gIGxldCBlcnJvcl90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMuZXJyb3JfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBBbnkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFJwYyA6ICgncSwgJ3IpIFJwYy50IC0+IHRcbiAgICB8IFBpcGUgOiAoJ3EsICdyLCAnZSkgUGlwZV9ycGMudCAtPiB0XG4gICAgfCBTdGF0ZSA6ICgncSwgJ3MsICd1LCAnZSkgU3RhdGVfcnBjLnQgLT4gdFxuICAgIHwgT25lX3dheSA6ICdtIE9uZV93YXkudCAtPiB0XG5cbiAgbGV0IGRlc2NyaXB0aW9uID0gZnVuY3Rpb25cbiAgICB8IFJwYyBycGMgLT4gUnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgUGlwZSBycGMgLT4gUGlwZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBTdGF0ZSBycGMgLT4gU3RhdGVfcnBjLmRlc2NyaXB0aW9uIHJwY1xuICAgIHwgT25lX3dheSBycGMgLT4gT25lX3dheS5kZXNjcmlwdGlvbiBycGNcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBEZXNjcmlwdGlvbiA9IERlc2NyaXB0aW9uLlN0YWJsZVxuICBtb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBQaXBlX2Nsb3NlX3JlYXNvbi5TdGFibGVcbiAgbW9kdWxlIFJwYyA9IFJwY1xuICBtb2R1bGUgUGlwZV9ycGMgPSBQaXBlX3JwY1xuICBtb2R1bGUgU3RhdGVfcnBjID0gU3RhdGVfcnBjXG4gIG1vZHVsZSBPbmVfd2F5ID0gT25lX3dheVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFJwY1xuXG5tb2R1bGUgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gIG1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IFBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbiAgdHlwZSAnaW5wdXQgdCA9XG4gICAgfCBUIDpcbiAgICAgICAgeyBjb252ZXJ0IDogJ2lucHV0IC0+ICdvdXRwdXRcbiAgICAgICAgOyB3cml0ZXIgOiAnb3V0cHV0IERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgfVxuICAgICAgICAtPiAnaW5wdXQgdFxuXG4gIGxldCBjcmVhdGUgfmNvbnZlcnQgfndyaXRlciA9IFQgeyBjb252ZXJ0OyB3cml0ZXIgfVxuXG4gIGxldCB3cml0ZSAoVCB7IGNvbnZlcnQ7IHdyaXRlciB9KSBpbnB1dCA9XG4gICAgRGlyZWN0X3N0cmVhbV93cml0ZXIud3JpdGUgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAoY29udmVydCBpbnB1dClcbiAgOztcblxuICBsZXQgY2xvc2UgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2Ugd3JpdGVyXG4gIGxldCBpc19jbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuaXNfY2xvc2VkIHdyaXRlclxuICBsZXQgY2xvc2VkIChUIHsgY29udmVydCA9IF87IHdyaXRlciB9KSA9IERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlZCB3cml0ZXJcbmVuZFxuXG5sZXQgZmFpbGVkX2NvbnZlcnNpb24geCA9XG4gIEVycm9yLmNyZWF0ZVxuICAgIFwidHlwZSBjb252ZXJzaW9uIGZhaWx1cmVcIlxuICAgIHhcbiAgICBbJXNleHBfb2Y6XG4gICAgICBbIGBNc2cgfCBgUXVlcnkgfCBgUmVzcG9uc2UgfCBgRXJyb3IgfCBgU3RhdGUgfCBgVXBkYXRlIF1cbiAgICAgICogWyBgUnBjIG9mIHN0cmluZyBdXG4gICAgICAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICAgICogZXhuXVxuOztcblxubGV0IG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgeCA9XG4gIEVycm9yLmNyZWF0ZVxuICAgIFwibXVsdGlwbGUgcnBjIHJlZ2lzdHJhdGlvbnNcIlxuICAgIHhcbiAgICBbJXNleHBfb2Y6IFsgYFJwYyBvZiBzdHJpbmcgXSAqIFsgYFZlcnNpb24gb2YgaW50IF1dXG47O1xuXG5sZXQgdW5rbm93bl92ZXJzaW9uIHggPSBFcnJvci5jcmVhdGUgXCJ1bmtub3duIHJwYyB2ZXJzaW9uXCIgeCBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cblxubW9kdWxlIENhbGxlZV9jb252ZXJ0cyA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gc3RydWN0XG4gICAgbW9kdWxlIFNpbXBsZSA9IHN0cnVjdFxuICAgICAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIGFkYXB0ZXIgPVxuICAgICAgICB7IGFkYXB0IDpcbiAgICAgICAgICAgICdzdGF0ZS4gKCdzdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3BvbnNlIERlZmVycmVkLnQpIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50XG4gICAgICAgIH1cblxuICAgICAgdHlwZSAoJ3F1ZXJ5LCAncmVzcG9uc2UpIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBhZGFwdGVycyA6ICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciBJbnQuTWFwLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICBsZXQgY3JlYXRlIH5uYW1lID0geyBuYW1lOyBhZGFwdGVycyA9IEludC5NYXAuZW1wdHkgfVxuXG4gICAgICBsZXQgd3JhcF9lcnJvciBmbiBzdGF0ZSBxdWVyeSA9XG4gICAgICAgIG1hdGNoJW1hcCBmbiBzdGF0ZSBxdWVyeSB3aXRoXG4gICAgICAgIHwgT2sgdmFsdWUgLT4gT2sgdmFsdWVcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoRXJyb3IudG9fc3RyaW5nX2h1bSBlcnJvcilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGQgeyBuYW1lOyBhZGFwdGVycyB9IHJwYyBhZGFwdGVyID1cbiAgICAgICAgaWYgU3RyaW5nLiggPD4gKSBuYW1lIChScGMubmFtZSBycGMpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgXCJScGMgbmFtZXMgZG9uJ3QgYWdyZWVcIlxuICAgICAgICAgICAgKG5hbWUsIFJwYy5uYW1lIHJwYylcbiAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogc3RyaW5nXVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9IFJwYy52ZXJzaW9uIHJwYyBpblxuICAgICAgICAgIG1hdGNoIE1hcC5maW5kIGFkYXB0ZXJzIHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgICAgICBcIlZlcnNpb24gYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAobmFtZSwgdmVyc2lvbilcbiAgICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBpbnRdXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgYWRhcHRlcnMgPSBNYXAuc2V0IGFkYXB0ZXJzIH5rZXk6dmVyc2lvbiB+ZGF0YTphZGFwdGVyIGluXG4gICAgICAgICAgICBPayB7IG5hbWU7IGFkYXB0ZXJzIH0pXG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3JwY192ZXJzaW9uIHQgb2xkX3JwYyB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBhZGFwdCBmbiA9XG4gICAgICAgICAgbGV0IGFkYXB0ZWQgc3RhdGUgb2xkX3F1ZXJ5ID1cbiAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gZm4gc3RhdGUgKHVwZ3JhZGUgb2xkX3F1ZXJ5KSBpblxuICAgICAgICAgICAgZG93bmdyYWRlIHJlc3VsdFxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjIGFkYXB0ZWRcbiAgICAgICAgaW5cbiAgICAgICAgYWRkIHQgb2xkX3JwYyB7IGFkYXB0IH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIHQgb2xkX3JwYyB1cGdyYWRlX29yX2Vycm9yIGRvd25ncmFkZV9vcl9lcnJvciA9XG4gICAgICAgIGxldCBhZGFwdCBmbiA9XG4gICAgICAgICAgbGV0IGFkYXB0ZWQgc3RhdGUgb2xkX3F1ZXJ5ID1cbiAgICAgICAgICAgIGxldCBvcGVuIERlZmVycmVkLlJlc3VsdC5MZXRfc3ludGF4IGluXG4gICAgICAgICAgICBsZXQlYmluZCBxdWVyeSA9IERlZmVycmVkLnJldHVybiAodXBncmFkZV9vcl9lcnJvciBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBsZXQlYmluZCByZXNwb25zZSA9IGZuIHN0YXRlIHF1ZXJ5IGluXG4gICAgICAgICAgICBEZWZlcnJlZC5yZXR1cm4gKGRvd25ncmFkZV9vcl9lcnJvciByZXNwb25zZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFJwYy5pbXBsZW1lbnQgb2xkX3JwYyAod3JhcF9lcnJvciBhZGFwdGVkKVxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uIHQgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWU6dC5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSBpblxuICAgICAgICBhZGRfcnBjX3ZlcnNpb24gdCBycGMgdXBncmFkZSBkb3duZ3JhZGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBycGMgdXBncmFkZSBkb3duZ3JhZGVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBpbXBsZW1lbnQgdCBmbiA9IE1hcC5kYXRhIHQuYWRhcHRlcnMgfD4gTGlzdC5tYXAgfmY6KGZ1biB7IGFkYXB0IH0gLT4gYWRhcHQgZm4pXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IHF1ZXJ5IC0+IHJlc3BvbnNlIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPSAncyAtPiB2ZXJzaW9uOmludCAtPiBNb2RlbC5xdWVyeSAtPiBNb2RlbC5yZXNwb25zZSBEZWZlcnJlZC50XG5cbiAgICAgIHR5cGUgaW1wbGVtZW50ZXIgPVxuICAgICAgICB7IGltcGxlbWVudCA6ICdzLiBsb2dfdmVyc2lvbjooaW50IC0+IHVuaXQpIC0+ICdzIGltcGwgLT4gJ3MgSW1wbGVtZW50YXRpb24udCB9XG5cbiAgICAgIGxldCByZWdpc3RyeSA6IChpbnQsIGltcGxlbWVudGVyICogQW55LnQpIEhhc2h0YmwudCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIGYgPVxuICAgICAgICBsZXQgbG9nX3ZlcnNpb24gPVxuICAgICAgICAgIG1hdGNoIGxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpZ25vcmVcbiAgICAgICAgICAoKiBwcmV2ZW50IGNhbGxpbmcgW2ZdIG1vcmUgdGhhbiBvbmNlIHBlciB2ZXJzaW9uICopXG4gICAgICAgICAgfCBTb21lIGYgLT4gTWVtby5nZW5lcmFsIChmIH5uYW1lKVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChpLCBfcnBjKSAtPiBpLmltcGxlbWVudCB+bG9nX3ZlcnNpb24gZilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lIH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZVxuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBScGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgciA9IGYgcyB+dmVyc2lvbiBxIGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbCByKSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgciAtPiByXG4gICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChyZXNwb25zZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgIC0+ICh1bml0LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgfCBQaXBlIG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gKE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAgLT4gKHVuaXQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoUGlwZSBmKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9kaXJlY3RfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKERpcmVjdCBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSA6IFZlcnNpb25fc2hhcmVkKSAoQ29udmVydCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIGNvbnZlcnRfZWx0IDogKE1vZGVsLnJlc3BvbnNlIC0+IFZlcnNpb25faS5yZXNwb25zZSkgT3JfZXJyb3IudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9waXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuICAgICAgICBvcGVuIENvbnZlcnRcblxuICAgICAgICBsZXQgcnBjID1cbiAgICAgICAgICBQaXBlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9yZXNwb25zZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxID1cbiAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfcXVlcnkgcSB3aXRoXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgIHwgcSAtPiBxXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5lcnJvcl9vZl9tb2RlbCBlcnJvciB3aXRoXG4gICAgICAgICAgfCBlcnJvciAtPiBFcnJvciBlcnJvclxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsID1cbiAgICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgICB8IFBpcGUgZiAtPlxuICAgICAgICAgICAgUGlwZV9ycGMuaW1wbGVtZW50IHJwYyAoZnVuIHMgcSAtPlxuICAgICAgICAgICAgICBsb2dfdmVyc2lvbiB2ZXJzaW9uO1xuICAgICAgICAgICAgICBtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiAod3JhcHBlZF9tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgT2sgcGlwZSAtPlxuICAgICAgICAgICAgICAgIE1vbml0b3IuaGFuZGxlX2Vycm9yc1xuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiByZXR1cm4gKE9rIChjb252ZXJ0X3BpcGUgcGlwZSkpKVxuICAgICAgICAgICAgICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHJldHVybiAod3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvcikpXG4gICAgICAgICAgfCBEaXJlY3QgZiAtPlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnRfZGlyZWN0IHJwYyAoZnVuIHMgcSBkc3cgLT5cbiAgICAgICAgICAgICAgbGV0IHdyaXRlciA9XG4gICAgICAgICAgICAgICAgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLmNyZWF0ZSB+Y29udmVydDpjb252ZXJ0X2VsdCB+d3JpdGVyOmRzd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCVtYXAgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdyaXRlciB3aXRoXG4gICAgICAgICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiB3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5QaXBlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSBQaXBlLlJlYWRlci50IC0+IHJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIE1ha2Vfc2hhcmVkXG4gICAgICAgICAgKFZlcnNpb25faSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPVxuICAgICAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJjYW5ub3QgdXNlIGRpcmVjdCBpbnRlcmZhY2Ugd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfbW9kZWwgOiBNb2RlbC5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSBwaXBlID0gUGlwZS5tYXAgcGlwZSB+ZjpWZXJzaW9uX2kucmVzcG9uc2Vfb2ZfbW9kZWxcbiAgICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHN0YXRlXG4gICAgICB0eXBlIHVwZGF0ZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChzdGF0ZSAqIHVwZGF0ZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPVxuICAgICAgICAnc1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAtPiAoTW9kZWwuc3RhdGUgKiBNb2RlbC51cGRhdGUgUGlwZS5SZWFkZXIudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIHN0YXRlX29mX21vZGVsIDogTW9kZWwuc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5zdGF0ZVxuICAgICAgICAgICAgLT4gTW9kZWwudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgU3RhdGVfcnBjLmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3F1ZXJ5IHEgd2l0aFxuICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgfCBxIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uIHEgd2l0aFxuICAgICAgICAgICAgICAgICB8IE9rIChtb2RlbF9zdGF0ZSwgcGlwZSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnN0YXRlX29mX21vZGVsIG1vZGVsX3N0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFN0YXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBNb25pdG9yLmhhbmRsZV9lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoT2sgKHN0YXRlLCBWZXJzaW9uX2kudXBkYXRlX29mX21vZGVsIG1vZGVsX3N0YXRlIHBpcGUpKSlcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kuZXJyb3Jfb2ZfbW9kZWwgZXJyb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgZXJyb3IgLT4gRXJyb3IgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfbW9kZWwgOiBNb2RlbC51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCB1cGRhdGVfb2ZfbW9kZWwgX3N0YXRlIHBpcGUgPSBQaXBlLm1hcCB+Zjp1cGRhdGVfb2ZfbW9kZWwgcGlwZVxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IG1zZyAtPiB1bml0KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgbXNnXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuXG4gICAgICB0eXBlICdzIGltcGwgPSAncyAtPiB2ZXJzaW9uOmludCAtPiBNb2RlbC5tc2cgLT4gdW5pdFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgOiAoaW50LCBpbXBsZW1lbnRlciAqIEFueS50KSBIYXNodGJsLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgX3JwYykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2cgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfbXNnIDogbXNnIC0+IE1vZGVsLm1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBPbmVfd2F5LmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZ1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGltcGxlbWVudCB+bG9nX3ZlcnNpb24gZiA9XG4gICAgICAgICAgICBPbmVfd2F5LmltcGxlbWVudCBycGMgKGZ1biBzIHEgLT5cbiAgICAgICAgICAgICAgbG9nX3ZlcnNpb24gdmVyc2lvbjtcbiAgICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1vZGVsX29mX21zZyBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2UgKGZhaWxlZF9jb252ZXJzaW9uIChgTXNnLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgT2sgcSAtPiBmIHMgfnZlcnNpb24gcSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNZW51ID0gc3RydWN0XG4gICgqKioqKioqKioqKioqKioqKiBzb21lIHByb2hpYml0aW9ucyBmb3IgdGhpcyBtb2R1bGUgKioqKioqKioqKioqKioqKioqXG5cbiAgICAgICAgICAgICAgICAgICAgICgxKSAhISEgbmV2ZXIgcHJ1bmUgb2xkIHZlcnNpb25zIG9mIHRoaXMgcnBjICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBJdCBpcyB0b28gZnVuZGFtZW50YWwgdG8gdGhlIHdvcmtpbmdzIG9mIHZhcmlvdXMgdmVyc2lvbmluZ1xuICAgICAgICAgICAgICAgICAgICAgc2NoZW1lcyBhbmQgaXQgcHJvYmFibHkgd29uJ3QgY2hhbmdlIHZlcnkgbXVjaCBhbnl3YXkuXG5cbiAgICAgICAgICAgICAgICAgICAgICgyKSAhISEgb25seSBldmVyIHNheSBcIndpdGggYmluX2lvXCIgb24gYnVpbHQtaW4gb2NhbWwgdHlwZXMgISEhXG5cbiAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIHR5cGVzIGFyZSBpbnQsIGxpc3QsIHN0cmluZywgZXRjLlxuXG4gICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRvIHByb3RlY3Qgb3Vyc2VsdmVzIGFnYWluc3QgY2hhbmdlcyB0byBDb3JlIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMsIGZvciBleGFtcGxlLlxuXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgbGV0IG5hbWUgPSBcIl9fVmVyc2lvbmVkX3JwYy5NZW51XCJcblxuICAgIHR5cGUgcXVlcnkgPSB1bml0XG4gICAgdHlwZSByZXNwb25zZSA9IERlc2NyaXB0aW9uLnQgbGlzdFxuICBlbmRcblxuICBpbmNsdWRlIENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoTW9kZWwpXG5cbiAgbGV0IHJwY19uYW1lID0gTW9kZWwubmFtZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBsZXQgdmVyc2lvbiA9IDFcblxuICAgICAgdHlwZSBxdWVyeSA9IHVuaXQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBxdWVyeV07XG4gICAgICAgIFslZXhwZWN0IHt8IDg2YmE1ZGY3NDdlZWM4MzdmMGIzOTFkZDQ5ZjMzZjllIHx9XVxuICAgICAgOztcblxuICAgICAgdHlwZSByZXNwb25zZSA9IChzdHJpbmcgKiBpbnQpIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiByZXNwb25zZV07XG4gICAgICAgIFslZXhwZWN0IHt8IDRjMWU1MGM5M2IzOGMyYWQwNTU0Y2JkOTI5YmVmM2FjIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5IHEgPSBxXG5cbiAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9XG4gICAgICAgIExpc3QubWFwIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICBlbmRcblxuICBtb2R1bGUgQ3VycmVudF92ZXJzaW9uID0gVjFcblxuICBsZXQgYWRkIGltcGxzID1cbiAgICBsZXQgbWVudSA9IExpc3QubWFwIGltcGxzIH5mOkltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGluXG4gICAgbGV0IG1lbnVfaW1wbHMgPSBpbXBsZW1lbnRfbXVsdGkgKGZ1biBfIH52ZXJzaW9uOl8gKCkgLT4gcmV0dXJuIG1lbnUpIGluXG4gICAgaW1wbHMgQCBtZW51X2ltcGxzXG4gIDs7XG5cbiAgdHlwZSB0ID0gSW50LlNldC50IFN0cmluZy5UYWJsZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHN1cHBvcnRlZF9ycGNzIHQgPVxuICAgIGxldCBvcGVuIExpc3QuTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIG5hbWUsIHZlcnNpb25zID0gSGFzaHRibC50b19hbGlzdCB0IGluXG4gICAgbGV0JW1hcCB2ZXJzaW9uID0gU2V0LnRvX2xpc3QgdmVyc2lvbnMgaW5cbiAgICB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfVxuICA7O1xuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cnBjX25hbWUgPVxuICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbnQuU2V0LmVtcHR5IChIYXNodGJsLmZpbmQgdCBycGNfbmFtZSlcbiAgOztcblxuICBsZXQgb2ZfZW50cmllcyBlbnRyaWVzID1cbiAgICBIYXNodGJsLm1hcCB+ZjpJbnQuU2V0Lm9mX2xpc3QgKFN0cmluZy5UYWJsZS5vZl9hbGlzdF9tdWx0aSBlbnRyaWVzKVxuICA7O1xuXG4gIGxldCBhdXhfcmVxdWVzdCBkaXNwYXRjaCBjb25uID1cbiAgICBsZXQlbWFwIHJlc3VsdCA9IGRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKSBpblxuICAgIFJlc3VsdC5tYXAgcmVzdWx0IH5mOm9mX2VudHJpZXNcbiAgOztcblxuICBsZXQgcmVxdWVzdCBjb25uID0gYXV4X3JlcXVlc3QgUnBjLmRpc3BhdGNoIGNvbm5cbiAgbGV0IHJlcXVlc3QnIGNvbm4gPSBhdXhfcmVxdWVzdCBScGMuZGlzcGF0Y2gnIGNvbm5cblxuICBsZXQgY3JlYXRlIGRlc2NyaXB0aW9ucyA9XG4gICAgTGlzdC5tYXAgZGVzY3JpcHRpb25zIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICB8PiBvZl9lbnRyaWVzXG4gIDs7XG5cbiAgbW9kdWxlIFdpdGhfc2hhcGVzID0gc3RydWN0XG4gICAgbW9kdWxlIE1vZGVsID0gc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwiX19WZXJzaW9uZWRfcnBjLlNoYXBlX21lbnVcIlxuXG4gICAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgICAgdHlwZSByZXNwb25zZSA9IChEZXNjcmlwdGlvbi50ICogUnBjX3NoYXBlcy50KSBsaXN0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENhbGxlZV9jb252ZXJ0cy5ScGMuTWFrZSAoTW9kZWwpXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIGxldCB2ZXJzaW9uID0gMVxuXG4gICAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHF1ZXJ5XTtcbiAgICAgICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICAgICAgOztcblxuICAgICAgICB0eXBlIHJlc3BvbnNlID0gKERlc2NyaXB0aW9uLlN0YWJsZS5WMS50ICogUnBjX3NoYXBlcy5TdGFibGUuVjEudCkgbGlzdFxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiByZXNwb25zZV07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYjRiZGMwMWI3ZWFkOTA3ZTZkMGQzZjNkODk3MDBmMWIgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gRm4uaWRcbiAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgUmVnaXN0ZXIgKFQpXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgQ3VycmVudF92ZXJzaW9uID0gVjFcblxuICAgIHR5cGUgdCA9IChEZXNjcmlwdGlvbi50ICogUnBjX3NoYXBlcy50KSBsaXN0XG5cbiAgICBsZXQgYWRkIGltcGxzID1cbiAgICAgIGxldCBzaGFwZV9tZW51ID1cbiAgICAgICAgTGlzdC5tYXAgaW1wbHMgfmY6KGZ1biBpbXBsIC0+XG4gICAgICAgICAgSW1wbGVtZW50YXRpb24uZGVzY3JpcHRpb24gaW1wbCwgSW1wbGVtZW50YXRpb24uc2hhcGVzIGltcGwpXG4gICAgICBpblxuICAgICAgbGV0IHNoYXBlX21lbnVfaW1wbHMgPSBpbXBsZW1lbnRfbXVsdGkgKGZ1biBfIH52ZXJzaW9uOl8gKCkgLT4gcmV0dXJuIHNoYXBlX21lbnUpIGluXG4gICAgICBhZGQgaW1wbHMgQCBzaGFwZV9tZW51X2ltcGxzXG4gICAgOztcblxuICAgIGxldCByZXF1ZXN0IGNvbm4gPSBScGMuZGlzcGF0Y2ggQ3VycmVudF92ZXJzaW9uLnJwYyBjb25uICgpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb25uZWN0aW9uX3dpdGhfbWVudSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgIDsgbWVudSA6IE1lbnUudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBjcmVhdGUgY29ubmVjdGlvbiA9XG4gICAgbGV0IG9wZW4gRGVmZXJyZWQuT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICAgIGxldCVtYXAgbWVudSA9IE1lbnUucmVxdWVzdCBjb25uZWN0aW9uIGluXG4gICAgeyBjb25uZWN0aW9uOyBtZW51IH1cbiAgOztcblxuICBsZXQgY3JlYXRlX2RpcmVjdGx5IGNvbm5lY3Rpb24gbWVudSA9IHsgY29ubmVjdGlvbjsgbWVudSB9XG5lbmRcblxubW9kdWxlIENhbGxlcl9jb252ZXJ0cyA9IHN0cnVjdFxuICBsZXQgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24gfnJwY19uYW1lIH5jYWxsZXJfdmVyc2lvbnMgfmNhbGxlZV92ZXJzaW9ucyB+Y2FsbGVlX21lbnUgPVxuICAgIG1hdGNoIFNldC5tYXhfZWx0IChTZXQuaW50ZXIgY2FsbGVlX3ZlcnNpb25zIGNhbGxlcl92ZXJzaW9ucykgd2l0aFxuICAgIHwgU29tZSB2ZXJzaW9uIC0+IE9rIHZlcnNpb25cbiAgICB8IE5vbmUgLT5cbiAgICAgIGVycm9yX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiXG4gICAgICAgICAgICAocnBjX25hbWUgOiBzdHJpbmcpXG4gICAgICAgICAgICAoY2FsbGVyX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV92ZXJzaW9ucyA6IEludC5TZXQudClcbiAgICAgICAgICAgIChjYWxsZWVfbWVudSA6IE1lbnUudCldXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiaGlnaGVzdCB2ZXJzaW9uIG51bWJlciBpcyB0YWtlbiBpbiBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblwiID1cbiAgICBsZXQgcnBjX25hbWUgPSBcInRoZS1ycGNcIiBpblxuICAgIGxldCBtZW51ID0gTWVudS5vZl9lbnRyaWVzIFsgcnBjX25hbWUsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lXG4gICAgICAgIH5jYWxsZXJfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDE7IDI7IDMgXSlcbiAgICAgICAgfmNhbGxlZV92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMiBdKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3Qge3wgKE9rIDIpIHx9XVxuICA7O1xuXG4gIGxldCVleHBlY3RfdGVzdCBcImVycm9yIGZyb20gbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb24gbG9va3MgcmVhc29uYWJsZVwiID1cbiAgICBsZXQgdGhlX3JwYyA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG5vdF90aGVfcnBjID0gXCJvdGhlci1ycGNcIiBpblxuICAgIGxldCBtZW51ID0gTWVudS5vZl9lbnRyaWVzIFsgbm90X3RoZV9ycGMsIDE7IG5vdF90aGVfcnBjLCAyIF0gaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgIH5ycGNfbmFtZTp0aGVfcnBjXG4gICAgICAgIH5jYWxsZXJfdmVyc2lvbnM6KEludC5TZXQub2ZfbGlzdCBbIDE7IDI7IDMgXSlcbiAgICAgICAgfmNhbGxlZV92ZXJzaW9uczooTWVudS5zdXBwb3J0ZWRfdmVyc2lvbnMgbWVudSB+cnBjX25hbWU6dGhlX3JwYylcbiAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICBpblxuICAgIHByaW50X3MgWyVzZXhwIChyZXN1bHQgOiBpbnQgT3JfZXJyb3IudCldO1xuICAgIFslZXhwZWN0XG4gICAgICB7fFxuICAgICAgKEVycm9yXG4gICAgICAgKFwiY2FsbGVyIGFuZCBjYWxsZWUgc2hhcmUgbm8gY29tbW9uIHZlcnNpb25zIGZvciBycGNcIiAocnBjX25hbWUgdGhlLXJwYylcbiAgICAgICAgKGNhbGxlcl92ZXJzaW9ucyAoMSAyIDMpKSAoY2FsbGVlX3ZlcnNpb25zICgpKVxuICAgICAgICAoY2FsbGVlX21lbnUgKChvdGhlci1ycGMgKDEgMikpKSkpKXx9XVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwYXRjaCA9IHN0cnVjdFxuICAgIG1vZHVsZSBNYWtlIChNIDogTW9uYWQpID0gc3RydWN0XG4gICAgICBvcGVuIE1cblxuICAgICAgbGV0IHdpdGhfc3BlY2lmaWNfdmVyc2lvbiB+dmVyc2lvbiB+Y29ubmVjdGlvbiB+bmFtZSB+cXVlcnkgfmRpc3BhdGNoZXIgfnJlZ2lzdHJ5ID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChFcnJvciAodW5rbm93bl92ZXJzaW9uIChuYW1lLCB2ZXJzaW9uKSkpXG4gICAgICAgIHwgU29tZSAoZGlzcGF0Y2gsIF9ycGMpIC0+IGRpc3BhdGNoZXIgZGlzcGF0Y2ggY29ubmVjdGlvbiBxdWVyeVxuICAgICAgOztcblxuICAgICAgbGV0IHdpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgICB7IENvbm5lY3Rpb25fd2l0aF9tZW51LmNvbm5lY3Rpb247IG1lbnUgfVxuICAgICAgICAgICAgcXVlcnlcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgICAgfmRpc3BhdGNoZXJcbiAgICAgICAgPVxuICAgICAgICBsZXQgY2FsbGVlX3ZlcnNpb25zID0gTWVudS5zdXBwb3J0ZWRfdmVyc2lvbnMgbWVudSB+cnBjX25hbWU6bmFtZSBpblxuICAgICAgICBsZXQgY2FsbGVyX3ZlcnNpb25zID0gdmVyc2lvbnMgKCkgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICAgICAgfnJwY19uYW1lOm5hbWVcbiAgICAgICAgICAgIH5jYWxsZXJfdmVyc2lvbnNcbiAgICAgICAgICAgIH5jYWxsZWVfdmVyc2lvbnNcbiAgICAgICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBFcnJvciBlIC0+IHJldHVybiAoRXJyb3IgZSlcbiAgICAgICAgfCBPayB2ZXJzaW9uIC0+XG4gICAgICAgICAgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+cmVnaXN0cnkgfmRpc3BhdGNoZXJcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgQXN5bmMgPSBNYWtlIChEZWZlcnJlZClcbiAgICBtb2R1bGUgRGlyZWN0ID0gTWFrZSAoTW9uYWQuSWRlbnQpXG4gIGVuZFxuXG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+IHJlc3BvbnNlIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpIGNvbm5fd2l0aF9tZW51IHF1ZXJ5ID1cbiAgICAgICAgRGlzcGF0Y2guQXN5bmMud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIHF1ZXJ5XG4gICAgICAgICAgfm5hbWVcbiAgICAgICAgICB+dmVyc2lvbnNcbiAgICAgICAgICB+cmVnaXN0cnlcbiAgICAgICAgICB+ZGlzcGF0Y2hlcjpGbi5pZFxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyJyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogTW9kZWwucXVlcnkgLT4gcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2VcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIG1xID1cbiAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBtcSkgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgfCBPayBxIC0+XG4gICAgICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gUnBjLmRpc3BhdGNoIHJwYyBjb25uIHEgaW5cbiAgICAgICAgICAgICAgUmVzdWx0LmJpbmQgcmVzdWx0IH5mOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZSBtcSByKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBPayByIC0+IE9rIHJcbiAgICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5ScGMgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICAgIHZhbCBxdWVyeV9vZl9tb2RlbCA6IE1vZGVsLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgICAgdmFsIG1vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICAgIFJlZ2lzdGVyJyAoc3RydWN0XG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSBfIHIgPSBtb2RlbF9vZl9yZXNwb25zZSByXG4gICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBxdWVyeVxuICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgdHlwZSBlcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiAocmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudCwgZXJyb3IpIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBxdWVyeVxuICAgICAgICAtPiBmOihyZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgIC0+IChQaXBlX3JwYy5JZC50LCBlcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICB0eXBlIGVycm9yXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGlzcGF0Y2hlciA9XG4gICAgICAgIHsgYWJvcnQgOiBDb25uZWN0aW9uLnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0XG4gICAgICAgIDsgZGlzcGF0Y2ggOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gKCBNb2RlbC5yZXNwb25zZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBQaXBlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICAgICAsIE1vZGVsLmVycm9yIClcbiAgICAgICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50XG4gICAgICAgIDsgZGlzcGF0Y2hfaXRlciA6XG4gICAgICAgICAgICBDb25uZWN0aW9uLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAtPiBmOihNb2RlbC5yZXNwb25zZSBQaXBlX3JwYy5QaXBlX21lc3NhZ2UudCAtPiBQaXBlX3JwYy5QaXBlX3Jlc3BvbnNlLnQpXG4gICAgICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgTW9kZWwuZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgICAgICB9XG5cbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGRpc3BhdGNoZXIgKiBBbnkudCkgSW50LlRhYmxlLnQgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX2l0ZXJfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgfmYgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaF9pdGVyOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaF9pdGVyIGNvbm4gcXVlcnkgfmYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaDsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2ggY29ubiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhYm9ydF9tdWx0aSBjb25uX3dpdGhfbWVudSBpZCA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgaWRcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBhYm9ydDsgXyB9IGNvbm4gaWQgLT5cbiAgICAgICAgICAgIGFib3J0IGNvbm4gaWQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoVmVyc2lvbl9pLnJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgcmV0dXJuIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IHEgLT4gcmV0dXJuIChPayBxKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2sgPVxuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBPayAoT2sgb2spIC0+IE9rIChPayAoY29udmVydF9vayBvaykpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gUGlwZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazooZnVuIChwaXBlLCBpZCkgLT4gY29udmVydF9waXBlIHBpcGUsIGlkKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaF9pdGVyIGNvbm4gcSB+ZiA9XG4gICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCBjb252ZXJ0X21lc3NhZ2UgKG0gOiBfIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50KSA9XG4gICAgICAgICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgICAgIHwgQ2xvc2VkIF8gYXMgY2xvc2VkIC0+IGNsb3NlZFxuICAgICAgICAgICAgfCBVcGRhdGUgdSAtPiBVcGRhdGUgKGNvbnZlcnRfZWx0IHUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9XG4gICAgICAgICAgICBQaXBlX3JwYy5kaXNwYXRjaF9pdGVyIHJwYyBjb25uIHEgfmY6KGZ1biBtZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGYgKGNvbnZlcnRfbWVzc2FnZSBtZXNzYWdlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazpGbi5pZFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBhYm9ydCBjb25uIGlkID0gUGlwZV9ycGMuYWJvcnQgcnBjIGNvbm4gaWRcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEhhc2h0Ymwuc2V0XG4gICAgICAgICAgICAgIHJlZ2lzdHJ5XG4gICAgICAgICAgICAgIH5rZXk6dmVyc2lvblxuICAgICAgICAgICAgICB+ZGF0YTooeyBhYm9ydDsgZGlzcGF0Y2g7IGRpc3BhdGNoX2l0ZXIgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiQ2Fubm90IHVzZSBEaXJlY3Qgd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiBWZXJzaW9uX2kudmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+ICggc3RhdGUgKiB1cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBlcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX3N0YXRlIDogc3RhdGUgLT4gTW9kZWwuc3RhdGVcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICA6ICB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwudXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBxID1cbiAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5xdWVyeV9vZl9tb2RlbCBxIHdpdGhcbiAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAoRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgUXVlcnksIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICB8IHEgLT5cbiAgICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBTdGF0ZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgICAgICAobWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+IEVycm9yIGV4blxuICAgICAgICAgICAgICAgfCBPayAoRXJyb3IgZSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9lcnJvciBlIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYEVycm9yLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgfCBPayAoT2sgKHN0YXRlLCBwaXBlLCBpZCkpIC0+XG4gICAgICAgICAgICAgICAgIChtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2Zfc3RhdGUgc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYFN0YXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IE9rIChPayAoc3RhdGUsIFZlcnNpb25faS5tb2RlbF9vZl91cGRhdGUgcGlwZSwgaWQpKSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooZGlzcGF0Y2gsIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfdXBkYXRlIDogdXBkYXRlIC0+IE1vZGVsLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSByIHdpdGhcbiAgICAgICAgICAgICAgICB8IHIgLT4gT2sgclxuICAgICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IG1zZyAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgbXNnXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gTW9kZWwubmFtZVxuICAgICAgbGV0IHJlZ2lzdHJ5ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChIYXNodGJsLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBtc2cgPVxuICAgICAgICBEaXNwYXRjaC5EaXJlY3Qud2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICBjb25uX3dpdGhfbWVudVxuICAgICAgICAgIG1zZ1xuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2cgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbXNnX29mX21vZGVsIDogTW9kZWwubXNnIC0+IG1zZ1xuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPSBPbmVfd2F5LmNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZ1xuXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubXNnX29mX21vZGVsIHEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIEVycm9yIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgfCBPayBxIC0+IE9uZV93YXkuZGlzcGF0Y2ggcnBjIGNvbm4gcVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuT25lX3dheSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEJvdGhfY29udmVydCA9IHN0cnVjdFxuICBtb2R1bGUgUGxhaW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlZV9yZXNwb25zZVxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBjYWxsZWVfcXVlcnkgLT4gY2FsbGVlX3Jlc3BvbnNlIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5ScGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb24gOiBzaWdcbiAgICAgICAgICBvcGVuIE1vZGVsXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IENhbGxlZS5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBDYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVyX2Vycm9yXG4gICAgICB0eXBlIGNhbGxlZV9lcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gKCBjYWxsZXJfcmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IGNhbGxlcl9xdWVyeVxuICAgICAgICAtPiBmOihjYWxsZXJfcmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgY2FsbGVyX2Vycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGFib3J0X211bHRpIDogQ29ubmVjdGlvbl93aXRoX21lbnUudCAtPiBQaXBlX3JwYy5JZC50IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9yZXNwb25zZSBQaXBlLlJlYWRlci50LCBjYWxsZWVfZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIGltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiBjYWxsZWVfcmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgIC0+ICh1bml0LCBjYWxsZWVfZXJyb3IpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLlBpcGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlBpcGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9lcnJvciA6IGVycm9yIC0+IE1vZGVsLkNhbGxlci5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIDogIE1vZGVsLkNhbGxlZS5yZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiByZXNwb25zZSBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgICA6ICByZXNwb25zZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZXIucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9IHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlciAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHJlc3BvbnNlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5yZXNwb25zZSAtPiByZXNwb25zZVxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5DYWxsZXIucmVzcG9uc2VcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9yZXNwb25zZSA9IGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGRpc3BhdGNoX2l0ZXJfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfaXRlcl9tdWx0aVxuICAgICAgbGV0IGFib3J0X211bHRpID0gQ2FsbGVyLmFib3J0X211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9kaXJlY3RfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9xdWVyeVxuICAgICAgdHlwZSBjYWxsZWVfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVyX3N0YXRlXG4gICAgICB0eXBlIGNhbGxlZV9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZXJfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlZV91cGRhdGVcbiAgICAgIHR5cGUgY2FsbGVyX2Vycm9yXG4gICAgICB0eXBlIGNhbGxlZV9lcnJvclxuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gKCBjYWxsZXJfc3RhdGUgKiBjYWxsZXJfdXBkYXRlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFN0YXRlX3JwYy5NZXRhZGF0YS50XG4gICAgICAgICAgICwgY2FsbGVyX2Vycm9yIClcbiAgICAgICAgICAgICBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gY2FsbGVlX3F1ZXJ5XG4gICAgICAgICAgICAtPiAoY2FsbGVlX3N0YXRlICogY2FsbGVlX3VwZGF0ZSBQaXBlLlJlYWRlci50LCBjYWxsZWVfZXJyb3IpIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIERlZmVycmVkLnQpXG4gICAgICAgIC0+ICdzdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgbW9kdWxlIENhbGxlciA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgICB0eXBlIGVycm9yXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBDYWxsZWUgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5TdGF0ZV9ycGMuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgdHlwZSBWZXJzaW9uX3NoYXJlZCA9IHNpZ1xuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgcXVlcnlfb2ZfY2FsbGVyX21vZGVsIDogTW9kZWwuQ2FsbGVyLnF1ZXJ5IC0+IHF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5DYWxsZWUucXVlcnlcbiAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9zdGF0ZSA6IHN0YXRlIC0+IE1vZGVsLkNhbGxlci5zdGF0ZVxuICAgICAgICB2YWwgc3RhdGVfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGVycm9yX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5lcnJvciAtPiBlcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICA6ICB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlZS51cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHN0YXRlX29mX21vZGVsID0gc3RhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsID0gdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCB1cGRhdGVfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLnVwZGF0ZSAtPiB1cGRhdGVcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZSA6IHVwZGF0ZSAtPiBNb2RlbC5DYWxsZXIudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHN0YXRlX29mX21vZGVsID0gc3RhdGVfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsID0gdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IGVycm9yX29mX21vZGVsID0gZXJyb3Jfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3N0YXRlID0gY2FsbGVyX21vZGVsX29mX3N0YXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfdXBkYXRlID0gY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX2Vycm9yID0gY2FsbGVyX21vZGVsX29mX2Vycm9yXG4gICAgICAgICAgZW5kKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX21zZ1xuICAgICAgdHlwZSBjYWxsZWVfbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gY2FsbGVyX21zZyAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX21zZyAtPiB1bml0KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIG1zZ1xuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5PbmVfd2F5Lk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZWVcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb24gOiBzaWdcbiAgICAgICAgICBvcGVuIE1vZGVsXG5cbiAgICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuXG4gICAgICAgICAgdHlwZSBtc2cgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIG1zZ19vZl9jYWxsZXJfbW9kZWwgOiBDYWxsZXIubXNnIC0+IG1zZ1xuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfbXNnIDogbXNnIC0+IENhbGxlZS5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBDYWxsZWUuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9tc2cgPSBjYWxsZWVfbW9kZWxfb2ZfbXNnXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGluY2x1ZGUgQ2FsbGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbXNnX29mX21vZGVsID0gbXNnX29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQldGVzdCBfID0gSW50LlNldC5lcXVhbCAoQ2FsbGVyLnZlcnNpb25zICgpKSAoQ2FsbGVlLnZlcnNpb25zICgpKVxuICAgICAgZW5kXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSA9IENhbGxlci5kaXNwYXRjaF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcblxuICAgICAgKCogTm90ZTogQ2FsbGVyLnZlcnNpb25zIGlzIHRoZSBzYW1lIGFzIENhbGxlZS52ZXJzaW9ucywgc28gaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2hcbiAgICAgICAgIG9uZSB3ZSBjYWxsIGhlcmUuIFNhbWUgZm9yIFtycGNzXS4gKilcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmluY2x1ZGUgc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0XG4gIG1vZHVsZSBIZWFkZXIgPSBIZWFkZXJcbiAgbW9kdWxlIEhhbmRsZXJfcmVzdWx0ID0gSGFuZGxlcl9yZXN1bHRcbiAgbW9kdWxlIFNlbmRfcmVzdWx0ID0gU2VuZF9yZXN1bHRcbiAgbW9kdWxlIFJlYWRlciA9IFJlYWRlclxuICBtb2R1bGUgV3JpdGVyID0gV3JpdGVyXG5lbmRcblxubGV0IHJlYyBwaXBlX3JlYWQgdCBmID1cbiAgbWF0Y2glYmluZCBQaXBlLnZhbHVlc19hdmFpbGFibGUgdCB3aXRoXG4gIHwgYEVvZiAtPiBmIGBFb2ZcbiAgfCBgT2sgLT5cbiAgICAobWF0Y2ggUGlwZS5yZWFkX25vdycgdCB3aXRoXG4gICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+IHBpcGVfcmVhZCB0IGZcbiAgICAgfCAoYEVvZiB8IGBPayBfKSBhcyByZXMgLT4gZiByZXMpXG47O1xuXG5tb2R1bGUgdHlwZSBEQVRBID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgYWRkX3RvX2JpZ2J1ZmZlciA6IEJpZ2J1ZmZlci50IC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fYmlnc3RyaW5nIDogdCAtPiBCaWdzdHJpbmcudFxuICB2YWwgb2ZfYmlnc3RyaW5nIDogQmlnc3RyaW5nLnQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQaXBlX2FuZF9idWZmZXIgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHBpcGUgOiAnYSBQaXBlLlJlYWRlci50XG4gICAgOyBidWZmZXIgOiBCaWdidWZmZXIudFxuICAgIDsgbXV0YWJsZSBieXRlc19yZWFkIDogSW50NjMudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHBpcGUgPVxuICAgIHsgcGlwZTsgYnVmZmVyID0gQmlnYnVmZmVyLmNyZWF0ZSBIZWFkZXIubGVuZ3RoOyBieXRlc19yZWFkID0gSW50NjMuemVybyB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFBpcGVfcmVhZGVyIChEYXRhIDogREFUQSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gRGF0YS50IFBpcGVfYW5kX2J1ZmZlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNsb3NlICh0IDogdCkgPVxuICAgIFBpcGUuY2xvc2VfcmVhZCB0LnBpcGU7XG4gICAgRGVmZXJyZWQudW5pdFxuICA7O1xuXG4gIGxldCBpc19jbG9zZWQgKHQgOiB0KSA9IFBpcGUuaXNfY2xvc2VkIHQucGlwZVxuICBsZXQgYnl0ZXNfcmVhZCAodCA6IHQpID0gdC5ieXRlc19yZWFkXG5cbiAgbGV0IHJlYWRfZm9yZXZlciAodCA6IHQpIH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2ggOiAoXywgXykgRGVmZXJyZWQuUmVzdWx0LnQgPVxuICAgIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICAgICgqIERlcXVldWUgdW50aWwgZW5vdWdoIGRhdGEgKFtuZWVkXSkgaXMgYXZhaWxhYmxlIGFuZCB0cnkgcmVhZCBtZXNzYWdlcyAqKVxuICAgIGxldCByZWMgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSA9XG4gICAgICBtYXRjaCBRdWV1ZS5kZXF1ZXVlIHF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiBRdWV1ZSBpcyBlbXB0eSAtIHdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBkYXRhICopXG4gICAgICAgIHJldHVybiAoU2Vjb25kIG5lZWQpXG4gICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICBsZXQgYnVmZl9sZW4gPSBCaWdidWZmZXIubGVuZ3RoIGJ1ZmZlciBpblxuICAgICAgICBsZXQgZGF0YV9sZW4gPSBEYXRhLmxlbmd0aCBkYXRhIGluXG4gICAgICAgIGlmIGJ1ZmZfbGVuID0gMCAmJiBkYXRhX2xlbiA+PSBuZWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBoYXZlIGVub3VnaCBkYXRhIGFuZCBidWZmZXIgaXMgZW1wdHkuXG4gICAgICAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgZXZlcnkgYmluX3Byb3QgbWVzc2FnZSBpcyBzZW50IGluIGl0cyBvd25cbiAgICAgICAgICAgICB3ZWJzb2NrZXQgZnJhbWUgKilcbiAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhOihEYXRhLnRvX2JpZ3N0cmluZyBkYXRhKSB+bGVuZ3RoOmRhdGFfbGVuIHF1ZXVlXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIFNsb3cgcGF0aC4gV2UgaGF2ZSB0byBhY2N1bXVsYXRlIFtCaWdzdHJpbmcudF1zICopXG4gICAgICAgICAgRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhO1xuICAgICAgICAgIGlmIEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyID49IG5lZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICgqIFRoZXJlIGlzIGVub3VnaCBkYXRhIGluIHRoZSBidWZmZXIgKilcbiAgICAgICAgICAgIGxldCBkYXRhID0gQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlciBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhIH5sZW5ndGggcXVldWUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKCogV2UgbmVlZCBtb3JlIGRhdGEgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlKVxuICAgICgqIFJlYWQgYXMgbWFueSBtZXNzYWdlcyBhcyBwb3NzaWJsZSBmcm9tIHRoZSBjdXJyZW50IGRhdGEgKilcbiAgICBhbmQgcHJvY2Vzc19kYXRhIH5wb3MgfmRhdGEgfmxlbmd0aCBxdWV1ZSA9XG4gICAgICBpZiBsZW5ndGggPj0gSGVhZGVyLmxlbmd0aFxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBwYXlsb2FkX2xlbiA9IEhlYWRlci51bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIGRhdGEgfnBvcyBpblxuICAgICAgICBsZXQgdG90YWxfbGVuID0gSGVhZGVyLmxlbmd0aCArIHBheWxvYWRfbGVuIGluXG4gICAgICAgIGlmIGxlbmd0aCA+PSB0b3RhbF9sZW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgdC5ieXRlc19yZWFkIDwtIEludDYzLih0LmJ5dGVzX3JlYWQgKyBvZl9pbnQgcGF5bG9hZF9sZW4pO1xuICAgICAgICAgIG1hdGNoIG9uX21lc3NhZ2UgZGF0YSB+cG9zOihwb3MgKyBIZWFkZXIubGVuZ3RoKSB+bGVuOnBheWxvYWRfbGVuIHdpdGhcbiAgICAgICAgICB8IEhhbmRsZXJfcmVzdWx0LlN0b3AgeCAtPlxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgKCogTWFrZSBzdXJlIHRoYXQgYWxsIGRhdGEgd2UndmUgcmVhZCAoYW5kIG5vdCBcImNvbnN1bWVkXCIpIGZyb20gdGhlIHBpcGVcbiAgICAgICAgICAgICAgIGlzIGtlcHQgaW4gdGhlIGJ1ZmZlci5cbiAgICAgICAgICAgICAgIFRoYXQgaXMgdGhlIHJlbWFpbmluZyBiaXRzIGluIFtkYXRhXSBhbmQgYWxsIGNvbnRlbnRzIGluIFtxdWV1ZV0uXG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGE7XG4gICAgICAgICAgICBRdWV1ZS5pdGVyIHF1ZXVlIH5mOihmdW4gZGF0YSAtPiBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIChGaXJzdCB4KVxuICAgICAgICAgIHwgKENvbnRpbnVlIHwgV2FpdCBfKSBhcyBjb250aW51ZV9vcl93YWl0IC0+XG4gICAgICAgICAgICBsZXQlYmluZCAoKSA9XG4gICAgICAgICAgICAgIG1hdGNoIGNvbnRpbnVlX29yX3dhaXQgd2l0aFxuICAgICAgICAgICAgICB8IEhhbmRsZXJfcmVzdWx0LlN0b3AgXyAtPlxuICAgICAgICAgICAgICAgICgqIEltcG9zc2libGU6IHRoaXMgYnJhbmNoIGRvZXMgbm90IGNvbnRhaW4gW1N0b3AgX10gKilcbiAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCBDb250aW51ZSAtPiBEZWZlcnJlZC51bml0XG4gICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gcG9zICsgdG90YWxfbGVuIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIC0gdG90YWxfbGVuIGluXG4gICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgIGlmIGxlbmd0aCA+IDBcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgKCogUHJvY2VzcyB0aGUgcmVzdCBvZiB0aGUgZGF0YS5cbiAgICAgICAgICAgICAgICAgTW9yZSB0aGFuIG9uZSBiaW5fcHJvdCBtZXNzYWdlIHdhcyBzZW50IGluc2lkZSB0aGUgd2Vic29ja2V0IGZyYW1lICopXG4gICAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zIH5kYXRhIH5sZW5ndGggcXVldWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCogbGVuZ3RoID0gMCAqKVxuICAgICAgICAgICAgICAoKiBBbGwgZGF0YSB3YXMgcmVhZCAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgICAgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aDowIH5xdWV1ZSB+ZGF0YSlcbiAgICAgICAgZWxzZSBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOnRvdGFsX2xlbiB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhKVxuICAgICAgZWxzZSBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkOkhlYWRlci5sZW5ndGggfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YVxuICAgIGFuZCBzZXRfYnVmZmVyIH5wb3Mgfmxlbmd0aCB+ZGF0YSA9XG4gICAgICBpZiBsZW5ndGggPSAwXG4gICAgICB0aGVuIEJpZ2J1ZmZlci5jbGVhciBidWZmZXJcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZGF0YSA9IEJpZ3N0cmluZy5zdWIgZGF0YSB+cG9zIH5sZW46bGVuZ3RoIGluXG4gICAgICAgIEJpZ2J1ZmZlci5jbGVhciBidWZmZXI7XG4gICAgICAgIEJpZ2J1ZmZlci5hZGRfYmlnc3RyaW5nIGJ1ZmZlciBkYXRhKVxuICAgIGFuZCBzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlIH5uZWVkIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGEgPVxuICAgICAgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGE7XG4gICAgICBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlXG4gICAgaW5cbiAgICBsZXQgcmVjIHdhaXRfZm9yX3JlYWQgfm5lZWQgPVxuICAgICAgcGlwZV9yZWFkIHQucGlwZSAoZnVuY3Rpb25cbiAgICAgICAgfCBgRW9mIC0+IHJldHVybiAoRXJyb3IgYEVvZilcbiAgICAgICAgfCBgT2sgcXVldWUgLT4gcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZSA+Pj0gZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSlcbiAgICBhbmQgZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSBuZXh0ID1cbiAgICAgIG9uX2VuZF9vZl9iYXRjaCAoKTtcbiAgICAgIG1hdGNoIG5leHQgd2l0aFxuICAgICAgfCBGaXJzdCByZXN1bHQgLT4gcmV0dXJuIChPayByZXN1bHQpXG4gICAgICB8IFNlY29uZCBuZWVkIC0+IHdhaXRfZm9yX3JlYWQgfm5lZWRcbiAgICBpblxuICAgIGxldCBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmRhdGEgfmxlbmd0aCA9XG4gICAgICBwcm9jZXNzX2RhdGEgfnBvczowIH5kYXRhIH5sZW5ndGggKFF1ZXVlLmNyZWF0ZSAoKSkgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWVcbiAgICBpblxuICAgICgqIFdlIGVpdGhlciBzdGFydCBieVxuICAgICAgIC0gcHJvY2Vzc2luZyByZW1haW5pbmcgYml0cyBpbiB0aGUgYnVmZmVyXG4gICAgICAgLSBvciB3YWl0aW5nIGZvciBtb3JlIGRhdGEgaW4gdGhlIHBpcGUgKilcbiAgICBsZXQgbmVlZCA9IEhlYWRlci5sZW5ndGggaW5cbiAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICBpZiBJbnQuKCA8ICkgbGVuZ3RoIG5lZWRcbiAgICB0aGVuIHdhaXRfZm9yX3JlYWQgfm5lZWRcbiAgICBlbHNlIHN0YXJ0X3Byb2Nlc3NpbmdfZXhpc3RpbmdfZGF0YSB+bGVuZ3RoIH5kYXRhOihCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IERhdGEudFxuXG4gICAgbGV0IG9mX2JpZ3N0cmluZyA9IERhdGEub2ZfYmlnc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQaXBlX2FuZF9tb25pdG9yID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5Xcml0ZXIudFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgbXV0YWJsZSBieXRlc193cml0dGVuIDogSW50NjMudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIHBpcGUgPSB7IHBpcGU7IG1vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSAoKTsgYnl0ZXNfd3JpdHRlbiA9IEludDYzLnplcm8gfVxuZW5kXG5cbigqIFdlIGRvbid0IHBlcmZvcm0gYW55IGJ1ZmZlcmluZyBoZXJlLlxuICAgQSBtZXNzYWdlIGlzIGNvbnNpZGVyIHRvIGJlIGZsdXNoZWQgYXMgc29vbiBhcyBpdCBlbnRlcnMgdGhlIHBpcGUuICopXG5tb2R1bGUgUGlwZV93cml0ZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfbW9uaXRvci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNsb3NlICh0IDogdCkgPVxuICAgIFBpcGUuY2xvc2UgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IG1vbml0b3IgKHQgOiB0KSA9IHQubW9uaXRvclxuXG4gICgqIEJlY2F1c2Ugd2UgZG9uJ3QgbWFpbnRhaW4gYW55IGJ1ZmZlciwgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd3JpdGVzICopXG4gIGxldCBieXRlc190b193cml0ZSAoXyA6IHQpID0gMFxuICBsZXQgYnl0ZXNfd3JpdHRlbiAodCA6IHQpID0gdC5ieXRlc193cml0dGVuXG4gIGxldCBzdG9wcGVkICh0IDogdCkgPSBQaXBlLmNsb3NlZCB0LnBpcGVcblxuICAoKiBXZSBjb25zaWRlciB0aGF0IGEgbWVzc2FnZSBpcyBmbHVzaGVkIGFzIHNvb24gYXMgaXQgcmVhY2hlcyB0aGUgdW5kZXJsaW5pbmdcbiAgICAgdHJhbnNwb3J0LiAqKVxuICBsZXQgZmx1c2hlZCAoXyA6IHQpID0gRGVmZXJyZWQudW5pdFxuICBsZXQgcmVhZHlfdG9fd3JpdGUgPSBmbHVzaGVkXG4gIGxldCBzZW50X3Jlc3VsdCB4IDogXyBTZW5kX3Jlc3VsdC50ID0gU2VudCB4XG5cbiAgbGV0IGNoZWNrX2Nsb3NlZCAodCA6IHQpIGYgPVxuICAgIGlmIG5vdCAoUGlwZS5pc19jbG9zZWQgdC5waXBlKSB0aGVuIGYgKCkgZWxzZSBTZW5kX3Jlc3VsdC5DbG9zZWRcbiAgOztcblxuICBsZXQgaW5jcl9ieXRlc193cml0dGVuICh0IDogdCkgbnVtX2J5dGVzID1cbiAgICB0LmJ5dGVzX3dyaXR0ZW4gPC0gSW50NjMuKHQuYnl0ZXNfd3JpdHRlbiArIG9mX2ludCBudW1fYnl0ZXMpXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgdCB3cml0ZXIgeCA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgbGV0IGJ1ZiA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIH5oZWFkZXI6dHJ1ZSB3cml0ZXIgeCBpblxuICAgICAgbGV0IGRhdGEgPSBEYXRhLm9mX2JpZ3N0cmluZyBidWYgaW5cbiAgICAgIGluY3JfYnl0ZXNfd3JpdHRlbiB0IChEYXRhLmxlbmd0aCBkYXRhKTtcbiAgICAgIFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB0LnBpcGUgZGF0YTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdFxuICAgICAgICAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcilcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlbjpwYXlsb2FkX3NpemVcbiAgICA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgKCogV3JpdGUgdGhlIHNpemUgaGVhZGVyIG1hbnVhbGx5IGFuZCBjb25jYXRlbmF0ZSB0aGUgdHdvICopXG4gICAgICBsZXQgZGF0YV9zaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuY3JlYXRlIChkYXRhX3NpemUgKyBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9zaXplKSBpblxuICAgICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zOjAgKGRhdGFfc2l6ZSArIHBheWxvYWRfc2l6ZSk7XG4gICAgICBsZXQgZHN0X3BvcyA9IHdyaXRlci53cml0ZSBkYXRhIH5wb3M6SGVhZGVyLmxlbmd0aCB4IGluXG4gICAgICBCaWdzdHJpbmcuYmxpdCB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpkYXRhIH5kc3RfcG9zIH5sZW46cGF5bG9hZF9zaXplO1xuICAgICAgbGV0IGRhdGEgPSBEYXRhLm9mX2JpZ3N0cmluZyBkYXRhIGluXG4gICAgICBpbmNyX2J5dGVzX3dyaXR0ZW4gdCAoRGF0YS5sZW5ndGggZGF0YSk7XG4gICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdC5waXBlIGRhdGE7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIG1hdGNoIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gc2VudF9yZXN1bHQgRGVmZXJyZWQudW5pdFxuICAgIHwgKENsb3NlZCB8IE1lc3NhZ2VfdG9vX2JpZyBfKSBhcyByIC0+IHJcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfYmlnc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0geFxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9zdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLm9mX3N0cmluZyB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy50b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChTdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoU3RyaW5nX2RhdGEpXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQmlnc3RyaW5nIDogYmlnc3RyaW5nIHRcblxuICBsZXQgc3RyaW5nID0gU3RyaW5nXG4gIGxldCBiaWdzdHJpbmcgPSBCaWdzdHJpbmdcbmVuZFxuXG5sZXQgbWFrZV9yZWFkZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHJlYWRlciA6IGEgUGlwZS5SZWFkZXIudCkgPVxuICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbjs7XG5cbmxldCBtYWtlX3dyaXRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAod3JpdGVyIDogYSBQaXBlLldyaXRlci50KSA9XG4gIGxldCB3cml0ZXIgPSBQaXBlX2FuZF9tb25pdG9yLmNyZWF0ZSB3cml0ZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbjs7XG5cbmxldCBjcmVhdGUga2luZCByZWFkZXIgd3JpdGVyID1cbiAgeyBUcmFuc3BvcnQucmVhZGVyID0gbWFrZV9yZWFkZXIga2luZCByZWFkZXI7IHdyaXRlciA9IG1ha2Vfd3JpdGVyIGtpbmQgd3JpdGVyIH1cbjs7XG5cbigqIFRlc3RpbmcgKilcblxubW9kdWxlIHR5cGUgVHJhbnNwb3J0X3JlYWRlciA9IHNpZ1xuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVHJhbnNwb3J0LlJlYWRlci5TIHdpdGggdHlwZSB0ID0gRm9yX3Rlc3RpbmcudCBQaXBlX2FuZF9idWZmZXIudFxuZW5kXG5cbm1vZHVsZSBUZXN0X3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG5cbiAgbGV0IG9uX21lc3NhZ2UgPyhtZXNzYWdlID0gZGVmYXVsdF9tZXNzYWdlKSBvbl9tZXNzYWdlX2NvdW50IGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgIG9uX21lc3NhZ2VfY291bnQgOj0gIW9uX21lc3NhZ2VfY291bnQgKyAxO1xuICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0Om1lc3NhZ2U7XG4gICAgSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgOztcblxuICBsZXQgb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCAoKSA9IGluY3Igb25fZW5kX29mX2JhdGNoX2NvdW50XG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gdmVyaWZ5ID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2Ugb25fbWVzc2FnZV9jb3VudCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50IGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSk7XG4gICAgd2FpdCAoKTtcbiAgICB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudCBtZXNzYWdlX2NvdW50IGJhdGNoX2NvdW50ID1cbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9tZXNzYWdlX2NvdW50IH5leHBlY3Q6bWVzc2FnZV9jb3VudDtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9lbmRfb2ZfYmF0Y2hfY291bnQgfmV4cGVjdDpiYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpIGluXG4gICAgbGV0IG1lc3NhZ2VfcmF3ID0gZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3Jhdyk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdhaXQgKCk7XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3IGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICB3cml0ZSBwYXJ0MTtcbiAgICB3YWl0ICgpO1xuICAgIHdyaXRlIHBhcnQyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIHdyaXRlIHR3b19tc2dcbiAgOztcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbXNnIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21zZyB+cG9zOmkgfmxlbjoxKTtcbiAgICAgIHdhaXQgKClcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVuayAodmVyaWZ5IDEgMSlcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgMiAxKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmsgKHZlcmlmeSAxIDMpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmsgKHZlcmlmeSAyIDEpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayAodmVyaWZ5IDIgMzQpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDcgNDApXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImNhbiBjYWxsIHJlYWRfZm9yZXZlciBtdWx0aXBsZSB0aW1lc1wiID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKSBpblxuICAgIGxldCB3cml0ZSB4ID0gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpIGluXG4gICAgbGV0IG51bSA9IHJlZiAwIGluXG4gICAgbGV0IHN0b3BfYWZ0ZXJfb25fbWVzc2FnZSBidWZmZXIgfnBvcyB+bGVuID1cbiAgICAgIGluY3IgbnVtO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6ZGVmYXVsdF9tZXNzYWdlO1xuICAgICAgSGFuZGxlcl9yZXN1bHQuU3RvcCAoKVxuICAgIGluXG4gICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICBQaXBlLmNsb3NlIHdyaXRlcjtcbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgRGVmZXJyZWQudW5pdCk7XG4gICAgd2FpdCAoKTtcbiAgICBbJXRlc3RfcmVzdWx0OiBJbnQudF0gfmV4cGVjdDoyICFudW1cbiAgOztcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG5cbm1vZHVsZSBCZW5jaF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuICBsZXQgb25lX21lc3NhZ2UgPSBjcmVhdGVfbWVzc2FnZSAoKVxuICBsZXQgdHdvX21lc3NhZ2VzID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tZXNzYWdlOyBvbmVfbWVzc2FnZSBdXG5cbiAgbGV0IG9uZV9tZXNzYWdlX3AxLCBvbmVfbWVzc2FnZV9wMiA9XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlIGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICBwYXJ0MSwgcGFydDJcbiAgOztcblxuICBsZXQgb25fbWVzc2FnZSBfYnVmZmVyIH5wb3M6XyB+bGVuOl8gPSBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKClcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2UgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBmb3IgXyA9IDAgdG8gMTAwIGRvXG4gICAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSlcbiAgICBkb25lO1xuICAgIHdhaXQgKClcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIG9uZV9tZXNzYWdlXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKVxuXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlKTtcbiAgICB3cml0ZSBidWY7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDE7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIHR3b19tZXNzYWdlc1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tZXNzYWdlcyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tZXNzYWdlcyB+cG9zOmkgfmxlbjoxKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rXG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzNfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ19vbmVfYnl0ZVwiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rXG5cbiAgbGV0JWJlbmNoIFwibXVsdGlcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuZW5kXG5cbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUudFxuXG4gICAgbGV0IHJwY19jb25uZWN0aW9uID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgZW5kKVxuXG5tb2R1bGUgUnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gUnBjLkNvbm5lY3Rpb24udFxuXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSB0XG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIHRcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIHRcbiAgZW5kKVxuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBWZXJzaW9uZWRfcnBjXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5tb2R1bGUgUGlwZV90cmFuc3BvcnQgPSBQaXBlX3RyYW5zcG9ydFxubW9kdWxlIFJwY19lcnJvciA9IFJwY19lcnJvclxubW9kdWxlIFJwY19yZXN1bHQgPSBScGNfcmVzdWx0XG5tb2R1bGUgUnBjX3NoYXBlcyA9IFJwY19zaGFwZXNcbm1vZHVsZSBPcl9ub3RfYXV0aG9yaXplZCA9IE9yX25vdF9hdXRob3JpemVkXG5cbm1vZHVsZSBScGNfbWV0YWRhdGEgOlxuICBtb2R1bGUgdHlwZSBvZiBScGNfbWV0YWRhdGEgd2l0aCBtb2R1bGUgUHJpdmF0ZSA6PSBScGNfbWV0YWRhdGEuUHJpdmF0ZSA9XG4gIFJwY19tZXRhZGF0YVxuXG5tb2R1bGUgQXN5bmNfcnBjX2tlcm5lbF9zdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJwYyA9IFJwYy5TdGFibGVcbmVuZFxuXG5tb2R1bGUgQXN5bmNfcnBjX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuICBtb2R1bGUgUHJvdG9jb2wgPSBQcm90b2NvbFxuICBtb2R1bGUgVHJhbnNwb3J0ID0gVHJhbnNwb3J0XG5cbiAgbGV0IGRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXQgPSBDb25uZWN0aW9uLmRlZmF1bHRfaGFuZHNoYWtlX3RpbWVvdXRcbmVuZFxuIiwib3BlbiBTdHJpbmdcblxubGV0IHN0cmluZ19hZnRlciBzIG4gPSBTdHJpbmcuc3ViIHMgbiAoU3RyaW5nLmxlbmd0aCBzIC0gbilcblxubGV0IHF1b3RlIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlICgyICogbGVuKSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICdbJyB8ICddJyB8ICcqJyB8ICcuJyB8ICdcXFxcJyB8ICc/JyB8ICcrJyB8ICdeJyB8ICckJyBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgZG9uZTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5cbigqIE5vdCB0YWlsIHJlY3Vyc2l2ZSBmb3IgXCJwZXJmb3JtYW5jZVwiLCBwbGVhc2UgY2hvb3NlIGxvdyB2YWx1ZXMgZm9yXG4gICBbbWF4XS4gVGhlIGlkZWEgaXMgdGhhdCBtYXggaXMgYWx3YXlzIHNtYWxsIGJlY2F1c2UgaXQncyBoYXJkXG4gICBjb2RlICopXG5sZXQgc3BsaXRfY2hhcl9ib3VuZGVkIHN0ciB+b24gfm1heCA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbc3RyXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIG9mZnNldCB0b2tlbnMgPVxuICAgICAgaWYgdG9rZW5zID0gbWF4IC0gMVxuICAgICAgdGhlbiBbc3ViIHN0ciBvZmZzZXQgKGxlbmd0aCBzdHIgLSBvZmZzZXQpXVxuICAgICAgZWxzZVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgICBcIlwiOjoobG9vcCAob2Zmc2V0ICsgMSkgKHRva2VucyArIDEpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCB0b2tlbiA9IFN0cmluZy5zdWIgc3RyIG9mZnNldCAoaW5kZXggLSBvZmZzZXQpIGluXG4gICAgICAgICAgICB0b2tlbjo6KGxvb3AgKGluZGV4ICsgMSkgKHRva2VucyArIDEpKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbc3ViIHN0ciBvZmZzZXQgKGxlbmd0aCBzdHIgLSBvZmZzZXQpXVxuICAgIGluIGxvb3AgMCAwXG5cbmxldCBzcGxpdF9jaGFyX3VuYm91bmRlZCBzdHIgfm9uID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gc3ViIHN0ciAoaW5kZXggKyAxKSAob2Zmc2V0IC0gaW5kZXgpIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxubGV0IG9mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbmxldCBmdWxsX3NwbGl0IHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCBzZXAgPSBvZl9jaGFyIG9uIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tIHN0ciBvZmZzZXQgb24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKHNlcDo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gc3ViIHN0ciAoaW5kZXggKyAxKSAob2Zmc2V0IC0gaW5kZXgpIGluXG4gICAgICAgICAgbG9vcCAoc2VwOjp0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgICB0aGVuIChzdWIgc3RyIDAgKG9mZnNldCArIDEpKTo6YWNjXG4gICAgICAgIGVsc2UgYWNjXG4gICAgaW4gbG9vcCBbXSAobGVuZ3RoIHN0ciAtIDEpXG5cbigqIGNvcHlpbmcgY29yZSdzIGNvbnZlbnRpb24gZm9yIFN0cmluZy5zcGxpdCBidXQgd2l0aCBhbiBvcHRpb25hbCBtYXhcbiAgIGFyZ3VtZW50ICopXG5sZXQgc3BsaXQgP21heCBzIH5vbiA9XG4gIG1hdGNoIG1heCB3aXRoXG4gIHwgTm9uZSAtPiBzcGxpdF9jaGFyX3VuYm91bmRlZCBzIH5vblxuICB8IFNvbWUgbWF4IC0+ICAgICAgICAgICAgICAgICAoKiBhc3NlcnQgKG1heCA8IDEwMCk7ICopXG4gICAgc3BsaXRfY2hhcl9ib3VuZGVkIHMgfm9uIH5tYXhcblxubGV0IHJpbmRleF9mcm9tX29uIHMgfm9mZnNldCB+b24gPVxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBvbiBzLltpXSB0aGVuIGlcbiAgICBlbHNlIGxvb3AgKGkgLSAxKVxuICBpbiBsb29wIG9mZnNldFxuXG5sZXQgdHJpbV9sZWZ0X3N1YiBzIH5wb3MgfmxlbiB+Y2hhcnMgPVxuICBsZXQgc3RhcnRfcG9zID1cbiAgICBsZXQgZmluYWwgPSBwb3MgKyBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbGFzdF9jaGFyIGkgPVxuICAgICAgaWYgaSA9IGZpbmFsIHRoZW4gbGFzdF9jaGFyXG4gICAgICBlbHNlIGlmIFN0cmluZy5jb250YWlucyBjaGFycyBzLltpXSB0aGVuIGxvb3AgKGkgKyAxKSAoaSArIDEpXG4gICAgICBlbHNlIGxhc3RfY2hhclxuICAgIGluIGxvb3AgcG9zIHBvc1xuICBpblxuICBsZXQgbmV3X2xlbiA9IGxlbiAtIChzdGFydF9wb3MgLSBwb3MpIGluXG4gIFN0cmluZy5zdWIgcyBzdGFydF9wb3MgbmV3X2xlblxuXG5sZXQgc3BsaXRfdHJpbV9sZWZ0IHN0ciB+b24gfnRyaW0gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbV9vbiBzdHIgfm9mZnNldCB+b24gaW5cbiAgICAgICAgaWYgaW5kZXggPSBvZmZzZXQgdGhlblxuICAgICAgICAgIGxvb3AgKFwiXCI6OmFjYykgKGluZGV4IC0gMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCB0b2tlbiA9IHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6KGluZGV4ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH5sZW46KG9mZnNldCAtIGluZGV4KSB+Y2hhcnM6dHJpbSBpblxuICAgICAgICAgIGxvb3AgKHRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICh0cmltX2xlZnRfc3ViIHN0ciB+cG9zOjAgfmxlbjoob2Zmc2V0ICsgMSkgfmNoYXJzOnRyaW0pOjphY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuZXhjZXB0aW9uIEZvdW5kX2ludCBvZiBpbnRcblxubGV0IGZpcnN0X2NoYXJfbmUgcyBjID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gMCAmJiBzLlswXSA8PiBjXG5cbmxldCB0cmltX2xlZnQgcyA9XG4gIGlmIGZpcnN0X2NoYXJfbmUgcyAnICcgdGhlbiBzXG4gIGVsc2VcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgdHJ5XG4gICAgICBmb3IgaT0wIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gJyAnIHRoZW4gcmFpc2UgKEZvdW5kX2ludCBpKVxuICAgICAgZG9uZTtcbiAgICAgIFwiXCJcbiAgICB3aXRoIEZvdW5kX2ludCBub25fc3BhY2UgLT5cbiAgICAgIHN1YiBzIG5vbl9zcGFjZSAobGVuIC0gbm9uX3NwYWNlKVxuXG5sZXQgc3Vic3RyX2VxID8oc3RhcnQ9MCkgcyB+cGF0dGVybiA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHBhdHRlcm4gLSAxIGRvXG4gICAgICBpZiBzLltpICsgc3RhcnRdIDw+IHBhdHRlcm4uW2ldIHRoZW4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIF8gLT4gZmFsc2VcblxubGV0IGZpbmRfZnJvbSA/KHN0YXJ0PTApIHN0ciB+cGF0dGVybiA9XG4gIHRyeVxuICAgIGZvciBpID0gc3RhcnQgdG8gKFN0cmluZy5sZW5ndGggc3RyKSAtIChTdHJpbmcubGVuZ3RoIHBhdHRlcm4pIGRvXG4gICAgICBpZiBzdWJzdHJfZXEgfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHRoZW5cbiAgICAgICAgcmFpc2UgKEZvdW5kX2ludCBpKVxuICAgIGRvbmU7XG4gICAgTm9uZVxuICB3aXRoXG4gIHwgRm91bmRfaW50IGkgLT4gU29tZSBpXG4gIHwgIF8gLT4gTm9uZVxuXG5sZXQgZmluZF9taW4gbCB+ZiA9XG4gIGxldCByZWMgbG9vcCB4IGZ4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFNvbWUgKHgsIGZ4KVxuICAgIHwgeCc6OnhzIC0+XG4gICAgICBsZXQgZngnID0gZiB4JyBpblxuICAgICAgaWYgZngnIDwgZnggdGhlbiBsb29wIHgnIGZ4JyB4c1xuICAgICAgZWxzZSBsb29wIHggZnggeHNcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHg6OnhzIC0+IGxvb3AgeCAoZiB4KSB4c1xuXG5sZXQgcmVwbGFjZV9hbGwgc3RyIH5wYXR0ZXJuIH53aXRoXyA9XG4gIGxldCAoc2xlbiwgcGxlbikgPSBTdHJpbmcuKGxlbmd0aCBzdHIsIGxlbmd0aCBwYXR0ZXJuKSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBzbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBtYXRjaCBmaW5kX2Zyb20gfnN0YXJ0Omkgc3RyIH5wYXR0ZXJuIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoc2xlbiAtIGkpO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICAgIHwgU29tZSBqIC0+XG4gICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKGogLSBpKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiB3aXRoXztcbiAgICAgIGxvb3AgKGogKyBwbGVuKVxuICBpbiBsb29wIDBcblxuZXhjZXB0aW9uIEZvdW5kX3JlcGxhY2Ugb2YgaW50ICogc3RyaW5nICogc3RyaW5nXG5cbmxldCByZXBsYWNlX2FsbF9hc3NvYyBzdHIgdGJsID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBzbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IHNsZW4gdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgZWxzZVxuICAgICAgbGV0IHIgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZm91bmQgPSByZWYgZmFsc2UgaW5cbiAgICAgICAgICBsZXQgZSA9XG4gICAgICAgICAgICBmaW5kX21pbiB0YmwgfmY6KGZ1biAocGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgICAtPiBtYXhfaW50XG4gICAgICAgICAgICAgIHwgU29tZSBqIHdoZW4gaiA9IGkgLT4gcmFpc2UgKEZvdW5kX3JlcGxhY2UgKGosIHBhdHRlcm4sIHdpdGhfKSlcbiAgICAgICAgICAgICAgfCBTb21lIGogLT4gZm91bmQgOj0gdHJ1ZTsgailcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lICgocGF0dGVybiwgd2l0aF8pLCBqKSB3aGVuICFmb3VuZCAtPiBTb21lIChqLCBwYXR0ZXJuLCB3aXRoXylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIHdpdGggRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoc2xlbiAtIGkpO1xuICAgICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgICB8IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKSAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgc3RyIGkgKGogLSBpKTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgICBsb29wIChqICsgU3RyaW5nLmxlbmd0aCBwYXR0ZXJuKVxuICBpbiBsb29wIDBcblxubGV0IGl0ZXJpIGYgbCA9XG4gIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCB4Ojp4cyAtPiAoZiBpIHgpOyBsb29wIChzdWNjIGkpIHhzXG4gIGluIGxvb3AgMCBsXG5cbmxldCBvZl9saXN0IHhzID1cbiAgbGV0IGwgPSBMaXN0Lmxlbmd0aCB4cyBpblxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsIGluXG4gIGl0ZXJpIChmdW4gaSBjIC0+IEJ5dGVzLnNldCBzIGkgYykgeHM7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgdG9fbGlzdCBzID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpID0gLTEgdGhlbiBhY2NcbiAgICBlbHNlXG4gICAgICBsb29wIChzLltpXSA6OiBhY2MpIChwcmVkIGkpXG4gIGluIGxvb3AgW10gKFN0cmluZy5sZW5ndGggcyAtIDEpXG5cbmxldCBvZl9hcnJheSBhID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gIGxldCBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgYnl0ZXMgaSBhLihpKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ5dGVzXG5cbmxldCB0b19hcnJheSBzID0gQXJyYXkuaW5pdCAoU3RyaW5nLmxlbmd0aCBzKSAoU3RyaW5nLmdldCBzKVxuXG4oKiByaXBwZWQgb2ZmIGZyb20gb25lIG9mIGRidWVuemxpJ3MgbGlicyAqKVxubGV0IGN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LmN1dDogZW1wdHkgc2VwYXJhdG9yXCIgZWxzZVxuICAgIGxldCBzX21heCA9IGxlbmd0aCBzIC0gMSBpblxuICAgIGlmIHNfbWF4IDwgMCB0aGVuIE5vbmUgZWxzZVxuICAgICAgbGV0IGsgPSByZWYgMCBpblxuICAgICAgbGV0IGkgPSByZWYgMCBpblxuICAgICAgKCogV2UgcnVuIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byBlbmQgd2l0aCBbaV0gdHJ5aW5nIHRvIG1hdGNoIHRoZVxuICAgICAgICAgZmlyc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlIHZlcmlmeSB0aGF0XG4gICAgICAgICB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXS4gSWYgaXQgZG9lc24ndCBtYXRjaCB3ZVxuICAgICAgICAgY29udGludWUgdG8gbG9vayBmb3IgW29uXSB3aXRoIFtpXS4gSWYgaXQgbWF0Y2hlcyB3ZSBleGl0IHRoZVxuICAgICAgICAgbG9vcCBhbmQgZXh0cmFjdCBhIHN1YnN0cmluZyBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gdGhlXG4gICAgICAgICBwb3NpdGlvbiBiZWZvcmUgdGhlIFtvbl0gd2UgZm91bmQgYW5kIGFub3RoZXIgZnJvbSB0aGUgcG9zaXRpb25cbiAgICAgICAgIGFmdGVyIHRoZSBbb25dIHdlIGZvdW5kIHRvIGVuZCBvZiBzdHJpbmcuIElmIFtpXSBpcyBzdWNoIHRoYXQgbm9cbiAgICAgICAgIHNlcGFyYXRvciBjYW4gYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaFxuICAgICAgICAgY2FzZS4gKilcbiAgICAgIHRyeVxuICAgICAgICB3aGlsZSAoIWkgKyBzZXBfbWF4IDw9IHNfbWF4KSBkb1xuICAgICAgICAgICgqIENoZWNrIHJlbWFpbmluZyBbb25dIGNoYXJzIG1hdGNoLCBhY2Nlc3MgdG8gdW5zYWZlIHMgKCFpICsgIWspIGlzXG4gICAgICAgICAgICAgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICBpZiB1bnNhZmVfZ2V0IHMgIWkgPD4gdW5zYWZlX2dldCBvbiAwIHRoZW4gaW5jciBpIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGsgOj0gMTtcbiAgICAgICAgICAgIHdoaWxlICghayA8PSBzZXBfbWF4ICYmIHVuc2FmZV9nZXQgcyAoIWkgKyAhaykgPSB1bnNhZmVfZ2V0IG9uICFrKVxuICAgICAgICAgICAgZG8gaW5jciBrIGRvbmU7XG4gICAgICAgICAgICBpZiAhayA8PSBzZXBfbWF4IHRoZW4gKCogbm8gbWF0Y2ggKikgaW5jciBpIGVsc2UgcmFpc2UgRXhpdFxuICAgICAgICAgIGVuZFxuICAgICAgICBkb25lO1xuICAgICAgICBOb25lICgqIG5vIG1hdGNoIGluIHRoZSB3aG9sZSBzdHJpbmcuICopXG4gICAgICB3aXRoXG4gICAgICB8IEV4aXQgLT4gKCogaSBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXBhcmF0b3IgKilcbiAgICAgICAgbGV0IGxlZnRfZW5kID0gIWkgLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgc2VwX21heCArIDEgaW5cbiAgICAgICAgU29tZSAoc3ViIHMgMCAobGVmdF9lbmQgKyAxKSxcbiAgICAgICAgICAgICAgc3ViIHMgcmlnaHRfc3RhcnQgKHNfbWF4IC0gcmlnaHRfc3RhcnQgKyAxKSlcblxubGV0IHJjdXQgcyB+b24gPVxuICBsZXQgc2VwX21heCA9IGxlbmd0aCBvbiAtIDEgaW5cbiAgaWYgc2VwX21heCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZ2V4dC5yY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiBzX21heCBpblxuICAgICAgKCogV2UgcnVuIGZyb20gdGhlIGVuZCBvZiBbc10gdG8gdGhlIGJlZ2lubmluZyB3aXRoIFtpXSB0cnlpbmcgdG9cbiAgICAgICAgIG1hdGNoIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBbb25dIGluIFtzXS4gSWYgdGhpcyBtYXRjaGVzLCB3ZVxuICAgICAgICAgdmVyaWZ5IHRoYXQgdGhlIHdob2xlIFtvbl0gaXMgbWF0Y2hlZCB1c2luZyBba10gKHdlIGRvIHRoYXRcbiAgICAgICAgIGJhY2t3YXJkcykuICBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlIGNvbnRpbnVlIHRvIGxvb2sgZm9yIFtvbl1cbiAgICAgICAgIHdpdGggW2ldLiAgSWYgaXQgbWF0Y2hlcyB3ZSBleGl0IHRoZSBsb29wIGFuZCBleHRyYWN0IGFcbiAgICAgICAgIHN1YnN0cmluZyBmcm9tIHRoZSBzdGFydCBvZiBbc10gdG8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGVcbiAgICAgICAgIFtvbl0gd2UgZm91bmQgYW5kIGFub3RoZXIgZnJvbSB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIFtvbl0gd2VcbiAgICAgICAgIGZvdW5kIHRvIGVuZCBvZiBzdHJpbmcuICBJZiBbaV0gaXMgc3VjaCB0aGF0IG5vIHNlcGFyYXRvciBjYW5cbiAgICAgICAgIGJlIGZvdW5kIHdlIGV4aXQgdGhlIGxvb3AgYW5kIHJldHVybiB0aGUgbm8gbWF0Y2ggY2FzZS4gKilcbiAgICAgIHRyeVxuICAgICAgICB3aGlsZSAoIWkgPj0gc2VwX21heCkgZG9cbiAgICAgICAgICBpZiB1bnNhZmVfZ2V0IHMgIWkgPD4gdW5zYWZlX2dldCBvbiBzZXBfbWF4IHRoZW4gZGVjciBpIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICgqIENoZWNrIHJlbWFpbmluZyBbb25dIGNoYXJzIG1hdGNoLCBhY2Nlc3MgdG8gdW5zYWZlX2dldFxuICAgICAgICAgICAgICAgcyAoc2VwX3N0YXJ0ICsgIWspIGlzIGd1YXJhbnRlZWQgYnkgbG9vcCBpbnZhcmlhbnQuICopXG4gICAgICAgICAgICBsZXQgc2VwX3N0YXJ0ID0gIWkgLSBzZXBfbWF4IGluXG4gICAgICAgICAgICBrIDo9IHNlcF9tYXggLSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrID49IDAgJiYgdW5zYWZlX2dldCBzIChzZXBfc3RhcnQgKyAhaykgPSB1bnNhZmVfZ2V0IG9uICFrKVxuICAgICAgICAgICAgZG8gZGVjciBrIGRvbmU7XG4gICAgICAgICAgICBpZiAhayA+PSAwIHRoZW4gKCogbm8gbWF0Y2ggKikgZGVjciBpIGVsc2UgcmFpc2UgRXhpdFxuICAgICAgICAgIGVuZFxuICAgICAgICBkb25lO1xuICAgICAgICBOb25lICgqIG5vIG1hdGNoIGluIHRoZSB3aG9sZSBzdHJpbmcuICopXG4gICAgICB3aXRoXG4gICAgICB8IEV4aXQgLT4gKCogaSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzZXBhcmF0b3IgKilcbiAgICAgICAgbGV0IGxlZnRfZW5kID0gIWkgLSBzZXBfbWF4IC0gMSBpblxuICAgICAgICBsZXQgcmlnaHRfc3RhcnQgPSAhaSArIDEgaW5cbiAgICAgICAgU29tZSAoc3ViIHMgMCAobGVmdF9lbmQgKyAxKSxcbiAgICAgICAgICAgICAgc3ViIHMgcmlnaHRfc3RhcnQgKHNfbWF4IC0gcmlnaHRfc3RhcnQgKyAxKSlcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGxldCBwcmVmaXhfbCA9IFN0cmluZy5sZW5ndGggcHJlZml4IGluXG4gIGxldCBzdHJpbmdfbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBwcmVmaXhfbCA+IHN0cmluZ19sIHRoZW4gTm9uZVxuICBlbHNlXG4gICAgdHJ5XG4gICAgICBmb3IgaSA9IDAgdG8gcHJlZml4X2wgLSAxIGRvXG4gICAgICAgIGlmIHMuW2ldIDw+IHByZWZpeC5baV0gdGhlbiByYWlzZSBFeGl0O1xuICAgICAgZG9uZTtcbiAgICAgIFNvbWUgKFN0cmluZy5zdWIgcyBwcmVmaXhfbCAoc3RyaW5nX2wgLSBwcmVmaXhfbCkpXG4gICAgd2l0aCBfIC0+IE5vbmVcblxubGV0IGRyb3AgcyBuID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgbiA+PSBsXG4gIHRoZW4gXCJcIlxuICBlbHNlIFN0cmluZy5zdWIgcyBuIChsIC0gbilcblxubGV0IHRha2UgcyBuID1cbiAgaWYgbiA+PSBTdHJpbmcubGVuZ3RoIHNcbiAgdGhlbiBzXG4gIGVsc2UgU3RyaW5nLnN1YiBzIDAgblxuIiwidHlwZSBiaWdzdHJpbmcgPVxuICAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG50eXBlIHQgPSBiaWdzdHJpbmdcblxubGV0IGNyZWF0ZSBzaXplID0gQmlnYXJyYXkuKEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBzaXplKVxubGV0IGVtcHR5ICAgICAgID0gY3JlYXRlIDBcblxubW9kdWxlIEJBMSA9IEJpZ2FycmF5LkFycmF5MVxuXG5sZXQgbGVuZ3RoIHQgPSBCQTEuZGltIHRcblxuZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhciA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBjaGFyICAgICAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCAgICAgICAgICAgIDogdCAgICAgICAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF90b19ieXRlcyAgIDogdCAgICAgICAtPiBzcmNfb2ZmOmludCAtPiBCeXRlcy50IC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1wiICAgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mcm9tX2J5dGVzIDogQnl0ZXMudCAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXCIgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBzcmNfb2ZmOmludCAtPiB0ICAgICAgIC0+IGRzdF9vZmY6aW50IC0+IGxlbjppbnQgLT4gdW5pdCA9XG4gIFwiYmlnc3RyaW5nYWZfYmxpdF9mcm9tX2J5dGVzXCIgICBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wIDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfc3RyaW5nIDogdCAtPiBpbnQgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNociA6IHQgLT4gaW50IC0+IGNoYXIgLT4gaW50IC0+IGludCA9XG4gIFwiYmlnc3RyaW5nYWZfbWVtY2hyXCIgW0BAbm9hbGxvY11cblxubGV0IHN1YiB0IH5vZmYgfmxlbiA9XG4gIEJBMS5zdWIgdCBvZmYgbGVuXG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kcyBvcCBidWZmZXJfbGVuIG9mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IGJ1ZmZlcl9sZW46ICVkLCBvZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzX2JsaXQgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW4gPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgUHJpbnRmLnNwcmludGYgXCJCaWdzdHJpbmdhZi4lcyBpbnZhbGlkIHJhbmdlOiB7IHNyY19sZW46ICVkLCBzcmNfb2ZmOiAlZCwgZHN0X2xlbjogJWQsIGRzdF9vZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfbWVtY21wIG9wIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmMV9sZW46ICVkLCBidWYxX29mZjogJWQsIGJ1ZjJfbGVuOiAlZCwgYnVmMl9vZmY6ICVkLCBsZW46ICVkIH1cIlxuICAgIG9wIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlblxuICBpblxuICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBtZXNzYWdlKVxuOztcblxuKCogQSBub3RlIG9uIGJvdW5kcyBjaGVja2luZy5cbiAqXG4gKiBUaGUgY29kZSBzaG91bGQgcGVyZm9ybSB0aGUgZm9sbG93aW5nIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBibGl0IGRvZXNuJ3RcbiAqIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyOlxuICpcbiAqICAge1tvZmYgKyBsZW4gPD0gYnVmZmVyX2xlbl19XG4gKlxuICogSG93ZXZlciwgdGhpcyBtYXkgbGVhZCB0byBhbiBpbnRlZ2VyIG92ZXJmbG93IGZvciBsYXJnZSB2YWx1ZXMgb2YgW29mZl0sXG4gKiBlLmcuLCBbbWF4X2ludF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGNvbXBhcmlzb24gdG8gcmV0dXJuIFt0cnVlXSB3aGVuIGl0XG4gKiBzaG91bGQgcmVhbGx5IHJldHVybiBbZmFsc2VdLlxuICpcbiAqIEFuIGVxdWl2YWxlbnQgY29tcGFyaXNvbiB0aGF0IGRvZXMgbm90IHJ1biBpbnRvIHRoaXMgaW50ZWdlciBvdmVyZmxvd1xuICogcHJvYmxlbSBpczpcbiAqXG4gKiAgIHtbYnVmZmVyX2xlbiAtIG9mZiA9PiBsZW5dfVxuICpcbiAqIFRoaXMgaXMgY2hlY2tpbmcgdGhhdCB0aGUgaW5wdXQgYnVmZmVyLCBsZXNzIHRoZSBvZmZzZXQsIGlzIHN1ZmZpY2llbnRseVxuICogbG9uZyB0byBwZXJmb3JtIHRoZSBibGl0LiBTaW5jZSB0aGUgZXhwcmVzc2lvbiBpcyBzdWJ0cmFjdGluZyBbb2ZmXSByYXRoZXJcbiAqIHRoYW4gYWRkaW5nIGl0LCBpdCBkb2Vzbid0IHN1ZmZlciBmcm9tIHRoZSBvdmVyZmxvdyB0aGF0IHRoZSBwcmV2aW91c1xuICogaW5lcXVhbGl0eSBkaWQuIEFzIGxvbmcgYXMgdGhlcmUgaXMgYSBjaGVjayB0byBlbnN1cmUgdGhhdCBbb2ZmXSBpcyBub3RcbiAqIG5lZ2F0aXZlLCBpdCB3b24ndCB1bmRlcmZsb3cgZWl0aGVyLiAqKVxuXG5sZXQgY29weSB0IH5vZmYgfmxlbiA9XG4gIGxldCBidWZmZXJfbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcImNvcHlcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBkc3QgPSBjcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0IHQgfnNyY19vZmY6b2ZmIGRzdCB+ZHN0X29mZjowIH5sZW47XG4gIGRzdFxuOztcblxubGV0IHN1YnN0cmluZyB0IH5vZmYgfmxlbiA9XG4gIGxldCBidWZmZXJfbGVuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuIDwgMCB8fCBvZmYgPCAwIHx8IGJ1ZmZlcl9sZW4gLSBvZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcInN1YnN0cmluZ1wiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHQgfnNyY19vZmY6b2ZmIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJcbjs7XG5cbmxldCB0b19zdHJpbmcgdCA9XG4gIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjowIGIgfmRzdF9vZmY6MCB+bGVuO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJcbjs7XG5cbmxldCBvZl9zdHJpbmcgfm9mZiB+bGVuIHMgPVxuICBsZXQgYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwib2Zfc3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgcyB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIGJcbjs7XG5cbmxldCBibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gbGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdCBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fc3RyaW5nIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gU3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBsZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF9mcm9tX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlbiA9XG4gIGxldCBzcmNfbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gQnl0ZXMubGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X3RvX2J5dGVzIHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IG1lbWNtcCBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuID1cbiAgbGV0IGJ1ZjFfbGVuID0gbGVuZ3RoIGJ1ZjEgaW5cbiAgbGV0IGJ1ZjJfbGVuID0gbGVuZ3RoIGJ1ZjIgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjJfb2ZmIDwgMCB8fCBidWYyX2xlbiAtIGJ1ZjJfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBTdHJpbmcubGVuZ3RoIGJ1ZjIgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIGlmIGJ1ZjFfb2ZmIDwgMCB8fCBidWYxX2xlbiAtIGJ1ZjFfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICB1bnNhZmVfbWVtY21wX3N0cmluZyBidWYxIGJ1ZjFfb2ZmIGJ1ZjIgYnVmMl9vZmYgbGVuXG47O1xuXG5sZXQgbWVtY2hyIGJ1ZiBidWZfb2ZmIGNociBsZW4gPVxuICBsZXQgYnVmX2xlbiA9IGxlbmd0aCBidWYgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgaWYgYnVmX29mZiA8IDAgfHwgYnVmX2xlbiAtIGJ1Zl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kcyBcIm1lbWNoclwiIGJ1Zl9sZW4gYnVmX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlblxuXG4oKiBTYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjRcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMyXCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NFwiXG5cbm1vZHVsZSBTd2FwID0gc3RydWN0XG4gIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG4gIGV4dGVybmFsIGJzd2FwX2ludDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8xNiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgKGJzd2FwX2ludDMyIGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiAoYnN3YXBfaW50NjQgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IGJzIG9mZiA9XG4gICAgYnN3YXAxNiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZiA9XG4gICAgYnN3YXBfaW50MzIgKGNhbWxfYmlnc3RyaW5nX2dldF8zMiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ19nZXRfNjQgYnMgb2ZmKVxuXG4gIGxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZCB4IG9mZiA9XG4gICAgKChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuZW5kXG5cbmxldCBzZXRfaW50MTZfbGUsIHNldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8xNiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNlxuXG5sZXQgc2V0X2ludDMyX2xlLCBzZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzMyLCBjYW1sX2JpZ3N0cmluZ19zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzJcblxubGV0IHNldF9pbnQ2NF9sZSwgc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF82NCwgY2FtbF9iaWdzdHJpbmdfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzY0ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0XG5cbmxldCBnZXRfaW50MTZfbGUsIGdldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMTYsIGNhbWxfYmlnc3RyaW5nX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNlxuXG5sZXQgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwIHggb2ZmID1cbiAgKChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgICAgICB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkICAsIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcFxuICBlbHNlIGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCwgU3dhcC5nZXRfaW50MTZfc2lnbl9leHRlbmRlZFxuXG5sZXQgZ2V0X2ludDMyX2xlLCBnZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzMyLCBjYW1sX2JpZ3N0cmluZ19nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzJcblxubGV0IGdldF9pbnQ2NF9sZSwgZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF82NCwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0XG5cbigqIFVuc2FmZSBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuXG5tb2R1bGUgVVN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiBicyBvZmYgKGJzd2FwMTYgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiBicyBvZmYgKGJzd2FwX2ludDMyIGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgYnMgb2ZmIGkgPVxuICAgIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZiA9XG4gICAgYnN3YXAxNiAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQ2NCAoY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYpXG5lbmRcblxubGV0IHVuc2FmZV9zZXRfaW50MTZfbGUsIHVuc2FmZV9zZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlLCB1bnNhZmVfc2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyLCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMlxuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSwgdW5zYWZlX3NldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjRcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfbGUsIHVuc2FmZV9nZXRfaW50MTZfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2ICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2XG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfbGUgeCBvZmYpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlIHggb2ZmID1cbiAgKCh1bnNhZmVfZ2V0X2ludDE2X2JlIHggb2ZmICkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlLCB1bnNhZmVfZ2V0X2ludDMyX2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyLCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSwgdW5zYWZlX2dldF9pbnQ2NF9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjRcbiIsInR5cGUgJ2Egc3RhdGUgPVxuICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICB8IERvbmUgICAgb2YgaW50ICogJ2FcbiAgfCBGYWlsICAgIG9mIGludCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbmFuZCAnYSBwYXJ0aWFsID1cbiAgeyBjb21taXR0ZWQgOiBpbnRcbiAgOyBjb250aW51ZSAgOiBCaWdzdHJpbmdhZi50IC0+IG9mZjppbnQgLT4gbGVuOmludCAtPiBNb3JlLnQgLT4gJ2Egc3RhdGUgfVxuXG5cbmxldCBzdGF0ZV90b19vcHRpb24geCA9IG1hdGNoIHggd2l0aFxuICB8IERvbmUoXywgdikgLT4gU29tZSB2XG4gIHwgRmFpbCBfICAgICAtPiBOb25lXG4gIHwgUGFydGlhbCBfICAtPiBOb25lXG5cbmxldCBmYWlsX3RvX3N0cmluZyBtYXJrcyBlcnIgPVxuICBTdHJpbmcuY29uY2F0IFwiID4gXCIgbWFya3MgXiBcIjogXCIgXiBlcnJcblxubGV0IHN0YXRlX3RvX3Jlc3VsdCB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAgICAgICAgICAtPiBPayB2XG4gIHwgUGFydGlhbCBfICAgICAgICAgICAtPiBFcnJvciBcImluY29tcGxldGUgaW5wdXRcIlxuICB8IEZhaWwoXywgbWFya3MsIGVycikgLT4gRXJyb3IgKGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVycilcbiIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxudHlwZSB0ID1cbiAgeyBtdXRhYmxlIHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgOiBpbnRcbiAgOyBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgICAgICAgOiBpbnRcbiAgOyBvZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRcbiAgOyBsZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnRcbiAgOyBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgOiBCaWdzdHJpbmdhZi50XG4gIH1cblxubGV0IGNyZWF0ZSBidWZmZXIgfm9mZiB+bGVuIH5jb21taXR0ZWRfYnl0ZXMgPVxuICB7IHBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBjbGllbnRfY29tbWl0dGVkX2J5dGVzID0gY29tbWl0dGVkX2J5dGVzXG4gIDsgb2ZmXG4gIDsgbGVuXG4gIDsgYnVmZmVyIH1cblxubGV0IGxlbmd0aCAgICAgICAgICAgICAgICAgdCA9IHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyArIHQubGVuXG5sZXQgY2xpZW50X2NvbW1pdHRlZF9ieXRlcyB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzXG5cbmxldCBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdCA9IHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xubGV0IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0ICB0ID0gY29tbWl0dGVkX2J5dGVzX2Rpc2NyZXBhbmN5IHRcblxubGV0IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0ID0gdC5sZW4gLSBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCB0XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIGFzc2VydCAocGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0ICsgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSBsZW5ndGggdCk7XG4gIGFzc2VydCAocGFyc2VyX2NvbW1pdHRlZF9ieXRlcyB0IC0gY2xpZW50X2NvbW1pdHRlZF9ieXRlcyAgIHQgPSBieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCB0KTtcbjs7XG5cbmxldCBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zID1cbiAgdC5vZmYgKyBwb3MgLSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGFwcGx5IHQgcG9zIGxlbiB+ZiA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIGYgdC5idWZmZXIgfm9mZiB+bGVuXG5cbmxldCB1bnNhZmVfZ2V0X2NoYXIgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgY291bnRfd2hpbGUgdCBwb3MgfmYgPVxuICBsZXQgYnVmZmVyID0gdC5idWZmZXIgaW5cbiAgbGV0IG9mZiAgICA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgbGV0IGkgICAgICA9IHJlZiBvZmYgaW5cbiAgbGV0IGxpbWl0ICA9IHQub2ZmICsgdC5sZW4gaW5cbiAgd2hpbGUgIWkgPCBsaW1pdCAmJiBmIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IGJ1ZmZlciAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgIWkgLSBvZmZcbjs7XG5cbmxldCBjb21taXQgdCBwb3MgPVxuICB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgPC0gcG9zXG47O1xuIiwibW9kdWxlIFN0YXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBQYXJ0aWFsIG9mICdhIHBhcnRpYWxcbiAgICB8IExhenkgICAgb2YgJ2EgdCBMYXp5LnRcbiAgICB8IERvbmUgICAgb2YgaW50ICogJ2FcbiAgICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuICBhbmQgJ2EgcGFydGlhbCA9XG4gICAgeyBjb21taXR0ZWQgOiBpbnRcbiAgICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSB0IH1cblxuZW5kXG50eXBlICdhIHdpdGhfc3RhdGUgPSBJbnB1dC50IC0+ICBpbnQgLT4gTW9yZS50IC0+ICdhXG5cbnR5cGUgJ2EgZmFpbHVyZSA9IChzdHJpbmcgbGlzdCAtPiBzdHJpbmcgLT4gJ2EgU3RhdGUudCkgd2l0aF9zdGF0ZVxudHlwZSAoJ2EsICdyKSBzdWNjZXNzID0gKCdhIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGVcblxudHlwZSAnYSB0ID1cbiAgeyBydW4gOiAnci4gKCdyIGZhaWx1cmUgLT4gKCdhLCAncikgc3VjY2VzcyAtPiAnciBTdGF0ZS50KSB3aXRoX3N0YXRlIH1cblxubGV0IGZhaWxfayAgICBpbnB1dCBwb3MgXyBtYXJrcyBtc2cgPVxuICBTdGF0ZS5GYWlsKHBvcyAtIElucHV0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXMgaW5wdXQsIG1hcmtzLCBtc2cpXG5sZXQgc3VjY2VlZF9rIGlucHV0IHBvcyBfICAgICAgIHYgICA9XG4gIFN0YXRlLkRvbmUocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgdilcblxubGV0IHJlYyB0b19leHBvcnRlZF9zdGF0ZSA9IGZ1bmN0aW9uXG4gIHwgU3RhdGUuUGFydGlhbCB7Y29tbWl0dGVkO2NvbnRpbnVlfSAtPlxuICAgICBFeHBvcnRlZF9zdGF0ZS5QYXJ0aWFsXG4gICAgICAgeyBjb21taXR0ZWRcbiAgICAgICA7IGNvbnRpbnVlID1cbiAgICAgICAgICAgZnVuIGJzIH5vZmYgfmxlbiBtb3JlIC0+XG4gICAgICAgICAgIHRvX2V4cG9ydGVkX3N0YXRlIChjb250aW51ZSBicyB+b2ZmIH5sZW4gbW9yZSl9XG4gIHwgU3RhdGUuRG9uZSAoaSx4KSAtPiBFeHBvcnRlZF9zdGF0ZS5Eb25lIChpLHgpXG4gIHwgU3RhdGUuRmFpbCAoaSwgc2wsIHMpIC0+IEV4cG9ydGVkX3N0YXRlLkZhaWwgKGksIHNsLCBzKVxuICB8IFN0YXRlLkxhenkgeCAtPiB0b19leHBvcnRlZF9zdGF0ZSAoTGF6eS5mb3JjZSB4KVxuXG5sZXQgcGFyc2UgcCA9XG4gIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBCaWdzdHJpbmdhZi5lbXB0eSB+Y29tbWl0dGVkX2J5dGVzOjAgfm9mZjowIH5sZW46MCBpblxuICB0b19leHBvcnRlZF9zdGF0ZSAocC5ydW4gaW5wdXQgMCBJbmNvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgcCBpbnB1dCA9XG4gIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBpbnB1dCB+Y29tbWl0dGVkX2J5dGVzOjAgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBpbnB1dCkgaW5cbiAgRXhwb3J0ZWRfc3RhdGUuc3RhdGVfdG9fcmVzdWx0ICh0b19leHBvcnRlZF9zdGF0ZSAocC5ydW4gaW5wdXQgMCBDb21wbGV0ZSBmYWlsX2sgc3VjY2VlZF9rKSlcblxubW9kdWxlIE1vbmFkID0gc3RydWN0XG4gIGxldCByZXR1cm4gdiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZSB2XG4gICAgfVxuXG4gIGxldCBmYWlsIG1zZyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBfc3VjYyAtPlxuICAgICAgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBtc2dcbiAgICB9XG5cbiAgbGV0ICg+Pj0pIHAgZiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgdiA9IChmIHYpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg+PnwpIHAgZiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKGYgdikgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8JD4pIGYgbSA9XG4gICAgbSA+PnwgZlxuXG4gIGxldCAoPCo+KSBmIG0gPVxuICAgICgqIGYgPj49IGZ1biBmIC0+IG0gPj58IGYgKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMCBpbnB1dDAgcG9zMCBtb3JlMCBmID1cbiAgICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0gPSBzdWNjIGlucHV0MSBwb3MxIG1vcmUxIChmIG0pIGluXG4gICAgICAgIG0ucnVuIGlucHV0MCBwb3MwIG1vcmUwIGZhaWwgc3VjYzFcbiAgICAgIGluXG4gICAgICBmLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MwIH1cblxuICBsZXQgbGlmdCBmIG0gPVxuICAgIGYgPCQ+IG1cblxuICBsZXQgbGlmdDIgZiBtMSBtMiA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPSBzdWNjIGlucHV0MiBwb3MyIG1vcmUyIChmIG0xIG0yKSBpblxuICAgICAgICBtMi5ydW4gaW5wdXQxIHBvczEgbW9yZTEgZmFpbCBzdWNjMlxuICAgICAgaW5cbiAgICAgIG0xLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MxIH1cblxuICBsZXQgbGlmdDMgZiBtMSBtMiBtMyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbTEgPVxuICAgICAgICBsZXQgc3VjYzIgaW5wdXQyIHBvczIgbW9yZTIgbTIgPVxuICAgICAgICAgIGxldCBzdWNjMyBpbnB1dDMgcG9zMyBtb3JlMyBtMyA9XG4gICAgICAgICAgICBzdWNjIGlucHV0MyBwb3MzIG1vcmUzIChmIG0xIG0yIG0zKSBpblxuICAgICAgICAgIG0zLnJ1biBpbnB1dDIgcG9zMiBtb3JlMiBmYWlsIHN1Y2MzIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIGxldCBzdWNjNCBpbnB1dDQgcG9zNCBtb3JlNCBtNCA9XG4gICAgICAgICAgICAgIHN1Y2MgaW5wdXQ0IHBvczQgbW9yZTQgKGYgbTEgbTIgbTMgbTQpIGluXG4gICAgICAgICAgICBtNC5ydW4gaW5wdXQzIHBvczMgbW9yZTMgZmFpbCBzdWNjNCBpblxuICAgICAgICAgIG0zLnJ1biBpbnB1dDIgcG9zMiBtb3JlMiBmYWlsIHN1Y2MzIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCAoICo+KSBhIGIgPVxuICAgICgqIGEgPj49IGZ1biBfIC0+IGIgKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyBfID0gYi5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBhLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gICAgfVxuXG4gIGxldCAoPCogKSBhIGIgPVxuICAgICgqIGEgPj49IGZ1biB4IC0+IGIgPj58IGZ1biBfIC0+IHggKilcbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMCBpbnB1dDAgcG9zMCBtb3JlMCB4ID1cbiAgICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIF8gPSBzdWNjIGlucHV0MSBwb3MxIG1vcmUxIHggaW5cbiAgICAgICAgYi5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuZW5kXG5cbm1vZHVsZSBDaG9pY2UgPSBzdHJ1Y3RcbiAgbGV0ICg8Pz4pIHAgbWFyayA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgbWFya3MgbXNnID1cbiAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyAobWFyazo6bWFya3MpIG1zZyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCcgc3VjY1xuICAgIH1cblxuICBsZXQgKDx8PikgcCBxID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICAoKiBUaGUgb25seSB0d28gY29uc3RydWN0b3JzIHRoYXQgaW50cm9kdWNlIG5ldyBmYWlsdXJlIGNvbnRpbnVhdGlvbnMgYXJlXG4gICAgICAgICAqIFs8Pz5dIGFuZCBbPHw+XS4gSWYgdGhlIGluaXRpYWwgaW5wdXQgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGhcbiAgICAgICAgICogb2YgdGhlIGNvbW1pdHRlZCBpbnB1dCwgdGhlbiBjYWxsaW5nIHRoZSBmYWlsdXJlIGNvbnRpbnVhdGlvbiB3aWxsXG4gICAgICAgICAqIGhhdmUgdGhlIGVmZmVjdCBvZiB1bndpbmRpbmcgYWxsIGNob2ljZXMgYW5kIGNvbGxlY3RpbmcgbWFya3MgYWxvbmdcbiAgICAgICAgICogdGhlIHdheS4gKilcbiAgICAgICAgaWYgcG9zIDwgSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCcgdGhlblxuICAgICAgICAgIGZhaWwgaW5wdXQnIHBvcycgbW9yZSBtYXJrcyBtc2dcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHEucnVuIGlucHV0JyBwb3MgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNb25hZF91c2VfZm9yX2RlYnVnZ2luZyA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gTW9uYWQucmV0dXJuXG4gIGxldCBmYWlsICAgPSBNb25hZC5mYWlsXG4gIGxldCAoPj49KSAgPSBNb25hZC4oPj49KVxuXG4gIGxldCAoPj58KSBtIGYgPSBtID4+PSBmdW4geCAtPiByZXR1cm4gKGYgeClcblxuICBsZXQgKDwkPikgZiBtID0gbSA+PnwgZlxuICBsZXQgKDwqPikgZiBtID0gZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZlxuXG4gIGxldCBsaWZ0ICA9ICg+PnwpXG4gIGxldCBsaWZ0MiBmIG0xIG0yICAgICAgID0gZiA8JD4gbTEgPCo+IG0yXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zICAgID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtM1xuICBsZXQgbGlmdDQgZiBtMSBtMiBtMyBtNCA9IGYgPCQ+IG0xIDwqPiBtMiA8Kj4gbTMgPCo+IG00XG5cbiAgbGV0ICggKj4pIGEgYiA9IGEgPj49IGZ1biBfIC0+IGJcbiAgbGV0ICg8KiApIGEgYiA9IGEgPj49IGZ1biB4IC0+IGIgPj58IGZ1biBfIC0+IHhcbmVuZFxuIiwidHlwZSB0ID1cbiAgeyBtdXRhYmxlIGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7IG11dGFibGUgbGVuIDogaW50IH1cblxubGV0IG9mX2JpZ3N0cmluZyB+b2ZmIH5sZW4gYnVmID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoQmlnc3RyaW5nYWYubGVuZ3RoIGJ1ZiA+PSBsZW4gLSBvZmYpO1xuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG5sZXQgY3JlYXRlIGxlbiA9XG4gIG9mX2JpZ3N0cmluZyB+b2ZmOjAgfmxlbjowIChCaWdzdHJpbmdhZi5jcmVhdGUgbGVuKVxuXG5sZXQgd3JpdGFibGVfc3BhY2UgdCA9XG4gIEJpZ3N0cmluZ2FmLmxlbmd0aCB0LmJ1ZiAtIHQubGVuXG5cbmxldCB0cmFpbGluZ19zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gKHQub2ZmICsgdC5sZW4pXG5cbmxldCBjb21wcmVzcyB0ID1cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXQgdC5idWYgfnNyY19vZmY6dC5vZmYgdC5idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBncm93IHQgdG9fY29weSA9XG4gIGxldCBvbGRfbGVuID0gQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgbGV0IHNwYWNlID0gd3JpdGFibGVfc3BhY2UgdCBpblxuICB3aGlsZSBzcGFjZSArICFuZXdfbGVuIC0gb2xkX2xlbiA8IHRvX2NvcHkgZG9cbiAgICBuZXdfbGVuIDo9ICgzICogIW5ld19sZW4pIC8gMlxuICBkb25lO1xuICBsZXQgbmV3X2J1ZiA9IEJpZ3N0cmluZ2FmLmNyZWF0ZSAhbmV3X2xlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiBuZXdfYnVmIH5kc3Rfb2ZmOjAgfmxlbjp0LmxlbjtcbiAgdC5idWYgPC0gbmV3X2J1ZjtcbiAgdC5vZmYgPC0gMFxuXG5sZXQgZW5zdXJlIHQgdG9fY29weSA9XG4gIGlmIHRyYWlsaW5nX3NwYWNlIHQgPCB0b19jb3B5IHRoZW5cbiAgICBpZiB3cml0YWJsZV9zcGFjZSB0ID49IHRvX2NvcHlcbiAgICB0aGVuIGNvbXByZXNzIHRcbiAgICBlbHNlIGdyb3cgdCB0b19jb3B5XG5cbmxldCB3cml0ZV9wb3MgdCA9XG4gIHQub2ZmICsgdC5sZW5cblxubGV0IGZlZWRfc3RyaW5nIHQgfm9mZiB+bGVuIHN0ciA9XG4gIGFzc2VydCAob2ZmID49IDApO1xuICBhc3NlcnQgKFN0cmluZy5sZW5ndGggc3RyID49IGxlbiAtIG9mZik7XG4gIGVuc3VyZSB0IGxlbjtcbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgc3RyIH5zcmNfb2ZmOm9mZiB0LmJ1ZiB+ZHN0X29mZjood3JpdGVfcG9zIHQpIH5sZW47XG4gIHQubGVuIDwtIHQubGVuICsgbGVuXG5cbmxldCBmZWVkX2JpZ3N0cmluZyB0IH5vZmYgfmxlbiBiID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoQmlnc3RyaW5nYWYubGVuZ3RoIGIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCBiIH5zcmNfb2ZmOm9mZiB0LmJ1ZiB+ZHN0X29mZjood3JpdGVfcG9zIHQpIH5sZW47XG4gIHQubGVuIDwtIHQubGVuICsgbGVuXG5cbmxldCBmZWVkX2lucHV0IHQgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgICAgcyAtPiBmZWVkX3N0cmluZyAgICB0IH5vZmY6MCB+bGVuOihTdHJpbmcgICAgIC5sZW5ndGggcykgc1xuICB8IGBCaWdzdHJpbmcgYiAtPiBmZWVkX2JpZ3N0cmluZyB0IH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggYikgYlxuXG5sZXQgc2hpZnQgdCBuID1cbiAgYXNzZXJ0ICh0LmxlbiA+PSBuKTtcbiAgdC5vZmYgPC0gdC5vZmYgKyBuO1xuICB0LmxlbiA8LSB0LmxlbiAtIG5cblxubGV0IGZvcl9yZWFkaW5nIHsgYnVmOyBvZmY7IGxlbiB9ID1cbiAgQmlnc3RyaW5nYWYuc3ViIH5vZmYgfmxlbiBidWZcblxubW9kdWxlIFVuY29uc3VtZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cbmVuZFxuXG5sZXQgdW5jb25zdW1lZCA/KHNoaWZ0PTApIHsgYnVmOyBvZmY7IGxlbiB9ID1cbiAgYXNzZXJ0IChsZW4gPj0gc2hpZnQpO1xuICB7IFVuY29uc3VtZWQuYnVmOyBvZmYgPSBvZmYgKyBzaGlmdDsgbGVuID0gbGVuIC0gc2hpZnQgfVxuXG5sZXQgb2ZfdW5jb25zdW1lZCB7IFVuY29uc3VtZWQuYnVmOyBvZmY7IGxlbiB9ID1cbiAgeyBidWY7IG9mZjsgbGVuIH1cblxudHlwZSB1bmNvbnN1bWVkID0gVW5jb25zdW1lZC50ID1cbiAgeyBidWYgOiBCaWdzdHJpbmdhZi50XG4gIDsgb2ZmIDogaW50XG4gIDsgbGVuIDogaW50IH1cbiIsIigqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNiBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxubW9kdWxlIEJpZ2FycmF5ID0gc3RydWN0XG4gICgqIERvIG5vdCBhY2Nlc3MgQmlnYXJyYXkgb3BlcmF0aW9ucyBkaXJlY3RseS4gSWYgYW55dGhpbmcncyBuZWVkZWQsIHJlZmVyIHRvXG4gICAqIHRoZSBpbnRlcm5hbCBCaWdzdHJpbmcgbW9kdWxlLiAqKVxuZW5kXG5cbnR5cGUgYmlnc3RyaW5nID0gQmlnc3RyaW5nYWYudFxuXG5cbm1vZHVsZSBVbmJ1ZmZlcmVkID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyc2VyXG5cbiAgaW5jbHVkZSBFeHBvcnRlZF9zdGF0ZVxuXG4gIHR5cGUgbW9yZSA9IE1vcmUudCA9XG4gICAgfCBDb21wbGV0ZVxuICAgIHwgSW5jb21wbGV0ZVxuZW5kXG5cbmluY2x1ZGUgVW5idWZmZXJlZFxuaW5jbHVkZSBQYXJzZXIuTW9uYWRcbmluY2x1ZGUgUGFyc2VyLkNob2ljZVxuXG5tb2R1bGUgQnVmZmVyZWQgPSBzdHJ1Y3RcbiAgdHlwZSB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgPVxuICAgIHsgYnVmIDogYmlnc3RyaW5nXG4gICAgOyBvZmYgOiBpbnRcbiAgICA7IGxlbiA6IGludCB9XG5cbiAgdHlwZSBpbnB1dCA9XG4gICAgWyBgQmlnc3RyaW5nIG9mIGJpZ3N0cmluZ1xuICAgIHwgYFN0cmluZyAgICBvZiBzdHJpbmcgXVxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUGFydGlhbCBvZiAoWyBpbnB1dCB8IGBFb2YgXSAtPiAnYSBzdGF0ZSlcbiAgICB8IERvbmUgICAgb2YgdW5jb25zdW1lZCAqICdhXG4gICAgfCBGYWlsICAgIG9mIHVuY29uc3VtZWQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGxldCBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgfmYgYnVmZmVyaW5nID0gZnVuY3Rpb25cbiAgICB8IFVuYnVmZmVyZWQuUGFydGlhbCBwICAgICAgICAgLT4gUGFydGlhbCAoZiBwKVxuICAgIHwgVW5idWZmZXJlZC5Eb25lKGNvbnN1bWVkLCB2KSAtPlxuICAgICAgbGV0IHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCB+c2hpZnQ6Y29uc3VtZWQgYnVmZmVyaW5nIGluXG4gICAgICBEb25lKHVuY29uc3VtZWQsIHYpXG4gICAgfCBVbmJ1ZmZlcmVkLkZhaWwoY29uc3VtZWQsIG1hcmtzLCBtc2cpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZylcblxuICBsZXQgcGFyc2UgPyhpbml0aWFsX2J1ZmZlcl9zaXplPTB4MTAwMCkgcCA9XG4gICAgaWYgaW5pdGlhbF9idWZmZXJfc2l6ZSA8IDEgdGhlblxuICAgICAgZmFpbHdpdGggXCJwYXJzZTogaW52YWxpZCBhcmd1bWVudCwgaW5pdGlhbF9idWZmZXJfc2l6ZSA8IDFcIjtcbiAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLmNyZWF0ZSBpbml0aWFsX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IHJlYyBmIHAgaW5wdXQgPVxuICAgICAgQnVmZmVyaW5nLnNoaWZ0IGJ1ZmZlcmluZyBwLmNvbW1pdHRlZDtcbiAgICAgIGxldCBtb3JlIDogTW9yZS50ID1cbiAgICAgICAgbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICB8IGBFb2YgICAgICAgICAgICAtPiBDb21wbGV0ZVxuICAgICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgICBJbmNvbXBsZXRlXG4gICAgICBpblxuICAgICAgbGV0IGZvcl9yZWFkaW5nID0gQnVmZmVyaW5nLmZvcl9yZWFkaW5nIGJ1ZmZlcmluZyBpblxuICAgICAgcC5jb250aW51ZSBmb3JfcmVhZGluZyB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGZvcl9yZWFkaW5nKSBtb3JlXG4gICAgICB8PiBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgYnVmZmVyaW5nIH5mXG4gICAgaW5cbiAgICBVbmJ1ZmZlcmVkLnBhcnNlIHBcbiAgICB8PiBmcm9tX3VuYnVmZmVyZWRfc3RhdGUgYnVmZmVyaW5nIH5mXG5cbiAgbGV0IGZlZWQgc3RhdGUgaW5wdXQgPVxuICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICB8IFBhcnRpYWwgayAtPiBrIGlucHV0XG4gICAgfCBGYWlsKHVuY29uc3VtZWQsIG1hcmtzLCBtc2cpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBGYWlsKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgbWFya3MsIG1zZylcbiAgICAgIGVuZFxuICAgIHwgRG9uZSh1bmNvbnN1bWVkLCB2KSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgfCBgRW9mICAgLT4gc3RhdGVcbiAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcub2ZfdW5jb25zdW1lZCB1bmNvbnN1bWVkIGluXG4gICAgICAgIEJ1ZmZlcmluZy5mZWVkX2lucHV0IGJ1ZmZlcmluZyBpbnB1dDtcbiAgICAgICAgRG9uZShCdWZmZXJpbmcudW5jb25zdW1lZCBidWZmZXJpbmcsIHYpXG4gICAgICBlbmRcblxuICBsZXQgc3RhdGVfdG9fb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IERvbmUoXywgdikgLT4gU29tZSB2XG4gICAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcbiAgICB8IEZhaWwgXyAgICAgLT4gTm9uZVxuXG4gIGxldCBzdGF0ZV90b19yZXN1bHQgPSBmdW5jdGlvblxuICAgIHwgUGFydGlhbCBfICAgICAgICAgICAtPiBFcnJvciBcImluY29tcGxldGUgaW5wdXRcIlxuICAgIHwgRG9uZShfLCB2KSAgICAgICAgICAtPiBPayB2XG4gICAgfCBGYWlsKF8sIG1hcmtzLCBtc2cpIC0+IEVycm9yIChVbmJ1ZmZlcmVkLmZhaWxfdG9fc3RyaW5nIG1hcmtzIG1zZylcblxuICBsZXQgc3RhdGVfdG9fdW5jb25zdW1lZCA9IGZ1bmN0aW9uXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIF8pXG4gICAgfCBGYWlsKHVuY29uc3VtZWQsIF8sIF8pIC0+IFNvbWUgdW5jb25zdW1lZFxuICAgIHwgUGFydGlhbCBfICAgICAgICAgICAgICAtPiBOb25lXG5cbmVuZFxuXG4oKiogQkVHSU46IGdldHRpbmcgaW5wdXQgKilcblxubGV0IHJlYyBwcm9tcHQgaW5wdXQgcG9zIGZhaWwgc3VjYyA9XG4gICgqIFtwcm9tcHRdIHNob3VsZCBvbmx5IGNhbGwgW3N1Y2NdIGlmIGl0IGhhcyByZWNlaXZlZCBtb3JlIGlucHV0LiBJZiB0aGVyZVxuICAgKiBpcyBubyBjaGFuY2UgdGhhdCB0aGUgaW5wdXQgd2lsbCBncm93LCBpLmUuLCBbbW9yZSA9IENvbXBsZXRlXSwgdGhlblxuICAgKiBbcHJvbXB0XSBzaG91bGQgY2FsbCBbZmFpbF0uIE90aGVyd2lzZSAoaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGlucHV0XG4gICAqIGhhc24ndCBncm93biBidXQgW21vcmUgPSBJbmNvbXBsZXRlXSBqdXN0IHByb21wdCBhZ2Fpbi4gKilcbiAgbGV0IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyA9IElucHV0LnBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyBpbnB1dCBpblxuICBsZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAgID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyAgIGlucHV0IGluXG4gICgqIFRoZSBjb250aW51YXRpb24gc2hvdWxkIG5vdCBob2xkIGFueSByZWZlcmVuY2VzIHRvIGlucHV0IGFib3ZlLiAqKVxuICBsZXQgY29udGludWUgaW5wdXQgfm9mZiB+bGVuIG1vcmUgPVxuICAgIGlmIGxlbiA8IHBhcnNlcl91bmNvbW1pdHRlZF9ieXRlcyB0aGVuXG4gICAgICBmYWlsd2l0aCBcInByb21wdDogaW5wdXQgc2hydW5rIVwiO1xuICAgIGxldCBpbnB1dCA9IElucHV0LmNyZWF0ZSBpbnB1dCB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlczpwYXJzZXJfY29tbWl0dGVkX2J5dGVzIGluXG4gICAgaWYgbGVuID0gcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIG1hdGNoIChtb3JlIDogTW9yZS50KSB3aXRoXG4gICAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgTW9yZS5Db21wbGV0ZVxuICAgICAgfCBJbmNvbXBsZXRlIC0+IHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjXG4gICAgZWxzZVxuICAgICAgc3VjYyBpbnB1dCBwb3MgbW9yZVxuICBpblxuICBTdGF0ZS5QYXJ0aWFsIHsgY29tbWl0dGVkID0gSW5wdXQuYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgaW5wdXQ7IGNvbnRpbnVlIH1cblxubGV0IGRlbWFuZF9pbnB1dCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIChtb3JlIDogTW9yZS50KSB3aXRoXG4gICAgfCBDb21wbGV0ZSAgIC0+IGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJub3QgZW5vdWdoIGlucHV0XCJcbiAgICB8IEluY29tcGxldGUgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9IHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKClcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9IGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJub3QgZW5vdWdoIGlucHV0XCIgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5zdXJlX3N1c3BlbmRlZCBuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyA9XG4gIGxldCByZWMgZ28gPVxuICAgIHsgcnVuID0gZnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwnIHN1Y2MnIC0+XG4gICAgICBpZiBwb3MnICsgbiA8PSBJbnB1dC5sZW5ndGggaW5wdXQnIHRoZW5cbiAgICAgICAgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKClcbiAgICAgIGVsc2VcbiAgICAgICAgKGRlbWFuZF9pbnB1dCAqPiBnbykucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwnIHN1Y2MnXG4gICAgfVxuICBpblxuICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjXG5cbmxldCB1bnNhZmVfYXBwbHkgbGVuIH5mID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+ZilcbiAgfVxuXG5sZXQgdW5zYWZlX2FwcGx5X29wdCBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBtYXRjaCBJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mIHdpdGhcbiAgICB8IEVycm9yIGUgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBlXG4gICAgfCBPayAgICB4IC0+IHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSB4XG4gIH1cblxubGV0IGVuc3VyZSBuIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dFxuICAgIHRoZW4gcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID0gcC5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbigqKiBFTkQ6IGdldHRpbmcgaW5wdXQgKilcblxubGV0IGF0X2VuZF9vZl9pbnB1dCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF8gc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIGZhbHNlXG4gICAgZWxzZSBtYXRjaCBtb3JlIHdpdGhcbiAgICB8IENvbXBsZXRlIC0+IHN1Y2MgaW5wdXQgcG9zIG1vcmUgdHJ1ZVxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBmYWxzZVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyB0cnVlIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IGVuZF9vZl9pbnB1dCA9XG4gIGF0X2VuZF9vZl9pbnB1dFxuICA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgIC0+IHJldHVybiAoKVxuICAgIHwgZmFsc2UgLT4gZmFpbCBcImVuZF9vZl9pbnB1dFwiXG5cbmxldCBhZHZhbmNlIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJhZHZhbmNlXCJcbiAgZWxzZVxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCAocG9zICsgbikgbW9yZSAoKSB9XG4gICAgaW5cbiAgICBlbnN1cmUgbiBwXG5cbmxldCBwb3MgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+IHN1Y2MgaW5wdXQgcG9zIG1vcmUgcG9zIH1cblxubGV0IGF2YWlsYWJsZSA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBzdWNjIGlucHV0IHBvcyBtb3JlIChJbnB1dC5sZW5ndGggaW5wdXQgLSBwb3MpXG4gIH1cblxubGV0IGNvbW1pdCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICBJbnB1dC5jb21taXQgaW5wdXQgcG9zO1xuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKCkgfVxuXG4oKiBEbyBub3QgdXNlIHRoaXMgaWYgW3BdIGNvbnRhaW5zIGEgW2NvbW1pdF0uICopXG5sZXQgdW5zYWZlX2xvb2thaGVhZCBwID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN1Y2MnIGlucHV0JyBfIG1vcmUnIHYgPSBzdWNjIGlucHV0JyBwb3MgbW9yZScgdiBpblxuICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgcGVla19jaGFyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIChTb21lIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSlcbiAgICBlbHNlIGlmIG1vcmUgPSBDb21wbGV0ZSB0aGVuXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIChTb21lIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycpKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyBOb25lIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxuKCogVGhpcyBwYXJzZXIgaXMgdG9vIGltcG9ydGFudCB0byBub3QgYmUgb3B0aW1pemVkLiBEbyBhIGN1c3RvbSBqb2IuICopXG5sZXQgcmVjIHBlZWtfY2hhcl9mYWlsID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBzdWNjIGlucHV0IHBvcyBtb3JlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9XG4gICAgICAgIHBlZWtfY2hhcl9mYWlsLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IHNhdGlzZnkgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyA8IElucHV0Lmxlbmd0aCBpbnB1dCB0aGVuXG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIGlmIGYgY1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0IHBvcyBtb3JlIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKSA9XG4gICAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0JyBwb3MnIGluXG4gICAgICAgIGlmIGYgY1xuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQnIChwb3MnICsgMSkgbW9yZScgY1xuICAgICAgICBlbHNlIFByaW50Zi5rc3ByaW50ZiAoZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSkgXCJzYXRpc2Z5OiAlQ1wiIGNcbiAgICAgIGluXG4gICAgICBlbnN1cmVfc3VzcGVuZGVkIDEgaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBjaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBpZiBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zID0gY1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGNcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJjaGFyICVDXCIgYykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBub3RfY2hhciBjID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMnID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgYyA8PiBjJ1xuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlIGMnXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwibm90IGNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV9jaGFyID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpICB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGludDggaSA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKSBpblxuICAgICAgaWYgYyA9IGkgbGFuZCAweGZmXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImludDggJWRcIiBpKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV91aW50OCA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYyA9IElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgaW5cbiAgICAgIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKENoYXIuY29kZSBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IGFueV9pbnQ4ID1cbiAgKCogaHR0cHM6Ly9ncmFwaGljcy5zdGFuZm9yZC5lZHUvfnNlYW5kZXIvYml0aGFja3MuaHRtbCNWYXJpYWJsZVNpZ25FeHRlbmRSaXNreSAqKVxuICBsZXQgcyA9IFN5cy5pbnRfc2l6ZSAtIDggaW5cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoKENoYXIuY29kZSBjIGxzbCBzKSBhc3IgcykgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCBza2lwIGYgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBpZiBmIChJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zKVxuICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgpXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJza2lwXCIgfVxuICBpblxuICBlbnN1cmUgMSBwXG5cbmxldCByZWMgY291bnRfd2hpbGUgfmluaXQgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgKHBvcyArIGluaXQpIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgbGV0IGluaXQnICAgICAgID0gaW5pdCArIGxlbiBpblxuICAgICgqIENoZWNrIGlmIHRoZSBsb29wIHRlcm1pbmF0ZWQgYmVjYXVzZSBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGlucHV0XG4gICAgICogYnVmZmVyLiBJZiBzbywgdGhlbiBwcm9tcHQgZm9yIGFkZGl0aW9uYWwgaW5wdXQgYW5kIGNvbnRpbnVlLiAqKVxuICAgIGlmIHBvcyArIGluaXQnIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgaW5pdCcpIG1vcmUgKElucHV0LmFwcGx5IGlucHV0IHBvcyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAoY291bnRfd2hpbGUgfmluaXQ6aW5pdCcgfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGluaXQnKSBtb3JlJyAoSW5wdXQuYXBwbHkgaW5wdXQnIHBvcycgaW5pdCcgfmY6d2l0aF9idWZmZXIpXG4gICAgICBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCByZWMgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlciA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBsZW4gICAgICAgICA9IElucHV0LmNvdW50X3doaWxlIGlucHV0IHBvcyB+ZiBpblxuICAgIGxldCBpbnB1dF9sZW4gICA9IElucHV0Lmxlbmd0aCBpbnB1dCBpblxuICAgICgqIENoZWNrIGlmIHRoZSBsb29wIHRlcm1pbmF0ZWQgYmVjYXVzZSBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGlucHV0XG4gICAgICogYnVmZmVyLiBJZiBzbywgdGhlbiBwcm9tcHQgZm9yIGFkZGl0aW9uYWwgaW5wdXQgYW5kIGNvbnRpbnVlLiAqKVxuICAgIGlmIGxlbiA8IDFcbiAgICB0aGVuXG4gICAgICBpZiBwb3MgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgICB0aGVuIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJjb3VudF93aGlsZTFcIlxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAgIChjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICAgIGluXG4gICAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgICBlbHNlIGlmIHBvcyArIGxlbiA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGxlbikgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICAoY291bnRfd2hpbGUgfmluaXQ6bGVuIH5mIH53aXRoX2J1ZmZlcikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjY1xuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgc3VjYyBpbnB1dCcgKHBvcycgKyBsZW4pIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBsZW4gfmY6d2l0aF9idWZmZXIpXG4gICAgICBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBzdHJpbmdfIGYgcyA9XG4gICgqIFhYWChzZWxpb3BvdSk6IEluZWZmaWNpZW50LiBDb3VsZCBjaGVjayBwcmVmaXggZXF1YWxpdHkgdG8gc2hvcnQtY2lyY3VpdFxuICAgKiB0aGUgaW8uICopXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgZW5zdXJlICBsZW4gKHVuc2FmZV9hcHBseV9vcHQgbGVuIH5mOihmdW4gYnVmZmVyIH5vZmYgfmxlbiAtPlxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICB3aGlsZSAhaSA8IGxlbiAmJiBDaGFyLmVxdWFsIChmIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0IGJ1ZmZlciAob2ZmICsgIWkpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmIChTdHJpbmcudW5zYWZlX2dldCBzICFpKSlcbiAgICBkb1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiBsZW4gPSAhaVxuICAgIHRoZW4gT2sgKEJpZ3N0cmluZ2FmLnN1YnN0cmluZyBidWZmZXIgfm9mZiB+bGVuKVxuICAgIGVsc2UgRXJyb3IgXCJzdHJpbmdcIikpXG5cbmxldCBzdHJpbmcgcyAgICA9IHN0cmluZ18gKGZ1biB4IC0+IHgpIHNcbmxldCBzdHJpbmdfY2kgcyA9IHN0cmluZ18gQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgc2tpcF93aGlsZSBmID1cbiAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG5cbmxldCB0YWtlIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJ0YWtlOiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmY6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nKVxuXG5sZXQgdGFrZV9iaWdzdHJpbmcgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2VfYmlnc3RyaW5nOiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmY6Qmlnc3RyaW5nYWYuY29weSlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ193aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuY29weVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfdGlsbCBmID1cbiAgdGFrZV9iaWdzdHJpbmdfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IHBlZWtfc3RyaW5nIG4gPVxuICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4pXG5cbmxldCB0YWtlX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHRha2Vfd2hpbGUxIGYgPVxuICBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV90aWxsIGYgPVxuICB0YWtlX3doaWxlIChmdW4gYyAtPiBub3QgKGYgYykpXG5cbmxldCBjaG9pY2UgPyhmYWlsdXJlX21zZz1cIm5vIG1vcmUgY2hvaWNlc1wiKSBwcyA9XG4gIExpc3QuZm9sZF9yaWdodCAoPHw+KSBwcyAoZmFpbCBmYWlsdXJlX21zZylcblxubGV0IGZpeF9kaXJlY3QgZiA9XG4gIGxldCByZWMgcCA9IGxhenkgKGYgcilcbiAgYW5kIHIgPSB7IHJ1biA9IGZ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgfVxuICBpblxuICByXG5cbmxldCBmaXhfbGF6eSB+bWF4X3N0ZXBzIGYgPVxuICBsZXQgc3RlcHMgPSByZWYgbWF4X3N0ZXBzIGluXG4gIGxldCByZWMgcCA9IGxhenkgKGYgcilcbiAgYW5kIHIgPSB7IHJ1biA9IGZ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgZGVjciBzdGVwcztcbiAgICBpZiAhc3RlcHMgPCAwXG4gICAgdGhlbiAoXG4gICAgICBzdGVwcyA6PSBtYXhfc3RlcHM7XG4gICAgICBTdGF0ZS5MYXp5IChsYXp5ICgoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYykpKVxuICAgIGVsc2VcbiAgICAgIChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjXG4gICAgICAgICAgfVxuICBpblxuICByXG5cbmxldCBmaXggPSBtYXRjaCBTeXMuYmFja2VuZF90eXBlIHdpdGhcbiAgfCBOYXRpdmUgLT4gZml4X2RpcmVjdFxuICB8IEJ5dGVjb2RlIC0+IGZpeF9kaXJlY3RcbiAgfCBPdGhlciBfIC0+IGZ1biBmIC0+IGZpeF9sYXp5IH5tYXhfc3RlcHM6MjAgZlxuXG5sZXQgb3B0aW9uIHggcCA9XG4gIHAgPHw+IHJldHVybiB4XG5cbmxldCBjb25zIHggeHMgPSB4IDo6IHhzXG5cbmxldCByZWMgbGlzdCBwcyA9XG4gIG1hdGNoIHBzIHdpdGhcbiAgfCBbXSAgICAtPiByZXR1cm4gW11cbiAgfCBwOjpwcyAtPiBsaWZ0MiBjb25zIHAgKGxpc3QgcHMpXG5cbmxldCBjb3VudCBuIHAgPVxuICBpZiBuIDwgMFxuICB0aGVuIGZhaWwgXCJjb3VudDogbiA8IDBcIlxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgIHwgMCAtPiByZXR1cm4gW11cbiAgICAgIHwgbiAtPiBsaWZ0MiBjb25zIHAgKGxvb3AgKG4gLSAxKSlcbiAgICBpblxuICAgIGxvb3AgblxuXG5sZXQgbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgIChsaWZ0MiBjb25zIHAgbSkgPHw+IHJldHVybiBbXSlcblxubGV0IG1hbnkxIHAgPVxuICBsaWZ0MiBjb25zIHAgKG1hbnkgcClcblxubGV0IG1hbnlfdGlsbCBwIHQgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKHQgKj4gcmV0dXJuIFtdKSA8fD4gKGxpZnQyIGNvbnMgcCBtKSlcblxubGV0IHNlcF9ieTEgcyBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgIGxpZnQyIGNvbnMgcCAoKHMgKj4gbSkgPHw+IHJldHVybiBbXSkpXG5cbmxldCBzZXBfYnkgcyBwID1cbiAgKGxpZnQyIGNvbnMgcCAoKHMgKj4gc2VwX2J5MSBzIHApIDx8PiByZXR1cm4gW10pKSA8fD4gcmV0dXJuIFtdXG5cbmxldCBza2lwX21hbnkgcCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAgICgocCA+PnwgZnVuIF8gLT4gdHJ1ZSkgPHw+IHJldHVybiBmYWxzZSkgPj49IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gbVxuICAgICAgfCBmYWxzZSAtPiByZXR1cm4gKClcbiAgICApXG5cbmxldCBza2lwX21hbnkxIHAgPVxuICBwICo+IHNraXBfbWFueSBwXG5cbmxldCBlbmRfb2ZfbGluZSA9XG4gIChjaGFyICdcXG4nICo+IHJldHVybiAoKSkgPHw+IChzdHJpbmcgXCJcXHJcXG5cIiAqPiByZXR1cm4gKCkpIDw/PiBcImVuZF9vZl9saW5lXCJcblxubGV0IHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IHN0YXRlID0gcmVmIHN0YXRlIGluXG4gICAgbGV0IHBhcnNlciA9XG4gICAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOihmdW4gYyAtPlxuICAgICAgICBtYXRjaCBmICFzdGF0ZSBjIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBzdGF0ZScgLT4gc3RhdGUgOj0gc3RhdGUnOyB0cnVlKVxuICAgICAgfndpdGhfYnVmZmVyXG4gICAgICA+PnwgZnVuIHggLT4geCwgIXN0YXRlXG4gICAgaW5cbiAgICBwYXJzZXIucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyB9XG5cbmxldCBzY2FuIHN0YXRlIGYgPVxuICBzY2FuXyBzdGF0ZSBmIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5zdWJzdHJpbmdcblxubGV0IHNjYW5fc3RhdGUgc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOihmdW4gXyB+b2ZmOl8gfmxlbjpfIC0+ICgpKVxuICA+PnwgZnVuICgoKSwgc3RhdGUpIC0+IHN0YXRlXG5cbmxldCBzY2FuX3N0cmluZyBzdGF0ZSBmID1cbiAgc2NhbiBzdGF0ZSBmID4+fCBmc3RcblxubGV0IGNvbnN1bWVfd2l0aCBwIGYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhcnQgPSBwb3MgaW5cbiAgICBsZXQgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQgIGluXG4gICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPVxuICAgICAgaWYgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8PiBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0J1xuICAgICAgdGhlbiBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY29uc3VtZWQ6IHBhcnNlciBjb21taXR0ZWRcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPSBwb3MnIC0gc3RhcnQgaW5cbiAgICAgICAgbGV0IGNvbnN1bWVkID0gSW5wdXQuYXBwbHkgaW5wdXQnIHN0YXJ0IGxlbiB+ZiBpblxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGNvbnN1bWVkKVxuICAgIGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICB9XG5cbmxldCBjb25zdW1lZCAgICAgICAgICAgcCA9IGNvbnN1bWVfd2l0aCBwIEJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xubGV0IGNvbnN1bWVkX2JpZ3N0cmluZyBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuY29weVxuXG5sZXQgYm90aCBhIGIgPSBsaWZ0MiAoZnVuIGEgYiAtPiBhLCBiKSBhIGJcbmxldCBtYXAgdCB+ZiA9IHQgPj58IGZcbmxldCBiaW5kIHQgfmYgPSB0ID4+PSBmXG5sZXQgbWFwMiBhIGIgfmYgPSBsaWZ0MiBmIGEgYlxubGV0IG1hcDMgYSBiIGMgfmYgPSBsaWZ0MyBmIGEgYiBjXG5sZXQgbWFwNCBhIGIgYyBkIH5mID0gbGlmdDQgZiBhIGIgYyBkXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cbiAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGxldCAoID4+PSApID0gKCA+Pj0gKVxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcbiAgICBsZXQgbWFwMiA9IG1hcDJcbiAgICBsZXQgbWFwMyA9IG1hcDNcbiAgICBsZXQgbWFwNCA9IG1hcDRcbiAgZW5kXG5lbmRcblxubGV0ICggbGV0KyApID0gKCA+PnwgKVxubGV0ICggbGV0KiApID0gKCA+Pj0gKVxubGV0ICggYW5kKyApID0gYm90aFxuXG5tb2R1bGUgQkUgPSBzdHJ1Y3RcbiAgKCogWFhYKHNlbGlvcG91KTogVGhlIHBhdHRlcm4gaW4gYm90aCB0aGlzIG1vZHVsZSBhbmQgW0xFXSBhcmUgYSBjb21wcm9taXNlXG4gICAqIGJldHdlZW4gZWZmaWNpZW5jeSBhbmQgY29kZSByZXVzZS4gQnkgaW5saW5pbmcgW2Vuc3VyZV0geW91IGNhbiByZWNvdmVyXG4gICAqIGFib3V0IDIgbmFub3NlY29uZHMgb24gYXZlcmFnZS4gVGhhdCBtYXkgYWRkIHVwIGluIGNlcnRhaW4gYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBUaGlzIHBhdHRlcm4gZG9lcyBub3QgYWxsb2NhdGUgaW4gdGhlIGZhc3QgKHN1Y2Nlc3MpIHBhdGguXG4gICAqICopXG4gIGxldCBpbnQxNiBuID1cbiAgICBsZXQgYnl0ZXMgPSAyIGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfaW50MTZfYmUgaW5wdXQgcG9zID0gKG4gbGFuZCAweGZmZmYpXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MTZcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQzMiBuID1cbiAgICBsZXQgYnl0ZXMgPSA0IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDMyLmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDMyX2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDMyXCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50NjQgbiA9XG4gICAgbGV0IGJ5dGVzID0gOCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQ2NC5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQ2NF9iZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQ2NFwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGFueV91aW50MTYgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDE2ICA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9zaWduX2V4dGVuZGVkX2JlICBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MzIgID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQ2NCA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfZmxvYXQgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDMyLmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSkpXG5cbiAgbGV0IGFueV9kb3VibGUgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEludDY0LmZsb2F0X29mX2JpdHMgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgYnMgb2ZmKSkpXG5lbmRcblxubW9kdWxlIExFID0gc3RydWN0XG4gIGxldCBpbnQxNiBuID1cbiAgICBsZXQgYnl0ZXMgPSAyIGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfaW50MTZfbGUgaW5wdXQgcG9zID0gKG4gbGFuZCAweGZmZmYpXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MTZcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQzMiBuID1cbiAgICBsZXQgYnl0ZXMgPSA0IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDMyLmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDMyX2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDMyXCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgaW50NjQgbiA9XG4gICAgbGV0IGJ5dGVzID0gOCBpblxuICAgIGxldCBwID1cbiAgICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgICBpZiBJbnQ2NC5lcXVhbCAoSW5wdXQudW5zYWZlX2dldF9pbnQ2NF9sZSBpbnB1dCBwb3MpIG5cbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQ2NFwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9sZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gIGxldCB0YWtlIG4gZiA9XG4gICAgbGV0IG4gPSBtYXggbiAwIGluXG4gICAgZW5zdXJlIG4gKHVuc2FmZV9hcHBseSBuIH5mKVxuXG4gIGxldCBwZWVrIG4gZiA9XG4gICAgdW5zYWZlX2xvb2thaGVhZCAodGFrZSBuIGYpXG5cbiAgbGV0IHRha2Vfd2hpbGUgY2hlY2sgZiA9XG4gICAgY291bnRfd2hpbGUgfmluaXQ6MCB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3doaWxlMSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZTEgfmY6Y2hlY2sgfndpdGhfYnVmZmVyOmZcblxuICBsZXQgdGFrZV90aWxsIGNoZWNrIGYgPVxuICAgIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoY2hlY2sgYykpIGZcbmVuZFxuXG5tb2R1bGUgQ29uc3VtZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUHJlZml4XG4gICAgfCBBbGxcbmVuZFxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nIH5jb25zdW1lIHAgYnMgPVxuICBsZXQgcCA9XG4gICAgbWF0Y2ggKGNvbnN1bWUgOiBDb25zdW1lLnQpIHdpdGhcbiAgICB8IFByZWZpeCAtPiBwXG4gICAgfCBBbGwgLT4gcCA8KiBlbmRfb2ZfaW5wdXRcbiAgaW5cbiAgVW5idWZmZXJlZC5wYXJzZV9iaWdzdHJpbmcgcCBic1xuXG5sZXQgcGFyc2Vfc3RyaW5nIH5jb25zdW1lIHAgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJzICA9IEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4gaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2JsaXRfZnJvbV9zdHJpbmcgcyB+c3JjX29mZjowIGJzIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgcGFyc2VfYmlnc3RyaW5nIH5jb25zdW1lIHAgYnNcbiIsIigqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBBbmlsIE1hZGhhdmFwZWRkeSA8YW5pbEByZWNvaWwub3JnPlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgRGF2aWQgU2hlZXRzIDxzaGVldHNAYWx1bS5taXQuZWR1PlxuICpcbiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbiAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gKlxuICopXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbnR5cGUgY29tcG9uZW50ID0gW1xuICB8IGBTY2hlbWVcbiAgfCBgQXV0aG9yaXR5XG4gIHwgYFVzZXJpbmZvICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG4gIHwgYEhvc3QgKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgUGF0aFxuICB8IGBRdWVyeVxuICB8IGBRdWVyeV9rZXlcbiAgfCBgUXVlcnlfdmFsdWVcbiAgfCBgRnJhZ21lbnRcbiAgfCBgR2VuZXJpY1xuICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZykgKCogKGNvbXBvbmVudCAqIHNhZmUgY2hhcnMgKiB1bnNhZmUgY2hhcnMpICopXG5dXG5cbnR5cGUgcGN0X2VuY29kZXIgPSB7XG4gICAgc2NoZW1lOiBjb21wb25lbnQ7XG4gICAgdXNlcmluZm86IGNvbXBvbmVudDtcbiAgICBob3N0OiBjb21wb25lbnQ7XG4gICAgcGF0aDogY29tcG9uZW50O1xuICAgIHF1ZXJ5X2tleTogY29tcG9uZW50O1xuICAgIHF1ZXJ5X3ZhbHVlOiBjb21wb25lbnQ7XG4gICAgZnJhZ21lbnQ6IGNvbXBvbmVudDtcbiAgfVxuXG5sZXQgcmVjIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgPSBmdW5jdGlvblxuICB8IGxhc3Q6OltdIC0+IGZuIGJ1ZiBsYXN0XG4gIHwgZWw6OnJlc3QgLT5cbiAgICBmbiBidWYgZWw7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHNlcDtcbiAgICBpdGVyX2NvbmNhdCBmbiBzZXAgYnVmIHJlc3RcbiAgfCBbXSAtPiAoKVxuXG5sZXQgcmV2X2ludGVyamVjdCBlIGxzdCA9XG4gIGxldCByZWMgYXV4IGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgLT4gYWNjXG4gICAgfCB4Ojp4cyAtPiBhdXggKHg6OmU6OmFjYykgeHNcbiAgaW4gbWF0Y2ggbHN0IHdpdGhcbiAgfCBbXSAgLT4gW11cbiAgfCBoOjp0IC0+IGF1eCBbaF0gdFxuXG5sZXQgY29tcGFyZV9vcHQgYyB0IHQnID0gbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsICAgTm9uZSAgIC0+IDBcbiAgfCBTb21lIF8sIE5vbmUgICAtPiAxXG4gIHwgTm9uZSwgICBTb21lIF8gLT4gLTFcbiAgfCBTb21lIGEsIFNvbWUgYiAtPiBjIGEgYlxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBmIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgW10sICAgIFtdICAgIC0+ICAwXG4gIHwgXzo6XywgIFtdICAgIC0+ICAxXG4gIHwgW10sICAgIF86Ol8gIC0+IC0xXG4gIHwgeDo6eHMsIHk6OnlzIC0+XG4gICAgbWF0Y2ggZiB4IHkgd2l0aCAwIC0+IGNvbXBhcmVfbGlzdCBmIHhzIHlzIHwgYyAtPiBjXG5cbigqKiBTYWZlIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWx3YXlzIGFsbG93ZWQgaW4gYSBVUklcbiAgKiBVbmZvcnR1bmF0ZWx5LCB0aGlzIHZhcmllcyBkZXBlbmRpbmcgb24gd2hpY2ggYml0IG9mIHRoZSBVUklcbiAgKiBpcyBiZWluZyBwYXJzZWQsIHNvIHRoZXJlIGFyZSBtdWx0aXBsZSB2YXJpYW50cyAoYW5kIHRoaXNcbiAgKiBzZXQgaXMgcHJvYmFibHkgbm90IGV4aGF1c3RpdmUuIFRPRE86IGNoZWNrLlxuKilcbnR5cGUgc2FmZV9jaGFycyA9IGJvb2wgYXJyYXlcblxubW9kdWxlIHR5cGUgU2NoZW1lID0gc2lnXG4gIHZhbCBzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgOiBjb21wb25lbnQgLT4gc2FmZV9jaGFyc1xuICB2YWwgbm9ybWFsaXplX2hvc3QgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBjYW5vbmljYWxpemVfcG9ydCA6IGludCBvcHRpb24gLT4gaW50IG9wdGlvblxuICB2YWwgY2Fub25pY2FsaXplX3BhdGggOiBzdHJpbmcgbGlzdCAtPiBzdHJpbmcgbGlzdFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljIDogU2NoZW1lID0gc3RydWN0XG4gIGxldCBzdWJfZGVsaW1zIGEgPVxuICAgIGxldCBzdWJkID0gXCIhJCYnKCkqKyw7PVwiIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3ViZCAtIDEgZG9cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIHN1YmQuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnMgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5Lm1ha2UgMjU2IGZhbHNlIGluXG4gICAgbGV0IGFsd2F5c19zYWZlID1cbiAgICAgIFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlfLi1+XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBhbHdheXNfc2FmZSAtIDEgZG9cbiAgICAgIGxldCBjID0gQ2hhci5jb2RlIGFsd2F5c19zYWZlLltpXSBpblxuICAgICAgYS4oYykgPC0gdHJ1ZVxuICAgIGRvbmU7XG4gICAgYVxuXG4gIGxldCBwY2hhciA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gc3ViX2RlbGltcyAoQXJyYXkuY29weSBzYWZlX2NoYXJzKSBpblxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIHRydWU7XG4gICAgYS4oQ2hhci5jb2RlICdAJykgPC0gdHJ1ZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3NjaGVtZSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzIGluXG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gdHJ1ZTtcbiAgICBhXG5cbiAgKCoqIFNhZmUgY2hhcmFjdGVycyBmb3IgdGhlIHBhdGggY29tcG9uZW50IG9mIGEgVVJJICopXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9wYXRoIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHBjaGFyKSBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnLycpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnkgOiBzYWZlX2NoYXJzID1cbiAgICAoKiBUT0RPOiBXaGF0IGFib3V0IHtcIiFcIixcIiRcIixcIixcIn0/IFNlZSA8aHR0cHM6Ly9naXRodWIuY29tL2F2c20vb2NhbWwtdXJpL2NvbW1pdC8xZWYzZjFkZmI0MWJkYjRmMzNmMjIzZmZlMTZlNjJhMzM5NzU2NjFhI2RpZmYtNzQwZjJkZTUzYzllYjM2ZTk2NzBkZGZiZGI5YmE5MTRSMTcxPiAqKVxuICAgIGxldCBhID0gQXJyYXkuY29weSBwY2hhciBpblxuICAgIGEuKENoYXIuY29kZSAnLycpIDwtIHRydWU7XG4gICAgYS4oQ2hhci5jb2RlICc/JykgPC0gdHJ1ZTtcbiAgICAoKiAnJicgaXMgc2FmZSBidXQgd2Ugc2hvdWxkIGVuY29kZSBsaXRlcmFscyB0byBhdm9pZCBhbWJpZ3VpdHlcbiAgICAgICB3aXRoIHRoZSBhbHJlYWR5IHBhcnNlZCBxcyBwYXJhbXMgKilcbiAgICBhLihDaGFyLmNvZGUgJyYnKSA8LSBmYWxzZTtcbiAgICAoKiAnOycgaXMgc2FmZSBidXQgc29tZSBzeXN0ZW1zIHRyZWF0IGl0IGxpa2UgJyYnLiAqKVxuICAgIGEuKENoYXIuY29kZSAnOycpIDwtIGZhbHNlO1xuICAgIGEuKENoYXIuY29kZSAnKycpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfcXVlcnlfa2V5IDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICc9JykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZSA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkuY29weSBzYWZlX2NoYXJzX2Zvcl9xdWVyeSBpblxuICAgIGEuKENoYXIuY29kZSAnLCcpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3JfZnJhZ21lbnQgOiBzYWZlX2NoYXJzID0gc2FmZV9jaGFyc19mb3JfcXVlcnlcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgdXNlcmluZm8gc3ViY29tcG9uZW50IG9mIGEgVVJJLlxuICAgICAgVE9ETzogdGhpcyBuZWVkcyBtb3JlIHJlc2VydmVkIGNoYXJhY3RlcnMgYWRkZWQgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3VzZXJpbmZvIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICAoKiBkZWxpbWl0ZXI6IG5vbi1zZWdtZW50IGRlbGltaXRpbmcgdXNlcyBzaG91bGQgYmUgcGN0IGVuY29kZWQgKilcbiAgICBhLihDaGFyLmNvZGUgJzonKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHJlYyBzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgPSBmdW5jdGlvblxuICAgIHwgYFBhdGggLT4gc2FmZV9jaGFyc19mb3JfcGF0aFxuICAgIHwgYFVzZXJpbmZvIC0+IHNhZmVfY2hhcnNfZm9yX3VzZXJpbmZvXG4gICAgfCBgUXVlcnkgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlcbiAgICB8IGBRdWVyeV9rZXkgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlfa2V5XG4gICAgfCBgUXVlcnlfdmFsdWUgLT4gc2FmZV9jaGFyc19mb3JfcXVlcnlfdmFsdWVcbiAgICB8IGBGcmFnbWVudCAtPiBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudFxuICAgIHwgYFNjaGVtZSAtPiBzYWZlX2NoYXJzX2Zvcl9zY2hlbWVcbiAgICB8IGBDdXN0b20gKChjb21wb25lbnQgOiBjb21wb25lbnQpLCBzYWZlLCB1bnNhZmUpIC0+XG4gICAgICAgbGV0IHNhZmVfY2hhcnMgPSBBcnJheS5jb3B5IChzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgY29tcG9uZW50KSBpblxuICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBzYWZlLltpXSBpblxuICAgICAgICAgc2FmZV9jaGFycy4oYykgPC0gdHJ1ZVxuICAgICAgIGRvbmU7XG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggdW5zYWZlIC0gMSBkb1xuICAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgdW5zYWZlLltpXSBpblxuICAgICAgICAgc2FmZV9jaGFycy4oYykgPC0gZmFsc2VcbiAgICAgICBkb25lO1xuICAgICAgIHNhZmVfY2hhcnNcbiAgICB8IGBHZW5lcmljXG4gICAgfCBfIC0+IHNhZmVfY2hhcnNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHNvID0gaHNvXG5cbiAgbGV0IGNhbm9uaWNhbGl6ZV9wb3J0IHBvcnQgPSBwb3J0XG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCBwYXRoID0gcGF0aFxuZW5kXG5cbm1vZHVsZSBIdHRwIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgR2VuZXJpY1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHNcblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIDgwIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcblxuICBsZXQgY2Fub25pY2FsaXplX3BhdGggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW1wiL1wiXVxuICAgIHwgeCAgLT4geFxuZW5kXG5cbm1vZHVsZSBIdHRwcyA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEh0dHBcblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIDQ0MyAtPiBOb25lXG4gICAgfCBTb21lIHggLT4gU29tZSB4XG5lbmRcblxubW9kdWxlIEZpbGUgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID1cbiAgICBsZXQgaHMgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhzIGluXG4gICAgaWYgaHM9XCJsb2NhbGhvc3RcIiB0aGVuIFwiXCIgZWxzZSBoc1xuZW5kXG5cbm1vZHVsZSBVcm4gOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbmVuZFxuXG5sZXQgbW9kdWxlX29mX3NjaGVtZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBzIC0+IGJlZ2luIG1hdGNoIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyB3aXRoXG4gICAgICB8IFwiaHR0cFwiIC0+IChtb2R1bGUgSHR0cCA6IFNjaGVtZSlcbiAgICAgIHwgXCJodHRwc1wiICAtPiAobW9kdWxlIEh0dHBzIDogU2NoZW1lKVxuICAgICAgfCBcImZpbGVcIiAtPiAobW9kdWxlIEZpbGUgOiBTY2hlbWUpXG4gICAgICB8IFwidXJuXCIgIC0+IChtb2R1bGUgVXJuIDogU2NoZW1lKVxuICAgICAgfCBfIC0+IChtb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSlcbiAgICBlbmRcbiAgfCBOb25lIC0+IChtb2R1bGUgR2VuZXJpYyA6IFNjaGVtZSlcblxuKCoqIFBvcnRpb25zIG9mIHRoZSBVUkwgbXVzdCBiZSBjb252ZXJ0ZWQgdG8tYW5kLWZyb20gcGVyY2VudC1lbmNvZGluZ1xuICAqIGFuZCB0aGlzIHJlYWxseSwgcmVhbGx5IHNob3VsZG4ndCBiZSBtaXhlZCB1cC4gU28gdGhpcyBQY3QgbW9kdWxlXG4gICogZGVmaW5lcyBhYnN0cmFjdCBQY3QuZW5jb2RlZCBhbmQgUGN0LmRlY29kZWQgdHlwZXMgd2hpY2ggc2V0cyB0aGVcbiAgKiBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBzdHJpbmcuICBUaGVyZSBhcmUgZnVuY3Rpb25zIHRvIFwiY2FzdFwiIHRvXG4gICogYW5kIGZyb20gdGhlc2UgYW5kIG5vcm1hbCBzdHJpbmdzLCBhbmQgdGhpcyBwcm9tb3RlcyBhIGJpdCBvZlxuICAqIGludGVybmFsIHNhZmV0eS4gIFRoZXNlIHR5cGVzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZXh0ZXJuYWxcbiAgKiBpbnRlcmZhY2UsIGFzIGNhc3RpbmcgdG8tYW5kLWZyb20gaXMgcXVpdGUgYSBiaXQgb2YgaGFzc2xlIGFuZFxuICAqIHByb2JhYmx5IG5vdCBhIGxvdCBvZiB1c2UgdG8gdGhlIGF2ZXJhZ2UgY29uc3VtZXIgb2YgdGhpcyBsaWJyYXJ5XG4qKVxubW9kdWxlIFBjdCA6IHNpZ1xuICB0eXBlIGVuY29kZWRcbiAgdHlwZSBkZWNvZGVkXG5cbiAgdmFsIGVuY29kZSA6ID9zY2hlbWU6c3RyaW5nIC0+ID9jb21wb25lbnQ6Y29tcG9uZW50IC0+IGRlY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgZGVjb2RlIDogZW5jb2RlZCAtPiBkZWNvZGVkXG5cbiAgKCogVGhlIGVtcHR5IGRlY29kZWQgc3RyaW5nICopXG4gIHZhbCBlbXB0eV9kZWNvZGVkIDogZGVjb2RlZFxuICAoKiBJZGVudGl0eSBmdW5jdGlvbnMgc28gd2UgbmVlZCB0byBleHBsaWNpdGx5IGNhc3Qgd2hlbiB1c2luZyB0aGVtIGJlbG93ICopXG4gIHZhbCBjYXN0X2VuY29kZWQgOiBzdHJpbmcgLT4gZW5jb2RlZFxuICB2YWwgY2FzdF9kZWNvZGVkIDogc3RyaW5nIC0+IGRlY29kZWRcbiAgdmFsIHVuY2FzdF9lbmNvZGVkIDogZW5jb2RlZCAtPiBzdHJpbmdcbiAgdmFsIHVuY2FzdF9kZWNvZGVkIDogZGVjb2RlZCAtPiBzdHJpbmdcbiAgKCogTGlmdCBIT0ZzIGZvciBtYXBzIG92ZXIgZW5jb2RpbmdzLCBkZWNvZGluZ3MsIGFuZCBzdHJpbmdzICopXG4gIHZhbCBsaWZ0X2VuY29kZWQgOiAoZW5jb2RlZCAtPiBlbmNvZGVkKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBsaWZ0X2RlY29kZWQgOiAoZGVjb2RlZCAtPiBkZWNvZGVkKSAtPiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCB1bmxpZnRfZW5jb2RlZCA6IChzdHJpbmcgLT4gc3RyaW5nKSAtPiBlbmNvZGVkIC0+IGVuY29kZWRcbiAgdmFsIHVubGlmdF9kZWNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGRlY29kZWQgLT4gZGVjb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQyIDogKHN0cmluZyAtPiBzdHJpbmcgLT4gJ2EpIC0+IGRlY29kZWQgLT4gZGVjb2RlZCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgZW5jb2RlZCA9IHN0cmluZ1xuICB0eXBlIGRlY29kZWQgPSBzdHJpbmdcbiAgbGV0IGNhc3RfZW5jb2RlZCB4ID0geFxuICBsZXQgY2FzdF9kZWNvZGVkIHggPSB4XG4gIGxldCBlbXB0eV9kZWNvZGVkID0gXCJcIlxuICBsZXQgdW5jYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IHVuY2FzdF9lbmNvZGVkIHggPSB4XG5cbiAgbGV0IGxpZnRfZW5jb2RlZCBmID0gZlxuICBsZXQgbGlmdF9kZWNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZW5jb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9kZWNvZGVkMiBmID0gZlxuXG4gICgqKiBTY2FuIGZvciByZXNlcnZlZCBjaGFyYWN0ZXJzIGFuZCByZXBsYWNlIHRoZW0gd2l0aFxuICAgICAgcGVyY2VudC1lbmNvZGVkIGVxdWl2YWxlbnRzLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IGVuY29kZSA/c2NoZW1lID8oY29tcG9uZW50PWBQYXRoKSBiID1cbiAgICBsZXQgbW9kdWxlIFNjaGVtZSA9ICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgc2NoZW1lKSA6IFNjaGVtZSkgaW5cbiAgICBsZXQgc2FmZV9jaGFycyA9IFNjaGVtZS5zYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQgY29tcG9uZW50IGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgc2NhbiBzdGFydCBjdXIgPVxuICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYi5bY3VyXSBpblxuICAgICAgICBpZiBzYWZlX2NoYXJzLihjKSB0aGVuXG4gICAgICAgICAgc2NhbiBzdGFydCAoY3VyKzEpXG4gICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICBpZiBjdXIgPiBzdGFydCB0aGVuIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUHJpbnRmLnNwcmludGYgXCIlJSUwMlhcIiBjKTtcbiAgICAgICAgICBzY2FuIChjdXIrMSkgKGN1cisxKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGluXG4gICAgc2NhbiAwIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCBpbnRfb2ZfaGV4X2NoYXIgYyA9XG4gICAgbGV0IGMgPSBpbnRfb2ZfY2hhciAoQ2hhci51cHBlcmNhc2VfYXNjaWkgYykgLSA0OCBpblxuICAgIGlmIGMgPiA5XG4gICAgdGhlbiBpZiBjID4gMTYgJiYgYyA8IDIzXG4gICAgICB0aGVuIGMgLSA3XG4gICAgICBlbHNlIGZhaWx3aXRoIFwiaW50X29mX2hleF9jaGFyXCJcbiAgICBlbHNlIGlmIGMgPj0gMFxuICAgIHRoZW4gY1xuICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuXG4gICgqKiBTY2FuIGZvciBwZXJjZW50LWVuY29kaW5nIGFuZCBjb252ZXJ0IHRoZW0gaW50byBBU0NJSS5cbiAgICAgIEByZXR1cm4gYSBwZXJjZW50LWRlY29kZWQgc3RyaW5nICopXG4gIGxldCBkZWNvZGUgYiA9XG4gICAgKCogVE9ETzogU2hvdWxkIGJvdGggc3RyaWN0IGFuZCBub24tc3RyaWN0IHZlcnNpb25zIGJlIGV4cG9zZWQ/ICopXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggYiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgc2NhbiBzdGFydCBjdXIgPVxuICAgICAgaWYgY3VyID49IGxlbiB0aGVuIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpXG4gICAgICBlbHNlIGlmIGIuW2N1cl0gPSAnJScgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgYiBzdGFydCAoY3VyLXN0YXJ0KTtcbiAgICAgICAgbGV0IGN1ciA9IGN1ciArIDEgaW5cbiAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIEJ1ZmZlci5hZGRfY2hhciBidWYgJyUnXG4gICAgICAgIGVsc2UgbWF0Y2ggaW50X29mX2hleF9jaGFyIGIuW2N1cl0gd2l0aFxuICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgc2NhbiBjdXIgY3VyXG4gICAgICAgIHwgaGlnaGJpdHMgLT4gYmVnaW5cbiAgICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICAgIGlmIGN1ciA+PSBsZW4gdGhlbiBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXVxuICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICBsZXQgc3RhcnRfYXQgPVxuICAgICAgICAgICAgICBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgICAgICAgIHwgbG93Yml0cyAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIChoaWdoYml0cyBsc2wgNCArIGxvd2JpdHMpKTtcbiAgICAgICAgICAgICAgICBjdXIrMVxuICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSc7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBiLltjdXItMV07XG4gICAgICAgICAgICAgICAgY3VyXG4gICAgICAgICAgICBpbiBzY2FuIHN0YXJ0X2F0IHN0YXJ0X2F0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2Ugc2NhbiBzdGFydCAoY3VyKzEpXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5lbmRcblxuKCogUGVyY2VudCBlbmNvZGUgYSBzdHJpbmcgKilcbmxldCBwY3RfZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIHMgPVxuICBQY3QuKHVuY2FzdF9lbmNvZGVkIChlbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IChjYXN0X2RlY29kZWQgcykpKVxuXG5sZXQgcGN0X2VuY29kZXJcbiAgICAgID8oc2NoZW1lPWBTY2hlbWUpXG4gICAgICA/KHVzZXJpbmZvPWBVc2VyaW5mbylcbiAgICAgID8oaG9zdD1gSG9zdClcbiAgICAgID8ocGF0aD1gUGF0aClcbiAgICAgID8ocXVlcnlfa2V5PWBRdWVyeV9rZXkpXG4gICAgICA/KHF1ZXJ5X3ZhbHVlPWBRdWVyeV92YWx1ZSlcbiAgICAgID8oZnJhZ21lbnQ9YEZyYWdtZW50KVxuICAgICAgKCkgPVxuICB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBhdGg7IHF1ZXJ5X2tleTsgcXVlcnlfdmFsdWU7IGZyYWdtZW50IH1cblxuKCogUGVyY2VudCBkZWNvZGUgYSBzdHJpbmcgKilcbmxldCBwY3RfZGVjb2RlIHMgPSBQY3QuKHVuY2FzdF9kZWNvZGVkIChkZWNvZGUgKGNhc3RfZW5jb2RlZCBzKSkpXG5cbigqIFVzZXJpbmZvIHN0cmluZyBoYW5kbGluZywgdG8gYW5kIGZyb20gYW4gaWQgKiBjcmVkZW50aWFsIHBhaXIgKilcbm1vZHVsZSBVc2VyaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKHUscCkgKHUnLHAnKSA9XG4gICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgdSB1JyB3aXRoXG4gICAgfCAwIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHAgcCdcbiAgICB8IGMgLT4gY1xuXG4gIGxldCB1c2VyaW5mb19vZl9lbmNvZGVkIHVzID1cbiAgICBtYXRjaCBTdHJpbmdleHQuc3BsaXQgfm1heDoyIH5vbjonOicgdXMgd2l0aFxuICAgIHwgW10gLT4gKFwiXCIsTm9uZSlcbiAgICB8IFt1XSAtPiAocGN0X2RlY29kZSB1LE5vbmUpXG4gICAgfCB1OjpwOjpfIC0+IChwY3RfZGVjb2RlIHUsU29tZSAocGN0X2RlY29kZSBwKSlcblxuICBsZXQgZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQgKHUscG8pID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLihcbiAgICAgIDEgKyAobGVuZ3RoIHUpICsgKG1hdGNoIHBvIHdpdGggTm9uZSAtPiAwIHwgU29tZSBwIC0+IGxlbmd0aCBwKSlcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgdSk7XG4gICAgYmVnaW4gbWF0Y2ggcG8gd2l0aCBOb25lIC0+ICgpO1xuICAgIHwgU29tZSBwIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgcClcbiAgICBlbmQ7XG4gICAgUGN0LmNhc3RfZW5jb2RlZCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbmVuZFxuXG5sZXQgdXNlcmluZm9fb2ZfZW5jb2RlZCA9IFVzZXJpbmZvLnVzZXJpbmZvX29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCA9IFVzZXJpbmZvLmVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50XG5cbigqIFBhdGggc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhIGxpc3Qgb2YgcGF0aCB0b2tlbnMgKilcbm1vZHVsZSBQYXRoID0gc3RydWN0XG4gICgqIEludmFyaWFudDogZXZlcnkgZWxlbWVudCBpcyBub24temVybywgc2xhc2hlcyAoLykgb25seSBvY2N1ciBhbG9uZS4gKilcbiAgKCogWWVzLCBpdCdzIGJldHRlciB0aGlzIHdheS4gVGhpcyBtZWFucyB5b3UgY2FuIHJldGFpbiBzZXBhcmF0b3JcbiAgICAgY29udGV4dCBpbiByZWN1cnNpb24gKGUuZy4gcmVtb3ZlX2RvdF9zZWdtZW50cyBmb3IgcmVsYXRpdmUgcmVzb2x1dGlvbikuICopXG5cbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3RcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVfbGlzdCBTdHJpbmcuY29tcGFyZVxuXG4gICgqIE1ha2UgYSBwYXRoIHRva2VuIGxpc3QgZnJvbSBhIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcgKilcbiAgbGV0IHBhdGhfb2ZfZW5jb2RlZCBwcyA9XG4gICAgbGV0IHRva2wgPSBTdHJpbmdleHQuZnVsbF9zcGxpdCBwcyB+b246Jy8nIGluXG4gICAgTGlzdC5tYXAgcGN0X2RlY29kZSB0b2tsXG5cbiAgKCogU3Vicm91dGluZSBmb3IgcmVzb2x2ZSA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40PiAqKVxuICBsZXQgcmVtb3ZlX2RvdF9zZWdtZW50cyBwID1cbiAgICBsZXQgcmV2cCA9IExpc3QucmV2IHAgaW5cbiAgICBsZXQgcmVjIGxvb3AgYXNjZW5zaW9uIG91dHAgPSBmdW5jdGlvblxuICAgICAgfCBcIi9cIjo6XCIuLlwiOjpyIHwgXCIuLlwiOjpyIC0+IGxvb3AgKGFzY2Vuc2lvbiArIDEpIG91dHAgclxuICAgICAgfCBcIi9cIjo6XCIuXCI6OnIgIHwgXCIuXCI6OnIgIC0+IGxvb3AgYXNjZW5zaW9uIG91dHAgclxuICAgICAgfCBcIi9cIjo6W10gfCBbXSB3aGVuIExpc3QuKGxlbmd0aCBwID4gMCAmJiBoZCBwID0gXCIvXCIpIC0+IFwiL1wiOjpvdXRwXG4gICAgICB8IFtdIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBMaXN0LnJldl9hcHBlbmRcbiAgICAgICAgKFwiL1wiOjoocmV2X2ludGVyamVjdCBcIi9cIiBBcnJheS4odG9fbGlzdCAobWFrZSBhc2NlbnNpb24gXCIuLlwiKSkpKSBvdXRwXG4gICAgICB8IFtdIC0+IExpc3QuKGlmIGxlbmd0aCBvdXRwID4gMCAmJiBoZCBvdXRwID0gXCIvXCIgdGhlbiB0bCBvdXRwIGVsc2Ugb3V0cClcbiAgICAgIHwgXCIvXCI6OlwiL1wiOjpyIHdoZW4gYXNjZW5zaW9uID4gMCAtPiBsb29wIChhc2NlbnNpb24gLSAxKSBvdXRwIChcIi9cIjo6cilcbiAgICAgIHwgXCIvXCI6Ol86OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgclxuICAgICAgfCBzOjpyIC0+IGxvb3AgMCAoczo6b3V0cCkgclxuICAgIGluIGxvb3AgMCBbXSByZXZwXG5cbiAgbGV0IGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQgcCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYyB0b2sgLT4gU3RyaW5nLmxlbmd0aCB0b2sgKyBjKSAwIHAgaW5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICBpdGVyX2NvbmNhdCAoZnVuIGJ1ZiAtPiBmdW5jdGlvblxuICAgIHwgXCIvXCIgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnLydcbiAgICB8IHNlZyAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHNlZylcbiAgICApIFwiXCIgYnVmIHA7XG4gICAgUGN0LmNhc3RfZW5jb2RlZCAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjM+ICopXG4gIGxldCBtZXJnZSBiaG9zdCBicGF0aCByZWxwYXRoID1cbiAgICBtYXRjaCBiaG9zdCwgTGlzdC5yZXYgYnBhdGggd2l0aFxuICAgIHwgU29tZSBfLCBbXSAtPiBcIi9cIjo6cmVscGF0aFxuICAgIHwgXywgKFwiL1wiOjpyYnBhdGggfCBfOjpcIi9cIjo6cmJwYXRoKSAtPiBMaXN0LnJldl9hcHBlbmQgKFwiL1wiOjpyYnBhdGgpIHJlbHBhdGhcbiAgICB8IF8sIF8gLT4gcmVscGF0aFxuZW5kXG5cbmxldCBwYXRoX29mX2VuY29kZWQgPSBQYXRoLnBhdGhfb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQgPSBQYXRoLmVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUXVlcnkgc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBhc3NvYyBsaXN0IG9mIGtleS92YWx1ZXMgKilcbm1vZHVsZSBRdWVyeSA9IHN0cnVjdFxuXG4gIHR5cGUga3YgPSAoc3RyaW5nICogc3RyaW5nIGxpc3QpIGxpc3RcblxuICB0eXBlIHQgPVxuICAgIHwgS1Ygb2Yga3ZcbiAgICB8IFJhdyBvZiBzdHJpbmcgb3B0aW9uICoga3YgTGF6eS50XG5cbiAgbGV0IGNvbXBhcmUgeCB5ID0gbWF0Y2ggeCwgeSB3aXRoXG4gICAgfCBLViBrdmwsIEtWIGt2bCdcbiAgICB8IFJhdyAoXywgbGF6eSBrdmwpLCBLViBrdmwnXG4gICAgfCBLViBrdmwsIFJhdyAoXywgbGF6eSBrdmwnKSAtPlxuICAgICAgY29tcGFyZV9saXN0IChmdW4gKGssdmwpIChrJyx2bCcpIC0+XG4gICAgICAgIG1hdGNoIFN0cmluZy5jb21wYXJlIGsgaycgd2l0aFxuICAgICAgICB8IDAgLT4gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlIHZsIHZsJ1xuICAgICAgICB8IGMgLT4gY1xuICAgICAgKSBrdmwga3ZsJ1xuICAgIHwgUmF3IChyYXcsXyksIFJhdyAocmF3JyxfKSAtPiBjb21wYXJlX29wdCBTdHJpbmcuY29tcGFyZSByYXcgcmF3J1xuXG4gIGxldCBmaW5kIHEgayA9IHRyeSBTb21lIChMaXN0LmFzc29jIGsgcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBzcGxpdF9xdWVyeSBxcyA9XG4gICAgbGV0IGVscyA9IFN0cmluZ2V4dC5zcGxpdCB+b246JyYnIHFzIGluXG4gICAgKCogUmVwbGFjZSBhICsgaW4gYSBxdWVyeSBzdHJpbmcgd2l0aCBhIHNwYWNlIGluLXBsYWNlICopXG4gICAgbGV0IHBsdXNfdG9fc3BhY2UgcyA9XG4gICAgICBsZXQgcyA9IEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgcyBpblxuICAgICAgZm9yIGkgPSAwIHRvIEJ5dGVzLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBpZiBCeXRlcy5nZXQgcyBpID0gJysnIHRoZW4gQnl0ZXMuc2V0IHMgaSAnICdcbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCAoazo6djo6Xyk6OnRsIC0+XG4gICAgICAgIGxldCBuID0gcGx1c190b19zcGFjZSBrLFxuICAgICAgICAgICAgICAgIChtYXRjaCBTdHJpbmdleHQuc3BsaXQgfm9uOicsJyAocGx1c190b19zcGFjZSB2KSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgW10gLT4gW1wiXCJdIHwgbCAtPiBsKSBpblxuICAgICAgICBsb29wIChuOjphY2MpIHRsXG4gICAgICB8IFtrXTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssIFtdIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW106OnRsIC0+IGxvb3AgKChcIlwiLCBbXSk6OmFjYykgdGxcbiAgICAgIHwgW10gLT4gYWNjXG4gICAgaW5cbiAgICBtYXRjaCBlbHMgd2l0aFxuICAgIHwgW10gIC0+IFtcIlwiLFtdXVxuICAgIHwgZWxzIC0+IGxvb3AgW11cbiAgICAgIChMaXN0LnJldl9tYXAgKGZ1biBlbCAtPiBTdHJpbmdleHQuc3BsaXQgfm9uOic9JyBlbCB+bWF4OjIpIGVscylcblxuICAoKiBNYWtlIGEgcXVlcnkgdHVwbGUgbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcXVlcnlfb2ZfZW5jb2RlZCBxcyA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKGssIHYpIC0+IChwY3RfZGVjb2RlIGssIExpc3QubWFwIHBjdF9kZWNvZGUgdikpXG4gICAgICAoc3BsaXRfcXVlcnkgcXMpXG5cbiAgKCogQXNzZW1ibGUgYSBxdWVyeSBzdHJpbmcgc3VpdGFibGUgZm9yIHB1dHRpbmcgaW50byBhIFVSSS5cbiAgICogVHVwbGUgaW5wdXRzIGFyZSBwZXJjZW50IGRlY29kZWQgYW5kIHdpbGwgYmUgZW5jb2RlZCBieVxuICAgKiB0aGlzIGZ1bmN0aW9uLlxuICAqKVxuICBsZXQgZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgKGssdikgLT5cbiAgICAgICAgYSArIChTdHJpbmcubGVuZ3RoIGspXG4gICAgICAgICsgKExpc3QuZm9sZF9sZWZ0IChmdW4gYSBzIC0+IGErKFN0cmluZy5sZW5ndGggcykrMSkgMCB2KSArIDIpICgtMSkgbCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIChrLHYpIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfa2V5IGspO1xuICAgICAgICBpZiB2IDw+IFtdIHRoZW4gKFxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJz0nO1xuICAgICAgICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIHMgLT5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAgICAgICAgICAgKHBjdF9lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnF1ZXJ5X3ZhbHVlIHMpXG4gICAgICAgICAgICApIFwiLFwiIGJ1ZiB2KVxuICAgICAgKSBcIiZcIiBidWYgbDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IG9mX3JhdyBxcyA9XG4gICAgbGV0IGxhenlfcXVlcnkgPSBMYXp5LmZyb21fZnVuIChmdW4gKCkgLT4gcXVlcnlfb2ZfZW5jb2RlZCBxcykgaW5cbiAgICBSYXcgKFNvbWUgcXMsIGxhenlfcXVlcnkpXG5cbiAgbGV0IGt2ID0gZnVuY3Rpb24gUmF3IChfLCBsYXp5IGt2KSB8IEtWIGt2IC0+IGt2XG5lbmRcblxubGV0IHF1ZXJ5X29mX2VuY29kZWQgPSBRdWVyeS5xdWVyeV9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lID0gUXVlcnkuZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lXG5cbigqIFR5cGUgb2YgdGhlIFVSSSwgd2l0aCBtb3N0IGJpdHMgYmVpbmcgb3B0aW9uYWwgKilcbnR5cGUgdCA9IHtcbiAgc2NoZW1lOiBQY3QuZGVjb2RlZCBvcHRpb247XG4gIHVzZXJpbmZvOiBVc2VyaW5mby50IG9wdGlvbjtcbiAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICB8IGBJcHY2X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYEhvc3Qgb2YgUGN0LmRlY29kZWRdIG9wdGlvbiA7XG4gIHBvcnQ6IGludCBvcHRpb247XG4gIHBhdGg6IFBhdGgudDtcbiAgcXVlcnk6IFF1ZXJ5LnQ7XG4gIGZyYWdtZW50OiBQY3QuZGVjb2RlZCBvcHRpb247XG59XG5cbmxldCBlbXB0eSA9IHtcbiAgc2NoZW1lID0gTm9uZTtcbiAgdXNlcmluZm8gPSBOb25lO1xuICBob3N0ID0gTm9uZTtcbiAgcG9ydCA9IE5vbmU7XG4gIHBhdGggPSBbXTtcbiAgcXVlcnkgPSBRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pO1xuICBmcmFnbWVudCA9IE5vbmU7XG59XG5cbmxldCBjb21wYXJlX2RlY29kZWQgPSBQY3QudW5saWZ0X2RlY29kZWQyIFN0cmluZy5jb21wYXJlXG5sZXQgY29tcGFyZV9kZWNvZGVkX29wdCA9IGNvbXBhcmVfb3B0IGNvbXBhcmVfZGVjb2RlZFxubGV0IGNvbXBhcmVfaG9zdCBoMSBoMiA9XG4gIG1hdGNoIGgxLCBoMiB3aXRoXG4gIHwgYElwdjRfbGl0ZXJhbCBpcDEsIGBJcHY0X2xpdGVyYWwgaXAyIC0+IFN0cmluZy5jb21wYXJlIGlwMSBpcDJcbiAgfCBgSXB2Nl9saXRlcmFsIGlwMSwgYElwdjZfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBIb3N0IGgxLCBgSG9zdCBoMiAtPiBjb21wYXJlX2RlY29kZWQgaDEgaDJcbiAgfCBfIC0+IC0xXG5sZXQgY29tcGFyZV9ob3N0X29wdCA9IGNvbXBhcmVfb3B0IGNvbXBhcmVfaG9zdFxuXG5sZXQgY29tcGFyZSB0IHQnID1cbiAgKG1hdGNoIGNvbXBhcmVfaG9zdF9vcHQgdC5ob3N0IHQnLmhvc3Qgd2l0aFxuICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfZGVjb2RlZF9vcHQgdC5zY2hlbWUgdCcuc2NoZW1lIHdpdGhcbiAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IChmdW4gcCBwJyAtPlxuICAgICAgaWYgcCA8IHAnIHRoZW4gLTEgZWxzZSBpZiBwID4gcCcgdGhlbiAxIGVsc2UgMFxuICAgICkgdC5wb3J0IHQnLnBvcnQgd2l0aFxuICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlX29wdCBVc2VyaW5mby5jb21wYXJlIHQudXNlcmluZm8gdCcudXNlcmluZm8gd2l0aFxuICAgICAgICB8IDAgLT4gKG1hdGNoIFBhdGguY29tcGFyZSB0LnBhdGggdCcucGF0aCB3aXRoXG4gICAgICAgICAgfCAwIC0+IChtYXRjaCBRdWVyeS5jb21wYXJlIHQucXVlcnkgdCcucXVlcnkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+IGNvbXBhcmVfZGVjb2RlZF9vcHQgdC5mcmFnbWVudCB0Jy5mcmFnbWVudFxuICAgICAgICAgICAgfCBjIC0+IGMpXG4gICAgICAgICAgfCBjIC0+IGMpXG4gICAgICAgIHwgYyAtPiBjKVxuICAgICAgfCBjIC0+IGMpXG4gICAgfCBjIC0+IGMpXG4gIHwgYyAtPiBjKVxuXG5sZXQgZXF1YWwgdCB0JyA9IGNvbXBhcmUgdCB0JyA9IDBcblxubGV0IHVuY2FzdF9vcHQgPSBmdW5jdGlvblxuICB8IFNvbWUgaCAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgaClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IG5vcm1hbGl6ZSBzY2hlbSB1cmkgPVxuICBsZXQgbW9kdWxlIFNjaGVtZSA9XG4gICAgKHZhbCAobW9kdWxlX29mX3NjaGVtZSAodW5jYXN0X29wdCBzY2hlbSkpIDogU2NoZW1lKSBpblxuICBsZXQgZG9iIGYgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IFNvbWUgKFBjdC51bmxpZnRfZGVjb2RlZCBmIHgpXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgaW4ge3VyaSB3aXRoXG4gICAgICBzY2hlbWU9ZG9iIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgdXJpLnNjaGVtZTtcbiAgICAgIGhvc3Q9IG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgICAgICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBJcHY0X2xpdGVyYWwgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCBob3N0KSlcbiAgICAgICB8IFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBJcHY2X2xpdGVyYWwgKFNjaGVtZS5ub3JtYWxpemVfaG9zdCBob3N0KSlcbiAgICAgICB8IFNvbWUgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICBTb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IChQY3QudW5jYXN0X2RlY29kZWQgaG9zdCkpKSlcbiAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB9XG5cbigqKiBDb252ZXJ0IGEgVVJJIHN0cnVjdHVyZSBpbnRvIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZ1xuICAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4zPlxuKilcbmxldCB0b19zdHJpbmcgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID1cbiAgbGV0IHNjaGVtZSA9IG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgIHwgU29tZSBzIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBzKVxuICAgIHwgTm9uZSAtPiBOb25lIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDEyOCBpblxuICAoKiBQZXJjZW50IGVuY29kZSBhIGRlY29kZWQgc3RyaW5nIGFuZCBhZGQgaXQgdG8gdGhlIGJ1ZmZlciAqKVxuICBsZXQgYWRkX3BjdF9zdHJpbmcgPyhjb21wb25lbnQ9YFBhdGgpIHggPVxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUGN0LnVuY2FzdF9lbmNvZGVkIChQY3QuZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB4KSlcbiAgaW5cbiAgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgfE5vbmUgLT4gKClcbiAgIHxTb21lIHggLT5cbiAgICAgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5zY2hlbWUgeDtcbiAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOidcbiAgKTtcbiAgKCogVVJJIGhhcyBhIGhvc3QgaWYgYW55IGhvc3QtcmVsYXRlZCBjb21wb25lbnQgaXMgc2V0LiBEZWZhdWx0cyB0byBcIlwiLiAqKVxuICBpZiAobWF0Y2ggdXJpLnVzZXJpbmZvLCB1cmkuaG9zdCwgdXJpLnBvcnQgd2l0aFxuICB8IFNvbWUgXywgXywgXyB8IF8sIFNvbWUgXywgXyB8IF8sIF8sIFNvbWUgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIvL1wiO1xuICAobWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgdXNlcmluZm8gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvKSk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnQCdcbiAgKTtcbiAgKG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgKGBIb3N0IGhvc3QpIC0+XG4gICAgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5ob3N0IGhvc3Q7XG4gIHxTb21lIChgSXB2NF9saXRlcmFsIGhvc3QpIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBob3N0XG4gIHxTb21lIChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdbJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBob3N0O1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXSdcbiAgKTtcbiAgKG1hdGNoIHVyaS5wb3J0IHdpdGhcbiAgfE5vbmUgLT4gKClcbiAgfFNvbWUgcG9ydCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoc3RyaW5nX29mX2ludCBwb3J0KVxuICApO1xuICAobWF0Y2ggdXJpLnBhdGggd2l0aCAoKiBIYW5kbGUgcmVsYXRpdmUgcGF0aHMgY29ycmVjdGx5ICopXG4gIHwgW10gLT4gKClcbiAgfCBcIi9cIjo6XyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoUGN0LnVuY2FzdF9lbmNvZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5wYXRoIHVyaS5wYXRoKSlcbiAgfCBmaXJzdF9zZWdtZW50OjpfIC0+XG4gICAgKG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgICAgfCBTb21lIF8gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnLydcbiAgICAgfCBOb25lIC0+XG4gICAgICAgKCogZW5zdXJlIHJvdW5kdHJpcCBieSBmb3JjaW5nIHJlbGF0aXZlIHBhdGggaW50ZXJwcmV0YXRpb24gbm90IHNjaGVtZSAqKVxuICAgICAgIG1hdGNoIFN0cmluZ2V4dC5maW5kX2Zyb20gZmlyc3Rfc2VnbWVudCB+cGF0dGVybjpcIjpcIiB3aXRoXG4gICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgfCBTb21lIF8gLT4gbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiLi9cIlxuICAgICk7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmXG4gICAgICAoUGN0LnVuY2FzdF9lbmNvZGVkIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICApO1xuICBRdWVyeS4obWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgICB8IFJhdyAoTm9uZSxfKSB8IEtWIFtdIC0+ICgpXG4gICAgfCBSYXcgKF8sbGF6eSBxKSB8IEtWIHEgLT4gKCogbm9ybWFsaXplIGUuZy4gcGVyY2VudCBjYXBpdGFsaXphdGlvbiAqKVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSB+cGN0X2VuY29kZXIgcSlcbiAgKTtcbiAgKG1hdGNoIHVyaS5mcmFnbWVudCB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgZiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcjJzsgYWRkX3BjdF9zdHJpbmcgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5mcmFnbWVudCBmXG4gICk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxuKCogVmFyaW91cyBhY2Nlc3NvciBmdW5jdGlvbnMsIGFzIHRoZSBleHRlcm5hbCB1cmkgdHlwZSBpcyBhYnN0cmFjdCAgKilcbmxldCBnZXRfZGVjb2RlZF9vcHQgPSBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfFNvbWUgeCAtPiBTb21lIChQY3QudW5jYXN0X2RlY29kZWQgeClcbmxldCBzY2hlbWUgdXJpID0gZ2V0X2RlY29kZWRfb3B0IHVyaS5zY2hlbWVcbmxldCB3aXRoX3NjaGVtZSB1cmkgPVxuICBmdW5jdGlvblxuICB8U29tZSBzY2hlbWUgLT4geyB1cmkgd2l0aCBzY2hlbWU9U29tZSAoUGN0LmNhc3RfZGVjb2RlZCBzY2hlbWUpIH1cbiAgfE5vbmUgLT4geyB1cmkgd2l0aCBzY2hlbWU9Tm9uZSB9XG5cbmxldCBob3N0IHVyaSA9XG4gIG1hdGNoIHVyaS5ob3N0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChgSXB2NF9saXRlcmFsIGggfCBgSXB2Nl9saXRlcmFsIGgpIC0+IFNvbWUgaFxuICB8IFNvbWUgKGBIb3N0IGgpIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG5sZXQgaG9zdF93aXRoX2RlZmF1bHQgPyhkZWZhdWx0PVwibG9jYWxob3N0XCIpIHVyaSA9XG4gIG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgfE5vbmUgLT4gZGVmYXVsdFxuICB8U29tZSBoIC0+IGhcblxubGV0IHVzZXJpbmZvID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1c2VyaW5mbyAtPiBTb21lIChQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICAgIHwgTm9uZSAtPiBlbmNvZGVkX29mX3VzZXJpbmZvIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm9cbiAgICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3VzZXJpbmZvIH5zY2hlbWU6KFBjdC51bmNhc3RfZGVjb2RlZCBzKSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnVzZXJpbmZvIHVzZXJpbmZvKSlcbmxldCB3aXRoX3VzZXJpbmZvIHVyaSB1c2VyaW5mbyA9XG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgaW5cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgdXNlcmluZm89dXNlcmluZm8gfVxuICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHVzZXJpbmZvPXVzZXJpbmZvIH1cblxubGV0IHVzZXIgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lICh1c2VyLCBfKSAtPiBTb21lIHVzZXJcblxubGV0IHBhc3N3b3JkIHVyaSA9IG1hdGNoIHVyaS51c2VyaW5mbyB3aXRoXG4gIHwgTm9uZSB8IFNvbWUgKF8sIE5vbmUpIC0+IE5vbmVcbiAgfCBTb21lIChfLCBTb21lIHBhc3MpIC0+IFNvbWUgcGFzc1xubGV0IHdpdGhfcGFzc3dvcmQgdXJpIHBhc3N3b3JkID1cbiAgbGV0IHJlc3VsdCB1c2VyaW5mbyA9IG1hdGNoIGhvc3QgdXJpIHdpdGhcbiAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PVNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIFwiXCIpKTsgdXNlcmluZm89dXNlcmluZm8gfVxuICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuICBpblxuICBtYXRjaCB1cmkudXNlcmluZm8sIHBhc3N3b3JkIHdpdGhcbiAgfCBOb25lLCBOb25lIC0+IHVyaVxuICB8IE5vbmUsIFNvbWUgXyAtPiByZXN1bHQgKFNvbWUgKFwiXCIscGFzc3dvcmQpKVxuICB8IFNvbWUgKHVzZXIsXyksIF8gLT4gcmVzdWx0IChTb21lICh1c2VyLCBwYXNzd29yZCkpXG5cbmxldCBwb3J0IHVyaSA9IHVyaS5wb3J0XG5sZXQgd2l0aF9wb3J0IHVyaSBwb3J0ID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIHBvcnQ9cG9ydCB9XG4gIHwgTm9uZSAtPiBiZWdpblxuICAgICBtYXRjaCBwb3J0IHdpdGhcbiAgICAgfCBOb25lIC0+IHsgdXJpIHdpdGggaG9zdD1Ob25lOyBwb3J0PU5vbmUgfVxuICAgICB8IFNvbWUgXyAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyBwb3J0PXBvcnQgfVxuICBlbmRcblxuKCogUmV0dXJuIHRoZSBwYXRoIGNvbXBvbmVudCAqKVxubGV0IHBhdGggPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gUGN0LnVuY2FzdF9lbmNvZGVkIChtYXRjaCB1cmkuc2NoZW1lIHdpdGhcbiAgfCBOb25lIC0+IGVuY29kZWRfb2ZfcGF0aCB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGhcbiAgfCBTb21lIHMgLT4gZW5jb2RlZF9vZl9wYXRoIH5zY2hlbWU6KFBjdC51bmNhc3RfZGVjb2RlZCBzKSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpXG5sZXQgd2l0aF9wYXRoIHVyaSBwYXRoID1cbiAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcGF0aCBpblxuICBtYXRjaCBob3N0IHVyaSwgcGF0aCB3aXRoXG4gIHwgTm9uZSwgXyB8IFNvbWUgXywgXCIvXCI6Ol8gfCBTb21lIF8sIFtdIC0+IHsgdXJpIHdpdGggcGF0aD1wYXRoIH1cbiAgfCBTb21lIF8sIF8gIC0+IHsgdXJpIHdpdGggcGF0aD1cIi9cIjo6cGF0aCB9XG5cbmxldCBmcmFnbWVudCB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLmZyYWdtZW50XG5sZXQgd2l0aF9mcmFnbWVudCB1cmkgPVxuICBmdW5jdGlvblxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIGZyYWdtZW50PU5vbmUgfVxuICB8U29tZSBmcmFnIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9U29tZSAoUGN0LmNhc3RfZGVjb2RlZCBmcmFnKSB9XG5cbmxldCBxdWVyeSB1cmkgPSBRdWVyeS5rdiB1cmkucXVlcnlcbmxldCB2ZXJiYXRpbV9xdWVyeSA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBRdWVyeS4obWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgfCBSYXcgKHFzLF8pIC0+IHFzXG4gIHwgS1YgW10gLT4gTm9uZVxuICB8IEtWIGt2IC0+IFNvbWUgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZTooc2NoZW1lIHVyaSkgfnBjdF9lbmNvZGVyIGt2KVxuKVxubGV0IGdldF9xdWVyeV9wYXJhbScgdXJpIGsgPSBRdWVyeS4oZmluZCAoa3YgdXJpLnF1ZXJ5KSBrKVxubGV0IGdldF9xdWVyeV9wYXJhbSB1cmkgayA9XG4gIG1hdGNoIGdldF9xdWVyeV9wYXJhbScgdXJpIGsgd2l0aFxuICB8Tm9uZSAtPiBOb25lXG4gIHxTb21lIHYgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIixcIiB2KVxuXG5sZXQgd2l0aF9xdWVyeSB1cmkgcXVlcnkgPSB7IHVyaSB3aXRoIHF1ZXJ5PVF1ZXJ5LktWIHF1ZXJ5IH1cbmxldCBxX3MgcSA9IExpc3QubWFwIChmdW4gKGssdikgLT4gayxbdl0pIHFcbmxldCB3aXRoX3F1ZXJ5JyB1cmkgcXVlcnkgPSB3aXRoX3F1ZXJ5IHVyaSAocV9zIHF1ZXJ5KVxubGV0IGFkZF9xdWVyeV9wYXJhbSB1cmkgcCA9IFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWIChwOjooa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW0nIHVyaSAoayx2KSA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgoayxbdl0pOjooa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW1zIHVyaSBwcyA9IFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWIChwc0Aoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCBhZGRfcXVlcnlfcGFyYW1zJyB1cmkgcHMgPVxuICBRdWVyeS4oeyB1cmkgd2l0aCBxdWVyeT1LViAoKHFfcyBwcylAKGt2IHVyaS5xdWVyeSkpIH0pXG5sZXQgcmVtb3ZlX3F1ZXJ5X3BhcmFtIHVyaSBrID0gUXVlcnkuKFxuICB7IHVyaSB3aXRoIHF1ZXJ5PUtWIChMaXN0LmZpbHRlciAoZnVuIChrJyxfKSAtPiBrPD5rJykgKGt2IHVyaS5xdWVyeSkpIH1cbilcblxuKCogQ29uc3RydWN0IGVuY29kZWQgcGF0aCBhbmQgcXVlcnkgY29tcG9uZW50cyAqKVxubGV0IHBhdGhfYW5kX3F1ZXJ5IHVyaSA9XG4gIG1hdGNoIChwYXRoIHVyaSksIChxdWVyeSB1cmkpIHdpdGhcbiAgfFwiXCIsIFtdIC0+IFwiL1wiICgqIFRPRE86IFdoYXQgYWJvdXQgc2FtZSBkb2N1bWVudD8gKC8pICopXG4gIHxcIlwiLCBxIC0+ICgqIFRPRE86IFdoYXQgYWJvdXQgc2FtZSBkb2N1bWVudD8gKC8pICopXG4gICAgbGV0IHNjaGVtZSA9IHVuY2FzdF9vcHQgdXJpLnNjaGVtZSBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiLz8lc1wiIChlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgcSlcbiAgfHAsIFtdIC0+IHBcbiAgfHAsIHEgLT5cbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIlcz8lc1wiIHAgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuXG4oKiBUT0RPOiBmdW5jdGlvbnMgdG8gYWRkIGFuZCByZW1vdmUgZnJvbSBhIFVSSSAqKVxuXG4oKiBSZXNvbHZlIGEgVVJJIHdydCBhIGJhc2UgVVJJIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yPiAqKVxubGV0IHJlc29sdmUgc2NoZW0gYmFzZSB1cmkgPVxuICBsZXQgc2NoZW0gPSBTb21lIChQY3QuY2FzdF9kZWNvZGVkIChtYXRjaCBzY2hlbWUgYmFzZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gIHNjaGVtXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+IHNjaGVtZVxuICAgICkpIGluXG4gIG5vcm1hbGl6ZSBzY2hlbVxuICAgIFBhdGguKG1hdGNoIHNjaGVtZSB1cmksIHVzZXJpbmZvIHVyaSwgaG9zdCB1cmkgd2l0aFxuICAgIHwgU29tZSBfLCBfLCBfIC0+XG4gICAgICB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgU29tZSBfLCBfXG4gICAgfCBOb25lLCBfLCBTb21lIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT5cbiAgICAgIGxldCB1cmkgPSB7dXJpIHdpdGggc2NoZW1lPWJhc2Uuc2NoZW1lOyB1c2VyaW5mbz1iYXNlLnVzZXJpbmZvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBob3N0PWJhc2UuaG9zdDsgcG9ydD1iYXNlLnBvcnR9IGluXG4gICAgICBsZXQgcGF0aF9zdHIgPSBwYXRoIHVyaSBpblxuICAgICAgaWYgcGF0aF9zdHI9XCJcIlxuICAgICAgdGhlbiB7IHVyaSB3aXRoXG4gICAgICAgICAgICAgcGF0aD1iYXNlLnBhdGg7XG4gICAgICAgICAgICAgcXVlcnk9bWF0Y2ggdXJpLnF1ZXJ5IHdpdGhcbiAgICAgICAgICAgICAgIHwgUXVlcnkuUmF3IChOb25lLF8pIHwgUXVlcnkuS1YgW10gLT4gYmFzZS5xdWVyeVxuICAgICAgICAgICAgICAgfCBfIC0+IHVyaS5xdWVyeVxuICAgICAgICAgICB9XG4gICAgICBlbHNlIGlmIHBhdGhfc3RyLlswXT0nLydcbiAgICAgIHRoZW4ge3VyaSB3aXRoIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyB1cmkucGF0aH1cbiAgICAgIGVsc2Uge3VyaSB3aXRoXG4gICAgICAgIHBhdGg9cmVtb3ZlX2RvdF9zZWdtZW50cyAobWVyZ2UgYmFzZS5ob3N0IGJhc2UucGF0aCB1cmkucGF0aCk7XG4gICAgICB9XG4gICAgKVxuXG5sZXQgY2Fub25pY2FsaXplIHVyaSA9XG4gIGxldCB1cmkgPSByZXNvbHZlIFwiXCIgZW1wdHkgdXJpIGluXG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHVyaS5zY2hlbWUpKSA6IFNjaGVtZSkgaW5cbiAgeyB1cmkgd2l0aFxuICAgIHBvcnQ9U2NoZW1lLmNhbm9uaWNhbGl6ZV9wb3J0IHVyaS5wb3J0O1xuICAgIHBhdGg9U2NoZW1lLmNhbm9uaWNhbGl6ZV9wYXRoIHVyaS5wYXRoO1xuICB9XG5cbmxldCBwcCBwcGYgdXJpID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKHRvX3N0cmluZyB1cmkpXG5sZXQgcHBfaHVtIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcblxubW9kdWxlIFBhcnNlciA9IHN0cnVjdFxuICBvcGVuIEFuZ3N0cm9tXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyID0gU3RyaW5nLm1ha2UgMVxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhcl9saXN0IGNoYXJzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHN0cmluZ19vZl9jaGFyIGNoYXJzKVxuXG4gIGxldCBzY2hlbWUgPVxuICAgIGxpZnRcbiAgICAgIChmdW4gcyAtPiBTb21lIChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgICh0YWtlX3doaWxlIChmdW4gYyAtPiBjIDw+ICc6JyAmJiBjIDw+ICcvJyAmJiBjIDw+ICc/JyAmJiBjIDw+ICcjJylcbiAgICAgIDwqIGNoYXIgJzonKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBpc19kaWdpdCA9IGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICBsZXQgaGV4X2RpZ2l0ID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IGhleGFkZWNpbWFsID0gbGlmdCBzdHJpbmdfb2ZfY2hhcl9saXN0IChtYW55IGhleF9kaWdpdClcblxuICBsZXQgY19kb3QgPSBjaGFyICcuJ1xuXG4gIGxldCBjX2F0ID0gY2hhciAnQCdcblxuICBsZXQgY19jb2xvbiA9IGNoYXIgJzonXG5cbiAgbGV0IGRlY19vY3RldCA9XG4gICAgdGFrZV93aGlsZTEgKGZ1bmN0aW9uICcwJyAuLiAnOScgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpID4+PSBmdW4gbnVtIC0+XG4gICAgaWYgaW50X29mX3N0cmluZyBudW0gPCAyNTYgdGhlblxuICAgICAgcmV0dXJuIG51bVxuICAgIGVsc2VcbiAgICAgIGZhaWwgXCJpbnZhbGlkIG9jdGVjdFwiXG5cbiAgbGV0IGlwdjRfYWRkcmVzcyA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4gdGhyZWUgb25lIC0+IFN0cmluZy5jb25jYXQgXCIuXCIgdGhyZWUgXiBcIi5cIiBeIG9uZSlcbiAgICAgIChjb3VudCAzIChkZWNfb2N0ZXQgPCogY19kb3QpKVxuICAgICAgZGVjX29jdGV0XG5cbiAgKCogLS0gYWZ0ZXIgZG91YmxlIGNvbG9uLCBJUHY0IGRvdHRlZCBub3RhdGlvbiBjb3VsZCBhcHBlYXIgYW55d2hlcmUgKilcbiAgbGV0IGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgZml4IChmdW4gZiAtPlxuICAgICAgICBsaXN0IFsgaXB2NF9hZGRyZXNzIF1cbiAgICAgICAgPHw+IGxpZnQyIChmdW4geCB5IC0+IHggOjogeSkgaGV4YWRlY2ltYWwgKGNfY29sb24gKj4gZiA8fD4gcmV0dXJuIFtdKSlcblxuICBsZXQgZG91YmxlX2NvbG9uIGNvdW50ID1cbiAgICBhZnRlcl9kb3VibGVfY29sb24gPj49IChmdW4gcmVzdCAtPlxuICAgIGxldCBmaWxsZXJfbGVuZ3RoID0gOCAtIGNvdW50IC0gTGlzdC5sZW5ndGggcmVzdCBpblxuICAgIGlmIGZpbGxlcl9sZW5ndGggPD0gMCB0aGVuXG4gICAgICBmYWlsIFwidG9vIG1hbnkgcGFydHMgaW4gSVB2NiBhZGRyZXNzXCJcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKFwiXCIgOjogcmVzdCkpXG4gICAgPHw+IHJldHVybiBbXCJcIl1cblxuICBsZXQgcmVjIHBhcnQgPSBmdW5jdGlvblxuICAgIHwgNyAtPlxuICAgICAgKCogbWF4IDggcGFydHMgaW4gYW4gSVB2NiBhZGRyZXNzICopXG4gICAgICBsaWZ0IChmdW4geCAtPiBbIHggXSkgaGV4YWRlY2ltYWxcbiAgICB8IDYgLT5cbiAgICAgICgqIGFmdGVyIDYgcGFydHMgaXQgY291bGQgZW5kIGluIElQdjQgZG90dGVkIG5vdGF0aW9uICopXG4gICAgICBsaXN0IFsgaXB2NF9hZGRyZXNzIF0gPHw+IGhleF9wYXJ0IDZcbiAgICB8IG4gLT5cbiAgICAgIGhleF9wYXJ0IG5cblxuICBhbmQgaGV4X3BhcnQgbiA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4geCB5IC0+IHggOjogeSlcbiAgICAgIGhleGFkZWNpbWFsXG4gICAgICAoY19jb2xvbiAqPiAoY19jb2xvbiAqPiBkb3VibGVfY29sb24gKG4gKyAxKSA8fD4gcGFydCAobiArIDEpKSlcblxuICBsZXQgcmVjIHNwbGl0X3dpdGggZiB4cyA9XG4gICAgbWF0Y2ggeHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIFtdLCBbXVxuICAgIHwgeSA6OiB5cyAtPlxuICAgICAgaWYgZiB5IHRoZW5cbiAgICAgICAgbGV0IHpzLCB0cyA9IHNwbGl0X3dpdGggZiB5cyBpblxuICAgICAgICB5IDo6IHpzLCB0c1xuICAgICAgZWxzZVxuICAgICAgICBbXSwgeHNcblxuICBsZXQgaXB2NiA9XG4gICAgbGV0IGZvcm1hdF9hZGRyIHNlZ21lbnRzID1cbiAgICAgIGxldCBiZWZvcmVfZG91YmxlX2NvbG9uLCBhZnRlcl9kb3VibGVfY29sb24gPVxuICAgICAgICBzcGxpdF93aXRoIChmdW4gc2VnbWVudCAtPiBzZWdtZW50IDw+IFwiXCIpIHNlZ21lbnRzXG4gICAgICBpblxuICAgICAgbGV0IGJlZm9yZSA9IFN0cmluZy5jb25jYXQgXCI6XCIgYmVmb3JlX2RvdWJsZV9jb2xvbiBpblxuICAgICAgbGV0IHJlcyA9XG4gICAgICAgIG1hdGNoIGFmdGVyX2RvdWJsZV9jb2xvbiB3aXRoXG4gICAgICAgIHwgXCJcIiA6OiB4cyAtPlxuICAgICAgICAgIGJlZm9yZSBeIFwiOjpcIiBeIFN0cmluZy5jb25jYXQgXCI6XCIgeHNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgYmVmb3JlXG4gICAgICBpblxuICAgICAgcmVzXG4gICAgaW5cbiAgICBsaWZ0IGZvcm1hdF9hZGRyIChjX2NvbG9uICo+IGNfY29sb24gKj4gZG91YmxlX2NvbG9uIDAgPHw+IHBhcnQgMClcblxuICBsZXQgaXB2Nl9hZGRyZXNzID1cbiAgICAoY2hhciAnWycpICo+IGlwdjYgPCogKGNoYXIgJ10nKVxuXG4gIGxldCBwY3RfZW5jb2RlZCA9XG4gICAgbGlmdDJcbiAgICAgIChmdW4gcGN0IGRpZ2l0cyAtPiBzdHJpbmdfb2ZfY2hhcl9saXN0IChwY3QgOjogZGlnaXRzKSlcbiAgICAgIChjaGFyICclJylcbiAgICAgIChjb3VudCAyIGhleF9kaWdpdClcblxuICBsZXQgc3ViX2RlbGltcyA9XG4gICAgc2F0aXNmeSAoZnVuY3Rpb25cbiAgICAgICAgfCAnIScgfCAnJCcgfCAnJicgfCAnXFwnJyB8ICcoJyB8ICcpJyB8ICcqJyB8ICcrJyB8ICcsJyB8ICc7JyB8ICc9JyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IHVucmVzZXJ2ZWQgPVxuICAgICgqIFwiW0EtWmEtejAtOS0uX35dXCIgKilcbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICctJyB8ICcuJyB8ICdfJyB8ICd+JyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgZmFsc2UpXG5cbiAgbGV0IHJlZ19uYW1lID1cbiAgICBsaWZ0XG4gICAgICAoU3RyaW5nLmNvbmNhdCBcIlwiKVxuICAgICAgKG1hbnlcbiAgICAgICAgIChjaG9pY2VcbiAgICAgICAgICAgIFsgc3RyaW5nX29mX2NoYXIgPCQ+IHVucmVzZXJ2ZWRcbiAgICAgICAgICAgIDsgcGN0X2VuY29kZWRcbiAgICAgICAgICAgIDsgc3RyaW5nX29mX2NoYXIgPCQ+IHN1Yl9kZWxpbXNcbiAgICAgICAgICAgIF0pKVxuXG4gIGxldCBob3N0ID1cbiAgICBjaG9pY2VcbiAgICAgIFsgaXB2NF9hZGRyZXNzID4+fCAoZnVuIGggLT4gYElwdjRfbGl0ZXJhbCBoKVxuICAgICAgOyBpcHY2X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2Nl9saXRlcmFsIGgpXG4gICAgICA7IHJlZ19uYW1lID4+fCAoZnVuIHMgLT4gYEhvc3QgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKCogVE9ETyhkaW5vc2F1cmUpOiBBY2NvcmRpbmcgdG8gUkZDMzk4NjpcblxuICAgICAgICAgaG9zdCAgICAgICAgPSBJUC1saXRlcmFsIC8gSVB2NGFkZHJlc3MgLyByZWctbmFtZVxuICAgICAgICAgSVAtbGl0ZXJhbCAgPSBcIltcIiAoIElQdjZhZGRyZXNzIC8gSVB2RnV0dXJlICApIFwiXVwiXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcblxuICAgICAgICAgSVB2RnV0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZC4gV2Ugc2hvdWxkIGhhbmRsZSBpdDpcblxuICAgICAgICAgSVB2RnV0dXJlICAgPSBcInZcIiAxKkhFWERJRyBcIi5cIiAxKiggdW5yZXNlcnZlZCAvIHN1Yi1kZWxpbXMgLyBcIjpcIiApXG4gICAgICAgKilcbiAgICAgIF1cblxuICBsZXQgdXNlcmluZm8gPVxuICAgIGxpZnRcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgcyA9IFN0cmluZy5jb25jYXQgXCJcIiB4IGluXG4gICAgICAgIFNvbWUgKFVzZXJpbmZvLnVzZXJpbmZvX29mX2VuY29kZWQgcykpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gY19jb2xvblxuICAgICAgICAgICAgXSlcbiAgICAgIDwqIGNfYXQpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IHBvcnQgPVxuICAgIHBlZWtfY2hhciA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgJzonIC0+XG4gICAgICBjX2NvbG9uICo+IHRha2Vfd2hpbGUgaXNfZGlnaXQgPj58IGZ1biBwb3J0IC0+XG4gICAgICBsZXQgZGVjb2RlZCA9IFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcG9ydCkgaW5cbiAgICAgICh0cnkgU29tZSAoaW50X29mX3N0cmluZyAoUGN0LnVuY2FzdF9kZWNvZGVkIGRlY29kZWQpKSB3aXRoIF8gLT4gTm9uZSlcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgIHJldHVybiBOb25lXG5cbiAgbGV0IGF1dGhvcml0eSA9XG4gICAgc3RyaW5nIFwiLy9cIlxuICAgICo+IGxpZnQzXG4gICAgICAgICAoZnVuIHVzZXJpbmZvIGhvc3QgcG9ydCAtPlxuICAgICAgICAgICB1c2VyaW5mbywgU29tZSBob3N0LCBwb3J0KVxuICAgICAgICAgdXNlcmluZm9cbiAgICAgICAgIGhvc3RcbiAgICAgICAgIHBvcnRcbiAgICA8fD4gcmV0dXJuIChOb25lLCBOb25lLCBOb25lKVxuXG4gIGxldCBwYXRoID1cbiAgICBsaWZ0XG4gICAgICBQYXRoLnBhdGhfb2ZfZW5jb2RlZFxuICAgICAgKHRha2Vfd2hpbGUgKGZ1bmN0aW9uICc/JyB8ICcjJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSkpXG5cbiAgbGV0IHF1ZXJ5ID1cbiAgICBsaWZ0XG4gICAgICBRdWVyeS5vZl9yYXdcbiAgICAgIChjaGFyICc/JyAqPiB0YWtlX3RpbGwgKGZ1bmN0aW9uICcjJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkpXG4gICAgPHw+IHJldHVybiAoUXVlcnkuUmF3IChOb25lLCBMYXp5LmZyb21fdmFsIFtdKSlcblxuICBsZXQgZnJhZ21lbnQgPVxuICAgIGxpZnRcbiAgICAgIChmdW4gcyAtPiBTb21lIChQY3QuZGVjb2RlIChQY3QuY2FzdF9lbmNvZGVkIHMpKSlcbiAgICAgIChjaGFyICcjJyAqPiB0YWtlX3doaWxlIChmdW4gXyAtPiB0cnVlKSlcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgX3VyaV9yZWZlcmVuY2UgPVxuICAgIGxpZnQ0XG4gICAgICAoZnVuIHNjaGVtZSAodXNlcmluZm8sIGhvc3QsIHBvcnQpIHBhdGggcXVlcnkgZnJhZ21lbnQgLT5cbiAgICAgICAgbm9ybWFsaXplIHNjaGVtZSB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9KVxuICAgICAgc2NoZW1lXG4gICAgICBhdXRob3JpdHlcbiAgICAgIHBhdGhcbiAgICAgIHF1ZXJ5XG4gICAgPCo+IGZyYWdtZW50XG5cbiAgKCogWFhYKGFubW9udGVpcm8pOiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIHdpdGggdGhlIG9sZCByZWdleCBwYXJzZXIsIHdlXG4gICAqIG9ubHkgcGFyc2UgdW50aWwgdGhlIGZpcnN0IG5ld2xpbmUgY2hhcmFjdGVyIGFuZCBkcm9wIGV2ZXJ5dGhpbmcgZWxzZVxuICAgKiBhZnRlciB0aGF0ICopXG4gIGxldCB1cmlfcmVmZXJlbmNlID1cbiAgICB0YWtlX3doaWxlIChmdW5jdGlvbiB8ICdcXG4nIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSA+PnwgZnVuIHMgLT5cbiAgICAgIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgX3VyaV9yZWZlcmVuY2UgcyB3aXRoXG4gICAgICB8IE9rIHQgLT4gdFxuICAgICAgfCBFcnJvciBfIC0+XG4gICAgICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgICAgICBlbXB0eVxuZW5kXG5cbmxldCBkZWNvZGVfaG9zdCBob3N0ID1cbiAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaG9zdCBob3N0IHdpdGhcbiAgfCBPayBwYXJzZWQgLT4gcGFyc2VkXG4gIHwgRXJyb3IgXyAtPlxuICAgIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpBbGwgUGFyc2VyLmlwdjYgaG9zdCB3aXRoXG4gICAgfCBPayBwYXJzZWQgLT4gKGBJcHY2X2xpdGVyYWwgcGFyc2VkKVxuICAgIHwgRXJyb3IgXyAtPiAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgaG9zdCkpXG5cbigqIE1ha2UgYSBVUkkgcmVjb3JkLiBUaGlzIGlzIGEgYml0IG1vcmUgaW5lZmZpY2llbnQgdGhhbiBpdCBuZWVkcyB0byBiZSBkdWUgdG8gdGhlXG4gKiBjYXN0aW5nL3VuY2FzdGluZyAod2hpY2ggaXNuJ3QgZnVsbHkgaWRlbnRpdHkgZHVlIHRvIHRoZSBvcHRpb24gYm94KSwgYnV0IGl0IGlzXG4gKiBubyBiaWcgZGVhbCBmb3Igbm93LlxuKilcbmxldCBtYWtlID9zY2hlbWUgP3VzZXJpbmZvID9ob3N0ID9wb3J0ID9wYXRoID9xdWVyeSA/ZnJhZ21lbnQgKCkgPVxuICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICB8U29tZSB4IC0+IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgeCkgfE5vbmUgLT4gTm9uZSBpblxuICBsZXQgaG9zdCA9IG1hdGNoIHVzZXJpbmZvLCBob3N0LCBwb3J0IHdpdGhcbiAgICB8IF8sIFNvbWUgXywgXyB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gaG9zdFxuICAgIHwgU29tZSBfLCBOb25lLCBfIHwgXywgTm9uZSwgU29tZSBfIC0+IFNvbWUgXCJcIlxuICBpblxuICBsZXQgdXNlcmluZm8gPSBtYXRjaCB1c2VyaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICBsZXQgcGF0aCA9IG1hdGNoIHBhdGggd2l0aFxuICAgIHxOb25lIC0+IFtdIHwgU29tZSBwIC0+XG4gICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICBtYXRjaCBob3N0LCBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSwgXyB8IFNvbWUgXywgXCIvXCI6Ol8gfCBTb21lIF8sIFtdIC0+IHBhdGhcbiAgICAgIHwgU29tZSBfLCBfICAtPiBcIi9cIjo6cGF0aFxuICBpblxuICBsZXQgcXVlcnkgPSBtYXRjaCBxdWVyeSB3aXRoXG4gICAgfCBOb25lIC0+IFF1ZXJ5LktWIFtdXG4gICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICBpblxuICBsZXQgc2NoZW1lID0gZGVjb2RlIHNjaGVtZSBpblxuICBub3JtYWxpemUgc2NoZW1lXG4gICAgeyBzY2hlbWU7IHVzZXJpbmZvO1xuICAgICAgaG9zdCA9XG4gICAgICAgIChtYXRjaCBob3N0IHdpdGhcbiAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgfCBOb25lIC0+IE5vbmUpO1xuICAgICAgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50PWRlY29kZSBmcmFnbWVudCB9XG5cbmxldCB3aXRoX2hvc3QgdXJpIGhvc3QgPVxuICB7IHVyaSB3aXRoXG4gICAgaG9zdCA9IChtYXRjaCBob3N0IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBob3N0IC0+IFNvbWUgKGRlY29kZV9ob3N0IGhvc3QpXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgfVxuXG5sZXQgd2l0aF91cmkgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCB1cmkgPVxuICBsZXQgd2l0aF9wYXRoX29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3BhdGggdSBcIlwiXG4gICAgfCBTb21lIHAgLT4gd2l0aF9wYXRoIHUgcFxuICBpblxuICBsZXQgd2l0aF9xdWVyeV9vcHQgdSBvID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gd2l0aF9xdWVyeSB1IFtdXG4gICAgfCBTb21lIHEgLT4gd2l0aF9xdWVyeSB1IHFcbiAgaW5cbiAgbGV0IHdpdGhfIGYgbyB1ID1cbiAgICBtYXRjaCBvIHdpdGhcbiAgICB8IE5vbmUgLT4gdVxuICAgIHwgU29tZSB4IC0+IGYgdSB4XG4gIGluXG4gIHdpdGhfIHdpdGhfc2NoZW1lIHNjaGVtZSB1cmlcbiAgfD4gd2l0aF8gd2l0aF91c2VyaW5mbyB1c2VyaW5mb1xuICB8PiB3aXRoXyB3aXRoX2hvc3QgaG9zdFxuICB8PiB3aXRoXyB3aXRoX3BvcnQgcG9ydFxuICB8PiB3aXRoXyB3aXRoX3BhdGhfb3B0IHBhdGhcbiAgfD4gd2l0aF8gd2l0aF9xdWVyeV9vcHQgcXVlcnlcbiAgfD4gd2l0aF8gd2l0aF9mcmFnbWVudCBmcmFnbWVudFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICAoKiBUbyBwcmVzZXJ2ZSB0aGUgb2xkIHJlZ2V4IHBhcnNlcidzIGJlaGF2aW9yLCB3ZSBvbmx5IHBhcnNlIGEgcHJlZml4LCBhbmRcbiAgICogc3RvcCB3aGVuZXZlciB3ZSBjYW4ndCBwYXJzZSBtb3JlLiAqKVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6UHJlZml4IFBhcnNlci51cmlfcmVmZXJlbmNlIHMgd2l0aFxuICB8IE9rIHQgLT4gdFxuICB8IEVycm9yIF8gLT5cbiAgICAoKiBTaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiBpZiB0aGUgcGFyc2VyIGlzIGZvcmdpdmluZy4gKilcbiAgICBlbXB0eVxuXG5tb2R1bGUgQWJzb2x1dGVfaHR0cCA9IHN0cnVjdFxuICB0eXBlIHVyaSA9IHRcbiAgdHlwZSB0ID1cbiAgICB7IHNjaGVtZSA6IFsgYEh0dHAgfCBgSHR0cHMgXTtcbiAgICAgIHVzZXJpbmZvOiBVc2VyaW5mby50IG9wdGlvbjtcbiAgICAgIGhvc3Q6IFsgYElwdjRfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgICAgIHwgYEhvc3Qgb2YgUGN0LmRlY29kZWRdO1xuICAgICAgcG9ydCA6IGludCBvcHRpb247XG4gICAgICBwYXRoIDogUGF0aC50O1xuICAgICAgcXVlcnkgOiBRdWVyeS50O1xuICAgICAgZnJhZ21lbnQgOiBQY3QuZGVjb2RlZCBvcHRpb25cbiAgICB9XG5cbiAgbGV0ICggbGV0KiApID0gUmVzdWx0LmJpbmRcblxuICBsZXQgdG9fdXJpIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0gPVxuICAgIGxldCBzY2hlbWUgPVxuICAgICAgbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgIHwgYEh0dHAgLT4gUGN0LmNhc3RfZGVjb2RlZCBcImh0dHBcIlxuICAgICAgfCBgSHR0cHMgLT4gUGN0LmNhc3RfZGVjb2RlZCBcImh0dHBzXCJcbiAgICBpblxuICAgICh7IHNjaGVtZSA9IFNvbWUgc2NoZW1lO1xuICAgICAgIHVzZXJpbmZvO1xuICAgICAgIGhvc3QgPSBTb21lIGhvc3Q7XG4gICAgICAgcG9ydDtcbiAgICAgICBwYXRoO1xuICAgICAgIHF1ZXJ5O1xuICAgICAgIGZyYWdtZW50IH0gOiB1cmkpXG4gIDs7XG5cbiAgbGV0IG9mX3VyaSAoeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfTogdXJpKSA9XG4gICAgbGV0KiBzY2hlbWUgPVxuICAgICAgbWF0Y2ggc2NoZW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFcnJvciAoYE1zZyBcIk5vIHNjaGVtZSBwcmVzZW50IGluIFVSSVwiKVxuICAgICAgfCBTb21lIHNjaGVtZSAtPlxuICAgICAgICAobWF0Y2ggUGN0LnVuY2FzdF9kZWNvZGVkIHNjaGVtZSB3aXRoXG4gICAgICAgICB8IFwiaHR0cFwiIC0+IE9rIGBIdHRwXG4gICAgICAgICB8IFwiaHR0cHNcIiAtPiBPayBgSHR0cHNcbiAgICAgICAgIHwgdW5zdXBwb3J0ZWRfc2NoZW1lIC0+XG4gICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgKGBNc2dcbiAgICAgICAgICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgICAgICBcIk9ubHkgaHR0cCBhbmQgaHR0cHMgVVJJcyBhcmUgc3VwcG9ydGVkLiAlcyBpcyBpbnZhbGlkLlwiXG4gICAgICAgICAgICAgICAgICAgdW5zdXBwb3J0ZWRfc2NoZW1lKSkpXG4gICAgaW5cbiAgICBsZXQqIGhvc3QgPSBPcHRpb24udG9fcmVzdWx0IH5ub25lOihgTXNnIFwiaG9zdCBpcyByZXF1aXJlZCBmb3IgSFRUUChTKSB1cmlzXCIpIGhvc3QgaW5cbiAgICBPayB7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9XG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID0gbWF0Y2ggb2Zfc3RyaW5nIHMgfD4gb2ZfdXJpIHdpdGhcbiAgICB8IE9rIHQgLT4gdFxuICAgIHwgRXJyb3IgKGBNc2cgZXJyb3IpIC0+IGZhaWx3aXRoIGVycm9yXG5cbiAgbGV0IHRvX3N0cmluZyA/cGN0X2VuY29kZXIgdCA9IHRvX3VyaSB0IHw+IHRvX3N0cmluZyA/cGN0X2VuY29kZXJcblxuICBsZXQgbm9ybWFsaXplIHQgPVxuICAgIHsgdCB3aXRoXG4gICAgICBob3N0ID0gbWF0Y2ggdC5ob3N0IHdpdGhcbiAgICAgICB8IChgSXB2NF9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICAoYElwdjRfbGl0ZXJhbCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBob3N0KSlcbiAgICAgICB8IChgSXB2Nl9saXRlcmFsIGhvc3QpIC0+XG4gICAgICAgICAoYElwdjZfbGl0ZXJhbCAoU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBob3N0KSlcbiAgICAgICB8IChgSG9zdCBob3N0KSAtPlxuICAgICAgICAgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIChQY3QudW5jYXN0X2RlY29kZWQgaG9zdCkpKSlcbiAgICB9XG5cbiAgbGV0IG1ha2UgfnNjaGVtZSB+aG9zdCA/dXNlcmluZm8gP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gICAgbGV0IGRlY29kZSA9IGZ1bmN0aW9uXG4gICAgICB8U29tZSB4IC0+IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgeCkgfE5vbmUgLT4gTm9uZSBpblxuICAgIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSkgaW5cbiAgICBsZXQgcGF0aCA9IG1hdGNoIHBhdGggd2l0aFxuICAgICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgICAgbGV0IHBhdGggPSBwYXRoX29mX2VuY29kZWQgcCBpblxuICAgICAgICBtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgfCAgXCIvXCI6Ol8gfCAgW10gLT4gcGF0aFxuICAgICAgICB8IF8gIC0+IFwiL1wiOjpwYXRoXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBtYXRjaCBxdWVyeSB3aXRoXG4gICAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICAgIHwgU29tZSBwIC0+IFF1ZXJ5LktWIHBcbiAgICBpblxuICAgIG5vcm1hbGl6ZVxuICAgICAgeyBzY2hlbWU7XG4gICAgICAgIHVzZXJpbmZvO1xuICAgICAgICBob3N0PSBkZWNvZGVfaG9zdCBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxuICBsZXQgaG9zdCB0ID1cbiAgICBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgIHwgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gaFxuICAgIHwgKGBIb3N0IGgpIC0+IChQY3QudW5jYXN0X2RlY29kZWQgaClcblxuICBsZXQgc2NoZW1lIHQgPSB0LnNjaGVtZVxuZW5kXG4iLCJvcGVuIFVyaVxuXG5tb2R1bGUgRGVyaXZlZCA9XG5zdHJ1Y3RcblxuXHRvcGVuIFNleHBsaWIwLlNleHBfY29udlxuXG5cdHR5cGUgY29tcG9uZW50ID0gW1xuXHQgIHwgYFNjaGVtZVxuXHQgIHwgYEF1dGhvcml0eVxuXHQgIHwgYFVzZXJpbmZvICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuXHQgIHwgYFBhdGhcblx0ICB8IGBRdWVyeVxuXHQgIHwgYFF1ZXJ5X2tleVxuXHQgIHwgYFF1ZXJ5X3ZhbHVlXG5cdCAgfCBgRnJhZ21lbnRcbiAgICAgICAgICB8IGBHZW5lcmljXG4gICAgICAgICAgfCBgQ3VzdG9tIG9mIChjb21wb25lbnQgKiBzdHJpbmcgKiBzdHJpbmcpXG5cdF0gW0BAZGVyaXZpbmcgc2V4cF1cblxuXHR0eXBlIHQgPSB7XG4gICAgICAgICAgc2NoZW1lOiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHVzZXJpbmZvOiBzdHJpbmcgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIGhvc3Q6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcG9ydDogaW50IG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwYXRoOiBzdHJpbmcgW0BkZWZhdWx0IFwiXCJdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgcXVlcnk6IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdCBbQHNleHAubGlzdF07XG4gICAgICAgICAgZnJhZ21lbnQ6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF1cblx0fSBbQEBkZXJpdmluZyBzZXhwXVxuXG5lbmRcblxub3BlbiBEZXJpdmVkXG5cbmxldCBjb21wb25lbnRfb2Zfc2V4cCA9IGNvbXBvbmVudF9vZl9zZXhwXG5sZXQgc2V4cF9vZl9jb21wb25lbnQgPSBzZXhwX29mX2NvbXBvbmVudFxuXG5sZXQgdF9vZl9zZXhwIHNleHAgPVxuXHRsZXQgdCA9IHRfb2Zfc2V4cCBzZXhwIGluXG5cdFVyaS5tYWtlXG5cdFx0P3NjaGVtZTp0LnNjaGVtZVxuXHRcdD91c2VyaW5mbzp0LnVzZXJpbmZvXG5cdFx0P2hvc3Q6dC5ob3N0XG5cdFx0P3BvcnQ6dC5wb3J0XG5cdFx0fnBhdGg6dC5wYXRoXG5cdFx0fnF1ZXJ5OnQucXVlcnlcblx0XHQ/ZnJhZ21lbnQ6dC5mcmFnbWVudFxuXHRcdCgpXG5cbmxldCBzZXhwX29mX3QgdCA9XG5cdHNleHBfb2ZfdCB7XG5cdFx0c2NoZW1lID0gc2NoZW1lIHQ7XG5cdFx0dXNlcmluZm8gPSB1c2VyaW5mbyB0O1xuXHRcdGhvc3QgPSBob3N0IHQ7XG5cdFx0cG9ydCA9IHBvcnQgdDtcblx0XHRwYXRoID0gcGF0aCB0O1xuXHRcdHF1ZXJ5ID0gcXVlcnkgdDtcblx0XHRmcmFnbWVudCA9IGZyYWdtZW50IHRcblx0fVxuXG50eXBlIGNvbXBvbmVudCA9IFVyaS5jb21wb25lbnRcbmxldCBjb21wYXJlIGEgYiA9IFVyaS5jb21wYXJlIGEgYlxubGV0IGVxdWFsIGEgYiA9IFVyaS5lcXVhbCBhIGJcbnR5cGUgdCA9IFVyaS50XG4iLCJvcGVuIEpzX29mX29jYW1sXG5vcGVuIENvcmVcblxubGV0IGlzX3ZhbGlkX2lkIHMgPVxuICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiXG4gIHRoZW4gZmFsc2VcbiAgZWxzZSAoXG4gICAgbWF0Y2ggcy5bMF0gd2l0aFxuICAgIHwgJzAnIC4uICc5JyAtPiBmYWxzZVxuICAgIHwgXyAtPlxuICAgICAgU3RyaW5nLmZvcl9hbGwgcyB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyB8ICcwJyAuLiAnOScgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpKVxuOztcblxubGV0IGlzX3ZhbGlkX2ZpZWxkX25hbWUgfnNlZW4gbmFtZSA9IGlzX3ZhbGlkX2lkIG5hbWUgJiYgbm90IChTZXQubWVtIHNlZW4gbmFtZSlcblxubGV0IHJlYyBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgbGlzdCA9XG4gIG1hdGNoIChsaXN0IDogU2V4cC50IGxpc3QpIHdpdGhcbiAgfCBbXSAtPiBTb21lIChMaXN0LnJldiByZXZfYWNjKVxuICB8IEF0b20gbmFtZSA6OiByZXN0IHdoZW4gaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lIC0+XG4gICAgbGV0IHJldl9hY2MgPSAobmFtZSwgTm9uZSkgOjogcmV2X2FjYyBpblxuICAgIGxldCBzZWVuID0gU2V0LmFkZCBzZWVuIG5hbWUgaW5cbiAgICBrZXlfdmFsdWVfc2hhcGUgfnNlZW4gfnJldl9hY2MgcmVzdFxuICB8IExpc3QgWyBBdG9tIG5hbWU7IHYgXSA6OiByZXN0IHdoZW4gaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lIC0+XG4gICAgbGV0IHJldl9hY2MgPSAobmFtZSwgU29tZSB2KSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgXyAtPiBOb25lXG47O1xuXG5sZXQgcmVjIGFueV9vZl9zZXhwID0gZnVuY3Rpb25cbiAgfCBTZXhwLkF0b20gcyAtPiBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcylcbiAgfCBTZXhwLkxpc3QgWyBBdG9tIG5hbWU7IHYgXSAtPiBKcy5VbnNhZmUub2JqIFt8IG5hbWUsIGFueV9vZl9zZXhwIHYgfF1cbiAgfCBTZXhwLkxpc3QgbCAtPlxuICAgIChtYXRjaCBrZXlfdmFsdWVfc2hhcGUgfnNlZW46U3RyaW5nLlNldC5lbXB0eSB+cmV2X2FjYzpbXSBsIHdpdGhcbiAgICAgfCBOb25lIC0+IExpc3QubWFwIGwgfmY6YW55X29mX3NleHAgfD4gQXJyYXkub2ZfbGlzdCB8PiBKcy5hcnJheSB8PiBKcy5VbnNhZmUuaW5qZWN0XG4gICAgIHwgU29tZSBbXSAtPiBKcy5hcnJheSBbfHxdIHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIGwgLT5cbiAgICAgICBKcy5VbnNhZmUub2JqXG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgbmFtZSwgU29tZSB2IC0+IG5hbWUsIGFueV9vZl9zZXhwIHZcbiAgICAgICAgICAgIHwgbmFtZSwgTm9uZSAtPiBuYW1lLCBKcy5VbnNhZmUuaW5qZWN0IEpzLm51bGwpXG4gICAgICAgICAgfD4gQXJyYXkub2ZfbGlzdCkpXG47O1xuXG5sZXQgbG9nX3Mgc2V4cCA9IEZpcmVidWcuY29uc29sZSMjbG9nIChhbnlfb2Zfc2V4cCBzZXhwKVxubGV0IGxvZ19zX2FzX3N0cmluZyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyAoU2V4cC50b19zdHJpbmdfaHVtIHNleHApKVxuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdSA9IHsgc29tZV9uYW1lIDogc3RyaW5nIH0gW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IEZvb1xuICAgICAgfCBCYXIgb2ZcbiAgICAgICAgICB7IGZpZWxkMSA6IHVcbiAgICAgICAgICA7IGZpZWxkMiA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG4gIGluXG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBvcGVuIE0gaW5cbiAgcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nIChhbnlfb2Zfc2V4cCAoc2V4cF9vZl90IEZvbykpKTtcbiAgWyVleHBlY3Qge3wgXCJGb29cIiB8fV07XG4gIHByaW50X2VuZGxpbmVcbiAgICAodG9fc3RyaW5nXG4gICAgICAgKGFueV9vZl9zZXhwXG4gICAgICAgICAgKHNleHBfb2ZfdFxuICAgICAgICAgICAgIChCYXIgeyBmaWVsZDEgPSB7IHNvbWVfbmFtZSA9IFwiZGVidWdcIiB9OyBmaWVsZDIgPSBTb21lIFwib3RoZXIgc3RyaW5nXCIgfSkpKSk7XG4gIFslZXhwZWN0IHt8IHtcIkJhclwiOm51bGwsXCJmaWVsZDFcIjp7XCJzb21lX25hbWVcIjpcImRlYnVnXCJ9LFwiZmllbGQyXCI6W1wib3RoZXIgc3RyaW5nXCJdfSB8fV1cbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcImR1cGxpY2F0ZSBrZXlzIGFyZSBkaXNwbGF5ZWQgY29ycmVjdGx5XCIgPVxuICBsZXQgdG9fc3RyaW5nIDogSnMuVW5zYWZlLmFueSAtPiBzdHJpbmcgPVxuICAgIGZ1biBhbnkgLT4gSnMudG9fc3RyaW5nIChKcy5fSlNPTiMjc3RyaW5naWZ5IGFueSA6IEpzLmpzX3N0cmluZyBKcy50KVxuICBpblxuICBsZXQgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzID0ge3wgKChBIEIpIChBIEMpKSB8fSB8PiBTZXhwLm9mX3N0cmluZyBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIHNleHBfd2l0aF9kdXBsaWNhdGVfa2V5cykpO1xuICBbJWV4cGVjdCB7fCBbe1wiQVwiOlwiQlwifSx7XCJBXCI6XCJDXCJ9XSB8fV1cbjs7XG5cbmxldCVleHBlY3RfdGVzdCBcIm5vIHN0YWNrIG92ZXJmbG93XCIgPVxuICBsZXQgYSA9IEFycmF5LmluaXQgMTAwMDAgfmY6KGZ1biBpIC0+IHNwcmludGYgXCJmJWRcIiBpLCBpKSBpblxuICBsZXQgc2V4cCA9IFslc2V4cF9vZjogKHN0cmluZyAqIGludCkgYXJyYXldIGEgaW5cbiAgbGV0IHggPSBhbnlfb2Zfc2V4cCBzZXhwIGluXG4gIHByaW50ZiBcIiVkXCIgKEpzLlVuc2FmZS5jb2VyY2UgeCkjIy5mOTk5O1xuICBbJWV4cGVjdCB7fCA5OTkgfH1dXG47O1xuIiwibW9kdWxlIEFzeW5jX2pzX2RlYnVnID0gRGVidWdcbm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBpbmNsdWRlIFVyaVxuXG4gIGxldCBzZXhwX29mX3QgPSBVcmlfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgV2Vic29ja2V0X2Nvbm5lY3Rpb24gPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBBc3luY19ycGNfa2VybmVsLlJwYy5Db25uZWN0aW9uXG5cbiAgdHlwZSAoJ3Jlc3QsICdpbXBsZW1lbnRhdGlvbnMpIGNsaWVudF90ID1cbiAgICA/dXJpOlVyaS50XG4gICAgLT4gP2hlYXJ0YmVhdF9jb25maWc6VC5IZWFydGJlYXRfY29uZmlnLnRcbiAgICAtPiA/ZGVzY3JpcHRpb246SW5mby50XG4gICAgLT4gP2ltcGxlbWVudGF0aW9uczonaW1wbGVtZW50YXRpb25zIFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy50XG4gICAgLT4gJ3Jlc3RcblxuICBtb2R1bGUgQ2xvc2VfY29kZSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2V2ZW50IDogXyBXZWJTb2NrZXRzLmNsb3NlRXZlbnQgSnMudCAtPiB0XG4gICAgdmFsIG5vcm1hbF9jbG9zdXJlIDogdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIGNsb3NlX2V2ZW50X2NvZGUgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBhbGxfb2ZfY2xvc2VfZXZlbnRfY29kZSA9IFtdXG5cbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb3JtYWxfY2xvc3VyZVxuICAgICAgfCBHb2luZ19hd2F5XG4gICAgICB8IFByb3RvY29sX2Vycm9yXG4gICAgICB8IFVuc3VwcG9ydGVkX2RhdGFcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IEFibm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgSW52YWxpZF9mcmFtZV9wYXlsb2FkX2RhdGFcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWdcbiAgICAgIHwgTWlzc2luZ19leHRlbnNpb25cbiAgICAgIHwgSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgU2VydmljZV9yZXN0YXJ0XG4gICAgICB8IFRyeV9hZ2Fpbl9sYXRlclxuICAgICAgfCBCYWRfZ2F0ZXdheVxuICAgICAgfCBUTFNfaGFuZHNoYWtlXG4gICAgICB8IFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBvZiBjbG9zZV9ldmVudF9jb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBvZiBjbG9zZV9ldmVudF9jb2RlXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBzZXhwXVxuXG4gICAgbGV0IG5vcm1hbF9jbG9zdXJlID0gTm9ybWFsX2Nsb3N1cmVcblxuICAgIGxldCBvZl9pbnQgPSBmdW5jdGlvblxuICAgICAgfCAxMDAwIC0+IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IDEwMDEgLT4gR29pbmdfYXdheVxuICAgICAgfCAxMDAyIC0+IFByb3RvY29sX2Vycm9yXG4gICAgICB8IDEwMDMgLT4gVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCAxMDA1IC0+IE5vX3N0YXR1c19SZWNlaXZlZFxuICAgICAgfCAxMDA2IC0+IEFibm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwNyAtPiBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCAxMDA4IC0+IFBvbGljeV92aW9sYXRpb25cbiAgICAgIHwgMTAwOSAtPiBNZXNzYWdlX3Rvb19iaWdcbiAgICAgIHwgMTAxMCAtPiBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCAxMDExIC0+IEludGVybmFsX2Vycm9yXG4gICAgICB8IDEwMTIgLT4gU2VydmljZV9yZXN0YXJ0XG4gICAgICB8IDEwMTMgLT4gVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IDEwMTQgLT4gQmFkX2dhdGV3YXlcbiAgICAgIHwgMTAxNSAtPiBUTFNfaGFuZHNoYWtlXG4gICAgICB8IGNvZGUgLT5cbiAgICAgICAgaWYgY29kZSA+PSAzMDAwICYmIGNvZGUgPD0gNDk5OVxuICAgICAgICB0aGVuIFVua25vd25fY2xvc2VfZXZlbnRfY29kZSBjb2RlXG4gICAgICAgIGVsc2UgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICA7O1xuXG4gICAgbGV0IG9mX2V2ZW50IGNsb3NlX2V2ZW50ID0gb2ZfaW50IGNsb3NlX2V2ZW50IyMuY29kZVxuXG4gICAgbGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IE5vcm1hbF9jbG9zdXJlIC0+IDEwMDBcbiAgICAgIHwgR29pbmdfYXdheSAtPiAxMDAxXG4gICAgICB8IFByb3RvY29sX2Vycm9yIC0+IDEwMDJcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YSAtPiAxMDAzXG4gICAgICB8IE5vX3N0YXR1c19SZWNlaXZlZCAtPiAxMDA1XG4gICAgICB8IEFibm9ybWFsX2Nsb3N1cmUgLT4gMTAwNlxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YSAtPiAxMDA3XG4gICAgICB8IFBvbGljeV92aW9sYXRpb24gLT4gMTAwOFxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgLT4gMTAwOVxuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvbiAtPiAxMDEwXG4gICAgICB8IEludGVybmFsX2Vycm9yIC0+IDEwMTFcbiAgICAgIHwgU2VydmljZV9yZXN0YXJ0IC0+IDEwMTJcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyIC0+IDEwMTNcbiAgICAgIHwgQmFkX2dhdGV3YXkgLT4gMTAxNFxuICAgICAgfCBUTFNfaGFuZHNoYWtlIC0+IDEwMTVcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGUgLT4gY29kZVxuICAgICAgfCBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJ0b19pbnQgLT4gb2ZfaW50IHJvdW5kLXRyaXBcIiA9XG4gICAgICBMaXN0Lml0ZXIgYWxsIH5mOihmdW4gdCAtPiBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogdF0gKG9mX2ludCAodG9faW50IHQpKSB0KSlcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY2xvc2Vfd2Vic29ja2V0ICh3ZWJzb2NrZXQgOiBXZWJTb2NrZXRzLndlYlNvY2tldCBKcy50KSByZWFzb24gPVxuICAgICgqIFtjbG9zZV93aXRoQ29kZUFuZFJlYXNvbl0gZG9lcyBub3RoaW5nIGlmIHRoZSBjb25uZWN0aW9uIGlzIGFscmVhZHkgQ2xvc2VkLiAqKVxuICAgIGxldCBjbG9zZSByZWFzb24gPVxuICAgICAgKCogVGhlIGNvZGUgbXVzdCBiZSBlaXRoZXIgMTAwMCAoTm9ybWFsX2Nsb3N1cmUpLCBvciBiZXR3ZWVuIDMwMDAgYW5kIDQ5OTlcbiAgICAgICAgIChVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUpLiAqKVxuICAgICAgd2Vic29ja2V0IyNjbG9zZV93aXRoQ29kZUFuZFJlYXNvblxuICAgICAgICBDbG9zZV9jb2RlLih0b19pbnQgbm9ybWFsX2Nsb3N1cmUpXG4gICAgICAgIChKcy5zdHJpbmcgcmVhc29uKVxuICAgIGluXG4gICAgbWF0Y2ggY2xvc2UgcmVhc29uIHdpdGhcbiAgICB8ICgpIC0+ICgpXG4gICAgfCBleGNlcHRpb24gKF8gOiBFeG4udCkgLT5cbiAgICAgICgqIHRoaXMgY2FuIGZhaWwgaWYgW3JlYXNvbl0gaXMgdG9vIGxvbmcgb3IgY29udGFpbnMgaW52YWxpZCBVVEY4ICopXG4gICAgICBjbG9zZSBcImNsb3NlLXJlYXNvbi13YXMtdG9vLWxvbmctb3ItY29udGFpbnMtaW52YWxpZC11dGY4XCJcbiAgOztcblxuICBsZXQgY29ubmVjdF93ZWJzb2NrZXQgdXJsIH5mcm9tX3NlcnZlciB+dG9fc2VydmVyID1cbiAgICBtYXRjaCBuZXclanMgV2ViU29ja2V0cy53ZWJTb2NrZXQgKEpzLnN0cmluZyAoVXJpLnRvX3N0cmluZyB1cmwpKSB3aXRoXG4gICAgfCBleGNlcHRpb24gSnNfZXJyb3IuRXhuIGV4biAtPlxuICAgICAgKCogZS5nLiBTRUNVUklUWV9FUlIsIHRob3VnaCBub3RlIHRoYXQgZS5nLiBjb25uZWN0aW5nIHRvIHdzOi8vIGZyb20gYSBodHRwczovLyBwYWdlXG4gICAgICAgICBpbiBjaHJvbWUgc2VlbXMgdG8gbWFuaWZlc3QgYXMgc3VjY2Vzc2Z1bCBjb25zdHJ1Y3Rpb24gYnV0IGltbWVkaWF0ZSBjbG9zdXJlXG4gICAgICAgICAoc2VlIGJlbG93KS4gICopXG4gICAgICByZXR1cm4gKE9yX2Vycm9yLmVycm9yX3N0cmluZyAoSnNfZXJyb3IubWVzc2FnZSBleG4pKVxuICAgIHwgZXhjZXB0aW9uIGV4biAtPiByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pXG4gICAgfCB3ZWJzb2NrZXQgLT5cbiAgICAgIGxldCBjb25uZWN0ZWRfaXZhciA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgY2xlYW51cCB+cmVhc29uID1cbiAgICAgICAgKCogSWYgd2UgaGF2ZW4ndCBjb25uZWN0ZWQgeWV0LCB0aGVuIGNvbm5lY3RpbmcganVzdCBmYWlsZWQuIE90aGVyd2lzZSBpdCB3YXMgdGhlXG4gICAgICAgICAgIGNsb3N1cmUgb2YgYW4gZXhpc3RpbmcgY29ubmVjdGlvbi4gKilcbiAgICAgICAgSXZhci5maWxsX2lmX2VtcHR5IGNvbm5lY3RlZF9pdmFyIChFcnJvciByZWFzb24pO1xuICAgICAgICAoKiBbUGlwZS5jbG9zZV0gYW5kIFtXZWJTb2NrZXQuY2xvc2VdIGFyZSBhbGwgaWRlbXBvdGVudC4gKilcbiAgICAgICAgUGlwZS5jbG9zZSBmcm9tX3NlcnZlcjtcbiAgICAgICAgUGlwZS5jbG9zZV9yZWFkIHRvX3NlcnZlcjtcbiAgICAgICAgY2xvc2Vfd2Vic29ja2V0IHdlYnNvY2tldCAoRXJyb3IudG9fc3RyaW5nX2h1bSByZWFzb24pXG4gICAgICBpblxuICAgICAgbGV0IG9uY2xvc2UgKGNsb3NlX2V2ZW50IDogXyBXZWJTb2NrZXRzLmNsb3NlRXZlbnQgSnMudCkgPVxuICAgICAgICAoKiBUaGUgUlBDIEFQSSBkb2Vzbid0IGdpdmUgdXMgYSBnb29kIHBsYWNlIHRvIHB1dCBkZXRhaWxzIGFib3V0IF93aHlfIHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGNsb3NlZC5cblxuICAgICAgICAgICBOb3RlIHRoYXQgaW4gQ2hyb21lIFtjbG9zZV9ldmVudCMjLnJlYXNvbl0gaXMgdHlwaWNhbGx5IGVtcHR5IGFuZFxuICAgICAgICAgICBbY2xvc2VfZXZlbnQjIy5jb2RlXSBkb2Vzbid0IGFjdHVhbGx5IHByb3ZpZGUgdGhhdCBtdWNoIGluc2lnaHQgaW50byB3aHkgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gZmFpbGVkIChpdCdzIGF2YWlsYWJsZSBpbiB0aGUgaW5zcGVjdG9yIGNvbnNvbGUsIGJ1dCBhcyBmYXIgYXMgSSBjYW5cbiAgICAgICAgICAgdGVsbCwgbm90IGF2YWlsYWJsZSB0byB1cykuIFNvIGl0J3Mgbm90IGxpa2Ugd2UncmUgbG9zaW5nIG11Y2ggYW55d2F5LiAqKVxuICAgICAgICBsZXQgcmVhc29uID1cbiAgICAgICAgICBsZXQgd2hhdF9oYXBwZW5lZCA9XG4gICAgICAgICAgICBtYXRjaCBJdmFyLmlzX2Z1bGwgY29ubmVjdGVkX2l2YXIgd2l0aFxuICAgICAgICAgICAgfCBmYWxzZSAtPiBcImNvbm5lY3Rpb24gZmFpbGVkXCJcbiAgICAgICAgICAgIHwgdHJ1ZSAtPiBcImNsb3NlZFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBzcHJpbnRmXG4gICAgICAgICAgICAhXCJXZWJTb2NrZXQgJXMgKCV7c2V4cDpDbG9zZV9jb2RlLnR9KVwiXG4gICAgICAgICAgICB3aGF0X2hhcHBlbmVkXG4gICAgICAgICAgICAoQ2xvc2VfY29kZS5vZl9ldmVudCBjbG9zZV9ldmVudClcbiAgICAgICAgaW5cbiAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgcmVhc29uKTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IG9ubWVzc2FnZSAoZXZlbnQgOiBfIFdlYlNvY2tldHMubWVzc2FnZUV2ZW50IEpzLnQpID1cbiAgICAgICAgbGV0IGRhdGEgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcub2ZfYXJyYXlCdWZmZXIgZXZlbnQjIy5kYXRhX2J1ZmZlciBpblxuICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiBmcm9tX3NlcnZlciBkYXRhO1xuICAgICAgICBKcy5fZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgY29ubmVjdGVkICgpID0gSXZhci5maWxsX2lmX2VtcHR5IGNvbm5lY3RlZF9pdmFyIChPayAoKSkgaW5cbiAgICAgIHdlYnNvY2tldCMjLmJpbmFyeVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIjtcbiAgICAgICgqIGlmIHRoZSB3ZWJzb2NrZXQgaXMgYWxyZWFkeSBjbG9zZWQsIFtvbmNsb3NlXSB3b24ndCBiZSByZS1maXJlZCB3aGVuIHdlIGFkZCBvdXJcbiAgICAgICAgIGhhbmRsZXIuICopXG4gICAgICAobWF0Y2ggd2Vic29ja2V0IyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICB3ZWJzb2NrZXQjIy5vbm9wZW5cbiAgICAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gKF8gOiBfIERvbS5ldmVudCBKcy50KSAtPlxuICAgICAgICAgICBjb25uZWN0ZWQgKCk7XG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICAgICB8IE9QRU4gLT4gY29ubmVjdGVkICgpXG4gICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+XG4gICAgICAgICAoKiBlLmcuLCBSZWZ1c2VkIHRvIGNvbm5lY3QgdG8gd3M6IGJlY2F1c2UgaXQgdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgKilcbiAgICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiV2ViU29ja2V0IGZhaWxlZCBpbW1lZGlhdGVseSAoaWxsZWdhbCBVUkk/KVwiKSk7XG4gICAgICAoKiBVcG9uIGFuIGVycm9yLCBbb25lcnJvcl0gZmlyZXMgYW5kIHRoZW4gW29uY2xvc2VdIGZpcmVzIChpdCdzIHBvc3NpYmxlIGZvciBhXG4gICAgICAgICBncmFjZWZ1bCBjbG9zdXJlIHRvIGNhbGwgW29uY2xvc2VdIG9ubHkpLiBTaW5jZSBBc3luY19SUEMgaGFzIG5vIG5vdGlvbiBvZlxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSwgd2Ugb25seSBuZWVkIHRvIGhhbmRsZSBbb25jbG9zZV0gYW55d2F5LiBGdXJ0aGVyLCB0aGUgZXZlbnRcbiAgICAgICAgIHBhc3NlZCB0byBbb25lcnJvcl0gY29udGFpbnMgbm8gZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yLiAgTm90ZSB0aGF0IHdlXG4gICAgICAgICBzdGlsbCBsaXN0ZW4gdG8gW29uZXJyb3JdIHRvIHByZXZlbnQgdGhlIGVycm9yIGZyb20gbGVha2luZyB0byB1bmNvbnRyb2xsZWRcbiAgICAgICAgIGNvbnRleHQgKilcbiAgICAgIHdlYnNvY2tldCMjLm9uZXJyb3JcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gKF8gOiBfIERvbS5ldmVudCBKcy50KSAtPlxuICAgICAgICBBc3luY19qc19kZWJ1Zy5sb2dfcyBbJW1lc3NhZ2UgXCJ3ZWJzb2NrZXQgZW5jb3VudGVyZWQgdW5leHBlY3RlZCBlcnJvclwiXTtcbiAgICAgICAgSnMuX2ZhbHNlKTtcbiAgICAgIHdlYnNvY2tldCMjLm9ubWVzc2FnZSA6PSBEb20uaGFuZGxlciBvbm1lc3NhZ2U7XG4gICAgICB3ZWJzb2NrZXQjIy5vbmNsb3NlIDo9IERvbS5oYW5kbGVyIG9uY2xvc2U7XG4gICAgICBsZXQgY29ubmVjdGVkX2RlZmVycmVkID0gSXZhci5yZWFkIGNvbm5lY3RlZF9pdmFyIGluXG4gICAgICBkb24ndF93YWl0X2ZvclxuICAgICAgICAobWF0Y2glYmluZCBjb25uZWN0ZWRfZGVmZXJyZWQgd2l0aFxuICAgICAgICAgfCBFcnJvciAoXyA6IEVycm9yLnQpIC0+IHJldHVybiAoKVxuICAgICAgICAgfCBPayAoKSAtPlxuICAgICAgICAgICBQaXBlLml0ZXJfd2l0aG91dF9wdXNoYmFjayB0b19zZXJ2ZXIgfmY6KGZ1biBkYXRhIC0+XG4gICAgICAgICAgICAgbWF0Y2ggKHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgOiBXZWJTb2NrZXRzLnJlYWR5U3RhdGUpIHdpdGhcbiAgICAgICAgICAgICB8IENPTk5FQ1RJTkcgLT5cbiAgICAgICAgICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBvbm9wZW4gY2FsbGVkIGJ1dCByZWFkeVN0YXRlIGlzIENPTk5FQ1RJTkdcIl1cbiAgICAgICAgICAgICB8IENMT1NJTkcgfCBDTE9TRUQgLT4gKClcbiAgICAgICAgICAgICB8IE9QRU4gLT5cbiAgICAgICAgICAgICAgIGxldCBidWZmZXIgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgZGF0YSBpblxuICAgICAgICAgICAgICAgKHRyeSB3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyIGJ1ZmZlciB3aXRoXG4gICAgICAgICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChFcnJvci50YWcgfnRhZzpcIndlYnNvY2tldCMjc2VuZF9idWZmZXJcIiAoRXJyb3Iub2ZfZXhuIGV4bikpKSkpO1xuICAgICAgbGV0IGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkID1cbiAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgRGVmZXJyZWQuYW55X3VuaXQgWyBQaXBlLmNsb3NlZCB0b19zZXJ2ZXI7IFBpcGUuY2xvc2VkIGZyb21fc2VydmVyIF1cbiAgICAgICAgaW5cbiAgICAgICAgY2xlYW51cCB+cmVhc29uOihFcnJvci5vZl9zdHJpbmcgXCJSUEMgY29ubmVjdGlvbiBjbG9zZWQgYnkgY2xpZW50XCIpXG4gICAgICBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgY2xlYW51cF93aGVuX2FfcGlwZV9pc19jbG9zZWQ7XG4gICAgICBjb25uZWN0ZWRfZGVmZXJyZWRcbiAgOztcblxuICBsZXQgZGVmYXVsdF91cmkgKCkgPVxuICAgIGxldCBzY2hlbWUgPSBpZiBTdHJpbmcuZXF1YWwgVXJsLkN1cnJlbnQucHJvdG9jb2wgXCJodHRwczpcIiB0aGVuIFwid3NzXCIgZWxzZSBcIndzXCIgaW5cbiAgICBsZXQgcG9ydCA9XG4gICAgICBtYXRjaCBVcmwuQ3VycmVudC5wb3J0IHdpdGhcbiAgICAgIHwgU29tZSBwb3J0IC0+IHBvcnRcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBpZiBTdHJpbmcuZXF1YWwgVXJsLkN1cnJlbnQucHJvdG9jb2wgXCJodHRwczpcIlxuICAgICAgICB0aGVuIFVybC5kZWZhdWx0X2h0dHBzX3BvcnRcbiAgICAgICAgZWxzZSBVcmwuZGVmYXVsdF9odHRwX3BvcnRcbiAgICBpblxuICAgIGxldCBob3N0ID0gVXJsLkN1cnJlbnQuaG9zdCBpblxuICAgIFVyaS5tYWtlIH5zY2hlbWUgfmhvc3QgfnBvcnQgKClcbiAgOztcblxuICBsZXQgY2xpZW50ID8odXJpID0gZGVmYXVsdF91cmkgKCkpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID1cbiAgICBsZXQgZGVzY3JpcHRpb24gPVxuICAgICAgSW5mby5jcmVhdGVfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJ3ZWJzb2NrZXRcIiAoZGVzY3JpcHRpb24gOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSkgKHVyaSA6IFVyaS50KV1cbiAgICBpblxuICAgIGxldCBtYWtlX2Nvbm5lY3Rpb24gdHJhbnNwb3J0ID1cbiAgICAgIGxldCBjcmVhdGUgeyBULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMuY29ubmVjdGlvbl9zdGF0ZTsgaW1wbGVtZW50YXRpb25zIH0gPVxuICAgICAgICBULmNyZWF0ZVxuICAgICAgICAgIHRyYW5zcG9ydFxuICAgICAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICAgICAgfmRlc2NyaXB0aW9uXG4gICAgICAgICAgfmltcGxlbWVudGF0aW9uc1xuICAgICAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICBpblxuICAgICAgbWF0Y2ggaW1wbGVtZW50YXRpb25zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjcmVhdGUgKFQuQ2xpZW50X2ltcGxlbWVudGF0aW9ucy5udWxsICgpKVxuICAgICAgfCBTb21lIGltcGxlbWVudGF0aW9ucyAtPiBjcmVhdGUgaW1wbGVtZW50YXRpb25zXG4gICAgaW5cbiAgICBsZXQgZnJvbV9zZXJ2ZXJfciwgZnJvbV9zZXJ2ZXJfdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbGV0IHRvX3NlcnZlcl9yLCB0b19zZXJ2ZXJfdyA9IFBpcGUuY3JlYXRlICgpIGluXG4gICAgbWF0Y2glYmluZFxuICAgICAgY29ubmVjdF93ZWJzb2NrZXQgdXJpIH5mcm9tX3NlcnZlcjpmcm9tX3NlcnZlcl93IH50b19zZXJ2ZXI6dG9fc2VydmVyX3JcbiAgICB3aXRoXG4gICAgfCBFcnJvciBfIGFzIGVycm9yIC0+IHJldHVybiBlcnJvclxuICAgIHwgT2sgKCkgLT5cbiAgICAgIGxldCB0cmFuc3BvcnQgPVxuICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LmNyZWF0ZVxuICAgICAgICAgIEFzeW5jX3JwY19rZXJuZWwuUGlwZV90cmFuc3BvcnQuS2luZC5iaWdzdHJpbmdcbiAgICAgICAgICBmcm9tX3NlcnZlcl9yXG4gICAgICAgICAgdG9fc2VydmVyX3dcbiAgICAgIGluXG4gICAgICAobWF0Y2glYmluZCBtYWtlX2Nvbm5lY3Rpb24gdHJhbnNwb3J0IHdpdGhcbiAgICAgICB8IE9rIGNvbm5lY3Rpb24gLT4gcmV0dXJuIChPayBjb25uZWN0aW9uKVxuICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICBsZXQlYmluZCAoKSA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLlRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICAgICAgIHJldHVybiAoT3JfZXJyb3Iub2ZfZXhuIGV4bikpXG4gIDs7XG5cbiAgbGV0IGNsaWVudF9leG4gP3VyaSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgY2xpZW50ID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPj58IE9yX2Vycm9yLm9rX2V4blxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQXN5bmNfcnBjX2tlcm5lbC5ScGNcblxubW9kdWxlIENvbm5lY3Rpb24gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDb25uZWN0aW9uXG4gIGluY2x1ZGUgV2Vic29ja2V0X2Nvbm5lY3Rpb25cbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfcnBjX2tlcm5lbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBVcmlcblxuICAgIGxldCB0b19zdHJpbmcgcyA9IFVyaS50b19zdHJpbmcgc1xuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUKVxuZW5kXG5cbm1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjXG5cbiAgbGV0IGNyZWF0ZV9mcm9tX3VyaSA9IFBlcnNpc3RlbnRfY29ubmVjdGlvbi5ScGMuY3JlYXRlIH5hZGRyZXNzOihtb2R1bGUgVXJpKVxuXG4gIGxldCBjcmVhdGVfZnJvbV91cmlfb3B0aW9uID1cbiAgICBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZVxuICAgICAgfmFkZHJlc3M6XG4gICAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gVXJpLnQgb3B0aW9uIFtAQGRlcml2aW5nIGVxdWFsLCBzZXhwXVxuICAgICAgICBlbmQpXG4gIDs7XG5lbmRcblxubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBBc3luY19ycGNfa2VybmVsLlBlcnNpc3RlbnRfY29ubmVjdGlvbi5WZXJzaW9uZWRfcnBjXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgT3B0ID0gSnMuT3B0XG5tb2R1bGUgT3B0ZGVmID0gSnMuT3B0ZGVmXG5cbm1vZHVsZSBSZXNwb25zZV90eXBlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFhtbEh0dHBSZXF1ZXN0LnJlc3BvbnNlID1cbiAgICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgSnMudCBPcHQudCB0XG4gICAgfCBCbG9iIDogI0ZpbGUuYmxvYiBKcy50IEpzLk9wdC50IHRcbiAgICB8IERvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IEpzLnQgT3B0LnQgdFxuICAgIHwgSlNPTiA6ICdhIE9wdC50IHRcbiAgICB8IFRleHQgOiBKcy5qc19zdHJpbmcgSnMudCB0XG4gICAgfCBEZWZhdWx0IDogc3RyaW5nIHRcbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAncmVzcG9uc2UgdCA9XG4gICAgeyBjb2RlIDogaW50XG4gICAgOyBnZXRfaGVhZGVyIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgICA7IGNvbnRlbnQgOiAncmVzcG9uc2VcbiAgICB9XG5lbmRcblxubW9kdWxlIFBvc3RfYm9keSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQmxvYiBvZiBGaWxlLmJsb2IgSnMudFxuICAgIHwgRG9jdW1lbnQgb2YgRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IEpzLnRcbiAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IEZvcm1fZGF0YSBvZiBGb3JtLmZvcm1EYXRhIEpzLnRcbmVuZFxuXG5tb2R1bGUgTWV0aG9kX3dpdGhfYXJncyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgR2V0IG9mIChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgICB8IFBvc3Qgb2YgUG9zdF9ib2R5LnQgb3B0aW9uXG5lbmRcblxudHlwZSAnayB3aXRoX3JlcXVlc3RfYXJncyA9XG4gID9oZWFkZXJzOihzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgLT4gP29uX3Byb2dyZXNzOihsb2FkZWQ6aW50IC0+IHRvdGFsOmludCAtPiB1bml0KVxuICAtPiA/b25fdXBsb2FkX3Byb2dyZXNzOihsb2FkZWQ6aW50IC0+IHRvdGFsOmludCAtPiB1bml0KVxuICAtPiB1cmw6c3RyaW5nXG4gIC0+ICdrXG5cbmxldCBoYXNfZ2V0X2FyZ3MgdXJsID0gT3B0aW9uLmlzX3NvbWUgKFN0cmluZy5pbmRleCB1cmwgJz8nKVxuXG5sZXQgcmVxdWVzdFxuICAgICAgPyhoZWFkZXJzID0gW10pXG4gICAgICA/b25fcHJvZ3Jlc3NcbiAgICAgID9vbl91cGxvYWRfcHJvZ3Jlc3NcbiAgICAgIH51cmxcbiAgICAgICh0eXBlIHJlc3ApXG4gICAgICB+KHJlc3BvbnNlX3R5cGUgOiByZXNwIFJlc3BvbnNlX3R5cGUudClcbiAgICAgIChtZXRob2Rfd2l0aF9hcmdzIDogTWV0aG9kX3dpdGhfYXJncy50KVxuICA9XG4gIGxldCB1cmwsIG1ldGhvZF9zdHJpbmcgPVxuICAgIG1hdGNoIG1ldGhvZF93aXRoX2FyZ3Mgd2l0aFxuICAgIHwgR2V0IGFyZ3MgLT5cbiAgICAgIHVybCBeIChpZiBoYXNfZ2V0X2FyZ3MgdXJsIHRoZW4gXCImXCIgZWxzZSBcIj9cIikgXiBVcmwuZW5jb2RlX2FyZ3VtZW50cyBhcmdzLCBcIkdFVFwiXG4gICAgfCBQb3N0IF9ib2R5IC0+IHVybCwgXCJQT1NUXCJcbiAgaW5cbiAgbGV0IHJlcSA9IFhtbEh0dHBSZXF1ZXN0LmNyZWF0ZSAoKSBpblxuICByZXEjI19vcGVuIChKcy5zdHJpbmcgbWV0aG9kX3N0cmluZykgKEpzLnN0cmluZyB1cmwpIEpzLl90cnVlO1xuICAobGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICB8IEFycmF5QnVmZmVyIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiXG4gICB8IEJsb2IgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImJsb2JcIlxuICAgfCBEb2N1bWVudCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiZG9jdW1lbnRcIlxuICAgfCBKU09OIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJqc29uXCJcbiAgIHwgVGV4dCAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwidGV4dFwiXG4gICB8IERlZmF1bHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcIlwiKTtcbiAgTGlzdC5pdGVyIGhlYWRlcnMgfmY6KGZ1biAobmFtZSwgdmFsdWUpIC0+XG4gICAgcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgbmFtZSkgKEpzLnN0cmluZyB2YWx1ZSkpO1xuICBsZXQgcmVzcG9uc2UgOiByZXNwIFJlc3BvbnNlLnQgT3JfZXJyb3IudCBJdmFyLnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICByZXEjIy5vbmVycm9yXG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiTmV0d29yayBlcnJvclwiKTtcbiAgICBKcy5fdHJ1ZSk7XG4gIHJlcSMjLm9udGltZW91dFxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIlRpbWVvdXRcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnJlYWR5c3RhdGVjaGFuZ2VcbiAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT5cbiAgICBtYXRjaCByZXEjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICB8IERPTkUgLT5cbiAgICAgIGxldCByZXMgPVxuICAgICAgICBpZiByZXEjIy5zdGF0dXMgPj0gMjAwICYmIHJlcSMjLnN0YXR1cyA8IDMwMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBjb250ZW50IDogcmVzcCBPcl9lcnJvci50ID1cbiAgICAgICAgICAgIGxldCBnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKSA9XG4gICAgICAgICAgICAgIE9wdC5jYXNlXG4gICAgICAgICAgICAgICAgcmVxIyMucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBzaG91bGQgbm90IGJlIGVudGVyZWQgYXMgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIG9mXG4gICAgICAgICAgICAgICAgICAgICAgWE1MSHR0cFJlcXVlc3QgYXQgTUROIHdlYiBkb2NzLCBiZWNhdXNlIGlmIGEgcmVxdWVzdCBpcyBzdWNjZXNzZnVsLFxuICAgICAgICAgICAgICAgICAgICAgIGluIHN0YXRlIFtET05FXSBhbmQgcmVzcG9uc2VfdHlwZSBbVGV4dF0gb3IgW0RlZmF1bHRdLFxuICAgICAgICAgICAgICAgICAgICAgIFtyZXNwb25zZVRleHRdIHNob3VsZCBub3QgYmUgW251bGxdLlxuICAgICAgICAgICAgICAgICAgICAgIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUZXh0XG4gICAgICAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgICAgICBlcnJvcl9zXG4gICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgXCJObyByZXNwb25zZSByZXR1cm5lZCBkZXNwaXRlIHN1Y2Nlc3NmdWwgcmVxdWVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAsIHsgY29kZSA9IChyZXEjIy5zdGF0dXMgOiBpbnQpXG4gICAgICAgICAgICAgICAgICAgICAgIDsgc3RhdHVzX3RleHQgPSAoSnMudG9fc3RyaW5nIHJlcSMjLnN0YXR1c1RleHQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICAgICAgICAgIFJlc3VsdC5yZXR1cm5cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3BlbiBSZXNwb25zZV90eXBlIGluXG4gICAgICAgICAgICBtYXRjaCByZXNwb25zZV90eXBlIHdpdGhcbiAgICAgICAgICAgIHwgQXJyYXlCdWZmZXIgLT4gT2sgKEZpbGUuQ29lcmNlVG8uYXJyYXlCdWZmZXIgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IEJsb2IgLT4gT2sgKEZpbGUuQ29lcmNlVG8uYmxvYiByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgRG9jdW1lbnQgLT4gT2sgKEZpbGUuQ29lcmNlVG8uZG9jdW1lbnQgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IEpTT04gLT4gT2sgKEZpbGUuQ29lcmNlVG8uanNvbiByZXEjIy5yZXNwb25zZSlcbiAgICAgICAgICAgIHwgVGV4dCAtPiBnZXRfdGV4dF9jb250ZW50c19vcl9lcnJvciAoKVxuICAgICAgICAgICAgfCBEZWZhdWx0IC0+IE9yX2Vycm9yLm1hcCAoZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkpIH5mOkpzLnRvX3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGdldF9oZWFkZXIgcyA9XG4gICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAocmVxIyNnZXRSZXNwb25zZUhlYWRlciAoSnMuYnl0ZXN0cmluZyBzKSlcbiAgICAgICAgICAgICAgKGZ1biAoKSAtPiBOb25lKVxuICAgICAgICAgICAgICAoZnVuIHYgLT4gU29tZSAoSnMudG9fc3RyaW5nIHYpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgT2sgeyBSZXNwb25zZS5jb250ZW50OyBjb2RlID0gcmVxIyMuc3RhdHVzOyBnZXRfaGVhZGVyIH0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgXCJSZXF1ZXN0IGZhaWxlZFwiXG4gICAgICAgICAgICAsIHsgY29kZSA9IChyZXEjIy5zdGF0dXMgOiBpbnQpXG4gICAgICAgICAgICAgIDsgc3RhdHVzX3RleHQgPSAoSnMudG9fc3RyaW5nIHJlcSMjLnN0YXR1c1RleHQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIH1dXG4gICAgICBpblxuICAgICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIHJlc1xuICAgIHwgXyAtPiAoKSk7XG4gIE9wdGlvbi5pdGVyIG9uX3Byb2dyZXNzIH5mOihmdW4gb25fcHJvZ3Jlc3MgLT5cbiAgICByZXEjIy5vbnByb2dyZXNzXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICBvbl9wcm9ncmVzcyB+bG9hZGVkOmUjIy5sb2FkZWQgfnRvdGFsOmUjIy50b3RhbDtcbiAgICAgIEpzLl90cnVlKSk7XG4gIE9wdGRlZi5pdGVyIHJlcSMjLnVwbG9hZCAoZnVuIHVwbG9hZCAtPlxuICAgIE9wdGlvbi5pdGVyIG9uX3VwbG9hZF9wcm9ncmVzcyB+ZjooZnVuIG9uX3VwbG9hZF9wcm9ncmVzcyAtPlxuICAgICAgdXBsb2FkIyMub25wcm9ncmVzc1xuICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBlIC0+XG4gICAgICAgIG9uX3VwbG9hZF9wcm9ncmVzcyB+bG9hZGVkOmUjIy5sb2FkZWQgfnRvdGFsOmUjIy50b3RhbDtcbiAgICAgICAgSnMuX3RydWUpKSk7XG4gIChtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgIHwgR2V0IF8gLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgIHwgUG9zdCBib2R5IC0+XG4gICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXEjI3NlbmQgSnMubnVsbFxuICAgICAgfCBTb21lIGJvZHkgLT5cbiAgICAgICAgKG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgfCBCbG9iIGIgLT4gcmVxIyNzZW5kX2Jsb2IgYlxuICAgICAgICAgfCBEb2N1bWVudCBkIC0+IHJlcSMjc2VuZF9kb2N1bWVudCBkXG4gICAgICAgICB8IFN0cmluZyBzIC0+IHJlcSMjc2VuZCAoSnMuc29tZSAoSnMuc3RyaW5nIHMpKVxuICAgICAgICAgfCBGb3JtX2RhdGEgZmQgLT4gcmVxIyNzZW5kX2Zvcm1EYXRhIGZkKSkpO1xuICBJdmFyLnJlYWQgcmVzcG9uc2Vcbjs7XG5cbmxldCBnZXQgPyhhcmd1bWVudHMgPSBbXSkgdXJsID1cbiAgRGVmZXJyZWQuT3JfZXJyb3IubWFwXG4gICAgfmY6KGZ1biByZXNwIC0+IHJlc3AuY29udGVudClcbiAgICAocmVxdWVzdCB+dXJsIH5yZXNwb25zZV90eXBlOkRlZmF1bHQgKEdldCBhcmd1bWVudHMpKVxuOztcblxubGV0IHBvc3QgP2JvZHkgdXJsID1cbiAgRGVmZXJyZWQuT3JfZXJyb3IubWFwXG4gICAgfmY6KGZ1biByZXNwIC0+IHJlc3AuY29udGVudClcbiAgICAocmVxdWVzdCB+dXJsIH5yZXNwb25zZV90eXBlOkRlZmF1bHQgKFBvc3QgYm9keSkpXG47O1xuIiwib3BlbiBDb3JlXG5tb2R1bGUgVGltZV9ucyA9IENvcmUuVGltZV9uc1xubW9kdWxlIENsb2NrX25zID0gQXN5bmNfa2VybmVsLkNsb2NrX25zXG5tb2R1bGUgU2NoZWR1bGVyID0gQXN5bmNfa2VybmVsLkFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuUHJpdmF0ZVxub3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgc2xlZXAgZCA9IENsb2NrX25zLmFmdGVyIChUaW1lX25zLlNwYW4ub2Zfc2VjIGQpXG5sZXQgeWllbGQgKCkgPSBTY2hlZHVsZXIueWllbGQgKFNjaGVkdWxlci50ICgpKVxuXG5sZXQgcmVjIGV4dHJhY3RfanNfZXJyb3IgKGV4biA6IGV4bikgOiAoc3RyaW5nIGxpc3QgKiBKc19lcnJvci50KSBvcHRpb24gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IEV4bi5SZXJhaXNlZCAobXNnLCBleG4pIC0+XG4gICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgfCBTb21lIChtZXNzYWdlcywganNfZXJyb3IpIC0+IFNvbWUgKG1zZyA6OiBtZXNzYWdlcywganNfZXJyb3IpXG4gICAgIHwgTm9uZSAtPiBOb25lKVxuICB8IGV4biAtPlxuICAgIChtYXRjaCBKc19lcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgfCBTb21lIGpzX2Vycm9yIC0+IFNvbWUgKFtdLCBqc19lcnJvcilcbiAgICAgfCBOb25lIC0+IE5vbmUpXG47O1xuXG5sZXQgcHJldHR5X3ByaW50X2V4Y2VwdGlvbiBuYW1lIGV4biA9XG4gIGxldCBleG4gPSBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gaW5cbiAgbGV0IGNsYXNzaWZpY2F0aW9uID1cbiAgICBtYXRjaCBleG4gd2l0aFxuICAgIHwgSnNfZXJyb3IuRXhuIGVyciAtPiBgSnMgZXJyXG4gICAgfCBleG4gLT5cbiAgICAgIChtYXRjaCBleHRyYWN0X2pzX2Vycm9yIGV4biB3aXRoXG4gICAgICAgfCBOb25lIC0+IGBFeG4gZXhuXG4gICAgICAgfCBTb21lIGVyciAtPiBgSnNfYW5kX2V4biAoZXhuLCBlcnIpKVxuICBpblxuICBtYXRjaCBjbGFzc2lmaWNhdGlvbiB3aXRoXG4gIHwgYEpzIGVyciAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSBlcnJcbiAgfCBgRXhuIGV4biAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpXG4gIHwgYEpzX2FuZF9leG4gKGV4biwgKG1lc3NhZ2VzLCBlcnIpKSAtPlxuICAgIChtYXRjaCBtZXNzYWdlcyB3aXRoXG4gICAgIHwgW10gLT4gRmlyZWJ1Zy5jb25zb2xlIyNncm91cCAoSnMuc3RyaW5nIG5hbWUpXG4gICAgIHwgaGQgOjogcmVzdCAtPlxuICAgICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXAgKEpzLnN0cmluZyBoZCk7XG4gICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBuYW1lKTtcbiAgICAgICBMaXN0Lml0ZXIgcmVzdCB+ZjooZnVuIG1lc3NhZ2UgLT4gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIG1lc3NhZ2UpKSk7XG4gICAgKCogV2UgZmlyc3Qgb3V0cHV0IHRoZSBzdHJpbmdpZmllZCBvY2FtbCBleGNlcHRpb24gKilcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwQ29sbGFwc2VkIChKcy5zdHJpbmcgXCJPQ2FtbCBFeGNlcHRpb25cIik7XG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKTtcbiAgICBGaXJlYnVnLmNvbnNvbGUjI2dyb3VwRW5kO1xuICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3IgZXJyO1xuICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBFbmRcbjs7XG5cbmxldCBydW4gPVxuICBsZXQgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgSWRsZVxuICAgICAgfCBSdW5uaW5nXG4gICAgICB8IFdpbGxfcnVuX3Nvb25cbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgTmV4dF93YWtldXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdCBvZiBUaW1lX25zLnQgKiBmbG9hdFxuICAgICAgfCBOb193YWtldXBcbiAgICAgIHwgU29vblxuICBlbmRcbiAgaW5cbiAgbGV0IHN0YXRlID0gcmVmIFN0YXRlLklkbGUgaW5cbiAgbGV0IHRpbWVvdXRzID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGxldCBydW5fYWZ0ZXIgfmYgfm1zID0gaWdub3JlIChEb21faHRtbC5zZXRUaW1lb3V0IGYgbXMgOiBEb21faHRtbC50aW1lb3V0X2lkX3NhZmUpIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIG1hdGNoICFzdGF0ZSwgU2NoZWR1bGVyLnVuY2F1Z2h0X2V4biB0IHdpdGhcbiAgICB8IF8sIFNvbWUgXyB8IFN0YXRlLlJ1bm5pbmcsIE5vbmUgLT4gKClcbiAgICB8IChTdGF0ZS5JZGxlIHwgU3RhdGUuV2lsbF9ydW5fc29vbiksIE5vbmUgLT5cbiAgICAgIHN0YXRlIDo9IFN0YXRlLlJ1bm5pbmc7XG4gICAgICBTY2hlZHVsZXIucnVuX2N5Y2xlIHQ7XG4gICAgICBsZXQgbmV4dF93YWtldXAgOiBOZXh0X3dha2V1cC50ID1cbiAgICAgICAgaWYgU2NoZWR1bGVyLmNhbl9ydW5fYV9qb2IgdFxuICAgICAgICB0aGVuIFNvb25cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggU2NoZWR1bGVyLm5leHRfdXBjb21pbmdfZXZlbnQgdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vX3dha2V1cFxuICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICBsZXQgbm93ID0gVGltZV9ucy5ub3cgKCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gVGltZV9ucy5kaWZmIG5leHQgbm93IGluXG4gICAgICAgICAgICBsZXQgZF9tcyA9IFRpbWVfbnMuU3Bhbi50b19tcyBkIGluXG4gICAgICAgICAgICBpZiBGbG9hdC4oIDw9ICkgZF9tcyAwLiB0aGVuIFNvb24gZWxzZSBBdCAobmV4dCwgZF9tcykpXG4gICAgICBpblxuICAgICAgT3B0aW9uLml0ZXIgKFNjaGVkdWxlci51bmNhdWdodF9leG5fdW53cmFwcGVkIHQpIH5mOihmdW4gKGV4biwgX3NleHApIC0+XG4gICAgICAgIG1hdGNoIEFzeW5jX2tlcm5lbC5Nb25pdG9yLmV4dHJhY3RfZXhuIGV4biB3aXRoXG4gICAgICAgIHwgSnNfZXJyb3IuRXhuIGVyciAtPiBKc19lcnJvci5yYWlzZV8gZXJyXG4gICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgKG1hdGNoIEpzX2Vycm9yLm9mX2V4biBleG4gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICAgICAgIHwgU29tZSBlcnIgLT5cbiAgICAgICAgICAgICAoKiBIYWNrIHRvIGdldCBhIGJldHRlciBiYWNrdHJhY2UgKilcbiAgICAgICAgICAgICBwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIFwiRXJyb3I6XCIgZXhuO1xuICAgICAgICAgICAgICgqIEFuZCB0aGVuIHJhaXNlIHRoZSBlbWJlZGRlZCBqYXZhc2NyaXB0IGVycm9yIHRoYXQgcHJvdmlkZXMgYSBwcm9wZXJcbiAgICAgICAgICAgICAgICBiYWNrdHJhY2Ugd2l0aCBnb29kIHNvdXJjZW1hcCBzdXBwb3J0LlxuICAgICAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgamF2YXNjcmlwdCBlcnJvciBpcyBwcm9iYWJseSBub3QgbWVhbmluZ2Z1bCB3aGljaCBpcyB3aHlcbiAgICAgICAgICAgICAgICB3ZSBmaXJzdCBvdXRwdXQgdGhlIHNlcmlhbGl6YXRpb24gb2Ygb2NhbWwgZXhjZXB0aW9uLiAqKVxuICAgICAgICAgICAgIEpzX2Vycm9yLnJhaXNlXyBlcnIpKTtcbiAgICAgIChtYXRjaCBuZXh0X3dha2V1cCB3aXRoXG4gICAgICAgfCBOb193YWtldXAgLT4gc3RhdGUgOj0gSWRsZVxuICAgICAgIHwgU29vbiAtPlxuICAgICAgICAgc3RhdGUgOj0gV2lsbF9ydW5fc29vbjtcbiAgICAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLlxuICAgICAgIHwgQXQgKGF0LCBkX21zKSAtPlxuICAgICAgICAgc3RhdGUgOj0gSWRsZTtcbiAgICAgICAgIGlmIFN0YWNrLmlzX2VtcHR5IHRpbWVvdXRzIHx8IFRpbWVfbnMuKCA8ICkgYXQgKFN0YWNrLnRvcF9leG4gdGltZW91dHMpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgU3RhY2sucHVzaCB0aW1lb3V0cyBhdDtcbiAgICAgICAgICAgcnVuX2FmdGVyIH5mOnJ1bl90aW1lb3V0IH5tczpkX21zKSlcbiAgYW5kIHJ1bl90aW1lb3V0ICgpID1cbiAgICAoKiBFYWNoIGNhbGwgdG8gW3J1bl90aW1lb3V0XSByZW1vdmVzIGV4YWN0bHkgb25lIGVsZW1lbnQgZnJvbSBbdGltZW91dHNdLiAgVGhpc1xuICAgICAgIG1haW50YWlucyB0aGUgaW52YXJpYW50IHRoYXQgW1N0YWNrLmxlbmd0aCB0aW1lb3V0c10gaXMgZXhhY3RseSB0aGUgbnVtYmVyIG9mXG4gICAgICAgb3V0c3RhbmRpbmcgdGltZW91dHMgd2UgaGF2ZSByZWdpc3RlcmVkLiAqKVxuICAgIGlnbm9yZSAoU3RhY2sucG9wX2V4biB0aW1lb3V0cyA6IFRpbWVfbnMudCk7XG4gICAgbG9vcCAoKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgU3RhdGUuSWRsZSAtPlxuICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuO1xuICAgICAgc3RhdGUgOj0gU3RhdGUuV2lsbF9ydW5fc29vblxuICAgIHwgU3RhdGUuUnVubmluZyB8IFN0YXRlLldpbGxfcnVuX3Nvb24gLT4gKClcbjs7XG5cbmxldCBpbml0aWFsaXplZF9yZWYgPSByZWYgZmFsc2VcblxubGV0IGluaXRpYWxpemF0aW9uID1cbiAgbGF6eVxuICAgIChsZXQgdCA9IFNjaGVkdWxlci50ICgpIGluXG4gICAgIGluaXRpYWxpemVkX3JlZiA6PSB0cnVlO1xuICAgICBTY2hlZHVsZXIuc2V0X2pvYl9xdWV1ZWRfaG9vayB0IChmdW4gXyAtPiBydW4gKCkpO1xuICAgICBTY2hlZHVsZXIuc2V0X2V2ZW50X2FkZGVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF90aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayB0IHJ1bjtcbiAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IuRXhwZXJ0LnRyeV93aXRoX2xvZ19leG5cbiAgICAgOj0gcHJldHR5X3ByaW50X2V4Y2VwdGlvbiBcIkFzeW5jX2tlcm5lbDogTW9uaXRvci50cnlfd2l0aFwiO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXG4gICAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IubWFpblxuICAgICAgIH5mOihwcmV0dHlfcHJpbnRfZXhjZXB0aW9uIFwiQXN5bmNfa2VybmVsOiBVbmhhbmRsZWQgZXhjZXB0aW9uXCIpO1xuICAgICBydW4gKCkpXG47O1xuXG5sZXQgaW5pdCAoKSA9IGZvcmNlIGluaXRpYWxpemF0aW9uXG5sZXQgaW5pdGlhbGl6ZWQgKCkgPSAhaW5pdGlhbGl6ZWRfcmVmXG5cbmxldCBkb2N1bWVudF9sb2FkZWQgPVxuICBsZXQganNfc3RyaW5nX2NvbXBhcmUgcyA9XG4gICAgbGV0IGNvbXBhcmVfdXNpbmdfamF2YXNjcmlwdF90cmlwbGVfZXF1YWxfZm9yX3N0cmluZ3MgPSBwaHlzX2VxdWFsIGluXG4gICAgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyAoSnMuc3RyaW5nIHMpXG4gIGluXG4gIGxldCByZWFkeV9zdGF0ZV9jaGFuZ2UgPSBcInJlYWR5c3RhdGVjaGFuZ2VcIiBpblxuICBsZXQgY29tcGxldGUgPSBcImNvbXBsZXRlXCIgaW5cbiAgbGV0IHJlYWR5c3RhdGVjaGFuZ2VfZXYgPSBEb20uRXZlbnQubWFrZSByZWFkeV9zdGF0ZV9jaGFuZ2UgaW5cbiAgbGV0IGFkZF9ldmVudCB0YXJnZXQgZXZ0IGhhbmRsZXIgPVxuICAgIGlnbm9yZVxuICAgICAgKERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgdGFyZ2V0IGV2dCBoYW5kbGVyIEpzLl9mYWxzZSA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgaW5cbiAgZnVuICgpIC0+XG4gICAgaWYganNfc3RyaW5nX2NvbXBhcmUgY29tcGxldGUgRG9tX2h0bWwuZG9jdW1lbnQjIy5yZWFkeVN0YXRlXG4gICAgdGhlbiBBc3luY19rZXJuZWwuRGVmZXJyZWQudW5pdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxvYWRlZCA9IEFzeW5jX2tlcm5lbC5JdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGhhbmRsZXIgZXZ0ID1cbiAgICAgICAgaWYgKG5vdCAoanNfc3RyaW5nX2NvbXBhcmUgcmVhZHlfc3RhdGVfY2hhbmdlIGV2dCMjLl90eXBlKSlcbiAgICAgICAgfHwganNfc3RyaW5nX2NvbXBhcmUgY29tcGxldGUgRG9tX2h0bWwuZG9jdW1lbnQjIy5yZWFkeVN0YXRlXG4gICAgICAgIHRoZW4gQXN5bmNfa2VybmVsLkl2YXIuZmlsbF9pZl9lbXB0eSBsb2FkZWQgKCk7XG4gICAgICAgIEpzLl90cnVlXG4gICAgICBpblxuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLmRvY3VtZW50IERvbV9odG1sLkV2ZW50LmRvbUNvbnRlbnRMb2FkZWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLmRvY3VtZW50IHJlYWR5c3RhdGVjaGFuZ2VfZXYgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgYWRkX2V2ZW50IERvbV9odG1sLndpbmRvdyBEb21faHRtbC5FdmVudC5sb2FkIChEb20uaGFuZGxlciBoYW5kbGVyKTtcbiAgICAgIEFzeW5jX2tlcm5lbC5JdmFyLnJlYWQgbG9hZGVkKVxuOztcbiIsIm1vZHVsZSBScGMgPSBScGNcbm1vZHVsZSBIdHRwID0gSHR0cFxubW9kdWxlIERlYnVnID0gRGVidWdcbm1vZHVsZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24gPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25cbmluY2x1ZGUgQXN5bmNfanMwXG5cbmxldCBsb2dfcyA9IERlYnVnLmxvZ19zXG5sZXQgbG9nX3NfYXNfc3RyaW5nID0gRGVidWcubG9nX3NfYXNfc3RyaW5nXG4iLCJvcGVuISBCYXNlXG5cbigqIFRoZSBbZGF0YV0gYXJyYXkgaXMgYW4gaW1wbGljaXQgYmluYXJ5IHRyZWUgd2l0aCBbY2hpbGRyZW5fbGVuZ3RoICogMiAtIDFdIG5vZGVzLFxuICAgd2l0aCBlYWNoIG5vZGUgYmVpbmcgdGhlIHN1bSBvZiB0aGUgdHdvIGNoaWxkIG5vZGVzIGFuZCB0aGUgcm9vdCBub2RlIGJlaW5nIHRoZSAwdGhcbiAgIG5vZGUuICBUaGUgbGVhdmVzIG9mIHRoZSB0cmVlIGFyZSB0aGUgbGFzdCBbbnVtX2xlYXZlc10gbm9kZXMuXG5cbiAgIFRoZSBjaGlsZHJlbiBhcmUgbm90IG5lY2Vzc2FyaWx5IGFsbCBhdCB0aGUgc2FtZSBsZXZlbCBvZiB0aGUgdHJlZS4gRm9yIGluc3RhbmNlIGlmXG4gICB5b3UgaGF2ZSAzIGNoaWxkcmVuIFt8IGE7IGI7IGMgfF06XG5cbiAgIHt2XG4gICAgICAgICAgb1xuICAgICAgICAgLyBcXFxuICAgICAgICBvICAgY1xuICAgICAgIC8gXFxcbiAgICAgIGEgICBiXG4gICB2fVxuXG4gICBXZSB3YW50IHRoaXMgdHJlZSB0byBiZSByZXByZXNlbnRhdGVkIGFzIFt8IG87IG87IGM7IGE7IGIgfF0sIGkuZS4gd2UgbmVlZCB0byBhcHBseVxuICAgZmlyc3QgYSByb3RhdGlvbiB0aGVuIGEgdHJhbnNsYXRpb24gdG8gY29udmVydCBhbiBpbmRleCBpbiBbfCBhOyBiOyBjIHxdIHRvIGEgKGxlYWYpXG4gICBpbmRleCBpbiBbfCBvOyBvOyBjOyBhOyBiIHxdLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBkYXRhIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgOyBudW1fbGVhdmVzIDogaW50XG4gIDsgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsIDogaW50XG4gIDsgcmVkdWNlIDogJ2EgLT4gJ2EgLT4gJ2FcbiAgOyBzZXhwX29mX2EgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lm51bV9sZWF2ZXNcblxuKCoge3ZcbiAgICAgcGFyZW50OiAgICAgIDAgIDEgIDIgIDMgIDQgIDUgIDYgIDcgIDggIDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgLi4uXG4gICAgIGxlZnQgY2hpbGQ6ICAxICAzICA1ICA3ICA5IDExIDEzIDE1IDE3IDE5IDIxIDIzIDI1IDI3IDI5IDMxIDMzIDM1IDM3IDM5IC4uLlxuICAgICByaWdodCBjaGlsZDogMiAgNCAgNiAgOCAxMCAxMiAxNCAxNiAxOCAyMCAyMiAyNCAyNiAyOCAzMCAzMiAzNCAzNiAzOCA0MCAuLi4gdn0gKilcbmxldCBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4ID0gKGNoaWxkX2luZGV4IC0gMSkgLyAyXG5sZXQgbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4ID0gKHBhcmVudF9pbmRleCAqIDIpICsgMVxubGV0IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4ID0gbGVmdF9jaGlsZF9pbmRleCArIDFcblxuKCogVGhlIGZpcnN0IFtudW1fbGVhdmVzLTFdIGVsZW1lbnRzIGFyZSBpbnRlcm5hbCBub2RlcyBvZiB0aGUgdHJlZS4gIFRoZSBuZXh0XG4gICBbbnVtX2xlYXZlc10gZWxlbWVudHMgYXJlIHRoZSBsZWF2ZXMuICopXG5sZXQgbnVtX2JyYW5jaGVzIHQgPSB0Lm51bV9sZWF2ZXMgLSAxXG5sZXQgaW5kZXhfaXNfbGVhZiB0IGkgPSBpID49IG51bV9icmFuY2hlcyB0XG5cbigqIFRoZSB0cmVlIGlzIGNvbXBsZXRlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHBlcmZlY3QsIHNvIHdlIHBlcmZvcm0gc29tZSByb3RhdGlvbiBvZiB0aGVcbiAgIGxlYXZlcyB0byBlbnN1cmUgdGhhdCBvdXIgcmVkdWN0aW9ucyBwcmVzZXJ2ZSBvcmRlcmluZy4gKilcbmxldCBsZWFmX2luZGV4IHQgaSA9XG4gICgqIFRoZSB0cmVlIGxheW91dCBpcyBsZXZlbCBvcmRlci4gIEFueSBsZWF2ZXMgaW4gdGhlIHNlY29uZCB0byBsYXN0IGxldmVsIG5lZWQgdG8gb2NjdXJcbiAgICAgaW4gdGhlIGFycmF5IGJlZm9yZSB0aGUgbGVhdmVzIGluIHRoZSBib3R0b20gbGV2ZWwuICopXG4gIGxldCByb3RhdGVkX2luZGV4ID1cbiAgICBsZXQgb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5ID0gaSArIHQubnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsIGluXG4gICAgaWYgb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IDwgdC5udW1fbGVhdmVzXG4gICAgdGhlbiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXlcbiAgICBlbHNlIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheSAtIHQubnVtX2xlYXZlc1xuICBpblxuICAoKiBUaGUgbGVhdmVzIG9jY3VyIGFmdGVyIHRoZSBicmFuY2hlcyBpbiB0aGUgYXJyYXkuICopXG4gIHJvdGF0ZWRfaW5kZXggKyBudW1fYnJhbmNoZXMgdFxuOztcblxubGV0IGdldF9sZWFmIHQgaSA9IE9wdGlvbl9hcnJheS5nZXQgdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgKGxlbmd0aCB0KSB+ZjooZnVuIGkgLT4gZ2V0X2xlYWYgdCBpKVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodG9fbGlzdCB0IDogYSBvcHRpb24gbGlzdCldXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGZvciBpID0gMCB0byBPcHRpb25fYXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvXG4gICAgbWF0Y2ggT3B0aW9uX2FycmF5LmdldCBkYXRhIGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+IGludmFyaWFudF9hIGFcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG51bV9icmFuY2hlcyB0IC0gMSBkb1xuICAgIGxldCBsZWZ0ID0gbGVmdF9jaGlsZF9pbmRleCB+cGFyZW50X2luZGV4OmkgaW5cbiAgICBsZXQgcmlnaHQgPSByaWdodF9jaGlsZF9pbmRleCB+bGVmdF9jaGlsZF9pbmRleDpsZWZ0IGluXG4gICAgbGV0IGxlZnRfaXNfbm9uZSA9IE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgbGVmdCBpblxuICAgIGxldCByaWdodF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSByaWdodCBpblxuICAgIGlmIE9wdGlvbl9hcnJheS5pc19zb21lIGRhdGEgaVxuICAgIHRoZW4gYXNzZXJ0IChub3QgKGxlZnRfaXNfbm9uZSB8fCByaWdodF9pc19ub25lKSlcbiAgICBlbHNlXG4gICAgICBhc3NlcnQgKFxuICAgICAgICBpbmRleF9pc19sZWFmIHQgbGVmdCB8fCBpbmRleF9pc19sZWFmIHQgcmlnaHQgfHwgbGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpXG4gIGRvbmVcbjs7XG5cbmxldCBjcmVhdGVfZXhuID8oc2V4cF9vZl9hID0gWyVzZXhwX29mOiBfXSkgKCkgfmxlbjpudW1fbGVhdmVzIH5yZWR1Y2UgPVxuICBpZiBudW1fbGVhdmVzIDwgMVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwibm9uLXBvc2l0aXZlIG51bWJlciBvZiBsZWF2ZXMgaW4gYmFsYW5jZWQgcmVkdWNlclwiIChudW1fbGVhdmVzIDogaW50KV07XG4gIGxldCBudW1fYnJhbmNoZXMgPSBudW1fbGVhdmVzIC0gMSBpblxuICBsZXQgbnVtX2xlYXZlc19ub3RfaW5fYm90dG9tX2xldmVsID0gSW50LmNlaWxfcG93MiBudW1fbGVhdmVzIC0gbnVtX2xlYXZlcyBpblxuICBsZXQgZGF0YSA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjoobnVtX2JyYW5jaGVzICsgbnVtX2xlYXZlcykgaW5cbiAgeyBkYXRhOyBudW1fbGVhdmVzOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWw7IHJlZHVjZTsgc2V4cF9vZl9hIH1cbjs7XG5cbmxldCB2YWxpZGF0ZV9pbmRleCB0IGkgPVxuICBpZiBpIDwgMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBhY2Nlc3MgbmVnYXRpdmUgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiIH5pbmRleDooaSA6IGludCldO1xuICBsZXQgbGVuZ3RoID0gdC5udW1fbGVhdmVzIGluXG4gIGlmIGkgPj0gbGVuZ3RoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJhdHRlbXB0IHRvIGFjY2VzcyBvdXQgb2YgYm91bmRzIGluZGV4IGluIGJhbGFuY2VkIHJlZHVjZXJcIlxuICAgICAgICAgIH5pbmRleDooaSA6IGludClcbiAgICAgICAgICAobGVuZ3RoIDogaW50KV1cbjs7XG5cbmxldCBzZXRfZXhuIHQgaSBhID1cbiAgdmFsaWRhdGVfaW5kZXggdCBpO1xuICBsZXQgZGF0YSA9IHQuZGF0YSBpblxuICBsZXQgaSA9IHJlZiAobGVhZl9pbmRleCB0IGkpIGluXG4gIE9wdGlvbl9hcnJheS5zZXRfc29tZSBkYXRhICFpIGE7XG4gIHdoaWxlICFpIDw+IDAgZG9cbiAgICBsZXQgcGFyZW50ID0gcGFyZW50X2luZGV4IH5jaGlsZF9pbmRleDohaSBpblxuICAgIGlmIE9wdGlvbl9hcnJheS5pc19ub25lIGRhdGEgcGFyZW50XG4gICAgdGhlbiBpIDo9IDBcbiAgICBlbHNlIChcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgZGF0YSBwYXJlbnQ7XG4gICAgICBpIDo9IHBhcmVudClcbiAgZG9uZVxuOztcblxubGV0IGdldF9leG4gdCBpID1cbiAgdmFsaWRhdGVfaW5kZXggdCBpO1xuICBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuZGF0YSAobGVhZl9pbmRleCB0IGkpXG47O1xuXG5sZXQgcmVjIGNvbXB1dGVfZXhuIHQgaSA9XG4gIGlmIE9wdGlvbl9hcnJheS5pc19zb21lIHQuZGF0YSBpXG4gIHRoZW4gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5kYXRhIGlcbiAgZWxzZSAoXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBpZiBsZWZ0ID49IE9wdGlvbl9hcnJheS5sZW5ndGggdC5kYXRhXG4gICAgdGhlbiAoXG4gICAgICAoKiBJZiB3ZSBnZXQgaGVyZSwgdGhlIHBhcmVudCB3YXMgYW4gdW5zZXQgbGVhZi4gKilcbiAgICAgIGxldCBzZXhwX29mX2EgPSB0LnNleHBfb2ZfYSBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImF0dGVtcHQgdG8gY29tcHV0ZSBiYWxhbmNlZCByZWR1Y2VyIHdpdGggdW5zZXQgZWxlbWVudHNcIlxuICAgICAgICAgICAgfmJhbGFuY2VkX3JlZHVjZXI6KHQgOiBhIHQpXSk7XG4gICAgbGV0IGEgPSB0LnJlZHVjZSAoY29tcHV0ZV9leG4gdCBsZWZ0KSAoY29tcHV0ZV9leG4gdCByaWdodCkgaW5cbiAgICBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZGF0YSBpIGE7XG4gICAgYSlcbjs7XG5cbmxldCBjb21wdXRlX2V4biB0ID0gY29tcHV0ZV9leG4gdCAwXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGxldCBzZXhwX29mX3QgPSBUaW1lX25zLkFsdGVybmF0ZV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgaW5pdCA6ICdhXG4gIDsgc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHsgaW5pdDsgc3RlcHMgPSBfIH0gPSBpbnZhcmlhbnRfYSBpbml0XG5cbmxldCByZWMgdmFsdWVfaW50ZXJuYWwgaW5pdCBzdGVwcyB+YXQgPVxuICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHN0ZXBzIHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lICgodCwgYSksIHN0ZXBzKSAtPlxuICAgIGlmIFRpbWVfbnMuKCA8ICkgYXQgdCB0aGVuIGluaXQgZWxzZSB2YWx1ZV9pbnRlcm5hbCBhIHN0ZXBzIH5hdFxuOztcblxubGV0IHZhbHVlIHQgfmF0ID0gdmFsdWVfaW50ZXJuYWwgdC5pbml0IHQuc3RlcHMgfmF0XG5sZXQgY29uc3RhbnQgaW5pdCA9IHsgaW5pdDsgc3RlcHMgPSBTZXF1ZW5jZS5lbXB0eSB9XG5cbmxldCBjcmVhdGVfZXhuIH5pbml0IH5zdGVwcyA9XG4gIGlmIG5vdFxuICAgICAgIChMaXN0LmlzX3NvcnRlZCBzdGVwcyB+Y29tcGFyZTooZnVuICh0aW1lMSwgXykgKHRpbWUyLCBfKSAtPlxuICAgICAgICAgIFRpbWVfbnMuY29tcGFyZSB0aW1lMSB0aW1lMikpXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJbU3RlcF9mdW5jdGlvbi5jcmVhdGVfZXhuXSBnb3QgdW5zb3J0ZWQgdGltZXNcIlxuICAgICAgICAgIH5zdGVwczooc3RlcHMgfD4gTGlzdC5tYXAgfmY6ZnN0IDogVGltZV9ucy50IGxpc3QpXTtcbiAgeyBpbml0OyBzdGVwcyA9IHN0ZXBzIHw+IFNlcXVlbmNlLm9mX2xpc3QgfVxuOztcblxubGV0IGNyZWF0ZV9mcm9tX3NlcXVlbmNlIH5pbml0IH5zdGVwcyA9IHsgaW5pdDsgc3RlcHMgfVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgV2VhayA9IFN0ZGxpYi5XZWFrXG5cbnR5cGUgJ2EgdCA9ICdhIEhlYXBfYmxvY2sudCBXZWFrLnRcblxubGV0IGNyZWF0ZSB+bGVuID0gV2Vhay5jcmVhdGUgbGVuXG5sZXQgbGVuZ3RoIHQgPSBXZWFrLmxlbmd0aCB0XG5sZXQgc2V0ID0gV2Vhay5zZXRcblxubGV0IHNldF9leG4gdCBpIHggPSBzZXQgdCBpIChPcHRpb24ubWFwIHggfmY6SGVhcF9ibG9jay5jcmVhdGVfZXhuKVxuXG5sZXQgZ2V0ID0gV2Vhay5nZXRcbmxldCBpc19zb21lIHQgaSA9IFdlYWsuY2hlY2sgdCBpXG5sZXQgaXNfbm9uZSB0IGkgPSBub3QgKGlzX3NvbWUgdCBpKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldCB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwX29mOiBhIEhlYXBfYmxvY2sudCBvcHRpb24gYXJyYXldICh0b19hcnJheSB0KVxuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIGkgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIFdlYWsuYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiIsIigqIFdlIGltcGxlbWVudCBhIHdlYWsgcG9pbnRlciB1c2luZyBhIFtXZWFrX2FycmF5LnRdLiAqKVxuXG5vcGVuISBCYXNlXG5cbnR5cGUgJ2EgdCA9ICdhIFdlYWtfYXJyYXkudFxuXG5sZXQgY3JlYXRlICgpID0gV2Vha19hcnJheS5jcmVhdGUgfmxlbjoxXG5cbigqIFdlIHVzZSBhIHdlYWsgYXJyYXkgb2YgbGVuZ3RoIDEsIHNvIHRoZSB3ZWFrIHBvaW50ZXIgaXMgYXQgaW5kZXggMC4gKilcbmxldCBpbmRleCA9IDBcblxubGV0IGdldCB0ID0gV2Vha19hcnJheS5nZXQgdCBpbmRleFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgSGVhcF9ibG9jay50IG9wdGlvbildXG5cbmxldCBpc19ub25lIHQgPSBXZWFrX2FycmF5LmlzX25vbmUgdCBpbmRleFxubGV0IGlzX3NvbWUgdCA9IFdlYWtfYXJyYXkuaXNfc29tZSB0IGluZGV4XG5cbmxldCBzZXQgdCBibG9jayA9IFdlYWtfYXJyYXkuc2V0IHQgaW5kZXggKFNvbWUgYmxvY2spXG4iLCJvcGVuISBCYXNlXG5cblxudHlwZSAoJ2EsICdiKSB0ID1cbiAgeyBlbnRyeV9ieV9rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCdhLCAnYiBXZWFrX3BvaW50ZXIudCkgSGFzaHRibC50XG4gIDsga2V5c193aXRoX3VudXNlZF9kYXRhICAgICAgICAgICAgICAgICAgICA6ICdhIFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIHRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDogdW5pdCAtPiB1bml0XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBVc2luZ19oYXNoYWJsZSA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBoYXNoYWJsZSA9XG4gICAgeyBlbnRyeV9ieV9rZXkgICAgICAgICAgICAgICAgICAgICA9XG4gICAgICAgIEhhc2h0YmwuY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZVxuICAgICAgICAgIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcblxuICAgIDsga2V5c193aXRoX3VudXNlZF9kYXRhICAgICAgICAgICAgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhID0gaWdub3JlXG4gICAgfVxuICA7O1xuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBVc2luZ19oYXNoYWJsZS5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS5vZl9rZXkgbSlcbjs7XG5cbmxldCBzZXRfcnVuX3doZW5fdW51c2VkX2RhdGEgdCB+dGhyZWFkX3NhZmVfZiA9XG4gIHQudGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPC0gdGhyZWFkX3NhZmVfZjtcbjs7XG5cbmxldCByZW1vdmUgdCBrZXkgPSBIYXNodGJsLnJlbW92ZSB0LmVudHJ5X2J5X2tleSBrZXlcblxuKCogSW4gb3JkZXIgZm9yIGEgY2FsbCB0byBbcmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhXSB0byByZWNsYWltIGEga2V5IHRoYXRcbiAgIHdhcyBwcmV2aW91c2x5IGZpbmFsaXplZCwgdGhlIHdlYWsgcG9pbnRlciBtdXN0IGhhdmUgYmVlbiBjbGVhcmVkLiAgVGhpcyByZWxpZXMgb24gdGhlXG4gICBmYWN0IHRoYXQgdGhlIE9DYW1sIGdhcmJhZ2UgY29sbGVjdG9yIGNsZWFycyB3ZWFrcyBhbmQgdGhlbiBydW5zIGZpbmFsaXplcnMuICopXG5sZXQgcmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VudXNlZF9kYXRhIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC5rZXlzX3dpdGhfdW51c2VkX2RhdGEgPiAwIGRvXG4gICAgbGV0IGtleSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGluXG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVudHJ5IC0+IGlmIFdlYWtfcG9pbnRlci5pc19ub25lIGVudHJ5IHRoZW4gcmVtb3ZlIHQga2V5XG4gIGRvbmU7XG47O1xuXG5sZXQgZ2V0X2VudHJ5IHQga2V5ID1cbiAgSGFzaHRibC5maW5kX29yX2FkZCB0LmVudHJ5X2J5X2tleSBrZXlcbiAgICB+ZGVmYXVsdDooZnVuICgpIC0+IFdlYWtfcG9pbnRlci5jcmVhdGUgKCkpO1xuOztcblxubGV0IG1lbSB0IGtleSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGVudHJ5IC0+IFdlYWtfcG9pbnRlci5pc19zb21lIGVudHJ5XG47O1xuXG5sZXQga2V5X2lzX3VzaW5nX3NwYWNlIHQga2V5ID0gSGFzaHRibC5tZW0gdC5lbnRyeV9ieV9rZXkga2V5XG5cbmxldCBzZXRfZGF0YSB0IGtleSBlbnRyeSAoZGF0YSA6IF8gSGVhcF9ibG9jay50KSA9XG4gIFdlYWtfcG9pbnRlci5zZXQgZW50cnkgZGF0YTtcbiAgbGV0IGNsZWFudXAgKCkgPVxuICAgIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPlxuICAgICAgVGhyZWFkX3NhZmVfcXVldWUuZW5xdWV1ZSB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBrZXk7XG4gICAgICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhICgpKVxuICBpblxuICB0cnkgU3RkbGliLkdjLmZpbmFsaXNlX2xhc3QgY2xlYW51cCBkYXRhIHdpdGhcbiAgKCogSW4gdGhpcyBjYXNlLCBbeF0gaXMga25vd24gdG8gYmUgc3RhdGljIGRhdGEsIHdoaWNoIHdpbGxcbiAgICAgbmV2ZXIgYmUgY29sbGVjdGVkIGJ5IHRoZSBHQyBhbnl3YXksIHNvIGl0J3Mgc2FmZSB0byBkcm9wICopXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+ICgpXG5cbjs7XG5cbmxldCByZXBsYWNlIHQgfmtleSB+ZGF0YSA9IHNldF9kYXRhIHQga2V5IChnZXRfZW50cnkgdCBrZXkpIGRhdGFcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIGlmIFdlYWtfcG9pbnRlci5pc19zb21lIGVudHJ5XG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJXZWFrX2hhc2h0YmwuYWRkX2V4biBvZiBrZXkgaW4gdXNlXCIgfl86KHQgOiAoXywgXykgdCkgWyVoZXJlXV07XG4gIHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGE7XG47O1xuXG5sZXQgZmluZCB0IGtleSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW50cnkgLT4gV2Vha19wb2ludGVyLmdldCBlbnRyeVxuOztcblxubGV0IGZpbmRfb3JfYWRkIHQga2V5IH5kZWZhdWx0ID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIG1hdGNoIFdlYWtfcG9pbnRlci5nZXQgZW50cnkgd2l0aFxuICB8IFNvbWUgdiAtPiB2XG4gIHwgTm9uZSAtPlxuICAgIGxldCBkYXRhID0gZGVmYXVsdCAoKSBpblxuICAgIHNldF9kYXRhIHQga2V5IGVudHJ5IGRhdGE7XG4gICAgZGF0YVxuOztcbiIsInR5cGUgdCA9XG4gIHwgQmVmb3JlXG4gIHwgQWZ0ZXJcbltAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJbJSVpbXBvcnQgXCJkZWJ1Zy5tbGhcIl1cblxub3BlbiBDb3JlXG5cbigqIEFsbCBbYXNzZXJ0XXMgYW5kIG90aGVyIGNoZWNrcyB0aHJvdWdob3V0IHRoZSBjb2RlIGFyZSBndWFyZGVkIGJ5IFtpZiBkZWJ1Z10uICBUaGVcbiAgIERFQlVHIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUgbGliIFtpbmNyZW1lbnRhbF0gYW5kIHVuc2V0IGluIHRoZSBsaWJcbiAgIFtpbmNyZW1lbnRhbF9kZWJ1Z10sIGJ1dCBhcGFydCBmcm9tIHRoYXQgdGhleSBhcmUgaWRlbnRpY2FsLiAgVGVzdHMgYXJlIHJ1biB3aXRoIGJvdGhcbiAgIHRoZSBwcm9kdWN0aW9uIGFuZCBkZWJ1ZyBsaWIsIGFuZCB1c2VycyBjYW4gY2hvb3NlIHRvIGJ1aWxkIHdpdGggdGhlIGRlYnVnIGxpYnJhcnksIGlmXG4gICB0aGV5IHN1c3BlY3QgdGhleSBmb3VuZCBhIGJ1ZyBpbiBpbmNyZW1lbnRhbC4gKilcblxuWyUlaWYgSlNDX0RFQlVHXVxuXG5sZXQgZGVidWcgPSB0cnVlXG5cblslJWVsc2VdXG5cbmxldCBkZWJ1ZyA9IGZhbHNlXG5cblslJWVuZGlmXVxuXG5sZXQgY29uY2F0ID0gU3RyaW5nLmNvbmNhdFxubGV0IHRhZyBuYW1lIGEgc2V4cF9vZl9hID0gKG5hbWUsIGEpIHw+IFslc2V4cF9vZjogc3RyaW5nICogYV1cblxubW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBJbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGxldCBzZXhwX29mX3QgPSBUaW1lX25zLkFsdGVybmF0ZV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIEFycmF5XG5cbiAgKCogTm90IGRlZmluaW5nIGFsaWFzZXMgaW4gcHJvZHVjdGlvbiBtb2RlLCBzaW5jZSB0aGV5IGJyZWFrIHR5cGUgc3BlY2lhbGl6YXRpb24gb2ZcbiAgICAgYXJyYXkgYWNjZXNzZXMuICopXG4gIFslJWlmIEpTQ19ERUJVR11cblxuICBsZXQgdW5zYWZlX2dldCA9IGdldFxuICBsZXQgdW5zYWZlX3NldCA9IHNldFxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFJlcXVpcmVzIFtsZW4gPj0gbGVuZ3RoIHRdLiAqKVxuICBsZXQgcmVhbGxvYyB0IH5sZW4gYSA9XG4gICAgbGV0IG5ld190ID0gY3JlYXRlIH5sZW4gYSBpblxuICAgIEFycmF5LmJsaXQgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpuZXdfdCB+ZHN0X3BvczowIH5sZW46KGxlbmd0aCB0KTtcbiAgICBuZXdfdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBVb3B0ID0gc3RydWN0XG4gIGluY2x1ZGUgVW9wdFxuXG4gIGxldCB1bnNhZmVfdmFsdWUgPSBpZiBkZWJ1ZyB0aGVuIHZhbHVlX2V4biBlbHNlIHVuc2FmZV92YWx1ZVxuZW5kXG5cbm1vZHVsZSBVbmlmb3JtX2FycmF5ID0gc3RydWN0XG4gIGluY2x1ZGUgVW5pZm9ybV9hcnJheVxuXG4gIFslJWlmIEpTQ19ERUJVR11cblxuICBsZXQgdW5zYWZlX2dldCA9IGdldFxuICBsZXQgdW5zYWZlX3NldCA9IHNldF93aXRoX2NhbWxfbW9kaWZ5XG5cbiAgWyUlZWxzZV1cblxuICAoKiBVbmlmb3JtX2FycmF5IGlzIGJlaW5nIFwic21hcnRcIiBieSBjaGVja2luZyBpZiBlbGVtZW50cyBhcmUgaW50ZWdlcnMsIGJ1dCBVb3B0LnRcbiAgICAgYWxtb3N0IG5ldmVyIGNvbnRhaW4gaW50ZWdlcnMsIHNvIHRoZSBleHRyYSBjaGVjayB0byBtYWtlIGdlbmVyYXRlZCBjb2RlIGhhcmRlciB0b1xuICAgICByZWFkIGFuZCBwb3RlbnRpYWxseSBzbG93ZXIuICopXG4gIGxldCB1bnNhZmVfc2V0ID0gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5XG4gIGxldCBzZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFJlcXVpcmVzIFtsZW4gPj0gbGVuZ3RoIHRdLiAqKVxuICBsZXQgcmVhbGxvYyB0IH5sZW4gPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIFVvcHQubm9uZSBpblxuICAgIGJsaXQgfnNyYzp0IH5zcmNfcG9zOjAgfmRzdDpuZXdfdCB+ZHN0X3BvczowIH5sZW46KGxlbmd0aCB0KTtcbiAgICBuZXdfdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBbGFybV9wcmVjaXNpb24gPSBUaW1pbmdfd2hlZWwuQWxhcm1fcHJlY2lzaW9uXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPVxuICAoKiBXZSBzcGVjaWFsaXplIHNvbWUgY3V0b2ZmcyB0byBhdm9pZCBhbiBpbmRpcmVjdCBmdW5jdGlvbiBjYWxsOyBpbiBwYXJ0aWN1bGFyIHdlXG4gICAgIHNwZWNpYWxpemUgdGhlIGRlZmF1bHQgKGFuZCBoZW5jZSBvdmVyd2hlbG1pbmdseSBjb21tb24pIGNhc2Ugb2YgcGh5c2ljYWxcbiAgICAgZXF1YWxpdHkuICopXG4gIHwgQWx3YXlzXG4gIHwgTmV2ZXJcbiAgfCBQaHlzX2VxdWFsXG4gIHwgQ29tcGFyZSBvZiAoJ2EgLT4gJ2EgLT4gaW50KVxuICB8IEVxdWFsIG9mICgnYSAtPiAnYSAtPiBib29sKVxuICB8IEYgb2YgKG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gYm9vbClcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEFsd2F5cyB8IE5ldmVyIHwgUGh5c19lcXVhbCB8IENvbXBhcmUgXyB8IEVxdWFsIF8gfCBGIF8gLT4gKCkpXG47O1xuXG5sZXQgY3JlYXRlIGYgPSBGIGZcbmxldCBvZl9jb21wYXJlIGYgPSBDb21wYXJlIGZcbmxldCBvZl9lcXVhbCBmID0gRXF1YWwgZlxubGV0IG5ldmVyID0gTmV2ZXJcbmxldCBhbHdheXMgPSBBbHdheXNcbmxldCBwb2x5X2VxdWFsID0gRXF1YWwgUG9seS5lcXVhbFxuXG5sZXQgc2hvdWxkX2N1dG9mZiB0IH5vbGRfdmFsdWUgfm5ld192YWx1ZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBoeXNfZXF1YWwgLT4gcGh5c19lcXVhbCBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgTmV2ZXIgLT4gZmFsc2VcbiAgfCBBbHdheXMgLT4gdHJ1ZVxuICB8IENvbXBhcmUgZiAtPiBmIG9sZF92YWx1ZSBuZXdfdmFsdWUgPSAwXG4gIHwgRXF1YWwgZiAtPiBmIG9sZF92YWx1ZSBuZXdfdmFsdWVcbiAgfCBGIGYgLT4gZiB+b2xkX3ZhbHVlIH5uZXdfdmFsdWVcbjs7XG5cbmxldCBlcXVhbCB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgQWx3YXlzLCBBbHdheXMgLT4gdHJ1ZVxuICB8IEFsd2F5cywgXyAtPiBmYWxzZVxuICB8IE5ldmVyLCBOZXZlciAtPiB0cnVlXG4gIHwgTmV2ZXIsIF8gLT4gZmFsc2VcbiAgfCBQaHlzX2VxdWFsLCBQaHlzX2VxdWFsIC0+IHRydWVcbiAgfCBQaHlzX2VxdWFsLCBfIC0+IGZhbHNlXG4gIHwgQ29tcGFyZSBmMSwgQ29tcGFyZSBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgQ29tcGFyZSBfLCBfIC0+IGZhbHNlXG4gIHwgRXF1YWwgZjEsIEVxdWFsIGYyIC0+IHBoeXNfZXF1YWwgZjEgZjJcbiAgfCBFcXVhbCBfLCBfIC0+IGZhbHNlXG4gIHwgRiBmMSwgRiBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRiBfLCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcGh5c19lcXVhbCA9IFBoeXNfZXF1YWxcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdHJpbmdfbGlzdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLm1ha2UgfnNleHBfb2ZfdCB+Y29tcGFyZSlcbmVuZFxuXG50eXBlIGRvdCA9XG4gIHsgbGFiZWwgOiBTZXQuTShTdHJpbmdfbGlzdCkudFxuICA7IGF0dHJpYnV0ZXMgOiBzdHJpbmcgU3RyaW5nLk1hcC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgdCA9XG4gIHwgRG90IG9mIGRvdFxuICB8IEluZm8gb2YgSW5mby50XG4gIHwgQXBwZW5kIG9mXG4gICAgICB7IHByaW9yIDogdFxuICAgICAgOyBuZXdfIDogdFxuICAgICAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGluZm8gaW5mbyA9IEluZm8gaW5mb1xubGV0IGFwcGVuZCBwcmlvciBuZXdfID0gQXBwZW5kIHsgcHJpb3I7IG5ld18gfVxuXG5sZXQgZG90IH5sYWJlbCB+YXR0cmlidXRlcyA9XG4gIGxldCBsYWJlbCA9IFNldC5zaW5nbGV0b24gKG1vZHVsZSBTdHJpbmdfbGlzdCkgbGFiZWwgaW5cbiAgRG90IHsgbGFiZWw7IGF0dHJpYnV0ZXMgfVxuOztcblxubGV0IHJlYyB0b19kb3QgPSBmdW5jdGlvblxuICB8IEluZm8gaSAtPlxuICAgIHsgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIFsgSW5mby50b19zdHJpbmdfaHVtIGkgXVxuICAgIDsgYXR0cmlidXRlcyA9IFN0cmluZy5NYXAuZW1wdHlcbiAgICB9XG4gIHwgRG90IGRvdCAtPiBkb3RcbiAgfCBBcHBlbmQgeyBwcmlvcjsgbmV3XyB9IC0+XG4gICAgbGV0IHByaW9yID0gdG9fZG90IHByaW9yIGluXG4gICAgbGV0IG5ld18gPSB0b19kb3QgbmV3XyBpblxuICAgIGxldCBsYWJlbCA9IFNldC51bmlvbiBwcmlvci5sYWJlbCBuZXdfLmxhYmVsIGluXG4gICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgTWFwLm1lcmdlX3NrZXdlZFxuICAgICAgICBwcmlvci5hdHRyaWJ1dGVzXG4gICAgICAgIG5ld18uYXR0cmlidXRlc1xuICAgICAgICB+Y29tYmluZTooZnVuIH5rZXk6XyBfbGVmdCByaWdodCAtPiByaWdodClcbiAgICBpblxuICAgIHsgbGFiZWw7IGF0dHJpYnV0ZXMgfVxuOztcblxubGV0IGVzY2FwZV9kb3Rfc3RyaW5nIHMgPVxuICAoKiBodHRwczovL2dyYXBodml6Lm9yZy9kb2MvaW5mby9sYW5nLmh0bWwgKilcbiAgXCJcXFwiXCIgXiBTdHJpbmcuc3Vic3RyX3JlcGxhY2VfYWxsIHMgfnBhdHRlcm46XCJcXFwiXCIgfndpdGhfOlwiXFxcXFxcXCJcIiBeIFwiXFxcIlwiXG47O1xuXG5sZXQgZXNjYXBlX3JlY29yZF9sYWJlbCBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vc2hhcGVzLmh0bWwgKilcbiAgU3RyaW5nLmNvbmNhdF9tYXAgcyB+ZjooZnVuY3Rpb25cbiAgICB8ICgnPCcgfCAnPicgfCAneycgfCAnfScgfCAnfCcgfCAnXFxcXCcgfCAnICcpIGFzIGMgLT4gXCJcXFxcXCIgXiBTdHJpbmcub2ZfY2hhciBjXG4gICAgfCBjIC0+IFN0cmluZy5vZl9jaGFyIGMpXG47O1xuXG5sZXQgdG9fc3RyaW5nIH5uYW1lIHsgbGFiZWw7IGF0dHJpYnV0ZXMgfSA9XG4gIGxldCBsYWJlbCA9XG4gICAgbGFiZWxcbiAgICB8PiBTZXQudG9fbGlzdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gY29scyAtPlxuICAgICAgXCJ7XCIgXiBTdHJpbmcuY29uY2F0IChMaXN0Lm1hcCBjb2xzIH5mOmVzY2FwZV9yZWNvcmRfbGFiZWwpIH5zZXA6XCJ8XCIgXiBcIn1cIilcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJ8XCJcbiAgICB8PiBmdW4gcyAtPiBcIntcIiBeIHMgXiBcIn1cIlxuICBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgYXR0cmlidXRlc1xuICAgIHw+IE1hcC50b19hbGlzdFxuICAgIHw+IExpc3QubWFwIH5mOihmdW4gKGssIHYpIC0+XG4gICAgICBzcHJpbnRmIHt8ICVzPSVzfH0gKGVzY2FwZV9kb3Rfc3RyaW5nIGspIChlc2NhcGVfZG90X3N0cmluZyB2KSlcbiAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCJcbiAgaW5cbiAgc3ByaW50ZiB7fCAgJXMgW3NoYXBlPU1yZWNvcmQgbGFiZWw9JXMgJXNdfH0gbmFtZSAoZXNjYXBlX2RvdF9zdHJpbmcgbGFiZWwpIGF0dHJpYnV0ZXNcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IDEpXG5cbmxldCBuZXh0ID1cbiAgbGV0IHIgPSByZWYgMCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIHI7XG4gICAgIXJcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbnRcblxubGV0IGludmFyaWFudCB0ID0gYXNzZXJ0ICh0ID49IC0xKVxubGV0IG5vbmUgPSAtMVxubGV0IGlzX25vbmUgdCA9IHQgPSBub25lXG5sZXQgaXNfc29tZSB0ID0gdCA+PSAwXG5sZXQgYWRkMSB0ID0gdCArIDFcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgUHJldmlvdXNfdXBkYXRlX2tpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5ldmVyX2JlZW5fdXBkYXRlZFxuICAgIHwgTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkXG4gICAgfCBJbnZhbGlkYXRlZFxuICAgIHwgVW5uZWNlc3NhcnlcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgTm9kZV91cGRhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE5lY2Vzc2FyeSBvZiAnYVxuICAgIHwgQ2hhbmdlZCBvZiAnYSAqICdhXG4gICAgfCBJbnZhbGlkYXRlZFxuICAgIHwgVW5uZWNlc3NhcnlcbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IGYgOiAnYSBOb2RlX3VwZGF0ZS50IC0+IHVuaXRcbiAgOyBtdXRhYmxlIHByZXZpb3VzX3VwZGF0ZV9raW5kIDogUHJldmlvdXNfdXBkYXRlX2tpbmQudFxuICA7IGNyZWF0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZiB+YXQ6Y3JlYXRlZF9hdCA9IHsgZjsgcHJldmlvdXNfdXBkYXRlX2tpbmQgPSBOZXZlcl9iZWVuX3VwZGF0ZWQ7IGNyZWF0ZWRfYXQgfVxuXG5sZXQgcmVhbGx5X3J1biB0IChub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCkgPVxuICB0LnByZXZpb3VzX3VwZGF0ZV9raW5kXG4gIDwtIChtYXRjaCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgfCBOZWNlc3NhcnkgXyAtPiBOZWNlc3NhcnlcbiAgICB8IENoYW5nZWQgXyAtPiBDaGFuZ2VkXG4gICAgfCBJbnZhbGlkYXRlZCAtPiBJbnZhbGlkYXRlZFxuICAgIHwgVW5uZWNlc3NhcnkgLT4gVW5uZWNlc3NhcnkpO1xuICB0LmYgbm9kZV91cGRhdGVcbjs7XG5cbmxldCBydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpIH5ub3cgPVxuICAoKiBXZSBvbmx5IHJ1biB0aGUgaGFuZGxlciBpZiB3YXMgY3JlYXRlZCBpbiBhbiBlYXJsaWVyIHN0YWJpbGl6YXRpb24gY3ljbGUuICBJZiB0aGVcbiAgICAgaGFuZGxlciB3YXMgY3JlYXRlZCBieSBhbm90aGVyIG9uLXVwZGF0ZSBoYW5kbGVyIGR1cmluZyB0aGUgcnVubmluZyBvZiBvbi11cGRhdGVcbiAgICAgaGFuZGxlcnMgaW4gdGhlIGN1cnJlbnQgc3RhYmlsaXphdGlvbiwgd2UgdHJlYXQgdGhlIGFkZGVkIGhhbmRsZXIgYXMgaWYgaXQgd2VyZSBhZGRlZFxuICAgICBhZnRlciB0aGlzIHN0YWJpbGl6YXRpb24gZmluaXNoZWQuICBXZSB3aWxsIHJ1biBpdCBhdCB0aGUgbmV4dCBzdGFiaWxpemF0aW9uLCBiZWNhdXNlXG4gICAgIHRoZSBub2RlIHdpdGggdGhlIGhhbmRsZXIgd2FzIHB1c2hlZCBvbiBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLiAqKVxuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHQuY3JlYXRlZF9hdCBub3cgPCAwXG4gIHRoZW4gKFxuICAgIG1hdGNoIHQucHJldmlvdXNfdXBkYXRlX2tpbmQsIG5vZGVfdXBkYXRlIHdpdGhcbiAgICAoKiBPbmNlIGEgbm9kZSBpcyBpbnZhbGlkYXRlZCwgdGhlcmUgd2lsbCBuZXZlciBiZSBmdXJ0aGVyIGluZm9ybWF0aW9uIHRvIHByb3ZpZGUsXG4gICAgICAgc2luY2UgaW5jcmVtZW50YWwgZG9lcyBub3QgYWxsb3cgYW4gaW52YWxpZCBub2RlIHRvIGJlY29tZSB2YWxpZC4gKilcbiAgICB8IEludmFsaWRhdGVkLCBfIC0+ICgpXG4gICAgKCogVGhlc2UgY2FzZXMgY2FuIGhhcHBlbiBpZiBhIG5vZGUgaXMgaGFuZGxlZCBhZnRlciBzdGFiaWxpemF0aW9uIGR1ZSB0byBhbm90aGVyXG4gICAgICAgaGFuZGxlci4gIEJ1dCBmb3IgdGhlIGN1cnJlbnQgaGFuZGxlciwgdGhlcmUgaXMgbm90aGluZyB0byBkbyBiZWNhdXNlIHRoZXJlIGlzIG5vXG4gICAgICAgbmV3IGluZm9ybWF0aW9uIHRvIHByb3ZpZGUuICopXG4gICAgfCBDaGFuZ2VkLCBOZWNlc3NhcnkgXyB8IE5lY2Vzc2FyeSwgTmVjZXNzYXJ5IF8gfCBVbm5lY2Vzc2FyeSwgVW5uZWNlc3NhcnkgLT4gKClcbiAgICAoKiBJZiB0aGlzIGhhbmRsZXIgaGFzbid0IHNlZW4gYSBub2RlIHRoYXQgaXMgY2hhbmdpbmcsIHdlIHRyZWF0IHRoZSB1cGRhdGUgYXMgYW5cbiAgICAgICBpbml0aWFsaXphdGlvbi4gKilcbiAgICB8IChOZXZlcl9iZWVuX3VwZGF0ZWQgfCBVbm5lY2Vzc2FyeSksIENoYW5nZWQgKF8sIGEpIC0+IHJlYWxseV9ydW4gdCAoTmVjZXNzYXJ5IGEpXG4gICAgKCogQWxsIG90aGVyIHVwZGF0ZXMgYXJlIHJ1biBhcyBpcy4gKilcbiAgICB8IE5ldmVyX2JlZW5fdXBkYXRlZCwgKE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZClcbiAgICB8IFVubmVjZXNzYXJ5LCAoTmVjZXNzYXJ5IF8gfCBJbnZhbGlkYXRlZClcbiAgICB8IE5lY2Vzc2FyeSwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBDaGFuZ2VkLCAoQ2hhbmdlZCBfIHwgVW5uZWNlc3NhcnkgfCBJbnZhbGlkYXRlZCkgLT4gcmVhbGx5X3J1biB0IG5vZGVfdXBkYXRlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgZXhuIDogZXhuXG4gIDsgYmFja3RyYWNlIDogQmFja3RyYWNlLnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNyZWF0ZSBleG4gPSB7IGV4bjsgYmFja3RyYWNlID0gQmFja3RyYWNlLkV4bi5tb3N0X3JlY2VudCAoKSB9XG5cbmxldCByZXJhaXNlX3dpdGhfbWVzc2FnZSB7IGV4bjsgYmFja3RyYWNlIH0gbXNnID1cbiAgRXhuLnJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChFeG4uUmVyYWlzZWQgKG1zZywgZXhuKSkgYmFja3RyYWNlXG47O1xuXG5sZXQgcmVyYWlzZSB7IGV4bjsgYmFja3RyYWNlIH0gPSBFeG4ucmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJhY2t0cmFjZVxuIiwiKCogVGhpcyBtb2R1bGUgaGFzIGEgZ2lhbnQgW21vZHVsZSByZWNdIGRlZmluaW5nIGFsbCB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIHVzZWRcbiAgIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4gIFRoZSBkZWZpbml0aW9uIG9mIGVhY2ggdHlwZSBpcyB0aGVuIHJlcGVhdGVkIGluIGl0cyBmaWxlO1xuICAgY29tbWVudHMgYmVsb25nIHRoZXJlLCBub3QgaGVyZS5cblxuICAgV2UgcHV0IGp1c3QgZW5vdWdoIHNleHAgY29udmVydGVycyBoZXJlIHRvIGRpc3BsYXkgbm9kZSBpZHMuICBUaGUgZGV0YWlsZWQgc2V4cFxuICAgY29udmVydGVycyBhcmUgZ2VuZXJhdGVkIHZpYSBbd2l0aCBzZXhwXSBpbiB0aGUgaW5kaXZpZHVhbCBmaWxlcy4gIERlZmluaW5nIHRoZSBzZXhwXG4gICBjb252ZXJ0ZXJzIG91dHNpZGUgb2YgdGhlIFttb2R1bGUgcmVjXSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGFjY2lkZW50YWxseSBpbnRyb2R1Y2UgYVxuICAgc2V4cCBjb252ZXJ0ZXIgdGhhdCB3b3VsZCB0cnkgdG8gcHJvZHVjZSBhbiBpbmZpbml0ZSBzZXhwLlxuKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgcmVjIEFkanVzdF9oZWlnaHRzX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgQWRqdXN0X2hlaWdodHNfaGVhcFxuXG5hbmQgQWxhcm0gOiBzaWdcbiAgdHlwZSB0ID0gQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuZW5kID1cbiAgQWxhcm1cblxuYW5kIEFsYXJtX3ZhbHVlIDogc2lnXG4gIG1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdCBvZiBBdC50XG4gICAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiB0IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEFsYXJtX3ZhbHVlXG5cbmFuZCBBcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIH1cbmVuZCA9XG4gIEFycmF5X2ZvbGRcblxuYW5kIEF0IDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0XG5cbmFuZCBBdF9pbnRlcnZhbHMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiB1bml0IE5vZGUudFxuICAgIDsgYmFzZSA6IFRpbWVfbnMudFxuICAgIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0X2ludGVydmFsc1xuXG5hbmQgQmluZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgbWFpbiA6ICdiIE5vZGUudFxuICAgIDsgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBCaW5kXG5cbmFuZCBDbG9jayA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBDbG9ja1xuXG5hbmQgRXhwZXJ0IDogc2lnXG4gIHR5cGUgJ2EgZWRnZSA9XG4gICAgeyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBpbmRleCA6IGludCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSBwYWNrZWRfZWRnZSA9IEUgOiAnYSBlZGdlIC0+IHBhY2tlZF9lZGdlIFtAQHVuYm94ZWRdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGYgOiB1bml0IC0+ICdhXG4gICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA6IGlzX25vd19vYnNlcnZhYmxlOmJvb2wgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1faW52YWxpZF9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBFeHBlcnRcblxuYW5kIEZyZWV6ZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gICAgfVxuZW5kID1cbiAgRnJlZXplXG5cbmFuZCBJZl90aGVuX2Vsc2UgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IHRlc3QgOiBib29sIE5vZGUudFxuICAgIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gICAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICAgIH1cbmVuZCA9XG4gIElmX3RoZW5fZWxzZVxuXG5hbmQgSW50ZXJuYWxfb2JzZXJ2ZXIgOiBzaWdcbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ3JlYXRlZFxuICAgICAgfCBJbl91c2VcbiAgICAgIHwgRGlzYWxsb3dlZFxuICAgICAgfCBVbmxpbmtlZFxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgcHJldl9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIGludGVybmFsX29ic2VydmVyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBJbnRlcm5hbF9vYnNlcnZlclxuXG5hbmQgSm9pbiA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBKb2luXG5cbmFuZCBLaW5kIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgICB8IENvbnN0IG9mICdhXG4gICAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICAgIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICAgIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gICAgfCBJbnZhbGlkXG4gICAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gICAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gICAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gICAgfCBVbmluaXRpYWxpemVkXG4gICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXA0IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDUgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA2IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA3IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDggOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA5IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDExIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTIgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEzIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE0IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTUgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2ExNVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAqICdhMTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbmVuZCA9XG4gIEtpbmRcblxuYW5kIE5vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogTm9kZV9pZC50XG4gICAgOyBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgICA7IG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIHBhcmVudDAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9ic2VydmVycyA6ICdhIEludGVybmFsX29ic2VydmVyLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gICAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXSBbQEB1bmJveGVkXVxuICBlbmRcblxuICB2YWwgaXNfdmFsaWQgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfbmVjZXNzYXJ5IDogXyB0IC0+IGJvb2xcbiAgdmFsIHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBOb2RlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgUGFja2VkIDo9IE5vZGUuUGFja2VkKVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gY29uY2F0IFsgXCJuXCI7IE5vZGVfaWQudG9fc3RyaW5nIHQuaWQgXSB8PiBbJXNleHBfb2Y6IHN0cmluZ11cblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEB1bmJveGVkXVxuXG4gICAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIG5vZGVdXG4gIGVuZFxuXG4gIGxldCBpc192YWxpZCB0ID1cbiAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgIHwgSW52YWxpZCAtPiBmYWxzZVxuICAgIHwgXyAtPiB0cnVlXG4gIDs7XG5cbiAgKCogW2lzX25lY2Vzc2FyeV0gaXMgZGVmaW5lZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCBpdCBiZWZvcmUgbm9kZS5tbCBpcyBhdmFpbGFibGUuICBJdCBpc1xuICAgICB1c2VkIGR1cmluZyBncmFwaCBtYW5pcHVsYXRpb24sIGFuZCBzbyBpcyB3cml0dGVuIHdpdGggc29tZSBjYXJlIHRvIGJlIGZhc3QuICopXG4gIGxldCBpc19uZWNlc3NhcnkgdCA9XG4gICAgdC5udW1fcGFyZW50cyA+IDBcbiAgICB8fCBVb3B0LmlzX3NvbWUgdC5vYnNlcnZlcnNcbiAgICB8fCAobWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgIHwgRnJlZXplIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHx8IHQuZm9yY2VfbmVjZXNzYXJ5XG4gIDs7XG5cbiAgbGV0IHRfaXNfaW5qZWN0aXZlICh0eXBlIGEgYikgKFQgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkgOiAoYSwgYikgVHlwZV9lcXVhbC50ID0gVFxuXG4gIGxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSAodHlwZSBhIGIpICh0MSA6IGEgdCkgKHQyIDogYiB0KSA9XG4gICAgKCogVGhpcyBpcyB0eXBlLXNhZmUgYXNzdW1pbmcgbm8gb25lIGNhbiBnaXZlIHRoZSBzYW1lIGluY3JlbWVudGFsIG5vZGUgdHdvIGRpZmZlcmVudFxuICAgICAgIHR5cGVzLiAgVGhpcyBpcyB0cnVlIGJlY2F1c2UgdGhlIGZpZWxkIFttdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBvcHRpb25dIHByZXZlbnRzXG4gICAgICAgYm90aCBzdWJ0eXBpbmcgYW5kIHBhcmFtZXRlcmljIHBvbHltb3JwaGlzbS4gIEJ1dCB0aGlzIGFsbG93cyB0byBicmVha1xuICAgICAgIGFic3RyYWN0aW9ucywgYXMgaW4gc29tZW9uZSBjb3VsZCB3cml0ZTpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHRcbiAgICAgICAgIHR5cGUgdSAoKiA9IHQgdW5kZXJuZWF0aCAqKVxuICAgICAgICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdCBJbmNyLnQgKiB1IEluY3IudCAoKiB0aGUgdHdvIGluY3JlbWVudGFscyBhcmUgcGh5c19lcXVhbCAqKVxuICAgICAgIF19XG5cbiAgICAgICBhbmQgd2Ugd291bGQgZmlndXJlIG91dCB0aGF0IHR5cGUgdCA9IHUuICBIb3dldmVyLCB3ZSBjb3VsZCBhZGQgYSBUeXBlX2VxdWFsLklkIHRvXG4gICAgICAgbm9kZXMgYW5kIGRvIHRoZSBzYW1lLCBzbyBpdCBzZWVtcyB0byBiZSBhIG1vcmUgZ2VuZXJhbCBpc3N1ZS4gKilcbiAgICBpZiBwaHlzX3NhbWUgdDEgdDJcbiAgICB0aGVuIFNvbWUgKHRfaXNfaW5qZWN0aXZlIChPYmoubWFnaWMgKFQgOiBfIFR5cGVfZXF1YWwudCkgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5lbmRcblxuYW5kIE9ic2VydmVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmXG5lbmQgPVxuICBPYnNlcnZlclxuXG5hbmQgT25seV9pbl9kZWJ1ZyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgT25seV9pbl9kZWJ1Z1xuXG5hbmQgUGFja2VkX3dlYWtfaGFzaHRibCA6IHNpZ1xuICB0eXBlIHQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbmVuZCA9XG4gIFBhY2tlZF93ZWFrX2hhc2h0YmxcblxuYW5kIFJlY29tcHV0ZV9oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgUmVjb21wdXRlX2hlYXBcblxuYW5kIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBzaWdcbiAgdHlwZSB0ID0gVCA6ICdhIE5vZGUudCAqICdhIE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlLnQgLT4gdFxuZW5kID1cbiAgUnVuX29uX3VwZGF0ZV9oYW5kbGVyc1xuXG5hbmQgU2NvcGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcblxuICBsZXQgc2V4cF9vZl90ID0gZnVuY3Rpb25cbiAgICB8IFRvcCAtPiBcIlRvcFwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIHwgQmluZCBiaW5kIC0+IGJpbmQubWFpbiB8PiBbJXNleHBfb2Y6IF8gTm9kZS50XVxuICA7O1xuZW5kXG5cbmFuZCBTbmFwc2hvdCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IGJlZm9yZSA6ICdhXG4gICAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU25hcHNob3RcblxuYW5kIFN0YXRlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICAgIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIFN0YXR1cyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgU3RhYmlsaXppbmdcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbmVuZCA9XG4gIFN0YXR1c1xuXG5hbmQgU3RlcF9mdW5jdGlvbl9ub2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU3RlcF9mdW5jdGlvbl9ub2RlXG5cbmFuZCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgICA7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICAgIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gICAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gICAgfVxuZW5kID1cbiAgVW5vcmRlcmVkX2FycmF5X2ZvbGRcblxuYW5kIFZhciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICAgIH1cblxuICB0eXBlICdhIHZhciA6PSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgVmFyXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlZhci50ID1cbiAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgOyAoKiBbdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSBpcyBvbmx5IHNldCB0byBbVW9wdC5zb21lXSBpZiB0aGUgdXNlciBjYWxsc1xuICAgICAgIFtWYXIuc2V0XSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyB0aGUgKGxhc3QpIHZhbHVlIHNldC4gIEF0XG4gICAgICAgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCBhbGwgc3VjaCB2YXJpYWJsZXMgYXJlIHByb2Nlc3NlZCB0byBkbyBbdC52YWx1ZSA8LVxuICAgICAgIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICA7ICgqIFtzZXRfYXRdIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3QgcmVjZW50IHRpbWUgW3QudmFsdWVdIGNoYW5nZWQuXG4gICAgICAgVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdFxuICAgICAgIHJlY2VudCB0aW1lIFtWYXIuc2V0IHRdIHdhcyBjYWxsZWQsIGR1ZSB0byB0aGUgZWZmZWN0IG9mIFtWYXIuc2V0XSBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uIGJlaW5nIGRlbGF5ZWQgdW50aWwgYWZ0ZXIgdGhlIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+dmFsdWU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbjooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5zZXRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH53YXRjaDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHdhdGNoIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHdhdGNoLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogcG9zc2libGUgd2l0aCBbfnVzZV9jdXJyZW50X3Njb3BlOnRydWVdICopXG4gICAgICAgICAgIHwgVmFyIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSkpXG47O1xuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC53YXRjaC5zdGF0ZVxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgJ2EgdmFyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHQgPSBUeXBlcy5WYXIuUGFja2VkLnQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBsYXRlc3RfdmFsdWUgdCA9XG4gIGlmIFVvcHQuaXNfc29tZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICB0aGVuIFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIGVsc2UgdC52YWx1ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbm1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZfaW52ZXJzZSBvZiAoJ2IgLT4gJ2EgLT4gJ2IpXG4gICAgfCBVcGRhdGUgb2YgKCdiIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2IpXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHVwZGF0ZSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVwZGF0ZSB1cGRhdGUgLT4gdXBkYXRlXG4gICAgfCBGX2ludmVyc2UgZl9pbnZlcnNlIC0+XG4gICAgICBmdW4gZm9sZF92YWx1ZSB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT4gZiAoZl9pbnZlcnNlIGZvbGRfdmFsdWUgb2xkX3ZhbHVlKSBuZXdfdmFsdWVcbiAgOztcbmVuZFxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuVW5vcmRlcmVkX2FycmF5X2ZvbGQudCA9XG4gIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gIDsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH51cGRhdGU6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQ7XG4gICAgICAgICAgICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX3NvbWUgY2hpbGQudmFsdWVfb3B0KSkpKVxuICAgICAgfmZvbGRfdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIGZvbGRfdmFsdWUgLT5cbiAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2FjYyBmb2xkX3ZhbHVlO1xuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgIChVb3B0LmlzX3NvbWUgZm9sZF92YWx1ZSlcbiAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgKHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpKSlcbiAgICAgIH5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8PSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpKSlcbiAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzOlxuICAgICAgICAoY2hlY2sgKGZ1biBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIC0+XG4gICAgICAgICAgIGFzc2VydCAoZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA+IDApKSkpXG47O1xuXG5sZXQgY3JlYXRlIH5pbml0IH5mIH51cGRhdGUgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgfmNoaWxkcmVuIH5tYWluID1cbiAgeyBpbml0XG4gIDsgZlxuICA7IHVwZGF0ZSA9IFVwZGF0ZS51cGRhdGUgdXBkYXRlIH5mXG4gIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICA7IGNoaWxkcmVuXG4gIDsgbWFpblxuICA7IGZvbGRfdmFsdWUgPVxuICAgICAgVW9wdC5ub25lXG4gICgqIFdlIG1ha2UgW251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc11cbiAgICAgc28gdGhhdCB0aGVyZSB3aWxsIGJlIGEgZnVsbCBjb21wdXRhdGlvbiB0aGUgbmV4dCB0aW1lIHRoZSBub2RlIGlzIGNvbXB1dGVkLiAqKVxuICA7IG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID0gZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB9XG47O1xuXG5sZXQgZnVsbF9jb21wdXRlIHsgaW5pdDsgZjsgY2hpbGRyZW47IF8gfSA9XG4gIGxldCByZXN1bHQgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgIHJlc3VsdCA6PSBmICFyZXN1bHQgKFVvcHQudmFsdWVfZXhuIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpLnZhbHVlX29wdClcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGNvbXB1dGUgdCA9XG4gIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgdGhlbiAoXG4gICAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSAwO1xuICAgIHQuZm9sZF92YWx1ZSA8LSBVb3B0LnNvbWUgKGZ1bGxfY29tcHV0ZSB0KSk7XG4gIFVvcHQudmFsdWVfZXhuIHQuZm9sZF92YWx1ZVxuOztcblxubGV0IGZvcmNlX2Z1bGxfY29tcHV0ZSB0ID1cbiAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQubm9uZTtcbiAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBjaGlsZF9jaGFuZ2VkXG4gICAgICAodHlwZSBhIGIpXG4gICAgICAodCA6IChhLCBfKSB0KVxuICAgICAgfihjaGlsZCA6IGIgTm9kZS50KVxuICAgICAgfmNoaWxkX2luZGV4XG4gICAgICB+KG9sZF92YWx1ZV9vcHQgOiBiIFVvcHQudClcbiAgICAgIH4obmV3X3ZhbHVlIDogYilcbiAgPVxuICBsZXQgY2hpbGRfYXRfaW5kZXggPSB0LmNoaWxkcmVuLihjaGlsZF9pbmRleCkgaW5cbiAgbWF0Y2ggTm9kZS50eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSBjaGlsZCBjaGlsZF9hdF9pbmRleCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltVbm9yZGVyZWRfYXJyYXlfZm9sZC5jaGlsZF9jaGFuZ2VkXSBtaXNtYXRjaFwiXG4gICAgICAgICAgfnVub3JkZXJlZF9hcnJheV9mb2xkOih0IDogKF8sIF8pIHQpXG4gICAgICAgICAgKGNoaWxkX2luZGV4IDogaW50KVxuICAgICAgICAgIChjaGlsZCA6IF8gTm9kZS50KV1cbiAgfCBTb21lIFQgLT5cbiAgICBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIC0gMVxuICAgIHRoZW4gKFxuICAgICAgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8LSB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlICsgMTtcbiAgICAgICgqIFdlIG9ubHkgcmVhY2ggdGhpcyBjYXNlIGlmIHdlIGhhdmUgYWxyZWFkeSBkb25lIGEgZnVsbCBjb21wdXRlLCBpbiB3aGljaCBjYXNlXG4gICAgICAgICBbVW9wdC5pc19zb21lIHQuZm9sZF92YWx1ZV0gYW5kIFtVb3B0LmlzX3NvbWUgb2xkX3ZhbHVlX29wdF0uICopXG4gICAgICB0LmZvbGRfdmFsdWVcbiAgICAgIDwtIFVvcHQuc29tZVxuICAgICAgICAgICAodC51cGRhdGVcbiAgICAgICAgICAgICAgKFVvcHQudmFsdWVfZXhuIHQuZm9sZF92YWx1ZSlcbiAgICAgICAgICAgICAgfm9sZF92YWx1ZTooVW9wdC52YWx1ZV9leG4gb2xkX3ZhbHVlX29wdClcbiAgICAgICAgICAgICAgfm5ld192YWx1ZSkpXG4gICAgZWxzZSBpZiB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgdGhlbiBmb3JjZV9mdWxsX2NvbXB1dGUgdFxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5cbnR5cGUgdCA9IChUeXBlcy5BbGFybV92YWx1ZS50W0BzZXhwLm9wYXF1ZV0pIEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudWxsID0gQWxhcm0ubnVsbCAoKVxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEFsYXJtX3ZhbHVlID0gVHlwZXMuQWxhcm1fdmFsdWVcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5TdGVwX2Z1bmN0aW9uX25vZGUudCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgY2hpbGQgOiAnYSBTdGVwX2Z1bmN0aW9uLnQgTm9kZS50IFVvcHQudFxuICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgOyBtdXRhYmxlIHZhbHVlIDogJ2EgVW9wdC50XG4gIDsgbXV0YWJsZSB1cGNvbWluZ19zdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgbXV0YWJsZSBhbGFybV92YWx1ZSA6IChBbGFybV92YWx1ZS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBwaHlzX3NhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBbdXBjb21pbmdfc3RlcHNdIGJlY29tZXMgZW1wdHkuICopXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2hpbGQ6aWdub3JlXG4gICAgICB+ZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdDppZ25vcmVcbiAgICAgIH52YWx1ZTooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH51cGNvbWluZ19zdGVwczppZ25vcmVcbiAgICAgIH5hbGFybTooY2hlY2sgQWxhcm0uaW52YXJpYW50KVxuICAgICAgfmFsYXJtX3ZhbHVlOlxuICAgICAgICAoY2hlY2sgKGZ1biAoYWxhcm1fdmFsdWUgOiBBbGFybV92YWx1ZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBhbGFybV92YWx1ZS5hY3Rpb24gd2l0aFxuICAgICAgICAgICB8IFN0ZXBfZnVuY3Rpb24gdDIgLT4gYXNzZXJ0IChwaHlzX3NhbWUgdCB0MilcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcblxubGV0IHJlYyBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyBhMSBzdGVwcyA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IFNvbWUgKChzdGVwX2F0LCBhMiksIHN0ZXBzMikgd2hlbiBUaW1lX25zLiggPj0gKSB0b18gc3RlcF9hdCAtPlxuICAgIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGEyIHN0ZXBzMlxuICB8IF8gLT5cbiAgICB0LnZhbHVlIDwtIFVvcHQuc29tZSBhMTtcbiAgICB0LnVwY29taW5nX3N0ZXBzIDwtIHN0ZXBzXG47O1xuXG5sZXQgYWR2YW5jZSB0IH50b18gPSBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyAoVW9wdC52YWx1ZV9leG4gdC52YWx1ZSkgdC51cGNvbWluZ19zdGVwc1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuQXJyYXlfZm9sZC50ID1cbiAgeyBpbml0IDogJ2FjY1xuICA7IGYgOiAnYWNjIC0+ICdhIC0+ICdhY2NcbiAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aW5pdDooY2hlY2sgaW52YXJpYW50X2FjYylcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfmNoaWxkcmVuOlxuICAgICAgICAoY2hlY2sgKGZ1biBjaGlsZHJlbiAtPlxuICAgICAgICAgICBBcnJheS5pdGVyIGNoaWxkcmVuIH5mOihmdW4gKGNoaWxkIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgICAgVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EgY2hpbGQudmFsdWVfb3B0KSkpKVxuOztcblxubGV0IGNvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbiB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0LnQgPVxuICB7IG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBCZWZvcmVfb3JfYWZ0ZXIudCBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IEFmdGVyIC0+ICgpICgqIGhhcHBlbnMgb25jZSB0aGUgY3VycmVudCB0aW1lIHBhc3NlcyBbdC5hdF0uICopXG4gICAgICAgICAgIHwgQXQgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmF0Omlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlIHQgPSBUeXBlcy5BdF9pbnRlcnZhbHMudCA9XG4gIHsgbWFpbiA6IHVuaXQgTm9kZS50XG4gIDsgYmFzZSA6IFRpbWVfbnMudFxuICA7IGludGVydmFsIDogVGltZV9ucy5TcGFuLnRcbiAgOyBtdXRhYmxlIGFsYXJtIDogQWxhcm0udFxuICA7IGNsb2NrIDogKFR5cGVzLkNsb2NrLnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IEF0X2ludGVydmFscyB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YmFzZTppZ25vcmVcbiAgICAgIH5pbnRlcnZhbDooY2hlY2sgKGZ1biBpbnRlcnZhbCAtPiBhc3NlcnQgKFRpbWVfbnMuU3Bhbi5pc19wb3NpdGl2ZSBpbnRlcnZhbCkpKVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBCaW5kID0gVHlwZXMuQmluZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5tb2R1bGUgU2NvcGUgPSBUeXBlcy5TY29wZVxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCaW5kLnQgPVxuICB7IG1haW4gOiAnYiBOb2RlLnRcbiAgOyAoKiBbZl0gaXMgdGhlIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gdGhhdCB3ZSBydW4gZWFjaCB0aW1lIFt0Lmxoc10gY2hhbmdlcy4gIEl0IGlzXG4gICAgICAgbXV0YWJsZSBvbmx5IHNvIHdlIGNhbiBjbGVhciBpdCB3aGVuIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGYgOiAnYSAtPiAnYiBOb2RlLnRcbiAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyAoKiBbcmhzXSBpcyBpbml0aWFsbHkgW25vbmVdLCBhbmQgYWZ0ZXIgdGhhdCBpcyBbc29tZV0gb2YgdGhlIHJlc3VsdCBvZiB0aGUgbW9zdCByZWNlbnRcbiAgICAgICBjYWxsIHRvIFtmXS4gKilcbiAgICBtdXRhYmxlIHJocyA6ICdiIE5vZGUudCBVb3B0LnRcbiAgOyAoKiBbcmhzX3Njb3BlXSBpcyB0aGUgc2NvcGUgaW4gd2hpY2ggW3QuZl0gaXMgcnVuLCBpLmUuIGl0IGlzIFtTY29wZS5CaW5kIHRdLiAgSXQgaXNcbiAgICAgICBbbXV0YWJsZV0gb25seSB0byBhdm9pZCBhIFtsZXQgcmVjXSBkdXJpbmcgY3JlYXRpb24uICopXG4gICAgbXV0YWJsZSByaHNfc2NvcGUgOiBTY29wZS50XG4gIDsgKCogW2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc10gaXMgdGhlIGhlYWQgb2YgdGhlIHNpbmdseS1saW5rZWQgbGlzdCBvZiBub2RlcyBjcmVhdGVkIG9uXG4gICAgICAgdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBbdF0sIGkuZS4gaW4gW3QucmhzX3Njb3BlXS4gKilcbiAgICBtdXRhYmxlIGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogKF8sIF8pIHQpICh0MiA6IChfLCBfKSB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaXNfdmFsaWQgdCA9XG4gIG1hdGNoIHQubWFpbi5raW5kIHdpdGhcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyB0IH4oZiA6IE5vZGUuUGFja2VkLnQgLT4gdW5pdCkgPVxuICBsZXQgciA9IHJlZiB0LmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIGYgKFQgbm9kZV9vbl9yaHMpXG4gIGRvbmVcbjs7XG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIF9pbnZhcmlhbnRfYiB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQmluZF9tYWluIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5mOmlnbm9yZVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgbGhzX2NoYW5nZS5jcmVhdGVkX2luIHQubWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbGhzX2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQmluZF9saHNfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5yaHM6aWdub3JlXG4gICAgICB+cmhzX3Njb3BlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgU2NvcGUuVG9wIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICB8IEJpbmQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpKSlcbiAgICAgIH5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM6XG4gICAgICAgIChjaGVjayAoZnVuIF8gLT5cbiAgICAgICAgICAgaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgbm9kZS5jcmVhdGVkX2luIHQucmhzX3Njb3BlKTtcbiAgICAgICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlIHRoZW4gYXNzZXJ0ICh0Lmxoc19jaGFuZ2UuaGVpZ2h0IDwgbm9kZS5oZWlnaHQpKSkpKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgZWRnZSA9ICdhIFR5cGVzLkV4cGVydC5lZGdlID1cbiAgeyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9uX2NoYW5nZSA6ICdhIC0+IHVuaXRcbiAgOyAoKiBbaW5kZXhdIGlzIGRlZmluZWQgd2hlbmV2ZXIgdGhlIFtlZGdlXSBpcyBpbiB0aGUgW2NoaWxkcmVuXSBvZiBzb21lIFt0XS4gVGhlbiBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiB0aGlzIFtlZGdlXSBpbiB0aGF0IFtjaGlsZHJlbl0gYXJyYXkuIEl0IG1pZ2h0IHNlZW0gcmVkdW5kYW50IHdpdGggYWxsXG4gICAgICAgdGhlIG90aGVyIGluZGV4ZXMgd2UgaGF2ZSwgYnV0IGl0IGlzIG5lY2Vzc2FyeSB0byByZW1vdmUgY2hpbGRyZW4uICBUaGUgaW5kZXggbWF5XG4gICAgICAgY2hhbmdlIGFzIHNpYmxpbmcgY2hpbGRyZW4gYXJlIHJlbW92ZWQuICopXG4gICAgbXV0YWJsZSBpbmRleCA6IGludCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSBwYWNrZWRfZWRnZSA9IFR5cGVzLkV4cGVydC5wYWNrZWRfZWRnZSA9IEUgOiAnYSBlZGdlIC0+IHBhY2tlZF9lZGdlXG5bQEB1bmJveGVkXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5FeHBlcnQudCA9XG4gIHsgZiA6IHVuaXQgLT4gJ2FcbiAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA6IGlzX25vd19vYnNlcnZhYmxlOmJvb2wgLT4gdW5pdFxuICA7IG11dGFibGUgY2hpbGRyZW4gOiBwYWNrZWRfZWRnZSBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBudW1fY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGVuIHNldCwgbWFrZXMgdGhlIG5vZGUgb2YgW3RdIHN0YWxlLiAgSXQgaXMgc2V0IHdoZW4gdGhlIHNldCBvZiBjaGlsZHJlbiBjaGFuZ2VzLlxuICAgICAgIE90aGVyd2lzZSB0aGUgbm9ybWFsIGNoZWNrIG9mIHN0YWxlbmVzcyAoY29tcGFyaW5nIHRoZSBbY2hhbmdlZF9hdF0gZmllbGQgb2ZcbiAgICAgICBjaGlsZHJlbiBhbmQgdGhlIFtyZWNvbXB1dGVkX2F0XSBmaWVsZCBmb3IgdGhlIG5vZGUgb2YgW3RdKSB3b3VsZCBub3QgYmUgZW5vdWdoLlxuICAgICAgIFRoaXMgcGxheXMgYSByb2xlIHNpbWlsYXIgdG8gdGhlIGN1dG9mZiBvZiBbTmV2ZXJdIGZvciB0aGUgbGhzLWNoYW5nZSBvZiBiaW5kcywgYnV0XG4gICAgICAgd2UgZG9uJ3QgaGF2ZSBhIHNwZWNpYWwgY2hpbGQuICopXG4gICAgbXV0YWJsZSBmb3JjZV9zdGFsZSA6IGJvb2xcbiAgOyAoKiBUaGUgbnVtYmVyIG9mIGludmFsaWQgY2hpbGRyZW4gdGhhdCBwb2ludCB0byB1cy4gIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG5vZGVcbiAgICAgICBvZiBbdF0gbmVlZHMgdG8gaW52YWxpZGF0ZWQsIHdpdGhvdXQgaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSBjaGlsZHJlbi4gIFRoaXMgaXMgbm90XG4gICAgICAgbmVlZGVkIGZvciBvdGhlciBub2RlcywgYmVjYXVzZSB0aGVyZSBhcmUgbm8gb3RoZXIgbm9kZXMgdGhhdCBoYXZlIGEgcG90ZW50aWFsbHlcbiAgICAgICBsYXJnZSBhbmQgZHluYW1pYyBzZXQgb2YgY2hpbGRyZW4uICopXG4gICAgbXV0YWJsZSBudW1faW52YWxpZF9jaGlsZHJlbiA6IGludFxuICA7ICgqIFdoZXRoZXIgd2Ugd2lsbCBmaXJlIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MgZm9yIGFsbCBjaGlsZHJlbiB3aGVuIHRoZSBub2RlIG9mIFt0XVxuICAgICAgIGl0c2VsZiBydW5zLiAgVXNlZCB0byBtYWtlIHN1cmUgd2UgcmVydW4gZXZlcnl0aGluZyBhZnRlciBbdF0gc3dpdGNoZXMgZnJvbVxuICAgICAgIHVub2JzZXJ2YWJsZSBhbmQgYmFjayB0byBvYnNlcnZhYmxlLiAqKVxuICAgIG11dGFibGUgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgOiBib29sXG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnRcbiAgICAgIF9pbnZhcmlhbnRfYVxuICAgICAgeyBmID0gX1xuICAgICAgOyBjaGlsZHJlblxuICAgICAgOyBudW1fY2hpbGRyZW5cbiAgICAgIDsgZm9yY2Vfc3RhbGUgPSBfXG4gICAgICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuXG4gICAgICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlID0gX1xuICAgICAgOyB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IF9cbiAgICAgIH1cbiAgPVxuICBhc3NlcnQgKG51bV9jaGlsZHJlbiA8PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCBjaGlsZHJlbik7XG4gIGlnbm9yZSBudW1faW52YWxpZF9jaGlsZHJlbjtcbiAgKCogaW52YXJpYW50IGlzIGJlbG93LCBiZWNhdXNlIHdlIG5lZWQgc29tZSBjb250ZXh0ICopXG4gIFVuaWZvcm1fYXJyYXkuaXRlcmkgY2hpbGRyZW4gfmY6KGZ1biBpIHVvcHQgLT5cbiAgICBtYXRjaCBpIDwgbnVtX2NoaWxkcmVuIHdpdGhcbiAgICB8IHRydWUgLT5cbiAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIHVvcHQgaW5cbiAgICAgIFsldGVzdF9yZXN1bHQ6IGludF0gKFVvcHQudmFsdWVfZXhuIHIuaW5kZXgpIH5leHBlY3Q6aVxuICAgIHwgZmFsc2UgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgdW9wdCkpXG47O1xuXG5sZXQgaW52YXJpYW50X2Fib3V0X251bV9pbnZhbGlkX2NoaWxkcmVuIHQgfmlzX25lY2Vzc2FyeSA9XG4gIGxldCB7IGNoaWxkcmVuOyBudW1fY2hpbGRyZW47IG51bV9pbnZhbGlkX2NoaWxkcmVuOyBfIH0gPSB0IGluXG4gIGlmIG5vdCBpc19uZWNlc3NhcnlcbiAgdGhlbiBbJXRlc3RfcmVzdWx0OiBpbnRdIG51bV9pbnZhbGlkX2NoaWxkcmVuIH5leHBlY3Q6MFxuICBlbHNlIChcbiAgICBsZXQgY291bnRfaW52YWxpZF9jaGlsZHJlbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpKSBpblxuICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIHIuY2hpbGQpIHRoZW4gaW5jciBjb3VudF9pbnZhbGlkX2NoaWxkcmVuXG4gICAgZG9uZTtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIG51bV9pbnZhbGlkX2NoaWxkcmVuIH5leHBlY3Q6IWNvdW50X2ludmFsaWRfY2hpbGRyZW4pXG47O1xuXG5sZXQgY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9XG4gIHsgZlxuICA7IG9uX29ic2VydmFiaWxpdHlfY2hhbmdlXG4gIDsgY2hpbGRyZW4gPSBVbmlmb3JtX2FycmF5LmVtcHR5XG4gIDsgbnVtX2NoaWxkcmVuID0gMFxuICA7IGZvcmNlX3N0YWxlID0gZmFsc2VcbiAgOyBudW1faW52YWxpZF9jaGlsZHJlbiA9IDBcbiAgOyB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IHRydWVcbiAgfVxuOztcblxubGV0IG1ha2Vfc3RhbGUgdCA9XG4gIGlmIHQuZm9yY2Vfc3RhbGVcbiAgdGhlbiBgQWxyZWFkeV9zdGFsZVxuICBlbHNlIChcbiAgICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gICAgYE9rKVxuOztcblxubGV0IGluY3JfaW52YWxpZF9jaGlsZHJlbiB0ID0gdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuICsgMVxubGV0IGRlY3JfaW52YWxpZF9jaGlsZHJlbiB0ID0gdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIC0gMVxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgPVxuICBpZiB0Lm51bV9jaGlsZHJlbiA+PSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuXG4gIHRoZW4gKFxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9jaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW4pO1xuICAgIGxldCBuZXdfbWF4ID0gSW50Lm1heCAyICgyICogVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbikgaW5cbiAgICB0LmNoaWxkcmVuIDwtIFVuaWZvcm1fYXJyYXkucmVhbGxvYyB0LmNoaWxkcmVuIH5sZW46bmV3X21heClcbjs7XG5cbmxldCBhZGRfY2hpbGRfZWRnZSB0IHBhY2tlZF9lZGdlID1cbiAgbGV0IChFIGVkZ2UpID0gcGFja2VkX2VkZ2UgaW5cbiAgYXNzZXJ0IChVb3B0LmlzX25vbmUgZWRnZS5pbmRleCk7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSB0O1xuICBsZXQgbmV3X2NoaWxkX2luZGV4ID0gdC5udW1fY2hpbGRyZW4gaW5cbiAgZWRnZS5pbmRleCA8LSBVb3B0LnNvbWUgbmV3X2NoaWxkX2luZGV4O1xuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIG5ld19jaGlsZF9pbmRleCAoVW9wdC5zb21lIHBhY2tlZF9lZGdlKTtcbiAgdC5udW1fY2hpbGRyZW4gPC0gdC5udW1fY2hpbGRyZW4gKyAxO1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gICgqIFdlIHdpbGwgYnVtcCB0aGUgbnVtYmVyIG9mIGludmFsaWQgY2hpbGRyZW4gaWYgbmVjZXNzYXJ5IHdoZW4gY29ubmVjdGluZyBjaGlsZCBhbmRcbiAgICAgcGFyZW50LiAgU2FtZSB0aGluZyBmb3IgcnVubmluZyB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzLiAqKVxuICBuZXdfY2hpbGRfaW5kZXhcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuIHQgfmNoaWxkX2luZGV4MSB+Y2hpbGRfaW5kZXgyID1cbiAgbGV0IChFIGVkZ2UxKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MSkgaW5cbiAgbGV0IChFIGVkZ2UyKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4MikgaW5cbiAgZWRnZTEuaW5kZXggPC0gVW9wdC5zb21lIGNoaWxkX2luZGV4MjtcbiAgZWRnZTIuaW5kZXggPC0gVW9wdC5zb21lIGNoaWxkX2luZGV4MTtcbiAgVW5pZm9ybV9hcnJheS5zd2FwIHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxIGNoaWxkX2luZGV4MlxuOztcblxubGV0IGxhc3RfY2hpbGRfZWRnZV9leG4gdCA9XG4gIGxldCBsYXN0X2luZGV4ID0gdC5udW1fY2hpbGRyZW4gLSAxIGluXG4gIFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXgpXG47O1xuXG5sZXQgcmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gdCA9XG4gIGxldCBsYXN0X2luZGV4ID0gdC5udW1fY2hpbGRyZW4gLSAxIGluXG4gIGxldCBwYWNrZWRfZWRnZV9vcHQgPSBVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggaW5cbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5jaGlsZHJlbiBsYXN0X2luZGV4IFVvcHQubm9uZTtcbiAgdC5udW1fY2hpbGRyZW4gPC0gbGFzdF9pbmRleDtcbiAgdC5mb3JjZV9zdGFsZSA8LSB0cnVlO1xuICBhc3NlcnQgKFVvcHQuaXNfc29tZSBwYWNrZWRfZWRnZV9vcHQpO1xuICBsZXQgKEUgZWRnZSkgPSBVb3B0LnVuc2FmZV92YWx1ZSBwYWNrZWRfZWRnZV9vcHQgaW5cbiAgZWRnZS5pbmRleCA8LSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBiZWZvcmVfbWFpbl9jb21wdXRhdGlvbiB0ID1cbiAgaWYgdC5udW1faW52YWxpZF9jaGlsZHJlbiA+IDBcbiAgdGhlbiBgSW52YWxpZFxuICBlbHNlIChcbiAgICB0LmZvcmNlX3N0YWxlIDwtIGZhbHNlO1xuICAgIGxldCB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA9IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgaW5cbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIGZhbHNlO1xuICAgIGlmIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzXG4gICAgdGhlblxuICAgICAgZm9yIGkgPSAwIHRvIHQubnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5jaGlsZHJlbiBpKSBpblxuICAgICAgICByLm9uX2NoYW5nZSAoVW9wdC52YWx1ZV9leG4gci5jaGlsZC52YWx1ZV9vcHQpXG4gICAgICBkb25lO1xuICAgIGBPaylcbjs7XG5cbmxldCBvYnNlcnZhYmlsaXR5X2NoYW5nZSB0IH5pc19ub3dfb2JzZXJ2YWJsZSA9XG4gIHQub25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgfmlzX25vd19vYnNlcnZhYmxlO1xuICBpZiBub3QgaXNfbm93X29ic2VydmFibGVcbiAgdGhlbiAoXG4gICAgdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA8LSB0cnVlO1xuICAgICgqIElmIHdlIGRvbid0IHJlc2V0IG51bV9pbnZhbGlkX2NoaWxkcmVuLCB3ZSB3b3VsZCBkb3VibGUgY291bnQgdGhlbToganVzdCBpbWFnaW5lXG4gICAgICAgd2hhdCBoYXBwZW5zIHdlIGlmIHJlY29ubmVjdC9kaXNjb25uZWN0L3JlY29ubmVjdC9kaXNjb25uZWN0IHdpdGggYW4gaW52YWxpZFxuICAgICAgIGNoaWxkLiAqKVxuICAgIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gPC0gMClcbjs7XG5cbmxldCBydW5fZWRnZV9jYWxsYmFjayB0IH5jaGlsZF9pbmRleCA9XG4gIGlmIG5vdCB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzXG4gIHRoZW4gKFxuICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGNoaWxkX2luZGV4KSBpblxuICAgICgqIFRoaXMgdmFsdWUgaXMgbm90IG5lY2Vzc2FyaWx5IHNldCwgYmVjYXVzZSB3ZSB0cnkgdG8gcnVuIHRoaXMgd2hlbiBjb25uZWN0aW5nIHRoZVxuICAgICAgIG5vZGUgdG8gaXRzIGNoaWxkcmVuLCB3aGljaCBjb3VsZCBiZSBiZWZvcmUgdGhleSBoYXZlIHJ1biBldmVuIG9uY2UuICBBbHNvIHRoZSBub2RlXG4gICAgICAgY291bGQgYmUgaW52YWxpZC4gKilcbiAgICBpZiBVb3B0LmlzX3NvbWUgci5jaGlsZC52YWx1ZV9vcHRcbiAgICB0aGVuIHIub25fY2hhbmdlIChVb3B0LnVuc2FmZV92YWx1ZSByLmNoaWxkLnZhbHVlX29wdCkpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuaW5jbHVkZSBUeXBlcy5TY29wZVxuXG5sZXQgdG9wID0gVG9wXG5cbmxldCBpc190b3AgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gKClcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGlnbm9yZSBiaW5kXG47O1xuXG4oKiBVbmxpa2UgZm9yIG5vZGVzLCB0aGVyZSBpcyBubyBpbnZhcmlhbnQgW2lzX25lY2Vzc2FyeSB0IDw9PiBoZWlnaHQgPiAtMV0gKGRvZXNuJ3Qgd29ya1xuICAgYmVjYXVzZSBvZiBbVG9wXSkuICBUaGlzIGlzIGZpbmUgc2luY2UgdGhlIGhlaWdodCBvZiBhIHNjb3BlIGlzIG9ubHkgdXNlZCB0byBjb25zdHJhaW5cbiAgIG90aGVyIGhlaWdodHMsIG5vdCB0byBzY2hlZHVsZSBpdC4gKilcbmxldCBoZWlnaHQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAtMVxuICB8IEJpbmQgYmluZCAtPiBiaW5kLmxoc19jaGFuZ2UuaGVpZ2h0XG47O1xuXG5sZXQgaXNfdmFsaWQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiB0cnVlXG4gIHwgQmluZCBiaW5kIC0+IEJpbmQuaXNfdmFsaWQgYmluZFxuOztcblxubGV0IGlzX25lY2Vzc2FyeSA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gTm9kZS5pc19uZWNlc3NhcnkgYmluZC5tYWluXG47O1xuXG5sZXQgYWRkX25vZGUgdCAobm9kZSA6IF8gTm9kZS50KSA9XG4gIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdCk7XG4gIG1hdGNoIHQgd2l0aFxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPlxuICAgIG5vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHM7XG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5zb21lIChUeXBlcy5Ob2RlLlBhY2tlZC5UIG5vZGUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkZyZWV6ZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbmx5X2ZyZWV6ZV93aGVuIDogJ2EgLT4gYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgYXNzZXJ0IChTY29wZS5pc190b3AgbWFpbi5jcmVhdGVkX2luKTtcbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpICgqIGhhcHBlbnMgd2hlbiBmcmVlemluZyBhbiBpbnZhbGlkIHZhbHVlICopXG4gICAgICAgICAgIHwgQ29uc3QgXyAtPiAoKSAoKiBoYXBwZW5zIG9uIGJlY29taW5nIGZyb3plbiAqKVxuICAgICAgICAgICB8IEZyZWV6ZSB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+Y2hpbGQ6aWdub3JlXG4gICAgICB+b25seV9mcmVlemVfd2hlbjppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLklmX3RoZW5fZWxzZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgdGVzdCA6IGJvb2wgTm9kZS50XG4gIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7IG11dGFibGUgY3VycmVudF9icmFuY2ggOiAnYSBOb2RlLnQgVW9wdC50XG4gIDsgdGhlbl8gOiAnYSBOb2RlLnRcbiAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxuXG5sZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IElmX3RoZW5fZWxzZSB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+ICgpKSlcbiAgICAgIH50ZXN0Omlnbm9yZVxuICAgICAgfnRlc3RfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAodGVzdF9jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggdGVzdF9jaGFuZ2Uua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IElmX3Rlc3RfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jdXJyZW50X2JyYW5jaDpcbiAgICAgICAgKGNoZWNrIChmdW4gY3VycmVudF9icmFuY2ggLT5cbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIGN1cnJlbnRfYnJhbmNoXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCBjdXJyZW50X2JyYW5jaCA9IFVvcHQudmFsdWVfZXhuIGN1cnJlbnRfYnJhbmNoIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC50aGVuXyB8fCBwaHlzX2VxdWFsIGN1cnJlbnRfYnJhbmNoIHQuZWxzZV8pKSkpXG4gICAgICB+dGhlbl86aWdub3JlXG4gICAgICB+ZWxzZV86aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Kb2luLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBsaHMgOiAnYSBOb2RlLnQgTm9kZS50XG4gIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSByaHMgOiAnYSBOb2RlLnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSm9pbl9tYWluIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5saHM6aWdub3JlXG4gICAgICB+bGhzX2NoYW5nZTpcbiAgICAgICAgKGNoZWNrIChmdW4gKGxoc19jaGFuZ2UgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbGhzX2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIHQnIC0+IGFzc2VydCAoc2FtZSB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5yaHM6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5TbmFwc2hvdC50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgYXQgOiBUaW1lX25zLnRcbiAgOyBiZWZvcmUgOiAnYVxuICA7IHZhbHVlX2F0IDogJ2EgTm9kZS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIHNuYXBzaG90dGluZyBhbiBpbnZhbGlkIG5vZGUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgYWZ0ZXIgdGhlIHNuYXBzaG90ICopXG4gICAgICAgICAgIHwgU25hcHNob3QgdCcgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmF0Omlnbm9yZVxuICAgICAgfmJlZm9yZTooY2hlY2sgaW52YXJpYW50X2EpXG4gICAgICB+dmFsdWVfYXQ6aWdub3JlXG4gICAgICB+Y2xvY2s6aWdub3JlKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5LaW5kLnQgPVxuICB8IEFycmF5X2ZvbGQgOiAoXywgJ2EpIEFycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgfCBBdF9pbnRlcnZhbHMgOiBBdF9pbnRlcnZhbHMudCAtPiB1bml0IHRcbiAgfCBCaW5kX2xoc19jaGFuZ2UgOiAoXywgXykgQmluZC50IC0+IHVuaXQgdFxuICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgfCBDb25zdCBvZiAnYVxuICB8IEV4cGVydCBvZiAnYSBFeHBlcnQudFxuICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICB8IElmX3Rlc3RfY2hhbmdlIDogXyBJZl90aGVuX2Vsc2UudCAtPiB1bml0IHRcbiAgfCBJZl90aGVuX2Vsc2Ugb2YgJ2EgSWZfdGhlbl9lbHNlLnRcbiAgfCBJbnZhbGlkXG4gIHwgSm9pbl9saHNfY2hhbmdlIDogXyBKb2luLnQgLT4gdW5pdCB0XG4gIHwgSm9pbl9tYWluIG9mICdhIEpvaW4udFxuICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gIHwgU25hcHNob3Qgb2YgJ2EgU25hcHNob3QudFxuICB8IFN0ZXBfZnVuY3Rpb24gb2YgJ2EgU3RlcF9mdW5jdGlvbl9ub2RlLnRcbiAgfCBVbmluaXRpYWxpemVkXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgOiAoXywgJ2EpIFVub3JkZXJlZF9hcnJheV9mb2xkLnQgLT4gJ2EgdFxuICB8IFZhciBvZiAnYSBWYXIudFxuICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwMyA6ICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgLT4gJ2EgdFxuICB8IE1hcDQgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAqICdhMyBOb2RlLnQgKiAnYTQgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNiA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwNyA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwOCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwOSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTAgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTEgOlxuICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhMTAgLT4gJ2ExMSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMiA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAtPiAnYSB0XG4gIHwgTWFwMTMgOlxuICAgICAgKCdhMVxuICAgICAgIC0+ICdhMlxuICAgICAgIC0+ICdhM1xuICAgICAgIC0+ICdhNFxuICAgICAgIC0+ICdhNVxuICAgICAgIC0+ICdhNlxuICAgICAgIC0+ICdhN1xuICAgICAgIC0+ICdhOFxuICAgICAgIC0+ICdhOVxuICAgICAgIC0+ICdhMTBcbiAgICAgICAtPiAnYTExXG4gICAgICAgLT4gJ2ExMlxuICAgICAgIC0+ICdhMTNcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxNCA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhMTRcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxNSA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhMTRcbiAgICAgICAtPiAnYTE1XG4gICAgICAgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgICogJ2E4IE5vZGUudFxuICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAqICdhMTAgTm9kZS50XG4gICAgICAqICdhMTEgTm9kZS50XG4gICAgICAqICdhMTIgTm9kZS50XG4gICAgICAqICdhMTMgTm9kZS50XG4gICAgICAqICdhMTQgTm9kZS50XG4gICAgICAqICdhMTUgTm9kZS50XG4gICAgICAtPiAnYSB0XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgbmFtZSA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQXJyYXlfZm9sZCBfIC0+IFwiQXJyYXlfZm9sZFwiXG4gIHwgQXQgXyAtPiBcIkF0XCJcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBcIkF0X2ludGVydmFsc1wiXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gXCJCaW5kX2xoc19jaGFuZ2VcIlxuICB8IEJpbmRfbWFpbiBfIC0+IFwiQmluZF9tYWluXCJcbiAgfCBDb25zdCBfIC0+IFwiQ29uc3RcIlxuICB8IEV4cGVydCBfIC0+IFwiRXhwZXJ0XCJcbiAgfCBGcmVlemUgXyAtPiBcIkZyZWV6ZVwiXG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBcIklmX3Rlc3RfY2hhbmdlXCJcbiAgfCBJZl90aGVuX2Vsc2UgXyAtPiBcIklmX3RoZW5fZWxzZVwiXG4gIHwgSW52YWxpZCAtPiBcIkludmFsaWRcIlxuICB8IEpvaW5fbGhzX2NoYW5nZSBfIC0+IFwiSm9pbl9saHNfY2hhbmdlXCJcbiAgfCBKb2luX21haW4gXyAtPiBcIkpvaW5fbWFpblwiXG4gIHwgTWFwIF8gLT4gXCJNYXBcIlxuICB8IE1hcDIgXyAtPiBcIk1hcDJcIlxuICB8IE1hcDMgXyAtPiBcIk1hcDNcIlxuICB8IE1hcDQgXyAtPiBcIk1hcDRcIlxuICB8IE1hcDUgXyAtPiBcIk1hcDVcIlxuICB8IE1hcDYgXyAtPiBcIk1hcDZcIlxuICB8IE1hcDcgXyAtPiBcIk1hcDdcIlxuICB8IE1hcDggXyAtPiBcIk1hcDhcIlxuICB8IE1hcDkgXyAtPiBcIk1hcDlcIlxuICB8IE1hcDEwIF8gLT4gXCJNYXAxMFwiXG4gIHwgTWFwMTEgXyAtPiBcIk1hcDExXCJcbiAgfCBNYXAxMiBfIC0+IFwiTWFwMTJcIlxuICB8IE1hcDEzIF8gLT4gXCJNYXAxM1wiXG4gIHwgTWFwMTQgXyAtPiBcIk1hcDE0XCJcbiAgfCBNYXAxNSBfIC0+IFwiTWFwMTVcIlxuICB8IFNuYXBzaG90IF8gLT4gXCJTbmFwc2hvdFwiXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IFwiU3RlcF9mdW5jdGlvblwiXG4gIHwgVW5pbml0aWFsaXplZCAtPiBcIlVuaW5pdGlhbGl6ZWRcIlxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT4gXCJVbm9yZGVyZWRfYXJyYXlfZm9sZFwiXG4gIHwgVmFyIF8gLT4gXCJWYXJcIlxuOztcblxubGV0IGludmFyaWFudCA6IHR5cGUgYS4gYSBJbnZhcmlhbnQudCAtPiBhIHQgSW52YXJpYW50LnQgPVxuICBmdW4gaW52YXJpYW50X2EgdCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIGFycmF5X2ZvbGQgLT4gQXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIGFycmF5X2ZvbGRcbiAgfCBBdCBhdCAtPiBBdC5pbnZhcmlhbnQgYXRcbiAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IEF0X2ludGVydmFscy5pbnZhcmlhbnQgYXRfaW50ZXJ2YWxzXG4gIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGlnbm9yZSBiaW5kXG4gIHwgQmluZF9tYWluIGJpbmQgLT4gQmluZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIGJpbmRcbiAgfCBDb25zdCBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQuaW52YXJpYW50IGludmFyaWFudF9hIGVcbiAgfCBGcmVlemUgZnJlZXplIC0+IEZyZWV6ZS5pbnZhcmlhbnQgaW52YXJpYW50X2EgZnJlZXplXG4gIHwgSWZfdGVzdF9jaGFuZ2UgaWZfdGhlbl9lbHNlIC0+IElmX3RoZW5fZWxzZS5pbnZhcmlhbnQgaWdub3JlIGlmX3RoZW5fZWxzZVxuICB8IElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpbnZhcmlhbnRfYSBpZl90aGVuX2Vsc2VcbiAgfCBJbnZhbGlkIC0+ICgpXG4gIHwgSm9pbl9saHNfY2hhbmdlIGpvaW4gLT4gSm9pbi5pbnZhcmlhbnQgaWdub3JlIGpvaW5cbiAgfCBKb2luX21haW4gam9pbiAtPiBKb2luLmludmFyaWFudCBpbnZhcmlhbnRfYSBqb2luXG4gIHwgTWFwIF9cbiAgfCBNYXAyIF9cbiAgfCBNYXAzIF9cbiAgfCBNYXA0IF9cbiAgfCBNYXA1IF9cbiAgfCBNYXA2IF9cbiAgfCBNYXA3IF9cbiAgfCBNYXA4IF9cbiAgfCBNYXA5IF9cbiAgfCBNYXAxMCBfXG4gIHwgTWFwMTEgX1xuICB8IE1hcDEyIF9cbiAgfCBNYXAxMyBfXG4gIHwgTWFwMTQgX1xuICB8IE1hcDE1IF8gLT4gKClcbiAgfCBTbmFwc2hvdCBzbmFwc2hvdCAtPiBTbmFwc2hvdC5pbnZhcmlhbnQgaW52YXJpYW50X2Egc25hcHNob3RcbiAgfCBTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSAtPlxuICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaW52YXJpYW50X2Egc3RlcF9mdW5jdGlvbl9ub2RlXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHVub3JkZXJlZF9hcnJheV9mb2xkIC0+XG4gICAgVW5vcmRlcmVkX2FycmF5X2ZvbGQuaW52YXJpYW50IGlnbm9yZSBpbnZhcmlhbnRfYSB1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICB8IFZhciB2YXIgLT4gVmFyLmludmFyaWFudCBpZ25vcmUgdmFyXG47O1xuXG5sZXQgaW5pdGlhbF9udW1fY2hpbGRyZW4gKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXQgXyAtPiAwXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gMFxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IDFcbiAgfCBCaW5kX21haW4gXyAtPiAyXG4gIHwgQ29uc3QgXyAtPiAwXG4gIHwgRXhwZXJ0IF8gLT4gMFxuICB8IEZyZWV6ZSBfIC0+IDFcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IDFcbiAgfCBJZl90aGVuX2Vsc2UgXyAtPiAyXG4gIHwgSW52YWxpZCAtPiAwXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEpvaW5fbWFpbiBfIC0+IDJcbiAgfCBNYXAgXyAtPiAxXG4gIHwgTWFwMiBfIC0+IDJcbiAgfCBNYXAzIF8gLT4gM1xuICB8IE1hcDQgXyAtPiA0XG4gIHwgTWFwNSBfIC0+IDVcbiAgfCBNYXA2IF8gLT4gNlxuICB8IE1hcDcgXyAtPiA3XG4gIHwgTWFwOCBfIC0+IDhcbiAgfCBNYXA5IF8gLT4gOVxuICB8IE1hcDEwIF8gLT4gMTBcbiAgfCBNYXAxMSBfIC0+IDExXG4gIHwgTWFwMTIgXyAtPiAxMlxuICB8IE1hcDEzIF8gLT4gMTNcbiAgfCBNYXAxNCBfIC0+IDE0XG4gIHwgTWFwMTUgXyAtPiAxNVxuICB8IFNuYXBzaG90IF8gLT4gMFxuICB8IFN0ZXBfZnVuY3Rpb24gXyAtPiAxXG4gIHwgVW5pbml0aWFsaXplZCAtPiAwXG4gIHwgVmFyIF8gLT4gMFxuICB8IEFycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBBcnJheS5sZW5ndGggY2hpbGRyZW5cbjs7XG5cbmxldCBiaW5kX3Joc19jaGlsZF9pbmRleCA9IDFcbmxldCBmcmVlemVfY2hpbGRfaW5kZXggPSAwXG5sZXQgaWZfYnJhbmNoX2NoaWxkX2luZGV4ID0gMVxubGV0IGpvaW5fcmhzX2NoaWxkX2luZGV4ID0gMVxuXG4oKiBXZSBkbyBub3QgaW1wbGVtZW50IHRoZSB0aW1lLWJhc2VkIG5vZGVzIChbQXRdLCBbQXRfaW50ZXJ2YWxzXSwgW1NuYXBzaG90XSxcbiAgIFtTdGVwX2Z1bmN0aW9uXSkgYXMgcGFyZW50cyBvZiB0aGUgY3VycmVudC10aW1lIG5vZGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBXZSBkb24ndFxuICAgd2FudCBhbGwgc3VjaCBub2RlcyB0byBiZSByZWNvbXB1dGVkIHdoZW5ldmVyIHRoZSB0aW1lIGNoYW5nZXMsIHdoaWNoIHdvdWxkIGJlIGhvcnJpYmx5XG4gICBpbm5lZmljaWVudC4gIEluc3RlYWQsIHdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgYXQgdGhlIFwicmlnaHRcIiB0aW1lLFxuICAgaS5lLiB3aGVuIHRpbWUgcGFzc2VzIHNvbWUgdGhyZXNob2xkIHJlbGV2YW50IHRvIHRoZW0uICBXZSBkbyB0aGlzIHZpYSBzY2hlZHVsaW5nXG4gICBhbGFybXMgYXQgdGhvc2UgdGhyZXNob2xkcy4gKilcbmxldCBpdGVyaV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogaW50IC0+IE5vZGUuUGFja2VkLnQgLT4gdW5pdCkgOiB1bml0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgICAgZiBpIChUIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpKVxuICAgIGRvbmVcbiAgfCBBdCBfIC0+ICgpXG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gKClcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBmIDAgKFQgYmluZC5saHMpXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgcmhzOyBfIH0gLT5cbiAgICAoKiBWYXJpb3VzIGNvZGUsIGUuZy4gW3N0YXRlLmJlY2FtZV9uZWNlc3NhcnldLCByZWxpZXMgb24gcHJvY2Vzc2luZyBbbGhzX2NoYW5nZV1cbiAgICAgICBiZWZvcmUgW3Joc10uICopXG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgQ29uc3QgXyAtPiAoKVxuICB8IEV4cGVydCB7IGNoaWxkcmVuOyBudW1fY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBudW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICBsZXQgKEV4cGVydC5FIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKSBpblxuICAgICAgZiBpIChUIHIuY2hpbGQpXG4gICAgZG9uZVxuICB8IEZyZWV6ZSB7IGNoaWxkOyBfIH0gLT4gZiAwIChUIGNoaWxkKVxuICB8IElmX3Rlc3RfY2hhbmdlIHsgdGVzdDsgXyB9IC0+IGYgMCAoVCB0ZXN0KVxuICB8IElmX3RoZW5fZWxzZSB7IHRlc3RfY2hhbmdlOyBjdXJyZW50X2JyYW5jaDsgXyB9IC0+XG4gICAgZiAwIChUIHRlc3RfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2ggdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIGN1cnJlbnRfYnJhbmNoKSlcbiAgfCBJbnZhbGlkIC0+ICgpXG4gIHwgSm9pbl9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gZiAwIChUIGxocylcbiAgfCBKb2luX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgIGYgMCAoVCBsaHNfY2hhbmdlKTtcbiAgICBpZiBVb3B0LmlzX3NvbWUgcmhzIHRoZW4gZiAxIChUIChVb3B0LnVuc2FmZV92YWx1ZSByaHMpKVxuICB8IFNuYXBzaG90IF8gLT4gKClcbiAgfCBTdGVwX2Z1bmN0aW9uIHsgY2hpbGQ7IF8gfSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZCB0aGVuIGYgMCAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY2hpbGQpKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gKClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIC0gMSBkb1xuICAgICAgZiBpIChUIChBcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpKVxuICAgIGRvbmVcbiAgfCBWYXIgXyAtPiAoKVxuICB8IE1hcCAoXywgbm9kZTApIC0+IGYgMCAoVCBub2RlMClcbiAgfCBNYXAyIChfLCBub2RlMCwgbm9kZTEpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpXG4gIHwgTWFwMyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMikgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKVxuICB8IE1hcDQgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMylcbiAgfCBNYXA1IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpXG4gIHwgTWFwNiAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KVxuICB8IE1hcDcgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNilcbiAgfCBNYXA4IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpXG4gIHwgTWFwOSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KVxuICB8IE1hcDEwIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4LCBub2RlOSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpXG4gIHwgTWFwMTEgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5LCBub2RlMTApXG4gICAgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKVxuICB8IE1hcDEyXG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMSApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpXG4gIHwgTWFwMTNcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMiApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKVxuICB8IE1hcDE0XG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTJcbiAgICAgICwgbm9kZTEzICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKVxuICB8IE1hcDE1XG4gICAgICAoIF9cbiAgICAgICwgbm9kZTBcbiAgICAgICwgbm9kZTFcbiAgICAgICwgbm9kZTJcbiAgICAgICwgbm9kZTNcbiAgICAgICwgbm9kZTRcbiAgICAgICwgbm9kZTVcbiAgICAgICwgbm9kZTZcbiAgICAgICwgbm9kZTdcbiAgICAgICwgbm9kZThcbiAgICAgICwgbm9kZTlcbiAgICAgICwgbm9kZTEwXG4gICAgICAsIG5vZGUxMVxuICAgICAgLCBub2RlMTJcbiAgICAgICwgbm9kZTEzXG4gICAgICAsIG5vZGUxNCApIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KTtcbiAgICBmIDcgKFQgbm9kZTcpO1xuICAgIGYgOCAoVCBub2RlOCk7XG4gICAgZiA5IChUIG5vZGU5KTtcbiAgICBmIDEwIChUIG5vZGUxMCk7XG4gICAgZiAxMSAoVCBub2RlMTEpO1xuICAgIGYgMTIgKFQgbm9kZTEyKTtcbiAgICBmIDEzIChUIG5vZGUxMyk7XG4gICAgZiAxNCAoVCBub2RlMTQpXG47O1xuXG4oKiBbc2xvd19nZXRfY2hpbGRdIGlzIG9ubHkgdXNlZCBieSBbTm9kZS5pbnZhcmlhbnRdLCBzbyB3ZSBkb24ndCBtaW5kIHVzaW5nIFt3aXRoX3JldHVybl1cbiAgIGFuZCBbaXRlcmlfY2hpbGRyZW5dLiAgSWYgd2UgZXZlciBuZWVkIGEgZmFzdCBbZ2V0X2NoaWxkXSwgd2UgY29kZWQgaXQgaW4gcmV2XG4gICA0OGRiZmQwM2M5YzUuICopXG5sZXQgc2xvd19nZXRfY2hpbGQgOiB0eXBlIGEuIGEgdCAtPiBpbmRleDpfIC0+IE5vZGUuUGFja2VkLnQgPVxuICBmdW4gdCB+aW5kZXggLT5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IFQgY2hpbGRyZW4uKGluZGV4KVxuICB8IEV4cGVydCB7IGNoaWxkcmVuOyBfIH0gLT5cbiAgICBsZXQgKEUgZWRnZSkgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGRyZW4gaW5kZXgpIGluXG4gICAgVCBlZGdlLmNoaWxkXG4gIHwgXyAtPlxuICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIGkgY2hpbGQgLT4gaWYgaSA9IGluZGV4IHRoZW4gci5yZXR1cm4gY2hpbGQpO1xuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJLaW5kLnNsb3dfZ2V0X2NoaWxkIGdvdCBpbnZhbGlkIGluZGV4XCJcbiAgICAgICAgKGluZGV4LCB0KVxuICAgICAgICBbJXNleHBfb2Y6IGludCAqIF8gdF0pXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBLaW5kXG5tb2R1bGUgSW50ZXJuYWxfb2JzZXJ2ZXIgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlclxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5vcGVuIE5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuTm9kZS50ID1cbiAgeyAoKiBbaWRdIGlzIGEgdW5pcXVlIGlkIGZvciB0aGUgbm9kZS4gKilcbiAgICBpZCA6IE5vZGVfaWQudFxuICA7IHN0YXRlIDogKFR5cGVzLlN0YXRlLnRbQHNleHAub3BhcXVlXSlcbiAgOyAoKiBUaGUgZmllbGRzIGZyb20gW3JlY29tcHV0ZWRfYXRdIHRvIFtjcmVhdGVkX2luXSBhcmUgZ3JvdXBlZCB0b2dldGhlciBhbmQgYXJlIGluIHRoZVxuICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgdXNlZCBieSBbU3RhdGUucmVjb21wdXRlXSBUaGlzIGhhcyBhIHBvc2l0aXZlIHBlcmZvcm1hbmNlXG4gICAgICAgaW1wYWN0IGR1ZSB0byBjYWNoZSBlZmZlY3RzLiAgRG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGVzZSBub2RlcyB3aXRob3V0XG4gICAgICAgcGVyZm9ybWFuY2UgdGVzdGluZy4gKilcbiAgICAoKiBbcmVjb21wdXRlZF9hdF0gaXMgdGhlIGxhc3Qgc3RhYmlsaXphdGlvbiB3aGVuIFt0XSdzIHZhbHVlIHdhcyByZWNvbXB1dGVkLCBldmVuIGlmXG4gICAgICAgaXQgd2FzIGN1dCBvZmYuICopXG4gICAgbXV0YWJsZSByZWNvbXB1dGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7ICgqIFt2YWx1ZV9vcHRdIHN0YXJ0cyBhcyBbbm9uZV0sIGFuZCB0aGUgZmlyc3QgdGltZSBbdF0gaXMgY29tcHV0ZWQgaXQgaXMgc2V0IHRvXG4gICAgICAgW3NvbWVdLCBhbmQgcmVtYWlucyBbc29tZV0gdGhlcmVhZnRlciwgdW50aWwgW3RdIGlzIGludmFsaWRhdGVkLCBpZiBldmVyLiAqKVxuICAgIG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gIDsgKCogW2tpbmRdIGlzIHRoZSBraW5kIG9mIERBRyBub2RlIFt0XSBpcy4gIFtraW5kXSBpcyBtdXRhYmxlIGJvdGggZm9yIGluaXRpYWxpemF0aW9uXG4gICAgICAgYW5kIGJlY2F1c2UgaXQgY2FuIGNoYW5nZSwgZS5nLiBpZiBbdF0gaXMgaW52YWxpZGF0ZWQuICopXG4gICAgbXV0YWJsZSBraW5kIDogJ2EgS2luZC50XG4gIDsgbXV0YWJsZSBjdXRvZmYgOiAnYSBDdXRvZmYudFxuICA7ICgqIFtjaGFuZ2VkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gdGhpcyBub2RlIHdhcyBjb21wdXRlZCBhbmQgbm90IGN1dCBvZmYuXG4gICAgICAgSXQgaXMgdXNlZCB0byBkZXRlY3Qgd2hlbiBbdF0ncyBwYXJlbnRzIGFyZSBzdGFsZSBhbmQgKGJlY2F1c2UgYWxsIHBhcmVudHMgYXJlXG4gICAgICAgbmVjZXNzYXJ5KSBuZWVkIHRvIGJlIHJlY29tcHV0ZWQuICopXG4gICAgbXV0YWJsZSBjaGFuZ2VkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7ICgqIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSBpcyBbTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNdIHBsdXMgdGhlIG51bWJlciBvZlxuICAgICAgIG9uLXVwZGF0ZSBoYW5kbGVycyBzdW1tZWQgb3ZlciBhbGwgb2JzZXJ2ZXJzIGluIFt0Lm9ic2VydmVyc10uICBJdCBpcyB1c2VkIHRvXG4gICAgICAgcXVpY2tseSBkZWNpZGUgd2hldGhlciBbdF0gbmVlZHMgdG8gYmUgYWRkZWQgdG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXVxuICAgICAgIHdoZW4gW3RdIGNoYW5nZXMuICBbbnVtX29uX3VwZGF0ZV9oYW5kbGVyc10gd2lsbCBkZWNyZWFzZSB3aGVuIGFuIG9ic2VydmVyIGlzXG4gICAgICAgcmVtb3ZlZCBmcm9tIFt0Lm9ic2VydmVyc10sIGlmIHRoZSBvYnNlcnZlciBoYXMgb24tdXBkYXRlIGhhbmRsZXJzLiAqKVxuICAgIG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICA7ICgqIFRoZSBwYXJlbnRzIG9mIFt0XSBhcmUgdGhlIG5vZGVzIHRoYXQgZGVwZW5kIG9uIGl0LCBhbmQgc2hvdWxkIGJlIGNvbXB1dGVkIHdoZW4gW3RdXG4gICAgICAgY2hhbmdlcywgb25jZSBhbGwgb2YgdGhlaXIgb3RoZXIgY2hpbGRyZW4gYXJlIHVwIHRvIGRhdGUuICBbbnVtX3BhcmVudHNdIGlzIHRoZVxuICAgICAgIG51bWJlciBvZiBwYXJlbnRzLiAgSWYgW251bV9wYXJlbnRzID49IDFdLCB0aGVuIFtwYXJlbnQwXSBpcyB0aGUgZmlyc3QgcGFyZW50LlxuICAgICAgIFtwYXJlbnQxX2FuZF9iZXlvbmRdIGhvbGRzIHRoZSByZW1haW5pbmcgcGFyZW50cy4gIFRoZSBvcmRlciBvZiB0aGUgcGFyZW50cyBkb2Vzbid0XG4gICAgICAgbWF0dGVyLiAgT25lIG5vZGUgbWF5IG9jY3VyIG11bHRpcGxlIHRpbWVzIGFzIGEgcGFyZW50IG9mIGFub3RoZXIgKGUuZy4gY29uc2lkZXJcbiAgICAgICBbbWFwMiBuMSBuMSB+Zl0pLlxuXG4gICAgICAgVGhpcyByZXByZXNlbnRhdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIHRoZSBvdmVyd2hlbG1pbmdseSBjb21tb24gY2FzZSB0aGF0IGEgbm9kZSBoYXNcbiAgICAgICBvbmx5IG9uZSBwYXJlbnQuICopXG4gICAgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICA7IG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogUGFja2VkLnQgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgcGFyZW50MCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtjcmVhdGVkX2luXSBpcyBpbml0aWFsbHkgdGhlIHNjb3BlIHRoYXQgdGhlIG5vZGUgaXMgY3JlYXRlZCBpbi4gIElmIGEgbm9kZSBpc1xuICAgICAgIGxhdGVyIFwicmVzY29wZWRcIiwgdGhlbiBjcmVhdGVkX2luIHdpbGwgYmUgYWRqdXN0ZWQgdG8gdGhlIG5ldyBzY29wZSB0aGF0IHRoZSBub2RlXG4gICAgICAgaXMgcGFydCBvZi4gKilcbiAgICBtdXRhYmxlIGNyZWF0ZWRfaW4gOiBTY29wZS50XG4gIDsgKCogW25leHRfbm9kZV9pbl9zYW1lX3Njb3BlXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIGNyZWF0ZWQgaW4gW3QuY3JlYXRlZF9pbl0uICopXG4gICAgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtoZWlnaHRdIGlzIHVzZWQgdG8gdmlzaXQgbm9kZXMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIuICBJZiBbaXNfbmVjZXNzYXJ5IHRdLCB0aGVuXG4gICAgICAgW2hlaWdodCA+IGMuaGVpZ2h0XSBmb3IgYWxsIGNoaWxkcmVuIFtjXSBvZiBbdF0sIGFuZCBbaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0XG4gICAgICAgdC5jcmVhdGVkX2luXS4gIElmIFtub3QgKGlzX25lY2Vzc2FyeSB0KV0sIHRoZW4gW2hlaWdodCA9IC0xXS4gKilcbiAgICBtdXRhYmxlIGhlaWdodCA6IGludFxuICA7ICgqIFtoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdIGlzIHRoZSBoZWlnaHQgYXQgd2hpY2ggW3RdIGlzIHN0b3JlZCBpbiB0aGUgcmVjb21wdXRlXG4gICAgICAgaGVhcCwgYW5kIGlzIG5vbi1uZWdhdGl2ZSBpZmYgW3RdIGlzIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gIElmIFt0XSBpcyB0aGVcbiAgICAgICByZWNvbXB1dGUgaGVhcCwgdGhlbiB0eXBpY2FsbHkgW3QuaGVpZ2h0ID0gdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdOyBob3dldmVyLFxuICAgICAgIHdoaWxlIGhlaWdodCBpcyBiZWluZyBhZGp1c3RlZCwgb25lIGNhbiB0ZW1wb3JhcmlseSBoYXZlIFt0LmhlaWdodCA+XG4gICAgICAgdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXBdLiAgV2hlbiBoZWlnaHQgYWRqdXN0bWVudCBmaW5pc2hlcywgZXF1YWxpdHkgaXMgcmVzdG9yZWRcbiAgICAgICBieSBpbmNyZWFzaW5nIFt0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gdG8gW3QuaGVpZ2h0XSBhbmQgc2hpZnRpbmcgW3RdJ3NcbiAgICAgICBwb3NpdGlvbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgOyAoKiBbcHJldl9pbl9yZWNvbXB1dGVfaGVhcF0gYW5kIFtuZXh0X2luX3JlY29tcHV0ZV9oZWFwXSBkb3VibHkgbGluayBhbGwgbm9kZXMgb2YgdGhlXG4gICAgICAgc2FtZSBoZWlnaHQgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAqKVxuICAgIG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF0gaXMgdXNlZCBvbmx5IGR1cmluZyBoZWlnaHQgYWRqdXN0bWVudCwgYW5kIGlzXG4gICAgICAgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIGFkanVzdC1oZWlnaHRzIGhlYXAuICBJdCBob2xkcyB0aGUgcHJlLWFkanVzdGVkXG4gICAgICAgaGVpZ2h0IG9mIFt0XS4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogaW50XG4gIDsgKCogW25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF0gc2luZ2x5IGxpbmtzIGFsbCBub2RlcyBvZiB0aGUgc2FtZSBoZWlnaHQgaW4gdGhlXG4gICAgICAgYWRqdXN0LWhlaWdodHMgaGVhcC4gKilcbiAgICBtdXRhYmxlIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IFBhY2tlZC50IFVvcHQudFxuICA7ICgqIFtvbGRfdmFsdWVfb3B0XSBpcyB1c2VkIG9ubHkgZHVyaW5nIHN0YWJpbGl6YXRpb24sIGFuZCBvbmx5IGlmXG4gICAgICAgW3QubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBdLiAgSXQgaG9sZHMgdGhlIHByZS1zdGFiaWxpemF0aW9uIHZhbHVlIG9mIFt0XS4gIEl0XG4gICAgICAgaXMgY2xlYXJlZCB3aGVuIHJ1bm5pbmcgW3RdJ3Mgb24tdXBkYXRlIGhhbmRsZXJzLCBhbmQgc28gaXMgYWx3YXlzIFtVb3B0Lm5vbmVdXG4gICAgICAgYmV0d2VlbiBzdGFiaWxpemF0aW9ucy4gKilcbiAgICBtdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBbb2JzZXJ2ZXJzXSBpcyB0aGUgaGVhZCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIG9ic2VydmVycyBvZiBbdF0sIG9yXG4gICAgICAgW1VvcHQubm9uZV0gaWYgdGhlcmUgYXJlIG5vIG9ic2VydmVycy4gKilcbiAgICBtdXRhYmxlIG9ic2VydmVycyA6ICgnYSBJbnRlcm5hbF9vYnNlcnZlci50W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7ICgqIFtpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0gaXMgdXNlZCB0byBhdm9pZCBwdXNoaW5nIHRoZSBzYW1lIG5vZGUgbXVsdGlwbGVcbiAgICAgICB0aW1lcyBvbnRvIFtzdGF0ZS5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICopXG4gICAgbXV0YWJsZSBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IGJvb2xcbiAgOyAoKiBbb25fdXBkYXRlX2hhbmRsZXJzXSBpcyB0aGUgZnVuY3Rpb25zIHN1cHBsaWVkIHRvIFtJbmNyZW1lbnRhbC5vbl91cGRhdGVdIHRvIGJlIHJ1blxuICAgICAgIGFzIGRlc2NyaWJlZCBpbiB0aGUgbW9kdWxlIFtPbl91cGRhdGVfaGFuZGxlcl0uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBkb2VzIG5vdFxuICAgICAgIGNvbnRhaW4gdGhlIG9uLXVwZGF0ZSBoYW5kbGVycyBpbiBbdC5vYnNlcnZlcnNdLiAgW29uX3VwZGF0ZV9oYW5kbGVyc10gb25seSBldmVyXG4gICAgICAgZ2V0cyBsb25nZXI7IHRoZXJlIGlzIG5vIHdheSB0byByZW1vdmUgZWxlbWVudHMuICopXG4gICAgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgOyBtdXRhYmxlIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCA6IGludCBhcnJheVxuICA7IG11dGFibGUgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gIDsgbXV0YWJsZSB1c2VyX2luZm8gOiBEb3RfdXNlcl9pbmZvLnQgb3B0aW9uXG4gIDsgY3JlYXRpb25fYmFja3RyYWNlIDogQmFja3RyYWNlLnQgb3B0aW9uXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5sZXQgcGFja2VkX3NhbWUgKFBhY2tlZC5UIHQxKSAoUGFja2VkLlQgdDIpID0gc2FtZSB0MSB0MlxubGV0IGlzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5XG5sZXQgaW5pdGlhbF9udW1fY2hpbGRyZW4gdCA9IEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4gdC5raW5kXG5sZXQgaXRlcmlfY2hpbGRyZW4gdCB+ZiA9IEtpbmQuaXRlcmlfY2hpbGRyZW4gdC5raW5kIH5mXG5sZXQgaXNfdmFsaWQgPSBOb2RlLmlzX3ZhbGlkXG5sZXQgdHlwZV9lcXVhbF9pZl9waHlzX3NhbWUgPSB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZVxuXG5sZXQgdXNlcl9pbmZvIHQgPVxuICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoSW5mbyBpKSAtPiBTb21lIGlcbiAgfCBTb21lIG90aGVyIC0+IFNvbWUgKEluZm8uY3JlYXRlX3MgKERvdF91c2VyX2luZm8uc2V4cF9vZl90IG90aGVyKSlcbjs7XG5cbmxldCBzZXRfdXNlcl9pbmZvIHQgaW5mbyA9XG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCBpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBpIC0+IFNvbWUgKEluZm8gaSkpXG47O1xuXG5sZXQgYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0IH5sYWJlbCB+YXR0cnMgPVxuICBsZXQgbmV3XyA9IERvdF91c2VyX2luZm8uZG90IH5sYWJlbCB+YXR0cmlidXRlczphdHRycyBpblxuICB0LnVzZXJfaW5mb1xuICA8LSAobWF0Y2ggdC51c2VyX2luZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIG5ld19cbiAgICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoRG90X3VzZXJfaW5mby5hcHBlbmQgb3RoZXIgbmV3XykpXG47O1xuXG5sZXQgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudCA9XG4gIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgY2hpbGQuY2hhbmdlZF9hdCBwYXJlbnQucmVjb21wdXRlZF9hdCA+IDBcbjs7XG5cbmxldCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0ID1cbiAgbGV0IGlzX3N0YWxlID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPlxuICAgIGlmIGVkZ2VfaXNfc3RhbGUgfmNoaWxkIH5wYXJlbnQ6dCB0aGVuIGlzX3N0YWxlIDo9IHRydWUpO1xuICAhaXNfc3RhbGVcbjs7XG5cbmxldCBpc19zdGFsZSA6IHR5cGUgYS4gYSB0IC0+IGJvb2wgPVxuICBmdW4gKHQgOiBhIHQpIC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgKCogQSBjb25zdCBub2RlIGlzIHN0YWxlIG9ubHkgYXQgaW5pdGlhbGl6YXRpb24uICopXG4gIHwgQ29uc3QgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAoKiBUaW1lLWJhc2VkIG5vZGVzIGFyZSBjb25zaWRlcmVkIHN0YWxlIHdoZW4gW3QucmVjb21wdXRlZF9hdF0gaXMgbm9uZSwgd2hpY2ggaGFwcGVuc1xuICAgICBhdCBpbml0aWFsaXphdGlvbiBhbmQgd2hlbiB0aGUgYWxhcm0gbWVjaGFuaXNtIG1ha2VzIGEgbm9kZSBzdGFsZSAoaXQgc2V0cyB0aGVcbiAgICAgW3QucmVjb21wdXRlZF9hdF0gdG8gW1N0YWJpbGl6YXRpb25fbnVtLm5vbmVdKS4gKilcbiAgfCBBdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gIHwgQXRfaW50ZXJ2YWxzIF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBTbmFwc2hvdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFdlIG5ldmVyIGNvbnNpZGVyIGFuIGludmFsaWRhdGVkIG5vZGUgdG8gYmUgc3RhbGUgLS0gd2hlbiB3ZSBpbnZhbGlkYXRlIGEgbm9kZSwgd2VcbiAgICAgaW1tZWRpYXRlbHkgcHJvcGFnYXRlIGludmFsaWRpdHkgdG8gaXRzIGFuY2VzdG9ycy4gKilcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICgqIEEgW1Zhcl0gbm9kZSBpcyBzdGFsZSBpZiBpdCB3YXMgc2V0IHNpbmNlIGl0IHdhcyByZWNvbXB1dGVkLiAqKVxuICB8IFZhciB7IHNldF9hdDsgXyB9IC0+IFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgc2V0X2F0IHQucmVjb21wdXRlZF9hdCA+IDBcbiAgKCogTm9kZXMgdGhhdCBoYXZlIGNoaWxkcmVuLiAqKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+XG4gICAgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXQgfHwgaXNfc3RhbGVfd2l0aF9yZXNwZWN0X3RvX2FfY2hpbGQgdFxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgQXJyYXlfZm9sZCBfXG4gIHwgQmluZF9tYWluIF9cbiAgfCBGcmVlemUgX1xuICB8IElmX3RoZW5fZWxzZSBfXG4gIHwgSm9pbl9tYWluIF9cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgX1xuICB8IFN0ZXBfZnVuY3Rpb24gX1xuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgRXhwZXJ0IHsgZm9yY2Vfc3RhbGU7IF8gfSAtPlxuICAgIGZvcmNlX3N0YWxlXG4gICAgfHwgU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgICB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG47O1xuXG5sZXQgbmVlZHNfdG9fYmVfY29tcHV0ZWQgdCA9IGlzX25lY2Vzc2FyeSB0ICYmIGlzX3N0YWxlIHRcbmxldCBpc19pbl9yZWNvbXB1dGVfaGVhcCB0ID0gdC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPj0gMFxubGV0IGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdCA9IHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPj0gMFxuXG5sZXQgZ2V0X3BhcmVudCB0IH5pbmRleCA9XG4gIFVvcHQudmFsdWVfZXhuXG4gICAgKGlmIGluZGV4ID0gMCB0aGVuIHQucGFyZW50MCBlbHNlIFVuaWZvcm1fYXJyYXkuZ2V0IHQucGFyZW50MV9hbmRfYmV5b25kIChpbmRleCAtIDEpKVxuOztcblxubGV0IGl0ZXJpX3BhcmVudHMgdCB+ZiA9XG4gIGlmIHQubnVtX3BhcmVudHMgPiAwXG4gIHRoZW4gKFxuICAgIGYgMCAoVW9wdC52YWx1ZV9leG4gdC5wYXJlbnQwKTtcbiAgICBmb3IgaW5kZXggPSAxIHRvIHQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICBmIGluZGV4IChVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgaGFzX2NoaWxkIHQgfmNoaWxkID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBjaGlsZCcpIC0+IGhhcyA6PSAhaGFzIHx8IHNhbWUgY2hpbGQgY2hpbGQnKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19pbnZhbGlkX2NoaWxkIHQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPiBoYXMgOj0gIWhhcyB8fCBub3QgKGlzX3ZhbGlkIGNoaWxkKSk7XG4gICFoYXNcbjs7XG5cbmxldCBoYXNfcGFyZW50ICh0IDogXyB0KSB+cGFyZW50ID1cbiAgbGV0IGhhcyA9IHJlZiBmYWxzZSBpblxuICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBfIChUIHBhcmVudCcpIC0+IGhhcyA6PSAhaGFzIHx8IHNhbWUgcGFyZW50IHBhcmVudCcpO1xuICAhaGFzXG47O1xuXG5sZXQgc2hvdWxkX2JlX2ludmFsaWRhdGVkIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gICgqIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gKilcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICB8IEF0IF8gLT4gZmFsc2VcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBmYWxzZVxuICB8IENvbnN0IF8gfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gZmFsc2VcbiAgfCBJbnZhbGlkIC0+IGZhbHNlXG4gICgqIE5vZGVzIHdpdGggYSBmaXhlZCBzZXQgb2YgY2hpbGRyZW4gYXJlIGludmFsaWQgaWYgYW55IGNoaWxkIGlzIGludmFsaWQuICopXG4gIHwgQXJyYXlfZm9sZCBfXG4gIHwgRnJlZXplIF9cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgX1xuICB8IFN0ZXBfZnVuY3Rpb24gX1xuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIF8gLT4gaGFzX2ludmFsaWRfY2hpbGQgdFxuICAoKiBBICpfY2hhbmdlIG5vZGUgaXMgaW52YWxpZCBpZiB0aGUgbm9kZSBpdCBpcyB3YXRjaGluZyBmb3IgY2hhbmdlcyBpcyBpbnZhbGlkIChzYW1lXG4gICAgIHJlYXNvbiBhcyBhYm92ZSkuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gW2hhc19pbnZhbGlkX2NoaWxkIHRdLiAqKVxuICB8IEJpbmRfbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICB8IElmX3Rlc3RfY2hhbmdlIHsgdGVzdDsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxocylcbiAgKCogW0JpbmRfbWFpbl0sIFtJZl90aGVuX2Vsc2VdLCBhbmQgW0pvaW5fbWFpbl0gYXJlIGludmFsaWQgaWYgdGhlaXIgKl9jaGFuZ2UgY2hpbGQgaXMsXG4gICAgIGJ1dCBub3QgbmVjZXNzYXJpbHkgaWYgdGhlaXIgb3RoZXIgY2hpbGRyZW4gYXJlIC0tIHRoZSBncmFwaCBtYXkgYmUgcmVzdHJ1Y3R1cmVkIHRvXG4gICAgIGF2b2lkIHRoZSBpbnZhbGlkaXR5IG9mIHRob3NlLiAqKVxuICB8IEJpbmRfbWFpbiB7IGxoc19jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxoc19jaGFuZ2UpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIHRlc3RfY2hhbmdlKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IF8gfSAtPiBub3QgKGlzX3ZhbGlkIGxoc19jaGFuZ2UpXG4gIHwgRXhwZXJ0IF8gLT5cbiAgICAoKiBUaGlzIGlzIHNpbWlsYXIgdG8gd2hhdCB3ZSBkbyBmb3IgYmluZCBhYm92ZSwgZXhjZXB0IHRoYXQgYW55IGludmFsaWQgY2hpbGQgY2FuIGJlXG4gICAgICAgcmVtb3ZlZCwgc28gd2UgY2FuIG9ubHkgdGVsbCBpZiBhbiBleHBlcnQgbm9kZSBiZWNvbWVzIGludmFsaWQgd2hlbiBhbGwgaXRzXG4gICAgICAgZGVwZW5kZW5jaWVzIGhhdmUgZmlyZWQgKHdoaWNoIGluIHByYWN0aWNlIG1lYW5zIHdoZW4gd2UgYXJlIGFib3V0IHRvIHJ1biBpdCkuICopXG4gICAgZmFsc2Vcbjs7XG5cbmxldCBmb2xkX29ic2VydmVycyAodCA6IF8gdCkgfmluaXQgfmYgPVxuICBsZXQgciA9IHJlZiB0Lm9ic2VydmVycyBpblxuICBsZXQgYWMgPSByZWYgaW5pdCBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgIHIgOj0gb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmc7XG4gICAgYWMgOj0gZiAhYWMgb2JzZXJ2ZXJcbiAgZG9uZTtcbiAgIWFjXG47O1xuXG5sZXQgaXRlcl9vYnNlcnZlcnMgdCB+ZiA9IGZvbGRfb2JzZXJ2ZXJzIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBvYnNlcnZlciAtPiBmIG9ic2VydmVyKVxuXG5sZXQgaW52YXJpYW50ICh0eXBlIGEpIChpbnZhcmlhbnRfYSA6IGEgLT4gdW5pdCkgKHQgOiBhIHQpID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBbJXRlc3RfZXE6IGJvb2xdIChuZWVkc190b19iZV9jb21wdXRlZCB0KSAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdCk7XG4gICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBTY29wZS5oZWlnaHQgdC5jcmVhdGVkX2luKTtcbiAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkKSAtPlxuICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0ID4gY2hpbGQuaGVpZ2h0KTtcbiAgICAgICAgYXNzZXJ0IChoYXNfcGFyZW50IGNoaWxkIH5wYXJlbnQ6dCkpO1xuICAgICAgYXNzZXJ0IChub3QgKHNob3VsZF9iZV9pbnZhbGlkYXRlZCB0KSkpO1xuICAgIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50KSAtPlxuICAgICAgYXNzZXJ0IChoYXNfY2hpbGQgcGFyZW50IH5jaGlsZDp0KTtcbiAgICAgIGFzc2VydCAoaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICAgICBhc3NlcnQgKHQuaGVpZ2h0IDwgcGFyZW50LmhlaWdodCkpO1xuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+aWQ6KGNoZWNrIE5vZGVfaWQuaW52YXJpYW50KVxuICAgICAgfnN0YXRlOmlnbm9yZVxuICAgICAgfnJlY29tcHV0ZWRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH52YWx1ZV9vcHQ6XG4gICAgICAgIChjaGVjayAoZnVuIHZhbHVlX29wdCAtPlxuICAgICAgICAgICBpZiBpc192YWxpZCB0ICYmIG5vdCAoaXNfc3RhbGUgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSB2YWx1ZV9vcHQpO1xuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSB2YWx1ZV9vcHQpKVxuICAgICAgfmtpbmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGtpbmQgLT5cbiAgICAgICAgICAgS2luZC5pbnZhcmlhbnQgaW52YXJpYW50X2Ega2luZDtcbiAgICAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgICAgIHwgRXhwZXJ0IGUgLT5cbiAgICAgICAgICAgICBFeHBlcnQuaW52YXJpYW50X2Fib3V0X251bV9pbnZhbGlkX2NoaWxkcmVuIGUgfmlzX25lY2Vzc2FyeTooaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHwgXyAtPiAoKSkpXG4gICAgICB+Y3V0b2ZmOihjaGVjayAoQ3V0b2ZmLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+Y2hhbmdlZF9hdDpcbiAgICAgICAgKGNoZWNrIChmdW4gY2hhbmdlZF9hdCAtPlxuICAgICAgICAgICBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQgY2hhbmdlZF9hdDtcbiAgICAgICAgICAgaWYgU3RhYmlsaXphdGlvbl9udW0uaXNfc29tZSB0LnJlY29tcHV0ZWRfYXRcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgY2hhbmdlZF9hdCB0LnJlY29tcHV0ZWRfYXQgPD0gMCkpKVxuICAgICAgfm51bV9vbl91cGRhdGVfaGFuZGxlcnM6XG4gICAgICAgIChjaGVja1xuICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgIChMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc1xuICAgICAgICAgICAgICAgICArIGZvbGRfb2JzZXJ2ZXJzIHQgfmluaXQ6MCB+ZjooZnVuIG4geyBvbl91cGRhdGVfaGFuZGxlcnM7IF8gfSAtPlxuICAgICAgICAgICAgICAgICAgIG4gKyBMaXN0Lmxlbmd0aCBvbl91cGRhdGVfaGFuZGxlcnMpKSkpXG4gICAgICB+bnVtX3BhcmVudHM6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9wYXJlbnRzIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX3BhcmVudHMgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAobnVtX3BhcmVudHMgPD0gMSArIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kKSkpXG4gICAgICB+cGFyZW50MV9hbmRfYmV5b25kOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQxX2FuZF9iZXlvbmQgLT5cbiAgICAgICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggcGFyZW50MV9hbmRfYmV5b25kIGRvXG4gICAgICAgICAgICAgWyV0ZXN0X2VxOiBib29sXVxuICAgICAgICAgICAgICAgKHBhcmVudF9pbmRleCA8IHQubnVtX3BhcmVudHMpXG4gICAgICAgICAgICAgICAoVW9wdC5pc19zb21lIChVbmlmb3JtX2FycmF5LmdldCBwYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpKSlcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+cGFyZW50MDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MCAtPlxuICAgICAgICAgICBbJXRlc3RfZXE6IGJvb2xdICh0Lm51bV9wYXJlbnRzID4gMCkgKFVvcHQuaXNfc29tZSBwYXJlbnQwKSkpXG4gICAgICB+Y3JlYXRlZF9pbjooY2hlY2sgU2NvcGUuaW52YXJpYW50KVxuICAgICAgfm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlOlxuICAgICAgICAoY2hlY2sgKGZ1biBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSAtPlxuICAgICAgICAgICBpZiBTY29wZS5pc190b3AgdC5jcmVhdGVkX2luIHx8IG5vdCAoaXNfdmFsaWQgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSkpKVxuICAgICAgfmhlaWdodDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0IC0+XG4gICAgICAgICAgIGlmIGlzX25lY2Vzc2FyeSB0IHRoZW4gYXNzZXJ0IChoZWlnaHQgPj0gMCkgZWxzZSBhc3NlcnQgKGhlaWdodCA9IC0xKSkpXG4gICAgICB+aGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPj0gLTEpO1xuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8PSB0LmhlaWdodCkpKVxuICAgICAgfnByZXZfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIChwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX3JlY29tcHV0ZV9oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgICAgICAgIGlmIFVvcHQuaXNfc29tZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIGxldCAoVCBwcmV2KSA9IFVvcHQudmFsdWVfZXhuIHByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHQpIChVb3B0LnZhbHVlX2V4biBwcmV2Lm5leHRfaW5fcmVjb21wdXRlX2hlYXApKTtcbiAgICAgICAgICAgICBhc3NlcnQgKHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gcHJldi5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApKSkpXG4gICAgICB+bmV4dF9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIG5leHQpID0gVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgLT5cbiAgICAgICAgICAgaWYgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPj0gMFxuICAgICAgICAgICB0aGVuIGFzc2VydCAoaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPCB0LmhlaWdodCkpKVxuICAgICAgfm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIHQpXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKVxuICAgICAgICAgICBlbHNlIGlmIFVvcHQuaXNfc29tZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIG5leHQpID0gVW9wdC52YWx1ZV9leG4gbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIG5leHQpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IG5leHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApKSkpXG4gICAgICB+b2xkX3ZhbHVlX29wdDooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5vYnNlcnZlcnM6XG4gICAgICAgIChjaGVjayAoZnVuIF8gLT5cbiAgICAgICAgICAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIHsgc3RhdGU7IG9ic2VydmluZzsgXyB9IC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsIHQgb2JzZXJ2aW5nKTtcbiAgICAgICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICB+aXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb246aWdub3JlXG4gICAgICB+b25fdXBkYXRlX2hhbmRsZXJzOmlnbm9yZVxuICAgICAgfnVzZXJfaW5mbzppZ25vcmVcbiAgICAgIH5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCAtPlxuICAgICAgICAgICAobWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgICAgICAgIHwgRXhwZXJ0IF8gLT4gKClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgICAgfmV4cGVjdDooaW5pdGlhbF9udW1fY2hpbGRyZW4gdCkpO1xuICAgICAgICAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIGNoaWxkX2luZGV4IChUIGNoaWxkKSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgICAoVCB0KVxuICAgICAgICAgICAgICAgICAgIChnZXRfcGFyZW50XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgICB+aW5kZXg6bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkpKSk7XG4gICAgICAgICAgIGlmIGRlYnVnICYmIG5vdCAoaXNfbmVjZXNzYXJ5IHQpXG4gICAgICAgICAgIHRoZW4gQXJyYXkuaXRlciBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmY6KGZ1biB4IC0+IGFzc2VydCAoeCA9IC0xKSkpKVxuICAgICAgfm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleDpcbiAgICAgICAgKGNoZWNrIChmdW4gbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAoQXJyYXkubGVuZ3RoIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleClcbiAgICAgICAgICAgICB+ZXhwZWN0OihVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCArIDEpO1xuICAgICAgICAgICBpdGVyaV9wYXJlbnRzIHQgfmY6KGZ1biBwYXJlbnRfaW5kZXggKFQgcGFyZW50KSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICBwYWNrZWRfc2FtZVxuICAgICAgICAgICAgICAgICAoVCB0KVxuICAgICAgICAgICAgICAgICAoS2luZC5zbG93X2dldF9jaGlsZFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQua2luZFxuICAgICAgICAgICAgICAgICAgICB+aW5kZXg6bXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihwYXJlbnRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuIEFycmF5Lml0ZXIgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IH5mOihmdW4geCAtPiBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5mb3JjZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICB+Y3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZSlcbjs7XG5cbmxldCB1bnNhZmVfdmFsdWUgdCA9IFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfb3B0XG5cbmxldCB2YWx1ZV9leG4gdCA9XG4gIGlmIFVvcHQuaXNfc29tZSB0LnZhbHVlX29wdFxuICB0aGVuIFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfb3B0XG4gIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIGdldCB2YWx1ZSBvZiBhbiBpbnZhbGlkIG5vZGVcIiB0IFslc2V4cF9vZjogXyB0XVxuOztcblxubGV0IGdldF9jdXRvZmYgdCA9IHQuY3V0b2ZmXG5sZXQgc2V0X2N1dG9mZiB0IGN1dG9mZiA9IHQuY3V0b2ZmIDwtIGN1dG9mZlxuXG5sZXQgaXNfY29uc3QgdCA9XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgQ29uc3QgXyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG9uX3VwZGF0ZSB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gb25fdXBkYXRlX2hhbmRsZXIgOjogdC5vbl91cGRhdGVfaGFuZGxlcnM7XG4gIHQubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA8LSB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgKyAxXG47O1xuXG5sZXQgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyB0IG5vZGVfdXBkYXRlIH5ub3cgPVxuICBsZXQgciA9IHJlZiB0Lm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICB3aGlsZSBub3QgKExpc3QuaXNfZW1wdHkgIXIpIGRvXG4gICAgbWF0Y2ggIXIgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBvbl91cGRhdGVfaGFuZGxlciA6OiByZXN0IC0+XG4gICAgICByIDo9IHJlc3Q7XG4gICAgICBPbl91cGRhdGVfaGFuZGxlci5ydW4gb25fdXBkYXRlX2hhbmRsZXIgbm9kZV91cGRhdGUgfm5vd1xuICBkb25lO1xuICBsZXQgciA9IHJlZiB0Lm9ic2VydmVycyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgb2JzZXJ2ZXIgPSBVb3B0LnZhbHVlX2V4biAhciBpblxuICAgIHIgOj0gb2JzZXJ2ZXIubmV4dF9pbl9vYnNlcnZpbmc7XG4gICAgbGV0IHIgPSByZWYgb2JzZXJ2ZXIub25fdXBkYXRlX2hhbmRsZXJzIGluXG4gICAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgICByIDo9IHJlc3Q7XG4gICAgICAgICgqIFdlIGhhdmUgdG8gdGVzdCBbc3RhdGVdIGJlZm9yZSBlYWNoIG9uLXVwZGF0ZSBoYW5kbGVyLCBiZWNhdXNlIGFuIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVyIG1pZ2h0IGRpc2FibGUgaXRzIG93biBvYnNlcnZlciwgd2hpY2ggc2hvdWxkIHByZXZlbnQgb3RoZXIgb24tdXBkYXRlXG4gICAgICAgICAgIGhhbmRsZXJzIGluIHRoZSBzYW1lIG9ic2VydmVyIGZyb20gcnVubmluZy4gKilcbiAgICAgICAgKG1hdGNoIG9ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICB8IEluX3VzZSAtPiBPbl91cGRhdGVfaGFuZGxlci5ydW4gb25fdXBkYXRlX2hhbmRsZXIgbm9kZV91cGRhdGUgfm5vdylcbiAgICBkb25lXG4gIGRvbmVcbjs7XG5cbmxldCBzZXRfa2luZCB0IGtpbmQgPVxuICB0LmtpbmQgPC0ga2luZDtcbiAgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXhcbiAgPC0gQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuOztcblxubGV0IGNyZWF0ZSBzdGF0ZSBjcmVhdGVkX2luIGtpbmQgPVxuICBsZXQgdCA9XG4gICAgeyBpZCA9IE5vZGVfaWQubmV4dCAoKVxuICAgIDsgc3RhdGVcbiAgICA7IHJlY29tcHV0ZWRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB2YWx1ZV9vcHQgPSBVb3B0Lm5vbmVcbiAgICA7IGtpbmRcbiAgICA7IGN1dG9mZiA9IEN1dG9mZi5waHlzX2VxdWFsXG4gICAgOyBjaGFuZ2VkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA9IDBcbiAgICA7IG51bV9wYXJlbnRzID0gMFxuICAgIDsgcGFyZW50MV9hbmRfYmV5b25kID0gVW5pZm9ybV9hcnJheS5lbXB0eVxuICAgIDsgcGFyZW50MCA9IFVvcHQubm9uZVxuICAgIDsgY3JlYXRlZF9pblxuICAgIDsgbmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodCA9IC0xXG4gICAgOyBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSAtMVxuICAgIDsgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSAtMVxuICAgIDsgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gVW9wdC5ub25lXG4gICAgOyBvbGRfdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBvYnNlcnZlcnMgPSBVb3B0Lm5vbmVcbiAgICA7IGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uID0gZmFsc2VcbiAgICA7IG9uX3VwZGF0ZV9oYW5kbGVycyA9IFtdXG4gICAgOyBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggPVxuICAgICAgICBBcnJheS5jcmVhdGUgfmxlbjooS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiBraW5kKSAoLTEpXG4gICAgKCogW215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleF0gaGFzIG9uZSBlbGVtZW50IGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8gaG9sZFxuICAgICAgIHRoZSBjaGlsZCBpbmRleCBvZiBbcGFyZW50MF0uICopXG4gICAgOyBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggPSBbfCAtMSB8XVxuICAgIDsgZm9yY2VfbmVjZXNzYXJ5ID0gZmFsc2VcbiAgICA7IHVzZXJfaW5mbyA9IE5vbmVcbiAgICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA9XG4gICAgICAgIChpZiBzdGF0ZS5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIHRoZW4gU29tZSAoQmFja3RyYWNlLmdldCAoKSkgZWxzZSBOb25lKVxuICAgIH1cbiAgaW5cbiAgU2NvcGUuYWRkX25vZGUgY3JlYXRlZF9pbiB0O1xuICAoKiBbaW52YXJpYW50XSBkb2VzIG5vdCB5ZXQgaG9sZCBoZXJlIGJlY2F1c2UgbWFueSB1c2VzIG9mIFtOb2RlLmNyZWF0ZV0gdXNlIFtraW5kID1cbiAgICAgVW5pbml0aWFsaXplZF0sIGFuZCB0aGVuIG11dGF0ZSBbdC5raW5kXSBsYXRlci4gKilcbiAgdFxuOztcblxubGV0IG1heF9udW1fcGFyZW50cyB0ID0gMSArIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQucGFyZW50MV9hbmRfYmV5b25kXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9wYXJlbnRfaWZfbmVjZXNzYXJ5IHQgPVxuICBpZiB0Lm51bV9wYXJlbnRzID0gbWF4X251bV9wYXJlbnRzIHRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19tYXhfbnVtX3BhcmVudHMgPSAyICogbWF4X251bV9wYXJlbnRzIHQgaW5cbiAgICB0LnBhcmVudDFfYW5kX2JleW9uZFxuICAgIDwtIFVuaWZvcm1fYXJyYXkucmVhbGxvYyB0LnBhcmVudDFfYW5kX2JleW9uZCB+bGVuOihuZXdfbWF4X251bV9wYXJlbnRzIC0gMSk7XG4gICAgdC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhcbiAgICA8LSBBcnJheS5yZWFsbG9jIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IH5sZW46bmV3X21heF9udW1fcGFyZW50cyAoLTEpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX3BhcmVudHMgPCBtYXhfbnVtX3BhcmVudHMgdClcbjs7XG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCB+Y2hpbGRfaW5kZXggPVxuICBsZXQgbWF4X251bV9jaGlsZHJlbiA9IEFycmF5Lmxlbmd0aCB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCBpblxuICBpZiBjaGlsZF9pbmRleCA+PSBtYXhfbnVtX2NoaWxkcmVuXG4gIHRoZW4gKFxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZF9pbmRleCA9IG1heF9udW1fY2hpbGRyZW4pO1xuICAgIGxldCBuZXdfbWF4X251bV9jaGlsZHJlbiA9IEludC5tYXggMiAoMiAqIG1heF9udW1fY2hpbGRyZW4pIGluXG4gICAgdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXhcbiAgICA8LSBBcnJheS5yZWFsbG9jIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IH5sZW46bmV3X21heF9udW1fY2hpbGRyZW4gKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZF9pbmRleCA8IEFycmF5Lmxlbmd0aCB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleClcbjs7XG5cbmxldCBzZXRfcGFyZW50IDogdHlwZSBhLiBjaGlsZDphIHQgLT4gcGFyZW50OlBhY2tlZC50IFVvcHQudCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBpZiBwYXJlbnRfaW5kZXggPSAwXG4gIHRoZW4gY2hpbGQucGFyZW50MCA8LSBwYXJlbnRcbiAgZWxzZSBVbmlmb3JtX2FycmF5LnNldCBjaGlsZC5wYXJlbnQxX2FuZF9iZXlvbmQgKHBhcmVudF9pbmRleCAtIDEpIHBhcmVudFxuOztcblxubGV0IGxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OihVb3B0LnNvbWUgKFBhY2tlZC5UIHBhcmVudCkpIH5wYXJlbnRfaW5kZXg7XG4gIGNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSA8LSBjaGlsZF9pbmRleDtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIHBhcmVudF9pbmRleFxuOztcblxubGV0IHVubGlua1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHBhcmVudDpiIHQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0XG4gID1cbiAgZnVuIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4IC0+XG4gIHNldF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6VW9wdC5ub25lIH5wYXJlbnRfaW5kZXg7XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSA8LSAtMTtcbiAgICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgPC0gLTEpXG47O1xuXG5sZXQgYWRkX3BhcmVudCA6IHR5cGUgYSBiLiBjaGlsZDphIHQgLT4gcGFyZW50OmIgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSBjaGlsZDtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGxpbmsgfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXg6Y2hpbGQubnVtX3BhcmVudHM7XG4gIGNoaWxkLm51bV9wYXJlbnRzIDwtIGNoaWxkLm51bV9wYXJlbnRzICsgMVxuOztcblxubGV0IHJlbW92ZV9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChjaGlsZC5udW1fcGFyZW50cyA+PSAxKTtcbiAgbGV0IHBhcmVudF9pbmRleCA9IHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAocGFja2VkX3NhbWUgKFQgcGFyZW50KSAoZ2V0X3BhcmVudCBjaGlsZCB+aW5kZXg6cGFyZW50X2luZGV4KSk7XG4gIGxldCBsYXN0X3BhcmVudF9pbmRleCA9IGNoaWxkLm51bV9wYXJlbnRzIC0gMSBpblxuICBpZiBwYXJlbnRfaW5kZXggPCBsYXN0X3BhcmVudF9pbmRleFxuICB0aGVuIChcbiAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChsYXN0X3BhcmVudF9pbmRleCAtIDEpKVxuICAgIGluXG4gICAgbGlua1xuICAgICAgfmNoaWxkXG4gICAgICB+Y2hpbGRfaW5kZXg6Y2hpbGQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihsYXN0X3BhcmVudF9pbmRleClcbiAgICAgIH5wYXJlbnRcbiAgICAgIH5wYXJlbnRfaW5kZXgpO1xuICB1bmxpbmsgfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXg6bGFzdF9wYXJlbnRfaW5kZXg7XG4gIGNoaWxkLm51bV9wYXJlbnRzIDwtIGNoaWxkLm51bV9wYXJlbnRzIC0gMVxuOztcblxubGV0IHN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQgcGFyZW50IH5jaGlsZDEgfmNoaWxkX2luZGV4MSB+Y2hpbGQyIH5jaGlsZF9pbmRleDIgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMSkgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MSkpO1xuICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgY2hpbGQyKSAoS2luZC5zbG93X2dldF9jaGlsZCBwYXJlbnQua2luZCB+aW5kZXg6Y2hpbGRfaW5kZXgyKSkpO1xuICBsZXQgaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMSA9XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgxKVxuICBpblxuICBsZXQgaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiA9XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgyKVxuICBpblxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQxLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMSkgPSBjaGlsZF9pbmRleDEpO1xuICAgIGFzc2VydCAoXG4gICAgICBjaGlsZDIubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyKSA9IGNoaWxkX2luZGV4MikpO1xuICAoKiBub3cgc3RhcnQgc3dhcHBpbmcgKilcbiAgY2hpbGQxLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMSkgPC0gY2hpbGRfaW5kZXgyO1xuICBjaGlsZDIubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4LihpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQyKSA8LSBjaGlsZF9pbmRleDE7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSkgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMjtcbiAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgyKSA8LSBpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxXG47O1xuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgdCA9IFBhY2tlZC50ID0gVCA6IF8gVHlwZXMuTm9kZS50IC0+IHQgW0BAdW5ib3hlZF1cblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gdCB8PiBbJXNleHBfb2Y6IF8gdF1cbiAgbGV0IGludmFyaWFudCAoVCB0KSA9IGludmFyaWFudCBpZ25vcmUgdFxuXG4gIG1vZHVsZSBBc19saXN0IChNIDogc2lnXG4gICAgICB2YWwgbmV4dCA6IFBhY2tlZC50IC0+IFBhY2tlZC50IFVvcHQudFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBQYWNrZWQudCBVb3B0LnRcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IGFjID0gcmVmIGluaXQgaW5cbiAgICAgIGxldCByID0gcmVmIHQgaW5cbiAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICBsZXQgcGFja2VkX25vZGUgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgICAgICByIDo9IE0ubmV4dCBwYWNrZWRfbm9kZTtcbiAgICAgICAgYWMgOj0gZiAhYWMgcGFja2VkX25vZGVcbiAgICAgIGRvbmU7XG4gICAgICAhYWNcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIG4gLT4gZiBuKVxuICAgIGxldCBpbnZhcmlhbnQgdCA9IGl0ZXIgdCB+ZjppbnZhcmlhbnRcbiAgICBsZXQgbGVuZ3RoIHQgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gXyAtPiBuICsgMSlcbiAgICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5yZXYgKGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIG4gLT4gbiA6OiBhYykpXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fbGlzdCB0IHw+IFslc2V4cF9vZjogUGFja2VkLnQgbGlzdF1cbiAgZW5kXG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgPVxuICAgIGxldCBzZWVuID0gTm9kZV9pZC5IYXNoX3NldC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVjIGl0ZXJfZGVzY2VuZGFudHMgKFQgdCkgPVxuICAgICAgaWYgbm90IChIYXNoX3NldC5tZW0gc2VlbiB0LmlkKVxuICAgICAgdGhlbiAoXG4gICAgICAgIEhhc2hfc2V0LmFkZCBzZWVuIHQuaWQ7XG4gICAgICAgIGYgKFQgdCk7XG4gICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIHQgLT4gaXRlcl9kZXNjZW5kYW50cyB0KSlcbiAgICBpblxuICAgIExpc3QuaXRlciB0cyB+ZjppdGVyX2Rlc2NlbmRhbnRzO1xuICAgIHNlZW5cbiAgOztcblxuICBsZXQgaXRlcl9kZXNjZW5kYW50cyB0cyB+ZiA9IGlnbm9yZSAoaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZiA6IF8gSGFzaF9zZXQudClcblxuICBtb2R1bGUgRG90X3VzZXJfaW5mbyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRG90X3VzZXJfaW5mb1xuXG4gICAgbGV0IGRlZmF1bHQgfm5hbWUgdCA9XG4gICAgICBEb3RfdXNlcl9pbmZvLmRvdFxuICAgICAgICB+bGFiZWw6WyBuYW1lOyBLaW5kLm5hbWUgdC5raW5kOyBzcHJpbnRmIFwiaGVpZ2h0PSVkXCIgdC5oZWlnaHQgXVxuICAgICAgICB+YXR0cmlidXRlczpTdHJpbmcuTWFwLmVtcHR5XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXogKFQgdCkgPSBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHRcblxuICBsZXQgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdCA9XG4gICAgbGV0IGRlZmF1bHQgPSBEb3RfdXNlcl9pbmZvLmRlZmF1bHQgfm5hbWUgdCBpblxuICAgIGxldCBpbmZvID1cbiAgICAgIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgdXNlcl9pbmZvIC0+IERvdF91c2VyX2luZm8uYXBwZW5kIGRlZmF1bHQgdXNlcl9pbmZvXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcIiVzXFxuXCIgKERvdF91c2VyX2luZm8udG9fc3RyaW5nIH5uYW1lIChEb3RfdXNlcl9pbmZvLnRvX2RvdCBpbmZvKSlcbiAgOztcblxuICBsZXQgc2F2ZV9kb3Qgb3V0IHRzID1cbiAgICBsZXQgbm9kZV9uYW1lID1cbiAgICAgIGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgdGhlbiBmdW4gXyAtPiBcIm4jIyNcIlxuICAgICAgZWxzZSBmdW4gbm9kZSAtPiBcIm5cIiBeIE5vZGVfaWQudG9fc3RyaW5nIG5vZGUuaWRcbiAgICBpblxuICAgIGZwcmludGYgb3V0IFwiZGlncmFwaCBHIHtcXG5cIjtcbiAgICBmcHJpbnRmIG91dCBcIiAgcmFua2RpciA9IEJUXFxuXCI7XG4gICAgbGV0IGJpbmRfZWRnZXMgPSByZWYgW10gaW5cbiAgICBsZXQgc2VlbiA9XG4gICAgICBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mOihmdW4gKFQgdCkgLT5cbiAgICAgICAgbGV0IG5hbWUgPSBub2RlX25hbWUgdCBpblxuICAgICAgICBwcmludF9ub2RlIG91dCB+bmFtZSB0O1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyAoVCBmcm9tXykgLT5cbiAgICAgICAgICBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXNcXG5cIiAobm9kZV9uYW1lIGZyb21fKSBuYW1lKTtcbiAgICAgICAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPlxuICAgICAgICAgIEJpbmQuaXRlcl9ub2Rlc19jcmVhdGVkX29uX3JocyBiaW5kIH5mOihmdW4gdG9fIC0+XG4gICAgICAgICAgICBiaW5kX2VkZ2VzIDo9IChUIHQsIHRvXykgOjogIWJpbmRfZWRnZXMpXG4gICAgICAgIHwgXyAtPiAoKSlcbiAgICBpblxuICAgIExpc3QuaXRlciAhYmluZF9lZGdlcyB+ZjooZnVuIChUIGZyb20sIFQgdG9fKSAtPlxuICAgICAgaWYgSGFzaF9zZXQubWVtIHNlZW4gdG9fLmlkXG4gICAgICB0aGVuIGZwcmludGYgb3V0IFwiICAlcyAtPiAlcyBbc3R5bGU9ZGFzaGVkXVxcblwiIChub2RlX25hbWUgZnJvbSkgKG5vZGVfbmFtZSB0b18pKTtcbiAgICBmcHJpbnRmIG91dCBcIn1cXG4lIVwiXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgZmlsZSB0cyA9XG4gICAgT3V0X2NoYW5uZWwud2l0aF9maWxlIGZpbGUgfmY6KGZ1biBvdXQgLT4gc2F2ZV9kb3Qgb3V0IHRzKVxuICA7O1xuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbm1vZHVsZSBBc19yZWNvbXB1dGVfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwXG4gIGVuZClcblxubW9kdWxlIE5vZGVzX2J5X2hlaWdodCA9IHN0cnVjdFxuICB0eXBlIHQgPSBBc19yZWNvbXB1dGVfbGlzdC50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICgqIFdlIGRpc3BsYXkgdGhlIHNtYWxsZXN0IHByZWZpeCBvZiBbbm9kZXNfYnlfaGVpZ2h0XSB0aGF0IGluY2x1ZGVzIGFsbCBub2Rlcy4gKilcbiAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICBsZXQgbWF4X25vbmVtcHR5X2luZGV4ID0gcmVmICgtMSkgaW5cbiAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBpIGwgLT4gaWYgVW9wdC5pc19zb21lIGwgdGhlbiBtYXhfbm9uZW1wdHlfaW5kZXggOj0gaSk7XG4gICAgVW5pZm9ybV9hcnJheS5zdWIgdCB+cG9zOjAgfmxlbjooIW1heF9ub25lbXB0eV9pbmRleCArIDEpIHw+IFslc2V4cF9vZjogdF1cbiAgOztcbmVuZFxuXG50eXBlIHQgPSBUeXBlcy5SZWNvbXB1dGVfaGVhcC50ID1cbiAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICA7IG11dGFibGUgaGVpZ2h0X2xvd2VyX2JvdW5kIDogaW50XG4gIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2Rlc19ieV9oZWlnaHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMVxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBsZXQgYWN0dWFsX2xlbmd0aCA9IHJlZiAwIGluXG4gICAgICAgICAgIFVuaWZvcm1fYXJyYXkuaXRlciB0Lm5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIG5vZGUgLT5cbiAgICAgICAgICAgICBhY3R1YWxfbGVuZ3RoIDo9ICFhY3R1YWxfbGVuZ3RoICsgQXNfcmVjb21wdXRlX2xpc3QubGVuZ3RoIG5vZGUpO1xuICAgICAgICAgICBbJXRlc3RfZXE6IGludF0gbGVuZ3RoICFhY3R1YWxfbGVuZ3RoKSlcbiAgICAgIH5oZWlnaHRfbG93ZXJfYm91bmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpO1xuICAgICAgICAgICBmb3IgaGVpZ2h0ID0gMCB0byBoZWlnaHRfbG93ZXJfYm91bmQgLSAxIGRvXG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm5vZGVzX2J5X2hlaWdodDpcbiAgICAgICAgKGNoZWNrIChmdW4gbm9kZXNfYnlfaGVpZ2h0IC0+XG4gICAgICAgICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgbm9kZXNfYnlfaGVpZ2h0IH5mOihmdW4gaGVpZ2h0IG5vZGUgLT5cbiAgICAgICAgICAgICBBc19yZWNvbXB1dGVfbGlzdC5pdGVyIG5vZGUgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IGhlaWdodCk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpKSkpKVxuOztcblxubGV0IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW46KG1heF9oZWlnaHRfYWxsb3dlZCArIDEpIFVvcHQubm9uZVxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBtYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBpZiBkZWJ1Z1xuICB0aGVuXG4gICAgZm9yIGkgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0IC0gMSBkb1xuICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGkpKVxuICAgIGRvbmU7XG4gIGxldCBzcmMgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICBsZXQgZHN0ID0gY3JlYXRlX25vZGVzX2J5X2hlaWdodCB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgIH5zcmNcbiAgICB+c3JjX3BvczowXG4gICAgfmRzdFxuICAgIH5kc3RfcG9zOjBcbiAgICB+bGVuOihtaW4gKFVuaWZvcm1fYXJyYXkubGVuZ3RoIHNyYykgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdCkpO1xuICB0Lm5vZGVzX2J5X2hlaWdodCA8LSBkc3Q7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIG1pbiB0LmhlaWdodF9sb3dlcl9ib3VuZCAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHN0KVxuOztcblxubGV0IGNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgeyBsZW5ndGggPSAwXG4gIDsgaGVpZ2h0X2xvd2VyX2JvdW5kID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMVxuICA7IG5vZGVzX2J5X2hlaWdodCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZFxuICB9XG47O1xuXG5sZXQgc2V0X25leHQgKHByZXYgOiBOb2RlLlBhY2tlZC50IFVvcHQudCkgfm5leHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgcHJldlxuICB0aGVuIChcbiAgICBsZXQgKFQgcHJldikgPSBVb3B0LnVuc2FmZV92YWx1ZSBwcmV2IGluXG4gICAgcHJldi5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIG5leHQpXG47O1xuXG5sZXQgc2V0X3ByZXYgKG5leHQgOiBOb2RlLlBhY2tlZC50IFVvcHQudCkgfnByZXYgPVxuICBpZiBVb3B0LmlzX3NvbWUgbmV4dFxuICB0aGVuIChcbiAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnVuc2FmZV92YWx1ZSBuZXh0IGluXG4gICAgbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIHByZXYpXG47O1xuXG5sZXQgbGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBoZWlnaHQ7XG4gIGxldCBuZXh0ID0gVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IGluXG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2OihVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpO1xuICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0IChVb3B0LnNvbWUgKE5vZGUuUGFja2VkLlQgbm9kZSkpXG47O1xuXG5sZXQgdW5saW5rICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBsZXQgcHJldiA9IG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBsZXQgbmV4dCA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICBpZiBwaHlzX3NhbWVcbiAgICAgICAoVW9wdC5zb21lIG5vZGUpXG4gICAgICAgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKVxuICB0aGVuIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCBuZXh0O1xuICBzZXRfcHJldiBuZXh0IH5wcmV2O1xuICBzZXRfbmV4dCBwcmV2IH5uZXh0O1xuICBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lXG47O1xuXG4oKiBXZSBkb24ndCBzZXQgW25vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcF0gaGVyZSwgYnV0IHJhdGhlciBhZnRlciBjYWxsaW5nIFt1bmxpbmtdLiAqKVxuXG5sZXQgYWRkICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1ZyAmJiAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlIHx8IG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgYXR0ZW1wdCB0byBhZGQgbm9kZSB0byByZWNvbXB1dGUgaGVhcFwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vZGUuaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gIGlmIGhlaWdodCA8IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gaGVpZ2h0O1xuICBsaW5rIHQgbm9kZTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgcmVtb3ZlICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1ZyAmJiAoKG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSkgfHwgTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImluY29ycmVjdCBbcmVtb3ZlXSBvZiBub2RlIGZyb20gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIHVubGluayB0IG5vZGU7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDFcbjs7XG5cbmxldCBpbmNyZWFzZV9oZWlnaHQgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPiBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gICAgYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gICAgYXNzZXJ0IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpKTtcbiAgdW5saW5rIHQgbm9kZTtcbiAgbGluayB0IG5vZGVcbjs7XG5cbmxldCBtaW5faGVpZ2h0IHQgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodFxuICBlbHNlIChcbiAgICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgICB3aGlsZSBVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgZG9cbiAgICAgIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIHQuaGVpZ2h0X2xvd2VyX2JvdW5kICsgMVxuICAgIGRvbmUpO1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZFxuOztcblxubGV0IHJlbW92ZV9taW4gdCA6IE5vZGUuUGFja2VkLnQgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gIGxldCBub2Rlc19ieV9oZWlnaHQgPSB0Lm5vZGVzX2J5X2hlaWdodCBpblxuICBsZXQgbm9kZSA9IHJlZiAoVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKSBpblxuICB3aGlsZSBVb3B0LmlzX25vbmUgIW5vZGUgZG9cbiAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDE7XG4gICAgaWYgZGVidWcgJiYgdC5oZWlnaHRfbG93ZXJfYm91bmQgPj0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIlJlY29tcHV0ZV9oZWFwLnJlbW92ZV9taW4gdW5leHBlY3RlZGx5IHJlYWNoZWQgZW5kIG9mIGhlYXBcIlxuICAgICAgICB0XG4gICAgICAgIFslc2V4cF9vZjogdF07XG4gICAgbm9kZSA6PSBVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmRcbiAgZG9uZTtcbiAgbGV0IChUIG5vZGUpID0gVW9wdC51bnNhZmVfdmFsdWUgIW5vZGUgaW5cbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gLTE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgVW5pZm9ybV9hcnJheS5zZXQgdC5ub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjpVb3B0Lm5vbmU7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZTtcbiAgVCBub2RlXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5cbm1vZHVsZSBBc19hZGp1c3RfaGVpZ2h0c19saXN0ID0gTm9kZS5QYWNrZWQuQXNfbGlzdCAoc3RydWN0XG4gICAgbGV0IG5leHQgKE5vZGUuUGFja2VkLlQgbm9kZSkgPSBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfYWRqdXN0X2hlaWdodHNfbGlzdC50IFVuaWZvcm1fYXJyYXkudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGhlaWdodCBub2RlcyAtPlxuICAgICAgICBBc19hZGp1c3RfaGVpZ2h0c19saXN0LmludmFyaWFudCBub2RlcztcbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pdGVyIG5vZGVzIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPiBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKTtcbiAgICAgICAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGVcbiAgICAgICAgICB0aGVuIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gICAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID1cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyIHQgfmY6KGZ1biBub2RlIC0+IHIgOj0gIXIgKyBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAhclxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFkanVzdF9oZWlnaHRzX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2Rlc19ieV9oZWlnaHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA9IE5vZGVzX2J5X2hlaWdodC5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpKSlcbiAgICAgIH5oZWlnaHRfbG93ZXJfYm91bmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpO1xuICAgICAgICAgICBmb3IgaGVpZ2h0ID0gMCB0byBoZWlnaHRfbG93ZXJfYm91bmQgLSAxIGRvXG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1heF9oZWlnaHRfc2VlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2hlaWdodF9zZWVuIC0+XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpKVxuICAgICAgfm5vZGVzX2J5X2hlaWdodDooY2hlY2sgTm9kZXNfYnlfaGVpZ2h0LmludmFyaWFudCkpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbWF4X2hlaWdodF9zZWVuID0gMFxuICA7IG5vZGVzX2J5X2hlaWdodCA9IE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuICB9XG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIG1heF9oZWlnaHRfYWxsb3dlZCA8IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgbGVzcyB0aGFuIHRoZSBtYXggaGVpZ2h0IGFscmVhZHkgc2VlblwiXG4gICAgICAobWF4X2hlaWdodF9hbGxvd2VkLCBgbWF4X2hlaWdodF9zZWVuIHQubWF4X2hlaWdodF9zZWVuKVxuICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXhfaGVpZ2h0X3NlZW4gb2YgaW50IF1dO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuOztcblxubGV0IGFkZF91bmxlc3NfbWVtICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgdGhlbiAoXG4gICAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gICAgKCogV2UgcHJvY2VzcyBub2RlcyBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHByZS1hZGp1c3RlZCBoZWlnaHQsIHNvIGl0IGlzIGEgYnVnIGlmIHdlXG4gICAgICAgZXZlciB0cnkgdG8gYWRkIGEgbm9kZSB0aGF0IHdvdWxkIHZpb2xhdGUgdGhhdC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKTtcbiAgICAoKiBXaGVuZXZlciB3ZSBzZXQgYSBub2RlJ3MgaGVpZ2h0LCB3ZSB1c2UgW3NldF9oZWlnaHRdLCB3aGljaCBlbmZvcmNlcyB0aGlzLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gaGVpZ2h0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQ7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKSlcbjs7XG5cbmxldCByZW1vdmVfbWluX2V4biB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnICYmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWRqdXN0X2hlaWdodHNfaGVhcC5yZW1vdmVfbWluIG9mIGVtcHR5IGhlYXBcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCByID0gcmVmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgIXIpIGRvXG4gICAgaW5jciByXG4gIGRvbmU7XG4gIGxldCBoZWlnaHQgPSAhciBpblxuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSBpblxuICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA7XG4gIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVvcHQubm9uZTtcbiAgVCBub2RlXG47O1xuXG5sZXQgc2V0X2hlaWdodCB0IChub2RlIDogXyBOb2RlLnQpIGhlaWdodCA9XG4gIGlmIGhlaWdodCA+IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW4gKFxuICAgIHQubWF4X2hlaWdodF9zZWVuIDwtIGhlaWdodDtcbiAgICBpZiBoZWlnaHQgPiBtYXhfaGVpZ2h0X2FsbG93ZWQgdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwibm9kZSB3aXRoIHRvbyBsYXJnZSBoZWlnaHRcIlxuICAgICAgICAoYEhlaWdodCBoZWlnaHQsIGBNYXggKG1heF9oZWlnaHRfYWxsb3dlZCB0KSlcbiAgICAgICAgWyVzZXhwX29mOiBbIGBIZWlnaHQgb2YgaW50IF0gKiBbIGBNYXggb2YgaW50IF1dKTtcbiAgbm9kZS5oZWlnaHQgPC0gaGVpZ2h0XG47O1xuXG5sZXQgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGlmIE5vZGUuc2FtZSBwYXJlbnQgb3JpZ2luYWxfY2hpbGRcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhZGRpbmcgZWRnZSBtYWRlIGdyYXBoIGN5Y2xpY1wiXG4gICAgICAoYGNoaWxkIG9yaWdpbmFsX2NoaWxkLCBgcGFyZW50IG9yaWdpbmFsX3BhcmVudClcbiAgICAgIFslc2V4cF9vZjogWyBgY2hpbGQgb2YgXyBOb2RlLnQgXSAqIFsgYHBhcmVudCBvZiBfIE5vZGUudCBdXTtcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlbiAoXG4gICAgYWRkX3VubGVzc19tZW0gdCBwYXJlbnQ7XG4gICAgKCogV2Ugc2V0IFtwYXJlbnQuaGVpZ2h0XSBhZnRlciBhZGRpbmcgW3BhcmVudF0gdG8gdGhlIGhlYXAsIHNvIHRoYXQgW3BhcmVudF0gZ29lc1xuICAgICAgIGluIHRoZSBoZWFwIHdpdGggaXRzIHByZS1hZGp1c3RlZCBoZWlnaHQuICopXG4gICAgc2V0X2hlaWdodCB0IHBhcmVudCAoY2hpbGQuaGVpZ2h0ICsgMSkpXG47O1xuXG5sZXQgYWRqdXN0X2hlaWdodHNcbiAgICAgICh0eXBlIGEgYilcbiAgICAgIHRcbiAgICAgIHJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGQ6KG9yaWdpbmFsX2NoaWxkIDogYSBOb2RlLnQpXG4gICAgICB+cGFyZW50OihvcmlnaW5hbF9wYXJlbnQgOiBiIE5vZGUudClcbiAgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPj0gb3JpZ2luYWxfcGFyZW50LmhlaWdodCk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIG9yaWdpbmFsX3BhcmVudC5oZWlnaHQ7XG4gIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICB0XG4gICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgfm9yaWdpbmFsX3BhcmVudFxuICAgIH5jaGlsZDpvcmlnaW5hbF9jaGlsZFxuICAgIH5wYXJlbnQ6b3JpZ2luYWxfcGFyZW50O1xuICB3aGlsZSBsZW5ndGggdCA+IDAgZG9cbiAgICBsZXQgKFQgY2hpbGQpID0gcmVtb3ZlX21pbl9leG4gdCBpblxuICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgY2hpbGRcbiAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmluY3JlYXNlX2hlaWdodCByZWNvbXB1dGVfaGVhcCBjaGlsZDtcbiAgICBpZiBjaGlsZC5udW1fcGFyZW50cyA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gY2hpbGQucGFyZW50MCBpblxuICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50O1xuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gY2hpbGQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50XG4gICAgICBkb25lKTtcbiAgICBtYXRjaCBjaGlsZC5raW5kIHdpdGhcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSB7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczsgXyB9IC0+XG4gICAgICBsZXQgciA9IHJlZiBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZV9vbl9yaHNcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgICAgICAgICAgfm9yaWdpbmFsX3BhcmVudFxuICAgICAgICAgICAgfmNoaWxkXG4gICAgICAgICAgICB+cGFyZW50Om5vZGVfb25fcmhzXG4gICAgICBkb25lXG4gICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA8IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS5BY3Rpb24udCA9XG4gICAgfCBBdCBvZiBBdC50XG4gICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICAgIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGlnbm9yZSBzbmFwc2hvdFxuICAgIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaWdub3JlIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLnQgPVxuICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gIDsgKCogW25leHRfZmlyZWRdIHNpbmdseSBsaW5rcyBhbGwgYWxhcm0gdmFsdWVzIHRoYXQgZmlyZSBkdXJpbmcgYSBzaW5nbGUgY2FsbCB0b1xuICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiAodCBVb3B0LnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlciB+YWN0aW9uOihjaGVjayBBY3Rpb24uaW52YXJpYW50KSB+bmV4dF9maXJlZDppZ25vcmUpXG47O1xuXG5sZXQgY3JlYXRlIGFjdGlvbiA9IHsgYWN0aW9uOyBuZXh0X2ZpcmVkID0gVW9wdC5ub25lIH1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb25maWdfaW50ZlxuXG5tb2R1bGUgRGVmYXVsdCAoKSA9IHN0cnVjdFxuICBsZXQgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IHRydWVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcblxubW9kdWxlIFBhY2tlZF8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5QYWNrZWRcblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIHw+IFslc2V4cF9vZjogXyBUeXBlcy5Ob2RlLnRdXG4gIDs7XG5cbiAgbGV0IHByZXZfaW5fYWxsIChUIHQpID0gdC5wcmV2X2luX2FsbFxuICBsZXQgbmV4dF9pbl9hbGwgKFQgdCkgPSB0Lm5leHRfaW5fYWxsXG4gIGxldCBzZXRfcHJldl9pbl9hbGwgKFQgdDEpIHQyID0gdDEucHJldl9pbl9hbGwgPC0gdDJcbiAgbGV0IHNldF9uZXh0X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5uZXh0X2luX2FsbCA8LSB0MlxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5TdGF0ZS50ID1cbiAgICB8IENyZWF0ZWRcbiAgICB8IEluX3VzZVxuICAgIHwgRGlzYWxsb3dlZFxuICAgIHwgVW5saW5rZWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgeyAoKiBTdGF0ZSB0cmFuc2l0aW9uczpcblxuICAgICAgIHt2XG4gICAgICAgICBDcmVhdGVkIC0tPiBJbl91c2UgLS0+IERpc2FsbG93ZWQgLS0+IFVubGlua2VkXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICBcXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vXG4gICAgICAgdn0gKilcbiAgICBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgKCogW3twcmV2LG5leHR9X2luX2FsbF0gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBpbiBbc3RhdGUuYWxsX29ic2VydmVyc10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9vYnNlcnZpbmddIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgb2YgW29ic2VydmluZ10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC5vYnNlcnZpbmcuc3RhdGVcblxubGV0IHVzZV9pc19hbGxvd2VkIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+IHRydWVcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gZmFsc2Vcbjs7XG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHNhbWVfYXNfcGFja2VkICh0MSA6IF8gdCkgKFBhY2tlZF8uVCB0MikgPSBzYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5vYnNlcnZpbmc6KGNoZWNrIChOb2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBvbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgQ3JlYXRlZCB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKExpc3QuaXNfZW1wdHkgb25fdXBkYXRlX2hhbmRsZXJzKSkpXG4gICAgICB+cHJldl9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ubmV4dF9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fYWxsKSkpKSkpXG4gICAgICB+bmV4dF9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ucHJldl9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWxsKSkpKSkpXG4gICAgICB+cHJldl9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAobmV4dF9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fb2JzZXJ2aW5nKSkpKSkpXG4gICAgICB+bmV4dF9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4biAocHJldl9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fb2JzZXJ2aW5nKSkpKSkpKVxuOztcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgZGlzYWxsb3dfZnV0dXJlX3VzZVwiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBJbl91c2UgLT5cbiAgICBsZXQgdW9wdCA9IHQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIGdldCB2YWx1ZSBvZiBhbiBpbnZhbGlkIG5vZGVcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICBVb3B0LnVuc2FmZV92YWx1ZSB1b3B0XG47O1xuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJvbl91cGRhdGUgZGlzYWxsb3dlZFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPlxuICAgIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgICgqIFdlJ2xsIGJ1bXAgW29ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aGVuIFt0XSBpcyBhY3R1YWxseSBhZGRlZCB0b1xuICAgICAgICAgIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAoKVxuICAgICB8IEluX3VzZSAtPlxuICAgICAgIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMSlcbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX29ic2VydmluZyBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9vYnNlcnZpbmcgaW5cbiAgdC5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KS5wcmV2X2luX29ic2VydmluZyA8LSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KS5uZXh0X2luX29ic2VydmluZyA8LSBuZXh0O1xuICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgaWYgcGh5c19lcXVhbCB0IChVb3B0LnZhbHVlX2V4biBvYnNlcnZpbmcub2JzZXJ2ZXJzKSB0aGVuIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gbmV4dDtcbiAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgLSBMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9hbGwgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX2FsbCBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9hbGwgaW5cbiAgdC5wcmV2X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIFBhY2tlZF8uc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIFBhY2tlZF8uc2V0X25leHRfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KSBuZXh0XG47O1xuXG5sZXQgdW5saW5rIHQgPVxuICB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdDtcbiAgdW5saW5rX2Zyb21fYWxsIHRcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYWNrZWRfXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyIHw+IFslc2V4cF9vZjogXyBpbnRlcm5hbF9vYnNlcnZlcl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSAhdFxubGV0IG9ic2VydmluZyB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nICF0XG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9IEludGVybmFsX29ic2VydmVyLnVzZV9pc19hbGxvd2VkICF0XG5sZXQgdmFsdWVfZXhuIHQgPSBJbnRlcm5hbF9vYnNlcnZlci52YWx1ZV9leG4gIXRcbmxldCBpbmNyX3N0YXRlIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlICF0XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBJbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfZXhuICF0IG9uX3VwZGF0ZV9oYW5kbGVyXG47O1xuIiwiKCogW1N0YXRlXSBkZWZpbmVzIHRoZSBnbG9iYWwgc3RhdGUgb2Ygd2hpY2ggdGhlcmUgaXMgb25lIGluc3RhbmNlIGZvciBlYWNoIGNhbGwgdG9cbiAgIFtJbmNyZW1lbnRhbC5NYWtlXS5cblxuICAgVGhpcyBtb2R1bGUgZG9lcyBub3QgaGF2ZSBhbiBtbGkgYmVjYXVzZSBpdCB3b3VsZCBlc3NlbnRpYWxseSBkdXBsaWNhdGVcbiAgIFtJbmNyZW1lbnRhbC5TXSwgZXhjZXB0IGFkZGluZyBhbiBleHRyYSBbU3RhdGUudF0gYXJndW1lbnQgdG8gZnVuY3Rpb25zLiAqKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxudHlwZSBzdGF0dXMgPSBUeXBlcy5TdGF0dXMudCA9XG4gIHwgU3RhYmlsaXppbmdcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICB8IE5vdF9zdGFiaWxpemluZ1xuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbm1vZHVsZSBSdW5fb25fdXBkYXRlX2hhbmRsZXJzID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBOb2RlX3VwZGF0ZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IChUIChub2RlLCBfbm9kZV91cGRhdGUpIGFzIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9ubHlfaW5fZGVidWcgPSBzdHJ1Y3RcbiAgKCogRXh0cmEgc3RhdGUga2VwdCBvbmx5IHdoZW4gW2RlYnVnXSBmb3IgdGhlIHB1cnBvc2Ugb2Ygd3JpdGluZyBhc3NlcnRpb25zLiAqKVxuICB0eXBlIHQgPSBUeXBlcy5Pbmx5X2luX2RlYnVnLnQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5jdXJyZW50bHlfcnVubmluZ19ub2RlOmlnbm9yZVxuICAgICAgICB+ZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX25vZGUgPSBOb25lOyBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPSBbXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFBhY2tlZF93ZWFrX2hhc2h0YmwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUGFja2VkX3dlYWtfaGFzaHRibC50ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSB0ID0gVHlwZXMuU3RhdGUudCA9XG4gIHsgbXV0YWJsZSBzdGF0dXMgOiBzdGF0dXNcbiAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICA7ICgqIFtzdGFiaWxpemF0aW9uX251bV0gc3RhcnRzIGF0IHplcm8sIGFuZCBpcyBpbmNyZW1lbnRlZCBhdCB0aGUgZW5kIG9mIGVhY2hcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgOyAoKiBbcHJvcGFnYXRlX2ludmFsaWRpdHldIGhvbGRzIG5vZGVzIHRoYXQgaGF2ZSBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgY29uc2lkZXJlZCBmb3IgaW52YWxpZGF0aW9uLiAgSXQgaXMgb25seSB1c2VkIGR1cmluZyBncmFwaCByZXN0cnVjdHVyaW5nOlxuICAgICAgIFtpbnZhbGlkYXRlX25vZGVdIGFuZCBbYWRkX3BhcmVudF0uICBPbmNlIGFuIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0YWNrLCB3ZSB0aGVuXG4gICAgICAgaXRlcmF0ZSB1bnRpbCBpbnZhbGlkaXR5IGhhcyBwcm9wYWdhdGVkIHRvIGFsbCBhbmNlc3RvcnMgYXMgbmVjZXNzYXJ5LCBhY2NvcmRpbmcgdG9cbiAgICAgICBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdLiAqKVxuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW251bV9hY3RpdmVfb2JzZXJ2ZXJzXSBpcyB0aGUgbnVtYmVyIG9mIG9ic2VydmVycyB3aG9zZSBzdGF0ZSBpcyBbQ3JlYXRlZF0gb3JcbiAgICAgICBbSW5fdXNlXS4gKilcbiAgICBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gIDsgKCogW2FsbF9vYnNlcnZlcnNdIGlzIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgYWxsIG9ic2VydmVycyBpbiBlZmZlY3QsIG9yIHRoYXQgaGF2ZVxuICAgICAgIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmVcbiAgICAgICBbc3RhdGVdIGFzIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBXZSBlbnF1ZXVlIGZpbmFsaXplZCBvYnNlcnZlcnMgaW4gYSB0aHJlYWQtc2FmZSBxdWV1ZSwgZm9yIGhhbmRsaW5nIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24uICBXZSB1c2UgYSB0aHJlYWQtc2FmZSBxdWV1ZSBiZWNhdXNlIE9DYW1sIGZpbmFsaXplcnMgY2FuIHJ1biBpbiBhbnlcbiAgICAgICB0aHJlYWQuICopXG4gICAgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyAoKiBbbmV3X29ic2VydmVyc10gaG9sZHMgb2JzZXJ2ZXJzIGNyZWF0ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGFcbiAgICAgICBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlXSBhcyBbQ3JlYXRlZF0gb3IgW1VubGlua2VkXS4gIEF0IHRoZSBzdGFydCBvZlxuICAgICAgIHN0YWJpbGl6YXRpb24sIHdlIGxpbmsgaW50byBbYWxsX29ic2VydmVyc10gYWxsIG9ic2VydmVycyBpbiBbbmV3X29ic2VydmVyc10gd2hvc2VcbiAgICAgICBzdGF0ZSBpcyBbQ3JlYXRlZF0gYW5kIGFkZCB0aGVtIHRvIHRoZSBbb2JzZXJ2ZXJzXSBvZiB0aGUgbm9kZSB0aGV5IGFyZSBvYnNlcnZpbmcuXG4gICAgICAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyBvYnNlcnZlcnMgdG8gYmUgY3JlYXRlZCBkdXJpbmcgc3RhYmlsaXphdGlvblxuICAgICAgIHdoaWxlIHJ1bm5pbmcgdXNlciBjb2RlIChbbWFwXSwgW2JpbmRdLCBldGMpLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoIG5vZGVzXG4gICAgICAgYmVjb21pbmcgbmVjZXNzYXJ5IGFuZCB0aGUgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbZGlzYWxsb3dlZF9vYnNlcnZlcnNdIGhvbGRzIGFsbCBvYnNlcnZlcnMgdGhhdCBoYXZlIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdFxuICAgICAgIHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGUgPSBEaXNhbGxvd2VkXS4gIEF0IHRoZSBzdGFydFxuICAgICAgIG9mIHN0YWJpbGl6YXRpb24sIHRoZXNlIGFyZSB1bmxpbmtlZCBmcm9tIFthbGxfb2JzZXJ2ZXJzXSBhbmQgdGhlaXIgc3RhdGUgaXNcbiAgICAgICBjaGFuZ2VkIHRvIFtVbmxpbmtlZF0uICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IHVzZXIgY29kZSBydW5uaW5nXG4gICAgICAgZHVyaW5nIHN0YWJpbGl6YXRpb24gdG8gY2FsbCBbZGlzYWxsb3dfZnV0dXJlX3VzZV0sIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGhcbiAgICAgICBub2RlcyBiZWNvbWluZyB1bm5lY2Vzc2FyeSBhbmQgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogV2UgZGVsYXkgYWxsIFtWYXIuc2V0XSBjYWxscyB0aGF0IGhhcHBlbiBkdXJpbmcgc3RhYmlsaXphdGlvbiBzbyB0aGF0IHRoZXkgdGFrZVxuICAgICAgIGVmZmVjdCBhZnRlciBzdGFiaWxpemF0aW9uLiAgQWxsIHZhcmlhYmxlcyBzZXQgZHVyaW5nIHN0YWJpbGl6YXRpb24gYXJlIHB1c2hlZCBvblxuICAgICAgIFtzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHJhdGhlciB0aGFuIHNldHRpbmcgdGhlbS4gIFRoZW4sIGFmdGVyIHRoZSBncmFwaCBoYXNcbiAgICAgICBzdGFiaWxpemVkLCB3ZSBkbyBhbGwgdGhlIHNldHMsIHNvIHRoYXQgdGhleSB0YWtlIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBoYXMgYWxsIG5vZGVzIHdpdGggaGFuZGxlcnMgdG8gY29uc2lkZXIgcnVubmluZyBhdCB0aGVcbiAgICAgICBlbmQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gIEF0IHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgd2UgY29uc2lkZXIgZWFjaCBub2RlXG4gICAgICAgaW4gW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgYW5kIGlmIHdlIGRlY2lkZSB0byBydW4gaXRzIG9uLXVwZGF0ZSBoYW5kbGVycyxcbiAgICAgICBwdXNoIGl0IG9uIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gIFRoZW4sIG9uY2Ugd2UndmUgY29uc2lkZXJlZCBhbGwgbm9kZXMgaW5cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCB3ZSBpdGVyYXRlIHRocm91Z2ggW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdIGFuZFxuICAgICAgIGFjdHVhbGx5IHJ1biB0aGUgaGFuZGxlcnMuXG5cbiAgICAgICBUaGVzZSB0d28gcGFzc2VzIGFyZSBlc3NlbnRpYWwgZm9yIGNvcnJlY3RuZXNzLiAgRHVyaW5nIHRoZSBmaXJzdCBwYXNzLCB3ZSBoYXZlbid0XG4gICAgICAgcnVuIGFueSB1c2VyIGhhbmRsZXJzLCBzbyB3ZSBrbm93IHRoYXQgdGhlIHN0YXRlIGlzIGV4YWN0bHkgYXMgaXQgd2FzIHdoZW5cbiAgICAgICBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgSW4gcGFydGljdWxhciwgd2Uga25vdyB0aGF0IGlmIGEgbm9kZSBpcyBuZWNlc3NhcnksIHRoZW5cbiAgICAgICBpdCBoYXMgYSBzdGFibGUgdmFsdWU7IG9uY2UgdXNlciBoYW5kbGVycyBydW4sIHdlIGRvbid0IGtub3cgdGhpcy4gIER1cmluZyB0aGVcbiAgICAgICBzZWNvbmQgcGFzcywgdXNlciBoYW5kbGVycyBjYW4gbWFrZSBjYWxscyB0byBhbnkgaW5jcmVtZW50YWwgZnVuY3Rpb24gZXhjZXB0IGZvclxuICAgICAgIFtzdGFiaWxpemVdLiAgSW4gcGFydGljdWxhciwgc29tZSBmdW5jdGlvbnMgcHVzaCBub2RlcyBvblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICBCdXQgbm8gZnVuY3Rpb25zIChleGNlcHQgZm9yIFtzdGFiaWxpemVdKSBtb2RpZnlcbiAgICAgICBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICopXG4gICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gIDsgKCogU3RhdHMuICBUaGVzZSBhcmUgYWxsIGluY3JlbWVudGVkIGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSwgYW5kIG5ldmVyIGRlY3JlbWVudGVkLiAqKVxuICAgIG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkNsb2NrLnQgPVxuICAgIHsgKCogV2UgdXNlIFt0aW1pbmdfd2hlZWxdIGZvciB0aW1lLWJhc2VkIGluY3JlbWVudGFscy4gIFtub3ddIGlzIGEgdmFyaWFibGUgaG9sZGluZ1xuICAgICAgICAgdGhlIGN1cnJlbnQgdGltZS4gIFtoYW5kbGVfZmlyZWRdIGlzIHRoZSBjbG9zdXJlIHBhc3NlZCB0b1xuICAgICAgICAgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gIEl0IGxpbmtzIGFsbCB0aGUgZmlyZWQgYWxhcm0gdmFsdWVzIGludG9cbiAgICAgICAgIFtmaXJlZF9hbGFybV92YWx1ZXNdLiAgQWZ0ZXIgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXSByZXR1cm5zLCBpdCB0aGVuXG4gICAgICAgICB3YWxrcyB0aHJvdWdoIHRoZSBsaW5rZWQgbGlzdCBhbmQgYWN0dWFsbHkgZmlyZXMgdGhlbS4gIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXNcbiAgICAgICAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uZSBpcyBub3QgYWxsb3dlZCB0byBjYWxsIFtUaW1pbmdfd2hlZWxdIGZ1bmN0aW9ucyBmcm9tIHRoZVxuICAgICAgICAgW2hhbmRsZV9maXJlZF0gdGhhdCBvbmUgcGFzc2VzIHRvIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICopXG4gICAgICB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5ub3c6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKG5vdyA6IF8gVmFyLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLmVxdWFsIG5vdy52YWx1ZSAoVGltaW5nX3doZWVsLm5vdyB0LnRpbWluZ193aGVlbCkpKSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmZpcmVkX2FsYXJtX3ZhbHVlczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJlZF9hbGFybV92YWx1ZXMgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgZmlyZWRfYWxhcm1fdmFsdWVzKSkpXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KGNoZWNrIChUaW1pbmdfd2hlZWwuaW52YXJpYW50IEFsYXJtX3ZhbHVlLmludmFyaWFudCkpKVxuICA7O1xuXG4gIGxldCBpbmNyX3N0YXRlIHQgPSBWYXIuaW5jcl9zdGF0ZSB0Lm5vd1xuZW5kXG5cbmxldCBub3cgKGNsb2NrIDogQ2xvY2sudCkgPSBjbG9jay5ub3cudmFsdWVcbmxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoIChjbG9jayA6IENsb2NrLnQpID0gVGltaW5nX3doZWVsLmxlbmd0aCBjbG9jay50aW1pbmdfd2hlZWxcbmxldCBudW1fc3RhYmlsaXplcyB0ID0gU3RhYmlsaXphdGlvbl9udW0udG9faW50IHQuc3RhYmlsaXphdGlvbl9udW1cbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxubGV0IG1heF9oZWlnaHRfc2VlbiB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X3NlZW4gdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfb2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQubmV4dF9pbl9hbGwgb2JzZXJ2ZXI7XG4gICAgZiBvYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgZGlyZWN0bHlfb2JzZXJ2ZWQgdCA9XG4gIGxldCByIDogTm9kZS5QYWNrZWQudCBsaXN0IHJlZiA9IHJlZiBbXSBpblxuICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgciA6PSBUIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyA6OiAhcik7XG4gICFyXG47O1xuXG5sZXQgc2F2ZV9kb3QgdCBvdXQgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdCBvdXQgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgc2F2ZV9kb3RfdG9fZmlsZSB0IGZpbGUgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdF90b19maWxlIGZpbGUgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mID0gTm9kZS5QYWNrZWQuaXRlcl9kZXNjZW5kYW50cyAoZGlyZWN0bHlfb2JzZXJ2ZWQgdCkgfmZcblxubW9kdWxlIFN0YXRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXhfbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgOiAoaW50ICogUGVyY2VudC50KSBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbmxldCBzdGF0cyB0ID1cbiAgbGV0IG1heF9udW1fcGFyZW50cyA9IHJlZiAoLTEpIGluXG4gIGxldCBudW1fbmVjZXNzYXJ5X25vZGVzID0gcmVmIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBpbmNyIG51bV9uZWNlc3Nhcnlfbm9kZXM7XG4gICAgbWF4X251bV9wYXJlbnRzIDo9IEludC5tYXggIW1heF9udW1fcGFyZW50cyBub2RlLm51bV9wYXJlbnRzKTtcbiAgbGV0IG1heF9udW1fcGFyZW50cyA9ICFtYXhfbnVtX3BhcmVudHMgaW5cbiAgbGV0IG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyA9IEFycmF5LmNyZWF0ZSB+bGVuOihtYXhfbnVtX3BhcmVudHMgKyAxKSAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgbGV0IG51bV9wYXJlbnRzID0gbm9kZS5udW1fcGFyZW50cyBpblxuICAgIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpIDwtIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpICsgMSk7XG4gIGxldCBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzID1cbiAgICBBcnJheS5mb2xkaSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgfmluaXQ6W10gfmY6KGZ1biBpIGFjIG51bV9ub2RlcyAtPlxuICAgICAgaWYgbnVtX25vZGVzID0gMFxuICAgICAgdGhlbiBhY1xuICAgICAgZWxzZSAoaSwgUGVyY2VudC5vZl9tdWx0IChmbG9hdCBudW1fbm9kZXMgLy4gZmxvYXQgIW51bV9uZWNlc3Nhcnlfbm9kZXMpKSA6OiBhYylcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICB7IFN0YXRzLm1heF9udW1fcGFyZW50czsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyB9XG47O1xuXG5sZXQgYW1fc3RhYmlsaXppbmcgdCA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIC0+IHRydWVcbiAgfCBOb3Rfc3RhYmlsaXppbmcgLT4gZmFsc2VcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFwiY2Fubm90IGNhbGwgYW1fc3RhYmlsaXppbmcgLS0gc3RhYmlsaXplIHByZXZpb3VzbHkgcmFpc2VkXCJcbjs7XG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiAoKVxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXppbmcgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgaXRlcl9vYnNlcnZlcnMgdCB+ZjooZnVuIChUIGludGVybmFsX29ic2VydmVyKSAtPlxuICAgICAgICAobWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+ICgpXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPlxuICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICAgXCJtZW1iZXIgb2YgYWxsX29ic2VydmVycyB3aXRoIHVuZXhwZWN0ZWQgc3RhdGVcIlxuICAgICAgICAgICAgIGludGVybmFsX29ic2VydmVyXG4gICAgICAgICAgICAgWyVzZXhwX29mOiBfIEludGVybmFsX29ic2VydmVyLnRdKTtcbiAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuaW52YXJpYW50IGlnbm9yZSBpbnRlcm5hbF9vYnNlcnZlcik7XG4gICAgICBpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZTtcbiAgICAgICAgaWYgbm90IChhbV9zdGFiaWxpemluZyB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUub2xkX3ZhbHVlX29wdCk7XG4gICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X3NlZW4gdC5hZGp1c3RfaGVpZ2h0c19oZWFwKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLm1heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgICAgPSBSZWNvbXB1dGVfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5yZWNvbXB1dGVfaGVhcCk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+c3RhdHVzOmlnbm9yZVxuICAgICAgICB+YmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JoczppZ25vcmVcbiAgICAgICAgfnN0YWJpbGl6YXRpb25fbnVtOihjaGVjayBTdGFiaWxpemF0aW9uX251bS5pbnZhcmlhbnQpXG4gICAgICAgIH5jdXJyZW50X3Njb3BlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGN1cnJlbnRfc2NvcGUgLT4gYXNzZXJ0IChwaHlzX2VxdWFsIGN1cnJlbnRfc2NvcGUgU2NvcGUudG9wKSkpXG4gICAgICAgIH5yZWNvbXB1dGVfaGVhcDooY2hlY2sgUmVjb21wdXRlX2hlYXAuaW52YXJpYW50KVxuICAgICAgICB+YWRqdXN0X2hlaWdodHNfaGVhcDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBhZGp1c3RfaGVpZ2h0c19oZWFwIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChBZGp1c3RfaGVpZ2h0c19oZWFwLmxlbmd0aCBhZGp1c3RfaGVpZ2h0c19oZWFwID0gMCk7XG4gICAgICAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5pbnZhcmlhbnQgYWRqdXN0X2hlaWdodHNfaGVhcCkpXG4gICAgICAgIH5wcm9wYWdhdGVfaW52YWxpZGl0eTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBwcm9wYWdhdGVfaW52YWxpZGl0eSAtPlxuICAgICAgICAgICAgIGFzc2VydCAoU3RhY2suaXNfZW1wdHkgcHJvcGFnYXRlX2ludmFsaWRpdHkpKSlcbiAgICAgICAgfm51bV9hY3RpdmVfb2JzZXJ2ZXJzOlxuICAgICAgICAgIChjaGVjayAoZnVuIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIC0+IGFzc2VydCAobnVtX2FjdGl2ZV9vYnNlcnZlcnMgPj0gMCkpKVxuICAgICAgICB+YWxsX29ic2VydmVyczppZ25vcmVcbiAgICAgICAgfmZpbmFsaXplZF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5uZXdfb2JzZXJ2ZXJzOlxuICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgIChTdGFjay5pbnZhcmlhbnQgKGZ1biBwYWNrZWQgLT5cbiAgICAgICAgICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQuaW52YXJpYW50IHBhY2tlZDtcbiAgICAgICAgICAgICAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgICAgICAgICAgICAgKCogV2hlbiBhbiBvYnNlcnZlciBpcyBhZGRlZCB0byBbbmV3X29ic2VydmVyc10sIGl0IGhhcyBbc3RhdGUgPSBDcmVhdGVkXS5cbiAgICAgICAgICAgICAgICAgICBUaGUgb25seSBwb3NzaWJsZSB0cmFuc2l0aW9ucyBmcm9tIHRoZXJlIGFyZSB0byBbVW5saW5rZWRdIG9yIHRvXG4gICAgICAgICAgICAgICAgICAgW0luX3VzZV0sIHdoaWNoIGFsc28gcmVtb3ZlcyBpdCBmcm9tIFtuZXdfb2JzZXJ2ZXJzXSwgbmV2ZXIgdG8gYmUgYWRkZWRcbiAgICAgICAgICAgICAgICAgICBhZ2Fpbi4gIFRodXMgaXQgaXMgaW1wb3NzaWJsZSBmb3IgYW4gb2JzZXJ2ZXIgaW4gW25ld19vYnNlcnZlcnNdIHRvIGJlXG4gICAgICAgICAgICAgICAgICAgW0luX3VzZV0gb3IgW0Rpc2FsbG93ZWRdLiAqKVxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfmRpc2FsbG93ZWRfb2JzZXJ2ZXJzOlxuICAgICAgICAgIChjaGVja1xuICAgICAgICAgICAgIChTdGFjay5pbnZhcmlhbnQgKGZ1biBwYWNrZWQgLT5cbiAgICAgICAgICAgICAgICBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQuaW52YXJpYW50IHBhY2tlZDtcbiAgICAgICAgICAgICAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gcGFja2VkIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IEluX3VzZSB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgICB+c2V0X2R1cmluZ19zdGFiaWxpemF0aW9uOlxuICAgICAgICAgIChjaGVjayAoZnVuIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAtPlxuICAgICAgICAgICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBOb3Rfc3RhYmlsaXppbmcgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoU3RhY2suaXNfZW1wdHkgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKVxuICAgICAgICAgICAgIHwgU3RhYmlsaXppbmcgLT5cbiAgICAgICAgICAgICAgIFN0YWNrLmludmFyaWFudFxuICAgICAgICAgICAgICAgICAoZnVuIChWYXIuUGFja2VkLlQgdmFyKSAtPlxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfc29tZSB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSlcbiAgICAgICAgICAgICAgICAgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uKSlcbiAgICAgICAgfmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOihjaGVjayAoU3RhY2suaW52YXJpYW50IE5vZGUuUGFja2VkLmludmFyaWFudCkpXG4gICAgICAgIH5ydW5fb25fdXBkYXRlX2hhbmRsZXJzOihjaGVjayAoU3RhY2suaW52YXJpYW50IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMuaW52YXJpYW50KSlcbiAgICAgICAgfm9ubHlfaW5fZGVidWc6KGNoZWNrIE9ubHlfaW5fZGVidWcuaW52YXJpYW50KVxuICAgICAgICB+d2Vha19oYXNodGJsczppZ25vcmVcbiAgICAgICAgfmtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2U6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeTppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY2hhbmdlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19jcmVhdGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2ludmFsaWRhdGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodDppZ25vcmVcbiAgICAgICAgfm51bV92YXJfc2V0czppZ25vcmUpXG47O1xuXG5sZXQgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlciA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBOb3Rfc3RhYmlsaXppbmcgLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyAtPlxuICAgIGlmIG5vdCBhbGxvd19pbl91cGRhdGVfaGFuZGxlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIGR1cmluZyBvbi11cGRhdGUgaGFuZGxlcnNcIiBuYW1lKVxuICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgWyVzZXhwX29mOiBCYWNrdHJhY2UudF0pXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIiBuYW1lKVxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIGR1cmluZyBzdGFiaWxpemF0aW9uXCIgbmFtZSlcbiAgICAgIGJhY2t0cmFjZVxuICAgICAgWyVzZXhwX29mOiBCYWNrdHJhY2UudF1cbjs7XG5cbmxldCBzZXRfaGVpZ2h0IChub2RlIDogXyBOb2RlLnQpIGhlaWdodCA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBBZGp1c3RfaGVpZ2h0c19oZWFwLnNldF9oZWlnaHQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwIG5vZGUgaGVpZ2h0XG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IGhlaWdodCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInNldF9tYXhfaGVpZ2h0X2FsbG93ZWRcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcCBoZWlnaHQ7XG4gIFJlY29tcHV0ZV9oZWFwLnNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdC5yZWNvbXB1dGVfaGVhcCBoZWlnaHRcbjs7XG5cbmxldCBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGlmIG5vdCBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXG4gIHRoZW4gKFxuICAgIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICAgIG5vZGUuaXNfaW5faGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gPC0gdHJ1ZTtcbiAgICBTdGFjay5wdXNoIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gKFQgbm9kZSkpXG47O1xuXG5sZXQgcmVjIHJlbW92ZV9jaGlsZHJlbiA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBwYXJlbnQgLT5cbiAgTm9kZS5pdGVyaV9jaGlsZHJlbiBwYXJlbnQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICByZW1vdmVfY2hpbGQgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4KVxuXG5hbmQgcmVtb3ZlX2NoaWxkIDogdHlwZSBhIGIuIGNoaWxkOmIgTm9kZS50IC0+IHBhcmVudDphIE5vZGUudCAtPiBjaGlsZF9pbmRleDppbnQgLT4gdW5pdCA9XG4gIGZ1biB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggLT5cbiAgTm9kZS5yZW1vdmVfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgY2hlY2tfaWZfdW5uZWNlc3NhcnkgY2hpbGRcblxuYW5kIGNoZWNrX2lmX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT4gaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKSB0aGVuIGJlY2FtZV91bm5lY2Vzc2FyeSBub2RlXG5cbmFuZCBiZWNhbWVfdW5uZWNlc3NhcnkgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgdC5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDwtIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSArIDE7XG4gIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICBub2RlLmhlaWdodCA8LSAtMTtcbiAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+IFVub3JkZXJlZF9hcnJheV9mb2xkLmZvcmNlX2Z1bGxfY29tcHV0ZSB1XG4gICB8IEV4cGVydCBwIC0+IEV4cGVydC5vYnNlcnZhYmlsaXR5X2NoYW5nZSBwIH5pc19ub3dfb2JzZXJ2YWJsZTpmYWxzZVxuICAgfCBfIC0+ICgpKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKSk7XG4gIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLnJlbW92ZSB0LnJlY29tcHV0ZV9oZWFwIG5vZGVcbjs7XG5cbmxldCByZW1vdmVfYWxhcm0gKGNsb2NrIDogQ2xvY2sudCkgYWxhcm0gPVxuICBpZiBUaW1pbmdfd2hlZWwubWVtIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuICB0aGVuIFRpbWluZ193aGVlbC5yZW1vdmUgY2xvY2sudGltaW5nX3doZWVsIGFsYXJtXG47O1xuXG4oKiBBbiBpbnZhbGlkIG5vZGUgaXMgbm9kZSB3aG9zZSBraW5kIGlzIFtJbnZhbGlkXS4gIEEgbm9kZSdzIGtpbmQgaXMgc2V0IHRvIFtJbnZhbGlkXVxuICAgd2hlbiB0aGUgbGhzIG9mIGl0cyBzY29wZSBjaGFuZ2VzLCBvciBvbmUgaWYgaXRzIGNoaWxkcmVuIHByb3BhZ2F0ZSB0aGUgaW52YWxpZGl0eVxuICAgdXB3YXJkIChzZWUgW05vZGUuc2hvdWxkX2JlX2ludmFsaWRhdGVkXSB0byBzZWUgaW4gd2hpY2ggY2FzZSBpbnZhbGlkaXR5IHByb3BhZ2F0aW9uXG4gICBzdG9wcykuICBJbnZhbGlkYXRpbmcgYSBub2RlIGRpc2Nvbm5lY3RzIGl0IGZyb20gaXRzIGNoaWxkcmVuLCB3aGljaCBtZWFuczpcblxuICAgMS4gYW4gaW52YWxpZCBub2RlIGNhbm5vdCBlbmQgdXAgb24gdGhlIHNjaGVkdWxlciAoaWYgaXQgaXMgb24gdGhlIHNjaGVkdWxlciB3aGVuXG4gICBpdCBpcyBpbnZhbGlkYXRlZCwgaXQgaXMgcmVtb3ZlZClcbiAgIDIuIGFuIGludmFsaWQgbm9kZSBkb2Vzbid0IG1ha2UgaXRzIGNoaWxkcmVuIG5lY2Vzc2FyeSBhbnltb3JlLlxuXG4gICBJbnZhbGlkIG5vZGVzIHVzdWFsbHkgaGF2ZSBubyBwYXJlbnRzLCBiZWNhdXNlIHRoZSB1cHdhcmQgaW52YWxpZGl0eSBwcm9wYWdhdGlvbiBtZWFuc1xuICAgdGhhdCB0aGVpciBwYXJlbnRzIHdpbGwgdGhlbXNlbHZlcyBiZWNvbWUgaW52YWxpZCBhbmQgZGlzY29ubmVjdCBmcm9tIHRoZWlyIGNoaWxkcmVuLlxuICAgSG93ZXZlciwgW2lmXSwgW2pvaW5dIG9yIFtiaW5kXSBhcmUgbm90IGludmFsaWRhdGVkIGJ5IHRoZSB1cHdhcmQgcHJvcGFnYXRpb24sIHNvIGFuXG4gICBpbnZhbGlkIG5vZGUgY2FuIHN0aWxsIGhhdmUgcGFyZW50cy4gIEludmFsaWQgbm9kZXMgY2FuIGJlIG5lY2Vzc2FyeSwgaW4gdGhlIGNhc2Ugd2hlcmVcbiAgIHRoZXkgaGF2ZSBwYXJlbnRzLCBhbmQgYWxzbyB3aGVuIHRoZXkgYXJlIG9ic2VydmVkLlxuXG4gICBUaGUgdXB3YXJkIHByb3BhZ2F0aW9uIG9mIGludmFsaWRpdHkgaGFwcGVucyBib3RoIHdoZW4gYSBub2RlIGJlY29tZXMgaW52YWxpZCwgYW5kIHdoZW5cbiAgIHRyeWluZyB0byBhZGQgYW4gZWRnZSBmcm9tIGFuIGludmFsaWQgY2hpbGQgbm9kZSB0byBhbm90aGVyIG5vZGUuICBCZWNhdXNlIGludmFsaWRpdHlcbiAgIGlzIG9ubHkgcHJvcGFnYXRlZCB1cHdhcmQsIGFuZCBiZWNhdXNlIHRoZSByaHMgb2YgYSBiaW5kIGlzIGludmFsaWRhdGVkIGJlZm9yZSBpdFxuICAgZXhlY3V0ZXMsIGEgbm9kZSBjYW5ub3QgYmUgYm90aCBjb21wdXRlZCBhbmQgaW52YWxpZGF0ZWQgaW4gdGhlIHNhbWUgc3RhYmlsaXphdGlvbi5cblxuICAgV2hlbiBpbnZhbGlkYXRpbmcsIHdlIGNhbid0IGFzc3VtZSBtdWNoIGFib3V0IHRoZSBub2RlcyB3ZSB2aXNpdC4gIFdlIGNhbm5vdCBhc3N1bWVcbiAgIHRoYXQgbm9kZXMgYXJlIHZhbGlkICh0aGUgcmhzIGNhbiBjb250YWluIHByZXZpb3VzbHkgaW52YWxpZGF0ZWQgbm9kZXMpLCBvciB0aGF0IG5vZGVzXG4gICBhcmUgdW5uZWNlc3NhcnkgKG5vZGVzIGNhbiBiZSBtYWRlIG5lY2Vzc2FyeSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlaXIgY29udGFpbmluZ1xuICAgYmluZHMpLiAqKVxuXG5sZXQgcmVjIGludmFsaWRhdGVfbm9kZSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+XG4gIGlmIE5vZGUuaXNfdmFsaWQgbm9kZVxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgICBub2RlLnZhbHVlX29wdCA8LSBVb3B0Lm5vbmU7XG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgIG5vZGUuY2hhbmdlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIG5vZGUucmVjb21wdXRlZF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIHQubnVtX25vZGVzX2ludmFsaWRhdGVkIDwtIHQubnVtX25vZGVzX2ludmFsaWRhdGVkICsgMTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgdGhlbiAoXG4gICAgICByZW1vdmVfY2hpbGRyZW4gbm9kZTtcbiAgICAgICgqIFRoZSBub2RlIGRvZXNuJ3QgaGF2ZSBjaGlsZHJlbiBhbnltb3JlLCBzbyB3ZSBjYW4gbG93ZXIgaXRzIGhlaWdodCBhcyBtdWNoIGFzXG4gICAgICAgICBwb3NzaWJsZSwgdG8gb25lIGdyZWF0ZXIgdGhhbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBBbHNvLCBiZWNhdXNlIHdlXG4gICAgICAgICBhcmUgbG93ZXJpbmcgdGhlIGhlaWdodCwgd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QgYW55IG9mIGl0cyBhbmNlc3RvcnMnIGhlaWdodHMuXG4gICAgICAgICBXZSBjb3VsZCBsZWF2ZSB0aGUgaGVpZ2h0IGFsb25lLCBidXQgd2UgbWF5IGFzIHdlbGwgbG93ZXIgaXQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUgdG8gYXZvaWQgbWFraW5nIHRoZSBoZWlnaHRzIG9mIGFueSBmdXR1cmUgYW5jZXN0b3JzIHVubmVjZXNzYXJpbHlcbiAgICAgICAgIGxhcmdlLiAqKVxuICAgICAgbm9kZS5oZWlnaHQgPC0gU2NvcGUuaGVpZ2h0IG5vZGUuY3JlYXRlZF9pbiArIDEpO1xuICAgICgqIFdlIGRvbid0IHNldCBbbm9kZS5jcmVhdGVkX2luXSBvciBbbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZV07IHdlIGxlYXZlIFtub2RlXVxuICAgICAgIGluIHRoZSBzY29wZSBpdCB3YXMgY3JlYXRlZCBpbi4gIElmIHRoYXQgc2NvcGUgaXMgZXZlciBpbnZhbGlkYXRlZCwgdGhlbiB0aGF0XG4gICAgICAgd2lsbCBjbGVhciBbbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZV0gKilcbiAgICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICAgfCBBdCBhdCAtPiByZW1vdmVfYWxhcm0gYXQuY2xvY2sgYXQuYWxhcm1cbiAgICAgfCBBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzIC0+IHJlbW92ZV9hbGFybSBhdF9pbnRlcnZhbHMuY2xvY2sgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgIHwgQmluZF9tYWluIGJpbmQgLT4gaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICB8IFN0ZXBfZnVuY3Rpb24geyBhbGFybTsgY2xvY2s7IF8gfSAtPiByZW1vdmVfYWxhcm0gY2xvY2sgYWxhcm1cbiAgICAgfCBfIC0+ICgpKTtcbiAgICBOb2RlLnNldF9raW5kIG5vZGUgSW52YWxpZDtcbiAgICAoKiBJZiB3ZSBjYWxsZWQgW3Byb3BhZ2F0ZV9pbnZhbGlkaXR5XSByaWdodCBhd2F5IG9uIHRoZSBwYXJlbnRzLCB3ZSB3b3VsZCBnZXQgaW50b1xuICAgICAgIHRyb3VibGUuICBUaGUgcGFyZW50IHdvdWxkIGRpc2Nvbm5lY3QgaXRzZWxmIGZyb20gdGhlIGN1cnJlbnQgbm9kZSwgdGh1c1xuICAgICAgIG1vZGlmeWluZyB0aGUgbGlzdCBvZiBwYXJlbnRzIHdlIGl0ZXJhdGUgb24uICBFdmVuIGlmIHdlIG1hZGUgYSBzcGVjaWFsIGNhc2UsIGl0XG4gICAgICAgc3RpbGwgd291bGRuJ3QgYmUgZW5vdWdoIHRvIGhhbmRsZSBvdGhlciBjYXNlcyB3aGVyZSB0aGUgbGlzdCBvZiBwYXJlbnRzIGlzXG4gICAgICAgbW9kaWZpZWQgKGUuZy4gd2hlbiBbbGhzXSBpcyBpbnZhbGlkYXRlZCBpbiB0aGUgZXhhbXBsZSBpbiB0aGUgY29tbWVudCBhYm91dFxuICAgICAgIFtjYW5fcmVjb21wdXRlX25vd10gZmFyIGJlbG93KS4gKilcbiAgICBmb3IgaW5kZXggPSAwIHRvIG5vZGUubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICBTdGFjay5wdXNoIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgKE5vZGUuZ2V0X3BhcmVudCBub2RlIH5pbmRleClcbiAgICBkb25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLnJlbW92ZSB0LnJlY29tcHV0ZV9oZWFwIG5vZGUpXG5cbmFuZCBpbnZhbGlkYXRlX25vZGVzX2NyZWF0ZWRfb25fcmhzIG5vZGUgPVxuICBsZXQgciA9IHJlZiBub2RlIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gVW9wdC5ub25lO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlX29uX3Joc1xuICBkb25lXG47O1xuXG4oKiBXaGVuIFtub3QgdC5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXSBhbmQgYSBiaW5kJ3MgbGhzIGNoYW5nZXMsIHdlIG1vdmVcbiAgIG5vZGVzIGNyZWF0ZWQgb24gdGhlIGJpbmQncyByaHMgdXAgdG8gaXRzIHBhcmVudCBiaW5kLCBhcyBvcHBvc2VkIHRvIFtTY29wZS5Ub3BdLiAgVGhpc1xuICAgbWFpbnRhaW5zIHRoZWlyIGRlcGVuZGVuY2Ugb24gdmFsaWQgYmluZCBsZWZ0LWhhbmQgc2lkZXMsIGFuZCBrZWVwcyB0aGVtIGhpZ2hlciBpbiB0aGVcbiAgIGdyYXBoLiAgVGhpcyBpbiB0dXJuIG1lYW5zIHRoYXQgd2Ugd2lsbCBjb250aW51ZSB0byBjb21wdXRlIHRob3NlIG5vZGVzIGFmdGVyIHRoZVxuICAgcGFyZW50IGJpbmQncyBsaHMsIHdoaWNoIGdpdmVzIHRoZW0gbW9yZSBvZiBhIGNoYW5jZSB0byBiZWNvbWUgdW5uZWNlc3NhcnkgYW5kIG5vdCBiZVxuICAgY29tcHV0ZWQgc2hvdWxkIHRoZSBwYXJlbnQgYmluZCdzIGxocyBjaGFuZ2UuICopXG5sZXQgcmVzY29wZV9ub2Rlc19jcmVhdGVkX29uX3JocyBfdCAoZmlyc3Rfbm9kZV9vbl9yaHMgOiBOb2RlLlBhY2tlZC50IFVvcHQudCkgfm5ld19zY29wZSA9XG4gIGxldCByID0gcmVmIGZpcnN0X25vZGVfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGUgPC0gVW9wdC5ub25lO1xuICAgIG5vZGVfb25fcmhzLmNyZWF0ZWRfaW4gPC0gbmV3X3Njb3BlO1xuICAgIFNjb3BlLmFkZF9ub2RlIG5ld19zY29wZSBub2RlX29uX3Joc1xuICBkb25lXG47O1xuXG5sZXQgcHJvcGFnYXRlX2ludmFsaWRpdHkgdCA9XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5wcm9wYWdhdGVfaW52YWxpZGl0eSkgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQucHJvcGFnYXRlX2ludmFsaWRpdHkgaW5cbiAgICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgICB0aGVuXG4gICAgICBpZiBOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZCBub2RlXG4gICAgICB0aGVuIGludmFsaWRhdGVfbm9kZSBub2RlXG4gICAgICBlbHNlIChcbiAgICAgICAgKCogW05vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZV0gaXMgdHJ1ZSBiZWNhdXNlXG4gICAgICAgICAgIC0gbm9kZSBpcyBuZWNlc3NhcnkuIFRoaXMgaXMgYmVjYXVzZSBjaGlsZHJlbiBjYW4gb25seSBwb2ludCB0byBuZWNlc3NhcnlcbiAgICAgICAgICAgICBwYXJlbnRzXG4gICAgICAgICAgIC0gbm9kZSBpcyBzdGFsZS4gVGhpcyBpcyBiZWNhdXNlOiBGb3IgYmluZCwgaWYsIGpvaW4sIHRoaXMgaXMgdHJ1ZSBiZWNhdXNlXG4gICAgICAgICAgIC0gZWl0aGVyIHRoZSBpbnZhbGlkYXRpb24gaXMgY2F1c2VkIGJ5IHRoZSBsaHMgY2hhbmdpbmcgKGluIHdoaWNoIGNhc2UgdGhlXG4gICAgICAgICAgICAgbGhzLWNoYW5nZSBub2RlIGJlaW5nIG5ld2VyIG1ha2VzIHVzIHN0YWxlKS5cbiAgICAgICAgICAgLSBvciBhIGNoaWxkIGJlY2FtZSBpbnZhbGlkIHRoaXMgc3RhYmlsaXphdGlvbiBjeWNsZSwgaW4gd2hpY2ggY2FzZSBpdCBoYXNcbiAgICAgICAgICAgICB0LmNoYW5nZWRfYXQgb2YgW3Quc3RhYmlsaXphdGlvbl9udW1dLCBhbmQgc28gW25vZGVdIGlzIHN0YWxlXG4gICAgICAgICAgIC0gb3IgW25vZGVdIGp1c3QgYmVjYW1lIG5lY2Vzc2FyeSBhbmQgdHJpZWQgY29ubmVjdGluZyB0byBhbiBhbHJlYWR5IGludmFsaWRcbiAgICAgICAgICAgICBjaGlsZC4gSW4gdGhhdCBjYXNlLCBbY2hpbGQuY2hhbmdlZF9hdCA+IG5vZGUucmVjb21wdXRlZF9hdF0gZm9yIHRoYXQgY2hpbGQsXG4gICAgICAgICAgICAgYmVjYXVzZSBpZiB3ZSBoYWQgYmVlbiByZWNvbXB1dGVkIHdoZW4gdGhhdCBjaGlsZCBjaGFuZ2VkLCB3ZSB3b3VsZCBoYXZlIGJlZW5cbiAgICAgICAgICAgICBtYWRlIGludmFsaWQgYmFjayB0aGVuLiAgRm9yIGV4cGVydCBub2RlcywgdGhlIGFyZ3VtZW50IGlzIHRoZSBzYW1lLCBleGNlcHRcbiAgICAgICAgICAgICB0aGF0IGluc3RlYWQgb2YgbGhzLWNoYW5nZSBub2RlcyBtYWtlIHRoZSBleHBlcnQgbm9kZXMgc3RhbGUsIGl0J3MgbWFkZSBzdGFsZVxuICAgICAgICAgICAgIGV4cGxpY2l0ZWx5IHdoZW4gYWRkaW5nIG9yIHJlbW92aW5nIGNoaWxkcmVuLiAqKVxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKTtcbiAgICAgICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgICAgICB8IEV4cGVydCBleHBlcnQgLT5cbiAgICAgICAgICAgKCogSWYgbXVsdGlwbGUgY2hpbGRyZW4gYXJlIGludmFsaWQsIHRoZXkgd2lsbCBwdXNoIHVzIGFzIG1hbnkgdGltZXMgb24gdGhlXG4gICAgICAgICAgICAgIHByb3BhZ2F0aW9uIHN0YWNrLCBzbyB3ZSBjb3VudCB0aGVtIHJpZ2h0LiAqKVxuICAgICAgICAgICBFeHBlcnQuaW5jcl9pbnZhbGlkX2NoaWxkcmVuIGV4cGVydFxuICAgICAgICAgfCBraW5kIC0+XG4gICAgICAgICAgIGlmIGRlYnVnXG4gICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIHwgQmluZF9tYWluIF8gfCBJZl90aGVuX2Vsc2UgXyB8IEpvaW5fbWFpbiBfIC0+ICgpXG4gICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgZmFsc2UgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBhcmUgbmV2ZXIgcHVzaGVkIG9uIHRoZSBzdGFjayAqKSkpO1xuICAgICAgICAoKiBXZSBkbyBub3QgY2hlY2sgW05vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZV0gaGVyZSwgYmVjYXVzZSBpdCBzaG91bGQgYmVcbiAgICAgICAgICAgdHJ1ZSwgYW5kIGJlY2F1c2UgY29tcHV0aW5nIGl0IHRha2VzIE8obnVtYmVyIG9mIGNoaWxkcmVuKSwgbm9kZSBjYW4gYmUgcHVzaGVkXG4gICAgICAgICAgIG9uIHRoZSBzdGFjayBvbmNlIHBlciBjaGlsZCwgYW5kIGV4cGVydCBub2RlcyBjYW4gaGF2ZSBsb3RzIG9mIGNoaWxkcmVuLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICBkb25lXG47O1xuXG4oKiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIHQgfmNoaWxkIH5wYXJlbnRdIGFkZHMgW3BhcmVudF0gYXMgYSBwYXJlbnQgb2ZcbiAgIFtjaGlsZF0sIGFuZCBtYWtlcyBbY2hpbGRdIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIG5lY2Vzc2FyeSwgZW5zdXJpbmcgdGhlaXIgaGVpZ2h0c1xuICAgYXJlIGFjY3VyYXRlLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIGFib3V0IHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIFtjaGlsZF0gYW5kIFtwYXJlbnRdXG4gICB0aG91Z2guICopXG5sZXQgcmVjIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIE5vZGUudCAtPiBwYXJlbnQ6YiBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQgaW5cbiAgTm9kZS5hZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIGNoaWxkKSB0aGVuIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoVCBwYXJlbnQpO1xuICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgZSB+Y2hpbGRfaW5kZXhcbiAgfCBfIC0+ICgpXG5cbmFuZCBiZWNhbWVfbmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgKCogW1Njb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW5dIGlzIHRydWUgKGFzc3VtaW5nIHRoZSBzY29wZSBpdHNlbGYgaXMgdmFsaWQpXG4gICAgIGJlY2F1c2UgW05vZGUuaXRlcl9jaGlsZHJlbl0gYmVsb3cgZmlyc3QgdmlzaXRzIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmQgbm9kZXMgYW5kXG4gICAgIHRoZW4gdGhlIHJocy4gKilcbiAgaWYgTm9kZS5pc192YWxpZCBub2RlICYmIG5vdCAoU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbilcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUcnlpbmcgdG8gbWFrZSBhIG5vZGUgbmVjZXNzYXJ5IHdob3NlIGRlZmluaW5nIGJpbmQgaXMgbm90IG5lY2Vzc2FyeVwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSArIDE7XG4gIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAoKiBTaW5jZSBbbm9kZV0gYmVjYW1lIG5lY2Vzc2FyeSwgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50LCB3ZSBuZWVkIHRvOlxuXG4gICAgIC0gYWRkIHBhcmVudCBwb2ludGVycyB0byBbbm9kZV0gZnJvbSBpdHMgY2hpbGRyZW4uXG4gICAgIC0gc2V0IFtub2RlXSdzIGhlaWdodC5cbiAgICAgLSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcCwgaWYgbmVjZXNzYXJ5LiAqKVxuICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgTm9kZS5pdGVyaV9jaGlsZHJlbiBub2RlIH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4O1xuICAgICgqIE5vdyB0aGF0IGNoaWxkIGlzIG5lY2Vzc2FyeSwgaXQgc2hvdWxkIGhhdmUgYSB2YWxpZCBoZWlnaHQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLmhlaWdodCA+PSAwKTtcbiAgICBpZiBjaGlsZC5oZWlnaHQgPj0gbm9kZS5oZWlnaHQgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgKGNoaWxkLmhlaWdodCArIDEpKTtcbiAgKCogTm93IHRoYXQgdGhlIGhlaWdodCBpcyBjb3JyZWN0LCBtYXliZSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcC4gIFtub2RlXVxuICAgICBqdXN0IGJlY2FtZSBuZWNlc3NhcnksIHNvIGl0IGNhbid0IGhhdmUgYmVlbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBTaW5jZSBbbm9kZV1cbiAgICAgaXMgbmVjZXNzYXJ5LCB3ZSBzaG91bGQgYWRkIGl0IHRvIHRoZSByZWNvbXB1dGUgaGVhcCBpZmYgaXQgaXMgc3RhbGUuICopXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSk7XG4gIGlmIE5vZGUuaXNfc3RhbGUgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOnRydWVcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmVjYW1lX25lY2Vzc2FyeSBub2RlID1cbiAgYmVjYW1lX25lY2Vzc2FyeSBub2RlO1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSBub2RlLnN0YXRlXG47O1xuXG5sZXQgYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBwYXJlbnQuc3RhdGUgaW5cbiAgKCogSW4gdGhlIGNhc2Ugd2hlbiB0aGUgZWRnZSBiZWluZyBhZGRlZCBjcmVhdGVzIGEgY3ljbGUsIGl0IGlzIHBvc3NpYmxlIGZvciB0aGVcbiAgICAgcmVjdXJzaW9uIGluIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNdIHRvIHJlYWNoIFtwYXJlbnRdIGFzIGEgZGVzY2VuZGFudFxuICAgICBvZiBbY2hpbGRdLiAgSW4gdGhhdCBjYXNlLCB0aGUgcmVjdXJzaW9uIHRlcm1pbmF0ZXMsIGJlY2F1c2UgW05vZGUuaXNfbmVjZXNzYXJ5XG4gICAgIHBhcmVudF0uICBXZSB0aGVuIHJldHVybiBoZXJlIGFuZCBzdWJzZXF1ZW50bHkgZGV0ZWN0IHRoZSBjeWNsZSBpblxuICAgICBbYWRqdXN0X2hlaWdodHNdLiAqKVxuICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAoKiBXZSBhZGp1c3QgaGVpZ2h0cyBzbyB0aGF0IHdlIGVuc3VyZSB0aGVyZSBhcmUgbm8gY3ljbGVzIGJlZm9yZSBjYWxsaW5nXG4gICAgIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0uICopXG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW5cbiAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmFkanVzdF9oZWlnaHRzXG4gICAgICB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgIHQucmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZFxuICAgICAgfnBhcmVudDtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdDtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICgqIHdlIG9ubHkgYWRkIG5lY2Vzc2FyeSBwYXJlbnRzICopXG4gIGlmIChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSlcbiAgJiYgKFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgcGFyZW50LnJlY29tcHV0ZWRfYXRcbiAgICAgIHx8IE5vZGUuZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudClcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbjs7XG5cbmxldCBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mID1cbiAgbGV0IHNhdmVkID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIHQuY3VycmVudF9zY29wZSA8LSBzY29wZTtcbiAgdHJ5XG4gICAgbGV0IHYgPSBmICgpIGluXG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHZcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGlmIG5vdCAoU2NvcGUuaXNfdmFsaWQgc2NvcGUpXG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHJ1biB3aXRoaW4gYW4gaW52YWxpZCBzY29wZVwiIHQgWyVzZXhwX29mOiB0XTtcbiAgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZlxuOztcblxubGV0IGNoYW5nZV9jaGlsZFxuICA6IHR5cGUgYSBiLlxuICAgIHBhcmVudDphIE5vZGUudFxuICAgIC0+IG9sZF9jaGlsZDpiIE5vZGUudCBVb3B0LnRcbiAgICAtPiBuZXdfY2hpbGQ6YiBOb2RlLnRcbiAgICAtPiBjaGlsZF9pbmRleDppbnRcbiAgICAtPiB1bml0XG4gID1cbiAgZnVuIH5wYXJlbnQgfm9sZF9jaGlsZCB+bmV3X2NoaWxkIH5jaGlsZF9pbmRleCAtPlxuICBpZiBVb3B0LmlzX25vbmUgb2xkX2NoaWxkXG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4XG4gIGVsc2UgKFxuICAgIGxldCBvbGRfY2hpbGQgPSBVb3B0LnVuc2FmZV92YWx1ZSBvbGRfY2hpbGQgaW5cbiAgICBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX2NoaWxkIG5ld19jaGlsZClcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIHJlbW92ZSBbb2xkX2NoaWxkXSBiZWZvcmUgYWRkaW5nIFtuZXdfY2hpbGRdLCBiZWNhdXNlIHRoZXkgc2hhcmUgdGhlIHNhbWVcbiAgICAgICAgIGNoaWxkIGluZGV4LiAqKVxuICAgICAgTm9kZS5yZW1vdmVfcGFyZW50IH5jaGlsZDpvbGRfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICAoKiBXZSBmb3JjZSBbb2xkX2NoaWxkXSB0byB0ZW1wb3JhcmlseSBiZSBuZWNlc3Nhcnkgc28gdGhhdCBbYWRkX3BhcmVudF0gY2FuJ3RcbiAgICAgICAgIG1pc3Rha2VubHkgdGhpbmsgaXQgaXMgdW5uZWNlc3NhcnkgYW5kIHRyYW5zaXRpb24gaXQgdG8gbmVjZXNzYXJ5ICh3aGljaCB3b3VsZFxuICAgICAgICAgYWRkIGR1cGxpY2F0ZSBlZGdlcyBhbmQgYnJlYWsgdGhpbmdzIGhvcnJpYmx5KS4gKilcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gdHJ1ZTtcbiAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gZmFsc2U7XG4gICAgICAoKiBXZSBbY2hlY2tfaWZfdW5uZWNlc3NhcnldIGFmdGVyIFthZGRfcGFyZW50XSwgc28gdGhhdCB3ZSBkb24ndCB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICB0cmFuc2l0aW9uIG5vZGVzIGZyb20gbmVjZXNzYXJ5IHRvIHVubmVjZXNzYXJ5IGFuZCB0aGVuIGJhY2sgYWdhaW4uICopXG4gICAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBvbGRfY2hpbGQpKVxuOztcblxubGV0IGFkZF9hbGFybSBjbG9jayB+YXQgYWxhcm1fdmFsdWUgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gIFRpbWluZ193aGVlbC5hZGQgY2xvY2sudGltaW5nX3doZWVsIH5hdCBhbGFybV92YWx1ZVxuOztcblxubGV0IHJlYyByZWNvbXB1dGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gU29tZSAoVCBub2RlKTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgdC5udW1fbm9kZXNfcmVjb21wdXRlZCA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkICsgMTtcbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChBcnJheV9mb2xkLmNvbXB1dGUgYXJyYXlfZm9sZClcbiAgfCBBdCB7IGF0OyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYW4gW0F0XSBub2RlIGFmdGVyIFthdF0uICBbYWR2YW5jZV9jbG9ja10gd2FzXG4gICAgICAgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtDb25zdF0gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIEJlZm9yZVxuICB8IEF0X2ludGVydmFscyBfIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9saHNfY2hhbmdlXG4gICAgICAoeyBtYWluXG4gICAgICAgOyBmXG4gICAgICAgOyBsaHNcbiAgICAgICA7IHJoc19zY29wZVxuICAgICAgIDsgcmhzID0gb2xkX3Joc1xuICAgICAgIDsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzID0gb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgIDsgX1xuICAgICAgIH0gYXMgYmluZCkgLT5cbiAgICAoKiBXZSBjbGVhciBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBzbyBpdCB3aWxsIGhvbGQganVzdCB0aGUgbm9kZXMgY3JlYXRlZCBieVxuICAgICAgIHRoaXMgY2FsbCB0byBbZl0uICopXG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5ub25lO1xuICAgIGxldCByaHMgPSBydW5fd2l0aF9zY29wZSB0IHJoc19zY29wZSB+ZjooZnVuICgpIC0+IGYgKE5vZGUudmFsdWVfZXhuIGxocykpIGluXG4gICAgYmluZC5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBBbnRpY2lwYXRlIHdoYXQgW21heWJlX2NoYW5nZV92YWx1ZV0gd2lsbCBkbywgdG8gbWFrZSBzdXJlIEJpbmRfbWFpbiBpcyBzdGFsZVxuICAgICAgIHJpZ2h0IGF3YXkuIFRoaXMgd2F5LCBpZiB0aGUgbmV3IGNoaWxkIGlzIGludmFsaWQsIHdlJ2xsIHNhdGlzZnkgdGhlIGludmFyaWFudFxuICAgICAgIHNheWluZyB0aGF0IFtuZWVkc190b19iZV9jb21wdXRlZCBiaW5kX21haW5dIGluIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuYmluZF9yaHNfY2hpbGRfaW5kZXg7XG4gICAgaWYgVW9wdC5pc19zb21lIG9sZF9yaHNcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGludmFsaWRhdGUgYWZ0ZXIgW2NoYW5nZV9jaGlsZF0sIGJlY2F1c2UgaW52YWxpZGF0aW9uIGNoYW5nZXMgdGhlIFtraW5kXSBvZlxuICAgICAgICAgbm9kZXMgdG8gW0ludmFsaWRdLCB3aGljaCBtZWFucyB0aGF0IHdlIGNhbiBubyBsb25nZXIgdmlzaXQgdGhlaXIgY2hpbGRyZW4uXG4gICAgICAgICBBbHNvLCB0aGUgW29sZF9yaHNdIG5vZGVzIGFyZSB0eXBpY2FsbHkgbWFkZSB1bm5lY2Vzc2FyeSBieSBbY2hhbmdlX2NoaWxkXSwgYW5kXG4gICAgICAgICBzbyBieSBpbnZhbGlkYXRpbmcgYWZ0ZXJ3YXJkcywgd2Ugd2lsbCBub3Qgd2FzdGUgdGltZSBhZGRpbmcgdGhlbSB0byB0aGVcbiAgICAgICAgIHJlY29tcHV0ZSBoZWFwIGFuZCB0aGVuIHJlbW92aW5nIHRoZW0uICopXG4gICAgICBpZiB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICBlbHNlXG4gICAgICAgIHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB0XG4gICAgICAgICAgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIH5uZXdfc2NvcGU6bWFpbi5jcmVhdGVkX2luO1xuICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdCk7XG4gICAgKCogW25vZGVdIHdhcyB2YWxpZCBhdCB0aGUgc3RhcnQgb2YgdGhlIFtCaW5kX2xoc19jaGFuZ2VdIGJyYW5jaCwgYW5kIGludmFsaWRhdGlvblxuICAgICAgIG9ubHkgdmlzaXRzIGhpZ2hlciBub2Rlcywgc28gW25vZGVdIGlzIHN0aWxsIHZhbGlkLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3ZhbGlkIG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgQ29uc3QgYSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBhXG4gIHwgRnJlZXplIHsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW47IF8gfSAtPlxuICAgIGxldCB2YWx1ZSA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgaWYgb25seV9mcmVlemVfd2hlbiB2YWx1ZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHZhbHVlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgMCBlbHNlIGJlY2FtZV91bm5lY2Vzc2FyeSBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YWx1ZVxuICB8IElmX3Rlc3RfY2hhbmdlICh7IG1haW47IGN1cnJlbnRfYnJhbmNoOyB0ZXN0OyB0aGVuXzsgZWxzZV87IF8gfSBhcyBpZl90aGVuX2Vsc2UpIC0+XG4gICAgbGV0IGRlc2lyZWRfYnJhbmNoID0gaWYgTm9kZS52YWx1ZV9leG4gdGVzdCB0aGVuIHRoZW5fIGVsc2UgZWxzZV8gaW5cbiAgICBpZl90aGVuX2Vsc2UuY3VycmVudF9icmFuY2ggPC0gVW9wdC5zb21lIGRlc2lyZWRfYnJhbmNoO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpjdXJyZW50X2JyYW5jaFxuICAgICAgfm5ld19jaGlsZDpkZXNpcmVkX2JyYW5jaFxuICAgICAgfmNoaWxkX2luZGV4OktpbmQuaWZfYnJhbmNoX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSWZfdGhlbl9lbHNlIHsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2gpXG4gIHwgSW52YWxpZCAtPlxuICAgICgqIFdlIG5ldmVyIGhhdmUgaW52YWxpZCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXA7IHRoZXkgYXJlIG5ldmVyIHN0YWxlLiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEpvaW5fbGhzX2NoYW5nZSAoeyBsaHM7IG1haW47IHJocyA9IG9sZF9yaHM7IF8gfSBhcyBqb2luKSAtPlxuICAgIGxldCByaHMgPSBOb2RlLnZhbHVlX2V4biBsaHMgaW5cbiAgICBqb2luLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuam9pbl9yaHNfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBKb2luX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBNYXAgKGYsIG4xKSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpKVxuICB8IFNuYXBzaG90IHsgYXQ7IGJlZm9yZTsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGEgW1NuYXBzaG90XSBhbmQgdGhlIGFsYXJtIHNob3VsZCBoYXZlIGZpcmVkLlxuICAgICAgIFthZHZhbmNlX2Nsb2NrXSB3YXMgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtGcmVlemVdIGF0IHRoZSBhcHByb3ByaWF0ZVxuICAgICAgIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGJlZm9yZVxuICB8IFN0ZXBfZnVuY3Rpb24gKHsgY2hpbGQ7IGNsb2NrOyBfIH0gYXMgc3RlcF9mdW5jdGlvbl9ub2RlKSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoaWxkID0gVW9wdC52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmVcbiAgICAgICAgICAgY2hpbGQuY2hhbmdlZF9hdFxuICAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdFxuICAgICAgICAgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPC0gY2hpbGQuY2hhbmdlZF9hdDtcbiAgICAgICAgcmVtb3ZlX2FsYXJtIGNsb2NrIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybTtcbiAgICAgICAgbGV0IHN0ZXBfZnVuY3Rpb24gPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgPC0gVW9wdC5zb21lIChTdGVwX2Z1bmN0aW9uLmluaXQgc3RlcF9mdW5jdGlvbik7XG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyA8LSBTdGVwX2Z1bmN0aW9uLnN0ZXBzIHN0ZXBfZnVuY3Rpb247XG4gICAgICAgICgqIElmIHRoZSBjaGlsZCBpcyBhIGNvbnN0YW50LCB3ZSBkcm9wIG91ciByZWZlcmVuY2UgdG8gaXQsIHRvIGF2b2lkIGhvbGRpbmcgb24gdG9cbiAgICAgICAgICAgdGhlIGVudGlyZSBzdGVwIGZ1bmN0aW9uLiAqKVxuICAgICAgICBpZiBOb2RlLmlzX2NvbnN0IGNoaWxkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5jaGlsZCA8LSBVb3B0Lm5vbmU7XG4gICAgICAgICAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSkpKSk7XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmFkdmFuY2Ugc3RlcF9mdW5jdGlvbl9ub2RlIH50b186KG5vdyBjbG9jayk7XG4gICAgbGV0IHN0ZXBfZnVuY3Rpb25fdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgaW5cbiAgICAobWF0Y2ggU2VxdWVuY2UuaGQgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIHdpdGhcbiAgICAgfCBOb25lIC0+IGlmIFVvcHQuaXNfbm9uZSBjaGlsZCB0aGVuIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3Qgc3RlcF9mdW5jdGlvbl92YWx1ZSlcbiAgICAgfCBTb21lIChhdCwgXykgLT5cbiAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdCBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm1fdmFsdWUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHN0ZXBfZnVuY3Rpb25fdmFsdWVcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChVbm9yZGVyZWRfYXJyYXlfZm9sZC5jb21wdXRlIHUpXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBWYXIgdmFyIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhci52YWx1ZVxuICB8IE1hcDIgKGYsIG4xLCBuMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikpXG4gIHwgTWFwMyAoZiwgbjEsIG4yLCBuMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpKVxuICB8IE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykgKE5vZGUudmFsdWVfZXhuIG40KSlcbiAgfCBNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KSlcbiAgfCBNYXA2IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNikpXG4gIHwgTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KSlcbiAgfCBNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KSlcbiAgfCBNYXA5IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSkpXG4gIHwgTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKSlcbiAgfCBNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpKVxuICB8IE1hcDEyIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMikpXG4gIHwgTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKSlcbiAgfCBNYXAxNCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpKVxuICB8IE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNSkpXG4gIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgIChtYXRjaCBFeHBlcnQuYmVmb3JlX21haW5fY29tcHV0YXRpb24gZXhwZXJ0IHdpdGhcbiAgICAgfCBgSW52YWxpZCAtPlxuICAgICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHRcbiAgICAgfCBgT2sgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGV4cGVydC5mICgpKSlcblxuYW5kIGNvcHlfY2hpbGQgOiB0eXBlIGEuIHBhcmVudDphIE5vZGUudCAtPiBjaGlsZDphIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIH5wYXJlbnQgfmNoaWxkIC0+XG4gIGlmIE5vZGUuaXNfdmFsaWQgY2hpbGRcbiAgdGhlbiBtYXliZV9jaGFuZ2VfdmFsdWUgcGFyZW50IChOb2RlLnZhbHVlX2V4biBjaGlsZClcbiAgZWxzZSAoXG4gICAgaW52YWxpZGF0ZV9ub2RlIHBhcmVudDtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBwYXJlbnQuc3RhdGUpXG5cbmFuZCBtYXliZV9jaGFuZ2VfdmFsdWUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IGEgLT4gdW5pdCA9XG4gIGZ1biBub2RlIG5ld192YWx1ZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbGV0IG9sZF92YWx1ZV9vcHQgPSBub2RlLnZhbHVlX29wdCBpblxuICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlX29wdFxuICB8fCBub3RcbiAgICAgICAoQ3V0b2ZmLnNob3VsZF9jdXRvZmZcbiAgICAgICAgICBub2RlLmN1dG9mZlxuICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgfm5ld192YWx1ZSlcbiAgdGhlbiAoXG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5zb21lIG5ld192YWx1ZTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19jaGFuZ2VkIDwtIHQubnVtX25vZGVzX2NoYW5nZWQgKyAxO1xuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBvbGRfdmFsdWVfb3B0O1xuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZSk7XG4gICAgaWYgbm9kZS5udW1fcGFyZW50cyA+PSAxXG4gICAgdGhlbiAoXG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGUucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSBpblxuICAgICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IGV4cGVydFxuICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgICB1XG4gICAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleClcbiAgICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICgqIFdlIGRvbid0IGRvIHRoZSBbY2FuX3JlY29tcHV0ZV9ub3ddIG9wdGltaXphdGlvbi4gIFNpbmNlIG1vc3Qgbm9kZXMgb25seSBoYXZlXG4gICAgICAgICAgIG9uZSBwYXJlbnQsIGl0IGlzIG5vdCBwcm9iYWJseSBub3QgYSBiaWcgbG9zcy4gIElmIHdlIGRpZCBpdCBhbnl3YXksIHdlJ2RcbiAgICAgICAgICAgaGF2ZSB0byBiZSBjYXJlZnVsLCBiZWNhdXNlIHdoaWxlIHdlIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBwYXJlbnRzLCB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZW0sIGFuZCBpbiBwYXJ0aWN1bGFyIHdlIGNhbiBleGVjdXRlIGxocy1jaGFuZ2Ugbm9kZXMgd2hvIGNhblxuICAgICAgICAgICBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgbGlzdCBvZiBwYXJlbnRzIHdlIGl0ZXJhdGUgb24uICBUaGluayBhYm91dDpcblxuICAgICAgICAgICB7W1xuICAgICAgICAgICAgIGxocyA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIGxocyA+PnwgRm4uaWQgZWxzZSBjb25zdCBiXG4gICAgICAgICAgIF19XG5cbiAgICAgICAgICAgSWYgdGhlIG9wdGltaXphdGlvbiBraWNrcyBpbiB3aGVuIHdlIHByb3BhZ2F0ZSBjaGFuZ2UgdG8gdGhlIHBhcmVudHMgb2YgW2xoc11cbiAgICAgICAgICAgKHdoaWNoIGNoYW5nZXMgZnJvbSBbdHJ1ZV0gdG8gW2ZhbHNlXSksIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIFtsaHMtY2hhbmdlXVxuICAgICAgICAgICBmaXJzdCwgd2hpY2ggd291bGQgbWFrZSBkaXNjb25uZWN0IHRoZSBbbWFwXSBub2RlIGZyb20gW2xoc10uICBBbmQgdGhlbiB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZSBzZWNvbmQgY2hpbGQgb2YgdGhlIFtsaHNdLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueW1vcmUgYW5kXG4gICAgICAgICAgIGluY3JlbWVudGFsIHdvdWxkIHNlZ2ZhdWx0ICh0aGVyZSBtYXkgYmUgYSBsZXNzIG5haXZlIHdheSBvZiBtYWtpbmcgdGhpcyB3b3JrXG4gICAgICAgICAgIHRob3VnaCkuICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG4gICAgICBkb25lO1xuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBub2RlLnBhcmVudDAgaW5cbiAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgfCBFeHBlcnQgcCAtPlxuICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApIGluXG4gICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IHBcbiAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgdVxuICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApXG4gICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNhbl9yZWNvbXB1dGVfbm93ID1cbiAgICAgICAgICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZW4ndCBwYXJlbnRzLiAqKVxuICAgICAgICAgIHwgQXQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEF0X2ludGVydmFscyBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQ29uc3QgXyB8IEludmFsaWQgfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgaGF2ZSBtb3JlIHRoYW4gb25lIGNoaWxkLiAqKVxuICAgICAgICAgIHwgQXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBNYXAyIF9cbiAgICAgICAgICB8IE1hcDMgX1xuICAgICAgICAgIHwgTWFwNCBfXG4gICAgICAgICAgfCBNYXA1IF9cbiAgICAgICAgICB8IE1hcDYgX1xuICAgICAgICAgIHwgTWFwNyBfXG4gICAgICAgICAgfCBNYXA4IF9cbiAgICAgICAgICB8IE1hcDkgX1xuICAgICAgICAgIHwgTWFwMTAgX1xuICAgICAgICAgIHwgTWFwMTEgX1xuICAgICAgICAgIHwgTWFwMTIgX1xuICAgICAgICAgIHwgTWFwMTMgX1xuICAgICAgICAgIHwgTWFwMTQgX1xuICAgICAgICAgIHwgTWFwMTUgX1xuICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgRXhwZXJ0IF8gLT4gZmFsc2VcbiAgICAgICAgICAoKiBXZSBjYW4gaW1tZWRpYXRlbHkgcmVjb21wdXRlIFtwYXJlbnRdIGlmIG5vIG90aGVyIG5vZGUgbmVlZHMgdG8gYmUgc3RhYmxlXG4gICAgICAgICAgICAgYmVmb3JlIGNvbXB1dGluZyBpdC4gIElmIFtwYXJlbnRdIGhhcyBhIHNpbmdsZSBjaGlsZCAoaS5lLiBbbm9kZV0pLCB0aGVuXG4gICAgICAgICAgICAgdGhpcyBhbW91bnRzIHRvIGNoZWNraW5nIHRoYXQgW3BhcmVudF0gd29uJ3QgYmUgaW52YWxpZGF0ZWQsIGkuZS4gdGhhdFxuICAgICAgICAgICAgIFtwYXJlbnRdJ3Mgc2NvcGUgaGFzIGFscmVhZHkgc3RhYmlsaXplZC4gKilcbiAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBGcmVlemUgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IE1hcCBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAoKiBGb3IgdGhlc2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgXCJfY2hhbmdlXCIgY2hpbGQgaGFzIGFscmVhZHkgYmVlblxuICAgICAgICAgICAgIGV2YWx1YXRlZCAoaWYgbmVlZGVkKS4gIElmIHNvLCB0aGlzIGFsc28gaW1wbGllczpcblxuICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICAgIF19ICopXG4gICAgICAgICAgfCBCaW5kX21haW4gYiAtPiBub2RlLmhlaWdodCA+IGIubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IElmX3RoZW5fZWxzZSBpIC0+IG5vZGUuaGVpZ2h0ID4gaS50ZXN0X2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IEpvaW5fbWFpbiBqIC0+IG5vZGUuaGVpZ2h0ID4gai5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICBpblxuICAgICAgICBpZiBjYW5fcmVjb21wdXRlX25vd1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkXG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSBpZiBwYXJlbnQuaGVpZ2h0IDw9IFJlY29tcHV0ZV9oZWFwLm1pbl9oZWlnaHQgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiBbcGFyZW50LmhlaWdodF0gaXMgWzw9XSB0aGUgaGVpZ2h0IG9mIGFsbCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXBcbiAgICAgICAgICAgICAocG9zc2libHkgYmVjYXVzZSB0aGUgcmVjb21wdXRlIGhlYXAgaXMgZW1wdHkpLCB0aGVuIHdlIGNhbiByZWNvbXB1dGVcbiAgICAgICAgICAgICBbcGFyZW50XSBpbW1lZGlhdGVseSBhbmQgc2F2ZSBhZGRpbmcgaXQgdG8gYW5kIHRoZW4gcmVtb3ZpbmcgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgICByZWNvbXB1dGUgaGVhcC4gKilcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSk7XG4gICAgICAgICAgUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50KSkpKTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByID1cbiAgbGV0IChUIG5vZGUpID0gUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiByIGluXG4gIGlmIGRlYnVnICYmIG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIm5vZGUgdW5leHBlY3RlZGx5IGRvZXMgbm90IG5lZWQgdG8gYmUgY29tcHV0ZWRcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIHJlY29tcHV0ZSBub2RlXG47O1xuXG5sZXQgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5kaXNhbGxvd2VkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICB8IERpc2FsbG93ZWQgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGxldCAoVCBhbGxfb2JzZXJ2ZXJzKSA9IFVvcHQudmFsdWVfZXhuIHQuYWxsX29ic2VydmVycyBpblxuICAgIGlmIEludGVybmFsX29ic2VydmVyLnNhbWUgaW50ZXJuYWxfb2JzZXJ2ZXIgYWxsX29ic2VydmVyc1xuICAgIHRoZW4gdC5hbGxfb2JzZXJ2ZXJzIDwtIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsO1xuICAgIEludGVybmFsX29ic2VydmVyLnVubGluayBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiAoKVxuICB8IENyZWF0ZWQgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuICB8IEluX3VzZSAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gRGlzYWxsb3dlZDtcbiAgICBTdGFjay5wdXNoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpXG47O1xuXG5sZXQgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQuZmluYWxpemVkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB0aGVuIGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX2ZpbmFsaXplciB0ID1cbiAgc3RhZ2UgKGZ1biBvYnNlcnZlciAtPlxuICAgIGxldCBpbnRlcm5hbF9vYnNlcnZlciA9ICFvYnNlcnZlciBpblxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKSlcbjs7XG5cbmxldCBjcmVhdGVfb2JzZXJ2ZXIgPyhzaG91bGRfZmluYWxpemUgPSB0cnVlKSAob2JzZXJ2aW5nIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBvYnNlcnZpbmcuc3RhdGUgaW5cbiAgbGV0IGludGVybmFsX29ic2VydmVyIDogXyBJbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgICB7IHN0YXRlID0gQ3JlYXRlZFxuICAgIDsgb2JzZXJ2aW5nXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgcHJldl9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBwcmV2X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gIFN0YWNrLnB1c2ggdC5uZXdfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKTtcbiAgbGV0IG9ic2VydmVyID0gcmVmIGludGVybmFsX29ic2VydmVyIGluXG4gIGlmIHNob3VsZF9maW5hbGl6ZVxuICB0aGVuIEdjLkV4cGVydC5hZGRfZmluYWxpemVyX2V4biBvYnNlcnZlciAodW5zdGFnZSAob2JzZXJ2ZXJfZmluYWxpemVyIHQpKTtcbiAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzICsgMTtcbiAgb2JzZXJ2ZXJcbjs7XG5cbmxldCBhZGRfbmV3X29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQubmV3X29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0Lm5ld19vYnNlcnZlcnMgaW5cbiAgICBsZXQgbW9kdWxlIFBhY2tlZCA9IEludGVybmFsX29ic2VydmVyLlBhY2tlZCBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVW5saW5rZWQgLT4gKClcbiAgICB8IENyZWF0ZWQgLT5cbiAgICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIEluX3VzZTtcbiAgICAgIGxldCBvbGRfYWxsX29ic2VydmVycyA9IHQuYWxsX29ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9hbGxfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGwgPC0gb2xkX2FsbF9vYnNlcnZlcnM7XG4gICAgICAgIFBhY2tlZC5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9hbGxfb2JzZXJ2ZXJzKSAoVW9wdC5zb21lIHBhY2tlZCkpO1xuICAgICAgdC5hbGxfb2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBwYWNrZWQ7XG4gICAgICBsZXQgb2JzZXJ2aW5nID0gaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIGluXG4gICAgICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyBpblxuICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICArIExpc3QubGVuZ3RoIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAgIGxldCBvbGRfb2JzZXJ2ZXJzID0gb2JzZXJ2aW5nLm9ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX29ic2VydmluZyA8LSBvbGRfb2JzZXJ2ZXJzO1xuICAgICAgICAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX29ic2VydmVycykucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyO1xuICAgICAgKCogQnkgYWRkaW5nIFtpbnRlcm5hbF9vYnNlcnZlcl0gdG8gW29ic2VydmluZy5vYnNlcnZlcnNdLCB3ZSBtYXkgaGF2ZSBhZGRlZFxuICAgICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHRvIFtvYnNlcnZpbmddLiAgV2UgbmVlZCB0byBoYW5kbGUgW29ic2VydmluZ10gYWZ0ZXIgdGhpc1xuICAgICAgICAgc3RhYmlsaXphdGlvbiB0byBnaXZlIHRob3NlIGhhbmRsZXJzIGEgY2hhbmNlIHRvIHJ1bi4gKilcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG9ic2VydmluZztcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcpO1xuICAgICAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IG9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBOb3Rfc3RhYmlsaXppbmcgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyAtPiBPYnNlcnZlci52YWx1ZV9leG4gb2JzZXJ2ZXJcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIFJhaXNlZF9leG4ucmVyYWlzZV93aXRoX21lc3NhZ2VcbiAgICAgIHJhaXNlZF9leG5cbiAgICAgIFwiT2JzZXJ2ZXIudmFsdWVfZXhuIGNhbGxlZCBhZnRlciBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgZHVyaW5nIHN0YWJpbGl6YXRpb25cIlxuICAgICAgb2JzZXJ2ZXJcbiAgICAgIFslc2V4cF9vZjogXyBPYnNlcnZlci50XVxuOztcblxubGV0IG9ic2VydmVyX3ZhbHVlIG9ic2VydmVyID1cbiAgdHJ5IE9rIChvYnNlcnZlcl92YWx1ZV9leG4gb2JzZXJ2ZXIpIHdpdGhcbiAgfCBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG47O1xuXG5sZXQgbm9kZV9vbl91cGRhdGUgKHR5cGUgYSkgKG5vZGUgOiBhIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgTm9kZS5vbl91cGRhdGUgbm9kZSAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlXG47O1xuXG5sZXQgb2JzZXJ2ZXJfb25fdXBkYXRlX2V4biBvYnNlcnZlciB+ZiA9XG4gIGxldCB0ID0gT2JzZXJ2ZXIuaW5jcl9zdGF0ZSBvYnNlcnZlciBpblxuICBPYnNlcnZlci5vbl91cGRhdGVfZXhuIG9ic2VydmVyIChPbl91cGRhdGVfaGFuZGxlci5jcmVhdGUgZiB+YXQ6dC5zdGFiaWxpemF0aW9uX251bSk7XG4gIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChPYnNlcnZlci5vYnNlcnZpbmcgb2JzZXJ2ZXIpXG47O1xuXG5sZXQgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlID1cbiAgbGV0IHQgPSBWYXIuaW5jcl9zdGF0ZSB2YXIgaW5cbiAgdC5udW1fdmFyX3NldHMgPC0gdC5udW1fdmFyX3NldHMgKyAxO1xuICB2YXIudmFsdWUgPC0gdmFsdWU7XG4gIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmUgdmFyLnNldF9hdCB0LnN0YWJpbGl6YXRpb25fbnVtIDwgMFxuICB0aGVuIChcbiAgICB2YXIuc2V0X2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gICAgbGV0IHdhdGNoID0gdmFyLndhdGNoIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfc3RhbGUgd2F0Y2gpO1xuICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IHdhdGNoICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCB3YXRjaClcbiAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIHdhdGNoKVxuOztcblxubGV0IHNldF92YXIgdmFyIHZhbHVlID1cbiAgbGV0IHQgPSBWYXIuaW5jcl9zdGF0ZSB2YXIgaW5cbiAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZF9leG4gLT5cbiAgICBSYWlzZWRfZXhuLnJlcmFpc2Vfd2l0aF9tZXNzYWdlXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBcImNhbm5vdCBzZXQgdmFyIC0tIHN0YWJpbGl6YXRpb24gcHJldmlvdXNseSByYWlzZWRcIlxuICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgaWYgVW9wdC5pc19ub25lIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25cbiAgICB0aGVuIFN0YWNrLnB1c2ggdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gKFQgdmFyKTtcbiAgICB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIDwtIFVvcHQuc29tZSB2YWx1ZVxuOztcblxubGV0IHJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQud2Vha19oYXNodGJscyA+IDAgZG9cbiAgICBsZXQgKFQgd2Vha19oYXNodGJsKSA9IFRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIHQud2Vha19oYXNodGJscyBpblxuICAgIFdlYWtfaGFzaHRibC5yZWNsYWltX3NwYWNlX2Zvcl9rZXlzX3dpdGhfdW51c2VkX2RhdGEgd2Vha19oYXNodGJsXG4gIGRvbmVcbjs7XG5cbmxldCBzdGFiaWxpemVfc3RhcnQgdCA9XG4gIHQuc3RhdHVzIDwtIFN0YWJpbGl6aW5nO1xuICBkaXNhbGxvd19maW5hbGl6ZWRfb2JzZXJ2ZXJzIHQ7XG4gICgqIEp1c3QgbGlrZSBmb3IgYmluZHMsIHdlIGFkZCBuZXcgb2JzZXJ2ZXJzIGJlZm9yZSByZW1vdmluZyBkaXNhbGxvd2VkIG9ic2VydmVycyB0b1xuICAgICBwb3RlbnRpYWxseSBhdm9pZCBzd2l0Y2hpbmcgdGhlIG9ic2VydmFiaWxpdHkgb2Ygc29tZSBub2RlcyBiYWNrIGFuZCBmb3J0aC4gKilcbiAgYWRkX25ld19vYnNlcnZlcnMgdDtcbiAgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQ7XG4gIGlmIGRlYnVnIHRoZW4gaW52YXJpYW50IHRcbjs7XG5cbmxldCBzdGFiaWxpemVfZW5kIHQgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICB0Lm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSA8LSBOb25lO1xuICAgIHQub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPC0gW10pO1xuICAoKiBXZSBpbmNyZW1lbnQgW3Quc3RhYmlsaXphdGlvbl9udW1dIGJlZm9yZSBoYW5kbGluZyB2YXJpYWJsZXMgc2V0IGR1cmluZ1xuICAgICBzdGFiaWxpemF0aW9uLCBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQgYXMgc2V0IGR1cmluZyB0aGUgbmV3IHN0YWJpbGl6YXRpb24gY3ljbGUuXG4gICAgIEFsc28sIHdlIGluY3JlbWVudCBiZWZvcmUgcnVubmluZyBvbi11cGRhdGUgaGFuZGxlcnMsIHRvIGF2b2lkIHJ1bm5pbmcgb24gdXBkYXRlXG4gICAgIGhhbmRsZXJzIGNyZWF0ZWQgZHVyaW5nIG9uIHVwZGF0ZSBoYW5kbGVycy4gKilcbiAgdC5zdGFiaWxpemF0aW9uX251bSA8LSBTdGFiaWxpemF0aW9uX251bS5hZGQxIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24pIGRvXG4gICAgbGV0IChUIHZhcikgPSBTdGFjay5wb3BfZXhuIHQuc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgbGV0IHZhbHVlID0gVW9wdC52YWx1ZV9leG4gdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiBpblxuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5ub25lO1xuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICBkb25lO1xuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24pIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIGluXG4gICAgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA8LSBmYWxzZTtcbiAgICBsZXQgb2xkX3ZhbHVlID0gbm9kZS5vbGRfdmFsdWVfb3B0IGluXG4gICAgbm9kZS5vbGRfdmFsdWVfb3B0IDwtIFVvcHQubm9uZTtcbiAgICBsZXQgbm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQgPVxuICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIG5vZGUpXG4gICAgICB0aGVuIEludmFsaWRhdGVkXG4gICAgICBlbHNlIGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSlcbiAgICAgIHRoZW4gVW5uZWNlc3NhcnlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV3X3ZhbHVlID0gVW9wdC52YWx1ZV9leG4gbm9kZS52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIG9sZF92YWx1ZVxuICAgICAgICB0aGVuIE5lY2Vzc2FyeSBuZXdfdmFsdWVcbiAgICAgICAgZWxzZSBDaGFuZ2VkIChVb3B0LnVuc2FmZV92YWx1ZSBvbGRfdmFsdWUsIG5ld192YWx1ZSkpXG4gICAgaW5cbiAgICBTdGFjay5wdXNoIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyAoVCAobm9kZSwgbm9kZV91cGRhdGUpKVxuICBkb25lO1xuICB0LnN0YXR1cyA8LSBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycztcbiAgbGV0IG5vdyA9IHQuc3RhYmlsaXphdGlvbl9udW0gaW5cbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMpIGRvXG4gICAgbGV0IChUIChub2RlLCBub2RlX3VwZGF0ZSkpID0gU3RhY2sucG9wX2V4biB0LnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgICBOb2RlLnJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgbm9kZSBub2RlX3VwZGF0ZSB+bm93XG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIE5vdF9zdGFiaWxpemluZztcbiAgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHRcbjs7XG5cbmxldCByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4biA9XG4gIGxldCByYWlzZWQgPSBSYWlzZWRfZXhuLmNyZWF0ZSBleG4gaW5cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIHJhaXNlZDtcbiAgUmFpc2VkX2V4bi5yZXJhaXNlIHJhaXNlZFxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic3RhYmlsaXplXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOmZhbHNlO1xuICB0cnlcbiAgICBzdGFiaWxpemVfc3RhcnQgdDtcbiAgICBsZXQgciA9IHQucmVjb21wdXRlX2hlYXAgaW5cbiAgICB3aGlsZSBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDAgZG9cbiAgICAgIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHJcbiAgICBkb25lO1xuICAgIHN0YWJpbGl6ZV9lbmQgdFxuICB3aXRoXG4gIHwgZXhuIC0+IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuXG47O1xuXG5tb2R1bGUgU3RlcF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEtlZXBfZ29pbmdcbiAgICB8IERvbmVcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZG9fb25lX3N0ZXBfb2Zfc3RhYmlsaXplIHQgOiBTdGVwX3Jlc3VsdC50ID1cbiAgdHJ5XG4gICAgbWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICBzdGFiaWxpemVfc3RhcnQgdDtcbiAgICAgIEtlZXBfZ29pbmdcbiAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICBsZXQgciA9IHQucmVjb21wdXRlX2hlYXAgaW5cbiAgICAgIGlmIFJlY29tcHV0ZV9oZWFwLmxlbmd0aCByID4gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlY29tcHV0ZV9maXJzdF9ub2RlX3RoYXRfaXNfbmVjZXNzYXJ5IHI7XG4gICAgICAgIEtlZXBfZ29pbmcpXG4gICAgICBlbHNlIChcbiAgICAgICAgc3RhYmlsaXplX2VuZCB0O1xuICAgICAgICBEb25lKVxuICAgIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPlxuICAgICAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwic3RlcFwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgKG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPlxuICAgICAgICgqIElmIHN0YWJpbGl6YXRpb24gaGFzIGFscmVhZHkgcmFpc2VkLCB0aGVuIFtleG5dIGlzIG1lcmVseSBhIG5vdGlmaWNhdGlvbiBvZiB0aGlzXG4gICAgICAgICAgZmFjdCwgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBpdHNlbGYuICBXZSBzaG91bGQganVzdCBwcm9wYWdhdGUgW2V4bl1cbiAgICAgICAgICBmb3J3YXJkOyBjYWxsaW5nIFtyYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbl0gd291bGQgc3RvcmUgW2V4bl0gYXMgdGhlIGV4Y2VwdGlvblxuICAgICAgICAgIHRoYXQgaW5pdGlhbGx5IHJhaXNlZCBkdXJpbmcgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICByYWlzZSBleG5cbiAgICAgfCBfIC0+IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuKVxuOztcblxubGV0IGNyZWF0ZV9ub2RlX2luIHQgY3JlYXRlZF9pbiBraW5kID1cbiAgdC5udW1fbm9kZXNfY3JlYXRlZCA8LSB0Lm51bV9ub2Rlc19jcmVhdGVkICsgMTtcbiAgTm9kZS5jcmVhdGUgdCBjcmVhdGVkX2luIGtpbmRcbjs7XG5cbmxldCBjcmVhdGVfbm9kZSB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IHQuY3VycmVudF9zY29wZSBraW5kXG5sZXQgY3JlYXRlX25vZGVfdG9wIHQga2luZCA9IGNyZWF0ZV9ub2RlX2luIHQgU2NvcGUudG9wIGtpbmRcblxubGV0IGNyZWF0ZV92YXIgdCA/KHVzZV9jdXJyZW50X3Njb3BlID0gZmFsc2UpIHZhbHVlID1cbiAgbGV0IHNjb3BlID0gaWYgdXNlX2N1cnJlbnRfc2NvcGUgdGhlbiB0LmN1cnJlbnRfc2NvcGUgZWxzZSBTY29wZS50b3AgaW5cbiAgbGV0IHdhdGNoID0gY3JlYXRlX25vZGVfaW4gdCBzY29wZSBVbmluaXRpYWxpemVkIGluXG4gIGxldCB2YXIgPVxuICAgIHsgVmFyLnZhbHVlXG4gICAgOyB2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPSBVb3B0Lm5vbmVcbiAgICA7IHNldF9hdCA9IHQuc3RhYmlsaXphdGlvbl9udW1cbiAgICA7IHdhdGNoXG4gICAgfVxuICBpblxuICBOb2RlLnNldF9raW5kIHdhdGNoIChWYXIgdmFyKTtcbiAgdmFyXG47O1xuXG4oKiBBIFtjb25zdF0gdmFsdWUgY291bGQgY29tZSBmcm9tIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgYW4gb3V0ZXIgYmluZC4gIFNvLCB3ZSBjcmVhdGUgYVxuICAgW2NvbnN0XSBub2RlIGluIHRoZSBjdXJyZW50IHNjb3BlLCBub3QgaW4gW1Njb3BlLnRvcF0uICopXG5sZXQgY29uc3QgdCBhID0gY3JlYXRlX25vZGUgdCAoQ29uc3QgYSlcbmxldCBtYXAgKG4gOiBfIE5vZGUudCkgfmYgPSBjcmVhdGVfbm9kZSBuLnN0YXRlIChNYXAgKGYsIG4pKVxubGV0IG1hcDIgKG4xIDogXyBOb2RlLnQpIG4yIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDIgKGYsIG4xLCBuMikpXG5cbmxldCBib3RoIChuMSA6IF8gTm9kZS50KSAobjIgOiBfIE5vZGUudCkgPVxuICBtYXRjaCBuMSwgbjIgd2l0aFxuICB8IHsga2luZCA9IENvbnN0IGE7IF8gfSwgeyBraW5kID0gQ29uc3QgYjsgXyB9IC0+IGNvbnN0IG4xLnN0YXRlIChhLCBiKVxuICB8IF8gLT4gbWFwMiBuMSBuMiB+ZjpUdXBsZTIuY3JlYXRlXG47O1xuXG5sZXQgbWFwMyAobjEgOiBfIE5vZGUudCkgbjIgbjMgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwMyAoZiwgbjEsIG4yLCBuMykpXG5sZXQgbWFwNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgfmYgPSBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNCAoZiwgbjEsIG4yLCBuMywgbjQpKVxuXG5sZXQgbWFwNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNSAoZiwgbjEsIG4yLCBuMywgbjQsIG41KSlcbjs7XG5cbmxldCBtYXA2IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA2IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42KSlcbjs7XG5cbmxldCBtYXA3IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA3IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNykpXG47O1xuXG5sZXQgbWFwOCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44KSlcbjs7XG5cbmxldCBtYXA5IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXA5IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45KSlcbjs7XG5cbmxldCBtYXAxMCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDEwIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTApKVxuOztcblxubGV0IG1hcDExIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDExIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSkpXG47O1xuXG5sZXQgbWFwMTIgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDEyIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyKSlcbjs7XG5cbmxldCBtYXAxMyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDEzIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMpKVxuOztcblxubGV0IG1hcDE0IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgbjE0IH5mID1cbiAgY3JlYXRlX25vZGVcbiAgICBuMS5zdGF0ZVxuICAgIChNYXAxNCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQpKVxuOztcblxubGV0IG1hcDE1IChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiBuMTMgbjE0IG4xNSB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0LCBuMTUpKVxuOztcblxubGV0IHByZXNlcnZlX2N1dG9mZiB+KGlucHV0IDogXyBOb2RlLnQpIH5vdXRwdXQgPVxuICBOb2RlLnNldF9jdXRvZmZcbiAgICBvdXRwdXRcbiAgICAoQ3V0b2ZmLmNyZWF0ZSAoZnVuIH5vbGRfdmFsdWU6XyB+bmV3X3ZhbHVlOl8gLT5cbiAgICAgICBTdGFiaWxpemF0aW9uX251bS5lcXVhbCBpbnB1dC5jaGFuZ2VkX2F0IG91dHB1dC5jaGFuZ2VkX2F0KSlcbjs7XG5cbmxldCBkZXBlbmRfb24gaW5wdXQgfmRlcGVuZF9vbiA9XG4gIGxldCBvdXRwdXQgPSBtYXAyIGlucHV0IGRlcGVuZF9vbiB+ZjooZnVuIGEgXyAtPiBhKSBpblxuICBwcmVzZXJ2ZV9jdXRvZmYgfmlucHV0IH5vdXRwdXQ7XG4gIG91dHB1dFxuOztcblxubGV0IG5lY2Vzc2FyeV9pZl9hbGl2ZSBpbnB1dCA9XG4gICgqIElmIFtvdXRwdXRdIGlzIGFsaXZlLCB0aGVuIFtvYnNlcnZlcl0gaXMgYWxpdmUsIHRoZW4gW2lucHV0XSBpcyBuZWNlc3NhcnkuICBJZlxuICAgICBbb3V0cHV0XSBpcyB1bm5lY2Vzc2FyeSwgdGhlbiBbb3V0cHV0XSBpcyBub3QgYSBwYXJlbnQgb2YgW2lucHV0XSwgYW5kIHRodXNcbiAgICAgW291dHB1dF0ncyBsaXZlbmVzcyBpcyBkZXBlbmRlbnQgc29sZWx5IG9uIHVzZXIgY29kZS4gIEFuZCBpbiBwYXJ0aWN1bGFyLCBpZiBbb3V0cHV0XVxuICAgICBkaWVzLCB0aGVuIFtvYnNlcnZlcl0gd2lsbCBiZSBmaW5hbGl6ZWQsIGFuZCB0aGVuIHVwb24gdGhlIG5leHQgc3RhYmlsaXphdGlvbixcbiAgICAgW2lucHV0XSB3aWxsIGJlY29tZSB1bm5lY2Vzc2FyeSAoYXQgbGVhc3Qgd2l0aCByZXNwZWN0IHRvIFtvdXRwdXRdKS4gKilcbiAgbGV0IG9ic2VydmVyID0gY3JlYXRlX29ic2VydmVyIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPVxuICAgIG1hcCBpbnB1dCB+ZjooZnVuIGEgLT5cbiAgICAgIEdjLmtlZXBfYWxpdmUgb2JzZXJ2ZXI7XG4gICAgICBhKVxuICBpblxuICBwcmVzZXJ2ZV9jdXRvZmYgfmlucHV0IH5vdXRwdXQ7XG4gIG91dHB1dFxuOztcblxubGV0IGJpbmQgKGxocyA6IF8gTm9kZS50KSB+ZiA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiaW5kID1cbiAgICB7IEJpbmQubWFpblxuICAgIDsgZlxuICAgIDsgbGhzXG4gICAgOyBsaHNfY2hhbmdlXG4gICAgOyByaHMgPSBVb3B0Lm5vbmVcbiAgICA7IHJoc19zY29wZSA9IFNjb3BlLnRvcFxuICAgIDsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzID0gVW9wdC5ub25lXG4gICAgfVxuICBpblxuICAoKiBXZSBzZXQgW2xoc19jaGFuZ2VdIHRvIG5ldmVyIGN1dG9mZiBzbyB0aGF0IHdoZW5ldmVyIFtsaHNdIGNoYW5nZXMsIFttYWluXSBpc1xuICAgICByZWNvbXB1dGVkLiAgVGhpcyBpcyBuZWNlc3NhcnkgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIFtmXSByZXR1cm5zIGFuIGV4aXN0aW5nIHN0YWJsZVxuICAgICBub2RlLCBpbiB3aGljaCBjYXNlIHRoZSBbbGhzX2NoYW5nZV0gd291bGQgYmUgdGhlIG9ubHkgdGhpbmcgY2F1c2luZyBbbWFpbl0gdG8gYmVcbiAgICAgc3RhbGUuICopXG4gIE5vZGUuc2V0X2N1dG9mZiBsaHNfY2hhbmdlIEN1dG9mZi5uZXZlcjtcbiAgYmluZC5yaHNfc2NvcGUgPC0gQmluZCBiaW5kO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEJpbmRfbGhzX2NoYW5nZSBiaW5kKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChCaW5kX21haW4gYmluZCk7XG4gIG1haW5cbjs7XG5cbmxldCBiaW5kMiBuMSBuMiB+ZiA9XG4gIGJpbmQgKG1hcDIgbjEgbjIgfmY6KGZ1biB2MSB2MiAtPiB2MSwgdjIpKSB+ZjooZnVuICh2MSwgdjIpIC0+IGYgdjEgdjIpXG47O1xuXG5sZXQgYmluZDMgbjEgbjIgbjMgfmYgPVxuICBiaW5kIChtYXAzIG4xIG4yIG4zIH5mOihmdW4gdjEgdjIgdjMgLT4gdjEsIHYyLCB2MykpIH5mOihmdW4gKHYxLCB2MiwgdjMpIC0+IGYgdjEgdjIgdjMpXG47O1xuXG5sZXQgYmluZDQgbjEgbjIgbjMgbjQgfmYgPVxuICBiaW5kXG4gICAgKG1hcDQgbjEgbjIgbjMgbjQgfmY6KGZ1biB2MSB2MiB2MyB2NCAtPiB2MSwgdjIsIHYzLCB2NCkpXG4gICAgfmY6KGZ1biAodjEsIHYyLCB2MywgdjQpIC0+IGYgdjEgdjIgdjMgdjQpXG47O1xuXG5sZXQgam9pbiAobGhzIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBsaHMuc3RhdGUgaW5cbiAgbGV0IGxoc19jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGpvaW4gPSB7IEpvaW4ubGhzOyBsaHNfY2hhbmdlOyByaHMgPSBVb3B0Lm5vbmU7IG1haW4gfSBpblxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIE5vZGUuc2V0X2tpbmQgbGhzX2NoYW5nZSAoSm9pbl9saHNfY2hhbmdlIGpvaW4pO1xuICBOb2RlLnNldF9raW5kIG1haW4gKEpvaW5fbWFpbiBqb2luKTtcbiAgbWFpblxuOztcblxubGV0IGlmXyAodGVzdCA6IF8gTm9kZS50KSB+dGhlbl8gfmVsc2VfID1cbiAgbGV0IHQgPSB0ZXN0LnN0YXRlIGluXG4gIGxldCB0ZXN0X2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgaWZfdGhlbl9lbHNlID1cbiAgICB7IElmX3RoZW5fZWxzZS50ZXN0OyB0aGVuXzsgZWxzZV87IHRlc3RfY2hhbmdlOyBtYWluOyBjdXJyZW50X2JyYW5jaCA9IFVvcHQubm9uZSB9XG4gIGluXG4gIE5vZGUuc2V0X2N1dG9mZiB0ZXN0X2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIE5vZGUuc2V0X2tpbmQgdGVzdF9jaGFuZ2UgKElmX3Rlc3RfY2hhbmdlIGlmX3RoZW5fZWxzZSk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSk7XG4gIG1haW5cbjs7XG5cbmxldCBsYXp5X2Zyb21fZnVuIHQgfmYgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgTGF6eS5mcm9tX2Z1biAoZnVuICgpIC0+IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mKVxuOztcblxubGV0IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUgPSA0XG5cbmxldCBtZW1vaXplX2Z1bl9ieV9rZXlcbiAgICAgID8oaW5pdGlhbF9zaXplID0gZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSlcbiAgICAgIHRcbiAgICAgIGhhc2hhYmxlXG4gICAgICBwcm9qZWN0X2tleVxuICAgICAgZlxuICA9XG4gICgqIEhlcmUncyBhbiBleHBsYW5hdGlvbiBvZiB3aHkgd2UgZ2V0IFt0LmN1cnJlbnRfc2NvcGVdIGhlcmUsIGFuZCB0aGVuIGNhbGxcbiAgICAgW3dpdGhpbl9zY29wZV0gYmVsb3cuICBDb25zaWRlciB0aGlzIChpbXBvc3NpYmxlKSBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgW21lbW9pemVfZnVuX2J5X2tleV06XG5cbiAgICAge1tcbiAgICAgICBsZXQgdGFibGUgPVxuICAgICAgICAgSGFzaHRibC5vZl9hbGlzdF9leG4gaGFzaGFibGVcbiAgICAgICAgICAgKExpc3QubWFwIGFsbF9wb3NzaWJsZV9hX3ZhbHVlcyB+ZjooZnVuIGEgLT4gKHByb2plY3Rfa2V5IGEsIGYgYSkpXG4gICAgICAgaW5cbiAgICAgICBzdGFnZSAoZnVuIGtleSAtPiBIYXNodGJsLmZpbmRfZXhuIHRhYmxlIChwcm9qZWN0X2tleSBhKSlcbiAgICAgXX1cblxuICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgdXNlIFtjdXJyZW50X3Njb3BlXSBvciBbd2l0aGluX3Njb3BlXS4gIEFsbCBjYWxscyB0byBbZl1cbiAgICAgbmF0dXJhbGx5IG9jY3VyIGluIFt0LmN1cnJlbnRfc2NvcGVdLlxuXG4gICAgIFN1Y2ggYW4gaW1wbGVtZW50YXRpb24gaXMgaW1wb3NzaWJsZSBiZWNhdXNlIHdlIGRvIG5vdCBoYXZlIFthbGxfcG9zc2libGVfYV92YWx1ZXNdLlxuICAgICBUaGUgaW1wbGVtZW50YXRpb24gYmVsb3cgdXNlcyBbd2l0aGluX3Njb3BlXSB0byBjYWxsIFtmIGFdIGluIHRoZSBzY29wZSB0aGF0IHdhc1xuICAgICBjdXJyZW50IGF0IHRoZSBwb2ludCBvZiB0aGUgY2FsbCB0byBbbWVtb2l6ZV9mdW5fYnlfa2V5XSBzbyB0aGF0IHdlIGNhbiB0aGluayBvZiB0aGVcbiAgICAgW3RhYmxlXSBhcyBoYXZpbmcgYmVlbiBjcmVhdGVkIHRoZW4sIHdoZW4gaXQgaW4gcmVhbGl0eSBpcyBjcmVhdGVkIG9uLWRlbWFuZC4gKilcbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIGxldCB0YWJsZSA9IEhhc2h0YmwuY3JlYXRlIGhhc2hhYmxlIH5zaXplOmluaXRpYWxfc2l6ZSBpblxuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0YWJsZSBrZXkgd2l0aFxuICAgIHwgU29tZSBiIC0+IGJcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBiID0gd2l0aGluX3Njb3BlIHQgc2NvcGUgfmY6KGZ1biAoKSAtPiBmIGEpIGluXG4gICAgICBIYXNodGJsLmFkZF9leG4gdGFibGUgfmtleSB+ZGF0YTpiO1xuICAgICAgYilcbjs7XG5cbmxldCBhcnJheV9mb2xkIHQgY2hpbGRyZW4gfmluaXQgfmYgPVxuICBpZiBBcnJheS5sZW5ndGggY2hpbGRyZW4gPSAwXG4gIHRoZW4gY29uc3QgdCBpbml0XG4gIGVsc2UgY3JlYXRlX25vZGUgdCAoQXJyYXlfZm9sZCB7IGluaXQ7IGY7IGNoaWxkcmVuIH0pXG47O1xuXG5sZXQgYWxsIHQgdHMgPSBhcnJheV9mb2xkIHQgKEFycmF5Lm9mX2xpc3RfcmV2IHRzKSB+aW5pdDpbXSB+ZjooZnVuIGFjIGEgLT4gYSA6OiBhYylcblxubW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFVub3JkZXJlZF9hcnJheV9mb2xkLlVwZGF0ZVxuXG5sZXQgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgIHRcbiAgICAgID8oZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA9IEludC5tYXhfdmFsdWUpXG4gICAgICBjaGlsZHJlblxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gICAgICB+dXBkYXRlXG4gID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGlmIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPD0gMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcInVub3JkZXJlZF9hcnJheV9mb2xkIGdvdCBub24tcG9zaXRpdmUgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1wiXG4gICAgICBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICBbJXNleHBfb2Y6IGludF1cbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBOb2RlLnNldF9raW5kXG4gICAgICBtYWluXG4gICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICAgIChVbm9yZGVyZWRfYXJyYXlfZm9sZC5jcmVhdGVcbiAgICAgICAgICAgIH5pbml0XG4gICAgICAgICAgICB+ZlxuICAgICAgICAgICAgfnVwZGF0ZVxuICAgICAgICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICAgICAgICAgIH5jaGlsZHJlblxuICAgICAgICAgICAgfm1haW4pKTtcbiAgICBtYWluKVxuOztcblxubGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH5mX2ludmVyc2UgPVxuICBsZXQgZiAoYWNjdW0sIG51bV9pbnZhbGlkKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjdW0sIG51bV9pbnZhbGlkICsgMVxuICAgIHwgU29tZSB4IC0+IGYgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbGV0IGZfaW52ZXJzZSAoYWNjdW0sIG51bV9pbnZhbGlkKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjdW0sIG51bV9pbnZhbGlkIC0gMVxuICAgIHwgU29tZSB4IC0+IGZfaW52ZXJzZSBhY2N1bSB4LCBudW1faW52YWxpZFxuICBpblxuICBtYXBcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgdHNcbiAgICAgICB+aW5pdDooaW5pdCwgMClcbiAgICAgICB+ZlxuICAgICAgIH51cGRhdGU6KEZfaW52ZXJzZSBmX2ludmVyc2UpXG4gICAgICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMpXG4gICAgfmY6KGZ1biAoYWNjdW0sIG51bV9pbnZhbGlkKSAtPiBpZiBudW1faW52YWxpZCA9IDAgdGhlbiBTb21lIGFjY3VtIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfmsgPVxuICBsZXQgYm9vbF90b19pbnQgYiA9IGlmIGIgdGhlbiAxIGVsc2UgMCBpblxuICBtYXBcbiAgICB+ZjooZnVuIGkgLT4gaSA+PSBrKVxuICAgICh1bm9yZGVyZWRfYXJyYXlfZm9sZFxuICAgICAgIHRcbiAgICAgICBub2Rlc1xuICAgICAgIH5pbml0OjBcbiAgICAgICB+ZjooZnVuIG51bV90cnVlIGIgLT4gbnVtX3RydWUgKyBib29sX3RvX2ludCBiKVxuICAgICAgIH51cGRhdGU6KEZfaW52ZXJzZSAoZnVuIG51bV90cnVlIGIgLT4gbnVtX3RydWUgLSBib29sX3RvX2ludCBiKSkpXG47O1xuXG5sZXQgZXhpc3RzIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6MVxubGV0IGZvcl9hbGwgdCBub2RlcyA9IGF0X2xlYXN0X2tfb2YgdCBub2RlcyB+azooQXJyYXkubGVuZ3RoIG5vZGVzKVxuXG5sZXQgc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICB0XG4gICAgbm9kZXNcbiAgICB+aW5pdDp6ZXJvXG4gICAgfmY6YWRkXG4gICAgfnVwZGF0ZTooRl9pbnZlcnNlIHN1YilcbiAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IG9wdF9zdW0gdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBub2RlcyB+emVybyB+YWRkIH5zdWIgPVxuICBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICB0XG4gICAgbm9kZXNcbiAgICB+aW5pdDp6ZXJvXG4gICAgfmY6YWRkXG4gICAgfmZfaW52ZXJzZTpzdWJcbiAgICA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IHN1bV9pbnQgdCBub2RlcyA9IHN1bSB0IG5vZGVzIH56ZXJvOjAgfmFkZDooICsgKSB+c3ViOiggLSApXG5cbmxldCBzdW1fZmxvYXQgdCBub2RlcyA9XG4gIHN1bVxuICAgIHRcbiAgICBub2Rlc1xuICAgIH56ZXJvOjAuXG4gICAgfmFkZDooICsuIClcbiAgICB+c3ViOiggLS4gKVxuICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzOihBcnJheS5sZW5ndGggbm9kZXMpXG47O1xuXG5sZXQgc2V0X2ZyZWV6ZSAobm9kZSA6IF8gTm9kZS50KSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW4gPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoU2NvcGUuaXNfdG9wIG5vZGUuY3JlYXRlZF9pbik7XG4gICgqIEJ5IG1ha2luZyBbbm9kZS5raW5kXSBiZSBbRnJlZXplXSwgd2UgYXJlIG1ha2luZyBbTm9kZS5pc19uZWNlc3Nhcnkgbm9kZV0uICopXG4gIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSBpblxuICBOb2RlLnNldF9raW5kIG5vZGUgKEZyZWV6ZSB7IG1haW4gPSBub2RlOyBjaGlsZDsgb25seV9mcmVlemVfd2hlbiB9KTtcbiAgaWYgd2FzX25lY2Vzc2FyeVxuICB0aGVuIGFkZF9wYXJlbnQgfmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg6S2luZC5mcmVlemVfY2hpbGRfaW5kZXhcbiAgZWxzZSBiZWNhbWVfbmVjZXNzYXJ5IG5vZGVcbjs7XG5cbmxldCBmcmVlemUgKGNoaWxkIDogXyBOb2RlLnQpIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgbGV0IHQgPSBjaGlsZC5zdGF0ZSBpblxuICBsZXQgbm9kZSA9IGNyZWF0ZV9ub2RlX3RvcCB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgc2V0X2ZyZWV6ZSBub2RlIH5jaGlsZCB+b25seV9mcmVlemVfd2hlbjtcbiAgbm9kZVxuOztcblxubGV0IGF0IGNsb2NrIHRpbWUgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy4oIDw9ICkgdGltZSAobm93IGNsb2NrKVxuICB0aGVuIGNvbnN0IHQgQmVmb3JlX29yX2FmdGVyLkFmdGVyXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IGF0ID0geyBBdC5hdCA9IHRpbWU7IG1haW47IGFsYXJtID0gQWxhcm0ubnVsbDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXQgYXQpO1xuICAgIGF0LmFsYXJtIDwtIGFkZF9hbGFybSBjbG9jayB+YXQ6dGltZSAoQWxhcm1fdmFsdWUuY3JlYXRlIChBdCBhdCkpO1xuICAgIG1haW4pXG47O1xuXG5sZXQgYWZ0ZXIgY2xvY2sgc3BhbiA9IGF0IGNsb2NrIChUaW1lX25zLmFkZCAobm93IGNsb2NrKSBzcGFuKVxuXG5sZXQgbmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgKGNsb2NrIDogQ2xvY2sudCkgfmJhc2UgfmludGVydmFsID1cbiAgbGV0IGFmdGVyID0gbm93IGNsb2NrIGluXG4gIGxldCBhdCA9IFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXIgfmludGVydmFsIH5jYW5fZXF1YWxfYWZ0ZXI6ZmFsc2UgKCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgYWZ0ZXIpO1xuICBhdFxuOztcblxubGV0IGF0X2ludGVydmFscyAoY2xvY2sgOiBDbG9jay50KSBpbnRlcnZhbCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBpZiBUaW1lX25zLlNwYW4uKCA8ICkgaW50ZXJ2YWwgKFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gY2xvY2sudGltaW5nX3doZWVsKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImF0X2ludGVydmFscyBnb3QgdG9vIHNtYWxsIGludGVydmFsXCJcbiAgICAgIGludGVydmFsXG4gICAgICBbJXNleHBfb2Y6IFRpbWVfbnMuU3Bhbi50XTtcbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGJhc2UgPSBub3cgY2xvY2sgaW5cbiAgbGV0IGF0X2ludGVydmFscyA9IHsgQXRfaW50ZXJ2YWxzLm1haW47IGJhc2U7IGludGVydmFsOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgTm9kZS5zZXRfa2luZCBtYWluIChBdF9pbnRlcnZhbHMgYXRfaW50ZXJ2YWxzKTtcbiAgKCogW21haW4gOiB1bml0IE5vZGUudF0sIHNvIHdlIG1ha2UgaXQgbmV2ZXIgY3V0b2ZmIHNvIGl0IGNoYW5nZXMgZWFjaCB0aW1lIGl0IGlzXG4gICAgIHJlY29tcHV0ZWQuICopXG4gIE5vZGUuc2V0X2N1dG9mZiBtYWluIEN1dG9mZi5uZXZlcjtcbiAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gIDwtIGFkZF9hbGFybVxuICAgICAgIGNsb2NrXG4gICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscykpO1xuICBtYWluXG47O1xuXG5sZXQgc25hcHNob3QgY2xvY2sgdmFsdWVfYXQgfmF0IH5iZWZvcmUgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy4oIDw9ICkgYXQgKG5vdyBjbG9jaylcbiAgdGhlblxuICAgIGlmIFRpbWVfbnMuKCA8ICkgYXQgKG5vdyBjbG9jaylcbiAgICB0aGVuIE9yX2Vycm9yLmVycm9yIFwiY2Fubm90IHRha2Ugc25hcHNob3QgaW4gdGhlIHBhc3RcIiBhdCBbJXNleHBfb2Y6IFRpbWVfbnMudF1cbiAgICBlbHNlIE9rIChmcmVlemUgdmFsdWVfYXQgfm9ubHlfZnJlZXplX3doZW46KEZuLmNvbnN0IHRydWUpKVxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlX3RvcCB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgICBsZXQgc25hcHNob3QgPSB7IFNuYXBzaG90Lm1haW47IGF0OyBiZWZvcmU7IHZhbHVlX2F0OyBjbG9jayB9IGluXG4gICAgTm9kZS5zZXRfa2luZCBtYWluIChTbmFwc2hvdCBzbmFwc2hvdCk7XG4gICAgKCogVW5saWtlIG90aGVyIHRpbWUtYmFzZWQgaW5jcmVtZW50YWxzLCBhIHNuYXBzaG90IGlzIGNyZWF0ZWQgaW4gW1Njb3BlLnRvcF0gYW5kXG4gICAgICAgY2Fubm90IGJlIGludmFsaWRhdGVkIGJ5IGl0cyBzY29wZS4gIFRodXMsIHRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGVcbiAgICAgICBhbGFybSB0aGF0IGlzIGFkZGVkLCBiZWNhdXNlIGl0IHdpbGwgbmV2ZXIgbmVlZCB0byBiZSByZW1vdmVkIGVhcmx5LiAqKVxuICAgIGlnbm9yZSAoYWRkX2FsYXJtIGNsb2NrIH5hdCAoQWxhcm1fdmFsdWUuY3JlYXRlIChTbmFwc2hvdCBzbmFwc2hvdCkpIDogQWxhcm0udCk7XG4gICAgT2sgbWFpbilcbjs7XG5cbmxldCBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIGNsb2NrIGNoaWxkID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBzdGVwX2Z1bmN0aW9uX25vZGUgPVxuICAgIHsgU3RlcF9mdW5jdGlvbl9ub2RlLm1haW5cbiAgICA7IHZhbHVlID0gVW9wdC5ub25lXG4gICAgOyBjaGlsZCA9IFVvcHQuc29tZSBjaGlsZFxuICAgIDsgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IHVwY29taW5nX3N0ZXBzID0gU2VxdWVuY2UuZW1wdHlcbiAgICA7IGFsYXJtID0gQWxhcm0ubnVsbFxuICAgIDsgYWxhcm1fdmFsdWUgPSBPYmoubWFnaWMgTm9uZSAoKiBzZXQgYmVsb3cgKilcbiAgICA7IGNsb2NrXG4gICAgfVxuICBpblxuICBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm1fdmFsdWUgPC0gQWxhcm1fdmFsdWUuY3JlYXRlIChTdGVwX2Z1bmN0aW9uIHN0ZXBfZnVuY3Rpb25fbm9kZSk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBtYWluXG47O1xuXG5sZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbm9kZS5zdGF0ZSBpblxuICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gU3RhYmlsaXphdGlvbl9udW0ubm9uZTtcbiAgKCogZm9yY2UgdGhlIG5vZGUgdG8gYmUgc3RhbGUgKilcbiAgaWYgTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGVcbjs7XG5cbmxldCBhZHZhbmNlX2Nsb2NrIChjbG9jayA6IENsb2NrLnQpIH50b18gPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgZW5zdXJlX25vdF9zdGFiaWxpemluZyB0IH5uYW1lOlwiYWR2YW5jZV9jbG9ja1wiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjp0cnVlO1xuICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0O1xuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IGNsb2NrKVxuICB0aGVuIChcbiAgICBzZXRfdmFyX3doaWxlX25vdF9zdGFiaWxpemluZyBjbG9jay5ub3cgdG9fO1xuICAgIFRpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrIGNsb2NrLnRpbWluZ193aGVlbCB+dG9fIH5oYW5kbGVfZmlyZWQ6Y2xvY2suaGFuZGxlX2ZpcmVkO1xuICAgIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIGNsb2NrLnRpbWluZ193aGVlbCB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICB3aGlsZSBVb3B0LmlzX3NvbWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGRvXG4gICAgICBsZXQgYWxhcm1fdmFsdWUgPSBVb3B0LnVuc2FmZV92YWx1ZSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgaW5cbiAgICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBhbGFybV92YWx1ZS5uZXh0X2ZpcmVkO1xuICAgICAgYWxhcm1fdmFsdWUubmV4dF9maXJlZCA8LSBVb3B0Lm5vbmU7XG4gICAgICBtYXRjaCBhbGFybV92YWx1ZS5hY3Rpb24gd2l0aFxuICAgICAgfCBBdCB7IG1haW47IF8gfSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgTm9kZS5zZXRfa2luZCBtYWluIChDb25zdCBBZnRlcik7XG4gICAgICAgICAgbWFrZV9zdGFsZSBtYWluKVxuICAgICAgfCBBdF9pbnRlcnZhbHMgKHsgbWFpbjsgYmFzZTsgaW50ZXJ2YWw7IF8gfSBhcyBhdF9pbnRlcnZhbHMpIC0+XG4gICAgICAgIGlmIE5vZGUuaXNfdmFsaWQgbWFpblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhdF9pbnRlcnZhbHMuYWxhcm1cbiAgICAgICAgICA8LSBhZGRfYWxhcm1cbiAgICAgICAgICAgICAgIGNsb2NrXG4gICAgICAgICAgICAgICB+YXQ6KG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IGNsb2NrIH5iYXNlIH5pbnRlcnZhbClcbiAgICAgICAgICAgICAgIGFsYXJtX3ZhbHVlO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgU25hcHNob3QgeyBtYWluOyB2YWx1ZV9hdDsgXyB9IC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3ZhbGlkIG1haW4pO1xuICAgICAgICBzZXRfZnJlZXplIG1haW4gfmNoaWxkOnZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihmdW4gXyAtPiB0cnVlKTtcbiAgICAgICAgbWFrZV9zdGFsZSBtYWluXG4gICAgICB8IFN0ZXBfZnVuY3Rpb24geyBtYWluOyBfIH0gLT4gaWYgTm9kZS5pc192YWxpZCBtYWluIHRoZW4gbWFrZV9zdGFsZSBtYWluXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGludmFyaWFudCB0KVxuOztcblxubGV0IGNyZWF0ZV9jbG9jayB0IH50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydCA9XG4gIGxldCB0aW1pbmdfd2hlZWwgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgaW5cbiAgbGV0IHJlYyBjbG9jayA6IENsb2NrLnQgPVxuICAgIHsgbm93ID0gY3JlYXRlX3ZhciB0IHN0YXJ0XG4gICAgOyBoYW5kbGVfZmlyZWRcbiAgICA7IGZpcmVkX2FsYXJtX3ZhbHVlcyA9IFVvcHQubm9uZVxuICAgIDsgdGltaW5nX3doZWVsXG4gICAgfVxuICBhbmQgaGFuZGxlX2ZpcmVkIGFsYXJtID1cbiAgICBsZXQgYWxhcm1fdmFsdWUgPSBUaW1pbmdfd2hlZWwuQWxhcm0udmFsdWUgY2xvY2sudGltaW5nX3doZWVsIGFsYXJtIGluXG4gICAgYWxhcm1fdmFsdWUubmV4dF9maXJlZCA8LSBjbG9jay5maXJlZF9hbGFybV92YWx1ZXM7XG4gICAgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIDwtIFVvcHQuc29tZSBhbGFybV92YWx1ZVxuICBpblxuICBjbG9ja1xuOztcblxubGV0IGNyZWF0ZSAobW9kdWxlIENvbmZpZyA6IENvbmZpZy5JbmNyZW1lbnRhbF9jb25maWcpIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBsZXQgYWRqdXN0X2hlaWdodHNfaGVhcCA9IEFkanVzdF9oZWlnaHRzX2hlYXAuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgbGV0IHJlY29tcHV0ZV9oZWFwID0gUmVjb21wdXRlX2hlYXAuY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgaW5cbiAgbGV0IHQgPVxuICAgIHsgc3RhdHVzID0gTm90X3N0YWJpbGl6aW5nXG4gICAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzID0gQ29uZmlnLmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNcbiAgICA7IHN0YWJpbGl6YXRpb25fbnVtID0gU3RhYmlsaXphdGlvbl9udW0uemVyb1xuICAgIDsgY3VycmVudF9zY29wZSA9IFNjb3BlLnRvcFxuICAgIDsgYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgIDsgcmVjb21wdXRlX2hlYXBcbiAgICA7IHByb3BhZ2F0ZV9pbnZhbGlkaXR5ID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBudW1fYWN0aXZlX29ic2VydmVycyA9IDBcbiAgICA7IGFsbF9vYnNlcnZlcnMgPSBVb3B0Lm5vbmVcbiAgICA7IGZpbmFsaXplZF9vYnNlcnZlcnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGRpc2FsbG93ZWRfb2JzZXJ2ZXJzID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBuZXdfb2JzZXJ2ZXJzID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPSBTdGFjay5jcmVhdGUgKClcbiAgICA7IGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBvbmx5X2luX2RlYnVnID0gT25seV9pbl9kZWJ1Zy5jcmVhdGUgKClcbiAgICA7IHdlYWtfaGFzaHRibHMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgPSBmYWxzZVxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgPSAwXG4gICAgOyBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2NoYW5nZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfaW52YWxpZGF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfY3JlYXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgPSAwXG4gICAgOyBudW1fdmFyX3NldHMgPSAwXG4gICAgfVxuICBpblxuICB0XG47O1xuXG5sZXQgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXlcbiAgICAgID8oaW5pdGlhbF9zaXplID0gZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSlcbiAgICAgIHRcbiAgICAgIGhhc2hhYmxlXG4gICAgICBwcm9qZWN0X2tleVxuICAgICAgZlxuICA9XG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBXZWFrX2hhc2h0YmwuY3JlYXRlIH5zaXplOmluaXRpYWxfc2l6ZSBoYXNoYWJsZSBpblxuICBsZXQgcGFja2VkID0gUGFja2VkX3dlYWtfaGFzaHRibC5UIHRhYmxlIGluXG4gIFdlYWtfaGFzaHRibC5zZXRfcnVuX3doZW5fdW51c2VkX2RhdGEgdGFibGUgfnRocmVhZF9zYWZlX2Y6KGZ1biAoKSAtPlxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC53ZWFrX2hhc2h0YmxzIHBhY2tlZCk7XG4gIHN0YWdlIChmdW4gYSAtPlxuICAgIGxldCBrZXkgPSBwcm9qZWN0X2tleSBhIGluXG4gICAgbWF0Y2ggV2Vha19oYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgV2Vha19oYXNodGJsLmFkZF9leG4gdGFibGUgfmtleSB+ZGF0YTpiO1xuICAgICAgYilcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgKCogR2l2ZW4gdGhhdCBpbnZhbGlkIG5vZGUgYXJlIGF0IGF0dGVtcHQgYXQgYXZvaWRpbmcgYnJlYWtpbmcgdGhlIGVudGlyZSBpbmNyZW1lbnRhbFxuICAgICBjb21wdXRhdGlvbiBvbiBwcm9ibGVtcywgbGV0J3MganVzdCBpZ25vcmUgYW55IG9wZXJhdGlvbiBvbiBhbiBpbnZhbGlkIGluY3JlbWVudGFsXG4gICAgIHJhdGhlciB0aGFuIHJhaXNpbmcuICopXG4gIGxldCBleHBlcnRfa2luZF9vZl9ub2RlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgIHwgRXhwZXJ0IGUgLT4gVW9wdC5zb21lIGVcbiAgICB8IEludmFsaWQgLT4gVW9wdC5ub25lXG4gICAgfCBraW5kIC0+IHJhaXNlX3MgWyVzZXhwIFwidW5leHBlY3RlZCBraW5kIGZvciBleHBlcnQgbm9kZVwiLCAoa2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgY3JlYXRlIHN0YXRlIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmID1cbiAgICBsZXQgZSA9IEV4cGVydC5jcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIGluXG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZSBzdGF0ZSAoRXhwZXJ0IGUpIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBpZiBPcHRpb24uaXNfc29tZSBzdGF0ZS5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGVcbiAgICAgIHRoZW5cbiAgICAgICAgc3RhdGUub25seV9pbl9kZWJ1Zy5leHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGVcbiAgICAgICAgPC0gVCBub2RlIDo6IHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlO1xuICAgIG5vZGVcbiAgOztcblxuICBsZXQgY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSA9XG4gICAgbWF0Y2ggc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJXNleHAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBkdXJpbmcgc3RhYmlsaXphdGlvblwiIDogc3RyaW5nKV1cbiAgICB8IFNvbWUgY3VycmVudCAtPiBjdXJyZW50XG4gIDs7XG5cbiAgKCogTm90ZSB0aGF0IHRoZSB0d28gZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbm90IHN5bW1ldHJpYyBvZiBvbmUgYW5vdGhlcjogaW4gW2xldCB5ID1cbiAgICAgbWFwIHhdLCBbeF0gaXMgYWx3YXlzIGEgY2hpbGQgb2YgW3ldIChhc3N1bWluZyBbeF0gZG9lc24ndCBiZWNvbWUgaW52YWxpZCkgYnV0IFt5XSBpblxuICAgICBvbmx5IGEgcGFyZW50IG9mIFt4XSBpZiB5IGlzIG5lY2Vzc2FyeS4gKilcbiAgbGV0IGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfY2hpbGQgbm9kZSB+Y2hpbGQ6Y3VycmVudClcbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslc2V4cFxuICAgICAgICAgIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgb24gcGFyZW50IG5vZGVzXCIgOiBzdHJpbmcpXG4gICAgICAgICwgfn4obm9kZS5raW5kIDogXyBLaW5kLnQpXG4gICAgICAgICwgfn4oY3VycmVudC5raW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19wYXJlbnQgc3RhdGUgbm9kZSBuYW1lID1cbiAgICBsZXQgKFQgY3VycmVudCkgPSBjdXJyZW50bHlfcnVubmluZ19ub2RlX2V4biBzdGF0ZSBuYW1lIGluXG4gICAgaWYgbm90IChOb2RlLmhhc19wYXJlbnQgfnBhcmVudDpjdXJyZW50IG5vZGUpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIGNoaWxkcmVuIG5vZGVzXCIgOiBzdHJpbmcpXG4gICAgICAgICwgfn4obm9kZS5raW5kIDogXyBLaW5kLnQpXG4gICAgICAgICwgfn4oY3VycmVudC5raW5kIDogXyBLaW5kLnQpXVxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgbGV0IGVfb3B0ID0gZXhwZXJ0X2tpbmRfb2Zfbm9kZSBub2RlIGluXG4gICAgaWYgVW9wdC5pc19zb21lIGVfb3B0XG4gICAgdGhlbiAoXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJtYWtlX3N0YWxlXCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICBtYXRjaCBFeHBlcnQubWFrZV9zdGFsZSBlIHdpdGhcbiAgICAgIHwgYEFscmVhZHlfc3RhbGUgLT4gKClcbiAgICAgIHwgYE9rIC0+XG4gICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgJiYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGUpXG4gIDs7XG5cbiAgbGV0IGludmFsaWRhdGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICAgIGxldCBzdGF0ZSA9IG5vZGUuc3RhdGUgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJpbnZhbGlkYXRlXCI7XG4gICAgaW52YWxpZGF0ZV9ub2RlIG5vZGU7XG4gICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgc3RhdGVcbiAgOztcblxuICBsZXQgYWRkX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGRlcCA6IF8gRXhwZXJ0LmVkZ2UpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgbGV0IGVfb3B0ID0gZXhwZXJ0X2tpbmRfb2Zfbm9kZSBub2RlIGluXG4gICAgaWYgVW9wdC5pc19zb21lIGVfb3B0XG4gICAgdGhlbiAoXG4gICAgICBpZiBkZWJ1Z1xuICAgICAgdGhlblxuICAgICAgICBpZiBhbV9zdGFiaWxpemluZyBzdGF0ZVxuICAgICAgICAmJiBub3RcbiAgICAgICAgICAgICAoTGlzdC5tZW1cbiAgICAgICAgICAgICAgICB+ZXF1YWw6cGh5c19lcXVhbFxuICAgICAgICAgICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgICAgICAgICAgKFQgbm9kZSkpXG4gICAgICAgIHRoZW4gYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfY2hpbGQgc3RhdGUgbm9kZSBcImFkZF9kZXBlbmRlbmN5XCI7XG4gICAgICBsZXQgZSA9IFVvcHQudW5zYWZlX3ZhbHVlIGVfb3B0IGluXG4gICAgICBsZXQgbmV3X2NoaWxkX2luZGV4ID0gRXhwZXJ0LmFkZF9jaGlsZF9lZGdlIGUgKEUgZGVwKSBpblxuICAgICAgKCogW25vZGVdIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIG5lY2Vzc2FyeSwgZXZlbiBpZiB3ZSBhcmUgcnVubmluZyBpbiBhIGNoaWxkIG9mXG4gICAgICAgICBbbm9kZV0sIGJlY2F1c2Ugd2UgY291bGQgYmUgcnVubmluZyBkdWUgdG8gYSBwYXJlbnQgb3RoZXIgdGhhbiBbbm9kZV0gbWFraW5nIHVzXG4gICAgICAgICBuZWNlc3NhcnkuICopXG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX3BhcmVudCB+Y2hpbGQ6ZGVwLmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg6bmV3X2NoaWxkX2luZGV4O1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKTtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGUpKVxuICA7O1xuXG4gIGxldCByZW1vdmVfZGVwZW5kZW5jeSAobm9kZSA6IF8gTm9kZS50KSAoZWRnZSA6IF8gRXhwZXJ0LmVkZ2UpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgbGV0IGVfb3B0ID0gZXhwZXJ0X2tpbmRfb2Zfbm9kZSBub2RlIGluXG4gICAgaWYgVW9wdC5pc19zb21lIGVfb3B0XG4gICAgdGhlbiAoXG4gICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJyZW1vdmVfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgKCogW25vZGVdIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIG5lY2Vzc2FyeSwgZm9yIHRoZSByZWFzb24gc3RhdGVkIGluXG4gICAgICAgICBbYWRkX2RlcGVuZGVuY3ldICopXG4gICAgICBsZXQgZWRnZV9pbmRleCA9IFVvcHQudmFsdWVfZXhuIGVkZ2UuaW5kZXggaW5cbiAgICAgIGxldCAoRSBsYXN0X2VkZ2UpID0gRXhwZXJ0Lmxhc3RfY2hpbGRfZWRnZV9leG4gZSBpblxuICAgICAgbGV0IGxhc3RfZWRnZV9pbmRleCA9IFVvcHQudmFsdWVfZXhuIGxhc3RfZWRnZS5pbmRleCBpblxuICAgICAgaWYgZWRnZV9pbmRleCA8PiBsYXN0X2VkZ2VfaW5kZXhcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBOb2RlLnN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmRcbiAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgIH5jaGlsZDE6ZWRnZS5jaGlsZFxuICAgICAgICAgICAgfmNoaWxkX2luZGV4MTplZGdlX2luZGV4XG4gICAgICAgICAgICB+Y2hpbGQyOmxhc3RfZWRnZS5jaGlsZFxuICAgICAgICAgICAgfmNoaWxkX2luZGV4MjpsYXN0X2VkZ2VfaW5kZXg7XG4gICAgICAgIEV4cGVydC5zd2FwX2NoaWxkcmVuIGUgfmNoaWxkX2luZGV4MTplZGdlX2luZGV4IH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBpZiBkZWJ1ZyB0aGVuIE5vZGUuaW52YXJpYW50IGlnbm9yZSBub2RlKTtcbiAgICAgIEV4cGVydC5yZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biBlO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfc3RhbGUgbm9kZSk7XG4gICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlX2NoaWxkIH5jaGlsZDplZGdlLmNoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGRfaW5kZXg6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgc3RhdGUucmVjb21wdXRlX2hlYXAgbm9kZTtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIGVkZ2UuY2hpbGQpIHRoZW4gRXhwZXJ0LmRlY3JfaW52YWxpZF9jaGlsZHJlbiBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBEZXBlbmRlbmN5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEV4cGVydC5lZGdlIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/KG9uX2NoYW5nZSA9IGlnbm9yZSkgY2hpbGQgOiBfIHQgPSB7IGNoaWxkOyBvbl9jaGFuZ2U7IGluZGV4ID0gVW9wdC5ub25lIH1cblxuICBsZXQgdmFsdWUgKHQgOiBfIHQpID1cbiAgICBsZXQgc3RhdGUgPSB0LmNoaWxkLnN0YXRlIGluXG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBTdGF0ZS5FeHBlcnQuYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50XG4gICAgICAgIHN0YXRlXG4gICAgICAgIHQuY2hpbGRcbiAgICAgICAgXCJEZXBlbmRlbmN5LnZhbHVlXCI7XG4gICAgKCogTm90IGV4cG9zaW5nIHRoZSBfZXhuLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgYWR2ZXJ0aXNlZCBhcyBiZWluZyB1c2FibGUgb25seVxuICAgICAgIGluc2lkZSB0aGUgY2FsbGJhY2tzIG9mIHBhcmVudHMsIHdoZXJlIGl0IHdpbGwgbm90IHJhaXNlLiAqKVxuICAgIE5vZGUudmFsdWVfZXhuIHQuY2hpbGRcbiAgOztcbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgTm9kZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSA/KG9uX29ic2VydmFiaWxpdHlfY2hhbmdlID0gZnVuIH5pc19ub3dfb2JzZXJ2YWJsZTpfIC0+ICgpKSBmID1cbiAgICBTdGF0ZS5FeHBlcnQuY3JlYXRlIHN0YXRlIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBmXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc3RhbGUgPSBTdGF0ZS5FeHBlcnQubWFrZV9zdGFsZVxuICBsZXQgd2F0Y2ggPSBGbi5pZFxuICBsZXQgaW52YWxpZGF0ZSA9IFN0YXRlLkV4cGVydC5pbnZhbGlkYXRlXG4gIGxldCBhZGRfZGVwZW5kZW5jeSA9IFN0YXRlLkV4cGVydC5hZGRfZGVwZW5kZW5jeVxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQucmVtb3ZlX2RlcGVuZGVuY3lcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbmxldCBjcmVhdGUgc3RhdGUgY2hpbGRyZW4gfmYgfnJlZHVjZSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggY2hpbGRyZW4gaW5cbiAgaWYgbGVuID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlZHVjZXIgPSBCYWxhbmNlZF9yZWR1Y2VyLmNyZWF0ZV9leG4gKCkgfmxlbiB+cmVkdWNlIGluXG4gICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXI7XG4gICAgbGV0IG5vZGUgPVxuICAgICAgRXhwZXJ0MS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBhID0gQmFsYW5jZWRfcmVkdWNlci5jb21wdXRlX2V4biByZWR1Y2VyIGluXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgICAgICBhKVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEV4cGVydDEuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICBub2RlXG4gICAgICAgIChFeHBlcnQxLkRlcGVuZGVuY3kuY3JlYXRlIGNoaWxkcmVuLihpKSB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICBCYWxhbmNlZF9yZWR1Y2VyLnNldF9leG4gcmVkdWNlciBpIChmIGEpO1xuICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcikpXG4gICAgZG9uZTtcbiAgICBTb21lIChFeHBlcnQxLk5vZGUud2F0Y2ggbm9kZSkpXG47O1xuIiwiKCogVGhpcyBtb2R1bGUgaXMgbW9zdGx5IGEgd3JhcHBlciBhcm91bmQgW1N0YXRlXSBmdW5jdGlvbnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBJbmNyZW1lbnRhbF9pbnRmXG5cbm1vZHVsZSB0eXBlIEluY3JlbWVudGFsX2NvbmZpZyA9IENvbmZpZy5JbmNyZW1lbnRhbF9jb25maWdcblxubW9kdWxlIENvbmZpZyA9IENvbmZpZ1xuXG5sZXQgZGVmYXVsdF9tYXhfaGVpZ2h0X2FsbG93ZWQgPSAxMjhcblxubW9kdWxlIEdlbmVyaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEN1dG9mZiA9IEN1dG9mZlxuICBtb2R1bGUgU3RlcF9mdW5jdGlvbiA9IFN0ZXBfZnVuY3Rpb25cblxuICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgdmFsIHQgOiB0XG4gICAgZW5kXG5cbiAgICBsZXQgY3JlYXRlX2ludGVybmFsID0gY3JlYXRlXG5cbiAgICBsZXQgY3JlYXRlID8obWF4X2hlaWdodF9hbGxvd2VkID0gZGVmYXVsdF9tYXhfaGVpZ2h0X2FsbG93ZWQpICgpIDogKG1vZHVsZSBTKSA9XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSAobW9kdWxlIENvbmZpZy5EZWZhdWx0ICgpKSB+bWF4X2hlaWdodF9hbGxvd2VkXG4gICAgICBlbmQpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFNjb3BlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTY29wZVxuXG4gICAgbGV0IGN1cnJlbnQgKHN0YXRlIDogU3RhdGUudCkgKCkgPSBzdGF0ZS5jdXJyZW50X3Njb3BlXG4gICAgbGV0IHdpdGhpbiBzdGF0ZSB0IH5mID0gU3RhdGUud2l0aGluX3Njb3BlIHN0YXRlIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBOb2RlXG5cbiAgbGV0IHN0YXRlIHQgPSB0LnN0YXRlXG4gIGxldCBwYWNrIHQgPSBQYWNrZWQuVCB0XG4gIGxldCBjb25zdCBzdGF0ZSBhID0gU3RhdGUuY29uc3Qgc3RhdGUgYVxuICBsZXQgcmV0dXJuID0gY29uc3RcbiAgbGV0IG9ic2VydmUgPSBTdGF0ZS5jcmVhdGVfb2JzZXJ2ZXJcbiAgbGV0IG1hcCA9IFN0YXRlLm1hcFxuICBsZXQgYmluZCA9IFN0YXRlLmJpbmRcblxuICBtb2R1bGUgTl9hcnlfbWFwX2FuZF9iaW5kID0gc3RydWN0XG4gICAgbGV0IG1hcDIgPSBTdGF0ZS5tYXAyXG4gICAgbGV0IG1hcDMgPSBTdGF0ZS5tYXAzXG4gICAgbGV0IG1hcDQgPSBTdGF0ZS5tYXA0XG4gICAgbGV0IG1hcDUgPSBTdGF0ZS5tYXA1XG4gICAgbGV0IG1hcDYgPSBTdGF0ZS5tYXA2XG4gICAgbGV0IG1hcDcgPSBTdGF0ZS5tYXA3XG4gICAgbGV0IG1hcDggPSBTdGF0ZS5tYXA4XG4gICAgbGV0IG1hcDkgPSBTdGF0ZS5tYXA5XG4gICAgbGV0IG1hcDEwID0gU3RhdGUubWFwMTBcbiAgICBsZXQgbWFwMTEgPSBTdGF0ZS5tYXAxMVxuICAgIGxldCBtYXAxMiA9IFN0YXRlLm1hcDEyXG4gICAgbGV0IG1hcDEzID0gU3RhdGUubWFwMTNcbiAgICBsZXQgbWFwMTQgPSBTdGF0ZS5tYXAxNFxuICAgIGxldCBtYXAxNSA9IFN0YXRlLm1hcDE1XG4gICAgbGV0IGJpbmQyID0gU3RhdGUuYmluZDJcbiAgICBsZXQgYmluZDMgPSBTdGF0ZS5iaW5kM1xuICAgIGxldCBiaW5kNCA9IFN0YXRlLmJpbmQ0XG4gIGVuZFxuXG4gIGluY2x1ZGUgTl9hcnlfbWFwX2FuZF9iaW5kXG5cbiAgbW9kdWxlIEluZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgICBsZXQgKCA+Pj0gKSB0IGYgPSBiaW5kIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBJbmZpeFxuXG4gIGxldCBqb2luID0gU3RhdGUuam9pblxuICBsZXQgaWZfID0gU3RhdGUuaWZfXG4gIGxldCBsYXp5X2Zyb21fZnVuIHN0YXRlIGYgPSBTdGF0ZS5sYXp5X2Zyb21fZnVuIHN0YXRlIH5mXG4gIGxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gU3RhdGUuZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZVxuICBsZXQgbWVtb2l6ZV9mdW5fYnlfa2V5ID0gU3RhdGUubWVtb2l6ZV9mdW5fYnlfa2V5XG5cbiAgbGV0IG1lbW9pemVfZnVuID9pbml0aWFsX3NpemUgc3RhdGUgaGFzaGFibGUgZiA9XG4gICAgbWVtb2l6ZV9mdW5fYnlfa2V5IHN0YXRlID9pbml0aWFsX3NpemUgaGFzaGFibGUgRm4uaWQgZlxuICA7O1xuXG4gIGxldCBhcnJheV9mb2xkIHN0YXRlIHRzIH5pbml0IH5mID0gU3RhdGUuYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZlxuICBsZXQgcmVkdWNlX2JhbGFuY2VkIHN0YXRlIHRzIH5mIH5yZWR1Y2UgPSBSZWR1Y2VfYmFsYW5jZWQuY3JlYXRlIHN0YXRlIHRzIH5mIH5yZWR1Y2VcblxuICBtb2R1bGUgVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlID0gU3RhdGUuVW5vcmRlcmVkX2FycmF5X2ZvbGRfdXBkYXRlXG5cbiAgbGV0IHVub3JkZXJlZF9hcnJheV9mb2xkID0gU3RhdGUudW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLm9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZFxuICBsZXQgYWxsID0gU3RhdGUuYWxsXG4gIGxldCBleGlzdHMgPSBTdGF0ZS5leGlzdHNcbiAgbGV0IGZvcl9hbGwgPSBTdGF0ZS5mb3JfYWxsXG4gIGxldCBib3RoID0gU3RhdGUuYm90aFxuICBsZXQgc3VtID0gU3RhdGUuc3VtXG4gIGxldCBvcHRfc3VtID0gU3RhdGUub3B0X3N1bVxuICBsZXQgc3VtX2ludCA9IFN0YXRlLnN1bV9pbnRcbiAgbGV0IHN1bV9mbG9hdCA9IFN0YXRlLnN1bV9mbG9hdFxuXG4gIG1vZHVsZSBWYXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFZhclxuXG4gICAgbGV0IGNyZWF0ZSA9IFN0YXRlLmNyZWF0ZV92YXJcbiAgICBsZXQgc2V0ID0gU3RhdGUuc2V0X3ZhclxuICAgIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuICAgIGxldCB3YXRjaCB0ID0gdC53YXRjaFxuXG4gICAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8ganVzdCBzaG93IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgICAgcmVwcmVzZW50YXRpb24uICopXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHQudmFsdWUgfD4gWyVzZXhwX29mOiBhXVxuICAgIGxldCByZXBsYWNlIHQgfmYgPSBzZXQgdCAoZiAobGF0ZXN0X3ZhbHVlIHQpKVxuICBlbmRcblxuICBtb2R1bGUgT2JzZXJ2ZXIgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE9ic2VydmVyXG5cbiAgICBtb2R1bGUgVXBkYXRlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB8IEluaXRpYWxpemVkIG9mICdhXG4gICAgICAgIHwgQ2hhbmdlZCBvZiAnYSAqICdhXG4gICAgICAgIHwgSW52YWxpZGF0ZWRcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQgb25fdXBkYXRlX2V4biB0IH4oZiA6IF8gVXBkYXRlLnQgLT4gdW5pdCkgPVxuICAgICAgU3RhdGUub2JzZXJ2ZXJfb25fdXBkYXRlX2V4biB0IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5lY2Vzc2FyeSBhIC0+IGYgKEluaXRpYWxpemVkIGEpXG4gICAgICAgIHwgQ2hhbmdlZCAoYTEsIGEyKSAtPiBmIChDaGFuZ2VkIChhMSwgYTIpKVxuICAgICAgICB8IEludmFsaWRhdGVkIC0+IGYgSW52YWxpZGF0ZWRcbiAgICAgICAgfCBVbm5lY2Vzc2FyeSAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJJbmNyZW1lbnRhbCBidWcgLS0gT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBnb3QgdW5leHBlY3RlZCB1cGRhdGUgVW5uZWNlc3NhcnlcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgWyVzZXhwX29mOiBfIHRdKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSB0ID0gU3RhdGUuZGlzYWxsb3dfZnV0dXJlX3VzZSAhdFxuICAgIGxldCB2YWx1ZSA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlXG4gICAgbGV0IHZhbHVlX2V4biA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlX2V4blxuXG4gICAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8ganVzdCBzaG93IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgICAgcmVwcmVzZW50YXRpb24uICopXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKHQgOiBfIHQpID1cbiAgICAgIG1hdGNoICF0LnN0YXRlIHdpdGhcbiAgICAgIHwgQ3JlYXRlZCAtPiBbJW1lc3NhZ2UgXCI8dW5zdGFiaWxpemVkPlwiXVxuICAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gWyVtZXNzYWdlIFwiPGRpc2FsbG93ZWQ+XCJdXG4gICAgICB8IEluX3VzZSAtPlxuICAgICAgICBsZXQgdW9wdCA9ICF0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICAgICAgdGhlbiBbJW1lc3NhZ2UgXCI8aW52YWxpZD5cIl1cbiAgICAgICAgZWxzZSBbJXNleHAgKFVvcHQudW5zYWZlX3ZhbHVlIHVvcHQgOiBhKV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgQmVmb3JlX29yX2FmdGVyID0gQmVmb3JlX29yX2FmdGVyXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZS5DbG9ja1xuXG4gICAgbGV0IHN0YXRlID0gaW5jcl9zdGF0ZVxuXG4gICAgbGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCBpblxuICAgICAgbGV0IGxldmVsX2JpdHMgPSBbIDE0OyAxMzsgNSBdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgICAgIH5sZXZlbF9iaXRzOlxuICAgICAgICAgIChUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMgfmV4dGVuZF90b19tYXhfbnVtX2JpdHM6dHJ1ZSlcbiAgICAgICAgKClcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBzdGF0ZSA/KHRpbWluZ193aGVlbF9jb25maWcgPSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcpIH5zdGFydCAoKSA9XG4gICAgICAoKiBNYWtlIHN1cmUgW3N0YXJ0XSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAgT3RoZXJ3aXNlLCBpZiB5b3VcbiAgICAgICAgIGZlZWQgW0Nsb2NrLm5vdyAoKV0gdG8gYSB0aW1lIGZ1bmN0aW9uLCBpdCBjYW4gYmUgcm91bmRlZCBkb3duIHRvIGEgdGltZSBpblxuICAgICAgICAgdGhlIHBhc3QsIGNhdXNpbmcgZXJyb3JzLiAqKVxuICAgICAgbGV0IHN0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5vZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbiAgICAgICAgICAoVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgc3RhcnQpXG4gICAgICBpblxuICAgICAgU3RhdGUuY3JlYXRlX2Nsb2NrIHN0YXRlIH50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydFxuICAgIDs7XG5cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQudGltaW5nX3doZWVsXG4gICAgbGV0IHRpbWluZ193aGVlbF9sZW5ndGggPSBTdGF0ZS50aW1pbmdfd2hlZWxfbGVuZ3RoXG4gICAgbGV0IG5vdyA9IFN0YXRlLm5vd1xuICAgIGxldCB3YXRjaF9ub3cgdCA9IHQubm93LndhdGNoXG4gICAgbGV0IGF0ID0gU3RhdGUuYXRcbiAgICBsZXQgYWZ0ZXIgPSBTdGF0ZS5hZnRlclxuICAgIGxldCBhdF9pbnRlcnZhbHMgPSBTdGF0ZS5hdF9pbnRlcnZhbHNcbiAgICBsZXQgYWR2YW5jZV9jbG9jayA9IFN0YXRlLmFkdmFuY2VfY2xvY2tcbiAgICBsZXQgYWR2YW5jZV9jbG9ja19ieSB0IHNwYW4gPSBhZHZhbmNlX2Nsb2NrIHQgfnRvXzooVGltZV9ucy5hZGQgKG5vdyB0KSBzcGFuKVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uID0gU3RhdGUuaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG4gICAgbGV0IHN0ZXBfZnVuY3Rpb24gdCB+aW5pdCBzdGVwcyA9XG4gICAgICBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG4gICAgICAgIHRcbiAgICAgICAgKGNvbnN0IChpbmNyX3N0YXRlIHQpIChTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzKSlcbiAgICA7O1xuXG4gICAgbGV0IHNuYXBzaG90ID0gU3RhdGUuc25hcHNob3RcbiAgZW5kXG5cbiAgbGV0IGZyZWV6ZSA/KHdoZW5fID0gZnVuIF8gLT4gdHJ1ZSkgdCA9IFN0YXRlLmZyZWV6ZSB0IH5vbmx5X2ZyZWV6ZV93aGVuOndoZW5fXG4gIGxldCBkZXBlbmRfb24gdCB+ZGVwZW5kX29uID0gU3RhdGUuZGVwZW5kX29uIHQgfmRlcGVuZF9vblxuICBsZXQgbmVjZXNzYXJ5X2lmX2FsaXZlID0gU3RhdGUubmVjZXNzYXJ5X2lmX2FsaXZlXG5cbiAgbW9kdWxlIFVwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbiAgbGV0IG9uX3VwZGF0ZSA9IFN0YXRlLm5vZGVfb25fdXBkYXRlXG4gIGxldCBzdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5zdGFiaWxpemUgc3RhdGVcbiAgbGV0IGFtX3N0YWJpbGl6aW5nIHN0YXRlID0gU3RhdGUuYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgbGV0IHNhdmVfZG90ID0gU3RhdGUuc2F2ZV9kb3RcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgPSBTdGF0ZS5zYXZlX2RvdF90b19maWxlXG5cbiAgbW9kdWxlIE5vZGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBJbnZhbGlkXG4gICAgICB8IE5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICAgIHwgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IG5vZGVfdmFsdWUgdCA6IF8gTm9kZV92YWx1ZS50ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBJbnZhbGlkXG4gICAgZWxzZSBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gTmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgICBlbHNlIFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgOztcblxuICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBzaG93IGp1c3QgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgcmVwcmVzZW50YXRpb24uICBXZSBvbmx5IHNob3cgdGhlIHZhbHVlIGlmIGl0IGlzIG5lY2Vzc2FyeSBhbmQgdmFsaWQuICopXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIFwiPGludmFsaWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgIHRoZW4gXCI8dW5uZWNlc3Nhcnk+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBVb3B0LmlzX25vbmUgdC52YWx1ZV9vcHRcbiAgICB0aGVuIFwiPHVuY29tcHV0ZWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSB1bnNhZmVfdmFsdWUgdCB8PiBbJXNleHBfb2Y6IGFdXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IEV4cGVydDFcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIHQxIHQyID0gbWFwMiB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MilcblxuICAgICAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgICAgIGxldCB3YXRjaCA9IFZhci53YXRjaFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NvbmZpZyAoSW5jcmVtZW50YWxfY29uZmlnIDogSW5jcmVtZW50YWxfY29uZmlnKSAoKSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlXG5cbiAgICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCAobW9kdWxlIEluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZDoxMjhcbiAgZW5kXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBDbG9ja1xuXG4gICAgbGV0IGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgKCkgPVxuICAgICAgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIFN0YXRlLnQgfnN0YXJ0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwZXJ0XG5cbiAgICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgIGxldCBjcmVhdGUgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPSBjcmVhdGUgU3RhdGUudCA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICAgIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgKCkgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgU3RhdGUudFxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50ICgpID0gY3VycmVudCBTdGF0ZS50ICgpXG4gICAgbGV0IHdpdGhpbiB0IH5mID0gd2l0aGluIFN0YXRlLnQgdCB+ZlxuICBlbmRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIHZhbHVlID0gY3JlYXRlID91c2VfY3VycmVudF9zY29wZSBTdGF0ZS50IHZhbHVlXG4gIGVuZFxuXG4gIGxldCBjb25zdCBhID0gY29uc3QgU3RhdGUudCBhXG4gIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcbiAgbGV0IGFsbCB0cyA9IGFsbCBTdGF0ZS50IHRzXG4gIGxldCBleGlzdHMgdHMgPSBleGlzdHMgU3RhdGUudCB0c1xuICBsZXQgZm9yX2FsbCB0cyA9IGZvcl9hbGwgU3RhdGUudCB0c1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID0gbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgbGV0IGFycmF5X2ZvbGQgdHMgfmluaXQgfmYgPSBhcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCB0cyB+ZiB+cmVkdWNlID0gcmVkdWNlX2JhbGFuY2VkIFN0YXRlLnQgdHMgfmYgfnJlZHVjZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+dXBkYXRlID1cbiAgICB1bm9yZGVyZWRfYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mIH51cGRhdGUgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOztcblxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH5mX2ludmVyc2UgPVxuICAgIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH5pbml0IH5mIH5mX2ludmVyc2VcbiAgOztcblxuICBsZXQgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IHN1bV9pbnQgdHMgPSBzdW1faW50IFN0YXRlLnQgdHNcbiAgbGV0IHN1bV9mbG9hdCB0cyA9IHN1bV9mbG9hdCBTdGF0ZS50IHRzXG4gIGxldCBzdGFiaWxpemUgKCkgPSBzdGFiaWxpemUgU3RhdGUudFxuICBsZXQgYW1fc3RhYmlsaXppbmcgKCkgPSBhbV9zdGFiaWxpemluZyBTdGF0ZS50XG4gIGxldCBzYXZlX2RvdCBvdXQgPSBzYXZlX2RvdCBTdGF0ZS50IG91dFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlID0gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZpbGUgfmY6c2F2ZV9kb3RcbiAgbGV0IGxhenlfZnJvbV9mdW4gZiA9IGxhenlfZnJvbV9mdW4gU3RhdGUudCBmXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoKSA9IE1ha2Vfd2l0aF9jb25maWcgKENvbmZpZy5EZWZhdWx0ICgpKSAoKVxuaW5jbHVkZSBHZW5lcmljXG5cbm1vZHVsZSBBZGRfd2l0bmVzczAgKE0gOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgJ3cgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICd3IHQgPSBNLnRcblxuICBsZXQgaW52YXJpYW50IF8gdCA9IE0uaW52YXJpYW50IHRcbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBNLnNleHBfb2ZfdCB0XG5lbmRcblxubW9kdWxlIEFkZF93aXRuZXNzMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IE0uaW52YXJpYW50IGludmFyaWFudF9hIHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gTS5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbmVuZFxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDbG9ja1xuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoQ2xvY2spXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVydFxuXG4gIG1vZHVsZSBEZXBlbmRlbmN5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE5vZGVcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGVcbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICBpbmNsdWRlIE5vZGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE5vZGUpXG5lbmRcblxudHlwZSAoJ2EsICd3KSB0ID0gKCdhLCAndykgTm9kZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG50eXBlICgnYSwgJ3cpIGluY3JlbWVudGFsID0gKCdhLCAndykgdFxuXG5sZXQgaW52YXJpYW50ID0gTm9kZS5pbnZhcmlhbnRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE9ic2VydmVyKVxuZW5kXG5cbm1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICBpbmNsdWRlIFNjb3BlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTY29wZSlcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGF0ZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU3RhdGUpXG5lbmRcblxubW9kdWxlIFZhciA9IHN0cnVjdFxuICBpbmNsdWRlIFZhclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoVmFyKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIGluY3JlbWVudGFsXG4gICAgd2l0aCB0eXBlIEJlZm9yZV9vcl9hZnRlci50ID0gQmVmb3JlX29yX2FmdGVyLnRcbiAgICB3aXRoIHR5cGUgQ2xvY2sudCA9IHN0YXRlX3dpdG5lc3MgQ2xvY2sudFxuICAgIHdpdGggdHlwZSAnYSBDdXRvZmYudCA9ICdhIEN1dG9mZi50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5EZXBlbmRlbmN5LnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5EZXBlbmRlbmN5LnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0Lk5vZGUudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0Lk5vZGUudFxuICAgIHdpdGggdHlwZSBFeHBlcnQuU3RlcF9yZXN1bHQudCA9IEV4cGVydC5TdGVwX3Jlc3VsdC50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIE9ic2VydmVyLnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIuVXBkYXRlLnQgPSAnYSBPYnNlcnZlci5VcGRhdGUudFxuICAgIHdpdGggdHlwZSBQYWNrZWQudCA9IFBhY2tlZC50XG4gICAgd2l0aCB0eXBlIFNjb3BlLnQgPSBzdGF0ZV93aXRuZXNzIFNjb3BlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUudCA9IHN0YXRlX3dpdG5lc3MgU3RhdGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS5TdGF0cy50ID0gU3RhdGUuU3RhdHMudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudCA9XG4gICAgICAgICAgICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFVwZGF0ZS50ID0gJ2EgVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVmFyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIFZhci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGRlYnVnID0gZGVidWdcbmVuZFxuIiwiXG5vcGVuIEJhc2VcblxubW9kdWxlIENvbW11dGF0aXZlX2dyb3VwID0gc3RydWN0XG4gICgqKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgICAgICsgYXNzb2NpYXRpdml0eTogWyhhICsgYikgKyBjID0gYSArIChiICsgYyldXG4gICAgICArIGlkZW50aXR5OiBbemVybyArIGEgPSBhICsgemVybyA9IGFdXG4gICAgICArIGludmVyc2VzOiBnaXZlbiBhbnkgW2FdIHRoZXJlIGV4aXN0cyBhICh1bmlxdWUpIGVsdCBbYl0gc3VjaCB0aGF0IFthICsgYiA9IGIgKyBhID1cbiAgICAgIHplcm9dXG4gICAgICArIGNvbW11dGF0aXZpdHk6IFthICsgYiA9IGIgKyBhXVxuICAqKVxuXG4gIG1vZHVsZSB0eXBlIFdpdGhvdXRfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICgrKSAgOiB0IC0+IHQgLT4gdFxuICAgIHZhbCAoLSkgIDogdCAtPiB0IC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGluY2x1ZGUgV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFZlY3Rvcl9zcGFjZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG4gICAgaW5jbHVkZSBDb21tdXRhdGl2ZV9ncm91cC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IHN0cnVjdFxuICAoKiogQWxsIFtJbmNyX21hcF0gZnVuY3Rpb25zIHRha2UgYW4gb3B0aW9uYWwgW2luc3RydW1lbnRhdGlvbl0gcGFyYW1ldGVyIHRoYXQgaGFzIHR5cGVcbiAgICAgIFtJbnN0cnVtZW50YXRpb24udF0uICBBIHZhbHVlIG9mIHRoaXMgdHlwZSBpcyBhIHJlY29yZCBjb250YWluaW5nIGEgZnVuY3Rpb24gd2hpY2hcbiAgICAgIGlzIHBvbHltb3JwaGljIG92ZXIgYSB1bml2ZXJzYWxseS1xdWFudGlmaWVkIHR5cGUgWydhXS4gVGhpcyBmdW5jdGlvbiBpcyBwYXNzZWRcbiAgICAgIGEgW3VuaXQgLT4gJ2FdIGZ1bmN0aW9uLCB3aGljaCBtdXN0IGJlIGltbWVkaWF0ZWx5IGV4ZWN1dGVkLCBhbmQgdGhlIHJlc3VsdCBvZlxuICAgICAgd2hpY2ggbXVzdCBiZSByZXR1cm5lZC5cblxuICAgICAgVGhlIGZ1bmN0aW9uIHBhc3NlZCB0byB0aGUgaW5zdHJ1bWVudG9yIHdpbGwgYmUgZG9pbmcgdGhlIGJ1bGsgb2YgdGhlIHdvcmsgZm9yIHRoZVxuICAgICAgW0luY3JfbWFwXSBmdW5jdGlvbiBpbiBxdWVzdGlvbiAodXN1YWxseSBhIFtNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZl0pLlxuXG4gICAgICBZb3UgbWF5IHdhbnQgdG8gdXNlIHRoZSBJbnN0cnVtZW50YXRpb24gQVBJIHRvIGFzc2lzdCBpbiBwZXJmb3JtYW5jZSBwcm9maWxpbmcgbGlrZVxuICAgICAgc286XG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBwcm9maWxlIG5hbWUgPVxuICAgICAgICAgIHsgSW5jcl9tYXAuSW5zdHJ1bWVudGF0aW9uLmYgPSBmdW4gZiAtPlxuICAgICAgICAgICAgICBsZXQgYmVmb3JlID0gVGltZS5ub3cgKCkgaW5cbiAgICAgICAgICAgICAgbGV0IHIgPSBmICgpIGluXG4gICAgICAgICAgICAgIGxldCBhZnRlciA9IFRpbWUubm93ICgpIGluXG4gICAgICAgICAgICAgIGxldCBkZWx0YSA9IFRpbWUuc3ViIGFmdGVyIGJlZm9yZSBpblxuICAgICAgICAgICAgICBwcmludGYgXCIlcyB0b29rICVzXCIgbmFtZSAoVGltZS5TcGFuLnRvX3N0cmluZ19odW0gZGVsdGEpO1xuICAgICAgICAgICAgICByXG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIEluY3JfbWFwLm1hcCB+aW5zdHJ1bWVudGF0aW9uOihwcm9maWxlIFwiZm9vXCIpIH5mOm1hcF9mb29cbiAgICAgIF19ICopXG5cbiAgdHlwZSB0ID0geyBmIDogJ2EuICh1bml0IC0+ICdhKSAtPiAnYSB9IFtAQHVuYm94ZWRdXG5lbmRcblxuKCoqIFtTX2dlbl0gaXMgdGhlIHR5cGUgb2YgdGhlIG1vZHVsZSByZXR1cm5lZCBieSBbSW5jcl9tYXAuTWFrZV0uICBJdCBpcyBhIHNwZWNpYWxpemF0aW9uXG4gICAgb2YgdGhlIGludGVyZmFjZSBvZiBbSW5jcl9tYXBdLCB3aXRoOlxuXG4gICAgLSB0aGUgWyd3XSBzdGF0ZV93aXRuZXNzIHR5cGUgcGFyYW1ldGVyIHJlbW92ZWRcbiAgICAtIHRoZSBbSW5jcmVtZW50YWwuU3RhdGUudF0gYXJndW1lbnQgcmVtb3ZlZFxuXG4gICAgVGhlIGNvbW1lbnRzIGZvciBjb21wb25lbnRzIG9mIFtTX2dlbl0gYXJlIGluIFttb2R1bGUgdHlwZSBJbmNyX21hcF0gYmVsb3cuICopXG5tb2R1bGUgdHlwZSBTX2dlbiA9IHNpZ1xuICBtb2R1bGUgSW5jciA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgbW9kdWxlIEN1dG9mZiA6IHNpZ1xuICAgICAgdHlwZSAnYSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBJbnN0cnVtZW50YXRpb24gPSBJbnN0cnVtZW50YXRpb25cblxuICB2YWwgb2Zfc2V0XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgnaywgJ2NtcCkgU2V0LnQgSW5jci50XG4gICAgLT4gKCdrLCB1bml0LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2MSAtPiAndjIpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBmaWx0ZXJfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSBJbmNyLnQgLT4gJ3YyIG9wdGlvbiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIEluY3IudCAtPiAndjIgSW5jci50KVxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZmlsdGVyX21hcCdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jci5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2MSBJbmNyLnQgLT4gJ3YyIG9wdGlvbiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtYXAnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOigndjEgSW5jci50IC0+ICd2MiBJbmNyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50ICogKCdrLCAndjMsICdjbXApIE1hcC50KSBJbmNyLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGknXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6J3YxIEluY3IuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgSW5jci50IC0+ICgndjIsICd2MykgRWl0aGVyLnQgSW5jci50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQpIEluY3IudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9zcGVjaWFsaXplZF9pbml0aWFsOihpbml0OidhY2MgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdhY2MpXG4gICAgLT4gJ2FjYyBJbmNyLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/ZXh0cmFfZXF1YWw6KCdleHRyYSAtPiAnZXh0cmEgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/c3BlY2lhbGl6ZWRfaW5pdGlhbDooaW5pdDonYWNjIC0+ICgnaywgJ3YsICdlKSBNYXAudCAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCdrLCAndiwgJ2UpIE1hcC50IEluY3IudFxuICAgIC0+ICdleHRyYSBJbmNyLnRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBhZGQ6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2V4dHJhIC0+ICdhY2MpXG4gICAgLT4gcmVtb3ZlOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IGV4dHJhX2NoYW5nZWQ6XG4gICAgICAgICAob2xkX2V4dHJhOidleHRyYVxuICAgICAgICAgIC0+IG5ld19leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBpbnB1dDooJ2ssICd2LCAnZSkgTWFwLnRcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAnYWNjIEluY3IudFxuXG4gIHZhbCBjdXRvZmZcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY3V0b2ZmOid2IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1hcGlfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoJ2syLCBpbnQsICdjbXAyKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KCd2IC0+ICdrMilcbiAgICAtPiAoJ2syLCBpbnQsICdjbXAyKSBNYXAudCBJbmNyLnRcblxuICB2YWwgbWFwaV9taW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAnciBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1hcGlfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBfbWluXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBfbWF4XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gJ3Igb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtaW5fdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3YsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAndiBvcHRpb24gSW5jci50XG5cbiAgdmFsIG1heF92YWx1ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICd2IG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWFwaV9ib3VuZHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAncilcbiAgICAtPiAoJ3IgKiAncikgb3B0aW9uIEluY3IudFxuXG4gIHZhbCBtYXBfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCdyICogJ3IpIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgdmFsdWVfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCd2ICogJ3YpIG9wdGlvbiBJbmNyLnRcblxuICB2YWwgbWVyZ2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IC0+ICd2MyBvcHRpb24pXG4gICAgLT4gKCdrLCAndjMsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBtZXJnZV9ib3RoX3NvbWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gP291dF9lcXVhbDooJ3YzIC0+ICd2MyAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+ICd2MSAtPiAndjIgLT4gJ3YzKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW56aXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2xlZnRfcmVzdWx0X2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YxICogJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2ssICd2MSwgJ2NtcCkgTWFwLnQgSW5jci50ICogKCdrLCAndjIsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCB1bnppcF9tYXBpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9sZWZ0X3Jlc3VsdF9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAndjEgKiAndjIpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudCAqICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW56aXBfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondiBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgSW5jci50IC0+ICd2MSBJbmNyLnQgKiAndjIgSW5jci50KVxuICAgIC0+ICgnaywgJ3YxLCAnY21wKSBNYXAudCBJbmNyLnQgKiAoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIG1lcmdlJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOigndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCBJbmNyLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndjEsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gKCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IEluY3IudCAtPiAndjMgb3B0aW9uIEluY3IudClcbiAgICAtPiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGZsYXR0ZW4gOiAoJ2ssICd2IEluY3IudCwgJ2NtcCkgTWFwLnQgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIGpvaW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiBJbmNyLnQsICdjbXApIE1hcC50IEluY3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBzZXBhcmF0ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YgSW5jci50LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwga2V5c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoJ2ssICd2LCAnYykgTWFwLnQgSW5jci50XG4gICAgLT4gKCdrLCAnYykgU2V0LnQgSW5jci50XG5cbiAgdmFsIHJhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgQmFzZS5NYXAudCBJbmNyLnRcbiAgICAtPiAnayBJbmNyLnRcbiAgICAtPiBpbnQgb3B0aW9uIEluY3IudFxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2sgTWF5YmVfYm91bmQuQXNfbG93ZXJfYm91bmQudCAqICdrIE1heWJlX2JvdW5kLkFzX3VwcGVyX2JvdW5kLnQpIG9wdGlvbiBJbmNyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgc3VicmFuZ2VfYnlfcmFua1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoaW50IE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiBpbnQgTWF5YmVfYm91bmQuQXNfdXBwZXJfYm91bmQudCkgSW5jci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG5cbiAgdmFsIHJla2V5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSBNYXAudCBJbmNyLnRcblxuICB2YWwgaW5kZXhfYnlpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OihrZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgaW5kZXhfYnlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBjb21wYXJhdG9yOignb3V0ZXJfa2V5LCAnb3V0ZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gaW5kZXg6KCd2IC0+ICdvdXRlcl9rZXkgb3B0aW9uKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP3JldmVydF90b19pbml0X3doZW5fZW1wdHk6Ym9vbFxuICAgIC0+ID91cGRhdGU6XG4gICAgICAgICAob3V0ZXJfa2V5OidvdXRlcl9rZXlcbiAgICAgICAgICAtPiBpbm5lcl9rZXk6J2lubmVyX2tleVxuICAgICAgICAgIC0+IG9sZF9kYXRhOid2XG4gICAgICAgICAgLT4gbmV3X2RhdGE6J3ZcbiAgICAgICAgICAtPiAnYWNjXG4gICAgICAgICAgLT4gJ2FjYylcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICdhY2MgSW5jci50XG5cbiAgdmFsIHRyYW5zcG9zZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2syLCAnazJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrMSwgKCdrMiwgJ3YsICdrMl9jbXApIE1hcC50LCAnazFfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiAoJ2syLCAoJ2sxLCAndiwgJ2sxX2NtcCkgTWFwLnQsICdrMl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBjb2xsYXBzZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnQgSW5jci50XG4gICAgLT4gY29tcGFyYXRvcjooJ2lubmVyX2tleSwgJ2lubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICggJ291dGVyX2tleSAqICdpbm5lcl9rZXlcbiAgICAgICAsICd2XG4gICAgICAgLCAoJ291dGVyX2NtcCwgJ2lubmVyX2NtcCkgVHVwbGUyLmNvbXBhcmF0b3Jfd2l0bmVzcyApXG4gICAgICAgICBNYXAudFxuICAgICAgICAgSW5jci50XG5cbiAgdmFsIGNvbGxhcHNlX2J5XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudCBJbmNyLnRcbiAgICAtPiBtZXJnZV9rZXlzOignb3V0ZXJfa2V5IC0+ICdpbm5lcl9rZXkgLT4gJ2NvbWJpbmVkX2tleSlcbiAgICAtPiBjb21wYXJhdG9yOignY29tYmluZWRfa2V5LCAnY29tYmluZWRfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdjb21iaW5lZF9rZXksICd2LCAnY29tYmluZWRfY21wKSBNYXAudCBJbmNyLnRcblxuICB2YWwgZXhwYW5kXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnb3V0ZXJfa2V5ICogJ2lubmVyX2tleSwgJ3YsICd0dXBsZV9jbXApIE1hcC50IEluY3IudFxuICAgIC0+IG91dGVyX2NvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbm5lcl9jb21wYXJhdG9yOignaW5uZXJfa2V5LCAnaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50IEluY3IudFxuXG4gIHZhbCBjb3VudGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiBpbnQgSW5jci50XG5cbiAgdmFsIGNvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiBpbnQgSW5jci50XG5cbiAgdmFsIGZvcl9hbGxpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnaywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gYm9vbCBJbmNyLnRcblxuICB2YWwgZm9yX2FsbFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gYm9vbCBJbmNyLnRcblxuICB2YWwgZXhpc3RzaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCBfKSBNYXAudCBJbmNyLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IGJvb2wgSW5jci50XG5cbiAgdmFsIGV4aXN0c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoXywgJ3YsIF8pIE1hcC50IEluY3IudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gYm9vbCBJbmNyLnRcblxuICB2YWwgc3VtXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IChfLCAndiwgXykgTWFwLnQgSW5jci50XG4gICAgLT4gKG1vZHVsZSBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9ICd1KVxuICAgIC0+IGY6KCd2IC0+ICd1KVxuICAgIC0+ICd1IEluY3IudFxuXG4gIG1vZHVsZSBMb29rdXAgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YsICdjbXApIHRcblxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgSW5jci50XG4gICAgICAtPiBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgICB2YWwgZmluZCA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgLT4gJ3Ygb3B0aW9uIEluY3IudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgRm9yX2RlYnVnIDogc2lnXG4gICAgICB2YWwgc2V4cF9vZl90IDogKCdrIC0+IFNleHAudCkgLT4gKCd2IC0+IFNleHAudCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBTZXhwLnRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdmFsIGZpbmRfa2V5X3JhbmdlX2xpbmVhclxuICAgICAgOiAgZnJvbTppbnRcbiAgICAgIC0+IHRvXzppbnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSBCYXNlLk1hcC50XG4gICAgICAtPiAoJ2EgKiAnYSBvcHRpb24pIG9wdGlvblxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmNyX21hcCA9IHNpZ1xuICAoKiogRnVuY3Rpb25zIGZvciB1c2luZyBtYXBzIGVmZmljaWVudGx5IHdpdGhpbiBJbmNyZW1lbnRhbC4gIFRoZSBnb2FsIG9mIHRoZSBhbGdvcml0aG1zXG4gICAgICBoZXJlIGlzIHRvIGRvIHdvcmsgb24gdGhlIG91dHB1dCBvZiB0aGUgY29tcHV0YXRpb24gcHJvcG9ydGlvbmFsIHRvIHRoZSBhbW91bnQgb2ZcbiAgICAgIHdvcmsgZG9uZSBvbiB0aGUgaW5wdXQuICBpLmUuLCBba10gbW9kaWZpY2F0aW9ucyB0byB0aGUgaW5wdXQgbWFwIGZvciBzb21lXG4gICAgICBjb21wdXRhdGlvbiB3aWxsIHJlc3VsdCBpbiBba10gbW9kaWZpY2F0aW9ucyB0byB0aGUgb3V0cHV0IG1hcC4gIFRoZSBjaGFuZ2VzIHRvIHRoZVxuICAgICAgaW5wdXQgbWFwIGFyZSB0eXBpY2FsbHkgY29tcHV0ZWQgdXNpbmcgW01hcC5zeW1tZXRyaWNfZGlmZl0uXG5cbiAgICAgIFVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCB0aGUgbm9uLWluY3JlbWVudGFsIHNlbWFudGljcyBvZiB0aGVzZSBmdW5jdGlvbnMgKGkuZS4uLFxuICAgICAgaWdub3JpbmcgcGVyZm9ybWFuY2UpIGlzIHRoZSBzYW1lIGFzIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIGluIENvcmUncyBbTWFwXVxuICAgICAgbW9kdWxlLiAgKilcblxuICBtb2R1bGUgSW5zdHJ1bWVudGF0aW9uID0gSW5zdHJ1bWVudGF0aW9uXG5cbiAgdmFsIG9mX3NldFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAnY21wKSBTZXQudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCB1bml0LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIG1hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAndjIpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgbWFwXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigndjEgLT4gJ3YyKVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZpbHRlcl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndykgSW5jcmVtZW50YWwudCAtPiAoJ3YyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigoJ3YxLCAndykgSW5jcmVtZW50YWwudCAtPiAoJ3YyLCAndykgSW5jcmVtZW50YWwudClcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBmaWx0ZXJfbWFwJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOigoJ3YxLCAndykgSW5jcmVtZW50YWwudCAtPiAoJ3YyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondjEgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2MSwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3cpIEluY3JlbWVudGFsLnQgLT4gKCd2MiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2MSAtPiAndjEgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2MSAtPiAoJ3YyLCAndjMpIEVpdGhlci50KVxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQgKiAoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpJ1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/Y3V0b2ZmOid2MSBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOlxuICAgICAgICAgKGtleTona1xuICAgICAgICAgIC0+IGRhdGE6KCd2MSwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoKCd2MiwgJ3YzKSBFaXRoZXIudCwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YyLCAnY21wKSBNYXAudCAqICgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3Vub3JkZXJlZF9mb2xkIGkgfmluaXQgfmFkZCB+cmVtb3ZlXSBjb25zdHJ1Y3RzIGEgbW9yZSBpbmNyZW1lbnRhbCB2ZXJzaW9uIG9mOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQlbWFwIG0gPSBpIGluXG4gICAgICAgIE1hcC5mb2xkIG0gfmluaXQgfmY6YWRkXG4gICAgICBdfVxuXG4gICAgICBhc3N1bWluZyB0aGF0IFtyZW1vdmVdIGlzIHRoZSBpbnZlcnNlIG9mIFthZGRdLCBhbmQgdGhhdCB0aGUgb3BlcmF0aW9ucyBmb3JcbiAgICAgIGRpZmZlcmVudCBrZXlzIGNhbiBiZSBwZXJmb3JtZWQgaW4gYW55IG9yZGVyLiBOb3RlIHRoYXQgW2RhdGFfZXF1YWxdIGRlZmF1bHRzXG4gICAgICB0byBbcGh5c19lcXVhbF0sIGJ1dCBhIG1vcmUgcHJlY2lzZSBlcXVhbGl0eSBjYW4gYmUgcHJvdmlkZWQgaW5zdGVhZC5cblxuICAgICAgV2hlbiB0aGUgZGF0YSBmb3IgYSBrZXkgdXBkYXRlcywgYnkgZGVmYXVsdCBbcmVtb3ZlXSBpcyBjYWxsZWQgb24gdGhlIG9sZCBkYXRhXG4gICAgICBhbmQgdGhlbiBbYWRkXSBpcyBjYWxsZWQgb24gdGhlIG5ldyBkYXRhLlxuICAgICAgW3VwZGF0ZV0gcHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgc2luZ2xlIGZ1bmN0aW9uIHRvIGNhbGwgZWFjaCB0aW1lIGEga2V5J3MgZGF0YVxuICAgICAgdXBkYXRlcywgYW5kIGNhbiBiZSB1c2VkIHRvIGltcHJvdmUgZWZmaWNpZW5jeS5cblxuICAgICAgRm9yIHRoZSBpbml0aWFsIGNvbXB1dGF0aW9uLCBieSBkZWZhdWx0IFthZGRdIGlzIGNhbGxlZCBvbiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoZVxuICAgICAgbWFwLiBBcyB0aGlzIGNhbiBiZSBpbmVmZmljaWVudCwgW3NwZWNpYWxpemVkX2luaXRpYWxdIGNhbiBiZSBwcm92aWRlZCB0byBwZXJmb3JtXG4gICAgICB0aGUgY29tcHV0YXRpb24gaW4gYSBtb3JlIGVmZmVjdGl2ZSB3YXkuXG5cbiAgICAgIElmIFtyZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XSBpcyB0cnVlLCB0aGVuIGlmIHRoZSBpbnB1dCBtYXAgdHJhbnNpdGlvbnMgZnJvbVxuICAgICAgYmVpbmcgZnVsbCB0byBlbXB0eSwgdGhlbiBpbnN0ZWFkIG9mIGNhbGxpbmcgW3JlbW92ZV0gb24gZXZlcnkga3YtcGFpciwgaXQgd2lsbFxuICAgICAgaW5zdGVhZCBqdXN0IHNldCB0aGUgb3V0cHV0IHRvIHdoYXRldmVyIHlvdSd2ZSBwYXNzZWQgYXMgW2luaXRdLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgW3JldmVydF90b19pbml0X3doZW5fZW1wdHldIGlzIFtmYWxzZV0sIHNvIHRoaXMgb3B0aW1pemF0aW9uXG4gICAgICBkb2VzIG5vdCBhcHBseSBhdXRvbWF0aWNhbGx5LlxuXG4gICAgICBbZmluYWxpemVdIGRlZmF1bHRzIHRvIFtGbi5pZF0gaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgYWNjdW11bGF0b3IgdmFsdWVcbiAgICAgIGlzIHN0b3JlZCBhbmQgcmV0dXJuZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICBZb3UgY2FuIHVzZSBpdCB0byBlLmcuIHByb2Nlc3MgdGhlXG4gICAgICBmb2xkIG9wZXJhdGlvbnMgaW4gYSBkaWZmZXJlbnQgb3JkZXIuICopXG4gIHZhbCB1bm9yZGVyZWRfZm9sZFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/dXBkYXRlOihrZXk6J2sgLT4gb2xkX2RhdGE6J3YgLT4gbmV3X2RhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9zcGVjaWFsaXplZF9pbml0aWFsOihpbml0OidhY2MgLT4gKCdrLCAndiwgJ2NtcCkgTWFwLnQgLT4gJ2FjYylcbiAgICAtPiA/ZmluYWxpemU6KCdhY2MgLT4gJ2FjYylcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGFkZDooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICgnYWNjLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYV0gaXMgc2ltaWxhciB0byBbdW5vcmRlcmVkX2ZvbGRdLCBidXQgaXQgYWxzb1xuICAgICAgZGVwZW5kcyBvbiBhbm90aGVyIGFyYml0cmFyeSBpbmNyZW1lbnRhbCB2YWx1ZSB3aGljaCBjYW4gYmUgZmFjdG9yZWQgaW50b1xuICAgICAgdGhlIGZvbGRpbmcgY29tcHV0YXRpb24uICopXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF93aXRoX2V4dHJhXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ID9leHRyYV9lcXVhbDooJ2V4dHJhIC0+ICdleHRyYSAtPiBib29sKVxuICAgIC0+ID91cGRhdGU6KGtleTonayAtPiBvbGRfZGF0YTondiAtPiBuZXdfZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9zcGVjaWFsaXplZF9pbml0aWFsOihpbml0OidhY2MgLT4gKCdrLCAndiwgJ2UpIE1hcC50IC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+ID9maW5hbGl6ZTooJ2FjYyAtPiAnYWNjKVxuICAgIC0+ID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OmJvb2xcbiAgICAtPiAoKCdrLCAndiwgJ2UpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgnZXh0cmEsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYWNjIC0+ICdleHRyYSAtPiAnYWNjKVxuICAgIC0+IHJlbW92ZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnZXh0cmEgLT4gJ2FjYylcbiAgICAtPiBleHRyYV9jaGFuZ2VkOlxuICAgICAgICAgKG9sZF9leHRyYTonZXh0cmFcbiAgICAgICAgICAtPiBuZXdfZXh0cmE6J2V4dHJhXG4gICAgICAgICAgLT4gaW5wdXQ6KCdrLCAndiwgJ2UpIE1hcC50XG4gICAgICAgICAgLT4gJ2FjY1xuICAgICAgICAgIC0+ICdhY2MpXG4gICAgLT4gKCdhY2MsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFtjdXRvZmZdIGFwcGxpZXMgYSBjdXRvZmYgdG8gdmFsdWVzIGluIHRoZSBtYXAgYXMgdGhleSBwYXNzIHRocm91Z2ggdGhlXG4gICAgICBmdW5jdGlvbi4gIEl0IGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyBjYWxsaW5nIFtJbmNyX21hcC5tYXAnXSB3aXRoIGFuXG4gICAgICBbSW5jci5zZXRfY3V0b2ZmXSBpbnNpZGUsIGJ1dCB3aXRoIGNvbnNpZGVyYWJseSBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UuICopXG4gIHZhbCBjdXRvZmZcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGN1dG9mZjondiBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogR2l2ZW4gYW4gaW5wdXQgbWFwIGFuZCBhIGZ1bmN0aW9uIG1hcHBpbmcgYSBrdi1wYWlyIHRvIGEgbmV3XG4gICAgICB2YWx1ZSwgW21hcGlfY291bnRdIHdpbGwgY29tcHV0ZSBhIG11bHRpLXNldCBrZXllZCBvbiB0aGF0XG4gICAgICBuZXcgdmFsdWUuXG5cbiAgICAgIEFueSB2YWx1ZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBoYXZlIGEgY291bnQgb2YgXCIwXCIgaXMgaW5zdGVhZFxuICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBtYXAuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZl0gaXMgcXVpdGUgZmFzdCBhcyB0aGUgZnVuY3Rpb24gd2lsbCBiZVxuICAgICAgY2FsbGVkIG1vcmUgb2Z0ZW4gdGhhbiBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCBpdCBkb2VzIHRoaXNcbiAgICAgIGluIG9yZGVyIHRvIGF2b2lkIGFsbG9jYXRpbmcgYW4gZXh0cmEgbWFwLiAgSWYgW2ZdIGlzIHZlcnkgc2xvd1xuICAgICAgYW5kIHlvdSBkb24ndCBtaW5kIHRoZSBleHRyYSBhbGxvY2F0aW9ucywgdXNlXG4gICAgICBbSW5jcl9tYXAuaW5kZXhfYnlpXSBjb21wb3NlZCB3aXRoIFtJbmNyX21hcC5tYXAgfmY6TWFwLmxlbmd0aF0gKilcbiAgdmFsIG1hcGlfY291bnRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnazEsICd2LCAnY21wMSkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonazEgLT4gZGF0YTondiAtPiAnazIpXG4gICAgLT4gKCgnazIsIGludCwgJ2NtcDIpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBUaGUgc2FtZSBhcyBbbWFwaV9jb3VudF0gYnV0IHRoZSBbZl0gZnVuY3Rpb24gb25seSBnZXRzIHRvIHNlZSB0aGVcbiAgICAgIGRhdGEgaW5zdGVhZCBvZiBib3RoIHRoZSBrZXkgYW5kIHRoZSBkYXRhLiAqKVxuICB2YWwgbWFwX2NvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2sxLCAndiwgJ2NtcDEpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdrMiwgJ2NtcDIpIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAnazIpXG4gICAgLT4gKCgnazIsIGludCwgJ2NtcDIpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgW3JdIHdoZXJlIFtyXSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyIGluIHRoZVxuICAgICAgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWFwaV9taW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIGxhcmdlc3QgW3JdIHdoZXJlIFtyXSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyIGluIHRoZVxuICAgICAgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWFwaV9tYXhcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IFtyXSB3aGVyZSBbcl0gaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpciBpbiB0aGVcbiAgICAgIGlucHV0IG1hcC4gKilcbiAgdmFsIG1hcF9taW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdyLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooJ3YgLT4gJ3IpXG4gICAgLT4gKCdyIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIGxhcmdlc3QgW3JdIHdoZXJlIFtyXSBpcyBjb21wdXRlZCBmb3IgZWFjaCBrdi1wYWlyIGluIHRoZVxuICAgICAgaW5wdXQgbWFwLiAqKVxuICB2YWwgbWFwX21heFxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoJ3Igb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyB0aGUgc21hbGxlc3QgZGF0YSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBtYXAuICopXG4gIHZhbCBtaW5fdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIGxhcmdlc3QgZGF0YSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBtYXAuICopXG4gIHZhbCBtYXhfdmFsdWVcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCd2LCBfKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgW21pbiAqIG1heF0gd2hlcmUgdGhlIHZhbHVlIGlzIGNvbXB1dGVkIGZvciBlYWNoIGt2LXBhaXJcbiAgICAgIGluIHRoZSBpbnB1dCBtYXAgKilcbiAgdmFsIG1hcGlfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignciwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdyKVxuICAgIC0+ICgoJ3IgKiAncikgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBDb21wdXRlcyBbbWluICogbWF4XSB3aGVyZSB0aGUgdmFsdWUgaXMgY29tcHV0ZWQgZm9yIGVhY2gga3YtcGFpclxuICAgICAgaW4gdGhlIGlucHV0IG1hcCAqKVxuICB2YWwgbWFwX2JvdW5kc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ3IsIF8pIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBmOigndiAtPiAncilcbiAgICAtPiAoKCdyICogJ3IpIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIHNtYWxsZXN0IGFuZCBsYXJnZXN0IGRhdGEgdmFsdWUgZnJvbSB0aGUgaW5wdXQgbWFwLiAqKVxuICB2YWwgdmFsdWVfYm91bmRzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOigndiwgXykgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgoJ3YgKiAndikgb3B0aW9uLCAndykgSW5jcmVtZW50YWwudFxuXG5cbiAgKCoqIExpa2UgW21lcmdlXSBpbiBbQmFzZS5NYXAubWVyZ2VdLiBOb3RlIHRoYXQgW2ZdIGlzIGNhbGxlZCBhdCBtb3N0IG9uY2UgcGVyIGtleSBpblxuICAgICAgYW55IGdpdmVuIHN0YWJpbGl6YXRpb24uICopXG4gIHZhbCBtZXJnZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndjEsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+ICgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgoJ2ssICd2MywgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFttZXJnZV9ib3RoX3NhbWVdIGlzIGxpa2UgW21lcmdlXSwgYnV0IG9wdGltaXplZCBmb3IgdGhlIGNhc2Ugd2hlcmUgeW91IG9ubHkgY2FyZVxuICAgICAgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgYm90aCBtYXBzIGNvbnRhaW4gYSBwYXJ0aWN1bGFyIGtleS4gKilcbiAgdmFsIG1lcmdlX2JvdGhfc29tZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbF9sZWZ0OigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP2RhdGFfZXF1YWxfcmlnaHQ6KCd2MiAtPiAndjIgLT4gYm9vbClcbiAgICAtPiA/b3V0X2VxdWFsOigndjMgLT4gJ3YzIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiAndjEgLT4gJ3YyIC0+ICd2MylcbiAgICAtPiAoKCdrLCAndjMsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBMaWtlIFttZXJnZV0sIGJ1dCBvcGVyYXRpbmcgdXNpbmcgaW5jcmVtZW50YWwgbm9kZXMuIFRoaXMgaXMgYSBnb29kIHVzZSBjYXNlIGZvclxuICAgICAgW3BweF9wYXR0ZXJuX2JpbmRdLiAqKVxuICB2YWwgbWVyZ2UnXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9jdXRvZmY6KCd2MSwgJ3YyKSBNYXAuTWVyZ2VfZWxlbWVudC50IEluY3JlbWVudGFsLkN1dG9mZi50XG4gICAgLT4gP2RhdGFfZXF1YWxfbGVmdDooJ3YxIC0+ICd2MSAtPiBib29sKVxuICAgIC0+ID9kYXRhX2VxdWFsX3JpZ2h0OigndjIgLT4gJ3YyIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrLCAndjIsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6XG4gICAgICAgICAoa2V5OidrXG4gICAgICAgICAgLT4gKCgndjEsICd2MikgTWFwLk1lcmdlX2VsZW1lbnQudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoJ3YzIG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YzLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgdW56aXBcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2xlZnRfcmVzdWx0X2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ID9yaWdodF9yZXN1bHRfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ2EgKiAnYiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ2EsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudCAqICgoJ2ssICdiLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3VuemlwX21hcGldIGlzIHNpbWlsYXIgdG8gW0xpc3QudW56aXBdLCBidXQgZm9yIGluY3JlbWVudGFsIG1hcHMuIE5vdGUgdGhhdCBbZl0gbWF5XG4gICAgICBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gYSBzaW5nbGUgZWxlbWVudC4gKilcbiAgdmFsIHVuemlwX21hcGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gP2xlZnRfcmVzdWx0X2VxdWFsOigndjEgLT4gJ3YxIC0+IGJvb2wpXG4gICAgLT4gP3JpZ2h0X3Jlc3VsdF9lcXVhbDooJ3YyIC0+ICd2MiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAndjEgKiAndjIpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAqICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFt1bnppcF9tYXBpJ10gaXMgbGlrZSBbdW56aXBfbWFwaV0sIGJ1dCBhbGxvd3MgeW91IHRvIGRlZmluZSB0aGUgbWFwcGluZyBmcm9tIHRoZVxuICAgICAgaW5wdXQgbWFwJ3MgZWxlbWVudHMgdG8gdGhlIG91dHB1dCBtYXBzJyBlbGVtZW50cyBpbmNyZW1lbnRhbGx5LlxuXG4gICAgICBUaGUgbmFpdmUgaW1wbGVtZW50YXRpb24gKHNlZSBiZWxvdykgcHJvZHVjZXMgd29yc2UgSW5jcmVtZW50YWwgZ3JhcGhzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgdGVtcCA9XG4gICAgICAgICAgSW5jcl9tYXAubWFwaScgaW5wdXQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICBmIH5rZXkgfmRhdGEgfD4gVHVwbGUyLnVuY3VycnkgSW5jci5ib3RoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGVmdCA9IEluY3JfbWFwLm1hcCB0ZW1wIH5mOlR1cGxlMi5nZXQxIGluXG4gICAgICAgIGxldCByaWdodCA9IEluY3JfbWFwLm1hcCB0ZW1wIH5mOlR1cGxlMi5nZXQyIGluXG4gICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICBdfSAqKVxuICB2YWwgdW56aXBfbWFwaSdcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2N1dG9mZjondiBJbmNyZW1lbnRhbC5DdXRvZmYudFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOlxuICAgICAgICAgKGtleTona1xuICAgICAgICAgIC0+IGRhdGE6KCd2LCAndykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICgndjEsICd3KSBJbmNyZW1lbnRhbC50ICogKCd2MiwgJ3cpIEluY3JlbWVudGFsLnQpXG4gICAgLT4gKCgnaywgJ3YxLCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgICAqICgoJ2ssICd2MiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFRoaXMgaXMgdGhlIFwiZWFzeVwiIHZlcnNpb24gb2YgW2pvaW5dICopXG4gIHZhbCBmbGF0dGVuXG4gICAgOiAgJ3cgSW5jcmVtZW50YWwuU3RhdGUudFxuICAgIC0+ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIFRoZSBub24taW5jcmVtZW50YWwgc2VtYW50aWNzIG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IGZ1bmN0aW9uLiAgSXRzXG4gICAgICBwdXJwb3NlIGlzIHRvIGNvbGxhcHNlIHRoZSBleHRyYSBsZXZlbCBvZiBpbmNyZW1lbnRhbGl0eSBhdCB0aGUgbGV2ZWwgb2YgdGhlIGRhdGEgb2ZcbiAgICAgIHRoZSBtYXAuKilcbiAgdmFsIGpvaW5cbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gKCgnaywgKCd2LCAndykgSW5jcmVtZW50YWwudCwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gIHZhbCBzZXBhcmF0ZVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwga2V5c1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiAoKCdrLCAndiwgJ2MpIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICdjKSBTZXQudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogQ29tcHV0ZXMgdGhlIFtyYW5rXSBvZiBhIGtleSAoZ2l2ZW4gaW5jcmVtZW50YWxseSkgaW5zaWRlIG9mIGEgbWFwIChhbHNvXG4gICAgICBpbmNyZW1lbnRhbCkuICBUaGUgdHJhZGl0aW9uYWwgW01hcC5yYW5rXSBmdW5jdGlvbiBpcyBPKG4pLCBhbmQgdGhpcyBpbmNyZW1lbnRhbFxuICAgICAgcmFuayBmdW5jdGlvbiBoYXMgdGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3M6XG5cbiAgICAgIGRlZmluaXRpb25zOlxuICAgICAgbiA6IHRoZSBzaXplIG9mIHRoZSBtYXBcbiAgICAgIHIgOiB0aGUgdGltZSB0byBjb21wdXRlIFtNYXAuc3ltbWV0cmljX2RpZmZdIGJldHdlZW4gdGhlIHR3byBtYXBzXG4gICAgICBrIDogdGhlIGNoYW5nZSBpbiByYW5rIG9mIHRoZSBrZXkgYmV0d2VlbiB0d28gc3RhYmlsaXphdGlvbnNcblxuICAgICAgbm90ZSB0aGF0IFtyXSBhbmQgW2tdIGFyZSBfbXVjaF8gc21hbGxlciB0aGFuIFtuXSBmb3IgbW9zdCBwcmFjdGljYWwgcHVycG9zZXNcblxuICAgICAgLSBPKGxvZyBuKSB3aGVuIHRoZSBrZXkgaXMgbm90IGluIHRoZSBtYXAuXG4gICAgICAgIFRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG90aGVyIGV2ZXJ5IG90aGVyIHNjZW5hcmlvLlxuICAgICAgLSBPKG4pIG9uIHRoZSBpbml0aWFsIHN0YWJpbGl6YXRpb25cbiAgICAgIC0gTyhuKSB3aGVuIHRoZSBrZXkgdHJhbnNpdGlvbnMgZnJvbSBub3QgYmVpbmcgaW4gdGhlIG1hcCB0byBiZWluZyBpbiB0aGUgbWFwXG4gICAgICAtIE8obG9nIG4gKyByKSB3aGVuIHRoZSBtYXAgY2hhbmdlc1xuICAgICAgLSBPKGxvZyBuICsgaykgd2hlbiB0aGUga2V5IGNoYW5nZXNcbiAgICAgIC0gTyhsb2cgbiArIHIgKyBrKSB3aGVuIGJvdGgga2V5IGFuZCBtYXAgY2hhbmdlICopXG4gIHZhbCByYW5rXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBCYXNlLk1hcC50LCAnc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgIC0+ICgnaywgJ3N0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoaW50IG9wdGlvbiwgJ3N0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3N1YnJhbmdlIG1hcCAobWluLCBtYXgpXSBjb25zdHJ1Y3RzIGFuIGluY3JlbWVudGFsIHN1Ym1hcCB0aGF0IGluY2x1ZGVzIGFsbCBvZiB0aGVcbiAgICAgIGtleXMgYW5kIGRhdGEgZnJvbSBbbWFwXSBiZXR3ZWVuIFttaW5dIGFuZCBbbWF4XSwgYW5kIG5vbmUgb2YgdGhlIGtleXMgb3V0c2lkZSB0aGVcbiAgICAgIHJhbmdlLlxuXG4gICAgICBbc3VicmFuZ2UgbWFwIE5vbmVdIGlzIHRoZSBlbXB0eSBtYXAuIFtyYW5nZV0gYmVpbmcgW05vbmVdIG1lYW5zIG5vIGVsZW1lbnRzIGFyZVxuICAgICAgY2hvc2VuLlxuXG4gICAgICBOb3RlIHRoYXQgaW5jcmVtZW50YWwgY2hhbmdlcyBoYXZlIGEgcnVudGltZSBvZiBPKChrICsgbSkgbG9nIG4pIHdoZXJlIGsgaXMgdGhlIHNpemVcbiAgICAgIG9mIHRoZSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIG1hcCBhbmQgbSBpcyB0aGUgc2l6ZSBvZiB0aGUgY2hhbmdlcyB0byB0aGVcbiAgICAgIGVsZW1lbnRzIGNvbnRhaW5lZCBieSB0aGUgcmFuZ2UuIFRoZSBjb21wbGV4aXR5IG9mIHRoZSBpbml0aWFsIGNvbXB1dGF0aW9uIGlzIHRoZVxuICAgICAgc2FtZSBhcyB0aGUgaW5jcmVtZW50YWwgY29tcHV0YXRpb24sIHdpdGggc29tZSBzaW1wbGlmaWNhdGlvbi4gayA9IDAgYmVjYXVzZSB3ZSBoYXZlXG4gICAgICBub3QgbWFkZSBhbnkgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyBtYXAgeWV0LCBhbmQgbSBlcXVhbHMgdGhlIHNpemUgb2YgdGhlIHJhbmdlLFxuICAgICAgYmVjYXVzZSB0aGUgaW5pdGlhbCByYW5nZSBpcyBlbXB0eS4gKilcbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoICgnayBNYXliZV9ib3VuZC5Bc19sb3dlcl9ib3VuZC50ICogJ2sgTWF5YmVfYm91bmQuQXNfdXBwZXJfYm91bmQudCkgb3B0aW9uXG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbc3VicmFuZ2VfYnlfcmFuayBtYXAgKHMsIGUpXSBjb25zdHJ1Y3RzIGFuIGluY3JlbWVudGFsIHN1Ym1hcCB0aGF0IGluY2x1ZGVzIChlLXMrMSlcbiAgICAgIGtleXMgYmV0d2VlbiBzLXRoIGFuZCBlLXRoLCBpbmNsdXNpdmUuXG5cbiAgICAgIElmIHMgaXMgZ3JlYXRlciBvciBlcXVhbCB0byBtYXAgbGVuZ3RoLCB0aGUgcmVzdWx0IGlzIGVtcHR5LlxuICAgICAgSWYgZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIG1hcCBsZW5ndGgsIHRoZSByZXN1bHQgY29udGFpbnMga2V5cyBmcm9tIHMtdGggdG8gdGhlXG4gICAgICBsYXN0IG9uZS5cblxuICAgICAgUmFpc2VzIGZvciBpbnZhbGlkIGluZGljZXMgLSBzIDwgMCBvciBlIDwgcy5cblxuICAgICAgUnVudGltZSBvZiB0aGUgaW5pdGlhbCBjb21wdXRhdGlvbiBpcyBPKG1pbihlLCBuLXMpICsgbG9nKG4pKSwgaS5lLiBsaW5lYXIsXG4gICAgICBidXQgb3B0aW1pemVkIGZvciByYW5nZXMgY2xvc2UgdG8gYmVnaW5uaW5nIG9yIGVuZC5cblxuICAgICAgUnVudGltZSBvZiB0aGUgaW5jcmVtZW50YWwgY29tcHV0YXRpb24gaXMgTyhsb2cobikgKyBrICsgKG0rbScpICogbG9nKG4pKSB3aGVyZTpcbiAgICAgIC0gayBpcyB0aGUgc2l6ZSBvZiB0aGUgZGlmZlxuICAgICAgLSBtIGlzIHRoZSB0b3RhbCBpbXBhY3Qgb2YgbWFwIGNoYW5nZXMgb24gdGhlIHJhbmdlLCBib3VuZGVkIGJ5IGsgKGUuZy4gaWYgd2UgYWRkXG4gICAgICAgIDEwMDEga2V5cyBhbmQgcmVtb3ZlIDEwMDAgYmVsb3cgcywgdGhlbiBtID0gMSlcbiAgICAgIC0gbScgPSBPKCB8bmV3IHMgLSBvbGQgc3wgKyB8bmV3IGUgLSBvbGQgZXwgKS5cbiAgKilcbiAgdmFsIHN1YnJhbmdlX2J5X3JhbmtcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsICdjbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+ICggaW50IE1heWJlX2JvdW5kLkFzX2xvd2VyX2JvdW5kLnQgKiBpbnQgTWF5YmVfYm91bmQuQXNfdXBwZXJfYm91bmQudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuICAgIC0+ICgoJ2ssICd2LCAnY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW3Jla2V5XSB0cmFuc2Zvcm1zIGEgbWFwIGJ5IG1vZGlmeWluZyB0aGUgdHlwZSBvZiB0aGUga2V5LiAgVGhlIHVzZXIgaXNcbiAgICAgIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IFtmXSBkb2Vzbid0IHJldHVybiB0aGUgc2FtZSBvdXRwdXQga2V5IGZvclxuICAgICAgbXVsdGlwbGUgaW5wdXQga2V5cy5cblxuICAgICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIFtmXSBpcyBjaGVhcCB0byBjb21wdXRlIGFuZCBhY2NvcmRpbmdseSBtYXkgY2FsbFxuICAgICAgaXQgbXVsdGlwbGUgdGltZXMuICopXG4gIHZhbCByZWtleVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrMSwgJ3YsICdjbXAxKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gZjooa2V5OidrMSAtPiBkYXRhOid2IC0+ICdrMilcbiAgICAtPiAoKCdrMiwgJ3YsICdjbXAyKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAoKiogW2luZGV4X2J5aSBtYXAgfmNvbXBhcmF0b3IgfmluZGV4XSBjb25zdHJ1Y3RzIGFuIGluY3JlbWVudGFsIG1hcC1vZi1tYXBzIHdoZXJlIGVhY2hcbiAgICAgIGtleS1kYXRhIHBhaXIgb2YgdGhlIGlucHV0IG1hcCBpcyBwcmVzZW50IGluIG9uZSAob3Igbm9uZSkgb2YgdGhlIGlubmVyIG1hcHMuXG4gICAgICBbaW5kZXhdIHNwZWNpZmllcyB0aGUgb3V0ZXIgbWFwIGtleSB1bmRlciB3aGljaCBlYWNoIG9yaWdpbmFsIGtleS1kYXRhIHBhaXIgaXNcbiAgICAgIGZvdW5kLlxuXG4gICAgICBBbGwgb2YgdGhlIHJlc3VsdGluZyBpbm5lciBtYXBzIGFyZSBndWFyYW50ZWVkIHRvIGJlIG5vbi1lbXB0eTsgaWYgdGhlIGlubmVyIG1hcFxuICAgICAgd291bGQgb3RoZXJ3aXNlIGJlIGVtcHR5LCB0aGVuIHRoZSBrZXkgZm9yIHRoYXQgbWFwIGlzIGluc3RlYWQgcmVtb3ZlZCBmcm9tIHRoZVxuICAgICAgb3V0ZXIgbWFwLlxuXG4gICAgICBBbiBhbGwtYXQtb25jZSB2ZXJzaW9uIG9mIFtpbmRleF9ieV0gd291bGQgbG9vayBsaWtlOlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgaW5kZXhfYnlpIG1hcCB+Y29tcGFyYXRvciB+aW5kZXggPVxuICAgICAgICAgIE1hcC50b19hbGlzdCBtYXBcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggaW5kZXggfmtleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIGluZGV4IC0+IFNvbWUgKGluZGV4LCAoa2V5LCBkYXRhKSkpXG4gICAgICAgICAgfD4gTWFwLm9mX2FsaXN0X211bHRpIGNvbXBhcmF0b3JcbiAgICAgICAgICB8PiBNYXAubWFwIH5mOihNYXAub2ZfYWxpc3RfZXhuIChNYXAuY29tcGFyYXRvcl9zIG1hcCkpXG4gICAgICAgIDs7XG4gICAgICBdfSAqKVxuICB2YWwgaW5kZXhfYnlpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGNvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbmRleDooa2V5Oidpbm5lcl9rZXkgLT4gZGF0YTondiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbaW5kZXhfYnkgbWFwIH5jb21wYXJhdG9yIH5pbmRleF0gaXMgbGlrZSBbaW5kZXhfYnlpIG1hcCB+Y29tcGFyYXRvciB+aW5kZXhdLCBidXRcbiAgICAgIHRoZSBbaW5kZXhdIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGlubmVyIG1hcCdzIFtrZXldLiAqKVxuICB2YWwgaW5kZXhfYnlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gY29tcGFyYXRvcjooJ291dGVyX2tleSwgJ291dGVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGluZGV4OigndiAtPiAnb3V0ZXJfa2V5IG9wdGlvbilcbiAgICAtPiAoICgnb3V0ZXJfa2V5LCAoJ2lubmVyX2tleSwgJ3YsICdpbm5lcl9jbXApIE1hcC50LCAnb3V0ZXJfY21wKSBNYXAudFxuICAgICAgICwgJ3cgKVxuICAgICAgICAgSW5jcmVtZW50YWwudFxuXG4gIHZhbCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTpib29sXG4gICAgLT4gP3VwZGF0ZTpcbiAgICAgICAgIChvdXRlcl9rZXk6J291dGVyX2tleVxuICAgICAgICAgIC0+IGlubmVyX2tleTonaW5uZXJfa2V5XG4gICAgICAgICAgLT4gb2xkX2RhdGE6J3ZcbiAgICAgICAgICAtPiBuZXdfZGF0YTondlxuICAgICAgICAgIC0+ICdhY2NcbiAgICAgICAgICAtPiAnYWNjKVxuICAgIC0+ICggKCdvdXRlcl9rZXksICgnaW5uZXJfa2V5LCAndiwgJ2lubmVyX2NtcCkgTWFwLnQsICdvdXRlcl9jbXApIE1hcC50XG4gICAgICAgLCAndyApXG4gICAgICAgICBJbmNyZW1lbnRhbC50XG4gICAgLT4gaW5pdDonYWNjXG4gICAgLT4gYWRkOihvdXRlcl9rZXk6J291dGVyX2tleSAtPiBpbm5lcl9rZXk6J2lubmVyX2tleSAtPiBkYXRhOid2IC0+ICdhY2MgLT4gJ2FjYylcbiAgICAtPiByZW1vdmU6KG91dGVyX2tleTonb3V0ZXJfa2V5IC0+IGlubmVyX2tleTonaW5uZXJfa2V5IC0+IGRhdGE6J3YgLT4gJ2FjYyAtPiAnYWNjKVxuICAgIC0+ICgnYWNjLCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbdHJhbnNwb3NlXSBmbGlwcyB0aGUgb3JkZXIgb2YgYSBkb3VibHkgbmVzdGVkIGluY3JlbWVudGFsIG1hcC5cblxuICAgICAgQWxsIGlubmVyIG1hcCBpbnN0YW5jZXMgd2lsbCBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50LiAqKVxuICB2YWwgdHJhbnNwb3NlXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgnazIsICdrMl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoKCdrMSwgKCdrMiwgJ3YsICdrMl9jbXApIE1hcC50LCAnazFfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAoKCdrMiwgKCdrMSwgJ3YsICdrMV9jbXApIE1hcC50LCAnazJfY21wKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgY29sbGFwc2VcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiBjb21wYXJhdG9yOignaW5uZXJfa2V5LCAnaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCAoICdvdXRlcl9rZXkgKiAnaW5uZXJfa2V5XG4gICAgICAgICAsICd2XG4gICAgICAgICAsICgnb3V0ZXJfY21wLCAnaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzIClcbiAgICAgICAgICAgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICAoKiogW2NvbGxhcHNlX2J5XSBpcyBzaW1pbGFyIHRvIFtjb2xsYXBzZV0sIGJ1dCBpdCBhbGxvd3MgdGhlIHVzZXIgdG9cbiAgICAgIGNob29zZSBob3cgdG8gY29tYmluZSB0aGUgdHdvIGtleXMgZnJvbSB0aGUgb3V0ZXIgYW5kIGlubmVyIG1hcHMuXG4gICAgICBUaGlzIGRvZXMgbWVhbiB0aGF0IGl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBpbXBsZW1lbnRvciBvZiB0aGVcbiAgICAgIFttZXJnZV9rZXlzXSBmdW5jdGlvbiB0byB1cGhvbGQgdGhpcyBpbnZhcmlhbnQ6XG5cbiAgICAgID4gYSBtZXJnZWQta2V5IGJlaW5nIGVxdWFsIHRvIGFub3RoZXIgbWVyZ2VkLWtleSBpbXBsaWVzIHRoYXQgdGhlXG4gICAgICA+IG91dGVyLWtleXMgYW5kIGlubmVyLWtleXMgd2hpY2ggd2VyZSB1c2VkIHRvIGJ1aWxkIHRoZSBtZXJnZWQga2V5cyBhbHNvXG4gICAgICA+IGNvbXBhcmUgdG8gYmUgZXF1YWwgdG8gb25lIGFub3RoZXJcblxuICAgICAgVGhlIFt+Y29tcGFyYXRvcl0gYXJndW1lbnQgdGhlIGZpcnN0LWNsYXNzIG1vZHVsZSBvZiB0aGUgb3V0cHV0IGtleSwgaXRcbiAgICAgIHVzdWFsbHkgbG9va3MgbGlrZSB0aGlzOlxuICAgICAgWyB+Y29tcGFyYXRvcjoobW9kdWxlIENvbWJpbmVkX2tleSkgXVxuICAgICAgYnV0IG1ha2Ugc3VyZSB0aGF0IHRoZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgW0NvbXBhcmF0b3IuU10gc2lnbmF0dXJlLiAqKVxuICB2YWwgY29sbGFwc2VfYnlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcbiAgICAtPiBtZXJnZV9rZXlzOignb3V0ZXJfa2V5IC0+ICdpbm5lcl9rZXkgLT4gJ2NvbWJpbmVkX2tleSlcbiAgICAtPiBjb21wYXJhdG9yOignY29tYmluZWRfa2V5LCAnY29tYmluZWRfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCgnY29tYmluZWRfa2V5LCAndiwgJ2NvbWJpbmVkX2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIENvbnZlcnQgYSBtYXAgd2l0aCB0dXBsZXMgZm9yIGtleXMgaW50byBhIG5lc3RlZCBtYXAuIFRoaXMgb3BlcmF0aW9uIGlzIHJvdWdobHkgdGhlXG4gICAgICBpbnZlcnNlIG9mIFtjb2xsYXBzZV0sIHRob3VnaCBpZiB0aGVyZSBhcmUgb3V0ZXIga2V5cyBpbiB0aGUgdW5jb2xsYXBzZWQgbWFwIHRoYXRcbiAgICAgIGNvcnJlc3BvbmQgdG8gZW1wdHkgaW5uZXIgbWFwcywgdGhlIG91dGVyIGtleXMgd2lsbCBiZSBkcm9wcGVkIGZyb20gdGhlIGV4cGFuZGVkXG4gICAgICBtYXAuICopXG4gIHZhbCBleHBhbmRcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnb3V0ZXJfa2V5ICogJ2lubmVyX2tleSwgJ3YsICd0dXBsZV9jbXApIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IG91dGVyX2NvbXBhcmF0b3I6KCdvdXRlcl9rZXksICdvdXRlcl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpbm5lcl9jb21wYXJhdG9yOignaW5uZXJfa2V5LCAnaW5uZXJfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCAoJ291dGVyX2tleSwgKCdpbm5lcl9rZXksICd2LCAnaW5uZXJfY21wKSBNYXAudCwgJ291dGVyX2NtcCkgTWFwLnRcbiAgICAgICAsICd3IClcbiAgICAgICAgIEluY3JlbWVudGFsLnRcblxuICB2YWwgY291bnRpXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoJ2ssICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKVxuICAgIC0+IChpbnQsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGNvdW50XG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKGludCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZm9yX2FsbGlcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCgnaywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgdmFsIGZvcl9hbGxcbiAgICA6ICA/aW5zdHJ1bWVudGF0aW9uOkluc3RydW1lbnRhdGlvbi50XG4gICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKChfLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZXhpc3RzaVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKCdrLCAndiwgXykgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbClcbiAgICAtPiAoYm9vbCwgJ3cpIEluY3JlbWVudGFsLnRcblxuICB2YWwgZXhpc3RzXG4gICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgIC0+ID9kYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+ICgoXywgJ3YsIF8pIE1hcC50LCAndykgSW5jcmVtZW50YWwudFxuICAgIC0+IGY6KCd2IC0+IGJvb2wpXG4gICAgLT4gKGJvb2wsICd3KSBJbmNyZW1lbnRhbC50XG5cbiAgKCoqIEluY3JlbWVudGFsbHkgY29tcHV0ZSB0aGUgc3VtIG9mIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoZSBtYXAuXG5cbiAgICAgIEJld2FyZSBvZiBmbG9hdCdzIG5lZ2F0aXZlIGluZmluaXRpZXMuIFRoZXkgYXJlbid0IGNvbW11dGF0aXZlIGFuZCB3aWxsIG1pc2JlaGF2ZVxuICAgICAgaGVyZS5cbiAgKilcbiAgdmFsIHN1bVxuICAgIDogID9pbnN0cnVtZW50YXRpb246SW5zdHJ1bWVudGF0aW9uLnRcbiAgICAtPiA/ZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoKF8sICd2LCBfKSBNYXAudCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAtPiAobW9kdWxlIEFic3RyYWN0X2FsZ2VicmEuQ29tbXV0YXRpdmVfZ3JvdXAuV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0ID0gJ3UpXG4gICAgLT4gZjooJ3YgLT4gJ3UpXG4gICAgLT4gKCd1LCAndykgSW5jcmVtZW50YWwudFxuXG4gICgqKiBbKCdrLCAndikgTG9va3VwLnRdIHByb3ZpZGVzIGEgd2F5IHRvIGxvb2t1cCBrZXlzIGluIGEgbWFwIHdoaWNoIHVzZXMgc3ltbWV0cmljXG4gICAgICBkaWZmcyB0byB0cmlnZ2VyIHVwZGF0ZXMgb2YgdGhlIGxvb2t1cHMuXG5cbiAgICAgIFRoZSBjb21wbGV4aXR5IG9mIGFuIHVwZGF0ZSBkZXBlbmRzIG9uOlxuICAgICAgLSBbbl06IHRoZSBudW1iZXIgb2Yga2V5cyBpbiB0aGUgbGFyZ2VyIG9mIHRoZSBvbGQvdXBkYXRlZCBpbnB1dCBtYXBcbiAgICAgIC0gW2tdOiB0aGUgbnVtYmVyIG9mIGxvb2t1cCBub2RlcyBjcmVhdGVkIHVzaW5nIFtmaW5kXVxuICAgICAgLSBbbV06IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHN5bWRpZmYgb2YgdGhlIG1hcHNcbiAgICAgIC0gW3N5bWRpZmYobildOiB0aGUgY29zdCBvZiBwZXJmb3JtaW5nIHRoZSBzeW1kaWZmIG9uIHRoZSBtYXAgKG0gPD0gc3ltZGlmZihuKSA8PSBuKVxuXG4gICAgICBFYWNoIHVwZGF0ZSBzaG91bGQgY29zdCBbTyhzeW1kaWZmKG4pICsgbSAqIGxvZyBrKV0sIHNvIHRoaXMgd2lsbCBiZSBlZmZpY2llbnQgd2hlblxuICAgICAgdGhlcmUgYXJlIGEgbG90IG9mIGxvb2t1cHMgKGNsb3NlIHRvIG4pIGludG8gYSBtYXAgd2hpY2ggY2FuIGJlIGVmZmljaWVudGx5XG4gICAgICBzeW1kaWZmZWQgKGFuZCB0aGVyZWZvcmUgaGFzIGEgc21hbGwgbnVtYmVyIG9mIGNoYW5nZXMgYWxzbykuIFRoZSBjb3N0IG9mIHVwZGF0aW5nXG4gICAgICB3aGVuIHBlcmZvcm1pbmcgdGhlIHNhbWUgbG9va3VwcyBieSBtZWFucyBvZiBbSW5jci5tYXAgfmY6KGZ1biBtIC0+IE1hcC5maW5kIG0ga2V5KV1cbiAgICAgIGlzIFtPKGsgKiBsb2cgbildLlxuICAqKVxuICBtb2R1bGUgTG9va3VwIDogc2lnXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdFxuXG4gICAgKCoqIENyZWF0ZSB0aGUgbG9va3VwIHN0cnVjdHVyZSBvbiBhbiBpbmNyZW1lbnRhbCBtYXAuICopXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgICAgLT4gP2RhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoKCdrLCAndiwgJ2NtcCkgTWFwLnQsICd3KSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wLCAndykgdFxuXG4gICAgKCoqIENyZWF0ZSBhIG5vZGUgd2hpY2ggcGVyZm9ybXMgW01hcC5maW5kXSBvbiB0aGUgaW5wdXQgbWFwLlxuXG4gICAgICAgIFtmaW5kIChjcmVhdGUgaW5jcl9tYXApIGtleV0gc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gW0luY3IubWFwIH5mOihmdW4gbSAtPlxuICAgICAgICBNYXAuZmluZCBtIGtleSkgaW5jcl9tYXBdLCBidXQgd2hlbiB5b3UgY2FsbCBbZmluZF0gbWFueSB0aW1lcyBmb3IgYSBzaW5nbGVcbiAgICAgICAgW2NyZWF0ZV0gdGhlIG5vZGVzIHNob3VsZCB1cGRhdGUgbW9yZSBlZmZpY2llbnRseSBpbiBzdGFiaWxpc2F0aW9uIHdoZW4gW2luY3JfbWFwXVxuICAgICAgICBjaGFuZ2VzIGluIGEgd2F5IHdoaWNoIGNhbiBiZSBlZmZpY2llbnRseSBkaWZmZWQuXG5cbiAgICAgICAgVGhpcyB3aWxsIHJlLXVzZSBleGlzdGluZyBub2RlcyB3aGVuIGl0IGNhbiwgYnV0IHdpbGwgbm90IGFsd2F5cyBkbyBzby5cbiAgICAqKVxuICAgIHZhbCBmaW5kIDogKCdrLCAndiwgXywgJ3cpIHQgLT4gJ2sgLT4gKCd2IG9wdGlvbiwgJ3cpIEluY3JlbWVudGFsLnRcblxuICAgICgqKiBBIGNvbnZlbmllbnQgd2F5IHRvIHJlZmVyIHRvIHRoZSB0eXBlIGZvciBhIGdpdmVuIGtleS4gKilcbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICgndiwgJ3cpIHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MsICd3KSB0XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgRm9yX2RlYnVnIDogc2lnXG4gICAgICB2YWwgc2V4cF9vZl90IDogKCdrIC0+IFNleHAudCkgLT4gKCd2IC0+IFNleHAudCkgLT4gKCdrLCAndiwgJ2NtcCwgXykgdCAtPiBTZXhwLnRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nIDogc2lnXG4gICAgdmFsIGZpbmRfa2V5X3JhbmdlX2xpbmVhclxuICAgICAgOiAgZnJvbTppbnRcbiAgICAgIC0+IHRvXzppbnRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSBCYXNlLk1hcC50XG4gICAgICAtPiAoJ2EgKiAnYSBvcHRpb24pIG9wdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTX2dlbiA9IFNfZ2VuXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgc3RhdGVfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU19nZW5cbiAgICAgIHdpdGggdHlwZSAnYSBJbmNyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICBhbmQgdHlwZSAnYSBJbmNyLkN1dG9mZi50ID0gJ2EgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAgICBhbmQgdHlwZSAoJ2ssICd2LCAnY21wKSBMb29rdXAudCA9ICgnaywgJ3YsICdjbXAsIHN0YXRlX3dpdG5lc3MpIExvb2t1cC50XG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuUykgOlxuICAgIFMgd2l0aCB0eXBlIHN0YXRlX3dpdG5lc3MgOj0gSW5jci5zdGF0ZV93aXRuZXNzIGFuZCBtb2R1bGUgSW5jciA6PSBJbmNyXG5lbmRcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgSW5jcl9tYXBfaW50ZlxuXG5sZXQgbm9faW5zdHJ1bWVudGF0aW9uID0geyBJbnN0cnVtZW50YXRpb24uZiA9IChmdW4gZiAtPiBmICgpKSB9XG5cbigqKiBUaGlzIHR5cGUgbGV0cyB1cyBjYXB0dXJlIHRoZSBraW5kIG9mIG1hcCBmdW5jdGlvbiBiZWluZyBwZXJmb3JtZWQsIHNvIHdlIGNhbiB3aXRoXG4gICAgb25lIGltcGxlbWVudGF0aW9uIHBlcmZvcm0gbWFwIGFuZCBmaWx0ZXItbWFwIG9wZXJhdGlvbnMuXG5cbiAgICBIZXJlLCBbJ2lucHV0X2RhdGFdIGlzIHRoZSB0eXBlIG9mIGRhdGEgaW4gdGhlIGlucHV0IG1hcCwgWydvdXRwdXRfZGF0YV0gaXMgdGhlIHR5cGVcbiAgICBvZiBkYXRhIGluIHRoZSBvdXRwdXQgbWFwLCBhbmQgWydmX291dHB1dF0gaXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBbfmZdIGZ1bmN0aW9uXG4gICAgcGFzc2VkIHRvIHRoZSBtYXBwaW5nIGZ1bmN0aW9uLiAqKVxubW9kdWxlIE1hcF90eXBlID0gc3RydWN0XG4gIHR5cGUgKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdmX291dHB1dCkgdCA9XG4gICAgfCBNYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhKSB0XG4gICAgfCBGaWx0ZXJfbWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSBvcHRpb24pIHRcblxuICAoKiBUaGUgZXh0cmEgdHlwZSB2YXJpYWJsZSAnYSBpcyB0byBhbGxvdyBpbiBmdXR1cmU6XG4gICAgIHwgRmlsdGVyIDogKCdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhLCBib29sKSB0ICopXG5lbmRcblxubW9kdWxlIEdlbmVyaWMgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfb2xkIH5pbnN0cnVtZW50YXRpb24gaSB+ZiA9XG4gICAgbGV0IG9wZW4gSW5jcmVtZW50YWwuTGV0X3N5bnRheCBpblxuICAgIGxldCBvbGQgPSByZWYgTm9uZSBpblxuICAgIGxldCVtYXAgYSA9IGkgaW5cbiAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhIGluXG4gICAgICBvbGQgOj0gU29tZSAoYSwgYik7XG4gICAgICBiKVxuICA7O1xuXG4gIGxldCBjdXRvZmYgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIG1hcCB+Y3V0b2ZmID1cbiAgICBsZXQgZGF0YV9lcXVhbCBvbGRfdmFsdWUgbmV3X3ZhbHVlID1cbiAgICAgIEluY3JlbWVudGFsLkN1dG9mZi5zaG91bGRfY3V0b2ZmIGN1dG9mZiB+b2xkX3ZhbHVlIH5uZXdfdmFsdWVcbiAgICBpblxuICAgIHdpdGhfb2xkIH5pbnN0cnVtZW50YXRpb24gbWFwIH5mOihmdW4gfm9sZCBjdXIgLT5cbiAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3VyXG4gICAgICB8IFNvbWUgKF9vbGRfaW4sIG9sZCkgLT5cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgfmRhdGFfZXF1YWwgfmluaXQ6b2xkIG9sZCBjdXIgfmY6KGZ1biBhY2MgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICAgICAgfCBgTGVmdCBfb2xkIC0+IE1hcC5yZW1vdmUgYWNjIGtleVxuICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gTWFwLmFkZF9leG4gYWNjIH5rZXkgfmRhdGE6bmV3X1xuICAgICAgICAgIHwgYFVuZXF1YWwgKF9vbGQsIG5ld192YWx1ZSkgLT4gTWFwLnNldCBhY2MgfmtleSB+ZGF0YTpuZXdfdmFsdWUpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgPyhmaW5hbGl6ZSA9IEZuLmlkKVxuICAgICAgICA/KHJldmVydF90b19pbml0X3doZW5fZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIGxldCBkZWZhdWx0IH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgPVxuICAgICAgICBhZGQgfmtleSB+ZGF0YTpuZXdfZGF0YSAocmVtb3ZlIH5rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi52YWx1ZSB1cGRhdGUgfmRlZmF1bHRcbiAgICBpblxuICAgIHdpdGhfb2xkIH5pbnN0cnVtZW50YXRpb24gbWFwIH5mOihmdW4gfm9sZCBuZXdfaW4gLT5cbiAgICAgIGxldCBhY2MgPVxuICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc3BlY2lhbGl6ZWRfaW5pdGlhbCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBNYXAuZm9sZCB+aW5pdCB+ZjphZGQgbmV3X2luXG4gICAgICAgICAgIHwgU29tZSBpbml0aWFsIC0+IGluaXRpYWwgfmluaXQgbmV3X2luKVxuICAgICAgICB8IFNvbWUgKG9sZF9pbiwgb2xkX291dCkgLT5cbiAgICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICAgIHRoZW4gaW5pdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5pbml0Om9sZF9vdXRcbiAgICAgICAgICAgICAgb2xkX2luXG4gICAgICAgICAgICAgIG5ld19pblxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IG9sZCAtPiByZW1vdmUgfmtleSB+ZGF0YTpvbGQgYWNjXG4gICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3XyAtPiBhZGQgfmtleSB+ZGF0YTpuZXdfIGFjY1xuICAgICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT4gdXBkYXRlIH5rZXkgfm9sZF9kYXRhOm9sZCB+bmV3X2RhdGE6bmV3XyBhY2MpXG4gICAgICBpblxuICAgICAgZmluYWxpemUgYWNjKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICAgID91cGRhdGVcbiAgICAgICAgaW5jcl9tYXBcbiAgICAgICAgfmluaXRcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlXG4gICAgPVxuICAgIGxldCB1cGRhdGUgPVxuICAgICAgbWF0Y2ggdXBkYXRlIHdpdGhcbiAgICAgIHwgU29tZSB1cGRhdGUgLT4gdXBkYXRlXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZFxuICAgICAgICAgICAgfm91dGVyX2tleVxuICAgICAgICAgICAgfmlubmVyX2tleVxuICAgICAgICAgICAgfmRhdGE6bmV3X2RhdGFcbiAgICAgICAgICAgIChyZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOm9sZF9kYXRhIGFjYylcbiAgICBpblxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBpbmNyX21hcFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgIH5pbml0XG4gICAgICB+dXBkYXRlOihmdW4gfmtleTpvdXRlcl9rZXkgfm9sZF9kYXRhOm9sZF9pbm5lcl9tYXAgfm5ld19kYXRhOm5ld19pbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIChNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZiBvbGRfaW5uZXJfbWFwIG5ld19pbm5lcl9tYXAgfmRhdGFfZXF1YWwpXG4gICAgICAgICAgfmluaXQ6YWNjXG4gICAgICAgICAgfmY6KGZ1biBhY2MgKGlubmVyX2tleSwgZGlmZikgLT5cbiAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBkYXRhX3JlbW92ZWQgLT4gcmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpkYXRhX3JlbW92ZWQgYWNjXG4gICAgICAgICAgICB8IGBSaWdodCBkYXRhX2FkZGVkIC0+IGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9hZGRlZCBhY2NcbiAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZF9kYXRhLCBuZXdfZGF0YSkgLT5cbiAgICAgICAgICAgICAgdXBkYXRlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+b2xkX2RhdGEgfm5ld19kYXRhIGFjYykgW0Bub250YWlsXSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleTpvdXRlcl9rZXkgfmRhdGE6aW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICBNYXAuZm9sZCBpbm5lcl9tYXAgfmluaXQ6YWNjIH5mOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgICAgcmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YSBhY2MpKVxuICA7O1xuXG4gIGxldCB3aXRoX2NvbXBhcmF0b3InIGdldF9jb21wYXJhdG9yIHggZiA9XG4gICAgSW5jcmVtZW50YWwuYmluZCAoSW5jcmVtZW50YWwuZnJlZXplIChJbmNyZW1lbnRhbC5tYXAgeCB+ZjpnZXRfY29tcGFyYXRvcikpIH5mXG4gIDs7XG5cbiAgKCoqIENhcHR1cmVzIHRoZSBjb21wYXJhdG9yICh3aGljaCBjYW4ndCBjaGFuZ2UgYW55d2F5LCBzaW5jZSB0aGUgdHlwZSBkZXRlcm1pbmVzIHRoZVxuICAgICAgY29tcGFyYXRvcikgYnkgZnJlZXppbmcgdGhlIGNvcnJlc3BvbmRpbmcgbWFwLiAgTm90ZSB0aGF0IGJ5IGZpcnN0IHVzaW5nIEluY3JlbWVudGFsLm1hcCB0b1xuICAgICAgZ2V0IHRoZSBjb21wYXJhdG9yIG91dCBvZiB0aGUgbWFwLCB3ZSBhbGxvdyB0aGUgaW5pdGlhbCBtYXAgaXRzZWxmIHRvIGJlIGdhcmJhZ2VcbiAgICAgIGNvbGxlY3RlZCAqKVxuICBsZXQgd2l0aF9jb21wYXJhdG9yIG1hcCBmID0gd2l0aF9jb21wYXJhdG9yJyBNYXAuY29tcGFyYXRvciBtYXAgZlxuXG4gIGxldCBvZl9zZXQgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIHNldCA9XG4gICAgd2l0aF9jb21wYXJhdG9yJyBTZXQuY29tcGFyYXRvciBzZXQgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgb2xkX2lucHV0ID0gcmVmIChTZXQuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcikgaW5cbiAgICAgIGxldCBvbGRfb3V0cHV0ID0gcmVmIChNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcikgaW5cbiAgICAgIEluY3JlbWVudGFsLm1hcCBzZXQgfmY6KGZ1biBuZXdfaW5wdXQgLT5cbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgbmV3X291dHB1dCA9XG4gICAgICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgICAgIChTZXQuc3ltbWV0cmljX2RpZmYgIW9sZF9pbnB1dCBuZXdfaW5wdXQpXG4gICAgICAgICAgICAgIH5pbml0OiFvbGRfb3V0cHV0XG4gICAgICAgICAgICAgIH5mOihmdW4gb3V0cHV0IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBGaXJzdCBrIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtcbiAgICAgICAgICAgICAgICB8IFNlY29uZCBrIC0+IE1hcC5hZGRfZXhuIG91dHB1dCB+a2V5OmsgfmRhdGE6KCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbGRfaW5wdXQgOj0gbmV3X2lucHV0O1xuICAgICAgICAgIG9sZF9vdXRwdXQgOj0gbmV3X291dHB1dDtcbiAgICAgICAgICBuZXdfb3V0cHV0KSkpXG4gIDs7XG5cbiAgbGV0IGdlbmVyaWNfbWFwaVxuICAgICAgICAodHlwZSBpbnB1dF9kYXRhIG91dHB1dF9kYXRhIGZfb3V0cHV0IHN0YXRlX3dpdG5lc3MpXG4gICAgICAgICh3aXRuZXNzIDogKGlucHV0X2RhdGEsIG91dHB1dF9kYXRhLCBmX291dHB1dCkgTWFwX3R5cGUudClcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTppbnB1dF9kYXRhIC0+IGZfb3V0cHV0KVxuICAgID1cbiAgICB3aXRoX29sZCB+aW5zdHJ1bWVudGF0aW9uIG1hcCB+ZjooZnVuIH5vbGQgaW5wdXQgLT5cbiAgICAgIG1hdGNoIG9sZCwgTWFwLmxlbmd0aCBpbnB1dCB3aXRoXG4gICAgICB8IF8sIDAgfCBOb25lLCBfIC0+XG4gICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IChNYXAubWFwaSBpbnB1dCB+ZiA6ICgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQpXG4gICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT4gTWFwLmZpbHRlcl9tYXBpIGlucHV0IH5mKVxuICAgICAgfCBTb21lIChvbGRfaW5wdXQsIG9sZF9vdXRwdXQpLCBfIC0+XG4gICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgb2xkX2lucHV0XG4gICAgICAgICAgaW5wdXRcbiAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgIH5pbml0Om9sZF9vdXRwdXRcbiAgICAgICAgICB+ZjooZnVuIG91dHB1dCAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgfCBgUmlnaHQgbmV3X2RhdGEgfCBgVW5lcXVhbCAoXywgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIGxldCByZXMgPSBmIH5rZXkgfmRhdGE6bmV3X2RhdGEgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgICAgICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpyZXNcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggcmVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBvdXRwdXRfZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhOm91dHB1dF9kYXRhKSkpKVxuICA7O1xuXG4gIGxldCBtYXBpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIGdlbmVyaWNfbWFwaSBNYXAgfmluc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZ2VuZXJpY19tYXBpIEZpbHRlcl9tYXAgfmluc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmZcbiAgOztcblxuICBsZXQgbWFwID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBpMSBpMiB+ZiA9XG4gICAgbGV0IG9sZCA9IHJlZiBOb25lIGluXG4gICAgSW5jcmVtZW50YWwubWFwMiBpMSBpMiB+ZjooZnVuIGExIGEyIC0+XG4gICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYiA9IGYgfm9sZDohb2xkIGExIGEyIGluXG4gICAgICAgIG9sZCA6PSBTb21lIChhMSwgYTIsIGIpO1xuICAgICAgICBiKSlcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRfd2l0aF9leHRyYVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhleHRyYV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID91cGRhdGVcbiAgICAgICAgP3NwZWNpYWxpemVkX2luaXRpYWxcbiAgICAgICAgPyhmaW5hbGl6ZSA9IEZuLmlkKVxuICAgICAgICA/KHJldmVydF90b19pbml0X3doZW5fZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgbWFwXG4gICAgICAgIGV4dHJhXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgICAgICB+ZXh0cmFfY2hhbmdlZFxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIGxldCBkZWZhdWx0IH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgZXh0cmEgPVxuICAgICAgICBhZGQgfmtleSB+ZGF0YTpuZXdfZGF0YSAocmVtb3ZlIH5rZXkgfmRhdGE6b2xkX2RhdGEgYWNjIGV4dHJhKSBleHRyYVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi52YWx1ZSB1cGRhdGUgfmRlZmF1bHRcbiAgICBpblxuICAgIHdpdGhfb2xkMiB+aW5zdHJ1bWVudGF0aW9uIG1hcCBleHRyYSB+ZjooZnVuIH5vbGQgbmV3X2luIG5ld19leHRyYSAtPlxuICAgICAgbGV0IGFjYyA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgTWFwLmZvbGQgbmV3X2luIH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIH5rZXkgfmRhdGEgYWNjIG5ld19leHRyYSlcbiAgICAgICAgICAgfCBTb21lIGluaXRpYWwgLT4gaW5pdGlhbCB+aW5pdCBuZXdfaW4gbmV3X2V4dHJhKVxuICAgICAgICB8IFNvbWUgKG9sZF9pbiwgb2xkX2V4dHJhLCBvbGRfb3V0KSAtPlxuICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgaWYgZXh0cmFfZXF1YWwgb2xkX2V4dHJhIG5ld19leHRyYVxuICAgICAgICAgICAgdGhlbiBvbGRfb3V0XG4gICAgICAgICAgICBlbHNlIGV4dHJhX2NoYW5nZWQgfm9sZF9leHRyYSB+bmV3X2V4dHJhIH5pbnB1dDpvbGRfaW4gb2xkX291dFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eSAmJiBNYXAubGVuZ3RoIG5ld19pbiA9IDBcbiAgICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgb2xkX2luXG4gICAgICAgICAgICAgIG5ld19pblxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+ZjooZnVuIGFjYyAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBMZWZ0IG9sZCAtPiByZW1vdmUgfmtleSB+ZGF0YTpvbGQgYWNjIG5ld19leHRyYVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld18gLT4gYWRkIH5rZXkgfmRhdGE6bmV3XyBhY2MgbmV3X2V4dHJhXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAob2xkLCBuZXdfKSAtPlxuICAgICAgICAgICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOm9sZCB+bmV3X2RhdGE6bmV3XyBhY2MgbmV3X2V4dHJhKVxuICAgICAgaW5cbiAgICAgIGZpbmFsaXplIGFjYylcbiAgOztcblxuICBsZXQgbWFwaV9jb3VudFxuICAgICAgICAodHlwZSBhIGNtcClcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGlucHV0XG4gICAgICAgIH4oY29tcGFyYXRvciA6IChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApKVxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGNvbXBhcmF0b3IpIGluXG4gICAgbGV0IGFkZCBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAudXBkYXRlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgbiAtPiBuICsgMSlcbiAgICBpblxuICAgIGxldCByZW1vdmUgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLmNoYW5nZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIDEgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbiAtPiBTb21lIChuIC0gMSkpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIE0uY29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gYWNjXG4gICAgICAgIGVsc2UgYWNjIHw+IHJlbW92ZSBwcmV2X2tleSB8PiBhZGQgbmV3X2tleSlcbiAgOztcblxuICBsZXQgbWFwX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtaW5faGVscGVyIG1hcCA9XG4gICAgbWF0Y2ggTWFwLm1pbl9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSAtPiBTb21lIG1pblxuICA7O1xuXG4gIGxldCBtYXhfaGVscGVyIG1hcCA9XG4gICAgbWF0Y2ggTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWF4LCBfKSAtPiBTb21lIG1heFxuICA7O1xuXG4gIGxldCBib3VuZHNfaGVscGVyIG1hcCA9XG4gICAgbWF0Y2ggTWFwLm1pbl9lbHQgbWFwLCBNYXAubWF4X2VsdCBtYXAgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChtaW4sIF8pLCBTb21lIChtYXgsIF8pIC0+IFNvbWUgKG1pbiwgbWF4KVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgOztcblxuICBsZXQgbWFwaV9taW4gP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwXG4gICAgICB+ZjptaW5faGVscGVyXG4gICAgICAobWFwaV9jb3VudCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX21heCA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIH5mOm1heF9oZWxwZXJcbiAgICAgIChtYXBpX2NvdW50ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgfmY6Ym91bmRzX2hlbHBlclxuICAgICAgKG1hcGlfY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwX21pbiA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX21pbiA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IG1hcF9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9tYXggP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgICAgZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtaW5fdmFsdWUgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciA9XG4gICAgbWFwX21pbiA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1heF92YWx1ZSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWF4ID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWFwX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHZhbHVlX2JvdW5kcyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfYm91bmRzID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWVyZ2Vfc2hhcmVkX2ltcGxcbiAgICAgICAgfm9sZFxuICAgICAgICB+bmV3X2xlZnRfbWFwXG4gICAgICAgIH5uZXdfcmlnaHRfbWFwXG4gICAgICAgIH5kYXRhX2VxdWFsX2xlZnRcbiAgICAgICAgfmRhdGFfZXF1YWxfcmlnaHRcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IGNvbXBhcmF0b3IgPSBNYXAuY29tcGFyYXRvciBuZXdfbGVmdF9tYXAgaW5cbiAgICBsZXQgb2xkX2xlZnRfbWFwLCBvbGRfcmlnaHRfbWFwLCBvbGRfb3V0cHV0ID1cbiAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgICAgZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgICAgfCBTb21lIHggLT4geFxuICAgIGluXG4gICAgbGV0IGxlZnRfZGlmZiA9XG4gICAgICBNYXAuc3ltbWV0cmljX2RpZmYgb2xkX2xlZnRfbWFwIG5ld19sZWZ0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX2xlZnRcbiAgICBpblxuICAgIGxldCByaWdodF9kaWZmID1cbiAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfcmlnaHRfbWFwIG5ld19yaWdodF9tYXAgfmRhdGFfZXF1YWw6ZGF0YV9lcXVhbF9yaWdodFxuICAgIGluXG4gICAgKCogV2UgbWVyZ2UgdGhlIHR3byBzaWRlcyBvZiB0aGUgZGlmZnMgdG9nZXRoZXIgc28gd2UgY2FuIG1ha2Ugc3VyZSB0byBoYW5kbGUgZWFjaFxuICAgICAgIGtleSBleGFjdGx5IG9uY2UuIFRoaXMgcmVsaWVzIG9uIHN5bW1ldHJpYyBkaWZmIGdpdmluZyBzb3J0ZWQgb3V0cHV0LiAqKVxuICAgIFNlcXVlbmNlLm1lcmdlX3dpdGhfZHVwbGljYXRlc1xuICAgICAgbGVmdF9kaWZmXG4gICAgICByaWdodF9kaWZmXG4gICAgICB+Y29tcGFyZTooZnVuIChsZWZ0X2tleSwgXykgKHJpZ2h0X2tleSwgXykgLT4gY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSlcbiAgICB8PiBTZXF1ZW5jZS5mb2xkIH5pbml0Om9sZF9vdXRwdXQgfmY6KGZ1biBvdXRwdXQgZGlmZl9lbGVtZW50IC0+XG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgfCBMZWZ0IChrZXksIF8pIHwgUmlnaHQgKGtleSwgXykgLT4ga2V5XG4gICAgICAgIHwgQm90aCAoKGxlZnRfa2V5LCBfKSwgKF9yaWdodF9rZXksIF8pKSAtPlxuICAgICAgICAgICgqIGNvbXBhcmlzb24gZnVuY3Rpb25zIGNhbiBiZSBleHBlbnNpdmUhICopXG4gICAgICAgICAgKCogYXNzZXJ0IChjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5ID0gMCk7ICopXG4gICAgICAgICAgbGVmdF9rZXlcbiAgICAgIGluXG4gICAgICBmIH5vbGRfb3V0cHV0IH5rZXkgfm91dHB1dCB+ZGlmZl9lbGVtZW50KVxuICA7O1xuXG4gIGxldCBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCA9IGZ1bmN0aW9uXG4gICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCBtZXJnZVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsX2xlZnQgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGRhdGFfZXF1YWxfcmlnaHQgPSBwaHlzX2VxdWFsKVxuICAgICAgICBsZWZ0X21hcFxuICAgICAgICByaWdodF9tYXBcbiAgICAgICAgfmZcbiAgICA9XG4gICAgd2l0aF9vbGQyXG4gICAgICBsZWZ0X21hcFxuICAgICAgcmlnaHRfbWFwXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+ZjooZnVuIH5vbGQgbmV3X2xlZnRfbWFwIG5ld19yaWdodF9tYXAgLT5cbiAgICAgICAgbWVyZ2Vfc2hhcmVkX2ltcGxcbiAgICAgICAgICB+b2xkXG4gICAgICAgICAgfm5ld19sZWZ0X21hcFxuICAgICAgICAgIH5uZXdfcmlnaHRfbWFwXG4gICAgICAgICAgfmRhdGFfZXF1YWxfbGVmdFxuICAgICAgICAgIH5kYXRhX2VxdWFsX3JpZ2h0XG4gICAgICAgICAgfmY6KGZ1biB+b2xkX291dHB1dDpfIH5rZXkgfm91dHB1dCB+ZGlmZl9lbGVtZW50IC0+XG4gICAgICAgICAgICAoKiBUaGVzZSB2YWx1ZXMgcmVwcmVzZW50IHdoZXRoZXIgdGhlcmUgaXMgZGF0YSBmb3IgdGhlIGdpdmVuIGtleSBpbiB0aGUgbmV3XG4gICAgICAgICAgICAgICBpbnB1dCBpbiB0aGUgbGVmdCBhbmQgcmlnaHQgbWFwLiAqKVxuICAgICAgICAgICAgbGV0IGxlZnRfZGF0YV9vcHQsIHJpZ2h0X2RhdGFfb3B0ID1cbiAgICAgICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBCb3RoICgoXywgbGVmdF9kaWZmKSwgKF8sIHJpZ2h0X2RpZmYpKSAtPlxuICAgICAgICAgICAgICAgIG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IGxlZnRfZGlmZiwgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgcmlnaHRfZGlmZlxuICAgICAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYsIE1hcC5maW5kIG5ld19yaWdodF9tYXAga2V5XG4gICAgICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+XG4gICAgICAgICAgICAgICAgTWFwLmZpbmQgbmV3X2xlZnRfbWFwIGtleSwgbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgcmlnaHRfZGlmZlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBvdXRwdXRfZGF0YV9vcHQgPVxuICAgICAgICAgICAgICBtYXRjaCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSB4LCBOb25lIC0+IGYgfmtleSAoYExlZnQgeClcbiAgICAgICAgICAgICAgfCBOb25lLCBTb21lIHkgLT4gZiB+a2V5IChgUmlnaHQgeSlcbiAgICAgICAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBmIH5rZXkgKGBCb3RoICh4LCB5KSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBvdXRwdXRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YSkpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX2JvdGhfc29tZVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsX2xlZnQgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KGRhdGFfZXF1YWxfcmlnaHQgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KG91dF9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIGxlZnRfbWFwXG4gICAgICAgIHJpZ2h0X21hcFxuICAgICAgICB+ZlxuICAgID1cbiAgICB3aXRoX29sZDJcbiAgICAgIGxlZnRfbWFwXG4gICAgICByaWdodF9tYXBcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgIH5mOihmdW4gfm9sZCBuZXdfbGVmdF9tYXAgbmV3X3JpZ2h0X21hcCAtPlxuICAgICAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICBtYXRjaCBNYXAubGVuZ3RoIG5ld19sZWZ0X21hcCwgTWFwLmxlbmd0aCBuZXdfcmlnaHRfbWFwIHdpdGhcbiAgICAgICAgKCogQmVjYXVzZSB3ZSBvbmx5IGNhcmUgYWJvdXQga2V5cyB0aGF0IGFyZSBpbiBib3RoIG1hcHMsIGlmIGVpdGhlciBtYXAgaXNcbiAgICAgICAgICAgZW1wdHksIGJhaWwgZWFybHkuICopXG4gICAgICAgIHwgMCwgXyB8IF8sIDAgLT4gZW1wdHlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbWVyZ2Vfc2hhcmVkX2ltcGxcbiAgICAgICAgICAgIH5vbGRcbiAgICAgICAgICAgIH5uZXdfbGVmdF9tYXBcbiAgICAgICAgICAgIH5uZXdfcmlnaHRfbWFwXG4gICAgICAgICAgICB+ZGF0YV9lcXVhbF9sZWZ0XG4gICAgICAgICAgICB+ZGF0YV9lcXVhbF9yaWdodFxuICAgICAgICAgICAgfmY6KGZ1biB+b2xkX291dHB1dCB+a2V5IH5vdXRwdXQgfmRpZmZfZWxlbWVudCAtPlxuICAgICAgICAgICAgICBsZXQgbGVmdF9hbmRfcmlnaHRfZGF0YV9vcHQgPVxuICAgICAgICAgICAgICAgIGxldCBvcGVuIE9wdGlvbi5MZXRfc3ludGF4IGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQlYmluZCBsZWZ0X2RhdGEgPSBuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudCBsZWZ0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCVtYXAgcmlnaHRfZGF0YSA9IG5ld19kYXRhX2Zyb21fZGlmZl9lbGVtZW50IHJpZ2h0X2RpZmYgaW5cbiAgICAgICAgICAgICAgICAgIGxlZnRfZGF0YSwgcmlnaHRfZGF0YVxuICAgICAgICAgICAgICAgIHwgTGVmdCAoXywgbGVmdF9kaWZmKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0JWJpbmQgbGVmdF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgbGVmdF9kaWZmIGluXG4gICAgICAgICAgICAgICAgICBsZXQlbWFwIHJpZ2h0X2RhdGEgPSBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleSBpblxuICAgICAgICAgICAgICAgICAgbGVmdF9kYXRhLCByaWdodF9kYXRhXG4gICAgICAgICAgICAgICAgfCBSaWdodCAoXywgcmlnaHRfZGlmZikgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgbWF0Y2ggYXJtIGJpbmRzIFtyaWdodF9kYXRhXSBmaXJzdCBiZWNhdXNlIHRoZSBtYXAgbG9va3VwXG4gICAgICAgICAgICAgICAgICAgICBpcyBzbG93ZXIgdGhhbiBjYWxsaW5nIFtuZXdfZGF0YV9mcm9tX2RpZmZfZWxlbWVudF0uICopXG4gICAgICAgICAgICAgICAgICBsZXQlYmluZCByaWdodF9kYXRhID0gbmV3X2RhdGFfZnJvbV9kaWZmX2VsZW1lbnQgcmlnaHRfZGlmZiBpblxuICAgICAgICAgICAgICAgICAgbGV0JW1hcCBsZWZ0X2RhdGEgPSBNYXAuZmluZCBuZXdfbGVmdF9tYXAga2V5IGluXG4gICAgICAgICAgICAgICAgICBsZWZ0X2RhdGEsIHJpZ2h0X2RhdGFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogbG9vayBmb3IgdGhlIHByZXZpb3VzbHkgY29tcHV0ZWQgdmFsdWUgdG8gc2VlIGlmIHdlIGFjdHVhbGx5IG5lZWQgdG9cbiAgICAgICAgICAgICAgICAgYWRkIG9yIHJlbW92ZSB0aGUga2V5LiAqKVxuICAgICAgICAgICAgICBsZXQgcHJldl9vdXQgPSBNYXAuZmluZCBvbGRfb3V0cHV0IGtleSBpblxuICAgICAgICAgICAgICBtYXRjaCBsZWZ0X2FuZF9yaWdodF9kYXRhX29wdCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGYgfmtleSB4IHkgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggcHJldl9vdXQgd2l0aFxuICAgICAgICAgICAgICAgICAoKiBpZiB0aGUgbmV3IHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB0aGUgb2xkLCBkb24ndCBjaGFuZ2UgdGhlIG1hcCAqKVxuICAgICAgICAgICAgICAgICB8IFNvbWUgcHJldl9vdXQgd2hlbiBvdXRfZXF1YWwgZGF0YSBwcmV2X291dCAtPiBvdXRwdXRcbiAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBfIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGEpXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCBwcmV2X291dCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5KSkpXG4gIDs7XG5cbiAgbGV0IGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGxocyA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KGlucHV0X2RhdGEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoZl9vdXRwdXQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBsaHMgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGFjYyA6ICgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWFjYykgaW5cbiAgICBsZXQgKG9uX2lubmVyX2NoYW5nZSA6IGtleTona2V5IC0+IGZfb3V0cHV0IC0+IHVuaXQpID1cbiAgICAgIG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gZnVuIH5rZXkgZGF0YSAtPiBhY2MgOj0gTWFwLnNldCAhYWNjIH5rZXkgfmRhdGFcbiAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPlxuICAgICAgICBmdW4gfmtleSBvcHQgLT5cbiAgICAgICAgICBsZXQgb2xkID0gIWFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgICAgIDo9IChtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb2xkIGtleVxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvbGQgfmtleSB+ZGF0YSlcbiAgICBpblxuICAgIGxldCByZWMgbGhzX2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgbGhzIH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgbGV0IG5ld19ub2RlcyA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gbm9kZXMgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLm1ha2Vfc3RhbGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByZXN1bHQgZGVwO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IE1hcC5yZW1vdmUgIWFjYyBrZXk7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIE1hcC5maW5kX2V4biAhcHJldl9tYXAga2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuc2V0X2N1dG9mZiAoRS5Ob2RlLndhdGNoIG5vZGUpIGMpO1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToob25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCB1c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbm9kZXMgfmtleSB+ZGF0YToobm9kZSwgdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaScgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgTWFwX3R5cGUuRmlsdGVyX21hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBpJyA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5NYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+ZlxuICAgICAgICB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBtYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcCcgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtZXJnZScgP2luc3RydW1lbnRhdGlvbiA/Y3V0b2ZmID9kYXRhX2VxdWFsX2xlZnQgP2RhdGFfZXF1YWxfcmlnaHQgbWFwMSBtYXAyIH5mID1cbiAgICBtZXJnZVxuICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxfbGVmdFxuICAgICAgP2RhdGFfZXF1YWxfcmlnaHRcbiAgICAgIG1hcDFcbiAgICAgIG1hcDJcbiAgICAgIH5mOihmdW4gfmtleTpfIGRpZmYgLT4gU29tZSBkaWZmKVxuICAgIHw+IGZpbHRlcl9tYXBpJyA/aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgfmY6KGZ1biB+a2V5IH5kYXRhOmRpZmYgLT4gZiB+a2V5IGRpZmYpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yXG4gICAgICAgICh0eXBlIHYgdjEgdjIgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/KGRhdGFfZXF1YWwgOiB2IC0+IHYgLT4gYm9vbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgID8obGVmdF9yZXN1bHRfZXF1YWwgOiB2MSAtPiB2MSAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhyaWdodF9yZXN1bHRfZXF1YWwgOiB2MiAtPiB2MiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTp2IC0+IHYxICogdjIpXG4gICAgOiAoKCdrZXksIHYxLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgKiAoKCdrZXksIHYyLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dCBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGlucHV0X2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgaW5wdXQgfmY6KGZ1biBtYXAgLT5cbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgbWF0Y2ggTWFwLmlzX2VtcHR5ICFwcmV2X21hcCwgTWFwLmlzX2VtcHR5IG1hcCB3aXRoXG4gICAgICAgICAgICB8IHRydWUsIHRydWUgfCBmYWxzZSwgdHJ1ZSAtPiBlbXB0eV9tYXAsIGVtcHR5X21hcFxuICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICAoKiBNYXBwaW5nIG9uIGEgbWFwIGlzIHdheSBmYXN0ZXIgdGhhbiBzeW1tZXRyaWMgZGlmZmluZyBhbmQgdGhlblxuICAgICAgICAgICAgICAgICBidWlsZGluZyB0aGUgbWFwcyB1cCBwaWVjZSBieSBwaWVjZSwgc28gd2UgZG8gdGhpcyB3aGVuZXZlciB3ZVxuICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uIGZyb20gXCJlbXB0eVwiIHRvIFwic29tZXRoaW5nXCIsIHdoaWNoIHdpbGwgYWxtb3N0IGFsd2F5c1xuICAgICAgICAgICAgICAgICBoYXBwZW4gb24gdGhlIGZpcnN0IHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgbCwgXyA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJpZ2h0ID1cbiAgICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgXywgciA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgICAgICAgICAgcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAhcHJldl9tYXBcbiAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICB+aW5pdDooIWxlZnRfYWNjLCAhcmlnaHRfYWNjKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKGxlZnQsIHJpZ2h0KSAoa2V5LCBjaGFuZ2VkKSAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChwcmV2LCBuZXdfKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJldl9hLCBwcmV2X2IgPSBmIH5rZXkgfmRhdGE6cHJldiBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2EsIG5ld19iID0gZiB+a2V5IH5kYXRhOm5ld18gaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIGxlZnRfcmVzdWx0X2VxdWFsIHByZXZfYSBuZXdfYVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6bmV3X2FcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHJpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiByaWdodF9yZXN1bHRfZXF1YWwgcHJldl9iIG5ld19iXG4gICAgICAgICAgICAgICAgICAgICAgdGhlbiByaWdodFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCByaWdodCB+a2V5IH5kYXRhOm5ld19iXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxlZnQsIHJpZ2h0XG4gICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTWFwLnJlbW92ZSBsZWZ0IGtleSwgTWFwLnJlbW92ZSByaWdodCBrZXlcbiAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGVsZW1lbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGEsIGIgPSBmIH5rZXkgfmRhdGE6ZWxlbWVudCBpblxuICAgICAgICAgICAgICAgICAgICBNYXAuc2V0IGxlZnQgfmtleSB+ZGF0YTphLCBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6YilcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhbGVmdF9hY2MgbGVmdCkgdGhlbiBFLk5vZGUubWFrZV9zdGFsZSBsZWZ0X3Jlc3VsdDtcbiAgICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIXJpZ2h0X2FjYyByaWdodCkgdGhlbiBFLk5vZGUubWFrZV9zdGFsZSByaWdodF9yZXN1bHQ7XG4gICAgICAgICAgbGVmdF9hY2MgOj0gbGVmdDtcbiAgICAgICAgICByaWdodF9hY2MgOj0gcmlnaHQ7XG4gICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9jaGFuZ2UpO1xuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSByaWdodF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUud2F0Y2ggbGVmdF9yZXN1bHQsIEUuTm9kZS53YXRjaCByaWdodF9yZXN1bHRcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfmZcbiAgICA9XG4gICAgbGV0IHBhaXIgPVxuICAgICAgd2l0aF9jb21wYXJhdG9yIGlucHV0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBpbnB1dFxuICAgICAgICB8PiB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCB1bnppcCA/aW5zdHJ1bWVudGF0aW9uID9sZWZ0X3Jlc3VsdF9lcXVhbCA/cmlnaHRfcmVzdWx0X2VxdWFsIGlucHV0ID1cbiAgICBsZXQgZGF0YV9lcXVhbCA9XG4gICAgICBPcHRpb24ubWFwMiBsZWZ0X3Jlc3VsdF9lcXVhbCByaWdodF9yZXN1bHRfZXF1YWwgfmY6KGZ1biBsIHIgLT5cbiAgICAgICAgVHVwbGUyLmVxdWFsIH5lcTE6bCB+ZXEyOnIpXG4gICAgaW5cbiAgICB1bnppcF9tYXBpXG4gICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgP2xlZnRfcmVzdWx0X2VxdWFsXG4gICAgICA/cmlnaHRfcmVzdWx0X2VxdWFsXG4gICAgICBpbnB1dFxuICAgICAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZGF0YSlcbiAgOztcblxuICBsZXQgdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InXG4gICAgICAgICh0eXBlIHYgdjEgdjIgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICA/Y3V0b2ZmXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChpbnB1dCA6ICgoJ2tleSwgdiwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KHYsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAodjEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQgKiAodjIsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIHYxLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgKiAoKCdrZXksIHYyLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dCBpblxuICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcHJldl9ub2RlcyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9hY2MgOiAoJ2tleSwgdjEsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgbGVmdF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWxlZnRfYWNjKSBpblxuICAgIGxldCByaWdodF9hY2MgOiAoJ2tleSwgdjIsICdjbXApIE1hcC50IHJlZiA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgcmlnaHRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFyaWdodF9hY2MpIGluXG4gICAgbGV0IGxlZnRfb25faW5uZXJfY2hhbmdlIH5rZXkgZGF0YSA9IGxlZnRfYWNjIDo9IE1hcC5zZXQgIWxlZnRfYWNjIH5rZXkgfmRhdGEgaW5cbiAgICBsZXQgcmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkgZGF0YSA9IHJpZ2h0X2FjYyA6PSBNYXAuc2V0ICFyaWdodF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByZWMgaW5wdXRfY2hhbmdlID1cbiAgICAgIGxhenlcbiAgICAgICAgKEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uSW5zdHJ1bWVudGF0aW9uLmYgKGZ1biAoKSAtPlxuICAgICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgICB+aW5pdDohcHJldl9ub2Rlc1xuICAgICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2xlZnRfZGVwLCBfcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLm1ha2Vfc3RhbGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgbGVmdF9kZXAsIHJpZ2h0X2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlcyA9IE1hcC5yZW1vdmUgbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IHJpZ2h0X2RlcDtcbiAgICAgICAgICAgICAgICAgICAgIGxlZnRfYWNjIDo9IE1hcC5yZW1vdmUgIWxlZnRfYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2FjYyA6PSBNYXAucmVtb3ZlICFyaWdodF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmludmFsaWRhdGUgbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBub2RlIChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBpbnB1dF9jaGFuZ2UpKTtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0X2luY3IsIHJpZ2h0X2luY3IgPSBmIH5rZXkgfmRhdGE6KEUuTm9kZS53YXRjaCBub2RlKSBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlIGxlZnRfaW5jciB+b25fY2hhbmdlOihsZWZ0X29uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICAgIEUuRGVwZW5kZW5jeS5jcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodF9pbmNyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToocmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IGxlZnRfcmVzdWx0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXA7XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgICAgTWFwLnNldFxuICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1xuICAgICAgICAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihub2RlLCBsZWZ0X3VzZXJfZnVuY3Rpb25fZGVwLCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcCkpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgICBwcmV2X21hcCA6PSBtYXApKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGknID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbGV0IHBhaXIgPVxuICAgICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgbWFwXG4gICAgICAgIHw+IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJyB+aW5zdHJ1bWVudGF0aW9uID9jdXRvZmYgP2RhdGFfZXF1YWwgfmNvbXBhcmF0b3IgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IGtleXMgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIG1hcCA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGxldCBhZGQgfmtleSB+ZGF0YTpfIGFjYyA9IFNldC5hZGQgYWNjIGtleSBpblxuICAgICAgbGV0IHJlbW92ZSB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LnJlbW92ZSBhY2Mga2V5IGluXG4gICAgICBsZXQgZGF0YV9lcXVhbCBfIF8gPSB0cnVlIGluXG4gICAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgICBtYXBcbiAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICB+aW5pdDooU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgIH5pbml0OihlbXB0eSwgZW1wdHkpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhOmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLnNldCBmaXJzdCB+a2V5IH5kYXRhLCBNYXAucmVtb3ZlIHNlY29uZCBrZXlcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAuc2V0IHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuYWRkX2V4biBmaXJzdCB+a2V5IH5kYXRhLCBzZWNvbmRcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IGZpcnN0LCBNYXAuYWRkX2V4biBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGE6XyAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIG1hcGknID9pbnN0cnVtZW50YXRpb24gP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmZcbiAgICB8PiBwYXJ0aXRpb25fbWFwaSA/aW5zdHJ1bWVudGF0aW9uIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IGZsYXR0ZW4gc3RhdGUgbWFwID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgcmVzdWx0ID0gcmVmIChNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKSkgaW5cbiAgICBsZXQgbm9kZSA9IEUuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0KSBpblxuICAgIE1hcC5pdGVyaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhOmluY3IgLT5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICBub2RlXG4gICAgICAgIChFLkRlcGVuZGVuY3kuY3JlYXRlIGluY3Igfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgcmVzdWx0IDo9IE1hcC5zZXQgIXJlc3VsdCB+a2V5IH5kYXRhOmEpKSk7XG4gICAgRS5Ob2RlLndhdGNoIG5vZGVcbiAgOztcblxuICBsZXQgam9pbl93aXRoX2NvbXBhcmF0b3Igfmluc3RydW1lbnRhdGlvbiBtYXBfaW5jciB+Y29tcGFyYXRvciA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbWFwX2luY3IgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcmVzdWx0X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgb2xkX21hcF9vZl9pbmNycyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0X21hcCkgaW5cbiAgICBsZXQgYWRkX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YV9ub2RlID1cbiAgICAgIGxldCBuZXdfZGVwID1cbiAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBkYXRhX25vZGUgfm9uX2NoYW5nZTooZnVuIGRhdGEgLT5cbiAgICAgICAgICByZXN1bHRfbWFwIDo9IE1hcC5zZXQgIXJlc3VsdF9tYXAgfmtleSB+ZGF0YSlcbiAgICAgIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IG5ld19kZXA7XG4gICAgICBNYXAuc2V0IGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6bmV3X2RlcFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgPVxuICAgICAgbGV0IGRlcCA9IE1hcC5maW5kX2V4biBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXkgaW5cbiAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByZXN1bHQgZGVwO1xuICAgICAgcmVzdWx0X21hcCA6PSBNYXAucmVtb3ZlICFyZXN1bHRfbWFwIGtleTtcbiAgICAgIE1hcC5yZW1vdmUgY3VycmVudF9kZXBlbmRlbmNpZXMga2V5XG4gICAgaW5cbiAgICBsZXQgbGhzX2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgbWFwX2luY3IgfmY6KGZ1biBtYXBfb2ZfaW5jcnMgLT5cbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgbmV3X2RlcGVuZGVuY3lfbWFwID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgIW9sZF9tYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgICAgbWFwX29mX2luY3JzXG4gICAgICAgICAgICAgIH5pbml0OiFjdXJyZW50X2RlcGVuZGVuY2llc1xuICAgICAgICAgICAgICB+ZjooZnVuIGN1cnJlbnRfZGVwZW5kZW5jaWVzIChrZXksIGRpZmYpIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggZGlmZiB3aXRoXG4gICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXlcbiAgICAgICAgICAgICAgICB8IGBSaWdodCBkYXRhX25vZGUgLT4gYWRkX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YV9ub2RlXG4gICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoXywgZGF0YV9ub2RlKSAtPlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB8PiBhZGRfc3Vibm9kZSB+a2V5IH5kYXRhX25vZGUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjdXJyZW50X2RlcGVuZGVuY2llcyA6PSBuZXdfZGVwZW5kZW5jeV9tYXA7XG4gICAgICAgICAgb2xkX21hcF9vZl9pbmNycyA6PSBtYXBfb2ZfaW5jcnMpKVxuICAgIGluXG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSBsaHNfY2hhbmdlKTtcbiAgICBFLk5vZGUud2F0Y2ggcmVzdWx0XG4gIDs7XG5cbiAgbGV0IGpvaW4gPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pIG1hcCA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGpvaW5fd2l0aF9jb21wYXJhdG9yIH5pbnN0cnVtZW50YXRpb24gbWFwIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIG1vZHVsZSBTZXBhcmF0ZV9zdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdrLCAndiwgJ2NtcCwgJ3cpIHQgPVxuICAgICAgeyBtdXRhYmxlIGlucHV0X21hcCA6ICgnaywgJ3YsICdjbXApIE1hcC50XG4gICAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS50LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIG91dHB1dF9tYXAgOiAoJ2ssICgndiwgJ3cpIEluY3JlbWVudGFsLnQsICdjbXApIE1hcC50XG4gICAgICB9XG5cbiAgICBsZXQgY3JlYXRlIGNvbXBhcmF0b3IgPVxuICAgICAgbGV0IGVtcHR5ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICAgIHsgaW5wdXRfbWFwID0gZW1wdHk7IGV4cGVydF9ub2RlcyA9IGVtcHR5OyBvdXRwdXRfbWFwID0gZW1wdHkgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlX2xvb2t1cF9ub2RlIHN0YXRlIHQga2V5ID1cbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+IE1hcC5maW5kX2V4biB0LmlucHV0X21hcCBrZXkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNlcGFyYXRlID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSBpbnB1dF9tYXAgfmRhdGFfZXF1YWwgPVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCBpblxuICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dF9tYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgc3RhdGUgPSBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGUgY29tcGFyYXRvciBpblxuICAgICAgbGV0IG91dHB1dF9tYXBfbm9kZSA9XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+IHN0YXRlLm91dHB1dF9tYXApXG4gICAgICBpblxuICAgICAgbGV0IG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsZXQgZGVwZW5kZW5jeSA9XG4gICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIChMYXp5LmZvcmNlX3ZhbCBpbnB1dF9tYXBfY2hhbmdlZClcbiAgICAgICAgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSBkZXBlbmRlbmN5XG4gICAgICBpblxuICAgICAgKCogV2Ugd2FudCB0byBtYWtlIG5vZGVzIGRlcGVuZCBvbiBbaW5wdXRfbWFwX2NoYW5nZWRdIHNvIHRoYXQgW2lucHV0X21hcF9jaGFuZ2VkXVxuICAgICAgICAgaXMgYWxsb3dlZCB0byBtYWtlIHRoZW0gc3RhbGUsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgZm9yIGFueVxuICAgICAgICAgb3RoZXIgcmVhc29uLiBTbyB3ZSBtYWtlIFtpbnB1dF9tYXBfY2hhbmdlZF0gYSB1bml0IGluY3JlbWVudGFsICh0aGF0IHRoZXJlZm9yZVxuICAgICAgICAgbmV2ZXIgY2hhbmdlcykgYW5kIHRoaXMgd2F5IFtvdXRwdXRfbWFwX25vZGVdIGFuZCB0aGUgbG9va3VwIG5vZGVzIHdpbGwgb25seSBiZVxuICAgICAgICAgcmVjb21wdXRlZCB3aGVuIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFkZSBzdGFsZS5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLkluc3RydW1lbnRhdGlvbi5mIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIGxldCBwcmV2X2lucHV0X21hcCA9IHN0YXRlLmlucHV0X21hcCBpblxuICAgICAgICAgICAgICAgbGV0IGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCA9XG4gICAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgICAgcHJldl9pbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgICAgIH5pbml0OihzdGF0ZS5leHBlcnRfbm9kZXMsIHN0YXRlLm91dHB1dF9tYXApXG4gICAgICAgICAgICAgICAgICAgfmY6KGZ1biAoZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfb2xkX3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvbGRfbm9kZSA9IE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmludmFsaWRhdGUgb2xkX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGUgb3V0cHV0X21hcF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICBNYXAucmVtb3ZlIGV4cGVydF9ub2RlcyBrZXksIE1hcC5yZW1vdmUgb3V0cHV0X21hcCBrZXlcbiAgICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF9uZXdfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlX3N0YXRlLmNyZWF0ZV9sb29rdXBfbm9kZSBpbmNyZW1lbnRhbF9zdGF0ZSBzdGF0ZSBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfY2hhbmdlZCBub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICggTWFwLmFkZF9leG4gZXhwZXJ0X25vZGVzIH5rZXkgfmRhdGE6bm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAsIE1hcC5hZGRfZXhuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB+ZGF0YTooSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSkgKVxuICAgICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoX29sZF92YWx1ZSwgX25ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSAoTWFwLmZpbmRfZXhuIGV4cGVydF9ub2RlcyBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICBleHBlcnRfbm9kZXMsIG91dHB1dF9tYXApXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgc3RhdGUuaW5wdXRfbWFwIDwtIGlucHV0X21hcDtcbiAgICAgICAgICAgICAgIHN0YXRlLmV4cGVydF9ub2RlcyA8LSBleHBlcnRfbm9kZXM7XG4gICAgICAgICAgICAgICBzdGF0ZS5vdXRwdXRfbWFwIDwtIG91dHB1dF9tYXApKSlcbiAgICAgIGluXG4gICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG91dHB1dF9tYXBfbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQ7XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBvdXRwdXRfbWFwX25vZGUpXG4gIDs7XG5cbiAgKCogSnVzdCBmb3IgZGVyaXZpbmcgc3RydWN0dXJhbCBlcXVhbGl0eS4gKilcbiAgdHlwZSAnYSBtYXliZV9ib3VuZF9zdHJ1Y3R1cmFsbHkgPSAnYSBNYXliZV9ib3VuZC50ID1cbiAgICB8IEluY2wgb2YgJ2FcbiAgICB8IEV4Y2wgb2YgJ2FcbiAgICB8IFVuYm91bmRlZFxuICBbQEBkZXJpdmluZyBlcXVhbF1cblxuICBsZXQgc3VicmFuZ2VcbiAgICAgICAgKHR5cGUgayB2IGNtcCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKG1hcF9pbmNyIDogKChrLCB2LCBjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICByYW5nZVxuICAgID1cbiAgICB3aXRoX29sZDIgfmluc3RydW1lbnRhdGlvbiBtYXBfaW5jciByYW5nZSB+ZjooZnVuIH5vbGQgbWFwIHJhbmdlIC0+XG4gICAgICBsZXQgY29tcGFyZSA9IChNYXAuY29tcGFyYXRvciBtYXApLmNvbXBhcmUgaW5cbiAgICAgIGxldCBlcXVhbCBsIHIgPSBjb21wYXJlIGwgciA9IDAgaW5cbiAgICAgIGxldCAoID4gKSBhIGIgPSBjb21wYXJlIGEgYiA+IDBcbiAgICAgIGFuZCAoID49ICkgYSBiID0gY29tcGFyZSBhIGIgPj0gMCBpblxuICAgICAgbGV0IG1heWJlX2JvdW5kX2VxdWFsIGEgYiA6IGJvb2wgPSBlcXVhbF9tYXliZV9ib3VuZF9zdHJ1Y3R1cmFsbHkgZXF1YWwgYSBiIGluXG4gICAgICBsZXQgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4IDogYm9vbCA9XG4gICAgICAgIG1hdGNoIG1pbiwgbWF4IHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQsIChVbmJvdW5kZWQgfCBFeGNsIF8gfCBJbmNsIF8pIHwgKEV4Y2wgXyB8IEluY2wgXyksIFVuYm91bmRlZCAtPiBmYWxzZVxuICAgICAgICB8IEluY2wgbWluLCBJbmNsIG1heCAtPiBtaW4gPiBtYXhcbiAgICAgICAgfCBFeGNsIG1pbiwgRXhjbCBtYXggfCBJbmNsIG1pbiwgRXhjbCBtYXggfCBFeGNsIG1pbiwgSW5jbCBtYXggLT4gbWluID49IG1heFxuICAgICAgaW5cbiAgICAgIGxldCByYW5nZV9pbmNsdWRlcyB+bWluIH5tYXgga2V5IDogYm9vbCA9XG4gICAgICAgIE1heWJlX2JvdW5kLmlzX2xvd2VyX2JvdW5kIG1pbiB+b2ZfOmtleSB+Y29tcGFyZVxuICAgICAgICAmJiBNYXliZV9ib3VuZC5pc191cHBlcl9ib3VuZCBtYXggfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgIGluXG4gICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCogRW1wdHkgbmV3IHJhbmdlIG1lYW5zIGVtcHR5IG1hcCAqKVxuICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjooTWFwLmNvbXBhcmF0b3IgbWFwKVxuICAgICAgfCBTb21lICgobWluLCBtYXgpIGFzIHJhbmdlKSAtPlxuICAgICAgICBsZXQgZnJvbV9zY3JhdGNoICgpID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDptYXggaW5cbiAgICAgICAgKG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBOb25lLCBfKSAtPlxuICAgICAgICAgICAoKiBubyBvbGQgcmFuZ2UgKilcbiAgICAgICAgICAgZnJvbV9zY3JhdGNoICgpXG4gICAgICAgICB8IFNvbWUgKF8sIFNvbWUgKG9sZF9taW4sIG9sZF9tYXgpLCBfKVxuICAgICAgICAgICB3aGVuIHJhbmdlX2lzX2VtcHR5IH5taW46b2xkX21pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXg6b2xkX21heFxuICAgICAgICAgICAgIHx8IHJhbmdlX2lzX2VtcHR5IH5taW46b2xkX21pbiB+bWF4IC0+XG4gICAgICAgICAgICgqIGVtcHR5IG9sZCByYW5nZSBvciBvbGQgcmFuZ2UgZGlzam9pbnQgd2l0aCBuZXcgKilcbiAgICAgICAgICAgZnJvbV9zY3JhdGNoICgpXG4gICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIFNvbWUgKChvbGRfbWluLCBvbGRfbWF4KSBhcyBvbGRfcmFuZ2UpLCBvbGRfcmVzKSAtPlxuICAgICAgICAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgICAgICAgICAoKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBrZXkgaXMgaW4gYm90aCBuZXcgYW5kIG9sZCByYW5nZXMgKilcbiAgICAgICAgICAgICBsZXQgaW5fcmFuZ2VfaW50ZXJzZWN0aW9uIGtleSA9XG4gICAgICAgICAgICAgICByYW5nZV9pbmNsdWRlcyB+bWluIH5tYXgga2V5XG4gICAgICAgICAgICAgICAmJiByYW5nZV9pbmNsdWRlcyB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4IGtleVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogQXBwbHkgY2hhbmdlcyB0byBrZXlzIHdoaWNoIGFyZSBpbiB0aGUgaW50ZXJzZWN0aW9uIG9mIGJvdGggcmFuZ2VzLlxuXG4gICAgICAgICAgICAgICAgW291dHNpZGVdIGlzIHRoZSBudW1iZXIgb2YgdXBkYXRlcyBvdXRzaWRlIHRoZSByYW5nZSBpbnRlcnNlY3Rpb24gdGhhdCB3ZVxuICAgICAgICAgICAgICAgIHRvbGVyYXRlIGJlZm9yZSBnaXZpbmcgdXAgYW5kIHJlY29uc3RydWN0aW5nIGJhc2VkIG9uIHRoZSBuZXcgcmFuZ2UuIFRoaXNcbiAgICAgICAgICAgICAgICBpcyBhbiBvcHRpbWlzYXRpb24gaW4gdGhlIGNhc2UgdGhhdCB0aGUgbWFwIGNoYW5nZXMgaW4gYSB2ZXJ5IGJpZyB3YXksIGF0XG4gICAgICAgICAgICAgICAgd2hpY2ggcG9pbnQgY29tcHV0aW5nIGJhc2VkIG9uIHRoZSBuZXcgcmFuZ2UgaXMgY2hlYXBlci4gICopXG4gICAgICAgICAgICAgbGV0IGFwcGx5X2RpZmZfaW5faW50ZXJzZWN0aW9uIChvdXRzaWRlLCBtYXApIChrZXksIGRhdGEpID1cbiAgICAgICAgICAgICAgIGlmIGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXlcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICBtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleVxuICAgICAgICAgICAgICAgICB8IGBSaWdodCBkYXRhIHwgYFVuZXF1YWwgKF8sIGRhdGEpIC0+IG91dHNpZGUsIE1hcC5zZXQgbWFwIH5rZXkgfmRhdGEpXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbGV0IG91dHNpZGUgPSBvdXRzaWRlIC0gMSBpblxuICAgICAgICAgICAgICAgICBpZiBJbnQuTy4ob3V0c2lkZSA8IDApXG4gICAgICAgICAgICAgICAgIHRoZW4gcmV0dXJuIChmcm9tX3NjcmF0Y2ggKCkpXG4gICAgICAgICAgICAgICAgIGVsc2Ugb3V0c2lkZSwgTWFwLnJlbW92ZSBtYXAga2V5KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgKCogRmlyc3QgdXBkYXRlIHRoZSBrZXlzIGluIC9ib3RoLyB0aGUgb2xkIGFuZCB0aGUgbmV3IHJhbmdlLiAqKVxuICAgICAgICAgICAgIGxldCB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvbiA9XG4gICAgICAgICAgICAgICAoKiBDdXRvZmYgdGhlIGJpZyBkaWZmIGNvbXB1dGF0aW9uIGlmIHdlIHJlYWNoIE8ofHN1Ym1hcHwpIG51bWJlciBvZlxuICAgICAgICAgICAgICAgICAgY2hhbmdlcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSByYW5nZSAqKVxuICAgICAgICAgICAgICAgbGV0IG91dHNpZGVfY3V0b2ZmID0gTWFwLmxlbmd0aCBvbGRfcmVzIC8gNCBpblxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgb2xkX21hcFxuICAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgICAgfmluaXQ6KG91dHNpZGVfY3V0b2ZmLCBvbGRfcmVzKVxuICAgICAgICAgICAgICAgICB+ZjphcHBseV9kaWZmX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgICAgfD4gc25kXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiBUdXBsZTIuZXF1YWwgfmVxMTptYXliZV9ib3VuZF9lcXVhbCB+ZXEyOm1heWJlX2JvdW5kX2VxdWFsIG9sZF9yYW5nZSByYW5nZVxuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICgqIFRoZXJlIGFyZSBubyBrZXlzIHRvIHJlbW92ZSBhbmQgZXZlcnl0aGluZyBpbiByYW5nZSBpcyB1cGRhdGVkLiAqKVxuICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICgqIFJlbW92ZSBhbnkga2V5cyB3aGljaCBhcmUgbm90IGluIHRoZSBuZXcgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSA9XG4gICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZVxuICAgICAgICAgICAgICAgICAgIHdpdGhfdXBkYXRlZF92YWx1ZXNfaW5faW50ZXJzZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgfmxvd2VyX2JvdW5kOm1pblxuICAgICAgICAgICAgICAgICAgIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAoKiBBZGQgaW4gYW55IGtleXMgd2hpY2ggYXJlIGluIHRoZSBuZXcgcmFuZ2UgYnV0IG5vdCB0aGUgb2xkIHJhbmdlLiAqKVxuICAgICAgICAgICAgICAgbGV0IHdpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgbGV0IG1hcF9hcHBlbmRfZXhuIGxvd2VyX3BhcnQgdXBwZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBgT2sgbWFwIC0+IG1hcFxuICAgICAgICAgICAgICAgICAgIHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiaW1wb3NzaWJsZSBjYXNlOiBCVUcgaW4gaW5jcl9tYXAubWwgc3VicmFuZ2VcIlxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBsZXQgbG93ZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggb2xkX21pbiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICAgICAgICAgICAgICAgfCBFeGNsIG9sZF9taW4gLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6KEluY2wgb2xkX21pbilcbiAgICAgICAgICAgICAgICAgICB8IEluY2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooRXhjbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICBhbmQgdXBwZXJfcGFydCA9XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggb2xkX21heCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBVbmJvdW5kZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApXG4gICAgICAgICAgICAgICAgICAgfCBFeGNsIG9sZF9tYXggLT5cbiAgICAgICAgICAgICAgICAgICAgIE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOihJbmNsIG9sZF9tYXgpIH51cHBlcl9ib3VuZDptYXhcbiAgICAgICAgICAgICAgICAgICB8IEluY2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEV4Y2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBtYXBfYXBwZW5kX2V4blxuICAgICAgICAgICAgICAgICAgIGxvd2VyX3BhcnRcbiAgICAgICAgICAgICAgICAgICAobWFwX2FwcGVuZF9leG4gd2l0aG91dF9rZXlzX291dF9vZl9yYW5nZSB1cHBlcl9wYXJ0KVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIHdpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlKSkpKVxuICA7O1xuXG4gIGxldCByZWtleVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvclxuICAgICAgICB+ZlxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgbWFwX2luY3JcbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IG91dGVyX2NvbXBhcmF0b3IsIFtdKVxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgKG91dHB1dCwgYWRkcykgLT5cbiAgICAgICAgbGV0IG5ld19lbnRyeSA9IGYgfmtleSB+ZGF0YSwgZGF0YSBpblxuICAgICAgICBvdXRwdXQsIG5ld19lbnRyeSA6OiBhZGRzKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGEgKG91dHB1dCwgYWRkcykgLT4gTWFwLnJlbW92ZSBvdXRwdXQgKGYgfmtleSB+ZGF0YSksIGFkZHMpXG4gICAgICB+dXBkYXRlOihmdW4gfmtleSB+b2xkX2RhdGEgfm5ld19kYXRhIChvdXRwdXQsIGFkZHMpIC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiAoTWFwLmNvbXBhcmF0b3Igb3V0cHV0KS5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gTWFwLnNldCBvdXRwdXQgfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhLCBhZGRzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBvdXRwdXQgPSBNYXAucmVtb3ZlIG91dHB1dCBwcmV2X2tleSBpblxuICAgICAgICAgIG91dHB1dCwgKG5ld19rZXksIG5ld19kYXRhKSA6OiBhZGRzKSlcbiAgICAgIH5maW5hbGl6ZTooZnVuIChvdXRwdXQsIGFkZHMpIC0+XG4gICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgIExpc3QuZm9sZCBhZGRzIH5pbml0Om91dHB1dCB+ZjooZnVuIG91dHB1dCAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgTWFwLmFkZF9leG4gb3V0cHV0IH5rZXkgfmRhdGEpXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dCwgW10pXG4gICAgfD4gSW5jcmVtZW50YWwubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBpbmRleF9ieWlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3JcbiAgICAgICAgfmluZGV4XG4gICAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIGlubmVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgICAgbWFwX2luY3JcbiAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSBvdXRlcl9jb21wYXJhdG9yKVxuICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgIH5hZGQ6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBvdXRlcl9tYXAgLT5cbiAgICAgICAgICBtYXRjaCBpbmRleCB+a2V5OmlubmVyX2tleSB+ZGF0YSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dGVyX21hcFxuICAgICAgICAgIHwgU29tZSBvdXRlcl9rZXkgLT5cbiAgICAgICAgICAgIE1hcC51cGRhdGUgb3V0ZXJfbWFwIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIGlubmVyX2tleSBkYXRhIH5jb21wYXJhdG9yOmlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPiBNYXAuYWRkX2V4biBpbm5lcl9tYXAgfmtleTppbm5lcl9rZXkgfmRhdGEpKVxuICAgICAgICB+cmVtb3ZlOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAuY2hhbmdlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGZhaWx3aXRoIFwiQlVHOiBIaXQgc3VwcG9zZWRseSBpbXBvc3NpYmxlIGNhc2UgaW4gSW5jcl9tYXAuaW5kZXhfYnlcIlxuICAgICAgICAgICAgICB8IFNvbWUgaW5uZXJfbWFwIC0+XG4gICAgICAgICAgICAgICAgbGV0IGlubmVyX21hcCA9IE1hcC5yZW1vdmUgaW5uZXJfbWFwIGlubmVyX2tleSBpblxuICAgICAgICAgICAgICAgIGlmIE1hcC5pc19lbXB0eSBpbm5lcl9tYXAgdGhlbiBOb25lIGVsc2UgU29tZSBpbm5lcl9tYXApKSlcbiAgOztcblxuICBsZXQgaW5kZXhfYnkgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+Y29tcGFyYXRvciB+aW5kZXggPVxuICAgIGluZGV4X2J5aVxuICAgICAgP2luc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgfmluZGV4OihmdW4gfmtleTpfIH5kYXRhIC0+IGluZGV4IGRhdGEpXG4gIDs7XG5cblxuICAoKiogRmluZCB0d28ga2V5cyBpbiBtYXAgYnkgaW5kZXgsIE8obikuIFdlIHVzZSBqdXN0IG9uZSBmb2xkICh0d28gTWFwLm50aCB3b3VsZCB1c2UgdHdvKVxuICAgICAgYW5kIG9wdGltaXplIGZvciBrZXlzIGNsb3NlIHRvIGVpdGhlciBiZWdpbm5pbmcgb3IgZW5kIGJ5IHVzaW5nIGVpdGhlciBmb2xkIG9yXG4gICAgICBmb2xkX3JpZ2h0LlxuICAqKVxuICBtb2R1bGUgS2V5X3N0YXR1cyA9IHN0cnVjdFxuICAgIHR5cGUgJ2sgdCA9XG4gICAgICB8IEtub3duIG9mICdrXG4gICAgICB8IEtub3duX25vbmVcbiAgICAgIHwgVW5rbm93blxuXG4gICAgbGV0IGlzX2tub3duID0gZnVuY3Rpb25cbiAgICAgIHwgVW5rbm93biAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWVcbiAgICA7O1xuXG4gICAgbGV0IHRvX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gfCBLbm93bl9ub25lIC0+IE5vbmVcbiAgICAgIHwgS25vd24gayAtPiBTb21lIGtcbiAgICA7O1xuICBlbmRcblxuICBsZXQgZmluZF9rZXlfcmFuZ2VfbGluZWFyICh0eXBlIGspIH5mcm9tIH50b18gKG1hcCA6IChrLCBfLCBfKSBNYXAudClcbiAgICA6IChrICogayBvcHRpb24pIG9wdGlvblxuICAgID1cbiAgICBsZXQgb3BlbiBLZXlfc3RhdHVzIGluXG4gICAgbGV0IGxlbiA9IE1hcC5sZW5ndGggbWFwIGluXG4gICAgbGV0IGJlZ2luX2tleSA9IGlmIEludC4oID49ICkgZnJvbSBsZW4gdGhlbiBLbm93bl9ub25lIGVsc2UgVW5rbm93biBpblxuICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPj0gKSB0b18gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZmluZF9rZXlzIGZvbGQgfnN0YXJ0X3BvcyB+YWR2YW5jZV9wb3MgPVxuICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgIGZvbGRcbiAgICAgICAgICBtYXBcbiAgICAgICAgICB+aW5pdDooYmVnaW5fa2V5LCBlbmRfa2V5LCBzdGFydF9wb3MpXG4gICAgICAgICAgfmY6KGZ1biB+a2V5IH5kYXRhOl8gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKSAtPlxuICAgICAgICAgICAgbGV0IGJlZ2luX2tleSA9IGlmIEludC4oID0gKSBwb3MgZnJvbSB0aGVuIEtub3duIGtleSBlbHNlIGJlZ2luX2tleSBpblxuICAgICAgICAgICAgbGV0IGVuZF9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIHRvXyB0aGVuIEtub3duIGtleSBlbHNlIGVuZF9rZXkgaW5cbiAgICAgICAgICAgIGlmIGlzX2tub3duIGJlZ2luX2tleSAmJiBpc19rbm93biBlbmRfa2V5XG4gICAgICAgICAgICB0aGVuIHJldHVybiAoYmVnaW5fa2V5LCBlbmRfa2V5LCBwb3MpXG4gICAgICAgICAgICBlbHNlIGJlZ2luX2tleSwgZW5kX2tleSwgYWR2YW5jZV9wb3MgcG9zKSlcbiAgICBpblxuICAgIGxldCBiZWdpbl9rZXksIGVuZF9rZXksIF8gPVxuICAgICAgKCogU2VhcmNoaW5nIGZyb20gbGVmdCB0YWtlcyBPKHRvXyksIGZyb20gcmlnaHQgLSBPKGxlbiAtIGZyb20pLCBzbyBzZWxlY3QgdGhlXG4gICAgICAgICBzbWFsbGVyIG9uZS4gKilcbiAgICAgIGlmIHRvXyA8IGxlbiAtIGZyb21cbiAgICAgIHRoZW4gZmluZF9rZXlzIE1hcC5mb2xkIH5zdGFydF9wb3M6MCB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zICsgMSlcbiAgICAgIGVsc2UgZmluZF9rZXlzIE1hcC5mb2xkX3JpZ2h0IH5zdGFydF9wb3M6KGxlbiAtIDEpIH5hZHZhbmNlX3BvczooZnVuIHBvcyAtPiBwb3MgLSAxKVxuICAgIGluXG4gICAgT3B0aW9uLm1hcCAoS2V5X3N0YXR1cy50b19vcHRpb24gYmVnaW5fa2V5KSB+ZjooZnVuIGJlZ2luX2tleSAtPlxuICAgICAgYmVnaW5fa2V5LCBLZXlfc3RhdHVzLnRvX29wdGlvbiBlbmRfa2V5KVxuICA7O1xuXG4gIGxldCBudGhfZnJvbV9laXRoZXJfc2lkZSAodHlwZSBrKSBuIChtYXAgOiAoaywgXywgXykgTWFwLnQpIDogayBvcHRpb24gPVxuICAgIE9wdGlvbi5tYXAgfmY6ZnN0IChmaW5kX2tleV9yYW5nZV9saW5lYXIgfmZyb206biB+dG9fOm4gbWFwKVxuICA7O1xuXG4gICgqKiBGaW5kIGtleSBbYnldIHBvc2l0aW9ucyBlYXJsaWVyL2xhdGVyIGluIGEgbWFwLiBSZXR1cm5zIG5vbmUgaWYgb3V0IG9mIGJvdW5kcy4gKilcbiAgbGV0IHJlYyBvZmZzZXQgKGtleSA6ICdrKSAobWFwIDogKCdrLCBfLCBfKSBNYXAudCkgfmJ5IDogJ2sgb3B0aW9uID1cbiAgICBpZiBJbnQuKCA9ICkgYnkgMFxuICAgIHRoZW4gU29tZSBrZXlcbiAgICBlbHNlIChcbiAgICAgIGxldCBjbG9zZXN0X2RpciwgYWRkID1cbiAgICAgICAgaWYgSW50LiggPCApIGJ5IDAgdGhlbiBgTGVzc190aGFuLCAxIGVsc2UgYEdyZWF0ZXJfdGhhbiwgLTFcbiAgICAgIGluXG4gICAgICBtYXRjaCBNYXAuY2xvc2VzdF9rZXkgbWFwIGNsb3Nlc3RfZGlyIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChrZXksIF8pIC0+IG9mZnNldCBrZXkgbWFwIH5ieTooYnkgKyBhZGQpKVxuICA7O1xuXG4gICgqKiBGaW5kIGhvdyB3ZSBuZWVkIHRvIG1vdmUgW2tleV0gaWYgW2NoYW5nZWRfa2V5XSBjaGFuZ2VkIGluIHRoZSBnaXZlblxuICAgICAgd2F5ICopXG4gIGxldCBmaW5kX29mZnNldCB+Y29tcGFyZSB+a2V5IH5jaGFuZ2VkX2tleSBjaGFuZ2UgPVxuICAgIGlmIEludC4oIDwgKSAoY29tcGFyZSBjaGFuZ2VkX2tleSBrZXkpIDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIGNoYW5nZSB3aXRoXG4gICAgICB8IGBMZWZ0IF8gLT4gMVxuICAgICAgfCBgUmlnaHQgXyAtPiAtMVxuICAgICAgfCBfIC0+IDApXG4gICAgZWxzZSAwXG4gIDs7XG5cbiAgbGV0IHJhbmtcbiAgICAgICAgKHR5cGUgayB2IGNtcCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgKG1hcCA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKGtleSA6IChrLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgc2FtZV9rZXkgYSBiID0gY29tcGFyZV9rZXkgYSBiID0gMCBpblxuICAgICAgbGV0IHdoZW5fa2V5X2NoYW5nZWQgfm1hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmsgPVxuICAgICAgICBpZiBjb21wYXJlX2tleSBuZXdfa2V5IG9sZF9rZXkgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIHRoZSBuZXcga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgb2xkIGtleSwgZmluZCB0aGUgc2l6ZSBvZiB0aGUgbWFwIHN1YnJhbmdlXG4gICAgICAgICAgICAgYmV0d2VlbiB0aGVtIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgbmV3X2tleSwgRXhjbCBvbGRfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgLSBNYXAubGVuZ3RoIHN1YnJhbmdlIC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogT3RoZXJ3aXNlLCB0aGUgbmV3IGtleSBpcyBsYXJnZXIgdGhhbiB0aGUgb2xkIGtleSwgc28gZmluZCB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgICAgICBtYXAgc3VicmFuZ2UgYmV0d2VlbiB0aGVtIGFuZCBhZGQgaXQgdG8gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBvbGRfa2V5LCBFeGNsIG5ld19rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayArIE1hcC5sZW5ndGggc3VicmFuZ2UgKyAxKVxuICAgICAgaW5cbiAgICAgIGxldCB3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAoKiBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBkYXRhLCBzbyBvcHRpbWl6ZSB0aGVzZSBjaGVja3MgKilcbiAgICAgICAgICB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKVxuICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICBuZXdfbWFwXG4gICAgICAgICAgfmluaXQ6b2xkX3JhbmtcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoZGlmZl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjIC0gMVxuICAgICAgICAgICAgfCBgUmlnaHQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjICsgMVxuICAgICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHByb2Nlc3MgfihvbGQgOiAoKGssIHYsIF8pIE1hcC50ICogXyAqIF8pIG9wdGlvbikgbmV3X21hcCAobmV3X2tleSA6IGspID1cbiAgICAgICAgaWYgbm90IChNYXAubWVtIG5ld19tYXAgbmV3X2tleSlcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBhbmQga2V5IGFyZSB0aGUgc2FtZSwganVzdCByZXVzZSB0aGUgb2xkIHJhbmsgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIG9sZF9yYW5rKVxuICAgICAgICAgICAgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAmJiBzYW1lX2tleSBvbGRfa2V5IG5ld19rZXkgLT4gb2xkX3JhbmtcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGlzIHRoZSBzYW1lIGJ1dCB0aGUga2V5IGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fa2V5X2NoYW5nZWQgfm1hcDpuZXdfbWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiB0aGUga2V5IGlzIHRoZSBzYW1lIGJ1dCB0aGUgbWFwIGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gc2FtZV9rZXkgbmV3X2tleSBvbGRfa2V5IC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXk6bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgYm90aCB0aGUgbWFwIGFuZCB0aGUga2V5IGNoYW5nZWQsIHRoaXMgY2FuIGJlIHNpbXVsYXRlZCBhcyB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdpbmcgZm9sbG93ZWQgYnkgdGhlIGtleSBjaGFuZ2luZyAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgLT5cbiAgICAgICAgICAgICgqIFdlIGNhbGwgW3Byb2Nlc3NdIHJlY3Vyc2l2ZWx5IGluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZ1xuICAgICAgICAgICAgICAgW3doZW5fbWFwX2NoYW5nZWRdIGZvbGxvd2VkIGJ5IFt3aGVuX2tleV9jaGFuZ2VkXSBzaW5jZSBpdCBtaWdodCBiZSB0aGVcbiAgICAgICAgICAgICAgIGNhc2UgdGhhdCBbb2xkX2tleV0gaXMgaW4gW29sZF9tYXBdIGFuZCBbbmV3X2tleV0gaXMgaW4gW25ld19tYXBdLCBidXRcbiAgICAgICAgICAgICAgIFtvbGRfa2V5XSBpcyBub3QgaW4gW25ld19tYXBdLiAqKVxuICAgICAgICAgICAgbGV0IG9sZF9yYW5rID1cbiAgICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSkgbmV3X21hcCBvbGRfa2V5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChuZXdfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaykpIG5ld19tYXAgbmV3X2tleVxuICAgICAgICAgICgqIElmIHRoZSBwcmV2aW91cyBrZXkgd2FzIG5vdCBpbiB0aGUgbWFwIG9yIHRoaXMgaXMgdGhlIGZpcnN0IHN0YWJpbGl6YXRpb24sXG4gICAgICAgICAgICAgY29tcHV0ZSB0aGUgcmFuayBmcm9tIHNjcmF0Y2ggKilcbiAgICAgICAgICB8IFNvbWUgKF8sIF8sIE5vbmUpIHwgTm9uZSAtPiBNYXAucmFuayBuZXdfbWFwIG5ld19rZXkpXG4gICAgICBpblxuICAgICAgd2l0aF9vbGQyIH5pbnN0cnVtZW50YXRpb24gbWFwIGtleSB+Zjpwcm9jZXNzKVxuICA7O1xuXG4gICgqKiBSYW5nZSBtYXAgYnkgaW5kaWNlcyAqKVxuICBsZXQgc3VicmFuZ2VfYnlfcmFua1xuICAgICAgICAodHlwZSBrIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwIDogKChrLCBfLCBfKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKHJhbmdlIDogKGludCBNYXliZV9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIGxldCBmaW5kX2tleV9yYW5nZSAocmFuZ2UgOiAoaW50ICogaW50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgOiAoKGsgKiBrIG9wdGlvbikgb3B0aW9uLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICA9XG4gICAgICB3aXRoX29sZDIgbWFwIHJhbmdlIH5pbnN0cnVtZW50YXRpb24gfmY6KGZ1biB+b2xkIG1hcCAoZnJvbSwgdG9fKSAtPlxuICAgICAgICAoKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm8ga2V5cywgb25seSBiZWdpbiBrZXksIG9yIGJlZ2luIGFuZCBlbmQga2V5cy5cbiAgICAgICAgICAgVGhlc2UgYXJlIHRoZSBrZXlzIGF0IFtmcm9tXSBhbmQgW3RvX10gcG9zaXRpb25zIGluIHRoZSBtYXAsIG9yIE5vbmUgaWYgdGhlXG4gICAgICAgICAgIGluZGljZXMgYXJlIHRvbyBiaWcuIEFzIGFsd2F5cyBbMCA8PSBmcm9tICYmIGZyb20gPD0gdG9fXSwgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgcG9zc2liaWxpdHkgb2Ygb25seSBbdG9fXSBiZWluZyBhIHZhbGlkIHBvc2l0aW9uLlxuICAgICAgICAqKVxuICAgICAgICBpZiBJbnQuKCA8ICkgdG9fIGZyb20gfHwgSW50LiggPCApIGZyb20gMFxuICAgICAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiSW52YWxpZCBpbmRpY2VzXCIgKGZyb20gOiBpbnQpICh0b18gOiBpbnQpXTtcbiAgICAgICAgbWF0Y2ggb2xkIHdpdGhcbiAgICAgICAgfCBTb21lIChvbGRfbWFwLCAob2xkX2Zyb20sIG9sZF90byksIFNvbWUgKGJlZ2luX2tleSwgZW5kX2tleV9vcHQpKSAtPlxuICAgICAgICAgIGxldCBmaW5kX29mZnNldCA9IGZpbmRfb2Zmc2V0IH5jb21wYXJlOihNYXAuY29tcGFyYXRvciBtYXApLmNvbXBhcmUgaW5cbiAgICAgICAgICBsZXQgcmFuZ2Vfb2Zmc2V0X2JlZ2luID0gZnJvbSAtIG9sZF9mcm9tIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9lbmQgPSB0b18gLSBvbGRfdG8gaW5cbiAgICAgICAgICBsZXQgYWRqdXN0X2FuZF9vZmZzZXQgfmJ5IGtleSA9XG4gICAgICAgICAgICBsZXQgYnkgPSBieSArIGlmIGJ5ID49IDAgJiYgbm90IChNYXAubWVtIG1hcCBrZXkpIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgIG9mZnNldCBrZXkgbWFwIH5ieVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogV2Ugb25seSBjYXJlIGFib3V0IHRoZSBrZXlzIGNoYW5naW5nIGFuZCBub3QgdGhlIGRhdGEsIHNvIFtkYXRhX2VxdWFsXSBoZXJlXG4gICAgICAgICAgICAgY2FuIGJlIGFsd2F5cyB0cnVlICopXG4gICAgICAgICAgbGV0IGRpZmYgfmluaXQgfmYgPVxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gdHJ1ZSkgb2xkX21hcCBtYXAgfmluaXQgfmZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBiZWdpbl9rZXlfb3B0LCBlbmRfa2V5X29wdCA9XG4gICAgICAgICAgICBtYXRjaCBlbmRfa2V5X29wdCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZW5kX2tleSAtPlxuICAgICAgICAgICAgICBsZXQgbWFwX29mZnNldF9iZWdpbiwgbWFwX29mZnNldF9lbmQgPVxuICAgICAgICAgICAgICAgIGRpZmYgfmluaXQ6KDAsIDApIH5mOihmdW4gKG9mZnNldF9iZWdpbiwgb2Zmc2V0X2VuZCkgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgKCBvZmZzZXRfYmVnaW4gKyBmaW5kX29mZnNldCB+a2V5OmJlZ2luX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZVxuICAgICAgICAgICAgICAgICAgLCBvZmZzZXRfZW5kICsgZmluZF9vZmZzZXQgfmtleTplbmRfa2V5IH5jaGFuZ2VkX2tleTprZXkgY2hhbmdlICkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBhZGp1c3RfYW5kX29mZnNldCBlbmRfa2V5IH5ieToobWFwX29mZnNldF9lbmQgKyByYW5nZV9vZmZzZXRfZW5kKSApXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4gPVxuICAgICAgICAgICAgICAgIGRpZmYgfmluaXQ6MCB+ZjooZnVuIG9mZnNldF9iZWdpbiAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICBvZmZzZXRfYmVnaW4gKyBmaW5kX29mZnNldCB+a2V5OmJlZ2luX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCBhZGp1c3RfYW5kX29mZnNldCBiZWdpbl9rZXkgfmJ5OihtYXBfb2Zmc2V0X2JlZ2luICsgcmFuZ2Vfb2Zmc2V0X2JlZ2luKVxuICAgICAgICAgICAgICAsIG50aF9mcm9tX2VpdGhlcl9zaWRlIHRvXyBtYXAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXNzZXJ0IChPcHRpb24uZm9yX2FsbCB+ZjooTWFwLm1lbSBtYXApIGJlZ2luX2tleV9vcHQpO1xuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBlbmRfa2V5X29wdCk7XG4gICAgICAgICAgT3B0aW9uLm1hcCBiZWdpbl9rZXlfb3B0IH5mOihmdW4gYmVnaW5fa2V5IC0+IGJlZ2luX2tleSwgZW5kX2tleV9vcHQpXG4gICAgICAgIHwgTm9uZSB8IFNvbWUgKF8sIF8sIE5vbmUpIC0+XG4gICAgICAgICAgKCogT24gZmlyc3QgcnVuICh3aGVuIHdlIGhhdmUgdG8pIG9yIHdoZW4gYm90aCB0aGUga2V5cyBhcmUgbm9uZSwgcnVuIE8obilcbiAgICAgICAgICAgICBzY2FuLiBUaGlzIGlzIGZpbmUgZm9yIGtleXMtYXJlLW5vbmUgY2FzZSBhcyBpdCBoYXBwZW5zIHdoZW4gdGhlIHBvc2l0aW9uc1xuICAgICAgICAgICAgIGFyZSBwYXN0IGVuZCBvZiB0aGUgbWFwLCBzbyB0aGV5IHNob3VsZG4ndCBiZSB0b28gZmFyIGZyb20gZW5kIGFmdGVyIHRoZVxuICAgICAgICAgICAgIG1hcCBjaGFuZ2VzLCBhbmQgW2ZpbmRfa2V5X3JhbmdlX2xpbmVhcl0gaXMgZmFzdCBpbiBzdWNoIGNhc2UuICopXG4gICAgICAgICAgZmluZF9rZXlfcmFuZ2VfbGluZWFyIG1hcCB+ZnJvbSB+dG9fKVxuICAgIGluXG4gICAgKCogSGFuZGxlIGRpZmZlcmVudCBNYXliZV9ib3VuZCBjYXNlcyBhbmQgY2FsbCBmaW5kX2tleV9yYW5nZSBpZiBuZWNlc3NhcnkuIEl0J3NcbiAgICAgICBuaWNlciB0byBkbyB0aGlzIGhlcmUgYXMgb3Bwb3NlZCB0byBtYWtpbmcgZmluZF9rZXlfcmFuZ2UgZXZlbiBtb3JlIGNvbXBsaWNhdGVkICopXG4gICAgbGV0IG9wZW4gSW5jcmVtZW50YWwuTGV0X3N5bnRheCBpblxuICAgIGxldCAoID4+PiApIG5ld18gYm91bmQgPSBNYXliZV9ib3VuZC5tYXAgfmY6KGZ1biBfIC0+IG5ld18pIGJvdW5kIGluXG4gICAgbGV0IHJldHVybiA9IEluY3JlbWVudGFsLnJldHVybiAoSW5jcmVtZW50YWwuc3RhdGUgbWFwKSBpblxuICAgIGxldCBrZXlfcmFuZ2UgPVxuICAgICAgbWF0Y2glcGF0dGVybl9iaW5kIHJhbmdlIHdpdGhcbiAgICAgIHwgTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQgLT5cbiAgICAgICAgcmV0dXJuIChTb21lIChNYXliZV9ib3VuZC5VbmJvdW5kZWQsIE1heWJlX2JvdW5kLlVuYm91bmRlZCkpXG4gICAgICB8ICggKChNYXliZV9ib3VuZC5JbmNsIGwgfCBNYXliZV9ib3VuZC5FeGNsIGwpIGFzIGxiKVxuICAgICAgICAsICgoTWF5YmVfYm91bmQuSW5jbCB1IHwgTWF5YmVfYm91bmQuRXhjbCB1KSBhcyB1YikgKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgdSlcbiAgICAgICAgYW5kIGxiID0gbGJcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgU29tZSBlbmRfa2V5KSAtPiBTb21lIChiZWdpbl9rZXkgPj4+IGxiLCBlbmRfa2V5ID4+PiB1YilcbiAgICAgICAgIHwgU29tZSAoYmVnaW5fa2V5LCBOb25lKSAtPiBTb21lIChiZWdpbl9rZXkgPj4+IGxiLCBVbmJvdW5kZWQpXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgKChNYXliZV9ib3VuZC5JbmNsIGwgfCBNYXliZV9ib3VuZC5FeGNsIGwpIGFzIGxiKSwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggbCBsKVxuICAgICAgICBhbmQgbGIgPSBsYiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBTb21lIChrZXkgPj4+IGxiLCBVbmJvdW5kZWQpXG4gICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIHwgTWF5YmVfYm91bmQuVW5ib3VuZGVkLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpIC0+XG4gICAgICAgIGxldCVtYXAga2V5X3JhbmdlID0gZmluZF9rZXlfcmFuZ2UgKEluY3JlbWVudGFsLmJvdGggdSB1KVxuICAgICAgICBhbmQgdWIgPSB1YiBpblxuICAgICAgICAobWF0Y2gga2V5X3JhbmdlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBTb21lIChVbmJvdW5kZWQsIGtleSA+Pj4gdWIpXG4gICAgICAgICAoKiBJbiB0aGlzIGNhc2UsIHRoZSB1cHBlciBib3VuZCB3YXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGVcbiAgICAgICAgICAgIG1hcCwgc28gdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUga2V5IHJhbmdlIGlzIFtVbmJvdW5kZWRdLlxuICAgICAgICAgICAgVGhpcyBiZWhhdmlvciBpcyBkZW1vbnN0cmF0ZWQgaW4gYSB0ZXN0IGluIFsuLi90ZXN0L3Rlc3Rfc3VicmFuZ2UubWxdLiAqKVxuICAgICAgICAgfCBOb25lIC0+IFNvbWUgKFVuYm91bmRlZCwgVW5ib3VuZGVkKSlcbiAgICBpblxuICAgIHN1YnJhbmdlID9kYXRhX2VxdWFsIG1hcCBrZXlfcmFuZ2VcbiAgOztcblxuICBsZXQgdHJhbnNwb3NlXG4gICAgOiB0eXBlIGsxIGsyIHYgazFfY21wIGsyX2NtcCBzdGF0ZV93aXRuZXNzLlxuICAgICAgP2luc3RydW1lbnRhdGlvbjpJbnN0cnVtZW50YXRpb24udFxuICAgICAgLT4gP2RhdGFfZXF1YWw6KHYgLT4gdiAtPiBib29sKVxuICAgICAgLT4gKGsyLCBrMl9jbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAgIC0+ICgoazEsIChrMiwgdiwgazJfY21wKSBNYXAudCwgazFfY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgLT4gKChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGZ1biA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbikgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbCkgazJfY29tcGFyYXRvciBtIC0+XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbSAoZnVuIGsxX2NvbXBhcmF0b3IgLT5cbiAgICAgICAgbGV0IHVwZGF0ZVxuICAgICAgICAgIDogIGtleTprMSAtPiBvbGRfZGF0YTooazIsIHYsIGsyX2NtcCkgTWFwLnQgLT4gbmV3X2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgICAtPiAoazIsIChrMSwgdiwgazFfY21wKSBNYXAudCwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICA9XG4gICAgICAgICAgZnVuIH5rZXk6azEgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgIG9sZF9kYXRhXG4gICAgICAgICAgICAgIG5ld19kYXRhXG4gICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgICAgICB+ZjooZnVuIGFjYyAoazIsIGRpZmYpIC0+XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGRpZmYgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IHggfCBgVW5lcXVhbCAoXywgeCkgLT4gU29tZSB4XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBNYXAuY2hhbmdlIGFjYyBrMiB+ZjooZnVuIGFjY19pbm5lciAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjY19pbm5lciA9XG4gICAgICAgICAgICAgICAgICAgIE1hcC5jaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjX2lubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmRlZmF1bHQ6KE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOmsxX2NvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICAgICAgIGsxXG4gICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBfIC0+IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIE1hcC5pc19lbXB0eSBhY2NfaW5uZXIgdGhlbiBOb25lIGVsc2UgU29tZSBhY2NfaW5uZXIpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWRkIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpIH5uZXdfZGF0YTpkYXRhXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW1vdmUgfmtleSB+ZGF0YSA9XG4gICAgICAgICAgdXBkYXRlIH5rZXkgfm9sZF9kYXRhOmRhdGEgfm5ld19kYXRhOihNYXAuZW1wdHkgazJfY29tcGFyYXRvcilcbiAgICAgICAgaW5cbiAgICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgICBtXG4gICAgICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgazJfY29tcGFyYXRvcilcbiAgICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgICAgfnVwZGF0ZVxuICAgICAgICAgIH5hZGRcbiAgICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZV9ieVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXAgY29tYmluZWRfa2V5IGNvbWJpbmVkX2NtcClcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6XG4gICAgICAgICAgICgob3V0ZXJfa2V5LCAoaW5uZXJfa2V5LCBfLCBpbm5lcl9jbXApIE1hcC50LCBvdXRlcl9jbXApIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KG1lcmdlX2tleXMgOiBvdXRlcl9rZXkgLT4gaW5uZXJfa2V5IC0+IGNvbWJpbmVkX2tleSlcbiAgICAgICAgfihjb21wYXJhdG9yIDogKGNvbWJpbmVkX2tleSwgY29tYmluZWRfY21wKSBDb21wYXJhdG9yLk1vZHVsZS50KVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IGNvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnNldCBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YTpuZXdfZGF0YSlcbiAgICAgIH5hZGQ6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5hZGRfZXhuIGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhKVxuICAgICAgfnJlbW92ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAucmVtb3ZlIGFjYyAobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wKVxuICAgICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6XG4gICAgICAgICAgICgob3V0ZXJfa2V5LCAoaW5uZXJfa2V5LCBfLCBpbm5lcl9jbXApIE1hcC50LCBvdXRlcl9jbXApIE1hcC50LCBfKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+Y29tcGFyYXRvcjooaW5uZXJfY29tcGFyYXRvciA6IChpbm5lcl9rZXksIGlubmVyX2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudClcbiAgICA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcF9pbmNyIChmdW4gb3V0ZXJfY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG1vZHVsZSBDbXAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gb3V0ZXJfa2V5ICogaW5uZXJfa2V5XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gKG91dGVyX2NtcCwgaW5uZXJfY21wKSBUdXBsZTIuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPVxuICAgICAgICAgIGxldCBpbm5lcl9jb21wYXJhdG9yID1cbiAgICAgICAgICAgIGxldCBtb2R1bGUgTSA9ICh2YWwgaW5uZXJfY29tcGFyYXRvcikgaW5cbiAgICAgICAgICAgIE0uY29tcGFyYXRvclxuICAgICAgICAgIGluXG4gICAgICAgICAgVHVwbGUyLmNvbXBhcmF0b3Igb3V0ZXJfY29tcGFyYXRvciBpbm5lcl9jb21wYXJhdG9yXG4gICAgICAgIDs7XG4gICAgICBlbmRcbiAgICAgIGluXG4gICAgICBjb2xsYXBzZV9ieVxuICAgICAgICA/aW5zdHJ1bWVudGF0aW9uXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5tZXJnZV9rZXlzOlR1cGxlMi5jcmVhdGVcbiAgICAgICAgfmNvbXBhcmF0b3I6KG1vZHVsZSBDbXApKVxuICA7O1xuXG4gIGxldCBleHBhbmRcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5vdXRlcl9jb21wYXJhdG9yXG4gICAgICAgIH5pbm5lcl9jb21wYXJhdG9yXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgbmV3X2RhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5zZXQgbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhOm5ld19kYXRhKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBkYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuYWRkX2V4biBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGEpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAuY2hhbmdlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAgICAgICBsZXQgbWFwID0gTWFwLnJlbW92ZSBtYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICBPcHRpb24uc29tZV9pZiAobm90IChNYXAuaXNfZW1wdHkgbWFwKSkgbWFwKSlcbiAgOztcblxuICBsZXQgY291bnRpID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICBtYXBfaW5jclxuICAgICAgfmluaXQ6MFxuICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgfmFkZDooZnVuIH5rZXkgfmRhdGEgY291bnQgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG4gICAgICB+cmVtb3ZlOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCAtIDEgZWxzZSBjb3VudClcbiAgOztcblxuICBsZXQgY291bnQgP2luc3RydW1lbnRhdGlvbiA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgY291bnRpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBleGlzdHNpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCAoY291bnRpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYpIH5mOihmdW4gY291bnQgLT5cbiAgICAgIGNvdW50IDw+IDApXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBleGlzdHNpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBzdW1cbiAgICAgICAgKHR5cGUgdSlcbiAgICAgICAgPyhpbnN0cnVtZW50YXRpb24gPSBub19pbnN0cnVtZW50YXRpb24pXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6ICgoXywgXywgXykgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChtb2R1bGUgR3JvdXAgOiBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9IHUpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICB+aW5zdHJ1bWVudGF0aW9uXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0Okdyb3VwLnplcm9cbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCArICkgYWNjIChmIHYpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oIC0gKSBhY2MgKGYgdikpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcFxuICAgICAgKGNvdW50aSA/aW5zdHJ1bWVudGF0aW9uID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgbm90IChmIH5rZXkgfmRhdGEpKSlcbiAgICAgIH5mOihmdW4gY291bnQgLT4gY291bnQgPSAwKVxuICA7O1xuXG4gIGxldCBmb3JfYWxsID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYgPVxuICAgIGZvcl9hbGxpID9pbnN0cnVtZW50YXRpb24gP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZFxuICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/ZmluYWxpemVcbiAgICAgICAgP3JldmVydF90b19pbml0X3doZW5fZW1wdHlcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmluc3RydW1lbnRhdGlvblxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID91cGRhdGVcbiAgICAgID9zcGVjaWFsaXplZF9pbml0aWFsXG4gICAgICA/ZmluYWxpemVcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICBtYXBcbiAgICAgIH5pbml0XG4gICAgICB+YWRkXG4gICAgICB+cmVtb3ZlXG4gIDs7XG5cbiAgbGV0IHVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzXG4gICAgICAgID8oaW5zdHJ1bWVudGF0aW9uID0gbm9faW5zdHJ1bWVudGF0aW9uKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdFxuICAgICAgICB+YWRkXG4gICAgICAgIH5yZW1vdmVcbiAgICA9XG4gICAgdW5vcmRlcmVkX2ZvbGRfbmVzdGVkX21hcHNcbiAgICAgIH5pbnN0cnVtZW50YXRpb25cbiAgICAgID9kYXRhX2VxdWFsXG4gICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgP3VwZGF0ZVxuICAgICAgbWFwXG4gICAgICB+aW5pdFxuICAgICAgfmFkZFxuICAgICAgfnJlbW92ZVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgPSBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgZW5kXG5cbiAgbW9kdWxlIExvb2t1cCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2LCAndykgZW50cnkgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX3ZhbHVlIDogJ3Ygb3B0aW9uXG4gICAgICA7IG5vZGUgOiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgICgqIFdlIG1heSBoYXZlIG11bHRpcGxlIGVudHJpZXMgcGVyIGtleSBpZiBub2RlcyBiZWNvbWUgbmVjZXNzYXJ5IGFnYWluIGFmdGVyIGJlaW5nXG4gICAgICAgICByZW1vdmVkLiAqKVxuICAgICAgOyBtdXRhYmxlIGxvb2t1cF9lbnRyaWVzIDogKCdrLCAoJ3YsICd3KSBlbnRyeSBsaXN0LCAnY21wKSBNYXAudFxuICAgICAgOyB1cGRhdGVyX25vZGUgOiAodW5pdCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIDsgc2NvcGUgOiAndyBJbmNyZW1lbnRhbC5TY29wZS50XG4gICAgICB9XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KGluc3RydW1lbnRhdGlvbiA9IG5vX2luc3RydW1lbnRhdGlvbilcbiAgICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgIH5jb21wYXJhdG9yXG4gICAgICA9XG4gICAgICBsZXQgcmVjIHNlbGYgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGxldCB1cGRhdGVyX25vZGUgPVxuICAgICAgICAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dF9tYXAgfmY6KGZ1biBpbnB1dF9tYXAgLT5cbiAgICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbi5JbnN0cnVtZW50YXRpb24uZiAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIGxldCAobGF6eSBzZWxmKSA9IHNlbGYgaW5cbiAgICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgICBzZWxmLnNhdmVkX21hcFxuICAgICAgICAgICAgICAgICAgIGlucHV0X21hcFxuICAgICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgICAgfmluaXQ6KClcbiAgICAgICAgICAgICAgICAgICB+ZjooZnVuICgpIChrZXksIGNoYW5nZWRfdmFsdWUpIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZW50cmllcyA9IE1hcC5maW5kX211bHRpIHNlbGYubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBMaXN0Lml0ZXIgZW50cmllcyB+ZjooZnVuIGVudHJ5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgIDwtIChtYXRjaCBjaGFuZ2VkX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYFJpZ2h0IG5ld192YWx1ZSB8IGBVbmVxdWFsIChfLCBuZXdfdmFsdWUpIC0+IFNvbWUgbmV3X3ZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBlbnRyeS5ub2RlKSk7XG4gICAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwIDwtIGlucHV0X21hcCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBlbXB0eV9tYXAgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgICAgICB7IHNhdmVkX21hcCA9IGVtcHR5X21hcFxuICAgICAgICAgICA7IGxvb2t1cF9lbnRyaWVzID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgdXBkYXRlcl9ub2RlXG4gICAgICAgICAgIDsgc2NvcGUgPSBJbmNyZW1lbnRhbC5TY29wZS5jdXJyZW50IChJbmNyZW1lbnRhbC5zdGF0ZSBpbnB1dF9tYXApICgpXG4gICAgICAgICAgIH0pXG4gICAgICBpblxuICAgICAgTGF6eS5mb3JjZSBzZWxmXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2xpbmtfZW50cnkgdCBlbnRyeSB+a2V5IH5pc19ub3dfb2JzZXJ2YWJsZSA9XG4gICAgICBsZXQgKGxhenkgZW50cnkpID0gZW50cnkgaW5cbiAgICAgIGxldCBjdXJyZW50X2VudHJpZXMgPSBNYXAuZmluZF9tdWx0aSB0Lmxvb2t1cF9lbnRyaWVzIGtleSBpblxuICAgICAgbGV0IGlzX2xpbmtlZCA9IExpc3QuZXhpc3RzIGN1cnJlbnRfZW50cmllcyB+ZjoocGh5c19lcXVhbCBlbnRyeSkgaW5cbiAgICAgIGlmIEJvb2wuZXF1YWwgaXNfbGlua2VkIGlzX25vd19vYnNlcnZhYmxlXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIGlmIGlzX25vd19vYnNlcnZhYmxlXG4gICAgICB0aGVuXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gTWFwLnVwZGF0ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgKG90aGVyX2VudHJ5IDo6IF8gYXMgb3RoZXJfZW50cmllcykgLT5cbiAgICAgICAgICAgICgqIFVwZGF0ZSB0aGlzIGVudHJ5J3MgdmFsdWUgdG8gYmUgY3VycmVudC4gKilcbiAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlIDwtIG90aGVyX2VudHJ5LnNhdmVkX3ZhbHVlO1xuICAgICAgICAgICAgZW50cnkgOjogb3RoZXJfZW50cmllc1xuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgW10gLT5cbiAgICAgICAgICAgIGVudHJ5LnNhdmVkX3ZhbHVlIDwtIE1hcC5maW5kIHQuc2F2ZWRfbWFwIGtleTtcbiAgICAgICAgICAgIFsgZW50cnkgXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmV3X2VudHJpZXMgPVxuICAgICAgICAgIExpc3QuZmlsdGVyIGN1cnJlbnRfZW50cmllcyB+ZjooZnVuIHggLT4gbm90IChwaHlzX2VxdWFsIGVudHJ5IHgpKVxuICAgICAgICBpblxuICAgICAgICB0Lmxvb2t1cF9lbnRyaWVzXG4gICAgICAgIDwtIChpZiBMaXN0LmlzX2VtcHR5IG5ld19lbnRyaWVzXG4gICAgICAgICAgICB0aGVuIE1hcC5yZW1vdmUgdC5sb29rdXBfZW50cmllcyBrZXlcbiAgICAgICAgICAgIGVsc2UgTWFwLnNldCB0Lmxvb2t1cF9lbnRyaWVzIH5rZXkgfmRhdGE6bmV3X2VudHJpZXMpKVxuICAgIDs7XG5cbiAgICBsZXRbQGNvbGRdIHNsb3dfcGF0aF9jcmVhdGVfbm9kZSB0IGtleSA9XG4gICAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSB0LnVwZGF0ZXJfbm9kZSBpblxuICAgICAgSW5jcmVtZW50YWwuU2NvcGUud2l0aGluIGluY3JlbWVudGFsX3N0YXRlIHQuc2NvcGUgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsZXQgcmVjIGVudHJ5ID1cbiAgICAgICAgICBsYXp5XG4gICAgICAgICAgICB7IHNhdmVkX3ZhbHVlID0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5XG4gICAgICAgICAgICA7IG5vZGUgPVxuICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgaW5jcmVtZW50YWxfc3RhdGVcbiAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gKGZvcmNlIGVudHJ5KS5zYXZlZF92YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZTooc2xvd19wYXRoX2xpbmtfZW50cnkgdCBlbnRyeSB+a2V5KVxuICAgICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgKGxhenkgZW50cnkpID0gZW50cnkgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgICBlbnRyeS5ub2RlXG4gICAgICAgICAgKEluY3JlbWVudGFsLkV4cGVydC5EZXBlbmRlbmN5LmNyZWF0ZSB0LnVwZGF0ZXJfbm9kZSk7XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGUpXG4gICAgOztcblxuICAgIGxldCBmaW5kIHQga2V5ID1cbiAgICAgIG1hdGNoIE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IHdpdGhcbiAgICAgIHwgZW50cnkgOjogXyAtPiBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBlbnRyeS5ub2RlXG4gICAgICB8IFtdIC0+IHNsb3dfcGF0aF9jcmVhdGVfbm9kZSB0IGtleVxuICAgIDs7XG5cbiAgICBtb2R1bGUgRm9yX2RlYnVnID0gc3RydWN0XG4gICAgICBsZXRbQGNvbGRdIHNleHBfb2ZfZW50cnkgc2V4cF9vZl92YWx1ZSBlbnRyeSA9XG4gICAgICAgIGxldCB7IHNhdmVkX3ZhbHVlOyBub2RlIH0gPSBlbnRyeSBpblxuICAgICAgICBsZXQgbm9kZSA9IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG5vZGUgaW5cbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgeyBzYXZlZF92YWx1ZSA6IHZhbHVlIG9wdGlvblxuICAgICAgICAgIDsgbm9kZV9pbmZvID0gKEluY3JlbWVudGFsLnVzZXJfaW5mbyBub2RlIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX2NvbnN0ID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChJbmNyZW1lbnRhbC5pc19jb25zdCBub2RlKSAoKVxuICAgICAgICAgICAgICAgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgOyBub2RlX2lzX2ludmFsaWQgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKG5vdCAoSW5jcmVtZW50YWwuaXNfdmFsaWQgbm9kZSkpICgpXG4gICAgICAgICAgICAgICA6ICh1bml0IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfdW5uZWNlc3NhcnkgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKG5vdCAoSW5jcmVtZW50YWwuaXNfbmVjZXNzYXJ5IG5vZGUpKSAoKVxuICAgICAgICAgICAgICAgOiAodW5pdCBvcHRpb25bQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfV1cbiAgICAgIDs7XG5cbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICAgIGxldCBpbmZvX3Blcl9rZXkgPVxuICAgICAgICAgIE1hcC5tZXJnZSB0LnNhdmVkX21hcCB0Lmxvb2t1cF9lbnRyaWVzIH5mOihmdW4gfmtleSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgYWN0dWFsX3ZhbHVlLCBlbnRyaWVzID1cbiAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgeCAtPiBTb21lIHgsIFtdXG4gICAgICAgICAgICAgIHwgYFJpZ2h0IHkgLT4gTm9uZSwgeVxuICAgICAgICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBTb21lIHgsIHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsga2V5IDoga2V5XG4gICAgICAgICAgICAgICAgOyBhY3R1YWxfdmFsdWUgOiAodmFsdWUgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgICAgICAgICAgOyBlbnRyaWVzIDogdmFsdWUgZW50cnkgbGlzdFxuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICBpblxuICAgICAgICBTZXhwLkxpc3QgKE1hcC5kYXRhIGluZm9fcGVyX2tleSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICBhbmQgdHlwZSAnYSBJbmNyLkN1dG9mZi50ID0gJ2EgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBHZW5lcmljLkxvb2t1cC50XG5lbmRcblxubW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcbiAgbW9kdWxlIEluc3RydW1lbnRhdGlvbiA9IEluc3RydW1lbnRhdGlvblxuXG4gIGxldCBmbGF0dGVuIHggPSBmbGF0dGVuIEluY3IuU3RhdGUudCB4XG5cbiAgbW9kdWxlIExvb2t1cCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTG9va3VwXG5cbiAgICB0eXBlICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wLCBJbmNyLnN0YXRlX3dpdG5lc3MpIExvb2t1cC50XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgOiBzaWdcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICd2IHQgPSAoSy50LCAndiwgSy5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBHZW5lcmljXG4iLCJvcGVuIENvcmVcblxubW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TX2dlbikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEUgPSBJbmNyLkV4cGVydFxuXG4gICgqIEhhc2h0Ymwgc3RhcnRzIG91dCBhdCBhIHJpZGljdWxvdXMgc2l6ZSBvZiAxMjguIFRoaXMgaXMgYSBtb3JlIHJlYXNvbmFibGUgbnVtYmVyXG4gICAgIG9mIGJpbnMgdG8gaGF2ZS4gKilcbiAgbGV0IGhhc2h0Ymxfc2l6ZSA9IDEwXG5cbiAgKCoqIFtzZXR1cF9nZW5lcmF0b3JdIHNldHMgdXAgdGhlIHN0YWdlZCBjb252ZXJzaW9uLlxuXG4gICAgICBbaGFzaGFibGVdIGlzIHVzZWQgdG8gYnVpbGQgYSB0YWJsZSBvZiBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLiBXZSBkcm9wIHVubmVjZXNzYXJ5XG4gICAgICBkZXBlbmRlbmNpZXMgdG8gYWxsb3cgdGhlbSB0byBiZSBjb2xsZWN0ZWQuXG5cbiAgICAgIFtjb21wdXRlX291dHB1dCBrZXldIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBvdXRwdXQgbm9kZSBjb3JyZXNwb25kaW5nIHRvIFtrZXldLlxuICAgICAgW2NvbXB1dGVfb3V0cHV0XSBpcyBjbG9zZWQgb3ZlciB0aGUgbXV0YWJsZSBzdGF0ZSBkZXRlcm1pbmluZyB0aGUgY3VycmVudCB2YWx1ZSBvZlxuICAgICAgdGhlIHNlbGVjdG9yJ3MgaW5wdXQuXG5cbiAgICAgIFttYWtlX2lucHV0X25vZGVdIG1ha2VzIHN1cmUgdGhhdCB3aGVuIHRoZSBtdXRhYmxlIHN0YXRlIGluc2lkZSBbY29tcHV0ZV9vdXRwdXRdIGlzXG4gICAgICB1cGRhdGVkLCB0aGUgY29ycmVzcG9uZGluZyBub2RlcyBpbiB0aGUgW25lY2Vzc2FyeV9kZXBlbmRlbmNpZXNdIHRhYmxlIGFyZSBtYWRlXG4gICAgICBzdGFsZS4gICopXG4gIGxldCBzZXR1cF9nZW5lcmF0b3JcbiAgICAgICAgKGhhc2hhYmxlIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpXG4gICAgICAgIH4oY29tcHV0ZV9vdXRwdXQgOiAnYSAtPiAnYilcbiAgICAgICAgfihtYWtlX2lucHV0X25vZGUgOiBtYWtlX2tleV9zdGFsZTooJ2EgLT4gdW5pdCkgLT4gdW5pdCBJbmNyLnQpXG4gICAgOiAoJ2EgLT4gJ2IgSW5jci50KSBTdGFnZWQudFxuICAgID1cbiAgICBsZXQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyA9IEhhc2h0YmwuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5zaXplOmhhc2h0Ymxfc2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgICBsZXQgKGlucHV0X25vZGUgOiB1bml0IEluY3IudCkgPVxuICAgICAgbGV0IG1ha2Vfa2V5X3N0YWxlIGtleSA9XG4gICAgICAgIEhhc2h0YmwuZmluZCBuZWNlc3NhcnlfZGVwZW5kZW5jaWVzIGtleVxuICAgICAgICB8PiBPcHRpb24udmFsdWUgfmRlZmF1bHQ6W11cbiAgICAgICAgfD4gTGlzdC5pdGVyIH5mOkUuTm9kZS5tYWtlX3N0YWxlXG4gICAgICBpblxuICAgICAgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZVxuICAgIGluXG4gICAgKCogU2V0IHRoZSBjdXRvZmYgc28gdGhhdCB3ZSBuZXZlciBwYXNzIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgdXBkYXRlIHRvIHRoZSBub2Rlcy4gV2VcbiAgICAgICB3YW50IGV2ZXJ5dGhpbmcgdG8gZ28gdGhyb3VnaCBbbWFrZV9rZXlfc3RhbGVdICopXG4gICAgSW5jci5zZXRfY3V0b2ZmIGlucHV0X25vZGUgSW5jci5DdXRvZmYuYWx3YXlzO1xuICAgIHN0YWdlIChmdW4ga2V5IC0+XG4gICAgICBsZXQgaW5wdXRfZGVwID0gRS5EZXBlbmRlbmN5LmNyZWF0ZSBpbnB1dF9ub2RlIGluXG4gICAgICBsZXQgcmVjIG91dHB1dF9ub2RlID0gbGF6eSAoXG4gICAgICAgIEUuTm9kZS5jcmVhdGVcbiAgICAgICAgICAoZnVuICgpIC0+IGNvbXB1dGVfb3V0cHV0IGtleSlcbiAgICAgICAgICB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2U6KGZ1biB+aXNfbm93X29ic2VydmFibGUgLT5cbiAgICAgICAgICAgIGlmIGlzX25vd19vYnNlcnZhYmxlIHRoZW5cbiAgICAgICAgICAgICAgSGFzaHRibC5hZGRfbXVsdGkgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyB+a2V5IH5kYXRhOihmb3JjZSBvdXRwdXRfbm9kZSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgSGFzaHRibC5jaGFuZ2UgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggTGlzdC5maWx0ZXIgbCB+ZjooRm4ubm9uIChwaHlzX2VxdWFsIChmb3JjZSBvdXRwdXRfbm9kZSkpKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIHwgbCcgLT4gU29tZSBsJ1xuICAgICAgICAgICAgICApKSlcbiAgICAgIGluXG4gICAgICBsZXQgb3V0cHV0X25vZGUgPSBmb3JjZSBvdXRwdXRfbm9kZSBpblxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG91dHB1dF9ub2RlIGlucHV0X2RlcDtcbiAgICAgIEUuTm9kZS53YXRjaCBvdXRwdXRfbm9kZVxuICAgIClcblxuICAoKiogVGhpcyBjcmVhdGVzIGEgdW5pdCBpbmNyZW1lbnRhbCB0aGF0IGZpcmVzIHdoZW5ldmVyIHRoZSBpbnB1dCBpbmNyZW1lbnRhbFxuICAgICAgZmlyZXMuIFdoZW4gdGhhdCBvY2N1cnMsIGl0IHVwZGF0ZXMgW3NlbGVjdGVkXSB0byBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZSBvZlxuICAgICAgW2lucHV0XSwgYW5kIGNhbGxzIFttYWtlX2tleV9zdGFsZV0gZm9yIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlIG9mIHRoZVxuICAgICAgaW5jcmVtZW50YWwuICopXG4gIGxldCB1cGRhdGVfb25lIH5pbnB1dCB+c2VsZWN0ZWQgfm1ha2Vfc3RhbGUgPVxuICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICBPcHRpb24uaXRlciBpbnAgfmY6bWFrZV9zdGFsZTtcbiAgICAgIE9wdGlvbi5pdGVyICFzZWxlY3RlZCB+ZjptYWtlX3N0YWxlO1xuICAgICAgc2VsZWN0ZWQgOj0gaW5wXG4gICAgKVxuXG4gIGxldCBzZWxlY3Rfb25lJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICAoaW5wdXQgOiBhIG9wdGlvbiBJbmNyLnQpXG4gICAgPVxuICAgIGxldCBzZWxlY3RlZCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBtYXRjaCAhc2VsZWN0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUga2V5JyAtPiBILmNvbXBhcmUga2V5IGtleScgPSAwXG4gICAgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICB1cGRhdGVfb25lIH5pbnB1dCB+c2VsZWN0ZWQgfm1ha2Vfc3RhbGU6bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBILmhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5cbiAgbGV0IHNlbGVjdF9vbmUgaCBpbnB1dCA9XG4gICAgc2VsZWN0X29uZScgaCAoSW5jci5tYXAgfmY6T3B0aW9uLnNvbWUgaW5wdXQpXG5cbiAgbGV0IHNlbGVjdF9vbmVfdmFsdWUnXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBzZWxlY3RlZCA9IHJlZiBOb25lIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBtYXRjaCAhc2VsZWN0ZWQgd2l0aFxuICAgICAgfCBOb25lIC0+IGRlZmF1bHRcbiAgICAgIHwgU29tZSAoa2V5JywgZGF0YSkgLT4gaWYgSC5jb21wYXJlIGtleSBrZXknID0gMCB0aGVuIGRhdGEgZWxzZSBkZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICB1cGRhdGVfb25lIH5zZWxlY3RlZCB+aW5wdXQgfm1ha2Vfc3RhbGU6KGZ1biAoa2V5LCBfKSAtPiBtYWtlX2tleV9zdGFsZSBrZXkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlIGggfmRlZmF1bHQgaW5wdXQgPVxuICAgIHNlbGVjdF9vbmVfdmFsdWUnIGggfmRlZmF1bHQgKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3RfbWFueV92YWx1ZXNcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2h0YmwuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5zaXplOmhhc2h0Ymxfc2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID1cbiAgICAgIEhhc2h0YmwuZmluZCBzZWxlY3RlZCBrZXkgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0XG4gICAgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBIYXNodGJsLml0ZXJfa2V5cyBzZWxlY3RlZCB+ZjptYWtlX2tleV9zdGFsZTtcbiAgICAgICAgSGFzaHRibC5jbGVhciBzZWxlY3RlZDtcbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIChrZXksIGRhdGEpIC0+XG4gICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICAgIEhhc2h0Ymwuc2V0IHNlbGVjdGVkIH5rZXkgfmRhdGFcbiAgICAgICAgKSlcbiAgICBpblxuICAgIHNldHVwX2dlbmVyYXRvciBoYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3RfbWFueVxuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgaGFzaGFibGUgPSBILmhhc2hhYmxlIGluXG4gICAgbGV0IHNlbGVjdGVkID0gSGFzaF9zZXQuVXNpbmdfaGFzaGFibGUuY3JlYXRlIH5zaXplOmhhc2h0Ymxfc2l6ZSB+aGFzaGFibGUgKCkgaW5cbiAgICBsZXQgY29tcHV0ZV9vdXRwdXQga2V5ID0gSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSBpblxuICAgIGxldCBtYWtlX2lucHV0X25vZGUgfm1ha2Vfa2V5X3N0YWxlID1cbiAgICAgIEluY3IubWFwIGlucHV0IH5mOihmdW4gaW5wIC0+XG4gICAgICAgIGxldCBvbGRfc2V0ID0gSGFzaF9zZXQuY29weSBzZWxlY3RlZCBpblxuICAgICAgICBIYXNoX3NldC5jbGVhciBzZWxlY3RlZDtcblxuICAgICAgICBMaXN0Lml0ZXIgaW5wIH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgaWYgbm90IChIYXNoX3NldC5tZW0gb2xkX3NldCBrZXkpIHRoZW5cbiAgICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNoX3NldC5hZGQgc2VsZWN0ZWQga2V5XG4gICAgICAgICk7XG5cbiAgICAgICAgSGFzaF9zZXQuaXRlciBvbGRfc2V0IH5mOihmdW4ga2V5IC0+XG4gICAgICAgICAgaWYgbm90IChIYXNoX3NldC5tZW0gc2VsZWN0ZWQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcbmVuZFxuXG4iLCJleHRlcm5hbCBqc19wcm9mX21hcmsgOiBzdHJpbmcgLT4gdW5pdCA9IFwianNfcHJvZl9tYXJrXCJcbmV4dGVybmFsIGpzX3Byb2ZfbWVhc3VyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWVhc3VyZVwiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21hcmtzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21hcmtzXCJcbmV4dGVybmFsIGpzX3Byb2ZfY2xlYXJfbWVhc3VyZXMgOiB1bml0IC0+IHVuaXQgPSBcImpzX3Byb2ZfY2xlYXJfbWVhc3VyZXNcIlxuXG5sZXQgbWFyayBuYW1lID0ganNfcHJvZl9tYXJrIG5hbWVcbmxldCBtZWFzdXJlIH5uYW1lIH5zdGFydCB+ZW5kXyA9IGpzX3Byb2ZfbWVhc3VyZSBuYW1lIHN0YXJ0IGVuZF9cblxubGV0IHJlY29yZCBuYW1lIH5mID1cbiAgbGV0IGJlZm9yZV9uYW1lID0gbmFtZSBeIFwiX2JlZm9yZVwiIGluXG4gIGxldCBhZnRlcl9uYW1lID0gbmFtZSBeIFwiX2FmdGVyXCIgaW5cbiAgbGV0ICgpID0gbWFyayBiZWZvcmVfbmFtZSBpblxuICBsZXQgcmVzID0gZiAoKSBpblxuICBsZXQgKCkgPSBtYXJrIGFmdGVyX25hbWUgaW5cbiAgbWVhc3VyZSB+bmFtZSB+c3RhcnQ6YmVmb3JlX25hbWUgfmVuZF86YWZ0ZXJfbmFtZTtcbiAgcmVzXG47O1xuXG5sZXQgY2xlYXJfbWFya3MgKCkgPSBqc19wcm9mX2NsZWFyX21hcmtzICgpXG5sZXQgY2xlYXJfbWVhc3VyZXMgKCkgPSBqc19wcm9mX2NsZWFyX21lYXN1cmVzICgpXG5cbm1vZHVsZSBNYW51YWwgPSBzdHJ1Y3RcbiAgbGV0IG1hcmsgPSBtYXJrXG4gIGxldCBtZWFzdXJlID0gbWVhc3VyZVxuZW5kXG4iLCJvcGVuIENvcmVcbm9wZW4gVmlydHVhbF9kb21cblxudHlwZSB0ID1cbiAgeyBmaWxlbmFtZSA6IHN0cmluZ1xuICA7IG1pbWV0eXBlIDogc3RyaW5nXG4gIDsgY29udGVudHMgOiBzdHJpbmdcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG5sZXQgY3JlYXRlID0gRmllbGRzLmNyZWF0ZVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIChzcHJpbnRmIFwiPGRvd25sb2FkZXI6ICVzPlwiIHQuZmlsZW5hbWUpXG5cbmxldCB0cmlnZ2VyIHsgZmlsZW5hbWU7IG1pbWV0eXBlOyBjb250ZW50cyB9ID1cbiAgbGV0IG9wZW4gSnNfb2Zfb2NhbWwgaW5cbiAgaWYgUHB4X2lubGluZV90ZXN0X2xpYi5hbV9ydW5uaW5nXG4gIHRoZW5cbiAgICBwcmludF9zXG4gICAgICBbJW1lc3NhZ2UgXCJEb3dubG9hZCB0cmlnZ2VyZWRcIiAoZmlsZW5hbWUgOiBzdHJpbmcpIChtaW1ldHlwZSA6IHN0cmluZykgY29udGVudHNdXG4gIGVsc2UgKFxuICAgICgqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xOTMyODg5MS81NTg1OTIgKilcbiAgICBsZXQgYSA9IERvbV9odG1sLmNyZWF0ZUEgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBsZXQgY29udGVudHNfYmlnc3RyID1cbiAgICAgIFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciAoQmlnc3RyaW5nLm9mX3N0cmluZyBjb250ZW50cylcbiAgICBpblxuICAgIGxldCBibG9iID1cbiAgICAgICgqIERvbid0IHVzZSBbYmxvYl9mcm9tX3N0cmluZ10uIFRoYXQgaGFzIGFuIGF0dHJhY3RpdmUgdHlwZSBidXQgd29ya3MgYnkgZmlyc3RcbiAgICAgICAgIGNvbnZlcnRpbmcgb3VyIE9DYW1sIHN0cmluZyB0byBhIEphdmFzY3JpcHQgc3RyaW5nLCB3aGljaCBjb252ZXJ0cyB0b1xuICAgICAgICAgVVRGLTE2LiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHJhbmRvbSBiaW5hcnkgZGF0YSB0aGF0IHdpbGwgZGlzdG9ydCBpdC4gKilcbiAgICAgIEZpbGUuYmxvYl9mcm9tX2FueSBbIGBhcnJheUJ1ZmZlciBjb250ZW50c19iaWdzdHIgXSB+Y29udGVudFR5cGU6bWltZXR5cGVcbiAgICBpblxuICAgIGxldCB1cmwgPSBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNjcmVhdGVPYmplY3RVUkwgYmxvYiBpblxuICAgIGEjI3NldEF0dHJpYnV0ZSAoSnMuc3RyaW5nIFwiaHJlZlwiKSB1cmw7XG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJkb3dubG9hZFwiKSAoSnMuc3RyaW5nIGZpbGVuYW1lKTtcbiAgICBhIyNjbGljaztcbiAgICBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNyZXZva2VPYmplY3RVUkwgdXJsKVxuOztcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgY3JlYXRlXG4gICAgICAgID8oZW5hYmxlZCA9IHRydWUpXG4gICAgICAgID8ob25fY2xpY2sgPSBmdW4gXyAtPiBWZG9tLkVmZmVjdC5JZ25vcmUpXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgfmdldF9kb3dubG9hZFxuICAgICAgICB+YnV0dG9uX3RleHRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9wZW4gVmRvbSBpblxuICAgIGxldCB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBldiA9XG4gICAgICB0cmlnZ2VyIChnZXRfZG93bmxvYWQgKCkpO1xuICAgICAgb25fY2xpY2sgZXZcbiAgICBpblxuICAgIGxldCBlbmFibGVkX2Rpc2FibGVkID1cbiAgICAgIGlmIGVuYWJsZWQgdGhlbiBbXSBlbHNlIFsgQXR0ci5kaXNhYmxlZDsgQXR0ci5zdHlsZSAoQ3NzX2dlbi5jb2xvciAoYE5hbWUgXCJncmV5XCIpKSBdXG4gICAgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBleHRyYV9hdHRyczsgZW5hYmxlZF9kaXNhYmxlZDsgWyBBdHRyLm9uX2NsaWNrIHRyaWdnZXJfY3N2X2Rvd25sb2FkIF0gXVxuICAgICAgfD4gTGlzdC5jb25jYXRcbiAgICBpblxuICAgIE5vZGUuYnV0dG9uIH5hdHRyczpbIEF0dHIubWFueV93aXRob3V0X21lcmdlIGF0dHJzIF0gWyBOb2RlLnRleHQgYnV0dG9uX3RleHQgXVxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5tb2R1bGUgSW5jciA9IEluY3JlbWVudGFsLk1ha2UgKClcblxuKCogVGhpcyBpcyB0aGUgZGVmYXVsdCBjbG9jayBmb3IgcnVubmluZyBjbGllbnRzLCBidXQgYm9uc2FpIHRlc3RzIGhhdmUgdGhlaXJcbiAgIG93biBzZXBhcmF0ZSBjbG9ja3MgKilcbmxldCBjbG9jayA9IEluY3IuQ2xvY2suY3JlYXRlIH5zdGFydDooVGltZV9ucy5ub3cgKCkpICgpXG5cbmluY2x1ZGUgSW5jclxubW9kdWxlIE1hcCA9IEluY3JfbWFwLk1ha2UgKEluY3IpXG5tb2R1bGUgU2VsZWN0ID0gSW5jcl9zZWxlY3QuTWFrZSAoSW5jcilcbiIsIm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQ29yZVxuXG50eXBlICgnYWN0aW9uLCAnbW9kZWwsICdzdGF0ZSwgJ2V4dHJhKSB3aXRoX2V4dHJhID1cbiAgeyBhcHBseV9hY3Rpb24gOiAnYWN0aW9uIC0+ICdzdGF0ZSAtPiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gJ21vZGVsXG4gIDsgdXBkYXRlX3Zpc2liaWxpdHkgOiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gJ21vZGVsXG4gIDsgdmlldyA6IFZkb20uTm9kZS50XG4gIDsgb25fZGlzcGxheSA6ICdzdGF0ZSAtPiBzY2hlZHVsZV9hY3Rpb246KCdhY3Rpb24gLT4gdW5pdCkgLT4gdW5pdFxuICA7IGV4dHJhIDogJ2V4dHJhXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxudHlwZSAoJ2FjdGlvbiwgJ3N0YXRlLCAnbW9kZWwpIHQgPSAoJ2FjdGlvbiwgJ3N0YXRlLCAnbW9kZWwsIHVuaXQpIHdpdGhfZXh0cmFcblxubGV0IGNyZWF0ZV93aXRoX2V4dHJhID9hcHBseV9hY3Rpb24gP3VwZGF0ZV92aXNpYmlsaXR5ID9vbl9kaXNwbGF5IH5leHRyYSBtb2RlbCB2aWV3ID1cbiAgbGV0IGFwcGx5X2FjdGlvbiA9XG4gICAgT3B0aW9uLnZhbHVlIGFwcGx5X2FjdGlvbiB+ZGVmYXVsdDooZnVuIF8gXyB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCB1cGRhdGVfdmlzaWJpbGl0eSA9XG4gICAgT3B0aW9uLnZhbHVlIHVwZGF0ZV92aXNpYmlsaXR5IH5kZWZhdWx0OihmdW4gfnNjaGVkdWxlX2FjdGlvbjpfIC0+IG1vZGVsKVxuICBpblxuICBsZXQgb25fZGlzcGxheSA9IE9wdGlvbi52YWx1ZSBvbl9kaXNwbGF5IH5kZWZhdWx0OihmdW4gXyB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gKCkpIGluXG4gIHsgYXBwbHlfYWN0aW9uOyB1cGRhdGVfdmlzaWJpbGl0eTsgb25fZGlzcGxheTsgZXh0cmE7IHZpZXcgfVxuOztcblxubGV0IGNyZWF0ZSA9IGNyZWF0ZV93aXRoX2V4dHJhIH5leHRyYTooKVxuIiwib3BlbiEgQ29yZVxub3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBBc3luY19rZXJuZWxcblxuKCoqIENvbW1vbiBtb2R1bGUgdHlwZXMgKilcbm1vZHVsZSB0eXBlIE1vZGVsID0gc2lnXG4gIHR5cGUgdFxuXG5cbiAgKCoqIEEgZnVuY3Rpb24gZm9yIHRlc3Rpbmcgd2hldGhlciB0aGUgbW9kZWwgaGFzIGNoYW5nZWQgZW5vdWdoIHRvIHJlcXVpcmUgcmVmaXJpbmdcbiAgICAgIHRoZSBpbmNyZW1lbnRhbCBncmFwaC5cblxuICAgICAgSXQncyBiZXN0IGlmIHRoZSB2YWx1ZXMgaW4gdGhlIG1vZGVsIHN1cHBvcnQgYSBzZW1hbnRpY2FsbHkgcmVhc29uYWJsZSBjdXRvZmZcbiAgICAgIGZ1bmN0aW9uIHdoaWNoIGxldHMgeW91IGF2b2lkIGluZmluaXRlIHJlY29tcHV0YXRpb24gbG9vcHMgdGhhdCBjYW4gb3RoZXJ3aXNlIGJlXG4gICAgICB0cmlnZ2VyZWQgYnkgdGhlIHZpc2liaWxpdHkgY2hlY2tzLiBGb3IgdGhpcyByZWFzb24sIGl0J3MgdHlwaWNhbGx5IGEgZ29vZCBpZGVhIHRvXG4gICAgICBhdm9pZCBoYXZpbmcgc2ltcGxlIGNsb3N1cmVzIHN0b3JlZCBpbiB0aGUgbW9kZWwuXG5cbiAgICAgIFRoYXQgc2FpZCwgaXQgZG9lcyB3b3JrIGlmIHlvdSBwdXQgcGh5c19lcXVhbCBpbiBmb3IgdGhlIGN1dG9mZi4gKilcbiAgdmFsIGN1dG9mZiA6IHQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQWN0aW9uID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFN0YXRlID0gc2lnXG4gICgqKiBSZXByZXNlbnRzIHRoZSBpbXBlcmF0aXZlIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhbiBhcHBsaWNhdGlvbiwgdHlwaWNhbGx5IHVzZWQgZm9yXG4gICAgICBob3VzaW5nIHRoaW5ncyBsaWtlIGNvbW11bmljYXRpb24gQXN5bmMtUlBDIGNvbm5lY3Rpb25zLiAqKVxuICB0eXBlIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBNb2RlbCA6IE1vZGVsXG4gIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgbW9kdWxlIFN0YXRlIDogU3RhdGVcblxuICAoKiogW29uX3N0YXJ0dXBdIGlzIGNhbGxlZCBvbmNlLCByaWdodCBhZnRlciB0aGUgaW5pdGlhbCBET00gaXMgc2V0IHRvIHRoZSB2aWV3IHRoYXRcbiAgICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBpbml0aWFsIHN0YXRlLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZG9pbmcgdGhpbmdzIGxpa2Ugc3RhcnRpbmcgdXBcbiAgICAgIGFzeW5jIHByb2Nlc3Nlcy4gIE5vdGUgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIGNvbXB1dGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgYW55XG4gICAgICBpbmNyZW1lbnRhbGl0eSwgc2luY2UgaXQncyBvbmx5IHJ1biBvbmNlLiAqKVxuICB2YWwgb25fc3RhcnR1cCA6IHNjaGVkdWxlX2FjdGlvbjooQWN0aW9uLnQgLT4gdW5pdCkgLT4gTW9kZWwudCAtPiBTdGF0ZS50IERlZmVycmVkLnRcblxuICAoKiogW2NyZWF0ZV0gaXMgYSBmdW5jdGlvbiB0aGF0IGluY3JlbWVudGFsbHkgY29uc3RydWN0cyBhIHshQ29tcG9uZW50fS4gTm90ZSB0aGF0IGFcbiAgICAgIFtDb21wb25lbnRdIHN1cHBvcnRzIGZ1bmN0aW9ucyBsaWtlIFthcHBseV9hY3Rpb25dLCB3aGljaCByZXR1cm4gYSBuZXcgW01vZGVsLnRdLFxuICAgICAgd2l0aG91dCB0YWtpbmcgYSBtb2RlbCBhcyBhbiBleHBsaWNpdCBpbnB1dC4gIFRoZSBpbnRlbnQgaXMgZm9yIFthcHBseV9hY3Rpb25dIHRvXG4gICAgICBoYXZlIGFjY2VzcyB0byB0aGUgY3VycmVudCBtb2RlbCB2aWEgaXRzIGNvbnN0cnVjdGlvblxuXG4gICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBtaWdodCBsb29rIGluIHByYWN0aWNlLlxuXG4gICAgICB7W1xuICAgICAgICBtb2R1bGUgTW9kZWwgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB7IGNvdW50ZXIgOiBpbnQgfSBbQEBkZXJpdmluZyBmaWVsZHMsIGNvbXBhcmVdXG5cbiAgICAgICAgICBsZXQgY3V0b2ZmIHQxIHQyID0gY29tcGFyZSB0MSB0MiA9IDBcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdW5pdFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSW5jcmVtZW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBsZXQgc2hvdWxkX2xvZyBfID0gZmFsc2VcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IGluaXRpYWxfbW9kZWwgPSB7IE1vZGVsLmNvdW50ZXIgPSAwIH1cblxuICAgICAgICBsZXQgb25fc3RhcnR1cCB+c2NoZWR1bGVfYWN0aW9ucyBfbW9kZWwgPVxuICAgICAgICAgIGV2ZXJ5IChUaW1lX25zLlNwYW4ub2Zfc2VjIDEuKSAoZnVuICgpIC0+XG4gICAgICAgICAgICBzY2hlZHVsZV9hY3Rpb25zIFsgQWN0aW9uLkluY3JlbWVudCBdKTtcbiAgICAgICAgICBEZWZlcnJlZC51bml0XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsOl8gfmluamVjdDpfID1cbiAgICAgICAgICBsZXQgb3BlbiBJbmNyLkxldF9zeW50YXggaW5cbiAgICAgICAgICBsZXQlbWFwIGFwcGx5X2FjdGlvbiA9XG4gICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPSBtb2RlbCA+PnwgTW9kZWwuY291bnRlciBpblxuICAgICAgICAgICAgZnVuIChJbmNyZW1lbnQgOiBBY3Rpb24udCkgXyB+c2NoZWR1bGVfYWN0aW9uczpfIC0+XG4gICAgICAgICAgICAgIHsgTW9kZWwuY291bnRlciA9IGNvdW50ZXIgKyAxIH1cbiAgICAgICAgICBhbmQgdmlldyA9XG4gICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPVxuICAgICAgICAgICAgICBsZXQlbWFwIGNvdW50ZXIgPSBtb2RlbCA+PnwgTW9kZWwuY291bnRlciBpblxuICAgICAgICAgICAgICBWZG9tLk5vZGUuZGl2IFtdIFsgVmRvbS5Ob2RlLnRleHQgKEludC50b19zdHJpbmcgY291bnRlcikgXVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFZkb20uTm9kZS5ib2R5IFtdIFsgY291bnRlciBdXG4gICAgICAgICAgYW5kIG1vZGVsID0gbW9kZWwgaW5cbiAgICAgICAgICAoKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaW5jbHVkZSBbb25fZGlzcGxheV0gb3IgW3VwZGF0ZV92aXNpYmlsaXR5XSwgc2luY2VcbiAgICAgICAgICAgICB0aGVzZSBhcmUgb3B0aW9uYWwgYXJndW1lbnRzICopXG4gICAgICAgICAgQ29tcG9uZW50LmNyZWF0ZSB+YXBwbHlfYWN0aW9uIG1vZGVsIHZpZXdcbiAgICAgICAgOzsgXX1cblxuICAgICAgVGhlIGZ1bGwgY29kZSBmb3IgdGhpcyBleGFtcGxlIGNhbiBiZSBmb3VuZCBpbiBleGFtcGxlcy9jb3VudGVyLlxuICAqKVxuICB2YWwgY3JlYXRlXG4gICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAtPiBvbGRfbW9kZWw6TW9kZWwudCBJbmNyLnRcbiAgICAoKiogW29sZF9tb2RlbF0gY29udGFpbnMgdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIG1vZGVsICopXG4gICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgKCoqIFtpbmplY3RdIGdpdmVzIHlvdSB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZXZlbnQgaGFuZGxlcnMgaW4gdGhlIHZpcnR1YWwgRE9NLiBJblxuICAgICAgICB5b3VyIGV2ZW50IGhhbmRsZXIsIGNhbGwgdGhpcyBmdW5jdGlvbiBvbiB0aGUgYWN0aW9uIHlvdSB3b3VsZCBsaWtlIHRvXG4gICAgICAgIHNjaGVkdWxlLiBWaXJ0dWFsIERPTSB3aWxsIGF1dG9tYXRpY2FsbHkgZGVsZWdhdGUgdGhhdCBhY3Rpb24gYmFjayB0byB0aGVcbiAgICAgICAgW1N0YXJ0X2FwcF0gbWFpbiBsb29wLiAqKVxuICAgIC0+IChBY3Rpb24udCwgTW9kZWwudCwgU3RhdGUudCkgQ29tcG9uZW50LnQgSW5jci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3N0YXRlLCAnbW9kZWwsICdhY3Rpb24pIHNuYXBzaG90ID1cbiAgICB7IHZpZXcgOiBWZG9tLk5vZGUudFxuICAgIDsgYXBwbHlfYWN0aW9uIDpcbiAgICAgICAgJ3N0YXRlIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+ICdtb2RlbCAtPiAnYWN0aW9uIC0+ICdtb2RlbFxuICAgIDsgdXBkYXRlX3Zpc2liaWxpdHkgOiAnbW9kZWwgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsXG4gICAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2V2ZW50Oih1bml0IFVpX2VmZmVjdC50IC0+IHVuaXQpIC0+IHVuaXRcbiAgICB9XG5cbiAgbW9kdWxlIHR5cGUgU19mb3JfYm9uc2FpID0gc2lnXG4gICAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgICBtb2R1bGUgQWN0aW9uIDogQWN0aW9uXG4gICAgbW9kdWxlIFN0YXRlIDogU3RhdGVcblxuICAgIHZhbCBhY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiA6IEFjdGlvbi50IC0+IGJvb2xcbiAgICB2YWwgb25fc3RhcnR1cCA6IHNjaGVkdWxlX2FjdGlvbjooQWN0aW9uLnQgLT4gdW5pdCkgLT4gTW9kZWwudCAtPiBTdGF0ZS50IERlZmVycmVkLnRcblxuICAgIHZhbCBjcmVhdGVcbiAgICAgIDogIE1vZGVsLnQgSW5jci50XG4gICAgICAtPiBvbGRfbW9kZWw6TW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IGluamVjdDooQWN0aW9uLnQgLT4gdW5pdCBWZG9tLkVmZmVjdC50KVxuICAgICAgLT4gKFN0YXRlLnQsIE1vZGVsLnQsIEFjdGlvbi50KSBzbmFwc2hvdCBJbmNyLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubW9kdWxlIFJlY3QgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHRvcCA6ICdhXG4gICAgOyBsZWZ0IDogJ2FcbiAgICA7IGJvdHRvbSA6ICdhXG4gICAgOyByaWdodCA6ICdhXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGZpZWxkc11cblxuICBsZXQgbWFwIHQgfmYgPVxuICAgIHsgdG9wID0gZiB0LnRvcDsgbGVmdCA9IGYgdC5sZWZ0OyBib3R0b20gPSBmIHQuYm90dG9tOyByaWdodCA9IGYgdC5yaWdodCB9XG4gIDs7XG5cbiAgbGV0IGludF9oZWlnaHQgdCA9IHQuYm90dG9tIC0gdC50b3BcbiAgbGV0IGludF93aWR0aCB0ID0gdC5yaWdodCAtIHQubGVmdFxuICBsZXQgZmxvYXRfaGVpZ2h0IHQgPSB0LmJvdHRvbSAtLiB0LnRvcFxuICBsZXQgZmxvYXRfd2lkdGggdCA9IHQucmlnaHQgLS4gdC5sZWZ0XG5lbmRcblxubGV0IHJvdW5kX2Zsb2F0X3JlY3QgPyhyb3VuZCA9IEZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bikgPSBSZWN0Lm1hcCB+Zjpyb3VuZFxuXG50eXBlIHJvd3Nfb3JfY29sdW1ucyA9XG4gIHwgUm93c1xuICB8IENvbHVtbnNcbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgdmFyaWFudHMsIGNvbXBhcmVdXG5cbmxldCBpbm5lckhlaWdodCAoKSA9IERvbV9odG1sLndpbmRvdyMjLmlubmVySGVpZ2h0XG5sZXQgaW5uZXJXaWR0aCAoKSA9IERvbV9odG1sLndpbmRvdyMjLmlubmVyV2lkdGhcblxubGV0IGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIEZsb2F0LiggPj0gKSByZWN0IyMudG9wIDAuXG4gICYmIEZsb2F0LiggPj0gKSByZWN0IyMubGVmdCAwLlxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLmJvdHRvbSAoRmxvYXQub2ZfaW50IChpbm5lckhlaWdodCAoKSkpXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMucmlnaHQgKEZsb2F0Lm9mX2ludCAoaW5uZXJXaWR0aCAoKSkpXG47O1xuXG4oKiogU2Nyb2xscyB0byB0aGUgaXRlbSBtYXJrZWQgYXMgXCJrZWVwLWluLXZpZXdcIiAqKVxubGV0IHNjcm9sbCA/KGlkID0gXCJrZWVwLWluLXZpZXdcIikgKCkgPVxuICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGVsdCAtPiBpZiBub3QgKGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgZWx0KSB0aGVuIGVsdCMjc2Nyb2xsSW50b1ZpZXcgSnMuX3RydWVcbjs7XG5cbigqIE5vdCB5ZXQgc3VwcG9ydGVkIG9uIENocm9tZS4gIE1heWJlIHdlIHNob3VsZCB1c2UgalF1ZXJ5P1xuICAge1tcbiAgICAgbGV0IHNjcm9sbF9pbnRvX3ZpZXcgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiB1bml0ID1cbiAgICAgICBlbHQjI3Njcm9sbEludG9WaWV3IChvYmplY3QlanNcbiAgICAgICAgIHZhbCBibG9jayA9IEpzLnN0cmluZyBcInN0YXJ0XCJcbiAgICAgICAgIHZhbCBiZWhhdmlvciA9IEpzLnN0cmluZyBcInNtb290aFwiXG4gICAgICAgZW5kKVxuICAgXX1cbiopXG4oKiBbdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsXSBnZXRzIGJvdW5kaW5nIHJlY3Qgb2YgW2VsdF0uIFRoZSBib3VuZGluZyByZWN0IGlzXG4gICByZWxhdGl2ZSB0byB0aGUgdmlldyBwb3J0ICopXG5sZXQgdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICB7IFJlY3QudG9wID0gcmVjdCMjLnRvcFxuICA7IGxlZnQgPSByZWN0IyMubGVmdFxuICA7IGJvdHRvbSA9IHJlY3QjIy5ib3R0b21cbiAgOyByaWdodCA9IHJlY3QjIy5yaWdodFxuICB9XG47O1xuXG5sZXQgdmlld3BvcnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwOyBsZWZ0ID0gMDsgYm90dG9tID0gaW5uZXJIZWlnaHQgKCk7IHJpZ2h0ID0gaW5uZXJXaWR0aCAoKSB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCBib3VuZGluZ19yZWN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsdCBpblxuICB7IGJvdW5kaW5nX3JlY3Qgd2l0aFxuICAgIGJvdHRvbSA9IGJvdW5kaW5nX3JlY3QudG9wICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IGJvdW5kaW5nX3JlY3QubGVmdCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxubGV0IGNsaWVudF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDBcbiAgOyBsZWZ0ID0gMFxuICA7IGJvdHRvbSA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cblxuKCoqIFNpbXBsZSB3cmFwcGVyIGZvciB0aGUgYmluYXJ5LXNlYXJjaCBmdW5jdG9yICAgKilcbmxldCBiaW5hcnlfc2VhcmNoICh0eXBlIGVsdCkgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIG1vZGUgeCA9XG4gIGxldCBtb2R1bGUgQnMgPVxuICAgIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgZWx0ID0gZWx0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdW5pdFxuXG4gICAgICBsZXQgZ2V0ICgpIG4gPSBnZXQgblxuICAgICAgbGV0IGxlbmd0aCAoKSA9IGxlbmd0aFxuICAgIGVuZClcbiAgaW5cbiAgQnMuYmluYXJ5X3NlYXJjaCAoKSB+Y29tcGFyZSBtb2RlIHhcbjs7XG5cbigqKiBTZWFyY2hlcyB0aHJvdWdoIGVsZW1lbnRzIGluZGV4ZWQgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdLiAqKVxubGV0IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIH5zZWFyY2hfYnkgbW9kZSBsYXlvdXQgeCA9XG4gIGxldCBnZXQgPVxuICAgIGxldCBudGhfZWxlbWVudCBuID1cbiAgICAgIGxldCBpZCA9IG50aF9lbGVtZW50X2lkIG4gaW5cbiAgICAgIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiRWxlbWVudCAlcyBub3QgZm91bmRcIiBpZCAoKVxuICAgICAgfCBTb21lIGVsdCAtPiBlbHRcbiAgICBpblxuICAgIGxldCBmaXJzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgMCkgaW5cbiAgICBsZXQgbGFzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgKGxlbmd0aCAtIDEpKSBpblxuICAgICgqIENvbXB1dGUgdGhlIG4ndGggZWxlbWVudCBpbiBhIG5vcm1hbGl6ZWQgd2F5LCBhcyBpZiB0aGUgaW5kZXhpbmcgYWx3YXlzIGdvZXMgaW5cbiAgICAgICBpbmNyZWFzaW5nIG9yZGVyIGZyb20gdG9wIHRvcCBib3R0b20gKilcbiAgICBsZXQgbnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuID1cbiAgICAgIGxldCBpc19hc2NlbmRpbmcgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gRmxvYXQuKCA8PSApIGZpcnN0LnRvcCBsYXN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gRmxvYXQuKCA8PSApIGZpcnN0LmxlZnQgbGFzdC5sZWZ0XG4gICAgICBpblxuICAgICAgbnRoX2VsZW1lbnQgKGlmIGlzX2FzY2VuZGluZyB0aGVuIG4gZWxzZSBsZW5ndGggLSBuIC0gMSlcbiAgICBpblxuICAgIGZ1biBuIC0+IHNlYXJjaF9ieSAodmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudF9ub3JtYWxpemVkIG4pKVxuICBpblxuICBiaW5hcnlfc2VhcmNoIH5sZW5ndGggfmdldCB+Y29tcGFyZTpGbG9hdC5jb21wYXJlIG1vZGUgeFxuOztcblxubGV0IGZpbmRfdmlzaWJsZV9yYW5nZSB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBsYXlvdXQgPVxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgZWxlbWVudF9zZWFyY2ggPSBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBpblxuICAgIGxldCB2aWV3cG9ydF9yZWN0ID0gdmlld3BvcnRfcmVjdCAoKSBpblxuICAgIGxldCBmaXJzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC5ib3R0b20sIHZpZXdwb3J0X3JlY3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LnJpZ2h0LCB2aWV3cG9ydF9yZWN0LmxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgbGV0IGxhc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QudG9wLCB2aWV3cG9ydF9yZWN0LmJvdHRvbVxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5sZWZ0LCB2aWV3cG9ydF9yZWN0LnJpZ2h0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgKCogQm90aCBbZmlyc3RdIGFuZCBbbGFzdF0gbmVlZCB0byBiZSBbU29tZV0uIE90aGVyd2lzZSwgZm9yIGV4YW1wbGUgaWYgdGhlIHdob2xlXG4gICAgICAgdGFibGUgaXMgYmVsb3cgdmlldyBwb3J0LCB0aGVuIFtmaXJzdF0gd2lsbCBiZSBbU29tZV0sIFtsYXN0XSB3aWxsIGJlIFtOb25lXSAqKVxuICAgIE9wdGlvbi5ib3RoIGZpcnN0IGxhc3QpXG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICB7anN8XG4gICAgICAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICAgICAgdmFyIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgICAgIHZhciByZSA9IC8oYXV0b3xzY3JvbGwpLztcblxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZG9jKSB7XG4gICAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXIgPSBlbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKGN1ci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdmFyIHN0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUoY3VyKTtcblxuICAgICAgICAgIGlmIChyZS50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgICB9KVxuICAgIHxqc31cbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lciAoZWwgOiAjRG9tLm5vZGUgSnMudCkgOiBEb20ubm9kZSBKcy50ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgW3wgSnMuVW5zYWZlLmluamVjdCBlbCB8XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgUGVyZm9ybWFuY2UgPSBKYXZhc2NyaXB0X3Byb2ZpbGluZ1xuXG5sZXQgdGltZXJfc3RhcnQgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlIHRoZW4gUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgKHMgXiBcImJlZm9yZVwiKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWUgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHRpbWVyX3N0b3AgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlXG4gIHRoZW4gKFxuICAgIGxldCBiZWZvcmUgPSBzIF4gXCJiZWZvcmVcIiBpblxuICAgIGxldCBhZnRlciA9IHMgXiBcImFmdGVyXCIgaW5cbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWFyayBhZnRlcjtcbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWVhc3VyZSB+bmFtZTpzIH5zdGFydDpiZWZvcmUgfmVuZF86YWZ0ZXIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZUVuZCAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgcHJpbnRfZXJyb3JmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcykpIGZtdFxuXG5tb2R1bGUgUmVxdWVzdF9pZHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuXG4gIHZhbCBzZXRfb25jZV9leG5cbiAgICA6ICB0XG4gICAgLT4gYW5pbWF0aW9uX2ZyYW1lX2lkOkRvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgLT4gc2V0X3RpbWVvdXRfaWQ6RG9tX2h0bWwudGltZW91dF9pZFxuICAgIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsbGVkIDogdCAtPiBib29sXG4gIHZhbCBjYW5jZWwgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGlkcyA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ2FuY2VsbGVkXG4gICAgfCBJZHMgb2ZcbiAgICAgICAgeyBhbmltYXRpb25fZnJhbWVfaWQgOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgICAgICA7IHNldF90aW1lb3V0X2lkIDogRG9tX2h0bWwudGltZW91dF9pZFxuICAgICAgICB9XG5cbiAgdHlwZSB0ID0gaWRzIHJlZlxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID0gcmVmIEVtcHR5XG5cbiAgbGV0IHNldF9vbmNlX2V4biAodCA6IHQpIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT5cbiAgICAgICgqIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBsZXQncyBiZSBkZWZlbnNpdmUuICopXG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkXG4gICAgfCBFbXB0eSAtPiB0IDo9IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfVxuICAgIHwgSWRzIF8gLT4gaW52YWxpZF9hcmcgXCJyZXF1ZXN0X2lkcyBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IGNhbmNlbGxlZCB4ID1cbiAgICBtYXRjaCAheCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gdHJ1ZVxuICAgIHwgRW1wdHkgfCBJZHMgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBjYW5jZWwgKHQgOiB0KSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+ICgpXG4gICAgfCBFbXB0eSAtPiB0IDo9IENhbmNlbGxlZFxuICAgIHwgSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9IC0+XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkO1xuICAgICAgdCA6PSBDYW5jZWxsZWRcbiAgOztcbmVuZFxuXG4oKiogW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBub3RpZmllcyB0aGUgYnJvd3NlciB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGRvIHNvbWVcbiAgICBjb21wdXRhdGlvbiBiZWZvcmUgdGhlIG5leHQgcmVwYWludC4gQmVjYXVzZSB0aGlzIG5lZWRzIHRvIG9jY3VyIGluIHRoZSBzYW1lXG4gICAgc3luY2hyb25vdXMgY2FsbCAoY2FsbGVkIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50KSwgcmV0dXJuaW5nIGEgRGVmZXJyZWQudCB3aWxsIG5vdFxuICAgIHdvcmsuIEluc3RlYWQsIHlvdSBwYXNzIGluIGEgam9iIHRvIGJlIHJ1biBiZWZvcmUgdGhlIHJlcGFpbnQuXG5cbiAgICBOb3RlIHRoYXQgaWYgW2NhbGxiYWNrXSBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHdvcmsgYmVmb3JlIGRvaW5nIERPTSBjaGFuZ2VzLCB0aG9zZVxuICAgIGNoYW5nZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcGFpbnQgYW5kIHdpbGwgYmUgc2F2ZWQgdW50aWwgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgICBXaGVuIHRoZSB0YWIgaXMgaW4gdGhlIGJhY2tncm91bmQsIHRoZSBicm93c2VycyBuYXRpdmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZ1bmN0aW9uXG4gICAgd2lsbCBuZXZlciBjYWxsIHRoZSBjYWxsYmFjaywgc28gaW4gb3JkZXIgdG8gY29udGludWUgcHJvY2Vzc2luZyBldmVudHMsIHdlIHNldCBhblxuICAgIGFsdGVybmF0ZSBzZXRUaW1lb3V0IGF0IDEgc2Vjb25kLlxuKilcbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjayA9XG4gICgqIFdlIGNhcHR1cmUgdGhlIGN1cnJlbnQgY29udGV4dCB0byB1c2UgaXQgbGF0ZXIgd2hlbiBoYW5kbGluZyBjYWxsYmFja3MgZnJvbVxuICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHNpbmNlIGV4Y2VwdGlvbnMgcmFpc2VkIHRvIHRoYXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnbyB0aHJvdWdoXG4gICAgIG91ciBvcmRpbmFyeSBBc3luYyBtb25pdG9yLiAqKVxuICBsZXQgY3VycmVudF9jb250ZXh0ID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpIGluXG4gIGxldCByZXF1ZXN0X2lkcyA9IFJlcXVlc3RfaWRzLmNyZWF0ZSAoKSBpblxuICBsZXQgY2FsbGJhY2sgKCkgPVxuICAgIGlmIFJlcXVlc3RfaWRzLmNhbmNlbGxlZCByZXF1ZXN0X2lkc1xuICAgIHRoZW4gKClcbiAgICBlbHNlIChcbiAgICAgIFJlcXVlc3RfaWRzLmNhbmNlbCByZXF1ZXN0X2lkcztcbiAgICAgIGxldCBjYWxsYmFja19yZXN1bHQgPVxuICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhpbl9jb250ZXh0IGN1cnJlbnRfY29udGV4dCBjYWxsYmFja1xuICAgICAgaW5cbiAgICAgIGlnbm9yZSAoY2FsbGJhY2tfcmVzdWx0IDogKHVuaXQsIHVuaXQpIFJlc3VsdC50KSlcbiAgaW5cbiAgbGV0IGFuaW1hdGlvbl9mcmFtZV9pZCA9XG4gICAgbGV0IGFuaW1hdGlvbl9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9jYWxsYmFja1xuICBpblxuICBsZXQgc2V0X3RpbWVvdXRfaWQgPVxuICAgIGxldCB0aW1lb3V0X2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgKCogMTAwMCBtcyA9IDFzOyAgQ2hvc2VuIGJlY2F1c2UgYmFja2dyb3VuZGVkIHRhbmdsZSBzZW5kcyByZXF1ZXN0c1xuICAgICAgIGF0IGFwcHJveGltYXRlbHkgdGhpcyByYXRlLiAqKVxuICAgIGxldCB0aW1lb3V0ID0gMTAwMC4wIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0IHRpbWVvdXRfY2FsbGJhY2sgdGltZW91dFxuICBpblxuICBSZXF1ZXN0X2lkcy5zZXRfb25jZV9leG4gcmVxdWVzdF9pZHMgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWRcbjs7XG5cbigqKiBUaGUgSnNfb2Zfb2NhbWwgdHlwZSBEb21faHRtbC5lbGVtZW50IGRvZXNuJ3QgaGF2ZSB0aGUgY29ycmVjdCBvcHRpb25zIGZvclxuICAgIHRoZWlyIGBmb2N1c2AgbWV0aG9kLiBDYXN0IHRvIHRoaXMgaW4gb3JkZXIgdG8gd29yayBhcm91bmQgdGhpcyBidWcuICAqKVxudHlwZSBmb2N1c2FibGUgPVxuICA8IGZvY3VzIDogPCBwcmV2ZW50U2Nyb2xsIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50IC0+IHVuaXQgSnMubWV0aCA+XG5cbmxldCBhc19mb2N1c2FibGUgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gZm9jdXNhYmxlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbigqKiBbVmlzaWJpbGl0eV0gZW5jYXBzdWxhdGVzIHRoZSBkaXJ0eWluZyBhbmQgY2xlYW5pbmcgb2YgdGhlIHZpc2liaWxpdHkgZmxhZ1xuXG4gICAgVGhlIHZpZXdwb3J0IHN0YXJ0cyBvdXQgZGlydHkuIFdoZW4gd2UgbG9vayBhdCB0aGUgRE9NIHRvIGNvbXB1dGUgd2hhdCBpcyB2aXNpYmxlIGJ5XG4gICAgY2FsbGluZyBbdXBkYXRlX3Zpc2liaWxpdHldLCB0aGUgdmlld3BvcnQgdGhlbiBiZWNvbWVzIGNsZWFuLiBBbnkgdGltZSB0aGUgdXNlclxuICAgIHNjcm9sbHMgb3VyIHBhZ2Ugb3IgcmVzaXplcyB0aGUgd2luZG93LCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2Fpbi4gSWYgd2UgdXBkYXRlXG4gICAgdGhlIERPTSwgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4gYmVjYXVzZSBhIERPTSB1cGRhdGUgY291bGQgY2F1c2UgYSByZWZsb3csXG4gICAgbW92aW5nIHRoZSBlbGVtZW50cyB0aGF0IGFyZSB2aXNpYmxlLlxuXG4gICAgV2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGlzIGFzIGEgZmxhZyBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgdXNlcnMgdG8gc2VuZCBhbiBhY3Rpb24gb25cbiAgICBzY3JvbGwgYmVjYXVzZSBpdCB3b3VsZCBtYWtlIG5vIHNlbnNlIHRvIGNvbXB1dGUgdGhlIHZpc2liaWxpdHkgb24gdGhlIHZpcnR1YWwtZG9tXG4gICAgd2hlbiB0aGUgdmlydHVhbC1kb20gZG9lcyBub3QgbWF0Y2ggdGhlIGFjdHVhbCBkb20gKGFzIGl0IGlzIGluIHRoZSBtaWRkbGUgb2ZcbiAgICBbYXBwbHlfYWN0aW9uc10pLiAqKVxubW9kdWxlIFZpc2liaWxpdHkgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZV9hc19kaXJ0eSA6IHVuaXQgLT4gdFxuICB2YWwgbWFya19jbGVhbiA6IHQgLT4gdW5pdFxuICB2YWwgbWFya19kaXJ0eSA6IHQgLT4gdW5pdFxuICB2YWwgaXNfZGlydHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG11dGFibGUgd2hlbl9kaXJ0eSA6IHVuaXQgSXZhci50IH1cblxuICBsZXQgY3JlYXRlX2FzX2RpcnR5ICgpID0geyB3aGVuX2RpcnR5ID0gSXZhci5jcmVhdGVfZnVsbCAoKSB9XG4gIGxldCBtYXJrX2RpcnR5IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC53aGVuX2RpcnR5ICgpXG4gIGxldCBpc19kaXJ0eSB0ID0gSXZhci5pc19mdWxsIHQud2hlbl9kaXJ0eVxuICBsZXQgbWFya19jbGVhbiB0ID0gaWYgaXNfZGlydHkgdCB0aGVuIHQud2hlbl9kaXJ0eSA8LSBJdmFyLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBMb2dnaW5nX2ZpbHRlciA9IHN0cnVjdFxuICBtb2R1bGUgU3RyaW5nX2JsYW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBCbGFuZy50IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbFxuICAgIHwgTm9uZVxuICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIG9mIFN0cmluZ19ibGFuZy50XG4gICAgfCBDdXN0b21fZmlsdGVyIG9mIChTZXhwLnQgLT4gYm9vbClcbmVuZFxuXG5tb2R1bGUgRGVidWdfZmxhZ3MgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIHZhbCBpbml0X2FwcFxuICAgIDogIGFwcF9pZDpzdHJpbmdcbiAgICAtPiBmaWx0ZXJfbmFtZXM6U3RyaW5nLlNldC50XG4gICAgLT4gZGVidWc6Ym9vbFxuICAgIC0+IHN0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICBtb2R1bGUgQXBwX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZmlsdGVyX25hbWVzIDogU3RyaW5nLlNldC50XG4gICAgICA7IGxvZ2dpbmdfZmlsdGVyIDogTG9nZ2luZ19maWx0ZXIudCByZWZcbiAgICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiBib29sIHJlZlxuICAgICAgOyBzaG91bGRfZGVidWcgOiBib29sIHJlZlxuICAgICAgfVxuXG4gICAgbGV0IHNldF9sb2dnaW5nX2ZpbHRlciB0IH5sb2dnaW5nX2ZpbHRlciA9IHQubG9nZ2luZ19maWx0ZXIgOj0gbG9nZ2luZ19maWx0ZXJcbiAgICBsZXQgc2V0X3Nob3VsZF9wcm9maWxlIHQgfnNob3VsZF9wcm9maWxlID0gdC5zaG91bGRfcHJvZmlsZSA6PSBzaG91bGRfcHJvZmlsZVxuICAgIGxldCBzZXRfc2hvdWxkX2RlYnVnIHQgfnNob3VsZF9kZWJ1ZyA9IHQuc2hvdWxkX2RlYnVnIDo9IHNob3VsZF9kZWJ1Z1xuICBlbmRcblxuICBjbGFzcyB0eXBlIGdsb2JhbCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdGFydExvZ2dpbmdBbGwgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0YXJ0TG9nZ2luZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQ3VzdG9tIDpcbiAgICAgICgoSnMuanNfc3RyaW5nIEpzLnQgLT4gYm9vbCBKcy50KSAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdG9wTG9nZ2luZyA6IChKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBzdGFydFByb2ZpbGluZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RvcFByb2ZpbGluZyA6XG4gICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3RhcnREZWJ1Z2dpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHN0b3BEZWJ1Z2dpbmcgOlxuICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNhdmVJbmNyZW1lbnRhbEdyYXBoIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgSnMud3JpdGVvbmx5X3Byb3BcbiAgZW5kXG5cbiAgbGV0IGdsb2JhbCA6IGdsb2JhbCBKcy50ID0gSnMuVW5zYWZlLmdsb2JhbFxuICBsZXQgZ2xvYmFsX2lzX2luaXRpYWxpemVkID0gcmVmIGZhbHNlXG4gIGxldCBhcHBfc3RhdGVzIDogQXBwX3N0YXRlLnQgU3RyaW5nLlRhYmxlLnQgPSBTdHJpbmcuVGFibGUuY3JlYXRlICgpXG5cbiAgbGV0IHNpbmdsZV9saW5lX3N0cmluZ19saXN0IHN0cmluZ3MgPVxuICAgIHN0cmluZ3MgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCJcXFwiXCIgXiBzdHIgXiBcIlxcXCJcIikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuICA7O1xuXG4gIGxldCBtdWx0aV9saW5lX3N0cmluZ19saXN0IHN0cmluZ3MgPVxuICAgIHN0cmluZ3MgfD4gTGlzdC5tYXAgfmY6KGZ1biBzdHIgLT4gXCIgIFwiIF4gc3RyKSB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIlxuICA7O1xuXG4gIGxldCBpbml0X2dsb2JhbCB+YXBwX2ZpbHRlcnMgKCkgPVxuICAgIGxldCB3aXRoX2FwcF9pZF9vcHQgdXBkYXRlX3N0YXRlIGFwcF9pZF9vcHQgPVxuICAgICAgbGV0IGFwcF9pZF9vcHQgPSBKcy5PcHQudG9fb3B0aW9uIGFwcF9pZF9vcHQgfD4gT3B0aW9uLm1hcCB+ZjpKcy50b19zdHJpbmcgaW5cbiAgICAgIG1hdGNoIGFwcF9pZF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEhhc2h0YmwuaXRlciBhcHBfc3RhdGVzIH5mOnVwZGF0ZV9zdGF0ZVxuICAgICAgfCBTb21lIGFwcF9pZCAtPlxuICAgICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGFwcF9zdGF0ZXMgYXBwX2lkIHdpdGhcbiAgICAgICAgIHwgU29tZSBzdGF0ZSAtPiB1cGRhdGVfc3RhdGUgc3RhdGVcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIGFwcCB3aXRoIGlkIFxcXCIlc1xcXCIuIFZhbGlkIGFwcCBpZHMgYXJlOiAlc1wiXG4gICAgICAgICAgICAgYXBwX2lkXG4gICAgICAgICAgICAgKEhhc2h0Ymwua2V5cyBhcHBfc3RhdGVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgbG9nZ2luZ19maWx0ZXIgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyIH5sb2dnaW5nX2ZpbHRlcilcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgc2hvdWxkX3Byb2ZpbGUgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9wcm9maWxlIH5zaG91bGRfcHJvZmlsZSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX2RlYnVnIHNob3VsZF9kZWJ1ZyA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX2RlYnVnIH5zaG91bGRfZGVidWcpXG4gICAgaW5cbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdBbGwgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIEFsbCk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGJsYW5nX3N0ciAtPlxuICAgICAgbGV0IGJsYW5nX3N0ciA9IEpzLnRvX3N0cmluZyBibGFuZ19zdHIgaW5cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoZnVuIGFwcF9zdGF0ZSAtPlxuICAgICAgICBsZXQgYmxhbmcgPSBCbGFuZy50X29mX3NleHAgU3RyaW5nLnRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgYmxhbmdfc3RyKSBpblxuICAgICAgICBsZXQgaW52YWxpZF9uYW1lcyA9XG4gICAgICAgICAgQmxhbmcuZm9sZCBibGFuZyB+aW5pdDpTdHJpbmcuU2V0LmVtcHR5IH5mOihmdW4gaW52YWxpZF9uYW1lcyBuYW1lIC0+XG4gICAgICAgICAgICBpZiBTZXQubWVtIGFwcF9zdGF0ZS5maWx0ZXJfbmFtZXMgbmFtZVxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX25hbWVzXG4gICAgICAgICAgICBlbHNlIFNldC5hZGQgaW52YWxpZF9uYW1lcyBuYW1lKVxuICAgICAgICBpblxuICAgICAgICBpZiBTZXQuaXNfZW1wdHkgaW52YWxpZF9uYW1lc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgQXBwX3N0YXRlLnNldF9sb2dnaW5nX2ZpbHRlclxuICAgICAgICAgICAgYXBwX3N0YXRlXG4gICAgICAgICAgICB+bG9nZ2luZ19maWx0ZXI6KE5hbWVkX2ZpbHRlcl9ibGFuZyBibGFuZylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByaW50X2Vycm9yZlxuICAgICAgICAgICAgXCJVbmFibGUgdG8gZmluZCBuYW1lZCBmaWx0ZXIocyk6ICVzLiBWYWxpZCBuYW1lcyBhcmU6XFxuJXNcIlxuICAgICAgICAgICAgKFNldC50b19saXN0IGludmFsaWRfbmFtZXMgfD4gc2luZ2xlX2xpbmVfc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KSkpO1xuICAgIGdsb2JhbCMjLnN0YXJ0TG9nZ2luZ0N1c3RvbVxuICAgIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBmaWx0ZXIgLT5cbiAgICAgIGxldCBmaWx0ZXIgYWN0aW9uX3NleHAgPVxuICAgICAgICBhY3Rpb25fc2V4cCB8PiBTZXhwLnRvX3N0cmluZyB8PiBKcy5zdHJpbmcgfD4gZmlsdGVyIHw+IEpzLnRvX2Jvb2xcbiAgICAgIGluXG4gICAgICB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgKEN1c3RvbV9maWx0ZXIgZmlsdGVyKSk7XG4gICAgZ2xvYmFsIyMuc3RvcExvZ2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIE5vbmUpO1xuICAgIGdsb2JhbCMjLnN0YXJ0UHJvZmlsaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfcHJvZmlsZSB0cnVlKTtcbiAgICBnbG9iYWwjIy5zdG9wUHJvZmlsaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfcHJvZmlsZSBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnREZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyB0cnVlKTtcbiAgICBnbG9iYWwjIy5zdG9wRGVidWdnaW5nIDo9IEpzLndyYXBfY2FsbGJhY2sgKHVwZGF0ZV9zaG91bGRfZGVidWcgZmFsc2UpO1xuICAgIGdsb2JhbCMjLnNhdmVJbmNyZW1lbnRhbEdyYXBoXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuICgpIC0+XG4gICAgICBsZXQgZmlsZW5hbWUgPSBcImN1cnJlbnRfaW5jcl9kb21fZG90X2dyYXBoLmRvdFwiIGluXG4gICAgICBVaV9pbmNyLnNhdmVfZG90X3RvX2ZpbGUgZmlsZW5hbWU7XG4gICAgICBsZXQgY29udGVudHMgPSBJbl9jaGFubmVsLnJlYWRfYWxsIGZpbGVuYW1lIGluXG4gICAgICBWZG9tX2ZpbGVfZG93bmxvYWQuY3JlYXRlIH5maWxlbmFtZSB+bWltZXR5cGU6XCJwbGFpbi90ZXh0XCIgfmNvbnRlbnRzXG4gICAgICB8PiBWZG9tX2ZpbGVfZG93bmxvYWQudHJpZ2dlcik7XG4gICAgbGV0IGdyb3VwIHMgfmYgPVxuICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNncm91cENvbGxhcHNlZCAoSnMuc3RyaW5nIHMpO1xuICAgICAgZiAoKTtcbiAgICAgIEZpcmVidWcuY29uc29sZSMjZ3JvdXBFbmRcbiAgICBpblxuICAgIGxldCBsb2cgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcykgaW5cbiAgICBncm91cCBcIkluY3JfZG9tIC8gQm9uc2FpIENvbnNvbGVcIiB+ZjooZnVuICgpIC0+XG4gICAgICBncm91cCBcIkFjdGlvbiBMb2dnaW5nXCIgfmY6KGZ1biAoKSAtPlxuICAgICAgICBsb2dcbiAgICAgICAgICB7fExvZ2dpbmcgcHJpbnRzIGFjdGlvbiBpbmZvIHRvIHRoZSBjb25zb2xlLiBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LiBUbyBzdGFydCBsb2dnaW5nLCB0eXBlIG9uZSBvZiB0aGUgZm9sbG93aW5nOlxuc3RhcnRMb2dnaW5nQWxsKFthcHBfaWRdKSAtIGxvZyBhbGwgYWN0aW9uc1xuc3RhcnRMb2dnaW5nKGZpbHRlcl9uYW1lIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBwcmUtZGVmaW5lZCBuYW1lZCBmaWx0ZXIgW2ZpbHRlcl9uYW1lXVxuc3RhcnRMb2dnaW5nKGZpbHRlcl9uYW1lX2JsYW5nIFssIGFwcF9pZF0pIC0gZmlsdGVyIGFjdGlvbnMgdXNpbmcgYSBibGFuZyBvZiBuYW1lZCBmaWx0ZXJzIFtmaWx0ZXJfbmFtZV9ibGFuZ11cbnN0YXJ0TG9nZ2luZ0N1c3RvbShmaWx0ZXIgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGN1c3RvbSBmdW5jdGlvbiBbZmlsdGVyXSBmcm9tIGEgc3RyaW5nICh0aGUgYWN0aW9uIHNleHApIHRvIGEgYm9vbFxuVG8gc3RvcCBsb2dnaW5nLCB0eXBlOiBzdG9wTG9nZ2luZyhbYXBwX2lkXSl8fSk7XG4gICAgICBncm91cCBcIkFjdGlvbiBQcm9maWxpbmdcIiB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxvZ1xuICAgICAgICAgIHt8UHJvZmlsaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuXG5UbyBzdGFydCBwcm9maWxpbmcsIHR5cGU6IHN0YXJ0UHJvZmlsaW5nKFthcHBfaWRdKVxuVG8gc3RvcCBwcm9maWxpbmcsIHR5cGU6IHN0b3BQcm9maWxpbmcoW2FwcF9pZF0pfH0pO1xuICAgICAgZ3JvdXAgXCJEZWJ1Z2dpbmdcIiB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxvZ1xuICAgICAgICAgIHt8RGVidWdnaW5nIHByaW50cyB0aW1pbmcgaW5mbyB0byB0aGUgY29uc29sZS4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBieSB0aGUgYXBwLlxuVG8gc3RhcnQgZGVidWdnaW5nLCB0eXBlOiBzdGFydERlYnVnZ2luZyhbYXBwX2lkXSlcblRvIHN0b3AgZGVidWdnaW5nLCB0eXBlOiBzdG9wRGVidWdnaW5nKFthcHBfaWRdKVxuXG5bYXBwX2lkXSBpcyBlcXVhbCB0byB0aGUgaWQgb2YgdGhlIGVsZW1lbnQgdGhhdCB0aGUgaW5jci1kb20gYXBwIGlzIGJvdW5kIHRvLiBJZiB0aGUgcGFnZSBvbmx5IGhhcyBvbmUgYXBwIG9yIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIGFwcHMsIHlvdSBjYW4gcGFzcyBpbiBbbnVsbF0gKG9yIGZvciBzaW5nbGUtYXJndW1lbnQgZnVuY3Rpb25zLCBvbWl0IGl0IGFsdG9nZXRoZXIpLnx9KTtcbiAgICAgIGxvZyBhcHBfZmlsdGVycylcbiAgOztcblxuICBsZXQgaW5pdF9hcHAgfmFwcF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcCA9XG4gICAgbGV0IGFwcF9pbml0X21lc3NhZ2UgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICB7fEF2YWlsYWJsZSBsb2dnaW5nIGZpbHRlcnMgZm9yIFwiJXNcIjpcbiVzfH1cbiAgICAgICAgYXBwX2lkXG4gICAgICAgIChTZXQudG9fbGlzdCBmaWx0ZXJfbmFtZXMgfD4gbXVsdGlfbGluZV9zdHJpbmdfbGlzdClcbiAgICBpblxuICAgIGlmIG5vdCAhZ2xvYmFsX2lzX2luaXRpYWxpemVkXG4gICAgdGhlbiAoXG4gICAgICBpbml0X2dsb2JhbCB+YXBwX2ZpbHRlcnM6YXBwX2luaXRfbWVzc2FnZSAoKTtcbiAgICAgIGdsb2JhbF9pc19pbml0aWFsaXplZCA6PSB0cnVlKVxuICAgIGVsc2UgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBhcHBfaW5pdF9tZXNzYWdlKTtcbiAgICBsZXQgbG9nZ2luZ19maWx0ZXIgPSByZWYgTG9nZ2luZ19maWx0ZXIuTm9uZSBpblxuICAgIGxldCBzaG91bGRfcHJvZmlsZSA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzaG91bGRfZGVidWcgPSByZWYgZGVidWcgaW5cbiAgICBIYXNodGJsLnNldFxuICAgICAgYXBwX3N0YXRlc1xuICAgICAgfmtleTphcHBfaWRcbiAgICAgIH5kYXRhOnsgZmlsdGVyX25hbWVzOyBsb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9O1xuICAgIHVwb24gc3RvcCAoZnVuICgpIC0+IEhhc2h0YmwucmVtb3ZlIGFwcF9zdGF0ZXMgYXBwX2lkKTtcbiAgICB7IGxvZ2dpbmdfZmlsdGVyID0gKGZ1biAoKSAtPiAhbG9nZ2luZ19maWx0ZXIpXG4gICAgOyBzaG91bGRfcHJvZmlsZSA9IChmdW4gKCkgLT4gIXNob3VsZF9wcm9maWxlKVxuICAgIDsgc2hvdWxkX2RlYnVnID0gKGZ1biAoKSAtPiAhc2hvdWxkX2RlYnVnKVxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlIHRvIHRoZSByb290IG5vZGUgc28gdGhhdCBpdCBjYW4gaW50ZXJjZXB0XG4gICBrZXlib2FyZCBldmVudHMuXG4gICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4ICopXG5sZXQgb3ZlcnJpZGVfcm9vdF9lbGVtZW50IHJvb3QgPVxuICBsZXQgb3BlbiBWZG9tIGluXG4gIGxldCBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50ID1cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5hdHRycyB8PiBBdHRyLkV4cGVydC5jb250YWluc19uYW1lIFwiZGlzYWJsZV90YWJfaW5kZXhcIiB8PiBub3RcbiAgaW5cbiAgbWF0Y2ggKHJvb3QgOiBOb2RlLnQpIHdpdGhcbiAgfCBFbGVtZW50IGVsZW1lbnQgd2hlbiBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50IC0+XG4gICAgbGV0IGFkZF9uZXdfYXR0cnMgYXR0cnMgPVxuICAgICAgVmRvbS5BdHRyLihzdHlsZSAoQ3NzX2dlbi5vdXRsaW5lIH5zdHlsZTpgTm9uZSAoKSkgQCB0YWJpbmRleCAwIEAgYXR0cnMpXG4gICAgaW5cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5tYXBfYXR0cnMgfmY6YWRkX25ld19hdHRycyB8PiBOb2RlLkVsZW1lbnRcbiAgfCBfIC0+IHJvb3Rcbjs7XG5cbmxldCByZWMgZ2V0X3RhZ19uYW1lIChub2RlIDogVmRvbS5Ob2RlLnQpID1cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgRWxlbWVudCBlIC0+IFNvbWUgKFZkb20uTm9kZS5FbGVtZW50LnRhZyBlKVxuICB8IExhenkgeyB0OyBfIH0gLT4gZ2V0X3RhZ19uYW1lIChMYXp5LmZvcmNlIHQpXG4gIHwgTm9uZSB8IFRleHQgXyB8IFdpZGdldCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzdGFydF9ib25zYWlcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUHJpdmF0ZS5TX2Zvcl9ib25zYWlcbiAgICAgICAgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbFxuICAgICAgICAgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgKCogVGhpcyBpcyBpZGVtcG90ZW50IGFuZCBzbyBmaW5lIHRvIGRvLiAqKVxuICBBc3luY19qcy5pbml0ICgpO1xuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlYmluZCAoKSA9IEFzeW5jX2pzLmRvY3VtZW50X2xvYWRlZCAoKSBpblxuICAgICBsZXQgbW9kZWxfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbCA9IEluY3IuVmFyLndhdGNoIG1vZGVsX3YgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgPSBJbmNyLlZhci53YXRjaCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IGluXG4gICAgIGxldCBjdXRvZmYgPVxuICAgICAgIEluY3IuQ3V0b2ZmLmNyZWF0ZSAoZnVuIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPlxuICAgICAgICAgQXBwLk1vZGVsLmN1dG9mZiBvbGRfdmFsdWUgbmV3X3ZhbHVlKVxuICAgICBpblxuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWwgY3V0b2ZmO1xuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgY3V0b2ZmO1xuICAgICBsZXQgYWN0aW9uX3F1ZXVlID0gRGVxdWUuY3JlYXRlICgpIGluXG4gICAgIGxldCBtb2R1bGUgRXZlbnQgPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZSAoc3RydWN0XG4gICAgICAgICBtb2R1bGUgQWN0aW9uID0gQXBwLkFjdGlvblxuXG4gICAgICAgICBsZXQgaGFuZGxlIGFjdGlvbiA9IERlcXVlLmVucXVldWVfYmFjayBhY3Rpb25fcXVldWUgYWN0aW9uXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHkuY3JlYXRlX2FzX2RpcnR5ICgpIGluXG4gICAgIGxldCB2aWV3cG9ydF9jaGFuZ2VkICgpID0gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHkgaW5cbiAgICAgKCogVGhpcyByZWdpc3RlcnMgdGhlIFt2aWV3cG9ydF9jaGFuZ2VkXSBoYW5kbGVyIHdpdGggVmlydHVhbF9kb20uIElmIGV2ZW50IGhhbmRsZXJzXG4gICAgICAgIHVzZSB0aGUgW1Zkb20uRWZmZWN0LlZpZXdwb3J0X2NoYW5nZWRdIGV2ZW50LCB3ZSBhcmUgbm90aWZpZWQuICopXG4gICAgIGxldCBtb2R1bGUgXyA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lX3Zpc2liaWxpdHkgKHN0cnVjdFxuICAgICAgICAgbGV0IGhhbmRsZSA9IHZpZXdwb3J0X2NoYW5nZWRcbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCBnZXRfdmlldywgZ2V0X2FwcGx5X2FjdGlvbiwgZ2V0X3VwZGF0ZV92aXNpYmlsaXR5LCBnZXRfb25fZGlzcGxheSA9XG4gICAgICAgbGV0IG9icyA9XG4gICAgICAgICBJbmNyLm9ic2VydmVcbiAgICAgICAgICAgKEFwcC5jcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDptb2RlbF9mcm9tX2xhc3RfZGlzcGxheSB+aW5qZWN0OkV2ZW50LmluamVjdClcbiAgICAgICBpblxuICAgICAgIGxldCBmZXRjaCAoZiA6IF8gQXBwX2ludGYuUHJpdmF0ZS5zbmFwc2hvdCAtPiBfKSAoKSA9XG4gICAgICAgICBmIChJbmNyLk9ic2VydmVyLnZhbHVlX2V4biBvYnMpXG4gICAgICAgaW5cbiAgICAgICAoIGZldGNoIChmdW4geyB2aWV3OyBfIH0gLT4gdmlldylcbiAgICAgICAsIGZldGNoIChmdW4geyBhcHBseV9hY3Rpb247IF8gfSAtPiBhcHBseV9hY3Rpb24pXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgdXBkYXRlX3Zpc2liaWxpdHk7IF8gfSAtPiB1cGRhdGVfdmlzaWJpbGl0eSlcbiAgICAgICAsIGZldGNoIChmdW4geyBvbl9kaXNwbGF5OyBfIH0gLT4gb25fZGlzcGxheSkgKVxuICAgICBpblxuICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgbGV0IG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9XG4gICAgICAgKFwiYWxsXCIsIEZuLmNvbnN0IHRydWUpIDo6IChcIm5vbmVcIiwgRm4uY29uc3QgZmFsc2UpIDo6IG5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgICAgIHw+IFN0cmluZy5UYWJsZS5vZl9hbGlzdF9leG5cbiAgICAgaW5cbiAgICAgbGV0IHsgRGVidWdfZmxhZ3MubG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfSA9XG4gICAgICAgbGV0IGZpbHRlcl9uYW1lcyA9IEhhc2h0Ymwua2V5cyBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgfD4gU3RyaW5nLlNldC5vZl9saXN0IGluXG4gICAgICAgRGVidWdfZmxhZ3MuaW5pdF9hcHAgfmFwcF9pZDpiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcFxuICAgICBpblxuICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgIGxldCBodG1sX2RvbSA9IFZkb20uTm9kZS50b19kb20gaHRtbCBpblxuICAgICBsZXQgZWxlbSA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkX2V4biBiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCBpblxuICAgICBsZXQgcGFyZW50ID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdIChKcy5PcHQudG9fb3B0aW9uIGVsZW0jIy5wYXJlbnROb2RlKSBpblxuICAgICBEb20ucmVwbGFjZUNoaWxkIHBhcmVudCBodG1sX2RvbSBlbGVtO1xuICAgICAoKiB3ZSBtYWtlIHN1cmUgdG8gY2FsbCBbdmlld3BvcnRfY2hhbmdlZF0gd2hlbmV2ZXIgdGhlIHdpbmRvdyByZXNpemVzIG9yIHRoZSBzY3JvbGxcbiAgICAgICAgY29udGFpbmVyIGluIHdoaWNoIG91ciBIVE1MIGlzIGxvY2F0ZWQgaXMgc2Nyb2xsZWQuICopXG4gICAgIGxldCBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgZXZlbnRfbmFtZSB3aGVyZSA9XG4gICAgICAgaWdub3JlXG4gICAgICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAoRG9tLkV2ZW50Lm1ha2UgZXZlbnRfbmFtZSlcbiAgICAgICAgICAgIChEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIHZpZXdwb3J0X2NoYW5nZWQgKCk7XG4gICAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgICBKcy5fZmFsc2VcbiAgICAgICAgICA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgICAgaW5cbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwic2Nyb2xsXCIgKEpzX21pc2MuZ2V0X3Njcm9sbF9jb250YWluZXIgaHRtbF9kb20pO1xuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJyZXNpemVcIiBEb21faHRtbC53aW5kb3c7XG4gICAgIGxldCViaW5kIHN0YXRlID1cbiAgICAgICBBcHAub25fc3RhcnR1cFxuICAgICAgICAgfnNjaGVkdWxlX2FjdGlvbjooZnVuIGEgLT4gVWlfZWZmZWN0LkV4cGVydC5oYW5kbGUgKEV2ZW50LmluamVjdCBhKSlcbiAgICAgICAgIChJbmNyLlZhci52YWx1ZSBtb2RlbF92KVxuICAgICBpblxuICAgICBsZXQgcHJldl9odG1sID0gcmVmIGh0bWwgaW5cbiAgICAgbGV0IHByZXZfZWx0ID0gcmVmIGh0bWxfZG9tIGluXG4gICAgIGxldCByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSA9XG4gICAgICAgbGV0IGVsZW1lbnQgPSAhcHJldl9lbHQgaW5cbiAgICAgICAoKiBJZiB0aGUgZWxlbWVudCB0byBmb2N1cyBpcyBhbiBlbGVtZW50LCBjYXN0IGl0IGludG8gdGhlXG4gICAgICAgICAgbW9yZSBwZXJtaXNzaXZlIFwiZm9jdXNhYmxlXCIgdHlwZSBkZWZpbmVkIGF0IHRoZSB0b3Agb2ZcbiAgICAgICAgICB0aGlzIGZpbGUsIGFuZCB0aGVuIGZvY3VzIHRoYXQuICopXG4gICAgICAgRG9tX2h0bWwuQ29lcmNlVG8uZWxlbWVudCBlbGVtZW50XG4gICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgIHw+IE9wdGlvbi5tYXAgfmY6YXNfZm9jdXNhYmxlXG4gICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biBlbGVtZW50IC0+XG4gICAgICAgICBlbGVtZW50IyNmb2N1c1xuICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgdmFsIHByZXZlbnRTY3JvbGwgPSBKcy5fdHJ1ZVxuICAgICAgICAgICBlbmQpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RhcnQgcyA9XG4gICAgICAgdGltZXJfc3RhcnQgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RvcCBzID1cbiAgICAgICB0aW1lcl9zdG9wIHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgKCpcbiAgICAgICAgVGFrZSBhY3Rpb24gb24gYW55IGJsdXIgZXZlbnQsIHJlZm9jdXNpbmcgdG8gdGhlIHJvb3Qgbm9kZSBpZiB0aGUgcmVsYXRlZFRhcmdldCBpc1xuICAgICAgICBudWxsIG9yIHVuZGVmaW5lZCwgc2lnbmlmeWluZyB0aGF0IGZvY3VzIHdhcyBsb3N0IGFuZCB3b3VsZCBvdGhlcndpc2UgYmUgcmVzZXQgdG9cbiAgICAgICAgdGhlIGJvZHkgbm9kZS5cblxuICAgICAgICBUaGUgSnMuX3RydWUgcGFyYW1ldGVyIHByb3ZpZGVkIHRvIERvbS5hZGRFdmVudExpc3RlbmVyIGlzIHRoZSB1c2VDYXB0dXJlXG4gICAgICAgIHBhcmFtZXRlciBkZXNjcmliZWQgaGVyZTpcbiAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXJcbiAgICAgKilcbiAgICAgaWdub3JlXG4gICAgIEBAIERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgRG9tX2h0bWwud2luZG93XG4gICAgICAgICAgRG9tX2h0bWwuRXZlbnQuYmx1clxuICAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICAgICAgICgqIFtKcy5VbnNhZmUuKl0gaXMgbGlrZSBbT2JqLm1hZ2ljXS4gV2Ugc2hvdWxkIGJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2VcbiAgICAgICAgICAgICAgICBleHBlY3QuICopXG4gICAgICAgICAgICAgbGV0IGVcbiAgICAgICAgICAgICAgIDogPCByZWxhdGVkVGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wID4gSnMudFxuICAgICAgICAgICAgICAgPVxuICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgcmVsYXRlZF90YXJnZXQgPSBlIyMucmVsYXRlZFRhcmdldCBpblxuICAgICAgICAgICAgIGlmIG5vdCAoSnMuT3B0LnRlc3QgcmVsYXRlZF90YXJnZXQpIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKCk7XG4gICAgICAgICAgICAgSnMuX3RydWUpKVxuICAgICAgICAgIEpzLl90cnVlO1xuICAgICBsZXQgdXBkYXRlX3Zpc2liaWxpdHkgKCkgPVxuICAgICAgIFZpc2liaWxpdHkubWFya19jbGVhbiB2aXNpYmlsaXR5O1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF91cGRhdGVfdmlzaWJpbGl0eSAoKSlcbiAgICAgICAgICAgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlXG4gICAgICAgICAgIChJbmNyLlZhci5sYXRlc3RfdmFsdWUgbW9kZWxfdilcbiAgICAgICBpblxuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF92IG5ld19tb2RlbDtcbiAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIEluY3Iuc3RhYmlsaXplICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemVcIlxuICAgICBpblxuICAgICBsZXQgbWF5YmVfbG9nX2FjdGlvbiA9XG4gICAgICAgbGV0IHNhZmVfZmlsdGVyIH5uYW1lIGZpbHRlciBhY3Rpb24gPVxuICAgICAgICAgbWF0Y2ggT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmaWx0ZXIgYWN0aW9uKSB3aXRoXG4gICAgICAgICB8IE9rIHNob3VsZF9sb2cgLT4gc2hvdWxkX2xvZ1xuICAgICAgICAgfCBFcnJvciBlcnIgLT5cbiAgICAgICAgICAgcHJpbnRfZXJyb3JmICFcIkV4Y2VwdGlvbiByYWlzZWQgYnkgJXM6ICV7RXJyb3IjaHVtfVwiIG5hbWUgZXJyO1xuICAgICAgICAgICBmYWxzZVxuICAgICAgIGluXG4gICAgICAgbGV0IG5hbWVkX2ZpbHRlcl9ibGFuZ19jYWNoZSA9XG4gICAgICAgICBDb3JlLk1lbW8ub2ZfY29tcGFyYWJsZVxuICAgICAgICAgICAobW9kdWxlIExvZ2dpbmdfZmlsdGVyLlN0cmluZ19ibGFuZylcbiAgICAgICAgICAgKGZ1biBibGFuZyAtPlxuICAgICAgICAgICAgICBsZXQgZmlsdGVyID0gSGFzaHRibC5maW5kX2V4biBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgaW5cbiAgICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgICB+bmFtZTooc3ByaW50ZiAhXCJuYW1lZCBmaWx0ZXIgYmxhbmcgXFxcIiV7c2V4cDpzdHJpbmcgQmxhbmcudH1cXFwiXCIgYmxhbmcpXG4gICAgICAgICAgICAgICAgKG1hdGNoIGJsYW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBCYXNlIG5hbWUgLT4gZmlsdGVyIG5hbWVcbiAgICAgICAgICAgICAgICAgfCBfIC0+IGZ1biBhY3Rpb24gLT4gQmxhbmcuZXZhbCBibGFuZyAoZnVuIG5hbWUgLT4gZmlsdGVyIG5hbWUgYWN0aW9uKSkpXG4gICAgICAgaW5cbiAgICAgICBmdW4gYWN0aW9uIC0+XG4gICAgICAgICBsZXQgc2hvdWxkX2xvZ19hY3Rpb24gPVxuICAgICAgICAgICBtYXRjaCBsb2dnaW5nX2ZpbHRlciAoKSB3aXRoXG4gICAgICAgICAgIHwgQWxsIC0+IHRydWVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nIC0+IG5hbWVkX2ZpbHRlcl9ibGFuZ19jYWNoZSBibGFuZyBhY3Rpb25cbiAgICAgICAgICAgfCBDdXN0b21fZmlsdGVyIGZpbHRlciAtPlxuICAgICAgICAgICAgIHNhZmVfZmlsdGVyXG4gICAgICAgICAgICAgICB+bmFtZTpcImN1c3RvbSBmaWx0ZXJcIlxuICAgICAgICAgICAgICAgKGZ1biBhY3Rpb24gLT4gZmlsdGVyIChBcHAuQWN0aW9uLnNleHBfb2ZfdCBhY3Rpb24pKVxuICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICBpblxuICAgICAgICAgaWYgc2hvdWxkX2xvZ19hY3Rpb25cbiAgICAgICAgIHRoZW4gQXN5bmNfanMubG9nX3NfYXNfc3RyaW5nIFslbWVzc2FnZSBcIkFjdGlvblwiIChhY3Rpb24gOiBBcHAuQWN0aW9uLnQpXVxuICAgICBpblxuICAgICBsZXQgYXBwbHlfYWN0aW9uIGFjdGlvbiA9XG4gICAgICAgbWF5YmVfbG9nX2FjdGlvbiBhY3Rpb247XG4gICAgICAgaWYgQXBwLmFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIGFjdGlvblxuICAgICAgIHRoZW4gKFxuICAgICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiO1xuICAgICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplLWZvci1hY3Rpb25cIilcbiAgICAgICBlbHNlIGlmIHNob3VsZF9kZWJ1ZyAoKVxuICAgICAgIHRoZW4gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyAoSnMuc3RyaW5nIFwiYWN0aW9uIGFwcGxpZWQgd2l0aG91dCBzdGFiaWxpemluZ1wiKTtcbiAgICAgICBsZXQgbmV3X21vZGVsID1cbiAgICAgICAgIChnZXRfYXBwbHlfYWN0aW9uICgpKVxuICAgICAgICAgICBzdGF0ZVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgICAgICBhY3Rpb25cbiAgICAgICBpblxuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF92IG5ld19tb2RlbFxuICAgICBpblxuICAgICBsZXQgcmVjIGFwcGx5X2FjdGlvbnMgKCkgPVxuICAgICAgIG1hdGNoIERlcXVlLmRlcXVldWVfZnJvbnQgYWN0aW9uX3F1ZXVlIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgYWN0aW9uIC0+XG4gICAgICAgICBhcHBseV9hY3Rpb24gYWN0aW9uO1xuICAgICAgICAgYXBwbHlfYWN0aW9ucyAoKVxuICAgICBpblxuICAgICBsZXQgcGVyZm9ybV91cGRhdGUgKCkgPVxuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgKCogVGhlIGNsb2NrIGlzIHNldCBvbmx5IG9uY2UgcGVyIGNhbGwgdG8gcGVyZm9ybV91cGRhdGUsIHNvIHRoYXQgYWxsIGFjdGlvbnMgdGhhdFxuICAgICAgICAgIG9jY3VyIGJlZm9yZSBlYWNoIGRpc3BsYXkgdXBkYXRlIG9jY3VyIFwiYXQgdGhlIHNhbWUgdGltZS5cIiAqKVxuICAgICAgIGxldCBub3cgPVxuICAgICAgICAgbGV0IGRhdGUgPSBuZXclanMgSnMuZGF0ZV9ub3cgaW5cbiAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9tcyBkYXRlIyNnZXRUaW1lIHw+IFRpbWVfbnMub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgIGluXG4gICAgICAgSW5jci5DbG9jay5hZHZhbmNlX2Nsb2NrIEluY3IuY2xvY2sgfnRvXzpub3c7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidG90YWxcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcInVwZGF0ZSB2aXNpYmlsaXR5XCI7XG4gICAgICAgaWYgVmlzaWJpbGl0eS5pc19kaXJ0eSB2aXNpYmlsaXR5IHRoZW4gdXBkYXRlX3Zpc2liaWxpdHkgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInVwZGF0ZSB2aXNpYmlsaXR5XCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgYXBwbHlfYWN0aW9ucyAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwiYXBwbHkgYWN0aW9uc1wiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiO1xuICAgICAgIGxldCBodG1sID0gZ2V0X3ZpZXcgKCkgaW5cbiAgICAgICBsZXQgaHRtbCA9IG92ZXJyaWRlX3Jvb3RfZWxlbWVudCBodG1sIGluXG4gICAgICAgdGltZXJfc3RhcnQgXCJkaWZmXCI7XG4gICAgICAgbGV0IHBhdGNoID0gVmRvbS5Ob2RlLlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6IXByZXZfaHRtbCB+Y3VycmVudDpodG1sIGluXG4gICAgICAgdGltZXJfc3RvcCBcImRpZmZcIjtcbiAgICAgICBpZiBub3QgKFZkb20uTm9kZS5QYXRjaC5pc19lbXB0eSBwYXRjaCkgdGhlbiBWaXNpYmlsaXR5Lm1hcmtfZGlydHkgdmlzaWJpbGl0eTtcbiAgICAgICB0aW1lcl9zdGFydCBcInBhdGNoXCI7XG4gICAgICAgbGV0IGVsdCA9IFZkb20uTm9kZS5QYXRjaC5hcHBseSBwYXRjaCAhcHJldl9lbHQgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwicGF0Y2hcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcIm9uX2Rpc3BsYXlcIjtcbiAgICAgICAoZ2V0X29uX2Rpc3BsYXkgKCkpIHN0YXRlIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZTtcbiAgICAgICB0aW1lcl9zdG9wIFwib25fZGlzcGxheVwiO1xuICAgICAgIEluY3IuVmFyLnNldCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IChJbmNyLlZhci52YWx1ZSBtb2RlbF92KTtcbiAgICAgICBsZXQgb2xkX3RhZ19uYW1lID0gZ2V0X3RhZ19uYW1lICFwcmV2X2h0bWwgaW5cbiAgICAgICBsZXQgbmV3X3RhZ19uYW1lID0gZ2V0X3RhZ19uYW1lIGh0bWwgaW5cbiAgICAgICBsZXQgdGFnc190aGVfc2FtZSA9IE9wdGlvbi5lcXVhbCBTdHJpbmcuZXF1YWwgb2xkX3RhZ19uYW1lIG5ld190YWdfbmFtZSBpblxuICAgICAgIHByZXZfaHRtbCA6PSBodG1sO1xuICAgICAgIHByZXZfZWx0IDo9IGVsdDtcbiAgICAgICB0aW1lcl9zdG9wIFwidG90YWxcIjtcbiAgICAgICBpZiBzaG91bGRfZGVidWcgKCkgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCItLS0tLS0tXCIpO1xuICAgICAgICgqIENoYW5naW5nIHRoZSB0YWcgbmFtZSBjYXVzZXMgZm9jdXMgdG8gYmUgbG9zdC4gIFJlZm9jdXMgaW4gdGhhdCBjYXNlLiAqKVxuICAgICAgIGlmIG5vdCB0YWdzX3RoZV9zYW1lIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKClcbiAgICAgaW5cbiAgICAgKCogV2UgdXNlIFtyZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZV0gc28gdGhhdCBicm93c2VyIHRlbGxzIHVzIHdoZXJlIGl0J3MgdGltZSB0b1xuICAgICAgICByZWZyZXNoIHRoZSBVSS4gQWxsIHRoZSBhY3Rpb25zIHdpbGwgYmUgcHJvY2Vzc2VkIGFuZCB0aGUgY2hhbmdlcyBwcm9wYWdhdGVkXG4gICAgICAgIHRvIHRoZSBET00gaW4gb25lIGZyYW1lLiAqKVxuICAgICBsZXQgcmVjIGNhbGxiYWNrICgpID1cbiAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BcbiAgICAgICB0aGVuICgpXG4gICAgICAgZWxzZSAoXG4gICAgICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrKVxuICAgICBpblxuICAgICAoKiBXZSB3YW50IHRoZSByb290IGVsZW1lbnQgdG8gc3RhcnQgb3V0IGZvY3VzZWQsIHNvIHBlcmZvcm0gYW4gaW5pdGlhbFxuICAgICAgICB1cGRhdGUvcmVuZGVyLCB0aGVuIGltbWVkaWF0ZWx5IGZvY3VzIHRoZSByb290ICh1bmxlc3MgYSBub24tYm9keSBlbGVtZW50IGFscmVhZHlcbiAgICAgICAgaGFzIGZvY3VzKS4gIFRoaXMgZm9jdXNpbmcgY2FuJ3QgaGFwcGVuIGluc2lkZSBvZiB0aGUgYGNhbGxiYWNrYCBiZWNhdXNlIHRoZW4gaXRcbiAgICAgICAgd291bGQgcmVmb2N1cyByb290IGV2ZXJ5IGZyYW1lLiAgKilcbiAgICAgcGVyZm9ybV91cGRhdGUgKCk7XG4gICAgIChtYXRjaCBKcy5PcHQudG9fb3B0aW9uIERvbV9odG1sLmRvY3VtZW50IyMuYWN0aXZlRWxlbWVudCB3aXRoXG4gICAgICB8IFNvbWUgZWwgLT4gaWYgSnMuT3B0LnRlc3QgKERvbV9odG1sLkNvZXJjZVRvLmJvZHkgZWwpIHRoZW4gcmVmb2N1c19yb290X2VsZW1lbnQgKClcbiAgICAgIHwgTm9uZSAtPiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSk7XG4gICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIGNhbGxiYWNrO1xuICAgICBEZWZlcnJlZC5uZXZlciAoKSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzdGFydF9ib25zYWkgPSBzdGFydF9ib25zYWlcbmVuZFxuXG5sZXQgc3RhcnRcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUyB3aXRoIHR5cGUgTW9kZWwudCA9IG1vZGVsIGFuZCB0eXBlIEFjdGlvbi50ID0gYWN0aW9uKVxuICA9XG4gIHN0YXJ0X2JvbnNhaVxuICAgIH5kZWJ1Z1xuICAgIH5zdG9wXG4gICAgfm5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgIH5pbml0aWFsX21vZGVsXG4gICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQXBwXG5cbiAgICAgIGxldCBhY3Rpb25fcmVxdWlyZXNfc3RhYmlsaXphdGlvbiBfID0gdHJ1ZVxuXG4gICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCA9XG4gICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICBsZXQlbWFwIGNvbXBvbmVudCA9IGNyZWF0ZSBtb2RlbCB+b2xkX21vZGVsIH5pbmplY3QgaW5cbiAgICAgICAgbGV0IHZpZXcgPSBDb21wb25lbnQudmlldyBjb21wb25lbnQgaW5cbiAgICAgICAgbGV0IGFwcGx5X2FjdGlvbiBzdGF0ZSB+c2NoZWR1bGVfZXZlbnQgX21vZGVsIGFjdGlvbiA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC5hcHBseV9hY3Rpb24gY29tcG9uZW50IGFjdGlvbiBzdGF0ZSB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSBfbW9kZWwgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LnVwZGF0ZV92aXNpYmlsaXR5IGNvbXBvbmVudCB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvbl9kaXNwbGF5IHN0YXRlIH5zY2hlZHVsZV9ldmVudCA9XG4gICAgICAgICAgbGV0IHNjaGVkdWxlX2FjdGlvbiBhID0gc2NoZWR1bGVfZXZlbnQgKGluamVjdCBhKSBpblxuICAgICAgICAgIENvbXBvbmVudC5vbl9kaXNwbGF5IGNvbXBvbmVudCBzdGF0ZSB+c2NoZWR1bGVfYWN0aW9uXG4gICAgICAgIGluXG4gICAgICAgIHsgQXBwX2ludGYuUHJpdmF0ZS52aWV3OyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5IH1cbiAgICAgIDs7XG4gICAgZW5kKVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBWaXJ0dWFsX2RvbS5WZG9tXG5pbmNsdWRlIFZkb21faW5wdXRfd2lkZ2V0c19pbnRmXG5cbm1vZHVsZSBNZXJnZV9iZWhhdmlvciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgTWVyZ2VcbiAgICB8IExlZ2FjeV9kb250X21lcmdlXG5lbmRcblxubW9kdWxlIERlY2ltYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHQpXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJDYW5ub3QgcmVwcmVzZW50IG5vbi1maW5pdGUgZmxvYXQgYXMgZGVjaW1hbDogJWZcIiB0ICgpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgdCA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgc3ByaW50ZiBcIiUuMTJnXCIgdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEluaXRpYWxcbiAgICAoKiBUaGlzIGlzIHVzZWQgdG8gYXZvaWQgbWFya2luZyBhcyBpbnZhbGlkIGEgZmllbGQgdGhhdCBoYXNuJ3QgZXZlciBiZWVuXG4gICAgICAgdG91Y2hlZCBieSB0aGUgdXNlciwgdG8gaW1wcm92ZSBVWC4gKilcbiAgICB8IFZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgfCBJbnZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmdcbiAgICAgICAgOyBsYXN0X3ZhbGlkIDogJ2Egb3B0aW9uXG4gICAgICAgIDsgZXJyb3IgOiBzdHJpbmdcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIHR5cGUgJ2EgdXBkYXRlID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCBsaWZ0ICh0eXBlIGEpIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IGEgdFxuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBJbml0aWFsIC0+IFwiXCJcbiAgICAgICAgfCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciA9IF8gfSAtPiBpbnB1dFxuICAgICAgICB8IFZhbGlkIHsgaW5wdXQ7IHZhbHVlIH0gLT5cbiAgICAgICAgICAobWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgaW5wdXQgLT4gaW5wdXRcbiAgICAgICAgICAgfCBOb25lIC0+IE0udG9fc3RyaW5nIHZhbHVlKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IFZhbGlkIHsgaW5wdXQgPSBTb21lIHM7IHZhbHVlID0gTS5vZl9zdHJpbmcgcyB9IHdpdGhcbiAgICAgICAgfCBleG4gLT4gSW52YWxpZCB7IGlucHV0ID0gczsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yID0gRXhuLnRvX3N0cmluZyBleG4gfVxuICAgICAgOztcbiAgICBlbmQgOiBTdHJpbmdhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0ID0gYSB0KVxuICA7O1xuXG4gIGxldCBpbml0aWFsX2VtcHR5ID0gSW5pdGlhbFxuICBsZXQgcmV0dXJuIHZhbHVlID0gVmFsaWQgeyBpbnB1dCA9IE5vbmU7IHZhbHVlIH1cblxuICBsZXQgZ2V0X2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCBfIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9sYXN0ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9IC0+IGxhc3RfdmFsaWRcbiAgICB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCB8IFZhbGlkIF8gLT4gTm9uZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT4gU29tZSBlcnJvclxuICA7O1xuXG4gIGxldCBpc19pbnZhbGlkID0gZnVuY3Rpb25cbiAgICB8IEludmFsaWQgXyAtPiB0cnVlXG4gICAgfCBWYWxpZCBfIHwgSW5pdGlhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19pbml0aWFsX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgb2xkIG5ld18gPVxuICAgIG1hdGNoIG9sZCwgbmV3XyB3aXRoXG4gICAgfCBJbml0aWFsLCBfIC0+IG5ld19cbiAgICB8IF8sIFZhbGlkIF8gLT4gbmV3X1xuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlID0gb2xkIH0sIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IFNvbWUgb2xkOyBlcnJvciB9XG4gICAgfCAoIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9XG4gICAgICAsIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yIH0gKSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkOyBlcnJvciB9XG4gICAgfCBJbnZhbGlkIF8sIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBTb21lIF87IGVycm9yID0gXyB9IC0+IG5ld19cbiAgICB8IF8sIEluaXRpYWwgLT4gb2xkXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2ludmFsaWQgdmFsaWRhdGVkIGF0dHJzID1cbiAgaWYgVmFsaWRhdGVkLmlzX2ludmFsaWQgdmFsaWRhdGVkXG4gIHRoZW4gQXR0ci5jcmVhdGUgXCJhcmlhLWludmFsaWRcIiBcInRydWVcIiA6OiBhdHRyc1xuICBlbHNlIGF0dHJzXG47O1xuXG5tb2R1bGUgVGltZV9jb21wYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVGltZV9ucy5PZmRheS50XG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gVGltZV9ucy5PZmRheS5vZl9zdHJpbmdcblxuICAgICgqIFRoZSBicm93c2VyIGV4cGVjdHMgYSBISDptbSBmb3JtYXQgd2l0aCBvcHRpb25hbCB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiO1xuICAgICAgIFtUaW1lX25zLk9mZGF5LnRvX3N0cmluZ10gcHJvdmlkZXMgcHJlY2lzaW9uIGluIG5hbm9zZWNvbmRzLCB3aGljaCBpcyB0b28gbXVjaC4gKilcbiAgICBsZXQgdG9fc3RyaW5nID0gVGltZV9ucy5PZmRheS50b19taWxsaXNlY29uZF9zdHJpbmdcbiAgZW5kXG5cbiAgbGV0IHpvbmVkIHpvbmUgOiAobW9kdWxlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IFRpbWVfbnMudCkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBUaW1lX25zLnRcblxuICAgICAgKCogRm9ybWF0IGZyb20gdGhlIGJyb3dzZXI6IHl5eXktTU0tZGRUaGg6bW0gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBwYXJ0cyA9IFN0cmluZy5zcGxpdF9vbl9jaGFycyBzIH5vbjpbICdUJzsgJzonIF0gaW5cbiAgICAgICAgbGV0IGRhdGUgPSBMaXN0Lm50aF9leG4gcGFydHMgMCB8PiBEYXRlLm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgaHIgPSBMaXN0Lm50aF9leG4gcGFydHMgMSB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBtaW4gPSBMaXN0Lm50aF9leG4gcGFydHMgMiB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBvZmRheSA9IFRpbWVfbnMuT2ZkYXkuY3JlYXRlIH5ociB+bWluICgpIGluXG4gICAgICAgIFRpbWVfbnMub2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgcyA9IFRpbWVfbnMudG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgfnpvbmUgdCBpblxuICAgICAgICAoKiBUaGUgYnJvd3NlciBleHBlY3QgYSB5eXl5LU1NLWRkVGhoOm1tIGZvcm1hdCBhbmQgaXQgYWxsb3dzXG4gICAgICAgICAgIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCIuXG5cbiAgICAgICAgICAgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgZm9ybWF0OiAyMDE5LTAxLTMwVDAxOjAwOjAwLjAwMDAwMDAwMCswMTowMFxuXG4gICAgICAgICAgIGRlc2lyZWQgZm9ybWF0IGFmdGVyIGN1dHRpbmc6ICAgMjAxOS0wMS0zMFQwMTowMDowMFxuICAgICAgICAqKVxuICAgICAgICBTdHJpbmcubHNwbGl0Ml9leG4gfm9uOicuJyBzIHw+IFR1cGxlMi5nZXQxXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkIGF0dHJzID0gaWYgZGlzYWJsZWQgdGhlbiBBdHRyLmRpc2FibGVkIDo6IGF0dHJzIGVsc2UgYXR0cnNcbmxldCBhZGRfYXR0cnMgYXR0cnMnIGF0dHJzID0gYXR0cnMgQCBhdHRycycgfD4gQXR0cnMubWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXG5cbmxldCBtZXJnZSA9IGZ1bmN0aW9uXG4gIHwgTWVyZ2VfYmVoYXZpb3IuTWVyZ2UgLT4gQXR0ci5tYW55XG4gIHwgTGVnYWN5X2RvbnRfbWVyZ2UgLT4gQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2Vcbjs7XG5cbmxldCBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgID8ob3JpZW50YXRpb24gPSBgVmVydGljYWwpXG4gICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICBhdHRyc1xuICAgICAgY2hpbGRyZW5cbiAgPVxuICBsZXQgbGF5b3V0X3N0eWxlID1cbiAgICBtYXRjaCBvcmllbnRhdGlvbiB3aXRoXG4gICAgfCBgVmVydGljYWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgQmxvY2spXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBJbmxpbmVfYmxvY2spXG4gIGluXG4gIE5vZGUudWxcbiAgICB+YXR0cnM6XG4gICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAoWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwibGlzdC1zdHlsZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiBtYXJnaW5fbGVmdCAoYFB4IDApKVxuICAgICAgICAgICBdXG4gICAgICAgICAgIHw+IGFkZF9hdHRycyBhdHRycylcbiAgICAgIF1cbiAgICAoTGlzdC5tYXAgY2hpbGRyZW4gfmY6KGZ1biBjaGlsZCAtPlxuICAgICAgIE5vZGUubGkgfmF0dHJzOlsgQXR0ci5zdHlsZSBsYXlvdXRfc3R5bGUgXSBbIGNoaWxkIF0pKVxuOztcblxubW9kdWxlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZSA9IEpzX29mX29jYW1sLkpzLlVuc2FmZVxuICBvcGVuIEpzX29mX29jYW1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcblxuICBsZXQgaXNfYWN0aXZlIGVsZW1lbnQgPVxuICAgIGxldCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudCA9IFVuc2FmZS5nZXQgZG9jdW1lbnQgKEpzLnN0cmluZyBcImFjdGl2ZUVsZW1lbnRcIikgaW5cbiAgICBwaHlzX2VxdWFsIGVsZW1lbnQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnRcbiAgOztcblxuICBsZXQgdmFsdWVfcHJvcGVydHkgPSBKcy5zdHJpbmcgXCJ2YWx1ZVwiXG4gIGxldCBnZXRfdmFsdWUgZWxlbWVudCA6ICdhIEpzLnQgPSBVbnNhZmUuZ2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHlcbiAgbGV0IHNldF92YWx1ZSBlbGVtZW50IHZhbHVlID0gVW5zYWZlLnNldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5IHZhbHVlXG5cbiAgbGV0IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mID1cbiAgICAoKiBUaGlzIGV2ZW50IGhhbmRsZXIgbm9ybWFsaXplcyB0aGUgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgb24gdGhlIFtjaGFuZ2VdIGV2ZW50LlxuICAgICAgIEZvciBhIHRleHQgZW50cnksIHRoaXMgbWVhbnMgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGVudGVyLCBhbmQgd2hlbiB0aGUgdXNlciBibHVyc1xuICAgICAgIHRoZSBlbGVtZW50LiBXaHkgZG9uJ3Qgd2Ugc2ltcGx5IFt0b19zdHJpbmddIHRoZSB2YWx1ZSBpbiB0aGUgbW9kZWw/IEJlY2F1c2UgZm9yXG4gICAgICAgc29tZSBpbnB1dCBlbGVtZW50cywgeW91IGNhbiBoYXZlIGEgY2hhbmdlIGV2ZW50IHRoYXQgZmlyZXMgYWZ0ZXIgdGhlIHZhbHVlIGNoYW5nZXNcbiAgICAgICBidXQgYmVmb3JlIFtJbmNyX2RvbV0gY2FuIHVwZGF0ZSB0aGUgbW9kZWwuIEZvciBleGFtcGxlLCB0aGlzIGhhcHBlbnMgd2hlbiB5b3VcbiAgICAgICBwcmVzcyB0aGUgdXAgYXJyb3cgb24gYSBudW1iZXIgaW5wdXQuIFRoaXMgbGVhZHMgdG8gYSBidWcgd2hlcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgICAgIG1vZGVsIHN3YXBzIGJhY2sgYW5kIGZvcnRoIHdpdGggdGhlIHZhbHVlIGluIHRoZSBlbGVtZW50LiAqKVxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciBfID1cbiAgICAgIGxldCB2YWx1ZSA9IEpzLnRvX3N0cmluZyAoZ2V0X3ZhbHVlIGVsZW1lbnQpIGluXG4gICAgICBPcHRpb24uaXRlciAoZiB2YWx1ZSkgfmY6KGZ1biBub3JtYWxpemVkIC0+XG4gICAgICAgIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgbm9ybWFsaXplZCkpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciA9IERvbS5oYW5kbGVyIGNoYW5nZV9oYW5kbGVyIGluXG4gICAgYWRkRXZlbnRMaXN0ZW5lciBlbGVtZW50IEV2ZW50LmNoYW5nZSBjaGFuZ2VfaGFuZGxlciBKcy5fZmFsc2VcbiAgOztcblxuICBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGV2ZW50X2lkIDogZXZlbnRfbGlzdGVuZXJfaWQgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHZhbHVlIDogc3RyaW5nXG4gICAgICAgIDsgZiA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIH1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB7IHZhbHVlOyBfIH0gPSBTZXhwLkF0b20gdmFsdWVcbiAgICAgIGxldCBjb21iaW5lIF9sZWZ0IHJpZ2h0ID0gcmlnaHRcbiAgICBlbmRcblxuICAgIGxldCBpbml0IHsgSW5wdXQudmFsdWU7IGYgfSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAoaXNfYWN0aXZlIGVsZW1lbnQpIHRoZW4gc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyB2YWx1ZSk7XG4gICAgICBsZXQgZXZlbnRfaWQgPSBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiBpblxuICAgICAgeyBTdGF0ZS5ldmVudF9pZCB9XG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcblxuICAgIGxldCBkZXN0cm95IF9pbnB1dCB7IFN0YXRlLmV2ZW50X2lkIH0gX2VsZW1lbnQgPSByZW1vdmVFdmVudExpc3RlbmVyIGV2ZW50X2lkXG4gICAgW0BAb2NhbWwud2FybmluZ1xuICAgICAgIFwiLTY4XCJdXG4gICAgOztcblxuICAgIGxldCB1cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0IHN0YXRlIGVsZW1lbnQgPVxuICAgICAgZGVzdHJveSBvbGRfaW5wdXQgc3RhdGUgZWxlbWVudDtcbiAgICAgIGxldCB7IFN0YXRlLmV2ZW50X2lkIH0gPSBpbml0IG5ld19pbnB1dCBlbGVtZW50IGluXG4gICAgICBzdGF0ZS5TdGF0ZS5ldmVudF9pZCA8LSBldmVudF9pZFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgQXR0ci5Ib29rcy5NYWtlIChNKVxuXG4gICgqIFtjcmVhdGUgdmFsdWUgfmZdIHdpbGwgc2V0IHRoZSBcInZhbHVlXCIgcHJvcGVydHkgdG8gW3ZhbHVlXSBpZiB0aGUgZWxlbWVudCBpcyBub3RcbiAgICAgZm9jdXNlZCBhbmQgb24gZWFjaCBjaGFuZ2UsIHJ1biB0aGUgY3VycmVudCB2YWx1ZSB0aHJvdWdoIFtmXSB0byByZS1zZXQgaXQuIEFnYWluLFxuICAgICB0aGlzIG9ubHkgaGFwcGVucyBpZiB0aGUgZWxlbWVudCBpcyBub3QgZm9jdXNlZC4gSWYgW2ZdIHJldHVybnMgW05vbmVdLCBubyBjaGFuZ2VcbiAgICAgdGFrZXMgcGxhY2UuICopXG4gIGxldCBjcmVhdGUgdmFsdWUgfmYgPSBBdHRyLmNyZWF0ZV9ob29rIFwidmFsdWU6bm9ybWFsaXplZFwiIChjcmVhdGUgeyB2YWx1ZTsgZiB9KVxuZW5kXG5cbm1vZHVsZSBEcm9wZG93biA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZXh0cmFfb3B0aW9uX2F0dHJzID0gRm4uY29uc3QgW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgTm9kZS5zZWxlY3RcbiAgICAgIH5hdHRyczpcbiAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAoWyBBdHRyLmNsYXNzXyBcIndpZGdldC1kcm9wZG93blwiXG4gICAgICAgICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIF8gdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgb25fY2hhbmdlIChJbnQub2Zfc3RyaW5nIHZhbHVlIHw+IExpc3QubnRoX2V4biB2YWx1ZXMpKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgIChMaXN0Lm1hcGkgdmFsdWVzIH5mOihmdW4gaW5kZXggdmFsdWUgLT5cbiAgICAgICAgIE5vZGUub3B0aW9uXG4gICAgICAgICAgIH5hdHRyczpcbiAgICAgICAgICAgICAoWyBBdHRyLnZhbHVlIChJbnQudG9fc3RyaW5nIGluZGV4KVxuICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcInNlbGVjdGVkXCIgKGVxdWFsIHZhbHVlIHNlbGVjdGVkKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIEAgZXh0cmFfb3B0aW9uX2F0dHJzIHZhbHVlKVxuICAgICAgICAgICBbIE5vZGUudGV4dCAodG9fc3RyaW5nIHZhbHVlKSBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpNLmVxdWFsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG5cbiAgbGV0IG9mX3ZhbHVlc19vcHRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIChtb2R1bGUgTSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIHZhbHVlcyB+ZjpPcHRpb24uc29tZSBpblxuICAgIGxldCB0b19zdHJpbmcgPSBPcHRpb24udmFsdWVfbWFwIH5kZWZhdWx0OnBsYWNlaG9sZGVyIH5mOk0udG9fc3RyaW5nIGluXG4gICAgbGV0IGV4dHJhX29wdGlvbl9hdHRycyA9XG4gICAgICBPcHRpb24ubWFwIGV4dHJhX29wdGlvbl9hdHRycyB+ZjooZnVuIGYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSB2YWx1ZSAtPiBmIHZhbHVlKVxuICAgIGluXG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOlslZXF1YWw6IE0udCBvcHRpb25dXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZXh0cmFfb3B0aW9uX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW0gd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgTS5hbGxcbiAgICAgIH5lcXVhbDpNLmVxdWFsXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5vbl9jaGFuZ2VcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBvZl9lbnVtX29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2V4dHJhX29wdGlvbl9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIE0uYWxsIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6cGxhY2Vob2xkZXIgfmY6TS50b19zdHJpbmcgaW5cbiAgICBsZXQgZXh0cmFfb3B0aW9uX2F0dHJzID1cbiAgICAgIE9wdGlvbi5tYXAgZXh0cmFfb3B0aW9uX2F0dHJzIH5mOihmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIHZhbHVlIC0+IGYgdmFsdWUpXG4gICAgaW5cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9leHRyYV9vcHRpb25fYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgdmFsdWVzXG4gICAgICB+ZXF1YWw6WyVlcXVhbDogTS50IG9wdGlvbl1cbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIFNlbGVjdGFibGVfc3R5bGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5hdGl2ZVxuICAgIHwgQnV0dG9uX2xpa2Ugb2YgeyBleHRyYV9hdHRycyA6IGNoZWNrZWQ6Ym9vbCAtPiBBdHRyLnQgbGlzdCB9XG5cbiAgbGV0IGJhcmVib25lc19idXR0b25fbGlrZSA9XG4gICAgQnV0dG9uX2xpa2VcbiAgICAgIHsgZXh0cmFfYXR0cnMgPVxuICAgICAgICAgIChmdW4gfmNoZWNrZWQgLT5cbiAgICAgICAgICAgICBpZiBjaGVja2VkXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgWyBBdHRyLnN0eWxlXG4gICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICBib3JkZXIgfndpZHRoOihgUHggMSkgfmNvbG9yOihgSGV4IFwiI0QwRDBEMFwiKSB+c3R5bGU6YFNvbGlkICgpXG4gICAgICAgICAgICAgICAgICAgICBAPiBiYWNrZ3JvdW5kX2NvbG9yIChgSGV4IFwiIzQwNDA0MFwiKVxuICAgICAgICAgICAgICAgICAgICAgQD4gY29sb3IgKGBIZXggXCIjRjdGN0Y3XCIpKVxuICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgIENzc19nZW4uKFxuICAgICAgICAgICAgICAgICAgICAgYm9yZGVyIH53aWR0aDooYFB4IDEpIH5jb2xvcjooYEhleCBcIiNEMEQwRDBcIikgfnN0eWxlOmBTb2xpZCAoKVxuICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiNFRkVGRUZcIikpXG4gICAgICAgICAgICAgICBdKVxuICAgICAgfVxuICA7O1xuXG4gIGxldCBoaWRlX25hdGl2ZV9pbnB1dHMgPVxuICAgIENzc19nZW4uKGNyZWF0ZSB+ZmllbGQ6XCJhcHBlYXJhbmNlXCIgfnZhbHVlOlwibm9uZVwiIEA+IHVuaWZvcm1fbWFyZ2luIChgUHggMCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrYm94ID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+bGFiZWxcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUubGFiZWxcbiAgICAgIH5hdHRyczpbIChtZXJnZSBtZXJnZV9iZWhhdmlvcikgZXh0cmFfYXR0cnMgXVxuICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImNoZWNrYm94XCJcbiAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fdG9nZ2xlKVxuICAgICAgICAgICAgIDsgQXR0ci5ib29sX3Byb3BlcnR5IFwiY2hlY2tlZFwiIGlzX2NoZWNrZWRcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkKVxuICAgICAgICAgICgpXG4gICAgICA7IE5vZGUudGV4dCBsYWJlbFxuICAgICAgXVxuICA7O1xuXG4gIGxldCBzaW1wbGVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5sYWJlbFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUuZGl2XG4gICAgICB+YXR0cnM6WyBBdHRyLmNsYXNzXyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF1cbiAgICAgIFsgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIH5pc19jaGVja2VkIH5sYWJlbCB+b25fdG9nZ2xlIH5tZXJnZV9iZWhhdmlvciAoKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrbGlzdCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KHN0eWxlID0gU2VsZWN0YWJsZV9zdHlsZS5OYXRpdmUpXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/bGF5b3V0XG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+aXNfY2hlY2tlZFxuICAgICAgICB+b25fdG9nZ2xlXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPlxuICAgICAgICBbIEF0dHIuc3R5bGUgU2VsZWN0YWJsZV9zdHlsZS5oaWRlX25hdGl2ZV9pbnB1dHMgXSwgZXh0cmFfYXR0cnNcbiAgICBpblxuICAgIHN0cnVjdHVyYWxfbGlzdFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gICAgICA/b3JpZW50YXRpb246bGF5b3V0XG4gICAgICAoWyBBdHRyLmNsYXNzZXMgWyBcIndpZGdldC1jaGVja2xpc3RcIjsgXCJjaGVja2JveC1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAgICAgIChleHRyYV9hdHRycyBAIGxhYmVsX2F0dHJzIH5jaGVja2VkOihpc19jaGVja2VkIGl0ZW0pKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cnM6XG4gICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICA7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fdG9nZ2xlIGl0ZW0pXG4gICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiAoaXNfY2hlY2tlZCBpdGVtKVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgQCBpbnB1dF9hdHRyc1xuICAgICAgICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkKVxuICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgOyBOb2RlLnRleHQgKHRvX3N0cmluZyBpdGVtKVxuICAgICAgICAgICBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9sYXlvdXRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBEaXNwbGF5IHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP3N0eWxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP2xheW91dFxuICAgICAgdmFsdWVzXG4gICAgICB+aXNfY2hlY2tlZFxuICAgICAgfm9uX3RvZ2dsZVxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/c3R5bGVcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICBNLmFsbFxuICAgICAgfmlzX2NoZWNrZWRcbiAgICAgIH5vbl90b2dnbGVcbiAgICAgIH50b19zdHJpbmc6TS50b19zdHJpbmdcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9fYWN0aW9uXG4gICAgICB8IENsZWFyX2FsbFxuICAgICAgfCBTZWxlY3RfYWxsXG4gIGVuZFxuXG4gIGxldCBpbXBsXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/KHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IuTm9fYWN0aW9uKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP3NpemVcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICA9XG4gICAgbGV0IG9wZW4gSnNfb2Zfb2NhbWwgaW5cbiAgICBsZXQgc2l6ZSA9IE9wdGlvbi52YWx1ZSBzaXplIH5kZWZhdWx0OihMaXN0Lmxlbmd0aCB2YWx1ZXMpIGluXG4gICAgbGV0IGF0dHJzID1cbiAgICAgIFsgQXR0ci5jcmVhdGUgXCJtdWx0aXBsZVwiIFwiXCJcbiAgICAgIDsgQXR0ci5jcmVhdGUgXCJzaXplXCIgKEludC50b19zdHJpbmcgc2l6ZSlcbiAgICAgIDsgQXR0ci5vbl9jaGFuZ2UgKGZ1biBldnQgKF8gOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IHRhcmdldCA9XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBKcy5PcHQudG9fb3B0aW9uIChKcy5PcHQuYmluZCBldnQjIy50YXJnZXQgRG9tX2h0bWwuQ29lcmNlVG8uc2VsZWN0KVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHRhcmdldCAtPiB0YXJnZXRcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgIFwiTXVsdGlfc2VsZWN0IFtvbl9jaGFuZ2VdIGV2ZW50IGZpcmVkIHdpdGggYSBtaXNzaW5nIHRhcmdldCBvciB0YXJnZXQgXFxcbiAgICAgICAgICAgICAgICAgdGhhdCB3YXMgbm90IGEgc2VsZWN0IGVsZW1lbnQuXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjb2xsZWN0aW9uX3RvX2xpc3QgY29sbGVjdGlvbiA9XG4gICAgICAgICAgICBMaXN0LmluaXQgY29sbGVjdGlvbiMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgSnMuT3B0LmdldCAoY29sbGVjdGlvbiMjaXRlbSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb3B0aW9ucyA9IGNvbGxlY3Rpb25fdG9fbGlzdCB0YXJnZXQjIy5vcHRpb25zIGluXG4gICAgICAgICAgbGV0IHNlbGVjdGVkX3ZhbHVlcyA9XG4gICAgICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKExpc3QuemlwX2V4biB2YWx1ZXMgb3B0aW9ucykgfmY6KGZ1biAodmFsdWUsIG9wdGlvbikgLT5cbiAgICAgICAgICAgICAgT3B0aW9uLnNvbWVfaWYgKEpzLnRvX2Jvb2wgb3B0aW9uIyMuc2VsZWN0ZWQpIHZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHNlbGVjdGVkX3ZhbHVlcykpXG4gICAgICBdXG4gICAgICBAIGV4dHJhX2F0dHJzXG4gICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICBpblxuICAgIGxldCBvcHRpb25zID1cbiAgICAgIExpc3QubWFwIHZhbHVlcyB+ZjooZnVuIHZhbHVlIC0+XG4gICAgICAgIGxldCBpc19zZWxlY3RlZCA9IFNldC5tZW0gc2VsZWN0ZWQgdmFsdWUgaW5cbiAgICAgICAgTm9kZS5vcHRpb25cbiAgICAgICAgICAoKiBbQXR0ci5ib29sX3Byb3BlcnR5XSBrZWVwcyB0aGUgc3RhdGUgb2YgdGhlIG9wdGlvbiBpbiBzeW5jIGJ5IHNldHRpbmcgdGhlIEpTXG4gICAgICAgICAgICAgcHJvcGVydHkuIFtBdHRyLnNlbGVjdGVkXSBtb2RpZmllcyB0aGUgRE9NIGF0dHJpYnV0ZSBzbyB0aGF0IHNlbGVjdGVkIG9wdGlvbnNcbiAgICAgICAgICAgICBjYW4gYmUgc3R5bGVkIHdpdGggQ1NTLiBbQXR0ci5zZWxlY3RlZF0gYWxvbmUgZG9lcyBub3QgdXBkYXRlIHRoZSBzdGF0ZVxuICAgICAgICAgICAgIHByb3Blcmx5IGlmIHRoZSBtb2RlbCBjaGFuZ2VzLCBzbyBib3RoIGFyZSBuZWVkZWQuICopXG4gICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgKFsgU29tZSAoQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiBpc19zZWxlY3RlZClcbiAgICAgICAgICAgICA7IFNvbWVcbiAgICAgICAgICAgICAgICAgKEF0dHIub25fY2xpY2sgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHdhc19yZXBlYXRlZF9jbGljayA9XG4gICAgICAgICAgICAgICAgICAgICAgKG5vdCAoSnMudG9fYm9vbCBldnQjIy5jdHJsS2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAmJiBTZXQuZXF1YWwgc2VsZWN0ZWQgKFNldC5zaW5nbGV0b24gKG1vZHVsZSBNKSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggd2FzX3JlcGVhdGVkX2NsaWNrLCByZXBlYXRlZF9jbGlja19iZWhhdmlvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgZmFsc2UsIF8gfCB0cnVlLCBOb19hY3Rpb24gLT4gRWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgICAgICAgICB8IHRydWUsIENsZWFyX2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgICAgICAgICAgICAgICB8IHRydWUsIFNlbGVjdF9hbGwgLT4gb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHZhbHVlcykpKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlcl9vcHQpXG4gICAgICAgICAgWyBOb2RlLnRleHQgKE0udG9fc3RyaW5nIHZhbHVlKSBdKVxuICAgIGluXG4gICAgTm9kZS5zZWxlY3QgfmF0dHJzOlsgKG1lcmdlIG1lcmdlX2JlaGF2aW9yKSBhdHRycyBdIG9wdGlvbnNcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/c2l6ZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTGVnYWN5X2RvbnRfbWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIHZhbHVlc1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgb2ZfZW51bVxuICAgICAgICAodHlwZSB0IGNtcClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3NpemVcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtX3NldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9yZXBlYXRlZF9jbGlja19iZWhhdmlvclxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/c2l6ZVxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgTS5hbGxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfm9uX2NoYW5nZVxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5lbmRcblxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIG1vZHVsZSBDYWxsX29uX2lucHV0X3doZW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBUZXh0X2NoYW5nZWRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdFxuXG4gICAgbGV0IGxpc3RlbmVyID0gZnVuY3Rpb25cbiAgICAgIHwgVGV4dF9jaGFuZ2VkIC0+IEF0dHIub25faW5wdXRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdCAtPiBBdHRyLm9uX2NoYW5nZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBub3JtYWxpemUgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TKSBzID1cbiAgICBtYXRjaCBNLnRvX3N0cmluZyAoTS5vZl9zdHJpbmcgcykgd2l0aFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gU29tZSBcIlwiXG4gICAgfCB2IC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuIGF0dHJzID1cbiAgICBtYXRjaCBvbl9yZXR1cm4gd2l0aFxuICAgIHwgTm9uZSAtPiBhdHRyc1xuICAgIHwgU29tZSBvbl9yZXR1cm4gLT5cbiAgICAgIEF0dHIub25fa2V5ZG93biAoZnVuIGV2IC0+XG4gICAgICAgIGlmIGV2IyMua2V5Q29kZSA9IDEzIHRoZW4gb25fcmV0dXJuICgpIGVsc2UgRWZmZWN0Lklnbm9yZSlcbiAgICAgIDo6IGF0dHJzXG4gIDs7XG5cbiAgbGV0IGlucHV0X25vZGVcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8ocGxhY2Vob2xkZXIgPSBcIlwiKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIGF0dHJzXG4gICAgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyczpcbiAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAoYXR0cnNcbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnNcbiAgICAgICAgICAgICAgICAgIFsgQXR0ci5wbGFjZWhvbGRlciBwbGFjZWhvbGRlcjsgQXR0ci5jcmVhdGUgXCJzcGVsbGNoZWNrXCIgXCJmYWxzZVwiIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IHJhd1xuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBbIEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB2YWx1ZTsgQXR0ci5vbl9pbnB1dCAoZnVuIF9ldiAtPiBvbl9pbnB1dCkgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8oc2hvdWxkX25vcm1hbGl6ZSA9IHRydWUpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnR5cGVfYXR0cnNcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbGV0IHZhbHVlID0gT3B0aW9uLnZhbHVlX21hcCB+ZjpNLnRvX3N0cmluZyB2YWx1ZSB+ZGVmYXVsdDpcIlwiIGluXG4gICAgICBpZiBzaG91bGRfbm9ybWFsaXplXG4gICAgICB0aGVuIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihub3JtYWxpemUgKG1vZHVsZSBNKSlcbiAgICAgIGVsc2UgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KGNvbnN0IE5vbmUpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IG9uX2lucHV0IE5vbmVcbiAgICAgICAgfCBzIC0+IG9uX2lucHV0IChPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBNLm9mX3N0cmluZyBzKSkpXG4gICAgOyB2YWx1ZVxuICAgIF1cbiAgICB8PiBhZGRfYXR0cnMgdHlwZV9hdHRyc1xuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ2FibGVcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRleHRcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlZFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID9vbl9yZXR1cm5cbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICAobW9kdWxlIE0gOiBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgPVxuICAgIGxldCAobW9kdWxlIFYpID0gVmFsaWRhdGVkLmxpZnQgKG1vZHVsZSBNKSBpblxuICAgIGxldCB2YWx1ZV9hdHRyID1cbiAgICAgIG1hdGNoICh2YWx1ZSA6IFYudCkgd2l0aFxuICAgICAgfCBJbml0aWFsIC0+IEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiBcIlwiXG4gICAgICB8IF8gLT4gVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgKFYudG9fc3RyaW5nIHZhbHVlKSB+Zjoobm9ybWFsaXplIChtb2R1bGUgVikpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgcyAtPlxuICAgICAgICBvbl9pbnB1dCAoVi5vZl9zdHJpbmcgcykpXG4gICAgOyB2YWx1ZV9hdHRyXG4gICAgOyBBdHRyLnR5cGVfIFwidGV4dFwiXG4gICAgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBtYXliZV9pbnZhbGlkIHZhbHVlXG4gICAgfD4gaW5wdXRfbm9kZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgdGV4dFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBvZl9zdHJpbmdhYmxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgcGFzc3dvcmRcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgU3RyaW5nKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwicGFzc3dvcmRcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IG51bWJlclxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5zdGVwXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwibnVtYmVyXCI7IEF0dHIuY3JlYXRlX2Zsb2F0IFwic3RlcFwiIHN0ZXAgXVxuICAgICAgfnZhbHVlXG4gICAgICB+b25faW5wdXRcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuXG4gIGxldCByYW5nZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5zdGVwXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwicmFuZ2VcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHRpbWVcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgVGltZV9jb21wYXQuT2ZkYXkpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGltZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgOztcblxuICBsZXQgZGF0ZVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBEYXRlKVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IGRhdGV0aW1lX2xvY2FsXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgP3V0Y19vZmZzZXRcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIGxldCBob3VycyA9XG4gICAgICAoKiBJbiB0ZXN0cywgd2UgdXNlIFVUQyBhcyB0aGUgbG9jYWwgdGltZXpvbmUgKGkuZS4gb2Zmc2V0IDApLiBUaGlzIHByZXZlbnRzIGNoYW5nZXNcbiAgICAgICAgIGJldHdlZW4gdGVzdCBvdXRwdXQgYXJvdW5kIGRheWxpZ2h0IHNhdmluZ3MgdGltZSwgYW5kIGlmIFt1dGNfb2Zmc2V0XSBpc24ndFxuICAgICAgICAgc3VwcGxpZWQsIHRoZW4gY2FsbGVycyBzaG91bGQgYmUgaW5kaWZmZXJlbnQgdG8gd2hhdCBvZmZzZXQgZ2V0cyB1c2VkIGhlcmUuICopXG4gICAgICBtYXRjaCBDb3JlLmFtX3J1bm5pbmdfdGVzdCB8fCBQcHhfaW5saW5lX3Rlc3RfbGliLmFtX3J1bm5pbmcgd2l0aFxuICAgICAgfCB0cnVlIC0+IDBcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgT3B0aW9uLnZhbHVlX21hcFxuICAgICAgICAgIHV0Y19vZmZzZXRcbiAgICAgICAgICAoKiBnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSB0aW1lIHpvbmUgZGlmZmVyZW5jZSwgaW4gbWludXRlcywgZnJvbSBjdXJyZW50XG4gICAgICAgICAgICAgbG9jYWxlIHRvIFVUQy4gVXRjIG9mZnNldCBpcyB0aGUgZGlmZmVyZW5jZSBmcm9tIFVUQyB0byBjdXJyZW50IGxvY2FsZSB3aGljaFxuICAgICAgICAgICAgIGlzIHdoZXJlIHRoZSBtaW51cyBjb21lcyBmcm9tLlxuXG4gICAgICAgICAgICAgVGhlIG1pbnV0ZXMgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gaG91cnMgc2luY2UgdGhhdCBpcyB0aGUgZm9ybWF0XG4gICAgICAgICAgICAgVGltZS5ab25lLm9mX3V0Y19vZmZzZXQgZXhwZWN0cyBmb3IgdGhlIHV0Y19vZmZzZXQuICopXG4gICAgICAgICAgfmRlZmF1bHQ6KChuZXclanMgSnNfb2Zfb2NhbWwuSnMuZGF0ZV9ub3cpIyNnZXRUaW1lem9uZU9mZnNldCAvIC02MClcbiAgICAgICAgICB+ZjooZnVuIHV0Y19vZmZzZXQgLT4gVGltZV9ucy5TcGFuLnRvX2hyIHV0Y19vZmZzZXQgfD4gRmxvYXQudG9faW50KVxuICAgIGluXG4gICAgbGV0IChtb2R1bGUgWm9uZWRfdGltZSkgPSBUaW1lX2NvbXBhdC56b25lZCAoVGltZV9mbG9hdC5ab25lLm9mX3V0Y19vZmZzZXQgfmhvdXJzKSBpblxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFpvbmVkX3RpbWUpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRldGltZS1sb2NhbFwiIF1cbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICAgICAgfm1lcmdlX2JlaGF2aW9yXG4gIDs7XG5cbiAgbGV0IHRleHRfYXJlYVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHBsYWNlaG9sZGVyID0gXCJcIilcbiAgICAgICAgPyhtZXJnZV9iZWhhdmlvciA9IE1lcmdlX2JlaGF2aW9yLk1lcmdlKVxuICAgICAgICB+dmFsdWVcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUudGV4dGFyZWFcbiAgICAgIH5hdHRyczpcbiAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAoWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgIG9uX2lucHV0IHZhbHVlKVxuICAgICAgICAgICAgIDsgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6T3B0aW9uLnJldHVyblxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgIFtdXG4gIDs7XG5cbiAgKCogQWNjb3JkaW5nIHRvXG4gICAgIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dC9jb2xvciNWYWx1ZSB0aGVcbiAgICAgdmFsdWUgbXVzdCBiZSBzZXQgaW4gaGV4IGZvcm1hdCBhbmQgd2lsbCBhbHdheXMgY29tZXMgYmFjayBpbiBoZXggZm9ybWF0LiAqKVxuICBsZXQgY29sb3JfcGlja2VyXG4gICAgICAgID8oZXh0cmFfYXR0ciA9IEF0dHIuZW1wdHkpXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgKGBIZXggdmFsdWVfKSA9IHZhbHVlIGluXG4gICAgWyBBdHRyLih0eXBlXyBcImNvbG9yXCIgQCB2YWx1ZV9wcm9wIHZhbHVlXyBAIGV4dHJhX2F0dHIpXG4gICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT4gb25faW5wdXQgKGBIZXggcykpXG4gICAgXVxuICAgIHw+IGlucHV0X25vZGUgP2Rpc2FibGVkIH5tZXJnZV9iZWhhdmlvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdXR0b24gPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfdmFsaWRhdGlvblxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgdGV4dFxuICAgICAgICB+dmFsaWRhdGlvblxuICAgICAgICB+b25fY2xpY2tcbiAgICA9XG4gICAgbWF0Y2ggdmFsaWRhdGlvbiB3aXRoXG4gICAgfCBPayByZXN1bHQgLT5cbiAgICAgIE5vZGUuYnV0dG9uXG4gICAgICAgIH5hdHRyczpcbiAgICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgICAgKFsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayByZXN1bHQpOyBBdHRyLnR5cGVfIFwiYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICAgIF1cbiAgICAgICAgWyBOb2RlLnRleHQgdGV4dCBdXG4gICAgfCBFcnJvciByZWFzb24gLT5cbiAgICAgIE5vZGUuYnV0dG9uXG4gICAgICAgIH5hdHRyczpcbiAgICAgICAgICBbIChtZXJnZSBtZXJnZV9iZWhhdmlvcilcbiAgICAgICAgICAgICAgKFsgQXR0ci5kaXNhYmxlZFxuICAgICAgICAgICAgICAgOyBBdHRyLnR5cGVfIFwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwXCIgcmVhc29uXG4gICAgICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwidG9vbHRpcC1wb3NpdGlvblwiIFwidG9wXCJcbiAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgICAgICBdXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuXG4gIGxldCBzaW1wbGVcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGRpc2FibGVkID0gZmFsc2UpXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgdGV4dFxuICAgICAgICB+b25fY2xpY2tcbiAgICA9XG4gICAgTm9kZS5idXR0b25cbiAgICAgIH5hdHRyczpcbiAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiYnV0dG9uXCI7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgKCkpIF1cbiAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYWRpb19idXR0b25zID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHN0eWxlIDogU2VsZWN0YWJsZV9zdHlsZS50ID0gTmF0aXZlKVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIH5vcmllbnRhdGlvblxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH50b19zdHJpbmdcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBsZXQgaW5wdXRfYXR0cnMsIGxhYmVsX2F0dHJzID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTmF0aXZlIC0+IFtdLCBmdW4gfmNoZWNrZWQ6XyAtPiBbXVxuICAgICAgfCBCdXR0b25fbGlrZSB7IGV4dHJhX2F0dHJzIH0gLT5cbiAgICAgICAgWyBBdHRyLnN0eWxlIFNlbGVjdGFibGVfc3R5bGUuaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5tZXJnZV9iZWhhdmlvclxuICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAoWyBBdHRyLmNsYXNzZXMgWyBcIndpZGdldC1yYWRpby1idXR0b25zXCI7IFwicmFkaW8tYnV0dG9uLWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBsZXQgY2hlY2tlZCA9IE9wdGlvbi52YWx1ZV9tYXAgc2VsZWN0ZWQgfmRlZmF1bHQ6ZmFsc2UgfmY6KGVxdWFsIGl0ZW0pIGluXG4gICAgICAgICBOb2RlLmxhYmVsXG4gICAgICAgICAgIH5hdHRyczpbIChtZXJnZSBtZXJnZV9iZWhhdmlvcikgKGxhYmVsX2F0dHJzIH5jaGVja2VkKSBdXG4gICAgICAgICAgIFsgTm9kZS5pbnB1dFxuICAgICAgICAgICAgICAgfmF0dHJzOlxuICAgICAgICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgOyBBdHRyLm5hbWUgbmFtZVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLmNsYXNzZXMgWyBcInJhZGlvLWJ1dHRvblwiIF1cbiAgICAgICAgICAgICAgICAgIDsgQXR0ci5vbl9jbGljayAoZnVuIF9ldiAtPiBvbl9jbGljayBpdGVtKVxuICAgICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJjaGVja2VkXCIgY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgQCBpbnB1dF9hdHRyc1xuICAgICAgICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkKVxuICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgOyBOb2RlLnRleHQgKHRvX3N0cmluZyBpdGVtKVxuICAgICAgICAgICBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgKG1vZHVsZSBFIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB+bmFtZVxuICAgICAgICB+b25fY2xpY2tcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIHZhbHVlc1xuICAgID1cbiAgICBpbXBsXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3N0eWxlXG4gICAgICB+b3JpZW50YXRpb246YFZlcnRpY2FsXG4gICAgICB+bmFtZVxuICAgICAgfm9uX2NsaWNrXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6RS50b19zdHJpbmdcbiAgICAgIH5lcXVhbDpFLmVxdWFsXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgIHZhbHVlc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNfaG9yaXpvbnRhbFxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zdHlsZVxuICAgICAgICA/KG1lcmdlX2JlaGF2aW9yID0gTWVyZ2VfYmVoYXZpb3IuTWVyZ2UpXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBIb3Jpem9udGFsXG4gICAgICB+bmFtZVxuICAgICAgfm9uX2NsaWNrXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6RS50b19zdHJpbmdcbiAgICAgIH5lcXVhbDpFLmVxdWFsXG4gICAgICB+bWVyZ2VfYmVoYXZpb3JcbiAgICAgIHZhbHVlc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBGaWxlX3NlbGVjdCA9IHN0cnVjdFxuICBtb2R1bGUgSnMgPSBKc19vZl9vY2FtbC5Kc1xuXG4gIGxldCBhY2NlcHRfYXR0cnMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBBdHRyLmVtcHR5XG4gICAgfCBTb21lIGFjY2VwdHMgLT5cbiAgICAgIEF0dHIuY3JlYXRlXG4gICAgICAgIFwiYWNjZXB0XCJcbiAgICAgICAgKExpc3QubWFwIGFjY2VwdHMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgIHwgYEV4dGVuc2lvbiBzIC0+IGlmIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OlwiLlwiIHRoZW4gcyBlbHNlIFwiLlwiIF4gc1xuICAgICAgICAgICB8IGBNaW1ldHlwZSBzIC0+IHMpXG4gICAgICAgICB8PiBTdHJpbmcuY29uY2F0IH5zZXA6XCIsXCIpXG4gIDs7XG5cbiAgbGV0IGxpc3RcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/YWNjZXB0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyczpcbiAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiZmlsZVwiXG4gICAgICAgICAgICAgOyBhY2NlcHRfYXR0cnMgYWNjZXB0XG4gICAgICAgICAgICAgOyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgICAgICAgIDsgQXR0ci5vbl9maWxlX2lucHV0IChmdW4gX2V2IGZpbGVfbGlzdCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPVxuICAgICAgICAgICAgICAgICAgIExpc3QuaW5pdCBmaWxlX2xpc3QjIy5sZW5ndGggfmY6KGZ1biBpIC0+XG4gICAgICAgICAgICAgICAgICAgICBmaWxlX2xpc3QjI2l0ZW0gaVxuICAgICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlX2V4biB+bWVzc2FnZTpbJXN0cmluZyBcImNvdWxkbid0IGdldCBmaWxlICV7aSNJbnR9XCJdKVxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBvbl9pbnB1dCBmaWxlcylcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKVxuICAgICAgICBdXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBzaW5nbGVcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/YWNjZXB0XG4gICAgICAgID8obWVyZ2VfYmVoYXZpb3IgPSBNZXJnZV9iZWhhdmlvci5NZXJnZSlcbiAgICAgICAgfm9uX2lucHV0XG4gICAgICAgICgpXG4gICAgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyczpcbiAgICAgICAgWyAobWVyZ2UgbWVyZ2VfYmVoYXZpb3IpXG4gICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiZmlsZVwiXG4gICAgICAgICAgICAgOyBhY2NlcHRfYXR0cnMgYWNjZXB0XG4gICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgIGxldCBmaWxlID0gZmlsZV9saXN0IyNpdGVtIDAgfD4gSnMuT3B0LnRvX29wdGlvbiBpblxuICAgICAgICAgICAgICAgICBvbl9pbnB1dCBmaWxlKVxuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAgIF1cbiAgICAgICgpXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgKEMpIEplYW4tQ2hyaXN0b3BoZSBGaWxsaWF0cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgICAgKilcbigqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgKilcbigqICBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nICAgICAgICAgICAgKilcbigqICBkZXNjcmliZWQgaW4gZmlsZSBMSUNFTlNFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgKilcbigqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKilcbigqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCpzIE1hcHMgb2YgaW50ZWdlcnMgaW1wbGVtZW50ZWQgYXMgUGF0cmljaWEgdHJlZXMsIGZvbGxvd2luZyBDaHJpc1xuICAgIE9rYXNha2kgYW5kIEFuZHJldyBHaWxsJ3MgcGFwZXIge1xcZW0gRmFzdCBNZXJnZWFibGUgSW50ZWdlciBNYXBzfVxuICAgICh7XFx0dFxcc21hbGwgaHR0cDovL3d3dy5jcy5jb2x1bWJpYS5lZHUvXFx+e31jZG8vcGFwZXJzLmh0bWxcXCNtbDk4bWFwc30pLlxuICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBtb2R1bGUgW1B0c2V0XSB3aGljaCBpcyBhbHNvIGJhc2VkIG9uIHRoZVxuICAgIHNhbWUgZGF0YS1zdHJ1Y3R1cmUuICopXG5cbnR5cGUga2V5ID0gaW50XG5cbnR5cGUgJ2EgdCA9XG4gIHwgRW1wdHlcbiAgfCBMZWFmIG9mIGludCAqICdhXG4gIHwgQnJhbmNoIG9mIGludCAqIGludCAqICdhIHQgKiAnYSB0XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSB0ID0gdCA9IEVtcHR5XG5cbmxldCB6ZXJvX2JpdCBrIG0gPSAoayBsYW5kIG0pID09IDBcblxubGV0IHJlYyBtZW0gayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBMZWFmIChqLF8pIC0+IGsgPT0galxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gbWVtIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgcmVjIGZpbmQgayA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBrID09IGogdGhlbiB4IGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBtLCBsLCByKSAtPiBmaW5kIGsgKGlmIHplcm9fYml0IGsgbSB0aGVuIGwgZWxzZSByKVxuXG5sZXQgZmluZF9vcHQgayBtID0gdHJ5IFNvbWUgKGZpbmQgayBtKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbigqIE5vdGU6IGZpbmRfZmlyc3QvbGFzdCBoYXZlIHRvIGxvb2sgaW4gYm90aCBzdWJ0cmVlc1xuICAgYXMgdGhlc2UgYXJlIGxpdHRsZS1lbmRpYW4gUGF0cmljaWEgdHJlZXMgKilcbmxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9maXJzdF9vcHQgZiBsLCBmaW5kX2ZpcnN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+XG4gICAgICAgIGlmIGxrIDwgcmsgdGhlbiBTb21lIChsayxsdikgZWxzZSBTb21lIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiBTb21lIHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuXG5sZXQgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPiBpZiBsayA8IHJrIHRoZW4gKGxrLGx2KSBlbHNlIChyayxydilcbiAgICB8IFNvbWUgdiwgTm9uZSB8IE5vbmUsIFNvbWUgdiAtPiB2XG4gICAgfCBOb25lLCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGoseCkgLT4gaWYgZiBqIHRoZW4gU29tZSAoaix4KSBlbHNlIE5vbmVcbiAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+XG4gICAgbWF0Y2ggZmluZF9sYXN0X29wdCBmIGwsIGZpbmRfbGFzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA+IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIChqLHgpIGVsc2UgcmFpc2UgTm90X2ZvdW5kXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPiByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGxvd2VzdF9iaXQgeCA9IHggbGFuZCAoLXgpXG5cbmxldCBicmFuY2hpbmdfYml0IHAwIHAxID0gbG93ZXN0X2JpdCAocDAgbHhvciBwMSlcblxubGV0IG1hc2sgcCBtID0gcCBsYW5kIChtLTEpXG5cbmxldCBqb2luIChwMCx0MCxwMSx0MSkgPVxuICBsZXQgbSA9IGJyYW5jaGluZ19iaXQgcDAgcDEgaW5cbiAgaWYgemVyb19iaXQgcDAgbSB0aGVuXG4gICAgQnJhbmNoIChtYXNrIHAwIG0sIG0sIHQwLCB0MSlcbiAgZWxzZVxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MSwgdDApXG5cbmxldCBtYXRjaF9wcmVmaXggayBwIG0gPSAobWFzayBrIG0pID09IHBcblxubGV0IGFkZCBrIHggdCA9XG4gIGxldCByZWMgaW5zID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IExlYWYgKGsseClcbiAgICB8IExlYWYgKGosXykgYXMgdCAtPlxuICAgICAgaWYgaiA9PSBrIHRoZW4gTGVhZiAoayx4KSBlbHNlIGpvaW4gKGssIExlYWYgKGsseCksIGosIHQpXG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBCcmFuY2ggKHAsIG0sIGlucyB0MCwgdDEpXG5cdGVsc2Vcblx0ICBCcmFuY2ggKHAsIG0sIHQwLCBpbnMgdDEpXG4gICAgICBlbHNlXG5cdGpvaW4gKGssIExlYWYgKGsseCksIHAsIHQpXG4gIGluXG4gIGlucyB0XG5cbmxldCBzaW5nbGV0b24gayB2ID1cbiAgYWRkIGsgdiBlbXB0eVxuXG5sZXQgYnJhbmNoID0gZnVuY3Rpb25cbiAgfCAoXyxfLEVtcHR5LHQpIC0+IHRcbiAgfCAoXyxfLHQsRW1wdHkpIC0+IHRcbiAgfCAocCxtLHQwLHQxKSAgIC0+IEJyYW5jaCAocCxtLHQwLHQxKVxuXG5sZXQgcmVtb3ZlIGsgdCA9XG4gIGxldCByZWMgcm12ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT4gaWYgayA9PSBqIHRoZW4gRW1wdHkgZWxzZSB0XG4gICAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgYXMgdCAtPlxuICAgICAgaWYgbWF0Y2hfcHJlZml4IGsgcCBtIHRoZW5cblx0aWYgemVyb19iaXQgayBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHJtdiB0MCwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHQwLCBybXYgdDEpXG4gICAgICBlbHNlXG5cdHRcbiAgaW5cbiAgcm12IHRcblxubGV0IHJlYyBjYXJkaW5hbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGNhcmRpbmFsIHQwICsgY2FyZGluYWwgdDFcblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoayx4KSAtPiBmIGsgeFxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBpdGVyIGYgdDA7IGl0ZXIgZiB0MVxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiB4KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBCcmFuY2ggKHAsIG0sIG1hcCBmIHQwLCBtYXAgZiB0MSlcblxubGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoayx4KSAtPiBMZWFmIChrLCBmIGsgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXBpIGYgdDAsIG1hcGkgZiB0MSlcblxubGV0IHJlYyBmb2xkIGYgcyBhY2N1ID0gbWF0Y2ggcyB3aXRoXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHggYWNjdVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb2xkIGYgdDAgKGZvbGQgZiB0MSBhY2N1KVxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgKGssIHYpICAtPiBwIGsgdlxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBmb3JfYWxsIHAgdDAgJiYgZm9yX2FsbCBwIHQxXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaywgdikgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZXhpc3RzIHAgdDAgfHwgZXhpc3RzIHAgdDFcblxubGV0IHJlYyBmaWx0ZXIgcHIgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgTGVhZiAoaywgdikgYXMgdCAtPiBpZiBwciBrIHYgdGhlbiB0IGVsc2UgRW1wdHlcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gYnJhbmNoIChwLCBtLCBmaWx0ZXIgcHIgdDAsIGZpbHRlciBwciB0MSlcblxubGV0IHJlYyBmaWx0ZXJfbWFwIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIC0+IChtYXRjaCBwciBrIHYgd2l0aCBTb21lIHYnIC0+IExlYWYgKGssIHYnKSB8IE5vbmUgLT4gRW1wdHkpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyX21hcCBwciB0MCwgZmlsdGVyX21hcCBwciB0MSlcblxubGV0IHBhcnRpdGlvbiBwIHMgPVxuICBsZXQgcmVjIHBhcnQgKHQsZiBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IGFjY1xuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgcCBrIHYgdGhlbiAoYWRkIGsgdiB0LCBmKSBlbHNlICh0LCBhZGQgayB2IGYpXG4gICAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gcGFydCAocGFydCBhY2MgdDApIHQxXG4gIGluXG4gIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuXG5sZXQgcmVjIGNob29zZSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlIHQwICAgKCogd2Uga25vdyB0aGF0IFt0MF0gaXMgbm9uLWVtcHR5ICopXG5cbmxldCByZWMgY2hvb3NlX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLCBfLCB0MCwgXykgLT4gY2hvb3NlX29wdCB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgc3BsaXQgeCBtID1cbiAgbGV0IGNvbGwgayB2IChsLCBiLCByKSA9XG4gICAgaWYgayA8IHggdGhlbiBhZGQgayB2IGwsIGIsIHJcbiAgICBlbHNlIGlmIGsgPiB4IHRoZW4gbCwgYiwgYWRkIGsgdiByXG4gICAgZWxzZSBsLCBTb21lIHYsIHJcbiAgaW5cbiAgZm9sZCBjb2xsIG0gKGVtcHR5LCBOb25lLCBlbXB0eSlcblxubGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWluX2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWluX2JpbmRpbmcgdCBpblxuICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWluX2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggKG1pbl9iaW5kaW5nX29wdCBzLCBtaW5fYmluZGluZ19vcHQgdCkgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgfCBOb25lLCBidCAtPiBidFxuICAgIHwgYnMsIE5vbmUgLT4gYnNcbiAgICB8IChTb21lIChrcywgXykgYXMgYnMpLCAoU29tZSAoa3QsIF8pIGFzIGJ0KSAtPlxuICAgICAgaWYga3MgPCBrdCB0aGVuIGJzIGVsc2UgYnRcblxubGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaywgdikgLT4gKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIGxldCAoa3MsIF8pIGFzIGJzID0gbWF4X2JpbmRpbmcgcyBpblxuICAgIGxldCAoa3QsIF8pIGFzIGJ0ID0gbWF4X2JpbmRpbmcgdCBpblxuICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgTGVhZiAoaywgdikgLT4gU29tZSAoaywgdilcbiAgfCBCcmFuY2ggKF8sXyxzLHQpIC0+XG4gICAgbWF0Y2ggbWF4X2JpbmRpbmdfb3B0IHMsIG1heF9iaW5kaW5nX29wdCB0IHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzID4ga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCBiaW5kaW5ncyBtID1cbiAgZm9sZCAoZnVuIGsgdiBhY2MgLT4gKGssIHYpIDo6IGFjYykgbSBbXVxuXG4oKiB3ZSBvcmRlciBjb25zdHJ1Y3RvcnMgYXMgRW1wdHkgPCBMZWFmIDwgQnJhbmNoICopXG5sZXQgY29tcGFyZSBjbXAgdDEgdDIgPVxuICBsZXQgcmVjIGNvbXBhcmVfYXV4IHQxIHQyID0gbWF0Y2ggdDEsdDIgd2l0aFxuICAgIHwgRW1wdHksIEVtcHR5IC0+IDBcbiAgICB8IEVtcHR5LCBfIC0+IC0xXG4gICAgfCBfLCBFbXB0eSAtPiAxXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsxIGsyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgY21wIHgxIHgyXG4gICAgfCBMZWFmIF8sIEJyYW5jaCBfIC0+IC0xXG4gICAgfCBCcmFuY2ggXywgTGVhZiBfIC0+IDFcbiAgICB8IEJyYW5jaCAocDEsbTEsbDEscjEpLCBCcmFuY2ggKHAyLG0yLGwyLHIyKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIHAxIHAyIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2Vcblx0bGV0IGMgPSBjb21wYXJlIG0xIG0yIGluXG5cdGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9hdXggbDEgbDIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICAgIGNvbXBhcmVfYXV4IHIxIHIyXG4gIGluXG4gIGNvbXBhcmVfYXV4IHQxIHQyXG5cbmxldCBlcXVhbCBlcSB0MSB0MiA9XG4gIGxldCByZWMgZXF1YWxfYXV4IHQxIHQyID0gbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIChrMSx4MSksIExlYWYgKGsyLHgyKSAtPiBrMSA9IGsyICYmIGVxIHgxIHgyXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIHAxID0gcDIgJiYgbTEgPSBtMiAmJiBlcXVhbF9hdXggbDEgbDIgJiYgZXF1YWxfYXV4IHIxIHIyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGVxdWFsX2F1eCB0MSB0MlxuXG5sZXQgbWVyZ2UgZiBtMSBtMiA9XG4gIGxldCBhZGQgbSBrID0gZnVuY3Rpb24gTm9uZSAtPiBtIHwgU29tZSB2IC0+IGFkZCBrIHYgbSBpblxuICAoKiBmaXJzdCBjb25zaWRlciBhbGwgYmluZGluZ3MgaW4gbTEgKilcbiAgbGV0IG0gPSBmb2xkXG4gICAgICAoZnVuIGsxIHYxIG0gLT4gYWRkIG0gazEgKGYgazEgKFNvbWUgdjEpIChmaW5kX29wdCBrMSBtMikpKSBtMSBlbXB0eSBpblxuICAoKiB0aGVuIGJpbmRpbmdzIGluIG0yIHRoYXQgYXJlIG5vdCBpbiBtMSAqKVxuICBmb2xkIChmdW4gazIgdjIgbSAtPiBpZiBtZW0gazIgbTEgdGhlbiBtIGVsc2UgYWRkIG0gazIgKGYgazIgTm9uZSAoU29tZSB2MikpKVxuICAgIG0yIG1cblxubGV0IHVwZGF0ZSB4IGYgbSA9XG4gIG1hdGNoIGYgKGZpbmRfb3B0IHggbSkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHggbVxuICB8IFNvbWUgeiAtPiBhZGQgeCB6IG1cblxubGV0IHVuc2lnbmVkX2x0IG4gbSA9IG4gPj0gMCAmJiAobSA8IDAgfHwgbiA8IG0pXG5cbmxldCByZWMgdW5pb24gZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHksIHQgIC0+IHRcbiAgfCB0LCBFbXB0eSAgLT4gdFxuICB8IExlYWYgKGssdjEpLCB0IC0+XG4gICAgICB1cGRhdGUgayAoZnVuY3Rpb24gTm9uZSAtPiBTb21lIHYxIHwgU29tZSB2MiAtPiBmIGsgdjEgdjIpIHRcbiAgfCB0LCBMZWFmIChrLHYyKSAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MiB8IFNvbWUgdjEgLT4gZiBrIHYxIHYyKSB0XG4gIHwgKEJyYW5jaCAocCxtLHMwLHMxKSBhcyBzKSwgKEJyYW5jaCAocSxuLHQwLHQxKSBhcyB0KSAtPlxuICAgICAgaWYgbSA9PSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFRoZSB0cmVlcyBoYXZlIHRoZSBzYW1lIHByZWZpeC4gTWVyZ2UgdGhlIHN1YnRyZWVzLiAqKVxuXHRicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQwKSwgdW5pb24gZiAoczEsdDEpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBtIG4gJiYgbWF0Y2hfcHJlZml4IHEgcCBtIHRoZW5cblx0KCogW3FdIGNvbnRhaW5zIFtwXS4gTWVyZ2UgW3RdIHdpdGggYSBzdWJ0cmVlIG9mIFtzXS4gKilcblx0aWYgemVyb19iaXQgcSBtIHRoZW5cblx0ICBicmFuY2ggKHAsIG0sIHVuaW9uIGYgKHMwLHQpLCBzMSlcbiAgICAgICAgZWxzZVxuXHQgIGJyYW5jaCAocCwgbSwgczAsIHVuaW9uIGYgKHMxLHQpKVxuICAgICAgZWxzZSBpZiB1bnNpZ25lZF9sdCBuIG0gJiYgbWF0Y2hfcHJlZml4IHAgcSBuIHRoZW5cblx0KCogW3BdIGNvbnRhaW5zIFtxXS4gTWVyZ2UgW3NdIHdpdGggYSBzdWJ0cmVlIG9mIFt0XS4gKilcblx0aWYgemVyb19iaXQgcCBuIHRoZW5cblx0ICBicmFuY2ggKHEsIG4sIHVuaW9uIGYgKHMsdDApLCB0MSlcblx0ZWxzZVxuXHQgIGJyYW5jaCAocSwgbiwgdDAsIHVuaW9uIGYgKHMsdDEpKVxuICAgICAgZWxzZVxuXHQoKiBUaGUgcHJlZml4ZXMgZGlzYWdyZWUuICopXG5cdGpvaW4gKHAsIHMsIHEsIHQpXG5cbmxldCB1bmlvbiBmIHMgdCA9IHVuaW9uIGYgKHMsdClcblxubGV0IHRvX3NlcSBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGssIHYpIC0+IGZ1biAoKSAtPiBTZXEuQ29ucygoayx2KSwgcylcbiAgICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT4gcHJlcGVuZF9zZXEgbCAocHJlcGVuZF9zZXEgciBzKVxuICBpblxuICBwcmVwZW5kX3NlcSBtIFNlcS5lbXB0eVxuXG5sZXQgdG9fc2VxX2Zyb20gayBtID1cbiAgbGV0IHJlYyBwcmVwZW5kX3NlcSBtIHMgPSBtYXRjaCBtIHdpdGhcbiAgICB8IEVtcHR5IC0+IHNcbiAgICB8IExlYWYgKGtleSwgdikgLT4gaWYga2V5ID49IGsgdGhlbiBmdW4gKCkgLT4gU2VxLkNvbnMoKGtleSx2KSwgcykgZWxzZSBzXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IGFkZF9zZXEgcyBtID1cbiAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssIHYpIC0+IGFkZCBrIHYgbSkgbSBzXG5cbmxldCBvZl9zZXEgcyA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIGVtcHR5IHNcbiIsImxldCB1dGY4X29mX2NvZGUgYnVmIHggPVxuICBsZXQgYWRkID0gQnVmZmVyLmFkZF9jaGFyIGluXG5cbiAgKCogU3RyYWlnaHQgPD0gZG9lc24ndCB3b3JrIHdpdGggc2lnbmVkIDMxLWJpdCBpbnRzICopXG4gIGxldCBtYXhiaXRzIG4geCA9IHggbHNyIG4gPSAwIGluXG5cbiAgaWYgbWF4Yml0cyA3IHggdGhlbiAoKiA3ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgeClcbiAgZWxzZSBpZiBtYXhiaXRzIDExIHggdGhlbiAoXG4gICAgKCogNSArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAwMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDE2IHggdGhlbiAoXG4gICAgKCogNCArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDAwMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDIxIHggdGhlbiAoXG4gICAgKCogMyArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTEwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAwMDAxMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSBpZiBtYXhiaXRzIDI2IHggdGhlbiAoXG4gICAgKCogMiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMDAwMDExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChtYXhiaXRzIDMxIHgpO1xuICAgICgqIDEgKyA2ICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMTAwIGxvciAoKHggbHNyIDMwKSBsYW5kIDBiMDAwMDAwMDEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG5cbmxldCBjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgaiA9XG4gIGxldCBoaWdoMTAgPSBpIC0gMHhEODAwIGluXG4gIGxldCBsb3cxMCA9IGogLSAweERDMDAgaW5cbiAgMHgxMDAwMCArICgoaGlnaDEwIGxzbCAxMCkgbG9yIGxvdzEwKVxuXG5sZXQgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciBidWYgaSBqID1cbiAgdXRmOF9vZl9jb2RlIGJ1ZiAoY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGopXG4iLCJsZXQgdmVyc2lvbiA9IFwiMi4yLjJcIlxuXG5leGNlcHRpb24gSnNvbl9lcnJvciBvZiBzdHJpbmdcblxubGV0IGpzb25fZXJyb3IgcyA9IHJhaXNlIChKc29uX2Vycm9yIHMpXG5cbmV4Y2VwdGlvbiBFbmRfb2ZfYXJyYXlcbmV4Y2VwdGlvbiBFbmRfb2Zfb2JqZWN0XG5leGNlcHRpb24gRW5kX29mX3R1cGxlXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbnR5cGUgbGV4ZXJfc3RhdGUgPSB7XG4gIGJ1ZiA6IEJ1ZmZlci50OyAoKiBCdWZmZXIgdXNlZCB0byBhY2N1bXVsYXRlIHN1YnN0cmluZ3MgKilcbiAgbXV0YWJsZSBsbnVtIDogaW50OyAoKiBDdXJyZW50IGxpbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDEpICopXG4gIG11dGFibGUgYm9sIDogaW50O1xuICAgICAgKCogQWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgY3VycmVudCBsaW5lXG4gICAgICAgICAoc3RhcnRpbmcgZnJvbSAwKSAqKVxuICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjsgKCogTmFtZSBkZXNjcmliaW5nIHRoZSBpbnB1dCBmaWxlICopXG59XG5cbm1vZHVsZSBMZXhlcl9zdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBsZXhlcl9zdGF0ZSA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cbmVuZFxuXG5sZXQgaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/KGxudW0gPSAxKSAoKSA9XG4gIGxldCBidWYgPSBtYXRjaCBidWYgd2l0aCBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgMjU2IHwgU29tZSBidWYgLT4gYnVmIGluXG4gIHsgYnVmOyBsbnVtOyBib2wgPSAwOyBmbmFtZSB9XG4iLCJsZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2p1bmsgYnVmIG4gbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMiBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgICAoICgpIClcbiMgOTggXCJsaWIvbGV4ZXJfdXRpbHMubWxcIlxuXG4gIHwgMSAtPlxuIyAzIFwibGliL2xleGVyX3V0aWxzLm1sbFwiXG4gICAgICAoXG4gICAgIGlmIG4gPD0gMCB0aGVuICgpXG4gICAgIGVsc2UgYmVnaW5cbiAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIChMZXhpbmcubGV4ZW1lX2NoYXIgbGV4YnVmIDApO1xuICAgICAgIHJlYWRfanVuayBidWYgKG4gLSAxKSBsZXhidWZcbiAgICAgZW5kXG4gICAgIClcbiMgMTA5IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMSBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuIFxubGV0IHJlYWRfanVua193aXRob3V0X3Bvc2l0aW9ucyBidWYgbiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICBsZXQgbGV4X2Fic19wb3MgPSBsZXhidWYubGV4X2Fic19wb3MgaW5cbiAgbGV0IGxleF9zdGFydF9wb3MgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICByZWFkX2p1bmsgYnVmIG4gbGV4YnVmO1xuICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhfc3RhcnRfcG9zICsgMTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleF9hYnNfcG9zXG5cbiMgMTI1IFwibGliL2xleGVyX3V0aWxzLm1sXCJcbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5cbmxldCB0b19idWZmZXIgPyhzdWYgPSBcIlwiKSA/KHN0ZCA9IGZhbHNlKSBvYiB4ID1cbiAgaWYgc3RkIHRoZW5cbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGVsc2VcbiAgICB3cml0ZV9qc29uIG9iIHg7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN1ZlxuXG5sZXQgdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcIikgP3N0ZCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHRvX2NoYW5uZWwgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb2MgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19vdXRwdXQgP2J1ZiA/KGxlbj00MDk2KSA/KHN1ZiA9IFwiXCIpID9zdGQgb3V0IHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgKCogdGhpcyByZXF1aXJlcyBhbiBpbnQgYW5kIG5ldmVyIHVzZXMgaXQuIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZVxuICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG5vdCBicmVhayB0aGUgc2lnbmF0dXIgYnV0IGNhbiBzYWZlbHlcbiAgICAgYmUgY2hhbmdlZCB0byByZXF1aXJlIHVuaXQgaW4gYSBmdXR1cmUgY29tcGF0aWJpbGl0eS1icmVha2luZ1xuICAgICByZWxlYXNlICopXG4gIGxldCBfIDogaW50ID0gb3V0I291dHB1dCAoQnVmZmVyLmNvbnRlbnRzIG9iKSAwIChCdWZmZXIubGVuZ3RoIG9iKSBpblxuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IHggLT4geFxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIHwgYEZsb2F0IHggLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIHN0ZCB0aGVuIHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgICAgZWxzZSBqc29uX3N0cmluZ19vZl9mbG9hdCB4XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIClcbiMgMTAzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMTgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgKVxuIyAxMDY4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAyMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDczIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuIyAxMDc4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgKVxuIyAxMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTAgLT5cbiMgMjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgMjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDI1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTU5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgMjc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyA4MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjYzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDgxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDgxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyA4MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA4MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjY2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNjc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjY3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjcxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNzMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjczNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcbiMgMjc1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjc1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4ODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBJbnQgXyAtPiBcImludFwiXG4gIHwgYExpc3QgXyAtPiBcImFycmF5XCJcbiAgfCBgTnVsbCAtPiBcIm51bGxcIlxuICB8IGBTdHJpbmcgXyAtPiBcInN0cmluZ1wiXG4gIHwgYEludGxpdCBfIC0+IFwiaW50bGl0XCJcbiAgfCBgRmxvYXRsaXQgXyAtPiBcImZsb2F0bGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGZsb2F0IGlcbiAgfCBgRmxvYXQgZiAtPiBmXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBTb21lIChmbG9hdCBpKVxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0LCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gaVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSBpXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBzXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgY29udmVydF9lYWNoIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgZiBsXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgY29udmVydCBlYWNoIGVsZW1lbnQgb2Ygbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHJlYyByZXZfZmlsdGVyX21hcCBmIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgfCBOb25lIC0+IHJldl9maWx0ZXJfbWFwIGYgYWNjIHRsXG4gICAgICB8IFNvbWUgeSAtPiByZXZfZmlsdGVyX21hcCBmICh5IDo6IGFjYykgdGwpXG5cbmxldCBmaWx0ZXJfbWFwIGYgbCA9IExpc3QucmV2IChyZXZfZmlsdGVyX21hcCBmIFtdIGwpXG5cbmxldCByZWMgcmV2X2ZsYXR0ZW4gYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgTGlzdCBsMiAtPiByZXZfZmxhdHRlbiAoTGlzdC5yZXZfYXBwZW5kIGwyIGFjYykgdGxcbiAgICAgIHwgXyAtPiByZXZfZmxhdHRlbiBhY2MgdGwpXG5cbmxldCBmbGF0dGVuIGwgPSBMaXN0LnJldiAocmV2X2ZsYXR0ZW4gW10gbClcblxubGV0IGZpbHRlcl9pbmRleCBpIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBMaXN0IGwgLT4gKCB0cnkgU29tZSAoTGlzdC5udGggbCBpKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2xpc3QgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBMaXN0IGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5cbmxldCBmaWx0ZXJfbWVtYmVyIGsgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYEFzc29jIGwgLT4gKCB0cnkgU29tZSAoTGlzdC5hc3NvYyBrIGwpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfYXNzb2MgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBBc3NvYyBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9ib29sIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQm9vbCB4IC0+IFNvbWUgeCB8IF8gLT4gTm9uZSkgbFxubGV0IGZpbHRlcl9pbnQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgIGBJbnQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKSBsXG5cbmxldCBmaWx0ZXJfZmxvYXQgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYEludCB4IC0+IFNvbWUgKGZsb2F0IHgpXG4gICAgICB8IGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfc3RyaW5nIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG5lbmRcblxuIiwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0bGl0IG9mIHN0cmluZ1xuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9zdGRfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9zdGRfbGlzdCBvYiBsXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfc3RkX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX3N0ZF9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmFuZCB3cml0ZV9zdGRfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICAoKiB0aGlzIHJlcXVpcmVzIGFuIGludCBhbmQgbmV2ZXIgdXNlcyBpdC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlXG4gICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgdG8gbm90IGJyZWFrIHRoZSBzaWduYXR1ciBidXQgY2FuIHNhZmVseVxuICAgICBiZSBjaGFuZ2VkIHRvIHJlcXVpcmUgdW5pdCBpbiBhIGZ1dHVyZSBjb21wYXRpYmlsaXR5LWJyZWFraW5nXG4gICAgIHJlbGVhc2UgKilcbiAgbGV0IF8gOiBpbnQgPSBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpIGluXG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIHwgeCAtPiB4XG5cbm1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbigqXG4gICBQcmV0dHktcHJpbnQgSlNPTiBkYXRhIGluIGFuIGF0dGVtcHQgdG8gbWF4aW1pemUgcmVhZGFiaWxpdHkuXG5cbiAgIDEuIFdoYXQgZml0cyBvbiBvbmUgbGluZSBzdGF5cyBvbiBvbmUgbGluZS5cbiAgIDIuIFdoYXQgZG9lc24ndCBmaXQgb24gb25lIGxpbmUgZ2V0cyBwcmludGVkIG1vcmUgdmVydGljYWxseSBzbyBhcyB0byBub3RcbiAgICAgIGV4Y2VlZCBhIHJlYXNvbmFibGUgcGFnZSB3aWR0aCwgaWYgcG9zc2libGUuXG5cbiAgIEFycmF5cyBjb250YWluaW5nIG9ubHkgc2ltcGxlIGVsZW1lbnRzIChcImF0b21zXCIpIGFyZSBwcmV0dHktcHJpbnRlZCB3aXRoXG4gICBlbmQtb2YtbGluZSB3cmFwcGluZyBsaWtlIG9yZGluYXJ5IHRleHQ6XG5cbiAgICAgW1xuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIixcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCJcbiAgICAgXVxuXG4gICBPdGhlciBhcnJheXMgYXJlIHByaW50ZWQgZWl0aGVyIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5IGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGV5IGZpdCBvbiBhIHNpbmdsZSBsaW5lOlxuXG4gICAgIFsgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSBdXG5cbiAgIG9yXG5cbiAgICAgW1xuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfVxuICAgICBdXG4qKVxuXG5sZXQgcHBfbGlzdCBzZXAgcHB4IG91dCBsID1cbiAgbGV0IHBwX3NlcCBvdXQgKCkgPSBGb3JtYXQuZnByaW50ZiBvdXQgXCIlc0AgXCIgc2VwIGluXG4gIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXAgcHB4IG91dCBsXG5cbmxldCBpc19hdG9tICh4OiBbPiB0XSkgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTnVsbFxuICB8IGBCb29sIF9cbiAgfCBgSW50IF9cbiAgfCBgRmxvYXQgX1xuICB8IGBTdHJpbmcgX1xuICB8IGBJbnRsaXQgX1xuICB8IGBGbG9hdGxpdCBfXG4gIHwgYFN0cmluZ2xpdCBfXG4gIHwgYExpc3QgW11cbiAgfCBgQXNzb2MgW11cbiAgfCBgVHVwbGUgW11cbiAgfCBgVmFyaWFudCAoXywgTm9uZSkgLT4gdHJ1ZVxuICB8IGBMaXN0IF9cbiAgfCBgQXNzb2MgX1xuICB8IGBUdXBsZSBfXG4gIHwgYFZhcmlhbnQgKF8sIFNvbWUgXykgLT4gZmFsc2VcblxubGV0IGlzX2F0b21fbGlzdCBsID1cbiAgTGlzdC5mb3JfYWxsIGlzX2F0b20gbFxuXG4oKlxuICAgaW5zaWRlX2JveDogaW5kaWNhdGVzIHRoYXQgd2UncmUgYWxyZWFkeSB3aXRoaW4gYSBib3ggdGhhdCBpbXBvc2VzXG4gICBhIGNlcnRhaW4gc3R5bGUgYW5kIHdlIHNob3VsZG4ndCBjcmVhdGUgYSBuZXcgb25lLiBUaGlzIGlzIHVzZWQgZm9yXG4gICBwcmludGluZyBmaWVsZCB2YWx1ZXMgbGlrZSB0aGlzOlxuXG4gICAgIGZvbzogW1xuICAgICAgIGJhclxuICAgICBdXG5cbiAgIHJhdGhlciB0aGFuIHNvbWV0aGluZyBlbHNlIGxpa2VcblxuICAgICBmb286XG4gICAgICAgW1xuICAgICAgICAgYmFyXG4gICAgICAgXVxuKilcbmxldCByZWMgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCAob3V0OkZvcm1hdC5mb3JtYXR0ZXIpICh4OnQpIDogdW5pdCA9XG4gIG1hdGNoIHggd2l0aFxuICAgIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJudWxsXCJcbiAgICB8IGBCb29sIHggLT4gRm9ybWF0LnBwX3ByaW50X2Jvb2wgb3V0IHhcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nbGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmdsaXQgcyBpblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuZW5kXG5cbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgRmxvYXRsaXQgYSwgYEZsb2F0bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBUdXBsZSB4cywgYFR1cGxlIHlzXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCBwcmV0dHlfcHJpbnQgP3N0ZCBvdXQgeCA9IFByZXR0eS5wcCA/c3RkIG91dCB4XG5sZXQgcHJldHR5X3RvX3N0cmluZyA/c3RkIHggPSBQcmV0dHkudG9fc3RyaW5nID9zdGQgeFxubGV0IHByZXR0eV90b19jaGFubmVsID9zdGQgb2MgeCA9IFByZXR0eS50b19jaGFubmVsID9zdGQgb2MgeFxuXG4jIDEgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gICgqIHNlZSBkZXNjcmlwdGlvbiBpbiBjb21tb24ubWxpICopXG4gIHR5cGUgbGV4ZXJfc3RhdGUgPSBDb21tb24uTGV4ZXJfc3RhdGUudCA9IHtcbiAgICBidWYgOiBCdWZmZXIudDtcbiAgICBtdXRhYmxlIGxudW0gOiBpbnQ7XG4gICAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgZGVjIGMgPVxuICAgIENoYXIuY29kZSBjIC0gNDhcblxuICBsZXQgaGV4IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnMCcuLic5JyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJzAnXG4gICAgICB8ICdhJy4uJ2YnIC0+IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKyAxMFxuICAgICAgfCAnQScuLidGJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgMTBcbiAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICBsZXQgY3VzdG9tX2Vycm9yIGRlc2NyIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgb2ZmcyA9IGxleGJ1Zi5sZXhfYWJzX3BvcyAtIDEgaW5cbiAgICBsZXQgYm9sID0gdi5ib2wgaW5cbiAgICBsZXQgcG9zMSA9IG9mZnMgKyBsZXhidWYubGV4X3N0YXJ0X3BvcyAtIGJvbCAtIDEgaW5cbiAgICBsZXQgcG9zMiA9IG1heCBwb3MxIChvZmZzICsgbGV4YnVmLmxleF9jdXJyX3BvcyAtIGJvbCkgaW5cbiAgICBsZXQgZmlsZV9saW5lID1cbiAgICAgIG1hdGNoIHYuZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gXCJMaW5lXCJcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZSAlaVwiIChwb3MxKzEpXG4gICAgICBlbHNlXG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiYnl0ZXMgJWktJWlcIiAocG9zMSsxKSAocG9zMisxKVxuICAgIGluXG4gICAgbGV0IG1zZyA9IFByaW50Zi5zcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIENvbW1vbi5qc29uX2Vycm9yIG1zZ1xuXG5cbiAgbGV0IGxleGVyX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcydcIiBkZXNjciAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbG9uZ19lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IGp1bmsgPSBMZXhpbmcubGV4ZW1lIGxleGJ1ZiBpblxuICAgIGxldCBidWZfc2l6ZSA9IDMyIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgYnVmX3NpemUgaW5cbiAgICBsZXQgKCkgPSBMZXhlcl91dGlscy5yZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIGJ1Zl9zaXplIGxleGJ1ZiBpblxuICAgIGxldCBleHRyYV9qdW5rID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgJyVzJXMnXCIgZGVzY3IganVuayBleHRyYV9qdW5rKVxuICAgICAgdiBsZXhidWZcblxuICBsZXQgbWluMTAgPSBtaW5faW50IC8gMTAgLSAoaWYgbWluX2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG4gIGxldCBtYXgxMCA9IG1heF9pbnQgLyAxMCArIChpZiBtYXhfaW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcblxuICBleGNlcHRpb24gSW50X292ZXJmbG93XG5cbiAgbGV0IGV4dHJhY3RfcG9zaXRpdmVfaW50IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IHN0YXJ0ID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuID49IG1heDEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiArIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBuZXdsaW5lIHYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cblxuIyAxNTQgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDE0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDBcXDAwMFxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDEyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjIxXFwwMDFcXDAwMFxcMDAwXFwyNTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDI0MVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFwxOThcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDI1NVxcMjU1XFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwyNTVcXDI1NVxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTIyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDk4XFwwMDBcXDI1NVxcMjU1XFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMjBcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwwOThcXDAwMFxcMjU1XFwyNTVcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjM4XFwwMDFcXDI1NVxcMjU1XFwyNTFcXDAwMVxcMjM4XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjU1XFwyNTVcXDE5NFxcMDAxXFwyNTVcXDI1NVxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIHRydWUgKVxuIyAxMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuIyAxMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuIyAxMDIzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiTmFOXCJcbiAgICAgICAgICAgICAgICApXG4jIDEwMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDE4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJJbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiLUluZmluaXR5XCJcbiAgICAgICAgICAgICAgICApXG4jIDEwNTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDE5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nbGl0IChmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIClcbiMgMTA2OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgMjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMjA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcbiMgMTA3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDkgLT5cbiMgMjA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTA4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDIxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTExNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDIzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMiAtPlxuIyAyNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEzIC0+XG4jIDI3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIClcbiMgMTE3MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE0IC0+XG4jIDI4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDI4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNiAtPlxuIyAyODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNyAtPlxuIyAyODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTkgLT5cbiMgMjkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAyOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuIyAxMjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAyOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMjk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAyOTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTIzMiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG4jIDEyNDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTI2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcbiMgMTI3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDMxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG4jIDEyNzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG4jIDEyODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDMxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcbiMgMTI4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgMzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbmxldFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcbiMgMTMxMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTMxNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyAxMzIwIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTMyNSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG4jIDMyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX2NvZGUgdi5idWYgeFxuXG4gICAgICAgICApXG4jIDEzMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDMyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcbiMgMTM0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTM3MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcbiMgMTM3NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIENvZGVjLnV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcbiMgMTM4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuIyAxNDE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMTQyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuIyAxNDQwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcbiMgMTQ0NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAxNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDk5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAxNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE1MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG4jIDE1MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG4jIDE1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTU0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgMzg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTU2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAxNTcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzOTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1NzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcbiMgMTU4MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTU5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcbiMgMTYxMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAxNjMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG4jIDE2NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE2NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE2NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjY5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2ODYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTY5MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTcwNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQ1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE3OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTc5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQ3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxODExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTgzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNDk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxODM5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG4jIDE4NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG4jIDE4NTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuIyAxODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZikgKVxuIyAxODY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA1MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuIyAxODg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA1MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4OTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDUyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTg5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDUyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyA1MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG4jIDE5NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxOTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE5NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMDA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjAxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjA0NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDY2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMDgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDIwODggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDU5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIwOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjA5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgICAgICApXG4jIDIxMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjEzNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjE1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE1OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMTgyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMTg3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjIyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuIyAyMjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIyOTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjI5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjMxMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMjMzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjMzNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzNTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjM2MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjM3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuIyAyMzk2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG4jIDI0MDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDcwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQyMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDI4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDU1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDY3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDg5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTE2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA3NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjU0MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgNzQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG4jIDI1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU3NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDc2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNzgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjE4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgODAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI2MzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyA4MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTUgLT5cbiMgODE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgODE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE4IC0+XG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDI2NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDgyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMjY3NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI2NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjcwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcbiMgMjcyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjczMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgODQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjc0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI3NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjc4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgODgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjgyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgOTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc8JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICApXG4jIDI4NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG4jIDkzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDcgLT5cbiMgOTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDggLT5cbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDkzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcbiMgMjg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEwIC0+XG4jIDkzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI4NzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyA5MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyODc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgOTQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcbiMgMjkxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDI5MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjkyNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI5NDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG4jIDI5NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk2MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI5NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk2NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgOTgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDMwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2Zfb2JqZWN0IClcbiMgMzAxNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG4jIDMwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwNDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk5NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA0NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9hcnJheSApXG4jIDMwNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwNjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDQ4N1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzA4NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzA5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMxMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAzMTI2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzEzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMzEzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIDQ5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JyApXG4jIDMxNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxNTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIDUwM1xuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcbiMgMzE3MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTc1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDUwN1xuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuIyAzMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuIyAzMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAxMDM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG4jIDMyMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiBcbiAgbGV0IF8gPSAocmVhZF9qc29uIDogbGV4ZXJfc3RhdGUgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0KVxuXG4gIGxldCByZWFkX3QgPSByZWFkX2pzb25cblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IENvbW1vbi5pbml0X2xleGVyXG5cbiAgbGV0IGZyb21fbGV4YnVmIHYgPyhzdHJlYW0gPSBmYWxzZSkgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuXG4gICAgbGV0IHggPVxuICAgICAgaWYgcmVhZF9lb2YgbGV4YnVmIHRoZW5cbiAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgICBmcm9tX2xleGJ1ZiB2IGxleGJ1ZlxuICAgIHdpdGggQ29tbW9uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgICAgICAgIGZpbiAoKTtcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgICAodHJ5IGZpbiAoKSB3aXRoIGZpbl9lIC0+IHJhaXNlIChGaW5hbGx5IChlLCBmaW5fZSkpKTtcbiAgICAgICAgICAgIHJhaXNlIGVcbiAgICBpblxuICAgIGZcblxuICBsZXQgc2VxX2Zyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxuICBsZXQgc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2ID9maW4gbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiB+ZmluIGxleGJ1ZlxuXG4gIHR5cGUganNvbl9saW5lID0gWyBgSnNvbiBvZiB0IHwgYEV4biBvZiBleG4gXVxuXG4gIGxldCBsaW5lc2VxX2Zyb21fY2hhbm5lbFxuICAgICAgP2J1ZiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgP2ZuYW1lID9sbnVtOihsbnVtMCA9IDEpIGljID1cbiAgICBsZXQgYnVmID1cbiAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIChCdWZmZXIuY3JlYXRlIDI1NilcbiAgICAgICAgfCBTb21lIF8gLT4gYnVmXG4gICAgaW5cbiAgICBsZXQgcmVjIGYgbG51bSA9IGZ1biAoKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBsaW5lID0gaW5wdXRfbGluZSBpYyBpblxuICAgICAgICBTZXEuQ29ucyAoYEpzb24gKGZyb21fc3RyaW5nID9idWYgP2ZuYW1lIH5sbnVtIGxpbmUpLCBmIChsbnVtICsgMSkpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2ZpbGUgLT4gZmluICgpOyBTZXEuTmlsXG4gICAgICAgIHwgZSAtPiBTZXEuQ29ucyAoYEV4biBlLCBmIChsbnVtICsgMSkpXG4gICAgaW5cbiAgICBmIGxudW0wXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxpbmVzZXFfZnJvbV9jaGFubmVsID9idWYgfmZpbiA/Zm5hbWUgP2xudW0gaWNcblxuICBsZXQgcHJldHRpZnkgP3N0ZCBzID1cbiAgICBwcmV0dHlfdG9fc3RyaW5nID9zdGQgKGZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IGNvbXBhY3QgP3N0ZDpfIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuIyAzMzc1IFwibGliL3JlYWQubWxcIlxuXG5tb2R1bGUgVXRpbCA9IHN0cnVjdFxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFN0cmluZ2xpdCBfIC0+IFwic3RyaW5nbGl0XCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIGBMaXN0IGwgLT4gbCB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGFycmF5LCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgc3RyaW5nLCBnb3QgXCIganNcblxubGV0IHRvX3N0cmluZ19vcHRpb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbmVuZFxuXG4iLCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IHJlYyB0b19iYXNpYyA6IHQgLT4gQmFzaWMudCA9IGZ1bmN0aW9uXG4gIHwgKGBOdWxsIHwgYEJvb2wgXyB8IGBJbnQgXyB8IGBGbG9hdCBfIHwgYFN0cmluZyBfKSBhcyB4IC0+IHhcbiAgfCBgSW50bGl0IHMgLT4gYFN0cmluZyBzXG4gIHwgYExpc3QgbCB8IGBUdXBsZSBsIC0+IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHRvX2Jhc2ljIGwpKVxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBgQXNzb2MgKExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHRvX2Jhc2ljIHYpKSBsKSlcbiAgfCBgVmFyaWFudCAoaywgTm9uZSkgLT4gYFN0cmluZyBrXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgLT4gYExpc3QgWyBgU3RyaW5nIGs7IHRvX2Jhc2ljIHYgXVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nIHMgaW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbmVuZFxuXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEludCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEludCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYEFzc29jIHhzLCBgQXNzb2MgeXMgLT5cbiAgICAgIGxldCBjb21wYXJlX2tleXMgPSBmdW4gKGtleSwgXykgKGtleScsIF8pIC0+IFN0cmluZy5jb21wYXJlIGtleSBrZXknIGluXG4gICAgICBsZXQgeHMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB4cyBpblxuICAgICAgbGV0IHlzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeXMgaW5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIChmdW4gKGtleSwgdmFsdWUpIChrZXknLCB2YWx1ZScpIC0+XG4gICAgICAgIG1hdGNoIGtleSA9IGtleScgd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICAgIHwgdHJ1ZSAtPiBlcXVhbCB2YWx1ZSB2YWx1ZScpIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSwgYFZhcmlhbnQgKG5hbWUnLCB2YWx1ZScpIC0+XG4gICAgICAobWF0Y2ggbmFtZSA9IG5hbWUnIHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICBtYXRjaCB2YWx1ZSwgdmFsdWUnIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IHRydWVcbiAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBlcXVhbCB4IHlcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgbW9kdWxlIExleGluZyA9XG4gICAgKCpcbiAgICAgIFdlIG92ZXJyaWRlIExleGluZy5lbmdpbmUgaW4gb3JkZXIgdG8gYXZvaWQgY3JlYXRpbmcgYSBuZXcgcG9zaXRpb25cbiAgICAgIHJlY29yZCBlYWNoIHRpbWUgYSBydWxlIGlzIG1hdGNoZWQuXG4gICAgICBUaGlzIHJlZHVjZXMgdG90YWwgcGFyc2luZyB0aW1lIGJ5IGFib3V0IDMxJS5cbiAgICAqKVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIExleGluZ1xuXG4gICAgZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuXG4gICAgbGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgICAgIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gICAgICAoKlxuICAgICAgaWYgcmVzdWx0ID49IDAgdGhlbiBiZWdpblxuICAgICAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICAgICAgZW5kO1xuICAgICAgKilcbiAgICAgIHJlc3VsdFxuICBlbmRcblxuICAoKiBzZWUgZGVzY3JpcHRpb24gaW4gY29tbW9uLm1saSAqKVxuICB0eXBlIGxleGVyX3N0YXRlID0gQ29tbW9uLkxleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIkZpbGUgJXMsIGxpbmVcIiBzXG4gICAgaW5cbiAgICBsZXQgYnl0ZXMgPVxuICAgICAgaWYgcG9zMSA9IHBvczIgdGhlblxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGUgJWlcIiAocG9zMSsxKVxuICAgICAgZWxzZVxuICAgICAgICBQcmludGYuc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBQcmludGYuc3ByaW50ZiBcIiVzICVpLCAlczpcXG4lc1wiIGZpbGVfbGluZSB2LmxudW0gYnl0ZXMgZGVzY3IgaW5cbiAgICBDb21tb24uanNvbl9lcnJvciBtc2dcblxuXG4gIGxldCBsZXhlcl9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgY3VzdG9tX2Vycm9yXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IGxvbmdfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGxldCBqdW5rID0gTGV4aW5nLmxleGVtZSBsZXhidWYgaW5cbiAgICBsZXQgYnVmX3NpemUgPSAzMiBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGJ1Zl9zaXplIGluXG4gICAgbGV0ICgpID0gTGV4ZXJfdXRpbHMucmVhZF9qdW5rX3dpdGhvdXRfcG9zaXRpb25zIGJ1ZiBidWZfc2l6ZSBsZXhidWYgaW5cbiAgICBsZXQgZXh0cmFfanVuayA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBjdXN0b21fZXJyb3JcbiAgICAgIChQcmludGYuc3ByaW50ZiBcIiVzICclcyVzJ1wiIGRlc2NyIGp1bmsgZXh0cmFfanVuaylcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IG1pbjEwID0gbWluX2ludCAvIDEwIC0gKGlmIG1pbl9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuICBsZXQgbWF4MTAgPSBtYXhfaW50IC8gMTAgKyAoaWYgbWF4X2ludCBtb2QgMTAgPSAwIHRoZW4gMCBlbHNlIDEpXG5cbiAgZXhjZXB0aW9uIEludF9vdmVyZmxvd1xuXG4gIGxldCBleHRyYWN0X3Bvc2l0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV0IHN0b3AgPSBsZXhidWYubGV4X2N1cnJfcG9zIGluXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X2J1ZmZlciBpblxuICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IHN0YXJ0IHRvIHN0b3AgLSAxIGRvXG4gICAgICBpZiAhbiA+PSBtYXgxMCB0aGVuXG4gICAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgICAgZWxzZVxuICAgICAgICBuIDo9IDEwICogIW4gKyBkZWMgKEJ5dGVzLmdldCBzIGkpXG4gICAgZG9uZTtcbiAgICBpZiAhbiA8IDAgdGhlblxuICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgZWxzZVxuICAgICAgIW5cblxuICBsZXQgbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgPVxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIGBJbnRsaXQgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICB0cnkgYEludCAoZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmKVxuICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgYEludGxpdCAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG5cbiAgbGV0IG5ld2xpbmUgdiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuXG4jIDE1NCBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA5N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTA0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDEzOFxcMDAwXFwwMDBcXDAwMFxcMTQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTg3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjM1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxN1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAzOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTIxXFwwMDFcXDEyNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxNDRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMTkzXFwwMDFcXDE5N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjIwXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIzM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0MFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTI2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMjFcXDAwMVxcMDAwXFwwMDBcXDI1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjQxXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMDAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDE5OFxcMDAxXFwwMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMjU1XFwyNTVcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDI1NVxcMjU1XFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDI1NVxcMjU1XFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwOThcXDAwMFxcMjU1XFwyNTVcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIyMFxcMDAxXFwyNTVcXDI1NVxcMjUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDA5OFxcMDAwXFwyNTVcXDI1NVxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMjU1XFwyNTVcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMTk0XFwwMDFcXDI1NVxcMjU1XFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG4jIDEwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCBmYWxzZSApXG4jIDEwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDE3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG4jIDEwMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDE3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgKVxuIyAxMDM0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyAxODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgKVxuIyAxMDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIClcbiMgMTA1NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICApXG4jIDEwNjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDIwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG4jIDEwNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA5IC0+XG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgKGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICApXG4jIDEwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyAyMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMSAtPlxuIyAyMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTIgLT5cbiMgMjUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG4jIDExNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMyAtPlxuIyAyNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICApXG4jIDExNzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNCAtPlxuIyAyODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxNSAtPlxuIyAyODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTgzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTYgLT5cbiMgMjg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTcgLT5cbiMgMjg4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTggLT5cbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE5IC0+XG4jIDI5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMjk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcbiMgMTIxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMjk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDEyMjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDI5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcbiMgMTIyNyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuIyAxMjQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcbiMgMTI1NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDEyNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG4jIDEyNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuIyAzMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuIyAxMjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuIyAxMjg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzMTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG4jIDEyODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDMxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDMxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA2IC0+XG5sZXRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG4jIDEzMTAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG4jIDEzMTUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcbiMgMTMyMCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzMjUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuIyAzMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgQ29kZWMudXRmOF9vZl9jb2RlIHYuYnVmIHhcblxuICAgICAgICAgKVxuIyAxMzM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNyAtPlxuIyAzMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG4jIDEzNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG4jIDEzNzAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG4jIDEzNzUgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICBDb2RlYy51dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG4jIDEzODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTM5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcbiMgMTQxNSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDE0MjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNDI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcbiMgMTQ0MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG4jIDE0NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTQ1MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzY5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMTQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzNzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE0ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTQ5OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDM3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcbiMgMTUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNTIxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuIyAxNTMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuIyAxNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDM4OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTU1NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDE1NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMTU3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMzk0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAxNTc2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG4jIDE1ODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTU5MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE1OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG4jIDE2MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjE1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuIyAxNjI1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcbiMgMTYzMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuIyAxNjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxNjUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjY0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMTY2OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuIyAxNjgxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuIyAxNjg2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG4jIDE2OTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG4jIDE2OTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNSAtPlxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDQzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuIyAxNzI3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzUwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA0NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNDU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDQ2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDQ3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxNzkyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA0NzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE3OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNDgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNDk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE4MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDQ5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTgzOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDUwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuIyAxODUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuIyAxODU2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcbiMgMTg2MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpIClcbiMgMTg2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNTA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcbiMgMTg4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNTIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAxODkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA1MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDE4OTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA1MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDUyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTkyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgNTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuIyAxOTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMTk0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNTM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAxOTU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDE5NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMTk4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjAwOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTYzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTY3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG4jIDIwNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDU4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjA0OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDU4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMjA2NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA3MSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjA4MyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAyMDg4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA1OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA1OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgKVxuIyAyMTMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIxMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDYyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjE0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDIxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDYyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxNTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGUgKVxuIyAyMTc0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjE4MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjE4NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDYzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIxOTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjIwOSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNjQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMjE0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIyMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMjIzNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNjUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgNCAtPlxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcbiMgMjI4NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNjgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMjkxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIyOTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2ODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDIzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDY4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjMxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDY5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDIzMzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDY5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA2OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyMzQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA2OTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAyMzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA2OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyMzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDIzNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDIzNzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjM3OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyMzg0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcbiMgMjM5NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuIyAyNDAxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDA2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA3MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI0MjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjQyOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAyNDQ1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI0NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjQ1NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ2NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcbiMgMjQ4OSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNDk0IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI0OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgNzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUxNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgNzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDQgLT5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDUgLT5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcbiMgMjUzNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDYgLT5cbiMgNzQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI1NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDc0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTQ2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgOCAtPlxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuIyAyNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI1NzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA3NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDExIC0+XG4jIDc4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcbiMgMjYxOCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEyIC0+XG4jIDgwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyNjMyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTMgLT5cbiMgODE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTQgLT5cbiMgODE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE1IC0+XG4jIDgxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY0NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE2IC0+XG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcbiMgMjY1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDE3IC0+XG4jIDgxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI2NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxOCAtPlxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuIyAyNjYyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG4jIDI2NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuIyAyNjc5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcbiMgMjY4NCBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI3MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyNzEzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgODM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG4jIDI3MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDgzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDI3MzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDg0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAyNzM1IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDI3NDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyNzUyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyNzU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIENvbW1vbi5FbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI3ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDg4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBDb21tb24uRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJygnO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggQ29tbW9uLkVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG4jIDI4MjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA1IC0+XG4jIDkxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgKVxuIyAyODQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgNiAtPlxuIyA5MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA3IC0+XG4jIDkzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgICAgICAgICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA4IC0+XG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgOSAtPlxuIyA5MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxMCAtPlxuIyA5MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyODcxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMTEgLT5cbiMgOTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcbiMgMjg3NiBcImxpYi9yZWFkLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgNDUwXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgOTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAyIC0+XG4jIDk0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDQ2MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDk1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG4jIDI5MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuIyAyOTIwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDI5MjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDk1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTMwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuIyAyOTQyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuIyAyOTQ3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMjk1MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAyOTU3IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiA0NzFcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIvKlwiO1xuICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuIyAyOTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcbiMgMjk4OCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgOTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG4jIDI5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCA0IC0+XG4jIDk4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAzMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgNDc4XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5ODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBDb21tb24uRW5kX29mX29iamVjdCApXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDk4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG4jIDMwMTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuIyAzMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JzsgcmFpc2UgQ29tbW9uLkVuZF9vZl9vYmplY3QgKVxuIyAzMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyA5OTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMDQxIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMyAtPlxuIyA5OTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgOTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIENvbW1vbi5FbmRfb2ZfYXJyYXkgKVxuIyAzMDU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMDYzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzA3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBDb21tb24uRW5kX29mX2FycmF5IClcbiMgMzA4MCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMwODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMwOTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgQ29tbW9uLkVuZF9vZl90dXBsZSApXG4jIDMxMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiA0OTRcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcbiMgMzEyMSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknOyByYWlzZSBDb21tb24uRW5kX29mX3R1cGxlIClcbiMgMzEyNiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG4jIDMxMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAzIC0+XG4jIDEwMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG4jIDMxMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuIyAzMTQ4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgMSAtPlxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuIyAzMTUzIFwibGliL3JlYWQubWxcIlxuXG4gIHwgMiAtPlxuIyAxMDIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTU4IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG4jIDMxNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgfCAxIC0+XG4jIDEwMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcbiMgMzE3NSBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuIyAzMTgwIFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcbiMgMzE5MiBcImxpYi9yZWFkLm1sXCJcblxuICB8IDEgLT5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcbiMgMzE5NyBcImxpYi9yZWFkLm1sXCJcblxuICB8IDIgLT5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcbiMgMzIwNCBcImxpYi9yZWFkLm1sXCJcblxuICB8IDMgLT5cbiMgMTAzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuIyAzMjA5IFwibGliL3JlYWQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0IHJlYWRfaW50OCB2IGxleGJ1ZiA9XG4gICAgbGV0IG4gPSByZWFkX2ludCB2IGxleGJ1ZiBpblxuICAgIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlblxuICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQ4IG92ZXJmbG93XCIgdiBsZXhidWZcbiAgICBlbHNlXG4gICAgICBjaGFyX29mX2ludCBuXG5cbiAgbGV0IHJlYWRfbGlzdCByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIExpc3QucmV2IChyZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZilcblxuICBsZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIFtdIC0+IFt8IHxdXG4gICAgICB8IHggOjogdGwgLT5cbiAgICAgICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgICAgZm9yIGkgPSBsZW4gLSAyIGRvd250byAwIGRvXG4gICAgICAgICAgICBhLihpKSA8LSBMaXN0LmhkICFyO1xuICAgICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgICAgZG9uZTtcbiAgICAgICAgICBhXG5cbiAgbGV0IHJlYWRfYXJyYXkgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBsZXQgbCA9IHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmIGluXG4gICAgYXJyYXlfb2ZfcmV2X2xpc3QgbFxuXG4gICgqIFJlYWQgYSBKU09OIG9iamVjdCwgcmVhZGluZyB0aGUga2V5cyBpbnRvIE9DYW1sIHN0cmluZ3NcbiAgICAgKHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSAqKVxuICBsZXQgcmVhZF9maWVsZHMgcmVhZF9maWVsZCBpbml0X2FjYyB2ID1cbiAgICByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2lkZW50IHJlYWRfZmllbGQgaW5pdF9hY2MgdlxuXG4gIGxldCBmaW5pc2ggdiBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgaWYgbm90IChyZWFkX2VvZiBsZXhidWYpIHRoZW5cbiAgICAgIGxvbmdfZXJyb3IgXCJKdW5rIGFmdGVyIGVuZCBvZiBKU09OIHZhbHVlOlwiIHYgbGV4YnVmXG5cbiAgbGV0IGluaXRfbGV4ZXIgPSBDb21tb24uaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIENvbW1vbi5FbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIENvbW1vbi5FbmRfb2ZfaW5wdXQgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yIFwiQmxhbmsgaW5wdXQgZGF0YVwiXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICB0cnlcbiAgICAgIGxldCB4ID0gZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljIGluXG4gICAgICBjbG9zZV9pbiBpYztcbiAgICAgIHhcbiAgICB3aXRoIGUgLT5cbiAgICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgICAgcmFpc2UgZVxuXG4gIGV4Y2VwdGlvbiBGaW5hbGx5IG9mIGV4biAqIGV4blxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgdiA/KGZpbiA9IGZ1biAoKSAtPiAoKSkgbGV4YnVmID1cbiAgICBsZXQgc3RyZWFtID0gU29tZSB0cnVlIGluXG4gICAgbGV0IHJlYyBmICgpID1cbiAgICAgIHRyeSBTZXEuQ29ucyAoZnJvbV9sZXhidWYgdiA/c3RyZWFtIGxleGJ1ZiwgZilcbiAgICAgIHdpdGhcbiAgICAgICAgICBDb21tb24uRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQ6XyBzID1cbiAgICB0b19zdHJpbmcgKGZyb21fc3RyaW5nIHMpXG5cbiMgMzM3NSBcImxpYi9yZWFkLm1sXCJcblxubW9kdWxlIFV0aWwgPSBzdHJ1Y3RcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICB8IGBMaXN0IF8gLT4gXCJhcnJheVwiXG4gIHwgYE51bGwgLT4gXCJudWxsXCJcbiAgfCBgU3RyaW5nIF8gLT4gXCJzdHJpbmdcIlxuICB8IGBJbnRsaXQgXyAtPiBcImludGxpdFwiXG4gIHwgYEZsb2F0bGl0IF8gLT4gXCJmbG9hdGxpdFwiXG4gIHwgYFR1cGxlIF8gLT4gXCJ0dXBsZVwiXG4gIHwgYFZhcmlhbnQgXyAtPiBcInZhcmlhbnRcIlxuXG5sZXQgdHlwZXJyIG1zZyBqcyA9IHJhaXNlIChUeXBlX2Vycm9yIChtc2cgXiB0eXBlb2YganMsIGpzKSlcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmcgKiB0XG5cbmxldCBhc3NvYyBuYW1lIG9iaiA9IHRyeSBMaXN0LmFzc29jIG5hbWUgb2JqIHdpdGggTm90X2ZvdW5kIC0+IGBOdWxsXG5cbmxldCBtZW1iZXIgbmFtZSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBhc3NvYyBuYW1lIG9ialxuICB8IGpzIC0+IHR5cGVyciAoXCJDYW4ndCBnZXQgbWVtYmVyICdcIiBeIG5hbWUgXiBcIicgb2Ygbm9uLW9iamVjdCB0eXBlIFwiKSBqc1xuXG5sZXQgcmVjIHBhdGggbCBvYmogPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBTb21lIG9ialxuICB8IGtleSA6OiBsIC0+IChcbiAgICAgIG1hdGNoIG9iaiB3aXRoXG4gICAgICB8IGBBc3NvYyBhc3NvYyAtPiAoXG4gICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBrZXkgYXNzb2Mgd2l0aFxuICAgICAgICAgIHwgb2JqIC0+IHBhdGggbCBvYmpcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZSlcbiAgICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW5kZXggaSA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCBhcyBqcyAtPlxuICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgIGxldCB3cmFwcGVkX2luZGV4ID0gaWYgaSA8IDAgdGhlbiBsZW4gKyBpIGVsc2UgaSBpblxuICAgICAgaWYgd3JhcHBlZF9pbmRleCA8IDAgfHwgd3JhcHBlZF9pbmRleCA+PSBsZW4gdGhlblxuICAgICAgICByYWlzZSAoVW5kZWZpbmVkIChcIkluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb3V0IG9mIGJvdW5kc1wiLCBqcykpXG4gICAgICBlbHNlIExpc3QubnRoIGwgd3JhcHBlZF9pbmRleFxuICB8IGpzIC0+XG4gICAgICB0eXBlcnIgKFwiQ2FuJ3QgZ2V0IGluZGV4IFwiIF4gc3RyaW5nX29mX2ludCBpIF4gXCIgb2Ygbm9uLWFycmF5IHR5cGUgXCIpIGpzXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBgTGlzdCAoTGlzdC5tYXAgZiBsKVxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IG1hcCBmdW5jdGlvbiBvdmVyIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCB0b19hc3NvYyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIG9iaiAtPiBvYmpcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBvYmplY3QsIGdvdCBcIiBqc1xuXG5sZXQgdG9fb3B0aW9uIGYgPSBmdW5jdGlvbiBgTnVsbCAtPiBOb25lIHwgeCAtPiBTb21lIChmIHgpXG5sZXQgdG9fYm9vbCA9IGZ1bmN0aW9uIGBCb29sIGIgLT4gYiB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wsIGdvdCBcIiBqc1xuXG5sZXQgdG9fYm9vbF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBCb29sIGIgLT4gU29tZSBiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGJvb2wgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXIgPSBmdW5jdGlvblxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIHwgYEZsb2F0IGYgLT4gZlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgfCBgRmxvYXQgZiAtPiBTb21lIGZcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyIG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IGZcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdF9vcHRpb24gPSBmdW5jdGlvblxuICB8IGBGbG9hdCBmIC0+IFNvbWUgZlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IGlcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50X29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gU29tZSBzXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZyBvciBudWxsLCBnb3QgXCIganNcblxubGV0IGNvbnZlcnRfZWFjaCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IExpc3QubWFwIGYgbFxuICB8IGpzIC0+IHR5cGVyciBcIkNhbid0IGNvbnZlcnQgZWFjaCBlbGVtZW50IG9mIG5vbi1hcnJheSB0eXBlIFwiIGpzXG5cbmxldCByZWMgcmV2X2ZpbHRlcl9tYXAgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZXZfZmlsdGVyX21hcCBmIGFjYyB0bFxuICAgICAgfCBTb21lIHkgLT4gcmV2X2ZpbHRlcl9tYXAgZiAoeSA6OiBhY2MpIHRsKVxuXG5sZXQgZmlsdGVyX21hcCBmIGwgPSBMaXN0LnJldiAocmV2X2ZpbHRlcl9tYXAgZiBbXSBsKVxuXG5sZXQgcmVjIHJldl9mbGF0dGVuIGFjYyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gYWNjXG4gIHwgeCA6OiB0bCAtPiAoXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYExpc3QgbDIgLT4gcmV2X2ZsYXR0ZW4gKExpc3QucmV2X2FwcGVuZCBsMiBhY2MpIHRsXG4gICAgICB8IF8gLT4gcmV2X2ZsYXR0ZW4gYWNjIHRsKVxuXG5sZXQgZmxhdHRlbiBsID0gTGlzdC5yZXYgKHJldl9mbGF0dGVuIFtdIGwpXG5cbmxldCBmaWx0ZXJfaW5kZXggaSBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgTGlzdCBsIC0+ICggdHJ5IFNvbWUgKExpc3QubnRoIGwgaSkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9saXN0IGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgTGlzdCBsIC0+IFNvbWUgbCB8IF8gLT4gTm9uZSkgbFxuXG5sZXQgZmlsdGVyX21lbWJlciBrIGwgPVxuICBmaWx0ZXJfbWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IGBBc3NvYyBsIC0+ICggdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBsKSB3aXRoIF8gLT4gTm9uZSkgfCBfIC0+IE5vbmUpXG4gICAgbFxuXG5sZXQgZmlsdGVyX2Fzc29jIGwgPSBmaWx0ZXJfbWFwIChmdW5jdGlvbiBgQXNzb2MgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfYm9vbCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEJvb2wgeCAtPiBTb21lIHggfCBfIC0+IE5vbmUpIGxcbmxldCBmaWx0ZXJfaW50IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8ICBgSW50IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICAgICkgbFxuXG5sZXQgZmlsdGVyX2Zsb2F0IGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgYEZsb2F0IHggLT4gU29tZSB4XG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGZpbHRlcl9udW1iZXIgbCA9XG4gIGZpbHRlcl9tYXAgKFxuICAgIGZ1bmN0aW9uXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgYFN0cmluZyB4IC0+IFNvbWUgeFxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBrZXlzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKGtleSwgXykgLT4ga2V5KVxuXG5sZXQgdmFsdWVzIG8gPVxuICB0b19hc3NvYyBvIHw+IExpc3QubWFwIChmdW4gKF8sIHZhbHVlKSAtPiB2YWx1ZSlcblxubGV0IGNvbWJpbmUgKGZpcnN0IDogdCkgKHNlY29uZCA6IHQpID1cbiAgbWF0Y2ggKGZpcnN0LCBzZWNvbmQpIHdpdGhcbiAgfCBgQXNzb2MgYSwgYEFzc29jIGIgLT4gKGBBc3NvYyAoYSBAIGIpIDogdClcbiAgfCBhLCBiIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiRXhwZWN0ZWQgdHdvIG9iamVjdHMsIGNoZWNrIGlucHV0c1wiKVxuZW5kXG5cbiIsIlxuKCoqIHszIFR5cGUgb2YgdGhlIEpTT04gdHJlZX0gKilcblxudHlwZSB0ID1cbiAgICBbXG4gICAgfCBgTnVsbFxuICAgIHwgYEJvb2wgb2YgYm9vbFxuICAgIHwgYEludCBvZiBpbnRcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgfCBgRmxvYXQgb2YgZmxvYXRcbiAgICB8IGBGbG9hdGxpdCBvZiBzdHJpbmdcbiAgICB8IGBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBDb21tb24uanNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQ29tbW9uLmpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIENvbW1vbi5qc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3N0ZF90dXBsZSBvYiBsXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvID1cbiAgbWF0Y2ggbyB3aXRoXG4gICAgICBOb25lIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgICAgICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICAgIHdyaXRlX3N0ZF9qc29uIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gICgqIHRoaXMgcmVxdWlyZXMgYW4gaW50IGFuZCBuZXZlciB1c2VzIGl0LiBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmVcbiAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBub3QgYnJlYWsgdGhlIHNpZ25hdHVyIGJ1dCBjYW4gc2FmZWx5XG4gICAgIGJlIGNoYW5nZWQgdG8gcmVxdWlyZSB1bml0IGluIGEgZnV0dXJlIGNvbXBhdGliaWxpdHktYnJlYWtpbmdcbiAgICAgcmVsZWFzZSAqKVxuICBsZXQgXyA6IGludCA9IG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYikgaW5cbiAgQnVmZmVyLmNsZWFyIG9iXG5cbmxldCB0b19maWxlID9sZW4gP3N0ZCA/KHN1ZiA9IFwiXFxuXCIpIGZpbGUgeCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyB4O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5sZXQgc2VxX3RvX2J1ZmZlciA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Igc3QgPVxuICBTZXEuaXRlciAodG9fYnVmZmVyIH5zdWYgP3N0ZCBvYikgc3RcblxubGV0IHNlcV90b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIHN0ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT5cbiAgICAgICAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICAgICAgICAgb2JcbiAgaW5cbiAgc2VxX3RvX2J1ZmZlciB+c3VmID9zdGQgb2Igc3Q7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgc2VxX3RvX2NoYW5uZWwgP2J1ZiA/KGxlbj0yMDk2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgb2Mgc2VxID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICBTZXEuaXRlciAoZnVuIGpzb24gLT5cbiAgICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIGpzb247XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gICAgQnVmZmVyLmNsZWFyIG9iO1xuICApIHNlcVxuXG5sZXQgc2VxX3RvX2ZpbGUgP2xlbiA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgZmlsZSBzdCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IGZpbGUgaW5cbiAgdHJ5XG4gICAgc2VxX3RvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2Mgc3Q7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cblxubGV0IHJlYyBzb3J0ID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCAtPlxuICAgICAgbGV0IGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIChmdW4gKGssIHYpIC0+IChrLCBzb3J0IHYpKSBsKSBpblxuICAgICAgYEFzc29jIChMaXN0LnN0YWJsZV9zb3J0IChmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpIGwpXG4gIHwgYExpc3QgbCAtPlxuICAgICAgYExpc3QgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgfCBgVHVwbGUgbCAtPlxuICAgICAgYFR1cGxlIChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgYXMgeCAtPlxuICAgICAgbGV0IHYnID0gc29ydCB2IGluXG4gICAgICBpZiB2ID09IHYnIHRoZW4geFxuICAgICAgZWxzZVxuICAgICAgICBgVmFyaWFudCAoaywgU29tZSB2JylcbiAgfCB4IC0+IHhcblxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEZsb2F0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlRlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgRmxvYXRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdGxpdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIHwgYEludGxpdCBhLCBgSW50bGl0IGIgLT4gYSA9IGJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIHwgYFN0cmluZ2xpdCBhLCBgU3RyaW5nbGl0IGIgLT4gYSA9IGJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICB8IGBMaXN0IHhzLCBgTGlzdCB5cyAtPlxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgZXF1YWwgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IF8gLT4gZmFsc2VcblxubW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIHwgYEludCB4IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IChqc29uX3N0cmluZ19vZl9pbnQgeClcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIHwgYEludGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG5lbmRcblxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiIsIm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4hIFlvanNvblxuXG50eXBlIHQgPSBZb2pzb24uU2FmZS50XG5cbmxldCB5b2pzb25fb2ZfdW5pdCAoKSA6IHQgPSBgTnVsbFxubGV0IHlvanNvbl9vZl9ib29sIGIgOiB0ID0gYEJvb2wgYlxubGV0IHlvanNvbl9vZl9zdHJpbmcgc3RyIDogdCA9IGBTdHJpbmcgc3RyXG5sZXQgeW9qc29uX29mX2J5dGVzIGJ5dGVzIDogdCA9IGBTdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCB5b2pzb25fb2ZfY2hhciBjIDogdCA9IGBTdHJpbmcgKFN0cmluZy5tYWtlIDEgYylcbmxldCB5b2pzb25fb2ZfaW50IG4gOiB0ID0gYEludCBuXG5sZXQgeW9qc29uX29mX2Zsb2F0IG4gOiB0ID0gYEZsb2F0IG5cbmxldCB5b2pzb25fb2ZfaW50MzIgKG4gOiBJbnQzMi50KSA6IHQgPSBgSW50bGl0IChJbnQzMi50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfaW50NjQgKG4gOiBJbnQ2NC50KSA6IHQgPSBgSW50bGl0IChJbnQ2NC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfbmF0aXZlaW50IG4gOiB0ID0gYEludGxpdCAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9yZWYgeW9qc29uX29mX19hIHJmID0geW9qc29uX29mX19hICFyZlxubGV0IHlvanNvbl9vZl9sYXp5X3QgeW9qc29uX29mX19hIGx2ID0geW9qc29uX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgeW9qc29uX29mX29wdGlvbiB5b2pzb25fb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiB5b2pzb25fb2ZfX2EgeFxuICB8IE5vbmUgLT4gYE51bGxcbjs7XG5cbmxldCB5b2pzb25fb2ZfcGFpciB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIChhLCBiKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiIF1cbjs7XG5cbmxldCB5b2pzb25fb2ZfdHJpcGxlIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgeW9qc29uX29mX19jIChhLCBiLCBjKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiOyB5b2pzb25fb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgeW9qc29uX29mX2xpc3QgeW9qc29uX29mX19hIGxzdCA9IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIH5mOnlvanNvbl9vZl9fYSBsc3QpKVxuXG5sZXQgeW9qc29uX29mX2FycmF5IHlvanNvbl9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0geW9qc29uX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHlvanNvbl9vZl9oYXNodGJsIHlvanNvbl9vZl9rZXkgeW9qc29uX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gYExpc3QgWyB5b2pzb25fb2Zfa2V5IGs7IHlvanNvbl9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCB5b2pzb25fb2Zfb3BhcXVlIF8gPSBgU3RyaW5nIFwiPG9wYXF1ZT5cIlxubGV0IHlvanNvbl9vZl9mdW4gXyA9IGBTdHJpbmcgXCI8ZnVuPlwiXG5cbmV4Y2VwdGlvbiBPZl95b2pzb25fZXJyb3Igb2YgZXhuICogdFxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2ZfeW9qc29uX2Vycm9yX2V4biBleGMgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoZXhjLCB5b2pzb24pKVxubGV0IG9mX3lvanNvbl9lcnJvciB3aGF0IHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKEZhaWx1cmUgd2hhdCwgeW9qc29uKSlcblxubGV0IHVuaXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gKClcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInVuaXRfb2ZfeW9qc29uOiBgTnVsbCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBib29sX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBCb29sIHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYm9vbF9vZl95b2pzb246IHRydWUvZmFsc2UgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgc3RyaW5nX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwic3RyaW5nX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJ5dGVzX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJ5dGVzX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGNoYXJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiB5b2pzb247XG4gICAgc3RyLlswXVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBvZiBzaXplIG9uZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgZmxvYXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEZsb2F0IHYgLT4gdlxuICB8IGBJbnQgaSAtPiBmbG9hdF9vZl9pbnQgaVxuICB8IGBJbnRsaXQgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImZsb2F0X29mX3lvanNvbjogZmxvYXQgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50MzJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50MzIub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQzMi5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50MzJfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDY0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDY0Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50NjQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDY0X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBuYXRpdmVpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gTmF0aXZlaW50Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gTmF0aXZlaW50Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJuYXRpdmVpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHJlZl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IHJlZiAoYV9fb2ZfeW9qc29uIHlvanNvbilcbmxldCBsYXp5X3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSBMYXp5LmZyb21fdmFsIChhX19vZl95b2pzb24geW9qc29uKVxuXG5sZXQgb3B0aW9uX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwgZWwgLT4gU29tZSAoYV9fb2ZfeW9qc29uIGVsKVxuOztcblxubGV0IHBhaXJfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGEsIGJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInBhaXJfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IHRyaXBsZV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiBjX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbjsgY195b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBsZXQgYyA9IGNfX29mX3lvanNvbiBjX3lvanNvbiBpblxuICAgIGEsIGIsIGNcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInRyaXBsZV9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgbGlzdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3lvanNvbiBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImxpc3Rfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGFycmF5X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbXSAtPiBbfHxdXG4gIHwgYExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3lvanNvbiBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3lvanNvbiBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImFycmF5X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBoYXNodGJsX29mX3lvanNvbiBrZXlfb2ZfeW9qc29uIHZhbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgWyBrX3lvanNvbjsgdl95b2pzb24gXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl95b2pzb24ga195b2pzb24pIH5kYXRhOih2YWxfb2ZfeW9qc29uIHZfeW9qc29uKVxuICAgICAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHlvanNvblxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgb3BhcXVlX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJvcGFxdWVfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgeW9qc29uXG47O1xuXG5sZXQgZnVuX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJmdW5fb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGxldCB5b2pzb25fb2ZfYXJyYXkgPSB5b2pzb25fb2ZfYXJyYXlcbiAgbGV0IGFycmF5X29mX3lvanNvbiA9IGFycmF5X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Jvb2wgPSB5b2pzb25fb2ZfYm9vbFxuICBsZXQgYm9vbF9vZl95b2pzb24gPSBib29sX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2NoYXIgPSB5b2pzb25fb2ZfY2hhclxuICBsZXQgY2hhcl9vZl95b2pzb24gPSBjaGFyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Zsb2F0ID0geW9qc29uX29mX2Zsb2F0XG4gIGxldCBmbG9hdF9vZl95b2pzb24gPSBmbG9hdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQgPSB5b2pzb25fb2ZfaW50XG4gIGxldCBpbnRfb2ZfeW9qc29uID0gaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDMyID0geW9qc29uX29mX2ludDMyXG4gIGxldCBpbnQzMl9vZl95b2pzb24gPSBpbnQzMl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQ2NCA9IHlvanNvbl9vZl9pbnQ2NFxuICBsZXQgaW50NjRfb2ZfeW9qc29uID0gaW50NjRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGlzdCA9IHlvanNvbl9vZl9saXN0XG4gIGxldCBsaXN0X29mX3lvanNvbiA9IGxpc3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbmF0aXZlaW50ID0geW9qc29uX29mX25hdGl2ZWludFxuICBsZXQgbmF0aXZlaW50X29mX3lvanNvbiA9IG5hdGl2ZWludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9vcHRpb24gPSB5b2pzb25fb2Zfb3B0aW9uXG4gIGxldCBvcHRpb25fb2ZfeW9qc29uID0gb3B0aW9uX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3JlZiA9IHlvanNvbl9vZl9yZWZcbiAgbGV0IHJlZl9vZl95b2pzb24gPSByZWZfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfc3RyaW5nID0geW9qc29uX29mX3N0cmluZ1xuICBsZXQgc3RyaW5nX29mX3lvanNvbiA9IHN0cmluZ19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ieXRlcyA9IHlvanNvbl9vZl9ieXRlc1xuICBsZXQgYnl0ZXNfb2ZfeW9qc29uID0gYnl0ZXNfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfdW5pdCA9IHlvanNvbl9vZl91bml0XG4gIGxldCB1bml0X29mX3lvanNvbiA9IHVuaXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGF6eV90ID0geW9qc29uX29mX2xhenlfdFxuICBsZXQgbGF6eV90X29mX3lvanNvbiA9IGxhenlfdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9oYXNodGJsID0geW9qc29uX29mX2hhc2h0YmxcbiAgbGV0IGhhc2h0Ymxfb2ZfeW9qc29uID0gaGFzaHRibF9vZl95b2pzb25cbmVuZFxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBZb2pzb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4hIFN0ZExhYmVsc1xub3BlbiBZb2pzb25fY29udlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWdcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3lvanNvbjogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHlvanNvbiBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3lvanNvbjogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIFxcXG4gICAgICAgZmllbGRzXCJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSB5b2pzb25cbjs7XG4iLCJtb2R1bGUgWW9qc29uX2NvbnZfZXJyb3IgPSBZb2pzb25fY29udl9lcnJvclxubW9kdWxlIFlvanNvbl9jb252ID0gWW9qc29uX2NvbnZcbm1vZHVsZSBZb2pzb25hYmxlID0gWW9qc29uYWJsZV9pbnRmXG5tb2R1bGUgWW9qc29uID0gWW9qc29uXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgICB8IE5vbmVcbiAgICB8IFNvbWUgb2YgJ2FcbmVuZFxuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgcG9seV9lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IGZ1biB4IC0+ICF4XG4iLCIjIDEgXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbnR5cGUgbm9ucmVjIGludCA9IGludFxudHlwZSBub25yZWMgY2hhciA9IGNoYXJcbnR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZ1xudHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdFxudHlwZSBub25yZWMgYm9vbCA9IGJvb2xcbnR5cGUgbm9ucmVjIHVuaXQgPSB1bml0XG50eXBlIG5vbnJlYyBleG4gPSBleG5cbnR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXlcbnR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0XG50eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb25cbnR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludFxudHlwZSBub25yZWMgaW50MzIgPSBpbnQzMlxudHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NFxudHlwZSBub25yZWMgJ2EgbGF6eV90ID0gJ2EgbGF6eV90XG50eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzXG5cbiMgMTggXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbigqIFdlIHJlcXVpcmUgNC4wOCB3aGlsZSA0LjA3IGFscmVhZHkgaGFzIGEgU3RkbGliIG1vZHVsZS5cbiAgIEluIDQuMDcsIHRoZSB0eXBlIGVxdWFsaXRpZXMgb24gU3RkbGliLlBlcnZhc2l2ZXNcbiAgIGFyZSBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhlICdpbmNsdWRlIFN0ZGxpYidcbiAgIGJlbG93IHRvIHNhdGlzZnkgdGhlIHNpZ25hdHVyZSBjb25zdHJhaW50cyBvblxuICAgUHB4X2Rlcml2aW5nX3J1bnRpbWUuUGVydmFzaXZlcy4gKilcbm1vZHVsZSBTdGRsaWIgPSBTdGRsaWJcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSByZXN1bHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5cbiAgdHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuZW5kXG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbm9wZW4gU3RvcmVcblxubW9kdWxlIE1ha2UgKFMgOiBTVE9SRSkgPSBzdHJ1Y3RcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIEluIHRoaXMgdmVyc2lvbiB0aGUgY29kZSwgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11c3Qgbm90IG11dGFibGUuIEluZGVlZCxcbiAgIGV2ZXJ5IG11dGF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHZpYSBbUy5zZXRdLiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mICdhIHJyZWZcbnwgUm9vdCBvZiByYW5rICogJ2FcblxuKCogVGhlIHR5cGUgWydhIHJyZWZdIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBycmVmID1cbiAgJ2EgY29udGVudCBTLnJyZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHR5cGUgb2Ygc3RvcmVzLCBhbmQgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIG5ldyBzdG9yZSwgYXJlIHRob3NlXG4gICBvZiB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBbU10uICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICAnYSBjb250ZW50IFMuc3RvcmVcblxubGV0IG5ld19zdG9yZSA6IHVuaXQgLT4gJ2Egc3RvcmUgPVxuICBTLm5ld19zdG9yZVxuXG5sZXQgY29weSA6ICdhIHN0b3JlIC0+ICdhIHN0b3JlID1cbiAgUy5jb3B5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHMgdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgUy5tYWtlIHMgKFJvb3QgKDAsIHYpKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCBzIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIF8pIC0+XG4gICAgICB4XG4gIHwgTGluayB5IC0+XG4gICAgICBsZXQgeiA9IGZpbmQgcyB5IGluXG4gICAgICBpZiBTLmVxIHMgeSB6IHRoZW5cbiAgICAgICAgelxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbGlua190b196ID0gUy5nZXQgcyB5IGluXG4gICAgICAgIFMuc2V0IHMgeCBsaW5rX3RvX3o7XG4gICAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiBib29sID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSBzIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlIHNhbWVcbiAgIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhIHBoeXNpY2FsXG4gICBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XSBhbmQgW3ldIGFyZVxuICAgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBTLmVxIHMgeCB5IHx8IFMuZXEgcyAoZmluZCBzIHgpIChmaW5kIHMgeSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldF8gcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbZ2V0IHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICAgICAgdlxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBnZXRfIHMgeFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0XyBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtzZXQgcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAociwgXykgLT5cbiAgICAgICAgICBTLnNldCBzIHkgKFJvb3QgKHIsIHYpKVxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBzZXRfIHMgeCB2XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiBzIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCBfKSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7IHlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpOyB4XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocnggKyAxLCB2eCkpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgcyAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgdnkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIFMuc2V0IHMgeSAoUm9vdCAocnksIHYpKTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gUy5zZXQgcyB4IChSb290IChyeCwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCsxLCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIFdlIG1ha2UgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11dGFibGUsIGFuZCB3ZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdFxuICAgZXZlcnkgdmVydGV4IHVuaXF1ZWx5IG93bnMgaXRzIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHVzIHRvIHVwZGF0ZSBhIGNvbnRlbnRcbiAgIGluIHBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBjb250ZW50IGFuZCB1cGRhdGluZyB0aGUgdmVydGV4IHdpdGhcbiAgIHRoaXMgbmV3IGNvbnRlbnQuXG5cbiAgIFdlIG9idGFpbiB0aGUgcHJvcGVydHkgdGhhdDpcbiAgIC0gb25seSBbbWFrZV0gYWxsb2NhdGVzIGEgbmV3IHZlcnRleCAoYSByZWZlcmVuY2UgYW5kIGEgW1Jvb3RdIGNvbnRlbnQpO1xuICAgLSBvbmx5IFt1bmlvbl0gYW5kIFttZXJnZV0gYWxsb2NhdGUgYSBuZXcgZWRnZSAoYSBbTGlua10gY29udGVudCkuXG4gICBbZmluZF0sIFtnZXRdLCBbc2V0XSwgW2VxXSBhbGxvY2F0ZSBubyBtZW1vcnkuICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgeyBtdXRhYmxlIHBhcmVudCA6ICdhIGVsZW0gfVxufCBSb290IG9mIHsgbXV0YWJsZSByYW5rIDogcmFuazsgbXV0YWJsZSB2YWx1ZSA6ICdhIH1cblxuKCogVGhlIHR5cGUgWydhIGVsZW1dIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBlbGVtID1cbiAgJ2EgY29udGVudCByZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2Ugdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHYgOiAnYSkgOiAnYSBlbGVtID1cbiAgcmVmIChSb290IHsgcmFuayA9IDA7IHZhbHVlID0gdiB9KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIHNvIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kICh4IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgeFxuICB8IExpbmsgKHsgcGFyZW50ID0geSB9IGFzIGxpbmspIC0+XG4gICAgICBsZXQgeiA9IGZpbmQgeSBpblxuICAgICAgaWYgeiAhPSB5IHRoZW5cbiAgICAgICAgbGluay5wYXJlbnQgPC0gejtcbiAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlICh4IDogJ2EgZWxlbSkgOiBib29sID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlXG4gICBzYW1lIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhXG4gICBwaHlzaWNhbCBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XVxuICAgYW5kIFt5XSBhcmUgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6IGJvb2wgPVxuICB4ID09IHkgfHwgZmluZCB4ID09IGZpbmQgeVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0IHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXQgKHggOiAnYSBlbGVtKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgeyB2YWx1ZSA9IHY7IF8gfSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXQgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldCAoeCA6ICdhIGVsZW0pICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHJvb3QgLT5cbiAgICAgIHJvb3QudmFsdWUgPC0gdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyBfIH0gYXMgcm9vdHgpLCBSb290IHsgcmFuayA9IHJ5OyBfIH0gLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4fTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IHZhbHVlID0gdnggfSBhcyByb290eCksXG4gICAgICBSb290ICh7IHJhbmsgPSByeTsgdmFsdWUgPSB2eSB9IGFzIHJvb3R5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiByb290eS52YWx1ZSA8LSB2O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgSU5UTUFQID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgZW1wdHk6ICdhIHRcbiAgdmFsIGZpbmQ6IGludCAtPiAnYSB0IC0+ICdhXG4gIHZhbCBhZGQ6IGludCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW50TWFwIDogSU5UTUFQKSA9IHN0cnVjdFxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGEgcGFpciBvZiBhbiBpbnRlZ2VyIGFkZHJlc3MgYW5kIGEgbWFwIG9mXG4gICBpbnRlZ2VyIGFkZHJlc3NlcyB0byB2YWx1ZXMuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGVcbiAgIGRvbWFpbiBvZiB0aGUgbWFwIFtjb250ZW50XSBpcyB0aGUgc2VtaS1vcGVuIGludGVydmFsIG9mIHplcm9cbiAgIChpbmNsdWRlZCkgdXAgdG8gW2xpbWl0XSAoZXhjbHVkZWQpLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBjb250ZW50IG9mIHRoZSBzdG9yZS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBJbnRNYXAudFxufVxuXG5sZXQgbmV3X3N0b3JlICgpID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBJbnRNYXAuZW1wdHlcbn1cblxuKCogQmVjYXVzZSBhIHBlcnNpc3RlbnQgbWFwIGlzIHVzZWQsIGNvcHlpbmcgYSBzdG9yZSBhbW91bnRzIHRvIGNvcHlpbmdcbiAgIHRoZSBtdXRhYmxlIHJlY29yZCBhdCB0aGUgcm9vdC4gKilcblxubGV0IGNvcHkgcyA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMganVzdCBhbiBpbnRlZ2VyIGFkZHJlc3MuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG5sZXQgbWFrZSBzIHYgPVxuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudDtcbiAgeFxuXG4oKiBbY2hlY2sgcyB4XSBjaGVja3MgdGhhdCB0aGUgYWRkcmVzcyBbeF0gaXMgaW4gcmFuZ2UgZm9yIHRoZSBzdG9yZSBbc10uIElmXG4gICB0aGlzIGR5bmFtaWMgY2hlY2sgZmFpbHMsIHRoZW4gdGhlIHVzZXIgaXMgY29uZnVzZWQgYW5kIGhhcyBwYXNzZWQgdXMgYW5cbiAgIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKElmIHRoZSBjaGVjayBzdWNjZWVkcyxcbiAgIHRoZSB1c2VyIG1heSBiZSBjb25mdXNlZCB0b28hIGJ1dCB3ZSBjYW5ub3QgZGV0ZWN0IGl0LikgKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBnZXQgcyB4ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIEludE1hcC5maW5kIHggcy5jb250ZW50XG5cbmxldCBzZXQgcyB4IHYgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudFxuXG5sZXQgZXEgcyAoeCA6IGludCkgKHkgOiBpbnQpID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcblxuZW5kXG5cbigqIEluY2x1ZGUgdGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIG9mIHRoZSBhYm92ZSBmdW5jdG9yLiAqKVxuXG5pbmNsdWRlIE1ha2UoTWFwLk1ha2Uoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgY29tcGFyZSA9ICgtKSAoKiBvayBzaW5jZSB0aGUgYXJndW1lbnRzIGFyZSBub25uZWdhdGl2ZSBpbnRlZ2VycyAqKVxuZW5kKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXaGVuIE9DYW1sJ3MgYnVpbHQtaW4gc3RvcmUgaXMgdXNlZCwgbm8gZXhwbGljaXQgc3RvcmUgaXMgbmVlZGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgdW5pdFxuXG5sZXQgbmV3X3N0b3JlICgpID1cbiAgKClcblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhIHByaW1pdGl2ZSByZWZlcmVuY2UuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gICdhIHJlZlxuXG5sZXQgbWFrZSAoKSB2ID1cbiAgcmVmIHZcblxubGV0IGdldCAoKSB4ID1cbiAgIXhcblxubGV0IHNldCAoKSB4IHYgPVxuICB4IDo9IHZcblxubGV0IGVxICgpIHggeSA9XG4gIHggPT0geVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcmVmZXJlbmNlIGNlbGwgcmVjb3JkcyBib3RoIGl0cyBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUgYW5kXG4gICBpdHMgbGFzdCBjb21taXR0ZWQgdmFsdWUuIEEgY2VsbCBpcyBjb25zaWRlcmVkIHN0YWJsZSB3aGVuIHRoZXNlIHR3byB2YWx1ZXNcbiAgIGFyZSAocGh5c2ljYWxseSkgZXF1YWwsIGFuZCB1bnN0YWJsZSBvdGhlcndpc2UuICopXG5cbigqIE9uZSBjb3VsZCBwZXJoYXBzIGVucmljaCBlYWNoIGNlbGwgd2l0aCBhIHBvaW50ZXIgdG8gaXRzIHN0b3JlLCBzbyBhcyB0b1xuICAgZW5zdXJlIGF0IHJ1bnRpbWUgdGhhdCB0aGUgdXNlciBpcyBub3QgY29uZnVzZWQuICopXG5cbnR5cGUgJ2EgcnJlZiA9IHtcbiAgKCogVGhlIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjdXJyZW50OiAnYTtcbiAgKCogVGhlIGxhc3QgY29tbWl0dGVkIHZhbHVlLiAqKVxuICBtdXRhYmxlIGNvbW1pdHRlZDogJ2Fcbn1cblxuKCogQSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHN0YWNrIG9mIGFsbCB1bnN0YWJsZSBjZWxscyAoYW5kIHBvc3NpYmx5IHNvbWVcbiAgIHN0YWJsZSBjZWxscyB0b28sIGFsdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkpLiAqKVxuXG50eXBlICdhIHRyYW5zYWN0aW9uID1cbiAgJ2EgcnJlZiBTdGFjay50XG5cbigqIEEgc3RvcmUgY29udGFpbnMgYW4gb3B0aW9uYWwgdHJhbnNhY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHdoZXRoZXIgYVxuICAgdHJhbnNhY3Rpb24gaXMgY3VycmVudGx5IG9uZ29pbmcuIFRyYW5zYWN0aW9ucyBjYW5ub3QgYmUgbmVzdGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgeyBtdXRhYmxlIHRyYW5zYWN0aW9uOiAnYSB0cmFuc2FjdGlvbiBvcHRpb24gfVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPVxuICB7IHRyYW5zYWN0aW9uID0gTm9uZSB9XG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxubGV0IG1ha2UgKF9zIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIHsgY3VycmVudCA9IHY7IGNvbW1pdHRlZCA9IHYgfVxuXG5sZXQgZ2V0IChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICB4LmN1cnJlbnRcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gICgqIElmIHRoZSBuZXcgdmFsdWUgaGFwcGVucyB0byBiZSB0aGUgY3VycmVudCB2YWx1ZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby4gKilcbiAgbGV0IGN1cnJlbnQgPSB4LmN1cnJlbnQgaW5cbiAgaWYgdiA9PSBjdXJyZW50IHRoZW5cbiAgICAoKVxuICBlbHNlIGJlZ2luIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgqIE91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiwgdHdvIG5vcm1hbCB3cml0ZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQuXG4gICAgICAgICBUaGUgY2VsbCByZW1haW5zIHN0YWJsZS4gTm90aGluZyBpcyBsb2dnZWQuICopXG4gICAgICB4LmN1cnJlbnQgPC0gdjtcbiAgICAgIHguY29tbWl0dGVkIDwtIHZcbiAgfCBTb21lIHN0YWNrIC0+XG4gICAgICAoKiBXZSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24uICopXG4gICAgICAoKiBJZiB0aGlzIGNlbGwgd2FzIHN0YWJsZSBhbmQgbm93IGJlY29tZXMgdW5zdGFibGUsIHRoZW4gaXQgbXVzdCBiZVxuICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgc2V0IG9mIHVuc3RhYmxlIGNlbGxzLCB3aGljaCBpcyByZWNvcmRlZCBhcyBwYXJ0XG4gICAgICAgICBvZiB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICBpZiBjdXJyZW50ID09IHguY29tbWl0dGVkIHRoZW5cbiAgICAgICAgU3RhY2sucHVzaCB4IHN0YWNrO1xuICAgICAgKCogVGhlIGNlbGwgbXVzdCB0aGVuIGJlIHVwZGF0ZWQuIElmIFt2XSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvXG4gICAgICAgICBbY29tbWl0dGVkXSwgdGhpcyBjb3VsZCBtYWtlIHRoZSBjZWxsIHN0YWJsZSBhZ2Fpbi4gV2UgZG8gbm90XG4gICAgICAgICBjaGVjayBmb3IgdGhpcyB1bmxpa2VseSBzaXR1YXRpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2V0IG9mXG4gICAgICAgICB1bnN0YWJsZSBjZWxscyBjb3VsZCBhY3R1YWxseSBjb250YWluIHN0YWJsZSBjZWxscyB0b28uICopXG4gICAgICB4LmN1cnJlbnQgPC0gdlxuICAgIGVuZFxuXG5sZXQgZXEgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICB4ID09IHlcblxuZXhjZXB0aW9uIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuXG5sZXQgY29tbWl0IHggPVxuICB4LmNvbW1pdHRlZCA8LSB4LmN1cnJlbnRcblxubGV0IHJvbGxiYWNrIHggPVxuICB4LmN1cnJlbnQgPC0geC5jb21taXR0ZWRcblxubGV0IHRlbnRhdGl2ZWx5IChzIDogJ2Egc3RvcmUpIChmIDogdW5pdCAtPiAnYikgOiAnYiA9XG4gIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICAgcmFpc2UgTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHN0YWNrID0gU3RhY2suY3JlYXRlKCkgaW5cbiAgICAgIHMudHJhbnNhY3Rpb24gPC0gU29tZSBzdGFjaztcbiAgICAgIHRyeVxuICAgICAgICBsZXQgYiA9IGYoKSBpblxuICAgICAgICAoKiBDb21taXQgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciBjb21taXQgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIGJcbiAgICAgIHdpdGggZSAtPlxuICAgICAgICBsZXQgYiA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlKCkgaW5cbiAgICAgICAgKCogUm9sbCBiYWNrIGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgcm9sbGJhY2sgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZW5zaWJsZSBhcnJheSwgdGhhdCBpcywgYSBwYWlyIG9mIGFuXG4gICBpbnRlZ2VyIGFkZHJlc3MgYW5kIGFuIGFycmF5LiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGxlbmd0aCBvZlxuICAgdGhlIGFycmF5IGlzIGF0IGxlYXN0IFtsaW1pdF0uIFRoZSBhcmVhIG9mIHRoZSBhcnJheSBhdCBpbmRleCBbbGltaXRdIGFuZFxuICAgYmV5b25kIGlzIGNvbnNpZGVyZWQgdW5pbml0aWFsaXplZC4gKilcblxuKCogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoaXMgYXJlYSBpcyBmaWxsZWQgd2l0aCBhcmJpdHJhcnkgdmFsdWUocylcbiAgIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIGNhbGxzIHRvIFttYWtlXSBvciBbc2V0XS4gVGhpcyBpcyBub3QgaWRlYWwsIGFzIGl0XG4gICBjYW4gY2F1c2UgYSBtZW1vcnkgbGVhay4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIGxvZ2ljYWwgc2l6ZSBvZiB0aGUgYXJyYXk7IGFsc28sIHRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGFycmF5LCB3aG9zZSBsZW5ndGggaXMgYXQgbGVhc3QgW2xpbWl0XS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBhcnJheVxufVxuXG4oKiBUaGUgYXJyYXkgaXMgY3JlYXRlZCB3aXRoIGEgc2l6ZSBhbmQgbGVuZ3RoIG9mIHplcm8uIFdlIGhhdmUgbm8gb3RoZXJcbiAgIGNob2ljZSwgc2luY2Ugd2UgZG8gbm90IGhhdmUgYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYXQgaGFuZC4gKilcblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBbfHxdXG59XG5cbigqIENvcHlpbmcgaXMgc3VwcG9ydGVkLCBidXQgaXMgbm90IGNoZWFwLiBVc2UgYXQgeW91ciBvd24gcmlzay4gKilcblxubGV0IGNvcHkgKHMgOiAnYSBzdG9yZSkgOiAnYSBzdG9yZSA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gQXJyYXkuY29weSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbigqIFRoZSBhcnJheSBqdW1wcyBmcm9tIGxlbmd0aCB6ZXJvIHRvIGxlbmd0aCBbZGVmYXVsdF9pbml0aWFsX2xlbmd0aF0gYXMgc29vblxuICAgYXMgYSBjYWxsIHRvIFttYWtlXSBpcyBtYWRlLiAqKVxuXG5sZXQgZGVmYXVsdF9pbml0aWFsX2xlbmd0aCA9XG4gIDI1NlxuXG4oKiBbZW5sYXJnZSBzIHZdIGluY3JlYXNlcyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAoaWYgbmVjZXNzYXJ5KSBzbyBhcyB0b1xuICAgZW5zdXJlIHRoYXQgW3MubGltaXRdIGJlY29tZXMgYSB2YWxpZCBpbmRleC4gVGhlIGFyZ3VtZW50IFt2XSBpcyB1c2VkIGFzIGFcbiAgIGRlZmF1bHQgdmFsdWUgdG8gZmlsbCB0aGUgdW5pbml0aWFsaXplZCBhcmVhLiAqKVxuXG5sZXQgZW5sYXJnZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgY29udGVudCA9IHMuY29udGVudCBpblxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbnRlbnQgaW5cbiAgaWYgcy5saW1pdCA9IGxlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbmd0aCcgPVxuICAgICAgaWYgbGVuZ3RoID0gMCB0aGVuXG4gICAgICAgIGRlZmF1bHRfaW5pdGlhbF9sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgMiAqIGxlbmd0aFxuICAgIGluXG4gICAgYXNzZXJ0IChzLmxpbWl0IDwgbGVuZ3RoJyk7XG4gICAgbGV0IGNvbnRlbnQnID0gQXJyYXkubWFrZSBsZW5ndGgnIHYgaW5cbiAgICBBcnJheS5ibGl0IGNvbnRlbnQgMCBjb250ZW50JyAwIGxlbmd0aDtcbiAgICBzLmNvbnRlbnQgPC0gY29udGVudCdcbiAgZW5kXG5cbigqIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBhbmQgW0FycmF5LnVuc2FmZV9nZXRdIHdpdGhvdXRcbiAgIGFueSBwcmVjYXV0aW9ucywgc2luY2UgdGhlIE9DYW1sIHR5cGUtY2hlY2tlciBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlXG4gICBpbmRpY2VzIGFyZSBpbiByYW5nZS4gQSBjb25mdXNlZCB1c2VyIGNvdWxkIHBhc3MgcmVmZXJlbmNlcyBpbnRvIHNvbWVcbiAgIG90aGVyIHN0b3JlLiBXZSBjaG9vc2UgdG8gZXhwbGljaXRseSBjaGVjayB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gdGhlXG4gICBsb2dpY2FsIGJvdW5kcyBvZiB0aGUgYXJyYXkgLS0gdGhpcyBpcyBhIG1vcmUgcHJlY2lzZSBjaGVjay4gKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiB1bml0ID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgZW5sYXJnZSBzIHY7XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHY7XG4gIHhcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9nZXQgcy5jb250ZW50IHhcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2XG5cbmxldCBlcSAgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuIiwibGV0IG5ic3AgPSBcIlxceEMyXFx4QTBcIjsgLy8gVVRGLTggZW5jb2RpbmcgZm9yIFUrMDBBMCBcIk5vLWJyZWFrIHNwYWNlXCJcblxuLy8gTk9URTogMzAlIGZhc3RlciB0aGFuIENhbW9taWxlXG5sZXQgbGVuZ3RoID0gKHM6IHN0cmluZyk6IGludCA9PiB7XG4gIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aChzKTtcbiAgbGV0IHJlYyBkaXN0YW5jZV9hdXggPSAoc3RhcnQ6IGludCwgY291bnQ6IGludCkgPT5cbiAgICBpZiAoc3RhcnQgKyBjb3VudCA+PSBzdG9wKSB7XG4gICAgICBzdG9wIC0gY291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuID0gQ2hhci5jb2RlKFN0cmluZy51bnNhZmVfZ2V0KHMsIHN0YXJ0ICsgY291bnQpKTtcbiAgICAgIGlmIChuIDwgMHg4MCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCk7XG4gICAgICB9IGVsc2UgaWYgKG4gPCAweGUwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKG4gPCAweGYwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gIGRpc3RhbmNlX2F1eCgwLCAwKTtcbn07XG4iLCIvLyBNYXBzIGtleWVkIGJ5IGFuIGVuZCBwb3NpdGlvblxuLy8gSW52YXJpZW50OiBrZXlzIGFyZSBhc2NlbmRpbmcgYW5kIHVuaXF1ZVxudHlwZSBrZXkgPSBpbnQ7XG50eXBlIHQoJ2EpID0gbGlzdCgoa2V5LCAnYSkpO1xubGV0IGVtcHR5OiAnYS4gdCgnYSkgPSBbXTtcbmxldCBzaW5nbGV0b246ICdhLiAoa2V5LCAnYSkgPT4gdCgnYSkgPSAocG9zLCB4KSA9PiBbKHBvcywgeCldO1xubGV0IHJlYyB1bmlvbjogJ2EuICgoJ2EsICdhKSA9PiAnYSwgdCgnYSksIHQoJ2EpKSA9PiB0KCdhKSA9XG4gIChmLCB0MSwgdDIpID0+XG4gICAgc3dpdGNoICh0MSwgdDIpIHtcbiAgICB8IChbXSwgdF9vdGhlcikgPT4gdF9vdGhlclxuICAgIHwgKHRfb3RoZXIsIFtdKSA9PiB0X290aGVyXG4gICAgfCAoWyhwMSwgeDEpLCAuLi54czFdLCBbKHAyLCB4MiksIC4uLnhzMl0pID0+XG4gICAgICBpZiAocDEgPCBwMikge1xuICAgICAgICBbKHAxLCB4MSksIC4uLnVuaW9uKGYsIHhzMSwgWyhwMiwgeDIpLCAuLi54czJdKV07XG4gICAgICB9IGVsc2UgaWYgKHAxID4gcDIpIHtcbiAgICAgICAgWyhwMiwgeDIpLCAuLi51bmlvbihmLCBbKHAxLCB4MSksIC4uLnhzMV0sIHhzMildO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgWyhwMSwgZih4MSwgeDIpKSwgLi4udW5pb24oZiwgeHMxLCB4czIpXTtcbiAgICAgIH1cbiAgICB9O1xubGV0IHJlYyBtYXA6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFsocG9zLCBmKHgpKSwgLi4ubWFwKGYsIHJlc3QpXTtcbmxldCByZWMgbWFwaTogJ2EgJ2IuICgoa2V5LCAnYSkgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIGYgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IFsocG9zLCBmKHBvcywgeCkpLCAuLi5tYXBpKGYsIHJlc3QpXTtcbmxldCByZWMgbWFwazogJ2EgJ2IuICgoa2V5LCAnYSkgPT4gKGtleSwgJ2IpLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbZihwb3MsIHgpLCAuLi5tYXBrKGYsIHJlc3QpXTtcbmxldCByZWMgZm9sZF9sZWZ0OiAnYSAnYi4gKChrZXksICdiLCAnYSkgPT4gJ2IsICdiLCB0KCdhKSkgPT4gJ2IgPVxuICAoZiwgeikgPT5cbiAgICBmdW5cbiAgICB8IFtdID0+IHpcbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gZm9sZF9sZWZ0KGYsIGYocG9zLCB6LCB4KSwgcmVzdCk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSB7XG4gIHJvdzogaW50LFxuICBjb2w6IGludCxcbn07XG5cbmxldCBjb21wYXJlID0gKHBvczEsIHBvczIpID0+XG4gIGlmIChwb3MxLnJvdyA8IHBvczIucm93KSB7XG4gICAgKC0xKTtcbiAgfSBlbHNlIGlmIChwb3MxLnJvdyA+IHBvczIucm93KSB7XG4gICAgMTtcbiAgfSBlbHNlIHtcbiAgICBJbnQuY29tcGFyZShwb3MxLmNvbCwgcG9zMi5jb2wpO1xuICB9O1xuXG5sZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vLyBUT0RPOiByZW5hbWUgQW5ub3QgdG8gQW5uP1xuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKSAvLyBJbnZhcmlhbnQ6IGNvbnRhaW5zIG5vIG5ld2xpbmVzLiBUZXh0KFwiXCIpIGlzIGlkZW50aXR5IGZvciBgQ2F0YFxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSkgLy8gQXNzb2NpYXRpdmVcbiAgfCBMaW5lYnJlYWtcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpOyAvLyBBbm5vdGF0aW9uc1xuXG5sZXQgYWxpZ24gPSAobDogdCgnYW5ub3QpKSA9PiBBbGlnbihsKTtcbmxldCBhbm5vdCA9IChhbm5vdDogJ2Fubm90LCBsOiB0KCdhbm5vdCkpID0+IEFubm90KGFubm90LCBsKTtcblxubGV0IHJlYyByZW1vdmVfYW5ub3RzID0gKGxheW91dDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgc3dpdGNoIChsYXlvdXQpIHtcbiAgfCBBbm5vdChfLCBsKSA9PiByZW1vdmVfYW5ub3RzKGwpXG4gIHwgVGV4dChzdHJpbmcpID0+IFRleHQoc3RyaW5nKVxuICB8IENhdChsMSwgbDIpID0+IENhdChyZW1vdmVfYW5ub3RzKGwxKSwgcmVtb3ZlX2Fubm90cyhsMikpXG4gIHwgTGluZWJyZWFrID0+IExpbmVicmVha1xuICB8IEFsaWduKGwpID0+IEFsaWduKHJlbW92ZV9hbm5vdHMobCkpXG4gIH07XG59O1xuXG4vLyBUT0RPP1xuLy9sZXQgdGV4dCA9IChzdHJpbmcpID0+IHRfb2ZfbGF5b3V0KFRleHQoc3RyaW5nKSk7XG4vL2xldCBjYXQgPSAodDEsIHQyKSA9PiB0X29mX2xheW91dChDYXQodDEsIHQyKSk7XG4vL2xldCBsaW5lYnJlYWsgPSB0X29mX2xheW91dChsaW5lYnJlYWspO1xuXG4vLyBUT0RPOiBtb3ZlIHRvIG93biBtb2R1bGVcbnR5cGUgdGV4dCgnYW5ub3QsICdpbXAsICd0KSA9IHtcbiAgLy8gVE9ETzogcmVuYW1lIGBpbXBgXG4gIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiAnaW1wLFxuICBpbXBfYXBwZW5kOiAoJ2ltcCwgJ2ltcCkgPT4gJ2ltcCxcbiAgaW1wX25ld2xpbmU6IGludCA9PiAnaW1wLFxuICBpbXBfb2ZfYW5ub3Q6ICgnYW5ub3QsICdpbXApID0+ICdpbXAsXG4gIHRfb2ZfaW1wOiAnaW1wID0+ICd0LFxufTtcblxubGV0IG1rX29mX2xheW91dDogKHRleHQoJ2Fubm90LCAnaW1wLCAndCksIHQoJ2Fubm90KSkgPT4gJ3QgPVxuICAodGV4dCwgbGF5b3V0KSA9PiB7XG4gICAgbGV0IGNvbHVtbjogcmVmKGludCkgPSByZWYoMCk7XG4gICAgbGV0IHJlYyBnbzogKGludCwgdCgnYW5ub3QpKSA9PiAnaW1wID1cbiAgICAgIChpbmRlbnQsIGxheW91dCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGxheW91dCkge1xuICAgICAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgICAgIGNvbHVtbiA6PSBjb2x1bW5eICsgVW5pY29kZS5sZW5ndGgoc3RyaW5nKTtcbiAgICAgICAgICB0ZXh0LmltcF9vZl9zdHJpbmcoc3RyaW5nKTtcbiAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgIGxldCBpbXAxID0gZ28oaW5kZW50LCBsMSk7XG4gICAgICAgICAgbGV0IGltcDIgPSBnbyhpbmRlbnQsIGwyKTtcbiAgICAgICAgICB0ZXh0LmltcF9hcHBlbmQoaW1wMSwgaW1wMik7XG4gICAgICAgIHwgTGluZWJyZWFrID0+XG4gICAgICAgICAgLy8gVE9ETzogbm8gaW5kZW50IGlmIG9uIGZpbmFsIGxpbmUgYnJlYWtcbiAgICAgICAgICBjb2x1bW4gOj0gaW5kZW50O1xuICAgICAgICAgIHRleHQuaW1wX25ld2xpbmUoaW5kZW50KTtcbiAgICAgICAgfCBBbGlnbihsKSA9PiBnbyhjb2x1bW5eLCBsKVxuICAgICAgICB8IEFubm90KGFubm90LCBsKSA9PiB0ZXh0LmltcF9vZl9hbm5vdChhbm5vdCwgZ28oaW5kZW50LCBsKSlcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgdGV4dC50X29mX2ltcChnbygwLCBsYXlvdXQpKTtcbiAgfTtcblxubGV0IHN0cmluZ19vZl9sYXlvdXQ6ICdhbm5vdC4gdCgnYW5ub3QpID0+IHN0cmluZyA9XG4gIGxheW91dCA9PiB7XG4gICAgbGV0IHJlY29yZDogJ2Fubm90LiB0ZXh0KCdhbm5vdCwgc3RyaW5nLCBzdHJpbmcpID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IHN0cmluZyxcbiAgICAgIGltcF9hcHBlbmQ6IChzMSwgczIpID0+IHMxICsrIHMyLFxuICAgICAgaW1wX25ld2xpbmU6IGluZGVudCA9PiBcIlxcblwiICsrIFN0cmluZy5tYWtlKGluZGVudCwgJyAnKSxcbiAgICAgIGltcF9vZl9hbm5vdDogKF8sIGltcCkgPT4gaW1wLFxuICAgICAgdF9vZl9pbXA6IGltcCA9PiBpbXAsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuXG5sZXQgc3RyaW5nc19vZl9sYXlvdXQ6ICdhbm5vdC4gdCgnYW5ub3QpID0+IGxpc3QoKGludCwgc3RyaW5nKSkgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6XG4gICAgICAnYW5ub3QuXG4gICAgICB0ZXh0KCdhbm5vdCwgbGlzdCgoaW50LCBzdHJpbmcpKSwgbGlzdCgoaW50LCBzdHJpbmcpKSlcbiAgICAgPSB7XG4gICAgICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gWygwLCBzdHJpbmcpXSxcbiAgICAgIGltcF9hcHBlbmQ6IChzMSwgczIpID0+IHtcbiAgICAgICAgc3dpdGNoIChMaXN0LnJldihzMSksIHMyKSB7XG4gICAgICAgIHwgKFtdLCBfKSA9PiBzMlxuICAgICAgICB8IChfLCBbXSkgPT4gczFcbiAgICAgICAgfCAoXG4gICAgICAgICAgICBbKGxhc3RfaW5kZW50XzEsIGxhc3Rfc3RyaW5nXzEpLCAuLi5yZXN0MV0sXG4gICAgICAgICAgICBbKGZpcnN0X2luZGVudF8yLCBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXSxcbiAgICAgICAgICApID0+XG4gICAgICAgICAgYXNzZXJ0KGZpcnN0X2luZGVudF8yID09IDApO1xuICAgICAgICAgIExpc3QucmV2KHJlc3QxKVxuICAgICAgICAgIEAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xICsrIGZpcnN0X3N0cmluZ18yKSwgLi4ucmVzdDJdO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gWyhpbmRlbnQsIFwiXCIpXSxcbiAgICAgIGltcF9vZl9hbm5vdDogKF8sIGltcCkgPT4gaW1wLFxuICAgICAgdF9vZl9pbXA6IHMgPT4gcyxcbiAgICB9O1xuICAgIG1rX29mX2xheW91dChyZWNvcmQsIGxheW91dCk7XG4gIH07XG4iLCJsZXQgc3BsaXRfZmlyc3QgPSAoeHM6IGxpc3QoJ2EpKTogKCdhLCBsaXN0KCdhKSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IGZhaWx3aXRoKFwiZW1wdHkgbGlzdFwiKVxuICB8IFtmaXJzdCwgLi4udHJhaWxpbmddID0+IChmaXJzdCwgdHJhaWxpbmcpXG4gIH07XG5cbmxldCBzcGxpdF9sYXN0X29wdCA9ICh4czogbGlzdCgnYSkpOiBvcHRpb24oKGxpc3QoJ2EpLCAnYSkpID0+XG4gIHN3aXRjaCAoTGlzdC5yZXYoeHMpKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFt5LCAuLi55c10gPT4gU29tZSgoTGlzdC5yZXYoeXMpLCB5KSlcbiAgfTtcbmxldCBzcGxpdF9sYXN0ID0gKHhzOiBsaXN0KCdhKSk6IChsaXN0KCdhKSwgJ2EpID0+XG4gIHN3aXRjaCAoc3BsaXRfbGFzdF9vcHQoeHMpKSB7XG4gIHwgTm9uZSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgYm94ID0ge1xuICBoZWlnaHQ6IGludCxcbiAgd2lkdGg6IGludCxcbn07XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID0ge1xuICBsYXlvdXQ6IHQnKCdhbm5vdCksXG4gIG1ldHJpY3M6IGxpc3QoYm94KSxcbn1cbmFuZCB0JygnYW5ub3QpID1cbiAgfCBMaW5lYnJlYWtcbiAgfCBUZXh0KHN0cmluZylcbiAgfCBBbGlnbih0KCdhbm5vdCkpXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxudHlwZSB3aXRoX29mZnNldCgnYW5ub3QpID0gKGludCwgdCgnYW5ub3QpKTtcblxubGV0IGhlaWdodCA9IChtOiB0KF8pKSA9PlxuICBtLm1ldHJpY3MgfD4gTGlzdC5tYXAoYm94ID0+IGJveC5oZWlnaHQpIHw+IExpc3QuZm9sZF9sZWZ0KCgrKSwgMCk7XG5cbmxldCB3aWR0aCA9ICh+b2Zmc2V0PTAsIG06IHQoXykpID0+XG4gIExpc3QudGwobS5tZXRyaWNzKVxuICB8PiBMaXN0Lm1hcChib3ggPT4gYm94LndpZHRoKVxuICB8PiBMaXN0LmZvbGRfbGVmdChtYXgsIG9mZnNldCArIExpc3QuaGQobS5tZXRyaWNzKS53aWR0aCk7XG5cbmxldCBmb2xkID1cbiAgICAoXG4gICAgICB+bGluZWJyZWFrOiAnYWNjLFxuICAgICAgfnRleHQ6IHN0cmluZyA9PiAnYWNjLFxuICAgICAgfmFsaWduOiAnYWNjID0+ICdhY2MsXG4gICAgICB+Y2F0OiAoJ2FjYywgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5hbm5vdDpcbiAgICAgICAgIC8vIGFsbG93IGNsaWVudCB0byBjb250cm9sIHJlY3Vyc2lvbiBiYXNlZCBvbiBhbm5vdGF0aW9uXG4gICAgICAgICAodCgnYW5ub3QpID0+ICdhY2MsICdhbm5vdCwgdCgnYW5ub3QpKSA9PiAnYWNjLFxuICAgICAgbTogdCgnYW5ub3QpLFxuICAgIClcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgcmVjIGdvID0gKG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVha1xuICAgIHwgVGV4dChzKSA9PiB0ZXh0KHMpXG4gICAgfCBBbGlnbihtKSA9PiBhbGlnbihnbyhtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgYWNjMSA9IGdvKG0xKTtcbiAgICAgIGxldCBhY2MyID0gZ28obTIpO1xuICAgICAgY2F0KGFjYzEsIGFjYzIpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdChnbywgYW5uLCBtKVxuICAgIH07XG4gIGdvKG0pO1xufTtcblxubGV0IG5leHRfcG9zaXRpb24gPVxuICAgICh+aW5kZW50OiBpbnQsIHtyb3csIGNvbH06IE1lYXN1cmVkUG9zaXRpb24udCwgbTogdChfKSlcbiAgICA6IE1lYXN1cmVkUG9zaXRpb24udCA9PiB7XG4gIGxldCB1cGRhdGVkX3JvdyA9IHJvdyArIGhlaWdodChtKSAtIDE7XG4gIGxldCB1cGRhdGVkX2NvbCA9IHtcbiAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChtLm1ldHJpY3MpO1xuICAgIGxhc3Qud2lkdGhcbiAgICArIChcbiAgICAgIHN3aXRjaCAobGVhZGluZykge1xuICAgICAgfCBbXSA9PiBjb2xcbiAgICAgIHwgW18sIC4uLl9dID0+IGluZGVudFxuICAgICAgfVxuICAgICk7XG4gIH07XG4gIHtyb3c6IHVwZGF0ZWRfcm93LCBjb2w6IHVwZGF0ZWRfY29sfTtcbn07XG5cbmxldCBwb3NfZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogTWVhc3VyZWRQb3NpdGlvbi50ID0+ICdhY2MsXG4gICAgICB+dGV4dDogKE1lYXN1cmVkUG9zaXRpb24udCwgc3RyaW5nKSA9PiAnYWNjLFxuICAgICAgfmFsaWduOiAoTWVhc3VyZWRQb3NpdGlvbi50LCAnYWNjKSA9PiAnYWNjLFxuICAgICAgfmNhdDogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYywgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5hbm5vdDpcbiAgICAgICAgIC8vIGxldCBjbGllbnQgY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKFxuICAgICAgICAgICB+Z286IHQoJ2Fubm90KSA9PiAnYWNjLFxuICAgICAgICAgICB+aW5kZW50OiBpbnQsXG4gICAgICAgICAgIH5zdGFydDogTWVhc3VyZWRQb3NpdGlvbi50LFxuICAgICAgICAgICAnYW5ub3QsXG4gICAgICAgICAgIHQoJ2Fubm90KVxuICAgICAgICAgKSA9PlxuICAgICAgICAgJ2FjYyxcbiAgICAgIH5pbmRlbnQ9MCxcbiAgICAgIH5zdGFydDogTWVhc3VyZWRQb3NpdGlvbi50PU1lYXN1cmVkUG9zaXRpb24uemVybyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChpbmRlbnQ6IGludCwgc3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCwgbTogdChfKSkgPT5cbiAgICBzd2l0Y2ggKG0ubGF5b3V0KSB7XG4gICAgfCBMaW5lYnJlYWsgPT4gbGluZWJyZWFrKHN0YXJ0KVxuICAgIHwgVGV4dChzKSA9PiB0ZXh0KHN0YXJ0LCBzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oc3RhcnQsIGdvKHN0YXJ0LmNvbCwgc3RhcnQsIG0pKVxuICAgIHwgQ2F0KG0xLCBtMikgPT5cbiAgICAgIGxldCBtaWQgPSBuZXh0X3Bvc2l0aW9uKH5pbmRlbnQsIHN0YXJ0LCBtMSk7XG4gICAgICBjYXQoc3RhcnQsIGdvKGluZGVudCwgc3RhcnQsIG0xKSwgZ28oaW5kZW50LCBtaWQsIG0yKSk7XG4gICAgfCBBbm5vdChhbm4sIG0pID0+IGFubm90KH5nbz1nbyhpbmRlbnQsIHN0YXJ0KSwgfmluZGVudCwgfnN0YXJ0LCBhbm4sIG0pXG4gICAgfTtcbiAgZ28oaW5kZW50LCBzdGFydCwgbSk7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChNZW1vVGJsOiBNZW1vVGJsLlMpID0+IHtcbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgcmVjIG1rID0gKGw6IExheW91dC50KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICB8IFNvbWUobSkgPT4gT2JqLm1hZ2ljKG0pXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgbSA9XG4gICAgICAgIHN3aXRjaCAobCkge1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIGxldCBib3ggPSB7aGVpZ2h0OiAxLCB3aWR0aDogMH07XG4gICAgICAgICAge21ldHJpY3M6IFtib3gsIGJveF0sIGxheW91dDogTGluZWJyZWFrfTtcbiAgICAgICAgfCBUZXh0KHMpID0+IHtcbiAgICAgICAgICAgIG1ldHJpY3M6IFt7aGVpZ2h0OiAxLCB3aWR0aDogVW5pY29kZS5sZW5ndGgocyl9XSxcbiAgICAgICAgICAgIGxheW91dDogVGV4dChzKSxcbiAgICAgICAgICB9XG4gICAgICAgIHwgQWxpZ24obCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIGxldCBib3VuZGluZ19ib3ggPVxuICAgICAgICAgICAgbS5tZXRyaWNzXG4gICAgICAgICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgICAgICAgKHtoZWlnaHQ6IGJoLCB3aWR0aDogYnd9LCB7aGVpZ2h0LCB3aWR0aH0pID0+XG4gICAgICAgICAgICAgICAgICAge2hlaWdodDogYmggKyBoZWlnaHQsIHdpZHRoOiBtYXgoYncsIHdpZHRoKX0sXG4gICAgICAgICAgICAgICAgIHtoZWlnaHQ6IDAsIHdpZHRoOiAwfSxcbiAgICAgICAgICAgICAgICk7XG4gICAgICAgICAge21ldHJpY3M6IFtib3VuZGluZ19ib3hdLCBsYXlvdXQ6IEFsaWduKG0pfTtcbiAgICAgICAgfCBDYXQobDEsIGwyKSA9PlxuICAgICAgICAgIGxldCBtMSA9IG1rKGwxKTtcbiAgICAgICAgICBsZXQgbTIgPSBtayhsMik7XG4gICAgICAgICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobTEubWV0cmljcyk7XG4gICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QobTIubWV0cmljcyk7XG4gICAgICAgICAgbGV0IG1pZF9ib3ggPSB7XG4gICAgICAgICAgICBoZWlnaHQ6IG1heChsYXN0LmhlaWdodCwgZmlyc3QuaGVpZ2h0KSxcbiAgICAgICAgICAgIHdpZHRoOiBsYXN0LndpZHRoICsgZmlyc3Qud2lkdGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB7bWV0cmljczogbGVhZGluZyBAIFttaWRfYm94LCAuLi50cmFpbGluZ10sIGxheW91dDogQ2F0KG0xLCBtMil9O1xuICAgICAgICB8IEFubm90KGFubm90LCBsKSA9PlxuICAgICAgICAgIGxldCBtID0gbWsobCk7XG4gICAgICAgICAgey4uLm0sIGxheW91dDogQW5ub3QoYW5ub3QsIG0pfTtcbiAgICAgICAgfTtcbiAgICAgIE1lbW9UYmwuc2V0KHRhYmxlLCBPYmoubWFnaWMobCksIE9iai5tYWdpYyhtKSk7XG4gICAgICBtO1xuICAgIH07XG4gIH07XG59O1xuIiwidHlwZSB0ID0ge1xuICAvLyBTdW0gb2YgdGhlIHNxdWFyZSBvZiBob3cgbXVjaCBlYWNoIGxpbmUgZXh0ZW5kcyBiZXlvbmQgbWF4IHdpZHRoLiAgVXN1YWxseSB6ZXJvLlxuICBvdmVyZmxvd19jb3N0OiBpbnQsXG4gIC8vIEhlaWdodCBtaW51cyBvbmUuICBBLmsuYS4gbnVtYmVyIG9mIGxpbmUgYnJlYWtzLlxuICBoZWlnaHRfY29zdDogaW50LFxufTtcblxubGV0IG1rID0gKH5vdmVyZmxvd19jb3N0OiBpbnQsIH5oZWlnaHRfY29zdDogaW50KTogdCA9PiB7XG4gIG92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0LFxufTtcblxubGV0IG1rX2hlaWdodCA9IChoZWlnaHRfY29zdDogaW50KTogdCA9PiBtayh+b3ZlcmZsb3dfY29zdD0wLCB+aGVpZ2h0X2Nvc3QpO1xuXG5sZXQgbWtfb3ZlcmZsb3cgPSAob3ZlcmZsb3dfY29zdDogaW50KTogdCA9PlxuICBtayh+b3ZlcmZsb3dfY29zdCwgfmhlaWdodF9jb3N0PTApO1xuXG5sZXQgemVybzogdCA9IHtvdmVyZmxvd19jb3N0OiAwLCBoZWlnaHRfY29zdDogMH07XG5cbmxldCBpbmY6IHQgPSB7b3ZlcmZsb3dfY29zdDogbWF4X2ludCwgaGVpZ2h0X2Nvc3Q6IG1heF9pbnR9O1xuXG5sZXQgYWRkID0gKGMxOiB0LCBjMjogdCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0OiBjMS5vdmVyZmxvd19jb3N0ICsgYzIub3ZlcmZsb3dfY29zdCxcbiAgaGVpZ2h0X2Nvc3Q6IGMxLmhlaWdodF9jb3N0ICsgYzIuaGVpZ2h0X2Nvc3QsXG59O1xuXG5sZXQgZXEgPSAoYzE6IHQsIGMyOiB0KTogYm9vbCA9PlxuICBjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0ICYmIGMxLmhlaWdodF9jb3N0ID09PSBjMi5oZWlnaHRfY29zdDtcblxubGV0IGx0ID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgaWYgKGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QpIHtcbiAgICBjMS5oZWlnaHRfY29zdCA8IGMyLmhlaWdodF9jb3N0O1xuICB9IGVsc2Uge1xuICAgIGMxLm92ZXJmbG93X2Nvc3QgPCBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuXG5sZXQgbGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgaWYgKGMxLm92ZXJmbG93X2Nvc3QgPT09IGMyLm92ZXJmbG93X2Nvc3QpIHtcbiAgICBjMS5oZWlnaHRfY29zdCA8PSBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDw9IGMyLm92ZXJmbG93X2Nvc3Q7XG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgV2lkdGhQb3NLZXkgPSB7XG4gIHR5cGUgdCA9IChpbnQsIGludCk7XG4gIGxldCBoYXNoID0gKCh3aWR0aCwgcG9zKSkgPT4gMjU2ICogMjU2ICogd2lkdGggKyBwb3M7XG4gIGxldCBlcXVhbCA9ICgodzEsIHAxKSwgKHcyLCBwMikpID0+IHcxID09IHcyICYmIHAxID09IHAyO1xufTtcblxubW9kdWxlIE0gPSBIYXNodGJsLk1ha2UoV2lkdGhQb3NLZXkpO1xuXG4vLyBOT1RFOiBwb3MgaXMgcmVsYXRpdmUgdG8gbW9zdCByZWNlbnQgYEFsaWduYFxudHlwZSBtJygnYSkgPSBQb3NNYXAudCgoQ29zdC50LCAnYSkpO1xudHlwZSBtKCdhKSA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KSA9PiBtJygnYSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID0ge1xuICBtZW06IFtAc2V4cC5vcGFxdWVdIE0udChtJyhMYXlvdXQudCgnYW5ub3QpKSksXG4gIGRvYzogdCcoJ2Fubm90KSxcbn1cbltAZGVyaXZpbmcgc2V4cF1cbmFuZCB0JygnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIGFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKSAvLyBBbm5vdGF0aW9uc1xuICB8IEZhaWwgLy8gaWRlbnRpdHkgZm9yIGBDaG9pY2VgXG4gIHwgQ2hvaWNlKHQoJ2Fubm90KSwgdCgnYW5ub3QpKTtcblxubGV0IHRfb2ZfdCcgPSAodCc6IHQnKCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge21lbTogTS5jcmVhdGUoMCksIGRvYzogdCd9O1xuXG5sZXQgdGV4dCA9IChzOiBzdHJpbmcpID0+IHRfb2ZfdCcoVGV4dChzKSk7XG5sZXQgbGluZWJyZWFrID0gKCkgPT4gdF9vZl90JyhMaW5lYnJlYWspO1xubGV0IGFsaWduID0gZG9jID0+IHRfb2ZfdCcoQWxpZ24oZG9jKSk7XG5sZXQgYW5ub3QgPSAoYW5ub3QsIGRvYykgPT4gdF9vZl90JyhBbm5vdChhbm5vdCwgZG9jKSk7XG5sZXQgZmFpbCA9ICgpID0+IHRfb2ZfdCcoRmFpbCk7XG5cbmxldCBlbXB0eSA9ICgpID0+IHRleHQoXCJcIik7XG5sZXQgc3BhY2UgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCk7IC8vIFRPRE86IHBhcmFtIHRvIGhzZXBcblxubGV0IGluZGVudCA9ICgpID0+IHRleHQoVW5pY29kZS5uYnNwICsrIFVuaWNvZGUubmJzcCk7XG5sZXQgaW5kZW50X2FuZF9hbGlnbiA9IGRvYyA9PiB0X29mX3QnKENhdChpbmRlbnQoKSwgYWxpZ24oZG9jKSkpO1xuXG5sZXQgaGNhdCA9ICh4LCB5KSA9PiB0X29mX3QnKENhdCh4LCB5KSk7XG5sZXQgaGNhdHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBlbXB0eSgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoaGNhdCwgZG9jLCBkb2NzKTtcblxubGV0IGhzZXAgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgdF9vZl90JyhDYXQoc3BhY2UoKSwgeSkpKSk7XG5sZXQgaHNlcHM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBlbXB0eSgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoaHNlcCwgZG9jLCBkb2NzKTtcblxubGV0IHZzZXAgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgdF9vZl90JyhDYXQobGluZWJyZWFrKCksIHkpKSkpO1xubGV0IHZzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbHdpdGgoX19MT0NfXyArKyBcIjogdnNlcHMgcmVxdWlyZXMgYSBub24tZW1wdHkgbGlzdFwiKVxuICB8IFtkb2NdID0+IGRvY1xuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KHZzZXAsIGRvYywgZG9jcyk7XG5cbmxldCBjaG9pY2UgPSAoeCwgeSkgPT4gdF9vZl90JyhDaG9pY2UoeCwgeSkpO1xubGV0IGNob2ljZXM6IGxpc3QodCgnYW5ub3QpKSA9PiB0KCdhbm5vdCkgPVxuICBmdW5cbiAgfCBbXSA9PiBmYWlsKClcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdChjaG9pY2UsIGRvYywgZG9jcyk7XG5cbmxldCBtYXBfdCc6ICdhICdiLiAodCcoJ2EpID0+IHQnKCdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgKGYsIGQpID0+IHRfb2ZfdCcoZihkLmRvYykpO1xuXG5sZXQgcmVjIG1hcF9hbm5vdDogJ2EgJ2IuICgnYSA9PiAnYiwgdCgnYSkpID0+IHQoJ2IpID1cbiAgKGYsIGQpID0+XG4gICAgZFxuICAgIHw+IG1hcF90JyhcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCAoVGV4dChfKSB8IExpbmVicmVhayB8IEZhaWwpIGFzIGQnID0+IGQnXG4gICAgICAgICB8IEFubm90KGFubm90LCBkKSA9PiBBbm5vdChmKGFubm90KSwgbWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBBbGlnbihkKSA9PiBBbGlnbihtYXBfYW5ub3QoZiwgZCkpXG4gICAgICAgICB8IENhdChkMSwgZDIpID0+IENhdChtYXBfYW5ub3QoZiwgZDEpLCBtYXBfYW5ub3QoZiwgZDIpKVxuICAgICAgICAgfCBDaG9pY2UoZDEsIGQyKSA9PiBDaG9pY2UobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSksXG4gICAgICAgKTtcbiIsIi8vIFRPRE86IGNvbXB1dGUgYWN0dWFsIGxheW91dCBzaXplIGFuZCB1c2UgaW5zdGVhZCBvZiB0X29mX2xheW91dFxubGV0IHJlYyBhbGw6ICdhbm5vdC4gRG9jLnQoJ2Fubm90KSA9PiBsaXN0KExheW91dC50KCdhbm5vdCkpID0ge1xuICBkb2MgPT4ge1xuICAgIHN3aXRjaCAoZG9jLmRvYykge1xuICAgIHwgVGV4dChzdHJpbmcpID0+IFtMYXlvdXQuVGV4dChzdHJpbmcpXVxuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsczEgPSBhbGwoZDEpO1xuICAgICAgbGV0IGxzMiA9IGFsbChkMik7XG4gICAgICBMaXN0LmNvbmNhdChcbiAgICAgICAgTGlzdC5tYXAobDEgPT4gTGlzdC5tYXAobDIgPT4gTGF5b3V0LkNhdChsMSwgbDIpLCBsczIpLCBsczEpLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PiBbTGF5b3V0LkxpbmVicmVha11cbiAgICB8IEFsaWduKGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFsaWduKGwpLCBhbGwoZCkpXG4gICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gTGlzdC5tYXAobCA9PiBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpLCBhbGwoZCkpXG4gICAgfCBGYWlsID0+IFtdXG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PiBhbGwoZDEpIEAgYWxsKGQyKVxuICAgIH07XG4gIH07XG59O1xuXG4vLyBOb3RlOiBUaGlzIHVuaW9uIGlzIGxlZnQgYmlhc2VkXG5sZXQgbSdfdW5pb246ICdhLiAoRG9jLm0nKCdhKSwgRG9jLm0nKCdhKSkgPT4gRG9jLm0nKCdhKSA9XG4gIChwMSwgcDIpID0+IHtcbiAgICBsZXQgY29zdF91bmlvbiA9ICgoY29zdDE6IENvc3QudCwgXykgYXMgdDEsIChjb3N0MjogQ29zdC50LCBfKSBhcyB0MikgPT5cbiAgICAgIGlmIChDb3N0LmxlcShjb3N0MSwgY29zdDIpKSB7XG4gICAgICAgIHQxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdDI7XG4gICAgICB9O1xuICAgIFBvc01hcC51bmlvbihjb3N0X3VuaW9uLCBwMSwgcDIpO1xuICB9O1xuXG5sZXQgcmVjIGxheW91dF9vZl9kb2MnID0gKGRvYzogRG9jLnQodW5pdCkpOiBEb2MubShMYXlvdXQudCh1bml0KSkgPT4ge1xuICBsZXQgZyA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KTogRG9jLm0nKExheW91dC50KHVuaXQpKSA9PiB7XG4gICAgLy8gVE9ETzogbGlmdCB0aGUgc3dpdGNoKGRvYy5kb2MpIG91dHNpZGUgdGhlIGxhbWJkYVxuICAgIHN3aXRjaCAoZG9jLmRvYykge1xuICAgIHwgVGV4dChzdHJpbmcpID0+XG4gICAgICAvLyBUT0RPOiBjYWNoZSB0ZXh0IGxlbmd0aCBpbiBUZXh0P1xuICAgICAgbGV0IHBvcycgPSBwb3MgKyBTdHJpbmcubGVuZ3RoKHN0cmluZyk7IC8vVW5pY29kZS5sZW5ndGgoc3RyaW5nKTtcbiAgICAgIGxldCBjb3N0ID1cbiAgICAgICAgaWYgKHBvcycgPD0gd2lkdGgpIHtcbiAgICAgICAgICBDb3N0Lnplcm87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IG92ZXJmbG93ID0gcG9zJyAtIHdpZHRoO1xuICAgICAgICAgIC8vIG92ZXJmbG93X2Nvc3QgPSBzdW0gaSBmcm9tIDEgdG8gb3ZlcmZsb3dcbiAgICAgICAgICBsZXQgb3ZlcmZsb3dfY29zdCA9IG92ZXJmbG93ICogKG92ZXJmbG93ICsgMSkgLyAyO1xuICAgICAgICAgIENvc3QubWtfb3ZlcmZsb3cob3ZlcmZsb3dfY29zdCk7XG4gICAgICAgIH07XG4gICAgICBQb3NNYXAuc2luZ2xldG9uKHBvcycsIChjb3N0LCBMYXlvdXQuVGV4dChzdHJpbmcpKSk7XG4gICAgfCBDYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAuZm9sZF9sZWZ0KFxuICAgICAgICAocG9zLCB6LCAoY29zdDEsIGxheW91dDEpKSA9PiB7XG4gICAgICAgICAgbGV0IGwyID0gbGF5b3V0X29mX2RvYycoZDIsIH53aWR0aCwgfnBvcyk7XG4gICAgICAgICAgbGV0IGxheW91dHMgPVxuICAgICAgICAgICAgUG9zTWFwLm1hcChcbiAgICAgICAgICAgICAgKChjb3N0MiwgbGF5b3V0MikpID0+XG4gICAgICAgICAgICAgICAgKENvc3QuYWRkKGNvc3QxLCBjb3N0MiksIExheW91dC5DYXQobGF5b3V0MSwgbGF5b3V0MikpLFxuICAgICAgICAgICAgICBsMixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgbSdfdW5pb24oeiwgbGF5b3V0cyk7XG4gICAgICAgIH0sXG4gICAgICAgIFBvc01hcC5lbXB0eSxcbiAgICAgICAgbDEsXG4gICAgICApO1xuICAgIHwgTGluZWJyZWFrID0+XG4gICAgICBQb3NNYXAuc2luZ2xldG9uKDAsIChDb3N0Lm1rX2hlaWdodCgxKSwgTGF5b3V0LkxpbmVicmVhaykpXG4gICAgfCBBbGlnbihkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aD13aWR0aCAtIHBvcywgfnBvcz0wKTtcbiAgICAgIFBvc01hcC5tYXBrKFxuICAgICAgICAocCwgKGMsIGwpKSA9PiAocCArIHBvcywgKGMsIExheW91dC5BbGlnbihsKSkpLFxuICAgICAgICBsYXlvdXQsXG4gICAgICApO1xuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+XG4gICAgICBsZXQgbGF5b3V0ID0gbGF5b3V0X29mX2RvYycoZCwgfndpZHRoLCB+cG9zKTtcbiAgICAgIFBvc01hcC5tYXAoKChjLCBsKSkgPT4gKGMsIExheW91dC5Bbm5vdChhbm5vdCwgbCkpLCBsYXlvdXQpO1xuICAgIHwgRmFpbCA9PiBQb3NNYXAuZW1wdHlcbiAgICB8IENob2ljZShkMSwgZDIpID0+XG4gICAgICBsZXQgbDEgPSBsYXlvdXRfb2ZfZG9jJyhkMSwgfndpZHRoLCB+cG9zKTtcbiAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgbSdfdW5pb24obDEsIGwyKTtcbiAgICB9O1xuICB9O1xuICBsZXQgaCA9ICh+d2lkdGg6IGludCwgfnBvczogaW50KTogRG9jLm0nKExheW91dC50KHVuaXQpKSA9PiB7XG4gICAgbGV0IGtleSA9ICh3aWR0aCwgcG9zKTtcbiAgICBzd2l0Y2ggKERvYy5NLmZpbmRfb3B0KGRvYy5tZW0sIGtleSkpIHtcbiAgICB8IFNvbWUodmFsdWUpID0+IHZhbHVlXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgdmFsdWUgPSBnKH53aWR0aCwgfnBvcyk7XG4gICAgICBEb2MuTS5hZGQoZG9jLm1lbSwga2V5LCB2YWx1ZSk7XG4gICAgICB2YWx1ZTtcbiAgICB9O1xuICB9O1xuICBoO1xufTtcblxubGV0IGxheW91dF9vZl9kb2MgPVxuICAgIChkb2M6IERvYy50KCdhbm5vdCksIH53aWR0aDogaW50LCB+cG9zOiBpbnQpOiBvcHRpb24oTGF5b3V0LnQoJ2Fubm90KSkgPT4ge1xuICBsZXQgcmVjIG1pbmltdW0gPVxuICAgICAgICAgICgocG9zLCAoY29zdCwgdCkpOiAoaW50LCAoQ29zdC50LCBvcHRpb24oJ2EpKSkpXG4gICAgICAgICAgOiAobGlzdCgoaW50LCAoQ29zdC50LCAnYSkpKSA9PiBvcHRpb24oJ2EpKSA9PiB7XG4gICAgZnVuXG4gICAgfCBbXSA9PiB0XG4gICAgfCBbKHhfcG9zLCAoeF9jb3N0LCB4KSksIC4uLnJlc3RdID0+XG4gICAgICAvLyBQcmVmZXIgbG93ZXN0IGNvc3QsIG9yIGlmIHNhbWUgY29zdCwgcHJlZmVyIGVuZGluZyBhdCBhbiBlYXJsaWVyIGNvbHVtblxuICAgICAgLy8gKENvbHVtbnMgYXJlIHVuaXF1ZSBieSBjb25zdHJ1Y3Rpb24gb2YgUG9zTWFwLilcbiAgICAgIGlmIChDb3N0Lmx0KHhfY29zdCwgY29zdCkgfHwgQ29zdC5lcSh4X2Nvc3QsIGNvc3QpICYmIHhfcG9zIDwgcG9zKSB7XG4gICAgICAgIG1pbmltdW0oKHhfcG9zLCAoeF9jb3N0LCBTb21lKHgpKSksIHJlc3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluaW11bSgocG9zLCAoY29zdCwgdCkpLCByZXN0KTtcbiAgICAgIH07XG4gIH07XG4gIC8vIFRPRE86IHVzZSBvcHRpb25zIGluc3RlYWQgb2YgbWF4X2ludFxuICAvLyBsZXQgc3RhcnRfdGltZSA9IFN5cy50aW1lKCk7XG4gIGxldCBsID1cbiAgICBtaW5pbXVtKFxuICAgICAgKG1heF9pbnQsIChDb3N0LmluZiwgTm9uZSkpLFxuICAgICAgT2JqLm1hZ2ljKGxheW91dF9vZl9kb2MnKE9iai5tYWdpYyhkb2MpLCB+d2lkdGgsIH5wb3MpKSxcbiAgICApO1xuICAvLyBsZXQgZW5kX3RpbWUgPSBTeXMudGltZSgpO1xuICAvKlxuICAgUHJpbnRmLnByaW50ZihcbiAgICAgXCJsYXlvdXRfb2ZfZG9jOiAlZCBcXHQlZlxcblwiLFxuICAgICAtMSwgLy9mc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkjIy5zaXplLFxuICAgICAvL01lbW9pemUuV2Vha1BvbHkuVGFibGUubGVuZ3RoKGZzdChMYXp5LmZvcmNlKG1lbW9fdGFibGUpKSksXG4gICAgIDEwMDAuMCAqLiAoZW5kX3RpbWUgLS4gc3RhcnRfdGltZSksXG4gICApO1xuICAgKi9cbiAgbDtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgSEJveChsaXN0KHQoJ2Fubm90KSkpXG4gIHwgVkJveChsaXN0KHQoJ2Fubm90KSkpXG4gIHwgQW5ub3QoJ2Fubm90LCB0KCdhbm5vdCkpO1xuXG5tb2R1bGUgTWFrZSA9IChNZW1vVGJsOiBNZW1vVGJsLlMpID0+IHtcbiAgbGV0IGhlaWdodF90Ymw6IE1lbW9UYmwudCh0KHVuaXQpLCBpbnQpID0gTWVtb1RibC5taygpO1xuICBsZXQgcmVjIGhlaWdodCA9IChib3g6IHQoJ2Fubm90KSkgPT5cbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KGhlaWdodF90YmwsIE9iai5tYWdpYyhib3gpKSkge1xuICAgIHwgU29tZShoKSA9PiBoXG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgaCA9XG4gICAgICAgIHN3aXRjaCAoYm94KSB7XG4gICAgICAgIHwgVGV4dChfKSA9PiAxXG4gICAgICAgIHwgQW5ub3QoXywgYikgPT4gaGVpZ2h0KGIpXG4gICAgICAgIHwgSEJveChicykgPT4gYnMgfD4gTGlzdC5tYXAoaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdChtYXgsIDEpIC8vIE5vdGU6IDEgaXMgSEJveChbXSkgaGVpZ2h0XG4gICAgICAgIHwgVkJveChicykgPT4gYnMgfD4gTGlzdC5tYXAoaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApXG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSwgaCk7XG4gICAgICBoO1xuICAgIH07XG5cbiAgLy8gTm90ZTogYW5ub3RzIGFyZSBpbnNpZGUtb3V0IChpLmUuIExpc3QuaGQoYW5ub3RzKSBpcyB0aGUgaW5uZXItbW9zdCBhbm5vdClcbiAgbGV0IHJlYyBhbm5vdCA9IChhbm5vdHM6IGxpc3QoJ2Fubm90KSwgYm94OiB0KCdhbm5vdCkpOiB0KCdhbm5vdCkgPT4ge1xuICAgIHN3aXRjaCAoYW5ub3RzKSB7XG4gICAgfCBbXSA9PiBib3hcbiAgICB8IFthbm4sIC4uLmFubnNdID0+IGFubm90KGFubnMsIEFubm90KGFubiwgYm94KSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgYXBwZW5kX2JveCA9XG4gICAgICAgICAgKH5hbm5vdHM6IGxpc3QoJ2Fubm90KT1bXSwgYm94MTogdCgnYW5ub3QpLCBib3gyOiB0KCdhbm5vdCkpXG4gICAgICAgICAgOiB0KCdhbm5vdCkgPT5cbiAgICBpZiAoaGVpZ2h0KGJveDEpIDw9IDEpIHtcbiAgICAgIEhCb3goW2Fubm90KGFubm90cywgYm94MSksIGJveDJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJlYyBhcHBlbmRfbGFzdCA9IChiczE6IGxpc3QodCgnYW5ub3QpKSk6IGxpc3QodCgnYW5ub3QpKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoYnMxKSB7XG4gICAgICAgIHwgW10gPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlIGR1ZSB0byBgYm94X2hlaWdodGAgZ3VhcmRcIilcbiAgICAgICAgfCBbYjFdID0+IFthcHBlbmRfYm94KH5hbm5vdHMsIGIxLCBib3gyKV1cbiAgICAgICAgfCBbYjEsIC4uLmJzMV0gPT4gW2Fubm90KGFubm90cywgYjEpLCAuLi5hcHBlbmRfbGFzdChiczEpXVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHN3aXRjaCAoYm94MSkge1xuICAgICAgfCBUZXh0KF8pID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICB8IEhCb3goYnMxKSA9PiBIQm94KGFwcGVuZF9sYXN0KGJzMSkpXG4gICAgICB8IFZCb3goYnMxKSA9PiBWQm94KGFwcGVuZF9sYXN0KGJzMSkpXG4gICAgICB8IEFubm90KGFubm90LCBiKSA9PiBhcHBlbmRfYm94KH5hbm5vdHM9W2Fubm90LCAuLi5hbm5vdHNdLCBiLCBib3gyKVxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBhcHBlbmRfaGJveCA9IChib3hlczE6IGxpc3QodCgnYW5ub3QpKSwgYm94ZXMyOiBsaXN0KHQoJ2Fubm90KSkpID0+IHtcbiAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KGJveGVzMSkpIHtcbiAgICB8IE5vbmUgPT4gYm94ZXMyXG4gICAgfCBTb21lKChsZWFkaW5nLCBsYXN0KSkgPT4gbGVhZGluZyBAIFthcHBlbmRfYm94KGxhc3QsIEhCb3goYm94ZXMyKSldXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdGFibGU6IE1lbW9UYmwudChMYXlvdXQudCh1bml0KSwgdCh1bml0KSkgPSBNZW1vVGJsLm1rKCk7XG4gIGxldCBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBsZXQgbWsgPSAoYm94ZXM6IGxpc3QobGlzdCh0KF8pKSkpID0+XG4gICAgICBWQm94KExpc3QubWFwKHJvdyA9PiBIQm94KHJvdyksIGJveGVzKSk7XG4gICAgbGV0IHJlYyBnbyA9IChsOiBMYXlvdXQudChfKSkgPT4ge1xuICAgICAgc3dpdGNoIChNZW1vVGJsLmdldCh0YWJsZSwgT2JqLm1hZ2ljKGwpKSkge1xuICAgICAgfCBTb21lKGJveCkgPT4gT2JqLm1hZ2ljKGJveClcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgYm94ID1cbiAgICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgICB8IExpbmVicmVhayA9PiBbW10sIFtdXVxuICAgICAgICAgIHwgVGV4dChzKSA9PiBbW1RleHQocyldXVxuICAgICAgICAgIHwgQWxpZ24obCkgPT4gW1ttayhnbyhsKSldXVxuICAgICAgICAgIHwgQW5ub3QoYW5uLCBsKSA9PlxuICAgICAgICAgICAgZ28obCkgfD4gTGlzdC5tYXAocm93ID0+IFtBbm5vdChhbm4sIEhCb3gocm93KSldKVxuICAgICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGdvKGwxKSk7XG4gICAgICAgICAgICBsZXQgKGZpcnN0LCB0cmFpbGluZykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChnbyhsMikpO1xuICAgICAgICAgICAgbGVhZGluZyBAIFthcHBlbmRfaGJveChsYXN0LCBmaXJzdCksIC4uLnRyYWlsaW5nXTtcbiAgICAgICAgICB9O1xuICAgICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMoYm94KSk7XG4gICAgICAgIGJveDtcbiAgICAgIH07XG4gICAgfTtcbiAgICBtayhnbyhsKSk7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xub3BlbiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LlByaW1pdGl2ZXM7XG5cbi8qXG4gIFRoZXNlIGFyZSB0aGUgc3ludGF4IHRlc3QgZnVuY3Rpb25zIHVzZWQgZm9yIHRoZSBzeW50YXggdmFsaWRhdGlvblxuICBzZWN0aW9uIG9mIHRoZSBleGVyY2lzZXMuIFRoZSBzeW50YXggdGVzdHMgYXJlIGRlc2lnbmVkIHRvXG4gIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGltcGxlbWVudGF0aW9uIHNhdGlzZmllcyBjZXJ0YWluIHN5bnRheCBwcm9wZXJ0aWVzXG4gIGUuZy4gdGFpbCByZWN1cnNpdmUgZnVuY3Rpb24gb3IgdmFyaWFibGUgdXNhZ2UuXG4gKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzeW50YXhfcmVzdWx0ID0ge1xuICByZXN1bHRzOiBsaXN0KGJvb2wpLFxuICBwZXJjZW50YWdlOiBmbG9hdCxcbn07XG5cbmxldCByZWMgZmluZF92YXJfdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFRlcm0uVVBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gIHwgQ29ucyh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHVwKSA9PiB7YWNjIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApfSwgZmFsc2UsIGwpXG4gIHwgUGFyZW5zKHVwKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PiBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMSkgfHwgZmluZF92YXJfdXBhdChuYW1lLCB1cDIpXG4gIHwgVHlwZUFubih1cCwgXykgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfTtcbn07XG5cbi8qXG4gIEhlbHBlciBmdW5jdGlvbiB1c2VkIGluIHRoZSBmdW5jdGlvbiBmaW5kX2ZuIHdoaWNoIHRha2VzIHRoZVxuICBwYXR0ZXJuICh1cGF0KSBhbmQgdGhlIGRlZmluaXRpb24gKGRlZikgb2YgYSBsZXQgZXhwcmVzc2lvbiBhbmRcbiAgY29sbGVjdHMgZnVuY3Rpb25zIGluIGRlZiB0aGF0IGFyZSBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGluXG4gIHVwYXQuIEV4YW1wbGU6IGZvciB0aGUgZXhwcmVzc2lvbiBcImxldCAoYSxiKSA9IChmdW4geCAtPiB4KzEsIDQxKSBpblwiXG4gIGlmIG5hbWU9XCJhXCIsIHRoZW4gbD1bZnVuIHggLT4geCsxXVxuICovXG5sZXQgcmVjIGZpbmRfaW5fbGV0ID1cbiAgICAgICAgKFxuICAgICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgICB1cGF0OiBUZXJtLlVQYXQudCxcbiAgICAgICAgICBkZWY6IFRlcm0uVUV4cC50LFxuICAgICAgICAgIGw6IGxpc3QoVGVybS5VRXhwLnQpLFxuICAgICAgICApXG4gICAgICAgIDogbGlzdChUZXJtLlVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSwgZGVmLnRlcm0pIHtcbiAgfCAoUGFyZW5zKHVwKSwgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBsKVxuICB8IChQYXJlbnModXApLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChfLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cGF0LCB1ZSwgbClcbiAgfCAoVHlwZUFubih1cCwgXyksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKFZhcih4KSwgRnVuKF8pKSA9PiB4ID09IG5hbWUgPyBbZGVmLCAuLi5sXSA6IGxcbiAgfCAoVHVwbGUocGwpLCBUdXBsZSh1bCkpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKHBsKSAhPSBMaXN0Lmxlbmd0aCh1bCkpIHtcbiAgICAgIGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgKGFjYywgdXAsIHVlKSA9PiB7ZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBhY2MpfSxcbiAgICAgICAgbCxcbiAgICAgICAgcGwsXG4gICAgICAgIHVsLFxuICAgICAgKTtcbiAgICB9XG4gIHwgKFZhcihfKSwgXylcbiAgfCAoVHVwbGUoXyksIF8pXG4gIHwgKFxuICAgICAgRW1wdHlIb2xlIHwgV2lsZCB8IFRyaXYgfCBJbnZhbGlkKF8pIHwgTXVsdGlIb2xlKF8pIHwgSW50KF8pIHwgRmxvYXQoXykgfFxuICAgICAgQm9vbChfKSB8XG4gICAgICBTdHJpbmcoXykgfFxuICAgICAgTGlzdExpdChfKSB8XG4gICAgICBDb25zdHJ1Y3RvcihfKSB8XG4gICAgICBDb25zKF8sIF8pIHxcbiAgICAgIEFwKF8sIF8pLFxuICAgICAgXyxcbiAgICApID0+IGxcbiAgfTtcbn07XG5cbi8qXG4gRmluZCBhbnkgZnVuY3Rpb24gZXhwcmVzc2lvbnMgaW4gdWV4cCB0aGF0IGFyZSBib3VuZCB0byB2YXJpYWJsZSBuYW1lXG4gKi9cbmxldCByZWMgZmluZF9mbiA9XG4gICAgICAgIChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50LCBsOiBsaXN0KFRlcm0uVUV4cC50KSlcbiAgICAgICAgOiBsaXN0KFRlcm0uVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgTGV0KHVwLCBkZWYsIGJvZHkpID0+XG4gICAgbCB8PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmKSB8PiBmaW5kX2ZuKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdCh1bClcbiAgfCBUdXBsZSh1bCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1MSkgPT4ge2ZpbmRfZm4obmFtZSwgdTEsIGFjYyl9LCBsLCB1bClcbiAgfCBUeXBGdW4oXywgYm9keSlcbiAgfCBGdW4oXywgYm9keSkgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIGJvZHkpXG4gIHwgVHlwQXAodTEsIF8pXG4gIHwgUGFyZW5zKHUxKVxuICB8IFVuT3AoXywgdTEpXG4gIHwgVHlBbGlhcyhfLCBfLCB1MSlcbiAgfCBUZXN0KHUxKVxuICB8IEZpbHRlcihfLCBfLCB1MSkgPT4gbCB8PiBmaW5kX2ZuKG5hbWUsIHUxKVxuICB8IEFwKHUxLCB1MilcbiAgfCBQaXBlbGluZSh1MSwgdTIpXG4gIHwgU2VxKHUxLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+IGwgfD4gZmluZF9mbihuYW1lLCB1MSkgfD4gZmluZF9mbihuYW1lLCB1MilcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIGwgfD4gZmluZF9mbihuYW1lLCB1MSkgfD4gZmluZF9mbihuYW1lLCB1MikgfD4gZmluZF9mbihuYW1lLCB1MylcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIGxcbiAgICB8PiBmaW5kX2ZuKG5hbWUsIGZuKVxuICAgIHw+IExpc3QuZm9sZF9sZWZ0KChsLCB1KSA9PiBmaW5kX2ZuKG5hbWUsIHUsIGwpLCBfLCBhcmdzKVxuICB8IE1hdGNoKHUxLCB1bCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIChfLCB1ZSkpID0+IHtmaW5kX2ZuKG5hbWUsIHVlLCBhY2MpfSxcbiAgICAgIGwgfD4gZmluZF9mbihuYW1lLCB1MSksXG4gICAgICB1bCxcbiAgICApXG4gIHwgRW1wdHlIb2xlXG4gIHwgVHJpdlxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgVmFyKF8pID0+IGxcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGV2ZXIgbWVudGlvbmVkIGluIHVwYXQuXG4gKi9cbmxldCByZWMgdmFyX21lbnRpb25fdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFRlcm0uVVBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gIHwgQ29ucyh1cDEsIHVwMikgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMSkgfHwgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDIpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1cCkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKX0sXG4gICAgICBmYWxzZSxcbiAgICAgIGwsXG4gICAgKVxuICB8IFBhcmVucyh1cCkgPT4gdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMSkgfHwgdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cDIpXG4gIHwgVHlwZUFubih1cCwgXykgPT4gdmFyX21lbnRpb25fdXBhdChuYW1lLCB1cClcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGV2ZXIgbWVudGlvbmVkIGluIHVleHAuXG4gKi9cbmxldCByZWMgdmFyX21lbnRpb24gPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IFZhcih4KSA9PiB4ID09IG5hbWVcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IExpc3RMaXQobClcbiAgfCBUdXBsZShsKSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IExldChwLCBkZWYsIGJvZHkpID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKVxuICAgICAgPyBmYWxzZSA6IHZhcl9tZW50aW9uKG5hbWUsIGRlZikgfHwgdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBUeXBGdW4oXywgdSlcbiAgfCBUeXBBcCh1LCBfKVxuICB8IFRlc3QodSlcbiAgfCBQYXJlbnModSlcbiAgfCBVbk9wKF8sIHUpXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KSA9PiB2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEFwKHUxLCB1MilcbiAgfCBQaXBlbGluZSh1MSwgdTIpXG4gIHwgU2VxKHUxLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MilcbiAgfCBEZWZlcnJlZEFwKHUxLCB1cykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgTGlzdC5leGlzdHModmFyX21lbnRpb24obmFtZSksIHVzKVxuICB8IElmKHUxLCB1MiwgdTMpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSB8fCB2YXJfbWVudGlvbihuYW1lLCB1MylcbiAgfCBNYXRjaChnLCBsKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIGcpXG4gICAgfHwgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCBwZSkgPT4ge1xuICAgICAgICAgICBsZXQgKHAsIGUpID0gcGU7XG4gICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyB8fCB2YXJfbWVudGlvbihuYW1lLCBlKTtcbiAgICAgICAgIH0sXG4gICAgICAgICBmYWxzZSxcbiAgICAgICAgIGwsXG4gICAgICAgKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgYXBwbGllZCBvbiBhbm90aGVyIGV4cHJlc3NzaW9uLlxuIGkuZS4gQXAoVmFyKG5hbWUpLCB1KSBvY2N1cnMgYW55d2hlcmUgaW4gdGhlIHVleHAuXG4gKi9cbmxldCByZWMgdmFyX2FwcGxpZWQgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHVleHAudGVybSkge1xuICB8IFZhcihfKVxuICB8IEVtcHR5SG9sZVxuICB8IFRyaXZcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKSA9PiBmYWxzZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX2FwcGxpZWQobmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApXG4gICAgICA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgZGVmKSB8fCB2YXJfYXBwbGllZChuYW1lLCBib2R5KVxuICB8IFR5cEZ1bihfLCB1KVxuICB8IFRlc3QodSlcbiAgfCBQYXJlbnModSlcbiAgfCBVbk9wKF8sIHUpXG4gIHwgVHlBbGlhcyhfLCBfLCB1KVxuICB8IEZpbHRlcihfLCBfLCB1KSA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICB8IFR5cEFwKHUsIF8pID0+XG4gICAgc3dpdGNoICh1LnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogZmFsc2VcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdSlcbiAgICB9XG4gIHwgQXAodTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBEZWZlcnJlZEFwKHUxLCB1cykgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIHwgXyA9PiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfVxuICB8IFBpcGVsaW5lKHUxLCB1MikgPT5cbiAgICBzd2l0Y2ggKHUyLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogdmFyX2FwcGxpZWQobmFtZSwgdTEpXG4gICAgfCBfID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB9XG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgU2VxKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9hcHBsaWVkKG5hbWUsIHUxKSB8fCB2YXJfYXBwbGllZChuYW1lLCB1MikgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCBnKVxuICAgIHx8IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgcGUpID0+IHtcbiAgICAgICAgICAgbGV0IChwLCBlKSA9IHBlO1xuICAgICAgICAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApID8gZmFsc2UgOiBhY2MgfHwgdmFyX2FwcGxpZWQobmFtZSwgZSk7XG4gICAgICAgICB9LFxuICAgICAgICAgZmFsc2UsXG4gICAgICAgICBsLFxuICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgd2hldGhlciBhbGwgZnVuY3Rpb25zIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgYXJlIHJlY3Vyc2l2ZS5cbiAqL1xubGV0IGlzX3JlY3Vyc2l2ZSA9IChuYW1lOiBzdHJpbmcsIHVleHA6IFRlcm0uVUV4cC50KTogYm9vbCA9PiB7XG4gIGxldCBmbl9ib2RpZXMgPSBbXSB8PiBmaW5kX2ZuKG5hbWUsIHVleHApO1xuICBpZiAoTGlzdC5sZW5ndGgoZm5fYm9kaWVzKSA9PSAwKSB7XG4gICAgZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCB1ZSkgPT4ge2FjYyAmJiB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LFxuICAgICAgdHJ1ZSxcbiAgICAgIGZuX2JvZGllcyxcbiAgICApO1xuICB9O1xufTtcblxuLypcbiBDaGVjayBpZiB2YXJpYWJsZSBuYW1lIGlzIG5vdCBtZW50aW9uZWQgYW55d2hlcmUgb3V0c2lkZSBvZlxuIGEgdGFpbCBwb3NpdGlvbiBpbiB1ZXhwLiBOb3RlIHRoYXQgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdFxuIG1lbnRpb25lZCBhbnl3aGVyZSBpbiB0aGUgZXhwcmVzc2lvbiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZS5cbiAqL1xubGV0IHJlYyB0YWlsX2NoZWNrID0gKG5hbWU6IHN0cmluZywgdWV4cDogVGVybS5VRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1ZXhwLnRlcm0pIHtcbiAgfCBFbXB0eUhvbGVcbiAgfCBUcml2XG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBWYXIoXykgPT4gdHJ1ZVxuICB8IEZ1bihhcmdzLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgYXJncykgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgYm9keSlcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgfHwgdmFyX21lbnRpb24obmFtZSwgZGVmKVxuICAgICAgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICAvL0lmIGwgaGFzIG5vIHJlY3Vyc2l2ZSBjYWxscyB0aGVuIHRydWVcbiAgICAhTGlzdC5mb2xkX2xlZnQoKGFjYywgdWUpID0+IHthY2MgfHwgdmFyX21lbnRpb24obmFtZSwgdWUpfSwgZmFsc2UsIGwpXG4gIHwgVGVzdChfKSA9PiBmYWxzZVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgXywgdSlcbiAgfCBUeXBGdW4oXywgdSlcbiAgfCBUeXBBcCh1LCBfKVxuICB8IFBhcmVucyh1KSA9PiB0YWlsX2NoZWNrKG5hbWUsIHUpXG4gIHwgVW5PcChfLCB1KSA9PiAhdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcCh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUyKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MSlcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIHRhaWxfY2hlY2soXG4gICAgICBuYW1lLFxuICAgICAge2lkczogW10sIHRlcm06IEFwKGZuLCB7aWRzOiBbXSwgdGVybTogVHVwbGUoYXJncyl9KX0sXG4gICAgKVxuICB8IFBpcGVsaW5lKHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIHUyKVxuICB8IFNlcSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+ICEodmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSlcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKVxuICAgICAgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpICYmIHRhaWxfY2hlY2sobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCAocCwgZSkpID0+IHtcbiAgICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyAmJiB0YWlsX2NoZWNrKG5hbWUsIGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIGwsXG4gICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgd2hldGhlciBhbGwgZnVuY3Rpb25zIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgYXJlIHRhaWwgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfdGFpbF9yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBUZXJtLlVFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpICYmIHRhaWxfY2hlY2sobmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbmxldCBjaGVjayA9XG4gICAgKHVleHA6IFRlcm0uVUV4cC50LCBwcmVkaWNhdGVzOiBsaXN0KFRlcm0uVUV4cC50ID0+IGJvb2wpKTogc3ludGF4X3Jlc3VsdCA9PiB7XG4gIGxldCByZXN1bHRzID0gTGlzdC5tYXAocHJlZCA9PiB7dWV4cCB8PiBwcmVkfSwgcHJlZGljYXRlcyk7XG4gIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aChwcmVkaWNhdGVzKTtcbiAgbGV0IHBhc3NpbmcgPSBVdGlsLkxpc3RVdGlsLmNvdW50X3ByZWQocmVzID0+IHJlcywgcmVzdWx0cyk7XG5cbiAge1xuICAgIHJlc3VsdHMsXG4gICAgcGVyY2VudGFnZTpcbiAgICAgIC8vdmFjdW91c2x5IHBhc3NlcyBpZiB0aGVyZSBhcmUgbm8gdGVzdHNcbiAgICAgIGxlbmd0aCA9PSAwID8gMS4gOiBmbG9hdF9vZl9pbnQocGFzc2luZykgLy4gZmxvYXRfb2ZfaW50KGxlbmd0aCksXG4gIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHByZWRpY2F0ZSA9XG4gIHwgVmFyQXBwbGllZChzdHJpbmcpXG4gIHwgSXNSZWN1cnNpdmUoc3RyaW5nKVxuICB8IElzTm90UmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc1RhaWxSZWN1cnNpdmUoc3RyaW5nKTtcblxubGV0IHByZWRpY2F0ZV9mbiA9IHByZWRpY2F0ZSA9PiB7XG4gIHN3aXRjaCAocHJlZGljYXRlKSB7XG4gIHwgVmFyQXBwbGllZChuYW1lKSA9PiB2YXJfYXBwbGllZChuYW1lKVxuICB8IElzUmVjdXJzaXZlKG5hbWUpID0+IGlzX3JlY3Vyc2l2ZShuYW1lKVxuICB8IElzTm90UmVjdXJzaXZlKG5hbWUpID0+ICh1ZXhwID0+ICFpc19yZWN1cnNpdmUobmFtZSwgdWV4cCkpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKG5hbWUpID0+IGlzX3RhaWxfcmVjdXJzaXZlKG5hbWUpXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LlByaW1pdGl2ZXM7XG5cbm1vZHVsZSB0eXBlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGU7XG4gIGxldCBkZWZhdWx0OiBub2RlO1xuICBsZXQgb3V0cHV0X2hlYWRlcjogc3RyaW5nID0+IHN0cmluZztcbn07XG5cbmxldCBvdXRwdXRfaGVhZGVyX2dyYWRpbmcgPSBfbW9kdWxlX25hbWUgPT5cbiAgXCJtb2R1bGUgRXhlcmNpc2UgPSBHcmFkZVByZWx1ZGUuRXhlcmNpc2VcXG5cIiArKyBcImxldCBwcm9tcHQgPSAoKVxcblwiO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2VFbnYpID0+IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHdyb25nX2ltcGwoJ2NvZGUpID0ge1xuICAgIGltcGw6ICdjb2RlLFxuICAgIGhpbnQ6IHN0cmluZyxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlkZGVuX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgaGludHM6IGxpc3Qoc3RyaW5nKSxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGludCA9IHN0cmluZztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3ludGF4X3Rlc3QgPSAoaGludCwgU3ludGF4VGVzdC5wcmVkaWNhdGUpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdHMgPSBsaXN0KHN5bnRheF90ZXN0KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgeW91cl90ZXN0cygnY29kZSkgPSB7XG4gICAgdGVzdHM6ICdjb2RlLFxuICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgcHJvdmlkZWQ6IGludCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRfZGlzdHJpYnV0aW9uID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogaW50LFxuICAgIG11dGF0aW9uX3Rlc3Rpbmc6IGludCxcbiAgICBpbXBsX2dyYWRpbmc6IGludCxcbiAgfTtcblxuICBsZXQgdmFsaWRhdGVfcG9pbnRfZGlzdHJpYnV0aW9uID1cbiAgICAgICh7dGVzdF92YWxpZGF0aW9uLCBtdXRhdGlvbl90ZXN0aW5nLCBpbXBsX2dyYWRpbmd9OiBwb2ludF9kaXN0cmlidXRpb24pID0+XG4gICAgdGVzdF92YWxpZGF0aW9uICsgbXV0YXRpb25fdGVzdGluZyArIGltcGxfZ3JhZGluZyA9PSAxMDBcbiAgICAgID8gKCkgOiBmYWlsd2l0aChcIkludmFsaWQgcG9pbnQgZGlzdHJpYnV0aW9uIGluIGV4ZXJjaXNlLlwiKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcCgnY29kZSkgPSB7XG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBpbnQsXG4gICAgbW9kdWxlX25hbWU6IHN0cmluZyxcbiAgICBwcm9tcHQ6XG4gICAgICBbQHByaW50ZXIgKGZtdCwgXykgPT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIFwicHJvbXB0XCIpXSBbQG9wYXF1ZV0gRXhlcmNpc2VFbnYubm9kZSxcbiAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgcHJlbHVkZTogJ2NvZGUsXG4gICAgY29ycmVjdF9pbXBsOiAnY29kZSxcbiAgICB5b3VyX3Rlc3RzOiB5b3VyX3Rlc3RzKCdjb2RlKSxcbiAgICB5b3VyX2ltcGw6ICdjb2RlLFxuICAgIGhpZGRlbl9idWdzOiBsaXN0KHdyb25nX2ltcGwoJ2NvZGUpKSxcbiAgICBoaWRkZW5fdGVzdHM6IGhpZGRlbl90ZXN0cygnY29kZSksXG4gICAgc3ludGF4X3Rlc3RzLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBrZXkgPSAoc3RyaW5nLCBpbnQpO1xuXG4gIGxldCBrZXlfb2YgPSBwID0+IHtcbiAgICAocC50aXRsZSwgcC52ZXJzaW9uKTtcbiAgfTtcblxuICBsZXQgZmluZF9rZXlfb3B0ID0gKGtleSwgc3BlY3M6IGxpc3QocCgnY29kZSkpKSA9PiB7XG4gICAgc3BlY3MgfD4gVXRpbC5MaXN0VXRpbC5maW5kaV9vcHQoc3BlYyA9PiBrZXlfb2Yoc3BlYykgPT0ga2V5KTtcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9zID1cbiAgICB8IFByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nXG4gICAgfCBZb3VySW1wbFxuICAgIHwgSGlkZGVuQnVncyhpbnQpXG4gICAgfCBIaWRkZW5UZXN0cztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3BlYyA9IHAoWmlwcGVyLnQpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0cmFuc2l0aW9uYXJ5X3NwZWMgPSBwKENvZGVTdHJpbmcudCk7XG5cbiAgbGV0IG1hcCA9IChwOiBwKCdhKSwgZjogJ2EgPT4gJ2IpOiBwKCdiKSA9PiB7XG4gICAge1xuICAgICAgdGl0bGU6IHAudGl0bGUsXG4gICAgICB2ZXJzaW9uOiBwLnZlcnNpb24sXG4gICAgICBtb2R1bGVfbmFtZTogcC5tb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogcC5wcm9tcHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IHAucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZTogZihwLnByZWx1ZGUpLFxuICAgICAgY29ycmVjdF9pbXBsOiBmKHAuY29ycmVjdF9pbXBsKSxcbiAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IGYocC55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgcmVxdWlyZWQ6IHAueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgcHJvdmlkZWQ6IHAueW91cl90ZXN0cy5wcm92aWRlZCxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGw6IGYocC55b3VyX2ltcGwpLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIHAuaGlkZGVuX2J1Z3NcbiAgICAgICAgfD4gTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB7XG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgaW1wbDogUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KHdyb25nX2ltcGwuaW1wbCksXG4gICAgICAgICAgICAgICBoaW50OiB3cm9uZ19pbXBsLmhpbnQsXG4gICAgICAgICAgICAgfVxuICAgICAgICAgICB9KSxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KHAuaGlkZGVuX3Rlc3RzLnRlc3RzKSxcbiAgICAgICAgaGludHM6IHAuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgfSxcbiAgICAgIHN5bnRheF90ZXN0czogcC5zeW50YXhfdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZWRzID0gcChFZGl0b3IudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN0YXRlID0ge1xuICAgIHBvcyxcbiAgICBlZHMsXG4gIH07XG5cbiAgbGV0IGtleV9vZl9zdGF0ZSA9ICh7ZWRzLCBffSkgPT4ga2V5X29mKGVkcyk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHBlcnNpc3RlbnRfc3RhdGUgPSAocG9zLCBsaXN0KChwb3MsIFBlcnNpc3RlbnRaaXBwZXIudCkpKTtcblxuICBsZXQgZWRpdG9yX29mX3N0YXRlOiBzdGF0ZSA9PiBFZGl0b3IudCA9XG4gICAgKHtwb3MsIGVkcywgX30pID0+XG4gICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgfCBQcmVsdWRlID0+IGVkcy5wcmVsdWRlXG4gICAgICB8IENvcnJlY3RJbXBsID0+IGVkcy5jb3JyZWN0X2ltcGxcbiAgICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiBlZHMueW91cl90ZXN0cy50ZXN0c1xuICAgICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGVkcy55b3VyX3Rlc3RzLnRlc3RzXG4gICAgICB8IFlvdXJJbXBsID0+IGVkcy55b3VyX2ltcGxcbiAgICAgIHwgSGlkZGVuQnVncyhpKSA9PiBMaXN0Lm50aChlZHMuaGlkZGVuX2J1Z3MsIGkpLmltcGxcbiAgICAgIHwgSGlkZGVuVGVzdHMgPT4gZWRzLmhpZGRlbl90ZXN0cy50ZXN0c1xuICAgICAgfTtcblxuICBsZXQgcHV0X2VkaXRvciA9ICh7cG9zLCBlZHMsIF99IGFzIHN0YXRlOiBzdGF0ZSwgZWRpdG9yOiBFZGl0b3IudCkgPT5cbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgcHJlbHVkZTogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgQ29ycmVjdEltcGwgPT4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICAgICAgLi4uZWRzLnlvdXJfdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBZb3VySW1wbCA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgeW91cl9pbXBsOiBlZGl0b3IsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5CdWdzKG4pID0+IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICAgIFV0aWwuTGlzdFV0aWwucHV0X250aChcbiAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgey4uLkxpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgbiksIGltcGw6IGVkaXRvcn0sXG4gICAgICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICAuLi5lZHMsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMuaGlkZGVuX3Rlc3RzLFxuICAgICAgICAgICAgdGVzdHM6IGVkaXRvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGVkaXRvcnMgPSAoe2VkcywgX306IHN0YXRlKSA9PlxuICAgIFtcbiAgICAgIGVkcy5wcmVsdWRlLFxuICAgICAgZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgIGVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl9pbXBsLFxuICAgIF1cbiAgICBAIExpc3QubWFwKHdyb25nX2ltcGwgPT4gd3JvbmdfaW1wbC5pbXBsLCBlZHMuaGlkZGVuX2J1Z3MpXG4gICAgQCBbZWRzLmhpZGRlbl90ZXN0cy50ZXN0c107XG5cbiAgbGV0IGVkaXRvcl9wb3NpdGlvbnMgPSAoe2VkcywgX306IHN0YXRlKSA9PlxuICAgIFtQcmVsdWRlLCBDb3JyZWN0SW1wbCwgWW91clRlc3RzVGVzdGluZywgWW91clRlc3RzVmFsaWRhdGlvbiwgWW91ckltcGxdXG4gICAgQCBMaXN0Lm1hcGkoKGksIF8pID0+IEhpZGRlbkJ1Z3MoaSksIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtIaWRkZW5UZXN0c107XG5cbiAgbGV0IHBvc2l0aW9uZWRfZWRpdG9ycyA9IHN0YXRlID0+XG4gICAgTGlzdC5jb21iaW5lKGVkaXRvcl9wb3NpdGlvbnMoc3RhdGUpLCBlZGl0b3JzKHN0YXRlKSk7XG5cbiAgbGV0IGlkeF9vZl9wb3MgPSAocG9zLCBwOiBwKCdjb2RlKSkgPT5cbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiAwXG4gICAgfCBDb3JyZWN0SW1wbCA9PiAxXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IDJcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gM1xuICAgIHwgWW91ckltcGwgPT4gNFxuICAgIHwgSGlkZGVuQnVncyhpKSA9PlxuICAgICAgaWYgKGkgPCBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICA1ICsgaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx3aXRoKFwiaW52YWxpZCBoaWRkZW4gYnVnIGluZGV4XCIpO1xuICAgICAgfVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpXG4gICAgfTtcblxuICBsZXQgcG9zX29mX2lkeCA9IChwOiBwKCdjb2RlKSwgaWR4OiBpbnQpID0+XG4gICAgc3dpdGNoIChpZHgpIHtcbiAgICB8IDAgPT4gUHJlbHVkZVxuICAgIHwgMSA9PiBDb3JyZWN0SW1wbFxuICAgIHwgMiA9PiBZb3VyVGVzdHNUZXN0aW5nXG4gICAgfCAzID0+IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IDQgPT4gWW91ckltcGxcbiAgICB8IF8gPT5cbiAgICAgIGlmIChpZHggPCAwKSB7XG4gICAgICAgIGZhaWx3aXRoKFwibmVnYXRpdmUgaWR4XCIpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPCA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncykpIHtcbiAgICAgICAgSGlkZGVuQnVncyhpZHggLSA1KTtcbiAgICAgIH0gZWxzZSBpZiAoaWR4ID09IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5UZXN0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWx3aXRoKFwiZWxlbWVudCBpZHhcIik7XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgc3dpdGNoX2VkaXRvciA9ICh+cG9zLCBpbnN0cnVjdG9yX21vZGUsIH5leGVyY2lzZSkgPT5cbiAgICBpZiAoIWluc3RydWN0b3JfbW9kZSkge1xuICAgICAgc3dpdGNoIChwb3MpIHtcbiAgICAgIHwgSGlkZGVuVGVzdHNcbiAgICAgIHwgSGlkZGVuQnVncyhfKSA9PiBleGVyY2lzZVxuICAgICAgfCBfID0+IHtlZHM6IGV4ZXJjaXNlLmVkcywgcG9zfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge2VkczogZXhlcmNpc2UuZWRzLCBwb3N9O1xuICAgIH07XG5cbiAgbGV0IHppcHBlcl9vZl9jb2RlID0gY29kZSA9PiB7XG4gICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoY29kZSkpIHtcbiAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJUcmFuc2l0aW9uIGZhaWxlZC5cIilcbiAgICB8IFNvbWUoemlwcGVyKSA9PiB6aXBwZXJcbiAgICB9O1xuICB9O1xuXG4gIGxldCB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uYXJ5X3NwZWMgPT4gc3BlYyA9XG4gICAgKFxuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfSxcbiAgICApID0+IHtcbiAgICAgIGxldCBwcmVsdWRlID0gemlwcGVyX29mX2NvZGUocHJlbHVkZSk7XG4gICAgICBsZXQgY29ycmVjdF9pbXBsID0gemlwcGVyX29mX2NvZGUoY29ycmVjdF9pbXBsKTtcbiAgICAgIGxldCB5b3VyX3Rlc3RzID0ge1xuICAgICAgICBsZXQgdGVzdHMgPSB6aXBwZXJfb2ZfY29kZSh5b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCByZXF1aXJlZDogeW91cl90ZXN0cy5yZXF1aXJlZCwgcHJvdmlkZWQ6IHlvdXJfdGVzdHMucHJvdmlkZWR9O1xuICAgICAgfTtcbiAgICAgIGxldCB5b3VyX2ltcGwgPSB6aXBwZXJfb2ZfY29kZSh5b3VyX2ltcGwpO1xuICAgICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgKGFjYywge2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgICBsZXQgaW1wbCA9IHppcHBlcl9vZl9jb2RlKGltcGwpO1xuICAgICAgICAgICAgYWNjIEAgW3tpbXBsLCBoaW50fV07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgKTtcbiAgICAgIGxldCBoaWRkZW5fdGVzdHMgPSB7XG4gICAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUodGVzdHMpO1xuICAgICAgICB7dGVzdHMsIGhpbnRzfTtcbiAgICAgIH07XG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9O1xuICAgIH07XG5cbiAgbGV0IGVkc19vZl9zcGVjID1cbiAgICAgIChcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgIHZlcnNpb24sXG4gICAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgICAgcHJvbXB0LFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICBwcmVsdWRlLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgICB9LFxuICAgICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgKVxuICAgICAgOiBlZHMgPT4ge1xuICAgIGxldCBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiA9IEVkaXRvci5pbml0KH5zZXR0aW5ncyk7XG4gICAgbGV0IHByZWx1ZGUgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihwcmVsdWRlKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAge3Rlc3RzLCByZXF1aXJlZDogeW91cl90ZXN0cy5yZXF1aXJlZCwgcHJvdmlkZWQ6IHlvdXJfdGVzdHMucHJvdmlkZWR9O1xuICAgIH07XG4gICAgbGV0IHlvdXJfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfaW1wbCk7XG4gICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgIGhpZGRlbl9idWdzXG4gICAgICB8PiBMaXN0Lm1hcCgoe2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgIGxldCBpbXBsID0gZWRpdG9yX29mX3NlcmlhbGl6YXRpb24oaW1wbCk7XG4gICAgICAgICAgIHtpbXBsLCBoaW50fTtcbiAgICAgICAgIH0pO1xuICAgIGxldCBoaWRkZW5fdGVzdHMgPSB7XG4gICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih0ZXN0cyk7XG4gICAgICB7dGVzdHMsIGhpbnRzfTtcbiAgICB9O1xuICAgIHtcbiAgICAgIHRpdGxlLFxuICAgICAgdmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0LFxuICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgcHJlbHVkZSxcbiAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgIHlvdXJfdGVzdHMsXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgIHN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIC8vXG4gIC8vIE9sZCB2ZXJzaW9uIG9mIGFib3ZlIHRoYXQgZGlkIHN0cmluZy1iYXNlZCBwYXJzaW5nLCBtYXkgYmUgdXNlZnVsXG4gIC8vIGZvciB0cmFuc2l0aW9ucyBiZXR3ZWVuIHppcHBlciBkYXRhIHN0cnVjdHVyZSB2ZXJzaW9ucyAoVE9ETylcbiAgLy9cbiAgLy8gbGV0IGVkaXRvcl9vZl9jb2RlID0gKGluaXRfaWQsIGNvZGUpID0+XG4gIC8vICAgc3dpdGNoIChFZGl0b3JVdGlsLmVkaXRvcl9vZl9jb2RlKGluaXRfaWQsIGNvZGUpKSB7XG4gIC8vICAgfCBOb25lID0+IGZhaWx3aXRoKFwiRXhlcmNpc2UgZXJyb3I6IGludmFsaWQgY29kZVwiKVxuICAvLyAgIHwgU29tZSh4KSA9PiB4XG4gIC8vICAgfTtcbiAgLy8gbGV0IGVkc19vZl9zcGVjOiBzcGVjID0+IGVkcyA9XG4gIC8vICAgKFxuICAvLyAgICAge1xuICAvL1xuICAvLyAgICAgICB0aXRsZSxcbiAgLy8gICAgICAgdmVyc2lvbixcbiAgLy8gICAgICAgcHJvbXB0LFxuICAvLyAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gIC8vICAgICAgIHByZWx1ZGUsXG4gIC8vICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgLy8gICAgICAgeW91cl90ZXN0cyxcbiAgLy8gICAgICAgeW91cl9pbXBsLFxuICAvLyAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgaGlkZGVuX3Rlc3RzLFxuICAvLyAgICAgfSxcbiAgLy8gICApID0+IHtcbiAgLy8gICAgIGxldCBpZCA9IG5leHRfaWQ7XG4gIC8vICAgICBsZXQgKGlkLCBwcmVsdWRlKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBwcmVsdWRlKTtcbiAgLy8gICAgIGxldCAoaWQsIGNvcnJlY3RfaW1wbCkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgY29ycmVjdF9pbXBsKTtcbiAgLy8gICAgIGxldCAoaWQsIHlvdXJfdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQgKGlkLCB0ZXN0cykgPSBlZGl0b3Jfb2ZfY29kZShpZCwgeW91cl90ZXN0cy50ZXN0cyk7XG4gIC8vICAgICAgIChcbiAgLy8gICAgICAgICBpZCxcbiAgLy8gICAgICAgICB7XG4gIC8vICAgICAgICAgICB0ZXN0cyxcbiAgLy8gICAgICAgICAgIG51bV9yZXF1aXJlZDogeW91cl90ZXN0cy5udW1fcmVxdWlyZWQsXG4gIC8vICAgICAgICAgICBtaW5pbXVtOiB5b3VyX3Rlc3RzLm1pbmltdW0sXG4gIC8vICAgICAgICAgfSxcbiAgLy8gICAgICAgKTtcbiAgLy8gICAgIH07XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fYnVncykgPVxuICAvLyAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgLy8gICAgICAgICAoKGlkLCBhY2MpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgLy8gICAgICAgICAgIGxldCAoaWQsIGltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGltcGwpO1xuICAvLyAgICAgICAgICAgKGlkLCBhY2MgQCBbe2ltcGwsIGhpbnR9XSk7XG4gIC8vICAgICAgICAgfSxcbiAgLy8gICAgICAgICAoaWQsIFtdKSxcbiAgLy8gICAgICAgICBoaWRkZW5fYnVncyxcbiAgLy8gICAgICAgKTtcbiAgLy8gICAgIGxldCAoaWQsIGhpZGRlbl90ZXN0cykgPSB7XG4gIC8vICAgICAgIGxldCB7dGVzdHMsIGhpbnRzfSA9IGhpZGRlbl90ZXN0cztcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHRlc3RzKTtcbiAgLy8gICAgICAgKGlkLCB7dGVzdHMsIGhpbnRzfSk7XG4gIC8vICAgICB9O1xuICAvLyAgICAge1xuICAvLyAgICAgICBuZXh0X2lkOiBpZCxcbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH07XG4gIC8vICAgfTtcblxuICBsZXQgc2V0X2luc3RydWN0b3JfbW9kZSA9ICh7ZWRzLCBffSBhcyBzdGF0ZTogc3RhdGUsIG5ld19tb2RlOiBib29sKSA9PiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZWRzOiB7XG4gICAgICAuLi5lZHMsXG4gICAgICBwcmVsdWRlOiBFZGl0b3Iuc2V0X3JlYWRfb25seShlZHMucHJlbHVkZSwgIW5ld19tb2RlKSxcbiAgICB9LFxuICB9O1xuXG4gIGxldCB2aXNpYmxlX2luID0gKHBvcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgQ29ycmVjdEltcGwgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRydWVcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZmFsc2VcbiAgICB8IFlvdXJJbXBsID0+IHRydWVcbiAgICB8IEhpZGRlbkJ1Z3MoXykgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGF0ZV9vZl9zcGVjID1cbiAgICAgIChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sLCB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50KTogc3RhdGUgPT4ge1xuICAgIGxldCBlZHMgPSBlZHNfb2Zfc3BlYyh+c2V0dGluZ3MsIHNwZWMpO1xuICAgIHNldF9pbnN0cnVjdG9yX21vZGUoe3BvczogWW91ckltcGwsIGVkc30sIGluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUgPVxuICAgICAgKHtwb3MsIF99IGFzIHN0YXRlOiBzdGF0ZSwgfmluc3RydWN0b3JfbW9kZTogYm9vbCkgPT4ge1xuICAgIGxldCB6aXBwZXJzID1cbiAgICAgIHBvc2l0aW9uZWRfZWRpdG9ycyhzdGF0ZSlcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgocG9zLCBfKSkgPT4gdmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKVxuICAgICAgfD4gTGlzdC5tYXAoKChwb3MsIGVkaXRvcikpID0+IHtcbiAgICAgICAgICAgKHBvcywgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KEVkaXRvci4oZWRpdG9yLnN0YXRlLnppcHBlcikpKVxuICAgICAgICAgfSk7XG4gICAgKHBvcywgemlwcGVycyk7XG4gIH07XG5cbiAgbGV0IHVucGVyc2lzdF9zdGF0ZSA9XG4gICAgICAoXG4gICAgICAgIChwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk6IHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgIH5zcGVjOiBzcGVjLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgICAgICB+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgKVxuICAgICAgOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGxvb2t1cCA9IChwb3MsIGRlZmF1bHQpID0+XG4gICAgICBpZiAodmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIGxldCBwZXJzaXN0ZWRfemlwcGVyID0gTGlzdC5hc3NvYyhwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk7XG4gICAgICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdChwZXJzaXN0ZWRfemlwcGVyKTtcbiAgICAgICAgRWRpdG9yLmluaXQoemlwcGVyLCB+c2V0dGluZ3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRWRpdG9yLmluaXQoZGVmYXVsdCwgfnNldHRpbmdzKTtcbiAgICAgIH07XG4gICAgbGV0IHByZWx1ZGUgPSBsb29rdXAoUHJlbHVkZSwgc3BlYy5wcmVsdWRlKTtcbiAgICBsZXQgY29ycmVjdF9pbXBsID0gbG9va3VwKENvcnJlY3RJbXBsLCBzcGVjLmNvcnJlY3RfaW1wbCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBsb29rdXAoWW91clRlc3RzVmFsaWRhdGlvbiwgc3BlYy55b3VyX3Rlc3RzLnRlc3RzKTtcbiAgICBsZXQgeW91cl9pbXBsID0gbG9va3VwKFlvdXJJbXBsLCBzcGVjLnlvdXJfaW1wbCk7XG4gICAgbGV0IChfLCBoaWRkZW5fYnVncykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoaSwgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbChFZGl0b3IudCkpKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgbGV0IGltcGwgPSBsb29rdXAoSGlkZGVuQnVncyhpKSwgaW1wbCk7XG4gICAgICAgICAgKGkgKyAxLCBoaWRkZW5fYnVncyBAIFt7aW1wbCwgaGludH1dKTtcbiAgICAgICAgfSxcbiAgICAgICAgKDAsIFtdKSxcbiAgICAgICAgc3BlYy5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXN0cyA9IGxvb2t1cChIaWRkZW5UZXN0cywgc3BlYy5oaWRkZW5fdGVzdHMudGVzdHMpO1xuXG4gICAgc2V0X2luc3RydWN0b3JfbW9kZShcbiAgICAgIHtcbiAgICAgICAgcG9zLFxuICAgICAgICBlZHM6IHtcbiAgICAgICAgICB0aXRsZTogc3BlYy50aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uOiBzcGVjLnZlcnNpb24sXG4gICAgICAgICAgbW9kdWxlX25hbWU6IHNwZWMubW9kdWxlX25hbWUsXG4gICAgICAgICAgcHJvbXB0OiBzcGVjLnByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb246IHNwZWMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHNwZWMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHByb3ZpZGVkOiBzcGVjLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgaGludHM6IHNwZWMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ludGF4X3Rlc3RzOiBzcGVjLnN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAgfTtcblxuICAvLyAjIFN0aXRjaGluZ1xuXG4gIHR5cGUgc3RpdGNoZWQoJ2EpID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgdXNlcl9pbXBsOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbFxuICAgIHVzZXJfdGVzdHM6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsICsgeW91cl90ZXN0c1xuICAgIHByZWx1ZGU6ICdhLCAvLyBwcmVsdWRlXG4gICAgaW5zdHJ1Y3RvcjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyBoaWRkZW5fdGVzdHMudGVzdHMgLy8gVE9ETyBvbmx5IG5lZWRzIHRvIHJ1biBpbiBpbnN0cnVjdG9yIG1vZGVcbiAgICBoaWRkZW5fYnVnczogbGlzdCgnYSksIC8vIHByZWx1ZGUgKyBoaWRkZW5fYnVnc1tpXS5pbXBsICsgeW91cl90ZXN0cyxcbiAgICBoaWRkZW5fdGVzdHM6ICdhLFxuICB9O1xuXG4gIGxldCB3cmFwX2ZpbHRlciA9IChhY3Q6IEZpbHRlckFjdGlvbi5hY3Rpb24sIHRlcm06IFRlcm0uVUV4cC50KTogVGVybS5VRXhwLnQgPT5cbiAgICBUZXJtQmFzZS5VRXhwLntcbiAgICAgIHRlcm06XG4gICAgICAgIFRlcm1CYXNlLlVFeHAuRmlsdGVyKFxuICAgICAgICAgIEZpbHRlckFjdGlvbi4oYWN0LCBPbmUpLFxuICAgICAgICAgIHt0ZXJtOiBDb25zdHJ1Y3RvcihcIiRlXCIpLCBpZHM6IFtJZC5taygpXX0sXG4gICAgICAgICAgdGVybSxcbiAgICAgICAgKSxcbiAgICAgIGlkczogW0lkLm1rKCldLFxuICAgIH07XG5cbiAgbGV0IHRlcm1fb2YgPSAoZWRpdG9yOiBFZGl0b3IudCk6IFRlcm0uVUV4cC50ID0+XG4gICAgTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbShlZGl0b3Iuc3RhdGUuemlwcGVyKSB8PiBmc3Q7XG5cbiAgbGV0IHN0aXRjaDMgPSAoZWQxOiBFZGl0b3IudCwgZWQyOiBFZGl0b3IudCwgZWQzOiBFZGl0b3IudCkgPT5cbiAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAoXG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodGVybV9vZihlZDEpLCB0ZXJtX29mKGVkMikpLFxuICAgICAgdGVybV9vZihlZDMpLFxuICAgICk7XG5cbiAgbGV0IHN0aXRjaF90ZXJtID0gKHtlZHMsIF99OiBzdGF0ZSk6IHN0aXRjaGVkKFRlcm1CYXNlLlVFeHAudCkgPT4ge1xuICAgIGxldCBpbnN0cnVjdG9yID1cbiAgICAgIHN0aXRjaDMoZWRzLnByZWx1ZGUsIGVkcy5jb3JyZWN0X2ltcGwsIGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpO1xuICAgIGxldCB1c2VyX2ltcGxfdGVybSA9IHtcbiAgICAgIGxldCB5b3VyX2ltcGxfdGVybSA9XG4gICAgICAgIGVkcy55b3VyX2ltcGwgfD4gdGVybV9vZiB8PiB3cmFwX2ZpbHRlcihGaWx0ZXJBY3Rpb24uU3RlcCk7XG4gICAgICBsZXQgcHJlbHVkZV90ZXJtID1cbiAgICAgICAgZWRzLnByZWx1ZGUgfD4gdGVybV9vZiB8PiB3cmFwX2ZpbHRlcihGaWx0ZXJBY3Rpb24uRXZhbCk7XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAocHJlbHVkZV90ZXJtLCB5b3VyX2ltcGxfdGVybSk7XG4gICAgfTtcbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uX3Rlcm0gPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB1c2VyX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy55b3VyX3Rlc3RzLnRlc3RzKSk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXJtID1cbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cCh1c2VyX2ltcGxfdGVybSwgdGVybV9vZihlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzKSk7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiB0ZXN0X3ZhbGlkYXRpb25fdGVybSxcbiAgICAgIHVzZXJfaW1wbDogdXNlcl9pbXBsX3Rlcm0sXG4gICAgICB1c2VyX3Rlc3RzOiB1c2VyX3Rlc3RzX3Rlcm0sXG4gICAgICAvLyBpbnN0cnVjdG9yIHdvcmtzIGhlcmUgYXMgbG9uZyBhcyB5b3UgZG9uJ3Qgc2hhZG93IGFueXRoaW5nIGluIHRoZSBwcmVsdWRlXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAodCk6IFRlcm1CYXNlLlVFeHAudCA9PlxuICAgICAgICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgdC5pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyksXG4gICAgICAgICAgZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICApLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBoaWRkZW5fdGVzdHNfdGVybSxcbiAgICB9O1xuICB9O1xuICBsZXQgc3RpdGNoX3Rlcm0gPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfdGVybSk7XG5cbiAgdHlwZSBzdGl0Y2hlZF9zdGF0aWNzID0gc3RpdGNoZWQoRWRpdG9yLkNhY2hlZFN0YXRpY3MudCk7XG5cbiAgLyogTXVsdGlwbGUgc3RpdGNoaW5ncyBhcmUgbmVlZGVkIGZvciBlYWNoIGV4ZXJjaXNlXG4gICAgIChzZWUgY29tbWVudHMgaW4gdGhlIHN0aXRjaGVkIHR5cGUgYWJvdmUpXG5cbiAgICAgU3RpdGNoaW5nIGlzIG5lY2Vzc2FyeSB0byBjb25jYXRlbmF0ZSB0ZXJtc1xuICAgICBmcm9tIGRpZmZlcmVudCBlZGl0b3JzLCB3aGljaCBhcmUgdGhlbiB0eXBlY2hlY2tlZC4gKi9cbiAgbGV0IHN0aXRjaF9zdGF0aWMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgdDogc3RpdGNoZWQoVGVybUJhc2UuVUV4cC50KSlcbiAgICAgIDogc3RpdGNoZWRfc3RhdGljcyA9PiB7XG4gICAgbGV0IG1rID0gKHRlcm06IFRlcm1CYXNlLlVFeHAudCk6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQgPT4ge1xuICAgICAgLy9OT1RFOiB0aGlzIGlzIGV4cGVuc2l2ZSBhbmQgX2FsbW9zdF8gcmVkdW5kYW50IHRvIHRoZSBzdGF0aWNzIGluIEVkaXRvclxuICAgICAgbGV0IGluZm9fbWFwID0gU3RhdGljcy5tayhzZXR0aW5ncywgQnVpbHRpbnMuY3R4X2luaXQsIHRlcm0pO1xuICAgICAge3Rlcm0sIGVycm9yX2lkczogU3RhdGljcy5NYXAuZXJyb3JfaWRzKGluZm9fbWFwKSwgaW5mb19tYXB9O1xuICAgIH07XG4gICAgbGV0IGluc3RydWN0b3IgPSBtayh0Lmluc3RydWN0b3IpO1xuICAgIHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbjogbWsodC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgdXNlcl9pbXBsOiBtayh0LnVzZXJfaW1wbCksXG4gICAgICB1c2VyX3Rlc3RzOiBtayh0LnVzZXJfdGVzdHMpLFxuICAgICAgcHJlbHVkZTogaW5zdHJ1Y3RvciwgLy8gd29ya3MgYXMgbG9uZyBhcyB5b3UgZG9uJ3Qgc2hhZG93IGFueXRoaW5nIGluIHRoZSBwcmVsdWRlXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKG1rLCB0LmhpZGRlbl9idWdzKSxcbiAgICAgIGhpZGRlbl90ZXN0czogbWsodC5oaWRkZW5fdGVzdHMpLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0aXRjaF9zdGF0aWMgPSBDb3JlLk1lbW8uZ2VuZXJhbChzdGl0Y2hfc3RhdGljKTtcblxuICBsZXQgcHJlbHVkZV9rZXkgPSBcInByZWx1ZGVcIjtcbiAgbGV0IHRlc3RfdmFsaWRhdGlvbl9rZXkgPSBcInRlc3RfdmFsaWRhdGlvblwiO1xuICBsZXQgdXNlcl9pbXBsX2tleSA9IFwidXNlcl9pbXBsXCI7XG4gIGxldCB1c2VyX3Rlc3RzX2tleSA9IFwidXNlcl90ZXN0c1wiO1xuICBsZXQgaW5zdHJ1Y3Rvcl9rZXkgPSBcImluc3RydWN0b3JcIjtcbiAgbGV0IGhpZGRlbl9idWdzX2tleSA9IG4gPT4gXCJoaWRkZW5fYnVnc19cIiArKyBzdHJpbmdfb2ZfaW50KG4pO1xuICBsZXQgaGlkZGVuX3Rlc3RzX2tleSA9IFwiaGlkZGVuX3Rlc3RzXCI7XG5cbiAgbGV0IGtleV9mb3Jfc3RhdGljcyA9IChzdGF0ZTogc3RhdGUpOiBzdHJpbmcgPT5cbiAgICBzd2l0Y2ggKHN0YXRlLnBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBwcmVsdWRlX2tleVxuICAgIHwgQ29ycmVjdEltcGwgPT4gaW5zdHJ1Y3Rvcl9rZXlcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gdGVzdF92YWxpZGF0aW9uX2tleVxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB1c2VyX3Rlc3RzX2tleVxuICAgIHwgWW91ckltcGwgPT4gdXNlcl9pbXBsX2tleVxuICAgIHwgSGlkZGVuQnVncyhpZHgpID0+IGhpZGRlbl9idWdzX2tleShpZHgpXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBoaWRkZW5fdGVzdHNfa2V5XG4gICAgfTtcblxuICBsZXQgc3BsaWNlZF9lbGFicyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBzdGF0ZTogc3RhdGUpXG4gICAgICA6IGxpc3QoKE1vZGVsUmVzdWx0cy5rZXksIERIRXhwLnQpKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlOiBfLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgZWxhYiA9IChzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50KSA9PlxuICAgICAgSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3MsIHMuaW5mb19tYXAsIHMudGVybSk7XG4gICAgW1xuICAgICAgKHRlc3RfdmFsaWRhdGlvbl9rZXksIGVsYWIodGVzdF92YWxpZGF0aW9uKSksXG4gICAgICAodXNlcl9pbXBsX2tleSwgZWxhYih1c2VyX2ltcGwpKSxcbiAgICAgICh1c2VyX3Rlc3RzX2tleSwgZWxhYih1c2VyX3Rlc3RzKSksXG4gICAgICAoaW5zdHJ1Y3Rvcl9rZXksIGVsYWIoaW5zdHJ1Y3RvcikpLFxuICAgICAgKGhpZGRlbl90ZXN0c19rZXksIGVsYWIoaGlkZGVuX3Rlc3RzKSksXG4gICAgXVxuICAgIEAgKFxuICAgICAgaGlkZGVuX2J1Z3NcbiAgICAgIHw+IExpc3QubWFwaSgobiwgaGlkZGVuX2J1ZzogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCkgPT5cbiAgICAgICAgICAgKGhpZGRlbl9idWdzX2tleShuKSwgZWxhYihoaWRkZW5fYnVnKSlcbiAgICAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIG1vZHVsZSBEeW5hbWljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCxcbiAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQudCxcbiAgICB9O1xuICAgIGxldCBlbXB0eTogdCA9IHtzdGF0aWNzOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy5lbXB0eSwgcmVzdWx0OiBOb0VsYWJ9O1xuICAgIGxldCBzdGF0aWNzX29ubHkgPSAoc3RhdGljczogRWRpdG9yLkNhY2hlZFN0YXRpY3MudCk6IHQgPT4ge1xuICAgICAgc3RhdGljcyxcbiAgICAgIHJlc3VsdDogTm9FbGFiLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHN0YXRpY3Nfb2Zfc3RpY2hlZF9keW5hbWljcyA9XG4gICAgICAoc3RhdGU6IHN0YXRlLCBzOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkpOiBFZGl0b3IuQ2FjaGVkU3RhdGljcy50ID0+XG4gICAgc3dpdGNoIChzdGF0ZS5wb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcy5wcmVsdWRlLnN0YXRpY3NcbiAgICB8IENvcnJlY3RJbXBsID0+IHMuaW5zdHJ1Y3Rvci5zdGF0aWNzXG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHMudGVzdF92YWxpZGF0aW9uLnN0YXRpY3NcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gcy51c2VyX3Rlc3RzLnN0YXRpY3NcbiAgICB8IFlvdXJJbXBsID0+IHMudXNlcl9pbXBsLnN0YXRpY3NcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBMaXN0Lm50aChzLmhpZGRlbl9idWdzLCBpZHgpLnN0YXRpY3NcbiAgICB8IEhpZGRlblRlc3RzID0+IHMuaGlkZGVuX3Rlc3RzLnN0YXRpY3NcbiAgICB9O1xuXG4gIC8qIEdpdmVuIHRoZSBldmFsdWF0aW9uIHJlc3VsdHMsIGNvbGxlY3RzIHRoZVxuICAgICByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgcHJvZHVjaW5nIGR5bmFtaWNcbiAgICAgZmVlZGJhY2sqL1xuICBsZXQgc3RpdGNoX2R5bmFtaWMgPVxuICAgICAgKFxuICAgICAgICBzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgcmVzdWx0czogb3B0aW9uKE1vZGVsUmVzdWx0cy50KSxcbiAgICAgIClcbiAgICAgIDogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpID0+IHtcbiAgICBsZXQge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIHByZWx1ZGUsXG4gICAgICBpbnN0cnVjdG9yLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfSA9XG4gICAgICBzdGl0Y2hfc3RhdGljKHNldHRpbmdzLCBzdGl0Y2hfdGVybShzdGF0ZSkpO1xuICAgIGxldCByZXN1bHRfb2YgPSBrZXkgPT5cbiAgICAgIHN3aXRjaCAocmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IE1vZGVsUmVzdWx0Lk5vRWxhYlxuICAgICAgfCBTb21lKHJlc3VsdHMpID0+XG4gICAgICAgIE1vZGVsUmVzdWx0cy5sb29rdXAocmVzdWx0cywga2V5KVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9TW9kZWxSZXN1bHQuTm9FbGFiKVxuICAgICAgfTtcblxuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb24gPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgc3RhdGljczogdGVzdF92YWxpZGF0aW9uLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih0ZXN0X3ZhbGlkYXRpb25fa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl9pbXBsID1cbiAgICAgIER5bmFtaWNzSXRlbS57c3RhdGljczogdXNlcl9pbXBsLCByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX2ltcGxfa2V5KX07XG5cbiAgICBsZXQgdXNlcl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3M6IHVzZXJfdGVzdHMsIHJlc3VsdDogcmVzdWx0X29mKHVzZXJfdGVzdHNfa2V5KX07XG4gICAgbGV0IHByZWx1ZGUgPSBEeW5hbWljc0l0ZW0ue3N0YXRpY3M6IHByZWx1ZGUsIHJlc3VsdDogTm9FbGFifTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBEeW5hbWljc0l0ZW0ue3N0YXRpY3M6IGluc3RydWN0b3IsIHJlc3VsdDogcmVzdWx0X29mKGluc3RydWN0b3Jfa2V5KX07XG4gICAgbGV0IGhpZGRlbl9idWdzID1cbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKG4sIHN0YXRpY3M6IEVkaXRvci5DYWNoZWRTdGF0aWNzLnQpID0+XG4gICAgICAgICAgRHluYW1pY3NJdGVtLntzdGF0aWNzLCByZXN1bHQ6IHJlc3VsdF9vZihoaWRkZW5fYnVnc19rZXkobikpfSxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgc3RhdGljczogaGlkZGVuX3Rlc3RzLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihoaWRkZW5fdGVzdHNfa2V5KSxcbiAgICAgIH07XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uLFxuICAgICAgdXNlcl9pbXBsLFxuICAgICAgdXNlcl90ZXN0cyxcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHMsXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX2R5bmFtaWMgPVxuICAgICAgKFxuICAgICAgICBzZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgcmVzdWx0czogb3B0aW9uKE1vZGVsUmVzdWx0cy50KSxcbiAgICAgIClcbiAgICAgIDogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpID0+XG4gICAgaWYgKHNldHRpbmdzLnN0YXRpY3MgJiYgc2V0dGluZ3MuZHluYW1pY3MpIHtcbiAgICAgIHN0aXRjaF9keW5hbWljKHNldHRpbmdzLCBzdGF0ZSwgcmVzdWx0cyk7XG4gICAgfSBlbHNlIGlmIChzZXR0aW5ncy5zdGF0aWNzKSB7XG4gICAgICBsZXQgdCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgICB7XG4gICAgICAgIHRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICAgIHVzZXJfaW1wbDogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfaW1wbCksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC51c2VyX3Rlc3RzKSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0Lmluc3RydWN0b3IpLFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQucHJlbHVkZSksXG4gICAgICAgIGhpZGRlbl9idWdzOiBMaXN0Lm1hcChEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5LCB0LmhpZGRlbl9idWdzKSxcbiAgICAgICAgaGlkZGVuX3Rlc3RzOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaGlkZGVuX3Rlc3RzKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfaW1wbDogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICB1c2VyX3Rlc3RzOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGluc3RydWN0b3I6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgcHJlbHVkZTogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgoc3RhdGUuZWRzLmhpZGRlbl9idWdzKSwgXyA9PlxuICAgICAgICAgICAgRHluYW1pY3NJdGVtLmVtcHR5XG4gICAgICAgICAgKSxcbiAgICAgICAgaGlkZGVuX3Rlc3RzOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICB9O1xuICAgIH07XG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9keW5hbWljKTtcblxuICAvLyBNb2R1bGUgRXhwb3J0XG5cbiAgbGV0IGVkaXRvcl9wcCA9IChmbXQsIGVkaXRvcjogRWRpdG9yLnQpID0+IHtcbiAgICBsZXQgemlwcGVyID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBsZXQgc2VyaWFsaXphdGlvbiA9IFppcHBlci5zaG93KHppcHBlcik7XG4gICAgLy8gbGV0IHN0cmluZ19saXRlcmFsID0gXCJcXFwiXCIgKysgU3RyaW5nLmVzY2FwZWQoc2VyaWFsaXphdGlvbikgKysgXCJcXFwiXCI7XG4gICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyhmbXQsIHNlcmlhbGl6YXRpb24pO1xuICB9O1xuXG4gIGxldCBleHBvcnRfbW9kdWxlID0gKG1vZHVsZV9uYW1lLCB7ZWRzLCBffTogc3RhdGUpID0+IHtcbiAgICBsZXQgcHJlZml4ID1cbiAgICAgIFwibGV0IHByb21wdCA9IFwiXG4gICAgICArKyBtb2R1bGVfbmFtZVxuICAgICAgKysgXCJfcHJvbXB0LnByb21wdFxcblwiXG4gICAgICArKyBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AoZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IHRyYW5zaXRpb25hcnlfZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBjb2RlID0gUHJpbnRlci50b19zdHJpbmdfYmFzaWMoemlwcGVyKTtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJcXFwiXCIgKysgU3RyaW5nLmVzY2FwZWQoY29kZSkgKysgXCJcXFwiXCIpO1xuICB9O1xuXG4gIGxldCBleHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gRXhlcmNpc2UudHJhbnNpdGlvbihcIjtcbiAgICBsZXQgcmVjb3JkID0gc2hvd19wKHRyYW5zaXRpb25hcnlfZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gcHJlZml4ICsrIHJlY29yZCArKyBcIilcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCBleHBvcnRfZ3JhZGluZ19tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBoZWFkZXIgPSBvdXRwdXRfaGVhZGVyX2dyYWRpbmcobW9kdWxlX25hbWUpO1xuICAgIGxldCBwcmVmaXggPSBcImxldCBleGVyY2lzZTogRXhlcmNpc2Uuc3BlYyA9IFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AoZWRpdG9yX3BwLCBlZHMpO1xuICAgIGxldCBkYXRhID0gaGVhZGVyICsrIHByZWZpeCArKyByZWNvcmQgKysgXCJcXG5cIjtcbiAgICBkYXRhO1xuICB9O1xuXG4gIGxldCBibGFua19zcGVjID1cbiAgICAgIChcbiAgICAgICAgfnRpdGxlLFxuICAgICAgICB+bW9kdWxlX25hbWUsXG4gICAgICAgIH5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIH5yZXF1aXJlZF90ZXN0cyxcbiAgICAgICAgfnByb3ZpZGVkX3Rlc3RzLFxuICAgICAgICB+bnVtX3dyb25nX2ltcGxzLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IHByZWx1ZGUgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgeW91cl9pbXBsID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgTGlzdC5pbml0KFxuICAgICAgICBudW1fd3JvbmdfaW1wbHMsXG4gICAgICAgIGkgPT4ge1xuICAgICAgICAgIGxldCB6aXBwZXIgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgICAgICAgIHtpbXBsOiB6aXBwZXIsIGhpbnQ6IFwiVE9ETzogaGludCBcIiArKyBzdHJpbmdfb2ZfaW50KGkpfTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgbGV0IGhpZGRlbl90ZXN0c190ZXN0cyA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAge1xuICAgICAgdGl0bGUsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgbW9kdWxlX25hbWUsXG4gICAgICBwcm9tcHQ6IEV4ZXJjaXNlRW52LmRlZmF1bHQsXG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlLFxuICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogeW91cl90ZXN0c190ZXN0cyxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICBwcm92aWRlZDogcHJvdmlkZWRfdGVzdHMsXG4gICAgICB9LFxuICAgICAgeW91cl9pbXBsLFxuICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgdGVzdHM6IGhpZGRlbl90ZXN0c190ZXN0cyxcbiAgICAgICAgaGludHM6IFtdLFxuICAgICAgfSxcbiAgICAgIHN5bnRheF90ZXN0czogW10sXG4gICAgfTtcbiAgfTtcblxuICAvLyBGcm9tIFN0b3JlXG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGV4ZXJjaXNlX2V4cG9ydCA9IHtcbiAgICBjdXJfZXhlcmNpc2U6IGtleSxcbiAgICBleGVyY2lzZV9kYXRhOiBsaXN0KChrZXksIHBlcnNpc3RlbnRfc3RhdGUpKSxcbiAgfTtcblxuICBsZXQgc2VyaWFsaXplX2V4ZXJjaXNlID0gKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgcGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSlcbiAgICB8PiBzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGVcbiAgICB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZSA9IChkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGRhdGFcbiAgICB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nXG4gICAgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwXG4gICAgfD4gdW5wZXJzaXN0X3N0YXRlKH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgZGVzZXJpYWxpemVfZXhlcmNpc2VfZXhwb3J0ID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IGV4ZXJjaXNlX2V4cG9ydF9vZl9zZXhwO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5QcmltaXRpdmVzO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2UuRXhlcmNpc2VFbnYpID0+IHtcbiAgb3BlbiBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyY2VudGFnZSA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRzID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzY29yZSA9IChwb2ludHMsIHBvaW50cyk7XG5cbiAgbGV0IHNjb3JlX29mX3BlcmNlbnQgPSAocGVyY2VudCwgbWF4X3BvaW50cykgPT4ge1xuICAgIGxldCBtYXhfcG9pbnRzID0gZmxvYXRfb2ZfaW50KG1heF9wb2ludHMpO1xuICAgIChwZXJjZW50ICouIG1heF9wb2ludHMsIG1heF9wb2ludHMpO1xuICB9O1xuXG4gIG1vZHVsZSBUZXN0VmFsaWRhdGlvblJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgICBwcm92aWRlZDogaW50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfcmVzdWx0cyxcbiAgICAgICAgcmVxdWlyZWQ6IGVkcy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogZWRzLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IDAuMFxuICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgbGV0IG51bV90ZXN0cyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpO1xuICAgICAgICBsZXQgcmVxdWlyZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnJlcXVpcmVkKTtcbiAgICAgICAgbGV0IHByb3ZpZGVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5wcm92aWRlZCk7XG4gICAgICAgIGxldCBudW1fcGFzc2luZyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMucGFzc2luZyk7XG5cbiAgICAgICAgcmVxdWlyZWQgLS4gcHJvdmlkZWQgPD0gMC4wIHx8IG51bV90ZXN0cyA8PSAwLjBcbiAgICAgICAgICA/IDAuMFxuICAgICAgICAgIDogbnVtX3Bhc3NpbmdcbiAgICAgICAgICAgIC8uIG51bV90ZXN0c1xuICAgICAgICAgICAgKi4gKFxuICAgICAgICAgICAgICBGbG9hdC5tYXgoXG4gICAgICAgICAgICAgICAgMC4sXG4gICAgICAgICAgICAgICAgRmxvYXQubWluKG51bV90ZXN0cyAtLiBwcm92aWRlZCwgcmVxdWlyZWQgLS4gcHJvdmlkZWQpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8uIChyZXF1aXJlZCAtLiBwcm92aWRlZClcbiAgICAgICAgICAgICk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgICAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICAgICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICAgICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICAgICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgICAgICB+cl9zdHI9XCJ2YWxpZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge3Jlc3VsdHM6IGxpc3QoKFRlc3RTdGF0dXMudCwgc3RyaW5nKSl9O1xuXG4gICAgbGV0IGhpZGRlbl9idWdfc3RhdHVzID1cbiAgICAgICAgKFxuICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICBoaWRkZW5fYnVnX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICApXG4gICAgICAgIDogVGVzdFN0YXR1cy50ID0+IHtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyh0ZXN0X3ZhbGlkYXRpb25fZGF0YS5yZXN1bHQpLFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoaGlkZGVuX2J1Z19kYXRhLnJlc3VsdCksXG4gICAgICApIHtcbiAgICAgIHwgKE5vbmUsIF8pXG4gICAgICB8IChfLCBOb25lKSA9PiBJbmRldFxuICAgICAgfCAoU29tZSh0ZXN0X3ZhbGlkYXRpb25fZGF0YSksIFNvbWUoaGlkZGVuX2J1Z19kYXRhKSkgPT5cbiAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9tYXAgPSB0ZXN0X3ZhbGlkYXRpb25fZGF0YS50ZXN0X21hcDtcbiAgICAgICAgbGV0IGhpZGRlbl9idWdfdGVzdF9tYXAgPSBoaWRkZW5fYnVnX2RhdGEudGVzdF9tYXA7XG5cbiAgICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgICBoaWRkZW5fYnVnX3Rlc3RfbWFwXG4gICAgICAgICAgfD4gTGlzdC5maW5kX29wdCgoKGlkLCBpbnN0YW5jZV9yZXBvcnRzKSkgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKGluc3RhbmNlX3JlcG9ydHMpO1xuICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsID0+XG4gICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cyA9XG4gICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl90ZXN0X21hcCB8PiBUZXN0TWFwLmxvb2t1cChpZCk7XG4gICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMpIHtcbiAgICAgICAgICAgICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgU29tZShyZXBvcnRzKSA9PlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhyZXBvcnRzKTtcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzID0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbFxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICBzd2l0Y2ggKGZvdW5kKSB7XG4gICAgICAgIHwgTm9uZSA9PiBGYWlsXG4gICAgICAgIHwgU29tZShfKSA9PiBQYXNzXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07IC8vIGZvciBlYWNoIGhpZGRlbiBidWdcbiAgICAvLyAgIGluIHRoZSB0ZXN0IHJlc3VsdHMgZGF0YSwgZmluZCBhIHRlc3QgSUQgdGhhdCBwYXNzZXMgdGVzdCB2YWxpZGF0aW9uIGJ1dCBmYWlscyBhZ2FpbnN0XG5cbiAgICBsZXQgbWsgPVxuICAgICAgICAoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlOiBsaXN0KHdyb25nX2ltcGwoRWRpdG9yLnQpKSxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M6IGxpc3QoRHluYW1pY3NJdGVtLnQpLFxuICAgICAgICApXG4gICAgICAgIDogdCA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9XG4gICAgICAgIExpc3QubWFwKGhpZGRlbl9idWdfc3RhdHVzKHRlc3RfdmFsaWRhdGlvbiksIGhpZGRlbl9idWdzKTtcbiAgICAgIGxldCBoaW50cyA9XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh3cm9uZ19pbXBsOiB3cm9uZ19pbXBsKEVkaXRvci50KSkgPT4gd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgIGhpZGRlbl9idWdzX3N0YXRlLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlc3VsdHMgPSBMaXN0LmNvbWJpbmUocmVzdWx0cywgaGludHMpO1xuICAgICAge3Jlc3VsdHM6IHJlc3VsdHN9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIGxldCByZXN1bHRzID0gcmVwb3J0LnJlc3VsdHM7XG4gICAgICBsZXQgbnVtX3dyb25nX2ltcGxzID0gTGlzdC5sZW5ndGgocmVzdWx0cyk7XG4gICAgICBsZXQgbnVtX3Bhc3NlZCA9XG4gICAgICAgIHJlc3VsdHNcbiAgICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICAgIHw+IExpc3QubGVuZ3RoO1xuICAgICAgc3dpdGNoIChudW1fd3JvbmdfaW1wbHMpIHtcbiAgICAgIHwgMCA9PiAxLjBcbiAgICAgIHwgXyA9PiBmbG9hdF9vZl9pbnQobnVtX3Bhc3NlZCkgLy4gZmxvYXRfb2ZfaW50KG51bV93cm9uZ19pbXBscylcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIFRPRE8gbW92ZSB0byBzZXBhcmF0ZSBtb2R1bGVcblxuICAgIGxldCBzdW1tYXJ5X3N0ciA9ICh+dG90YWwsIH5mb3VuZCk6IHN0cmluZyA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRvdGFsLFxuICAgICAgICB+cD1mb3VuZCxcbiAgICAgICAgfnE9MCxcbiAgICAgICAgfm5fc3RyPVwiYnVnXCIsXG4gICAgICAgIH5uc19zdHI9XCJidWdzXCIsXG4gICAgICAgIH5wX3N0cj1cImV4cG9zZWRcIixcbiAgICAgICAgfnFfc3RyPVwiXCIsXG4gICAgICAgIH5yX3N0cj1cInVucmV2ZWFsZWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3ludGF4UmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChib29sLCBoaW50KSksXG4gICAgICBwZXJjZW50YWdlLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofnlvdXJfaW1wbDogRWRpdG9yLnQsIH50ZXN0czogc3ludGF4X3Rlc3RzKTogdCA9PiB7XG4gICAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPVxuICAgICAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKHlvdXJfaW1wbC5zdGF0ZS56aXBwZXIpIHw+IGZzdDtcblxuICAgICAgbGV0IHByZWRpY2F0ZXMgPVxuICAgICAgICBMaXN0Lm1hcCgoKF8sIHApKSA9PiBTeW50YXhUZXN0LnByZWRpY2F0ZV9mbihwKSwgdGVzdHMpO1xuICAgICAgbGV0IGhpbnRzID0gTGlzdC5tYXAoKChoLCBfKSkgPT4gaCwgdGVzdHMpO1xuICAgICAgbGV0IHN5bnRheF9yZXN1bHRzID0gU3ludGF4VGVzdC5jaGVjayh1c2VyX2ltcGxfdGVybSwgcHJlZGljYXRlcyk7XG5cbiAgICAgIHtcbiAgICAgICAgaGludGVkX3Jlc3VsdHM6XG4gICAgICAgICAgTGlzdC5tYXAyKChyLCBoKSA9PiAociwgaCksIHN5bnRheF9yZXN1bHRzLnJlc3VsdHMsIGhpbnRzKSxcbiAgICAgICAgcGVyY2VudGFnZTogc3ludGF4X3Jlc3VsdHMucGVyY2VudGFnZSxcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgSW1wbEdyYWRpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge1xuICAgICAgaGludHM6IGxpc3Qoc3RyaW5nKSxcbiAgICAgIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuICAgICAgaGludGVkX3Jlc3VsdHM6IGxpc3QoKFRlc3RTdGF0dXMudCwgc3RyaW5nKSksXG4gICAgfTtcblxuICAgIGxldCBtayA9ICh+aGludHM6IGxpc3Qoc3RyaW5nKSwgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKTogdCA9PiB7XG4gICAgICBsZXQgaGludGVkX3Jlc3VsdHMgPVxuICAgICAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgICAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PlxuICAgICAgICAgIGxldCBzdGF0dXNlcyA9IHRlc3RfcmVzdWx0cy5zdGF0dXNlcztcbiAgICAgICAgICBVdGlsLkxpc3RVdGlsLnppcF9kZWZhdWx0cyhcbiAgICAgICAgICAgIHN0YXR1c2VzLFxuICAgICAgICAgICAgaGludHMsXG4gICAgICAgICAgICBIYXozbGNvcmUuVGVzdFN0YXR1cy5JbmRldCxcbiAgICAgICAgICAgIFwiTm8gaGludCBhdmFpbGFibGUuXCIsXG4gICAgICAgICAgKTtcblxuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICBVdGlsLkxpc3RVdGlsLnppcF9kZWZhdWx0cyhcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgaGludHMsXG4gICAgICAgICAgICBIYXozbGNvcmUuVGVzdFN0YXR1cy5JbmRldCxcbiAgICAgICAgICAgIFwiRXhlcmNpc2UgY29uZmlndXJhdGlvbiBlcnJvcjogSGludCB3aXRob3V0IGEgdGVzdC5cIixcbiAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgICB7aGludHMsIHRlc3RfcmVzdWx0cywgaGludGVkX3Jlc3VsdHN9O1xuICAgIH07XG5cbiAgICBsZXQgdG90YWwgPSAocmVwb3J0OiB0KSA9PiBMaXN0Lmxlbmd0aChyZXBvcnQuaGludGVkX3Jlc3VsdHMpO1xuICAgIGxldCBudW1fcGFzc2VkID0gKHJlcG9ydDogdCkgPT4ge1xuICAgICAgcmVwb3J0LmhpbnRlZF9yZXN1bHRzXG4gICAgICB8PiBMaXN0LmZpbmRfYWxsKCgoc3RhdHVzLCBfKSkgPT4gc3RhdHVzID09IFRlc3RTdGF0dXMuUGFzcylcbiAgICAgIHw+IExpc3QubGVuZ3RoO1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQsIHN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50KTogcGVyY2VudGFnZSA9PiB7XG4gICAgICBzeW50YXhfcmVwb3J0LnBlcmNlbnRhZ2VcbiAgICAgICouIChmbG9hdF9vZl9pbnQobnVtX3Bhc3NlZChyZXBvcnQpKSAvLiBmbG9hdF9vZl9pbnQodG90YWwocmVwb3J0KSkpO1xuICAgIH07XG5cbiAgICBsZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgICAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICAgICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICAgICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICAgICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgICAgICB+cl9zdHI9XCJ2YWxpZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQ6IFRlc3RWYWxpZGF0aW9uUmVwb3J0LnQsXG4gICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydDogTXV0YXRpb25UZXN0aW5nUmVwb3J0LnQsXG4gICAgICBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6IEltcGxHcmFkaW5nUmVwb3J0LnQsXG4gICAgfTtcblxuICAgIGxldCBtayA9IChlZHM6IGVkcywgfnN0aXRjaGVkX2R5bmFtaWNzOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkpID0+IHtcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogZWRzLnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQ6XG4gICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0Lm1rKFxuICAgICAgICAgIGVkcyxcbiAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MudGVzdF92YWxpZGF0aW9uLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydDpcbiAgICAgICAgTXV0YXRpb25UZXN0aW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH50ZXN0X3ZhbGlkYXRpb249c3RpdGNoZWRfZHluYW1pY3MudGVzdF92YWxpZGF0aW9uLFxuICAgICAgICAgIH5oaWRkZW5fYnVnc19zdGF0ZT1lZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgfmhpZGRlbl9idWdzPXN0aXRjaGVkX2R5bmFtaWNzLmhpZGRlbl9idWdzLFxuICAgICAgICApLFxuICAgICAgc3ludGF4X3JlcG9ydDpcbiAgICAgICAgU3ludGF4UmVwb3J0Lm1rKH55b3VyX2ltcGw9ZWRzLnlvdXJfaW1wbCwgfnRlc3RzPWVkcy5zeW50YXhfdGVzdHMpLFxuICAgICAgaW1wbF9ncmFkaW5nX3JlcG9ydDpcbiAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQubWsoXG4gICAgICAgICAgfmhpbnRzPWVkcy5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICAgICAgfnRlc3RfcmVzdWx0cz1cbiAgICAgICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhzdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fdGVzdHMucmVzdWx0KSxcbiAgICAgICAgKSxcbiAgICB9O1xuXG4gICAgbGV0IG92ZXJhbGxfc2NvcmUgPVxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgICAgdGVzdF92YWxpZGF0aW9uX3JlcG9ydCxcbiAgICAgICAgICAgIG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0LFxuICAgICAgICAgICAgc3ludGF4X3JlcG9ydCxcbiAgICAgICAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQsXG4gICAgICAgICAgICBfLFxuICAgICAgICAgIH06IHQsXG4gICAgICAgIClcbiAgICAgICAgOiBzY29yZSA9PiB7XG4gICAgICBsZXQgKHR2X3BvaW50cywgdHZfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgVGVzdFZhbGlkYXRpb25SZXBvcnQucGVyY2VudGFnZSh0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24udGVzdF92YWxpZGF0aW9uLFxuICAgICAgICApO1xuICAgICAgbGV0IChtdF9wb2ludHMsIG10X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5wZXJjZW50YWdlKG11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24ubXV0YXRpb25fdGVzdGluZyxcbiAgICAgICAgKTtcbiAgICAgIGxldCAoaWdfcG9pbnRzLCBpZ19tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBJbXBsR3JhZGluZ1JlcG9ydC5wZXJjZW50YWdlKGltcGxfZ3JhZGluZ19yZXBvcnQsIHN5bnRheF9yZXBvcnQpLFxuICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbi5pbXBsX2dyYWRpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgdG90YWxfcG9pbnRzID0gdHZfcG9pbnRzICsuIG10X3BvaW50cyArLiBpZ19wb2ludHM7XG4gICAgICBsZXQgbWF4X3BvaW50cyA9IHR2X21heCArLiBtdF9tYXggKy4gaWdfbWF4O1xuICAgICAgKHRvdGFsX3BvaW50cywgbWF4X3BvaW50cyk7XG4gICAgfTtcbiAgfTtcbn07XG4iLCJtb2R1bGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZSA9IHVuaXQ7XG4gIGxldCBkZWZhdWx0ID0gKCk7XG4gIGxldCBvdXRwdXRfaGVhZGVyID0gRXhlcmNpc2Uub3V0cHV0X2hlYWRlcl9ncmFkaW5nO1xufTtcblxubW9kdWxlIEV4ZXJjaXNlID0gRXhlcmNpc2UuRihFeGVyY2lzZUVudik7XG5cbm1vZHVsZSBHcmFkaW5nID0gR3JhZGluZy5GKEV4ZXJjaXNlRW52KTtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzLzIwMTQgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxubGV0IGRlYnVnID1cbiAgbGV0IF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJERUJVR1wiKVxuICAgIHdpdGggXyAtPiBOb25lXG4gIGFuZCBfT01EX0RFQlVHID1cbiAgICB0cnlcbiAgICAgIFNvbWUoU3lzLmdldGVudiBcIk9NRF9ERUJVR1wiKVxuICAgIHdpdGggXyAtPiBOb25lXG4gIGluXG4gIG1hdGNoIF9ERUJVRywgX09NRF9ERUJVRyB3aXRoXG4gIHwgXywgU29tZSBcImZhbHNlXCIgLT5cbiAgICAgZmFsc2VcbiAgfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgZXByaW50ZiBcIm9tZDogZGVidWcgbW9kZSBhY3RpdmF0ZWQgYmVjYXVzZSBERUJVRyBpcyBzZXQsIFxcXG4gICAgICAgICAgICAgIHlvdSBjYW4gZGVhY3RpdmF0ZSB0aGUgbW9kZSBieSB1bnNldHRpbmcgREVCVUcgXFxcbiAgICAgICAgICAgICAgb3IgYnkgc2V0dGluZyBPTURfREVCVUcgdG8gdGhlIHN0cmluZyBcXFwiZmFsc2VcXFwiLlxcbiUhXCI7XG4gICAgIHRydWVcbiAgfCBOb25lLCBOb25lIC0+XG4gICAgIGZhbHNlXG4gIHwgXywgU29tZSBfIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgT01EX0RFQlVHIGlzIHNldFxuICAgICAgICAgICAgICB0byBhIHZhbHVlIHRoYXQgaXNuJ3QgdGhlIHN0cmluZyBcXFwiZmFsc2VcXFwiLlxcbiUhXCI7XG4gICAgIHRydWVcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG5sZXQgd2FybiA/KHdlPWZhbHNlKSBtc2cgPVxuICBpZiB3ZSB0aGVuXG4gICAgcmFpc2UgKEVycm9yIG1zZylcbiAgZWxzZVxuICAgIGVwcmludGYgXCIoT01EKSBXYXJuaW5nOiAlc1xcbiUhXCIgbXNnXG5cblxubGV0IHRyYWNrZml4ID1cbiAgdHJ5XG4gICAgaWdub3JlKFN5cy5nZXRlbnYgXCJPTURfRklYXCIpO1xuICAgIGVwcmludGYgXCJvbWQ6IHRyYWNraW5nIG1vZGUgYWN0aXZhdGVkOiB0b2tlbiBsaXN0IGFyZSB2ZXJ5IG9mdGVuIGNoZWNrZWQsIFxcXG4gICAgICAgICAgICAgaXQgbWlnaHQgdGFrZSBhICp2ZXJ5KiBsb25nIHRpbWUgaWYgeW91ciBpbnB1dCBpcyBsYXJnZS5cXG4lIVwiO1xuICAgIHRydWVcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBmYWxzZVxuXG5sZXQgXyA9IGlmIGRlYnVnIHRoZW4gUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZSB0cnVlXG5cbmxldCByYWlzZSA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICAoZnVuIGUgLT5cbiAgICAgICBlcHJpbnRmIFwiKE9NRCkgRXhjZXB0aW9uIHJhaXNlZDogJXNcXG4lIVwiIChQcmludGV4Yy50b19zdHJpbmcgZSk7XG4gICAgICAgcmFpc2UgZSlcbiAgZWxzZVxuICAgIHJhaXNlXG5cbm1vZHVsZSBTdHJpbmdTZXQgOiBzaWdcbiAgaW5jbHVkZSBTZXQuUyB3aXRoIHR5cGUgZWx0ID0gc3RyaW5nXG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU2V0Lk1ha2UoU3RyaW5nKVxuICBsZXQgb2ZfbGlzdCBsID0gTGlzdC5mb2xkX2xlZnQgKGZ1biByIGUgLT4gYWRkIGUgcikgZW1wdHkgbFxuZW5kXG5cblxudHlwZSAnYSBzcGxpdCA9ICdhIGxpc3QgLT4gJ2Egc3BsaXRfYWN0aW9uXG5hbmQgJ2Egc3BsaXRfYWN0aW9uID1cbiAgfCBDb250aW51ZVxuICB8IENvbnRpbnVlX3dpdGggb2YgJ2EgbGlzdCAqICdhIGxpc3RcbiAgfCBTcGxpdCBvZiAnYSBsaXN0ICogJ2EgbGlzdFxuXG5cbmxldCBmc3BsaXRfcmV2ID8oZXhjbD0oZnVuIF8gLT4gZmFsc2UpKSB+KGY6J2Egc3BsaXQpIGxcbiAgICA6ICgnYSBsaXN0ICogJ2EgbGlzdCkgb3B0aW9uID1cbiAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmIFtdIHdpdGhcbiAgICAgICAgICB8IFNwbGl0KGxlZnQsIHJpZ2h0KSAtPiAgICAgIFNvbWUobGVmdEBhY2N1LCByaWdodClcbiAgICAgICAgICB8IENvbnRpbnVlX3dpdGgobGVmdCwgdGwpIC0+IGxvb3AgKGxlZnRAYWNjdSkgdGxcbiAgICAgICAgICB8IENvbnRpbnVlIC0+ICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgZW5kXG4gICAgfCBlOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGV4Y2wgbCB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIG1hdGNoIGYgbCB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICBpbiBsb29wIFtdIGxcblxubGV0IGZzcGxpdCA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfmYgbCA9XG4gIG1hdGNoIGZzcGxpdF9yZXYgfmV4Y2w6ZXhjbCB+ZjpmIGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKHJldiwgbCkgLT4gU29tZShMaXN0LnJldiByZXYsIGwpXG5cbmxldCBpZF9vZl9zdHJpbmcgaWRzIHMgPVxuICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgb3V0ID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gICgqIFB1dCBbc10gaW50byBbYl0sIHJlcGxhY2luZyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBkYXNoZXMuICopXG4gIGxldCByZWMgbG9vcCBzdGFydGVkIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gKClcbiAgICBlbHNlXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgYyA7XG4gICAgICAgIGxvb3AgdHJ1ZSAoaSArIDEpXG4gICAgICAoKiBEb24ndCB3YW50IHRvIHN0YXJ0IHdpdGggZGFzaGVzLiAqKVxuICAgICAgfCBfIHdoZW4gbm90IHN0YXJ0ZWQgLT5cbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG91dCAnLScgO1xuICAgICAgICBsb29wIGZhbHNlIChpICsgMSlcbiAgaW5cbiAgbG9vcCBmYWxzZSAwIDtcbiAgbGV0IHMnID0gQnVmZmVyLmNvbnRlbnRzIG91dCBpblxuICBpZiBzJyA9IFwiXCIgdGhlbiBcIlwiXG4gIGVsc2VcbiAgICAoKiBGaW5kIG91dCB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGluIFtzJ10gdGhhdCBpc24ndCBhIGRhc2guICopXG4gICAgbGV0IGxhc3RfdHJhaWxpbmcgPSBcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgaWYgaSA8IDAgfHwgcycuW2ldIDw+ICctJyB0aGVuIGlcbiAgICAgICAgZWxzZSBsb29wIChpIC0gMSlcbiAgICAgIGluXG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHMnIC0gMSlcbiAgICBpblxuICAgICgqIFRyaW0gdHJhaWxpbmcgZGFzaGVzLiAqKVxuICAgIGlkcyNtYW5nbGUgQEAgU3RyaW5nLnN1YiBzJyAwIChsYXN0X3RyYWlsaW5nICsgMSlcblxuKCogb25seSBjb252ZXJ0IHdoZW4gXCJuZWNlc3NhcnlcIiAqKVxubGV0IGh0bWxlbnRpdGllcyA/KG1kPWZhbHNlKSBzID1cbiAgbGV0IG1vZHVsZSBCcmVhayA9IHN0cnVjdCBleGNlcHRpb24gQnJlYWsgZW5kIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAoKVxuICAgIGVsc2VcbiAgICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgKCAnMCcgLi4gJzknIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgKSBhcyBjIC0+IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCAnXCInIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImcXVvdDtcIlxuICAgICAgICB8ICdcXCcnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImIzM5O1wiXG4gICAgICAgIHwgJyYnIC0+XG4gICAgICAgICAgICBpZiBtZCB0aGVuXG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSBtYXRjaCBzLltpKzFdIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJyMnIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWMgZmYgaiA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcy5bal0gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBmZiAoc3VjYyBqKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJzsnIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGZmIChpKzIpXG4gICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWMgZmYgaiA9XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcy5bal0gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIEJyZWFrLkJyZWFrXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZcIlxuICAgICAgICAgICAgICAgIHdpdGggXyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmFtcDtcIlxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgfCAnPCcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZsdDtcIlxuICAgICAgICB8ICc+JyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJmd0O1wiXG4gICAgICAgIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICBpbiBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgbWluaW1hbGl6ZV9ibGFua3MgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSBsIGluXG4gIGxldCByZWMgbG9vcCBmIGkgPVxuICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSAoc3VjYyBpKVxuICAgICAgfCBjIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgZiB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gIGluIGxvb3AgZmFsc2UgMFxuXG5sZXQgcmVjIGVhdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IGU6OnRsIGFzIGwgLT4gaWYgZiBlIHRoZW4gZWF0IGYgdGwgZWxzZSBsXG5cblxubGV0IHJlYyBleHRyYWN0X2h0bWxfYXR0cmlidXRlcyAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlbW92ZV9wcmVmaXhfc3BhY2VzIHMgPSBcbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bMF0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgIFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgIHwgJyAnIC0+IGxvb3AgKGkrMSlcbiAgICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIGkgKFN0cmluZy5sZW5ndGggcyAtIGkpXG4gICAgICBpbiBsb29wIDFcbiAgaW5cbiAgbGV0IHJlbW92ZV9zdWZmaXhfc3BhY2VzIHMgPVxuICAgIGlmIHMgPSBcIlwiIHRoZW5cbiAgICAgIHMgXG4gICAgZWxzZSBpZiBzLltTdHJpbmcubGVuZ3RoIHMgLSAxXSA8PiAnICcgdGhlblxuICAgICAgc1xuICAgIGVsc2VcbiAgICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICcgJyAtPiBsb29wIChpLTEpXG4gICAgICAgIHwgXyAtPiBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgICAgaW4gbG9vcCAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHMgcmVzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgcmVzXG4gICAgZWxzZVxuICAgICAgbWF0Y2hcbiAgICAgICAgdHJ5XG4gICAgICAgICAgU29tZSAodGFrZV9hdHRyaWJ1dGUgcyBpKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG4gICAgICB3aXRoXG4gICAgICB8IFNvbWUgKCgoXyxfKSBhcyBhKSwgbmV3X3MpIC0+XG4gICAgICAgIGxvb3AgbmV3X3MgKGE6OnJlcykgMFxuICAgICAgfCBOb25lIC0+IHJlc1xuICBhbmQgdGFrZV9hdHRyaWJ1dGUgcyBpID1cbiAgICAgIGxldCBuYW1lLCBhZnRlcl9lcSA9IGN1dF9vbl9jaGFyX2Zyb20gcyBpICc9JyBpblxuICAgICAgbGV0IG5hbWUgPSByZW1vdmVfc3VmZml4X3NwYWNlcyBuYW1lIGluXG4gICAgICBsZXQgYWZ0ZXJfZXEgPSByZW1vdmVfcHJlZml4X3NwYWNlcyBhZnRlcl9lcSBpblxuICAgICAgbGV0IHZhbHVlLCByZXN0ID0gY3V0X29uX2NoYXJfZnJvbSBhZnRlcl9lcSAxIGFmdGVyX2VxLlswXSBpblxuICAgICAgKG5hbWUsdmFsdWUpLCByZW1vdmVfcHJlZml4X3NwYWNlcyByZXN0XG4gIGluXG4gIGlmICgqIEhhcyBpdCBhdCBsZWFzdCBvbmUgYXR0cmlidXRlPyAqKVxuICAgIHRyeSBTdHJpbmcuaW5kZXggaHRtbCAnPicgPCBTdHJpbmcuaW5kZXggaHRtbCAnICdcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlXG4gIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gIG1hdGNoIGh0bWwuWzFdIHdpdGhcbiAgfCAnPCcgfCAnICcgLT5cbiAgICBleHRyYWN0X2h0bWxfYXR0cmlidXRlc1xuICAgICAgKHJlbW92ZV9wcmVmaXhfc3BhY2VzIChTdHJpbmcuc3ViIGh0bWwgMSAoU3RyaW5nLmxlbmd0aCBodG1sIC0gMSkpKVxuICB8IF8gLT5cbiAgICB0cnlcbiAgICAgIGxldCBodG1sID0gc25kIChjdXRfb25fY2hhcl9mcm9tIGh0bWwgMCAnICcpIGluXG4gICAgICBsb29wIChTdHJpbmcuc3ViIGh0bWwgMCAoU3RyaW5nLmluZGV4IGh0bWwgJz4nKSkgW10gMFxuICAgIHdpdGggTm90X2ZvdW5kIC0+IFtdXG5cbmxldCByZWMgZXh0cmFjdF9pbm5lcl9odG1sIChodG1sOnN0cmluZykgPVxuICBsZXQgcmVjIGN1dF9vbl9jaGFyX2Zyb20gcyBpIGMgPVxuICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyBpIChqLWkpLCBTdHJpbmcuc3ViIHMgKGorMSkgKFN0cmluZy5sZW5ndGggcyAtIChqKzEpKVxuICBpblxuICBsZXQgcmVjIHJjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcucmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIDAgaiwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IF8sIHAgPSBjdXRfb25fY2hhcl9mcm9tIGh0bWwgMCAnPicgaW5cbiAgbGV0IHIsIF8gPSByY3V0X29uX2NoYXJfZnJvbSBwIChTdHJpbmcubGVuZ3RoIHAgLSAxKSAnPCcgaW5cbiAgclxuXG5cbmxldCBodG1sX3ZvaWRfZWxlbWVudHMgPSBTdHJpbmdTZXQub2ZfbGlzdCBbXG4gIFwiaW1nXCI7XG4gIFwiaW5wdXRcIjtcbiAgXCJsaW5rXCI7XG4gIFwibWV0YVwiO1xuICBcImJyXCI7XG4gIFwiaHJcIjtcbiAgXCJzb3VyY2VcIjtcbiAgXCJ3YnJcIjtcbiAgXCJwYXJhbVwiO1xuICBcImVtYmVkXCI7XG4gIFwiYmFzZVwiO1xuICBcImFyZWFcIjtcbiAgXCJjb2xcIjtcbiAgXCJ0cmFja1wiO1xuICBcImtleWdlblwiO1xuXVxuXG5sZXQgKCBAICkgbDEgbDIgPVxuICBMaXN0LnJldl9hcHBlbmQgKExpc3QucmV2IGwxKSBsMlxuIiwib3BlbiBPbWRfdXRpbHNcbm9wZW4gUHJpbnRmXG5cbigqKiByZWZlcmVuY2VzLCBpbnN0YW5jZXMgY3JlYXRlZCBpbiBbT21kX3BhcnNlci5tYWluX3BhcnNlXSBhbmRcbiAgICBhY2Nlc3NlZCBpbiB0aGUgW09tZF9iYWNrZW5kXSBtb2R1bGUuICopXG5tb2R1bGUgUiA9IE1hcC5NYWtlKFN0cmluZylcbmNsYXNzIHJlZl9jb250YWluZXIgOiBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBjIDogKHN0cmluZyAqIHN0cmluZykgUi50XG4gICAgbWV0aG9kIGFkZF9yZWYgOiBSLmtleSAtPiBzdHJpbmcgLT4gc3RyaW5nIC0+IHVuaXRcbiAgICBtZXRob2QgZ2V0X3JlZiA6IFIua2V5IC0+IChzdHJpbmcgKiBzdHJpbmcpIG9wdGlvblxuICAgIG1ldGhvZCBnZXRfYWxsIDogKHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcpKSBsaXN0XG4gIGVuZCA9IG9iamVjdFxuICB2YWwgbXV0YWJsZSBjID0gUi5lbXB0eVxuICB2YWwgbXV0YWJsZSBjMiA9IFIuZW1wdHlcblxuICBtZXRob2QgZ2V0X2FsbCA9IFIuYmluZGluZ3MgY1xuXG4gIG1ldGhvZCBhZGRfcmVmIG5hbWUgdGl0bGUgdXJsID1cbiAgICBjIDwtIFIuYWRkIG5hbWUgKHVybCwgdGl0bGUpIGM7XG4gICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgaWYgbG4gPD4gbmFtZSB0aGVuIGMyIDwtIFIuYWRkIGxuICh1cmwsIHRpdGxlKSBjMlxuXG4gIG1ldGhvZCBnZXRfcmVmIG5hbWUgPVxuICAgIHRyeVxuICAgICAgbGV0ICh1cmwsIHRpdGxlKSBhcyByID1cbiAgICAgICAgdHJ5IFIuZmluZCBuYW1lIGNcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICBsZXQgbG4gPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIG5hbWUgaW5cbiAgICAgICAgICB0cnkgUi5maW5kIGxuIGNcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgUi5maW5kIGxuIGMyXG4gICAgICBpbiBTb21lIHJcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgTm9uZVxuZW5kXG5cbnR5cGUgZWxlbWVudCA9XG4gIHwgSDEgb2YgdFxuICB8IEgyIG9mIHRcbiAgfCBIMyBvZiB0XG4gIHwgSDQgb2YgdFxuICB8IEg1IG9mIHRcbiAgfCBINiBvZiB0XG4gIHwgUGFyYWdyYXBoIG9mIHRcbiAgfCBUZXh0IG9mIHN0cmluZ1xuICB8IEVtcGggb2YgdFxuICB8IEJvbGQgb2YgdFxuICB8IFVsIG9mIHQgbGlzdFxuICB8IE9sIG9mIHQgbGlzdFxuICB8IFVscCBvZiB0IGxpc3RcbiAgfCBPbHAgb2YgdCBsaXN0XG4gIHwgQ29kZSBvZiBuYW1lICogc3RyaW5nXG4gIHwgQ29kZV9ibG9jayBvZiBuYW1lICogc3RyaW5nXG4gIHwgQnJcbiAgfCBIclxuICB8IE5MXG4gIHwgVXJsIG9mIGhyZWYgKiB0ICogdGl0bGVcbiAgfCBSZWYgb2YgcmVmX2NvbnRhaW5lciAqIG5hbWUgKiBzdHJpbmcgKiBmYWxsYmFja1xuICB8IEltZ19yZWYgb2YgcmVmX2NvbnRhaW5lciAqIG5hbWUgKiBhbHQgKiBmYWxsYmFja1xuICB8IEh0bWwgb2YgbmFtZSAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogdFxuICB8IEh0bWxfYmxvY2sgb2YgbmFtZSAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogdFxuICB8IEh0bWxfY29tbWVudCBvZiBzdHJpbmdcbiAgfCBSYXcgb2Ygc3RyaW5nXG4gIHwgUmF3X2Jsb2NrIG9mIHN0cmluZ1xuICB8IEJsb2NrcXVvdGUgb2YgdFxuICB8IEltZyBvZiBhbHQgKiBzcmMgKiB0aXRsZVxuICB8IFggb2ZcbiAgICAgIDwgbmFtZSA6IHN0cmluZztcbiAgICAgICAgdG9faHRtbCA6ID9pbmRlbnQ6aW50IC0+ICh0IC0+IHN0cmluZykgLT4gdCAtPiBzdHJpbmcgb3B0aW9uO1xuICAgICAgICB0b19zZXhwciA6ICh0IC0+IHN0cmluZykgLT4gdCAtPiBzdHJpbmcgb3B0aW9uO1xuICAgICAgICB0b190IDogdCAtPiB0IG9wdGlvbiA+XG5hbmQgZmFsbGJhY2sgPSA8IHRvX3N0cmluZyA6IHN0cmluZyA7IHRvX3QgOiB0ID5cbmFuZCBuYW1lID0gc3RyaW5nXG5hbmQgYWx0ID0gc3RyaW5nXG5hbmQgc3JjID0gc3RyaW5nXG5hbmQgaHJlZiA9IHN0cmluZ1xuYW5kIHRpdGxlID0gc3RyaW5nXG5hbmQgdCA9IGVsZW1lbnQgbGlzdFxuXG5cbmxldCByZWMgbG9vc2VfY29tcGFyZSB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgfCBIMSBlMTo6dGwxLCBIMSBlMjo6dGwyXG4gIHwgSDIgZTE6OnRsMSwgSDIgZTI6OnRsMlxuICB8IEgzIGUxOjp0bDEsIEgzIGUyOjp0bDJcbiAgfCBINCBlMTo6dGwxLCBINCBlMjo6dGwyXG4gIHwgSDUgZTE6OnRsMSwgSDUgZTI6OnRsMlxuICB8IEg2IGUxOjp0bDEsIEg2IGUyOjp0bDJcbiAgfCBFbXBoIGUxOjp0bDEsIEVtcGggZTI6OnRsMlxuICB8IEJvbGQgZTE6OnRsMSwgQm9sZCBlMjo6dGwyXG4gIHwgQmxvY2txdW90ZSBlMTo6dGwxLCBCbG9ja3F1b3RlIGUyOjp0bDJcbiAgfCBQYXJhZ3JhcGggZTE6OnRsMSwgUGFyYWdyYXBoIGUyOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFVsIGUxOjp0bDEsIFVsIGUyOjp0bDJcbiAgfCBPbCBlMTo6dGwxLCBPbCBlMjo6dGwyXG4gIHwgVWxwIGUxOjp0bDEsIFVscCBlMjo6dGwyXG4gIHwgT2xwIGUxOjp0bDEsIE9scCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmVfbGlzdHMgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCAoQ29kZSBfIGFzIGUxKTo6dGwxLCAoQ29kZSBfIGFzIGUyKTo6dGwyXG4gIHwgKEJyIGFzIGUxKTo6dGwxLCAoQnIgYXMgZTIpOjp0bDJcbiAgfCAoSHIgYXMgZTEpOjp0bDEsIChIciBhcyBlMik6OnRsMlxuICB8IChOTCBhcyBlMSk6OnRsMSwgKE5MIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWwgXyBhcyBlMSk6OnRsMSwgKEh0bWwgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChIdG1sX2Jsb2NrIF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3IF8gYXMgZTEpOjp0bDEsIChSYXcgXyBhcyBlMik6OnRsMlxuICB8IChSYXdfYmxvY2sgXyBhcyBlMSk6OnRsMSwgKFJhd19ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKEh0bWxfY29tbWVudCBfIGFzIGUxKTo6dGwxLCAoSHRtbF9jb21tZW50IF8gYXMgZTIpOjp0bDJcbiAgfCAoSW1nIF8gYXMgZTEpOjp0bDEsIChJbWcgXyBhcyBlMik6OnRsMlxuICB8IChUZXh0IF8gYXMgZTEpOjp0bDEsIChUZXh0IF8gYXMgZTIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IENvZGVfYmxvY2sobDEsYzEpOjp0bDEsIENvZGVfYmxvY2sobDIsYzIpOjp0bDJcbiAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSBsMSBsMiwgU3RyaW5nLmxlbmd0aCBjMSAtIFN0cmluZy5sZW5ndGggYzIgd2l0aFxuICAgICAgICAgfCAwLCAwIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgYzIgd2l0aFxuICAgICAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIDEgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSBjMSAoYzJeXCJcXG5cIikgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgMCwgLTEgLT5cbiAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZSAoYzFeXCJcXG5cIikgYzIgd2l0aFxuICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSwgXyAtPiBpXG4gICAgICApXG5cbiAgfCBVcmwgKGhyZWYxLCB0MSwgdGl0bGUxKTo6dGwxLCBVcmwgKGhyZWYyLCB0MiwgdGl0bGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgaHJlZjEgaHJlZjIgd2l0aFxuICAgICAgICAgfCAwIC0+IChtYXRjaCBsb29zZV9jb21wYXJlIHQxIHQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmUgdGl0bGUxIHRpdGxlMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFJlZiAocmVmX2NvbnRhaW5lcjEsIG5hbWUxLCB4MSwgZmFsbGJhY2sxKTo6dGwxLFxuICAgICAgICBSZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICB8IEltZ19yZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgSW1nX3JlZiAocmVmX2NvbnRhaW5lcjIsIG5hbWUyLCB4MiwgZmFsbGJhY2syKTo6dGwyXG4gICAgICAgIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAobmFtZTEsIHgxKSAobmFtZTIsIHgyKSB3aXRoXG4gICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICBsZXQgY2ZmID1cbiAgICAgICAgICAgICAgIGlmIGZhbGxiYWNrMSN0b19zdHJpbmcgPSBmYWxsYmFjazIjdG9fc3RyaW5nIHRoZW5cbiAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb29zZV9jb21wYXJlIChmYWxsYmFjazEjdG9fdCkgKGZhbGxiYWNrMiN0b190KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBpZiBjZmYgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICBjb21wYXJlIChyZWZfY29udGFpbmVyMSNnZXRfYWxsKSAocmVmX2NvbnRhaW5lcjIjZ2V0X2FsbClcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBjZmZcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgWCBlMTo6dGwxLCBYIGUyOjp0bDIgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIChlMSNuYW1lKSAoZTIjbmFtZSkgd2l0aFxuICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIChlMSN0b190KSAoZTIjdG9fdCkgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgICAgICB8IGkgLT4gaSlcbiAgICAgICAgIHwgaSAtPiBpKVxuICB8IFggXzo6XywgXyAtPiAxXG4gIHwgXywgWCBfOjpfIC0+IC0xXG4gIHwgXyAtPiBjb21wYXJlIHQxIHQyXG5cbmFuZCBsb29zZV9jb21wYXJlX2xpc3RzIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPiAwXG4gICAgfCBlMTo6dGwxLCBlMjo6dGwyIC0+XG4gICAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlIGUxIGUyIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmVfbGlzdHMgdGwxIHRsMlxuICAgICAgICAgICB8IGkgLT4gaSlcbiAgICB8IF8sIFtdIC0+IDFcbiAgICB8IF8gLT4gLTFcblxuXG50eXBlIHRvayA9ICgqIENzKG4pIG1lYW5zIChuKzIpIHRpbWVzIEMgKilcbnwgQW1wZXJzYW5kXG58IEFtcGVyc2FuZHMgb2YgaW50XG58IEF0XG58IEF0cyBvZiBpbnRcbnwgQmFja3F1b3RlXG58IEJhY2txdW90ZXMgb2YgaW50XG58IEJhY2tzbGFzaFxufCBCYWNrc2xhc2hzIG9mIGludFxufCBCYXJcbnwgQmFycyBvZiBpbnRcbnwgQ2FyZXRcbnwgQ2FyZXRzIG9mIGludFxufCBDYnJhY2VcbnwgQ2JyYWNlcyBvZiBpbnRcbnwgQ29sb25cbnwgQ29sb25zIG9mIGludFxufCBDb21tYVxufCBDb21tYXMgb2YgaW50XG58IENwYXJlbnRoZXNpc1xufCBDcGFyZW50aGVzaXNzIG9mIGludFxufCBDYnJhY2tldFxufCBDYnJhY2tldHMgb2YgaW50XG58IERvbGxhclxufCBEb2xsYXJzIG9mIGludFxufCBEb3RcbnwgRG90cyBvZiBpbnRcbnwgRG91YmxlcXVvdGVcbnwgRG91YmxlcXVvdGVzIG9mIGludFxufCBFeGNsYW1hdGlvblxufCBFeGNsYW1hdGlvbnMgb2YgaW50XG58IEVxdWFsXG58IEVxdWFscyBvZiBpbnRcbnwgR3JlYXRlcnRoYW5cbnwgR3JlYXRlcnRoYW5zIG9mIGludFxufCBIYXNoXG58IEhhc2hzIG9mIGludFxufCBMZXNzdGhhblxufCBMZXNzdGhhbnMgb2YgaW50XG58IE1pbnVzXG58IE1pbnVzcyBvZiBpbnRcbnwgTmV3bGluZVxufCBOZXdsaW5lcyBvZiBpbnRcbnwgTnVtYmVyIG9mIHN0cmluZ1xufCBPYnJhY2VcbnwgT2JyYWNlcyBvZiBpbnRcbnwgT3BhcmVudGhlc2lzXG58IE9wYXJlbnRoZXNpc3Mgb2YgaW50XG58IE9icmFja2V0XG58IE9icmFja2V0cyBvZiBpbnRcbnwgUGVyY2VudFxufCBQZXJjZW50cyBvZiBpbnRcbnwgUGx1c1xufCBQbHVzcyBvZiBpbnRcbnwgUXVlc3Rpb25cbnwgUXVlc3Rpb25zIG9mIGludFxufCBRdW90ZVxufCBRdW90ZXMgb2YgaW50XG58IFNlbWljb2xvblxufCBTZW1pY29sb25zIG9mIGludFxufCBTbGFzaFxufCBTbGFzaHMgb2YgaW50XG58IFNwYWNlXG58IFNwYWNlcyBvZiBpbnRcbnwgU3RhclxufCBTdGFycyBvZiBpbnRcbnwgVGFiXG58IFRhYnMgb2YgaW50XG58IFRpbGRlXG58IFRpbGRlcyBvZiBpbnRcbnwgVW5kZXJzY29yZVxufCBVbmRlcnNjb3JlcyBvZiBpbnRcbnwgV29yZCBvZiBzdHJpbmdcbnwgVGFnIG9mIG5hbWUgKiBleHRlbnNpb25cblxuYW5kIGV4dGVuc2lvbiA9IDxcbiAgcGFyc2VyX2V4dGVuc2lvbiA6XG4gICAgdCAtPiB0b2sgbGlzdCAtPiB0b2sgbGlzdCAtPiAoKHQgKiB0b2sgbGlzdCAqIHRvayBsaXN0KSBvcHRpb24pO1xuICB0b19zdHJpbmcgOiBzdHJpbmdcbj5cblxudHlwZSBleHRlbnNpb25zID0gZXh0ZW5zaW9uIGxpc3RcblxubGV0IGVtcHR5X2V4dGVuc2lvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9IE5vbmVcbiAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbmVuZFxuXG5sZXQgcmVjIG5vcm1hbGlzZV9tZCBsID1cbiAgaWYgZGVidWcgdGhlblxuICAgIGVwcmludGYgXCIoT01EKSBub3JtYWxpc2VfbWRcXG4lIVwiO1xuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW05MO05MO05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtdXG4gICAgfCBbTkw7TkxdXG4gICAgfCBbTkxdIC0+IFtdXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgTkw6Ok5MOjpOTDo6dGwgLT4gbG9vcCAoTkw6Ok5MOjp0bClcbiAgICB8IFRleHQgdDE6OlRleHQgdDI6OnRsIC0+IGxvb3AgKFRleHQodDFedDIpOjp0bClcbiAgICB8IE5MOjooKChQYXJhZ3JhcGggX3xIMSBffEgyIF98SDMgX3xINCBffEg1IF98SDYgX1xuICAgICAgICAgICAgfENvZGVfYmxvY2sgX3xPbCBffFVsIF98T2xwIF98VWxwIF8pOjpfKSBhcyB0bCkgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW1RleHQgXCIgXCJdOjp0bCAtPiBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGhbXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoKHApOjp0bCAtPiBQYXJhZ3JhcGgobG9vcCBwKTo6bG9vcCB0bFxuICAgIHwgSDEgdjo6dGwgLT4gSDEobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDIgdjo6dGwgLT4gSDIobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDMgdjo6dGwgLT4gSDMobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDQgdjo6dGwgLT4gSDQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDUgdjo6dGwgLT4gSDUobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgSDYgdjo6dGwgLT4gSDYobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgRW1waCB2Ojp0bCAtPiBFbXBoKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJvbGQgdjo6dGwgLT4gQm9sZChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVbCB2Ojp0bCAtPiBVbChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbCB2Ojp0bCAtPiBPbChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVbHAgdjo6dGwgLT4gVWxwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IE9scCB2Ojp0bCAtPiBPbHAoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSB2Ojp0bCAtPiBCbG9ja3F1b3RlKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IFVybChocmVmLHYsdGl0bGUpOjp0bCAtPiBVcmwoaHJlZiwobG9vcCB2KSx0aXRsZSk6Omxvb3AgdGxcbiAgICB8IFRleHQgX1xuICAgIHwgQ29kZSBfXG4gICAgfCBDb2RlX2Jsb2NrIF9cbiAgICB8IEJyXG4gICAgfCBIclxuICAgIHwgTkxcbiAgICB8IFJlZiBfXG4gICAgfCBJbWdfcmVmIF9cbiAgICB8IEh0bWwgX1xuICAgIHwgSHRtbF9ibG9jayBfXG4gICAgfCBIdG1sX2NvbW1lbnQgX1xuICAgIHwgUmF3IF9cbiAgICB8IFJhd19ibG9jayBfXG4gICAgfCBJbWcgX1xuICAgIHwgWCBfIGFzIHY6OnRsIC0+IHY6Omxvb3AgdGxcbiAgaW5cbiAgbGV0IGEgPSBsb29wIGwgaW5cbiAgbGV0IGIgPSBsb29wIGEgaW5cbiAgaWYgYSA9IGIgdGhlblxuICAgIGFcbiAgZWxzZVxuICAgIG5vcm1hbGlzZV9tZCBiXG5cblxuXG5sZXQgZHVtbXlfWCA9XG4gIFggKG9iamVjdFxuICAgIG1ldGhvZCBuYW1lID0gXCJkdW1teVwiXG4gICAgbWV0aG9kIHRvX2h0bWwgPyhpbmRlbnQ9MCkgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b19zZXhwciBfIF8gPSBOb25lXG4gICAgbWV0aG9kIHRvX3QgXyA9IE5vbmVcbiAgZW5kKVxuXG5cbmxldCByZWMgdmlzaXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBQYXJhZ3JhcGggdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gUGFyYWdyYXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMSB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDEodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgyIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIMih2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDMgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDModmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg0IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDUgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg1KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDYodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEVtcGggdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEVtcGgodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJvbGQgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEJvbGQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFVsIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFVsKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9sIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IE9sKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFVscCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgT2xwIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IE9scChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCbG9ja3F1b3RlIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEJsb2NrcXVvdGUodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFVybChocmVmLHYsdGl0bGUpIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVcmwoaHJlZix2aXNpdCBmIHYsdGl0bGUpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgVGV4dCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQ29kZSBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQ29kZV9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmVmIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBJbWdfcmVmIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIdG1sIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIdG1sX2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIdG1sX2NvbW1lbnQgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhdyBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgUmF3X2Jsb2NrIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBJbWcgIF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBYICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQnIgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEJyOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHIgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEhyOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgTkwgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IE5MOjp2aXNpdCBmIHRsXG4gICAgZW5kXG5cblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvZGVfc3R5bGlzdCA9IGxhbmc6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcblxub3BlbiBQcmludGZcbm9wZW4gT21kX3JlcHJlc2VudGF0aW9uXG5vcGVuIE9tZF91dGlsc1xuXG5sZXQgZGVmYXVsdF9sYW5ndWFnZSA9IHJlZiBcIlwiXG5cblxuXG5sZXQgdGV4dF9vZl9tZCBtZCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggXyA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgbG9vcCBxO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBuYW1lKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGFsdCk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgdCk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhdyB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3X2Jsb2NrIHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgdDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEVtcGggbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCAoVWwgbCB8IE9sIGwpIDo6IHRsIC0+XG4gICAgICAgIExpc3QuaXRlciAoZnVuIGl0ZW0gLT4gbG9vcCBpdGVtOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJykgbDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVscCBsIHwgT2xwIGwpIDo6IHRsIC0+XG4gICAgICAgIExpc3QuaXRlciBsb29wIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZShsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDEgbWQgOjogdGxcbiAgICB8IEgyIG1kIDo6IHRsXG4gICAgfCBIMyBtZCA6OiB0bFxuICAgIHwgSDQgbWQgOjogdGxcbiAgICB8IEg1IG1kIDo6IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgZGVmYXVsdF9jb2RlX3N0eWxpc3QgfmxhbmcgY29kZSA9IGNvZGVcblxubGV0IGZpbHRlcl90ZXh0X29tZF9yZXYgbCA9XG4gIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gaWYgYiB0aGVuIHIgZWxzZSBsXG4gICAgfCAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKTo6dGwgLT5cbiAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgfCBlOjp0bCAtPlxuICAgICAgbG9vcCBiIChlOjpyKSB0bFxuICBpblxuICBsb29wIGZhbHNlIFtdIGxcblxubGV0IHJlbW92ZV9saW5rcyA6IHQgLT4gdCA9XG4gIE9tZF9yZXByZXNlbnRhdGlvbi52aXNpdFxuICAgIChmdW4gZSAtPlxuICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwgVXJsKF8sIHQsIF8pIC0+IFNvbWUgdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApXG5cbmxldCByZWMgaHRtbF9hbmRfaGVhZGVyc19vZl9tZFxuICAgID8ocmVtb3ZlX2hlYWRlcl9saW5rcz1mYWxzZSlcbiAgICA/KG92ZXJyaWRlPShmdW4gKGU6ZWxlbWVudCkgLT4gKE5vbmU6c3RyaW5nIG9wdGlvbikpKVxuICAgID8ocGluZGVudD1mYWxzZSlcbiAgICA/KG5sMmJyPWZhbHNlKVxuICAgID9jczooY29kZV9zdHlsZT1kZWZhdWx0X2NvZGVfc3R5bGlzdClcbiAgICBtZFxuICA9XG4gIGxldCBpZHMgPSBvYmplY3QodGhpcylcbiAgICB2YWwgbXV0YWJsZSBpZHMgPSBTdHJpbmdTZXQuYWRkIFwiXCIgU3RyaW5nU2V0LmVtcHR5XG4gICAgbWV0aG9kIG1hbmdsZSBpZCA9XG4gICAgICBsZXQgcmVjIG0gaSA9XG4gICAgICAgIGlmIFN0cmluZ1NldC5tZW0gaWQgaWRzIHRoZW5cbiAgICAgICAgICBsZXQgaWR4ID0gaWYgaSA+IDAgdGhlbiBpZF5cIl9cIl5zdHJpbmdfb2ZfaW50IGkgZWxzZSBpZCBpblxuICAgICAgICAgIGlmIFN0cmluZ1NldC5tZW0gaWR4IGlkcyB0aGVuXG4gICAgICAgICAgICBtIChpKzEpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKGlkcyA8LSBTdHJpbmdTZXQuYWRkIGlkeCBpZHM7XG4gICAgICAgICAgICAgaWR4KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKGlkcyA8LSBTdHJpbmdTZXQuYWRkIGlkIGlkcztcbiAgICAgICAgICAgaWQpXG4gICAgICBpbiBtIDBcbiAgZW5kIGluXG4gIGxldCBlbXB0eSBzID1cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpIDwgU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXG4nIC0+IGxvb3AgKGkrMSlcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHRydWVcbiAgICBpblxuICAgIGxvb3AgMFxuICBpblxuICBsZXQgcmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzID1cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpIDwgMCB0aGVuIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICcgJ3wnXFx0J3wnXFxuJyAtPlxuICAgICAgICAgIGxvb3AgKHByZWQgaSlcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyAtIDEgdGhlblxuICAgICAgICAgICAgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFN0cmluZy5zdWIgcyAwIChpKzEpXG4gICAgaW4gbG9vcCAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBoZWFkZXJzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbG9vcCBpbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgWCB4IGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT4gbG9vcCBpbmRlbnQgdFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBtYXRjaCB4I3RvX2h0bWwgfmluZGVudDppbmRlbnRcbiAgICAgICAgICAgICAgIChodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUpIG1kXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQmxvY2txdW90ZSBxIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJsb2NrcXVvdGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgcTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9ibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJlZihyYywgbmFtZSwgdGV4dCwgZmFsbGJhY2spIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCByYyNnZXRfcmVmIG5hbWUgd2l0aFxuICAgICAgICAgICAgfCBTb21lKGhyZWYsIHRpdGxlKSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudFxuICAgICAgICAgICAgICAgIChVcmwoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGhyZWYsXG4gICAgICAgICAgICAgICAgICAgICBbVGV4dCh0ZXh0KV0sXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpXG4gICAgICAgICAgICAgICAgIDo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShzcmMsIHRpdGxlKSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudFxuICAgICAgICAgICAgICAgIChJbWcoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGFsdCxcbiAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBzcmMsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgdGl0bGUpOjp0bClcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBsb29wIGluZGVudCAoZmFsbGJhY2sjdG9fdCk7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGluZGVudCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobGV0IHMgPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICAgaWYgZW1wdHkgcyB0aGVuXG4gICAgICAgICAgICAgKClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHA+XCI7XG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChyZW1vdmVfdHJhaWxpbmdfYmxhbmtzIHMpO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvcD5cXG5cIjtcbiAgICAgICAgICAgICBlbmQpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGltZyBzcmM9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBzcmMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIGFsdD0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGFsdCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCI7XG4gICAgICAgICAgaWYgdGl0bGUgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAoQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBcIik7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIi8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVGV4dCB0IGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7ICopXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEVtcGggbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8ZW0+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgbWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvZW0+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQm9sZCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxzdHJvbmc+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgbWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvc3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChVbCBsfE9sIGx8VWxwIGx8T2xwIGwgYXMgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPG9sPlwiXG4gICAgICAgICAgICAgIHwgXyAtPiBcIjx1bD5cIik7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8bGk+XCI7XG4gICAgICAgICAgICAgICAgbG9vcCAoaW5kZW50KzIpIGxpO1xuICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2xpPlwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBsO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICAgICB8IE9sIF98T2xwIF8gLT4gXCI8L29sPlwiXG4gICAgICAgICAgICAgIHwgXyAtPiBcIjwvdWw+XCIpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGxhbmcgPSBcIlwiICYmICFkZWZhdWx0X2xhbmd1YWdlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPHByZT48Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCJcbiAgICAgICAgICAgICAgIWRlZmF1bHRfbGFuZ3VhZ2UgIWRlZmF1bHRfbGFuZ3VhZ2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8cHJlIGNsYXNzPSclcyc+PGNvZGUgY2xhc3M9JyVzJz5cIiBsYW5nIGxhbmc7XG4gICAgICAgICAgbGV0IG5ld19jID0gY29kZV9zdHlsZSB+bGFuZzpsYW5nIGMgaW5cbiAgICAgICAgICBpZiBjID0gbmV3X2MgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgbmV3X2M7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvY29kZT48L3ByZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxjb2RlPlwiXG4gICAgICAgICAgZWxzZSBpZiBsYW5nID0gXCJcIiB0aGVuXG4gICAgICAgICAgICBicHJpbnRmIGIgXCI8Y29kZSBjbGFzcz0nJXMnPlwiICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQnIgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEhyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGhyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXcgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFJhd19ibG9jayBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgW10pIGFzIGUgOjogdGxcbiAgICAgIHdoZW4gU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgbGV0IGF0dHJzID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIGFzIGUgOjogdGwgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgYm9keTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIGFzIGUgOjogdGwgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgYm9keTtcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICAgIClcbiAgICAgIGVuZFxuICAgIHwgSHRtbF9jb21tZW50IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBVcmwgKGhyZWYscyx0aXRsZSkgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIHMgaW5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGEgaHJlZj0nXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIGhyZWYpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgaWYgdGl0bGUgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIHRpdGxlPSdcIjtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIidcIjtcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9hPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChIMSBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBIMSBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoMSBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2gxPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChIMiBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBIMiBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoMiBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2gyPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChIMyBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBIMyBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoMyBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2gzPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChINCBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBINCBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoNCBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2g0PlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChINSBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBINSBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoNSBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2g1PlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IChINiBtZCBhcyBlKSA6OiB0bCAtPlxuICAgICAgbGV0IGUsIG1kID1cbiAgICAgICAgaWYgbm90IHJlbW92ZV9oZWFkZXJfbGlua3MgdGhlblxuICAgICAgICAgIGUsIG1kXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgbWQgPSByZW1vdmVfbGlua3MgbWQgaW5cbiAgICAgICAgICBINiBtZCwgbWQgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgaWggPSBodG1sX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgfmNzOmNvZGVfc3R5bGUgbWQgaW5cbiAgICAgICAgICBsZXQgaWQgPSBpZF9vZl9zdHJpbmcgaWRzICh0ZXh0X29mX21kIG1kKSBpblxuICAgICAgICAgIGhlYWRlcnMgOj0gKGUsIGlkLCBpaCkgOjogIWhlYWRlcnM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoNiBpZD1cXFwiXCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpZDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIGloO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2g2PlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IE5MIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBubDJiciB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyIC8+XCJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gIGluXG4gIGxvb3AgMCBtZDtcbiAgQnVmZmVyLmNvbnRlbnRzIGIsIExpc3QucmV2ICFoZWFkZXJzXG5cbmFuZCBzdHJpbmdfb2ZfYXR0cnMgYXR0cnMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBMaXN0Lml0ZXJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgaWYgbm90KFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgIGVsc2UgaWYgbm90KFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgfCBhLCBOb25lIC0+XG4gICAgICAgICgqIGlmIGh0bWw0IHRoZW4gKilcbiAgICAgICAgKCogICBQcmludGYuYnByaW50ZiBiIFwiICVzPSclcydcIiBhIGEgKilcbiAgICAgICAgKCogZWxzZSAqKVxuICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRycztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuYW5kIGh0bWxfb2ZfbWRcbiAgICA/KG92ZXJyaWRlPShmdW4gKGU6ZWxlbWVudCkgLT4gKE5vbmU6c3RyaW5nIG9wdGlvbikpKVxuICAgID8ocGluZGVudD1mYWxzZSlcbiAgICA/KG5sMmJyPWZhbHNlKVxuICAgID9jc1xuICAgIG1kXG4gID1cbiAgZnN0IChodG1sX2FuZF9oZWFkZXJzX29mX21kIH5vdmVycmlkZSB+cGluZGVudCB+bmwyYnIgP2NzIG1kKVxuYW5kIGhlYWRlcnNfb2ZfbWQgP3JlbW92ZV9oZWFkZXJfbGlua3MgbWQgPVxuICBzbmQgKGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWQgP3JlbW92ZV9oZWFkZXJfbGlua3MgbWQpXG5cblxubGV0IHJlYyBzZXhwcl9vZl9tZCBtZCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPlxuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgIGxvb3AgdDtcbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19zZXhwciBzZXhwcl9vZl9tZCBtZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihYXCI7XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCJcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCB4I3RvX2h0bWwgfmluZGVudDowIGh0bWxfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJsb2NrcXVvdGVcIjtcbiAgICAgICAgbG9vcCBxO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIF8pIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSZWYgJVMgJVMpXCIgbmFtZSB0ZXh0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIF8pIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWdfcmVmICVTICVTKVwiIG5hbWUgYWx0O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihQYXJhZ3JhcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nKGFsdCwgc3JjLCB0aXRsZSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEltZyAlUyAlUyAlUylcIiBhbHQgc3JjIHRpdGxlO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFRleHQgJVNcIiB0O1xuICAgICAgICBsZXQgcmVjIGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgICAgICBicHJpbnRmIGIgXCIgJVNcIiB0O1xuICAgICAgICAgICAgZiB0bFxuICAgICAgICAgIHwgeCAtPiB4XG4gICAgICAgIGluXG4gICAgICAgIGxldCB0bCA9IGYgdGwgaW5cbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoRW1waFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQm9sZFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihPbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVsXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpO2JwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBPbHAgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xwXCI7XG4gICAgICAgIExpc3QuaXRlcihmdW4gbGkgLT4gYnByaW50ZiBiIFwiKExpIFwiOyBsb29wIGxpOyBicHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVWxwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFVscFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZShsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZSAlUylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihDb2RlX2Jsb2NrICVzKVwiIGM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJyIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoQnIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSHIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXcgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmF3X2Jsb2NrIHMgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKFJhd19ibG9jayAlUylcIiBzO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbCAlcyAlcyBcIiB0YWduYW1lIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWxfYmxvY2sgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2NvbW1lbnQgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVcmwgJVMgJVMgJVMpXCIgaHJlZiAoaHRtbF9vZl9tZCBzKSB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDEgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgyXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgzIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDNcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDQgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINFwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINSBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg1XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDZcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihOTClcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgICBsb29wIG1kO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyAqIDIpIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJy4nIGFzIGMgLT5cbiAgICAgICAgaWYgaSA+IDAgJiZcbiAgICAgICAgICAgbWF0Y2ggcy5baS0xXSB3aXRoXG4gICAgICAgICAgIHwgJzAnIC4uICc5JyAtPiBpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgcy5baSsxXSA9ICcgJ1xuICAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnLScgYXMgYyAtPlxuICAgICAgICBpZiAoaSA9IDAgfHwgbWF0Y2ggcy5baS0xXSB3aXRoICcgJ3wgJ1xcbicgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgJiYgKGkrMSA8IFN0cmluZy5sZW5ndGggcyAmJiAocy5baSsxXSA9ICcgJ3x8cy5baSsxXSA9ICctJykpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJysnIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgcy5baSsxXSA9ICcgJylcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIScgYXMgYyAtPlxuICAgICAgICBpZiBpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgcy5baSsxXSA9ICdbJyB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc8JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPD4gU3RyaW5nLmxlbmd0aCBzIC0gMSAmJlxuICAgICAgICAgICAgIChtYXRjaCBzLltpKzFdIHdpdGggJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gZmFsc2UgfCBfIC0+IHRydWUpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJz4nIGFzIGMgLT5cbiAgICAgICAgaWYgaSA9IDAgfHxcbiAgICAgICAgICAgICAobWF0Y2ggcy5baS0xXSB3aXRoICcgJyB8ICdcXG4nIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcjJyBhcyBjIC0+XG4gICAgICAgICBpZiBpID0gMCB8fCBzLltpLTFdID0gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICdcXFxcJyB8ICdbJyB8ICddJyB8ICcoJyB8ICcpJyB8ICdgJyB8ICcqJyBhcyBjIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCBjIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICBkb25lO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByZWMgbWFya2Rvd25fb2ZfbWQgbWQgPVxuICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXJrZG93bl9vZl9tZCglUylcXG4lIVwiIChzZXhwcl9vZl9tZCBtZCk7XG4gIGxldCBxdW90ZSA/KGluZGVudD0wKSBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCByZWMgbG9vcCBubCBpID1cbiAgICAgIGlmIGkgPCBsIHRoZW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiBubCAmJiBpIDwgbCAtIDEgdGhlblxuICAgICAgICAgICAgKGZvciBpID0gMSB0byBpbmRlbnQgZG9cbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJ1xuICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj4gXCIpO1xuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIGxvb3AgdHJ1ZSAoc3VjYyBpKVxuICAgICAgICAgIHwgYyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYztcbiAgICAgICAgICAgIGxvb3AgZmFsc2UgKHN1Y2MgaSlcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgaW4gbG9vcCB0cnVlIDBcbiAgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBhZGRfc3BhY2VzIG4gPSBmb3IgaSA9IDEgdG8gbiBkbyBCdWZmZXIuYWRkX2NoYXIgYiAnICcgZG9uZSBpblxuICBsZXQgcmVmZXJlbmNlcyA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCA/KGZzdF9wX2luX2xpPXRydWUpID8oaXNfaW5fbGlzdD1mYWxzZSkgbGlzdF9pbmRlbnQgbCA9XG4gICAgKCogW2xpc3RfaW5kZW50OiBpbnRdIGlzIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCBpbiBudW1iZXIgb2Ygc3BhY2VzLiAqKVxuICAgICgqIFtpc19pbl9saXN0OiBib29sXSBpcyBuZWNlc3NhcnkgdG8ga25vdyBpZiB3ZSBhcmUgaW5zaWRlIGEgcGFyYWdyYXBoXG4gICAgICAgd2hpY2ggaXMgaW5zaWRlIGEgbGlzdCBpdGVtIGJlY2F1c2UgdGhvc2UgbmVlZCB0byBiZSBpbmRlbnRlZCEgKilcbiAgICBsZXQgbG9vcCA/KGZzdF9wX2luX2xpPWZzdF9wX2luX2xpKSA/KGlzX2luX2xpc3Q9aXNfaW5fbGlzdCkgbGlzdF9pbmRlbnQgbCA9XG4gICAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZzdF9wX2luX2xpIH5pc19pbl9saXN0OmlzX2luX2xpc3QgbGlzdF9pbmRlbnQgbFxuICAgIGluXG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBYIHggOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgbGlzdF9pbmRlbnQgdFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBtYXRjaCB4I3RvX2h0bWwgfmluZGVudDowIGh0bWxfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgc1xuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEJsb2NrcXVvdGUgcSA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocXVvdGUgfmluZGVudDpsaXN0X2luZGVudCAobWFya2Rvd25fb2ZfbWQgcSkpO1xuICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IEltZ19yZWYocmMsIG5hbWUsIGFsdCwgZmFsbGJhY2spIDo6IHRsIC0+XG4gICAgICAgIGlmICFyZWZlcmVuY2VzID0gTm9uZSB0aGVuIHJlZmVyZW5jZXMgOj0gU29tZSByYztcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCAoUmF3KGZhbGxiYWNrI3RvX3N0cmluZyk6OnRsKVxuICAgIHwgUGFyYWdyYXBoIFtdIDo6IHRsIC0+IGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgaWYgaXNfaW5fbGlzdCB0aGVuXG4gICAgICAgIGlmIGZzdF9wX2luX2xpIHRoZW5cbiAgICAgICAgICBhZGRfc3BhY2VzIChsaXN0X2luZGVudC0yKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IG1kO1xuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIlxcblxcblwiO1xuICAgICAgbG9vcCB+ZnN0X3BfaW5fbGk6ZmFsc2UgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiIVslc10oJXMgXFxcIiVzXFxcIilcIiBhbHQgc3JjIHRpdGxlO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoZXNjYXBlX21hcmtkb3duX2NoYXJhY3RlcnMgdCk7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCb2xkIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9sIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbGV0IGMgPSByZWYgMCBpbiAoKiBkb24ndCB1c2UgTGlzdC5pdGVyaSBiZWNhdXNlIGl0J3Mgbm90IGluIDMuMTIgKilcbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBjO1xuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJWQuIFwiICFjO1xuICAgICAgICAgICAgICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgICAgICkgbDtcbiAgICAgIGlmIGxpc3RfaW5kZW50ID0gMCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVWwgbCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCItIFwiO1xuICAgICAgICAgICAgICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgICAgICkgbDtcbiAgICAgIGlmIGxpc3RfaW5kZW50ID0gMCB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBpbmNyIGM7XG4gICAgICAgIGJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICgqIFBhcmFncmFwaHMgPT4gTm8gbmVlZCBvZiAnXFxuJyAqKVxuICAgICAgKSBsO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVWxwIGwgOjogdGwgLT5cbiAgICAgIExpc3QuaXRlcihmdW4gbGkgLT5cbiAgICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID4gMCAmJiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nXG4gICAgICAgIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICAgIGJwcmludGYgYiBcIisgXCI7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICAgICAgICAgICkgbDtcbiAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgXyk6Ol9cbiAgICAgIHwgTkw6OihIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nXG4gICAgICB8IF8gLT4gKClcbiAgICAgIGVuZDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IENvZGUoX2xhbmcsIGMpIDo6IHRsIC0+ICgqIEZJWE1FICopXG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIChuOmludCkgKHM6aW50IGxpc3QpID1cbiAgICAgICAgICBpZiBuID4gMCAmJiBuIDwgMTAgdGhlblxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBlIC0+IGUgPD4gbikgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGMgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgeCBiIGkgPVxuICAgICAgICAgIGlmIGkgPSBsIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIGZpbHRlciBiIHMgd2l0aFxuICAgICAgICAgICAgfCBoZDo6XyAtPiBoZFxuICAgICAgICAgICAgfCBbXSAtPiB4KzFcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBjLltpXSB3aXRoXG4gICAgICAgICAgICB8ICdgJyAtPiBsb29wIHMgeCAoc3VjYyBiKSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+IGxvb3AgKGZpbHRlciBiIHMpIChtYXggYiB4KSAwIChzdWNjIGkpXG4gICAgICAgIGluXG4gICAgICAgICAgbG9vcCBbMTsyOzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMCAwXG4gICAgICBpblxuICAgICAgICBiZWdpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgICAgaWYgYy5bMF0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgYztcbiAgICAgICAgICBpZiBjLltTdHJpbmcubGVuZ3RoIGMgLSAxXSA9ICdgJyB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IENvZGVfYmxvY2sobGFuZywgYykgOjogdGwgLT5cbiAgICAgIGxldCBuID0gKCogY29tcHV0ZSBob3cgbWFueSBiYWNrcXVvdGVzIHdlIG5lZWQgdG8gdXNlICopXG4gICAgICAgIGxldCBmaWx0ZXIgbiBzID1cbiAgICAgICAgICBpZiBuID4gMCAmJiBuIDwgMTAgdGhlblxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGZ1biBlIC0+IGUgPD4gbikgc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGMgaW5cbiAgICAgICAgbGV0IHJlYyBsb29wIHMgYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgICAgfCBoZDo6XyAtPiBoZFxuICAgICAgICAgICAgICB8IFtdIC0+IDBcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBtYXRjaCBjLltpXSB3aXRoXG4gICAgICAgICAgICB8ICdgJyAtPiBsb29wIHMgKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAwIChzdWNjIGkpXG4gICAgICAgIGluXG4gICAgICAgICAgbG9vcCBbMzs0OzU7Njs3Ozg7OTsxMF0gMCAwXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9pbmRlbnRlZF9ibG9jayBuIHMgPVxuICAgICAgICBsZXQgcmVjIGxvb3AgcCBpID1cbiAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJyAnKTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBzLltpXTtcbiAgICAgICAgICAgICAgICBsb29wIHMuW2ldIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBzLltpXTtcbiAgICAgICAgICAgICAgICBsb29wIHMuW2ldIChzdWNjIGkpXG4gICAgICAgIGluIGxvb3AgJ1xcbicgMFxuICAgICAgaW5cbiAgICAgICAgaWYgbiA9IDAgdGhlbiAgKCogRklYTUUgKilcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgKCogY2FzZSB3aGVyZSB3ZSBjYW4ndCB1c2UgYmFja3F1b3RlcyAqKVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgKDQrbGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiB0bCA8PiBbXSB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIlxuICAgICAgICAgIGVuZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5tYWtlIChsaXN0X2luZGVudCkgJyAnKTtcbiAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlcyVzXFxuXCIgKFN0cmluZy5tYWtlIG4gJ2AnKVxuICAgICAgICAgICAgICAoaWYgbGFuZyA9IFwiXCIgdGhlbiAhZGVmYXVsdF9sYW5ndWFnZSBlbHNlIGxhbmcpO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrIChsaXN0X2luZGVudCkgYztcbiAgICAgICAgICAgIGlmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKFN0cmluZy5tYWtlIChsaXN0X2luZGVudCkgJyAnKTtcbiAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJyk7XG4gICAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIqICogKlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmF3IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgW10pIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICBsZXQgYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGEpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICBsb29wIGxpc3RfaW5kZW50IGJvZHlcbiAgICAgIGVsc2VcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCAoSHRtbF9ibG9jayh0YWduYW1lLCBhdHRycywgYm9keSkpOjp0bCAtPlxuICAgICAgbGV0IG5lZWRzX25ld2xpbmVzID1cbiAgICAgICAgbWF0Y2ggdGwgd2l0aFxuICAgICAgICB8IE5MIDo6IFBhcmFncmFwaCBwIDo6IF9cbiAgICAgICAgfCBQYXJhZ3JhcGggcCA6OiBfIC0+IHAgPD4gW11cbiAgICAgICAgfCAoSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfXG4gICAgICAgICAgfCBVbCBfIHwgT2wgXyB8IFVscCBfIHwgT2xwIF8gfCBDb2RlIChfLCBfKSB8IENvZGVfYmxvY2sgKF8sIF8pXG4gICAgICAgICAgfCBUZXh0IF8gfCBFbXBoIF8gfCBCb2xkIF8gfCBCciB8SHIgfCBVcmwgKF8sIF8sIF8pXG4gICAgICAgICAgfCBSZWYgKF8sIF8sIF8sIF8pIHwgSW1nX3JlZiAoXywgXywgXywgXylcbiAgICAgICAgICB8IEh0bWwgKF8sIF8sIF8pXG4gICAgICAgICAgfCBCbG9ja3F1b3RlIF8gfCBJbWcgKF8sIF8sIF8pKSA6OiBfIC0+IHRydWVcbiAgICAgICAgfCAoIEh0bWxfYmxvY2sgKF8sIF8sIF8pIHwgSHRtbF9jb21tZW50IF9cbiAgICAgICAgICB8IFJhdyBffFJhd19ibG9jayBfKSA6OiBfLT4gZmFsc2VcbiAgICAgICAgfCBYIF8gOjogXyAtPiBmYWxzZVxuICAgICAgICB8IE5MIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGlmIGJvZHkgPSBbXSAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIHRoZW5cbiAgICAgICAgKFxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgICAgZWxzZVxuICAgICAgICAoXG4gICAgICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGEpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgaWYgYSA9PSBhdHRycyB0aGVuXG4gICAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IGJvZHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sX29mX21kIGJvZHkpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgaWYgbmVlZHNfbmV3bGluZXMgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCI7XG4gICAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgICAgICApXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIDo6IHRsIC0+XG4gICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzKVwiIChtYXJrZG93bl9vZl9tZCBzKSBocmVmXG4gICAgICBlbHNlXG4gICAgICAgIGJwcmludGYgYiBcIlslc10oJXMgXFxcIiVzXFxcIilcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZiB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEgzIG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEg2IG1kIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIyMjIyMjIFwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCBtZDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPSAxXG4gICAgICB8fCAoQnVmZmVyLmxlbmd0aCBiID4gMSAmJlxuICAgICAgICAgIG5vdChCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpID0gJ1xcbidcbiAgICAgICAgICAgICAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAyKSA9ICdcXG4nKSlcbiAgICAgIHRoZW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCAwIG1kO1xuICAgIGJlZ2luIG1hdGNoICFyZWZlcmVuY2VzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gKG5hbWUsICh1cmwsIHRpdGxlKSkgLT5cbiAgICAgICAgICAgICAgIGlmIHRpdGxlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIGJwcmludGYgYiBcIlslc106ICVzIFxcblwiIG5hbWUgdXJsXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGJwcmludGYgYiBcIlslc106ICVzIFxcXCIlc1xcXCJcXG5cIiBuYW1lIHVybCB0aXRsZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgciNnZXRfYWxsXG4gICAgZW5kO1xuICAgIGxldCByZXMgPSBCdWZmZXIuY29udGVudHMgYiBpblxuICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBtYXJrZG93bl9vZl9tZCglUykgPT4gJVNcXG4lIVwiXG4gICAgICAgIChzZXhwcl9vZl9tZCBtZCkgcmVzO1xuICAgIHJlc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBJbXBsZW1lbnRhdGlvbiBub3RlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgKiAtIFRoaXMgbW9kdWxlIHNob3VsZCBkZXBlbmQgb24gT0NhbWwncyBzdGFuZGFyZCBsaWJyYXJ5IG9ubHkgYW5kXG4gICAqIHNob3VsZCBiZSBhcyAncHVyZSBPQ2FtbCcgKGkuZS4gZGVwZW5kIGFzIGxlYXN0IGFzIHBvc3NpYmxlIG9uXG4gICAqIGV4dGVybmFsIHRvb2xzKSBhcyBwb3NzaWJsZS5cblxuICAgKiAtIGB3aGlsZScgbG9vcHMgYXJlIHNvbWV0aW1lcyBwcmVmZXJyZWQgdG8gcmVjdXJzaW9uIGJlY2F1c2UgdGhpc1xuICAgKiBtYXkgYmUgdXNlZCBvbiBzeXN0ZW1zIHdoZXJlIHRhaWwgcmVjdXJzaW9uIGlzIG5vdCB3ZWxsXG4gICAqIHN1cHBvcnRlZC4gKEkgdHJpZWQgdG8gd3JpdGUgXCJ3aGlsZVwiIGFzIG9mdGVuIGFzIHBvc3NpYmxlLCBidXQgaXRcbiAgICogdHVybmVkIG91dCB0aGF0IGl0IHdhcyBwcmV0dHkgaW5jb252ZW5pZW50LCBzbyBJIGRvIHVzZVxuICAgKiByZWN1cnNpb24uICBXaGVuIEkgaGF2ZSB0aW1lLCBJJ2xsIGRvIHNvbWUgdGVzdHMgYW5kIHNlZSBpZiBJXG4gICAqIG5lZWQgdG8gY29udmVydCByZWN1cnNpdmUgbG9vcHMgaW50byBpdGVyYXRpdmUgbG9vcHMuIFNvcnJ5IGlmIGl0XG4gICAqIG1ha2VzIGl0IGhhcmRlciB0byByZWFkLilcblxuKilcblxuKCogY2xhc3MgdHlwZSB0YWcgPSBvYmplY3QgbWV0aG9kIGlzX21lIDogJ2EuICdhIC0+IGJvb2wgZW5kICopXG5cbm9wZW4gT21kX3JlcHJlc2VudGF0aW9uXG5cbnR5cGUgdG9rZW4gPSBPbWRfcmVwcmVzZW50YXRpb24udG9rXG50eXBlIHQgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcblxubGV0IHN0cmluZ19vZl90b2tlbiA9IGZ1bmN0aW9uXG4gIHwgVGFnIChuYW1lLCBvKSAtPlxuICAgIGlmIE9tZF91dGlscy5kZWJ1ZyB0aGVuIFwiVEFHKFwiXm5hbWVeXCIpXCIgXiBvI3RvX3N0cmluZyBlbHNlIG8jdG9fc3RyaW5nXG4gIHwgQW1wZXJzYW5kIC0+IFwiJlwiXG4gIHwgQW1wZXJzYW5kcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyYnXG4gIHwgQXQgLT4gXCJAXCJcbiAgfCBBdHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdAJ1xuICB8IEJhY2txdW90ZSAtPiBcImBcIlxuICB8IEJhY2txdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdgJ1xuICB8IEJhY2tzbGFzaCAtPiBcIlxcXFxcIlxuICB8IEJhY2tzbGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXFxcJ1xuICB8IEJhciAtPiBcInxcIlxuICB8IEJhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd8J1xuICB8IENhcmV0IC0+IFwiXlwiXG4gIHwgQ2FyZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXidcbiAgfCBDYnJhY2UgLT4gXCJ9XCJcbiAgfCBDYnJhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfSdcbiAgfCBDb2xvbiAtPiBcIjpcIlxuICB8IENvbG9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzonXG4gIHwgQ29tbWEgLT4gXCIsXCJcbiAgfCBDb21tYXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcsJ1xuICB8IENwYXJlbnRoZXNpcyAtPiBcIilcIlxuICB8IENwYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcpJ1xuICB8IENicmFja2V0IC0+IFwiXVwiXG4gIHwgQ2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXSdcbiAgfCBEb2xsYXIgLT4gXCIkXCJcbiAgfCBEb2xsYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnJCdcbiAgfCBEb3QgLT4gXCIuXCJcbiAgfCBEb3RzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLidcbiAgfCBEb3VibGVxdW90ZSAtPiBcIlxcXCJcIlxuICB8IERvdWJsZXF1b3RlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1wiJ1xuICB8IEV4Y2xhbWF0aW9uIC0+IFwiIVwiXG4gIHwgRXhjbGFtYXRpb25zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnISdcbiAgfCBFcXVhbCAtPiBcIj1cIlxuICB8IEVxdWFscyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz0nXG4gIHwgR3JlYXRlcnRoYW4gLT4gXCI+XCJcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc+J1xuICB8IEhhc2ggLT4gXCIjXCJcbiAgfCBIYXNocyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyMnXG4gIHwgTGVzc3RoYW4gLT4gXCI8XCJcbiAgfCBMZXNzdGhhbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc8J1xuICB8IE1pbnVzIC0+IFwiLVwiXG4gIHwgTWludXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLSdcbiAgfCBOZXdsaW5lIC0+IFwiXFxuXCJcbiAgfCBOZXdsaW5lcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ1xcbidcbiAgfCBOdW1iZXIgcyAtPiBzXG4gIHwgT2JyYWNlIC0+IFwie1wiXG4gIHwgT2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ3snXG4gIHwgT3BhcmVudGhlc2lzIC0+IFwiKFwiXG4gIHwgT3BhcmVudGhlc2lzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJygnXG4gIHwgT2JyYWNrZXQgLT4gXCJbXCJcbiAgfCBPYnJhY2tldHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdbJ1xuICB8IFBlcmNlbnQgLT4gXCIlXCJcbiAgfCBQZXJjZW50cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyUnXG4gIHwgUGx1cyAtPiBcIitcIlxuICB8IFBsdXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKydcbiAgfCBRdWVzdGlvbiAtPiBcIj9cIlxuICB8IFF1ZXN0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJz8nXG4gIHwgUXVvdGUgLT4gXCInXCJcbiAgfCBRdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXCcnXG4gIHwgU2VtaWNvbG9uIC0+IFwiO1wiXG4gIHwgU2VtaWNvbG9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJzsnXG4gIHwgU2xhc2ggLT4gXCIvXCJcbiAgfCBTbGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcvJ1xuICB8IFNwYWNlIC0+IFwiIFwiXG4gIHwgU3BhY2VzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnICdcbiAgfCBTdGFyIC0+IFwiKlwiXG4gIHwgU3RhcnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcqJ1xuICB8IFRhYiAtPiBcIiAgICBcIlxuICB8IFRhYnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgoMituKSo0KSAnICdcbiAgfCBUaWxkZSAtPiBcIn5cIlxuICB8IFRpbGRlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ34nXG4gIHwgVW5kZXJzY29yZSAtPiBcIl9cIlxuICB8IFVuZGVyc2NvcmVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXydcbiAgfCBXb3JkIHMgLT4gc1xuXG5cbmxldCBzaXplX2FuZF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gIHwgVGFnIF8gLT4gKDAsIDApXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZVxuICB8IENvbG9uIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdFxuICB8IERvdWJsZXF1b3RlIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuXG4gIHwgTWludXMgfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnQgfCBQbHVzXG4gIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIC0+ICgxLCAwKVxuICB8IEFtcGVyc2FuZHMgeCB8IEF0cyB4IHwgQmFja3F1b3RlcyB4IHwgQmFja3NsYXNocyB4IHwgQmFycyB4IHwgQ2FyZXRzIHhcbiAgfCBDYnJhY2VzIHggfCBDb2xvbnMgeCB8IENvbW1hcyB4IHwgQ3BhcmVudGhlc2lzcyB4IHwgQ2JyYWNrZXRzIHhcbiAgfCBEb2xsYXJzIHggfCBEb3RzIHhcbiAgfCBEb3VibGVxdW90ZXMgeCB8IEV4Y2xhbWF0aW9ucyB4IHwgRXF1YWxzIHggfCBHcmVhdGVydGhhbnMgeCB8IEhhc2hzIHhcbiAgfCBMZXNzdGhhbnMgeFxuICB8IE1pbnVzcyB4IHwgT2JyYWNlcyB4IHwgT3BhcmVudGhlc2lzcyB4IHwgT2JyYWNrZXRzIHggfCBQZXJjZW50cyB4IHwgUGx1c3MgeFxuICB8IFF1ZXN0aW9ucyB4IHwgUXVvdGVzIHggfCBTZW1pY29sb25zIHggfCBTbGFzaHMgeCB8IFNwYWNlcyB4IHwgU3RhcnMgeFxuICB8IFRhYnMgeFxuICB8IFRpbGRlcyB4IHwgVW5kZXJzY29yZXMgeCAtPiAoMit4LCAwKVxuICB8IE5ld2xpbmUgLT4gKDAsIDEpXG4gIHwgTmV3bGluZXMgeCAtPiAoMCwgMit4KVxuICB8IE51bWJlciBzIHwgV29yZCBzIC0+IChTdHJpbmcubGVuZ3RoIHMsIDApXG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCBjLCBubCA9IHNpemVfYW5kX25ld2xpbmVzIHQgaW5cbiAgYyArIG5sXG5cbmxldCBzcGxpdF9maXJzdCA9IGZ1bmN0aW9uXG4gIHwgQW1wZXJzYW5kcyBuIC0+IEFtcGVyc2FuZCwgKGlmIG4gPiAwIHRoZW4gQW1wZXJzYW5kcyhuLTEpIGVsc2UgQW1wZXJzYW5kKVxuICB8IEF0cyBuIC0+IEF0LCAoaWYgbiA+IDAgdGhlbiBBdHMobi0xKSBlbHNlIEF0KVxuICB8IEJhY2txdW90ZXMgbiAtPiBCYWNrcXVvdGUsIChpZiBuID4gMCB0aGVuIEJhY2txdW90ZXMobi0xKSBlbHNlIEJhY2txdW90ZSlcbiAgfCBCYWNrc2xhc2hzIG4gLT4gQmFja3NsYXNoLCAoaWYgbiA+IDAgdGhlbiBCYWNrc2xhc2hzKG4tMSkgZWxzZSBCYWNrc2xhc2gpXG4gIHwgQmFycyBuIC0+IEJhciwgKGlmIG4gPiAwIHRoZW4gQmFycyhuLTEpIGVsc2UgQmFyKVxuICB8IENhcmV0cyBuIC0+IENhcmV0LCAoaWYgbiA+IDAgdGhlbiBDYXJldHMobi0xKSBlbHNlIENhcmV0KVxuICB8IENicmFjZXMgbiAtPiBDYnJhY2UsIChpZiBuID4gMCB0aGVuIENicmFjZXMobi0xKSBlbHNlIENicmFjZSlcbiAgfCBDb2xvbnMgbiAtPiBDb2xvbiwgKGlmIG4gPiAwIHRoZW4gQ29sb25zKG4tMSkgZWxzZSBDb2xvbilcbiAgfCBDb21tYXMgbiAtPiBDb21tYSwgKGlmIG4gPiAwIHRoZW4gQ29tbWFzKG4tMSkgZWxzZSBDb21tYSlcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gQ3BhcmVudGhlc2lzLCAoaWYgbiA+IDAgdGhlbiBDcGFyZW50aGVzaXNzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENwYXJlbnRoZXNpcylcbiAgfCBDYnJhY2tldHMgbiAtPiBDYnJhY2tldCwgKGlmIG4gPiAwIHRoZW4gQ2JyYWNrZXRzKG4tMSkgZWxzZSBDYnJhY2tldClcbiAgfCBEb2xsYXJzIG4gLT4gRG9sbGFyLCAoaWYgbiA+IDAgdGhlbiBEb2xsYXJzKG4tMSkgZWxzZSBEb2xsYXIpXG4gIHwgRG90cyBuIC0+IERvdCwgKGlmIG4gPiAwIHRoZW4gRG90cyhuLTEpIGVsc2UgRG90KVxuICB8IERvdWJsZXF1b3RlcyBuIC0+IERvdWJsZXF1b3RlLCAoaWYgbiA+IDAgdGhlbiBEb3VibGVxdW90ZXMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlKVxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IEV4Y2xhbWF0aW9uLCAoaWYgbiA+IDAgdGhlbiBFeGNsYW1hdGlvbnMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEV4Y2xhbWF0aW9uKVxuICB8IEVxdWFscyBuIC0+IEVxdWFsLCAoaWYgbiA+IDAgdGhlbiBFcXVhbHMobi0xKSBlbHNlIEVxdWFsKVxuICB8IEdyZWF0ZXJ0aGFucyBuIC0+IEdyZWF0ZXJ0aGFuLCAoaWYgbiA+IDAgdGhlbiBHcmVhdGVydGhhbnMobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEdyZWF0ZXJ0aGFuKVxuICB8IEhhc2hzIG4gLT4gSGFzaCwgKGlmIG4gPiAwIHRoZW4gSGFzaHMobi0xKSBlbHNlIEhhc2gpXG4gIHwgTGVzc3RoYW5zIG4gLT4gTGVzc3RoYW4sIChpZiBuID4gMCB0aGVuIExlc3N0aGFucyhuLTEpIGVsc2UgTGVzc3RoYW4pXG4gIHwgTWludXNzIG4gLT4gTWludXMsIChpZiBuID4gMCB0aGVuIE1pbnVzcyhuLTEpIGVsc2UgTWludXMpXG4gIHwgTmV3bGluZXMgbiAtPiBOZXdsaW5lLCAoaWYgbiA+IDAgdGhlbiBOZXdsaW5lcyhuLTEpIGVsc2UgTmV3bGluZSlcbiAgfCBPYnJhY2VzIG4gLT4gT2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBPYnJhY2VzKG4tMSkgZWxzZSBPYnJhY2UpXG4gIHwgT3BhcmVudGhlc2lzcyBuIC0+IE9wYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gT3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPcGFyZW50aGVzaXMpXG4gIHwgT2JyYWNrZXRzIG4gLT4gT2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIE9icmFja2V0cyhuLTEpIGVsc2UgT2JyYWNrZXQpXG4gIHwgUGVyY2VudHMgbiAtPiBQZXJjZW50LCAoaWYgbiA+IDAgdGhlbiBQZXJjZW50cyhuLTEpIGVsc2UgUGVyY2VudClcbiAgfCBQbHVzcyBuIC0+IFBsdXMsIChpZiBuID4gMCB0aGVuIFBsdXNzKG4tMSkgZWxzZSBQbHVzKVxuICB8IFF1ZXN0aW9ucyBuIC0+IFF1ZXN0aW9uLCAoaWYgbiA+IDAgdGhlbiBRdWVzdGlvbnMobi0xKSBlbHNlIFF1ZXN0aW9uKVxuICB8IFF1b3RlcyBuIC0+IFF1b3RlLCAoaWYgbiA+IDAgdGhlbiBRdW90ZXMobi0xKSBlbHNlIFF1b3RlKVxuICB8IFNlbWljb2xvbnMgbiAtPiBTZW1pY29sb24sIChpZiBuID4gMCB0aGVuIFNlbWljb2xvbnMobi0xKSBlbHNlIFNlbWljb2xvbilcbiAgfCBTbGFzaHMgbiAtPiBTbGFzaCwgKGlmIG4gPiAwIHRoZW4gU2xhc2hzKG4tMSkgZWxzZSBTbGFzaClcbiAgfCBTcGFjZXMgbiAtPiBTcGFjZSwgKGlmIG4gPiAwIHRoZW4gU3BhY2VzKG4tMSkgZWxzZSBTcGFjZSlcbiAgfCBTdGFycyBuIC0+IFN0YXIsIChpZiBuID4gMCB0aGVuIFN0YXJzKG4tMSkgZWxzZSBTdGFyKVxuICB8IFRhYnMgbiAtPiBUYWIsIChpZiBuID4gMCB0aGVuIFRhYnMobi0xKSBlbHNlIFRhYilcbiAgfCBUaWxkZXMgbiAtPiBUaWxkZSwgKGlmIG4gPiAwIHRoZW4gVGlsZGVzKG4tMSkgZWxzZSBUaWxkZSlcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IFVuZGVyc2NvcmUsIChpZiBuID4gMCB0aGVuIFVuZGVyc2NvcmVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgVW5kZXJzY29yZSlcbiAgfCBBbXBlcnNhbmQgfCBBdCB8IEJhY2txdW90ZSB8IEJhY2tzbGFzaCB8IEJhciB8IENhcmV0IHwgQ2JyYWNlIHwgQ29sb25cbiAgfCBDb21tYSB8IENwYXJlbnRoZXNpcyB8IENicmFja2V0IHwgRG9sbGFyIHwgRG90IHwgRG91YmxlcXVvdGVcbiAgfCBFeGNsYW1hdGlvbiB8IEVxdWFsIHwgR3JlYXRlcnRoYW4gfCBIYXNoIHwgTGVzc3RoYW4gfCBNaW51c1xuICB8IE5ld2xpbmUgfCBOdW1iZXIgXyB8IE9icmFjZSB8IE9wYXJlbnRoZXNpcyB8IE9icmFja2V0IHwgUGVyY2VudFxuICB8IFBsdXMgfCBRdWVzdGlvbiB8IFF1b3RlIHwgU2VtaWNvbG9uIHwgU2xhc2ggfCBTcGFjZSB8IFN0YXIgfCBUYWJcbiAgfCBUaWxkZSB8IFVuZGVyc2NvcmUgfCBUYWcgXyB8IFdvcmQgXyAtPlxuICAgICBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5zcGxpdF9maXJzdFwiXG5cbm1vZHVsZSB0eXBlIElucHV0ID1cbnNpZ1xuICB0eXBlIHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyXG4gIHZhbCBzdWIgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgTGV4KEkgOiBJbnB1dCkgOlxuc2lnXG4gIHZhbCBsZXggOiBJLnQgLT4gdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgbGV4IChzIDogSS50KSA9XG4gICAgbGV0IHJlc3VsdCA9IHJlZiBbXSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBsZXQgbCA9IEkubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmNvdW50IGMgPVxuICAgICAgKCogW3Jjb3VudCBjXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgaW1tZWRpYXRlIGNvbnNlY3V0aXZlXG4gICAgICAgICBvY2N1cnJlbmNlcyBvZiBbY10uICBCeSBzaWRlLWVmZmVjdCwgaXQgaW5jcmVhc2VzIHRoZSByZWZlcmVuY2VcbiAgICAgICAgIGNvdW50ZXIgW2ldLiAqKVxuICAgICAgbGV0IHJlYyBsb29wIHIgPVxuICAgICAgICBpZiAhaSA9IGwgdGhlbiByXG4gICAgICAgIGVsc2UgaWYgSS5nZXQgcyAhaSA9IGMgdGhlbiAoaW5jciBpOyBsb29wIChyKzEpKVxuICAgICAgICBlbHNlIHJcbiAgICAgIGluXG4gICAgICBsb29wIDFcbiAgICBpblxuICAgIGxldCB3b3JkICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBiZWdpblxuICAgICAgICAgIGlmICFpID0gbCB0aGVuXG4gICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyB8ICcjJyB8ICcqJyB8ICctJyB8ICcrJyB8ICdgJyB8ICdcXCcnXG4gICAgICAgICAgICB8ICdcIicgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOidcbiAgICAgICAgICAgIHwgJzsnIHwgJz4nIHwgJ34nIHwgJzwnIHwgJ0AnIHwgJyYnIHwgJ3wnIHwgJ14nIHwgJy4nIHwgJy8nXG4gICAgICAgICAgICB8ICckJyB8ICclJyB8ICchJyB8ICc/JyB8ICc9JyAtPlxuICAgICAgICAgICAgICAgIFdvcmQoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgICAgICAgIHwgYyAtPiBpbmNyIGk7IGxvb3AoKVxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBsb29wKClcbiAgICBpblxuICAgIGxldCBtYXliZV9udW1iZXIgKCkgPVxuICAgICAgbGV0IHN0YXJ0ID0gIWkgaW5cbiAgICAgIHdoaWxlXG4gICAgICAgICFpIDwgbCAmJlxuICAgICAgICBtYXRjaCBJLmdldCBzICFpIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBkb1xuICAgICAgICBpbmNyIGlcbiAgICAgIGRvbmU7XG4gICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICBOdW1iZXIoSS5zdWIgcyB+cG9zOnN0YXJ0IH5sZW46KCFpLXN0YXJ0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJyB8ICdcIidcbiAgICAgICAgICB8ICdcXFxcJyB8ICdfJyB8ICdbJyB8ICddJyB8ICd7JyB8ICd9JyB8ICcoJyB8ICcpJyB8ICc6JyB8ICc7JyB8ICc+J1xuICAgICAgICAgIHwgJ34nIHwgJzwnIHwgJ0AnIHwgJyYnIHwgJ3wnIHwgJ14nIHwgJy4nIHwgJy8nIHwgJyQnIHwgJyUnIHwgJyEnXG4gICAgICAgICAgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGkgOj0gc3RhcnQ7XG4gICAgICAgICAgICAgIHdvcmQoKVxuICAgICAgICBlbmRcbiAgICBpblxuXG4gICAgbGV0IG5fb2NjIGMgPSBpbmNyIGk7IHJjb3VudCBjIGluXG5cbiAgICB3aGlsZSAhaSA8IGwgZG9cbiAgICAgIGxldCBjID0gSS5nZXQgcyAhaSBpblxuICAgICAgbGV0IHcgPSBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAnICcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlIGVsc2UgU3BhY2VzIChuLTIpXG4gICAgICAgIHwgJ1xcdCcgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU3BhY2VzKDIpIGVsc2UgU3BhY2VzKDQqbi0yKVxuICAgICAgICB8ICdcXG4nIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE5ld2xpbmUgZWxzZSBOZXdsaW5lcyAobi0yKVxuICAgICAgICB8ICdcXHInIC0+ICgqIGVsaW1pbmF0aW5nIFxcciBieSBjb252ZXJ0aW5nIGFsbCBzdHlsZXMgdG8gdW5peCBzdHlsZSAqKVxuICAgICAgICAgIGluY3IgaTtcbiAgICAgICAgICBsZXQgcmVjIGNvdW50X3JuIHggPVxuICAgICAgICAgICAgaWYgIWkgPCBsICYmIEkuZ2V0IHMgKCFpKSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgaWYgIWkgKyAxIDwgbCAmJiBJLmdldCBzICghaSsxKSA9ICdcXHInIHRoZW5cbiAgICAgICAgICAgICAgICAoaSA6PSAhaSArIDI7IGNvdW50X3JuICh4KzEpKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgeFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcm4gPSAxICsgY291bnRfcm4gMCBpblxuICAgICAgICAgIGlmIHJuID0gMSB0aGVuXG4gICAgICAgICAgICBtYXRjaCBuX29jYyBjIHdpdGhcbiAgICAgICAgICAgIHwgMSAtPiBOZXdsaW5lXG4gICAgICAgICAgICB8IHggLT4gYXNzZXJ0KHg+PTIpOyBOZXdsaW5lcyh4LTIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKGFzc2VydChybj49Mik7TmV3bGluZXMocm4tMikpXG4gICAgICAgIHwgJyMnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBIYXNoIGVsc2UgSGFzaHMgKG4tMilcbiAgICAgICAgfCAnKicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFN0YXIgZWxzZSBTdGFycyAobi0yKVxuICAgICAgICB8ICctJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTWludXMgZWxzZSBNaW51c3MgKG4tMilcbiAgICAgICAgfCAnKycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFBsdXMgZWxzZSBQbHVzcyAobi0yKVxuICAgICAgICB8ICdgJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQmFja3F1b3RlIGVsc2UgQmFja3F1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXCcnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1b3RlIGVsc2UgUXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1wiJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG91YmxlcXVvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRG91YmxlcXVvdGVzIChuLTIpXG4gICAgICAgIHwgJ1xcXFwnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2tzbGFzaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBCYWNrc2xhc2hzIChuLTIpXG4gICAgICAgIHwgJ18nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBVbmRlcnNjb3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmVzIChuLTIpXG4gICAgICAgIHwgJ1snICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBPYnJhY2tldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBPYnJhY2tldHMgKG4tMilcbiAgICAgICAgfCAnXScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENicmFja2V0IGVsc2UgQ2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ3snICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBPYnJhY2UgZWxzZSBPYnJhY2VzIChuLTIpXG4gICAgICAgIHwgJ30nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2UgZWxzZSBDYnJhY2VzIChuLTIpXG4gICAgICAgIHwgJygnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBPcGFyZW50aGVzaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzcyAobi0yKVxuICAgICAgICB8ICcpJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIENwYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnOicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENvbG9uIGVsc2UgQ29sb25zIChuLTIpXG4gICAgICAgIHwgJzsnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTZW1pY29sb24gZWxzZSBTZW1pY29sb25zIChuLTIpXG4gICAgICAgIHwgJz4nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBHcmVhdGVydGhhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbnMgKG4tMilcbiAgICAgICAgfCAnficgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFRpbGRlIGVsc2UgVGlsZGVzIChuLTIpXG4gICAgICAgIHwgJzwnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyAobi0yKVxuICAgICAgICB8ICdAJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQXQgZWxzZSBBdHMgKG4tMilcbiAgICAgICAgfCAnJicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEFtcGVyc2FuZCBlbHNlIEFtcGVyc2FuZHMgKG4tMilcbiAgICAgICAgfCAnfCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhciBlbHNlIEJhcnMgKG4tMilcbiAgICAgICAgfCAnXicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENhcmV0IGVsc2UgQ2FyZXRzIChuLTIpXG4gICAgICAgIHwgJywnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb21tYSBlbHNlIENvbW1hcyAobi0yKVxuICAgICAgICB8ICcuJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRG90IGVsc2UgRG90cyAobi0yKVxuICAgICAgICB8ICcvJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2xhc2ggZWxzZSBTbGFzaHMgKG4tMilcbiAgICAgICAgfCAnJCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvbGxhciBlbHNlIERvbGxhcnMgKG4tMilcbiAgICAgICAgfCAnJScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFBlcmNlbnQgZWxzZSBQZXJjZW50cyAobi0yKVxuICAgICAgICB8ICc9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gRXF1YWwgZWxzZSBFcXVhbHMgKG4tMilcbiAgICAgICAgfCAnIScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEV4Y2xhbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEV4Y2xhbWF0aW9ucyAobi0yKVxuICAgICAgICB8ICc/JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gUXVlc3Rpb24gZWxzZSBRdWVzdGlvbnMgKG4tMilcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+IG1heWJlX251bWJlcigpXG4gICAgICAgIHwgYyAtPiB3b3JkKCkgaW5cbiAgICAgIHJlc3VsdCA6PSB3IDo6ICFyZXN1bHRcbiAgICBkb25lO1xuICAgIExpc3QucmV2ICFyZXN1bHRcbmVuZFxuXG5tb2R1bGUgTGV4X3N0cmluZyA9IExleChTdHJpbmdMYWJlbHMpXG5sZXQgbGV4ID0gTGV4X3N0cmluZy5sZXhcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhcixcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LFxuICAgICAgICAgICAgICAgICAgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbm1vZHVsZSBCaWdhcnJheV9pbnB1dCA6IElucHV0IHdpdGggdHlwZSB0ID0gYmlnc3RyaW5nID1cbnN0cnVjdFxuICBtb2R1bGUgQkEgPSBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IGJpZ3N0cmluZ1xuICBsZXQgZ2V0ID0gQkEuQXJyYXkxLmdldFxuICBsZXQgbGVuZ3RoID0gQkEuQXJyYXkxLmRpbVxuICBsZXQgc3ViIGFyciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA8IDAgfHwgcG9zIDwgMCB8fCBwb3MgKyBsZW4gPiBCQS5BcnJheTEuZGltIGFyclxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaWdhcnJheV9pbnB1dC5zdWJcIjtcbiAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgQnl0ZXMudW5zYWZlX3NldCBzIGkgKEJBLkFycmF5MS51bnNhZmVfZ2V0IGFyciAoaSArIHBvcykpXG4gICAgZG9uZTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbmVuZFxubW9kdWxlIExleF9iaWdhcnJheSA9IExleChCaWdhcnJheV9pbnB1dClcbmxldCBsZXhfYmlnYXJyYXkgPSBMZXhfYmlnYXJyYXkubGV4XG5cbmxldCBtYWtlX3NwYWNlID0gZnVuY3Rpb25cbiAgfCAwIC0+IGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIlxuICB8IDEgLT4gU3BhY2VcbiAgfCBuIC0+IGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIubWFrZV9zcGFjZVwiIGVsc2UgU3BhY2VzIChuLTIpXG5cblxuKCpcbigqKiBbc3RyaW5nX29mX3RsIGxdIHJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsLlxuICAgIFtlc3RyaW5nX29mX3RsIGxdIHJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxcbiAgICAoc2FtZSBzZW1hbnRpY3MgYXMgW1N0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdGwgbCldKS4gKilcbmxldCBzdHJpbmdfb2ZfdGwsIGVzdHJpbmdfb2ZfdGwgPVxuICBsZXQgZyBlc2NhcGVkIHRsID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNDIgaW5cbiAgICBsZXQgcmVjIGxvb3AgOiAnYSB0IGxpc3QgLT4gdW5pdCA9IGZ1bmN0aW9uXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaWYgZXNjYXBlZCB0aGVuIFN0cmluZy5lc2NhcGVkIChzdHJpbmdfb2ZfdCBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc3RyaW5nX29mX3QgZSk7XG4gICAgICAgICAgbG9vcCB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgICgpXG4gICAgaW5cbiAgICAgIEJ1ZmZlci5jb250ZW50cyAobG9vcCB0bDsgYilcbiAgaW4gZyBmYWxzZSwgZyB0cnVlXG4qKVxuXG5sZXQgc3RyaW5nX29mX3Rva2VucyB0bCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMjggaW5cbiAgTGlzdC5pdGVyIChmdW4gZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfdG9rZW4gZSkpIHRsO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBkZXN0cmluZ19vZl90b2tlbnMgPyhsaW1pdD1tYXhfaW50KSB0bCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCAoaTppbnQpICh0bGlzdDp0b2sgbGlzdCkgOiB1bml0ID0gbWF0Y2ggdGxpc3Qgd2l0aFxuICAgIHwgZTo6dGwgLT5cbiAgICAgICAgaWYgbGltaXQgPSBpIHRoZW5cbiAgICAgICAgICBsb29wIGkgW11cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3Rva2VuIGUpKTtcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI6OlwiO1xuICAgICAgICAgICAgbG9vcCAoc3VjYyBpKSB0bFxuICAgICAgICAgIGVuZFxuICAgIHwgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIltdXCJcbiAgaW5cbiAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgMCB0bDsgYilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzLTIwMTQgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHNkZWJ1ZyA9IHRydWVcblxub3BlbiBQcmludGZcbm9wZW4gT21kX3JlcHJlc2VudGF0aW9uXG5vcGVuIE9tZF91dGlsc1xubW9kdWxlIEwgPSBPbWRfbGV4ZXJcblxudHlwZSByID0gT21kX3JlcHJlc2VudGF0aW9uLnRcbigqKiBhY2N1bXVsYXRvciAoYmV3YXJlLCByZXZlcnNlZCB0b2tlbnMpICopXG5cbmFuZCBwID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogY29udGV4dCBpbmZvcm1hdGlvbjogcHJldmlvdXMgZWxlbWVudHMgKilcblxuYW5kIGwgPSBPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3RcbigqKiB0b2tlbnMgdG8gcGFyc2UgKilcblxuYW5kIG1haW5fbG9vcCA9XG4gID9odG1sOmJvb2wgLT5cbiAgciAtPiAoKiBhY2N1bXVsYXRvciAoYmV3YXJlLCByZXZlcnNlZCB0b2tlbnMpICopXG4gIHAgLT4gKCogaW5mbzogcHJldmlvdXMgZWxlbWVudHMgKilcbiAgbCAtPiAoKiB0b2tlbnMgdG8gcGFyc2UgKilcbiAgT21kX3JlcHJlc2VudGF0aW9uLnQgKCogZmluYWwgcmVzdWx0ICopXG4oKiogbW9zdCBpbXBvcnRhbnQgbG9vcCAqKVxuXG5cbigqKiBOLkIuIFBsZWFzZSBkbyBub3QgdXNlIHRhYnVsYXRpb25zIGluIHlvdXIgTWFya2Rvd24gZmlsZSEgKilcblxubW9kdWxlIHR5cGUgRW52ID0gc2lnXG4gIHZhbCByYzogT21kX3JlcHJlc2VudGF0aW9uLnJlZl9jb250YWluZXJcbiAgdmFsIGV4dGVuc2lvbnMgOiBPbWRfcmVwcmVzZW50YXRpb24uZXh0ZW5zaW9uc1xuICB2YWwgZGVmYXVsdF9sYW5nIDogc3RyaW5nXG4gIHZhbCBnaF91ZW1waF9vcl9ib2xkX3N0eWxlIDogYm9vbFxuICB2YWwgYmxpbmRfaHRtbCA6IGJvb2xcbiAgdmFsIHN0cmljdF9odG1sIDogYm9vbFxuICB2YWwgd2FybmluZyA6IGJvb2xcbiAgdmFsIHdhcm5fZXJyb3IgOiBib29sXG5lbmRcblxubW9kdWxlIFVuaXQgPSBzdHJ1Y3QgZW5kXG5cbm1vZHVsZSBEZWZhdWx0X2VudiAoVW5pdDpzaWcgZW5kKSA6IEVudiA9IHN0cnVjdFxuICBsZXQgcmMgPSBuZXcgT21kX3JlcHJlc2VudGF0aW9uLnJlZl9jb250YWluZXJcbiAgbGV0IGV4dGVuc2lvbnMgPSBbXVxuICBsZXQgZGVmYXVsdF9sYW5nID0gXCJcIlxuICBsZXQgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA9IHRydWVcbiAgbGV0IGJsaW5kX2h0bWwgPSBmYWxzZVxuICBsZXQgc3RyaWN0X2h0bWwgPSBmYWxzZVxuICBsZXQgd2FybmluZyA9IGZhbHNlXG4gIGxldCB3YXJuX2Vycm9yID0gZmFsc2VcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRW52OkVudikgPVxuc3RydWN0XG4gIGluY2x1ZGUgRW52XG5cbiAgbGV0IHdhcm4gPSBPbWRfdXRpbHMud2FybiB+d2U6d2Fybl9lcnJvclxuXG4gICgqKiBzZXQgb2Yga25vd24gSFRNTCBjb2RlcyAqKVxuICBsZXQgaHRtbGNvZGVzX3NldCA9IFN0cmluZ1NldC5vZl9saXN0ICgqIFRoaXMgbGlzdCBzaG91bGQgYmUgY2hlY2tlZC4uLiAqKVxuICAgICAgKCogbGlzdCBleHRyYWN0ZWQgZnJvbTogaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvY2hhcnNldC5odG1sICopXG4gICAgICBbIFwiQUVsaWdcIjsgIFwiQWFjdXRlXCI7ICBcIkFjaXJjXCI7ICBcIkFncmF2ZVwiOyBcIkFscGhhXCI7ICBcIkFyaW5nXCI7ICBcIkF0aWxkZVwiO1xuICAgICAgICBcIkF1bWxcIjsgXCJCZXRhXCI7ICBcIkNjZWRpbFwiOyBcIkNoaVwiOyBcIkRhZ2dlclwiOyAgXCJEZWx0YVwiOyBcIkVUSFwiOyBcIkVhY3V0ZVwiO1xuICAgICAgICBcIkVjaXJjXCI7ICBcIkVncmF2ZVwiOyAgXCJFcHNpbG9uXCI7ICAgXCJFdGFcIjsgIFwiRXVtbFwiOyAgXCJHYW1tYVwiOyAgXCJJYWN1dGVcIjtcbiAgICAgICAgXCJJY2lyY1wiOyBcIklncmF2ZVwiOyBcIklvdGFcIjsgIFwiSXVtbFwiOyBcIkthcHBhXCI7IFwiTGFtYmRhXCI7IFwiTXVcIjsgXCJOdGlsZGVcIjtcbiAgICAgICAgXCJOdVwiOyAgXCJPRWxpZ1wiOyAgXCJPYWN1dGVcIjsgICBcIk9jaXJjXCI7ICBcIk9ncmF2ZVwiOyAgXCJPbWVnYVwiOyAgXCJPbWljcm9uXCI7XG4gICAgICAgIFwiT3NsYXNoXCI7ICBcIk90aWxkZVwiOyAgXCJPdW1sXCI7ICBcIlBoaVwiOyAgXCJQaVwiOyAgXCJQcmltZVwiOyAgXCJQc2lcIjsgIFwiUmhvXCI7XG4gICAgICAgIFwiU2Nhcm9uXCI7ICBcIlNpZ21hXCI7ICAgXCJUSE9STlwiOyAgXCJUYXVcIjsgIFwiVGhldGFcIjsgICBcIlVhY3V0ZVwiOyAgXCJVY2lyY1wiO1xuICAgICAgICBcIlVncmF2ZVwiOyBcIlVwc2lsb25cIjsgXCJVdW1sXCI7IFwiWGlcIjsgXCJZYWN1dGVcIjsgXCJZdW1sXCI7IFwiWmV0YVwiOyBcImFhY3V0ZVwiO1xuICAgICAgICBcImFjaXJjXCI7IFwiYWN1dGVcIjsgXCJhZWxpZ1wiOyBcImFncmF2ZVwiOyBcImFsZWZzeW1cIjsgXCJhbHBoYVwiOyBcImFtcFwiOyBcImFuZFwiO1xuICAgICAgICBcImFuZ1wiOyBcImFyaW5nXCI7IFwiYXN5bXBcIjsgIFwiYXRpbGRlXCI7IFwiYXVtbFwiOyBcImJkcXVvXCI7IFwiYmV0YVwiOyBcImJydmJhclwiO1xuICAgICAgICBcImJ1bGxcIjsgIFwiY2FwXCI7ICBcImNjZWRpbFwiOyBcImNlZGlsXCI7ICBcImNlbnRcIjsgIFwiY2hpXCI7IFwiY2lyY1wiOyAgXCJjbHVic1wiO1xuICAgICAgICBcImNvbmdcIjsgIFwiY29weVwiOyBcImNyYXJyXCI7IFwiY3VwXCI7ICBcImN1cnJlblwiOyBcImRBcnJcIjsgIFwiZGFnZ2VyXCI7IFwiZGFyclwiO1xuICAgICAgICBcImRlZ1wiOyAgXCJkZWx0YVwiOyAgXCJkaWFtc1wiOyAgIFwiZGl2aWRlXCI7ICBcImVhY3V0ZVwiOyAgXCJlY2lyY1wiOyAgXCJlZ3JhdmVcIjtcbiAgICAgICAgXCJlbXB0eVwiOyAgXCJlbXNwXCI7IFwiZW5zcFwiOyAgXCJlcHNpbG9uXCI7IFwiZXF1aXZcIjsgIFwiZXRhXCI7ICBcImV0aFwiOyBcImV1bWxcIjtcbiAgICAgICAgXCJldXJvXCI7ICBcImV4aXN0XCI7ICBcImZub2ZcIjsgIFwiZm9yYWxsXCI7ICBcImZyYWMxMlwiOyAgXCJmcmFjMTRcIjsgIFwiZnJhYzM0XCI7XG4gICAgICAgIFwiZnJhc2xcIjsgIFwiZ2FtbWFcIjsgIFwiZ2VcIjsgXCJndFwiOyAgXCJoQXJyXCI7ICBcImhhcnJcIjsgXCJoZWFydHNcIjsgIFwiaGVsbGlwXCI7XG4gICAgICAgIFwiaWFjdXRlXCI7IFwiaWNpcmNcIjsgXCJpZXhjbFwiOyBcImlncmF2ZVwiOyBcImltYWdlXCI7IFwiaW5maW5cIjsgXCJpbnRcIjsgXCJpb3RhXCI7XG4gICAgICAgIFwiaXF1ZXN0XCI7IFwiaXNpblwiOyBcIml1bWxcIjsgIFwia2FwcGFcIjsgXCJsQXJyXCI7IFwibGFtYmRhXCI7IFwibGFuZ1wiOyBcImxhcXVvXCI7XG4gICAgICAgIFwibGFyclwiOyAgXCJsY2VpbFwiOyAgXCJsZHF1b1wiOyBcImxlXCI7ICBcImxmbG9vclwiOyAgXCJsb3dhc3RcIjsgXCJsb3pcIjsgIFwibHJtXCI7XG4gICAgICAgIFwibHNhcXVvXCI7IFwibHNxdW9cIjsgXCJsdFwiOyAgXCJtYWNyXCI7IFwibWRhc2hcIjsgXCJtaWNyb1wiOyBcIm1pZGRvdFwiOyBcIm1pbnVzXCI7XG4gICAgICAgIFwibXVcIjsgXCJuYWJsYVwiOyAgXCJuYnNwXCI7IFwibmRhc2hcIjsgIFwibmVcIjsgXCJuaVwiOyBcIm5vdFwiOyAgXCJub3RpblwiOyBcIm5zdWJcIjtcbiAgICAgICAgXCJudGlsZGVcIjsgIFwibnVcIjsgICBcIm9hY3V0ZVwiOyAgXCJvY2lyY1wiOyAgXCJvZWxpZ1wiOyAgIFwib2dyYXZlXCI7ICBcIm9saW5lXCI7XG4gICAgICAgIFwib21lZ2FcIjsgXCJvbWljcm9uXCI7IFwib3BsdXNcIjsgXCJvclwiOyBcIm9yZGZcIjsgXCJvcmRtXCI7IFwib3NsYXNoXCI7IFwib3RpbGRlXCI7XG4gICAgICAgIFwib3RpbWVzXCI7ICBcIm91bWxcIjsgIFwicGFyYVwiOyAgXCJwYXJ0XCI7ICBcInBlcm1pbFwiOyBcInBlcnBcIjsgIFwicGhpXCI7ICBcInBpXCI7XG4gICAgICAgIFwicGl2XCI7ICBcInBsdXNtblwiOyAgXCJwb3VuZFwiOyBcInByaW1lXCI7ICBcInByb2RcIjsgIFwicHJvcFwiOyBcInBzaVwiOyAgXCJxdW90XCI7XG4gICAgICAgIFwickFyclwiOyAgXCJyYWRpY1wiOyBcInJhbmdcIjsgXCJyYXF1b1wiOyAgXCJyYXJyXCI7IFwicmNlaWxcIjsgIFwicmRxdW9cIjsgXCJyZWFsXCI7XG4gICAgICAgIFwicmVnXCI7IFwicmZsb29yXCI7ICBcInJob1wiOyBcInJsbVwiOyBcInJzYXF1b1wiOyAgXCJyc3F1b1wiOyBcInNicXVvXCI7IFwic2Nhcm9uXCI7XG4gICAgICAgIFwic2RvdFwiOyAgXCJzZWN0XCI7ICBcInNoeVwiOyBcInNpZ21hXCI7ICBcInNpZ21hZlwiOyAgXCJzaW1cIjsgXCJzcGFkZXNcIjsgIFwic3ViXCI7XG4gICAgICAgIFwic3ViZVwiOyBcInN1bVwiOyBcInN1cFwiOyBcInN1cDFcIjsgIFwic3VwMlwiOyBcInN1cDNcIjsgXCJzdXBlXCI7IFwic3psaWdcIjsgXCJ0YXVcIjtcbiAgICAgICAgXCJ0aGVyZTRcIjsgIFwidGhldGFcIjsgXCJ0aGV0YXN5bVwiOyAgXCJ0aGluc3BcIjsgXCJ0aG9yblwiOyAgXCJ0aWxkZVwiOyBcInRpbWVzXCI7XG4gICAgICAgIFwidHJhZGVcIjsgXCJ1QXJyXCI7IFwidWFjdXRlXCI7ICBcInVhcnJcIjsgXCJ1Y2lyY1wiOyBcInVncmF2ZVwiOyBcInVtbFwiOyBcInVwc2loXCI7XG4gICAgICAgIFwidXBzaWxvblwiOyAgXCJ1dW1sXCI7IFwid2VpZXJwXCI7IFwieGlcIjsgIFwieWFjdXRlXCI7IFwieWVuXCI7ICBcInl1bWxcIjsgXCJ6ZXRhXCI7XG4gICAgICAgIFwiendqXCI7IFwiendualwiOyBdXG5cblxuICAoKiogc2V0IG9mIGtub3duIGlubGluZSBIVE1MIHRhZ3MgKilcbiAgbGV0IGlubGluZV9odG1sdGFnc19zZXQgPVxuICAgICAgKFN0cmluZ1NldC5vZl9saXN0XG4gICAgICAgICAoKiBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvSFRNTC9JbmxpbmVfZWxlbWVudHMgKilcbiAgICAgICAgIFsgXCJiXCI7XCJiaWdcIjtcImlcIjtcInNtYWxsXCI7XCJ0dFwiO1xuICAgICAgICAgICBcImFiYnJcIjtcImFjcm9ueW1cIjtcImNpdGVcIjtcImNvZGVcIjtcImRmblwiO1wiZW1cIjtcImtiZFwiO1wic3Ryb25nXCI7XCJzYW1wXCI7XCJ2YXJcIjtcbiAgICAgICAgICAgXCJhXCI7XCJiZG9cIjtcImJyXCI7XCJpbWdcIjtcIm1hcFwiO1wib2JqZWN0XCI7XCJxXCI7XCJzcGFuXCI7XCJzdWJcIjtcInN1cFwiO1xuICAgICAgICAgICBcImJ1dHRvblwiO1wiaW5wdXRcIjtcImxhYmVsXCI7XCJzZWxlY3RcIjtcInRleHRhcmVhXCI7XSlcblxuICAoKiogTi5CLiBpdCBzZWVtcyB0aGF0IHRoZXJlIGlzIG5vIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdlZW4gaW5saW5lXG4gICAgICB0YWdzIGFuZCBibG9jay1sZXZlbCB0YWdzOiBpbiBIVE1MNCBpdCB3YXMgbm90IGNsZWFyLCBpbiBIVE1MNVxuICAgICAgaXQncyBldmVuIG1vcmUgY29tcGxpY2F0ZWQuIFNvLCB0aGUgY2hvaWNlICpoZXJlKiBpcyB0byBzcGVjaWZ5XG4gICAgICBhIHNldCBvZiB0YWdzIGNvbnNpZGVyZWQgYXMgXCJpbmxpbmVcIiwgY2YuIFtpbmxpbmVfaHRtbHRhZ3Nfc2V0XS5cbiAgICAgIFNvIHRoZXJlIHdpbGwgYmUgaW5saW5lIHRhZ3MsIG5vbi1pbmxpbmUgdGFncywgYW5kIHVua25vd25cbiAgICAgIHRhZ3MuKilcblxuICAoKiogc2V0IG9mIEhUTUwgdGFncyB0aGF0IG1heSBhcHBlYXIgb3V0IG9mIGEgYm9keSAqKVxuICBsZXQgbm90aW5ib2R5dGFncyA9IFN0cmluZ1NldC5vZl9saXN0XG4gICAgICBbXG4gICAgICAgIFwidGl0bGVcIjtcbiAgICAgICAgXCJsaW5rXCI7XG4gICAgICAgIFwibWV0YVwiO1xuICAgICAgICBcInN0eWxlXCI7XG4gICAgICAgIFwiaHRtbFwiO1xuICAgICAgICBcImhlYWRcIjtcbiAgICAgICAgXCJib2R5XCI7XG4gICAgICBdXG5cbiAgKCoqIEFsbCBrbm93biBIVE1MIHRhZ3MgKilcbiAgbGV0IGh0bWx0YWdzX3NldCA9XG4gICAgU3RyaW5nU2V0LnVuaW9uIG5vdGluYm9keXRhZ3NcbiAgICAgIChTdHJpbmdTZXQudW5pb24gaW5saW5lX2h0bWx0YWdzX3NldFxuICAgICAgICAgKFN0cmluZ1NldC5vZl9saXN0XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFwiYVwiO1wiYWJiclwiO1wiYWNyb255bVwiO1wiYWRkcmVzc1wiO1wiYXBwbGV0XCI7XCJhcmVhXCI7XCJhcnRpY2xlXCI7XCJhc2lkZVwiXG4gICAgICAgICAgICAgIDtcImF1ZGlvXCI7XCJiXCI7XCJiYXNlXCI7XCJiYXNlZm9udFwiO1wiYmRpXCI7XCJiZG9cIjtcImJpZ1wiO1wiYmxvY2txdW90ZVwiXG4gICAgICAgICAgICAgIDtcImJyXCI7XCJidXR0b25cIjtcImNhbnZhc1wiO1wiY2FwdGlvblwiO1wiY2VudGVyXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJjb2xcIlxuICAgICAgICAgICAgICA7XCJjb2xncm91cFwiO1wiY29tbWFuZFwiO1wiZGF0YWxpc3RcIjtcImRkXCI7XCJkZWxcIjtcImRldGFpbHNcIjtcImRmblwiXG4gICAgICAgICAgICAgIDtcImRpYWxvZ1wiO1wiZGlyXCI7XCJkaXZcIjtcImRsXCI7XCJkdFwiO1wiZW1cIjtcImVtYmVkXCI7XCJmaWVsZHNldFwiXG4gICAgICAgICAgICAgIDtcImZpZ2NhcHRpb25cIjtcImZpZ3VyZVwiO1wiZm9udFwiO1wiZm9vdGVyXCI7XCJmb3JtXCI7XCJmcmFtZVwiO1wiZnJhbWVzZXRcIlxuICAgICAgICAgICAgICA7XCJoMlwiO1wiaDNcIjtcImg0XCI7XCJoNVwiO1wiaDZcIlxuICAgICAgICAgICAgICA7XCJoMVwiO1wiaGVhZGVyXCI7XCJoclwiO1wiaVwiO1wiaWZyYW1lXCI7XCJpbWdcIjtcImlucHV0XCI7XCJpbnNcIjtcImtiZFwiXG4gICAgICAgICAgICAgIDtcImtleWdlblwiO1wibGFiZWxcIjtcImxlZ2VuZFwiO1wibGlcIjtcIm1hcFwiO1wibWFya1wiO1wibWVudVwiO1wibWV0ZXJcIjtcIm5hdlwiXG4gICAgICAgICAgICAgIDtcIm5vZnJhbWVzXCI7XCJub3NjcmlwdFwiO1wib2JqZWN0XCI7XCJvbFwiO1wib3B0Z3JvdXBcIjtcIm9wdGlvblwiO1wib3V0cHV0XCJcbiAgICAgICAgICAgICAgO1wicFwiO1wicGFyYW1cIjtcInByZVwiO1wicHJvZ3Jlc3NcIjtcInFcIjtcInJwXCI7XCJydFwiO1wicnVieVwiO1wic1wiO1wic2FtcFwiXG4gICAgICAgICAgICAgIDtcInNjcmlwdFwiO1wic2VjdGlvblwiO1wic2VsZWN0XCI7XCJzbWFsbFwiO1wic291cmNlXCI7XCJzcGFuXCI7XCJzdHJpa2VcIlxuICAgICAgICAgICAgICA7XCJzdHJvbmdcIjtcInN0eWxlXCI7XCJzdWJcIjtcInN1bW1hcnlcIjtcInN1cFwiO1widGFibGVcIjtcInRib2R5XCI7XCJ0ZFwiXG4gICAgICAgICAgICAgIDtcInRleHRhcmVhXCI7XCJ0Zm9vdFwiO1widGhcIjtcInRoZWFkXCI7XCJ0aW1lXCI7XCJ0clwiO1widHJhY2tcIjtcInR0XCI7XCJ1XCJcbiAgICAgICAgICAgICAgO1widWxcIjtcInZhclwiO1widmlkZW9cIjtcIndiclwiXG4gICAgICAgICAgICBdKSlcblxuXG4gICgqKiBUaGlzIGZ1bmN0aW9ucyBmaXhlcyBiYWQgbGV4aW5nIHRyZWVzLCB3aGljaCBtYXkgYmUgYnVpbHQgd2hlblxuICAgICAgZXh0cmFjdGlvbiBhIHBvcnRpb24gb2YgYW5vdGhlciBsZXhpbmcgdHJlZS4gKilcbiAgbGV0IGZpeCBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAoKiBjb2RlIHRvIGdlbmVyYXRlIHdoYXQgZm9sbG93cy4uLlxuICAgICAgICAgTGlzdC5pdGVyIChmdW4gZSAtPlxuICAgICAgICAgUHJpbnRmLnByaW50ZiBcIlxuICAgICAgICAgfCAlczo6JXM6OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDFcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzIDA6OnRsKVxuICAgICAgICAgfCAlc3Mgbjo6JXM6OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDJcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzKG4rMSk6OnRsKVxuICAgICAgICAgfCAlczo6JXNzIG46OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDNcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzKG4rMSk6OnRsKVxuICAgICAgICAgfCAlc3MgYTo6JXNzIGI6OnRsIC0+XG4gICAgICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXFxcIiVzIDRcXFxcbiUhXFxcIjtcbiAgICAgICAgICAgIGxvb3AgYWNjdSAoJXNzKGErYisyKTo6dGwpXCJcbiAgICAgICAgIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUpXG4gICAgICAgICBbXCJBbXBlcnNhbmRcIjsgXCJBdFwiOyBcIkJhY2txdW90ZVwiOyBcIkJhY2tzbGFzaFwiOyBcIkJhclwiOyBcIkNhcmV0XCI7IFwiQ2JyYWNlXCI7IFwiQ29sb25cIjsgXCJDb21tYVwiOyBcIkNwYXJlbnRoZXNpc1wiOyBcIkNicmFja2V0XCI7IFwiRG9sbGFyXCI7IFwiRG90XCI7IFwiRG91YmxlcXVvdGVcIjsgXCJFeGNsYW1hdGlvblwiOyBcIkVxdWFsXCI7IFwiR3JlYXRlcnRoYW5cIjsgXCJIYXNoXCI7IFwiTGVzc3RoYW5cIjsgXCJNaW51c1wiOyBcIk5ld2xpbmVcIjsgXCJPYnJhY2VcIjsgXCJPcGFyZW50aGVzaXNcIjsgXCJPYnJhY2tldFwiOyBcIlBlcmNlbnRcIjsgXCJQbHVzXCI7IFwiUXVlc3Rpb25cIjsgXCJRdW90ZVwiOyBcIlNlbWljb2xvblwiOyBcIlNsYXNoXCI7IFwiU3BhY2VcIjsgXCJTdGFyXCI7IFwiVGFiXCI7IFwiVGlsZGVcIjsgXCJVbmRlcnNjb3JlXCJdO1xuICAgICAgICAgcHJpbnRfc3RyaW5nIFwifCB4Ojp0bCAtPiBsb29wICh4OjphY2N1KSB0bFxcbnwgW10gLT4gTGlzdC5yZXYgYWNjdVxcblwiOyAqKVxuICAgICAgfCBBbXBlcnNhbmQ6OkFtcGVyc2FuZDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzIDA6OnRsKVxuICAgICAgfCBBbXBlcnNhbmRzIG46OkFtcGVyc2FuZDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzKG4rMSk6OnRsKVxuICAgICAgfCBBbXBlcnNhbmQ6OkFtcGVyc2FuZHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzKG4rMSk6OnRsKVxuICAgICAgfCBBbXBlcnNhbmRzIGE6OkFtcGVyc2FuZHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQW1wZXJzYW5kIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBbXBlcnNhbmRzKGErYisyKTo6dGwpXG4gICAgICB8IEF0OjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyAwOjp0bClcbiAgICAgIHwgQXRzIG46OkF0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdDo6QXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMobisxKTo6dGwpXG4gICAgICB8IEF0cyBhOjpBdHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzIDA6OnRsKVxuICAgICAgfCBCYWNrcXVvdGVzIG46OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGU6OkJhY2txdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrcXVvdGVzIGE6OkJhY2txdW90ZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3F1b3RlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3NsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMgMDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgbjo6QmFja3NsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMobisxKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3NsYXNocyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMobisxKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgYTo6QmFja3NsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYWNrc2xhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhY2tzbGFzaHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFyOjpCYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyAwOjp0bClcbiAgICAgIHwgQmFycyBuOjpCYXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyhuKzEpOjp0bClcbiAgICAgIHwgQmFyOjpCYXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyhuKzEpOjp0bClcbiAgICAgIHwgQmFycyBhOjpCYXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhciA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFycyhhK2IrMik6OnRsKVxuICAgICAgfCBDYXJldDo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMgMDo6dGwpXG4gICAgICB8IENhcmV0cyBuOjpDYXJldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYXJldHMgYTo6Q2FyZXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2JyYWNlOjpDYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyAwOjp0bClcbiAgICAgIHwgQ2JyYWNlcyBuOjpDYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNlOjpDYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNlcyBhOjpDYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBDb2xvbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMgMDo6dGwpXG4gICAgICB8IENvbG9ucyBuOjpDb2xvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKG4rMSk6OnRsKVxuICAgICAgfCBDb2xvbnMgYTo6Q29sb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29tbWE6OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzIDA6OnRsKVxuICAgICAgfCBDb21tYXMgbjo6Q29tbWE6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhuKzEpOjp0bClcbiAgICAgIHwgQ29tbWFzIGE6OkNvbW1hcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKGErYisyKTo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpczo6Q3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MgMDo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3Mgbjo6Q3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpczo6Q3BhcmVudGhlc2lzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IENwYXJlbnRoZXNpc3MgYTo6Q3BhcmVudGhlc2lzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDcGFyZW50aGVzaXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENwYXJlbnRoZXNpc3MoYStiKzIpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXQ6OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzIDA6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgbjo6Q2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIGE6OkNicmFja2V0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKGErYisyKTo6dGwpXG4gICAgICB8IERvbGxhcjo6RG9sbGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMgMDo6dGwpXG4gICAgICB8IERvbGxhcnMgbjo6RG9sbGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMobisxKTo6dGwpXG4gICAgICB8IERvbGxhcjo6RG9sbGFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMobisxKTo6dGwpXG4gICAgICB8IERvbGxhcnMgYTo6RG9sbGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb2xsYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvbGxhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgRG90OjpEb3Q6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyAwOjp0bClcbiAgICAgIHwgRG90cyBuOjpEb3Q6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyhuKzEpOjp0bClcbiAgICAgIHwgRG90OjpEb3RzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyhuKzEpOjp0bClcbiAgICAgIHwgRG90cyBhOjpEb3RzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG90cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZTo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMgMDo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyBuOjpEb3VibGVxdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgYTo6RG91YmxlcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb246OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zIDA6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbnMgbjo6RXhjbGFtYXRpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIGE6OkV4Y2xhbWF0aW9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKGErYisyKTo6dGwpXG4gICAgICB8IEVxdWFsOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyAwOjp0bClcbiAgICAgIHwgRXF1YWxzIG46OkVxdWFsOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWxzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMobisxKTo6dGwpXG4gICAgICB8IEVxdWFscyBhOjpFcXVhbHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhhK2IrMik6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMgMDo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyBuOjpHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgYTo6R3JlYXRlcnRoYW5zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMoYStiKzIpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMgMDo6dGwpXG4gICAgICB8IEhhc2hzIG46Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBIYXNoOjpIYXNocyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaHMgYTo6SGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMoYStiKzIpOjp0bClcbiAgICAgIHwgTGVzc3RoYW46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zIDA6OnRsKVxuICAgICAgfCBMZXNzdGhhbnMgbjo6TGVzc3RoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIGE6Okxlc3N0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IE1pbnVzOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyAwOjp0bClcbiAgICAgIHwgTWludXNzIG46Ok1pbnVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51czo6TWludXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MobisxKTo6dGwpXG4gICAgICB8IE1pbnVzcyBhOjpNaW51c3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyAwOjp0bClcbiAgICAgIHwgTmV3bGluZXMgbjo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMobisxKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6Ok5ld2xpbmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyBhOjpOZXdsaW5lcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhhK2IrMik6OnRsKVxuICAgICAgfCBPYnJhY2U6Ok9icmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzIDA6OnRsKVxuICAgICAgfCBPYnJhY2VzIG46Ok9icmFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2U6Ok9icmFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2VzIGE6Ok9icmFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpczo6T3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MgMDo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpc3Mgbjo6T3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpczo6T3BhcmVudGhlc2lzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MobisxKTo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgYTo6T3BhcmVudGhlc2lzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPcGFyZW50aGVzaXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9wYXJlbnRoZXNpc3MoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNrZXQ6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzIDA6OnRsKVxuICAgICAgfCBPYnJhY2tldHMgbjo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIGE6Ok9icmFja2V0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKGErYisyKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzIDA6OnRsKVxuICAgICAgfCBQZXJjZW50cyBuOjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhuKzEpOjp0bClcbiAgICAgIHwgUGVyY2VudDo6UGVyY2VudHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnRzIGE6OlBlcmNlbnRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKGErYisyKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzIDA6OnRsKVxuICAgICAgfCBQbHVzcyBuOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhuKzEpOjp0bClcbiAgICAgIHwgUGx1czo6UGx1c3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXNzIGE6OlBsdXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKGErYisyKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9uOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyAwOjp0bClcbiAgICAgIHwgUXVlc3Rpb25zIG46OlF1ZXN0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMobisxKTo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBhOjpRdWVzdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBRdW90ZTo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMgMDo6dGwpXG4gICAgICB8IFF1b3RlcyBuOjpRdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKG4rMSk6OnRsKVxuICAgICAgfCBRdW90ZXMgYTo6UXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMoYStiKzIpOjp0bClcbiAgICAgIHwgU2VtaWNvbG9uOjpTZW1pY29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyAwOjp0bClcbiAgICAgIHwgU2VtaWNvbG9ucyBuOjpTZW1pY29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgU2VtaWNvbG9uOjpTZW1pY29sb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgU2VtaWNvbG9ucyBhOjpTZW1pY29sb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNlbWljb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2VtaWNvbG9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBTbGFzaDo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMgMDo6dGwpXG4gICAgICB8IFNsYXNocyBuOjpTbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNocyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBTbGFzaHMgYTo6U2xhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMoYStiKzIpOjp0bClcbiAgICAgIHwgU3BhY2U6OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzIDA6OnRsKVxuICAgICAgfCBTcGFjZXMgbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgU3BhY2VzIGE6OlNwYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKGErYisyKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzIDA6OnRsKVxuICAgICAgfCBTdGFycyBuOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhuKzEpOjp0bClcbiAgICAgIHwgU3Rhcjo6U3RhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXJzIGE6OlN0YXJzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKGErYisyKTo6dGwpXG4gICAgICB8IFRhYjo6VGFiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMgMDo6dGwpXG4gICAgICB8IFRhYnMgbjo6VGFiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMobisxKTo6dGwpXG4gICAgICB8IFRhYjo6VGFicyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMobisxKTo6dGwpXG4gICAgICB8IFRhYnMgYTo6VGFicyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUYWIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRhYnMoYStiKzIpOjp0bClcbiAgICAgIHwgVGlsZGU6OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzIDA6OnRsKVxuICAgICAgfCBUaWxkZXMgbjo6VGlsZGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhuKzEpOjp0bClcbiAgICAgIHwgVGlsZGVzIGE6OlRpbGRlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKGErYisyKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzIDA6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBuOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhuKzEpOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZTo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmVzIGE6OlVuZGVyc2NvcmVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKGErYisyKTo6dGwpfCB4Ojp0bCAtPiBsb29wICh4OjphY2N1KSB0bFxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuXG4gICgqIFJlbW92ZSBhbGwgW05MXSBhbmQgW0JyXSBhdCB0aGUgYmVnaW5uaW5nLiAqKVxuICBsZXQgcmVjIHJlbW92ZV9pbml0aWFsX25ld2xpbmVzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoTkwgfCBCcikgOjogdGwgLT4gcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgdGxcbiAgICB8IGwgLT4gbFxuXG5cbiAgKCoqIC0gcmVjb2duaXplcyBwYXJhZ3JhcGhzXG4gICAgICAtIGdsdWVzIGZvbGxvd2luZyBibG9ja3F1b3RlcyAgKilcbiAgbGV0IG1ha2VfcGFyYWdyYXBocyBtZCA9XG4gICAgbGV0IHJlYyBsb29wIGNwIGFjY3UgPSBmdW5jdGlvbiAoKiBjcCBtZWFucyBjdXJyZW50IHBhcmFncmFwaCAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgYWNjdSA9XG4gICAgICAgICAgbWF0Y2ggY3Agd2l0aFxuICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBhY2N1XG4gICAgICAgICAgfCAoTkx8QnIpOjpjcCAtPiBQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1XG4gICAgICAgICAgfCBjcCAtPiBQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1XG4gICAgICAgIGluXG4gICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgIHwgQmxvY2txdW90ZSBiMSA6OiBCbG9ja3F1b3RlIGIyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgY3AgYWNjdSAoQmxvY2txdW90ZShiMUBiMik6OiB0bClcbiAgICAgIHwgQmxvY2txdW90ZSBiIDo6IHRsIC0+XG4gICAgICAgIGxldCBlID0gQmxvY2txdW90ZShsb29wIFtdIFtdIGIpIGluXG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgKFVscCBiKSA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IFVscChMaXN0Lm1hcCAoZnVuIGxpIC0+IGxvb3AgW10gW10gbGkpIGIpIGluXG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgKE9scCBiKSA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IE9scChMaXN0Lm1hcCAoZnVuIGxpIC0+IGxvb3AgW10gW10gbGkpIGIpIGluXG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgSHRtbF9jb21tZW50IF8gYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSAtPiBsb29wIFtdIChlOjphY2N1KSB0bFxuICAgICAgICAgfCBbTkxdIHwgW0JyXSAtPiBsb29wIFtdIChlOjpOTDo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIChlOjpjcCkgYWNjdSB0bClcbiAgICAgIHwgKFJhd19ibG9jayBfIHwgSHRtbF9ibG9jayBfKSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6Y3BAYWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgKENvZGVfYmxvY2sgXyB8IEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICB8IE9sIF8gfCBVbCBfKSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgXyAtPiBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgIHwgVGV4dCBcIlxcblwiIDo6IF8gfCBQYXJhZ3JhcGggXyA6OiBfIC0+XG4gICAgICAgIGludmFsaWRfYXJnIFwiT21kX3BhcnNlci5tYWtlX3BhcmFncmFwaHNcIlxuICAgICAgfCAoTkx8QnIpIDo6IChOTHxCcikgOjogdGwgLT5cbiAgICAgICAgbGV0IHRsID0gcmVtb3ZlX2luaXRpYWxfbmV3bGluZXMgdGwgaW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggY3Agd2l0aFxuICAgICAgICAgIHwgW10gfCBbTkxdIHwgW0JyXSAtPiBsb29wIFtdIChOTDo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICAgfCBfIC0+IGxvb3AgW10gKFBhcmFncmFwaChMaXN0LnJldiBjcCk6OmFjY3UpIHRsXG4gICAgICAgIGVuZFxuICAgICAgfCBYKHgpIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4dGVuc2lvbiByZXR1cm5zIGEgYmxvY2sgYXMgZmlyc3QgZWxlbWVudCxcbiAgICAgICAgICAgdGhlbiBjb25zaWRlciB0aGUgZXh0ZW5zaW9uIGFzIGEgYmxvY2suIEhvd2V2ZXJcbiAgICAgICAgICAgZG9uJ3QgdGFrZSBpdHMgY29udGVudHMgYXMgaXQgaXMgeWV0LCB0aGUgY29udGVudHNcbiAgICAgICAgICAgb2YgdGhlIGV4dGVuc2lvbiBzaGFsbCBiZSBjb25zaWRlcmVkIGZpbmFsIGFzIGxhdGVcbiAgICAgICAgICAgYXMgcG9zc2libGUuICopXG4gICAgICAgIGJlZ2luIG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgICAgICAgfCBTb21lKHQpIC0+XG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgKCBIMSBfXG4gICAgICAgICAgICAgIHwgSDIgX1xuICAgICAgICAgICAgICB8IEgzIF9cbiAgICAgICAgICAgICAgfCBINCBfXG4gICAgICAgICAgICAgIHwgSDUgIF9cbiAgICAgICAgICAgICAgfCBINiAgX1xuICAgICAgICAgICAgICB8IFBhcmFncmFwaCAgX1xuICAgICAgICAgICAgICB8IFVsIF9cbiAgICAgICAgICAgICAgfCBPbCBfXG4gICAgICAgICAgICAgIHwgVWxwIF9cbiAgICAgICAgICAgICAgfCBPbHAgX1xuICAgICAgICAgICAgICB8IENvZGVfYmxvY2sgX1xuICAgICAgICAgICAgICB8IEhyXG4gICAgICAgICAgICAgIHwgSHRtbF9ibG9jayBfXG4gICAgICAgICAgICAgIHwgUmF3X2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBCbG9ja3F1b3RlIF9cbiAgICAgICAgICAgICAgKSA6OiBfXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjcCB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBjcCAoZTo6YWNjdSkgdGxcbiAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICBsb29wIFtdIChlOjpQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICBpblxuICAgIGxldCByZW1vdmVfd2hpdGVfY3J1bWJzIGwgPVxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IFRleHQgXCIgXCIgOjogdGxcbiAgICAgICAgfCBOTDo6dGxcbiAgICAgICAgfCBCcjo6dGxcbiAgICAgICAgICAtPlxuICAgICAgICAgIGxvb3AgdGxcbiAgICAgICAgfCBsIC0+IGxcbiAgICAgIGluXG4gICAgICBMaXN0LnJldiAobG9vcCAoTGlzdC5yZXYgbCkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGNsZWFuX3BhcmFncmFwaHMgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgY2xlYW5fcGFyYWdyYXBoc1xcblwiO1xuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gW11cbiAgICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IHRsXG4gICAgICB8IFBhcmFncmFwaChwKSA6OiB0bCAtPlxuICAgICAgICBQYXJhZ3JhcGgoY2xlYW5fcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlX2luaXRpYWxfbmV3bGluZXNcbiAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV93aGl0ZV9jcnVtYnMobm9ybWFsaXNlX21kIHApKSkpXG4gICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDEgdiA6OiB0bCAtPiBIMShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMiB2IDo6IHRsIC0+IEgyKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgzIHYgOjogdGwgLT4gSDMoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDQgdiA6OiB0bCAtPiBINChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINSB2IDo6IHRsIC0+IEg1KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg2IHYgOjogdGwgLT4gSDYoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgRW1waCB2IDo6IHRsIC0+IEVtcGgoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBCb2xkIHYgOjogdGwgLT4gQm9sZChjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IFVsIHYgOjogdGwgLT4gVWwoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgT2wgdiA6OiB0bCAtPiBPbChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbHAgdiA6OiB0bCAtPiBVbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9scCB2IDo6IHRsIC0+IE9scChMaXN0Lm1hcCBjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQmxvY2txdW90ZSB2IDo6IHRsIC0+IEJsb2NrcXVvdGUoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVcmwoaHJlZix2LHRpdGxlKSA6OiB0bCAtPiBVcmwoaHJlZiwoY2xlYW5fcGFyYWdyYXBocyB2KSx0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBUZXh0IF9cbiAgICAgIHwgQ29kZSBfXG4gICAgICB8IENvZGVfYmxvY2sgX1xuICAgICAgfCBCclxuICAgICAgfCBIclxuICAgICAgfCBOTFxuICAgICAgfCBSZWYgX1xuICAgICAgfCBJbWdfcmVmIF9cbiAgICAgIHwgUmF3IF9cbiAgICAgIHwgUmF3X2Jsb2NrIF9cbiAgICAgIHwgSHRtbCBfXG4gICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgfCBIdG1sX2NvbW1lbnQgX1xuICAgICAgfCBJbWcgX1xuICAgICAgfCBYIF8gYXMgdiA6OiB0bCAtPiB2IDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICBpblxuICAgIGxldCByID0gY2xlYW5fcGFyYWdyYXBocyhsb29wIFtdIFtdIG1kKVxuICAgIGluXG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgY2xlYW5fcGFyYWdyYXBocyAlUyAtLT4gJVNcXG4lIVwiXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCBtZClcbiAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kIHIpO1xuICAgIHJcblxuXG4gICgqKiBbYXNzZXJ0X3dlbGxfZm9ybWVkXSBpcyBhIGRldmVsb3BlcidzIGZ1bmN0aW9uIHRoYXQgaGVscHMgdG9cbiAgICAgIHRyYWNrIGJhZGx5IGNvbnN0cnVjdGVkIHRva2VuIGxpc3RzLiAgVGhpcyBmdW5jdGlvbiBoYXMgYW5cbiAgICAgIGVmZmVjdCBvbmx5IGlmIFt0cmFja2ZpeF0gaXMgW3RydWVdLiAgKilcbiAgbGV0IGFzc2VydF93ZWxsX2Zvcm1lZCAobDp0b2sgbGlzdCkgOiB1bml0ID1cbiAgICBpZiB0cmFja2ZpeCB0aGVuXG4gICAgICBsZXQgcmVjIGVxdWl2IGwxIGwyID0gbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICAgICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgICAgICB8IFRhZyBfOjp0bDEsIFRhZyBfOjp0bDItPiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPiBlMSA9IGUyICYmIGVxdWl2IHRsMSB0bDJcbiAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICBpblxuICAgICAgYXNzZXJ0KGVxdWl2IChmaXggbCkgbCk7XG4gICAgICAoKVxuXG4gICgqKiBHZW5lcmF0ZSBmYWxsYmFjayBmb3IgcmVmZXJlbmNlcy4gKilcbiAgbGV0IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgbCA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5leHRyYWN0X2ZhbGxiYWNrXFxuJSFcIjtcbiAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGFjY3VcbiAgICAgIHwgZTo6dGwgYXMgciAtPlxuICAgICAgICBpZiByID09IHJlbWFpbnMgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIGUsIHJlbWFpbnMgd2l0aFxuICAgICAgICAgIHwgQ2JyYWNrZXRzIDAsIENicmFja2V0OjpyIHdoZW4gdGwgPSByIC0+XG4gICAgICAgICAgICBsZXQgYWNjdSA9IFdvcmQgXCJdXCIgOjogYWNjdSBpblxuICAgICAgICAgICAgTGlzdC5yZXYgYWNjdVxuICAgICAgICAgIHwgQ2JyYWNrZXRzIG4sIENicmFja2V0cyBtOjpyIHdoZW4gbSArIDEgPSBuICYmIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIHRsXG4gICAgaW5cbiAgICBsZXQgYSA9IGxvb3AgW10gbCBpblxuICAgIG9iamVjdFxuICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IEwuc3RyaW5nX29mX3Rva2VucyBhXG4gICAgICBtZXRob2QgdG9fdCA9IFtUZXh0KEwuc3RyaW5nX29mX3Rva2VucyBhKV1cbiAgICBlbmRcblxuXG4gIGxldCB1bmluZGVudF9yZXYgbiBsZXhlbWVzID1cbiAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBDQUxMOiBPbWRfcGFyc2VyLnVuaW5kZW50X3JldlxcbiUhXCI7XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgY2wgPSBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB5Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKHgreSsyKTo6dGwpXG4gICAgICB8IE5ld2xpbmU6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmVzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoMSt4KTo6dGwpXG4gICAgICB8IE5ld2xpbmVzIHg6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoMSt4KTo6dGwpXG4gICAgICB8IE5ld2xpbmU6OihTcGFjZXxTcGFjZXMgXyk6Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSBjbCAoTmV3bGluZXMoMCk6OnRsKVxuXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIDAgYXMgbmwpOjooU3BhY2V8U3BhY2VzIF8gYXMgcyk6OihcbiAgICAgICAgICAoTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6XylcbiAgICAgICAgfCAoKFN0YXJ8UGx1c3xNaW51cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgICAgYXMgdGwpIGFzIGwgLT5cbiAgICAgICAgaWYgbiA9IEwubGVuZ3RoIHMgdGhlblxuICAgICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KSBbXSB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIDAgYXMgbmwpOjooU3BhY2V8U3BhY2VzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgIGxldCB4ID0gTC5sZW5ndGggcyAtIG4gaW5cbiAgICAgICAgbG9vcCAobmw6OmNsQGFjY3UpXG4gICAgICAgICAgKGlmIHggPiAwIHRoZW4gW0wubWFrZV9zcGFjZSB4XSBlbHNlIFtdKVxuICAgICAgICAgIHRsXG4gICAgICB8IE5ld2xpbmVzKF8pOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IE5ld2xpbmU6Ol8gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IChlOjpjbCkgdGxcbiAgICAgIHwgW10gYXMgbCAtPlxuICAgICAgICAoY2xAYWNjdSksIGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCBbXSwgcmlnaHQgLT4gW10sIHJpZ2h0XG4gICAgfCBsLCByaWdodCAtPlxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICBsLCByaWdodFxuXG4gIGxldCB1bmluZGVudCBuIGxleGVtZXMgPVxuICAgIGxldCBmc3QsIHNuZCA9IHVuaW5kZW50X3JldiBuIGxleGVtZXMgaW5cbiAgICBMaXN0LnJldiBmc3QsIHNuZFxuXG4gIGxldCByZWMgaXNfYmxhbmsgPSBmdW5jdGlvblxuICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT5cbiAgICAgIGlzX2JsYW5rIHRsXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgbGV0IHNlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFyOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3RhcnMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFN0YXJzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sU3Rhcjo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXJzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihTdGFyfFN0YXJzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChTdGFyfFN0YXJzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuICBsZXQgc21fdWVtcGhfb3JfYm9sZCAobjppbnQpIChsOmwpID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgYXNzZXJ0IChuPjAgJiYgbjw0KTtcbiAgICBtYXRjaFxuICAgICAgZnNwbGl0XG4gICAgICAgIH5leGNsOihmdW5jdGlvbiBOZXdsaW5lcyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSx0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyAwOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgbjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLHRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgMCBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIG4gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyBhcyB4KTo6KFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbczt4XSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IGdoX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OihXb3JkIF98TnVtYmVyIF8gYXMgdyk6OiB0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt3O3NdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cblxuICBsZXQgdWVtcGhfb3JfYm9sZCBuIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBpZiBnaF91ZW1waF9vcl9ib2xkX3N0eWxlIHRoZW5cbiAgICAgIGdoX3VlbXBoX29yX2JvbGQgbiBsXG4gICAgZWxzZVxuICAgICAgc21fdWVtcGhfb3JfYm9sZCBuIGxcblxuICBsZXQgZWF0X2JsYW5rID1cbiAgICBlYXQgKGZ1bmN0aW9uIHxTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8gLT4gdHJ1ZXwgXyAtPiBmYWxzZSlcblxuXG4gICgqIHVzZWQgYnkgdGFnX19tYXliZV9oMSBhbmQgdGFnX19tYXliZV9oMiAqKVxuICBsZXQgc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCAobDpsKSA6IChPbWRfcmVwcmVzZW50YXRpb24udG9rIGxpc3QgKiBsKSBvcHRpb24gPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIHIgbCA9XG4gICAgICAoKiBJZiB0aGVyZSdzIGEgYmFsYW5jZWQgKGNvbXBsZXRlKSBiYWNrcXVvdGUtc3RhcnRlZCBjb2RlIGJsb2NrXG4gICAgICAgICB0aGVuIGl0IHNob3VsZCBiZSBcImlnbm9yZWRcIiwgZWxzZSBpdCBtZWFucyB0aGUgbGluZSB0aGF0XG4gICAgICAgICBmb2xsb3dzIGlzIHBhcnQgb2YgYSBjb2RlIGJsb2NrLCBzbyBpdCdzIG5vdCBkZWZpbmluZyBhXG4gICAgICAgICBzZXRleHQtc3R5bGUgdGl0bGUuICopXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBkZXRlY3RfYmFsYW5jZWRfYnFzIG49JWQgcj0lUyBsPSVTXFxuJSFcIlxuICAgICAgICAgIG4gKEwuc3RyaW5nX29mX3Rva2VucyByKSAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIDA6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZXMgeDo6dGwgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgMDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZSBhcyBiKTo6dGwgd2hlbiBuID0gMSAtPlxuICAgICAgICBTb21lKExpc3QucmV2IChiOjpyKSwgdGwpXG4gICAgICB8IChCYWNrcXVvdGVzIHggYXMgYik6OnRsIHdoZW4gbiA9IHgrMiAtPlxuICAgICAgICBTb21lKExpc3QucmV2IChiOjpyKSwgdGwpXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCByID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIFtdKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIHg6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgbG9vcCAoQmFja3F1b3RlOjpiOjpyKSAoQmFja3F1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjp0bCAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBkZXRlY3RfYmFsYW5jZWRfYnFzIDEgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgQmFja3F1b3Rlcyh4KTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAoeCsyKSBbXSB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKGJsLHRsKSAtPiBsb29wIChibEByKSB0bFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgICAgfCBOZXdsaW5lOjooRXF1YWx8RXF1YWxzIF98TWludXN8TWludXNzIF8pOjp0bCAtPlxuICAgICAgICBpZiByID0gW10gdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUoTGlzdC5yZXYgciwgdGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5zZXRleHRfdGl0bGUgaXMgd3JvbmdseSB1c2VkIVxcbiUhXCI7XG4gICAgICAgIE5vbmVcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cikgdGxcbiAgICBpblxuICAgIGlmIG1hdGNoIGwgd2l0aFxuICAgICAgfCBMZXNzdGhhbjo6V29yZCBfOjpfIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIG1haW5fbG9vcCBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IChIdG1sX2Jsb2NrIF8gfCBDb2RlX2Jsb2NrIF8gfCBSYXdfYmxvY2sgXyk6Ol8gLT5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCByZXN1bHQgPSBsb29wIFtdIGwgaW5cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIHNldGV4dF90aXRsZSBsPSVTIHJlc3VsdD0lUywlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpXG4gICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSAoeCx0bCkgLT4gTC5zdHJpbmdfb2ZfdG9rZW5zIHgpXG4gICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSAoeCx0bCkgLT4gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsKTtcbiAgICAgIHJlc3VsdFxuXG4gIGxldCB0YWdfX21heWJlX2gxIChtYWluX2xvb3A6bWFpbl9sb29wKSA9XG4gICAgVGFnKFwidGFnX19tYXliZV9oMVwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9XG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSh0aXRsZSwgdGwpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBIMShtYWluX2xvb3AgW10gW10gdGl0bGUpIGluXG4gICAgICAgICAgICAgICAgICBTb21lKCh0aXRsZTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogT21kX3BhcnNlci50YWdfX21heWJlX2gxIGlzIHdyb25nbHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIChwPSVTKSFcXG5cIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBwKTtcbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgIGVuZFxuICAgICAgKVxuXG4gIGxldCB0YWdfX21heWJlX2gyIChtYWluX2xvb3A6bWFpbl9sb29wKSA9XG4gICAgVGFnKFwidGFnX19tYXliZV9oMlwiLFxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgbCA9XG4gICAgICAgICAgICBtYXRjaCBwIHdpdGhcbiAgICAgICAgICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBzZXRleHRfdGl0bGUgbWFpbl9sb29wIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgU29tZSh0aXRsZSwgdGwpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBIMihtYWluX2xvb3AgW10gW10gdGl0bGUpIGluXG4gICAgICAgICAgICAgICAgICBTb21lKCh0aXRsZTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogT21kX3BhcnNlci50YWdfX21heWJlX2gyIGlzIHdyb25nbHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIChwPSVTKSFcXG5cIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBwKTtcbiAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgIGVuZFxuICAgICAgKVxuXG4gIGxldCB0YWdfX21kIG1kID0gKCogW21kXSBzaG91bGQgYmUgaW4gcmV2ZXJzZSAqKVxuICAgIFRhZyhcInRhZ19fbWRcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBTb21lKG1kQHIsIFtdLCBsKVxuICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgIGVuZFxuICAgICAgIClcblxuICAoKiBMZXQncyB0YWcgdGhlIGxpbmVzIHRoYXQgKm1pZ2h0KiBiZSB0aXRsZXMgdXNpbmcgc2V0ZXh0LXN0eWxlLlxuICAgICBcIm1pZ2h0XCIgYmVjYXVzZSBpZiB0aGV5IGFyZSwgZm9yIGluc3RhbmNlLCBpbiBhIGNvZGUgc2VjdGlvbixcbiAgICAgdGhlbiB0aGV5IGFyZSBub3QgdGl0bGVzIGF0IGFsbC4gKilcbiAgbGV0IHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBwbCByZXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSB8IFtOZXdsaW5lfE5ld2xpbmVzIF9dIC0+XG4gICAgICAgIHBsQHJlc1xuICAgICAgfCAoTmV3bGluZSBhcyBlMSk6OihFcXVhbHxFcXVhbHMgXyBhcyBlMik6OnRsIC0+ICgqIG1pZ2h0IGJlIGEgSDEuICopXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdF9yZXZcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xFcXVhbHxFcXVhbHMgXyk6OnRsIC0+IENvbnRpbnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IFNwbGl0KFtdLFtdKVxuICAgICAgICAgICAgICAgICAgfCBfOjpfIGFzIGwgLT4gU3BsaXQoW10sIGwpKVxuICAgICAgICAgICAgICB0bFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUocmxlZnQsICgoW118KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8pIGFzIHJpZ2h0KSkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHRhZ19fbWF5YmVfaDEgbWFpbl9sb29wOjpyZXMpKSByaWdodFxuICAgICAgICAgIHwgU29tZShybGVmdCwgcmlnaHQpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEByZXMpKSByaWdodFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAoZTI6OmUxOjpwbEByZXMpIFtdXG4gICAgICAgIGVuZFxuICAgICAgfCAoTmV3bGluZSBhcyBlMSk6OihNaW51c3xNaW51c3MgXyBhcyBlMik6OnRsIC0+ICgqIG1pZ2h0IGJlIGEgSDIuICopXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdF9yZXZcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xNaW51c3xNaW51c3MgXyk6OnRsIC0+IENvbnRpbnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IFNwbGl0KFtdLFtdKVxuICAgICAgICAgICAgICAgICAgfCBfOjpfIGFzIGwgLT4gU3BsaXQoW10sIGwpKVxuICAgICAgICAgICAgICB0bFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUocmxlZnQsICgoW118KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8pIGFzIHJpZ2h0KSkgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKHJsZWZ0QChlMjo6ZTE6OnBsQHRhZ19fbWF5YmVfaDIgbWFpbl9sb29wOjpyZXMpKSByaWdodFxuICAgICAgICAgIHwgU29tZShybGVmdCwgcmlnaHQpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEByZXMpKSByaWdodFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAoZTI6OmUxOjpwbEByZXMpIFtdXG4gICAgICAgIGVuZFxuICAgICAgfCAoTmV3bGluZSB8IE5ld2xpbmVzIF8gYXMgZTEpOjp0bCAtPlxuICAgICAgICBsb29wIFtdIChlMTo6cGxAcmVzKSB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjpwbCkgcmVzIHRsXG4gICAgaW5cbiAgICBMaXN0LnJldiAobG9vcCBbXSBbXSBsZXhlbWVzKVxuXG5cbiAgbGV0IGhyX20gbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmVzIF98TmV3bGluZSk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IE1pbnVzOjp0bCAtPlxuICAgICAgICBsb29wIChuKzEpIHRsXG4gICAgICB8IE1pbnVzcyB4Ojp0bCAtPlxuICAgICAgICBsb29wICh4KzIrbikgdGxcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBOb25lXG4gICAgaW4gbG9vcCAwIGxcblxuICBsZXQgaHJfcyBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGxvb3AgbiA9IGZ1bmN0aW9uXG4gICAgICB8ICgoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwpIHwgKFtdIGFzIHRsKSAtPlxuICAgICAgICBpZiBuID49IDMgdGhlbiBTb21lIHRsIGVsc2UgTm9uZVxuICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBsb29wIG4gdGxcbiAgICAgIHwgU3Rhcjo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBTdGFycyB4Ojp0bCAtPlxuICAgICAgICBsb29wICh4KzIrbikgdGxcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBOb25lXG4gICAgaW4gbG9vcCAwIGxcblxuICBsZXQgaHIgbCA9XG4gICAgbWF0Y2ggaHJfbSBsIHdpdGhcbiAgICB8IE5vbmUgLT4gaHJfcyBsXG4gICAgfCBTb21lIF8gYXMgdGwgLT4gdGxcblxuICAoKiogW2Jjb2RlXSBwYXJzZXMgY29kZSB0aGF0J3MgZGVsaW1pdGVkIGJ5IGJhY2txdW90ZShzKSAqKVxuICBsZXQgYmNvZGUgPyhkZWZhdWx0X2xhbmc9ZGVmYXVsdF9sYW5nKSByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IGUsIHRsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgLT4gZSwgdGxcbiAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk9tZF9wYXJzZXIuYmNvZGUgaXMgd3JvbmdseSBjYWxsZWRcIlxuICAgIGluXG4gICAgbGV0IHJlYyBjb2RlX2Jsb2NrIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgaWYgZSA9IEJhY2txdW90ZSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjphY2N1IC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfYmxvY2sgKEJhY2txdW90ZTo6YWNjdSkgdGxcbiAgICAgIHwgKEJhY2txdW90ZXMgbiBhcyBiKTo6dGwgLT5cbiAgICAgICAgaWYgZSA9IGIgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChiOjphY2N1KSB0bFxuICAgICAgfCBUYWcoXywgXyk6OnRsIC0+XG4gICAgICAgIGNvZGVfYmxvY2sgYWNjdSB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbWF0Y2ggY29kZV9ibG9jayBbXSB0bCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUoY2IsIGwpIC0+XG4gICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gKE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIGNiXG4gICAgICAmJiAobWF0Y2ggcCB3aXRoIFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgKG1hdGNoIGUgd2l0aCBCYWNrcXVvdGVzIG4gd2hlbiBuID4gMCAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgIHRoZW5cbiAgICAgICAgbWF0Y2ggY2Igd2l0aFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmUgOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRsIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IFdvcmQgbGFuZyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IE5ld2xpbmVzIDAgOjogdGxcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zKE5ld2xpbmU6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyBuIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIG4gOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyAoTmV3bGluZXMobi0xKTo6dGwpIGluXG4gICAgICAgICAgU29tZShDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIGNvZGUpIDo6IHIsIFtCYWNrcXVvdGVdLCBsKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2xlYW5fYmNvZGUgcyA9XG4gICAgICAgICAgbGV0IHJlYyBsb29wMSBpID1cbiAgICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAwXG4gICAgICAgICAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAgICAgfCAnICcgLT4gbG9vcDEoaSsxKVxuICAgICAgICAgICAgICB8IF8gLT4gaVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wMiBpID1cbiAgICAgICAgICAgIGlmIGkgPSAtMSB0aGVuIFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AyKGktMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGkrMVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggbG9vcDEgMCwgbG9vcDIgKFN0cmluZy5sZW5ndGggcyAtIDEpIHdpdGhcbiAgICAgICAgICB8IDAsIG4gd2hlbiBuID0gU3RyaW5nLmxlbmd0aCBzIC0gMSAtPiBzXG4gICAgICAgICAgfCBpLCBuIC0+IFN0cmluZy5zdWIgcyBpIChuLWkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb2RlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGNiIGluXG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgY2xlYW5fYmNvZGUgJVMgPT4gJVNcXG4lIVwiIGNvZGUgKGNsZWFuX2Jjb2RlIGNvZGUpO1xuICAgICAgICBTb21lKENvZGUoZGVmYXVsdF9sYW5nLCBjbGVhbl9iY29kZSBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcblxuXG4gIGV4Y2VwdGlvbiBOTF9leGNlcHRpb25cbiAgZXhjZXB0aW9uIFByZW1hdHVyZV9lbmRpbmdcblxuICAoKiAhIURPIE5PVCBERUxFVEUgVEhJUyEhXG4gICAgIFRoZSBwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIHRoZSBnZW5lcmF0ZWQgcGFydCB0aGF0IGZvbGxvd3MgcmlnaHQgYWZ0ZXIuXG4gICAgIExpc3QuaXRlciAoZnVuIChhLGIsYykgLT5cbiAgICAgcHJpbnRfZW5kbGluZSAoXCJsZXQgcmVhZF91bnRpbF9cIl5hXlwiID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeYl5cIiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeYl5cInMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgbiAoXCJeYl5cIjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXCJcbiAgICAgIF4oaWYgYzw+XCJcIiB0aGVuIFwiXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeY15cIiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoXCJeY15cInMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoXCJeY15cIjo6YWNjdSkgbiAoXCJeY15cIjo6dGwpXG4gICAgICB8IFwiXmNeXCIgYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBcIl5jXlwicyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICBcIiBlbHNlIFwiXCIpXlxuICAgICBcIiAgICB8IFwiXmJeXCIgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IFwiXmJeXCJzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFwiXmJeXCI6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChcIl5iXlwiOjphY2N1KSAobi0xKSAoXCJeYl5cIjo6dGwpXG4gICAgICB8IFwiXmJeXCJzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFwiXmJeXCJzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBcIl5iXlwiOjphY2N1IC0+IFwiXmJeXCJzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBcIl5iXlwicyB4OjphY2N1IC0+IFwiXmJeXCJzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gXCJeYl5cIjo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoXCJeYl5cInMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFxcXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfXCJeYV5cIiAlUyBicT0lYiBub19ubD0lYlxcXFxuJSFcXFwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cIikpXG5cbiAgICAgWyBcImd0XCIsIFwiR3JlYXRlcnRoYW5cIiwgXCJMZXNzdGhhblwiO1xuICAgICBcImx0XCIsIFwiTGVzc3RoYW5cIiwgXCJcIjtcbiAgICAgXCJjcGFyZW50aFwiLCBcIkNwYXJlbnRoZXNpc1wiLCBcIk9wYXJlbnRoZXNpc1wiO1xuICAgICBcIm9wYXJlbnRoXCIsIFwiT3BhcmVudGhlc2lzXCIsIFwiXCI7XG4gICAgIFwiZHFcIiwgXCJEb3VibGVxdW90ZVwiLCBcIlwiO1xuICAgICBcInFcIiwgXCJRdW90ZVwiLCBcIlwiO1xuICAgICBcIm9icmFja2V0XCIsIFwiT2JyYWNrZXRcIiwgXCJcIjtcbiAgICAgXCJjYnJhY2tldFwiLCBcIkNicmFja2V0XCIsIFwiT2JyYWNrZXRcIjtcbiAgICAgXCJzcGFjZVwiLCBcIlNwYWNlXCIsIFwiXCI7XG4gICAgIF1cbiAgKilcblxuICAoKiBiZWdpbiBnZW5lcmF0ZWQgcGFydCAqKVxuXG5sZXQgcmVhZF91bnRpbF9ndCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIG4gKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKExlc3N0aGFuOjphY2N1KSBuIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IEdyZWF0ZXJ0aGFuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBHcmVhdGVydGhhbnMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgR3JlYXRlcnRoYW46OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChHcmVhdGVydGhhbjo6YWNjdSkgKG4tMSkgKEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFucyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW46OmFjY3UgLT4gR3JlYXRlcnRoYW5zKDApOjphY2N1XG4gICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgeDo6YWNjdSAtPiBHcmVhdGVydGhhbnMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBHcmVhdGVydGhhbjo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoR3JlYXRlcnRoYW5zKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2d0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2x0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IExlc3N0aGFuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBMZXNzdGhhbnMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgTGVzc3RoYW46OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgKG4tMSkgKExlc3N0aGFuOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFucyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgTGVzc3RoYW46OmFjY3UgLT4gTGVzc3RoYW5zKDApOjphY2N1XG4gICAgICAgICAgICAgfCBMZXNzdGhhbnMgeDo6YWNjdSAtPiBMZXNzdGhhbnMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBMZXNzdGhhbjo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoTGVzc3RoYW5zKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2x0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2NwYXJlbnRoID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKENwYXJlbnRoZXNpczo6YWNjdSkgbiAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENwYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChDcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENwYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IENwYXJlbnRoZXNpczo6YWNjdSAtPiBDcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IENwYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIG4gKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpczo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgKG4tMSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IE9wYXJlbnRoZXNpc3MgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT3BhcmVudGhlc2lzcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgT3BhcmVudGhlc2lzOjphY2N1IC0+IE9wYXJlbnRoZXNpc3MoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpc3MgeDo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT3BhcmVudGhlc2lzOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChPcGFyZW50aGVzaXNzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29wYXJlbnRoICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2RxID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoRG91YmxlcXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChEb3VibGVxdW90ZTo6YWNjdSkgbiAoRG91YmxlcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IERvdWJsZXF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgRG91YmxlcXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChEb3VibGVxdW90ZTo6YWNjdSkgKG4tMSkgKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OmFjY3UgLT4gRG91YmxlcXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgeDo6YWNjdSAtPiBEb3VibGVxdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBEb3VibGVxdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoRG91YmxlcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2RxICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3EgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChRdW90ZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGVzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFF1b3RlOjphY2N1KSBuIChRdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgUXVvdGUgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IFF1b3RlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBRdW90ZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFF1b3RlOjphY2N1KSAobi0xKSAoUXVvdGU6OnRsKVxuICAgICAgfCBRdW90ZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGVzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBRdW90ZTo6YWNjdSAtPiBRdW90ZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFF1b3RlcyB4OjphY2N1IC0+IFF1b3Rlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFF1b3RlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChRdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3EgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX29icmFja2V0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgbiAoT2JyYWNrZXQ6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBPYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgT2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPYnJhY2tldDo6YWNjdSkgKG4tMSkgKE9icmFja2V0Ojp0bClcbiAgICAgIHwgT2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgT2JyYWNrZXQ6OmFjY3UgLT4gT2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPYnJhY2tldHMgeDo6YWNjdSAtPiBPYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBPYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX29icmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX2NicmFja2V0ID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXQgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0cyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgbiAoQ2JyYWNrZXQ6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgT2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobisxKSB0bFxuICAgICAgfCBPYnJhY2tldHMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgICAgIHwgQ2JyYWNrZXQgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENicmFja2V0cyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDYnJhY2tldDo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKENicmFja2V0OjphY2N1KSAobi0xKSAoQ2JyYWNrZXQ6OnRsKVxuICAgICAgfCBDYnJhY2tldHMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXRzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDYnJhY2tldDo6YWNjdSAtPiBDYnJhY2tldHMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IENicmFja2V0cyB4OjphY2N1IC0+IENicmFja2V0cyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IENicmFja2V0OjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChDYnJhY2tldHMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfc3BhY2UgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChTcGFjZSBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2VzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFNwYWNlOjphY2N1KSBuIChTcGFjZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsICAgIHwgU3BhY2UgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IFNwYWNlcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBTcGFjZTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKFNwYWNlOjphY2N1KSAobi0xKSAoU3BhY2U6OnRsKVxuICAgICAgfCBTcGFjZXMgeCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2VzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBTcGFjZTo6YWNjdSAtPiBTcGFjZXMoMCk6OmFjY3VcbiAgICAgICAgICAgICB8IFNwYWNlcyB4OjphY2N1IC0+IFNwYWNlcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFNwYWNlOjphY2N1KVxuICAgICAgICAgICAgKG4tMSlcbiAgICAgICAgICAgIChTcGFjZXMoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfc3BhY2UgJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcbiAgKCogL2VuZCBnZW5lcmF0ZWQgcGFydCAqKVxuXG4gIGxldCByZWFkX3VudGlsX25ld2xpbmUgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCAoKEJhY2tzbGFzaCBhcyBhKSkgOjogKChOZXdsaW5lIGFzIGIpKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiIDo6IGEgOjogYWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogTmV3bGluZXMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lIDo6IEJhY2tzbGFzaCA6OiBhY2N1KSBuIChOZXdsaW5lIDo6IHRsKVxuICAgICAgfCAoKEJhY2tzbGFzaHMgMCBhcyBlKSkgOjogdGwgLT4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICB8ICgoQmFja3NsYXNocyB4IGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiAoeCBtb2QgMikgPSAwXG4gICAgICAgIHRoZW4gbG9vcCAoZSA6OiBhY2N1KSBuIHRsXG4gICAgICAgIGVsc2UgbG9vcCAoKEJhY2tzbGFzaHMgKHggLSAxKSkgOjogYWNjdSkgbiAoQmFja3NsYXNoIDo6IHRsKVxuICAgICAgfCAoKE5ld2xpbmUgYXMgZSkpIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgdGwpIGVsc2UgbG9vcCAoZSA6OiBhY2N1KSAobiAtIDEpIHRsXG4gICAgICB8IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDBcbiAgICAgICAgdGhlbiAoKExpc3QucmV2IGFjY3UpLCAoTmV3bGluZSA6OiB0bCkpXG4gICAgICAgIGVsc2UgbG9vcCAoTmV3bGluZSA6OiBhY2N1KSAobiAtIDEpIChOZXdsaW5lIDo6IHRsKVxuICAgICAgfCBOZXdsaW5lcyBuIDo6IHRsIC0+ICgoTGlzdC5yZXYgYWNjdSksICgoTmV3bGluZXMgKG4gLSAxKSkgOjogdGwpKVxuICAgICAgfCBlIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW4gbG9vcCBbXSAwIGxcblxuICAoKiBIMSwgSDIsIEgzLCAuLi4gKilcbiAgbGV0IHJlYWRfdGl0bGUgKG1haW5fbG9vcDptYWluX2xvb3ApIG4gciBfcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgbGV0IHRpdGxlLCByZXN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYWNrc2xhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNoOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaHMobik6Okhhc2g6OnRsIHdoZW4gbiBtb2QgMiA9IDEgLT5cbiAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2hzKG4tMSk6OmFjY3UpIHRsXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNocyhoKTo6dGwgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICAgICAgICB8IFtdXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfE5ld2xpbmVzIF8pOjpfXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNoOjphY2N1KSB0bFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IEJhY2tzbGFzaHMobik6Okhhc2hzKGgpOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2hzKG4pOjphY2N1KVxuICAgICAgICAgICAgICAgICgoaWYgaCA9IDAgdGhlbiBIYXNoIGVsc2UgSGFzaHMoaC0xKSk6OnRsKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGxvb3AgKEhhc2hzKGgpOjpCYWNrc2xhc2hzKG4pOjphY2N1KSB0bFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKEhhc2h8SGFzaHMgXykgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChbXSBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKEhhc2h8SGFzaHMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoW10gYXMgbCkgLT5cbiAgICAgICAgICBtYWluX2xvb3AgW10gW10gKExpc3QucmV2IGFjY3UpLCBsXG4gICAgICAgIHwgW0hhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgSGFzaHxIYXNocyBfXVxuICAgICAgICB8IFsoU3BhY2V8U3BhY2VzIF8pOyAoSGFzaHxIYXNocyBfKTsgKFNwYWNlfFNwYWNlcyBfKV0gLT5cbiAgICAgICAgICBtYWluX2xvb3AgW10gW10gKExpc3QucmV2IGFjY3UpLCBbXVxuICAgICAgICB8IHg6OnRsIC0+XG4gICAgICAgICAgbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIGluXG4gICAgICBsb29wIFtdIGxleGVtZXNcbiAgICBpblxuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgMSAtPiBTb21lKEgxIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDIgLT4gU29tZShIMiB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAzIC0+IFNvbWUoSDMgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNCAtPiBTb21lKEg0IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDUgLT4gU29tZShINSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA2IC0+IFNvbWUoSDYgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcCBsID1cbiAgICBtYXRjaCBleHRlbnNpb25zIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IF8gLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKGZ1biBmIC0+IGYjcGFyc2VyX2V4dGVuc2lvbiByIHAgbClcbiAgICAgICAgICB8IFNvbWUobnIsIG5wLCBubCkgYXMgZSAtPlxuICAgICAgICAgICAgKGZ1biBmIC0+IG1hdGNoIGYjcGFyc2VyX2V4dGVuc2lvbiBuciBucCBubCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gZVxuICAgICAgICAgICAgICAgfCBTb21lIF8gYXMgayAtPiBrKVxuICAgICAgICApXG4gICAgICAgIE5vbmVcbiAgICAgICAgZXh0ZW5zaW9uc1xuXG4gICgqIGJsb2NrcXVvdGVzICopXG4gIGxldCBlbWFpbHN0eWxlX3F1b3RpbmcgKG1haW5fbG9vcDptYWluX2xvb3ApIHIgX3AgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgbGV0IHJlYyBsb29wIGJsb2NrIGNsID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjooTmV3bGluZTo6XyBhcyB0bCkgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZTo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZTo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgKCogbXVsdGkgcGFyYWdyYXBoIGJsb2NrcXVvdGVzIHdpdGggZW1wdHkgbGluZXMgKilcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lcyAwOjpjbEBibG9jaykgW10gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChOZXdsaW5lcyAwOjpjbEBibG9jaykgW1NwYWNlXSB0bFxuICAgICAgfCBOZXdsaW5lcyAwOjpHcmVhdGVydGhhbjo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICBsb29wIChOZXdsaW5lcyAwOjpjbEBibG9jaykgW1NwYWNlcyhuLTEpXSB0bFxuXG4gICAgICB8IChOZXdsaW5lcyBfOjpfIGFzIGwpIHwgKFtdIGFzIGwpIC0+IGZpeChMaXN0LnJldihjbEBibG9jaykpLCBsXG4gICAgICB8IGU6OnRsIC0+IGxvb3AgYmxvY2sgKGU6OmNsKSB0bFxuICAgIGluXG4gICAgbWF0Y2ggbG9vcCBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpibG9jaywgdGwgLT5cbiAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nICVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgYmxvY2spO1xuICAgICAgU29tZSgoQmxvY2txdW90ZShtYWluX2xvb3AgW10gW10gYmxvY2spOjpyKSwgW05ld2xpbmVdLCB0bClcbiAgICB8IF8gLT5cbiAgICAgIE5vbmVcblxuXG4gICgqIG1heWJlIGEgcmVmZXJlbmNlICopXG4gIGxldCBtYXliZV9yZWZlcmVuY2UgKG1haW5fbG9vcDptYWluX2xvb3ApIHJjIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB3ZSBrbm93IGl0J3Mgbm90IGEgbGluayBhbHRob3VnaFxuICAgICAgIGl0IHN0YXJ0ZWQgd2l0aCBhICdbJyAqKVxuICAgICgqIFNvIGl0IGNvdWxkIGJlIGEgcmVmZXJlbmNlIG9yIGEgbGluayBkZWZpbml0aW9uLiAqKVxuICAgIGxldCByZWMgbWF5YmVfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgYmxhbmssIHJlbWFpbnMgPSByZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHJlbWFpbnMgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHVud2FudGVkIGNoYXJhY3RlcnMgYmV0d2VlbiBDQiBhbmQgT0IuICopXG4gICAgICBpZiBlYXQgKGxldCBmbGFnID0gcmVmIHRydWUgaW5cbiAgICAgICAgICAgICAgZnVuY3Rpb24gKCogYWxsb3cgb25seSBhIHNwYWNlLCBtdWx0aXBsZSBzcGFjZXMsIG9yIGEgbmV3bGluZSAqKVxuICAgICAgICAgICAgICB8IE5ld2xpbmUgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSAtPiAhZmxhZyAmJiAoZmxhZyA6PSBmYWxzZTsgdHJ1ZSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSBibGFuayA8PiBbXSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmcgKCogPC0tIG5vdCBhIHJlZ3VsYXIgcmVmZXJlbmNlICopXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgcmVtYWlucyB3aXRoXG4gICAgICAgIHwgW10sIHJlbWFpbnMgLT5cbiAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgdGV4dCBpbiAoKiBpbXBsaWNpdCBhbmNob3IgKilcbiAgICAgICAgICBTb21lKCgoUmVmKHJjLCBpZCwgaWQsIGZhbGxiYWNrKSk6OnIpLCBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgICAgICB8IGlkLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgTC5zdHJpbmdfb2ZfdG9rZW5zIGlkLFxuICAgICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQsIGZhbGxiYWNrKSk6OnIpLFxuICAgICAgICAgICAgICAgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfbm9ucmVndWxhcl9yZWYgbCA9XG4gICAgICBsZXQgdGV4dCwgcmVtYWlucyA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgbCBpblxuICAgICAgKCogY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgaWYgKHRyeSBpZ25vcmUocmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSB0ZXh0KTsgdHJ1ZVxuICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBmYWxzZSkgdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nOyAoKiA8LS0gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICBTb21lKCgoUmVmKHJjLCBpZCwgaWQsIGZhbGxiYWNrKSk6OnIpLCBbQ2JyYWNrZXRdLCByZW1haW5zKVxuICAgIGluXG4gICAgbGV0IHJlYyBtYXliZV9kZWYgbCA9XG4gICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgd2l0aFxuICAgICAgfCBfLCBbXSAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICB8IGlkLCAoQ29sb246OihTcGFjZXxTcGFjZXMgXyk6OnJlbWFpbnMpXG4gICAgICB8IGlkLCAoQ29sb246OnJlbWFpbnMpIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXyk6OiBfIGFzIGwgLT4gU3BsaXQoW10sIGwpXG4gICAgICAgICAgICAgICAgICB8IGU6OnRsIC0+IENvbnRpbnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IFNwbGl0KFtdLFtdKSlcbiAgICAgICAgICAgICAgcmVtYWluc1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgfCBTb21lKFtdLCBfKSAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgfCBTb21lKHVybCwgcmVtYWlucykgLT5cbiAgICAgICAgICAgIGxldCB0aXRsZSwgcmVtYWlucyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgZWF0XG4gICAgICAgICAgICAgICAgICAoZnVuY3Rpb24gfCAoU3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfKSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgcmVtYWluc1xuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzKDApOjp0bCAtPiBbXSwgdGxcbiAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IFF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfcSB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6dGwtPiByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIHRsXG4gICAgICAgICAgICAgIHwgbCAtPiBbXSwgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIHVybCA+IDIgJiYgdXJsLlswXSA9ICc8J1xuICAgICAgICAgICAgICAgICAmJiB1cmwuW1N0cmluZy5sZW5ndGggdXJsIC0gMV0gPSAnPicgdGhlblxuICAgICAgICAgICAgICAgIFN0cmluZy5zdWIgdXJsIDEgKFN0cmluZy5sZW5ndGggdXJsIC0gMilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJjI2FkZF9yZWYgKEwuc3RyaW5nX29mX3Rva2VucyBpZCkgKEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSkgdXJsO1xuICAgICAgICAgICAgU29tZShyLCBbTmV3bGluZV0sIHJlbWFpbnMpXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICBpblxuICAgIHRyeVxuICAgICAgbWF5YmVfcmVmIGxcbiAgICB3aXRoIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgdHJ5XG4gICAgICAgIG1heWJlX2RlZiBsXG4gICAgICB3aXRoXG4gICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgbWF5YmVfbm9ucmVndWxhcl9yZWYgbFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgIE5vbmVcblxuXG4gICgqKiBtYXliZSBhIGxpbmsgKilcbiAgbGV0IG1heWJlX2xpbmsgKG1haW5fbG9vcDptYWluX2xvb3ApIHIgX3AgbCA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rXFxuXCI7XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYWRfdXJsIG5hbWUgbCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSAjIG1heWJlX2xpbms+cmVhZF91cmwgJVNcXG5cIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgdHJ5XG4gICAgICAgIGxldCBsX2NwLCByX2NwID1cbiAgICAgICAgICByZWFkX3VudGlsX2NwYXJlbnRoIH5ub19ubDp0cnVlIH5icTpmYWxzZSBsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbF9jcD0lUyByX2NwPSVTXFxuJSFcIlxuICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbF9jcClcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfY3ApO1xuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgbF9kcSwgcl9kcSA9XG4gICAgICAgICAgICByZWFkX3VudGlsX2RxIH5ub19ubDp0cnVlIH5icTpmYWxzZSBsXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfZHE9JVMgcl9kcT0lU1xcbiUhXCJcbiAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbF9kcSlcbiAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcl9kcSk7XG4gICAgICAgICAgKCogbWF5YmUgdGl0bGUgKilcbiAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBsX2NwID4gTGlzdC5sZW5ndGggbF9kcSB0aGVuICgqIHRpdGxlICopXG4gICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAgICAgbWF0Y2ggTGlzdC5yZXYgbF9kcSB3aXRoXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgdGwpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgbF9kcVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUsIHJlc3QgPSByZWFkX3VudGlsX2RxIH5ub19ubDpmYWxzZSB+YnE6ZmFsc2Ugcl9kcSBpblxuICAgICAgICAgICAgICBsZXQgcmVzdCA9IHNuZChyZWFkX3VudGlsX2NwYXJlbnRoIHJlc3QpIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBTb21lKFVybCh1cmwsIG5hbWUsIHRpdGxlKSA6OiByLCBbQ3BhcmVudGhlc2lzXSwgcmVzdClcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2UgKCogbm8gdGl0bGUgKilcbiAgICAgICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+ICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1heWJlX2xpbmsgPj4gbm8gdGl0bGVcXG4lIVwiO1xuICAgICAgICAgICAgbGV0IHVybCA9IG1hdGNoIExpc3QucmV2IGxfY3Agd2l0aFxuICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjp0bFxuICAgICAgICAgICAgICB8IChOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGwgLT4gTGlzdC5yZXYgdGxcbiAgICAgICAgICAgICAgfCBfIC0+IGxfY3BcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlc3QgPSBbXSwgcl9jcCBpblxuICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgZW5kXG4gICAgICB3aXRoIE5MX2V4Y2VwdGlvbiB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHJlYWRfbmFtZSBsID1cbiAgICAgICgqIGl0J3Mgbm90IHJlYWxseSB0aGUgXCJuYW1lXCIgb2YgYSBVUkwgYnV0IHdoYXRcbiAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBpbm5lciBIVE1MIG9mIGFuIEhUTUwgJ0EnIHRhZyAqKVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPiByZWFkX25hbWVcXG5cIjtcbiAgICAgIHRyeVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgd2l0aFxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXM6OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoZWF0X2JsYW5rIHRsKVxuICAgICAgICB8IG5hbWUsIChPcGFyZW50aGVzaXNzIDA6OnRsKSAtPlxuICAgICAgICAgIHJlYWRfdXJsIChtYWluX2xvb3AgW10gW09icmFja2V0XSBuYW1lKSAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyBuOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpc3Mobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyB8IE5MX2V4Y2VwdGlvbiAtPiBOb25lXG4gICAgaW5cbiAgICByZWFkX25hbWUgbFxuXG5cbiAgbGV0IGhhc19wYXJhZ3JhcGhzIGwgPVxuICAgICgqIEhhcyBhdCBsZWFzdCAyIGNvbnNlY3V0aXZlIG5ld2xpbmVzLiAqKVxuICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBOZXdsaW5lcyBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsXG5cbiAgbGV0IHBhcnNlX2xpc3QgKG1haW5fbG9vcDptYWluX2xvb3ApIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgZXByaW50ZiBcIihPTUQpIHBhcnNlX2xpc3Qgcj0oJXMpIHA9KCVzKSBsPSglcylcXG4lIVwiXG4gICAgICAgIFwiXCIgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kIChMaXN0LnJldiByKSkgKilcbiAgICAgICAgXCJcIiAoKiAoZGVzdHJpbmdfb2ZfdGwgcCkgKilcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIH5saW1pdDo0MCBsKTtcbiAgICBlbmQ7XG4gICAgbGV0IG1vZHVsZSBVTyA9IHN0cnVjdCB0eXBlIG9yZGVyZWQgPSBPIHwgVSBlbmQgaW5cbiAgICBsZXQgb3BlbiBVTyBpblxuICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0OiBsPSglcylcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICBsZXQgZW5kX29mX2l0ZW0gKGluZGVudDppbnQpIGwgOiB0b2sgc3BsaXRfYWN0aW9uICA9IG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBTcGxpdChbXSxbXSlcbiAgICAgIHwgTmV3bGluZXMgMCA6OiAoKFNwYWNlcyBuKSA6OiBHcmVhdGVydGhhbiA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogdGxcbiAgICAgICAgICAgICAgICAgICAgICAgYXMgcykgLT5cbiAgICAgICAgYXNzZXJ0KG4+PTApO1xuICAgICAgICBpZiBuKzIgPSBpbmRlbnQrNCB0aGVuICgqIGJsb2NrcXVvdGUgKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAobisyKSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlIGlmIG4rMiA+PSBpbmRlbnQrOCB0aGVuICgqIGNvZGUgaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZXMgMCA6OiAoU3BhY2VzIG4gOjogdGwgYXMgcykgLT5cbiAgICAgICAgYXNzZXJ0KG4+PTApO1xuICAgICAgICBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMCk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmU6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlIGlmIG4rMiA+PSBpbmRlbnQrNCB0aGVuICgqIG5ldyBwYXJhZ3JhcGggaW5zaWRlIGl0ZW0gKilcbiAgICAgICAgICBtYXRjaCB1bmluZGVudCAoaW5kZW50KzQpIChOZXdsaW5lOjpzKSB3aXRoXG4gICAgICAgICAgfCBOZXdsaW5lOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcygxKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgTmV3bGluZXMgbjo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMobisyKTo6YmxvY2spLCByZXN0KVxuICAgICAgICAgIHwgYmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTmV3bGluZXMgMDo6YmxvY2ssIHJlc3QpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgKE5ld2xpbmVzIF8pIDo6IF8gLT4gKCogbiA+IDAgKilcbiAgICAgICAgKCogRW5kIG9mIGl0ZW0sIHN0b3AgKilcbiAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmUgOjpcbiAgICAgICAgKFxuICAgICAgICAgICgoU3BhY2V8U3BhY2VzIF8pIDo6IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXyk6OiBfKVxuICAgICAgICB8ICgoU3BhY2V8U3BhY2VzIF8pIDo6IE51bWJlciBfIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8pXG4gICAgICAgIHwgKChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXyk6OiBfKVxuICAgICAgICB8IChOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICAgIGFzIHRsKSAtPlxuICAgICAgICBTcGxpdChbTmV3bGluZV0sIHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSB8IFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGV4YWN0bHkgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcyxcbiAgICAgICAgICAgc28gd2UgcmV3cml0ZSB0aGUgaGVhZCBvZiB0aGUgbGV4aW5nIHN0cmVhbS4gKilcbiAgICAgICAgQ29udGludWVfd2l0aChbXSwgTmV3bGluZXMgMCA6OiB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogKE5ld2xpbmVzIF8pIDo6IF8gLT5cbiAgICAgICAgKCogQSBsaW5lIHdpdGggc3BhY2VzIHNob3VsZG4ndCBpbnRlcmZlcmUgaGVyZSxcbiAgICAgICAgICAgd2hpY2ggaXMgYWJvdXQgYXQgbGVhc3QgMyBjb25zZWN1dGl2ZSBuZXdsaW5lcyxcbiAgICAgICAgICAgc28gd2Ugc3RvcC4gKilcbiAgICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZXMgXyBhcyBzKSA6OiB0bCAtPlxuICAgICAgICBDb250aW51ZV93aXRoXG4gICAgICAgICAgKFtzO1xuICAgICAgICAgICAgVGFnKFwicGFyc2VfbGlzdC9yZW1lbWJlciBzcGFjZXNcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIFNwYWNlcyBfOjp0bCAtPiBTb21lKHIscCxTcGFjZTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICBlbmQpO1xuICAgICAgICAgICAgTmV3bGluZV0sXG4gICAgICAgICAgIHRsKVxuICAgICAgfCBOZXdsaW5lIDo6IChTcGFjZSBhcyBzKSA6OiB0bCAtPlxuICAgICAgICBDb250aW51ZV93aXRoXG4gICAgICAgICAgKFtzO1xuICAgICAgICAgICAgVGFnKFwicGFyc2VfbGlzdC9yZW1lbWJlciBzcGFjZVwiLFxuICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwID1cbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICBlbmQpO1xuICAgICAgICAgICAgTmV3bGluZV0sXG4gICAgICAgICAgIHRsKVxuICAgICAgfCBfOjpfIC0+XG4gICAgICAgIENvbnRpbnVlXG4gICAgaW5cbiAgICBsZXQgcmV2X3RvX3QgbCA9XG4gICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgICgqIE5ld2xpbmVzIGF0IHRoZSBlbmQgb2YgaXRlbXMgaGF2ZSBubyBtZWFuaW5nIChleGNlcHQgdG8gZW5kIHRoZVxuICAgICAgICAgaXRlbSB3aGljaCBpcyBleHByZXNzZWQgYnkgdGhlIGNvbnN0cnVjdG9yIGFscmVhZHkpLiAqKVxuICAgICAgbGV0IGwgPSBtYXRjaCBsIHdpdGggKE5ld2xpbmUgfCBOZXdsaW5lcyBfKSA6OiB0bCAtPiB0bCB8IF8gLT4gbCBpblxuICAgICAgbWFpbl9sb29wIFtdIFtOZXdsaW5lXSAoTGlzdC5yZXYgbClcbiAgICBpblxuICAgIGxldCBhZGQgKHN1Ymxpc3Q6ZWxlbWVudCkgaXRlbXMgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgYWRkXFxuJSFcIjtcbiAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IChPLGluZGVudHMsaXRlbSk6OnRsIC0+XG4gICAgICAgIChPLGluZGVudHMsKGl0ZW1AW3N1Ymxpc3RdKSk6OnRsXG4gICAgICB8IChVLGluZGVudHMsaXRlbSk6OnRsIC0+XG4gICAgICAgIChVLGluZGVudHMsKGl0ZW1AW3N1Ymxpc3RdKSk6OnRsXG4gICAgaW5cbiAgICBsZXQgbWFrZV91cCB+cCBpdGVtcyA6IE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50ID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1ha2VfdXAgcD0lYlxcbiUhXCIgcDtcbiAgICAgIGxldCBpdGVtcyA9IExpc3QucmV2IGl0ZW1zIGluXG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IChVLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgVWxwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFVsKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgKE8sXyxpdGVtKTo6XyAtPlxuICAgICAgICBpZiBwIHRoZW5cbiAgICAgICAgICBPbHAoTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT2woTGlzdC5tYXAgKGZ1biAoXyxfLGkpIC0+IGkpIGl0ZW1zKVxuICAgICAgfCBbXSAtPlxuICAgICAgICBmYWlsd2l0aCBcIm1ha2VfdXAgY2FsbGVkIHdpdGggW11cIiAoKiBhc3NlcnQgZmFsc2UgKilcbiAgICBpblxuICAgIGxldCByZWMgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIGl0ZW1zIGwgPVxuICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbGlzdF9pdGVtczogcD0lYiBsPSglcylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICgqIG5vIG1vcmUgbGlzdCBpdGVtcyAqKVxuICAgICAgfCBbXSAtPlxuICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICgqIG1vcmUgbGlzdCBpdGVtcyAqKVxuICAgICAgKCogbmV3IHVub3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCAoU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBtYXRjaCBmc3BsaXRfcmV2IH5mOihlbmRfb2ZfaXRlbSAwKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICgyMzQ2KSBuZXdfaXRlbT0lU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgbmV3X2l0ZW0pO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChVLFswXSwgcmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAwOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IF86Ol8gLT5cbiAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZTo6KFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzFdICgoVSxbMV0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhVLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKGFkZCBzdWJsaXN0IGl0ZW1zKSByZW1haW5zXG4gICAgICAgIGVuZFxuICAgICAgfCBTcGFjZXMgbjo6KFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gKG4rMikpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzW10gbD0oJVMpXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKFUsW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSAoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKSA6OiBpdGVtcyBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyByZXN0XG4gICAgICAgICAgICAgIGVsc2UgaWYgaSA8IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgobisyKTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhVLChuKzIpOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV1cbiAgICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICAgICAgICBlbHNlICgqIGkgPiBuICsgMiAqKVxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgICgqIG5ldyBvcmRlcmVkIGl0ZW1zICopXG4gICAgICB8IE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbmV3X2l0ZW07XG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFswXSAoKE8sWzBdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMSkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzFdICgoTyxbMV0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCAxOjpfIC0+XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgaSA+IDEgdGhlblxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgICAgICBlbHNlICgqIGkgPCAxIDogbmV3IHN1YiBsaXN0KilcbiAgICAgICAgICAgICAgICBsZXQgc3VibGlzdCwgcmVtYWlucyA9XG4gICAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wICgxOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sMTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnA6cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gKG4rMikpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTsgKCogYe9lLi4uIGxpc3RlcyBtYWwgZm9ybellcyA/ISAqKVxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFtuKzJdICgoTyxbbisyXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IGk6Ol8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgc3BhY2VzKCVkOjpfKSBuPSVkIGw9KCVTKVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgIGkgbiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBpZiBpID0gbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoKE8saW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKVxuICAgICAgICAgICAgICAgICAgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cFxuICAgICAgICAgICAgICAgICAgICAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoTywobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnA6cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICAgICAgICBlbHNlICgqIGkgPiBuICsgMiAqKVxuICAgICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgICgqICopXG4gICAgICB8IE5ld2xpbmVzIDA6OigoU3RhcnxNaW51c3xQbHVzKTo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgfCBOZXdsaW5lcyAwOjooTnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFNwYWNlfFNwYWNlcyBfKTo6U3Rhcjo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFNwYWNlfFNwYWNlcyBfKTo6TnVtYmVyIF86OkRvdDo6KFNwYWNlfFNwYWNlcyBfKTo6XyBhcyBsKVxuICAgICAgICAtPlxuICAgICAgICBsaXN0X2l0ZW1zIH5wOnRydWUgaW5kZW50cyBpdGVtcyBsXG4gICAgICB8IF8gLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBsZXQgcmVjIHN0cmluZ19vZl9pdGVtcyBpdGVtcyA9XG4gICAgICAgICAgICAgIG1hdGNoIGl0ZW1zIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgKE8saW5kZW50OjpfLGl0ZW0pOjp0bCAtPlxuICAgICAgICAgICAgICAgICBzcHJpbnRmIFwiKE8saT0lZCwlUylcIiAoaW5kZW50KSAoT21kX2JhY2tlbmQuaHRtbF9vZl9tZCBpdGVtKVxuICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pdGVtcyB0bFxuICAgICAgICAgICAgICB8IChVLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihVLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCBfIC0+IFwiKHdlaXJkKVwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE5BTEkgcGFyc2VfbGlzdDogbD0oJVMpIGl0ZW1zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIChzdHJpbmdfb2ZfaXRlbXMgaXRlbXMpXG4gICAgICAgICAgZW5kO1xuICAgICAgICAoKiBub3QgYSBsaXN0IGl0ZW0gKilcbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsaXN0X2l0ZW1zIH5wOmZhbHNlIFtdIFtdIGwgd2l0aFxuICAgIHwgcnAsIGwgLT5cbiAgICAgIHJwOjpyLCBbTmV3bGluZV0sIGxcblxuXG5cbiAgbGV0IGljb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBfcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBpbmRlbnRlZCBjb2RlOiByZXR1cm5zIChyLHAsbCkgd2hlcmUgciBpcyB0aGUgcmVzdWx0LCBwIGlzIHRoZVxuICAgICAgIGxhc3QgdGhpbmcgcmVhZCwgbCBpcyB0aGUgcmVtYWlucyAqKVxuICAgIGxldCBkdW1teV90YWcgPSBUYWcoXCJkdW1teV90YWdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiA9IGZ1biByIHAgbCAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmQpIGluXG4gICAgbGV0IGFjY3UgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgbGV0IHJlYyBsb29wIHMgdGwgPSBtYXRjaCBzLCB0bCB3aXRoXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChTcGFjZXxTcGFjZXMoMHwxKSk6Ol8gLT5cbiAgICAgICAgKCogMSwgMiBvciAzIHNwYWNlcy4gKilcbiAgICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSB3aGF0IGZvbGxvd3MgaXNuJ3QuICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCBTcGFjZXMobik6OnRsIC0+XG4gICAgICAgIGFzc2VydChuPjApO1xuICAgICAgICAoKiBBdCBsZWFzdCA0IHNwYWNlcywgaXQncyBzdGlsbCBjb2RlLiAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgbG9vcFxuICAgICAgICAgIChpZiBuID49IDQgdGhlbiBTcGFjZXMobi00KSBlbHNlIGlmIG4gPSAzIHRoZW4gU3BhY2UgZWxzZSBkdW1teV90YWcpXG4gICAgICAgICAgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgKG5vdF9zcGFjZXM6Ol8gYXMgdGwpIC0+ICgqIHN0b3AgKilcbiAgICAgICAgQ29kZV9ibG9jayhkZWZhdWx0X2xhbmcsIEJ1ZmZlci5jb250ZW50cyBhY2N1KSA6OiByLCBbcF0sIHRsXG4gICAgICAoKiAtPiBSZXR1cm4gd2hhdCdzIGJlZW4gZm91bmQgYXMgY29kZSBiZWNhdXNlIGl0J3Mgbm8gbW9yZSBjb2RlLiAqKVxuICAgICAgfCBwLCBlOjp0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBhY2N1IChMLnN0cmluZ19vZl90b2tlbiBwKTtcbiAgICAgICAgKCogaHRtbCBlbnRpdGllcyBhcmUgdG8gYmUgY29udmVydGVkIGxhdGVyISAqKVxuICAgICAgICBsb29wIGUgdGxcbiAgICAgIHwgcCwgW10gLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSk6OnIsIFtwXSwgW11cbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgU3BhY2VzIG46OnRsIC0+XG4gICAgICBpZiBuID49IDQgdGhlblxuICAgICAgICBTb21lKGxvb3AgKFNwYWNlcyhuLTQpKSB0bClcbiAgICAgIGVsc2UgaWYgbiA9IDMgdGhlblxuICAgICAgICBTb21lKGxvb3AgU3BhY2UgdGwpXG4gICAgICBlbHNlIFNvbWUobG9vcCBkdW1teV90YWcgdGwpXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbiAgKCogUmV0dXJucyBbKHIscCxsKV0gd2hlcmUgW3JdIGlzIHRoZSByZXN1bHQsIFtwXSBpcyB0aGUgbGFzdCB0aGluZ1xuICAgICByZWFkLCBhbmQgW2xdIGlzIHdoYXQgcmVtYWlucy4gKilcbiAgbGV0IHNwYWNlc19hdF9iZWdpbm5pbmdfb2ZfbGluZSBtYWluX2xvb3AgZGVmYXVsdF9sYW5nIG4gciBwcmV2aW91cyBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBhc3NlcnQgKG4gPiAwKTtcbiAgICBpZiBuIDw9IDMgdGhlbiAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cykgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIHVub3JkZXJlZCBsaXN0ICopXG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gKEwubWFrZV9zcGFjZSBuOjpsZXhlbWVzKVxuICAgICAgfCAoTnVtYmVyIF8pOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICgqIG9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgW11cbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gKCogYmxhbmsgbGluZSwgc2tpcCBzcGFjZXMgKilcbiAgICAgICAgciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgIF86Ol8gLT5cbiAgICAgICAgVGV4dCAoXCIgXCIpOjpyLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgIClcbiAgICBlbHNlICggKCogbj49NCwgYmxhbmsgbGluZSBvciBpbmRlbnRlZCBjb2RlICopXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgW10gfCAoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfICAtPiByLCBwcmV2aW91cywgbGV4ZW1lc1xuICAgICAgfCBfIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgaWNvZGUgfmRlZmF1bHRfbGFuZyByIFtOZXdsaW5lXSAoTC5tYWtlX3NwYWNlIG4gOjogbGV4ZW1lcylcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IHIscCxsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmljb2RlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgIClcblxuICBsZXQgc3BhY2VzX25vdF9hdF9iZWdpbm5pbmdfb2ZfbGluZSA/KGh0bWw9ZmFsc2UpIG4gciBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBhc3NlcnQgKG4gPiAwKTtcbiAgICBpZiBuID0gMSB0aGVuXG4gICAgICAoVGV4dCBcIiBcIjo6ciksIFtTcGFjZV0sIGxleGVtZXNcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxleGVtZXMgd2l0aFxuICAgICAgfCBOZXdsaW5lIDo6IHRsIHdoZW4gbm90IGh0bWwgLT5cbiAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgIFwiKE9NRCkgMiBvciBtb3JlIHNwYWNlcyBiZWZvcmUgYSBuZXdsaW5lLCBlYXQgdGhlIG5ld2xpbmVcXG4lIVwiO1xuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgdGxcbiAgICAgIHwgTmV3bGluZXMgayA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IDEgbmV3bGluZVwiO1xuICAgICAgICBsZXQgbmV3bGluZXMgPSBpZiBrID0gMCB0aGVuIE5ld2xpbmUgZWxzZSBOZXdsaW5lcyhrLTEpIGluXG4gICAgICAgIEJyOjpyLCBbU3BhY2VzKG4tMildLCBuZXdsaW5lcyA6OiB0bFxuICAgICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAobj4xKTtcbiAgICAgICAgKFRleHQgKFN0cmluZy5tYWtlIG4gJyAnKTo6ciksIFtTcGFjZXMobi0yKV0sIGxleGVtZXNcbiAgICApXG5cblxuICBsZXQgbWF5YmVfYXV0b2VtYWlsIHIgcCBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IExlc3N0aGFuOjp0bCAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBmc3BsaXQgfmV4Y2w6KGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEF0Ojp0bCAtPiBTcGxpdChbXSx0bCkgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgdGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUobGVmdCwgcmlnaHQpIC0+XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgX3xTcGFjZXxTcGFjZXMgXykgOjogXy0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICB+ZjooZnVuY3Rpb24gR3JlYXRlcnRoYW46OnRsIC0+IFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDA6OnRsIC0+IFNwbGl0KFtdLEdyZWF0ZXJ0aGFuOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICByaWdodFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZShkb21haW4sIHRsKSAtPlxuICAgICAgICAgICAgbGV0IGVtYWlsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIF4gXCJAXCIgXiBMLnN0cmluZ19vZl90b2tlbnMgZG9tYWluIGluXG4gICAgICAgICAgICBTb21lKFVybChcIm1haWx0bzpcIl5lbWFpbCxbVGV4dCBlbWFpbF0sXCJcIik6OnIsW0dyZWF0ZXJ0aGFuXSx0bClcbiAgICAgIGVuZFxuICAgIHwgXyAtPiBmYWlsd2l0aCBcIk9tZF9wYXJzZXIubWF5YmVfYXV0b2VtYWlsOiB3cm9uZyB1c2Ugb2YgdGhlIGZ1bmN0aW9uLlwiXG5cbiAgbGV0IGlzX2hleCBzID1cbiAgICBTdHJpbmcubGVuZ3RoIHMgPiAxXG4gICAgJiYgKHMuWzBdID0gJ1gnIHx8IHMuWzBdID0gJ3gnKVxuICAgICYmIChsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgICBpID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgICAgICB8fFxuICAgICAgICAgKG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyAtPlxuICAgICAgICAgICAgbG9vcCAoc3VjYyBpKVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgaW4gbG9vcCAxKVxuXG4gIGxldCBtZWRpYXR5cGV0ZXh0b21kIDogc3RyaW5nIGxpc3QgcmVmID0gcmVmIFtdXG5cbiAgbGV0IGZpbHRlcl90ZXh0X29tZF9yZXYgbCA9XG4gICAgbGV0IHJlYyBsb29wIGIgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgICAgfCAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKTo6dGwgLT5cbiAgICAgICAgbG9vcCB0cnVlIHIgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCBiIChlOjpyKSB0bFxuICAgIGluXG4gICAgbG9vcCBmYWxzZSBbXSBsXG5cbiAgZXhjZXB0aW9uIE9ycGhhbl9jbG9zaW5nIG9mIHN0cmluZyAqIGwgKiBsXG5cbiAgbGV0IHJlYyBtYWluX2ltcGxfcmV2IH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViXFxuJSFcIiBodG1sOyAqKVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGxfcmV2IGh0bWw9JWIgcj0lcyBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBodG1sXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBwcmV2aW91cylcbiAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGxleGVtZXMpO1xuICAgIG1hdGNoIHByZXZpb3VzLCBsZXhlbWVzIHdpdGhcbiAgICAoKiBubyBtb3JlIHRvIHByb2Nlc3MgKilcbiAgICB8IF8sIFtdIC0+XG4gICAgICAoKiByZXR1cm4gdGhlIHJlc3VsdCAoLyFcXCBpdCBoYXMgdG8gYmUgcmV2ZXJzZWQgYXMgc29tZSBwb2ludCkgKilcbiAgICAgIHJcblxuICAgICgqIFRhZzogdGFnIHN5c3RlbSAkXFxjdXAkIGhpZ2gtcHJpb3JpdHkgZXh0ZW5zaW9uIG1lY2hhbmlzbSAqKVxuICAgIHwgXywgVGFnKF9uYW1lLCBlKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZSNwYXJzZXJfZXh0ZW5zaW9uIHIgcHJldmlvdXMgdGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyB0bFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MIGNvbW1lbnRzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OihFeGNsYW1hdGlvbjo6TWludXNzIDA6OmMgYXMgdGwpIC0+XG4gICAgICBiZWdpblxuICAgICAgICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAoTWludXNzIF8gYXMgbSk6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGwgLT5cbiAgICAgICAgICAgIFNwbGl0KFtnO21dLCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZzcGxpdCB+ZjpmIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIChjb21tZW50cywgbmV3X3RsKSAtPlxuICAgICAgICAgIGxldCByID0gSHRtbF9jb21tZW50KEwuc3RyaW5nX29mX3Rva2VucyBjb21tZW50cykgOjogciBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbTmV3bGluZV0gbmV3X3RsXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcgLyBibG9ja3F1b3RlICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCBHcmVhdGVydGhhbjo6KFNwYWNlfFNwYWNlcyBfKTo6XyAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIHIgcHJldmlvdXMgKE5ld2xpbmU6OmxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuXG4gICAgKCogZW1haWwtc3R5bGUgcXVvdGluZywgd2l0aCBsaW5lcyBzdGFydGluZyB3aXRoIHNwYWNlcyEgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksIChTcGFjZXxTcGFjZXMoMHwxKSBhcyBzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlfFNwYWNlcyBfKTo6XyAtPlxuICAgICAgKCogSXQncyAxLCAyIG9yIDMgc3BhY2VzLCBub3QgbW9yZSBiZWNhdXNlIGl0IHdvdWxkbid0IG1lYW5cbiAgICAgICAgIHF1b3RpbmcgYW55bW9yZSBidXQgY29kZS4gKilcbiAgICAgIGJlZ2luXG4gICAgICAgIGxldCBuZXdfciwgcCwgcmVzdCA9XG4gICAgICAgICAgbGV0IGZvbywgcmVzdCA9XG4gICAgICAgICAgICBtYXRjaCB1bmluZGVudCAoTC5sZW5ndGggcykgKE5ld2xpbmU6OmxleGVtZXMpIHdpdGhcbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6OmZvbywgcmVzdCAtPiBmb28sIHJlc3RcbiAgICAgICAgICAgIHwgcmVzIC0+IHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIGVtYWlsc3R5bGVfcXVvdGluZyBtYWluX2xvb3AgW10gcHJldmlvdXMgKE5ld2xpbmU6OmZvbylcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKG5ld19yLCBwLCBbXSkgLT4gbmV3X3IsIHAsIHJlc3RcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZW1haWxzdHlsZV9xdW90aW5nIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAobmV3X3JAcikgW05ld2xpbmVdIHJlc3RcbiAgICAgIGVuZFxuXG4gICAgKCogbWludXMgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksXG4gICAgICAoTWludXN8TWludXNzIF8gYXMgdCkgOjogKChTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgdGwpIC0+XG4gICAgICAoKiBtYXliZSBociAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBzbyBpdCBjb3VsZCBiZSBhIGxpc3QgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgTWludXMgLT4gKCogaXQncyBhIGxpc3QgKilcbiAgICAgICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICAgICAgICB8IF8gLT4gKCogbm90IGEgbGlzdCAqKVxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgbCAtPiAoKiBociAqKVxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgZW5kXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoTWludXN8TWludXNzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBocl9tIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKCogbm8gaHIsIGFuZCBpdCdzIG5vdCBhIGxpc3QgZWl0aGVyXG4gICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGl0J3Mgbm90IGZvbGxvd2VkIGJ5IHNwYWNlcyAqKVxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgICB8IFNvbWUgbCAtPiAoKiBociAqKVxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgZW5kXG5cbiAgICAoKiBoYXNoZXMgKilcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSxcbiAgICAgIChIYXNocyBuIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pIDo6IHR0bCBhcyB0bClcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSxcbiAgICAgIChIYXNocyBuIGFzIHQpIDo6ICh0dGwgYXMgdGwpIC0+ICgqIGhhc2ggdGl0bGVzICopXG4gICAgICBpZiBuIDw9IDQgdGhlblxuICAgICAgICBtYXRjaCByZWFkX3RpdGxlIG1haW5fbG9vcCAobisyKSByIHByZXZpb3VzIHR0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBIYXNoIDo6IChTcGFjZXxTcGFjZXMgXykgOjogdGxcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiB0bCAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgYmVnaW4gbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgMSByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIucmVhZF90aXRsZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgIGVuZFxuICAgIHwgXywgKEhhc2h8SGFzaHMgXyBhcyB0KSA6OiB0bCAtPiAoKiBoYXNoIC0tIG5vIHRpdGxlICopXG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhZnRlciBhIG5ld2xpbmU6IGNvdWxkIGxlYWQgdG8gaHIgKilcbiAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSksICgoU3BhY2V8U3BhY2VzIF8pIGFzIHNwKSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHIgdGwgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBObyBbSHJdLCBidXQgbWF5YmUgW1VsXSwgW09sXSwgY29kZSwuLi4gKilcbiAgICAgICAgICBsZXQgbiA9IEwubGVuZ3RoIHNwIGluXG4gICAgICAgICAgbGV0IHIsIHAsIGwgPVxuICAgICAgICAgICBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgdGwgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgU29tZSB0bCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gdGxcbiAgICAgIGVuZFxuXG4gICAgKCogc3BhY2VzIGFueXdoZXJlICopXG4gICAgfCBfLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogdG9vIG1hbnkgY2FzZXMgdG8gYmUgaGFuZGxlZCBoZXJlICopXG4gICAgICBsZXQgbiA9IEwubGVuZ3RoIHQgaW5cbiAgICAgIGxldCByLCBwLCBsID0gc3BhY2VzX25vdF9hdF9iZWdpbm5pbmdfb2ZfbGluZSB+aHRtbCBuIHIgdGwgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcblxuICAgICgqIHVuZGVyc2NvcmVzICopXG4gICAgfCBfLCAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBvbmUgXCJvcnBoYW5cIiB1bmRlcnNjb3JlLCBvciBlbXBoICopXG4gICAgICAobWF0Y2ggdWVtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuICAgIHwgXywgKFVuZGVyc2NvcmVzKCgwfDEpIGFzIG4pIGFzIHQpIDo6IHRsIC0+XG4gICAgICAoKiAyIG9yIDMgXCJvcnBoYW5cIiB1bmRlcnNjb3Jlcywgb3IgZW1waC9ib2xkICopXG4gICAgICAobWF0Y2ggdWVtcGhfb3JfYm9sZCAobisyKSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlbiAoKiAxIHVuZGVyc2NvcmUgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICAgIGVsc2UgKCogMiB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICApXG5cbiAgICAoKiBlbnVtZXJhdGVkIGxpc3RzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoTnVtYmVyIF8pIDo6IERvdCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHBsdXMgKilcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgUGx1cyA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICBpblxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuXG4gICAgKCogc3RhcnMgKilcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhciA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IF8gLT5cbiAgICAgICgqIG1heWJlIGhyIG9yIG5ldyBsaXN0ICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcbiAgICAgIGVuZFxuICAgIHwgKFtdfFsoTmV3bGluZXxOZXdsaW5lcyBfKV0pLCBTdGFycyBfIDo6IF8gd2hlbiBocl9zIGxleGVtZXMgPD4gTm9uZSAtPlxuICAgICAgKCogaHIgKilcbiAgICAgIChtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgIHwgU29tZSBsIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIClcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgKFN0YXIgYXMgdCkgOjogdGwgLT4gKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX3MgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZSBsIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSHI6OnIpIFtOZXdsaW5lXSBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIClcbiAgICAgIGVuZFxuICAgIHwgXywgKFN0YXIgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgc3Rhciwgb3IgZW1waCAvLyBjYW4ndCBiZSBociAqKVxuICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcbiAgICB8IF8sIChTdGFycygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgc3RhcnMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHNlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEVtcGgoW0JvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KV0pIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgKCogYmFja3NsYXNoZXMgKilcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTmV3bGluZSBhcyB0KSA6OiB0bCAtPiAoKiBcXFxcbiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTmV3bGluZXMgMCA6OiB0bCAtPiAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV0gKE5ld2xpbmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTmV3bGluZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcXFxuXFxuXFxuXFxuLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCciA6OiByKSBbQmFja3NsYXNoOyBOZXdsaW5lXVxuICAgICAgICAoTmV3bGluZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEJhY2txdW90ZSBhcyB0KSA6OiB0bCAtPiAoKiBcXGAgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIDAgOjogdGwgLT4gKCogXFxgYGBgLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW0JhY2tzbGFzaDsgQmFja3F1b3RlXSAoQmFja3F1b3RlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEJhY2txdW90ZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV1cbiAgICAgICAgKEJhY2txdW90ZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKFN0YXIgYXMgdCkgOjogdGwgLT4gKCogXFwqICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgMCA6OiB0bCAtPiAoKiBcXCoqKiouLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKlwiKSA6OiByKSBbQmFja3NsYXNoOyBTdGFyXSAoU3RhciA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBTdGFycyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXJzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChVbmRlcnNjb3JlIGFzIHQpIDo6IHRsIC0+ICgqIFxcXyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJfXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFVuZGVyc2NvcmVzIDAgOjogdGwgLT4gKCogXFxfX18uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbQmFja3NsYXNoOyBVbmRlcnNjb3JlXSAoVW5kZXJzY29yZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxfX18uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbQmFja3NsYXNoOyBVbmRlcnNjb3JlXVxuICAgICAgICAoVW5kZXJzY29yZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFjZSBhcyB0KSA6OiB0bCAtPiAoKiBcXHsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwie1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2VzIDAgOjogdGwgLT4gKCogXFx7e3suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwie1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2VdIChPYnJhY2UgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx7e3suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwie1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2VdIChPYnJhY2VzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx9ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIn1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIn1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNlXSAoQ2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIn1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNlXSAoQ2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT2JyYWNrZXQgYXMgdCkgOjogdGwgLT4gKCogXFxbICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNrZXRzIDAgOjogdGwgLT4gKCogXFxbW1suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2tldF0gKE9icmFja2V0IDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFxbW1suLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiW1wiKSA6OiByKSBbQmFja3NsYXNoOyBPYnJhY2tldF0gKE9icmFja2V0cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNrZXQgYXMgdCkgOjogdGwgLT4gKCogXFx9ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ2JyYWNrZXRzIDAgOjogdGwgLT4gKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2tldF0gKENicmFja2V0IDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFx9fX0uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXVwiKSA6OiByKSBbQmFja3NsYXNoOyBDYnJhY2tldF0gKENicmFja2V0cyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIoXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9wYXJlbnRoZXNpc3MgMCA6OiB0bCAtPiAoKiBcXCgoKC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIoXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9wYXJlbnRoZXNpc10gKE9wYXJlbnRoZXNpcyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCgoKC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIoXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE9wYXJlbnRoZXNpc11cbiAgICAgICAgKE9wYXJlbnRoZXNpc3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCkgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwpKSkuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKVwiKSA6OiByKSBbQmFja3NsYXNoOyBDcGFyZW50aGVzaXNdXG4gICAgICAgIChDcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwpKSkuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKVwiKSA6OiByKSBbQmFja3NsYXNoOyBDcGFyZW50aGVzaXNdXG4gICAgICAgIChDcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChQbHVzIGFzIHQpIDo6IHRsIC0+ICgqIFxcKyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIrXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFBsdXNzIDAgOjogdGwgLT4gKCogXFwrKysuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbQmFja3NsYXNoOyBQbHVzXSAoUGx1cyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwrKysuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbQmFja3NsYXNoOyBQbHVzXSAoUGx1c3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE1pbnVzIGFzIHQpIDo6IHRsIC0+ICgqIFxcLSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE1pbnVzcyAwIDo6IHRsIC0+ICgqIFxcLS0tLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW0JhY2tzbGFzaDsgTWludXNdIChNaW51cyA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcLS0tLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi1cIikgOjogcikgW0JhY2tzbGFzaDsgTWludXNdIChNaW51c3MgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKERvdCBhcyB0KSA6OiB0bCAtPiAoKiBcXC4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIDAgOjogdGwgLT4gKCogXFwuLi4uLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW0JhY2tzbGFzaDsgRG90XSAoRG90IDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IERvdHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEV4Y2xhbWF0aW9uIGFzIHQpIDo6IHRsIC0+ICgqIFxcISAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEV4Y2xhbWF0aW9ucyAwIDo6IHRsIC0+ICgqIFxcISEhLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW0JhY2tzbGFzaDsgRXhjbGFtYXRpb25dIChFeGNsYW1hdGlvbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcISEhLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiFcIikgOjogcikgW0JhY2tzbGFzaDsgRXhjbGFtYXRpb25dXG4gICAgICAgIChFeGNsYW1hdGlvbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEhhc2ggYXMgdCkgOjogdGwgLT4gKCogXFwjICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIiNcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogSGFzaHMgMCA6OiB0bCAtPiAoKiBcXCMjIy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEhhc2hdIChIYXNoIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCMjIy4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEhhc2hdIChIYXNocyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW4gYXMgdCkgOjogdGwgLT4gKCogXFw+ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogR3JlYXRlcnRoYW5zIDAgOjogdGwgLT4gKCogXFw+Pj4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbQmFja3NsYXNoOyBHcmVhdGVydGhhbl0gKEdyZWF0ZXJ0aGFuIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFw+Pj4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPlwiKSA6OiByKSBbQmFja3NsYXNoOyBHcmVhdGVydGhhbl1cbiAgICAgICAgKEdyZWF0ZXJ0aGFucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgdCkgOjogdGwgLT4gKCogXFw8ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTGVzc3RoYW5zIDAgOjogdGwgLT4gKCogXFw8PDwuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbQmFja3NsYXNoOyBMZXNzdGhhbl0gKExlc3N0aGFuIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFw8PDwuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiPFwiKSA6OiByKSBbQmFja3NsYXNoOyBMZXNzdGhhbl1cbiAgICAgICAgKExlc3N0aGFucyAobi0xKSA6OiB0bClcbiAgICB8IF8sIChCYWNrc2xhc2hzIDAgYXMgdCkgOjogdGwgLT4gKCogXFxcXFxcXFwuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiXFxcXFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIChCYWNrc2xhc2hzIG4gYXMgdCkgOjogdGwgLT4gKCogXFxcXFxcXFwuLi4gKilcbiAgICAgIGlmIG4gbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChTdHJpbmcubWFrZSAoKG4rMikvMikgJ1xcXFwnKSA6OiByKSBbdF0gdGxcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChTdHJpbmcubWFrZSAoKG4rMikvMikgJ1xcXFwnKSA6OiByKSBbdF0gKEJhY2tzbGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaDo6W10gLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgXCJcXFxcXCIgOjogcikgW10gW11cbiAgICB8IF8sIEJhY2tzbGFzaDo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgXCJcXFxcXCIgOjogcikgW0JhY2tzbGFzaF0gdGxcblxuICAgICgqIDwgKilcbiAgICB8IF8sIChMZXNzdGhhbnxMZXNzdGhhbnMgXyBhcyB0KVxuICAgICAgICAgOjogKFdvcmQoXCJodHRwXCJ8XCJodHRwc1wifFwiZnRwXCJ8XCJmdHBzXCJ8XCJzc2hcInxcImFmcFwifFwiaW1hcFwiKSBhcyB3KVxuICAgICAgICAgOjogQ29sb246OlNsYXNocyhuKTo6dGwgLT5cbiAgICAgICgqIFwic2VtaS1hdXRvbWF0aWNcIiBVUkxzICopXG4gICAgICBsZXQgcmVjIHJlYWRfdXJsIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjp0bCAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgICAgfCBHcmVhdGVydGhhbjo6dGwgLT5cbiAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbiB3KSBeIFwiOi8vXCJcbiAgICAgICAgICAgIF4gKGlmIG4gPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5tYWtlIChuLTEpICcvJylcbiAgICAgICAgICAgIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIChMaXN0LnJldiBhY2N1KVxuICAgICAgICAgIGluIFNvbWUodXJsLCB0bClcbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIHJlYWRfdXJsICh4OjphY2N1KSB0bFxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdXJsIFtdIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHVybCwgbmV3X3RsKSAtPlxuICAgICAgICAgIGxldCByID0gXG4gICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgIHwgTGVzc3RoYW5zIDAgLT4gVGV4dCBcIjxcIiA6OiByXG4gICAgICAgICAgICB8IExlc3N0aGFucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJzwnKSA6OiByXG4gICAgICAgICAgICB8IF8gLT4gclxuICAgICAgICAgIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVXJsKHVybCxbVGV4dCB1cmxdLFwiXCIpOjpyKSBbXSBuZXdfdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuXG4gICAgKCogV29yZCh3KSAqKVxuICAgIHwgXywgV29yZCB3Ojp0bCAtPlxuICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgdyA6OiByKSBbV29yZCB3XSB0bFxuXG4gICAgKCogbmV3bGluZSBhdCB0aGUgZW5kICopXG4gICAgfCBfLCBbTmV3bGluZV0gLT5cbiAgICAgIE5MOjpyXG5cbiAgICAoKiBuYW1lZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKFdvcmQgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpIGFzIHRsMikgLT5cbiAgICAgIGlmIFN0cmluZ1NldC5tZW0gdyBodG1sY29kZXNfc2V0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cbiAgICAoKiBkaWdpdC1jb2RlZCBodG1sIGVudGl0eSAqKVxuICAgIHwgXywgQW1wZXJzYW5kOjooKEhhc2g6Ok51bWJlciB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgLT5cbiAgICAgIGlmIFN0cmluZy5sZW5ndGggdyA8PSA0IHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgfCBTZW1pY29sb24gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbjo6dGwpXG4gICAgICAgICAgfCBTZW1pY29sb25zIG4gLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9ucyhuLTEpOjp0bClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gdGwyXG5cbiAgICAoKiBtYXliZSBoZXggZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgYXMgdGwyKSB3aGVuIGlzX2hleCB3IC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG5cbiAgICAoKiBBbXBlcnNhbmQgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbQW1wZXJzYW5kXSB0bFxuXG4gICAgKCogMiBBbXBlcnNhbmRzICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKDApOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmQ6OnRsKVxuXG4gICAgKCogU2V2ZXJhbCBBbXBlcnNhbmRzIChtb3JlIHRoYW4gMikgKilcbiAgICB8IF8sIEFtcGVyc2FuZHMobik6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW10gKEFtcGVyc2FuZHMobi0xKTo6dGwpXG5cbiAgICAoKiBiYWNrcXVvdGVzICopXG4gICAgfCBfLCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJjb2RlIH5kZWZhdWx0X2xhbmcgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICgqIEhUTUwgKilcbiAgICAoKiA8YnIvPiBhbmQgPGhyLz4gd2l0aCBvciB3aXRob3V0IHNwYWNlKHMpICopXG4gICAgfCBfLCAoTGVzc3RoYW46OldvcmQoXCJiclwifFwiaHJcIiBhcyB3KTo6U2xhc2hcbiAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGwpXG4gICAgfCBfLCAoTGVzc3RoYW46OldvcmQoXCJiclwifFwiaHJcIiBhcyB3KTo6KFNwYWNlfFNwYWNlcyBfKTo6U2xhc2hcbiAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dGwpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBnIHdpdGhcbiAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyhuLTEpOjp0bClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl0gdGxcbiAgICAgIGVuZFxuXG4gICAgKCogYXdhaXRlZCBvcnBoYW4gaHRtbCBjbG9zaW5nIHRhZyAqKVxuICAgIHwgXywgTGVzc3RoYW46OlNsYXNoOjpXb3JkKHcpOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsXG4gICAgICB3aGVuICFtZWRpYXR5cGV0ZXh0b21kIDw+IFtdIC0+XG4gICAgICByYWlzZSAoT3JwaGFuX2Nsb3NpbmcodyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbjo6dGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbnMobi0xKTo6dGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHRsKSkpXG5cbiAgICAoKiBibG9jayBodG1sICopXG4gICAgfCAoW10gfCBbTmV3bGluZXxOZXdsaW5lcyBffFRhZyhcIkhUTUxCTE9DS1wiLCBfKV0pLFxuICAgICAgKExlc3N0aGFuIGFzIHQpXG4gICAgICA6OigoV29yZCh0YWduYW1ldG9wKSBhcyB3KVxuICAgICAgICAgOjooKFNwYWNlfFNwYWNlcyBffEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKVxuICAgICAgICAgICAgOjpfIGFzIGh0bWxfc3R1ZmYpIGFzIHRseCkgLT5cbiAgICAgIGlmIFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBpbmxpbmVfaHRtbHRhZ3Nfc2V0IHRoZW5cbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIFtXb3JkIFwiXCJdIGxleGVtZXNcbiAgICAgIGVsc2UgaWYgbm90IChibGluZF9odG1sIHx8IFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBodG1sdGFnc19zZXQpIHRoZW5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRseFxuICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBsZXQgcmVhZF9odG1sKCkgPVxuICAgICAgICAgIGxldCBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICAgICAgfCBBd2FpdGluZyBvZiBzdHJpbmdcbiAgICAgICAgICAgICAgfCBPcGVuIG9mIHN0cmluZ1xuICAgICAgICAgICAgdHlwZSBpbnRlcm0gPVxuICAgICAgICAgICAgICB8IEhUTUwgb2Ygc3RyaW5nICogKHN0cmluZyAqIHN0cmluZyBvcHRpb24pIGxpc3QgKiBpbnRlcm0gbGlzdFxuICAgICAgICAgICAgICB8IEZUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgUlRPS0VOUyBvZiBMLnRcbiAgICAgICAgICAgICAgfCBNRCBvZiBPbWRfcmVwcmVzZW50YXRpb24udFxuICAgICAgICAgICAgbGV0IHJlYyBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGwgPVxuICAgICAgICAgICAgICBsZXQgbWRfb2ZfaW50ZXJtX2xpc3QgPyhodG1sPWh0bWwpIGwgPVxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IGh0bWwgbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgbGV0IGZfYSA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYSBpblxuICAgICAgICAgICAgICAgICAgaWYgZl9hICE9IGEgdGhlblxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsXG4gICAgICAgICAgICAgICAgICAgICAgIGZfYSxcbiAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9wYXJhZ3JhcGhzXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG1kX29mX2ludGVybV9saXN0IH5odG1sOmZhbHNlIChMaXN0LnJldiBjKSkpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEh0bWxfYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAodCwgZl9hLCBtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDp0cnVlIChMaXN0LnJldiBjKSlcbiAgICAgICAgICAgICAgICAgICAgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRAbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpGVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2X2FwcGVuZCB0MSB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdDE6OlJUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3RcbiAgICAgICAgICAgICAgICAgIChGVE9LRU5TKExpc3QucmV2X2FwcGVuZCB0MSAoTGlzdC5yZXYgdDIpKTo6dGwpXG4gICAgICAgICAgICAgIHwgRlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyh0MUB0Mik6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIGlmIGh0bWwgdGhlblxuICAgICAgICAgICAgICAgICAgUmF3KEwuc3RyaW5nX29mX3Rva2VucyB0KSA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1haW5fbG9vcCB+aHRtbCBbXSBbV29yZCBcIlwiXSB0XG4gICAgICAgICAgICAgICAgICBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0IDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlMoTGlzdC5yZXYgdCkgOjogdGwpXG4gICAgICAgICAgICBsZXQgbWRfb2ZfaW50ZXJtX2xpc3QgbCA9IG1kX29mX2ludGVybV9saXN0IHRydWUgbFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntCL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntCL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIG1hdGNoIGJvZHkgd2l0aFxuICAgICAgICAgICAgfCBULlJUT0tFTlMgciA6OiBib2R5IC0+IFQuUlRPS0VOUyh4OjpyKTo6Ym9keVxuICAgICAgICAgICAgfCBfIC0+IFQuUlRPS0VOU1t4XSA6OiBib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzMzMzIEJIVE1MIGxvb3AgYm9keT0lUyB0YWdzdGF0dXM9JVMgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0MDEgQkhUTUwgTm90IGVub3VnaCB0byByZWFkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IExlc3N0aGFucyBuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MDggQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSkgOjogdGFnc3RhdHVzXG4gICAgICAgICAgICAgICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0YWduYW1lLCBhdHRycywgW10pXSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDE5IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICBTbGFzaFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkpKVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgdGFnIG9wZW5lciAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzM3NSBCSFRNTCBwcm9wZXJseSBjbG9zaW5nICVTXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgU29tZShib2R5LFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbnMobi0xKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0b2tlbnMpKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzM3OSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAxXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuUlRPS0VOU1tnO3c7U2xhc2g7TGVzc3RoYW5dOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzM4MyBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAyXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHQgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIGlmICFtZWRpYXR5cGV0ZXh0b21kIDw+IFtdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoT3JwaGFuX2Nsb3NpbmcodCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbjo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFucyhuLTEpOjp0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0b2tlbnMpKSlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIEJIVE1MIHdyb25nbHkgY2xvc2luZyAlUyAzXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6KFdvcmQodGFnbmFtZSkgYXMgd29yZCk6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgYmxpbmRfaHRtbFxuICAgICAgICAgICAgICAgIHx8IFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sdGFnc19zZXRcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDg5IEJIVE1MIDxXb3JkKCVzKS4uLlxcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KSA6OiBfXG4gICAgICAgICAgICAgICAgICB3aGVuIHQgPD4gdGFnbmFtZSAmJiBTdHJpbmdTZXQubWVtIHQgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBhdHRycyA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM0OTYgQkhUTUwgdGFnICVTIGJ1dCBhdHRycyA8PiBbXVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDIxIEJIVE1MIHRhZyAlUywgdGFnc3RhdHVzPSVTLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM9W10sIHRva2Vucz0lU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnbmFtZSAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDg5IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVzc3RoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDMzIEJIVE1MIHRhZ3N0YXR1cz0lUyB0b2tlbnM9JVNcXG4lIVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShiQGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogZW5kIG9mIG9wZW5pbmcgdGFnICopXG4gICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiB0YWdzdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIGlmIExpc3QubWVtIChcIm1lZGlhOnR5cGVcIiwgU29tZSBcInRleHQvb21kXCIpIGF0dHJzIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgIG1lZGlhdHlwZXRleHRvbWQgOj0gdCA6OiAhbWVkaWF0eXBldGV4dG9tZDtcbiAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZShtYWluX2ltcGxfcmV2IH5odG1sIFtdIFtdIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTI0IEJIVE1MIGNsb3NpbmcgdGFnIG5vdCBmb3VuZCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiAlU1xcbiUhXCIgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ2xvc2luZyB0YWcgYCVzJyBub3QgZm91bmQgZm9yIHRleHQvb21kIHpvbmUuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IExpc3QudGwgIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aCBPcnBoYW5fY2xvc2luZyh0YWduYW1lLCBkZWxpbWl0ZXIsIGFmdGVyKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWMgZiByID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFucyBuIGFzIGUgOjogdGwgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIGRlbGltaXRlciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGVzc3RoYW46Ol8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMZXNzdGhhbjo6dGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVzc3RoYW46OnJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVzc3RoYW5zKG4tMSk6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmIChlOjpyKSB0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlOjp0bCBhcyBsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsID09IGRlbGltaXRlciB8fCBsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiB0bCA9PSBkZWxpbWl0ZXIgfHwgdGwgPSBkZWxpbWl0ZXIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiAoZTo6cilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZiBbXSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTUyIEJIVE1MIHRva2Vucz0lcyBkZWxpbWl0ZXI9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXI9JXMgYmVmb3JlPSVzICh0YWduYW1lPXQpPSViXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBkZWxpbWl0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgYWZ0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgYmVmb3JlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZ25hbWUgPSB0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAhbWVkaWF0eXBldGV4dG9tZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IHRsIC0+IG1lZGlhdHlwZXRleHRvbWQgOj0gdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiB0YWduYW1lID0gdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVC5IVE1MXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVC5NRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFpbl9pbXBsIH5odG1sIFtdIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWdfc2V0ZXh0IG1haW5fbG9vcCBiZWZvcmUpKV0pXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzU3MSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTE5IEJIVE1MIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdWxkbid0IGZpbmQgYW4gY2xvc2luZyB0YWcgZm9yICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGJvZHksIGwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk4IEJIVE1MIEZvdW5kIGEgY2xvc2luZyB0YWcgJXNcXG4lIVwiIHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBbVC5IVE1MKHQsIGF0dHJzLCBib2R5KV0gW10gdGFnc3RhdHVzIGxcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShbVC5IVE1MKHQsIGF0dHJzLCBib2R5KV0sIGwpXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDM1OTEgQkhUTUwgU29tZSBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKGFkZF90b2tlbl90b19ib2R5IEdyZWF0ZXJ0aGFuIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNTQyIEJIVE1MIHRhZ3N0YXR1cz1bXVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICAoKiBtYXliZSBhdHRyaWJ1dGUgKilcbiAgICAgICAgICAgIHwgKENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdCk6OnRva2Vuc1xuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgICAgIDo6KENvbG9ufENvbG9ucyBffFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgX3xXb3JkIF8gYXMgdClcbiAgICAgICAgICAgICAgOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGxldCBtb2R1bGUgQXR0cmlidXRlX3ZhbHVlID0gc3RydWN0XG4gICAgICAgICAgICAgICAgICB0eXBlIHQgPSBFbXB0eSBvZiBuYW1lIHwgTmFtZWQgb2YgbmFtZSB8IFZvaWRcbiAgICAgICAgICAgICAgICAgIGFuZCBuYW1lID0gc3RyaW5nXG4gICAgICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICAgICAgbGV0IG9wZW4gQXR0cmlidXRlX3ZhbHVlIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlYyBleHRyYWN0X2F0dHJpYnV0ZSBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgKFNwYWNlIHwgU3BhY2VzIF8gfCBOZXdsaW5lKSA6OiB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgKEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfKSA6OiBfIGFzIHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBFcXVhbCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgTmFtZWQoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IENvbG9uIHwgQ29sb25zIF8gfCBVbmRlcnNjb3JlIHwgVW5kZXJzY29yZXMgXyB8IFdvcmQgX1xuICAgICAgICAgICAgICAgICAgfCBOdW1iZXIgXyB8IE1pbnVzIHwgTWludXNzIF8gfCBEb3QgfCBEb3RzIF8gYXMgdCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF9hdHRyaWJ1dGUgKHQ6OmFjY3UpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCB0b2tlbnMgLT4gVm9pZCwgdG9rZW5zXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleHRyYWN0X2F0dHJpYnV0ZSBbdF0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICB8IEVtcHR5IGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgKCogYXR0cmlidXRlIHdpdGggbm8gZXhwbGljaXQgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM2MjggQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBOb25lKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IE5hbWVkIGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2MSBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjY4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM2NTQgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjkwIEJIVE1MIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2OTggQkhUTUwgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzYyMiBCSFRNTCAlcz0lUyAlc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBWb2lkLCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zIGFzIGRndHNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzYyMCBCSFRNTCBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGRndHMpO1xuICAgICAgICAgICAgICAgIGxvb3AgKGFkZF90b2tlbl90b19ib2R5IHggYm9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNzM3IEJIVE1MIHNwYWNlc1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgbG9vcCBib2R5IGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lcyBfIGFzIHgpIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM4MjcgQkhUTUwgbmV3bGluZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIHdhcm4gXCJ0aGVyZSBhcmUgZW1wdHkgbGluZXMgaW4gd2hhdCBtYXkgYmUgYW4gSFRNTCBibG9ja1wiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGFkZF90b2tlbl90b19ib2R5IHggYm9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3NDIgQkhUTUwgZmFsbGJhY2sgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucz0lcyBhbmQgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgW10gLT4gXCJOb25lXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IFwiQXdhaXRpbmdcIlxuICAgICAgICAgICAgICAgICAgIHwgVC5PcGVuIF8gOjogXyAtPiBcIk9wZW4gKGNhbid0IGJlKVwiKTtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byByZWFkIGFuIG9wZW4gSFRNTCB0YWcgKCVzKSwgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICB8IFQuT3BlbiB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gZmluZCB0aGUgY2xvc2luZyBIVE1MIHRhZyBmb3IgJXMsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM0MDggQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgbWF0Y2ggbG9vcCBbXSBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaCwgcmVzdCkgLT5cbiAgICAgICAgICAgIFNvbWUoVC5tZF9vZl9pbnRlcm1fbGlzdCBoLCByZXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIHJlYWRfaHRtbCgpIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaCwgcmVzdCkgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKGhAcikgW1RhZyhcIkhUTUxCTE9DS1wiLCBlbXB0eV9leHRlbnNpb24pXSByZXN0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgdGV4dCA9IEwuc3RyaW5nX29mX3Rva2VuIHQgaW5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQodGV4dCBeIHRhZ25hbWV0b3ApOjpyKSBbd10gaHRtbF9zdHVmZlxuICAgICAgICBlbmRcbiAgICAoKiAvIGVuZCBvZiBibG9jayBIVE1MLiAqKVxuXG5cbiAgICAoKiBpbmxpbmUgSFRNTCAqKVxuICAgIHwgXyxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiAoc3RyaWN0X2h0bWwgJiYgbm90KFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBpbmxpbmVfaHRtbHRhZ3Nfc2V0KSlcbiAgICAgIHx8IG5vdChibGluZF9odG1sIHx8IFN0cmluZ1NldC5tZW0gdGFnbmFtZXRvcCBodG1sdGFnc19zZXQpXG4gICAgICB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgPSBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgIHwgSFRNTCh0LCBhLCBjKTo6dGwgLT5cbiAgICAgICAgICAgICAgICBIdG1sKHQsIGEsIG1kX29mX2ludGVybV9saXN0KExpc3QucmV2IGMpKTo6bWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBNRCBtZDo6dGwgLT4gbWQgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFRPS0VOUyB0MTo6VE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1haW5faW1wbCB+aHRtbCBbXSBbV29yZCBcIlwiXSAodClcbiAgICAgICAgICAgICAgICBAIG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICBsZXQgc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMgPVxuICAgICAgICAgICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICAgICAgICAgICAgTGlzdC5pdGVyIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCBPcGVuIHQgLT4gYnByaW50ZiBiIFwie0kvT3BlbiAlc31cIiB0XG4gICAgICAgICAgICAgICAgICB8IEF3YWl0aW5nIHQgLT4gYnByaW50ZiBiIFwie0kvQXdhaXRpbmcgJXN9XCIgdFxuICAgICAgICAgICAgICAgICkgdGFnc3RhdHVzO1xuICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgICAgICAgIGVuZCBpblxuICAgICAgICAgIGxldCBhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkgPVxuICAgICAgICAgICAgVC5UT0tFTlNbeF06OmJvZHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcCAoYm9keTpULmludGVybSBsaXN0KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zID1cbiAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSAlc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAoKiBlcHJpbnRmIFwiKE9NRCkgMzcxOCBsb29wIHRhZ3N0YXR1cz0oJXMpIGJvZHk9KCVzKSAlc1xcbiUhXCIgKilcbiAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAoKiAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQoVC5tZF9vZl9pbnRlcm1fbGlzdCBib2R5KSkgKilcbiAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpOjpfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOb3QgZW5vdWdoIHRvIHJlYWQgZm9yIGlubGluZSBIVE1MXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IExlc3N0aGFucyBuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuIExlc3N0aGFuIGVsc2UgTGVzc3RoYW5zKG4tMSkpXG4gICAgICAgICAgICAgICAgICAgICAgIGJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyAoTGVzc3RoYW46OnRva2VucylcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBzZWxmLWNsb3NpbmcgdGFncyAqKVxuICAgICAgICAgICAgfCBTbGFzaDo6R3JlYXRlcnRoYW46OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyh0YWduYW1lKTo6dGFnc3RhdHVzXG4gICAgICAgICAgICAgICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0YWduYW1lLCBhdHRycywgW10pXSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tHcmVhdGVydGhhbjtTbGFzaF06OmJvZHkpXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiBtdWx0aXBsZSBuZXdsaW5lcyBhcmUgbm90IHRvIGJlIHNlZW4gaW4gaW5saW5lIEhUTUwgKilcbiAgICAgICAgICAgIHwgTmV3bGluZXMgXyA6OiBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE11bHRpcGxlIGxpbmVzIGluIGlubGluZSBIVE1MXFxuJSFcIjtcbiAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICB8IFtdIC0+IFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgfCBfIC0+IHdhcm4gXCJtdWx0aXBsZSBuZXdsaW5lcyBpbiBpbmxpbmUgSFRNTFwiOyBOb25lKVxuICAgICAgICAgICAgKCogbWF5YmUgY29kZSAqKVxuICAgICAgICAgICAgfCAoQmFja3F1b3RlIHwgQmFja3F1b3RlcyBfIGFzIGIpOjp0bCAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IG5vIGNvZGVcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IG5vbmVcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIF8gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgbWF5YmUgY29kZSBpbiBpbmxpbmUgSFRNTDogbGV0J3MgdHJ5XFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJjb2RlIFtdIFtTcGFjZV0gdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lICgoKENvZGUgXzo6XykgYXMgYyksIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuTUQgYzo6Ym9keSkgW10gdGFnc3RhdHVzIGxcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGZhaWxlZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbYl06OmJvZHkpIFtdIHRhZ3N0YXR1cyB0bFxuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjpTbGFzaDo6KFdvcmQodGFnbmFtZSkgYXMgdylcbiAgICAgICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRva2VucyAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyB3aGVuIHQgPSB0YWduYW1lIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTM2IHByb3Blcmx5IGNsb3NpbmcgJVMgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHQgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgU29tZShib2R5LFxuICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwIC0+IEdyZWF0ZXJ0aGFuIDo6IHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbnMobi0xKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0b2tlbnMpKVxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE0NCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAxXFxuJSFcIiB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tnO3c7U2xhc2g7TGVzc3RoYW5dOjpib2R5KSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE0OSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZ2x5IGNsb3NpbmcgJVMgd2l0aCAlUyAyXFxuJSFcIiB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE1NCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cm9uZ2x5IGNsb3Npbmcgbm90aGluZyB3aXRoICVTIDNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCAoc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGlubGluZV9odG1sdGFnc19zZXQpXG4gICAgICAgICAgICAgICAgfHwgKG5vdCBzdHJpY3RfaHRtbCAmJiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSA8JXMuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzk2IHRhZyAlcywgYXR0cnM9W11cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBbXSBbXSAoVC5Bd2FpdGluZyB0YWduYW1lOjp0YWdzdGF0dXMpIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW3dvcmQ7TGVzc3RoYW5dOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgU29tZShiQGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogZW5kIG9mIG9wZW5pbmcgdGFnICopXG4gICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg1IGVuZCBvZiBvcGVuaW5nIHRhZyB0b2tlbnM9JXMgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKTtcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdCA6OiB0YWdzdGF0dXMgYXMgdHMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIGxvb3AgYm9keSBbXSAoVC5PcGVuIHQ6OnRhZ3N0YXR1cykgdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxODYgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdWxkbid0IGZpbmQgYW4gY2xvc2luZyB0YWcgZm9yICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lKGIsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgNDE5MiBGb3VuZCBhIGNsb3NpbmcgdGFnICVzIHRzPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdHMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKCogTm90ZTogd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgdmFsdWUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyc10gaGVyZSBiZWNhdXNlIGluIHdlIGhhdmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ3N0YXR1c10gbWF0Y2hlcyBbVC5PcGVuIF8gOjogX10gYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVyZSdzIGEgY29ycmVzcG9uZGluZyBmaWx0ZXIgdGhhdCB3aWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGNhcmUgb2YgYXR0cnMgdGhhdCB3aWxsIHRha2UgY2FyZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQuICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULkhUTUwodCwgYXR0cnMsIGIpOjpib2R5KSBbXSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiKE9NRCkgVHVybnMgb3V0IGFuIGA+YCBpc24ndCBmb3IgYW4gb3BlbmluZyB0YWdcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW5dOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDIwMiB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBOb25lKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICB8IE5hbWVkIGF0dHJpYnV0ZW5hbWUsIHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAxICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgU29tZSBcIlwiKTo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKElIVE1MKSBub24gZW1wdHkgYXR0cmlidXRlIDIgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5leGNsOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShhdF92YWwsIHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMzk1NykgJXM9JVMgJXNcXG4lIVwiIGF0dHJpYnV0ZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgYXRfdmFsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBWb2lkLCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbQmFja3NsYXNoO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICB8IEJhY2tzbGFzaHMobik6Ong6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULk9wZW4gXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICYmIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaHMobik7eF06OmJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcblxuICAgICAgICAgICAgfCB4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDQxNjEpIGdlbmVyYWwgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgKHg6OnRva2VucykpO1xuICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZSB8IFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRva2Vuc1xuICAgICAgICAgICAgICB3aGVuXG4gICAgICAgICAgICAgICAgKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICg0Mjg5KSBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDQyOTQpIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2sgd2l0aCB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW4gbWF0Y2ggbG9vcCBbXSBbXSBbXSBsZXhlbWVzIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaHRtbCwgcmVzdCkgLT5cbiAgICAgICAgICAgIFNvbWUoVC5tZF9vZl9pbnRlcm1fbGlzdCBodG1sLCByZXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIHJlYWRfaHRtbCgpIHdpdGhcbiAgICAgICAgICB8IFNvbWUoaCwgcmVzdCkgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKGhAcikgW0dyZWF0ZXJ0aGFuXSByZXN0XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBsZXQgdGV4dCA9IEwuc3RyaW5nX29mX3Rva2VuIHQgaW5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQodGV4dCBeIHRhZ25hbWV0b3ApOjpyKSBbd10gaHRtbF9zdHVmZlxuICAgICAgICBlbmRcbiAgICAoKiAvIGVuZCBvZiBpbmxpbmUgSFRNTC4gKilcblxuICAgICgqIDwgOiBlbWFpbHMgKilcbiAgICB8IF8sIChMZXNzdGhhbiBhcyB0KTo6dGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2F1dG9lbWFpbCByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUocixwLGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICgqIGxpbmUgYnJlYWtzICopXG4gICAgfCBfLCBOZXdsaW5lOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoTkw6OnIpIFtOZXdsaW5lXSB0bFxuICAgIHwgXywgTmV3bGluZXMgXzo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpOTDo6cikgW05ld2xpbmVdIHRsXG5cbiAgICAoKiBbICopXG4gICAgfCBfLCAoT2JyYWNrZXQgYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9saW5rIG1haW5fbG9vcCByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbWF0Y2ggbWF5YmVfcmVmZXJlbmNlIG1haW5fbG9vcCByYyByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmRcblxuICAgICgqIGltZyAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9ufEV4Y2xhbWF0aW9ucyBfIGFzIHQpXG4gICAgICAgICA6Ok9icmFja2V0OjpDYnJhY2tldDo6T3BhcmVudGhlc2lzOjp0bCAtPlxuICAgICAgKCogaW1hZ2UgaW5zZXJ0aW9uIHdpdGggbm8gXCJhbHRcIiAqKVxuICAgICAgKCogIVtdKC9wYXRoL3RvL2ltZy5qcGcpICopXG4gICAgICAodHJ5XG4gICAgICAgICBiZWdpblxuICAgICAgICAgICBsZXQgYiwgdGwgPSByZWFkX3VudGlsX2NwYXJlbnRoIH5icTp0cnVlIH5ub19ubDpmYWxzZSB0bCBpblxuICAgICAgICAgICAoKiBuZXcgbGluZXMgdGhlcmUgYXJlIGFsbG93ZWQgKilcbiAgICAgICAgICAgbGV0IHIgKCogdXBkYXRlZCByZXN1bHQgKikgPSBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgIHRyeSBTb21lKHJlYWRfdW50aWxfc3BhY2UgfmJxOmZhbHNlIH5ub19ubDp0cnVlIGIpXG4gICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IE5vbmVcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgICB8IFNvbWUodXJsLCB0bHMpIC0+XG4gICAgICAgICAgICAgbGV0IHRpdGxlLCBzaG91bGRfYmVfZW1wdHlfbGlzdCA9XG4gICAgICAgICAgICAgICByZWFkX3VudGlsX2RxIH5icTp0cnVlIChzbmQgKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxzKSkgaW5cbiAgICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHVybCBpblxuICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhcIlwiLCB1cmwsIHRpdGxlKSA6OiByKSBbQ3BhcmVudGhlc2lzXSB0bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBsZXQgdXJsID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGIgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCBcIlwiKSA6OiByKSBbQ3BhcmVudGhlc2lzXSB0bFxuICAgICAgICAgZW5kXG4gICAgICAgd2l0aFxuICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGltZyByZWYgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbiBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgKCogcmVmIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXVtyZWZdICopXG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgaWQsIHRsID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSB0bCBpblxuICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgdGwgbGV4ZW1lcyBpblxuICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgXCJcIiwgZmFsbGJhY2spIDo6IHIpIFtDYnJhY2tldF0gdGxcbiAgICAgICB3aXRoIE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cblxuICAgICgqIGltZyAqKVxuICAgIHwgXywgKEV4Y2xhbWF0aW9ufEV4Y2xhbWF0aW9ucyBfIGFzIHQpOjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIFwiYWx0XCIgKilcbiAgICAgICgqICFbQWx0IHRleHRdKC9wYXRoL3RvL2ltZy5qcGcgXCJPcHRpb25hbCB0aXRsZVwiKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSB0bCB3aXRoXG4gICAgICAgICB8IGFsdCwgT3BhcmVudGhlc2lzOjpudGwgLT5cbiAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICBsZXQgYWx0ID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFsdCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aF90aXRsZSwgcmVzdCA9XG4gICAgICAgICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgbnRsIGluXG4gICAgICAgICAgICAgIGxldCBwYXRoLCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICByZWFkX3VudGlsX3NwYWNlIH5icTp0cnVlIH5ub19ubDp0cnVlIHBhdGhfdGl0bGVcbiAgICAgICAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gcGF0aF90aXRsZSwgW10gaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCBub3RoaW5nID1cbiAgICAgICAgICAgICAgICBpZiB0aXRsZSA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICByZWFkX3VudGlsX2RxIH5icTp0cnVlIChzbmQocmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSB0aXRsZSkpXG4gICAgICAgICAgICAgICAgZWxzZSBbXSwgW10gaW5cbiAgICAgICAgICAgICAgaWYgbm90aGluZyA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uOyAoKiBjYXVnaHQgcmlnaHQgYmVsb3cgKilcbiAgICAgICAgICAgICAgbGV0IHIgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIDAgLT4gVGV4dCBcIiFcIiA6OiByXG4gICAgICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICchJykgOjogclxuICAgICAgICAgICAgICAgIHwgXyAtPiByIGluXG4gICAgICAgICAgICAgIGxldCBwYXRoID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHBhdGggaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRpdGxlIGluXG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZyhhbHQsIHBhdGgsIHRpdGxlKSA6OiByKSBbQ3BhcmVudGhlc2lzXSByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IE5MX2V4Y2VwdGlvblxuICAgICAgICAgICAgKCogaWYgTkxfZXhjZXB0aW9uIHdhcyByYWlzZWQsIHRoZW4gZmFsbCBiYWNrIHRvIFwidGV4dFwiICopXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjpXb3JkKGlkKTo6Q2JyYWNrZXQ6Om50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooU3BhY2V8U3BhY2VzIF8pOjpXb3JkKGlkKTo6Q2JyYWNrZXQ6Om50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooU3BhY2V8U3BhY2VzIF8pOjpXb3JkKGlkKTo6KFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICAgIDo6Q2JyYWNrZXQ6Om50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjpXb3JkKGlkKTo6KFNwYWNlfFNwYWNlcyBfKTo6Q2JyYWNrZXQ6Om50bCAtPlxuICAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCBudGwgbGV4ZW1lcyBpblxuICAgICAgICAgICBsZXQgYWx0ID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFsdCBpblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpIFtDYnJhY2tldF0gbnRsXG4gICAgICAgICB8IGFsdCwgT2JyYWNrZXQ6OigoTmV3bGluZXxTcGFjZXxTcGFjZXMgX3xXb3JkIF98TnVtYmVyIF8pOjpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBudGwpIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgbnRsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSwgcmVzdCAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgICAgICAgIHwgaWQsIHJlc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZXN0IGxleGVtZXMgaW5cbiAgICAgICAgICAgICAgICBsZXQgaWQgPSBMLnN0cmluZ19vZl90b2tlbnMgaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgYWx0ID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGFsdCBpblxuICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEltZ19yZWYocmMsIGlkLCBhbHQsIGZhbGxiYWNrKTo6cilcbiAgICAgICAgICAgICAgICAgIFtDYnJhY2tldF1cbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICApXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgZW5kXG4gICAgICAgd2l0aFxuICAgICAgIHwgUHJlbWF0dXJlX2VuZGluZyAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICB8IF8sXG4gICAgICAoQXR8QmFyfENhcmV0fENicmFjZXxDb2xvbnxDb21tYXxDcGFyZW50aGVzaXN8Q2JyYWNrZXR8RG9sbGFyXG4gICAgICB8RG90fERvdWJsZXF1b3RlfEV4Y2xhbWF0aW9ufEVxdWFsfE1pbnVzfE9icmFjZXxPcGFyZW50aGVzaXNcbiAgICAgIHxQZXJjZW50fFBsdXN8UXVlc3Rpb258UXVvdGV8U2VtaWNvbG9ufFNsYXNofFRhYnxUaWxkZVxuICAgICAgfEdyZWF0ZXJ0aGFuIGFzIHQpOjp0bFxuICAgICAgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgIGVuZFxuICAgIHwgXywgKE51bWJlciBfICBhcyB0KTo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcblxuICAgIHwgXywgKEF0cyBfIHwgQmFycyBfIHwgQ2FyZXRzIF8gfCBDYnJhY2VzIF8gfCBDYnJhY2tldHMgXyB8IENvbG9ucyBfXG4gICAgICAgICB8IENvbW1hcyBfIHwgQ3BhcmVudGhlc2lzcyBfIHwgRG9sbGFycyBfIHwgRG90cyBfIHwgRG91YmxlcXVvdGVzIF9cbiAgICAgICAgIHwgRXF1YWxzIF8gfCBFeGNsYW1hdGlvbnMgXyB8IEdyZWF0ZXJ0aGFucyBfIHwgTGVzc3RoYW5zIF9cbiAgICAgICAgIHwgTWludXNzIF8gfCBPYnJhY2VzIF8gfCBPYnJhY2tldHMgXyB8IE9wYXJlbnRoZXNpc3MgX1xuICAgICAgICAgfCBQZXJjZW50cyBfIHwgUGx1c3MgXyB8IFF1ZXN0aW9ucyBfIHwgUXVvdGVzIF8gfCBTZW1pY29sb25zIF9cbiAgICAgICAgIHwgU2xhc2hzIF8gfCBTdGFycyBfIHwgVGFicyBfIHwgVGlsZGVzIF8gfCBVbmRlcnNjb3JlcyBfIGFzIHRrKVxuICAgICAgICAgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCB0azAsIHRrcyA9IEwuc3BsaXRfZmlyc3QgdGsgaW5cbiAgICAgICAgICBsZXQgdGV4dCA9IEwuc3RyaW5nX29mX3Rva2VuIHRrMCBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgdGV4dCA6OiByKSBbdGswXSAodGtzIDo6IHRsKVxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcblxuXG4gIGFuZCBtYWluX2ltcGwgfmh0bWwgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAoKiBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWluX2ltcGwgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBMaXN0LnJldiAobWFpbl9sb29wX3JldiB+aHRtbCByIHByZXZpb3VzIGxleGVtZXMpXG5cbiAgYW5kIG1haW5fbG9vcCA/KGh0bWw9ZmFsc2UpIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgICBtYWluX2ltcGwgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cbiAgYW5kIG1haW5fbG9vcF9yZXYgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHByZXZpb3VzIGxleGVtZXNcblxuXG4gIGxldCBtYWluX3BhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fbG9vcCBbXSBbXSAodGFnX3NldGV4dCBtYWluX2xvb3AgbGV4ZW1lcylcblxuICBsZXQgcGFyc2UgbGV4ZW1lcyA9XG4gICAgbWFpbl9wYXJzZSBsZXhlbWVzXG5cbmVuZFxuXG5sZXQgZGVmYXVsdF9wYXJzZSA/KGV4dGVuc2lvbnM9W10pID8oZGVmYXVsdF9sYW5nPVwiXCIpIGxleGVtZXMgPVxuICBsZXQgZSA9IGV4dGVuc2lvbnMgYW5kIGQgPSBkZWZhdWx0X2xhbmcgaW5cbiAgbGV0IG1vZHVsZSBFID0gRGVmYXVsdF9lbnYoVW5pdCkgaW5cbiAgbGV0IG1vZHVsZSBNID1cbiAgICBNYWtlKHN0cnVjdFxuICAgICAgaW5jbHVkZSBFXG4gICAgICBsZXQgZXh0ZW5zaW9ucyA9IGVcbiAgICAgIGxldCBkZWZhdWx0X2xhbmcgPSBkXG4gICAgZW5kKVxuICBpblxuICBNLm1haW5fcGFyc2UgbGV4ZW1lc1xuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMyBieSBQaGlsaXBwZSBXYW5nIDxwaGlsaXBwZS53YW5nQGNsLmNhbS5hYy51az4gICAgICAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBZb3Ugc2hvdWxkIGVpdGhlciB1c2UgdGhpcyBtb2R1bGUgb3IgT21kX2xleGVyLCBub3QgYm90aC5cbiAgICBUaGlzIG1vZHVsZSBpbmNsdWRlcyBPbWRfbGV4ZXIuXG4qKVxuXG5pbmNsdWRlIE9tZF9sZXhlclxuXG5sZXQgbGV4X2Zyb21faW5jaGFubmVsIGljID1cbiAgKCogTWFpbnRlbmFuY2UtZWFzaW5lc3MtZHJpdmVuIGltcGxlbWVudGF0aW9uLiAqKVxuICBsZXQgaWNfY29udGVudCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgdHJ5IHdoaWxlIHRydWUgZG9cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAoaW5wdXRfY2hhciBpYylcbiAgICAgICAgZG9uZTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYiBpblxuICBsZXggaWNfY29udGVudFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogT01EOiBNYXJrZG93biB0b29sIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTQgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZTogIElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGh0bWwgPSBodG1sX25vZGUgbGlzdFxuXG5hbmQgaHRtbF9ub2RlID1cbiAgfCBOb2RlIG9mIG5vZGVuYW1lICogYXR0cmlidXRlcyAqIGh0bWxcbiAgfCBEYXRhIG9mIHN0cmluZ1xuICB8IFJhd2RhdGEgb2Ygc3RyaW5nXG4gIHwgQ29tbWVudCBvZiBzdHJpbmdcblxuYW5kIG5vZGVuYW1lID0gc3RyaW5nXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIGF0dHJpYnV0ZSA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxubGV0IHRvX3N0cmluZyBodG1sID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgbGV0IHBwIGYgPSBQcmludGYuYnByaW50ZiBiIGYgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IE5vZGUobm9kZW5hbWUsIGF0dHJpYnV0ZXMsIGh0bWwpIC0+XG4gICAgICBwcCBcIjwlc1wiIG5vZGVuYW1lO1xuICAgICAgcHBhIGF0dHJpYnV0ZXM7XG4gICAgICBwcCBcIj5cIjtcbiAgICAgIExpc3QuaXRlciBsb29wIGh0bWw7XG4gICAgICBwcCBcIjwvJXM+XCIgbm9kZW5hbWVcbiAgICB8IERhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgUmF3ZGF0YSBzIC0+IHBwIFwiJXNcIiBzXG4gICAgfCBDb21tZW50IGMgLT4gcHAgXCI8IS0tICVzIC0tPlwiIGNcbiAgYW5kIHBwYSBhdHRycyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCAoYSwgU29tZSB2KSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmNvbnRhaW5zIHYgJ1xcJycpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPSclcydcIiBhIHZcbiAgICAgICAgICBlbHNlIGlmIG5vdCAoU3RyaW5nLmNvbnRhaW5zIHYgJ1wiJykgdGhlblxuICAgICAgICAgICAgcHAgXCIgJXM9XFxcIiVzXFxcIlwiIGEgdlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgcHAgXCIgJXM9XFxcIlwiIGE7XG4gICAgICAgICAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHYgLSAxIGRvXG4gICAgICAgICAgICAgICAgbWF0Y2ggdi5baV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgJ1wiJyAtPiBwcCBcIiZxdW90O1wiXG4gICAgICAgICAgICAgICAgfCBjICAgIC0+IHBwIFwiJWNcIiBjXG4gICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgIHBwIFwiXFxcIlwiXG4gICAgICAgICAgICApXG4gICAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JydcIiBhICgqIEhUTUw1ICopXG4gICAgKVxuICAgIGF0dHJzXG4gIGluXG4gIExpc3QuaXRlciBsb29wIGh0bWw7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5pbmNsdWRlIE9tZF9yZXByZXNlbnRhdGlvblxuaW5jbHVkZSBPbWRfYmFja2VuZFxuXG5sZXQgb2ZfaW5wdXQgbGV4ID9leHRlbnNpb25zOmUgP2RlZmF1bHRfbGFuZzpkIHMgPVxuICBsZXQgbW9kdWxlIEUgPSBPbWRfcGFyc2VyLkRlZmF1bHRfZW52KHN0cnVjdCBlbmQpIGluXG4gIGxldCBtb2R1bGUgUGFyc2VyID0gT21kX3BhcnNlci5NYWtlKFxuICAgIHN0cnVjdFxuICAgICAgaW5jbHVkZSBFXG4gICAgICBsZXQgZXh0ZW5zaW9ucyA9IG1hdGNoIGUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5leHRlbnNpb25zXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gbWF0Y2ggZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBFLmRlZmF1bHRfbGFuZ1xuICAgIGVuZFxuICApIGluXG4gIGxldCBtZCA9XG4gICAgUGFyc2VyLnBhcnNlIChsZXggcylcbiAgaW5cbiAgUGFyc2VyLm1ha2VfcGFyYWdyYXBocyBtZFxuXG5sZXQgb2Zfc3RyaW5nID0gb2ZfaW5wdXQgT21kX2xleGVyLmxleFxubGV0IG9mX2JpZ2FycmF5ID0gb2ZfaW5wdXQgT21kX2xleGVyLmxleF9iaWdhcnJheVxuXG5sZXQgdG9faHRtbCA6XG4gID9vdmVycmlkZTooT21kX3JlcHJlc2VudGF0aW9uLmVsZW1lbnQgLT4gc3RyaW5nIG9wdGlvbikgLT5cbiAgP3BpbmRlbnQ6Ym9vbCAtPlxuICA/bmwyYnI6Ym9vbCAtPlxuICA/Y3M6Y29kZV9zdHlsaXN0IC0+XG4gIHQgLT5cbiAgc3RyaW5nXG4gID1cbiAgaHRtbF9vZl9tZFxuXG5sZXQgdG9fdGV4dCA6IHQgLT4gc3RyaW5nID0gdGV4dF9vZl9tZFxuXG5sZXQgdG9fbWFya2Rvd24gOiB0IC0+IHN0cmluZyA9IG1hcmtkb3duX29mX21kXG5cbmxldCBodG1sX29mX3N0cmluZyAoaHRtbDpzdHJpbmcpIDogc3RyaW5nID1cbiAgaHRtbF9vZl9tZCAoT21kX3BhcnNlci5kZWZhdWx0X3BhcnNlIChPbWRfbGV4ZXIubGV4IGh0bWwpKVxuXG5cbmxldCByZWMgc2V0X2RlZmF1bHRfbGFuZyBsYW5nID0gZnVuY3Rpb25cbiAgfCBDb2RlKFwiXCIsIGNvZGUpIDo6IHRsIC0+IENvZGUobGFuZywgY29kZSkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQ29kZV9ibG9jayhcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlX2Jsb2NrKGxhbmcsIGNvZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgKCogUmVjdXJzZSBvbiBhbGwgZWxlbWVudHMgZXZlbiB0aG91Z2ggY29kZSAoYmxvY2tzKSBhcmUgbm90IGFsbG93ZWRcbiAgICAgZXZlcnl3aGVyZS4gKilcbiAgfCBIMSB0IDo6IHRsIC0+IEgxKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBIMiB0IDo6IHRsIC0+IEgyKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBIMyB0IDo6IHRsIC0+IEgzKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBINCB0IDo6IHRsIC0+IEg0KHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBINSB0IDo6IHRsIC0+IEg1KHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBINiB0IDo6IHRsIC0+IEg2KHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBQYXJhZ3JhcGggdCA6OiB0bCAtPiBQYXJhZ3JhcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBFbXBoIHQgOjogdGwgLT4gRW1waChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQm9sZCB0IDo6IHRsIC0+IEJvbGQoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVsIHQgOjogdGwgLT4gVWwoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgT2wgdCA6OiB0bCAtPiBPbChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbHAgdCA6OiB0bCAtPiBVbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9scCB0IDo6IHRsIC0+IE9scChMaXN0Lm1hcCAoc2V0X2RlZmF1bHRfbGFuZyBsYW5nKSB0KVxuICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVXJsKGhyZWYsIHQsIHRpdGxlKSA6OiB0bCAtPiBVcmwoaHJlZiwgc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQsIHRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBCbG9ja3F1b3RlIHQgOjogdGwgLT4gQmxvY2txdW90ZShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdClcbiAgICAgICAgICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgKCogRWxlbWVudHMgdGhhdCBkbyBub3QgY29udGFpbiBNYXJrZG93bi4gKilcbiAgfCAoVGV4dCBffENvZGUgX3xDb2RlX2Jsb2NrIF98QnJ8SHJ8Tkx8UmVmIF98SW1nX3JlZiBffFJhdyBffFJhd19ibG9jayBfXG4gICAgfEh0bWwgX3xIdG1sX2Jsb2NrIF98SHRtbF9jb21tZW50IF98SW1nIF98WCBfKSBhcyBlIDo6IHRsIC0+XG4gICAgIGUgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgW10gLT4gW11cblxuXG4oKiBUYWJsZSBvZiBjb250ZW50c1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBHaXZlbiBhIGxpc3Qgb2YgaGVhZGVycyDigJQgaW4gdGhlIG9yZGVyIG9mIHRoZSBkb2N1bWVudCDigJQgZ28gdG8gdGhlXG4gICByZXF1ZXN0ZWQgc3Vic2VjdGlvbi4gIFdlIGZpcnN0IHNlZWsgZm9yIHRoZSBbbnVtYmVyXXRoIGhlYWRlciBhdFxuICAgW2xldmVsXS4gICopXG5sZXQgcmVjIGZpbmRfc3RhcnQgaGVhZGVycyBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBtYXRjaCBoZWFkZXJzIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IChIMSBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDEgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDIgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAyIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgzIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMyBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINCBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDQgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDUgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA1IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg2IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcblxuYW5kIGRlYWxfd2l0aF9oZWFkZXIgaF9sZXZlbCBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9ucyA9XG4gIGlmIGhfbGV2ZWwgPiBsZXZlbCB0aGVuICgqIFNraXAsIHJpZ2h0IFtsZXZlbF0taGVhZGVyIG5vdCB5ZXQgcmVhY2hlZC4gKilcbiAgICBpZiBudW1iZXIgPSAwIHRoZW5cbiAgICAgICgqIEFzc3VtZSBlbXB0eSBzZWN0aW9uIGF0IFtsZXZlbF0sIGRvIG5vdCBjb25zdW1lIHRva2VuLiAqKVxuICAgICAgKG1hdGNoIHN1YnNlY3Rpb25zIHdpdGhcbiAgICAgICB8IFtdIC0+IGhlYWRlcnMgKCogbm8gc3Vic2VjdGlvbiB0byBmaW5kICopXG4gICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgaGVhZGVycyAobGV2ZWwgKyAxKSBuIHN1YnNlY3Rpb25zKVxuICAgIGVsc2UgZmluZF9zdGFydCB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbGV2ZWwgdGhlbiAoXG4gICAgKCogQXQgcHJvcGVyIFtsZXZlbF0uICBIYXZlIHdlIHJlYWNoZWQgdGhlIFtudW1iZXJdIG9uZT8gKilcbiAgICBpZiBudW1iZXIgPD0gMSB0aGVuIChcbiAgICAgIG1hdGNoIHN1YnNlY3Rpb25zIHdpdGhcbiAgICAgIHwgW10gLT4gdGwgKCogbm8gc3Vic2VjdGlvbiB0byBmaW5kICopXG4gICAgICB8IG4gOjogc3Vic2VjdGlvbnMgLT4gZmluZF9zdGFydCB0bCAobGV2ZWwgKyAxKSBuIHN1YnNlY3Rpb25zXG4gICAgKVxuICAgIGVsc2UgZmluZF9zdGFydCB0bCBsZXZlbCAobnVtYmVyIC0gMSkgc3Vic2VjdGlvbnNcbiAgKVxuICBlbHNlICgqIGhfbGV2ZWwgPCBsZXZlbCAqKVxuICAgIFtdICgqIFNvdWdodCBbbGV2ZWxdIGhhcyBub3QgYmVlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBzZWN0aW9uICopXG5cbigqIEFzc3VtZSB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBoZWFkZXJzIHdlIGFyZSBpbnRlcmVzdGVkIGluLlxuICAgUmV0dXJuIHRoZSBsaXN0IG9mIFRPQyBlbnRyaWVzIGZvciBbbWluX2xldmVsXSBhbmQgdGhlIFtoZWFkZXJzXVxuICAgbm90IHVzZWQgZm9yIHRoZSBUT0MgZW50cmllcy4gKilcbmxldCByZWMgbWFrZV90b2MgKGhlYWRlcnM6KGVsZW1lbnQqc3RyaW5nKnN0cmluZylsaXN0KSB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBtaW5fbGV2ZWwgPiBtYXhfbGV2ZWwgdGhlbiBbXSwgaGVhZGVyc1xuICBlbHNlIChcbiAgICBtYXRjaCBoZWFkZXJzIHdpdGhcbiAgICB8IFtdIC0+IFtdLCBbXVxuICAgIHwgKEgxIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAxIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDIgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDIgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChIMyB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMyB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg0IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA0IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDUgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDUgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINiB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNiB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgXyA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICApXG5hbmQgdG9jX2VudHJ5IGhlYWRlcnMgaF9sZXZlbCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCA9XG4gIGlmIGhfbGV2ZWwgPiBtYXhfbGV2ZWwgdGhlbiAoKiB0b28gZGVlcCwgc2tpcCAqKVxuICAgIG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICBlbHNlIGlmIGhfbGV2ZWwgPCBtaW5fbGV2ZWwgdGhlblxuICAgICgqIHNlY3Rpb24gd2Ugd2FudGVkIHRoZSBUT0MgZm9yIGlzIGZpbmlzaGVkLCBkbyBub3QgY29tc3VtZSB0aGUgdG9rZW4gKilcbiAgICBbXSwgaGVhZGVyc1xuICBlbHNlIGlmIGhfbGV2ZWwgPSBtaW5fbGV2ZWwgdGhlbiAoXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbDoobWluX2xldmVsICsgMSkgfm1heF9sZXZlbCBpblxuICAgIGxldCB0b2NfZW50cnkgPSBtYXRjaCBzdWJfdG9jIHdpdGhcbiAgICAgIHwgW10gLT4gW1VybChcIiNcIiBeIGlkLCB0LCBcIlwiKTsgTkxdXG4gICAgICB8IF8gLT4gW1VybChcIiNcIiBeIGlkLCB0LCBcIlwiKTsgTkw7IFVsIHN1Yl90b2M7IE5MXSBpblxuICAgIGxldCB0b2MsIHRsID0gbWFrZV90b2MgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsIGluXG4gICAgdG9jX2VudHJ5IDo6IHRvYywgdGxcbiAgKSBlbHNlICgqIGhfbGV2ZWwgPiBtaW5fbGV2ZWwgKilcbiAgICBsZXQgc3ViX3RvYywgdGwgPSBtYWtlX3RvYyBoZWFkZXJzIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIFtVbCBzdWJfdG9jXSA6OiB0b2MsIHRsXG5cbmxldCB0b2MgPyhzdGFydD1bXSkgPyhkZXB0aD0yKSBtZCA9XG4gIGlmIGRlcHRoIDwgMSB0aGVuIGludmFsaWRfYXJnIFwiT21kLnRvYzogfmRlcHRoIG11c3QgYmUgPj0gMVwiO1xuICBsZXQgaGVhZGVycyA9IE9tZF9iYWNrZW5kLmhlYWRlcnNfb2ZfbWQgfnJlbW92ZV9oZWFkZXJfbGlua3M6dHJ1ZSBtZCBpblxuICBsZXQgaGVhZGVycyA9IG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IFtdIC0+IGhlYWRlcnNcbiAgICB8IG51bWJlciA6OiBzdWJzZWN0aW9ucyAtPlxuICAgICAgIGlmIG51bWJlciA8IDAgdGhlbiBpbnZhbGlkX2FyZyhcIk9tZC50b2M6IGxldmVsIDEgc3RhcnQgbXVzdCBiZSA+PSAwXCIpO1xuICAgICAgIGZpbmRfc3RhcnQgaGVhZGVycyAxIG51bWJlciBzdWJzZWN0aW9ucyBpblxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggc3RhcnQgaW5cbiAgbGV0IHRvYywgXyA9IG1ha2VfdG9jIGhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH5taW5fbGV2ZWw6KGxlbiArIDEpIH5tYXhfbGV2ZWw6KGxlbiArIGRlcHRoKSBpblxuICBtYXRjaCB0b2Mgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgXyAtPiBbVWwodG9jKV1cblxubGV0IGFkZF90b2MgP3N0YXJ0ID9kZXB0aCA/dGl0bGUgbWQgPVxuICBsZXQgdG9jID0gdG9jID9zdGFydCA/ZGVwdGggbWQgaW5cbiAgKCogUmVwbGFjZSBcIipUYWJsZSBvZiBjb250ZW50cypcIiB3aXRoIHRoZSBhY3R1YWwgVE9DLiAqKVxuICB0b2NcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 diff --git a/projectors/style.css b/projectors/style.css index bbea6917..9acd3697 100644 --- a/projectors/style.css +++ b/projectors/style.css @@ -680,7 +680,6 @@ select { .projector { position: absolute; - display: flex; justify-content: center; align-items: center; diff --git a/projectors/worker.js b/projectors/worker.js index 310759fc..22f2b0a0 100644 --- a/projectors/worker.js +++ b/projectors/worker.js @@ -316834,7 +316834,7 @@ f!=="number"&&3===f[0]){/*<>*/ /*<>*/e(z[29],j[3],f[1]);/*<>*/return/*<>*/e(dA[10][2],m,function(a){/*<>*/return a[2]/*<>*/})}break a;default:break a}/*<>*/ /*<>*/var k=/*<>*/e(z[33],h,g);/*<>*/return/*<>*/e(dA[10][2],k,function(a){/*<>*/return a[2]/*<>*/})}/*<>*/return 0/*<>*/}],"Haz3lcore__Info");return/*<>*/}(globalThis)); -//# 5903 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5905 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var Y="src/haz3lcore/prog/CoreSettings.re.t",h="@ ",L="<2>",F="show_hidden_steps",G="show_casts",X=125,n=" =",W="%a",V="{ ",E="elaborate",C="show_fn_bodies",D="statics",B="assist",A="show_fixpoints",K=963043957,o="%B",m="",z="show_lookup_steps",y="dynamics",p=";@ ",U="@[<2>{ ",x="evaluation",T="src/haz3lcore/prog/CoreSettings.re.Evaluation.t",l="@]",v="show_settings",w="show_stepper_filters",S="@ }@]",k="@[%s =@ ",u="show_case_clauses",R=143,t="stepper_history",e=139,s=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -316889,13 +316889,13 @@ u=/*<>*/c(b[2],d);/*<>*/c(b[2],n);/*<>*/return/*<>*/j(q[11],J,v,a)}/*<>*/var/*<>*/e=/*<>*/c(b[2],h),/*<>*/o=/*<>*/c(b[2],i),/*<>*/p=/*<>*/c(b[2],k),/*<>*/s=/*<>*/c(b[2],l),/*<>*/t=/*<>*/c(b[2],m);if(e&&o&&p&&s&&t)/*<>*/return[0,e[1],o[1],p[1],s[1],t[1]];/*<>*/var/*<>*/w=[0,[0,0===/*<>*/c(b[2],m)?1:0,b3],0],/*<>*/z=[0,[0,0===/*<>*/c(b[2],l)?1:0,b4],w],/*<>*/A=[0,[0,0===/*<>*/c(b[2],k)?1:0,b5],z],/*<>*/C=[0,[0,0===/*<>*/c(b[2],i)?1:0,b6],A],/*<>*/F=[0,[0,0===/*<>*/c(b[2],h)?1:0,b7],C];/*<>*/return/*<>*/j(q[13],J,a,F)}/*<>*/return/*<>*/f(q[14],J,a)},function(a){/*<>*/var b=a[4],d=a[3],e=a[2],f=a[1],h=[0,[0,b8,c(r[6],a[5])],0],i=[0,[0,b9,c(g[45][2],b)],h],j=[0,[0,b_,c(g[45][2],d)],i],k=[0,[0,b$,c(g[45][2],e)],j];/*<>*/return[0,K,[0,[0,ca,c(g[45][2],f)],k]]/*<>*/},[0,0,0,0,0,r[7]],[0,1,1,1,1,r[7]]],"Haz3lcore__CoreSettings");return/*<>*/}(globalThis)); -//# 5970 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5972 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,d=c.caml_compare;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):c.caml_call_gen(a,[b])}var b=c.caml_get_global_data().Stdlib__Set,f=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),g=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]),h=e(b[1],[0,function(a,b){/*<>*/return d(a,b)}]);c.caml_register_global(1,[0,f,g,h,e(b[1],[0,function(a,b){/*<>*/return d(a,b)}])],"Haz3lcore__Sets");return/*<>*/}(globalThis)); -//# 5977 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 5979 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var i=a.jsoo_runtime,H=i.caml_maybe_attach_backtrace;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):i.caml_call_gen(a,[b])}/*<>*/function @@ -316943,7 +316943,7 @@ a!=="number")switch(a[0]){case 5:/*<>*/return 1}/*<>*/return 0/*<>*/},b),v=m[1];if(!m[2])/*<>*/return s(v);b=/*<>*/c(h[37],m[2],v)}}/*<>*/}i.caml_register_global(9,[0,q,r,s,j,function(a,b){/*<>*/var/*<>*/c=/*<>*/e(g[9],b),/*<>*/d=/*<>*/e(g[7],c);/*<>*/return j([0,[6,/*<>*/e(g[8],a),d],0])/*<>*/},function(a){/*<>*/ /*<>*/var b=/*<>*/e(g[8],a);/*<>*/return j([0,/*<>*/e(g[7],b),0])/*<>*/}],"Haz3lcore__Incon");return/*<>*/}(globalThis)); -//# 6200 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6201 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cp=203,ax=191,aw=188,Y=187,d="$Meta",o=a.jsoo_runtime,cn=o.caml_equal;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):o.caml_call_gen(a,[b])}/*<>*/function @@ -317192,7 +317192,7 @@ var l=j;/*<>*/return[0,l,[0,f,a]]/*<>*/}/*<>*/var Z=/*<>*/j(V[1],0,U,function(a,b){/*<>*/return O(a,0,0,0,b,v[15][1])[2]/*<>*/});o.caml_register_global(64,[0,[0,e,function(a){/*<>*/return/*<>*/j(D[143],C,e,a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][45],n[171],a)/*<>*/},function(a){/*<>*/return/*<>*/h(v[15][44],n[172],a)/*<>*/},function(a){/*<>*/return h(v[15][47],n[173],a)},function(a){/*<>*/return h(v[15][46],n[174],a)},function(a){/*<>*/return/*<>*/j(v[15][24],function(a,b,c){/*<>*/var/*<>*/d=/*<>*/i(n[197],b),/*<>*/e=d?/*<>*/cn(a,/*<>*/i(n[185],b)):d;return e?[0,a,c]:c/*<>*/},a,0)/*<>*/}],J,G,g,ay,f,p,q,az,aA,w,K,O,P,u,A,x,function(a,b,c){/*<>*/ /*<>*/i(s[46],_);return a[1]?/*<>*/h(Z,b,c):v[15][1]/*<>*/},function(a){/*<>*/return/*<>*/j(v[15][24],function(d,b,c){/*<>*/var/*<>*/a=/*<>*/i(n[186],b),/*<>*/e=/*<>*/i(/*<>*/i(y[7],function(a){/*<>*/return[0,d,a]/*<>*/}),a),/*<>*/f=/*<>*/i(y[15],e);/*<>*/return/*<>*/h(s[37],f,c)/*<>*/},a,0)/*<>*/}],"Haz3lcore__Statics");return/*<>*/}(globalThis)); -//# 6713 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6721 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -317200,13 +317200,13 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__MetaVar");return/*<>*/}(globalThis)); -//# 6762 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6770 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var d=a.jsoo_runtime;/*<>*/function f(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):d.caml_call_gen(a,[b,c])}var e=d.caml_get_global_data(),c=e.Haz3lcore__Typ,b=e.Haz3lcore__VarMap;d.caml_register_global(2,[0,function(a){/*<>*/return/*<>*/f(b[3],c[13],a)/*<>*/},function(a){/*<>*/return/*<>*/f(b[4],c[11],a)/*<>*/},b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18]],"Haz3lcore__VarCtx");return/*<>*/}(globalThis)); -//# 6769 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6777 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ad="src/haz3lcore/dynamics/VarBstMap.re.Inner.binding",v="<2>",r="@ ",o="rev_order",_=" =",ac="%a",ab="src/haz3lcore/dynamics/VarBstMap.re.Ordered.t_",D="",aa=963043957,n="map",Z=";@ ",Y="@]",$="@[%s =@ ",X=143,j=139,w=848054398,l=a.jsoo_runtime,W=l.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):l.caml_call_gen(a,[b])}/*<>*/function @@ -317294,7 +317294,7 @@ e=a[1],/*<>*/b=/*<>*/c=s(e,b);return c?[0,b,c[1]]:u(0)/*<>*/}),b)/*<>*/},function(a){/*<>*/var/*<>*/b=S(a),/*<>*/c=/*<>*/d(/*<>*/d(f[20],function(a){/*<>*/return[0,a[1],0]/*<>*/}),a);/*<>*/return[0,b,/*<>*/d(f[10],c)]/*<>*/},function(c,b){/*<>*/return V(function(a){/*<>*/var b=a[1];/*<>*/return 1-/*<>*/e(f[34],function(a){/*<>*/return a==b?1:0/*<>*/},c)/*<>*/},b)/*<>*/}]],"Haz3lcore__VarBstMap");return/*<>*/}(globalThis)); -//# 6858 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6866 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="NotInHole",I="<2>",H="%a",n="TypeInconsistent",o="InHole",G="inHole",F="@,",m="WrongLength",E="src/haz3lcore/dynamics/ErrStatus.re.HoleReason.t",C="notInHole",D=143,w=139,g=848054398,i=-976970511,B="src/haz3lcore/dynamics/ErrStatus.re.t",A="typeInconsistent",z="wrongLength",h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -317334,7 +317334,7 @@ m=k[2];if(m&&!m[2]){/*<>*/var r=m[1],/*<>*/t=/*<>*/d(j[5],k[1]);/*<>*/return[0,t,/*<>*/d(s[5],r)]}}/*<>*/return/*<>*/u(e[4],l,h,a)}if(h===p)return b[2]?/*<>*/c(e[3],l,a):0}else if(g===q)/*<>*/return/*<>*/c(e[6],l,a)}}}/*<>*/return/*<>*/c(e[8],l,a)/*<>*/},function(a){/*<>*/if(!a)/*<>*/return Y;/*<>*/var b=a[2],/*<>*/c=/*<>*/d(j[6],a[1]);/*<>*/return[0,g,[0,X,[0,c,[0,/*<>*/d(s[6],b),0]]]]/*<>*/}],"Haz3lcore__ErrStatus");return/*<>*/}(globalThis)); -//# 6899 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6907 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -317342,7 +317342,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__MetaVarInst");return/*<>*/}(globalThis)); -//# 6908 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 6916 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aq="listLit",$="%S",N="BoolLit",ay="boolLit",ap="ap",M="Var",ao="badConstructor",L="StringLit",ae="@[<2>[",b="<2>",n="@ ",ax="stringLit",G="@])",K="Constructor",W="Cons",S="NonEmptyHole",v=",@ ",aw="intLit",t="@,",av="tuple",ad="@,]@]",V="Ap",F="))",au="var",as="constructor",at="nonEmptyHole",U="InvalidText",an="emptyHole",ac=";@ ",T="EmptyHole",R="BadConstructor",am="wild",J="FloatLit",al="cons",af="src/haz3lcore/dynamics/DHPat.re.t",I="@,))@]",g=139,Q="ListLit",r=-976970511,s=848054398,H="Tuple",P="Wild",ak="floatLit",E="IntLit",ar="invalidText",D=a.jsoo_runtime,C=D.caml_string_compare,aa=D.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):D.caml_call_gen(a,[b])}/*<>*/function @@ -317530,11 +317530,11 @@ f=b[1],/*<>*/g=Z(b[2]),/*<>*/d(x[20],Z,b[1]);/*<>*/return/*<>*/c(x[15],i);case 13:b=b[2];continue}/*<>*/return 0}/*<>*/}D.caml_register_global(188,[0,w,function(a){/*<>*/return/*<>*/i(f[143],bk,w,a)/*<>*/},y,z,A,B,function(a){/*<>*/if(a&&a[2])/*<>*/return[11,a];/*<>*/return/*<>*/c(ab[2],bR)/*<>*/},_,Z],"Haz3lcore__DHPat");return/*<>*/}(globalThis)); -//# 7097 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7105 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id;c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20]],"Haz3lcore__EnvironmentId");return/*<>*/}(globalThis)); -//# 7102 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7110 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function j(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):e.caml_call_gen(a,[b,c])}/*<>*/function @@ -317542,7 +317542,7 @@ k(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] b=e.caml_get_global_data(),d=b.Stdlib__Format,f=b.Sexplib__Std,g=b.Ppx_yojson_conv_lib__Yojson_conv,h=[0,[4,0,0,0,0],"%d"],i=[0,[15,0],"%a"];/*<>*/function c(a){/*<>*/return/*<>*/j(d[139],a,h)/*<>*/}e.caml_register_global(5,[0,c,function(a){/*<>*/return/*<>*/k(d[143],i,c,a)/*<>*/},f[16],f[15],g[45][22],g[45][6]],"Haz3lcore__HoleInstanceId");return/*<>*/}(globalThis)); -//# 7111 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7119 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="invalidOfString",w="negativeExponent",v="indexOutOfBounds",n="NegativeExponent",m="OutOfFuel",l="DivideByZero",u="src/haz3lcore/dynamics/InvalidOperationError.re.t",t="outOfFuel",k="InvalidOfString",s="divideByZero",j=-976970511,g=848054398,i="IndexOutOfBounds",o=a.jsoo_runtime,r=o.caml_string_compare;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):o.caml_call_gen(a,[b,c])}/*<>*/function @@ -317576,7 +317576,7 @@ f=h[2];if(f===l)return e[2]?/*<>*/return Q;case 3:/*<>*/return R;default:/*<>*/return S}/*<>*/}],"Haz3lcore__InvalidOperationError");return/*<>*/}(globalThis)); -//# 7146 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7154 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e=a.jsoo_runtime;/*<>*/function i(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -317584,7 +317584,7 @@ j(a,b,c,d){return(a.l>=0?a.l:a.l=a.length)==3?a(b,c,d):e.caml_call_gen(a,[b,c,d] f=e.caml_get_global_data(),b=f.Haz3lcore__Id,g=[0,[15,0],"%a"],h=f.Stdlib__Format,c=[];function d(a){/*<>*/return i(c[1],a)}e.caml_update_dummy(c,[0,b[9]]);e.caml_register_global(3,[0,d,function(a){/*<>*/return/*<>*/j(h[143],g,d,a)/*<>*/},b[2],b[1],b[4],b[3]],"Haz3lcore__KeywordID");return/*<>*/}(globalThis)); -//# 7155 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7163 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var g=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):g.caml_call_gen(a,[b])}/*<>*/function @@ -317603,7 +317603,7 @@ b=e[1];if(!b)/*<>*/return/*<>*/j=/*<>*/d(f[2],a),/*<>*/g=/*<>*/h(f[15][18],j,i),k=g?g[1]:/*<>*/d(o[2],n);/*<>*/return/*<>*/d(c,k)/*<>*/}]/*<>*/},function(c,b){/*<>*/return[0,function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(c,a);e[1]=[0,f[15][1]];/*<>*/var/*<>*/b=/*<>*/d(c,a),/*<>*/g=[0,b,/*<>*/d(p[4],e[1])];e[1]=0;/*<>*/return m(g)/*<>*/},function(a){/*<>*/if(e[1])/*<>*/return/*<>*/d(b,a);/*<>*/var/*<>*/c=k(a),f=c[1];e[1]=[0,c[2]];/*<>*/ /*<>*/var g=/*<>*/d(b,f);e[1]=0;/*<>*/return g/*<>*/}]/*<>*/}],"Haz3lcore__StructureShareSexp");return/*<>*/}(globalThis)); -//# 7175 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 7183 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var cf="sequence",ae="BoolLit",cK="src/haz3lcore/dynamics/DH.re.if_consistency",b3="boolLit",b4="src/haz3lcore/dynamics/DH.re.DHFilter.t",ay="Prj",cr="rule",ce="binBoolOp",ag="StringLit",cJ="listConcat",l="@ ",aZ="Rule",cI="invalidOperation",b2="case",b1="stringLit",b0="boundVar",cd="typAp",cH="builtinFun",ad="BuiltinFun",aM="InvalidOperation",ah="Constructor",Z="%a",bZ="test",aL="Cons",cG="apBuiltin",cq="fixF",cc="intLit",aC="FreeVar",m="@,",cF="inconsistentBranches",aJ="IfThenElse",aK="FixF",ac="ConsistentCase",bY="tuple",cp="typFun",bX="fun",am="Sequence",S="Filter",ax="Ap",aB="BinFloatOp",cE=963043957,bW="nonEmptyHole",aA="TypFun",cD="constructor",aI="InvalidText",aw="EmptyHole",av="Closure",aX="Residue",aa="FloatLit",al="Fun",co="ifThenElse",bU="@[%s =@ ",cC="failedCast",aH="BinBoolOp",A="@,))@]",n=848054398,af="Tuple",p=-976970511,bg="filter",cA="closure",cB="consistentIf",bf="src/haz3lcore/dynamics/DH.re",au="FailedCast",cn="invalidText",b$="cast",ca="listLit",cb="src/haz3lcore/dynamics/DH.re.ClosureEnvironment.Inner.t",a8="%S",ak="pat",cm="consistentCase",bd="%d",bV="ap",at="BinStringOp",cl=")",bc="@[<2>[",cz="binStringOp",b="<2>",cj="freeVar",ck="src/haz3lcore/dynamics/DH.re.DHExp.case",cy="(Some ",b_="binIntOp",ar="BinIntOp",as="ApBuiltin",ci=" =",U="@])",cx="prj",aG="InconsistentBranches",b9="let",aq="Cast",ab="BoundVar",aF="NonEmptyHole",aY="ConsistentIf",o=",@ ",aV="Case",ap="ListConcat",aE="Test",be="@,]@]",cw="src/haz3lcore/dynamics/DH.re.Filter.t",b8="src/haz3lcore/dynamics/DH.re.DHExp.t",B="))",az="act",bu="",ch="inconsistentIf",b7="emptyHole",ao="Let",a9=";@ ",cv="None",cu="@]",b6="binFloatOp",cg="cons",ct="src/haz3lcore/dynamics/DH.re.DHExp.rule",an="TypAp",Y=143,g=139,aD="ListLit",$="IntLit",b5="residue",aW="InconsistentIf",cs="floatLit",X=a.jsoo_runtime,I=X.caml_equal,M=X.caml_string_compare,R=X.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):X.caml_call_gen(a,[b])}/*<>*/function @@ -318526,15 +318526,15 @@ c=g===b[1]?1:0,h=b[2],i=c?/*<>*/I(f,h):c;/* bS=[];function bT(c,b){/*<>*/ /*<>*/e(f[g],c,it);/*<>*/ /*<>*/h(J[26],function(a,b){/*<>*/if(a)/*<>*/ /*<>*/e(f[g],c,iu);/*<>*/ /*<>*/d(d(bS[1],c),b);/*<>*/return 1/*<>*/},0,b);/*<>*/return/*<>*/e(f[g],c,iv)/*<>*/}R(bS,[0,N[1]]);h(_[2],ix,bx,[0,bT,function(a){/*<>*/return/*<>*/h(f[Y],iw,bT,a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[40],N[3],a)/*<>*/},function(a){/*<>*/return/*<>*/e(z[39],N[4],a)/*<>*/},function(a){/*<>*/return e(y[45][30],N[5],a)},function(a){/*<>*/return e(y[45][14],N[6],a)},function(a,b){/*<>*/return[0,a,b]/*<>*/}]);X.caml_register_global(634,[0,bh,function(a){/*<>*/return/*<>*/h(f[Y],cN,bh,a)/*<>*/},bF,bv,bH,bw,P,H,ai,N,V,bx],"Haz3lcore__DH");return/*<>*/}(globalThis)); -//# 8099 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8107 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[7];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26]],"Haz3lcore__DHExp");return/*<>*/}(globalThis)); -//# 8104 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8112 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[8];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__Environment");return/*<>*/}(globalThis)); -//# 8109 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8117 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ae="invalidBoxedBoolLit",ad="invalidBuiltin",P="%S",al="invalidBoxedFloatLit",ak="freeInvalidVar",Q="src/haz3lcore/dynamics/EvaluatorError.re.t",aj="invalidBoxedTuple",D="InvalidBoxedFun",e="<2>",o="@ ",H="CastBVHoleGround",ac="stepDoesNotMatch",C="InvalidBoxedStringLit",G="InvalidBoxedBoolLit",q="@])",ai="invalidBoxedListLit",I="BadPatternMatch",ah="invalidBoxedTypFun",N="@,",F="InvalidBoxedListLit",L="OutOfFuel",aa="invalidProjection",ab="badPatternMatch",B="InvalidBoxedTuple",E="InvalidBoxedIntLit",_="outOfFuel",$="badBuiltinAp",A="InvalidProjection",ag="invalidBoxedStringLit",z="FreeInvalidVar",K="BadBuiltinAp",Z="invalidBoxedIntLit",y="InvalidBuiltin",af="invalidBoxedFun",Y="castBVHoleGround",g=139,m=-976970511,n=848054398,w="InvalidBoxedFloatLit",x="InvalidBoxedTypFun",J="StepDoesNotMatch",u=a.jsoo_runtime,v=u.caml_string_compare;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):u.caml_call_gen(a,[b])}/*<>*/function @@ -318649,7 +318649,7 @@ a==="number")switch(a){case 11:/*<>*/var e=a[2],/*<>*/f=/*<>*/c(s[45][3],a[1]);/*<>*/return[0,n,[0,bj,[0,f,[0,d(s[45][14],b[13],e),0]]]];default:/*<>*/return[0,n,[0,bk,[0,/*<>*/c(s[45][6],a[1]),0]]]}/*<>*/},[248,bl,u.caml_fresh_oo_id(0)]],"Haz3lcore__EvaluatorError");return/*<>*/}(globalThis)); -//# 8230 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8238 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="<2>",ag="int_of_string",M="@ ",J="Const",$="string_sub",L="%a",I=",@ ",af="mod",B="@,",K="Fn",_="))",ae="",ad="$Meta",Z="bool_of_string",H=143,ac="@,))@]",s=139,Y="float_of_string",ab="fn",aa="const",j=a.jsoo_runtime,X=j.caml_maybe_attach_backtrace,G=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -318736,11 +318736,11 @@ b=a[2],c=a[1];return 0===b[0]?[0,[0,c,z[16],b[1]]]:[0,[0,c,z[16],[3,b[1],b[2]]]] b=a[2],c=a[1];return 0===b[0]?0:[0,[0,c,b[3]]]/*<>*/},y[2]);j.caml_register_global(90,[0,C,function(a){/*<>*/return/*<>*/r(i[H],ap,C,a)/*<>*/},N,O,P,function(a){/*<>*/return/*<>*/r(i[H],as,P,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],N,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],O,a)/*<>*/},R,function(a){/*<>*/return/*<>*/r(i[H],au,R,a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[3],v[48],a)/*<>*/},function(a){/*<>*/return/*<>*/f(l[4],function(a){/*<>*/return d(v[24],function(a){/*<>*/return 0})},a)/*<>*/},m,c,y,d_,d$,/*<>*/r(u[26],function(a,b){/*<>*/var d=b[2],c=b[1];return 0===d[0]?/*<>*/f(F[10],a,[0,c,d[2]]):/*<>*/f(F[10],a,[0,c,[16,c]])/*<>*/},F[7],y[2])],"Haz3lcore__Builtins");return/*<>*/}(globalThis)); -//# 8318 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8326 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[9];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30]],"Haz3lcore__ClosureEnvironment");return/*<>*/}(globalThis)); -//# 8323 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 8331 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a6="sequence2",a7="consistentCaseRule",a5="let1",ae="Prj",an="BinFloatOp1",aY="mark",al="Ap1",am="Let1",m="@ ",be="let2",bu="invalidOperation",bv="ap2",bL="case",V="IfThenElse3",bd="binIntOp1",bK="boundVar",a4="typAp",bc="ifThenElse2",bO="src/haz3lcore/dynamics/EvalCtx.re.cls",av="InvalidOperation",bt="%a",aX="test",aJ="FailedCastCast",bs="apBuiltin",U="BinStringOp1",bb="fixF",ad="BinStringOp2",p="@,",br="inconsistentBranches",au="FixF",M="ConsistentCase",aV="tuple",aW="sequence1",aU="fun",T="Filter",ac="Ap2",ab="Cons1",bp="ifThenElse3",bq="binFloatOp2",aT="nonEmptyHole",bo="binStringOp2",S="IfThenElse1",at="Let2",aa="Closure",bn="(@[",R="Fun",a3="binBoolOp1",ak="ListConcat2",bm="failedCast",Q="ListConcat1",C="@,))@]",bP="failedCastCast",bl="listConcat2",as="IfThenElse2",n=-976970511,l=848054398,N="Tuple",bk="filter",bj="closure",$="FailedCast",bN="src/haz3lcore/dynamics/EvalCtx.re.case",a1="listLit",a2="cast",ba="consistentCase",aE="%d",P="BinIntOp1",a$="binIntOp2",az="@[<2>[",aj="BinBoolOp1",j="<2>",aS="cons1",bJ="src/haz3lcore/dynamics/EvalCtx.re.t",L="InconsistentBranchesRule",_="ApBuiltin",ar="BinIntOp2",ay="@])",bi="prj",aK="FilterPattern",aq="InconsistentBranches",aI="BoundVar",Z="Cast",ap="NonEmptyHole",q=",@ ",aH="Case",bh="listConcat1",ao="Test",Y="BinFloatOp2",aA="@,]@]",a_="binBoolOp2",a0="ap1",ai="BinBoolOp2",X="Mark",a9="binFloatOp1",ah="Sequence1",bg="ifThenElse1",D="))",bf="",bM="filterPattern",aB=";@ ",a8="binStringOp1",ag="Sequence2",aZ="cons2",W="TypAp",aR=143,K="ConsistentCaseRule",g=139,O="ListLit",aQ="inconsistentBranchesRule",af="Cons2",aC=a.jsoo_runtime,iF=aC.caml_maybe_attach_backtrace,r=aC.caml_string_compare,aD=aC.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):aC.caml_call_gen(a,[b])}/*<>*/function @@ -319756,7 +319756,7 @@ e!=="number"&&0===e[0]){e=e[2];continue}if(typeof b==="number"&&32===b)/*<>*/return[0,e];if(typeof e==="number")/*<>*/return 0;if(32===e[0]){e=e[1];continue}}/*<>*/return 0}/*<>*/}],"Haz3lcore__EvalCtx");return/*<>*/}(globalThis)); -//# 9340 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9348 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="called matches_cast_Cons with non-list pattern",d="src/haz3lcore/dynamics/PatternMatch.re",j=a.jsoo_runtime,U=j.caml_maybe_attach_backtrace,r=j.caml_trampoline,T=j.caml_trampoline_return;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -320126,7 +320126,7 @@ w!=="number")switch(w[0]){case 4:case 32:/*<>*/return 1;default:/*<>*/return 0}/*<>*/}j.caml_register_global(19,[0,e],"Haz3lcore__PatternMatch");return/*<>*/}(globalThis)); -//# 9711 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9719 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var e="Pass",t="pass",s="src/haz3lcore/dynamics/TestStatus.re.t",d="Indet",b="Fail",r="fail",q="indet",n=-976970511,j=848054398,m=a.jsoo_runtime;/*<>*/function c(a,b,c){return(a.l>=0?a.l:a.l=a.length)==2?a(b,c):m.caml_call_gen(a,[b,c])}/*<>*/function @@ -320155,7 +320155,7 @@ k=h[2];if(k===b)return f[2]?/*<>*/c(i[ 0:/*<>*/return E;case 1:/*<>*/return F;default:/*<>*/return G}/*<>*/},p,/*<>*/c(H[26],p,0)],"Haz3lcore__TestStatus");return/*<>*/}(globalThis)); -//# 9741 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9749 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var W="@[<2>[",p="<2>",q="@ ",U="src/haz3lcore/dynamics/TestMap.re.instance_report",V="@])",z="%a",T=",@ ",S="@,",R="@,]@]",P="src/haz3lcore/dynamics/TestMap.re.report",Q="",O=";@ ",N="(@[",y=143,o=848054398,f=139,j=a.jsoo_runtime,x=j.caml_update_dummy;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function @@ -320202,7 +320202,7 @@ d=/*<>*/c(M,a,b);return d?t(d[1]):2/*<>*/f=/*<>*/c(g[50],d,b);if(!f)/*<>*/return/*<>*/c(w[37],b,[0,[0,d,[0,e,0]],0]);/*<>*/var/*<>*/h=[0,[0,d,/*<>*/c(w[37],f[1],[0,e,0])],0],/*<>*/i=/*<>*/c(g[55],d,b);/*<>*/return/*<>*/c(w[37],i,h)/*<>*/},g[1],function(e,b){/*<>*/ /*<>*/var a=/*<>*/c(g[44],function(a){/*<>*/return e===t(a[2])?1:0/*<>*/},b);/*<>*/return/*<>*/d(g[1],a)/*<>*/}],"Haz3lcore__TestMap");return/*<>*/}(globalThis)); -//# 9789 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 9797 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aM="fixUnwrap",a1="sequence",a2="completeFilter",Q="FunClosure",a0="binBoolOp",aZ="listConcat",P="@ ",ai="NotGroundOrHole",aL="completeClosure",aK="builtinWrap",$="FixClosure",aY="caseNext",aJ="letBind",aX="ground",aI="notGroundOrHole",_="Skip",z="BuiltinAp",Z="UpdateTest",aH="listCons",N="ListCons",O="Sequence",M="VarLookup",y="BinFloatOp",aG="updateTest",L="CastTypAp",aF="castAp",aE="castTypAp",K="TypFunAp",D="BinBoolOp",aD="invalidStep",aW="builtinAp",k=-976970511,l=848054398,Y="CompleteFilter",ak="Ground",aV="hole",aU="cast",aT="varLookup",J="CaseNext",aS="src/haz3lcore/dynamics/Transition.re.step_kind",aC="skip",C="BinStringOp",aR="binStringOp",r="<2>",aB="conditional",aA="fixClosure",I="FunAp",aQ="binIntOp",B="BinIntOp",H="@])",az="typFunAp",X="CompleteClosure",W="Cast",V="ListConcat",ay="funClosure",aP="caseApply",U="CaseApply",ax=">",S="BuiltinWrap",T="InvalidStep",R="LetBind",aw="projection",F="Projection",G="FixUnwrap",aO="binFloatOp",aj="Hole",av="funAp",A="Conditional",q=139,E="CastAp",aN="@<",s=a.jsoo_runtime,p=s.caml_maybe_attach_backtrace,n=s.caml_string_compare;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -320553,7 +320553,7 @@ b==="number")switch(b){case 18:case 19:/*<>*/return 1}/*<>*/return 0/*<>*/}],"Haz3lcore__Transition");return/*<>*/}(globalThis)); -//# 10141 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10149 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,G=f.caml_maybe_attach_backtrace;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -320602,7 +320602,7 @@ h=/*<>*/g(B[16],b,f);e=/*<>*/g(n[28],C,c);/*<>*/ /*<>*/d(n[46],b);/*<>*/throw/*<>*/G([0,D[7],[0,c]],1)/*<>*/}),h)}/*<>*/}var F=0;f.caml_register_global(16,[0,c,i,function(a,b){/*<>*/return l(A,a,b)},function(a,b){/*<>*/return m(F,a,b)}],"Haz3lcore__ValueChecker");return/*<>*/}(globalThis)); -//# 10557 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10565 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="passing",A="total",l=" ",F="%d",V=" are ",w="test_map",Q="@[<2>[",B="<2>",d="@ ",v=" =",U="src/haz3lcore/dynamics/TestResults.re.t",u="unfinished",P="%d are %s ",T="@,",G="and ",O="@,]@]",z="statuses",S="one is ",t="",R=963043957,o=";@ ",s="@]",L="All ",y="@[%s =@ ",x="descriptions",f=139,K="One ",q="failing",r=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):r.caml_call_gen(a,[b])}/*<>*/function @@ -320635,7 +320635,7 @@ I=/*<>*/c(b[2],t);/*<>*/return[0,R,[0,[0,ba,c(n[19],j)],q]]/*<>*/},function(a,b){/*<>*/var d=a?a[1]:0,/*<>*/e=/*<>*/i(n[25],2,b),/*<>*/f=/*<>*/i(n[25],1,b),/*<>*/g=/*<>*/i(n[25],0,b),/*<>*/h=/*<>*/c(n[24],b);/*<>*/return[0,b,/*<>*/c(/*<>*/c(I[20],function(a){/*<>*/return c(n[7],a[2])/*<>*/}),b),d,h,g,f,e]/*<>*/},N,function(a){/*<>*/return N(a[4],a[6],a[7],bL,bK,bJ,bI,bH)/*<>*/}],"Haz3lcore__TestResults");return/*<>*/}(globalThis)); -//# 10619 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10627 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320706,7 +320706,7 @@ t(i,h,c){/*<>*/var/*<>*/k=10===c[0]?/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},c),b):c,/*<>*/l=[0,j,d(i,h,k)];/*<>*/return/*<>*/f(g[10],b,l)/*<>*/},g[7]),b);/*<>*/return/*<>*/f(k[7],a,j)/*<>*/}function u(f,b,c){/*<>*/return/*<>*/e(/*<>*/e(n[11][9],function(a){/*<>*/return d(f,b,a)}),c)/*<>*/}h.caml_register_global(6,[0,d,function(a,b){/*<>*/return/*<>*/e(/*<>*/f(g[19],function(a,b){/*<>*/return d(a[2],a[1],b)/*<>*/},b),a)/*<>*/}],"Haz3lcore__Substitution");return/*<>*/}(globalThis)); -//# 10691 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10699 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var r="@ ",s="<2>",d="step",q=963043957,j=139,p="src/haz3lcore/dynamics/EvaluatorStats.re.t",h=a.jsoo_runtime;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320725,7 +320725,7 @@ o=/*<>*/c(b[2],h);/*<>*/c(b[2],e);if(j)/*<>*/return[0,j[1]];/*<>*/ /*<>*/var p=[0,[0,0===/*<>*/c(b[2],e)?1:0,E],0];/*<>*/return/*<>*/i(l[13],k,a,p)}/*<>*/return/*<>*/g(l[14],k,a)/*<>*/},function(a){/*<>*/return[0,q,[0,[0,F,c(m[45][6],a[1])],0]]/*<>*/},G,function(a){/*<>*/return[0,a[1]+1|0]/*<>*/},function(a){/*<>*/return a[1]/*<>*/},function(a){/*<>*/return[0,a]/*<>*/}],"Haz3lcore__EvaluatorStats");return/*<>*/}(globalThis)); -//# 10711 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10719 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="@ ",y="<2>",k="tests",x=" =",j="stats",v=963043957,w="",u="@]",s="@[%s =@ ",t="src/haz3lcore/dynamics/EvaluatorState.re.t",i=139,h=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -320749,15 +320749,15 @@ b=a[2];/*<>*/return[0,/*<>*/return[0,/*<>*/d(c[10],a),e]/*<>*/},function(a,b,c){/*<>*/var e=a[2],/*<>*/g=/*<>*/d(/*<>*/d(f[23],[0,b,c]),e);/*<>*/return[0,a[1],g]/*<>*/},function(a){/*<>*/return a[2]/*<>*/},function(a,b){/*<>*/return[0,b[1],a]/*<>*/}],"Haz3lcore__EvaluatorState");return/*<>*/}(globalThis)); -//# 10736 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10744 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[10];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]],"Haz3lcore__Filter");return/*<>*/}(globalThis)); -//# 10741 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10749 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__DH[12];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7]],"Haz3lcore__FilterEnvironment");return/*<>*/}(globalThis)); -//# 10746 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 10754 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var a$="$e",d="__mutual__",a_="$v",f=a.jsoo_runtime,b=f.caml_equal,M=f.caml_maybe_attach_backtrace,g=f.caml_trampoline,v=f.caml_trampoline_return,N=f.caml_wrap_exception;/*<>*/function j(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -321004,7 +321004,7 @@ p(a,b,c){/*<>*/return w(a,b,a,c[1 g=d,f=e;/*<>*/for(;;){if(!g)/*<>*/return[0,c,f];/*<>*/var i=g[2],/*<>*/h=p(a,b,g[1]);if(h)/*<>*/return[0,h[1],f];g=i;f=f+1|0}/*<>*/}(a,b,c,d,0);/*<>*/return[0,e[1],f-e[2]|0]/*<>*/}],"Haz3lcore__FilterMatcher");return/*<>*/}(globalThis)); -//# 10994 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11002 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var K="<2>",i="@ ",al=125,o="knd",p="d_loc",C="d",u=" =",ao="%a",ak="{ ",t="",B="env",aj="src/haz3lcore/dynamics/EvaluatorStep.re.EvalObj.t",L=963043957,A=";@ ",an="@[<2>{ ",s="@]",am="@ }@]",v="@[%s =@ ",ai=143,z="state",d=139,m="ctx",ah="src/haz3lcore/dynamics/EvaluatorStep.re.step",y=a.jsoo_runtime,af=y.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):y.caml_call_gen(a,[b])}/*<>*/function @@ -321270,7 +321270,7 @@ d=ae(h,a);if(!d)/*<>*/return 0;/ b=d[1][2],/*<>*/e=/*<>*/f(ac,i,b[1],b[2]);if(!e)/*<>*/return 0;/*<>*/ /*<>*/var g=n(b[3],e[1]);/*<>*/return[0,g,c(g)]/*<>*/}/*<>*/return c(b)/*<>*/}],"Haz3lcore__EvaluatorStep");return/*<>*/}(globalThis)); -//# 11261 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 11269 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var aD="src/haz3lcore/dynamics/Stepper.re.persistent",ax="stepPending",L="StepTimeout",aw="stepTimeout",ac="@[<2>[",n="<2>",e="@ ",av=125,D=" =",au="src/haz3lcore/dynamics/Stepper.re.t",ad="%a",at="{ ",T=",@ ",G="@,",q="elab",ab="@,]@]",J="StepperOK",m="current",C="next",ar="))",as="list manipulation",z="",U=963043957,o="previous",y=";@ ",aC="@[<2>{ ",B="@]",aB="@ }@]",F="@[%s =@ ",aa=143,aA="@,))@]",d=139,O=-976970511,E=848054398,az="src/haz3lcore/dynamics/Stepper.re.current",ay="stepperOK",K="StepPending",t=a.jsoo_runtime,cE=t.caml_maybe_attach_backtrace,$=t.caml_update_dummy;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):t.caml_call_gen(a,[b])}/*<>*/function @@ -321518,7 +321518,7 @@ d=a[2];if(typeof b!=="number"&&0!==b[0]){if(b[3])/*<>*/return[0,c,d,[1,b[1],b[2],0]];break a}}/*<>*/return[0,c,a[2],a[3]]/*<>*/},function(a,b){/*<>*/var c=b[3],d=b[2],e=b[1],/*<>*/f=ak([0,e,d,c,0]);/*<>*/return[0,e,d,c,/*<>*/h(p[18],a,f)]/*<>*/}],"Haz3lcore__Stepper");return/*<>*/}(globalThis)); -//# 12677 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12685 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var y="@ ",r="<2>",x="src/haz3lcore/dynamics/EvaluatorResult.re.t",w="@])",v="boxedValue",h="Indet",g="BoxedValue",u="indet",o=848054398,p=139,q=-976970511,k=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):k.caml_call_gen(a,[b])}/*<>*/function @@ -321549,7 +321549,7 @@ f=b[1],d=g;break a}}else{var h=a[1];if(0!==b[0]){var f=b[1],d=h;break a}}/*<>*/return 0}/*<>*/return/*<>*/c(e[24],d,f)/*<>*/}],"Haz3lcore__EvaluatorResult");return/*<>*/}(globalThis)); -//# 12709 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 12717 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var x="EvaulatorError",aj="off",w="Off",an="resultPending",ag="resultOk",ah="unknownException",v="result",j="<2>",ai="src/haz3lcore/prog/ProgramResult.re.inner",o="@ ",af=" =",G="@])",P="%a",am="evaulatorError",u="ResultOk",ae="resultFail",z="ResultFail",B="ResultPending",ac="",ad="src/haz3lcore/prog/ProgramResult.re.error",al=963043957,ab="src/haz3lcore/prog/ProgramResult.re.t",C="Timeout",aa="@]",$="timeout",y="UnknownException",ak="@[%s =@ ",O=143,t="state",h=139,l=-976970511,m=848054398,s=a.jsoo_runtime,N=s.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):s.caml_call_gen(a,[b])}/*<>*/function @@ -321633,11 +321633,11 @@ a==="number")/*<>*/return a7;switch(a[ 0:/*<>*/return[0,m,[0,a8,[0,/*<>*/c(F[13],a[1]),0]]];case 1:/*<>*/return[0,m,[0,a9,[0,T(a[1]),0]]];default:/*<>*/return[0,m,[0,a_,[0,Z(a[1]),0]]]}/*<>*/},function(a){/*<>*/return c(A[7],a[1])/*<>*/},function(a){/*<>*/return a[2]/*<>*/}],"Haz3lcore__ProgramResult");return/*<>*/}(globalThis)); -//# 13110 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13118 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var c=a.jsoo_runtime,b=c.caml_get_global_data().Haz3lcore__Id[15];c.caml_register_global(1,[0,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10],b[11],b[12],b[13],b[14],b[15],b[16],b[17],b[18],b[19],b[20],b[21],b[22],b[23],b[24],b[25],b[26],b[27],b[28],b[29],b[30],b[31],b[32],b[33],b[34],b[35],b[36],b[37],b[38],b[39],b[40],b[41],b[42],b[43],b[44],b[45],b[46],b[47],b[48]],"Haz3lcore__MetaVarMap");return/*<>*/}(globalThis)); -//# 13115 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13123 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var p="expressionHole",o="patternHole",i="ExpressionHole",j="PatternHole",e=a.jsoo_runtime;/*<>*/function g(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):e.caml_call_gen(a,[b])}/*<>*/function @@ -321656,7 +321656,7 @@ e=d[2];if(e&&!e[2]){/*<>*/var f=e[1],h=d[1],/*<>*/i=k(b[1]),/*<>*/j=/*<>*/g(m[13],h);/*<>*/return[0,i,j,/*<>*/g(n[1],f)]}}}}/*<>*/return/*<>*/t(c[2],s,3,a)/*<>*/},a)/*<>*/},function(a){/*<>*/return/*<>*/b(h[44],function(a){var b=a[3],c=a[2],d=l(a[1]),e=g(m[11],c);return[1,[0,d,[0,e,[0,g(n[2],b),0]]]]},a)/*<>*/},h[1]],"Haz3lcore__Delta");return/*<>*/}(globalThis)); -//# 13135 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13143 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var B="+",t="DoesNotElaborate",A="elaborates",r="Elaborates",x="doesNotElaborate",ad=194,u="_",h=a.jsoo_runtime;/*<>*/function e(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):h.caml_call_gen(a,[b])}/*<>*/function @@ -321907,7 +321907,7 @@ b=a[3],c=a[2],/*<>*/d=/*<>*/return 0;/*<>*/var e=c[1],/*<>*/d=v(a,b),f=d?d[1]:O;/*<>*/return[0,e,f,q[5]]/*<>*/}],"Haz3lcore__Elaborator");return/*<>*/}(globalThis)); -//# 13387 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13395 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var o="Unexpected Uneval",f=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -321952,7 +321952,7 @@ e=[0,c[1]];break;case e=[1,c[1]];break;default:var e=[1,c[1]]}/*<>*/return[0,f[1],e]/*<>*/},b,[0,m[2]]],"Haz3lcore__Evaluator");return/*<>*/}(globalThis)); -//# 13433 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13441 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var f=a.jsoo_runtime,w=f.caml_wrap_exception;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):f.caml_call_gen(a,[b])}/*<>*/function @@ -321967,7 +321967,7 @@ e=/*<>*/h(t[1],l,c)}catch(e){var f=w(e);if(f[1]===i[7]){/*<>*/var j=f[2],/*<>*/m=/*<>*/d(i[2],j),/*<>*/n=/*<>*/h(g[28],r,m);/*<>*/ /*<>*/d(g[46],n);/*<>*/return[2,[0,j]]}/*<>*/var/*<>*/o=/*<>*/d(k[1],f),/*<>*/p=/*<>*/h(g[28],s,o);/*<>*/ /*<>*/d(g[46],p);/*<>*/return[2,[1,/*<>*/d(k[1],f)]]}/*<>*/return[1,[0,e[2],e[1]]]/*<>*/}],"Haz3lcore__Interface");return/*<>*/}(globalThis)); -//# 13449 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13457 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var ab="src/haz3lcore/prog/ModelResult.re.t",t="<2>",r="@ ",N=" =",aa="src/haz3lcore/prog/ModelResult.re.eval_result",M="@])",$="noElab",P="%a",Y="src/haz3lcore/prog/ModelResult.re.persistent",x="elab",E="stepper",m="Evaluation",B="NoElab",L="",_=963043957,k="Stepper",w="previous",X=";@ ",o="evaluation",K="@]",O="@[%s =@ ",Z="(@[<2>Stepper@ ",J=143,i=139,p=848054398,q=-976970511,v=a.jsoo_runtime,I=v.caml_update_dummy;/*<>*/function c(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):v.caml_call_gen(a,[b])}/*<>*/function @@ -322054,7 +322054,7 @@ i=e[2];if(i===m)return b[2]?/*<>*/d(g[3] j=b[2];if(j&&!j[2])/*<>*/return[0,/*<>*/c(f[31],j[1])];/*<>*/return/*<>*/h(g[4],A,i,a)}}else if(p===n)/*<>*/return/*<>*/d(g[6],A,a)}}}/*<>*/return/*<>*/d(g[8],A,a)/*<>*/},function(a){/*<>*/return a?[0,p,[0,a2,[0,/*<>*/c(f[32],a[1]),0]]]:a3/*<>*/},function(a){/*<>*/if(typeof a!=="number"&&1===a[0])/*<>*/return[0,/*<>*/c(f[35],a[1])];/*<>*/return 0/*<>*/},function(a,b){/*<>*/return b?[1,/*<>*/d(f[36],a,b[1])]:0/*<>*/}],"Haz3lcore__ModelResult");return/*<>*/}(globalThis)); -//# 13537 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" +//# 13545 "../haz3lcore/.haz3lcore.objs/jsoo/default/haz3lcore.cma.js" (function(a){"use strict";var A="%a",z=143,j=a.jsoo_runtime;/*<>*/function d(a,b){return(a.l>=0?a.l:a.l=a.length)==1?a(b):j.caml_call_gen(a,[b])}/*<>*/function